summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/CMakeLists.txt33
-rw-r--r--app/COPYING96
-rw-r--r--app/bin/CMakeLists.txt631
-rw-r--r--app/bin/acclkeys.h4
-rw-r--r--app/bin/appdefaults.c349
-rw-r--r--app/bin/archive.c477
-rw-r--r--app/bin/archive.h6
-rw-r--r--app/bin/bdf2xtp.c620
-rw-r--r--app/bin/bitmaps/16pix/bridge.pngbin209 -> 0 bytes
-rw-r--r--app/bin/bitmaps/CMakeLists.txt100
-rw-r--r--app/bin/bitmaps/Info.xpm116
-rw-r--r--app/bin/bitmaps/SVG/NotUsed/ease-broad.svg66
-rw-r--r--app/bin/bitmaps/SVG/NotUsed/ease-cornu.svg61
-rw-r--r--app/bin/bitmaps/SVG/NotUsed/ease-gt-broad.svg69
-rw-r--r--app/bin/bitmaps/SVG/NotUsed/ease-gt-sharp.svg66
-rw-r--r--app/bin/bitmaps/SVG/NotUsed/ease-lt-broad.svg67
-rw-r--r--app/bin/bitmaps/SVG/NotUsed/ease-lt-sharp.svg66
-rw-r--r--app/bin/bitmaps/SVG/NotUsed/ease-none.svg66
-rw-r--r--app/bin/bitmaps/SVG/NotUsed/ease-normal.svg66
-rw-r--r--app/bin/bitmaps/SVG/NotUsed/ease-sharp.svg66
-rw-r--r--app/bin/bitmaps/background.xpm157
-rw-r--r--app/bin/bitmaps/benchwork.xpm112
-rw-r--r--app/bin/bitmaps/bezier-line.xpm98
-rw-r--r--app/bin/bitmaps/bezier-track.xpm130
-rw-r--r--app/bin/bitmaps/block.xpm138
-rw-r--r--app/bin/bitmaps/bottom.xpm101
-rw-r--r--app/bin/bitmaps/box.xpm93
-rw-r--r--app/bin/bitmaps/bridge.xpm105
-rw-r--r--app/bin/bitmaps/building.xpm125
-rw-r--r--app/bin/bitmaps/car-inventory.xpm103
-rw-r--r--app/bin/bitmaps/change-grid.xpm118
-rw-r--r--app/bin/bitmaps/circle-center.xpm114
-rw-r--r--app/bin/bitmaps/circle-filled-center.xpm145
-rw-r--r--app/bin/bitmaps/circle-filled-tangent.xpm148
-rw-r--r--app/bin/bitmaps/circle-line-center.xpm93
-rw-r--r--app/bin/bitmaps/circle-line-tangent.xpm93
-rw-r--r--app/bin/bitmaps/circle-line.xpm95
-rw-r--r--app/bin/bitmaps/circle-tangent.xpm110
-rw-r--r--app/bin/bitmaps/circle.xpm115
-rw-r--r--app/bin/bitmaps/connect.xpm116
-rw-r--r--app/bin/bitmaps/control.xpm129
-rw-r--r--app/bin/bitmaps/convert-from.xpm99
-rw-r--r--app/bin/bitmaps/convert-to.xpm99
-rw-r--r--app/bin/bitmaps/copy.xpm95
-rw-r--r--app/bin/bitmaps/cornu.xpm117
-rw-r--r--app/bin/bitmaps/curved-chord.xpm109
-rw-r--r--app/bin/bitmaps/curved-end.xpm107
-rw-r--r--app/bin/bitmaps/curved-line-chord.xpm92
-rw-r--r--app/bin/bitmaps/curved-line-end.xpm94
-rw-r--r--app/bin/bitmaps/curved-line-middle.xpm95
-rw-r--r--app/bin/bitmaps/curved-line-tangent.xpm98
-rw-r--r--app/bin/bitmaps/curved-middle.xpm108
-rw-r--r--app/bin/bitmaps/curved-tangent.xpm116
-rw-r--r--app/bin/bitmaps/cut.xpm92
-rw-r--r--app/bin/bitmaps/delete.xpm114
-rw-r--r--app/bin/bitmaps/describe.xpm111
-rw-r--r--app/bin/bitmaps/description.xpm101
-rw-r--r--app/bin/bitmaps/dimension.xpm94
-rw-r--r--app/bin/bitmaps/doc-export-bmap.xpm162
-rw-r--r--app/bin/bitmaps/doc-export-dxf.xpm100
-rw-r--r--app/bin/bitmaps/doc-export-svg.xpm114
-rw-r--r--app/bin/bitmaps/doc-export-xtc.xpm108
-rw-r--r--app/bin/bitmaps/doc-export.xpm119
-rw-r--r--app/bin/bitmaps/doc-import-xtc.xpm123
-rw-r--r--app/bin/bitmaps/doc-import.xpm123
-rw-r--r--app/bin/bitmaps/doc-new.xpm127
-rw-r--r--app/bin/bitmaps/doc-open.xpm136
-rw-r--r--app/bin/bitmaps/doc-print.xpm108
-rw-r--r--app/bin/bitmaps/doc-revert.xpm134
-rw-r--r--app/bin/bitmaps/doc-save-as.xpm135
-rw-r--r--app/bin/bitmaps/doc-save.xpm116
-rw-r--r--app/bin/bitmaps/doc-setup.xpm110
-rw-r--r--app/bin/bitmaps/down.xpm89
-rw-r--r--app/bin/bitmaps/ease-broad.xpm89
-rw-r--r--app/bin/bitmaps/ease-cornu.xpm96
-rw-r--r--app/bin/bitmaps/ease-gt-broad.xpm89
-rw-r--r--app/bin/bitmaps/ease-gt-sharp.xpm89
-rw-r--r--app/bin/bitmaps/ease-lt-broad.xpm89
-rw-r--r--app/bin/bitmaps/ease-lt-sharp.xpm89
-rw-r--r--app/bin/bitmaps/ease-none.xpm89
-rw-r--r--app/bin/bitmaps/ease-normal.xpm89
-rw-r--r--app/bin/bitmaps/ease-sharp.xpm89
-rw-r--r--app/bin/bitmaps/elevation.xpm117
-rw-r--r--app/bin/bitmaps/exit.xpm94
-rw-r--r--app/bin/bitmaps/extend.xpm143
-rw-r--r--app/bin/bitmaps/filled-box.xpm120
-rw-r--r--app/bin/bitmaps/filled-polygon.xpm121
-rw-r--r--app/bin/bitmaps/go.xpm135
-rw-r--r--app/bin/bitmaps/helix.xpm95
-rw-r--r--app/bin/bitmaps/join-line.xpm99
-rw-r--r--app/bin/bitmaps/join.xpm117
-rw-r--r--app/bin/bitmaps/l1.xbm78
-rw-r--r--app/bin/bitmaps/l10.xbm78
-rw-r--r--app/bin/bitmaps/l11.xbm78
-rw-r--r--app/bin/bitmaps/l12.xbm78
-rw-r--r--app/bin/bitmaps/l13.xbm78
-rw-r--r--app/bin/bitmaps/l14.xbm78
-rw-r--r--app/bin/bitmaps/l15.xbm78
-rw-r--r--app/bin/bitmaps/l16.xbm78
-rw-r--r--app/bin/bitmaps/l17.xbm78
-rw-r--r--app/bin/bitmaps/l18.xbm78
-rw-r--r--app/bin/bitmaps/l19.xbm78
-rw-r--r--app/bin/bitmaps/l2.xbm78
-rw-r--r--app/bin/bitmaps/l20.xbm78
-rw-r--r--app/bin/bitmaps/l21.xbm78
-rw-r--r--app/bin/bitmaps/l22.xbm78
-rw-r--r--app/bin/bitmaps/l23.xbm78
-rw-r--r--app/bin/bitmaps/l24.xbm78
-rw-r--r--app/bin/bitmaps/l25.xbm78
-rw-r--r--app/bin/bitmaps/l26.xbm78
-rw-r--r--app/bin/bitmaps/l27.xbm78
-rw-r--r--app/bin/bitmaps/l28.xbm78
-rw-r--r--app/bin/bitmaps/l29.xbm78
-rw-r--r--app/bin/bitmaps/l3.xbm78
-rw-r--r--app/bin/bitmaps/l30.xbm78
-rw-r--r--app/bin/bitmaps/l31.xbm78
-rw-r--r--app/bin/bitmaps/l32.xbm78
-rw-r--r--app/bin/bitmaps/l33.xbm78
-rw-r--r--app/bin/bitmaps/l34.xbm78
-rw-r--r--app/bin/bitmaps/l35.xbm78
-rw-r--r--app/bin/bitmaps/l36.xbm78
-rw-r--r--app/bin/bitmaps/l37.xbm78
-rw-r--r--app/bin/bitmaps/l38.xbm78
-rw-r--r--app/bin/bitmaps/l39.xbm78
-rw-r--r--app/bin/bitmaps/l4.xbm78
-rw-r--r--app/bin/bitmaps/l40.xbm78
-rw-r--r--app/bin/bitmaps/l41.xbm78
-rw-r--r--app/bin/bitmaps/l42.xbm78
-rw-r--r--app/bin/bitmaps/l43.xbm78
-rw-r--r--app/bin/bitmaps/l44.xbm78
-rw-r--r--app/bin/bitmaps/l45.xbm78
-rw-r--r--app/bin/bitmaps/l46.xbm78
-rw-r--r--app/bin/bitmaps/l47.xbm78
-rw-r--r--app/bin/bitmaps/l48.xbm78
-rw-r--r--app/bin/bitmaps/l49.xbm78
-rw-r--r--app/bin/bitmaps/l5.xbm78
-rw-r--r--app/bin/bitmaps/l50.xbm78
-rw-r--r--app/bin/bitmaps/l51.xbm78
-rw-r--r--app/bin/bitmaps/l52.xbm78
-rw-r--r--app/bin/bitmaps/l53.xbm78
-rw-r--r--app/bin/bitmaps/l54.xbm78
-rw-r--r--app/bin/bitmaps/l55.xbm78
-rw-r--r--app/bin/bitmaps/l56.xbm78
-rw-r--r--app/bin/bitmaps/l57.xbm78
-rw-r--r--app/bin/bitmaps/l58.xbm78
-rw-r--r--app/bin/bitmaps/l59.xbm78
-rw-r--r--app/bin/bitmaps/l6.xbm78
-rw-r--r--app/bin/bitmaps/l60.xbm78
-rw-r--r--app/bin/bitmaps/l61.xbm78
-rw-r--r--app/bin/bitmaps/l62.xbm78
-rw-r--r--app/bin/bitmaps/l63.xbm78
-rw-r--r--app/bin/bitmaps/l64.xbm78
-rw-r--r--app/bin/bitmaps/l65.xbm78
-rw-r--r--app/bin/bitmaps/l66.xbm78
-rw-r--r--app/bin/bitmaps/l67.xbm78
-rw-r--r--app/bin/bitmaps/l68.xbm78
-rw-r--r--app/bin/bitmaps/l69.xbm78
-rw-r--r--app/bin/bitmaps/l7.xbm78
-rw-r--r--app/bin/bitmaps/l70.xbm78
-rw-r--r--app/bin/bitmaps/l71.xbm78
-rw-r--r--app/bin/bitmaps/l72.xbm78
-rw-r--r--app/bin/bitmaps/l73.xbm78
-rw-r--r--app/bin/bitmaps/l74.xbm78
-rw-r--r--app/bin/bitmaps/l75.xbm78
-rw-r--r--app/bin/bitmaps/l76.xbm78
-rw-r--r--app/bin/bitmaps/l77.xbm78
-rw-r--r--app/bin/bitmaps/l78.xbm78
-rw-r--r--app/bin/bitmaps/l79.xbm78
-rw-r--r--app/bin/bitmaps/l8.xbm78
-rw-r--r--app/bin/bitmaps/l80.xbm78
-rw-r--r--app/bin/bitmaps/l81.xbm78
-rw-r--r--app/bin/bitmaps/l82.xbm78
-rw-r--r--app/bin/bitmaps/l83.xbm78
-rw-r--r--app/bin/bitmaps/l84.xbm78
-rw-r--r--app/bin/bitmaps/l85.xbm78
-rw-r--r--app/bin/bitmaps/l86.xbm78
-rw-r--r--app/bin/bitmaps/l87.xbm78
-rw-r--r--app/bin/bitmaps/l88.xbm78
-rw-r--r--app/bin/bitmaps/l89.xbm78
-rw-r--r--app/bin/bitmaps/l9.xbm78
-rw-r--r--app/bin/bitmaps/l90.xbm78
-rw-r--r--app/bin/bitmaps/l91.xbm78
-rw-r--r--app/bin/bitmaps/l92.xbm78
-rw-r--r--app/bin/bitmaps/l93.xbm78
-rw-r--r--app/bin/bitmaps/l94.xbm78
-rw-r--r--app/bin/bitmaps/l95.xbm78
-rw-r--r--app/bin/bitmaps/l96.xbm78
-rw-r--r--app/bin/bitmaps/l97.xbm78
-rw-r--r--app/bin/bitmaps/l98.xbm78
-rw-r--r--app/bin/bitmaps/l99.xbm78
-rw-r--r--app/bin/bitmaps/layer_num.inc515
-rw-r--r--app/bin/bitmaps/layers.xpm110
-rw-r--r--app/bin/bitmaps/loosen.xpm183
-rw-r--r--app/bin/bitmaps/magnet.xpm139
-rw-r--r--app/bin/bitmaps/manage.xpm110
-rw-r--r--app/bin/bitmaps/map.xpm169
-rw-r--r--app/bin/bitmaps/move.xpm119
-rw-r--r--app/bin/bitmaps/new-car.xpm100
-rw-r--r--app/bin/bitmaps/ok.xpm92
-rw-r--r--app/bin/bitmaps/pan-zoom.xpm94
-rw-r--r--app/bin/bitmaps/parallel-line.xpm108
-rw-r--r--app/bin/bitmaps/parallel.xpm116
-rw-r--r--app/bin/bitmaps/parameter.xpm104
-rw-r--r--app/bin/bitmaps/paste.xpm107
-rw-r--r--app/bin/bitmaps/png/circle-center16.png (renamed from app/bin/bitmaps/16pix/circle-center.png)bin249 -> 249 bytes
-rw-r--r--app/bin/bitmaps/png/circle-tangent16.png (renamed from app/bin/bitmaps/16pix/circle-tangent.png)bin244 -> 244 bytes
-rw-r--r--app/bin/bitmaps/png/circle16.png (renamed from app/bin/bitmaps/16pix/circle.png)bin242 -> 242 bytes
-rw-r--r--app/bin/bitmaps/png/curved-chord16.png (renamed from app/bin/bitmaps/16pix/curved-chord.png)bin244 -> 244 bytes
-rw-r--r--app/bin/bitmaps/png/curved-end16.png (renamed from app/bin/bitmaps/16pix/curved-end.png)bin239 -> 239 bytes
-rw-r--r--app/bin/bitmaps/png/curved-middle16.png (renamed from app/bin/bitmaps/16pix/curved-middle.png)bin239 -> 239 bytes
-rw-r--r--app/bin/bitmaps/png/curved-tangent16.png (renamed from app/bin/bitmaps/16pix/curved-tangent.png)bin241 -> 241 bytes
-rw-r--r--app/bin/bitmaps/png/description16.png (renamed from app/bin/bitmaps/16pix/description.png)bin228 -> 228 bytes
-rw-r--r--app/bin/bitmaps/png/description24.png (renamed from app/bin/bitmaps/24pix/description.png)bin253 -> 253 bytes
-rw-r--r--app/bin/bitmaps/png/down16.pngbin0 -> 170 bytes
-rw-r--r--app/bin/bitmaps/png/down24.pngbin0 -> 180 bytes
-rw-r--r--app/bin/bitmaps/png/ease-broad16.pngbin0 -> 263 bytes
-rw-r--r--app/bin/bitmaps/png/ease-broad24.pngbin0 -> 332 bytes
-rw-r--r--app/bin/bitmaps/png/ease-broad32.pngbin0 -> 389 bytes
-rw-r--r--app/bin/bitmaps/png/ease-cornu16.pngbin0 -> 322 bytes
-rw-r--r--app/bin/bitmaps/png/ease-cornu24.pngbin0 -> 378 bytes
-rw-r--r--app/bin/bitmaps/png/ease-cornu32.pngbin0 -> 481 bytes
-rw-r--r--app/bin/bitmaps/png/ease-gt-broad16.pngbin0 -> 275 bytes
-rw-r--r--app/bin/bitmaps/png/ease-gt-broad24.pngbin0 -> 342 bytes
-rw-r--r--app/bin/bitmaps/png/ease-gt-broad32.pngbin0 -> 422 bytes
-rw-r--r--app/bin/bitmaps/png/ease-gt-sharp16.pngbin0 -> 276 bytes
-rw-r--r--app/bin/bitmaps/png/ease-gt-sharp24.pngbin0 -> 346 bytes
-rw-r--r--app/bin/bitmaps/png/ease-gt-sharp32.pngbin0 -> 407 bytes
-rw-r--r--app/bin/bitmaps/png/ease-lt-broad16.pngbin0 -> 275 bytes
-rw-r--r--app/bin/bitmaps/png/ease-lt-broad24.pngbin0 -> 344 bytes
-rw-r--r--app/bin/bitmaps/png/ease-lt-broad32.pngbin0 -> 420 bytes
-rw-r--r--app/bin/bitmaps/png/ease-lt-sharp16.pngbin0 -> 274 bytes
-rw-r--r--app/bin/bitmaps/png/ease-lt-sharp24.pngbin0 -> 346 bytes
-rw-r--r--app/bin/bitmaps/png/ease-lt-sharp32.pngbin0 -> 407 bytes
-rw-r--r--app/bin/bitmaps/png/ease-none16.pngbin0 -> 260 bytes
-rw-r--r--app/bin/bitmaps/png/ease-none24.pngbin0 -> 318 bytes
-rw-r--r--app/bin/bitmaps/png/ease-none32.pngbin0 -> 371 bytes
-rw-r--r--app/bin/bitmaps/png/ease-normal16.pngbin0 -> 268 bytes
-rw-r--r--app/bin/bitmaps/png/ease-normal24.pngbin0 -> 326 bytes
-rw-r--r--app/bin/bitmaps/png/ease-normal32.pngbin0 -> 384 bytes
-rw-r--r--app/bin/bitmaps/png/ease-sharp16.pngbin0 -> 267 bytes
-rw-r--r--app/bin/bitmaps/png/ease-sharp24.pngbin0 -> 336 bytes
-rw-r--r--app/bin/bitmaps/png/ease-sharp32.pngbin0 -> 393 bytes
-rw-r--r--app/bin/bitmaps/png/elevation16.png (renamed from app/bin/bitmaps/16pix/elevation.png)bin216 -> 216 bytes
-rw-r--r--app/bin/bitmaps/png/exit16.png (renamed from app/bin/bitmaps/16pix/exit.png)bin203 -> 203 bytes
-rw-r--r--app/bin/bitmaps/png/exit24.png (renamed from app/bin/bitmaps/24pix/exit.png)bin236 -> 236 bytes
-rw-r--r--app/bin/bitmaps/png/extend16.pngbin0 -> 165 bytes
-rw-r--r--app/bin/bitmaps/png/palette.png (renamed from app/bin/bitmaps/16pix/palette.png)bin179 -> 179 bytes
-rw-r--r--app/bin/bitmaps/png/pan-zoom16.png (renamed from app/bin/bitmaps/16pix/pan-zoom.png)bin229 -> 229 bytes
-rw-r--r--app/bin/bitmaps/png/pan-zoom24.png (renamed from app/bin/bitmaps/24pix/pan-zoom.png)bin273 -> 273 bytes
-rw-r--r--app/bin/bitmaps/png/ruler16.pngbin0 -> 134 bytes
-rw-r--r--app/bin/bitmaps/png/select16.png (renamed from app/bin/bitmaps/16pix/select.png)bin220 -> 220 bytes
-rw-r--r--app/bin/bitmaps/png/snap-curs16.png (renamed from app/bin/bitmaps/16pix/snap-curs.png)bin222 -> 222 bytes
-rw-r--r--app/bin/bitmaps/png/snap-curs24.png (renamed from app/bin/bitmaps/24pix/snap-curs.png)bin265 -> 265 bytes
-rw-r--r--app/bin/bitmaps/png/snap-grid16.png (renamed from app/bin/bitmaps/16pix/snap-grid.png)bin191 -> 191 bytes
-rw-r--r--app/bin/bitmaps/png/snap-grid24.png (renamed from app/bin/bitmaps/24pix/snap-grid.png)bin183 -> 183 bytes
-rw-r--r--app/bin/bitmaps/png/straight16.pngbin0 -> 155 bytes
-rw-r--r--app/bin/bitmaps/png/turntable16.pngbin0 -> 132 bytes
-rw-r--r--app/bin/bitmaps/polygon.xpm89
-rw-r--r--app/bin/bitmaps/polyline.xpm92
-rw-r--r--app/bin/bitmaps/profile.xpm121
-rw-r--r--app/bin/bitmaps/protractor.xpm99
-rw-r--r--app/bin/bitmaps/redo.xpm104
-rw-r--r--app/bin/bitmaps/reflect.xpm115
-rw-r--r--app/bin/bitmaps/rotate.xpm148
-rw-r--r--app/bin/bitmaps/ruler.xpm89
-rw-r--r--app/bin/bitmaps/select.xpm106
-rw-r--r--app/bin/bitmaps/sensor.xpm138
-rw-r--r--app/bin/bitmaps/signal.xpm106
-rw-r--r--app/bin/bitmaps/snap-curs.xpm102
-rw-r--r--app/bin/bitmaps/snap-grid.xpm92
-rw-r--r--app/bin/bitmaps/split-draw.xpm95
-rw-r--r--app/bin/bitmaps/split.xpm107
-rw-r--r--app/bin/bitmaps/sticky-doc.xpm130
-rw-r--r--app/bin/bitmaps/sticky-link.xpm138
-rw-r--r--app/bin/bitmaps/sticky-note.xpm124
-rw-r--r--app/bin/bitmaps/stop.xpm128
-rw-r--r--app/bin/bitmaps/straight-line.xpm96
-rw-r--r--app/bin/bitmaps/straight.xpm133
-rw-r--r--app/bin/bitmaps/svg/background.svg (renamed from app/bin/bitmaps/SVG/background.svg)2
-rw-r--r--app/bin/bitmaps/svg/benchwork.svg (renamed from app/bin/bitmaps/SVG/benchwork.svg)0
-rw-r--r--app/bin/bitmaps/svg/bezier-line.svg (renamed from app/bin/bitmaps/SVG/bezier-line.svg)0
-rw-r--r--app/bin/bitmaps/svg/bezier-track.svg (renamed from app/bin/bitmaps/SVG/bezier-track.svg)0
-rwxr-xr-xapp/bin/bitmaps/svg/block.svg (renamed from app/bin/bitmaps/SVG/block.svg)0
-rwxr-xr-xapp/bin/bitmaps/svg/blockdel.svg (renamed from app/bin/bitmaps/SVG/blockdel.svg)0
-rwxr-xr-xapp/bin/bitmaps/svg/blockedit.svg (renamed from app/bin/bitmaps/SVG/blockedit.svg)0
-rwxr-xr-xapp/bin/bitmaps/svg/blocknew.svg (renamed from app/bin/bitmaps/SVG/blocknew.svg)0
-rw-r--r--app/bin/bitmaps/svg/bottom.svg (renamed from app/bin/bitmaps/SVG/bottom.svg)0
-rw-r--r--app/bin/bitmaps/svg/box.svg (renamed from app/bin/bitmaps/SVG/box.svg)36
-rw-r--r--app/bin/bitmaps/svg/bridge.svg (renamed from app/bin/bitmaps/SVG/bridge.svg)38
-rw-r--r--app/bin/bitmaps/svg/building.svg (renamed from app/bin/bitmaps/SVG/building.svg)0
-rw-r--r--app/bin/bitmaps/svg/car-inventory.svg (renamed from app/bin/bitmaps/SVG/car-inventory.svg)0
-rw-r--r--app/bin/bitmaps/svg/change-grid.svg (renamed from app/bin/bitmaps/SVG/change-grid.svg)0
-rw-r--r--app/bin/bitmaps/svg/circle-center.svg (renamed from app/bin/bitmaps/SVG/circle-center.svg)0
-rw-r--r--app/bin/bitmaps/svg/circle-filled-center.svg (renamed from app/bin/bitmaps/SVG/circle-filled-center.svg)0
-rw-r--r--app/bin/bitmaps/svg/circle-filled-tangent.svg (renamed from app/bin/bitmaps/SVG/circle-filled-tangent.svg)0
-rw-r--r--app/bin/bitmaps/svg/circle-line-center.svg (renamed from app/bin/bitmaps/SVG/circle-line-center.svg)0
-rw-r--r--app/bin/bitmaps/svg/circle-line-tangent.svg (renamed from app/bin/bitmaps/SVG/circle-line-tangent.svg)0
-rw-r--r--app/bin/bitmaps/svg/circle-line.svg (renamed from app/bin/bitmaps/SVG/circle-line.svg)0
-rw-r--r--app/bin/bitmaps/svg/circle-tangent.svg (renamed from app/bin/bitmaps/SVG/circle-tangent.svg)0
-rw-r--r--app/bin/bitmaps/svg/circle.svg (renamed from app/bin/bitmaps/SVG/circle.svg)0
-rw-r--r--app/bin/bitmaps/svg/clone.svg (renamed from app/bin/bitmaps/SVG/doc-export-xtc.svg)43
-rw-r--r--app/bin/bitmaps/svg/connect.svg (renamed from app/bin/bitmaps/SVG/connect.svg)37
-rw-r--r--app/bin/bitmaps/svg/control.svg (renamed from app/bin/bitmaps/SVG/control.svg)0
-rw-r--r--app/bin/bitmaps/svg/convert-from.svg (renamed from app/bin/bitmaps/SVG/convert-from.svg)32
-rw-r--r--app/bin/bitmaps/svg/convert-to.svg (renamed from app/bin/bitmaps/SVG/convert-to.svg)0
-rw-r--r--app/bin/bitmaps/svg/copy.svg (renamed from app/bin/bitmaps/SVG/copy.svg)0
-rw-r--r--app/bin/bitmaps/svg/cornu.svg (renamed from app/bin/bitmaps/SVG/cornu.svg)0
-rw-r--r--app/bin/bitmaps/svg/curved-chord.svg (renamed from app/bin/bitmaps/SVG/curved-chord.svg)0
-rw-r--r--app/bin/bitmaps/svg/curved-end.svg (renamed from app/bin/bitmaps/SVG/curved-end.svg)0
-rw-r--r--app/bin/bitmaps/svg/curved-line-chord.svg (renamed from app/bin/bitmaps/SVG/curved-line-chord.svg)0
-rw-r--r--app/bin/bitmaps/svg/curved-line-end.svg (renamed from app/bin/bitmaps/SVG/curved-line-end.svg)0
-rw-r--r--app/bin/bitmaps/svg/curved-line-middle.svg (renamed from app/bin/bitmaps/SVG/curved-line-middle.svg)0
-rw-r--r--app/bin/bitmaps/svg/curved-line-tangent.svg (renamed from app/bin/bitmaps/SVG/curved-line-tangent.svg)0
-rw-r--r--app/bin/bitmaps/svg/curved-middle.svg (renamed from app/bin/bitmaps/SVG/curved-middle.svg)0
-rw-r--r--app/bin/bitmaps/svg/curved-tangent.svg (renamed from app/bin/bitmaps/SVG/curved-tangent.svg)0
-rw-r--r--app/bin/bitmaps/svg/cut.svg (renamed from app/bin/bitmaps/SVG/cut.svg)0
-rw-r--r--app/bin/bitmaps/svg/delete.svg (renamed from app/bin/bitmaps/SVG/delete.svg)0
-rw-r--r--app/bin/bitmaps/svg/describe.svg (renamed from app/bin/bitmaps/SVG/describe.svg)0
-rw-r--r--app/bin/bitmaps/svg/description.svg (renamed from app/bin/bitmaps/SVG/description.svg)0
-rw-r--r--app/bin/bitmaps/svg/dimension.svg (renamed from app/bin/bitmaps/SVG/dimension.svg)0
-rw-r--r--app/bin/bitmaps/svg/doc-export-bmap.svg (renamed from app/bin/bitmaps/SVG/doc-export-bmap.svg)24
-rw-r--r--app/bin/bitmaps/svg/doc-export-dxf.svg (renamed from app/bin/bitmaps/SVG/doc-export-dxf.svg)17
-rw-r--r--app/bin/bitmaps/svg/doc-export-svg.svg (renamed from app/bin/bitmaps/SVG/doc-export-svg.svg)18
-rw-r--r--app/bin/bitmaps/svg/doc-export.svg (renamed from app/bin/bitmaps/SVG/doc-export.svg)0
-rw-r--r--app/bin/bitmaps/svg/doc-import-mod.svg (renamed from app/bin/bitmaps/SVG/doc-import.svg)10
-rw-r--r--app/bin/bitmaps/svg/doc-import.svg (renamed from app/bin/bitmaps/SVG/doc-import-xtc.svg)6
-rw-r--r--app/bin/bitmaps/svg/doc-new.svg (renamed from app/bin/bitmaps/SVG/doc-new.svg)10
-rw-r--r--app/bin/bitmaps/svg/doc-open.svg (renamed from app/bin/bitmaps/SVG/doc-open.svg)0
-rw-r--r--app/bin/bitmaps/svg/doc-print.svg (renamed from app/bin/bitmaps/SVG/doc-print.svg)0
-rw-r--r--app/bin/bitmaps/svg/doc-recent.svg63
-rw-r--r--app/bin/bitmaps/svg/doc-revert.svg (renamed from app/bin/bitmaps/SVG/doc-revert.svg)0
-rw-r--r--app/bin/bitmaps/svg/doc-save-as.svg (renamed from app/bin/bitmaps/SVG/doc-save-as.svg)0
-rw-r--r--app/bin/bitmaps/svg/doc-save.svg (renamed from app/bin/bitmaps/SVG/doc-save.svg)0
-rw-r--r--app/bin/bitmaps/svg/doc-setup.svg (renamed from app/bin/bitmaps/SVG/doc-setup.svg)0
-rw-r--r--app/bin/bitmaps/svg/down.svg (renamed from app/bin/bitmaps/SVG/down.svg)0
-rw-r--r--app/bin/bitmaps/svg/elevation.svg (renamed from app/bin/bitmaps/SVG/elevation.svg)0
-rw-r--r--app/bin/bitmaps/svg/exit.svg (renamed from app/bin/bitmaps/SVG/exit.svg)0
-rw-r--r--app/bin/bitmaps/svg/extend.svg (renamed from app/bin/bitmaps/SVG/extend.svg)0
-rw-r--r--app/bin/bitmaps/svg/filled-box.svg (renamed from app/bin/bitmaps/SVG/filled-box.svg)0
-rw-r--r--app/bin/bitmaps/svg/filled-polygon.svg (renamed from app/bin/bitmaps/SVG/filled-polygon.svg)0
-rw-r--r--app/bin/bitmaps/svg/go.svg (renamed from app/bin/bitmaps/SVG/go.svg)0
-rw-r--r--app/bin/bitmaps/svg/grid.svg (renamed from app/bin/bitmaps/SVG/grid.svg)0
-rw-r--r--app/bin/bitmaps/svg/helix.svg (renamed from app/bin/bitmaps/SVG/helix.svg)0
-rw-r--r--app/bin/bitmaps/svg/info.svg (renamed from app/bin/bitmaps/SVG/Info.svg)0
-rw-r--r--app/bin/bitmaps/svg/join-line.svg (renamed from app/bin/bitmaps/SVG/join-line.svg)0
-rw-r--r--app/bin/bitmaps/svg/join.svg (renamed from app/bin/bitmaps/SVG/join.svg)0
-rw-r--r--app/bin/bitmaps/svg/layers.svg (renamed from app/bin/bitmaps/SVG/layers.svg)0
-rw-r--r--app/bin/bitmaps/svg/loosen.svg146
-rw-r--r--app/bin/bitmaps/svg/magnet.svg (renamed from app/bin/bitmaps/SVG/magnet.svg)0
-rw-r--r--app/bin/bitmaps/svg/manage.svg (renamed from app/bin/bitmaps/SVG/manage.svg)0
-rw-r--r--app/bin/bitmaps/svg/map.svg (renamed from app/bin/bitmaps/SVG/map.svg)0
-rw-r--r--app/bin/bitmaps/svg/move.svg (renamed from app/bin/bitmaps/SVG/move.svg)0
-rw-r--r--app/bin/bitmaps/svg/new-car.svg (renamed from app/bin/bitmaps/SVG/new-car.svg)0
-rw-r--r--app/bin/bitmaps/svg/ok.svg (renamed from app/bin/bitmaps/SVG/ok.svg)0
-rw-r--r--app/bin/bitmaps/svg/pan-zoom.svg (renamed from app/bin/bitmaps/SVG/pan-zoom.svg)0
-rw-r--r--app/bin/bitmaps/svg/parallel-line.svg (renamed from app/bin/bitmaps/SVG/parallel-line.svg)0
-rw-r--r--app/bin/bitmaps/svg/parallel.svg (renamed from app/bin/bitmaps/SVG/parallel.svg)0
-rw-r--r--app/bin/bitmaps/svg/parameter.svg (renamed from app/bin/bitmaps/SVG/parameter.svg)0
-rw-r--r--app/bin/bitmaps/svg/paste.svg (renamed from app/bin/bitmaps/SVG/paste.svg)0
-rw-r--r--app/bin/bitmaps/svg/polygon.svg (renamed from app/bin/bitmaps/SVG/polygon.svg)0
-rw-r--r--app/bin/bitmaps/svg/polyline.svg (renamed from app/bin/bitmaps/SVG/polyline.svg)0
-rw-r--r--app/bin/bitmaps/svg/profile.svg (renamed from app/bin/bitmaps/SVG/profile.svg)0
-rw-r--r--app/bin/bitmaps/svg/protractor.svg (renamed from app/bin/bitmaps/SVG/protractor.svg)0
-rw-r--r--app/bin/bitmaps/svg/redo.svg (renamed from app/bin/bitmaps/SVG/redo.svg)0
-rw-r--r--app/bin/bitmaps/svg/reflect.svg (renamed from app/bin/bitmaps/SVG/reflect.svg)0
-rw-r--r--app/bin/bitmaps/svg/roadbed.svg121
-rw-r--r--app/bin/bitmaps/svg/rotate.svg (renamed from app/bin/bitmaps/SVG/rotate.svg)0
-rw-r--r--app/bin/bitmaps/svg/ruler.svg (renamed from app/bin/bitmaps/SVG/ruler.svg)0
-rw-r--r--app/bin/bitmaps/svg/select.svg (renamed from app/bin/bitmaps/SVG/select.svg)0
-rw-r--r--app/bin/bitmaps/svg/sensor.svg (renamed from app/bin/bitmaps/SVG/sensor.svg)0
-rw-r--r--app/bin/bitmaps/svg/signal.svg (renamed from app/bin/bitmaps/SVG/signal.svg)36
-rw-r--r--app/bin/bitmaps/svg/snap-curs.svg (renamed from app/bin/bitmaps/SVG/snap-curs.svg)0
-rw-r--r--app/bin/bitmaps/svg/snap-grid.svg (renamed from app/bin/bitmaps/SVG/snap-grid.svg)0
-rw-r--r--app/bin/bitmaps/svg/split-draw.svg (renamed from app/bin/bitmaps/SVG/split-draw.svg)0
-rw-r--r--app/bin/bitmaps/svg/split.svg (renamed from app/bin/bitmaps/SVG/split.svg)0
-rw-r--r--app/bin/bitmaps/svg/star.svg (renamed from app/bin/bitmaps/SVG/star.svg)0
-rw-r--r--app/bin/bitmaps/svg/sticky-doc.svg (renamed from app/bin/bitmaps/SVG/sticky-doc.svg)0
-rw-r--r--app/bin/bitmaps/svg/sticky-link.svg (renamed from app/bin/bitmaps/SVG/sticky-link.svg)0
-rw-r--r--app/bin/bitmaps/svg/sticky-note.svg (renamed from app/bin/bitmaps/SVG/sticky-note.svg)0
-rw-r--r--app/bin/bitmaps/svg/stop.svg (renamed from app/bin/bitmaps/SVG/stop.svg)0
-rw-r--r--app/bin/bitmaps/svg/straight-line.svg (renamed from app/bin/bitmaps/SVG/straight-line.svg)0
-rw-r--r--app/bin/bitmaps/svg/straight.svg (renamed from app/bin/bitmaps/SVG/straight.svg)0
-rw-r--r--app/bin/bitmaps/svg/switch-motor.svg (renamed from app/bin/bitmaps/SVG/switch-ai.svg)0
-rw-r--r--app/bin/bitmaps/svg/switchm.svg (renamed from app/bin/bitmaps/SVG/switchm.svg)0
-rw-r--r--app/bin/bitmaps/svg/switchmdel.svg (renamed from app/bin/bitmaps/SVG/switchmdel.svg)0
-rw-r--r--app/bin/bitmaps/svg/switchmedit.svg (renamed from app/bin/bitmaps/SVG/switchmedit.svg)0
-rw-r--r--app/bin/bitmaps/svg/switchmnew.svg (renamed from app/bin/bitmaps/SVG/switchmnew.svg)0
-rw-r--r--app/bin/bitmaps/svg/table-edge.svg (renamed from app/bin/bitmaps/SVG/table-edge.svg)0
-rw-r--r--app/bin/bitmaps/svg/text.svg (renamed from app/bin/bitmaps/SVG/text.svg)0
-rw-r--r--app/bin/bitmaps/svg/ties.svg97
-rw-r--r--app/bin/bitmaps/svg/tipofday.svg (renamed from app/bin/bitmaps/SVG/tipofday.svg)0
-rw-r--r--app/bin/bitmaps/svg/top.svg (renamed from app/bin/bitmaps/SVG/top.svg)0
-rw-r--r--app/bin/bitmaps/svg/train.svg (renamed from app/bin/bitmaps/SVG/train.svg)0
-rw-r--r--app/bin/bitmaps/svg/trim.svg (renamed from app/bin/bitmaps/SVG/trim.svg)0
-rw-r--r--app/bin/bitmaps/svg/tunnel.svg (renamed from app/bin/bitmaps/SVG/tunnel.svg)0
-rw-r--r--app/bin/bitmaps/svg/turnout-design.svg (renamed from app/bin/bitmaps/SVG/turnout-designer.svg)24
-rw-r--r--app/bin/bitmaps/svg/turnout.svg (renamed from app/bin/bitmaps/SVG/turnout.svg)0
-rw-r--r--app/bin/bitmaps/svg/turntable.svg (renamed from app/bin/bitmaps/SVG/turntable.svg)0
-rw-r--r--app/bin/bitmaps/svg/undo.svg (renamed from app/bin/bitmaps/SVG/undo.svg)0
-rw-r--r--app/bin/bitmaps/svg/zoom-choose.svg (renamed from app/bin/bitmaps/SVG/zoom-choose.svg)77
-rw-r--r--app/bin/bitmaps/svg/zoom-extent.svg (renamed from app/bin/bitmaps/SVG/zoom-extent.svg)0
-rw-r--r--app/bin/bitmaps/svg/zoom-in.svg (renamed from app/bin/bitmaps/SVG/zoom-in.svg)0
-rw-r--r--app/bin/bitmaps/svg/zoom-out.svg (renamed from app/bin/bitmaps/SVG/zoom-out.svg)0
-rw-r--r--app/bin/bitmaps/switch-ai.xpm96
-rw-r--r--app/bin/bitmaps/switchm.xpm30
-rw-r--r--app/bin/bitmaps/table-edge.xpm114
-rw-r--r--app/bin/bitmaps/text.xpm89
-rw-r--r--app/bin/bitmaps/top.xpm111
-rw-r--r--app/bin/bitmaps/train.xpm118
-rw-r--r--app/bin/bitmaps/trim.xpm99
-rw-r--r--app/bin/bitmaps/tunnel.xpm118
-rw-r--r--app/bin/bitmaps/turnout-designer.xpm129
-rw-r--r--app/bin/bitmaps/turnout.xpm107
-rw-r--r--app/bin/bitmaps/turntable.xpm133
-rw-r--r--app/bin/bitmaps/undo.xpm103
-rw-r--r--app/bin/bitmaps/zoom-choose.xpm127
-rw-r--r--app/bin/bitmaps/zoom-extent.xpm125
-rw-r--r--app/bin/bitmaps/zoom-in.xpm128
-rw-r--r--app/bin/bitmaps/zoom-out.xpm127
-rwxr-xr-xapp/bin/cJSON.c2932
-rwxr-xr-xapp/bin/cJSON.h285
-rw-r--r--app/bin/cbezier.c1066
-rw-r--r--app/bin/cbezier.h12
-rw-r--r--app/bin/cblock.c641
-rw-r--r--app/bin/ccontrol.c785
-rw-r--r--app/bin/ccornu.c2151
-rw-r--r--app/bin/ccornu.h9
-rw-r--r--app/bin/ccurve.c655
-rw-r--r--app/bin/ccurve.h29
-rw-r--r--app/bin/cdraw.c2932
-rw-r--r--app/bin/celev.c181
-rw-r--r--app/bin/cgroup.c984
-rw-r--r--app/bin/chndldto.c155
-rw-r--r--app/bin/chotbar.c365
-rw-r--r--app/bin/cjoin.c1020
-rw-r--r--app/bin/cjoin.h29
-rw-r--r--app/bin/cmisc.c890
-rw-r--r--app/bin/cmodify.c585
-rw-r--r--app/bin/cnote.c113
-rw-r--r--app/bin/cnvdsgn.c54
-rw-r--r--app/bin/command.c800
-rw-r--r--app/bin/command.h150
-rw-r--r--app/bin/common-ui.h4
-rw-r--r--app/bin/common.h125
-rw-r--r--app/bin/compound.c828
-rw-r--r--app/bin/compound.h167
-rw-r--r--app/bin/cparalle.c363
-rw-r--r--app/bin/cprint.c975
-rw-r--r--app/bin/cprofile.c2161
-rw-r--r--app/bin/cpull.c331
-rw-r--r--app/bin/cruler.c142
-rw-r--r--app/bin/cselect.c2828
-rw-r--r--app/bin/cselect.h11
-rw-r--r--app/bin/csensor.c720
-rw-r--r--app/bin/csignal.c1242
-rw-r--r--app/bin/csnap.c351
-rw-r--r--app/bin/csplit.c185
-rw-r--r--app/bin/cstraigh.c112
-rw-r--r--app/bin/cstraigh.h12
-rw-r--r--app/bin/cstruct.c609
-rw-r--r--app/bin/cswitchmotor.c612
-rw-r--r--app/bin/ctext.c105
-rw-r--r--app/bin/ctie.c53
-rw-r--r--app/bin/ctodesgn.c2898
-rw-r--r--app/bin/ctrain.c4851
-rw-r--r--app/bin/ctrain.h32
-rw-r--r--app/bin/cturnout.c3581
-rw-r--r--app/bin/cturntbl.c548
-rw-r--r--app/bin/cundo.c499
-rw-r--r--app/bin/cundo.h7
-rw-r--r--app/bin/custom.c102
-rw-r--r--app/bin/custom.h32
-rw-r--r--app/bin/dbench.c202
-rw-r--r--app/bin/dbitmap.c11
-rw-r--r--app/bin/dcar.c3088
-rw-r--r--app/bin/dcmpnd.c294
-rw-r--r--app/bin/dcontmgm.c208
-rw-r--r--app/bin/dcustmgm.c197
-rw-r--r--app/bin/dease.c97
-rw-r--r--app/bin/denum.c83
-rw-r--r--app/bin/directory.c172
-rw-r--r--app/bin/directory.h8
-rw-r--r--app/bin/dlayer.c4161
-rw-r--r--app/bin/dlayer.h69
-rw-r--r--app/bin/doption.c216
-rw-r--r--app/bin/dpricels.c63
-rw-r--r--app/bin/dprmfile.c348
-rw-r--r--app/bin/draw.c2498
-rw-r--r--app/bin/draw.h87
-rw-r--r--app/bin/drawgeom.c2589
-rw-r--r--app/bin/drawgeom.h128
-rw-r--r--app/bin/dxfformat.c246
-rw-r--r--app/bin/dxfformat.h20
-rw-r--r--app/bin/dxfoutput.c264
-rw-r--r--app/bin/elev.c513
-rw-r--r--app/bin/file2uri.c51
-rw-r--r--app/bin/file2uri.h47
-rw-r--r--app/bin/fileio.c711
-rw-r--r--app/bin/fileio.h23
-rw-r--r--app/bin/filenoteui.c237
-rw-r--r--app/bin/helphelper.c123
-rw-r--r--app/bin/i18n.c16
-rw-r--r--app/bin/i18n.h26
-rw-r--r--app/bin/include/dirent.h1655
-rw-r--r--app/bin/include/levenshtein.h3
-rw-r--r--app/bin/include/paramfile.h52
-rw-r--r--app/bin/include/paramfilelist.h62
-rw-r--r--app/bin/include/partcatalog.h67
-rw-r--r--app/bin/include/problemrep.h37
-rw-r--r--app/bin/include/stringxtc.h9
-rw-r--r--app/bin/include/svgformat.h4
-rw-r--r--app/bin/include/utf8convert.h2
-rw-r--r--app/bin/layout.c847
-rw-r--r--app/bin/layout.h14
-rw-r--r--app/bin/levenshtein.c95
-rw-r--r--app/bin/linknoteui.c209
-rw-r--r--app/bin/lprintf.c31
-rw-r--r--app/bin/macro.c772
-rw-r--r--app/bin/manifest.c84
-rw-r--r--app/bin/manifest.h8
-rw-r--r--app/bin/menu.c1486
-rw-r--r--app/bin/menu.h69
-rw-r--r--app/bin/misc.c2814
-rw-r--r--app/bin/misc.h444
-rw-r--r--app/bin/misc2.c898
-rw-r--r--app/bin/misc2.h124
-rw-r--r--app/bin/note.h72
-rw-r--r--app/bin/param.c2201
-rw-r--r--app/bin/param.h203
-rw-r--r--app/bin/paramfile.c102
-rw-r--r--app/bin/paramfilelist.c549
-rw-r--r--app/bin/paramfilesearch_ui.c369
-rw-r--r--app/bin/partcatalog.c1209
-rw-r--r--app/bin/paths.c165
-rw-r--r--app/bin/paths.h2
-rw-r--r--app/bin/problemrep.c635
-rw-r--r--app/bin/problemrepui.c109
-rw-r--r--app/bin/scale.c1154
-rw-r--r--app/bin/scale.h63
-rw-r--r--app/bin/shortentext.c52
-rw-r--r--app/bin/shortentext.h38
-rw-r--r--app/bin/shrtpath.c187
-rw-r--r--app/bin/shrtpath.h21
-rw-r--r--app/bin/smalldlg.c134
-rw-r--r--app/bin/smalldlg.h6
-rw-r--r--app/bin/stringxtc.c241
-rw-r--r--app/bin/svgformat.c559
-rw-r--r--app/bin/svgoutput.c462
-rw-r--r--app/bin/tbezier.c1726
-rw-r--r--app/bin/tbezier.h52
-rw-r--r--app/bin/tcornu.c1123
-rw-r--r--app/bin/tcornu.h66
-rw-r--r--app/bin/tcurve.c1061
-rw-r--r--app/bin/tease.c1147
-rw-r--r--app/bin/textnoteui.c210
-rw-r--r--app/bin/track.c2289
-rw-r--r--app/bin/track.h600
-rw-r--r--app/bin/trackx.h39
-rw-r--r--app/bin/trkendpt.c648
-rw-r--r--app/bin/trkendpt.h54
-rw-r--r--app/bin/trkendptx.h (renamed from app/bin/cmisc2.c)63
-rw-r--r--app/bin/trknote.c478
-rw-r--r--app/bin/trkseg.c1699
-rw-r--r--app/bin/trkseg.h252
-rw-r--r--app/bin/tstraigh.c669
-rw-r--r--app/bin/turnout.c2157
-rw-r--r--app/bin/unittest/CMakeLists.txt78
-rw-r--r--app/bin/unittest/catalogtest.c63
-rw-r--r--app/bin/unittest/defaultstest.c18
-rw-r--r--app/bin/unittest/dxfformattest.c40
-rw-r--r--app/bin/unittest/pathstest.c56
-rw-r--r--app/bin/unittest/shortentest.c8
-rw-r--r--app/bin/utf8convert.c40
-rw-r--r--app/bin/uthash.h102
-rw-r--r--app/bin/utility.c328
-rw-r--r--app/bin/utility.h11
-rw-r--r--app/bin/validator.c8
-rw-r--r--app/bin/validator.h22
-rw-r--r--app/bin/version.h20
-rw-r--r--app/bin/xtrkcad.icobin22486 -> 22486 bytes
-rw-r--r--app/bin/xtrkcad.rc14
-rw-r--r--app/cJSON/CMakeLists.txt13
-rw-r--r--app/cJSON/LICENSE20
-rw-r--r--app/cJSON/cJSON.c (renamed from app/help/cJSON.c)412
-rw-r--r--app/cJSON/cJSON.h (renamed from app/help/cJSON.h)48
-rw-r--r--app/cornu/CMakeLists.txt54
-rw-r--r--app/cornu/bezctx_xtrkcad.c35
-rw-r--r--app/doc/CMakeLists.txt161
-rw-r--r--app/doc/addm.but107
-rw-r--r--app/doc/appendix.but29
-rw-r--r--app/doc/changem.but60
-rw-r--r--app/doc/clean-html.cmake6
-rw-r--r--app/doc/clean-html.cmake.in6
-rw-r--r--app/doc/drawm.but66
-rw-r--r--app/doc/editm.but90
-rw-r--r--app/doc/filem.but124
-rw-r--r--app/doc/helpm.but11
-rw-r--r--app/doc/hhc.cmake.in12
-rw-r--r--app/doc/hotbar.but22
-rw-r--r--app/doc/intro.but.in19
-rw-r--r--app/doc/managem.but115
-rwxr-xr-xapp/doc/mk-xtrkcad-manual-html93
-rw-r--r--app/doc/navigation.but13
-rw-r--r--app/doc/optionm.but28
-rw-r--r--app/doc/png.d/bangle.pngbin4818 -> 761 bytes
-rw-r--r--app/doc/png.d/bblock.pngbin389 -> 1093 bytes
-rw-r--r--app/doc/png.d/bbridge.pngbin0 -> 1043 bytes
-rw-r--r--app/doc/png.d/bcircl1.pngbin433 -> 1729 bytes
-rw-r--r--app/doc/png.d/bcircl2.pngbin531 -> 1628 bytes
-rw-r--r--app/doc/png.d/bcircl3.pngbin520 -> 1584 bytes
-rw-r--r--app/doc/png.d/bcircle.pngbin475 -> 1718 bytes
-rw-r--r--app/doc/png.d/bconnect.pngbin415 -> 746 bytes
-rw-r--r--app/doc/png.d/bcontrol.pngbin303 -> 945 bytes
-rw-r--r--app/doc/png.d/bcornu.pngbin4358 -> 1417 bytes
-rw-r--r--app/doc/png.d/bcurve.pngbin355 -> 1342 bytes
-rw-r--r--app/doc/png.d/bcurve1.pngbin304 -> 1246 bytes
-rw-r--r--app/doc/png.d/bcurve2.pngbin302 -> 1234 bytes
-rw-r--r--app/doc/png.d/bcurve3.pngbin298 -> 1331 bytes
-rw-r--r--app/doc/png.d/bcurve4.pngbin303 -> 1414 bytes
-rw-r--r--app/doc/png.d/bcurvelin.pngbin0 -> 744 bytes
-rw-r--r--app/doc/png.d/bdelete.pngbin285 -> 863 bytes
-rw-r--r--app/doc/png.d/bdescrib.pngbin273 -> 811 bytes
-rw-r--r--app/doc/png.d/bdraw.pngbin936 -> 1988 bytes
-rw-r--r--app/doc/png.d/bdrawsplit.pngbin0 -> 605 bytes
-rw-r--r--app/doc/png.d/belev.pngbin268 -> 898 bytes
-rw-r--r--app/doc/png.d/bexport.pngbin0 -> 439 bytes
-rw-r--r--app/doc/png.d/bexportbmap.pngbin0 -> 1298 bytes
-rw-r--r--app/doc/png.d/bexportdxf.pngbin0 -> 654 bytes
-rw-r--r--app/doc/png.d/bexportsvg.pngbin0 -> 1274 bytes
-rw-r--r--app/doc/png.d/bezier.pngbin3866 -> 1359 bytes
-rw-r--r--app/doc/png.d/bfile.pngbin757 -> 801 bytes
-rw-r--r--app/doc/png.d/bflip.pngbin296 -> 767 bytes
-rw-r--r--app/doc/png.d/bgsnap.pngbin378 -> 2304 bytes
-rw-r--r--app/doc/png.d/bgundo.pngbin310 -> 1352 bytes
-rw-r--r--app/doc/png.d/bgzoom.pngbin521 -> 2140 bytes
-rw-r--r--app/doc/png.d/bhelix.pngbin262 -> 1436 bytes
-rw-r--r--app/doc/png.d/bhndldto.pngbin275 -> 932 bytes
-rw-r--r--app/doc/png.d/bimport.pngbin0 -> 457 bytes
-rw-r--r--app/doc/png.d/bimportmod.pngbin0 -> 463 bytes
-rw-r--r--app/doc/png.d/bitmap.png.origbin0 -> 1298 bytes
-rw-r--r--app/doc/png.d/bjoin.pngbin4433 -> 1060 bytes
-rw-r--r--app/doc/png.d/bjoinline.pngbin4329 -> 733 bytes
-rw-r--r--app/doc/png.d/blayer.pngbin70247 -> 2835 bytes
-rw-r--r--app/doc/png.d/blink.pngbin626 -> 776 bytes
-rw-r--r--app/doc/png.d/bmenu.pngbin221 -> 339 bytes
-rw-r--r--app/doc/png.d/bmodify.pngbin296 -> 1169 bytes
-rw-r--r--app/doc/png.d/bmove.pngbin296 -> 784 bytes
-rw-r--r--app/doc/png.d/bmovedes.pngbin311 -> 845 bytes
-rw-r--r--app/doc/png.d/bnew.pngbin793 -> 427 bytes
-rw-r--r--app/doc/png.d/bnewcar.pngbin305 -> 561 bytes
-rw-r--r--app/doc/png.d/bnote.pngbin684 -> 507 bytes
-rw-r--r--app/doc/png.d/bopen.pngbin889 -> 743 bytes
-rw-r--r--app/doc/png.d/bparallel.pngbin4402 -> 802 bytes
-rw-r--r--app/doc/png.d/bparalleline.pngbin4357 -> 721 bytes
-rw-r--r--app/doc/png.d/bparam.pngbin0 -> 772 bytes
-rw-r--r--app/doc/png.d/bprint.pngbin0 -> 450 bytes
-rw-r--r--app/doc/png.d/brevert.pngbin0 -> 694 bytes
-rw-r--r--app/doc/png.d/broadbed.pngbin0 -> 841 bytes
-rw-r--r--app/doc/png.d/brotate.pngbin291 -> 1117 bytes
-rw-r--r--app/doc/png.d/bruler.pngbin250 -> 674 bytes
-rw-r--r--app/doc/png.d/bsave.pngbin938 -> 636 bytes
-rw-r--r--app/doc/png.d/bsaveas.pngbin0 -> 839 bytes
-rw-r--r--app/doc/png.d/bselect.pngbin273 -> 687 bytes
-rw-r--r--app/doc/png.d/bsensor.pngbin281 -> 1224 bytes
-rw-r--r--app/doc/png.d/bsetup.pngbin0 -> 420 bytes
-rw-r--r--app/doc/png.d/bsignal.pngbin256 -> 581 bytes
-rw-r--r--app/doc/png.d/bsplit.pngbin326 -> 919 bytes
-rw-r--r--app/doc/png.d/bstraigh.pngbin329 -> 1100 bytes
-rw-r--r--app/doc/png.d/bstruct.pngbin338 -> 777 bytes
-rw-r--r--app/doc/png.d/bswitchmotor.pngbin316 -> 805 bytes
-rw-r--r--app/doc/png.d/btext.pngbin374 -> 670 bytes
-rw-r--r--app/doc/png.d/bties.pngbin0 -> 727 bytes
-rw-r--r--app/doc/png.d/btop_bottom.pngbin375 -> 837 bytes
-rw-r--r--app/doc/png.d/btrain.pngbin261 -> 883 bytes
-rw-r--r--app/doc/png.d/btunnel.pngbin428 -> 652 bytes
-rw-r--r--app/doc/png.d/bturnout.pngbin456 -> 897 bytes
-rw-r--r--app/doc/png.d/bturntbl.pngbin357 -> 1151 bytes
-rw-r--r--app/doc/png.d/cgroup.pngbin7967 -> 32372 bytes
-rw-r--r--app/doc/png.d/colorw.pngbin4684 -> 5299 bytes
-rw-r--r--app/doc/png.d/convertfrom.pngbin4169 -> 874 bytes
-rw-r--r--app/doc/png.d/convertto.pngbin3940 -> 814 bytes
-rw-r--r--app/doc/png.d/dbench.pngbin289 -> 691 bytes
-rw-r--r--app/doc/png.d/dbezier.pngbin3776 -> 837 bytes
-rw-r--r--app/doc/png.d/dbox.pngbin271 -> 570 bytes
-rw-r--r--app/doc/png.d/dcircle1.pngbin0 -> 1078 bytes
-rw-r--r--app/doc/png.d/dcircle2.pngbin296 -> 908 bytes
-rw-r--r--app/doc/png.d/dcircle3.pngbin496 -> 886 bytes
-rw-r--r--app/doc/png.d/dcurve1.pngbin280 -> 728 bytes
-rw-r--r--app/doc/png.d/dcurve2.pngbin295 -> 793 bytes
-rw-r--r--app/doc/png.d/dcurve3.pngbin288 -> 780 bytes
-rw-r--r--app/doc/png.d/dcurve4.pngbin302 -> 801 bytes
-rw-r--r--app/doc/png.d/ddimlin.pngbin284 -> 802 bytes
-rw-r--r--app/doc/png.d/dentermove.pngbin0 -> 2592 bytes
-rw-r--r--app/doc/png.d/dfilbox.pngbin262 -> 573 bytes
-rw-r--r--app/doc/png.d/dfilpoly.pngbin316 -> 852 bytes
-rw-r--r--app/doc/png.d/dflcrcl2.pngbin303 -> 1022 bytes
-rw-r--r--app/doc/png.d/dflcrcl3.pngbin297 -> 983 bytes
-rw-r--r--app/doc/png.d/dlayer.pngbin9268 -> 0 bytes
-rw-r--r--app/doc/png.d/dlayers.pngbin89877 -> 51754 bytes
-rw-r--r--app/doc/png.d/dline.pngbin260 -> 444 bytes
-rw-r--r--app/doc/png.d/dpoly.pngbin313 -> 722 bytes
-rw-r--r--app/doc/png.d/dpolylin.pngbin0 -> 716 bytes
-rw-r--r--app/doc/png.d/dtbledge.pngbin270 -> 631 bytes
-rw-r--r--app/doc/png.d/exportfile.pngbin22136 -> 28238 bytes
-rw-r--r--app/doc/png.d/exportfiledxf.pngbin19413 -> 24605 bytes
-rw-r--r--app/doc/png.d/exportfilesvg.pngbin0 -> 29333 bytes
-rw-r--r--app/doc/png.d/iconlink.png (renamed from app/doc/png.d/iconlink.PNG)bin230 -> 230 bytes
-rw-r--r--app/doc/png.d/import.pngbin22302 -> 22986 bytes
-rw-r--r--app/doc/png.d/importmod.pngbin0 -> 22835 bytes
-rw-r--r--app/doc/png.d/map.pngbin3868 -> 1430 bytes
-rw-r--r--app/doc/png.d/medit.pngbin5981 -> 6233 bytes
-rw-r--r--app/doc/png.d/mentermove.pngbin0 -> 6641 bytes
-rw-r--r--app/doc/png.d/mhelp.pngbin2240 -> 4789 bytes
-rw-r--r--app/doc/png.d/pan.pngbin3929 -> 788 bytes
-rw-r--r--app/doc/png.d/paramsearch.pngbin124132 -> 34767 bytes
-rw-r--r--app/doc/png.d/problemdata.pngbin0 -> 9536 bytes
-rw-r--r--app/doc/png.d/statusbarparallel.pngbin12964 -> 4002 bytes
-rw-r--r--app/doc/png.d/statustext.pngbin12102 -> 3860 bytes
-rw-r--r--app/doc/png.d/turnsel.pngbin18373 -> 50207 bytes
-rw-r--r--app/doc/view_winm.but15
-rw-r--r--app/doc/warranty.but68
-rw-r--r--app/doc/xtrkcad-manual-5.3.0.html19625
-rw-r--r--app/dynstring/CMakeLists.txt18
-rw-r--r--app/dynstring/dynstring.c7
-rw-r--r--app/dynstring/dynstring.h2
-rw-r--r--app/dynstring/unittest/CMakeLists.txt13
-rw-r--r--app/help/CMakeLists.txt78
-rw-r--r--app/help/genhelp.c4
-rw-r--r--app/help/genhelp.json96
-rw-r--r--app/help/genmessages.c4
-rw-r--r--app/help/messages.in104
-rw-r--r--app/i18n/CMakeLists.txt246
-rw-r--r--app/i18n/cy_GB.po13869
-rw-r--r--app/i18n/de_DE.po14601
-rw-r--r--app/i18n/fi.po32830
-rw-r--r--app/i18n/fr_FR.po14300
-rw-r--r--app/i18n/pt_BR.po13057
-rw-r--r--app/i18n/ru.po12872
-rw-r--r--app/i18n/stripmsg.c2
-rw-r--r--app/lib/CHANGELOG.md169
-rw-r--r--app/lib/CMakeLists.txt34
-rw-r--r--app/lib/COPYING39
-rwxr-xr-xapp/lib/Readme.md47
-rw-r--r--app/lib/demos/CMakeLists.txt5
-rw-r--r--app/lib/demos/dmadjend.xtr20
-rw-r--r--app/lib/demos/dmcancel.xtr10
-rw-r--r--app/lib/demos/dmconn1.xtr12
-rw-r--r--app/lib/demos/dmconn2.xtr24
-rw-r--r--app/lib/demos/dmctlpnl.xtr45
-rw-r--r--app/lib/demos/dmdelund.xtr2
-rw-r--r--app/lib/demos/dmexcept.xtr4
-rw-r--r--app/lib/demos/dmgroup.xtr6
-rw-r--r--app/lib/demos/dmhelix.xtr8
-rw-r--r--app/lib/demos/dmlines.xtr2
-rw-r--r--app/lib/demos/dmlines2.xtr4
-rw-r--r--app/lib/demos/dmnotes.xtr53
-rw-r--r--app/lib/demos/dmrescal.xtr8
-rw-r--r--app/lib/demos/dmrotate.xtr6
-rw-r--r--app/lib/demos/dmselect.xtr34
-rw-r--r--app/lib/demos/dmtosel.xtr66
-rw-r--r--app/lib/demos/dmtoyard.xtr53
-rw-r--r--app/lib/examples/CMakeLists.txt6
-rw-r--r--app/lib/examples/G Scale Folded Dogbone.xtc15282
-rw-r--r--app/lib/examples/Mianne Benchwork.xtc818
-rw-r--r--app/lib/examples/Ondaville Franklin and Carolina RR.xtc22474
-rw-r--r--app/lib/examples/PrinterMarginTest-A4.xtc207
-rw-r--r--app/lib/examples/PrinterMarginTest-Letter.xtc167
-rw-r--r--app/lib/params/1-mrkln.xtp281
-rw-r--r--app/lib/params/Any-DCC-Concepts Point Motors.xtp115
-rw-r--r--app/lib/params/Any-ModelRailroadBenchwork.xtp975
-rw-r--r--app/lib/params/Any-Sievers-Benchwork.xtp539
-rw-r--r--app/lib/params/CMakeLists.txt116
-rw-r--r--app/lib/params/G-Bachmann.xtp113
-rw-r--r--app/lib/params/G-Lionel Ready-To-Play Track.xtp37
-rw-r--r--app/lib/params/G-Piko.xtp517
-rw-r--r--app/lib/params/G-Playmobil RC Track.xtp2
-rw-r--r--app/lib/params/G-USA.xtp74
-rw-r--r--app/lib/params/HO - Atlas Custom Line Track Assemblies.xtp80
-rw-r--r--app/lib/params/HO-Atlas Code 100 Track.xtp (renamed from app/lib/params/HO-atl100ho.xtp)1355
-rw-r--r--app/lib/params/HO-AtlasTrainKidsTrk.xtp99
-rw-r--r--app/lib/params/HO-Bachmann EZ.xtp1410
-rw-r--r--app/lib/params/HO-Busch.xtp10
-rw-r--r--app/lib/params/HO-ITLA Modular Building System.xtp75
-rw-r--r--app/lib/params/HO-Jouef(Hornby)HO.xtp (renamed from app/lib/params/JouefHO.xtp)193
-rw-r--r--app/lib/params/HO-Kato.xtp1289
-rw-r--r--app/lib/params/HO-Lionel MagLock FasTrack.xtp95
-rw-r--r--app/lib/params/HO-Mehano.xtp270
-rw-r--r--app/lib/params/HO-Peco-Code100Setrack.xtp111
-rw-r--r--app/lib/params/HO-Peco-Code100Streamline.xtp163
-rw-r--r--app/lib/params/HO-Peco-Code70USA.xtp54
-rw-r--r--app/lib/params/HO-Peco70USA.xtp32
-rw-r--r--app/lib/params/HO-Roco HO Code 83.xtp946
-rw-r--r--app/lib/params/HO-Walthers Cornerstone 1.xtp (renamed from app/lib/params/HO-WalthCornerstone 1.xtp)8840
-rw-r--r--app/lib/params/HO-Walthers DCC Code 100.xtp297
-rw-r--r--app/lib/params/HO-Walthers DCC Code 70.xtp68
-rw-r--r--app/lib/params/HO-Walthers DCC Code 83.xtp498
-rw-r--r--app/lib/params/HO-Walthers-Power-Loc.xtp145
-rw-r--r--app/lib/params/HO-Weinert-Code75.xtp410
-rw-r--r--app/lib/params/HO-fl-model.xtp847
-rw-r--r--app/lib/params/HO-fl-profi.xtp (renamed from app/lib/params/fl-profi.xtp)543
-rw-r--r--app/lib/params/HOn30_Minitrains.xtp200
-rw-r--r--app/lib/params/Mianne-Bench.xtp134
-rw-r--r--app/lib/params/N-Atlas Code 80 Track.xtp1743
-rw-r--r--app/lib/params/N-Bachmann EZ.xtp1266
-rw-r--r--app/lib/params/N-Design Preservation Models Modular Custom Structures.xtp372
-rw-r--r--app/lib/params/N-ITLA Modular Building System.xtp62
-rw-r--r--app/lib/params/N-Kato Track and Structures.xtp3518
-rw-r--r--app/lib/params/N-Kato-Unitram.xtp32
-rw-r--r--app/lib/params/N-MiniTrix Code 60 Concrete Tie Track.xtp256
-rw-r--r--app/lib/params/N-MiniTrix Track (De).xtp644
-rw-r--r--app/lib/params/N-ModellbahnUnion.xtp117
-rw-r--r--app/lib/params/N-PecoCode55Finescale.xtp354
-rw-r--r--app/lib/params/N-StreetTemplate2LaneCurves.xtp1256
-rw-r--r--app/lib/params/N-StreetTemplate2LaneIntersections.xtp693
-rw-r--r--app/lib/params/N-StreetTemplate2LaneStraight.xtp152
-rw-r--r--app/lib/params/N-Tomix Track.xtp3539
-rw-r--r--app/lib/params/N-walthers-n.xtp (renamed from app/lib/params/N-walth-n.xtp)7026
-rw-r--r--app/lib/params/NTrak.xtp1510
-rw-r--r--app/lib/params/Newqida.xtp4
-rw-r--r--app/lib/params/O-LionelFasTrack.xtp573
-rw-r--r--app/lib/params/O-Peco-Bullhead.xtp117
-rw-r--r--app/lib/params/O-Peco-Code 124 Setrack.xtp49
-rw-r--r--app/lib/params/O-Peco-Code 143 FlatBottom.xtp39
-rw-r--r--app/lib/params/O-Ross.xtp3526
-rw-r--r--app/lib/params/OO-DCC Concepts Legacy Realistic Track.xtp236
-rw-r--r--app/lib/params/OO-HornbyOO.xtp526
-rw-r--r--app/lib/params/OO-HornbyPlayTrainsTrk.xtp95
-rw-r--r--app/lib/params/OO-Peco-Code75Bullhead.xtp90
-rw-r--r--app/lib/params/S_ACG_All Aboard Panels.xtp199
-rw-r--r--app/lib/params/S_ACG_American Flyer Track.xtp150
-rw-r--r--app/lib/params/S_ACG_Pike-Master Track.xtp88
-rw-r--r--app/lib/params/Sn3-Fast Tracks.xtp260
-rw-r--r--app/lib/params/TT-Berliner.xtp456
-rw-r--r--app/lib/params/TT-Hornby.xtp256
-rw-r--r--app/lib/params/TT-ModellbahnUnion.xtp55
-rw-r--r--app/lib/params/TT-Peco.xtp84
-rw-r--r--app/lib/params/TT-Roco.xtp215
-rw-r--r--app/lib/params/TT-Zeuke.xtp288
-rw-r--r--app/lib/params/Z-Micro-Trains.xtp (renamed from app/lib/params/mtl-z.xtp)23
-rw-r--r--app/lib/params/Z-Rokuhan.xtp2361
-rw-r--r--app/lib/params/atlaso2rail.xtp313
-rw-r--r--app/lib/params/fl-model.xtp500
-rw-r--r--app/lib/params/mkcarpart.c12
-rw-r--r--app/lib/params/mkstruct.c4
-rw-r--r--app/lib/params/mrkln1.xtp82
-rw-r--r--app/lib/params/peco-O-Bullhead.xtp82
-rw-r--r--app/lib/params/proto-ng-3-foot.xtp2
-rw-r--r--app/lib/params/protoam.xtp3
-rw-r--r--app/lib/params/protosteam.xtp8
-rw-r--r--app/lib/xtrkcad-beta.desktop9
-rwxr-xr-xapp/lib/xtrkcad-setup16
-rw-r--r--app/lib/xtrkcad.upd27
-rw-r--r--app/lib/xtrkcad.xtq4
-rw-r--r--app/tools/CMakeLists.txt13
-rw-r--r--app/tools/HACKING2
-rw-r--r--app/tools/TurnoutDesigner.xtr918
-rw-r--r--app/tools/halibut/CMakeLists.txt15
-rw-r--r--app/tools/halibut/bk_paper.c12
-rw-r--r--app/tools/halibut/charset/CMakeLists.txt16
-rw-r--r--app/tools/halibut/deflate.c8
-rw-r--r--app/tools/halibut/in_afm.c4
-rw-r--r--app/tools/halibut/input.c2
-rw-r--r--app/tools/halibut/tree234.c2
-rw-r--r--app/tools/halibut/ustring.c4
-rw-r--r--app/tools/halibut/wcwidth.c5
-rw-r--r--app/tools/lib/linux/libzip.abin0 -> 264078 bytes
-rw-r--r--app/tools/listxtp.c6
-rw-r--r--app/tools/pngtoxpm/CMakeLists.txt16
-rw-r--r--app/tools/pngtoxpm/pngtoxpm.c721
-rw-r--r--app/wlib/CMakeLists.txt23
-rw-r--r--app/wlib/gtklib/CMakeLists.txt101
-rw-r--r--app/wlib/gtklib/bitmap.c38
-rw-r--r--app/wlib/gtklib/boxes.c194
-rw-r--r--app/wlib/gtklib/browserhelp.c65
-rw-r--r--app/wlib/gtklib/button.c903
-rw-r--r--app/wlib/gtklib/color.c512
-rw-r--r--app/wlib/gtklib/control.c248
-rw-r--r--app/wlib/gtklib/droplist.c441
-rw-r--r--app/wlib/gtklib/dynarr.h10
-rw-r--r--app/wlib/gtklib/filesel.c201
-rw-r--r--app/wlib/gtklib/font.c362
-rw-r--r--app/wlib/gtklib/gtkdraw-cairo.c1276
-rw-r--r--app/wlib/gtklib/gtkint.h299
-rw-r--r--app/wlib/gtklib/help.c40
-rw-r--r--app/wlib/gtklib/ixhelp.c424
-rw-r--r--app/wlib/gtklib/lines.c132
-rw-r--r--app/wlib/gtklib/list.c522
-rw-r--r--app/wlib/gtklib/liststore.c219
-rw-r--r--app/wlib/gtklib/main.c30
-rw-r--r--app/wlib/gtklib/menu.c487
-rw-r--r--app/wlib/gtklib/message.c220
-rw-r--r--app/wlib/gtklib/notice.c344
-rw-r--r--app/wlib/gtklib/opendocument.c88
-rw-r--r--app/wlib/gtklib/osxhelp.c167
-rw-r--r--app/wlib/gtklib/pixbuf.c96
-rw-r--r--app/wlib/gtklib/print.c1067
-rw-r--r--app/wlib/gtklib/single.c244
-rw-r--r--app/wlib/gtklib/splash.c112
-rw-r--r--app/wlib/gtklib/statusbar.c201
-rw-r--r--app/wlib/gtklib/sysinfo.c137
-rw-r--r--app/wlib/gtklib/text.c592
-rw-r--r--app/wlib/gtklib/timer.c95
-rw-r--r--app/wlib/gtklib/tooltip.c237
-rw-r--r--app/wlib/gtklib/treeview.c424
-rw-r--r--app/wlib/gtklib/uthash.h102
-rw-r--r--app/wlib/gtklib/util.c827
-rw-r--r--app/wlib/gtklib/window.c1339
-rw-r--r--app/wlib/gtklib/wpref.c310
-rw-r--r--app/wlib/gtklib/writebitmap.c94
-rw-r--r--app/wlib/include/CMakeLists.txt12
-rw-r--r--app/wlib/include/getline.h132
-rw-r--r--app/wlib/include/getopt.h2
-rw-r--r--app/wlib/include/wlib.h313
-rw-r--r--app/wlib/mswlib/CMakeLists.txt90
-rw-r--r--app/wlib/mswlib/backgnd.c2
-rw-r--r--app/wlib/mswlib/checksum.c14
-rw-r--r--app/wlib/mswlib/dynarr.h8
-rw-r--r--app/wlib/mswlib/getline/LICENSE25
-rw-r--r--app/wlib/mswlib/getline/README.md5
-rw-r--r--app/wlib/mswlib/getline/getline.c73
-rw-r--r--app/wlib/mswlib/getopt.c87
-rw-r--r--app/wlib/mswlib/gwin32.c153
-rw-r--r--app/wlib/mswlib/mswbitmap.c240
-rw-r--r--app/wlib/mswlib/mswbox.c43
-rw-r--r--app/wlib/mswlib/mswbutt.c346
-rw-r--r--app/wlib/mswlib/mswchoic.c320
-rw-r--r--app/wlib/mswlib/mswcolor.c124
-rw-r--r--app/wlib/mswlib/mswdraw.c1682
-rw-r--r--app/wlib/mswlib/mswedit.c539
-rw-r--r--app/wlib/mswlib/mswint.h4
-rw-r--r--app/wlib/mswlib/mswlines.c51
-rw-r--r--app/wlib/mswlib/mswlist.c1211
-rw-r--r--app/wlib/mswlib/mswmenu.c674
-rw-r--r--app/wlib/mswlib/mswmisc.c766
-rw-r--r--app/wlib/mswlib/mswmsg.c103
-rw-r--r--app/wlib/mswlib/mswpref.c453
-rw-r--r--app/wlib/mswlib/mswprint.c135
-rw-r--r--app/wlib/mswlib/mswsplash.c191
-rw-r--r--app/wlib/mswlib/mswstatus.c32
-rw-r--r--app/wlib/mswlib/mswtext.c560
-rw-r--r--app/wlib/mswlib/simple-gettext.c600
-rw-r--r--app/wlib/mswlib/sysinfo.c138
-rw-r--r--app/wlib/mswlib/unittest/CMakeLists.txt16
-rw-r--r--app/wlib/mswlib/utf8conv.c277
-rw-r--r--app/wlib/test/testapp.c2
945 files changed, 211770 insertions, 146958 deletions
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index 72ca170..33e105a 100644
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -1,20 +1,23 @@
-# "bin/i18n.h" is widely used
-INCLUDE_DIRECTORIES(bin)
-include_directories(dynstring)
-include_directories(cornu)
-include_directories(libzip)
+
+
# Setup the rest of the build ...
+add_subdirectory(tools)
+add_subdirectory(help)
+add_subdirectory(bin)
+add_subdirectory(cornu)
add_subdirectory(dynstring)
-ADD_SUBDIRECTORY(wlib)
-ADD_SUBDIRECTORY(tools)
-ADD_SUBDIRECTORY(help)
-ADD_SUBDIRECTORY(doc)
-ADD_SUBDIRECTORY(bin)
-ADD_SUBDIRECTORY(lib)
-ADD_SUBDIRECTORY(cornu)
+add_subdirectory(cJSON)
+add_subdirectory(wlib)
+add_subdirectory(doc)
+add_subdirectory(lib)
+
+# i18n can be found here
+include_directories(
+ ${xtrkcad-lib_SOURCE_DIR}
+)
-IF(XTRKCAD_USE_GETTEXT)
- ADD_SUBDIRECTORY(i18n)
-ENDIF(XTRKCAD_USE_GETTEXT) \ No newline at end of file
+if(XTRKCAD_USE_GETTEXT)
+ add_subdirectory(i18n)
+endif() \ No newline at end of file
diff --git a/app/COPYING b/app/COPYING
index b66da73..d159169 100644
--- a/app/COPYING
+++ b/app/COPYING
@@ -1,12 +1,12 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
- Preamble
+ Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
+the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
@@ -55,19 +55,19 @@ patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
-
- GNU GENERAL PUBLIC LICENSE
+
+ GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The 'Program', below,
-refers to any such program or work, and a 'work based on the Program'
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
-the term 'modification'.) Each licensee is addressed as 'you'.
+the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
-
+
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
-
+
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
@@ -240,8 +240,8 @@ be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and 'any
-later version', you have the option of following the terms and conditions
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
@@ -255,12 +255,12 @@ make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
- NO WARRANTY
+ NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM 'AS IS' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
@@ -277,5 +277,63 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
- END OF TERMS AND CONDITIONS
-
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/app/bin/CMakeLists.txt b/app/bin/CMakeLists.txt
index 8d28205..48a0b72 100644
--- a/app/bin/CMakeLists.txt
+++ b/app/bin/CMakeLists.txt
@@ -1,18 +1,64 @@
+project(xtrkcad-lib)
+
include( CheckSymbolExists )
+#
+# Create line symbols for turnouts from src definitions
+#
+# 1. Build converter cnvdsgn
+# 2. define target "lines" for all symols
+# 3. create .lin-files using converter
+# 4. add individual .lin-files as dependency to "lines"
+#
+
+# build GA or Beta executable
+set( XTRKCAD_BIN "xtrkcad${XTRKCAD_BETA}" )
+
+add_subdirectory(bitmaps)
+
+add_executable(cnvdsgn cnvdsgn.c utility.c)
+
+target_link_libraries(cnvdsgn xtrkcad-wlib)
+
+if(NOT WIN32)
+ target_link_libraries(cnvdsgn m)
+endif()
+
+add_custom_target(lines
+ DEPENDS cnvdsgn
+)
+
+#
+# macro to copy DLLs into build directory
+# eases debugging on Windows
+#
+if(WIN32)
+ macro(COPYDLLTOBUILD dllname)
+ add_custom_command(
+ TARGET xtrkcad POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy
+ ${dllname}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ )
+ endmacro(COPYDLLTOBUILD)
+endif()
-ADD_EXECUTABLE(cnvdsgn cnvdsgn.c utility.c)
-IF(NOT WIN32)
- TARGET_LINK_LIBRARIES(cnvdsgn m)
-ENDIF(NOT WIN32)
+#
+# macro creates lin files and adds the result as dependency
+#
-MACRO(GENERATE_LIN lin_name)
- ADD_CUSTOM_COMMAND(
+macro(GENERATE_LIN lin_name)
+ add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${lin_name}.lin
- DEPENDS cnvdsgn ${CMAKE_CURRENT_SOURCE_DIR}/${lin_name}.src
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${lin_name}.src
COMMAND cnvdsgn < ${CMAKE_CURRENT_SOURCE_DIR}/${lin_name}.src > ${CMAKE_CURRENT_BINARY_DIR}/${lin_name}.lin
- )
-ENDMACRO(GENERATE_LIN)
+ )
+
+ target_sources(lines
+ PRIVATE
+ ${CMAKE_CURRENT_BINARY_DIR}/${lin_name}.lin
+ )
+endmacro(GENERATE_LIN)
GENERATE_LIN(to3way)
GENERATE_LIN(tocrv)
@@ -30,314 +76,341 @@ GENERATE_LIN(tocornu)
GENERATE_LIN(tocornuwye)
GENERATE_LIN(tocornu3way)
-SET(LIN_SOURCES
- ${CMAKE_CURRENT_BINARY_DIR}/to3way.lin
- ${CMAKE_CURRENT_BINARY_DIR}/tocrv.lin
- ${CMAKE_CURRENT_BINARY_DIR}/tocrvsct.lin
- ${CMAKE_CURRENT_BINARY_DIR}/todcross.lin
- ${CMAKE_CURRENT_BINARY_DIR}/todslip.lin
- ${CMAKE_CURRENT_BINARY_DIR}/tolcross.lin
- ${CMAKE_CURRENT_BINARY_DIR}/torcross.lin
- ${CMAKE_CURRENT_BINARY_DIR}/toreg.lin
- ${CMAKE_CURRENT_BINARY_DIR}/tosslip.lin
- ${CMAKE_CURRENT_BINARY_DIR}/tostrsct.lin
- ${CMAKE_CURRENT_BINARY_DIR}/towye.lin
- ${CMAKE_CURRENT_BINARY_DIR}/toxing.lin
- ${CMAKE_CURRENT_BINARY_DIR}/tocornu.lin
- ${CMAKE_CURRENT_BINARY_DIR}/tocornuwye.lin
- ${CMAKE_CURRENT_BINARY_DIR}/tocornu3way.lin
- )
-
-ADD_CUSTOM_COMMAND(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/bllnhlp.c
- DEPENDS genhelp ${help_SOURCE_DIR}/genhelp.json
- COMMAND genhelp ${GENHELP_OPTS} ${help_SOURCE_DIR}/genhelp.json ${CMAKE_CURRENT_BINARY_DIR}/bllnhlp.c
- )
-
-ADD_EXECUTABLE(xtrkcad WIN32
- misc.c
- xtrkcad.rc
+# put these targets into the folder LineSymbols
+set_target_properties(lines cnvdsgn PROPERTIES FOLDER LineSymbols)
+
+add_library(xtrkcad-lib "")
+
+target_sources(xtrkcad-lib
+ PRIVATE
+ appdefaults.c
+ archive.c
+ archive.h
+ cbezier.c
+ cbezier.h
+ cblock.c
+ ccornu.c
+ ccornu.h
+ ccurve.c
+ ccurve.h
+ ccontrol.c
+ cdraw.c
+ celev.c
+ cgroup.c
+ chndldto.c
+ chotbar.c
+ cjoin.c
+ cjoin.h
+ cmisc.c
+ cmodify.c
+ cnote.c
+ command.c
+ command.h
+ common.h
+ common-ui.h
+ compound.c
+ compound.h
+ cparalle.c
+ cprint.c
+ cprofile.c
+ cpull.c
+ cruler.c
+ cselect.c
+ cselect.h
+ csensor.c
+ csnap.c
+ csplit.c
+ csignal.c
+ cstraigh.c
+ cstraigh.h
+ cstruct.c
+ cswitchmotor.c
+ ctext.c
+ ctodesgn.c
+ ctrain.c
+ ctrain.h
+ cturnout.c
+ cturntbl.c
+ cundo.c
+ cundo.h
+ custom.c
+ custom.h
+ dbench.c
+ dbitmap.c
+ dcar.c
+ dcmpnd.c
+ dcustmgm.c
+ dcontmgm.c
+ dease.c
+ denum.c
+ directory.c
+ directory.h
+ dlayer.c
+ dlayer.h
+ doption.c
+ dpricels.c
+ dprmfile.c
+ draw.c
+ draw.h
+ drawgeom.c
+ drawgeom.h
+ dxfformat.c
+ dxfformat.h
+ dxfoutput.c
+ elev.c
+ file2uri.c
+ file2uri.h
+ fileio.c
+ fileio.h
+ filenoteui.c
+ i18n.c
+ layout.c
+ layout.h
+ levenshtein.c
+ linknoteui.c
+ lprintf.c
+ macro.c
+ manifest.c
+ manifest.h
+ menu.h
+ menu.c
+ misc.c
+ misc.h
+ note.h
+ param.c
+ param.h
+ paramfile.c
+ paramfilelist.c
+ paramfilesearch_ui.c
+ partcatalog.c
+ paths.c
+ paths.h
+ problemrep.c
+ problemrepui.c
+ scale.c
+ scale.h
+ shortentext.c
+ shortentext.h
+ shrtpath.c
+ shrtpath.h
+ smalldlg.c
+ smalldlg.h
+ stringxtc.c
+ tbezier.c
+ tbezier.h
+ tcornu.c
+ tcornu.h
+ tcurve.c
+ tease.c
+ textnoteui.c
+ track.c
+ track.h
+ trackx.h
+ trkendpt.c
+ trkendpt.h
+ trkendptx.h
+ trknote.c
+ trkseg.h
+ trkseg.c
+ tstraigh.c
+ turnout.c
+ uthash.h
+ utility.c
+ utility.h
+ validator.c
+ validator.h
+ include/dirent.h
+ include/levenshtein.h
+ include/paramfile.h
+ include/paramfilelist.h
+ include/partcatalog.h
+ include/problemrep.h
+ include/stringxtc.h
+ include/utlist.h
)
-SET(SOURCES
- ${LIN_SOURCES}
- appdefaults.c
- archive.c
- archive.h
- bllnhlp.c
- cbezier.c
- cbezier.h
- cblock.c
- ccornu.c
- ccornu.h
- ccurve.c
- ccurve.h
- ccontrol.c
- cdraw.c
- celev.c
- cgroup.c
- chndldto.c
- chotbar.c
- cjoin.c
- cjoin.h
- cmisc.c
- cmodify.c
- cnote.c
- common.h
- common-ui.h
- compound.c
- compound.h
- cparalle.c
- cprint.c
- cprofile.c
- cpull.c
- cruler.c
- cselect.c
- cselect.h
- csensor.c
- csnap.c
- csplit.c
- csignal.c
- cstraigh.c
- cstraigh.h
- cstruct.c
- cswitchmotor.c
- ctext.c
- ctodesgn.c
- ctrain.c
- cturnout.c
- cturntbl.c
- cundo.c
- custom.c
- custom.h
- dbench.c
- dbitmap.c
- dcar.c
- dcmpnd.c
- dcustmgm.c
- dcontmgm.c
- dease.c
- denum.c
- directory.c
- dlayer.c
- doption.c
- dpricels.c
- dprmfile.c
- draw.c
- draw.h
- drawgeom.c
- dxfformat.c
- dxfformat.h
- dxfoutput.c
- elev.c
- file2uri.c
- file2uri.h
- fileio.c
- filenoteui.c
- i18n.c
- layout.c
- layout.h
- levenshtein.c
- linknoteui.c
- lprintf.c
- macro.c
- manifest.c
- misc.c
- misc.h
- misc2.c
- param.c
- paramfile.c
- paramfilelist.c
- paramfilesearch_ui.c
- partcatalog.c
- paths.c
- shortentext.c
- shrtpath.c
- smalldlg.c
- stringxtc.c
- tbezier.c
- tcornu.c
- tcurve.c
- tease.c
- textnoteui.c
- track.c
- track.h
- trackx.h
- trknote.c
- trkseg.c
- tstraigh.c
- utility.c
- utility.h
- validator.c
- cJSON.c
- archive.h
- directory.h
- manifest.h
- validator.h
- )
-
# add UTF-8 conversion utilities on Windows
+
if(WIN32)
- set( SOURCES
- ${SOURCES}
- utf8convert.c
- include/utf8convert.h
+ target_sources(xtrkcad-lib
+ PRIVATE
+ utf8convert.c
+ include/utf8convert.h
)
-endif(WIN32)
-
-set (SOURCES
- ${SOURCES}
- include/dirent.h
- include/levenshtein.h
- include/paramfile.h
- include/paramfilelist.h
- include/partcatalog.h
- include/stringxtc.h
- include/utlist.h
+endif()
+
+# This ensures that messages.h has been generated before we build xtrkcad-lib
+add_dependencies(xtrkcad-lib
+ msgfiles
+ lines
+ genbitmaps
)
-if(XTRKCAD_CREATE_SVG)
- set (SOURCES
- ${SOURCES}
- svgformat.c
- svgoutput.c
- )
- include_directories(${MINIXML_INCLUDE_PATH})
- if(WIN32)
- add_custom_command(
- TARGET xtrkcad POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy
- ${MINIXML_SHAREDLIB}
- ${CMAKE_CURRENT_BINARY_DIR}
- )
+target_include_directories(xtrkcad-lib
+ PUBLIC
+ ${messagefile_BINARY_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}
+)
- # add dll to install package
- install(FILES ${MINIXML_SHAREDLIB}
- DESTINATION ${XTRKCAD_BIN_INSTALL_DIR}
- )
- endif(WIN32)
+target_link_libraries(xtrkcad-lib
+ PRIVATE
+ cJSON
+ dynstring
+ xtrkcad-cornu
+ xtrkcad-wlib
+)
-endif(XTRKCAD_CREATE_SVG)
+if(UNIX AND NOT APPLE)
+ target_link_libraries(xtrkcad-lib PRIVATE ${LIBZIP_LIBRARY} ${LIBZIP_LIBRARIES} ${ZLIB_LIBRARY})
+else()
+ target_link_libraries(xtrkcad-lib
+ PRIVATE
+ Libzip::Libzip
+ FreeImage::FreeImage
+ Zlib::Zlib)
+endif()
-INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
-INCLUDE_DIRECTORIES(${XTrkCAD_BINARY_DIR})
-INCLUDE_DIRECTORIES(${help_BINARY_DIR})
-INCLUDE_DIRECTORIES(${wlib_SOURCE_DIR}/include)
-include_directories(${FREEIMAGE_INCLUDE_PATH})
-INCLUDE_DIRECTORIES(${LIBZIP_INCLUDE_DIR_ZIP})
-INCLUDE_DIRECTORIES(${CJSON_INCLUDE})
+#
+# Start building the main program itself
+#
+add_executable(${XTRKCAD_BIN} WIN32 "" )
-LINK_DIRECTORIES(${GTK_LIBRARY_DIRS})
-LINK_DIRECTORIES(${GTK_WEBKIT_LIBRARY_DIRS})
-LINK_DIRECTORIES(${LIBZIP_LIBZIP_LIBRARY})
+# if SVG export is built and source files and dependency on MiniXML
-ADD_LIBRARY(xtrkcad-lib ${SOURCES})
+if(XTRKCAD_CREATE_SVG)
+ target_sources(xtrkcad-lib
+ PRIVATE
+ svgformat.c
+ svgoutput.c
+ )
-# This ensures that messages.h has been generated before we build xtrkcad-lib
-ADD_DEPENDENCIES(xtrkcad-lib Help)
+ if(WIN32)
+ target_link_libraries(xtrkcad-lib
+ PRIVATE
+ MiniXML::mxml
+ )
+ endif()
+ if(UNIX)
+ if (APPLE OR NOT ${MINIXML_STATIC_LIBRARY})
+ target_link_libraries(xtrkcad-lib
+ PRIVATE
+ MiniXML::mxml
+ )
+ else()
+ target_link_libraries(xtrkcad ${MINIXML_STATIC_LIBRARY})
+ target_link_libraries(xtrkcad "pthread")
+ endif()
+ endif()
+endif()
-TARGET_LINK_LIBRARIES(xtrkcad xtrkcad-lib)
-TARGET_LINK_LIBRARIES(xtrkcad xtrkcad-wlib)
-TARGET_LINK_LIBRARIES(xtrkcad xtrkcad-cornu)
-TARGET_LINK_LIBRARIES(xtrkcad dynstring)
-if(XTRKCAD_CREATE_SVG)
-IF(UNIX)
- if (NOT APPLE)
- target_link_libraries(xtrkcad ${MINIXML_STATIC_LIBRARY})
- target_link_libraries(xtrkcad "pthread")
- else(NOT APPLE)
- target_link_libraries(xtrkcad ${MINIXML_LIBRARY})
- endif(NOT APPLE)
-ELSE(UNIX)
- target_link_libraries(xtrkcad ${MINIXML_STATIC_LIBRARY})
-ENDIF(UNIX)
-endif(XTRKCAD_CREATE_SVG)
-
-IF(UNIX AND NOT APPLE)
-target_link_libraries(xtrkcad ${LIBZIP_LIBRARY} ${LIBZIP_LIBRARIES} ${ZLIB_LIBRARY})
-ELSE(UNIX AND NOT APPLE)
-target_link_libraries(xtrkcad ${LIBZIP_LIBRARY} ${LIBZIP_LIBRARIES})
-ENDIF(UNIX AND NOT APPLE)
-
-ADD_EXECUTABLE(mkturnout
- ${LIN_SOURCES}
- ctodesgn.c
+target_sources(${XTRKCAD_BIN}
+ PRIVATE
+ misc.c
+ ${messagefile_BINARY_DIR}/bllnhlp.c
+ xtrkcad.rc
+)
+add_dependencies(${XTRKCAD_BIN}
+ balloonhelp
+ msgfiles
+ genbitmaps)
+
+target_include_directories(${XTRKCAD_BIN}
+ PRIVATE
+ ${messagefile_BINARY_DIR}
+)
+
+target_link_libraries(${XTRKCAD_BIN}
+ PRIVATE
+ xtrkcad-wlib
+ xtrkcad-lib
+)
+
+#
+# Create mkturnout utility
+#
+add_executable(mkturnout
+ ctodesgn.c
utility.c
+ trkendpt.c
+)
+set_target_properties(mkturnout PROPERTIES COMPILE_FLAGS -DMKTURNOUT)
+set_target_properties(mkturnout PROPERTIES FOLDER "Param Files" )
- )
-SET_TARGET_PROPERTIES(mkturnout PROPERTIES COMPILE_FLAGS -DMKTURNOUT)
+target_include_directories(mkturnout
+ PRIVATE
+ ${messagefile_BINARY_DIR}
+)
-TARGET_LINK_LIBRARIES(mkturnout xtrkcad-cornu)
+target_link_libraries(mkturnout
+ PRIVATE
+ xtrkcad-wlib
+)
-IF(NOT WIN32)
- TARGET_LINK_LIBRARIES(mkturnout m)
- TARGET_LINK_LIBRARIES(xtrkcad m)
+add_dependencies(mkturnout
+ msgfiles
+ lines
+)
+
+if(NOT WIN32)
+ target_link_libraries(mkturnout
+ PRIVATE
+ m
+ )
+ target_link_libraries(${XTRKCAD_BIN}
+ PRIVATE
+ m
+ )
# Link libintl for systems where it is a separate library
find_library( INTL_LIBRARY intl )
if(INTL_LIBRARY)
- target_link_libraries( mkturnout ${INTL_LIBRARY} )
- endif(INTL_LIBRARY)
-ELSE(NOT WIN32)
- TARGET_LINK_LIBRARIES(mkturnout xtrkcad-wlib)
-
+ target_link_libraries( mkturnout
+ PRIVATE
+ ${INTL_LIBRARY}
+ )
+ endif()
+else()
# copy dlls into the build dir for easier debugging
- add_custom_command(
- TARGET xtrkcad POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy
- ${FREEIMAGE_SHAREDLIB}
- ${CMAKE_CURRENT_BINARY_DIR}
- )
-
- add_custom_command(
- TARGET xtrkcad POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy
- ${LIBZIP_SHAREDLIB}
- ${CMAKE_CURRENT_BINARY_DIR}
- )
-
- add_custom_command(
- TARGET xtrkcad POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy
- ${ZLIB_SHAREDLIB}
- ${CMAKE_CURRENT_BINARY_DIR}
- )
-
+ COPYDLLTOBUILD(${FREEIMAGE_SHAREDLIB})
+# COPYDLLTOBUILD(${LIBZIP_SHAREDLIB})
+# COPYDLLTOBUILD(${ZLIB_SHAREDLIB})
+ set(ENV{path} "${CMAKE_CURRENT_BINARY_DIR};$ENV{PATH}")
# add dll to install package
- INSTALL(
- FILES
- ${LIBZIP_SHAREDLIB}
+ install(
+ FILES ${LIBZIP_SHAREDLIB}
DESTINATION ${XTRKCAD_BIN_INSTALL_DIR}
)
- INSTALL(FILES
- ${ZLIB_SHAREDLIB}
+ install(
+ FILES ${ZLIB_SHAREDLIB}
DESTINATION ${XTRKCAD_BIN_INSTALL_DIR}
)
- # Copy program PDB file
- INSTALL(
- FILES $<TARGET_PDB_FILE:xtrkcad>
- DESTINATION ${XTRKCAD_BIN_INSTALL_DIR} OPTIONAL
+ # Copy program PDB file
+ install(
+ FILES $<TARGET_PDB_FILE:xtrkcad>
+ DESTINATION ${XTRKCAD_BIN_INSTALL_DIR}
+ OPTIONAL
)
-ENDIF(NOT WIN32)
+endif()
# for testing only, should be IF(APPLE) ...
-IF(APPLE)
- ADD_EXECUTABLE( helphelper helphelper.c )
- FIND_LIBRARY(COREFOUNDATION_LIBRARY CoreFoundation)
- FIND_LIBRARY(CARBON_LIBRARY Carbon)
- TARGET_lINK_LIBRARIES(helphelper ${COREFOUNDATION_LIBRARY} ${CARBON_LIBRARY})
- INSTALL(
+if(APPLE)
+ add_executable( helphelper helphelper.c )
+ find_library(COREFOUNDATION_LIBRARY CoreFoundation)
+ find_library(CARBON_LIBRARY Carbon)
+ target_link_libraries(helphelper ${COREFOUNDATION_LIBRARY} ${CARBON_LIBRARY})
+ install(
TARGETS helphelper
RUNTIME DESTINATION ${XTRKCAD_BIN_INSTALL_DIR}
)
-ENDIF(APPLE)
+endif()
-INSTALL(
- TARGETS xtrkcad
+install(
+ TARGETS ${XTRKCAD_BIN}
RUNTIME DESTINATION ${XTRKCAD_BIN_INSTALL_DIR}
- )
+)
if(XTRKCAD_TESTING AND CMOCKA_FOUND)
add_subdirectory( unittest )
diff --git a/app/bin/acclkeys.h b/app/bin/acclkeys.h
index d8c59d3..48ef6bb 100644
--- a/app/bin/acclkeys.h
+++ b/app/bin/acclkeys.h
@@ -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
*/
/*
@@ -62,6 +62,7 @@
#define ACCL_DELETE (WCTL+'d')
#define ACCL_TUNNEL (WCTL+WSHIFT+'t')
#define ACCL_BRIDGE (0)
+#define ACCL_ROADBED (0)
#define ACCL_TIES (0)
#define ACCL_HNDLDTO (WCTL+WSHIFT+'i')
#define ACCL_TEXT (WCTL+WSHIFT+'x')
@@ -124,6 +125,7 @@
#define ACCL_IMPORT (WALT+WCTL+'i')
#define ACCL_IMPORT_MOD (0)
#define ACCL_EXPORTDXF (0)
+#define ACCL_EXPORTSVG (0)
#define ACCL_LOOSEN (WCTL+WSHIFT+'k')
#define ACCL_GROUP (WCTL+WSHIFT+'g')
#define ACCL_UNGROUP (WCTL+WSHIFT+'u')
diff --git a/app/bin/appdefaults.c b/app/bin/appdefaults.c
index e5cff8b..0e1898d 100644
--- a/app/bin/appdefaults.c
+++ b/app/bin/appdefaults.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 <wchar.h>
@@ -28,28 +28,28 @@
#include "paths.h"
enum defaultTypes {
- INTEGERCONSTANT,
- FLOATCONSTANT,
- STRINGCONSTANT,
- INTEGERFUNCTION,
- FLOATFUNCTION,
- STRINGFUNCTION
+ INTEGERCONSTANT,
+ FLOATCONSTANT,
+ STRINGCONSTANT,
+ INTEGERFUNCTION,
+ FLOATFUNCTION,
+ STRINGFUNCTION
};
struct appDefault {
- char *defaultKey; /**< the key used to access the value */
- bool wasUsed; /**< value has already been used on this run */
- enum defaultTypes
- valueType; /**< type of default, constant or pointer to a function */
- union {
- int intValue;
- double floatValue;
- char *stringValue;
- int (*intFunction)(struct appDefault *, void *);
- double (*floatFunction)(struct appDefault *, void *);
- char *(*stringFunction)(struct appDefault *, void *);
- } defaultValue;
- void *additionalData;
+ char *defaultKey; /**< the key used to access the value */
+ bool wasUsed; /**< value has already been used on this run */
+ enum defaultTypes
+ valueType; /**< type of default, constant or pointer to a function */
+ union {
+ int intValue;
+ double floatValue;
+ char *stringValue;
+ int (*intFunction)(struct appDefault *, void *);
+ double (*floatFunction)(struct appDefault *, void *);
+ char *(*stringFunction)(struct appDefault *, void *);
+ } defaultValue;
+ void *additionalData;
};
static int GetLocalMeasureSystem(struct appDefault *ptrDefault,
@@ -63,7 +63,7 @@ static double GetLocalRoomSize(struct appDefault *ptrDefault,
static char *GetParamFullPath(struct appDefault *ptrDefault,
void *additionalData);
static char *GetParamPrototype(struct appDefault *ptrDefault,
- void *additionalData);
+ void *additionalData);
/**
* List of application default settings. As this is searched by binary search, the list has to be kept sorted
@@ -73,46 +73,51 @@ static char *GetParamPrototype(struct appDefault *ptrDefault,
struct appDefault xtcDefaults[] = {
{ "DialogItem.cmdopt-preselect", 0, INTEGERCONSTANT,{ .intValue = 1 } }, /**< default command is select */
- { "DialogItem.cmdopt-rightclickmode", 0, INTEGERCONSTANT,{ .intValue = 1 } }, /**< swap default to context */
+ { "DialogItem.cmdopt-rightclickmode", 0, INTEGERCONSTANT,{ .intValue = 1 } }, /**< swap default to context */
{ "DialogItem.cmdopt-selectmode", 0, INTEGERCONSTANT,{ .intValue = 0 } }, /**< 'Only' mode */
{ "DialogItem.cmdopt-selectzero", 0, INTEGERCONSTANT,{ .intValue = 1 } }, /**< 'On' mode */
{ "DialogItem.grid-horzenable", 0, INTEGERCONSTANT, { .intValue = 0 }},
{ "DialogItem.grid-vertenable", 0, INTEGERCONSTANT,{ .intValue = 0 } },
{ "DialogItem.pref-dstfmt", 0, INTEGERFUNCTION,{ .intFunction = GetLocalDistanceFormat } }, /**< number format for distances */
- { "DialogItem.pref-units", 0, INTEGERFUNCTION,{ .intFunction = GetLocalMeasureSystem } }, /**< default unit depends on region */
+ { "DialogItem.pref-units", 0, INTEGERFUNCTION,{ .intFunction = GetLocalMeasureSystem } }, /**< default unit depends on region */
{ "DialogItem.rgbcolor-exception", 0, INTEGERCONSTANT, { .intValue = 15923462 }}, /**< rich yellow as exception color */
{ "Parameter File Map.British stock", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath }, "br.xtp" },
{ "Parameter File Map.European stock", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath }, "eu.xtp" },
- { "Parameter File Map.NMRA RP12-25 Feb 2015 O scale Turnouts", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath }, "nmra-o.xtp" },
- { "Parameter File Map.NMRA RP12-27 Feb 2015 S Scale Turnouts", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath }, "nmra-s.xtp" },
- { "Parameter File Map.NMRA RP12-31 Feb 2015 HO Scale Turnouts", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath }, "nmra-ho.xtp" },
- { "Parameter File Map.NMRA RP12-33 Feb 2015 TT Scale Turnouts", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath }, "nmra-tt.xtp" },
- { "Parameter File Map.NMRA RP12-35 Feb 2015 N Scale Turnouts", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath }, "nmra-n.xtp" },
- { "Parameter File Map.NMRA RP12-37 Feb 2015 Z scale Turnouts", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath }, "nmra-z.xtp" },
+ { "Parameter File Map.NMRA RP-12.25 Feb 2015 O scale Turnouts", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath }, "nmra-o.xtp" },
+ { "Parameter File Map.NMRA RP-12.27 Feb 2015 S Scale Turnouts", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath }, "nmra-s.xtp" },
+ { "Parameter File Map.NMRA RP-12.31 Feb 2015 HO Scale Turnouts", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath }, "nmra-ho.xtp" },
+ { "Parameter File Map.NMRA RP-12.33 Feb 2015 TT Scale Turnouts", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath }, "nmra-tt.xtp" },
+ { "Parameter File Map.NMRA RP-12.35 Feb 2015 N Scale Turnouts", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath }, "nmra-n.xtp" },
+ { "Parameter File Map.NMRA RP-12.37 Feb 2015 Z scale Turnouts", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath }, "nmra-z.xtp" },
{ "Parameter File Map.North American Prototypes", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath }, "protoam.xtp" },
- { "Parameter File Map.Trees", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath } , "trees.xtp" },
+ { "Parameter File Map.Trees", 0, STRINGFUNCTION,{ .stringFunction = GetParamFullPath }, "trees.xtp" },
{ "Parameter File Names.File1", 0, STRINGFUNCTION,{ .stringFunction = GetParamPrototype }},
{ "Parameter File Names.File2", 0, STRINGCONSTANT,{ .stringValue = "Trees" } },
- { "Parameter File Names.File3", 0, STRINGCONSTANT,{ .stringValue = "NMRA RP12-37 Feb 2015 Z scale Turnouts" } },
- { "Parameter File Names.File4", 0, STRINGCONSTANT,{ .stringValue = "NMRA RP12-35 Feb 2015 N Scale Turnouts" } },
- { "Parameter File Names.File5", 0, STRINGCONSTANT,{ .stringValue = "NMRA RP12-33 Feb 2015 TT Scale Turnouts" } },
- { "Parameter File Names.File6", 0, STRINGCONSTANT,{ .stringValue = "NMRA RP12-31 Feb 2015 HO Scale Turnouts" } },
- { "Parameter File Names.File7", 0, STRINGCONSTANT,{ .stringValue = "NMRA RP12-27 Feb 2015 S Scale Turnouts" } },
- { "Parameter File Names.File8", 0, STRINGCONSTANT,{ .stringValue = "NMRA RP12-25 Feb 2015 O scale Turnouts" } },
- { "draw.roomsizeX", 0, FLOATFUNCTION, {.floatFunction = GetLocalRoomSize }}, /**< layout width */
- { "draw.roomsizeY", 0, FLOATFUNCTION,{ .floatFunction = GetLocalRoomSize } }, /**< layout depth */
- { "misc.scale", 0, STRINGFUNCTION, { .stringFunction = GetLocalPopularScale}}, /**< the (probably) most popular scale for a region */
+ { "Parameter File Names.File3", 0, STRINGCONSTANT,{ .stringValue = "NMRA RP-12.37 Feb 2015 Z scale Turnouts" } },
+ { "Parameter File Names.File4", 0, STRINGCONSTANT,{ .stringValue = "NMRA RP-12.35 Feb 2015 N Scale Turnouts" } },
+ { "Parameter File Names.File5", 0, STRINGCONSTANT,{ .stringValue = "NMRA RP-12.33 Feb 2015 TT Scale Turnouts" } },
+ { "Parameter File Names.File6", 0, STRINGCONSTANT,{ .stringValue = "NMRA RP-12.31 Feb 2015 HO Scale Turnouts" } },
+ { "Parameter File Names.File7", 0, STRINGCONSTANT,{ .stringValue = "NMRA RP-12.27 Feb 2015 S Scale Turnouts" } },
+ { "Parameter File Names.File8", 0, STRINGCONSTANT,{ .stringValue = "NMRA RP-12.25 Feb 2015 O scale Turnouts" } },
+ { "draw.roomsizeX", 0, FLOATFUNCTION, {.floatFunction = GetLocalRoomSize }}, /**< layout width */
+ { "draw.roomsizeY", 0, FLOATFUNCTION,{ .floatFunction = GetLocalRoomSize } }, /**< layout depth */
+ { "misc.scale", 0, STRINGFUNCTION, { .stringFunction = GetLocalPopularScale}}, /**< the (probably) most popular scale for a region */
};
#define DEFAULTCOUNT COUNT(xtcDefaults)
static long bFirstRun; /**< TRUE if appl is run the first time */
-static char regionCode[3]; /**< will be initialized to the locale's region code */
+static char
+regionCode[3]; /**< will be initialized to the locale's region code */
-static wBool_t(*GetIntegerPref)(const char *, const char *, long *, long) = wPrefGetIntegerExt; /**< pointer to active integer pref getter */
-static wBool_t(*GetFloatPref)(const char *, const char *, double *, double) = wPrefGetFloatExt; /**< pointer to active float pref getter */
-static char *(*GetStringPref)(const char *, const char *) = wPrefGetStringExt; /**< pointer to active string pref getter */
+static wBool_t(*GetIntegerPref)(const char *, const char *, long *,
+ long) = wPrefGetIntegerExt; /**< pointer to active integer pref getter */
+static wBool_t(*GetFloatPref)(const char *, const char *, double *,
+ double) = wPrefGetFloatExt; /**< pointer to active float pref getter */
+static char *(*GetStringPref)(const char *,
+ const char *) =
+ wPrefGetStringExt; /**< pointer to active string pref getter */
/**
* A recursive binary search function. It returns location of x in
@@ -128,32 +133,32 @@ static char *(*GetStringPref)(const char *, const char *) = wPrefGetStringExt;
static int binarySearch(struct appDefault arr[], int l, int r, char *key)
{
- if (r >= l) {
- int mid = l + (r - l) / 2;
- int res = strcmp(key, arr[mid].defaultKey);
-
- // If the element is present at the middle itself
- if (!res) {
- return mid;
- }
-
- // If the array size is 1
- if (r == 0) {
- return -1;
- }
-
- // If element is smaller than mid, then it can only be present
- // in left subarray
- if (res < 0) {
- return binarySearch(arr, l, mid - 1, key);
- }
-
- // Else the element can only be present in right subarray
- return binarySearch(arr, mid + 1, r, key);
- }
-
- // We reach here when element is not present in array
- return -1;
+ if (r >= l) {
+ int mid = l + (r - l) / 2;
+ int res = strcmp(key, arr[mid].defaultKey);
+
+ // If the element is present at the middle itself
+ if (!res) {
+ return mid;
+ }
+
+ // If the array size is 1
+ if (r == 0) {
+ return -1;
+ }
+
+ // If element is smaller than mid, then it can only be present
+ // in left subarray
+ if (res < 0) {
+ return binarySearch(arr, l, mid - 1, key);
+ }
+
+ // Else the element can only be present in right subarray
+ return binarySearch(arr, mid + 1, r, key);
+ }
+
+ // We reach here when element is not present in array
+ return -1;
}
/**
@@ -168,20 +173,20 @@ struct appDefault *
FindDefault(struct appDefault *defaultValues, const char *section,
const char *name)
{
- char *searchString = malloc(strlen(section) + strlen(name) +
- 2); //includes separator and terminating \0
- int res;
- sprintf(searchString, "%s.%s", section, name);
-
- res = binarySearch(defaultValues, 0, DEFAULTCOUNT-1, searchString);
- free(searchString);
-
- if (res != -1 && defaultValues[res].wasUsed == FALSE) {
- defaultValues[res].wasUsed = TRUE;
- return (defaultValues + res);
- } else {
- return (NULL);
- }
+ char *searchString = malloc(strlen(section) + strlen(name) +
+ 2); //includes separator and terminating \0
+ int res;
+ sprintf(searchString, "%s.%s", section, name);
+
+ res = binarySearch(defaultValues, 0, DEFAULTCOUNT-1, searchString);
+ free(searchString);
+
+ if (res != -1 && defaultValues[res].wasUsed == FALSE) {
+ defaultValues[res].wasUsed = TRUE;
+ return (defaultValues + res);
+ } else {
+ return (NULL);
+ }
}
/**
* Get the application's default region code. On Windows, the system's API is used.
@@ -191,32 +196,32 @@ FindDefault(struct appDefault *defaultValues, const char *section,
static void
InitializeRegionCode(void)
{
- strcpy(regionCode, "US");
+ strcpy(regionCode, "US");
// TODO Move this to wlib
#ifdef WINDOWS
- {
- LCID lcid;
- char iso3166[10];
-
- lcid = GetThreadLocale();
- GetLocaleInfo(lcid, LOCALE_SISO3166CTRYNAME, iso3166, sizeof(iso3166));
- strncpy(regionCode, iso3166, 2);
- }
+ {
+ LCID lcid;
+ char iso3166[10];
+
+ lcid = GetThreadLocale();
+ GetLocaleInfo(lcid, LOCALE_SISO3166CTRYNAME, iso3166, sizeof(iso3166));
+ strncpy(regionCode, iso3166, 2);
+ }
#else
- {
- char *pLang;
- pLang = getenv("LANG");
-
- if (pLang) {
- char *ptr;
- ptr = strpbrk(pLang, "_-");
-
- if (ptr) {
- strncpy(regionCode, ptr + 1, 2);
- }
- }
- }
+ {
+ char *pLang;
+ pLang = getenv("LANG");
+
+ if (pLang) {
+ char *ptr;
+ ptr = strpbrk(pLang, "_-");
+
+ if (ptr) {
+ strncpy(regionCode, ptr + 1, 2);
+ }
+ }
+ }
#endif
}
@@ -226,7 +231,7 @@ InitializeRegionCode(void)
static bool UseMetric()
{
return ( strcmp( regionCode, "US" ) != 0 &&
- strcmp( regionCode, "CA" ) != 0 );
+ strcmp( regionCode, "CA" ) != 0 );
}
/**
* For the US the classical 4x8 sheet is used as default size. in the metric world 1,25x2,0m is used.
@@ -235,15 +240,15 @@ static bool UseMetric()
static double
GetLocalRoomSize(struct appDefault *ptrDefault, void *data)
{
- if (!strcmp(ptrDefault->defaultKey, "draw.roomsizeY")) {
- return (UseMetric() ? 125.0/2.54 : 48);
- }
+ if (!strcmp(ptrDefault->defaultKey, "draw.roomsizeY")) {
+ return (UseMetric() ? 125.0/2.54 : 48);
+ }
- if (!strcmp(ptrDefault->defaultKey, "draw.roomsizeX")) {
- return (UseMetric() ? 200.0 / 2.54 : 96);
- }
+ if (!strcmp(ptrDefault->defaultKey, "draw.roomsizeX")) {
+ return (UseMetric() ? 200.0 / 2.54 : 96);
+ }
- return (0.0); // should never get here
+ return (0.0); // should never get here
}
/**
@@ -253,7 +258,7 @@ GetLocalRoomSize(struct appDefault *ptrDefault, void *data)
static char *
GetLocalPopularScale(struct appDefault *ptrDefault, void *data)
{
- return (strcmp(regionCode, "GB") ? "HO" : "OO");
+ return (strcmp(regionCode, "GB") ? "HO" : "OO");
}
/**
@@ -262,7 +267,7 @@ GetLocalPopularScale(struct appDefault *ptrDefault, void *data)
static int
GetLocalMeasureSystem(struct appDefault *ptrDefault, void *data)
{
- return (UseMetric() ? 1 : 0);
+ return (UseMetric() ? 1 : 0);
}
/**
@@ -271,18 +276,19 @@ GetLocalMeasureSystem(struct appDefault *ptrDefault, void *data)
static int
GetLocalDistanceFormat(struct appDefault *ptrDefault, void *data)
{
- return (UseMetric() ? 8 : 4);
+ return (UseMetric() ? 8 : 4);
}
/**
-* Prototype definitions currently only exist for US and British. So US
-* is assumed to be the default.
+* Prototype definitions currently only exist for US and British. So US
+* is assumed to be the default.
*/
static char*
GetParamPrototype(struct appDefault *ptrDefault, void *additionalData)
{
- return (strcmp(regionCode, "GB") ? "North American Prototypes" : "British stock");
+ return (strcmp(regionCode,
+ "GB") ? "North American Prototypes" : "British stock");
}
/**
@@ -291,9 +297,9 @@ GetParamPrototype(struct appDefault *ptrDefault, void *additionalData)
static char *
GetParamFullPath(struct appDefault *ptrDefault, void *additionalData)
{
- char *str;
- MakeFullpath(&str, libDir, PARAM_SUBDIR, (char*)additionalData, I2VP(0));
- return str;
+ char *str;
+ MakeFullpath(&str, libDir, PARAM_SUBDIR, (char*)additionalData, I2VP(0));
+ return str;
}
@@ -302,19 +308,21 @@ GetParamFullPath(struct appDefault *ptrDefault, void *additionalData)
* allows to switch from the extended default version to the basic implementation.
*/
-wBool_t
-wPrefGetInteger(const char *section, const char *name, long *result, long defaultValue)
+wBool_t
+wPrefGetInteger(const char *section, const char *name, long *result,
+ long defaultValue)
{
return GetIntegerPref(section, name, result, defaultValue);
}
wBool_t
-wPrefGetFloat(const char *section, const char *name, double *result, double defaultValue)
+wPrefGetFloat(const char *section, const char *name, double *result,
+ double defaultValue)
{
return GetFloatPref(section, name, result, defaultValue);
}
-char *
+char *
wPrefGetString(const char *section, const char *name)
{
return GetStringPref(section, name);
@@ -334,20 +342,20 @@ wBool_t
wPrefGetIntegerExt(const char *section, const char *name, long *result,
long defaultValue)
{
- struct appDefault *thisDefault;
+ struct appDefault *thisDefault;
- thisDefault = FindDefault(xtcDefaults, section, name);
+ thisDefault = FindDefault(xtcDefaults, section, name);
- if (thisDefault) {
- if (thisDefault->valueType == INTEGERCONSTANT) {
- defaultValue = thisDefault->defaultValue.intValue;
- } else {
- defaultValue = (thisDefault->defaultValue.intFunction)(thisDefault,
- thisDefault->additionalData);
- }
- }
+ if (thisDefault) {
+ if (thisDefault->valueType == INTEGERCONSTANT) {
+ defaultValue = thisDefault->defaultValue.intValue;
+ } else {
+ defaultValue = (thisDefault->defaultValue.intFunction)(thisDefault,
+ thisDefault->additionalData);
+ }
+ }
- return (wPrefGetIntegerBasic(section, name, result, defaultValue));
+ return (wPrefGetIntegerBasic(section, name, result, defaultValue));
}
/**
@@ -365,20 +373,20 @@ wBool_t
wPrefGetFloatExt(const char *section, const char *name, double *result,
double defaultValue)
{
- struct appDefault *thisDefault;
+ struct appDefault *thisDefault;
- thisDefault = FindDefault(xtcDefaults, section, name);
+ thisDefault = FindDefault(xtcDefaults, section, name);
- if (thisDefault) {
- if (thisDefault->valueType == FLOATCONSTANT) {
- defaultValue = thisDefault->defaultValue.floatValue;
- } else {
- defaultValue = (thisDefault->defaultValue.floatFunction)(thisDefault,
- thisDefault->additionalData);
- }
- }
+ if (thisDefault) {
+ if (thisDefault->valueType == FLOATCONSTANT) {
+ defaultValue = thisDefault->defaultValue.floatValue;
+ } else {
+ defaultValue = (thisDefault->defaultValue.floatFunction)(thisDefault,
+ thisDefault->additionalData);
+ }
+ }
- return (wPrefGetFloatBasic(section, name, result, defaultValue));
+ return (wPrefGetFloatBasic(section, name, result, defaultValue));
}
/**
@@ -392,37 +400,38 @@ wPrefGetFloatExt(const char *section, const char *name, double *result,
char *
wPrefGetStringExt(const char *section, const char *name)
{
- struct appDefault *thisDefault;
-
- thisDefault = FindDefault(xtcDefaults, section, name);
-
- if (thisDefault) {
- char *prefString;
- char *defaultValue;
-
- if (thisDefault->valueType == STRINGCONSTANT) {
- defaultValue = thisDefault->defaultValue.stringValue;
- } else {
- defaultValue = (thisDefault->defaultValue.stringFunction)(thisDefault,
- thisDefault->additionalData);
- }
-
- prefString = (char *)wPrefGetStringBasic(section, name);
- return (prefString ? prefString : defaultValue);
- } else {
- return ((char *)wPrefGetStringBasic(section, name));
- }
+ struct appDefault *thisDefault;
+
+ thisDefault = FindDefault(xtcDefaults, section, name);
+
+ if ( thisDefault == NULL ) {
+ // Either we don't have a default value or we've already fetched it
+ return ((char *)wPrefGetStringBasic(section, name));
+ }
+
+ char *prefString;
+ char *defaultValue;
+
+ if (thisDefault->valueType == STRINGCONSTANT) {
+ defaultValue = thisDefault->defaultValue.stringValue;
+ } else {
+ defaultValue = (thisDefault->defaultValue.stringFunction)(thisDefault,
+ thisDefault->additionalData);
+ }
+ // Next call will get value from Prefs
+ wPrefSetString( section, name, defaultValue );
+ return (defaultValue);
}
/**
* Initialize the application default system. The flag firstrun is used to find
* out whether the application was run before. This is accomplished by trying
- * to read it from the configuration file. As it is only written after this
+ * to read it from the configuration file. As it is only written after this
* test, it can never be found on the first run of the application ie. when the
* configuration file does not exist yet.
*/
-void
+void
InitAppDefaults(void)
{
wPrefGetIntegerBasic( "misc", "firstrun", &bFirstRun, TRUE);
diff --git a/app/bin/archive.c b/app/bin/archive.c
index 430db49..7b9d0e5 100644
--- a/app/bin/archive.c
+++ b/app/bin/archive.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 <fcntl.h>
@@ -28,10 +28,10 @@
#include "directory.h"
#include "dynstring.h"
#include "misc.h"
-#include "misc2.h"
#include "paths.h"
#include "include/utf8convert.h"
#include "common-ui.h"
+#include "fileio.h"
int log_zip = 0;
@@ -45,7 +45,7 @@ int log_zip = 0;
// char *tempBuffer = MyMalloc( cnt );
// char *destBuffer = MyMalloc( cnt );
//
-// //// find the
+// //// find the
// //cnt = MultiByteToWideChar(CP_ACP,
// // 0,
// // nativeString,
@@ -91,33 +91,33 @@ int log_zip = 0;
char *
GetZipDirectoryName(enum ArchiveOps op)
{
- char *opDesc;
- char *directory;
- DynString zipDirectory;
+ char *opDesc;
+ char *directory;
+ DynString zipDirectory;
DynStringMalloc(&zipDirectory, 0);
- switch (op) {
- case ARCHIVE_READ:
- opDesc = "in";
- break;
- case ARCHIVE_WRITE:
- opDesc = "out";
- break;
- default:
- opDesc = "err";
- break;
- }
-
- DynStringPrintf(&zipDirectory,
- "%s" FILE_SEP_CHAR "zip_%s.%d",
- workingDir,
- opDesc,
- getpid());
-
- directory = strdup(DynStringToCStr(&zipDirectory));
- DynStringFree(&zipDirectory);
- return (directory);
+ switch (op) {
+ case ARCHIVE_READ:
+ opDesc = "in";
+ break;
+ case ARCHIVE_WRITE:
+ opDesc = "out";
+ break;
+ default:
+ opDesc = "err";
+ break;
+ }
+
+ DynStringPrintf(&zipDirectory,
+ "%s" FILE_SEP_CHAR "zip_%s.%d",
+ workingDir,
+ opDesc,
+ getpid());
+
+ directory = strdup(DynStringToCStr(&zipDirectory));
+ DynStringFree(&zipDirectory);
+ return (directory);
}
/*****************************************************************************
@@ -131,76 +131,76 @@ GetZipDirectoryName(enum ArchiveOps op)
*/
BOOL_T AddDirectoryToArchive(
- struct zip * za,
- const char * dir_path,
- const char * prefix)
+ struct zip * za,
+ const char * dir_path,
+ const char * prefix)
{
- char *full_path;
- char *arch_path;
- DIR *dir;
- const char * buf;
- struct stat stat_path, stat_entry;
- struct dirent *entry;
-
- zip_source_t * zt;
-
- // stat for the path
- stat(dir_path, &stat_path);
-
- // if path does not exists or is not dir - exit with status -1
- if (S_ISDIR(stat_path.st_mode) == 0) {
- NoticeMessage(MSG_NOT_DIR_FAIL,
- _("Continue"), NULL, dir_path);
- return FALSE;
- }
-
- // if not possible to read the directory for this user
- if ((dir = opendir(dir_path)) == NULL) {
- NoticeMessage(MSG_OPEN_DIR_FAIL,
- _("Continue"), NULL, dir_path);
- return FALSE;
- }
-
- // iteration through entries in the directory
- while ((entry = readdir(dir)) != NULL) {
- // skip entries "." and ".."
- if (!strcmp(entry->d_name, ".") || !strcmp(entry->d_name, "..")) {
- continue;
- }
-
- // determinate a full path of an entry
- MakeFullpath(&full_path, dir_path, entry->d_name, NULL);
-
- // stat for the entry
- stat(full_path, &stat_entry);
-
- if (prefix && prefix[0]) {
- MakeFullpath(&arch_path, prefix, entry->d_name, NULL);
- } else {
- MakeFullpath(&arch_path, entry->d_name, NULL);
- }
-
- // recursively add a nested directory
- if (S_ISDIR(stat_entry.st_mode) != 0) {
- if (zip_dir_add(za, arch_path, 0) < 0) {
- zip_error_t *ziperr = zip_get_error(za);
- buf = zip_error_strerror(ziperr);
- NoticeMessage(MSG_ZIP_DIR_ADD_FAIL,
- _("Continue"), NULL, arch_path, buf);
+ char *full_path;
+ char *arch_path;
+ DIR *dir;
+ const char * buf;
+ struct stat stat_path, stat_entry;
+ struct dirent *entry;
+
+ zip_source_t * zt;
+
+ // stat for the path
+ stat(dir_path, &stat_path);
+
+ // if path does not exists or is not dir - exit with status -1
+ if (S_ISDIR(stat_path.st_mode) == 0) {
+ NoticeMessage(MSG_NOT_DIR_FAIL,
+ _("Continue"), NULL, dir_path);
+ return FALSE;
+ }
+
+ // if not possible to read the directory for this user
+ if ((dir = opendir(dir_path)) == NULL) {
+ NoticeMessage(MSG_OPEN_DIR_FAIL,
+ _("Continue"), NULL, dir_path);
+ return FALSE;
+ }
+
+ // iteration through entries in the directory
+ while ((entry = readdir(dir)) != NULL) {
+ // skip entries "." and ".."
+ if (!strcmp(entry->d_name, ".") || !strcmp(entry->d_name, "..")) {
+ continue;
+ }
+
+ // determinate a full path of an entry
+ MakeFullpath(&full_path, dir_path, entry->d_name, NULL);
+
+ // stat for the entry
+ stat(full_path, &stat_entry);
+
+ if (prefix && prefix[0]) {
+ MakeFullpath(&arch_path, prefix, entry->d_name, NULL);
+ } else {
+ MakeFullpath(&arch_path, entry->d_name, NULL);
+ }
+
+ // recursively add a nested directory
+ if (S_ISDIR(stat_entry.st_mode) != 0) {
+ if (zip_dir_add(za, arch_path, 0) < 0) {
+ zip_error_t *ziperr = zip_get_error(za);
+ buf = zip_error_strerror(ziperr);
+ NoticeMessage(MSG_ZIP_DIR_ADD_FAIL,
+ _("Continue"), NULL, arch_path, buf);
#if DEBUG
- printf("Added Directory %s \n", arch_path);
+ printf("Added Directory %s \n", arch_path);
#endif
- }
-
- if (AddDirectoryToArchive(za, full_path, arch_path) != TRUE) {
- free(full_path);
- free(arch_path);
- return FALSE;
- }
- free(arch_path);
- continue;
- } else {
+ }
+
+ if (AddDirectoryToArchive(za, full_path, arch_path) != TRUE) {
+ free(full_path);
+ free(arch_path);
+ return FALSE;
+ }
+ free(arch_path);
+ continue;
+ } else {
char *archPathUtf8 = MyStrdup(arch_path);
char *fullPathUtf8 = MyStrdup(full_path);
#ifdef UTFCONVERT
@@ -208,30 +208,30 @@ BOOL_T AddDirectoryToArchive(
fullPathUtf8 = Convert2UTF8(fullPathUtf8);
ConvertPathForward(archPathUtf8);
#endif // UTFCONVERT
- zt = zip_source_file(za, fullPathUtf8, 0, -1);
- if (zip_file_add(za, archPathUtf8, zt, ZIP_FL_ENC_UTF_8) == -1) {
- zip_error_t *ziperr = zip_get_error(za);
- buf = zip_error_strerror(ziperr);
- NoticeMessage(MSG_ZIP_FILE_ADD_FAIL, _("Continue"), NULL, full_path, arch_path,
- buf);
- free(full_path);
- free(arch_path);
+ zt = zip_source_file(za, fullPathUtf8, 0, -1);
+ if (zip_file_add(za, archPathUtf8, zt, ZIP_FL_ENC_UTF_8) == -1) {
+ zip_error_t *ziperr = zip_get_error(za);
+ buf = zip_error_strerror(ziperr);
+ NoticeMessage(MSG_ZIP_FILE_ADD_FAIL, _("Continue"), NULL, full_path, arch_path,
+ buf);
+ free(full_path);
+ free(arch_path);
MyFree(fullPathUtf8);
MyFree(archPathUtf8);
- return FALSE;
- }
+ return FALSE;
+ }
MyFree(fullPathUtf8);
MyFree(archPathUtf8);
#if DEBUG
- printf("Added File %s", full_path);
+ printf("Added File %s", full_path);
#endif
- }
- free(arch_path);
- free(full_path);
- }
+ }
+ free(arch_path);
+ free(full_path);
+ }
- closedir(dir);
- return TRUE;
+ closedir(dir);
+ return TRUE;
}
/***********************************************************************
@@ -244,20 +244,20 @@ BOOL_T AddDirectoryToArchive(
*/
BOOL_T CreateArchive(
- const char * dir_path,
- const char * fileName)
+ const char * dir_path,
+ const char * fileName)
{
- struct zip *za;
- int err;
- char buf[100];
+ struct zip *za;
+ int err;
+ zip_error_t error;
- char * archive = MyStrdup(fileName); // Because of const char
- char * archive_name = FindFilename(archive);
- char * archive_path;
+ char * archive = MyStrdup(fileName); // Because of const char
+ char * archive_name = FindFilename(archive);
+ char * archive_path;
char * archiveUtf8;
- MakeFullpath(&archive_path, workingDir, archive_name, NULL);
-
+ MakeFullpath(&archive_path, workingDir, archive_name, NULL);
+
archiveUtf8 = MyStrdup(archive_path);
#ifdef UTFCONVERT
archiveUtf8 = Convert2UTF8(archiveUtf8);
@@ -265,43 +265,51 @@ BOOL_T CreateArchive(
MyFree(archive);
- if ((za = zip_open(archiveUtf8, ZIP_CREATE, &err)) == NULL) {
- zip_error_to_str(buf, sizeof(buf), err, errno);
- NoticeMessage(MSG_ZIP_CREATE_FAIL, _("Continue"), NULL, archiveUtf8, buf);
- MyFree(archiveUtf8);
- return FALSE;
- }
+ if ((za = zip_open(archiveUtf8, ZIP_CREATE, &err)) == NULL) {
+ zip_error_init_with_code(&error, err);
+ NoticeMessage(MSG_ZIP_CREATE_FAIL, _("Continue"), NULL, archiveUtf8,
+ zip_error_strerror(&error));
+ zip_error_fini(&error);
+ MyFree(archiveUtf8);
+ return FALSE;
+ }
#if DEBUG
- printf("====================== \n");
- printf("Started Archive %s", archive_path);
+ printf("====================== \n");
+ printf("Started Archive %s", archive_path);
#endif
- AddDirectoryToArchive(za, dir_path, "");
-
- if (zip_close(za) == -1) {
- zip_error_to_str(buf, sizeof(buf), err, errno);
- NoticeMessage(MSG_ZIP_CLOSE_FAIL, _("Continue"), NULL, archiveUtf8, buf);
- free(archive_path);
- MyFree(archiveUtf8);
- return FALSE;
- }
+ AddDirectoryToArchive(za, dir_path, "");
- unlink(fileName); //Delete Old
- if (rename(archive_path, fileName) == -1) { //Move zip into place
- NoticeMessage(MSG_ZIP_RENAME_FAIL, _("Continue"), NULL, archiveUtf8, fileName,
- strerror(errno));
+ if (zip_close(za) == -1) {
+ zip_error_init_with_code(&error, err);
+ NoticeMessage(MSG_ZIP_CLOSE_FAIL, _("Continue"), NULL, archiveUtf8,
+ zip_error_strerror(&error));
+ zip_error_fini(&error);
free(archive_path);
MyFree(archiveUtf8);
- return FALSE;
- }
+ return FALSE;
+ }
+
+ unlink(fileName); //Delete Old
+ if (rename(archive_path, fileName) == -1) { //Move zip into place
+ if ( Copyfile( archive_path, fileName ) == -1 ) {
+ NoticeMessage(MSG_ZIP_RENAME_FAIL, _("Continue"), NULL, archiveUtf8,
+ fileName, strerror(errno));
+ free(archive_path);
+ MyFree(archiveUtf8);
+ return FALSE;
+ } else {
+ unlink( archive_path );
+ }
+ }
free(archive_path);
MyFree(archiveUtf8);
#if DEBUG
- printf("Moved Archive to %s", fileName);
- printf("====================== \n");
+ printf("Moved Archive to %s", fileName);
+ printf("====================== \n");
#endif
- return TRUE;
+ return TRUE;
}
/**************************************************************************
@@ -314,21 +322,22 @@ BOOL_T CreateArchive(
* \returns TRUE if all worked
*/
BOOL_T UnpackArchiveFor(
- const char * pathName, /*Full name of archive*/
- const char * fileName, /*Layout name and extension */
- const char * tempDir, /*Directory to unpack into */
- BOOL_T file_only)
+ const char * pathName, /*Full name of archive*/
+ const char * fileName, /*Layout name and extension */
+ const char * tempDir, /*Directory to unpack into */
+ BOOL_T file_only)
{
- char *dirName;
- struct zip *za;
- struct zip_file *zf;
- struct zip_stat sb;
- char buf[100];
- int err;
- int i;
- int64_t len;
- FILE *fd;
- long long sum;
+ char *dirName;
+ struct zip *za;
+ struct zip_file *zf;
+ struct zip_stat sb;
+ char buf[100];
+ zip_error_t error;
+ int err;
+ int i;
+ int64_t len;
+ FILE *fd;
+ long long sum;
char *destBuffer = MyStrdup(pathName);
#ifdef UTFCONVERT
@@ -336,95 +345,97 @@ BOOL_T UnpackArchiveFor(
#endif // UTFCONVERT
- if ((za = zip_open(destBuffer, 0, &err)) == NULL) {
- zip_error_to_str(buf, sizeof(buf), err, errno);
- NoticeMessage(MSG_ZIP_OPEN_FAIL, _("Continue"), NULL, pathName, buf);
- fprintf(stderr, "xtrkcad: can't open xtrkcad zip archive `%s': %s \n",
- pathName, buf);
+ if ((za = zip_open(destBuffer, 0, &err)) == NULL) {
+ zip_error_init_with_code(&error, err);
+ NoticeMessage(MSG_ZIP_OPEN_FAIL, _("Continue"), NULL, pathName,
+ zip_error_strerror(&error));
+ fprintf(stderr, "xtrkcad: can't open xtrkcad zip archive `%s': %s \n",
+ pathName, zip_error_strerror(&error));
+ zip_error_fini(&error);
MyFree(destBuffer);
- return FALSE;
- }
+ return FALSE;
+ }
- for (i = 0; i < zip_get_num_entries(za, 0); i++) {
- if (zip_stat_index(za, i, 0, &sb) == 0) {
- len = strlen(sb.name);
+ for (i = 0; i < zip_get_num_entries(za, 0); i++) {
+ if (zip_stat_index(za, i, 0, &sb) == 0) {
+ len = strlen(sb.name);
#if DEBUG
- printf("==================\n");
- printf("Name: [%s], ", sb.name);
- printf("Size: [%llu], ", sb.size);
- printf("mtime: [%u]\n", (unsigned int)sb.mtime);
- printf("mtime: [%u]\n", (unsigned int)sb.mtime);
+ printf("==================\n");
+ printf("Name: [%s], ", sb.name);
+ printf("Size: [%llu], ", sb.size);
+ printf("mtime: [%u]\n", (unsigned int)sb.mtime);
+ printf("mtime: [%u]\n", (unsigned int)sb.mtime);
#endif
- LOG(log_zip, 1, ("================= \n"))
- LOG(log_zip, 1, ("Zip-Name [%s] \n", sb.name))
- LOG(log_zip, 1, ("Zip-Size [%llu] \n", sb.size))
- LOG(log_zip, 1, ("Zip-mtime [%u] \n", (unsigned int)sb.mtime))
-
- if (sb.name[len - 1] == '/' && !file_only) {
- MakeFullpath(&dirName, tempDir, &sb.name[0], NULL);
- if (SafeCreateDir(dirName) != TRUE) {
- free(dirName);
- return FALSE;
- }
- free(dirName);
- } else {
- zf = zip_fopen_index(za, i, 0);
- if (!zf) {
- NoticeMessage(MSG_ZIP_INDEX_FAIL, _("Continue"), NULL);
- fprintf(stderr, "xtrkcad zip archive open index error \n");
- return FALSE;
- }
-
- if (file_only) {
- if (strncmp(sb.name, fileName, strlen(fileName)) != 0) {
- continue; /* Ignore any other files than the one we asked for */
- }
- }
- MakeFullpath(&dirName, tempDir, &sb.name[0], NULL);
+ LOG(log_zip, 1, ("================= \n"))
+ LOG(log_zip, 1, ("Zip-Name [%s] \n", sb.name))
+ LOG(log_zip, 1, ("Zip-Size [%llu] \n", sb.size))
+ LOG(log_zip, 1, ("Zip-mtime [%u] \n", (unsigned int)sb.mtime))
+
+ if (sb.name[len - 1] == '/' && !file_only) {
+ MakeFullpath(&dirName, tempDir, &sb.name[0], NULL);
+ if (SafeCreateDir(dirName) != TRUE) {
+ free(dirName);
+ return FALSE;
+ }
+ free(dirName);
+ } else {
+ zf = zip_fopen_index(za, i, 0);
+ if (!zf) {
+ NoticeMessage(MSG_ZIP_INDEX_FAIL, _("Continue"), NULL);
+ fprintf(stderr, "xtrkcad zip archive open index error \n");
+ return FALSE;
+ }
+
+ if (file_only) {
+ if (strncmp(sb.name, fileName, strlen(fileName)) != 0) {
+ continue; /* Ignore any other files than the one we asked for */
+ }
+ }
+ MakeFullpath(&dirName, tempDir, &sb.name[0], NULL);
#ifdef UTFCONVERT
ConvertUTF8ToSystem(dirName);
#endif // UTFCONVERT
fd = fopen(dirName, "wb");
- if (!fd) {
- NoticeMessage(MSG_ZIP_FILE_OPEN_FAIL, _("Continue"), NULL, dirName,
- strerror(errno));
- free(dirName);
- return FALSE;
- }
-
- sum = 0;
- while (sum != sb.size) {
- len = zip_fread(zf, buf, 100);
- if (len < 0) {
- NoticeMessage(MSG_ZIP_READ_FAIL, _("Continue"), NULL, dirName, &sb.name[0]);
- free(dirName);
+ if (!fd) {
+ NoticeMessage(MSG_ZIP_FILE_OPEN_FAIL, _("Continue"), NULL, dirName,
+ strerror(errno));
+ free(dirName);
+ return FALSE;
+ }
+
+ sum = 0;
+ while (sum != sb.size) {
+ len = zip_fread(zf, buf, 100);
+ if (len < 0) {
+ NoticeMessage(MSG_ZIP_READ_FAIL, _("Continue"), NULL, dirName, &sb.name[0]);
+ free(dirName);
fclose(fd);
- return FALSE;
- }
- fwrite(buf, 1, (unsigned int)len, fd);
- sum += len;
- }
- fclose(fd);
- free(dirName);
- zip_fclose(zf);
- }
- } else {
- LOG(log_zip, 1, ("Zip-Unknown File[%s] Line[%d] \n", __FILE__, __LINE__))
+ return FALSE;
+ }
+ fwrite(buf, 1, (unsigned int)len, fd);
+ sum += len;
+ }
+ fclose(fd);
+ free(dirName);
+ zip_fclose(zf);
+ }
+ } else {
+ LOG(log_zip, 1, ("Zip-Unknown File[%s] Line[%d] \n", __FILE__, __LINE__))
#if DEBUG
- printf("File[%s] Line[%d]\n", __FILE__, __LINE__);
+ printf("File[%s] Line[%d]\n", __FILE__, __LINE__);
#endif
- }
- }
+ }
+ }
MyFree(destBuffer);
- if (zip_close(za) == -1) {
- NoticeMessage(MSG_ZIP_CLOSE_FAIL, _("Continue"), NULL, dirName, &sb.name[0]);
- return FALSE;
- }
- return TRUE;
+ if (zip_close(za) == -1) {
+ NoticeMessage(MSG_ZIP_CLOSE_FAIL, _("Continue"), NULL, dirName, &sb.name[0]);
+ return FALSE;
+ }
+ return TRUE;
}
diff --git a/app/bin/archive.h b/app/bin/archive.h
index 7977bc6..8c938b2 100644
--- a/app/bin/archive.h
+++ b/app/bin/archive.h
@@ -9,7 +9,9 @@ extern const char *workingDir;
struct zip;
char *GetZipDirectoryName(enum ArchiveOps op);
-BOOL_T AddDirectoryToArchive(struct zip * za, const char * dir_path, const char * prefix);
+BOOL_T AddDirectoryToArchive(struct zip * za, const char * dir_path,
+ const char * prefix);
BOOL_T CreateArchive(const char * dir_path, const char * fileName);
-BOOL_T UnpackArchiveFor(const char * pathName, const char * fileName, const char * tempDir, BOOL_T file_only);
+BOOL_T UnpackArchiveFor(const char * pathName, const char * fileName,
+ const char * tempDir, BOOL_T file_only);
#endif
diff --git a/app/bin/bdf2xtp.c b/app/bin/bdf2xtp.c
index f19ceb8..20cea11 100644
--- a/app/bin/bdf2xtp.c
+++ b/app/bin/bdf2xtp.c
@@ -17,30 +17,30 @@
#include <stdlib.h>
char helpStr[] =
-"Bdf2xtp translates .bdf files (which are source files for Winrail track\n"
-"libraries) to .xtp files (which are XTrkCad parameter files).\n"
-"Bdf2xtp is a MS-DOS command and must be in run in a DOS box under MS-Windows.\n"
-"\n"
-"Usage: bdf2xtp OPTIONS SOURCE.BDF TARGET.XTP\n"
-"\n"
-"OPTIONS:\n"
-" -c CONTENTS description of contents\n"
-" -k COLOR color of non-track segments\n"
-" -s SCALE scale of turnouts (ie. HO HOn3 N O S ... )\n"
-" -v verbose - include .bdf source as comments in .xtp file\n"
-"\n"
-"For example:\n"
-" bdf2xtp -c \"Faller HO Structures\" -k ff0000 -s HO fallerh0.bdf fallerh0.xtp\n"
-"\n"
-"Turnouts are composed of rails (which are Black) and lines. Structures are\n"
-"composed of only lines. By default lines are Purple but you change this with\n"
-"the -k optioon. The color is specified as a 6 digit hexidecimal value, where\n"
-"the first 2 digits are the Red value, the middle 2 digits are the Green value\n"
-"and the last 2 digits are the Blue value\n"
-" ff0000 Red\n"
-" 00ff00 Green\n"
-" 00ffff Yellow\n"
-;
+ "Bdf2xtp translates .bdf files (which are source files for Winrail track\n"
+ "libraries) to .xtp files (which are XTrkCad parameter files).\n"
+ "Bdf2xtp is a MS-DOS command and must be in run in a DOS box under MS-Windows.\n"
+ "\n"
+ "Usage: bdf2xtp OPTIONS SOURCE.BDF TARGET.XTP\n"
+ "\n"
+ "OPTIONS:\n"
+ " -c CONTENTS description of contents\n"
+ " -k COLOR color of non-track segments\n"
+ " -s SCALE scale of turnouts (ie. HO HOn3 N O S ... )\n"
+ " -v verbose - include .bdf source as comments in .xtp file\n"
+ "\n"
+ "For example:\n"
+ " bdf2xtp -c \"Faller HO Structures\" -k ff0000 -s HO fallerh0.bdf fallerh0.xtp\n"
+ "\n"
+ "Turnouts are composed of rails (which are Black) and lines. Structures are\n"
+ "composed of only lines. By default lines are Purple but you change this with\n"
+ "the -k optioon. The color is specified as a 6 digit hexidecimal value, where\n"
+ "the first 2 digits are the Red value, the middle 2 digits are the Green value\n"
+ "and the last 2 digits are the Blue value\n"
+ " ff0000 Red\n"
+ " 00ff00 Green\n"
+ " 00ffff Yellow\n"
+ ;
/* NOTES:
BDF files have a number of constructors for different types of turnouts
@@ -89,9 +89,9 @@ Then the list of segments is written out to the output file.
#define MAXSEG (40) /* Maximum number of segments in an object */
typedef struct { /* a co-ordinate */
- double x;
- double y;
- } coOrd;
+ double x;
+ double y;
+} coOrd;
FILE * fin; /* input file */
FILE * fout; /* output file */
@@ -107,8 +107,8 @@ long color = 0x00FF00FF;/* default color */
double normalizeAngle( double angle )
/* make sure <angle> is >= 0.0 and < 360.0 */
{
- while (angle<0) angle += 360.0;
- while (angle>=360) angle -= 360.0;
+ while (angle<0) { angle += 360.0; }
+ while (angle>=360) { angle -= 360.0; }
return angle;
}
@@ -143,8 +143,8 @@ double findAngle( coOrd p0, coOrd p1 )
{
double dx = p1.x-p0.x, dy = p1.y-p0.y;
if (small(dx) && small(dy)) {
- if (dy >=0.0) return 0.0;
- else return 180.0;
+ if (dy >=0.0) { return 0.0; }
+ else { return 180.0; }
}
return R2D(atan2( dx,dy ));
}
@@ -152,156 +152,157 @@ double findAngle( coOrd p0, coOrd p1 )
/* Where do we expect each input line? */
typedef enum {
- CLS_NULL,
- CLS_START,
- CLS_END,
- CLS_BODY
- } class_e;
+ CLS_NULL,
+ CLS_START,
+ CLS_END,
+ CLS_BODY
+} class_e;
/* Type of input line */
typedef enum {
- ACT_UNKNOWN,
- ACT_DONE,
- ACT_STRAIGHT,
- ACT_CURVE,
- ACT_TURNOUT_LEFT,
- ACT_TURNOUT_RIGHT,
- ACT_CURVEDTURNOUT_LEFT,
- ACT_CURVEDTURNOUT_RIGHT,
- ACT_THREEWAYTURNOUT,
- ACT_CROSSING_LEFT,
- ACT_CROSSING_RIGHT,
- ACT_DOUBLESLIP_LEFT,
- ACT_DOUBLESLIP_RIGHT,
- ACT_CROSSING_SYMMETRIC,
- ACT_DOUBLESLIP_SYMMETRIC,
- ACT_TURNTABLE,
- ACT_ENDTURNTABLE,
- ACT_TRANSFERTABLE,
- ACT_ENDTRANSFERTABLE,
- ACT_TRACK,
- ACT_STRUCTURE,
- ACT_ENDSTRUCTURE,
-
- ACT_FILL_POINT,
- ACT_LINE,
- ACT_CURVEDLINE,
- ACT_CIRCLE,
- ACT_DESCRIPTIONPOS,
- ACT_ARTICLENOPOS,
- ACT_CONNECTINGPOINT,
- ACT_STRAIGHTTRACK,
- ACT_CURVEDTRACK,
- ACT_STRAIGHT_BODY,
- ACT_CURVE_BODY,
- ACT_PRICE
- } action_e;
+ ACT_UNKNOWN,
+ ACT_DONE,
+ ACT_STRAIGHT,
+ ACT_CURVE,
+ ACT_TURNOUT_LEFT,
+ ACT_TURNOUT_RIGHT,
+ ACT_CURVEDTURNOUT_LEFT,
+ ACT_CURVEDTURNOUT_RIGHT,
+ ACT_THREEWAYTURNOUT,
+ ACT_CROSSING_LEFT,
+ ACT_CROSSING_RIGHT,
+ ACT_DOUBLESLIP_LEFT,
+ ACT_DOUBLESLIP_RIGHT,
+ ACT_CROSSING_SYMMETRIC,
+ ACT_DOUBLESLIP_SYMMETRIC,
+ ACT_TURNTABLE,
+ ACT_ENDTURNTABLE,
+ ACT_TRANSFERTABLE,
+ ACT_ENDTRANSFERTABLE,
+ ACT_TRACK,
+ ACT_STRUCTURE,
+ ACT_ENDSTRUCTURE,
+
+ ACT_FILL_POINT,
+ ACT_LINE,
+ ACT_CURVEDLINE,
+ ACT_CIRCLE,
+ ACT_DESCRIPTIONPOS,
+ ACT_ARTICLENOPOS,
+ ACT_CONNECTINGPOINT,
+ ACT_STRAIGHTTRACK,
+ ACT_CURVEDTRACK,
+ ACT_STRAIGHT_BODY,
+ ACT_CURVE_BODY,
+ ACT_PRICE
+} action_e;
/* input line description */
typedef struct {
- char * name; /* first token on line */
- class_e class; /* where do we expect this? */
- action_e action;/* what type of line is it */
- char *args; /* what else is on the line */
- } tokenDesc_t;
+ char * name; /* first token on line */
+ class_e class; /* where do we expect this? */
+ action_e action;/* what type of line is it */
+ char *args; /* what else is on the line */
+} tokenDesc_t;
/* first token on each line tells what kind of line it is */
tokenDesc_t tokens[] = {
- { "Straight", CLS_START, ACT_STRAIGHT, "SSNN" },
- { "EndStraight", CLS_END, ACT_DONE, NULL },
- { "Curve", CLS_START, ACT_CURVE, "SSNNN" },
- { "EndCurve", CLS_END, ACT_DONE, NULL },
- { "Turnout_Left", CLS_START, ACT_TURNOUT_LEFT, "SSN" },
- { "Turnout_Right", CLS_START, ACT_TURNOUT_RIGHT, "SSN" },
- { "EndTurnout", CLS_END, ACT_DONE, NULL },
- { "CurvedTurnout_Left", CLS_START, ACT_CURVEDTURNOUT_LEFT, "SSN" },
- { "CurvedTurnout_Right", CLS_START, ACT_CURVEDTURNOUT_RIGHT, "SSN" },
- { "ThreeWayTurnout", CLS_START, ACT_THREEWAYTURNOUT, "SSN" },
- { "Crossing_Left", CLS_START, ACT_CROSSING_LEFT, "SSNNNN" },
- { "Crossing_Right", CLS_START, ACT_CROSSING_RIGHT, "SSNNNN" },
- { "DoubleSlip_Left", CLS_START, ACT_DOUBLESLIP_LEFT, "SSNNNNN" },
- { "DoubleSlip_Right", CLS_START, ACT_DOUBLESLIP_RIGHT, "SSNNNNN" },
- { "Crossing_Symetric", CLS_START, ACT_CROSSING_SYMMETRIC, "SSNNN" },
- { "DoubleSlip_Symetric", CLS_START, ACT_DOUBLESLIP_SYMMETRIC, "SSNNNN" },
- { "EndCrossing", CLS_END, ACT_DONE, NULL },
- { "Turntable", CLS_START, ACT_TURNTABLE, "SSNNNN" },
- { "EndTurntable", CLS_END, ACT_ENDTURNTABLE, NULL },
- { "TravellingPlatform", CLS_START, ACT_TRANSFERTABLE, "SSNNNNN" },
- { "EndTravellingPlatform", CLS_END, ACT_ENDTRANSFERTABLE, NULL },
- { "Track", CLS_START, ACT_TRACK, "SSN" },
- { "EndTrack", CLS_END, ACT_DONE, NULL },
- { "Structure", CLS_START, ACT_STRUCTURE, "SS" },
- { "EndStructure", CLS_END, ACT_ENDSTRUCTURE, NULL },
-
- { "FillPoint", CLS_BODY, ACT_FILL_POINT, "NNI" },
- { "Line", CLS_BODY, ACT_LINE, "NNNN" },
- { "CurvedLine", CLS_BODY, ACT_CURVEDLINE, "NNNNN" },
- { "CurveLine", CLS_BODY, ACT_CURVEDLINE, "NNNNN" },
- { "Circle", CLS_BODY, ACT_CIRCLE, "NNN" },
- { "DescriptionPos", CLS_BODY, ACT_DESCRIPTIONPOS, "NN" },
- { "ArticleNoPos", CLS_BODY, ACT_DESCRIPTIONPOS, "NN" },
- { "ConnectingPoint", CLS_BODY, ACT_CONNECTINGPOINT, "NNN" },
- { "StraightTrack", CLS_BODY, ACT_STRAIGHTTRACK, "NNNN" },
- { "CurvedTrack", CLS_BODY, ACT_CURVEDTRACK, "NNNNN" },
- { "Straight", CLS_BODY, ACT_STRAIGHT_BODY, "N" },
- { "Curve", CLS_BODY, ACT_CURVE_BODY, "NNN" },
- { "Price", CLS_BODY, ACT_PRICE, "N" },
-
- { "Gerade", CLS_START, ACT_STRAIGHT, "SSNN" },
- { "EndGerade", CLS_END, ACT_DONE, NULL },
- { "Bogen", CLS_START, ACT_CURVE, "SSNNN" },
- { "EndBogen", CLS_END, ACT_DONE, NULL },
- { "Weiche_links", CLS_START, ACT_TURNOUT_LEFT, "SSN" },
- { "Weiche_Rechts", CLS_START, ACT_TURNOUT_RIGHT, "SSN" },
- { "EndWeiche", CLS_END, ACT_DONE, NULL },
- { "Bogenweiche_Links", CLS_START, ACT_CURVEDTURNOUT_LEFT, "SSN" },
- { "Bogenweiche_Rechts", CLS_START, ACT_CURVEDTURNOUT_RIGHT, "SSN" },
- { "Dreiwegweiche", CLS_START, ACT_THREEWAYTURNOUT, "SSN" },
- { "Kreuzung_Links", CLS_START, ACT_CROSSING_LEFT, "SSNNNN" },
- { "Kreuzung_Rechts", CLS_START, ACT_CROSSING_RIGHT, "SSNNNN" },
- { "DKW_Links", CLS_START, ACT_DOUBLESLIP_LEFT, "SSNNNNN" },
- { "DKW_Rechts", CLS_START, ACT_DOUBLESLIP_RIGHT, "SSNNNNN" },
- { "Kreuzung_Symmetrisch", CLS_START, ACT_CROSSING_SYMMETRIC, "SSNNN" },
- { "DKW_Symmetrisch", CLS_START, ACT_DOUBLESLIP_SYMMETRIC, "SSNNNN" },
- { "EndKreuzung", CLS_END, ACT_DONE, NULL },
- { "Drehscheibe", CLS_START, ACT_TURNTABLE, "SSNNNN" },
- { "EndDrehscheibe", CLS_END, ACT_ENDTURNTABLE, NULL },
- { "Schiebebuehne", CLS_START, ACT_TRANSFERTABLE, "SSNNNNN" },
- { "EndSchiebebuehne", CLS_END, ACT_ENDTRANSFERTABLE, NULL },
- { "Schiene", CLS_START, ACT_TRACK, "SSN" },
- { "EndSchiene", CLS_END, ACT_DONE, NULL },
- { "Haus", CLS_START, ACT_STRUCTURE, "SS" },
- { "EndHaus", CLS_END, ACT_ENDSTRUCTURE, NULL },
-
- { "FuellPunkt", CLS_BODY, ACT_FILL_POINT, "NNI" },
- { "Linie", CLS_BODY, ACT_LINE, "NNNN" },
- { "Bogenlinie", CLS_BODY, ACT_CURVEDLINE, "NNNNN" },
- { "Kreislinie", CLS_BODY, ACT_CIRCLE, "NNN" },
- { "BezeichnungsPos", CLS_BODY, ACT_DESCRIPTIONPOS, "NN" },
- { "ArtikelNrPos", CLS_BODY, ACT_DESCRIPTIONPOS, "NN" },
- { "Anschlusspunkt", CLS_BODY, ACT_CONNECTINGPOINT, "NNN" },
- { "GeradesGleis", CLS_BODY, ACT_STRAIGHTTRACK, "NNNN" },
- { "BogenGleis", CLS_BODY, ACT_CURVEDTRACK, "NNNNN" },
- { "Gerade", CLS_BODY, ACT_STRAIGHT_BODY, "N" },
- { "Bogen", CLS_BODY, ACT_CURVE_BODY, "NNN" },
- { "Preis", CLS_BODY, ACT_PRICE, "N" } };
+ { "Straight", CLS_START, ACT_STRAIGHT, "SSNN" },
+ { "EndStraight", CLS_END, ACT_DONE, NULL },
+ { "Curve", CLS_START, ACT_CURVE, "SSNNN" },
+ { "EndCurve", CLS_END, ACT_DONE, NULL },
+ { "Turnout_Left", CLS_START, ACT_TURNOUT_LEFT, "SSN" },
+ { "Turnout_Right", CLS_START, ACT_TURNOUT_RIGHT, "SSN" },
+ { "EndTurnout", CLS_END, ACT_DONE, NULL },
+ { "CurvedTurnout_Left", CLS_START, ACT_CURVEDTURNOUT_LEFT, "SSN" },
+ { "CurvedTurnout_Right", CLS_START, ACT_CURVEDTURNOUT_RIGHT, "SSN" },
+ { "ThreeWayTurnout", CLS_START, ACT_THREEWAYTURNOUT, "SSN" },
+ { "Crossing_Left", CLS_START, ACT_CROSSING_LEFT, "SSNNNN" },
+ { "Crossing_Right", CLS_START, ACT_CROSSING_RIGHT, "SSNNNN" },
+ { "DoubleSlip_Left", CLS_START, ACT_DOUBLESLIP_LEFT, "SSNNNNN" },
+ { "DoubleSlip_Right", CLS_START, ACT_DOUBLESLIP_RIGHT, "SSNNNNN" },
+ { "Crossing_Symetric", CLS_START, ACT_CROSSING_SYMMETRIC, "SSNNN" },
+ { "DoubleSlip_Symetric", CLS_START, ACT_DOUBLESLIP_SYMMETRIC, "SSNNNN" },
+ { "EndCrossing", CLS_END, ACT_DONE, NULL },
+ { "Turntable", CLS_START, ACT_TURNTABLE, "SSNNNN" },
+ { "EndTurntable", CLS_END, ACT_ENDTURNTABLE, NULL },
+ { "TravellingPlatform", CLS_START, ACT_TRANSFERTABLE, "SSNNNNN" },
+ { "EndTravellingPlatform", CLS_END, ACT_ENDTRANSFERTABLE, NULL },
+ { "Track", CLS_START, ACT_TRACK, "SSN" },
+ { "EndTrack", CLS_END, ACT_DONE, NULL },
+ { "Structure", CLS_START, ACT_STRUCTURE, "SS" },
+ { "EndStructure", CLS_END, ACT_ENDSTRUCTURE, NULL },
+
+ { "FillPoint", CLS_BODY, ACT_FILL_POINT, "NNI" },
+ { "Line", CLS_BODY, ACT_LINE, "NNNN" },
+ { "CurvedLine", CLS_BODY, ACT_CURVEDLINE, "NNNNN" },
+ { "CurveLine", CLS_BODY, ACT_CURVEDLINE, "NNNNN" },
+ { "Circle", CLS_BODY, ACT_CIRCLE, "NNN" },
+ { "DescriptionPos", CLS_BODY, ACT_DESCRIPTIONPOS, "NN" },
+ { "ArticleNoPos", CLS_BODY, ACT_DESCRIPTIONPOS, "NN" },
+ { "ConnectingPoint", CLS_BODY, ACT_CONNECTINGPOINT, "NNN" },
+ { "StraightTrack", CLS_BODY, ACT_STRAIGHTTRACK, "NNNN" },
+ { "CurvedTrack", CLS_BODY, ACT_CURVEDTRACK, "NNNNN" },
+ { "Straight", CLS_BODY, ACT_STRAIGHT_BODY, "N" },
+ { "Curve", CLS_BODY, ACT_CURVE_BODY, "NNN" },
+ { "Price", CLS_BODY, ACT_PRICE, "N" },
+
+ { "Gerade", CLS_START, ACT_STRAIGHT, "SSNN" },
+ { "EndGerade", CLS_END, ACT_DONE, NULL },
+ { "Bogen", CLS_START, ACT_CURVE, "SSNNN" },
+ { "EndBogen", CLS_END, ACT_DONE, NULL },
+ { "Weiche_links", CLS_START, ACT_TURNOUT_LEFT, "SSN" },
+ { "Weiche_Rechts", CLS_START, ACT_TURNOUT_RIGHT, "SSN" },
+ { "EndWeiche", CLS_END, ACT_DONE, NULL },
+ { "Bogenweiche_Links", CLS_START, ACT_CURVEDTURNOUT_LEFT, "SSN" },
+ { "Bogenweiche_Rechts", CLS_START, ACT_CURVEDTURNOUT_RIGHT, "SSN" },
+ { "Dreiwegweiche", CLS_START, ACT_THREEWAYTURNOUT, "SSN" },
+ { "Kreuzung_Links", CLS_START, ACT_CROSSING_LEFT, "SSNNNN" },
+ { "Kreuzung_Rechts", CLS_START, ACT_CROSSING_RIGHT, "SSNNNN" },
+ { "DKW_Links", CLS_START, ACT_DOUBLESLIP_LEFT, "SSNNNNN" },
+ { "DKW_Rechts", CLS_START, ACT_DOUBLESLIP_RIGHT, "SSNNNNN" },
+ { "Kreuzung_Symmetrisch", CLS_START, ACT_CROSSING_SYMMETRIC, "SSNNN" },
+ { "DKW_Symmetrisch", CLS_START, ACT_DOUBLESLIP_SYMMETRIC, "SSNNNN" },
+ { "EndKreuzung", CLS_END, ACT_DONE, NULL },
+ { "Drehscheibe", CLS_START, ACT_TURNTABLE, "SSNNNN" },
+ { "EndDrehscheibe", CLS_END, ACT_ENDTURNTABLE, NULL },
+ { "Schiebebuehne", CLS_START, ACT_TRANSFERTABLE, "SSNNNNN" },
+ { "EndSchiebebuehne", CLS_END, ACT_ENDTRANSFERTABLE, NULL },
+ { "Schiene", CLS_START, ACT_TRACK, "SSN" },
+ { "EndSchiene", CLS_END, ACT_DONE, NULL },
+ { "Haus", CLS_START, ACT_STRUCTURE, "SS" },
+ { "EndHaus", CLS_END, ACT_ENDSTRUCTURE, NULL },
+
+ { "FuellPunkt", CLS_BODY, ACT_FILL_POINT, "NNI" },
+ { "Linie", CLS_BODY, ACT_LINE, "NNNN" },
+ { "Bogenlinie", CLS_BODY, ACT_CURVEDLINE, "NNNNN" },
+ { "Kreislinie", CLS_BODY, ACT_CIRCLE, "NNN" },
+ { "BezeichnungsPos", CLS_BODY, ACT_DESCRIPTIONPOS, "NN" },
+ { "ArtikelNrPos", CLS_BODY, ACT_DESCRIPTIONPOS, "NN" },
+ { "Anschlusspunkt", CLS_BODY, ACT_CONNECTINGPOINT, "NNN" },
+ { "GeradesGleis", CLS_BODY, ACT_STRAIGHTTRACK, "NNNN" },
+ { "BogenGleis", CLS_BODY, ACT_CURVEDTRACK, "NNNNN" },
+ { "Gerade", CLS_BODY, ACT_STRAIGHT_BODY, "N" },
+ { "Bogen", CLS_BODY, ACT_CURVE_BODY, "NNN" },
+ { "Preis", CLS_BODY, ACT_PRICE, "N" }
+};
/* argument description */
typedef union {
- char * string;
- double number;
- long integer;
- } arg_t;
+ char * string;
+ double number;
+ long integer;
+} arg_t;
/* description of a curve */
typedef struct {
- char type;
- coOrd pos[2];
- double radius, a0, a1;
- coOrd center;
- } line_t;
+ char type;
+ coOrd pos[2];
+ double radius, a0, a1;
+ coOrd center;
+} line_t;
/* state info for the current object */
int curAction;
@@ -314,30 +315,30 @@ int right = 0;
/* A XTrkCad End-Point */
typedef struct {
- int busy;
- coOrd pos;
- double a;
- } endPoint_t;
+ int busy;
+ coOrd pos;
+ double a;
+} endPoint_t;
endPoint_t endPoints[MAXSEG];
endPoint_t *endPoint_p;
/* the segments */
typedef struct {
- double radius;
- coOrd pos[2];
- int mark;
- endPoint_t * ep[2];
- } segs_t;
+ double radius;
+ coOrd pos[2];
+ int mark;
+ endPoint_t * ep[2];
+} segs_t;
segs_t segs[MAXSEG];
segs_t *seg_p;
/* the segment paths */
typedef struct {
- int index;
- int count;
- int segs[MAXSEG];
- } paths_t;
+ int index;
+ int count;
+ int segs[MAXSEG];
+} paths_t;
paths_t paths[MAXSEG];
paths_t *paths_p;
@@ -345,16 +346,18 @@ int curPath[MAXSEG];
int curPathInx;
char * pathNames[] = {
- "Normal",
- "Reverse" };
+ "Normal",
+ "Reverse"
+};
int isclose( coOrd a, coOrd b )
{
if ( fabs(a.x-b.x) < 0.1 &&
- fabs(a.y-b.y) < 0.1 )
+ fabs(a.y-b.y) < 0.1 ) {
return 1;
- else
+ } else {
return 0;
+ }
}
@@ -373,22 +376,25 @@ void searchSegs( segs_t * sp, int ep )
curPath[curPathInx] = (ep==0?-((sp-segs)+1):((sp-segs)+1));
if (sp->ep[ep] != NULL) {
inx = abs(curPath[0]);
- if ( (sp-segs)+1 < inx )
+ if ( (sp-segs)+1 < inx ) {
return;
+ }
paths_p->index = 0;
paths_p->count = curPathInx+1;
- for (inx=0;inx<=curPathInx;inx++)
+ for (inx=0; inx<=curPathInx; inx++) {
paths_p->segs[inx] = curPath[inx];
+ }
paths_p++;
return;
}
curPathInx++;
for ( sp1 = segs; sp1<seg_p; sp1++ ) {
if (!sp1->mark) {
- if ( isclose( sp->pos[ep], sp1->pos[0] ) )
+ if ( isclose( sp->pos[ep], sp1->pos[0] ) ) {
searchSegs( sp1, 1 );
- else if ( isclose( sp->pos[ep], sp1->pos[1] ) )
+ } else if ( isclose( sp->pos[ep], sp1->pos[1] ) ) {
searchSegs( sp1, 0 );
+ }
}
}
curPathInx--;
@@ -424,8 +430,9 @@ void computePaths( void )
}
}
for ( sp = segs; sp<seg_p; sp++ ) {
- for ( sp1 = segs; sp1<seg_p; sp1++ )
+ for ( sp1 = segs; sp1<seg_p; sp1++ ) {
sp1->mark = 0;
+ }
curPathInx = 0;
if ( sp->ep[0] ) {
searchSegs( sp, 1 );
@@ -436,10 +443,11 @@ void computePaths( void )
pathIndex = 0;
pathCount = paths_p-paths;
while (pathCount>0) {
- if (pathIndex < 2)
+ if (pathIndex < 2) {
fprintf( fout, "\tP \"%s\"", pathNames[pathIndex] );
- else
+ } else {
fprintf( fout, "\tP \"%d\"", pathIndex+1 );
+ }
pathIndex++;
firstPath = 1;
memset( bitmap, 0, sizeof bitmap );
@@ -447,8 +455,9 @@ void computePaths( void )
ep->busy = 0;
}
for (pp = paths; pp < paths_p; pp++) {
- if (pp->count == 0)
+ if (pp->count == 0) {
continue;
+ }
segNo = pp->segs[0];
epNo = (segNo>0?0:1);
ep = segs[abs(segNo)-1].ep[epNo];
@@ -458,12 +467,13 @@ void computePaths( void )
if ( (ep && ep->busy) || (ep2 && ep2->busy) ) {
goto nextPath;
}
- if (ep) ep->busy = 1;
- if (ep2) ep2->busy = 1;
+ if (ep) { ep->busy = 1; }
+ if (ep2) { ep2->busy = 1; }
for (inx=0; inx<pp->count; inx++) {
segNo = abs(pp->segs[inx]);
- if (bitmap[segNo])
+ if (bitmap[segNo]) {
goto nextPath;
+ }
}
if (!firstPath) {
fprintf( fout, " 0");
@@ -478,7 +488,7 @@ void computePaths( void )
pp->count = 0;
pathCount--;
nextPath:
- ;
+ ;
}
fprintf( fout, "\n" );
}
@@ -492,7 +502,8 @@ void translate( coOrd *res, coOrd orig, double a, double d )
}
-static void computeCurve( coOrd pos0, coOrd pos1, double radius, coOrd * center, double * a0, double * a1 )
+static void computeCurve( coOrd pos0, coOrd pos1, double radius, coOrd * center,
+ double * a0, double * a1 )
/* translate between curves described by 2 end-points and a radius to
a curve described by a center, radius and angles.
*/
@@ -502,8 +513,9 @@ static void computeCurve( coOrd pos0, coOrd pos1, double radius, coOrd * center,
d = findDistance( pos0, pos1 )/2.0;
a = findAngle( pos0, pos1 );
s = fabs(d/radius);
- if (s > 1.0)
+ if (s > 1.0) {
s = 1.0;
+ }
aa = R2D(asin( s ));
if (radius > 0) {
aaa = a + (90.0 - aa);
@@ -520,10 +532,11 @@ static void computeCurve( coOrd pos0, coOrd pos1, double radius, coOrd * center,
double X( double v )
{
- if ( -0.000001 < v && v < 0.000001 )
+ if ( -0.000001 < v && v < 0.000001 ) {
return 0.0;
- else
+ } else {
return v;
+ }
}
@@ -542,27 +555,27 @@ void generateTurnout( void )
computePaths();
for (ep=endPoints; ep<endPoint_p; ep++)
fprintf( fout, "\tE %0.6f %0.6f %0.6f\n",
- X(ep->pos.x), X(ep->pos.y), X(ep->a) );
+ X(ep->pos.x), X(ep->pos.y), X(ep->a) );
for (lp=lines; lp<line_p; lp++) {
switch (lp->type) {
case 'L':
fprintf( fout, "\tL %ld 0 %0.6f %0.6f %0.6f %0.6f\n", color,
- X(lp->pos[0].x), X(lp->pos[0].y), X(lp->pos[1].x), X(lp->pos[1].y) );
+ X(lp->pos[0].x), X(lp->pos[0].y), X(lp->pos[1].x), X(lp->pos[1].y) );
break;
case 'A':
fprintf( fout, "\tA %ld 0 %0.6f %0.6f %0.6f %0.6f %0.6f\n", color,
- X(lp->radius), X(lp->center.x), X(lp->center.y), X(lp->a0), X(lp->a1) );
+ X(lp->radius), X(lp->center.x), X(lp->center.y), X(lp->a0), X(lp->a1) );
break;
}
}
for (sp=segs; sp<seg_p; sp++)
if (sp->radius == 0.0) {
fprintf( fout, "\tS 0 0 %0.6f %0.6f %0.6f %0.6f\n",
- X(sp->pos[0].x), X(sp->pos[0].y), X(sp->pos[1].x), X(sp->pos[1].y) );
+ X(sp->pos[0].x), X(sp->pos[0].y), X(sp->pos[1].x), X(sp->pos[1].y) );
} else {
computeCurve( sp->pos[0], sp->pos[1], sp->radius, &center, &a0, &a1 );
fprintf( fout, "\tC 0 0 %0.6f %0.6f %0.6f %0.6f %0.6f\n",
- X(sp->radius), X(center.x), X(center.y), X(a0), X(a1) );
+ X(sp->radius), X(center.x), X(center.y), X(a0), X(a1) );
}
fprintf( fout, "\t%s\n", END_SEGS );
}
@@ -572,23 +585,25 @@ void reset( tokenDesc_t * tp, arg_t *args )
/* Start of a new turnout or structure */
{
int inx;
- curAction = tp->action;
- line_p = lines;
- seg_p = segs;
- endPoint_p = endPoints;
- partNo = strdup( args[0].string );
- name = strdup( args[1].string );
- for (inx=2; tp->args[inx]; inx++)
- params[inx-2] = args[inx].number;
+ curAction = tp->action;
+ line_p = lines;
+ seg_p = segs;
+ endPoint_p = endPoints;
+ partNo = strdup( args[0].string );
+ name = strdup( args[1].string );
+ for (inx=2; tp->args[inx]; inx++) {
+ params[inx-2] = args[inx].number;
+ }
}
double getDim( double value )
/* convert to inches from tenths of a an inch or millimeters. */
{
- if (inch)
+ if (inch) {
return value/10.0;
- else
+ } else {
return value/25.4;
+ }
}
@@ -597,8 +612,9 @@ char * getLine( void )
{
char * cp;
while (1) {
- if (fgets(line, sizeof line, fin) == NULL)
+ if (fgets(line, sizeof line, fin) == NULL) {
return NULL;
+ }
lineCount++;
lineLen = strlen(line);
if (lineLen > 0 && line[lineLen-1] == '\n') {
@@ -619,10 +635,12 @@ char * getLine( void )
cp++;
lineLen--;
}
- if (lineLen <= 0)
+ if (lineLen <= 0) {
continue;
- if (verbose)
+ }
+ if (verbose) {
fprintf( fout, "# %s\n", line );
+ }
return cp;
}
}
@@ -633,8 +651,9 @@ void flushInput( void )
{
char *cp;
while (cp=getLine()) {
- if (strncasecmp( cp, "End", 3 ) == 0 )
+ if (strncasecmp( cp, "End", 3 ) == 0 ) {
break;
+ }
}
inBody = 0;
}
@@ -711,8 +730,9 @@ void process( tokenDesc_t * tp, arg_t *args )
endPoint_p->pos.x = 0.0;
endPoint_p->a = 270.0;
endPoint_p++;
- if ((cp=getLine())==NULL)
+ if ((cp=getLine())==NULL) {
return;
+ }
if ((rc=sscanf( line, "%lf %lf", &radius, &angle ) ) != 2) {
fprintf( stderr, "syntax error: %d: %s\n", lineCount, line );
flushInput();
@@ -728,8 +748,9 @@ void process( tokenDesc_t * tp, arg_t *args )
seg_p->radius = -radius;
endPoint_p++;
seg_p++;
- if ((cp=getLine())==NULL)
+ if ((cp=getLine())==NULL) {
return;
+ }
if ((rc=sscanf( line, "%lf %lf", &radius2, &angle ) ) != 2) {
fprintf( stderr, "syntax error: %d: %s\n", lineCount, line );
flushInput();
@@ -789,7 +810,7 @@ void process( tokenDesc_t * tp, arg_t *args )
seg_p++;
length /= 2.0;
if (tp->action == ACT_CROSSING_SYMMETRIC ||
- tp->action == ACT_DOUBLESLIP_SYMMETRIC) {
+ tp->action == ACT_DOUBLESLIP_SYMMETRIC) {
length2 = length;
} else {
length2 = getDim( args[5].number )/2.0;
@@ -805,7 +826,7 @@ void process( tokenDesc_t * tp, arg_t *args )
endPoint_p++;
seg_p++;
if (tp->action == ACT_CROSSING_RIGHT ||
- tp->action == ACT_DOUBLESLIP_RIGHT ) {
+ tp->action == ACT_DOUBLESLIP_RIGHT ) {
endPoint_p[-1].pos.y = -endPoint_p[-1].pos.y;
endPoint_p[-2].pos.y = -endPoint_p[-2].pos.y;
seg_p[-1].pos[0].y = -seg_p[-1].pos[0].y;
@@ -817,8 +838,9 @@ void process( tokenDesc_t * tp, arg_t *args )
case ACT_TURNTABLE:
reset( tp, args );
- if ((cp=getLine())==NULL)
+ if ((cp=getLine())==NULL) {
return;
+ }
if ((rc=sscanf( line, "%lf %s", &angle, bits ) ) != 2) {
fprintf( stderr, "syntax error: %d: %s\n", lineCount, line );
flushInput();
@@ -828,8 +850,9 @@ void process( tokenDesc_t * tp, arg_t *args )
count = 360.0/angle;
angle = 0;
length = strlen( bits );
- if (length < count)
+ if (length < count) {
count = length;
+ }
length = getDim( args[3].number );
length2 = getDim( args[5].number );
endNo = 1;
@@ -843,24 +866,24 @@ void process( tokenDesc_t * tp, arg_t *args )
angle = normalizeAngle( 90.0 - inx * ( 360.0 / count ) );
if (bits[inx]!='0')
fprintf( fout, "\tE %0.6f %0.6f %0.6f\n",
- X(length * sin(D2R(angle))),
- X(length * cos(D2R(angle))),
- X(angle) );
+ X(length * sin(D2R(angle))),
+ X(length * cos(D2R(angle))),
+ X(angle) );
}
for ( inx=0; inx<count; inx++ ) {
angle = normalizeAngle( 90.0 - inx * ( 360.0 / count ) );
if (bits[inx]!='0')
fprintf( fout, "\tS 0 0 %0.6f %0.6f %0.6f %0.6f\n",
- X(length * sin(D2R(angle))),
- X(length * cos(D2R(angle))),
- X(length2 * sin(D2R(angle))),
- X(length2 * cos(D2R(angle))) );
+ X(length * sin(D2R(angle))),
+ X(length * cos(D2R(angle))),
+ X(length2 * sin(D2R(angle))),
+ X(length2 * cos(D2R(angle))) );
}
fprintf( fout, "\tA %ld 0 %0.6f 0.000000 0.000000 0.000000 360.000000\n",
- color, length2 );
+ color, length2 );
if (length != length2)
fprintf( fout, "\tA %ld 0 %0.6f 0.000000 0.000000 0.000000 360.000000\n",
- color, length );
+ color, length );
break;
case ACT_ENDTURNTABLE:
@@ -868,11 +891,11 @@ void process( tokenDesc_t * tp, arg_t *args )
switch (lp->type) {
case 'L':
fprintf( fout, "\tL %ld 0 %0.6f %0.6f %0.6f %0.6f\n", color,
- X(lp->pos[0].x), X(lp->pos[0].y), X(lp->pos[1].x), X(lp->pos[1].y) );
+ X(lp->pos[0].x), X(lp->pos[0].y), X(lp->pos[1].x), X(lp->pos[1].y) );
break;
case 'A':
fprintf( fout, "\tA %ld 0 %0.6f %0.6f %0.6f %0.6f %0.6f\n", color,
- X(lp->radius), X(lp->center.x), X(lp->center.y), X(lp->a0), X(lp->a1) );
+ X(lp->radius), X(lp->center.x), X(lp->center.y), X(lp->a0), X(lp->a1) );
break;
}
}
@@ -886,15 +909,18 @@ void process( tokenDesc_t * tp, arg_t *args )
width2 = getDim(args[5].number);
length = getDim( args[6].number);
fprintf( fout, "\tL %ld 0 0.0000000 0.000000 0.000000 %0.6f\n", color, length );
- fprintf( fout, "\tL %ld 0 0.0000000 %0.6f %0.6f %0.6f\n", color, length, width, length );
- fprintf( fout, "\tL %ld 0 %0.6f %0.6f %0.6f 0.000000\n", color, width, length, width );
+ fprintf( fout, "\tL %ld 0 0.0000000 %0.6f %0.6f %0.6f\n", color, length, width,
+ length );
+ fprintf( fout, "\tL %ld 0 %0.6f %0.6f %0.6f 0.000000\n", color, width, length,
+ width );
fprintf( fout, "\tL %ld 0 %0.6f 0.0000000 0.000000 0.000000\n", color, width );
fprintf( fout, "\tL %ld 0 %0.6f %0.6f %0.6f %0.6f\n", color,
- (width-width2)/2.0, 0.0, (width-width2)/2.0, length );
+ (width-width2)/2.0, 0.0, (width-width2)/2.0, length );
fprintf( fout, "\tL %ld 0 %0.6f %0.6f %0.6f %0.6f\n", color,
- width-(width-width2)/2.0, 0.0, width-(width-width2)/2.0, length );
- if ((cp=getLine())==NULL)
+ width-(width-width2)/2.0, 0.0, width-(width-width2)/2.0, length );
+ if ((cp=getLine())==NULL) {
return;
+ }
if ((rc=sscanf( line, "%lf %lf %s", &length2, &offset, bits ) ) != 3) {
fprintf( stderr, "syntax error: %d: %s\n", lineCount, line );
flushInput();
@@ -905,14 +931,15 @@ void process( tokenDesc_t * tp, arg_t *args )
for (inx=0; bits[inx]; inx++) {
if (bits[inx]=='1') {
fprintf( fout, "\tE 0.000000 %0.6f 270.0\n",
- offset );
+ offset );
fprintf( fout, "\tS 0 0 0.000000 %0.6f %0.6f %0.6f\n",
- offset, (width-width2)/2.0, offset );
+ offset, (width-width2)/2.0, offset );
}
offset += length2;
}
- if ((cp=getLine())==NULL)
+ if ((cp=getLine())==NULL) {
return;
+ }
if ((rc=sscanf( line, "%lf %lf %s", &length2, &offset, bits ) ) != 3) {
fprintf( stderr, "syntax error: %d: %s\n", lineCount, line );
flushInput();
@@ -923,9 +950,9 @@ void process( tokenDesc_t * tp, arg_t *args )
for (inx=0; bits[inx]; inx++) {
if (bits[inx]=='1') {
fprintf( fout, "\tE %0.6f %0.6f 90.0\n",
- width, offset );
+ width, offset );
fprintf( fout, "\tS 0 0 %0.6f %0.6f %0.6f %0.6f\n",
- width-(width-width2)/2.0, offset, width, offset );
+ width-(width-width2)/2.0, offset, width, offset );
}
offset += length2;
}
@@ -949,11 +976,11 @@ void process( tokenDesc_t * tp, arg_t *args )
switch (lp->type) {
case 'L':
fprintf( fout, "\tL %ld 0 %0.6f %0.6f %0.6f %0.6f\n", color,
- X(lp->pos[0].x), X(lp->pos[0].y), X(lp->pos[1].x), X(lp->pos[1].y) );
+ X(lp->pos[0].x), X(lp->pos[0].y), X(lp->pos[1].x), X(lp->pos[1].y) );
break;
case 'A':
fprintf( fout, "\tA %ld 0 %0.6f %0.6f %0.6f %0.6f %0.6f\n", color,
- X(lp->radius), X(lp->center.x), X(lp->center.y), X(lp->a0), X(lp->a1) );
+ X(lp->radius), X(lp->center.x), X(lp->center.y), X(lp->a0), X(lp->a1) );
break;
}
}
@@ -981,7 +1008,8 @@ void process( tokenDesc_t * tp, arg_t *args )
angle = args[3].number/2.0 + args[4].number;
pos1.x = pos0.x + length2*cos(D2R(angle));
pos1.y = pos0.y + length2*sin(D2R(angle));
- computeCurve( pos0, pos1, line_p->radius, &line_p->center, &line_p->a0, &line_p->a1 );
+ computeCurve( pos0, pos1, line_p->radius, &line_p->center, &line_p->a0,
+ &line_p->a1 );
line_p++;
break;
@@ -1096,71 +1124,74 @@ void parse( void )
inch++;
continue;
}
- for ( tp=tokens; tp<&tokens[COUNT( tokens )]; tp++ ){
+ for ( tp=tokens; tp<&tokens[COUNT( tokens )]; tp++ ) {
tlen = strlen(tp->name);
- if ( strncasecmp( cp, tp->name, tlen) != 0 )
+ if ( strncasecmp( cp, tp->name, tlen) != 0 ) {
continue;
- if ( cp[tlen] != '\0' && cp[tlen] != ' ' && cp[tlen] != ',' )
+ }
+ if ( cp[tlen] != '\0' && cp[tlen] != ' ' && cp[tlen] != ',' ) {
continue;
+ }
if ( (inBody) == (tp->class==CLS_START) ) {
continue;
}
cp += tlen+1;
if (tp->args)
- for ( inx=0, sp=strings; tp->args[inx]; inx++ ) {
- if (*cp == '\0') {
- fprintf( stderr, "%d: unexpected end of line\n", lineCount );
- goto nextLine;
- }
- switch( tp->args[inx] ) {
- case 'S':
- args[inx].string = sp;
- while (isspace((unsigned char)*cp)) cp++;
- if (*cp != '"') {
- fprintf( stderr, "%d: expected a \": %s\n", lineCount, cp );
+ for ( inx=0, sp=strings; tp->args[inx]; inx++ ) {
+ if (*cp == '\0') {
+ fprintf( stderr, "%d: unexpected end of line\n", lineCount );
goto nextLine;
}
- cp++;
- while ( *cp ) {
- if ( *cp != '"' ) {
- *sp++ = *cp++;
- } else if ( cp[1] == '"' ) {
- *sp++ = '"';
- *sp++ = '"';
- cp += 2;
- } else {
- cp++;
- *sp++ = '\0';
- break;
+ switch( tp->args[inx] ) {
+ case 'S':
+ args[inx].string = sp;
+ while (isspace((unsigned char)*cp)) { cp++; }
+ if (*cp != '"') {
+ fprintf( stderr, "%d: expected a \": %s\n", lineCount, cp );
+ goto nextLine;
}
- }
- break;
+ cp++;
+ while ( *cp ) {
+ if ( *cp != '"' ) {
+ *sp++ = *cp++;
+ } else if ( cp[1] == '"' ) {
+ *sp++ = '"';
+ *sp++ = '"';
+ cp += 2;
+ } else {
+ cp++;
+ *sp++ = '\0';
+ break;
+ }
+ }
+ break;
- case 'N':
- args[inx].number = strtod( cp, &cpp );
- if (cpp == cp) {
- fprintf( stderr, "%d: expected a number: %s\n", lineCount, cp );
- goto nextLine;
- }
- cp = cpp;
- break;
+ case 'N':
+ args[inx].number = strtod( cp, &cpp );
+ if (cpp == cp) {
+ fprintf( stderr, "%d: expected a number: %s\n", lineCount, cp );
+ goto nextLine;
+ }
+ cp = cpp;
+ break;
+
+ case 'I':
+ args[inx].integer = strtol( cp, &cpp, 10 );
+ if (cpp == cp) {
+ fprintf( stderr, "%d: expected an integer: %s\n", lineCount, cp );
+ goto nextLine;
+ }
+ cp = cpp;
+ break;
- case 'I':
- args[inx].integer = strtol( cp, &cpp, 10 );
- if (cpp == cp) {
- fprintf( stderr, "%d: expected an integer: %s\n", lineCount, cp );
- goto nextLine;
}
- cp = cpp;
- break;
-
}
- }
process( tp, args );
- if (tp->class == CLS_START)
+ if (tp->class == CLS_START) {
inBody = 1;
- else if (tp->class == CLS_END)
+ } else if (tp->class == CLS_END) {
inBody = 0;
+ }
tp = NULL;
break;
}
@@ -1222,7 +1253,8 @@ int main ( int argc, char * argv[] )
perror(*argv);
exit(1);
}
- if (contents)
+ if (contents) {
fprintf( fout, "CONTENTS %s\n", contents );
+ }
parse();
}
diff --git a/app/bin/bitmaps/16pix/bridge.png b/app/bin/bitmaps/16pix/bridge.png
deleted file mode 100644
index ebcde0a..0000000
--- a/app/bin/bitmaps/16pix/bridge.png
+++ /dev/null
Binary files differ
diff --git a/app/bin/bitmaps/CMakeLists.txt b/app/bin/bitmaps/CMakeLists.txt
new file mode 100644
index 0000000..0a68722
--- /dev/null
+++ b/app/bin/bitmaps/CMakeLists.txt
@@ -0,0 +1,100 @@
+# Generate XPM bitmaps from SVG files
+
+PROJECT(genbitmaps)
+
+# Find the conversion tool
+
+find_package(Inkscape)
+
+if( NOT Inkscape_FOUND )
+ message( STATUS "Inkscape not found." )
+else()
+ message(STATUS "Inkscape is: ${Inkscape_EXECUTABLE}")
+ message(STATUS "Export option is: ${Inkscape_EXPORT}")
+
+ set (XPMS
+ background benchwork bezier-line bezier-track block bottom box
+ bridge building car-inventory change-grid circle-center
+ circle-filled-center circle-filled-tangent circle-line-center
+ circle-line-tangent circle-line circle-tangent circle clone
+ connect control convert-from convert-to copy cornu curved-chord
+ curved-end curved-line-chord curved-line-end curved-line-middle
+ curved-line-tangent curved-middle curved-tangent cut delete
+ describe description dimension doc-export-bmap doc-export-dxf
+ doc-export-svg doc-export doc-import-mod doc-import doc-new doc-open
+ doc-print doc-recent doc-revert doc-save-as doc-save doc-setup down
+ ease-broad ease-cornu ease-gt-broad ease-gt-sharp ease-lt-broad
+ ease-lt-sharp ease-none ease-normal ease-sharp
+ elevation exit extend filled-box filled-polygon go helix
+ info join-line join layers magnet manage map move
+ new-car ok pan-zoom parallel-line parallel parameter paste
+ polygon polyline profile protractor redo reflect roadbed
+ rotate ruler select sensor signal snap-curs snap-grid
+ split-draw split sticky-doc sticky-link sticky-note stop
+ straight-line straight switch-motor table-edge text ties top
+ train trim tunnel turnout-design turnout turntable undo
+ zoom-choose zoom-extent zoom-in zoom-out
+ )
+ set( PIXS 16 24 32 )
+
+ foreach(xpm ${XPMS})
+ foreach(pix ${PIXS})
+ if ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/png/${xpm}${pix}.png" )
+ # MESSAGE( STATUS "Custom ${CMAKE_CURRENT_SOURCE_DIR}/png/${xpm}${pix}.png" )
+ add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/png/${xpm}${pix}.png
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/png/${xpm}${pix}.png
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/png/
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/png/${xpm}${pix}.png ${CMAKE_CURRENT_BINARY_DIR}/png/${xpm}${pix}.png
+ )
+ else()
+ # MESSAGE( STATUS "SVG ${CMAKE_CURRENT_SOURCE_DIR}/svg/${xpm}.svg" )
+ add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/png/${xpm}${pix}.png
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/svg/${xpm}.svg
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/png/
+ COMMAND ${Inkscape_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/svg/${xpm}.svg -h ${pix} ${Inkscape_EXPORT}${CMAKE_CURRENT_BINARY_DIR}/png/${xpm}${pix}.png
+ )
+ endif()
+ # build a list of all the depends
+ list(APPEND PNG_RESULTS ${CMAKE_CURRENT_BINARY_DIR}/png/${xpm}${pix}.png)
+ endforeach()
+ add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${xpm}.xpm3
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/png/${xpm}16.png
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/png/${xpm}24.png
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/png/${xpm}32.png
+ COMMAND pngtoxpm ${CMAKE_CURRENT_BINARY_DIR}/${xpm}.xpm3
+# COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/${xpm}.xpm3 ${CMAKE_CURRENT_SOURCE_DIR}/${xpm}.xpm3
+ )
+ # build a list of all the depends
+ list(APPEND XPM_RESULTS ${xpm}.xpm3)
+ endforeach()
+
+ add_custom_target (
+ genbitmaps
+ DEPENDS ${XPM_RESULTS}
+ DEPENDS ${PNG_RESULTS}
+ )
+
+ if(WIN32)
+ # Temporarily the FreeImage dll is copied to the build directory
+ add_custom_command(
+ TARGET genbitmaps PRE_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy ${FREEIMAGE_SHAREDLIB} ${CMAKE_CURRENT_BINARY_DIR}
+ )
+ cmake_path(GET FREEIMAGE_SHAREDLIB FILENAME filename)
+ add_custom_command(
+ TARGET genbitmaps POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E rm ${CMAKE_CURRENT_BINARY_DIR}/${filename}
+ )
+#
+
+ endif()
+endif()
+
+#MESSAGE (STATUS "SVG Converter: ${SVG_CONVERTER}")
+#MESSAGE (STATUS "Source Dir: ${CMAKE_CURRENT_SOURCE_DIR}")
+#MESSAGE (STATUS "XPMs: ${XPMS}")
+#MESSAGE (STATUS "XPM_RESULTS: ${XPM_RESULTS}")
+#MESSAGE (STATUS "PNG_RESULTS: ${PNG_RESULTS}")
diff --git a/app/bin/bitmaps/Info.xpm b/app/bin/bitmaps/Info.xpm
deleted file mode 100644
index c4fa897..0000000
--- a/app/bin/bitmaps/Info.xpm
+++ /dev/null
@@ -1,116 +0,0 @@
-static char *Info_x16[] = {
- "16 16 11 1",
- " c None",
- "0 c #000000",
- "1 c #0066FF",
- "2 c #3366FF",
- "3 c #6666FF",
- "4 c #6699FF",
- "5 c #9999FF",
- "6 c #99CCFF",
- "7 c #CCCCFF",
- "8 c #CCFFFF",
- "9 c #FFFFFF",
- " ",
- " 122221 ",
- " 25799763 ",
- " 3899999994 ",
- " 289994299993 ",
- " 15999922999973 ",
- " 27999912999992 ",
- " 29999942999992 ",
- " 29999954999992 ",
- " 27999976999992 ",
- " 26999999999972 ",
- " 299994299994 ",
- " 149997699952 ",
- " 2379999833 ",
- " 223312 ",
- " "};
-
-static char *Info_x24[] = {
- "24 24 11 1",
- " c None",
- "0 c #000000",
- "1 c #0066FF",
- "2 c #3366FF",
- "3 c #6666FF",
- "4 c #6699FF",
- "5 c #9999FF",
- "6 c #99CCFF",
- "7 c #CCCCFF",
- "8 c #CCFFFF",
- "9 c #FFFFFF",
- " ",
- " 111111 ",
- " 1111111111 ",
- " 11115777762111 ",
- " 1114999999995111 ",
- " 11799994499997211 ",
- " 116999971179999811 ",
- " 11499999611599999511 ",
- " 119999995114999999211 ",
- " 1159999996114999999611 ",
- " 1179999996114999999711 ",
- " 1179999997115999999911 ",
- " 1179999999117999999911 ",
- " 1179999999117999999811 ",
- " 1159999999529999999711 ",
- " 129999999779999999511 ",
- " 11599999711599999711 ",
- " 1179999211199999211 ",
- " 114999971149999511 ",
- " 1127999779997311 ",
- " 11157999975111 ",
- " 111111111111 ",
- " 11111111 ",
- " "};
-
-static char *Info_x32[] = {
- "32 32 11 1",
- " c None",
- "0 c #000000",
- "1 c #0066FF",
- "2 c #3366FF",
- "3 c #6666FF",
- "4 c #6699FF",
- "5 c #9999FF",
- "6 c #99CCFF",
- "7 c #CCCCFF",
- "8 c #CCFFFF",
- "9 c #FFFFFF",
- " ",
- " 11 ",
- " 111111111111 ",
- " 1111111111111111 ",
- " 111111577775211111 ",
- " 11114799999999751111 ",
- " 1111799999779999972111 ",
- " 111279999971179999994111 ",
- " 1117999999411299999992111 ",
- " 11179999999111199999997111 ",
- " 113999999971111799999994111 ",
- " 1117999999971111799999997111 ",
- " 1119999999991111799999999411 ",
- " 11499999999911117999999996111 ",
- " 11599999999911117999999997111 ",
- " 111799999999931119999999997111 ",
- " 11799999999951119999999999111 ",
- " 11699999999971149999999997111 ",
- " 11599999999971159999999997111 ",
- " 1129999999999317999999999511 ",
- " 1117999999999979999999999111 ",
- " 1114999999995114999999997111 ",
- " 11179999997111179999999211 ",
- " 11139999997111159999995111 ",
- " 111499999911117999996111 ",
- " 1114999997557999995111 ",
- " 111279999999999731111 ",
- " 111126799998731111 ",
- " 1111111111111111 ",
- " 111111111111 ",
- " 11111111 ",
- " "};
-
-static char **Info_xpm[3] = { Info_x16, Info_x24, Info_x32 };
-
diff --git a/app/bin/bitmaps/SVG/NotUsed/ease-broad.svg b/app/bin/bitmaps/SVG/NotUsed/ease-broad.svg
deleted file mode 100644
index fadc6df..0000000
--- a/app/bin/bitmaps/SVG/NotUsed/ease-broad.svg
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_1"
- x="0px"
- y="0px"
- viewBox="0 0 96 48"
- style="enable-background:new 0 0 96 48;"
- xml:space="preserve"
- sodipodi:docname="ease-broad.svg"
- inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
- id="metadata15"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
- id="defs13" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1555"
- inkscape:window-height="828"
- id="namedview11"
- showgrid="false"
- inkscape:zoom="7.6695312"
- inkscape:cx="41.461112"
- inkscape:cy="27.685221"
- inkscape:window-x="166"
- inkscape:window-y="170"
- inkscape:window-maximized="0"
- inkscape:current-layer="Layer_1"
- inkscape:document-rotation="0" />
-<style
- type="text/css"
- id="style2">
- .st0{fill:#0090FC;stroke:#000000;stroke-width:0.5;stroke-miterlimit:10;}
- .st1{font-family:'MyriadPro-Regular';}
- .st2{font-size:14px;}
-</style>
-<text
- transform="scale(1.0348781,0.96629742)"
- id="text8"
- x="-0.08601547"
- y="19.259062"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.9881px;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:1.03629"><tspan
- x="-0.08601547"
- y="19.259062"
- class="st0 st1 st2"
- id="tspan4"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.9881px;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Easement </tspan><tspan
- x="16.575085"
- y="43.812256"
- class="st0 st1 st2"
- id="tspan6"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.9881px;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Broad</tspan></text>
-</svg>
diff --git a/app/bin/bitmaps/SVG/NotUsed/ease-cornu.svg b/app/bin/bitmaps/SVG/NotUsed/ease-cornu.svg
deleted file mode 100644
index df906a9..0000000
--- a/app/bin/bitmaps/SVG/NotUsed/ease-cornu.svg
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_1"
- x="0px"
- y="0px"
- viewBox="0 0 96 48"
- style="enable-background:new 0 0 96 48;"
- xml:space="preserve"
- sodipodi:docname="ease-cornu.svg"
- inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
- id="metadata876"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs874" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1398"
- inkscape:window-height="732"
- id="namedview872"
- showgrid="false"
- inkscape:zoom="3.8254353"
- inkscape:cx="40.172441"
- inkscape:cy="24"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:current-layer="Layer_1"
- inkscape:document-rotation="0" />
-<style
- type="text/css"
- id="style859">
- .st0{fill:none;stroke:#F7931E;stroke-miterlimit:10;}
- .st1{fill:#0090FC;stroke:#000000;stroke-width:0.5;stroke-miterlimit:10;}
- .st2{font-family:'MyriadPro-Regular';}
- .st3{font-size:14px;}
- .st4{fill:none;stroke:#000000;stroke-width:0.5;stroke-miterlimit:10;}
-</style>
-<path
- class="st0"
- d="M13.2,28.5c-0.8,0.4-1.1,1.3-0.7,2.1c0.5,1,1.7,1.4,2.7,0.9c1.2-0.6,1.7-2.1,1.1-3.3c-0.8-1.5-2.6-2.1-4.2-1.4 c-1.9,1-2.7,3.3-1.7,5.2c1.2,2.4,4.1,3.3,6.5,2.1c3-1.5,4.2-5.1,2.7-8.1c-1.9-3.7-6.4-5.2-10.1-3.3c-4.7,2.3-6.5,9-4.2,13.7 c2.9,5.8,10.6,5.4,15.9,4.2c4.1-1.1,22.6-6.1,22.6-6.1l8.1-2.4c0,0,18-5.1,22.1-6.4c5.2-1.5,12.9-1.3,16.1,4.4 c2.6,4.5,1,10.3-3.5,12.9c-3.6,2.1-8.2,0.8-10.3-2.8c-1.7-2.9-0.6-6.6,2.3-8.2c2.3-1.3,5.3-0.5,6.6,1.8c1.1,1.9,0.4,4.2-1.4,5.3 c-1.5,0.8-3.4,0.3-4.2-1.2c-0.7-1.2-0.3-2.7,0.9-3.4c0.9-0.5,2.2-0.2,2.7,0.7c0.4,0.8,0.2,1.7-0.6,2.2"
- id="path861" />
-
-<path
- class="st4"
- d="M73.8,28.6"
- id="path869" />
-</svg>
diff --git a/app/bin/bitmaps/SVG/NotUsed/ease-gt-broad.svg b/app/bin/bitmaps/SVG/NotUsed/ease-gt-broad.svg
deleted file mode 100644
index 9b2f26d..0000000
--- a/app/bin/bitmaps/SVG/NotUsed/ease-gt-broad.svg
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_1"
- x="0px"
- y="0px"
- viewBox="0 0 96 48"
- style="enable-background:new 0 0 96 48;"
- xml:space="preserve"
- sodipodi:docname="ease-gt-broad.svg"
- inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
- id="metadata15"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs13" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1561"
- inkscape:window-height="828"
- id="namedview11"
- showgrid="false"
- inkscape:zoom="7.6695312"
- inkscape:cx="46.310737"
- inkscape:cy="32.900664"
- inkscape:window-x="219"
- inkscape:window-y="132"
- inkscape:window-maximized="0"
- inkscape:current-layer="Layer_1"
- inkscape:document-rotation="0" />
-<style
- type="text/css"
- id="style2">
- .st0{fill:#0090FC;stroke:#000000;stroke-width:0.5;stroke-miterlimit:10;}
- .st1{font-family:'MyriadPro-Regular';}
- .st2{font-size:14px;}
-</style>
-
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.3333px;line-height:1.25;font-family:Tahoma;-inkscape-font-specification:'Tahoma, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
- x="8.6054811"
- y="42.636246"
- id="text1429"><tspan
- sodipodi:role="line"
- id="tspan1427"
- x="8.6054811"
- y="42.636246">&gt; Broad</tspan></text><text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.3333px;line-height:1.25;font-family:Tahoma;-inkscape-font-specification:'Tahoma, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
- x="1.434247"
- y="20.079454"
- id="text1433"><tspan
- sodipodi:role="line"
- id="tspan1431"
- x="1.434247"
- y="20.079454">Easement</tspan></text></svg>
diff --git a/app/bin/bitmaps/SVG/NotUsed/ease-gt-sharp.svg b/app/bin/bitmaps/SVG/NotUsed/ease-gt-sharp.svg
deleted file mode 100644
index 77031f6..0000000
--- a/app/bin/bitmaps/SVG/NotUsed/ease-gt-sharp.svg
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_1"
- x="0px"
- y="0px"
- viewBox="0 0 96 48"
- style="enable-background:new 0 0 96 48;"
- xml:space="preserve"
- sodipodi:docname="Easement-Sharp.svg"
- inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
- id="metadata2655"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs2653" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1540"
- inkscape:window-height="857"
- id="namedview2651"
- showgrid="false"
- inkscape:zoom="8.2200207"
- inkscape:cx="42.464734"
- inkscape:cy="24"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:current-layer="Layer_1"
- inkscape:document-rotation="0" />
-<style
- type="text/css"
- id="style2642">
- .st0{fill:#0090FC;stroke:#000000;stroke-width:0.5;stroke-miterlimit:10;}
- .st1{font-family:'MyriadPro-Regular';}
- .st2{font-size:14px;}
-</style>
-<text
- transform="scale(1.1867603,0.84263014)"
- id="text2648"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:1.18676"
- x="3.2132704"
- y="23.310022"><tspan
- x="3.2132704"
- y="23.310022"
- class="st0 st1 st2"
- id="tspan2644"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Easement </tspan><tspan
- x="17.098368"
- y="43.247597"
- class="st0 st1 st2"
- id="tspan2646"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Sharp</tspan></text>
-</svg>
diff --git a/app/bin/bitmaps/SVG/NotUsed/ease-lt-broad.svg b/app/bin/bitmaps/SVG/NotUsed/ease-lt-broad.svg
deleted file mode 100644
index 3022616..0000000
--- a/app/bin/bitmaps/SVG/NotUsed/ease-lt-broad.svg
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_1"
- x="0px"
- y="0px"
- viewBox="0 0 96 48"
- style="enable-background:new 0 0 96 48;"
- xml:space="preserve"
- sodipodi:docname="ease-lt-broad.svg"
- inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
- id="metadata15"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
- id="defs13" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1557"
- inkscape:window-height="828"
- id="namedview11"
- showgrid="false"
- inkscape:zoom="8.5185912"
- inkscape:cx="47.999985"
- inkscape:cy="23.061186"
- inkscape:window-x="219"
- inkscape:window-y="132"
- inkscape:window-maximized="0"
- inkscape:current-layer="Layer_1"
- inkscape:document-rotation="0" />
-<style
- type="text/css"
- id="style2">
- .st0{fill:#0090FC;stroke:#000000;stroke-width:0.5;stroke-miterlimit:10;}
- .st1{font-family:'MyriadPro-Regular';}
- .st2{font-size:14px;}
-</style>
-
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.4906px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke:none;stroke-width:1.09316;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- x="8.7710075"
- y="16.856054"
- id="text848"
- transform="scale(0.91477909,1.0931601)"><tspan
- sodipodi:role="line"
- id="tspan846"
- x="8.7710075"
- y="16.856054"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:1.09316">Easement</tspan><tspan
- sodipodi:role="line"
- x="8.7710075"
- y="38.719307"
- id="tspan850"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:1.09316"> &lt; Broad</tspan></text></svg>
diff --git a/app/bin/bitmaps/SVG/NotUsed/ease-lt-sharp.svg b/app/bin/bitmaps/SVG/NotUsed/ease-lt-sharp.svg
deleted file mode 100644
index 77031f6..0000000
--- a/app/bin/bitmaps/SVG/NotUsed/ease-lt-sharp.svg
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_1"
- x="0px"
- y="0px"
- viewBox="0 0 96 48"
- style="enable-background:new 0 0 96 48;"
- xml:space="preserve"
- sodipodi:docname="Easement-Sharp.svg"
- inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
- id="metadata2655"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs2653" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1540"
- inkscape:window-height="857"
- id="namedview2651"
- showgrid="false"
- inkscape:zoom="8.2200207"
- inkscape:cx="42.464734"
- inkscape:cy="24"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:current-layer="Layer_1"
- inkscape:document-rotation="0" />
-<style
- type="text/css"
- id="style2642">
- .st0{fill:#0090FC;stroke:#000000;stroke-width:0.5;stroke-miterlimit:10;}
- .st1{font-family:'MyriadPro-Regular';}
- .st2{font-size:14px;}
-</style>
-<text
- transform="scale(1.1867603,0.84263014)"
- id="text2648"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:1.18676"
- x="3.2132704"
- y="23.310022"><tspan
- x="3.2132704"
- y="23.310022"
- class="st0 st1 st2"
- id="tspan2644"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Easement </tspan><tspan
- x="17.098368"
- y="43.247597"
- class="st0 st1 st2"
- id="tspan2646"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Sharp</tspan></text>
-</svg>
diff --git a/app/bin/bitmaps/SVG/NotUsed/ease-none.svg b/app/bin/bitmaps/SVG/NotUsed/ease-none.svg
deleted file mode 100644
index 75fa776..0000000
--- a/app/bin/bitmaps/SVG/NotUsed/ease-none.svg
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_1"
- x="0px"
- y="0px"
- viewBox="0 0 96 48"
- style="enable-background:new 0 0 96 48;"
- xml:space="preserve"
- sodipodi:docname="Easement-None.svg"
- inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
- id="metadata1473"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs1471" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1600"
- inkscape:window-height="784"
- id="namedview1469"
- showgrid="false"
- inkscape:zoom="8.2200207"
- inkscape:cx="48"
- inkscape:cy="27.685221"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:current-layer="Layer_1"
- inkscape:document-rotation="0" />
-<style
- type="text/css"
- id="style1460">
- .st0{fill:#0090FC;stroke:#000000;stroke-width:0.5;stroke-miterlimit:10;}
- .st1{font-family:'MyriadPro-Regular';}
- .st2{font-size:14px;}
-</style>
-<text
- transform="scale(1.1867603,0.84263015)"
- id="text1466"
- x="4.3408761"
- y="24.176271"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;font-family:Arial;-inkscape-font-specification:Arial;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:1.18676"><tspan
- x="4.3408761"
- y="24.176271"
- class="st0 st1 st2"
- id="tspan1462"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;font-family:Arial;-inkscape-font-specification:Arial;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Easement </tspan><tspan
- x="19.531406"
- y="44.113842"
- class="st0 st1 st2"
- id="tspan1464"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;font-family:Arial;-inkscape-font-specification:Arial;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">None</tspan></text>
-</svg>
diff --git a/app/bin/bitmaps/SVG/NotUsed/ease-normal.svg b/app/bin/bitmaps/SVG/NotUsed/ease-normal.svg
deleted file mode 100644
index 3e94707..0000000
--- a/app/bin/bitmaps/SVG/NotUsed/ease-normal.svg
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_1"
- x="0px"
- y="0px"
- viewBox="0 0 96 48"
- style="enable-background:new 0 0 96 48;"
- xml:space="preserve"
- sodipodi:docname="Easement-Normal.svg"
- inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
- id="metadata2064"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs2062" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1538"
- inkscape:window-height="857"
- id="namedview2060"
- showgrid="false"
- inkscape:zoom="7.6695312"
- inkscape:cx="42.464734"
- inkscape:cy="24"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:current-layer="Layer_1"
- inkscape:document-rotation="0" />
-<style
- type="text/css"
- id="style2051">
- .st0{fill:#0090FC;stroke:#000000;stroke-width:0.5;stroke-miterlimit:10;}
- .st1{font-family:'MyriadPro-Regular';}
- .st2{font-size:14px;}
-</style>
-<text
- transform="scale(1.1867603,0.84263014)"
- id="text2057"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:1.18676"
- x="2.7634513"
- y="24.342073"><tspan
- x="2.7634513"
- y="24.342073"
- class="st0 st1 st2"
- id="tspan2053"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Easement </tspan><tspan
- x="11.070774"
- y="44.27964"
- class="st0 st1 st2"
- id="tspan2055"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Normal</tspan></text>
-</svg>
diff --git a/app/bin/bitmaps/SVG/NotUsed/ease-sharp.svg b/app/bin/bitmaps/SVG/NotUsed/ease-sharp.svg
deleted file mode 100644
index 77031f6..0000000
--- a/app/bin/bitmaps/SVG/NotUsed/ease-sharp.svg
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_1"
- x="0px"
- y="0px"
- viewBox="0 0 96 48"
- style="enable-background:new 0 0 96 48;"
- xml:space="preserve"
- sodipodi:docname="Easement-Sharp.svg"
- inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
- id="metadata2655"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs2653" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1540"
- inkscape:window-height="857"
- id="namedview2651"
- showgrid="false"
- inkscape:zoom="8.2200207"
- inkscape:cx="42.464734"
- inkscape:cy="24"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:current-layer="Layer_1"
- inkscape:document-rotation="0" />
-<style
- type="text/css"
- id="style2642">
- .st0{fill:#0090FC;stroke:#000000;stroke-width:0.5;stroke-miterlimit:10;}
- .st1{font-family:'MyriadPro-Regular';}
- .st2{font-size:14px;}
-</style>
-<text
- transform="scale(1.1867603,0.84263014)"
- id="text2648"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:1.18676"
- x="3.2132704"
- y="23.310022"><tspan
- x="3.2132704"
- y="23.310022"
- class="st0 st1 st2"
- id="tspan2644"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Easement </tspan><tspan
- x="17.098368"
- y="43.247597"
- class="st0 st1 st2"
- id="tspan2646"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Sharp</tspan></text>
-</svg>
diff --git a/app/bin/bitmaps/background.xpm b/app/bin/bitmaps/background.xpm
deleted file mode 100644
index 2e8a141..0000000
--- a/app/bin/bitmaps/background.xpm
+++ /dev/null
@@ -1,157 +0,0 @@
-static char *background_x16[] = {
- "16 16 23 1",
- " c None",
- "0 c #000000",
- "1 c #003300",
- "2 c #333300",
- "3 c #333333",
- "4 c #336666",
- "5 c #336699",
- "6 c #339933",
- "7 c #339966",
- "8 c #33CC33",
- "9 c #669966",
- "A c #66CC66",
- "B c #66CCFF",
- "C c #999966",
- "D c #999999",
- "E c #99CC66",
- "F c #99CC99",
- "G c #99CCCC",
- "H c #CC9999",
- "I c #CCCC99",
- "J c #FFCC99",
- "K c #FFCCCC",
- "L c #C0C0C0",
- "3333333333333333",
- "5BBBBBBBBDCCCCC0",
- "5BBBBBBBBHC69HH0",
- "5BBBBBBBBH966CH0",
- "5BBBBBBBFED99HH0",
- "5BBBBBGD88AHHHH0",
- "5BBGLHHD88AIHHH0",
- "5BGDCHHHIEIIIIH0",
- "4GH77CHIIIIIIII0",
- "2HH77CIIIJKKIII0",
- "2HHDCFIIKKKKIIH0",
- "2HHHE88EKKKJIIH0",
- "2C9CE88EIKJIIIH0",
- "2666CAAIIIIIIHH0",
- "2969HHHHIIIHHHH0",
- "2011000000000000"};
-
-static char *background_x24[] = {
- "24 24 23 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333333",
- "3 c #339933",
- "4 c #339966",
- "5 c #33CC33",
- "6 c #666666",
- "7 c #669966",
- "8 c #6699CC",
- "9 c #66CC66",
- "A c #66CCFF",
- "B c #996666",
- "C c #999966",
- "D c #999999",
- "E c #99CC66",
- "F c #99CC99",
- "G c #99CCCC",
- "H c #CC9999",
- "I c #CCCC99",
- "J c #FFCC99",
- "K c #FFCCCC",
- "L c #C0C0C0",
- " 0000000000000000000000 ",
- "28888888888888BBBBBBBB62",
- "2AAAAAAAAAAAAAHHHHCHHHC2",
- "2AAAAAAAAAAAAGHH733CHHC2",
- "2AAAAAAAAAAAALH73337HHC2",
- "2AAAAAAAAAAAAHHC3333HHC2",
- "2AAAAAAAAAAAFDEH733CHHC2",
- "2AAAAAAAAAGH9559HDHHHHC2",
- "2AAAAAAAAGHE5555HHHHHHC2",
- "2AAAAAGHHHHE5555IIHHHHC2",
- "2AAAGHHHHHHHE55IIIIIHHC2",
- "2AAGH77HHHHIIIIIIIIIIHC2",
- "2AGH7444HHIIIIIIIIIIIIC2",
- "2CHH7444HHIIIIIKKKIIIIC2",
- "2CHHC447HIIIIJKKKKIIIIC2",
- "2CHHHCCCHIIIJKKKKKIIIIC2",
- "2CHHHHHE55EIKKKKKJIIIHC2",
- "2CHHHHE5555IKKKKKIIIIHC2",
- "2CC73HH5555IIKKKIIIIHHC2",
- "2C3333C9559IIIIIIIIIHHC2",
- "2C3333CH9EIIIIIIIIIHHHC2",
- "2C3337DHHHHIIIIIIHHHHHC2",
- "2BC77CCCCCCCCCCCCCCCCCC2",
- "122222222222222222222222"};
-
-static char *background_x32[] = {
- "32 32 28 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #336666",
- "3 c #339933",
- "4 c #339966",
- "5 c #33CC33",
- "6 c #33CC66",
- "7 c #663333",
- "8 c #666633",
- "9 c #666666",
- "A c #666699",
- "B c #669966",
- "C c #6699CC",
- "D c #66CC66",
- "E c #66CCFF",
- "F c #996666",
- "G c #999966",
- "H c #999999",
- "I c #99CC66",
- "J c #99CC99",
- "K c #99CCCC",
- "L c #CC9999",
- "M c #CCCC99",
- "N c #FFCC99",
- "O c #FFCCCC",
- "P c #C0C0C0",
- "Q c #808080",
- " ",
- "02AAAAAAAAAAAAAAAA97777777777710",
- "0CEEEEEEEEEEEEEEEEKLLLLLLLLLLLF0",
- "0CEEEEEEEEEEEEEEEELLLLGGGLLLLLF0",
- "0CEEEEEEEEEEEEEEEELLLG333GLLLLF0",
- "0CEEEEEEEEEEEEEEEELLG33333GLLLF0",
- "0CEEEEEEEEEEEEEEEKLLG33333GLLLF0",
- "0CEEEEEEEEEEEEEEELLLG33333BLLLF0",
- "0CEEEEEEEEEEEEEEJLLILB333BLLLLF0",
- "0CEEEEEEEEEEEEELI555ILBGGGLLLLF0",
- "0CEEEEEEEEEEEKLI55555ILLLLLLLLF0",
- "0CEEEEEEEEEEPLLD55555ILLLLLLLLF0",
- "0CEEEEEEKPLLLLLI55555DMMLLLLLLF0",
- "0CEEEELLLLLLLLLID555DMMMMMLLLLF0",
- "0CEEEKLLLLLLLLLLM6IIMMMMMMMLLLF0",
- "0CEEKLG44BLLLLLMMMMMMMMMMMMMMLF0",
- "0CEKLHB4444LLLMMMMMMMMMMMMMMMLF0",
- "0QLLLG4444BLLMMMMMMMNOOMMMMMMLF0",
- "09LLLH44444LMMMMMMMOOOOOMMMMMLF0",
- "09LLLLB444GLMMMMMMOOOOOOMMMMMLF0",
- "09LLLLL4BBLMMMMMMOOOOOOOMMMMMLF0",
- "09LLLLLLLLDD5IMMOOOOOOONMMMMLLF0",
- "09LLLLLLLI5555IMOOOOOOOMMMMMLLF0",
- "09LLLLLLL55555DMOOOOOONMMMMMLLF0",
- "09LGBBBLLD5555DMMOOOOMMMMMMLLLF0",
- "09H3333BH55555DMMMMMMMMMMMMLLLF0",
- "09333333GHD555MMMMMMMMMMMMLLLLF0",
- "09B33333GLHIMMMMMMMMMMMMMLLLLLF0",
- "09B33333GLLLLLMMMMMMMMMLLLLLLLF0",
- "09LG333GLLLLLLLLLLLLLLLLLLLLLLF0",
- "07FFBFFFFFFFFFFFFFFFFFFFFFFFFF80",
- " 000000000000000000000000000000 "};
-
-static char **background_xpm[3] = { background_x16, background_x24, background_x32 };
-
diff --git a/app/bin/bitmaps/benchwork.xpm b/app/bin/bitmaps/benchwork.xpm
deleted file mode 100644
index a94b1fa..0000000
--- a/app/bin/bitmaps/benchwork.xpm
+++ /dev/null
@@ -1,112 +0,0 @@
-static char *benchwork_x16[] = {
- "16 16 9 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #663300",
- "3 c #993300",
- "4 c #996600",
- "5 c #CC6600",
- "6 c #FF6600",
- "7 c #FF9900",
- " 2 3 ",
- " 126743 ",
- " 1476257 ",
- " 026752677 ",
- " 1366247777 ",
- " 00001677777 ",
- " 07772777777 ",
- " 07772777777 ",
- " 07772777777 ",
- " 07772777777 ",
- " 07772777775 ",
- " 07772777742 ",
- " 0777277622 ",
- " 07772762 ",
- " 0777252 ",
- " 000012 "};
-
-static char *benchwork_x24[] = {
- "24 24 10 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #993300",
- "5 c #996600",
- "6 c #CC6600",
- "7 c #FF6600",
- "8 c #FF9900",
- " ",
- " 03788843 ",
- " 147887368 ",
- " 02688863788 ",
- " 147887358888 ",
- " 01688863788888 ",
- " 137887447888888 ",
- " 0000003688888888 ",
- " 0888807888888888 ",
- " 0888808888888888 ",
- " 0888808888888888 ",
- " 0888808888888888 ",
- " 0888808888888888 ",
- " 0888808888888888 ",
- " 0888808888888888 ",
- " 0888808888888886 ",
- " 0888808888888743 ",
- " 088880888888733 ",
- " 0888808888863 ",
- " 088880888853 ",
- " 08888088733 ",
- " 088880873 ",
- " 08888053 ",
- " 0000001 "};
-
-static char *benchwork_x32[] = {
- "32 32 10 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #993300",
- "5 c #996600",
- "6 c #CC6600",
- "7 c #FF6600",
- "8 c #FF9900",
- " ",
- " 027888874 ",
- " 3478888736 ",
- " 026888885378 ",
- " 1478888736888 ",
- " 16888886378888 ",
- " 1378888734888888 ",
- " 16888886268888888 ",
- " 0378888743788888888 ",
- " 16888887368888888888 ",
- " 000000001788888888888 ",
- " 088888884888888888888 ",
- " 088888884888888888888 ",
- " 088888884888888888888 ",
- " 088888884888888888888 ",
- " 088888884888888888888 ",
- " 088888884888888888888 ",
- " 088888884888888888888 ",
- " 088888884888888888888 ",
- " 088888884888888888888 ",
- " 088888884888888888888 ",
- " 088888884888888888873 ",
- " 08888888488888888863 ",
- " 0888888848888888863 ",
- " 088888884888888743 ",
- " 08888888488888733 ",
- " 088888884888863 ",
- " 08888888488853 ",
- " 0888888848733 ",
- " 08888888463 ",
- " 0000000033 ",
- " 0 "};
-
-static char **benchwork_xpm[3] = { benchwork_x16, benchwork_x24, benchwork_x32 };
-
diff --git a/app/bin/bitmaps/bezier-line.xpm b/app/bin/bitmaps/bezier-line.xpm
deleted file mode 100644
index 2aea754..0000000
--- a/app/bin/bitmaps/bezier-line.xpm
+++ /dev/null
@@ -1,98 +0,0 @@
-static char *bezier_line_x16[] = {
- "16 16 5 1",
- " c None",
- "0 c #000000",
- "1 c #990000",
- "2 c #CC0000",
- "3 c #800000",
- " 2 ",
- " 2222222222221",
- " 22222222221111",
- " 22 00 ",
- " 00 ",
- " 0 ",
- " 0 ",
- " 00 ",
- " 0 ",
- " 00 ",
- " 0 ",
- " 0 ",
- " 00 2 ",
- " 13331 2222 ",
- "12222222222 2 ",
- " 222 "};
-
-static char *bezier_line_x24[] = {
- "24 24 4 1",
- " c None",
- "0 c #000000",
- "1 c #990000",
- "2 c #CC0000",
- " ",
- " 222 ",
- " 22 2222222222222221 ",
- " 2 2222222222221111 ",
- " 2222 00 ",
- " 0 ",
- " 0 ",
- " 00 ",
- " 00 ",
- " 0 ",
- " 00 ",
- " 0 ",
- " 00 ",
- " 0 ",
- " 0 ",
- " 00 ",
- " 0 ",
- " 0 ",
- " 0 ",
- " 00 2222 ",
- " 000 22 2 ",
- " 222222222222222 2 ",
- " 2222 ",
- " 22 "};
-
-static char *bezier_line_x32[] = {
- "32 32 6 1",
- " c None",
- "0 c #000000",
- "1 c #660000",
- "2 c #990000",
- "3 c #CC0000",
- "4 c #800000",
- " ",
- " 33333 ",
- " 3333333 ",
- " 33 333333333333333333332 ",
- " 33 333333333333333333334 ",
- " 3333333 0000 ",
- " 33333 0000 ",
- " 00 ",
- " 00 ",
- " 000 ",
- " 000 ",
- " 00 ",
- " 000 ",
- " 00 ",
- " 000 ",
- " 00 ",
- " 00 ",
- " 000 ",
- " 00 ",
- " 000 ",
- " 00 ",
- " 00 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 3333 ",
- " 0000 333333 ",
- " 24441142 33333333 33 ",
- " 23333333333333333333 33 ",
- " 233333 333 333 ",
- " 33333 ",
- " 333 "};
-
-static char **bezier_line_xpm[3] = { bezier_line_x16, bezier_line_x24, bezier_line_x32 };
-
diff --git a/app/bin/bitmaps/bezier-track.xpm b/app/bin/bitmaps/bezier-track.xpm
deleted file mode 100644
index a8b7d92..0000000
--- a/app/bin/bitmaps/bezier-track.xpm
+++ /dev/null
@@ -1,130 +0,0 @@
-static char *bezier_track_x16[] = {
- "16 16 9 1",
- " c None",
- "0 c #000000",
- "1 c #996666",
- "2 c #999999",
- "3 c #CC0000",
- "4 c #CC6666",
- "5 c #CC9966",
- "6 c #FFCCCC",
- "7 c #808080",
- " ",
- " 434 200",
- " 3 33333333333",
- " 434 07 5 5",
- " 0 5 700",
- " 05 602 ",
- " 06 50 ",
- " 06160 ",
- " 05 60 ",
- " 06 50 ",
- " 206160 ",
- "0075 60 ",
- " 5 570 434 ",
- "3333333333 3 ",
- "002 434 ",
- " "};
-
-static char *bezier_track_x24[] = {
- "24 24 18 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #333333",
- "4 c #663333",
- "5 c #666633",
- "6 c #990000",
- "7 c #993300",
- "8 c #996633",
- "9 c #999933",
- "A c #999966",
- "B c #CC0000",
- "C c #CC3300",
- "D c #CC3333",
- "E c #CC6633",
- "F c #CC9966",
- "G c #CCCC66",
- " ",
- " FF ",
- " BBBB G 00000",
- " BB BBBBBBBBBBD76BEEB",
- " BB BBBBBBBBB66ECBEEB",
- " BBBB GF0 FF0100",
- " 4F 244 G ",
- " 0 GF20FF ",
- " G4 2F ",
- " 18G 00 ",
- " 0 A5 ",
- " F48 0F ",
- " 05GG10 ",
- " F50 A5 ",
- " A5F 0 F ",
- " F 0 GG20 ",
- " 854 58G ",
- " G G808G 00 ",
- " 9218 F0 BB ",
- "084 GF 02F BBBB ",
- "BBBBBBBBBBBBBBBBB B ",
- "083008 BBBB ",
- "088 FF BBB ",
- " G "};
-
-static char *bezier_track_x32[] = {
- "32 32 20 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #333333",
- "4 c #663333",
- "5 c #666633",
- "6 c #990000",
- "7 c #993300",
- "8 c #996633",
- "9 c #999933",
- "A c #999966",
- "B c #CC0000",
- "C c #CC3300",
- "D c #CC3333",
- "E c #CC6633",
- "F c #CC9933",
- "G c #CC9966",
- "H c #CCCC66",
- "I c #800000",
- " ",
- " HH ",
- " BBB AG80",
- " BBBBBB H 0002540",
- " BBB BBBBBBBBBBBBBCE76BBEFE ",
- " BB BBBBBBBBBBBBBBBBBBBBBBB",
- " BBB BBB EDBI6CGGC EGE ",
- " BBBBB HG2 GH800340",
- " BBB G5GH 484 HH ",
- " 0GHHG00AH ",
- " H 0 H95 ",
- " H88 35H ",
- " 85HH 0 ",
- " 0 HHG3 ",
- " HH2 H5GH ",
- " HA8H 02H ",
- " 2GHHG0 ",
- " 0 HH8A ",
- " H84 45HH ",
- " 88HH 0 ",
- " 0 HHH10 ",
- " HG2 HG8H ",
- " H 85GH 2GH ",
- " HG20GHHH 0 ",
- " HG0448 HG2 BBB ",
- "00400GH 85GH BBBBB ",
- " EFBBEFEB66DEEBBBBBBBBB BBB ",
- " BBBBBBBBBBBBBBBBBBBBB BB ",
- " EG7III8E BBB BBB ",
- "04520 HH BBBBB ",
- " HH BB ",
- " "};
-
-static char **bezier_track_xpm[3] = { bezier_track_x16, bezier_track_x24, bezier_track_x32 };
-
diff --git a/app/bin/bitmaps/block.xpm b/app/bin/bitmaps/block.xpm
deleted file mode 100644
index e3a6937..0000000
--- a/app/bin/bitmaps/block.xpm
+++ /dev/null
@@ -1,138 +0,0 @@
-static char *block_x16[] = {
- "16 16 18 1",
- " c None",
- "0 c #000000",
- "1 c #003300",
- "2 c #003333",
- "3 c #006600",
- "4 c #006666",
- "5 c #009900",
- "6 c #009999",
- "7 c #00CC00",
- "8 c #00FF00",
- "9 c #330000",
- "A c #660000",
- "B c #990000",
- "C c #990033",
- "D c #CC0033",
- "E c #FF0033",
- "F c #008000",
- "G c #008080",
- " ",
- " 0 ",
- " 0 1111 ",
- " 0 6 1577F1 ",
- " G6 088880 ",
- " 66 188881 ",
- " 6 66 178871 ",
- " 66 1FF3 ",
- " 099966 00 ",
- " 0ADDB966 66 ",
- " 9DEEE9 6666 ",
- " 9EEEE9 66 ",
- " 9CEED9 6640 ",
- " 99A9 6 0 ",
- " 0 ",
- " 0"};
-
-static char *block_x24[] = {
- "24 24 18 1",
- " c None",
- "0 c #000000",
- "1 c #003300",
- "2 c #006600",
- "3 c #006666",
- "4 c #009900",
- "5 c #009999",
- "6 c #00CC00",
- "7 c #00FF00",
- "8 c #330000",
- "9 c #660000",
- "A c #990000",
- "B c #990033",
- "C c #CC0033",
- "D c #FF0033",
- "E c #800000",
- "F c #008000",
- "G c #008080",
- " ",
- " 00 ",
- " 000 ",
- " 000 110 ",
- " 000 5 1266421 ",
- " 000 555 2777772 ",
- " 03555 167777761 ",
- " 555 177777761 ",
- " 55555 177777761 ",
- " 555 555 167777741 ",
- " 5 555 2677761 ",
- " 555 12F21 ",
- " 080 555 ",
- " 8BCC98 555 ",
- " 8DDDDD9 555 55 ",
- " 0BDDDDDC8 555555 ",
- " 8CDDDDDC8 5555 ",
- " 8CDDDDDC8 55G0 ",
- " 9DDDDDA8 555000 ",
- " 9ECDDB9 55 000 ",
- " 08088 000 ",
- " 000 ",
- " 000",
- " 0 "};
-
-static char *block_x32[] = {
- "32 32 19 1",
- " c None",
- "0 c #000000",
- "1 c #003300",
- "2 c #003333",
- "3 c #006600",
- "4 c #006666",
- "5 c #009900",
- "6 c #009999",
- "7 c #00CC00",
- "8 c #00FF00",
- "9 c #330000",
- "A c #660000",
- "B c #990000",
- "C c #990033",
- "D c #CC0033",
- "E c #FF0033",
- "F c #800000",
- "G c #008000",
- "H c #008080",
- " ",
- " 00 ",
- " 000 ",
- " 0000 ",
- " 0000 00 ",
- " 0000 6 135531 ",
- " 0000 666 137888871 ",
- " 0000 6666 1888888871 ",
- " 000H666 1588888888G ",
- " 26666 178888888850 ",
- " 66666 178888888871 ",
- " 6666666 178888888850 ",
- " 6666 6666 05888888883 ",
- " 66 6666 1788888851 ",
- " 6666 17888851 ",
- " 6666 103111 ",
- " 00 6666 ",
- " 99FBA9 6666 ",
- " 9DEEEEDA 6666 6 ",
- " 9DEEEEEED9 6666 666 ",
- " 9EEEEEEEEB0 6666 666 ",
- " 0FEEEEEEEED9 666666 ",
- " 0FEEEEEEEED9 6666 ",
- " AEEEEEEEEC0 66640 ",
- " 9DEEEEEEEA 6664000 ",
- " AEEEEEEB9 666 0000 ",
- " 9DDDDA9 6 0000 ",
- " 0999 0000 ",
- " 0000 ",
- " 000 ",
- " 00 ",
- " "};
-
-static char **block_xpm[3] = { block_x16, block_x24, block_x32 };
-
diff --git a/app/bin/bitmaps/bottom.xpm b/app/bin/bitmaps/bottom.xpm
deleted file mode 100644
index dd50a6c..0000000
--- a/app/bin/bitmaps/bottom.xpm
+++ /dev/null
@@ -1,101 +0,0 @@
-static char *bottom_x16[] = {
- "16 16 6 1",
- " c None",
- "0 c #000000",
- "1 c #990000",
- "2 c #CC0000",
- "3 c #FF0000",
- "4 c #808080",
- " ",
- " ",
- " 000000000 ",
- " 104444444440",
- " 11204444444440",
- " 123304444444440",
- " 233304444444440",
- "1233304444444440",
- "1233304444444440",
- "1233304444444440",
- " 133304444444440",
- " 13304444444440",
- " 1104444444440",
- " 0000000000",
- " ",
- " "};
-
-static char *bottom_x24[] = {
- "24 24 6 1",
- " c None",
- "0 c #000000",
- "1 c #990000",
- "2 c #CC0000",
- "3 c #FF0000",
- "4 c #808080",
- " ",
- " ",
- " ",
- " ",
- " 000000000000000 ",
- " 111044444444444440 ",
- " 1223044444444444440 ",
- " 13333044444444444440 ",
- " 133333044444444444440 ",
- " 1333333044444444444440 ",
- " 1333333044444444444440 ",
- " 1333333044444444444440 ",
- " 2333333044444444444440 ",
- " 1333333044444444444440 ",
- " 1333333044444444444440 ",
- " 1233333044444444444440 ",
- " 123333044444444444440 ",
- " 12333044444444444440 ",
- " 1112044444444444440 ",
- " 000000000000000 ",
- " ",
- " ",
- " ",
- " "};
-
-static char *bottom_x32[] = {
- "32 32 6 1",
- " c None",
- "0 c #000000",
- "1 c #990000",
- "2 c #CC0000",
- "3 c #FF0000",
- "4 c #808080",
- " ",
- " ",
- " ",
- " ",
- " ",
- " 00000000000000000000 ",
- " 04444444444444444440 ",
- " 11104444444444444444440 ",
- " 1223304444444444444444440 ",
- " 113333304444444444444444440 ",
- " 1233333304444444444444444440 ",
- " 2333333304444444444444444440 ",
- " 13333333304444444444444444440 ",
- " 123333333304444444444444444440 ",
- " 123333333304444444444444444440 ",
- " 133333333304444444444444444440 ",
- " 133333333304444444444444444440 ",
- " 133333333304444444444444444440 ",
- " 123333333304444444444444444440 ",
- " 123333333304444444444444444440 ",
- " 13333333304444444444444444440 ",
- " 1333333304444444444444444440 ",
- " 133333304444444444444444440 ",
- " 12333304444444444444444440 ",
- " 1112204444444444444444440 ",
- " 1104444444444444444440 ",
- " 00000000000000000000 ",
- " ",
- " ",
- " ",
- " ",
- " "};
-
-static char **bottom_xpm[3] = { bottom_x16, bottom_x24, bottom_x32 };
-
diff --git a/app/bin/bitmaps/box.xpm b/app/bin/bitmaps/box.xpm
deleted file mode 100644
index 610fb5a..0000000
--- a/app/bin/bitmaps/box.xpm
+++ /dev/null
@@ -1,93 +0,0 @@
-static char *box_x16[] = {
- "16 16 4 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #CC0000",
- " ",
- " 00000000000000 ",
- " 0 0 ",
- " 0 22220 ",
- " 0 2220 ",
- " 0 22 20 ",
- " 0 22 20 ",
- " 0 22 0 ",
- " 0 22 0 ",
- " 0 2 0 ",
- " 0 2 0 ",
- " 0 2 0 ",
- " 0 2 0 ",
- " 12 0 ",
- " 00000000000000 ",
- " "};
-
-static char *box_x24[] = {
- "24 24 3 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- " ",
- " ",
- " 000000000000000000000 ",
- " 0 0 ",
- " 0 1111111 0 ",
- " 0 111111 0 ",
- " 0 1111 0 ",
- " 0 11 11 0 ",
- " 0 11 11 0 ",
- " 0 11 11 0 ",
- " 0 11 0 ",
- " 0 11 0 ",
- " 0 11 0 ",
- " 0 1 0 ",
- " 0 1 0 ",
- " 0 1 0 ",
- " 0 1 0 ",
- " 0 11 0 ",
- " 0 11 0 ",
- " 0 11 0 ",
- " 0 0 ",
- " 0000000000000000000000 ",
- " ",
- " "};
-
-static char *box_x32[] = {
- "32 32 3 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- " ",
- " ",
- " ",
- " 0000000000000000000000000000 ",
- " 0 0 ",
- " 0 11111111 0 ",
- " 0 111111111 0 ",
- " 0 11111 0 ",
- " 0 111111 0 ",
- " 0 1111111 0 ",
- " 0 1111 11 0 ",
- " 0 1111 11 0 ",
- " 0 1111 11 0 ",
- " 0 1111 11 0 ",
- " 0 1111 0 ",
- " 0 111 0 ",
- " 0 111 0 ",
- " 0 111 0 ",
- " 0 111 0 ",
- " 0 111 0 ",
- " 0 111 0 ",
- " 0 1111 0 ",
- " 0 1111 0 ",
- " 0 1111 0 ",
- " 0 1111 0 ",
- " 0 1111 0 ",
- " 0 111 0 ",
- " 0 0 ",
- " 0000000000000000000000000000 ",
- " ",
- " ",
- " "};
-
-static char **box_xpm[3] = { box_x16, box_x24, box_x32 };
-
diff --git a/app/bin/bitmaps/bridge.xpm b/app/bin/bitmaps/bridge.xpm
deleted file mode 100644
index 089542d..0000000
--- a/app/bin/bitmaps/bridge.xpm
+++ /dev/null
@@ -1,105 +0,0 @@
-static char *bridge_x16[] = {
- "16 16 5 1",
- " c None",
- "0 c #000000",
- "1 c #333300",
- "2 c #333333",
- "3 c #CC6600",
- " ",
- " ",
- "2 2 ",
- "22 22 ",
- " 2222222222222 ",
- " 3 3 3 3 3 3 3 ",
- "000000000000000 ",
- " 3 3 3 3 3 3 3 ",
- "010000000000000 ",
- " 3 3 3 3 3 3 3 ",
- " 2222222222222 ",
- "22 22 ",
- "2 2 ",
- " ",
- " ",
- " "};
-
-static char *bridge_x24[] = {
- "24 24 8 1",
- " c None",
- "0 c #000000",
- "1 c #333300",
- "2 c #663300",
- "3 c #996600",
- "4 c #996666",
- "5 c #CC6600",
- "6 c #CC9900",
- " ",
- " ",
- "444 44",
- " 44 44 ",
- " 44 44 ",
- " 444444444444444444 ",
- " 444444444444444444 ",
- " ",
- " 6 6 6 66 6 66 6 ",
- "032023003103300300320130",
- "032023003103300300320130",
- " 6 6 6 66 6 66 6 ",
- " 6 6 6 66 6 66 6 ",
- " 6 6 6 66 6 66 6 ",
- "000000000000000000000000",
- " 6 6 6 66 6 66 6 ",
- " ",
- " ",
- " 444444444444444444 ",
- " 44444444444444444444 ",
- " 44 44 ",
- "444 444",
- " 4 44",
- " "};
-
-static char *bridge_x32[] = {
- "32 32 9 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #996600",
- "5 c #996666",
- "6 c #CC6600",
- "7 c #CC9900",
- " ",
- " ",
- " 55 55",
- " 55 555",
- " 555 555 ",
- " 555 555 ",
- " 55555555555555555555555555 ",
- " 555555555555555555555555 ",
- " 55555555555555555555555 ",
- " ",
- " ",
- " 77 77 777 77 77 77 77 ",
- "03320033002320033002330033101330",
- "00000000000000000000000000000000",
- " 77 77 777 77 77 77 77 ",
- " 77 77 777 77 77 77 77 ",
- " 77 77 777 77 77 77 77 ",
- " 77 77 777 77 77 77 77 ",
- " 4430044003430044003440044202440",
- "00000000000000000000000000000000",
- " 77 77 777 77 77 77 77 ",
- " ",
- " ",
- " 5555555555555555555555 ",
- " 555555555555555555555555 ",
- " 55555555555555555555555555 ",
- " 555 555 ",
- " 555 555 ",
- " 55 5555",
- "555 555",
- " ",
- " "};
-
-static char **bridge_xpm[3] = { bridge_x16, bridge_x24, bridge_x32 };
-
diff --git a/app/bin/bitmaps/building.xpm b/app/bin/bitmaps/building.xpm
deleted file mode 100644
index 044e3f8..0000000
--- a/app/bin/bitmaps/building.xpm
+++ /dev/null
@@ -1,125 +0,0 @@
-static char *building_x16[] = {
- "16 16 13 1",
- " c None",
- "0 c #000000",
- "1 c #333300",
- "2 c #333333",
- "3 c #666600",
- "4 c #666633",
- "5 c #666666",
- "6 c #996666",
- "7 c #999966",
- "8 c #999999",
- "9 c #CCCCCC",
- "A c #C0C0C0",
- "B c #808080",
- " ",
- " 011111111110 ",
- " 137888888841 ",
- " 448AAAAAA844 ",
- " 4448AAAAA634 ",
- " 4846AAAA84B4 ",
- " 4884333334A4 ",
- " 48B5AAAA8484 ",
- " 4B4999999B44 ",
- " 448999999944 ",
- " 159999999981 ",
- "0550000000000050",
- "0999999999999992",
- "0999999999999992",
- "0555555555555550",
- " "};
-
-static char *building_x24[] = {
- "24 24 15 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #333333",
- "4 c #663333",
- "5 c #666600",
- "6 c #666633",
- "7 c #666666",
- "8 c #996666",
- "9 c #999966",
- "A c #999999",
- "B c #CCCCCC",
- "C c #C0C0C0",
- "D c #808080",
- " ",
- " ",
- " 12222222222222220 ",
- " 066777DAAAAAAAAD50 ",
- " 156CCCCCCCCCCCCD62 ",
- " 156DCCCCCCCCCCA652 ",
- " 1686ACCCCCCCCCD662 ",
- " 16A66CCCCCCCCA6982 ",
- " 16CA6ACCCCCCCD6C82 ",
- " 16CC66777777769B82 ",
- " 16CC7377777774AB82 ",
- " 16CA6BBBBBBBBA6B82 ",
- " 16A6ABBBBBBBBB6D82 ",
- " 1677BBBBBBBBBBC662 ",
- " 156BBBBBBBBBBBB752 ",
- " 06ABBBBBBBBBBBBB41 ",
- "333000000000000000000333",
- "3ACCBBBBBBBBBBBBBBBBCCC0",
- "3BBBBBBBBBBBBBBBBBBBBBB0",
- "3BBBBBBBBBBBBBBBBBBBBBB0",
- "3BBBBBBBBBBBBBBBBBBBBBB0",
- "3ACCCCCCCCCCCCCCCCCCCCC0",
- "333333333333333333333333",
- " "};
-
-static char *building_x32[] = {
- "32 32 14 1",
- " c None",
- "0 c #000000",
- "1 c #333300",
- "2 c #333333",
- "3 c #663333",
- "4 c #666600",
- "5 c #666633",
- "6 c #666666",
- "7 c #996666",
- "8 c #999966",
- "9 c #999999",
- "A c #CCCCCC",
- "B c #C0C0C0",
- "C c #808080",
- " ",
- " ",
- " ",
- " 0111111111111111111110 ",
- " 0456666C99999999999951 ",
- " 358BBBBBBBBBBBBBBBB951 ",
- " 5559BBBBBBBBBBBBBBB655 ",
- " 5756BBBBBBBBBBBBBB9555 ",
- " 59559BBBBBBBBBBBBB7595 ",
- " 59955BBBBBBBBBBBB955A5 ",
- " 59B649BBBBBBBBBBBC59A5 ",
- " 59B9559BBBBBBBBB955AA5 ",
- " 59BB956999999999659AA5 ",
- " 59BB94111111111115AAA5 ",
- " 59BBC5AAAAAAAAAAA59AA5 ",
- " 59B959AAAAAAAAAAA95AA5 ",
- " 59B56AAAAAAAAAAAAA2CA5 ",
- " 59C5AAAAAAAAAAAAAA95B5 ",
- " 5959AAAAAAAAAAAAAAA555 ",
- " 556AAAAAAAAAAAAAAAAB55 ",
- " 33AAAAAAAAAAAAAAAAAA65 ",
- " 09AAAAAAAAAAAAAAAAAAB0 ",
- "20006000000000000000000000062002",
- "29AAAAAAAAAAAAAAAAAAAAAAAAAAAAB2",
- "29AAAAAAAAAAAAAAAAAAAAAAAAAAAAB2",
- "29AAAAAAAAAAAAAAAAAAAAAAAAAAAAB2",
- "29AAAAAAAAAAAAAAAAAAAAAAAAAAAAB2",
- "29AAAAAAAAAAAAAAAAAAAAAAAAAAAAB2",
- "29AAAAAAAAAAAAAAAAAAAAAAAAAAAAB2",
- "20000000000000000000000000000002",
- " ",
- " "};
-
-static char **building_xpm[3] = { building_x16, building_x24, building_x32 };
-
diff --git a/app/bin/bitmaps/car-inventory.xpm b/app/bin/bitmaps/car-inventory.xpm
deleted file mode 100644
index 45ceb2c..0000000
--- a/app/bin/bitmaps/car-inventory.xpm
+++ /dev/null
@@ -1,103 +0,0 @@
-static char *car_inventory_x16[] = {
- "16 16 6 1",
- " c None",
- "0 c #000000",
- "1 c #003366",
- "2 c #006600",
- "3 c #663300",
- "4 c #999999",
- " ",
- " 33333333 ",
- " 33333333 ",
- " 33333333 ",
- " 4 ",
- " 0411111111 ",
- " 11111111 ",
- " 11111111 ",
- " 4 ",
- " 0422222222 ",
- " 22222222 ",
- " 22222222 ",
- " 4 4 4 4 ",
- " 040 040 ",
- " ",
- " "};
-
-static char *car_inventory_x24[] = {
- "24 24 6 1",
- " c None",
- "0 c #000000",
- "1 c #003366",
- "2 c #006600",
- "3 c #663300",
- "4 c #CCCCCC",
- "44444444444444444 ",
- "43333333333333334 ",
- "43333333333333334 ",
- "43333333333333334 ",
- "43333333333333334 ",
- "43333333333333334 ",
- "44444444444444444 ",
- " 00 4444444444444444 ",
- " 00041111111111111114 ",
- " 0 41111111111111114 ",
- " 41111111111111114 ",
- " 41111111111111114 ",
- " 41111111111111114 ",
- " 44444444444444444 ",
- " 0044444444444444444",
- " 0042222222222222224",
- " 0042222222222222224",
- " 42222222222222224",
- " 42222222222222224",
- " 42222222222222224",
- " 44444444444444444",
- " 00 00 00 00 ",
- " 00000 00000 ",
- " 00 00 00 00 "};
-
-static char *car_inventory_x32[] = {
- "32 32 8 1",
- " c None",
- "0 c #000000",
- "1 c #003366",
- "2 c #006600",
- "3 c #663300",
- "4 c #999999",
- "5 c #CCCCCC",
- "6 c #C0C0C0",
- " 555555555555555555555 ",
- "53333333333333333333335 ",
- "53333333333333333333335 ",
- "53333333333333333333335 ",
- "53333333333333333333335 ",
- "53333333333333333333335 ",
- "53333333333333333333335 ",
- "53333333333333333333335 ",
- "53333333333333333333335 ",
- " 564555555555555555555 ",
- " 0005555555555555555555555 ",
- " 0005111111111111111111115 ",
- " 00 5111111111111111111115 ",
- " 5111111111111111111115 ",
- " 5111111111111111111115 ",
- " 5111111111111111111115 ",
- " 5111111111111111111115 ",
- " 5111111111111111111115 ",
- " 5555555555555555555555 ",
- " 000 5555555555555555555555",
- " 00052222222222222222222225",
- " 00052222222222222222222225",
- " 52222222222222222222225",
- " 52222222222222222222225",
- " 52222222222222222222225",
- " 52222222222222222222225",
- " 52222222222222222222225",
- " 55555555555555555555555",
- " 00 00 000 00 ",
- " 00000000 0000000 ",
- " 0000000 0000000 ",
- " 0 00 0 00 "};
-
-static char **car_inventory_xpm[3] = { car_inventory_x16, car_inventory_x24, car_inventory_x32 };
-
diff --git a/app/bin/bitmaps/change-grid.xpm b/app/bin/bitmaps/change-grid.xpm
deleted file mode 100644
index 0287f34..0000000
--- a/app/bin/bitmaps/change-grid.xpm
+++ /dev/null
@@ -1,118 +0,0 @@
-static char *change_grid_x16[] = {
- "16 16 12 1",
- " c None",
- "0 c #000000",
- "1 c #00CC00",
- "2 c #00CC33",
- "3 c #339933",
- "4 c #666666",
- "5 c #669933",
- "6 c #669966",
- "7 c #996666",
- "8 c #999966",
- "9 c #CC9966",
- "A c #FFCC66",
- "1111111111111111",
- "1111111111111111",
- "1 1 11 3 1",
- "1 1 11 484 1",
- "11111111159A8311",
- "1 1 169A94 1",
- "1 1 69A962 1",
- "11111148A9411111",
- "1111168794211111",
- "1 14994 1 1",
- "1 14462 1 1",
- "1111111111111111",
- "11 11 11 11 11",
- "1 1 11 1 1",
- "11 11 11 11 11",
- "1111111111111111"};
-
-static char *change_grid_x24[] = {
- "24 24 12 1",
- " c None",
- "0 c #000000",
- "1 c #00CC00",
- "2 c #33CC33",
- "3 c #666666",
- "4 c #669933",
- "5 c #669966",
- "6 c #996666",
- "7 c #999966",
- "8 c #CC9966",
- "9 c #FF9966",
- "A c #FFCC66",
- " 1 1 11 1 1 ",
- "111111111111111111111111",
- "11 1 11 1 11",
- "11 1 11 1 11",
- "11 1 11 33 11",
- "11 1 11 3796 11",
- "1111111111111147AA932111",
- "11 11 1157AAA83 11",
- "11 1 147AAA83 11",
- "11 1 47AAA85 11",
- "11 1 37AAA831 11",
- "11111111156AAA8511111111",
- "111111114787A85111111111",
- "11 1 39A863 1 11",
- "11 1 39A83 1 11",
- "11 1 33351 1 11",
- "11 1 11 1 11",
- "111111111111111111111111",
- "11 1 11 1 11",
- "11 1 11 1 11",
- "11 1 11 1 11",
- "11 1 11 1 11",
- "111111111111111111111111",
- "111111111111111111111111"};
-
-static char *change_grid_x32[] = {
- "32 32 11 1",
- " c None",
- "0 c #000000",
- "1 c #00CC00",
- "2 c #33CC33",
- "3 c #666666",
- "4 c #669933",
- "5 c #669966",
- "6 c #996666",
- "7 c #999966",
- "8 c #CC9966",
- "9 c #FFCC66",
- " ",
- "11111111111111111111111111111111",
- "11111111111111111111111111111111",
- " 1 11 11 11 11",
- " 1 11 11 11 11",
- " 1 11 11 44 11",
- " 1 11 11 3775 11",
- " 1 11 11 379973 11",
- " 1111111111111111112799997411111",
- " 1111111111111111127999997411111",
- " 1 11 11379999973 11",
- " 1 11 1279999975 11",
- " 1 11 279999974 11",
- " 1 11 3799999751 11",
- " 1 11 37999997311 11",
- " 1111111111123899998511111111111",
- " 1111111111279789984111111111111",
- " 1 11 39997883 11 11",
- " 1 11 3999963 11 11",
- " 1 11 399985 11 11",
- " 1 11 333351 11 11",
- " 1 11 11 11 11",
- " 1111111111111111111111111111111",
- " 1111111111111111111111111111111",
- " 1 11 11 11 11",
- " 1 11 11 11 11",
- " 1 11 11 11 11",
- " 1 11 11 11 11",
- " 1 11 11 11 11",
- "111 11 11 111 111",
- "11111111111111111111111111111111",
- " "};
-
-static char **change_grid_xpm[3] = { change_grid_x16, change_grid_x24, change_grid_x32 };
-
diff --git a/app/bin/bitmaps/circle-center.xpm b/app/bin/bitmaps/circle-center.xpm
deleted file mode 100644
index e58036a..0000000
--- a/app/bin/bitmaps/circle-center.xpm
+++ /dev/null
@@ -1,114 +0,0 @@
-static char *circle_center_x16[] = {
- "16 16 6 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #CC9966",
- "3 c #FF0000",
- "4 c #808080",
- " 000000 ",
- " 40 2 2 04 ",
- " 0 2 0000 2 0 ",
- " 4 00 00 4 ",
- " 020 020 ",
- "0 0 0 0",
- "020 020",
- "0 0 0 0",
- "0 0 3 0 0",
- "020 3 020",
- "0 3 1 0",
- " 020 31 0 ",
- " 4 00 111 4 ",
- " 0 2 0000 0 ",
- " 40 2 2 04 ",
- " 000000 "};
-
-static char *circle_center_x24[] = {
- "24 24 13 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #666600",
- "5 c #990000",
- "6 c #993300",
- "7 c #996600",
- "8 c #CC0000",
- "9 c #CC3300",
- "A c #CC6600",
- "B c #CC9900",
- " B ",
- " 07700 B ",
- " B7000770017 ",
- " 07A A7 B30 BB ",
- " B30 B70033017 17 ",
- " 33 077 BB A303B10 ",
- " 0 A2 B 36 0 ",
- " 00 0A BA0 33B ",
- " A2B00 23B30 ",
- " 13B1B B2 00 ",
- " 0 0 00 0 ",
- " 0 00 33A0 ",
- "B3A77B 8 B77B1B",
- " 2772 8 00 0 ",
- " 00 0B 8 90 00 ",
- " 1B37 8 A93B10 ",
- " B37 0 8857A3B ",
- " 0 33 8985 0 ",
- " 02B307B A856B00 ",
- " 31 31077022 33 ",
- " B 007B 0770 B 00BB ",
- " 320 77 032 ",
- " B 0033007B ",
- " BB "};
-
-static char *circle_center_x32[] = {
- "32 32 12 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #990000",
- "5 c #993300",
- "6 c #996600",
- "7 c #CC0000",
- "8 c #CC3300",
- "9 c #CC6600",
- "A c #CC9900",
- " A ",
- " AA ",
- " A 00000000 A ",
- " 6100 AA 0220 ",
- " 039 AA A900 A ",
- " A 0 A 00000001A 06A ",
- " A60 6200 AA 0320 31 ",
- " 2A 00A A A 00 A 00 ",
- " 0 A10 336 0 ",
- " 00 19 A60 00AA ",
- " 0 00 00 A39 ",
- " A66A 0 29A20 ",
- " 06A66 A91 0 ",
- " 0 09A 0 0 ",
- " 0 0 0 00 ",
- " 00 0 7 33 33 ",
- "A63A93AA 777 A36A66A",
- " 62 61 777 00 00 ",
- " 0 0 777 0 0 ",
- " 0 03A 777 7740 0 ",
- " 00A93A 777 8756 00 ",
- " 63A 00 777773AA36 ",
- " AA20 06A 7777 2AA ",
- " 0 636 777777 00 ",
- " 00 A300 A 777789 00 ",
- " 36 036 AA 620 A60 ",
- " AA10 9000320039 03A ",
- " 000AA 96 A 000 AA ",
- " 022 AA 520 ",
- " A900003200029 ",
- " A 96 A ",
- " A "};
-
-static char **circle_center_xpm[3] = { circle_center_x16, circle_center_x24, circle_center_x32 };
-
diff --git a/app/bin/bitmaps/circle-filled-center.xpm b/app/bin/bitmaps/circle-filled-center.xpm
deleted file mode 100644
index 91f7764..0000000
--- a/app/bin/bitmaps/circle-filled-center.xpm
+++ /dev/null
@@ -1,145 +0,0 @@
-static char *circle_filled_center_x16[] = {
- "16 16 19 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #336699",
- "6 c #339999",
- "7 c #669999",
- "8 c #6699CC",
- "9 c #66CCCC",
- "A c #66CCFF",
- "B c #9999CC",
- "C c #99CCCC",
- "D c #99CCFF",
- "E c #99FFFF",
- "F c #CC0000",
- "G c #CC6666",
- "H c #CC6699",
- " 00 ",
- " 11488413 ",
- " 28AEEEEE93 ",
- " 3AEEEEEEEEA3 ",
- " 38EEEEEEEEEE93 ",
- " 2AEEEEEEEEEEE4 ",
- "05EEEEEEEEEEEE80",
- "18EEEEEBDEEEEE92",
- "18EEEEEDHDEEEE92",
- "06EEEEEEDHDECE81",
- " 4EEEEEEEDHDFE60",
- " 29EEEEEEEDHGA2 ",
- " 3AEEEEEBGFH4 ",
- " 14AEEEEDDA43 ",
- " 268AA973 ",
- " 012210 "};
-
-static char *circle_filled_center_x24[] = {
- "24 24 20 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #336699",
- "6 c #339999",
- "7 c #669999",
- "8 c #6699CC",
- "9 c #66CCCC",
- "A c #66CCFF",
- "B c #9999CC",
- "C c #99CCCC",
- "D c #99CCFF",
- "E c #99FFFF",
- "F c #CC0000",
- "G c #CC6666",
- "H c #CC6699",
- "I c #CC9999",
- " ",
- " 11044011 ",
- " 238AEEEEA942 ",
- " 26AEEEEEEEEE83 ",
- " 29EEEEEEEEEEEEA4 ",
- " 2AEEEEEEEEEEEEEEA3 ",
- " 27EEEEEEEEEEEEEEEE93 ",
- " 4AEEEEEEEEEEEEEEEEE50 ",
- " 19EEEEEEEEEEEEEEEEEEA2 ",
- " 1AEEEEEEEEEEEEEEEEEEE1 ",
- " 3EEEEEEEEEEEEEEEEEEEE50",
- " 4EEEEEEEEDIDEEEEEEEEE60",
- " 4EEEEEEEEECIDEEEEEEEE60",
- " 3EEEEEEEEEECIDEEEEEEE50",
- " 1AEEEEEEEEEECIDEEHCEE4 ",
- " 29EEEEEEEEEEECIDDFBEA1 ",
- " 05EEEEEEEEEEEECIDFCE71 ",
- " 39EEEEEEEEEEEECHFDA2 ",
- " 2AEEEEEEEEDIGFFFD4 ",
- " 04AEEEEEEEDHIBCC62 ",
- " 139EEEEEEEEEEA42 ",
- " 26AEEEEEEA82 ",
- " 2146886411 ",
- " 0000 "};
-
-static char *circle_filled_center_x32[] = {
- "32 32 23 1",
- " c None",
- "0 c #000000",
- "1 c #000033",
- "2 c #003333",
- "3 c #333333",
- "4 c #333366",
- "5 c #336666",
- "6 c #336699",
- "7 c #339999",
- "8 c #669999",
- "9 c #6699CC",
- "A c #66CCCC",
- "B c #66CCFF",
- "C c #9999CC",
- "D c #99CCCC",
- "E c #99CCFF",
- "F c #99FFFF",
- "G c #CC0000",
- "H c #CC3333",
- "I c #CC3366",
- "J c #CC6666",
- "K c #CC6699",
- "L c #CC9999",
- " ",
- " 00333300 ",
- " 3169ABBA97230 ",
- " 35AFFFFFFFFFFB63 ",
- " 4AFFFFFFFFFFFFFFB52 ",
- " 5BFFFFFFFFFFFFFFFFB64 ",
- " 5BFFFFFFFFFFFFFFFFFFF62 ",
- " 5BFFFFFFFFFFFFFFFFFFFFB5 ",
- " 3AFFFFFFFFFFFFFFFFFFFFFFB3 ",
- " 5FFFFFFFFFFFFFFFFFFFFFFFF82 ",
- " 3AFFFFFFFFFFFFFFFFFFFFFFFFB2 ",
- " 2FFFFFFFFFFFFFFFFFFFFFFFFFF5 ",
- " 07FFFFFFFFFFFFFFFFFFFFFFFFFF92 ",
- " 2AFFFFFFFFFFFFFFFFFFFFFFFFFFB3 ",
- " 3AFFFFFFFFFFFFEFFFFFFFFFFFFFB2 ",
- " 3BFFFFFFFFFFFDHLFFFFFFFFFFFFF0 ",
- " 2BFFFFFFFFFFFDHGLFFFFFFFFFFFF0 ",
- " 3BFFFFFFFFFFFFDHGLFFFFFFFFFFB2 ",
- " 3AFFFFFFFFFFFFFDHGLFFFFEEFFFB3 ",
- " 08FFFFFFFFFFFFFFDHGLFFFIHFFFA3 ",
- " 4FFFFFFFFFFFFFFFDHGLFEGHFFF60 ",
- " 2BFFFFFFFFFFFFFFFDHGLEGJFFB2 ",
- " 28FFFFFFFFFFFFFFFFDHGKGLFF92 ",
- " 3BFFFFFFFFFFFFFFFFDHGGCFB3 ",
- " 6BFFFFFFFFFFFFEKJGGGGDF73 ",
- " 47FFFFFFFFFFFFLGGGHKLE94 ",
- " 57FFFFFFFFFFFEEEFFFF94 ",
- " 36BFFFFFFFFFFFFFFB74 ",
- " 239BFFFFFFFFFFFA33 ",
- " 227ABFFFFBA723 ",
- " 0330000230 ",
- " "};
-
-static char **circle_filled_center_xpm[3] = { circle_filled_center_x16, circle_filled_center_x24, circle_filled_center_x32 };
-
diff --git a/app/bin/bitmaps/circle-filled-tangent.xpm b/app/bin/bitmaps/circle-filled-tangent.xpm
deleted file mode 100644
index f20856e..0000000
--- a/app/bin/bitmaps/circle-filled-tangent.xpm
+++ /dev/null
@@ -1,148 +0,0 @@
-static char *circle_filled_tangent_x16[] = {
- "16 16 20 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #336699",
- "6 c #339999",
- "7 c #666699",
- "8 c #669999",
- "9 c #6699CC",
- "A c #66CCCC",
- "B c #66CCFF",
- "C c #9999CC",
- "D c #99CCFF",
- "E c #99FFFF",
- "F c #CC3333",
- "G c #CC6699",
- "H c #CC9999",
- "I c #CC99CC",
- " 0110 ",
- " 3469A842 ",
- " 3AEEEEEEA31 ",
- " 2BEEEEEEEEB4 ",
- " 3AEEEEEEEEEEB3 ",
- " 4EEEEEEEEEEEE60",
- "08EEEEEEEEEEEEA1",
- "2AEEEEEDCIHEEEB2",
- "2AEEEEECFCDEEEB1",
- "09EEEEEHCGDEEEA2",
- "05EEEEEHDDGDEE90",
- " 3BEEEEEEEDGDB3 ",
- " 4BEEEEEEEDG71 ",
- " 34BEEEEEEB74 ",
- " 39ABBB931 ",
- " 021120 "};
-
-static char *circle_filled_tangent_x24[] = {
- "24 24 22 1",
- " c None",
- "0 c #000000",
- "1 c #000033",
- "2 c #003333",
- "3 c #333333",
- "4 c #333366",
- "5 c #336666",
- "6 c #336699",
- "7 c #339999",
- "8 c #669999",
- "9 c #6699CC",
- "A c #66CCCC",
- "B c #66CCFF",
- "C c #9999CC",
- "D c #99CCCC",
- "E c #99CCFF",
- "F c #99FFFF",
- "G c #CC0000",
- "H c #CC6666",
- "I c #CC6699",
- "J c #CC9999",
- "K c #CC99CC",
- " ",
- " 0315555230 ",
- " 46AFFFFFFB73 ",
- " 03AFFFFFFFFFFA42 ",
- " 05BFFFFFFFFFFFFB73 ",
- " 3BFFFFFFFFFFFFFFB5 ",
- " 4AFFFFFFFFFFFFFFFFB4 ",
- " 26FFFFFFFFFFFFFFFFFF94 ",
- " 3BFFFFFFFFFFFFFFFFFFB2 ",
- " 2FFFFFFFFFFFFFFFFFFFF5 ",
- " 5FFFFFFFFFFFFFEFFFFFF80",
- "07FFFFFFFFFDIHGGCFFFFF92",
- "08FFFFFFFFFIGJCDEFFFFFA2",
- "06FFFFFFFFFHIIEFFFFFFF90",
- " 5FFFFFFFFEGKEIEFFFFFF60",
- " 2BFFFFFFFEGDFEIEFFFFB2 ",
- " 29FFFFFFFFEEFFEIEFFFA3 ",
- " 4BFFFFFFFFFFFFEIEFB4 ",
- " 5BFFFFFFFFFFFFEIE72 ",
- " 48FFFFFFFFFFFFFEC4 ",
- " 35BFFFFFFFFFFB74 ",
- " 3AFFFFFFFFA42 ",
- " 3179AA9723 ",
- " 003300 "};
-
-static char *circle_filled_tangent_x32[] = {
- "32 32 23 1",
- " c None",
- "0 c #000000",
- "1 c #000033",
- "2 c #003333",
- "3 c #333333",
- "4 c #333366",
- "5 c #336666",
- "6 c #336699",
- "7 c #339999",
- "8 c #669999",
- "9 c #6699CC",
- "A c #66CCCC",
- "B c #66CCFF",
- "C c #9999CC",
- "D c #99CCCC",
- "E c #99CCFF",
- "F c #99FFFF",
- "G c #CC0000",
- "H c #CC3333",
- "I c #CC6666",
- "J c #CC6699",
- "K c #CC9999",
- "L c #CC99CC",
- " ",
- " 233003320 ",
- " 2259BBFFBB9622 ",
- " 28BFFFFFFFFFFB920 ",
- " 25BFFFFFFFFFFFFFFB63 ",
- " 37BFFFFFFFFFFFFFFFFF84 ",
- " 27FFFFFFFFFFFFFFFFFFFF94 ",
- " 5BFFFFFFFFFFFFFFFFFFFFF74 ",
- " 4BFFFFFFFFFFFFFFFFFFFFFFB3 ",
- " 28FFFFFFFFFFFFFFFFFFFFFFFFA3 ",
- " 2BFFFFFFFFFFFFFFFFFFFFFFFFF4 ",
- " 5FFFFFFFFFFFFFFFFFFFFFFFFFF80 ",
- " 29FFFFFFFFFFFFFFFFFFFFFFFFFFB3 ",
- " 3BFFFFFFFFFFFFFFFFFFFFFFFFFFB1 ",
- " 2BFFFFFFFFFFFFFFEEDCDFFFFFFFF2 ",
- " 0FFFFFFFFFFFFFLHGGGGGEFFFFFFF5 ",
- " 1FFFFFFFFFFFFFHGGJLCEFFFFFFFF5 ",
- " 2BFFFFFFFFFFFEGGGIEFFFFFFFFFF4 ",
- " 3BFFFFFFFFFFFEGIJGIEFFFFFFFFF0 ",
- " 3AFFFFFFFFFFFDGKEJGHEFFFFFFFB3 ",
- " 07FFFFFFFFFFFCGCFEJGHEFFFFFF92 ",
- " 2FFFFFFFFFFFEJEFFEJGHEFFFFF5 ",
- " 29FFFFFFFFFFFFFFFFEJGHEFFFB3 ",
- " 4BFFFFFFFFFFFFFFFFEJGHEFF5 ",
- " 27FFFFFFFFFFFFFFFFFEJGHEA4 ",
- " 49FFFFFFFFFFFFFFFFFEJDB4 ",
- " 4AFFFFFFFFFFFFFFFFFFB5 ",
- " 49FFFFFFFFFFFFFFFFA4 ",
- " 45AFFFFFFFFFFFFB54 ",
- " 359BFFFFFFB953 ",
- " 2305555022 ",
- " "};
-
-static char **circle_filled_tangent_xpm[3] = { circle_filled_tangent_x16, circle_filled_tangent_x24, circle_filled_tangent_x32 };
-
diff --git a/app/bin/bitmaps/circle-line-center.xpm b/app/bin/bitmaps/circle-line-center.xpm
deleted file mode 100644
index 24a41f6..0000000
--- a/app/bin/bitmaps/circle-line-center.xpm
+++ /dev/null
@@ -1,93 +0,0 @@
-static char *circle_line_center_x16[] = {
- "16 16 3 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- " 00 ",
- " 00000000 ",
- " 00 00 ",
- " 0 0 ",
- " 00 00 ",
- " 0 0 ",
- "00 00",
- "00 00",
- "00 1 00",
- "00 1 00",
- " 0 1 1 00",
- " 00 11 0 ",
- " 0 1110 ",
- " 00 00 ",
- " 000 000 ",
- " 000000 "};
-
-static char *circle_line_center_x24[] = {
- "24 24 3 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- " ",
- " 00000000 ",
- " 000 000 ",
- " 00 00 ",
- " 00 0 ",
- " 0 0 ",
- " 00 00 ",
- " 0 0 ",
- " 00 0 ",
- " 0 0 ",
- " 0 0 ",
- " 0 1 00",
- " 0 11 00",
- " 0 11 00",
- " 0 11 0 ",
- " 00 11 1 0 ",
- " 00 11 1 00 ",
- " 00 111 0 ",
- " 0 1111 0 ",
- " 00 1 00 ",
- " 000 00 ",
- " 00 00 ",
- " 0000000000 ",
- " 000 "};
-
-static char *circle_line_center_x32[] = {
- "32 32 4 1",
- " c None",
- "0 c #000000",
- "1 c #990000",
- "2 c #CC0000",
- " ",
- " 0000000000 ",
- " 00000000000000 ",
- " 00000 00000 ",
- " 0000 0000 ",
- " 000 000 ",
- " 000 000 ",
- " 000 000 ",
- " 00 000 ",
- " 000 00 ",
- " 00 000 ",
- " 000 00 ",
- " 00 00 ",
- " 00 00 ",
- " 00 000",
- " 00 2 000",
- " 00 222 000",
- " 00 2222 000",
- " 00 2222 00 ",
- " 00 2222 00 ",
- " 000 2222 22 00 ",
- " 00 2222 22 000 ",
- " 00 222222 00 ",
- " 000 22222 000 ",
- " 000 2222222000 ",
- " 000 2222221000 ",
- " 000 0000 ",
- " 0000 0000 ",
- " 0000 00000 ",
- " 0000000 0000000 ",
- " 000000000000 ",
- " 0000 "};
-
-static char **circle_line_center_xpm[3] = { circle_line_center_x16, circle_line_center_x24, circle_line_center_x32 };
-
diff --git a/app/bin/bitmaps/circle-line-tangent.xpm b/app/bin/bitmaps/circle-line-tangent.xpm
deleted file mode 100644
index 0a5a52d..0000000
--- a/app/bin/bitmaps/circle-line-tangent.xpm
+++ /dev/null
@@ -1,93 +0,0 @@
-static char *circle_line_tangent_x16[] = {
- "16 16 3 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- " 00 ",
- " 00000000 ",
- " 00 00 ",
- " 00 0 ",
- " 00 00 ",
- " 0 0 ",
- " 0 00",
- "00 1111 00",
- "00 11 00",
- "00 1 1 00",
- " 0 1 1 00",
- " 00 1 0 ",
- " 0 10 ",
- " 00 00 ",
- " 0000 000 ",
- " 00000 "};
-
-static char *circle_line_tangent_x24[] = {
- "24 24 4 1",
- " c None",
- "0 c #000000",
- "1 c #990000",
- "2 c #CC0000",
- " ",
- " 00000000 ",
- " 000 000 ",
- " 00 00 ",
- " 00 0 ",
- " 00 0 ",
- " 0 00 ",
- " 0 0 ",
- " 00 00 ",
- " 0 0 ",
- " 0 2222 0 ",
- " 0 22222 00",
- " 0 222 00",
- " 0 22 22 0 ",
- " 0 22 22 0 ",
- " 00 22 22 0 ",
- " 0 22 00 ",
- " 00 22 0 ",
- " 0 2 0 ",
- " 0 00 ",
- " 000 00 ",
- " 00 00 ",
- " 0000000000 ",
- " 00 "};
-
-static char *circle_line_tangent_x32[] = {
- "32 32 3 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- " ",
- " 000000000 ",
- " 00000000000000 ",
- " 000000 000000 ",
- " 0000 0000 ",
- " 0000 000 ",
- " 000 000 ",
- " 000 000 ",
- " 000 00 ",
- " 000 000 ",
- " 00 00 ",
- " 00 000 ",
- " 000 00 ",
- " 00 00 ",
- " 00 1111111 00 ",
- " 00 1111111 000",
- " 00 11111 000",
- " 00 111111 00 ",
- " 00 11 1111 00 ",
- " 00 11 1111 00 ",
- " 000 11 1111 00 ",
- " 00 1111 000 ",
- " 000 1111 00 ",
- " 00 1111 000 ",
- " 000 111000 ",
- " 000 1000 ",
- " 000 0000 ",
- " 000 0000 ",
- " 0000 0000 ",
- " 0000000000000000 ",
- " 000000000000 ",
- " 00 "};
-
-static char **circle_line_tangent_xpm[3] = { circle_line_tangent_x16, circle_line_tangent_x24, circle_line_tangent_x32 };
-
diff --git a/app/bin/bitmaps/circle-line.xpm b/app/bin/bitmaps/circle-line.xpm
deleted file mode 100644
index 1f6de11..0000000
--- a/app/bin/bitmaps/circle-line.xpm
+++ /dev/null
@@ -1,95 +0,0 @@
-static char *circle_line_x16[] = {
- "16 16 5 1",
- " c None",
- "0 c #000000",
- "1 c #990000",
- "2 c #CC0000",
- "3 c #800000",
- " 00 ",
- " 00000000 ",
- " 00 00 ",
- " 0 22 22 0 ",
- " 00 2 222 00 ",
- " 0 22222 0 ",
- "00 2 222222 2 00",
- "0022 2200",
- "0322222222222210",
- "0022 2 00",
- " 0 00",
- " 00 0 ",
- " 0 0 ",
- " 00 00 ",
- " 000 000 ",
- " 000000 "};
-
-static char *circle_line_x24[] = {
- "24 24 3 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- " ",
- " 00000000 ",
- " 000 000 ",
- " 00 00 ",
- " 00 0 ",
- " 00 1111 111 0 ",
- " 00 11 11 00 ",
- " 0 11 1111 0 ",
- " 00 1111 11 00 ",
- " 0 1111 1111 0 ",
- " 0 1 11 1 11 0 ",
- " 0 11 11 00",
- " 0 111111111111111111 00",
- " 0 11 11 0 ",
- " 0 1 1 0 ",
- " 00 0 ",
- " 0 00 ",
- " 00 0 ",
- " 0 0 ",
- " 0 00 ",
- " 000 00 ",
- " 00 00 ",
- " 0000000000 ",
- " 00 "};
-
-static char *circle_line_x32[] = {
- "32 32 4 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #CC0000",
- " ",
- " 0000000000 ",
- " 00000000000000 ",
- " 00000 00000 ",
- " 0000 0000 ",
- " 000 000 ",
- " 000 222 222 000 ",
- " 000 22222 22222 000 ",
- " 00 2 22 22 000 ",
- " 000 22 22222 00 ",
- " 00 222 222 22 000 ",
- " 000 22 22 22 000 ",
- " 00 2 22222 222222 00 ",
- " 00 222 2222 2222 222 00 ",
- " 00 222 2222 00 ",
- " 0022222222222222222222222222000",
- " 0022222222222222222222222222100",
- " 00 222 222 000",
- " 00 222 222 00 ",
- " 00 222 22 00 ",
- " 000 00 ",
- " 00 000 ",
- " 00 00 ",
- " 000 000 ",
- " 000 000 ",
- " 000 000 ",
- " 000 0000 ",
- " 0000 0000 ",
- " 0000 00000 ",
- " 0000000000000000 ",
- " 000000000000 ",
- " 0000 "};
-
-static char **circle_line_xpm[3] = { circle_line_x16, circle_line_x24, circle_line_x32 };
-
diff --git a/app/bin/bitmaps/circle-tangent.xpm b/app/bin/bitmaps/circle-tangent.xpm
deleted file mode 100644
index 4ae8c69..0000000
--- a/app/bin/bitmaps/circle-tangent.xpm
+++ /dev/null
@@ -1,110 +0,0 @@
-static char *circle_tangent_x16[] = {
- "16 16 5 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #CC9966",
- "3 c #808080",
- " 000000 ",
- " 30 2 2 03 ",
- " 0 2 0000 2 0 ",
- " 3 00 00 3 ",
- " 020 020 ",
- "0 0 0 0",
- "020 020",
- "0 0 0 0",
- "0 0 111 0 0",
- "020 11 020",
- "0 0 1 1 0",
- " 020 1 20 ",
- " 3 00 1 3 ",
- " 0 2 0000 2 0 ",
- " 30 2 2 03 ",
- " 000000 "};
-
-static char *circle_tangent_x24[] = {
- "24 24 11 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #990000",
- "5 c #996600",
- "6 c #CC0000",
- "7 c #CC3300",
- "8 c #CC6600",
- "9 c #CC9900",
- " 99 ",
- " 9 00330059 ",
- " 5000550023 ",
- " 0059 85 93009 ",
- " 930 80023025 25 ",
- " 139 035 99 8305900 ",
- " 0 920 335 0 ",
- " 00 059 950 539 ",
- " 83930 3591 ",
- " 03938 90 00 ",
- " 0 0 0 0 ",
- " 0 0 6666 2551 ",
- "928839 66666 955829",
- " 15 0 6666 0 0 ",
- " 00 05 66666 0 00 ",
- " 01953 66 666983900 ",
- " 839 0 66608939 ",
- " 920 38 764 029 ",
- " 0395029 9316800 ",
- " 35 31053022 82 ",
- " 9500 9 055059 0089 ",
- " 025 99 520 ",
- " 8100330038 ",
- " 55 9 "};
-
-static char *circle_tangent_x32[] = {
- "32 32 11 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #993300",
- "5 c #996600",
- "6 c #CC0000",
- "7 c #CC6600",
- "8 c #CC9900",
- "9 c #800000",
- " 8 ",
- " 75 8 ",
- " 8 00003200018 ",
- " 3200 88 0320 ",
- " 0028 88 8 00 8 ",
- " 8 00 88000100038 058 ",
- " 52 300 78 032 830 ",
- " 018 0058 8 8 0088 0 ",
- " 0 830 23 0 ",
- " 00 138 830 038 ",
- " 850 0 0 8835 ",
- " 8558 00 538 00 ",
- " 058828 830 0 ",
- " 0 028 0 0 ",
- " 0 00 0 0 ",
- " 00 0 6666666 07 25 ",
- "85488378 666666 8278458",
- " 52 25 6666 0 0 ",
- " 0 00 66666 0 0 ",
- " 0 18 6666666 00 0 ",
- " 00 837 666 6666 8835 00 ",
- " 3388 0 6 6666 138833 ",
- " 881 018 66660 288 ",
- " 00 35 6666 00 ",
- " 0 8700 8 8 0967 00 ",
- " 17 015 8 510 870 ",
- " 71 8200320037 37 ",
- " 00 88 75 8 00 8 ",
- " 005 88 8500 ",
- " 53000 55 0003 ",
- " 88 00033000 8 ",
- " 88 "};
-
-static char **circle_tangent_xpm[3] = { circle_tangent_x16, circle_tangent_x24, circle_tangent_x32 };
-
diff --git a/app/bin/bitmaps/circle.xpm b/app/bin/bitmaps/circle.xpm
deleted file mode 100644
index 0be3fe9..0000000
--- a/app/bin/bitmaps/circle.xpm
+++ /dev/null
@@ -1,115 +0,0 @@
-static char *circle_x16[] = {
- "16 16 5 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #CC9966",
- "3 c #808080",
- " 000000 ",
- " 30 2 2 03 ",
- " 0 2 0000 2 0 ",
- " 3 00 00 3 ",
- " 020 020 ",
- "0 0 0 0",
- "0 00 303 0",
- "0 1 0 0 0 1 0",
- "311110 0 011113",
- "0 1 00 303 1 0",
- "0 0",
- " 020 020 ",
- " 3 00 00 3 ",
- " 0 2 0000 2 0 ",
- " 30 2 2 03 ",
- " 000000 "};
-
-static char *circle_x24[] = {
- "24 24 13 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #660000",
- "4 c #663300",
- "5 c #990000",
- "6 c #996600",
- "7 c #CC0000",
- "8 c #CC3300",
- "9 c #CC6600",
- "A c #CC9900",
- "B c #800000",
- " AA ",
- " 004400 A ",
- " 6000660014 ",
- " 06A 69 A600 A ",
- " A40 60024006 24 ",
- " 44A 066 A A601A40 ",
- " 0 92 44 0 ",
- " 00 09 AA0 64A ",
- " A2A00 64A40 ",
- " 14AB8 000 000 971 0 ",
- " 00577 0 0000 00 777 0 ",
- " 03777 000 00 007777816",
- "A497787 000000 017887829",
- " 26878 0000 00 77 0 ",
- " 00 57 0000 000 773 0 ",
- " 0A46 A4920 ",
- " A49 0 04A49 ",
- " A 0 24A A60 00A ",
- " 01A40 A A 04A 0 ",
- " 44 240660420 64 ",
- " A 00 A404404A 006A ",
- " 240 AA 620 ",
- " A40000004A ",
- " A AA A "};
-
-static char *circle_x32[] = {
- "32 32 14 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #660000",
- "4 c #663300",
- "5 c #990000",
- "6 c #993300",
- "7 c #996600",
- "8 c #CC0000",
- "9 c #CC3300",
- "A c #CC6600",
- "B c #CC9900",
- "C c #800000",
- " BB ",
- " BB ",
- " B 0000000000AB ",
- " 7100 BB 0240 ",
- " 02B BB BB000 B ",
- " B 0 BA00000000A 04B ",
- " A1 4400 BB 420 72 ",
- " 1B 00BB B BB00 B 00 ",
- " 0 B10 47 00 ",
- " 00 17B BB0 0BB ",
- " B 0 00 0 B77 ",
- " B77B 0 47B 0 ",
- " 07B799 0000 000 A93 0 ",
- " 0 588 00000 00000 888C 00 ",
- " 0 8888 00 00 00 888 00 ",
- " 0 88888 0000 00 00 88888862 ",
- "B74A88888 0000 00 00 888889A4B",
- "BA2B9889 00000 00 888 00 ",
- " 0 888 0 000 00 00 8885 00 ",
- " 0 189 00000 0000 88C 00 ",
- " 00 A4B BB74 0 ",
- " 74BB00 2BB74 ",
- " BB40 0 B 00 2AB ",
- " 0 44A B40 00 ",
- " 00 B700 B B 07B 0 ",
- " 27 02A BB A40 BA0 ",
- " B20 A100440017 2A ",
- " B 00 BB 77 B 00 BB ",
- " 044 BB 7700 ",
- " A00004700007 ",
- " BB 0470 BB ",
- " BB "};
-
-static char **circle_xpm[3] = { circle_x16, circle_x24, circle_x32 };
-
diff --git a/app/bin/bitmaps/connect.xpm b/app/bin/bitmaps/connect.xpm
deleted file mode 100644
index 3853635..0000000
--- a/app/bin/bitmaps/connect.xpm
+++ /dev/null
@@ -1,116 +0,0 @@
-static char *connect_x16[] = {
- "16 16 12 1",
- " c None",
- "0 c #000000",
- "1 c #003399",
- "2 c #336699",
- "3 c #3366CC",
- "4 c #3366FF",
- "5 c #3399FF",
- "6 c #6699FF",
- "7 c #9966CC",
- "8 c #CC0000",
- "9 c #CC3366",
- "A c #CC3399",
- " ",
- " ",
- " ",
- " 5 4333 3435 5 ",
- "1313121 1313131",
- " 6 6 66 6 6 6 ",
- " 313233 3313133",
- "1313233 2313132",
- " 6 6 9 A 6 6 ",
- " 88 88 ",
- "8888888888888888",
- " 8 8 ",
- " 8 8 ",
- " ",
- " ",
- " "};
-
-static char *connect_x24[] = {
- "24 24 11 1",
- " c None",
- "0 c #000000",
- "1 c #003399",
- "2 c #336699",
- "3 c #3366CC",
- "4 c #3366FF",
- "5 c #3399FF",
- "6 c #6699FF",
- "7 c #CC0000",
- "8 c #CC3366",
- "9 c #CC6699",
- " ",
- " ",
- " ",
- " ",
- " 6 6 6 6 6 6 ",
- " 35 5 53 35 53 43 ",
- "11311311311 11311311211",
- " 6 6 6 6 6 66 ",
- " 6 6 6 6 6 66 ",
- " 6 6 6 6 6 66 ",
- "11111111111 11111111111",
- " 6 6 6 6 6 66 ",
- " 8 8 ",
- " 77 777 ",
- " 777 777 ",
- " 7777777777777777777777 ",
- " 7777777777 77777777777 ",
- " 777 777 ",
- " 777 777 ",
- " 7 7 ",
- " ",
- " ",
- " ",
- " "};
-
-static char *connect_x32[] = {
- "32 32 10 1",
- " c None",
- "0 c #000000",
- "1 c #003399",
- "2 c #336699",
- "3 c #3366CC",
- "4 c #3366FF",
- "5 c #3399FF",
- "6 c #6699FF",
- "7 c #CC0000",
- "8 c #CC3366",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " 66 6 6 6 6 66 ",
- " 33 35 53 35 53 34 ",
- " 1111113111311 1131113111121 ",
- " 66 6 6 6 6 66 ",
- " 66 6 6 6 6 66 ",
- " 66 6 6 6 6 66 ",
- " 66 6 6 6 6 66 ",
- " 1331113111321 1131113211331 ",
- " 1331113111321 1131113211331 ",
- " 66 6 6 6 6 66 ",
- " 78 87 ",
- " 777 777 ",
- " 7777 7777 ",
- " 7777 7777 ",
- " 77777777777777 777777777777777 ",
- " 777777777777777777777777777777 ",
- " 7777 7777 ",
- " 777 777 ",
- " 777 777 ",
- " 77 77 ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " "};
-
-static char **connect_xpm[3] = { connect_x16, connect_x24, connect_x32 };
-
diff --git a/app/bin/bitmaps/control.xpm b/app/bin/bitmaps/control.xpm
deleted file mode 100644
index 45d1f9b..0000000
--- a/app/bin/bitmaps/control.xpm
+++ /dev/null
@@ -1,129 +0,0 @@
-static char *control_x16[] = {
- "16 16 16 1",
- " c None",
- "0 c #000000",
- "1 c #003300",
- "2 c #006600",
- "3 c #009900",
- "4 c #00CC00",
- "5 c #00FF00",
- "6 c #330000",
- "7 c #333300",
- "8 c #660000",
- "9 c #663300",
- "A c #990000",
- "B c #CC0000",
- "C c #FF0000",
- "D c #800000",
- "E c #008000",
- " ",
- " 0 00",
- " 0 00 ",
- " 0 00 ",
- " 0 8ABD 00 ",
- " 07CCCCA0 ",
- " E49CCCCD ",
- " 4549CCCB ",
- " 45549CCB0 ",
- " 355549CA ",
- " 04555496 ",
- " 01455420 ",
- " 0 00 0 ",
- " 0 0 ",
- " 0 0 ",
- "0 0"};
-
-static char *control_x24[] = {
- "24 24 15 1",
- " c None",
- "0 c #000000",
- "1 c #006600",
- "2 c #009900",
- "3 c #00CC00",
- "4 c #00FF00",
- "5 c #330000",
- "6 c #339900",
- "7 c #660000",
- "8 c #663300",
- "9 c #990000",
- "A c #CC0000",
- "B c #FF0000",
- "C c #800000",
- "D c #008000",
- " ",
- " 00 00 ",
- " 000 000 ",
- " 000 000 ",
- " 000 000 ",
- " 000 000 ",
- " 000005CC700000 ",
- " 007ABBBBA500 ",
- " 018BBBBBBA50 ",
- " 0338BBBBBBA0 ",
- " 014438BBBBBB70 ",
- " 0244438BBBBB90 ",
- " 03444438BBBB90 ",
- " 0D4444438BBB90 ",
- " 0044444438BB5 ",
- " 0D4444443890 ",
- " 002444444600 ",
- " 00001333310000 ",
- " 000 000000 000 ",
- " 000 000 ",
- " 000 000 ",
- " 000 000 ",
- " 00 000",
- " "};
-
-static char *control_x32[] = {
- "32 32 15 1",
- " c None",
- "0 c #000000",
- "1 c #003300",
- "2 c #006600",
- "3 c #009900",
- "4 c #00CC00",
- "5 c #00FF00",
- "6 c #330000",
- "7 c #660000",
- "8 c #663300",
- "9 c #990000",
- "A c #CC0000",
- "B c #FF0000",
- "C c #800000",
- "D c #008000",
- " ",
- " 0 0 ",
- " 000 000 ",
- " 000 0000 ",
- " 000 0000 ",
- " 000 0000 ",
- " 000 0000 ",
- " 000 00 0000 ",
- " 000 00077000 0000 ",
- " 0000CABBBBAC00000 ",
- " 06ABBBBBBBB9000 ",
- " 0038BBBBBBBBB90 ",
- " 0D548BBBBBBBBB70 ",
- " 0045548BBBBBBBBA0 ",
- " 02555548BBBBBBBB60 ",
- " 035555548BBBBBBBC0 ",
- " 0355555548BBBBBBC0 ",
- " 0D555555548BBBBB70 ",
- " 005555555548BBBB00 ",
- " 035555555548BB90 ",
- " 0045555555548B60 ",
- " 02455555555480 ",
- " 000145555554D000 ",
- " 00000024444200 000 ",
- " 000 00000000 000 ",
- " 000 000 ",
- " 000 000 ",
- " 000 000 ",
- " 000 000 ",
- " 000 000 ",
- " 00 00 ",
- " "};
-
-static char **control_xpm[3] = { control_x16, control_x24, control_x32 };
-
diff --git a/app/bin/bitmaps/convert-from.xpm b/app/bin/bitmaps/convert-from.xpm
deleted file mode 100644
index ed72d8a..0000000
--- a/app/bin/bitmaps/convert-from.xpm
+++ /dev/null
@@ -1,99 +0,0 @@
-static char *convert_from_x16[] = {
- "16 16 8 1",
- " c None",
- "0 c #000000",
- "1 c #999999",
- "2 c #CC0000",
- "3 c #CCCCCC",
- "4 c #FF0000",
- "5 c #FFFFFF",
- "6 c #808080",
- " 363 363 ",
- "5060 10601 ",
- "36 1 6006 03",
- "30 101 1 63",
- " 10601 060 ",
- " 363 2 363 ",
- " 2 ",
- " 2 ",
- " 42224 ",
- " 424 ",
- " 4 ",
- " 00000 ",
- " 00 ",
- " 0000 ",
- " 00 ",
- " 00 "};
-
-static char *convert_from_x24[] = {
- "24 24 4 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #CC0033",
- " ",
- " 00 0000 ",
- " 0000 00000 00 ",
- " 00 00 0000 0 00 ",
- " 0 00 000 00 0 ",
- " 00 00 00 0 0 ",
- " 0 000 0 00 ",
- " 000000 22 0000 ",
- " 22 ",
- " 22 ",
- " 2 22 ",
- " 2 22 22 ",
- " 2222 ",
- " 22 ",
- " 2 ",
- " 000000 ",
- " 00 ",
- " 0 ",
- " 00000 ",
- " 00 ",
- " 0 ",
- " 0 ",
- " 0 ",
- " "};
-
-static char *convert_from_x32[] = {
- "32 32 4 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #CC0033",
- " ",
- " ",
- " 00000 0000000 ",
- " 00 0 0000 00 ",
- " 0 00 0000 0 ",
- " 0 00 000 000 00 ",
- " 0 0 000 0 00 ",
- " 0 000 00 00 00 ",
- " 00 00 0 0 ",
- " 00 0000 22 00 00 ",
- " 00000 22 0000 ",
- " 22 ",
- " 22 ",
- " 2 22 ",
- " 22 22 22 ",
- " 222 22 222 ",
- " 22222222 ",
- " 222222 ",
- " 222 ",
- " 2 ",
- " 00000000 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 000000 ",
- " 000000 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " ",
- " "};
-
-static char **convert_from_xpm[3] = { convert_from_x16, convert_from_x24, convert_from_x32 };
-
diff --git a/app/bin/bitmaps/convert-to.xpm b/app/bin/bitmaps/convert-to.xpm
deleted file mode 100644
index 5f5c94e..0000000
--- a/app/bin/bitmaps/convert-to.xpm
+++ /dev/null
@@ -1,99 +0,0 @@
-static char *convert_to_x16[] = {
- "16 16 8 1",
- " c None",
- "0 c #000000",
- "1 c #999999",
- "2 c #CC0000",
- "3 c #CCCCCC",
- "4 c #FF0000",
- "5 c #FFFFFF",
- "6 c #808080",
- " 00000 ",
- " 00 ",
- " 0000 ",
- " 00 ",
- " 00 ",
- " 2 ",
- " 2 ",
- " 2 ",
- " 42224 ",
- " 424 ",
- " 363 4 363 ",
- "5060 10601 ",
- "36 1 6006 03",
- "30 101 1 63",
- " 10601 060 ",
- " 363 363 "};
-
-static char *convert_to_x24[] = {
- "24 24 4 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #CC0033",
- " ",
- " 000000 ",
- " 000000 ",
- " 00 ",
- " 00000 ",
- " 00000 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 2 ",
- " 2 ",
- " 2 ",
- " 22 2 2 ",
- " 22 2 2 ",
- " 2222 ",
- " 22 ",
- " 0000 00000 ",
- " 00 0 0000 0 ",
- " 0 00 0000 00 00 ",
- " 0 0 00 0 0 ",
- " 00 00 00 00 0 ",
- " 00 000 0 0 ",
- " 0000 000 ",
- " "};
-
-static char *convert_to_x32[] = {
- "32 32 4 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #CC0033",
- " ",
- " ",
- " 00000000 ",
- " 0 ",
- " 0 ",
- " 0 ",
- " 000000 ",
- " 0 ",
- " 0 ",
- " 0 ",
- " 0 ",
- " 0 ",
- " 22 ",
- " 22 ",
- " 22 ",
- " 22 ",
- " 22 22 22 ",
- " 222 22 222 ",
- " 22222222 ",
- " 222222 ",
- " 2222 ",
- " 000 22 00000 ",
- " 000 00 00000 000 ",
- " 0 0 0000 00 ",
- " 00 00 000 00 0 ",
- " 00 0 000 00 00 ",
- " 00 000 000 00 00 ",
- " 0 00 00 0 ",
- " 00 00 0 00 ",
- " 0000000 00000 ",
- " 00 ",
- " "};
-
-static char **convert_to_xpm[3] = { convert_to_x16, convert_to_x24, convert_to_x32 };
-
diff --git a/app/bin/bitmaps/copy.xpm b/app/bin/bitmaps/copy.xpm
deleted file mode 100644
index 1812343..0000000
--- a/app/bin/bitmaps/copy.xpm
+++ /dev/null
@@ -1,95 +0,0 @@
-static char *copy_x16[] = {
- "16 16 4 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #FFFFFF",
- "111111111111 ",
- "1222222222221 ",
- "1222222222221 ",
- "1221111111111111",
- "1221222222222221",
- "1221222222222221",
- "1221222222222221",
- "1221222222222221",
- "1221222222222221",
- "1221222222222221",
- "1221222222222221",
- "1221222222222221",
- "1111222222222221",
- " 1222222222221",
- " 1222222222221",
- " 1111111111111"};
-
-static char *copy_x24[] = {
- "24 24 4 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #FFFFFF",
- " 11111111111111111 ",
- "1222222222222222221 ",
- "1222222222222222221 ",
- "1222222222222222221 ",
- "12222211111111111111111 ",
- "122221222222222222222221",
- "122221222222222222222221",
- "122221222222222222222221",
- "122221222222222222222221",
- "122221222222222222222221",
- "122221222222222222222221",
- "122221222222222222222221",
- "122221222222222222222221",
- "122221222222222222222221",
- "122221222222222222222221",
- "122221222222222222222221",
- "122221222222222222222221",
- "122221222222222222222221",
- "122221222222222222222221",
- " 11111222222222222222221",
- " 1222222222222222221",
- " 1222222222222222221",
- " 1222222222222222221",
- " 11111111111111111 "};
-
-static char *copy_x32[] = {
- "32 32 4 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #FFFFFF",
- " ",
- " 111111111111111111111111 ",
- " 122222222222222222222221 ",
- " 122222222222222222222221 ",
- " 122222222222222222222221 ",
- " 122222222222222222222221 ",
- " 122222111111111111111111111111 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 122222122222222222222222222221 ",
- " 111111122222222222222222222221 ",
- " 122222222222222222222221 ",
- " 122222222222222222222221 ",
- " 122222222222222222222221 ",
- " 122222222222222222222221 ",
- " 111111111111111111111111 ",
- " "};
-
-static char **copy_xpm[3] = { copy_x16, copy_x24, copy_x32 };
-
diff --git a/app/bin/bitmaps/cornu.xpm b/app/bin/bitmaps/cornu.xpm
deleted file mode 100644
index d1bffcb..0000000
--- a/app/bin/bitmaps/cornu.xpm
+++ /dev/null
@@ -1,117 +0,0 @@
-static char *cornu_x16[] = {
- "16 16 10 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #993300",
- "5 c #996600",
- "6 c #CC0000",
- "7 c #CC6600",
- "8 c #CC9900",
- " 5 ",
- " 5303022 ",
- " 8307353733 ",
- " 03523552566 ",
- " 8233 84666 ",
- " 0327 66 ",
- "8353 ",
- " 153 ",
- " 253 ",
- " 3518 ",
- " 34528 ",
- " 832538 6 ",
- " 3552555753666",
- " 232523335666",
- " 85301331246 ",
- " 7557 "};
-
-static char *cornu_x24[] = {
- "24 24 12 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #666600",
- "5 c #990000",
- "6 c #996600",
- "7 c #CC0000",
- "8 c #CC6600",
- "9 c #CC9900",
- "A c #800000",
- " ",
- " 9 66009 ",
- " 300360320 ",
- " 91069 99 99018 ",
- " 36 6100023 915 ",
- " 099038 9 8138777 ",
- " 92 28 9657 7 ",
- " 3392 5777 ",
- " 00339 77 ",
- " 91826 ",
- " 91928 ",
- " 0 0 ",
- " 61938 ",
- " 91963 ",
- " 00 19 ",
- " 03962 ",
- " 93 069 ",
- " 0 9309 7 ",
- " 33 3209 9 98A777 ",
- " 93049 32032330377 7 ",
- " 32099 8368 98777 ",
- " 9002308166022A7 ",
- " 90130160 9 ",
- " 9 9 "};
-
-static char *cornu_x32[] = {
- "32 32 12 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #990000",
- "5 c #993300",
- "6 c #996600",
- "7 c #CC0000",
- "8 c #CC6600",
- "9 c #CC9900",
- "A c #800000",
- " ",
- " 9 9 ",
- " 98000000038 ",
- " 1300 9 6300 ",
- " 9 00099 99 9 039 ",
- " 61 9 033039 60 ",
- " 029 021086062039 47 ",
- " 0 80089 9 9 13577477 ",
- " 9920 28 9917 7 ",
- " 639 0 7 77 ",
- " 00966 777 ",
- " 0 08 ",
- " 0 0 ",
- " 9869839 ",
- " 00 62 ",
- " 00 0 ",
- " 00 629 ",
- " 9669928 ",
- " 60 00 ",
- " 0 19 ",
- " 019932 ",
- " 839 0 9 ",
- " 930 38 ",
- " 00 98009 7 ",
- " 26 33 9 9 99 4777 ",
- " 9920 93016 69 903317 77 ",
- " 008 85010002008 7 77 ",
- " 8300 9 99 9 997777 ",
- " 9 00060 99 960220A7 ",
- " 96000000020089 ",
- " 9 99 99 ",
- " "};
-
-static char **cornu_xpm[3] = { cornu_x16, cornu_x24, cornu_x32 };
-
diff --git a/app/bin/bitmaps/curved-chord.xpm b/app/bin/bitmaps/curved-chord.xpm
deleted file mode 100644
index b8c1d9d..0000000
--- a/app/bin/bitmaps/curved-chord.xpm
+++ /dev/null
@@ -1,109 +0,0 @@
-static char *curved_chord_x16[] = {
- "16 16 5 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #CC9966",
- "3 c #FF6666",
- " 2 2 ",
- " 2 0000 ",
- " 2 00 2 2 ",
- " 2 00 2 000 ",
- " 0 2 002 2 ",
- " 2 0 2002 ",
- " 0 ",
- " 20 2 1111 ",
- " 020 113 ",
- " 20 0 1313 ",
- " 0202 1 313 1 ",
- " 0 0 31311 ",
- "20202 311 ",
- " 0 0 11 ",
- "20202 11 ",
- " "};
-
-static char *curved_chord_x24[] = {
- "24 24 11 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #993300",
- "5 c #996600",
- "6 c #CC0000",
- "7 c #CC3300",
- "8 c #CC6600",
- "9 c #CC9900",
- " 9 ",
- " 9100300",
- " 0130 89 ",
- " 820089 99 ",
- " 018 930200",
- " 9500 99 013059 ",
- " 135 500 9 ",
- " 9900 9 039 ",
- " 53 81 9 ",
- " 099 019 ",
- " 9 0 950 ",
- " 938 39 ",
- " 029990 766666 ",
- " 0 38 666666 ",
- " 953 00 6666 ",
- " 19990 66 66 ",
- " 00 559 66 66 ",
- " 00 0 66 66 66",
- " 929930 66 66 ",
- " 3299559 6666 ",
- " 00 0 66 ",
- " 00 0 66 ",
- "9459829 66 ",
- " 25 539 6 "};
-
-static char *curved_chord_x32[] = {
- "32 32 10 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #993300",
- "5 c #996600",
- "6 c #CC0000",
- "7 c #CC6600",
- "8 c #CC9900",
- " 8 ",
- " 88 000330 ",
- " 250000000 ",
- " 8 000020 88 ",
- " 85000058 8 ",
- " 00010 8 00130 ",
- " 00038 3200000 ",
- " 87000 88 00022 8 ",
- " 0000 5000088 ",
- " 00078 003 ",
- " 8500 88000088 ",
- " 503 500 ",
- " 0288 0037 ",
- " 00 888100 8 ",
- " 88000 8501 ",
- " 405 0038 ",
- " 00888 0076666666 ",
- " 00 820 66666666 ",
- " 00 0058 66666 ",
- " 830 00 66666 ",
- " 0388800 66 666 ",
- " 00 8703 66 6666 ",
- " 00 007 66 6666 66 ",
- " 00 00 66 6666 6666",
- " 8505 000 6 6666 6666 ",
- " 1188831 6666666 ",
- " 00 5038 66666 ",
- " 00 000 666 ",
- " 00 00 666 ",
- " 503 00 666 ",
- "850788318 666 ",
- " 0 00 6 "};
-
-static char **curved_chord_xpm[3] = { curved_chord_x16, curved_chord_x24, curved_chord_x32 };
-
diff --git a/app/bin/bitmaps/curved-end.xpm b/app/bin/bitmaps/curved-end.xpm
deleted file mode 100644
index 6c91543..0000000
--- a/app/bin/bitmaps/curved-end.xpm
+++ /dev/null
@@ -1,107 +0,0 @@
-static char *curved_end_x16[] = {
- "16 16 5 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #CC9966",
- "3 c #FF6666",
- " 111 ",
- " 11 ",
- " 2 133 ",
- " 2 0 1 ",
- " 2 00 2 331",
- " 0 2 00 11",
- " 2 0 2002 111",
- " 0 02 ",
- " 20 20 ",
- " 0202 ",
- " 20 0 ",
- " 0202 ",
- " 0 0 ",
- "20202 ",
- " 0 0 ",
- "20202 "};
-
-static char *curved_end_x24[] = {
- "24 24 10 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #666600",
- "5 c #996600",
- "6 c #CC0000",
- "7 c #CC6600",
- "8 c #CC9900",
- " ",
- " 66 ",
- " 66666 ",
- " 6 6 ",
- " 8 6 ",
- " 750 66 ",
- " 85005 66 ",
- " 8 0130 8 6 ",
- " 730 88 530 6 6 ",
- " 058 7015 66666 ",
- " 70 87035 8 666 ",
- " 18 532 ",
- " 870 83078 ",
- " 35 33 ",
- " 008850 ",
- " 881 38 ",
- " 35880 ",
- " 0 53 ",
- " 71 05 ",
- " 55871 ",
- " 00 338 ",
- " 0 00 ",
- "837835 ",
- " 17 35 "};
-
-static char *curved_end_x32[] = {
- "32 32 9 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #996600",
- "5 c #CC0000",
- "6 c #CC6600",
- "7 c #CC9900",
- " ",
- " 555 ",
- " 555555 ",
- " 55555555 ",
- " 55555 5 ",
- " 55 55 ",
- " 77 55 ",
- " 6400 555 ",
- " 7700367 55 ",
- " 420 77 55 ",
- " 7700377 77 55 55",
- " 743 77 64215 55555 ",
- " 047 760046 5555555 ",
- " 740 77 333 77 55555 ",
- " 636 774037 5555 ",
- " 1777 347 ",
- " 7 0 777017 ",
- " 734 734 ",
- " 3477 077 ",
- " 0 7772 ",
- " 7730 447 ",
- " 6377 007 ",
- " 047772 ",
- " 0 447 ",
- " 740 067 ",
- " 7447740 ",
- " 1677447 ",
- " 0 16 ",
- " 0 0 ",
- " 437 41 ",
- "76477637 ",
- " 00 42 "};
-
-static char **curved_end_xpm[3] = { curved_end_x16, curved_end_x24, curved_end_x32 };
-
diff --git a/app/bin/bitmaps/curved-line-chord.xpm b/app/bin/bitmaps/curved-line-chord.xpm
deleted file mode 100644
index 779cc67..0000000
--- a/app/bin/bitmaps/curved-line-chord.xpm
+++ /dev/null
@@ -1,92 +0,0 @@
-static char *curved_line_chord_x16[] = {
- "16 16 3 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- " ",
- " 0000 ",
- " 0000 ",
- " 00 ",
- " 0 ",
- " 00 ",
- " 01111 ",
- " 0 111 ",
- " 00 1111 ",
- " 0 1 11 ",
- " 00 11 11",
- " 0 11 11 ",
- " 0 111 ",
- " 0 11 ",
- " 0 11 ",
- " "};
-
-static char *curved_line_chord_x24[] = {
- "24 24 3 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- " ",
- " ",
- " 00000 ",
- " 0000 ",
- " 000 ",
- " 00 ",
- " 00 ",
- " 0 ",
- " 0 ",
- " 0 11111 ",
- " 00 111 ",
- " 00 111 ",
- " 0 1 11 ",
- " 00 1 11 ",
- " 0 1 11 ",
- " 00 11 1 ",
- " 0 11 1 ",
- " 0 11 1 ",
- " 00 111 ",
- " 00 11 ",
- " 00 11 ",
- " 00 11 ",
- " 11 ",
- " "};
-
-static char *curved_line_chord_x32[] = {
- "32 32 3 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- " ",
- " ",
- " 00000 ",
- " 00000000 ",
- " 000000 ",
- " 00000 ",
- " 0000 ",
- " 000 ",
- " 000 ",
- " 0000 ",
- " 000 ",
- " 000 ",
- " 0011111111 ",
- " 00011111111 ",
- " 000 1111 ",
- " 000 11111 ",
- " 00 11 111 ",
- " 000 11 111 ",
- " 00 11 111 ",
- " 000 11 111 ",
- " 00 111 1 ",
- " 00 111 111 ",
- " 000 11 111 ",
- " 00 111 111 ",
- " 00 11111 ",
- " 00 111 ",
- " 00 111 ",
- " 00 111 ",
- " 00 111 ",
- " 11 ",
- " ",
- " "};
-
-static char **curved_line_chord_xpm[3] = { curved_line_chord_x16, curved_line_chord_x24, curved_line_chord_x32 };
-
diff --git a/app/bin/bitmaps/curved-line-end.xpm b/app/bin/bitmaps/curved-line-end.xpm
deleted file mode 100644
index 0e967ab..0000000
--- a/app/bin/bitmaps/curved-line-end.xpm
+++ /dev/null
@@ -1,94 +0,0 @@
-static char *curved_line_end_x16[] = {
- "16 16 3 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- " ",
- " 11 ",
- " 1111 ",
- " 11 ",
- " 00011 ",
- " 0000 11 ",
- " 000 1111 ",
- " 00 11 ",
- " 00 ",
- " 00 ",
- " 0 ",
- " 0 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 0 "};
-
-static char *curved_line_end_x24[] = {
- "24 24 4 1",
- " c None",
- "0 c #000000",
- "1 c #660000",
- "2 c #CC0000",
- " ",
- " 2 ",
- " 2222 ",
- " 222222 ",
- " 22 ",
- " 22 ",
- " 00012 ",
- " 00000 2 ",
- " 000 2 ",
- " 000 22222 ",
- " 00 222 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 0 ",
- " 00 ",
- " 0 ",
- " 0 ",
- " 00 ",
- " 00 ",
- " 0 ",
- " 0 ",
- " 0 ",
- " 0 "};
-
-static char *curved_line_end_x32[] = {
- "32 32 4 1",
- " c None",
- "0 c #000000",
- "1 c #660000",
- "2 c #CC0000",
- " ",
- " ",
- " 222 ",
- " 22222 ",
- " 2222222 ",
- " 22222 22 ",
- " 222 ",
- " 222 ",
- " 0000122 ",
- " 0000000 22 ",
- " 000000 22 ",
- " 00000 22 22 ",
- " 0000 22222222 ",
- " 000 2222222 ",
- " 0000 2222 ",
- " 000 2 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 00 ",
- " 000 ",
- " 00 ",
- " 00 ",
- " 000 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 000 ",
- " 000 ",
- " 00 ",
- " "};
-
-static char **curved_line_end_xpm[3] = { curved_line_end_x16, curved_line_end_x24, curved_line_end_x32 };
-
diff --git a/app/bin/bitmaps/curved-line-middle.xpm b/app/bin/bitmaps/curved-line-middle.xpm
deleted file mode 100644
index fceb7d6..0000000
--- a/app/bin/bitmaps/curved-line-middle.xpm
+++ /dev/null
@@ -1,95 +0,0 @@
-static char *curved_line_middle_x16[] = {
- "16 16 4 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #800000",
- " ",
- " 00000",
- " 0000 ",
- " 000 ",
- " 00 ",
- " 00 ",
- " 02111 ",
- " 00111 ",
- " 0 1111 ",
- " 00 11 ",
- " 0 11 ",
- " 00 11 ",
- " 00 11 ",
- " 0 1 ",
- " 0 ",
- " 0 "};
-
-static char *curved_line_middle_x24[] = {
- "24 24 4 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #CC0000",
- " ",
- " 0 ",
- " 000000 ",
- " 0000 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 0 ",
- " 0 ",
- " 0022222 ",
- " 00 222 ",
- " 0 22 2 ",
- " 00 22 2 ",
- " 00 22 ",
- " 00 22 ",
- " 0 22 ",
- " 00 22 ",
- " 00 22 ",
- " 0 22 ",
- " 0 2 ",
- " 0 ",
- " 0 ",
- " "};
-
-static char *curved_line_middle_x32[] = {
- "32 32 4 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #800000",
- " ",
- " ",
- " 000000 ",
- " 000000000 ",
- " 000000 ",
- " 00000 ",
- " 00000 ",
- " 0000 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 002 ",
- " 000111111 ",
- " 000 111111 ",
- " 00 11111 ",
- " 00 11 111 ",
- " 000 11 111 ",
- " 00 11 111 ",
- " 000 111 ",
- " 00 111 ",
- " 00 111 ",
- " 000 111 ",
- " 00 111 ",
- " 00 1111 ",
- " 000 111 ",
- " 00 111 ",
- " 00 111 ",
- " 00 1 ",
- " 00 ",
- " 00 ",
- " "};
-
-static char **curved_line_middle_xpm[3] = { curved_line_middle_x16, curved_line_middle_x24, curved_line_middle_x32 };
-
diff --git a/app/bin/bitmaps/curved-line-tangent.xpm b/app/bin/bitmaps/curved-line-tangent.xpm
deleted file mode 100644
index e184d3a..0000000
--- a/app/bin/bitmaps/curved-line-tangent.xpm
+++ /dev/null
@@ -1,98 +0,0 @@
-static char *curved_line_tangent_x16[] = {
- "16 16 4 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #CC0000",
- " ",
- " 00000",
- " 0000 ",
- " 000 ",
- " 00 ",
- " 10 ",
- " 022 ",
- " 00 22 ",
- " 00 22 ",
- " 0 22 ",
- " 00 22 ",
- " 00 22 2 ",
- " 0 22 2 ",
- " 0 222 ",
- "00 2222 ",
- " 0 "};
-
-static char *curved_line_tangent_x24[] = {
- "24 24 5 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #660000",
- "3 c #CC0000",
- " ",
- " ",
- " 000000 ",
- " 0000 ",
- " 000 ",
- " 000 ",
- " 00 ",
- " 00 ",
- " 01 ",
- " 23 ",
- " 0 3 ",
- " 0 3 ",
- " 00 3 ",
- " 0 3 ",
- " 0 33 ",
- " 0 33 ",
- " 00 33 ",
- " 0 33 3 ",
- " 00 33 3 ",
- " 00 33 3 ",
- " 00 333 ",
- " 00 33333 ",
- " 0 3 ",
- " "};
-
-static char *curved_line_tangent_x32[] = {
- "32 32 6 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #990000",
- "3 c #CC0000",
- "4 c #800000",
- " ",
- " ",
- " 00000 ",
- " 00000000 ",
- " 0000000 ",
- " 00000 ",
- " 00000 ",
- " 0000 ",
- " 000 ",
- " 000 ",
- " 0000 ",
- " 001 ",
- " 0043 ",
- " 002333 ",
- " 00 333 ",
- " 000 333 ",
- " 000 333 ",
- " 00 333 ",
- " 000 333 ",
- " 00 333 ",
- " 000 333 ",
- " 00 333 ",
- " 00 333 3 ",
- " 00 333 33 ",
- " 00 333 33 ",
- " 00 333 33 ",
- " 00 333333 ",
- " 000 3333 ",
- " 000 33333333 ",
- " 00 33333333 ",
- " ",
- " "};
-
-static char **curved_line_tangent_xpm[3] = { curved_line_tangent_x16, curved_line_tangent_x24, curved_line_tangent_x32 };
-
diff --git a/app/bin/bitmaps/curved-middle.xpm b/app/bin/bitmaps/curved-middle.xpm
deleted file mode 100644
index 70fc4de..0000000
--- a/app/bin/bitmaps/curved-middle.xpm
+++ /dev/null
@@ -1,108 +0,0 @@
-static char *curved_middle_x16[] = {
- "16 16 5 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #CC9966",
- "3 c #FF6666",
- " 2 2 ",
- " 2 0000 ",
- " 2 00 2 2 ",
- " 2 00 2 000 ",
- " 0 2 002 2 ",
- " 2 0 2 ",
- " 0 1111 ",
- " 20 113 ",
- " 02 1313 ",
- " 20 1 313 ",
- " 0202 313 ",
- " 0 0 313 ",
- "20202 313 ",
- " 0 0 313 ",
- "20202 31 ",
- " "};
-
-static char *curved_middle_x24[] = {
- "24 24 9 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #996600",
- "5 c #CC0000",
- "6 c #CC6600",
- "7 c #CC9900",
- " 7 ",
- " 7 430",
- " 4300340",
- " 7 0026 77 ",
- " 320 730210",
- " 7 00077 013037 ",
- " 41 400 7 7 ",
- " 037 037 ",
- " 720 60 7 ",
- " 167 027 ",
- " 00 740 7 ",
- " 743 37 ",
- " 17740 655555 ",
- " 00 736 55555 ",
- " 742 00 555 ",
- " 26760 5 55 ",
- " 0 367 5 55 ",
- " 00 0 5 55 ",
- "7726720 5 ",
- " 277277 5 ",
- " 00 0 5 ",
- " 00 00 5 ",
- "7447447 5 ",
- " 01 34 "};
-
-static char *curved_middle_x32[] = {
- "32 32 11 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #666600",
- "5 c #996600",
- "6 c #CC0000",
- "7 c #CC3300",
- "8 c #CC6600",
- "9 c #CC9900",
- " ",
- " 99 ",
- " 9 002300",
- " 5200038 ",
- " 99 00038 9 ",
- " 810 9 820",
- " 028 8500033 ",
- " 99 000 99 005 99 ",
- " 930 9200 99 ",
- " 059 015 ",
- " 99 0 9 00 99 ",
- " 983 920 ",
- " 399 08 ",
- " 0 99950 9 ",
- " 99 0 9938 ",
- " 935 299 ",
- " 02999 0 97666666 ",
- " 0 953 66666666 ",
- " 00 0299 6666666 ",
- " 9991 0 666666 ",
- " 3599 00 6666666 ",
- " 0 9839 666 6666 ",
- " 00 0399 666 6666 ",
- " 00 0 6666 ",
- " 9919 00 666 ",
- " 5399928 666 ",
- " 00 3299 666 ",
- " 00 00 666 ",
- " 0 00 666 ",
- "99289 15 666 ",
- "990999199 66 ",
- " 0 0 "};
-
-static char **curved_middle_xpm[3] = { curved_middle_x16, curved_middle_x24, curved_middle_x32 };
-
diff --git a/app/bin/bitmaps/curved-tangent.xpm b/app/bin/bitmaps/curved-tangent.xpm
deleted file mode 100644
index 6332785..0000000
--- a/app/bin/bitmaps/curved-tangent.xpm
+++ /dev/null
@@ -1,116 +0,0 @@
-static char *curved_tangent_x16[] = {
- "16 16 5 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #CC9966",
- "3 c #FF6666",
- " 2 2 ",
- " 2 0000 ",
- " 2 00 2 2 ",
- " 2 00 2 000 ",
- " 0 2 002 2 ",
- " 2 0 002 ",
- " 0 13 ",
- " 20 313 ",
- " 020 313 ",
- " 20 0 313 ",
- " 0202 313 ",
- " 0 0 313 1 ",
- "20202 3131 ",
- " 0 0 311 ",
- "20202 1111 ",
- " "};
-
-static char *curved_tangent_x24[] = {
- "24 24 13 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #996600",
- "5 c #CC0000",
- "6 c #CC6600",
- "7 c #CC6666",
- "8 c #CC9900",
- "9 c #CCCCCC",
- "A c #FFCCCC",
- "B c #FFFFFF",
- " ",
- " 8 440 ",
- " 2400340 ",
- " 830048 8 ",
- " 014 88 8 ",
- " 8600 88 80030 ",
- " 34 80022 4 ",
- " 00 8 33 ",
- " 63 81048 ",
- " 08BA 34 ",
- " 60 95A0 ",
- " 26 B755 ",
- " 00 880B555 ",
- " 60 43 555 ",
- " 448 0 555 ",
- " 0 8830 555 ",
- " 00 438 555 ",
- " 10 00 555 5 ",
- " 828881 555 55 ",
- " 0 8438 55555 ",
- " 00 00 5555 ",
- " 33 23 55555 ",
- " 448836 55555 ",
- " 0 0 "};
-
-static char *curved_tangent_x32[] = {
- "32 32 15 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #993300",
- "5 c #996600",
- "6 c #CC0000",
- "7 c #CC3333",
- "8 c #CC6600",
- "9 c #CC6666",
- "A c #CC9900",
- "B c #CC9999",
- "C c #FFCCCC",
- "D c #FFFFFF",
- " ",
- " AA ",
- " AA 003200 ",
- " 320005A ",
- " A0000A A ",
- " 32 AA A ",
- " 005A AA A3 ",
- " A 00 AA A000010 ",
- " 33 A 0023 A ",
- " 00AA 8200A ",
- " A 00 A 018 ",
- " 33 A500 A ",
- " 02AADD 53 ",
- " 00 D9BD08 ",
- " A82 DC76BD ",
- " 1AA DC766 ",
- " 00 AA 0C666 ",
- " 0 A3 666 ",
- " A1 05A 666 ",
- " 54A 00 666 ",
- " 0 AAA0 666 ",
- " 0 55 666 ",
- " 00 0 666 ",
- " 0 00 666 6 ",
- " A3AAA 00 666 666 ",
- " 00 AAA2A 6666666 ",
- " 00 00 666666 ",
- " 00 00 66666 ",
- " 0 00 6666666 ",
- " A3AAAA38 6666666 ",
- " 0 08 ",
- " "};
-
-static char **curved_tangent_xpm[3] = { curved_tangent_x16, curved_tangent_x24, curved_tangent_x32 };
-
diff --git a/app/bin/bitmaps/cut.xpm b/app/bin/bitmaps/cut.xpm
deleted file mode 100644
index 6dcae39..0000000
--- a/app/bin/bitmaps/cut.xpm
+++ /dev/null
@@ -1,92 +0,0 @@
-static char *cut_x16[] = {
- "16 16 3 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- " ",
- " ",
- " 1 ",
- " 1111 ",
- " 11 11 ",
- " 1111 ",
- " 11 ",
- " 11 11111 ",
- " 11111111111111 ",
- " 11111 1111 ",
- " 1 11 111 ",
- " 111 111 ",
- " 111 ",
- " 111 ",
- " ",
- " "};
-
-static char *cut_x24[] = {
- "24 24 3 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- " ",
- " ",
- " ",
- " ",
- " 1111 ",
- " 11 11 ",
- " 111 11 ",
- " 111 1 ",
- " 1111 ",
- " 1111 ",
- " 1111 ",
- " 1111 1111111 ",
- " 11111111111111111111 ",
- " 111111111111111111111 ",
- " 1111111 111 ",
- " 11 11 1111 ",
- " 11 111 1111 ",
- " 111 1111 ",
- " 1111 ",
- " 1111 ",
- " 111 ",
- " ",
- " ",
- " "};
-
-static char *cut_x32[] = {
- "32 32 3 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- " ",
- " ",
- " ",
- " ",
- " ",
- " 11111 ",
- " 1111111 ",
- " 111 111 ",
- " 111 11 ",
- " 1111 111 ",
- " 111111111 ",
- " 1111111 ",
- " 1111 ",
- " 11111 ",
- " 11111 ",
- " 11111 1111111111 ",
- " 111111111111111111111111 ",
- " 1111111111111111111111111111 ",
- " 111111111111111111 ",
- " 111 111 1111 ",
- " 11 111 1111 ",
- " 111 111 11111 ",
- " 1111111 11111 ",
- " 11111 1111 ",
- " 1111 ",
- " 11111 ",
- " 11111 ",
- " 111 ",
- " ",
- " ",
- " ",
- " "};
-
-static char **cut_xpm[3] = { cut_x16, cut_x24, cut_x32 };
-
diff --git a/app/bin/bitmaps/delete.xpm b/app/bin/bitmaps/delete.xpm
deleted file mode 100644
index 9002046..0000000
--- a/app/bin/bitmaps/delete.xpm
+++ /dev/null
@@ -1,114 +0,0 @@
-static char *delete_x16[] = {
- "16 16 9 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #990000",
- "3 c #CC0000",
- "4 c #CC3300",
- "5 c #CC6600",
- "6 c #CC9900",
- "7 c #800000",
- " ",
- " ",
- " 33 33 ",
- " 33 333 ",
- " 33 333 ",
- " 6 6 533534 6 6 ",
- "0000007333100000",
- " 6 6 663346 6 6 ",
- " 6 6 663356 6 6 ",
- "0000007332000000",
- " 6 6 633435 6 6 ",
- " 333 33 ",
- " 333 33 ",
- " 33 333 ",
- " 3 ",
- " "};
-
-static char *delete_x24[] = {
- "24 24 11 1",
- " c None",
- "0 c #000000",
- "1 c #333300",
- "2 c #663300",
- "3 c #993300",
- "4 c #996600",
- "5 c #CC0000",
- "6 c #CC3300",
- "7 c #CC6600",
- "8 c #CC9900",
- "9 c #800000",
- " ",
- " ",
- " ",
- " 555 555 ",
- " 5555 555 ",
- " 5555 555 ",
- " 5555 5555 ",
- " 555 5555 ",
- " 8 8 75557556 8 8 ",
- "01200200295555520020021 ",
- " 47 7 74555567 7 74 ",
- " 8 8 8 555578 8 8 ",
- " 8 8 8 5555 8 8 8 ",
- " 47 7 74555537 7 74 ",
- "012002002255555200200210",
- " 8 8 85556557 8 8 ",
- " 5555 555 ",
- " 555 555 ",
- " 555 5555 ",
- " 555 5555 ",
- " 555 555 ",
- " 5 5 ",
- " ",
- " "};
-
-static char *delete_x32[] = {
- "32 32 11 1",
- " c None",
- "0 c #000000",
- "1 c #333300",
- "2 c #663300",
- "3 c #990000",
- "4 c #993300",
- "5 c #996600",
- "6 c #CC0000",
- "7 c #CC3300",
- "8 c #CC6600",
- "9 c #CC9900",
- " ",
- " ",
- " ",
- " 6 6 ",
- " 666 666 ",
- " 66666 66666 ",
- " 66666 66666 ",
- " 66666 6666 ",
- " 66666 6666 ",
- " 66666 66666 ",
- " 66666 66666 ",
- " 99 99 9766686667 99 99 ",
- " 055005510254666666651025500550 ",
- " 055005510255366666751025500550 ",
- " 99 99 99 6666699 99 99 ",
- " 99 99 99 6666699 99 99 ",
- " 99 99 99 6666699 99 99 ",
- " 99 99 99 6666699 99 99 ",
- " 055005510255666666551025500550 ",
- " 055005510254666666751025500550 ",
- " 99 99 9766686668 99 99 ",
- " 66666 6666 ",
- " 6666 6666 ",
- " 6666 66666 ",
- " 66666 66666 ",
- " 66666 66666 ",
- " 6666 66666 ",
- " 6666 666 ",
- " 66 6 ",
- " ",
- " ",
- " "};
-
-static char **delete_xpm[3] = { delete_x16, delete_x24, delete_x32 };
-
diff --git a/app/bin/bitmaps/describe.xpm b/app/bin/bitmaps/describe.xpm
deleted file mode 100644
index 1cbeb20..0000000
--- a/app/bin/bitmaps/describe.xpm
+++ /dev/null
@@ -1,111 +0,0 @@
-static char *describe_x16[] = {
- "16 16 5 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #CC9966",
- "3 c #FF6666",
- " ",
- " 331133 ",
- " 31111113 ",
- " 113 311 ",
- " 11 ",
- " 2 2 2 3113 2 ",
- "000000 3113 0000",
- " 2 2 2 113 2 2 ",
- " 2 2 2 11 2 2 2 ",
- "000000 11 000000",
- " 2 2 2 11 2 2 2 ",
- " ",
- " 11 ",
- " 11 ",
- " ",
- " "};
-
-static char *describe_x24[] = {
- "24 24 10 1",
- " c None",
- "0 c #000000",
- "1 c #333300",
- "2 c #660000",
- "3 c #663300",
- "4 c #990000",
- "5 c #996600",
- "6 c #CC0000",
- "7 c #CC6600",
- "8 c #CC9900",
- " ",
- " ",
- " ",
- " 66666666 ",
- " 6666666666 ",
- " 66666666666 ",
- " 6666 6666 ",
- " 66 6666 ",
- " 6666 ",
- " 8 8 88 66666 8 88 ",
- " 00000000046666620000000",
- " 8 8 88666667 8 88 ",
- " 8 8 886666 8 8 88 ",
- " 8 8 886666 8 8 88 ",
- " 1500510536664150051053 ",
- " 1500510536664150051053 ",
- " 8 8 8 6666 8 8 8 ",
- " 666 ",
- " 6 ",
- " 66 ",
- " 666 ",
- " ",
- " ",
- " "};
-
-static char *describe_x32[] = {
- "32 32 13 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #990000",
- "5 c #993300",
- "6 c #996600",
- "7 c #CC0000",
- "8 c #CC3300",
- "9 c #CC6600",
- "A c #CC9900",
- "B c #800000",
- " ",
- " ",
- " ",
- " 7777 ",
- " 7777777777 ",
- " 777777777777 ",
- " 77777777777777 ",
- " 77777 77777 ",
- " 7777 77777 ",
- " 7777 77777 ",
- " 77 7777 ",
- " 77777 ",
- " AA AA AA 777777 AA AA ",
- " 066006630266B77777777106600660 ",
- " 066006630266B77777785006600660 ",
- " AA AA AA 777778AA AA AA ",
- " AA AA AA 7777 AAA AA AA ",
- " AA AA AA 7777 AAA AA AA ",
- " AA AA AA 7777 AAA AA AA ",
- " 033003320133B77770232003300330 ",
- " 99 696 39947777 696 99 99 ",
- " AA AA AA 7777 AAA AA AA ",
- " 7777 ",
- " 7777 ",
- " 7 ",
- " 77 ",
- " 7777 ",
- " 7777 ",
- " 77 ",
- " ",
- " ",
- " "};
-
-static char **describe_xpm[3] = { describe_x16, describe_x24, describe_x32 };
-
diff --git a/app/bin/bitmaps/description.xpm b/app/bin/bitmaps/description.xpm
deleted file mode 100644
index 47941b0..0000000
--- a/app/bin/bitmaps/description.xpm
+++ /dev/null
@@ -1,101 +0,0 @@
-static char *description_x16[] = {
- "16 16 5 1",
- " c None",
- "0 c #000000",
- "1 c #0066CC",
- "2 c #0099FF",
- "3 c #FF0000",
- " ",
- "00 000 00 00 ",
- "0 0 0 0 0 ",
- "0 0 00 0 0 ",
- "0 0 0 0 0 ",
- "00 000 00 00 ",
- " 3 ",
- " 333 ",
- " 33333 ",
- " 3 ",
- " 2 2 2 3 2 2 2 ",
- " 11111 3 11111 ",
- " 2 2 2 2 2 2 ",
- " 1111111111111 ",
- " 2 2 2 2 2 2 2 ",
- " "};
-
-static char *description_x24[] = {
- "24 24 5 1",
- " c None",
- "0 c #000000",
- "1 c #0066CC",
- "2 c #0099FF",
- "3 c #FF0000",
- " ",
- " ",
- " ",
- " 000 0000 000 00 ",
- " 0 0 0 0 0 0 ",
- " 0 0 000 00 0 ",
- " 0 0 0 0 0 0 ",
- " 000 0000 000 00 ",
- " ",
- " 33 ",
- " 3333 ",
- " 333333 ",
- " 33 ",
- " 33 ",
- " 2 2 2 33 2 2 2 ",
- " 111111111 33 11111111 ",
- " 2 2 2 33 2 2 2 ",
- " 2 2 2 33 2 2 2 ",
- " 2 2 2 2 2 2 ",
- " 111111111111111111111 ",
- " 2 2 2 2 2 2 2 ",
- " ",
- " ",
- " "};
-
-static char *description_x32[] = {
- "32 32 8 1",
- " c None",
- "0 c #000000",
- "1 c #0000CC",
- "2 c #0033CC",
- "3 c #0066CC",
- "4 c #0066FF",
- "5 c #0099FF",
- "6 c #CC0000",
- " ",
- " 0000 00000 000 000 ",
- " 000000 00000 00000 00000 ",
- " 00 000 00 00 00 ",
- " 00 00 00000 0000 00 ",
- " 00 000 00 0000 00 ",
- " 00 000 00 0 00 000 0 ",
- " 000000 00000 00000 00000 ",
- " ",
- " 66 ",
- " 6666 ",
- " 666666 ",
- " 66666666 ",
- " 6 66 66 ",
- " 66 ",
- " 66 ",
- " 66 ",
- " 66 ",
- " 66 ",
- " 66 ",
- " ",
- " 55 5 5 55 5 5 55 ",
- " 55 35 53 55 35 53 45 ",
- " 111111111111111111111111111111 ",
- " 55 35 53 55 35 53 45 ",
- " 55 5 5 55 5 5 55 ",
- " 55 5 5 55 5 5 55 ",
- " 55 35 53 55 35 53 45 ",
- " 111111111111111111111111111111 ",
- " 133112311133113311231113311331 ",
- " 55 5 5 55 5 5 55 ",
- " "};
-
-static char **description_xpm[3] = { description_x16, description_x24, description_x32 };
-
diff --git a/app/bin/bitmaps/dimension.xpm b/app/bin/bitmaps/dimension.xpm
deleted file mode 100644
index faceac6..0000000
--- a/app/bin/bitmaps/dimension.xpm
+++ /dev/null
@@ -1,94 +0,0 @@
-static char *dimension_x16[] = {
- "16 16 4 1",
- " c None",
- "0 c #000000",
- "1 c #990000",
- "2 c #999999",
- " 1111",
- " 111",
- " 1111",
- " 111 1",
- " 11 ",
- " 002 200 ",
- " 0 0 ",
- " 02 002 ",
- " 0 0 0 ",
- " 002 202 ",
- " ",
- " 11 ",
- "1 111 ",
- "1111 ",
- "111 ",
- "1111 "};
-
-static char *dimension_x24[] = {
- "24 24 4 1",
- " c None",
- "0 c #000000",
- "1 c #990000",
- "2 c #CC0000",
- " ",
- " 222222 ",
- " 22222 ",
- " 22222",
- " 222222",
- " 222 22",
- " 222 2 ",
- " 22 ",
- " 2 ",
- " 000 0000 ",
- " 0 00 0 0 ",
- " 00 0000 ",
- " 0000 00 ",
- " 0 0 0 0 ",
- " 0000 0000 ",
- " 0 0 ",
- " 22 ",
- " 22 222 ",
- " 22 222 ",
- " 22222 ",
- " 2222 ",
- " 222222 ",
- " 222222 ",
- " "};
-
-static char *dimension_x32[] = {
- "32 32 3 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- " ",
- " 1111111 ",
- " 11111111 ",
- " 1111111 ",
- " 11111 ",
- " 111111 ",
- " 1111 11 ",
- " 1111 11 ",
- " 1111 11 ",
- " 1111 ",
- " 111 ",
- " ",
- " 00000 00000 ",
- " 00 00 00 00 ",
- " 00 00 ",
- " 000 000000 ",
- " 000 00 00 ",
- " 0000 00 ",
- " 00 00 0 00 ",
- " 00000 00000 ",
- " 0 00 ",
- " 11 ",
- " 1 111 ",
- " 111 1111 ",
- " 111 1111 ",
- " 111 1111 ",
- " 1111111 ",
- " 111111 ",
- " 11111111 ",
- " 11111111 ",
- " 11111111 ",
- " "};
-
-static char **dimension_xpm[3] = { dimension_x16, dimension_x24, dimension_x32 };
-
diff --git a/app/bin/bitmaps/doc-export-bmap.xpm b/app/bin/bitmaps/doc-export-bmap.xpm
deleted file mode 100644
index 543cc1a..0000000
--- a/app/bin/bitmaps/doc-export-bmap.xpm
+++ /dev/null
@@ -1,162 +0,0 @@
-static char *doc_export_bmap_x16[] = {
- "16 16 23 1",
- " c None",
- "0 c #000000",
- "1 c #333300",
- "2 c #333333",
- "3 c #336666",
- "4 c #336699",
- "5 c #3399CC",
- "6 c #663333",
- "7 c #666633",
- "8 c #666666",
- "9 c #669933",
- "A c #6699CC",
- "B c #996633",
- "C c #996666",
- "D c #999966",
- "E c #999999",
- "F c #CC0000",
- "G c #CC9966",
- "H c #CC9999",
- "I c #CCCC99",
- "J c #CCCCCC",
- "K c #FFCCCC",
- "L c #808080",
- "2888888888872 ",
- "8KH2788881JI2 ",
- "8DIJKEJKKKHI2 ",
- "8E99I8KKKKK82 ",
- "8I99DHKKKKK22 ",
- "8CII7JKKKKKHF ",
- "8J2K7JKKKKKKFF ",
- "8KKD2KKKIHHGFFFF",
- "4LKK0KKKHHHGFFFF",
- "4AAK2KKKKKKKFF ",
- "4AAH2KIHHHK8F ",
- "4AA32KCBBBI02 ",
- "4AA4LKCBBBI62 ",
- "4AAAKDIHHHKH2 ",
- "4AAAKK88C2EI2 ",
- "45558EEEEEED2 "};
-
-static char *doc_export_bmap_x24[] = {
- "24 24 30 1",
- " c None",
- "0 c #000000",
- "1 c #000033",
- "2 c #003333",
- "3 c #330000",
- "4 c #333300",
- "5 c #333333",
- "6 c #336699",
- "7 c #339933",
- "8 c #3399CC",
- "9 c #663333",
- "A c #666633",
- "B c #666666",
- "C c #666699",
- "D c #669933",
- "E c #6699CC",
- "F c #996633",
- "G c #996666",
- "H c #999966",
- "I c #999999",
- "J c #CC0000",
- "K c #CC3333",
- "L c #CC6666",
- "M c #CC9966",
- "N c #CC9999",
- "O c #CCCC99",
- "P c #CCCCCC",
- "Q c #FFCC99",
- "R c #FFCCCC",
- "S c #808080",
- "3000000000000000005 ",
- "5RRRROOOOOOOOPRRRP5 ",
- "5RRN5SSNNNNNNB5IRP5 ",
- "5RGNRRRRORRRRRROBP5 ",
- "5OSOHOROBRRRRRRRGO5 ",
- "5BR77DOBORRRRRRROI5 ",
- "5AOD7DOBRRRRRRRROS5 ",
- "5BRODHINRRRRRRRRP5 ",
- "5OHRRRHNRRRRRRRRRP J ",
- "5RI9PRHNRRRRRRRRRRJJJ ",
- "5RRRAIGORRRRRRRRRR JJJJ ",
- "5RRRRHBORRRRQLLLLKJJJJJJ",
- "5SORRR0ORRRRQLLLLKJJJJJJ",
- "5EEBRR4ORRRRRRRRRR JJJJ ",
- "5EEECRBPRRRRRRRRRRJJJ ",
- "5EEE8RBPRRRRRRRRPG J ",
- "5EEEENGPRO9999FRR5 ",
- "5EEEEHGPRNFMMMFPRB5 ",
- "5EEEESONRNFMMMFPOH5 ",
- "5EEEECR9RO9999FRIN5 ",
- "5EEEE6RIBRRRRRRR4P5 ",
- "5EEEE8RRO3BNNNB0PP5 ",
- "5EEEEEIRRRROOOPRRP5 ",
- "2111110BBBBBBBBBBB5 "};
-
-static char *doc_export_bmap_x32[] = {
- "32 32 26 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #333333",
- "3 c #336666",
- "4 c #336699",
- "5 c #339933",
- "6 c #339999",
- "7 c #3399CC",
- "8 c #663333",
- "9 c #666633",
- "A c #666666",
- "B c #669933",
- "C c #669966",
- "D c #6699CC",
- "E c #996633",
- "F c #996666",
- "G c #999966",
- "H c #999999",
- "I c #CC0000",
- "J c #CC9966",
- "K c #CC9999",
- "L c #CCCC99",
- "M c #CCCCCC",
- "N c #FFCCCC",
- "O c #808080",
- "2000000000000000000000002 ",
- "0NNNNNNNNNNNNNNNNNNNNNNN0 ",
- "0NNNNMHFFFFFFFFFFOHLNNNN0 ",
- "0NNNH2GKKKLLLLLLLKH9ALNN0 ",
- "0NNFAMNNNNNMNNNNNNNNK2LN0 ",
- "0NHANNLNNNLANNNNNNNNNHAN0 ",
- "0N2LG5BLNNALNNNNNNNNNN2M0 ",
- "0KANB55BMKHNNNNNNNNNNNAL0 ",
- "0KOLB55BN9MNNNNNNNNNNNFK0 ",
- "0LANLBBCL9NNNNNNNNNNNNFA2 ",
- "0M2MNLMNKGNNNNNNNNNNNNKA ",
- "0NAHNNNNKGNNNNNNNNNNNNNN II ",
- "0NLAALNNKGNNNNNNNNNNNNN IIII ",
- "0NNNK2HNHHNNNNNNNNNNNNN IIII ",
- "0NNNNMFAHHNNNNNNNNNNNNN IIIII ",
- "0NNNNNNGAHNNNNNNNIIIIIIIIIIIIIII",
- "13LNNNNN2GNNNNNNNIIIIIIIIIIIIIII",
- "1DD3KNNNAFNNNNNNNNNNNNN IIIII ",
- "1DDDDHNNGHNNNNNNNNNNNNN IIII ",
- "1DDDDDKNHHNNNNNNNNNNNNN IIII ",
- "1DDDDDANHHNNNNNNNNNNNNM II ",
- "1DDDDD4MHHNNNKKKKKKKNNH2 ",
- "1DDDDD7LHHNNMEEEEEE8NNGF2 ",
- "1DDDDDDLHGNNMEJJJJJ8NNGK0 ",
- "1DDDDDDKL8NNMEJJJJJ8NNFK0 ",
- "1DDDDDDHN2LNMEEEEEE8NNAL0 ",
- "1DDDDDDANHANNKKKKKKLNL2M0 ",
- "1DDDDDD3NNAFMNNNNNNNMAHN0 ",
- "1DDDDDD6LNNH2FKLLLLH2ONN0 ",
- "1DDDDDDDKNNNMKFAAAAGLNNN0 ",
- "1DDDDDDD3NNNNNNNNNNNNNNN0 ",
- "122222222AAAAAAAAAAAAAAA0 "};
-
-static char **doc_export_bmap_xpm[3] = { doc_export_bmap_x16, doc_export_bmap_x24, doc_export_bmap_x32 };
-
diff --git a/app/bin/bitmaps/doc-export-dxf.xpm b/app/bin/bitmaps/doc-export-dxf.xpm
deleted file mode 100644
index 7ac2c54..0000000
--- a/app/bin/bitmaps/doc-export-dxf.xpm
+++ /dev/null
@@ -1,100 +0,0 @@
-static char *doc_export_dxf_x16[] = {
- "16 16 7 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #993333",
- "3 c #996666",
- "4 c #CC0000",
- "5 c #CC3333",
- "1111111111111 ",
- "11 11 11 11 1 ",
- "1 1 1 1 1 ",
- "1111111111111 ",
- "11 11 11 11 1 ",
- "1 1 1 1 2 ",
- "11111111111144 ",
- "11 11 112325 44 ",
- "1 1 1 44444444",
- "11111111111144 ",
- "1 1 1 1 4 ",
- "1 1 1 1 1 ",
- "1111111111111 ",
- "1 1 1 1 1 ",
- "1 1 1 1 1 ",
- "1111111111111 "};
-
-static char *doc_export_dxf_x24[] = {
- "24 24 5 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #996666",
- "3 c #CC0000",
- "11111111111111111111 ",
- "11111111111111111111 ",
- "11 1 11 1 11 ",
- "11 1 11 1 11 ",
- "11 1 11 1 11 ",
- "11111111111111111111 ",
- "11 1 11 1 11 ",
- "11 1 11 1 1 ",
- "11 1 11 1 33 ",
- "111111111111111112333 ",
- "11111111111111111 333 ",
- "11 1 11 33333333333 ",
- "11 1 11 33333333333 ",
- "11 1 11 1 333 ",
- "111111111111111112333 ",
- "11 1 11 1 33 ",
- "11 1 11 1 1 ",
- "11 1 11 1 11 ",
- "11111111111111111111 ",
- "11 1 11 1 11 ",
- "11 1 11 1 11 ",
- "11 1 11 1 11 ",
- "11 1 11 1 11 ",
- "11111111111111111111 "};
-
-static char *doc_export_dxf_x32[] = {
- "32 32 5 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #993333",
- "3 c #CC0000",
- " 1 11 11 11 11 ",
- "11111111111111111111111111 ",
- " 1 1 1 11 11 ",
- " 1 1 1 11 11 ",
- " 1 1 1 11 11 ",
- " 1 1 1 11 11 ",
- " 1 11 11 11 11 ",
- "11111111111111111111111111 ",
- " 1 1 1 11 11 ",
- " 1 1 1 11 11 ",
- " 1 1 1 11 ",
- " 1 1 1 11 33 ",
- " 1 11 11 11 333 ",
- "11111111111111111111111 33333 ",
- " 1 1 1 1 3333 ",
- " 1 1 1 333333333333333 ",
- " 1 1 1 333333333333333 ",
- " 1 1 1 32 33333 ",
- " 1 11 11 11 3333 ",
- "1111111111111111111111123333 ",
- " 1 1 1 1 33 ",
- " 1 1 1 1 ",
- " 1 1 1 1 11 ",
- " 1 1 1 1 11 ",
- "11111111111111111111111111 ",
- "11111111111111111111111111 ",
- " 1 1 1 1 11 ",
- " 1 1 1 1 11 ",
- " 1 1 1 1 11 ",
- " 1 1 1 1 11 ",
- " 1111111111111111111111111 ",
- " 1111111111111111111111111 "};
-
-static char **doc_export_dxf_xpm[3] = { doc_export_dxf_x16, doc_export_dxf_x24, doc_export_dxf_x32 };
-
diff --git a/app/bin/bitmaps/doc-export-svg.xpm b/app/bin/bitmaps/doc-export-svg.xpm
deleted file mode 100644
index 72c85d3..0000000
--- a/app/bin/bitmaps/doc-export-svg.xpm
+++ /dev/null
@@ -1,114 +0,0 @@
-static char *doc_export_svg_x16[] = {
- "16 16 10 1",
- " c None",
- "0 c #000000",
- "1 c #003300",
- "2 c #003366",
- "3 c #003399",
- "4 c #006600",
- "5 c #0066CC",
- "6 c #0066FF",
- "7 c #CC0000",
- "8 c #008000",
- " 888 ",
- " 888888400000 ",
- " 8 011 ",
- "88 00 88 ",
- "88 00 88 ",
- "8800 88 7 ",
- " 41 8 77 ",
- " 048888 77777777",
- " 0 77777777",
- " 00 6 77 ",
- " 00 666 7 ",
- " 036 6 ",
- " 300 6 ",
- " 6 00230000 ",
- " 66 32000 ",
- " 666666666 "};
-
-static char *doc_export_svg_x24[] = {
- "24 24 10 1",
- " c None",
- "0 c #000000",
- "1 c #003300",
- "2 c #003366",
- "3 c #003399",
- "4 c #006600",
- "5 c #0066CC",
- "6 c #0066FF",
- "7 c #CC0000",
- "8 c #008000",
- " 888 ",
- " 88888888 ",
- " 888 88840000000 ",
- " 888 0111 ",
- " 88 000 88 ",
- "88 00 88 ",
- "88 00 88 ",
- "88 0 88 ",
- " 8800 88 7 ",
- " 880 88 777 ",
- " 448 888 7777 ",
- " 048888888 77777777777",
- " 0 8888 77777777777",
- " 0 7777 ",
- " 0 66 7777 ",
- " 00 66 7 ",
- " 0 6 6 ",
- " 056 66 ",
- " 520 6 ",
- " 6 000026 ",
- " 6 00002000000 ",
- " 66 5300000 ",
- " 6666666666666 ",
- " 6666666666666 "};
-
-static char *doc_export_svg_x32[] = {
- "32 32 11 1",
- " c None",
- "0 c #000000",
- "1 c #000033",
- "2 c #003300",
- "3 c #003366",
- "4 c #003399",
- "5 c #006600",
- "6 c #0066CC",
- "7 c #0066FF",
- "8 c #CC0000",
- "9 c #008000",
- " 99 ",
- " 99999999 ",
- " 999999999999 00000000 ",
- " 9999 9950000000000 ",
- " 999 0000000 ",
- " 999 0000299 ",
- " 99 00000 99 ",
- "999 0000 99 ",
- "999 0000 99 ",
- "999 000 99 ",
- " 99 000 99 ",
- " 995000 999 88 ",
- " 99200 999 8888 ",
- " 9005 9999 88888 ",
- " 029999999999 88888 ",
- " 002999999999 888888888888888",
- " 000 99999 888888888888888",
- " 000 88888 ",
- " 000 7 88888 ",
- " 000 777 88888 ",
- " 00 77777 88 ",
- " 000 777777 ",
- " 000677 777 ",
- " 0036 777 ",
- " 63000 777 ",
- " 76300000677 ",
- " 777 00000146 ",
- " 777 00000000000000 ",
- " 777 3431000000 ",
- " 777 777 ",
- " 7777777777777777777 ",
- "777777777777777777777 "};
-
-static char **doc_export_svg_xpm[3] = { doc_export_svg_x16, doc_export_svg_x24, doc_export_svg_x32 };
-
diff --git a/app/bin/bitmaps/doc-export-xtc.xpm b/app/bin/bitmaps/doc-export-xtc.xpm
deleted file mode 100644
index 6afb7c7..0000000
--- a/app/bin/bitmaps/doc-export-xtc.xpm
+++ /dev/null
@@ -1,108 +0,0 @@
-static char *doc_export_xtc_x16[] = {
- "16 16 9 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #996666",
- "3 c #CC0000",
- "4 c #CC3333",
- "5 c #CC9999",
- "6 c #FFCCCC",
- "7 c #FFFFFF",
- "111111111111 ",
- "177777777771 ",
- "177777777771 ",
- "177777777771 ",
- "177777777771 ",
- "1777777777713 ",
- "17777777777133 ",
- "1777777755543333",
- "177777776662 33 ",
- "17777777777133 ",
- "1777777777713 ",
- "177777777771 ",
- "177777777771 ",
- "177777777771 ",
- "177777777771 ",
- "111111111111 "};
-
-static char *doc_export_xtc_x24[] = {
- "24 24 7 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #993333",
- "3 c #CC0000",
- "4 c #FFCCCC",
- "5 c #FFFFFF",
- " 1111111111111111 ",
- "15555555555555551 ",
- "15555555555555551 ",
- "15555555555555551 ",
- "15555555555555551 ",
- "15555555555555551 ",
- "15555555555555551 ",
- "15555555555555551 ",
- "15555555555555551 33 ",
- "15555555555555551 3333 ",
- "15555555555555551 3333 ",
- "155555555555433333333333",
- "15555555555544442333333 ",
- "15555555555555551 333 ",
- "15555555555555551 333 ",
- "15555555555555551 3 ",
- "15555555555555551 ",
- "15555555555555551 ",
- "15555555555555551 ",
- "15555555555555551 ",
- "15555555555555551 ",
- "15555555555555551 ",
- "15555555555555551 ",
- " 1111111111111111 "};
-
-static char *doc_export_xtc_x32[] = {
- "32 32 9 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #993333",
- "3 c #CC0000",
- "4 c #CC3333",
- "5 c #CC9999",
- "6 c #FFCCCC",
- "7 c #FFFFFF",
- " ",
- " 1111111111111111111111 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 333 ",
- " 1777777777777777777771 3333 ",
- " 1777777777777777777771 33333 ",
- " 177777777777777766666233333333 ",
- " 1777777777777776333333333333333",
- " 177777777777777655555433333333 ",
- " 1777777777777777777771 3333 ",
- " 1777777777777777777771 33333 ",
- " 1777777777777777777771 333 ",
- " 1777777777777777777771 3 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 ",
- " 1777777777777777777771 ",
- " 1111111111111111111111 ",
- " "};
-
-static char **doc_export_xtc_xpm[3] = { doc_export_xtc_x16, doc_export_xtc_x24, doc_export_xtc_x32 };
-
diff --git a/app/bin/bitmaps/doc-export.xpm b/app/bin/bitmaps/doc-export.xpm
deleted file mode 100644
index e594e38..0000000
--- a/app/bin/bitmaps/doc-export.xpm
+++ /dev/null
@@ -1,119 +0,0 @@
-static char *doc_export_x16[] = {
- "16 16 12 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #993333",
- "3 c #999999",
- "4 c #CC0000",
- "5 c #CC6666",
- "6 c #CC9999",
- "7 c #CCCCCC",
- "8 c #FFCCCC",
- "9 c #FFFFFF",
- "A c #C0C0C0",
- "111111111111 ",
- "199999999991 ",
- "199999999991 ",
- "193333333391 ",
- "193777777391 ",
- "1937777773914 ",
- "19377777739144 ",
- "1937777765824444",
- "19377777A582444 ",
- "19377777739144 ",
- "1937777773914 ",
- "193333333391 ",
- "199999999991 ",
- "199999999991 ",
- "199999999991 ",
- "111111111111 "};
-
-static char *doc_export_x24[] = {
- "24 24 12 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #993333",
- "3 c #999999",
- "4 c #CC0000",
- "5 c #CC6666",
- "6 c #CC9999",
- "7 c #CCCCCC",
- "8 c #FFCCCC",
- "9 c #FFFFFF",
- "A c #C0C0C0",
- " 1111111111111111 ",
- "199999999999999991 ",
- "199999999999999991 ",
- "199999999999999991 ",
- "199999999999999991 ",
- "199333333333333991 ",
- "199377777777773991 ",
- "199377777777773991 ",
- "19937777777777399144 ",
- "199377777777773991444 ",
- "199377777777773991 4444 ",
- "199377777777A44444444444",
- "19937777777776588244444 ",
- "199377777777773991 444 ",
- "199377777777773991444 ",
- "199377777777773991 4 ",
- "199377777777773991 ",
- "199333333333333991 ",
- "199999999999999991 ",
- "199999999999999991 ",
- "199999999999999991 ",
- "199999999999999991 ",
- "199999999999999991 ",
- " 1111111111111111 "};
-
-static char *doc_export_x32[] = {
- "32 32 12 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #993333",
- "3 c #999999",
- "4 c #CC0000",
- "5 c #CC3333",
- "6 c #CC6666",
- "7 c #CC9999",
- "8 c #CCCCCC",
- "9 c #FFCCCC",
- "A c #FFFFFF",
- " ",
- " 1111111111111111111111 ",
- " 1AAAAAAAAAAAAAAAAAAAA1 ",
- " 1AAAAAAAAAAAAAAAAAAAA1 ",
- " 1AAAAAAAAAAAAAAAAAAAA1 ",
- " 1AAAAAAAAAAAAAAAAAAAA1 ",
- " 1AAAAAAAAAAAAAAAAAAAA1 ",
- " 1AAA33333333333333AAA1 ",
- " 1AA3888888888888883AA1 ",
- " 1AA3888888888888883AA1 ",
- " 1AA3888888888888883AA1 ",
- " 1AA3888888888888883AA1 444 ",
- " 1AA3888888888888883AA1 4444 ",
- " 1AA3888888888888883AA1 44444 ",
- " 1AA388888888888877699244444444 ",
- " 1AA3888888888888444444444444444",
- " 1AA388888888888866677544444444 ",
- " 1AA3888888888888883AA1 4444 ",
- " 1AA3888888888888883AA1 44444 ",
- " 1AA3888888888888883AA1 444 ",
- " 1AA3888888888888883AA1 4 ",
- " 1AA3888888888888883AA1 ",
- " 1AA3888888888888883AA1 ",
- " 1AA3333333333333333AA1 ",
- " 1AAAAAAAAAAAAAAAAAAAA1 ",
- " 1AAAAAAAAAAAAAAAAAAAA1 ",
- " 1AAAAAAAAAAAAAAAAAAAA1 ",
- " 1AAAAAAAAAAAAAAAAAAAA1 ",
- " 1AAAAAAAAAAAAAAAAAAAA1 ",
- " 1AAAAAAAAAAAAAAAAAAAA1 ",
- " 1111111111111111111111 ",
- " "};
-
-static char **doc_export_xpm[3] = { doc_export_x16, doc_export_x24, doc_export_x32 };
-
diff --git a/app/bin/bitmaps/doc-import-xtc.xpm b/app/bin/bitmaps/doc-import-xtc.xpm
deleted file mode 100644
index 4b00631..0000000
--- a/app/bin/bitmaps/doc-import-xtc.xpm
+++ /dev/null
@@ -1,123 +0,0 @@
-static char *doc_import_xtc_x16[] = {
- "16 16 13 1",
- " c None",
- "0 c #000000",
- "1 c #009933",
- "2 c #336666",
- "3 c #339966",
- "4 c #666666",
- "5 c #669966",
- "6 c #999999",
- "7 c #99CC99",
- "8 c #99CCCC",
- "9 c #CCCCCC",
- "A c #FFFFFF",
- "B c #C0C0C0",
- " 4444444444444",
- " 4AAAAAAAAAAA4",
- " 4AAAAAAAAAAA4",
- " 4AAAAAAAAAAA4",
- " 4AAAAAAAAAAA4",
- " 49AAAAAAAAAA4",
- " 486AAAAAAAAA4",
- "1112B739AAAAAAA4",
- "1112B759AAAAAAA4",
- " 496AAAAAAAAA4",
- " 4BAAAAAAAAAA4",
- " 4AAAAAAAAAAA4",
- " 4AAAAAAAAAAA4",
- " 4AAAAAAAAAAA4",
- " 4AAAAAAAAAAA4",
- " 4444444444444"};
-
-static char *doc_import_xtc_x24[] = {
- "24 24 13 1",
- " c None",
- "0 c #000000",
- "1 c #009933",
- "2 c #336633",
- "3 c #339966",
- "4 c #666666",
- "5 c #669966",
- "6 c #669999",
- "7 c #999999",
- "8 c #99CC99",
- "9 c #CCCCCC",
- "A c #FFFFFF",
- "B c #C0C0C0",
- " 444444444444444444",
- " 4AAAAAAAAAAAAAAAAA4",
- " 4AAAAAAAAAAAAAAAAA4",
- " 4AAAAAAAAAAAAAAAAA4",
- " 4AAAAAAAAAAAAAAAAA4",
- " 4AAAAAAAAAAAAAAAAA4",
- " 4AAAAAAAAAAAAAAAAA4",
- " 4AAAAAAAAAAAAAAAAA4",
- " 498AAAAAAAAAAAAAAA4",
- " 4516AAAAAAAAAAAAAA4",
- " 4A8139AAAAAAAAAAAA4",
- "111111111119AAAAAAAAAAA4",
- "111112775119AAAAAAAAAAA4",
- " 4A7159AAAAAAAAAAAA4",
- " 4517AAAAAAAAAAAAAA4",
- " 49BAAAAAAAAAAAAAAA4",
- " 4AAAAAAAAAAAAAAAAA4",
- " 4AAAAAAAAAAAAAAAAA4",
- " 4AAAAAAAAAAAAAAAAA4",
- " 4AAAAAAAAAAAAAAAAA4",
- " 4AAAAAAAAAAAAAAAAA4",
- " 4AAAAAAAAAAAAAAAAA4",
- " 4AAAAAAAAAAAAAAAAA4",
- " 4444444444444444444"};
-
-static char *doc_import_xtc_x32[] = {
- "32 32 14 1",
- " c None",
- "0 c #000000",
- "1 c #006633",
- "2 c #009933",
- "3 c #339933",
- "4 c #339966",
- "5 c #666666",
- "6 c #669966",
- "7 c #669999",
- "8 c #99CC99",
- "9 c #CCCCCC",
- "A c #CCFFCC",
- "B c #CCFFFF",
- "C c #FFFFFF",
- " 55555555555555555555555 ",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5939CCCCCCCCCCCCCCCCCCCC5",
- " 56228CCCCCCCCCCCCCCCCCCC5",
- " 5C6226CCCCCCCCCCCCCCCCCC5",
- " 59982239CCCCCCCCCCCCCCCC5",
- " 22222222222222BCCCCCCCCCCCCCCC5",
- " 22222222222223CCCCCCCCCCCCCCCC5",
- " 5CC7226ACCCCCCCCCCCCCCCC5",
- " 594228CCCCCCCCCCCCCCCCCC5",
- " 56239CCCCCCCCCCCCCCCCCCC5",
- " 596ACCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 55555555555555555555555 "};
-
-static char **doc_import_xtc_xpm[3] = { doc_import_xtc_x16, doc_import_xtc_x24, doc_import_xtc_x32 };
-
diff --git a/app/bin/bitmaps/doc-import.xpm b/app/bin/bitmaps/doc-import.xpm
deleted file mode 100644
index 0b10537..0000000
--- a/app/bin/bitmaps/doc-import.xpm
+++ /dev/null
@@ -1,123 +0,0 @@
-static char *doc_import_x16[] = {
- "16 16 13 1",
- " c None",
- "0 c #000000",
- "1 c #009933",
- "2 c #336666",
- "3 c #339966",
- "4 c #666666",
- "5 c #669966",
- "6 c #999999",
- "7 c #99CC99",
- "8 c #99CCCC",
- "9 c #CCCCCC",
- "A c #FFFFFF",
- "B c #C0C0C0",
- " 4444444444444",
- " 4AAAAAAAAAAA4",
- " 4AAAAAAAAAAA4",
- " 4AAAAAAAAAAA4",
- " 4A666666666A4",
- " 49699999996A4",
- " 48599999996A4",
- "1112B537999996A4",
- "1112B537999996A4",
- " 49399999996A4",
- " 4B699999996A4",
- " 4A699999996A4",
- " 4AA66666666A4",
- " 4AAAAAAAAAAA4",
- " 4AAAAAAAAAAA4",
- " 4444444444444"};
-
-static char *doc_import_x24[] = {
- "24 24 12 1",
- " c None",
- "0 c #000000",
- "1 c #009933",
- "2 c #336633",
- "3 c #339966",
- "4 c #666666",
- "5 c #669966",
- "6 c #999999",
- "7 c #99CC99",
- "8 c #CCCCCC",
- "9 c #FFFFFF",
- "A c #C0C0C0",
- " 444444444444444444",
- " 4999999999999999994",
- " 4999999999999999994",
- " 4999999999999999994",
- " 4999999999999999994",
- " 4999999999999999994",
- " 4996666666666666994",
- " 4996888888888886994",
- " 4876888888888886994",
- " 4613888888888886994",
- " 49713A8888888886994",
- "11111111111A888888886994",
- "11111266311A888888886994",
- " 49613A8888888886994",
- " 4515888888888886994",
- " 48A6888888888886994",
- " 4996888888888886994",
- " 4996888888888886994",
- " 4999666666666666994",
- " 4999999999999999994",
- " 4999999999999999994",
- " 4999999999999999994",
- " 4999999999999999994",
- " 4444444444444444444"};
-
-static char *doc_import_x32[] = {
- "32 32 15 1",
- " c None",
- "0 c #000000",
- "1 c #006633",
- "2 c #009933",
- "3 c #339933",
- "4 c #339966",
- "5 c #666666",
- "6 c #669966",
- "7 c #669999",
- "8 c #999999",
- "9 c #99CC99",
- "A c #CCCCCC",
- "B c #CCFFCC",
- "C c #FFFFFF",
- "D c #C0C0C0",
- " 55555555555555555555555 ",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCC88888888888888888CCC5",
- " 5CCC8AAAAAAAAAAAAAAA8CCC5",
- " 5CCC8AAAAAAAAAAAAAAA8CCC5",
- " 5B4A8AAAAAAAAAAAAAAA8CCC5",
- " 56226AAAAAAAAAAAAAAA8CCC5",
- " 5C7226DAAAAAAAAAAAAA8CCC5",
- " 5AA92239AAAAAAAAAAAA8CCC5",
- " 22222222222222DAAAAAAAAAAA8CCC5",
- " 22222222222222DAAAAAAAAAAA8CCC5",
- " 5CC7224DAAAAAAAAAAAA8CCC5",
- " 5A4226AAAAAAAAAAAAAA8CCC5",
- " 56226AAAAAAAAAAAAAAA8CCC5",
- " 5A6B8AAAAAAAAAAAAAAA8CCC5",
- " 5CCC8AAAAAAAAAAAAAAA8CCC5",
- " 5CCC8AAAAAAAAAAAAAAA8CCC5",
- " 5CCC8AAAAAAAAAAAAAAA8CCC5",
- " 5CCC88888888888888888CCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 5CCCCCCCCCCCCCCCCCCCCCCC5",
- " 55555555555555555555555 "};
-
-static char **doc_import_xpm[3] = { doc_import_x16, doc_import_x24, doc_import_x32 };
-
diff --git a/app/bin/bitmaps/doc-new.xpm b/app/bin/bitmaps/doc-new.xpm
deleted file mode 100644
index cd4dbc1..0000000
--- a/app/bin/bitmaps/doc-new.xpm
+++ /dev/null
@@ -1,127 +0,0 @@
-static char *doc_new_x16[] = {
- "16 16 15 1",
- " c None",
- "0 c #000000",
- "1 c #009933",
- "2 c #00CC33",
- "3 c #00CC66",
- "4 c #00FF66",
- "5 c #33CC66",
- "6 c #666666",
- "7 c #669966",
- "8 c #66CC99",
- "9 c #99CC99",
- "A c #CCCCCC",
- "B c #CCFFCC",
- "C c #FFFFFF",
- "D c #C0C0C0",
- " 666666666666 ",
- " 6CCA9CCCCCC6 ",
- " 6CC52ACCCCC6 ",
- " 6D71278CCCC6 ",
- " 6544444BCCC6 ",
- " 6AD139DCCCC6 ",
- " 6CC12ACCCCC6 ",
- " 6CCA9CCCCCC6 ",
- " 6CCCCCCCCCC6 ",
- " 6CCCCCCCCCC6 ",
- " 6CCCCCCCCCC6 ",
- " 6CCCCCCCCCC6 ",
- " 6CCCCCCCCCC6 ",
- " 6CCCCCCCCCC6 ",
- " 6CCCCCCCCCC6 ",
- " 666666666666 "};
-
-static char *doc_new_x24[] = {
- "24 24 14 1",
- " c None",
- "0 c #000000",
- "1 c #009933",
- "2 c #00CC33",
- "3 c #00CC66",
- "4 c #00FF66",
- "5 c #33CC66",
- "6 c #666666",
- "7 c #66CC66",
- "8 c #66CC99",
- "9 c #99CC99",
- "A c #CCCCCC",
- "B c #CCFFCC",
- "C c #FFFFFF",
- " 666666666666666666 ",
- " 6CCCCCCCCCCCCCCCC6 ",
- " 6CCCC87ACCCCCCCCC6 ",
- " 6CCCC347CCCCCCCCC6 ",
- " 6CCCC547CCCCCCCCC6 ",
- " 6C87734211ACCCCCC6 ",
- " 6C344444449CCCCCC6 ",
- " 6C522342229CCCCCC6 ",
- " 6CCCB547CCCCCCCCC6 ",
- " 6CCCB547CCCCCCCCC6 ",
- " 6CCCC779CCCCCCCCC6 ",
- " 6CCCCCCCCCCCCCCCC6 ",
- " 6CCCCCCCCCCCCCCCC6 ",
- " 6CCCCCCCCCCCCCCCC6 ",
- " 6CCCCCCCCCCCCCCCC6 ",
- " 6CCCCCCCCCCCCCCCC6 ",
- " 6CCCCCCCCCCCCCCCC6 ",
- " 6CCCCCCCCCCCCCCCC6 ",
- " 6CCCCCCCCCCCCCCCC6 ",
- " 6CCCCCCCCCCCCCCCC6 ",
- " 6CCCCCCCCCCCCCCCC6 ",
- " 6CCCCCCCCCCCCCCCC6 ",
- " 6CCCCCCCCCCCCCCCC6 ",
- " 666666666666666666 "};
-
-static char *doc_new_x32[] = {
- "32 32 15 1",
- " c None",
- "0 c #000000",
- "1 c #009933",
- "2 c #00CC33",
- "3 c #00FF66",
- "4 c #339933",
- "5 c #666666",
- "6 c #669966",
- "7 c #66CC99",
- "8 c #99CC99",
- "9 c #CCCCCC",
- "A c #CCFFCC",
- "B c #CCFFFF",
- "C c #FFFFFF",
- "D c #C0C0C0",
- " 555555555555555555555555 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCC8111DCCCCCCCCCCCC5 ",
- " 5CCCCC8232DCCCCCCCCCCCC5 ",
- " 5CCCCC8232DCCCCCCCCCCCC5 ",
- " 5CCAAA82328AAACCCCCCCCC5 ",
- " 5C822223322221ACCCCCCCC5 ",
- " 5C823333333332ACCCCCCCC5 ",
- " 5C823333333332ACCCCCCCC5 ",
- " 5C988842326888BCCCCCCCC5 ",
- " 5CCCCC62329CCCCCCCCCCCC5 ",
- " 5CCCCC72329CCCCCCCCCCCC5 ",
- " 5CCCCC82229CCCCCCCCCCCC5 ",
- " 5CCCCC9DDDBCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 5CCCCCCCCCCCCCCCCCCCCCC5 ",
- " 555555555555555555555555 "};
-
-static char **doc_new_xpm[3] = { doc_new_x16, doc_new_x24, doc_new_x32 };
-
diff --git a/app/bin/bitmaps/doc-open.xpm b/app/bin/bitmaps/doc-open.xpm
deleted file mode 100644
index 992c9bf..0000000
--- a/app/bin/bitmaps/doc-open.xpm
+++ /dev/null
@@ -1,136 +0,0 @@
-static char *doc_open_x16[] = {
- "16 16 17 1",
- " c None",
- "0 c #000000",
- "1 c #663300",
- "2 c #666600",
- "3 c #666633",
- "4 c #996633",
- "5 c #996666",
- "6 c #999966",
- "7 c #999999",
- "8 c #CC9966",
- "9 c #CCCC66",
- "A c #CCCC99",
- "B c #CCCCCC",
- "C c #FFCC99",
- "D c #FFFFFF",
- "E c #C0C0C0",
- "F c #808080",
- " ",
- " ",
- "2466666677F ",
- "3C7BBBBBBBE7431 ",
- "3C7DDDDDDDDBA61 ",
- "3C7DDDDDDDDD761 ",
- "3C51111111111113",
- "3A3CCCCCCCCCCCC3",
- "386CCCCCCCCCCC93",
- "369CCCCCCCCCCC81",
- "33CCCCCCCCCCCC4 ",
- "24CCCCCCCCCCCC2 ",
- "28CCCCCCCCCCCC3 ",
- "368888888888862 ",
- "222222222222221 ",
- " "};
-
-static char *doc_open_x24[] = {
- "24 24 18 1",
- " c None",
- "0 c #000000",
- "1 c #663300",
- "2 c #666600",
- "3 c #666633",
- "4 c #666666",
- "5 c #996633",
- "6 c #996666",
- "7 c #999933",
- "8 c #999966",
- "9 c #999999",
- "A c #CC9966",
- "B c #CC9999",
- "C c #CCCC66",
- "D c #CCCC99",
- "E c #FFCC99",
- "F c #FFFFFF",
- "G c #C0C0C0",
- " ",
- " ",
- " ",
- "355888888869 ",
- "3CE9GGGGGGGGGGG941111 ",
- "3CE9FFFFFFFFFFFFBBAA51 ",
- "3CE9FFFFFFFFFFFFFGDE81 ",
- "3CE9FFFFFFFFFFFFFFGE81 ",
- "3CE9FFFFFFFFFFFFFFGE81 ",
- "3CE988888888888888675333",
- "3CE5CDDDDDDDDDDDDDDDDDA3",
- "3CE3EEEEEEEEEEEEEEEEEEA1",
- "3CC8EEEEEEEEEEEEEEEEEE5 ",
- "3CACEEEEEEEEEEEEEEEEEE2 ",
- "3C5EEEEEEEEEEEEEEEEEEE3 ",
- "3A5EEEEEEEEEEEEEEEEEEA3 ",
- "3A8EEEEEEEEEEEEEEEEEE71 ",
- "37CEEEEEEEEEEEEEEEEEE3 ",
- "33EEEEEEEEEEEEEEEEEEE3 ",
- "35EEEEEEEEEEEEEEEEEEC3 ",
- "25AAAAAAAAAAAAAAAAAA71 ",
- "222222222222222222222 ",
- " ",
- " "};
-
-static char *doc_open_x32[] = {
- "32 32 18 1",
- " c None",
- "0 c #000000",
- "1 c #663300",
- "2 c #666600",
- "3 c #666633",
- "4 c #996633",
- "5 c #996666",
- "6 c #999933",
- "7 c #999966",
- "8 c #999999",
- "9 c #CC9966",
- "A c #CC9999",
- "B c #CCCC66",
- "C c #CCCC99",
- "D c #CCCCCC",
- "E c #FFCC99",
- "F c #FFFFFF",
- "G c #C0C0C0",
- " ",
- " ",
- " ",
- " ",
- "134444444444433 ",
- "17EECGGGGGGGGG8888888 ",
- "17EEGDFFFFFFFFFFFFFFD8311112 ",
- "17EEGFFFFFFFFFFFFFFFFFAEEEE4 ",
- "17EEGFFFFFFFFFFFFFFFFFFAEEE4 ",
- "17EEGFFFFFFFFFFFFFFFFFFFGEE4 ",
- "17EEGFFFFFFFFFFFFFFFFFFFDCE4 ",
- "17EEGFFFFFFFFFFFFFFFFFFFDCE4 ",
- "17EEGGGGGGGGGGGGGGGGGGGG8793111 ",
- "17EE7799999999999999999999999941",
- "17EE5CEEEEEEEEEEEEEEEEEEEEEEEE4 ",
- "17EE3EEEEEEEEEEEEEEEEEEEEEEEEE2 ",
- "17EC6EEEEEEEEEEEEEEEEEEEEEEEEE3 ",
- "17E99EEEEEEEEEEEEEEEEEEEEEEEEB3 ",
- "17E4EEEEEEEEEEEEEEEEEEEEEEEEE71 ",
- "17E3EEEEEEEEEEEEEEEEEEEEEEEEE4 ",
- "17B7EEEEEEEEEEEEEEEEEEEEEEEEE2 ",
- "1799EEEEEEEEEEEEEEEEEEEEEEEEB3 ",
- "174EEEEEEEEEEEEEEEEEEEEEEEEE92 ",
- "174EEEEEEEEEEEEEEEEEEEEEEEEE61 ",
- "147EEEEEEEEEEEEEEEEEEEEEEEEE2 ",
- "14BEEEEEEEEEEEEEEEEEEEEEEEEE3 ",
- "13EEEEEEEEEEEEEEEEEEEEEEEEEB3 ",
- "12999999999999999999999999941 ",
- " 222222222222222222222222222 ",
- " ",
- " ",
- " "};
-
-static char **doc_open_xpm[3] = { doc_open_x16, doc_open_x24, doc_open_x32 };
-
diff --git a/app/bin/bitmaps/doc-print.xpm b/app/bin/bitmaps/doc-print.xpm
deleted file mode 100644
index 853014f..0000000
--- a/app/bin/bitmaps/doc-print.xpm
+++ /dev/null
@@ -1,108 +0,0 @@
-static char *doc_print_x16[] = {
- "16 16 8 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #999999",
- "3 c #CCCCCC",
- "4 c #FFFFFF",
- "5 c #C0C0C0",
- "6 c #808080",
- " 111111111111 ",
- " 144444444441 ",
- " 144444444441 ",
- " 144444444441 ",
- " 144444444441 ",
- " 666666666666666",
- "6255555555555556",
- "6333333333333336",
- "6333333333333336",
- "6333333333333336",
- "6311111111111136",
- "6316111111654136",
- "6512666666624136",
- "6616111111165166",
- " 166666666341 ",
- " 111111111111 "};
-
-static char *doc_print_x24[] = {
- "24 24 8 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #999999",
- "3 c #CCCCCC",
- "4 c #FFFFFF",
- "5 c #C0C0C0",
- "6 c #808080",
- " 1111111111111111 ",
- " 144444444444444441 ",
- " 144444444444444441 ",
- " 144444444444444441 ",
- " 144444444444444441 ",
- " 144444444444444441 ",
- " 144444444444444441 ",
- " 144444444444444441 ",
- " 6666666666666666666666 ",
- "625555555555555555555526",
- "653333333333333333333356",
- "653333333333333333333356",
- "653333333333333333333356",
- "653333333333333333333356",
- "653333333333333333333356",
- "653111111111111111111356",
- "653136666666666634441356",
- "653142222222222255441356",
- "653142222222222225441356",
- "662136666666666664441266",
- " 136666666666666241 ",
- " 142222222222233441 ",
- " 145555555555544441 ",
- " 1111111111111111 "};
-
-static char *doc_print_x32[] = {
- "32 32 9 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #666666",
- "3 c #999999",
- "4 c #CCCCCC",
- "5 c #FFFFFF",
- "6 c #C0C0C0",
- "7 c #808080",
- " ",
- " 2222222222222222222222 ",
- " 2555555555555555555552 ",
- " 2555555555555555555552 ",
- " 2555555555555555555552 ",
- " 2555555555555555555552 ",
- " 2555555555555555555552 ",
- " 2555555555555555555552 ",
- " 2555555555555555555552 ",
- " 2555555555555555555552 ",
- " 2555555555555555555552 ",
- " 777777777777777777777777777777 ",
- " 7666666666666666666666666666677",
- " 3444444444444444444444444444437",
- " 3444444444444444444444444444437",
- " 3444444444444444444444444444437",
- " 3444444444444444444444444444437",
- " 3444444444444444444444444444437",
- " 3444444444444444444444444444437",
- " 3444444444444444444444444444437",
- " 3444222222222222222222222244437",
- " 3444254444444444444455555244437",
- " 3444267777777777777765555244437",
- " 3444246666666666666666655244437",
- " 3444246666666666666666655244437",
- " 7444267777777777777773555244437",
- " 777725444444444444444555527777 ",
- " 2311111111111111111152 ",
- " 2544444444444444555552 ",
- " 2377777777777777455552 ",
- " 2222222222222222222222 ",
- " "};
-
-static char **doc_print_xpm[3] = { doc_print_x16, doc_print_x24, doc_print_x32 };
-
diff --git a/app/bin/bitmaps/doc-revert.xpm b/app/bin/bitmaps/doc-revert.xpm
deleted file mode 100644
index 4af778a..0000000
--- a/app/bin/bitmaps/doc-revert.xpm
+++ /dev/null
@@ -1,134 +0,0 @@
-static char *doc_revert_x16[] = {
- "16 16 17 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #996633",
- "3 c #CC6633",
- "4 c #CC9900",
- "5 c #CC9933",
- "6 c #CC9966",
- "7 c #CC9999",
- "8 c #CCCC33",
- "9 c #CCCC99",
- "A c #CCCCCC",
- "B c #FFCC00",
- "C c #FFCC33",
- "D c #FFCCCC",
- "E c #FFFFCC",
- "F c #FFFFFF",
- " 111111111111 ",
- " 1FFFFFFFFFF1 ",
- " 1FFFFFFFFFF1 ",
- " 1FFFADFFFFF1 ",
- " 1FF639FFFFF1 ",
- " 1D5BB529FFF1 ",
- " 1F65B5B86FF1 ",
- " 1FF93665C7F1 ",
- " 1FFFDAFA55E1 ",
- " 1FFFFFFF7491 ",
- " 1FFFFFFFD561 ",
- " 1FFFFFFFF251 ",
- " 1FFFFFFFF621 ",
- " 1FFFFFFFFFF1 ",
- " 1FFFFFFFFFF1 ",
- " 111111111111 "};
-
-static char *doc_revert_x24[] = {
- "24 24 17 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #996600",
- "3 c #996633",
- "4 c #CC6633",
- "5 c #CC9900",
- "6 c #CC9933",
- "7 c #CC9966",
- "8 c #CC9999",
- "9 c #CCCC99",
- "A c #CCCCCC",
- "B c #FFCC00",
- "C c #FFCC33",
- "D c #FFCCCC",
- "E c #FFFFCC",
- "F c #FFFFFF",
- " 111111111111111111 ",
- " 1FFFFFFFFFFFFFFFF1 ",
- " 1FFFFFFFFFFFFFFFF1 ",
- " 1FFFFFFFFFFFFFFFF1 ",
- " 1FFFFFFFFFFFFFFFF1 ",
- " 1FFFFFD8FFFFFFFFF1 ",
- " 1FFFF863FFFFFFFFF1 ",
- " 1FFD6CB37AFFFFFFF1 ",
- " 1FA6BBBBB568FFFFF1 ",
- " 1FF76BBBBBBB7FFFF1 ",
- " 1FFFA6B2736BB7FFF1 ",
- " 1FFFFE72FF96B69FF1 ",
- " 1FFFFFF9FFF96B3FF1 ",
- " 1FFFFFFFFFFF7B6DF1 ",
- " 1FFFFFFFFFFFD6B8F1 ",
- " 1FFFFFFFFFFFF7B3F1 ",
- " 1FFFFFFFFFFFFA62F1 ",
- " 1FFFFFFFFFFFFE66F1 ",
- " 1FFFFFFFFFFFFF34E1 ",
- " 1FFFFFFFFFFFFFAAF1 ",
- " 1FFFFFFFFFFFFFFFF1 ",
- " 1FFFFFFFFFFFFFFFF1 ",
- " 1FFFFFFFFFFFFFFFF1 ",
- " 111111111111111111 "};
-
-static char *doc_revert_x32[] = {
- "32 32 17 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #996600",
- "3 c #996633",
- "4 c #CC6633",
- "5 c #CC9900",
- "6 c #CC9933",
- "7 c #CC9966",
- "8 c #CC9999",
- "9 c #CCCC99",
- "A c #CCCCCC",
- "B c #FFCC00",
- "C c #FFCC33",
- "D c #FFCCCC",
- "E c #FFFFCC",
- "F c #FFFFFF",
- " 111111111111111111111111 ",
- " 1FFFFFFFFFFFFFFFFFFFFFF1 ",
- " 1FFFFFFFFFFFFFFFFFFFFFF1 ",
- " 1FFFFFFFFFFFFFFFFFFFFFF1 ",
- " 1FFFFFFFFFFFFFFFFFFFFFF1 ",
- " 1FFFFFFFFFFFFFFFFFFFFFF1 ",
- " 1FFFFFFFFFFFFFFFFFFFFFF1 ",
- " 1FFFFFFFE7DFFFFFFFFFFFF1 ",
- " 1FFFFFF965AFFFFFFFFFFFF1 ",
- " 1FFFFE76B59FFFFFFFFFFFF1 ",
- " 1FFF96BBBB6328FFFFFFFFF1 ",
- " 1FF86BBBBBBBBB68FFFFFFF1 ",
- " 1FFF76BBBBBBBBBC7FFFFFF1 ",
- " 1FFFFA6BB5266BBBB7FFFFF1 ",
- " 1FFFFFF7C5AFA66BBC8FFFF1 ",
- " 1FFFFFFF849FFF96BB6DFFF1 ",
- " 1FFFFFFFFAAFFFF96BB7FFF1 ",
- " 1FFFFFFFFFFFFFFF7BB6FFF1 ",
- " 1FFFFFFFFFFFFFFFF6B6AFF1 ",
- " 1FFFFFFFFFFFFFFFF7BB7FF1 ",
- " 1FFFFFFFFFFFFFFFFD6B3FF1 ",
- " 1FFFFFFFFFFFFFFFFF3B3FF1 ",
- " 1FFFFFFFFFFFFFFFFF8B6FF1 ",
- " 1FFFFFFFFFFFFFFFFFA66DF1 ",
- " 1FFFFFFFFFFFFFFFFFD66AF1 ",
- " 1FFFFFFFFFFFFFFFFFF87EF1 ",
- " 1FFFFFFFFFFFFFFFFFFFFFF1 ",
- " 1FFFFFFFFFFFFFFFFFFFFFF1 ",
- " 1FFFFFFFFFFFFFFFFFFFFFF1 ",
- " 1FFFFFFFFFFFFFFFFFFFFFF1 ",
- " 1FFFFFFFFFFFFFFFFFFFFFF1 ",
- " 111111111111111111111111 "};
-
-static char **doc_revert_xpm[3] = { doc_revert_x16, doc_revert_x24, doc_revert_x32 };
-
diff --git a/app/bin/bitmaps/doc-save-as.xpm b/app/bin/bitmaps/doc-save-as.xpm
deleted file mode 100644
index 2ded960..0000000
--- a/app/bin/bitmaps/doc-save-as.xpm
+++ /dev/null
@@ -1,135 +0,0 @@
-static char *doc_save_as_x16[] = {
- "16 16 15 1",
- " c None",
- "0 c #000000",
- "1 c #0066FF",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #666666",
- "6 c #666699",
- "7 c #669999",
- "8 c #6699CC",
- "9 c #996666",
- "A c #999966",
- "B c #9999CC",
- "C c #CC9966",
- "D c #FFCC66",
- " ",
- "111111 ",
- "11111111 ",
- "111111111 ",
- " 1111 1 ",
- " 111111 95 ",
- " 111111 9DC5",
- " 1111 9DD9 ",
- " 1169DD9 ",
- "2222222235DD9222",
- "267B67B65CA98772",
- "236736735C557442",
- "2367367356547442",
- "2367367367447442",
- "2222222222222222",
- " "};
-
-static char *doc_save_as_x24[] = {
- "24 24 18 1",
- " c None",
- "0 c #000000",
- "1 c #0066FF",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #666666",
- "6 c #666699",
- "7 c #669999",
- "8 c #6699CC",
- "9 c #996666",
- "A c #999966",
- "B c #9999CC",
- "C c #99CCCC",
- "D c #CC9966",
- "E c #FF9966",
- "F c #FFCC66",
- "G c #808080",
- " ",
- " ",
- "11111111111 ",
- "111111111111 ",
- "1111111111111 ",
- " 11111 ",
- " 1111 ",
- " 1111111111 55 ",
- " 1111111111 5DA5 ",
- " 11111111 5DFFA5",
- " 111111 5DFFE9 ",
- " 11111 5DFFE9 ",
- " 1111 5DFFF9 ",
- " 11 5DFFF9 ",
- "22222222222225AFFF922222",
- "2C7C7C6C7C88GDDAF9C7CC72",
- "286B4C0C4B775FFDG4C68862",
- "286B4C0C4B775DD9C3C68862",
- "286B4C0C4B777574C3C68862",
- "286B4C0C4B77B4C3C3C68862",
- "287C5C2C5C77C5C4C4C78872",
- "222222222222222222222222",
- " ",
- " "};
-
-static char *doc_save_as_x32[] = {
- "32 32 19 1",
- " c None",
- "0 c #000000",
- "1 c #0066FF",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #666666",
- "6 c #666699",
- "7 c #669999",
- "8 c #6699CC",
- "9 c #996666",
- "A c #999966",
- "B c #999999",
- "C c #9999CC",
- "D c #99CCCC",
- "E c #CC9966",
- "F c #FF9966",
- "G c #FFCC66",
- "H c #808080",
- " ",
- " ",
- " 111111 ",
- " 1111111111111 ",
- " 111111111111111 ",
- " 1111111111111111 ",
- " 1111111111111111 ",
- " 111111 ",
- " 11111 ",
- " 111 1111 111 5 ",
- " 111111111111 5A5 ",
- " 111111111111 5EGE5 ",
- " 1111111111 5EGGGE5 ",
- " 1111111111 5EGGGGF9 ",
- " 11111111 5EGGGGF9 ",
- " 111111 5EGGGGF9 ",
- " 11111 5EGGGGF9 ",
- " 1111 5EGGGGF9 ",
- " 222222222222222325EGGGGF922222 ",
- "2DDDDDDDDDDDDDDDDB9EGGGFHDDDDDD2",
- "2D8DD8DD8DD7DD7DBEGEEGFHDD7DD7D2",
- "2D4CD4CD4CD3DD3DHFGGEEH2DD0DD0D2",
- "2D4CD4CD4CD3DD3DHFGGFHD0DD0DD0D2",
- "2D4CD4CD4CD3DD3DHEEE5DD0DD0DD0D2",
- "2D4CD4CD4CD3DD3DC57B2DD0DD0DD0D2",
- "2D4CD4CD4CD3DD3DD3DD0DD0DD0DD0D2",
- "2D4CD4CD4CD3DD3DD3DD0DD0DD0DD0D2",
- "2D6DD6DD6DD4DD4DD4DD3DD3DD3DD3D2",
- "2DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD2",
- "22222222222222222222222222222222",
- " ",
- " "};
-
-static char **doc_save_as_xpm[3] = { doc_save_as_x16, doc_save_as_x24, doc_save_as_x32 };
-
diff --git a/app/bin/bitmaps/doc-save.xpm b/app/bin/bitmaps/doc-save.xpm
deleted file mode 100644
index f775f95..0000000
--- a/app/bin/bitmaps/doc-save.xpm
+++ /dev/null
@@ -1,116 +0,0 @@
-static char *doc_save_x16[] = {
- "16 16 10 1",
- " c None",
- "0 c #000000",
- "1 c #0066FF",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #666699",
- "6 c #669999",
- "7 c #6699CC",
- "8 c #9999CC",
- " ",
- "111111 ",
- "11111111 ",
- "111111111 ",
- " 1111 1 ",
- " 111111 ",
- " 111111 ",
- " 1111 ",
- " 11 ",
- "2222222232222222",
- "2568568567668662",
- "2356356356446442",
- "2356356356446442",
- "2356356356446442",
- "2222222222222222",
- " "};
-
-static char *doc_save_x24[] = {
- "24 24 12 1",
- " c None",
- "0 c #000000",
- "1 c #0066FF",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #666666",
- "6 c #666699",
- "7 c #669999",
- "8 c #6699CC",
- "9 c #9999CC",
- "A c #99CCCC",
- " ",
- " ",
- "11111111111 ",
- "111111111111 ",
- "1111111111111 ",
- " 11111 ",
- " 1111 ",
- " 1111111111 ",
- " 1111111111 ",
- " 11111111 ",
- " 111111 ",
- " 11111 ",
- " 1111 ",
- " 11 ",
- "222222222222222222222222",
- "2A7A7A6A7A88A7A7A7A7AA72",
- "28694A0A497794A3A3A68862",
- "28694A0A497794A3A3A68862",
- "28694A0A497794A3A3A68862",
- "28694A0A497794A3A3A68862",
- "287A5A2A5A77A5A4A4A78872",
- "222222222222222222222222",
- " ",
- " "};
-
-static char *doc_save_x32[] = {
- "32 32 11 1",
- " c None",
- "0 c #000000",
- "1 c #0066FF",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #666699",
- "6 c #669999",
- "7 c #6699CC",
- "8 c #9999CC",
- "9 c #99CCCC",
- " ",
- " ",
- " 111111 ",
- " 1111111111111 ",
- " 111111111111111 ",
- " 1111111111111111 ",
- " 1111111111111111 ",
- " 111111 ",
- " 11111 ",
- " 111 1111 111 ",
- " 111111111111 ",
- " 111111111111 ",
- " 1111111111 ",
- " 1111111111 ",
- " 11111111 ",
- " 111111 ",
- " 11111 ",
- " 1111 ",
- " 222222222222222322222222222222 ",
- "29999999999999999999999999999992",
- "29799799799699699699699699699692",
- "29489489489399399399099099099092",
- "29489489489399399399099099099092",
- "29489489489399399399099099099092",
- "29489489489399399399099099099092",
- "29489489489399399399099099099092",
- "29489489489399399399099099099092",
- "29599599599499499499399399399392",
- "29999999999999999999999999999992",
- "22222222222222222222222222222222",
- " ",
- " "};
-
-static char **doc_save_xpm[3] = { doc_save_x16, doc_save_x24, doc_save_x32 };
-
diff --git a/app/bin/bitmaps/doc-setup.xpm b/app/bin/bitmaps/doc-setup.xpm
deleted file mode 100644
index c6c8e48..0000000
--- a/app/bin/bitmaps/doc-setup.xpm
+++ /dev/null
@@ -1,110 +0,0 @@
-static char *doc_setup_x16[] = {
- "16 16 9 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #666666",
- "3 c #999999",
- "4 c #CCCCCC",
- "5 c #FFFFFF",
- "6 c #C0C0C0",
- "7 c #808080",
- "22222222222 ",
- "25555555552 ",
- "25555555552 ",
- "25555555552 ",
- "25555555552 ",
- "25555555552 ",
- "255555552222222 ",
- "255555552555552 ",
- "255555552555552 ",
- "2555555477777777",
- "2555554366666667",
- "2555554644444443",
- "2555554622222223",
- "2222227311111723",
- " 711111227",
- " 1111122 "};
-
-static char *doc_setup_x24[] = {
- "24 24 9 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #666666",
- "3 c #999999",
- "4 c #CCCCCC",
- "5 c #FFFFFF",
- "6 c #C0C0C0",
- "7 c #808080",
- "2222222222222222 ",
- "2555555555555552 ",
- "2555555555555552 ",
- "2555555555555552 ",
- "2555555555555552 ",
- "2555555555555552 ",
- "2555555555555552 ",
- "2555555555555552 ",
- "2555555555555552 ",
- "2555555555552222222222 ",
- "2555555555552555555552 ",
- "2555555555552555555552 ",
- "2555555555552555555552 ",
- "2555555555552555555552 ",
- "255555555544777777777777",
- "255555555576666666666667",
- "255555555574444444444443",
- "255555555574444444444443",
- "255555555574222222222243",
- "255555555574277777735243",
- "222222222274111111112247",
- " 77222222223277",
- " 1222222762 ",
- " 2222222222 "};
-
-static char *doc_setup_x32[] = {
- "32 32 9 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #666666",
- "3 c #999999",
- "4 c #CCCCCC",
- "5 c #FFFFFF",
- "6 c #C0C0C0",
- "7 c #808080",
- " 22222222222222222222 ",
- "2555555555555555555552 ",
- "2555555555555555555552 ",
- "2555555555555555555552 ",
- "2555555555555555555552 ",
- "2555555555555555555552 ",
- "2555555555555555555552 ",
- "2555555555555555555552 ",
- "2555555555555555555552 ",
- "2555555555555555555552 ",
- "2555555555555555555552 ",
- "2555555555555555555552 ",
- "2555555555555555555552 ",
- "255555555555555522222222222222 ",
- "255555555555555525555555555552 ",
- "255555555555555525555555555552 ",
- "255555555555555525555555555552 ",
- "255555555555555525555555555552 ",
- "255555555555555525555555555552 ",
- "25555555555554447777777777777777",
- "25555555555556366666666666666667",
- "25555555555556644444444444444447",
- "25555555555556644444444444444447",
- "25555555555556644444444444444447",
- "25555555555556642222222222222447",
- "25555555555556642444444444555247",
- "25555555555556642777777777455247",
- " 2222222222227342777777777735247",
- " 7772777777777745277",
- " 27777777777742 ",
- " 21111111125552 ",
- " 22222222222222 "};
-
-static char **doc_setup_xpm[3] = { doc_setup_x16, doc_setup_x24, doc_setup_x32 };
-
diff --git a/app/bin/bitmaps/down.xpm b/app/bin/bitmaps/down.xpm
deleted file mode 100644
index 8edaca4..0000000
--- a/app/bin/bitmaps/down.xpm
+++ /dev/null
@@ -1,89 +0,0 @@
-static char *down_x16[] = {
- "8 16 2 1",
- " c None",
- "0 c #000000",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " 000000 ",
- " 000000 ",
- " 0000 ",
- " 00 ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " "};
-
-static char *down_x24[] = {
- "12 24 2 1",
- " c None",
- "0 c #000000",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " 0000000000 ",
- " 0000000000 ",
- " 0000000000 ",
- " 00000000 ",
- " 000000 ",
- " 0000 ",
- " 00 ",
- " 0 ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " "};
-
-static char *down_x32[] = {
- "16 32 2 1",
- " c None",
- "0 c #000000",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " 0000000000000 ",
- " 0000000000000 ",
- " 0000000000000 ",
- " 000000000000 ",
- " 0000000000 ",
- " 00000000 ",
- " 000000 ",
- " 0000 ",
- " 000 ",
- " 00 ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " "};
-
-static char **down_xpm[3] = { down_x16, down_x24, down_x32 };
-
diff --git a/app/bin/bitmaps/ease-broad.xpm b/app/bin/bitmaps/ease-broad.xpm
deleted file mode 100644
index 646791e..0000000
--- a/app/bin/bitmaps/ease-broad.xpm
+++ /dev/null
@@ -1,89 +0,0 @@
-/* XPM */
-static char * ease_broad_x16[] = {
-"41 16 2 1",
-" c None",
-"x c #000000000000",
-"xxxxx x ",
-"x xxx",
-"x xx xxx xx xxx xx xx xxx x ",
-"xxxx x x x x x x x x x x x x x ",
-"x x x xx xxxx x x x xxxx x x x ",
-"x x xx x x x x x x x x x ",
-"xxxxx x x xxx xxx x x x xxx x x x",
-" ",
-" xxxx x ",
-" x x x ",
-" x x xxx xx xx xxx ",
-" xxxx x x x x x x x x ",
-" x x x x x x x x x ",
-" x x x x x x xx x x ",
-" xxxx x xx x x xxx ",
-" "};
-
-static char* ease_broad_x24[] = {
-"56 24 2 1",
-" c None",
-"x c #000000",
-" ",
-"xxxxxx ",
-"xx ",
-"xx x ",
-"xx xx ",
-"xxxx xxxxx xxxxx xxxx xxx xx xxxx xx xx xxxxxx",
-"xx xx xx xx xx xx xxxxxxxx xx xx xxx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx xx xx ",
-"xx xx xx xxxx xxxxxx xx xx xx xxxxxx xx xx xx ",
-"xx xx xx xx xx xx xx xx xx xx xx xx ",
-"xxxxxx xxx x xxxxx xxxxx xx xx xx xxxxx xx xx xxx",
-" ",
-" xxxxxx xx ",
-" xx xx xx ",
-" xx xx xx ",
-" xx xx xx ",
-" xxxxxx xx xxx xxxxx xxxxxx xxxxxx ",
-" xx xx xxx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx ",
-" xxxxxx xx xxxxx xxxx x xxxxxx ",
-" ",
-" "};
-
-static char* ease_broad_x32[] = {
-"66 32 2 1",
-" c None",
-"x c #000000",
-" ",
-"xxxxxxx ",
-"xxxxxxx ",
-"xx x ",
-"xx xx ",
-"xx xx ",
-"xxxxx xxxxx xxxxxx xxxx xxxx xxx xxxx xx xx xxxxxx",
-"xxxxx xxxxxx xxxxxxx xxxxxx xxxxxxxxxx xxxxxx xxxxxx xxxxxx",
-"xx xx xx xxx xx xx xx xx xx xx xx xxx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx ",
-"xxxxxxx xxxxxxx xxxxxxx xxxxxxx xx xx xx xxxxxx xx xx xxxx",
-"xxxxxxx xxx xx xxxxxx xxxxxx xx xx xx xxxxxx xx xx xxx",
-" ",
-" xxxxxxx xx ",
-" xxxxxxxx xx ",
-" xx xx xx ",
-" xx xx xx ",
-" xx xx xx ",
-" xxxxxxxx xx xxx xxxxxx xxxxxxx xxxxxx ",
-" xxxxxxxx xx xxxx xxxxxxxx xxxxxxxx xxxxxxx ",
-" xx xx xxx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx ",
-" xxxxxxxx xx xxxxxxxx xxxxxxxx xxxxxxx ",
-" xxxxxxx xx xxxxxx xxxx xx xxxxxx ",
-" ",
-" ",
-" ",
-" "};
-
-static char **ease_broad_xpm[3] = { ease_broad_x16, ease_broad_x24, ease_broad_x32 };
diff --git a/app/bin/bitmaps/ease-cornu.xpm b/app/bin/bitmaps/ease-cornu.xpm
deleted file mode 100644
index 745f436..0000000
--- a/app/bin/bitmaps/ease-cornu.xpm
+++ /dev/null
@@ -1,96 +0,0 @@
-/* XPM */
-static char * ease_cornu_x16[] = {
-"41 16 4 1",
-" c None",
-"x c #000000",
-"# c #009999",
-"$ c #FF9900",
-"xxxxx x ",
-"x xxx",
-"x xx xxx xx xxx xx xx xxx x ",
-"xxxx x x x x x x x x x x x x x ",
-"x x x xx xxxx x x x xxxx x x x ",
-"x x x x x x x x x x x x ",
-"xxxxx xxx xxx xxx x x x xxx x x x",
-" ",
-" $$$ ### $$$$$ ",
-" $ $ # # $$$$ $ ",
-" $ $ $# ## ### ###$$# # $$$ $ ",
-"$ $ $ # # # #$$#$# # # #$ $ $",
-"$ $ $# #$$#$# # # # # $ $ $",
-" $ $$$ # $#$# # # # # # #$ $ $ ",
-" $ $### ## # # # ## $ $ ",
-" $$$$$ $$$ "};
-
-static char* ease_cornu_x24[] = {
-"56 24 4 1",
-" c None",
-"x c #000000",
-"# c #009999",
-"- c #FF9900",
-" ",
-"xxxxxx ",
-"xx ",
-"xx x ",
-"xx xx ",
-"xxxx xxxxx xxxxx xxxx xxx xx xxxx xx xx xxxxxx",
-"xx xx xx xx xx xx xxxxxxxx xx xx xxx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx xx xx ",
-"xx xx xx xxxx xxxxxx xx xx xx xxxxxx xx xx xx ",
-"xx xx xx xx xx xx xx xx xx xx xx xx ",
-"xxxxxx xxx x xxxxx xxxxx xx xx xx xxxxx xx xx xxx",
-" --- ",
-" ------ ##### ",
-" --- -## ## ----- ",
-" -- --- ## ----------- ",
-" -- ---- ## ------ --- ",
-" -- ---- ## ##### ## ### -##-### ## ## - -- ",
-" -- ---- ## ## ## ###--##-### ## ## ## -- -- ",
-" --- --- ## ## -##-##-- ## ## ## ## --- -- ",
-" --- ## ## ##---## ## ## ## ## ## -- -- ",
-" ----- #####---##### ## ## ## #### # --- ",
-" ----- ------- ",
-" ----- ",
-" "};
-
-static char* ease_cornu_x32[] = {
-"66 32 4 1",
-" c None",
-"x c #000000",
-"# c #009999",
-"- c #FF9900",
-" ",
-"xxxxxxx ",
-"xxxxxxx ",
-"xx x ",
-"xx xx ",
-"xx xx ",
-"xxxxx xxxxx xxxxxx xxxx xxxx xxx xxxx xx xx xxxxxx",
-"xxxxx xxxxxx xxxxxxx xxxxxx xxxxxxxxxx xxxxxx xxxxxx xxxxxx",
-"xx xx xx xxx xx xx xx xxx xxx xx xx xxx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx ",
-"xxxxxxx xxxxxxx xxxxxxx xxxxxxx xx xx xx xxxxxx xx xx xxxx",
-"xxxxxxx xxx xx xxxxxx xxxxxx xx xx xx xxxxxx xx xx xxx",
-" ",
-" ----- ###### ",
-" ------ ######## ",
-" -- ## ## -------- ",
-" -- ----## ------------- ",
-" -- ----##-- ###### ## ### ## #### ## ## ---- ",
-" -- -----## -- ######## ######## ######## ## ## --- ",
-" -- -----## -- ## ## ### ## ### - ## ## ##-- -- ",
-" -- -----## - ## ## ## -- ## -- ## ## ##--- -- ",
-" -- ----## ## ## ## ----- ## ## ## ##---- -- ",
-" -- ---## ## ## ## ## --- ## ## ## -##---- -- ",
-" -- ######## ######## ## ## ## ########---- -- ",
-" --- ###### - ###### ## ## ## ##### #---- --- ",
-" ---- -------- -- ---- -- ",
-" ------------ --- --- ",
-" --- ---- ---- ",
-" ------ ",
-" "};
-
-static char **ease_cornu_xpm[3] = { ease_cornu_x16, ease_cornu_x24, ease_cornu_x32 };
-
diff --git a/app/bin/bitmaps/ease-gt-broad.xpm b/app/bin/bitmaps/ease-gt-broad.xpm
deleted file mode 100644
index b2dc1cc..0000000
--- a/app/bin/bitmaps/ease-gt-broad.xpm
+++ /dev/null
@@ -1,89 +0,0 @@
-/* XPM */
-static char * ease_gtbroad_x16[] = {
-"41 16 2 1",
-" c None",
-"x c #000000000000",
-"xxxxx x ",
-"x xxx",
-"x xx xxx xx xxx xx xx xxx x ",
-"xxxx x x x x x x x x x x x x x ",
-"x x x xx xxxx x x x xxxx x x x ",
-"x x xx x x x x x x x x x ",
-"xxxxx x x xxx xxx x x x xxx x x x",
-" ",
-" ",
-" x xxxx x ",
-" x x x x ",
-" x x x xxx xx xx xxx ",
-" x xxxx x x x x x x x x ",
-" x x x x x x x x x x ",
-" x x x x x x x xx x x ",
-" x xxxx x xx xx x xx "};
-
-static char* ease_gtbroad_x24[] = {
-"56 24 2 1",
-" c None",
-"x c #000000",
-" ",
-"xxxxxx ",
-"xx ",
-"xx x ",
-"xx xx ",
-"xxxx xxxxx xxxxx xxxx xxx xx xxxx xx xx xxxxxx",
-"xx xx xx xx xx xx xxxxxxxx xx xx xxx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx xx xx ",
-"xx xx xx xxxx xxxxxx xx xx xx xxxxxx xx xx xx ",
-"xx xx xx xx xx xx xx xx xx xx xx xx ",
-"xxxxxx xxx x xxxxx xxxxx xx xx xx xxxxx xx xx xxx",
-" ",
-" xx xxxxxx xx ",
-" xx xx xx xx ",
-" xx xx xx xx ",
-" xx xx xx xx ",
-" xx xxxxxx xx xxx xxxxx xxxxxx xxxxxx ",
-" xx xx xx xxx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx ",
-" xx xxxxxx xx xxxxx xxxx x xxxxxx ",
-" ",
-" "};
-
-static char* ease_gtbroad_x32[] = {
-"66 32 2 1",
-" c None",
-"x c #000000",
-" ",
-"xxxxxxx ",
-"xxxxxxx ",
-"xx x ",
-"xx xx ",
-"xx xx ",
-"xxxxx xxxxx xxxxxx xxxx xxxx xxx xxxx xx xx xxxxxx",
-"xxxxx xxxxxx xxxxxxx xxxxxx xxxxxxxxxx xxxxxx xxxxxx xxxxxx",
-"xx xx xx xxx xx xx xx xxx xxx xx xx xxx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx ",
-"xxxxxxx xxxxxxx xxxxxxx xxxxxxx xx xx xx xxxxxx xx xx xxxx",
-"xxxxxxx xxx xx xxxxxx xxxxxx xx xx xx xxxxxx xx xx xxx",
-" ",
-" xx xxxxxxx xx ",
-" xx xxxxxxxx xx ",
-" xx xx xx xx ",
-" xx xx xx xx ",
-" xx xx xx xx ",
-" xx xxxxxxxx xx xxx xxxxxx xxxxxxx xxxxxx ",
-" xx xxxxxxxx xx xxxx xxxxxxxx xxxxxxxx xxxxxxx ",
-" xx xx xx xxx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx ",
-" xx xxxxxxxx xx xxxxxxxx xxxxxxxx xxxxxxx ",
-" xx xxxxxxx xx xxxxxx xxxx xx xxxxxx ",
-" ",
-" ",
-" ",
-" "};
-
-static char **ease_gtbroad_xpm[3] = { ease_gtbroad_x16, ease_gtbroad_x24, ease_gtbroad_x32 };
diff --git a/app/bin/bitmaps/ease-gt-sharp.xpm b/app/bin/bitmaps/ease-gt-sharp.xpm
deleted file mode 100644
index bd12492..0000000
--- a/app/bin/bitmaps/ease-gt-sharp.xpm
+++ /dev/null
@@ -1,89 +0,0 @@
-/* XPM */
-static char * ease_gtsharp_x16[] = {
-"41 16 2 1",
-" c None",
-"x c #000000000000",
-"xxxxx x ",
-"x xxx",
-"x xx xxx xx xxx xx xx xxx x ",
-"xxxx x x x x x x x x x x x x x ",
-"x x x xx xxxx x x x xxxx x x x ",
-"x x xx x x x x x x x x x ",
-"xxxxx x x xxx xxx x x x xxx x x x",
-" ",
-" x xxxxx x ",
-" x x x ",
-" x x xxx xx xxx xxx ",
-" x xxxxx x x x x x x x x ",
-" x x x x x x x x x ",
-" x x x x x xx x xxx ",
-" x xxxxx x x x x x x ",
-" x "};
-
-static char* ease_gtsharp_x24[] = {
-"56 24 2 1",
-" c None",
-"x c #000000",
-" ",
-"xxxxxx ",
-"xx ",
-"xx x ",
-"xx xx ",
-"xxxx xxxxx xxxxx xxxx xxx xx xxxx xx xx xxxxxx",
-"xx xx xx xx xx xx xxxxxxxx xx xx xxx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx xx xx ",
-"xx xx xx xxxx xxxxxx xx xx xx xxxxxx xx xx xx ",
-"xx xx xx xx xx xx xx xx xx xx xx xx ",
-"xxxxxx xxx x xxxxx xxxxx xx xx xx xxxxx xx xx xxx",
-" ",
-" xx xxxxxx xx ",
-" xx xx xx ",
-" xx xx xx ",
-" xx xx xx ",
-" xx xxxxx xx xxx xxxxxx xx xxx xxxxxx ",
-" xx xx xxx xx xx xx xxx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xxx xx ",
-" xx xxxxxx xx xx xxxx x xx xx xxx ",
-" xx ",
-" xx "};
-
-static char* ease_gtsharp_x32[] = {
-"66 32 2 1",
-" c None",
-"x c #000000",
-" ",
-"xxxxxxx ",
-"xxxxxxx ",
-"xx x ",
-"xx xx ",
-"xx xx ",
-"xxxxx xxxxx xxxxxx xxxx xxxx xxx xxxx xx xx xxxxxx",
-"xxxxx xxxxxx xxxxxxx xxxxxx xxxxxxxxxx xxxxxx xxxxxx xxxxxx",
-"xx xx xx xxx xx xx xx xxx xxx xx xx xxx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx ",
-"xxxxxxx xxxxxxx xxxxxxx xxxxxxx xx xx xx xxxxxx xx xx xxxx",
-"xxxxxxx xxx xx xxxxxx xxxxxx xx xx xx xxxxxx xx xx xxx",
-" ",
-" xx xxxxxxx xx ",
-" xx xxxxxxxx xx ",
-" xx xx xx ",
-" xx xx xx ",
-" xx xx xx ",
-" xx xxxxxx xx xxx xxxxxxx xx xxx xxxxxx ",
-" xx xxxxxx xxxxxxx xxxxxxxx xx xxxx xxxxxxx ",
-" xx xx xxx xx xx xx xxx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx ",
-" xx xxxxxxxx xx xx xxxxxxxx xx xxxxxxxx ",
-" xx xxxxxxx xx xx xxxx xx xx xxxxxxx ",
-" xx ",
-" xx ",
-" xx ",
-" "};
-
-static char **ease_gtsharp_xpm[3] = { ease_gtsharp_x16, ease_gtsharp_x24, ease_gtsharp_x32 };
diff --git a/app/bin/bitmaps/ease-lt-broad.xpm b/app/bin/bitmaps/ease-lt-broad.xpm
deleted file mode 100644
index ab043ee..0000000
--- a/app/bin/bitmaps/ease-lt-broad.xpm
+++ /dev/null
@@ -1,89 +0,0 @@
-/* XPM */
-static char * ease_ltbroad_x16[] = {
-"41 16 2 1",
-" c None",
-"x c #000000000000",
-"xxxxx x ",
-"x xxx",
-"x xx xxx xx xxx xx xx xxx x ",
-"xxxx x x x x x x x x x x x x x ",
-"x x x xx xxxx x x x xxxx x x x ",
-"x x xx x x x x x x x x x ",
-"xxxxx x x xxx xxx x x x xxx x x x",
-" ",
-" ",
-" x xxxx x ",
-" x x x x ",
-" x x x xxx xx xx xxx ",
-" x xxxx x x x x x x x x ",
-" x x x x x x x x x x ",
-" x x x x x x x xx x x ",
-" x xxxx x xx xx x xx "};
-
-static char* ease_ltbroad_x24[] = {
-"56 24 2 1",
-" c None",
-"x c #000000",
-" ",
-"xxxxxx ",
-"xx ",
-"xx x ",
-"xx xx ",
-"xxxx xxxxx xxxxx xxxx xxx xx xxxx xx xx xxxxxx",
-"xx xx xx xx xx xx xxxxxxxx xx xx xxx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx xx xx ",
-"xx xx xx xxxx xxxxxx xx xx xx xxxxxx xx xx xx ",
-"xx xx xx xx xx xx xx xx xx xx xx xx ",
-"xxxxxx xxx x xxxxx xxxxx xx xx xx xxxxx xx xx xxx",
-" ",
-" xx xxxxxx xx ",
-" xx xx xx xx ",
-" xx xx xx xx ",
-" xx xx xx xx ",
-" xx xxxxxx xx xxx xxxxx xxxxxx xxxxxx ",
-" xx xx xx xxx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx ",
-" xx xxxxxx xx xxxxx xxxx x xxxxxx ",
-" ",
-" "};
-
-static char* ease_ltbroad_x32[] = {
-"66 32 2 1",
-" c None",
-"x c #000000",
-" ",
-"xxxxxxx ",
-"xxxxxxx ",
-"xx x ",
-"xx xx ",
-"xx xx ",
-"xxxxx xxxxx xxxxxx xxxx xxxx xxx xxxx xx xx xxxxxx",
-"xxxxx xxxxxx xxxxxxx xxxxxx xxxxxxxxxx xxxxxx xxxxxx xxxxxx",
-"xx xx xx xxx xx xx xx xxx xxx xx xx xxx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx ",
-"xxxxxxx xxxxxxx xxxxxxx xxxxxxx xx xx xx xxxxxx xx xx xxxx",
-"xxxxxxx xxx xx xxxxxx xxxxxx xx xx xx xxxxxx xx xx xxx",
-" ",
-" xx xxxxxxx xx ",
-" xx xxxxxxxx xx ",
-" xx xx xx xx ",
-" xx xx xx xx ",
-" xx xx xx xx ",
-" xx xxxxxxxx xx xxx xxxxxx xxxxxxx xxxxxx ",
-" xx xxxxxxxx xx xxxx xxxxxxxx xxxxxxxx xxxxxxx ",
-" xx xx xx xxx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx ",
-" xx xxxxxxxx xx xxxxxxxx xxxxxxxx xxxxxxx ",
-" xx xxxxxxx xx xxxxxx xxxx xx xxxxxx ",
-" ",
-" ",
-" ",
-" "};
-
-static char **ease_ltbroad_xpm[3] = { ease_ltbroad_x16, ease_ltbroad_x24, ease_ltbroad_x32 };
diff --git a/app/bin/bitmaps/ease-lt-sharp.xpm b/app/bin/bitmaps/ease-lt-sharp.xpm
deleted file mode 100644
index 93faf60..0000000
--- a/app/bin/bitmaps/ease-lt-sharp.xpm
+++ /dev/null
@@ -1,89 +0,0 @@
-/* XPM */
-static char * ease_ltsharp_x16[] = {
-"41 16 2 1",
-" c None",
-"x c #000000000000",
-"xxxxx x ",
-"x xxx",
-"x xx xxx xx xxx xx xx xxx x ",
-"xxxx x x x x x x x x x x x x x ",
-"x x x xx xxxx x x x xxxx x x x ",
-"x x xx x x x x x x x x x ",
-"xxxxx x x xxx xxx x x x xxx x x x",
-" ",
-" x xxxxx x ",
-" x x x ",
-" x x xxx xx xxx xxx ",
-" x xxxxx x x x x x x x x ",
-" x x x x x x x x x ",
-" x x x x x xx x xxx ",
-" x xxxxx x x x x x x ",
-" x "};
-
-static char* ease_ltsharp_x24[] = {
-"56 24 2 1",
-" c None",
-"x c #000000",
-" ",
-"xxxxxx ",
-"xx ",
-"xx x ",
-"xx xx ",
-"xxxx xxxxx xxxxx xxxx xxx xx xxxx xx xx xxxxxx",
-"xx xx xx xx xx xx xxxxxxxx xx xx xxx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx xx xx ",
-"xx xx xx xxxx xxxxxx xx xx xx xxxxxx xx xx xx ",
-"xx xx xx xx xx xx xx xx xx xx xx xx ",
-"xxxxxx xxx x xxxxx xxxxx xx xx xx xxxxx xx xx xxx",
-" ",
-" xx xxxxxx xx ",
-" xx xx xx ",
-" xx xx xx ",
-" xx xx xx ",
-" xx xxxxx xx xxx xxxxxx xx xxx xxxxxx ",
-" xx xx xxx xx xx xx xxx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xxx xx ",
-" xx xxxxxx xx xx xxxx x xx xx xxx ",
-" xx ",
-" xx "};
-
-static char* ease_ltsharp_x32[] = {
-"66 32 2 1",
-" c None",
-"x c #000000",
-" ",
-"xxxxxxx ",
-"xxxxxxx ",
-"xx x ",
-"xx xx ",
-"xx xx ",
-"xxxxx xxxxx xxxxxx xxxx xxxx xxx xxxx xx xx xxxxxx",
-"xxxxx xxxxxx xxxxxxx xxxxxx xxxxxxxxxx xxxxxx xxxxxx xxxxxx",
-"xx xx xx xxx xx xx xx xxx xxx xx xx xxx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx ",
-"xxxxxxx xxxxxxx xxxxxxx xxxxxxx xx xx xx xxxxxx xx xx xxxx",
-"xxxxxxx xxx xx xxxxxx xxxxxx xx xx xx xxxxxx xx xx xxx",
-" ",
-" xx xxxxxxx xx ",
-" xx xxxxxxxx xx ",
-" xx xx xx ",
-" xx xx xx ",
-" xx xx xx ",
-" xx xxxxxx xx xxx xxxxxxx xx xxx xxxxxx ",
-" xx xxxxxx xxxxxxx xxxxxxxx xx xxxx xxxxxxx ",
-" xx xx xxx xx xx xx xxx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx ",
-" xx xxxxxxxx xx xx xxxxxxxx xx xxxxxxxx ",
-" xx xxxxxxx xx xx xxxx xx xx xxxxxxx ",
-" xx ",
-" xx ",
-" xx ",
-" "};
-
-static char **ease_ltsharp_xpm[3] = { ease_ltsharp_x16, ease_ltsharp_x24, ease_ltsharp_x32 };
diff --git a/app/bin/bitmaps/ease-none.xpm b/app/bin/bitmaps/ease-none.xpm
deleted file mode 100644
index b2fe985..0000000
--- a/app/bin/bitmaps/ease-none.xpm
+++ /dev/null
@@ -1,89 +0,0 @@
-/* XPM */
-static char * ease_none_x16[] = {
-"41 16 2 1",
-" c None",
-"x c #000000000000",
-"xxxxx x ",
-"x xxx",
-"x xx xxx xx xxx xx xx xxx x ",
-"xxxx x x x x x x x x x x x x x ",
-"x x x xx xxxx x x x xxxx x x x ",
-"x x x x x x x x x x x x ",
-"xxxxx xxx xxx xxx x x x xxx x x x",
-" ",
-" x x ",
-" xx x ",
-" xxx x xx xxx xx ",
-" x x x x x x x x x ",
-" x xxx x x x x xxx ",
-" x xx x x x x x ",
-" x x xx x x xxx ",
-" "};
-
-static char* ease_none_x24[] = {
-"56 24 2 1",
-" c None",
-"x c #000000",
-" ",
-"xxxxxx ",
-"xx ",
-"xx x ",
-"xx xx ",
-"xxxx xxxxx xxxxx xxxx xxx xx xxxx xx xx xxxxxx",
-"xx xx xx xx xx xx xxxxxxxx xx xx xxx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx xx xx ",
-"xx xx xx xxxx xxxxxx xx xx xx xxxxxx xx xx xx ",
-"xx xx xx xx xx xx xx xx xx xx xx xx ",
-"xxxxxx xxx x xxxxx xxxxx xx xx xx xxxxx xx xx xxx",
-" ",
-" xx xx ",
-" xx xx ",
-" xxx xx ",
-" xxxx xx ",
-" xxxxxxx xxxxx xx xxx xxxxx ",
-" xx xxxx xx xx xxx xx xx xx ",
-" xx xxx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xxxxxxx ",
-" xx xx xx xx xx xx xx ",
-" xx xx xxxxx xx xx xxxxxx ",
-" ",
-" "};
-
-static char* ease_none_x32[] = {
-"66 32 2 1",
-" c None",
-"x c #000000",
-" ",
-"xxxxxxx ",
-"xxxxxxx ",
-"xx x ",
-"xx xx ",
-"xx xx ",
-"xxxxx xxxxx xxxxxx xxxx xxxx xxx xxxx xx xx xxxxxx",
-"xxxxx xxxxxx xxxxxxx xxxxxx xxxxxxxxxx xxxxxx xxxxxx xxxxxx",
-"xx xx xx xxx xx xx xx xxx xxx xx xx xxx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx ",
-"xxxxxxx xxxxxxx xxxxxxx xxxxxxx xx xx xx xxxxxx xx xx xxxx",
-"xxxxxxx xxx xx xxxxxx xxxxxx xx xx xx xxxxxx xx xx xxx",
-" ",
-" xx xx ",
-" xx xx ",
-" xx xx ",
-" xxx xx ",
-" xxxx xx ",
-" xxxxx xx xxxxxx xx xxxx xxxxxx ",
-" xx xxx xx xxxxxxxx xxxxxxxx xxxxxxxx ",
-" xx xxxxx xx xx xxx xx xx xx ",
-" xx xxxx xx xx xx xx xxxxxxxx ",
-" xx xxx xx xx xx xx xxxxxxxx ",
-" xx xx xx xx xx xx xx ",
-" xx xx xxxxxxxx xx xx xxxxxxxx ",
-" xx xx xxxxxx xx xx xxxxxxx ",
-" ",
-" ",
-" ",
-" "};
-
-static char **ease_none_xpm[3] = { ease_none_x16, ease_none_x24, ease_none_x32 };
diff --git a/app/bin/bitmaps/ease-normal.xpm b/app/bin/bitmaps/ease-normal.xpm
deleted file mode 100644
index 411a036..0000000
--- a/app/bin/bitmaps/ease-normal.xpm
+++ /dev/null
@@ -1,89 +0,0 @@
-/* XPM */
-static char * ease_normal_x16[] = {
-"41 16 2 1",
-" c None",
-"x c #000000000000",
-"xxxxx x ",
-"x xxx",
-"x xx xxx xx xxx xx xx xxx x ",
-"xxxx x x x x x x x x x x x x x ",
-"x x x xx xxxx x x x xxxx x x x ",
-"x x x x x x x x x x x x ",
-"xxxxx xxx xxx xxx x x x xxx x x x",
-" ",
-" x x x ",
-" xx x x ",
-" xxx x xx xxx xxx xx xx x ",
-" x x x x x x x x x x x x x ",
-" x xxx x x x x x x x x x ",
-" x xx x x x x x x x x x ",
-" x x xx x x x x xxx x ",
-" "};
-
-static char* ease_normal_x24[] = {
-"56 24 2 1",
-" c None",
-"x c #000000",
-" ",
-"xxxxxx ",
-"xx ",
-"xx x ",
-"xx xx ",
-"xxxx xxxxx xxxxx xxxx xxx xx xxxx xx xx xxxxxx",
-"xx xx xx xx xx xx xxxxxxxx xx xx xxx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx xx xx ",
-"xx xx xx xxxx xxxxxx xx xx xx xxxxxx xx xx xx ",
-"xx xx xx xx xx xx xx xx xx xx xx xx ",
-"xxxxxx xxx x xxxxx xxxxx xx xx xx xxxxx xx xx xxx",
-" ",
-" xx xx xx ",
-" xx xx xx ",
-" xxx xx xx ",
-" xxxx xx xx ",
-" xxxxxxx xxxxx xx xxx xx xx xx xxxxxx xx ",
-" xx xxxx xx xx xxx xx xxxxxxxx xx xx xx ",
-" xx xxx xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx xx ",
-" xx xx xxxxx xx xx xx xx xxxx x xx ",
-" ",
-" "};
-
-static char* ease_normal_x32[] = {
-"66 32 2 1",
-" c None",
-"x c #000000",
-" ",
-"xxxxxxx ",
-"xxxxxxx ",
-"xx x ",
-"xx xx ",
-"xx xx ",
-"xxxxx xxxxx xxxxxx xxxx xxxx xxx xxxx xx xx xxxxxx",
-"xxxxx xxxxxx xxxxxxx xxxxxx xxxxxxxxxx xxxxxx xxxxxx xxxxxx",
-"xx xx xx xxx xx xx xx xxx xxx xx xx xxx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx ",
-"xxxxxxx xxxxxxx xxxxxxx xxxxxxx xx xx xx xxxxxx xx xx xxxx",
-"xxxxxxx xxx xx xxxxxx xxxxxx xx xx xx xxxxxx xx xx xxx",
-" ",
-" xx xx xx ",
-" xx xx xx ",
-" xx xx xx ",
-" xxx xx xx ",
-" xxxx xx xx ",
-" xxxxx xx xxxxxx xx xxx xx xx xx xxxxxxx xx ",
-" xx xxx xx xxxxxxxx xxxxxxx xxxxxxxxxx xxxxxxxx xx ",
-" xx xxxxx xx xx xxx xx xx xxx xxx xx xx xx ",
-" xx xxxx xx xx xx xx xx xx xx xx xx ",
-" xx xxx xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx xx xx ",
-" xx xx xxxxxxxx xx xx xx xx xxxxxxxx xxx ",
-" xx xx xxxxxx xx xx xx xx xxxx xx xxx ",
-" ",
-" ",
-" ",
-" "};
-
-static char **ease_normal_xpm[3] = { ease_normal_x16, ease_normal_x24, ease_normal_x32 };
diff --git a/app/bin/bitmaps/ease-sharp.xpm b/app/bin/bitmaps/ease-sharp.xpm
deleted file mode 100644
index 05c5c3b..0000000
--- a/app/bin/bitmaps/ease-sharp.xpm
+++ /dev/null
@@ -1,89 +0,0 @@
-/* XPM */
-static char * ease_sharp_x16[] = {
-"41 16 2 1",
-" c None",
-"x c #000000000000",
-"xxxxx x ",
-"x xxx",
-"x xx xxx xx xxx xx xx xxx x ",
-"xxxx x x x x x x x x x x x x x ",
-"x x x xx xxxx x x x xxxx x x x ",
-"x x xx x x x x x x x x x ",
-"xxxxx x x xxx xxx x x x xxx x x x",
-" ",
-" xxxxx x ",
-" x x ",
-" x xxx xx xxx xxx ",
-" xxxx x x x x x x x x ",
-" x x x x x x x x ",
-" x x x x xx x xxx ",
-" xxxxx x x x x x x ",
-" x "};
-
-static char* ease_sharp_x24[] = {
-"56 24 2 1",
-" c None",
-"x c #000000",
-" ",
-"xxxxxx ",
-"xx ",
-"xx x ",
-"xx xx ",
-"xxxx xxxxx xxxxx xxxx xxx xx xxxx xx xx xxxxxx",
-"xx xx xx xx xx xx xxxxxxxx xx xx xxx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx xx xx ",
-"xx xx xx xxxx xxxxxx xx xx xx xxxxxx xx xx xx ",
-"xx xx xx xx xx xx xx xx xx xx xx xx ",
-"xxxxxx xxx x xxxxx xxxxx xx xx xx xxxxx xx xx xxx",
-" ",
-" xxxxxx xx ",
-" xx xx ",
-" xx xx ",
-" xx xx ",
-" xxxxx xx xxx xxxxxx xx xxx xxxxxx ",
-" xx xxx xx xx xx xxx xx xx xx ",
-" xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xxx xx ",
-" xxxxxx xx xx xxxx x xx xx xxx ",
-" xx ",
-" xx "};
-
-static char* ease_sharp_x32[] = {
-"66 32 2 1",
-" c None",
-"x c #000000",
-" ",
-"xxxxxxx ",
-"xxxxxxx ",
-"xx x ",
-"xx xx ",
-"xx xx ",
-"xxxxx xxxxx xxxxxx xxxx xxxx xxx xxxx xx xx xxxxxx",
-"xxxxx xxxxxx xxxxxxx xxxxxx xxxxxxxxxx xxxxxx xxxxxx xxxxxx",
-"xx xx xx xxx xx xx xx xxx xxx xx xx xxx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xxxxxxx xx xx xx xxxxxxx xx xx xx ",
-"xx xx xx xxx xx xx xx xx xx xx xx xx ",
-"xxxxxxx xxxxxxx xxxxxxx xxxxxxx xx xx xx xxxxxx xx xx xxxx",
-"xxxxxxx xxx xx xxxxxx xxxxxx xx xx xx xxxxxx xx xx xxx",
-" ",
-" xxxxxxx xx ",
-" xxxxxxxx xx ",
-" xx xx ",
-" xx xx ",
-" xx xx ",
-" xxxxxx xx xxx xxxxxxx xx xxx xxxxxx ",
-" xxxxxx xxxxxxx xxxxxxxx xx xxxx xxxxxxx ",
-" xx xxx xx xx xx xxx xx xx xx ",
-" xx xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx ",
-" xx xx xx xx xx xx xx xx ",
-" xxxxxxxx xx xx xxxxxxxx xx xxxxxxxx ",
-" xxxxxxx xx xx xxxx xx xx xxxxxxx ",
-" xx ",
-" xx ",
-" xx ",
-" "};
-
-static char **ease_sharp_xpm[3] = { ease_sharp_x16, ease_sharp_x24, ease_sharp_x32 };
diff --git a/app/bin/bitmaps/elevation.xpm b/app/bin/bitmaps/elevation.xpm
deleted file mode 100644
index ab65147..0000000
--- a/app/bin/bitmaps/elevation.xpm
+++ /dev/null
@@ -1,117 +0,0 @@
-static char *elevation_x16[] = {
- "16 16 5 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #CC6600",
- "3 c #FF0000",
- " ",
- " 1 11111 ",
- " 131 33 ",
- " 13331 33 ",
- " 1 33 ",
- " 1 33 ",
- " 1 11111 ",
- " 1 ",
- " ",
- " 2 2 2 2 2 2 2 ",
- " 00000000000000 ",
- " 2 2 2 2 2 2 2 ",
- " 00000000000000 ",
- " 2 2 2 2 2 2 2 ",
- " ",
- " "};
-
-static char *elevation_x24[] = {
- "24 24 14 1",
- " c None",
- "0 c #000000",
- "1 c #663300",
- "2 c #666600",
- "3 c #996600",
- "4 c #996633",
- "5 c #CC0000",
- "6 c #CC3300",
- "7 c #CC6600",
- "8 c #CC6633",
- "9 c #CC9933",
- "A c #FF6633",
- "B c #FF9933",
- "C c #FFCC33",
- " ",
- " ",
- " 5555555 ",
- " 55555555 ",
- " 555 ",
- " 55 555 ",
- " 5555 555 ",
- " 555555 55 ",
- " 5555555 555 ",
- " 5 55 5 55555555 ",
- " 55 55555555 ",
- " 55 ",
- " 55 ",
- " 55 ",
- " 55 ",
- " 440440345640180090081 ",
- " 0440440345640180090081 ",
- " BB BB BC57C C C C ",
- " BB BB BC5AC C C C ",
- " BB BB BC C C C C ",
- " 440440340240180090081 ",
- " 0440440340240180090081 ",
- " ",
- " "};
-
-static char *elevation_x32[] = {
- "32 32 15 1",
- " c None",
- "0 c #000000",
- "1 c #333300",
- "2 c #663300",
- "3 c #666600",
- "4 c #990000",
- "5 c #996600",
- "6 c #996633",
- "7 c #CC0000",
- "8 c #CC3300",
- "9 c #CC6600",
- "A c #CC6633",
- "B c #CC9933",
- "C c #FF9933",
- "D c #FFCC33",
- " ",
- " ",
- " ",
- " 777777777 ",
- " 777777777 ",
- " 777 ",
- " 777 ",
- " 77 7777 ",
- " 7777 777 ",
- " 777777 777 ",
- " 77777777 777 ",
- " 777777777 777 ",
- " 77 777 77 7777777777 ",
- " 777 7777777777 ",
- " 777 7777777777 ",
- " 777 ",
- " 777 ",
- " 777 ",
- " 777 ",
- " 777 ",
- " BB BB 6B778B B B5 B6 ",
- " 02200220013474500050005100310 ",
- " DC CC D778D D D D ",
- " DC CC D778D D D D ",
- " DC CC D779D D D D ",
- " DC CC D D D D D ",
- " DC CC D D D D D ",
- " 06500660036002A000B000A200630 ",
- " 06500660036002A000B000A200630 ",
- " D D D C D D ",
- " ",
- " "};
-
-static char **elevation_xpm[3] = { elevation_x16, elevation_x24, elevation_x32 };
-
diff --git a/app/bin/bitmaps/exit.xpm b/app/bin/bitmaps/exit.xpm
deleted file mode 100644
index 7daf3ab..0000000
--- a/app/bin/bitmaps/exit.xpm
+++ /dev/null
@@ -1,94 +0,0 @@
-static char *exit_x16[] = {
- "16 16 3 1",
- " c None",
- "0 c #000000",
- "1 c #FF0000",
- " ",
- " 1 ",
- " 111 ",
- " 11111 ",
- " 1 ",
- " 1 ",
- " 1 ",
- " 1 ",
- " ",
- " ",
- " 000 0 0 0 000 ",
- " 0 0 0 0 0 ",
- " 00 0 0 0 ",
- " 0 0 0 0 0 ",
- " 000 0 0 0 0 ",
- " "};
-
-static char *exit_x24[] = {
- "24 24 5 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #CC0000",
- "3 c #808080",
- " ",
- " ",
- " 22 ",
- " 2222 ",
- " 222222 ",
- " 22222222 ",
- " 22 ",
- " 22 ",
- " 22 ",
- " 22 ",
- " 22 ",
- " 22 ",
- " ",
- " ",
- " 00000 0 0 00 000000 ",
- " 00 01 10 00 00 ",
- " 00 030 00 00 ",
- " 0000 303 00 00 ",
- " 00 030 00 00 ",
- " 00 01 10 00 00 ",
- " 00000 0 0 00 00 ",
- " ",
- " ",
- " "};
-
-static char *exit_x32[] = {
- "32 32 3 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- " ",
- " 11 ",
- " 1111 ",
- " 111111 ",
- " 111111111 ",
- " 11111111111 ",
- " 11111111111111 ",
- " 1111 1111 1111 ",
- " 111 1111 111 ",
- " 1111 1 ",
- " 1111 ",
- " 1111 ",
- " 1111 ",
- " 1111 ",
- " 1111 ",
- " 1111 ",
- " 1111 ",
- " 111 ",
- " ",
- " ",
- " ",
- " 00000000 000 00 00 000000000",
- " 00000000 000 000 00 00000000 ",
- " 00 000000 00 000 ",
- " 000 00000 00 000 ",
- " 0000000 000 00 000 ",
- " 0000000 0000 00 000 ",
- " 00 00000 00 000 ",
- " 00 000 000 00 000 ",
- " 00000000 000 000 00 000 ",
- " 00000000 00 000 00 000 ",
- " "};
-
-static char **exit_xpm[3] = { exit_x16, exit_x24, exit_x32 };
-
diff --git a/app/bin/bitmaps/extend.xpm b/app/bin/bitmaps/extend.xpm
deleted file mode 100644
index 43490a0..0000000
--- a/app/bin/bitmaps/extend.xpm
+++ /dev/null
@@ -1,143 +0,0 @@
-static char *extend_x16[] = {
- "16 16 21 1",
- " c None",
- "0 c #000000",
- "1 c #0066FF",
- "2 c #3366CC",
- "3 c #3366FF",
- "4 c #3399FF",
- "5 c #666666",
- "6 c #6666CC",
- "7 c #6699FF",
- "8 c #66CCFF",
- "9 c #993333",
- "A c #996666",
- "B c #999999",
- "C c #9999CC",
- "D c #CC0000",
- "E c #CC3333",
- "F c #CC6633",
- "G c #CC6666",
- "H c #CCCCCC",
- "I c #C0C0C0",
- "J c #808080",
- " D ",
- " DDD ",
- " GAE9 ",
- " BJEJI ",
- " BJD5 ",
- " BBGJH ",
- " HJFE5 ",
- " BJEJB ",
- " CJGEJH ",
- " 46FJI ",
- " 734832 ",
- " 884438814 ",
- " 343448 34 ",
- " 8 8441 ",
- " 411338 ",
- " 44 8 "};
-
-static char *extend_x24[] = {
- "24 24 21 1",
- " c None",
- "0 c #000000",
- "1 c #0066FF",
- "2 c #3366FF",
- "3 c #3399FF",
- "4 c #666666",
- "5 c #6666CC",
- "6 c #6699FF",
- "7 c #66CCFF",
- "8 c #993333",
- "9 c #999999",
- "A c #CC0000",
- "B c #CC3300",
- "C c #CC3333",
- "D c #CC6633",
- "E c #CC6666",
- "F c #CC6699",
- "G c #CC9999",
- "H c #CCCCCC",
- "I c #C0C0C0",
- "J c #808080",
- " ",
- " AA ",
- " AAAAA ",
- " B AA ",
- " 99EGJI ",
- " J9DG4H ",
- " 44A 4 ",
- " HJIC94 ",
- " 4GE99H ",
- " H94AA44 ",
- " JICG4 ",
- " H44CE99 ",
- " 9JGA 4I ",
- " 75 EGJ4 ",
- " 37 A9JH ",
- " 62 7732 ",
- " 77227 32 ",
- " 7776223 7 1 7 ",
- " 23323277 32 ",
- " 236 7 76117 ",
- " 77 77112 ",
- " 76111117 ",
- " 112117 ",
- " 77 "};
-
-static char *extend_x32[] = {
- "32 32 18 1",
- " c None",
- "0 c #000000",
- "1 c #0066FF",
- "2 c #3366CC",
- "3 c #3366FF",
- "4 c #3399FF",
- "5 c #666666",
- "6 c #6699FF",
- "7 c #66CCFF",
- "8 c #999999",
- "9 c #CC0000",
- "A c #CC3300",
- "B c #CC3333",
- "C c #CC6666",
- "D c #CC9999",
- "E c #CCCCCC",
- "F c #C0C0C0",
- "G c #808080",
- " ",
- " 99 ",
- " 999999 ",
- " 99999999 ",
- " 99 99 99 ",
- " 5 99 5 ",
- " EGECBEGE ",
- " 5 998G ",
- " 5 9955 ",
- " E8G 9955 ",
- " E88D9FG8 ",
- " 559AEGFE ",
- " EF5 99 5 ",
- " E88D9 55 ",
- " 5 CBE5 ",
- " EE55 9B8GE ",
- " 8G 99 5 ",
- " 5ED9B55 ",
- " 73 9CF5 ",
- " 377 5FE ",
- " 763 77 12 ",
- " 7 347 741 ",
- " 7633 7 147 ",
- " 7 77334 7 11 ",
- " 463333 7 431 ",
- " 334337 77 1147 ",
- " 7 77 711 ",
- " 7 7 1136 ",
- " 7 411 7 ",
- " 11311147 ",
- " 37 7 ",
- " 7 "};
-
-static char **extend_xpm[3] = { extend_x16, extend_x24, extend_x32 };
-
diff --git a/app/bin/bitmaps/filled-box.xpm b/app/bin/bitmaps/filled-box.xpm
deleted file mode 100644
index cd85179..0000000
--- a/app/bin/bitmaps/filled-box.xpm
+++ /dev/null
@@ -1,120 +0,0 @@
-static char *filled_box_x16[] = {
- "16 16 12 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #9999CC",
- "3 c #99CCCC",
- "4 c #99CCFF",
- "5 c #99FFFF",
- "6 c #CC0000",
- "7 c #CC6666",
- "8 c #CC6699",
- "9 c #CC9999",
- "A c #CC99CC",
- " ",
- " 00000000000000 ",
- " 05555555542220 ",
- " 05555555542860 ",
- " 0555555555A271 ",
- " 05555555592581 ",
- " 05555554935540 ",
- " 05555549355550 ",
- " 05555483555550 ",
- " 05554845555550 ",
- " 05548455555550 ",
- " 05484555555550 ",
- " 04845555555550 ",
- " 18455555555550 ",
- " 00000000000000 ",
- " "};
-
-static char *filled_box_x24[] = {
- "24 24 12 1",
- " c None",
- "0 c #000000",
- "1 c #9999CC",
- "2 c #99CCCC",
- "3 c #99CCFF",
- "4 c #99FFFF",
- "5 c #CC0000",
- "6 c #CC3333",
- "7 c #CC6666",
- "8 c #CC6699",
- "9 c #CC9999",
- "A c #CC99CC",
- " ",
- " ",
- " 0000000000000000000000 ",
- " 0444444444444433333340 ",
- " 0444444444444415555640 ",
- " 0444444444444433317540 ",
- " 0444444444444444292530 ",
- " 0444444444444441942530 ",
- " 04444444444444A1443530 ",
- " 0444444444444914443230 ",
- " 0444444444439244444440 ",
- " 0444444444392444444440 ",
- " 0444444443824444444440 ",
- " 0444444438344444444440 ",
- " 0444444383444444444440 ",
- " 0444443834444444444440 ",
- " 0444438344444444444440 ",
- " 0444283444444444444440 ",
- " 0442934444444444444440 ",
- " 0429344444444444444440 ",
- " 0314444444444444444440 ",
- " 0000000000000000000000 ",
- " ",
- " "};
-
-static char *filled_box_x32[] = {
- "32 32 13 1",
- " c None",
- "0 c #000000",
- "1 c #9999CC",
- "2 c #99CCCC",
- "3 c #99CCFF",
- "4 c #99FFFF",
- "5 c #CC0000",
- "6 c #CC3333",
- "7 c #CC3366",
- "8 c #CC6666",
- "9 c #CC6699",
- "A c #CC9999",
- "B c #CC99CC",
- " ",
- " ",
- " 000000000000000000000000000000 ",
- " 000000000000000000000000000000 ",
- " 004444444444444444444444444400 ",
- " 004444444444444444436555558400 ",
- " 004444444444444444436555556400 ",
- " 004444444444444444444436555400 ",
- " 004444444444444444444265A85300 ",
- " 00444444444444444444265A485300 ",
- " 0044444444444444444255B4495300 ",
- " 0044444444444444441551444A5300 ",
- " 004444444444444441552444431300 ",
- " 0044444444444444A5524444444400 ",
- " 004444444444444A56244444444400 ",
- " 00444444444443A562444444444400 ",
- " 0044444444443A5634444444444400 ",
- " 004444444443857344444444444400 ",
- " 004444444438583444444444444400 ",
- " 004444444385834444444444444400 ",
- " 004444443758344444444444444400 ",
- " 004444436593444444444444444400 ",
- " 004444265A34444444444444444400 ",
- " 00444265A344444444444444444400 ",
- " 0044255A4444444444444444444400 ",
- " 004155144444444444444444444400 ",
- " 003651444444444444444444444400 ",
- " 004224444444444444444444444400 ",
- " 000000000000000000000000000000 ",
- " 000000000000000000000000000000 ",
- " ",
- " "};
-
-static char **filled_box_xpm[3] = { filled_box_x16, filled_box_x24, filled_box_x32 };
-
diff --git a/app/bin/bitmaps/filled-polygon.xpm b/app/bin/bitmaps/filled-polygon.xpm
deleted file mode 100644
index 2620b74..0000000
--- a/app/bin/bitmaps/filled-polygon.xpm
+++ /dev/null
@@ -1,121 +0,0 @@
-static char *filled_polygon_x16[] = {
- "16 16 12 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #336699",
- "6 c #669999",
- "7 c #6699CC",
- "8 c #66CCCC",
- "9 c #66CCFF",
- "A c #99FFFF",
- " ",
- " 01220144 ",
- " 17799AAA93 ",
- " 17AAAAAAAA84 ",
- " 29AAAAAAAAA83 ",
- " 4AAAAAAAAAAA83 ",
- "06AAAAAAAAAAAA71",
- " 4AAAAAAAAAAAA82",
- " 19AAAAAAAAAAA82",
- " 17AAAAAAAAAAA82",
- " 4AAAAAAAAAAA82",
- " 19AAAAAAAAAA92",
- " 1179AAAAAAAA92",
- " 1279AAAA9752",
- " 227640210 ",
- " 00 "};
-
-static char *filled_polygon_x24[] = {
- "24 24 14 1",
- " c None",
- "0 c #000000",
- "1 c #000033",
- "2 c #003333",
- "3 c #333333",
- "4 c #333366",
- "5 c #336666",
- "6 c #336699",
- "7 c #339999",
- "8 c #669999",
- "9 c #6699CC",
- "A c #66CCCC",
- "B c #66CCFF",
- "C c #99FFFF",
- " ",
- " 0032 ",
- " 0033105599A62 ",
- " 299ABBCCCCCCB62 ",
- " 06CCCCCCCCCCCCB5 ",
- " 3ACCCCCCCCCCCCCB5 ",
- " 2BCCCCCCCCCCCCCCB5 ",
- " 07CCCCCCCCCCCCCCCCB5 ",
- " 3ACCCCCCCCCCCCCCCCCB4 ",
- " 1BCCCCCCCCCCCCCCCCCCB4 ",
- " 3BCCCCCCCCCCCCCCCCCCC4 ",
- " 08CCCCCCCCCCCCCCCCCCC4 ",
- " 2CCCCCCCCCCCCCCCCCCC4 ",
- " 3BCCCCCCCCCCCCCCCCCC5 ",
- " 07CCCCCCCCCCCCCCCCCC5 ",
- " 2BCCCCCCCCCCCCCCCCC5 ",
- " 3ACCCCCCCCCCCCCCCCC5 ",
- " 07CCCCCCCCCCCCCCCCC5 ",
- " 45BCCCCCCCCCCCCCCC5 ",
- " 35BCCCCCCCCCCCCC5 ",
- " 36BCCCCCCCBA850 ",
- " 028BBA952230 ",
- " 22230 ",
- " "};
-
-static char *filled_polygon_x32[] = {
- "32 32 12 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #333366",
- "3 c #336666",
- "4 c #336699",
- "5 c #339999",
- "6 c #669999",
- "7 c #6699CC",
- "8 c #66CCCC",
- "9 c #66CCFF",
- "A c #99FFFF",
- " ",
- " 0000 ",
- " 000000000000 ",
- " 0000000000447789300 ",
- " 004477999AAAAAAA9300 ",
- " 008AAAAAAAAAAAAAAA9100 ",
- " 019AAAAAAAAAAAAAAAA9100 ",
- " 05AAAAAAAAAAAAAAAAAA9100 ",
- " 008AAAAAAAAAAAAAAAAAAA810 ",
- " 029AAAAAAAAAAAAAAAAAAAA800 ",
- " 006AAAAAAAAAAAAAAAAAAAAAA800 ",
- " 009AAAAAAAAAAAAAAAAAAAAAAA700 ",
- " 02AAAAAAAAAAAAAAAAAAAAAAAAA700 ",
- " 009AAAAAAAAAAAAAAAAAAAAAAAAA30 ",
- " 008AAAAAAAAAAAAAAAAAAAAAAAAA40 ",
- " 04AAAAAAAAAAAAAAAAAAAAAAAAA40 ",
- " 009AAAAAAAAAAAAAAAAAAAAAAAA50 ",
- " 008AAAAAAAAAAAAAAAAAAAAAAAA60 ",
- " 04AAAAAAAAAAAAAAAAAAAAAAAA60 ",
- " 009AAAAAAAAAAAAAAAAAAAAAAA60 ",
- " 007AAAAAAAAAAAAAAAAAAAAAAA60 ",
- " 04AAAAAAAAAAAAAAAAAAAAAAA60 ",
- " 009AAAAAAAAAAAAAAAAAAAAAA60 ",
- " 0069AAAAAAAAAAAAAAAAAAAAA60 ",
- " 0027AAAAAAAAAAAAAAAAAAAA70 ",
- " 00038AAAAAAAAAAAAAAAAAA70 ",
- " 00038AAAAAAAAAAAAAA9840 ",
- " 00049AAAAAAA997520000 ",
- " 00059A98630000000 ",
- " 00010000000 ",
- " 0000 ",
- " "};
-
-static char **filled_polygon_xpm[3] = { filled_polygon_x16, filled_polygon_x24, filled_polygon_x32 };
-
diff --git a/app/bin/bitmaps/go.xpm b/app/bin/bitmaps/go.xpm
deleted file mode 100644
index deb8a81..0000000
--- a/app/bin/bitmaps/go.xpm
+++ /dev/null
@@ -1,135 +0,0 @@
-static char *go_x16[] = {
- "16 16 16 1",
- " c None",
- "0 c #000000",
- "1 c #003300",
- "2 c #006600",
- "3 c #006633",
- "4 c #009933",
- "5 c #339933",
- "6 c #33CC33",
- "7 c #33CC66",
- "8 c #66CC66",
- "9 c #66CC99",
- "A c #99CC99",
- "B c #99FF99",
- "C c #99FFCC",
- "D c #CCFFCC",
- "E c #008000",
- " 00 ",
- " 1221 ",
- " 11577511 ",
- " 015788887510 ",
- " 12678898887620 ",
- " 14788AAAA877E0 ",
- " 1478AACCA98740 ",
- " 1478ACDDB98740 ",
- " 1478ABCCA98740 ",
- " 14789ABBA887E0 ",
- " 147789AA9876E0 ",
- " 11578888877410 ",
- " 1377777631 ",
- " 01476410 ",
- " 1111 ",
- " "};
-
-static char *go_x24[] = {
- "24 24 18 1",
- " c None",
- "0 c #000000",
- "1 c #003300",
- "2 c #006600",
- "3 c #006633",
- "4 c #009900",
- "5 c #009933",
- "6 c #00CC33",
- "7 c #339933",
- "8 c #33CC33",
- "9 c #33CC66",
- "A c #66CC66",
- "B c #66CC99",
- "C c #99CC99",
- "D c #99FF99",
- "E c #99FFCC",
- "F c #CCFFCC",
- "G c #008000",
- " ",
- " 0110 ",
- " 138721 ",
- " 1279999711 ",
- " 11799999999510 ",
- " 015899AAAAAA99821 ",
- " 125899AAABBAAA998510 ",
- " 15899AABCCCBBAA986G0 ",
- " 1589AABCCCCCCAA998G0 ",
- " 1589AACCEEECCBAA98G0 ",
- " 1599ABCCEFEECCAA9850 ",
- " 1599ABCEEFFECCAA9850 ",
- " 1599ABCDEFFECCAA9850 ",
- " 1599AACCEEEECBAA9850 ",
- " 1589AABCCCCCCBAA98G0 ",
- " 15899AABCCCCBAA996G0 ",
- " 14689AAABBBBAA9986G0 ",
- " 1G899AAAAAAA9986G1 ",
- " 117999AAAA998511 ",
- " 128999999711 ",
- " 015888821 ",
- " 115G10 ",
- " 10 ",
- " "};
-
-static char *go_x32[] = {
- "32 32 18 1",
- " c None",
- "0 c #000000",
- "1 c #003300",
- "2 c #006600",
- "3 c #006633",
- "4 c #009900",
- "5 c #009933",
- "6 c #00CC33",
- "7 c #339933",
- "8 c #33CC33",
- "9 c #33CC66",
- "A c #66CC66",
- "B c #66CC99",
- "C c #99CC99",
- "D c #99FF99",
- "E c #99FFCC",
- "F c #CCFFCC",
- "G c #008000",
- " ",
- " 11 ",
- " 115310 ",
- " 015888721 ",
- " 138999998711 ",
- " 1179999999998511 ",
- " 1158999AAAAA9999831 ",
- " 01G8899AAAAAAAAA9998511 ",
- " 1258899AAAAAAAAAAA99986G1 ",
- " 146899AAAABCCCBBAAA99886G0 ",
- " 156899AAABCCCCCCBAAA9986G0 ",
- " 15899AAABCCCCCCCCBAA9986G0 ",
- " 15899AABCCCEEEDCCBAAA988G0 ",
- " 15899AABCCEEEEEDCCBAA998G0 ",
- " 1589AAACCCEEFFEECCBAA998G0 ",
- " 1589AAACCDEFFFEECCBAA99850 ",
- " 1589AAACCCEFFFEECCBAA998G0 ",
- " 15899AABCCEEEEEDCCBAA998G0 ",
- " 15899AABCCCEEEECCCAAA988G0 ",
- " 15899AAABCCCCCCCCBAA9986G0 ",
- " 156899AABCCCCCCCBAAA9986G0 ",
- " 156899AAAABCCCBBAAA99886G0 ",
- " 1G68899AAAAABAAAAAA9986520 ",
- " 1158899AAAAAAAAA99986511 ",
- " 1G88999AAAAAA9998711 ",
- " 11589999999999821 ",
- " 11789999998510 ",
- " 1278888511 ",
- " 0136511 ",
- " 111 ",
- " ",
- " "};
-
-static char **go_xpm[3] = { go_x16, go_x24, go_x32 };
-
diff --git a/app/bin/bitmaps/helix.xpm b/app/bin/bitmaps/helix.xpm
deleted file mode 100644
index d02bb29..0000000
--- a/app/bin/bitmaps/helix.xpm
+++ /dev/null
@@ -1,95 +0,0 @@
-static char *helix_x16[] = {
- "16 16 4 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #666666",
- " 1111 ",
- " 1111111111 ",
- " 11 11 11 ",
- " 11 111111111 1 ",
- "11111 1111",
- "111 2222222 11",
- "11 2222 22111",
- "112 11111",
- "111 1111 12",
- "22111 1112",
- "221 111111111 22",
- "2211 1 22 ",
- " 2 11111222222 ",
- " 22 1122 ",
- " 2222 ",
- " 2222 "};
-
-static char *helix_x24[] = {
- "24 24 4 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #666666",
- " 11 ",
- " 11111111111 ",
- " 111 1111 ",
- " 11 11 ",
- " 11 11111111 1 ",
- " 1 1111 11 11111 1 ",
- " 11 111 111 1 ",
- " 1 11 22 111 ",
- " 111 22222222222 11 ",
- " 11 222 222111 ",
- " 11 22 1111 ",
- " 112 1111 21 ",
- " 111 1111111 11 ",
- " 1211 1122",
- " 22 111 111 2 ",
- " 21 1111111111111 2 ",
- " 221 1111111 2 ",
- " 22 11 22 ",
- " 2 1111 2222 ",
- " 22 11111222222 ",
- " 22 ",
- " 22 ",
- " 222222 ",
- " 22 "};
-
-static char *helix_x32[] = {
- "32 32 4 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #666666",
- " 1 ",
- " 1111111111111 ",
- " 111111111111111111 ",
- " 11111 11111 ",
- " 111 1111 ",
- " 111 1111111 111 ",
- " 111 111111111111111 11 ",
- " 11 1111111 11 11111111 11 ",
- " 111 11111 11111 11 ",
- " 11 111 11111 ",
- " 11111 22222222222 1111 ",
- " 1111 22222222222222222 111 ",
- " 111 222222 2222221111 ",
- " 111 2222 211111 ",
- " 111222 1111211 ",
- " 11122 1111111 211 ",
- " 1111 1111111111 111 ",
- " 12111 111111 1112 ",
- " 2121111 111122 ",
- " 211 11111 11111 22 ",
- " 2211 1111111111111111111 22 ",
- " 22111 111111111111111 222 ",
- " 22 111 11 222 ",
- " 222 1111 22222 ",
- " 22 111111 222222 ",
- " 22 11111111222222222 ",
- " 222 11111222222 ",
- " 2222 ",
- " 22222 ",
- " 2222222 ",
- " 22222222 ",
- " 2222 "};
-
-static char **helix_xpm[3] = { helix_x16, helix_x24, helix_x32 };
-
diff --git a/app/bin/bitmaps/join-line.xpm b/app/bin/bitmaps/join-line.xpm
deleted file mode 100644
index 1912e9a..0000000
--- a/app/bin/bitmaps/join-line.xpm
+++ /dev/null
@@ -1,99 +0,0 @@
-static char *join_line_x16[] = {
- "16 16 5 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #CC0000",
- "3 c #800000",
- " ",
- " 00",
- " 0 ",
- " 0 ",
- " 0 ",
- " 223 ",
- " 222 ",
- " 222 ",
- " 2 ",
- " 2 ",
- " 2 ",
- " 2 2 ",
- " 222 ",
- " 022 ",
- " 00000 22 ",
- " 000 "};
-
-static char *join_line_x24[] = {
- "24 24 5 1",
- " c None",
- "0 c #000000",
- "1 c #990000",
- "2 c #CC0000",
- "3 c #800000",
- " ",
- " 0 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 0 ",
- " 00 ",
- " 2223 ",
- " 2222 ",
- " 2222 ",
- " 22 ",
- " 2 ",
- " 22 ",
- " 22 ",
- " 22 ",
- " 22 ",
- " 2 22 ",
- " 22222 ",
- " 222 ",
- " 0122 ",
- " 0000 22 ",
- " 000000 ",
- " "};
-
-static char *join_line_x32[] = {
- "32 32 6 1",
- " c None",
- "0 c #000000",
- "1 c #660000",
- "2 c #990000",
- "3 c #CC0000",
- "4 c #800000",
- " ",
- " 0 ",
- " 0 ",
- " 0 ",
- " 0 ",
- " 0 ",
- " 00 ",
- " 00 ",
- " 0 ",
- " 0 ",
- " 21 ",
- " 333333 ",
- " 3333333 ",
- " 33333 ",
- " 33 33 ",
- " 333 ",
- " 33 ",
- " 33 ",
- " 333 ",
- " 333 ",
- " 333 ",
- " 333 ",
- " 333 ",
- " 33 333 ",
- " 33 3333 ",
- " 33333 ",
- " 3333 ",
- " 04333 ",
- " 0000 333 ",
- " 0000000 3 ",
- " 00000 ",
- " "};
-
-static char **join_line_xpm[3] = { join_line_x16, join_line_x24, join_line_x32 };
-
diff --git a/app/bin/bitmaps/join.xpm b/app/bin/bitmaps/join.xpm
deleted file mode 100644
index 944e443..0000000
--- a/app/bin/bitmaps/join.xpm
+++ /dev/null
@@ -1,117 +0,0 @@
-static char *join_x16[] = {
- "16 16 13 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #660000",
- "4 c #663300",
- "5 c #990000",
- "6 c #996600",
- "7 c #CC0000",
- "8 c #CC3300",
- "9 c #CC6600",
- "A c #CC9900",
- "B c #800000",
- " 66 0 ",
- " 66A2A",
- " 20 0 ",
- " A4964 ",
- " 3 46 ",
- " 7777B ",
- " 777 ",
- " 77 ",
- " 7 ",
- " 7 ",
- " 7 77 ",
- " 9161777 ",
- "0406977 ",
- " A A6157 ",
- "04006 ",
- " 9 A "};
-
-static char *join_x24[] = {
- "24 24 10 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #990000",
- "5 c #996600",
- "6 c #CC0000",
- "7 c #CC6600",
- "8 c #CC9900",
- " 0 ",
- " 8558827 ",
- " 338818 ",
- " 00 0 ",
- " 825 0 ",
- " 7288538 ",
- " 00 158 ",
- " 6666660 ",
- " 6666664 ",
- " 66666 ",
- " 66 666 ",
- " 666 6 ",
- " 666 ",
- " 666 ",
- " 6 666 ",
- " 66 666 ",
- " 666666 ",
- " 7 33066666 ",
- " 02007 666 ",
- " 8 8866666 ",
- " 8 8500466 ",
- " 350005 ",
- " 15 8 ",
- " 8 "};
-
-static char *join_x32[] = {
- "32 32 11 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #990000",
- "5 c #996600",
- "6 c #CC0000",
- "7 c #CC6600",
- "8 c #CC9900",
- "9 c #800000",
- " ",
- " 20 00 ",
- " 855888558 ",
- " 00 05 ",
- " 0 0 ",
- " 0 0 ",
- " 88388 0 ",
- " 03888758 ",
- " 0 038 ",
- " 64666 0 ",
- " 666666660 ",
- " 666666664 ",
- " 666666 ",
- " 666 666 ",
- " 666 666 ",
- " 6666 ",
- " 6666 ",
- " 6666 ",
- " 6666 ",
- " 66 6666 ",
- " 66 6666 ",
- " 666 66666 ",
- " 87096666666 ",
- " 88 0320666666 ",
- " 0100038 66666 ",
- " 78 8 666666 ",
- " 88 88 46666 ",
- " 88 7000 666 ",
- " 57000033 ",
- " 02300 88 ",
- " 8 8 ",
- " 8 "};
-
-static char **join_xpm[3] = { join_x16, join_x24, join_x32 };
-
diff --git a/app/bin/bitmaps/l1.xbm b/app/bin/bitmaps/l1.xbm
deleted file mode 100644
index 031edd1..0000000
--- a/app/bin/bitmaps/l1.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l1_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x80, 0x03,
- 0xC0, 0x03,
- 0xE0, 0x03,
- 0x80, 0x03,
- 0x80, 0x03,
- 0x80, 0x03,
- 0x80, 0x03,
- 0x80, 0x03,
- 0x80, 0x03,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l1_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x1E, 0x00,
- 0x00, 0x1E, 0x00,
- 0x00, 0x1F, 0x00,
- 0x80, 0x1D, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l1_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xE0, 0x00, 0x00,
- 0x00, 0xE0, 0x00, 0x00,
- 0x00, 0xF0, 0x00, 0x00,
- 0x00, 0xF8, 0x00, 0x00,
- 0x00, 0xFC, 0x00, 0x00,
- 0x00, 0xFE, 0x00, 0x00,
- 0x00, 0xE6, 0x00, 0x00,
- 0x00, 0xE0, 0x00, 0x00,
- 0x00, 0xE0, 0x00, 0x00,
- 0x00, 0xE0, 0x00, 0x00,
- 0x00, 0xE0, 0x00, 0x00,
- 0x00, 0xE0, 0x00, 0x00,
- 0x00, 0xE0, 0x00, 0x00,
- 0x00, 0xE0, 0x00, 0x00,
- 0x00, 0xE0, 0x00, 0x00,
- 0x00, 0xE0, 0x00, 0x00,
- 0x00, 0xE0, 0x00, 0x00,
- 0x00, 0xE0, 0x00, 0x00,
- 0x00, 0xE0, 0x00, 0x00,
- 0x00, 0xE0, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l10.xbm b/app/bin/bitmaps/l10.xbm
deleted file mode 100644
index 10920b9..0000000
--- a/app/bin/bitmaps/l10.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l10_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x1E,
- 0x78, 0x3F,
- 0x7C, 0x33,
- 0x70, 0x33,
- 0x70, 0x33,
- 0x70, 0x33,
- 0x70, 0x33,
- 0x70, 0x3F,
- 0x70, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l10_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0xE1, 0x03,
- 0xE0, 0x71, 0x07,
- 0xE0, 0x31, 0x07,
- 0xF0, 0x39, 0x06,
- 0xD8, 0x39, 0x06,
- 0xC0, 0x39, 0x0E,
- 0xC0, 0x39, 0x0E,
- 0xC0, 0x39, 0x0E,
- 0xC0, 0x39, 0x0E,
- 0xC0, 0x39, 0x0E,
- 0xC0, 0x39, 0x06,
- 0xC0, 0x39, 0x06,
- 0xC0, 0x31, 0x07,
- 0xC0, 0x71, 0x07,
- 0xC0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l10_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x03, 0x7E, 0x00,
- 0x80, 0x03, 0xFF, 0x00,
- 0xC0, 0x03, 0xEF, 0x01,
- 0xE0, 0x83, 0xC7, 0x01,
- 0xF0, 0x83, 0xC3, 0x03,
- 0xF8, 0x83, 0xC3, 0x03,
- 0x98, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0x83, 0xC3, 0x03,
- 0x80, 0x83, 0xC3, 0x03,
- 0x80, 0x83, 0xC7, 0x01,
- 0x80, 0x03, 0xEF, 0x01,
- 0x80, 0x03, 0xFF, 0x00,
- 0x80, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l11.xbm b/app/bin/bitmaps/l11.xbm
deleted file mode 100644
index ce82cfe..0000000
--- a/app/bin/bitmaps/l11.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l11_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x1C,
- 0x78, 0x1E,
- 0x7C, 0x1F,
- 0x70, 0x1C,
- 0x70, 0x1C,
- 0x70, 0x1C,
- 0x70, 0x1C,
- 0x70, 0x1C,
- 0x70, 0x1C,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l11_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0x81, 0x03,
- 0xE0, 0xC1, 0x03,
- 0xE0, 0xC1, 0x03,
- 0xF0, 0xE1, 0x03,
- 0xD8, 0xB1, 0x03,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l11_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x03, 0x70, 0x00,
- 0x80, 0x03, 0x70, 0x00,
- 0xC0, 0x03, 0x78, 0x00,
- 0xE0, 0x03, 0x7C, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0xF8, 0x03, 0x7F, 0x00,
- 0x98, 0x03, 0x73, 0x00,
- 0x80, 0x03, 0x70, 0x00,
- 0x80, 0x03, 0x70, 0x00,
- 0x80, 0x03, 0x70, 0x00,
- 0x80, 0x03, 0x70, 0x00,
- 0x80, 0x03, 0x70, 0x00,
- 0x80, 0x03, 0x70, 0x00,
- 0x80, 0x03, 0x70, 0x00,
- 0x80, 0x03, 0x70, 0x00,
- 0x80, 0x03, 0x70, 0x00,
- 0x80, 0x03, 0x70, 0x00,
- 0x80, 0x03, 0x70, 0x00,
- 0x80, 0x03, 0x70, 0x00,
- 0x80, 0x03, 0x70, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l12.xbm b/app/bin/bitmaps/l12.xbm
deleted file mode 100644
index e660ef3..0000000
--- a/app/bin/bitmaps/l12.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l12_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x1E,
- 0x78, 0x3F,
- 0x7C, 0x33,
- 0x70, 0x30,
- 0x70, 0x38,
- 0x70, 0x1C,
- 0x70, 0x0E,
- 0x70, 0x07,
- 0x70, 0x3F,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l12_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0xE1, 0x03,
- 0xE0, 0x71, 0x07,
- 0xE0, 0x39, 0x06,
- 0xF0, 0x39, 0x0E,
- 0xD8, 0x01, 0x0E,
- 0xC0, 0x01, 0x0E,
- 0xC0, 0x01, 0x07,
- 0xC0, 0x81, 0x07,
- 0xC0, 0x81, 0x03,
- 0xC0, 0xC1, 0x01,
- 0xC0, 0xE1, 0x01,
- 0xC0, 0xF1, 0x00,
- 0xC0, 0x71, 0x00,
- 0xC0, 0x79, 0x00,
- 0xC0, 0xF9, 0x0F,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l12_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x03, 0xFE, 0x00,
- 0x80, 0x03, 0xFF, 0x01,
- 0xC0, 0x83, 0xE7, 0x03,
- 0xE0, 0x83, 0xC3, 0x03,
- 0xF0, 0xC3, 0x83, 0x03,
- 0xF8, 0xC3, 0x83, 0x03,
- 0x98, 0x03, 0x80, 0x03,
- 0x80, 0x03, 0xC0, 0x03,
- 0x80, 0x03, 0xC0, 0x03,
- 0x80, 0x03, 0xE0, 0x01,
- 0x80, 0x03, 0xF0, 0x01,
- 0x80, 0x03, 0xF8, 0x00,
- 0x80, 0x03, 0x78, 0x00,
- 0x80, 0x03, 0x3C, 0x00,
- 0x80, 0x03, 0x1E, 0x00,
- 0x80, 0x03, 0x0F, 0x00,
- 0x80, 0x83, 0x07, 0x00,
- 0x80, 0x83, 0x07, 0x00,
- 0x80, 0xC3, 0xFF, 0x03,
- 0x80, 0xC3, 0xFF, 0x03,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l13.xbm b/app/bin/bitmaps/l13.xbm
deleted file mode 100644
index a11c7f7..0000000
--- a/app/bin/bitmaps/l13.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l13_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x1E,
- 0x78, 0x3B,
- 0x7C, 0x38,
- 0x70, 0x18,
- 0x70, 0x3C,
- 0x70, 0x38,
- 0x70, 0x33,
- 0x70, 0x3F,
- 0x70, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l13_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0xE1, 0x03,
- 0xE0, 0x71, 0x07,
- 0xE0, 0x39, 0x07,
- 0xF0, 0x01, 0x07,
- 0xD8, 0x01, 0x07,
- 0xC0, 0x01, 0x07,
- 0xC0, 0x81, 0x03,
- 0xC0, 0xC1, 0x07,
- 0xC0, 0x01, 0x07,
- 0xC0, 0x01, 0x0E,
- 0xC0, 0x01, 0x0E,
- 0xC0, 0x39, 0x0E,
- 0xC0, 0x39, 0x07,
- 0xC0, 0x71, 0x07,
- 0xC0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l13_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x03, 0x7E, 0x00,
- 0x80, 0x03, 0xFF, 0x00,
- 0xC0, 0x83, 0xE7, 0x01,
- 0xE0, 0x83, 0xC7, 0x01,
- 0xF0, 0x83, 0xC3, 0x03,
- 0xF8, 0x03, 0xC0, 0x03,
- 0x98, 0x03, 0xC0, 0x01,
- 0x80, 0x03, 0xE0, 0x01,
- 0x80, 0x03, 0xFC, 0x00,
- 0x80, 0x03, 0xFC, 0x00,
- 0x80, 0x03, 0xE0, 0x01,
- 0x80, 0x03, 0xC0, 0x03,
- 0x80, 0x03, 0x80, 0x03,
- 0x80, 0x03, 0x80, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0x83, 0xC7, 0x03,
- 0x80, 0x83, 0xE7, 0x01,
- 0x80, 0x03, 0xFF, 0x01,
- 0x80, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l14.xbm b/app/bin/bitmaps/l14.xbm
deleted file mode 100644
index 765ca93..0000000
--- a/app/bin/bitmaps/l14.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l14_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x1C,
- 0x78, 0x1C,
- 0x7C, 0x1E,
- 0x70, 0x1E,
- 0x70, 0x1F,
- 0x70, 0x1B,
- 0xF0, 0x3F,
- 0x70, 0x18,
- 0x70, 0x18,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l14_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0x81, 0x03,
- 0xE0, 0x81, 0x03,
- 0xE0, 0xC1, 0x03,
- 0xF0, 0xC1, 0x03,
- 0xD8, 0xE1, 0x03,
- 0xC0, 0xE1, 0x03,
- 0xC0, 0xF1, 0x03,
- 0xC0, 0xB1, 0x03,
- 0xC0, 0xB9, 0x03,
- 0xC0, 0x99, 0x03,
- 0xC0, 0xFD, 0x0F,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l14_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x03, 0xF0, 0x00,
- 0x80, 0x03, 0xF0, 0x00,
- 0xC0, 0x03, 0xF8, 0x00,
- 0xE0, 0x03, 0xF8, 0x00,
- 0xF0, 0x03, 0xFC, 0x00,
- 0xF8, 0x03, 0xFC, 0x00,
- 0x98, 0x03, 0xFE, 0x00,
- 0x80, 0x03, 0xEE, 0x00,
- 0x80, 0x03, 0xEF, 0x00,
- 0x80, 0x83, 0xE7, 0x00,
- 0x80, 0x83, 0xE7, 0x00,
- 0x80, 0xC3, 0xE3, 0x00,
- 0x80, 0xC3, 0xE1, 0x00,
- 0x80, 0xE3, 0xFF, 0x03,
- 0x80, 0xE3, 0xFF, 0x03,
- 0x80, 0x03, 0xE0, 0x00,
- 0x80, 0x03, 0xE0, 0x00,
- 0x80, 0x03, 0xE0, 0x00,
- 0x80, 0x03, 0xE0, 0x00,
- 0x80, 0x03, 0xE0, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l15.xbm b/app/bin/bitmaps/l15.xbm
deleted file mode 100644
index 7850754..0000000
--- a/app/bin/bitmaps/l15.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l15_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x3F,
- 0x78, 0x07,
- 0x7C, 0x07,
- 0x70, 0x1F,
- 0x70, 0x3B,
- 0x70, 0x30,
- 0x70, 0x33,
- 0x70, 0x3F,
- 0x70, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l15_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0xF1, 0x07,
- 0xE0, 0x71, 0x00,
- 0xE0, 0x71, 0x00,
- 0xF0, 0x31, 0x00,
- 0xD8, 0x31, 0x00,
- 0xC0, 0xF9, 0x03,
- 0xC0, 0x79, 0x07,
- 0xC0, 0x39, 0x07,
- 0xC0, 0x01, 0x0E,
- 0xC0, 0x01, 0x0E,
- 0xC0, 0x01, 0x0E,
- 0xC0, 0x39, 0x06,
- 0xC0, 0x39, 0x07,
- 0xC0, 0x71, 0x07,
- 0xC0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l15_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x03, 0xFF, 0x03,
- 0x80, 0x03, 0xFF, 0x03,
- 0xC0, 0x03, 0x07, 0x00,
- 0xE0, 0x03, 0x07, 0x00,
- 0xF0, 0x83, 0x07, 0x00,
- 0xF8, 0x83, 0x07, 0x00,
- 0x98, 0x83, 0x7F, 0x00,
- 0x80, 0x83, 0xFF, 0x01,
- 0x80, 0x83, 0xE7, 0x01,
- 0x80, 0x83, 0xC3, 0x03,
- 0x80, 0x03, 0xC0, 0x03,
- 0x80, 0x03, 0x80, 0x03,
- 0x80, 0x03, 0x80, 0x03,
- 0x80, 0x03, 0x80, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0xC3, 0x03,
- 0x80, 0x83, 0xC3, 0x03,
- 0x80, 0x83, 0xE7, 0x01,
- 0x80, 0x03, 0xFF, 0x00,
- 0x80, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l16.xbm b/app/bin/bitmaps/l16.xbm
deleted file mode 100644
index 88e94f6..0000000
--- a/app/bin/bitmaps/l16.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l16_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x1E,
- 0x78, 0x3F,
- 0x7C, 0x03,
- 0x70, 0x1F,
- 0x70, 0x3F,
- 0x70, 0x33,
- 0x70, 0x33,
- 0x70, 0x3F,
- 0x70, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l16_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0xE1, 0x03,
- 0xE0, 0x71, 0x07,
- 0xE0, 0x31, 0x07,
- 0xF0, 0x39, 0x00,
- 0xD8, 0x39, 0x00,
- 0xC0, 0x39, 0x00,
- 0xC0, 0xF9, 0x03,
- 0xC0, 0x79, 0x07,
- 0xC0, 0x39, 0x07,
- 0xC0, 0x39, 0x0E,
- 0xC0, 0x39, 0x0E,
- 0xC0, 0x39, 0x0E,
- 0xC0, 0x31, 0x07,
- 0xC0, 0x71, 0x07,
- 0xC0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l16_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x03, 0xFC, 0x00,
- 0x80, 0x03, 0xFF, 0x01,
- 0xC0, 0x03, 0xEF, 0x01,
- 0xE0, 0x83, 0xC7, 0x03,
- 0xF0, 0x83, 0xC3, 0x03,
- 0xF8, 0x83, 0x03, 0x00,
- 0x98, 0xC3, 0x03, 0x00,
- 0x80, 0xC3, 0x7F, 0x00,
- 0x80, 0xC3, 0xFF, 0x01,
- 0x80, 0xC3, 0xEF, 0x01,
- 0x80, 0xC3, 0xC7, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0x83, 0x83, 0x03,
- 0x80, 0x83, 0xC7, 0x03,
- 0x80, 0x83, 0xEF, 0x01,
- 0x80, 0x03, 0xFF, 0x01,
- 0x80, 0x03, 0x7C, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l17.xbm b/app/bin/bitmaps/l17.xbm
deleted file mode 100644
index df3fb94..0000000
--- a/app/bin/bitmaps/l17.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l17_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x3F,
- 0x78, 0x38,
- 0x7C, 0x18,
- 0x70, 0x1C,
- 0x70, 0x0C,
- 0x70, 0x0E,
- 0x70, 0x0E,
- 0x70, 0x06,
- 0x70, 0x06,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l17_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0xF9, 0x0F,
- 0xE0, 0x01, 0x0F,
- 0xE0, 0x01, 0x07,
- 0xF0, 0x81, 0x03,
- 0xD8, 0x81, 0x03,
- 0xC0, 0xC1, 0x01,
- 0xC0, 0xC1, 0x01,
- 0xC0, 0xC1, 0x01,
- 0xC0, 0xE1, 0x00,
- 0xC0, 0xE1, 0x00,
- 0xC0, 0xE1, 0x00,
- 0xC0, 0xE1, 0x00,
- 0xC0, 0xE1, 0x00,
- 0xC0, 0x71, 0x00,
- 0xC0, 0x71, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l17_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0xC3, 0xFF, 0x03,
- 0x80, 0xC3, 0xFF, 0x03,
- 0xC0, 0x03, 0xC0, 0x03,
- 0xE0, 0x03, 0xE0, 0x01,
- 0xF0, 0x03, 0xE0, 0x01,
- 0xF8, 0x03, 0xF0, 0x00,
- 0x98, 0x03, 0xF0, 0x00,
- 0x80, 0x03, 0x78, 0x00,
- 0x80, 0x03, 0x78, 0x00,
- 0x80, 0x03, 0x38, 0x00,
- 0x80, 0x03, 0x3C, 0x00,
- 0x80, 0x03, 0x3C, 0x00,
- 0x80, 0x03, 0x1C, 0x00,
- 0x80, 0x03, 0x1E, 0x00,
- 0x80, 0x03, 0x1E, 0x00,
- 0x80, 0x03, 0x1E, 0x00,
- 0x80, 0x03, 0x1E, 0x00,
- 0x80, 0x03, 0x0E, 0x00,
- 0x80, 0x03, 0x0E, 0x00,
- 0x80, 0x03, 0x0E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l18.xbm b/app/bin/bitmaps/l18.xbm
deleted file mode 100644
index 7ab0b30..0000000
--- a/app/bin/bitmaps/l18.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l18_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x1E,
- 0x78, 0x3F,
- 0x7C, 0x3B,
- 0x70, 0x3F,
- 0x70, 0x1E,
- 0x70, 0x3F,
- 0x70, 0x33,
- 0x70, 0x3F,
- 0x70, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l18_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0xE1, 0x03,
- 0xE0, 0x71, 0x07,
- 0xE0, 0x31, 0x07,
- 0xF0, 0x39, 0x07,
- 0xD8, 0x39, 0x07,
- 0xC0, 0x39, 0x07,
- 0xC0, 0x71, 0x07,
- 0xC0, 0xE1, 0x03,
- 0xC0, 0x71, 0x07,
- 0xC0, 0x39, 0x06,
- 0xC0, 0x39, 0x0E,
- 0xC0, 0x39, 0x0E,
- 0xC0, 0x39, 0x06,
- 0xC0, 0x71, 0x07,
- 0xC0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l18_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x03, 0x7E, 0x00,
- 0x80, 0x03, 0xFF, 0x00,
- 0xC0, 0x83, 0xEF, 0x01,
- 0xE0, 0x83, 0xC7, 0x01,
- 0xF0, 0x83, 0xC3, 0x03,
- 0xF8, 0x83, 0xC3, 0x03,
- 0x98, 0x83, 0xC7, 0x01,
- 0x80, 0x03, 0xEF, 0x01,
- 0x80, 0x03, 0xFE, 0x00,
- 0x80, 0x03, 0xFF, 0x00,
- 0x80, 0x83, 0xE7, 0x01,
- 0x80, 0x83, 0xC3, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0x83, 0xC3, 0x03,
- 0x80, 0x83, 0xE7, 0x01,
- 0x80, 0x03, 0xFF, 0x01,
- 0x80, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l19.xbm b/app/bin/bitmaps/l19.xbm
deleted file mode 100644
index 08aee34..0000000
--- a/app/bin/bitmaps/l19.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l19_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x1E,
- 0x78, 0x3F,
- 0x7C, 0x33,
- 0x70, 0x33,
- 0x70, 0x3F,
- 0x70, 0x3E,
- 0x70, 0x30,
- 0x70, 0x3B,
- 0x70, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l19_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0xE1, 0x01,
- 0xE0, 0x71, 0x07,
- 0xE0, 0x39, 0x07,
- 0xF0, 0x39, 0x06,
- 0xD8, 0x39, 0x0E,
- 0xC0, 0x39, 0x0E,
- 0xC0, 0x39, 0x0F,
- 0xC0, 0x71, 0x0F,
- 0xC0, 0xE1, 0x0F,
- 0xC0, 0x01, 0x0E,
- 0xC0, 0x01, 0x06,
- 0xC0, 0x01, 0x06,
- 0xC0, 0x39, 0x07,
- 0xC0, 0x71, 0x03,
- 0xC0, 0xF1, 0x01,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l19_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x03, 0x7E, 0x00,
- 0x80, 0x03, 0xFF, 0x00,
- 0xC0, 0x83, 0xEF, 0x01,
- 0xE0, 0x83, 0xC7, 0x01,
- 0xF0, 0xC3, 0x83, 0x03,
- 0xF8, 0xC3, 0x83, 0x03,
- 0x98, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0xC3, 0x83, 0x03,
- 0x80, 0x83, 0xC3, 0x03,
- 0x80, 0x83, 0xE7, 0x03,
- 0x80, 0x03, 0xFF, 0x03,
- 0x80, 0x03, 0xFE, 0x03,
- 0x80, 0x03, 0x80, 0x03,
- 0x80, 0x03, 0x80, 0x03,
- 0x80, 0x83, 0xC3, 0x03,
- 0x80, 0x83, 0xC3, 0x01,
- 0x80, 0x83, 0xE7, 0x01,
- 0x80, 0x03, 0xFF, 0x00,
- 0x80, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l2.xbm b/app/bin/bitmaps/l2.xbm
deleted file mode 100644
index 4ab709c..0000000
--- a/app/bin/bitmaps/l2.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l2_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xC0, 0x03,
- 0xE0, 0x07,
- 0x60, 0x06,
- 0x00, 0x06,
- 0x00, 0x07,
- 0x80, 0x03,
- 0xC0, 0x01,
- 0xE0, 0x00,
- 0xE0, 0x07,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l2_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x1F, 0x00,
- 0x80, 0x3B, 0x00,
- 0xC0, 0x31, 0x00,
- 0xC0, 0x71, 0x00,
- 0x00, 0x70, 0x00,
- 0x00, 0x70, 0x00,
- 0x00, 0x38, 0x00,
- 0x00, 0x3C, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x0E, 0x00,
- 0x00, 0x0F, 0x00,
- 0x80, 0x07, 0x00,
- 0x80, 0x03, 0x00,
- 0xC0, 0x03, 0x00,
- 0xC0, 0x7F, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l2_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xFC, 0x01, 0x00,
- 0x00, 0xFE, 0x03, 0x00,
- 0x00, 0xCF, 0x07, 0x00,
- 0x00, 0x87, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x00, 0x00, 0x07, 0x00,
- 0x00, 0x80, 0x07, 0x00,
- 0x00, 0x80, 0x07, 0x00,
- 0x00, 0xC0, 0x03, 0x00,
- 0x00, 0xE0, 0x03, 0x00,
- 0x00, 0xF0, 0x01, 0x00,
- 0x00, 0xF0, 0x00, 0x00,
- 0x00, 0x78, 0x00, 0x00,
- 0x00, 0x3C, 0x00, 0x00,
- 0x00, 0x1E, 0x00, 0x00,
- 0x00, 0x0F, 0x00, 0x00,
- 0x00, 0x0F, 0x00, 0x00,
- 0x80, 0xFF, 0x07, 0x00,
- 0x80, 0xFF, 0x07, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l20.xbm b/app/bin/bitmaps/l20.xbm
deleted file mode 100644
index 9da3bef..0000000
--- a/app/bin/bitmaps/l20.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l20_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0xCC, 0x33,
- 0xC0, 0x33,
- 0xE0, 0x33,
- 0x70, 0x33,
- 0x38, 0x33,
- 0x1C, 0x3F,
- 0xFC, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l20_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x1C, 0x33, 0x07,
- 0x1C, 0x3F, 0x06,
- 0x00, 0x3F, 0x06,
- 0x00, 0x3F, 0x0E,
- 0x80, 0x3B, 0x0E,
- 0xC0, 0x3B, 0x0E,
- 0xC0, 0x39, 0x0E,
- 0xE0, 0x38, 0x0E,
- 0xF0, 0x38, 0x06,
- 0x78, 0x38, 0x06,
- 0x38, 0x30, 0x07,
- 0x3C, 0x70, 0x07,
- 0xFC, 0xE7, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l20_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x07, 0x7E, 0x00,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0x3C, 0x1F, 0xEF, 0x01,
- 0x1C, 0x9E, 0xC7, 0x01,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x00, 0xDE, 0x83, 0x03,
- 0x00, 0xDE, 0x83, 0x03,
- 0x00, 0xCF, 0x83, 0x03,
- 0x80, 0xCF, 0x83, 0x03,
- 0xC0, 0xC7, 0x83, 0x03,
- 0xC0, 0xC3, 0x83, 0x03,
- 0xE0, 0xC1, 0x83, 0x03,
- 0xF0, 0x80, 0xC3, 0x03,
- 0x78, 0x80, 0xC3, 0x03,
- 0x3C, 0x80, 0xC7, 0x01,
- 0x3C, 0x00, 0xEF, 0x01,
- 0xFE, 0x1F, 0xFF, 0x00,
- 0xFE, 0x1F, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l21.xbm b/app/bin/bitmaps/l21.xbm
deleted file mode 100644
index 32d81cc..0000000
--- a/app/bin/bitmaps/l21.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l21_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1C,
- 0xFC, 0x1E,
- 0xCC, 0x1F,
- 0xC0, 0x1C,
- 0xE0, 0x1C,
- 0x70, 0x1C,
- 0x38, 0x1C,
- 0x1C, 0x1C,
- 0xFC, 0x1C,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l21_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0x81, 0x03,
- 0xB8, 0xC3, 0x03,
- 0x1C, 0xC3, 0x03,
- 0x1C, 0xE7, 0x03,
- 0x00, 0xB7, 0x03,
- 0x00, 0x87, 0x03,
- 0x80, 0x83, 0x03,
- 0xC0, 0x83, 0x03,
- 0xC0, 0x81, 0x03,
- 0xE0, 0x80, 0x03,
- 0xF0, 0x80, 0x03,
- 0x78, 0x80, 0x03,
- 0x38, 0x80, 0x03,
- 0x3C, 0x80, 0x03,
- 0xFC, 0x87, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l21_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x07, 0x70, 0x00,
- 0xF8, 0x0F, 0x70, 0x00,
- 0x3C, 0x1F, 0x78, 0x00,
- 0x1C, 0x1E, 0x7C, 0x00,
- 0x1E, 0x1C, 0x7E, 0x00,
- 0x1E, 0x1C, 0x7F, 0x00,
- 0x00, 0x1C, 0x73, 0x00,
- 0x00, 0x1E, 0x70, 0x00,
- 0x00, 0x1E, 0x70, 0x00,
- 0x00, 0x0F, 0x70, 0x00,
- 0x80, 0x0F, 0x70, 0x00,
- 0xC0, 0x07, 0x70, 0x00,
- 0xC0, 0x03, 0x70, 0x00,
- 0xE0, 0x01, 0x70, 0x00,
- 0xF0, 0x00, 0x70, 0x00,
- 0x78, 0x00, 0x70, 0x00,
- 0x3C, 0x00, 0x70, 0x00,
- 0x3C, 0x00, 0x70, 0x00,
- 0xFE, 0x1F, 0x70, 0x00,
- 0xFE, 0x1F, 0x70, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l22.xbm b/app/bin/bitmaps/l22.xbm
deleted file mode 100644
index 9cfc394..0000000
--- a/app/bin/bitmaps/l22.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l22_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0xCC, 0x33,
- 0xC0, 0x30,
- 0xE0, 0x38,
- 0x70, 0x1C,
- 0x38, 0x0E,
- 0x1C, 0x07,
- 0xFC, 0x3F,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l22_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x1C, 0x3B, 0x06,
- 0x1C, 0x3F, 0x0E,
- 0x00, 0x07, 0x0E,
- 0x00, 0x07, 0x0E,
- 0x80, 0x03, 0x07,
- 0xC0, 0x83, 0x07,
- 0xC0, 0x81, 0x03,
- 0xE0, 0xC0, 0x01,
- 0xF0, 0xE0, 0x01,
- 0x78, 0xF0, 0x00,
- 0x38, 0x70, 0x00,
- 0x3C, 0x78, 0x00,
- 0xFC, 0xFF, 0x0F,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l22_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x07, 0xFE, 0x00,
- 0xF8, 0x0F, 0xFF, 0x01,
- 0x3C, 0x9F, 0xE7, 0x03,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x00, 0x1C, 0x80, 0x03,
- 0x00, 0x1E, 0xC0, 0x03,
- 0x00, 0x1E, 0xC0, 0x03,
- 0x00, 0x0F, 0xE0, 0x01,
- 0x80, 0x0F, 0xF0, 0x01,
- 0xC0, 0x07, 0xF8, 0x00,
- 0xC0, 0x03, 0x78, 0x00,
- 0xE0, 0x01, 0x3C, 0x00,
- 0xF0, 0x00, 0x1E, 0x00,
- 0x78, 0x00, 0x0F, 0x00,
- 0x3C, 0x80, 0x07, 0x00,
- 0x3C, 0x80, 0x07, 0x00,
- 0xFE, 0xDF, 0xFF, 0x03,
- 0xFE, 0xDF, 0xFF, 0x03,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l23.xbm b/app/bin/bitmaps/l23.xbm
deleted file mode 100644
index efb4ac4..0000000
--- a/app/bin/bitmaps/l23.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l23_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3B,
- 0xCC, 0x38,
- 0xC0, 0x18,
- 0xE0, 0x3C,
- 0x70, 0x38,
- 0x38, 0x33,
- 0x1C, 0x3F,
- 0xFC, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l23_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x1C, 0x3B, 0x07,
- 0x1C, 0x07, 0x07,
- 0x00, 0x07, 0x07,
- 0x00, 0x07, 0x07,
- 0x80, 0x83, 0x03,
- 0xC0, 0xC3, 0x07,
- 0xC0, 0x01, 0x07,
- 0xE0, 0x00, 0x0E,
- 0xF0, 0x00, 0x0E,
- 0x78, 0x38, 0x0E,
- 0x38, 0x38, 0x07,
- 0x3C, 0x70, 0x07,
- 0xFC, 0xE7, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l23_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x07, 0x7E, 0x00,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0x3C, 0x9F, 0xE7, 0x01,
- 0x1C, 0x9E, 0xC7, 0x01,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1E, 0x1C, 0xC0, 0x03,
- 0x00, 0x1C, 0xC0, 0x01,
- 0x00, 0x1E, 0xE0, 0x01,
- 0x00, 0x1E, 0xFC, 0x00,
- 0x00, 0x0F, 0xFC, 0x00,
- 0x80, 0x0F, 0xE0, 0x01,
- 0xC0, 0x07, 0xC0, 0x03,
- 0xC0, 0x03, 0x80, 0x03,
- 0xE0, 0x01, 0x80, 0x03,
- 0xF0, 0xC0, 0x83, 0x03,
- 0x78, 0xC0, 0x83, 0x03,
- 0x3C, 0x80, 0xC7, 0x03,
- 0x3C, 0x80, 0xE7, 0x01,
- 0xFE, 0x1F, 0xFF, 0x01,
- 0xFE, 0x1F, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l24.xbm b/app/bin/bitmaps/l24.xbm
deleted file mode 100644
index 8fd49ae..0000000
--- a/app/bin/bitmaps/l24.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l24_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1C,
- 0xFC, 0x1C,
- 0xCC, 0x1E,
- 0xC0, 0x1E,
- 0xE0, 0x1F,
- 0x70, 0x1B,
- 0xB8, 0x3F,
- 0x1C, 0x18,
- 0xFC, 0x18,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l24_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0x81, 0x03,
- 0xB8, 0x83, 0x03,
- 0x1C, 0xC3, 0x03,
- 0x1C, 0xC7, 0x03,
- 0x00, 0xE7, 0x03,
- 0x00, 0xE7, 0x03,
- 0x80, 0xF3, 0x03,
- 0xC0, 0xB3, 0x03,
- 0xC0, 0xB9, 0x03,
- 0xE0, 0x98, 0x03,
- 0xF0, 0xFC, 0x0F,
- 0x78, 0x80, 0x03,
- 0x38, 0x80, 0x03,
- 0x3C, 0x80, 0x03,
- 0xFC, 0x87, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l24_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x07, 0xF0, 0x00,
- 0xF8, 0x0F, 0xF0, 0x00,
- 0x3C, 0x1F, 0xF8, 0x00,
- 0x1C, 0x1E, 0xF8, 0x00,
- 0x1E, 0x1C, 0xFC, 0x00,
- 0x1E, 0x1C, 0xFC, 0x00,
- 0x00, 0x1C, 0xFE, 0x00,
- 0x00, 0x1E, 0xEE, 0x00,
- 0x00, 0x1E, 0xEF, 0x00,
- 0x00, 0x8F, 0xE7, 0x00,
- 0x80, 0x8F, 0xE7, 0x00,
- 0xC0, 0xC7, 0xE3, 0x00,
- 0xC0, 0xC3, 0xE1, 0x00,
- 0xE0, 0xE1, 0xFF, 0x03,
- 0xF0, 0xE0, 0xFF, 0x03,
- 0x78, 0x00, 0xE0, 0x00,
- 0x3C, 0x00, 0xE0, 0x00,
- 0x3C, 0x00, 0xE0, 0x00,
- 0xFE, 0x1F, 0xE0, 0x00,
- 0xFE, 0x1F, 0xE0, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l25.xbm b/app/bin/bitmaps/l25.xbm
deleted file mode 100644
index 6bf1e2b..0000000
--- a/app/bin/bitmaps/l25.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l25_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x3F,
- 0xFC, 0x07,
- 0xCC, 0x07,
- 0xC0, 0x1F,
- 0xE0, 0x3B,
- 0x70, 0x30,
- 0x38, 0x33,
- 0x1C, 0x3F,
- 0xFC, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l25_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xF1, 0x07,
- 0xB8, 0x73, 0x00,
- 0x1C, 0x73, 0x00,
- 0x1C, 0x37, 0x00,
- 0x00, 0x37, 0x00,
- 0x00, 0xFF, 0x03,
- 0x80, 0x7B, 0x07,
- 0xC0, 0x3B, 0x07,
- 0xC0, 0x01, 0x0E,
- 0xE0, 0x00, 0x0E,
- 0xF0, 0x00, 0x0E,
- 0x78, 0x38, 0x06,
- 0x38, 0x38, 0x07,
- 0x3C, 0x70, 0x07,
- 0xFC, 0xE7, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l25_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x07, 0xFF, 0x03,
- 0xF8, 0x0F, 0xFF, 0x03,
- 0x3C, 0x1F, 0x07, 0x00,
- 0x1C, 0x1E, 0x07, 0x00,
- 0x1E, 0x9C, 0x07, 0x00,
- 0x1E, 0x9C, 0x07, 0x00,
- 0x00, 0x9C, 0x7F, 0x00,
- 0x00, 0x9E, 0xFF, 0x01,
- 0x00, 0x9E, 0xE7, 0x01,
- 0x00, 0x8F, 0xC3, 0x03,
- 0x80, 0x0F, 0xC0, 0x03,
- 0xC0, 0x07, 0x80, 0x03,
- 0xC0, 0x03, 0x80, 0x03,
- 0xE0, 0x01, 0x80, 0x03,
- 0xF0, 0xC0, 0x83, 0x03,
- 0x78, 0xC0, 0xC3, 0x03,
- 0x3C, 0x80, 0xC3, 0x03,
- 0x3C, 0x80, 0xE7, 0x01,
- 0xFE, 0x1F, 0xFF, 0x00,
- 0xFE, 0x1F, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l26.xbm b/app/bin/bitmaps/l26.xbm
deleted file mode 100644
index ebed83b..0000000
--- a/app/bin/bitmaps/l26.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l26_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0xCC, 0x03,
- 0xC0, 0x1F,
- 0xE0, 0x3F,
- 0x70, 0x33,
- 0x38, 0x33,
- 0x1C, 0x3F,
- 0xFC, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l26_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x1C, 0x33, 0x07,
- 0x1C, 0x3F, 0x00,
- 0x00, 0x3F, 0x00,
- 0x00, 0x3F, 0x00,
- 0x80, 0xFB, 0x03,
- 0xC0, 0x7B, 0x07,
- 0xC0, 0x39, 0x07,
- 0xE0, 0x38, 0x0E,
- 0xF0, 0x38, 0x0E,
- 0x78, 0x38, 0x0E,
- 0x38, 0x30, 0x07,
- 0x3C, 0x70, 0x07,
- 0xFC, 0xE7, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l26_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x07, 0xFC, 0x00,
- 0xF8, 0x0F, 0xFF, 0x01,
- 0x3C, 0x1F, 0xEF, 0x01,
- 0x1C, 0x9E, 0xC7, 0x03,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1E, 0x9C, 0x03, 0x00,
- 0x00, 0xDC, 0x03, 0x00,
- 0x00, 0xDE, 0x7F, 0x00,
- 0x00, 0xDE, 0xFF, 0x01,
- 0x00, 0xCF, 0xEF, 0x01,
- 0x80, 0xCF, 0xC7, 0x03,
- 0xC0, 0xC7, 0x83, 0x03,
- 0xC0, 0xC3, 0x83, 0x03,
- 0xE0, 0xC1, 0x83, 0x03,
- 0xF0, 0xC0, 0x83, 0x03,
- 0x78, 0x80, 0x83, 0x03,
- 0x3C, 0x80, 0xC7, 0x03,
- 0x3C, 0x80, 0xEF, 0x01,
- 0xFE, 0x1F, 0xFF, 0x01,
- 0xFE, 0x1F, 0x7C, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l27.xbm b/app/bin/bitmaps/l27.xbm
deleted file mode 100644
index d611f65..0000000
--- a/app/bin/bitmaps/l27.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l27_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x3F,
- 0xFC, 0x38,
- 0xCC, 0x18,
- 0xC0, 0x1C,
- 0xE0, 0x0C,
- 0x70, 0x0E,
- 0x38, 0x0E,
- 0x1C, 0x06,
- 0xFC, 0x06,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l27_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xF9, 0x0F,
- 0xB8, 0x03, 0x0F,
- 0x1C, 0x03, 0x07,
- 0x1C, 0x87, 0x03,
- 0x00, 0x87, 0x03,
- 0x00, 0xC7, 0x01,
- 0x80, 0xC3, 0x01,
- 0xC0, 0xC3, 0x01,
- 0xC0, 0xE1, 0x00,
- 0xE0, 0xE0, 0x00,
- 0xF0, 0xE0, 0x00,
- 0x78, 0xE0, 0x00,
- 0x38, 0xE0, 0x00,
- 0x3C, 0x70, 0x00,
- 0xFC, 0x77, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l27_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0xC7, 0xFF, 0x03,
- 0xF8, 0xCF, 0xFF, 0x03,
- 0x3C, 0x1F, 0xC0, 0x03,
- 0x1C, 0x1E, 0xE0, 0x01,
- 0x1E, 0x1C, 0xE0, 0x01,
- 0x1E, 0x1C, 0xF0, 0x00,
- 0x00, 0x1C, 0xF0, 0x00,
- 0x00, 0x1E, 0x78, 0x00,
- 0x00, 0x1E, 0x78, 0x00,
- 0x00, 0x0F, 0x38, 0x00,
- 0x80, 0x0F, 0x3C, 0x00,
- 0xC0, 0x07, 0x3C, 0x00,
- 0xC0, 0x03, 0x1C, 0x00,
- 0xE0, 0x01, 0x1E, 0x00,
- 0xF0, 0x00, 0x1E, 0x00,
- 0x78, 0x00, 0x1E, 0x00,
- 0x3C, 0x00, 0x1E, 0x00,
- 0x3C, 0x00, 0x0E, 0x00,
- 0xFE, 0x1F, 0x0E, 0x00,
- 0xFE, 0x1F, 0x0E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l28.xbm b/app/bin/bitmaps/l28.xbm
deleted file mode 100644
index d5ae122..0000000
--- a/app/bin/bitmaps/l28.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l28_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0xCC, 0x3B,
- 0xC0, 0x3F,
- 0xE0, 0x1E,
- 0x70, 0x3F,
- 0x38, 0x33,
- 0x1C, 0x3F,
- 0xFC, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l28_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x1C, 0x33, 0x07,
- 0x1C, 0x3F, 0x07,
- 0x00, 0x3F, 0x07,
- 0x00, 0x3F, 0x07,
- 0x80, 0x73, 0x07,
- 0xC0, 0xE3, 0x03,
- 0xC0, 0x71, 0x07,
- 0xE0, 0x38, 0x06,
- 0xF0, 0x38, 0x0E,
- 0x78, 0x38, 0x0E,
- 0x38, 0x38, 0x06,
- 0x3C, 0x70, 0x07,
- 0xFC, 0xE7, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l28_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x07, 0x7E, 0x00,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0x3C, 0x9F, 0xEF, 0x01,
- 0x1C, 0x9E, 0xC7, 0x01,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x00, 0x9C, 0xC7, 0x01,
- 0x00, 0x1E, 0xEF, 0x01,
- 0x00, 0x1E, 0xFE, 0x00,
- 0x00, 0x0F, 0xFF, 0x00,
- 0x80, 0x8F, 0xE7, 0x01,
- 0xC0, 0x87, 0xC3, 0x03,
- 0xC0, 0xC3, 0x83, 0x03,
- 0xE0, 0xC1, 0x83, 0x03,
- 0xF0, 0xC0, 0x83, 0x03,
- 0x78, 0xC0, 0x83, 0x03,
- 0x3C, 0x80, 0xC3, 0x03,
- 0x3C, 0x80, 0xE7, 0x01,
- 0xFE, 0x1F, 0xFF, 0x01,
- 0xFE, 0x1F, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l29.xbm b/app/bin/bitmaps/l29.xbm
deleted file mode 100644
index 7b23c07..0000000
--- a/app/bin/bitmaps/l29.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l29_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0xCC, 0x33,
- 0xC0, 0x33,
- 0xE0, 0x3F,
- 0x70, 0x3E,
- 0x38, 0x30,
- 0x1C, 0x3B,
- 0xFC, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l29_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x01,
- 0xB8, 0x73, 0x07,
- 0x1C, 0x3B, 0x07,
- 0x1C, 0x3F, 0x06,
- 0x00, 0x3F, 0x0E,
- 0x00, 0x3F, 0x0E,
- 0x80, 0x3B, 0x0F,
- 0xC0, 0x73, 0x0F,
- 0xC0, 0xE1, 0x0F,
- 0xE0, 0x00, 0x0E,
- 0xF0, 0x00, 0x06,
- 0x78, 0x00, 0x06,
- 0x38, 0x38, 0x07,
- 0x3C, 0x70, 0x03,
- 0xFC, 0xF7, 0x01,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l29_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x07, 0x7E, 0x00,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0x3C, 0x9F, 0xEF, 0x01,
- 0x1C, 0x9E, 0xC7, 0x01,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x00, 0xDE, 0x83, 0x03,
- 0x00, 0xDE, 0x83, 0x03,
- 0x00, 0x8F, 0xC3, 0x03,
- 0x80, 0x8F, 0xE7, 0x03,
- 0xC0, 0x07, 0xFF, 0x03,
- 0xC0, 0x03, 0xFE, 0x03,
- 0xE0, 0x01, 0x80, 0x03,
- 0xF0, 0x00, 0x80, 0x03,
- 0x78, 0x80, 0xC3, 0x03,
- 0x3C, 0x80, 0xC3, 0x01,
- 0x3C, 0x80, 0xE7, 0x01,
- 0xFE, 0x1F, 0xFF, 0x00,
- 0xFE, 0x1F, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l3.xbm b/app/bin/bitmaps/l3.xbm
deleted file mode 100644
index 070b9bb..0000000
--- a/app/bin/bitmaps/l3.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l3_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xC0, 0x03,
- 0x60, 0x07,
- 0x00, 0x07,
- 0x00, 0x03,
- 0x80, 0x07,
- 0x00, 0x07,
- 0x60, 0x06,
- 0xE0, 0x07,
- 0xC0, 0x03,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l3_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x1F, 0x00,
- 0x80, 0x3B, 0x00,
- 0xC0, 0x39, 0x00,
- 0x00, 0x38, 0x00,
- 0x00, 0x38, 0x00,
- 0x00, 0x38, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x3E, 0x00,
- 0x00, 0x38, 0x00,
- 0x00, 0x70, 0x00,
- 0x00, 0x70, 0x00,
- 0xC0, 0x71, 0x00,
- 0xC0, 0x39, 0x00,
- 0x80, 0x3B, 0x00,
- 0x00, 0x1F, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l3_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xFC, 0x00, 0x00,
- 0x00, 0xFE, 0x01, 0x00,
- 0x00, 0xCF, 0x03, 0x00,
- 0x00, 0x8F, 0x03, 0x00,
- 0x00, 0x87, 0x07, 0x00,
- 0x00, 0x80, 0x07, 0x00,
- 0x00, 0x80, 0x03, 0x00,
- 0x00, 0xC0, 0x03, 0x00,
- 0x00, 0xF8, 0x01, 0x00,
- 0x00, 0xF8, 0x01, 0x00,
- 0x00, 0xC0, 0x03, 0x00,
- 0x00, 0x80, 0x07, 0x00,
- 0x00, 0x00, 0x07, 0x00,
- 0x00, 0x00, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x00, 0x8F, 0x07, 0x00,
- 0x00, 0xCF, 0x03, 0x00,
- 0x00, 0xFE, 0x03, 0x00,
- 0x00, 0xFC, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l30.xbm b/app/bin/bitmaps/l30.xbm
deleted file mode 100644
index 324f979..0000000
--- a/app/bin/bitmaps/l30.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l30_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xEC, 0x3F,
- 0xE0, 0x33,
- 0x60, 0x33,
- 0xF0, 0x33,
- 0xE0, 0x33,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l30_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x9C, 0x33, 0x07,
- 0x80, 0x3B, 0x06,
- 0x80, 0x3B, 0x06,
- 0x80, 0x3B, 0x0E,
- 0xC0, 0x39, 0x0E,
- 0xE0, 0x3B, 0x0E,
- 0x80, 0x3B, 0x0E,
- 0x00, 0x3F, 0x0E,
- 0x00, 0x3F, 0x06,
- 0x1C, 0x3F, 0x06,
- 0x9C, 0x33, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l30_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0xF8, 0x07, 0xFF, 0x00,
- 0x3C, 0x0F, 0xEF, 0x01,
- 0x3C, 0x8E, 0xC7, 0x01,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x00, 0x9E, 0xC3, 0x03,
- 0x00, 0xCE, 0x83, 0x03,
- 0x00, 0xCF, 0x83, 0x03,
- 0xE0, 0xC7, 0x83, 0x03,
- 0xE0, 0xC7, 0x83, 0x03,
- 0x00, 0xCF, 0x83, 0x03,
- 0x00, 0xDE, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x3C, 0x9E, 0xC7, 0x01,
- 0x3C, 0x0F, 0xEF, 0x01,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l31.xbm b/app/bin/bitmaps/l31.xbm
deleted file mode 100644
index e379ca6..0000000
--- a/app/bin/bitmaps/l31.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l31_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1C,
- 0xEC, 0x1E,
- 0xE0, 0x1F,
- 0x60, 0x1C,
- 0xF0, 0x1C,
- 0xE0, 0x1C,
- 0xCC, 0x1C,
- 0xFC, 0x1C,
- 0x78, 0x1C,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l31_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0x81, 0x03,
- 0xB8, 0xC3, 0x03,
- 0x9C, 0xC3, 0x03,
- 0x80, 0xE3, 0x03,
- 0x80, 0xB3, 0x03,
- 0x80, 0x83, 0x03,
- 0xC0, 0x81, 0x03,
- 0xE0, 0x83, 0x03,
- 0x80, 0x83, 0x03,
- 0x00, 0x87, 0x03,
- 0x00, 0x87, 0x03,
- 0x1C, 0x87, 0x03,
- 0x9C, 0x83, 0x03,
- 0xB8, 0x83, 0x03,
- 0xF0, 0x81, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l31_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0x70, 0x00,
- 0xF8, 0x07, 0x70, 0x00,
- 0x3C, 0x0F, 0x78, 0x00,
- 0x3C, 0x0E, 0x7C, 0x00,
- 0x1C, 0x1E, 0x7E, 0x00,
- 0x00, 0x1E, 0x7F, 0x00,
- 0x00, 0x0E, 0x73, 0x00,
- 0x00, 0x0F, 0x70, 0x00,
- 0xE0, 0x07, 0x70, 0x00,
- 0xE0, 0x07, 0x70, 0x00,
- 0x00, 0x0F, 0x70, 0x00,
- 0x00, 0x1E, 0x70, 0x00,
- 0x00, 0x1C, 0x70, 0x00,
- 0x00, 0x1C, 0x70, 0x00,
- 0x1E, 0x1C, 0x70, 0x00,
- 0x1E, 0x1C, 0x70, 0x00,
- 0x3C, 0x1E, 0x70, 0x00,
- 0x3C, 0x0F, 0x70, 0x00,
- 0xF8, 0x0F, 0x70, 0x00,
- 0xF0, 0x03, 0x70, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l32.xbm b/app/bin/bitmaps/l32.xbm
deleted file mode 100644
index 3cbaaac..0000000
--- a/app/bin/bitmaps/l32.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l32_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xEC, 0x3F,
- 0xE0, 0x33,
- 0x60, 0x30,
- 0xF0, 0x38,
- 0xE0, 0x1C,
- 0xCC, 0x0E,
- 0xFC, 0x07,
- 0x78, 0x3F,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l32_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x9C, 0x3B, 0x06,
- 0x80, 0x3B, 0x0E,
- 0x80, 0x03, 0x0E,
- 0x80, 0x03, 0x0E,
- 0xC0, 0x01, 0x07,
- 0xE0, 0x83, 0x07,
- 0x80, 0x83, 0x03,
- 0x00, 0xC7, 0x01,
- 0x00, 0xE7, 0x01,
- 0x1C, 0xF7, 0x00,
- 0x9C, 0x73, 0x00,
- 0xB8, 0x7B, 0x00,
- 0xF0, 0xF9, 0x0F,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l32_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0xFE, 0x00,
- 0xF8, 0x07, 0xFF, 0x01,
- 0x3C, 0x8F, 0xE7, 0x03,
- 0x3C, 0x8E, 0xC3, 0x03,
- 0x1C, 0xDE, 0x83, 0x03,
- 0x00, 0xDE, 0x83, 0x03,
- 0x00, 0x0E, 0x80, 0x03,
- 0x00, 0x0F, 0xC0, 0x03,
- 0xE0, 0x07, 0xC0, 0x03,
- 0xE0, 0x07, 0xE0, 0x01,
- 0x00, 0x0F, 0xF0, 0x01,
- 0x00, 0x1E, 0xF8, 0x00,
- 0x00, 0x1C, 0x78, 0x00,
- 0x00, 0x1C, 0x3C, 0x00,
- 0x1E, 0x1C, 0x1E, 0x00,
- 0x1E, 0x1C, 0x0F, 0x00,
- 0x3C, 0x9E, 0x07, 0x00,
- 0x3C, 0x8F, 0x07, 0x00,
- 0xF8, 0xCF, 0xFF, 0x03,
- 0xF0, 0xC3, 0xFF, 0x03,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l33.xbm b/app/bin/bitmaps/l33.xbm
deleted file mode 100644
index 8d318c6..0000000
--- a/app/bin/bitmaps/l33.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l33_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xEC, 0x3B,
- 0xE0, 0x38,
- 0x60, 0x18,
- 0xF0, 0x3C,
- 0xE0, 0x38,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l33_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x9C, 0x3B, 0x07,
- 0x80, 0x03, 0x07,
- 0x80, 0x03, 0x07,
- 0x80, 0x03, 0x07,
- 0xC0, 0x81, 0x03,
- 0xE0, 0xC3, 0x07,
- 0x80, 0x03, 0x07,
- 0x00, 0x07, 0x0E,
- 0x00, 0x07, 0x0E,
- 0x1C, 0x3F, 0x0E,
- 0x9C, 0x3B, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l33_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0xF8, 0x07, 0xFF, 0x00,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0x3C, 0x8E, 0xC7, 0x01,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x00, 0x1E, 0xC0, 0x03,
- 0x00, 0x0E, 0xC0, 0x01,
- 0x00, 0x0F, 0xE0, 0x01,
- 0xE0, 0x07, 0xFC, 0x00,
- 0xE0, 0x07, 0xFC, 0x00,
- 0x00, 0x0F, 0xE0, 0x01,
- 0x00, 0x1E, 0xC0, 0x03,
- 0x00, 0x1C, 0x80, 0x03,
- 0x00, 0x1C, 0x80, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x3C, 0x9E, 0xC7, 0x03,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x0F, 0xFF, 0x01,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l34.xbm b/app/bin/bitmaps/l34.xbm
deleted file mode 100644
index 4e90020..0000000
--- a/app/bin/bitmaps/l34.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l34_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1C,
- 0xEC, 0x1C,
- 0xE0, 0x1E,
- 0x60, 0x1E,
- 0xF0, 0x1F,
- 0xE0, 0x1B,
- 0xCC, 0x3F,
- 0xFC, 0x18,
- 0x78, 0x18,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l34_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0x81, 0x03,
- 0xB8, 0x83, 0x03,
- 0x9C, 0xC3, 0x03,
- 0x80, 0xC3, 0x03,
- 0x80, 0xE3, 0x03,
- 0x80, 0xE3, 0x03,
- 0xC0, 0xF1, 0x03,
- 0xE0, 0xB3, 0x03,
- 0x80, 0xBB, 0x03,
- 0x00, 0x9F, 0x03,
- 0x00, 0xFF, 0x0F,
- 0x1C, 0x87, 0x03,
- 0x9C, 0x83, 0x03,
- 0xB8, 0x83, 0x03,
- 0xF0, 0x81, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l34_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0xF0, 0x00,
- 0xF8, 0x07, 0xF0, 0x00,
- 0x3C, 0x0F, 0xF8, 0x00,
- 0x3C, 0x0E, 0xF8, 0x00,
- 0x1C, 0x1E, 0xFC, 0x00,
- 0x00, 0x1E, 0xFC, 0x00,
- 0x00, 0x0E, 0xFE, 0x00,
- 0x00, 0x0F, 0xEE, 0x00,
- 0xE0, 0x07, 0xEF, 0x00,
- 0xE0, 0x87, 0xE7, 0x00,
- 0x00, 0x8F, 0xE7, 0x00,
- 0x00, 0xDE, 0xE3, 0x00,
- 0x00, 0xDC, 0xE1, 0x00,
- 0x00, 0xFC, 0xFF, 0x03,
- 0x1E, 0xFC, 0xFF, 0x03,
- 0x1E, 0x1C, 0xE0, 0x00,
- 0x3C, 0x1E, 0xE0, 0x00,
- 0x3C, 0x0F, 0xE0, 0x00,
- 0xF8, 0x0F, 0xE0, 0x00,
- 0xF0, 0x03, 0xE0, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l35.xbm b/app/bin/bitmaps/l35.xbm
deleted file mode 100644
index f8de169..0000000
--- a/app/bin/bitmaps/l35.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l35_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x3F,
- 0xEC, 0x07,
- 0xE0, 0x07,
- 0x60, 0x1F,
- 0xF0, 0x3B,
- 0xE0, 0x30,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l35_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xF1, 0x07,
- 0xB8, 0x73, 0x00,
- 0x9C, 0x73, 0x00,
- 0x80, 0x33, 0x00,
- 0x80, 0x33, 0x00,
- 0x80, 0xFB, 0x03,
- 0xC0, 0x79, 0x07,
- 0xE0, 0x3B, 0x07,
- 0x80, 0x03, 0x0E,
- 0x00, 0x07, 0x0E,
- 0x00, 0x07, 0x0E,
- 0x1C, 0x3F, 0x06,
- 0x9C, 0x3B, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l35_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0xFF, 0x03,
- 0xF8, 0x07, 0xFF, 0x03,
- 0x3C, 0x0F, 0x07, 0x00,
- 0x3C, 0x0E, 0x07, 0x00,
- 0x1C, 0x9E, 0x07, 0x00,
- 0x00, 0x9E, 0x07, 0x00,
- 0x00, 0x8E, 0x7F, 0x00,
- 0x00, 0x8F, 0xFF, 0x01,
- 0xE0, 0x87, 0xE7, 0x01,
- 0xE0, 0x87, 0xC3, 0x03,
- 0x00, 0x0F, 0xC0, 0x03,
- 0x00, 0x1E, 0x80, 0x03,
- 0x00, 0x1C, 0x80, 0x03,
- 0x00, 0x1C, 0x80, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0xC3, 0x03,
- 0x3C, 0x9E, 0xC3, 0x03,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l36.xbm b/app/bin/bitmaps/l36.xbm
deleted file mode 100644
index c3c19eb..0000000
--- a/app/bin/bitmaps/l36.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l36_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xEC, 0x3F,
- 0xE0, 0x03,
- 0x60, 0x1F,
- 0xF0, 0x3F,
- 0xE0, 0x33,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l36_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x9C, 0x33, 0x07,
- 0x80, 0x3B, 0x00,
- 0x80, 0x3B, 0x00,
- 0x80, 0x3B, 0x00,
- 0xC0, 0xF9, 0x03,
- 0xE0, 0x7B, 0x07,
- 0x80, 0x3B, 0x07,
- 0x00, 0x3F, 0x0E,
- 0x00, 0x3F, 0x0E,
- 0x1C, 0x3F, 0x0E,
- 0x9C, 0x33, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l36_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0xFC, 0x00,
- 0xF8, 0x07, 0xFF, 0x01,
- 0x3C, 0x0F, 0xEF, 0x01,
- 0x3C, 0x8E, 0xC7, 0x03,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x00, 0x9E, 0x03, 0x00,
- 0x00, 0xCE, 0x03, 0x00,
- 0x00, 0xCF, 0x7F, 0x00,
- 0xE0, 0xC7, 0xFF, 0x01,
- 0xE0, 0xC7, 0xEF, 0x01,
- 0x00, 0xCF, 0xC7, 0x03,
- 0x00, 0xDE, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0x9C, 0x83, 0x03,
- 0x3C, 0x9E, 0xC7, 0x03,
- 0x3C, 0x8F, 0xEF, 0x01,
- 0xF8, 0x0F, 0xFF, 0x01,
- 0xF0, 0x03, 0x7C, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l37.xbm b/app/bin/bitmaps/l37.xbm
deleted file mode 100644
index df579f5..0000000
--- a/app/bin/bitmaps/l37.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l37_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x3F,
- 0xEC, 0x38,
- 0xE0, 0x18,
- 0x60, 0x1C,
- 0xF0, 0x0C,
- 0xE0, 0x0E,
- 0xCC, 0x0E,
- 0xFC, 0x06,
- 0x78, 0x06,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l37_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xF9, 0x0F,
- 0xB8, 0x03, 0x0F,
- 0x9C, 0x03, 0x07,
- 0x80, 0x83, 0x03,
- 0x80, 0x83, 0x03,
- 0x80, 0xC3, 0x01,
- 0xC0, 0xC1, 0x01,
- 0xE0, 0xC3, 0x01,
- 0x80, 0xE3, 0x00,
- 0x00, 0xE7, 0x00,
- 0x00, 0xE7, 0x00,
- 0x1C, 0xE7, 0x00,
- 0x9C, 0xE3, 0x00,
- 0xB8, 0x73, 0x00,
- 0xF0, 0x71, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l37_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0xC3, 0xFF, 0x03,
- 0xF8, 0xC7, 0xFF, 0x03,
- 0x3C, 0x0F, 0xC0, 0x03,
- 0x3C, 0x0E, 0xE0, 0x01,
- 0x1C, 0x1E, 0xE0, 0x01,
- 0x00, 0x1E, 0xF0, 0x00,
- 0x00, 0x0E, 0xF0, 0x00,
- 0x00, 0x0F, 0x78, 0x00,
- 0xE0, 0x07, 0x78, 0x00,
- 0xE0, 0x07, 0x38, 0x00,
- 0x00, 0x0F, 0x3C, 0x00,
- 0x00, 0x1E, 0x3C, 0x00,
- 0x00, 0x1C, 0x1C, 0x00,
- 0x00, 0x1C, 0x1E, 0x00,
- 0x1E, 0x1C, 0x1E, 0x00,
- 0x1E, 0x1C, 0x1E, 0x00,
- 0x3C, 0x1E, 0x1E, 0x00,
- 0x3C, 0x0F, 0x0E, 0x00,
- 0xF8, 0x0F, 0x0E, 0x00,
- 0xF0, 0x03, 0x0E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l38.xbm b/app/bin/bitmaps/l38.xbm
deleted file mode 100644
index 424b263..0000000
--- a/app/bin/bitmaps/l38.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l38_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xEC, 0x3F,
- 0xE0, 0x3B,
- 0x60, 0x3F,
- 0xF0, 0x1E,
- 0xE0, 0x3F,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l38_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x9C, 0x33, 0x07,
- 0x80, 0x3B, 0x07,
- 0x80, 0x3B, 0x07,
- 0x80, 0x3B, 0x07,
- 0xC0, 0x71, 0x07,
- 0xE0, 0xE3, 0x03,
- 0x80, 0x73, 0x07,
- 0x00, 0x3F, 0x06,
- 0x00, 0x3F, 0x0E,
- 0x1C, 0x3F, 0x0E,
- 0x9C, 0x3B, 0x06,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l38_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0xF8, 0x07, 0xFF, 0x00,
- 0x3C, 0x8F, 0xEF, 0x01,
- 0x3C, 0x8E, 0xC7, 0x01,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x00, 0x9E, 0xC3, 0x03,
- 0x00, 0x8E, 0xC7, 0x01,
- 0x00, 0x0F, 0xEF, 0x01,
- 0xE0, 0x07, 0xFE, 0x00,
- 0xE0, 0x07, 0xFF, 0x00,
- 0x00, 0x8F, 0xE7, 0x01,
- 0x00, 0x9E, 0xC3, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x3C, 0x9E, 0xC3, 0x03,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x0F, 0xFF, 0x01,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l39.xbm b/app/bin/bitmaps/l39.xbm
deleted file mode 100644
index 51d14ab..0000000
--- a/app/bin/bitmaps/l39.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l39_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xEC, 0x3F,
- 0xE0, 0x33,
- 0x60, 0x33,
- 0xF0, 0x3F,
- 0xE0, 0x3E,
- 0xCC, 0x30,
- 0xFC, 0x3B,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l39_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x01,
- 0xB8, 0x73, 0x07,
- 0x9C, 0x3B, 0x07,
- 0x80, 0x3B, 0x06,
- 0x80, 0x3B, 0x0E,
- 0x80, 0x3B, 0x0E,
- 0xC0, 0x39, 0x0F,
- 0xE0, 0x73, 0x0F,
- 0x80, 0xE3, 0x0F,
- 0x00, 0x07, 0x0E,
- 0x00, 0x07, 0x06,
- 0x1C, 0x07, 0x06,
- 0x9C, 0x3B, 0x07,
- 0xB8, 0x73, 0x03,
- 0xF0, 0xF1, 0x01,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l39_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0xF8, 0x07, 0xFF, 0x00,
- 0x3C, 0x8F, 0xEF, 0x01,
- 0x3C, 0x8E, 0xC7, 0x01,
- 0x1C, 0xDE, 0x83, 0x03,
- 0x00, 0xDE, 0x83, 0x03,
- 0x00, 0xCE, 0x83, 0x03,
- 0x00, 0xCF, 0x83, 0x03,
- 0xE0, 0xC7, 0x83, 0x03,
- 0xE0, 0x87, 0xC3, 0x03,
- 0x00, 0x8F, 0xE7, 0x03,
- 0x00, 0x1E, 0xFF, 0x03,
- 0x00, 0x1C, 0xFE, 0x03,
- 0x00, 0x1C, 0x80, 0x03,
- 0x1E, 0x1C, 0x80, 0x03,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x3C, 0x9E, 0xC3, 0x01,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l4.xbm b/app/bin/bitmaps/l4.xbm
deleted file mode 100644
index 411ad63..0000000
--- a/app/bin/bitmaps/l4.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l4_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x80, 0x03,
- 0x80, 0x03,
- 0xC0, 0x03,
- 0xC0, 0x03,
- 0xE0, 0x03,
- 0x60, 0x03,
- 0xF0, 0x07,
- 0x00, 0x03,
- 0x00, 0x03,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l4_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x1E, 0x00,
- 0x00, 0x1E, 0x00,
- 0x00, 0x1F, 0x00,
- 0x00, 0x1F, 0x00,
- 0x80, 0x1F, 0x00,
- 0x80, 0x1D, 0x00,
- 0xC0, 0x1D, 0x00,
- 0xC0, 0x1C, 0x00,
- 0xE0, 0x7F, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l4_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xE0, 0x01, 0x00,
- 0x00, 0xE0, 0x01, 0x00,
- 0x00, 0xF0, 0x01, 0x00,
- 0x00, 0xF0, 0x01, 0x00,
- 0x00, 0xF8, 0x01, 0x00,
- 0x00, 0xF8, 0x01, 0x00,
- 0x00, 0xFC, 0x01, 0x00,
- 0x00, 0xDC, 0x01, 0x00,
- 0x00, 0xDE, 0x01, 0x00,
- 0x00, 0xCF, 0x01, 0x00,
- 0x00, 0xCF, 0x01, 0x00,
- 0x80, 0xC7, 0x01, 0x00,
- 0x80, 0xC3, 0x01, 0x00,
- 0xC0, 0xFF, 0x07, 0x00,
- 0xC0, 0xFF, 0x07, 0x00,
- 0x00, 0xC0, 0x01, 0x00,
- 0x00, 0xC0, 0x01, 0x00,
- 0x00, 0xC0, 0x01, 0x00,
- 0x00, 0xC0, 0x01, 0x00,
- 0x00, 0xC0, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l40.xbm b/app/bin/bitmaps/l40.xbm
deleted file mode 100644
index 8ee8e0f..0000000
--- a/app/bin/bitmaps/l40.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l40_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x1E,
- 0x70, 0x3F,
- 0x78, 0x33,
- 0x78, 0x33,
- 0x7C, 0x33,
- 0x6C, 0x33,
- 0xFE, 0x33,
- 0x60, 0x3F,
- 0x60, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l40_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0xE1, 0x03,
- 0xC0, 0x71, 0x07,
- 0xE0, 0x31, 0x07,
- 0xE0, 0x39, 0x06,
- 0xF0, 0x39, 0x06,
- 0xF0, 0x39, 0x0E,
- 0xF8, 0x39, 0x0E,
- 0xD8, 0x39, 0x0E,
- 0xDC, 0x39, 0x0E,
- 0xCC, 0x39, 0x0E,
- 0xFE, 0x3F, 0x06,
- 0xC0, 0x39, 0x06,
- 0xC0, 0x31, 0x07,
- 0xC0, 0x71, 0x07,
- 0xC0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l40_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x07, 0x7E, 0x00,
- 0x80, 0x07, 0xFF, 0x00,
- 0xC0, 0x07, 0xEF, 0x01,
- 0xC0, 0x87, 0xC7, 0x01,
- 0xE0, 0x87, 0xC3, 0x03,
- 0xE0, 0x87, 0xC3, 0x03,
- 0xF0, 0xC7, 0x83, 0x03,
- 0x70, 0xC7, 0x83, 0x03,
- 0x78, 0xC7, 0x83, 0x03,
- 0x3C, 0xC7, 0x83, 0x03,
- 0x3C, 0xC7, 0x83, 0x03,
- 0x1E, 0xC7, 0x83, 0x03,
- 0x0E, 0xC7, 0x83, 0x03,
- 0xFF, 0xDF, 0x83, 0x03,
- 0xFF, 0x9F, 0xC3, 0x03,
- 0x00, 0x87, 0xC3, 0x03,
- 0x00, 0x87, 0xC7, 0x01,
- 0x00, 0x07, 0xEF, 0x01,
- 0x00, 0x07, 0xFF, 0x00,
- 0x00, 0x07, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l41.xbm b/app/bin/bitmaps/l41.xbm
deleted file mode 100644
index 8535fda..0000000
--- a/app/bin/bitmaps/l41.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l41_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x1C,
- 0x70, 0x1E,
- 0x78, 0x1F,
- 0x78, 0x1C,
- 0x7C, 0x1C,
- 0x6C, 0x1C,
- 0xFE, 0x1C,
- 0x60, 0x1C,
- 0x60, 0x1C,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l41_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0x81, 0x03,
- 0xC0, 0xC1, 0x03,
- 0xE0, 0xC1, 0x03,
- 0xE0, 0xE1, 0x03,
- 0xF0, 0xB1, 0x03,
- 0xF0, 0x81, 0x03,
- 0xF8, 0x81, 0x03,
- 0xD8, 0x81, 0x03,
- 0xDC, 0x81, 0x03,
- 0xCC, 0x81, 0x03,
- 0xFE, 0x87, 0x03,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l41_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x07, 0x70, 0x00,
- 0x80, 0x07, 0x70, 0x00,
- 0xC0, 0x07, 0x78, 0x00,
- 0xC0, 0x07, 0x7C, 0x00,
- 0xE0, 0x07, 0x7E, 0x00,
- 0xE0, 0x07, 0x7F, 0x00,
- 0xF0, 0x07, 0x73, 0x00,
- 0x70, 0x07, 0x70, 0x00,
- 0x78, 0x07, 0x70, 0x00,
- 0x3C, 0x07, 0x70, 0x00,
- 0x3C, 0x07, 0x70, 0x00,
- 0x1E, 0x07, 0x70, 0x00,
- 0x0E, 0x07, 0x70, 0x00,
- 0xFF, 0x1F, 0x70, 0x00,
- 0xFF, 0x1F, 0x70, 0x00,
- 0x00, 0x07, 0x70, 0x00,
- 0x00, 0x07, 0x70, 0x00,
- 0x00, 0x07, 0x70, 0x00,
- 0x00, 0x07, 0x70, 0x00,
- 0x00, 0x07, 0x70, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l42.xbm b/app/bin/bitmaps/l42.xbm
deleted file mode 100644
index 1b1b742..0000000
--- a/app/bin/bitmaps/l42.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l42_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x1E,
- 0x70, 0x3F,
- 0x78, 0x33,
- 0x78, 0x30,
- 0x7C, 0x38,
- 0x6C, 0x1C,
- 0xFE, 0x0E,
- 0x60, 0x07,
- 0x60, 0x3F,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l42_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0xE1, 0x03,
- 0xC0, 0x71, 0x07,
- 0xE0, 0x39, 0x06,
- 0xE0, 0x39, 0x0E,
- 0xF0, 0x01, 0x0E,
- 0xF0, 0x01, 0x0E,
- 0xF8, 0x01, 0x07,
- 0xD8, 0x81, 0x07,
- 0xDC, 0x81, 0x03,
- 0xCC, 0xC1, 0x01,
- 0xFE, 0xE7, 0x01,
- 0xC0, 0xF1, 0x00,
- 0xC0, 0x71, 0x00,
- 0xC0, 0x79, 0x00,
- 0xC0, 0xF9, 0x0F,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l42_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x07, 0xFE, 0x00,
- 0x80, 0x07, 0xFF, 0x01,
- 0xC0, 0x87, 0xE7, 0x03,
- 0xC0, 0x87, 0xC3, 0x03,
- 0xE0, 0xC7, 0x83, 0x03,
- 0xE0, 0xC7, 0x83, 0x03,
- 0xF0, 0x07, 0x80, 0x03,
- 0x70, 0x07, 0xC0, 0x03,
- 0x78, 0x07, 0xC0, 0x03,
- 0x3C, 0x07, 0xE0, 0x01,
- 0x3C, 0x07, 0xF0, 0x01,
- 0x1E, 0x07, 0xF8, 0x00,
- 0x0E, 0x07, 0x78, 0x00,
- 0xFF, 0x1F, 0x3C, 0x00,
- 0xFF, 0x1F, 0x1E, 0x00,
- 0x00, 0x07, 0x0F, 0x00,
- 0x00, 0x87, 0x07, 0x00,
- 0x00, 0x87, 0x07, 0x00,
- 0x00, 0xC7, 0xFF, 0x03,
- 0x00, 0xC7, 0xFF, 0x03,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l43.xbm b/app/bin/bitmaps/l43.xbm
deleted file mode 100644
index 1512650..0000000
--- a/app/bin/bitmaps/l43.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l43_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x1E,
- 0x70, 0x3B,
- 0x78, 0x38,
- 0x78, 0x18,
- 0x7C, 0x3C,
- 0x6C, 0x38,
- 0xFE, 0x33,
- 0x60, 0x3F,
- 0x60, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l43_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0xE1, 0x03,
- 0xC0, 0x71, 0x07,
- 0xE0, 0x39, 0x07,
- 0xE0, 0x01, 0x07,
- 0xF0, 0x01, 0x07,
- 0xF0, 0x01, 0x07,
- 0xF8, 0x81, 0x03,
- 0xD8, 0xC1, 0x07,
- 0xDC, 0x01, 0x07,
- 0xCC, 0x01, 0x0E,
- 0xFE, 0x07, 0x0E,
- 0xC0, 0x39, 0x0E,
- 0xC0, 0x39, 0x07,
- 0xC0, 0x71, 0x07,
- 0xC0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l43_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x07, 0x7E, 0x00,
- 0x80, 0x07, 0xFF, 0x00,
- 0xC0, 0x87, 0xE7, 0x01,
- 0xC0, 0x87, 0xC7, 0x01,
- 0xE0, 0x87, 0xC3, 0x03,
- 0xE0, 0x07, 0xC0, 0x03,
- 0xF0, 0x07, 0xC0, 0x01,
- 0x70, 0x07, 0xE0, 0x01,
- 0x78, 0x07, 0xFC, 0x00,
- 0x3C, 0x07, 0xFC, 0x00,
- 0x3C, 0x07, 0xE0, 0x01,
- 0x1E, 0x07, 0xC0, 0x03,
- 0x0E, 0x07, 0x80, 0x03,
- 0xFF, 0x1F, 0x80, 0x03,
- 0xFF, 0xDF, 0x83, 0x03,
- 0x00, 0xC7, 0x83, 0x03,
- 0x00, 0x87, 0xC7, 0x03,
- 0x00, 0x87, 0xE7, 0x01,
- 0x00, 0x07, 0xFF, 0x01,
- 0x00, 0x07, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l44.xbm b/app/bin/bitmaps/l44.xbm
deleted file mode 100644
index 7a96e04..0000000
--- a/app/bin/bitmaps/l44.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l44_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x1C,
- 0x70, 0x1C,
- 0x78, 0x1E,
- 0x78, 0x1E,
- 0x7C, 0x1F,
- 0x6C, 0x1B,
- 0xFE, 0x3F,
- 0x60, 0x18,
- 0x60, 0x18,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l44_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0xE0, 0xC1, 0x03,
- 0xE0, 0xC1, 0x03,
- 0xF0, 0xE1, 0x03,
- 0xF0, 0xE1, 0x03,
- 0xF8, 0xF1, 0x03,
- 0xD8, 0xB1, 0x03,
- 0xDC, 0xB9, 0x03,
- 0xCC, 0x99, 0x03,
- 0xFE, 0xFF, 0x0F,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l44_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x07, 0xF0, 0x00,
- 0x80, 0x07, 0xF0, 0x00,
- 0xC0, 0x07, 0xF8, 0x00,
- 0xC0, 0x07, 0xF8, 0x00,
- 0xE0, 0x07, 0xFC, 0x00,
- 0xE0, 0x07, 0xFC, 0x00,
- 0xF0, 0x07, 0xFE, 0x00,
- 0x70, 0x07, 0xEE, 0x00,
- 0x78, 0x07, 0xEF, 0x00,
- 0x3C, 0x87, 0xE7, 0x00,
- 0x3C, 0x87, 0xE7, 0x00,
- 0x1E, 0xC7, 0xE3, 0x00,
- 0x0E, 0xC7, 0xE1, 0x00,
- 0xFF, 0xFF, 0xFF, 0x03,
- 0xFF, 0xFF, 0xFF, 0x03,
- 0x00, 0x07, 0xE0, 0x00,
- 0x00, 0x07, 0xE0, 0x00,
- 0x00, 0x07, 0xE0, 0x00,
- 0x00, 0x07, 0xE0, 0x00,
- 0x00, 0x07, 0xE0, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l45.xbm b/app/bin/bitmaps/l45.xbm
deleted file mode 100644
index d326cc1..0000000
--- a/app/bin/bitmaps/l45.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l45_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x3F,
- 0x70, 0x07,
- 0x78, 0x07,
- 0x78, 0x1F,
- 0x7C, 0x3B,
- 0x6C, 0x30,
- 0xFE, 0x33,
- 0x60, 0x3F,
- 0x60, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l45_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0xF1, 0x07,
- 0xC0, 0x71, 0x00,
- 0xE0, 0x71, 0x00,
- 0xE0, 0x31, 0x00,
- 0xF0, 0x31, 0x00,
- 0xF0, 0xF9, 0x03,
- 0xF8, 0x79, 0x07,
- 0xD8, 0x39, 0x07,
- 0xDC, 0x01, 0x0E,
- 0xCC, 0x01, 0x0E,
- 0xFE, 0x07, 0x0E,
- 0xC0, 0x39, 0x06,
- 0xC0, 0x39, 0x07,
- 0xC0, 0x71, 0x07,
- 0xC0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l45_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x07, 0xFF, 0x03,
- 0x80, 0x07, 0xFF, 0x03,
- 0xC0, 0x07, 0x07, 0x00,
- 0xC0, 0x07, 0x07, 0x00,
- 0xE0, 0x87, 0x07, 0x00,
- 0xE0, 0x87, 0x07, 0x00,
- 0xF0, 0x87, 0x7F, 0x00,
- 0x70, 0x87, 0xFF, 0x01,
- 0x78, 0x87, 0xE7, 0x01,
- 0x3C, 0x87, 0xC3, 0x03,
- 0x3C, 0x07, 0xC0, 0x03,
- 0x1E, 0x07, 0x80, 0x03,
- 0x0E, 0x07, 0x80, 0x03,
- 0xFF, 0x1F, 0x80, 0x03,
- 0xFF, 0xDF, 0x83, 0x03,
- 0x00, 0xC7, 0xC3, 0x03,
- 0x00, 0x87, 0xC3, 0x03,
- 0x00, 0x87, 0xE7, 0x01,
- 0x00, 0x07, 0xFF, 0x00,
- 0x00, 0x07, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l46.xbm b/app/bin/bitmaps/l46.xbm
deleted file mode 100644
index 5313ab6..0000000
--- a/app/bin/bitmaps/l46.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l46_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x1E,
- 0x70, 0x3F,
- 0x78, 0x03,
- 0x78, 0x1F,
- 0x7C, 0x3F,
- 0x6C, 0x33,
- 0xFE, 0x33,
- 0x60, 0x3F,
- 0x60, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l46_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0xE1, 0x03,
- 0xC0, 0x71, 0x07,
- 0xE0, 0x31, 0x07,
- 0xE0, 0x39, 0x00,
- 0xF0, 0x39, 0x00,
- 0xF0, 0x39, 0x00,
- 0xF8, 0xF9, 0x03,
- 0xD8, 0x79, 0x07,
- 0xDC, 0x39, 0x07,
- 0xCC, 0x39, 0x0E,
- 0xFE, 0x3F, 0x0E,
- 0xC0, 0x39, 0x0E,
- 0xC0, 0x31, 0x07,
- 0xC0, 0x71, 0x07,
- 0xC0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l46_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x07, 0xFC, 0x00,
- 0x80, 0x07, 0xFF, 0x01,
- 0xC0, 0x07, 0xEF, 0x01,
- 0xC0, 0x87, 0xC7, 0x03,
- 0xE0, 0x87, 0xC3, 0x03,
- 0xE0, 0x87, 0x03, 0x00,
- 0xF0, 0xC7, 0x03, 0x00,
- 0x70, 0xC7, 0x7F, 0x00,
- 0x78, 0xC7, 0xFF, 0x01,
- 0x3C, 0xC7, 0xEF, 0x01,
- 0x3C, 0xC7, 0xC7, 0x03,
- 0x1E, 0xC7, 0x83, 0x03,
- 0x0E, 0xC7, 0x83, 0x03,
- 0xFF, 0xDF, 0x83, 0x03,
- 0xFF, 0xDF, 0x83, 0x03,
- 0x00, 0x87, 0x83, 0x03,
- 0x00, 0x87, 0xC7, 0x03,
- 0x00, 0x87, 0xEF, 0x01,
- 0x00, 0x07, 0xFF, 0x01,
- 0x00, 0x07, 0x7C, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l47.xbm b/app/bin/bitmaps/l47.xbm
deleted file mode 100644
index e635d03..0000000
--- a/app/bin/bitmaps/l47.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l47_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x3F,
- 0x70, 0x38,
- 0x78, 0x18,
- 0x78, 0x1C,
- 0x7C, 0x0C,
- 0x6C, 0x0E,
- 0xFE, 0x0E,
- 0x60, 0x06,
- 0x60, 0x06,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l47_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0xF9, 0x0F,
- 0xC0, 0x01, 0x0F,
- 0xE0, 0x01, 0x07,
- 0xE0, 0x81, 0x03,
- 0xF0, 0x81, 0x03,
- 0xF0, 0xC1, 0x01,
- 0xF8, 0xC1, 0x01,
- 0xD8, 0xC1, 0x01,
- 0xDC, 0xE1, 0x00,
- 0xCC, 0xE1, 0x00,
- 0xFE, 0xE7, 0x00,
- 0xC0, 0xE1, 0x00,
- 0xC0, 0xE1, 0x00,
- 0xC0, 0x71, 0x00,
- 0xC0, 0x71, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l47_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0xC7, 0xFF, 0x03,
- 0x80, 0xC7, 0xFF, 0x03,
- 0xC0, 0x07, 0xC0, 0x03,
- 0xC0, 0x07, 0xE0, 0x01,
- 0xE0, 0x07, 0xE0, 0x01,
- 0xE0, 0x07, 0xF0, 0x00,
- 0xF0, 0x07, 0xF0, 0x00,
- 0x70, 0x07, 0x78, 0x00,
- 0x78, 0x07, 0x78, 0x00,
- 0x3C, 0x07, 0x38, 0x00,
- 0x3C, 0x07, 0x3C, 0x00,
- 0x1E, 0x07, 0x3C, 0x00,
- 0x0E, 0x07, 0x1C, 0x00,
- 0xFF, 0x1F, 0x1E, 0x00,
- 0xFF, 0x1F, 0x1E, 0x00,
- 0x00, 0x07, 0x1E, 0x00,
- 0x00, 0x07, 0x1E, 0x00,
- 0x00, 0x07, 0x0E, 0x00,
- 0x00, 0x07, 0x0E, 0x00,
- 0x00, 0x07, 0x0E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l48.xbm b/app/bin/bitmaps/l48.xbm
deleted file mode 100644
index 977b660..0000000
--- a/app/bin/bitmaps/l48.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l48_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x1E,
- 0x70, 0x3F,
- 0x78, 0x3B,
- 0x78, 0x3F,
- 0x7C, 0x1E,
- 0x6C, 0x3F,
- 0xFE, 0x33,
- 0x60, 0x3F,
- 0x60, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l48_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0xE1, 0x03,
- 0xC0, 0x71, 0x07,
- 0xE0, 0x31, 0x07,
- 0xE0, 0x39, 0x07,
- 0xF0, 0x39, 0x07,
- 0xF0, 0x39, 0x07,
- 0xF8, 0x71, 0x07,
- 0xD8, 0xE1, 0x03,
- 0xDC, 0x71, 0x07,
- 0xCC, 0x39, 0x06,
- 0xFE, 0x3F, 0x0E,
- 0xC0, 0x39, 0x0E,
- 0xC0, 0x39, 0x06,
- 0xC0, 0x71, 0x07,
- 0xC0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l48_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x07, 0x7E, 0x00,
- 0x80, 0x07, 0xFF, 0x00,
- 0xC0, 0x87, 0xEF, 0x01,
- 0xC0, 0x87, 0xC7, 0x01,
- 0xE0, 0x87, 0xC3, 0x03,
- 0xE0, 0x87, 0xC3, 0x03,
- 0xF0, 0x87, 0xC7, 0x01,
- 0x70, 0x07, 0xEF, 0x01,
- 0x78, 0x07, 0xFE, 0x00,
- 0x3C, 0x07, 0xFF, 0x00,
- 0x3C, 0x87, 0xE7, 0x01,
- 0x1E, 0x87, 0xC3, 0x03,
- 0x0E, 0xC7, 0x83, 0x03,
- 0xFF, 0xDF, 0x83, 0x03,
- 0xFF, 0xDF, 0x83, 0x03,
- 0x00, 0xC7, 0x83, 0x03,
- 0x00, 0x87, 0xC3, 0x03,
- 0x00, 0x87, 0xE7, 0x01,
- 0x00, 0x07, 0xFF, 0x01,
- 0x00, 0x07, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l49.xbm b/app/bin/bitmaps/l49.xbm
deleted file mode 100644
index e930612..0000000
--- a/app/bin/bitmaps/l49.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l49_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x70, 0x1E,
- 0x70, 0x3F,
- 0x78, 0x33,
- 0x78, 0x33,
- 0x7C, 0x3F,
- 0x6C, 0x3E,
- 0xFE, 0x30,
- 0x60, 0x3B,
- 0x60, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l49_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0xE1, 0x01,
- 0xC0, 0x71, 0x07,
- 0xE0, 0x39, 0x07,
- 0xE0, 0x39, 0x06,
- 0xF0, 0x39, 0x0E,
- 0xF0, 0x39, 0x0E,
- 0xF8, 0x39, 0x0F,
- 0xD8, 0x71, 0x0F,
- 0xDC, 0xE1, 0x0F,
- 0xCC, 0x01, 0x0E,
- 0xFE, 0x07, 0x06,
- 0xC0, 0x01, 0x06,
- 0xC0, 0x39, 0x07,
- 0xC0, 0x71, 0x03,
- 0xC0, 0xF1, 0x01,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l49_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x07, 0x7E, 0x00,
- 0x80, 0x07, 0xFF, 0x00,
- 0xC0, 0x87, 0xEF, 0x01,
- 0xC0, 0x87, 0xC7, 0x01,
- 0xE0, 0xC7, 0x83, 0x03,
- 0xE0, 0xC7, 0x83, 0x03,
- 0xF0, 0xC7, 0x83, 0x03,
- 0x70, 0xC7, 0x83, 0x03,
- 0x78, 0xC7, 0x83, 0x03,
- 0x3C, 0x87, 0xC3, 0x03,
- 0x3C, 0x87, 0xE7, 0x03,
- 0x1E, 0x07, 0xFF, 0x03,
- 0x0E, 0x07, 0xFE, 0x03,
- 0xFF, 0x1F, 0x80, 0x03,
- 0xFF, 0x1F, 0x80, 0x03,
- 0x00, 0x87, 0xC3, 0x03,
- 0x00, 0x87, 0xC3, 0x01,
- 0x00, 0x87, 0xE7, 0x01,
- 0x00, 0x07, 0xFF, 0x00,
- 0x00, 0x07, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l5.xbm b/app/bin/bitmaps/l5.xbm
deleted file mode 100644
index 4d43af0..0000000
--- a/app/bin/bitmaps/l5.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l5_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xE0, 0x07,
- 0xE0, 0x00,
- 0xE0, 0x00,
- 0xE0, 0x03,
- 0x60, 0x07,
- 0x00, 0x06,
- 0x60, 0x06,
- 0xE0, 0x07,
- 0xC0, 0x03,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l5_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x80, 0x3F, 0x00,
- 0x80, 0x03, 0x00,
- 0x80, 0x03, 0x00,
- 0x80, 0x01, 0x00,
- 0x80, 0x01, 0x00,
- 0xC0, 0x1F, 0x00,
- 0xC0, 0x3B, 0x00,
- 0xC0, 0x39, 0x00,
- 0x00, 0x70, 0x00,
- 0x00, 0x70, 0x00,
- 0x00, 0x70, 0x00,
- 0xC0, 0x31, 0x00,
- 0xC0, 0x39, 0x00,
- 0x80, 0x3B, 0x00,
- 0x00, 0x1F, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l5_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0x07, 0x00,
- 0x00, 0xFE, 0x07, 0x00,
- 0x00, 0x0E, 0x00, 0x00,
- 0x00, 0x0E, 0x00, 0x00,
- 0x00, 0x0F, 0x00, 0x00,
- 0x00, 0x0F, 0x00, 0x00,
- 0x00, 0xFF, 0x00, 0x00,
- 0x00, 0xFF, 0x03, 0x00,
- 0x00, 0xCF, 0x03, 0x00,
- 0x00, 0x87, 0x07, 0x00,
- 0x00, 0x80, 0x07, 0x00,
- 0x00, 0x00, 0x07, 0x00,
- 0x00, 0x00, 0x07, 0x00,
- 0x00, 0x00, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x80, 0x87, 0x07, 0x00,
- 0x00, 0x87, 0x07, 0x00,
- 0x00, 0xCF, 0x03, 0x00,
- 0x00, 0xFE, 0x01, 0x00,
- 0x00, 0xFC, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l50.xbm b/app/bin/bitmaps/l50.xbm
deleted file mode 100644
index 834ab8f..0000000
--- a/app/bin/bitmaps/l50.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l50_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x1E,
- 0x1C, 0x3F,
- 0x1C, 0x33,
- 0x7C, 0x33,
- 0xEC, 0x33,
- 0xC0, 0x33,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l50_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF8, 0xE3, 0x03,
- 0x38, 0x70, 0x07,
- 0x38, 0x30, 0x07,
- 0x18, 0x38, 0x06,
- 0x18, 0x38, 0x06,
- 0xFC, 0x39, 0x0E,
- 0xBC, 0x3B, 0x0E,
- 0x9C, 0x3B, 0x0E,
- 0x00, 0x3F, 0x0E,
- 0x00, 0x3F, 0x0E,
- 0x00, 0x3F, 0x06,
- 0x1C, 0x3B, 0x06,
- 0x9C, 0x33, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l50_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF8, 0x1F, 0x7E, 0x00,
- 0xF8, 0x1F, 0xFF, 0x00,
- 0x38, 0x00, 0xEF, 0x01,
- 0x38, 0x80, 0xC7, 0x01,
- 0x3C, 0x80, 0xC3, 0x03,
- 0x3C, 0x80, 0xC3, 0x03,
- 0xFC, 0xC3, 0x83, 0x03,
- 0xFC, 0xCF, 0x83, 0x03,
- 0x3C, 0xCF, 0x83, 0x03,
- 0x1C, 0xDE, 0x83, 0x03,
- 0x00, 0xDE, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1E, 0x9E, 0xC3, 0x03,
- 0x1C, 0x9E, 0xC7, 0x01,
- 0x3C, 0x0F, 0xEF, 0x01,
- 0xF8, 0x07, 0xFF, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l51.xbm b/app/bin/bitmaps/l51.xbm
deleted file mode 100644
index 8081e2f..0000000
--- a/app/bin/bitmaps/l51.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l51_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x1C,
- 0x1C, 0x1E,
- 0x1C, 0x1F,
- 0x7C, 0x1C,
- 0xEC, 0x1C,
- 0xC0, 0x1C,
- 0xCC, 0x1C,
- 0xFC, 0x1C,
- 0x78, 0x1C,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l51_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF8, 0x83, 0x03,
- 0x38, 0xC0, 0x03,
- 0x38, 0xC0, 0x03,
- 0x18, 0xE0, 0x03,
- 0x18, 0xB0, 0x03,
- 0xFC, 0x81, 0x03,
- 0xBC, 0x83, 0x03,
- 0x9C, 0x83, 0x03,
- 0x00, 0x87, 0x03,
- 0x00, 0x87, 0x03,
- 0x00, 0x87, 0x03,
- 0x1C, 0x83, 0x03,
- 0x9C, 0x83, 0x03,
- 0xB8, 0x83, 0x03,
- 0xF0, 0x81, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l51_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF8, 0x1F, 0x70, 0x00,
- 0xF8, 0x1F, 0x70, 0x00,
- 0x38, 0x00, 0x78, 0x00,
- 0x38, 0x00, 0x7C, 0x00,
- 0x3C, 0x00, 0x7E, 0x00,
- 0x3C, 0x00, 0x7F, 0x00,
- 0xFC, 0x03, 0x73, 0x00,
- 0xFC, 0x0F, 0x70, 0x00,
- 0x3C, 0x0F, 0x70, 0x00,
- 0x1C, 0x1E, 0x70, 0x00,
- 0x00, 0x1E, 0x70, 0x00,
- 0x00, 0x1C, 0x70, 0x00,
- 0x00, 0x1C, 0x70, 0x00,
- 0x00, 0x1C, 0x70, 0x00,
- 0x1E, 0x1C, 0x70, 0x00,
- 0x1E, 0x1E, 0x70, 0x00,
- 0x1C, 0x1E, 0x70, 0x00,
- 0x3C, 0x0F, 0x70, 0x00,
- 0xF8, 0x07, 0x70, 0x00,
- 0xF0, 0x03, 0x70, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l52.xbm b/app/bin/bitmaps/l52.xbm
deleted file mode 100644
index 1547b10..0000000
--- a/app/bin/bitmaps/l52.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l52_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x1E,
- 0x1C, 0x3F,
- 0x1C, 0x33,
- 0x7C, 0x30,
- 0xEC, 0x38,
- 0xC0, 0x1C,
- 0xCC, 0x0E,
- 0xFC, 0x07,
- 0x78, 0x3F,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l52_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF8, 0xE3, 0x03,
- 0x38, 0x70, 0x07,
- 0x38, 0x38, 0x06,
- 0x18, 0x38, 0x0E,
- 0x18, 0x00, 0x0E,
- 0xFC, 0x01, 0x0E,
- 0xBC, 0x03, 0x07,
- 0x9C, 0x83, 0x07,
- 0x00, 0x87, 0x03,
- 0x00, 0xC7, 0x01,
- 0x00, 0xE7, 0x01,
- 0x1C, 0xF3, 0x00,
- 0x9C, 0x73, 0x00,
- 0xB8, 0x7B, 0x00,
- 0xF0, 0xF9, 0x0F,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l52_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF8, 0x1F, 0xFE, 0x00,
- 0xF8, 0x1F, 0xFF, 0x01,
- 0x38, 0x80, 0xE7, 0x03,
- 0x38, 0x80, 0xC3, 0x03,
- 0x3C, 0xC0, 0x83, 0x03,
- 0x3C, 0xC0, 0x83, 0x03,
- 0xFC, 0x03, 0x80, 0x03,
- 0xFC, 0x0F, 0xC0, 0x03,
- 0x3C, 0x0F, 0xC0, 0x03,
- 0x1C, 0x1E, 0xE0, 0x01,
- 0x00, 0x1E, 0xF0, 0x01,
- 0x00, 0x1C, 0xF8, 0x00,
- 0x00, 0x1C, 0x78, 0x00,
- 0x00, 0x1C, 0x3C, 0x00,
- 0x1E, 0x1C, 0x1E, 0x00,
- 0x1E, 0x1E, 0x0F, 0x00,
- 0x1C, 0x9E, 0x07, 0x00,
- 0x3C, 0x8F, 0x07, 0x00,
- 0xF8, 0xC7, 0xFF, 0x03,
- 0xF0, 0xC3, 0xFF, 0x03,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l53.xbm b/app/bin/bitmaps/l53.xbm
deleted file mode 100644
index a9620b9..0000000
--- a/app/bin/bitmaps/l53.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l53_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x1E,
- 0x1C, 0x3B,
- 0x1C, 0x38,
- 0x7C, 0x18,
- 0xEC, 0x3C,
- 0xC0, 0x38,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l53_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF8, 0xE3, 0x03,
- 0x38, 0x70, 0x07,
- 0x38, 0x38, 0x07,
- 0x18, 0x00, 0x07,
- 0x18, 0x00, 0x07,
- 0xFC, 0x01, 0x07,
- 0xBC, 0x83, 0x03,
- 0x9C, 0xC3, 0x07,
- 0x00, 0x07, 0x07,
- 0x00, 0x07, 0x0E,
- 0x00, 0x07, 0x0E,
- 0x1C, 0x3B, 0x0E,
- 0x9C, 0x3B, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l53_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF8, 0x1F, 0x7E, 0x00,
- 0xF8, 0x1F, 0xFF, 0x00,
- 0x38, 0x80, 0xE7, 0x01,
- 0x38, 0x80, 0xC7, 0x01,
- 0x3C, 0x80, 0xC3, 0x03,
- 0x3C, 0x00, 0xC0, 0x03,
- 0xFC, 0x03, 0xC0, 0x01,
- 0xFC, 0x0F, 0xE0, 0x01,
- 0x3C, 0x0F, 0xFC, 0x00,
- 0x1C, 0x1E, 0xFC, 0x00,
- 0x00, 0x1E, 0xE0, 0x01,
- 0x00, 0x1C, 0xC0, 0x03,
- 0x00, 0x1C, 0x80, 0x03,
- 0x00, 0x1C, 0x80, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDE, 0x83, 0x03,
- 0x1C, 0x9E, 0xC7, 0x03,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x07, 0xFF, 0x01,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l54.xbm b/app/bin/bitmaps/l54.xbm
deleted file mode 100644
index 68a392e..0000000
--- a/app/bin/bitmaps/l54.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l54_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x1C,
- 0x1C, 0x1C,
- 0x1C, 0x1E,
- 0x7C, 0x1E,
- 0xEC, 0x1F,
- 0xC0, 0x1B,
- 0xCC, 0x3F,
- 0xFC, 0x18,
- 0x78, 0x18,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l54_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF8, 0x83, 0x03,
- 0x38, 0x80, 0x03,
- 0x38, 0xC0, 0x03,
- 0x18, 0xC0, 0x03,
- 0x18, 0xE0, 0x03,
- 0xFC, 0xE1, 0x03,
- 0xBC, 0xF3, 0x03,
- 0x9C, 0xB3, 0x03,
- 0x00, 0xBF, 0x03,
- 0x00, 0x9F, 0x03,
- 0x00, 0xFF, 0x0F,
- 0x1C, 0x83, 0x03,
- 0x9C, 0x83, 0x03,
- 0xB8, 0x83, 0x03,
- 0xF0, 0x81, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l54_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF8, 0x1F, 0xF0, 0x00,
- 0xF8, 0x1F, 0xF0, 0x00,
- 0x38, 0x00, 0xF8, 0x00,
- 0x38, 0x00, 0xF8, 0x00,
- 0x3C, 0x00, 0xFC, 0x00,
- 0x3C, 0x00, 0xFC, 0x00,
- 0xFC, 0x03, 0xFE, 0x00,
- 0xFC, 0x0F, 0xEE, 0x00,
- 0x3C, 0x0F, 0xEF, 0x00,
- 0x1C, 0x9E, 0xE7, 0x00,
- 0x00, 0x9E, 0xE7, 0x00,
- 0x00, 0xDC, 0xE3, 0x00,
- 0x00, 0xDC, 0xE1, 0x00,
- 0x00, 0xFC, 0xFF, 0x03,
- 0x1E, 0xFC, 0xFF, 0x03,
- 0x1E, 0x1E, 0xE0, 0x00,
- 0x1C, 0x1E, 0xE0, 0x00,
- 0x3C, 0x0F, 0xE0, 0x00,
- 0xF8, 0x07, 0xE0, 0x00,
- 0xF0, 0x03, 0xE0, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l55.xbm b/app/bin/bitmaps/l55.xbm
deleted file mode 100644
index 8c35927..0000000
--- a/app/bin/bitmaps/l55.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l55_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x3F,
- 0x1C, 0x07,
- 0x1C, 0x07,
- 0x7C, 0x1F,
- 0xEC, 0x3B,
- 0xC0, 0x30,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l55_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF8, 0xF3, 0x07,
- 0x38, 0x70, 0x00,
- 0x38, 0x70, 0x00,
- 0x18, 0x30, 0x00,
- 0x18, 0x30, 0x00,
- 0xFC, 0xF9, 0x03,
- 0xBC, 0x7B, 0x07,
- 0x9C, 0x3B, 0x07,
- 0x00, 0x07, 0x0E,
- 0x00, 0x07, 0x0E,
- 0x00, 0x07, 0x0E,
- 0x1C, 0x3B, 0x06,
- 0x9C, 0x3B, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l55_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF8, 0x1F, 0xFF, 0x03,
- 0xF8, 0x1F, 0xFF, 0x03,
- 0x38, 0x00, 0x07, 0x00,
- 0x38, 0x00, 0x07, 0x00,
- 0x3C, 0x80, 0x07, 0x00,
- 0x3C, 0x80, 0x07, 0x00,
- 0xFC, 0x83, 0x7F, 0x00,
- 0xFC, 0x8F, 0xFF, 0x01,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x00, 0x1E, 0xC0, 0x03,
- 0x00, 0x1C, 0x80, 0x03,
- 0x00, 0x1C, 0x80, 0x03,
- 0x00, 0x1C, 0x80, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDE, 0xC3, 0x03,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x07, 0xFF, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l56.xbm b/app/bin/bitmaps/l56.xbm
deleted file mode 100644
index e8f4d59..0000000
--- a/app/bin/bitmaps/l56.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l56_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x1E,
- 0x1C, 0x3F,
- 0x1C, 0x03,
- 0x7C, 0x1F,
- 0xEC, 0x3F,
- 0xC0, 0x33,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l56_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF8, 0xE3, 0x03,
- 0x38, 0x70, 0x07,
- 0x38, 0x30, 0x07,
- 0x18, 0x38, 0x00,
- 0x18, 0x38, 0x00,
- 0xFC, 0x39, 0x00,
- 0xBC, 0xFB, 0x03,
- 0x9C, 0x7B, 0x07,
- 0x00, 0x3F, 0x07,
- 0x00, 0x3F, 0x0E,
- 0x00, 0x3F, 0x0E,
- 0x1C, 0x3B, 0x0E,
- 0x9C, 0x33, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l56_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF8, 0x1F, 0xFC, 0x00,
- 0xF8, 0x1F, 0xFF, 0x01,
- 0x38, 0x00, 0xEF, 0x01,
- 0x38, 0x80, 0xC7, 0x03,
- 0x3C, 0x80, 0xC3, 0x03,
- 0x3C, 0x80, 0x03, 0x00,
- 0xFC, 0xC3, 0x03, 0x00,
- 0xFC, 0xCF, 0x7F, 0x00,
- 0x3C, 0xCF, 0xFF, 0x01,
- 0x1C, 0xDE, 0xEF, 0x01,
- 0x00, 0xDE, 0xC7, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0x9E, 0x83, 0x03,
- 0x1C, 0x9E, 0xC7, 0x03,
- 0x3C, 0x8F, 0xEF, 0x01,
- 0xF8, 0x07, 0xFF, 0x01,
- 0xF0, 0x03, 0x7C, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l57.xbm b/app/bin/bitmaps/l57.xbm
deleted file mode 100644
index 5149c54..0000000
--- a/app/bin/bitmaps/l57.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l57_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x3F,
- 0x1C, 0x38,
- 0x1C, 0x18,
- 0x7C, 0x1C,
- 0xEC, 0x0C,
- 0xC0, 0x0E,
- 0xCC, 0x0E,
- 0xFC, 0x06,
- 0x78, 0x06,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l57_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF8, 0xFB, 0x0F,
- 0x38, 0x00, 0x0F,
- 0x38, 0x00, 0x07,
- 0x18, 0x80, 0x03,
- 0x18, 0x80, 0x03,
- 0xFC, 0xC1, 0x01,
- 0xBC, 0xC3, 0x01,
- 0x9C, 0xC3, 0x01,
- 0x00, 0xE7, 0x00,
- 0x00, 0xE7, 0x00,
- 0x00, 0xE7, 0x00,
- 0x1C, 0xE3, 0x00,
- 0x9C, 0xE3, 0x00,
- 0xB8, 0x73, 0x00,
- 0xF0, 0x71, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l57_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF8, 0xDF, 0xFF, 0x03,
- 0xF8, 0xDF, 0xFF, 0x03,
- 0x38, 0x00, 0xC0, 0x03,
- 0x38, 0x00, 0xE0, 0x01,
- 0x3C, 0x00, 0xE0, 0x01,
- 0x3C, 0x00, 0xF0, 0x00,
- 0xFC, 0x03, 0xF0, 0x00,
- 0xFC, 0x0F, 0x78, 0x00,
- 0x3C, 0x0F, 0x78, 0x00,
- 0x1C, 0x1E, 0x38, 0x00,
- 0x00, 0x1E, 0x3C, 0x00,
- 0x00, 0x1C, 0x3C, 0x00,
- 0x00, 0x1C, 0x1C, 0x00,
- 0x00, 0x1C, 0x1E, 0x00,
- 0x1E, 0x1C, 0x1E, 0x00,
- 0x1E, 0x1E, 0x1E, 0x00,
- 0x1C, 0x1E, 0x1E, 0x00,
- 0x3C, 0x0F, 0x0E, 0x00,
- 0xF8, 0x07, 0x0E, 0x00,
- 0xF0, 0x03, 0x0E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l58.xbm b/app/bin/bitmaps/l58.xbm
deleted file mode 100644
index 3fe4ad7..0000000
--- a/app/bin/bitmaps/l58.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l58_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x1E,
- 0x1C, 0x3F,
- 0x1C, 0x3B,
- 0x7C, 0x3F,
- 0xEC, 0x1E,
- 0xC0, 0x3F,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l58_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF8, 0xE3, 0x03,
- 0x38, 0x70, 0x07,
- 0x38, 0x30, 0x07,
- 0x18, 0x38, 0x07,
- 0x18, 0x38, 0x07,
- 0xFC, 0x39, 0x07,
- 0xBC, 0x73, 0x07,
- 0x9C, 0xE3, 0x03,
- 0x00, 0x77, 0x07,
- 0x00, 0x3F, 0x06,
- 0x00, 0x3F, 0x0E,
- 0x1C, 0x3B, 0x0E,
- 0x9C, 0x3B, 0x06,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l58_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF8, 0x1F, 0x7E, 0x00,
- 0xF8, 0x1F, 0xFF, 0x00,
- 0x38, 0x80, 0xEF, 0x01,
- 0x38, 0x80, 0xC7, 0x01,
- 0x3C, 0x80, 0xC3, 0x03,
- 0x3C, 0x80, 0xC3, 0x03,
- 0xFC, 0x83, 0xC7, 0x01,
- 0xFC, 0x0F, 0xEF, 0x01,
- 0x3C, 0x0F, 0xFE, 0x00,
- 0x1C, 0x1E, 0xFF, 0x00,
- 0x00, 0x9E, 0xE7, 0x01,
- 0x00, 0x9C, 0xC3, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDE, 0x83, 0x03,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x07, 0xFF, 0x01,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l59.xbm b/app/bin/bitmaps/l59.xbm
deleted file mode 100644
index 9459753..0000000
--- a/app/bin/bitmaps/l59.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l59_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x1E,
- 0x1C, 0x3F,
- 0x1C, 0x33,
- 0x7C, 0x33,
- 0xEC, 0x3F,
- 0xC0, 0x3E,
- 0xCC, 0x30,
- 0xFC, 0x3B,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l59_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF8, 0xE3, 0x01,
- 0x38, 0x70, 0x07,
- 0x38, 0x38, 0x07,
- 0x18, 0x38, 0x06,
- 0x18, 0x38, 0x0E,
- 0xFC, 0x39, 0x0E,
- 0xBC, 0x3B, 0x0F,
- 0x9C, 0x73, 0x0F,
- 0x00, 0xE7, 0x0F,
- 0x00, 0x07, 0x0E,
- 0x00, 0x07, 0x06,
- 0x1C, 0x03, 0x06,
- 0x9C, 0x3B, 0x07,
- 0xB8, 0x73, 0x03,
- 0xF0, 0xF1, 0x01,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l59_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF8, 0x1F, 0x7E, 0x00,
- 0xF8, 0x1F, 0xFF, 0x00,
- 0x38, 0x80, 0xEF, 0x01,
- 0x38, 0x80, 0xC7, 0x01,
- 0x3C, 0xC0, 0x83, 0x03,
- 0x3C, 0xC0, 0x83, 0x03,
- 0xFC, 0xC3, 0x83, 0x03,
- 0xFC, 0xCF, 0x83, 0x03,
- 0x3C, 0xCF, 0x83, 0x03,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x00, 0x9E, 0xE7, 0x03,
- 0x00, 0x1C, 0xFF, 0x03,
- 0x00, 0x1C, 0xFE, 0x03,
- 0x00, 0x1C, 0x80, 0x03,
- 0x1E, 0x1C, 0x80, 0x03,
- 0x1E, 0x9E, 0xC3, 0x03,
- 0x1C, 0x9E, 0xC3, 0x01,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x07, 0xFF, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l6.xbm b/app/bin/bitmaps/l6.xbm
deleted file mode 100644
index 325c80c..0000000
--- a/app/bin/bitmaps/l6.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l6_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xC0, 0x03,
- 0xE0, 0x07,
- 0x60, 0x00,
- 0xE0, 0x03,
- 0xE0, 0x07,
- 0x60, 0x06,
- 0x60, 0x06,
- 0xE0, 0x07,
- 0xC0, 0x03,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l6_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x1F, 0x00,
- 0x80, 0x3B, 0x00,
- 0x80, 0x39, 0x00,
- 0xC0, 0x01, 0x00,
- 0xC0, 0x01, 0x00,
- 0xC0, 0x01, 0x00,
- 0xC0, 0x1F, 0x00,
- 0xC0, 0x3B, 0x00,
- 0xC0, 0x39, 0x00,
- 0xC0, 0x71, 0x00,
- 0xC0, 0x71, 0x00,
- 0xC0, 0x71, 0x00,
- 0x80, 0x39, 0x00,
- 0x80, 0x3B, 0x00,
- 0x00, 0x1F, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l6_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xF8, 0x01, 0x00,
- 0x00, 0xFE, 0x03, 0x00,
- 0x00, 0xDE, 0x03, 0x00,
- 0x00, 0x8F, 0x07, 0x00,
- 0x00, 0x87, 0x07, 0x00,
- 0x00, 0x07, 0x00, 0x00,
- 0x80, 0x07, 0x00, 0x00,
- 0x80, 0xFF, 0x00, 0x00,
- 0x80, 0xFF, 0x03, 0x00,
- 0x80, 0xDF, 0x03, 0x00,
- 0x80, 0x8F, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x00, 0x07, 0x07, 0x00,
- 0x00, 0x8F, 0x07, 0x00,
- 0x00, 0xDF, 0x03, 0x00,
- 0x00, 0xFE, 0x03, 0x00,
- 0x00, 0xF8, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l60.xbm b/app/bin/bitmaps/l60.xbm
deleted file mode 100644
index 11b9cc7..0000000
--- a/app/bin/bitmaps/l60.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l60_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0x0C, 0x33,
- 0x7C, 0x33,
- 0xFC, 0x33,
- 0xCC, 0x33,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l60_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x98, 0x33, 0x07,
- 0x1C, 0x38, 0x06,
- 0x1C, 0x38, 0x06,
- 0x1C, 0x38, 0x0E,
- 0xFC, 0x39, 0x0E,
- 0xBC, 0x3B, 0x0E,
- 0x9C, 0x3B, 0x0E,
- 0x1C, 0x3F, 0x0E,
- 0x1C, 0x3F, 0x06,
- 0x1C, 0x3F, 0x06,
- 0x98, 0x33, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l60_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xE0, 0x07, 0x7E, 0x00,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0x78, 0x0F, 0xEF, 0x01,
- 0x3C, 0x9E, 0xC7, 0x01,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x1C, 0x80, 0xC3, 0x03,
- 0x1E, 0xC0, 0x83, 0x03,
- 0xFE, 0xC3, 0x83, 0x03,
- 0xFE, 0xCF, 0x83, 0x03,
- 0x7E, 0xCF, 0x83, 0x03,
- 0x3E, 0xDE, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1C, 0x9C, 0xC3, 0x03,
- 0x3C, 0x9E, 0xC7, 0x01,
- 0x7C, 0x0F, 0xEF, 0x01,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0xE0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l61.xbm b/app/bin/bitmaps/l61.xbm
deleted file mode 100644
index 1983790..0000000
--- a/app/bin/bitmaps/l61.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l61_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1C,
- 0xFC, 0x1E,
- 0x0C, 0x1F,
- 0x7C, 0x1C,
- 0xFC, 0x1C,
- 0xCC, 0x1C,
- 0xCC, 0x1C,
- 0xFC, 0x1C,
- 0x78, 0x1C,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l61_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0x81, 0x03,
- 0xB8, 0xC3, 0x03,
- 0x98, 0xC3, 0x03,
- 0x1C, 0xE0, 0x03,
- 0x1C, 0xB0, 0x03,
- 0x1C, 0x80, 0x03,
- 0xFC, 0x81, 0x03,
- 0xBC, 0x83, 0x03,
- 0x9C, 0x83, 0x03,
- 0x1C, 0x87, 0x03,
- 0x1C, 0x87, 0x03,
- 0x1C, 0x87, 0x03,
- 0x98, 0x83, 0x03,
- 0xB8, 0x83, 0x03,
- 0xF0, 0x81, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l61_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xE0, 0x07, 0x70, 0x00,
- 0xF8, 0x0F, 0x70, 0x00,
- 0x78, 0x0F, 0x78, 0x00,
- 0x3C, 0x1E, 0x7C, 0x00,
- 0x1C, 0x1E, 0x7E, 0x00,
- 0x1C, 0x00, 0x7F, 0x00,
- 0x1E, 0x00, 0x73, 0x00,
- 0xFE, 0x03, 0x70, 0x00,
- 0xFE, 0x0F, 0x70, 0x00,
- 0x7E, 0x0F, 0x70, 0x00,
- 0x3E, 0x1E, 0x70, 0x00,
- 0x1E, 0x1C, 0x70, 0x00,
- 0x1E, 0x1C, 0x70, 0x00,
- 0x1E, 0x1C, 0x70, 0x00,
- 0x1E, 0x1C, 0x70, 0x00,
- 0x1C, 0x1C, 0x70, 0x00,
- 0x3C, 0x1E, 0x70, 0x00,
- 0x7C, 0x0F, 0x70, 0x00,
- 0xF8, 0x0F, 0x70, 0x00,
- 0xE0, 0x03, 0x70, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l62.xbm b/app/bin/bitmaps/l62.xbm
deleted file mode 100644
index 93573ec..0000000
--- a/app/bin/bitmaps/l62.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l62_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0x0C, 0x33,
- 0x7C, 0x30,
- 0xFC, 0x38,
- 0xCC, 0x1C,
- 0xCC, 0x0E,
- 0xFC, 0x07,
- 0x78, 0x3F,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l62_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x98, 0x3B, 0x06,
- 0x1C, 0x38, 0x0E,
- 0x1C, 0x00, 0x0E,
- 0x1C, 0x00, 0x0E,
- 0xFC, 0x01, 0x07,
- 0xBC, 0x83, 0x07,
- 0x9C, 0x83, 0x03,
- 0x1C, 0xC7, 0x01,
- 0x1C, 0xE7, 0x01,
- 0x1C, 0xF7, 0x00,
- 0x98, 0x73, 0x00,
- 0xB8, 0x7B, 0x00,
- 0xF0, 0xF9, 0x0F,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l62_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xE0, 0x07, 0xFE, 0x00,
- 0xF8, 0x0F, 0xFF, 0x01,
- 0x78, 0x8F, 0xE7, 0x03,
- 0x3C, 0x9E, 0xC3, 0x03,
- 0x1C, 0xDE, 0x83, 0x03,
- 0x1C, 0xC0, 0x83, 0x03,
- 0x1E, 0x00, 0x80, 0x03,
- 0xFE, 0x03, 0xC0, 0x03,
- 0xFE, 0x0F, 0xC0, 0x03,
- 0x7E, 0x0F, 0xE0, 0x01,
- 0x3E, 0x1E, 0xF0, 0x01,
- 0x1E, 0x1C, 0xF8, 0x00,
- 0x1E, 0x1C, 0x78, 0x00,
- 0x1E, 0x1C, 0x3C, 0x00,
- 0x1E, 0x1C, 0x1E, 0x00,
- 0x1C, 0x1C, 0x0F, 0x00,
- 0x3C, 0x9E, 0x07, 0x00,
- 0x7C, 0x8F, 0x07, 0x00,
- 0xF8, 0xCF, 0xFF, 0x03,
- 0xE0, 0xC3, 0xFF, 0x03,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l63.xbm b/app/bin/bitmaps/l63.xbm
deleted file mode 100644
index 6b95b4d..0000000
--- a/app/bin/bitmaps/l63.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l63_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3B,
- 0x0C, 0x38,
- 0x7C, 0x18,
- 0xFC, 0x3C,
- 0xCC, 0x38,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l63_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x98, 0x3B, 0x07,
- 0x1C, 0x00, 0x07,
- 0x1C, 0x00, 0x07,
- 0x1C, 0x00, 0x07,
- 0xFC, 0x81, 0x03,
- 0xBC, 0xC3, 0x07,
- 0x9C, 0x03, 0x07,
- 0x1C, 0x07, 0x0E,
- 0x1C, 0x07, 0x0E,
- 0x1C, 0x3F, 0x0E,
- 0x98, 0x3B, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l63_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xE0, 0x07, 0x7E, 0x00,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0x78, 0x8F, 0xE7, 0x01,
- 0x3C, 0x9E, 0xC7, 0x01,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x1C, 0x00, 0xC0, 0x03,
- 0x1E, 0x00, 0xC0, 0x01,
- 0xFE, 0x03, 0xE0, 0x01,
- 0xFE, 0x0F, 0xFC, 0x00,
- 0x7E, 0x0F, 0xFC, 0x00,
- 0x3E, 0x1E, 0xE0, 0x01,
- 0x1E, 0x1C, 0xC0, 0x03,
- 0x1E, 0x1C, 0x80, 0x03,
- 0x1E, 0x1C, 0x80, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1C, 0xDC, 0x83, 0x03,
- 0x3C, 0x9E, 0xC7, 0x03,
- 0x7C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x0F, 0xFF, 0x01,
- 0xE0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l64.xbm b/app/bin/bitmaps/l64.xbm
deleted file mode 100644
index e2a6cc5..0000000
--- a/app/bin/bitmaps/l64.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l64_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1C,
- 0xFC, 0x1C,
- 0x0C, 0x1E,
- 0x7C, 0x1E,
- 0xFC, 0x1F,
- 0xCC, 0x1B,
- 0xCC, 0x3F,
- 0xFC, 0x18,
- 0x78, 0x18,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l64_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0x81, 0x03,
- 0xB8, 0x83, 0x03,
- 0x98, 0xC3, 0x03,
- 0x1C, 0xC0, 0x03,
- 0x1C, 0xE0, 0x03,
- 0x1C, 0xE0, 0x03,
- 0xFC, 0xF1, 0x03,
- 0xBC, 0xB3, 0x03,
- 0x9C, 0xBB, 0x03,
- 0x1C, 0x9F, 0x03,
- 0x1C, 0xFF, 0x0F,
- 0x1C, 0x87, 0x03,
- 0x98, 0x83, 0x03,
- 0xB8, 0x83, 0x03,
- 0xF0, 0x81, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l64_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xE0, 0x07, 0xF0, 0x00,
- 0xF8, 0x0F, 0xF0, 0x00,
- 0x78, 0x0F, 0xF8, 0x00,
- 0x3C, 0x1E, 0xF8, 0x00,
- 0x1C, 0x1E, 0xFC, 0x00,
- 0x1C, 0x00, 0xFC, 0x00,
- 0x1E, 0x00, 0xFE, 0x00,
- 0xFE, 0x03, 0xEE, 0x00,
- 0xFE, 0x0F, 0xEF, 0x00,
- 0x7E, 0x8F, 0xE7, 0x00,
- 0x3E, 0x9E, 0xE7, 0x00,
- 0x1E, 0xDC, 0xE3, 0x00,
- 0x1E, 0xDC, 0xE1, 0x00,
- 0x1E, 0xFC, 0xFF, 0x03,
- 0x1E, 0xFC, 0xFF, 0x03,
- 0x1C, 0x1C, 0xE0, 0x00,
- 0x3C, 0x1E, 0xE0, 0x00,
- 0x7C, 0x0F, 0xE0, 0x00,
- 0xF8, 0x0F, 0xE0, 0x00,
- 0xE0, 0x03, 0xE0, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l65.xbm b/app/bin/bitmaps/l65.xbm
deleted file mode 100644
index 3ab1ce6..0000000
--- a/app/bin/bitmaps/l65.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l65_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x3F,
- 0xFC, 0x07,
- 0x0C, 0x07,
- 0x7C, 0x1F,
- 0xFC, 0x3B,
- 0xCC, 0x30,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l65_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xF1, 0x07,
- 0xB8, 0x73, 0x00,
- 0x98, 0x73, 0x00,
- 0x1C, 0x30, 0x00,
- 0x1C, 0x30, 0x00,
- 0x1C, 0xF8, 0x03,
- 0xFC, 0x79, 0x07,
- 0xBC, 0x3B, 0x07,
- 0x9C, 0x03, 0x0E,
- 0x1C, 0x07, 0x0E,
- 0x1C, 0x07, 0x0E,
- 0x1C, 0x3F, 0x06,
- 0x98, 0x3B, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l65_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xE0, 0x07, 0xFF, 0x03,
- 0xF8, 0x0F, 0xFF, 0x03,
- 0x78, 0x0F, 0x07, 0x00,
- 0x3C, 0x1E, 0x07, 0x00,
- 0x1C, 0x9E, 0x07, 0x00,
- 0x1C, 0x80, 0x07, 0x00,
- 0x1E, 0x80, 0x7F, 0x00,
- 0xFE, 0x83, 0xFF, 0x01,
- 0xFE, 0x8F, 0xE7, 0x01,
- 0x7E, 0x8F, 0xC3, 0x03,
- 0x3E, 0x1E, 0xC0, 0x03,
- 0x1E, 0x1C, 0x80, 0x03,
- 0x1E, 0x1C, 0x80, 0x03,
- 0x1E, 0x1C, 0x80, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1C, 0xDC, 0xC3, 0x03,
- 0x3C, 0x9E, 0xC3, 0x03,
- 0x7C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0xE0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l66.xbm b/app/bin/bitmaps/l66.xbm
deleted file mode 100644
index 1abbf7c..0000000
--- a/app/bin/bitmaps/l66.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l66_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0x0C, 0x03,
- 0x7C, 0x1F,
- 0xFC, 0x3F,
- 0xCC, 0x33,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l66_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x98, 0x33, 0x07,
- 0x1C, 0x38, 0x00,
- 0x1C, 0x38, 0x00,
- 0x1C, 0x38, 0x00,
- 0xFC, 0xF9, 0x03,
- 0xBC, 0x7B, 0x07,
- 0x9C, 0x3B, 0x07,
- 0x1C, 0x3F, 0x0E,
- 0x1C, 0x3F, 0x0E,
- 0x1C, 0x3F, 0x0E,
- 0x98, 0x33, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l66_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xE0, 0x07, 0xFC, 0x00,
- 0xF8, 0x0F, 0xFF, 0x01,
- 0x78, 0x0F, 0xEF, 0x01,
- 0x3C, 0x9E, 0xC7, 0x03,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x1C, 0x80, 0x03, 0x00,
- 0x1E, 0xC0, 0x03, 0x00,
- 0xFE, 0xC3, 0x7F, 0x00,
- 0xFE, 0xCF, 0xFF, 0x01,
- 0x7E, 0xCF, 0xEF, 0x01,
- 0x3E, 0xDE, 0xC7, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1C, 0x9C, 0x83, 0x03,
- 0x3C, 0x9E, 0xC7, 0x03,
- 0x7C, 0x8F, 0xEF, 0x01,
- 0xF8, 0x0F, 0xFF, 0x01,
- 0xE0, 0x03, 0x7C, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l67.xbm b/app/bin/bitmaps/l67.xbm
deleted file mode 100644
index 8cce97c..0000000
--- a/app/bin/bitmaps/l67.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l67_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x3F,
- 0xFC, 0x38,
- 0x0C, 0x18,
- 0x7C, 0x1C,
- 0xFC, 0x0C,
- 0xCC, 0x0E,
- 0xCC, 0x0E,
- 0xFC, 0x06,
- 0x78, 0x06,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l67_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xF9, 0x0F,
- 0xB8, 0x03, 0x0F,
- 0x98, 0x03, 0x07,
- 0x1C, 0x80, 0x03,
- 0x1C, 0x80, 0x03,
- 0x1C, 0xC0, 0x01,
- 0xFC, 0xC1, 0x01,
- 0xBC, 0xC3, 0x01,
- 0x9C, 0xE3, 0x00,
- 0x1C, 0xE7, 0x00,
- 0x1C, 0xE7, 0x00,
- 0x1C, 0xE7, 0x00,
- 0x98, 0xE3, 0x00,
- 0xB8, 0x73, 0x00,
- 0xF0, 0x71, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l67_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xE0, 0xC7, 0xFF, 0x03,
- 0xF8, 0xCF, 0xFF, 0x03,
- 0x78, 0x0F, 0xC0, 0x03,
- 0x3C, 0x1E, 0xE0, 0x01,
- 0x1C, 0x1E, 0xE0, 0x01,
- 0x1C, 0x00, 0xF0, 0x00,
- 0x1E, 0x00, 0xF0, 0x00,
- 0xFE, 0x03, 0x78, 0x00,
- 0xFE, 0x0F, 0x78, 0x00,
- 0x7E, 0x0F, 0x38, 0x00,
- 0x3E, 0x1E, 0x3C, 0x00,
- 0x1E, 0x1C, 0x3C, 0x00,
- 0x1E, 0x1C, 0x1C, 0x00,
- 0x1E, 0x1C, 0x1E, 0x00,
- 0x1E, 0x1C, 0x1E, 0x00,
- 0x1C, 0x1C, 0x1E, 0x00,
- 0x3C, 0x1E, 0x1E, 0x00,
- 0x7C, 0x0F, 0x0E, 0x00,
- 0xF8, 0x0F, 0x0E, 0x00,
- 0xE0, 0x03, 0x0E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l68.xbm b/app/bin/bitmaps/l68.xbm
deleted file mode 100644
index e32b8c2..0000000
--- a/app/bin/bitmaps/l68.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l68_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0x0C, 0x3B,
- 0x7C, 0x3F,
- 0xFC, 0x1E,
- 0xCC, 0x3F,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l68_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x98, 0x33, 0x07,
- 0x1C, 0x38, 0x07,
- 0x1C, 0x38, 0x07,
- 0x1C, 0x38, 0x07,
- 0xFC, 0x71, 0x07,
- 0xBC, 0xE3, 0x03,
- 0x9C, 0x73, 0x07,
- 0x1C, 0x3F, 0x06,
- 0x1C, 0x3F, 0x0E,
- 0x1C, 0x3F, 0x0E,
- 0x98, 0x3B, 0x06,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l68_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xE0, 0x07, 0x7E, 0x00,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0x78, 0x8F, 0xEF, 0x01,
- 0x3C, 0x9E, 0xC7, 0x01,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x1C, 0x80, 0xC3, 0x03,
- 0x1E, 0x80, 0xC7, 0x01,
- 0xFE, 0x03, 0xEF, 0x01,
- 0xFE, 0x0F, 0xFE, 0x00,
- 0x7E, 0x0F, 0xFF, 0x00,
- 0x3E, 0x9E, 0xE7, 0x01,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1C, 0xDC, 0x83, 0x03,
- 0x3C, 0x9E, 0xC3, 0x03,
- 0x7C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x0F, 0xFF, 0x01,
- 0xE0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l69.xbm b/app/bin/bitmaps/l69.xbm
deleted file mode 100644
index 8df10ca..0000000
--- a/app/bin/bitmaps/l69.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l69_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0x0C, 0x33,
- 0x7C, 0x33,
- 0xFC, 0x3F,
- 0xCC, 0x3E,
- 0xCC, 0x30,
- 0xFC, 0x3B,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l69_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x01,
- 0xB8, 0x73, 0x07,
- 0x98, 0x3B, 0x07,
- 0x1C, 0x38, 0x06,
- 0x1C, 0x38, 0x0E,
- 0x1C, 0x38, 0x0E,
- 0xFC, 0x39, 0x0F,
- 0xBC, 0x73, 0x0F,
- 0x9C, 0xE3, 0x0F,
- 0x1C, 0x07, 0x0E,
- 0x1C, 0x07, 0x06,
- 0x1C, 0x07, 0x06,
- 0x98, 0x3B, 0x07,
- 0xB8, 0x73, 0x03,
- 0xF0, 0xF1, 0x01,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l69_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xE0, 0x07, 0x7E, 0x00,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0x78, 0x8F, 0xEF, 0x01,
- 0x3C, 0x9E, 0xC7, 0x01,
- 0x1C, 0xDE, 0x83, 0x03,
- 0x1C, 0xC0, 0x83, 0x03,
- 0x1E, 0xC0, 0x83, 0x03,
- 0xFE, 0xC3, 0x83, 0x03,
- 0xFE, 0xCF, 0x83, 0x03,
- 0x7E, 0x8F, 0xC3, 0x03,
- 0x3E, 0x9E, 0xE7, 0x03,
- 0x1E, 0x1C, 0xFF, 0x03,
- 0x1E, 0x1C, 0xFE, 0x03,
- 0x1E, 0x1C, 0x80, 0x03,
- 0x1E, 0x1C, 0x80, 0x03,
- 0x1C, 0x9C, 0xC3, 0x03,
- 0x3C, 0x9E, 0xC3, 0x01,
- 0x7C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0xE0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l7.xbm b/app/bin/bitmaps/l7.xbm
deleted file mode 100644
index a86a7cc..0000000
--- a/app/bin/bitmaps/l7.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l7_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xE0, 0x07,
- 0x00, 0x07,
- 0x00, 0x03,
- 0x80, 0x03,
- 0x80, 0x01,
- 0xC0, 0x01,
- 0xC0, 0x01,
- 0xC0, 0x00,
- 0xC0, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l7_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xC0, 0x7F, 0x00,
- 0x00, 0x78, 0x00,
- 0x00, 0x38, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x1C, 0x00,
- 0x00, 0x0E, 0x00,
- 0x00, 0x0E, 0x00,
- 0x00, 0x0E, 0x00,
- 0x00, 0x07, 0x00,
- 0x00, 0x07, 0x00,
- 0x00, 0x07, 0x00,
- 0x00, 0x07, 0x00,
- 0x00, 0x07, 0x00,
- 0x80, 0x03, 0x00,
- 0x80, 0x03, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l7_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0xFF, 0x07, 0x00,
- 0x80, 0xFF, 0x07, 0x00,
- 0x00, 0x80, 0x07, 0x00,
- 0x00, 0xC0, 0x03, 0x00,
- 0x00, 0xC0, 0x03, 0x00,
- 0x00, 0xE0, 0x01, 0x00,
- 0x00, 0xE0, 0x01, 0x00,
- 0x00, 0xF0, 0x00, 0x00,
- 0x00, 0xF0, 0x00, 0x00,
- 0x00, 0x70, 0x00, 0x00,
- 0x00, 0x78, 0x00, 0x00,
- 0x00, 0x78, 0x00, 0x00,
- 0x00, 0x38, 0x00, 0x00,
- 0x00, 0x3C, 0x00, 0x00,
- 0x00, 0x3C, 0x00, 0x00,
- 0x00, 0x3C, 0x00, 0x00,
- 0x00, 0x3C, 0x00, 0x00,
- 0x00, 0x1C, 0x00, 0x00,
- 0x00, 0x1C, 0x00, 0x00,
- 0x00, 0x1C, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l70.xbm b/app/bin/bitmaps/l70.xbm
deleted file mode 100644
index cfa65e6..0000000
--- a/app/bin/bitmaps/l70.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l70_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x1E,
- 0xE0, 0x3F,
- 0x60, 0x33,
- 0x70, 0x33,
- 0x30, 0x33,
- 0x38, 0x33,
- 0x38, 0x33,
- 0x18, 0x3F,
- 0x18, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l70_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xFC, 0xE7, 0x03,
- 0x80, 0x77, 0x07,
- 0x80, 0x33, 0x07,
- 0xC0, 0x39, 0x06,
- 0xC0, 0x39, 0x06,
- 0xE0, 0x38, 0x0E,
- 0xE0, 0x38, 0x0E,
- 0xE0, 0x38, 0x0E,
- 0x70, 0x38, 0x0E,
- 0x70, 0x38, 0x0E,
- 0x70, 0x38, 0x06,
- 0x70, 0x38, 0x06,
- 0x70, 0x30, 0x07,
- 0x38, 0x70, 0x07,
- 0x38, 0xE0, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l70_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0x1F, 0x7E, 0x00,
- 0xFE, 0x1F, 0xFF, 0x00,
- 0x00, 0x1E, 0xEF, 0x01,
- 0x00, 0x8F, 0xC7, 0x01,
- 0x00, 0x8F, 0xC3, 0x03,
- 0x80, 0x87, 0xC3, 0x03,
- 0x80, 0xC7, 0x83, 0x03,
- 0xC0, 0xC3, 0x83, 0x03,
- 0xC0, 0xC3, 0x83, 0x03,
- 0xC0, 0xC1, 0x83, 0x03,
- 0xE0, 0xC1, 0x83, 0x03,
- 0xE0, 0xC1, 0x83, 0x03,
- 0xE0, 0xC0, 0x83, 0x03,
- 0xF0, 0xC0, 0x83, 0x03,
- 0xF0, 0x80, 0xC3, 0x03,
- 0xF0, 0x80, 0xC3, 0x03,
- 0xF0, 0x80, 0xC7, 0x01,
- 0x70, 0x00, 0xEF, 0x01,
- 0x70, 0x00, 0xFF, 0x00,
- 0x70, 0x00, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l71.xbm b/app/bin/bitmaps/l71.xbm
deleted file mode 100644
index eeb2d63..0000000
--- a/app/bin/bitmaps/l71.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l71_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x1C,
- 0xE0, 0x1E,
- 0x60, 0x1F,
- 0x70, 0x1C,
- 0x30, 0x1C,
- 0x38, 0x1C,
- 0x38, 0x1C,
- 0x18, 0x1C,
- 0x18, 0x1C,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l71_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xFC, 0x87, 0x03,
- 0x80, 0xC7, 0x03,
- 0x80, 0xC3, 0x03,
- 0xC0, 0xE1, 0x03,
- 0xC0, 0xB1, 0x03,
- 0xE0, 0x80, 0x03,
- 0xE0, 0x80, 0x03,
- 0xE0, 0x80, 0x03,
- 0x70, 0x80, 0x03,
- 0x70, 0x80, 0x03,
- 0x70, 0x80, 0x03,
- 0x70, 0x80, 0x03,
- 0x70, 0x80, 0x03,
- 0x38, 0x80, 0x03,
- 0x38, 0x80, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l71_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0x1F, 0x70, 0x00,
- 0xFE, 0x1F, 0x70, 0x00,
- 0x00, 0x1E, 0x78, 0x00,
- 0x00, 0x0F, 0x7C, 0x00,
- 0x00, 0x0F, 0x7E, 0x00,
- 0x80, 0x07, 0x7F, 0x00,
- 0x80, 0x07, 0x73, 0x00,
- 0xC0, 0x03, 0x70, 0x00,
- 0xC0, 0x03, 0x70, 0x00,
- 0xC0, 0x01, 0x70, 0x00,
- 0xE0, 0x01, 0x70, 0x00,
- 0xE0, 0x01, 0x70, 0x00,
- 0xE0, 0x00, 0x70, 0x00,
- 0xF0, 0x00, 0x70, 0x00,
- 0xF0, 0x00, 0x70, 0x00,
- 0xF0, 0x00, 0x70, 0x00,
- 0xF0, 0x00, 0x70, 0x00,
- 0x70, 0x00, 0x70, 0x00,
- 0x70, 0x00, 0x70, 0x00,
- 0x70, 0x00, 0x70, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l72.xbm b/app/bin/bitmaps/l72.xbm
deleted file mode 100644
index 9ff206f..0000000
--- a/app/bin/bitmaps/l72.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l72_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x1E,
- 0xE0, 0x3F,
- 0x60, 0x33,
- 0x70, 0x30,
- 0x30, 0x38,
- 0x38, 0x1C,
- 0x38, 0x0E,
- 0x18, 0x07,
- 0x18, 0x3F,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l72_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xFC, 0xE7, 0x03,
- 0x80, 0x77, 0x07,
- 0x80, 0x3B, 0x06,
- 0xC0, 0x39, 0x0E,
- 0xC0, 0x01, 0x0E,
- 0xE0, 0x00, 0x0E,
- 0xE0, 0x00, 0x07,
- 0xE0, 0x80, 0x07,
- 0x70, 0x80, 0x03,
- 0x70, 0xC0, 0x01,
- 0x70, 0xE0, 0x01,
- 0x70, 0xF0, 0x00,
- 0x70, 0x70, 0x00,
- 0x38, 0x78, 0x00,
- 0x38, 0xF8, 0x0F,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l72_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0x1F, 0xFE, 0x00,
- 0xFE, 0x1F, 0xFF, 0x01,
- 0x00, 0x9E, 0xE7, 0x03,
- 0x00, 0x8F, 0xC3, 0x03,
- 0x00, 0xCF, 0x83, 0x03,
- 0x80, 0xC7, 0x83, 0x03,
- 0x80, 0x07, 0x80, 0x03,
- 0xC0, 0x03, 0xC0, 0x03,
- 0xC0, 0x03, 0xC0, 0x03,
- 0xC0, 0x01, 0xE0, 0x01,
- 0xE0, 0x01, 0xF0, 0x01,
- 0xE0, 0x01, 0xF8, 0x00,
- 0xE0, 0x00, 0x78, 0x00,
- 0xF0, 0x00, 0x3C, 0x00,
- 0xF0, 0x00, 0x1E, 0x00,
- 0xF0, 0x00, 0x0F, 0x00,
- 0xF0, 0x80, 0x07, 0x00,
- 0x70, 0x80, 0x07, 0x00,
- 0x70, 0xC0, 0xFF, 0x03,
- 0x70, 0xC0, 0xFF, 0x03,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l73.xbm b/app/bin/bitmaps/l73.xbm
deleted file mode 100644
index 64dfbb4..0000000
--- a/app/bin/bitmaps/l73.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l73_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x1E,
- 0xE0, 0x3B,
- 0x60, 0x38,
- 0x70, 0x18,
- 0x30, 0x3C,
- 0x38, 0x38,
- 0x38, 0x33,
- 0x18, 0x3F,
- 0x18, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l73_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xFC, 0xE7, 0x03,
- 0x80, 0x77, 0x07,
- 0x80, 0x3B, 0x07,
- 0xC0, 0x01, 0x07,
- 0xC0, 0x01, 0x07,
- 0xE0, 0x00, 0x07,
- 0xE0, 0x80, 0x03,
- 0xE0, 0xC0, 0x07,
- 0x70, 0x00, 0x07,
- 0x70, 0x00, 0x0E,
- 0x70, 0x00, 0x0E,
- 0x70, 0x38, 0x0E,
- 0x70, 0x38, 0x07,
- 0x38, 0x70, 0x07,
- 0x38, 0xE0, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l73_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0x1F, 0x7E, 0x00,
- 0xFE, 0x1F, 0xFF, 0x00,
- 0x00, 0x9E, 0xE7, 0x01,
- 0x00, 0x8F, 0xC7, 0x01,
- 0x00, 0x8F, 0xC3, 0x03,
- 0x80, 0x07, 0xC0, 0x03,
- 0x80, 0x07, 0xC0, 0x01,
- 0xC0, 0x03, 0xE0, 0x01,
- 0xC0, 0x03, 0xFC, 0x00,
- 0xC0, 0x01, 0xFC, 0x00,
- 0xE0, 0x01, 0xE0, 0x01,
- 0xE0, 0x01, 0xC0, 0x03,
- 0xE0, 0x00, 0x80, 0x03,
- 0xF0, 0x00, 0x80, 0x03,
- 0xF0, 0xC0, 0x83, 0x03,
- 0xF0, 0xC0, 0x83, 0x03,
- 0xF0, 0x80, 0xC7, 0x03,
- 0x70, 0x80, 0xE7, 0x01,
- 0x70, 0x00, 0xFF, 0x01,
- 0x70, 0x00, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l74.xbm b/app/bin/bitmaps/l74.xbm
deleted file mode 100644
index c41ea54..0000000
--- a/app/bin/bitmaps/l74.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l74_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x1C,
- 0xE0, 0x1C,
- 0x60, 0x1E,
- 0x70, 0x1E,
- 0x30, 0x1F,
- 0x38, 0x1B,
- 0xB8, 0x3F,
- 0x18, 0x18,
- 0x18, 0x18,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l74_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xFC, 0x87, 0x03,
- 0x80, 0x87, 0x03,
- 0x80, 0xC3, 0x03,
- 0xC0, 0xC1, 0x03,
- 0xC0, 0xE1, 0x03,
- 0xE0, 0xE0, 0x03,
- 0xE0, 0xF0, 0x03,
- 0xE0, 0xB0, 0x03,
- 0x70, 0xB8, 0x03,
- 0x70, 0x98, 0x03,
- 0x70, 0xFC, 0x0F,
- 0x70, 0x80, 0x03,
- 0x70, 0x80, 0x03,
- 0x38, 0x80, 0x03,
- 0x38, 0x80, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l74_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0x1F, 0xF0, 0x00,
- 0xFE, 0x1F, 0xF0, 0x00,
- 0x00, 0x1E, 0xF8, 0x00,
- 0x00, 0x0F, 0xF8, 0x00,
- 0x00, 0x0F, 0xFC, 0x00,
- 0x80, 0x07, 0xFC, 0x00,
- 0x80, 0x07, 0xFE, 0x00,
- 0xC0, 0x03, 0xEE, 0x00,
- 0xC0, 0x03, 0xEF, 0x00,
- 0xC0, 0x81, 0xE7, 0x00,
- 0xE0, 0x81, 0xE7, 0x00,
- 0xE0, 0xC1, 0xE3, 0x00,
- 0xE0, 0xC0, 0xE1, 0x00,
- 0xF0, 0xE0, 0xFF, 0x03,
- 0xF0, 0xE0, 0xFF, 0x03,
- 0xF0, 0x00, 0xE0, 0x00,
- 0xF0, 0x00, 0xE0, 0x00,
- 0x70, 0x00, 0xE0, 0x00,
- 0x70, 0x00, 0xE0, 0x00,
- 0x70, 0x00, 0xE0, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l75.xbm b/app/bin/bitmaps/l75.xbm
deleted file mode 100644
index 58a6c52..0000000
--- a/app/bin/bitmaps/l75.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l75_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x3F,
- 0xE0, 0x07,
- 0x60, 0x07,
- 0x70, 0x1F,
- 0x30, 0x3B,
- 0x38, 0x30,
- 0x38, 0x33,
- 0x18, 0x3F,
- 0x18, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l75_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xFC, 0xF7, 0x07,
- 0x80, 0x77, 0x00,
- 0x80, 0x73, 0x00,
- 0xC0, 0x31, 0x00,
- 0xC0, 0x31, 0x00,
- 0xE0, 0xF8, 0x03,
- 0xE0, 0x78, 0x07,
- 0xE0, 0x38, 0x07,
- 0x70, 0x00, 0x0E,
- 0x70, 0x00, 0x0E,
- 0x70, 0x00, 0x0E,
- 0x70, 0x38, 0x06,
- 0x70, 0x38, 0x07,
- 0x38, 0x70, 0x07,
- 0x38, 0xE0, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l75_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0x1F, 0xFF, 0x03,
- 0xFE, 0x1F, 0xFF, 0x03,
- 0x00, 0x1E, 0x07, 0x00,
- 0x00, 0x0F, 0x07, 0x00,
- 0x00, 0x8F, 0x07, 0x00,
- 0x80, 0x87, 0x07, 0x00,
- 0x80, 0x87, 0x7F, 0x00,
- 0xC0, 0x83, 0xFF, 0x01,
- 0xC0, 0x83, 0xE7, 0x01,
- 0xC0, 0x81, 0xC3, 0x03,
- 0xE0, 0x01, 0xC0, 0x03,
- 0xE0, 0x01, 0x80, 0x03,
- 0xE0, 0x00, 0x80, 0x03,
- 0xF0, 0x00, 0x80, 0x03,
- 0xF0, 0xC0, 0x83, 0x03,
- 0xF0, 0xC0, 0xC3, 0x03,
- 0xF0, 0x80, 0xC3, 0x03,
- 0x70, 0x80, 0xE7, 0x01,
- 0x70, 0x00, 0xFF, 0x00,
- 0x70, 0x00, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l76.xbm b/app/bin/bitmaps/l76.xbm
deleted file mode 100644
index 9b385dc..0000000
--- a/app/bin/bitmaps/l76.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l76_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x1E,
- 0xE0, 0x3F,
- 0x60, 0x03,
- 0x70, 0x1F,
- 0x30, 0x3F,
- 0x38, 0x33,
- 0x38, 0x33,
- 0x18, 0x3F,
- 0x18, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l76_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xFC, 0xE7, 0x03,
- 0x80, 0x77, 0x07,
- 0x80, 0x33, 0x07,
- 0xC0, 0x39, 0x00,
- 0xC0, 0x39, 0x00,
- 0xE0, 0x38, 0x00,
- 0xE0, 0xF8, 0x03,
- 0xE0, 0x78, 0x07,
- 0x70, 0x38, 0x07,
- 0x70, 0x38, 0x0E,
- 0x70, 0x38, 0x0E,
- 0x70, 0x38, 0x0E,
- 0x70, 0x30, 0x07,
- 0x38, 0x70, 0x07,
- 0x38, 0xE0, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l76_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0x1F, 0xFC, 0x00,
- 0xFE, 0x1F, 0xFF, 0x01,
- 0x00, 0x1E, 0xEF, 0x01,
- 0x00, 0x8F, 0xC7, 0x03,
- 0x00, 0x8F, 0xC3, 0x03,
- 0x80, 0x87, 0x03, 0x00,
- 0x80, 0xC7, 0x03, 0x00,
- 0xC0, 0xC3, 0x7F, 0x00,
- 0xC0, 0xC3, 0xFF, 0x01,
- 0xC0, 0xC1, 0xEF, 0x01,
- 0xE0, 0xC1, 0xC7, 0x03,
- 0xE0, 0xC1, 0x83, 0x03,
- 0xE0, 0xC0, 0x83, 0x03,
- 0xF0, 0xC0, 0x83, 0x03,
- 0xF0, 0xC0, 0x83, 0x03,
- 0xF0, 0x80, 0x83, 0x03,
- 0xF0, 0x80, 0xC7, 0x03,
- 0x70, 0x80, 0xEF, 0x01,
- 0x70, 0x00, 0xFF, 0x01,
- 0x70, 0x00, 0x7C, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l77.xbm b/app/bin/bitmaps/l77.xbm
deleted file mode 100644
index c406f2d..0000000
--- a/app/bin/bitmaps/l77.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l77_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x3F,
- 0xE0, 0x38,
- 0x60, 0x18,
- 0x70, 0x1C,
- 0x30, 0x0C,
- 0x38, 0x0E,
- 0x38, 0x0E,
- 0x18, 0x06,
- 0x18, 0x06,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l77_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xFC, 0xFF, 0x0F,
- 0x80, 0x07, 0x0F,
- 0x80, 0x03, 0x07,
- 0xC0, 0x81, 0x03,
- 0xC0, 0x81, 0x03,
- 0xE0, 0xC0, 0x01,
- 0xE0, 0xC0, 0x01,
- 0xE0, 0xC0, 0x01,
- 0x70, 0xE0, 0x00,
- 0x70, 0xE0, 0x00,
- 0x70, 0xE0, 0x00,
- 0x70, 0xE0, 0x00,
- 0x70, 0xE0, 0x00,
- 0x38, 0x70, 0x00,
- 0x38, 0x70, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l77_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0xDF, 0xFF, 0x03,
- 0xFE, 0xDF, 0xFF, 0x03,
- 0x00, 0x1E, 0xC0, 0x03,
- 0x00, 0x0F, 0xE0, 0x01,
- 0x00, 0x0F, 0xE0, 0x01,
- 0x80, 0x07, 0xF0, 0x00,
- 0x80, 0x07, 0xF0, 0x00,
- 0xC0, 0x03, 0x78, 0x00,
- 0xC0, 0x03, 0x78, 0x00,
- 0xC0, 0x01, 0x38, 0x00,
- 0xE0, 0x01, 0x3C, 0x00,
- 0xE0, 0x01, 0x3C, 0x00,
- 0xE0, 0x00, 0x1C, 0x00,
- 0xF0, 0x00, 0x1E, 0x00,
- 0xF0, 0x00, 0x1E, 0x00,
- 0xF0, 0x00, 0x1E, 0x00,
- 0xF0, 0x00, 0x1E, 0x00,
- 0x70, 0x00, 0x0E, 0x00,
- 0x70, 0x00, 0x0E, 0x00,
- 0x70, 0x00, 0x0E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l78.xbm b/app/bin/bitmaps/l78.xbm
deleted file mode 100644
index 0674918..0000000
--- a/app/bin/bitmaps/l78.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l78_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x1E,
- 0xE0, 0x3F,
- 0x60, 0x3B,
- 0x70, 0x3F,
- 0x30, 0x1E,
- 0x38, 0x3F,
- 0x38, 0x33,
- 0x18, 0x3F,
- 0x18, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l78_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xFC, 0xE7, 0x03,
- 0x80, 0x77, 0x07,
- 0x80, 0x33, 0x07,
- 0xC0, 0x39, 0x07,
- 0xC0, 0x39, 0x07,
- 0xE0, 0x38, 0x07,
- 0xE0, 0x70, 0x07,
- 0xE0, 0xE0, 0x03,
- 0x70, 0x70, 0x07,
- 0x70, 0x38, 0x06,
- 0x70, 0x38, 0x0E,
- 0x70, 0x38, 0x0E,
- 0x70, 0x38, 0x06,
- 0x38, 0x70, 0x07,
- 0x38, 0xE0, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l78_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0x1F, 0x7E, 0x00,
- 0xFE, 0x1F, 0xFF, 0x00,
- 0x00, 0x9E, 0xEF, 0x01,
- 0x00, 0x8F, 0xC7, 0x01,
- 0x00, 0x8F, 0xC3, 0x03,
- 0x80, 0x87, 0xC3, 0x03,
- 0x80, 0x87, 0xC7, 0x01,
- 0xC0, 0x03, 0xEF, 0x01,
- 0xC0, 0x03, 0xFE, 0x00,
- 0xC0, 0x01, 0xFF, 0x00,
- 0xE0, 0x81, 0xE7, 0x01,
- 0xE0, 0x81, 0xC3, 0x03,
- 0xE0, 0xC0, 0x83, 0x03,
- 0xF0, 0xC0, 0x83, 0x03,
- 0xF0, 0xC0, 0x83, 0x03,
- 0xF0, 0xC0, 0x83, 0x03,
- 0xF0, 0x80, 0xC3, 0x03,
- 0x70, 0x80, 0xE7, 0x01,
- 0x70, 0x00, 0xFF, 0x01,
- 0x70, 0x00, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l79.xbm b/app/bin/bitmaps/l79.xbm
deleted file mode 100644
index c1d909b..0000000
--- a/app/bin/bitmaps/l79.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l79_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xFC, 0x1E,
- 0xE0, 0x3F,
- 0x60, 0x33,
- 0x70, 0x33,
- 0x30, 0x3F,
- 0x38, 0x3E,
- 0x38, 0x30,
- 0x18, 0x3B,
- 0x18, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l79_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xFC, 0xE7, 0x01,
- 0x80, 0x77, 0x07,
- 0x80, 0x3B, 0x07,
- 0xC0, 0x39, 0x06,
- 0xC0, 0x39, 0x0E,
- 0xE0, 0x38, 0x0E,
- 0xE0, 0x38, 0x0F,
- 0xE0, 0x70, 0x0F,
- 0x70, 0xE0, 0x0F,
- 0x70, 0x00, 0x0E,
- 0x70, 0x00, 0x06,
- 0x70, 0x00, 0x06,
- 0x70, 0x38, 0x07,
- 0x38, 0x70, 0x03,
- 0x38, 0xF0, 0x01,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l79_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0x1F, 0x7E, 0x00,
- 0xFE, 0x1F, 0xFF, 0x00,
- 0x00, 0x9E, 0xEF, 0x01,
- 0x00, 0x8F, 0xC7, 0x01,
- 0x00, 0xCF, 0x83, 0x03,
- 0x80, 0xC7, 0x83, 0x03,
- 0x80, 0xC7, 0x83, 0x03,
- 0xC0, 0xC3, 0x83, 0x03,
- 0xC0, 0xC3, 0x83, 0x03,
- 0xC0, 0x81, 0xC3, 0x03,
- 0xE0, 0x81, 0xE7, 0x03,
- 0xE0, 0x01, 0xFF, 0x03,
- 0xE0, 0x00, 0xFE, 0x03,
- 0xF0, 0x00, 0x80, 0x03,
- 0xF0, 0x00, 0x80, 0x03,
- 0xF0, 0x80, 0xC3, 0x03,
- 0xF0, 0x80, 0xC3, 0x01,
- 0x70, 0x80, 0xE7, 0x01,
- 0x70, 0x00, 0xFF, 0x00,
- 0x70, 0x00, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l8.xbm b/app/bin/bitmaps/l8.xbm
deleted file mode 100644
index 1054bfd..0000000
--- a/app/bin/bitmaps/l8.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l8_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xC0, 0x03,
- 0xE0, 0x07,
- 0x60, 0x07,
- 0xE0, 0x07,
- 0xC0, 0x03,
- 0xE0, 0x07,
- 0x60, 0x06,
- 0xE0, 0x07,
- 0xC0, 0x03,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l8_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x1F, 0x00,
- 0x80, 0x3B, 0x00,
- 0x80, 0x39, 0x00,
- 0xC0, 0x39, 0x00,
- 0xC0, 0x39, 0x00,
- 0xC0, 0x39, 0x00,
- 0x80, 0x3B, 0x00,
- 0x00, 0x1F, 0x00,
- 0x80, 0x3B, 0x00,
- 0xC0, 0x31, 0x00,
- 0xC0, 0x71, 0x00,
- 0xC0, 0x71, 0x00,
- 0xC0, 0x31, 0x00,
- 0x80, 0x3B, 0x00,
- 0x00, 0x1F, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l8_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xFC, 0x00, 0x00,
- 0x00, 0xFE, 0x01, 0x00,
- 0x00, 0xDF, 0x03, 0x00,
- 0x00, 0x8F, 0x03, 0x00,
- 0x00, 0x87, 0x07, 0x00,
- 0x00, 0x87, 0x07, 0x00,
- 0x00, 0x8F, 0x03, 0x00,
- 0x00, 0xDE, 0x03, 0x00,
- 0x00, 0xFC, 0x01, 0x00,
- 0x00, 0xFE, 0x01, 0x00,
- 0x00, 0xCF, 0x03, 0x00,
- 0x00, 0x87, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x00, 0x87, 0x07, 0x00,
- 0x00, 0xCF, 0x03, 0x00,
- 0x00, 0xFE, 0x03, 0x00,
- 0x00, 0xFC, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l80.xbm b/app/bin/bitmaps/l80.xbm
deleted file mode 100644
index 8dc12d0..0000000
--- a/app/bin/bitmaps/l80.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l80_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0xEC, 0x33,
- 0xFC, 0x33,
- 0x78, 0x33,
- 0xFC, 0x33,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l80_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x98, 0x33, 0x07,
- 0x9C, 0x3B, 0x06,
- 0x9C, 0x3B, 0x06,
- 0x9C, 0x3B, 0x0E,
- 0xB8, 0x3B, 0x0E,
- 0xF0, 0x39, 0x0E,
- 0xB8, 0x3B, 0x0E,
- 0x1C, 0x3B, 0x0E,
- 0x1C, 0x3F, 0x06,
- 0x1C, 0x3F, 0x06,
- 0x1C, 0x33, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l80_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0xF8, 0x07, 0xFF, 0x00,
- 0x7C, 0x0F, 0xEF, 0x01,
- 0x3C, 0x8E, 0xC7, 0x01,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x3C, 0xCE, 0x83, 0x03,
- 0x78, 0xCF, 0x83, 0x03,
- 0xF0, 0xC7, 0x83, 0x03,
- 0xF8, 0xC7, 0x83, 0x03,
- 0x3C, 0xCF, 0x83, 0x03,
- 0x1C, 0xDE, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1C, 0x9E, 0xC7, 0x01,
- 0x3C, 0x0F, 0xEF, 0x01,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l81.xbm b/app/bin/bitmaps/l81.xbm
deleted file mode 100644
index 118901b..0000000
--- a/app/bin/bitmaps/l81.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l81_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1C,
- 0xFC, 0x1E,
- 0xEC, 0x1F,
- 0xFC, 0x1C,
- 0x78, 0x1C,
- 0xFC, 0x1C,
- 0xCC, 0x1C,
- 0xFC, 0x1C,
- 0x78, 0x1C,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l81_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0x81, 0x03,
- 0xB8, 0xC3, 0x03,
- 0x98, 0xC3, 0x03,
- 0x9C, 0xE3, 0x03,
- 0x9C, 0xB3, 0x03,
- 0x9C, 0x83, 0x03,
- 0xB8, 0x83, 0x03,
- 0xF0, 0x81, 0x03,
- 0xB8, 0x83, 0x03,
- 0x1C, 0x83, 0x03,
- 0x1C, 0x87, 0x03,
- 0x1C, 0x87, 0x03,
- 0x1C, 0x83, 0x03,
- 0xB8, 0x83, 0x03,
- 0xF0, 0x81, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l81_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0x70, 0x00,
- 0xF8, 0x07, 0x70, 0x00,
- 0x7C, 0x0F, 0x78, 0x00,
- 0x3C, 0x0E, 0x7C, 0x00,
- 0x1C, 0x1E, 0x7E, 0x00,
- 0x1C, 0x1E, 0x7F, 0x00,
- 0x3C, 0x0E, 0x73, 0x00,
- 0x78, 0x0F, 0x70, 0x00,
- 0xF0, 0x07, 0x70, 0x00,
- 0xF8, 0x07, 0x70, 0x00,
- 0x3C, 0x0F, 0x70, 0x00,
- 0x1C, 0x1E, 0x70, 0x00,
- 0x1E, 0x1C, 0x70, 0x00,
- 0x1E, 0x1C, 0x70, 0x00,
- 0x1E, 0x1C, 0x70, 0x00,
- 0x1E, 0x1C, 0x70, 0x00,
- 0x1C, 0x1E, 0x70, 0x00,
- 0x3C, 0x0F, 0x70, 0x00,
- 0xF8, 0x0F, 0x70, 0x00,
- 0xF0, 0x03, 0x70, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l82.xbm b/app/bin/bitmaps/l82.xbm
deleted file mode 100644
index 74edb5d..0000000
--- a/app/bin/bitmaps/l82.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l82_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0xEC, 0x33,
- 0xFC, 0x30,
- 0x78, 0x38,
- 0xFC, 0x1C,
- 0xCC, 0x0E,
- 0xFC, 0x07,
- 0x78, 0x3F,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l82_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x98, 0x3B, 0x06,
- 0x9C, 0x3B, 0x0E,
- 0x9C, 0x03, 0x0E,
- 0x9C, 0x03, 0x0E,
- 0xB8, 0x03, 0x07,
- 0xF0, 0x81, 0x07,
- 0xB8, 0x83, 0x03,
- 0x1C, 0xC3, 0x01,
- 0x1C, 0xE7, 0x01,
- 0x1C, 0xF7, 0x00,
- 0x1C, 0x73, 0x00,
- 0xB8, 0x7B, 0x00,
- 0xF0, 0xF9, 0x0F,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l82_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0xFE, 0x00,
- 0xF8, 0x07, 0xFF, 0x01,
- 0x7C, 0x8F, 0xE7, 0x03,
- 0x3C, 0x8E, 0xC3, 0x03,
- 0x1C, 0xDE, 0x83, 0x03,
- 0x1C, 0xDE, 0x83, 0x03,
- 0x3C, 0x0E, 0x80, 0x03,
- 0x78, 0x0F, 0xC0, 0x03,
- 0xF0, 0x07, 0xC0, 0x03,
- 0xF8, 0x07, 0xE0, 0x01,
- 0x3C, 0x0F, 0xF0, 0x01,
- 0x1C, 0x1E, 0xF8, 0x00,
- 0x1E, 0x1C, 0x78, 0x00,
- 0x1E, 0x1C, 0x3C, 0x00,
- 0x1E, 0x1C, 0x1E, 0x00,
- 0x1E, 0x1C, 0x0F, 0x00,
- 0x1C, 0x9E, 0x07, 0x00,
- 0x3C, 0x8F, 0x07, 0x00,
- 0xF8, 0xCF, 0xFF, 0x03,
- 0xF0, 0xC3, 0xFF, 0x03,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l83.xbm b/app/bin/bitmaps/l83.xbm
deleted file mode 100644
index 3f7a1a0..0000000
--- a/app/bin/bitmaps/l83.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l83_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3B,
- 0xEC, 0x38,
- 0xFC, 0x18,
- 0x78, 0x3C,
- 0xFC, 0x38,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l83_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x98, 0x3B, 0x07,
- 0x9C, 0x03, 0x07,
- 0x9C, 0x03, 0x07,
- 0x9C, 0x03, 0x07,
- 0xB8, 0x83, 0x03,
- 0xF0, 0xC1, 0x07,
- 0xB8, 0x03, 0x07,
- 0x1C, 0x03, 0x0E,
- 0x1C, 0x07, 0x0E,
- 0x1C, 0x3F, 0x0E,
- 0x1C, 0x3B, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l83_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0xF8, 0x07, 0xFF, 0x00,
- 0x7C, 0x8F, 0xE7, 0x01,
- 0x3C, 0x8E, 0xC7, 0x01,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x1C, 0x1E, 0xC0, 0x03,
- 0x3C, 0x0E, 0xC0, 0x01,
- 0x78, 0x0F, 0xE0, 0x01,
- 0xF0, 0x07, 0xFC, 0x00,
- 0xF8, 0x07, 0xFC, 0x00,
- 0x3C, 0x0F, 0xE0, 0x01,
- 0x1C, 0x1E, 0xC0, 0x03,
- 0x1E, 0x1C, 0x80, 0x03,
- 0x1E, 0x1C, 0x80, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1C, 0x9E, 0xC7, 0x03,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x0F, 0xFF, 0x01,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l84.xbm b/app/bin/bitmaps/l84.xbm
deleted file mode 100644
index 0cce4be..0000000
--- a/app/bin/bitmaps/l84.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l84_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1C,
- 0xFC, 0x1C,
- 0xEC, 0x1E,
- 0xFC, 0x1E,
- 0x78, 0x1F,
- 0xFC, 0x1B,
- 0xCC, 0x3F,
- 0xFC, 0x18,
- 0x78, 0x18,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l84_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0x81, 0x03,
- 0xB8, 0x83, 0x03,
- 0x98, 0xC3, 0x03,
- 0x9C, 0xC3, 0x03,
- 0x9C, 0xE3, 0x03,
- 0x9C, 0xE3, 0x03,
- 0xB8, 0xF3, 0x03,
- 0xF0, 0xB1, 0x03,
- 0xB8, 0xBB, 0x03,
- 0x1C, 0x9B, 0x03,
- 0x1C, 0xFF, 0x0F,
- 0x1C, 0x87, 0x03,
- 0x1C, 0x83, 0x03,
- 0xB8, 0x83, 0x03,
- 0xF0, 0x81, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l84_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0xF0, 0x00,
- 0xF8, 0x07, 0xF0, 0x00,
- 0x7C, 0x0F, 0xF8, 0x00,
- 0x3C, 0x0E, 0xF8, 0x00,
- 0x1C, 0x1E, 0xFC, 0x00,
- 0x1C, 0x1E, 0xFC, 0x00,
- 0x3C, 0x0E, 0xFE, 0x00,
- 0x78, 0x0F, 0xEE, 0x00,
- 0xF0, 0x07, 0xEF, 0x00,
- 0xF8, 0x87, 0xE7, 0x00,
- 0x3C, 0x8F, 0xE7, 0x00,
- 0x1C, 0xDE, 0xE3, 0x00,
- 0x1E, 0xDC, 0xE1, 0x00,
- 0x1E, 0xFC, 0xFF, 0x03,
- 0x1E, 0xFC, 0xFF, 0x03,
- 0x1E, 0x1C, 0xE0, 0x00,
- 0x1C, 0x1E, 0xE0, 0x00,
- 0x3C, 0x0F, 0xE0, 0x00,
- 0xF8, 0x0F, 0xE0, 0x00,
- 0xF0, 0x03, 0xE0, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l85.xbm b/app/bin/bitmaps/l85.xbm
deleted file mode 100644
index 420ea67..0000000
--- a/app/bin/bitmaps/l85.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l85_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x3F,
- 0xFC, 0x07,
- 0xEC, 0x07,
- 0xFC, 0x1F,
- 0x78, 0x3B,
- 0xFC, 0x30,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l85_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xF1, 0x07,
- 0xB8, 0x73, 0x00,
- 0x98, 0x73, 0x00,
- 0x9C, 0x33, 0x00,
- 0x9C, 0x33, 0x00,
- 0x9C, 0xFB, 0x03,
- 0xB8, 0x7B, 0x07,
- 0xF0, 0x39, 0x07,
- 0xB8, 0x03, 0x0E,
- 0x1C, 0x03, 0x0E,
- 0x1C, 0x07, 0x0E,
- 0x1C, 0x3F, 0x06,
- 0x1C, 0x3B, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l85_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0xFF, 0x03,
- 0xF8, 0x07, 0xFF, 0x03,
- 0x7C, 0x0F, 0x07, 0x00,
- 0x3C, 0x0E, 0x07, 0x00,
- 0x1C, 0x9E, 0x07, 0x00,
- 0x1C, 0x9E, 0x07, 0x00,
- 0x3C, 0x8E, 0x7F, 0x00,
- 0x78, 0x8F, 0xFF, 0x01,
- 0xF0, 0x87, 0xE7, 0x01,
- 0xF8, 0x87, 0xC3, 0x03,
- 0x3C, 0x0F, 0xC0, 0x03,
- 0x1C, 0x1E, 0x80, 0x03,
- 0x1E, 0x1C, 0x80, 0x03,
- 0x1E, 0x1C, 0x80, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0xC3, 0x03,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l86.xbm b/app/bin/bitmaps/l86.xbm
deleted file mode 100644
index 31ee6f1..0000000
--- a/app/bin/bitmaps/l86.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l86_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0xEC, 0x03,
- 0xFC, 0x1F,
- 0x78, 0x3F,
- 0xFC, 0x33,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l86_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x98, 0x33, 0x07,
- 0x9C, 0x3B, 0x00,
- 0x9C, 0x3B, 0x00,
- 0x9C, 0x3B, 0x00,
- 0xB8, 0xFB, 0x03,
- 0xF0, 0x79, 0x07,
- 0xB8, 0x3B, 0x07,
- 0x1C, 0x3B, 0x0E,
- 0x1C, 0x3F, 0x0E,
- 0x1C, 0x3F, 0x0E,
- 0x1C, 0x33, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l86_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0xFC, 0x00,
- 0xF8, 0x07, 0xFF, 0x01,
- 0x7C, 0x0F, 0xEF, 0x01,
- 0x3C, 0x8E, 0xC7, 0x03,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x1C, 0x9E, 0x03, 0x00,
- 0x3C, 0xCE, 0x03, 0x00,
- 0x78, 0xCF, 0x7F, 0x00,
- 0xF0, 0xC7, 0xFF, 0x01,
- 0xF8, 0xC7, 0xEF, 0x01,
- 0x3C, 0xCF, 0xC7, 0x03,
- 0x1C, 0xDE, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0x9C, 0x83, 0x03,
- 0x1C, 0x9E, 0xC7, 0x03,
- 0x3C, 0x8F, 0xEF, 0x01,
- 0xF8, 0x0F, 0xFF, 0x01,
- 0xF0, 0x03, 0x7C, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l87.xbm b/app/bin/bitmaps/l87.xbm
deleted file mode 100644
index dcd52b5..0000000
--- a/app/bin/bitmaps/l87.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l87_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x3F,
- 0xFC, 0x38,
- 0xEC, 0x18,
- 0xFC, 0x1C,
- 0x78, 0x0C,
- 0xFC, 0x0E,
- 0xCC, 0x0E,
- 0xFC, 0x06,
- 0x78, 0x06,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l87_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xF9, 0x0F,
- 0xB8, 0x03, 0x0F,
- 0x98, 0x03, 0x07,
- 0x9C, 0x83, 0x03,
- 0x9C, 0x83, 0x03,
- 0x9C, 0xC3, 0x01,
- 0xB8, 0xC3, 0x01,
- 0xF0, 0xC1, 0x01,
- 0xB8, 0xE3, 0x00,
- 0x1C, 0xE3, 0x00,
- 0x1C, 0xE7, 0x00,
- 0x1C, 0xE7, 0x00,
- 0x1C, 0xE3, 0x00,
- 0xB8, 0x73, 0x00,
- 0xF0, 0x71, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l87_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0xC3, 0xFF, 0x03,
- 0xF8, 0xC7, 0xFF, 0x03,
- 0x7C, 0x0F, 0xC0, 0x03,
- 0x3C, 0x0E, 0xE0, 0x01,
- 0x1C, 0x1E, 0xE0, 0x01,
- 0x1C, 0x1E, 0xF0, 0x00,
- 0x3C, 0x0E, 0xF0, 0x00,
- 0x78, 0x0F, 0x78, 0x00,
- 0xF0, 0x07, 0x78, 0x00,
- 0xF8, 0x07, 0x38, 0x00,
- 0x3C, 0x0F, 0x3C, 0x00,
- 0x1C, 0x1E, 0x3C, 0x00,
- 0x1E, 0x1C, 0x1C, 0x00,
- 0x1E, 0x1C, 0x1E, 0x00,
- 0x1E, 0x1C, 0x1E, 0x00,
- 0x1E, 0x1C, 0x1E, 0x00,
- 0x1C, 0x1E, 0x1E, 0x00,
- 0x3C, 0x0F, 0x0E, 0x00,
- 0xF8, 0x0F, 0x0E, 0x00,
- 0xF0, 0x03, 0x0E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l88.xbm b/app/bin/bitmaps/l88.xbm
deleted file mode 100644
index 4d06b28..0000000
--- a/app/bin/bitmaps/l88.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l88_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0xEC, 0x3B,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l88_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x98, 0x33, 0x07,
- 0x9C, 0x3B, 0x07,
- 0x9C, 0x3B, 0x07,
- 0x9C, 0x3B, 0x07,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0xB8, 0x73, 0x07,
- 0x1C, 0x3B, 0x06,
- 0x1C, 0x3F, 0x0E,
- 0x1C, 0x3F, 0x0E,
- 0x1C, 0x3B, 0x06,
- 0xB8, 0x73, 0x07,
- 0xF0, 0xE1, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l88_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0xF8, 0x07, 0xFF, 0x00,
- 0x7C, 0x8F, 0xEF, 0x01,
- 0x3C, 0x8E, 0xC7, 0x01,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x3C, 0x8E, 0xC7, 0x01,
- 0x78, 0x0F, 0xEF, 0x01,
- 0xF0, 0x07, 0xFE, 0x00,
- 0xF8, 0x07, 0xFF, 0x00,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x0F, 0xFF, 0x01,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l89.xbm b/app/bin/bitmaps/l89.xbm
deleted file mode 100644
index 74b1448..0000000
--- a/app/bin/bitmaps/l89.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l89_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0xEC, 0x33,
- 0xFC, 0x33,
- 0x78, 0x3F,
- 0xFC, 0x3E,
- 0xCC, 0x30,
- 0xFC, 0x3B,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l89_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE1, 0x01,
- 0xB8, 0x73, 0x07,
- 0x98, 0x3B, 0x07,
- 0x9C, 0x3B, 0x06,
- 0x9C, 0x3B, 0x0E,
- 0x9C, 0x3B, 0x0E,
- 0xB8, 0x3B, 0x0F,
- 0xF0, 0x71, 0x0F,
- 0xB8, 0xE3, 0x0F,
- 0x1C, 0x03, 0x0E,
- 0x1C, 0x07, 0x06,
- 0x1C, 0x07, 0x06,
- 0x1C, 0x3B, 0x07,
- 0xB8, 0x73, 0x03,
- 0xF0, 0xF1, 0x01,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l89_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0xF8, 0x07, 0xFF, 0x00,
- 0x7C, 0x8F, 0xEF, 0x01,
- 0x3C, 0x8E, 0xC7, 0x01,
- 0x1C, 0xDE, 0x83, 0x03,
- 0x1C, 0xDE, 0x83, 0x03,
- 0x3C, 0xCE, 0x83, 0x03,
- 0x78, 0xCF, 0x83, 0x03,
- 0xF0, 0xC7, 0x83, 0x03,
- 0xF8, 0x87, 0xC3, 0x03,
- 0x3C, 0x8F, 0xE7, 0x03,
- 0x1C, 0x1E, 0xFF, 0x03,
- 0x1E, 0x1C, 0xFE, 0x03,
- 0x1E, 0x1C, 0x80, 0x03,
- 0x1E, 0x1C, 0x80, 0x03,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1C, 0x9E, 0xC3, 0x01,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x0F, 0xFF, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l9.xbm b/app/bin/bitmaps/l9.xbm
deleted file mode 100644
index 281474c..0000000
--- a/app/bin/bitmaps/l9.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l9_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0xC0, 0x03,
- 0xE0, 0x07,
- 0x60, 0x06,
- 0x60, 0x06,
- 0xE0, 0x07,
- 0xC0, 0x07,
- 0x00, 0x06,
- 0x60, 0x07,
- 0xC0, 0x03,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l9_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x0F, 0x00,
- 0x80, 0x3B, 0x00,
- 0xC0, 0x39, 0x00,
- 0xC0, 0x31, 0x00,
- 0xC0, 0x71, 0x00,
- 0xC0, 0x71, 0x00,
- 0xC0, 0x79, 0x00,
- 0x80, 0x7B, 0x00,
- 0x00, 0x7F, 0x00,
- 0x00, 0x70, 0x00,
- 0x00, 0x30, 0x00,
- 0x00, 0x30, 0x00,
- 0xC0, 0x39, 0x00,
- 0x80, 0x1B, 0x00,
- 0x80, 0x0F, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l9_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xFC, 0x00, 0x00,
- 0x00, 0xFE, 0x01, 0x00,
- 0x00, 0xDF, 0x03, 0x00,
- 0x00, 0x8F, 0x03, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x80, 0x07, 0x07, 0x00,
- 0x00, 0x87, 0x07, 0x00,
- 0x00, 0xCF, 0x07, 0x00,
- 0x00, 0xFE, 0x07, 0x00,
- 0x00, 0xFC, 0x07, 0x00,
- 0x00, 0x00, 0x07, 0x00,
- 0x00, 0x00, 0x07, 0x00,
- 0x00, 0x87, 0x07, 0x00,
- 0x00, 0x87, 0x03, 0x00,
- 0x00, 0xCF, 0x03, 0x00,
- 0x00, 0xFE, 0x01, 0x00,
- 0x00, 0xFC, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l90.xbm b/app/bin/bitmaps/l90.xbm
deleted file mode 100644
index d56c618..0000000
--- a/app/bin/bitmaps/l90.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l90_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0xCC, 0x33,
- 0xCC, 0x33,
- 0xFC, 0x33,
- 0xF8, 0x33,
- 0xC0, 0x33,
- 0xEC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l90_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE0, 0x03,
- 0xB8, 0x73, 0x07,
- 0x9C, 0x33, 0x07,
- 0x1C, 0x3B, 0x06,
- 0x1C, 0x3F, 0x06,
- 0x1C, 0x3F, 0x0E,
- 0x9C, 0x3F, 0x0E,
- 0xB8, 0x3F, 0x0E,
- 0xF0, 0x3F, 0x0E,
- 0x00, 0x3F, 0x0E,
- 0x00, 0x3B, 0x06,
- 0x00, 0x3B, 0x06,
- 0x9C, 0x33, 0x07,
- 0xB8, 0x71, 0x07,
- 0xF8, 0xE0, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l90_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0xF8, 0x07, 0xFF, 0x00,
- 0x7C, 0x0F, 0xEF, 0x01,
- 0x3C, 0x8E, 0xC7, 0x01,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1C, 0xDE, 0x83, 0x03,
- 0x3C, 0xDF, 0x83, 0x03,
- 0xF8, 0xDF, 0x83, 0x03,
- 0xF0, 0xDF, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x00, 0x9C, 0xC3, 0x03,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x1C, 0x8E, 0xC7, 0x01,
- 0x3C, 0x0F, 0xEF, 0x01,
- 0xF8, 0x07, 0xFF, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l91.xbm b/app/bin/bitmaps/l91.xbm
deleted file mode 100644
index cb63233..0000000
--- a/app/bin/bitmaps/l91.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l91_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1C,
- 0xFC, 0x1E,
- 0xCC, 0x1F,
- 0xCC, 0x1C,
- 0xFC, 0x1C,
- 0xF8, 0x1C,
- 0xC0, 0x1C,
- 0xEC, 0x1C,
- 0x78, 0x1C,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l91_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0x80, 0x03,
- 0xB8, 0xC3, 0x03,
- 0x9C, 0xC3, 0x03,
- 0x1C, 0xE3, 0x03,
- 0x1C, 0xB7, 0x03,
- 0x1C, 0x87, 0x03,
- 0x9C, 0x87, 0x03,
- 0xB8, 0x87, 0x03,
- 0xF0, 0x87, 0x03,
- 0x00, 0x87, 0x03,
- 0x00, 0x83, 0x03,
- 0x00, 0x83, 0x03,
- 0x9C, 0x83, 0x03,
- 0xB8, 0x81, 0x03,
- 0xF8, 0x80, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l91_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0x70, 0x00,
- 0xF8, 0x07, 0x70, 0x00,
- 0x7C, 0x0F, 0x78, 0x00,
- 0x3C, 0x0E, 0x7C, 0x00,
- 0x1E, 0x1C, 0x7E, 0x00,
- 0x1E, 0x1C, 0x7F, 0x00,
- 0x1E, 0x1C, 0x73, 0x00,
- 0x1E, 0x1C, 0x70, 0x00,
- 0x1E, 0x1C, 0x70, 0x00,
- 0x1C, 0x1E, 0x70, 0x00,
- 0x3C, 0x1F, 0x70, 0x00,
- 0xF8, 0x1F, 0x70, 0x00,
- 0xF0, 0x1F, 0x70, 0x00,
- 0x00, 0x1C, 0x70, 0x00,
- 0x00, 0x1C, 0x70, 0x00,
- 0x1C, 0x1E, 0x70, 0x00,
- 0x1C, 0x0E, 0x70, 0x00,
- 0x3C, 0x0F, 0x70, 0x00,
- 0xF8, 0x07, 0x70, 0x00,
- 0xF0, 0x03, 0x70, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l92.xbm b/app/bin/bitmaps/l92.xbm
deleted file mode 100644
index 8323e42..0000000
--- a/app/bin/bitmaps/l92.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l92_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0xCC, 0x33,
- 0xCC, 0x30,
- 0xFC, 0x38,
- 0xF8, 0x1C,
- 0xC0, 0x0E,
- 0xEC, 0x07,
- 0x78, 0x3F,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l92_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE0, 0x03,
- 0xB8, 0x73, 0x07,
- 0x9C, 0x3B, 0x06,
- 0x1C, 0x3B, 0x0E,
- 0x1C, 0x07, 0x0E,
- 0x1C, 0x07, 0x0E,
- 0x9C, 0x07, 0x07,
- 0xB8, 0x87, 0x07,
- 0xF0, 0x87, 0x03,
- 0x00, 0xC7, 0x01,
- 0x00, 0xE3, 0x01,
- 0x00, 0xF3, 0x00,
- 0x9C, 0x73, 0x00,
- 0xB8, 0x79, 0x00,
- 0xF8, 0xF8, 0x0F,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l92_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0xFE, 0x00,
- 0xF8, 0x07, 0xFF, 0x01,
- 0x7C, 0x8F, 0xE7, 0x03,
- 0x3C, 0x8E, 0xC3, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0x1C, 0x80, 0x03,
- 0x1E, 0x1C, 0xC0, 0x03,
- 0x1E, 0x1C, 0xC0, 0x03,
- 0x1C, 0x1E, 0xE0, 0x01,
- 0x3C, 0x1F, 0xF0, 0x01,
- 0xF8, 0x1F, 0xF8, 0x00,
- 0xF0, 0x1F, 0x78, 0x00,
- 0x00, 0x1C, 0x3C, 0x00,
- 0x00, 0x1C, 0x1E, 0x00,
- 0x1C, 0x1E, 0x0F, 0x00,
- 0x1C, 0x8E, 0x07, 0x00,
- 0x3C, 0x8F, 0x07, 0x00,
- 0xF8, 0xC7, 0xFF, 0x03,
- 0xF0, 0xC3, 0xFF, 0x03,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l93.xbm b/app/bin/bitmaps/l93.xbm
deleted file mode 100644
index 4be9859..0000000
--- a/app/bin/bitmaps/l93.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l93_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3B,
- 0xCC, 0x38,
- 0xCC, 0x18,
- 0xFC, 0x3C,
- 0xF8, 0x38,
- 0xC0, 0x33,
- 0xEC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l93_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE0, 0x03,
- 0xB8, 0x73, 0x07,
- 0x9C, 0x3B, 0x07,
- 0x1C, 0x03, 0x07,
- 0x1C, 0x07, 0x07,
- 0x1C, 0x07, 0x07,
- 0x9C, 0x87, 0x03,
- 0xB8, 0xC7, 0x07,
- 0xF0, 0x07, 0x07,
- 0x00, 0x07, 0x0E,
- 0x00, 0x03, 0x0E,
- 0x00, 0x3B, 0x0E,
- 0x9C, 0x3B, 0x07,
- 0xB8, 0x71, 0x07,
- 0xF8, 0xE0, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l93_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0xF8, 0x07, 0xFF, 0x00,
- 0x7C, 0x8F, 0xE7, 0x01,
- 0x3C, 0x8E, 0xC7, 0x01,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1E, 0x1C, 0xC0, 0x03,
- 0x1E, 0x1C, 0xC0, 0x01,
- 0x1E, 0x1C, 0xE0, 0x01,
- 0x1E, 0x1C, 0xFC, 0x00,
- 0x1C, 0x1E, 0xFC, 0x00,
- 0x3C, 0x1F, 0xE0, 0x01,
- 0xF8, 0x1F, 0xC0, 0x03,
- 0xF0, 0x1F, 0x80, 0x03,
- 0x00, 0x1C, 0x80, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x1C, 0xDE, 0x83, 0x03,
- 0x1C, 0x8E, 0xC7, 0x03,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x07, 0xFF, 0x01,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l94.xbm b/app/bin/bitmaps/l94.xbm
deleted file mode 100644
index 65f4306..0000000
--- a/app/bin/bitmaps/l94.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l94_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1C,
- 0xFC, 0x1C,
- 0xCC, 0x1E,
- 0xCC, 0x1E,
- 0xFC, 0x1F,
- 0xF8, 0x1B,
- 0xC0, 0x3F,
- 0xEC, 0x18,
- 0x78, 0x18,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l94_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0x80, 0x03,
- 0xB8, 0x83, 0x03,
- 0x9C, 0xC3, 0x03,
- 0x1C, 0xC3, 0x03,
- 0x1C, 0xE7, 0x03,
- 0x1C, 0xE7, 0x03,
- 0x9C, 0xF7, 0x03,
- 0xB8, 0xB7, 0x03,
- 0xF0, 0xBF, 0x03,
- 0x00, 0x9F, 0x03,
- 0x00, 0xFF, 0x0F,
- 0x00, 0x83, 0x03,
- 0x9C, 0x83, 0x03,
- 0xB8, 0x81, 0x03,
- 0xF8, 0x80, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l94_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0xF0, 0x00,
- 0xF8, 0x07, 0xF0, 0x00,
- 0x7C, 0x0F, 0xF8, 0x00,
- 0x3C, 0x0E, 0xF8, 0x00,
- 0x1E, 0x1C, 0xFC, 0x00,
- 0x1E, 0x1C, 0xFC, 0x00,
- 0x1E, 0x1C, 0xFE, 0x00,
- 0x1E, 0x1C, 0xEE, 0x00,
- 0x1E, 0x1C, 0xEF, 0x00,
- 0x1C, 0x9E, 0xE7, 0x00,
- 0x3C, 0x9F, 0xE7, 0x00,
- 0xF8, 0xDF, 0xE3, 0x00,
- 0xF0, 0xDF, 0xE1, 0x00,
- 0x00, 0xFC, 0xFF, 0x03,
- 0x00, 0xFC, 0xFF, 0x03,
- 0x1C, 0x1E, 0xE0, 0x00,
- 0x1C, 0x0E, 0xE0, 0x00,
- 0x3C, 0x0F, 0xE0, 0x00,
- 0xF8, 0x07, 0xE0, 0x00,
- 0xF0, 0x03, 0xE0, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l95.xbm b/app/bin/bitmaps/l95.xbm
deleted file mode 100644
index e8ab2c2..0000000
--- a/app/bin/bitmaps/l95.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l95_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x3F,
- 0xFC, 0x07,
- 0xCC, 0x07,
- 0xCC, 0x1F,
- 0xFC, 0x3B,
- 0xF8, 0x30,
- 0xC0, 0x33,
- 0xEC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l95_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xF0, 0x07,
- 0xB8, 0x73, 0x00,
- 0x9C, 0x73, 0x00,
- 0x1C, 0x33, 0x00,
- 0x1C, 0x37, 0x00,
- 0x1C, 0xFF, 0x03,
- 0x9C, 0x7F, 0x07,
- 0xB8, 0x3F, 0x07,
- 0xF0, 0x07, 0x0E,
- 0x00, 0x07, 0x0E,
- 0x00, 0x03, 0x0E,
- 0x00, 0x3B, 0x06,
- 0x9C, 0x3B, 0x07,
- 0xB8, 0x71, 0x07,
- 0xF8, 0xE0, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l95_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0xFF, 0x03,
- 0xF8, 0x07, 0xFF, 0x03,
- 0x7C, 0x0F, 0x07, 0x00,
- 0x3C, 0x0E, 0x07, 0x00,
- 0x1E, 0x9C, 0x07, 0x00,
- 0x1E, 0x9C, 0x07, 0x00,
- 0x1E, 0x9C, 0x7F, 0x00,
- 0x1E, 0x9C, 0xFF, 0x01,
- 0x1E, 0x9C, 0xE7, 0x01,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x3C, 0x1F, 0xC0, 0x03,
- 0xF8, 0x1F, 0x80, 0x03,
- 0xF0, 0x1F, 0x80, 0x03,
- 0x00, 0x1C, 0x80, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x1C, 0xDE, 0xC3, 0x03,
- 0x1C, 0x8E, 0xC3, 0x03,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x07, 0xFF, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l96.xbm b/app/bin/bitmaps/l96.xbm
deleted file mode 100644
index b114e81..0000000
--- a/app/bin/bitmaps/l96.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l96_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0xCC, 0x03,
- 0xCC, 0x1F,
- 0xFC, 0x3F,
- 0xF8, 0x33,
- 0xC0, 0x33,
- 0xEC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l96_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE0, 0x03,
- 0xB8, 0x73, 0x07,
- 0x9C, 0x33, 0x07,
- 0x1C, 0x3B, 0x00,
- 0x1C, 0x3F, 0x00,
- 0x1C, 0x3F, 0x00,
- 0x9C, 0xFF, 0x03,
- 0xB8, 0x7F, 0x07,
- 0xF0, 0x3F, 0x07,
- 0x00, 0x3F, 0x0E,
- 0x00, 0x3B, 0x0E,
- 0x00, 0x3B, 0x0E,
- 0x9C, 0x33, 0x07,
- 0xB8, 0x71, 0x07,
- 0xF8, 0xE0, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l96_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0xFC, 0x00,
- 0xF8, 0x07, 0xFF, 0x01,
- 0x7C, 0x0F, 0xEF, 0x01,
- 0x3C, 0x8E, 0xC7, 0x03,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1E, 0x9C, 0x03, 0x00,
- 0x1E, 0xDC, 0x03, 0x00,
- 0x1E, 0xDC, 0x7F, 0x00,
- 0x1E, 0xDC, 0xFF, 0x01,
- 0x1C, 0xDE, 0xEF, 0x01,
- 0x3C, 0xDF, 0xC7, 0x03,
- 0xF8, 0xDF, 0x83, 0x03,
- 0xF0, 0xDF, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x1C, 0x9E, 0x83, 0x03,
- 0x1C, 0x8E, 0xC7, 0x03,
- 0x3C, 0x8F, 0xEF, 0x01,
- 0xF8, 0x07, 0xFF, 0x01,
- 0xF0, 0x03, 0x7C, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l97.xbm b/app/bin/bitmaps/l97.xbm
deleted file mode 100644
index 75ab190..0000000
--- a/app/bin/bitmaps/l97.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l97_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x3F,
- 0xFC, 0x38,
- 0xCC, 0x18,
- 0xCC, 0x1C,
- 0xFC, 0x0C,
- 0xF8, 0x0E,
- 0xC0, 0x0E,
- 0xEC, 0x06,
- 0x78, 0x06,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l97_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xF8, 0x0F,
- 0xB8, 0x03, 0x0F,
- 0x9C, 0x03, 0x07,
- 0x1C, 0x83, 0x03,
- 0x1C, 0x87, 0x03,
- 0x1C, 0xC7, 0x01,
- 0x9C, 0xC7, 0x01,
- 0xB8, 0xC7, 0x01,
- 0xF0, 0xE7, 0x00,
- 0x00, 0xE7, 0x00,
- 0x00, 0xE3, 0x00,
- 0x00, 0xE3, 0x00,
- 0x9C, 0xE3, 0x00,
- 0xB8, 0x71, 0x00,
- 0xF8, 0x70, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l97_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0xC3, 0xFF, 0x03,
- 0xF8, 0xC7, 0xFF, 0x03,
- 0x7C, 0x0F, 0xC0, 0x03,
- 0x3C, 0x0E, 0xE0, 0x01,
- 0x1E, 0x1C, 0xE0, 0x01,
- 0x1E, 0x1C, 0xF0, 0x00,
- 0x1E, 0x1C, 0xF0, 0x00,
- 0x1E, 0x1C, 0x78, 0x00,
- 0x1E, 0x1C, 0x78, 0x00,
- 0x1C, 0x1E, 0x38, 0x00,
- 0x3C, 0x1F, 0x3C, 0x00,
- 0xF8, 0x1F, 0x3C, 0x00,
- 0xF0, 0x1F, 0x1C, 0x00,
- 0x00, 0x1C, 0x1E, 0x00,
- 0x00, 0x1C, 0x1E, 0x00,
- 0x1C, 0x1E, 0x1E, 0x00,
- 0x1C, 0x0E, 0x1E, 0x00,
- 0x3C, 0x0F, 0x0E, 0x00,
- 0xF8, 0x07, 0x0E, 0x00,
- 0xF0, 0x03, 0x0E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l98.xbm b/app/bin/bitmaps/l98.xbm
deleted file mode 100644
index 744aad6..0000000
--- a/app/bin/bitmaps/l98.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l98_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0xCC, 0x3B,
- 0xCC, 0x3F,
- 0xFC, 0x1E,
- 0xF8, 0x3F,
- 0xC0, 0x33,
- 0xEC, 0x3F,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l98_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE0, 0x03,
- 0xB8, 0x73, 0x07,
- 0x9C, 0x33, 0x07,
- 0x1C, 0x3B, 0x07,
- 0x1C, 0x3F, 0x07,
- 0x1C, 0x3F, 0x07,
- 0x9C, 0x77, 0x07,
- 0xB8, 0xE7, 0x03,
- 0xF0, 0x77, 0x07,
- 0x00, 0x3F, 0x06,
- 0x00, 0x3B, 0x0E,
- 0x00, 0x3B, 0x0E,
- 0x9C, 0x3B, 0x06,
- 0xB8, 0x71, 0x07,
- 0xF8, 0xE0, 0x03,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l98_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0xF8, 0x07, 0xFF, 0x00,
- 0x7C, 0x8F, 0xEF, 0x01,
- 0x3C, 0x8E, 0xC7, 0x01,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1E, 0x9C, 0xC3, 0x03,
- 0x1E, 0x9C, 0xC7, 0x01,
- 0x1E, 0x1C, 0xEF, 0x01,
- 0x1E, 0x1C, 0xFE, 0x00,
- 0x1C, 0x1E, 0xFF, 0x00,
- 0x3C, 0x9F, 0xE7, 0x01,
- 0xF8, 0x9F, 0xC3, 0x03,
- 0xF0, 0xDF, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x00, 0xDC, 0x83, 0x03,
- 0x1C, 0xDE, 0x83, 0x03,
- 0x1C, 0x8E, 0xC3, 0x03,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x07, 0xFF, 0x01,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/l99.xbm b/app/bin/bitmaps/l99.xbm
deleted file mode 100644
index b7d956a..0000000
--- a/app/bin/bitmaps/l99.xbm
+++ /dev/null
@@ -1,78 +0,0 @@
-static char l99_x16[] = {
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x78, 0x1E,
- 0xFC, 0x3F,
- 0xCC, 0x33,
- 0xCC, 0x33,
- 0xFC, 0x3F,
- 0xF8, 0x3E,
- 0xC0, 0x30,
- 0xEC, 0x3B,
- 0x78, 0x1E,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00, };
-
-static char l99_x24[] = {
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0xF0, 0xE0, 0x01,
- 0xB8, 0x73, 0x07,
- 0x9C, 0x3B, 0x07,
- 0x1C, 0x3B, 0x06,
- 0x1C, 0x3F, 0x0E,
- 0x1C, 0x3F, 0x0E,
- 0x9C, 0x3F, 0x0F,
- 0xB8, 0x77, 0x0F,
- 0xF0, 0xE7, 0x0F,
- 0x00, 0x07, 0x0E,
- 0x00, 0x03, 0x06,
- 0x00, 0x03, 0x06,
- 0x9C, 0x3B, 0x07,
- 0xB8, 0x71, 0x03,
- 0xF8, 0xF0, 0x01,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, };
-
-static char l99_x32[] = {
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0xF8, 0x07, 0xFF, 0x00,
- 0x7C, 0x8F, 0xEF, 0x01,
- 0x3C, 0x8E, 0xC7, 0x01,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1E, 0xDC, 0x83, 0x03,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x3C, 0x9F, 0xE7, 0x03,
- 0xF8, 0x1F, 0xFF, 0x03,
- 0xF0, 0x1F, 0xFE, 0x03,
- 0x00, 0x1C, 0x80, 0x03,
- 0x00, 0x1C, 0x80, 0x03,
- 0x1C, 0x9E, 0xC3, 0x03,
- 0x1C, 0x8E, 0xC3, 0x01,
- 0x3C, 0x8F, 0xE7, 0x01,
- 0xF8, 0x07, 0xFF, 0x00,
- 0xF0, 0x03, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, };
-
diff --git a/app/bin/bitmaps/layer_num.inc b/app/bin/bitmaps/layer_num.inc
new file mode 100644
index 0000000..e8104f9
--- /dev/null
+++ b/app/bin/bitmaps/layer_num.inc
@@ -0,0 +1,515 @@
+// Define digits for layer buttons
+
+static char* n0_x16[] = {
+ " #### "
+ "######"
+ "## ##"
+ "## ##"
+ "## ##"
+ "## ##"
+ "## ##"
+ "## ##"
+ "######"
+ " #### "};
+
+static char* n1_x16[] = {
+ " ##"
+ " ###"
+ "####"
+ " ##"
+ " ##"
+ " ##"
+ " ##"
+ " ##"
+ " ##"
+ " ##"};
+
+static char* n2_x16[] = {
+ " #### "
+ "######"
+ "## ##"
+ " ##"
+ " ###"
+ " ### "
+ " ### "
+ "### "
+ "######"
+ "######"};
+
+static char* n3_x16[] = {
+ " #### "
+ "######"
+ "## ##"
+ " ##"
+ " #### "
+ " #### "
+ " ##"
+ "## ##"
+ "######"
+ " #### "};
+
+static char* n4_x16[] = {
+ " ##"
+ " ###"
+ " ####"
+ " ## ##"
+ "## ##"
+ "######"
+ "######"
+ " ##"
+ " ##"
+ " ##"};
+
+static char* n5_x16[] = {
+ "######"
+ "######"
+ "## "
+ "## "
+ "#### "
+ " ####"
+ " ##"
+ "## ##"
+ "######"
+ " #### "};
+
+static char* n6_x16[] = {
+ " #### "
+ "######"
+ "## "
+ "## "
+ "##### "
+ "######"
+ "## ##"
+ "## ##"
+ "######"
+ " #### "};
+
+static char* n7_x16[] = {
+ "######"
+ "######"
+ " ##"
+ " ##"
+ " ## "
+ " ## "
+ " ## "
+ " ## "
+ " ## "
+ " ## "};
+
+static char* n8_x16[] = {
+ " #### "
+ "######"
+ "## ##"
+ "## ##"
+ " #### "
+ " #### "
+ "## ##"
+ "## ##"
+ "######"
+ " #### "};
+
+static char* n9_x16[] = {
+ " #### "
+ "######"
+ "## ##"
+ "## ##"
+ "######"
+ " #####"
+ " ##"
+ " ##"
+ "######"
+ " #### "};
+
+/* ***************** */
+
+static char* n0_x24[] = {
+ " ###### "
+ " ######## "
+ "### ###"
+ "### ###"
+ "### ###"
+ "### ###"
+ "### ###"
+ "### ###"
+ "### ###"
+ "### ###"
+ "### ###"
+ "### ###"
+ "### ###"
+ " ######## "
+ " ###### "};
+
+static char* n1_x24[] = {
+ " ###"
+ " ####"
+ "#####"
+ " ###"
+ " ###"
+ " ###"
+ " ###"
+ " ###"
+ " ###"
+ " ###"
+ " ###"
+ " ###"
+ " ###"
+ " ###"
+ " ###"};
+
+static char* n2_x24[] = {
+ " #### "
+ " ######## "
+ "#### ####"
+ "### ###"
+ " ###"
+ " ####"
+ " #### "
+ " #### "
+ " #### "
+ " #### "
+ " #### "
+ "#### "
+ "### ###"
+ "##########"
+ "##########"};
+
+static char* n3_x24[] = {
+ " #### "
+ " ######## "
+ "#### ####"
+ "### ###"
+ " ###"
+ " ####"
+ " ###### "
+ " ##### "
+ " #### "
+ " ####"
+ " ###"
+ "### ###"
+ "#### ####"
+ " ######## "
+ " #### "};
+
+static char* n4_x24[] = {
+ " ##### "
+ " ##### "
+ " ###### "
+ " ###### "
+ " ### ### "
+ " ### ### "
+ " ### ### "
+ "### ### "
+ "### ### "
+ "##########"
+ "##########"
+ " ### "
+ " ### "
+ " ### "
+ " ### "};
+
+static char* n5_x24[] = {
+ "##########"
+ "##########"
+ "### "
+ "### "
+ "### "
+ "### "
+ "######## "
+ " ######## "
+ " ###"
+ " ###"
+ " ###"
+ " ###"
+ "### ###"
+ "######### "
+ " ####### "};
+
+static char* n6_x24[] = {
+ " #### "
+ " ######## "
+ "#### ####"
+ "### ###"
+ "### "
+ "### "
+ "####### "
+ "######### "
+ "### ####"
+ "### ###"
+ "### ###"
+ "### ###"
+ "#### ####"
+ " ######## "
+ " #### "};
+
+static char* n7_x24[] = {
+ "##########"
+ "##########"
+ "### ###"
+ " ###"
+ " ### "
+ " ### "
+ " ### "
+ " ### "
+ " ### "
+ " ### "
+ " ### "
+ " ### "
+ " ### "
+ " ### "
+ " ### "};
+
+static char* n8_x24[] = {
+ " #### "
+ " ######## "
+ "#### ####"
+ "### ###"
+ "### ###"
+ "#### ####"
+ " ######## "
+ " ######## "
+ "#### ####"
+ "### ###"
+ "### ###"
+ "### ###"
+ "#### ####"
+ " ######## "
+ " #### "};
+
+static char* n9_x24[] = {
+ " #### "
+ " ######## "
+ "#### ####"
+ "### ###"
+ "### ###"
+ "#### ###"
+ " #########"
+ " #######"
+ " ###"
+ " ###"
+ " ###"
+ "### ###"
+ "#### ####"
+ " ######## "
+ " #### "};
+
+/* ***************** */
+
+static char* n0_x32[] = {
+ " ###### "
+ " ########## "
+ " ############ "
+ "##### #####"
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ "##### #####"
+ " ############ "
+ " ########## "
+ " ###### "};
+
+static char* n1_x32[] = {
+ " ####"
+ " #####"
+ "######"
+ "######"
+ " ####"
+ " ####"
+ " ####"
+ " ####"
+ " ####"
+ " ####"
+ " ####"
+ " ####"
+ " ####"
+ " ####"
+ " ####"
+ " ####"
+ " ####"
+ " ####"
+ " ####"
+ " ####"};
+
+static char* n2_x32[] = {
+ " ###### "
+ " ########## "
+ " ############ "
+ "##### #####"
+ "#### ####"
+ " ####"
+ " ####"
+ " ####"
+ " ##### "
+ " ##### "
+ " ##### "
+ " ##### "
+ " ##### "
+ " ##### "
+ " ##### "
+ " ##### "
+ "##### ####"
+ "##############"
+ "##############"
+ "##############"};
+
+static char* n3_x32[] = {
+ " ###### "
+ " ########## "
+ " ############ "
+ "##### #####"
+ "#### ####"
+ " ####"
+ " ####"
+ " #### "
+ " ####### "
+ " ###### "
+ " ####### "
+ " #### "
+ " ####"
+ " ####"
+ " ####"
+ "#### ####"
+ "##### #####"
+ " ############ "
+ " ########## "
+ " ###### "};
+
+static char* n4_x32[] = {
+ " ####### "
+ " ####### "
+ " ######## "
+ " ######## "
+ " #### #### "
+ " #### #### "
+ " #### #### "
+ " #### #### "
+ " #### #### "
+ " #### #### "
+ "#### #### "
+ "#### #### "
+ "##############"
+ "##############"
+ "##############"
+ " #### "
+ " #### "
+ " #### "
+ " #### "
+ " #### "};
+
+static char* n5_x32[] = {
+ "##############"
+ "##############"
+ "##############"
+ "#### "
+ "#### "
+ "#### "
+ "#### "
+ "#### "
+ "########## "
+ "############ "
+ "############# "
+ " #####"
+ " ####"
+ " ####"
+ " ####"
+ "#### ####"
+ "##### #####"
+ " ############ "
+ " ########## "
+ " ###### "};
+
+static char* n6_x32[] = {
+ " ###### "
+ " ########## "
+ " ############ "
+ "##### #####"
+ "#### ####"
+ "#### "
+ "#### "
+ "#### "
+ "########## "
+ "############ "
+ "############# "
+ "#### #####"
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ "##### #####"
+ " ############ "
+ " ########## "
+ " ###### "};
+
+static char* n7_x32[] = {
+ "##############"
+ "##############"
+ "##############"
+ "#### ####"
+ "#### #### "
+ " #### "
+ " #### "
+ " #### "
+ " #### "
+ " #### "
+ " #### "
+ " #### "
+ " #### "
+ " #### "
+ " #### "
+ " #### "
+ " #### "
+ " #### "
+ " #### "
+ " #### "};
+
+static char* n8_x32[] = {
+ " ###### "
+ " ########## "
+ " ############ "
+ "##### #####"
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ " #### #### "
+ " ########## "
+ " ######## "
+ " ########## "
+ " #### #### "
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ "##### #####"
+ " ############ "
+ " ########## "
+ " ###### "};
+
+static char* n9_x32[] = {
+ " ###### "
+ " ########## "
+ " ############ "
+ "##### #####"
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ "#### ####"
+ "##### ####"
+ " #############"
+ " ############"
+ " ##########"
+ " ####"
+ " ####"
+ " ####"
+ "#### ####"
+ "##### #####"
+ " ############ "
+ " ########## "
+ " ###### "};
diff --git a/app/bin/bitmaps/layers.xpm b/app/bin/bitmaps/layers.xpm
deleted file mode 100644
index 60e1761..0000000
--- a/app/bin/bitmaps/layers.xpm
+++ /dev/null
@@ -1,110 +0,0 @@
-static char *layers_x16[] = {
- "16 16 9 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #666666",
- "3 c #999999",
- "4 c #CCCCCC",
- "5 c #FFFFFF",
- "6 c #C0C0C0",
- "7 c #808080",
- " ",
- " ",
- " 177777777771 ",
- " 0755555555541 ",
- " 1455555555570 ",
- " 13555555555411 ",
- " 13333333333231 ",
- " 01777777777371 ",
- " 1666666666610 ",
- " 17333333333720 ",
- " 11122222222271 ",
- " 133333333331 ",
- " 0233333333371 ",
- " 011111111111 ",
- " ",
- " "};
-
-static char *layers_x24[] = {
- "24 24 9 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #666666",
- "3 c #999999",
- "4 c #CCCCCC",
- "5 c #FFFFFF",
- "6 c #C0C0C0",
- "7 c #808080",
- " ",
- " ",
- " ",
- " 100000000000000001 ",
- " 165555555555555552 ",
- " 155555555555555541 ",
- " 165555555555555552 ",
- " 155555555555555561 ",
- " 165555555555555551001 ",
- " 14444444444444443761 ",
- " 11122222222222227631 ",
- " 136666666666666661 ",
- " 166666666666666631 ",
- " 136666666666666661001 ",
- " 133333333333333372320 ",
- " 11122222222222222371 ",
- " 0233333333333333320 ",
- " 173333333333333371 ",
- " 0233333333333333320 ",
- " 173333333333333371 ",
- " 00000000000000000 ",
- " ",
- " ",
- " "};
-
-static char *layers_x32[] = {
- "32 32 9 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #666666",
- "3 c #999999",
- "4 c #CCCCCC",
- "5 c #FFFFFF",
- "6 c #C0C0C0",
- "7 c #808080",
- " ",
- " ",
- " ",
- " ",
- " 10000000000000000000001 ",
- " 135555555555555555555561 ",
- " 14555555555555555555551 ",
- " 135555555555555555555561 ",
- " 15555555555555555555551 ",
- " 165555555555555555555561 ",
- " 155555555555555555555410 ",
- " 165555555555555555555531221 ",
- " 155555555555555555555416671 ",
- " 117277777777777777777727631 ",
- " 173333333333333333336620 ",
- " 026666666666666666666631 ",
- " 136666666666666666666620 ",
- " 026666666666666666666631000 ",
- " 136666666666666666666622720 ",
- " 1266666666666666666666313370 ",
- " 100000000000000000000017330 ",
- " 173333333333333333333320 ",
- " 013333333333333333333330 ",
- " 173333333333333333333320 ",
- " 013333333333333333333330 ",
- " 173333333333333333333320 ",
- " 017777777777777777777770 ",
- " 111111111111111111111110 ",
- " ",
- " ",
- " ",
- " "};
-
-static char **layers_xpm[3] = { layers_x16, layers_x24, layers_x32 };
-
diff --git a/app/bin/bitmaps/loosen.xpm b/app/bin/bitmaps/loosen.xpm
new file mode 100644
index 0000000..9a92872
--- /dev/null
+++ b/app/bin/bitmaps/loosen.xpm
@@ -0,0 +1,183 @@
+static char *loosen_x16[] = {
+ "16 16 24 1",
+ " c None",
+ "0 c #4878c8",
+ "1 c #c80000",
+ "2 c #c86868",
+ "3 c #6890c8",
+ "4 c #78a8e8",
+ "5 c #c82020",
+ "6 c #5880c8",
+ "7 c #7890b0",
+ "8 c #c83838",
+ "9 c #c81010",
+ "A c #8090b8",
+ "B c #88b0e8",
+ "C c #c87070",
+ "D c #5888d0",
+ "E c #c82828",
+ "F c #7090b8",
+ "G c #5078c0",
+ "H c #6088d0",
+ "I c #c87878",
+ "J c #c83030",
+ "K c #c84040",
+ "L c #6890d0",
+ "M c #7890b8",
+ " ",
+ " ",
+ " ",
+ " D D 3 3 D D ",
+ " 0A0A6M M6A0A0 ",
+ " 4 4 B B 4 4 ",
+ " 0707GF FG7070 ",
+ " H H L L H H ",
+ " EC2E ",
+ " 89 9J ",
+ " 1I 1C ",
+ " K9 98 ",
+ " 5C2E ",
+ " ",
+ " ",
+ " "};
+static char *loosen_x24[] = {
+ "24 24 38 1",
+ " c None",
+ "0 c #084098",
+ "1 c #c80000",
+ "2 c #3870c8",
+ "3 c #c84848",
+ "4 c #4888e8",
+ "5 c #2058c0",
+ "6 c #c81818",
+ "7 c #78a8e8",
+ "8 c #6080b8",
+ "9 c #4870b0",
+ "A c #c86868",
+ "B c #6090e8",
+ "C c #4068b0",
+ "D c #90a8d0",
+ "E c #5878a8",
+ "F c #c82828",
+ "G c #c80808",
+ "H c #3068b8",
+ "I c #5890f8",
+ "J c #7088b0",
+ "K c #6898f0",
+ "L c #5880b8",
+ "M c #c85858",
+ "N c #c87070",
+ "O c #88a8e8",
+ "P c #104098",
+ "Q c #3068c8",
+ "R c #2860b8",
+ "S c #6898e0",
+ "T c #c81010",
+ "U c #4070c0",
+ "V c #5070a8",
+ "W c #104898",
+ "X c #c83030",
+ "Y c #c82020",
+ "Z c #c85050",
+ "a c #c87878",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " LUJJQJJ28 82JJQJJUL ",
+ " CHEV5EER9 9REE5VEHC ",
+ " 7 I K K I 7 ",
+ " 7 I K K I 7 ",
+ " DS 4 B B 4 SD ",
+ " P0PW0PP0P P0PP0WP0P ",
+ " O K 7 7 K O ",
+ " ZG 1M ",
+ " N1G 11A ",
+ " 11 11a ",
+ " G1M A11 ",
+ " 316 Y1X ",
+ " F1X X1Y ",
+ " T1 1T ",
+ " A M ",
+ " ",
+ " ",
+ " ",
+ " "};
+static char *loosen_x32[] = {
+ "32 32 41 1",
+ " c None",
+ "0 c #0840a0",
+ "1 c #c80000",
+ "2 c #7088b0",
+ "3 c #c82828",
+ "4 c #3068c0",
+ "5 c #5090f8",
+ "6 c #2058bc",
+ "7 c #80a8e8",
+ "8 c #c85050",
+ "9 c #6078b0",
+ "A c #c81010",
+ "B c #3058a0",
+ "C c #689df0",
+ "D c #486ca8",
+ "E c #205098",
+ "F c #c83838",
+ "G c #95b0e0",
+ "H c #4068a0",
+ "I c #c86060",
+ "J c #1648a0",
+ "K c #4870b8",
+ "L c #3d68b0",
+ "M c #2860b8",
+ "N c #2050a4",
+ "O c #1048a8",
+ "P c #c84343",
+ "Q c #c80808",
+ "R c #c81919",
+ "S c #5070a9",
+ "T c #70a0f0",
+ "U c #c86c6c",
+ "V c #6480b0",
+ "W c #4070b8",
+ "X c #5890f8",
+ "Y c #2860c4",
+ "Z c #3860a0",
+ "a c #c83030",
+ "b c #2850a0",
+ "c c #1850a8",
+ "d c #88a8e8",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " 7G T C C T G7 ",
+ " VMLSSL6SSS6LV VL6SSS6LSSLMV ",
+ " DcNBBNOBBBObD DbOBBBONBBNcD ",
+ " Cd GX 5 5 XG dC ",
+ " Cd GX 5 5 XG dC ",
+ " Cd GX 5 5 XG dC ",
+ " Cd GX 5 5 XG dC ",
+ " ZJJEEJ0EEE0JH HJ0EEE0JEEJJZ ",
+ " 24W99KY999YS2 2SY999YK99W42 ",
+ " 7G T C C T G7 ",
+ " QF R1 ",
+ " 111 11Q ",
+ " A11U I11Q ",
+ " 311P 811R ",
+ " P113 P11R ",
+ " 8113 F113 ",
+ " a11P P11R ",
+ " A11U I11A ",
+ " 111 11Q ",
+ " 1a R1 ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "};
+
+static char **loosen_xpm[3] = { loosen_x16, loosen_x24, loosen_x32 };
diff --git a/app/bin/bitmaps/magnet.xpm b/app/bin/bitmaps/magnet.xpm
deleted file mode 100644
index 3d9a5ac..0000000
--- a/app/bin/bitmaps/magnet.xpm
+++ /dev/null
@@ -1,139 +0,0 @@
-static char *magnet_x16[] = {
- "16 16 18 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #660000",
- "4 c #663300",
- "5 c #666600",
- "6 c #990000",
- "7 c #999900",
- "8 c #CC0000",
- "9 c #CC3300",
- "A c #CC9900",
- "B c #CCCC00",
- "C c #FF0000",
- "D c #FF6600",
- "E c #FFCC00",
- "F c #FFFF00",
- "G c #800000",
- " 1110 ",
- " 11888610 ",
- " 16CCCCCCG0 ",
- " 08CC836CCC30",
- " 06CC83 13CC81",
- " 3CC83 GCC1",
- " 1CCC3 3CC1",
- " 5DCC3 38C81",
- "5BEDG1 38CC3 ",
- " 5EA4 38CCG0 ",
- " 55 18CC61 ",
- " 18CC81 ",
- " 5ACC83 ",
- " 27FE93 ",
- " 5AB5 ",
- " 55 "};
-
-static char *magnet_x24[] = {
- "24 24 19 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #660000",
- "4 c #663300",
- "5 c #666600",
- "6 c #990000",
- "7 c #996600",
- "8 c #999900",
- "9 c #CC0000",
- "A c #CC9900",
- "B c #FF0000",
- "C c #FF6600",
- "D c #FF9900",
- "E c #FFCC00",
- "F c #FFFF00",
- "G c #800000",
- "H c #808000",
- " 000 ",
- " 3399G310 ",
- " 019BBBBBBG1 ",
- " 0GBBBBBBBBB91 ",
- " 0GBBBBBBBBBBBB1 ",
- " 06BBBBBG319BBBBB1 ",
- " 03BBBBB31 GGBBBBG0",
- " 3BBBBB3 6GBBB91",
- " 1BBBBB3 G9BBB1",
- " 19BBBBG 39BBB1",
- " 29BBBB6G G9BBB60",
- " 48DBBB93 GGBBBB1 ",
- "58FFDB91 GBBBBG0 ",
- " 5EFFE3 GBBBB91 ",
- " 5EE72 3BBBBB1 ",
- " 5H4 3BBBBB3 ",
- " 2 3BBBBB3 ",
- " 13BBBBBG1 ",
- " HCBBBBG1 ",
- " 5EECBB63 ",
- " 48FFFD61 ",
- " 5HEFA2 ",
- " 45A5 ",
- " 5 "};
-
-static char *magnet_x32[] = {
- "32 32 19 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #660000",
- "4 c #663300",
- "5 c #666600",
- "6 c #990000",
- "7 c #996600",
- "8 c #CC0000",
- "9 c #CC9900",
- "A c #CCCC00",
- "B c #FF0000",
- "C c #FF3300",
- "D c #FF6600",
- "E c #FFCC00",
- "F c #FFFF00",
- "G c #800000",
- "H c #808000",
- " ",
- " 013GGG010 ",
- " 16BBBBBB8G00 ",
- " 38BBBBBBBBBB30 ",
- " 03BBBBBBBBBBBBB80 ",
- " 03BBBBBBBBBBBBBBB80 ",
- " 0GBBBBBBB88BBBBBBBB80 ",
- " 03BBBBBBB83G3GBBBBBBBG0 ",
- " 1BBBBBBB61 G38BBBBBB0 ",
- " 1BBBBBBB61 G8BBBBBG0",
- " 1BBBBBBB63 3BBBBB80",
- " 08BBBBBB63 6GBBBB80",
- " 06BBBBBB63 68BBBB81",
- " 03BBBBBB83 8GBBBBBG0",
- " 5CBBBBB83 3BBBBBB1 ",
- " 5EECBBBB3 G8BBBBBG0 ",
- " 5EFFECBBG1 G8BBBBB81 ",
- " 5EFFFED81 G8BBBBBB1 ",
- " 5EFFFE4 38BBBBBBG0 ",
- " 5EFE5 38BBBBBB81 ",
- " 5A5 18BBBBBB81 ",
- " 5 18BBBBBB81 ",
- " 08BBBBBBB3 ",
- " 08BBBBBBB3 ",
- " 59CBBBBBB3 ",
- " 5AFECBBBB3 ",
- " 59FFFECBBG ",
- " 45EFFFEDG0 ",
- " 5EFFE70 ",
- " 5EE74 ",
- " 5H2 ",
- " 2 "};
-
-static char **magnet_xpm[3] = { magnet_x16, magnet_x24, magnet_x32 };
-
diff --git a/app/bin/bitmaps/manage.xpm b/app/bin/bitmaps/manage.xpm
deleted file mode 100644
index 12264cf..0000000
--- a/app/bin/bitmaps/manage.xpm
+++ /dev/null
@@ -1,110 +0,0 @@
-static char *manage_x16[] = {
- "16 16 9 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #666666",
- "3 c #999999",
- "4 c #CCCCCC",
- "5 c #FFFFFF",
- "6 c #C0C0C0",
- "7 c #808080",
- " 11 ",
- " 1370 ",
- " 101 1361 111 ",
- " 247074432742 ",
- " 134444444431 ",
- " 24432734470 ",
- " 1743744734310 ",
- "1274424555144330",
- "1344414555144630",
- "111347355674611 ",
- " 14471274470 ",
- " 24444644431 ",
- " 1463644677470 ",
- " 171013410121 ",
- " 0 0761 ",
- " 101 "};
-
-static char *manage_x24[] = {
- "24 24 9 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #666666",
- "3 c #999999",
- "4 c #CCCCCC",
- "5 c #FFFFFF",
- "6 c #C0C0C0",
- "7 c #808080",
- " 00 ",
- " 1331 ",
- " 2440 ",
- " 11 02441 111 ",
- " 173100164431102431 ",
- " 144473444444334441 ",
- " 134444444444444421 ",
- " 1644444444444431 ",
- " 1344462102644431 ",
- " 14446745547644410 ",
- " 11134442455554244447201",
- "076644442555555764444461",
- "134444462555555734444461",
- "013344441455555244447101",
- " 0024443755553344420 ",
- " 1344431732344461 ",
- " 0744444336444461 ",
- " 16444444444444471 ",
- " 134466444444634442 ",
- " 164311164447112441 ",
- " 171 14431 11 ",
- " 0 14470 ",
- " 13620 ",
- " 111 "};
-
-static char *manage_x32[] = {
- "32 32 9 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #666666",
- "3 c #999999",
- "4 c #CCCCCC",
- "5 c #FFFFFF",
- "6 c #C0C0C0",
- "7 c #808080",
- " ",
- " 11221 ",
- " 164430 ",
- " 164430 ",
- " 11 164431 11 ",
- " 1331 02444410 2461 ",
- " 164431112444444701244461 ",
- " 144446364444444446444461 ",
- " 13444444444444444444441 ",
- " 134444444444444444441 ",
- " 14444444373344444461 ",
- " 14444431011003444441 ",
- " 0744443074554707444431 ",
- " 016444417555555306444421111 ",
- " 1227644443045555555174444466620",
- "02444444447255555555324444444430",
- "07444444447255555555324444444430",
- " 244444444305555555527444443332 ",
- " 100074444603555555403444471000 ",
- " 1344447065555412444431 ",
- " 14444470233702444442 ",
- " 13444443710234444440 ",
- " 164444444444444444421 ",
- " 13444444444444444444421 ",
- " 174444444444444444444441 ",
- " 164443123444444620164441 ",
- " 14431 12444431 13471 ",
- " 1121 174441 111 ",
- " 074441 ",
- " 074440 ",
- " 13371 ",
- " 000 "};
-
-static char **manage_xpm[3] = { manage_x16, manage_x24, manage_x32 };
-
diff --git a/app/bin/bitmaps/map.xpm b/app/bin/bitmaps/map.xpm
deleted file mode 100644
index e123f7f..0000000
--- a/app/bin/bitmaps/map.xpm
+++ /dev/null
@@ -1,169 +0,0 @@
-static char *map_x16[] = {
- "16 16 28 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #003366",
- "3 c #0099CC",
- "4 c #00CCFF",
- "5 c #330000",
- "6 c #330033",
- "7 c #333300",
- "8 c #333366",
- "9 c #660033",
- "A c #663300",
- "B c #666699",
- "C c #990066",
- "D c #993300",
- "E c #993399",
- "F c #996600",
- "G c #CC0099",
- "H c #CC3399",
- "I c #CC6600",
- "J c #CC9900",
- "K c #CC9933",
- "L c #CC99CC",
- "M c #FF0099",
- "N c #FF00CC",
- "O c #FF33CC",
- "P c #FF6699",
- "Q c #FF9900",
- "0 0 ",
- "000 00000 ",
- "00000 000 0 000 ",
- "00 000 0QQ 00",
- "0AQQ 0 Q0 QQ 0",
- "DIQQQ7JQQ 0 Q70",
- "50 7KP 0 QF0",
- "00 5MNN 0 QJA",
- "5CNNN9G NN044 0",
- "6EN 0 N04 4B6",
- "2344 1 40L OH8",
- "00 4424 440NNN81",
- "00 034 00 0",
- "000 0 000000 0",
- " 000000 000",
- " 00 00"};
-
-static char *map_x24[] = {
- "24 24 29 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #003366",
- "3 c #006666",
- "4 c #006699",
- "5 c #0099CC",
- "6 c #00CCFF",
- "7 c #330000",
- "8 c #330033",
- "9 c #333300",
- "A c #336699",
- "B c #660033",
- "C c #660066",
- "D c #663300",
- "E c #6699CC",
- "F c #66CCFF",
- "G c #990066",
- "H c #996600",
- "I c #CC0099",
- "J c #CC3399",
- "K c #CC6600",
- "L c #FF0099",
- "M c #FF00CC",
- "N c #FF3399",
- "O c #FF33CC",
- "P c #FF66CC",
- "Q c #FF9900",
- "R c #FF9933",
- " ",
- " 00 000 ",
- " 0000 0000000 ",
- " 0 000 000 0 00 ",
- " 0 00000 DK 000 ",
- " 0 00 QDKQQ 00",
- " 0 QQ 0 Q7 QQ 00",
- " 9QQQQQ 0 Q 0 QQ 00",
- "HDQ QQ9QQQQ 0 Q 00",
- " 0 9QRN 0 Q 00",
- " 0 0MMMM 0 QQD0",
- " 0 8MMMMM 0 QQHD",
- " 0 MMMMLBM MMM0 666 00",
- " BMMMM I0 MMC46 66 00",
- " 1 0 MGE 6FB0",
- " 3666 0 FGJ MOG8",
- " 0 666662 66CIMMMMMA2",
- " 0 6516 66 0GMMM 00",
- " 0 0 66 00 00",
- " 00 0 00000 00",
- " 000 0 00 000 00",
- " 000 0 00 00000",
- " 00000 000",
- " 0 "};
-
-static char *map_x32[] = {
- "32 32 29 1",
- " c None",
- "0 c #000000",
- "1 c #006666",
- "2 c #006699",
- "3 c #0099CC",
- "4 c #00CCCC",
- "5 c #00CCFF",
- "6 c #330000",
- "7 c #333300",
- "8 c #333366",
- "9 c #663300",
- "A c #666699",
- "B c #66CCFF",
- "C c #990066",
- "D c #993399",
- "E c #996600",
- "F c #996699",
- "G c #9999CC",
- "H c #9999FF",
- "I c #CC0099",
- "J c #CC6600",
- "K c #CC66CC",
- "L c #CC9900",
- "M c #FF0099",
- "N c #FF00CC",
- "O c #FF33CC",
- "P c #FF6699",
- "Q c #FF9900",
- "R c #FF9933",
- " ",
- " 0 00 ",
- " 000 000000 ",
- " 0 000 00 00 000 ",
- " 0 000 00 00 000 ",
- " 0 000 00 EE 00 ",
- " 0 00000 JJQQ 00 ",
- " 0 00 QJEQQQQ 0 ",
- " 0 QQQ 0 QQE0 QQQQ 0 ",
- " 0 QQQQQQ 0 QQQ00 QQQ 0 ",
- " 9QQQQQQQQJ0 QQQQQ 00 QQ 0 ",
- " 7QQ QQLEQQQQQQ 00 QQ 0 ",
- " 0 LEQQRP 00 QQQ 0 ",
- " 0 6 NNNN 00 QQQ 0 ",
- " 0 6NNNNNN 00 QQQ0 ",
- " 0 ICNN NNNN 00 55 QQQ0 ",
- " 0 NNNNNNICN NNNN00 555 0 ",
- " 0MNNNNNNNI6 NNNC0555555 0 ",
- " 0MNN 0 NNIA55 5555 0 ",
- " 045 0 NIF5 55BK0 ",
- " 055555 0 HIIB KON0 ",
- " 03555555531 55DIN NNNOG0 ",
- " 0 55555325 55558CNNNNNN 0 ",
- " 0 55315555555 00NNNN 0 ",
- " 0 055555 00 0 ",
- " 00 0 55 0000 0 ",
- " 000 0 000 000 0 ",
- " 000 0 00 000 0 ",
- " 000 0 00 000 0 ",
- " 0000000 000 ",
- " 000 0 ",
- " "};
-
-static char **map_xpm[3] = { map_x16, map_x24, map_x32 };
-
diff --git a/app/bin/bitmaps/move.xpm b/app/bin/bitmaps/move.xpm
deleted file mode 100644
index 5482a6b..0000000
--- a/app/bin/bitmaps/move.xpm
+++ /dev/null
@@ -1,119 +0,0 @@
-static char *move_x16[] = {
- "16 16 7 1",
- " c None",
- "0 c #000000",
- "1 c #0066CC",
- "2 c #0099FF",
- "3 c #CC0000",
- "4 c #CCCCCC",
- "5 c #808080",
- " 1 1 5 5 ",
- "21212 45454",
- " 1 1 5 5 ",
- "21212 45454",
- " 1 1 5 5 ",
- "21212 3 45454",
- " 1 1 33 5 5 ",
- "21212 333333 454",
- " 1 1 33 5 5 ",
- "21212 3 45454",
- " 1 1 5 5 ",
- "21212 45454",
- " 1 1 5 5 ",
- "21212 45454",
- " 1 1 5 5 ",
- " "};
-
-static char *move_x24[] = {
- "24 24 15 1",
- " c None",
- "0 c #000000",
- "1 c #006699",
- "2 c #009999",
- "3 c #0099CC",
- "4 c #00CCCC",
- "5 c #666666",
- "6 c #996666",
- "7 c #999999",
- "8 c #CC0000",
- "9 c #CC3333",
- "A c #CC6666",
- "B c #CC9999",
- "C c #C0C0C0",
- "D c #808080",
- " ",
- " 1 1 55 5 ",
- " 44144424 CD7CCD7C ",
- " 1 1 55 5 ",
- " 1 1 55 5 ",
- " 44144424 CD7CCD7C ",
- " 31 31 DD 5D ",
- " 1 1 55 5 ",
- " 44144314 B6DCCD7C ",
- " 4144314 A86CCD7 ",
- " 1 1 98 5 ",
- " 4147666888888AA89BD7 ",
- " 44147666988889A698BD7C ",
- " 1 1 988 5 ",
- " 31 31 A89 5D ",
- " 44144424 B67CCD7C ",
- " 1 1 55 5 ",
- " 1 1 55 5 ",
- " 44144424 CD7CCD7C ",
- " 1 1 55 5 ",
- " 1 1 55 5 ",
- " 44144424 CD7CCD7C ",
- " 31 31 DD 5D ",
- " 1 1 5 "};
-
-static char *move_x32[] = {
- "32 32 14 1",
- " c None",
- "0 c #000000",
- "1 c #006699",
- "2 c #0099CC",
- "3 c #00CCCC",
- "4 c #666666",
- "5 c #996666",
- "6 c #999999",
- "7 c #CC0000",
- "8 c #CC3333",
- "9 c #CC6666",
- "A c #CC9999",
- "B c #C0C0C0",
- "C c #808080",
- " ",
- " 1 1 4 4 ",
- " 1 12 4 46 ",
- " 3313333133 BB4BBBBC6B ",
- " 1 1 4 4 ",
- " 1 1 4 4 ",
- " 1 1 4 4 ",
- " 3313333133 BB4BBBBC6B ",
- " 1 1 4 4 ",
- " 1 1 4 4 ",
- " 1 1 4 4 ",
- " 3313333133 BA4BBBBC6B ",
- " 1 12 977A 46 ",
- " 1 1 777 4 ",
- " 1 1 877 4 ",
- " 331368777777777777777779B46B ",
- " 331367777777777777777778B46B ",
- " 1 1 877 4 ",
- " 1 1 777 4 ",
- " 1 1 77 4 ",
- " 3313333133 A95BBBBC6B ",
- " 1 1 4 4 ",
- " 1 1 4 4 ",
- " 1 1 4 4 ",
- " 3313333133 BB4BBBBC6B ",
- " 1 12 4 46 ",
- " 1 1 4 4 ",
- " 1 1 4 4 ",
- " 3313333133 BB4BBBB46B ",
- " 3313333133 BB4BBBB46B ",
- " 1 1 4 4 ",
- " "};
-
-static char **move_xpm[3] = { move_x16, move_x24, move_x32 };
-
diff --git a/app/bin/bitmaps/new-car.xpm b/app/bin/bitmaps/new-car.xpm
deleted file mode 100644
index c2fd649..0000000
--- a/app/bin/bitmaps/new-car.xpm
+++ /dev/null
@@ -1,100 +0,0 @@
-static char *new_car_x16[] = {
- "16 16 5 1",
- " c None",
- "0 c #000000",
- "1 c #339900",
- "2 c #663300",
- "3 c #808080",
- " 11 ",
- " 11 ",
- " 111111 ",
- " 111111 ",
- " 11 ",
- " 11 ",
- " ",
- " 22222222222222 ",
- " 22222222222222 ",
- " 22222222222222 ",
- " 22222222222222 ",
- " 22222222222222 ",
- " 3 3 3 3 ",
- " 30303 30303 ",
- " 3 3 3 3 ",
- " "};
-
-static char *new_car_x24[] = {
- "24 24 6 1",
- " c None",
- "0 c #000000",
- "1 c #009933",
- "2 c #00CC33",
- "3 c #00FF66",
- "4 c #663300",
- " ",
- " 221 ",
- " 231 ",
- " 1231 ",
- " 222332221 ",
- " 233333331 ",
- " 11123111 ",
- " 1231 ",
- " 1231 ",
- " 11 ",
- " ",
- "444444444444444444444444",
- "444444444444444444444444",
- "444444444444444444444444",
- "444444444444444444444444",
- "444444444444444444444444",
- "444444444444444444444444",
- "444444444444444444444444",
- "444444444444444444444444",
- "444444444444444444444444",
- " 00 0 00 0 ",
- " 0000000 000 000 ",
- " 000 000 000 000 ",
- " 0 "};
-
-static char *new_car_x32[] = {
- "32 32 6 1",
- " c None",
- "0 c #000000",
- "1 c #009933",
- "2 c #00CC33",
- "3 c #00FF66",
- "4 c #663300",
- " ",
- " 11111 ",
- " 2331 ",
- " 2331 ",
- " 12331 ",
- " 111123321111 ",
- " 233333333331 ",
- " 233333333331 ",
- " 111123311111 ",
- " 12331 ",
- " 12331 ",
- " 2221 ",
- " 1111 ",
- " ",
- " ",
- "4444444444444444444444444444444 ",
- "4444444444444444444444444444444 ",
- "4444444444444444444444444444444 ",
- "4444444444444444444444444444444 ",
- "4444444444444444444444444444444 ",
- "4444444444444444444444444444444 ",
- "4444444444444444444444444444444 ",
- "4444444444444444444444444444444 ",
- "4444444444444444444444444444444 ",
- "4444444444444444444444444444444 ",
- "4444444444444444444444444444444 ",
- "4444444444444444444444444444444 ",
- " 00 000 00 00 ",
- " 00000000 00000000 ",
- " 00000000 00000000 ",
- " 000 000 000 000 ",
- " "};
-
-static char **new_car_xpm[3] = { new_car_x16, new_car_x24, new_car_x32 };
-
diff --git a/app/bin/bitmaps/ok.xpm b/app/bin/bitmaps/ok.xpm
deleted file mode 100644
index 1671eae..0000000
--- a/app/bin/bitmaps/ok.xpm
+++ /dev/null
@@ -1,92 +0,0 @@
-static char *ok_x16[] = {
- "16 16 3 1",
- " c None",
- "0 c #000000",
- "1 c #008000",
- " ",
- " 1 ",
- " 11 ",
- " 111 ",
- " 1111 ",
- " 1111 ",
- " 1111 ",
- " 1111 ",
- " 1 1111 ",
- " 11 1111 ",
- " 1111111 ",
- " 111111 ",
- " 1111 ",
- " 111 ",
- " 1 ",
- " "};
-
-static char *ok_x24[] = {
- "24 24 3 1",
- " c None",
- "0 c #000000",
- "1 c #008000",
- " ",
- " ",
- " 1 ",
- " 1111 ",
- " 1111 ",
- " 1111 ",
- " 1111 ",
- " 11111 ",
- " 11111 ",
- " 11111 ",
- " 11111 ",
- " 11111 ",
- " 11111 ",
- " 11 11111 ",
- " 1111 11111 ",
- " 11111 11111 ",
- " 111111111 ",
- " 11111111 ",
- " 111111 ",
- " 1111 ",
- " 111 ",
- " 1 ",
- " ",
- " "};
-
-static char *ok_x32[] = {
- "32 32 3 1",
- " c None",
- "0 c #000000",
- "1 c #008000",
- " ",
- " ",
- " ",
- " 111 ",
- " 1111 ",
- " 11111 ",
- " 11111 ",
- " 11111 ",
- " 11111 ",
- " 11111 ",
- " 11111 ",
- " 11111 ",
- " 11111 ",
- " 11111 ",
- " 111111 ",
- " 111111 ",
- " 1111111 ",
- " 1 1111111 ",
- " 111 1111111 ",
- " 1111 1111111 ",
- " 11111 1111111 ",
- " 111111111111 ",
- " 11111111111 ",
- " 111111111 ",
- " 11111111 ",
- " 111111 ",
- " 11111 ",
- " 111 ",
- " 11 ",
- " ",
- " ",
- " "};
-
-static char **ok_xpm[3] = { ok_x16, ok_x24, ok_x32 };
-
diff --git a/app/bin/bitmaps/pan-zoom.xpm b/app/bin/bitmaps/pan-zoom.xpm
deleted file mode 100644
index a42beee..0000000
--- a/app/bin/bitmaps/pan-zoom.xpm
+++ /dev/null
@@ -1,94 +0,0 @@
-static char *pan_zoom_x16[] = {
- "16 16 4 1",
- " c None",
- "0 c #000000",
- "1 c #FF0000",
- "2 c #FF3333",
- " ",
- " 11 ",
- " 1211 ",
- " 111111 ",
- " 11 ",
- " 1 11 1 ",
- " 11 11 11 ",
- " 11111111111111 ",
- " 11111111111111 ",
- " 11 11 11 ",
- " 1 11 1 ",
- " 11 ",
- " 122111 ",
- " 1111 ",
- " 11 ",
- " "};
-
-static char *pan_zoom_x24[] = {
- "24 24 4 1",
- " c None",
- "0 c #000000",
- "1 c #FF0000",
- "2 c #FF3333",
- " ",
- " ",
- " 11 ",
- " 1111 ",
- " 111111 ",
- " 11111211 ",
- " 11 ",
- " 11 ",
- " 1 11 1 ",
- " 11 11 11 ",
- " 111 11 111 ",
- " 11111111111111111111 ",
- " 11111111111111111111 ",
- " 111 11 111 ",
- " 11 11 11 ",
- " 1 11 1 ",
- " 11 ",
- " 11 ",
- " 11111111 ",
- " 111111 ",
- " 1111 ",
- " 11 ",
- " ",
- " "};
-
-static char *pan_zoom_x32[] = {
- "32 32 3 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- " ",
- " ",
- " 11 ",
- " 111111 ",
- " 1111111111 ",
- " 111111111111 ",
- " 1111 111 111 ",
- " 111 ",
- " 111 ",
- " 111 ",
- " 11 111 11 ",
- " 111 111 111 ",
- " 1111 111 1111 ",
- " 111 111 111 ",
- " 1111111111111111111111111111 ",
- " 11111111111111111111111111111 ",
- " 1111111111111111111111111111 ",
- " 111 111 111 ",
- " 1111 111 1111 ",
- " 111 111 111 ",
- " 11 111 111 ",
- " 111 ",
- " 111 ",
- " 111 ",
- " 111 111 1 ",
- " 1111 111 111 ",
- " 11111111111 ",
- " 111111111 ",
- " 11111 ",
- " 111 ",
- " ",
- " "};
-
-static char **pan_zoom_xpm[3] = { pan_zoom_x16, pan_zoom_x24, pan_zoom_x32 };
-
diff --git a/app/bin/bitmaps/parallel-line.xpm b/app/bin/bitmaps/parallel-line.xpm
deleted file mode 100644
index b490c84..0000000
--- a/app/bin/bitmaps/parallel-line.xpm
+++ /dev/null
@@ -1,108 +0,0 @@
-static char *parallel_line_x16[] = {
- "16 16 4 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #CC9966",
- " ",
- "000000000000000 ",
- " ",
- " 1 ",
- " 111 ",
- " 11111 ",
- " 1 ",
- " 1 ",
- " 1 ",
- " 2 2 2 2 2 2 ",
- "000000000000000 ",
- " 2 2 2 2 2 2 2 ",
- " 2 2 2 2 2 2 2 ",
- "000000000000000 ",
- " 2 2 2 2 2 2 2 ",
- " "};
-
-static char *parallel_line_x24[] = {
- "24 24 11 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #666666",
- "5 c #996600",
- "6 c #CC0000",
- "7 c #CC3300",
- "8 c #CC6600",
- "9 c #CC9900",
- " ",
- " ",
- " ",
- " 4444444444444444444444 ",
- " ",
- " 66 ",
- " 6666 ",
- " 6666 6 ",
- " 66 ",
- " 66 ",
- " 66 ",
- " 66 ",
- " 66 ",
- " 7 ",
- " 9 9 99 99 9 9 9 ",
- " 0000000000000000000000 ",
- " 9 9 99 99 9 9 9 ",
- " 9 9 99 99 9 9 9 ",
- " 9 9 99 99 9 9 9 ",
- " 0300320320230230130031 ",
- " 8 85 85 58 58 38 83 ",
- " 9 9 9 9 9 9 9 ",
- " ",
- " "};
-
-static char *parallel_line_x32[] = {
- "32 32 10 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #666666",
- "5 c #996600",
- "6 c #CC0000",
- "7 c #CC6600",
- "8 c #CC9900",
- " ",
- " ",
- " ",
- " ",
- " 444444444444444444444444444444 ",
- " ",
- " ",
- " 66 ",
- " 6666 ",
- " 66 6 66 ",
- " 6 6 6 ",
- " 6 ",
- " 6 ",
- " 6 ",
- " 6 ",
- " 6 ",
- " 6 ",
- " 6 ",
- " ",
- " 88 88 88 88 88 88 88 ",
- " 000000000000000000000000000000 ",
- " 88 88 88 88 88 88 88 ",
- " 88 88 88 88 88 88 88 ",
- " 88 88 88 88 88 88 88 ",
- " 88 88 88 88 88 88 88 ",
- " 575 575 77 77 573 575 377 ",
- " 033202330033003300331023201330 ",
- " 88 88 88 88 88 88 88 ",
- " ",
- " ",
- " ",
- " "};
-
-static char **parallel_line_xpm[3] = { parallel_line_x16, parallel_line_x24, parallel_line_x32 };
-
diff --git a/app/bin/bitmaps/parallel.xpm b/app/bin/bitmaps/parallel.xpm
deleted file mode 100644
index a19f797..0000000
--- a/app/bin/bitmaps/parallel.xpm
+++ /dev/null
@@ -1,116 +0,0 @@
-static char *parallel_x16[] = {
- "16 16 6 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #CC9966",
- "3 c #CCCCCC",
- "4 c #808080",
- " 3 3 3 3 3 3 3 ",
- "444444444444444 ",
- " 3 3 3 3 3 3 3 ",
- " 3 3 3 3 3 3 3 ",
- "4444444 4444444 ",
- " 3 3 3 1 3 3 3 ",
- " 111 ",
- " 11111 ",
- " 1 ",
- " 1 ",
- " 2 2 2 1 2 2 2 ",
- "0000000 0000000 ",
- " 2 2 2 2 2 2 2 ",
- " 2 2 2 2 2 2 2 ",
- "000000000000000 ",
- " 2 2 2 2 2 2 2 "};
-
-static char *parallel_x24[] = {
- "24 24 14 1",
- " c None",
- "0 c #000000",
- "1 c #333300",
- "2 c #663300",
- "3 c #666666",
- "4 c #996600",
- "5 c #999999",
- "6 c #CC0000",
- "7 c #CC3300",
- "8 c #CC6600",
- "9 c #CC9900",
- "A c #CC9999",
- "B c #C0C0C0",
- "C c #808080",
- " B B B ",
- " 55 5 5C 55 C5 5C 55 ",
- "3CC33C33C33CC33C33C33CC3",
- " BB B B BB B B BB ",
- " BB B B BB B B BB ",
- " BB B B BB B B BB ",
- "3CC33C33C33CC33C33C33CC3",
- " 55 5 5C 55 C5 5C 55 ",
- " B B B AA B B ",
- " 666 ",
- " 666666 ",
- " 666666 ",
- " 66 ",
- " 66 ",
- " 66 ",
- " 77 ",
- " 99 9 9 99 9 9 99 ",
- "000000000000000000000000",
- " 99 9 9 99 9 9 99 ",
- " 99 9 9 99 9 9 99 ",
- " 99 9 9 99 9 9 99 ",
- " 2400400420440140041044 ",
- " 2400400420440140041044 ",
- " 9 9 9 99 9 9 99 "};
-
-static char *parallel_x32[] = {
- "32 32 13 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #666666",
- "5 c #996600",
- "6 c #999999",
- "7 c #CC0000",
- "8 c #CC6600",
- "9 c #CC9900",
- "A c #C0C0C0",
- "B c #808080",
- " ",
- " AA AA AA AA AAA AA AA ",
- " 46B44B6B4B6B446644B6B446B44B6B ",
- " 46B44B6B4B6B446644B6B446B44B6B ",
- " AA AA AA AA AAA AA AA ",
- " AA AA AA AA AAA AA AA ",
- " AA AA AA AA AAA AA AA ",
- " AA AA AA AA AAA AA AA ",
- " 46B44B6B4B6B446644B6B446B44B6B ",
- " 46B44B6B4B6B446644B6B446B44B6B ",
- " AA AA AA AA AAA AA AA ",
- " ",
- " 7777 ",
- " 777777 ",
- " 77777777 ",
- " 77 77 777 ",
- " 77 ",
- " 77 ",
- " 77 ",
- " 77 ",
- " 77 ",
- " 99 99 9 99 9 99 99 ",
- " 88 883 585 88 585 88 883 ",
- " 0330033102330033002320033003310",
- " 99 99 99 99 999 99 99 ",
- " 99 99 99 99 999 99 99 ",
- " 99 99 99 99 999 99 99 ",
- " 99 99 99 99 999 99 99 ",
- " 88 883 585 88 585 88 883 ",
- " 0330033102330033002320033003310",
- " 99 99 99 99 999 99 99 ",
- " "};
-
-static char **parallel_xpm[3] = { parallel_x16, parallel_x24, parallel_x32 };
-
diff --git a/app/bin/bitmaps/parameter.xpm b/app/bin/bitmaps/parameter.xpm
deleted file mode 100644
index 7a58a6f..0000000
--- a/app/bin/bitmaps/parameter.xpm
+++ /dev/null
@@ -1,104 +0,0 @@
-static char *parameter_x16[] = {
- "16 16 3 1",
- " c None",
- "0 c #000000",
- "1 c #999999",
- " 11111111111 ",
- " 1 11 ",
- " 1 11 ",
- " 1 00000000 11 ",
- " 1 1 ",
- " 1 0 1 ",
- " 1 00 1 ",
- " 1 00 1 ",
- " 1 000 1 ",
- " 1 1 ",
- " 1 00000000 1 ",
- " 1 00 1 ",
- " 1 00 1 ",
- " 1 00 1 ",
- " 1 1 ",
- " 11111111111111 "};
-
-static char *parameter_x24[] = {
- "24 24 9 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #666666",
- "3 c #999999",
- "4 c #CCCCCC",
- "5 c #FFFFFF",
- "6 c #C0C0C0",
- "7 c #808080",
- " 7777777777777777 ",
- " 234444444444444447 ",
- " 2355555555555555537 ",
- " 2355100000000000757 ",
- " 23555555555555555557 ",
- " 235555555555555445547 ",
- " 2355555555555437455537 ",
- " 2355555555432745555547 ",
- " 2355377202765555555547 ",
- " 2355544555555555555547 ",
- " 2355455555555555555547 ",
- " 2355323455555472455547 ",
- " 2355554724532345555547 ",
- " 355555562074555555547 ",
- " 355556234547745555547 ",
- " 355323555555432455547 ",
- " 355455555555555555547 ",
- " 355466336666666455547 ",
- " 355666321366666655547 ",
- " 355555555326555555547 ",
- " 355555555553265555547 ",
- " 355555555555562455547 ",
- " 355555555555555555547 ",
- " 222222222222222222227 "};
-
-static char *parameter_x32[] = {
- "32 32 9 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #666666",
- "3 c #999999",
- "4 c #CCCCCC",
- "5 c #FFFFFF",
- "6 c #C0C0C0",
- "7 c #808080",
- " 222222222222222222222 ",
- " 73666666666666666666637 ",
- " 74555555555555555555557 ",
- " 745555555555555555555547 ",
- " 7455500000000000000004547 ",
- " 74555777777777777777745537 ",
- " 74555555555555555555555557 ",
- " 745555555555555555547555557 ",
- " 7455555555555555547004555547 ",
- " 7455555555555543100355555557 ",
- " 7455554666637000265555555557 ",
- " 7455530000001765555555555557 ",
- " 7455546444455555555555555557 ",
- " 7455555555555555555555555557 ",
- " 7455537455555555554375555557 ",
- " 7455531023555555420075555557 ",
- " 7455555420074431013555555557 ",
- " 7455555554300007455555555557 ",
- " 7455555553101100345555555557 ",
- " 7455554700245547002655555557 ",
- " 7455570134555555532015555557 ",
- " 7455544555555555555465555557 ",
- " 7455555555555555555555555557 ",
- " 7455537777227777777774555557 ",
- " 7455570000000000000006555557 ",
- " 7455555555531016555555555557 ",
- " 7455555555555610135555555557 ",
- " 7455555555555556200345555557 ",
- " 7455555555555555542005555557 ",
- " 7455555555555555555435555557 ",
- " 7644444444444444444444444447 ",
- " 7777777777777777777777777777 "};
-
-static char **parameter_xpm[3] = { parameter_x16, parameter_x24, parameter_x32 };
-
diff --git a/app/bin/bitmaps/paste.xpm b/app/bin/bitmaps/paste.xpm
deleted file mode 100644
index c820a4e..0000000
--- a/app/bin/bitmaps/paste.xpm
+++ /dev/null
@@ -1,107 +0,0 @@
-static char *paste_x16[] = {
- "16 16 8 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #999999",
- "3 c #CCCCCC",
- "4 c #FFFFFF",
- "5 c #C0C0C0",
- "6 c #808080",
- " 6116 ",
- " 666623326666 ",
- "63333222233356 ",
- "6444411111111111",
- "6444144444444441",
- "6444144444444441",
- "6444144444444441",
- "6444144444444441",
- "6444144444444441",
- "6444144444444441",
- "6444144444444441",
- "6444144444444441",
- "6444144444444441",
- "6444144444444441",
- "6255144444444441",
- " 111111111111111"};
-
-static char *paste_x24[] = {
- "24 24 8 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #999999",
- "3 c #CCCCCC",
- "4 c #FFFFFF",
- "5 c #C0C0C0",
- "6 c #808080",
- " 66666 ",
- " 6533336 ",
- " 6111111333336111166 ",
- "12444444522224444441 ",
- "15444444444444444446 ",
- "15444441111111111111111 ",
- "154444144444444444444441",
- "154444144444444444444441",
- "154444144444444444444441",
- "154444144444444444444441",
- "154444144444444444444441",
- "154444144444444444444441",
- "154444144444444444444441",
- "154444144444444444444441",
- "154444144444444444444441",
- "154444144444444444444441",
- "154444144444444444444441",
- "154444144444444444444441",
- "154444144444444444444441",
- "154444144444444444444441",
- "154444144444444444444441",
- "124444144444444444444441",
- " 61111144444444444444441",
- " 1111111111111111 "};
-
-static char *paste_x32[] = {
- "32 32 8 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #999999",
- "3 c #CCCCCC",
- "4 c #FFFFFF",
- "5 c #C0C0C0",
- "6 c #808080",
- " 111111 ",
- " 62555556 ",
- " 6244444436 ",
- " 6622222266333333662222266 ",
- " 64444444442222223444444451 ",
- " 64444444444444444444444436 ",
- " 24444444444444444444444436 ",
- " 244444441111111111111111111111 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 244444441444444444444444444441 ",
- " 644444441444444444444444444441 ",
- " 665555551444444444444444444441 ",
- " 1111111444444444444444444441 ",
- " 1111111111111111111111 "};
-
-static char **paste_xpm[3] = { paste_x16, paste_x24, paste_x32 };
-
diff --git a/app/bin/bitmaps/16pix/circle-center.png b/app/bin/bitmaps/png/circle-center16.png
index 062560d..062560d 100644
--- a/app/bin/bitmaps/16pix/circle-center.png
+++ b/app/bin/bitmaps/png/circle-center16.png
Binary files differ
diff --git a/app/bin/bitmaps/16pix/circle-tangent.png b/app/bin/bitmaps/png/circle-tangent16.png
index 0dc831b..0dc831b 100644
--- a/app/bin/bitmaps/16pix/circle-tangent.png
+++ b/app/bin/bitmaps/png/circle-tangent16.png
Binary files differ
diff --git a/app/bin/bitmaps/16pix/circle.png b/app/bin/bitmaps/png/circle16.png
index eaecd31..eaecd31 100644
--- a/app/bin/bitmaps/16pix/circle.png
+++ b/app/bin/bitmaps/png/circle16.png
Binary files differ
diff --git a/app/bin/bitmaps/16pix/curved-chord.png b/app/bin/bitmaps/png/curved-chord16.png
index 0068d1a..0068d1a 100644
--- a/app/bin/bitmaps/16pix/curved-chord.png
+++ b/app/bin/bitmaps/png/curved-chord16.png
Binary files differ
diff --git a/app/bin/bitmaps/16pix/curved-end.png b/app/bin/bitmaps/png/curved-end16.png
index 49dcee3..49dcee3 100644
--- a/app/bin/bitmaps/16pix/curved-end.png
+++ b/app/bin/bitmaps/png/curved-end16.png
Binary files differ
diff --git a/app/bin/bitmaps/16pix/curved-middle.png b/app/bin/bitmaps/png/curved-middle16.png
index d23a6a2..d23a6a2 100644
--- a/app/bin/bitmaps/16pix/curved-middle.png
+++ b/app/bin/bitmaps/png/curved-middle16.png
Binary files differ
diff --git a/app/bin/bitmaps/16pix/curved-tangent.png b/app/bin/bitmaps/png/curved-tangent16.png
index 6d8fcfe..6d8fcfe 100644
--- a/app/bin/bitmaps/16pix/curved-tangent.png
+++ b/app/bin/bitmaps/png/curved-tangent16.png
Binary files differ
diff --git a/app/bin/bitmaps/16pix/description.png b/app/bin/bitmaps/png/description16.png
index 9bd679c..9bd679c 100644
--- a/app/bin/bitmaps/16pix/description.png
+++ b/app/bin/bitmaps/png/description16.png
Binary files differ
diff --git a/app/bin/bitmaps/24pix/description.png b/app/bin/bitmaps/png/description24.png
index e273ed5..e273ed5 100644
--- a/app/bin/bitmaps/24pix/description.png
+++ b/app/bin/bitmaps/png/description24.png
Binary files differ
diff --git a/app/bin/bitmaps/png/down16.png b/app/bin/bitmaps/png/down16.png
new file mode 100644
index 0000000..e272de2
--- /dev/null
+++ b/app/bin/bitmaps/png/down16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/down24.png b/app/bin/bitmaps/png/down24.png
new file mode 100644
index 0000000..0b72634
--- /dev/null
+++ b/app/bin/bitmaps/png/down24.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-broad16.png b/app/bin/bitmaps/png/ease-broad16.png
new file mode 100644
index 0000000..f2bd685
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-broad16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-broad24.png b/app/bin/bitmaps/png/ease-broad24.png
new file mode 100644
index 0000000..bf29e0f
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-broad24.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-broad32.png b/app/bin/bitmaps/png/ease-broad32.png
new file mode 100644
index 0000000..43e45ea
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-broad32.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-cornu16.png b/app/bin/bitmaps/png/ease-cornu16.png
new file mode 100644
index 0000000..acdd269
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-cornu16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-cornu24.png b/app/bin/bitmaps/png/ease-cornu24.png
new file mode 100644
index 0000000..e64ea53
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-cornu24.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-cornu32.png b/app/bin/bitmaps/png/ease-cornu32.png
new file mode 100644
index 0000000..a5e0d29
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-cornu32.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-gt-broad16.png b/app/bin/bitmaps/png/ease-gt-broad16.png
new file mode 100644
index 0000000..715e2dd
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-gt-broad16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-gt-broad24.png b/app/bin/bitmaps/png/ease-gt-broad24.png
new file mode 100644
index 0000000..1db1640
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-gt-broad24.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-gt-broad32.png b/app/bin/bitmaps/png/ease-gt-broad32.png
new file mode 100644
index 0000000..f7ae18e
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-gt-broad32.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-gt-sharp16.png b/app/bin/bitmaps/png/ease-gt-sharp16.png
new file mode 100644
index 0000000..b642ad5
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-gt-sharp16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-gt-sharp24.png b/app/bin/bitmaps/png/ease-gt-sharp24.png
new file mode 100644
index 0000000..1d45db8
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-gt-sharp24.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-gt-sharp32.png b/app/bin/bitmaps/png/ease-gt-sharp32.png
new file mode 100644
index 0000000..a33306c
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-gt-sharp32.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-lt-broad16.png b/app/bin/bitmaps/png/ease-lt-broad16.png
new file mode 100644
index 0000000..7343b9e
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-lt-broad16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-lt-broad24.png b/app/bin/bitmaps/png/ease-lt-broad24.png
new file mode 100644
index 0000000..3154ae1
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-lt-broad24.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-lt-broad32.png b/app/bin/bitmaps/png/ease-lt-broad32.png
new file mode 100644
index 0000000..862fedc
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-lt-broad32.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-lt-sharp16.png b/app/bin/bitmaps/png/ease-lt-sharp16.png
new file mode 100644
index 0000000..a4e7a12
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-lt-sharp16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-lt-sharp24.png b/app/bin/bitmaps/png/ease-lt-sharp24.png
new file mode 100644
index 0000000..100756d
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-lt-sharp24.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-lt-sharp32.png b/app/bin/bitmaps/png/ease-lt-sharp32.png
new file mode 100644
index 0000000..557e3a1
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-lt-sharp32.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-none16.png b/app/bin/bitmaps/png/ease-none16.png
new file mode 100644
index 0000000..70bbadf
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-none16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-none24.png b/app/bin/bitmaps/png/ease-none24.png
new file mode 100644
index 0000000..35cc7d9
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-none24.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-none32.png b/app/bin/bitmaps/png/ease-none32.png
new file mode 100644
index 0000000..93db06f
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-none32.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-normal16.png b/app/bin/bitmaps/png/ease-normal16.png
new file mode 100644
index 0000000..1051cc6
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-normal16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-normal24.png b/app/bin/bitmaps/png/ease-normal24.png
new file mode 100644
index 0000000..e8c7136
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-normal24.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-normal32.png b/app/bin/bitmaps/png/ease-normal32.png
new file mode 100644
index 0000000..6dde86d
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-normal32.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-sharp16.png b/app/bin/bitmaps/png/ease-sharp16.png
new file mode 100644
index 0000000..5c79b51
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-sharp16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-sharp24.png b/app/bin/bitmaps/png/ease-sharp24.png
new file mode 100644
index 0000000..537050e
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-sharp24.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ease-sharp32.png b/app/bin/bitmaps/png/ease-sharp32.png
new file mode 100644
index 0000000..48c7d39
--- /dev/null
+++ b/app/bin/bitmaps/png/ease-sharp32.png
Binary files differ
diff --git a/app/bin/bitmaps/16pix/elevation.png b/app/bin/bitmaps/png/elevation16.png
index 9121d56..9121d56 100644
--- a/app/bin/bitmaps/16pix/elevation.png
+++ b/app/bin/bitmaps/png/elevation16.png
Binary files differ
diff --git a/app/bin/bitmaps/16pix/exit.png b/app/bin/bitmaps/png/exit16.png
index ba227c3..ba227c3 100644
--- a/app/bin/bitmaps/16pix/exit.png
+++ b/app/bin/bitmaps/png/exit16.png
Binary files differ
diff --git a/app/bin/bitmaps/24pix/exit.png b/app/bin/bitmaps/png/exit24.png
index d3ebf2f..d3ebf2f 100644
--- a/app/bin/bitmaps/24pix/exit.png
+++ b/app/bin/bitmaps/png/exit24.png
Binary files differ
diff --git a/app/bin/bitmaps/png/extend16.png b/app/bin/bitmaps/png/extend16.png
new file mode 100644
index 0000000..957c8f4
--- /dev/null
+++ b/app/bin/bitmaps/png/extend16.png
Binary files differ
diff --git a/app/bin/bitmaps/16pix/palette.png b/app/bin/bitmaps/png/palette.png
index efcf3d3..efcf3d3 100644
--- a/app/bin/bitmaps/16pix/palette.png
+++ b/app/bin/bitmaps/png/palette.png
Binary files differ
diff --git a/app/bin/bitmaps/16pix/pan-zoom.png b/app/bin/bitmaps/png/pan-zoom16.png
index 04d18f7..04d18f7 100644
--- a/app/bin/bitmaps/16pix/pan-zoom.png
+++ b/app/bin/bitmaps/png/pan-zoom16.png
Binary files differ
diff --git a/app/bin/bitmaps/24pix/pan-zoom.png b/app/bin/bitmaps/png/pan-zoom24.png
index 67ab631..67ab631 100644
--- a/app/bin/bitmaps/24pix/pan-zoom.png
+++ b/app/bin/bitmaps/png/pan-zoom24.png
Binary files differ
diff --git a/app/bin/bitmaps/png/ruler16.png b/app/bin/bitmaps/png/ruler16.png
new file mode 100644
index 0000000..ec94bf3
--- /dev/null
+++ b/app/bin/bitmaps/png/ruler16.png
Binary files differ
diff --git a/app/bin/bitmaps/16pix/select.png b/app/bin/bitmaps/png/select16.png
index 39605d1..39605d1 100644
--- a/app/bin/bitmaps/16pix/select.png
+++ b/app/bin/bitmaps/png/select16.png
Binary files differ
diff --git a/app/bin/bitmaps/16pix/snap-curs.png b/app/bin/bitmaps/png/snap-curs16.png
index acf8f66..acf8f66 100644
--- a/app/bin/bitmaps/16pix/snap-curs.png
+++ b/app/bin/bitmaps/png/snap-curs16.png
Binary files differ
diff --git a/app/bin/bitmaps/24pix/snap-curs.png b/app/bin/bitmaps/png/snap-curs24.png
index 15154a2..15154a2 100644
--- a/app/bin/bitmaps/24pix/snap-curs.png
+++ b/app/bin/bitmaps/png/snap-curs24.png
Binary files differ
diff --git a/app/bin/bitmaps/16pix/snap-grid.png b/app/bin/bitmaps/png/snap-grid16.png
index 381b451..381b451 100644
--- a/app/bin/bitmaps/16pix/snap-grid.png
+++ b/app/bin/bitmaps/png/snap-grid16.png
Binary files differ
diff --git a/app/bin/bitmaps/24pix/snap-grid.png b/app/bin/bitmaps/png/snap-grid24.png
index 3073985..3073985 100644
--- a/app/bin/bitmaps/24pix/snap-grid.png
+++ b/app/bin/bitmaps/png/snap-grid24.png
Binary files differ
diff --git a/app/bin/bitmaps/png/straight16.png b/app/bin/bitmaps/png/straight16.png
new file mode 100644
index 0000000..d96aff7
--- /dev/null
+++ b/app/bin/bitmaps/png/straight16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/turntable16.png b/app/bin/bitmaps/png/turntable16.png
new file mode 100644
index 0000000..181abf3
--- /dev/null
+++ b/app/bin/bitmaps/png/turntable16.png
Binary files differ
diff --git a/app/bin/bitmaps/polygon.xpm b/app/bin/bitmaps/polygon.xpm
deleted file mode 100644
index cce796a..0000000
--- a/app/bin/bitmaps/polygon.xpm
+++ /dev/null
@@ -1,89 +0,0 @@
-static char *polygon_x16[] = {
- "16 16 2 1",
- " c None",
- "0 c #000000",
- " ",
- " 000000000 ",
- " 000 00 ",
- " 00 00 ",
- " 0 00 ",
- " 0 00 ",
- "00 00",
- " 0 00",
- " 0 00",
- " 00 00",
- " 0 00",
- " 0 00",
- " 000 00",
- " 000 000",
- " 000000000 ",
- " 00 "};
-
-static char *polygon_x24[] = {
- "24 24 2 1",
- " c None",
- "0 c #000000",
- " ",
- " 00000 ",
- " 0000000000 00 ",
- " 000 00 ",
- " 0 0 ",
- " 00 0 ",
- " 0 0 ",
- " 00 0 ",
- " 00 0 ",
- " 0 0 ",
- " 0 0 ",
- " 00 0 ",
- " 0 0 ",
- " 0 0 ",
- " 00 0 ",
- " 0 0 ",
- " 0 0 ",
- " 00 0 ",
- " 00 0 ",
- " 00 0 ",
- " 000 0000 ",
- " 000 000000 ",
- " 000000 ",
- " "};
-
-static char *polygon_x32[] = {
- "32 32 2 1",
- " c None",
- "0 c #000000",
- " ",
- " 000 ",
- " 000000000000 ",
- " 00000000000000 000 ",
- " 000000 000 ",
- " 000 000 ",
- " 00 000 ",
- " 00 00 ",
- " 000 000 ",
- " 00 000 ",
- " 00 000 ",
- " 00 000 ",
- " 00 000 ",
- " 00 00 ",
- " 000 00 ",
- " 00 00 ",
- " 00 00 ",
- " 000 00 ",
- " 00 00 ",
- " 00 00 ",
- " 000 00 ",
- " 00 00 ",
- " 00 00 ",
- " 000 00 ",
- " 0000 00 ",
- " 00000 00 ",
- " 0000 00 ",
- " 0000 0000000 ",
- " 0000 0000000000 ",
- " 00000000000 ",
- " 0000 ",
- " "};
-
-static char **polygon_xpm[3] = { polygon_x16, polygon_x24, polygon_x32 };
-
diff --git a/app/bin/bitmaps/polyline.xpm b/app/bin/bitmaps/polyline.xpm
deleted file mode 100644
index 6611f44..0000000
--- a/app/bin/bitmaps/polyline.xpm
+++ /dev/null
@@ -1,92 +0,0 @@
-static char *polyline_x16[] = {
- "16 16 3 1",
- " c None",
- "0 c #000000",
- "1 c #0000FF",
- " ",
- " 1 ",
- " 1 1 ",
- "11111 11 ",
- " 1 1111 11 ",
- " 1 11 1 ",
- " 1 11",
- " 11 11",
- " 11 11",
- " 1 1 ",
- " 11 11 ",
- " 11 1 ",
- " 11 11 ",
- " 1 11111 ",
- " 11111 ",
- " "};
-
-static char *polyline_x24[] = {
- "24 24 3 1",
- " c None",
- "0 c #000000",
- "1 c #0000FF",
- " ",
- " ",
- " 1 ",
- " 11 ",
- " 111 1 ",
- " 111111 11 ",
- " 11 1111 11 ",
- " 11 1111 1 ",
- " 1 1 11 ",
- " 1 11 ",
- " 1 1 ",
- " 11 1 ",
- " 11 1 ",
- " 1 11 ",
- " 1 1 ",
- " 1 11 ",
- " 1 1 ",
- " 11 11 ",
- " 11 1 ",
- " 11 1 ",
- " 1 111111 ",
- " 111111 ",
- " ",
- " "};
-
-static char *polyline_x32[] = {
- "32 32 3 1",
- " c None",
- "0 c #000000",
- "1 c #0000FF",
- " ",
- " ",
- " ",
- " 11 ",
- " 111 ",
- " 111 11 ",
- " 111111 11 ",
- " 111111111 11 ",
- " 11 11111 11 ",
- " 11 111111 11 ",
- " 11 1111 11 ",
- " 11 1 11 ",
- " 11 11 ",
- " 11 11 ",
- " 11 11 ",
- " 11 11 ",
- " 11 11 ",
- " 11 11 ",
- " 11 11 ",
- " 11 111 ",
- " 11 11 ",
- " 111 111 ",
- " 111 11 ",
- " 111 11 ",
- " 11 11 ",
- " 11 11 ",
- " 11 1111 ",
- " 111 1111111111 ",
- " 1111111111 ",
- " 11 ",
- " ",
- " "};
-
-static char **polyline_xpm[3] = { polyline_x16, polyline_x24, polyline_x32 };
-
diff --git a/app/bin/bitmaps/profile.xpm b/app/bin/bitmaps/profile.xpm
deleted file mode 100644
index d446bb4..0000000
--- a/app/bin/bitmaps/profile.xpm
+++ /dev/null
@@ -1,121 +0,0 @@
-static char *profile_x16[] = {
- "16 16 12 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #333333",
- "3 c #336666",
- "4 c #336699",
- "5 c #339999",
- "6 c #669999",
- "7 c #6699CC",
- "8 c #66CCCC",
- "9 c #66CCFF",
- "A c #99CCFF",
- " ",
- " 0 ",
- " 262 ",
- " 05A71 ",
- " 05A92 20120 ",
- "004AA82238A98300",
- " 05AAA58AAAAA50 ",
- "005AAAAAAAAAA500",
- "004AAAAAAAAAA400",
- " 05AAAAAAAAAA50 ",
- "004AAAAAAAAAA400",
- " 05AAAAAAAAAA50 ",
- " 00000000000000 ",
- " 0 00 0 0 0 ",
- " 0 0 0 ",
- " "};
-
-static char *profile_x24[] = {
- "24 24 13 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #336699",
- "6 c #339999",
- "7 c #669999",
- "8 c #6699CC",
- "9 c #66CCCC",
- "A c #66CCFF",
- "B c #99CCFF",
- " ",
- " ",
- " 0 ",
- " 1481 ",
- " 04AB81 ",
- " 06BBA4 ",
- " 06BBB92 11210 ",
- " 006BBBB50 128AA8630000",
- "0006BBBBA3128ABBBBBB5000",
- " 06BBBBB87ABBBBBBBB60 ",
- " 06BBBBBBBBBBBBBBBB60 ",
- " 006BBBBBBBBBBBBBBBB5000",
- " 006BBBBBBBBBBBBBBBB5000",
- " 06BBBBBBBBBBBBBBBB60 ",
- " 06BBBBBBBBBBBBBBBB60 ",
- "0006BBBBBBBBBBBBBBBB5000",
- " 06BBBBBBBBBBBBBBBB60 ",
- " 06BBBBBBBBBBBBBBBB60 ",
- " 01444444444444444410 ",
- " 000000000000000000 ",
- " 0 00 0 0 00 ",
- " 0 0 00 ",
- " ",
- " "};
-
-static char *profile_x32[] = {
- "32 32 13 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #336699",
- "6 c #339999",
- "7 c #669999",
- "8 c #6699CC",
- "9 c #66CCCC",
- "A c #66CCFF",
- "B c #99CCFF",
- " ",
- " ",
- " ",
- " 00 ",
- " 2683 ",
- " 029BB82 ",
- " 06BBBB4 ",
- " 06BBBBA2 ",
- " 06BBBBB50 11200 ",
- " 06BBBBBA1 017AA8511200 ",
- " 0006BBBBBB83 016ABBBBBBA93000 ",
- " 0006BBBBBBA2025ABBBBBBBBBB4000 ",
- " 06BBBBBBB94ABBBBBBBBBBBB40 ",
- " 06BBBBBBBBBBBBBBBBBBBBBB40 ",
- " 06BBBBBBBBBBBBBBBBBBBBBB40 ",
- " 0006BBBBBBBBBBBBBBBBBBBBBB4000 ",
- " 0006BBBBBBBBBBBBBBBBBBBBBB4000 ",
- " 06BBBBBBBBBBBBBBBBBBBBBB40 ",
- " 06BBBBBBBBBBBBBBBBBBBBBB40 ",
- " 06BBBBBBBBBBBBBBBBBBBBBB40 ",
- " 0006BBBBBBBBBBBBBBBBBBBBBB4000 ",
- " 0006BBBBBBBBBBBBBBBBBBBBBB4000 ",
- " 06BBBBBBBBBBBBBBBBBBBBBB40 ",
- " 06BBBBBBBBBBBBBBBBBBBBBB40 ",
- " 04888888888888888888888830 ",
- " 00000000000000000000000000 ",
- " 00 00 00 00 00 ",
- " 00 0 00 0 00 ",
- " 00 00 00 ",
- " ",
- " ",
- " "};
-
-static char **profile_xpm[3] = { profile_x16, profile_x24, profile_x32 };
-
diff --git a/app/bin/bitmaps/protractor.xpm b/app/bin/bitmaps/protractor.xpm
deleted file mode 100644
index 43fa250..0000000
--- a/app/bin/bitmaps/protractor.xpm
+++ /dev/null
@@ -1,99 +0,0 @@
-static char *protractor_x16[] = {
- "16 16 5 1",
- " c None",
- "0 c #000000",
- "1 c #660000",
- "2 c #990000",
- "3 c #CC0000",
- " ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 0 ",
- " 0 ",
- " 01 ",
- " 0033 ",
- " 00 3 ",
- " 00 33 ",
- " 0 3 ",
- " 000 3 ",
- " 00000023 ",
- " 000000 ",
- " 00000 ",
- " 0 "};
-
-static char *protractor_x24[] = {
- "24 24 6 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #660000",
- "3 c #CC0000",
- "4 c #800000",
- " ",
- " 00 ",
- " 000 ",
- " 000 ",
- " 00 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 010 ",
- " 00033 ",
- " 000 3 ",
- " 000 33 ",
- " 000 3 ",
- " 000 3 ",
- " 000 33 ",
- " 000 33 ",
- " 000000 33 ",
- " 00000000 33 ",
- " 00000042 ",
- " 00000000 ",
- " 0000000 ",
- " 0000 ",
- " "};
-
-static char *protractor_x32[] = {
- "32 32 5 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #990000",
- "3 c #CC0000",
- " ",
- " 0 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 0000 ",
- " 0000 ",
- " 0000 ",
- " 000 ",
- " 000 ",
- " 0000 ",
- " 0000 ",
- " 0001 ",
- " 00033 ",
- " 000 33 ",
- " 0000 33 ",
- " 0000 33 ",
- " 0000 333 ",
- " 0000 33 ",
- " 000 33 ",
- " 000 333 ",
- " 0000 333 ",
- " 00000 33 ",
- " 000000000 33 ",
- " 0000000000 333 ",
- " 00000000023 ",
- " 0000000000 ",
- " 000000000 ",
- " 000000000 ",
- " 0000000 ",
- " 00 ",
- " "};
-
-static char **protractor_xpm[3] = { protractor_x16, protractor_x24, protractor_x32 };
-
diff --git a/app/bin/bitmaps/redo.xpm b/app/bin/bitmaps/redo.xpm
deleted file mode 100644
index 045a8f2..0000000
--- a/app/bin/bitmaps/redo.xpm
+++ /dev/null
@@ -1,104 +0,0 @@
-static char *redo_x16[] = {
- "16 16 7 1",
- " c None",
- "0 c #000000",
- "1 c #006600",
- "2 c #009900",
- "3 c #00CC00",
- "4 c #00FF00",
- "5 c #008000",
- " ",
- " 1 ",
- " 151 ",
- " 11425 ",
- " 1553344355 ",
- " 5244444435 ",
- " 5344511425 ",
- " 5435 151 ",
- " 5345 1 ",
- " 145 ",
- " 1235 ",
- " 135 ",
- " 525 ",
- " 521 ",
- " 51 ",
- " "};
-
-static char *redo_x24[] = {
- "24 24 7 1",
- " c None",
- "0 c #000000",
- "1 c #006600",
- "2 c #009900",
- "3 c #00CC00",
- "4 c #00FF00",
- "5 c #008000",
- " ",
- " ",
- " 1 ",
- " 151 ",
- " 5425 ",
- " 11544351 ",
- " 552234444425 ",
- " 553444444444425 ",
- " 524444444444455 ",
- " 52444421124435 ",
- " 5444351 2455 ",
- " 544425 55 ",
- " 54421 5 ",
- " 53435 ",
- " 1445 ",
- " 12435 ",
- " 5345 ",
- " 5335 ",
- " 5421 ",
- " 545 ",
- " 141 ",
- " 155 ",
- " ",
- " "};
-
-static char *redo_x32[] = {
- "32 32 7 1",
- " c None",
- "0 c #000000",
- "1 c #006600",
- "2 c #009900",
- "3 c #00CC00",
- "4 c #00FF00",
- "5 c #008000",
- " ",
- " ",
- " ",
- " 1 ",
- " 151 ",
- " 2425 ",
- " 244351 ",
- " 1152444425 ",
- " 552233444444355 ",
- " 553444444444444425 ",
- " 534444444444444435 ",
- " 1244444444444444425 ",
- " 5244444435113444351 ",
- " 544444211 134425 ",
- " 53444451 13351 ",
- " 1244445 155 ",
- " 544445 15 ",
- " 54442 ",
- " 534435 ",
- " 14445 ",
- " 54431 ",
- " 13441 ",
- " 53435 ",
- " 5445 ",
- " 1445 ",
- " 5435 ",
- " 5431 ",
- " 542 ",
- " 531 ",
- " 111 ",
- " ",
- " "};
-
-static char **redo_xpm[3] = { redo_x16, redo_x24, redo_x32 };
-
diff --git a/app/bin/bitmaps/reflect.xpm b/app/bin/bitmaps/reflect.xpm
deleted file mode 100644
index 47adaad..0000000
--- a/app/bin/bitmaps/reflect.xpm
+++ /dev/null
@@ -1,115 +0,0 @@
-static char *reflect_x16[] = {
- "16 16 12 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #006699",
- "3 c #0099CC",
- "4 c #333333",
- "5 c #3399CC",
- "6 c #33CCCC",
- "7 c #33CCFF",
- "8 c #666666",
- "9 c #66CCFF",
- "A c #99CCFF",
- " ",
- " 00 ",
- " 00 ",
- "33 00 00",
- "3553 00 0040",
- "36965 00 04840",
- "36AA95 00 048840",
- "36AAA95200888840",
- "36AAA95100488840",
- "36AA75 00 048840",
- "36955 00 04840",
- "3553 00 040",
- "33 00 00",
- " 00 ",
- " 00 ",
- " "};
-
-static char *reflect_x24[] = {
- "24 24 10 1",
- " c None",
- "0 c #000000",
- "1 c #0099CC",
- "2 c #333333",
- "3 c #3399CC",
- "4 c #33CCCC",
- "5 c #33CCFF",
- "6 c #666666",
- "7 c #66CCFF",
- "8 c #99CCFF",
- " ",
- " ",
- " 00 ",
- " 00 ",
- " 1 00 0 ",
- " 13 00 00 ",
- " 1733 00 0060 ",
- " 17753 00 02660 ",
- " 178873 00 066660 ",
- " 17888733 00 02666660 ",
- " 178888773 00 026666660 ",
- " 1788888873000266666660 ",
- " 178888873 00 066666660 ",
- " 17888873 00 02666660 ",
- " 1788873 00 0266660 ",
- " 178743 00 026660 ",
- " 17731 00 0660 ",
- " 173 00 060 ",
- " 13 00 00 ",
- " 1 00 0 ",
- " 00 ",
- " 00 ",
- " ",
- " "};
-
-static char *reflect_x32[] = {
- "32 32 10 1",
- " c None",
- "0 c #000000",
- "1 c #0099CC",
- "2 c #333333",
- "3 c #3399CC",
- "4 c #33CCCC",
- "5 c #33CCFF",
- "6 c #666666",
- "7 c #66CCFF",
- "8 c #99CCFF",
- " ",
- " ",
- " ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 1 00 00 ",
- " 133 00 020 ",
- " 14733 00 02620 ",
- " 148753 00 026620 ",
- " 1488873 00 0666620 ",
- " 148888733 00 026666620 ",
- " 1488888773 00 0266666620 ",
- " 14888888873 00 006666666620 ",
- " 1488888888733 00 0266666666620 ",
- " 1488888888871 0002666666666620 ",
- " 148888888873 00 0266666666620 ",
- " 14888888873 00 06666666620 ",
- " 1488888873 00 0266666620 ",
- " 148888873 00 026666620 ",
- " 14888743 00 02666620 ",
- " 1488731 00 266620 ",
- " 14873 00 06620 ",
- " 1473 00 0220 ",
- " 133 00 000 ",
- " 3 00 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " ",
- " ",
- " "};
-
-static char **reflect_xpm[3] = { reflect_x16, reflect_x24, reflect_x32 };
-
diff --git a/app/bin/bitmaps/rotate.xpm b/app/bin/bitmaps/rotate.xpm
deleted file mode 100644
index d41ca61..0000000
--- a/app/bin/bitmaps/rotate.xpm
+++ /dev/null
@@ -1,148 +0,0 @@
-static char *rotate_x16[] = {
- "16 16 24 1",
- " c None",
- "0 c #000000",
- "1 c #0066CC",
- "2 c #0099CC",
- "3 c #00CCCC",
- "4 c #00CCFF",
- "5 c #00FFFF",
- "6 c #336699",
- "7 c #3399CC",
- "8 c #33CCCC",
- "9 c #33CCFF",
- "A c #6699CC",
- "B c #66CCCC",
- "C c #66CCFF",
- "D c #996666",
- "E c #999999",
- "F c #99CCCC",
- "G c #CC0000",
- "H c #CC3333",
- "I c #CC3366",
- "J c #CC6666",
- "K c #CC9999",
- "L c #C0C0C0",
- "M c #808080",
- " 1 ",
- "525435 ",
- " 2437HG ",
- "52543KGGG ",
- " 1 11 GG ",
- "52543 GG ",
- " 2432 GGG ",
- "52543 GG G ",
- " 2432 G G ",
- "52543BGG GGGG ",
- " 298AH GGJ ",
- "52BAJEEMEMEMEDE ",
- " 2BIAEEMEMEMEME ",
- " 2CB7FLLL L L L ",
- " MMMMMMMMMMMMMM",
- " LLLL L L L L "};
-
-static char *rotate_x24[] = {
- "24 24 19 1",
- " c None",
- "0 c #000000",
- "1 c #0066CC",
- "2 c #0099CC",
- "3 c #00CCCC",
- "4 c #00CCFF",
- "5 c #00FFFF",
- "6 c #33CCFF",
- "7 c #33FFFF",
- "8 c #669999",
- "9 c #6699CC",
- "A c #66FFFF",
- "B c #996699",
- "C c #999999",
- "D c #CC0000",
- "E c #CC3333",
- "F c #CC9999",
- "G c #C0C0C0",
- "H c #808080",
- " ",
- " 1 1 ",
- " 5155525 ",
- " 1 1 ",
- " 1 32FDDDDD ",
- " 5155525 DDD ",
- " 1 1 DD ",
- " 1 32 DD ",
- " 5155525 DDDD ",
- " 1 1 DD D ",
- " 5155425 D ",
- " 5155425 DD DD ",
- " 1 1 DD ",
- " 5155525 DD D DD ",
- " 1 32 DD DD DDD ",
- " 1 1 D DDD ",
- " 515752FD G G G FEDG ",
- " 18CCBCHHCHHCHCCHCHHCH ",
- " 1HCEBCHHCHHCHCCHCHHCH ",
- " 515562A G GG GG GG G ",
- " 1 G91G G GG GG GG G ",
- " HHHHHHHHHHHHHHHHHHHH ",
- " CH C HC CC CC CC CC ",
- " "};
-
-static char *rotate_x32[] = {
- "32 32 22 1",
- " c None",
- "0 c #000000",
- "1 c #0066CC",
- "2 c #0099CC",
- "3 c #00CCCC",
- "4 c #00CCFF",
- "5 c #00FFFF",
- "6 c #3399CC",
- "7 c #33FFFF",
- "8 c #66CCCC",
- "9 c #66FFFF",
- "A c #996666",
- "B c #996699",
- "C c #999999",
- "D c #99CCCC",
- "E c #CC0000",
- "F c #CC3333",
- "G c #CC3366",
- "H c #CC6666",
- "I c #CC9999",
- "J c #C0C0C0",
- "K c #808080",
- " ",
- " 1 1 ",
- " 32 32 ",
- " 552555525 ",
- " 1 1 ",
- " 1 1 EEEEEE ",
- " 542555425FEEEEEEE ",
- " 542555425 EEEEE ",
- " 1 1 EEEE ",
- " 1 1 EEE ",
- " 552555525 EEE ",
- " 32 32 EEEEE ",
- " 1 1 EEE EEE ",
- " 1 1 E EE ",
- " 552555525 EE EEE ",
- " 1 1 EEE EE ",
- " 1 1 E EEE ",
- " 1 1 EE EE E ",
- " 552555525 EEE EE EE EEE ",
- " 1 1 E EEEEEEEE ",
- " 1 1 EE EEEEEE ",
- " 32 732CEE EEEE ",
- " 552577567C J J J JIE JJ ",
- " 1KKCAGCCKKCKKKCKKKCKKKCKKCKK ",
- " 1KKHEBCCKKCKKKCKKKCKKKCKKCK ",
- " 542598C29D J J J JJ JJ ",
- " 542599429D J J J JJ JJ ",
- " 1 JJ 1JJ J J J JJ JJ ",
- " KKKKKKKKKKKKKKKKKKKKKKKKKKK ",
- " CC CC CC C KC CC CC ",
- " J JJ J J J JJ JJ ",
- " "};
-
-static char **rotate_xpm[3] = { rotate_x16, rotate_x24, rotate_x32 };
-
diff --git a/app/bin/bitmaps/ruler.xpm b/app/bin/bitmaps/ruler.xpm
deleted file mode 100644
index 11dbde8..0000000
--- a/app/bin/bitmaps/ruler.xpm
+++ /dev/null
@@ -1,89 +0,0 @@
-static char *ruler_x16[] = {
- "16 16 2 1",
- " c None",
- "0 c #000000",
- " ",
- " ",
- " 0 ",
- " 00 ",
- " 0 ",
- " 0 0 ",
- " 0 0 ",
- " 00 ",
- " 0 00 0 00",
- " 0 00 00 0 0 ",
- " 0000 00 0 0 ",
- " 000000 00 00 ",
- " 000000 00 ",
- " 0000 ",
- " ",
- " "};
-
-static char *ruler_x24[] = {
- "24 24 2 1",
- " c None",
- "0 c #000000",
- " ",
- " ",
- " ",
- " 0 ",
- " 000 ",
- " 000 ",
- " 0 ",
- " 0 ",
- " 0 0 ",
- " 0 0 ",
- " 00 ",
- " 00 ",
- " 0 0 0 ",
- " 0 0 0 0 ",
- " 00 00 00 00 00 ",
- " 000 00 00 00 0 ",
- " 00000 0 0 0 ",
- " 00000 0 00 ",
- " 0000000 00 ",
- " 0000000 ",
- " 000 ",
- " ",
- " ",
- " "};
-
-static char *ruler_x32[] = {
- "32 32 2 1",
- " c None",
- "0 c #000000",
- " ",
- " ",
- " ",
- " ",
- " 00 ",
- " 000 ",
- " 00000 ",
- " 00000 ",
- " 000 ",
- " 000 ",
- " 00 000 ",
- " 00 000 ",
- " 000 000 ",
- " 00 ",
- " 00 ",
- " 00 0 ",
- " 000 0 ",
- " 00 00 0 00 ",
- " 00 0 0 000 ",
- " 000 0 00 0 00 ",
- " 0000 00 00 0 00 ",
- " 00000000 0 00 00 ",
- " 00000000 0 00 000 ",
- " 00000000 0 00 ",
- " 000000000 00 ",
- " 00000000 000 ",
- " 00000000 ",
- " 000 ",
- " ",
- " ",
- " ",
- " "};
-
-static char **ruler_xpm[3] = { ruler_x16, ruler_x24, ruler_x32 };
-
diff --git a/app/bin/bitmaps/select.xpm b/app/bin/bitmaps/select.xpm
deleted file mode 100644
index bd118c6..0000000
--- a/app/bin/bitmaps/select.xpm
+++ /dev/null
@@ -1,106 +0,0 @@
-static char *select_x16[] = {
- "16 16 6 1",
- " c None",
- "0 c #000000",
- "1 c #333300",
- "2 c #CC0000",
- "3 c #CC6600",
- "4 c #FF9999",
- " ",
- " ",
- " ",
- " 3 3 3 3 3 3 3 ",
- "000000000000000 ",
- " 3 3 3 3 3 ",
- " 3 3 3 3 3 ",
- "010000 222 0000 ",
- " 3 3 3 224 3 3 ",
- " 2424 ",
- " 424 ",
- " 424 ",
- " 424 ",
- " 4 ",
- " ",
- " "};
-
-static char *select_x24[] = {
- "24 24 9 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #663300",
- "3 c #996600",
- "4 c #CC0000",
- "5 c #CC3300",
- "6 c #CC6600",
- "7 c #CC9900",
- " ",
- " ",
- " ",
- " ",
- " 7 7 7 7 ",
- " 33 26 62 33 26 62 33 ",
- "022012002102201200210220",
- " 77 7 7 77 7 7 77 ",
- " 77 7 7 56 56 7 77 ",
- " 77 7 7 4444444 7 77 ",
- "022012002144444440210220",
- " 33 26 6344444 62 33 ",
- " 7 7 44 444 7 ",
- " 44 444 ",
- " 44 444 ",
- " 4 444 ",
- " 444 ",
- " 444 ",
- " 44 ",
- " ",
- " ",
- " ",
- " ",
- " "};
-
-static char *select_x32[] = {
- "32 32 8 1",
- " c None",
- "0 c #000000",
- "1 c #333300",
- "2 c #663300",
- "3 c #996600",
- "4 c #CC0000",
- "5 c #CC6600",
- "6 c #CC9900",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " 6 66 6 66 6 66 6 ",
- " 031002300030003300332003200130 ",
- " 000000000000000000000000000000 ",
- " 52 35 5 55 353 53 25 ",
- " 6 66 6 66 666 66 6 ",
- " 6 66 6 44444444 66 6 ",
- " 6 66 6 4444444444 66 6 ",
- " 031002300030444444444403200130 ",
- " 000000000000444444 00000000 ",
- " 6 66 6 4444444 53 25 ",
- " 6 6 6 444 4444 6 6 ",
- " 444 4444 ",
- " 444 4444 ",
- " 44 4444 ",
- " 4 4444 ",
- " 4444 ",
- " 4444 ",
- " 4444 ",
- " 444 ",
- " 4 ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " "};
-
-static char **select_xpm[3] = { select_x16, select_x24, select_x32 };
-
diff --git a/app/bin/bitmaps/sensor.xpm b/app/bin/bitmaps/sensor.xpm
deleted file mode 100644
index 207f4c4..0000000
--- a/app/bin/bitmaps/sensor.xpm
+++ /dev/null
@@ -1,138 +0,0 @@
-static char *sensor_x16[] = {
- "16 16 18 1",
- " c None",
- "0 c #000000",
- "1 c #00CCCC",
- "2 c #336666",
- "3 c #339966",
- "4 c #339999",
- "5 c #33CC99",
- "6 c #33CCCC",
- "7 c #666666",
- "8 c #669966",
- "9 c #669999",
- "A c #66CCCC",
- "B c #999999",
- "C c #99CCCC",
- "D c #CCCCCC",
- "E c #CCFFCC",
- "F c #CCFFFF",
- "G c #FFFFFF",
- " 77 ",
- " 27444478 ",
- " 941111114B ",
- " 9GA111111AG9 ",
- " 34AGA1111AGA43 ",
- " 311AGA116GA114 ",
- "74111AGA6GC11147",
- "741111AGFC111143",
- "7411111FGA111153",
- "741111FCAGA11147",
- " 3111EE11AGA1147",
- " 341DF1111AGA53 ",
- " 3CF111111AG9 ",
- " 2D51111115BB ",
- " 34455443 ",
- " 773377 "};
-
-static char *sensor_x24[] = {
- "24 24 17 1",
- " c None",
- "0 c #000000",
- "1 c #00CCCC",
- "2 c #336666",
- "3 c #339966",
- "4 c #339999",
- "5 c #33CC99",
- "6 c #33CCCC",
- "7 c #666666",
- "8 c #669999",
- "9 c #66CCCC",
- "A c #999999",
- "B c #99CCCC",
- "C c #CCCCCC",
- "D c #CCFFCC",
- "E c #CCFFFF",
- "F c #FFFFFF",
- " ",
- " 72777727 ",
- " 734511115432 ",
- " 34111111111143 ",
- " 8D111111111111BC ",
- " 3BFE11111111119F63 ",
- " 241BFE111111119F6143 ",
- " 3111BFE1111119F91114 ",
- " 741111BFE11116F9111153 ",
- " 7111111BFE116F91111112 ",
- " 71111111DFE6EB11111114 ",
- " 311111111DFFB1111111147",
- " 3111111111FFD1111111147",
- " 311111111EBDFD111111147",
- " 71111111DD11DFD1111113 ",
- " 2411111DD1111DFD111152 ",
- " 741111BE111111DFD11147 ",
- " 3411BE11111111DFD153 ",
- " 31BE6111111111DFD3 ",
- " 7AE611111111111DC2 ",
- " 8841111111111532 ",
- " 345111111543 ",
- " 7234444327 ",
- " 77 "};
-
-static char *sensor_x32[] = {
- "32 32 20 1",
- " c None",
- "0 c #000000",
- "1 c #00CCCC",
- "2 c #336666",
- "3 c #339966",
- "4 c #339999",
- "5 c #33CC99",
- "6 c #33CCCC",
- "7 c #666666",
- "8 c #669999",
- "9 c #66CC99",
- "A c #66CCCC",
- "B c #999999",
- "C c #99CC99",
- "D c #99CCCC",
- "E c #CCCCCC",
- "F c #CCFFCC",
- "G c #CCFFFF",
- "H c #FFFFFF",
- "I c #C0C0C0",
- " ",
- " 7777777777 ",
- " 77777344477777 ",
- " 777744111111543777 ",
- " 77741111111111114377 ",
- " 7B81111111111111111CB7 ",
- " 77GHA11111111111111AHHB7 ",
- " 774GHHA111111111111AHHG477 ",
- " 7711GHHA1111111111AHHG11477 ",
- " 774111GHHA111111116HHG111577 ",
- " 7311111GHHA1111116HHG61111477 ",
- " 774111111GHHA11116GHH611111577 ",
- " 7751111116GHHA111GHH6111111177 ",
- " 77111111116GHH61GHHA1111111147 ",
- " 741111111116GHHGHHA11111111147 ",
- " 7411111111116GHHHA1111111111477",
- " 7411111111111DHHH61111111111477",
- " 741111111111DHHHHH6111111111477",
- " 73111111111DHHD6GHH61111111147 ",
- " 7711111111DHHD116GHH6111111137 ",
- " 774111111AHHE11116GHH611111577 ",
- " 7411111AHHF1111116HHH61111477 ",
- " 774111AHHG111111116HHG611177 ",
- " 774116HHG11111111116HHG61477 ",
- " 7746HHG6111111111116HHG577 ",
- " 77GHG611111111111116HHB77 ",
- " 7BG61111111111111119I77 ",
- " 7774511111111111114777 ",
- " 7774511111111547777 ",
- " 7777344444437777 ",
- " 777777777777 ",
- " 7777 "};
-
-static char **sensor_xpm[3] = { sensor_x16, sensor_x24, sensor_x32 };
-
diff --git a/app/bin/bitmaps/signal.xpm b/app/bin/bitmaps/signal.xpm
deleted file mode 100644
index 66f55c7..0000000
--- a/app/bin/bitmaps/signal.xpm
+++ /dev/null
@@ -1,106 +0,0 @@
-static char *signal_x16[] = {
- "16 16 7 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #660000",
- "3 c #CC0033",
- "4 c #FF0033",
- "5 c #800000",
- " 00 ",
- " 23321 ",
- " 144441 ",
- " 144445 ",
- " 144441 ",
- " 23321 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 0000000000 "};
-
-static char *signal_x24[] = {
- "24 24 8 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #660000",
- "3 c #990033",
- "4 c #CC0033",
- "5 c #FF0033",
- "6 c #800000",
- " ",
- " 11110 ",
- " 12555562 ",
- " 15555552 ",
- " 0655555541 ",
- " 0355555541 ",
- " 155555560 ",
- " 13555541 ",
- " 123321 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00000000000000 ",
- " 00000000000000 "};
-
-static char *signal_x32[] = {
- "32 32 8 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #660000",
- "3 c #990033",
- "4 c #CC0033",
- "5 c #FF0033",
- "6 c #800000",
- " ",
- " 000000 ",
- " 0001662000 ",
- " 00355554100 ",
- " 003555555400 ",
- " 015555555560 ",
- " 0655555555400 ",
- " 0655555555300 ",
- " 005555555520 ",
- " 006555555300 ",
- " 0064554600 ",
- " 00000000 ",
- " 000000 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 000000000000000000 ",
- " 000000000000000000 ",
- " 000000000000000000 "};
-
-static char **signal_xpm[3] = { signal_x16, signal_x24, signal_x32 };
-
diff --git a/app/bin/bitmaps/snap-curs.xpm b/app/bin/bitmaps/snap-curs.xpm
deleted file mode 100644
index 08b93d0..0000000
--- a/app/bin/bitmaps/snap-curs.xpm
+++ /dev/null
@@ -1,102 +0,0 @@
-static char *snap_curs_x16[] = {
- "16 16 4 1",
- " c None",
- "0 c #000000",
- "1 c #00CC00",
- "2 c #808080",
- " 1 1 1 1 ",
- "1 1 1 1 1 1 1 1 ",
- " 10000 1 1 ",
- " 002 ",
- " 0202 1 1 ",
- "1 0 202 1 1 1 1 ",
- " 1 202 1 1 ",
- " 202 ",
- " 1 1 201 1 ",
- "1 1 1 1 1 1 1 1 ",
- " 1 1 1 1 ",
- " ",
- " 1 1 1 1 ",
- "1 1 1 1 1 1 1 1 ",
- " 1 1 1 1 ",
- " "};
-
-static char *snap_curs_x24[] = {
- "24 24 5 1",
- " c None",
- "0 c #000000",
- "1 c #00CC00",
- "2 c #330033",
- "3 c #808080",
- " ",
- " ",
- " ",
- " 11 11 11 11 ",
- " 1 1 1 1 1 1 1 1 ",
- " 1 1 1 1 1 1 1 1 ",
- " 11222222 11 11 ",
- " 022223 ",
- " 22223 ",
- " 02223 ",
- " 11023303 11 11 ",
- " 1 031 3031 1 1 1 ",
- " 1 1 303 1 1 1 ",
- " 11 11 3031 11 ",
- " 303 ",
- " 30 ",
- " ",
- " 11 11 11 11 ",
- " 1 1 1 1 1 1 1 1 ",
- " 1 1 1 1 1 1 1 1 ",
- " 11 11 11 11 ",
- " ",
- " ",
- " "};
-
-static char *snap_curs_x32[] = {
- "32 32 10 1",
- " c None",
- "0 c #000000",
- "1 c #006600",
- "2 c #009900",
- "3 c #00CC00",
- "4 c #330000",
- "5 c #330033",
- "6 c #333300",
- "7 c #333333",
- "8 c #008000",
- " ",
- " 333 33 333 ",
- " 33333 333333 33333 ",
- " 33 33 3 3 33 3 ",
- " 3 4413 33 33 33 3 ",
- " 3 5555555555554 33 33 3 ",
- " 33 455555555555 3 3 3 ",
- " 33355555555583333 33333 ",
- " 3555555555 ",
- " 55555555 ",
- " 555555554 ",
- " 5555555554 ",
- " 45555455551 ",
- " 33335554 555583 33333 ",
- " 33 554 155563 3 33 ",
- " 3 68 33555513 33 3 ",
- " 3 83 33 55556 33 3 ",
- " 3 33 3 45555 33 3 ",
- " 33 33 333327555 33 33 ",
- " 333 3333455554 333 ",
- " 55554 ",
- " 55554 ",
- " 555 ",
- " 54 ",
- " 3333 3333 3333 ",
- " 33 3 33 33 33 33 ",
- " 3 3 3 33 33 3 ",
- " 3 3 33 33 33 3 ",
- " 3 3 3 33 33 3 ",
- " 3 3 33 33 33 33 ",
- " 333 3333 3333 ",
- " "};
-
-static char **snap_curs_xpm[3] = { snap_curs_x16, snap_curs_x24, snap_curs_x32 };
-
diff --git a/app/bin/bitmaps/snap-grid.xpm b/app/bin/bitmaps/snap-grid.xpm
deleted file mode 100644
index 1139051..0000000
--- a/app/bin/bitmaps/snap-grid.xpm
+++ /dev/null
@@ -1,92 +0,0 @@
-static char *snap_grid_x16[] = {
- "16 16 3 1",
- " c None",
- "0 c #000000",
- "1 c #00CC00",
- " ",
- " 1111111111111 ",
- " 1 1 1 1 1 ",
- " 1 1 1 1 1 ",
- " 1111111111111 ",
- " 1 1 1 1 1 ",
- " 1 1 1 1 1 ",
- " 1111111111111 ",
- " 1 1 1 1 1 ",
- " 1 1 1 1 1 ",
- " 1111111111111 ",
- " 1 1 1 1 1 ",
- " 1 1 1 1 1 ",
- " 1111111111111 ",
- " ",
- " "};
-
-static char *snap_grid_x24[] = {
- "24 24 3 1",
- " c None",
- "0 c #000000",
- "1 c #00CC00",
- " ",
- " 111111111111111111111 ",
- " 1 1 1 1 1 ",
- " 1 1 1 1 1 ",
- " 1 1 1 1 1 ",
- " 1 1 1 1 1 ",
- " 111111111111111111111 ",
- " 1 1 1 1 1 ",
- " 1 1 1 1 1 ",
- " 1 1 1 1 1 ",
- " 1 1 1 1 1 ",
- " 111111111111111111111 ",
- " 1 1 1 1 1 ",
- " 1 1 1 1 1 ",
- " 1 1 1 1 1 ",
- " 1 1 1 1 1 ",
- " 111111111111111111111 ",
- " 1 1 1 1 1 ",
- " 1 1 1 1 1 ",
- " 1 1 1 1 1 ",
- " 1 1 1 1 1 ",
- " 111111111111111111111 ",
- " ",
- " "};
-
-static char *snap_grid_x32[] = {
- "32 32 3 1",
- " c None",
- "0 c #000000",
- "1 c #00CC00",
- " ",
- " 1111111111111111111111111111111",
- " 11 11 11 11 1 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 111111111111111111111111111111 ",
- " 111111111111111111111111111111 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 11 11 11 11 1 ",
- " 111111111111111111111111111111 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 11 11 11 11 1 ",
- " 111111111111111111111111111111 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 1 11 11 1 1 ",
- " 1111111111111111111111111111111",
- " "};
-
-static char **snap_grid_xpm[3] = { snap_grid_x16, snap_grid_x24, snap_grid_x32 };
-
diff --git a/app/bin/bitmaps/split-draw.xpm b/app/bin/bitmaps/split-draw.xpm
deleted file mode 100644
index 3e94832..0000000
--- a/app/bin/bitmaps/split-draw.xpm
+++ /dev/null
@@ -1,95 +0,0 @@
-static char *split_draw_x16[] = {
- "16 16 4 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #808080",
- " ",
- " 2 ",
- " 2 ",
- " 2 ",
- " 1 2 ",
- " 11 2 ",
- " 11 2 ",
- " 111122 ",
- " 2 111 ",
- " 221111 ",
- " 22 11 ",
- " 22 11 ",
- " 22 ",
- " 22 ",
- " 22 ",
- " "};
-
-static char *split_draw_x24[] = {
- "24 24 4 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #808080",
- " ",
- " 2 ",
- " 22 ",
- " 22 ",
- " 2 ",
- " 2 ",
- " 11 2 ",
- " 11 2 ",
- " 11 2 ",
- " 11 2 ",
- " 111111 2 ",
- " 11111 ",
- " 11 ",
- " 2 111111 ",
- " 22 11 ",
- " 22 1 ",
- " 22 1 ",
- " 22 1 ",
- " 22 1 ",
- " 22 ",
- " 22 ",
- " 22 ",
- " 2 ",
- " "};
-
-static char *split_draw_x32[] = {
- "32 32 4 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #808080",
- " ",
- " ",
- " 2 ",
- " 222 ",
- " 222 ",
- " 222 ",
- " 222 ",
- " 222 ",
- " 11 222 ",
- " 11 222 ",
- " 11 222 ",
- " 11 222 ",
- " 11 222 ",
- " 11111 222 ",
- " 11111111 22 ",
- " 1111111 ",
- " ",
- " 22 11111111 ",
- " 222 11111111 ",
- " 222 11 ",
- " 222 11 ",
- " 22 11 ",
- " 222 11 ",
- " 222 11 ",
- " 222 11 ",
- " 222 ",
- " 222 ",
- " 222 ",
- " 222 ",
- " 22 ",
- " ",
- " "};
-
-static char **split_draw_xpm[3] = { split_draw_x16, split_draw_x24, split_draw_x32 };
-
diff --git a/app/bin/bitmaps/split.xpm b/app/bin/bitmaps/split.xpm
deleted file mode 100644
index 1e0386a..0000000
--- a/app/bin/bitmaps/split.xpm
+++ /dev/null
@@ -1,107 +0,0 @@
-static char *split_x16[] = {
- "16 16 10 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #996666",
- "3 c #999999",
- "4 c #CC0000",
- "5 c #CC3333",
- "6 c #CC6666",
- "7 c #C0C0C0",
- "8 c #808080",
- " ",
- " 781 ",
- " 71371 ",
- " 4 83 88 ",
- " 4 887317 ",
- " 47887887 ",
- " 444418718 ",
- " 562 38 ",
- " 38 17 ",
- " 7317314444 ",
- " 7887 834 ",
- " 88 38 74 ",
- " 38 313 4 ",
- " 13313 ",
- " 83 ",
- " 7 "};
-
-static char *split_x24[] = {
- "24 24 7 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #999999",
- "3 c #CC0000",
- "4 c #C0C0C0",
- "5 c #808080",
- " ",
- " 4 1 ",
- " 251 ",
- " 4 124 ",
- " 3 451 4211 ",
- " 33 4 124 52 ",
- " 33 451 44114 ",
- " 334 154 55 ",
- " 33451 44114 ",
- " 333333154 52 ",
- " 3333333 441144 ",
- " 4 55 ",
- " 421 144 ",
- " 12 333 ",
- " 21 44513333333 ",
- " 12 55 33 ",
- " 21 451 433 ",
- " 12 55 33 ",
- " 21 421 4 33 ",
- " 12 52 3 ",
- " 1 421 4 ",
- " 52 ",
- " 1 4 ",
- " "};
-
-static char *split_x32[] = {
- "32 32 7 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #999999",
- "3 c #CC0000",
- "4 c #C0C0C0",
- "5 c #808080",
- " ",
- " ",
- " 44 1 ",
- " 25 ",
- " 124 ",
- " 4411 44 1 ",
- " 33 55 421 ",
- " 33 4 1144 52 ",
- " 33 451 44 1 44 ",
- " 33 15 25 ",
- " 33 4 11 44 124 ",
- " 33 421 421 4 ",
- " 33333333 114 52 ",
- " 33333333 1 4 1 44 ",
- " 33333 411 ",
- " 4 12 ",
- " 421 11 4 ",
- " 52 ",
- " 4 1 44 333333333 ",
- " 21 4411 33333333 ",
- " 124 25 333 ",
- " 4 11 44 1124 33 ",
- " 55 421 33 ",
- " 4 154 152 33 ",
- " 4411 4 1 4 33 ",
- " 55 21 33 ",
- " 11 4 12 ",
- " 4 1 4 ",
- " 25 ",
- " 1 4 ",
- " 1 ",
- " "};
-
-static char **split_xpm[3] = { split_x16, split_x24, split_x32 };
-
diff --git a/app/bin/bitmaps/sticky-doc.xpm b/app/bin/bitmaps/sticky-doc.xpm
deleted file mode 100644
index 7b0e4cb..0000000
--- a/app/bin/bitmaps/sticky-doc.xpm
+++ /dev/null
@@ -1,130 +0,0 @@
-static char *sticky_doc_x16[] = {
- "16 16 15 1",
- " c None",
- "0 c #000000",
- "1 c #0066CC",
- "2 c #666699",
- "3 c #669999",
- "4 c #996633",
- "5 c #999999",
- "6 c #CC6633",
- "7 c #CC9900",
- "8 c #CC9933",
- "9 c #CC9999",
- "A c #CCCC66",
- "B c #FFCC00",
- "C c #FFCC33",
- "D c #FFCC66",
- " ",
- " ",
- "4888888888884 ",
- "4BBBBBBCBBBB764 ",
- "4BBD59B99BBB7774",
- "4BC2D95C95CBBBB4",
- "4BC2CBA5CA5CBBB4",
- "4BBC5ABD5CD5CBB4",
- "4BBBC59BCABC3CB4",
- "4BBBBB95CBBB5DB4",
- "4BBBBBBA2ABD2CB4",
- "4BBBBBBBC513DBB4",
- "4BBBBBBBBBBBBBB4",
- "4777777777777774",
- " 444444444444444",
- " "};
-
-static char *sticky_doc_x24[] = {
- "24 24 17 1",
- " c None",
- "0 c #000000",
- "1 c #0066CC",
- "2 c #3366CC",
- "3 c #666699",
- "4 c #669999",
- "5 c #996633",
- "6 c #999999",
- "7 c #CC6633",
- "8 c #CC9900",
- "9 c #CC9933",
- "A c #CC9966",
- "B c #CC9999",
- "C c #CCCC66",
- "D c #FFCC00",
- "E c #FFCC33",
- "F c #FFCC66",
- " ",
- " ",
- " ",
- "5555555555555555555 ",
- "58DDDDDDDDDDDDDDDD85 ",
- "58DDDDDDDDDDEDDDDD8875 ",
- "58DDDC26ADD64EDDDD88885 ",
- "58DDA13216EB13FDDDDDDD85",
- "58DD32EE616EC22CDDDDDD95",
- "58DD42CDDB13EF21ADDDDD95",
- "58DDF21BDDA12FE316EDDD95",
- "58DDDE316EDC22EE616EDD95",
- "58DDDDE614EDFBDDE616DD95",
- "58DDDDDDB12FDDDDDD61ED95",
- "58DDDDDDDC21BDDDDD61ED95",
- "58DDDDDDDDE316EDDF16DD95",
- "58DDDDDDDDDE612BB21FDD95",
- "58DDDDDDDDDDDC3112CDDD95",
- "58DDDDDDDDDDDDDFFDDDDD95",
- "58DDDDDDDDDDDDDDDDDDDD95",
- "579999999999999999999955",
- " 5555555555555555555555 ",
- " ",
- " "};
-
-static char *sticky_doc_x32[] = {
- "32 32 15 1",
- " c None",
- "0 c #000000",
- "1 c #0066CC",
- "2 c #3366CC",
- "3 c #666699",
- "4 c #996633",
- "5 c #999999",
- "6 c #CC6633",
- "7 c #CC9900",
- "8 c #CC9966",
- "9 c #CC9999",
- "A c #CCCC66",
- "B c #FFCC00",
- "C c #FFCC33",
- "D c #FFCC66",
- " ",
- " ",
- " ",
- " ",
- " 444444444444444444444444 ",
- " 4BBBBBBBBBBBBBBBBBBBBB764 ",
- " 4BBBBBBBBBBBBBBBBBBBBBB7744 ",
- " 4BBBBBBBBBBBBBCCBBBBBBB77744 ",
- " 4BBBBBA315DBBB53DBBBBBB777774 ",
- " 4BBBB511112ABC212ABBBBB7777774 ",
- " 4BBBA115A3119BC3118BBBBBBBBBB4 ",
- " 4BBB915BBC5115CC5119BBBBBBBBB4 ",
- " 4BBB812DBBB5115CC5115CBBBBBBB4 ",
- " 4BBBC3118BBB8113CB9115CBBBBBB4 ",
- " 4BBBBC3119CBBA212DBA213DBBBBB4 ",
- " 4BBBBBC5115CBBD313CBD212ABBBB4 ",
- " 4BBBBBBB9113DBBC5DBBBC311CBBB4 ",
- " 4BBBBBBBBA2128BBBBBBBBC319BBB4 ",
- " 4BBBBBBBBBC3115CBBBBBBB915BBB4 ",
- " 4BBBBBBBBBBC5115CBBBBBB915BBB4 ",
- " 4BBBBBBBBBBBB9113DBBBBC219BBB4 ",
- " 4BBBBBBBBBBBBBA2115CBA313CBBB4 ",
- " 4BBBBBBBBBBBBBBC51111112DBBBB4 ",
- " 4BBBBBBBBBBBBBBBBA31115CBBBBB4 ",
- " 4BBBBBBBBBBBBBBBBBCDDCBBBBBBB4 ",
- " 4BBBBBBBBBBBBBBBBBBBBBBBBBBBB4 ",
- " 4BBBBBBBBBBBBBBBBBBBBBBBBBBBB4 ",
- " 444444444444444444444444444444 ",
- " ",
- " ",
- " ",
- " "};
-
-static char **sticky_doc_xpm[3] = { sticky_doc_x16, sticky_doc_x24, sticky_doc_x32 };
-
diff --git a/app/bin/bitmaps/sticky-link.xpm b/app/bin/bitmaps/sticky-link.xpm
deleted file mode 100644
index b2a027b..0000000
--- a/app/bin/bitmaps/sticky-link.xpm
+++ /dev/null
@@ -1,138 +0,0 @@
-static char *sticky_link_x16[] = {
- "16 16 18 1",
- " c None",
- "0 c #000000",
- "1 c #3366CC",
- "2 c #666699",
- "3 c #6666CC",
- "4 c #669999",
- "5 c #996600",
- "6 c #996633",
- "7 c #999999",
- "8 c #CC6633",
- "9 c #CC9900",
- "A c #CC9933",
- "B c #CC9966",
- "C c #CC9999",
- "D c #CCCC66",
- "E c #FFCC00",
- "F c #FFCC33",
- "G c #FFCC66",
- " ",
- " ",
- "68AAAAAAAAAA6 ",
- "6EEEEEEEEEEE986 ",
- "6EEEEEEEEEEE9996",
- "6EEGCGEEEEFCGEE6",
- "6ED7C4CEED2C7BE6",
- "6E4GEEB777FEF1F6",
- "6E1FEEF22GEEE3F6",
- "6E77GC4FF77GB7E6",
- "6EEC7BFEEEB77FE6",
- "6EEEEEEEEEEEEEE6",
- "6EEEEEEEEEEEEEE6",
- "6A99999999999996",
- " 666666666666666",
- " "};
-
-static char *sticky_link_x24[] = {
- "24 24 19 1",
- " c None",
- "0 c #000000",
- "1 c #0066CC",
- "2 c #3366CC",
- "3 c #666699",
- "4 c #6666CC",
- "5 c #669999",
- "6 c #996600",
- "7 c #996633",
- "8 c #999999",
- "9 c #CC6633",
- "A c #CC9900",
- "B c #CC9933",
- "C c #CC9966",
- "D c #CC9999",
- "E c #CCCC66",
- "F c #FFCC00",
- "G c #FFCC33",
- "H c #FFCC66",
- " ",
- " ",
- " ",
- "7777777777777777777 ",
- "7BFFFFFFFFFFFFFFFFA7 ",
- "7BFFFFFFFFFFFFFFFFAA97 ",
- "7BFFFFFFFFFFFFFFFFAAAA7 ",
- "7BFFFFFFFFFFFFFFFFFFFFA7",
- "7BFFH888EFFFFFFG888HFFA7",
- "7BFG228418GFFGD12822HFA7",
- "7BFD2GFFC22HG818GFG38FA7",
- "7BF88FFFFG3142EFFFFD2GA7",
- "7BF3DFFFFFD118GFFFFE1GA7",
- "7BF83FFFG818D13HFFF85FA7",
- "7BFE18D822CFFE218D81DFA7",
- "7BFFD1118HFFFFGD2118GFA7",
- "7BFFFGHFFFFFFFFFFGGFFFA7",
- "7BFFFFFFFFFFFFFFFFFFFFA7",
- "7BFFFFFFFFFFFFFFFFFFFFA7",
- "7BFFFFFFFFFFFFFFFFFFFFA7",
- "77BBBBBBBBBBBBBBBBBBBB97",
- " 7777777777777777777777 ",
- " ",
- " "};
-
-static char *sticky_link_x32[] = {
- "32 32 18 1",
- " c None",
- "0 c #000000",
- "1 c #0066CC",
- "2 c #3366CC",
- "3 c #666699",
- "4 c #6666CC",
- "5 c #669999",
- "6 c #996600",
- "7 c #996633",
- "8 c #999999",
- "9 c #CC9900",
- "A c #CC9933",
- "B c #CC9966",
- "C c #CC9999",
- "D c #CCCC66",
- "E c #FFCC00",
- "F c #FFCC33",
- "G c #FFCC66",
- " ",
- " ",
- " ",
- " ",
- " 777777777777777777777777 ",
- " 7EEEEEEEEEEEEEEEEEEEEEEA7 ",
- " 7EEEEEEEEEEEEEEEEEEEEEE9977 ",
- " 7EEEEEEEEEEEEEEEEEEEEEE99977 ",
- " 7EEEEEEEEEEEEEEEEEEEEEE999997 ",
- " 7EEEEEEEEEEEEEEEEEEEEEE9999997 ",
- " 7EEEEEFFEEEEEEEEEEEEEEFFEEEEE7 ",
- " 7EEEF82115DFEEEEEEEG81118FEEE7 ",
- " 7EEF81111113FEEEEF81111115FEE7 ",
- " 7EED12DEFB412BEEG3118GEG51CEE7 ",
- " 7EE81DEEEEF811CD213GEEEEG12EE7 ",
- " 7EE42EEEEEEEC11118FEEEEEE81FE7 ",
- " 7EE22EEEEEEEF8112FEEEEEEE81GE7 ",
- " 7EE51FEEEEEG312312DEEEEEE31FE7 ",
- " 7EEC18EEEF8113GF8118FEEEB18EE7 ",
- " 7EEF21488111CFEEEC21188811DEE7 ",
- " 7EEEG411118GEEEEEEF811111BEEE7 ",
- " 7EEEEFDCDFEEEEEEEEEEFCCCFEEEE7 ",
- " 7EEEEEEEEEEEEEEEEEEEEEEEEEEEE7 ",
- " 7EEEEEEEEEEEEEEEEEEEEEEEEEEEE7 ",
- " 7EEEEEEEEEEEEEEEEEEEEEEEEEEEE7 ",
- " 7EEEEEEEEEEEEEEEEEEEEEEEEEEEE7 ",
- " 7EEEEEEEEEEEEEEEEEEEEEEEEEEEE7 ",
- " 777777777777777777777777777777 ",
- " ",
- " ",
- " ",
- " "};
-
-static char **sticky_link_xpm[3] = { sticky_link_x16, sticky_link_x24, sticky_link_x32 };
-
diff --git a/app/bin/bitmaps/sticky-note.xpm b/app/bin/bitmaps/sticky-note.xpm
deleted file mode 100644
index fbd12e1..0000000
--- a/app/bin/bitmaps/sticky-note.xpm
+++ /dev/null
@@ -1,124 +0,0 @@
-static char *sticky_note_x16[] = {
- "16 16 14 1",
- " c None",
- "0 c #000000",
- "1 c #996600",
- "2 c #996633",
- "3 c #999999",
- "4 c #CC6633",
- "5 c #CC9900",
- "6 c #CC9933",
- "7 c #CC9966",
- "8 c #CC9999",
- "9 c #CCCC66",
- "A c #FFCC00",
- "B c #FFCC33",
- "C c #FFCC66",
- " ",
- " ",
- "2466666666662 ",
- "2AAAAAAAAAAA542 ",
- "2733333333375552",
- "2BCCCCCCCCCBAAA2",
- "2B88888888888CA2",
- "2B88888888888CA2",
- "2BCCCCCCCCCCBAA2",
- "2733333333338AA2",
- "2AAAAAAAAAAAAAA2",
- "2733333333333392",
- "2BCCCCCCCCCCCCB2",
- "2655555555555552",
- " 222222222222222",
- " "};
-
-static char *sticky_note_x24[] = {
- "24 24 14 1",
- " c None",
- "0 c #000000",
- "1 c #0066CC",
- "2 c #996600",
- "3 c #996633",
- "4 c #999999",
- "5 c #CC6633",
- "6 c #CC9900",
- "7 c #CC9933",
- "8 c #CC9999",
- "9 c #CCCC66",
- "A c #FFCC00",
- "B c #FFCC33",
- "C c #FFCC66",
- " ",
- " ",
- " ",
- "3333333333333333333 ",
- "37AAAAAAAAAAAAAAAA63 ",
- "37AAAAAAAAAAAAAAAA6653 ",
- "37B11111111111114A66663 ",
- "37B44444444444448AAAAA63",
- "37AAAAAAAAAAAAAAAAAAAA63",
- "37B88888888888888889AA63",
- "37B11111111111111114AA63",
- "37BCCCCCCCCCCCCCCCCCAA63",
- "37AAAAAAAAAAAAAAAAAAAA63",
- "37B1111111111111118AAA63",
- "37B4444444444444449AAA63",
- "37AAAAAAAAAAAAAAAAAAAA63",
- "37B888888888888888888A63",
- "37B111111111111111111A63",
- "37BCCCCCCCCCCCCCCCCCCA63",
- "37AAAAAAAAAAAAAAAAAAAA63",
- "337777777777777777777753",
- " 3333333333333333333333 ",
- " ",
- " "};
-
-static char *sticky_note_x32[] = {
- "32 32 13 1",
- " c None",
- "0 c #000000",
- "1 c #0066CC",
- "2 c #996600",
- "3 c #996633",
- "4 c #999999",
- "5 c #CC9900",
- "6 c #CC9933",
- "7 c #CC9999",
- "8 c #CCCC66",
- "9 c #FFCC00",
- "A c #FFCC33",
- "B c #FFCC66",
- " ",
- " ",
- " ",
- " ",
- " 333333333333333333333333 ",
- " 3999999999999999999999963 ",
- " 399999999999999999999995533 ",
- " 3999999999999999999999955533 ",
- " 39A111111111111111111B9555553 ",
- " 39A111111111111111111B95555553 ",
- " 39ABBBBBBBBBBBBBBBBBBA99999993 ",
- " 399999999999999999999999999993 ",
- " 39ABBBBBBBBBBBBBBBBBBBBBBA9993 ",
- " 39A1111111111111111111111B9993 ",
- " 39A1111111111111111111111B9993 ",
- " 399999999999999999999999999993 ",
- " 399999999999999999999999999993 ",
- " 39A777777777777777777778999993 ",
- " 39B111111111111111111114999993 ",
- " 39B444444444444444444447999993 ",
- " 399999999999999999999999999993 ",
- " 399999999999999999999999999993 ",
- " 39A111111111111111111111111993 ",
- " 39A111111111111111111111111993 ",
- " 39ABBBBBBBBBBBBBBBBBBBBBBBB993 ",
- " 399999999999999999999999999993 ",
- " 399999999999999999999999999993 ",
- " 333333333333333333333333333333 ",
- " ",
- " ",
- " ",
- " "};
-
-static char **sticky_note_xpm[3] = { sticky_note_x16, sticky_note_x24, sticky_note_x32 };
-
diff --git a/app/bin/bitmaps/stop.xpm b/app/bin/bitmaps/stop.xpm
deleted file mode 100644
index 78fb1fc..0000000
--- a/app/bin/bitmaps/stop.xpm
+++ /dev/null
@@ -1,128 +0,0 @@
-static char *stop_x16[] = {
- "16 16 14 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #660000",
- "3 c #990000",
- "4 c #993300",
- "5 c #993333",
- "6 c #CC3333",
- "7 c #CC6633",
- "8 c #CC6666",
- "9 c #CC9966",
- "A c #CC9999",
- "B c #FF9999",
- "C c #800000",
- " 00 ",
- " 1221 ",
- " 11566511 ",
- " 015788886510 ",
- " 12678888886620 ",
- " 13688AAA9876C0 ",
- " 14689ABAA886C0 ",
- " 1478AABBA886C0 ",
- " 14789ABBA886C0 ",
- " 14688AAAA886C0 ",
- " 136788A98876C0 ",
- " 11568888876410 ",
- " 1C677776C1 ",
- " 11566411 ",
- " 1111 ",
- " "};
-
-static char *stop_x24[] = {
- "24 24 15 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #660000",
- "3 c #990000",
- "4 c #993300",
- "5 c #993333",
- "6 c #CC3300",
- "7 c #CC3333",
- "8 c #CC6633",
- "9 c #CC6666",
- "A c #CC9966",
- "B c #CC9999",
- "C c #FF9999",
- "D c #800000",
- " ",
- " 0110 ",
- " 1D7721 ",
- " 1277777511 ",
- " 11578888877410 ",
- " 01D77899999987721 ",
- " 12677899999999877310 ",
- " 13778999ABA9999776D0 ",
- " 1377899BBBBBA99877D0 ",
- " 147899ABBBBBB99977D0 ",
- " 147899BBCCCBBA9977D0 ",
- " 147899BBCCCCBA9987D0 ",
- " 147899BBCCCCBA9977D0 ",
- " 147899ABBCCBB99977D0 ",
- " 1377999BBBBBA99877D0 ",
- " 13778999BBBA999876D0 ",
- " 136779999999998776D0 ",
- " 1D77789999998776D1 ",
- " 1157788998877411 ",
- " 127777777511 ",
- " 014777721 ",
- " 113D10 ",
- " 10 ",
- " "};
-
-static char *stop_x32[] = {
- "32 32 16 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #660000",
- "3 c #990000",
- "4 c #993300",
- "5 c #993333",
- "6 c #CC0000",
- "7 c #CC3300",
- "8 c #CC3333",
- "9 c #CC6633",
- "A c #CC6666",
- "B c #CC9966",
- "C c #CC9999",
- "D c #FF9999",
- "E c #800000",
- " ",
- " 11 ",
- " 113E10 ",
- " 014888821 ",
- " 128888888511 ",
- " 1158889999888411 ",
- " 11488999AAA999888E1 ",
- " 01E88899AAAAAAAA9888411 ",
- " 12388899AAAAAAAAAA98887E1 ",
- " 1378899AAAABBBAAAAA98886E0 ",
- " 137889AAAABCCCCBAAAA9887E0 ",
- " 138899AAACCCCCCCBAAA9887E0 ",
- " 14889AAABCCCCCCCCAAA9888E0 ",
- " 14889AAACCCDDDDCCBAAA988E0 ",
- " 14889AABCCDDDDDCCCAAA988E0 ",
- " 14889AABCCDDDDDCCCAAA988E0 ",
- " 17889AABCCDDDDDCCCAAA988E0 ",
- " 17889AAACCCDDDDCCBAAA988E0 ",
- " 17889AAABCCCCCCCCBAA9888E0 ",
- " 138899AAACCCCCCCBAAA9887E0 ",
- " 137889AAABCCCCCBAAAA9887E0 ",
- " 1378899AAAABBBAAAAA98887E0 ",
- " 1E78889AAAAAAAAAAA98887620 ",
- " 11488899AAAAAAAA99887311 ",
- " 1E888999AAAA99888521 ",
- " 11488899999888821 ",
- " 11588888888410 ",
- " 1288888411 ",
- " 01E7411 ",
- " 111 ",
- " ",
- " "};
-
-static char **stop_xpm[3] = { stop_x16, stop_x24, stop_x32 };
-
diff --git a/app/bin/bitmaps/straight-line.xpm b/app/bin/bitmaps/straight-line.xpm
deleted file mode 100644
index 9808d8d..0000000
--- a/app/bin/bitmaps/straight-line.xpm
+++ /dev/null
@@ -1,96 +0,0 @@
-static char *straight_line_x16[] = {
- "16 16 4 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #CC0000",
- " ",
- " 222 ",
- " 222 ",
- " 2 2 ",
- " 22 ",
- " 22 ",
- " 22 ",
- " 01 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " "};
-
-static char *straight_line_x24[] = {
- "24 24 5 1",
- " c None",
- "0 c #000000",
- "1 c #990000",
- "2 c #CC0000",
- "3 c #800000",
- " ",
- " ",
- " 2222 ",
- " 22 ",
- " 2 2 ",
- " 2 2 ",
- " 2 ",
- " 22 ",
- " 22 ",
- " 22 ",
- " 03 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " 00 ",
- " ",
- " "};
-
-static char *straight_line_x32[] = {
- "32 32 4 1",
- " c None",
- "0 c #000000",
- "1 c #990000",
- "2 c #CC0000",
- " ",
- " ",
- " 22222 ",
- " 2222222 ",
- " 2222 ",
- " 22222 ",
- " 222 22 ",
- " 222 22 ",
- " 222 22 ",
- " 222 ",
- " 222 ",
- " 222 ",
- " 122 ",
- " 002 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 0 ",
- " ",
- " "};
-
-static char **straight_line_xpm[3] = { straight_line_x16, straight_line_x24, straight_line_x32 };
-
diff --git a/app/bin/bitmaps/straight.xpm b/app/bin/bitmaps/straight.xpm
deleted file mode 100644
index 83e2f67..0000000
--- a/app/bin/bitmaps/straight.xpm
+++ /dev/null
@@ -1,133 +0,0 @@
-static char *straight_x16[] = {
- "16 16 18 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #666666",
- "5 c #993333",
- "6 c #996600",
- "7 c #996633",
- "8 c #996666",
- "9 c #999999",
- "A c #CC0000",
- "B c #CC3333",
- "C c #CC6600",
- "D c #CC6666",
- "E c #CC9900",
- "F c #C0C0C0",
- "G c #808080",
- " AAA ",
- " AAAA",
- " 945AAA",
- " G9A8AA",
- " G8B94 ",
- " FG8D8GF ",
- " E49B8G ",
- " 37A9G ",
- " 62EC49 ",
- " E32E 2E ",
- " E13E 3 ",
- " 63 E2 E ",
- " C1EE0C ",
- " 2E 2C ",
- " 33 ",
- " 03E "};
-
-static char *straight_x24[] = {
- "24 24 15 1",
- " c None",
- "0 c #000000",
- "1 c #333300",
- "2 c #333333",
- "3 c #663300",
- "4 c #666666",
- "5 c #996600",
- "6 c #999999",
- "7 c #CC0000",
- "8 c #CC3333",
- "9 c #CC6600",
- "A c #CC9900",
- "B c #CC9999",
- "C c #C0C0C0",
- "D c #808080",
- " ",
- " 77777 ",
- " 777 ",
- " C 4 7777 ",
- " 6D 77 7 ",
- " C 4DB7 4 7 ",
- " 6D4 8B44 ",
- " C 4DB7 DD ",
- " CD4 8B44CC ",
- " A 4DB7 DD ",
- " A52 8B44CC ",
- " A 03A7 DD ",
- " A50 AA246C ",
- " 03A 53 ",
- " A50 AA 0AA ",
- " 3A 93 ",
- " A90 AA 09A ",
- " 1A 93 ",
- " A90 AA 05A ",
- " 39 A3 ",
- " 0 AA 05A ",
- " A30 ",
- " 05A ",
- " 0 "};
-
-static char *straight_x32[] = {
- "32 32 17 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #333333",
- "4 c #663300",
- "5 c #666666",
- "6 c #996600",
- "7 c #999999",
- "8 c #CC0000",
- "9 c #CC3333",
- "A c #CC6600",
- "B c #CC6666",
- "C c #CC9900",
- "D c #CC9999",
- "E c #C0C0C0",
- "F c #808080",
- " ",
- " 888888 ",
- " 8888888 ",
- " 8888 ",
- " E 5 88888 ",
- " E75 888 88 ",
- " F7 888 88 ",
- " EE 5 D988 5 88 ",
- " 7F5 88D 5 ",
- " 57D8887F ",
- " E 55 988 57E ",
- " EF5 88D755 E ",
- " 5FD888 FF ",
- " CC35 989 55EE ",
- " 64 889E55 ",
- " 00CC 8 FF ",
- " C40 CC 55 E ",
- " 44 C60 ",
- " C 0 C 04C ",
- " CA0 C 00 CC ",
- " 2A A2 ",
- " CC 0 CC 0C ",
- " C2 CC 0 C ",
- " 0AC 64 ",
- " C 00 CC 06C ",
- " 44 CC0 ",
- " 04C 46 ",
- " 0 C 0 CC ",
- " C20 ",
- " 1A ",
- " 00 C ",
- " "};
-
-static char **straight_xpm[3] = { straight_x16, straight_x24, straight_x32 };
-
diff --git a/app/bin/bitmaps/SVG/background.svg b/app/bin/bitmaps/svg/background.svg
index 4856eac..b168f0b 100644
--- a/app/bin/bitmaps/SVG/background.svg
+++ b/app/bin/bitmaps/svg/background.svg
@@ -34,7 +34,7 @@
showgrid="false"
inkscape:snap-nodes="false"
inkscape:zoom="10.897825"
- inkscape:cx="23.903852"
+ inkscape:cx="23.857972"
inkscape:cy="23.995614"
inkscape:window-x="0"
inkscape:window-y="0"
diff --git a/app/bin/bitmaps/SVG/benchwork.svg b/app/bin/bitmaps/svg/benchwork.svg
index 1562ae3..1562ae3 100644
--- a/app/bin/bitmaps/SVG/benchwork.svg
+++ b/app/bin/bitmaps/svg/benchwork.svg
diff --git a/app/bin/bitmaps/SVG/bezier-line.svg b/app/bin/bitmaps/svg/bezier-line.svg
index df4232b..df4232b 100644
--- a/app/bin/bitmaps/SVG/bezier-line.svg
+++ b/app/bin/bitmaps/svg/bezier-line.svg
diff --git a/app/bin/bitmaps/SVG/bezier-track.svg b/app/bin/bitmaps/svg/bezier-track.svg
index 4f3cf33..4f3cf33 100644
--- a/app/bin/bitmaps/SVG/bezier-track.svg
+++ b/app/bin/bitmaps/svg/bezier-track.svg
diff --git a/app/bin/bitmaps/SVG/block.svg b/app/bin/bitmaps/svg/block.svg
index 9d306d7..9d306d7 100755
--- a/app/bin/bitmaps/SVG/block.svg
+++ b/app/bin/bitmaps/svg/block.svg
diff --git a/app/bin/bitmaps/SVG/blockdel.svg b/app/bin/bitmaps/svg/blockdel.svg
index 014101e..014101e 100755
--- a/app/bin/bitmaps/SVG/blockdel.svg
+++ b/app/bin/bitmaps/svg/blockdel.svg
diff --git a/app/bin/bitmaps/SVG/blockedit.svg b/app/bin/bitmaps/svg/blockedit.svg
index 3ed69c3..3ed69c3 100755
--- a/app/bin/bitmaps/SVG/blockedit.svg
+++ b/app/bin/bitmaps/svg/blockedit.svg
diff --git a/app/bin/bitmaps/SVG/blocknew.svg b/app/bin/bitmaps/svg/blocknew.svg
index e8c51e3..e8c51e3 100755
--- a/app/bin/bitmaps/SVG/blocknew.svg
+++ b/app/bin/bitmaps/svg/blocknew.svg
diff --git a/app/bin/bitmaps/SVG/bottom.svg b/app/bin/bitmaps/svg/bottom.svg
index e529c66..e529c66 100644
--- a/app/bin/bitmaps/SVG/bottom.svg
+++ b/app/bin/bitmaps/svg/bottom.svg
diff --git a/app/bin/bitmaps/SVG/box.svg b/app/bin/bitmaps/svg/box.svg
index e936fa4..49054b5 100644
--- a/app/bin/bitmaps/SVG/box.svg
+++ b/app/bin/bitmaps/svg/box.svg
@@ -1,12 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
@@ -15,7 +8,14 @@
style="enable-background:new 0 0 48 48;"
xml:space="preserve"
sodipodi:docname="box.svg"
- inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
id="metadata910"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
@@ -33,13 +33,15 @@
id="namedview906"
showgrid="false"
inkscape:zoom="12.521303"
- inkscape:cx="24"
- inkscape:cy="24"
+ inkscape:cx="23.9991"
+ inkscape:cy="24.039032"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1"
- inkscape:document-rotation="0" />
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0"
+ inkscape:snap-smooth-nodes="true" />
<style
type="text/css"
id="style897">
@@ -63,10 +65,8 @@
y2="9.0605688"
id="line901"
style="stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke:#cc0000;stroke-opacity:1" />
-<polyline
- class="st2"
- points="39.9,18.3 39.4,11.4 32.7,11.4 "
- id="polyline903"
- transform="matrix(1.4025875,0,0,1.3570092,-15.557291,-6.2439345)"
- style="stroke-width:2.17452736;stroke-miterlimit:10;stroke-dasharray:none;stroke:#cc0000;stroke-opacity:1" />
-</svg>
+
+<path
+ style="fill:none;stroke:#cc0000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d="M 29.070457,9.1843477 40.014923,9.0605688 39.852082,20.285429"
+ id="path1619" /></svg>
diff --git a/app/bin/bitmaps/SVG/bridge.svg b/app/bin/bitmaps/svg/bridge.svg
index af55093..c05e827 100644
--- a/app/bin/bitmaps/SVG/bridge.svg
+++ b/app/bin/bitmaps/svg/bridge.svg
@@ -16,21 +16,14 @@
id="parapet"
style="display:inline;stroke:#917c6f;stroke-width:2.56211;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(1.4366046,0,0,1.7036947,-13.366682,-16.698783)"><path
- d="M 15.9996,38.6673 H 46.6655"
+ d="m 15.9996,38.6673 11.239513,0"
fill="none"
stroke="#ff6700"
stroke-miterlimit="10"
stroke-width="2.6666"
id="path1633"
- style="fill:#000000;fill-opacity:1;stroke:#917c6f;stroke-width:2.56211;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
- d="m 46.53217,38.709966 5.334533,5.145205"
- fill="none"
- stroke="#ff6700"
- stroke-linecap="round"
- stroke-miterlimit="10"
- stroke-width="2.6666"
- id="path1637"
- style="fill:#000000;fill-opacity:1;stroke:#917c6f;stroke-width:2.56211;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+ style="fill:#000000;fill-opacity:1;stroke:#917c6f;stroke-width:2.56211;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="cc" /><path
d="M 15.928935,38.645967 11.357049,43.85517"
fill="none"
stroke="#ff6700"
@@ -39,13 +32,14 @@
stroke-width="2.6666"
id="path1641"
style="fill:#000000;fill-opacity:1;stroke:#917c6f;stroke-width:2.56211;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
- d="M 46.6655,18.6678 H 15.9996"
+ d="m 36.085871,18.6678 -20.086271,0"
fill="none"
stroke="#ff6700"
stroke-miterlimit="10"
stroke-width="2.6666"
id="path1645"
- style="fill:none;fill-opacity:1;stroke:#917c6f;stroke-width:2.56211;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+ style="fill:none;fill-opacity:1;stroke:#917c6f;stroke-width:2.56211;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="cc" /><path
d="M 16.886244,18.657134 11.358382,13.313268"
fill="none"
stroke="#ff6700"
@@ -53,14 +47,6 @@
stroke-miterlimit="10"
stroke-width="2.6666"
id="path1649"
- style="fill:none;fill-opacity:1;stroke:#917c6f;stroke-width:2.56211;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
- d="m 45.913519,18.657134 5.954518,-5.343866"
- fill="none"
- stroke="#ff6700"
- stroke-linecap="round"
- stroke-miterlimit="10"
- stroke-width="2.6666"
- id="path1653"
style="fill:none;fill-opacity:1;stroke:#917c6f;stroke-width:2.56211;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /></g><metadata
id="metadata1665"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
@@ -78,9 +64,9 @@
inkscape:window-height="866"
id="namedview1661"
showgrid="false"
- inkscape:zoom="9.3956422"
- inkscape:cx="36.186989"
- inkscape:cy="32.036128"
+ inkscape:zoom="7.6322099"
+ inkscape:cx="36.162527"
+ inkscape:cy="32.100794"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
@@ -159,4 +145,8 @@
stroke="#000000"
stroke-miterlimit="10"
id="path1629"
- style="stroke-width:2.30261;stroke-miterlimit:10;stroke-dasharray:none" /></g></g></svg>
+ style="stroke-width:2.30261;stroke-miterlimit:10;stroke-dasharray:none" /></g></g><path
+ style="fill:none;stroke:#cc0000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 41.180129,2.6688602 22.819872,61.33114"
+ id="path947"
+ sodipodi:nodetypes="cc" /></svg>
diff --git a/app/bin/bitmaps/SVG/building.svg b/app/bin/bitmaps/svg/building.svg
index 4b63286..4b63286 100644
--- a/app/bin/bitmaps/SVG/building.svg
+++ b/app/bin/bitmaps/svg/building.svg
diff --git a/app/bin/bitmaps/SVG/car-inventory.svg b/app/bin/bitmaps/svg/car-inventory.svg
index 27d805d..27d805d 100644
--- a/app/bin/bitmaps/SVG/car-inventory.svg
+++ b/app/bin/bitmaps/svg/car-inventory.svg
diff --git a/app/bin/bitmaps/SVG/change-grid.svg b/app/bin/bitmaps/svg/change-grid.svg
index 0962f5f..0962f5f 100644
--- a/app/bin/bitmaps/SVG/change-grid.svg
+++ b/app/bin/bitmaps/svg/change-grid.svg
diff --git a/app/bin/bitmaps/SVG/circle-center.svg b/app/bin/bitmaps/svg/circle-center.svg
index dc1b0fc..dc1b0fc 100644
--- a/app/bin/bitmaps/SVG/circle-center.svg
+++ b/app/bin/bitmaps/svg/circle-center.svg
diff --git a/app/bin/bitmaps/SVG/circle-filled-center.svg b/app/bin/bitmaps/svg/circle-filled-center.svg
index 252ce43..252ce43 100644
--- a/app/bin/bitmaps/SVG/circle-filled-center.svg
+++ b/app/bin/bitmaps/svg/circle-filled-center.svg
diff --git a/app/bin/bitmaps/SVG/circle-filled-tangent.svg b/app/bin/bitmaps/svg/circle-filled-tangent.svg
index afbf7ea..afbf7ea 100644
--- a/app/bin/bitmaps/SVG/circle-filled-tangent.svg
+++ b/app/bin/bitmaps/svg/circle-filled-tangent.svg
diff --git a/app/bin/bitmaps/SVG/circle-line-center.svg b/app/bin/bitmaps/svg/circle-line-center.svg
index 18e05df..18e05df 100644
--- a/app/bin/bitmaps/SVG/circle-line-center.svg
+++ b/app/bin/bitmaps/svg/circle-line-center.svg
diff --git a/app/bin/bitmaps/SVG/circle-line-tangent.svg b/app/bin/bitmaps/svg/circle-line-tangent.svg
index 02f8c39..02f8c39 100644
--- a/app/bin/bitmaps/SVG/circle-line-tangent.svg
+++ b/app/bin/bitmaps/svg/circle-line-tangent.svg
diff --git a/app/bin/bitmaps/SVG/circle-line.svg b/app/bin/bitmaps/svg/circle-line.svg
index 2aa4811..2aa4811 100644
--- a/app/bin/bitmaps/SVG/circle-line.svg
+++ b/app/bin/bitmaps/svg/circle-line.svg
diff --git a/app/bin/bitmaps/SVG/circle-tangent.svg b/app/bin/bitmaps/svg/circle-tangent.svg
index 3e970c6..3e970c6 100644
--- a/app/bin/bitmaps/SVG/circle-tangent.svg
+++ b/app/bin/bitmaps/svg/circle-tangent.svg
diff --git a/app/bin/bitmaps/SVG/circle.svg b/app/bin/bitmaps/svg/circle.svg
index 660e7fd..660e7fd 100644
--- a/app/bin/bitmaps/SVG/circle.svg
+++ b/app/bin/bitmaps/svg/circle.svg
diff --git a/app/bin/bitmaps/SVG/doc-export-xtc.svg b/app/bin/bitmaps/svg/clone.svg
index dab12aa..31c63bb 100644
--- a/app/bin/bitmaps/SVG/doc-export-xtc.svg
+++ b/app/bin/bitmaps/svg/clone.svg
@@ -4,7 +4,7 @@
viewBox="0 0 64 64"
xml:space="preserve"
id="svg1659"
- sodipodi:docname="doc-export-xtc.svg"
+ sodipodi:docname="clone.svg"
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
@@ -13,12 +13,19 @@
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><rect
- style="fill:#f5f5f5;fill-opacity:1;stroke:#666666;stroke-width:1.9309;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ style="fill:#f5f5f5;fill-opacity:1;stroke:#666666;stroke-width:2.00172;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect900"
- width="59.649868"
- height="42.871033"
- x="2.1262496"
- y="-45.047009"
+ width="49.334457"
+ height="45.780003"
+ x="2.1271074"
+ y="-48.169491"
+ transform="rotate(90)" /><rect
+ style="fill:#f5f5f5;fill-opacity:1;stroke:#05a3ff;stroke-width:2.00172;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect900-2"
+ width="49.334457"
+ height="45.780003"
+ x="12.440801"
+ y="-61.699257"
transform="rotate(90)" /><metadata
id="metadata1665"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
@@ -47,14 +54,16 @@
inkscape:pagecheckerboard="0" /><g
inkscape:groupmode="layer"
id="layer1"
- inkscape:label="Export"><g
- id="arrow"
- transform="translate(2.5460266,-0.85071321)"
- inkscape:label="arrow"
- style="stroke:#cc0000;stroke-width:4.7811;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"><path
- style="fill:none;fill-opacity:1;stroke:#cc0000;stroke-width:4.7811;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 46.398031,40.401712 11.404136,-8.5769 -11.209194,-8.430286"
- id="path1484" /><path
- style="fill:none;stroke:#cc0000;stroke-width:4.44353;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 57.802167,31.824812 H 30.834752"
- id="path1706" /></g></g></svg>
+ inkscape:label="Export" /><g
+ id="plus"
+ transform="matrix(1.3262569,0,0,1.2941157,-31.896132,-8.0085511)"
+ inkscape:label="plus"><path
+ style="display:inline;fill:#005a20;fill-opacity:1;stroke:#0082cc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 46.809533,31.077554 v -4.700241 h 4.630089 v -3.086726 l -4.559936,0.07015 -0.07015,-4.559936 h -3.016572 l 0.140305,4.559936 -4.840547,0.07015 0.07015,3.086726 4.489783,-0.07015 0.140306,4.630088 z"
+ id="path1718" /><path
+ style="fill:none;fill-opacity:1;stroke:#05a3ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 45.350068,18.723791 V 31.070694"
+ id="path1702" /><path
+ style="fill:none;fill-opacity:1;stroke:#05a3ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 51.516636,24.897242 H 39.169733"
+ id="path1708" /></g></svg>
diff --git a/app/bin/bitmaps/SVG/connect.svg b/app/bin/bitmaps/svg/connect.svg
index 91578a6..0fd3065 100644
--- a/app/bin/bitmaps/SVG/connect.svg
+++ b/app/bin/bitmaps/svg/connect.svg
@@ -1,12 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
@@ -15,7 +8,14 @@
style="enable-background:new 0 0 48 48;"
xml:space="preserve"
sodipodi:docname="connect.svg"
- inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
id="metadata39"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
@@ -33,13 +33,14 @@
id="namedview35"
showgrid="false"
inkscape:zoom="13.417014"
- inkscape:cx="24"
- inkscape:cy="24"
+ inkscape:cx="24.036645"
+ inkscape:cy="23.999379"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1"
- inkscape:document-rotation="0" />
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" />
<style
type="text/css"
id="style2">
@@ -125,12 +126,12 @@
style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" />
<line
class="st2"
- x1="25.311279"
+ x1="26.801924"
y1="31.447706"
x2="46.29179"
y2="31.447706"
id="line24"
- style="stroke:#cc0000;stroke-width:3.27821;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+ style="stroke:#cc0000;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
<path
class="st3"
d="M 26.229179,29.861805"
@@ -140,8 +141,8 @@
class="st4"
points="28.5,33.3 24.2,29 28.5,24.8 "
id="polyline28"
- style="stroke:#cc0000;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
- transform="matrix(1.3112816,0,0,1.3112816,-6.1594786,-6.5794627)" />
+ style="stroke:#cc0000;stroke-width:3.17082;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.2136125,0,0,1.3112816,-2.0816474,-6.5794627)" />
<line
class="st2"
x1="21.503935"
@@ -149,11 +150,11 @@
x2="1.8347114"
y2="31.447706"
id="line30"
- style="stroke:#cc0000;stroke-width:3.27821;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+ style="stroke:#cc0000;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
<polyline
class="st4"
points="18.3,33.3 21.8,29 18.3,24.8 "
id="polyline32"
- style="stroke:#cc0000;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
- transform="matrix(1.3112816,0,0,1.3112816,-7.3442601,-6.5794627)" />
+ style="stroke:#cc0000;stroke-width:3.05045;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.3112816,0,0,1.3112816,-7.7914533,-6.5794627)" />
</svg>
diff --git a/app/bin/bitmaps/SVG/control.svg b/app/bin/bitmaps/svg/control.svg
index 051e57f..051e57f 100644
--- a/app/bin/bitmaps/SVG/control.svg
+++ b/app/bin/bitmaps/svg/control.svg
diff --git a/app/bin/bitmaps/SVG/convert-from.svg b/app/bin/bitmaps/svg/convert-from.svg
index 259abd8..ed1ac55 100644
--- a/app/bin/bitmaps/SVG/convert-from.svg
+++ b/app/bin/bitmaps/svg/convert-from.svg
@@ -1,21 +1,21 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
viewBox="0 0 64 64"
xml:space="preserve"
id="svg5557"
sodipodi:docname="convert-from.svg"
- inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
id="metadata5561"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
@@ -29,17 +29,17 @@
id="namedview5559"
showgrid="false"
inkscape:zoom="9.3956422"
- inkscape:cx="32"
- inkscape:cy="35.011765"
+ inkscape:cx="32.036128"
+ inkscape:cy="35.016233"
inkscape:window-x="210"
inkscape:window-y="45"
inkscape:window-maximized="0"
inkscape:current-layer="arrow"
- inkscape:document-rotation="0" /><defs
- id="defs5523"><clipPath
- id="clipPath3916"><path
- d="m0 48h48v-48h-48z"
- id="path5520" /></clipPath></defs><g
+ inkscape:document-rotation="0"
+ inkscape:showpageshadow="2"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#d1d1d1" /><defs
+ id="defs5523" /><g
id="arrow"
transform="matrix(2.0520076,0,0,-2.195505,-30.0162,95.07383)"><g
transform="matrix(1.3333,0,0,-1.3333,30.307242,34.6674)"
diff --git a/app/bin/bitmaps/SVG/convert-to.svg b/app/bin/bitmaps/svg/convert-to.svg
index 5876444..5876444 100644
--- a/app/bin/bitmaps/SVG/convert-to.svg
+++ b/app/bin/bitmaps/svg/convert-to.svg
diff --git a/app/bin/bitmaps/SVG/copy.svg b/app/bin/bitmaps/svg/copy.svg
index a865437..a865437 100644
--- a/app/bin/bitmaps/SVG/copy.svg
+++ b/app/bin/bitmaps/svg/copy.svg
diff --git a/app/bin/bitmaps/SVG/cornu.svg b/app/bin/bitmaps/svg/cornu.svg
index be91077..be91077 100644
--- a/app/bin/bitmaps/SVG/cornu.svg
+++ b/app/bin/bitmaps/svg/cornu.svg
diff --git a/app/bin/bitmaps/SVG/curved-chord.svg b/app/bin/bitmaps/svg/curved-chord.svg
index 5db0f01..5db0f01 100644
--- a/app/bin/bitmaps/SVG/curved-chord.svg
+++ b/app/bin/bitmaps/svg/curved-chord.svg
diff --git a/app/bin/bitmaps/SVG/curved-end.svg b/app/bin/bitmaps/svg/curved-end.svg
index 4c76cb4..4c76cb4 100644
--- a/app/bin/bitmaps/SVG/curved-end.svg
+++ b/app/bin/bitmaps/svg/curved-end.svg
diff --git a/app/bin/bitmaps/SVG/curved-line-chord.svg b/app/bin/bitmaps/svg/curved-line-chord.svg
index b1cc041..b1cc041 100644
--- a/app/bin/bitmaps/SVG/curved-line-chord.svg
+++ b/app/bin/bitmaps/svg/curved-line-chord.svg
diff --git a/app/bin/bitmaps/SVG/curved-line-end.svg b/app/bin/bitmaps/svg/curved-line-end.svg
index 365e1bd..365e1bd 100644
--- a/app/bin/bitmaps/SVG/curved-line-end.svg
+++ b/app/bin/bitmaps/svg/curved-line-end.svg
diff --git a/app/bin/bitmaps/SVG/curved-line-middle.svg b/app/bin/bitmaps/svg/curved-line-middle.svg
index 237b453..237b453 100644
--- a/app/bin/bitmaps/SVG/curved-line-middle.svg
+++ b/app/bin/bitmaps/svg/curved-line-middle.svg
diff --git a/app/bin/bitmaps/SVG/curved-line-tangent.svg b/app/bin/bitmaps/svg/curved-line-tangent.svg
index dbac2e2..dbac2e2 100644
--- a/app/bin/bitmaps/SVG/curved-line-tangent.svg
+++ b/app/bin/bitmaps/svg/curved-line-tangent.svg
diff --git a/app/bin/bitmaps/SVG/curved-middle.svg b/app/bin/bitmaps/svg/curved-middle.svg
index 011b402..011b402 100644
--- a/app/bin/bitmaps/SVG/curved-middle.svg
+++ b/app/bin/bitmaps/svg/curved-middle.svg
diff --git a/app/bin/bitmaps/SVG/curved-tangent.svg b/app/bin/bitmaps/svg/curved-tangent.svg
index e9aee6b..e9aee6b 100644
--- a/app/bin/bitmaps/SVG/curved-tangent.svg
+++ b/app/bin/bitmaps/svg/curved-tangent.svg
diff --git a/app/bin/bitmaps/SVG/cut.svg b/app/bin/bitmaps/svg/cut.svg
index 8b8d9f0..8b8d9f0 100644
--- a/app/bin/bitmaps/SVG/cut.svg
+++ b/app/bin/bitmaps/svg/cut.svg
diff --git a/app/bin/bitmaps/SVG/delete.svg b/app/bin/bitmaps/svg/delete.svg
index 55d6471..55d6471 100644
--- a/app/bin/bitmaps/SVG/delete.svg
+++ b/app/bin/bitmaps/svg/delete.svg
diff --git a/app/bin/bitmaps/SVG/describe.svg b/app/bin/bitmaps/svg/describe.svg
index 495a3b8..495a3b8 100644
--- a/app/bin/bitmaps/SVG/describe.svg
+++ b/app/bin/bitmaps/svg/describe.svg
diff --git a/app/bin/bitmaps/SVG/description.svg b/app/bin/bitmaps/svg/description.svg
index 15f43e2..15f43e2 100644
--- a/app/bin/bitmaps/SVG/description.svg
+++ b/app/bin/bitmaps/svg/description.svg
diff --git a/app/bin/bitmaps/SVG/dimension.svg b/app/bin/bitmaps/svg/dimension.svg
index 7443b8a..7443b8a 100644
--- a/app/bin/bitmaps/SVG/dimension.svg
+++ b/app/bin/bitmaps/svg/dimension.svg
diff --git a/app/bin/bitmaps/SVG/doc-export-bmap.svg b/app/bin/bitmaps/svg/doc-export-bmap.svg
index 90a88b0..f6dd9c6 100644
--- a/app/bin/bitmaps/SVG/doc-export-bmap.svg
+++ b/app/bin/bitmaps/svg/doc-export-bmap.svg
@@ -18,7 +18,7 @@
xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
id="metadata1665"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs1663" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
@@ -46,23 +46,13 @@
id="layer2"
inkscape:label="Export DXF"><path
style="fill:#e5d0bc;fill-opacity:1;stroke:#000000;stroke-width:1.08845;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 45.81776,41.744039 3.150401,4.442557 -0.337543,17.068768 H 0.92453011 V 0.82575003 L 48.74313,0.94265931 48.968158,17.076152 46.549182,20.088854"
+ d="M 48.968161,46.186596 48.630618,63.255364 H 0.92453011 V 0.82575003 L 48.74313,0.94265931 48.968158,18.648436"
id="path849"
- sodipodi:nodetypes="cccccccc" /><path
+ sodipodi:nodetypes="cccccc" /><path
style="opacity:0.999;fill:#54a7d6;fill-opacity:1;stroke:#000000;stroke-width:0.348134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 1.488555,32.04338 7.6505091,3.398841 3.3862919,3.398843 1.505019,6.069362 0.627092,6.312136 1.25418,6.554908 2.006693,4.855492 -16.429785,0.121386 z"
id="lake"
- sodipodi:nodetypes="ccccccccc" /><g
- id="arrow"
- transform="matrix(0.99468395,0,0,0.97646706,3.2675238,0.70437977)"
- inkscape:label="arrow"
- style="fill:none;fill-opacity:1;stroke:#cc0000;stroke-width:4.7811;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"><path
- style="fill:none;fill-opacity:1;stroke:#cc0000;stroke-width:4.7811;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 46.398031,40.401712 11.404136,-8.5769 -11.209194,-8.430286"
- id="path1484" /><path
- style="fill:none;fill-opacity:1;stroke:#cc0000;stroke-width:4.46101;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 57.802167,31.824812 H 30.622099"
- id="path1706" /></g><path
+ sodipodi:nodetypes="ccccccccc" /><path
style="fill:none;stroke:#000000;stroke-width:2.17239;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 17.73639,35.772982 0.356685,-15.69413 c 1.305829,-5.853103 2.125288,-5.497379 4.874693,-9.987174"
id="path922"
@@ -94,4 +84,8 @@
style="opacity:0.998;fill:none;stroke:#000000;stroke-width:2.11841;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 45.772104,42.452438 0.01591,4.896454 C 45.426458,53.678042 43.785788,57.38601 36.32066,58.414645 L 29.558257,58.291694 C 22.244079,57.158368 18.761734,53.151166 18.000693,47.102987 L 17.877741,36.406092 C 17.586359,28.846724 11.453325,27.410748 6.0742709,23.741953 5.1148889,21.906907 4.1108952,20.205698 4.1070261,15.504114 5.7689541,8.76985 9.6724691,7.159212 13.574394,5.5449374 L 33.12389,5.2990318 c 7.305654,0.2514013 12.330785,3.466217 12.418233,11.0657502 l 0.114988,4.535242"
id="track"
- sodipodi:nodetypes="cccccccccccc" /></g></svg>
+ sodipodi:nodetypes="cccccccccccc" /><path
+ style="fill:#cc0000;fill-opacity:1;stroke:#f5f5f5;stroke-width:1.67;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 49.781581,18.67186 12.004892,9.672973 c 1.569669,1.986112 1.63065,5.354975 -0.267389,7.361364 l -12.401729,9.618708 -4.115416,-5.022173 6.13417,-4.930619 -18.200761,0.102318 -0.0031,-7.266705 17.677577,0.120129 -5.373841,-4.429189 z"
+ id="path940"
+ sodipodi:nodetypes="ccccccccccc" /></g></svg>
diff --git a/app/bin/bitmaps/SVG/doc-export-dxf.svg b/app/bin/bitmaps/svg/doc-export-dxf.svg
index 30e6e79..d22f028 100644
--- a/app/bin/bitmaps/SVG/doc-export-dxf.svg
+++ b/app/bin/bitmaps/svg/doc-export-dxf.svg
@@ -100,15 +100,8 @@
style="fill:none;stroke:#666666;stroke-width:1.89027;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 44.437406,3.280868 0.0019,16.965896"
id="path949-2-3-4"
- sodipodi:nodetypes="cc" /></g></g><g
- id="arrow"
- transform="translate(1.8075544,0.21265346)"
- inkscape:label="arrow"
- style="stroke:#cc0000;stroke-width:4.7811;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"><path
- style="fill:none;fill-opacity:1;stroke:#cc0000;stroke-width:4.7811;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 46.398031,40.401712 11.404136,-8.5769 -11.209194,-8.749266"
- id="path1484"
- sodipodi:nodetypes="ccc" /><path
- style="fill:none;stroke:#cc0000;stroke-width:4.46101;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 57.802167,31.824812 H 30.622099"
- id="path1706" /></g></g></svg>
+ sodipodi:nodetypes="cc" /></g></g><path
+ style="fill:#cc0000;fill-opacity:1;stroke:#f5f5f5;stroke-width:1.67;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 49.567628,18.67186 12.004892,9.672973 c 1.569669,1.986112 1.63065,5.354975 -0.267389,7.361364 l -12.401729,9.618708 -4.115416,-5.022173 6.13417,-4.930619 -18.200761,0.102318 -0.0031,-7.266705 17.677577,0.120129 -5.373841,-4.429189 z"
+ id="path940"
+ sodipodi:nodetypes="ccccccccccc" /></g></svg>
diff --git a/app/bin/bitmaps/SVG/doc-export-svg.svg b/app/bin/bitmaps/svg/doc-export-svg.svg
index fcde438..6872f3c 100644
--- a/app/bin/bitmaps/SVG/doc-export-svg.svg
+++ b/app/bin/bitmaps/svg/doc-export-svg.svg
@@ -55,17 +55,7 @@
inkscape:rounded="0.2"
inkscape:randomized="0"
d="m 46.677435,42.424367 c -1.194815,1.501816 -5.645649,5.26905 -7.324235,6.199311 -1.678585,0.930262 -7.232276,2.707471 -9.139082,2.924554 -1.906807,0.217082 -7.717858,-0.266296 -9.562592,-0.795441 -1.844733,-0.529145 -7.028463,-3.19952 -8.530278,-4.394335 C 10.619431,45.16364 6.8521971,40.712806 5.9219358,39.034221 4.9916746,37.355636 3.2144648,31.801944 2.9973824,29.895139 2.7802999,27.988332 3.263678,22.17728 3.792823,20.332547 4.3219679,18.487814 6.9923437,13.304084 8.1871586,11.802268 9.3819738,10.300452 13.832808,6.5332178 15.511393,5.6029565 17.189978,4.6726954 22.74367,2.8954856 24.650476,2.6784031 c 1.906806,-0.2170824 7.717858,0.2662956 9.562591,0.7954407 1.844733,0.5291449 7.028463,3.1995206 8.530279,4.3943355 1.501816,1.1948153 5.26905,5.6456497 6.199312,7.3242347 0.930261,1.678585 2.707471,7.232277 2.924553,9.139082 0.217083,1.906807 -0.266295,7.717859 -0.795441,9.562592 -0.529144,1.844733 -3.19952,7.028463 -4.394335,8.530279 z"
- transform="matrix(0.59879059,0,0,0.57681546,1.2240368,1.2665708)" /><g
- id="arrow"
- inkscape:label="arrow"
- style="stroke:#cc0000;stroke-width:5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="translate(3.296128,0.10188103)"><path
- style="fill:none;fill-opacity:1;stroke:#cc0000;stroke-width:5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 46.398031,40.401712 11.404136,-8.5769 -11.209194,-8.430286"
- id="path1484" /><path
- style="fill:none;stroke:#cc0000;stroke-width:5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 57.802167,31.824812 H 30.622099"
- id="path1706" /></g><path
+ transform="matrix(0.59879059,0,0,0.57681546,1.2240368,1.2665708)" /><path
style="fill:none;stroke:#1a66e5;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 4.3166078,61.082184 20.880646,38.63199 37.365489,61.229149 Z"
id="path851"
@@ -73,4 +63,8 @@
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 50.110141,5.2235118 C 40.279181,5.3434014 34.524473,6.4224094 28.769764,8.5804247 20.377481,11.937336 12.824425,17.092597 8.7481732,24.285983 c 0,0 -5.155259,11.149748 0.2397801,18.582913 4.7955897,7.792835 16.1251727,10.190629 16.1251727,10.190629 10.43041,3.956362 24.757235,2.517685 24.757235,2.517685"
id="path853"
- sodipodi:nodetypes="cccccc" /></g></svg>
+ sodipodi:nodetypes="cccccc" /><path
+ style="fill:#cc0000;fill-opacity:1;stroke:#f5f5f5;stroke-width:1.67;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 49.780281,18.67186 12.004892,9.672973 c 1.569669,1.986112 1.63065,5.354975 -0.267389,7.361364 l -12.401729,9.618708 -4.115416,-5.022173 6.13417,-4.930619 -18.200761,0.102318 -0.0031,-7.266705 17.677577,0.120129 -5.373841,-4.429189 z"
+ id="path940"
+ sodipodi:nodetypes="ccccccccccc" /></g></svg>
diff --git a/app/bin/bitmaps/SVG/doc-export.svg b/app/bin/bitmaps/svg/doc-export.svg
index 6954caf..6954caf 100644
--- a/app/bin/bitmaps/SVG/doc-export.svg
+++ b/app/bin/bitmaps/svg/doc-export.svg
diff --git a/app/bin/bitmaps/SVG/doc-import.svg b/app/bin/bitmaps/svg/doc-import-mod.svg
index e2bfc72..28bd818 100644
--- a/app/bin/bitmaps/SVG/doc-import.svg
+++ b/app/bin/bitmaps/svg/doc-import-mod.svg
@@ -4,7 +4,7 @@
viewBox="0 0 64 64"
xml:space="preserve"
id="svg1659"
- sodipodi:docname="doc-import.svg"
+ sodipodi:docname="doc-import-xtc.svg"
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
@@ -22,7 +22,7 @@
transform="rotate(90)" /><metadata
id="metadata1665"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs1663" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
@@ -36,9 +36,9 @@
inkscape:window-height="866"
id="namedview1661"
showgrid="false"
- inkscape:zoom="9.4049726"
- inkscape:cx="12.227574"
- inkscape:cy="32.961287"
+ inkscape:zoom="8.7705101"
+ inkscape:cx="35.117684"
+ inkscape:cy="32.951333"
inkscape:window-x="18"
inkscape:window-y="57"
inkscape:window-maximized="0"
diff --git a/app/bin/bitmaps/SVG/doc-import-xtc.svg b/app/bin/bitmaps/svg/doc-import.svg
index 01f2275..9a7eaa2 100644
--- a/app/bin/bitmaps/SVG/doc-import-xtc.svg
+++ b/app/bin/bitmaps/svg/doc-import.svg
@@ -4,7 +4,7 @@
viewBox="0 0 64 64"
xml:space="preserve"
id="svg1659"
- sodipodi:docname="doc-import-xtc.svg"
+ sodipodi:docname="doc-import.svg"
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
@@ -22,7 +22,7 @@
transform="rotate(90)" /><metadata
id="metadata1665"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs1663" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
@@ -37,7 +37,7 @@
id="namedview1661"
showgrid="false"
inkscape:zoom="9.4049726"
- inkscape:cx="12.227574"
+ inkscape:cx="30.941079"
inkscape:cy="32.961287"
inkscape:window-x="18"
inkscape:window-y="57"
diff --git a/app/bin/bitmaps/SVG/doc-new.svg b/app/bin/bitmaps/svg/doc-new.svg
index 6aac25e..e324191 100644
--- a/app/bin/bitmaps/SVG/doc-new.svg
+++ b/app/bin/bitmaps/svg/doc-new.svg
@@ -15,7 +15,7 @@
xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
id="metadata1665"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs1663" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
@@ -50,14 +50,14 @@
y="-55.713051"
transform="rotate(90)" /><g
id="plus"
- transform="matrix(1.6740309,0,0,1.6334616,-51.092795,-24.413751)"
+ transform="matrix(1.5984081,0,0,1.5596714,-48.1547,-23.370556)"
inkscape:label="plus"><path
- style="display:inline;fill:#005a20;fill-opacity:1;stroke:#00993d;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ style="display:inline;fill:#005a20;fill-opacity:1;stroke:#0082cc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 46.809533,31.077554 v -4.700241 h 4.630089 v -3.086726 l -4.559936,0.07015 -0.07015,-4.559936 h -3.016572 l 0.140305,4.559936 -4.840547,0.07015 0.07015,3.086726 4.489783,-0.07015 0.140306,4.630088 z"
id="path1718" /><path
- style="fill:none;fill-opacity:1;stroke:#00e552;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ style="fill:none;fill-opacity:1;stroke:#05a3ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 45.350068,18.723791 V 31.070694"
id="path1702" /><path
- style="fill:none;fill-opacity:1;stroke:#00e552;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ style="fill:none;fill-opacity:1;stroke:#05a3ff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 51.516636,24.897242 H 39.169733"
id="path1708" /></g></g></svg>
diff --git a/app/bin/bitmaps/SVG/doc-open.svg b/app/bin/bitmaps/svg/doc-open.svg
index ede9909..ede9909 100644
--- a/app/bin/bitmaps/SVG/doc-open.svg
+++ b/app/bin/bitmaps/svg/doc-open.svg
diff --git a/app/bin/bitmaps/SVG/doc-print.svg b/app/bin/bitmaps/svg/doc-print.svg
index 1926edf..1926edf 100644
--- a/app/bin/bitmaps/SVG/doc-print.svg
+++ b/app/bin/bitmaps/svg/doc-print.svg
diff --git a/app/bin/bitmaps/svg/doc-recent.svg b/app/bin/bitmaps/svg/doc-recent.svg
new file mode 100644
index 0000000..5718a2f
--- /dev/null
+++ b/app/bin/bitmaps/svg/doc-recent.svg
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 64 64"
+ xml:space="preserve"
+ id="svg1659"
+ sodipodi:docname="doc-recent.svg"
+ inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
+ id="metadata1665"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs1663" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1688"
+ inkscape:window-height="943"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="8.1826993"
+ inkscape:cx="32.079879"
+ inkscape:cy="27.558143"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layout"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><g
+ id="Layout"
+ inkscape:label="#layout"
+ transform="translate(-0.22803691,0.91214765)"
+ style="opacity:1"><rect
+ style="fill:#f5f5f5;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect900"
+ width="60.915188"
+ height="46.970028"
+ x="0.63025844"
+ y="-55.713051"
+ transform="rotate(90)" /><g
+ id="g827"
+ transform="matrix(1.0619869,0,0,1.0619869,-1.2047468,-0.93973971)"><ellipse
+ style="opacity:1;fill:none;fill-rule:evenodd;stroke:#005fff;stroke-width:2.60267;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+ id="path929"
+ cx="24.364325"
+ cy="16.018827"
+ rx="9.542079"
+ ry="9.4148512" /><path
+ style="fill:none;stroke:#005fff;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 24.526241,10.323952 0.115076,5.901701 h 4.399527"
+ id="path964"
+ sodipodi:nodetypes="ccc" /></g></g></svg>
diff --git a/app/bin/bitmaps/SVG/doc-revert.svg b/app/bin/bitmaps/svg/doc-revert.svg
index f5b6290..f5b6290 100644
--- a/app/bin/bitmaps/SVG/doc-revert.svg
+++ b/app/bin/bitmaps/svg/doc-revert.svg
diff --git a/app/bin/bitmaps/SVG/doc-save-as.svg b/app/bin/bitmaps/svg/doc-save-as.svg
index cf9244d..cf9244d 100644
--- a/app/bin/bitmaps/SVG/doc-save-as.svg
+++ b/app/bin/bitmaps/svg/doc-save-as.svg
diff --git a/app/bin/bitmaps/SVG/doc-save.svg b/app/bin/bitmaps/svg/doc-save.svg
index 3a553dd..3a553dd 100644
--- a/app/bin/bitmaps/SVG/doc-save.svg
+++ b/app/bin/bitmaps/svg/doc-save.svg
diff --git a/app/bin/bitmaps/SVG/doc-setup.svg b/app/bin/bitmaps/svg/doc-setup.svg
index 1219b1e..1219b1e 100644
--- a/app/bin/bitmaps/SVG/doc-setup.svg
+++ b/app/bin/bitmaps/svg/doc-setup.svg
diff --git a/app/bin/bitmaps/SVG/down.svg b/app/bin/bitmaps/svg/down.svg
index 41f83fb..41f83fb 100644
--- a/app/bin/bitmaps/SVG/down.svg
+++ b/app/bin/bitmaps/svg/down.svg
diff --git a/app/bin/bitmaps/SVG/elevation.svg b/app/bin/bitmaps/svg/elevation.svg
index b6f9813..b6f9813 100644
--- a/app/bin/bitmaps/SVG/elevation.svg
+++ b/app/bin/bitmaps/svg/elevation.svg
diff --git a/app/bin/bitmaps/SVG/exit.svg b/app/bin/bitmaps/svg/exit.svg
index 210bdb9..210bdb9 100644
--- a/app/bin/bitmaps/SVG/exit.svg
+++ b/app/bin/bitmaps/svg/exit.svg
diff --git a/app/bin/bitmaps/SVG/extend.svg b/app/bin/bitmaps/svg/extend.svg
index eac7840..eac7840 100644
--- a/app/bin/bitmaps/SVG/extend.svg
+++ b/app/bin/bitmaps/svg/extend.svg
diff --git a/app/bin/bitmaps/SVG/filled-box.svg b/app/bin/bitmaps/svg/filled-box.svg
index 2d8e2dd..2d8e2dd 100644
--- a/app/bin/bitmaps/SVG/filled-box.svg
+++ b/app/bin/bitmaps/svg/filled-box.svg
diff --git a/app/bin/bitmaps/SVG/filled-polygon.svg b/app/bin/bitmaps/svg/filled-polygon.svg
index 6fe8cce..6fe8cce 100644
--- a/app/bin/bitmaps/SVG/filled-polygon.svg
+++ b/app/bin/bitmaps/svg/filled-polygon.svg
diff --git a/app/bin/bitmaps/SVG/go.svg b/app/bin/bitmaps/svg/go.svg
index 943e561..943e561 100644
--- a/app/bin/bitmaps/SVG/go.svg
+++ b/app/bin/bitmaps/svg/go.svg
diff --git a/app/bin/bitmaps/SVG/grid.svg b/app/bin/bitmaps/svg/grid.svg
index 23b9b93..23b9b93 100644
--- a/app/bin/bitmaps/SVG/grid.svg
+++ b/app/bin/bitmaps/svg/grid.svg
diff --git a/app/bin/bitmaps/SVG/helix.svg b/app/bin/bitmaps/svg/helix.svg
index c88f470..c88f470 100644
--- a/app/bin/bitmaps/SVG/helix.svg
+++ b/app/bin/bitmaps/svg/helix.svg
diff --git a/app/bin/bitmaps/SVG/Info.svg b/app/bin/bitmaps/svg/info.svg
index 979601d..979601d 100644
--- a/app/bin/bitmaps/SVG/Info.svg
+++ b/app/bin/bitmaps/svg/info.svg
diff --git a/app/bin/bitmaps/SVG/join-line.svg b/app/bin/bitmaps/svg/join-line.svg
index feb8a93..feb8a93 100644
--- a/app/bin/bitmaps/SVG/join-line.svg
+++ b/app/bin/bitmaps/svg/join-line.svg
diff --git a/app/bin/bitmaps/SVG/join.svg b/app/bin/bitmaps/svg/join.svg
index c441656..c441656 100644
--- a/app/bin/bitmaps/SVG/join.svg
+++ b/app/bin/bitmaps/svg/join.svg
diff --git a/app/bin/bitmaps/SVG/layers.svg b/app/bin/bitmaps/svg/layers.svg
index b261d30..b261d30 100644
--- a/app/bin/bitmaps/SVG/layers.svg
+++ b/app/bin/bitmaps/svg/layers.svg
diff --git a/app/bin/bitmaps/svg/loosen.svg b/app/bin/bitmaps/svg/loosen.svg
new file mode 100644
index 0000000..eb3d0a6
--- /dev/null
+++ b/app/bin/bitmaps/svg/loosen.svg
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ viewBox="0 0 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="loosen.svg"
+ inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
+ id="metadata39"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs37" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1436"
+ inkscape:window-height="950"
+ id="namedview35"
+ showgrid="false"
+ inkscape:zoom="13.417014"
+ inkscape:cx="24.036645"
+ inkscape:cy="23.999379"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" />
+<style
+ type="text/css"
+ id="style2">
+ .st0{fill:none;stroke:#5494FF;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#003794;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FB0000;stroke-width:2;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FB0000;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#FB0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<line
+ class="st0"
+ x1="4.3307743"
+ y1="9.274683"
+ x2="4.3307743"
+ y2="23.698782"
+ id="line4" />
+<line
+ class="st0"
+ x1="10.887182"
+ y1="9.274683"
+ x2="10.887182"
+ y2="23.698782"
+ id="line6" />
+<line
+ class="st0"
+ x1="17.44359"
+ y1="9.274683"
+ x2="17.44359"
+ y2="23.698782"
+ id="line8" />
+<line
+ class="st0"
+ x1="30.556406"
+ y1="9.274683"
+ x2="30.556406"
+ y2="23.698782"
+ id="line10" />
+<line
+ class="st0"
+ x1="37.112816"
+ y1="9.274683"
+ x2="37.112816"
+ y2="23.698782"
+ id="line12" />
+<line
+ class="st0"
+ x1="43.669224"
+ y1="9.274683"
+ x2="43.669224"
+ y2="23.698782"
+ id="line14" />
+<line
+ class="st1"
+ x1="27.249117"
+ y1="12.130193"
+ x2="46.29179"
+ y2="12.130193"
+ id="line16"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st1"
+ x1="1.7082114"
+ y1="12.130193"
+ x2="20.750879"
+ y2="12.130193"
+ id="line18"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st1"
+ x1="27.249117"
+ y1="20.76922"
+ x2="46.29179"
+ y2="20.76922"
+ id="line20"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st1"
+ x1="1.7082114"
+ y1="20.76922"
+ x2="20.750879"
+ y2="20.76922"
+ id="line22"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" />
+
+<path
+ class="st3"
+ d="M 26.229179,29.861805"
+ id="path26"
+ style="stroke-width:1.31128" />
+<polyline
+ class="st4"
+ points="28.5,33.3 24.2,29 28.5,24.8 "
+ id="polyline28"
+ style="stroke:#cc0000;stroke-width:3.18899611;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(-1.1826806,0,0,1.3302845,60.9101,-7.1314984)" />
+
+<polyline
+ class="st4"
+ points="18.3,33.3 21.8,29 18.3,24.8 "
+ id="polyline32"
+ style="stroke:#cc0000;stroke-width:3.0504508;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(-1.3112816,0,0,1.3112816,44.604466,-6.5794627)" />
+</svg>
diff --git a/app/bin/bitmaps/SVG/magnet.svg b/app/bin/bitmaps/svg/magnet.svg
index 9d0b3a6..9d0b3a6 100644
--- a/app/bin/bitmaps/SVG/magnet.svg
+++ b/app/bin/bitmaps/svg/magnet.svg
diff --git a/app/bin/bitmaps/SVG/manage.svg b/app/bin/bitmaps/svg/manage.svg
index 2791e15..2791e15 100644
--- a/app/bin/bitmaps/SVG/manage.svg
+++ b/app/bin/bitmaps/svg/manage.svg
diff --git a/app/bin/bitmaps/SVG/map.svg b/app/bin/bitmaps/svg/map.svg
index 69686be..69686be 100644
--- a/app/bin/bitmaps/SVG/map.svg
+++ b/app/bin/bitmaps/svg/map.svg
diff --git a/app/bin/bitmaps/SVG/move.svg b/app/bin/bitmaps/svg/move.svg
index 9c1e906..9c1e906 100644
--- a/app/bin/bitmaps/SVG/move.svg
+++ b/app/bin/bitmaps/svg/move.svg
diff --git a/app/bin/bitmaps/SVG/new-car.svg b/app/bin/bitmaps/svg/new-car.svg
index 6b0d579..6b0d579 100644
--- a/app/bin/bitmaps/SVG/new-car.svg
+++ b/app/bin/bitmaps/svg/new-car.svg
diff --git a/app/bin/bitmaps/SVG/ok.svg b/app/bin/bitmaps/svg/ok.svg
index 21e0640..21e0640 100644
--- a/app/bin/bitmaps/SVG/ok.svg
+++ b/app/bin/bitmaps/svg/ok.svg
diff --git a/app/bin/bitmaps/SVG/pan-zoom.svg b/app/bin/bitmaps/svg/pan-zoom.svg
index 7597072..7597072 100644
--- a/app/bin/bitmaps/SVG/pan-zoom.svg
+++ b/app/bin/bitmaps/svg/pan-zoom.svg
diff --git a/app/bin/bitmaps/SVG/parallel-line.svg b/app/bin/bitmaps/svg/parallel-line.svg
index ad96c16..ad96c16 100644
--- a/app/bin/bitmaps/SVG/parallel-line.svg
+++ b/app/bin/bitmaps/svg/parallel-line.svg
diff --git a/app/bin/bitmaps/SVG/parallel.svg b/app/bin/bitmaps/svg/parallel.svg
index 9ff2898..9ff2898 100644
--- a/app/bin/bitmaps/SVG/parallel.svg
+++ b/app/bin/bitmaps/svg/parallel.svg
diff --git a/app/bin/bitmaps/SVG/parameter.svg b/app/bin/bitmaps/svg/parameter.svg
index b686804..b686804 100644
--- a/app/bin/bitmaps/SVG/parameter.svg
+++ b/app/bin/bitmaps/svg/parameter.svg
diff --git a/app/bin/bitmaps/SVG/paste.svg b/app/bin/bitmaps/svg/paste.svg
index 7d089d6..7d089d6 100644
--- a/app/bin/bitmaps/SVG/paste.svg
+++ b/app/bin/bitmaps/svg/paste.svg
diff --git a/app/bin/bitmaps/SVG/polygon.svg b/app/bin/bitmaps/svg/polygon.svg
index f8aa925..f8aa925 100644
--- a/app/bin/bitmaps/SVG/polygon.svg
+++ b/app/bin/bitmaps/svg/polygon.svg
diff --git a/app/bin/bitmaps/SVG/polyline.svg b/app/bin/bitmaps/svg/polyline.svg
index 695bad9..695bad9 100644
--- a/app/bin/bitmaps/SVG/polyline.svg
+++ b/app/bin/bitmaps/svg/polyline.svg
diff --git a/app/bin/bitmaps/SVG/profile.svg b/app/bin/bitmaps/svg/profile.svg
index 9f76546..9f76546 100644
--- a/app/bin/bitmaps/SVG/profile.svg
+++ b/app/bin/bitmaps/svg/profile.svg
diff --git a/app/bin/bitmaps/SVG/protractor.svg b/app/bin/bitmaps/svg/protractor.svg
index 6e7d141..6e7d141 100644
--- a/app/bin/bitmaps/SVG/protractor.svg
+++ b/app/bin/bitmaps/svg/protractor.svg
diff --git a/app/bin/bitmaps/SVG/redo.svg b/app/bin/bitmaps/svg/redo.svg
index 77c8cb8..77c8cb8 100644
--- a/app/bin/bitmaps/SVG/redo.svg
+++ b/app/bin/bitmaps/svg/redo.svg
diff --git a/app/bin/bitmaps/SVG/reflect.svg b/app/bin/bitmaps/svg/reflect.svg
index 837743c..837743c 100644
--- a/app/bin/bitmaps/SVG/reflect.svg
+++ b/app/bin/bitmaps/svg/reflect.svg
diff --git a/app/bin/bitmaps/svg/roadbed.svg b/app/bin/bitmaps/svg/roadbed.svg
new file mode 100644
index 0000000..0a2f264
--- /dev/null
+++ b/app/bin/bitmaps/svg/roadbed.svg
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 64 64"
+ xml:space="preserve"
+ id="svg1659"
+ sodipodi:docname="roadbed.svg"
+ inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
+ id="metadata1665"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs1663" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1393"
+ inkscape:window-height="866"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="8.1776315"
+ inkscape:cx="36.1963"
+ inkscape:cy="32.038617"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg1659"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><path
+ style="fill:#cccccc;fill-opacity:1;stroke:#cccccc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.3451327,10.638778 0,43.044247 H 25.068383 L 38.764281,10.761062 Z"
+ id="path1255"
+ sodipodi:nodetypes="ccccc" /><g
+ id="track"
+ style="display:inline"
+ transform="matrix(1.0504573,0,0,1.0504573,-1.6146336,-1.5690294)"><g
+ id="ties"
+ inkscape:label="#ties"
+ style="stroke:#d88b0d;stroke-width:2.667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.3028702,0,0,1.3028702,-9.6908041,-5.2415278)"><path
+ d="M 11.9997,21.3344 V 36.0007"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.6666"
+ id="path1597"
+ style="stroke:#d88b0d;stroke-width:2.667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M 0,0 V -11"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path1601"
+ transform="matrix(1.3333,0,0,-1.3333,18.6662,21.3344)"
+ style="stroke:#d88b0d;stroke-width:2.0003;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M 25.3327,21.3344 V 36.0007"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.6666"
+ id="path1605"
+ style="stroke:#d88b0d;stroke-width:2.667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M 31.9992,21.3344 V 36.0007"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.6666"
+ id="path1609"
+ style="stroke:#d88b0d;stroke-width:2.667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M 38.6657,21.3344 V 36.0007"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.6666"
+ id="path1613"
+ style="stroke:#d88b0d;stroke-width:2.667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M 45.3322,21.3344 V 36.0007"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.6666"
+ id="path1617"
+ style="stroke:#d88b0d;stroke-width:2.667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M 51.9987,21.3344 V 36.0007"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.6666"
+ id="path1621"
+ style="stroke:#d88b0d;stroke-width:2.667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /></g><g
+ id="rails"
+ inkscape:label="#rails"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none"
+ transform="matrix(1.3028702,0,0,1.3028702,-9.6908041,-5.2415278)"><path
+ d="M 9.3331,24.185806 H 54.6653"
+ fill="none"
+ stroke="#000000"
+ stroke-miterlimit="10"
+ id="path1625"
+ style="stroke-width:2.30261;stroke-miterlimit:10;stroke-dasharray:none" /><path
+ d="M 9.3331,33.149294 H 54.6653"
+ fill="none"
+ stroke="#000000"
+ stroke-miterlimit="10"
+ id="path1629"
+ style="stroke-width:2.30261;stroke-miterlimit:10;stroke-dasharray:none" /></g></g><path
+ style="fill:none;stroke:#cc0000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 40.131939,10.661303 23.868061,53.338697"
+ id="path947"
+ sodipodi:nodetypes="cc" /></svg>
diff --git a/app/bin/bitmaps/SVG/rotate.svg b/app/bin/bitmaps/svg/rotate.svg
index 2c788f2..2c788f2 100644
--- a/app/bin/bitmaps/SVG/rotate.svg
+++ b/app/bin/bitmaps/svg/rotate.svg
diff --git a/app/bin/bitmaps/SVG/ruler.svg b/app/bin/bitmaps/svg/ruler.svg
index 8cb140b..8cb140b 100644
--- a/app/bin/bitmaps/SVG/ruler.svg
+++ b/app/bin/bitmaps/svg/ruler.svg
diff --git a/app/bin/bitmaps/SVG/select.svg b/app/bin/bitmaps/svg/select.svg
index bb81e69..bb81e69 100644
--- a/app/bin/bitmaps/SVG/select.svg
+++ b/app/bin/bitmaps/svg/select.svg
diff --git a/app/bin/bitmaps/SVG/sensor.svg b/app/bin/bitmaps/svg/sensor.svg
index 4188f0e..4188f0e 100644
--- a/app/bin/bitmaps/SVG/sensor.svg
+++ b/app/bin/bitmaps/svg/sensor.svg
diff --git a/app/bin/bitmaps/SVG/signal.svg b/app/bin/bitmaps/svg/signal.svg
index ad01427..c0e11be 100644
--- a/app/bin/bitmaps/SVG/signal.svg
+++ b/app/bin/bitmaps/svg/signal.svg
@@ -4,7 +4,7 @@
viewBox="0 0 64 64"
xml:space="preserve"
id="svg27"
- sodipodi:docname="signal.svg"
+ sodipodi:docname="signal1.svg"
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
@@ -30,7 +30,7 @@
showgrid="false"
inkscape:zoom="9.3956422"
inkscape:cx="31.982912"
- inkscape:cy="35.016233"
+ inkscape:cy="7.8759917"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
@@ -62,17 +62,21 @@
id="path11"
style="stroke-width:1.47008;stroke-miterlimit:4;stroke-dasharray:none" /></g><g
clip-path="url(#clipPath3381)"
- id="g23"
- transform="matrix(2.1918574,0,0,-2.4227971,-21.664458,94.940764)"><g
- transform="translate(27.604,31.282)"
- id="g17"><path
- d="m 0,0 c 0,-1.489 -1.294,-2.697 -2.89,-2.697 -1.595,0 -2.889,1.208 -2.889,2.697 0,1.489 1.294,2.696 2.889,2.696 C -1.294,2.696 0,1.489 0,0"
- fill="#f40f3b"
- id="path15" /></g><g
- transform="translate(27.604,31.282)"
- id="g21"><path
- d="m 0,0 c 0,-1.489 -1.294,-2.697 -2.89,-2.697 -1.595,0 -2.889,1.208 -2.889,2.697 0,1.489 1.294,2.696 2.889,2.696 C -1.294,2.696 0,1.489 0,0 Z"
- fill="none"
- stroke="#020000"
- stroke-miterlimit="10"
- id="path19" /></g></g></g></svg>
+ id="signal"
+ transform="matrix(1.1339699,0,0,-1.2534478,4.6618651,54.929612)"
+ style="display:inline"><path
+ d="m 27.383451,24.789336 c 0,-1.615182 -1.294,-2.925552 -2.89,-2.925552 -1.595,0 -2.889,1.31037 -2.889,2.925552 0,0.807592 -0.04119,4.493604 0.116996,6.842029 0.151733,2.252629 2.092782,2.686262 2.890282,2.686262 0.798,0 2.830828,-0.40148 2.85173,-2.644199 0.02032,-2.180176 -0.08001,-6.0765 -0.08001,-6.884092 z"
+ fill="none"
+ stroke="#020000"
+ stroke-miterlimit="10"
+ id="target"
+ sodipodi:nodetypes="sssssss"
+ style="fill:#000000;fill-opacity:1;stroke-width:1.04151" /><path
+ d="m 27.19258,31.345607 c 0,-1.340191 -1.164679,-2.427465 -2.601177,-2.427465 -1.435597,0 -2.600277,1.087274 -2.600277,2.427465 0,1.340192 1.16468,2.426566 2.600277,2.426566 1.436498,0 2.601177,-1.086374 2.601177,-2.426566"
+ fill="#f40f3b"
+ id="red"
+ style="display:inline;stroke-width:0.900061" /><path
+ d="m 27.076572,24.835939 c 0,-1.326466 -1.152752,-2.402605 -2.574538,-2.402605 -1.420896,0 -2.573648,1.076139 -2.573648,2.402605 0,1.326467 1.152752,2.401715 2.573648,2.401715 1.421786,0 2.574538,-1.075248 2.574538,-2.401715"
+ fill="#f40f3b"
+ id="green"
+ style="display:inline;fill:#10db0b;fill-opacity:1;stroke:none;stroke-width:0.890844;stroke-opacity:1" /></g></g></svg>
diff --git a/app/bin/bitmaps/SVG/snap-curs.svg b/app/bin/bitmaps/svg/snap-curs.svg
index fa700ce..fa700ce 100644
--- a/app/bin/bitmaps/SVG/snap-curs.svg
+++ b/app/bin/bitmaps/svg/snap-curs.svg
diff --git a/app/bin/bitmaps/SVG/snap-grid.svg b/app/bin/bitmaps/svg/snap-grid.svg
index f6650a7..f6650a7 100644
--- a/app/bin/bitmaps/SVG/snap-grid.svg
+++ b/app/bin/bitmaps/svg/snap-grid.svg
diff --git a/app/bin/bitmaps/SVG/split-draw.svg b/app/bin/bitmaps/svg/split-draw.svg
index d74ee25..d74ee25 100644
--- a/app/bin/bitmaps/SVG/split-draw.svg
+++ b/app/bin/bitmaps/svg/split-draw.svg
diff --git a/app/bin/bitmaps/SVG/split.svg b/app/bin/bitmaps/svg/split.svg
index 2bc28cb..2bc28cb 100644
--- a/app/bin/bitmaps/SVG/split.svg
+++ b/app/bin/bitmaps/svg/split.svg
diff --git a/app/bin/bitmaps/SVG/star.svg b/app/bin/bitmaps/svg/star.svg
index 13f0914..13f0914 100644
--- a/app/bin/bitmaps/SVG/star.svg
+++ b/app/bin/bitmaps/svg/star.svg
diff --git a/app/bin/bitmaps/SVG/sticky-doc.svg b/app/bin/bitmaps/svg/sticky-doc.svg
index 20ea76f..20ea76f 100644
--- a/app/bin/bitmaps/SVG/sticky-doc.svg
+++ b/app/bin/bitmaps/svg/sticky-doc.svg
diff --git a/app/bin/bitmaps/SVG/sticky-link.svg b/app/bin/bitmaps/svg/sticky-link.svg
index f403661..f403661 100644
--- a/app/bin/bitmaps/SVG/sticky-link.svg
+++ b/app/bin/bitmaps/svg/sticky-link.svg
diff --git a/app/bin/bitmaps/SVG/sticky-note.svg b/app/bin/bitmaps/svg/sticky-note.svg
index 1fe3d30..1fe3d30 100644
--- a/app/bin/bitmaps/SVG/sticky-note.svg
+++ b/app/bin/bitmaps/svg/sticky-note.svg
diff --git a/app/bin/bitmaps/SVG/stop.svg b/app/bin/bitmaps/svg/stop.svg
index 4bd5fa0..4bd5fa0 100644
--- a/app/bin/bitmaps/SVG/stop.svg
+++ b/app/bin/bitmaps/svg/stop.svg
diff --git a/app/bin/bitmaps/SVG/straight-line.svg b/app/bin/bitmaps/svg/straight-line.svg
index 32a01a3..32a01a3 100644
--- a/app/bin/bitmaps/SVG/straight-line.svg
+++ b/app/bin/bitmaps/svg/straight-line.svg
diff --git a/app/bin/bitmaps/SVG/straight.svg b/app/bin/bitmaps/svg/straight.svg
index 6c5f37b..6c5f37b 100644
--- a/app/bin/bitmaps/SVG/straight.svg
+++ b/app/bin/bitmaps/svg/straight.svg
diff --git a/app/bin/bitmaps/SVG/switch-ai.svg b/app/bin/bitmaps/svg/switch-motor.svg
index 9c842e3..9c842e3 100644
--- a/app/bin/bitmaps/SVG/switch-ai.svg
+++ b/app/bin/bitmaps/svg/switch-motor.svg
diff --git a/app/bin/bitmaps/SVG/switchm.svg b/app/bin/bitmaps/svg/switchm.svg
index 5064f4e..5064f4e 100644
--- a/app/bin/bitmaps/SVG/switchm.svg
+++ b/app/bin/bitmaps/svg/switchm.svg
diff --git a/app/bin/bitmaps/SVG/switchmdel.svg b/app/bin/bitmaps/svg/switchmdel.svg
index cdf6d81..cdf6d81 100644
--- a/app/bin/bitmaps/SVG/switchmdel.svg
+++ b/app/bin/bitmaps/svg/switchmdel.svg
diff --git a/app/bin/bitmaps/SVG/switchmedit.svg b/app/bin/bitmaps/svg/switchmedit.svg
index 9a2008a..9a2008a 100644
--- a/app/bin/bitmaps/SVG/switchmedit.svg
+++ b/app/bin/bitmaps/svg/switchmedit.svg
diff --git a/app/bin/bitmaps/SVG/switchmnew.svg b/app/bin/bitmaps/svg/switchmnew.svg
index 4f8a2e6..4f8a2e6 100644
--- a/app/bin/bitmaps/SVG/switchmnew.svg
+++ b/app/bin/bitmaps/svg/switchmnew.svg
diff --git a/app/bin/bitmaps/SVG/table-edge.svg b/app/bin/bitmaps/svg/table-edge.svg
index e2663ac..e2663ac 100644
--- a/app/bin/bitmaps/SVG/table-edge.svg
+++ b/app/bin/bitmaps/svg/table-edge.svg
diff --git a/app/bin/bitmaps/SVG/text.svg b/app/bin/bitmaps/svg/text.svg
index c5e5c32..c5e5c32 100644
--- a/app/bin/bitmaps/SVG/text.svg
+++ b/app/bin/bitmaps/svg/text.svg
diff --git a/app/bin/bitmaps/svg/ties.svg b/app/bin/bitmaps/svg/ties.svg
new file mode 100644
index 0000000..b8e8c35
--- /dev/null
+++ b/app/bin/bitmaps/svg/ties.svg
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 64 64"
+ xml:space="preserve"
+ id="svg1659"
+ sodipodi:docname="ties.svg"
+ inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
+ id="metadata1665"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs1663" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1393"
+ inkscape:window-height="866"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="8.1776315"
+ inkscape:cx="36.1963"
+ inkscape:cy="32.038617"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg1659"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><g
+ id="track"
+ style="display:inline"
+ transform="matrix(1.0504573,0,0,1.0504573,-1.6146336,-1.5690294)"><g
+ id="ties"
+ inkscape:label="#ties"
+ style="stroke:#d88b0d;stroke-width:2.667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.3028702,0,0,1.3028702,-9.6908041,-5.2415278)"><path
+ d="M 11.9997,21.3344 V 36.0007"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.6666"
+ id="path1597"
+ style="stroke:#d88b0d;stroke-width:2.667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M 0,0 V -11"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path1601"
+ transform="matrix(1.3333,0,0,-1.3333,18.6662,21.3344)"
+ style="stroke:#d88b0d;stroke-width:2.0003;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M 25.3327,21.3344 V 36.0007"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.6666"
+ id="path1605"
+ style="stroke:#d88b0d;stroke-width:2.667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="m 31.9992,21.3344 v 7.250278"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.6666"
+ id="path1609"
+ style="stroke:#d88b0d;stroke-width:2.667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="cc" /></g><g
+ id="rails"
+ inkscape:label="#rails"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none"
+ transform="matrix(1.3028702,0,0,1.3028702,-9.6908041,-5.2415278)"><path
+ d="M 9.3331,24.185806 H 54.6653"
+ fill="none"
+ stroke="#000000"
+ stroke-miterlimit="10"
+ id="path1625"
+ style="stroke-width:2.30261;stroke-miterlimit:10;stroke-dasharray:none" /><path
+ d="M 9.3331,33.149294 H 54.6653"
+ fill="none"
+ stroke="#000000"
+ stroke-miterlimit="10"
+ id="path1629"
+ style="stroke-width:2.30261;stroke-miterlimit:10;stroke-dasharray:none" /></g></g><path
+ style="fill:none;stroke:#cc0000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 41.180129,2.6688598 22.819872,61.33114"
+ id="path947"
+ sodipodi:nodetypes="cc" /></svg>
diff --git a/app/bin/bitmaps/SVG/tipofday.svg b/app/bin/bitmaps/svg/tipofday.svg
index c83540d..c83540d 100644
--- a/app/bin/bitmaps/SVG/tipofday.svg
+++ b/app/bin/bitmaps/svg/tipofday.svg
diff --git a/app/bin/bitmaps/SVG/top.svg b/app/bin/bitmaps/svg/top.svg
index ccf60ad..ccf60ad 100644
--- a/app/bin/bitmaps/SVG/top.svg
+++ b/app/bin/bitmaps/svg/top.svg
diff --git a/app/bin/bitmaps/SVG/train.svg b/app/bin/bitmaps/svg/train.svg
index e2d2a71..e2d2a71 100644
--- a/app/bin/bitmaps/SVG/train.svg
+++ b/app/bin/bitmaps/svg/train.svg
diff --git a/app/bin/bitmaps/SVG/trim.svg b/app/bin/bitmaps/svg/trim.svg
index 553d08f..553d08f 100644
--- a/app/bin/bitmaps/SVG/trim.svg
+++ b/app/bin/bitmaps/svg/trim.svg
diff --git a/app/bin/bitmaps/SVG/tunnel.svg b/app/bin/bitmaps/svg/tunnel.svg
index c31fabe..c31fabe 100644
--- a/app/bin/bitmaps/SVG/tunnel.svg
+++ b/app/bin/bitmaps/svg/tunnel.svg
diff --git a/app/bin/bitmaps/SVG/turnout-designer.svg b/app/bin/bitmaps/svg/turnout-design.svg
index f11cbf6..0c394e1 100644
--- a/app/bin/bitmaps/SVG/turnout-designer.svg
+++ b/app/bin/bitmaps/svg/turnout-design.svg
@@ -7,7 +7,7 @@
viewBox="0 0 48 48"
style="enable-background:new 0 0 48 48;"
xml:space="preserve"
- sodipodi:docname="turnout-designer.svg"
+ sodipodi:docname="turnout-designer1.svg"
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
@@ -60,7 +60,7 @@
<g
id="ties"
inkscape:label="ties"
- transform="matrix(1.1169958,0,0,1.1169958,-1.7103261,3.8486509)"><line
+ transform="matrix(1.1169958,0,0,1.1169958,-1.7103261,6.554599)"><line
class="st0"
x1="5"
y1="22"
@@ -137,7 +137,7 @@
<g
id="rail"
inkscape:label="rail"
- transform="matrix(1.1169958,0,0,1.1169958,-1.7103261,3.8486509)"
+ transform="matrix(1.1169958,0,0,1.1169958,-1.7103261,6.554599)"
style="stroke-width:1.79052;stroke-miterlimit:4;stroke-dasharray:none"><line
class="st1"
x1="3"
@@ -170,10 +170,14 @@
-<polygon
- class="st2"
- points="24.8,29.5 24.9,39.5 21.5,39.5 21.5,29.5 17,29.5 18.5,25.5 28.5,25.5 28.5,29.5 "
- id="polygon985"
- transform="matrix(2.1634384,0,0,1.7702694,-25.884336,-36.87808)"
- style="stroke:#cccccc;stroke-width:1.12617;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
-</svg>
+
+<g
+ id="g6458"
+ transform="translate(-8.8106866,0.27373616)"><path
+ style="fill:#f1b76f;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 21.519231,26.538462 V 21.461538 L 38.798077,4.2403846 43.701923,9.2596154 26.798077,26.451923 Z"
+ id="path1780"
+ sodipodi:nodetypes="cccccc" /><path
+ style="fill:none;stroke:#666666;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 24.346154,18.461538 c 5.134615,5.134616 5.134615,5.134616 5.134615,5.134616"
+ id="path4988" /></g></svg>
diff --git a/app/bin/bitmaps/SVG/turnout.svg b/app/bin/bitmaps/svg/turnout.svg
index 35b8260..35b8260 100644
--- a/app/bin/bitmaps/SVG/turnout.svg
+++ b/app/bin/bitmaps/svg/turnout.svg
diff --git a/app/bin/bitmaps/SVG/turntable.svg b/app/bin/bitmaps/svg/turntable.svg
index 8dbb510..8dbb510 100644
--- a/app/bin/bitmaps/SVG/turntable.svg
+++ b/app/bin/bitmaps/svg/turntable.svg
diff --git a/app/bin/bitmaps/SVG/undo.svg b/app/bin/bitmaps/svg/undo.svg
index 290e251..290e251 100644
--- a/app/bin/bitmaps/SVG/undo.svg
+++ b/app/bin/bitmaps/svg/undo.svg
diff --git a/app/bin/bitmaps/SVG/zoom-choose.svg b/app/bin/bitmaps/svg/zoom-choose.svg
index 1f41ba8..a78a425 100644
--- a/app/bin/bitmaps/SVG/zoom-choose.svg
+++ b/app/bin/bitmaps/svg/zoom-choose.svg
@@ -1,13 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
@@ -16,55 +8,19 @@
style="enable-background:new 0 0 48 48;"
xml:space="preserve"
sodipodi:docname="zoom-choose.svg"
- inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
id="metadata1134"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs1132">
-
- <defs
- id="defs999">
- <filter
- id="Adobe_OpacityMaskFilter"
- filterUnits="userSpaceOnUse"
- x="24.3"
- y="25"
- width="17.5"
- height="19.2">
- <feFlood
- style="flood-color:white;flood-opacity:1"
- result="back"
- id="feFlood994" />
- <feBlend
- in="SourceGraphic"
- in2="back"
- mode="normal"
- id="feBlend996" />
- </filter>
- </defs>
- <mask
- maskUnits="userSpaceOnUse"
- x="24.3"
- y="25"
- width="17.5"
- height="19.2"
- id="SVGID_1_">
- <g
- class="st2"
- id="g1003">
-
- <image
- style="overflow:visible;"
- width="22"
- height="25"
- xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEASABIAAD/7AARRHVja3kAAQAEAAAAHgAA/+4AIUFkb2JlAGTAAAAAAQMA EAMCAwYAAAGKAAABqwAAAe7/2wCEABALCwsMCxAMDBAXDw0PFxsUEBAUGx8XFxcXFx8eFxoaGhoX Hh4jJSclIx4vLzMzLy9AQEBAQEBAQEBAQEBAQEABEQ8PERMRFRISFRQRFBEUGhQWFhQaJhoaHBoa JjAjHh4eHiMwKy4nJycuKzU1MDA1NUBAP0BAQEBAQEBAQEBAQP/CABEIABkAFgMBIgACEQEDEQH/ xAB3AAEAAwEBAAAAAAAAAAAAAAAAAwQFAgYBAQAAAAAAAAAAAAAAAAAAAAAQAAICAwEBAAAAAAAA AAAAAAMEAQIAIBEQFBEBAAEDAwQDAAAAAAAAAAAAAQIAITEQEVEgQTIDEiIEEgEAAAAAAAAAAAAA AAAAAAAg/9oADAMBAAIRAxEAAADw8HegZYE8Asqw/9oACAECAAEFANP/2gAIAQMAAQUA0//aAAgB AQABBQBZSWK2rNbYA1wEbCJsPJ7ijNlySwL6/f/aAAgBAgIGPwAf/9oACAEDAgY/AB//2gAIAQEB Bj8AkxlsmCmMjZLOhOLjJyUfo9F5nkFbd+NPlmL5FHuI/QunNuj/2Q=="
- transform="matrix(1 0 0 1 22 22)"
- id="image1001">
- </image>
- </g>
- </mask>
-
-</defs><sodipodi:namedview
+ id="defs1132" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
@@ -78,13 +34,16 @@
id="namedview1130"
showgrid="false"
inkscape:zoom="10.897825"
- inkscape:cx="24"
- inkscape:cy="24"
- inkscape:window-x="0"
- inkscape:window-y="0"
+ inkscape:cx="24.041495"
+ inkscape:cy="24.087375"
+ inkscape:window-x="95"
+ inkscape:window-y="27"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1"
- inkscape:document-rotation="0" />
+ inkscape:document-rotation="0"
+ inkscape:showpageshadow="2"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#d1d1d1" />
<style
type="text/css"
id="style986">
diff --git a/app/bin/bitmaps/SVG/zoom-extent.svg b/app/bin/bitmaps/svg/zoom-extent.svg
index 9ee2521..9ee2521 100644
--- a/app/bin/bitmaps/SVG/zoom-extent.svg
+++ b/app/bin/bitmaps/svg/zoom-extent.svg
diff --git a/app/bin/bitmaps/SVG/zoom-in.svg b/app/bin/bitmaps/svg/zoom-in.svg
index 8c9a883..8c9a883 100644
--- a/app/bin/bitmaps/SVG/zoom-in.svg
+++ b/app/bin/bitmaps/svg/zoom-in.svg
diff --git a/app/bin/bitmaps/SVG/zoom-out.svg b/app/bin/bitmaps/svg/zoom-out.svg
index a476985..a476985 100644
--- a/app/bin/bitmaps/SVG/zoom-out.svg
+++ b/app/bin/bitmaps/svg/zoom-out.svg
diff --git a/app/bin/bitmaps/switch-ai.xpm b/app/bin/bitmaps/switch-ai.xpm
deleted file mode 100644
index 34213ba..0000000
--- a/app/bin/bitmaps/switch-ai.xpm
+++ /dev/null
@@ -1,96 +0,0 @@
-static char *switch_ai_x16[] = {
- "16 16 4 1",
- " c None",
- "0 c #000000",
- "1 c #990000",
- "2 c #CC0000",
- " ",
- " 2 ",
- " 2 ",
- " 2222 ",
- " 2222 ",
- " 2222 ",
- " 2221 ",
- " 2 00 ",
- " 00 ",
- " 0 ",
- " 0 000 ",
- " 00000 ",
- " 00 00 ",
- " 00 000 ",
- " 00 000 ",
- " 00000000"};
-
-static char *switch_ai_x24[] = {
- "24 24 4 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #CC0000",
- " ",
- "222 ",
- " 222 ",
- " 222 ",
- " 222 ",
- " 22222 ",
- " 222222 ",
- " 222222 ",
- " 222222 ",
- " 222222 ",
- " 222210 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 ",
- " 000 000 ",
- " 00000000 ",
- " 000 00 ",
- " 000 00 ",
- " 00000 00 ",
- " 0 00000 ",
- " 0 0000 ",
- " 00000000000 ",
- " 00 00 "};
-
-static char *switch_ai_x32[] = {
- "32 32 5 1",
- " c None",
- "0 c #000000",
- "1 c #990000",
- "2 c #CC0000",
- "3 c #800000",
- " ",
- " 22 ",
- " 222 ",
- " 222 ",
- " 2222 ",
- " 2222 ",
- " 2222 ",
- " 2222222 ",
- " 2222222 ",
- " 22222222 ",
- " 22222222 ",
- " 22222222 ",
- " 22222221 ",
- " 2222230 ",
- " 2221000 ",
- " 0000 ",
- " 0000 ",
- " 0000 ",
- " 0000 ",
- " 0000 ",
- " 0000 0000 ",
- " 000 000000 ",
- " 0000000000 ",
- " 0000 00 ",
- " 0000 00 ",
- " 000000 00 ",
- " 000 0000 00 ",
- " 000 000000 ",
- " 00 00000 ",
- " 000000000000000 ",
- " 00000000000000000",
- " 000000000000000 "};
-
-static char **switch_ai_xpm[3] = { switch_ai_x16, switch_ai_x24, switch_ai_x32 };
-
diff --git a/app/bin/bitmaps/switchm.xpm b/app/bin/bitmaps/switchm.xpm
deleted file mode 100644
index 0230351..0000000
--- a/app/bin/bitmaps/switchm.xpm
+++ /dev/null
@@ -1,30 +0,0 @@
-/* XPM */
-static char * switchm_xpm[] = {
-"16 16 11 1",
-" c None",
-". c #EE2828",
-"+ c #EF2828",
-"@ c #EF2929",
-"# c #ED2828",
-"$ c #EE2929",
-"% c #EC2828",
-"& c #E92C2C",
-"* c #D5403F",
-"= c #2E3436",
-"- c #898A83",
-" ",
-" .+@ ",
-" ..@# ",
-" $@$ ",
-" .@@. ",
-" @@. ",
-" .@%. ",
-" &*. ",
-" = ",
-" === ",
-" == == ",
-" == == ",
-" == = ",
-" == == ",
-" === - === ",
-" == == "};
diff --git a/app/bin/bitmaps/table-edge.xpm b/app/bin/bitmaps/table-edge.xpm
deleted file mode 100644
index 1983460..0000000
--- a/app/bin/bitmaps/table-edge.xpm
+++ /dev/null
@@ -1,114 +0,0 @@
-static char *table_edge_x16[] = {
- "16 16 11 1",
- " c None",
- "0 c #000000",
- "1 c #003300",
- "2 c #006600",
- "3 c #333333",
- "4 c #336633",
- "5 c #339933",
- "6 c #33CC33",
- "7 c #666666",
- "8 c #999999",
- "9 c #808080",
- " ",
- " 5 ",
- " 666666666666630",
- " 666666666666430",
- " 666666666664770",
- " 666666666647970",
- " 666666666479970",
- " 666666664799970",
- "122222222399993 ",
- " 8888888979993 ",
- " 888888897993 ",
- " 88888889793 ",
- " 8888888973 ",
- " 888888870 ",
- " 000000000 ",
- " "};
-
-static char *table_edge_x24[] = {
- "24 24 10 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #336633",
- "3 c #339933",
- "4 c #33CC33",
- "5 c #666633",
- "6 c #666666",
- "7 c #999999",
- "8 c #808080",
- " ",
- " ",
- " 2 ",
- " 4444444444444444444430 ",
- " 4444444444444444444310 ",
- " 4444444444444444443180 ",
- " 4444444444444444431880 ",
- " 4444444444444444318880 ",
- " 4444444444444443188880 ",
- " 4444444444444431888880 ",
- " 4444444444444418888880 ",
- " 4444444444444188888881 ",
- " 333333333333188888881 ",
- " 77777777777718888881 ",
- " 7777777777771888881 ",
- " 777777777777188881 ",
- " 777777777777188810 ",
- " 77777777777718851 ",
- " 7777777777771861 ",
- " 777777777777161 ",
- " 77777777777701 ",
- " 0000000000000 ",
- " ",
- " "};
-
-static char *table_edge_x32[] = {
- "32 32 10 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #336633",
- "3 c #339933",
- "4 c #33CC33",
- "5 c #666633",
- "6 c #666666",
- "7 c #999999",
- "8 c #808080",
- " ",
- " ",
- " ",
- " 4444444444444444444444444443 ",
- " 444444444444444444444444444310 ",
- " 444444444444444444444444444110 ",
- " 444444444444444444444444441860 ",
- " 444444444444444444444444428860 ",
- " 444444444444444444444444268860 ",
- " 444444444444444444444442688860 ",
- " 444444444444444444444426888860 ",
- " 444444444444444444444268888860 ",
- " 444444444444444444443588888860 ",
- " 444444444444444444431888888860 ",
- " 444444444444444444318888888860 ",
- " 44444444444444444318888888881 ",
- " 2333333333333333318888888881 ",
- " 888888888888888668888888810 ",
- " 77777777777777766888888851 ",
- " 7777777777777776688888861 ",
- " 777777777777777668888861 ",
- " 77777777777777766888861 ",
- " 7777777777777776688861 ",
- " 777777777777777688881 ",
- " 77777777777777768881 ",
- " 7777777777777776881 ",
- " 777777777777777661 ",
- " 77777777777777711 ",
- " 000000000000000000 ",
- " ",
- " ",
- " "};
-
-static char **table_edge_xpm[3] = { table_edge_x16, table_edge_x24, table_edge_x32 };
-
diff --git a/app/bin/bitmaps/text.xpm b/app/bin/bitmaps/text.xpm
deleted file mode 100644
index 12bc092..0000000
--- a/app/bin/bitmaps/text.xpm
+++ /dev/null
@@ -1,89 +0,0 @@
-static char *text_x16[] = {
- "16 16 2 1",
- " c None",
- "0 c #000000",
- " ",
- " 0000 ",
- " 000000 ",
- " 000000 ",
- " 0000000 ",
- " 00000000 ",
- " 000 000 ",
- " 0000 0000 ",
- " 0000 0000 ",
- " 0000 00000 ",
- " 000000000000 ",
- " 000000000000 ",
- " 0000 0000 ",
- " 0000 0000 ",
- "0000 0000",
- "0000 0000"};
-
-static char *text_x24[] = {
- "24 24 2 1",
- " c None",
- "0 c #000000",
- " ",
- " 000000 ",
- " 000000 ",
- " 00000000 ",
- " 00000000 ",
- " 0000000000 ",
- " 0000000000 ",
- " 0000000000 ",
- " 00000 00000 ",
- " 00000 00000 ",
- " 000000 000000 ",
- " 00000 00000 ",
- " 00000 000000 ",
- " 00000 00000 ",
- " 0000000000000000 ",
- " 000000000000000000 ",
- " 000000000000000000 ",
- " 0000000000000000000 ",
- " 000000 000000 ",
- " 00000 00000 ",
- " 000000 000000 ",
- " 00000 00000 ",
- "000000 000000",
- " "};
-
-static char *text_x32[] = {
- "32 32 2 1",
- " c None",
- "0 c #000000",
- " ",
- " 00000000 ",
- " 00000000 ",
- " 000000000 ",
- " 0000000000 ",
- " 0000000000 ",
- " 000000000000 ",
- " 000000000000 ",
- " 00000000000000 ",
- " 00000000000000 ",
- " 000000 000000 ",
- " 0000000 0000000 ",
- " 000000 0000000 ",
- " 0000000 0000000 ",
- " 0000000 0000000 ",
- " 000000 0000000 ",
- " 0000000 0000000 ",
- " 0000000 0000000 ",
- " 0000000 0000000 ",
- " 0000000000000000000000 ",
- " 00000000000000000000000 ",
- " 000000000000000000000000 ",
- " 000000000000000000000000 ",
- " 00000000000000000000000000 ",
- " 0000000 0000000 ",
- " 0000000 00000000 ",
- " 0000000 0000000 ",
- " 0000000 0000000 ",
- " 0000000 0000000 ",
- " 0000000 0000000 ",
- "00000000 00000000",
- " "};
-
-static char **text_xpm[3] = { text_x16, text_x24, text_x32 };
-
diff --git a/app/bin/bitmaps/top.xpm b/app/bin/bitmaps/top.xpm
deleted file mode 100644
index 84d2152..0000000
--- a/app/bin/bitmaps/top.xpm
+++ /dev/null
@@ -1,111 +0,0 @@
-static char *top_x16[] = {
- "16 16 9 1",
- " c None",
- "0 c #000000",
- "1 c #660000",
- "2 c #990000",
- "3 c #993333",
- "4 c #996666",
- "5 c #CC0000",
- "6 c #FF0000",
- "7 c #808080",
- " ",
- " ",
- " 000000000 ",
- " 214777777770",
- " 22555377777770",
- " 256666637777770",
- " 566666663777770",
- "2566666662777770",
- "2566666662777770",
- "2566666662777770",
- " 266666654777770",
- " 26666537777770",
- " 2222477777770",
- " 0000000000",
- " ",
- " "};
-
-static char *top_x24[] = {
- "24 24 10 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #990000",
- "3 c #993333",
- "4 c #996666",
- "5 c #CC0000",
- "6 c #FF0000",
- "7 c #808080",
- "8 c #800000",
- " ",
- " ",
- " ",
- " ",
- " 000000000000000 ",
- " 222847777777777770 ",
- " 2556552377777777770 ",
- " 26666666537777777770 ",
- " 266666666663777777770 ",
- " 2666666666665477777770 ",
- " 2666666666666377777770 ",
- " 2666666666666277777770 ",
- "25666666666666277777770 ",
- " 2666666666666377777770 ",
- " 2666666666665377777770 ",
- " 2566666666662777777770 ",
- " 256666666654777777770 ",
- " 25666666247777777770 ",
- " 2225223777777777770 ",
- " 100000000000000 ",
- " ",
- " ",
- " ",
- " "};
-
-static char *top_x32[] = {
- "32 32 9 1",
- " c None",
- "0 c #000000",
- "1 c #660000",
- "2 c #990000",
- "3 c #993333",
- "4 c #996666",
- "5 c #CC0000",
- "6 c #FF0000",
- "7 c #808080",
- " ",
- " ",
- " ",
- " ",
- " ",
- " 00000000000000000000 ",
- " 07777777777777777770 ",
- " 222223477777777777777770 ",
- " 2556666537777777777777770 ",
- " 226666666662477777777777770 ",
- " 2566666666666547777777777770 ",
- " 25666666666666654777777777770 ",
- " 26666666666666663777777777770 ",
- " 256666666666666665477777777770 ",
- " 266666666666666666377777777770 ",
- " 266666666666666666377777777770 ",
- " 266666666666666666377777777770 ",
- " 266666666666666666377777777770 ",
- " 256666666666666665377777777770 ",
- " 256666666666666665477777777770 ",
- " 26666666666666663777777777770 ",
- " 2666666666666637777777777770 ",
- " 2566666666666347777777777770 ",
- " 225666666653777777777777770 ",
- " 2225552247777777777777770 ",
- " 2217777777777777777770 ",
- " 00000000000000000000 ",
- " ",
- " ",
- " ",
- " ",
- " "};
-
-static char **top_xpm[3] = { top_x16, top_x24, top_x32 };
-
diff --git a/app/bin/bitmaps/train.xpm b/app/bin/bitmaps/train.xpm
deleted file mode 100644
index bc9a846..0000000
--- a/app/bin/bitmaps/train.xpm
+++ /dev/null
@@ -1,118 +0,0 @@
-static char *train_x16[] = {
- "16 16 12 1",
- " c None",
- "0 c #000000",
- "1 c #003300",
- "2 c #003333",
- "3 c #006633",
- "4 c #006666",
- "5 c #009966",
- "6 c #669933",
- "7 c #999933",
- "8 c #99CC33",
- "9 c #CCCC33",
- "A c #808080",
- " ",
- " AAAAAAAAA ",
- " AAAAAAAAAAA ",
- " AAAAAAAAAAAA ",
- " AAAAAAAAAAAA ",
- " AAAAA A ",
- " 0 A ",
- " 0000 0 ",
- " 0 0 0 ",
- " 3761111111111 ",
- " 3985555555555 ",
- " 3984444444444 ",
- " 3971221221221 ",
- " 000000000 00 ",
- " 0000000000000 0",
- " 0 0 0 "};
-
-static char *train_x24[] = {
- "24 24 11 1",
- " c None",
- "0 c #000000",
- "1 c #003300",
- "2 c #003333",
- "3 c #006633",
- "4 c #009966",
- "5 c #669933",
- "6 c #999933",
- "7 c #99CC33",
- "8 c #FFFF33",
- "9 c #808080",
- " ",
- " 9999999999 ",
- " 999999999999999 ",
- " 99999999999999999 ",
- " 999999999999999999 ",
- " 999999999999999999 ",
- " 99999999999999999 ",
- " 99999999999 99 ",
- " 99 99 ",
- " 99 ",
- " 0000000 00 ",
- " 0 00 ",
- " 0 00 00 ",
- " 0 00 00 ",
- " 33573322222222222222 ",
- " 33683344444444444444 ",
- " 33683344444444444444 ",
- " 33683333333333333333 ",
- " 33683322222222222222 ",
- " 333521000000000000000 ",
- " 00000000 0000 00 ",
- " 00 00000000 0000 00 00",
- " 00 000 000 000 00 ",
- " "};
-
-static char *train_x32[] = {
- "32 32 12 1",
- " c None",
- "0 c #000000",
- "1 c #003300",
- "2 c #003333",
- "3 c #006633",
- "4 c #009966",
- "5 c #336633",
- "6 c #669933",
- "7 c #999933",
- "8 c #CCCC33",
- "9 c #FFFF33",
- "A c #808080",
- " ",
- " ",
- " AAAAAAAAAAAAAAAA ",
- " AAAAAAAAAAAAAAAAAAAA ",
- " AAAAAAAAAAAAAAAAAAAAAAA ",
- " AAAAAAAAAAAAAAAAAAAAAAAA ",
- " AAAAAAAAAAAAAAAAAAAAAAAA ",
- " AAAAAAAAAAAAAAAAAAAAAAAAA ",
- " AAAAAAAAAAAAAAAAAAAAAAAA ",
- " AAAAAAAAAAAAAAAAA AAA ",
- " AAAAAAAAAAA AA ",
- " AA ",
- " AA ",
- " 0000 ",
- " 00000000 0000 ",
- " 00 0000 ",
- " 00 000 0000 ",
- " 00 000 0000 ",
- " 33333330000000000000000000 ",
- " 33587332222222222222222222 ",
- " 33698333333333333333333333 ",
- " 33698334444444444444444444 ",
- " 33698334444444444444444444 ",
- " 33698333333333333333333333 ",
- " 33698332222222222222222222 ",
- " 33333320011000011000011100 ",
- " 0000 0000 0000 00 ",
- " 0 000000000000000000 0 00 ",
- " 000 000000000000000000 000 00 ",
- " 000 00000 0000 0000 000 ",
- " 000 00 00 0 ",
- " "};
-
-static char **train_xpm[3] = { train_x16, train_x24, train_x32 };
-
diff --git a/app/bin/bitmaps/trim.xpm b/app/bin/bitmaps/trim.xpm
deleted file mode 100644
index ac679d6..0000000
--- a/app/bin/bitmaps/trim.xpm
+++ /dev/null
@@ -1,99 +0,0 @@
-static char *trim_x16[] = {
- "16 16 6 1",
- " c None",
- "0 c #000000",
- "1 c #666666",
- "2 c #CC0000",
- "3 c #808080",
- "4 c #800000",
- " ",
- " 3 ",
- " 22 3 ",
- " 22 3 ",
- " 22 2 3 ",
- " 222 3 ",
- " 22 3 ",
- " 222221 ",
- " 42222 ",
- " 0 2222 ",
- " 0 222 ",
- " 00 2 2 ",
- " 00 2 ",
- " 00 2 ",
- " 00 2 ",
- " "};
-
-static char *trim_x24[] = {
- "24 24 5 1",
- " c None",
- "0 c #000000",
- "1 c #990000",
- "2 c #CC0000",
- "3 c #808080",
- " ",
- " ",
- " 3 ",
- " 2 3 ",
- " 2 3 ",
- " 2 2 3 ",
- " 22 22 3 ",
- " 22 22 3 ",
- " 2222 3 ",
- " 222 3 ",
- " 222222 3 ",
- " 2222222 ",
- " 122 222 ",
- " 0 2222222 ",
- " 0 2222 ",
- " 0 22 2 ",
- " 0 22 2 ",
- " 00 22 2 ",
- " 00 22 2 ",
- " 00 22 ",
- " 00 22 ",
- " 00 2 ",
- " 0 ",
- " "};
-
-static char *trim_x32[] = {
- "32 32 5 1",
- " c None",
- "0 c #000000",
- "1 c #CC0000",
- "2 c #808080",
- "3 c #800000",
- " ",
- " ",
- " 2 ",
- " 222 ",
- " 11 222 ",
- " 111 222 ",
- " 111 222 ",
- " 111 1 222 ",
- " 111 111 222 ",
- " 111 111 222 ",
- " 111 111 222 ",
- " 111111 222 ",
- " 11111 222 ",
- " 11111111 222 ",
- " 1111111111 2 ",
- " 111 1111 ",
- " 3111 ",
- " 003111111111 ",
- " 000 11111111 ",
- " 000 11111 ",
- " 000 111111 ",
- " 000 111 111 ",
- " 000 111 111 ",
- " 000 111 111 ",
- " 000 11 111 ",
- " 0000 111 ",
- " 0000 111 ",
- " 0000 1111 ",
- " 000 11 ",
- " 00 ",
- " ",
- " "};
-
-static char **trim_xpm[3] = { trim_x16, trim_x24, trim_x32 };
-
diff --git a/app/bin/bitmaps/tunnel.xpm b/app/bin/bitmaps/tunnel.xpm
deleted file mode 100644
index 9b70b28..0000000
--- a/app/bin/bitmaps/tunnel.xpm
+++ /dev/null
@@ -1,118 +0,0 @@
-static char *tunnel_x16[] = {
- "16 16 11 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333333",
- "3 c #663300",
- "4 c #666666",
- "5 c #993300",
- "6 c #996600",
- "7 c #999999",
- "8 c #CC6600",
- "9 c #808080",
- " ",
- " ",
- " ",
- " ",
- " 00 ",
- " 8 8 007 7 7 7 ",
- "0303102999949499",
- " 6 63027797 7 79",
- " 8 8 0077 7 7 7 ",
- "0000002444444444",
- " 8 8 0077 7 7 7 ",
- " 00 ",
- " 0 ",
- " ",
- " ",
- " "};
-
-static char *tunnel_x24[] = {
- "24 24 11 1",
- " c None",
- "0 c #000000",
- "1 c #333300",
- "2 c #333333",
- "3 c #663300",
- "4 c #666666",
- "5 c #993300",
- "6 c #996600",
- "7 c #999999",
- "8 c #CC6600",
- "9 c #808080",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " 00 ",
- " 00 ",
- " 8 8 00 7 7 7 77 ",
- " 35006000449949944994994",
- " 35006000449949944994994",
- " 88 8 0 77 7 7 77 ",
- " 88 8 0 77 7 7 77 ",
- " 66 6 02 79 97 79 77 ",
- "013003000449949944994994",
- " 88 8 0 77 7 7 77 ",
- " 00 ",
- " 00 ",
- " 0 ",
- " ",
- " ",
- " ",
- " ",
- " "};
-
-static char *tunnel_x32[] = {
- "32 32 13 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #333333",
- "4 c #663300",
- "5 c #663333",
- "6 c #666666",
- "7 c #993300",
- "8 c #996600",
- "9 c #999999",
- "A c #CC6600",
- "B c #808080",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " 00 ",
- " 000 ",
- " 00 ",
- " AA AA 00 99 99 99 99 ",
- " 488 884 003 99 99B 99 99B ",
- " 14400441000566BB66BBB66BB66BBB6",
- " AA AA 00 99 99 99 99 ",
- " AA AA 00 99 99 99 99 ",
- " AA AA 00 99 99 99 99 ",
- " AA AA 00 99 99 99 99 ",
- " 28700782000366BB66BBB66BB66BBB ",
- " 28700782000366BB66BBB66BB66BBB ",
- " AA AA 00 99 99 99 99 ",
- " 000 ",
- " 000 ",
- " 0000 ",
- " 0 ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " "};
-
-static char **tunnel_xpm[3] = { tunnel_x16, tunnel_x24, tunnel_x32 };
-
diff --git a/app/bin/bitmaps/turnout-designer.xpm b/app/bin/bitmaps/turnout-designer.xpm
deleted file mode 100644
index 00db9be..0000000
--- a/app/bin/bitmaps/turnout-designer.xpm
+++ /dev/null
@@ -1,129 +0,0 @@
-static char *turnout_designer_x16[] = {
- "16 16 15 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #333333",
- "4 c #663300",
- "5 c #666666",
- "6 c #996600",
- "7 c #999999",
- "8 c #CC6600",
- "9 c #CC9900",
- "A c #CC9966",
- "B c #CCCCCC",
- "C c #C0C0C0",
- "D c #808080",
- " ",
- " ",
- " BBBBBBB ",
- " B777777CB ",
- " BC5500557B ",
- " BBBBD3BBBB ",
- " BD3B99640 ",
- " BD3B64169 ",
- " CD3B669 60",
- " 9 9667D3B9 6168",
- "10000077DB000000",
- " 9 999ACC76 9 9 ",
- "4424101244414240",
- " 86646866684868 ",
- " ",
- " "};
-
-static char *turnout_designer_x24[] = {
- "24 24 17 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #333333",
- "4 c #663300",
- "5 c #666666",
- "6 c #996600",
- "7 c #999966",
- "8 c #999999",
- "9 c #CC6600",
- "A c #CC9900",
- "B c #CC9999",
- "C c #CCCC99",
- "D c #CCCCCC",
- "E c #C0C0C0",
- "F c #808080",
- " ",
- " ",
- " ",
- " ",
- " DDEEEEEEEEEDD ",
- " D50000000008D ",
- " DE00000000008D ",
- " DDEEE8005EEEDD ",
- " DD008D ",
- " D008D A40 ",
- " D008DAAA016 ",
- " D008D9424 AA ",
- " D008846AA A0 ",
- " A D008EAA AA024 ",
- " AA A 925D008DAA 4409A ",
- "0000000003D0088000000000",
- " AA A A DEED826 AA A ",
- " AA A A 7FF7 AA AA A ",
- " 66 96040040 9 66 66 96 ",
- "044041041140040440440420",
- " AA A A A A AA AA A ",
- " ",
- " ",
- " "};
-
-static char *turnout_designer_x32[] = {
- "32 32 14 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #333333",
- "4 c #663300",
- "5 c #666666",
- "6 c #993300",
- "7 c #996600",
- "8 c #999999",
- "9 c #CC6600",
- "A c #CC9900",
- "B c #CCCCCC",
- "C c #C0C0C0",
- " ",
- " ",
- " ",
- " ",
- " ",
- " BBBBBBBBBBBBBBBBB ",
- " BB5555555555555BB ",
- " B80000000000000BB ",
- " BB30000000000000BB ",
- " BC55555500355555BB ",
- " BBBBBBBB8003BBBBBBB ",
- " B8003BB ",
- " B8003BB A00 ",
- " B8003BB AA 044 ",
- " B8003BB A97007A ",
- " B8003BB76077 AA ",
- " B8003B827 AA A ",
- " B8003BC A A 920 ",
- " AA B8003BB A AA 019 ",
- " A A 9700B8003BB A 0410AA ",
- " 041014000200B8003B824000440440 ",
- " 94 490079 BC888B8210079 77 ",
- " A A AA BBBBCC87A A AA ",
- " A A AA 74007A A A AA ",
- " A A 770047 AA A A AA ",
- " 000000000000000000000000000000 ",
- " A A AA AA AA A A AA ",
- " A A A A A A A A ",
- " ",
- " ",
- " ",
- " "};
-
-static char **turnout_designer_xpm[3] = { turnout_designer_x16, turnout_designer_x24, turnout_designer_x32 };
-
diff --git a/app/bin/bitmaps/turnout.xpm b/app/bin/bitmaps/turnout.xpm
deleted file mode 100644
index dc60fdb..0000000
--- a/app/bin/bitmaps/turnout.xpm
+++ /dev/null
@@ -1,107 +0,0 @@
-static char *turnout_x16[] = {
- "16 16 8 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #996600",
- "5 c #CC6600",
- "6 c #CC9900",
- " ",
- " ",
- " ",
- " ",
- " 64 ",
- " 6414 ",
- " 53236650",
- " 541346 5234",
- "2323002232301231",
- " 54545543133535 ",
- " 54533124453535 ",
- "2323123232313130",
- " ",
- " ",
- " ",
- " "};
-
-static char *turnout_x24[] = {
- "24 24 8 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #996600",
- "5 c #CC6600",
- "6 c #CC9900",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " 6 ",
- " 6 32 ",
- " 643036 ",
- " 6602346 66 ",
- " 6 32056 6 40 ",
- " 6 33046 66 64035 ",
- " 3404302014034043003243 ",
- " 3404304224034030043043 ",
- " 66 66 6 6 32046 66 6 ",
- " 66 66 6322035 66 66 6 ",
- "02303200003023032032032 ",
- " 45 5405335 45 54 54 54 ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " "};
-
-static char *turnout_x32[] = {
- "32 32 8 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #663300",
- "4 c #996600",
- "5 c #CC6600",
- "6 c #CC9900",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " 6 ",
- " 50 ",
- " 6660035 ",
- " 66121 6 ",
- " 6 32056 66 ",
- " 6 50046 6 6 0 ",
- " 64004 66 66 32 ",
- " 6 6 66 0310 6 66 62046 ",
- " 54 500320044 5 45 0113054 ",
- " 032003001300320030022002320320 ",
- " 6 6 66 6 63014 66 66 ",
- " 6 6 66 6 021066 66 66 ",
- " 6 6 66 41006 66 66 66 ",
- " 54 500330044 53 45 45 54 ",
- " 032003001300320031023002300320 ",
- " 6 6 66 6 6 66 66 66 ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " "};
-
-static char **turnout_xpm[3] = { turnout_x16, turnout_x24, turnout_x32 };
-
diff --git a/app/bin/bitmaps/turntable.xpm b/app/bin/bitmaps/turntable.xpm
deleted file mode 100644
index c6e6375..0000000
--- a/app/bin/bitmaps/turntable.xpm
+++ /dev/null
@@ -1,133 +0,0 @@
-static char *turntable_x16[] = {
- "16 16 17 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #333333",
- "4 c #663300",
- "5 c #663333",
- "6 c #666633",
- "7 c #666666",
- "8 c #996600",
- "9 c #999999",
- "A c #CC6600",
- "B c #CC9900",
- "C c #CCCCCC",
- "D c #FFFFFF",
- "E c #C0C0C0",
- "F c #808080",
- " 1B ",
- " 0 82B 000 ",
- " 84 85033303 ",
- " B446FF397793 ",
- " B39DF3977DC3 ",
- " 7DDF3977DDF3",
- "88A5EDDF3977DDC3",
- "4443CDDF3977DDD0",
- "BBB3CDDF3977DDD3",
- "1000EDDF3977DDC3",
- "BBB49DDF3977DDE3",
- " B3CDF3977DD3 ",
- " B483CF3977CF3 ",
- " 84 837373330 ",
- " 0B82B03330 ",
- " 04B "};
-
-static char *turntable_x24[] = {
- "24 24 17 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #333333",
- "4 c #663300",
- "5 c #666600",
- "6 c #666633",
- "7 c #666666",
- "8 c #996600",
- "9 c #999999",
- "A c #CC6600",
- "B c #CC9900",
- "C c #CCCCCC",
- "D c #FFFFFF",
- "E c #C0C0C0",
- "F c #808080",
- " 0 B ",
- " 48 ",
- " 0 B20B 000 ",
- " 2A 48300000030 ",
- " B1 B8397799939F3 ",
- " 467CD779993EDE3 ",
- " B83CDD779993EDDC3 ",
- " 3CDDD779993EDDD93 ",
- " 0FDDDD779993EDDDD3 ",
- " B B3EDDDD779993EDDDD90",
- "040243CDDDD779993EDDDDC3",
- " A 8A0DDDDD779993EDDDDC3",
- " B BB3DDDDD779993EDDDDC3",
- " A 8A3CDDDD779993EDDDDE3",
- "040243CDDDD779993EDDDD90",
- " B B39DDDD779993EDDDD7 ",
- " 3CDDD779993EDDDC3 ",
- " B2FDDD779993EDDD3 ",
- " 443EDD779993EDDF3 ",
- " B40 B37C779993EC73 ",
- " 24 B41333777073 ",
- " 0 B 08B 0300330 ",
- " 48 ",
- " 04B "};
-
-static char *turntable_x32[] = {
- "32 32 16 1",
- " c None",
- "0 c #000000",
- "1 c #330000",
- "2 c #333300",
- "3 c #333333",
- "4 c #663300",
- "5 c #663333",
- "6 c #666666",
- "7 c #996600",
- "8 c #999999",
- "9 c #CC6600",
- "A c #CC9900",
- "B c #CCCCCC",
- "C c #FFFFFF",
- "D c #C0C0C0",
- "E c #808080",
- " 0 ",
- " 04A ",
- " 72 ",
- " 0 AA 00AA 0000 ",
- " 04A 47 3000000033 ",
- " A71 A903D668888E3D33 ",
- " A 02AA38BC668888E3CC83 ",
- " 443BCCC668888E3CCCB6 ",
- " A 08CCCC668888E3CCCCB3 ",
- " 3ECCCCC668888E3CCCCCD3 ",
- " 3BCCCCC668888E3CCCCCC6 ",
- " 08CCCCCC668888E3CCCCCCD3 ",
- " AA A 3BCCCCCC668888E3CCCCCCB3 ",
- " 77 903CCCCCCC668888E3CCCCCCC6 ",
- "04400403CCCCCCC668888E3CCCCCCC80",
- " AA A0ECCCCCCC668888E3CCCCCCC83",
- " AA A0ECCCCCCC668888E3CCCCCCCD3",
- " AA A 6CCCCCCC668888E3CCCCCCC80",
- "04400403CCCCCCC668888E3CCCCCCC80",
- " 77 9 3BCCCCCC668888E3CCCCCCC6 ",
- " AA A 3DCCCCCC668888E3CCCCCCB3 ",
- " 6CCCCCC668888E3CCCCCC83 ",
- " 3BCCCCC668888E3CCCCCB3 ",
- " A13BCCCC668888E3CCCCC6 ",
- " 743ECCCC668888E3CCCC83 ",
- " A 09A5EBCC668888E3CCC86 ",
- " 91 AA33DC668888E3CB63 ",
- " 2A 74 363366666363 ",
- " 0 A 09A 03000033 ",
- " 90 ",
- " 29 ",
- " 0 AA "};
-
-static char **turntable_xpm[3] = { turntable_x16, turntable_x24, turntable_x32 };
-
diff --git a/app/bin/bitmaps/undo.xpm b/app/bin/bitmaps/undo.xpm
deleted file mode 100644
index 2450967..0000000
--- a/app/bin/bitmaps/undo.xpm
+++ /dev/null
@@ -1,103 +0,0 @@
-static char *undo_x16[] = {
- "16 16 6 1",
- " c None",
- "0 c #000000",
- "1 c #996600",
- "2 c #CC6600",
- "3 c #CC9900",
- "4 c #FFCC00",
- " ",
- " 1 ",
- " 11 ",
- " 13411 ",
- " 134443311 ",
- " 1344444432 ",
- " 1342114431 ",
- " 11 1443 ",
- " 1 1441 ",
- " 141 ",
- " 1331 ",
- " 131 ",
- " 131 ",
- " 131 ",
- " 11 ",
- " "};
-
-static char *undo_x24[] = {
- "24 24 7 1",
- " c None",
- "0 c #000000",
- "1 c #996600",
- "2 c #CC6600",
- "3 c #CC9900",
- "4 c #FF9900",
- "5 c #FFCC00",
- " ",
- " ",
- " 1 ",
- " 11 ",
- " 12531 ",
- " 1355311 ",
- " 135555533311 ",
- " 15555555555411 ",
- " 13555555555531 ",
- " 13553113555531 ",
- " 2531 135552 ",
- " 111 135551 ",
- " 1 3553 ",
- " 13551 ",
- " 1551 ",
- " 1353 ",
- " 1531 ",
- " 1551 ",
- " 1351 ",
- " 151 ",
- " 151 ",
- " 131 ",
- " 11 ",
- " "};
-
-static char *undo_x32[] = {
- "32 32 7 1",
- " c None",
- "0 c #000000",
- "1 c #996600",
- "2 c #CC6600",
- "3 c #CC9900",
- "4 c #FF9900",
- "5 c #FFCC00",
- " ",
- " ",
- " ",
- " 1 ",
- " 121 ",
- " 12531 ",
- " 135531 ",
- " 13555551111 ",
- " 135555555433211 ",
- " 15555555555555531 ",
- " 1355555555555555531 ",
- " 255555555555555531 ",
- " 135555112355555531 ",
- " 125551 113555552 ",
- " 1351 12555551 ",
- " 121 2555531 ",
- " 11 255551 ",
- " 35552 ",
- " 135531 ",
- " 15551 ",
- " 13551 ",
- " 15531 ",
- " 14531 ",
- " 3551 ",
- " 1551 ",
- " 1551 ",
- " 1351 ",
- " 1351 ",
- " 151 ",
- " 111 ",
- " ",
- " "};
-
-static char **undo_xpm[3] = { undo_x16, undo_x24, undo_x32 };
-
diff --git a/app/bin/bitmaps/zoom-choose.xpm b/app/bin/bitmaps/zoom-choose.xpm
deleted file mode 100644
index 4066455..0000000
--- a/app/bin/bitmaps/zoom-choose.xpm
+++ /dev/null
@@ -1,127 +0,0 @@
-static char *zoom_choose_x16[] = {
- "16 16 13 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #333366",
- "3 c #336666",
- "4 c #666666",
- "5 c #669999",
- "6 c #6699CC",
- "7 c #9999CC",
- "8 c #99CCCC",
- "9 c #99CCFF",
- "A c #99FFFF",
- "B c #CCFFFF",
- " ",
- " 13421 ",
- " 249BBB93 ",
- " 3BBBBBB92 ",
- " 18500000650 ",
- " 19934443981 ",
- " 19B73438B81 ",
- " 18BB415BB50 ",
- " 3BBA5BBA3 ",
- " 15ABBB931 ",
- " 014431141 ",
- " 0140 ",
- " 0140 ",
- " 0110 ",
- " 010 ",
- " "};
-
-static char *zoom_choose_x24[] = {
- "24 24 15 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #666666",
- "6 c #666699",
- "7 c #669999",
- "8 c #6699CC",
- "9 c #9999CC",
- "A c #99CCCC",
- "B c #99CCFF",
- "C c #99FFFF",
- "D c #CCFFFF",
- " ",
- " 02220 ",
- " 227ABA832 ",
- " 37DDDDDDC93 ",
- " 29DDDDDDDDDA3 ",
- " 4DDDDDDDDDDD72 ",
- " 2AD755555556CB2 ",
- " 2CD725555525DD2 ",
- " 0DDD4555554BDD4 ",
- " 2DDDB45554ADDD4 ",
- " 2BDDDA4557DDDD1 ",
- " 2ADDDD754CDDDB2 ",
- " 4DDDDC4BDDDD72 ",
- " 27DDDDDDDDDA2 ",
- " 37CDDDDDD7350 ",
- " 0279AA6222520 ",
- " 00220 05520 ",
- " 05520 ",
- " 2552 ",
- " 2552 ",
- " 02550 ",
- " 0220 ",
- " 0 ",
- " "};
-
-static char *zoom_choose_x32[] = {
- "32 32 16 1",
- " c None",
- "0 c #000000",
- "1 c #000033",
- "2 c #003333",
- "3 c #333333",
- "4 c #333366",
- "5 c #336666",
- "6 c #666666",
- "7 c #666699",
- "8 c #669999",
- "9 c #6699CC",
- "A c #9999CC",
- "B c #99CCCC",
- "C c #99CCFF",
- "D c #99FFFF",
- "E c #CCFFFF",
- " ",
- " ",
- " 31560130 ",
- " 36BEEEEEC83 ",
- " 3AEEEEEEEEEC64 ",
- " 4CEEEEEEEEEEEE83 ",
- " 4BEEEEEEEEEEEEED5 ",
- " 5EEEEEEEEEEEEEEEC3 ",
- " 3CEDAAAAAAAAAAABEE5 ",
- " 2EED333333333339EEB3 ",
- " 4EEEC4666666666EEEB3 ",
- " 6EEEE956666665CEEEC3 ",
- " 08EEEEE6666665BEEEEC3 ",
- " 5EEEEEC566668EEEEEB3 ",
- " 3EEEEEEB5665EEEEEE80 ",
- " 3BEEEEEE865CEEEEEE5 ",
- " 5EEEEEEE5AEEEEEEB3 ",
- " 38EEEEEEDEEEEEED3 ",
- " 4BEEEEEEEEEEED530 ",
- " 38DEEEEEEEEB36630 ",
- " 33BCCEECB7336663 ",
- " 33300330 036660 ",
- " 036660 ",
- " 036663 ",
- " 066630 ",
- " 066630 ",
- " 366630 ",
- " 36660 ",
- " 03630 ",
- " 000 ",
- " ",
- " "};
-
-static char **zoom_choose_xpm[3] = { zoom_choose_x16, zoom_choose_x24, zoom_choose_x32 };
-
diff --git a/app/bin/bitmaps/zoom-extent.xpm b/app/bin/bitmaps/zoom-extent.xpm
deleted file mode 100644
index 17688da..0000000
--- a/app/bin/bitmaps/zoom-extent.xpm
+++ /dev/null
@@ -1,125 +0,0 @@
-static char *zoom_extent_x16[] = {
- "16 16 15 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #666666",
- "6 c #669999",
- "7 c #990000",
- "8 c #9999CC",
- "9 c #99CCCC",
- "A c #99CCFF",
- "B c #CC0000",
- "C c #CCFFFF",
- "D c #800000",
- " B BBB ",
- "BBBBB BBBBB",
- "BBB BBB",
- "BB B B BB",
- " B B B BB",
- " D2523 ",
- " 2ACC60 ",
- " 06CCC92 ",
- " 4CCC81 ",
- " 36A93 ",
- " 2220 ",
- " B 00 B ",
- "BB BB 000 B BB",
- "BBBB 00 BBB",
- "BBB BBB",
- "BBBBB BBBBB"};
-
-static char *zoom_extent_x24[] = {
- "24 24 12 1",
- " c None",
- "0 c #000000",
- "1 c #333333",
- "2 c #336666",
- "3 c #666666",
- "4 c #666699",
- "5 c #669999",
- "6 c #99CCCC",
- "7 c #99CCFF",
- "8 c #99FFFF",
- "9 c #CC0000",
- "A c #CCFFFF",
- " ",
- " 999999 999999 ",
- " 999 99 ",
- " 999 9 9 ",
- " 9 9 9 9 ",
- " 9 9 9 9 ",
- " 9 9 9 9 ",
- " 9 111 9 ",
- " 1267621 ",
- " 28AAA82 ",
- " 16AAAAA61 ",
- " 17AAAAA71 ",
- " 16AAAAA61 ",
- " 3AAAAA50 ",
- " 147A752 ",
- " 01010 ",
- " 010 ",
- " 9 99 010 9 9 ",
- " 9 99 01 9 9 ",
- " 9 99 010 9 9 ",
- " 9 99 000 9 9 ",
- " 999 99 ",
- " 999999 999999 ",
- " "};
-
-static char *zoom_extent_x32[] = {
- "32 32 15 1",
- " c None",
- "0 c #000000",
- "1 c #000033",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #666666",
- "6 c #666699",
- "7 c #669999",
- "8 c #6699CC",
- "9 c #99CCCC",
- "A c #99CCFF",
- "B c #99FFFF",
- "C c #CC0000",
- "D c #CCFFFF",
- " ",
- " CCCCCCCC CCCCCCCC ",
- " CCCCCCCC CCCCCCCC ",
- " CCCCC CCCC ",
- " CCCCC CCCCC ",
- " CCCCCC CCC CC ",
- " CC CCC CCC CC ",
- " CC CCC CCC CC ",
- " CC CCC CCC CC ",
- " CC CC ",
- " 20012 ",
- " 369DDD94 ",
- " 06DDDDDDA4 ",
- " 2ADDDDDDD82 ",
- " 4DDDDDDDDA2 ",
- " 5DDDDDDDDA2 ",
- " 3DDDDDDDDA2 ",
- " 2ADDDDDDD72 ",
- " 4BDDDDDA3 ",
- " 49DDA84 ",
- " 210210 ",
- " 050 ",
- " CC 0220 CC ",
- " CC CCC 050 CCC CC ",
- " CC CCC 050 CCC CC ",
- " CC CCC 0220 CCC CC ",
- " CC CCC 020 CCC CC ",
- " CCCCC 00 CCCCC ",
- " CCCC CCCC ",
- " CCCCCCCC CCCCCCCC ",
- " CCCCCCCC CCCCCCCC ",
- " "};
-
-static char **zoom_extent_xpm[3] = { zoom_extent_x16, zoom_extent_x24, zoom_extent_x32 };
-
diff --git a/app/bin/bitmaps/zoom-in.xpm b/app/bin/bitmaps/zoom-in.xpm
deleted file mode 100644
index 8f66a29..0000000
--- a/app/bin/bitmaps/zoom-in.xpm
+++ /dev/null
@@ -1,128 +0,0 @@
-static char *zoom_in_x16[] = {
- "16 16 15 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #666666",
- "6 c #666699",
- "7 c #669999",
- "8 c #6699CC",
- "9 c #9999CC",
- "A c #99CCCC",
- "B c #99CCFF",
- "C c #99FFFF",
- "D c #CCFFFF",
- " 00 ",
- " 227752 ",
- " 37DB9CB5 ",
- " 5DDA0BDC3 ",
- " 2ADDA0BDD70 ",
- " 2B6000007A2 ",
- " 2BA97089AA1 ",
- " 2ADDA0BDD70 ",
- " 4CDA0BDB2 ",
- " 4ADDCA22 ",
- " 20022252 ",
- " 0250 ",
- " 0250 ",
- " 0520 ",
- " 022 ",
- " 0 "};
-
-static char *zoom_in_x24[] = {
- "24 24 14 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #666666",
- "6 c #666699",
- "7 c #669999",
- "8 c #9999CC",
- "9 c #99CCCC",
- "A c #99CCFF",
- "B c #99FFFF",
- "C c #CCFFFF",
- " ",
- " 0220220 ",
- " 379BCA962 ",
- " 39CCAAACC93 ",
- " 2ACCC706CCC93 ",
- " 27CCCC706CCCC70 ",
- " 2ACCCC706CCCC92 ",
- " 0CA888504888AB1 ",
- " 3CA0000000009C3 ",
- " 2CA6664026669C1 ",
- " 2ACCCC706CCCCA2 ",
- " 29CCCC706CCCC93 ",
- " 3ACCC706CCCB4 ",
- " 5CCCAAACCB52 ",
- " 329CCCCB93250 ",
- " 225541205520 ",
- " 05520 ",
- " 2552 ",
- " 2552 ",
- " 02550 ",
- " 02550 ",
- " 0520 ",
- " 00 ",
- " "};
-
-static char *zoom_in_x32[] = {
- "32 32 16 1",
- " c None",
- "0 c #000000",
- "1 c #000033",
- "2 c #003333",
- "3 c #333333",
- "4 c #333366",
- "5 c #336666",
- "6 c #666666",
- "7 c #666699",
- "8 c #669999",
- "9 c #6699CC",
- "A c #9999CC",
- "B c #99CCCC",
- "C c #99CCFF",
- "D c #99FFFF",
- "E c #CCFFFF",
- " ",
- " 0000 ",
- " 338AA9653 ",
- " 4BEEEEEEEB53 ",
- " 35CEEEEEEEEEEB4 ",
- " 07EEEEE700CEEEE83 ",
- " 3CEEEEE700CEEEEE7 ",
- " 38EEEEEE700CEEEEEC3 ",
- " 1EEEEEEE700CEEEEEE5 ",
- " 4EEEEEEE700CEEEEEE90 ",
- " 6EE8000000000000CEB3 ",
- " 08EE8000000000000CEB3 ",
- " 08EE8000000000000CEB3 ",
- " 5EEEEEEE700CEEEEEEA2 ",
- " 3DEEEEEE700CEEEEEE6 ",
- " 3BEEEEEE700CEEEEEC4 ",
- " 4CEEEEE700CEEEEE5 ",
- " 6EEEEE977CEEEEB3 ",
- " 38DEEEEEEEEEE8330 ",
- " 33BEEEEEEEC63663 ",
- " 3469AA853036663 ",
- " 0000 036660 ",
- " 036660 ",
- " 066630 ",
- " 066630 ",
- " 36663 ",
- " 36660 ",
- " 036660 ",
- " 03660 ",
- " 030 ",
- " 0 ",
- " "};
-
-static char **zoom_in_xpm[3] = { zoom_in_x16, zoom_in_x24, zoom_in_x32 };
-
diff --git a/app/bin/bitmaps/zoom-out.xpm b/app/bin/bitmaps/zoom-out.xpm
deleted file mode 100644
index c37242d..0000000
--- a/app/bin/bitmaps/zoom-out.xpm
+++ /dev/null
@@ -1,127 +0,0 @@
-static char *zoom_out_x16[] = {
- "16 16 14 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #666666",
- "6 c #666699",
- "7 c #669999",
- "8 c #9999CC",
- "9 c #99CCCC",
- "A c #99CCFF",
- "B c #99FFFF",
- "C c #CCFFFF",
- " 00 ",
- " 227752 ",
- " 37CCCCA5 ",
- " 5CCCCCCB3 ",
- " 29CCCCCCC70 ",
- " 2A600000792 ",
- " 2A988888991 ",
- " 29CCCCCCC70 ",
- " 4BCCCCCA2 ",
- " 49CCB922 ",
- " 20022252 ",
- " 0250 ",
- " 0250 ",
- " 0520 ",
- " 022 ",
- " 0 "};
-
-static char *zoom_out_x24[] = {
- "24 24 14 1",
- " c None",
- "0 c #000000",
- "1 c #003333",
- "2 c #333333",
- "3 c #333366",
- "4 c #336666",
- "5 c #666666",
- "6 c #666699",
- "7 c #669999",
- "8 c #9999CC",
- "9 c #99CCCC",
- "A c #99CCFF",
- "B c #99FFFF",
- "C c #CCFFFF",
- " ",
- " 0220220 ",
- " 379BCA962 ",
- " 39CCCCCCC93 ",
- " 2ACCCCCCCCC93 ",
- " 27CCCCCCCCCCC70 ",
- " 2ACCCCCCCCCCC92 ",
- " 0CA888888888AB1 ",
- " 3CA0000000009C3 ",
- " 2CA6666666669C1 ",
- " 2ACCCCCCCCCCCA2 ",
- " 29CCCCCCCCCCC93 ",
- " 3ACCCCCCCCCB4 ",
- " 5CCCCCCCCB52 ",
- " 329CCCCB93250 ",
- " 225541205520 ",
- " 05520 ",
- " 2552 ",
- " 2552 ",
- " 02550 ",
- " 02550 ",
- " 0520 ",
- " 00 ",
- " "};
-
-static char *zoom_out_x32[] = {
- "32 32 16 1",
- " c None",
- "0 c #000000",
- "1 c #000033",
- "2 c #003333",
- "3 c #333333",
- "4 c #333366",
- "5 c #336666",
- "6 c #666666",
- "7 c #666699",
- "8 c #669999",
- "9 c #6699CC",
- "A c #9999CC",
- "B c #99CCCC",
- "C c #99CCFF",
- "D c #99FFFF",
- "E c #CCFFFF",
- " ",
- " 0000 ",
- " 338AA9653 ",
- " 4BEEEEEEEB53 ",
- " 35CEEEEEEEEEEB4 ",
- " 07EEEEEEEEEEEEE83 ",
- " 3CEEEEEEEEEEEEEE7 ",
- " 38EEEEEEEEEEEEEEEC3 ",
- " 1EEEEEEEEEEEEEEEEE5 ",
- " 4EEEEEEEEEEEEEEEEE90 ",
- " 6EE8000000000000CEB3 ",
- " 08EE8000000000000CEB3 ",
- " 08EE8000000000000CEB3 ",
- " 5EEEEEEEEEEEEEEEEEA2 ",
- " 3DEEEEEEEEEEEEEEEE6 ",
- " 3BEEEEEEEEEEEEEEEC4 ",
- " 4CEEEEEEEEEEEEEE5 ",
- " 6EEEEEEEEEEEEEB3 ",
- " 38DEEEEEEEEEE8330 ",
- " 33BEEEEEEEC63663 ",
- " 3469AA853036663 ",
- " 0000 036660 ",
- " 036660 ",
- " 066630 ",
- " 066630 ",
- " 36663 ",
- " 36660 ",
- " 036660 ",
- " 03660 ",
- " 030 ",
- " 0 ",
- " "};
-
-static char **zoom_out_xpm[3] = { zoom_out_x16, zoom_out_x24, zoom_out_x32 };
-
diff --git a/app/bin/cJSON.c b/app/bin/cJSON.c
deleted file mode 100755
index ee641fc..0000000
--- a/app/bin/cJSON.c
+++ /dev/null
@@ -1,2932 +0,0 @@
-/**
- Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-*/
-
-/* cJSON */
-/* JSON parser in C. */
-
-/* disable warnings about old C89 functions in MSVC */
-#if !defined(_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER)
-#define _CRT_SECURE_NO_DEPRECATE
-#endif
-
-#ifdef __GNUC__
-#pragma GCC visibility push(default)
-#endif
-#if defined(_MSC_VER)
-#pragma warning (push)
-/* disable warning about single line comments in system headers */
-#pragma warning (disable : 4001)
-#endif
-
-#include <string.h>
-#include <stdio.h>
-#include <math.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <ctype.h>
-
-#ifdef ENABLE_LOCALES
-#include <locale.h>
-#endif
-
-#if defined(_MSC_VER)
-#pragma warning (pop)
-#endif
-#ifdef __GNUC__
-#pragma GCC visibility pop
-#endif
-
-#include "cJSON.h"
-
-/* define our own boolean type */
-#define true ((cJSON_bool)1)
-#define false ((cJSON_bool)0)
-
-typedef struct {
- const unsigned char *json;
- size_t position;
-} error;
-static error global_error = { NULL, 0 };
-
-CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void)
-{
- return (const char*) (global_error.json + global_error.position);
-}
-
-CJSON_PUBLIC(char *) cJSON_GetStringValue(cJSON *item) {
- if (!cJSON_IsString(item)) {
- return NULL;
- }
-
- return item->valuestring;
-}
-
-/* This is a safeguard to prevent copy-pasters from using incompatible C and header files */
-#if (CJSON_VERSION_MAJOR != 1) || (CJSON_VERSION_MINOR != 7) || (CJSON_VERSION_PATCH != 8)
- #error cJSON.h and cJSON.c have different versions. Make sure that both have the same.
-#endif
-
-CJSON_PUBLIC(const char*) cJSON_Version(void)
-{
- static char version[15];
- sprintf(version, "%i.%i.%i", CJSON_VERSION_MAJOR, CJSON_VERSION_MINOR, CJSON_VERSION_PATCH);
-
- return version;
-}
-
-/* Case insensitive string comparison, doesn't consider two NULL pointers equal though */
-static int case_insensitive_strcmp(const unsigned char *string1, const unsigned char *string2)
-{
- if ((string1 == NULL) || (string2 == NULL))
- {
- return 1;
- }
-
- if (string1 == string2)
- {
- return 0;
- }
-
- for(; tolower(*string1) == tolower(*string2); (void)string1++, string2++)
- {
- if (*string1 == '\0')
- {
- return 0;
- }
- }
-
- return tolower(*string1) - tolower(*string2);
-}
-
-typedef struct internal_hooks
-{
- void *(CJSON_CDECL *allocate)(size_t size);
- void (CJSON_CDECL *deallocate)(void *pointer);
- void *(CJSON_CDECL *reallocate)(void *pointer, size_t size);
-} internal_hooks;
-
-#if defined(_MSC_VER)
-/* work around MSVC error C2322: '...' address of dillimport '...' is not static */
-static void * CJSON_CDECL internal_malloc(size_t size)
-{
- return malloc(size);
-}
-static void CJSON_CDECL internal_free(void *pointer)
-{
- free(pointer);
-}
-static void * CJSON_CDECL internal_realloc(void *pointer, size_t size)
-{
- return realloc(pointer, size);
-}
-#else
-#define internal_malloc malloc
-#define internal_free free
-#define internal_realloc realloc
-#endif
-
-static internal_hooks global_hooks = { internal_malloc, internal_free, internal_realloc };
-
-static unsigned char* cJSON_strdup(const unsigned char* string, const internal_hooks * const hooks)
-{
- size_t length = 0;
- unsigned char *copy = NULL;
-
- if (string == NULL)
- {
- return NULL;
- }
-
- length = strlen((const char*)string) + sizeof("");
- copy = (unsigned char*)hooks->allocate(length);
- if (copy == NULL)
- {
- return NULL;
- }
- memcpy(copy, string, length);
-
- return copy;
-}
-
-CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks* hooks)
-{
- if (hooks == NULL)
- {
- /* Reset hooks */
- global_hooks.allocate = malloc;
- global_hooks.deallocate = free;
- global_hooks.reallocate = realloc;
- return;
- }
-
- global_hooks.allocate = malloc;
- if (hooks->malloc_fn != NULL)
- {
- global_hooks.allocate = hooks->malloc_fn;
- }
-
- global_hooks.deallocate = free;
- if (hooks->free_fn != NULL)
- {
- global_hooks.deallocate = hooks->free_fn;
- }
-
- /* use realloc only if both free and malloc are used */
- global_hooks.reallocate = NULL;
- if ((global_hooks.allocate == malloc) && (global_hooks.deallocate == free))
- {
- global_hooks.reallocate = realloc;
- }
-}
-
-/* Internal constructor. */
-static cJSON *cJSON_New_Item(const internal_hooks * const hooks)
-{
- cJSON* node = (cJSON*)hooks->allocate(sizeof(cJSON));
- if (node)
- {
- memset(node, '\0', sizeof(cJSON));
- }
-
- return node;
-}
-
-/* Delete a cJSON structure. */
-CJSON_PUBLIC(void) cJSON_Delete(cJSON *item)
-{
- cJSON *next = NULL;
- while (item != NULL)
- {
- next = item->next;
- if (!(item->type & cJSON_IsReference) && (item->child != NULL))
- {
- cJSON_Delete(item->child);
- }
- if (!(item->type & cJSON_IsReference) && (item->valuestring != NULL))
- {
- global_hooks.deallocate(item->valuestring);
- }
- if (!(item->type & cJSON_StringIsConst) && (item->string != NULL))
- {
- global_hooks.deallocate(item->string);
- }
- global_hooks.deallocate(item);
- item = next;
- }
-}
-
-/* get the decimal point character of the current locale */
-static unsigned char get_decimal_point(void)
-{
-#ifdef ENABLE_LOCALES
- struct lconv *lconv = localeconv();
- return (unsigned char) lconv->decimal_point[0];
-#else
- return '.';
-#endif
-}
-
-typedef struct
-{
- const unsigned char *content;
- size_t length;
- size_t offset;
- size_t depth; /* How deeply nested (in arrays/objects) is the input at the current offset. */
- internal_hooks hooks;
-} parse_buffer;
-
-/* check if the given size is left to read in a given parse buffer (starting with 1) */
-#define can_read(buffer, size) ((buffer != NULL) && (((buffer)->offset + size) <= (buffer)->length))
-/* check if the buffer can be accessed at the given index (starting with 0) */
-#define can_access_at_index(buffer, index) ((buffer != NULL) && (((buffer)->offset + index) < (buffer)->length))
-#define cannot_access_at_index(buffer, index) (!can_access_at_index(buffer, index))
-/* get a pointer to the buffer at the position */
-#define buffer_at_offset(buffer) ((buffer)->content + (buffer)->offset)
-
-/* Parse the input text to generate a number, and populate the result into item. */
-static cJSON_bool parse_number(cJSON * const item, parse_buffer * const input_buffer)
-{
- double number = 0;
- unsigned char *after_end = NULL;
- unsigned char number_c_string[64];
- unsigned char decimal_point = get_decimal_point();
- size_t i = 0;
-
- if ((input_buffer == NULL) || (input_buffer->content == NULL))
- {
- return false;
- }
-
- /* copy the number into a temporary buffer and replace '.' with the decimal point
- * of the current locale (for strtod)
- * This also takes care of '\0' not necessarily being available for marking the end of the input */
- for (i = 0; (i < (sizeof(number_c_string) - 1)) && can_access_at_index(input_buffer, i); i++)
- {
- switch (buffer_at_offset(input_buffer)[i])
- {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- case '+':
- case '-':
- case 'e':
- case 'E':
- number_c_string[i] = buffer_at_offset(input_buffer)[i];
- break;
-
- case '.':
- number_c_string[i] = decimal_point;
- break;
-
- default:
- goto loop_end;
- }
- }
-loop_end:
- number_c_string[i] = '\0';
-
- number = strtod((const char*)number_c_string, (char**)&after_end);
- if (number_c_string == after_end)
- {
- return false; /* parse_error */
- }
-
- item->valuedouble = number;
-
- /* use saturation in case of overflow */
- if (number >= INT_MAX)
- {
- item->valueint = INT_MAX;
- }
- else if (number <= (double)INT_MIN)
- {
- item->valueint = INT_MIN;
- }
- else
- {
- item->valueint = (int)number;
- }
-
- item->type = cJSON_Number;
-
- input_buffer->offset += (size_t)(after_end - number_c_string);
- return true;
-}
-
-/* don't ask me, but the original cJSON_SetNumberValue returns an integer or double */
-CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number)
-{
- if (number >= INT_MAX)
- {
- object->valueint = INT_MAX;
- }
- else if (number <= (double)INT_MIN)
- {
- object->valueint = INT_MIN;
- }
- else
- {
- object->valueint = (int)number;
- }
-
- return object->valuedouble = number;
-}
-
-typedef struct
-{
- unsigned char *buffer;
- size_t length;
- size_t offset;
- size_t depth; /* current nesting depth (for formatted printing) */
- cJSON_bool noalloc;
- cJSON_bool format; /* is this print a formatted print */
- internal_hooks hooks;
-} printbuffer;
-
-/* realloc printbuffer if necessary to have at least "needed" bytes more */
-static unsigned char* ensure(printbuffer * const p, size_t needed)
-{
- unsigned char *newbuffer = NULL;
- size_t newsize = 0;
-
- if ((p == NULL) || (p->buffer == NULL))
- {
- return NULL;
- }
-
- if ((p->length > 0) && (p->offset >= p->length))
- {
- /* make sure that offset is valid */
- return NULL;
- }
-
- if (needed > INT_MAX)
- {
- /* sizes bigger than INT_MAX are currently not supported */
- return NULL;
- }
-
- needed += p->offset + 1;
- if (needed <= p->length)
- {
- return p->buffer + p->offset;
- }
-
- if (p->noalloc) {
- return NULL;
- }
-
- /* calculate new buffer size */
- if (needed > (INT_MAX / 2))
- {
- /* overflow of int, use INT_MAX if possible */
- if (needed <= INT_MAX)
- {
- newsize = INT_MAX;
- }
- else
- {
- return NULL;
- }
- }
- else
- {
- newsize = needed * 2;
- }
-
- if (p->hooks.reallocate != NULL)
- {
- /* reallocate with realloc if available */
- newbuffer = (unsigned char*)p->hooks.reallocate(p->buffer, newsize);
- if (newbuffer == NULL)
- {
- p->hooks.deallocate(p->buffer);
- p->length = 0;
- p->buffer = NULL;
-
- return NULL;
- }
- }
- else
- {
- /* otherwise reallocate manually */
- newbuffer = (unsigned char*)p->hooks.allocate(newsize);
- if (!newbuffer)
- {
- p->hooks.deallocate(p->buffer);
- p->length = 0;
- p->buffer = NULL;
-
- return NULL;
- }
- if (newbuffer)
- {
- memcpy(newbuffer, p->buffer, p->offset + 1);
- }
- p->hooks.deallocate(p->buffer);
- }
- p->length = newsize;
- p->buffer = newbuffer;
-
- return newbuffer + p->offset;
-}
-
-/* calculate the new length of the string in a printbuffer and update the offset */
-static void update_offset(printbuffer * const buffer)
-{
- const unsigned char *buffer_pointer = NULL;
- if ((buffer == NULL) || (buffer->buffer == NULL))
- {
- return;
- }
- buffer_pointer = buffer->buffer + buffer->offset;
-
- buffer->offset += strlen((const char*)buffer_pointer);
-}
-
-/* Render the number nicely from the given item into a string. */
-static cJSON_bool print_number(const cJSON * const item, printbuffer * const output_buffer)
-{
- unsigned char *output_pointer = NULL;
- double d = item->valuedouble;
- int length = 0;
- size_t i = 0;
- unsigned char number_buffer[26]; /* temporary buffer to print the number into */
- unsigned char decimal_point = get_decimal_point();
- double test;
-
- if (output_buffer == NULL)
- {
- return false;
- }
-
- /* This checks for NaN and Infinity */
- if ((d * 0) != 0)
- {
- length = sprintf((char*)number_buffer, "null");
- }
- else
- {
- /* Try 15 decimal places of precision to avoid nonsignificant nonzero digits */
- length = sprintf((char*)number_buffer, "%1.15g", d);
-
- /* Check whether the original double can be recovered */
- if ((sscanf((char*)number_buffer, "%lg", &test) != 1) || ((double)test != d))
- {
- /* If not, print with 17 decimal places of precision */
- length = sprintf((char*)number_buffer, "%1.17g", d);
- }
- }
-
- /* sprintf failed or buffer overrun occured */
- if ((length < 0) || (length > (int)(sizeof(number_buffer) - 1)))
- {
- return false;
- }
-
- /* reserve appropriate space in the output */
- output_pointer = ensure(output_buffer, (size_t)length + sizeof(""));
- if (output_pointer == NULL)
- {
- return false;
- }
-
- /* copy the printed number to the output and replace locale
- * dependent decimal point with '.' */
- for (i = 0; i < ((size_t)length); i++)
- {
- if (number_buffer[i] == decimal_point)
- {
- output_pointer[i] = '.';
- continue;
- }
-
- output_pointer[i] = number_buffer[i];
- }
- output_pointer[i] = '\0';
-
- output_buffer->offset += (size_t)length;
-
- return true;
-}
-
-/* parse 4 digit hexadecimal number */
-static unsigned parse_hex4(const unsigned char * const input)
-{
- unsigned int h = 0;
- size_t i = 0;
-
- for (i = 0; i < 4; i++)
- {
- /* parse digit */
- if ((input[i] >= '0') && (input[i] <= '9'))
- {
- h += (unsigned int) input[i] - '0';
- }
- else if ((input[i] >= 'A') && (input[i] <= 'F'))
- {
- h += (unsigned int) 10 + input[i] - 'A';
- }
- else if ((input[i] >= 'a') && (input[i] <= 'f'))
- {
- h += (unsigned int) 10 + input[i] - 'a';
- }
- else /* invalid */
- {
- return 0;
- }
-
- if (i < 3)
- {
- /* shift left to make place for the next nibble */
- h = h << 4;
- }
- }
-
- return h;
-}
-
-/* converts a UTF-16 literal to UTF-8
- * A literal can be one or two sequences of the form \uXXXX */
-static unsigned char utf16_literal_to_utf8(const unsigned char * const input_pointer, const unsigned char * const input_end, unsigned char **output_pointer)
-{
- long unsigned int codepoint = 0;
- unsigned int first_code = 0;
- const unsigned char *first_sequence = input_pointer;
- unsigned char utf8_length = 0;
- unsigned char utf8_position = 0;
- unsigned char sequence_length = 0;
- unsigned char first_byte_mark = 0;
-
- if ((input_end - first_sequence) < 6)
- {
- /* input ends unexpectedly */
- goto fail;
- }
-
- /* get the first utf16 sequence */
- first_code = parse_hex4(first_sequence + 2);
-
- /* check that the code is valid */
- if (((first_code >= 0xDC00) && (first_code <= 0xDFFF)))
- {
- goto fail;
- }
-
- /* UTF16 surrogate pair */
- if ((first_code >= 0xD800) && (first_code <= 0xDBFF))
- {
- const unsigned char *second_sequence = first_sequence + 6;
- unsigned int second_code = 0;
- sequence_length = 12; /* \uXXXX\uXXXX */
-
- if ((input_end - second_sequence) < 6)
- {
- /* input ends unexpectedly */
- goto fail;
- }
-
- if ((second_sequence[0] != '\\') || (second_sequence[1] != 'u'))
- {
- /* missing second half of the surrogate pair */
- goto fail;
- }
-
- /* get the second utf16 sequence */
- second_code = parse_hex4(second_sequence + 2);
- /* check that the code is valid */
- if ((second_code < 0xDC00) || (second_code > 0xDFFF))
- {
- /* invalid second half of the surrogate pair */
- goto fail;
- }
-
-
- /* calculate the unicode codepoint from the surrogate pair */
- codepoint = 0x10000 + (((first_code & 0x3FF) << 10) | (second_code & 0x3FF));
- }
- else
- {
- sequence_length = 6; /* \uXXXX */
- codepoint = first_code;
- }
-
- /* encode as UTF-8
- * takes at maximum 4 bytes to encode:
- * 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */
- if (codepoint < 0x80)
- {
- /* normal ascii, encoding 0xxxxxxx */
- utf8_length = 1;
- }
- else if (codepoint < 0x800)
- {
- /* two bytes, encoding 110xxxxx 10xxxxxx */
- utf8_length = 2;
- first_byte_mark = 0xC0; /* 11000000 */
- }
- else if (codepoint < 0x10000)
- {
- /* three bytes, encoding 1110xxxx 10xxxxxx 10xxxxxx */
- utf8_length = 3;
- first_byte_mark = 0xE0; /* 11100000 */
- }
- else if (codepoint <= 0x10FFFF)
- {
- /* four bytes, encoding 1110xxxx 10xxxxxx 10xxxxxx 10xxxxxx */
- utf8_length = 4;
- first_byte_mark = 0xF0; /* 11110000 */
- }
- else
- {
- /* invalid unicode codepoint */
- goto fail;
- }
-
- /* encode as utf8 */
- for (utf8_position = (unsigned char)(utf8_length - 1); utf8_position > 0; utf8_position--)
- {
- /* 10xxxxxx */
- (*output_pointer)[utf8_position] = (unsigned char)((codepoint | 0x80) & 0xBF);
- codepoint >>= 6;
- }
- /* encode first byte */
- if (utf8_length > 1)
- {
- (*output_pointer)[0] = (unsigned char)((codepoint | first_byte_mark) & 0xFF);
- }
- else
- {
- (*output_pointer)[0] = (unsigned char)(codepoint & 0x7F);
- }
-
- *output_pointer += utf8_length;
-
- return sequence_length;
-
-fail:
- return 0;
-}
-
-/* Parse the input text into an unescaped cinput, and populate item. */
-static cJSON_bool parse_string(cJSON * const item, parse_buffer * const input_buffer)
-{
- const unsigned char *input_pointer = buffer_at_offset(input_buffer) + 1;
- const unsigned char *input_end = buffer_at_offset(input_buffer) + 1;
- unsigned char *output_pointer = NULL;
- unsigned char *output = NULL;
-
- /* not a string */
- if (buffer_at_offset(input_buffer)[0] != '\"')
- {
- goto fail;
- }
-
- {
- /* calculate approximate size of the output (overestimate) */
- size_t allocation_length = 0;
- size_t skipped_bytes = 0;
- while (((size_t)(input_end - input_buffer->content) < input_buffer->length) && (*input_end != '\"'))
- {
- /* is escape sequence */
- if (input_end[0] == '\\')
- {
- if ((size_t)(input_end + 1 - input_buffer->content) >= input_buffer->length)
- {
- /* prevent buffer overflow when last input character is a backslash */
- goto fail;
- }
- skipped_bytes++;
- input_end++;
- }
- input_end++;
- }
- if (((size_t)(input_end - input_buffer->content) >= input_buffer->length) || (*input_end != '\"'))
- {
- goto fail; /* string ended unexpectedly */
- }
-
- /* This is at most how much we need for the output */
- allocation_length = (size_t) (input_end - buffer_at_offset(input_buffer)) - skipped_bytes;
- output = (unsigned char*)input_buffer->hooks.allocate(allocation_length + sizeof(""));
- if (output == NULL)
- {
- goto fail; /* allocation failure */
- }
- }
-
- output_pointer = output;
- /* loop through the string literal */
- while (input_pointer < input_end)
- {
- if (*input_pointer != '\\')
- {
- *output_pointer++ = *input_pointer++;
- }
- /* escape sequence */
- else
- {
- unsigned char sequence_length = 2;
- if ((input_end - input_pointer) < 1)
- {
- goto fail;
- }
-
- switch (input_pointer[1])
- {
- case 'b':
- *output_pointer++ = '\b';
- break;
- case 'f':
- *output_pointer++ = '\f';
- break;
- case 'n':
- *output_pointer++ = '\n';
- break;
- case 'r':
- *output_pointer++ = '\r';
- break;
- case 't':
- *output_pointer++ = '\t';
- break;
- case '\"':
- case '\\':
- case '/':
- *output_pointer++ = input_pointer[1];
- break;
-
- /* UTF-16 literal */
- case 'u':
- sequence_length = utf16_literal_to_utf8(input_pointer, input_end, &output_pointer);
- if (sequence_length == 0)
- {
- /* failed to convert UTF16-literal to UTF-8 */
- goto fail;
- }
- break;
-
- default:
- goto fail;
- }
- input_pointer += sequence_length;
- }
- }
-
- /* zero terminate the output */
- *output_pointer = '\0';
-
- item->type = cJSON_String;
- item->valuestring = (char*)output;
-
- input_buffer->offset = (size_t) (input_end - input_buffer->content);
- input_buffer->offset++;
-
- return true;
-
-fail:
- if (output != NULL)
- {
- input_buffer->hooks.deallocate(output);
- }
-
- if (input_pointer != NULL)
- {
- input_buffer->offset = (size_t)(input_pointer - input_buffer->content);
- }
-
- return false;
-}
-
-/* Render the cstring provided to an escaped version that can be printed. */
-static cJSON_bool print_string_ptr(const unsigned char * const input, printbuffer * const output_buffer)
-{
- const unsigned char *input_pointer = NULL;
- unsigned char *output = NULL;
- unsigned char *output_pointer = NULL;
- size_t output_length = 0;
- /* numbers of additional characters needed for escaping */
- size_t escape_characters = 0;
-
- if (output_buffer == NULL)
- {
- return false;
- }
-
- /* empty string */
- if (input == NULL)
- {
- output = ensure(output_buffer, sizeof("\"\""));
- if (output == NULL)
- {
- return false;
- }
- strcpy((char*)output, "\"\"");
-
- return true;
- }
-
- /* set "flag" to 1 if something needs to be escaped */
- for (input_pointer = input; *input_pointer; input_pointer++)
- {
- switch (*input_pointer)
- {
- case '\"':
- case '\\':
- case '\b':
- case '\f':
- case '\n':
- case '\r':
- case '\t':
- /* one character escape sequence */
- escape_characters++;
- break;
- default:
- if (*input_pointer < 32)
- {
- /* UTF-16 escape sequence uXXXX */
- escape_characters += 5;
- }
- break;
- }
- }
- output_length = (size_t)(input_pointer - input) + escape_characters;
-
- output = ensure(output_buffer, output_length + sizeof("\"\""));
- if (output == NULL)
- {
- return false;
- }
-
- /* no characters have to be escaped */
- if (escape_characters == 0)
- {
- output[0] = '\"';
- memcpy(output + 1, input, output_length);
- output[output_length + 1] = '\"';
- output[output_length + 2] = '\0';
-
- return true;
- }
-
- output[0] = '\"';
- output_pointer = output + 1;
- /* copy the string */
- for (input_pointer = input; *input_pointer != '\0'; (void)input_pointer++, output_pointer++)
- {
- if ((*input_pointer > 31) && (*input_pointer != '\"') && (*input_pointer != '\\'))
- {
- /* normal character, copy */
- *output_pointer = *input_pointer;
- }
- else
- {
- /* character needs to be escaped */
- *output_pointer++ = '\\';
- switch (*input_pointer)
- {
- case '\\':
- *output_pointer = '\\';
- break;
- case '\"':
- *output_pointer = '\"';
- break;
- case '\b':
- *output_pointer = 'b';
- break;
- case '\f':
- *output_pointer = 'f';
- break;
- case '\n':
- *output_pointer = 'n';
- break;
- case '\r':
- *output_pointer = 'r';
- break;
- case '\t':
- *output_pointer = 't';
- break;
- default:
- /* escape and print as unicode codepoint */
- sprintf((char*)output_pointer, "u%04x", *input_pointer);
- output_pointer += 4;
- break;
- }
- }
- }
- output[output_length + 1] = '\"';
- output[output_length + 2] = '\0';
-
- return true;
-}
-
-/* Invoke print_string_ptr (which is useful) on an item. */
-static cJSON_bool print_string(const cJSON * const item, printbuffer * const p)
-{
- return print_string_ptr((unsigned char*)item->valuestring, p);
-}
-
-/* Predeclare these prototypes. */
-static cJSON_bool parse_value(cJSON * const item, parse_buffer * const input_buffer);
-static cJSON_bool print_value(const cJSON * const item, printbuffer * const output_buffer);
-static cJSON_bool parse_array(cJSON * const item, parse_buffer * const input_buffer);
-static cJSON_bool print_array(const cJSON * const item, printbuffer * const output_buffer);
-static cJSON_bool parse_object(cJSON * const item, parse_buffer * const input_buffer);
-static cJSON_bool print_object(const cJSON * const item, printbuffer * const output_buffer);
-
-/* Utility to jump whitespace and cr/lf */
-static parse_buffer *buffer_skip_whitespace(parse_buffer * const buffer)
-{
- if ((buffer == NULL) || (buffer->content == NULL))
- {
- return NULL;
- }
-
- while (can_access_at_index(buffer, 0) && (buffer_at_offset(buffer)[0] <= 32))
- {
- buffer->offset++;
- }
-
- if (buffer->offset == buffer->length)
- {
- buffer->offset--;
- }
-
- return buffer;
-}
-
-/* skip the UTF-8 BOM (byte order mark) if it is at the beginning of a buffer */
-static parse_buffer *skip_utf8_bom(parse_buffer * const buffer)
-{
- if ((buffer == NULL) || (buffer->content == NULL) || (buffer->offset != 0))
- {
- return NULL;
- }
-
- if (can_access_at_index(buffer, 4) && (strncmp((const char*)buffer_at_offset(buffer), "\xEF\xBB\xBF", 3) == 0))
- {
- buffer->offset += 3;
- }
-
- return buffer;
-}
-
-/* Parse an object - create a new root, and populate. */
-CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated)
-{
- parse_buffer buffer = { 0, 0, 0, 0, { 0, 0, 0 } };
- cJSON *item = NULL;
-
- /* reset error position */
- global_error.json = NULL;
- global_error.position = 0;
-
- if (value == NULL)
- {
- goto fail;
- }
-
- buffer.content = (const unsigned char*)value;
- buffer.length = strlen((const char*)value) + sizeof("");
- buffer.offset = 0;
- buffer.hooks = global_hooks;
-
- item = cJSON_New_Item(&global_hooks);
- if (item == NULL) /* memory fail */
- {
- goto fail;
- }
-
- if (!parse_value(item, buffer_skip_whitespace(skip_utf8_bom(&buffer))))
- {
- /* parse failure. ep is set. */
- goto fail;
- }
-
- /* if we require null-terminated JSON without appended garbage, skip and then check for a null terminator */
- if (require_null_terminated)
- {
- buffer_skip_whitespace(&buffer);
- if ((buffer.offset >= buffer.length) || buffer_at_offset(&buffer)[0] != '\0')
- {
- goto fail;
- }
- }
- if (return_parse_end)
- {
- *return_parse_end = (const char*)buffer_at_offset(&buffer);
- }
-
- return item;
-
-fail:
- if (item != NULL)
- {
- cJSON_Delete(item);
- }
-
- if (value != NULL)
- {
- error local_error;
- local_error.json = (const unsigned char*)value;
- local_error.position = 0;
-
- if (buffer.offset < buffer.length)
- {
- local_error.position = buffer.offset;
- }
- else if (buffer.length > 0)
- {
- local_error.position = buffer.length - 1;
- }
-
- if (return_parse_end != NULL)
- {
- *return_parse_end = (const char*)local_error.json + local_error.position;
- }
-
- global_error = local_error;
- }
-
- return NULL;
-}
-
-/* Default options for cJSON_Parse */
-CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value)
-{
- return cJSON_ParseWithOpts(value, 0, 0);
-}
-
-#define cjson_min(a, b) ((a < b) ? a : b)
-
-static unsigned char *print(const cJSON * const item, cJSON_bool format, const internal_hooks * const hooks)
-{
- static const size_t default_buffer_size = 256;
- printbuffer buffer[1];
- unsigned char *printed = NULL;
-
- memset(buffer, 0, sizeof(buffer));
-
- /* create buffer */
- buffer->buffer = (unsigned char*) hooks->allocate(default_buffer_size);
- buffer->length = default_buffer_size;
- buffer->format = format;
- buffer->hooks = *hooks;
- if (buffer->buffer == NULL)
- {
- goto fail;
- }
-
- /* print the value */
- if (!print_value(item, buffer))
- {
- goto fail;
- }
- update_offset(buffer);
-
- /* check if reallocate is available */
- if (hooks->reallocate != NULL)
- {
- printed = (unsigned char*) hooks->reallocate(buffer->buffer, buffer->offset + 1);
- if (printed == NULL) {
- goto fail;
- }
- buffer->buffer = NULL;
- }
- else /* otherwise copy the JSON over to a new buffer */
- {
- printed = (unsigned char*) hooks->allocate(buffer->offset + 1);
- if (printed == NULL)
- {
- goto fail;
- }
- memcpy(printed, buffer->buffer, cjson_min(buffer->length, buffer->offset + 1));
- printed[buffer->offset] = '\0'; /* just to be sure */
-
- /* free the buffer */
- hooks->deallocate(buffer->buffer);
- }
-
- return printed;
-
-fail:
- if (buffer->buffer != NULL)
- {
- hooks->deallocate(buffer->buffer);
- }
-
- if (printed != NULL)
- {
- hooks->deallocate(printed);
- }
-
- return NULL;
-}
-
-/* Render a cJSON item/entity/structure to text. */
-CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item)
-{
- return (char*)print(item, true, &global_hooks);
-}
-
-CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item)
-{
- return (char*)print(item, false, &global_hooks);
-}
-
-CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt)
-{
- printbuffer p = { 0, 0, 0, 0, 0, 0, { 0, 0, 0 } };
-
- if (prebuffer < 0)
- {
- return NULL;
- }
-
- p.buffer = (unsigned char*)global_hooks.allocate((size_t)prebuffer);
- if (!p.buffer)
- {
- return NULL;
- }
-
- p.length = (size_t)prebuffer;
- p.offset = 0;
- p.noalloc = false;
- p.format = fmt;
- p.hooks = global_hooks;
-
- if (!print_value(item, &p))
- {
- global_hooks.deallocate(p.buffer);
- return NULL;
- }
-
- return (char*)p.buffer;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buf, const int len, const cJSON_bool fmt)
-{
- printbuffer p = { 0, 0, 0, 0, 0, 0, { 0, 0, 0 } };
-
- if ((len < 0) || (buf == NULL))
- {
- return false;
- }
-
- p.buffer = (unsigned char*)buf;
- p.length = (size_t)len;
- p.offset = 0;
- p.noalloc = true;
- p.format = fmt;
- p.hooks = global_hooks;
-
- return print_value(item, &p);
-}
-
-/* Parser core - when encountering text, process appropriately. */
-static cJSON_bool parse_value(cJSON * const item, parse_buffer * const input_buffer)
-{
- if ((input_buffer == NULL) || (input_buffer->content == NULL))
- {
- return false; /* no input */
- }
-
- /* parse the different types of values */
- /* null */
- if (can_read(input_buffer, 4) && (strncmp((const char*)buffer_at_offset(input_buffer), "null", 4) == 0))
- {
- item->type = cJSON_NULL;
- input_buffer->offset += 4;
- return true;
- }
- /* false */
- if (can_read(input_buffer, 5) && (strncmp((const char*)buffer_at_offset(input_buffer), "false", 5) == 0))
- {
- item->type = cJSON_False;
- input_buffer->offset += 5;
- return true;
- }
- /* true */
- if (can_read(input_buffer, 4) && (strncmp((const char*)buffer_at_offset(input_buffer), "true", 4) == 0))
- {
- item->type = cJSON_True;
- item->valueint = 1;
- input_buffer->offset += 4;
- return true;
- }
- /* string */
- if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '\"'))
- {
- return parse_string(item, input_buffer);
- }
- /* number */
- if (can_access_at_index(input_buffer, 0) && ((buffer_at_offset(input_buffer)[0] == '-') || ((buffer_at_offset(input_buffer)[0] >= '0') && (buffer_at_offset(input_buffer)[0] <= '9'))))
- {
- return parse_number(item, input_buffer);
- }
- /* array */
- if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '['))
- {
- return parse_array(item, input_buffer);
- }
- /* object */
- if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '{'))
- {
- return parse_object(item, input_buffer);
- }
-
- return false;
-}
-
-/* Render a value to text. */
-static cJSON_bool print_value(const cJSON * const item, printbuffer * const output_buffer)
-{
- unsigned char *output = NULL;
-
- if ((item == NULL) || (output_buffer == NULL))
- {
- return false;
- }
-
- switch ((item->type) & 0xFF)
- {
- case cJSON_NULL:
- output = ensure(output_buffer, 5);
- if (output == NULL)
- {
- return false;
- }
- strcpy((char*)output, "null");
- return true;
-
- case cJSON_False:
- output = ensure(output_buffer, 6);
- if (output == NULL)
- {
- return false;
- }
- strcpy((char*)output, "false");
- return true;
-
- case cJSON_True:
- output = ensure(output_buffer, 5);
- if (output == NULL)
- {
- return false;
- }
- strcpy((char*)output, "true");
- return true;
-
- case cJSON_Number:
- return print_number(item, output_buffer);
-
- case cJSON_Raw:
- {
- size_t raw_length = 0;
- if (item->valuestring == NULL)
- {
- return false;
- }
-
- raw_length = strlen(item->valuestring) + sizeof("");
- output = ensure(output_buffer, raw_length);
- if (output == NULL)
- {
- return false;
- }
- memcpy(output, item->valuestring, raw_length);
- return true;
- }
-
- case cJSON_String:
- return print_string(item, output_buffer);
-
- case cJSON_Array:
- return print_array(item, output_buffer);
-
- case cJSON_Object:
- return print_object(item, output_buffer);
-
- default:
- return false;
- }
-}
-
-/* Build an array from input text. */
-static cJSON_bool parse_array(cJSON * const item, parse_buffer * const input_buffer)
-{
- cJSON *head = NULL; /* head of the linked list */
- cJSON *current_item = NULL;
-
- if (input_buffer->depth >= CJSON_NESTING_LIMIT)
- {
- return false; /* to deeply nested */
- }
- input_buffer->depth++;
-
- if (buffer_at_offset(input_buffer)[0] != '[')
- {
- /* not an array */
- goto fail;
- }
-
- input_buffer->offset++;
- buffer_skip_whitespace(input_buffer);
- if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == ']'))
- {
- /* empty array */
- goto success;
- }
-
- /* check if we skipped to the end of the buffer */
- if (cannot_access_at_index(input_buffer, 0))
- {
- input_buffer->offset--;
- goto fail;
- }
-
- /* step back to character in front of the first element */
- input_buffer->offset--;
- /* loop through the comma separated array elements */
- do
- {
- /* allocate next item */
- cJSON *new_item = cJSON_New_Item(&(input_buffer->hooks));
- if (new_item == NULL)
- {
- goto fail; /* allocation failure */
- }
-
- /* attach next item to list */
- if (head == NULL)
- {
- /* start the linked list */
- current_item = head = new_item;
- }
- else
- {
- /* add to the end and advance */
- current_item->next = new_item;
- new_item->prev = current_item;
- current_item = new_item;
- }
-
- /* parse next value */
- input_buffer->offset++;
- buffer_skip_whitespace(input_buffer);
- if (!parse_value(current_item, input_buffer))
- {
- goto fail; /* failed to parse value */
- }
- buffer_skip_whitespace(input_buffer);
- }
- while (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == ','));
-
- if (cannot_access_at_index(input_buffer, 0) || buffer_at_offset(input_buffer)[0] != ']')
- {
- goto fail; /* expected end of array */
- }
-
-success:
- input_buffer->depth--;
-
- item->type = cJSON_Array;
- item->child = head;
-
- input_buffer->offset++;
-
- return true;
-
-fail:
- if (head != NULL)
- {
- cJSON_Delete(head);
- }
-
- return false;
-}
-
-/* Render an array to text */
-static cJSON_bool print_array(const cJSON * const item, printbuffer * const output_buffer)
-{
- unsigned char *output_pointer = NULL;
- size_t length = 0;
- cJSON *current_element = item->child;
-
- if (output_buffer == NULL)
- {
- return false;
- }
-
- /* Compose the output array. */
- /* opening square bracket */
- output_pointer = ensure(output_buffer, 1);
- if (output_pointer == NULL)
- {
- return false;
- }
-
- *output_pointer = '[';
- output_buffer->offset++;
- output_buffer->depth++;
-
- while (current_element != NULL)
- {
- if (!print_value(current_element, output_buffer))
- {
- return false;
- }
- update_offset(output_buffer);
- if (current_element->next)
- {
- length = (size_t) (output_buffer->format ? 2 : 1);
- output_pointer = ensure(output_buffer, length + 1);
- if (output_pointer == NULL)
- {
- return false;
- }
- *output_pointer++ = ',';
- if(output_buffer->format)
- {
- *output_pointer++ = ' ';
- }
- *output_pointer = '\0';
- output_buffer->offset += length;
- }
- current_element = current_element->next;
- }
-
- output_pointer = ensure(output_buffer, 2);
- if (output_pointer == NULL)
- {
- return false;
- }
- *output_pointer++ = ']';
- *output_pointer = '\0';
- output_buffer->depth--;
-
- return true;
-}
-
-/* Build an object from the text. */
-static cJSON_bool parse_object(cJSON * const item, parse_buffer * const input_buffer)
-{
- cJSON *head = NULL; /* linked list head */
- cJSON *current_item = NULL;
-
- if (input_buffer->depth >= CJSON_NESTING_LIMIT)
- {
- return false; /* to deeply nested */
- }
- input_buffer->depth++;
-
- if (cannot_access_at_index(input_buffer, 0) || (buffer_at_offset(input_buffer)[0] != '{'))
- {
- goto fail; /* not an object */
- }
-
- input_buffer->offset++;
- buffer_skip_whitespace(input_buffer);
- if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '}'))
- {
- goto success; /* empty object */
- }
-
- /* check if we skipped to the end of the buffer */
- if (cannot_access_at_index(input_buffer, 0))
- {
- input_buffer->offset--;
- goto fail;
- }
-
- /* step back to character in front of the first element */
- input_buffer->offset--;
- /* loop through the comma separated array elements */
- do
- {
- /* allocate next item */
- cJSON *new_item = cJSON_New_Item(&(input_buffer->hooks));
- if (new_item == NULL)
- {
- goto fail; /* allocation failure */
- }
-
- /* attach next item to list */
- if (head == NULL)
- {
- /* start the linked list */
- current_item = head = new_item;
- }
- else
- {
- /* add to the end and advance */
- current_item->next = new_item;
- new_item->prev = current_item;
- current_item = new_item;
- }
-
- /* parse the name of the child */
- input_buffer->offset++;
- buffer_skip_whitespace(input_buffer);
- if (!parse_string(current_item, input_buffer))
- {
- goto fail; /* faile to parse name */
- }
- buffer_skip_whitespace(input_buffer);
-
- /* swap valuestring and string, because we parsed the name */
- current_item->string = current_item->valuestring;
- current_item->valuestring = NULL;
-
- if (cannot_access_at_index(input_buffer, 0) || (buffer_at_offset(input_buffer)[0] != ':'))
- {
- goto fail; /* invalid object */
- }
-
- /* parse the value */
- input_buffer->offset++;
- buffer_skip_whitespace(input_buffer);
- if (!parse_value(current_item, input_buffer))
- {
- goto fail; /* failed to parse value */
- }
- buffer_skip_whitespace(input_buffer);
- }
- while (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == ','));
-
- if (cannot_access_at_index(input_buffer, 0) || (buffer_at_offset(input_buffer)[0] != '}'))
- {
- goto fail; /* expected end of object */
- }
-
-success:
- input_buffer->depth--;
-
- item->type = cJSON_Object;
- item->child = head;
-
- input_buffer->offset++;
- return true;
-
-fail:
- if (head != NULL)
- {
- cJSON_Delete(head);
- }
-
- return false;
-}
-
-/* Render an object to text. */
-static cJSON_bool print_object(const cJSON * const item, printbuffer * const output_buffer)
-{
- unsigned char *output_pointer = NULL;
- size_t length = 0;
- cJSON *current_item = item->child;
-
- if (output_buffer == NULL)
- {
- return false;
- }
-
- /* Compose the output: */
- length = (size_t) (output_buffer->format ? 2 : 1); /* fmt: {\n */
- output_pointer = ensure(output_buffer, length + 1);
- if (output_pointer == NULL)
- {
- return false;
- }
-
- *output_pointer++ = '{';
- output_buffer->depth++;
- if (output_buffer->format)
- {
- *output_pointer++ = '\n';
- }
- output_buffer->offset += length;
-
- while (current_item)
- {
- if (output_buffer->format)
- {
- size_t i;
- output_pointer = ensure(output_buffer, output_buffer->depth);
- if (output_pointer == NULL)
- {
- return false;
- }
- for (i = 0; i < output_buffer->depth; i++)
- {
- *output_pointer++ = '\t';
- }
- output_buffer->offset += output_buffer->depth;
- }
-
- /* print key */
- if (!print_string_ptr((unsigned char*)current_item->string, output_buffer))
- {
- return false;
- }
- update_offset(output_buffer);
-
- length = (size_t) (output_buffer->format ? 2 : 1);
- output_pointer = ensure(output_buffer, length);
- if (output_pointer == NULL)
- {
- return false;
- }
- *output_pointer++ = ':';
- if (output_buffer->format)
- {
- *output_pointer++ = '\t';
- }
- output_buffer->offset += length;
-
- /* print value */
- if (!print_value(current_item, output_buffer))
- {
- return false;
- }
- update_offset(output_buffer);
-
- /* print comma if not last */
- length = ((size_t)(output_buffer->format ? 1 : 0) + (size_t)(current_item->next ? 1 : 0));
- output_pointer = ensure(output_buffer, length + 1);
- if (output_pointer == NULL)
- {
- return false;
- }
- if (current_item->next)
- {
- *output_pointer++ = ',';
- }
-
- if (output_buffer->format)
- {
- *output_pointer++ = '\n';
- }
- *output_pointer = '\0';
- output_buffer->offset += length;
-
- current_item = current_item->next;
- }
-
- output_pointer = ensure(output_buffer, output_buffer->format ? (output_buffer->depth + 1) : 2);
- if (output_pointer == NULL)
- {
- return false;
- }
- if (output_buffer->format)
- {
- size_t i;
- for (i = 0; i < (output_buffer->depth - 1); i++)
- {
- *output_pointer++ = '\t';
- }
- }
- *output_pointer++ = '}';
- *output_pointer = '\0';
- output_buffer->depth--;
-
- return true;
-}
-
-/* Get Array size/item / object item. */
-CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array)
-{
- cJSON *child = NULL;
- size_t size = 0;
-
- if (array == NULL)
- {
- return 0;
- }
-
- child = array->child;
-
- while(child != NULL)
- {
- size++;
- child = child->next;
- }
-
- /* FIXME: Can overflow here. Cannot be fixed without breaking the API */
-
- return (int)size;
-}
-
-static cJSON* get_array_item(const cJSON *array, size_t index)
-{
- cJSON *current_child = NULL;
-
- if (array == NULL)
- {
- return NULL;
- }
-
- current_child = array->child;
- while ((current_child != NULL) && (index > 0))
- {
- index--;
- current_child = current_child->next;
- }
-
- return current_child;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index)
-{
- if (index < 0)
- {
- return NULL;
- }
-
- return get_array_item(array, (size_t)index);
-}
-
-static cJSON *get_object_item(const cJSON * const object, const char * const name, const cJSON_bool case_sensitive)
-{
- cJSON *current_element = NULL;
-
- if ((object == NULL) || (name == NULL))
- {
- return NULL;
- }
-
- current_element = object->child;
- if (case_sensitive)
- {
- while ((current_element != NULL) && (strcmp(name, current_element->string) != 0))
- {
- current_element = current_element->next;
- }
- }
- else
- {
- while ((current_element != NULL) && (case_insensitive_strcmp((const unsigned char*)name, (const unsigned char*)(current_element->string)) != 0))
- {
- current_element = current_element->next;
- }
- }
-
- return current_element;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string)
-{
- return get_object_item(object, string, false);
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive(const cJSON * const object, const char * const string)
-{
- return get_object_item(object, string, true);
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *string)
-{
- return cJSON_GetObjectItem(object, string) ? 1 : 0;
-}
-
-/* Utility for array list handling. */
-static void suffix_object(cJSON *prev, cJSON *item)
-{
- prev->next = item;
- item->prev = prev;
-}
-
-/* Utility for handling references. */
-static cJSON *create_reference(const cJSON *item, const internal_hooks * const hooks)
-{
- cJSON *reference = NULL;
- if (item == NULL)
- {
- return NULL;
- }
-
- reference = cJSON_New_Item(hooks);
- if (reference == NULL)
- {
- return NULL;
- }
-
- memcpy(reference, item, sizeof(cJSON));
- reference->string = NULL;
- reference->type |= cJSON_IsReference;
- reference->next = reference->prev = NULL;
- return reference;
-}
-
-static cJSON_bool add_item_to_array(cJSON *array, cJSON *item)
-{
- cJSON *child = NULL;
-
- if ((item == NULL) || (array == NULL))
- {
- return false;
- }
-
- child = array->child;
-
- if (child == NULL)
- {
- /* list is empty, start new one */
- array->child = item;
- }
- else
- {
- /* append to the end */
- while (child->next)
- {
- child = child->next;
- }
- suffix_object(child, item);
- }
-
- return true;
-}
-
-/* Add item to array/object. */
-CJSON_PUBLIC(void) cJSON_AddItemToArray(cJSON *array, cJSON *item)
-{
- add_item_to_array(array, item);
-}
-
-#if defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 5))))
- #pragma GCC diagnostic push
-#endif
-#ifdef __GNUC__
-#pragma GCC diagnostic ignored "-Wcast-qual"
-#endif
-/* helper function to cast away const */
-static void* cast_away_const(const void* string)
-{
- return (void*)string;
-}
-#if defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 5))))
- #pragma GCC diagnostic pop
-#endif
-
-
-static cJSON_bool add_item_to_object(cJSON * const object, const char * const string, cJSON * const item, const internal_hooks * const hooks, const cJSON_bool constant_key)
-{
- char *new_key = NULL;
- int new_type = cJSON_Invalid;
-
- if ((object == NULL) || (string == NULL) || (item == NULL))
- {
- return false;
- }
-
- if (constant_key)
- {
- new_key = (char*)cast_away_const(string);
- new_type = item->type | cJSON_StringIsConst;
- }
- else
- {
- new_key = (char*)cJSON_strdup((const unsigned char*)string, hooks);
- if (new_key == NULL)
- {
- return false;
- }
-
- new_type = item->type & ~cJSON_StringIsConst;
- }
-
- if (!(item->type & cJSON_StringIsConst) && (item->string != NULL))
- {
- hooks->deallocate(item->string);
- }
-
- item->string = new_key;
- item->type = new_type;
-
- return add_item_to_array(object, item);
-}
-
-CJSON_PUBLIC(void) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item)
-{
- add_item_to_object(object, string, item, &global_hooks, false);
-}
-
-/* Add an item to an object with constant string as key */
-CJSON_PUBLIC(void) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item)
-{
- add_item_to_object(object, string, item, &global_hooks, true);
-}
-
-CJSON_PUBLIC(void) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item)
-{
- if (array == NULL)
- {
- return;
- }
-
- add_item_to_array(array, create_reference(item, &global_hooks));
-}
-
-CJSON_PUBLIC(void) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item)
-{
- if ((object == NULL) || (string == NULL))
- {
- return;
- }
-
- add_item_to_object(object, string, create_reference(item, &global_hooks), &global_hooks, false);
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name)
-{
- cJSON *null = cJSON_CreateNull();
- if (add_item_to_object(object, name, null, &global_hooks, false))
- {
- return null;
- }
-
- cJSON_Delete(null);
- return NULL;
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddTrueToObject(cJSON * const object, const char * const name)
-{
- cJSON *true_item = cJSON_CreateTrue();
- if (add_item_to_object(object, name, true_item, &global_hooks, false))
- {
- return true_item;
- }
-
- cJSON_Delete(true_item);
- return NULL;
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddFalseToObject(cJSON * const object, const char * const name)
-{
- cJSON *false_item = cJSON_CreateFalse();
- if (add_item_to_object(object, name, false_item, &global_hooks, false))
- {
- return false_item;
- }
-
- cJSON_Delete(false_item);
- return NULL;
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddBoolToObject(cJSON * const object, const char * const name, const cJSON_bool boolean)
-{
- cJSON *bool_item = cJSON_CreateBool(boolean);
- if (add_item_to_object(object, name, bool_item, &global_hooks, false))
- {
- return bool_item;
- }
-
- cJSON_Delete(bool_item);
- return NULL;
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number)
-{
- cJSON *number_item = cJSON_CreateNumber(number);
- if (add_item_to_object(object, name, number_item, &global_hooks, false))
- {
- return number_item;
- }
-
- cJSON_Delete(number_item);
- return NULL;
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string)
-{
- cJSON *string_item = cJSON_CreateString(string);
- if (add_item_to_object(object, name, string_item, &global_hooks, false))
- {
- return string_item;
- }
-
- cJSON_Delete(string_item);
- return NULL;
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddRawToObject(cJSON * const object, const char * const name, const char * const raw)
-{
- cJSON *raw_item = cJSON_CreateRaw(raw);
- if (add_item_to_object(object, name, raw_item, &global_hooks, false))
- {
- return raw_item;
- }
-
- cJSON_Delete(raw_item);
- return NULL;
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddObjectToObject(cJSON * const object, const char * const name)
-{
- cJSON *object_item = cJSON_CreateObject();
- if (add_item_to_object(object, name, object_item, &global_hooks, false))
- {
- return object_item;
- }
-
- cJSON_Delete(object_item);
- return NULL;
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddArrayToObject(cJSON * const object, const char * const name)
-{
- cJSON *array = cJSON_CreateArray();
- if (add_item_to_object(object, name, array, &global_hooks, false))
- {
- return array;
- }
-
- cJSON_Delete(array);
- return NULL;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item)
-{
- if ((parent == NULL) || (item == NULL))
- {
- return NULL;
- }
-
- if (item->prev != NULL)
- {
- /* not the first element */
- item->prev->next = item->next;
- }
- if (item->next != NULL)
- {
- /* not the last element */
- item->next->prev = item->prev;
- }
-
- if (item == parent->child)
- {
- /* first element */
- parent->child = item->next;
- }
- /* make sure the detached item doesn't point anywhere anymore */
- item->prev = NULL;
- item->next = NULL;
-
- return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which)
-{
- if (which < 0)
- {
- return NULL;
- }
-
- return cJSON_DetachItemViaPointer(array, get_array_item(array, (size_t)which));
-}
-
-CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which)
-{
- cJSON_Delete(cJSON_DetachItemFromArray(array, which));
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string)
-{
- cJSON *to_detach = cJSON_GetObjectItem(object, string);
-
- return cJSON_DetachItemViaPointer(object, to_detach);
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string)
-{
- cJSON *to_detach = cJSON_GetObjectItemCaseSensitive(object, string);
-
- return cJSON_DetachItemViaPointer(object, to_detach);
-}
-
-CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string)
-{
- cJSON_Delete(cJSON_DetachItemFromObject(object, string));
-}
-
-CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string)
-{
- cJSON_Delete(cJSON_DetachItemFromObjectCaseSensitive(object, string));
-}
-
-/* Replace array/object items with new ones. */
-CJSON_PUBLIC(void) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem)
-{
- cJSON *after_inserted = NULL;
-
- if (which < 0)
- {
- return;
- }
-
- after_inserted = get_array_item(array, (size_t)which);
- if (after_inserted == NULL)
- {
- add_item_to_array(array, newitem);
- return;
- }
-
- newitem->next = after_inserted;
- newitem->prev = after_inserted->prev;
- after_inserted->prev = newitem;
- if (after_inserted == array->child)
- {
- array->child = newitem;
- }
- else
- {
- newitem->prev->next = newitem;
- }
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement)
-{
- if ((parent == NULL) || (replacement == NULL) || (item == NULL))
- {
- return false;
- }
-
- if (replacement == item)
- {
- return true;
- }
-
- replacement->next = item->next;
- replacement->prev = item->prev;
-
- if (replacement->next != NULL)
- {
- replacement->next->prev = replacement;
- }
- if (replacement->prev != NULL)
- {
- replacement->prev->next = replacement;
- }
- if (parent->child == item)
- {
- parent->child = replacement;
- }
-
- item->next = NULL;
- item->prev = NULL;
- cJSON_Delete(item);
-
- return true;
-}
-
-CJSON_PUBLIC(void) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem)
-{
- if (which < 0)
- {
- return;
- }
-
- cJSON_ReplaceItemViaPointer(array, get_array_item(array, (size_t)which), newitem);
-}
-
-static cJSON_bool replace_item_in_object(cJSON *object, const char *string, cJSON *replacement, cJSON_bool case_sensitive)
-{
- if ((replacement == NULL) || (string == NULL))
- {
- return false;
- }
-
- /* replace the name in the replacement */
- if (!(replacement->type & cJSON_StringIsConst) && (replacement->string != NULL))
- {
- cJSON_free(replacement->string);
- }
- replacement->string = (char*)cJSON_strdup((const unsigned char*)string, &global_hooks);
- replacement->type &= ~cJSON_StringIsConst;
-
- cJSON_ReplaceItemViaPointer(object, get_object_item(object, string, case_sensitive), replacement);
-
- return true;
-}
-
-CJSON_PUBLIC(void) cJSON_ReplaceItemInObject(cJSON *object, const char *string, cJSON *newitem)
-{
- replace_item_in_object(object, string, newitem, false);
-}
-
-CJSON_PUBLIC(void) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object, const char *string, cJSON *newitem)
-{
- replace_item_in_object(object, string, newitem, true);
-}
-
-/* Create basic types: */
-CJSON_PUBLIC(cJSON *) cJSON_CreateNull(void)
-{
- cJSON *item = cJSON_New_Item(&global_hooks);
- if(item)
- {
- item->type = cJSON_NULL;
- }
-
- return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateTrue(void)
-{
- cJSON *item = cJSON_New_Item(&global_hooks);
- if(item)
- {
- item->type = cJSON_True;
- }
-
- return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void)
-{
- cJSON *item = cJSON_New_Item(&global_hooks);
- if(item)
- {
- item->type = cJSON_False;
- }
-
- return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool b)
-{
- cJSON *item = cJSON_New_Item(&global_hooks);
- if(item)
- {
- item->type = b ? cJSON_True : cJSON_False;
- }
-
- return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num)
-{
- cJSON *item = cJSON_New_Item(&global_hooks);
- if(item)
- {
- item->type = cJSON_Number;
- item->valuedouble = num;
-
- /* use saturation in case of overflow */
- if (num >= INT_MAX)
- {
- item->valueint = INT_MAX;
- }
- else if (num <= (double)INT_MIN)
- {
- item->valueint = INT_MIN;
- }
- else
- {
- item->valueint = (int)num;
- }
- }
-
- return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string)
-{
- cJSON *item = cJSON_New_Item(&global_hooks);
- if(item)
- {
- item->type = cJSON_String;
- item->valuestring = (char*)cJSON_strdup((const unsigned char*)string, &global_hooks);
- if(!item->valuestring)
- {
- cJSON_Delete(item);
- return NULL;
- }
- }
-
- return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string)
-{
- cJSON *item = cJSON_New_Item(&global_hooks);
- if (item != NULL)
- {
- item->type = cJSON_String | cJSON_IsReference;
- item->valuestring = (char*)cast_away_const(string);
- }
-
- return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child)
-{
- cJSON *item = cJSON_New_Item(&global_hooks);
- if (item != NULL) {
- item->type = cJSON_Object | cJSON_IsReference;
- item->child = (cJSON*)cast_away_const(child);
- }
-
- return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child) {
- cJSON *item = cJSON_New_Item(&global_hooks);
- if (item != NULL) {
- item->type = cJSON_Array | cJSON_IsReference;
- item->child = (cJSON*)cast_away_const(child);
- }
-
- return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateRaw(const char *raw)
-{
- cJSON *item = cJSON_New_Item(&global_hooks);
- if(item)
- {
- item->type = cJSON_Raw;
- item->valuestring = (char*)cJSON_strdup((const unsigned char*)raw, &global_hooks);
- if(!item->valuestring)
- {
- cJSON_Delete(item);
- return NULL;
- }
- }
-
- return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void)
-{
- cJSON *item = cJSON_New_Item(&global_hooks);
- if(item)
- {
- item->type=cJSON_Array;
- }
-
- return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void)
-{
- cJSON *item = cJSON_New_Item(&global_hooks);
- if (item)
- {
- item->type = cJSON_Object;
- }
-
- return item;
-}
-
-/* Create Arrays: */
-CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count)
-{
- size_t i = 0;
- cJSON *n = NULL;
- cJSON *p = NULL;
- cJSON *a = NULL;
-
- if ((count < 0) || (numbers == NULL))
- {
- return NULL;
- }
-
- a = cJSON_CreateArray();
- for(i = 0; a && (i < (size_t)count); i++)
- {
- n = cJSON_CreateNumber(numbers[i]);
- if (!n)
- {
- cJSON_Delete(a);
- return NULL;
- }
- if(!i)
- {
- a->child = n;
- }
- else
- {
- suffix_object(p, n);
- }
- p = n;
- }
-
- return a;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count)
-{
- size_t i = 0;
- cJSON *n = NULL;
- cJSON *p = NULL;
- cJSON *a = NULL;
-
- if ((count < 0) || (numbers == NULL))
- {
- return NULL;
- }
-
- a = cJSON_CreateArray();
-
- for(i = 0; a && (i < (size_t)count); i++)
- {
- n = cJSON_CreateNumber((double)numbers[i]);
- if(!n)
- {
- cJSON_Delete(a);
- return NULL;
- }
- if(!i)
- {
- a->child = n;
- }
- else
- {
- suffix_object(p, n);
- }
- p = n;
- }
-
- return a;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count)
-{
- size_t i = 0;
- cJSON *n = NULL;
- cJSON *p = NULL;
- cJSON *a = NULL;
-
- if ((count < 0) || (numbers == NULL))
- {
- return NULL;
- }
-
- a = cJSON_CreateArray();
-
- for(i = 0;a && (i < (size_t)count); i++)
- {
- n = cJSON_CreateNumber(numbers[i]);
- if(!n)
- {
- cJSON_Delete(a);
- return NULL;
- }
- if(!i)
- {
- a->child = n;
- }
- else
- {
- suffix_object(p, n);
- }
- p = n;
- }
-
- return a;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char **strings, int count)
-{
- size_t i = 0;
- cJSON *n = NULL;
- cJSON *p = NULL;
- cJSON *a = NULL;
-
- if ((count < 0) || (strings == NULL))
- {
- return NULL;
- }
-
- a = cJSON_CreateArray();
-
- for (i = 0; a && (i < (size_t)count); i++)
- {
- n = cJSON_CreateString(strings[i]);
- if(!n)
- {
- cJSON_Delete(a);
- return NULL;
- }
- if(!i)
- {
- a->child = n;
- }
- else
- {
- suffix_object(p,n);
- }
- p = n;
- }
-
- return a;
-}
-
-/* Duplication */
-CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse)
-{
- cJSON *newitem = NULL;
- cJSON *child = NULL;
- cJSON *next = NULL;
- cJSON *newchild = NULL;
-
- /* Bail on bad ptr */
- if (!item)
- {
- goto fail;
- }
- /* Create new item */
- newitem = cJSON_New_Item(&global_hooks);
- if (!newitem)
- {
- goto fail;
- }
- /* Copy over all vars */
- newitem->type = item->type & (~cJSON_IsReference);
- newitem->valueint = item->valueint;
- newitem->valuedouble = item->valuedouble;
- if (item->valuestring)
- {
- newitem->valuestring = (char*)cJSON_strdup((unsigned char*)item->valuestring, &global_hooks);
- if (!newitem->valuestring)
- {
- goto fail;
- }
- }
- if (item->string)
- {
- newitem->string = (item->type&cJSON_StringIsConst) ? item->string : (char*)cJSON_strdup((unsigned char*)item->string, &global_hooks);
- if (!newitem->string)
- {
- goto fail;
- }
- }
- /* If non-recursive, then we're done! */
- if (!recurse)
- {
- return newitem;
- }
- /* Walk the ->next chain for the child. */
- child = item->child;
- while (child != NULL)
- {
- newchild = cJSON_Duplicate(child, true); /* Duplicate (with recurse) each item in the ->next chain */
- if (!newchild)
- {
- goto fail;
- }
- if (next != NULL)
- {
- /* If newitem->child already set, then crosswire ->prev and ->next and move on */
- next->next = newchild;
- newchild->prev = next;
- next = newchild;
- }
- else
- {
- /* Set newitem->child and move to it */
- newitem->child = newchild;
- next = newchild;
- }
- child = child->next;
- }
-
- return newitem;
-
-fail:
- if (newitem != NULL)
- {
- cJSON_Delete(newitem);
- }
-
- return NULL;
-}
-
-CJSON_PUBLIC(void) cJSON_Minify(char *json)
-{
- unsigned char *into = (unsigned char*)json;
-
- if (json == NULL)
- {
- return;
- }
-
- while (*json)
- {
- if (*json == ' ')
- {
- json++;
- }
- else if (*json == '\t')
- {
- /* Whitespace characters. */
- json++;
- }
- else if (*json == '\r')
- {
- json++;
- }
- else if (*json=='\n')
- {
- json++;
- }
- else if ((*json == '/') && (json[1] == '/'))
- {
- /* double-slash comments, to end of line. */
- while (*json && (*json != '\n'))
- {
- json++;
- }
- }
- else if ((*json == '/') && (json[1] == '*'))
- {
- /* multiline comments. */
- while (*json && !((*json == '*') && (json[1] == '/')))
- {
- json++;
- }
- json += 2;
- }
- else if (*json == '\"')
- {
- /* string literals, which are \" sensitive. */
- *into++ = (unsigned char)*json++;
- while (*json && (*json != '\"'))
- {
- if (*json == '\\')
- {
- *into++ = (unsigned char)*json++;
- }
- *into++ = (unsigned char)*json++;
- }
- *into++ = (unsigned char)*json++;
- }
- else
- {
- /* All other characters. */
- *into++ = (unsigned char)*json++;
- }
- }
-
- /* and null-terminate. */
- *into = '\0';
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item)
-{
- if (item == NULL)
- {
- return false;
- }
-
- return (item->type & 0xFF) == cJSON_Invalid;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsFalse(const cJSON * const item)
-{
- if (item == NULL)
- {
- return false;
- }
-
- return (item->type & 0xFF) == cJSON_False;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsTrue(const cJSON * const item)
-{
- if (item == NULL)
- {
- return false;
- }
-
- return (item->type & 0xff) == cJSON_True;
-}
-
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsBool(const cJSON * const item)
-{
- if (item == NULL)
- {
- return false;
- }
-
- return (item->type & (cJSON_True | cJSON_False)) != 0;
-}
-CJSON_PUBLIC(cJSON_bool) cJSON_IsNull(const cJSON * const item)
-{
- if (item == NULL)
- {
- return false;
- }
-
- return (item->type & 0xFF) == cJSON_NULL;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsNumber(const cJSON * const item)
-{
- if (item == NULL)
- {
- return false;
- }
-
- return (item->type & 0xFF) == cJSON_Number;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsString(const cJSON * const item)
-{
- if (item == NULL)
- {
- return false;
- }
-
- return (item->type & 0xFF) == cJSON_String;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsArray(const cJSON * const item)
-{
- if (item == NULL)
- {
- return false;
- }
-
- return (item->type & 0xFF) == cJSON_Array;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsObject(const cJSON * const item)
-{
- if (item == NULL)
- {
- return false;
- }
-
- return (item->type & 0xFF) == cJSON_Object;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsRaw(const cJSON * const item)
-{
- if (item == NULL)
- {
- return false;
- }
-
- return (item->type & 0xFF) == cJSON_Raw;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive)
-{
- if ((a == NULL) || (b == NULL) || ((a->type & 0xFF) != (b->type & 0xFF)) || cJSON_IsInvalid(a))
- {
- return false;
- }
-
- /* check if type is valid */
- switch (a->type & 0xFF)
- {
- case cJSON_False:
- case cJSON_True:
- case cJSON_NULL:
- case cJSON_Number:
- case cJSON_String:
- case cJSON_Raw:
- case cJSON_Array:
- case cJSON_Object:
- break;
-
- default:
- return false;
- }
-
- /* identical objects are equal */
- if (a == b)
- {
- return true;
- }
-
- switch (a->type & 0xFF)
- {
- /* in these cases and equal type is enough */
- case cJSON_False:
- case cJSON_True:
- case cJSON_NULL:
- return true;
-
- case cJSON_Number:
- if (a->valuedouble == b->valuedouble)
- {
- return true;
- }
- return false;
-
- case cJSON_String:
- case cJSON_Raw:
- if ((a->valuestring == NULL) || (b->valuestring == NULL))
- {
- return false;
- }
- if (strcmp(a->valuestring, b->valuestring) == 0)
- {
- return true;
- }
-
- return false;
-
- case cJSON_Array:
- {
- cJSON *a_element = a->child;
- cJSON *b_element = b->child;
-
- for (; (a_element != NULL) && (b_element != NULL);)
- {
- if (!cJSON_Compare(a_element, b_element, case_sensitive))
- {
- return false;
- }
-
- a_element = a_element->next;
- b_element = b_element->next;
- }
-
- /* one of the arrays is longer than the other */
- if (a_element != b_element) {
- return false;
- }
-
- return true;
- }
-
- case cJSON_Object:
- {
- cJSON *a_element = NULL;
- cJSON *b_element = NULL;
- cJSON_ArrayForEach(a_element, a)
- {
- /* TODO This has O(n^2) runtime, which is horrible! */
- b_element = get_object_item(b, a_element->string, case_sensitive);
- if (b_element == NULL)
- {
- return false;
- }
-
- if (!cJSON_Compare(a_element, b_element, case_sensitive))
- {
- return false;
- }
- }
-
- /* doing this twice, once on a and b to prevent true comparison if a subset of b
- * TODO: Do this the proper way, this is just a fix for now */
- cJSON_ArrayForEach(b_element, b)
- {
- a_element = get_object_item(a, b_element->string, case_sensitive);
- if (a_element == NULL)
- {
- return false;
- }
-
- if (!cJSON_Compare(b_element, a_element, case_sensitive))
- {
- return false;
- }
- }
-
- return true;
- }
-
- default:
- return false;
- }
-}
-
-CJSON_PUBLIC(void *) cJSON_malloc(size_t size)
-{
- return global_hooks.allocate(size);
-}
-
-CJSON_PUBLIC(void) cJSON_free(void *object)
-{
- global_hooks.deallocate(object);
-}
diff --git a/app/bin/cJSON.h b/app/bin/cJSON.h
deleted file mode 100755
index 291d694..0000000
--- a/app/bin/cJSON.h
+++ /dev/null
@@ -1,285 +0,0 @@
-/**
- Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-*/
-
-#ifndef cJSON__h
-#define cJSON__h
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#if !defined(__WINDOWS__) && (defined(WIN32) || defined(WIN64) || defined(_MSC_VER) || defined(_WIN32))
-#define __WINDOWS__
-#endif
-
-#ifdef __WINDOWS__
-
-/* When compiling for windows, we specify a specific calling convention to avoid issues where we are being called from a project with a different default calling convention. For windows you have 3 define options:
-
-CJSON_HIDE_SYMBOLS - Define this in the case where you don't want to ever dllexport symbols
-CJSON_EXPORT_SYMBOLS - Define this on library build when you want to dllexport symbols (default)
-CJSON_IMPORT_SYMBOLS - Define this if you want to dllimport symbol
-
-For *nix builds that support visibility attribute, you can define similar behavior by
-
-setting default visibility to hidden by adding
--fvisibility=hidden (for gcc)
-or
--xldscope=hidden (for sun cc)
-to CFLAGS
-
-then using the CJSON_API_VISIBILITY flag to "export" the same symbols the way CJSON_EXPORT_SYMBOLS does
-
-*/
-
-#define CJSON_CDECL __cdecl
-#define CJSON_STDCALL __stdcall
-
-/* export symbols by default, this is necessary for copy pasting the C and header file */
-#if !defined(CJSON_HIDE_SYMBOLS) && !defined(CJSON_IMPORT_SYMBOLS) && !defined(CJSON_EXPORT_SYMBOLS)
-#define CJSON_EXPORT_SYMBOLS
-#endif
-
-#if defined(CJSON_HIDE_SYMBOLS)
-#define CJSON_PUBLIC(type) type CJSON_STDCALL
-#elif defined(CJSON_EXPORT_SYMBOLS)
-#define CJSON_PUBLIC(type) __declspec(dllexport) type CJSON_STDCALL
-#elif defined(CJSON_IMPORT_SYMBOLS)
-#define CJSON_PUBLIC(type) __declspec(dllimport) type CJSON_STDCALL
-#endif
-#else /* !__WINDOWS__ */
-#define CJSON_CDECL
-#define CJSON_STDCALL
-
-#if (defined(__GNUC__) || defined(__SUNPRO_CC) || defined (__SUNPRO_C)) && defined(CJSON_API_VISIBILITY)
-#define CJSON_PUBLIC(type) __attribute__((visibility("default"))) type
-#else
-#define CJSON_PUBLIC(type) type
-#endif
-#endif
-
-/* project version */
-#define CJSON_VERSION_MAJOR 1
-#define CJSON_VERSION_MINOR 7
-#define CJSON_VERSION_PATCH 8
-
-#include <stddef.h>
-
-/* cJSON Types: */
-#define cJSON_Invalid (0)
-#define cJSON_False (1 << 0)
-#define cJSON_True (1 << 1)
-#define cJSON_NULL (1 << 2)
-#define cJSON_Number (1 << 3)
-#define cJSON_String (1 << 4)
-#define cJSON_Array (1 << 5)
-#define cJSON_Object (1 << 6)
-#define cJSON_Raw (1 << 7) /* raw json */
-
-#define cJSON_IsReference 256
-#define cJSON_StringIsConst 512
-
-/* The cJSON structure: */
-typedef struct cJSON
-{
- /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */
- struct cJSON *next;
- struct cJSON *prev;
- /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */
- struct cJSON *child;
-
- /* The type of the item, as above. */
- int type;
-
- /* The item's string, if type==cJSON_String and type == cJSON_Raw */
- char *valuestring;
- /* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */
- int valueint;
- /* The item's number, if type==cJSON_Number */
- double valuedouble;
-
- /* The item's name string, if this item is the child of, or is in the list of subitems of an object. */
- char *string;
-} cJSON;
-
-typedef struct cJSON_Hooks
-{
- /* malloc/free are CDECL on Windows regardless of the default calling convention of the compiler, so ensure the hooks allow passing those functions directly. */
- void *(CJSON_CDECL *malloc_fn)(size_t sz);
- void (CJSON_CDECL *free_fn)(void *ptr);
-} cJSON_Hooks;
-
-typedef int cJSON_bool;
-
-/* Limits how deeply nested arrays/objects can be before cJSON rejects to parse them.
- * This is to prevent stack overflows. */
-#ifndef CJSON_NESTING_LIMIT
-#define CJSON_NESTING_LIMIT 1000
-#endif
-
-/* returns the version of cJSON as a string */
-CJSON_PUBLIC(const char*) cJSON_Version(void);
-
-/* Supply malloc, realloc and free functions to cJSON */
-CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks* hooks);
-
-/* Memory Management: the caller is always responsible to free the results from all variants of cJSON_Parse (with cJSON_Delete) and cJSON_Print (with stdlib free, cJSON_Hooks.free_fn, or cJSON_free as appropriate). The exception is cJSON_PrintPreallocated, where the caller has full responsibility of the buffer. */
-/* Supply a block of JSON, and this returns a cJSON object you can interrogate. */
-CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value);
-/* ParseWithOpts allows you to require (and check) that the JSON is null terminated, and to retrieve the pointer to the final byte parsed. */
-/* If you supply a ptr in return_parse_end and parsing fails, then return_parse_end will contain a pointer to the error so will match cJSON_GetErrorPtr(). */
-CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated);
-
-/* Render a cJSON entity to text for transfer/storage. */
-CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item);
-/* Render a cJSON entity to text for transfer/storage without any formatting. */
-CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item);
-/* Render a cJSON entity to text using a buffered strategy. prebuffer is a guess at the final size. guessing well reduces reallocation. fmt=0 gives unformatted, =1 gives formatted */
-CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt);
-/* Render a cJSON entity to text using a buffer already allocated in memory with given length. Returns 1 on success and 0 on failure. */
-/* NOTE: cJSON is not always 100% accurate in estimating how much memory it will use, so to be safe allocate 5 bytes more than you actually need */
-CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format);
-/* Delete a cJSON entity and all subentities. */
-CJSON_PUBLIC(void) cJSON_Delete(cJSON *c);
-
-/* Returns the number of items in an array (or object). */
-CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array);
-/* Retrieve item number "index" from array "array". Returns NULL if unsuccessful. */
-CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index);
-/* Get item "string" from object. Case insensitive. */
-CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string);
-CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive(const cJSON * const object, const char * const string);
-CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *string);
-/* For analysing failed parses. This returns a pointer to the parse error. You'll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */
-CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void);
-
-/* Check if the item is a string and return its valuestring */
-CJSON_PUBLIC(char *) cJSON_GetStringValue(cJSON *item);
-
-/* These functions check the type of an item */
-CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsFalse(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsTrue(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsBool(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsNull(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsNumber(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsString(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsArray(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsObject(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsRaw(const cJSON * const item);
-
-/* These calls create a cJSON item of the appropriate type. */
-CJSON_PUBLIC(cJSON *) cJSON_CreateNull(void);
-CJSON_PUBLIC(cJSON *) cJSON_CreateTrue(void);
-CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void);
-CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool boolean);
-CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num);
-CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string);
-/* raw json */
-CJSON_PUBLIC(cJSON *) cJSON_CreateRaw(const char *raw);
-CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void);
-CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void);
-
-/* Create a string where valuestring references a string so
- * it will not be freed by cJSON_Delete */
-CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string);
-/* Create an object/arrray that only references it's elements so
- * they will not be freed by cJSON_Delete */
-CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child);
-CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child);
-
-/* These utilities create an Array of count items. */
-CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count);
-CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count);
-CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count);
-CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char **strings, int count);
-
-/* Append item to the specified array/object. */
-CJSON_PUBLIC(void) cJSON_AddItemToArray(cJSON *array, cJSON *item);
-CJSON_PUBLIC(void) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);
-/* Use this when string is definitely const (i.e. a literal, or as good as), and will definitely survive the cJSON object.
- * WARNING: When this function was used, make sure to always check that (item->type & cJSON_StringIsConst) is zero before
- * writing to `item->string` */
-CJSON_PUBLIC(void) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item);
-/* Append reference to item to the specified array/object. Use this when you want to add an existing cJSON to a new cJSON, but don't want to corrupt your existing cJSON. */
-CJSON_PUBLIC(void) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
-CJSON_PUBLIC(void) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item);
-
-/* Remove/Detatch items from Arrays/Objects. */
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item);
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which);
-CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which);
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string);
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string);
-CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string);
-CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string);
-
-/* Update array items. */
-CJSON_PUBLIC(void) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem); /* Shifts pre-existing items to the right. */
-CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement);
-CJSON_PUBLIC(void) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem);
-CJSON_PUBLIC(void) cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);
-CJSON_PUBLIC(void) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object,const char *string,cJSON *newitem);
-
-/* Duplicate a cJSON item */
-CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse);
-/* Duplicate will create a new, identical cJSON item to the one you pass, in new memory that will
-need to be released. With recurse!=0, it will duplicate any children connected to the item.
-The item->next and ->prev pointers are always zero on return from Duplicate. */
-/* Recursively compare two cJSON items for equality. If either a or b is NULL or invalid, they will be considered unequal.
- * case_sensitive determines if object keys are treated case sensitive (1) or case insensitive (0) */
-CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive);
-
-
-CJSON_PUBLIC(void) cJSON_Minify(char *json);
-
-/* Helper functions for creating and adding items to an object at the same time.
- * They return the added item or NULL on failure. */
-CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name);
-CJSON_PUBLIC(cJSON*) cJSON_AddTrueToObject(cJSON * const object, const char * const name);
-CJSON_PUBLIC(cJSON*) cJSON_AddFalseToObject(cJSON * const object, const char * const name);
-CJSON_PUBLIC(cJSON*) cJSON_AddBoolToObject(cJSON * const object, const char * const name, const cJSON_bool boolean);
-CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number);
-CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string);
-CJSON_PUBLIC(cJSON*) cJSON_AddRawToObject(cJSON * const object, const char * const name, const char * const raw);
-CJSON_PUBLIC(cJSON*) cJSON_AddObjectToObject(cJSON * const object, const char * const name);
-CJSON_PUBLIC(cJSON*) cJSON_AddArrayToObject(cJSON * const object, const char * const name);
-
-/* When assigning an integer value, it needs to be propagated to valuedouble too. */
-#define cJSON_SetIntValue(object, number) ((object) ? (object)->valueint = (object)->valuedouble = (number) : (number))
-/* helper for the cJSON_SetNumberValue macro */
-CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number);
-#define cJSON_SetNumberValue(object, number) ((object != NULL) ? cJSON_SetNumberHelper(object, (double)number) : (number))
-
-/* Macro for iterating over an array or object */
-#define cJSON_ArrayForEach(element, array) for(element = (array != NULL) ? (array)->child : NULL; element != NULL; element = element->next)
-
-/* malloc/free objects using the malloc/free functions that have been set with cJSON_InitHooks */
-CJSON_PUBLIC(void *) cJSON_malloc(size_t size);
-CJSON_PUBLIC(void) cJSON_free(void *object);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/app/bin/cbezier.c b/app/bin/cbezier.c
index 22c95ba..1e09e5d 100644
--- a/app/bin/cbezier.c
+++ b/app/bin/cbezier.c
@@ -1,45 +1,45 @@
/** \file cbezier.c
* Bezier Command. Draw or modify a Bezier (Track or Line).
*/
- /* XTrkCad - Model Railroad CAD
- *
- * Cubic Bezier curves have a definitional representation as an a set of four points.
- * The first and fourth are the end points, while the middle two are control points.
- * The control points positions define the angle at the ends and by their relative positions the overall
- * curvature. This representation is a familiar approach for those who know drawing programs such as Adobe
- * Illustrator or CorelDraw.
- *
- * In XTrackCAD, the Bezier form is also represented and drawn as a set of
- * joined circular arcs that approximate the Bezier form within a small tolerance. This is because
- * many of the operations we need to do are either computationally difficult or
- * impossible using the Bezier equations. For example, creating a parallel Bezier
- * which is necessary to draw a track with two lines or sleepers has no easy, stable solution.
- * But the program is already able to do these tasks for straight lines and curves.
- *
- * Note that every time we change the Bezier points we have to recalculate the arc approximation,
- * but that means that the majority of the time we are using the simpler approximation.
- *
- * We do not allow Bezier curves that have loops or cusps as they make no sense for tracks and
- * can easily be approximated for lines with multiple unaligned Bezier curves.
- *
- * This program borrows from particular ideas about converting Bezier curves that Pomax placed into
- * open source. The originals in Javascript can be found at github.com/Pomax.
- * The web pages that explain many other techniques are located at https://pomax.github.io/bezierinfo
- *
- * 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.
- */
+/* XTrkCad - Model Railroad CAD
+*
+* Cubic Bezier curves have a definitional representation as an a set of four points.
+* The first and fourth are the end points, while the middle two are control points.
+* The control points positions define the angle at the ends and by their relative positions the overall
+* curvature. This representation is a familiar approach for those who know drawing programs such as Adobe
+* Illustrator or CorelDraw.
+*
+* In XTrackCAD, the Bezier form is also represented and drawn as a set of
+* joined circular arcs that approximate the Bezier form within a small tolerance. This is because
+* many of the operations we need to do are either computationally difficult or
+* impossible using the Bezier equations. For example, creating a parallel Bezier
+* which is necessary to draw a track with two lines or sleepers has no easy, stable solution.
+* But the program is already able to do these tasks for straight lines and curves.
+*
+* Note that every time we change the Bezier points we have to recalculate the arc approximation,
+* but that means that the majority of the time we are using the simpler approximation.
+*
+* We do not allow Bezier curves that have loops or cusps as they make no sense for tracks and
+* can easily be approximated for lines with multiple unaligned Bezier curves.
+*
+* This program borrows from particular ideas about converting Bezier curves that Pomax placed into
+* open source. The originals in Javascript can be found at github.com/Pomax.
+* The web pages that explain many other techniques are located at https://pomax.github.io/bezierinfo
+*
+* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*/
#include "common.h"
@@ -59,49 +59,47 @@
#include "cundo.h"
#include "compound.h"
-extern drawCmd_t tempD;
/*
* STATE INFO
*/
enum Bezier_States { NONE,
- POS_1,
- CONTROL_ARM_1,
- POS_2,
- CONTROL_ARM_2,
- PICK_POINT,
- POINT_PICKED,
- TRACK_SELECTED };
+ POS_1,
+ CONTROL_ARM_1,
+ POS_2,
+ CONTROL_ARM_2,
+ PICK_POINT,
+ POINT_PICKED,
+ TRACK_SELECTED
+ };
typedef struct {
- curveData_t curveData;
- double start;
- double end;
- coOrd pos0;
- coOrd pos1;
- } bCurveData_t;
+ curveData_t curveData;
+ double start;
+ double end;
+ coOrd pos0;
+ coOrd pos1;
+} bCurveData_t;
static struct {
- enum Bezier_States state;
- coOrd pos[4];
- int selectPoint;
- wDrawColor color;
- DIST_T width;
- track_p trk[2];
- EPINX_T ep[2];
- dynArr_t crvSegs_da;
- int crvSegs_da_cnt;
- trkSeg_t cp1Segs_da[4];
- int cp1Segs_da_cnt;
- trkSeg_t cp2Segs_da[4];
- int cp2Segs_da_cnt;
- BOOL_T unlocked;
- track_p selectTrack;
- BOOL_T track;
- DIST_T minRadius;
- DIST_T trackGauge;
- } Da;
+ enum Bezier_States state;
+ coOrd pos[4];
+ int selectPoint;
+ track_p trk[2];
+ EPINX_T ep[2];
+ dynArr_t crvSegs_da;
+ int crvSegs_da_cnt;
+ trkSeg_t cp1Segs_da[4];
+ int cp1Segs_da_cnt;
+ trkSeg_t cp2Segs_da[4];
+ int cp2Segs_da_cnt;
+ BOOL_T unlocked;
+ track_p selectTrack;
+ BOOL_T track;
+ DIST_T minRadius;
+ DIST_T trackGauge;
+} Da;
static dynArr_t anchors_da;
#define anchors(N) DYNARR_N(trkSeg_t,anchors_da,N)
@@ -114,46 +112,47 @@ static dynArr_t anchors_da;
* A red color indicates that this arm, end or control point is "active" as it was selected.
*/
int createControlArm(
- trkSeg_t sp[], //seg pointer for up to 3 trkSegs (ends and line)
- coOrd pos0, //end on curve
- coOrd pos1, // control point at other end of line
- BOOL_T track, // isTrack()? (otherwise Line)
- BOOL_T selectable, // can this arm be selected?
- BOOL_T cp_direction_locked, //isFixed to track
- int point_selected, //number of point 0, 1 or -1
- wDrawColor color //drawColorBlack or drawColorWhite
- )
+ trkSeg_t sp[], //seg pointer for up to 3 trkSegs (ends and line)
+ coOrd pos0, //end on curve
+ coOrd pos1, // control point at other end of line
+ BOOL_T track, // isTrack()? (otherwise Line)
+ BOOL_T selectable, // can this arm be selected?
+ BOOL_T cp_direction_locked, //isFixed to track
+ int point_selected, //number of point 0, 1 or -1
+ wDrawColor color //drawColorBlack or drawColorWhite
+)
{
- DIST_T d, w;
- d = tempD.scale*0.25;
- w = tempD.scale/tempD.dpi; /*double width*/
- sp[0].u.l.pos[0] = pos0;
- sp[0].u.l.pos[1] = pos1;
- sp[0].type = SEG_STRLIN;
- sp[0].width = w;
- sp[0].color = (point_selected>=0)?drawColorRed:drawColorBlack;
- int n = 0;
- if (selectable) {
- for (int j=0;j<2;j++) {
- if (j==0 && cp_direction_locked) continue; //Don't show select circle if end locked
- n++;
- sp[n].u.c.center = j==0?pos0:pos1;
- sp[n].u.c.radius = d/4;
- sp[n].width = w;
- sp[n].color = (j==point_selected)?drawColorRed:drawColorBlack;
- if (j==point_selected && cp_direction_locked) {
- sp[n].type = SEG_FILCRCL;
- } else {
- sp[n].type = SEG_CRVLIN;
- sp[n].u.c.a0 = 0.0;
- sp[n].u.c.a1 = 360.0;
- }
- }
- }
- return n+1;
+ DIST_T d, w;
+ d = tempD.scale*0.25;
+ w = tempD.scale/tempD.dpi; /*double width*/
+ sp[0].u.l.pos[0] = pos0;
+ sp[0].u.l.pos[1] = pos1;
+ sp[0].type = SEG_STRLIN;
+ sp[0].lineWidth = w;
+ sp[0].color = (point_selected>=0)?drawColorRed:drawColorBlack;
+ int n = 0;
+ if (selectable) {
+ for (int j=0; j<2; j++) {
+ if (j==0 && cp_direction_locked) { continue; } //Don't show select circle if end locked
+ n++;
+ sp[n].u.c.center = j==0?pos0:pos1;
+ sp[n].u.c.radius = d/4;
+ sp[n].lineWidth = w;
+ sp[n].color = (j==point_selected)?drawColorRed:drawColorBlack;
+ if (j==point_selected && cp_direction_locked) {
+ sp[n].type = SEG_FILCRCL;
+ } else {
+ sp[n].type = SEG_CRVLIN;
+ sp[n].u.c.a0 = 0.0;
+ sp[n].u.c.a1 = 360.0;
+ }
+ }
+ }
+ return n+1;
}
-coOrd getPoint(coOrd pos[4], double s) {
+coOrd getPoint(coOrd pos[4], double s)
+{
double mt = 1-s;
double a = mt*mt*mt;
double b = mt*mt*s*3;
@@ -172,48 +171,53 @@ coOrd getPoint(coOrd pos[4], double s) {
* than 0.5 pixels - that will mean it is not a good fit.
*
*/
-double BezError(coOrd pos[4], coOrd center, coOrd start_point, double start, double end) {
+double BezError(coOrd pos[4], coOrd center, coOrd start_point, double start,
+ double end)
+{
double quarter = (end - start) / 4; // take point at 1/4 and 3/4 and check
coOrd c1 = getPoint(pos, start + quarter);
coOrd c2 = getPoint(pos, end - quarter);
double ref = FindDistance(center, start_point); //radius
double d1 = FindDistance(center, c1); // distance to quarter
double d2 = FindDistance(center, c2); // distance to three quarters
- return fabs(d1-ref) + fabs(d2-ref); //total error at quarter points
+ return fabs(d1-ref) + fabs(d2
+ -ref); //total error at quarter points
};
/*
* Get distance between a point and a line segment
*/
-double DistanceToLineSegment(coOrd p, coOrd l1, coOrd l2) {
+double DistanceToLineSegment(coOrd p, coOrd l1, coOrd l2)
+{
double A = p.x - l1.x;
- double B = p.y - l1.y;
- double C = l2.x - l1.x;
- double D = l2.y - l1.y;
-
- double dot = A * C + B * D;
- double len_sq = C * C + D * D;
- double param = -1;
- if (len_sq != 0) //non 0 length line
- param = dot / len_sq;
-
- double xx, yy;
-
- if (param < 0) { // zero length line or beyond end use point 1
- xx = l1.x;
- yy = l1.y;
- } else if (param > 1) { // beyond point 2 end of line segment
- xx = l2.x;
- yy = l2.y;
- } else { // In the middle
- xx = l1.x + param * C;
- yy = l1.y + param * D;
- }
-
- double dx = p.x - xx; //distance to perpendicular (or end point)
- double dy = p.y - yy;
- return sqrt(dx * dx + dy * dy);
+ double B = p.y - l1.y;
+ double C = l2.x - l1.x;
+ double D = l2.y - l1.y;
+
+ double dot = A * C + B * D;
+ double len_sq = C * C + D * D;
+ double param = -1;
+ if (len_sq != 0) { //non 0 length line
+ param = dot / len_sq;
+ }
+
+ double xx, yy;
+
+ if (param < 0) { // zero length line or beyond end use point 1
+ xx = l1.x;
+ yy = l1.y;
+ } else if (param > 1) { // beyond point 2 end of line segment
+ xx = l2.x;
+ yy = l2.y;
+ } else { // In the middle
+ xx = l1.x + param * C;
+ yy = l1.y + param * D;
+ }
+
+ double dx = p.x - xx; //distance to perpendicular (or end point)
+ double dy = p.y - yy;
+ return sqrt(dx * dx + dy * dy);
}
/*
@@ -221,7 +225,9 @@ double DistanceToLineSegment(coOrd p, coOrd l1, coOrd l2) {
* Sum distance to straight line of quarter points.
*/
-double BezErrorLine(coOrd pos[4], coOrd start_point, coOrd end_point, double start, double end) {
+double BezErrorLine(coOrd pos[4], coOrd start_point, coOrd end_point,
+ double start, double end)
+{
double quarter = (end - start) / 4; // take point at 1/4 and 3/4 and check
coOrd c1 = getPoint(pos, start + quarter);
coOrd c2 = getPoint(pos, end - quarter);
@@ -233,7 +239,8 @@ double BezErrorLine(coOrd pos[4], coOrd start_point, coOrd end_point, double sta
/*
* Add element to DYNARR pointed to by caller from segment handed in
*/
-void addSegBezier(dynArr_t * array_p, trkSeg_p seg) {
+void addSegBezier(dynArr_t * array_p, trkSeg_p seg)
+{
trkSeg_p s;
@@ -241,23 +248,21 @@ void addSegBezier(dynArr_t * array_p, trkSeg_p seg) {
s = &DYNARR_N(trkSeg_t,*array_p,(array_p->cnt)-1);
s->type = seg->type;
s->color = seg->color;
- s->width = seg->width;
- s->bezSegs.cnt = 0;
- s->bezSegs.ptr=NULL;
- s->bezSegs.max = 0;
+ s->lineWidth = seg->lineWidth;
+ DYNARR_INIT( trkSeg_t, s->bezSegs );
if ((s->type == SEG_BEZLIN || s->type == SEG_BEZTRK) && seg->bezSegs.cnt) {
s->u.b.angle0 = seg->u.b.angle0; //Copy all the rest
s->u.b.angle3 = seg->u.b.angle3;
s->u.b.length = seg->u.b.length;
s->u.b.minRadius = seg->u.b.minRadius;
- for (int i=0;i<4;i++) s->u.b.pos[i] = seg->u.b.pos[i];
+ for (int i=0; i<4; i++) { s->u.b.pos[i] = seg->u.b.pos[i]; }
s->u.b.radius0 = seg->u.b.radius3;
- s->bezSegs.cnt = 0;
- if (s->bezSegs.ptr) MyFree(s->bezSegs.ptr);
- s->bezSegs.max = 0;
- s->bezSegs.ptr = NULL; //Make sure new space as addr copied in earlier from seg
+ // TODO we init'd the DA above, why free it now?
+ DYNARR_FREE( trkSeg_t, s->bezSegs );
+ //Make sure new space as addr copied in earlier from seg
for (int i = 0; i<seg->bezSegs.cnt; i++) {
- addSegBezier(&s->bezSegs,(((trkSeg_p)seg->bezSegs.ptr)+i)); //recurse for copying embedded Beziers as in Cornu joint
+ //recurse for copying embedded Beziers as in Cornu joint
+ addSegBezier(&s->bezSegs, &DYNARR_N( trkSeg_t, seg->bezSegs, i ) );
}
} else {
s->u = seg->u;
@@ -274,7 +279,9 @@ enum BezierType {PLAIN, LOOP, CUSP, INFLECTION, DOUBLEINFLECTION, LINE, ENDS, CO
* We will eliminate cusps and loops as not useful forms. Line, Plain, Inflection and DoubleInflection are ok.
*
*/
-EXPORT enum BezierType AnalyseCurve(coOrd inpos[4], double *Rfx, double *Rfy, double *cusp) {
+EXPORT enum BezierType AnalyseCurve(coOrd inpos[4], double *Rfx, double *Rfy,
+ double *cusp)
+{
*Rfx = *Rfy = 0;
if (Da.track && inpos[0].x == inpos[3].x && inpos[0].y == inpos[3].y ) {
@@ -287,14 +294,14 @@ EXPORT enum BezierType AnalyseCurve(coOrd inpos[4], double *Rfx, double *Rfy, do
if (d01+d12 == d02) { //straight
DIST_T d23 = FindDistance(inpos[2],inpos[3]);
DIST_T d03 = FindDistance(inpos[0],inpos[3]);
- if (d02+d23 == d03) return LINE;
+ if (d02+d23 == d03) { return LINE; }
}
int common_points = 0;
- for (int i=0;i<3;i++) {
- if (inpos[i].x == inpos[i+1].x && inpos[i].y == inpos[i+1].y) common_points++;
+ for (int i=0; i<3; i++) {
+ if (inpos[i].x == inpos[i+1].x && inpos[i].y == inpos[i+1].y) { common_points++; }
}
- for (int i=0;i<2;i++) {
- if (inpos[i].x == inpos[i+2].x && inpos[i].y == inpos[i+2].y) common_points++;
+ for (int i=0; i<2; i++) {
+ if (inpos[i].x == inpos[i+2].x && inpos[i].y == inpos[i+2].y) { common_points++; }
}
if (common_points>2) {
@@ -304,7 +311,7 @@ EXPORT enum BezierType AnalyseCurve(coOrd inpos[4], double *Rfx, double *Rfy, do
coOrd pos[4];
coOrd offset2, offset = inpos[0];
- for (int i=0;i<4;i++) { //move to zero origin
+ for (int i=0; i<4; i++) { //move to zero origin
pos[i].x = inpos[i].x-offset.x;
pos[i].y = inpos[i].y-offset.y;
}
@@ -312,31 +319,32 @@ EXPORT enum BezierType AnalyseCurve(coOrd inpos[4], double *Rfx, double *Rfy, do
offset2.x = -offset.x + pos[3].x;
offset2.y = -offset.y + pos[3].y;
if (pos[1].y == 0.0) { //flip order of points
- for (int i=0;i<4;i++) {
+ for (int i=0; i<4; i++) {
coOrd temp_pos = pos[i];
pos[i].x = pos[3-i].x - offset2.x;
pos[i].y = pos[3-i].y - offset2.y;
pos[3-i] = temp_pos;
}
- if (pos[1].y == 0.0) { //Both ways round the second point has no y left after translation
+ if (pos[1].y ==
+ 0.0) { //Both ways round the second point has no y left after translation
return PLAIN;
}
}
double f21 = (pos[2].y)/(pos[1].y);
double f31 = (pos[3].y)/(pos[1].y);
- if (fabs(pos[2].x-(pos[1].x*f21)) <0.0001) return PLAIN; //defend against divide by zero
+ if (fabs(pos[2].x-(pos[1].x*f21)) <0.0001) { return PLAIN; } //defend against divide by zero
double fx = (pos[3].x-(pos[1].x*f31))/(pos[2].x-(pos[1].x*f21));
double fy = f31+(1-f21)*fx;
*Rfx = fx;
*Rfy = fy;
*cusp = fabs(fy - (-(fx*fx)+2*fx+3)/4);
- if (fy > 1.0) return INFLECTION;
- if (fx >= 1.0) return PLAIN;
- if (fabs(fy - (-(fx*fx)+2*fx+3)/4) <0.100) return CUSP;
+ if (fy > 1.0) { return INFLECTION; }
+ if (fx >= 1.0) { return PLAIN; }
+ if (fabs(fy - (-(fx*fx)+2*fx+3)/4) <0.100) { return CUSP; }
if (fy < (-(fx*fx)+2*fx+3)/4) {
- if (fx <= 0.0 && fy >= (3*fx-(fx*fx))/3) return LOOP;
- if (fx > 0.0 && fy >= (sqrt(3*(4*fx-fx*fx))-fx)/2) return LOOP;
+ if (fx <= 0.0 && fy >= (3*fx-(fx*fx))/3) { return LOOP; }
+ if (fx > 0.0 && fy >= (sqrt(3*(4*fx-fx*fx))-fx)/2) { return LOOP; }
return PLAIN;
}
@@ -352,130 +360,138 @@ EXPORT enum BezierType AnalyseCurve(coOrd inpos[4], double *Rfx, double *Rfy, do
* to perform actions on the Bezier and also to export it to DXF.
*
*/
-EXPORT BOOL_T ConvertToArcs (coOrd pos[4], dynArr_t * segs, BOOL_T track, wDrawColor color, DIST_T width) {
- double t_s = 0.0, t_e = 1.0;
- double errorThreshold = 0.05;
- bCurveData_t prev_arc;
- prev_arc.end = 0.0;
- bCurveData_t arc;
- segs->cnt = 0; //wipe out
- BOOL_T safety;
- int col = 0;
-
- double prev_e = 0.0;
- // we do a binary search to find the "good `t` closest to no-longer-good"
- do {
- safety=FALSE;
- // step 1: start with the maximum possible arc length
- t_e = 1.0;
- // points:
- coOrd start_point, mid_point, end_point;
- // booleans:
- BOOL_T curr_good = FALSE, prev_good = FALSE, done = FALSE;
- // numbers:
- double t_m, step = 0;
- // step 2: find the best possible arc
- do { // !done
- prev_good = curr_good; //remember last time
- t_m = (t_s + t_e)/2;
- step++;
- start_point = getPoint(pos, t_s); //Start of arc
- mid_point = getPoint(pos, t_m); //Middle of trial arc
- end_point = getPoint(pos, t_e); //End of trial Arc
-
- PlotCurve( crvCmdFromChord, start_point, end_point, mid_point,
- &(arc.curveData), FALSE, 0.0 ); //Find Arc through three points
-
- arc.start = t_s; //remember start
- arc.end = t_e; //remember end
- arc.pos0 = start_point; //remember start point (used for Straight)
- arc.pos1 = end_point; // Remember end point (used for Straight)
-
- if (arc.curveData.type == curveTypeStraight) {
- double error = BezErrorLine(pos,start_point,end_point, t_s, t_e);
- curr_good = (error <= errorThreshold/4);
- //arc.curveData.a0 = FindAngle(start_point,end_point);
- //arc.curveData.a1 = FindAngle(end_point,start_point);
-
- } else if (arc.curveData.type == curveTypeNone) {
- return FALSE; //Something wrong
- } else {
- double error = BezError(pos, arc.curveData.curvePos, start_point, t_s, t_e);
- curr_good = (error <= errorThreshold/4);
- };
-
- done = prev_good && !curr_good; //Was better than this last time?
- if(!done) {
- // this arc is fine: we can move 'e' up to see if we can find a wider arc
- if(curr_good) {
- prev_e = t_e; //remember good end only
- prev_arc = arc;
- // if e is already at max, then we're done for this arc.
- if (t_e >= 1.0) {
- // make sure we cap at t=1
- arc.end = prev_e = 1.0;
- // if we capped the arc segment to t=1 we also need to make sure that
- // the arc's end angle is correct with respect to the bezier end point.
- if (t_e > 1.0) {
- if (arc.curveData.type != curveTypeStraight) {
- coOrd d;
- d.x = arc.curveData.curvePos.x + fabs(arc.curveData.curveRadius) * cos(D2R(arc.curveData.a1));
- d.y = arc.curveData.curvePos.y + fabs(arc.curveData.curveRadius) * sin(D2R(arc.curveData.a1));
-
- arc.curveData.a1 += FindAngle(d, getPoint(pos,1.0));
- t_e = 1.0;
- }
- }
- prev_arc = arc;
- done = TRUE;
- break;
- }
- // if not, move it up by half the iteration distance or to end
- t_e = t_e + (t_e-t_s)/2;
- if (t_e > 1.0) t_e = 1.0;
- }
- // this is a bad arc: we need to move 'e' down to find a good arc
- else {
- t_e = t_m;
- }
- } // If !Done end
- } while(!done && safety++<100);
- if(safety>=100) {
- return FALSE; //Failed to make into arcs
- }
- prev_arc = prev_arc.end==0.0?arc:prev_arc;
- trkSeg_t curveSeg; //Now set up tempSeg to copy into array
- curveSeg.width = track?0:width;
- if ( prev_arc.curveData.type == curveTypeCurve ) {
- if (track)
- curveSeg.color = (fabs(prev_arc.curveData.curveRadius)<(GetLayoutMinTrackRadius()-EPSILON))?exceptionColor:normalColor;
- else
- curveSeg.color = color;
- curveSeg.type = track?SEG_CRVTRK:SEG_CRVLIN;
- curveSeg.u.c.a0 = prev_arc.curveData.a0;
- curveSeg.u.c.a1 = prev_arc.curveData.a1;
- curveSeg.u.c.center = prev_arc.curveData.curvePos;
- if (prev_arc.curveData.negative)
- curveSeg.u.c.radius = -prev_arc.curveData.curveRadius;
- else
- curveSeg.u.c.radius = prev_arc.curveData.curveRadius;
- } else { //Straight Line because all points co-linear
- curveSeg.type = track?SEG_STRTRK:SEG_STRLIN;
- if (track)
- curveSeg.color = wDrawColorBlack;
- else
- curveSeg.color = color;
- curveSeg.u.l.angle = FindAngle(prev_arc.pos0,prev_arc.pos1);
- curveSeg.u.l.pos[0] = prev_arc.pos0;
- curveSeg.u.l.pos[1] = prev_arc.pos1;
- curveSeg.u.l.option = 0;
- }
- addSegBezier(segs, &curveSeg); //Add to array of segs used
- t_s = prev_e;
- col++;
- } while(prev_e < 1.0);
-
- return TRUE;
+EXPORT BOOL_T ConvertToArcs (coOrd pos[4], dynArr_t * segs, BOOL_T track,
+ wDrawColor color, LWIDTH_T lineWidth)
+{
+ double t_s = 0.0, t_e = 1.0;
+ double errorThreshold = 0.05;
+ bCurveData_t prev_arc;
+ prev_arc.end = 0.0;
+ bCurveData_t arc;
+ DYNARR_RESET( trkSeg_t, *segs ); // wipe out
+ BOOL_T safety;
+ int col = 0;
+
+ double prev_e = 0.0;
+ // we do a binary search to find the "good `t` closest to no-longer-good"
+ do {
+ safety=FALSE;
+ // step 1: start with the maximum possible arc length
+ t_e = 1.0;
+ // points:
+ coOrd start_point, mid_point, end_point;
+ // booleans:
+ BOOL_T curr_good = FALSE, prev_good = FALSE, done = FALSE;
+ // numbers:
+ double t_m, step = 0;
+ // step 2: find the best possible arc
+ do { // !done
+ prev_good = curr_good; //remember last time
+ t_m = (t_s + t_e)/2;
+ step++;
+ start_point = getPoint(pos, t_s); //Start of arc
+ mid_point = getPoint(pos, t_m); //Middle of trial arc
+ end_point = getPoint(pos, t_e); //End of trial Arc
+
+ PlotCurve( crvCmdFromChord, start_point, end_point, mid_point,
+ &(arc.curveData), FALSE, 0.0 ); //Find Arc through three points
+
+ arc.start = t_s; //remember start
+ arc.end = t_e; //remember end
+ arc.pos0 = start_point; //remember start point (used for Straight)
+ arc.pos1 = end_point; // Remember end point (used for Straight)
+
+ if (arc.curveData.type == curveTypeStraight) {
+ double error = BezErrorLine(pos,start_point,end_point, t_s, t_e);
+ curr_good = (error <= errorThreshold/4);
+ //arc.curveData.a0 = FindAngle(start_point,end_point);
+ //arc.curveData.a1 = FindAngle(end_point,start_point);
+
+ } else if (arc.curveData.type == curveTypeNone) {
+ return FALSE; //Something wrong
+ } else {
+ double error = BezError(pos, arc.curveData.curvePos, start_point, t_s, t_e);
+ curr_good = (error <= errorThreshold/4);
+ };
+
+ done = prev_good && !curr_good; //Was better than this last time?
+ if(!done) {
+ // this arc is fine: we can move 'e' up to see if we can find a wider arc
+ if(curr_good) {
+ prev_e = t_e; //remember good end only
+ prev_arc = arc;
+ // if e is already at max, then we're done for this arc.
+ if (t_e >= 1.0) {
+ // make sure we cap at t=1
+ arc.end = prev_e = 1.0;
+ // if we capped the arc segment to t=1 we also need to make sure that
+ // the arc's end angle is correct with respect to the bezier end point.
+ if (t_e > 1.0) {
+ if (arc.curveData.type != curveTypeStraight) {
+ coOrd d;
+ d.x = arc.curveData.curvePos.x + fabs(arc.curveData.curveRadius) * cos(D2R(
+ arc.curveData.a1));
+ d.y = arc.curveData.curvePos.y + fabs(arc.curveData.curveRadius) * sin(D2R(
+ arc.curveData.a1));
+
+ arc.curveData.a1 += FindAngle(d, getPoint(pos,1.0));
+ t_e = 1.0;
+ }
+ }
+ prev_arc = arc;
+ done = TRUE;
+ break;
+ }
+ // if not, move it up by half the iteration distance or to end
+ t_e = t_e + (t_e-t_s)/2;
+ if (t_e > 1.0) { t_e = 1.0; }
+ }
+ // this is a bad arc: we need to move 'e' down to find a good arc
+ else {
+ t_e = t_m;
+ }
+ } // If !Done end
+ } while(!done && safety++<100);
+ if(safety>=100) {
+ return FALSE; //Failed to make into arcs
+ }
+ prev_arc = prev_arc.end==0.0?arc:prev_arc;
+ trkSeg_t curveSeg; //Now set up tempSeg to copy into array
+ curveSeg.lineWidth = track?0:lineWidth;
+ if ( prev_arc.curveData.type == curveTypeCurve ) {
+ if (track) {
+ curveSeg.color = (fabs(prev_arc.curveData.curveRadius)<
+ (GetLayoutMinTrackRadius()-EPSILON))?exceptionColor:normalColor;
+ } else {
+ curveSeg.color = color;
+ }
+ curveSeg.type = track?SEG_CRVTRK:SEG_CRVLIN;
+ curveSeg.u.c.a0 = prev_arc.curveData.a0;
+ curveSeg.u.c.a1 = prev_arc.curveData.a1;
+ curveSeg.u.c.center = prev_arc.curveData.curvePos;
+ if (prev_arc.curveData.negative) {
+ curveSeg.u.c.radius = -prev_arc.curveData.curveRadius;
+ } else {
+ curveSeg.u.c.radius = prev_arc.curveData.curveRadius;
+ }
+ } else { //Straight Line because all points co-linear
+ curveSeg.type = track?SEG_STRTRK:SEG_STRLIN;
+ if (track) {
+ curveSeg.color = wDrawColorBlack;
+ } else {
+ curveSeg.color = color;
+ }
+ curveSeg.u.l.angle = FindAngle(prev_arc.pos0,prev_arc.pos1);
+ curveSeg.u.l.pos[0] = prev_arc.pos0;
+ curveSeg.u.l.pos[1] = prev_arc.pos1;
+ curveSeg.u.l.option = 0;
+ }
+ addSegBezier(segs, &curveSeg); //Add to array of segs used
+ t_s = prev_e;
+ col++;
+ } while(prev_e < 1.0);
+
+ return TRUE;
};
/*
* Draw Bezier while editing it. It consists of three elements - the curve and one or two control arms.
@@ -483,19 +499,25 @@ EXPORT BOOL_T ConvertToArcs (coOrd pos[4], dynArr_t * segs, BOOL_T track, wDrawC
*/
static void DrawBezCurve(trkSeg_p control_arm1,
- int cp1Segs_cnt,
- trkSeg_p control_arm2,
- int cp2Segs_cnt,
- trkSeg_p curveSegs,
- int crvSegs_cnt,
- wDrawColor color
- ) {
- if (crvSegs_cnt && curveSegs)
+ int cp1Segs_cnt,
+ trkSeg_p control_arm2,
+ int cp2Segs_cnt,
+ trkSeg_p curveSegs,
+ int crvSegs_cnt,
+ wDrawColor color
+ )
+{
+ if (crvSegs_cnt && curveSegs) {
DrawSegs( &tempD, zero, 0.0, curveSegs, crvSegs_cnt, Da.trackGauge, color );
- if (cp1Segs_cnt && control_arm1)
- DrawSegs( &tempD, zero, 0.0, control_arm1, cp1Segs_cnt, Da.trackGauge, drawColorBlack );
- if (cp2Segs_cnt && control_arm2)
- DrawSegs( &tempD, zero, 0.0, control_arm2, cp2Segs_cnt, Da.trackGauge, drawColorBlack );
+ }
+ if (cp1Segs_cnt && control_arm1) {
+ DrawSegs( &tempD, zero, 0.0, control_arm1, cp1Segs_cnt, Da.trackGauge,
+ drawColorBlack );
+ }
+ if (cp2Segs_cnt && control_arm2) {
+ DrawSegs( &tempD, zero, 0.0, control_arm2, cp2Segs_cnt, Da.trackGauge,
+ drawColorBlack );
+ }
}
@@ -506,45 +528,55 @@ static void DrawBezCurve(trkSeg_p control_arm1,
/*
* If Track, make it red if the radius is below minimum
*/
-void DrawTempBezier(BOOL_T track) {
- if (track) DrawBezCurve(Da.cp1Segs_da,Da.cp1Segs_da_cnt,Da.cp2Segs_da,Da.cp2Segs_da_cnt, (trkSeg_t *)Da.crvSegs_da.ptr,Da.crvSegs_da_cnt,fabs(Da.minRadius)<(GetLayoutMinTrackRadius()-EPSILON)?exceptionColor:normalColor);
- else
- DrawBezCurve(Da.cp1Segs_da,Da.cp1Segs_da_cnt,Da.cp2Segs_da,Da.cp2Segs_da_cnt, (trkSeg_t *)Da.crvSegs_da.ptr,Da.crvSegs_da_cnt,drawColorBlack); //Add Second Arm
+void DrawTempBezier(BOOL_T track)
+{
+ if (track) {
+ DrawBezCurve(Da.cp1Segs_da,Da.cp1Segs_da_cnt,Da.cp2Segs_da,Da.cp2Segs_da_cnt,
+ &DYNARR_N(trkSeg_t,Da.crvSegs_da,0),Da.crvSegs_da_cnt,
+ fabs(Da.minRadius)<(GetLayoutMinTrackRadius()-EPSILON)?exceptionColor:
+ normalColor);
+ } else {
+ DrawBezCurve(Da.cp1Segs_da,Da.cp1Segs_da_cnt,Da.cp2Segs_da,Da.cp2Segs_da_cnt,
+ &DYNARR_N(trkSeg_t,Da.crvSegs_da,0),Da.crvSegs_da_cnt,
+ drawColorBlack); //Add Second Arm
+ }
}
-void CreateBothControlArms(int selectPoint, BOOL_T track) {
+void CreateBothControlArms(int selectPoint, BOOL_T track)
+{
if (selectPoint == -1) {
Da.cp1Segs_da_cnt = createControlArm(Da.cp1Segs_da, Da.pos[0],
- Da.pos[1], track, TRUE, Da.trk[0]!=NULL, -1,
- drawColorBlack);
+ Da.pos[1], track, TRUE, Da.trk[0]!=NULL, -1,
+ drawColorBlack);
Da.cp2Segs_da_cnt = createControlArm(Da.cp2Segs_da, Da.pos[3],
- Da.pos[2], track, TRUE, Da.trk[1]!=NULL, -1,
- drawColorBlack);
+ Da.pos[2], track, TRUE, Da.trk[1]!=NULL, -1,
+ drawColorBlack);
} else if (selectPoint == 0 || selectPoint == 1) {
Da.cp1Segs_da_cnt = createControlArm(Da.cp1Segs_da, Da.pos[0],
- Da.pos[1], track, TRUE, Da.trk[0]!=NULL, selectPoint,
- drawColorBlack);
+ Da.pos[1], track, TRUE, Da.trk[0]!=NULL, selectPoint,
+ drawColorBlack);
Da.cp2Segs_da_cnt = createControlArm(Da.cp2Segs_da, Da.pos[3],
- Da.pos[2], track, FALSE, Da.trk[1]!=NULL, -1,
- drawColorBlack);
+ Da.pos[2], track, FALSE, Da.trk[1]!=NULL, -1,
+ drawColorBlack);
} else {
Da.cp1Segs_da_cnt = createControlArm(Da.cp1Segs_da, Da.pos[0],
- Da.pos[1], track, FALSE, Da.trk[0]!=NULL, -1,
- drawColorBlack);
+ Da.pos[1], track, FALSE, Da.trk[0]!=NULL, -1,
+ drawColorBlack);
Da.cp2Segs_da_cnt = createControlArm(Da.cp2Segs_da, Da.pos[3],
- Da.pos[2], track, TRUE, Da.trk[1]!=NULL,
- 3-selectPoint, drawColorBlack);
+ Da.pos[2], track, TRUE, Da.trk[1]!=NULL,
+ 3-selectPoint, drawColorBlack);
}
}
-void CreateMoveAnchor(coOrd pos,BOOL_T fill) {
+void CreateMoveAnchor(coOrd pos,BOOL_T fill)
+{
double d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
int inx = anchors_da.cnt-1;
anchors(inx).type = fill?SEG_FILCRCL:SEG_CRVLIN;
anchors(inx).u.c.a0 = 0.0;
anchors(inx).u.c.a1 = 360.0;
- anchors(inx).width = 0;
+ anchors(inx).lineWidth = 0;
anchors(inx).color = wDrawColorBlue;
anchors(inx).u.c.radius = d/4;
anchors(inx).u.c.center = pos;
@@ -566,67 +598,69 @@ void CreateMoveAnchor(coOrd pos,BOOL_T fill) {
*
*/
EXPORT STATUS_T AdjustBezCurve(
- wAction_t action,
- coOrd pos,
- BOOL_T track,
- wDrawColor color,
- DIST_T width,
- bezMessageProc message )
+ wAction_t action,
+ coOrd pos,
+ BOOL_T track,
+ wDrawColor color,
+ LWIDTH_T lineWidth,
+ bezMessageProc message )
{
track_p t;
DIST_T d;
ANGLE_T angle1, angle2;
- static coOrd pos0, pos3, p;
+ static coOrd pos0, /* pos3,*/ p;
enum BezierType b;
DIST_T dd;
EPINX_T ep;
double fx, fy, cusp;
- int controlArm = -1;
+// int controlArm = -1;
- if (Da.state != PICK_POINT && Da.state != POINT_PICKED && Da.state != TRACK_SELECTED) return C_CONTINUE;
+ if (Da.state != PICK_POINT && Da.state != POINT_PICKED
+ && Da.state != TRACK_SELECTED) { return C_CONTINUE; }
switch ( action & 0xFF) {
case C_START:
- Da.selectPoint = -1;
- CreateBothControlArms(Da.selectPoint, track);
- if (ConvertToArcs(Da.pos,&Da.crvSegs_da,track,color,Da.width)) Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
- Da.minRadius = BezierMinRadius(Da.pos,Da.crvSegs_da);
- Da.unlocked = FALSE;
- if (track)
- InfoMessage( _("Select End-Point - Ctrl unlocks end-point") );
- else
- InfoMessage( _("Select End-Point") );
- return C_CONTINUE;
+ Da.selectPoint = -1;
+ CreateBothControlArms(Da.selectPoint, track);
+ if (ConvertToArcs(Da.pos,&Da.crvSegs_da,track,color,lineWidth)) { Da.crvSegs_da_cnt = Da.crvSegs_da.cnt; }
+ Da.minRadius = BezierMinRadius(Da.pos,Da.crvSegs_da);
+ Da.unlocked = FALSE;
+ if (track) {
+ InfoMessage( _("Select End-Point - Ctrl unlocks end-point") );
+ } else {
+ InfoMessage( _("Select End-Point") );
+ }
+ return C_CONTINUE;
case wActionMove:
DYNARR_RESET(trkSeg_t,anchors_da);
- if (Da.state != PICK_POINT) return C_CONTINUE;
- if (Da.state != PICK_POINT) return C_CONTINUE;
- for (int i=0;i<4;i++) {
- if (i==0 && Da.trk[0]) continue;
- if (i==3 && Da.trk[1]) continue; //ignore locked points
+ if (Da.state != PICK_POINT) { return C_CONTINUE; }
+ if (Da.state != PICK_POINT) { return C_CONTINUE; }
+ for (int i=0; i<4; i++) {
+ if (i==0 && Da.trk[0]) { continue; }
+ if (i==3 && Da.trk[1]) { continue; } //ignore locked points
d = FindDistance(Da.pos[i],pos);
- if (IsClose(d)) CreateMoveAnchor(Da.pos[i],TRUE);
+ if (IsClose(d)) { CreateMoveAnchor(Da.pos[i],TRUE); }
}
break;
case C_DOWN:
- if (Da.state != PICK_POINT) return C_CONTINUE;
+ if (Da.state != PICK_POINT) { return C_CONTINUE; }
dd = DIST_INF;
Da.selectPoint = -1;
- for (int i=0;i<4;i++) {
+ for (int i=0; i<4; i++) {
d = FindDistance(Da.pos[i],pos);
if (d < dd) {
- if (i==0 && Da.trk[0]) continue;
- if (i==3 && Da.trk[1]) continue; //ignore locked points
+ if (i==0 && Da.trk[0]) { continue; }
+ if (i==3 && Da.trk[1]) { continue; } //ignore locked points
dd = d;
Da.selectPoint = i;
}
}
- if (!IsClose(dd) ) Da.selectPoint = -1;
+ if (!IsClose(dd) ) { Da.selectPoint = -1; }
DYNARR_RESET(trkSeg_t,anchors_da);
if (Da.selectPoint == -1) {
InfoMessage( _("Not close enough to any valid, selectable point, reselect") );
@@ -635,10 +669,11 @@ EXPORT STATUS_T AdjustBezCurve(
pos = Da.pos[Da.selectPoint];
CreateMoveAnchor(pos,TRUE);
Da.state = POINT_PICKED;
- InfoMessage( _("Drag point %d to new location and release it"),Da.selectPoint+1 );
+ InfoMessage( _("Drag point %d to new location and release it"),
+ Da.selectPoint+1 );
}
CreateBothControlArms(Da.selectPoint, track);
- if (ConvertToArcs(Da.pos, &Da.crvSegs_da, track, color,Da.width)) Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
+ if (ConvertToArcs(Da.pos, &Da.crvSegs_da, track, color,lineWidth)) { Da.crvSegs_da_cnt = Da.crvSegs_da.cnt; }
Da.minRadius = BezierMinRadius(Da.pos, Da.crvSegs_da);
return C_CONTINUE;
@@ -654,41 +689,47 @@ EXPORT STATUS_T AdjustBezCurve(
if (Da.trk[controlArm]) {
angle1 = NormalizeAngle(GetTrkEndAngle(Da.trk[controlArm], Da.ep[controlArm]));
angle2 = NormalizeAngle(FindAngle(pos, Da.pos[Da.selectPoint==1?0:3])-angle1);
- if (angle2 > 90.0 && angle2 < 270.0)
- Translate( &pos, Da.pos[Da.selectPoint==1?0:3], angle1, -FindDistance( Da.pos[Da.selectPoint==1?0:3], pos )*cos(D2R(angle2)) );
- else pos = Da.pos[Da.selectPoint==1?0:3];
+ if (angle2 > 90.0 && angle2 < 270.0) {
+ Translate( &pos, Da.pos[Da.selectPoint==1?0:3], angle1,
+ -FindDistance( Da.pos[Da.selectPoint==1?0:3], pos )*cos(D2R(angle2)) );
+ } else { pos = Da.pos[Da.selectPoint==1?0:3]; }
} // Dont Snap control points
- } else SnapPos(&pos);
+ } else { SnapPos(&pos); }
Da.pos[Da.selectPoint] = pos;
CreateMoveAnchor(pos,TRUE);
CreateBothControlArms(Da.selectPoint, track);
- if (ConvertToArcs(Da.pos,&Da.crvSegs_da,track, color, Da.width)) Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
+ if (ConvertToArcs(Da.pos,&Da.crvSegs_da,track, color, lineWidth)) { Da.crvSegs_da_cnt = Da.crvSegs_da.cnt; }
Da.minRadius = BezierMinRadius(Da.pos,Da.crvSegs_da);
if (Da.track) {
b = AnalyseCurve(Da.pos,&fx,&fy,&cusp);
if (b==ENDS) {
wBeep();
- InfoMessage(_("Bezier Curve Invalid has identical end points Change End Point"),b==CUSP?"Cusp":"Loop");
+ InfoMessage(_("Bezier Curve Invalid has identical end points Change End Point"),
+ b==CUSP?"Cusp":"Loop");
} else if ( b == CUSP || b == LOOP) {
wBeep();
- InfoMessage(_("Bezier Curve Invalid has %s Change End Point"),b==CUSP?"Cusp":"Loop");
+ InfoMessage(_("Bezier Curve Invalid has %s Change End Point"),
+ b==CUSP?"Cusp":"Loop");
} else if ( b == COINCIDENT ) {
wBeep();
- InfoMessage(_("Bezier Curve Invalid has three co-incident points"),b==CUSP?"Cusp":"Loop");
+ InfoMessage(_("Bezier Curve Invalid has three co-incident points"),
+ b==CUSP?"Cusp":"Loop");
} else if ( b == LINE ) {
InfoMessage(_("Bezier is Straight Line"));
} else
- InfoMessage( _("Bezier %s : Min Radius=%s Length=%s fx=%0.3f fy=%0.3f cusp=%0.3f"),track?"Track":"Line",
- FormatDistance(Da.minRadius>=100000?0:Da.minRadius),
- FormatDistance(BezierLength(Da.pos,Da.crvSegs_da)),fx,fy,cusp);
+ InfoMessage(
+ _("Bezier %s : Min Radius=%s Length=%s fx=%0.3f fy=%0.3f cusp=%0.3f"),
+ track?"Track":"Line",
+ FormatDistance(Da.minRadius>=100000?0:Da.minRadius),
+ FormatDistance(BezierLength(Da.pos,Da.crvSegs_da)),fx,fy,cusp);
} else
- InfoMessage( _("Bezier %s : Min Radius=%s Length=%s"),track?"Track":"Line",
- FormatDistance(Da.minRadius>=100000?0:Da.minRadius),
- FormatDistance(BezierLength(Da.pos,Da.crvSegs_da)));
+ InfoMessage( _("Bezier %s : Min Radius=%s Length=%s"),track?"Track":"Line",
+ FormatDistance(Da.minRadius>=100000?0:Da.minRadius),
+ FormatDistance(BezierLength(Da.pos,Da.crvSegs_da)));
return C_CONTINUE;
case C_UP:
- if (Da.state != POINT_PICKED) return C_CONTINUE;
+ if (Da.state != POINT_PICKED) { return C_CONTINUE; }
//Take last pos and decide if it should be snapped to a track because SHIFT is held (pos0 and pos3)
ep = 0;
BOOL_T found = FALSE;
@@ -696,7 +737,8 @@ EXPORT STATUS_T AdjustBezCurve(
p = pos;
if (track && (Da.selectPoint == 0 || Da.selectPoint == 3)) { //EPs
if ((MyGetKeyState() & WKEY_SHIFT) != 0) { //Snap Track
- if ((t = OnTrackIgnore(&p, FALSE, TRUE, Da.selectTrack)) != NULL) { //Snap to endPoint
+ if ((t = OnTrackIgnore(&p, FALSE, TRUE,
+ Da.selectTrack)) != NULL) { //Snap to endPoint
ep = PickUnconnectedEndPointSilent(p, t);
if (ep != -1) {
Da.trk[Da.selectPoint/3] = t;
@@ -712,39 +754,46 @@ EXPORT STATUS_T AdjustBezCurve(
}
}
if (found) {
- angle1 = NormalizeAngle(GetTrkEndAngle(Da.trk[Da.selectPoint/3], Da.ep[Da.selectPoint/3]));
+ angle1 = NormalizeAngle(GetTrkEndAngle(Da.trk[Da.selectPoint/3],
+ Da.ep[Da.selectPoint/3]));
angle2 = NormalizeAngle(FindAngle(pos, pos0)-angle1);
- Translate(&Da.pos[Da.selectPoint==0?1:2], Da.pos[Da.selectPoint==0?0:3], angle1, FindDistance(Da.pos[Da.selectPoint==0?1:2],pos)*cos(D2R(angle2)));
+ Translate(&Da.pos[Da.selectPoint==0?1:2], Da.pos[Da.selectPoint==0?0:3], angle1,
+ FindDistance(Da.pos[Da.selectPoint==0?1:2],pos)*cos(D2R(angle2)));
}
Da.selectPoint = -1;
CreateBothControlArms(Da.selectPoint,track);
- if (ConvertToArcs(Da.pos,&Da.crvSegs_da,track,color,Da.width)) Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
+ if (ConvertToArcs(Da.pos,&Da.crvSegs_da,track,color,lineWidth)) { Da.crvSegs_da_cnt = Da.crvSegs_da.cnt; }
Da.minRadius = BezierMinRadius(Da.pos,Da.crvSegs_da);
if (Da.track) {
b = AnalyseCurve(Da.pos,&fx,&fy,&cusp);
if (b==ENDS) {
wBeep();
- InfoMessage(_("Bezier curve invalid has identical end points Change End Point"),b==CUSP?"Cusp":"Loop");
+ InfoMessage(_("Bezier curve invalid has identical end points Change End Point"),
+ b==CUSP?"Cusp":"Loop");
} else if ( b == CUSP || b == LOOP) {
wBeep();
- InfoMessage(_("Bezier curve invalid has %s Change End Point"),b==CUSP?"Cusp":"Loop");
+ InfoMessage(_("Bezier curve invalid has %s Change End Point"),
+ b==CUSP?"Cusp":"Loop");
} else if ( b == COINCIDENT ) {
wBeep();
- InfoMessage(_("Bezier curve invalid has three co-incident points"),b==CUSP?"Cusp":"Loop");
+ InfoMessage(_("Bezier curve invalid has three co-incident points"),
+ b==CUSP?"Cusp":"Loop");
} else if ( b == LINE) {
InfoMessage(_("Bezier curve is straight line"));
}
- InfoMessage(_("Pick any circle to adjust it - Enter to confirm, ESC to abort"));
- } else
InfoMessage(_("Pick any circle to adjust it - Enter to confirm, ESC to abort"));
+ } else {
+ InfoMessage(
+ _("Pick any circle to adjust it - Enter to confirm, ESC to abort"));
+ }
Da.state = PICK_POINT;
return C_CONTINUE;
case C_OK: //C_OK is not called by Modify.
if ( Da.state == PICK_POINT ) {
- char c = (unsigned char)(action >> 8);
+// char c = (unsigned char)(action >> 8);
if (Da.track && Da.pos[0].x == Da.pos[3].x && Da.pos[0].y == Da.pos[3].y ) {
wBeep();
ErrorMessage(_("Invalid Bezier Track - end points are identical"));
@@ -768,17 +817,14 @@ EXPORT STATUS_T AdjustBezCurve(
Da.minRadius = BezierMinRadius(Da.pos,Da.crvSegs_da);
UndoStart( _("Create Bezier"), "newBezier - CR" );
if (Da.track) {
- t = NewBezierTrack( Da.pos, (trkSeg_p)Da.crvSegs_da.ptr, Da.crvSegs_da.cnt);
- for (int i=0;i<2;i++)
- if (Da.trk[i] != NULL) ConnectAbuttingTracks(t,i,Da.trk[i],Da.ep[i]);
- }
- else t = NewBezierLine(Da.pos, (trkSeg_p)Da.crvSegs_da.ptr, Da.crvSegs_da.cnt,color,width);
+ t = NewBezierTrack( Da.pos, &DYNARR_N(trkSeg_t,Da.crvSegs_da,0),
+ Da.crvSegs_da.cnt);
+ for (int i=0; i<2; i++)
+ if (Da.trk[i] != NULL) { ConnectAbuttingTracks(t,i,Da.trk[i],Da.ep[i]); }
+ } else { t = NewBezierLine(Da.pos, &DYNARR_N(trkSeg_t,Da.crvSegs_da,0), Da.crvSegs_da.cnt,color,lineWidth); }
UndoEnd();
- if (Da.crvSegs_da.ptr) MyFree(Da.crvSegs_da.ptr);
DYNARR_RESET(trkSeg_t,anchors_da);
- Da.crvSegs_da.ptr = NULL;
- Da.crvSegs_da.cnt = 0;
- Da.crvSegs_da.max = 0;
+ DYNARR_FREE( trkSeg_t, Da.crvSegs_da );
DrawNewTrack(t);
Da.state = NONE;
return C_TERMINATE;
@@ -787,10 +833,11 @@ EXPORT STATUS_T AdjustBezCurve(
return C_CONTINUE;
case C_REDRAW:
- if (Da.state != NONE)
+ if (Da.state != NONE) {
DrawTempBezier(Da.track);
- if (anchors_da.cnt>0)
- DrawSegs( &tempD, zero, 0.0, &anchors(0), anchors_da.cnt, trackGauge, wDrawColorBlack );
+ }
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack,
+ 0 );
return C_CONTINUE;
default:
@@ -818,14 +865,16 @@ EXPORT STATUS_T AdjustBezCurve(
* Note: Available points are shown - if a Bezier track is attached to its neighbor, only the control point on that side is selectable.
* Any free end-point can be locked to a unconnected end point using SHIFT during drag.
*/
-STATUS_T CmdBezModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG) {
+STATUS_T CmdBezModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG)
+{
BOOL_T track = TRUE;
- double width = 1.0;
- long mode = 0;
- long cmd;
+// double width = 1.0;
+// long mode = 0;
+// long cmd;
- struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
- cmd = VP2L(commandContext);
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
+// cmd = VP2L(commandContext);
Da.trackGauge = trackG;
switch (action&0xFF) {
@@ -840,43 +889,51 @@ STATUS_T CmdBezModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG)
if (IsTrack(trk)) {
Da.track = TRUE;
Da.trk[0] = GetTrkEndTrk( trk, 0 );
- if (Da.trk[0]) Da.ep[0] = GetEndPtConnectedToMe(Da.trk[0],trk);
+ if (Da.trk[0]) { Da.ep[0] = GetEndPtConnectedToMe(Da.trk[0],trk); }
Da.trk[1] = GetTrkEndTrk( trk, 1 );
- if (Da.trk[1]) Da.ep[1] = GetEndPtConnectedToMe(Da.trk[1],trk);
- }
- else Da.track = FALSE;
+ if (Da.trk[1]) { Da.ep[1] = GetEndPtConnectedToMe(Da.trk[1],trk); }
+ } else { Da.track = FALSE; }
Da.selectTrack = trk;
- for (int i=0;i<4;i++) Da.pos[i] = xx->pos[i]; //Copy parms from old trk
+ for (int i=0; i<4; i++) { Da.pos[i] = xx->pos[i]; } //Copy parms from old trk
InfoMessage(_("%s picked - now select a Point"),track?"Track":"Line");
Da.state = TRACK_SELECTED;
- DrawTrack(Da.selectTrack,&mainD,wDrawColorWhite); //Wipe out real track, draw replacement
- return AdjustBezCurve(C_START, pos, Da.track, xx->segsColor, xx->segsWidth, InfoMessage);
+ DrawTrack(Da.selectTrack,&mainD,
+ wDrawColorWhite); //Wipe out real track, draw replacement
+ return AdjustBezCurve(C_START, pos, Da.track, xx->segsColor, xx->segsLineWidth,
+ InfoMessage);
case wActionMove:
- if (Da.state == NONE) return C_CONTINUE;
- return AdjustBezCurve(wActionMove, pos, Da.track, xx->segsColor, xx->segsWidth, InfoMessage);
+ if (Da.state == NONE) { return C_CONTINUE; }
+ return AdjustBezCurve(wActionMove, pos, Da.track, xx->segsColor,
+ xx->segsLineWidth,
+ InfoMessage);
case C_DOWN:
- if (Da.state == TRACK_SELECTED) return C_CONTINUE; //Ignore until first up
+ if (Da.state == TRACK_SELECTED) { return C_CONTINUE; } //Ignore until first up
UndrawNewTrack( Da.selectTrack );
- return AdjustBezCurve(C_DOWN, pos, Da.track, xx->segsColor, xx->segsWidth, InfoMessage);
+ return AdjustBezCurve(C_DOWN, pos, Da.track, xx->segsColor, xx->segsLineWidth,
+ InfoMessage);
case C_MOVE:
- if (Da.state == TRACK_SELECTED) return C_CONTINUE; //Ignore until first up and down
- return AdjustBezCurve(C_MOVE, pos, Da.track, xx->segsColor, xx->segsWidth, InfoMessage);
+ if (Da.state == TRACK_SELECTED) { return C_CONTINUE; } //Ignore until first up and down
+ return AdjustBezCurve(C_MOVE, pos, Da.track, xx->segsColor, xx->segsLineWidth,
+ InfoMessage);
case C_UP:
if (Da.state == TRACK_SELECTED) {
- Da.state = PICK_POINT; //First time up, next time pick a point
+ Da.state =
+ PICK_POINT; //First time up, next time pick a point
}
- return AdjustBezCurve(C_UP, pos, Da.track, xx->segsColor, xx->segsWidth, InfoMessage); //Run Adjust
+ return AdjustBezCurve(C_UP, pos, Da.track, xx->segsColor, xx->segsLineWidth,
+ InfoMessage); //Run Adjust
case C_TEXT:
- if ((action>>8) != 32)
+ if ((action>>8) != 32) {
return C_CONTINUE;
- /* no break */
+ }
+ /* no break */
case C_OK:
if (Da.state != PICK_POINT) { //Too early - abandon
InfoMessage(_("No changes made"));
@@ -887,13 +944,13 @@ STATUS_T CmdBezModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG)
UndoModify( trk );
Da.state = NONE;
- wDrawColor color = wDrawColorBlack;
- DIST_T width = 0;
- if ( !Da.track ) {
- color = xx->segsColor;
- width = xx->segsWidth;
- }
- SetBezierData( trk, Da.pos, xx->segsColor, xx->segsWidth );
+// wDrawColor color = wDrawColorBlack;
+// LWIDTH_T lineWidth = 0;
+// if ( !Da.track ) {
+// color = xx->segsColor;
+// lineWidth = xx->segsLineWidth;
+// }
+ SetBezierData( trk, Da.pos, xx->segsColor, xx->segsLineWidth );
DrawNewTrack( trk );
UndoEnd();
@@ -906,7 +963,8 @@ STATUS_T CmdBezModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG)
return C_TERMINATE;
case C_REDRAW:
- return AdjustBezCurve(C_REDRAW, pos, Da.track, xx->segsColor, xx->segsWidth, InfoMessage);
+ return AdjustBezCurve(C_REDRAW, pos, Da.track, xx->segsColor, xx->segsLineWidth,
+ InfoMessage);
}
return C_CONTINUE;
@@ -916,11 +974,12 @@ STATUS_T CmdBezModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG)
/*
* Find length by adding up the underlying segments. The segments can be straights, curves or bezier.
*/
-DIST_T BezierLength(coOrd pos[4],dynArr_t segs) {
+DIST_T BezierLength(coOrd pos[4],dynArr_t segs)
+{
DIST_T dd = 0.0;
- if (segs.cnt == 0 ) return dd;
- for (int i = 0;i<segs.cnt;i++) {
+ if (segs.cnt == 0 ) { return dd; }
+ for (int i = 0; i<segs.cnt; i++) {
trkSeg_t t = DYNARR_N(trkSeg_t, segs, i);
if (t.type == SEG_CRVTRK || t.type == SEG_CRVLIN) {
dd += fabs(t.u.c.radius*D2R(t.u.c.a1));
@@ -933,10 +992,11 @@ DIST_T BezierLength(coOrd pos[4],dynArr_t segs) {
return dd;
}
-DIST_T BezierOffsetLength(dynArr_t segs, double offset) {
+DIST_T BezierOffsetLength(dynArr_t segs, double offset)
+{
DIST_T dd = 0.0;
- if (segs.cnt == 0 ) return dd;
- for (int i = 0;i<segs.cnt;i++) {
+ if (segs.cnt == 0 ) { return dd; }
+ for (int i = 0; i<segs.cnt; i++) {
trkSeg_t t = DYNARR_N(trkSeg_t, segs, i);
if (t.type == SEG_CRVTRK || t.type == SEG_CRVLIN) {
dd += fabs((t.u.c.radius+(t.u.c.radius>0?offset:-offset))*D2R(t.u.c.a1));
@@ -950,22 +1010,24 @@ DIST_T BezierOffsetLength(dynArr_t segs, double offset) {
}
-DIST_T BezierMinRadius(coOrd pos[4],dynArr_t segs) {
+DIST_T BezierMinRadius(coOrd pos[4],dynArr_t segs)
+{
DIST_T r = DIST_INF, rr;
- if (segs.cnt == 0 ) return r;
- for (int i = 0;i<segs.cnt;i++) {
+ if (segs.cnt == 0 ) { return r; }
+ for (int i = 0; i<segs.cnt; i++) {
trkSeg_t t = DYNARR_N(trkSeg_t, segs, i);
if (t.type == SEG_CRVTRK || t.type == SEG_CRVLIN) {
rr = fabs(t.u.c.radius);
} else if (t.type == SEG_BEZLIN || t.type == SEG_BEZTRK) {
rr = BezierMinRadius(t.u.b.pos, t.bezSegs);
- } else rr = DIST_INF;
- if (rr<r) r = rr;
+ } else { rr = DIST_INF; }
+ if (rr<r) { r = rr; }
}
return r;
}
-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);
@@ -976,7 +1038,7 @@ 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;
}
/*
@@ -992,17 +1054,15 @@ static void CreateEndAnchor(coOrd p, wBool_t lock) {
STATUS_T CmdBezCurve( wAction_t action, coOrd pos )
{
track_p t;
- static int segCnt;
+// static int segCnt;
static BOOL_T lock;
static coOrd movePos;
- STATUS_T rc = C_CONTINUE;
- long curveMode = 0;
+// STATUS_T rc = C_CONTINUE;
+// long curveMode = 0;
long cmd;
if (action>>8) {
cmd = action>>8;
- } else cmd = VP2L(commandContext);
-
- Da.width = (double)lineWidth/mainD.dpi;
+ } else { cmd = VP2L(commandContext); }
Da.trackGauge = trackGauge;
@@ -1011,14 +1071,13 @@ STATUS_T CmdBezCurve( wAction_t action, coOrd pos )
case C_START:
Da.track = (cmd == bezCmdModifyTrack || cmd == bezCmdCreateTrack)?TRUE:FALSE;
- if (Da.track )
- Da.color = wDrawColorBlack;
- else
- Da.color = lineColor;
+ if (Da.track ) {
+ lineColor = wDrawColorBlack;
+ }
Da.state = POS_1;
Da. selectPoint = -1;
- for (int i=0;i<4;i++) {
+ for (int i=0; i<4; i++) {
Da.pos[i] = zero;
}
Da.trk[0] = Da.trk[1] = NULL;
@@ -1027,7 +1086,8 @@ STATUS_T CmdBezCurve( wAction_t action, coOrd pos )
DYNARR_RESET(trkSeg_t,Da.crvSegs_da);
Da.cp1Segs_da_cnt = 0;
Da.cp2Segs_da_cnt = 0;
- InfoMessage( _("Place 1st endpoint of Bezier - snap to %s"), Da.track?"unconnected Track":"line" );
+ InfoMessage( _("Place 1st endpoint of Bezier - snap to %s"),
+ Da.track?"unconnected Track":"line" );
return C_CONTINUE;
@@ -1035,7 +1095,7 @@ STATUS_T CmdBezCurve( wAction_t action, coOrd pos )
DYNARR_RESET(trkSeg_t,anchors_da);
if ( Da.state == POS_1 || Da.state == POS_2) { //Set the first or third point
coOrd p = pos;
- BOOL_T found = FALSE;
+// BOOL_T found = FALSE;
int end = Da.state==POS_1?0:1;
EPINX_T ep;
if (Da.track) {
@@ -1053,14 +1113,15 @@ STATUS_T CmdBezCurve( wAction_t action, coOrd pos )
Da.trk[end] = t;
Da.ep[end] = ep;
pos = GetTrkEndPos(t, ep);
- found = TRUE;
+// found = TRUE;
}
}
}
}
} else { //Snap Bez Line to Lines
- if (lock)
+ if (lock) {
pos = movePos;
+ }
}
if (Da.state == POS_1) {
Da.pos[0] = pos;
@@ -1068,27 +1129,31 @@ STATUS_T CmdBezCurve( wAction_t action, coOrd pos )
Da.state = CONTROL_ARM_1; //Draw the first control arm
Da.selectPoint = 1;
InfoMessage( _("Drag end of first control arm") );
- Da.cp1Segs_da_cnt = createControlArm(Da.cp1Segs_da, Da.pos[0], Da.pos[1], Da.track,TRUE,Da.trk[1]!=NULL,1,wDrawColorBlack);
- } else {
+ Da.cp1Segs_da_cnt = createControlArm(Da.cp1Segs_da, Da.pos[0], Da.pos[1],
+ Da.track,TRUE,Da.trk[1]!=NULL,1,wDrawColorBlack);
+ } else {
Da.pos[3] = pos; //2nd End Point
Da.pos[2] = pos; //2nd Ctl Point
Da.state = POINT_PICKED; // Drag out the second control arm
Da.selectPoint = 2;
InfoMessage( _("Drag end of second control arm") );
- Da.cp1Segs_da_cnt = createControlArm(Da.cp1Segs_da, Da.pos[0], Da.pos[1], Da.track,FALSE,Da.trk[0]!=NULL,-1,wDrawColorBlack);
- Da.cp2Segs_da_cnt = createControlArm(Da.cp2Segs_da, Da.pos[3], Da.pos[2], Da.track,TRUE,Da.trk[1]!=NULL,1,wDrawColorBlack);
- if (ConvertToArcs(Da.pos,&Da.crvSegs_da,Da.track,Da.color,Da.width)) Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
+ Da.cp1Segs_da_cnt = createControlArm(Da.cp1Segs_da, Da.pos[0], Da.pos[1],
+ Da.track,FALSE,Da.trk[0]!=NULL,-1,wDrawColorBlack);
+ Da.cp2Segs_da_cnt = createControlArm(Da.cp2Segs_da, Da.pos[3], Da.pos[2],
+ Da.track,TRUE,Da.trk[1]!=NULL,1,wDrawColorBlack);
+ if (ConvertToArcs(Da.pos,&Da.crvSegs_da,Da.track,lineColor,lineWidth)) { Da.crvSegs_da_cnt = Da.crvSegs_da.cnt; }
}
return C_CONTINUE;
} else {
- return AdjustBezCurve( action&0xFF, pos, Da.track, Da.color, Da.width, InfoMessage );
+ return AdjustBezCurve( action&0xFF, pos, Da.track, lineColor, lineWidth,
+ InfoMessage );
}
return C_CONTINUE;
case wActionMove:
DYNARR_RESET(trkSeg_t,anchors_da);
lock = FALSE;
- if ( Da.state != POS_1 && Da.state != POS_2) return C_CONTINUE; //Don't snap CPs
+ if ( Da.state != POS_1 && Da.state != POS_2) { return C_CONTINUE; } //Don't snap CPs
if (Da.track) {
if (((MyGetKeyState() & WKEY_ALT) == 0) == magneticSnap) {
if ((t = OnTrack(&pos, FALSE, TRUE)) != NULL) {
@@ -1117,43 +1182,49 @@ STATUS_T CmdBezCurve( wAction_t action, coOrd pos )
lock = TRUE;
movePos = pos;
}
- if (anchors_da.cnt) return C_CONTINUE;
- /* no break */
+ if (anchors_da.cnt) { return C_CONTINUE; }
+ /* no break */
case C_MOVE:
if (Da.state == POS_1) {
- InfoMessage( _("Place 1st endpoint of Bezier - snap to %s"), Da.track?"unconnected track":"line" );
+ InfoMessage( _("Place 1st endpoint of Bezier - snap to %s"),
+ Da.track?"unconnected track":"line" );
return C_CONTINUE;
}
if (Da.state == POS_2) {
- InfoMessage( _("Select other end of Bezier - snap to %s end"), Da.track?"unconnected track":"line" );
+ InfoMessage( _("Select other end of Bezier - snap to %s end"),
+ Da.track?"unconnected track":"line" );
}
if (Da.state == CONTROL_ARM_1 ) {
if (Da.trk[0]) {
- EPINX_T ep = 0;
+// EPINX_T ep = 0;
ANGLE_T angle1,angle2;
angle1 = NormalizeAngle(GetTrkEndAngle(Da.trk[0],Da.ep[0]));
angle2 = NormalizeAngle(FindAngle(pos, Da.pos[0])-angle1);
- if (angle2 > 90.0 && angle2 < 270.0)
- Translate( &pos, Da.pos[0], angle1, -FindDistance( Da.pos[0], pos )*cos(D2R(angle2)));
- else pos = Da.pos[0];
+ if (angle2 > 90.0 && angle2 < 270.0) {
+ Translate( &pos, Da.pos[0], angle1, -FindDistance( Da.pos[0],
+ pos )*cos(D2R(angle2)));
+ } else { pos = Da.pos[0]; }
} // Don't Snap control points
Da.pos[1] = pos;
- Da.cp1Segs_da_cnt = createControlArm(Da.cp1Segs_da, Da.pos[0], Da.pos[1], Da.track, TRUE, Da.trk[0]!=NULL, 1, wDrawColorBlack);
+ Da.cp1Segs_da_cnt = createControlArm(Da.cp1Segs_da, Da.pos[0], Da.pos[1],
+ Da.track, TRUE, Da.trk[0]!=NULL, 1, wDrawColorBlack);
} else {
- return AdjustBezCurve( action&0xFF, pos, Da.track, Da.color, Da.width, InfoMessage );
+ return AdjustBezCurve( action&0xFF, pos, Da.track, lineColor, lineWidth,
+ InfoMessage );
}
return C_CONTINUE;
case C_UP:
if (Da.state == CONTROL_ARM_1) {
if (Da.trk[0]) {
- EPINX_T ep = Da.ep[0];
+// EPINX_T ep = Da.ep[0];
ANGLE_T angle1,angle2;
angle1 = NormalizeAngle(GetTrkEndAngle(Da.trk[0],Da.ep[0]));
angle2 = NormalizeAngle(FindAngle(pos, Da.pos[0])-angle1);
- if (angle2 > 90.0 && angle2 < 270.0)
- Translate( &pos, Da.pos[0], angle1, -FindDistance( Da.pos[0], pos )*cos(D2R(angle2)));
- else pos = Da.pos[0];
+ if (angle2 > 90.0 && angle2 < 270.0) {
+ Translate( &pos, Da.pos[0], angle1, -FindDistance( Da.pos[0],
+ pos )*cos(D2R(angle2)));
+ } else { pos = Da.pos[0]; }
} // Don't Snap control points
Da.pos[1] = pos;
if (FindDistance(Da.pos[0],Da.pos[1]) <=minLength) {
@@ -1162,26 +1233,32 @@ STATUS_T CmdBezCurve( wAction_t action, coOrd pos )
return C_CONTINUE;
}
Da.state = POS_2;
- InfoMessage( _("Select other end of Bezier - snap to %s end"), Da.track?"Unconnected Track":"Line" );
- Da.cp1Segs_da_cnt = createControlArm(Da.cp1Segs_da, Da.pos[0], Da.pos[1], Da.track, FALSE, Da.trk[0]!=NULL, -1, wDrawColorBlack);
+ InfoMessage( _("Select other end of Bezier - snap to %s end"),
+ Da.track?"Unconnected Track":"Line" );
+ Da.cp1Segs_da_cnt = createControlArm(Da.cp1Segs_da, Da.pos[0], Da.pos[1],
+ Da.track, FALSE, Da.trk[0]!=NULL, -1, wDrawColorBlack);
return C_CONTINUE;
} else {
- return AdjustBezCurve( action&0xFF, pos, Da.track, Da.color, Da.width, InfoMessage );
+ return AdjustBezCurve( action&0xFF, pos, Da.track, lineColor, lineWidth,
+ InfoMessage );
}
case C_TEXT:
- if (Da.state != PICK_POINT || (action>>8) != ' ') //Space is same as Enter.
- return C_CONTINUE;
- /* no break */
- case C_OK:
- if (Da.state != PICK_POINT) return C_CONTINUE;
- return AdjustBezCurve( C_OK, pos, Da.track, Da.color, Da.width, InfoMessage);
+ if (Da.state != PICK_POINT || (action>>8) != ' ') { //Space is same as Enter.
+ return C_CONTINUE;
+ }
+ /* no break */
+ case C_OK:
+ if (Da.state != PICK_POINT) { return C_CONTINUE; }
+ return AdjustBezCurve( C_OK, pos, Da.track, lineColor, lineWidth, InfoMessage);
case C_REDRAW:
if ( Da.state != NONE ) {
- DrawBezCurve(Da.cp1Segs_da,Da.cp1Segs_da_cnt,Da.cp2Segs_da,Da.cp2Segs_da_cnt,(trkSeg_t *)Da.crvSegs_da.ptr,Da.crvSegs_da.cnt, Da.color);
+ DrawBezCurve(Da.cp1Segs_da,Da.cp1Segs_da_cnt,Da.cp2Segs_da,Da.cp2Segs_da_cnt,
+ &DYNARR_N( trkSeg_t, Da.crvSegs_da, 0 ),
+ Da.crvSegs_da.cnt, lineColor);
}
- 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 );
return C_CONTINUE;
case C_CANCEL:
@@ -1189,40 +1266,27 @@ STATUS_T CmdBezCurve( wAction_t action, coOrd pos )
Da.cp1Segs_da_cnt = 0;
Da.cp2Segs_da_cnt = 0;
Da.crvSegs_da_cnt = 0;
- for (int i=0;i<2;i++) {
+ for (int i=0; i<2; i++) {
Da.trk[i] = NULL;
Da.ep[i] = -1;
}
- if (Da.crvSegs_da.ptr) MyFree(Da.crvSegs_da.ptr);
- Da.crvSegs_da.ptr = NULL;
- Da.crvSegs_da.cnt = 0;
- Da.crvSegs_da.max = 0;
+ DYNARR_FREE( trkSeg_t, Da.crvSegs_da );
}
Da.state = NONE;
return C_CONTINUE;
-
- default:
-
- return C_CONTINUE;
- }
-}
+ default:
-void UpdateParms(wDrawColor color,long width) {
- Da.color = lineColor;
- Da.width = (double)lineWidth/mainD.dpi;
- if (Da.crvSegs_da.cnt) {
- ConvertToArcs(Da.pos,&Da.crvSegs_da,Da.track,Da.color,Da.width);
+ return C_CONTINUE;
}
- DrawTempBezier(Da.track);
}
-#include "bitmaps/bezier-track.xpm"
-#include "bitmaps/bezier-line.xpm"
+//#include "bitmaps/bezier-track.xpm"
+//#include "bitmaps/bezier-line.xpm"
EXPORT void InitCmdBezier( wMenu_p menu )
-{
+{
}
diff --git a/app/bin/cbezier.h b/app/bin/cbezier.h
index 74ef51f..2cd72d9 100644
--- a/app/bin/cbezier.h
+++ b/app/bin/cbezier.h
@@ -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 "common.h"
@@ -32,23 +32,21 @@ extern dynArr_t tempEndPts_da;
#define bezCmdCreateTrack (3)
#define bezCmdCreateLine (4)
-extern wDrawColor lineColor;
-extern long lineWidth;
-
typedef void (*bezMessageProc)( const char *, ... );
STATUS_T CmdBezCurve( wAction_t, coOrd);
STATUS_T CmdBezModify(track_p, wAction_t, coOrd, DIST_T);
-STATUS_T CreateBezier( wAction_t, coOrd, BOOL_T, wDrawColor, DIST_T, long, bezMessageProc );
+STATUS_T CreateBezier( wAction_t, coOrd, BOOL_T, wDrawColor, DIST_T, long,
+ bezMessageProc );
DIST_T BezierDescriptionDistance( coOrd, track_p, coOrd *, BOOL_T, BOOL_T * );
STATUS_T BezierDescriptionMove( track_p, wAction_t, coOrd );
-BOOL_T ConvertToArcs (coOrd[4], dynArr_t *, BOOL_T, wDrawColor, DIST_T);
+BOOL_T ConvertToArcs (coOrd[4], dynArr_t *, BOOL_T, wDrawColor, LWIDTH_T);
track_p NewBezierTrack(coOrd[4], trkSeg_p, int);
double BezierLength(coOrd[4], dynArr_t);
double BezierOffsetLength(dynArr_t,double offset);
double BezierMinRadius(coOrd[4],dynArr_t);
-void UpdateParms(wDrawColor color,long width);
+void UpdateParms(wDrawColor color,LWIDTH_T lineWidth);
void addSegBezier(dynArr_t * array_p, trkSeg_p seg);
diff --git a/app/bin/cblock.c b/app/bin/cblock.c
index 0291b4a..bc23e14 100644
--- a/app/bin/cblock.c
+++ b/app/bin/cblock.c
@@ -40,7 +40,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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* T_BLOCK
* $Header: /home/dmarkle/xtrkcad-fork-cvs/xtrkcad/app/bin/cblock.c,v 1.5 2009-11-23 19:46:16 rheller Exp $
@@ -53,7 +53,7 @@
#include "fileio.h"
#include "param.h"
#include "track.h"
-#include "trackx.h"
+#include "trkendpt.h"
#include "common-ui.h"
#ifdef UTFCONVERT
@@ -65,19 +65,20 @@ EXPORT TRKTYP_T T_BLOCK = -1;
static int log_block = 0;
static void NoDrawLine(drawCmd_p d, coOrd p0, coOrd p1, wDrawWidth width,
- wDrawColor color ) {}
+ wDrawColor color ) {}
static void NoDrawArc(drawCmd_p d, coOrd p, DIST_T r, ANGLE_T angle0,
- ANGLE_T angle1, BOOL_T drawCenter, wDrawWidth width,
- wDrawColor color ) {}
+ ANGLE_T angle1, BOOL_T drawCenter, wDrawWidth width,
+ wDrawColor color ) {}
static void NoDrawString( drawCmd_p d, coOrd p, ANGLE_T a, char * s,
- wFont_p fp, FONTSIZE_T fontSize, wDrawColor color ) {}
+ wFont_p fp, FONTSIZE_T fontSize, wDrawColor color ) {}
static void NoDrawBitMap( drawCmd_p d, coOrd p, wDrawBitMap_p bm,
- wDrawColor color) {}
+ wDrawColor color) {}
static void NoDrawPoly( drawCmd_p d, int cnt, coOrd * pts, int * types,
- wDrawColor color, wDrawWidth width, drawFill_e eFillOpt ) {}
+ wDrawColor color, wDrawWidth width, drawFill_e eFillOpt ) {}
static void NoDrawFillCircle( drawCmd_p d, coOrd p, DIST_T r,
- wDrawColor color ) {}
-static void NoDrawRectangle( drawCmd_p d, coOrd orig, coOrd size, wDrawColor color, drawFill_e eFill ) {}
+ wDrawColor color ) {}
+static void NoDrawRectangle( drawCmd_p d, coOrd orig, coOrd size,
+ wDrawColor color, drawFill_e eFill ) {}
static drawFuncs_t noDrawFuncs = {
NoDrawLine,
@@ -86,7 +87,8 @@ static drawFuncs_t noDrawFuncs = {
NoDrawBitMap,
NoDrawPoly,
NoDrawFillCircle,
- NoDrawRectangle};
+ NoDrawRectangle
+};
static drawCmd_t blockD = {
NULL,
@@ -95,7 +97,8 @@ static drawCmd_t blockD = {
1.0,
0.0,
{0.0,0.0}, {0.0,0.0},
- Pix2CoOrd, CoOrd2Pix };
+ Pix2CoOrd, CoOrd2Pix
+};
static char blockName[STR_SHORT_SIZE];
static char blockScript[STR_LONG_SIZE];
@@ -104,8 +107,8 @@ static track_p first_block;
static track_p last_block;
static paramData_t blockPLs[] = {
-/*0*/ { PD_STRING, blockName, "name", PDO_NOPREF | PDO_NOTBLANK, I2VP(200), N_("Name"), 0, 0, sizeof( blockName )},
-/*1*/ { PD_STRING, blockScript, "script", PDO_NOPREF, I2VP(350), N_("Script"), 0, 0, sizeof( blockScript)}
+ /*0*/ { PD_STRING, blockName, "name", PDO_NOPREF | PDO_NOTBLANK, I2VP(200), N_("Name"), 0, 0, sizeof( blockName )},
+ /*1*/ { PD_STRING, blockScript, "script", PDO_NOPREF, I2VP(350), N_("Script"), 0, 0, sizeof( blockScript)}
};
static paramGroup_t blockPG = { "block", 0, blockPLs, COUNT( blockPLs ) };
static wWin_p blockW;
@@ -116,16 +119,16 @@ static char blockEditSegs[STR_LONG_SIZE];
static track_p blockEditTrack;
static paramData_t blockEditPLs[] = {
-/*0*/ { PD_STRING, blockEditName, "name", PDO_NOPREF | PDO_NOTBLANK, I2VP(200), N_("Name"), 0, 0, sizeof(blockEditName)},
-/*1*/ { PD_STRING, blockEditScript, "script", PDO_NOPREF, I2VP(350), N_("Script"), 0, 0, sizeof(blockEditScript)},
-/*2*/ { PD_STRING, blockEditSegs, "segments", PDO_NOPREF, I2VP(350), N_("Segments"), BO_READONLY, 0, sizeof(blockEditSegs) },
+ /*0*/ { PD_STRING, blockEditName, "name", PDO_NOPREF | PDO_NOTBLANK, I2VP(200), N_("Name"), 0, 0, sizeof(blockEditName)},
+ /*1*/ { PD_STRING, blockEditScript, "script", PDO_NOPREF, I2VP(350), N_("Script"), 0, 0, sizeof(blockEditScript)},
+ /*2*/ { PD_STRING, blockEditSegs, "segments", PDO_NOPREF, I2VP(350), N_("Segments"), BO_READONLY, 0, sizeof(blockEditSegs) },
};
static paramGroup_t blockEditPG = { "block", 0, blockEditPLs, COUNT( blockEditPLs ) };
static wWin_p blockEditW;
typedef struct btrackinfo_t {
- track_p t;
- TRKINX_T i;
+ track_p t;
+ TRKINX_T i;
} btrackinfo_t, *btrackinfo_p;
static dynArr_t blockTrk_da;
@@ -136,13 +139,13 @@ static dynArr_t blockTrk_da;
typedef struct blockData_t {
- extraDataBase_t base;
- char * name;
- char * script;
- BOOL_T IsHilite;
- track_p next_block;
- wIndex_t numTracks;
- btrackinfo_t trackList;
+ extraDataBase_t base;
+ char * name;
+ char * script;
+ BOOL_T IsHilite;
+ track_p next_block;
+ wIndex_t numTracks;
+ btrackinfo_t trackList;
} blockData_t, *blockData_p;
static blockData_p GetblockData ( track_p trk )
@@ -163,14 +166,16 @@ static struct {
typedef enum { NM, SC, LN, E0, E1 } blockDesc_e;
static descData_t blockDesc[] = {
-/*NM*/ { DESC_STRING, N_("Name"), &blockData.name, sizeof(blockData.name) },
-/*SC*/ { DESC_STRING, N_("Script"), &blockData.script, sizeof(blockData.script) },
-/*LN*/ { DESC_DIM, N_("Length"), &blockData.length },
-/*E0*/ { DESC_POS, N_("End Pt 1: X,Y"), &blockData.endPt[0] },
-/*E1*/ { DESC_POS, N_("End Pt 2: X,Y"), &blockData.endPt[1] },
- { DESC_NULL } };
-
-static void UpdateBlock (track_p trk, int inx, descData_p descUpd, BOOL_T needUndoStart )
+ /*NM*/ { DESC_STRING, N_("Name"), &blockData.name, sizeof(blockData.name) },
+ /*SC*/ { DESC_STRING, N_("Script"), &blockData.script, sizeof(blockData.script) },
+ /*LN*/ { DESC_DIM, N_("Length"), &blockData.length },
+ /*E0*/ { DESC_POS, N_("End Pt 1: X,Y"), &blockData.endPt[0] },
+ /*E1*/ { DESC_POS, N_("End Pt 2: X,Y"), &blockData.endPt[1] },
+ { DESC_NULL }
+};
+
+static void UpdateBlock (track_p trk, int inx, descData_p descUpd,
+ BOOL_T needUndoStart )
{
blockData_p xx = GetblockData(trk);
const char * thename, *thescript;
@@ -191,7 +196,7 @@ static void UpdateBlock (track_p trk, int inx, descData_p descUpd, BOOL_T needUn
strncpy(newName, thename, max_str - 1);
newName[max_str-1] = '\0';
NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str-1);
- } else newName = MyStrdup(thename);
+ } else { newName = MyStrdup(thename); }
}
thescript = wStringGetValue( (wString_p)blockDesc[SC].control0 );
@@ -203,18 +208,19 @@ static void UpdateBlock (track_p trk, int inx, descData_p descUpd, BOOL_T needUn
strncpy(newScript, thescript, max_str - 1);
newScript[max_str-1] = '\0';
NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str-1);
- } else newScript = MyStrdup(thescript);
+ } else { newScript = MyStrdup(thescript); }
}
- if ( ! changed ) return;
- if ( needUndoStart )
+ if ( ! changed ) { return; }
+ if ( needUndoStart ) {
UndoStart( _("Change block"), "Change block" );
+ }
UndoModify( trk );
if (nChanged) {
- if (xx->name) MyFree(xx->name);
+ if (xx->name) { MyFree(xx->name); }
xx->name = newName;
}
if (sChanged) {
- if (xx->script) MyFree(xx->script);
+ if (xx->script) { MyFree(xx->script); }
xx->script = newScript;
}
return;
@@ -231,7 +237,7 @@ static DIST_T DistanceBlock (track_p t, coOrd * p )
coOrd best_pos = pos;
for (iTrk = 0; iTrk < xx->numTracks; iTrk++) {
pos = *p;
- if ((&(xx->trackList))[iTrk].t == NULL) continue;
+ if ((&(xx->trackList))[iTrk].t == NULL) { continue; }
current = GetTrkDistance ((&(xx->trackList))[iTrk].t, &pos);
if (current < closest) {
closest = current;
@@ -246,13 +252,14 @@ static void DescribeBlock (track_p trk, char * str, CSIZE_T len )
{
blockData_p xx = GetblockData(trk);
wIndex_t tcount = 0;
- track_p lastTrk = NULL;
+// track_p lastTrk = NULL;
long listLabelsOption = listLabels;
LOG( log_block, 1, ("*** DescribeBlock(): trk is T%d\n",GetTrkIndex(trk)))
FormatCompoundTitle( listLabelsOption, xx->name );
- if (message[0] == '\0')
+ if (message[0] == '\0') {
FormatCompoundTitle( listLabelsOption|LABEL_DESCR, xx->name );
+ }
strcpy( str, _(GetTrkTypeName( trk )) );
str++;
while (*str) {
@@ -260,7 +267,7 @@ static void DescribeBlock (track_p trk, char * str, CSIZE_T len )
str++;
}
sprintf( str, _("(%d): Layer=%u %s"),
- GetTrkIndex(trk), GetTrkLayer(trk)+1, message );
+ GetTrkIndex(trk), GetTrkLayer(trk)+1, message );
blockData.name[0] = '\0';
strncat(blockData.name,xx->name,STR_SHORT_SIZE-1);
blockData.script[0] = '\0';
@@ -268,21 +275,21 @@ static void DescribeBlock (track_p trk, char * str, CSIZE_T len )
blockData.length = 0;
BOOL_T first = TRUE;
for (tcount = 0; tcount < xx->numTracks; tcount++) {
- if ((&(xx->trackList))[tcount].t == NULL) continue;
- if (first) {
- blockData.endPt[0] = GetTrkEndPos((&(xx->trackList))[tcount].t,0);
- first = FALSE;
- }
- blockData.endPt[1] = GetTrkEndPos((&(xx->trackList))[tcount].t,1);
- blockData.length += GetTrkLength((&(xx->trackList))[tcount].t,0,1);
- tcount++;
- break;
+ if ((&(xx->trackList))[tcount].t == NULL) { continue; }
+ if (first) {
+ blockData.endPt[0] = GetTrkEndPos((&(xx->trackList))[tcount].t,0);
+ first = FALSE;
+ }
+ blockData.endPt[1] = GetTrkEndPos((&(xx->trackList))[tcount].t,1);
+ blockData.length += GetTrkLength((&(xx->trackList))[tcount].t,0,1);
+ tcount++;
+ break;
}
blockDesc[E0].mode =
- blockDesc[E1].mode =
- blockDesc[LN].mode = DESC_RO;
+ blockDesc[E1].mode =
+ blockDesc[LN].mode = DESC_RO;
blockDesc[NM].mode =
- blockDesc[SC].mode = DESC_NOREDRAW;
+ blockDesc[SC].mode = DESC_NOREDRAW;
DoDescribe(_("Block"), trk, blockDesc, UpdateBlock );
}
@@ -297,25 +304,26 @@ static int blockDebug (track_p trk)
LOG( log_block, 1, ("*** blockDebug(): script = \"%s\"\n",xx->script))
LOG( log_block, 1, ("*** blockDebug(): numTracks = %d\n",xx->numTracks))
for (iTrack = 0; iTrack < xx->numTracks; iTrack++) {
- if ((&(xx->trackList))[iTrack].t == NULL) continue;
- LOG( log_block, 1, ("*** blockDebug(): trackList[%d] = T%d, ",iTrack,GetTrkIndex((&(xx->trackList))[iTrack].t)))
+ if ((&(xx->trackList))[iTrack].t == NULL) { continue; }
+ LOG( log_block, 1, ("*** blockDebug(): trackList[%d] = T%d, ",iTrack,
+ GetTrkIndex((&(xx->trackList))[iTrack].t)))
LOG( log_block, 1, ("%s\n",GetTrkTypeName((&(xx->trackList))[iTrack].t)))
}
return(0);
}
-static BOOL_T blockCheckContigiousPath()
+static BOOL_T blockCheckContiguousPath()
{
EPINX_T ep, epCnt, epN;
int inx;
track_p trk, trk1;
DIST_T dist;
ANGLE_T angle;
- /*int pathElemStart = 0;*/
+ /*int pathElemStart = 0;*/
coOrd endPtOrig = zero;
BOOL_T IsConnectedP;
trkEndPt_p endPtP;
- DYNARR_RESET( trkEndPt_t, tempEndPts_da );
+ TempEndPtsReset();
for ( inx=0; inx<blockTrk_da.cnt; inx++ ) {
trk = blockTrk(inx).t;
@@ -325,51 +333,54 @@ static BOOL_T blockCheckContigiousPath()
trk1 = GetTrkEndTrk(trk,ep);
if ( trk1 == NULL || !GetTrkSelected(trk1) ) {
/* boundary EP */
- for ( epN=0; epN<tempEndPts_da.cnt; epN++ ) {
- dist = FindDistance( GetTrkEndPos(trk,ep), tempEndPts(epN).pos );
- angle = NormalizeAngle( GetTrkEndAngle(trk,ep) - tempEndPts(epN).angle + connectAngle/2.0 );
- if ( dist < connectDistance && angle < connectAngle )
+ for ( epN=0; epN<TempEndPtsCount(); epN++ ) {
+ endPtP = TempEndPt(epN);
+ dist = FindDistance( GetTrkEndPos(trk,ep), GetEndPtPos(endPtP) );
+ angle = NormalizeAngle( GetTrkEndAngle(trk,
+ ep) - GetEndPtAngle(endPtP) + connectAngle/2.0 );
+ if ( dist < connectDistance && angle < connectAngle ) {
break;
+ }
}
- if ( epN>=tempEndPts_da.cnt ) {
- DYNARR_APPEND( trkEndPt_t, tempEndPts_da, 10 );
- endPtP = &tempEndPts(tempEndPts_da.cnt-1);
- memset( endPtP, 0, sizeof *endPtP );
- endPtP->pos = GetTrkEndPos(trk,ep);
- endPtP->angle = GetTrkEndAngle(trk,ep);
+ if ( epN>=TempEndPtsCount() ) {
+ endPtP = TempEndPtsAppend();
+ SetEndPt( endPtP, GetTrkEndPos(trk,ep), GetTrkEndAngle(trk,ep) );
/*endPtP->track = trk1;*/
/* These End Points are dummies --
we don't want DeleteTrack to look at
them. */
- endPtP->track = NULL;
- endPtP->index = (trk1?GetEndPtConnectedToMe(trk1,trk):-1);
- endPtOrig.x += endPtP->pos.x;
- endPtOrig.y += endPtP->pos.y;
+ SetEndPtTrack( endPtP, NULL );
+ // TODO-EPP What is this for?
+ SetEndPtEndPt( endPtP, (trk1?GetEndPtConnectedToMe(trk1,trk):-1) );
+ endPtOrig.x += GetEndPtPos(endPtP).x;
+ endPtOrig.y += GetEndPtPos(endPtP).y;
}
} else {
IsConnectedP = TRUE;
}
}
- if (!IsConnectedP && blockTrk_da.cnt > 1) return FALSE;
+ if (!IsConnectedP && blockTrk_da.cnt > 1) { return FALSE; }
}
return TRUE;
}
static void DeleteBlock ( track_p t )
{
- track_p trk1;
- blockData_p xx1;
+ track_p trk1;
+ blockData_p xx1;
LOG( log_block, 1, ("*** DeleteBlock(%p)\n",t))
blockData_p xx = GetblockData(t);
LOG( log_block, 1, ("*** DeleteBlock(): index is %d\n",GetTrkIndex(t)))
- LOG( log_block, 1, ("*** DeleteBlock(): xx = %p, xx->name = %p, xx->script = %p\n",
- xx,xx->name,xx->script))
+ LOG( log_block, 1,
+ ("*** DeleteBlock(): xx = %p, xx->name = %p, xx->script = %p\n",
+ xx,xx->name,xx->script))
MyFree(xx->name); xx->name = NULL;
MyFree(xx->script); xx->script = NULL;
- if (first_block == t)
- first_block = xx->next_block;
+ if (first_block == t) {
+ first_block = xx->next_block;
+ }
trk1 = first_block;
while(trk1) {
xx1 = GetblockData (trk1);
@@ -379,8 +390,9 @@ static void DeleteBlock ( track_p t )
}
trk1 = xx1->next_block;
}
- if (t == last_block)
+ if (t == last_block) {
last_block = trk1;
+ }
}
@@ -396,11 +408,11 @@ static BOOL_T WriteBlock ( track_p t, FILE * f )
#endif // UTFCONVERT
rc &= fprintf(f, "BLOCK %d \"%s\" \"%s\"\n",
- GetTrkIndex(t), blockName, xx->script)>0;
+ GetTrkIndex(t), blockName, xx->script)>0;
for (iTrack = 0; iTrack < xx->numTracks && rc; iTrack++) {
- if ((&(xx->trackList))[iTrack].t == NULL) continue;
+ if ((&(xx->trackList))[iTrack].t == NULL) { continue; }
rc &= fprintf(f, "\tTRK %d\n",
- GetTrkIndex((&(xx->trackList))[iTrack].t))>0;
+ GetTrkIndex((&(xx->trackList))[iTrack].t))>0;
}
rc &= fprintf( f, "\t%s\n", END_BLOCK )>0;
MyFree(blockName);
@@ -429,37 +441,39 @@ static BOOL_T ReadBlock ( char * line )
#endif // UTFCONVERT
- DYNARR_RESET( btrackinfo_t , blockTrk_da );
+ DYNARR_RESET( btrackinfo_t, blockTrk_da );
while ( (cp = GetNextLine()) != NULL ) {
if ( IsEND( END_BLOCK ) ) {
break;
}
- while (isspace((unsigned char)*cp)) cp++;
+ while (isspace((unsigned char)*cp)) { cp++; }
if ( *cp == '\n' || *cp == '#' ) {
continue;
}
if ( strncmp( cp, "TRK", 3 ) == 0 ) {
- if (!GetArgs(cp+4,"d",&trkindex)) return FALSE;
+ if (!GetArgs(cp+4,"d",&trkindex)) { return FALSE; }
/*trk = FindTrack(trkindex);*/
DYNARR_APPEND( btrackinfo_t, blockTrk_da, 10 );
DYNARR_LAST( btrackinfo_t, blockTrk_da ).i = trkindex;
}
}
/*blockCheckContigiousPath(); save for ResolveBlockTracks */
- trk = NewTrack(index, T_BLOCK, tempEndPts_da.cnt, sizeof(blockData_t)+(sizeof(btrackinfo_t)*(blockTrk_da.cnt))+1);
- for ( ep=0; ep<tempEndPts_da.cnt; ep++) {
- endPtP = &tempEndPts(ep);
- SetTrkEndPoint( trk, ep, endPtP->pos, endPtP->angle );
+ trk = NewTrack(index, T_BLOCK, TempEndPtsCount(),
+ sizeof(blockData_t)+(sizeof(btrackinfo_t)*(blockTrk_da.cnt))+1);
+ for ( ep=0; ep<TempEndPtsCount(); ep++) {
+ endPtP = TempEndPt(ep);
+ SetTrkEndPoint( trk, ep, GetEndPtPos(endPtP), GetEndPtAngle(endPtP) );
}
xx = GetblockData( trk );
- LOG( log_block, 1, ("*** ReadBlock(): trk = %p (%d), xx = %p\n",trk,GetTrkIndex(trk),xx))
+ LOG( log_block, 1, ("*** ReadBlock(): trk = %p (%d), xx = %p\n",trk,
+ GetTrkIndex(trk),xx))
LOG( log_block, 1, ("*** ReadBlock(): name = %p, script = %p\n",name,script))
xx->name = name;
xx->script = script;
xx->IsHilite = FALSE;
xx->numTracks = blockTrk_da.cnt;
trk1 = last_block;
- if (!trk1) first_block = trk;
+ if (!trk1) { first_block = trk; }
else {
xx1 = GetblockData(trk1);
xx1->next_block = trk;
@@ -477,21 +491,23 @@ static BOOL_T ReadBlock ( char * line )
EXPORT void ResolveBlockTrack ( track_p trk )
{
- LOG( log_block, 1, ("*** ResolveBlockTrack(%p)\n",trk))
- blockData_p xx;
- track_p t_trk;
- wIndex_t iTrack;
- if (GetTrkType(trk) != T_BLOCK) return;
- LOG( log_block, 1, ("*** ResolveBlockTrack(%d)\n",GetTrkIndex(trk)))
- xx = GetblockData(trk);
- for (iTrack = 0; iTrack < xx->numTracks; iTrack++) {
- t_trk = FindTrack(tracklist(iTrack).i);
- if (t_trk == NULL) {
- NoticeMessage( _("resolveBlockTrack: T%d[%d]: T%d doesn't exist"), _("Continue"), NULL, GetTrkIndex(trk), iTrack, tracklist(iTrack).i,t_trk );
- }
- tracklist(iTrack).t = t_trk;
- LOG( log_block, 1, ("*** ResolveBlockTrack(): %d (%d): %p\n",iTrack,tracklist(iTrack).i,t_trk))
- }
+ LOG( log_block, 1, ("*** ResolveBlockTrack(%p)\n",trk))
+ blockData_p xx;
+ track_p t_trk;
+ wIndex_t iTrack;
+ if (GetTrkType(trk) != T_BLOCK) { return; }
+ LOG( log_block, 1, ("*** ResolveBlockTrack(%d)\n",GetTrkIndex(trk)))
+ xx = GetblockData(trk);
+ for (iTrack = 0; iTrack < xx->numTracks; iTrack++) {
+ t_trk = FindTrack(tracklist(iTrack).i);
+ if (t_trk == NULL) {
+ NoticeMessage( _("resolveBlockTrack: T%d[%d]: T%d doesn't exist"),
+ _("Continue"), NULL, GetTrkIndex(trk), iTrack, tracklist(iTrack).i,t_trk );
+ }
+ tracklist(iTrack).t = t_trk;
+ LOG( log_block, 1, ("*** ResolveBlockTrack(): %d (%d): %p\n",iTrack,
+ tracklist(iTrack).i,t_trk))
+ }
}
static void MoveBlock (track_p trk, coOrd orig ) {}
@@ -533,24 +549,26 @@ static trackCmd_t blockCmds = {
-static BOOL_T TrackInBlock (track_p trk, track_p blk) {
+static BOOL_T TrackInBlock (track_p trk, track_p blk)
+{
wIndex_t iTrack;
blockData_p xx = GetblockData(blk);
for (iTrack = 0; iTrack < xx->numTracks; iTrack++) {
- if (trk == (&(xx->trackList))[iTrack].t) return TRUE;
+ if (trk == (&(xx->trackList))[iTrack].t) { return TRUE; }
}
return FALSE;
}
-static track_p FindBlock (track_p trk) {
+static track_p FindBlock (track_p trk)
+{
track_p a_trk;
blockData_p xx;
- if (!first_block) return NULL;
+ if (!first_block) { return NULL; }
a_trk = first_block;
while (a_trk) {
if (!IsTrackDeleted(a_trk)) {
if (GetTrkType(a_trk) == T_BLOCK &&
- TrackInBlock(trk,a_trk)) return a_trk;
+ TrackInBlock(trk,a_trk)) { return a_trk; }
}
xx = GetblockData(a_trk);
a_trk = xx->next_block;
@@ -599,8 +617,8 @@ static void BlockOk ( void * junk )
}
/* Need to check that all block elements are connected to each
other... */
- if (!blockCheckContigiousPath()) {
- NoticeMessage( _("Block is discontigious!"), _("Ok"), NULL );
+ if (!blockCheckContiguousPath()) {
+ NoticeMessage( _("Block is discontiguous!"), _("Ok"), NULL );
wDrawDelayUpdate( mainD.d, FALSE );
wHide( blockW );
return;
@@ -608,23 +626,24 @@ static void BlockOk ( void * junk )
UndoStart( _("Create block"), "Create block" );
/* Create a block object */
LOG( log_block, 1, ("*** BlockOk(): %d tracks in block\n",blockTrk_da.cnt))
- trk = NewTrack(0, T_BLOCK, tempEndPts_da.cnt, sizeof(blockData_t)+(sizeof(btrackinfo_t)*(blockTrk_da.cnt-1))+1);
- for ( ep=0; ep<tempEndPts_da.cnt; ep++) {
- endPtP = &tempEndPts(ep);
- SetTrkEndPoint( trk, ep, endPtP->pos, endPtP->angle );
+ trk = NewTrack(0, T_BLOCK, TempEndPtsCount(),
+ sizeof(blockData_t)+(sizeof(btrackinfo_t)*(blockTrk_da.cnt-1))+1);
+ for ( ep=0; ep<TempEndPtsCount(); ep++) {
+ endPtP = TempEndPt(ep);
+ SetTrkEndPoint( trk, ep, GetEndPtPos(endPtP), GetEndPtAngle(endPtP) );
}
xx = GetblockData( trk );
- LOG(log_block, 1, ("*** BlockOk(): trk = %p (%d), xx = %p\n", trk, GetTrkIndex(trk), xx))
+ LOG(log_block, 1, ("*** BlockOk(): trk = %p (%d), xx = %p\n", trk,
+ GetTrkIndex(trk), xx))
xx->name = MyStrdup(blockName);
xx->script = MyStrdup(blockScript);
- xx->IsHilite = FALSE;
+ xx->IsHilite = FALSE;
xx->numTracks = blockTrk_da.cnt;
trk1 = last_block;
if (!trk1) {
first_block = trk;
- }
- else {
+ } else {
xx1 = GetblockData(trk1);
xx1->next_block = trk;
}
@@ -667,10 +686,11 @@ static void NewBlockDialog()
ErrorMessage( MSG_NO_SELECTED_TRK );
return;
}
- if ( log_block < 0 ) log_block = LogFindIndex( "block" );
+ if ( log_block < 0 ) { log_block = LogFindIndex( "block" ); }
if ( !blockW ) {
ParamRegister( &blockPG );
- blockW = ParamCreateDialog (&blockPG, MakeWindowTitle(_("Create Block")), _("Ok"), BlockOk, wHide, TRUE, NULL, F_BLOCK, NULL );
+ blockW = ParamCreateDialog (&blockPG, MakeWindowTitle(_("Create Block")),
+ _("Ok"), BlockOk, wHide, TRUE, NULL, F_BLOCK, NULL );
blockD.dpi = mainD.dpi;
}
ParamLoadControls( &blockPG );
@@ -682,7 +702,7 @@ static STATUS_T CmdBlockCreate( wAction_t action, coOrd pos )
LOG( log_block, 1, ("*** CmdBlockAction(%08x,{%f,%f})\n",action,pos.x,pos.y))
switch (action & 0xFF) {
case C_START:
- LOG( log_block, 1,("*** CmdBlockCreate(): C_START\n"))
+ LOG( log_block, 1,("*** CmdBlockCreate(): C_START\n"))
NewBlockDialog();
return C_TERMINATE;
default:
@@ -691,7 +711,6 @@ static STATUS_T CmdBlockCreate( wAction_t action, coOrd pos )
}
#if 0
-extern BOOL_T inDescribeCmd;
static STATUS_T CmdBlockEdit( wAction_t action, coOrd pos )
{
@@ -745,7 +764,8 @@ static STATUS_T CmdBlockDelete( wAction_t action, coOrd pos )
}
/* Confirm Delete Block */
xx = GetblockData(btrk);
- if ( NoticeMessage( _("Really delete block %s?"), _("Yes"), _("No"), xx->name) ) {
+ if ( NoticeMessage( _("Really delete block %s?"), _("Yes"), _("No"),
+ xx->name) ) {
UndoStart( _("Delete Block"), "delete" );
DeleteTrack (btrk, FALSE);
UndoEnd();
@@ -781,74 +801,74 @@ static STATUS_T CmdBlock (wAction_t action, coOrd pos )
void CheckDeleteBlock(track_p t)
{
- track_p blk;
- blockData_p xx;
- if (!IsTrack(t)) {
- return;
- }
- blk = FindBlock(t);
- if (blk == NULL) {
- return;
- }
- xx = GetblockData(blk);
- NoticeMessage(_("Deleting block %s"),_("Ok"),NULL,xx->name);
- DeleteTrack(blk,FALSE);
+ track_p blk;
+ blockData_p xx;
+ if (!IsTrack(t)) {
+ return;
+ }
+ blk = FindBlock(t);
+ if (blk == NULL) {
+ return;
+ }
+ xx = GetblockData(blk);
+ NoticeMessage(_("Deleting block %s"),_("Ok"),NULL,xx->name);
+ DeleteTrack(blk,FALSE);
}
static void BlockEditOk ( void * junk )
{
- blockData_p xx;
- track_p trk;
-
- LOG( log_block, 1, ("*** BlockEditOk()\n"))
- ParamUpdate (&blockEditPG );
- if ( blockEditName[0]==0 ) {
- NoticeMessage( _("Block must have a name!"), _("Ok"), NULL);
- return;
- }
- wDrawDelayUpdate( mainD.d, TRUE );
- UndoStart( _("Modify Block"), "Modify Block" );
- trk = blockEditTrack;
- xx = GetblockData( trk );
- xx->name = MyStrdup(blockEditName);
- xx->script = MyStrdup(blockEditScript);
- blockDebug(trk);
- UndoEnd();
- wHide( blockEditW );
+ blockData_p xx;
+ track_p trk;
+
+ LOG( log_block, 1, ("*** BlockEditOk()\n"))
+ ParamUpdate (&blockEditPG );
+ if ( blockEditName[0]==0 ) {
+ NoticeMessage( _("Block must have a name!"), _("Ok"), NULL);
+ return;
+ }
+ wDrawDelayUpdate( mainD.d, TRUE );
+ UndoStart( _("Modify Block"), "Modify Block" );
+ trk = blockEditTrack;
+ xx = GetblockData( trk );
+ xx->name = MyStrdup(blockEditName);
+ xx->script = MyStrdup(blockEditScript);
+ blockDebug(trk);
+ UndoEnd();
+ wHide( blockEditW );
}
static void EditBlock (track_p trk)
{
- blockData_p xx = GetblockData(trk);
- wIndex_t iTrack;
- BOOL_T needComma = FALSE;
- char temp[32];
+ blockData_p xx = GetblockData(trk);
+ wIndex_t iTrack;
+ BOOL_T needComma = FALSE;
+ char temp[32];
strncpy(blockEditName, xx->name, STR_SHORT_SIZE - 1);
blockEditName[STR_SHORT_SIZE-1] = '\0';
strncpy(blockEditScript, xx->script, STR_LONG_SIZE - 1);
blockEditScript[STR_LONG_SIZE-1] = '\0';
- blockEditSegs[0] = '\0';
- for (iTrack = 0; iTrack < xx->numTracks ; iTrack++) {
- if ((&(xx->trackList))[iTrack].t == NULL) continue;
- sprintf(temp,"%d",GetTrkIndex((&(xx->trackList))[iTrack].t));
- if (needComma) strcat(blockEditSegs,", ");
- strcat(blockEditSegs,temp);
- needComma = TRUE;
- }
- blockEditTrack = trk;
- if ( !blockEditW ) {
- ParamRegister( &blockEditPG );
- blockEditW = ParamCreateDialog (&blockEditPG,
- MakeWindowTitle(_("Edit block")),
- _("Ok"), BlockEditOk,
- wHide, TRUE, NULL, F_BLOCK,
- NULL );
- }
- ParamLoadControls( &blockEditPG );
- sprintf( message, _("Edit block %d"), GetTrkIndex(trk) );
- wWinSetTitle( blockEditW, message );
- wShow (blockEditW);
+ blockEditSegs[0] = '\0';
+ for (iTrack = 0; iTrack < xx->numTracks ; iTrack++) {
+ if ((&(xx->trackList))[iTrack].t == NULL) { continue; }
+ sprintf(temp,"%d",GetTrkIndex((&(xx->trackList))[iTrack].t));
+ if (needComma) { strcat(blockEditSegs,", "); }
+ strcat(blockEditSegs,temp);
+ needComma = TRUE;
+ }
+ blockEditTrack = trk;
+ if ( !blockEditW ) {
+ ParamRegister( &blockEditPG );
+ blockEditW = ParamCreateDialog (&blockEditPG,
+ MakeWindowTitle(_("Edit block")),
+ _("Ok"), BlockEditOk,
+ wHide, TRUE, NULL, F_BLOCK,
+ NULL );
+ }
+ ParamLoadControls( &blockEditPG );
+ sprintf( message, _("Edit block %d"), GetTrkIndex(trk) );
+ wWinSetTitle( blockEditW, message );
+ wShow (blockEditW);
}
static coOrd blkhiliteOrig, blkhiliteSize;
@@ -856,146 +876,157 @@ static POS_T blkhiliteBorder;
static wDrawColor blkhiliteColor = 0;
static void DrawBlockTrackHilite( void )
{
- if (blkhiliteColor==0)
+ if (blkhiliteColor==0) {
blkhiliteColor = wDrawColorGray(87);
+ }
// This is incomplete. We should be in temp drawing mode and clearing temp draw on UN_HILIGHT
- DrawRectangle( &tempD, blkhiliteOrig, blkhiliteSize, blkhiliteColor, DRAW_TRANSPARENT );
+ DrawRectangle( &tempD, blkhiliteOrig, blkhiliteSize, blkhiliteColor,
+ DRAW_TRANSPARENT );
}
static int BlockMgmProc ( int cmd, void * data )
{
- track_p trk = (track_p) data;
- blockData_p xx = GetblockData(trk);
- wIndex_t iTrack;
- BOOL_T needComma = FALSE;
- char temp[32];
- /*char msg[STR_SIZE];*/
- coOrd tempOrig, tempSize;
- BOOL_T first = TRUE;
-
- switch ( cmd ) {
- case CONTMGM_CAN_EDIT:
- return TRUE;
- break;
- case CONTMGM_DO_EDIT:
- EditBlock (trk);
- /*inDescribeCmd = TRUE;*/
- /*DescribeTrack (trk, msg, sizeof msg );*/
- /*InfoMessage( msg );*/
- return TRUE;
- break;
- case CONTMGM_CAN_DELETE:
- return TRUE;
- break;
- case CONTMGM_DO_DELETE:
- DeleteTrack (trk, FALSE);
- return TRUE;
- break;
- case CONTMGM_DO_HILIGHT:
- if (!xx->IsHilite) {
- blkhiliteBorder = mainD.scale*0.1;
- if ( blkhiliteBorder < trackGauge ) blkhiliteBorder = trackGauge;
- first = TRUE;
- for (iTrack = 0; iTrack < xx->numTracks ; iTrack++) {
- if ((&(xx->trackList))[iTrack].t == NULL) continue;
- GetBoundingBox( (&(xx->trackList))[iTrack].t, &tempSize, &tempOrig );
- if (first) {
- blkhiliteOrig = tempOrig;
- blkhiliteSize = tempSize;
- first = FALSE;
- } else {
- if (tempSize.x > blkhiliteSize.x)
- blkhiliteSize.x = tempSize.x;
- if (tempSize.y > blkhiliteSize.y)
- blkhiliteSize.y = tempSize.y;
- if (tempOrig.x < blkhiliteOrig.x)
- blkhiliteOrig.x = tempOrig.x;
- if (tempOrig.y < blkhiliteOrig.y)
- blkhiliteOrig.y = tempOrig.y;
- }
- }
- blkhiliteOrig.x -= blkhiliteBorder;
- blkhiliteOrig.y -= blkhiliteBorder;
- blkhiliteSize.x -= blkhiliteOrig.x-blkhiliteBorder;
- blkhiliteSize.y -= blkhiliteOrig.y-blkhiliteBorder;
- DrawBlockTrackHilite();
- xx->IsHilite = TRUE;
- }
- break;
- case CONTMGM_UN_HILIGHT:
- if (xx->IsHilite) {
- blkhiliteBorder = mainD.scale*0.1;
- if ( blkhiliteBorder < trackGauge ) blkhiliteBorder = trackGauge;
- first = TRUE;
- for (iTrack = 0; iTrack < xx->numTracks ; iTrack++) {
- if ((&(xx->trackList))[iTrack].t == NULL) continue;
- GetBoundingBox( (&(xx->trackList))[iTrack].t, &tempSize, &tempOrig );
- if (first) {
- blkhiliteOrig = tempOrig;
- blkhiliteSize = tempSize;
- first = FALSE;
- } else {
- if (tempSize.x > blkhiliteSize.x)
- blkhiliteSize.x = tempSize.x;
- if (tempSize.y > blkhiliteSize.y)
- blkhiliteSize.y = tempSize.y;
- if (tempOrig.x < blkhiliteOrig.x)
- blkhiliteOrig.x = tempOrig.x;
- if (tempOrig.y < blkhiliteOrig.y)
- blkhiliteOrig.y = tempOrig.y;
- }
- }
- blkhiliteOrig.x -= blkhiliteBorder;
- blkhiliteOrig.y -= blkhiliteBorder;
- blkhiliteSize.x -= blkhiliteOrig.x-blkhiliteBorder;
- blkhiliteSize.y -= blkhiliteOrig.y-blkhiliteBorder;
- DrawBlockTrackHilite();
- xx->IsHilite = FALSE;
- }
- break;
- case CONTMGM_GET_TITLE:
- sprintf( message, "\t%s\t", xx->name);
- for (iTrack = 0; iTrack < xx->numTracks ; iTrack++) {
- if ((&(xx->trackList))[iTrack].t == NULL) continue;
- sprintf(temp,"%d",GetTrkIndex((&(xx->trackList))[iTrack].t));
- if (needComma) strcat(message,", ");
- strcat(message,temp);
- needComma = TRUE;
- }
- break;
- }
- return FALSE;
+ track_p trk = (track_p) data;
+ blockData_p xx = GetblockData(trk);
+ wIndex_t iTrack;
+ BOOL_T needComma = FALSE;
+ char temp[32];
+ /*char msg[STR_SIZE];*/
+ coOrd tempOrig, tempSize;
+ BOOL_T first = TRUE;
+
+ switch ( cmd ) {
+ case CONTMGM_CAN_EDIT:
+ return TRUE;
+ break;
+ case CONTMGM_DO_EDIT:
+ EditBlock (trk);
+ /*inDescribeCmd = TRUE;*/
+ /*DescribeTrack (trk, msg, sizeof msg );*/
+ /*InfoMessage( msg );*/
+ return TRUE;
+ break;
+ case CONTMGM_CAN_DELETE:
+ return TRUE;
+ break;
+ case CONTMGM_DO_DELETE:
+ DeleteTrack (trk, FALSE);
+ return TRUE;
+ break;
+ case CONTMGM_DO_HILIGHT:
+ if (!xx->IsHilite) {
+ blkhiliteBorder = mainD.scale*0.1;
+ if ( blkhiliteBorder < trackGauge ) { blkhiliteBorder = trackGauge; }
+ first = TRUE;
+ for (iTrack = 0; iTrack < xx->numTracks ; iTrack++) {
+ if ((&(xx->trackList))[iTrack].t == NULL) { continue; }
+ GetBoundingBox( (&(xx->trackList))[iTrack].t, &tempSize, &tempOrig );
+ if (first) {
+ blkhiliteOrig = tempOrig;
+ blkhiliteSize = tempSize;
+ first = FALSE;
+ } else {
+ if (tempSize.x > blkhiliteSize.x) {
+ blkhiliteSize.x = tempSize.x;
+ }
+ if (tempSize.y > blkhiliteSize.y) {
+ blkhiliteSize.y = tempSize.y;
+ }
+ if (tempOrig.x < blkhiliteOrig.x) {
+ blkhiliteOrig.x = tempOrig.x;
+ }
+ if (tempOrig.y < blkhiliteOrig.y) {
+ blkhiliteOrig.y = tempOrig.y;
+ }
+ }
+ }
+ blkhiliteOrig.x -= blkhiliteBorder;
+ blkhiliteOrig.y -= blkhiliteBorder;
+ blkhiliteSize.x -= blkhiliteOrig.x-blkhiliteBorder;
+ blkhiliteSize.y -= blkhiliteOrig.y-blkhiliteBorder;
+ DrawBlockTrackHilite();
+ xx->IsHilite = TRUE;
+ }
+ break;
+ case CONTMGM_UN_HILIGHT:
+ if (xx->IsHilite) {
+ blkhiliteBorder = mainD.scale*0.1;
+ if ( blkhiliteBorder < trackGauge ) { blkhiliteBorder = trackGauge; }
+ first = TRUE;
+ for (iTrack = 0; iTrack < xx->numTracks ; iTrack++) {
+ if ((&(xx->trackList))[iTrack].t == NULL) { continue; }
+ GetBoundingBox( (&(xx->trackList))[iTrack].t, &tempSize, &tempOrig );
+ if (first) {
+ blkhiliteOrig = tempOrig;
+ blkhiliteSize = tempSize;
+ first = FALSE;
+ } else {
+ if (tempSize.x > blkhiliteSize.x) {
+ blkhiliteSize.x = tempSize.x;
+ }
+ if (tempSize.y > blkhiliteSize.y) {
+ blkhiliteSize.y = tempSize.y;
+ }
+ if (tempOrig.x < blkhiliteOrig.x) {
+ blkhiliteOrig.x = tempOrig.x;
+ }
+ if (tempOrig.y < blkhiliteOrig.y) {
+ blkhiliteOrig.y = tempOrig.y;
+ }
+ }
+ }
+ blkhiliteOrig.x -= blkhiliteBorder;
+ blkhiliteOrig.y -= blkhiliteBorder;
+ blkhiliteSize.x -= blkhiliteOrig.x-blkhiliteBorder;
+ blkhiliteSize.y -= blkhiliteOrig.y-blkhiliteBorder;
+ DrawBlockTrackHilite();
+ xx->IsHilite = FALSE;
+ }
+ break;
+ case CONTMGM_GET_TITLE:
+ sprintf( message, "\t%s\t", xx->name);
+ for (iTrack = 0; iTrack < xx->numTracks ; iTrack++) {
+ if ((&(xx->trackList))[iTrack].t == NULL) { continue; }
+ sprintf(temp,"%d",GetTrkIndex((&(xx->trackList))[iTrack].t));
+ if (needComma) { strcat(message,", "); }
+ strcat(message,temp);
+ needComma = TRUE;
+ }
+ break;
+ }
+ return FALSE;
}
//#include "bitmaps/blocknew.xpm"
//#include "bitmaps/blockedit.xpm"
//#include "bitmaps/blockdel.xpm"
-#include "bitmaps/block.xpm"
+#include "bitmaps/block.xpm3"
EXPORT void BlockMgmLoad( void )
{
- track_p trk;
- static wIcon_p blockI = NULL;
-
- if ( blockI == NULL)
- blockI = wIconCreatePixMap( block_xpm[iconSize] );
-
- TRK_ITERATE(trk) {
- if (GetTrkType(trk) != T_BLOCK) continue;
- ContMgmLoad( blockI, BlockMgmProc, trk );
- }
-
+ track_p trk;
+ static wIcon_p blockI = NULL;
+
+ if ( blockI == NULL) {
+ blockI = wIconCreatePixMap( block_xpm3[iconSize] );
+ }
+
+ TRK_ITERATE(trk) {
+ if (GetTrkType(trk) != T_BLOCK) { continue; }
+ ContMgmLoad( blockI, BlockMgmProc, trk );
+ }
+
}
EXPORT void InitCmdBlock( wMenu_p menu )
{
blockName[0] = '\0';
blockScript[0] = '\0';
- AddMenuButton( menu, CmdBlockCreate, "cmdBlockCreate", _("Block"),
- wIconCreatePixMap( block_xpm[iconSize] ), LEVEL0_50,
- IC_STICKY|IC_POPUP2, ACCL_BLOCK1, NULL );
+ AddMenuButton( menu, CmdBlockCreate, "cmdBlockCreate", _("Block"),
+ wIconCreatePixMap( block_xpm3[iconSize] ), LEVEL0_50,
+ IC_STICKY|IC_POPUP2, ACCL_BLOCK1, NULL );
ParamRegister( &blockPG );
}
@@ -1004,9 +1035,7 @@ EXPORT void InitTrkBlock( void )
{
T_BLOCK = InitObject ( &blockCmds );
log_block = LogFindIndex ( "block" );
- blockTrk_da.max = 0;
- blockTrk_da.cnt = 0;
- blockTrk_da.ptr = NULL;
+ DYNARR_INIT( btrackinfo_t, blockTrk_da );
last_block = NULL;
}
diff --git a/app/bin/ccontrol.c b/app/bin/ccontrol.c
index a4f9b27..90c4fb2 100644
--- a/app/bin/ccontrol.c
+++ b/app/bin/ccontrol.c
@@ -4,8 +4,8 @@
/* -*- C -*- ****************************************************************
*
- * System :
- * Module :
+ * System :
+ * Module :
* Object Name : $RCSfile$
* Revision : $Revision$
* Date : $Date$
@@ -14,12 +14,12 @@
* Created : Sun Mar 5 16:01:37 2017
* Last Modified : <170314.1418>
*
- * Description
+ * Description
*
* Notes
*
* History
- *
+ *
****************************************************************************
*
* Copyright (C) 2017 Robert Heller D/B/A Deepwoods Software
@@ -38,13 +38,13 @@
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
*
- *
*
****************************************************************************/
-static const char rcsid[] = "@(#) : $Id$";
+//static const char rcsid[] = "@(#) : $Id$";
#include "compound.h"
#include "cselect.h"
@@ -54,7 +54,6 @@ static const char rcsid[] = "@(#) : $Id$";
#include "layout.h"
#include "param.h"
#include "track.h"
-#include "trackx.h"
#include "common-ui.h"
#ifdef UTFCONVERT
#include "include/utf8convert.h"
@@ -73,7 +72,8 @@ static drawCmd_t controlD = {
1.0,
0.0,
{0.0,0.0}, {0.0,0.0},
- Pix2CoOrd, CoOrd2Pix };
+ Pix2CoOrd, CoOrd2Pix
+};
static char controlName[STR_SHORT_SIZE];
static char controlOnScript[STR_LONG_SIZE];
@@ -81,17 +81,17 @@ static char controlOffScript[STR_LONG_SIZE];
#endif
typedef struct controlData_t {
- extraDataBase_t base;
- coOrd orig;
- BOOL_T IsHilite;
- char * name;
- char * onscript;
- char * offscript;
+ extraDataBase_t base;
+ coOrd orig;
+ BOOL_T IsHilite;
+ char * name;
+ char * onscript;
+ char * offscript;
} controlData_t, *controlData_p;
static controlData_p GetcontrolData ( track_p trk )
{
- return GET_EXTRA_DATA( trk, T_CONTROL, controlData_t );
+ return GET_EXTRA_DATA( trk, T_CONTROL, controlData_t );
}
#define RADIUS 6
@@ -99,267 +99,270 @@ static controlData_p GetcontrolData ( track_p trk )
#define control_SF (3.0)
-static void DDrawControl(drawCmd_p d, coOrd orig, DIST_T scaleRatio,
+static void DDrawControl(drawCmd_p d, coOrd orig, DIST_T scaleRatio,
wDrawColor color )
{
- coOrd p1, p2;
-
- p1 = orig;
- DrawFillCircle(d,p1, RADIUS * control_SF / scaleRatio,color);
- Translate (&p1, orig, 45, RADIUS * control_SF / scaleRatio);
- Translate (&p2, p1, 45, LINE * control_SF / scaleRatio);
- DrawLine(d, p1, p2, 2, color);
- Translate (&p1, orig, 45+90, RADIUS * control_SF / scaleRatio);
- Translate (&p2, p1, 45+90, LINE * control_SF / scaleRatio);
- DrawLine(d, p1, p2, 2, color);
- Translate (&p1, orig, 45+180, RADIUS * control_SF / scaleRatio);
- Translate (&p2, p1, 45+180, LINE * control_SF / scaleRatio);
- DrawLine(d, p1, p2, 2, color);
- Translate (&p1, orig, 45+270, RADIUS * control_SF / scaleRatio);
- Translate (&p2, p1, 45+270, LINE * control_SF / scaleRatio);
- DrawLine(d, p1, p2, 2, color);
+ coOrd p1, p2;
+
+ p1 = orig;
+ DrawFillCircle(d,p1, RADIUS * control_SF / scaleRatio,color);
+ Translate (&p1, orig, 45, RADIUS * control_SF / scaleRatio);
+ Translate (&p2, p1, 45, LINE * control_SF / scaleRatio);
+ DrawLine(d, p1, p2, 2, color);
+ Translate (&p1, orig, 45+90, RADIUS * control_SF / scaleRatio);
+ Translate (&p2, p1, 45+90, LINE * control_SF / scaleRatio);
+ DrawLine(d, p1, p2, 2, color);
+ Translate (&p1, orig, 45+180, RADIUS * control_SF / scaleRatio);
+ Translate (&p2, p1, 45+180, LINE * control_SF / scaleRatio);
+ DrawLine(d, p1, p2, 2, color);
+ Translate (&p1, orig, 45+270, RADIUS * control_SF / scaleRatio);
+ Translate (&p2, p1, 45+270, LINE * control_SF / scaleRatio);
+ DrawLine(d, p1, p2, 2, color);
}
static void DrawControl (track_p t, drawCmd_p d, wDrawColor color )
{
- controlData_p xx = GetcontrolData(t);
- DDrawControl(d,xx->orig,GetScaleRatio(GetTrkScale(t)),color);
+ controlData_p xx = GetcontrolData(t);
+ DDrawControl(d,xx->orig,GetScaleRatio(GetTrkScale(t)),color);
}
-static void ControlBoundingBox (coOrd orig, DIST_T scaleRatio, coOrd *hi,
+static void ControlBoundingBox (coOrd orig, DIST_T scaleRatio, coOrd *hi,
coOrd *lo)
{
- coOrd p1, p2;
-
- p1 = orig;
- Translate (&p1, orig, 0, -(RADIUS+LINE) * control_SF / scaleRatio);
- Translate (&p2, orig, 0, (RADIUS+LINE) * control_SF / scaleRatio);
- *hi = p1; *lo = p1;
- if (p2.x > hi->x) hi->x = p2.x;
- if (p2.x < lo->x) lo->x = p2.x;
- if (p2.y > hi->y) hi->y = p2.y;
- if (p2.y < lo->y) lo->y = p2.y;
-}
+ coOrd p1, p2;
+
+ p1 = orig;
+ Translate (&p1, orig, 0, -(RADIUS+LINE) * control_SF / scaleRatio);
+ Translate (&p2, orig, 0, (RADIUS+LINE) * control_SF / scaleRatio);
+ *hi = p1; *lo = p1;
+ if (p2.x > hi->x) { hi->x = p2.x; }
+ if (p2.x < lo->x) { lo->x = p2.x; }
+ if (p2.y > hi->y) { hi->y = p2.y; }
+ if (p2.y < lo->y) { lo->y = p2.y; }
+}
static void ComputeControlBoundingBox (track_p t )
{
- coOrd lo, hi;
- controlData_p xx = GetcontrolData(t);
- ControlBoundingBox(xx->orig, GetScaleRatio(GetTrkScale(t)), &hi, &lo);
- SetBoundingBox(t, hi, lo);
+ coOrd lo, hi;
+ controlData_p xx = GetcontrolData(t);
+ ControlBoundingBox(xx->orig, GetScaleRatio(GetTrkScale(t)), &hi, &lo);
+ SetBoundingBox(t, hi, lo);
}
static DIST_T DistanceControl (track_p t, coOrd * p )
{
- controlData_p xx = GetcontrolData(t);
- return FindDistance(xx->orig, *p);
+ controlData_p xx = GetcontrolData(t);
+ return FindDistance(xx->orig, *p);
}
static struct {
- char name[STR_SHORT_SIZE];
- coOrd pos;
- char onscript[STR_LONG_SIZE];
- char offscript[STR_LONG_SIZE];
+ char name[STR_SHORT_SIZE];
+ coOrd pos;
+ char onscript[STR_LONG_SIZE];
+ char offscript[STR_LONG_SIZE];
} controlProperties;
typedef enum { NM, PS, ON, OF } controlDesc_e;
static descData_t controlDesc[] = {
- /* NM */ { DESC_STRING, N_("Name"), &controlProperties.name, sizeof(controlProperties.name) },
- /* PS */ { DESC_POS, N_("Position"), &controlProperties.pos },
- /* ON */ { DESC_STRING, N_("On Script"), &controlProperties.onscript, sizeof(controlProperties.onscript) },
- /* OF */ { DESC_STRING, N_("Off Script"),&controlProperties.offscript, sizeof(controlProperties.offscript) },
- { DESC_NULL } };
+ /* NM */ { DESC_STRING, N_("Name"), &controlProperties.name, sizeof(controlProperties.name) },
+ /* PS */ { DESC_POS, N_("Position"), &controlProperties.pos },
+ /* ON */ { DESC_STRING, N_("On Script"), &controlProperties.onscript, sizeof(controlProperties.onscript) },
+ /* OF */ { DESC_STRING, N_("Off Script"),&controlProperties.offscript, sizeof(controlProperties.offscript) },
+ { DESC_NULL }
+};
static void UpdateControlProperties ( track_p trk, int inx, descData_p
- descUpd, BOOL_T needUndoStart )
+ descUpd, BOOL_T needUndoStart )
{
- controlData_p xx = GetcontrolData(trk);
- const char *thename, *theonscript, *theoffscript;
- unsigned int max_str;
- char *newName, *newOnScript, *newOffScript;
- BOOL_T changed, nChanged, pChanged, onChanged, offChanged;
-
- switch (inx) {
- case NM:
- break;
- case PS:
- break;
- case ON:
- break;
- case OF:
- break;
- case -1:
- changed = nChanged = pChanged = onChanged = offChanged = FALSE;
- thename = wStringGetValue( (wString_p) controlDesc[NM].control0 );
- if (strcmp(thename,xx->name) != 0) {
- nChanged = changed = TRUE;
- max_str = controlDesc[NM].max_string;
+ controlData_p xx = GetcontrolData(trk);
+ const char *thename, *theonscript, *theoffscript;
+ unsigned int max_str;
+ char *newName, *newOnScript, *newOffScript=NULL;
+ BOOL_T changed, nChanged, pChanged, onChanged, offChanged;
+
+ switch (inx) {
+ case NM:
+ break;
+ case PS:
+ break;
+ case ON:
+ break;
+ case OF:
+ break;
+ case -1:
+ changed = nChanged = pChanged = onChanged = offChanged = FALSE;
+ thename = wStringGetValue( (wString_p) controlDesc[NM].control0 );
+ if (strcmp(thename,xx->name) != 0) {
+ nChanged = changed = TRUE;
+ max_str = controlDesc[NM].max_string;
if (max_str && strlen(thename)>max_str-1) {
newName = MyMalloc(max_str);
newName[0] = '\0';
strncat(newName,thename,max_str-1);
NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str-1);
- } else newName = MyStrdup(thename);
- }
+ } else { newName = MyStrdup(thename); }
+ }
- theonscript = wStringGetValue( (wString_p) controlDesc[ON].control0 );
- if (strcmp(theonscript,xx->onscript) != 0) {
- onChanged = changed = TRUE;
- max_str = controlDesc[ON].max_string;
+ theonscript = wStringGetValue( (wString_p) controlDesc[ON].control0 );
+ if (strcmp(theonscript,xx->onscript) != 0) {
+ onChanged = changed = TRUE;
+ max_str = controlDesc[ON].max_string;
if (max_str && strlen(theonscript)>max_str-1) {
newOnScript = MyMalloc(max_str);
newOnScript[0] = '\0';
strncat(newOnScript,theonscript,max_str-1);
NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str-1);
- } else newOnScript = MyStrdup(theonscript);
- }
+ } else { newOnScript = MyStrdup(theonscript); }
+ }
- theoffscript = wStringGetValue( (wString_p) controlDesc[OF].control0 );
- if (strcmp(theoffscript,xx->offscript) != 0) {
- offChanged = changed = TRUE;
- max_str = controlDesc[OF].max_string;
+ theoffscript = wStringGetValue( (wString_p) controlDesc[OF].control0 );
+ if (strcmp(theoffscript,xx->offscript) != 0) {
+ offChanged = changed = TRUE;
+ max_str = controlDesc[OF].max_string;
if (max_str && strlen(theoffscript)>max_str-1) {
newOffScript = MyMalloc(max_str);
newOffScript[max_str-1] = '\0';
strncat(newOffScript,theoffscript,max_str-1);
NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str);
- } else newOffScript = MyStrdup(theoffscript);
- }
-
- if (controlProperties.pos.x != xx->orig.x ||
- controlProperties.pos.y != xx->orig.y) {
- pChanged = changed = TRUE;
- }
- if (!changed) break;
- if (needUndoStart)
- UndoStart( _("Change Control"), "Change Control" );
- UndoModify( trk );
- if (nChanged) {
- MyFree(xx->name);
- xx->name = newName;
- }
- if (pChanged) {
- UndrawNewTrack( trk );
- }
- if (pChanged) {
- xx->orig = controlProperties.pos;
- }
- if (onChanged) {
- MyFree(xx->onscript);
- xx->onscript = newOnScript;
- }
- if (offChanged) {
- MyFree(xx->offscript);
- xx->offscript = newOffScript;
- }
- if (pChanged) {
- ComputeControlBoundingBox( trk );
- DrawNewTrack( trk );
- }
- break;
- }
+ } else { newOffScript = MyStrdup(theoffscript); }
+ }
+
+ if (controlProperties.pos.x != xx->orig.x ||
+ controlProperties.pos.y != xx->orig.y) {
+ pChanged = changed = TRUE;
+ }
+ if (!changed) { break; }
+ if (needUndoStart) {
+ UndoStart( _("Change Control"), "Change Control" );
+ }
+ UndoModify( trk );
+ if (nChanged) {
+ MyFree(xx->name);
+ xx->name = newName;
+ }
+ if (pChanged) {
+ UndrawNewTrack( trk );
+ }
+ if (pChanged) {
+ xx->orig = controlProperties.pos;
+ }
+ if (onChanged) {
+ MyFree(xx->onscript);
+ xx->onscript = newOnScript;
+ }
+ if (offChanged) {
+ MyFree(xx->offscript);
+ xx->offscript = newOffScript;
+ }
+ if (pChanged) {
+ ComputeControlBoundingBox( trk );
+ DrawNewTrack( trk );
+ }
+ break;
+ }
}
-
+
static void DescribeControl (track_p trk, char * str, CSIZE_T len )
{
- controlData_p xx = GetcontrolData(trk);
-
- strcpy( str, _(GetTrkTypeName( trk )) );
- str++;
- while (*str) {
- *str = tolower((unsigned char)*str);
- str++;
- }
- sprintf( str, _("(%d [%s]): Layer=%u, at %0.3f,%0.3f"),
- GetTrkIndex(trk),
- xx->name,GetTrkLayer(trk)+1, xx->orig.x, xx->orig.y);
- strncpy(controlProperties.name,xx->name,STR_SHORT_SIZE-1);
- controlProperties.name[STR_SHORT_SIZE-1] = '\0';
- strncpy(controlProperties.onscript,xx->onscript,STR_LONG_SIZE-1);
- controlProperties.onscript[STR_LONG_SIZE-1] = '\0';
- strncpy(controlProperties.offscript,xx->offscript,STR_LONG_SIZE-1);
- controlProperties.offscript[STR_LONG_SIZE-1] = '\0';
- controlProperties.pos = xx->orig;
- controlDesc[NM].mode =
- controlDesc[ON].mode =
- controlDesc[OF].mode = DESC_NOREDRAW;
- DoDescribe( _("Control"), trk, controlDesc, UpdateControlProperties );
-
+ controlData_p xx = GetcontrolData(trk);
+
+ strcpy( str, _(GetTrkTypeName( trk )) );
+ str++;
+ while (*str) {
+ *str = tolower((unsigned char)*str);
+ str++;
+ }
+ sprintf( str, _("(%d [%s]): Layer=%u, at %0.3f,%0.3f"),
+ GetTrkIndex(trk),
+ xx->name,GetTrkLayer(trk)+1, xx->orig.x, xx->orig.y);
+ strncpy(controlProperties.name,xx->name,STR_SHORT_SIZE-1);
+ controlProperties.name[STR_SHORT_SIZE-1] = '\0';
+ strncpy(controlProperties.onscript,xx->onscript,STR_LONG_SIZE-1);
+ controlProperties.onscript[STR_LONG_SIZE-1] = '\0';
+ strncpy(controlProperties.offscript,xx->offscript,STR_LONG_SIZE-1);
+ controlProperties.offscript[STR_LONG_SIZE-1] = '\0';
+ controlProperties.pos = xx->orig;
+ controlDesc[NM].mode =
+ controlDesc[ON].mode =
+ controlDesc[OF].mode = DESC_NOREDRAW;
+ DoDescribe( _("Control"), trk, controlDesc, UpdateControlProperties );
+
}
-static void DeleteControl ( track_p trk )
+static void DeleteControl ( track_p trk )
{
- controlData_p xx = GetcontrolData(trk);
- MyFree(xx->name); xx->name = NULL;
- MyFree(xx->onscript); xx->onscript = NULL;
- MyFree(xx->offscript); xx->offscript = NULL;
+ controlData_p xx = GetcontrolData(trk);
+ MyFree(xx->name); xx->name = NULL;
+ MyFree(xx->onscript); xx->onscript = NULL;
+ MyFree(xx->offscript); xx->offscript = NULL;
}
static BOOL_T WriteControl ( track_p t, FILE * f )
{
- BOOL_T rc = TRUE;
- controlData_p xx = GetcontrolData(t);
+ BOOL_T rc = TRUE;
+ controlData_p xx = GetcontrolData(t);
char *controlName = MyStrdup(xx->name);
#ifdef UTFCONVERT
controlName = Convert2UTF8(controlName);
#endif // UTFCONVERT
- rc &= fprintf(f, "CONTROL %d %u %s %d %0.6f %0.6f \"%s\" \"%s\" \"%s\"\n",
- GetTrkIndex(t), GetTrkLayer(t), GetTrkScaleName(t),
- GetTrkVisible(t), xx->orig.x, xx->orig.y, controlName,
- xx->onscript, xx->offscript)>0;
+ rc &= fprintf(f, "CONTROL %d %u %s %d %0.6f %0.6f \"%s\" \"%s\" \"%s\"\n",
+ GetTrkIndex(t), GetTrkLayer(t), GetTrkScaleName(t),
+ GetTrkVisible(t), xx->orig.x, xx->orig.y, controlName,
+ xx->onscript, xx->offscript)>0;
MyFree(controlName);
- return rc;
+ return rc;
}
static BOOL_T ReadControl ( char * line )
{
- wIndex_t index;
- /*TRKINX_T trkindex;*/
- track_p trk;
- /*char * cp = NULL;*/
- char *name;
- char *onscript, *offscript;
- coOrd orig;
- BOOL_T visible;
- char scale[10];
- wIndex_t layer;
- controlData_p xx;
- if (!GetArgs(line+7,"dLsdpqqq",&index,&layer,scale, &visible, &orig,&name,&onscript,&offscript)) {
- return FALSE;
- }
+ wIndex_t index;
+ /*TRKINX_T trkindex;*/
+ track_p trk;
+ /*char * cp = NULL;*/
+ char *name;
+ char *onscript, *offscript;
+ coOrd orig;
+ BOOL_T visible;
+ char scale[10];
+ wIndex_t layer;
+ controlData_p xx;
+ if (!GetArgs(line+7,"dLsdpqqq",&index,&layer,scale, &visible, &orig,&name,
+ &onscript,&offscript)) {
+ return FALSE;
+ }
#ifdef UTFCONVERT
ConvertUTF8ToSystem(name);
#endif // UTFCONVERT
- trk = NewTrack(index, T_CONTROL, 0, sizeof(controlData_t));
- SetTrkVisible(trk, visible);
- SetTrkScale(trk, LookupScale( scale ));
- SetTrkLayer(trk, layer);
- xx = GetcontrolData ( trk );
- xx->name = name;
- xx->orig = orig;
- xx->onscript = onscript;
- xx->offscript = offscript;
- ComputeControlBoundingBox(trk);
- return TRUE;
+ trk = NewTrack(index, T_CONTROL, 0, sizeof(controlData_t));
+ SetTrkVisible(trk, visible);
+ SetTrkScale(trk, LookupScale( scale ));
+ SetTrkLayer(trk, layer);
+ xx = GetcontrolData ( trk );
+ xx->name = name;
+ xx->orig = orig;
+ xx->onscript = onscript;
+ xx->offscript = offscript;
+ ComputeControlBoundingBox(trk);
+ return TRUE;
}
static void MoveControl (track_p trk, coOrd orig )
{
- controlData_p xx = GetcontrolData ( trk );
- xx->orig.x += orig.x;
- xx->orig.y += orig.y;
- ComputeControlBoundingBox(trk);
+ controlData_p xx = GetcontrolData ( trk );
+ xx->orig.x += orig.x;
+ xx->orig.y += orig.y;
+ ComputeControlBoundingBox(trk);
}
static void RotateControl (track_p trk, coOrd orig, ANGLE_T angle )
@@ -370,44 +373,44 @@ static void RescaleControl (track_p trk, FLOAT_T ratio )
{
}
-static void FlipControl (track_p trk, coOrd orig, ANGLE_T angle )
+static void FlipControl (track_p trk, coOrd orig, ANGLE_T angle )
{
- controlData_p xx = GetcontrolData ( trk );
- FlipPoint(&(xx->orig), orig, angle);
- ComputeControlBoundingBox(trk);
+ controlData_p xx = GetcontrolData ( trk );
+ FlipPoint(&(xx->orig), orig, angle);
+ ComputeControlBoundingBox(trk);
}
static trackCmd_t controlCmds = {
- "CONTROL",
- DrawControl,
- DistanceControl,
- DescribeControl,
- DeleteControl,
- WriteControl,
- ReadControl,
- MoveControl,
- RotateControl,
- RescaleControl,
- NULL, /* audit */
- NULL, /* getAngle */
- NULL, /* split */
- NULL, /* traverse */
- NULL, /* enumerate */
- NULL, /* redraw */
- NULL, /* trim */
- NULL, /* merge */
- NULL, /* modify */
- NULL, /* getLength */
- NULL, /* getTrkParams */
- NULL, /* moveEndPt */
- NULL, /* query */
- NULL, /* ungroup */
- FlipControl, /* flip */
- NULL, /* drawPositionIndicator */
- NULL, /* advancePositionIndicator */
- NULL, /* checkTraverse */
- NULL, /* makeParallel */
- NULL /* drawDesc */
+ "CONTROL",
+ DrawControl,
+ DistanceControl,
+ DescribeControl,
+ DeleteControl,
+ WriteControl,
+ ReadControl,
+ MoveControl,
+ RotateControl,
+ RescaleControl,
+ NULL, /* audit */
+ NULL, /* getAngle */
+ NULL, /* split */
+ NULL, /* traverse */
+ NULL, /* enumerate */
+ NULL, /* redraw */
+ NULL, /* trim */
+ NULL, /* merge */
+ NULL, /* modify */
+ NULL, /* getLength */
+ NULL, /* getTrkParams */
+ NULL, /* moveEndPt */
+ NULL, /* query */
+ NULL, /* ungroup */
+ FlipControl, /* flip */
+ NULL, /* drawPositionIndicator */
+ NULL, /* advancePositionIndicator */
+ NULL, /* checkTraverse */
+ NULL, /* makeParallel */
+ NULL /* drawDesc */
};
static coOrd controlEditOrig;
@@ -419,15 +422,15 @@ static char controlEditOffScript[STR_LONG_SIZE];
static paramFloatRange_t r_1000_1000 = { -1000.0, 1000.0, 80 };
static paramData_t controlEditPLs[] = {
#define I_CONTROLNAME (0)
- /*0*/ { PD_STRING, controlEditName, "name", PDO_NOPREF | PDO_NOTBLANK, I2VP(200), N_("Name"), 0, 0, sizeof(controlEditName) },
+ /*0*/ { PD_STRING, controlEditName, "name", PDO_NOPREF | PDO_NOTBLANK, I2VP(200), N_("Name"), 0, 0, sizeof(controlEditName) },
#define I_ORIGX (1)
- /*1*/ { PD_FLOAT, &controlEditOrig.x, "origx", PDO_DIM, &r_1000_1000, N_("Origin X") },
+ /*1*/ { PD_FLOAT, &controlEditOrig.x, "origx", PDO_DIM, &r_1000_1000, N_("Origin X") },
#define I_ORIGY (2)
- /*2*/ { PD_FLOAT, &controlEditOrig.y, "origy", PDO_DIM, &r_1000_1000, N_("Origin Y") },
+ /*2*/ { PD_FLOAT, &controlEditOrig.y, "origy", PDO_DIM, &r_1000_1000, N_("Origin Y") },
#define I_CONTROLONSCRIPT (3)
- /*3*/ { PD_STRING, controlEditOnScript, "script", PDO_NOPREF, I2VP(350), N_("On Script"), 0, 0, sizeof(controlEditOnScript)},
+ /*3*/ { PD_STRING, controlEditOnScript, "script", PDO_NOPREF, I2VP(350), N_("On Script"), 0, 0, sizeof(controlEditOnScript)},
#define I_CONTROLOFFSCRIPT (4)
- /*4*/ { PD_STRING, controlEditOffScript, "script", PDO_NOPREF, I2VP(350), N_("Off Script"), 0, 0, sizeof(controlEditOffScript)},
+ /*4*/ { PD_STRING, controlEditOffScript, "script", PDO_NOPREF, I2VP(350), N_("Off Script"), 0, 0, sizeof(controlEditOffScript)},
};
static paramGroup_t controlEditPG = { "controlEdit", 0, controlEditPLs, COUNT( controlEditPLs ) };
@@ -435,115 +438,120 @@ static wWin_p controlEditW;
static void ControlEditOk ( void * junk )
{
- track_p trk;
- controlData_p xx;
-
- if (controlEditTrack == NULL) {
- UndoStart( _("Create Control"), "Create Control");
- trk = NewTrack(0, T_CONTROL, 0, sizeof(controlData_t));
- } else {
- UndoStart( _("Modify Control"), "Modify Control");
- trk = controlEditTrack;
- }
- xx = GetcontrolData(trk);
- xx->orig = controlEditOrig;
- if ( xx->name == NULL || strncmp (xx->name, controlEditName, STR_SHORT_SIZE) != 0) {
- MyFree(xx->name);
- xx->name = MyStrdup(controlEditName);
- }
- if ( xx->onscript == NULL || strncmp (xx->onscript, controlEditOnScript, STR_LONG_SIZE) != 0) {
- MyFree(xx->onscript);
- xx->onscript = MyStrdup(controlEditOnScript);
- }
- if ( xx->offscript == NULL || strncmp (xx->offscript, controlEditOffScript, STR_LONG_SIZE) != 0) {
- MyFree(xx->offscript);
- xx->offscript = MyStrdup(controlEditOffScript);
- }
- UndoEnd();
- ComputeControlBoundingBox(trk);
- DoRedraw();
- wHide( controlEditW );
+ track_p trk;
+ controlData_p xx;
+
+ if (controlEditTrack == NULL) {
+ UndoStart( _("Create Control"), "Create Control");
+ trk = NewTrack(0, T_CONTROL, 0, sizeof(controlData_t));
+ } else {
+ UndoStart( _("Modify Control"), "Modify Control");
+ trk = controlEditTrack;
+ }
+ xx = GetcontrolData(trk);
+ xx->orig = controlEditOrig;
+ if ( xx->name == NULL
+ || strncmp (xx->name, controlEditName, STR_SHORT_SIZE) != 0) {
+ MyFree(xx->name);
+ xx->name = MyStrdup(controlEditName);
+ }
+ if ( xx->onscript == NULL
+ || strncmp (xx->onscript, controlEditOnScript, STR_LONG_SIZE) != 0) {
+ MyFree(xx->onscript);
+ xx->onscript = MyStrdup(controlEditOnScript);
+ }
+ if ( xx->offscript == NULL
+ || strncmp (xx->offscript, controlEditOffScript, STR_LONG_SIZE) != 0) {
+ MyFree(xx->offscript);
+ xx->offscript = MyStrdup(controlEditOffScript);
+ }
+ UndoEnd();
+ ComputeControlBoundingBox(trk);
+ DoRedraw();
+ wHide( controlEditW );
}
#if 0
static void ControlEditCancel ( wWin_p junk )
{
- wHide( controlEditW );
+ wHide( controlEditW );
}
#endif
static void EditControlDialog()
{
- controlData_p xx;
-
- if ( !controlEditW ) {
- ParamRegister( &controlEditPG );
- controlEditW = ParamCreateDialog (&controlEditPG,
- MakeWindowTitle(_("Edit control")),
- _("Ok"), ControlEditOk,
- wHide, TRUE, NULL,
- F_BLOCK,
- NULL );
- }
- if (controlEditTrack == NULL) {
- controlEditName[0] = '\0';
- controlEditOnScript[0] = '\0';
- controlEditOffScript[0] = '\0';
- } else {
- xx = GetcontrolData ( controlEditTrack );
- strncpy(controlEditName,xx->name,STR_SHORT_SIZE);
- strncpy(controlEditOnScript,xx->onscript,STR_LONG_SIZE);
- strncpy(controlEditOffScript,xx->offscript,STR_LONG_SIZE);
- controlEditOrig = xx->orig;
- }
- ParamLoadControls( &controlEditPG );
- wShow( controlEditW );
+ controlData_p xx;
+
+ if ( !controlEditW ) {
+ ParamRegister( &controlEditPG );
+ controlEditW = ParamCreateDialog (&controlEditPG,
+ MakeWindowTitle(_("Edit control")),
+ _("Ok"), ControlEditOk,
+ wHide, TRUE, NULL,
+ F_BLOCK,
+ NULL );
+ }
+ if (controlEditTrack == NULL) {
+ controlEditName[0] = '\0';
+ controlEditOnScript[0] = '\0';
+ controlEditOffScript[0] = '\0';
+ } else {
+ xx = GetcontrolData ( controlEditTrack );
+ strncpy(controlEditName,xx->name,STR_SHORT_SIZE-1);
+ strncpy(controlEditOnScript,xx->onscript,STR_LONG_SIZE-1);
+ strncpy(controlEditOffScript,xx->offscript,STR_LONG_SIZE-1);
+ controlEditOrig = xx->orig;
+ }
+ ParamLoadControls( &controlEditPG );
+ wShow( controlEditW );
}
static void EditControl (track_p trk)
{
- controlEditTrack = trk;
- EditControlDialog();
+ controlEditTrack = trk;
+ EditControlDialog();
}
static void CreateNewControl (coOrd orig)
{
- controlEditOrig = orig;
- controlEditTrack = NULL;
- EditControlDialog();
+ controlEditOrig = orig;
+ controlEditTrack = NULL;
+ EditControlDialog();
}
static STATUS_T CmdControl ( wAction_t action, coOrd pos )
{
-
- static coOrd control_pos;
- static BOOL_T create;
- switch (action) {
- case C_START:
- InfoMessage(_("Place control"));
- SetAllTrackSelect( FALSE );
- create = FALSE;
- return C_CONTINUE;
- case C_DOWN:
- create = TRUE;
- /* no break */
+
+ static coOrd control_pos;
+ static BOOL_T create;
+ switch (action) {
+ case C_START:
+ InfoMessage(_("Place control"));
+ SetAllTrackSelect( FALSE );
+ create = FALSE;
+ return C_CONTINUE;
+ case C_DOWN:
+ create = TRUE;
+ /* no break */
case C_MOVE:
SnapPos(&pos);
control_pos = pos;
- return C_CONTINUE;
- case C_UP:
- SnapPos(&pos);
- CreateNewControl(pos);
- return C_TERMINATE;
- case C_REDRAW:
- if (create)
- DDrawControl( &tempD, control_pos, GetScaleRatio(GetLayoutCurScale()), wDrawColorBlack );
- return C_CONTINUE;
- case C_CANCEL:
- return C_CONTINUE;
- default:
- return C_CONTINUE;
- }
+ return C_CONTINUE;
+ case C_UP:
+ SnapPos(&pos);
+ CreateNewControl(pos);
+ return C_TERMINATE;
+ case C_REDRAW:
+ if (create) {
+ DDrawControl( &tempD, control_pos, GetScaleRatio(GetLayoutCurScale()),
+ wDrawColorBlack );
+ }
+ return C_CONTINUE;
+ case C_CANCEL:
+ return C_CONTINUE;
+ default:
+ return C_CONTINUE;
+ }
}
static coOrd ctlhiliteOrig, ctlhiliteSize;
@@ -551,92 +559,95 @@ static POS_T ctlhiliteBorder;
static wDrawColor ctlhiliteColor = 0;
static void DrawControlTrackHilite( void )
{
- if (ctlhiliteColor==0)
+ if (ctlhiliteColor==0) {
ctlhiliteColor = wDrawColorGray(87);
- DrawRectangle( &tempD, ctlhiliteOrig, ctlhiliteSize, ctlhiliteColor, DRAW_TRANSPARENT );
+ }
+ DrawRectangle( &tempD, ctlhiliteOrig, ctlhiliteSize, ctlhiliteColor,
+ DRAW_TRANSPARENT );
}
static int ControlMgmProc ( int cmd, void * data )
{
- track_p trk = (track_p) data;
- controlData_p xx = GetcontrolData(trk);
- /*char msg[STR_SIZE];*/
-
- switch ( cmd ) {
- case CONTMGM_CAN_EDIT:
- return TRUE;
- break;
- case CONTMGM_DO_EDIT:
- EditControl(trk);
- return TRUE;
- break;
- case CONTMGM_CAN_DELETE:
- return TRUE;
- break;
- case CONTMGM_DO_DELETE:
- DeleteTrack(trk, FALSE);
- return TRUE;
- break;
- case CONTMGM_DO_HILIGHT:
- if (!xx->IsHilite) {
- ctlhiliteBorder = mainD.scale*0.1;
- if ( ctlhiliteBorder < trackGauge ) ctlhiliteBorder = trackGauge;
- GetBoundingBox( trk, &ctlhiliteSize, &ctlhiliteOrig );
- ctlhiliteOrig.x -= ctlhiliteBorder;
- ctlhiliteOrig.y -= ctlhiliteBorder;
- ctlhiliteSize.x -= ctlhiliteOrig.x-ctlhiliteBorder;
- ctlhiliteSize.y -= ctlhiliteOrig.y-ctlhiliteBorder;
- DrawControlTrackHilite();
- xx->IsHilite = TRUE;
- }
- break;
- case CONTMGM_UN_HILIGHT:
- if (xx->IsHilite) {
- ctlhiliteBorder = mainD.scale*0.1;
- if ( ctlhiliteBorder < trackGauge ) ctlhiliteBorder = trackGauge;
- GetBoundingBox( trk, &ctlhiliteSize, &ctlhiliteOrig );
- ctlhiliteOrig.x -= ctlhiliteBorder;
- ctlhiliteOrig.y -= ctlhiliteBorder;
- ctlhiliteSize.x -= ctlhiliteOrig.x-ctlhiliteBorder;
- ctlhiliteSize.y -= ctlhiliteOrig.y-ctlhiliteBorder;
- DrawControlTrackHilite();
- xx->IsHilite = FALSE;
- }
- break;
- case CONTMGM_GET_TITLE:
- sprintf(message,"\t%s\t",xx->name);
- break;
- }
- return FALSE;
+ track_p trk = (track_p) data;
+ controlData_p xx = GetcontrolData(trk);
+ /*char msg[STR_SIZE];*/
+
+ switch ( cmd ) {
+ case CONTMGM_CAN_EDIT:
+ return TRUE;
+ break;
+ case CONTMGM_DO_EDIT:
+ EditControl(trk);
+ return TRUE;
+ break;
+ case CONTMGM_CAN_DELETE:
+ return TRUE;
+ break;
+ case CONTMGM_DO_DELETE:
+ DeleteTrack(trk, FALSE);
+ return TRUE;
+ break;
+ case CONTMGM_DO_HILIGHT:
+ if (!xx->IsHilite) {
+ ctlhiliteBorder = mainD.scale*0.1;
+ if ( ctlhiliteBorder < trackGauge ) { ctlhiliteBorder = trackGauge; }
+ GetBoundingBox( trk, &ctlhiliteSize, &ctlhiliteOrig );
+ ctlhiliteOrig.x -= ctlhiliteBorder;
+ ctlhiliteOrig.y -= ctlhiliteBorder;
+ ctlhiliteSize.x -= ctlhiliteOrig.x-ctlhiliteBorder;
+ ctlhiliteSize.y -= ctlhiliteOrig.y-ctlhiliteBorder;
+ DrawControlTrackHilite();
+ xx->IsHilite = TRUE;
+ }
+ break;
+ case CONTMGM_UN_HILIGHT:
+ if (xx->IsHilite) {
+ ctlhiliteBorder = mainD.scale*0.1;
+ if ( ctlhiliteBorder < trackGauge ) { ctlhiliteBorder = trackGauge; }
+ GetBoundingBox( trk, &ctlhiliteSize, &ctlhiliteOrig );
+ ctlhiliteOrig.x -= ctlhiliteBorder;
+ ctlhiliteOrig.y -= ctlhiliteBorder;
+ ctlhiliteSize.x -= ctlhiliteOrig.x-ctlhiliteBorder;
+ ctlhiliteSize.y -= ctlhiliteOrig.y-ctlhiliteBorder;
+ DrawControlTrackHilite();
+ xx->IsHilite = FALSE;
+ }
+ break;
+ case CONTMGM_GET_TITLE:
+ sprintf(message,"\t%s\t",xx->name);
+ break;
+ }
+ return FALSE;
}
-#include "bitmaps/control.xpm"
+#include "bitmaps/control.xpm3"
EXPORT void ControlMgmLoad ( void )
{
- track_p trk;
- static wIcon_p controlI = NULL;
-
- if (controlI == NULL) {
- controlI = wIconCreatePixMap( control_xpm[iconSize] );
- }
-
- TRK_ITERATE(trk) {
- if (GetTrkType(trk) != T_CONTROL) continue;
- ContMgmLoad (controlI, ControlMgmProc, trk );
- }
+ track_p trk;
+ static wIcon_p controlI = NULL;
+
+ if (controlI == NULL) {
+ controlI = wIconCreatePixMap( control_xpm3[iconSize] );
+ }
+
+ TRK_ITERATE(trk) {
+ if (GetTrkType(trk) != T_CONTROL) { continue; }
+ ContMgmLoad (controlI, ControlMgmProc, trk );
+ }
}
#define ACCL_CONTROL 0
EXPORT void InitCmdControl ( wMenu_p menu )
{
- AddMenuButton( menu, CmdControl, "cmdControl", _("Control"),
- wIconCreatePixMap( control_xpm[iconSize] ), LEVEL0_50, IC_STICKY|IC_POPUP2, ACCL_CONTROL, NULL );
+ AddMenuButton( menu, CmdControl, "cmdControl", _("Control"),
+ wIconCreatePixMap( control_xpm3[iconSize] ), LEVEL0_50, IC_STICKY|IC_POPUP2,
+ ACCL_CONTROL, NULL );
}
EXPORT void InitTrkControl ( void )
{
- T_CONTROL = InitObject ( &controlCmds );
- log_control = LogFindIndex ( "control" );
+ T_CONTROL = InitObject ( &controlCmds );
+ log_control = LogFindIndex ( "control" );
}
diff --git a/app/bin/ccornu.c b/app/bin/ccornu.c
index f447d64..9e721d8 100644
--- a/app/bin/ccornu.c
+++ b/app/bin/ccornu.c
@@ -63,7 +63,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
*/
@@ -87,9 +87,6 @@
#include "fileio.h"
#include "common-ui.h"
-extern drawCmd_t tempD;
-extern TRKTYP_T T_BEZIER;
-extern TRKTYP_T T_CORNU;
typedef struct {
coOrd end_center;
@@ -106,66 +103,67 @@ typedef struct {
* STATE INFO
*/
enum Cornu_States { NONE,
- POS_1,
- LOC_2,
- POS_2,
- PICK_POINT,
- POINT_PICKED,
- TRACK_SELECTED };
+ POS_1,
+ LOC_2,
+ POS_2,
+ PICK_POINT,
+ POINT_PICKED,
+ TRACK_SELECTED
+ };
typedef enum {CORNU_MODIFY, CORNU_CREATE} cornuCmdType_e;
static struct {
- enum Cornu_States state;
- coOrd pos[2];
- int number_of_points;
- int selectEndPoint;
- int selectMidPoint;
- int selectEndHandle;
- int prevSelected;
- int prevEndPoint;
- DIST_T width;
- track_p trk[2];
- EPINX_T ep[2];
- DIST_T radius[2];
- ANGLE_T angle[2];
- ANGLE_T arcA0[2];
- ANGLE_T arcA1[2];
- coOrd center[2];
- curveType_e trackType[2];
-
- BOOL_T extend[2];
- trkSeg_t extendSeg[2];
-
- trkSeg_t ep1Segs[11];
- int ep1Segs_da_cnt;
- trkSeg_t ep2Segs[11];
- int ep2Segs_da_cnt;
- dynArr_t crvSegs_da;
- int crvSegs_da_cnt;
- trkSeg_t trk1Seg;
- trkSeg_t trk2Seg;
- track_p selectTrack;
- DIST_T minRadius;
- BOOL_T circleorHelix[2];
- DIST_T trackGauge;
-
- int cmdType;
-
- dynArr_t midSegs;
-
- dynArr_t mid_points;
- dynArr_t tracks;
- BOOL_T ends[2];
-
- endHandle endHandle[2];
-
- bezctx * bezc;
-
- cornuCmdType_e commandType;
-
- } Da;
+ enum Cornu_States state;
+ coOrd pos[4];
+ int number_of_points;
+ int selectEndPoint;
+ int selectMidPoint;
+ int selectEndHandle;
+ int prevSelected;
+ int prevEndPoint;
+ LWIDTH_T lineWidth;
+ track_p trk[2];
+ EPINX_T ep[2];
+ DIST_T radius[2];
+ ANGLE_T angle[2];
+ ANGLE_T arcA0[2];
+ ANGLE_T arcA1[2];
+ coOrd center[2];
+ curveType_e trackType[2];
+
+ BOOL_T extend[2];
+ trkSeg_t extendSeg[2];
+
+ trkSeg_t ep1Segs[11];
+ int ep1Segs_da_cnt;
+ trkSeg_t ep2Segs[11];
+ int ep2Segs_da_cnt;
+ dynArr_t crvSegs_da;
+ int crvSegs_da_cnt;
+ trkSeg_t trk1Seg;
+ trkSeg_t trk2Seg;
+ track_p selectTrack;
+ DIST_T minRadius;
+ BOOL_T circleorHelix[2];
+ DIST_T trackGauge;
+
+ int cmdType;
+
+ dynArr_t midSegs;
+
+ dynArr_t mid_points;
+ dynArr_t tracks;
+ BOOL_T ends[2];
+
+ endHandle endHandle[2];
+
+ bezctx * bezc;
+
+ cornuCmdType_e commandType;
+
+} Da;
static trkSeg_p curCornu;
static wIndex_t cornuHotBarCmdInx;
@@ -179,10 +177,10 @@ static struct {
static char * CmdCornuHotBarProc(
- hotBarProc_e op,
- void * data,
- drawCmd_p d,
- coOrd * origP )
+ hotBarProc_e op,
+ void * data,
+ drawCmd_p d,
+ coOrd * origP )
{
trkSeg_p trkseg = &hotB.st;
switch ( op ) {
@@ -259,15 +257,16 @@ EXPORT void AddHotBarCornu( void )
//end.y = 21.25;
hotB.count = 3;
//hotB.st.u.l.pos[1] = end;
- AddHotBarElement( label, end, zero, TRUE, TRUE, curBarScale>0?curBarScale:-1, &hotB, CmdCornuHotBarProc );
+ AddHotBarElement( label, end, zero, TRUE, TRUE, curBarScale>0?curBarScale:-1,
+ &hotB, CmdCornuHotBarProc );
}
int createMidPoint(dynArr_t * ap,
- coOrd pos0, //end on curve
- BOOL_T point_selected,
- BOOL_T point_selectable,
- BOOL_T track_modifyable
- )
+ coOrd pos0, //end on curve
+ BOOL_T point_selected,
+ BOOL_T point_selectable,
+ BOOL_T track_modifyable
+ )
{
DIST_T d, w;
d = tempD.scale*0.25;
@@ -282,7 +281,7 @@ int createMidPoint(dynArr_t * ap,
sp->u.c.a1 = 360.0;
sp->u.c.radius = d/2;
sp->type = point_selected?SEG_FILCRCL:SEG_CRVLIN;
- sp->width = w;
+ sp->lineWidth = w;
sp->color = drawColorBlack;
return 1;
@@ -295,87 +294,97 @@ int createMidPoint(dynArr_t * ap,
* A Cornu end Point has a filled circle surrounded by another circle for endpoint
*/
int createEndPoint(
- trkSeg_t sp[], //seg pointer for up to 2 trkSegs (ends and line)
- coOrd pos0, //end on curve
- BOOL_T point_selected,
- BOOL_T point_selectable,
- BOOL_T track_modifyable,
- BOOL_T track_present,
- ANGLE_T angle,
- DIST_T radius,
- coOrd centert,
- endHandle * endHandle
- )
+ trkSeg_t sp[], //seg pointer for up to 2 trkSegs (ends and line)
+ coOrd pos0, //end on curve
+ BOOL_T point_selected,
+ BOOL_T point_selectable,
+ BOOL_T track_modifyable,
+ BOOL_T track_present,
+ ANGLE_T angle,
+ DIST_T radius,
+ coOrd centert,
+ endHandle * endHandle
+)
{
- DIST_T d, w;
- int num =0;
- d = tempD.scale*0.25;
- w = tempD.scale/tempD.dpi; /*double width*/
- num = 1;
- if (point_selectable) {
+ DIST_T d, w;
+ int num =0;
+ d = tempD.scale*0.25;
+ w = tempD.scale/tempD.dpi; /*double width*/
+ num = 1;
+ if (point_selectable) {
sp[1].u.c.center = pos0;
sp[1].u.c.a0 = 0.0;
sp[1].u.c.a1 = 360.0;
sp[1].u.c.radius = d/2;
sp[1].type = SEG_CRVLIN;
- sp[1].width = w;
+ sp[1].lineWidth = w;
sp[1].color = point_selected?drawColorBlue:drawColorRed;
num = 2;
- }
- sp[0].u.c.center = pos0;
- sp[0].u.c.a0 = 0.0;
- sp[0].u.c.a1 = 360.0;
- sp[0].width = w;
- sp[0].u.c.radius = d/4;
- sp[0].color = point_selected?drawColorBlue:drawColorRed;
- if (track_modifyable)
- sp[0].type = SEG_CRVLIN;
- else
- sp[0].type = SEG_FILCRCL;
- if (!track_present && endHandle ) {
- endHandle->end_center = zero;
- endHandle->end_curve = zero;
- endHandle->end_valid = TRUE;
- endHandle->mid_disp = 0.0;
- DIST_T end_length = tempD.scale*2.0;
- Translate(&endHandle->end_curve,pos0,angle,end_length);
- Translate(&endHandle->end_center,pos0,angle,end_length/2);
- if (radius>0.0) {
- ANGLE_T a1 = R2D(end_length/radius);
- if (DifferenceBetweenAngles(angle,FindAngle(centert,pos0))>0.0) {
- a1 = -a1;
- }
- PointOnCircle( &endHandle->end_curve, centert,radius,NormalizeAngle(FindAngle(centert,pos0)+a1));
- PointOnCircle( &endHandle->end_center,centert,radius,NormalizeAngle(FindAngle(centert,pos0)+(a1/2.0)));
+ }
+ sp[0].u.c.center = pos0;
+ sp[0].u.c.a0 = 0.0;
+ sp[0].u.c.a1 = 360.0;
+ sp[0].lineWidth = w;
+ sp[0].u.c.radius = d/4;
+ sp[0].color = point_selected?drawColorBlue:drawColorRed;
+ if (track_modifyable) {
+ sp[0].type = SEG_CRVLIN;
+ } else {
+ sp[0].type = SEG_FILCRCL;
+ }
+ if (!track_present && endHandle ) {
+ endHandle->end_center = zero;
+ endHandle->end_curve = zero;
+ endHandle->end_valid = TRUE;
+ endHandle->mid_disp = 0.0;
+ DIST_T end_length = tempD.scale*2.0;
+ Translate(&endHandle->end_curve,pos0,angle,end_length);
+ Translate(&endHandle->end_center,pos0,angle,end_length/2);
+ if (radius>0.0) {
+ ANGLE_T a1 = R2D(end_length/radius);
+ if (DifferenceBetweenAngles(angle,FindAngle(centert,pos0))>0.0) {
+ a1 = -a1;
+ }
+ PointOnCircle( &endHandle->end_curve, centert,radius,
+ NormalizeAngle(FindAngle(centert,pos0)+a1));
+ PointOnCircle( &endHandle->end_center,centert,radius,
+ NormalizeAngle(FindAngle(centert,pos0)+(a1/2.0)));
coOrd cm;
cm = endHandle->end_center;
ANGLE_T a = FindAngle(endHandle->end_curve,pos0);
Rotate(&cm,endHandle->end_curve,-a );
endHandle->mid_disp = cm.x-endHandle->end_curve.x;
curveData_t curveData;
- PlotCurve(crvCmdFromCenter,pos0,endHandle->end_center, endHandle->end_curve, &curveData, FALSE, 0.0);
+ PlotCurve(crvCmdFromCenter,pos0,endHandle->end_center, endHandle->end_curve,
+ &curveData, FALSE, 0.0);
if (curveData.type == curveTypeStraight) {
coOrd pos_line[2];
- Translate(&pos_line[0],pos0,FindAngle(pos0,endHandle->end_curve)+90,trackGauge/2);
- Translate(&pos_line[1],endHandle->end_curve,FindAngle(pos0,endHandle->end_curve)+90,trackGauge/2);
+ Translate(&pos_line[0],pos0,FindAngle(pos0,endHandle->end_curve)+90,
+ trackGauge/2);
+ Translate(&pos_line[1],endHandle->end_curve,FindAngle(pos0,
+ endHandle->end_curve)+90,trackGauge/2);
sp[num].type = SEG_STRLIN;
- sp[num].width = w;
+ sp[num].lineWidth = w;
sp[num].u.l.pos[0] = pos_line[0];
sp[num].u.l.pos[1] = pos_line[1];
- sp[num].color = (endHandle->last_selected||endHandle->radius_selected)?drawColorBlue:drawColorRed;
+ sp[num].color = (endHandle->last_selected
+ ||endHandle->radius_selected)?drawColorBlue:drawColorRed;
num++;
- Translate(&pos_line[0],pos0,FindAngle(pos0,endHandle->end_curve)-90,trackGauge/2);
- Translate(&pos_line[1],endHandle->end_curve,FindAngle(pos0,endHandle->end_curve)-90,trackGauge/2);
+ Translate(&pos_line[0],pos0,FindAngle(pos0,endHandle->end_curve)-90,
+ trackGauge/2);
+ Translate(&pos_line[1],endHandle->end_curve,FindAngle(pos0,
+ endHandle->end_curve)-90,trackGauge/2);
sp[num].type = SEG_STRLIN;
- sp[num].width = w;
+ sp[num].lineWidth = w;
sp[num].u.l.pos[0] = pos_line[0];
sp[num].u.l.pos[1] = pos_line[1];
- sp[num].color = (endHandle->last_selected||endHandle->radius_selected)?drawColorBlue:drawColorRed;
+ sp[num].color = (endHandle->last_selected
+ ||endHandle->radius_selected)?drawColorBlue:drawColorRed;
num++;
pos_line[0]= pos0;
Translate(&pos_line[1],pos0,-FindAngle(pos0,endHandle->end_curve),end_length);
sp[num].type = SEG_STRLIN;
- sp[num].width = w;
+ sp[num].lineWidth = w;
sp[num].u.l.pos[0] = pos_line[0];
sp[num].u.l.pos[1] = pos_line[1];
sp[num].color = drawColorRed;
@@ -384,7 +393,7 @@ int createEndPoint(
DIST_T pos_rad;
pos_rad = radius+trackGauge/2;
sp[num].type = SEG_CRVLIN;
- sp[num].width = w;
+ sp[num].lineWidth = w;
sp[num].u.c.center = centert;
sp[num].u.c.radius = pos_rad;
ANGLE_T an0 = FindAngle(centert,pos0);
@@ -397,43 +406,51 @@ int createEndPoint(
sp[num].u.c.a0 = an1;
}
endHandle->arc_angle = sp[num].u.c.a1;
- sp[num].color = (endHandle->last_selected||endHandle->radius_selected)?drawColorBlue:drawColorRed;
+ sp[num].color = (endHandle->last_selected
+ ||endHandle->radius_selected)?drawColorBlue:drawColorRed;
num++;
pos_rad = radius-trackGauge/2;
sp[num].type = SEG_CRVLIN;
- sp[num].width = w;
+ sp[num].lineWidth = w;
sp[num].u.c.center = centert;
sp[num].u.c.radius = pos_rad;
sp[num].u.c.a1 = sp[num-1].u.c.a1;
sp[num].u.c.a0 = sp[num-1].u.c.a0;
- sp[num].color = (endHandle->last_selected||endHandle->radius_selected)?drawColorBlue:drawColorRed;
+ sp[num].color = (endHandle->last_selected
+ ||endHandle->radius_selected)?drawColorBlue:drawColorRed;
num++;
}
- } else {
- coOrd pos_line[2];
- Translate(&pos_line[0],pos0,FindAngle(pos0,endHandle->end_curve)+90,trackGauge/2);
- Translate(&pos_line[1],endHandle->end_curve,FindAngle(pos0,endHandle->end_curve)+90,trackGauge/2);
- sp[num].type = SEG_STRLIN;
- sp[num].width = w;
+ } else {
+ coOrd pos_line[2];
+ Translate(&pos_line[0],pos0,FindAngle(pos0,endHandle->end_curve)+90,
+ trackGauge/2);
+ Translate(&pos_line[1],endHandle->end_curve,FindAngle(pos0,
+ endHandle->end_curve)+90,trackGauge/2);
+ sp[num].type = SEG_STRLIN;
+ sp[num].lineWidth = w;
sp[num].u.l.pos[0] = pos_line[0];
sp[num].u.l.pos[1] = pos_line[1];
- sp[num].color = (endHandle->last_selected||endHandle->radius_selected)?drawColorBlue:drawColorRed;
+ sp[num].color = (endHandle->last_selected
+ ||endHandle->radius_selected)?drawColorBlue:drawColorRed;
num++;
- Translate(&pos_line[0],pos0,FindAngle(pos0,endHandle->end_curve)-90,trackGauge/2);
- Translate(&pos_line[1],endHandle->end_curve,FindAngle(pos0,endHandle->end_curve)-90,trackGauge/2);
+ Translate(&pos_line[0],pos0,FindAngle(pos0,endHandle->end_curve)-90,
+ trackGauge/2);
+ Translate(&pos_line[1],endHandle->end_curve,FindAngle(pos0,
+ endHandle->end_curve)-90,trackGauge/2);
sp[num].type = SEG_STRLIN;
- sp[num].width = w;
+ sp[num].lineWidth = w;
sp[num].u.l.pos[0] = pos_line[0];
sp[num].u.l.pos[1] = pos_line[1];
- sp[num].color = (endHandle->last_selected||endHandle->radius_selected)?drawColorBlue:drawColorRed;
+ sp[num].color = (endHandle->last_selected
+ ||endHandle->radius_selected)?drawColorBlue:drawColorRed;
num++;
- }
- coOrd pos_line[2];
- pos_line[0]= pos0;
+ }
+ coOrd pos_line[2];
+ pos_line[0]= pos0;
Translate(&pos_line[1],pos0,angle+180,end_length);
sp[num].type = SEG_STRLIN;
- sp[num].width = w;
+ sp[num].lineWidth = w;
sp[num].u.l.pos[0] = pos_line[0];
sp[num].u.l.pos[1] = pos_line[1];
sp[num].color = drawColorRed;
@@ -442,25 +459,30 @@ int createEndPoint(
sp[num].u.c.center = endHandle->end_curve;
sp[num].u.c.a0 = 0.0;
sp[num].u.c.a1 = 360.0;
- sp[num].width = w;
+ sp[num].lineWidth = w;
sp[num].u.c.radius = d/4;
sp[num].color = endHandle->angle_selected?drawColorBlue:drawColorRed;
num++;
- if (radius<=0.0)
- DrawArrowHeads(&sp[num],endHandle->end_center,angle+90.0,TRUE,endHandle->radius_selected?drawColorBlue:drawColorRed);
- else
- DrawArrowHeads(&sp[num],endHandle->end_center,FindAngle(centert,endHandle->end_center),TRUE,endHandle->radius_selected?drawColorBlue:drawColorRed);
+ if (radius<=0.0) {
+ DrawArrowHeads(&sp[num],endHandle->end_center,angle+90.0,TRUE,
+ endHandle->radius_selected?drawColorBlue:drawColorRed);
+ } else {
+ DrawArrowHeads(&sp[num],endHandle->end_center,FindAngle(centert,
+ endHandle->end_center),TRUE,
+ endHandle->radius_selected?drawColorBlue:drawColorRed);
+ }
num=num+5;
- } else if (endHandle) {
- endHandle->end_valid=FALSE;
- }
- return num;
+ } else if (endHandle) {
+ endHandle->end_valid=FALSE;
+ }
+ return num;
}
static dynArr_t anchors_da;
#define anchors(N) DYNARR_N(trkSeg_t,anchors_da,N)
-static void CreateCornuEndAnchor(coOrd p, wBool_t lock) {
+static void CreateCornuEndAnchor(coOrd p, wBool_t lock)
+{
DIST_T d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
@@ -471,7 +493,7 @@ static void CreateCornuEndAnchor(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;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
i = anchors_da.cnt-1;
anchors(i).type = SEG_CRVLIN;
@@ -480,15 +502,18 @@ static void CreateCornuEndAnchor(coOrd p, wBool_t lock) {
anchors(i).u.c.radius = d;
anchors(i).u.c.a0 = 0.0;
anchors(i).u.c.a1 = 360.0;
- anchors(i).width = 0;
+ anchors(i).lineWidth = 0;
}
-static void CreateCornuExtendAnchor(coOrd p, ANGLE_T a, wBool_t selected) {
+static void CreateCornuExtendAnchor(coOrd p, ANGLE_T a, wBool_t selected)
+{
DYNARR_SET(trkSeg_t,anchors_da,anchors_da.cnt+5);
- DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),p,a,FALSE,wDrawColorBlue);
+ DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),p,a,FALSE,
+ wDrawColorBlue);
}
-static void CreateCornuAnchor(coOrd p, wBool_t open) {
+static void CreateCornuAnchor(coOrd p, wBool_t open)
+{
DIST_T d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
int i = anchors_da.cnt-1;
@@ -498,39 +523,40 @@ static void CreateCornuAnchor(coOrd p, wBool_t open) {
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;
}
/*
* Add element to DYNARR pointed to by caller from segment handed in
*/
-void addSegCornu(dynArr_t * const array_p, trkSeg_p seg) {
+void addSegCornu(dynArr_t * const array_p, trkSeg_p seg)
+{
trkSeg_p s;
DYNARR_APPEND(trkSeg_t, * array_p, 10); //Adds 1 to cnt
s = &DYNARR_N(trkSeg_t,* array_p,array_p->cnt-1);
s->type = seg->type;
- s->bezSegs.max = 0;
- s->bezSegs.cnt = 0;
- if (s->bezSegs.ptr) MyFree(s->bezSegs.ptr);
- s->bezSegs.ptr = NULL;
+ DYNARR_FREE( trkSeg, s->bezSegs );
s->color = seg->color;
- s->width = seg->width;
+ s->lineWidth = seg->lineWidth;
if ((s->type == SEG_BEZLIN || s->type == SEG_BEZTRK) && seg->bezSegs.cnt) {
s->u.b.angle0 = seg->u.b.angle0; //Copy all the rest
s->u.b.angle3 = seg->u.b.angle3;
s->u.b.length = seg->u.b.length;
s->u.b.minRadius = seg->u.b.minRadius;
- for (int i=0;i<4;i++) s->u.b.pos[i] = seg->u.b.pos[i];
+ for (int i=0; i<4; i++) { s->u.b.pos[i] = seg->u.b.pos[i]; }
s->u.b.radius0 = seg->u.b.radius3;
for (int i = 0; i<seg->bezSegs.cnt; i++) {
- addSegCornu(&s->bezSegs, (((trkSeg_p)seg->bezSegs.ptr) + i)); //recurse for copying embedded Beziers as in Cornu joint
+ //recurse for copying embedded Beziers as in Cornu joint
+ addSegCornu(&s->bezSegs,
+ &DYNARR_N(trkSeg_t,seg->bezSegs,i));
}
} else {
s->u = seg->u;
}
}
-EXPORT void SetKnots(spiro_cp knots[], coOrd posk[], char type[], int count) {
+EXPORT void SetKnots(spiro_cp knots[], coOrd posk[], char type[], int count)
+{
for (int i = 0; i < count; i++) {
knots[i].x = posk[i].x;
knots[i].y = posk[i].y;
@@ -547,8 +573,10 @@ typedef struct {
// G2 (position only k1'' = k2'' = 0); Also Cornu <-> Cornu
// G4 (position only - splitable for Cornu - a G4 point) k1''= k2''
-BOOL_T CallCornuM(dynArr_t extra_points, BOOL_T end[2], coOrd pos[2], cornuParm_t * cp, dynArr_t * array_p, BOOL_T spots) {
- array_p->cnt = 0;
+BOOL_T CallCornuM(dynArr_t extra_points, BOOL_T end[2], coOrd pos[2],
+ cornuParm_t * cp, dynArr_t * array_p, BOOL_T spots)
+{
+ DYNARR_RESET( trkSeg_t, *array_p );
//Create LH knots
//Find remote end point of track, create start knot
int ends[2];
@@ -562,7 +590,7 @@ BOOL_T CallCornuM(dynArr_t extra_points, BOOL_T end[2], coOrd pos[2], cornuParm_
BOOL_T back;
ANGLE_T angle1;
- if (Da.bezc) free(Da.bezc);
+ if (Da.bezc) { free(Da.bezc); }
Da.bezc = new_bezctx_xtrkcad(array_p,ends,spots,tempD.scale*0.15/4);
@@ -577,8 +605,8 @@ BOOL_T CallCornuM(dynArr_t extra_points, BOOL_T end[2], coOrd pos[2], cornuParm_
Translate(&posk[1],pos0,cp->angle[0],5);
} else {
angle1 = FindAngle(cp->center[0],pos[0]);
- if (NormalizeAngle(angle1 - cp->angle[0])<180) back = TRUE;
- else back = FALSE;
+ if (NormalizeAngle(angle1 - cp->angle[0])<180) { back = TRUE; }
+ else { back = FALSE; }
posk[0] = pos[0];
Rotate(&posk[0],cp->center[0],(back)?-10:10);
posk[1] = pos[0];
@@ -590,12 +618,12 @@ BOOL_T CallCornuM(dynArr_t extra_points, BOOL_T end[2], coOrd pos[2], cornuParm_
posk[0] = pos[0];
}
- for (int i=0;i<extra_points.cnt;i++) {
- posk[(end[0]?3:1)+i] = DYNARR_N(coOrd,extra_points,i);
- type[(end[0]?3:1)+i] = SPIRO_G4;
- }
+ for (int i=0; i<extra_points.cnt; i++) {
+ posk[(end[0]?3:1)+i] = DYNARR_N(coOrd,extra_points,i);
+ type[(end[0]?3:1)+i] = SPIRO_G4;
+ }
- posk[(end[0]?3:1)+extra_points.cnt] = pos[1];
+ posk[(end[0]?3:1)+extra_points.cnt] = pos[1];
coOrd pos1 = pos[1];
if (end[1]) {
@@ -607,8 +635,8 @@ BOOL_T CallCornuM(dynArr_t extra_points, BOOL_T end[2], coOrd pos[2], cornuParm_
Translate(&posk[(end[0]?3:1)+extra_points.cnt+2],pos1,cp->angle[1],10);
} else {
angle1 = FindAngle(cp->center[1],pos[1]);
- if (NormalizeAngle(angle1 - cp->angle[1])>180) back = TRUE;
- else back = FALSE;
+ if (NormalizeAngle(angle1 - cp->angle[1])>180) { back = TRUE; }
+ else { back = FALSE; }
posk[(end[0]?3:1)+extra_points.cnt+1] = pos[1];
Rotate(&posk[(end[0]?3:1)+extra_points.cnt+1],cp->center[1],(back)?5:-5);
posk[(end[0]?3:1)+extra_points.cnt+2] = pos[1];
@@ -628,8 +656,10 @@ BOOL_T CallCornuM(dynArr_t extra_points, BOOL_T end[2], coOrd pos[2], cornuParm_
return TRUE;
}
-EXPORT BOOL_T CallCornu0(coOrd pos[2], coOrd center[2], ANGLE_T angle[2], DIST_T radius[2], dynArr_t * array_p, BOOL_T spots) {
- array_p->cnt = 0;
+EXPORT BOOL_T CallCornu0(coOrd pos[2], coOrd center[2], ANGLE_T angle[2],
+ DIST_T radius[2], dynArr_t * array_p, BOOL_T spots)
+{
+ DYNARR_RESET( trkSeg_t, *array_p );
//Create LH knots
//Find remote end point of track, create start knot
int ends[2];
@@ -640,7 +670,7 @@ EXPORT BOOL_T CallCornu0(coOrd pos[2], coOrd center[2], ANGLE_T angle[2], DIST_T
BOOL_T back;
ANGLE_T angle1;
- if (Da.bezc) free(Da.bezc);
+ if (Da.bezc) { free(Da.bezc); }
Da.bezc = new_bezctx_xtrkcad(array_p,ends,spots,tempD.scale*0.15/4);
@@ -653,8 +683,8 @@ EXPORT BOOL_T CallCornu0(coOrd pos[2], coOrd center[2], ANGLE_T angle[2], DIST_T
Translate(&posk[1],pos0,angle[0],5);
} else {
angle1 = FindAngle(center[0],pos[0]);
- if (NormalizeAngle(angle1 - angle[0])<180) back = TRUE;
- else back = FALSE;
+ if (NormalizeAngle(angle1 - angle[0])<180) { back = TRUE; }
+ else { back = FALSE; }
posk[0] = pos[0];
Rotate(&posk[0],center[0],(back)?-10:10);
posk[1] = pos[0];
@@ -674,8 +704,8 @@ EXPORT BOOL_T CallCornu0(coOrd pos[2], coOrd center[2], ANGLE_T angle[2], DIST_T
Translate(&posk[5],pos1,angle[1],10);
} else {
angle1 = FindAngle(center[1],pos[1]);
- if (NormalizeAngle(angle1 - angle[1])>180) back = TRUE;
- else back = FALSE;
+ if (NormalizeAngle(angle1 - angle[1])>180) { back = TRUE; }
+ else { back = FALSE; }
posk[4] = pos[1];
Rotate(&posk[4],center[1],(back)?5:-5);
posk[5] = pos[1];
@@ -695,36 +725,41 @@ EXPORT BOOL_T CallCornu0(coOrd pos[2], coOrd center[2], ANGLE_T angle[2], DIST_T
/*
* Set up the call to Cornu0. Take the conditions of the two ends from the connected tracks.
*/
-BOOL_T CallCornu(coOrd pos[2], track_p trk[2], EPINX_T ep[2], dynArr_t * array_p, cornuParm_t * cp) {
+BOOL_T CallCornu(coOrd pos[2], track_p trk[2], EPINX_T ep[2],
+ dynArr_t * array_p, cornuParm_t * cp)
+{
trackParams_t params;
ANGLE_T angle;
- for (int i=0;i<2;i++) {
+ for (int i=0; i<2; i++) {
if (trk[i]) {
- if (!GetTrackParams(PARAMS_CORNU,trk[i],pos[i],&params)) return FALSE;
+ if (!GetTrackParams(PARAMS_CORNU,trk[i],pos[i],&params)) { return FALSE; }
cp->pos[i] = pos[i];
- if (ep && ep[i]>=0) angle = GetTrkEndAngle(trk[i],ep[i]);
- else angle = params.angle; //Turntable only
+ if (ep && ep[i]>=0) { angle = GetTrkEndAngle(trk[i],ep[i]); }
+ else { angle = params.angle; } //Turntable only
if (Da.circleorHelix[i]) { //Helix/Circle only
cp->radius[i] = params.arcR;
cp->center[i] = params.arcP;
- if (ep && ep[i]>=0) cp->angle[i] = NormalizeAngle(params.track_angle+(ep[i]?180:0));
+ if (ep && ep[i]>=0) { cp->angle[i] = NormalizeAngle(params.track_angle+(ep[i]?180:0)); }
} else if (params.type == curveTypeStraight) {
cp->angle[i] = NormalizeAngle(angle+180); //Because end always backwards
cp->radius[i] = 0.0;
- } else if ((params.type == curveTypeCornu || params.type == curveTypeBezier) && params.arcR == 0.0 ) {
+ } else if ((params.type == curveTypeCornu || params.type == curveTypeBezier)
+ && params.arcR == 0.0 ) {
cp->radius[i] = 0.0;
- if (ep && ep[i]>=0) cp->angle[i] = NormalizeAngle(params.track_angle+(ep[i]?180:0)); //Use point not end
+ if (ep && ep[i]>=0) { cp->angle[i] = NormalizeAngle(params.track_angle+(ep[i]?180:0)); } //Use point not end
} else if (params.type == curveTypeCurve) {
- if (ep && ep[i]>=0) cp->angle[i] = NormalizeAngle(params.track_angle+(ep[i]?180:0));
+ if (ep && ep[i]>=0) { cp->angle[i] = NormalizeAngle(params.track_angle+(ep[i]?180:0)); }
cp->radius[i] = params.arcR;
cp->center[i] = params.arcP;
- } else if ((params.type == curveTypeCornu || params.type == curveTypeBezier) && params.arcR != 0.0 ){
- if (ep && ep[i]>=0) cp->angle[i] = NormalizeAngle(params.track_angle+(ep[i]?180:0));
+ } else if ((params.type == curveTypeCornu || params.type == curveTypeBezier)
+ && params.arcR != 0.0 ) {
+ if (ep && ep[i]>=0) { cp->angle[i] = NormalizeAngle(params.track_angle+(ep[i]?180:0)); }
cp->radius[i] = params.arcR;
cp->center[i] = params.arcP;
} else {
- cp->angle[i] = NormalizeAngle(angle+180); //Unknown - treat like straight
+ cp->angle[i] = NormalizeAngle(angle
+ +180); //Unknown - treat like straight
cp->radius[i] = params.arcR;
cp->center[i] = params.arcP;
}
@@ -742,67 +777,85 @@ BOOL_T CallCornu(coOrd pos[2], track_p trk[2], EPINX_T ep[2], dynArr_t * array_p
*/
EXPORT void DrawCornuCurve(
- trkSeg_p first_trk,
- trkSeg_p point1,
- int ep1Segs_cnt,
- trkSeg_p curveSegs,
- int crvSegs_cnt,
- trkSeg_p point2,
- int ep2Segs_cnt,
- trkSeg_p second_trk,
- trkSeg_p extend1_trk,
- trkSeg_p extend2_trk,
- trkSeg_p mids,
- int midSegs_cnt,
- wDrawColor color
- ) {
- if (first_trk)
+ trkSeg_p first_trk,
+ trkSeg_p point1,
+ int ep1Segs_cnt,
+ trkSeg_p curveSegs,
+ int crvSegs_cnt,
+ trkSeg_p point2,
+ int ep2Segs_cnt,
+ trkSeg_p second_trk,
+ trkSeg_p extend1_trk,
+ trkSeg_p extend2_trk,
+ trkSeg_p mids,
+ int midSegs_cnt,
+ wDrawColor color
+)
+{
+ if (first_trk) {
DrawSegs( &tempD, zero, 0.0, first_trk, 1, Da.trackGauge, drawColorBlack );
- if (crvSegs_cnt>0 && curveSegs)
+ }
+ if (crvSegs_cnt>0 && curveSegs) {
DrawSegs( &tempD, zero, 0.0, curveSegs, crvSegs_cnt, Da.trackGauge, color );
- if (second_trk)
+ }
+ if (second_trk) {
DrawSegs( &tempD, zero, 0.0, second_trk, 1, Da.trackGauge, drawColorBlack );
- if (ep1Segs_cnt>0 && point1)
- DrawSegs( &tempD, zero, 0.0, point1, ep1Segs_cnt, Da.trackGauge, drawColorBlack );
- if (ep2Segs_cnt>0 && point2)
- DrawSegs( &tempD, zero, 0.0, point2, ep2Segs_cnt, Da.trackGauge, drawColorBlack );
- if (midSegs_cnt>0 && mids)
- DrawSegs( &tempD, zero, 0.0, mids, midSegs_cnt, Da.trackGauge, drawColorBlack );
- if (extend1_trk)
+ }
+ if (ep1Segs_cnt>0 && point1) {
+ DrawSegs( &tempD, zero, 0.0, point1, ep1Segs_cnt, Da.trackGauge,
+ drawColorBlack );
+ }
+ if (ep2Segs_cnt>0 && point2) {
+ DrawSegs( &tempD, zero, 0.0, point2, ep2Segs_cnt, Da.trackGauge,
+ drawColorBlack );
+ }
+ if (midSegs_cnt>0 && mids) {
+ DrawSegs( &tempD, zero, 0.0, mids, midSegs_cnt, Da.trackGauge,
+ drawColorBlack );
+ }
+ if (extend1_trk) {
DrawSegs( &tempD, zero, 0.0, extend1_trk, 1, Da.trackGauge, drawColorBlack);
- if (extend2_trk)
+ }
+ if (extend2_trk) {
DrawSegs( &tempD, zero, 0.0, extend2_trk, 1, Da.trackGauge, drawColorBlack);
+ }
}
/*
* If Track, make it red if the radius is below minimum
*/
-void DrawTempCornu() {
+void DrawTempCornu()
+{
- DrawCornuCurve(&Da.trk1Seg,
- &Da.ep1Segs[0],Da.ep1Segs_da_cnt,
- (trkSeg_t *)Da.crvSegs_da.ptr,Da.crvSegs_da_cnt,
- &Da.ep2Segs[0],Da.ep2Segs_da_cnt,
- &Da.trk2Seg,
- Da.extend[0]?&Da.extendSeg[0]:NULL,
- Da.extend[1]?&Da.extendSeg[1]:NULL,
- (trkSeg_t *)Da.midSegs.ptr,Da.midSegs.cnt,
- fabs(Da.minRadius)<(GetLayoutMinTrackRadius()-EPSILON)?exceptionColor:normalColor);
+ DrawCornuCurve(&Da.trk1Seg,
+ &Da.ep1Segs[0],Da.ep1Segs_da_cnt,
+ &DYNARR_N(trkSeg_t,Da.crvSegs_da,0),Da.crvSegs_da_cnt,
+ &Da.ep2Segs[0],Da.ep2Segs_da_cnt,
+ &Da.trk2Seg,
+ Da.extend[0]?&Da.extendSeg[0]:NULL,
+ Da.extend[1]?&Da.extendSeg[1]:NULL,
+ &DYNARR_N(trkSeg_t,Da.midSegs,0),Da.midSegs.cnt,
+ fabs(Da.minRadius)<(GetLayoutMinTrackRadius()-EPSILON)?exceptionColor:
+ normalColor);
}
-void CreateBothEnds(int selectEndPoint, int selectMidPoint, int selectEndHandle, int lastSelected ) {
+void CreateBothEnds(int selectEndPoint, int selectMidPoint, int selectEndHandle,
+ int lastSelected )
+{
BOOL_T selectable[2],modifyable[2];
selectable[0] = !Da.trk[0] || (
- Da.trk[0] && !QueryTrack(Da.trk[0],Q_IS_CORNU) && !QueryTrack(Da.trk[0],Q_CAN_MODIFY_CONTROL_POINTS));
+ Da.trk[0] && !QueryTrack(Da.trk[0],Q_IS_CORNU)
+ && !QueryTrack(Da.trk[0],Q_CAN_MODIFY_CONTROL_POINTS));
modifyable[0] = !Da.trk[0] || (
- Da.trk[0] && QueryTrack(Da.trk[0],Q_CORNU_CAN_MODIFY));
+ Da.trk[0] && QueryTrack(Da.trk[0],Q_CORNU_CAN_MODIFY));
selectable[1] = !Da.trk[1] || (
- Da.trk[1] && !QueryTrack(Da.trk[1],Q_IS_CORNU) && !QueryTrack(Da.trk[1],Q_CAN_MODIFY_CONTROL_POINTS));
+ Da.trk[1] && !QueryTrack(Da.trk[1],Q_IS_CORNU)
+ && !QueryTrack(Da.trk[1],Q_CAN_MODIFY_CONTROL_POINTS));
modifyable[1] = !Da.trk[1] || (
- Da.trk[1] && QueryTrack(Da.trk[1],Q_CORNU_CAN_MODIFY));
+ Da.trk[1] && QueryTrack(Da.trk[1],Q_CORNU_CAN_MODIFY));
Da.endHandle[0].angle_selected = (selectEndHandle==1)?TRUE:FALSE;
Da.endHandle[0].radius_selected = (selectEndHandle==0)?TRUE:FALSE;
@@ -811,30 +864,41 @@ void CreateBothEnds(int selectEndPoint, int selectMidPoint, int selectEndHandle,
Da.endHandle[0].last_selected = lastSelected==0?TRUE:FALSE;
Da.endHandle[1].last_selected = lastSelected==1?TRUE:FALSE;
if (selectEndPoint == -1) {
- Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs, Da.pos[0],FALSE,selectable[0],modifyable[0],Da.trk[0]!=NULL,Da.angle[0],Da.radius[0],Da.center[0],Da.extend[0]?NULL:&Da.endHandle[0]);
- Da.ep2Segs_da_cnt = createEndPoint(Da.ep2Segs, Da.pos[1],FALSE,selectable[1],modifyable[1],Da.trk[1]!=NULL,Da.angle[1],Da.radius[1],Da.center[1],Da.extend[1]?NULL:&Da.endHandle[1]);
+ Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs, Da.pos[0],FALSE,selectable[0],
+ modifyable[0],Da.trk[0]!=NULL,Da.angle[0],Da.radius[0],Da.center[0],
+ Da.extend[0]?NULL:&Da.endHandle[0]);
+ Da.ep2Segs_da_cnt = createEndPoint(Da.ep2Segs, Da.pos[1],FALSE,selectable[1],
+ modifyable[1],Da.trk[1]!=NULL,Da.angle[1],Da.radius[1],Da.center[1],
+ Da.extend[1]?NULL:&Da.endHandle[1]);
} else {
- Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs, Da.pos[0],selectEndPoint == 0,selectable[0],modifyable[0],Da.trk[0]!=NULL,Da.angle[0],Da.radius[0],Da.center[0],Da.extend[0]?NULL:&Da.endHandle[0]);
- Da.ep2Segs_da_cnt = createEndPoint(Da.ep2Segs, Da.pos[1],selectEndPoint == 1,selectable[1],modifyable[1],Da.trk[1]!=NULL,Da.angle[1],Da.radius[1],Da.center[1],Da.extend[1]?NULL:&Da.endHandle[1]);
+ Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs, Da.pos[0],selectEndPoint == 0,
+ selectable[0],modifyable[0],Da.trk[0]!=NULL,Da.angle[0],Da.radius[0],
+ Da.center[0],Da.extend[0]?NULL:&Da.endHandle[0]);
+ Da.ep2Segs_da_cnt = createEndPoint(Da.ep2Segs, Da.pos[1],selectEndPoint == 1,
+ selectable[1],modifyable[1],Da.trk[1]!=NULL,Da.angle[1],Da.radius[1],
+ Da.center[1],Da.extend[1]?NULL:&Da.endHandle[1]);
}
Da.endHandle[0].end_valid = !Da.extend[0];
Da.endHandle[1].end_valid = !Da.extend[1];
DYNARR_RESET(trkSeg_t,Da.midSegs);
- for (int i=0;i<Da.mid_points.cnt;i++) {
- createMidPoint(&Da.midSegs, DYNARR_N(coOrd,Da.mid_points,i),selectMidPoint == i,TRUE, TRUE );
+ for (int i=0; i<Da.mid_points.cnt; i++) {
+ createMidPoint(&Da.midSegs, DYNARR_N(coOrd,Da.mid_points,i),selectMidPoint == i,
+ TRUE, TRUE );
}
- if (Da.radius[0] >=0.0) Da.ends[0] = TRUE;
- else Da.ends[0] = FALSE;
- if (Da.radius[1] >=0.0) Da.ends[1] = TRUE;
- else Da.ends[1] = FALSE;
+ if (Da.radius[0] >=0.0) { Da.ends[0] = TRUE; }
+ else { Da.ends[0] = FALSE; }
+ if (Da.radius[1] >=0.0) { Da.ends[1] = TRUE; }
+ else { Da.ends[1] = FALSE; }
}
-BOOL_T GetConnectedTrackParms(track_p t, const coOrd pos, int end, EPINX_T track_end, wBool_t extend) {
+BOOL_T GetConnectedTrackParms(track_p t, const coOrd pos, int end,
+ EPINX_T track_end, wBool_t extend)
+{
trackParams_t trackParams;
coOrd pos1;
- if ((track_end>=0) && extend) pos1 = GetTrkEndPos(t,track_end);
- else pos1 = pos;
- if (!GetTrackParams(PARAMS_CORNU, t, pos1, &trackParams)) return FALSE;
+ if ((track_end>=0) && extend) { pos1 = GetTrkEndPos(t,track_end); }
+ else { pos1 = pos; }
+ if (!GetTrackParams(PARAMS_CORNU, t, pos1, &trackParams)) { return FALSE; }
Da.radius[end] = 0.0;
Da.center[end] = zero;
Da.circleorHelix[end] = FALSE;
@@ -869,9 +933,10 @@ BOOL_T GetConnectedTrackParms(track_p t, const coOrd pos, int end, EPINX_T track
Da.pos[end] = trackParams.cornuEnd[ep];
Da.center[end] = trackParams.cornuCenter[ep];
} else if (trackParams.type == curveTypeStraight) {
- if (trackParams.ep>=0)
- Da.angle[end] = NormalizeAngle(GetTrkEndAngle(t,track_end)+180); //Ignore params.angle because it gives from nearest end
- else {
+ if (trackParams.ep>=0) {
+ Da.angle[end] = NormalizeAngle(GetTrkEndAngle(t,
+ track_end)+180); //Ignore params.angle because it gives from nearest end
+ } else {
Da.angle[end] = NormalizeAngle(trackParams.angle+180); //Turntable
Da.pos[end] = trackParams.lineEnd; //End moved to constrain angle
}
@@ -879,18 +944,20 @@ BOOL_T GetConnectedTrackParms(track_p t, const coOrd pos, int end, EPINX_T track
return TRUE;
}
-void CorrectHelixAngles() {
+void CorrectHelixAngles()
+{
if ( Da.circleorHelix[0] ) {
Da.ep[0] = PickArcEndPt( Da.center[0], Da.pos[0], Da.pos[1] );
- if (Da.ep[0] == 1) Da.angle[0] = NormalizeAngle(Da.angle[0]+180);
+ if (Da.ep[0] == 1) { Da.angle[0] = NormalizeAngle(Da.angle[0]+180); }
}
if ( Da.circleorHelix[1] ) {
Da.ep[1] = PickArcEndPt( Da.center[1], Da.pos[1], Da.pos[0] );
- if (Da.ep[1] == 1) Da.angle[1] = NormalizeAngle(Da.angle[1]+180);
+ if (Da.ep[1] == 1) { Da.angle[1] = NormalizeAngle(Da.angle[1]+180); }
}
}
-BOOL_T CheckHelix(track_p trk) {
+BOOL_T CheckHelix(track_p trk)
+{
if ( Da.trk[0] && QueryTrack(Da.trk[0],Q_HAS_VARIABLE_ENDPOINTS)) {
track_p t = GetTrkEndTrk(Da.trk[0],Da.ep[0]);
if ( t != NULL && t != trk) {
@@ -908,86 +975,92 @@ BOOL_T CheckHelix(track_p trk) {
return TRUE;
}
-void SetUpCornuParms(cornuParm_t * cp) {
- cp->center[0] = Da.center[0];
- cp->angle[0] = Da.angle[0];
- cp->radius[0] = Da.radius[0];
- cp->center[1] = Da.center[1];
- cp->angle[1] = Da.angle[1];
- cp->radius[1] = Da.radius[1];
+void SetUpCornuParms(cornuParm_t * cp)
+{
+ cp->center[0] = Da.center[0];
+ cp->angle[0] = Da.angle[0];
+ cp->radius[0] = Da.radius[0];
+ cp->center[1] = Da.center[1];
+ cp->angle[1] = Da.angle[1];
+ cp->radius[1] = Da.radius[1];
}
-track_p CreateCornuFromPoints(coOrd pos[2],BOOL_T track_end[2]) {
- coOrd center[2];
- DIST_T radius[2];
- ANGLE_T angle[2];
- BOOL_T back, neg;
- cornuParm_t new;
- int inx,subinx;
- coOrd pos_temp[2];
-
- for (int i=0;i<2;i++) {
- pos_temp[i] = pos[i];
+track_p CreateCornuFromPoints(coOrd pos[2],BOOL_T track_end[2])
+{
+ coOrd center[2];
+ DIST_T radius[2];
+ ANGLE_T angle[2];
+ BOOL_T back, neg;
+ cornuParm_t new;
+ int inx,subinx;
+ coOrd pos_temp[2];
- if (!track_end[i] || (Da.radius[i]==-1.0)) {
+ for (int i=0; i<2; i++) {
+ pos_temp[i] = pos[i];
- angle[i] = GetAngleSegs(Da.crvSegs_da.cnt,(trkSeg_t *)(Da.crvSegs_da.ptr),&pos_temp[i],&inx,NULL,&back,&subinx,&neg);
+ if (!track_end[i] || (Da.radius[i]==-1.0)) {
- trkSeg_p segPtr = &DYNARR_N(trkSeg_t, Da.crvSegs_da, inx);
+ angle[i] = GetAngleSegs(Da.crvSegs_da.cnt,&DYNARR_N(trkSeg_t,Da.crvSegs_da,0),
+ &pos_temp[i],&inx,NULL,&back,&subinx,&neg);
- if (segPtr->type == SEG_BEZTRK)
- segPtr = &DYNARR_N(trkSeg_t, segPtr->bezSegs, subinx);
+ trkSeg_p segPtr = &DYNARR_N(trkSeg_t, Da.crvSegs_da, inx);
- if (i==0) {
- if (neg==back) angle[i] = NormalizeAngle(angle[i]+180);
- } else {
- if (!(neg==back)) angle[i] = NormalizeAngle(angle[i]+180);
- }
+ if (segPtr->type == SEG_BEZTRK) {
+ segPtr = &DYNARR_N(trkSeg_t, segPtr->bezSegs, subinx);
+ }
- if (segPtr->type == SEG_STRTRK) {
- radius[i] = 0.0;
- center[i] = zero;
- } else if (segPtr->type == SEG_CRVTRK) {
- center[i] = segPtr->u.c.center;
- radius[i] = fabs(segPtr->u.c.radius);
- }
+ if (i==0) {
+ if (neg==back) { angle[i] = NormalizeAngle(angle[i]+180); }
} else {
- pos[i] = Da.pos[i];
- radius[i] = Da.radius[i];
- center[i] = Da.center[i];
- angle[i] = Da.angle[i];
- neg = FALSE;
- back = FALSE;
- }
- }
- new.pos[0] = pos[0];
- new.pos[1] = pos[1];
- new.angle[0] = angle[0];
- new.angle[1] = angle[1];
- new.center[0] = center[0];
- new.center[1] = center[1];
- new.radius[0] = radius[0];
- new.radius[1] = radius[1];
-
- track_p trk1 = NewCornuTrack(new.pos,new.center,new.angle,new.radius,NULL,0);
- if (trk1==NULL) {
- wBeep();
- InfoMessage(_("Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"),
- new.pos[0].x,new.pos[0].y,
- new.pos[1].x,new.pos[1].y,
- new.center[0].x,new.center[0].y,
- new.center[1].x,new.center[1].y,
- new.angle[0],new.angle[1],
- FormatDistance(new.radius[0]),FormatDistance(new.radius[1]));
- UndoEnd();
- return NULL;
+ if (!(neg==back)) { angle[i] = NormalizeAngle(angle[i]+180); }
+ }
+
+ if (segPtr->type == SEG_STRTRK) {
+ radius[i] = 0.0;
+ center[i] = zero;
+ } else if (segPtr->type == SEG_CRVTRK) {
+ center[i] = segPtr->u.c.center;
+ radius[i] = fabs(segPtr->u.c.radius);
+ }
+ } else {
+ pos[i] = Da.pos[i];
+ radius[i] = Da.radius[i];
+ center[i] = Da.center[i];
+ angle[i] = Da.angle[i];
+ neg = FALSE;
+ back = FALSE;
}
- return trk1;
+ }
+ new.pos[0] = pos[0];
+ new.pos[1] = pos[1];
+ new.angle[0] = angle[0];
+ new.angle[1] = angle[1];
+ new.center[0] = center[0];
+ new.center[1] = center[1];
+ new.radius[0] = radius[0];
+ new.radius[1] = radius[1];
+
+ track_p trk1 = NewCornuTrack(new.pos,new.center,new.angle,new.radius,NULL,0);
+ if (trk1==NULL) {
+ wBeep();
+ InfoMessage(
+ _("Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"),
+ new.pos[0].x,new.pos[0].y,
+ new.pos[1].x,new.pos[1].y,
+ new.center[0].x,new.center[0].y,
+ new.center[1].x,new.center[1].y,
+ new.angle[0],new.angle[1],
+ FormatDistance(new.radius[0]),FormatDistance(new.radius[1]));
+ UndoEnd();
+ return NULL;
+ }
+ return trk1;
}
-ANGLE_T GetOpenAngle(coOrd pos[2],ANGLE_T angle[2],int moved) {
+ANGLE_T GetOpenAngle(coOrd pos[2],ANGLE_T angle[2],int moved)
+{
ANGLE_T a = FindAngle(pos[1-moved],pos[moved]);
ANGLE_T diff = (180+a)-angle[1-moved]; //Difference between input and line
return a+diff; //Change to line plus this at the other end
@@ -1028,9 +1101,9 @@ static paramGroup_t cornuModPG = { "cornuMod", 0, cornuModPLs, COUNT( cornuModPL
*
*/
EXPORT STATUS_T AdjustCornuCurve(
- wAction_t action,
- coOrd pos,
- cornuMessageProc message )
+ wAction_t action,
+ coOrd pos,
+ cornuMessageProc message )
{
track_p t;
DIST_T d;
@@ -1044,7 +1117,8 @@ EXPORT STATUS_T AdjustCornuCurve(
Da.cmdType = VP2L(commandContext);
- if (Da.state != PICK_POINT && Da.state != POINT_PICKED && Da.state != TRACK_SELECTED) return C_CONTINUE;
+ if (Da.state != PICK_POINT && Da.state != POINT_PICKED
+ && Da.state != TRACK_SELECTED) { return C_CONTINUE; }
switch ( action & 0xFF) {
@@ -1058,28 +1132,31 @@ EXPORT STATUS_T AdjustCornuCurve(
Da.prevEndPoint = -1;
Da.extend[0] = FALSE;
Da.extend[1] = FALSE;
- CreateBothEnds(Da.selectEndPoint, Da.selectMidPoint,Da.selectEndHandle,Da.prevSelected);
- Da.crvSegs_da.cnt = 0;
+ CreateBothEnds(Da.selectEndPoint, Da.selectMidPoint,Da.selectEndHandle,
+ Da.prevSelected);
+ DYNARR_RESET( trkSeg_t, Da.crvSegs_da );
SetUpCornuParms(&cp);
- if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
- else Da.crvSegs_da_cnt = 0;
+ if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) { Da.crvSegs_da_cnt = Da.crvSegs_da.cnt; }
+ else { Da.crvSegs_da_cnt = 0; }
Da.minRadius = CornuMinRadius(Da.pos,Da.crvSegs_da);
InfoMessage( _("Select Point, or Add Point") );
TempRedraw(); // AdjustCornuCurve C_START
return C_CONTINUE;
case C_UPDATE:
- if (Da.state != PICK_POINT && Da.prevSelected>-1) return C_CONTINUE;
+ if (Da.state != PICK_POINT && Da.prevSelected>-1) { return C_CONTINUE; }
int sel = Da.prevSelected;
- if (Da.trk[sel]) return C_CONTINUE; //Track Here - should never happen
+ if (Da.trk[sel]) { return C_CONTINUE; } //Track Here - should never happen
Da.radius[sel] = fabs(cornuModCmdContext.radius);
Da.angle[sel] = cornuModCmdContext.angle;
- if (cornuModCmdContext.radius!=0)
- Translate(&Da.center[sel],Da.pos[sel],Da.angle[sel]+90,cornuModCmdContext.radius);
+ if (cornuModCmdContext.radius!=0) {
+ Translate(&Da.center[sel],Da.pos[sel],Da.angle[sel]+90,
+ cornuModCmdContext.radius);
+ }
CreateBothEnds(Da.prevSelected,-1,-1,Da.prevSelected);
SetUpCornuParms(&cp);
- if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
- else Da.crvSegs_da_cnt = 0;
+ if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) { Da.crvSegs_da_cnt = Da.crvSegs_da.cnt; }
+ else { Da.crvSegs_da_cnt = 0; }
Da.minRadius = CornuMinRadius(Da.pos,Da.crvSegs_da);
return C_CONTINUE;
break;
@@ -1088,7 +1165,7 @@ EXPORT STATUS_T AdjustCornuCurve(
if (Da.state == NONE || Da.state == PICK_POINT) {
wSetCursor(mainD.d,defaultCursor);
DYNARR_RESET(trkSeg_t,anchors_da);
- for(int i=0;i<2;i++) {
+ for(int i=0; i<2; i++) {
if (IsClose(FindDistance(pos,Da.pos[i]))) {
if (((MyGetKeyState() & WKEY_SHIFT) != 0) && Da.selectTrack) {
CreateCornuExtendAnchor(Da.pos[i], Da.angle[i], FALSE);
@@ -1099,9 +1176,10 @@ EXPORT STATUS_T AdjustCornuCurve(
}
}
}
- CreateBothEnds(Da.selectEndPoint,Da.selectMidPoint,Da.selectEndHandle,Da.prevSelected);
+ CreateBothEnds(Da.selectEndPoint,Da.selectMidPoint,Da.selectEndHandle,
+ Da.prevSelected);
Da.selectEndPoint = -1;
- for (int i=0;i<Da.mid_points.cnt;i++) {
+ for (int i=0; i<Da.mid_points.cnt; i++) {
d = FindDistance(DYNARR_N(coOrd,Da.mid_points,i),pos);
if (IsClose(d)) {
CreateCornuAnchor(DYNARR_N(coOrd,Da.mid_points,i),FALSE);
@@ -1109,8 +1187,8 @@ EXPORT STATUS_T AdjustCornuCurve(
return C_CONTINUE;
}
}
- for (int i=0;i<2;i++) {
- if (Da.endHandle[i].end_valid == FALSE) continue;
+ for (int i=0; i<2; i++) {
+ if (Da.endHandle[i].end_valid == FALSE) { continue; }
d = FindDistance(Da.endHandle[i].end_center,pos);
if (IsClose(d)) {
CreateCornuAnchor(Da.endHandle[i].end_center, FALSE);
@@ -1118,8 +1196,8 @@ EXPORT STATUS_T AdjustCornuCurve(
return C_CONTINUE;
}
}
- for (int i=0;i<2;i++) {
- if (Da.endHandle[i].end_valid == FALSE) continue;
+ for (int i=0; i<2; i++) {
+ if (Da.endHandle[i].end_valid == FALSE) { continue; }
d = FindDistance(Da.endHandle[i].end_curve,pos);
if (IsClose(d)) {
CreateCornuAnchor(Da.endHandle[i].end_curve, FALSE);
@@ -1128,15 +1206,16 @@ EXPORT STATUS_T AdjustCornuCurve(
}
}
coOrd temp_pos = pos;
- if (IsClose(DistanceSegs(zero,0.0,Da.crvSegs_da.cnt,(trkSeg_p)Da.crvSegs_da.ptr,&temp_pos,NULL))) {
+ if (IsClose(DistanceSegs(zero,0.0,Da.crvSegs_da.cnt,&DYNARR_N(trkSeg_t,
+ Da.crvSegs_da,0),&temp_pos,NULL))) {
CreateCornuAnchor(temp_pos, TRUE);
- } else wSetCursor(mainD.d,defaultCursor);
+ } else { wSetCursor(mainD.d,defaultCursor); }
}
return C_CONTINUE;
case C_DOWN:
DYNARR_RESET(trkSeg_t,anchors_da);
- if (Da.state != PICK_POINT) return C_CONTINUE;
+ if (Da.state != PICK_POINT) { return C_CONTINUE; }
Da.selectEndPoint = -1;
Da.selectMidPoint = -1;
Da.selectEndHandle = -1;
@@ -1145,7 +1224,7 @@ EXPORT STATUS_T AdjustCornuCurve(
InfoSubstituteControls( NULL, NULL );
infoSubst = FALSE;
}
- for (int i=0;i<2;i++) {
+ for (int i=0; i<2; i++) {
d = FindDistance(Da.pos[i],pos);
if (IsClose(d)) {
Da.selectEndPoint = i;
@@ -1154,7 +1233,7 @@ EXPORT STATUS_T AdjustCornuCurve(
}
}
if (Da.selectEndPoint == -1) {
- for (int i=0;i<Da.mid_points.cnt;i++) {
+ for (int i=0; i<Da.mid_points.cnt; i++) {
d = FindDistance(DYNARR_N(coOrd,Da.mid_points,i),pos);
if (IsClose(d)) {
Da.selectMidPoint = i;
@@ -1164,8 +1243,8 @@ EXPORT STATUS_T AdjustCornuCurve(
}
}
if (Da.selectMidPoint == -1 ) {
- for (int i=0;i<2;i++) {
- if (Da.endHandle[i].end_valid == FALSE) continue;
+ for (int i=0; i<2; i++) {
+ if (Da.endHandle[i].end_valid == FALSE) { continue; }
d = FindDistance(Da.endHandle[i].end_center,pos);
if (IsClose(d)) {
Da.selectEndHandle = i*2;
@@ -1176,8 +1255,8 @@ EXPORT STATUS_T AdjustCornuCurve(
}
}
if (Da.selectEndHandle == -1) {
- for (int i=0;i<2;i++) {
- if (Da.endHandle[i].end_valid == FALSE) continue;
+ for (int i=0; i<2; i++) {
+ if (Da.endHandle[i].end_valid == FALSE) { continue; }
d = FindDistance(Da.endHandle[i].end_curve,pos);
if (IsClose(d)) {
Da.selectEndHandle = 1+i*2;
@@ -1190,26 +1269,32 @@ EXPORT STATUS_T AdjustCornuCurve(
}
}
} else { //We picked an end point
- if (!Da.trk[Da.selectEndPoint] && ((MyGetKeyState() & WKEY_SHIFT) != 0) && Da.selectTrack) { //With Shift no track -> Extend
+ if (!Da.trk[Da.selectEndPoint] && ((MyGetKeyState() & WKEY_SHIFT) != 0)
+ && Da.selectTrack) { //With Shift no track -> Extend
Da.extend[Da.selectEndPoint] = TRUE; //Adding to end Point
DYNARR_RESET(trkSeg_t,anchors_da);
- CreateCornuExtendAnchor(Da.pos[Da.selectEndPoint], Da.angle[Da.selectEndPoint], FALSE);
+ CreateCornuExtendAnchor(Da.pos[Da.selectEndPoint], Da.angle[Da.selectEndPoint],
+ FALSE);
}
}
- if (Da.selectMidPoint ==-1 && Da.selectEndPoint ==-1 && Da.selectEndHandle ==-1) {
+ if (Da.selectMidPoint ==-1 && Da.selectEndPoint ==-1
+ && Da.selectEndHandle ==-1) {
coOrd temp_pos = pos;
wIndex_t index;
- if (IsClose(DistanceSegs(zero,0.0,Da.crvSegs_da.cnt,(trkSeg_p)Da.crvSegs_da.ptr,&temp_pos,&index))) {
+ if (IsClose(DistanceSegs(zero,0.0,Da.crvSegs_da.cnt,&DYNARR_N(trkSeg_t,
+ Da.crvSegs_da,0),&temp_pos,&index))) {
//Add Point between two other points
//Find closest two points along Track
int closest = -1;
wIndex_t pIndex, nIndex;
temp_pos = Da.pos[0];
- DistanceSegs(zero,0.0,Da.crvSegs_da.cnt,(trkSeg_p)Da.crvSegs_da.ptr,&temp_pos,&pIndex);
+ DistanceSegs(zero,0.0,Da.crvSegs_da.cnt,&DYNARR_N(trkSeg_t,Da.crvSegs_da,0),
+ &temp_pos,&pIndex);
if (Da.mid_points.cnt>0) {
- for (int i=0;i<Da.mid_points.cnt;i++) {
- temp_pos = DYNARR_N(coOrd ,Da.mid_points,i);
- DistanceSegs(zero,0.0,Da.crvSegs_da.cnt,(trkSeg_p)Da.crvSegs_da.ptr,&temp_pos,&nIndex);
+ for (int i=0; i<Da.mid_points.cnt; i++) {
+ temp_pos = DYNARR_N(coOrd,Da.mid_points,i);
+ DistanceSegs(zero,0.0,Da.crvSegs_da.cnt,&DYNARR_N(trkSeg_t,Da.crvSegs_da,0),
+ &temp_pos,&nIndex);
if (((pIndex<=index) && (nIndex>=index))) {
closest = i;
break;
@@ -1217,14 +1302,16 @@ EXPORT STATUS_T AdjustCornuCurve(
pIndex = nIndex;
}
temp_pos = Da.pos[1];
- DistanceSegs(zero,0.0,Da.crvSegs_da.cnt,(trkSeg_p)Da.crvSegs_da.ptr,&temp_pos,&nIndex);
- if (index == nIndex) closest = Da.mid_points.cnt;
- if (closest == -1)
+ DistanceSegs(zero,0.0,Da.crvSegs_da.cnt,&DYNARR_N(trkSeg_t,Da.crvSegs_da,0),
+ &temp_pos,&nIndex);
+ if (index == nIndex) { closest = Da.mid_points.cnt; }
+ if (closest == -1) {
closest = Da.mid_points.cnt;
- } else closest = 0;
+ }
+ } else { closest = 0; }
DYNARR_APPEND(coOrd,Da.mid_points,1);
- for (int i=Da.mid_points.cnt-1;i>closest;i--) {
- DYNARR_N(coOrd,Da.mid_points,i) = DYNARR_N(coOrd ,Da.mid_points,i-1);
+ for (int i=Da.mid_points.cnt-1; i>closest; i--) {
+ DYNARR_N(coOrd,Da.mid_points,i) = DYNARR_N(coOrd,Da.mid_points,i-1);
}
DYNARR_N(coOrd,Da.mid_points,closest) = pos;
Da.selectMidPoint = closest;
@@ -1237,19 +1324,21 @@ EXPORT STATUS_T AdjustCornuCurve(
return C_CONTINUE;
}
}
- if (Da.selectEndPoint == -1 && Da.selectMidPoint == -1 && Da.selectEndHandle ==-1) {
+ if (Da.selectEndPoint == -1 && Da.selectMidPoint == -1
+ && Da.selectEndHandle ==-1) {
wBeep();
InfoMessage( _("Not close enough to track or point, reselect") );
return C_CONTINUE;
} else {
if (Da.selectEndPoint >=0 ) {
pos = Da.pos[Da.selectEndPoint];
- if (Da.extend[Da.selectEndPoint])
+ if (Da.extend[Da.selectEndPoint]) {
InfoMessage( _("Drag out end of Cornu"));
- else if (Da.trk[Da.selectEndPoint]) {
+ } else if (Da.trk[Da.selectEndPoint]) {
InfoMessage( _("Drag along end of track"));
- } else
+ } else {
InfoMessage( _("Drag to move"));
+ }
} else if (Da.selectMidPoint >=0 ) {
pos = DYNARR_N(coOrd,Da.mid_points,Da.selectMidPoint);
InfoMessage( _("Drag point to new location, Delete to remove"));
@@ -1264,17 +1353,19 @@ EXPORT STATUS_T AdjustCornuCurve(
}
Da.state = POINT_PICKED;
}
- CreateBothEnds(Da.selectEndPoint,Da.selectMidPoint,Da.selectEndHandle,Da.prevSelected);
+ CreateBothEnds(Da.selectEndPoint,Da.selectMidPoint,Da.selectEndHandle,
+ Da.prevSelected);
SetUpCornuParms(&cp);
- if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
- else Da.crvSegs_da_cnt = 0;
+ if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) { Da.crvSegs_da_cnt = Da.crvSegs_da.cnt; }
+ else { Da.crvSegs_da_cnt = 0; }
Da.minRadius = CornuMinRadius(Da.pos, Da.crvSegs_da);
return C_CONTINUE;
case C_MOVE:
DYNARR_RESET(trkSeg_t,anchors_da);
if (Da.state != POINT_PICKED) {
- InfoMessage(_("Pick any circle to adjust or add - Enter to accept, Esc to cancel"));
+ InfoMessage(
+ _("Pick any circle to adjust or add - Enter to accept, Esc to cancel"));
return C_CONTINUE;
}
if (Da.selectEndPoint >= 0) {
@@ -1291,16 +1382,16 @@ EXPORT STATUS_T AdjustCornuCurve(
if (Da.ep[sel]>=0) { //If not turntable
Da.pos[sel] = pos = GetTrkEndPos(Da.trk[sel],Da.ep[sel]);
} else {
- if (QueryTrack(Da.trk[sel],Q_CAN_ADD_ENDPOINTS)){ //Turntable
+ if (QueryTrack(Da.trk[sel],Q_CAN_ADD_ENDPOINTS)) { //Turntable
trackParams_t tp;
- if (!GetTrackParams(PARAMS_CORNU, Da.trk[sel], pos, &tp)) return C_CONTINUE;
+ if (!GetTrackParams(PARAMS_CORNU, Da.trk[sel], pos, &tp)) { return C_CONTINUE; }
ANGLE_T a = tp.angle;
Translate(&pos,tp.ttcenter,a,tp.ttradius);
Da.angle[sel] = NormalizeAngle(a+180);
SetUpCornuParms(&cp);
- if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
- else Da.crvSegs_da_cnt = 0;
- } else return C_CONTINUE;
+ if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) { Da.crvSegs_da_cnt = Da.crvSegs_da.cnt; }
+ else { Da.crvSegs_da_cnt = 0; }
+ } else { return C_CONTINUE; }
}
}
} else {
@@ -1308,16 +1399,19 @@ EXPORT STATUS_T AdjustCornuCurve(
}
if (!inside) {
if (Da.ep[sel]>=0) { //Track defined end point
- ANGLE_T diff = NormalizeAngle(GetTrkEndAngle(Da.trk[sel],Da.ep[sel])-FindAngle(GetTrkEndPos(Da.trk[sel],Da.ep[sel]),pos));
- if (diff>90.0 && diff<270.0) { //The point is not on track but outside cone of end angle+/-90
+ ANGLE_T diff = NormalizeAngle(GetTrkEndAngle(Da.trk[sel],
+ Da.ep[sel])-FindAngle(GetTrkEndPos(Da.trk[sel],Da.ep[sel]),pos));
+ if (diff>90.0
+ && diff<270.0) { //The point is not on track but outside cone of end angle+/-90
Da.pos[sel] = pos = GetTrkEndPos(Da.trk[sel],Da.ep[sel]);
- CreateBothEnds(Da.selectEndPoint,Da.selectMidPoint,Da.selectEndHandle,Da.prevSelected);
+ CreateBothEnds(Da.selectEndPoint,Da.selectMidPoint,Da.selectEndHandle,
+ Da.prevSelected);
return C_CONTINUE;
}
} else { //Not an end point
- if (QueryTrack(Da.trk[sel],Q_CAN_ADD_ENDPOINTS)){ //Turntable
+ if (QueryTrack(Da.trk[sel],Q_CAN_ADD_ENDPOINTS)) { //Turntable
trackParams_t tp;
- if (!GetTrackParams(PARAMS_CORNU, Da.trk[sel], pos, &tp)) return C_CONTINUE;
+ if (!GetTrackParams(PARAMS_CORNU, Da.trk[sel], pos, &tp)) { return C_CONTINUE; }
ANGLE_T a = tp.angle;
coOrd edge;
Translate(&edge,tp.ttcenter,a,tp.ttradius);
@@ -1326,25 +1420,30 @@ EXPORT STATUS_T AdjustCornuCurve(
Translate(&pos,edge,a,d);
Da.angle[sel] = NormalizeAngle(a+180);
Da.pos[sel] = pos;
- CreateBothEnds(Da.selectEndPoint,Da.selectMidPoint,Da.selectEndHandle,Da.prevSelected);
+ CreateBothEnds(Da.selectEndPoint,Da.selectMidPoint,Da.selectEndHandle,
+ Da.prevSelected);
Da.extendSeg[sel].type = SEG_STRTRK;
- Da.extendSeg[sel].width = 0;
+ Da.extendSeg[sel].lineWidth = 0;
Da.extendSeg[sel].color = wDrawColorBlack;
Da.extendSeg[sel].u.l.pos[1-sel] = pos;
Da.extendSeg[sel].u.l.pos[sel] = edge;
Da.extend[sel] = TRUE;
SetUpCornuParms(&cp);
- if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
- else Da.crvSegs_da_cnt = 0;
+ if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) { Da.crvSegs_da_cnt = Da.crvSegs_da.cnt; }
+ else { Da.crvSegs_da_cnt = 0; }
return C_CONTINUE; //Stop moving end point
- } else return C_CONTINUE;
+ } else { return C_CONTINUE; }
}
}
// Stop the user extending right through the other track
- if (Da.ep[sel]>=0 && QueryTrack(Da.trk[sel],Q_CORNU_CAN_MODIFY)) { //For non-turnouts
- if ((!QueryTrack(Da.trk[sel],Q_CAN_ADD_ENDPOINTS)) // Not Turntable - may not be needed
- && (!QueryTrack(Da.trk[sel],Q_HAS_VARIABLE_ENDPOINTS))) { // Not Helix or a Circle
- DIST_T ab = FindDistance(GetTrkEndPos(Da.trk[sel],Da.ep[sel]),GetTrkEndPos(Da.trk[sel],1-Da.ep[sel]));
+ if (Da.ep[sel]>=0
+ && QueryTrack(Da.trk[sel],Q_CORNU_CAN_MODIFY)) { //For non-turnouts
+ if ((!QueryTrack(Da.trk[sel],
+ Q_CAN_ADD_ENDPOINTS)) // Not Turntable - may not be needed
+ && (!QueryTrack(Da.trk[sel],
+ Q_HAS_VARIABLE_ENDPOINTS))) { // Not Helix or a Circle
+ DIST_T ab = FindDistance(GetTrkEndPos(Da.trk[sel],Da.ep[sel]),
+ GetTrkEndPos(Da.trk[sel],1-Da.ep[sel]));
DIST_T ac = FindDistance(GetTrkEndPos(Da.trk[sel],Da.ep[sel]),pos);
DIST_T cb = FindDistance(GetTrkEndPos(Da.trk[sel],1-Da.ep[sel]),pos);
if (cb<minLength) {
@@ -1355,34 +1454,38 @@ EXPORT STATUS_T AdjustCornuCurve(
pos = GetTrkEndPos(Da.trk[sel],1-Da.ep[sel]); //Make other end of track
}
}
- } else if (Da.ep[sel]>=0 && inside) { //Has a point and inside track
- InfoMessage(_("Can't move end inside a turnout")); //Turnouts are stuck to end-point
+ } else if (Da.ep[sel]>=0
+ && inside) { //Has a point and inside track
+ InfoMessage(
+ _("Can't move end inside a turnout")); //Turnouts are stuck to end-point
Da.pos[sel] = pos = GetTrkEndPos(Da.trk[sel],Da.ep[sel]);
- CreateBothEnds(Da.selectEndPoint,Da.selectMidPoint,Da.selectEndHandle,Da.prevSelected);
+ CreateBothEnds(Da.selectEndPoint,Da.selectMidPoint,Da.selectEndHandle,
+ Da.prevSelected);
return C_CONTINUE;
}
}
if(!Da.trk[sel]) { //Cornu with no end
- if (((MyGetKeyState() & WKEY_SHIFT) != 0) && Da.selectTrack) { //Extend end locked
+ if (((MyGetKeyState() & WKEY_SHIFT) != 0)
+ && Da.selectTrack) { //Extend end locked
SetUpCornuParms(&cp);
CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,FALSE);
if (Da.radius[sel] == 0) { //Straight
- Da.extendSeg[sel].type = SEG_STRTRK;
- Da.extendSeg[sel].width = 0;
- Da.extendSeg[sel].color = wDrawColorBlack;
- Da.extendSeg[sel].u.l.pos[1-sel] = Da.pos[sel];
- d = FindDistance( Da.extendSeg[sel].u.l.pos[1-sel], pos );
- a = NormalizeAngle(Da.angle[sel]-FindAngle(pos,Da.pos[sel]));
- if (cos(D2R(a))<=0) {
- Translate( &Da.extendSeg[sel].u.l.pos[sel],
- Da.extendSeg[sel].u.l.pos[1-sel],
- Da.angle[sel], - d * cos(D2R(a)));
- pos = Da.extendSeg[sel].u.l.pos[sel];
- Da.extend[sel] = TRUE;
- } else Da.extend[sel] = FALSE;
+ Da.extendSeg[sel].type = SEG_STRTRK;
+ Da.extendSeg[sel].lineWidth = 0;
+ Da.extendSeg[sel].color = wDrawColorBlack;
+ Da.extendSeg[sel].u.l.pos[1-sel] = Da.pos[sel];
+ d = FindDistance( Da.extendSeg[sel].u.l.pos[1-sel], pos );
+ a = NormalizeAngle(Da.angle[sel]-FindAngle(pos,Da.pos[sel]));
+ if (cos(D2R(a))<=0) {
+ Translate( &Da.extendSeg[sel].u.l.pos[sel],
+ Da.extendSeg[sel].u.l.pos[1-sel],
+ Da.angle[sel], - d * cos(D2R(a)));
+ pos = Da.extendSeg[sel].u.l.pos[sel];
+ Da.extend[sel] = TRUE;
+ } else { Da.extend[sel] = FALSE; }
} else { //Curve
Da.extendSeg[sel].type = SEG_CRVTRK;
- Da.extendSeg[sel].width = 0;
+ Da.extendSeg[sel].lineWidth = 0;
Da.extendSeg[sel].color = wDrawColorBlack;
Da.extendSeg[sel].u.c.center = Da.center[sel];
Da.extendSeg[sel].u.c.radius = Da.radius[sel];
@@ -1390,17 +1493,18 @@ EXPORT STATUS_T AdjustCornuCurve(
PointOnCircle( &pos, Da.extendSeg[sel].u.c.center, Da.radius[sel], a );
a2 = FindAngle(Da.extendSeg[sel].u.c.center,Da.pos[sel]);
if (((Da.angle[sel] < 180) && (a2>90 && a2<270)) ||
- ((Da.angle[sel] > 180) && (a2<90 || a2>270))) {
+ ((Da.angle[sel] > 180) && (a2<90 || a2>270))) {
Da.extendSeg[sel].u.c.a0 = a;
Da.extendSeg[sel].u.c.a1 = NormalizeAngle(a2-a);
} else {
Da.extendSeg[sel].u.c.a0 = a2;
Da.extendSeg[sel].u.c.a1 = NormalizeAngle(a-a2);
}
- if (Da.extendSeg[sel].u.c.a1 == 0 || Da.extendSeg[sel].u.c.a1 >180 )
+ if (Da.extendSeg[sel].u.c.a1 == 0 || Da.extendSeg[sel].u.c.a1 >180 ) {
Da.extend[sel] = FALSE;
- else
+ } else {
Da.extend[sel] = TRUE;
+ }
}
} else {
Da.extend[sel] = FALSE;
@@ -1413,7 +1517,8 @@ EXPORT STATUS_T AdjustCornuCurve(
Da.center[sel].y += offset.y;
}
if (Da.selectTrack) { //We have track
- if (!Da.trk[sel] && ((t = OnTrackIgnore(&pos,FALSE,TRUE,Da.selectTrack))!= NULL) ) {
+ if (!Da.trk[sel]
+ && ((t = OnTrackIgnore(&pos,FALSE,TRUE,Da.selectTrack))!= NULL) ) {
if ((ep = PickUnconnectedEndPointSilent(pos,t))>=0) {
pos = GetTrkEndPos(t,ep);
if (IsClose(FindDistance(pos,pos)/2)) {
@@ -1435,7 +1540,7 @@ EXPORT STATUS_T AdjustCornuCurve(
}
}
} else { //Cornu with ends
- if (inside) Da.pos[sel] = pos;
+ if (inside) { Da.pos[sel] = pos; }
if (!GetConnectedTrackParms(Da.trk[sel],pos,sel,Da.ep[sel],inside?FALSE:TRUE)) {
wBeep();
return C_CONTINUE; //Stop drawing
@@ -1444,32 +1549,34 @@ EXPORT STATUS_T AdjustCornuCurve(
if (!inside) { //Extend the track
if (Da.trackType[sel] == curveTypeStraight) { //Extend with a straight
Da.extendSeg[sel].type = SEG_STRTRK;
- Da.extendSeg[sel].width = 0;
+ Da.extendSeg[sel].lineWidth = 0;
Da.extendSeg[sel].color = wDrawColorBlack;
if (Da.ep[sel]>=0) {
Da.extendSeg[sel].u.l.pos[0] = GetTrkEndPos( Da.trk[sel], Da.ep[sel] );
- a = NormalizeAngle(Da.angle[sel]-FindAngle(pos,GetTrkEndPos(Da.trk[sel],Da.ep[sel])));
+ a = NormalizeAngle(Da.angle[sel]-FindAngle(pos,GetTrkEndPos(Da.trk[sel],
+ Da.ep[sel])));
} else { //Turntable when unconnected
Da.extendSeg[sel].u.l.pos[0] = Da.pos[sel];
a = NormalizeAngle(Da.angle[sel]-FindAngle(pos,Da.pos[sel]));
}
// Remove any extend in opposite direction for Turntable/Turnouts
if ((QueryTrack(Da.trk[sel],Q_CAN_ADD_ENDPOINTS) && Da.ep[sel]>=0)
- && (!QueryTrack(Da.trk[sel],Q_CORNU_CAN_MODIFY))
- && (a>90 && a<270)) {
- Da.extend[sel] = FALSE; //Turntable with point and extension is other side of well
+ && (!QueryTrack(Da.trk[sel],Q_CORNU_CAN_MODIFY))
+ && (a>90 && a<270)) {
+ Da.extend[sel] =
+ FALSE; //Turntable with point and extension is other side of well
Da.pos[sel] = GetTrkEndPos(Da.trk[sel],Da.ep[sel]);
} else {
Da.extend[sel] = TRUE;
d = FindDistance( Da.extendSeg[sel].u.l.pos[0], pos );
Translate( &Da.extendSeg[sel].u.l.pos[1],
- Da.extendSeg[sel].u.l.pos[0],
- Da.angle[sel], -d * cos(D2R(a)));
+ Da.extendSeg[sel].u.l.pos[0],
+ Da.angle[sel], -d * cos(D2R(a)));
Da.pos[sel] = pos = Da.extendSeg[sel].u.l.pos[1];
}
} else if (Da.trackType[sel] == curveTypeCurve) { //Extend with temp curve
Da.extendSeg[sel].type = SEG_CRVTRK;
- Da.extendSeg[sel].width = 0;
+ Da.extendSeg[sel].lineWidth = 0;
Da.extendSeg[sel].color = wDrawColorBlack;
Da.extendSeg[sel].u.c.center = Da.center[sel];
Da.extendSeg[sel].u.c.radius = Da.radius[sel];
@@ -1477,7 +1584,7 @@ EXPORT STATUS_T AdjustCornuCurve(
PointOnCircle( &pos, Da.center[sel], Da.radius[sel], a );
a2 = FindAngle(Da.center[sel],GetTrkEndPos(Da.trk[sel],Da.ep[sel]));
if ((Da.angle[sel] < 180 && (a2>90 && a2 <270)) ||
- (Da.angle[sel] > 180 && (a2<90 || a2 >270))) {
+ (Da.angle[sel] > 180 && (a2<90 || a2 >270))) {
Da.extendSeg[sel].u.c.a0 = a2;
Da.extendSeg[sel].u.c.a1 = NormalizeAngle(a-a2);
} else {
@@ -1485,9 +1592,11 @@ EXPORT STATUS_T AdjustCornuCurve(
Da.extendSeg[sel].u.c.a1 = NormalizeAngle(a2-a);
}
if (Da.extendSeg[sel].u.c.a1 == 0.0 || Da.extendSeg[sel].u.c.a1 >180
- || (Da.extendSeg[sel].u.c.a0 >= Da.arcA0[sel] && Da.extendSeg[sel].u.c.a0 < Da.arcA0[sel]+Da.arcA1[sel]
- && Da.extendSeg[sel].u.c.a0 + Da.extendSeg[sel].u.c.a1 <= Da.arcA0[sel] + Da.arcA1[sel])
- ) {
+ || (Da.extendSeg[sel].u.c.a0 >= Da.arcA0[sel]
+ && Da.extendSeg[sel].u.c.a0 < Da.arcA0[sel]+Da.arcA1[sel]
+ && Da.extendSeg[sel].u.c.a0 + Da.extendSeg[sel].u.c.a1 <= Da.arcA0[sel] +
+ Da.arcA1[sel])
+ ) {
Da.extend[sel] = FALSE;
Da.pos[sel] = pos;
} else {
@@ -1501,9 +1610,9 @@ EXPORT STATUS_T AdjustCornuCurve(
pos = GetTrkEndPos(Da.trk[sel],Da.ep[sel]);
return C_CONTINUE;
}
- } else Da.pos[sel] = pos;
+ } else { Da.pos[sel] = pos; }
}
- } else if (Da.selectMidPoint >=0){
+ } else if (Da.selectMidPoint >=0) {
DYNARR_N(coOrd,Da.mid_points,Da.selectMidPoint) = pos;
} else if (Da.selectEndHandle >=0) { //Cornu has no end, so has handles
int end = Da.selectEndHandle/2;
@@ -1511,7 +1620,8 @@ EXPORT STATUS_T AdjustCornuCurve(
coOrd p0 = Da.pos[end]; //Start
coOrd p1 = Da.endHandle[end].end_curve; //End
ANGLE_T a0 = FindAngle( p1, p0 );
- DIST_T d0 = FindDistance( p0, p1 )/2.0; //Distance to Middle of Chord
+ DIST_T d0 = FindDistance( p0,
+ p1 )/2.0; //Distance to Middle of Chord
coOrd pos2 = pos; //New pos
Rotate( &pos2, p1, -a0 );
pos2.x -= p1.x; //Deflection at right angles to Chord
@@ -1543,37 +1653,46 @@ EXPORT STATUS_T AdjustCornuCurve(
Da.radius[end] = 0.0;
Da.angle[end] = FindAngle(Da.pos[end],Da.endHandle[end].end_curve);
} else {
- Translate( &pc, posx, a0, fabs(r) - fabs(pos2.x) ); //Move Radius less Deflection to get to center
+ Translate( &pc, posx, a0,
+ fabs(r) - fabs(pos2.x) ); //Move Radius less Deflection to get to center
Da.center[end] = pc;
- if (DifferenceBetweenAngles(FindAngle(Da.center[end],Da.pos[end]),FindAngle(Da.center[end],Da.endHandle[end].end_curve))>0.0)
+ if (DifferenceBetweenAngles(FindAngle(Da.center[end],Da.pos[end]),
+ FindAngle(Da.center[end],Da.endHandle[end].end_curve))>0.0) {
Da.angle[end] = NormalizeAngle(FindAngle(Da.center[end],Da.pos[end])+90.0);
- else
+ } else {
Da.angle[end] = NormalizeAngle(FindAngle(Da.center[end],Da.pos[end])-90.0);
+ }
Da.radius[end] = fabs(r);
}
} else {
Da.angle[end] = FindAngle(Da.pos[end],pos);
Da.radius[end] = 0.0;
- Translate(&Da.center[end],Da.pos[end],NormalizeAngle(Da.angle[end]+90.0),Da.radius[end]);
+ Translate(&Da.center[end],Da.pos[end],NormalizeAngle(Da.angle[end]+90.0),
+ Da.radius[end]);
}
}
- CreateBothEnds(Da.selectEndPoint,Da.selectMidPoint,Da.selectEndHandle,Da.prevSelected);
- SetUpCornuParms(&cp); //In case we want to use these because the ends are not on the track
- if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
- else Da.crvSegs_da_cnt = 0;
- for (int i=0;i<2;i++) {
- if (Da.trk[i] || Da.ends[i]) continue;
+ CreateBothEnds(Da.selectEndPoint,Da.selectMidPoint,Da.selectEndHandle,
+ Da.prevSelected);
+ SetUpCornuParms(
+ &cp); //In case we want to use these because the ends are not on the track
+ if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) { Da.crvSegs_da_cnt = Da.crvSegs_da.cnt; }
+ else { Da.crvSegs_da_cnt = 0; }
+ for (int i=0; i<2; i++) {
+ if (Da.trk[i] || Da.ends[i]) { continue; }
coOrd p = Da.pos[i];
- Da.angle[i] = NormalizeAngle((i?0:180)+GetAngleSegs( Da.crvSegs_da_cnt, Da.crvSegs_da.ptr, &p, NULL, NULL, NULL, NULL, NULL));
+ Da.angle[i] = NormalizeAngle((i?0:180)+GetAngleSegs( Da.crvSegs_da_cnt,
+ &DYNARR_N(trkSeg_t,Da.crvSegs_da,0), &p, NULL, NULL, NULL, NULL, NULL));
Da.radius[i] = 0.0;
}
Da.minRadius = CornuMinRadius(Da.pos,Da.crvSegs_da);
DIST_T rin = Da.radius[0];
- InfoMessage( _("Cornu : Min Radius=%s MaxRateofCurveChange/Scale=%s Length=%s Winding Arc=%s"),
- FormatDistance(Da.minRadius),
- FormatFloat(CornuMaxRateofChangeofCurvature(Da.pos,Da.crvSegs_da,&rin)*GetScaleRatio(GetLayoutCurScale())),
- FormatDistance(CornuLength(Da.pos,Da.crvSegs_da)),
- FormatDistance(CornuTotalWindingArc(Da.pos,Da.crvSegs_da)));
+ InfoMessage(
+ _("Cornu : Min Radius=%s MaxRateofCurveChange/Scale=%s Length=%s Winding Arc=%s"),
+ FormatDistance(Da.minRadius),
+ FormatFloat(CornuMaxRateofChangeofCurvature(Da.pos,Da.crvSegs_da,
+ &rin)*GetScaleRatio(GetLayoutCurScale())),
+ FormatDistance(CornuLength(Da.pos,Da.crvSegs_da)),
+ FormatDistance(CornuTotalWindingArc(Da.pos,Da.crvSegs_da)));
return C_CONTINUE;
case C_UP:
@@ -1583,27 +1702,30 @@ EXPORT STATUS_T AdjustCornuCurve(
return C_CONTINUE;
}
ep = 0;
- if (Da.selectMidPoint!=-1) Da.prevSelected = Da.selectMidPoint;
+ if (Da.selectMidPoint!=-1) { Da.prevSelected = Da.selectMidPoint; }
else if (Da.selectEndPoint!=-1) {
if (!Da.trk[Da.selectEndPoint] &&
- (t=OnTrack(&pos,FALSE,TRUE)) != NULL && t != Da.selectTrack ) {
+ (t=OnTrack(&pos,FALSE,TRUE)) != NULL && t != Da.selectTrack ) {
EPINX_T ep = PickUnconnectedEndPoint(pos,t);
if (ep>=0) {
- if (QueryTrack(t,Q_HAS_VARIABLE_ENDPOINTS)) { //Circle/Helix find if there is an open slot and where
- if ((GetTrkEndTrk(t,0) != NULL) && (GetTrkEndTrk(t,1) != NULL)) {
- InfoMessage(_("Helix Already Connected"));
- return C_CONTINUE;
- }
- ep = -1; //Not a real ep yet
- } else ep = PickUnconnectedEndPointSilent(pos, t); //EP
+ if (QueryTrack(t,
+ Q_HAS_VARIABLE_ENDPOINTS)) { //Circle/Helix find if there is an open slot and where
+ if ((GetTrkEndTrk(t,0) != NULL) && (GetTrkEndTrk(t,1) != NULL)) {
+ InfoMessage(_("Helix Already Connected"));
+ return C_CONTINUE;
+ }
+ ep = -1; //Not a real ep yet
+ } else { ep = PickUnconnectedEndPointSilent(pos, t); } //EP
if (ep>=0 && QueryTrack(t,Q_CAN_ADD_ENDPOINTS)) {
ep=-1; //Don't attach to Turntable
trackParams_t tp;
- if (!GetTrackParams(PARAMS_CORNU, t, pos, &tp)) return C_CONTINUE;
+ if (!GetTrackParams(PARAMS_CORNU, t, pos, &tp)) { return C_CONTINUE; }
ANGLE_T a = tp.angle;
Translate(&pos,tp.ttcenter,a,tp.ttradius);
}
- if ( ep==-1 && (!QueryTrack(t,Q_CAN_ADD_ENDPOINTS) && !QueryTrack(t,Q_HAS_VARIABLE_ENDPOINTS))) { //No endpoints and not Turntable or Helix/Circle
+ if ( ep==-1 && (!QueryTrack(t,Q_CAN_ADD_ENDPOINTS)
+ && !QueryTrack(t,
+ Q_HAS_VARIABLE_ENDPOINTS))) { //No endpoints and not Turntable or Helix/Circle
wBeep();
InfoMessage(_("No Valid end point on that track"));
return C_CONTINUE;
@@ -1619,13 +1741,15 @@ EXPORT STATUS_T AdjustCornuCurve(
Da.ep[Da.selectEndPoint] = ep; // Note: -1 for Turntable or Circle
pos = GetTrkEndPos(t,ep);
Da.pos[Da.selectEndPoint] = pos;
- if (!GetConnectedTrackParms(t,pos,Da.selectEndPoint,ep,FALSE)) return C_CONTINUE;
+ if (!GetConnectedTrackParms(t,pos,Da.selectEndPoint,ep,FALSE)) { return C_CONTINUE; }
}
} else {
cornuModCmdContext.angle = NormalizeAngle(Da.angle[Da.selectEndPoint]);
cornuModCmdContext.radius = Da.radius[Da.selectEndPoint];
- if (DifferenceBetweenAngles(FindAngle(Da.center[Da.selectEndPoint],Da.pos[Da.selectEndPoint]),Da.angle[Da.selectEndPoint])<0.0)
+ if (DifferenceBetweenAngles(FindAngle(Da.center[Da.selectEndPoint],
+ Da.pos[Da.selectEndPoint]),Da.angle[Da.selectEndPoint])<0.0) {
cornuModCmdContext.radius = -cornuModCmdContext.radius;
+ }
controls[0] = cornuModEndRadiusPD.control;
controls[1] = cornuModEndAnglePD.control;
controls[2] = NULL;
@@ -1643,8 +1767,10 @@ EXPORT STATUS_T AdjustCornuCurve(
Da.prevSelected = Da.selectEndHandle>2?1:0;
cornuModCmdContext.angle = NormalizeAngle(Da.angle[Da.prevSelected]);
cornuModCmdContext.radius = Da.radius[Da.prevSelected];
- if (DifferenceBetweenAngles(FindAngle(Da.center[Da.prevSelected],Da.pos[Da.prevSelected]),Da.angle[Da.prevSelected])<0.0)
+ if (DifferenceBetweenAngles(FindAngle(Da.center[Da.prevSelected],
+ Da.pos[Da.prevSelected]),Da.angle[Da.prevSelected])<0.0) {
cornuModCmdContext.radius = -cornuModCmdContext.radius;
+ }
controls[0] = cornuModEndRadiusPD.control;
controls[1] = cornuModEndAnglePD.control;
controls[2] = NULL;
@@ -1658,12 +1784,14 @@ EXPORT STATUS_T AdjustCornuCurve(
Da.selectEndHandle = -1;
}
Da.selectEndPoint = -1; Da.selectMidPoint = -1;
- CreateBothEnds(Da.selectEndPoint,Da.selectMidPoint,Da.selectEndHandle,Da.prevSelected);
+ CreateBothEnds(Da.selectEndPoint,Da.selectMidPoint,Da.selectEndHandle,
+ Da.prevSelected);
SetUpCornuParms(&cp);
- if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
- else Da.crvSegs_da_cnt = 0;
+ if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) { Da.crvSegs_da_cnt = Da.crvSegs_da.cnt; }
+ else { Da.crvSegs_da_cnt = 0; }
Da.minRadius = CornuMinRadius(Da.pos,Da.crvSegs_da);
- InfoMessage(_("Pick on point to adjust it along track - Delete to remove, Enter to confirm, ESC to abort"));
+ InfoMessage(
+ _("Pick on point to adjust it along track - Delete to remove, Enter to confirm, ESC to abort"));
Da.state = PICK_POINT;
return C_CONTINUE;
@@ -1672,17 +1800,18 @@ EXPORT STATUS_T AdjustCornuCurve(
//Delete or backspace deletes last selected index
if (action>>8 == 127 || action>>8 == 8) {
if ((Da.state == PICK_POINT) && Da.prevSelected !=-1) {
- for (int i=Da.prevSelected;i<Da.mid_points.cnt;i++) {
+ for (int i=Da.prevSelected; i<Da.mid_points.cnt; i++) {
DYNARR_N(coOrd,Da.mid_points,i) = DYNARR_N(coOrd,Da.mid_points,i+1);
}
Da.mid_points.cnt--;
}
Da.prevSelected = -1;
- CreateBothEnds(Da.selectEndPoint,Da.selectMidPoint,Da.selectEndHandle,Da.prevSelected);
+ CreateBothEnds(Da.selectEndPoint,Da.selectMidPoint,Da.selectEndHandle,
+ Da.prevSelected);
cornuParm_t cp;
SetUpCornuParms(&cp);
- if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
- else Da.crvSegs_da_cnt = 0;
+ if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) { Da.crvSegs_da_cnt = Da.crvSegs_da.cnt; }
+ else { Da.crvSegs_da_cnt = 0; }
return C_CONTINUE;
}
return C_CONTINUE;
@@ -1700,12 +1829,15 @@ EXPORT STATUS_T AdjustCornuCurve(
wBeep();
return C_CONTINUE;
}
- for (int i=0;i<2;i++) {
- if (Da.trk[i] && !(QueryTrack(Da.trk[i],Q_CAN_ADD_ENDPOINTS))) { // Not Turntable
+ for (int i=0; i<2; i++) {
+ if (Da.trk[i]
+ && !(QueryTrack(Da.trk[i],Q_CAN_ADD_ENDPOINTS))) { // Not Turntable
if (FindDistance(Da.pos[i],GetTrkEndPos(Da.trk[i],1-Da.ep[i])) < minLength) {
- wBeep();
- InfoMessage(_("Cornu point %d too close to other end of connect track - reposition it"),i+1);
- return C_CONTINUE;
+ wBeep();
+ InfoMessage(
+ _("Cornu point %d too close to other end of connect track - reposition it"),
+ i+1);
+ return C_CONTINUE;
}
}
}
@@ -1715,12 +1847,12 @@ EXPORT STATUS_T AdjustCornuCurve(
end_point[1] = FALSE;
coOrd sub_pos[2];
sub_pos[0] = Da.pos[0];
- if (Da.radius[0] == -1) end_point[0] = FALSE;
+ if (Da.radius[0] == -1) { end_point[0] = FALSE; }
track_p first_trk= NULL,trk1=NULL,trk2 = NULL;
- for (int i=0;i<Da.mid_points.cnt;i++) {
+ for (int i=0; i<Da.mid_points.cnt; i++) {
sub_pos[1] = DYNARR_N(coOrd,Da.mid_points,i);
- if ((trk1 = CreateCornuFromPoints(sub_pos,end_point))== NULL) return C_TERMINATE;
+ if ((trk1 = CreateCornuFromPoints(sub_pos,end_point))== NULL) { return C_TERMINATE; }
if (Da.trk[0]) {
CopyAttributes( Da.trk[0], trk1 );
} else if (Da.trk[1]) {
@@ -1730,38 +1862,41 @@ EXPORT STATUS_T AdjustCornuCurve(
SetTrkBits( trk1, TB_HIDEDESC );
}
DrawNewTrack(trk1);
- if (first_trk == NULL) first_trk = trk1;
- if (trk2) ConnectTracks(trk1,0,trk2,1);
+ if (first_trk == NULL) { first_trk = trk1; }
+ if (trk2) { ConnectTracks(trk1,0,trk2,1); }
trk2 = trk1;
end_point[0] = FALSE;
sub_pos[0] = DYNARR_N(coOrd,Da.mid_points,i);
}
sub_pos[1] = Da.pos[1];
end_point[1] = TRUE;
- if (Da.radius[1] == -1) end_point[1] = FALSE;
- if ((trk1 = CreateCornuFromPoints(sub_pos,end_point)) == NULL) return C_TERMINATE;
+ if (Da.radius[1] == -1) { end_point[1] = FALSE; }
+ if ((trk1 = CreateCornuFromPoints(sub_pos,end_point)) == NULL) { return C_TERMINATE; }
if (Da.trk[0]) {
CopyAttributes( Da.trk[0], trk1 );
- } else if (Da.trk[1]){
+ } else if (Da.trk[1]) {
CopyAttributes( Da.trk[1], trk1 );
} else {
SetTrkScale( trk1, GetLayoutCurScale() );
SetTrkBits( trk1, TB_HIDEDESC );
}
- if (trk2) ConnectTracks(trk1,0,trk2,1);
- if (first_trk == NULL) first_trk = trk1;
- //t = NewCornuTrack( Da.pos, Da.center, Da.angle, Da.radius,(trkSeg_p)Da.crvSegs_da.ptr, Da.crvSegs_da.cnt);
+ if (trk2) { ConnectTracks(trk1,0,trk2,1); }
+ if (first_trk == NULL) { first_trk = trk1; }
+ //t = NewCornuTrack( Da.pos, Da.center, Da.angle, Da.radius,&DYNARR(trkSeg_t,Da.crvSegs_da,0), Da.crvSegs_da.cnt);
- for (int i=0;i<2;i++) {
+ for (int i=0; i<2; i++) {
if (Da.trk[i]) {
UndoModify(Da.trk[i]);
MoveEndPt(&Da.trk[i],&Da.ep[i],Da.pos[i],0);
- //End position not precise, so readjust Cornu
- GetConnectedTrackParms(Da.trk[i],GetTrkEndPos(Da.trk[i],Da.ep[i]),i,Da.ep[i],FALSE);
+ //End position not precise, so readjust Cornu
+ GetConnectedTrackParms(Da.trk[i],GetTrkEndPos(Da.trk[i],Da.ep[i]),i,Da.ep[i],
+ FALSE);
ANGLE_T endAngle = NormalizeAngle(GetTrkEndAngle(Da.trk[i],Da.ep[i])+180);
- SetCornuEndPt(i==0?first_trk:trk1,i,GetTrkEndPos(Da.trk[i],Da.ep[i]),Da.center[i],endAngle,Da.radius[i]);
- if (Da.ep[i]>=0)
+ SetCornuEndPt(i==0?first_trk:trk1,i,GetTrkEndPos(Da.trk[i],Da.ep[i]),
+ Da.center[i],endAngle,Da.radius[i]);
+ if (Da.ep[i]>=0) {
ConnectTracks(Da.trk[i],Da.ep[i],i==0?first_trk:trk1,i);
+ }
}
}
UndoEnd();
@@ -1775,12 +1910,11 @@ EXPORT STATUS_T AdjustCornuCurve(
return C_CONTINUE;
case C_REDRAW:
- if (Da.state == NONE) return C_CONTINUE;
+ if (Da.state == NONE) { return C_CONTINUE; }
DrawTempCornu();
- if (anchors_da.cnt) {
- DrawSegs( &tempD, zero, 0.0, &anchors(0), anchors_da.cnt, trackGauge, wDrawColorBlack );
- }
- if (Da.state == POINT_PICKED) wSetCursor(mainD.d,wCursorNone);
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack,
+ 0 );
+ if (Da.state == POINT_PICKED) { wSetCursor(mainD.d,wCursorNone); }
return C_CONTINUE;
case C_CANCEL:
case C_FINISH:
@@ -1795,14 +1929,14 @@ EXPORT STATUS_T AdjustCornuCurve(
}
static void cornuModDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
- AdjustCornuCurve(C_UPDATE, zero, InfoMessage);
- ParamLoadControl(&cornuModPG,cornuModEndRadius); // Make sure Radius updated
- ParamLoadControl(&cornuModPG,cornuModEndAngle); //Relative Angle as well
- TempRedraw();
+ AdjustCornuCurve(C_UPDATE, zero, InfoMessage);
+ ParamLoadControl(&cornuModPG,cornuModEndRadius); // Make sure Radius updated
+ ParamLoadControl(&cornuModPG,cornuModEndAngle); //Relative Angle as well
+ TempRedraw();
}
@@ -1820,7 +1954,9 @@ static void cornuModDlgUpdate(
* - C_CANCEL (Esc) sets the state to NONE and reshows the original track unchanged.
*
*/
-STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG ) {
+STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos,
+ DIST_T trackG )
+{
Da.trackGauge = trackG;
@@ -1833,9 +1969,9 @@ STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG
Da.ep1Segs_da_cnt = 0;
Da.ep2Segs_da_cnt = 0;
Da.crvSegs_da_cnt = 0;
- Da.midSegs.cnt = 0;
+ DYNARR_RESET( trkSeg_t*, Da.midSegs );
Da.extend[0] = FALSE;
- Da.extend[1] = FALSE;
+ Da.extend[1] = FALSE;
Da.selectEndPoint = -1;
Da.selectTrack = NULL;
DYNARR_RESET(coOrd,Da.mid_points);
@@ -1845,9 +1981,9 @@ STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG
Da.selectTrack = trk;
DYNARR_APPEND(track_p,Da.tracks,1);
DYNARR_LAST(track_p,Da.tracks) = trk;
- Da.trk[0] = GetTrkEndTrk( trk, 0 );
- track_p prior = trk;
- if (Da.trk[0]) Da.ep[0] = GetEndPtConnectedToMe(Da.trk[0],trk);
+ Da.trk[0] = GetTrkEndTrk( trk, 0 );
+ track_p prior = trk;
+ if (Da.trk[0]) { Da.ep[0] = GetEndPtConnectedToMe(Da.trk[0],trk); }
EPINX_T ep0 = 0;
//Move down the LHS adding tracks until no more Cornu
while (Da.trk[0] && QueryTrack(Da.trk[0],Q_IS_CORNU)) {
@@ -1856,13 +1992,13 @@ STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG
DYNARR_APPEND(track_p,Da.tracks,1);
DYNARR_LAST(track_p,Da.tracks) = prior;
DYNARR_APPEND(coOrd,Da.mid_points,1);
- for (int i=Da.mid_points.cnt-1;i>0;i--) {
+ for (int i=Da.mid_points.cnt-1; i>0; i--) {
DYNARR_N(coOrd,Da.mid_points,i) = DYNARR_N(coOrd,Da.mid_points,i-1);
}
DYNARR_N(coOrd,Da.mid_points,0) = GetTrkEndPos(prior,1-ep0);
Da.trk[0] = GetTrkEndTrk( prior, ep0 );
- if (Da.trk[0]) Da.ep[0] = GetEndPtConnectedToMe(Da.trk[0],prior);
- else Da.ep[0] = -1;
+ if (Da.trk[0]) { Da.ep[0] = GetEndPtConnectedToMe(Da.trk[0],prior); }
+ else { Da.ep[0] = -1; }
}
if (prior) {
struct extraDataCornu_t *xx0 = GET_EXTRA_DATA(prior, T_CORNU, extraDataCornu_t);
@@ -1877,7 +2013,7 @@ STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG
Da.trk[1] = GetTrkEndTrk( trk, 1 );
track_p next = trk;
EPINX_T ep1 = 1;
- if (Da.trk[1]) Da.ep[1] = GetEndPtConnectedToMe(Da.trk[1],trk);
+ if (Da.trk[1]) { Da.ep[1] = GetEndPtConnectedToMe(Da.trk[1],trk); }
//Move down RHS adding tracks until no more Cornu
while (Da.trk[1] && QueryTrack(Da.trk[1],Q_IS_CORNU)) {
next = Da.trk[1];
@@ -1887,7 +2023,7 @@ STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG
DYNARR_APPEND(coOrd,Da.mid_points,1);
DYNARR_LAST(coOrd,Da.mid_points) = GetTrkEndPos(next,1-ep1);
Da.trk[1] = GetTrkEndTrk( next, ep1 );
- if (Da.trk[1]) Da.ep[1] = GetEndPtConnectedToMe(Da.trk[1],next);
+ if (Da.trk[1]) { Da.ep[1] = GetEndPtConnectedToMe(Da.trk[1],next); }
}
if (next) {
@@ -1900,8 +2036,9 @@ STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG
InfoMessage(_("Now Select or Add (+Shift) a Point"));
Da.state = TRACK_SELECTED;
- for (int i=0;i<Da.tracks.cnt;i++) {
- DrawTrack(DYNARR_N(track_p,Da.tracks,i),&mainD,wDrawColorWhite); //Wipe out real tracks, draw replacement
+ for (int i=0; i<Da.tracks.cnt; i++) {
+ DrawTrack(DYNARR_N(track_p,Da.tracks,i),&mainD,
+ wDrawColorWhite); //Wipe out real tracks, draw replacement
}
return AdjustCornuCurve(C_START, pos, InfoMessage);
@@ -1910,21 +2047,22 @@ STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG
break;
case C_DOWN:
- if (Da.state == TRACK_SELECTED) return C_CONTINUE; //Ignore until first up
+ if (Da.state == TRACK_SELECTED) { return C_CONTINUE; } //Ignore until first up
return AdjustCornuCurve(C_DOWN, pos, InfoMessage);
case C_LCLICK:
- if (Da.state == TRACK_SELECTED) return C_CONTINUE; //Ignore until first up
+ if (Da.state == TRACK_SELECTED) { return C_CONTINUE; } //Ignore until first up
AdjustCornuCurve(C_DOWN, pos, InfoMessage);
return AdjustCornuCurve(C_UP, pos, InfoMessage);
case C_MOVE:
- if (Da.state == TRACK_SELECTED) return C_CONTINUE; //Ignore until first up and down
+ if (Da.state == TRACK_SELECTED) { return C_CONTINUE; } //Ignore until first up and down
return AdjustCornuCurve(C_MOVE, pos, InfoMessage);
case C_UP:
if (Da.state == TRACK_SELECTED) {
- Da.state = PICK_POINT; //First time up, next time pick a point
+ Da.state =
+ PICK_POINT; //First time up, next time pick a point
}
return AdjustCornuCurve(C_UP, pos, InfoMessage); //Run Adjust
@@ -1934,9 +2072,10 @@ STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG
return AdjustCornuCurve(action, pos, InfoMessage);
}
//Space bar or enter means done
- if ( (action>>8 != ' ') && (action>>8 != 13) )
+ if ( (action>>8 != ' ') && (action>>8 != 13) ) {
return C_CONTINUE;
- /* no break */
+ }
+ /* no break */
case C_OK:
if (infoSubst) {
InfoSubstituteControls( NULL, NULL );
@@ -1952,28 +2091,31 @@ STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG
wBeep();
return C_CONTINUE;
}
- for (int i=0;i<2;i++) {
+ for (int i=0; i<2; i++) {
if (Da.trk[i] &&
- !(QueryTrack(Da.trk[i],Q_CAN_ADD_ENDPOINTS))) { // Not Turntable
+ !(QueryTrack(Da.trk[i],Q_CAN_ADD_ENDPOINTS))) { // Not Turntable
if (FindDistance(Da.pos[i],GetTrkEndPos(Da.trk[i],1-Da.ep[i])) < minLength) {
wBeep();
- InfoMessage(_("Cornu end %d too close to other end of connect track - reposition it"),i+1);
+ InfoMessage(
+ _("Cornu end %d too close to other end of connect track - reposition it"),i+1);
return C_CONTINUE;
}
}
}
UndoStart( _("Modify Cornu"), "newCornu - CR" );
- for (int i=0;i<2;i++) {
+ for (int i=0; i<2; i++) {
if (!Da.trk[i] && Da.extend[i]) {
if (Da.extendSeg[i].type == SEG_STRTRK) {
- Da.trk[i] = NewStraightTrack(Da.extendSeg[i].u.l.pos[0],Da.extendSeg[i].u.l.pos[1]);
- if (Da.trk[i]) Da.ep[i] = 1-i;
+ Da.trk[i] = NewStraightTrack(Da.extendSeg[i].u.l.pos[0],
+ Da.extendSeg[i].u.l.pos[1]);
+ if (Da.trk[i]) { Da.ep[i] = 1-i; }
} else {
- Da.trk[i] = NewCurvedTrack(Da.extendSeg[i].u.c.center,fabs(Da.extendSeg[i].u.c.radius),
- Da.extendSeg[i].u.c.a0,Da.extendSeg[i].u.c.a1,FALSE);
+ Da.trk[i] = NewCurvedTrack(Da.extendSeg[i].u.c.center,
+ fabs(Da.extendSeg[i].u.c.radius),
+ Da.extendSeg[i].u.c.a0,Da.extendSeg[i].u.c.a1,FALSE);
if (FindDistance(GetTrkEndPos(Da.trk[i],0),Da.pos[i])<=connectDistance) {
Da.ep[i] = 0;
- } else Da.ep[i] = 1;
+ } else { Da.ep[i] = 1; }
}
if (!Da.trk[i]) {
wBeep();
@@ -1991,17 +2133,18 @@ STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG
sub_pos[0] = Da.pos[0];
track_p first_trk= NULL,trk1=NULL,trk2 = NULL;
- for (int i=0;i<Da.mid_points.cnt;i++) {
+ for (int i=0; i<Da.mid_points.cnt; i++) {
sub_pos[1] = DYNARR_N(coOrd,Da.mid_points,i);
if ((trk1 = CreateCornuFromPoints(sub_pos, end_point))== NULL) {
wBeep();
- InfoMessage(_("Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"),
- Da.pos[0].x,Da.pos[0].y,
- Da.pos[1].x,Da.pos[1].y,
- Da.center[0].x,Da.center[0].y,
- Da.center[1].x,Da.center[1].y,
- Da.angle[0],Da.angle[1],
- FormatDistance(Da.radius[0]),FormatDistance(Da.radius[1]));
+ InfoMessage(
+ _("Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"),
+ Da.pos[0].x,Da.pos[0].y,
+ Da.pos[1].x,Da.pos[1].y,
+ Da.center[0].x,Da.center[0].y,
+ Da.center[1].x,Da.center[1].y,
+ Da.angle[0],Da.angle[1],
+ FormatDistance(Da.radius[0]),FormatDistance(Da.radius[1]));
UndoUndo(NULL);
Da.state = NONE;
return C_TERMINATE;
@@ -2015,8 +2158,8 @@ STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG
SetTrkBits( trk1, TB_HIDEDESC );
}
DrawNewTrack(trk1);
- if (first_trk == NULL) first_trk = trk1;
- if (trk2) ConnectTracks(trk1,0,trk2,1);
+ if (first_trk == NULL) { first_trk = trk1; }
+ if (trk2) { ConnectTracks(trk1,0,trk2,1); }
trk2 = trk1;
end_point[0] = FALSE;
sub_pos[0] = DYNARR_N(coOrd,Da.mid_points,i);
@@ -2025,13 +2168,14 @@ STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG
end_point[1] = TRUE;
if ((trk1 = CreateCornuFromPoints(sub_pos,end_point)) == NULL) {
wBeep();
- InfoMessage(_("Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"),
- Da.pos[0].x,Da.pos[0].y,
- Da.pos[1].x,Da.pos[1].y,
- Da.center[0].x,Da.center[0].y,
- Da.center[1].x,Da.center[1].y,
- Da.angle[0],Da.angle[1],
- FormatDistance(Da.radius[0]),FormatDistance(Da.radius[1]));
+ InfoMessage(
+ _("Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"),
+ Da.pos[0].x,Da.pos[0].y,
+ Da.pos[1].x,Da.pos[1].y,
+ Da.center[0].x,Da.center[0].y,
+ Da.center[1].x,Da.center[1].y,
+ Da.angle[0],Da.angle[1],
+ FormatDistance(Da.radius[0]),FormatDistance(Da.radius[1]));
UndoUndo(NULL);
Da.state = NONE;
return C_TERMINATE;
@@ -2045,27 +2189,30 @@ STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG
SetTrkScale( trk1, GetLayoutCurScale() );
SetTrkBits( trk1, TB_HIDEDESC );
}
- if (trk2) ConnectTracks(trk1,0,trk2,1);
- if (first_trk == NULL) first_trk = trk1;
+ if (trk2) { ConnectTracks(trk1,0,trk2,1); }
+ if (first_trk == NULL) { first_trk = trk1; }
Da.state = NONE; //Must do before Delete
- for (int i=0;i<Da.tracks.cnt;i++) {
+ for (int i=0; i<Da.tracks.cnt; i++) {
DeleteTrack(DYNARR_N(track_p,Da.tracks,i), TRUE);
}
- if (Da.trk[0]) UndoModify(Da.trk[0]);
- if (Da.trk[1]) UndoModify(Da.trk[1]);
+ if (Da.trk[0]) { UndoModify(Da.trk[0]); }
+ if (Da.trk[1]) { UndoModify(Da.trk[1]); }
- for (int i=0;i<2;i++) { //Attach new track
+ for (int i=0; i<2; i++) { //Attach new track
if (Da.trk[i] && Da.ep[i] != -1) { //Like the old track
if (MoveEndPt(&Da.trk[i],&Da.ep[i],Da.pos[i],0)) {
//Bezier split position not precise, so readjust Cornu
- GetConnectedTrackParms(Da.trk[i],GetTrkEndPos(Da.trk[i],Da.ep[i]),i,Da.ep[i],FALSE);
+ GetConnectedTrackParms(Da.trk[i],GetTrkEndPos(Da.trk[i],Da.ep[i]),i,Da.ep[i],
+ FALSE);
ANGLE_T endAngle = NormalizeAngle(GetTrkEndAngle(Da.trk[i],Da.ep[i])+180);
- SetCornuEndPt(i==0?first_trk:trk1,i,GetTrkEndPos(Da.trk[i],Da.ep[i]),Da.center[i],endAngle,Da.radius[i]);
- if (Da.ep[i]>= 0)
+ SetCornuEndPt(i==0?first_trk:trk1,i,GetTrkEndPos(Da.trk[i],Da.ep[i]),
+ Da.center[i],endAngle,Da.radius[i]);
+ if (Da.ep[i]>= 0) {
ConnectTracks(i==0?first_trk:trk1,i,Da.trk[i],Da.ep[i]);
+ }
} else {
UndoUndo(NULL);
wBeep();
@@ -2100,11 +2247,12 @@ STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG
/*
* Find length by adding up the underlying segments. The segments can be straights, curves or bezier.
*/
-DIST_T CornuLength(coOrd pos[4],dynArr_t segs) {
+DIST_T CornuLength(coOrd pos[4],dynArr_t segs)
+{
DIST_T dd = 0.0;
- if (segs.cnt == 0 ) return dd;
- for (int i = 0;i<segs.cnt;i++) {
+ if (segs.cnt == 0 ) { return dd; }
+ for (int i = 0; i<segs.cnt; i++) {
trkSeg_t t = DYNARR_N(trkSeg_t, segs, i);
if (t.type == SEG_CRVTRK || t.type == SEG_CRVLIN) {
dd += fabs(t.u.c.radius*D2R(t.u.c.a1));
@@ -2117,10 +2265,11 @@ DIST_T CornuLength(coOrd pos[4],dynArr_t segs) {
return dd;
}
-DIST_T CornuOffsetLength(dynArr_t segs, double offset) {
+DIST_T CornuOffsetLength(dynArr_t segs, double offset)
+{
DIST_T dd = 0.0;
- if (segs.cnt == 0 ) return dd;
- for (int i = 0;i<segs.cnt;i++) {
+ if (segs.cnt == 0 ) { return dd; }
+ for (int i = 0; i<segs.cnt; i++) {
trkSeg_t t = DYNARR_N(trkSeg_t, segs, i);
if (t.type == SEG_CRVTRK || t.type == SEG_CRVLIN) {
dd += fabs((t.u.c.radius+(t.u.c.radius>0?offset:-offset))*D2R(t.u.c.a1));
@@ -2133,25 +2282,27 @@ DIST_T CornuOffsetLength(dynArr_t segs, double offset) {
return dd;
}
-DIST_T CornuMinRadius(coOrd pos[4],dynArr_t segs) {
+DIST_T CornuMinRadius(coOrd pos[4],dynArr_t segs)
+{
DIST_T r = DIST_INF, rr;
- if (segs.cnt == 0 ) return r;
- for (int i = 0;i<segs.cnt;i++) {
+ if (segs.cnt == 0 ) { return r; }
+ for (int i = 0; i<segs.cnt; i++) {
trkSeg_t t = DYNARR_N(trkSeg_t, segs, i);
if (t.type == SEG_CRVTRK || t.type == SEG_CRVLIN) {
rr = fabs(t.u.c.radius);
} else if (t.type == SEG_BEZLIN || t.type == SEG_BEZTRK) {
rr = CornuMinRadius(t.u.b.pos, t.bezSegs);
- } else rr = DIST_INF;
- if (rr<r) r = rr;
+ } else { rr = DIST_INF; }
+ if (rr<r) { r = rr; }
}
return r;
}
-DIST_T CornuTotalWindingArc(coOrd pos[4],dynArr_t segs) {
+DIST_T CornuTotalWindingArc(coOrd pos[4],dynArr_t segs)
+{
DIST_T rr = 0;
- if (segs.cnt == 0 ) return 0;
- for (int i = 0;i<segs.cnt;i++) {
+ if (segs.cnt == 0 ) { return 0; }
+ for (int i = 0; i<segs.cnt; i++) {
trkSeg_t t = DYNARR_N(trkSeg_t, segs, i);
if (t.type == SEG_CRVTRK || t.type == SEG_CRVLIN) {
rr += t.u.c.a1;
@@ -2162,14 +2313,16 @@ DIST_T CornuTotalWindingArc(coOrd pos[4],dynArr_t segs) {
return rr;
}
-DIST_T CornuMaxRateofChangeofCurvature(coOrd pos[4], dynArr_t segs, DIST_T * last_c) {
+DIST_T CornuMaxRateofChangeofCurvature(coOrd pos[4], dynArr_t segs,
+ DIST_T * last_c)
+{
DIST_T r_max = 0.0, rc, lc = 0.0;
lc = * last_c;
segProcData_t segProcData;
- if (segs.cnt == 0 ) return r_max;
- for (int i = 0;i<segs.cnt;i++) {
+ if (segs.cnt == 0 ) { return r_max; }
+ for (int i = 0; i<segs.cnt; i++) {
trkSeg_t t = DYNARR_N(trkSeg_t, segs, i);
- if (t.type == SEG_FILCRCL) continue;
+ if (t.type == SEG_FILCRCL) { continue; }
SegProc(SEGPROC_LENGTH,&t,&segProcData);
if (t.type == SEG_CRVTRK || t.type == SEG_CRVLIN) {
rc = fabs(1/fabs(t.u.c.radius) - lc)/segProcData.length.length/2;
@@ -2180,7 +2333,7 @@ DIST_T CornuMaxRateofChangeofCurvature(coOrd pos[4], dynArr_t segs, DIST_T * las
rc = fabs(0.0-lc)/segProcData.length.length/2;
lc = 0.0;
}
- if (rc > r_max) r_max = rc;
+ if (rc > r_max) { r_max = rc; }
}
* last_c = lc;
return r_max;
@@ -2206,7 +2359,7 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
Da.commandType = CORNU_CREATE;
- Da.width = (double)lineWidth/mainD.dpi;
+ Da.lineWidth = (double)lineWidth;
Da.trackGauge = trackGauge;
Da.selectTrack = NULL;
@@ -2221,7 +2374,7 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
Da.selectMidPoint = -1;
Da.endHandle[0].end_valid = FALSE;
Da.endHandle[1].end_valid = FALSE;
- for (int i=0;i<2;i++) {
+ for (int i=0; i<2; i++) {
Da.ends[i] = FALSE;
Da.pos[i] = zero;
Da.angle[i] = 0.0;
@@ -2233,21 +2386,23 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
Da.ep1Segs_da_cnt = 0;
Da.ep2Segs_da_cnt = 0;
Da.crvSegs_da_cnt = 0;
- Da.midSegs.cnt = 0;
+ DYNARR_RESET( trkSeg_t*, Da.midSegs );
DYNARR_RESET(coOrd,Da.mid_points);
DYNARR_RESET(track_p,Da.tracks);
DYNARR_RESET(trkSeg_t,anchors_da);
Da.extend[0] = FALSE;
Da.extend[1] = FALSE;
- if (Da.cmdType == cornuCmdCreateTrack)
+ if (Da.cmdType == cornuCmdCreateTrack) {
InfoMessage( _("Left click - Start Cornu track") );
- else if (Da.cmdType == cornuCmdHotBar) {
+ } else if (Da.cmdType == cornuCmdHotBar) {
InfoMessage( _("Left click - Place Flextrack") );
} else {
- if (selectedTrackCount==0)
+ if (selectedTrackCount==0) {
InfoMessage( _("Left click - join with Cornu track") );
- else
- InfoMessage( _("Left click - join with Cornu track, Shift Left click - move to join") );
+ } else {
+ InfoMessage(
+ _("Left click - join with Cornu track, Shift Left click - move to join") );
+ }
}
return C_CONTINUE;
@@ -2257,11 +2412,12 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
coOrd p = pos;
t = NULL;
int end = 0;
- if (Da.state != NONE) end=1;
+ if (Da.state != NONE) { end=1; }
EPINX_T ep = -1;
//Lock to endpoint if one is available and under pointer
if ((t = OnTrack(&p, FALSE, TRUE)) != NULL && t != Da.selectTrack) {
- if (QueryTrack(t,Q_HAS_VARIABLE_ENDPOINTS)) { //Circle/Helix find if there is an open slot and where
+ if (QueryTrack(t,
+ Q_HAS_VARIABLE_ENDPOINTS)) { //Circle/Helix find if there is an open slot and where
if ((GetTrkEndTrk(t,0) != NULL) && (GetTrkEndTrk(t,1) != NULL)) {
wBeep();
InfoMessage(_("Helix Already Connected"));
@@ -2271,12 +2427,14 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
} else if (QueryTrack(t,Q_CAN_ADD_ENDPOINTS)) {
ep=-1; //Don't attach to existing Turntable ep
trackParams_t tp;
- if (!GetTrackParams(PARAMS_CORNU, t, pos, &tp)) return C_CONTINUE;
+ if (!GetTrackParams(PARAMS_CORNU, t, pos, &tp)) { return C_CONTINUE; }
ANGLE_T a = tp.angle;
Translate(&pos,tp.ttcenter,a,tp.ttradius);
p = pos; //Fix to wall of turntable initially
- } else ep = PickUnconnectedEndPointSilent(p, t); //EP
- if ( t && ep==-1 && (!QueryTrack(t,Q_CAN_ADD_ENDPOINTS) && !QueryTrack(t,Q_HAS_VARIABLE_ENDPOINTS))) { //No endpoints and not Turntable or Helix/Circle
+ } else { ep = PickUnconnectedEndPointSilent(p, t); } //EP
+ if ( t && ep==-1 && (!QueryTrack(t,Q_CAN_ADD_ENDPOINTS)
+ && !QueryTrack(t,
+ Q_HAS_VARIABLE_ENDPOINTS))) { //No endpoints and not Turntable or Helix/Circle
wBeep();
InfoMessage(_("No valid open endpoint on that track"));
t = NULL;
@@ -2293,9 +2451,10 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
pos = GetTrkEndPos(t,ep);
Da.pos[end] = pos;
Da.angle[end] = GetTrkEndAngle(t,ep);
- } else if (t == NULL) { //end not on Track, OK for CreateCornu -> empty end point
+ } else if (t ==
+ NULL) { //end not on Track, OK for CreateCornu -> empty end point
pos = p; //Reset to initial
- if (lock) SnapPos( &pos ); //Only snap if snapped in move
+ if (lock) { SnapPos( &pos ); } //Only snap if snapped in move
if (Da.cmdType == cornuCmdCreateTrack || Da.cmdType == cornuCmdHotBar) {
Da.trk[end] = NULL;
Da.pos[end] = pos;
@@ -2304,25 +2463,28 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
Da.state = POS_1;
Da.angle[0] = 270.0;
Da.radius[0] = 0.0;
- Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs, Da.pos[0], FALSE,TRUE,TRUE,FALSE,Da.angle[0],Da.radius[0],zero,&Da.endHandle[0]);
+ Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs, Da.pos[0], FALSE,TRUE,TRUE,FALSE,
+ Da.angle[0],Da.radius[0],zero,&Da.endHandle[0]);
Da.ep2Segs_da_cnt = 0;
InfoMessage( _("Drag arm in the direction of track") );
return C_CONTINUE;
}
Da.state = POS_2; //Now this is second end and it is open
Da.selectEndPoint = 1;
- Da.mid_points.cnt=0;
+ DYNARR_RESET( trkSeg_t*, Da.midSegs );
Da.angle[1] = GetOpenAngle(Da.pos,Da.angle,1);
Da.radius[1] = 0.0;
CreateBothEnds(1,-1,-1,-1);
SetUpCornuParms(&cp);
- if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE))
- Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
+ if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) {
+ Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
+ }
InfoMessage( _("Drag arm in the direction of track") );
return C_CONTINUE;
}
wBeep();
- InfoMessage(_("No Unconnected Track End there")); //Not creating a Cornu - Join can't be open
+ InfoMessage(
+ _("No Unconnected Track End there")); //Not creating a Cornu - Join can't be open
return C_CONTINUE;
} else {
Da.pos[end] = p;
@@ -2343,16 +2505,17 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
}
Da.state = POS_1;
Da.selectEndPoint = 0; //Select first end point
- Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs, Da.pos[0], FALSE, !QueryTrack(Da.trk[0],Q_IS_CORNU),QueryTrack(Da.trk[0],Q_CORNU_CAN_MODIFY),
- Da.trk[0]!=NULL,Da.angle[0],Da.radius[0],Da.center[0],NULL);
+ Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs, Da.pos[0], FALSE,
+ !QueryTrack(Da.trk[0],Q_IS_CORNU),QueryTrack(Da.trk[0],Q_CORNU_CAN_MODIFY),
+ Da.trk[0]!=NULL,Da.angle[0],Da.radius[0],Da.center[0],NULL);
InfoMessage( _("Locked - Move 1st end point of Cornu track along track 1") );
return C_CONTINUE;
} else { //Second Point
if (Da.trk[0] == t) {
- ErrorMessage( MSG_JOIN_CORNU_SAME );
- Da.trk[1] = NULL;
- Da.ep[1] = -1;
- return C_CONTINUE;
+ ErrorMessage( MSG_JOIN_CORNU_SAME );
+ Da.trk[1] = NULL;
+ Da.ep[1] = -1;
+ return C_CONTINUE;
}
if (!GetConnectedTrackParms(t, pos, 1, Da.ep[1],FALSE)) {
Da.trk[1] = NULL; //Turntable Fail
@@ -2373,8 +2536,9 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
}
CreateBothEnds(1,-1,-1,-1);
SetUpCornuParms(&cp);
- if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE))
+ if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) {
Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
+ }
return C_CONTINUE;
} else { //This is after both ends exist
return AdjustCornuCurve( action&0xFF, pos, InfoMessage );
@@ -2384,27 +2548,30 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
case wActionMove:
lock = FALSE;
DYNARR_RESET(trkSeg_t,anchors_da);
- if (Da.state != NONE && Da.state != LOC_2) return C_CONTINUE;
- if (Da.trk[0] && Da.trk[1]) return C_CONTINUE;
+ if (Da.state != NONE && Da.state != LOC_2) { return C_CONTINUE; }
+ if (Da.trk[0] && Da.trk[1]) { return C_CONTINUE; }
EPINX_T ep = -1;
t = NULL;
if (((MyGetKeyState() & WKEY_ALT) == 0) == magneticSnap) {
//Lock to endpoint if one is available and under pointer
if ((t = OnTrack(&pos, FALSE, TRUE)) != NULL && t != Da.selectTrack) {
- if (QueryTrack(t,Q_HAS_VARIABLE_ENDPOINTS)) { //Circle/Helix find if there is an open slot and where
+ if (QueryTrack(t,
+ Q_HAS_VARIABLE_ENDPOINTS)) { //Circle/Helix find if there is an open slot and where
if ((GetTrkEndTrk(t,0) != NULL) && (GetTrkEndTrk(t,1) != NULL)) {
return C_CONTINUE;
}
ep = -1; //Not a real ep yet
- } else ep = PickUnconnectedEndPointSilent(pos, t); //EP
- if (ep>=0 && QueryTrack(t,Q_CAN_ADD_ENDPOINTS)) ep=-1; //Don't attach to Turntable
- if ( ep==-1 && (!QueryTrack(t,Q_CAN_ADD_ENDPOINTS) && !QueryTrack(t,Q_HAS_VARIABLE_ENDPOINTS))) { //No endpoints and not Turntable or Helix/Circle
+ } else { ep = PickUnconnectedEndPointSilent(pos, t); } //EP
+ if (ep>=0 && QueryTrack(t,Q_CAN_ADD_ENDPOINTS)) { ep=-1; } //Don't attach to Turntable
+ if ( ep==-1 && (!QueryTrack(t,Q_CAN_ADD_ENDPOINTS)
+ && !QueryTrack(t,
+ Q_HAS_VARIABLE_ENDPOINTS))) { //No endpoints and not Turntable or Helix/Circle
return C_CONTINUE;
}
if (GetTrkGauge(t) != GetScaleTrackGauge(GetLayoutCurScale())) {
return C_CONTINUE;
}
- if (Da.state != NONE && t==Da.trk[0]) return C_CONTINUE;
+ if (Da.state != NONE && t==Da.trk[0]) { return C_CONTINUE; }
}
}
if (ep>=0 && t) {
@@ -2412,41 +2579,47 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
CreateCornuEndAnchor(pos,TRUE);
} else if (t) {
trackParams_t tp; //Turntable or extendable track
- if (!GetTrackParams(PARAMS_CORNU, t, pos, &tp)) return C_CONTINUE;
+ if (!GetTrackParams(PARAMS_CORNU, t, pos, &tp)) { return C_CONTINUE; }
if (QueryTrack(t,Q_CAN_ADD_ENDPOINTS)) {
- if (!GetTrackParams(PARAMS_CORNU, t, pos, &tp)) return C_CONTINUE;
+ if (!GetTrackParams(PARAMS_CORNU, t, pos, &tp)) { return C_CONTINUE; }
ANGLE_T a = tp.angle;
Translate(&pos,tp.ttcenter,a,tp.ttradius);
CreateCornuEndAnchor(pos,TRUE);
- } else CreateCornuEndAnchor(pos,TRUE);
+ } else { CreateCornuEndAnchor(pos,TRUE); }
} else if (SnapPos(&pos)) {
CreateCornuEndAnchor(pos,FALSE);
lock = TRUE;
}
return C_CONTINUE;
-
+
case C_MOVE:
if (Da.state == NONE) { //First point not created
if (Da.cmdType == cornuCmdCreateTrack || Da.cmdType == cornuCmdHotBar) {
InfoMessage("Place 1st end point of Cornu track");
- } else
+ } else if (Da.cmdType == cornuJoinTrack) {
+ return C_CONTINUE;
+ } else {
InfoMessage("Place 1st end point of Cornu track on unconnected end-point");
+ }
return C_CONTINUE;
}
if (Da.state == POS_1) { //First point has been created
- if ((Da.cmdType == cornuCmdCreateTrack || Da.cmdType == cornuCmdHotBar) && !Da.trk[0]) { //OK for CreateCornu -> No track selected
- if (IsClose(FindDistance(pos,Da.pos[0]))) return C_CONTINUE;
+ if ((Da.cmdType == cornuCmdCreateTrack || Da.cmdType == cornuCmdHotBar)
+ && !Da.trk[0]) { //OK for CreateCornu -> No track selected
+ if (IsClose(FindDistance(pos,Da.pos[0]))) { return C_CONTINUE; }
Da.selectEndPoint = 0;
Da.angle[0] = NormalizeAngle(FindAngle(Da.pos[0],pos)+180);
- Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs, Da.pos[0],TRUE,TRUE,TRUE,FALSE,Da.angle[0],0.0,zero,&Da.endHandle[0]);
+ Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs, Da.pos[0],TRUE,TRUE,TRUE,FALSE,
+ Da.angle[0],0.0,zero,&Da.endHandle[0]);
Da.radius[1] = -1.0; /*No end*/
return C_CONTINUE;
}
EPINX_T ep = 0;
- BOOL_T found = FALSE;
- int end = Da.state==POS_1?0:1;
- if(!QueryTrack(Da.trk[0],Q_CORNU_CAN_MODIFY) && !QueryTrack(Da.trk[0],Q_CAN_ADD_ENDPOINTS)) {
+// BOOL_T found = FALSE;
+// int end = Da.state==POS_1?0:1;
+ if(!QueryTrack(Da.trk[0],Q_CORNU_CAN_MODIFY)
+ && !QueryTrack(Da.trk[0],Q_CAN_ADD_ENDPOINTS)) {
InfoMessage(_("Track can't be split - so locked to endpoint"));
return C_CONTINUE;
}
@@ -2464,18 +2637,21 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
return C_CONTINUE;
}
Da.pos[ep] = pos;
- Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs,Da.pos[0],TRUE,!QueryTrack(Da.trk[0],Q_IS_CORNU),QueryTrack(Da.trk[0],Q_CORNU_CAN_MODIFY),
- Da.trk[0]!=NULL,Da.angle[0],Da.radius[0],Da.center[0],NULL);
+ Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs,Da.pos[0],TRUE,
+ !QueryTrack(Da.trk[0],Q_IS_CORNU),QueryTrack(Da.trk[0],Q_CORNU_CAN_MODIFY),
+ Da.trk[0]!=NULL,Da.angle[0],Da.radius[0],Da.center[0],NULL);
} else if (Da.state == POS_2 &&
- (Da.cmdType == cornuCmdCreateTrack || Da.cmdType == cornuCmdHotBar) && !Da.trk[1]) { //OK for CreateCornu -> No track selected
- if (IsClose(FindDistance(pos,Da.pos[1]))) return C_CONTINUE;
+ (Da.cmdType == cornuCmdCreateTrack || Da.cmdType == cornuCmdHotBar)
+ && !Da.trk[1]) { //OK for CreateCornu -> No track selected
+ if (IsClose(FindDistance(pos,Da.pos[1]))) { return C_CONTINUE; }
Da.selectEndPoint = 1;
Da.angle[1] = NormalizeAngle(FindAngle(Da.pos[1],pos)+180);
Da.radius[1] = 0.0; /*No end*/
- Da.ep1Segs_da_cnt = createEndPoint(Da.ep2Segs,Da.pos[1],TRUE,TRUE,TRUE,FALSE,Da.angle[1],0.0,zero,&Da.endHandle[1]);
+ Da.ep1Segs_da_cnt = createEndPoint(Da.ep2Segs,Da.pos[1],TRUE,TRUE,TRUE,FALSE,
+ Da.angle[1],0.0,zero,&Da.endHandle[1]);
SetUpCornuParms(&cp);
- if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
- else Da.crvSegs_da_cnt = 0;
+ if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) { Da.crvSegs_da_cnt = Da.crvSegs_da.cnt; }
+ else { Da.crvSegs_da_cnt = 0; }
CreateBothEnds(-1,-1,-1,-1);
Da.minRadius = CornuMinRadius(Da.pos,Da.crvSegs_da);
return C_CONTINUE;
@@ -2485,32 +2661,41 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
return C_CONTINUE;
case C_UP:
- if (Da.state == POS_1 && (Da.cmdType == cornuCmdCreateTrack || Da.cmdType == cornuCmdHotBar || Da.trk[0])) {
+ if (Da.state == POS_1 && (Da.cmdType == cornuCmdCreateTrack
+ || Da.cmdType == cornuCmdHotBar || Da.trk[0])) {
Da.state = LOC_2;
Da.selectEndPoint = -1;
if (Da.cmdType == cornuCmdCreateTrack || Da.cmdType == cornuCmdHotBar) {
- if (Da.cmdType == cornuCmdCreateTrack)
+ if (Da.cmdType == cornuCmdCreateTrack) {
InfoMessage( _("Pick other end of Cornu") );
- else
- InfoMessage( _("Select flextrack ends or anchors and drag, Enter to approve, Esc to Cancel") );
- Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs, Da.pos[0],FALSE,TRUE,TRUE,FALSE,0.0,0.0,zero,NULL);
+ } else {
+ InfoMessage(
+ _("Select flextrack ends or anchors and drag, Enter to approve, Esc to Cancel") );
+ }
+ Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs, Da.pos[0],FALSE,TRUE,TRUE,FALSE,
+ 0.0,0.0,zero,NULL);
return C_CONTINUE;
}
- InfoMessage( _("Put other end of Cornu on a track with an unconnected end point") );
+ InfoMessage(
+ _("Put other end of Cornu on a track with an unconnected end point") );
if (Da.trk[0])
- Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs, Da.pos[0], FALSE,!QueryTrack(Da.trk[0],Q_IS_CORNU),QueryTrack(Da.trk[0],Q_CORNU_CAN_MODIFY),
- Da.trk[0]!=NULL,Da.angle[0],Da.radius[0],Da.center[0],NULL);
- else
- Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs, Da.pos[0], FALSE,TRUE,TRUE,FALSE, Da.angle[0],Da.radius[0],Da.center[0],&Da.endHandle[0]);
+ Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs, Da.pos[0], FALSE,
+ !QueryTrack(Da.trk[0],Q_IS_CORNU),QueryTrack(Da.trk[0],Q_CORNU_CAN_MODIFY),
+ Da.trk[0]!=NULL,Da.angle[0],Da.radius[0],Da.center[0],NULL);
+ else {
+ Da.ep1Segs_da_cnt = createEndPoint(Da.ep1Segs, Da.pos[0], FALSE,TRUE,TRUE,FALSE,
+ Da.angle[0],Da.radius[0],Da.center[0],&Da.endHandle[0]);
+ }
return C_CONTINUE;
- } else if (Da.state == POS_2 && (Da.cmdType == cornuCmdCreateTrack || Da.cmdType == cornuCmdHotBar || Da.trk[1] )){
+ } else if (Da.state == POS_2 && (Da.cmdType == cornuCmdCreateTrack
+ || Da.cmdType == cornuCmdHotBar || Da.trk[1] )) {
Da.state = PICK_POINT;
Da.selectEndPoint = -1;
Da.prevEndPoint = 1;
Da.prevSelected = -1;
SetUpCornuParms(&cp);
- if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
- else Da.crvSegs_da_cnt = 0;
+ if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) { Da.crvSegs_da_cnt = Da.crvSegs_da.cnt; }
+ else { Da.crvSegs_da_cnt = 0; }
CreateBothEnds(-1,-1,-1,-1);
Da.minRadius = CornuMinRadius(Da.pos,Da.crvSegs_da);
return C_CONTINUE;
@@ -2520,21 +2705,23 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
return C_CONTINUE;
break;
case C_TEXT:
- if (Da.state != PICK_POINT) return C_CONTINUE;
- if ((action>>8 == 127) || (action>>8 == 8)) //
- return AdjustCornuCurve(action, pos, InfoMessage);
- if (!(action>>8 == 32 )) //Space is same as Enter.
- return C_CONTINUE;
- /* no break */
- case C_OK:
- if (Da.state != PICK_POINT) return C_CONTINUE;
- STATUS_T rc = AdjustCornuCurve( C_OK, pos, InfoMessage);
- if (rc == C_TERMINATE) {
- Da.state = NONE;
- Da.ep1Segs_da_cnt = 0;
+ if (Da.state != PICK_POINT) { return C_CONTINUE; }
+ if ((action>>8 == 127) || (action>>8 == 8)) { //
+ return AdjustCornuCurve(action, pos, InfoMessage);
+ }
+ if (!(action>>8 == 32 )) { //Space is same as Enter.
+ return C_CONTINUE;
+ }
+ /* no break */
+ case C_OK:
+ if (Da.state != PICK_POINT) { return C_CONTINUE; }
+ STATUS_T rc = AdjustCornuCurve( C_OK, pos, InfoMessage);
+ if (rc == C_TERMINATE) {
+ Da.state = NONE;
+ Da.ep1Segs_da_cnt = 0;
Da.ep2Segs_da_cnt = 0;
Da.crvSegs_da_cnt = 0;
- for (int i=0;i<2;i++) {
+ for (int i=0; i<2; i++) {
Da.radius[i] = 0.0;
Da.angle[i] = 0.0;
Da.center[i] = zero;
@@ -2544,22 +2731,24 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
Da.endHandle[i].end_valid = FALSE;
}
SetAllTrackSelect( FALSE );
- }
- return rc;
+ }
+ return rc;
case C_REDRAW:
wSetCursor(mainD.d,defaultCursor);
DrawHighlightBoxes(FALSE,FALSE,NULL);
HighlightSelectedTracks(NULL, TRUE, TRUE);
if ( Da.state != NONE ) {
- DrawCornuCurve(NULL,Da.ep1Segs,Da.ep1Segs_da_cnt,Da.ep2Segs,Da.ep2Segs_da_cnt,(trkSeg_t *)Da.crvSegs_da.ptr,Da.crvSegs_da_cnt, NULL,
- Da.extend[0]?&Da.extendSeg[0]:NULL,Da.extend[1]?&Da.extendSeg[1]:NULL,(trkSeg_t *)Da.midSegs.ptr,Da.midSegs.cnt,wDrawColorBlack);
+ DrawCornuCurve(NULL,Da.ep1Segs,Da.ep1Segs_da_cnt,Da.ep2Segs,Da.ep2Segs_da_cnt,
+ &DYNARR_N(trkSeg_t,Da.crvSegs_da,0),Da.crvSegs_da_cnt, NULL,
+ Da.extend[0]?&Da.extendSeg[0]:NULL,Da.extend[1]?&Da.extendSeg[1]:NULL,
+ &DYNARR_N(trkSeg_t,Da.midSegs,0),Da.midSegs.cnt,wDrawColorBlack);
}
- if (anchors_da.cnt)
- DrawSegs( &tempD, zero, 0.0, &anchors(0), anchors_da.cnt, trackGauge, wDrawColorBlack );
- if (MyGetKeyState()&WKEY_SHIFT) DrawHighlightBoxes(FALSE,FALSE,NULL);
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack,
+ 0 );
+ if (MyGetKeyState()&WKEY_SHIFT) { DrawHighlightBoxes(FALSE,FALSE,NULL); }
- if (Da.state == POINT_PICKED) wSetCursor(mainD.d,wCursorNone);
+ if (Da.state == POINT_PICKED) { wSetCursor(mainD.d,wCursorNone); }
return C_CONTINUE;
@@ -2568,7 +2757,7 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
Da.ep1Segs_da_cnt = 0;
Da.ep2Segs_da_cnt = 0;
Da.crvSegs_da_cnt = 0;
- for (int i=0;i<2;i++) {
+ for (int i=0; i<2; i++) {
Da.radius[i] = 0.0;
Da.angle[i] = 0.0;
Da.center[i] = zero;
@@ -2586,20 +2775,21 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
infoSubst = FALSE;
}
return C_CONTINUE;
-
+
default:
- return C_CONTINUE;
+ return C_CONTINUE;
}
return C_CONTINUE;
}
-BOOL_T GetTracksFromCornuTrack(track_p trk, track_p newTracks[2]) {
+BOOL_T GetTracksFromCornuTrack(track_p trk, track_p newTracks[2])
+{
track_p trk_old = NULL;
newTracks[0] = NULL, newTracks[1] = NULL;
struct extraDataCornu_t * xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
- if (!IsTrack(trk)) return FALSE;
- for (int i=0; i<xx->arcSegs.cnt;i++) {
+ if (!IsTrack(trk)) { return FALSE; }
+ for (int i=0; i<xx->arcSegs.cnt; i++) {
track_p bezTrack[2];
bezTrack[0] = NULL, bezTrack[1] = NULL;
trkSeg_p seg = &DYNARR_N(trkSeg_t,xx->arcSegs,i);
@@ -2607,15 +2797,17 @@ BOOL_T GetTracksFromCornuTrack(track_p trk, track_p newTracks[2]) {
DYNARR_RESET(trkSeg_t,seg->bezSegs);
FixUpBezierSeg(seg->u.b.pos,seg,TRUE);
GetTracksFromBezierSegment(seg, bezTrack, trk);
- if (newTracks[0] == NULL) newTracks[0] = bezTrack[0];
+ if (newTracks[0] == NULL) { newTracks[0] = bezTrack[0]; }
newTracks[1] = bezTrack[1];
if (trk_old) {
- for (int i=0;i<2;i++) {
+ for (int i=0; i<2; i++) {
if (GetTrkEndTrk(trk_old,i)==NULL) {
coOrd pos = GetTrkEndPos(trk_old,i);
EPINX_T ep_n = PickUnconnectedEndPoint(pos,bezTrack[0]);
- if ((connectDistance >= FindDistance(GetTrkEndPos(trk_old,i),GetTrkEndPos(bezTrack[0],ep_n))) &&
- (connectAngle >= fabs(DifferenceBetweenAngles(GetTrkEndAngle(trk_old,i),GetTrkEndAngle(bezTrack[0],ep_n)+180))) ) {
+ if ((connectDistance >= FindDistance(GetTrkEndPos(trk_old,i),
+ GetTrkEndPos(bezTrack[0],ep_n))) &&
+ (connectAngle >= fabs(DifferenceBetweenAngles(GetTrkEndAngle(trk_old,i),
+ GetTrkEndAngle(bezTrack[0],ep_n)+180))) ) {
ConnectTracks(trk_old,i,bezTrack[0],ep_n);
break;
}
@@ -2624,21 +2816,25 @@ BOOL_T GetTracksFromCornuTrack(track_p trk, track_p newTracks[2]) {
}
trk_old = newTracks[1];
} else {
- track_p new_trk;
- if (seg->type == SEG_CRVTRK)
- new_trk = NewCurvedTrack(seg->u.c.center,seg->u.c.radius,seg->u.c.a0,seg->u.c.a1,0);
- else if (seg->type == SEG_STRTRK)
+ track_p new_trk = NULL;
+ if (seg->type == SEG_CRVTRK) {
+ new_trk = NewCurvedTrack(seg->u.c.center,seg->u.c.radius,seg->u.c.a0,
+ seg->u.c.a1,0);
+ } else if (seg->type == SEG_STRTRK) {
new_trk = NewStraightTrack(seg->u.l.pos[0],seg->u.l.pos[1]);
- if (newTracks[0] == NULL) newTracks[0] = new_trk;
+ }
+ if (newTracks[0] == NULL) { newTracks[0] = new_trk; }
CopyAttributes( trk, new_trk );
newTracks[1] = new_trk;
if (trk_old) {
- for (int i=0;i<2;i++) {
+ for (int i=0; i<2; i++) {
if (GetTrkEndTrk(trk_old,i)==NULL) {
coOrd pos = GetTrkEndPos(trk_old,i);
EPINX_T ep_n = PickUnconnectedEndPoint(pos,new_trk);
- if ((connectDistance >= FindDistance(GetTrkEndPos(trk_old,i),GetTrkEndPos(new_trk,ep_n))) &&
- (connectAngle >= fabs(DifferenceBetweenAngles(GetTrkEndAngle(trk_old,i),GetTrkEndAngle(new_trk,ep_n)+180)))) {
+ if ((connectDistance >= FindDistance(GetTrkEndPos(trk_old,i),
+ GetTrkEndPos(new_trk,ep_n))) &&
+ (connectAngle >= fabs(DifferenceBetweenAngles(GetTrkEndAngle(trk_old,i),
+ GetTrkEndAngle(new_trk,ep_n)+180)))) {
ConnectTracks(trk_old,i,new_trk,ep_n);
break;
}
@@ -2653,8 +2849,9 @@ BOOL_T GetTracksFromCornuTrack(track_p trk, track_p newTracks[2]) {
}
static STATUS_T cmdCornuCreate(
- wAction_t action,
- coOrd pos ) {
+ wAction_t action,
+ coOrd pos )
+{
static int createState = 0;
int rc = 0;
@@ -2669,8 +2866,9 @@ static STATUS_T cmdCornuCreate(
if (createState != 0 ) {
createState = 0;
CmdCornu( C_OK, pos );
- } else
+ } else {
CmdCornu( C_CANCEL, pos );
+ }
Da.prevSelected = -1;
Da.selectEndHandle = -1;
Da.selectEndPoint = -1;
@@ -2683,9 +2881,10 @@ static STATUS_T cmdCornuCreate(
Da.endHandle[0].end_valid = Da.endHandle[1].end_valid = FALSE;
return C_TERMINATE;
case C_TEXT:
- if ((action>>8) != ' ' && (action>>8) != 32)
+ if ((action>>8) != ' ' && (action>>8) != 32) {
return CmdCornu(action,pos);
- /*no break*/
+ }
+ /*no break*/
case C_OK:
CmdCornu(C_OK,pos);
MainRedraw();
@@ -2695,7 +2894,7 @@ static STATUS_T cmdCornuCreate(
CmdCornu(C_CANCEL, pos);
createState = 0;
rc = C_TERMINATE;
- /* no break */
+ /* no break */
case C_START:
createState = 0;
commandContext = I2VP(cornuCmdHotBar);
@@ -2718,344 +2917,364 @@ static STATUS_T cmdCornuCreate(
}
static STATUS_T CmdConvertTo(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
static track_p trk;
cornuParm_t cp;
switch (action) {
case wActionMove:
- if ((trk = OnTrack(&pos,FALSE,TRUE)) == NULL) return C_CONTINUE;
+ if ((trk = OnTrack(&pos,FALSE,TRUE)) == NULL) { return C_CONTINUE; }
if (!QueryTrack(trk, Q_CORNU_CAN_MODIFY) && //Not Fixed Track/Turnout/Turntable
- !QueryTrack(trk, Q_IGNORE_EASEMENT_ON_EXTEND ))
+ !QueryTrack(trk, Q_IGNORE_EASEMENT_ON_EXTEND )) {
trk = NULL;
+ }
return C_CONTINUE;
case C_LCLICK:
- if ((trk = OnTrack(&pos,FALSE,TRUE))!=NULL) {
- SetTrkBits(trk,TB_SELECTED);
- selectedTrackCount = 1;
- } else {
- wBeep();
- InfoMessage( _("Not on a Track") );
- return C_CONTINUE;
- }
- trk = NULL;
+ if ((trk = OnTrack(&pos,FALSE,TRUE))!=NULL) {
+ SetTrkBits(trk,TB_SELECTED);
+ selectedTrackCount = 1;
+ } else {
+ wBeep();
+ InfoMessage( _("Not on a Track") );
+ return C_CONTINUE;
+ }
+ trk = NULL;
- /* no break */
+ /* no break */
case C_START:
- if (selectedTrackCount==0) {
- InfoMessage( _("Select a Track To Convert") );
- return C_CONTINUE;
+ if (selectedTrackCount==0) {
+ InfoMessage( _("Select a Track To Convert") );
+ return C_CONTINUE;
+ } else if (selectedTrackCount>1) {
+ if (NoticeMessage(_("Convert all Selected Tracks to Cornu Tracks?"), _("Yes"),
+ _("No"))<=0) {
+ SetAllTrackSelect(FALSE);
+ return C_TERMINATE;
}
- else if (selectedTrackCount>1) {
- if (NoticeMessage(_("Convert all Selected Tracks to Cornu Tracks?"), _("Yes"), _("No"))<=0) {
- SetAllTrackSelect(FALSE);
- return C_TERMINATE;
- }
+ }
+ UndoStart( _("Convert Cornu"),"newCornu curves");
+ trk = NULL;
+ int converted=0, not_convertable = 0, created=0, deleted=0;
+ DYNARR_RESET(track_p,Da.tracks);
+ while ( TrackIterate( &trk ) ) {
+ if (!GetTrkSelected( trk )) { continue; } //Only selected
+ if (!QueryTrack(trk, Q_CORNU_CAN_MODIFY) && //Not Fixed Track/Turnout/Turntable
+ !QueryTrack( trk, Q_IGNORE_EASEMENT_ON_EXTEND )) { //But Yes to Easement
+ not_convertable++;
+ continue;
}
- UndoStart( _("Convert Cornu"),"newCornu curves");
- trk = NULL;
- int converted=0, not_convertable = 0, created=0, deleted=0;
- DYNARR_RESET(track_p,Da.tracks);
- while ( TrackIterate( &trk ) ) {
- if (!GetTrkSelected( trk )) continue; //Only selected
- if (!QueryTrack(trk, Q_CORNU_CAN_MODIFY) && //Not Fixed Track/Turnout/Turntable
- !QueryTrack( trk, Q_IGNORE_EASEMENT_ON_EXTEND )) { //But Yes to Easement
- not_convertable++;
- continue;
+ converted++;
+ DYNARR_RESET(trkSeg_t,Da.crvSegs_da);
+ Da.ep1Segs_da_cnt = 0;
+ Da.ep2Segs_da_cnt = 0;
+ DYNARR_RESET( trkSeg_t*, Da.midSegs );
+ Da.extend[0] = FALSE;
+ Da.extend[1] = FALSE;
+ Da.selectEndPoint = -1;
+ Da.selectTrack = NULL;
+ DYNARR_RESET(coOrd,Da.mid_points);
+ ClrTrkBits( trk, TB_SELECTED ); //Done with this one
+ Da.selectTrack = trk;
+ DYNARR_APPEND(track_p,Da.tracks,1);
+ DYNARR_LAST(track_p,Da.tracks) = trk;
+ Da.trk[0] = GetTrkEndTrk( trk, 0 );
+ track_p prior = trk;
+ if (Da.trk[0]) { Da.ep[0] = GetEndPtConnectedToMe(Da.trk[0],trk); }
+ else { Da.ep[0] = -1; }
+ EPINX_T ep0 = 0;
+ //Move down the LHS adding tracks until no more Selected or not modifyable
+ while (Da.trk[0] && GetTrkSelected( Da.trk[0]) && IsTrack(Da.trk[0])
+ && (QueryTrack(Da.trk[0], Q_CORNU_CAN_MODIFY)
+ || QueryTrack(Da.trk[0], Q_IS_CORNU)) ) {
+ prior = Da.trk[0];
+ ep0 = 1-Da.ep[0];
+ ClrTrkBits( Da.trk[0], TB_SELECTED ); //Done with this one
+ if (selectedTrackCount>0) { selectedTrackCount--; }
+ DYNARR_APPEND(track_p,Da.tracks,1);
+ DYNARR_LAST(track_p,Da.tracks) = prior;
+ DYNARR_APPEND(coOrd,Da.mid_points,1);
+ for (int i=Da.mid_points.cnt-1; i>1; i--) {
+ DYNARR_N(coOrd,Da.mid_points,i) = DYNARR_N(coOrd,Da.mid_points,i-1);
}
+ DYNARR_N(coOrd,Da.mid_points,0) = GetTrkEndPos(prior,1-ep0);
+ Da.trk[0] = GetTrkEndTrk( prior, ep0 );
+ if (Da.trk[0]) { Da.ep[0] = GetEndPtConnectedToMe(Da.trk[0],prior); }
+ else { Da.ep[0] = -1; }
converted++;
- DYNARR_RESET(trkSeg_t,Da.crvSegs_da);
- Da.ep1Segs_da_cnt = 0;
- Da.ep2Segs_da_cnt = 0;
- Da.midSegs.cnt = 0;
- Da.extend[0] = FALSE;
- Da.extend[1] = FALSE;
- Da.selectEndPoint = -1;
- Da.selectTrack = NULL;
- DYNARR_RESET(coOrd,Da.mid_points);
- ClrTrkBits( trk, TB_SELECTED ); //Done with this one
- Da.selectTrack = trk;
+ }
+ Da.radius[0] = -1.0; //Initialize with no end
+ Da.ends[0] = FALSE;
+ Da.center[0] = zero;
+ Da.pos[0] = GetTrkEndPos(prior,ep0);
+ if (Da.trk[0] && Da.ep[0]>=0) {
+ GetConnectedTrackParms(Da.trk[0],GetTrkEndPos(Da.trk[0],Da.ep[0]),0,Da.ep[0],
+ FALSE);
+ }
+
+ //Move to RHS
+
+ Da.trk[1] = GetTrkEndTrk( trk, 1 );
+ track_p next = trk;
+ EPINX_T ep1 = 1;
+ if (Da.trk[1]) { Da.ep[1] = GetEndPtConnectedToMe(Da.trk[1],trk); }
+ else { Da.ep[1] = -1; }
+ //Move down RHS adding tracks until no more Selected or not modifyable
+ while (Da.trk[1] && GetTrkSelected( Da.trk[1])
+ && (QueryTrack(Da.trk[1], Q_CORNU_CAN_MODIFY)
+ || QueryTrack(Da.trk[1], Q_IS_CORNU))) {
+ next = Da.trk[1];
+ ep1 = 1-Da.ep[1];
+ if (selectedTrackCount>0) { selectedTrackCount--; }
+ ClrTrkBits( Da.trk[1], TB_SELECTED ); //Done with this one
DYNARR_APPEND(track_p,Da.tracks,1);
- DYNARR_LAST(track_p,Da.tracks) = trk;
- Da.trk[0] = GetTrkEndTrk( trk, 0 );
- track_p prior = trk;
- if (Da.trk[0]) Da.ep[0] = GetEndPtConnectedToMe(Da.trk[0],trk);
- else Da.ep[0] = -1;
- EPINX_T ep0 = 0;
- //Move down the LHS adding tracks until no more Selected or not modifyable
- while (Da.trk[0] && GetTrkSelected( Da.trk[0]) && IsTrack(Da.trk[0]) && (QueryTrack(Da.trk[0], Q_CORNU_CAN_MODIFY) || QueryTrack(Da.trk[0], Q_IS_CORNU)) ) {
- prior = Da.trk[0];
- ep0 = 1-Da.ep[0];
- ClrTrkBits( Da.trk[0], TB_SELECTED ); //Done with this one
- if (selectedTrackCount>0) selectedTrackCount--;
- DYNARR_APPEND(track_p,Da.tracks,1);
- DYNARR_LAST(track_p,Da.tracks) = prior;
- DYNARR_APPEND(coOrd,Da.mid_points,1);
- for (int i=Da.mid_points.cnt-1;i>1;i--) {
- DYNARR_N(coOrd,Da.mid_points,i) = DYNARR_N(coOrd,Da.mid_points,i-1);
- }
- DYNARR_N(coOrd,Da.mid_points,0) = GetTrkEndPos(prior,1-ep0);
- Da.trk[0] = GetTrkEndTrk( prior, ep0 );
- if (Da.trk[0]) Da.ep[0] = GetEndPtConnectedToMe(Da.trk[0],prior);
- else Da.ep[0] = -1;
- converted++;
- }
- Da.radius[0] = -1.0; //Initialize with no end
- Da.ends[0] = FALSE;
- Da.center[0] = zero;
- Da.pos[0] = GetTrkEndPos(prior,ep0);
- if (Da.trk[0] && Da.ep[0]>=0) {
- GetConnectedTrackParms(Da.trk[0],GetTrkEndPos(Da.trk[0],Da.ep[0]),0,Da.ep[0],FALSE);
- }
+ DYNARR_LAST(track_p,Da.tracks) = next;
+ DYNARR_APPEND(coOrd,Da.mid_points,1);
+ DYNARR_LAST(coOrd,Da.mid_points) = GetTrkEndPos(next,1-ep1);
+ Da.trk[1] = GetTrkEndTrk( next, ep1 );
+ if (Da.trk[1]) { Da.ep[1] = GetEndPtConnectedToMe(Da.trk[1],next); }
+ converted++;
+ }
+ Da.radius[1] = -1.0; //Initialize with no end
+ Da.ends[1] = FALSE;
+ Da.center[1] = zero;
+ Da.pos[1] = GetTrkEndPos(next,ep1);
+ if (Da.trk[1] && Da.ep[1]>=0) {
+ GetConnectedTrackParms(Da.trk[1],GetTrkEndPos(Da.trk[1],Da.ep[1]),1,Da.ep[1],
+ FALSE);
+ }
+ SetUpCornuParms(&cp);
+ if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) { Da.crvSegs_da_cnt = Da.crvSegs_da.cnt; }
+ else { continue; } //Checks that a solution can be found
- //Move to RHS
-
- Da.trk[1] = GetTrkEndTrk( trk, 1 );
- track_p next = trk;
- EPINX_T ep1 = 1;
- if (Da.trk[1]) Da.ep[1] = GetEndPtConnectedToMe(Da.trk[1],trk);
- else Da.ep[1] = -1;
- //Move down RHS adding tracks until no more Selected or not modifyable
- while (Da.trk[1] && GetTrkSelected( Da.trk[1]) && (QueryTrack(Da.trk[1], Q_CORNU_CAN_MODIFY) || QueryTrack(Da.trk[1], Q_IS_CORNU))) {
- next = Da.trk[1];
- ep1 = 1-Da.ep[1];
- if (selectedTrackCount>0) selectedTrackCount--;
- ClrTrkBits( Da.trk[1], TB_SELECTED ); //Done with this one
- DYNARR_APPEND(track_p,Da.tracks,1);
- DYNARR_LAST(track_p,Da.tracks) = next;
- DYNARR_APPEND(coOrd,Da.mid_points,1);
- DYNARR_LAST(coOrd,Da.mid_points) = GetTrkEndPos(next,1-ep1);
- Da.trk[1] = GetTrkEndTrk( next, ep1 );
- if (Da.trk[1]) Da.ep[1] = GetEndPtConnectedToMe(Da.trk[1],next);
- converted++;
- }
- Da.radius[1] = -1.0; //Initialize with no end
- Da.ends[1] = FALSE;
- Da.center[1] = zero;
- Da.pos[1] = GetTrkEndPos(next,ep1);
- if (Da.trk[1] && Da.ep[1]>=0) {
- GetConnectedTrackParms(Da.trk[1],GetTrkEndPos(Da.trk[1],Da.ep[1]),1,Da.ep[1],FALSE);
- }
- SetUpCornuParms(&cp);
- if (CallCornuM(Da.mid_points,Da.ends,Da.pos,&cp,&Da.crvSegs_da,TRUE)) Da.crvSegs_da_cnt = Da.crvSegs_da.cnt;
- else continue; //Checks that a solution can be found
-
- // Do the deed - Create a replacement Cornu
-
- BOOL_T end_point[2];
- end_point[0] = TRUE;
- end_point[1] = FALSE;
- coOrd sub_pos[2];
- sub_pos[0] = Da.pos[0];
- if (Da.radius[0] == -1) end_point[0] = FALSE;
- track_p first_trk= NULL,trk1=NULL,trk2 = NULL;
-
- for (int i=0;i<Da.mid_points.cnt;i++) {
- sub_pos[1] = DYNARR_N(coOrd,Da.mid_points,i);
- if ((trk1 = CreateCornuFromPoints(sub_pos,end_point))== NULL) continue;
- if (Da.trk[0]) {
- CopyAttributes( Da.trk[0], trk1 );
- } else if (Da.trk[1]) {
- CopyAttributes( Da.trk[1], trk1 );
- } else {
- SetTrkScale( trk1, GetLayoutCurScale() );
- SetTrkBits( trk1, TB_HIDEDESC );
- }
- DrawNewTrack(trk1);
- if (first_trk == NULL) first_trk = trk1;
- if (trk2) ConnectTracks(trk1,0,trk2,1);
- trk2 = trk1;
- end_point[0] = FALSE;
- sub_pos[0] = DYNARR_N(coOrd,Da.mid_points,i);
- }
- sub_pos[1] = Da.pos[1];
- end_point[1] = TRUE;
- if (Da.radius[1] == -1) end_point[1] = FALSE;
- if ((trk1 = CreateCornuFromPoints(sub_pos,end_point)) == NULL) continue;
- created++;
- DrawNewTrack(trk1);
+ // Do the deed - Create a replacement Cornu
+
+ BOOL_T end_point[2];
+ end_point[0] = TRUE;
+ end_point[1] = FALSE;
+ coOrd sub_pos[2];
+ sub_pos[0] = Da.pos[0];
+ if (Da.radius[0] == -1) { end_point[0] = FALSE; }
+ track_p first_trk= NULL,trk1=NULL,trk2 = NULL;
+
+ for (int i=0; i<Da.mid_points.cnt; i++) {
+ sub_pos[1] = DYNARR_N(coOrd,Da.mid_points,i);
+ if ((trk1 = CreateCornuFromPoints(sub_pos,end_point))== NULL) { continue; }
if (Da.trk[0]) {
CopyAttributes( Da.trk[0], trk1 );
- } else if (Da.trk[1]){
+ } else if (Da.trk[1]) {
CopyAttributes( Da.trk[1], trk1 );
} else {
SetTrkScale( trk1, GetLayoutCurScale() );
SetTrkBits( trk1, TB_HIDEDESC );
}
- if (trk2) ConnectTracks(trk1,0,trk2,1);
- if (first_trk == NULL) first_trk = trk1;
-
- for (int i=0;i<2;i++) {
+ DrawNewTrack(trk1);
+ if (first_trk == NULL) { first_trk = trk1; }
+ if (trk2) { ConnectTracks(trk1,0,trk2,1); }
+ trk2 = trk1;
+ end_point[0] = FALSE;
+ sub_pos[0] = DYNARR_N(coOrd,Da.mid_points,i);
+ }
+ sub_pos[1] = Da.pos[1];
+ end_point[1] = TRUE;
+ if (Da.radius[1] == -1) { end_point[1] = FALSE; }
+ if ((trk1 = CreateCornuFromPoints(sub_pos,end_point)) == NULL) { continue; }
+ created++;
+ DrawNewTrack(trk1);
+ if (Da.trk[0]) {
+ CopyAttributes( Da.trk[0], trk1 );
+ } else if (Da.trk[1]) {
+ CopyAttributes( Da.trk[1], trk1 );
+ } else {
+ SetTrkScale( trk1, GetLayoutCurScale() );
+ SetTrkBits( trk1, TB_HIDEDESC );
+ }
+ if (trk2) { ConnectTracks(trk1,0,trk2,1); }
+ if (first_trk == NULL) { first_trk = trk1; }
+
+ for (int i=0; i<2; i++) {
+ if (Da.ep[i]>=0 && Da.trk[i]) {
+ track_p trk_old = GetTrkEndTrk(Da.trk[i],Da.ep[i]);
+ EPINX_T old_ep = GetEndPtConnectedToMe(trk_old,Da.trk[i]);
+ DisconnectTracks(Da.trk[i],Da.ep[i],trk_old,old_ep);
if (Da.ep[i]>=0 && Da.trk[i]) {
- track_p trk_old = GetTrkEndTrk(Da.trk[i],Da.ep[i]);
- EPINX_T old_ep = GetEndPtConnectedToMe(trk_old,Da.trk[i]);
- DisconnectTracks(Da.trk[i],Da.ep[i],trk_old,old_ep);
- if (Da.ep[i]>=0 && Da.trk[i])
- ConnectTracks(Da.trk[i],Da.ep[i],i==0?first_trk:trk1,i);
+ ConnectTracks(Da.trk[i],Da.ep[i],i==0?first_trk:trk1,i);
}
}
-
- } //Find next track
- SetAllTrackSelect(FALSE);
- //Get rid of old tracks
- for (int i = 0; i<Da.tracks.cnt;i++) {
- DeleteTrack(DYNARR_N(track_p,Da.tracks,i),FALSE);
- deleted++;
}
- UndoEnd(); //Stop accumulating
- NoticeMessage(_("Tracks Counts: %d converted %d unconvertible %d created %d deleted"),_("OK"),NULL,converted,not_convertable,created,deleted);
+ } //Find next track
+ SetAllTrackSelect(FALSE);
+ //Get rid of old tracks
+ for (int i = 0; i<Da.tracks.cnt; i++) {
+ DeleteTrack(DYNARR_N(track_p,Da.tracks,i),FALSE);
+ deleted++;
+ }
- return C_TERMINATE;
+ UndoEnd(); //Stop accumulating
+ NoticeMessage(
+ _("Tracks Counts: %d converted %d unconvertible %d created %d deleted"),_("OK"),
+ NULL,converted,not_convertable,created,deleted);
- case C_REDRAW:
- if (trk) {
- DrawTrack(trk,&tempD,wDrawColorPreviewSelected);
- }
- return C_CONTINUE;
+ return C_TERMINATE;
- case C_CANCEL:
- return C_TERMINATE;
+ case C_REDRAW:
+ if (trk) {
+ DrawTrack(trk,&tempD,wDrawColorPreviewSelected);
+ }
+ return C_CONTINUE;
- case C_OK:
- return C_TERMINATE;
+ case C_CANCEL:
+ return C_TERMINATE;
- case C_CONFIRM:
- return C_CONTINUE;
+ case C_OK:
+ return C_TERMINATE;
- default:
- return C_CONTINUE;
- }
+ case C_CONFIRM:
+ return C_CONTINUE;
+
+ default:
+ return C_CONTINUE;
+ }
}
static STATUS_T CmdConvertFrom(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
static track_p trk;
- track_p trk1,trk2;
+ track_p trk1;
+// track_p trk2;
switch (action) {
- case wActionMove:
- if ((trk = OnTrack(&pos,FALSE,TRUE)) == NULL) return C_CONTINUE;
- if ((!(GetTrkType(trk) == T_CORNU)) ||
- (!(GetTrkType(trk) == T_BEZIER)))
- trk = NULL;
- return C_CONTINUE;
+ case wActionMove:
+ if ((trk = OnTrack(&pos,FALSE,TRUE)) == NULL) { return C_CONTINUE; }
+ if ((!(GetTrkType(trk) == T_CORNU)) ||
+ (!(GetTrkType(trk) == T_BEZIER))) {
+ trk = NULL;
+ }
+ return C_CONTINUE;
- case C_LCLICK:
- if ((trk = OnTrack(&pos,FALSE,TRUE))!=NULL) {
- SetTrkBits(trk,TB_SELECTED);
- selectedTrackCount = 1;
- trk = NULL;
- } else {
- wBeep();
- InfoMessage( _("Not on a Track") );
- trk = NULL;
- return C_CONTINUE;
- }
- /* no break */
- case C_START:
- if (selectedTrackCount==0) {
- InfoMessage( _("Select a Cornu or Bezier Track To Convert to Fixed") );
- return C_CONTINUE;
+ case C_LCLICK:
+ if ((trk = OnTrack(&pos,FALSE,TRUE))!=NULL) {
+ SetTrkBits(trk,TB_SELECTED);
+ selectedTrackCount = 1;
+ trk = NULL;
+ } else {
+ wBeep();
+ InfoMessage( _("Not on a Track") );
+ trk = NULL;
+ return C_CONTINUE;
+ }
+ /* no break */
+ case C_START:
+ if (selectedTrackCount==0) {
+ InfoMessage( _("Select a Cornu or Bezier Track To Convert to Fixed") );
+ return C_CONTINUE;
+ } else if (selectedTrackCount>1) {
+ if (NoticeMessage(_("Convert all Selected Tracks to Fixed Tracks?"), _("Yes"),
+ _("No"))<=0) {
+ SetAllTrackSelect(FALSE);
+ return C_TERMINATE;
}
- else if (selectedTrackCount>1) {
- if (NoticeMessage(_("Convert all Selected Tracks to Fixed Tracks?"), _("Yes"), _("No"))<=0) {
- SetAllTrackSelect(FALSE);
- return C_TERMINATE;
+ }
+// dynArr_t trackSegs_da;
+// DYNARR_RESET(trkSeg_t,trackSegs_da);
+ trk1 = NULL;
+// trk2 = NULL;
+ trk = NULL;
+ UndoStart( _("Convert Bezier and Cornu"),"Try to convert all selected tracks");
+ track_p tracks[2];
+ DYNARR_RESET(track_p,Da.tracks);
+ int converted=0, not_convertable = 0, deleted=0;
+// int created=0;
+ while ( TrackIterate( &trk1 ) ) {
+ if ( GetTrkSelected( trk1 ) && IsTrack( trk1 ) ) {
+ //Only Cornu or Bezier
+ tracks[0] = NULL, tracks[1] = NULL;
+ if (selectedTrackCount>0) { selectedTrackCount--; }
+ ClrTrkBits( trk1, TB_SELECTED ); //Done with this one
+ if (GetTrkType(trk1) == T_CORNU) {
+ GetTracksFromCornuTrack(trk1,tracks);
+ DYNARR_APPEND(track_p,Da.tracks,1);
+ DYNARR_LAST(track_p,Da.tracks) = trk1;
+ converted++;
+ } else if (GetTrkType(trk1) == T_BEZIER) {
+ GetTracksFromBezierTrack(trk1,tracks);
+ DYNARR_APPEND(track_p,Da.tracks,1);
+ DYNARR_LAST(track_p,Da.tracks) = trk1;
+ converted++;
+ } else {
+ not_convertable++;
+ continue;
}
- }
- dynArr_t trackSegs_da;
- DYNARR_RESET(trkSeg_t,trackSegs_da);
- trk1 = NULL;
- trk2 = NULL;
- trk = NULL;
- UndoStart( _("Convert Bezier and Cornu"),"Try to convert all selected tracks");
- track_p tracks[2];
- DYNARR_RESET(track_p,Da.tracks);
- int converted=0, not_convertable = 0, created=0, deleted=0;
- while ( TrackIterate( &trk1 ) ) {
- if ( GetTrkSelected( trk1 ) && IsTrack( trk1 ) ) {
- //Only Cornu or Bezier
- tracks[0] = NULL, tracks[1] = NULL;
- if (selectedTrackCount>0) selectedTrackCount--;
- ClrTrkBits( trk1, TB_SELECTED ); //Done with this one
- if (GetTrkType(trk1) == T_CORNU) {
- GetTracksFromCornuTrack(trk1,tracks);
- DYNARR_APPEND(track_p,Da.tracks,1);
- DYNARR_LAST(track_p,Da.tracks) = trk1;
- converted++;
- } else if (GetTrkType(trk1) == T_BEZIER) {
- GetTracksFromBezierTrack(trk1,tracks);
- DYNARR_APPEND(track_p,Da.tracks,1);
- DYNARR_LAST(track_p,Da.tracks) = trk1;
- converted++;
- } else {
- not_convertable++;
- continue;
- }
- for (int i=0;i<2;i++) {
- track_p trk2 = GetTrkEndTrk(trk1,i);
- if (trk2) {
- EPINX_T ep1 = GetEndPtConnectedToMe( trk2, trk1 );
- DisconnectTracks(trk2,ep1,trk1,i);
- pos = GetTrkEndPos(trk2,ep1);
- for (int j=0;j<2;j++) {
- EPINX_T ep2 = PickUnconnectedEndPointSilent( pos, tracks[j] );
- coOrd ep_pos;
- if (ep2<0) continue;
- ep_pos = GetTrkEndPos(tracks[j],ep2);
- if (connectDistance>=FindDistance(pos,ep_pos) &&
- connectAngle >= fabs(DifferenceBetweenAngles(GetTrkEndAngle(tracks[j],ep2),GetTrkEndAngle(trk2,ep1)+180))) {
- ConnectTracks(trk2,ep1,tracks[j],ep2);
- break;
- }
+ for (int i=0; i<2; i++) {
+ track_p trk2 = GetTrkEndTrk(trk1,i);
+ if (trk2) {
+ EPINX_T ep1 = GetEndPtConnectedToMe( trk2, trk1 );
+ DisconnectTracks(trk2,ep1,trk1,i);
+ pos = GetTrkEndPos(trk2,ep1);
+ for (int j=0; j<2; j++) {
+ EPINX_T ep2 = PickUnconnectedEndPointSilent( pos, tracks[j] );
+ coOrd ep_pos;
+ if (ep2<0) { continue; }
+ ep_pos = GetTrkEndPos(tracks[j],ep2);
+ if (connectDistance>=FindDistance(pos,ep_pos) &&
+ connectAngle >= fabs(DifferenceBetweenAngles(GetTrkEndAngle(tracks[j],ep2),
+ GetTrkEndAngle(trk2,ep1)+180))) {
+ ConnectTracks(trk2,ep1,tracks[j],ep2);
+ break;
}
}
}
}
}
- SetAllTrackSelect(FALSE);
- for (int i = 0; i<Da.tracks.cnt;i++) {
- DeleteTrack(DYNARR_N(track_p,Da.tracks,i),FALSE);
- deleted++;
- }
- UndoEnd();
- NoticeMessage(_("Tracks Counts: %d converted %d unconvertible %d deleted"),_("OK"),NULL,converted,not_convertable,deleted);
- return C_TERMINATE;
+ }
+ SetAllTrackSelect(FALSE);
+ for (int i = 0; i<Da.tracks.cnt; i++) {
+ DeleteTrack(DYNARR_N(track_p,Da.tracks,i),FALSE);
+ deleted++;
+ }
+ UndoEnd();
+ NoticeMessage(_("Tracks Counts: %d converted %d unconvertible %d deleted"),
+ _("OK"),NULL,converted,not_convertable,deleted);
+ return C_TERMINATE;
- case C_REDRAW:
- if (trk) {
- DrawTrack(trk,&tempD,wDrawColorPreviewSelected);
- }
- return C_CONTINUE;
+ case C_REDRAW:
+ if (trk) {
+ DrawTrack(trk,&tempD,wDrawColorPreviewSelected);
+ }
+ return C_CONTINUE;
- case C_CANCEL:
- return C_TERMINATE;
+ case C_CANCEL:
+ return C_TERMINATE;
- case C_OK:
- return C_TERMINATE;
+ case C_OK:
+ return C_TERMINATE;
- case C_CONFIRM:
- return C_CONTINUE;
+ case C_CONFIRM:
+ return C_CONTINUE;
- default:
- return C_CONTINUE;
- }
+ default:
+ return C_CONTINUE;
+ }
}
-#include "bitmaps/convert-to.xpm"
-#include "bitmaps/convert-from.xpm"
+#include "bitmaps/convert-to.xpm3"
+#include "bitmaps/convert-from.xpm3"
EXPORT void InitCmdCornu( wMenu_p menu )
-{
+{
ButtonGroupBegin( _("Convert"), "cmdConvertSetCmd", _("Convert") );
- AddMenuButton( menu, CmdConvertTo, "cmdConvertTo", _("Convert To Cornu"), wIconCreatePixMap(convert_to_xpm[iconSize]), LEVEL0_50, IC_STICKY|IC_LCLICK|IC_POPUP3|IC_WANT_MOVE,ACCL_CONVERTTO, NULL );
- AddMenuButton( menu, CmdConvertFrom, "cmdConvertFrom", _("Convert From Cornu"), wIconCreatePixMap(convert_from_xpm[iconSize]), LEVEL0_50, IC_STICKY|IC_LCLICK|IC_POPUP3|IC_WANT_MOVE,ACCL_CONVERTFR, NULL );
- cornuHotBarCmdInx = AddMenuButton(menu, cmdCornuCreate, "cmdCornuCreate", "", NULL, LEVEL0_50, IC_STICKY|IC_POPUP3|IC_WANT_MOVE, 0, NULL);
+ AddMenuButton( menu, CmdConvertTo, "cmdConvertTo", _("Convert To Cornu"),
+ wIconCreatePixMap(convert_to_xpm3[iconSize]), LEVEL0_50,
+ IC_STICKY|IC_LCLICK|IC_POPUP3|IC_WANT_MOVE,ACCL_CONVERTTO, NULL );
+ AddMenuButton( menu, CmdConvertFrom, "cmdConvertFrom", _("Convert From Cornu"),
+ wIconCreatePixMap(convert_from_xpm3[iconSize]), LEVEL0_50,
+ IC_STICKY|IC_LCLICK|IC_POPUP3|IC_WANT_MOVE,ACCL_CONVERTFR, NULL );
+ cornuHotBarCmdInx = AddMenuButton(menu, cmdCornuCreate, "cmdCornuCreate", "",
+ NULL, LEVEL0_50, IC_STICKY|IC_POPUP3|IC_WANT_MOVE, 0, NULL);
ButtonGroupEnd();
ParamCreateControls( &cornuModPG, cornuModDlgUpdate) ;
}
diff --git a/app/bin/ccornu.h b/app/bin/ccornu.h
index 29b6171..ff3810f 100644
--- a/app/bin/ccornu.h
+++ b/app/bin/ccornu.h
@@ -20,14 +20,17 @@ typedef void (*cornuMessageProc)( const char *, ... );
#endif /* APP_BIN_CCORNU_H_ */
STATUS_T CmdCornu( wAction_t action, coOrd pos );
-BOOL_T CallCornu0(coOrd pos[2], coOrd center[2], ANGLE_T angle[2], DIST_T radius[2], dynArr_t * array_p, BOOL_T spots);
+BOOL_T CallCornu0(coOrd pos[2], coOrd center[2], ANGLE_T angle[2],
+ DIST_T radius[2], dynArr_t * array_p, BOOL_T spots);
DIST_T CornuMinRadius(coOrd pos[4],dynArr_t segs);
-DIST_T CornuMaxRateofChangeofCurvature(coOrd pos[4],dynArr_t segs,DIST_T * last_c);
+DIST_T CornuMaxRateofChangeofCurvature(coOrd pos[4],dynArr_t segs,
+ DIST_T * last_c);
DIST_T CornuLength(coOrd pos[4],dynArr_t segs);
DIST_T CornuOffsetLength(dynArr_t segs, double offset);
DIST_T CornuTotalWindingArc(coOrd pos[4],dynArr_t segs);
-STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG);
+STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos,
+ DIST_T trackG);
void InitCmdCornu( wMenu_p menu );
diff --git a/app/bin/ccurve.c b/app/bin/ccurve.c
index 2308bd1..373a975 100644
--- a/app/bin/ccurve.c
+++ b/app/bin/ccurve.c
@@ -17,11 +17,11 @@
*
* 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 "ccurve.h"
-
+
#include "cjoin.h"
#include "cstraigh.h"
#include "cundo.h"
@@ -43,19 +43,19 @@
typedef enum createState_e {NOCURVE,FIRSTEND_DEF,SECONDEND_DEF,CENTER_DEF} createState_e;
static struct {
- STATE_T state;
- createState_e create_state;
- coOrd pos0;
- coOrd pos1;
- curveData_t curveData;
- track_p trk;
- EPINX_T ep;
- BOOL_T down;
- BOOL_T lock0;
- coOrd middle;
- coOrd end0;
- coOrd end1;
- } Da;
+ STATE_T state;
+ createState_e create_state;
+ coOrd pos0;
+ coOrd pos1;
+ curveData_t curveData;
+ track_p trk;
+ EPINX_T ep;
+ BOOL_T down;
+ BOOL_T lock0;
+ coOrd middle;
+ coOrd end0;
+ coOrd end1;
+} Da;
static long curveMode;
@@ -65,58 +65,60 @@ static dynArr_t anchors_da;
EXPORT int DrawArrowHeads(
- trkSeg_p sp,
- coOrd pos,
- ANGLE_T angle,
- BOOL_T bidirectional,
- wDrawColor color )
+ trkSeg_p sp,
+ coOrd pos,
+ ANGLE_T angle,
+ BOOL_T bidirectional,
+ wDrawColor color )
{
- coOrd p0, p1;
- DIST_T d, w;
- int inx;
- d = mainD.scale*0.25;
- w = mainD.scale/mainD.dpi*2;
- for ( inx=0; inx<5; inx++ ) {
- sp[inx].type = SEG_STRLIN;
- sp[inx].width = w;
- sp[inx].color = color;
- }
- Translate( &p0, pos, angle, d );
- Translate( &p1, pos, angle+180, bidirectional?d:(d/2.0) );
- sp[0].u.l.pos[0] = p0;
- sp[0].u.l.pos[1] = p1;
- sp[1].u.l.pos[0] = p0;
- Translate( &sp[1].u.l.pos[1], p0, angle+135, d/2.0 );
- sp[2].u.l.pos[0] = p0;
- Translate( &sp[2].u.l.pos[1], p0, angle-135, d/2.0 );
- if (bidirectional) {
- sp[3].u.l.pos[0] = p1;
- Translate( &sp[3].u.l.pos[1], p1, angle-45, d/2.0 );
- sp[4].u.l.pos[0] = p1;
- Translate( &sp[4].u.l.pos[1], p1, angle+45, d/2.0 );
- } else {
- sp[3].u.l.pos[0] = p1;
- sp[3].u.l.pos[1] = p1;
- sp[4].u.l.pos[0] = p1;
- sp[4].u.l.pos[1] = p1;
- }
- return 5;
+ coOrd p0, p1;
+ DIST_T d, w;
+ int inx;
+ d = mainD.scale*0.25;
+ w = mainD.scale/mainD.dpi*2;
+ for ( inx=0; inx<5; inx++ ) {
+ sp[inx].type = SEG_STRLIN;
+ sp[inx].lineWidth = w;
+ sp[inx].color = color;
+ }
+ Translate( &p0, pos, angle, d );
+ Translate( &p1, pos, angle+180, bidirectional?d:(d/2.0) );
+ sp[0].u.l.pos[0] = p0;
+ sp[0].u.l.pos[1] = p1;
+ sp[1].u.l.pos[0] = p0;
+ Translate( &sp[1].u.l.pos[1], p0, angle+135, d/2.0 );
+ sp[2].u.l.pos[0] = p0;
+ Translate( &sp[2].u.l.pos[1], p0, angle-135, d/2.0 );
+ if (bidirectional) {
+ sp[3].u.l.pos[0] = p1;
+ Translate( &sp[3].u.l.pos[1], p1, angle-45, d/2.0 );
+ sp[4].u.l.pos[0] = p1;
+ Translate( &sp[4].u.l.pos[1], p1, angle+45, d/2.0 );
+ } else {
+ sp[3].u.l.pos[0] = p1;
+ sp[3].u.l.pos[1] = p1;
+ sp[4].u.l.pos[0] = p1;
+ sp[4].u.l.pos[1] = p1;
+ }
+ return 5;
}
EXPORT int DrawArrowHeadsArray(
- dynArr_t *anchor_array,
- coOrd pos,
- ANGLE_T angle,
- BOOL_T bidirectional,
- wDrawColor color )
+ dynArr_t *anchor_array,
+ coOrd pos,
+ ANGLE_T angle,
+ BOOL_T bidirectional,
+ wDrawColor color )
{
int i = (*anchor_array).cnt;
DYNARR_SET(trkSeg_t,*anchor_array,i+5)
- return DrawArrowHeads(&DYNARR_N(trkSeg_t,*anchor_array,i),pos,angle,bidirectional,color);
+ return DrawArrowHeads(&DYNARR_N(trkSeg_t,*anchor_array,i),pos,angle,
+ bidirectional,color);
}
-static void CreateEndAnchor(coOrd p, dynArr_t * anchor_array, wBool_t lock) {
+static void CreateEndAnchor(coOrd p, dynArr_t * anchor_array, wBool_t lock)
+{
DIST_T d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,*anchor_array,1);
@@ -127,48 +129,50 @@ static void CreateEndAnchor(coOrd p, dynArr_t * anchor_array, wBool_t lock) {
array_anchor(i).u.c.radius = d/2;
array_anchor(i).u.c.a0 = 0.0;
array_anchor(i).u.c.a1 = 360.0;
- array_anchor(i).width = 0;
+ array_anchor(i).lineWidth = 0;
}
EXPORT STATUS_T CreateCurve(
- wAction_t action,
- coOrd pos,
- BOOL_T track,
- wDrawColor color,
- DIST_T width,
- long mode,
- dynArr_t * anchor_array,
- curveMessageProc message )
+ wAction_t action,
+ coOrd pos,
+ BOOL_T track,
+ wDrawColor color,
+ LWIDTH_T width,
+ long mode,
+ dynArr_t * anchor_array,
+ curveMessageProc message )
{
track_p t;
DIST_T d;
ANGLE_T a, angle1, angle2;
- static coOrd pos0, p;
+ static coOrd p;
+// static coOrd pos0;
int inx;
switch ( action ) {
case C_START:
DYNARR_RESET(trkSeg_t,*anchor_array);
- DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
Da.create_state = NOCURVE;
- tempSegs_da.cnt = 0;
Da.down = FALSE; //Not got a valid start yet
Da.pos0 = zero;
Da.pos1 = zero;
switch ( curveMode ) {
case crvCmdFromEP1:
- if (track)
+ if (track) {
message(_("Drag from endpoint in direction of curve - lock to track open endpoint") );
- else
+ } else {
message (_("Drag from endpoint in direction of curve") );
+ }
break;
case crvCmdFromTangent:
- if (track)
+ if (track) {
message(_("Drag from endpoint to center - lock to track open endpoint") );
- else
+ } else {
message(_("Drag from endpoint to center") );
+ }
break;
case crvCmdFromCenter:
message(_("Drag from center to endpoint") );
@@ -179,168 +183,178 @@ EXPORT STATUS_T CreateCurve(
}
return C_CONTINUE;
case C_DOWN:
- DYNARR_RESET(trkSeg_t, *anchor_array);
- for ( inx=0; inx<8; inx++ ) {
- tempSegs(inx).color = wDrawColorBlack;
- tempSegs(inx).width = 0;
- }
- tempSegs_da.cnt = 0;
- p = pos;
- BOOL_T found = FALSE;
- Da.trk = NULL;
- if (track) {
- if ((mode == crvCmdFromEP1 || mode == crvCmdFromTangent || (mode == crvCmdFromChord)) &&
- ((MyGetKeyState() & WKEY_ALT) == 0 ) == magneticSnap) {
- if ((t = OnTrack(&p, FALSE, TRUE)) != NULL) {
- EPINX_T ep = PickUnconnectedEndPointSilent(p, t);
- if (ep != -1) {
- if (GetTrkScale(t) != (char)GetLayoutCurScale()) {
- wBeep();
- InfoMessage(_("Track is different gauge"));
- return C_CONTINUE;
- }
- Da.trk = t;
- Da.ep = ep;
- pos = GetTrkEndPos(t, ep);
- found = TRUE;
+ DYNARR_RESET(trkSeg_t, *anchor_array);
+ DYNARR_SET( trkSeg_t, tempSegs_da, 8 );
+ for ( inx=0; inx<8; inx++ ) {
+ tempSegs(inx).color = wDrawColorBlack;
+ tempSegs(inx).lineWidth = width;
+ }
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ p = pos;
+ BOOL_T found = FALSE;
+ Da.trk = NULL;
+ if (track) {
+ if ((mode == crvCmdFromEP1 || mode == crvCmdFromTangent
+ || (mode == crvCmdFromChord)) &&
+ ((MyGetKeyState() & WKEY_ALT) == 0 ) == magneticSnap) {
+ if ((t = OnTrack(&p, FALSE, TRUE)) != NULL) {
+ EPINX_T ep = PickUnconnectedEndPointSilent(p, t);
+ if (ep != -1) {
+ if (GetTrkScale(t) != (char)GetLayoutCurScale()) {
+ wBeep();
+ InfoMessage(_("Track is different gauge"));
+ return C_CONTINUE;
}
+ Da.trk = t;
+ Da.ep = ep;
+ pos = GetTrkEndPos(t, ep);
+ found = TRUE;
}
}
- } else {
- if (((t = OnTrack(&p, FALSE, FALSE)) != NULL) && IsClose(FindDistance(p,pos))) {
- if (!IsTrack(t)) {
- pos = p;
- found = TRUE;
- }
- }
- }
- Da.down = TRUE;
- if (!found && !track) SnapPos( &pos );
- if (mode == crvCmdFromCenter) SnapPos( &pos );
- Da.lock0 = found;
-
- if (Da.create_state == NOCURVE)
- Da.pos0 = pos;
- else
- Da.pos1 = pos;
+ }
+ } else {
+ if (((t = OnTrack(&p, FALSE, FALSE)) != NULL) && IsClose(FindDistance(p,pos))) {
+ if (!IsTrack(t)) {
+ pos = p;
+ found = TRUE;
+ }
+ }
+ }
+ Da.down = TRUE;
+ if (!found && !track) { SnapPos( &pos ); }
+ if (mode == crvCmdFromCenter) { SnapPos( &pos ); }
+ Da.lock0 = found;
- tempSegs_da.cnt = 1;
- switch (mode) {
- case crvCmdFromEP1:
- tempSegs(0).type = (track?SEG_STRTRK:SEG_STRLIN);
- tempSegs(0).color = color;
- tempSegs(0).width = width;
- Da.create_state = FIRSTEND_DEF;
- Da.end0 = pos;
- CreateEndAnchor(pos,anchor_array,found);
- if (Da.trk && !(MyGetKeyState() & WKEY_SHIFT)) message(_("End locked: Drag out curve start"));
- else if (Da.trk) message(_("End Position locked: Drag out curve start with Shift"));
- else message(_("Drag along curve start") );
- break;
- case crvCmdFromTangent:
- Da.create_state = FIRSTEND_DEF;
- tempSegs(0).type = SEG_STRLIN;
- tempSegs(0).color = color;
- Da.create_state = CENTER_DEF;
- CreateEndAnchor(pos,anchor_array,found);
- if (Da.trk && !(MyGetKeyState() & WKEY_SHIFT)) message(_("End locked: Drag out curve center"));
- else if (Da.trk) message(_("End Position locked: Drag out curve start with Shift"));
- else message(_("Drag out curve center") );
- break;
- case crvCmdFromCenter:
- tempSegs(0).type = SEG_STRLIN;
- tempSegs(0).color = color;
- Da.create_state = CENTER_DEF;
- CreateEndAnchor(pos,anchor_array,FALSE);
- message(_("Drag out from center to endpoint"));
- break;
- case crvCmdFromChord:
- tempSegs(0).type = (track?SEG_STRTRK:SEG_STRLIN);
- tempSegs(0).color = color;
- tempSegs(0).width = width;
- CreateEndAnchor(pos,anchor_array,FALSE);
- Da.create_state = FIRSTEND_DEF;
- if (Da.trk && !(MyGetKeyState() & WKEY_SHIFT))
- message( _("End locked: Drag to other end of chord") );
- else if (Da.trk) message(_("End Position locked: Drag out curve start with Shift"));
- else
- message( _("Drag to other end of chord") );
- break;
+ if (Da.create_state == NOCURVE) {
+ Da.pos0 = pos;
+ } else {
+ Da.pos1 = pos;
+ }
+
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ switch (mode) {
+ case crvCmdFromEP1:
+ tempSegs(0).type = (track?SEG_STRTRK:SEG_STRLIN);
+ tempSegs(0).color = color;
+ tempSegs(0).lineWidth = width;
+ Da.create_state = FIRSTEND_DEF;
+ Da.end0 = pos;
+ CreateEndAnchor(pos,anchor_array,found);
+ if (Da.trk && !(MyGetKeyState() & WKEY_SHIFT)) { message(_("End locked: Drag out curve start")); }
+ else if (Da.trk) { message(_("End Position locked: Drag out curve start with Shift")); }
+ else { message(_("Drag along curve start") ); }
+ break;
+ case crvCmdFromTangent:
+ Da.create_state = FIRSTEND_DEF;
+ tempSegs(0).type = SEG_STRLIN;
+ tempSegs(0).color = color;
+ Da.create_state = CENTER_DEF;
+ CreateEndAnchor(pos,anchor_array,found);
+ if (Da.trk && !(MyGetKeyState() & WKEY_SHIFT)) { message(_("End locked: Drag out curve center")); }
+ else if (Da.trk) { message(_("End Position locked: Drag out curve start with Shift")); }
+ else { message(_("Drag out curve center") ); }
+ break;
+ case crvCmdFromCenter:
+ tempSegs(0).type = SEG_STRLIN;
+ tempSegs(0).color = color;
+ Da.create_state = CENTER_DEF;
+ CreateEndAnchor(pos,anchor_array,FALSE);
+ message(_("Drag out from center to endpoint"));
+ break;
+ case crvCmdFromChord:
+ tempSegs(0).type = (track?SEG_STRTRK:SEG_STRLIN);
+ tempSegs(0).color = color;
+ tempSegs(0).lineWidth = width;
+ CreateEndAnchor(pos,anchor_array,FALSE);
+ Da.create_state = FIRSTEND_DEF;
+ if (Da.trk && !(MyGetKeyState() & WKEY_SHIFT)) {
+ message( _("End locked: Drag to other end of chord") );
+ } else if (Da.trk) { message(_("End Position locked: Drag out curve start with Shift")); }
+ else {
+ message( _("Drag to other end of chord") );
}
- tempSegs(0).u.l.pos[0] = tempSegs(0).u.l.pos[1] = pos;
+ break;
+ }
+ tempSegs(0).u.l.pos[0] = tempSegs(0).u.l.pos[1] = pos;
return C_CONTINUE;
case C_MOVE:
DYNARR_RESET(trkSeg_t,*anchor_array);
DYNARR_APPEND(trkSeg_t,*anchor_array,1);
- if (!Da.down) return C_CONTINUE;
- if (Da.trk && track && !(MyGetKeyState() & WKEY_SHIFT)) { //Shift inhibits direction lock
+ if (!Da.down) { return C_CONTINUE; }
+ if (Da.trk && track
+ && !(MyGetKeyState() & WKEY_SHIFT)) { //Shift inhibits direction lock
angle1 = NormalizeAngle(GetTrkEndAngle(Da.trk, Da.ep));
angle2 = NormalizeAngle(FindAngle(pos, Da.pos0)-angle1);
if (mode ==crvCmdFromEP1 ) {
- if (angle2 > 90.0 && angle2 < 270.0)
- Translate( &pos, Da.pos0, angle1, -FindDistance( Da.pos0, pos )*cos(D2R(angle2)) );
- else pos = Da.pos0;
+ if (angle2 > 90.0 && angle2 < 270.0) {
+ Translate( &pos, Da.pos0, angle1, -FindDistance( Da.pos0,
+ pos )*cos(D2R(angle2)) );
+ } else { pos = Da.pos0; }
} else if ( mode == crvCmdFromChord ) {
DIST_T dp = -FindDistance(Da.pos0, pos)*sin(D2R(angle2));
- if (DifferenceBetweenAngles(FindAngle(Da.pos0,pos),angle1)>0)
+ if (DifferenceBetweenAngles(FindAngle(Da.pos0,pos),angle1)>0) {
Translate( &pos, Da.pos0, angle1+90, dp );
- else
+ } else {
Translate( &pos, Da.pos0, angle1-90, -dp );
+ }
} else if (mode == crvCmdFromCenter) {
DIST_T dp = -FindDistance(Da.pos0, pos)*sin(D2R(angle2));
- if (angle2 > 90 && angle2 < 270.0)
+ if (angle2 > 90 && angle2 < 270.0) {
Translate( &pos, Da.pos0, angle1+90.0, dp );
- else
+ } else {
Translate( &pos, Da.pos0, angle1-90.0, dp );
+ }
} else if (mode == crvCmdFromTangent) {
DIST_T dp = FindDistance(Da.pos0, pos)*sin(D2R(angle2));
Translate( &pos, Da.pos0, angle1-90.0, dp );
}
- } else if (track) SnapPos(&pos);
- tempSegs_da.cnt =1;
+ } else if (track) { SnapPos(&pos); }
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
if (Da.trk && mode == crvCmdFromChord) {
tempSegs(0).type = SEG_CRVTRK;
tempSegs(0).u.c.center.x = (pos.x+Da.pos0.x)/2.0;
tempSegs(0).u.c.center.y = (pos.y+Da.pos0.y)/2.0;
tempSegs(0).u.c.radius = FindDistance(pos,Da.pos0)/2;
ANGLE_T a0 = FindAngle(tempSegs(0).u.c.center,Da.pos0);
- ANGLE_T a1 = FindAngle(tempSegs(0).u.c.center,pos);
- if (NormalizeAngle(a0+90-GetTrkEndAngle(Da.trk,Da.ep))<90) {
- tempSegs(0).u.c.a0 = a0;
- } else {
- tempSegs(0).u.c.a0 = a1;
+ if ( NormalizeAngle( GetTrkEndAngle(Da.trk,Da.ep) - a0 ) > 180.0 ) {
+ a0 = NormalizeAngle( a0 + 180.0 );
}
+ tempSegs(0).u.c.a0 = a0;
tempSegs(0).u.c.a1 = 180.0;
- } else tempSegs(0).u.l.pos[1] = pos;
+ } else { tempSegs(0).u.l.pos[1] = pos; }
Da.pos1 = pos;
d = FindDistance( Da.pos0, Da.pos1 );
a = FindAngle( Da.pos0, Da.pos1 );
switch ( mode ) {
case crvCmdFromEP1:
- if (Da.trk) message( _("Start Locked: Drag out curve start - Angle=%0.3f"), PutAngle(a));
- else message( _("Drag out curve start - Angle=%0.3f"), PutAngle(a) );
+ if (Da.trk) { message( _("Start Locked: Drag out curve start - Angle=%0.3f"), PutAngle(a)); }
+ else { message( _("Drag out curve start - Angle=%0.3f"), PutAngle(a) ); }
CreateEndAnchor(Da.pos0,anchor_array,Da.lock0);
- DrawArrowHeadsArray( anchor_array, pos, FindAngle(Da.pos0,Da.pos1)+90, TRUE, wDrawColorBlue );
- tempSegs_da.cnt = 1;
+ DrawArrowHeadsArray( anchor_array, pos, FindAngle(Da.pos0,Da.pos1)+90, TRUE,
+ wDrawColorBlue );
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
break;
case crvCmdFromTangent:
- if (Da.trk) message( _("Tangent locked: Drag out center - Radius=%s Angle=%0.3f"), FormatDistance(d), PutAngle(a) );
- else message( _("Drag out center - Radius=%s Angle=%0.3f"), FormatDistance(d), PutAngle(a) );
+ if (Da.trk) { message( _("Tangent locked: Drag out center - Radius=%s Angle=%0.3f"), FormatDistance(d), PutAngle(a) ); }
+ else { message( _("Drag out center - Radius=%s Angle=%0.3f"), FormatDistance(d), PutAngle(a) ); }
CreateEndAnchor(Da.pos1,anchor_array,TRUE);
- DrawArrowHeadsArray( anchor_array, Da.pos0, FindAngle(Da.pos0,Da.pos1)+90, TRUE, wDrawColorBlue );
- tempSegs_da.cnt = 1;
+ DrawArrowHeadsArray( anchor_array, Da.pos0, FindAngle(Da.pos0,Da.pos1)+90, TRUE,
+ wDrawColorBlue );
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
break;
case crvCmdFromCenter:
- message( _("Drag to Edge: Radius=%s Angle=%0.3f"), FormatDistance(d), PutAngle(a) );
+ message( _("Drag to Edge: Radius=%s Angle=%0.3f"), FormatDistance(d),
+ PutAngle(a) );
CreateEndAnchor(Da.pos0,anchor_array,Da.lock0);
- DrawArrowHeadsArray( anchor_array, Da.pos1, FindAngle(Da.pos1,Da.pos0)+90, TRUE, wDrawColorBlue );
- tempSegs_da.cnt = 1;
+ DrawArrowHeadsArray( anchor_array, Da.pos1, FindAngle(Da.pos1,Da.pos0)+90, TRUE,
+ wDrawColorBlue );
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
break;
case crvCmdFromChord:
- if (Da.trk) message( _("Start locked: Drag out chord length=%s angle=%0.3f"), FormatDistance(d), PutAngle(a) );
- else message( _("Drag out chord length=%s angle=%0.3f"), FormatDistance(d), PutAngle(a) );
+ if (Da.trk) { message( _("Start locked: Drag out chord length=%s angle=%0.3f"), FormatDistance(d), PutAngle(a) ); }
+ else { message( _("Drag out chord length=%s angle=%0.3f"), FormatDistance(d), PutAngle(a) ); }
Da.middle.x = (Da.pos1.x+Da.pos0.x)/2.0;
Da.middle.y = (Da.pos1.y+Da.pos0.y)/2.0;
if (track && Da.trk) {
@@ -349,20 +363,23 @@ EXPORT STATUS_T CreateCurve(
}
CreateEndAnchor(Da.pos0,anchor_array,TRUE);
CreateEndAnchor(Da.pos1,anchor_array,FALSE);
- if (!track || !Da.trk)
- DrawArrowHeadsArray( anchor_array, Da.middle, FindAngle(Da.pos0,Da.pos1)+90, TRUE, wDrawColorBlue );
+ if (!track || !Da.trk) {
+ DrawArrowHeadsArray( anchor_array, Da.middle, FindAngle(Da.pos0,Da.pos1)+90,
+ TRUE, wDrawColorBlue );
+ }
break;
}
return C_CONTINUE;
case C_UP:
/* Note - no anchor reset - assumes run after Down/Move */
- if (!Da.down) return C_CONTINUE;
+ if (!Da.down) { return C_CONTINUE; }
if (Da.trk) {
angle1 = NormalizeAngle(GetTrkEndAngle(Da.trk, Da.ep));
angle2 = NormalizeAngle(FindAngle(pos, Da.pos0)-angle1);
if (mode == crvCmdFromEP1) {
- if (angle2 > 90.0 && angle2 < 270.0) {
- Translate( &pos, Da.pos0, angle1, -FindDistance( Da.pos0, pos )*cos(D2R(angle2)) );
+ if (angle2 > 90.0 && angle2 < 270.0) {
+ Translate( &pos, Da.pos0, angle1, -FindDistance( Da.pos0,
+ pos )*cos(D2R(angle2)) );
Da.pos1 = pos;
} else {
ErrorMessage( MSG_TRK_TOO_SHORT, "Curved ", PutDim(0.0) );
@@ -374,23 +391,25 @@ EXPORT STATUS_T CreateCurve(
Da.pos1 = pos;
} else {
DIST_T dp = -FindDistance(Da.pos0, pos)*sin(D2R(angle2));
- if (angle2 > 180.0)
+ if (angle2 > 180.0) {
Translate( &pos, Da.pos0, angle1+90.0, dp );
- else
+ } else {
Translate( &pos, Da.pos0, angle1-90.0, dp );
+ }
Da.pos1 = pos;
}
if (FindDistance(Da.pos0,Da.pos1)<minLength) {
- ErrorMessage( MSG_TRK_TOO_SHORT, "Curved ", PutDim(FindDistance(Da.pos0,Da.pos1)) );
+ ErrorMessage( MSG_TRK_TOO_SHORT, "Curved ", PutDim(FindDistance(Da.pos0,
+ Da.pos1)) );
return C_TERMINATE;
}
}
switch (mode) {
- case crvCmdFromEP1:
+ case crvCmdFromEP1:
case crvCmdFromTangent:
case crvCmdFromCenter:
case crvCmdFromChord:
- for (int i=0;i<(*anchor_array).cnt;i++) {
+ for (int i=0; i<(*anchor_array).cnt; i++) {
DYNARR_N(trkSeg_t,*anchor_array,i).color = drawColorRed;
}
break;
@@ -434,7 +453,7 @@ static STATUS_T CmdCurve( wAction_t action, coOrd pos )
curveMode = VP2L(commandContext);
Da.state = -1;
Da.pos0 = pos;
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
segCnt = 0;
STATUS_T rcode;
DYNARR_RESET(trkSeg_t,anchors_da);
@@ -442,16 +461,18 @@ static STATUS_T CmdCurve( wAction_t action, coOrd pos )
ParamCreateControls(&curvePG, NULL);
}
SetAllTrackSelect(FALSE);
- return CreateCurve( action, pos, TRUE, wDrawColorBlack, 0, curveMode, &anchors_da, InfoMessage );
+ return CreateCurve( action, pos, TRUE, wDrawColorBlack, 0, curveMode,
+ &anchors_da, InfoMessage );
case C_DOWN:
if (Da.state == -1) {
- if (lock) pos = movePos;
+ if (lock) { pos = movePos; }
Da.pos0 = Da.pos1 = pos;
Da.state = 0;
- rcode = CreateCurve( action, pos, TRUE, wDrawColorBlack, 0, curveMode, &anchors_da, InfoMessage );
+ rcode = CreateCurve( action, pos, TRUE, wDrawColorBlack, 0, curveMode,
+ &anchors_da, InfoMessage );
segCnt = tempSegs_da.cnt ;
- if (!Da.down) Da.state = -1;
+ if (!Da.down) { Da.state = -1; }
return rcode;
//Da.pos0 = pos;
}
@@ -462,7 +483,7 @@ static STATUS_T CmdCurve( wAction_t action, coOrd pos )
}
infoSubst = FALSE;
//This is where the user could adjust - if we allow that?
- tempSegs_da.cnt = segCnt;
+ DYNARR_SET( trkSeg_t, tempSegs_da, segCnt );
return C_CONTINUE;
@@ -492,78 +513,89 @@ static STATUS_T CmdCurve( wAction_t action, coOrd pos )
return C_CONTINUE;
case C_MOVE:
- if (Da.state<0) return C_CONTINUE;
+ if (Da.state<0) { return C_CONTINUE; }
if ( Da.state == 0 ) {
- Da.pos1 = pos;
- rc = CreateCurve( action, pos, TRUE, wDrawColorBlack, 0, curveMode, &anchors_da, InfoMessage );
+ Da.pos1 = pos;
+ rc = CreateCurve( action, pos, TRUE, wDrawColorBlack, 0, curveMode, &anchors_da,
+ InfoMessage );
segCnt = tempSegs_da.cnt ;
} else {
DYNARR_RESET(trkSeg_t,anchors_da);
// SnapPos( &pos );
- tempSegs_da.cnt = segCnt;
- if (Da.trk) PlotCurve( curveMode, Da.pos0, Da.pos1, pos, &Da.curveData, FALSE, desired_radius );
- else PlotCurve( curveMode, Da.pos0, Da.pos1, pos, &Da.curveData, TRUE, desired_radius );
+ DYNARR_SET( trkSeg_t, tempSegs_da, segCnt );
+ if (Da.trk) { PlotCurve( curveMode, Da.pos0, Da.pos1, pos, &Da.curveData, FALSE, desired_radius ); }
+ else { PlotCurve( curveMode, Da.pos0, Da.pos1, pos, &Da.curveData, TRUE, desired_radius ); }
if (Da.curveData.type == curveTypeStraight) {
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).type = SEG_STRTRK;
tempSegs(0).u.l.pos[0] = Da.pos0;
tempSegs(0).u.l.pos[1] = Da.curveData.pos1;
- tempSegs_da.cnt = 1;
segCnt = 1;
InfoMessage( _("Straight Track: Length=%s Angle=%0.3f"),
- FormatDistance(FindDistance( Da.pos0, Da.curveData.pos1 )),
- PutAngle(FindAngle( Da.pos0, Da.curveData.pos1 )) );
- DrawArrowHeadsArray(&anchors_da,Da.curveData.pos1,FindAngle(Da.pos0, Da.curveData.pos1)+90,TRUE,wDrawColorRed);
+ FormatDistance(FindDistance( Da.pos0, Da.curveData.pos1 )),
+ PutAngle(FindAngle( Da.pos0, Da.curveData.pos1 )) );
+ DrawArrowHeadsArray(&anchors_da,Da.curveData.pos1,FindAngle(Da.pos0,
+ Da.curveData.pos1)+90,TRUE,wDrawColorRed);
} else if (Da.curveData.type == curveTypeNone) {
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
segCnt = 0;
InfoMessage( _("Back") );
} else if (Da.curveData.type == curveTypeCurve) {
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).type = SEG_CRVTRK;
tempSegs(0).u.c.center = Da.curveData.curvePos;
tempSegs(0).u.c.radius = Da.curveData.curveRadius;
tempSegs(0).u.c.a0 = Da.curveData.a0;
tempSegs(0).u.c.a1 = Da.curveData.a1;
- tempSegs_da.cnt = 1;
segCnt = 1;
d = D2R(Da.curveData.a1);
- if (d < 0.0)
+ if (d < 0.0) {
d = 2*M_PI+d;
+ }
if ( d*Da.curveData.curveRadius > mapD.size.x+mapD.size.y ) {
ErrorMessage( MSG_CURVE_TOO_LARGE );
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
Da.curveData.type = curveTypeNone;
return C_CONTINUE;
}
InfoMessage( _("Curved Track: Radius=%s Angle=%0.3f Length=%s"),
- FormatDistance(Da.curveData.curveRadius), Da.curveData.a1,
- FormatDistance(Da.curveData.curveRadius*d) );
+ FormatDistance(Da.curveData.curveRadius), Da.curveData.a1,
+ FormatDistance(Da.curveData.curveRadius*d) );
coOrd pos1;
- Translate(&pos1,Da.curveData.curvePos,Da.curveData.a0+Da.curveData.a1,Da.curveData.curveRadius);
- if (curveMode == crvCmdFromEP1 || curveMode == crvCmdFromChord)
- DrawArrowHeadsArray(&anchors_da,pos,FindAngle(Da.curveData.curvePos,pos),TRUE,wDrawColorRed);
- else if (curveMode == crvCmdFromTangent || curveMode == crvCmdFromCenter) {
- if (Da.curveData.curveRadius == desired_radius)
+ Translate(&pos1,Da.curveData.curvePos,Da.curveData.a0+Da.curveData.a1,
+ Da.curveData.curveRadius);
+ if (curveMode == crvCmdFromEP1 || curveMode == crvCmdFromChord) {
+ DrawArrowHeadsArray(&anchors_da,pos,FindAngle(Da.curveData.curvePos,pos),TRUE,
+ wDrawColorRed);
+ } else if (curveMode == crvCmdFromTangent || curveMode == crvCmdFromCenter) {
+ if (Da.curveData.curveRadius == desired_radius) {
CreateEndAnchor(Da.curveData.pos2,&anchors_da,TRUE);
- else
+ } else {
CreateEndAnchor(Da.curveData.pos2,&anchors_da,FALSE);
- DrawArrowHeadsArray(&anchors_da,Da.curveData.pos2,FindAngle(Da.curveData.curvePos,Da.curveData.pos2)+90,TRUE,wDrawColorRed);
+ }
+ DrawArrowHeadsArray(&anchors_da,Da.curveData.pos2,
+ FindAngle(Da.curveData.curvePos,Da.curveData.pos2)+90,TRUE,wDrawColorRed);
}
- if (Da.curveData.curveRadius == desired_radius)
+ if (Da.curveData.curveRadius == desired_radius) {
CreateEndAnchor(Da.curveData.curvePos,&anchors_da,TRUE);
- else
+ } else {
CreateEndAnchor(Da.curveData.curvePos,&anchors_da,FALSE);
+ }
}
}
return rc;
case C_TEXT:
- if ( Da.state == 0 )
- return CreateCurve( action, pos, TRUE, wDrawColorBlack, 0, curveMode, &anchors_da, InfoMessage );
- /*no break*/
+ if ( Da.state == 0 ) {
+ return CreateCurve( action, pos, TRUE, wDrawColorBlack, 0, curveMode,
+ &anchors_da, InfoMessage );
+ }
+ /*no break*/
case C_UP:
- if (Da.state<0) return C_CONTINUE;
- if (Da.state == 0 && ((curveMode != crvCmdFromChord) || (curveMode == crvCmdFromChord && !Da.trk))) {
+ if (Da.state<0) { return C_CONTINUE; }
+ if (Da.state == 0 && ((curveMode != crvCmdFromChord)
+ || (curveMode == crvCmdFromChord && !Da.trk))) {
//SnapPos( &pos );
//Da.pos1 = pos;
if ((d = FindDistance(Da.pos0,Da.pos1))<minLength) {
@@ -571,8 +603,9 @@ static STATUS_T CmdCurve( wAction_t action, coOrd pos )
return C_TERMINATE;
}
Da.state = 1;
- CreateCurve( action, pos, TRUE, wDrawColorBlack, 0, curveMode, &anchors_da, InfoMessage );
- tempSegs_da.cnt = 1;
+ CreateCurve( action, pos, TRUE, wDrawColorBlack, 0, curveMode, &anchors_da,
+ InfoMessage );
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
segCnt = tempSegs_da.cnt;
sprintf(message, "desired_radius-%s", curScaleName);
@@ -594,9 +627,10 @@ static STATUS_T CmdCurve( wAction_t action, coOrd pos )
ErrorMessage( MSG_TRK_TOO_SHORT, "Curved ", PutDim(fabs(minLength-d)) );
return C_TERMINATE;
}
- PlotCurve( curveMode, Da.pos0, Da.pos1, Da.middle, &Da.curveData, TRUE, desired_radius );
+ PlotCurve( curveMode, Da.pos0, Da.pos1, Da.middle, &Da.curveData, TRUE,
+ desired_radius );
}
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
segCnt = 0;
Da.state = -1;
DYNARR_RESET(trkSeg_t,anchors_da); // No More anchors for this one
@@ -609,21 +643,22 @@ static STATUS_T CmdCurve( wAction_t action, coOrd pos )
t = NewStraightTrack( Da.pos0, Da.curveData.pos1 );
if (Da.trk && !(MyGetKeyState() & WKEY_SHIFT)) {
EPINX_T ep = PickUnconnectedEndPoint(Da.pos0, t);
- if (ep != -1) ConnectTracks(Da.trk, Da.ep, t, ep);
+ if (ep != -1) { ConnectTracks(Da.trk, Da.ep, t, ep); }
}
UndoEnd();
} else if (Da.curveData.type == curveTypeCurve) {
- if ((d = Da.curveData.curveRadius * Da.curveData.a1 *2.0*M_PI/360.0) < minLength) {
+ if ((d = Da.curveData.curveRadius * Da.curveData.a1 *2.0*M_PI/360.0) <
+ minLength) {
ErrorMessage( MSG_TRK_TOO_SHORT, "Curved ", PutDim(fabs(minLength-d)) );
return C_TERMINATE;
}
UndoStart( _("Create Curved Track"), "newCurve - curve" );
t = NewCurvedTrack( Da.curveData.curvePos, Da.curveData.curveRadius,
- Da.curveData.a0, Da.curveData.a1, 0 );
+ Da.curveData.a0, Da.curveData.a1, 0 );
if (Da.trk && !(MyGetKeyState() & WKEY_SHIFT)) {
EPINX_T ep = PickUnconnectedEndPoint(Da.pos0, t);
- if (ep != -1) ConnectTracks(Da.trk, Da.ep, t, ep);
+ if (ep != -1) { ConnectTracks(Da.trk, Da.ep, t, ep); }
}
UndoEnd();
} else {
@@ -634,15 +669,15 @@ static STATUS_T CmdCurve( wAction_t action, coOrd pos )
case C_REDRAW:
if ( Da.state >= 0 ) {
- DrawSegs( &tempD, zero, 0.0, &tempSegs(0), tempSegs_da.cnt, trackGauge, wDrawColorBlack );
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &tempSegs_da, trackGauge, wDrawColorBlack,
+ 0 );
}
- 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 );
return C_CONTINUE;
case C_CANCEL:
if (Da.state == 1) {
- tempSegs_da.cnt = 0;
Da.trk = NULL;
}
DYNARR_RESET(trkSeg_t,anchors_da);
@@ -695,24 +730,27 @@ static paramData_t helixPLs[] = {
{ PD_FLOAT, &helixGrade, "grade", 0, &r0_100, N_("Grade") },
{ PD_FLOAT, &helixVertSep, "vertSep", PDO_DIM, &r0_1000000, N_("Vertical Separation") },
#define I_HELIXMSG (6)
- { PD_MESSAGE, N_("Total Length"), NULL, PDO_DLGRESETMARGIN, I2VP(200) } };
+ { PD_MESSAGE, N_("Total Length"), NULL, PDO_DLGRESETMARGIN, I2VP(200) }
+};
static paramGroup_t helixPG = { "helix", PGO_PREFMISCGROUP, helixPLs, COUNT( helixPLs ) };
static paramData_t circleRadiusPLs[] = {
- { PD_FLOAT, &circleRadius, "radius", PDO_DIM, &r1_10000 } };
+ { PD_FLOAT, &circleRadius, "radius", PDO_DIM, &r1_10000 }
+};
static paramGroup_t circleRadiusPG = { "circle", 0, circleRadiusPLs, COUNT( circleRadiusPLs ) };
static void ComputeHelix(
- paramGroup_p pg,
- int h_inx,
- void * data )
+ paramGroup_p pg,
+ int h_inx,
+ void * data )
{
DIST_T totTurns;
DIST_T length;
long updates = 0;
- if ( h_inx < 0 || h_inx >= COUNT( h_orders ) )
+ if ( h_inx < 0 || h_inx >= COUNT( h_orders ) ) {
return;
+ }
ParamLoadData( &helixPG );
totTurns = helixTurns + helixAngSep/360.0;
length = totTurns * helixRadius * (2 * M_PI);
@@ -720,7 +758,7 @@ static void ComputeHelix(
switch ( h_inx ) {
case H_ELEV:
if (h_orders[H_TURNS]<h_orders[H_VERTSEP] &&
- origVertSep > 0.0) {
+ origVertSep > 0.0) {
helixTurns = (int)floor(helixElev/origVertSep - helixAngSep/360.0);
totTurns = helixTurns + helixAngSep/360.0;
updates |= (1<<H_TURNS);
@@ -753,7 +791,7 @@ static void ComputeHelix(
}
if ( totTurns > 0.0 ) {
if ( h_orders[H_RADIUS]>=h_orders[H_GRADE] ||
- (helixGrade==0.0 && totTurns>0 && helixRadius>0) ) {
+ (helixGrade==0.0 && totTurns>0 && helixRadius>0) ) {
if ( helixRadius > 0.0 ) {
helixGrade = helixElev/(totTurns*helixRadius*(2*M_PI))*100.0;
updates |= (1<<H_GRADE);
@@ -767,13 +805,15 @@ static void ComputeHelix(
}
length = totTurns * helixRadius * (2 * M_PI);
for ( h_inx=0; updates; h_inx++,updates>>=1 ) {
- if ( (updates&1) )
+ if ( (updates&1) ) {
ParamLoadControl( &helixPG, h_inx );
+ }
}
- if (length > 0.0)
+ if (length > 0.0) {
sprintf( message, _("Total Length %s"), FormatDistance(length) );
- else
+ } else {
strcpy( message, " " );
+ }
ParamLoadMessage( &helixPG, I_HELIXMSG, message );
}
@@ -787,8 +827,8 @@ static void HelixCancel( wWin_p win )
static void ChangeHelixW( long changes )
{
if ( (changes & CHANGE_UNITS) &&
- helixW != NULL &&
- wWinIsVisible(helixW) ) {
+ helixW != NULL &&
+ wWinIsVisible(helixW) ) {
ParamLoadControls( &helixPG );
ComputeHelix( NULL, 6, NULL );
}
@@ -808,8 +848,10 @@ static STATUS_T CmdCircleCommon( wAction_t action, coOrd pos, BOOL_T helix )
case C_START:
if (helix) {
- if (helixW == NULL)
- helixW = ParamCreateDialog(&helixPG, MakeWindowTitle(_("Helix")), NULL, NULL, HelixCancel, TRUE, NULL, 0, ComputeHelix);
+ if (helixW == NULL) {
+ helixW = ParamCreateDialog(&helixPG, MakeWindowTitle(_("Helix")), NULL, NULL,
+ HelixCancel, TRUE, NULL, 0, ComputeHelix);
+ }
ParamLoadControls(&helixPG);
ParamGroupRecord(&helixPG);
ComputeHelix(NULL, 6, NULL);
@@ -837,12 +879,10 @@ static STATUS_T CmdCircleCommon( wAction_t action, coOrd pos, BOOL_T helix )
}
}
SetAllTrackSelect( FALSE );
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
return C_CONTINUE;
case C_DOWN:
- DYNARR_SET(trkSeg_t, tempSegs_da, 1);
- tempSegs_da.cnt = 0;
if (helix) {
if (helixRadius <= 0.0) {
ErrorMessage(MSG_RADIUS_GTR_0);
@@ -873,13 +913,14 @@ static STATUS_T CmdCircleCommon( wAction_t action, coOrd pos, BOOL_T helix )
}
}
SnapPos(&pos);
- tempSegs(0).u.c.center = pos0 = pos;
- tempSegs(0).color = wDrawColorBlack;
- tempSegs(0).width = 0;
+ DYNARR_RESET(trkSeg_t, tempSegs_da);
+ pos0 = pos;
return C_CONTINUE;
case C_MOVE:
SnapPos(&pos);
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ tempSegs(0).type = SEG_CRVTRK;
tempSegs(0).u.c.center = pos;
if (!helix) {
switch (circleMode) {
@@ -896,11 +937,11 @@ static STATUS_T CmdCircleCommon( wAction_t action, coOrd pos, BOOL_T helix )
break;
}
}
- tempSegs(0).type = SEG_CRVTRK;
+ tempSegs(0).color = wDrawColorBlack;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).u.c.radius = helix ? helixRadius : circleRadius;
tempSegs(0).u.c.a0 = 0.0;
tempSegs(0).u.c.a1 = 360.0;
- tempSegs_da.cnt = 1;
return C_CONTINUE;
case C_UP:
@@ -933,22 +974,25 @@ static STATUS_T CmdCircleCommon( wAction_t action, coOrd pos, BOOL_T helix )
}
UndoEnd();
DrawNewTrack(t);
- if (helix)
+ if (helix) {
wHide( helixW );
- else
+ } else {
InfoSubstituteControls( NULL, NULL );
- tempSegs_da.cnt = 0;
+ }
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
return C_TERMINATE;
case C_REDRAW:
- DrawSegs( &tempD, zero, 0.0, &tempSegs(0), tempSegs_da.cnt, trackGauge, wDrawColorBlack );
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &tempSegs_da, trackGauge, wDrawColorBlack,
+ 0 );
return C_CONTINUE;
case C_CANCEL:
- if (helix)
+ if (helix) {
wHide( helixW );
- else
+ } else {
InfoSubstituteControls( NULL, NULL );
+ }
return C_CONTINUE;
default:
@@ -971,31 +1015,50 @@ static STATUS_T CmdHelix( wAction_t action, coOrd pos )
return CmdCircleCommon( action, pos, TRUE );
}
-#include "bitmaps/curved-end.xpm"
-#include "bitmaps/curved-tangent.xpm"
-#include "bitmaps/curved-middle.xpm"
-#include "bitmaps/curved-chord.xpm"
-#include "bitmaps/bezier-track.xpm"
-#include "bitmaps/cornu.xpm"
-#include "bitmaps/circle.xpm"
-#include "bitmaps/circle-tangent.xpm"
-#include "bitmaps/circle-center.xpm"
+#include "bitmaps/curved-end.xpm3"
+#include "bitmaps/curved-tangent.xpm3"
+#include "bitmaps/curved-middle.xpm3"
+#include "bitmaps/curved-chord.xpm3"
+#include "bitmaps/bezier-track.xpm3"
+#include "bitmaps/cornu.xpm3"
+#include "bitmaps/circle.xpm3"
+#include "bitmaps/circle-tangent.xpm3"
+#include "bitmaps/circle-center.xpm3"
+// #include "bitmaps/helix.xpm"
EXPORT void InitCmdCurve( wMenu_p menu )
{
ButtonGroupBegin( _("Curve Track"), "cmdCurveSetCmd", _("Curve Tracks") );
- AddMenuButton( menu, CmdCurve, "cmdCurveEndPt", _("Curve from End-Pt"), wIconCreatePixMap( curved_end_xpm[iconSize] ), LEVEL0_50, IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_CURVE1, I2VP(0) );
- AddMenuButton( menu, CmdCurve, "cmdCurveTangent", _("Curve from Tangent"), wIconCreatePixMap( curved_tangent_xpm[iconSize] ), LEVEL0_50, IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_CURVE2, I2VP(1) );
- AddMenuButton( menu, CmdCurve, "cmdCurveCenter", _("Curve from Center"), wIconCreatePixMap( curved_middle_xpm[iconSize] ), LEVEL0_50, IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_CURVE3, I2VP(2) );
- AddMenuButton( menu, CmdCurve, "cmdCurveChord", _("Curve from Chord"), wIconCreatePixMap( curved_chord_xpm[iconSize] ), LEVEL0_50, IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_CURVE4, I2VP(3) );
- AddMenuButton( menu, CmdBezCurve, "cmdBezier", _("Bezier Curve"), wIconCreatePixMap( bezier_track_xpm[iconSize] ), LEVEL0_50, IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_BEZIER, I2VP(bezCmdCreateTrack) );
- AddMenuButton( menu, CmdCornu, "cmdCornu", _("Cornu Curve"), wIconCreatePixMap( cornu_xpm[iconSize] ), LEVEL0_50, IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_CORNU, I2VP(cornuCmdCreateTrack));
+ AddMenuButton( menu, CmdCurve, "cmdCurveEndPt", _("Curve from End-Pt"),
+ wIconCreatePixMap( curved_end_xpm3[iconSize] ), LEVEL0_50,
+ IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_CURVE1, I2VP(0) );
+ AddMenuButton( menu, CmdCurve, "cmdCurveTangent", _("Curve from Tangent"),
+ wIconCreatePixMap( curved_tangent_xpm3[iconSize] ), LEVEL0_50,
+ IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_CURVE2, I2VP(1) );
+ AddMenuButton( menu, CmdCurve, "cmdCurveCenter", _("Curve from Center"),
+ wIconCreatePixMap( curved_middle_xpm3[iconSize] ), LEVEL0_50,
+ IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_CURVE3, I2VP(2) );
+ AddMenuButton( menu, CmdCurve, "cmdCurveChord", _("Curve from Chord"),
+ wIconCreatePixMap( curved_chord_xpm3[iconSize] ), LEVEL0_50,
+ IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_CURVE4, I2VP(3) );
+ AddMenuButton( menu, CmdBezCurve, "cmdBezier", _("Bezier Curve"),
+ wIconCreatePixMap( bezier_track_xpm3[iconSize] ), LEVEL0_50,
+ IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_BEZIER, I2VP(bezCmdCreateTrack) );
+ AddMenuButton( menu, CmdCornu, "cmdCornu", _("Cornu Curve"),
+ wIconCreatePixMap( cornu_xpm3[iconSize] ), LEVEL0_50,
+ IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_CORNU, I2VP(cornuCmdCreateTrack));
ButtonGroupEnd();
ButtonGroupBegin( _("Circle Track"), "cmdCircleSetCmd", _("Circle Tracks") );
- AddMenuButton( menu, CmdCircle, "cmdCircleFixedRadius", _("Fixed Radius Circle"), wIconCreatePixMap( circle_xpm[iconSize] ), LEVEL0_50, IC_STICKY|IC_POPUP2, ACCL_CIRCLE1, I2VP(0) );
- AddMenuButton( menu, CmdCircle, "cmdCircleTangent", _("Circle from Tangent"), wIconCreatePixMap( circle_tangent_xpm[iconSize] ), LEVEL0_50, IC_STICKY|IC_POPUP2, ACCL_CIRCLE2, I2VP(1) );
- AddMenuButton( menu, CmdCircle, "cmdCircleCenter", _("Circle from Center"), wIconCreatePixMap( circle_center_xpm[iconSize] ), LEVEL0_50, IC_STICKY|IC_POPUP2, ACCL_CIRCLE3, I2VP(2) );
+ AddMenuButton( menu, CmdCircle, "cmdCircleFixedRadius",
+ _("Fixed Radius Circle"), wIconCreatePixMap( circle_xpm3[iconSize] ), LEVEL0_50,
+ IC_STICKY|IC_POPUP2, ACCL_CIRCLE1, I2VP(0) );
+ AddMenuButton( menu, CmdCircle, "cmdCircleTangent", _("Circle from Tangent"),
+ wIconCreatePixMap( circle_tangent_xpm3[iconSize] ), LEVEL0_50,
+ IC_STICKY|IC_POPUP2, ACCL_CIRCLE2, I2VP(1) );
+ AddMenuButton( menu, CmdCircle, "cmdCircleCenter", _("Circle from Center"),
+ wIconCreatePixMap( circle_center_xpm3[iconSize] ), LEVEL0_50,
+ IC_STICKY|IC_POPUP2, ACCL_CIRCLE3, I2VP(2) );
ButtonGroupEnd();
ParamRegister( &circleRadiusPG );
@@ -1013,8 +1076,8 @@ EXPORT void InitCmdCurve( wMenu_p menu )
void InitCmdHelix(wMenu_p menu)
{
- AddMenuButton(menu, CmdHelix, "cmdHelix", _("Helix"), NULL, LEVEL0_50,
- IC_STICKY|IC_INITNOTSTICKY|IC_POPUP2, ACCL_HELIX, NULL);
- ParamRegister(&helixPG);
- RegisterChangeNotification(ChangeHelixW);
+ AddMenuButton(menu, CmdHelix, "cmdHelix", _("Helix"), NULL, LEVEL0_50,
+ IC_STICKY|IC_INITNOTSTICKY|IC_POPUP2, ACCL_HELIX, NULL);
+ ParamRegister(&helixPG);
+ RegisterChangeNotification(ChangeHelixW);
}
diff --git a/app/bin/ccurve.h b/app/bin/ccurve.h
index 7ae4227..07122f9 100644
--- a/app/bin/ccurve.h
+++ b/app/bin/ccurve.h
@@ -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
*/
#ifndef HAVE_CCURVE_H
@@ -27,14 +27,14 @@
#include "track.h" //- curveType_e
typedef struct {
- curveType_e type;
- coOrd curvePos;
- coOrd pos1;
- coOrd pos2;
- DIST_T curveRadius;
- ANGLE_T a0, a1;
- BOOL_T negative;
- } curveData_t;
+ curveType_e type;
+ coOrd curvePos;
+ coOrd pos1;
+ coOrd pos2;
+ DIST_T curveRadius;
+ ANGLE_T a0, a1;
+ BOOL_T negative;
+} curveData_t;
#define crvCmdFromEP1 (0)
#define crvCmdFromTangent (1)
@@ -47,14 +47,17 @@ typedef struct {
#define circleCmdFromCenter (2)
typedef void (*curveMessageProc)( const char *, ... );
-STATUS_T CreateCurve( wAction_t, coOrd, BOOL_T, wDrawColor, DIST_T, long, dynArr_t *,curveMessageProc );
+STATUS_T CreateCurve( wAction_t, coOrd, BOOL_T, wDrawColor, DIST_T, long,
+ dynArr_t *,curveMessageProc );
int IsCurveCircle( track_p );
void PlotCurve( long, coOrd, coOrd, coOrd, curveData_t *, BOOL_T, DIST_T );
track_p NewCurvedTrack( coOrd, DIST_T, ANGLE_T, ANGLE_T, long );
DIST_T CurveDescriptionDistance( coOrd, track_p, coOrd *, BOOL_T, BOOL_T * );
STATUS_T CurveDescriptionMove( track_p, wAction_t, coOrd );
-BOOL_T GetCurveMiddle( track_p , coOrd * );
-int DrawArrowHeads(trkSeg_p sp, coOrd pos, ANGLE_T angle, BOOL_T bidirectional, wDrawColor color );
-int DrawArrowHeadsArray(dynArr_t *anchor_array,coOrd pos,ANGLE_T angle,BOOL_T bidirectional,wDrawColor color );
+BOOL_T GetCurveMiddle( track_p, coOrd * );
+int DrawArrowHeads(trkSeg_p sp, coOrd pos, ANGLE_T angle, BOOL_T bidirectional,
+ wDrawColor color );
+int DrawArrowHeadsArray(dynArr_t *anchor_array,coOrd pos,ANGLE_T angle,
+ BOOL_T bidirectional,wDrawColor color );
#endif // !HAVE_CCURVE_H
diff --git a/app/bin/cdraw.c b/app/bin/cdraw.c
index b6cc035..4d52408 100644
--- a/app/bin/cdraw.c
+++ b/app/bin/cdraw.c
@@ -2,23 +2,23 @@
* Drawing of geometric elements
*/
- /* 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.
- */
+/* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
#include "common.h"
#include "ccurve.h"
@@ -27,10 +27,11 @@
#include "fileio.h"
#include "param.h"
#include "track.h"
+#include "tbezier.h"
#include "misc.h"
#include "cselect.h"
+#include "cundo.h"
#include "common-ui.h"
-extern TRKTYP_T T_BZRLIN;
static wMenu_p drawModDelMI;
static wMenu_p drawModLinMI;
@@ -56,35 +57,32 @@ static wMenuPush_p drawModCenterDot;
static wMenuPush_p drawModPhantom;
-extern void wSetSelectedFontSize(wFontSize_t size);
-
static long fontSizeList[] = {
- 4, 5, 6, 7, 8, 10, 12, 14, 16, 18, 20, 24, 28, 32, 36,
- 40, 48, 56, 64, 72, 80, 90, 100, 120, 140, 160, 180,
- 200, 250, 300, 350, 400, 450, 500 };
+ 4, 5, 6, 7, 8, 10, 12, 14, 16, 18, 20, 24, 28, 32, 36,
+ 40, 48, 56, 64, 72, 80, 90, 100, 120, 140, 160, 180,
+ 200, 250, 300, 350, 400, 450, 500
+};
EXPORT void LoadFontSizeList(
- wList_p list,
- long curFontSize)
+ wList_p list,
+ long curFontSize)
{
wIndex_t curInx = 0, inx1;
int inx;
wListClear(list);
- for (inx = 0; inx < COUNT( fontSizeList ); inx++)
- {
+ for (inx = 0; inx < COUNT( fontSizeList ); inx++) {
if ((inx == 0 || curFontSize > fontSizeList[inx - 1]) &&
- (curFontSize < fontSizeList[inx]))
- {
+ (curFontSize < fontSizeList[inx])) {
sprintf(message, "%ld", curFontSize);
curInx = wListAddValue(list, message, NULL, I2VP(curFontSize));
}
sprintf(message, "%ld", fontSizeList[inx]);
inx1 = wListAddValue(list, message, NULL, I2VP(fontSizeList[inx]));
- if (curFontSize == fontSizeList[inx])
+ if (curFontSize == fontSizeList[inx]) {
curInx = inx1;
+ }
}
- if (curFontSize > fontSizeList[ COUNT( fontSizeList ) - 1])
- {
+ if (curFontSize > fontSizeList[ COUNT( fontSizeList ) - 1]) {
sprintf(message, "%ld", curFontSize);
curInx = wListAddValue(list, message, NULL, I2VP(curFontSize));
}
@@ -100,20 +98,22 @@ long GetFontSize(wIndex_t inx)
long GetFontSizeIndex(long size)
{
int i;
- for (i = 0; i < COUNT( fontSizeList ); i++)
- {
- if (fontSizeList[i] == size)
+ for (i = 0; i < COUNT( fontSizeList ); i++) {
+ if (fontSizeList[i] == size) {
return(i);
+ }
}
return(-1);
}
EXPORT void UpdateFontSizeList(
- long * fontSizeR,
- wList_p list,
- wIndex_t listInx )
+ long * fontSizeR,
+ wList_p list,
+ wIndex_t listInx )
{
long fontSize;
+ long largeFontSize;
+ wPrefGetInteger( "misc", "large-font-size", &largeFontSize, 500 );
if ( listInx >= 0 ) {
*fontSizeR = VP2L( wListGetItemContext( list, listInx ));
@@ -126,8 +126,13 @@ EXPORT void UpdateFontSizeList(
sprintf( message, "%ld", *fontSizeR );
wListSetValue( list, message );
} else {
- if ( fontSize <= 500 || NoticeMessage( MSG_LARGE_FONT, _("Yes"), _("No") ) > 0 ) {
-
+ if ( fontSize <= largeFontSize
+ || NoticeMessage( MSG_LARGE_FONT, _("Yes"), _("No") ) > 0 ) {
+
+ if ( fontSize > largeFontSize ) {
+ largeFontSize = fontSize;
+ wPrefSetInteger( "misc", "large-font-size", largeFontSize );
+ }
*fontSizeR = fontSize;
/* inform gtkfont dialog from change */
wSetSelectedFontSize((wFontSize_t)fontSize);
@@ -149,13 +154,13 @@ EXPORT void UpdateFontSizeList(
typedef struct extraDataDraw_t {
- extraDataBase_t base;
- coOrd orig;
- ANGLE_T angle;
- drawLineType_e lineType;
- wIndex_t segCnt;
- trkSeg_t segs[1];
- } extraDataDraw_t;
+ extraDataBase_t base;
+ coOrd orig;
+ ANGLE_T angle;
+ drawLineType_e lineType;
+ wIndex_t segCnt;
+ trkSeg_t segs[1];
+} extraDataDraw_t;
static TRKTYP_T T_DRAW = -1;
static track_p ignoredTableEdge;
@@ -175,17 +180,26 @@ static void ComputeDrawBoundingBox( track_p t )
static track_p MakeDrawFromSeg1(
- wIndex_t index,
- coOrd pos,
- ANGLE_T angle,
- trkSeg_p sp )
+ wIndex_t index,
+ coOrd pos,
+ ANGLE_T angle,
+ trkSeg_p sp )
{
struct extraDataDraw_t * xx;
track_p trk;
- if ( sp->type == ' ' )
+ if ( sp->type == ' ' ) {
return NULL;
+ }
+ if (sp->type == SEG_BEZLIN) {
+ trk = NewBezierLine(sp->u.l.pos, NULL, 0, sp->color, sp->lineWidth);
+ trkSeg_p spb = &DYNARR_N(trkSeg_t, sp->bezSegs, 0);
+ FixUpBezierSegs(spb, sp->bezSegs.cnt);
+ MoveBezier(trk, pos);
+ RotateBezier(trk, pos, angle);
+ return trk;
+ }
trk = NewTrack( index, T_DRAW, 0, sizeof *xx );
- xx = GET_EXTRA_DATA( trk, T_DRAW, extraDataDraw_t );
+ xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
xx->orig = pos;
xx->angle = angle;
xx->segCnt = 1;
@@ -193,7 +207,7 @@ static track_p MakeDrawFromSeg1(
memcpy( xx->segs, sp, sizeof *(trkSeg_p)0 );
if (xx->segs[0].type == SEG_POLY ||
- xx->segs[0].type == SEG_FILPOLY ) {
+ xx->segs[0].type == SEG_FILPOLY ) {
xx->segs[0].u.p.pts = (pts_t*)MyMalloc( (sp->u.p.cnt) * sizeof (pts_t) );
memcpy(xx->segs[0].u.p.pts, sp->u.p.pts, sp->u.p.cnt * sizeof (pts_t) );
}
@@ -205,25 +219,26 @@ static track_p MakeDrawFromSeg1(
}
EXPORT track_p MakeDrawFromSeg(
- coOrd pos,
- ANGLE_T angle,
- trkSeg_p sp )
+ coOrd pos,
+ ANGLE_T angle,
+ trkSeg_p sp )
{
return MakeDrawFromSeg1( 0, pos, angle, sp );
}
-int SliceCuts(ANGLE_T a, DIST_T radius) {
+int SliceCuts(ANGLE_T a, DIST_T radius)
+{
double Error = 0.05;
double Error_angle = acos(1-(Error/fabs(radius)));
- if (Error_angle <0.0001) return 0;
+ if (Error_angle <0.0001) { return 0; }
return (int)(floor(D2R(a)/(2*Error_angle)));
}
/* Only straight, curved and PolyLine */
EXPORT track_p MakePolyLineFromSegs(
- coOrd pos,
- ANGLE_T angle,
- dynArr_t * segsArr)
+ coOrd pos,
+ ANGLE_T angle,
+ dynArr_t * segsArr)
{
struct extraDataDraw_t * xx;
track_p trk;
@@ -234,72 +249,77 @@ EXPORT track_p MakePolyLineFromSegs(
xx->lineType = DRAWLINESOLID;
xx->segCnt = 1;
xx->segs[0].type = SEG_POLY;
- xx->segs[0].width = 0;
+ xx->segs[0].lineWidth = 0;
xx->segs[0].u.p.polyType = POLYLINE;
xx->segs[0].color = wDrawColorBlack;
coOrd last;
BOOL_T first = TRUE;
int cnt = 0;
- for (int i=0;i<segsArr->cnt;i++) {
+ for (int i=0; i<segsArr->cnt; i++) {
trkSeg_p sp = &DYNARR_N(trkSeg_t,*segsArr,i);
if (sp->type == SEG_BEZLIN || sp->type == SEG_BEZTRK ) {
- for (int j=0;j<sp->bezSegs.cnt;j++) {
+ for (int j=0; j<sp->bezSegs.cnt; j++) {
trkSeg_p spb = &DYNARR_N(trkSeg_t,sp->bezSegs,j);
if (spb->type == SEG_STRLIN || spb->type == SEG_STRTRK) {
- if (!first && IsClose(FindDistance(spb->u.l.pos[0], last)))
+ if (!first && IsClose(FindDistance(spb->u.l.pos[0], last))) {
cnt++;
- else
+ } else {
cnt=cnt+2;
+ }
last = spb->u.l.pos[1];
first = FALSE;
- }
- else if (spb->type == SEG_CRVLIN || spb->type == SEG_CRVTRK) {
+ } else if (spb->type == SEG_CRVLIN || spb->type == SEG_CRVTRK) {
coOrd this;
- if (spb->u.c.radius >= 0.0)
+ if (spb->u.c.radius >= 0.0) {
Translate(&this, spb->u.c.center, spb->u.c.a0, fabs(spb->u.c.radius));
- else
- Translate(&this, spb->u.c.center, spb->u.c.a0+spb->u.c.a1, fabs(spb->u.c.radius));
+ } else {
+ Translate(&this, spb->u.c.center, spb->u.c.a0+spb->u.c.a1,
+ fabs(spb->u.c.radius));
+ }
if (first || !IsClose(FindDistance(this, last))) {
cnt++; //Add first point
}
cnt += 1 + SliceCuts(spb->u.c.a1,spb->u.c.radius);
- if (spb->u.c.radius >= 0.0)
- Translate(&last, spb->u.c.center, spb->u.c.a0+spb->u.c.a1, fabs(spb->u.c.radius));
- else
+ if (spb->u.c.radius >= 0.0) {
+ Translate(&last, spb->u.c.center, spb->u.c.a0+spb->u.c.a1,
+ fabs(spb->u.c.radius));
+ } else {
Translate(&last, spb->u.c.center, spb->u.c.a0, fabs(spb->u.c.radius));
+ }
first = FALSE;
}
}
- }
- else if (sp->type == SEG_STRLIN || sp->type == SEG_STRTRK) {
- if (!first && IsClose(FindDistance(sp->u.l.pos[0], last)))
+ } else if (sp->type == SEG_STRLIN || sp->type == SEG_STRTRK) {
+ if (!first && IsClose(FindDistance(sp->u.l.pos[0], last))) {
cnt++;
- else
+ } else {
cnt=cnt+2;
+ }
last = sp->u.l.pos[1];
first = FALSE;
- }
- else if (sp->type == SEG_CRVLIN || sp->type == SEG_CRVTRK) {
+ } else if (sp->type == SEG_CRVLIN || sp->type == SEG_CRVTRK) {
coOrd this;
- if (sp->u.c.radius >= 0.0)
+ if (sp->u.c.radius >= 0.0) {
Translate(&this, sp->u.c.center, sp->u.c.a0, fabs(sp->u.c.radius));
- else
+ } else {
Translate(&this, sp->u.c.center, sp->u.c.a0+sp->u.c.a1, fabs(sp->u.c.radius));
+ }
if (first || !IsClose(FindDistance(this, last))) {
cnt++; //Add first point
}
cnt += 1+ SliceCuts(sp->u.c.a1,sp->u.c.radius);
- if (sp->u.c.radius >= 0.0)
+ if (sp->u.c.radius >= 0.0) {
Translate(&last, sp->u.c.center, sp->u.c.a0+sp->u.c.a1, fabs(sp->u.c.radius));
- else
+ } else {
Translate(&last, sp->u.c.center, sp->u.c.a0, fabs(sp->u.c.radius));
+ }
first = FALSE;
- }
- else if (sp->type == SEG_POLY) {
- if (!first && IsClose(FindDistance(sp->u.p.pts[0].pt, last)))
+ } else if (sp->type == SEG_POLY) {
+ if (!first && IsClose(FindDistance(sp->u.p.pts[0].pt, last))) {
cnt = cnt + sp->u.p.cnt-1;
- else
+ } else {
cnt = cnt + sp->u.p.cnt;
+ }
last = sp->u.p.pts[sp->u.p.cnt-1].pt;
first = FALSE;
}
@@ -308,10 +328,10 @@ EXPORT track_p MakePolyLineFromSegs(
xx->segs[0].u.p.pts = (pts_t*)MyMalloc( (cnt) * sizeof (pts_t) );
first = TRUE;
int j =0;
- for (int i=0;i<segsArr->cnt;i++) {
+ for (int i=0; i<segsArr->cnt; i++) {
trkSeg_p sp = &DYNARR_N(trkSeg_t,*segsArr,i);
if (sp->type == SEG_BEZLIN || sp->type == SEG_BEZTRK ) {
- for (int l=0;l<sp->bezSegs.cnt;l++) {
+ for (int l=0; l<sp->bezSegs.cnt; l++) {
trkSeg_p spb = &DYNARR_N(trkSeg_t,sp->bezSegs,l);
if (spb->type == SEG_STRLIN || spb->type == SEG_STRTRK) {
if (first || !IsClose(FindDistance(spb->u.l.pos[0], last))) {
@@ -327,28 +347,36 @@ EXPORT track_p MakePolyLineFromSegs(
}
if (spb->type == SEG_CRVLIN || spb->type == SEG_CRVTRK) {
coOrd this;
- if (spb->u.c.radius>=0.0)
+ if (spb->u.c.radius>=0.0) {
Translate(&this, spb->u.c.center, spb->u.c.a0, fabs(spb->u.c.radius));
- else
- Translate(&this, spb->u.c.center, spb->u.c.a0+spb->u.c.a1, fabs(spb->u.c.radius));
+ } else {
+ Translate(&this, spb->u.c.center, spb->u.c.a0+spb->u.c.a1,
+ fabs(spb->u.c.radius));
+ }
if (first || !IsClose(FindDistance(this, last))) {
xx->segs[0].u.p.pts[j].pt= this;
xx->segs[0].u.p.pts[j].pt_type = wPolyLineStraight;
j++;
}
int slices = SliceCuts(spb->u.c.a1,spb->u.c.radius);
- for (int k=1; k<slices;k++) {
- if (spb->u.c.radius>=0.0)
- Translate(&xx->segs[0].u.p.pts[j].pt, spb->u.c.center, spb->u.c.a0+(k*(spb->u.c.a1/(slices))), fabs(spb->u.c.radius));
- else
- Translate(&xx->segs[0].u.p.pts[j].pt, spb->u.c.center, spb->u.c.a0+((slices-k)*(spb->u.c.a1/(slices))), fabs(spb->u.c.radius));
+ for (int k=1; k<slices; k++) {
+ if (spb->u.c.radius>=0.0) {
+ Translate(&xx->segs[0].u.p.pts[j].pt, spb->u.c.center,
+ spb->u.c.a0+(k*(spb->u.c.a1/(slices))), fabs(spb->u.c.radius));
+ } else {
+ Translate(&xx->segs[0].u.p.pts[j].pt, spb->u.c.center,
+ spb->u.c.a0+((slices-k)*(spb->u.c.a1/(slices))), fabs(spb->u.c.radius));
+ }
xx->segs[0].u.p.pts[j].pt_type = wPolyLineSmooth;
j++;
}
- if (spb->u.c.radius>=0.0)
- Translate(&xx->segs[0].u.p.pts[j].pt, spb->u.c.center, spb->u.c.a0+spb->u.c.a1, fabs(spb->u.c.radius));
- else
- Translate(&xx->segs[0].u.p.pts[j].pt, spb->u.c.center, spb->u.c.a0, fabs(spb->u.c.radius));
+ if (spb->u.c.radius>=0.0) {
+ Translate(&xx->segs[0].u.p.pts[j].pt, spb->u.c.center, spb->u.c.a0+spb->u.c.a1,
+ fabs(spb->u.c.radius));
+ } else {
+ Translate(&xx->segs[0].u.p.pts[j].pt, spb->u.c.center, spb->u.c.a0,
+ fabs(spb->u.c.radius));
+ }
xx->segs[0].u.p.pts[j].pt_type = wPolyLineStraight;
last = xx->segs[0].u.p.pts[j].pt;
@@ -371,10 +399,11 @@ EXPORT track_p MakePolyLineFromSegs(
}
if (sp->type == SEG_CRVLIN || sp->type == SEG_CRVTRK) {
coOrd this;
- if (sp->u.c.radius>0)
+ if (sp->u.c.radius>0) {
Translate(&this, sp->u.c.center, sp->u.c.a0, fabs(sp->u.c.radius));
- else
+ } else {
Translate(&this, sp->u.c.center, sp->u.c.a0+sp->u.c.a1, fabs(sp->u.c.radius));
+ }
if (first || !IsClose(FindDistance(this, last))) {
xx->segs[0].u.p.pts[j].pt= this;
xx->segs[0].u.p.pts[j].pt_type = wPolyLineStraight;
@@ -382,18 +411,24 @@ EXPORT track_p MakePolyLineFromSegs(
}
int slices = SliceCuts(sp->u.c.a1,sp->u.c.radius);
- for (int k=1; k<slices;k++) {
- if (sp->u.c.radius>0)
- Translate(&xx->segs[0].u.p.pts[j].pt, sp->u.c.center, sp->u.c.a0+(k*(sp->u.c.a1/(slices))), fabs(sp->u.c.radius));
- else
- Translate(&xx->segs[0].u.p.pts[j].pt, sp->u.c.center, sp->u.c.a0+((slices-k)*(sp->u.c.a1/(slices))), fabs(sp->u.c.radius));
+ for (int k=1; k<slices; k++) {
+ if (sp->u.c.radius>0) {
+ Translate(&xx->segs[0].u.p.pts[j].pt, sp->u.c.center,
+ sp->u.c.a0+(k*(sp->u.c.a1/(slices))), fabs(sp->u.c.radius));
+ } else {
+ Translate(&xx->segs[0].u.p.pts[j].pt, sp->u.c.center,
+ sp->u.c.a0+((slices-k)*(sp->u.c.a1/(slices))), fabs(sp->u.c.radius));
+ }
xx->segs[0].u.p.pts[j].pt_type = wPolyLineSmooth;
j++;
}
- if (sp->u.c.radius>0)
- Translate(&xx->segs[0].u.p.pts[j].pt, sp->u.c.center, sp->u.c.a0+sp->u.c.a1, fabs(sp->u.c.radius));
- else
- Translate(&xx->segs[0].u.p.pts[j].pt, sp->u.c.center, sp->u.c.a0, fabs(sp->u.c.radius));
+ if (sp->u.c.radius>0) {
+ Translate(&xx->segs[0].u.p.pts[j].pt, sp->u.c.center, sp->u.c.a0+sp->u.c.a1,
+ fabs(sp->u.c.radius));
+ } else {
+ Translate(&xx->segs[0].u.p.pts[j].pt, sp->u.c.center, sp->u.c.a0,
+ fabs(sp->u.c.radius));
+ }
xx->segs[0].u.p.pts[j].pt_type = wPolyLineStraight;
last = xx->segs[0].u.p.pts[j].pt;
@@ -405,17 +440,18 @@ EXPORT track_p MakePolyLineFromSegs(
xx->segs[0].u.p.pts[j] = sp->u.p.pts[0];
j++;
}
- memcpy(&xx->segs[0].u.p.pts[j],&sp->u.p.pts[1], (sp->u.p.cnt-1) * sizeof (pts_t));
+ memcpy(&xx->segs[0].u.p.pts[j],&sp->u.p.pts[1],
+ (sp->u.p.cnt-1) * sizeof (pts_t));
last = xx->segs[0].u.p.pts[sp->u.p.cnt-1].pt;
j +=sp->u.p.cnt-1;
first = FALSE;
}
- ASSERT(j<=cnt);
-
+ CHECK(j<=cnt);
}
xx->segs[0].u.p.cnt = j;
- if (IsClose(FindDistance(xx->segs[0].u.p.pts[0].pt,xx->segs[0].u.p.pts[xx->segs[0].u.p.cnt-1].pt))) {
+ if (IsClose(FindDistance(xx->segs[0].u.p.pts[0].pt,
+ xx->segs[0].u.p.pts[xx->segs[0].u.p.cnt-1].pt))) {
xx->segs[0].u.p.polyType = FREEFORM;
xx->segs[0].u.p.cnt = xx->segs[0].u.p.cnt-1;
}
@@ -428,36 +464,38 @@ EXPORT track_p MakePolyLineFromSegs(
static dynArr_t anchors_da;
#define anchors(N) DYNARR_N(trkSeg_t,anchors_da,N)
-void static CreateOriginAnchor(coOrd origin, wBool_t trans_selected) {
- double d = tempD.scale*0.15;
- DYNARR_APPEND(trkSeg_t,anchors_da,2);
- int i = anchors_da.cnt-1;
- coOrd p0,p1;
- Translate(&p0,origin,0,d*4);
- Translate(&p1,origin,0,-d*4);
- anchors(i).type = SEG_STRLIN;
- anchors(i).u.l.pos[0] = p0;
- anchors(i).u.l.pos[1] = p1;
- anchors(i).color = wDrawColorBlue;
- anchors(i).width = 0;
- DYNARR_APPEND(trkSeg_t,anchors_da,1);
- Translate(&p0,origin,90,d*4);
- Translate(&p1,origin,90,-d*4);
- i = anchors_da.cnt-1;
- anchors(i).type = SEG_STRLIN;
- anchors(i).u.l.pos[0] = p0;
- anchors(i).u.l.pos[1] = p1;
- anchors(i).color = wDrawColorBlue;
- anchors(i).width = 0;
+void static CreateOriginAnchor(coOrd origin, wBool_t trans_selected)
+{
+ double d = tempD.scale*0.15;
+ DYNARR_APPEND(trkSeg_t,anchors_da,2);
+ int i = anchors_da.cnt-1;
+ coOrd p0,p1;
+ Translate(&p0,origin,0,d*4);
+ Translate(&p1,origin,0,-d*4);
+ anchors(i).type = SEG_STRLIN;
+ anchors(i).u.l.pos[0] = p0;
+ anchors(i).u.l.pos[1] = p1;
+ anchors(i).color = wDrawColorBlue;
+ anchors(i).lineWidth = 0;
+ DYNARR_APPEND(trkSeg_t,anchors_da,1);
+ Translate(&p0,origin,90,d*4);
+ Translate(&p1,origin,90,-d*4);
+ i = anchors_da.cnt-1;
+ anchors(i).type = SEG_STRLIN;
+ anchors(i).u.l.pos[0] = p0;
+ anchors(i).u.l.pos[1] = p1;
+ anchors(i).color = wDrawColorBlue;
+ anchors(i).lineWidth = 0;
}
-EXPORT void DrawOriginAnchor(track_p trk) {
- if (!trk || GetTrkType(trk) != T_DRAW) return;
+EXPORT void DrawOriginAnchor(track_p trk)
+{
+ if (!trk || GetTrkType(trk) != T_DRAW) { return; }
struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
if ((xx->orig.x != 0.0) || (xx->orig.y !=0.0) ) {
DYNARR_RESET(trkSeg_t,anchors_da);
CreateOriginAnchor(xx->orig,FALSE);
- DrawSegs(&tempD, zero, 0.0, anchors_da.ptr, anchors_da.cnt, trackGauge, wDrawColorBlue);
+ DrawSegsDA(&tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlue, 0);
}
}
@@ -466,80 +504,83 @@ EXPORT void DrawOriginAnchor(track_p trk) {
static DIST_T DistanceDraw( track_p t, coOrd * p )
{
struct extraDataDraw_t * xx = GET_EXTRA_DATA(t, T_DRAW, extraDataDraw_t);
- if ( ignoredTableEdge == t && xx->segs[0].type == SEG_TBLEDGE )
+ if ( ignoredTableEdge == t && xx->segs[0].type == SEG_TBLEDGE ) {
return DIST_INF;
- if ( ignoredDraw == t )
+ }
+ if ( ignoredDraw == t ) {
return DIST_INF;
+ }
return DistanceSegs( xx->orig, xx->angle, xx->segCnt, xx->segs, p, NULL );
}
static struct {
- coOrd endPt[4];
- coOrd origin;
- coOrd oldOrigin;
- coOrd oldE0;
- coOrd oldE1;
- FLOAT_T length;
- FLOAT_T height;
- FLOAT_T width;
- coOrd center;
- DIST_T radius;
- ANGLE_T angle0;
- ANGLE_T angle1;
- ANGLE_T angle;
- ANGLE_T rotate_angle;
- ANGLE_T oldAngle;
- long pointCount;
- long lineWidth;
- BOOL_T boxed;
- BOOL_T filled;
- BOOL_T open;
- BOOL_T lock_origin;
- wDrawColor color;
- wIndex_t benchChoice;
- wIndex_t benchOrient;
- wIndex_t dimenSize;
- descPivot_t pivot;
- wIndex_t fontSizeInx;
- char text[STR_HUGE_SIZE];
- unsigned int layer;
- wIndex_t lineType;
- } drawData;
+ coOrd endPt[4];
+ coOrd origin;
+ coOrd oldOrigin;
+ coOrd oldE0;
+ coOrd oldE1;
+ FLOAT_T length;
+ FLOAT_T height;
+ FLOAT_T width;
+ coOrd center;
+ DIST_T radius;
+ ANGLE_T angle0;
+ ANGLE_T angle1;
+ ANGLE_T angle;
+ ANGLE_T rotate_angle;
+ ANGLE_T oldAngle;
+ long pointCount;
+ LWIDTH_T lineWidth;
+ BOOL_T boxed;
+ BOOL_T filled;
+ BOOL_T open;
+ BOOL_T lock_origin;
+ wDrawColor color;
+ wIndex_t benchChoice;
+ wIndex_t benchOrient;
+ wIndex_t dimenSize;
+ descPivot_t pivot;
+ wIndex_t fontSizeInx;
+ char text[STR_HUGE_SIZE];
+ unsigned int layer;
+ wIndex_t lineType;
+} drawData;
typedef enum { E0, E1, PP, CE, AL, LA, A1, A2, RD, LN, HT, WT, PV, VC, LW, LT, CO, FL, OP, BX, BE, OR, DS, TP, TA, TS, TX, LK, OI, RA, LY } drawDesc_e;
static descData_t drawDesc[] = {
-/*E0*/ { DESC_POS, N_("End Pt 1: X,Y"), &drawData.endPt[0] },
-/*E1*/ { DESC_POS, N_("End Pt 2: X,Y"), &drawData.endPt[1] },
-/*PP*/ { DESC_POS, N_("First Point: X,Y"), &drawData.endPt[0] },
-/*CE*/ { DESC_POS, N_("Center: X,Y"), &drawData.center },
-/*AL*/ { DESC_FLOAT, N_("Angular Length"), &drawData.angle },
-/*LA*/ { DESC_FLOAT, N_("Line Angle"), &drawData.angle },
-/*A1*/ { DESC_ANGLE, N_("CCW Angle"), &drawData.angle0 },
-/*A2*/ { DESC_ANGLE, N_("CW Angle"), &drawData.angle1 },
-/*RD*/ { DESC_DIM, N_("Radius"), &drawData.radius },
-/*LN*/ { DESC_DIM, N_("Length"), &drawData.length },
-/*HT*/ { DESC_DIM, N_("Height"), &drawData.height },
-/*WT*/ { DESC_DIM, N_("Width"), &drawData.width },
-/*PV*/ { DESC_PIVOT, N_("Pivot"), &drawData.pivot },
-/*VC*/ { DESC_LONG, N_("Point Count"), &drawData.pointCount },
-/*LW*/ { DESC_LONG, N_("Line Width"), &drawData.lineWidth },
-/*LT*/ { DESC_LIST, N_("Line Type"), &drawData.lineType },
-/*CO*/ { DESC_COLOR, N_("Color"), &drawData.color },
-/*FL*/ { DESC_BOXED, N_("Filled"), &drawData.filled },
-/*OP*/ { DESC_BOXED, N_("Open End"), &drawData.open },
-/*BX*/ { DESC_BOXED, N_("Boxed"), &drawData.boxed },
-/*BE*/ { DESC_LIST, N_("Lumber"), &drawData.benchChoice },
-/*OR*/ { DESC_LIST, N_("Orientation"), &drawData.benchOrient },
-/*DS*/ { DESC_LIST, N_("Size"), &drawData.dimenSize },
-/*TP*/ { DESC_POS, N_("Text Origin: X,Y"), &drawData.endPt[0] },
-/*TA*/ { DESC_FLOAT, N_("Text Angle"), &drawData.angle },
-/*TS*/ { DESC_EDITABLELIST, N_("Font Size"), &drawData.fontSizeInx },
-/*TX*/ { DESC_TEXT, N_("Text"), &drawData.text },
-/*LK*/ { DESC_BOXED, N_("Lock To Origin"), &drawData.lock_origin},
-/*OI*/ { DESC_POS, N_("Rot Origin: X,Y"), &drawData.origin },
-/*RA*/ { DESC_FLOAT, N_("Rotate By"), &drawData.rotate_angle },
-/*LY*/ { DESC_LAYER, N_("Layer"), &drawData.layer },
- { DESC_NULL } };
+ /*E0*/ { DESC_POS, N_("End Pt 1: X,Y"), &drawData.endPt[0] },
+ /*E1*/ { DESC_POS, N_("End Pt 2: X,Y"), &drawData.endPt[1] },
+ /*PP*/ { DESC_POS, N_("First Point: X,Y"), &drawData.endPt[0] },
+ /*CE*/ { DESC_POS, N_("Center: X,Y"), &drawData.center },
+ /*AL*/ { DESC_FLOAT, N_("Angular Length"), &drawData.angle },
+ /*LA*/ { DESC_FLOAT, N_("Line Angle"), &drawData.angle },
+ /*A1*/ { DESC_ANGLE, N_("CCW Angle"), &drawData.angle0 },
+ /*A2*/ { DESC_ANGLE, N_("CW Angle"), &drawData.angle1 },
+ /*RD*/ { DESC_DIM, N_("Radius"), &drawData.radius },
+ /*LN*/ { DESC_DIM, N_("Length"), &drawData.length },
+ /*HT*/ { DESC_DIM, N_("Height"), &drawData.height },
+ /*WT*/ { DESC_DIM, N_("Width"), &drawData.width },
+ /*PV*/ { DESC_PIVOT, N_("Pivot"), &drawData.pivot },
+ /*VC*/ { DESC_LONG, N_("Point Count"), &drawData.pointCount },
+ /*LW*/ { DESC_FLOAT, N_("Line Width"), &drawData.lineWidth },
+ /*LT*/ { DESC_LIST, N_("Line Type"), &drawData.lineType },
+ /*CO*/ { DESC_COLOR, N_("Color"), &drawData.color },
+ /*FL*/ { DESC_BOXED, N_("Filled"), &drawData.filled },
+ /*OP*/ { DESC_BOXED, N_("Open End"), &drawData.open },
+ /*BX*/ { DESC_BOXED, N_("Boxed"), &drawData.boxed },
+ /*BE*/ { DESC_LIST, N_("Lumber"), &drawData.benchChoice },
+ /*OR*/ { DESC_LIST, N_("Orientation"), &drawData.benchOrient },
+ /*DS*/ { DESC_LIST, N_("Size"), &drawData.dimenSize },
+ /*TP*/ { DESC_POS, N_("Text Origin: X,Y"), &drawData.endPt[0] },
+ /*TA*/ { DESC_FLOAT, N_("Text Angle"), &drawData.angle },
+ /*TS*/ { DESC_EDITABLELIST, N_("Font Size"), &drawData.fontSizeInx },
+ /*TX*/ { DESC_TEXT, N_("Text"), &drawData.text },
+ /*LK*/ { DESC_BOXED, N_("Lock To Origin"), &drawData.lock_origin},
+ /*OI*/ { DESC_POS, N_("Rot Origin: X,Y"), &drawData.origin },
+ /*RA*/ { DESC_FLOAT, N_("Rotate By"), &drawData.rotate_angle },
+ /*LY*/ { DESC_LAYER, N_("Layer"), &drawData.layer },
+ { DESC_NULL }
+};
static int drawSegInx;
#define UNREORIGIN( Q, P, A, O ) { \
@@ -577,22 +618,20 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
coOrd mid;
long fontSize;
- if ( drawSegInx==-1 )
+ if ( drawSegInx==-1 ) {
return;
+ }
segPtr = &xx->segs[drawSegInx];
if ( inx == -1 ) {
- if (segPtr->type != SEG_TEXT) return;
- else inx = TX; //Always look at TextField for SEG_TEXT on "Done"
+ if (segPtr->type != SEG_TEXT) { return; }
+ else { inx = TX; } //Always look at TextField for SEG_TEXT on "Done"
}
UndrawNewTrack( trk );
coOrd pt;
coOrd off;
switch ( inx ) {
case LW:
- if (drawData.lineWidth<0)
- segPtr->width = drawData.lineWidth;
- else
- segPtr->width = drawData.lineWidth/75.0; //Replace with absolute pixel
+ segPtr->lineWidth = drawData.lineWidth;
break;
case CO:
segPtr->color = drawData.color;
@@ -604,24 +643,24 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
off.x = drawData.endPt[0].x - drawData.oldE0.x;
off.y = drawData.endPt[0].y - drawData.oldE0.y;
switch(segPtr->type) { //E0 does not alter length - translates
- case SEG_STRLIN:
- case SEG_DIMLIN:
- case SEG_BENCH:
- case SEG_TBLEDGE:
- UNREORIGIN( segPtr->u.l.pos[0], drawData.endPt[0], 0.0, xx->orig );
- drawData.endPt[1].x = off.x+drawData.endPt[1].x;
- drawData.endPt[1].y = off.y+drawData.endPt[1].y;
- UNREORIGIN( segPtr->u.l.pos[1], drawData.endPt[1], 0.0, xx->orig );
- drawDesc[E1].mode |= DESC_CHANGE;
- break;
- case SEG_CRVLIN:
- case SEG_FILCRCL:
- UNREORIGIN( segPtr->u.c.center, drawData.endPt[0], 0.0, xx->orig );
- break;
- case SEG_POLY:
- case SEG_FILPOLY:
- break; //Note not used by POLYGONS
- default:;
+ case SEG_STRLIN:
+ case SEG_DIMLIN:
+ case SEG_BENCH:
+ case SEG_TBLEDGE:
+ UNREORIGIN( segPtr->u.l.pos[0], drawData.endPt[0], 0.0, xx->orig );
+ drawData.endPt[1].x = off.x+drawData.endPt[1].x;
+ drawData.endPt[1].y = off.y+drawData.endPt[1].y;
+ UNREORIGIN( segPtr->u.l.pos[1], drawData.endPt[1], 0.0, xx->orig );
+ drawDesc[E1].mode |= DESC_CHANGE;
+ break;
+ case SEG_CRVLIN:
+ case SEG_FILCRCL:
+ UNREORIGIN( segPtr->u.c.center, drawData.endPt[0], 0.0, xx->orig );
+ break;
+ case SEG_POLY:
+ case SEG_FILPOLY:
+ break; //Note not used by POLYGONS
+ default:;
}
} else {
UNREORIGIN( segPtr->u.l.pos[1], drawData.endPt[1], 0.0, xx->orig );
@@ -635,54 +674,54 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
xx->orig = drawData.origin;
if (!drawData.lock_origin) { //Move the points so that the object is not moved
switch(segPtr->type) {
- case SEG_POLY:
- case SEG_FILPOLY:
- for (int i=0;i<segPtr->u.p.cnt;i++) {
- UNREORIGIN( segPtr->u.p.pts[i].pt, segPtr->u.p.pts[i].pt, 0.0, off );
- }
+ case SEG_POLY:
+ case SEG_FILPOLY:
+ for (int i=0; i<segPtr->u.p.cnt; i++) {
+ UNREORIGIN( segPtr->u.p.pts[i].pt, segPtr->u.p.pts[i].pt, 0.0, off );
+ }
break;
- case SEG_STRLIN:
- case SEG_DIMLIN:
- case SEG_BENCH:
- case SEG_TBLEDGE:
- for (int i=0;i<2;i++) {
- UNREORIGIN( segPtr->u.l.pos[i], segPtr->u.l.pos[i], 0.0, off );
- }
- break;
- case SEG_CRVLIN:
- case SEG_FILCRCL:
- UNREORIGIN( segPtr->u.c.center, segPtr->u.c.center, 0.0, off );
- break;
- case SEG_TEXT:
- UNREORIGIN( segPtr->u.t.pos, segPtr->u.t.pos, 0.0, off );
- default:;
+ case SEG_STRLIN:
+ case SEG_DIMLIN:
+ case SEG_BENCH:
+ case SEG_TBLEDGE:
+ for (int i=0; i<2; i++) {
+ UNREORIGIN( segPtr->u.l.pos[i], segPtr->u.l.pos[i], 0.0, off );
+ }
+ break;
+ case SEG_CRVLIN:
+ case SEG_FILCRCL:
+ UNREORIGIN( segPtr->u.c.center, segPtr->u.c.center, 0.0, off );
+ break;
+ case SEG_TEXT:
+ UNREORIGIN( segPtr->u.t.pos, segPtr->u.t.pos, 0.0, off );
+ default:;
}
} else {
switch(segPtr->type) {
- case SEG_STRLIN:
- case SEG_DIMLIN:
- case SEG_BENCH:
- case SEG_TBLEDGE:
- REORIGIN( drawData.endPt[0], segPtr->u.l.pos[0], 0.0, xx->orig );
- REORIGIN( drawData.endPt[1], segPtr->u.l.pos[1], 0.0, xx->orig );
- drawDesc[E0].mode |= DESC_CHANGE;
- drawDesc[E1].mode |= DESC_CHANGE;
- break;
- case SEG_CRVLIN:
- case SEG_FILCRCL:
- REORIGIN( drawData.center, segPtr->u.c.center, 0.0, xx->orig );
- drawDesc[CE].mode |= DESC_CHANGE;
- break;
- case SEG_TEXT:
- REORIGIN( drawData.endPt[0], segPtr->u.t.pos, 0.0, xx->orig );
- drawDesc[TP].mode |= DESC_CHANGE;
- break;
- case SEG_POLY:
- case SEG_FILPOLY:
- REORIGIN(drawData.endPt[0], segPtr->u.p.pts[0].pt, 0.0, xx->orig);
- drawDesc[PP].mode |= DESC_CHANGE;
- break;
- default:;
+ case SEG_STRLIN:
+ case SEG_DIMLIN:
+ case SEG_BENCH:
+ case SEG_TBLEDGE:
+ REORIGIN( drawData.endPt[0], segPtr->u.l.pos[0], 0.0, xx->orig );
+ REORIGIN( drawData.endPt[1], segPtr->u.l.pos[1], 0.0, xx->orig );
+ drawDesc[E0].mode |= DESC_CHANGE;
+ drawDesc[E1].mode |= DESC_CHANGE;
+ break;
+ case SEG_CRVLIN:
+ case SEG_FILCRCL:
+ REORIGIN( drawData.center, segPtr->u.c.center, 0.0, xx->orig );
+ drawDesc[CE].mode |= DESC_CHANGE;
+ break;
+ case SEG_TEXT:
+ REORIGIN( drawData.endPt[0], segPtr->u.t.pos, 0.0, xx->orig );
+ drawDesc[TP].mode |= DESC_CHANGE;
+ break;
+ case SEG_POLY:
+ case SEG_FILPOLY:
+ REORIGIN(drawData.endPt[0], segPtr->u.p.pts[0].pt, 0.0, xx->orig);
+ drawDesc[PP].mode |= DESC_CHANGE;
+ break;
+ default:;
}
}
break;
@@ -713,17 +752,18 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
switch(segPtr->type) {
case SEG_POLY:
case SEG_FILPOLY:
- for (int i=0;i<segPtr->u.p.cnt;i++) {
+ for (int i=0; i<segPtr->u.p.cnt; i++) {
UNREORIGIN(pt, segPtr->u.p.pts[i].pt, angle, drawData.origin);
REORIGIN(segPtr->u.p.pts[i].pt, pt, 0.0, drawData.origin);
- if (i == 0) drawData.endPt[0] = pt;
+ if (i == 0) { drawData.endPt[0] = pt; }
}
drawDesc[PP].mode |= DESC_CHANGE;
break;
case SEG_CRVLIN:;
coOrd end0, end1;
Translate(&end0,segPtr->u.c.center,segPtr->u.c.a0,segPtr->u.c.radius);
- Translate(&end1,segPtr->u.c.center,segPtr->u.c.a0+segPtr->u.c.a1,segPtr->u.c.radius);
+ Translate(&end1,segPtr->u.c.center,segPtr->u.c.a0+segPtr->u.c.a1,
+ segPtr->u.c.radius);
REORIGIN(drawData.center, segPtr->u.c.center, angle, drawData.origin);
REORIGIN(end0, end0, angle, drawData.origin);
REORIGIN(end1, end1, angle, drawData.origin);
@@ -732,9 +772,10 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
UNREORIGIN(segPtr->u.c.center,drawData.center,0.0,drawData.origin);
drawDesc[CE].mode |= DESC_CHANGE;
drawDesc[A1].mode |= DESC_CHANGE;
- /*no break*/
+ /*no break*/
case SEG_FILCRCL:
- REORIGIN(drawData.center, segPtr->u.c.center, angle, drawData.origin); //Remove angle
+ REORIGIN(drawData.center, segPtr->u.c.center, angle,
+ drawData.origin); //Remove angle
UNREORIGIN(segPtr->u.c.center, drawData.center, 0.0, drawData.origin);
drawDesc[CE].mode |= DESC_CHANGE;
break;
@@ -742,7 +783,7 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
case SEG_DIMLIN:
case SEG_BENCH:
case SEG_TBLEDGE:
- for (int i=0;i<2;i++) {
+ for (int i=0; i<2; i++) {
REORIGIN( drawData.endPt[i], segPtr->u.l.pos[i], angle, drawData.origin );
UNREORIGIN( segPtr->u.l.pos[i], drawData.endPt[i], 0.0, drawData.origin );
}
@@ -762,80 +803,83 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
}
}
xx->angle = drawData.rotate_angle = 0.0;
- if (!drawData.lock_origin) drawDesc[RA].mode = DESC_RO;
+ if (!drawData.lock_origin) { drawDesc[RA].mode = DESC_RO; }
drawDesc[RA].mode |= DESC_CHANGE;
break;
case AL: //Uses Pivot Point
case LA:;
ANGLE_T angle = NormalizeAngle(drawData.angle);
switch(segPtr->type) {
- case SEG_POLY:
- case SEG_FILPOLY:
- break; //Doesn't Use
- case SEG_CRVLIN: //Uses as swept angle
- switch ( drawData.pivot ) {
- case DESC_PIVOT_FIRST:
- segPtr->u.c.a1 = drawData.angle;
- drawData.angle1 = NormalizeAngle( drawData.angle0+segPtr->u.c.a1 );
- drawDesc[A2].mode |= DESC_CHANGE;
- break;
- case DESC_PIVOT_SECOND:
- segPtr->u.c.a0 = NormalizeAngle( segPtr->u.c.a1+segPtr->u.c.a0-drawData.angle);
- segPtr->u.c.a1 = drawData.angle;
- drawData.angle0 = NormalizeAngle( segPtr->u.c.a0 );
- drawData.angle1 = NormalizeAngle( drawData.angle0+segPtr->u.c.a1 );
- drawDesc[A1].mode |= DESC_CHANGE;
- drawDesc[A2].mode |= DESC_CHANGE;
- break;
- case DESC_PIVOT_MID:
- segPtr->u.c.a0 = NormalizeAngle( segPtr->u.c.a0+segPtr->u.c.a1/2.0-drawData.angle/2.0);
- segPtr->u.c.a1 = drawData.angle;
- drawData.angle0 = NormalizeAngle( segPtr->u.c.a0 );
- drawData.angle1 = NormalizeAngle( drawData.angle0+segPtr->u.c.a1 );
- drawDesc[A1].mode |= DESC_CHANGE;
- drawDesc[A2].mode |= DESC_CHANGE;
- break;
- default:
- break;
- }
- drawData.length = 2*M_PI*segPtr->u.c.radius*segPtr->u.c.a1/360;
- drawDesc[LN].mode = DESC_RO|DESC_CHANGE;
+ case SEG_POLY:
+ case SEG_FILPOLY:
+ break; //Doesn't Use
+ case SEG_CRVLIN: //Uses as swept angle
+ switch ( drawData.pivot ) {
+ case DESC_PIVOT_FIRST:
+ segPtr->u.c.a1 = drawData.angle;
+ drawData.angle1 = NormalizeAngle( drawData.angle0+segPtr->u.c.a1 );
+ drawDesc[A2].mode |= DESC_CHANGE;
break;
- case SEG_FILCRCL:
- break; //Doesn't Use
- case SEG_STRLIN:
- case SEG_DIMLIN:
- case SEG_BENCH:
- case SEG_TBLEDGE:
- switch ( drawData.pivot ) {
- case DESC_PIVOT_FIRST:
- Translate(&drawData.endPt[1],drawData.endPt[0],angle,drawData.length);
- UNREORIGIN(segPtr->u.l.pos[1], drawData.endPt[1], 0.0, xx->orig );
- drawDesc[E1].mode |= DESC_CHANGE;
- break;
- case DESC_PIVOT_MID:;
- coOrd middle;
- middle.x = (drawData.endPt[1].x+drawData.endPt[0].x)/2;
- middle.y = (drawData.endPt[1].y+drawData.endPt[0].y)/2;
- Translate(&drawData.endPt[0],middle,NormalizeAngle(angle+180),drawData.length/2);
- Translate(&drawData.endPt[1],middle,angle,drawData.length/2);
- UNREORIGIN(segPtr->u.l.pos[0], drawData.endPt[0], 0.0, xx->orig );
- UNREORIGIN(segPtr->u.l.pos[1], drawData.endPt[1], 0.0, xx->orig );
- drawDesc[E0].mode |= DESC_CHANGE;
- drawDesc[E1].mode |= DESC_CHANGE;
- break;
- case DESC_PIVOT_SECOND:
- Translate(&drawData.endPt[0],drawData.endPt[1],NormalizeAngle(angle+180),drawData.length);
- UNREORIGIN(segPtr->u.l.pos[0], drawData.endPt[0], 0.0, xx->orig );
- drawDesc[E0].mode |= DESC_CHANGE;
- break;
- default:
- break;
- }
+ case DESC_PIVOT_SECOND:
+ segPtr->u.c.a0 = NormalizeAngle( segPtr->u.c.a1+segPtr->u.c.a0-drawData.angle);
+ segPtr->u.c.a1 = drawData.angle;
+ drawData.angle0 = NormalizeAngle( segPtr->u.c.a0 );
+ drawData.angle1 = NormalizeAngle( drawData.angle0+segPtr->u.c.a1 );
+ drawDesc[A1].mode |= DESC_CHANGE;
+ drawDesc[A2].mode |= DESC_CHANGE;
break;
- case SEG_TEXT:
- break; //Doesnt Use
- default:;
+ case DESC_PIVOT_MID:
+ segPtr->u.c.a0 = NormalizeAngle( segPtr->u.c.a0+segPtr->u.c.a1/2.0
+ -drawData.angle/2.0);
+ segPtr->u.c.a1 = drawData.angle;
+ drawData.angle0 = NormalizeAngle( segPtr->u.c.a0 );
+ drawData.angle1 = NormalizeAngle( drawData.angle0+segPtr->u.c.a1 );
+ drawDesc[A1].mode |= DESC_CHANGE;
+ drawDesc[A2].mode |= DESC_CHANGE;
+ break;
+ default:
+ break;
+ }
+ drawData.length = 2*M_PI*segPtr->u.c.radius*segPtr->u.c.a1/360;
+ drawDesc[LN].mode = DESC_RO|DESC_CHANGE;
+ break;
+ case SEG_FILCRCL:
+ break; //Doesn't Use
+ case SEG_STRLIN:
+ case SEG_DIMLIN:
+ case SEG_BENCH:
+ case SEG_TBLEDGE:
+ switch ( drawData.pivot ) {
+ case DESC_PIVOT_FIRST:
+ Translate(&drawData.endPt[1],drawData.endPt[0],angle,drawData.length);
+ UNREORIGIN(segPtr->u.l.pos[1], drawData.endPt[1], 0.0, xx->orig );
+ drawDesc[E1].mode |= DESC_CHANGE;
+ break;
+ case DESC_PIVOT_MID:;
+ coOrd middle;
+ middle.x = (drawData.endPt[1].x+drawData.endPt[0].x)/2;
+ middle.y = (drawData.endPt[1].y+drawData.endPt[0].y)/2;
+ Translate(&drawData.endPt[0],middle,NormalizeAngle(angle+180),
+ drawData.length/2);
+ Translate(&drawData.endPt[1],middle,angle,drawData.length/2);
+ UNREORIGIN(segPtr->u.l.pos[0], drawData.endPt[0], 0.0, xx->orig );
+ UNREORIGIN(segPtr->u.l.pos[1], drawData.endPt[1], 0.0, xx->orig );
+ drawDesc[E0].mode |= DESC_CHANGE;
+ drawDesc[E1].mode |= DESC_CHANGE;
+ break;
+ case DESC_PIVOT_SECOND:
+ Translate(&drawData.endPt[0],drawData.endPt[1],NormalizeAngle(angle+180),
+ drawData.length);
+ UNREORIGIN(segPtr->u.l.pos[0], drawData.endPt[0], 0.0, xx->orig );
+ drawDesc[E0].mode |= DESC_CHANGE;
+ break;
+ default:
+ break;
+ }
+ break;
+ case SEG_TEXT:
+ break; //Doesnt Use
+ default:;
}
break;
case LN:
@@ -848,12 +892,14 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
if ( segPtr->type != SEG_CRVLIN ) {
switch ( drawData.pivot ) {
case DESC_PIVOT_FIRST:
- Translate( &drawData.endPt[1], drawData.endPt[0], drawData.angle, drawData.length );
+ Translate( &drawData.endPt[1], drawData.endPt[0], drawData.angle,
+ drawData.length );
UNREORIGIN( segPtr->u.l.pos[1], drawData.endPt[1], 0.0, xx->orig );
drawDesc[E1].mode |= DESC_CHANGE;
break;
case DESC_PIVOT_SECOND:
- Translate( &drawData.endPt[0], drawData.endPt[1], drawData.angle+180.0, drawData.length );
+ Translate( &drawData.endPt[0], drawData.endPt[1], drawData.angle+180.0,
+ drawData.length );
UNREORIGIN( segPtr->u.l.pos[0], drawData.endPt[0], 0.0, xx->orig );
drawDesc[E0].mode |= DESC_CHANGE;
break;
@@ -877,15 +923,19 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
break;
case RD:
if ( drawData.pivot == DESC_PIVOT_FIRST ) {
- Translate( &segPtr->u.c.center, segPtr->u.c.center, segPtr->u.c.a0, segPtr->u.c.radius-drawData.radius );
+ Translate( &segPtr->u.c.center, segPtr->u.c.center, segPtr->u.c.a0,
+ segPtr->u.c.radius-drawData.radius );
} else if ( drawData.pivot == DESC_PIVOT_SECOND ) {
- Translate( &segPtr->u.c.center, segPtr->u.c.center, segPtr->u.c.a0+segPtr->u.c.a1, segPtr->u.c.radius-drawData.radius );
+ Translate( &segPtr->u.c.center, segPtr->u.c.center,
+ segPtr->u.c.a0+segPtr->u.c.a1, segPtr->u.c.radius-drawData.radius );
} else {
- Translate( &segPtr->u.c.center, segPtr->u.c.center, (segPtr->u.c.a0+segPtr->u.c.a1)/2.0, segPtr->u.c.radius-drawData.radius );
+ Translate( &segPtr->u.c.center, segPtr->u.c.center,
+ (segPtr->u.c.a0+segPtr->u.c.a1)/2.0, segPtr->u.c.radius-drawData.radius );
}
drawDesc[CE].mode |= DESC_CHANGE;
segPtr->u.c.radius = drawData.radius;
- drawData.length = 2*M_PI*segPtr->u.c.radius*(segPtr->type==SEG_CRVLIN?segPtr->u.c.a1/360:1.0);
+ drawData.length = 2*M_PI*segPtr->u.c.radius*(segPtr->type==SEG_CRVLIN
+ ?segPtr->u.c.a1/360:1.0);
drawDesc[LN].mode = DESC_RO|DESC_CHANGE;
break;
case A1: //Angle of first point of curve
@@ -899,15 +949,19 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
drawDesc[A1].mode |= DESC_CHANGE;
break;
case BE:
- BenchUpdateOrientationList( VP2L( wListGetItemContext((wList_p)drawDesc[BE].control0, drawData.benchChoice)), (wList_p)drawDesc[OR].control0 );
- if ( drawData.benchOrient < wListGetCount( (wList_p)drawDesc[OR].control0 ) )
+ BenchUpdateOrientationList( VP2L( wListGetItemContext((wList_p)
+ drawDesc[BE].control0, drawData.benchChoice)), (wList_p)drawDesc[OR].control0 );
+ if ( drawData.benchOrient < wListGetCount( (wList_p)drawDesc[OR].control0 ) ) {
wListSetIndex( (wList_p)drawDesc[OR].control0, drawData.benchOrient );
- else
+ } else {
drawData.benchOrient = 0;
- segPtr->u.l.option = GetBenchData( VP2L(wListGetItemContext((wList_p)drawDesc[BE].control0, drawData.benchChoice)), drawData.benchOrient );
+ }
+ segPtr->u.l.option = GetBenchData( VP2L(wListGetItemContext((
+ wList_p)drawDesc[BE].control0, drawData.benchChoice)), drawData.benchOrient );
break;
case OR:
- segPtr->u.l.option = GetBenchData( VP2L(wListGetItemContext((wList_p)drawDesc[BE].control0, drawData.benchChoice)), drawData.benchOrient );
+ segPtr->u.l.option = GetBenchData( VP2L(wListGetItemContext((
+ wList_p)drawDesc[BE].control0, drawData.benchChoice)), drawData.benchOrient );
break;
case DS:
segPtr->u.l.option = drawData.dimenSize;
@@ -918,7 +972,7 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
case PP:
off.x = drawData.endPt[0].x - drawData.oldE0.x;
off.y = drawData.endPt[0].y - drawData.oldE0.y;
- for (int i=0;i<segPtr->u.p.cnt;i++) {
+ for (int i=0; i<segPtr->u.p.cnt; i++) {
REORIGIN( pt, segPtr->u.p.pts[i].pt, 0.0, xx->orig );
pt.x += off.x;
pt.y += off.y;
@@ -933,7 +987,8 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
break;
case TS:
fontSize = (long)segPtr->u.t.fontSize;
- UpdateFontSizeList( &fontSize, (wList_p)drawDesc[TS].control0, drawData.fontSizeInx );
+ UpdateFontSizeList( &fontSize, (wList_p)drawDesc[TS].control0,
+ drawData.fontSizeInx );
segPtr->u.t.fontSize = fontSize;
break;
case FL:
@@ -946,7 +1001,6 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
if(drawData.filled) {
if (segPtr->type == SEG_POLY) {
segPtr->type = SEG_FILPOLY;
- segPtr->u.p.polyType = FREEFORM;
drawData.open = FALSE;
drawDesc[OP].mode = DESC_RO|DESC_CHANGE;
}
@@ -958,7 +1012,6 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
} else {
if (segPtr->type == SEG_FILPOLY) {
segPtr->type = SEG_POLY;
- segPtr->u.p.polyType = FREEFORM;
drawData.open = FALSE;
drawDesc[OP].mode = DESC_CHANGE;
}
@@ -995,9 +1048,16 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
segPtr->u.t.boxed = drawData.boxed;
break;
case TX:
- if ( wTextGetModified((wText_p)drawDesc[TX].control0 )) {
+ if ( wTextGetModified((wText_p)drawDesc[TX].control0 ) ||
+ inPlayback ) {
int len = wTextGetSize((wText_p)drawDesc[TX].control0);
- MyFree( segPtr->u.t.string );
+ // TODO - minor memory leak, but this allows Undo on text object. See BUG-527
+ // MyFree( segPtr->u.t.string );
+ if ( !descUndoStarted ) {
+ UndoStart( _("Change Track"), "Change Track");
+ descUndoStarted = TRUE;
+ }
+ UndoModify( trk );
if (len>STR_HUGE_SIZE-8) { //Truncate string to max
len = STR_HUGE_SIZE-8;
ErrorMessage( MSG_TEXT_TOO_LONG );
@@ -1024,7 +1084,7 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
xx->lineType = drawData.lineType;
break;
default:
- AbortProg( "bad op" );
+ CHECKMSG( FALSE, ( "bad op: %d", inx ) );
}
drawData.oldE0 = drawData.endPt[0];
drawData.oldE1 = drawData.endPt[1];
@@ -1035,7 +1095,6 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
TempRedraw(); // UpdateDraw
}
-extern BOOL_T inDescribeCmd;
static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
{
@@ -1044,12 +1103,13 @@ static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
trkSeg_p segPtr;
int inx;
char * title = NULL;
- char * polyType = NULL;
+// char * polyType = NULL;
DistanceSegs( xx->orig, xx->angle, xx->segCnt, xx->segs, &pos, &drawSegInx );
- if ( drawSegInx==-1 )
+ if ( drawSegInx==-1 ) {
return;
+ }
segPtr = &xx->segs[drawSegInx];
for ( inx=0; inx<COUNT( drawDesc ); inx++ ) {
drawDesc[inx].mode = DESC_IGNORE;
@@ -1058,20 +1118,17 @@ static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
drawData.color = segPtr->color;
drawData.layer = GetTrkLayer(trk);
drawDesc[CO].mode = 0;
- if (drawData.lineWidth<0)
- drawData.lineWidth = (long)segPtr->width;
- else
- drawData.lineWidth = (long)floor(segPtr->width*75.0+0.5);
+ drawData.lineWidth = segPtr->lineWidth;
drawDesc[LW].mode = 0;
drawDesc[LY].mode = DESC_NOREDRAW;
drawDesc[BE].mode =
- drawDesc[OR].mode =
- drawDesc[LT].mode =
- drawDesc[DS].mode = DESC_IGNORE;
+ drawDesc[OR].mode =
+ drawDesc[LT].mode =
+ drawDesc[DS].mode = DESC_IGNORE;
drawData.pivot = DESC_PIVOT_MID;
- if ((xx->orig.x == 0.0) && (xx->orig.y == 0.0)) drawData.lock_origin = FALSE;
- else drawData.lock_origin = TRUE;
+ if ((xx->orig.x == 0.0) && (xx->orig.y == 0.0)) { drawData.lock_origin = FALSE; }
+ else { drawData.lock_origin = TRUE; }
drawData.rotate_angle = 0.0;
@@ -1092,14 +1149,14 @@ static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
UNREORIGIN(segPtr->u.l.pos[1], drawData.endPt[1], 0.0, xx->orig);
xx->angle = 0.0;
drawDesc[LN].mode =
- drawDesc[LA].mode =
- drawDesc[PV].mode = 0;
+ drawDesc[LA].mode =
+ drawDesc[PV].mode = 0;
drawDesc[E0].mode =
- drawDesc[OI].mode = 0;
+ drawDesc[OI].mode = 0;
drawDesc[E1].mode = 0;
drawDesc[RA].mode = 0;
- if (!drawData.lock_origin) drawDesc[RA].mode = DESC_RO;
- else drawDesc[RA].mode = 0;
+ if (!drawData.lock_origin) { drawDesc[RA].mode = DESC_RO; }
+ else { drawDesc[RA].mode = 0; }
switch (segPtr->type) {
case SEG_STRLIN:
title = _("Straight Line");
@@ -1109,29 +1166,29 @@ static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
case SEG_DIMLIN:
title = _("Dimension Line");
drawDesc[CO].mode =
- drawDesc[LW].mode =
- drawDesc[LK].mode =
- drawDesc[OI].mode =
- drawDesc[RA].mode = DESC_IGNORE;
+ drawDesc[LW].mode =
+ drawDesc[LK].mode =
+ drawDesc[OI].mode =
+ drawDesc[RA].mode = DESC_IGNORE;
drawData.dimenSize = (wIndex_t)segPtr->u.l.option;
drawDesc[DS].mode = 0;
break;
case SEG_BENCH:
title = _("Lumber");
drawDesc[LK].mode =
- drawDesc[OI].mode =
- drawDesc[RA].mode =
- drawDesc[LW].mode = DESC_IGNORE;
+ drawDesc[OI].mode =
+ drawDesc[RA].mode =
+ drawDesc[LW].mode = DESC_IGNORE;
drawDesc[BE].mode =
- drawDesc[OR].mode = 0;
+ drawDesc[OR].mode = 0;
drawData.benchChoice = GetBenchListIndex( segPtr->u.l.option );
drawData.benchOrient = (wIndex_t)(segPtr->u.l.option&0xFF);
break;
case SEG_TBLEDGE:
title = _("Table Edge");
drawDesc[LK].mode =
- drawDesc[OI].mode =
- drawDesc[RA].mode = DESC_IGNORE;
+ drawDesc[OI].mode =
+ drawDesc[RA].mode = DESC_IGNORE;
drawDesc[CO].mode = DESC_IGNORE;
drawDesc[LW].mode = DESC_IGNORE;
break;
@@ -1141,14 +1198,14 @@ static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
REORIGIN( drawData.center, segPtr->u.c.center, xx->angle, xx->orig );
//Remove input Angle (if any)
UNREORIGIN(segPtr->u.c.center, drawData.center, 0.0, xx->orig);
- xx->angle = 0.0;
+ xx->angle = 0.0;
drawData.radius = fabs(segPtr->u.c.radius);
drawData.origin = xx->orig;
drawDesc[OI].mode = 0;
drawDesc[CE].mode =
- drawDesc[RD].mode = 0;
- if (!drawData.lock_origin) drawDesc[RA].mode = DESC_RO;
- else drawDesc[RA].mode = 0;
+ drawDesc[RD].mode = 0;
+ if (!drawData.lock_origin) { drawDesc[RA].mode = DESC_RO; }
+ else { drawDesc[RA].mode = 0; }
drawDesc[LT].mode = 0;
drawData.lineType = (wIndex_t)xx->lineType;
if ( segPtr->u.c.a1 >= 360.0 ) {
@@ -1164,8 +1221,8 @@ static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
drawDesc[LN].mode = DESC_RO;
drawData.length = 2*M_PI*segPtr->u.c.radius*segPtr->u.c.a1/360;
drawDesc[AL].mode =
- drawDesc[A1].mode =
- drawDesc[A2].mode = 0;
+ drawDesc[A1].mode =
+ drawDesc[A2].mode = 0;
drawDesc[PV].mode = 0;
title = _("Curved Line");
}
@@ -1174,18 +1231,18 @@ static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
REORIGIN( drawData.center, segPtr->u.c.center, xx->angle, xx->orig );
//Remove input Angle (if any)
UNREORIGIN(segPtr->u.c.center, drawData.center, 0.0, xx->orig);
- xx->angle = 0.0;
+ xx->angle = 0.0;
drawData.radius = fabs(segPtr->u.c.radius);
drawData.origin = xx->orig;
drawDesc[OI].mode =
- drawDesc[FL].mode = 0;
- if (!drawData.lock_origin) drawDesc[RA].mode = DESC_RO;
- else drawDesc[RA].mode = 0;
+ drawDesc[FL].mode = 0;
+ if (!drawData.lock_origin) { drawDesc[RA].mode = DESC_RO; }
+ else { drawDesc[RA].mode = 0; }
drawData.filled = TRUE;
drawData.length = 0.0;
drawDesc[LN].mode = DESC_RO;
drawDesc[CE].mode =
- drawDesc[RD].mode = 0;
+ drawDesc[RD].mode = 0;
drawDesc[PV].mode = 0;
drawDesc[OI].mode = 0;
drawDesc[LW].mode = DESC_IGNORE;
@@ -1194,10 +1251,10 @@ static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
case SEG_POLY:
case SEG_FILPOLY:;
BOOL_T filled = FALSE;
- if (segPtr->type == SEG_FILPOLY) filled = TRUE;
+ if (segPtr->type == SEG_FILPOLY) { filled = TRUE; }
REORIGIN(drawData.endPt[0],segPtr->u.p.pts[0].pt, xx->angle, xx->orig);
//Remove input Angle (if any)
- for (int i=0;i<segPtr->u.p.cnt;i++) {
+ for (int i=0; i<segPtr->u.p.cnt; i++) {
coOrd pt;
REORIGIN(pt,segPtr->u.p.pts[i].pt, xx->angle, xx->orig);
UNREORIGIN(segPtr->u.p.pts[i].pt, pt, 0.0, xx->orig);
@@ -1209,8 +1266,8 @@ static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
drawData.filled = filled;
drawDesc[FL].mode = 0;
drawData.angle = 0.0;
- if (!drawData.lock_origin) drawDesc[RA].mode = DESC_RO;
- else drawDesc[RA].mode = 0;
+ if (!drawData.lock_origin) { drawDesc[RA].mode = DESC_RO; }
+ else { drawDesc[RA].mode = 0; }
drawData.origin = xx->orig;
drawDesc[OI].mode = 0;
drawData.open= FALSE;
@@ -1218,29 +1275,29 @@ static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
drawDesc[LT].mode = 0;
drawData.lineType = (wIndex_t)xx->lineType;
switch (segPtr->u.p.polyType) {
- case RECTANGLE:
- title = filled?_("Filled Rectangle"):_("Rectangle");
- drawDesc[OP].mode = DESC_IGNORE;
- drawDesc[VC].mode = DESC_IGNORE;
- drawData.width = FindDistance(segPtr->u.p.pts[0].pt, segPtr->u.p.pts[1].pt);
- drawDesc[WT].mode = 0;
- drawData.height = FindDistance(segPtr->u.p.pts[0].pt, segPtr->u.p.pts[3].pt);
- drawDesc[HT].mode = 0;
- for(int i=0;i<4;i++) {
- REORIGIN( drawData.endPt[i], segPtr->u.p.pts[i].pt, xx->angle, xx->orig );
- }
- drawDesc[E0].mode = DESC_IGNORE;
- drawData.origin = xx->orig;
- break;
- case POLYLINE:
- title = _("Polyline");
- drawData.open=TRUE;
- drawData.filled= FALSE;
- drawDesc[FL].mode = DESC_RO;
- drawDesc[OP].mode = 0;
- break;
- default:
- title = filled?_("Filled Polygon"):_("Polygon");
+ case RECTANGLE:
+ title = filled?_("Filled Rectangle"):_("Rectangle");
+ drawDesc[OP].mode = DESC_IGNORE;
+ drawDesc[VC].mode = DESC_IGNORE;
+ drawData.width = FindDistance(segPtr->u.p.pts[0].pt, segPtr->u.p.pts[1].pt);
+ drawDesc[WT].mode = 0;
+ drawData.height = FindDistance(segPtr->u.p.pts[0].pt, segPtr->u.p.pts[3].pt);
+ drawDesc[HT].mode = 0;
+ for(int i=0; i<4; i++) {
+ REORIGIN( drawData.endPt[i], segPtr->u.p.pts[i].pt, xx->angle, xx->orig );
+ }
+ drawDesc[E0].mode = DESC_IGNORE;
+ drawData.origin = xx->orig;
+ break;
+ case POLYLINE:
+ title = _("Polyline");
+ drawData.open=TRUE;
+ drawData.filled= FALSE;
+ drawDesc[FL].mode = DESC_RO;
+ drawDesc[OP].mode = 0;
+ break;
+ default:
+ title = filled?_("Filled Polygon"):_("Polygon");
}
break;
case SEG_TEXT:
@@ -1253,16 +1310,16 @@ static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
drawData.text[sizeof drawData.text-1] ='\0';
drawData.boxed = segPtr->u.t.boxed;
drawDesc[TP].mode =
- drawDesc[TS].mode =
- drawDesc[TX].mode =
- drawDesc[TA].mode =
- drawDesc[LK].mode =
- drawDesc[OI].mode =
- drawDesc[BX].mode = 0;
- if (!drawData.lock_origin) drawDesc[RA].mode = DESC_RO;
- else drawDesc[RA].mode = 0;
+ drawDesc[TS].mode =
+ drawDesc[TX].mode =
+ drawDesc[TA].mode =
+ drawDesc[LK].mode =
+ drawDesc[OI].mode =
+ drawDesc[BX].mode = 0;
+ if (!drawData.lock_origin) { drawDesc[RA].mode = DESC_RO; }
+ else { drawDesc[RA].mode = 0; }
drawDesc[E0].mode = DESC_IGNORE;
- drawDesc[CO].mode = 0; /*Allow Text color setting*/
+ drawDesc[CO].mode = 0; /*Allow Text color setting*/
drawDesc[LW].mode = DESC_IGNORE;
title = _("Text");
break;
@@ -1270,9 +1327,10 @@ static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
;
}
- snprintf( str, len, _("%s(%d) Layer=%d"), title, GetTrkIndex(trk), GetTrkLayer(trk)+1 );
+ snprintf( str, len, _("%s(%d) Layer=%d"), title, GetTrkIndex(trk),
+ GetTrkLayer(trk)+1 );
- if (!inDescribeCmd) return;
+ if (!inDescribeCmd) { return; }
drawData.oldE0 = drawData.endPt[0];
drawData.oldE1 = drawData.endPt[1];
@@ -1282,13 +1340,17 @@ static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
DoDescribe( title, trk, drawDesc, UpdateDraw );
- if ( segPtr->type==SEG_BENCH && drawDesc[BE].control0!=NULL && drawDesc[OR].control0!=NULL) {
- BenchLoadLists( (wList_p)drawDesc[BE].control0, (wList_p)drawDesc[OR].control0 );
+ if ( segPtr->type==SEG_BENCH && drawDesc[BE].control0!=NULL
+ && drawDesc[OR].control0!=NULL) {
+ BenchLoadLists( (wList_p)drawDesc[BE].control0,
+ (wList_p)drawDesc[OR].control0 );
wListSetIndex( (wList_p)drawDesc[BE].control0, drawData.benchChoice );
- BenchUpdateOrientationList( VP2L(wListGetItemContext((wList_p)drawDesc[BE].control0, drawData.benchChoice)), (wList_p)drawDesc[OR].control0 );
+ BenchUpdateOrientationList( VP2L(wListGetItemContext((wList_p)
+ drawDesc[BE].control0, drawData.benchChoice)), (wList_p)drawDesc[OR].control0 );
wListSetIndex( (wList_p)drawDesc[OR].control0, drawData.benchOrient );
}
- if ( (segPtr->type==SEG_STRLIN || segPtr->type==SEG_CRVLIN || segPtr->type==SEG_POLY) && drawDesc[LT].control0!=NULL) {
+ if ( (segPtr->type==SEG_STRLIN || segPtr->type==SEG_CRVLIN
+ || segPtr->type==SEG_POLY) && drawDesc[LT].control0!=NULL) {
wListClear( (wList_p)drawDesc[LT].control0 );
wListAddValue( (wList_p)drawDesc[LT].control0, _("Solid"), NULL, I2VP(0 ));
wListAddValue( (wList_p)drawDesc[LT].control0, _("Dash"), NULL, I2VP(1 ));
@@ -1319,12 +1381,12 @@ static void DrawDraw( track_p t, drawCmd_p d, wDrawColor color )
unsigned long NotSolid = ~(DC_NOTSOLIDLINE);
d->options &= NotSolid;
if (xx->lineType == DRAWLINESOLID) {}
- else if (xx->lineType == DRAWLINEDASH) d->options |= DC_DASH;
- else if (xx->lineType == DRAWLINEDOT) d->options |= DC_DOT;
- else if (xx->lineType == DRAWLINEDASHDOT) d->options |= DC_DASHDOT;
- else if (xx->lineType == DRAWLINEDASHDOTDOT) d->options |= DC_DASHDOTDOT;
- else if (xx->lineType == DRAWLINECENTER) d->options |= DC_CENTER;
- else if (xx->lineType == DRAWLINEPHANTOM) d->options |= DC_PHANTOM;
+ else if (xx->lineType == DRAWLINEDASH) { d->options |= DC_DASH; }
+ else if (xx->lineType == DRAWLINEDOT) { d->options |= DC_DOT; }
+ else if (xx->lineType == DRAWLINEDASHDOT) { d->options |= DC_DASHDOT; }
+ else if (xx->lineType == DRAWLINEDASHDOTDOT) { d->options |= DC_DASHDOTDOT; }
+ else if (xx->lineType == DRAWLINECENTER) { d->options |= DC_CENTER; }
+ else if (xx->lineType == DRAWLINEPHANTOM) { d->options |= DC_PHANTOM; }
DrawSegs( d, xx->orig, xx->angle, xx->segs, xx->segCnt, 0.0, color );
d->options = d->options&~(DC_NOTSOLIDLINE);
}
@@ -1335,7 +1397,7 @@ static void DeleteDraw( track_p t )
/* Get rid of points if specified */
struct extraDataDraw_t * xx = GET_EXTRA_DATA(t, T_DRAW, extraDataDraw_t);
if (xx->segs[0].type == SEG_POLY ||
- xx->segs[0].type == SEG_FILPOLY) {
+ xx->segs[0].type == SEG_FILPOLY) {
MyFree(xx->segs[0].u.p.pts);
xx->segs[0].u.p.pts = NULL;
}
@@ -1346,9 +1408,10 @@ static BOOL_T WriteDraw( track_p t, FILE * f )
{
struct extraDataDraw_t * xx = GET_EXTRA_DATA(t, T_DRAW, extraDataDraw_t);
BOOL_T rc = TRUE;
- rc &= fprintf(f, "DRAW %d %d %d 0 0 %0.6f %0.6f 0 %0.6f\n", GetTrkIndex(t), GetTrkLayer(t),
- xx->lineType,
- xx->orig.x, xx->orig.y, xx->angle )>0;
+ rc &= fprintf(f, "DRAW %d %d %d 0 0 %0.6f %0.6f 0 %0.6f\n", GetTrkIndex(t),
+ GetTrkLayer(t),
+ xx->lineType,
+ xx->orig.x, xx->orig.y, xx->angle )>0;
rc &= WriteSegs( f, xx->segCnt, xx->segs );
return rc;
}
@@ -1365,25 +1428,29 @@ static BOOL_T ReadDraw( char * header )
int lineType;
struct extraDataDraw_t * xx;
- if ( !GetArgs( header+5, paramVersion<3?"dXXpYf":paramVersion<9?"dLX00pYf":"dLd00pff",
- &index, &layer, &lineType, &orig, &elev, &angle ) )
+ if ( !GetArgs( header+5,
+ paramVersion<3?"dXXpYf":paramVersion<9?"dLX00pYf":"dLd00pff",
+ &index, &layer, &lineType, &orig, &elev, &angle ) ) {
return FALSE;
- if ( !ReadSegs() )
+ }
+ if ( !ReadSegs() ) {
return FALSE;
+ }
if (tempSegs_da.cnt == 1) {
trk = MakeDrawFromSeg1( index, orig, angle, &tempSegs(0) );
xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
xx->lineType = lineType;
SetTrkLayer( trk, layer );
} else {
- trk = NewTrack( index, T_DRAW, 0, sizeof *xx + (tempSegs_da.cnt-1) * sizeof *(trkSeg_p)0 );
+ trk = NewTrack( index, T_DRAW, 0,
+ sizeof *xx + (tempSegs_da.cnt-1) * sizeof *(trkSeg_p)0 );
SetTrkLayer( trk, layer );
xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
xx->orig = orig;
xx->angle = angle;
xx->segCnt = tempSegs_da.cnt;
xx->lineType = lineType;
- memcpy( xx->segs, tempSegs_da.ptr, tempSegs_da.cnt * sizeof *(trkSeg_p)0 );
+ memcpy( xx->segs, &tempSegs(0), tempSegs_da.cnt * sizeof *(trkSeg_p)0 );
ComputeDrawBoundingBox( trk );
}
return TRUE;
@@ -1398,28 +1465,28 @@ static void MoveDraw( track_p trk, coOrd off )
if (xx->orig.x == 0.0 && xx->orig.y == 0.0) { //No origin set
switch(segPtr->type) {
- case SEG_POLY:
- case SEG_FILPOLY:
- for (int i=0;i<segPtr->u.p.cnt;i++) {
- REORIGIN( segPtr->u.p.pts[i].pt, segPtr->u.p.pts[i].pt, 0.0, off );
- }
+ case SEG_POLY:
+ case SEG_FILPOLY:
+ for (int i=0; i<segPtr->u.p.cnt; i++) {
+ REORIGIN( segPtr->u.p.pts[i].pt, segPtr->u.p.pts[i].pt, 0.0, off );
+ }
break;
- case SEG_STRLIN:
- case SEG_DIMLIN:
- case SEG_BENCH:
- case SEG_TBLEDGE:
- for (int i=0;i<2;i++) {
- REORIGIN( segPtr->u.l.pos[i], segPtr->u.l.pos[i], 0.0, off );
- }
- break;
- case SEG_CRVLIN:
- case SEG_FILCRCL:
- REORIGIN( segPtr->u.c.center, segPtr->u.c.center, 0.0, off );
- break;
- case SEG_TEXT:
- REORIGIN( segPtr->u.t.pos, segPtr->u.t.pos, 0.0, off );
- break;
- default:;
+ case SEG_STRLIN:
+ case SEG_DIMLIN:
+ case SEG_BENCH:
+ case SEG_TBLEDGE:
+ for (int i=0; i<2; i++) {
+ REORIGIN( segPtr->u.l.pos[i], segPtr->u.l.pos[i], 0.0, off );
+ }
+ break;
+ case SEG_CRVLIN:
+ case SEG_FILCRCL:
+ REORIGIN( segPtr->u.c.center, segPtr->u.c.center, 0.0, off );
+ break;
+ case SEG_TEXT:
+ REORIGIN( segPtr->u.t.pos, segPtr->u.t.pos, 0.0, off );
+ break;
+ default:;
}
} else {
@@ -1436,30 +1503,30 @@ static void RotateDraw( track_p trk, coOrd orig, ANGLE_T angle )
trkSeg_p segPtr = &xx->segs[0];
if (xx->orig.x == 0.0 && xx->orig.y == 0.0) { //No origin set
switch(segPtr->type) {
- case SEG_POLY:
- case SEG_FILPOLY:
- for (int i=0;i<segPtr->u.p.cnt;i++) {
- Rotate(&segPtr->u.p.pts[i].pt, orig, angle );
- }
+ case SEG_POLY:
+ case SEG_FILPOLY:
+ for (int i=0; i<segPtr->u.p.cnt; i++) {
+ Rotate(&segPtr->u.p.pts[i].pt, orig, angle );
+ }
break;
- case SEG_STRLIN:
- case SEG_DIMLIN:
- case SEG_BENCH:
- case SEG_TBLEDGE:
- for (int i=0;i<2;i++) {
- Rotate( &segPtr->u.l.pos[i], orig, angle );
- }
- break;
- case SEG_CRVLIN:
- case SEG_FILCRCL:
- Rotate( &segPtr->u.c.center, orig, angle );
- segPtr->u.c.a0 = NormalizeAngle(segPtr->u.c.a0 + angle);
- break;
- case SEG_TEXT:
- Rotate( &segPtr->u.t.pos, orig, angle );
- segPtr->u.t.angle = NormalizeAngle(segPtr->u.t.angle+angle+xx->angle);
- break;
- default:;
+ case SEG_STRLIN:
+ case SEG_DIMLIN:
+ case SEG_BENCH:
+ case SEG_TBLEDGE:
+ for (int i=0; i<2; i++) {
+ Rotate( &segPtr->u.l.pos[i], orig, angle );
+ }
+ break;
+ case SEG_CRVLIN:
+ case SEG_FILCRCL:
+ Rotate( &segPtr->u.c.center, orig, angle );
+ segPtr->u.c.a0 = NormalizeAngle(segPtr->u.c.a0 + angle);
+ break;
+ case SEG_TEXT:
+ Rotate( &segPtr->u.t.pos, orig, angle );
+ segPtr->u.t.angle = NormalizeAngle(segPtr->u.t.angle+angle+xx->angle);
+ break;
+ default:;
}
} else {
Rotate( &xx->orig, orig, angle );
@@ -1477,23 +1544,27 @@ static void RescaleDraw( track_p trk, FLOAT_T ratio )
RescaleSegs( xx->segCnt, xx->segs, ratio, ratio, ratio );
}
-static void DoConvertFill(void) {
+#if 0
+static void DoConvertFill(void)
+{
}
+#endif
static drawModContext_t drawModCmdContext = {
- InfoMessage,
- DoRedraw,
- &mainD};
+ InfoMessage,
+ DoRedraw,
+ &mainD
+};
static BOOL_T infoSubst = FALSE;
-static paramIntegerRange_t i100_100 = { -100, 100, 25 }; //Allow negative numbers
+static paramFloatRange_t r100_100 = { -100.0, 100.0, 50 }; //Allow negative numbers
static paramFloatRange_t r0d001_10000 = { 0.001, 10000 };
-static paramFloatRange_t r1_10000 = { 1, 10000 };
+//static paramFloatRange_t r1_10000 = { 1, 10000 };
static paramFloatRange_t r0_10000 = { 0, 10000 };
-static paramFloatRange_t r10000_10000 = {-10000, 10000};
+//static paramFloatRange_t r10000_10000 = {-10000, 10000};
static paramFloatRange_t r360_360 = { -360, 360, 80 };
static paramFloatRange_t r0_360 = { 0, 360, 80 };
static paramData_t drawModPLs[] = {
@@ -1526,15 +1597,16 @@ static paramData_t drawModPLs[] = {
static paramGroup_t drawModPG = { "drawMod", 0, drawModPLs, COUNT( drawModPLs ) };
static void DrawModDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
- DrawGeomModify(C_UPDATE,zero,&drawModCmdContext);
- ParamLoadControl(&drawModPG,drawModRotCenterInx-1); //Make sure the angle is updated in case center moved
- ParamLoadControl(&drawModPG,drawModRadius); // Make sure Radius updated
- ParamLoadControl(&drawModPG,drawModRelAngle); //Relative Angle as well
- MainRedraw();
+ DrawGeomModify(C_UPDATE,zero,&drawModCmdContext);
+ ParamLoadControl(&drawModPG,
+ drawModRotCenterInx-1); //Make sure the angle is updated in case center moved
+ ParamLoadControl(&drawModPG,drawModRadius); // Make sure Radius updated
+ ParamLoadControl(&drawModPG,drawModRelAngle); //Relative Angle as well
+ MainRedraw();
}
@@ -1556,20 +1628,23 @@ static STATUS_T ModifyDraw( track_p trk, wAction_t action, coOrd pos )
switch(action&0xFF) { //Remove Text value
case C_START:
+ for (int inx = 0; inx < COUNT(drawModPLs); ++inx ) {
+ drawModPLs[inx].option |= PDO_DLGIGNORE;
+ }
drawModCmdContext.type = xx->segs[0].type;
switch(drawModCmdContext.type) {
- case SEG_POLY:
- case SEG_FILPOLY:
- drawModCmdContext.filled = (drawModCmdContext.type==SEG_FILPOLY)?TRUE:FALSE;
- drawModCmdContext.subtype = xx->segs[0].u.p.polyType;
- drawModCmdContext.open = (drawModCmdContext.subtype==POLYLINE)?TRUE:FALSE;
- break;
- case SEG_TEXT:
- InfoMessage("Text can only be modified in Describe Mode");
- wBeep();
- return C_ERROR;
- default:
- break;
+ case SEG_POLY:
+ case SEG_FILPOLY:
+ drawModCmdContext.filled = (drawModCmdContext.type==SEG_FILPOLY)?TRUE:FALSE;
+ drawModCmdContext.subtype = xx->segs[0].u.p.polyType;
+ drawModCmdContext.open = (drawModCmdContext.subtype==POLYLINE)?TRUE:FALSE;
+ break;
+ case SEG_TEXT:
+ InfoMessage("Text can only be modified in Describe Mode");
+ wBeep();
+ return C_ERROR;
+ default:
+ break;
}
drawModCmdContext.rot_moved = FALSE;
@@ -1616,6 +1691,8 @@ static STATUS_T ModifyDraw( track_p trk, wAction_t action, coOrd pos )
if (drawModCmdContext.prev_inx >= 0) {
controls[0] = drawModLengthPD.control;
controls[1] = drawModRelAnglePD.control;
+ drawModLengthPD.option &= ~PDO_DLGIGNORE;
+ drawModRelAnglePD.option &= ~PDO_DLGIGNORE;
controls[2] = NULL;
labels[0] = N_("Seg Lth");
labels[1] = N_("Rel Ang");
@@ -1628,6 +1705,8 @@ static STATUS_T ModifyDraw( track_p trk, wAction_t action, coOrd pos )
} else {
controls[0] = drawModWidthPD.control;
controls[1] = drawModHeightPD.control;
+ drawModWidthPD.option &= ~PDO_DLGIGNORE;
+ drawModHeightPD.option &= ~PDO_DLGIGNORE;
controls[2] = NULL;
labels[0] = N_("Width");
labels[1] = N_("Height");
@@ -1637,13 +1716,15 @@ static STATUS_T ModifyDraw( track_p trk, wAction_t action, coOrd pos )
drawModHeightPD.option &= ~PDO_NORECORD;
infoSubst = TRUE;
}
- break;
+ break;
case SEG_STRLIN:
case SEG_BENCH:
case SEG_DIMLIN:
case SEG_TBLEDGE:
controls[0] = drawModLengthPD.control;
controls[1] = drawModAnglePD.control;
+ drawModLengthPD.option &= ~PDO_DLGIGNORE;
+ drawModAnglePD.option &= ~PDO_DLGIGNORE;
controls[2] = NULL;
labels[0] = N_("Length");
labels[1] = N_("Angle");
@@ -1652,13 +1733,15 @@ static STATUS_T ModifyDraw( track_p trk, wAction_t action, coOrd pos )
drawModLengthPD.option &= ~PDO_NORECORD;
drawModAnglePD.option &= ~PDO_NORECORD;
infoSubst = TRUE;
- break;
+ break;
case SEG_CRVLIN:
case SEG_FILCRCL:
controls[0] = drawModRadiusPD.control;
+ drawModRadiusPD.option &= ~PDO_DLGIGNORE;
controls[1] = NULL;
labels[0] = N_("Radius");
- if ((drawModCmdContext.type == SEG_CRVLIN) && xx->segs[0].u.c.a1>0.0 && xx->segs[0].u.c.a1 <360.0) {
+ if ((drawModCmdContext.type == SEG_CRVLIN) && xx->segs[0].u.c.a1>0.0
+ && xx->segs[0].u.c.a1 <360.0) {
controls[1] = drawModArcAnglePD.control;
controls[2] = NULL;
labels[1] = N_("Arc Angle");
@@ -1666,14 +1749,15 @@ static STATUS_T ModifyDraw( track_p trk, wAction_t action, coOrd pos )
ParamLoadControls( &drawModPG );
InfoSubstituteControls( controls, labels );
drawModArcAnglePD.option &= ~PDO_NORECORD;
- if (drawModCmdContext.type == SEG_CRVLIN)
+ if (drawModCmdContext.type == SEG_CRVLIN) {
drawModArcAnglePD.option &= ~PDO_NORECORD;
+ }
infoSubst = TRUE;
break;
default:
InfoSubstituteControls( NULL, NULL );
infoSubst = FALSE;
- break;
+ break;
}
} else {
InfoSubstituteControls( NULL, NULL );
@@ -1700,21 +1784,28 @@ static STATUS_T ModifyDraw( track_p trk, wAction_t action, coOrd pos )
wMenuPushEnable( drawModDashDotDot, TRUE);
wMenuPushEnable( drawModCenterDot, TRUE);
wMenuPushEnable( drawModPhantom, TRUE);
- if (!drawModCmdContext.rotate_state && (drawModCmdContext.type == SEG_POLY || drawModCmdContext.type == SEG_FILPOLY)) {
- wMenuPushEnable( drawModDel,drawModCmdContext.prev_inx>=0);
- if ((!drawModCmdContext.open && drawModCmdContext.prev_inx>=0) ||
- ((drawModCmdContext.prev_inx>0) && (drawModCmdContext.prev_inx<drawModCmdContext.max_inx))) {
- wMenuPushEnable( drawModRound,TRUE);
- wMenuPushEnable( drawModVertex, TRUE);
- wMenuPushEnable( drawModSmooth, TRUE);
- }
- wMenuPushEnable( drawModFill, (!drawModCmdContext.open) && (!drawModCmdContext.filled));
- wMenuPushEnable( drawModEmpty, (!drawModCmdContext.open) && (drawModCmdContext.filled));
- wMenuPushEnable( drawModClose, drawModCmdContext.open);
- wMenuPushEnable( drawModOpen, !drawModCmdContext.open);
+ if (!drawModCmdContext.rotate_state && (drawModCmdContext.type == SEG_POLY
+ || drawModCmdContext.type == SEG_FILPOLY)) {
+ wMenuPushEnable( drawModFill, (!drawModCmdContext.open)
+ && (!drawModCmdContext.filled));
+ wMenuPushEnable( drawModEmpty, (!drawModCmdContext.open)
+ && (drawModCmdContext.filled));
+ if (drawModCmdContext.subtype != RECTANGLE) {
+ wMenuPushEnable( drawModDel,drawModCmdContext.prev_inx>=0);
+ if ((!drawModCmdContext.open && drawModCmdContext.prev_inx>=0) ||
+ ((drawModCmdContext.prev_inx>0)
+ && (drawModCmdContext.prev_inx<drawModCmdContext.max_inx))) {
+ wMenuPushEnable( drawModRound,TRUE);
+ wMenuPushEnable( drawModVertex, TRUE);
+ wMenuPushEnable( drawModSmooth, TRUE);
+ wMenuPushEnable( drawModClose, drawModCmdContext.open);
+ wMenuPushEnable( drawModOpen, !drawModCmdContext.open);
+ }
+ }
}
wMenuPushEnable( drawModOrigin,drawModCmdContext.rotate_state);
- wMenuPushEnable( drawModLast,drawModCmdContext.rotate_state && (drawModCmdContext.prev_inx>=0));
+ wMenuPushEnable( drawModLast,drawModCmdContext.rotate_state
+ && (drawModCmdContext.prev_inx>=0));
wMenuPushEnable( drawModCenter,drawModCmdContext.rotate_state);
break;
case wActionExtKey:
@@ -1722,12 +1813,12 @@ static STATUS_T ModifyDraw( track_p trk, wAction_t action, coOrd pos )
ignoredDraw = trk ;
rc = DrawGeomModify( action, pos, &drawModCmdContext );
if ( infoSubst ) {
- InfoSubstituteControls( NULL, NULL );
- infoSubst = FALSE;
+ InfoSubstituteControls( NULL, NULL );
+ infoSubst = FALSE;
}
ignoredDraw = NULL;
- if (rc == C_CONTINUE) break;
- /* no break*/
+ if (rc == C_CONTINUE) { break; }
+ /* no break*/
case C_FINISH:
ignoredDraw = trk;
rc = DrawGeomModify( C_FINISH, pos, &drawModCmdContext );
@@ -1771,8 +1862,9 @@ static void UngroupDraw( track_p trk )
{
struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
int inx;
- if ( xx->segCnt <= 1 )
+ if ( xx->segCnt <= 1 ) {
return;
+ }
DeleteTrack( trk, FALSE );
for ( inx=0; inx<xx->segCnt; inx++ ) {
trk = MakeDrawFromSeg( xx->orig, xx->angle, &xx->segs[inx] );
@@ -1785,10 +1877,10 @@ static void UngroupDraw( track_p trk )
static ANGLE_T GetAngleDraw(
- track_p trk,
- coOrd pos,
- EPINX_T * ep0,
- EPINX_T * ep1 )
+ track_p trk,
+ coOrd pos,
+ EPINX_T * ep0,
+ EPINX_T * ep1 )
{
struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
ANGLE_T angle;
@@ -1797,15 +1889,15 @@ static ANGLE_T GetAngleDraw(
pos.y -= xx->orig.y;
Rotate( &pos, zero, -xx->angle );
angle = GetAngleSegs( xx->segCnt, xx->segs, &pos, NULL, NULL, NULL, NULL, NULL);
- if ( ep0 ) *ep0 = -1;
- if ( ep1 ) *ep1 = -1;
+ if ( ep0 ) { *ep0 = -1; }
+ if ( ep1 ) { *ep1 = -1; }
return NormalizeAngle( angle + xx->angle );
}
static BOOL_T EnumerateDraw(
- track_p trk )
+ track_p trk )
{
struct extraDataDraw_t * xx;
int inx;
@@ -1813,13 +1905,15 @@ static BOOL_T EnumerateDraw(
if ( trk ) {
xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
- if ( xx->segCnt < 1 )
+ if ( xx->segCnt < 1 ) {
return FALSE;
+ }
BOOL_T content = FALSE;
for ( inx=0; inx<xx->segCnt; inx++ ) {
segPtr = &xx->segs[inx];
if ( segPtr->type == SEG_BENCH ) {
- CountBench( segPtr->u.l.option, FindDistance( segPtr->u.l.pos[0], segPtr->u.l.pos[1] ) );
+ CountBench( segPtr->u.l.option, FindDistance( segPtr->u.l.pos[0],
+ segPtr->u.l.pos[1] ) );
content = TRUE;
}
}
@@ -1832,9 +1926,9 @@ static BOOL_T EnumerateDraw(
static void FlipDraw(
- track_p trk,
- coOrd orig,
- ANGLE_T angle )
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle )
{
struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
@@ -1850,29 +1944,29 @@ static void FlipDraw(
if (reorigin) {
switch(segPtr->type) {
- case SEG_POLY:
- case SEG_FILPOLY:
- for (int i=0;i<segPtr->u.p.cnt;i++) {
- REORIGIN( segPtr->u.p.pts[i].pt, segPtr->u.p.pts[i].pt, xx->angle, xx->orig);
- }
+ case SEG_POLY:
+ case SEG_FILPOLY:
+ for (int i=0; i<segPtr->u.p.cnt; i++) {
+ REORIGIN( segPtr->u.p.pts[i].pt, segPtr->u.p.pts[i].pt, xx->angle, xx->orig);
+ }
break;
- case SEG_STRLIN:
- case SEG_DIMLIN:
- case SEG_BENCH:
- case SEG_TBLEDGE:
- for (int i=0;i<2;i++) {
- REORIGIN( segPtr->u.l.pos[i], segPtr->u.l.pos[i], xx->angle, xx->orig);
- }
- break;
- case SEG_CRVLIN:
- case SEG_FILCRCL:
- REORIGIN( segPtr->u.c.center, segPtr->u.c.center, xx->angle, xx->orig);
- segPtr->u.c.a0 = NormalizeAngle(segPtr->u.c.a0 + xx->angle);
- break;
- case SEG_TEXT:
- REORIGIN( segPtr->u.t.pos, segPtr->u.t.pos, xx->angle, xx->orig );
- break;
- default:;
+ case SEG_STRLIN:
+ case SEG_DIMLIN:
+ case SEG_BENCH:
+ case SEG_TBLEDGE:
+ for (int i=0; i<2; i++) {
+ REORIGIN( segPtr->u.l.pos[i], segPtr->u.l.pos[i], xx->angle, xx->orig);
+ }
+ break;
+ case SEG_CRVLIN:
+ case SEG_FILCRCL:
+ REORIGIN( segPtr->u.c.center, segPtr->u.c.center, xx->angle, xx->orig);
+ segPtr->u.c.a0 = NormalizeAngle(segPtr->u.c.a0 + xx->angle);
+ break;
+ case SEG_TEXT:
+ REORIGIN( segPtr->u.t.pos, segPtr->u.t.pos, xx->angle, xx->orig );
+ break;
+ default:;
}
xx->orig.x = 0.0, xx->orig.y = 0.0, xx->angle = 0.0;
}
@@ -1881,13 +1975,13 @@ static void FlipDraw(
}
static BOOL_T StoreDraw(
- track_p trk,
- void **data,
- long * len)
+ track_p trk,
+ void **data,
+ long * len)
{
struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
if (xx->segs[0].type == SEG_POLY ||
- xx->segs[0].type == SEG_FILPOLY) {
+ xx->segs[0].type == SEG_FILPOLY) {
*data = xx->segs[0].u.p.pts;
*len = xx->segs[0].u.p.cnt* sizeof (pts_t);
return TRUE;
@@ -1896,13 +1990,13 @@ static BOOL_T StoreDraw(
}
static BOOL_T ReplayDraw(
- track_p trk,
- void * data,
- long len)
+ track_p trk,
+ void * data,
+ long len)
{
struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
if (xx->segs[0].type == SEG_POLY ||
- xx->segs[0].type == SEG_FILPOLY) {
+ xx->segs[0].type == SEG_FILPOLY) {
xx->segs[0].u.p.pts = MyMalloc(len);
memcpy(xx->segs[0].u.p.pts,data,len);
return TRUE;
@@ -1919,26 +2013,26 @@ static BOOL_T QueryDraw( track_p trk, int query )
case Q_IS_POLY:
if ((xx->segs[0].type == SEG_POLY) || (xx->segs[0].type == SEG_FILPOLY) ) {
return TRUE;
- }
- else
+ } else {
return FALSE;
+ }
case Q_IS_TEXT:
- if (xx->segs[0].type== SEG_TEXT) return TRUE;
- else return FALSE;
+ if (xx->segs[0].type== SEG_TEXT) { return TRUE; }
+ else { return FALSE; }
case Q_GET_NODES:
return TRUE;
case Q_CAN_PARALLEL:
case Q_MODIFY_CAN_SPLIT:
if ((xx->segs[0].type == SEG_STRLIN) ||
- (xx->segs[0].type == SEG_CRVLIN) ||
- (xx->segs[0].type == SEG_BEZLIN) ||
- (xx->segs[0].type == SEG_FILCRCL) ||
- (xx->segs[0].type == SEG_FILPOLY) ||
- (xx->segs[0].type == SEG_POLY) ||
- (xx->segs[0].type == SEG_BENCH) ||
- (xx->segs[0].type == SEG_TBLEDGE)
- ) return TRUE;
- else return FALSE;
+ (xx->segs[0].type == SEG_CRVLIN) ||
+ (xx->segs[0].type == SEG_BEZLIN) ||
+ (xx->segs[0].type == SEG_FILCRCL) ||
+ (xx->segs[0].type == SEG_FILPOLY) ||
+ (xx->segs[0].type == SEG_POLY) ||
+ (xx->segs[0].type == SEG_BENCH) ||
+ (xx->segs[0].type == SEG_TBLEDGE)
+ ) { return TRUE; }
+ else { return FALSE; }
default:
return FALSE;
}
@@ -1955,454 +2049,489 @@ static wBool_t CompareDraw( track_cp trk1, track_cp trk2 )
return CompareSegs( xx1->segs, xx1->segCnt, xx2->segs, xx2->segCnt );
}
-static BOOL_T GetParamsDraw( int inx, track_p trk, coOrd pos, trackParams_t * params ) {
+static BOOL_T GetParamsDraw( int inx, track_p trk, coOrd pos,
+ trackParams_t * params )
+{
struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
- if (inx != PARAMS_NODES ) return FALSE;
+ if (inx != PARAMS_NODES ) { return FALSE; }
DYNARR_RESET(coOrd,params->nodes);
BOOL_T back = FALSE;
coOrd start,end;
switch (xx->segs[0].type) {
- case SEG_POLY:
- if (xx->segs[0].u.p.polyType != POLYLINE) return FALSE;
- REORIGIN(start,xx->segs[0].u.p.pts[0].pt,xx->angle,xx->orig);
- REORIGIN(end,xx->segs[0].u.p.pts[xx->segs[0].u.p.cnt-1].pt,xx->angle,xx->orig);
- params->ep = 1;
- if (FindDistance(pos,start)>FindDistance(pos,end)) back = TRUE;
- for (int i=0;i<xx->segs[0].u.p.cnt;i++) {
- DYNARR_APPEND(coOrd,params->nodes,xx->segs[0].u.p.cnt);
- if (back)
- DYNARR_LAST(coOrd,params->nodes) = xx->segs[0].u.p.pts[xx->segs[0].u.p.cnt-1-i].pt;
- else
- DYNARR_LAST(coOrd,params->nodes) = xx->segs[0].u.p.pts[i].pt;
- REORIGIN(DYNARR_LAST(coOrd,params->nodes),DYNARR_LAST(coOrd,params->nodes),xx->angle,xx->orig);
- }
- params->lineOrig = DYNARR_N(coOrd,params->nodes,0);
- params->lineEnd = DYNARR_LAST(coOrd,params->nodes);
- return TRUE;
-
- case SEG_STRLIN:;
- REORIGIN(start,xx->segs[0].u.l.pos[0],xx->angle,xx->orig);
- REORIGIN(end,xx->segs[0].u.l.pos[1],xx->angle,xx->orig);
- params->ep = 1;
- if (FindDistance(pos,start)>FindDistance(pos,end)) {
- back = TRUE;
- }
- for (int i=0;i<2;i++) {
- DYNARR_APPEND(coOrd,params->nodes,2);
- REORIGIN(DYNARR_LAST(coOrd,params->nodes),xx->segs[0].u.l.pos[back?1-i:i],xx->angle,xx->orig);
+ case SEG_POLY:
+ if (xx->segs[0].u.p.polyType != POLYLINE) { return FALSE; }
+ REORIGIN(start,xx->segs[0].u.p.pts[0].pt,xx->angle,xx->orig);
+ REORIGIN(end,xx->segs[0].u.p.pts[xx->segs[0].u.p.cnt-1].pt,xx->angle,xx->orig);
+ params->ep = 1;
+ if (FindDistance(pos,start)>FindDistance(pos,end)) { back = TRUE; }
+ for (int i=0; i<xx->segs[0].u.p.cnt; i++) {
+ DYNARR_APPEND(coOrd,params->nodes,xx->segs[0].u.p.cnt);
+ if (back) {
+ DYNARR_LAST(coOrd,params->nodes) = xx->segs[0].u.p.pts[xx->segs[0].u.p.cnt-1
+ -i].pt;
+ } else {
+ DYNARR_LAST(coOrd,params->nodes) = xx->segs[0].u.p.pts[i].pt;
}
- params->lineOrig = DYNARR_N(coOrd,params->nodes,0);
- params->lineEnd = DYNARR_LAST(coOrd,params->nodes);
- return TRUE;
+ REORIGIN(DYNARR_LAST(coOrd,params->nodes),DYNARR_LAST(coOrd,params->nodes),
+ xx->angle,xx->orig);
+ }
+ params->lineOrig = DYNARR_N(coOrd,params->nodes,0);
+ params->lineEnd = DYNARR_LAST(coOrd,params->nodes);
+ return TRUE;
- case SEG_CRVLIN:;
- Translate(&start,xx->segs[0].u.c.center,xx->segs[0].u.c.a0,fabs(xx->segs[0].u.c.radius));
- REORIGIN(start,start,xx->angle,xx->orig);
- Translate(&end,xx->segs[0].u.c.center,xx->segs[0].u.c.a0+xx->segs[0].u.c.a1,fabs(xx->segs[0].u.c.radius));
- REORIGIN(end,end,xx->angle,xx->orig);
- if (FindDistance(start,pos) > FindDistance(end,pos)) back = TRUE;
- if (fabs(xx->segs[0].u.c.radius) > 0.5) {
- double min_angle = R2D(2*acos(1.0-(0.1/fabs(xx->segs[0].u.c.radius)))); //Error max is 0.1"
- int number = (int) ceil(xx->segs[0].u.c.a1/min_angle);
- double arc_size = xx->segs[0].u.c.a1/number;
- for (int i=0;i<=number;i++) {
- DYNARR_APPEND(coOrd,params->nodes,number);
- if (back)
- Translate(&DYNARR_LAST(coOrd,params->nodes),xx->segs[0].u.c.center,xx->segs[0].u.c.a0+xx->segs[0].u.c.a1-(i*arc_size),fabs(xx->segs[0].u.c.radius));
- else
- Translate(&DYNARR_LAST(coOrd,params->nodes),xx->segs[0].u.c.center,xx->segs[0].u.c.a0+(i*arc_size),fabs(xx->segs[0].u.c.radius));
- REORIGIN(DYNARR_LAST(coOrd,params->nodes),DYNARR_LAST(coOrd,params->nodes),xx->angle,xx->orig);
+ case SEG_STRLIN:;
+ REORIGIN(start,xx->segs[0].u.l.pos[0],xx->angle,xx->orig);
+ REORIGIN(end,xx->segs[0].u.l.pos[1],xx->angle,xx->orig);
+ params->ep = 1;
+ if (FindDistance(pos,start)>FindDistance(pos,end)) {
+ back = TRUE;
+ }
+ for (int i=0; i<2; i++) {
+ DYNARR_APPEND(coOrd,params->nodes,2);
+ REORIGIN(DYNARR_LAST(coOrd,params->nodes),xx->segs[0].u.l.pos[back?1-i:i],
+ xx->angle,xx->orig);
+ }
+ params->lineOrig = DYNARR_N(coOrd,params->nodes,0);
+ params->lineEnd = DYNARR_LAST(coOrd,params->nodes);
+ return TRUE;
+
+ case SEG_CRVLIN:;
+ Translate(&start,xx->segs[0].u.c.center,xx->segs[0].u.c.a0,
+ fabs(xx->segs[0].u.c.radius));
+ REORIGIN(start,start,xx->angle,xx->orig);
+ Translate(&end,xx->segs[0].u.c.center,xx->segs[0].u.c.a0+xx->segs[0].u.c.a1,
+ fabs(xx->segs[0].u.c.radius));
+ REORIGIN(end,end,xx->angle,xx->orig);
+ if (FindDistance(start,pos) > FindDistance(end,pos)) { back = TRUE; }
+ if (fabs(xx->segs[0].u.c.radius) > 0.5) {
+ double min_angle = R2D(2*acos(1.0-(0.1/fabs(
+ xx->segs[0].u.c.radius)))); //Error max is 0.1"
+ int number = (int) ceil(xx->segs[0].u.c.a1/min_angle);
+ double arc_size = xx->segs[0].u.c.a1/number;
+ for (int i=0; i<=number; i++) {
+ DYNARR_APPEND(coOrd,params->nodes,number);
+ if (back) {
+ Translate(&DYNARR_LAST(coOrd,params->nodes),xx->segs[0].u.c.center,
+ xx->segs[0].u.c.a0+xx->segs[0].u.c.a1-(i*arc_size),
+ fabs(xx->segs[0].u.c.radius));
+ } else {
+ Translate(&DYNARR_LAST(coOrd,params->nodes),xx->segs[0].u.c.center,
+ xx->segs[0].u.c.a0+(i*arc_size),fabs(xx->segs[0].u.c.radius));
}
- } else {
- DYNARR_APPEND(coOrd,params->nodes,2);
- REORIGIN(DYNARR_LAST(coOrd,params->nodes),back?end:start,xx->angle,xx->orig);
- DYNARR_APPEND(coOrd,params->nodes,2);
- REORIGIN(DYNARR_LAST(coOrd,params->nodes),back?start:end,xx->angle,xx->orig);
+ REORIGIN(DYNARR_LAST(coOrd,params->nodes),DYNARR_LAST(coOrd,params->nodes),
+ xx->angle,xx->orig);
}
- params->lineOrig = DYNARR_N(coOrd,params->nodes,0);
- params->lineEnd = DYNARR_LAST(coOrd,params->nodes);
- params->ep = 1;
- return TRUE;
+ } else {
+ DYNARR_APPEND(coOrd,params->nodes,2);
+ REORIGIN(DYNARR_LAST(coOrd,params->nodes),back?end:start,xx->angle,xx->orig);
+ DYNARR_APPEND(coOrd,params->nodes,2);
+ REORIGIN(DYNARR_LAST(coOrd,params->nodes),back?start:end,xx->angle,xx->orig);
+ }
+ params->lineOrig = DYNARR_N(coOrd,params->nodes,0);
+ params->lineEnd = DYNARR_LAST(coOrd,params->nodes);
+ params->ep = 1;
+ return TRUE;
- case SEG_BEZLIN:
- REORIGIN(start,xx->segs[0].u.b.pos[0],xx->angle,xx->orig);
- REORIGIN(end,xx->segs[0].u.b.pos[3],xx->angle,xx->orig);
- if (FindDistance(pos,start) < FindDistance(pos,end))
- params->ep = 0;
- else params->ep = 1;
- BOOL_T back = FALSE;
- coOrd curr_pos = params->bezierPoints[params->ep*3];
- BOOL_T first = TRUE;
- for (int i = 0; i<xx->segs[0].bezSegs.cnt;i++) {
- trkSeg_p segPtr = &DYNARR_N(trkSeg_t,xx->segs[0].bezSegs,params->ep?xx->segs[0].bezSegs.cnt-1-i:i);
- if (segPtr->type == SEG_STRLIN) {
- back = FindDistance(segPtr->u.l.pos[0],curr_pos)>FindDistance(segPtr->u.l.pos[1],curr_pos);
- if (first) {
- first = FALSE;
- DYNARR_APPEND(coOrd,params->nodes,2);
- REORIGIN(DYNARR_LAST(coOrd,params->nodes),segPtr->u.l.pos[back],xx->angle,xx->orig);
- }
+ case SEG_BEZLIN:
+ REORIGIN(start,xx->segs[0].u.b.pos[0],xx->angle,xx->orig);
+ REORIGIN(end,xx->segs[0].u.b.pos[3],xx->angle,xx->orig);
+ if (FindDistance(pos,start) < FindDistance(pos,end)) {
+ params->ep = 0;
+ } else { params->ep = 1; }
+ BOOL_T back = FALSE;
+ coOrd curr_pos = params->bezierPoints[params->ep*3];
+ BOOL_T first = TRUE;
+ for (int i = 0; i<xx->segs[0].bezSegs.cnt; i++) {
+ trkSeg_p segPtr = &DYNARR_N(trkSeg_t,xx->segs[0].bezSegs,
+ params->ep?xx->segs[0].bezSegs.cnt-1-i:i);
+ if (segPtr->type == SEG_STRLIN) {
+ back = FindDistance(segPtr->u.l.pos[0],
+ curr_pos)>FindDistance(segPtr->u.l.pos[1],curr_pos);
+ if (first) {
+ first = FALSE;
DYNARR_APPEND(coOrd,params->nodes,2);
- REORIGIN(DYNARR_LAST(coOrd,params->nodes),segPtr->u.l.pos[1-back],xx->angle,xx->orig);
- curr_pos = DYNARR_LAST(coOrd,params->nodes);
- } else {
- coOrd start,end;
- Translate(&start,segPtr->u.c.center,segPtr->u.c.a0,segPtr->u.c.radius);
- Translate(&end,segPtr->u.c.center,segPtr->u.c.a0+segPtr->u.c.a1,segPtr->u.c.radius);
- back = FindDistance(start,curr_pos)>FindDistance(end,curr_pos);
- if (fabs(segPtr->u.c.radius) > 0.2) {
- double min_angle = 360*acos(1.0-(0.1/fabs(segPtr->u.c.radius)))/M_PI; //Error max is 0.1"
- int number = (int)ceil(segPtr->u.c.a1/min_angle);
- double arc_size = segPtr->u.c.a1/number;
- for (int j=1-first;j<number;j++) {
- DYNARR_APPEND(coOrd,params->nodes,number-first);
- if (back == params->ep)
- Translate(&DYNARR_LAST(coOrd,params->nodes),segPtr->u.c.center,segPtr->u.c.a0+(j*arc_size),fabs(segPtr->u.c.radius) );
- else
- Translate(&DYNARR_LAST(coOrd,params->nodes),segPtr->u.c.center,segPtr->u.c.a0+segPtr->u.c.a1-(j*arc_size),fabs(segPtr->u.c.radius) );
- REORIGIN(DYNARR_LAST(coOrd,params->nodes),DYNARR_LAST(coOrd,params->nodes),xx->angle,xx->orig);
- }
- first = FALSE;
- } else {
- if (first) {
- first = FALSE;
- DYNARR_APPEND(coOrd,params->nodes,2);
- REORIGIN(DYNARR_LAST(coOrd,params->nodes),start,xx->angle,xx->orig);
+ REORIGIN(DYNARR_LAST(coOrd,params->nodes),segPtr->u.l.pos[back],xx->angle,
+ xx->orig);
+ }
+ DYNARR_APPEND(coOrd,params->nodes,2);
+ REORIGIN(DYNARR_LAST(coOrd,params->nodes),segPtr->u.l.pos[1-back],xx->angle,
+ xx->orig);
+ curr_pos = DYNARR_LAST(coOrd,params->nodes);
+ } else {
+ coOrd start,end;
+ Translate(&start,segPtr->u.c.center,segPtr->u.c.a0,segPtr->u.c.radius);
+ Translate(&end,segPtr->u.c.center,segPtr->u.c.a0+segPtr->u.c.a1,
+ segPtr->u.c.radius);
+ back = FindDistance(start,curr_pos)>FindDistance(end,curr_pos);
+ if (fabs(segPtr->u.c.radius) > 0.2) {
+ double min_angle = 360*acos(1.0-(0.1/fabs(
+ segPtr->u.c.radius)))/M_PI; //Error max is 0.1"
+ int number = (int)ceil(segPtr->u.c.a1/min_angle);
+ double arc_size = segPtr->u.c.a1/number;
+ for (int j=1-first; j<number; j++) {
+ DYNARR_APPEND(coOrd,params->nodes,number-first);
+ if (back == params->ep) {
+ Translate(&DYNARR_LAST(coOrd,params->nodes),segPtr->u.c.center,
+ segPtr->u.c.a0+(j*arc_size),fabs(segPtr->u.c.radius) );
+ } else {
+ Translate(&DYNARR_LAST(coOrd,params->nodes),segPtr->u.c.center,
+ segPtr->u.c.a0+segPtr->u.c.a1-(j*arc_size),fabs(segPtr->u.c.radius) );
}
- DYNARR_APPEND(coOrd,params->nodes,1);
- REORIGIN(DYNARR_LAST(coOrd,params->nodes),end,xx->angle,xx->orig);
+ REORIGIN(DYNARR_LAST(coOrd,params->nodes),DYNARR_LAST(coOrd,params->nodes),
+ xx->angle,xx->orig);
+ }
+ first = FALSE;
+ } else {
+ if (first) {
first = FALSE;
+ DYNARR_APPEND(coOrd,params->nodes,2);
+ REORIGIN(DYNARR_LAST(coOrd,params->nodes),start,xx->angle,xx->orig);
}
- curr_pos = DYNARR_LAST(coOrd,params->nodes);
+ DYNARR_APPEND(coOrd,params->nodes,1);
+ REORIGIN(DYNARR_LAST(coOrd,params->nodes),end,xx->angle,xx->orig);
+ first = FALSE;
}
+ curr_pos = DYNARR_LAST(coOrd,params->nodes);
}
- params->lineOrig = DYNARR_N(coOrd,params->nodes,0);
- params->lineEnd = DYNARR_LAST(coOrd,params->nodes);
- return TRUE;
+ }
+ params->lineOrig = DYNARR_N(coOrd,params->nodes,0);
+ params->lineEnd = DYNARR_LAST(coOrd,params->nodes);
+ return TRUE;
- default:
- return FALSE;
+ default:
+ return FALSE;
}
return FALSE;
}
-static BOOL_T SplitDraw( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover, EPINX_T * ep0, EPINX_T * ep1 )
+static BOOL_T SplitDraw( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover,
+ EPINX_T * ep0, EPINX_T * ep1 )
{
- struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
+ struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
- coOrd p0,p1;
- DIST_T d;
- BOOL_T polyline_trim = FALSE, new_last = ep;
+ coOrd p0,p1;
+ DIST_T d;
+ BOOL_T polyline_trim = FALSE, new_last = ep;
- DYNARR_SET(trkSeg_t, tempSegs_da, 1);
+ DYNARR_SET(trkSeg_t, tempSegs_da, 1);
- tempSegs(0).type = -1;
+ tempSegs(0).type = -1;
- switch (xx->segs[0].type) {
- case SEG_STRLIN:
- case SEG_BENCH:
- case SEG_TBLEDGE:
- REORIGIN(p0,xx->segs[0].u.l.pos[0],xx->angle,xx->orig);
- REORIGIN(p1,xx->segs[0].u.l.pos[1],xx->angle,xx->orig);
- tempSegs(0).color = xx->segs[0].color;
- tempSegs(0).width = xx->segs[0].width;
- tempSegs_da.cnt = 1;
- tempSegs(0).type = xx->segs[0].type;
- tempSegs(0).u.l.pos[0] = 1-ep?p0:pos;
- tempSegs(0).u.l.pos[1] = 1-ep?pos:p1;
- xx->segs[0].u.l.pos[0] = 1-ep?pos:p0;
- xx->segs[0].u.l.pos[1] = 1-ep?p1:pos;
- break;
- case SEG_CRVLIN:
- case SEG_FILCRCL: ;
- coOrd c;
- REORIGIN(c, xx->segs[0].u.c.center, xx->angle, xx->orig);
- coOrd c0,c1;
- if (xx->segs[0].type == SEG_FILCRCL ||
- (xx->segs[0].type == SEG_CRVLIN && xx->segs[0].u.c.a1 >= 360.0)) {
- Translate(&c0,c,FindAngle(c,pos),xx->segs[0].u.c.radius);
- c1 = c0;
- xx->segs[0].type = SEG_CRVLIN;
- xx->segs[0].u.c.a0 = FindAngle(c,c0);
- xx->segs[0].u.c.a1 = 355.0;
+ switch (xx->segs[0].type) {
+ case SEG_STRLIN:
+ case SEG_BENCH:
+ case SEG_TBLEDGE:
+ REORIGIN(p0,xx->segs[0].u.l.pos[0],xx->angle,xx->orig);
+ REORIGIN(p1,xx->segs[0].u.l.pos[1],xx->angle,xx->orig);
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ tempSegs(0).color = xx->segs[0].color;
+ tempSegs(0).lineWidth = xx->segs[0].lineWidth;
+ tempSegs(0).type = xx->segs[0].type;
+ tempSegs(0).u.l.pos[0] = 1-ep?p0:pos;
+ tempSegs(0).u.l.pos[1] = 1-ep?pos:p1;
+ xx->segs[0].u.l.pos[0] = 1-ep?pos:p0;
+ xx->segs[0].u.l.pos[1] = 1-ep?p1:pos;
+ break;
+ case SEG_CRVLIN:
+ case SEG_FILCRCL: ;
+ coOrd c;
+ REORIGIN(c, xx->segs[0].u.c.center, xx->angle, xx->orig);
+ coOrd c0,c1;
+ if (xx->segs[0].type == SEG_FILCRCL ||
+ (xx->segs[0].type == SEG_CRVLIN && xx->segs[0].u.c.a1 >= 360.0)) {
+ Translate(&c0,c,FindAngle(c,pos),xx->segs[0].u.c.radius);
+ c1 = c0;
+ xx->segs[0].type = SEG_CRVLIN;
+ xx->segs[0].u.c.a0 = FindAngle(c,c0);
+ xx->segs[0].u.c.a1 = 355.0;
+ } else {
+ Translate(&c0,c,xx->segs[0].u.c.a0+xx->angle,xx->segs[0].u.c.radius);
+ Translate(&c1,c,xx->segs[0].u.c.a1+xx->segs[0].u.c.a0+xx->angle,
+ xx->segs[0].u.c.radius);
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ tempSegs(0).color = xx->segs[0].color;
+ tempSegs(0).lineWidth = xx->segs[0].lineWidth;
+ tempSegs(0).type = SEG_CRVLIN;
+ tempSegs(0).u.c.center = c;
+ tempSegs(0).u.c.radius = xx->segs[0].u.c.radius;
+ if (ep) {
+ tempSegs(0).u.c.a0 = FindAngle(c,c0);
+ tempSegs(0).u.c.a1 = NormalizeAngle(FindAngle(c,pos)-tempSegs(0).u.c.a0);
+ } else {
+ tempSegs(0).u.c.a0 = FindAngle(c,pos);
+ tempSegs(0).u.c.a1 = NormalizeAngle(FindAngle(c,c1)-tempSegs(0).u.c.a0);
+ }
+ xx->segs[0].u.c.center = c;
+ if (ep) {
+ xx->segs[0].u.c.a0 = FindAngle(c,pos);
+ xx->segs[0].u.c.a1 = NormalizeAngle(FindAngle(c,c1)-xx->segs[0].u.c.a0);
+ } else {
+ xx->segs[0].u.c.a0 = FindAngle(c,c0);
+ xx->segs[0].u.c.a1 = NormalizeAngle(FindAngle(c,pos)-xx->segs[0].u.c.a0);
+ }
+ }
+ break;
+ case SEG_POLY:
+ case SEG_FILPOLY:
+ d = DIST_INF;
+ DIST_T dd;
+ BOOL_T onPoint = FALSE;
+// BOOL_T closeSeg = FALSE;
+ coOrd end;
+ int polyInx = -1;
+ for ( int inx=0; inx<xx->segs[0].u.p.cnt-1; inx++ ) {
+ p0 = pos;
+ coOrd pl0,pl1;
+ REORIGIN(pl0,xx->segs[0].u.p.pts[inx].pt,xx->angle,xx->orig);
+ REORIGIN(pl1,xx->segs[0].u.p.pts[inx+1].pt,xx->angle,xx->orig);
+ dd = LineDistance( &p0, pl0, pl1 );
+ if ( d > dd ) {
+ d = dd;
+ if (IsClose(FindDistance(pos,pl1))) {
+ polyInx = inx;
+ REORIGIN(pos,xx->segs[0].u.p.pts[inx].pt,xx->angle,xx->orig);
+ onPoint = TRUE;
+ break;
+ } else if (IsClose(FindDistance(pos,pl1))) {
+ polyInx = inx+1;
+ REORIGIN(pos,xx->segs[0].u.p.pts[inx+1].pt,xx->angle,xx->orig);
+ onPoint=TRUE;
+ break;
} else {
- Translate(&c0,c,xx->segs[0].u.c.a0+xx->angle,xx->segs[0].u.c.radius);
- Translate(&c1,c,xx->segs[0].u.c.a1+xx->segs[0].u.c.a0+xx->angle,xx->segs[0].u.c.radius);
- tempSegs(0).color = xx->segs[0].color;
- tempSegs(0).width = xx->segs[0].width;
- tempSegs_da.cnt = 1;
- tempSegs(0).type = SEG_CRVLIN;
- tempSegs(0).u.c.center = c;
- tempSegs(0).u.c.radius = xx->segs[0].u.c.radius;
- if (ep) {
- tempSegs(0).u.c.a0 = FindAngle(c,c0);
- tempSegs(0).u.c.a1 = NormalizeAngle(FindAngle(c,pos)-tempSegs(0).u.c.a0);
- } else {
- tempSegs(0).u.c.a0 = FindAngle(c,pos);
- tempSegs(0).u.c.a1 = NormalizeAngle(FindAngle(c,c1)-tempSegs(0).u.c.a0);
- }
- xx->segs[0].u.c.center = c;
- if (ep) {
- xx->segs[0].u.c.a0 = FindAngle(c,pos);
- xx->segs[0].u.c.a1 = NormalizeAngle(FindAngle(c,c1)-xx->segs[0].u.c.a0);
- } else {
- xx->segs[0].u.c.a0 = FindAngle(c,c0);
- xx->segs[0].u.c.a1 = NormalizeAngle(FindAngle(c,pos)-xx->segs[0].u.c.a0);
- }
- }
- break;
- case SEG_POLY:
- case SEG_FILPOLY:
- d = DIST_INF;
- DIST_T dd;
- BOOL_T onPoint = FALSE;
- BOOL_T closeSeg = FALSE;
- coOrd end;
- int polyInx = -1;
- for ( int inx=0; inx<xx->segs[0].u.p.cnt-1; inx++ ) {
- p0 = pos;
- coOrd pl0,pl1;
- REORIGIN(pl0,xx->segs[0].u.p.pts[inx].pt,xx->angle,xx->orig);
- REORIGIN(pl1,xx->segs[0].u.p.pts[inx+1].pt,xx->angle,xx->orig);
- dd = LineDistance( &p0, pl0, pl1 );
- if ( d > dd ) {
- d = dd;
- if (IsClose(FindDistance(pos,pl1))) {
- polyInx = inx;
- REORIGIN(pos,xx->segs[0].u.p.pts[inx].pt,xx->angle,xx->orig);
- onPoint = TRUE;
- break;
- } else if (IsClose(FindDistance(pos,pl1))) {
- polyInx = inx+1;
- REORIGIN(pos,xx->segs[0].u.p.pts[inx+1].pt,xx->angle,xx->orig);
- onPoint=TRUE;
- break;
- } else {
- if (!IsClose(d)) continue;
- polyInx = inx;
- pos = p0;
- break;
- }
- }
+ if (!IsClose(d)) { continue; }
+ polyInx = inx;
+ pos = p0;
+ break;
}
- //If Closed, look at closing line
- if ( !onPoint && (xx->segs[0].u.p.polyType != POLYLINE)) {
- coOrd pl0,pl1;
- p0 = pos;
- REORIGIN(pl0,xx->segs[0].u.p.pts[xx->segs[0].u.p.cnt-1].pt,xx->angle,xx->orig);
- REORIGIN(pl1,xx->segs[0].u.p.pts[0].pt,xx->angle,xx->orig);
- dd = LineDistance( &p0, pl0, pl1 );
- if (d > dd) {
- d = dd;
- if (IsClose(d)) {
- polyInx = xx->segs[0].u.p.cnt-1;
- closeSeg=TRUE;
- pos = p0;
- }
- }
+ }
+ }
+ //If Closed, look at closing line
+ if ( !onPoint && (xx->segs[0].u.p.polyType != POLYLINE)) {
+ coOrd pl0,pl1;
+ p0 = pos;
+ REORIGIN(pl0,xx->segs[0].u.p.pts[xx->segs[0].u.p.cnt-1].pt,xx->angle,xx->orig);
+ REORIGIN(pl1,xx->segs[0].u.p.pts[0].pt,xx->angle,xx->orig);
+ dd = LineDistance( &p0, pl0, pl1 );
+ if (d > dd) {
+ d = dd;
+ if (IsClose(d)) {
+ polyInx = xx->segs[0].u.p.cnt-1;
+// closeSeg=TRUE;
+ pos = p0;
}
- //If Closed, split into a PolyLine
- if (xx->segs[0].u.p.polyType != POLYLINE) {
- if (!IsClose(d)) {
- *leftover = NULL;
- return FALSE;
- }
- end = pos;
- REORIGIN(end,end,xx->angle,xx->orig);
-
- trkSeg_t temp; //Buffer for expanded array
- temp.u.p.cnt = xx->segs[0].u.p.cnt + 2 - onPoint;
- temp.u.p.pts = MyMalloc(temp.u.p.cnt*sizeof(pts_t));
- int j = 0;
- temp.u.p.pts[j].pt = end;
- temp.u.p.pts[j].pt_type = wPolyLineStraight;
- j++;
- /* After split */
- for (int i=polyInx+1;i<=xx->segs[0].u.p.cnt-1;i++,j++) {
- temp.u.p.pts[j] = xx->segs[0].u.p.pts[i];
- REORIGIN(temp.u.p.pts[j].pt,temp.u.p.pts[j].pt,xx->angle,xx->orig);
- }
- /* Before split */
- for (int i=0;i<=polyInx;i++,j++) {
- temp.u.p.pts[j] = xx->segs[0].u.p.pts[i];
- REORIGIN(temp.u.p.pts[j].pt,temp.u.p.pts[j].pt,xx->angle,xx->orig);
- }
- if (!onPoint) {
- temp.u.p.pts[temp.u.p.cnt-1].pt = end;
- }
- temp.u.p.pts[temp.u.p.cnt-1].pt_type = wPolyLineStraight;
+ }
+ }
+ //If Closed, split into a PolyLine
+ if (xx->segs[0].u.p.polyType != POLYLINE) {
+ if (!IsClose(d)) {
+ *leftover = NULL;
+ return FALSE;
+ }
+ end = pos;
+ REORIGIN(end,end,xx->angle,xx->orig);
- //Swap Pts Array into existing track
- MyFree(xx->segs[0].u.p.pts);
- xx->segs[0].u.p.pts = temp.u.p.pts;
- xx->segs[0].u.p.cnt = temp.u.p.cnt;
- xx->segs[0].u.p.polyType = POLYLINE;
- break;
+ trkSeg_t temp; //Buffer for expanded array
+ temp.u.p.cnt = xx->segs[0].u.p.cnt + 2 - onPoint;
+ temp.u.p.pts = MyMalloc(temp.u.p.cnt*sizeof(pts_t));
+ int j = 0;
+ temp.u.p.pts[j].pt = end;
+ temp.u.p.pts[j].pt_type = wPolyLineStraight;
+ j++;
+ /* After split */
+ for (int i=polyInx+1; i<=xx->segs[0].u.p.cnt-1; i++,j++) {
+ temp.u.p.pts[j] = xx->segs[0].u.p.pts[i];
+ REORIGIN(temp.u.p.pts[j].pt,temp.u.p.pts[j].pt,xx->angle,xx->orig);
+ }
+ /* Before split */
+ for (int i=0; i<=polyInx; i++,j++) {
+ temp.u.p.pts[j] = xx->segs[0].u.p.pts[i];
+ REORIGIN(temp.u.p.pts[j].pt,temp.u.p.pts[j].pt,xx->angle,xx->orig);
+ }
+ if (!onPoint) {
+ temp.u.p.pts[temp.u.p.cnt-1].pt = end;
+ }
+ temp.u.p.pts[temp.u.p.cnt-1].pt_type = wPolyLineStraight;
+
+ //Swap Pts Array into existing track
+ MyFree(xx->segs[0].u.p.pts);
+ xx->segs[0].u.p.pts = temp.u.p.pts;
+ xx->segs[0].u.p.cnt = temp.u.p.cnt;
+ xx->segs[0].u.p.polyType = POLYLINE;
+ break;
+ }
+ //Check if on an end-point -> reject
+ if ((polyInx <= 0 || polyInx >= xx->segs[0].u.p.cnt-1) && onPoint ) {
+ *leftover = NULL;
+ return FALSE;
+ }
+ if (polyInx == 0 || (polyInx == 1 && onPoint )) {
+ //Between First End and Next -> Trim end
+ end = xx->segs[0].u.p.pts[0].pt;
+ REORIGIN(end,end,xx->angle,xx->orig);
+ if (onPoint) {
+ for (int i=0; i< xx->segs[0].u.p.cnt-1; i++) {
+ xx->segs[0].u.p.pts[i] = xx->segs[0].u.p.pts[i+1];
+ REORIGIN(xx->segs[0].u.p.pts[i].pt,xx->segs[0].u.p.pts[i].pt,xx->angle,
+ xx->orig);
+ }
+ --xx->segs[0].u.p.cnt;
+ } else {
+ xx->segs[0].u.p.pts[0].pt = pos;
+ for (int i=1; i< xx->segs[0].u.p.cnt; i++) {
+ REORIGIN(xx->segs[0].u.p.pts[i].pt,xx->segs[0].u.p.pts[i].pt,xx->angle,
+ xx->orig);
}
- //Check if on an end-point -> reject
- if ((polyInx <= 0 || polyInx >= xx->segs[0].u.p.cnt-1) && onPoint ) {
- *leftover = NULL;
- return FALSE;
+ }
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ tempSegs(0).color = xx->segs[0].color;
+ tempSegs(0).lineWidth = xx->segs[0].lineWidth;
+ tempSegs(0).type = SEG_STRLIN;
+ tempSegs(0).u.l.pos[0] = pos;
+ tempSegs(0).u.l.pos[1] = end;
+ polyline_trim = TRUE;
+ new_last = FALSE;
+ } else if (polyInx == xx->segs[0].u.p.cnt-2) {
+ //Between second last and last -> Trim the other end
+ end = xx->segs[0].u.p.pts[xx->segs[0].u.p.cnt-1].pt;
+ REORIGIN(end,end,xx->angle,xx->orig);
+ if (onPoint) {
+ --xx->segs[0].u.p.cnt;
+ for (int i=0; i<xx->segs[0].u.p.cnt; i++) {
+ REORIGIN(xx->segs[0].u.p.pts[i].pt,xx->segs[0].u.p.pts[i].pt,xx->angle,
+ xx->orig);
}
- if (polyInx == 0 || (polyInx == 1 && onPoint )) {
- //Between First End and Next -> Trim end
- end = xx->segs[0].u.p.pts[0].pt;
- REORIGIN(end,end,xx->angle,xx->orig);
- if (onPoint) {
- for (int i=0;i< xx->segs[0].u.p.cnt-1;i++) {
- xx->segs[0].u.p.pts[i] = xx->segs[0].u.p.pts[i+1];
- REORIGIN(xx->segs[0].u.p.pts[i].pt,xx->segs[0].u.p.pts[i].pt,xx->angle,xx->orig);
- }
- --xx->segs[0].u.p.cnt;
- } else {
- xx->segs[0].u.p.pts[0].pt = pos;
- for (int i=1;i< xx->segs[0].u.p.cnt;i++) {
- REORIGIN(xx->segs[0].u.p.pts[i].pt,xx->segs[0].u.p.pts[i].pt,xx->angle,xx->orig);
- }
- }
- tempSegs(0).color = xx->segs[0].color;
- tempSegs(0).width = xx->segs[0].width;
- tempSegs_da.cnt = 1;
- tempSegs(0).type = SEG_STRLIN;
- tempSegs(0).u.l.pos[0] = pos;
- tempSegs(0).u.l.pos[1] = end;
- polyline_trim = TRUE;
- new_last = FALSE;
- } else if (polyInx == xx->segs[0].u.p.cnt-2) {
- //Between second last and last -> Trim the other end
- end = xx->segs[0].u.p.pts[xx->segs[0].u.p.cnt-1].pt;
- REORIGIN(end,end,xx->angle,xx->orig);
- if (onPoint) {
- --xx->segs[0].u.p.cnt;
- for (int i=0;i<xx->segs[0].u.p.cnt;i++) {
- REORIGIN(xx->segs[0].u.p.pts[i].pt,xx->segs[0].u.p.pts[i].pt,xx->angle,xx->orig);
- }
- } else {
- xx->segs[0].u.p.pts[xx->segs[0].u.p.cnt-1].pt = pos;
- for (int i=0;i<xx->segs[0].u.p.cnt;i++) {
- REORIGIN(xx->segs[0].u.p.pts[i].pt,xx->segs[0].u.p.pts[i].pt,xx->angle,xx->orig);
- }
+ } else {
+ xx->segs[0].u.p.pts[xx->segs[0].u.p.cnt-1].pt = pos;
+ for (int i=0; i<xx->segs[0].u.p.cnt; i++) {
+ REORIGIN(xx->segs[0].u.p.pts[i].pt,xx->segs[0].u.p.pts[i].pt,xx->angle,
+ xx->orig);
+ }
+ }
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ tempSegs(0).color = xx->segs[0].color;
+ tempSegs(0).lineWidth = xx->segs[0].lineWidth;
+ tempSegs(0).type = SEG_STRLIN;
+ tempSegs(0).u.l.pos[0] = end;
+ tempSegs(0).u.l.pos[1] = pos;
+ polyline_trim = TRUE;
+ new_last = TRUE;
+ } else {
+ //Check that new line will have >=3 spots if not -> reject
+ if (xx->segs[0].u.p.cnt >3) {
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ tempSegs(0).color = xx->segs[0].color;
+ tempSegs(0).lineWidth = xx->segs[0].lineWidth;
+ tempSegs(0).type = SEG_POLY;
+ tempSegs(0).u.p.polyType = POLYLINE;
+ if (1-ep) {
+ tempSegs(0).u.p.cnt = xx->segs[0].u.p.cnt - polyInx;
+ } else {
+ tempSegs(0).u.p.cnt = polyInx + 2 - onPoint;
+ }
+ tempSegs(0).u.p.pts = MyMalloc(tempSegs(0).u.p.cnt*sizeof(pts_t));
+ int j = 0;
+ if (1-ep) {
+ tempSegs(0).u.p.pts[0].pt=pos;
+ tempSegs(0).u.p.pts[0].pt_type = wPolyLineStraight;
+ j = 1;
+ for (int i=polyInx+1; i<xx->segs[0].u.p.cnt; i++,j++) {
+ tempSegs(0).u.p.pts[j] = xx->segs[0].u.p.pts[i];
+ REORIGIN(tempSegs(0).u.p.pts[j].pt,tempSegs(0).u.p.pts[j].pt,xx->angle,
+ xx->orig);
}
- tempSegs(0).color = xx->segs[0].color;
- tempSegs(0).width = xx->segs[0].width;
- tempSegs_da.cnt = 1;
- tempSegs(0).type = SEG_STRLIN;
- tempSegs(0).u.l.pos[0] = end;
- tempSegs(0).u.l.pos[1] = pos;
- polyline_trim = TRUE;
- new_last = TRUE;
} else {
- //Check that new line will have >=3 spots if not -> reject
- if (xx->segs[0].u.p.cnt >3) {
- tempSegs(0).color = xx->segs[0].color;
- tempSegs(0).width = xx->segs[0].width;
- tempSegs_da.cnt = 1;
- tempSegs(0).type = SEG_POLY;
- tempSegs(0).u.p.polyType = POLYLINE;
- if (1-ep)
- tempSegs(0).u.p.cnt = xx->segs[0].u.p.cnt - polyInx;
- else
- tempSegs(0).u.p.cnt = polyInx + 2 - onPoint;
- tempSegs(0).u.p.pts = MyMalloc(tempSegs(0).u.p.cnt*sizeof(pts_t));
- int j = 0;
- if (1-ep) {
- tempSegs(0).u.p.pts[0].pt=pos;
- tempSegs(0).u.p.pts[0].pt_type = wPolyLineStraight;
- j = 1;
- for (int i=polyInx+1;i<xx->segs[0].u.p.cnt;i++,j++) {
- tempSegs(0).u.p.pts[j] = xx->segs[0].u.p.pts[i];
- REORIGIN(tempSegs(0).u.p.pts[j].pt,tempSegs(0).u.p.pts[j].pt,xx->angle,xx->orig);
- }
- } else {
- for (int i=0;i<=polyInx+1;i++,j++) {
- tempSegs(0).u.p.pts[j] = xx->segs[0].u.p.pts[i];
- REORIGIN(tempSegs(0).u.p.pts[j].pt,tempSegs(0).u.p.pts[j].pt,xx->angle,xx->orig);
- }
- if (!onPoint) {
- tempSegs(0).u.p.pts[tempSegs(0).u.p.cnt-1].pt = pos;
- tempSegs(0).u.p.pts[tempSegs(0).u.p.cnt-1].pt_type = wPolyLineStraight;
- }
- }
- } else {
- *leftover = NULL;
- return FALSE;
+ for (int i=0; i<=polyInx+1; i++,j++) {
+ tempSegs(0).u.p.pts[j] = xx->segs[0].u.p.pts[i];
+ REORIGIN(tempSegs(0).u.p.pts[j].pt,tempSegs(0).u.p.pts[j].pt,xx->angle,
+ xx->orig);
}
- polyline_trim = TRUE;
- new_last = 1-ep;
- int new_cnt, old_cnt = xx->segs[0].u.p.cnt;
- if (1-ep)
- new_cnt = polyInx + 2 - onPoint;
- else
- new_cnt = xx->segs[0].u.p.cnt-polyInx;
- pts_t * newpts = MyMalloc(new_cnt*sizeof(pts_t));
- int j = 0;
- if (1-ep) {
- for (int i = 0; i<polyInx+1; i++,j++) {
- newpts[j] = xx->segs[0].u.p.pts[i];
- REORIGIN(newpts[j].pt,newpts[i].pt,xx->angle,xx->orig);
- }
- if (!onPoint) {
- newpts[new_cnt-1].pt = pos;
- newpts[new_cnt-1].pt_type = wPolyLineStraight;
- }
- } else {
- newpts[0].pt = pos;
- newpts[0].pt_type = wPolyLineStraight;
- j = 1;
- for (int i=polyInx+1;i<old_cnt;i++,j++) {
- newpts[j] = xx->segs[0].u.p.pts[i];
- REORIGIN(newpts[j].pt,newpts[j].pt,xx->angle,xx->orig);
- }
+ if (!onPoint) {
+ tempSegs(0).u.p.pts[tempSegs(0).u.p.cnt-1].pt = pos;
+ tempSegs(0).u.p.pts[tempSegs(0).u.p.cnt-1].pt_type = wPolyLineStraight;
}
- MyFree(xx->segs[0].u.p.pts);
- xx->segs[0].u.p.cnt = new_cnt;
- xx->segs[0].u.p.pts = newpts;
}
- break;
- default:
+ } else {
+ *leftover = NULL;
return FALSE;
- }
- *leftover = NULL;
- if (tempSegs(0).type != -1) {
- *leftover = MakeDrawFromSeg( zero, 0.0, &tempSegs(0) );
- struct extraDataDraw_t * yy = GET_EXTRA_DATA(*leftover, T_DRAW, extraDataDraw_t);
- yy->lineType = xx->lineType;
- if (tempSegs(0).type == SEG_POLY && tempSegs(0).u.p.pts) {
- MyFree(tempSegs(0).u.p.pts);
- tempSegs(0).u.p.cnt = 0;
- tempSegs(0).u.p.pts = NULL;
}
+ polyline_trim = TRUE;
+ new_last = 1-ep;
+ int new_cnt, old_cnt = xx->segs[0].u.p.cnt;
+ if (1-ep) {
+ new_cnt = polyInx + 2 - onPoint;
+ } else {
+ new_cnt = xx->segs[0].u.p.cnt-polyInx;
+ }
+ pts_t * newpts = MyMalloc(new_cnt*sizeof(pts_t));
+ int j = 0;
+ if (1-ep) {
+ for (int i = 0; i<polyInx+1; i++,j++) {
+ newpts[j] = xx->segs[0].u.p.pts[i];
+ REORIGIN(newpts[j].pt,newpts[i].pt,xx->angle,xx->orig);
+ }
+ if (!onPoint) {
+ newpts[new_cnt-1].pt = pos;
+ newpts[new_cnt-1].pt_type = wPolyLineStraight;
+ }
+ } else {
+ newpts[0].pt = pos;
+ newpts[0].pt_type = wPolyLineStraight;
+ j = 1;
+ for (int i=polyInx+1; i<old_cnt; i++,j++) {
+ newpts[j] = xx->segs[0].u.p.pts[i];
+ REORIGIN(newpts[j].pt,newpts[j].pt,xx->angle,xx->orig);
+ }
+ }
+ MyFree(xx->segs[0].u.p.pts);
+ xx->segs[0].u.p.cnt = new_cnt;
+ xx->segs[0].u.p.pts = newpts;
}
+ break;
+ default:
+ return FALSE;
+ }
+ *leftover = NULL;
+ if (tempSegs(0).type != -1) {
+ *leftover = MakeDrawFromSeg( zero, 0.0, &tempSegs(0) );
+ struct extraDataDraw_t * yy = GET_EXTRA_DATA(*leftover, T_DRAW,
+ extraDataDraw_t);
+ yy->lineType = xx->lineType;
+ if (tempSegs(0).type == SEG_POLY && tempSegs(0).u.p.pts) {
+ MyFree(tempSegs(0).u.p.pts);
+ tempSegs(0).u.p.cnt = 0;
+ tempSegs(0).u.p.pts = NULL;
+ }
+ }
- if (*leftover) {
- //Polyline sets new_last to the end of the extra
- if (polyline_trim && (ep != new_last)) {
- *leftover = trk;
- }
+ if (*leftover) {
+ //Polyline sets new_last to the end of the extra
+ if (polyline_trim && (ep != new_last)) {
+ *leftover = trk;
}
- xx->orig = zero;
- xx->angle = 0.0;
- ComputeDrawBoundingBox(trk);
- *ep0 = 1-ep;
- *ep1 = ep;
- return TRUE;
+ }
+ xx->orig = zero;
+ xx->angle = 0.0;
+ ComputeDrawBoundingBox(trk);
+ *ep0 = 1-ep;
+ *ep1 = ep;
+ return TRUE;
}
static BOOL_T MakeParallelDraw(
- track_p trk,
- coOrd pos,
- DIST_T sep,
- DIST_T factor,
- track_p * newTrkR,
- coOrd * p0R,
- coOrd * p1R,
- BOOL_T track)
+ track_p trk,
+ coOrd pos,
+ DIST_T sep,
+ DIST_T factor,
+ track_p * newTrkR,
+ coOrd * p0R,
+ coOrd * p1R,
+ BOOL_T track)
{
- if (track) return FALSE;
+ if (track) { return FALSE; }
struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
ANGLE_T angle;
@@ -2411,167 +2540,181 @@ static BOOL_T MakeParallelDraw(
DYNARR_SET(trkSeg_t, tempSegs_da, 1);
switch (xx->segs[0].type) {
- case SEG_STRLIN:
- angle = NormalizeAngle(FindAngle(xx->segs[0].u.l.pos[0],xx->segs[0].u.l.pos[1])+xx->angle);
- if ( NormalizeAngle( FindAngle( xx->segs[0].u.l.pos[0], pos ) - angle ) < 180.0 )
- angle += 90;
- else
- angle -= 90;
- coOrd p0,p1;
- REORIGIN(p0,xx->segs[0].u.l.pos[0],xx->angle,xx->orig);
- REORIGIN(p1,xx->segs[0].u.l.pos[1],xx->angle,xx->orig);
- Translate(&p0,p0, angle, sep);
- Translate(&p1,p1, angle, sep);
- tempSegs(0).color = xx->segs[0].color;
- tempSegs(0).width = xx->segs[0].width;
- tempSegs_da.cnt = 1;
- tempSegs(0).type = SEG_STRLIN;
- tempSegs(0).u.l.pos[0] = p0;
- tempSegs(0).u.l.pos[1] = p1;
- if (newTrkR) {
- *newTrkR = MakeDrawFromSeg( zero, 0.0, &tempSegs(0) );
- struct extraDataDraw_t * yy = GET_EXTRA_DATA(*newTrkR, T_DRAW, extraDataDraw_t);
- yy->lineType = xx->lineType;
- }
+ case SEG_STRLIN:
+ angle = NormalizeAngle(FindAngle(xx->segs[0].u.l.pos[0],
+ xx->segs[0].u.l.pos[1])+xx->angle);
+ if ( NormalizeAngle( FindAngle( xx->segs[0].u.l.pos[0],
+ pos ) - angle ) < 180.0 ) {
+ angle += 90;
+ } else {
+ angle -= 90;
+ }
+ coOrd p0,p1;
+ REORIGIN(p0,xx->segs[0].u.l.pos[0],xx->angle,xx->orig);
+ REORIGIN(p1,xx->segs[0].u.l.pos[1],xx->angle,xx->orig);
+ Translate(&p0,p0, angle, sep);
+ Translate(&p1,p1, angle, sep);
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ tempSegs(0).color = xx->segs[0].color;
+ tempSegs(0).lineWidth = xx->segs[0].lineWidth;
+ tempSegs(0).type = SEG_STRLIN;
+ tempSegs(0).u.l.pos[0] = p0;
+ tempSegs(0).u.l.pos[1] = p1;
+ if (newTrkR) {
+ *newTrkR = MakeDrawFromSeg( zero, 0.0, &tempSegs(0) );
+ struct extraDataDraw_t * yy = GET_EXTRA_DATA(*newTrkR, T_DRAW, extraDataDraw_t);
+ yy->lineType = xx->lineType;
+ }
- if ( p0R ) *p0R = p0;
- if ( p1R ) *p1R = p1;
- return TRUE;
- break;
- case SEG_CRVLIN:
- case SEG_FILCRCL:;
- coOrd c;
- REORIGIN(c, xx->segs[0].u.c.center, xx->angle, xx->orig);
- rad = FindDistance( pos, c );
- if ( rad > xx->segs[0].u.c.radius )
- rad = xx->segs[0].u.c.radius + sep;
- else
- rad = xx->segs[0].u.c.radius - sep;
- tempSegs(0).color = xx->segs[0].color;
- tempSegs(0).width = xx->segs[0].width;
- tempSegs_da.cnt = 1;
- tempSegs(0).type = SEG_CRVLIN;
- tempSegs(0).u.c.center = c;
- tempSegs(0).u.c.radius = rad;
- tempSegs(0).u.c.a0 = xx->segs[0].u.c.a0 + xx->angle;
- tempSegs(0).u.c.a1 = xx->segs[0].u.c.a1;
- if (newTrkR) {
- *newTrkR = MakeDrawFromSeg( zero, 0.0, &tempSegs(0) );
- struct extraDataDraw_t * yy = GET_EXTRA_DATA(*newTrkR, T_DRAW, extraDataDraw_t);
- yy->lineType = xx->lineType;
- }
- if ( p0R ) PointOnCircle( p0R, xx->segs[0].u.c.center, rad, xx->segs[0].u.c.a0 );
- if ( p1R ) PointOnCircle( p1R, xx->segs[0].u.c.center, rad, xx->segs[0].u.c.a0+xx->segs[0].u.c.a1 );
- return TRUE;
- break;
- case SEG_POLY:
- case SEG_FILPOLY:
- pos.x -= xx->orig.x;
- pos.y -= xx->orig.y;
- Rotate( &pos, zero, -xx->angle );
- coOrd p = pos;
- int inx2;
- angle = NormalizeAngle(GetAngleSegs(1,&xx->segs[0],&p,NULL,NULL,NULL,&inx2,NULL)+xx->angle);
- if ( NormalizeAngle( FindAngle( p, pos ) - angle ) < 180.0 ) {
- angle = +90.0;
+ if ( p0R ) { *p0R = p0; }
+ if ( p1R ) { *p1R = p1; }
+ return TRUE;
+ break;
+ case SEG_CRVLIN:
+ case SEG_FILCRCL:;
+ coOrd c;
+ REORIGIN(c, xx->segs[0].u.c.center, xx->angle, xx->orig);
+ rad = FindDistance( pos, c );
+ if ( rad > xx->segs[0].u.c.radius ) {
+ rad = xx->segs[0].u.c.radius + sep;
+ } else {
+ rad = xx->segs[0].u.c.radius - sep;
+ }
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ tempSegs(0).color = xx->segs[0].color;
+ tempSegs(0).lineWidth = xx->segs[0].lineWidth;
+ tempSegs(0).type = SEG_CRVLIN;
+ tempSegs(0).u.c.center = c;
+ tempSegs(0).u.c.radius = rad;
+ tempSegs(0).u.c.a0 = xx->segs[0].u.c.a0 + xx->angle;
+ tempSegs(0).u.c.a1 = xx->segs[0].u.c.a1;
+ if (newTrkR) {
+ *newTrkR = MakeDrawFromSeg( zero, 0.0, &tempSegs(0) );
+ struct extraDataDraw_t * yy = GET_EXTRA_DATA(*newTrkR, T_DRAW, extraDataDraw_t);
+ yy->lineType = xx->lineType;
+ }
+ if ( p0R ) { PointOnCircle( p0R, xx->segs[0].u.c.center, rad, xx->segs[0].u.c.a0 ); }
+ if ( p1R ) { PointOnCircle( p1R, xx->segs[0].u.c.center, rad, xx->segs[0].u.c.a0+xx->segs[0].u.c.a1 ); }
+ return TRUE;
+ break;
+ case SEG_POLY:
+ case SEG_FILPOLY:
+ pos.x -= xx->orig.x;
+ pos.y -= xx->orig.y;
+ Rotate( &pos, zero, -xx->angle );
+ coOrd p = pos;
+ int inx2;
+ angle = NormalizeAngle(GetAngleSegs(1,&xx->segs[0],&p,NULL,NULL,NULL,&inx2,
+ NULL)+xx->angle);
+ if ( NormalizeAngle( FindAngle( p, pos ) - angle ) < 180.0 ) {
+ angle = +90.0;
+ } else {
+ angle = -90.0;
+ }
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ tempSegs(0).color = xx->segs[0].color;
+ tempSegs(0).lineWidth = xx->segs[0].lineWidth;
+ tempSegs(0).type = SEG_POLY;
+ tempSegs(0).u.p.polyType = xx->segs[0].type==SEG_POLY?xx->segs[0].u.p.polyType:
+ POLYLINE;
+ tempSegs(0).u.p.pts = memdup( xx->segs[0].u.p.pts,
+ xx->segs[0].u.p.cnt*sizeof (pts_t) );
+ tempSegs(0).u.p.cnt = xx->segs[0].u.p.cnt;
+ ANGLE_T a,b;
+ for (int i=0; i<xx->segs[0].u.p.cnt; i++) {
+ REORIGIN(tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[i].pt,xx->angle,
+ xx->orig);
+ }
+ for (int i=0; i<xx->segs[0].u.p.cnt; i++) {
+ if (xx->segs[0].u.p.polyType == POLYLINE) {
+ if (i==0) {
+ a = FindAngle(tempSegs(0).u.p.pts[0].pt,tempSegs(0).u.p.pts[1].pt);
+ b = 0;
+ } else if (i==xx->segs[0].u.p.cnt-1) {
+ a = NormalizeAngle(FindAngle(tempSegs(0).u.p.pts[i].pt,
+ tempSegs(0).u.p.pts[i-1].pt)+180.0);
+ b = 0;
+ } else {
+ a = FindAngle(tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[i+1].pt);
+ b = DifferenceBetweenAngles(a,FindAngle(tempSegs(0).u.p.pts[i].pt,
+ tempSegs(0).u.p.pts[i-1].pt)+180.0)/2;
+ a = a + b;
+ }
} else {
- angle = -90.0;
- }
- tempSegs(0).color = xx->segs[0].color;
- tempSegs(0).width = xx->segs[0].width;
- tempSegs_da.cnt = 1;
- tempSegs(0).type = SEG_POLY;
- tempSegs(0).u.p.polyType = xx->segs[0].type==SEG_POLY?xx->segs[0].u.p.polyType:POLYLINE;
- tempSegs(0).u.p.pts = memdup( xx->segs[0].u.p.pts, xx->segs[0].u.p.cnt*sizeof (pts_t) );
- tempSegs(0).u.p.cnt = xx->segs[0].u.p.cnt;
- ANGLE_T a,b;
- for (int i=0;i<xx->segs[0].u.p.cnt;i++) {
- REORIGIN(tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[i].pt,xx->angle, xx->orig);
- }
- for (int i=0;i<xx->segs[0].u.p.cnt;i++) {
- if (xx->segs[0].u.p.polyType == POLYLINE) {
- if (i==0) {
- a = FindAngle(tempSegs(0).u.p.pts[0].pt,tempSegs(0).u.p.pts[1].pt);
- b = 0;
- } else if (i==xx->segs[0].u.p.cnt-1) {
- a = NormalizeAngle(FindAngle(tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[i-1].pt)+180.0);
- b = 0;
- } else {
- a = FindAngle(tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[i+1].pt);
- b = DifferenceBetweenAngles(a,FindAngle(tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[i-1].pt)+180.0)/2;
- a = a + b;
- }
+ if (i==0) {
+ a = FindAngle(tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[i+1].pt);
+ b = DifferenceBetweenAngles(a,FindAngle(tempSegs(0).u.p.pts[i].pt,
+ tempSegs(0).u.p.pts[xx->segs[0].u.p.cnt-1].pt)+180.0)/2;
+ a = a+b;
+ } else if (i==xx->segs[0].u.p.cnt-1) {
+ a = FindAngle(tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[0].pt);
+ b = DifferenceBetweenAngles(a,FindAngle(tempSegs(0).u.p.pts[i].pt,
+ tempSegs(0).u.p.pts[i-1].pt)+180.0)/2;
+ a = a+b;
} else {
- if (i==0) {
- a = FindAngle(tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[i+1].pt);
- b = DifferenceBetweenAngles(a,FindAngle(tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[xx->segs[0].u.p.cnt-1].pt)+180.0)/2;
- a = a+b;
- } else if (i==xx->segs[0].u.p.cnt-1) {
- a = FindAngle(tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[0].pt);
- b = DifferenceBetweenAngles(a,FindAngle(tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[i-1].pt)+180.0)/2;
- a = a+b;
- } else {
- a = FindAngle(tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[i+1].pt);
- b = DifferenceBetweenAngles(a,FindAngle(tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[i-1].pt)+180.0)/2;
- a = a+b;
- }
+ a = FindAngle(tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[i+1].pt);
+ b = DifferenceBetweenAngles(a,FindAngle(tempSegs(0).u.p.pts[i].pt,
+ tempSegs(0).u.p.pts[i-1].pt)+180.0)/2;
+ a = a+b;
}
-
- Translate(&tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[i].pt,a+angle,fabs(sep/cos(D2R(b))));
}
- if (newTrkR) {
- *newTrkR = MakeDrawFromSeg( zero, 0.0, &tempSegs(0) );
- struct extraDataDraw_t * yy = GET_EXTRA_DATA(*newTrkR, T_DRAW, extraDataDraw_t);
- yy->lineType = xx->lineType;
- if (tempSegs(0).u.p.pts) MyFree(tempSegs(0).u.p.pts);
- }
- if (p0R) *p0R = tempSegs(0).u.p.pts[0].pt;
- if (p1R) *p1R = tempSegs(0).u.p.pts[tempSegs(0).u.p.cnt-1].pt;
- return TRUE;
- break;
- default:
+
+ Translate(&tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[i].pt,a+angle,
+ fabs(sep/cos(D2R(b))));
+ }
+ if (newTrkR) {
+ *newTrkR = MakeDrawFromSeg( zero, 0.0, &tempSegs(0) );
+ struct extraDataDraw_t * yy = GET_EXTRA_DATA(*newTrkR, T_DRAW, extraDataDraw_t);
+ yy->lineType = xx->lineType;
+ if (tempSegs(0).u.p.pts) { MyFree(tempSegs(0).u.p.pts); }
+ }
+ if (p0R) { *p0R = tempSegs(0).u.p.pts[0].pt; }
+ if (p1R) { *p1R = tempSegs(0).u.p.pts[tempSegs(0).u.p.cnt-1].pt; }
+ return TRUE;
+ break;
+ default:
return FALSE;
}
return FALSE;
}
static trackCmd_t drawCmds = {
- "DRAW",
- DrawDraw,
- DistanceDraw,
- DescribeDraw,
- DeleteDraw,
- WriteDraw,
- ReadDraw,
- MoveDraw,
- RotateDraw,
- RescaleDraw,
- NULL,
- GetAngleDraw, /* getAngle */
- SplitDraw, /* split */
- NULL, /* traverse */
- EnumerateDraw,
- NULL, /* redraw */
- NULL, /* trim */
- NULL, /* merge */
- ModifyDraw,
- NULL, /* getLength */
- GetParamsDraw, /* getTrackParams */
- NULL, /* moveEndPt */
- QueryDraw, /* query */
- UngroupDraw,
- FlipDraw,
- NULL,
- NULL,
- NULL,
- MakeParallelDraw, /*Parallel*/
- NULL,
- NULL, /*MakeSegs*/
- ReplayDraw,
- StoreDraw,
- NULL,
- CompareDraw
- };
+ "DRAW",
+ DrawDraw,
+ DistanceDraw,
+ DescribeDraw,
+ DeleteDraw,
+ WriteDraw,
+ ReadDraw,
+ MoveDraw,
+ RotateDraw,
+ RescaleDraw,
+ NULL,
+ GetAngleDraw, /* getAngle */
+ SplitDraw, /* split */
+ NULL, /* traverse */
+ EnumerateDraw,
+ NULL, /* redraw */
+ NULL, /* trim */
+ NULL, /* merge */
+ ModifyDraw,
+ NULL, /* getLength */
+ GetParamsDraw, /* getTrackParams */
+ NULL, /* moveEndPt */
+ QueryDraw, /* query */
+ UngroupDraw,
+ FlipDraw,
+ NULL,
+ NULL,
+ NULL,
+ MakeParallelDraw, /*Parallel*/
+ NULL,
+ NULL, /*MakeSegs*/
+ ReplayDraw,
+ StoreDraw,
+ NULL,
+ CompareDraw
+};
EXPORT BOOL_T OnTableEdgeEndPt( track_p trk, coOrd * pos )
{
@@ -2581,11 +2724,12 @@ EXPORT BOOL_T OnTableEdgeEndPt( track_p trk, coOrd * pos )
ignoredTableEdge = trk;
if ((trk1 = OnTrack( &pos1, FALSE, FALSE )) != NULL &&
- GetTrkType(trk1) == T_DRAW) {
+ GetTrkType(trk1) == T_DRAW) {
ignoredTableEdge = NULL;
xx = GET_EXTRA_DATA(trk1, T_DRAW, extraDataDraw_t);
- if (xx->segCnt < 1)
+ if (xx->segCnt < 1) {
return FALSE;
+ }
if (xx->segs[0].type == SEG_TBLEDGE) {
if ( IsClose( FindDistance( *pos, xx->segs[0].u.l.pos[0] ) ) ) {
*pos = xx->segs[0].u.l.pos[0];
@@ -2607,8 +2751,9 @@ EXPORT BOOL_T GetClosestEndPt( track_p trk, coOrd * pos)
if (GetTrkType(trk) == T_DRAW) {
ignoredTableEdge = NULL;
xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
- if (xx->segCnt < 1)
+ if (xx->segCnt < 1) {
return FALSE;
+ }
DIST_T dd0,dd1;
coOrd p00,p0,p1;
p00 = *pos;
@@ -2617,26 +2762,28 @@ EXPORT BOOL_T GetClosestEndPt( track_p trk, coOrd * pos)
p00.x -= xx->orig.x;
p00.y -= xx->orig.y;
switch (xx->segs[0].type) {
- case SEG_CRVLIN:
- PointOnCircle( &p0, xx->segs[0].u.c.center, fabs(xx->segs[0].u.c.radius), xx->segs[0].u.c.a0 );
- dd0 = FindDistance( p00, p0);
- PointOnCircle( &p1, xx->segs[0].u.c.center, fabs(xx->segs[0].u.c.radius), xx->segs[0].u.c.a0 + xx->segs[0].u.c.a1);
- dd1 = FindDistance( p00, p1);
+ case SEG_CRVLIN:
+ PointOnCircle( &p0, xx->segs[0].u.c.center, fabs(xx->segs[0].u.c.radius),
+ xx->segs[0].u.c.a0 );
+ dd0 = FindDistance( p00, p0);
+ PointOnCircle( &p1, xx->segs[0].u.c.center, fabs(xx->segs[0].u.c.radius),
+ xx->segs[0].u.c.a0 + xx->segs[0].u.c.a1);
+ dd1 = FindDistance( p00, p1);
break;
- case SEG_STRLIN:
- dd0 = FindDistance( p00, xx->segs[0].u.l.pos[0]);
- p0 = xx->segs[0].u.l.pos[0];
- dd1 = FindDistance( p00, xx->segs[0].u.l.pos[1]);
- p1 = xx->segs[0].u.l.pos[1];
+ case SEG_STRLIN:
+ dd0 = FindDistance( p00, xx->segs[0].u.l.pos[0]);
+ p0 = xx->segs[0].u.l.pos[0];
+ dd1 = FindDistance( p00, xx->segs[0].u.l.pos[1]);
+ p1 = xx->segs[0].u.l.pos[1];
break;
- case SEG_BEZLIN:
- dd0 = FindDistance( p00, xx->segs[0].u.b.pos[0]);
- p0 = xx->segs[0].u.b.pos[0];
- dd1 = FindDistance( p00, xx->segs[0].u.b.pos[3]);
- p1 = xx->segs[0].u.b.pos[3];
+ case SEG_BEZLIN:
+ dd0 = FindDistance( p00, xx->segs[0].u.b.pos[0]);
+ p0 = xx->segs[0].u.b.pos[0];
+ dd1 = FindDistance( p00, xx->segs[0].u.b.pos[3]);
+ p1 = xx->segs[0].u.b.pos[3];
break;
- default:
- return FALSE;
+ default:
+ return FALSE;
}
p0.x += xx->orig.x;
p0.y += xx->orig.y;
@@ -2651,7 +2798,7 @@ EXPORT BOOL_T GetClosestEndPt( track_p trk, coOrd * pos)
p1 = xx->segs[0].u.b.pos[3];
dd0 = FindDistance(p00,p0);
dd1 = FindDistance(p00,p1);
- } else return FALSE;
+ } else { return FALSE; }
if (dd0>dd1) {
* pos = p1;
return TRUE;
@@ -2666,23 +2813,24 @@ EXPORT BOOL_T GetClosestEndPt( track_p trk, coOrd * pos)
static drawContext_t drawCmdContext = {
- InfoMessage,
- DoRedraw,
- &mainD,
- OP_LINE };
+ InfoMessage,
+ DoRedraw,
+ &mainD,
+ OP_LINE
+};
static wIndex_t benchChoice;
static wIndex_t benchOrient;
static wIndex_t dimArrowSize;
wDrawColor lineColor = 1;
-long lineWidth = 0;
-static wDrawColor benchColor;
+LWIDTH_T lineWidth = 0;
+wDrawColor benchColor;
static paramData_t drawPLs[] = {
#define drawLineWidthPD (drawPLs[0])
- { PD_LONG, &drawCmdContext.line_Width, "linewidth", PDO_NORECORD, &i100_100, N_("Line Width") },
+ { PD_FLOAT, &lineWidth, "linewidth", PDO_NORECORD, &r100_100, N_("Line Width") },
#define drawColorPD (drawPLs[1])
{ PD_COLORLIST, &lineColor, "linecolor", PDO_NORECORD, NULL, N_("Color") },
#define drawBenchColorPD (drawPLs[2])
@@ -2690,9 +2838,9 @@ static paramData_t drawPLs[] = {
#define drawBenchChoicePD (drawPLs[3])
#ifdef WINDOWS
{ PD_DROPLIST, &benchChoice, "benchlist", PDO_NOPREF|PDO_NORECORD|PDO_LISTINDEX, I2VP(120), N_("Lumber Type") },
-#else
- { PD_DROPLIST, &benchChoice, "benchlist", PDO_NOPREF|PDO_NORECORD|PDO_LISTINDEX, I2VP(145), N_("Lumber Type") },
-#endif
+#else
+ { PD_DROPLIST, &benchChoice, "benchlist", PDO_NOPREF|PDO_NORECORD|PDO_LISTINDEX, I2VP(145), N_("Lumber Type") },
+#endif
#define drawBenchOrientPD (drawPLs[4])
#ifdef WINDOWS
{ PD_DROPLIST, &benchOrient, "benchorient", PDO_NOPREF|PDO_NORECORD|PDO_LISTINDEX, I2VP(45), "", 0 },
@@ -2716,27 +2864,28 @@ static paramData_t drawPLs[] = {
static paramGroup_t drawPG = { "draw", 0, drawPLs, COUNT( drawPLs ) };
static char * objectName[] = {
- N_("Straight"),
- N_("Dimension"),
- N_("Lumber"),
- N_("Table Edge"),
- N_("Curved"),
- N_("Curved"),
- N_("Curved"),
- N_("Curved"),
- N_("Circle"),
- N_("Circle"),
- N_("Circle"),
- N_("Box"),
- N_("Polygon"),
- N_("Filled Circle"),
- N_("Filled Circle"),
- N_("Filled Circle"),
- N_("Filled Box"),
- N_("Filled Polygon"),
- N_("Bezier Line"),
- N_("Polyline"),
- NULL};
+ N_("Straight"),
+ N_("Dimension"),
+ N_("Lumber"),
+ N_("Table Edge"),
+ N_("Curved"),
+ N_("Curved"),
+ N_("Curved"),
+ N_("Curved"),
+ N_("Circle"),
+ N_("Circle"),
+ N_("Circle"),
+ N_("Box"),
+ N_("Polygon"),
+ N_("Filled Circle"),
+ N_("Filled Circle"),
+ N_("Filled Circle"),
+ N_("Filled Box"),
+ N_("Filled Polygon"),
+ N_("Bezier Line"),
+ N_("Polyline"),
+ NULL
+};
static STATUS_T CmdDraw( wAction_t action, coOrd pos )
@@ -2819,11 +2968,14 @@ static STATUS_T CmdDraw( wAction_t action, coOrd pos )
labels[0] = N_("Lumber Type");
labels[1] = "";
labels[2] = N_("Color");
- if ( wListGetCount( (wList_p)drawBenchChoicePD.control ) == 0 )
- BenchLoadLists( (wList_p)drawBenchChoicePD.control, (wList_p)drawBenchOrientPD.control );
+ if ( wListGetCount( (wList_p)drawBenchChoicePD.control ) == 0 ) {
+ BenchLoadLists( (wList_p)drawBenchChoicePD.control,
+ (wList_p)drawBenchOrientPD.control );
+ }
ParamLoadControls( &drawPG );
- BenchUpdateOrientationList( VP2L(wListGetItemContext( (wList_p)drawBenchChoicePD.control, benchChoice )), (wList_p)drawBenchOrientPD.control );
+ BenchUpdateOrientationList( VP2L(wListGetItemContext( (wList_p)
+ drawBenchChoicePD.control, benchChoice )), (wList_p)drawBenchOrientPD.control );
wListSetIndex( (wList_p)drawBenchOrientPD.control, benchOrient );
InfoSubstituteControls( controls, labels );
drawBenchColorPD.option &= ~PDO_NORECORD;
@@ -2853,7 +3005,7 @@ static STATUS_T CmdDraw( wAction_t action, coOrd pos )
infoSubst = FALSE;
}
ParamGroupRecord( &drawPG );
- if (drawCmdContext.Op == OP_BEZLIN) return CmdBezCurve(act2, pos);
+ if (drawCmdContext.Op == OP_BEZLIN) { return CmdBezCurve(act2, pos); }
DrawGeomMouse( C_START, pos, &drawCmdContext);
return C_CONTINUE;
@@ -2864,33 +3016,34 @@ static STATUS_T CmdDraw( wAction_t action, coOrd pos )
return CmdBezCurve(act2, pos);
}
if ( drawCmdContext.Op == OP_BENCH ) {
- drawCmdContext.benchOption = GetBenchData( VP2L(wListGetItemContext((wList_p)drawBenchChoicePD.control, benchChoice )), benchOrient );
- drawCmdContext.Color = benchColor;
+ drawCmdContext.benchOption = GetBenchData( VP2L(wListGetItemContext((
+ wList_p)drawBenchChoicePD.control, benchChoice )), benchOrient );
+ lineColor = benchColor;
} else if ( drawCmdContext.Op == OP_DIMLINE ) {
- drawCmdContext.Color = wDrawColorBlack;
+ lineColor = wDrawColorBlack;
drawCmdContext.benchOption = dimArrowSize;
} else if ( drawCmdContext.Op == OP_TBLEDGE ) {
- drawCmdContext.Color = wDrawColorBlack;
+ lineColor = wDrawColorBlack;
} else {
- drawCmdContext.Color = lineColor;
+ lineColor = lineColor;
}
if ( infoSubst ) {
InfoSubstituteControls( NULL, NULL );
infoSubst = FALSE;
}
- /* no break */
+ /* no break */
case wActionLDrag:
ParamLoadData( &drawPG );
- /* no break */
+ /* no break */
case wActionMove:
case wActionRDown:
case wActionRDrag:
- if (drawCmdContext.Op == OP_BEZLIN) return CmdBezCurve(act2, pos);
+ if (drawCmdContext.Op == OP_BEZLIN) { return CmdBezCurve(act2, pos); }
return DrawGeomMouse( action, pos, &drawCmdContext);
case wActionLUp:
case wActionRUp:
- if (drawCmdContext.Op == OP_BEZLIN) return CmdBezCurve(act2, pos);
+ if (drawCmdContext.Op == OP_BEZLIN) { return CmdBezCurve(act2, pos); }
drawCmdContext.show = TRUE;
int rc = DrawGeomMouse( action, pos, &drawCmdContext);
// Put up text entry boxes ready for updates if the result was continue
@@ -2944,12 +3097,14 @@ static STATUS_T CmdDraw( wAction_t action, coOrd pos )
controls[1] = drawAnglePD.control;
controls[2] = NULL;
labels[0] = N_("Seg Length");
- if (drawCmdContext.Op == OP_LINE || drawCmdContext.Op == OP_BENCH || drawCmdContext.Op == OP_TBLEDGE)
+ if (drawCmdContext.Op == OP_LINE || drawCmdContext.Op == OP_BENCH
+ || drawCmdContext.Op == OP_TBLEDGE) {
labels[1] = N_("Angle");
- else if (drawCmdContext.index > 0 )
+ } else if (drawCmdContext.index > 0 ) {
labels[1] = N_("Rel Angle");
- else
+ } else {
labels[1] = N_("Angle");
+ }
ParamLoadControls( &drawPG );
InfoSubstituteControls( controls, labels );
drawLengthPD.option &= ~PDO_NORECORD;
@@ -2977,29 +3132,29 @@ static STATUS_T CmdDraw( wAction_t action, coOrd pos )
case C_CANCEL:
InfoSubstituteControls( NULL, NULL );
- if (drawCmdContext.Op == OP_BEZLIN) return CmdBezCurve(act2, pos);
+ if (drawCmdContext.Op == OP_BEZLIN) { return CmdBezCurve(act2, pos); }
return DrawGeomMouse( action, pos, &drawCmdContext);
case C_TEXT:
- if (drawCmdContext.Op == OP_BEZLIN) return CmdBezCurve(action, pos);
+ if (drawCmdContext.Op == OP_BEZLIN) { return CmdBezCurve(action, pos); }
return DrawGeomMouse( action, pos, &drawCmdContext);
case C_OK:
- if (drawCmdContext.Op == OP_BEZLIN) return CmdBezCurve(act2, pos);
+ if (drawCmdContext.Op == OP_BEZLIN) { return CmdBezCurve(act2, pos); }
return DrawGeomMouse( (0x0D<<8|wActionText), pos, &drawCmdContext);
case C_CONFIRM:
- if (drawCmdContext.Op == OP_BEZLIN) return CmdBezCurve(act2, pos);
+ if (drawCmdContext.Op == OP_BEZLIN) { return CmdBezCurve(act2, pos); }
return DrawGeomMouse( (0x0D<<8|wActionText), pos, &drawCmdContext);
case C_FINISH:
- if (drawCmdContext.Op == OP_BEZLIN) return CmdBezCurve(act2, pos);
+ if (drawCmdContext.Op == OP_BEZLIN) { return CmdBezCurve(act2, pos); }
return DrawGeomMouse( (0x0D<<8|wActionText), pos, &drawCmdContext);
- /*DrawOk( NULL );*/
+ /*DrawOk( NULL );*/
case C_REDRAW:
- if (drawCmdContext.Op == OP_BEZLIN) return CmdBezCurve(act2, pos);
+ if (drawCmdContext.Op == OP_BEZLIN) { return CmdBezCurve(act2, pos); }
return DrawGeomMouse( action, pos, &drawCmdContext);
case C_CMDMENU:
- if (drawCmdContext.Op == OP_BEZLIN) return C_CONTINUE;
+ if (drawCmdContext.Op == OP_BEZLIN) { return C_CONTINUE; }
return DrawGeomMouse( action, pos, &drawCmdContext);
default:
@@ -3007,84 +3162,88 @@ static STATUS_T CmdDraw( wAction_t action, coOrd pos )
}
}
-#include "bitmaps/straight-line.xpm"
-#include "bitmaps/dimension.xpm"
-#include "bitmaps/benchwork.xpm"
-#include "bitmaps/table-edge.xpm"
+#include "bitmaps/straight-line.xpm3"
+#include "bitmaps/dimension.xpm3"
+#include "bitmaps/benchwork.xpm3"
+#include "bitmaps/table-edge.xpm3"
-#include "bitmaps/curved-line-end.xpm"
-#include "bitmaps/curved-line-tangent.xpm"
-#include "bitmaps/curved-line-middle.xpm"
-#include "bitmaps/curved-line-chord.xpm"
+#include "bitmaps/curved-line-end.xpm3"
+#include "bitmaps/curved-line-tangent.xpm3"
+#include "bitmaps/curved-line-middle.xpm3"
+#include "bitmaps/curved-line-chord.xpm3"
/*#include "bitmaps/dcircle1.xpm"*/
-#include "bitmaps/circle-line-center.xpm"
-#include "bitmaps/circle-line-tangent.xpm"
+#include "bitmaps/circle-line-center.xpm3"
+#include "bitmaps/circle-line-tangent.xpm3"
/*#include "bitmaps/dflcrcl1.xpm"*/
-#include "bitmaps/circle-filled-center.xpm"
-#include "bitmaps/circle-filled-tangent.xpm"
+#include "bitmaps/circle-filled-center.xpm3"
+#include "bitmaps/circle-filled-tangent.xpm3"
-#include "bitmaps/box.xpm"
-#include "bitmaps/filled-box.xpm"
-#include "bitmaps/polygon.xpm"
-#include "bitmaps/filled-polygon.xpm"
-#include "bitmaps/bezier-line.xpm"
-#include "bitmaps/polyline.xpm"
+#include "bitmaps/box.xpm3"
+#include "bitmaps/filled-box.xpm3"
+#include "bitmaps/polygon.xpm3"
+#include "bitmaps/filled-polygon.xpm3"
+#include "bitmaps/bezier-line.xpm3"
+#include "bitmaps/polyline.xpm3"
typedef struct {
- char ***xpm;
- int OP;
- char * shortName;
- char * cmdName;
- char * helpKey;
- long acclKey;
- } drawData_t;
+ char ***xpm;
+ int OP;
+ char * shortName;
+ char * cmdName;
+ char * helpKey;
+ long acclKey;
+} drawData_t;
static drawData_t dlineCmds[] = {
- { straight_line_xpm, OP_LINE, N_("Line"), N_("Draw Line"), "cmdDrawLine", ACCL_DRAWLINE },
- { dimension_xpm, OP_DIMLINE, N_("Dimension Line"), N_("Draw Dimension Line"), "cmdDrawDimLine", ACCL_DRAWDIMLINE },
- { benchwork_xpm, OP_BENCH, N_("Benchwork"), N_("Draw Benchwork"), "cmdDrawBench", ACCL_DRAWBENCH },
- { table_edge_xpm, OP_TBLEDGE, N_("Table Edge"), N_("Draw Table Edge"), "cmdDrawTableEdge", ACCL_DRAWTBLEDGE } };
+ { straight_line_xpm3, OP_LINE, N_("Line"), N_("Draw Line"), "cmdDrawLine", ACCL_DRAWLINE },
+ { dimension_xpm3, OP_DIMLINE, N_("Dimension Line"), N_("Draw Dimension Line"), "cmdDrawDimLine", ACCL_DRAWDIMLINE },
+ { benchwork_xpm3, OP_BENCH, N_("Benchwork"), N_("Draw Benchwork"), "cmdDrawBench", ACCL_DRAWBENCH },
+ { table_edge_xpm3, OP_TBLEDGE, N_("Table Edge"), N_("Draw Table Edge"), "cmdDrawTableEdge", ACCL_DRAWTBLEDGE }
+};
static drawData_t dcurveCmds[] = {
- { curved_line_end_xpm, OP_CURVE1, N_("Curve End"), N_("Draw Curve from End"), "cmdDrawCurveEndPt", ACCL_DRAWCURVE1 },
- { curved_line_tangent_xpm, OP_CURVE2, N_("Curve Tangent"), N_("Draw Curve from Tangent"), "cmdDrawCurveTangent", ACCL_DRAWCURVE2 },
- { curved_line_middle_xpm, OP_CURVE3, N_("Curve Center"), N_("Draw Curve from Center"), "cmdDrawCurveCenter", ACCL_DRAWCURVE3 },
- { curved_line_chord_xpm, OP_CURVE4, N_("Curve Chord"), N_("Draw Curve from Chord"), "cmdDrawCurveChord", ACCL_DRAWCURVE4 },
- { bezier_line_xpm, OP_BEZLIN, N_("Bezier Curve"), N_("Draw Bezier"), "cmdDrawBezierCurve", ACCL_DRAWBEZLINE } };
+ { curved_line_end_xpm3, OP_CURVE1, N_("Curve End"), N_("Draw Curve from End"), "cmdDrawCurveEndPt", ACCL_DRAWCURVE1 },
+ { curved_line_tangent_xpm3, OP_CURVE2, N_("Curve Tangent"), N_("Draw Curve from Tangent"), "cmdDrawCurveTangent", ACCL_DRAWCURVE2 },
+ { curved_line_middle_xpm3, OP_CURVE3, N_("Curve Center"), N_("Draw Curve from Center"), "cmdDrawCurveCenter", ACCL_DRAWCURVE3 },
+ { curved_line_chord_xpm3, OP_CURVE4, N_("Curve Chord"), N_("Draw Curve from Chord"), "cmdDrawCurveChord", ACCL_DRAWCURVE4 },
+ { bezier_line_xpm3, OP_BEZLIN, N_("Bezier Curve"), N_("Draw Bezier"), "cmdDrawBezierCurve", ACCL_DRAWBEZLINE }
+};
static drawData_t dcircleCmds[] = {
- /*{ dcircle1_xpm, OP_CIRCLE1, "Circle Fixed Radius", "Draw Fixed Radius Circle", "cmdDrawCircleFixedRadius", ACCL_DRAWCIRCLE1 },*/
- { circle_line_center_xpm, OP_CIRCLE3, N_("Circle Center"), N_("Draw Circle from Center"), "cmdDrawCircleCenter", ACCL_DRAWCIRCLE2 },
- { circle_line_tangent_xpm, OP_CIRCLE2, N_("Circle Tangent"), N_("Draw Circle from Tangent"), "cmdDrawCircleTangent", ACCL_DRAWCIRCLE3 },
- /*{ dflcrcl1_xpm, OP_FILLCIRCLE1, "Circle Filled Fixed Radius", "Draw Fixed Radius Filled Circle", "cmdDrawFilledCircleFixedRadius", ACCL_DRAWFILLCIRCLE1 },*/
- { circle_filled_center_xpm, OP_FILLCIRCLE3, N_("Circle Filled Center"), N_("Draw Filled Circle from Center"), "cmdDrawFilledCircleCenter", ACCL_DRAWFILLCIRCLE2 },
- { circle_filled_tangent_xpm, OP_FILLCIRCLE2, N_("Circle Filled Tangent"), N_("Draw Filled Circle from Tangent"), "cmdDrawFilledCircleTangent", ACCL_DRAWFILLCIRCLE3 } };
+ /*{ dcircle1_xpm, OP_CIRCLE1, "Circle Fixed Radius", "Draw Fixed Radius Circle", "cmdDrawCircleFixedRadius", ACCL_DRAWCIRCLE1 },*/
+ { circle_line_center_xpm3, OP_CIRCLE3, N_("Circle Center"), N_("Draw Circle from Center"), "cmdDrawCircleCenter", ACCL_DRAWCIRCLE2 },
+ { circle_line_tangent_xpm3, OP_CIRCLE2, N_("Circle Tangent"), N_("Draw Circle from Tangent"), "cmdDrawCircleTangent", ACCL_DRAWCIRCLE3 },
+ /*{ dflcrcl1_xpm, OP_FILLCIRCLE1, "Circle Filled Fixed Radius", "Draw Fixed Radius Filled Circle", "cmdDrawFilledCircleFixedRadius", ACCL_DRAWFILLCIRCLE1 },*/
+ { circle_filled_center_xpm3, OP_FILLCIRCLE3, N_("Circle Filled Center"), N_("Draw Filled Circle from Center"), "cmdDrawFilledCircleCenter", ACCL_DRAWFILLCIRCLE2 },
+ { circle_filled_tangent_xpm3, OP_FILLCIRCLE2, N_("Circle Filled Tangent"), N_("Draw Filled Circle from Tangent"), "cmdDrawFilledCircleTangent", ACCL_DRAWFILLCIRCLE3 }
+};
static drawData_t dshapeCmds[] = {
- { box_xpm, OP_BOX, N_("Box"), N_("Draw Box"), "cmdDrawBox", ACCL_DRAWBOX },
- { filled_box_xpm, OP_FILLBOX, N_("Filled Box"), N_("Draw Filled Box"), "cmdDrawFilledBox", ACCL_DRAWFILLBOX },
- { polygon_xpm, OP_POLY, N_("Polygon"), N_("Draw Polygon"), "cmdDrawPolygon", ACCL_DRAWPOLY },
- { filled_polygon_xpm, OP_FILLPOLY, N_("Filled Polygon"), N_("Draw Filled Polygon"), "cmdDrawFilledPolygon", ACCL_DRAWFILLPOLYGON },
- { polyline_xpm, OP_POLYLINE, N_("PolyLine"), N_("Draw PolyLine"), "cmdDrawPolyline", ACCL_DRAWPOLYLINE },
+ { box_xpm3, OP_BOX, N_("Box"), N_("Draw Box"), "cmdDrawBox", ACCL_DRAWBOX },
+ { filled_box_xpm3, OP_FILLBOX, N_("Filled Box"), N_("Draw Filled Box"), "cmdDrawFilledBox", ACCL_DRAWFILLBOX },
+ { polygon_xpm3, OP_POLY, N_("Polygon"), N_("Draw Polygon"), "cmdDrawPolygon", ACCL_DRAWPOLY },
+ { filled_polygon_xpm3, OP_FILLPOLY, N_("Filled Polygon"), N_("Draw Filled Polygon"), "cmdDrawFilledPolygon", ACCL_DRAWFILLPOLYGON },
+ { polyline_xpm3, OP_POLYLINE, N_("PolyLine"), N_("Draw PolyLine"), "cmdDrawPolyline", ACCL_DRAWPOLYLINE },
};
typedef struct {
- char * helpKey;
- char * menuTitle;
- char * stickyLabel;
- int cnt;
- drawData_t * data;
- long acclKey;
- wIndex_t cmdInx;
- int curr;
- } drawStuff_t;
+ char * helpKey;
+ char * menuTitle;
+ char * stickyLabel;
+ int cnt;
+ drawData_t * data;
+ long acclKey;
+ wIndex_t cmdInx;
+ int curr;
+} drawStuff_t;
static drawStuff_t drawStuff[4];
static drawStuff_t drawStuff[4] = {
- { "cmdDrawLineSetCmd", N_("Straight Objects"), N_("Draw Straight Objects"), 4, dlineCmds },
- { "cmdDrawCurveSetCmd", N_("Curved Lines"), N_("Draw Curved Lines"), 5, dcurveCmds },
- { "cmdDrawCircleSetCmd", N_("Circle Lines"), N_("Draw Circles"), 4, dcircleCmds },
- { "cmdDrawShapeSetCmd", N_("Shapes"), N_("Draw Shapes"), 5, dshapeCmds} };
-
+ { "cmdDrawLineSetCmd", N_("Straight Objects"), N_("Draw Straight Objects"), 4, dlineCmds },
+ { "cmdDrawCurveSetCmd", N_("Curved Lines"), N_("Draw Curved Lines"), 5, dcurveCmds },
+ { "cmdDrawCircleSetCmd", N_("Circle Lines"), N_("Draw Circles"), 4, dcircleCmds },
+ { "cmdDrawShapeSetCmd", N_("Shapes"), N_("Draw Shapes"), 5, dshapeCmds}
+};
+
static void ChangeDraw( long changes )
{
@@ -3093,7 +3252,8 @@ static void ChangeDraw( long changes )
if ( drawBenchChoicePD.control && drawBenchOrientPD.control ) {
choice = wListGetIndex( (wList_p)drawBenchChoicePD.control );
orient = wListGetIndex( (wList_p)drawBenchOrientPD.control );
- BenchLoadLists( (wList_p)drawBenchChoicePD.control, (wList_p)drawBenchOrientPD.control );
+ BenchLoadLists( (wList_p)drawBenchChoicePD.control,
+ (wList_p)drawBenchOrientPD.control );
wListSetIndex( (wList_p)drawBenchChoicePD.control, choice );
wListSetIndex( (wList_p)drawBenchOrientPD.control, orient );
}
@@ -3103,53 +3263,43 @@ static void ChangeDraw( long changes )
static void DrawDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
- if (inx==3) {
- if (drawCmdContext.Op == OP_BEZLIN) {
- if ( (inx == 0 && pg->paramPtr[inx].valueP == &drawCmdContext.line_Width) ||
- (inx == 1 && pg->paramPtr[inx].valueP == &lineColor))
- {
- lineWidth = drawCmdContext.line_Width;
- UpdateParms(lineColor, lineWidth);
- }
- }
- }
if (inx >=6 ) {
if (drawCmdContext.Op == OP_CIRCLE1 ||
- drawCmdContext.Op == OP_FILLCIRCLE1 ||
- drawCmdContext.Op == OP_CIRCLE2 ||
- drawCmdContext.Op == OP_FILLCIRCLE2 ||
- drawCmdContext.Op == OP_CIRCLE3 ||
- drawCmdContext.Op == OP_FILLCIRCLE3) {
+ drawCmdContext.Op == OP_FILLCIRCLE1 ||
+ drawCmdContext.Op == OP_CIRCLE2 ||
+ drawCmdContext.Op == OP_FILLCIRCLE2 ||
+ drawCmdContext.Op == OP_CIRCLE3 ||
+ drawCmdContext.Op == OP_FILLCIRCLE3) {
coOrd pos = zero;
DrawGeomMouse(C_UPDATE,pos,&drawCmdContext);
}
if (drawCmdContext.Op == OP_CURVE1 ||
- drawCmdContext.Op == OP_CURVE2 ||
- drawCmdContext.Op == OP_CURVE3 ||
- drawCmdContext.Op == OP_CURVE4 ) {
+ drawCmdContext.Op == OP_CURVE2 ||
+ drawCmdContext.Op == OP_CURVE3 ||
+ drawCmdContext.Op == OP_CURVE4 ) {
coOrd pos = zero;
DrawGeomMouse(C_UPDATE,pos,&drawCmdContext);
}
if (drawCmdContext.Op == OP_LINE ||
- drawCmdContext.Op == OP_BENCH||
- drawCmdContext.Op == OP_TBLEDGE) {
+ drawCmdContext.Op == OP_BENCH||
+ drawCmdContext.Op == OP_TBLEDGE) {
coOrd pos = zero;
DrawGeomMouse(C_UPDATE,pos,&drawCmdContext);
}
if (drawCmdContext.Op == OP_BOX ||
- drawCmdContext.Op == OP_FILLBOX ){
+ drawCmdContext.Op == OP_FILLBOX ) {
coOrd pos = zero;
DrawGeomMouse(C_UPDATE,pos,&drawCmdContext);
}
if (drawCmdContext.Op == OP_POLY ||
- drawCmdContext.Op == OP_FILLPOLY ||
- drawCmdContext.Op == OP_POLYLINE) {
+ drawCmdContext.Op == OP_FILLPOLY ||
+ drawCmdContext.Op == OP_POLYLINE) {
coOrd pos = zero;
DrawGeomMouse(C_UPDATE,pos,&drawCmdContext);
}
@@ -3161,8 +3311,11 @@ static void DrawDlgUpdate(
//}
}
- if ( inx >= 0 && pg->paramPtr[inx].valueP == &benchChoice )
- BenchUpdateOrientationList( VP2L(wListGetItemContext( (wList_p)drawBenchChoicePD.control, (wIndex_t)*(long*)valueP )), (wList_p)drawBenchOrientPD.control );
+ if ( inx >= 0 && pg->paramPtr[inx].valueP == &benchChoice ) {
+ BenchUpdateOrientationList( VP2L(wListGetItemContext( (wList_p)
+ drawBenchChoicePD.control, (wIndex_t)*(long*)valueP )),
+ (wList_p)drawBenchOrientPD.control );
+ }
}
EXPORT void InitCmdDraw( wMenu_p menu )
@@ -3172,7 +3325,6 @@ EXPORT void InitCmdDraw( wMenu_p menu )
drawData_t * ddp;
wIcon_p icon;
- drawCmdContext.Color = wDrawColorBlack;
lineColor = wDrawColorBlack;
benchColor = wDrawFindColor( wRGB(255,192,0) );
ParamCreateControls( &drawPG, DrawDlgUpdate );
@@ -3185,7 +3337,8 @@ EXPORT void InitCmdDraw( wMenu_p menu )
for ( inx2=0; inx2<dsp->cnt; inx2++ ) {
ddp = &dsp->data[inx2];
icon = wIconCreatePixMap( ddp->xpm[iconSize] );
- AddMenuButton( menu, CmdDraw, ddp->helpKey, _(ddp->cmdName), icon, LEVEL0_50, IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ddp->acclKey, I2VP(ddp->OP) );
+ AddMenuButton( menu, CmdDraw, ddp->helpKey, _(ddp->cmdName), icon, LEVEL0_50,
+ IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ddp->acclKey, I2VP(ddp->OP) );
}
ButtonGroupEnd();
}
@@ -3204,12 +3357,14 @@ BOOL_T ReadTableEdge( char * line )
trkSeg_t seg;
wIndex_t layer;
- if ( !GetArgs( line, paramVersion<3?"dXpYpY":paramVersion<9?"dL000pYpY":"dL000pfpf",
- &index, &layer, &seg.u.l.pos[0], &elev0, &seg.u.l.pos[1], &elev1 ) )
+ if ( !GetArgs( line, paramVersion<3?"dXpYpY":paramVersion<9
+ ?"dL000pYpY":"dL000pfpf",
+ &index, &layer, &seg.u.l.pos[0], &elev0, &seg.u.l.pos[1], &elev1 ) ) {
return FALSE;
+ }
seg.type = SEG_TBLEDGE;
seg.color = wDrawColorBlack;
- seg.width = 0;
+ seg.lineWidth = 0;
trk = MakeDrawFromSeg1( index, zero, 0.0, &seg );
SetTrkLayer(trk, layer);
return TRUE;
@@ -3217,11 +3372,11 @@ BOOL_T ReadTableEdge( char * line )
/**
* Create a new segment for text. The data are stored in a trk structure.
- * Storage for the string is dynamically allocated.
+ * Storage for the string is dynamically allocated.
*
* \param index IN of new element
* \param pos IN coordinates of element
- * \param angle IN orientation
+ * \param angle IN orientation
* \param text IN text itself
* \param textSize IN font size in pts
* \param color IN text color
@@ -3229,19 +3384,19 @@ BOOL_T ReadTableEdge( char * line )
*/
EXPORT track_p NewText(
- wIndex_t index,
- coOrd pos,
- ANGLE_T angle,
- char * text,
- CSIZE_T textSize,
+ wIndex_t index,
+ coOrd pos,
+ ANGLE_T angle,
+ char * text,
+ CSIZE_T textSize,
wDrawColor color,
- BOOL_T boxed)
+ BOOL_T boxed)
{
trkSeg_t tempSeg;
track_p trk;
tempSeg.type = SEG_TEXT;
tempSeg.color = color;
- tempSeg.width = 0;
+ tempSeg.lineWidth = 0;
tempSeg.u.t.pos = pos;
tempSeg.u.t.angle = angle;
tempSeg.u.t.fontP = NULL;
@@ -3261,17 +3416,23 @@ EXPORT BOOL_T ReadText( char * line )
wIndex_t layer;
track_p trk;
ANGLE_T angle;
- wDrawColor color = wDrawColorBlack;
- if ( paramVersion<3 ) {
- if (!GetArgs( line, "XXpYql", &index, &layer, &pos, &angle, &text, &textSize ))
- return FALSE;
- } else if (paramVersion<9 ) {
- if (!GetArgs(line, "dL000pYql", &index, &layer, &pos, &angle, &text, &textSize))
- return FALSE;
- } else {
- if (!GetArgs(line, "dLl00pfql", &index, &layer, &color, &pos, &angle, &text, &textSize ))
- return FALSE;
- }
+ wDrawColor color = wDrawColorBlack;
+ if ( paramVersion<3 ) {
+ if (!GetArgs( line, "XXpYql", &index, &layer, &pos, &angle, &text,
+ &textSize )) {
+ return FALSE;
+ }
+ } else if (paramVersion<9 ) {
+ if (!GetArgs(line, "dL000pYql", &index, &layer, &pos, &angle, &text,
+ &textSize)) {
+ return FALSE;
+ }
+ } else {
+ if (!GetArgs(line, "dLl00pfql", &index, &layer, &color, &pos, &angle, &text,
+ &textSize )) {
+ return FALSE;
+ }
+ }
trk = NewText( index, pos, angle, text, textSize, color, FALSE );
SetTrkLayer( trk, layer );
@@ -3301,17 +3462,20 @@ void MenuEnter( void * keyVP )
int action;
action = C_TEXT;
action |= key<<8;
- if (drawModCmdContext.rotate_state)
+ if (drawModCmdContext.rotate_state) {
DrawGeomOriginMove(action,zero,&drawModCmdContext);
- else
+ } else {
DrawGeomModify(action,zero,&drawModCmdContext);
+ }
}
void MenuLine( void * keyVP )
{
int key = (int)VP2L(keyVP);
- struct extraDataDraw_t * xx = GET_EXTRA_DATA(drawModCmdContext.trk, T_DRAW, extraDataDraw_t);
- if ( drawModCmdContext.type==SEG_STRLIN || drawModCmdContext.type==SEG_CRVLIN || drawModCmdContext.type==SEG_POLY ) {
+ struct extraDataDraw_t * xx = GET_EXTRA_DATA(drawModCmdContext.trk, T_DRAW,
+ extraDataDraw_t);
+ if ( drawModCmdContext.type==SEG_STRLIN || drawModCmdContext.type==SEG_CRVLIN
+ || drawModCmdContext.type==SEG_POLY ) {
switch(key) {
case '0':
xx->lineType = DRAWLINESOLID;
@@ -3339,10 +3503,12 @@ void MenuLine( void * keyVP )
}
}
-EXPORT void SetLineType( track_p trk, int width ) {
+EXPORT void SetLineType( track_p trk, int width )
+{
if (QueryTrack(trk, Q_IS_DRAW)) {
struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
- if ( xx->segs[0].type==SEG_STRLIN || xx->segs[0].type==SEG_CRVLIN || xx->segs[0].type==SEG_POLY) {
+ if ( xx->segs[0].type==SEG_STRLIN || xx->segs[0].type==SEG_CRVLIN
+ || xx->segs[0].type==SEG_POLY) {
switch(width) {
case 0:
xx->lineType = DRAWLINESOLID;
@@ -3377,29 +3543,49 @@ EXPORT void InitTrkDraw( void )
AddParam( "TEXT", ReadText );
drawModDelMI = MenuRegister( "Modify Draw Edit Menu" );
- drawModClose = wMenuPushCreate( drawModDelMI, "", _("Close Polygon - 'g'"), 0, MenuEnter, I2VP( 'g'));
- drawModOpen = wMenuPushCreate( drawModDelMI, "", _("Make PolyLine - 'l'"), 0, MenuEnter, I2VP( 'l'));
- drawModFill = wMenuPushCreate( drawModDelMI, "", _("Fill Polygon - 'f'"), 0, MenuEnter, I2VP( 'f'));
- drawModEmpty = wMenuPushCreate( drawModDelMI, "", _("Empty Polygon - 'u'"), 0, MenuEnter, I2VP( 'u'));
+ drawModClose = wMenuPushCreate( drawModDelMI, "", _("Close Polygon - 'g'"), 0,
+ MenuEnter, I2VP( 'g'));
+ drawModOpen = wMenuPushCreate( drawModDelMI, "", _("Make PolyLine - 'l'"), 0,
+ MenuEnter, I2VP( 'l'));
+ drawModFill = wMenuPushCreate( drawModDelMI, "", _("Fill Polygon - 'f'"), 0,
+ MenuEnter, I2VP( 'f'));
+ drawModEmpty = wMenuPushCreate( drawModDelMI, "", _("Empty Polygon - 'u'"), 0,
+ MenuEnter, I2VP( 'u'));
wMenuSeparatorCreate( drawModDelMI );
- drawModPointsMode = wMenuPushCreate( drawModDelMI, "", _("Points Mode - 'p'"), 0, MenuMode, I2VP( 0 ));
- drawModDel = wMenuPushCreate( drawModDelMI, "", _("Delete Selected Point - 'Del'"), 0, MenuEnter, I2VP( 127 ));
- drawModVertex = wMenuPushCreate( drawModDelMI, "", _("Vertex Point - 'v'"), 0, MenuEnter, I2VP( 'v' ));
- drawModRound = wMenuPushCreate( drawModDelMI, "", _("Round Corner - 'r'"), 0, MenuEnter, I2VP( 'r' ));
- drawModSmooth = wMenuPushCreate( drawModDelMI, "", _("Smooth Corner - 's'"), 0, MenuEnter, I2VP( 's' ));
+ drawModPointsMode = wMenuPushCreate( drawModDelMI, "", _("Points Mode - 'p'"),
+ 0, MenuMode, I2VP( 0 ));
+ drawModDel = wMenuPushCreate( drawModDelMI, "",
+ _("Delete Selected Point - 'Del'"), 0, MenuEnter, I2VP( 127 ));
+ drawModVertex = wMenuPushCreate( drawModDelMI, "", _("Vertex Point - 'v'"), 0,
+ MenuEnter, I2VP( 'v' ));
+ drawModRound = wMenuPushCreate( drawModDelMI, "", _("Round Corner - 'r'"), 0,
+ MenuEnter, I2VP( 'r' ));
+ drawModSmooth = wMenuPushCreate( drawModDelMI, "", _("Smooth Corner - 's'"), 0,
+ MenuEnter, I2VP( 's' ));
wMenuSeparatorCreate( drawModDelMI );
drawModLinMI = wMenuMenuCreate( drawModDelMI, "", _("LineType...") );
- drawModSolid = wMenuPushCreate( drawModLinMI, "", _("Solid Line"), 0, MenuLine, I2VP( '0' ));
- drawModDot = wMenuPushCreate( drawModLinMI, "", _("Dashed Line"), 0, MenuLine, I2VP( '1' ));
- drawModDash = wMenuPushCreate( drawModLinMI, "", _("Dotted Line"), 0, MenuLine, I2VP( '2' ));
- drawModDashDot = wMenuPushCreate( drawModLinMI, "", _("Dash-Dot Line"), 0, MenuLine, I2VP( '3' ));
- drawModDashDotDot = wMenuPushCreate( drawModLinMI, "", _("Dash-Dot-Dot Line"), 0, MenuLine, I2VP( '4' ));
- drawModCenterDot = wMenuPushCreate( drawModLinMI, "", _("Center-Dot Line"), 0, MenuLine, I2VP( '5' ));
- drawModPhantom = wMenuPushCreate( drawModLinMI, "", _("Phantom-Dot Line"), 0, MenuLine, I2VP( '6' ));
+ drawModSolid = wMenuPushCreate( drawModLinMI, "", _("Solid Line"), 0, MenuLine,
+ I2VP( '0' ));
+ drawModDot = wMenuPushCreate( drawModLinMI, "", _("Dashed Line"), 0, MenuLine,
+ I2VP( '1' ));
+ drawModDash = wMenuPushCreate( drawModLinMI, "", _("Dotted Line"), 0, MenuLine,
+ I2VP( '2' ));
+ drawModDashDot = wMenuPushCreate( drawModLinMI, "", _("Dash-Dot Line"), 0,
+ MenuLine, I2VP( '3' ));
+ drawModDashDotDot = wMenuPushCreate( drawModLinMI, "", _("Dash-Dot-Dot Line"),
+ 0, MenuLine, I2VP( '4' ));
+ drawModCenterDot = wMenuPushCreate( drawModLinMI, "", _("Center-Dot Line"), 0,
+ MenuLine, I2VP( '5' ));
+ drawModPhantom = wMenuPushCreate( drawModLinMI, "", _("Phantom-Dot Line"), 0,
+ MenuLine, I2VP( '6' ));
wMenuSeparatorCreate( drawModDelMI );
- drawModriginMode = wMenuPushCreate( drawModDelMI, "", _("Origin Mode - 'o'"), 0, MenuMode, I2VP( 1 ));
- drawModOrigin = wMenuPushCreate( drawModDelMI, "", _("Reset Origin - '0'"), 0, MenuEnter, I2VP( '0' ));
- drawModLast = wMenuPushCreate( drawModDelMI, "", _("Origin to Selected - 'l'"), 0, MenuEnter, I2VP( 'l' ));
- drawModCenter = wMenuPushCreate( drawModDelMI, "", _("Origin to Middle - 'm'"), 0, MenuEnter, I2VP( 'm'));
+ drawModriginMode = wMenuPushCreate( drawModDelMI, "", _("Origin Mode - 'o'"), 0,
+ MenuMode, I2VP( 1 ));
+ drawModOrigin = wMenuPushCreate( drawModDelMI, "", _("Reset Origin - '0'"), 0,
+ MenuEnter, I2VP( '0' ));
+ drawModLast = wMenuPushCreate( drawModDelMI, "", _("Origin to Selected - 'l'"),
+ 0, MenuEnter, I2VP( 'l' ));
+ drawModCenter = wMenuPushCreate( drawModDelMI, "", _("Origin to Middle - 'm'"),
+ 0, MenuEnter, I2VP( 'm'));
}
diff --git a/app/bin/celev.c b/app/bin/celev.c
index b80874f..e55a1fe 100644
--- a/app/bin/celev.c
+++ b/app/bin/celev.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 "cselect.h"
@@ -40,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,37 +54,40 @@ static paramData_t elevationPLs[] = {
#define I_GRADE (3)
{ PD_MESSAGE, NULL, "grade", 0, I2VP(80) },
#define I_STATION (4)
- { PD_STRING, elevStationV, "station", PDO_DLGUNDERCMDBUTT|PDO_STRINGLIMITLENGTH, I2VP(200), NULL, 0, 0, sizeof(elevStationV)} };
+ { 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);
@@ -94,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);
@@ -108,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,
- wWinPix_t colX,
- wWinPix_t * x,
- wWinPix_t * y )
+ paramData_t * pd,
+ int inx,
+ wWinPix_t colX,
+ wWinPix_t * x,
+ wWinPix_t * y )
{
static wWinPix_t h = 0;
switch ( inx ) {
case I_HEIGHT:
- h = wControlGetHeight( elevationPLs[I_MODE].control )/(COUNT( elevModeLabels )-1);
+ h = wControlGetHeight( elevationPLs[I_MODE].control )/(COUNT(
+ elevModeLabels )-1);
#ifndef WINDOWS
h += 3;
#endif
@@ -153,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;
}
@@ -168,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 ) {
@@ -190,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;
}
@@ -261,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 );
@@ -291,7 +310,8 @@ static void ElevSelect( track_p trk, EPINX_T ep )
elevModeV = radio;
ParamLoadControl( &elevationPG, I_MODE );
gradeOk = ComputeElev( trk, ep, FALSE, &elevX, &grade, TRUE );
- sprintf( message, "%0.2f%s", round(PutDim( elevX )*100.0)/100.0, (units==UNITS_METRIC?"cm":"\"") );
+ 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) );
@@ -299,17 +319,20 @@ static void ElevSelect( track_p trk, EPINX_T ep )
if ( EndPtIsDefinedElev(trk,ep) ) {
elev = GetElevation(trk);
dist = GetTrkLength(trk,ep,-1);
- if (dist>0.1)
+ if (dist>0.1) {
sprintf( message, "%0.1f%%", fabs(round(((elev-elevX)/dist)*1000.0))/10.0 );
- else
+ } 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
+ 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") );
@@ -323,11 +346,13 @@ static void ElevSelect( track_p trk, EPINX_T ep )
wShow(elevW);
}
-static BOOL_T GetPointElev(track_p trk, coOrd pos, DIST_T * height) {
+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 )
+ if ( GetTrkLength( trk, 0, 1 ) < 0.1 ) {
return FALSE;
+ }
dist0 = FindDistance(pos,GetTrkEndPos(trk,0));
dist1 = FindDistance(pos,GetTrkEndPos(trk,1));
ComputeElev( trk, 0, FALSE, &elev0, NULL, FALSE );
@@ -338,8 +363,8 @@ static BOOL_T GetPointElev(track_p trk, coOrd pos, DIST_T * height) {
}
*height = ((elev1-elev0)*(dist0/(dist0+dist1)))+elev0;
return TRUE;
- } else if (GetTrkEndPtCnt(trk) == 1 &&
- ComputeElev( trk, 0, FALSE, &elev0, NULL, FALSE ) ) {
+ } else if (GetTrkEndPtCnt(trk) == 1 &&
+ ComputeElev( trk, 0, FALSE, &elev0, NULL, FALSE ) ) {
*height = elev0;
return TRUE;
}
@@ -351,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;
@@ -368,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, +Alt to show elevation") );
+ InfoMessage(
+ _("Click on end, +Shift to split, +Ctrl to move description, +Alt to show elevation") );
elevTrk = NULL;
elevUndo = FALSE;
CmdMoveDescription( action, pos );
@@ -381,10 +409,11 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos )
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)) {
@@ -398,13 +427,18 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos )
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 (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)));
+ 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;
@@ -414,21 +448,23 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos )
}
}
if ((ep0 = PickEndPoint( p0, trk0 )) != -1) {
- 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 if ((IsClose(FindDistance(GetTrkEndPos(trk0,ep0),p0))
- || (FindDistance(GetTrkEndPos(trk0,ep0),p0)<minLength))) {
+ } 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 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") );
+ } 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:
@@ -440,7 +476,7 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos )
elevTrk = NULL;
return C_CONTINUE;
}
- /*no break*/
+ /*no break*/
case C_LCLICK:
;
p0= pos;
@@ -452,16 +488,18 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos )
ep0 = PickEndPoint( p0, trk0 );
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
+ (FindDistance(GetTrkEndPos(trk0,ep0),
+ p0)<minLength)) { //Snap if close visually or track
InfoMessage( _("Point selected!") );
ElevSelect( trk0, ep0 );
}
@@ -481,9 +519,10 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos )
wSetCursor(mainD.d,defaultCursor);
DoElevHilight( NULL );
HilightSelectedEndPt( TRUE, elevTrk, elevEp );
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack,
+ 0 );
if (anchors_da.cnt) {
- DrawSegs( &tempD, zero, 0.0, &anchors(0), anchors_da.cnt, trackGauge, wDrawColorBlack );
- wSetCursor(mainD.d,wCursorNone);
+ wSetCursor(mainD.d,wCursorNone);
}
CmdMoveDescription( action, pos );
return C_CONTINUE;
@@ -494,11 +533,13 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos )
-#include "bitmaps/elevation.xpm"
+#include "bitmaps/elevation.xpm3"
EXPORT void InitCmdElevation( wMenu_p menu )
{
ParamRegister( &elevationPG );
- AddMenuButton( menu, CmdElevation, "cmdElevation", _("Elevation"), wIconCreatePixMap(elevation_xpm[iconSize]), 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 );
}
diff --git a/app/bin/cgroup.c b/app/bin/cgroup.c
index d30481f..6940ea0 100644
--- a/app/bin/cgroup.c
+++ b/app/bin/cgroup.c
@@ -18,7 +18,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 "cselect.h"
@@ -32,8 +32,18 @@
#include "param.h"
#include "shrtpath.h"
#include "track.h"
+#include "trkendpt.h"
#include "common-ui.h"
+/*
+ * Note: Bumper support
+ * Currently Ungroup will convert 1 ended Turnouts (Bumpers) to simple 2-ended Straight
+ * Group will remove any Bumpers from the Selected track list
+ * See TODO-BUMPER
+ *
+ * The remaining issue is that the ShortestPath logic aborts if it gets to the end of a
+ * path elem list and can't find the corresponing EP.
+ */
/*****************************************************************************
*
@@ -52,9 +62,6 @@ static char groupPartno[STR_SIZE];
static char groupTitle[STR_LONG_SIZE];
static int groupCompoundCount = 0;
-extern TRKTYP_T T_BZRTRK;
-extern TRKTYP_T T_BZRLIN;
-extern TRKTYP_T T_CORNU;
/*****************************************************************************
*
@@ -63,79 +70,85 @@ extern TRKTYP_T T_CORNU;
*/
typedef struct {
- int segInx;
- EPINX_T segEP;
- int inx;
- track_p trk;
- } mergePt_t;
+ int segInx;
+ EPINX_T segEP;
+ int inx;
+ track_p trk;
+} mergePt_t;
static dynArr_t mergePt_da;
#define mergePt(N) DYNARR_N( mergePt_t, mergePt_da, N )
static void AddMergePt(
- int segInx,
- EPINX_T segEP )
+ int segInx,
+ EPINX_T segEP )
{
int inx;
mergePt_t * mp;
for ( inx=0; inx<mergePt_da.cnt; inx++ ) {
mp = &mergePt(inx);
if ( mp->segInx == segInx &&
- mp->segEP == segEP )
+ mp->segEP == segEP ) {
return;
+ }
}
DYNARR_APPEND( mergePt_t, mergePt_da, 10 );
mp = &mergePt(mergePt_da.cnt-1);
mp->segInx = segInx;
mp->segEP = segEP;
mp->inx = mergePt_da.cnt-1;
-LOG( log_group, 2, ( " MergePt: %d.%d\n", segInx, segEP ) );
+ LOG( log_group, 2, ( " MergePt: %d.%d\n", segInx, segEP ) );
}
static EPINX_T FindEP(
- EPINX_T epCnt,
- trkEndPt_p endPts,
- coOrd pos )
+ EPINX_T epCnt,
+ trkEndPt_p endPts,
+ coOrd pos )
{
DIST_T dist;
EPINX_T ep;
for ( ep=0; ep<epCnt; ep++ ) {
- dist = FindDistance( pos, endPts[ep].pos );
- if ( dist < connectDistance )
+ dist = FindDistance( pos, GetEndPtPos( EndPtIndex( endPts, ep ) ) );
+ if ( dist < connectDistance ) {
return ep;
+ }
}
return -1;
}
static void SegOnMP(
- int segInx,
- int mpInx,
- int segCnt,
- int * map )
+ int segInx,
+ int mpInx,
+ int segCnt,
+ int * map )
{
int inx;
mergePt_t * mp;
if ( map[segInx] < 0 ) {
-LOG( log_group, 2, ( " S%d: on MP%d\n", segInx, mpInx ) );
+ LOG( log_group, 2, ( " S%d: on MP%d\n", segInx, mpInx ) );
map[segInx] = mpInx;
return;
}
-LOG( log_group, 2, ( " S%d: remapping MP%d to MP%d\n", segInx, mpInx, map[segInx] ) );
+ LOG( log_group, 2, ( " S%d: remapping MP%d to MP%d\n", segInx, mpInx,
+ map[segInx] ) );
for ( inx=0; inx<segCnt; inx++ )
- if ( map[inx] == mpInx )
+ if ( map[inx] == mpInx ) {
map[inx] = map[segInx];
+ }
for ( inx=0; inx<mergePt_da.cnt; inx++ ) {
- if ( inx == map[segInx] )
+ if ( inx == map[segInx] ) {
continue;
+ }
mp = &mergePt(inx);
- if ( mp->inx == mpInx )
+ if ( mp->inx == mpInx ) {
mp->inx = map[segInx];
+ }
}
}
static void GroupCopyTitle(
- char * title )
+ char * title )
{
char *mP, *nP, *pP;
int mL, nL, pL;
@@ -154,22 +167,31 @@ static void GroupCopyTitle(
groupPartno[pL] = '\0';
} else {
if ( mL != (int)strlen( groupManuf ) ||
- strncmp( groupManuf, mP, mL ) != 0 )
+ strncmp( groupManuf, mP, mL ) != 0 ) {
groupManuf[0] = '\0';
+ }
if ( nL != (int)strlen( groupDesc ) ||
- strncmp( groupDesc, nP, nL ) != 0 )
+ strncmp( groupDesc, nP, nL ) != 0 ) {
groupDesc[0] = '\0';
+ }
if ( pL != (int)strlen( groupPartno ) ||
- strncmp( groupPartno, pP, pL ) != 0 )
+ strncmp( groupPartno, pP, pL ) != 0 ) {
groupPartno[0] = '\0';
+ }
}
}
+// TODO-BUMPER - handle paths which don't end on an EP
+// Set GROUP_BUMPER_REFCOUT
+// to 1 to convert Bumper tracks to Straight tracks with 2 EP
+// to 2 to create 1 EP Turnout tracks
+#define GROUP_BUMPER_REFCOUNT (1)
EXPORT void UngroupCompound(
- track_p trk )
+ track_p trk )
{
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
struct extraDataCompound_t *xx1;
trkSeg_p sp;
track_p trk0, trk1;
@@ -188,7 +210,7 @@ EXPORT void UngroupCompound(
typedef struct {
track_p trk;
EPINX_T ep[2];
- } segTrack_t;
+ } segTrack_t;
#define segTrack(N) DYNARR_N( segTrack_t, segTrack_da, N )
static dynArr_t segTrack_da;
segTrack_t * stp, * stp1;
@@ -218,55 +240,61 @@ EXPORT void UngroupCompound(
}
#endif
-LOG( log_group, 1, ( "Ungroup( T%d )\n", GetTrkIndex(trk) ) );
+ LOG( log_group, 1, ( "Ungroup( T%d )\n", GetTrkIndex(trk) ) );
epCnt = GetTrkEndPtCnt(trk);
segCnt = xx->segCnt;
int trackCount = 0;
for ( sp=xx->segs; sp<&xx->segs[xx->segCnt]; sp++ ) {
- if (IsSegTrack(sp)) trackCount++;
+ if (IsSegTrack(sp)) { trackCount++; }
}
- //ASSERT( (epCnt==0) == (segCnt==0) );
- ASSERT( (epCnt==0) == (trackCount==0) );
+ //CHECK( (epCnt==0) == (segCnt==0) );
+ CHECK( (epCnt==0) == (trackCount==0) );
turnoutChanged = FALSE;
if ( epCnt > 0 ) {
turnoutChanged = TRUE;
/* 1: collect EPs
*/
- DYNARR_SET( trkEndPt_t, tempEndPts_da, epCnt );
+ TempEndPtsSet( epCnt );
DYNARR_SET( segTrack_t, segTrack_da, segCnt );
- memset( segTrack_da.ptr, 0, segCnt * sizeof segTrack(0) );
+ memset( &segTrack(0), 0, segCnt * sizeof segTrack(0) );
for ( ep=0; ep<epCnt; ep++ ) {
- epp = &tempEndPts(ep);
- epp->pos = GetTrkEndPos( trk, ep );
- epp->angle = GetTrkEndAngle( trk, ep );
- Rotate( &epp->pos, xx->orig, -xx->angle );
- epp->pos.x -= xx->orig.x;
- epp->pos.y -= xx->orig.y;
- epp->track = GetTrkEndTrk( trk, ep );
- if ( epp->track )
- epp->index = GetEndPtConnectedToMe( epp->track, trk );
- else
- epp->index = -1;
-LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, epp->pos.y, epp->angle, epp->track?GetTrkIndex(epp->track):-1, epp->track?epp->index:-1 ) );
+ epp = TempEndPt(ep);
+ coOrd pos = GetTrkEndPos( trk, ep );
+ Rotate( &pos, xx->orig, -xx->angle );
+ pos.x -= xx->orig.x;
+ pos.y -= xx->orig.y;
+ ANGLE_T angle = GetTrkEndAngle( trk, ep );
+ track_p trk1 = GetTrkEndTrk( trk, ep );
+ EPINX_T ep1;
+ ep1 = trk1 ? GetEndPtConnectedToMe( trk1, trk ) : -1 ;
+ SetEndPt( epp, pos, angle );
+ SetEndPtTrack( epp, trk1 );
+ // Remember what EP on trk1 was connecting to me
+ SetEndPtEndPt( epp, ep1 );
+ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, pos.x, pos.y,
+ angle, trk1?GetTrkIndex(trk1):-1, ep1 ) );
}
/* 3: Count number of times each segment is referenced
* If the refcount differs between adjacent segments
* add segment with smaller count to mergePts
* Treat EndPts as a phantom segment with inx above segCnt
- * Path ends that don't map onto a real EndPt (bumpers) get a fake EP
+ * Path ends that don't map onto a real EndPt (bumpers) get a virtual EP
*/
DYNARR_SET( int, refCount_da, segCnt+epCnt );
- memset( refCount_da.ptr, 0, refCount_da.cnt * sizeof *(int*)0 );
+ memset( &refCount(0), 0, refCount_da.cnt * sizeof *(int*)0 );
cp = (char *)GetPaths( trk );
while ( cp[0] ) {
cp += strlen(cp)+1;
while ( cp[0] ) {
+ // Process 1st seg in sub-path
GetSegInxEP( cp[0], &segInx, &segEP );
+ // Find EP its connected to
pos = GetSegEndPt( xx->segs+segInx, segEP, FALSE, NULL );
- segInx1 = FindEP( tempEndPts_da.cnt, &tempEndPts(0), pos );
+ segInx1 = FindEP( TempEndPtsCount(), TempEndPt(0), pos );
if ( segInx1 >= 0 ) {
+ // Found existing EP, incr it's refCount
segInx1 += segCnt;
if ( segInx1 >= refCount_da.cnt ) {
InputError( "Invalid segInx1 %d", TRUE, segInx1 );
@@ -274,44 +302,52 @@ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, ep
}
refCount(segInx1)++;
} else {
- DYNARR_APPEND( trkEndPt_t, tempEndPts_da, 10 );
+ // No existing EP: must be a bumper, add virtual EP
+ epp = TempEndPtsAppend();
DYNARR_APPEND( int, refCount_da, 10 );
- epp = &tempEndPts(tempEndPts_da.cnt-1);
- epp->pos = pos;
- epp->angle = 0;
+ SetEndPt( epp, pos, 0 );
segInx1 = refCount_da.cnt-1;
- refCount(segInx1) = 2;
+ refCount(segInx1) = GROUP_BUMPER_REFCOUNT;
}
segEP1 = 0;
while ( cp[0] ) {
+ // Process remaining segs
GetSegInxEP( cp[0], &segInx, &segEP );
if ( segInx1 >= refCount_da.cnt ) {
InputError( "Invalid segInx1 %d", TRUE, segInx1 );
return;
}
+ // Incr it's refCoount
refCount(segInx)++;
- if ( refCount(segInx) > refCount(segInx1) )
+ // Is my refCount > then previous seg/EP?
+ if ( refCount(segInx) > refCount(segInx1) ) {
AddMergePt( segInx, segEP );
- if ( refCount(segInx1) > refCount(segInx) )
+ }
+ // Is previous seg/EP refCount > my refCount
+ if ( refCount(segInx1) > refCount(segInx) ) {
AddMergePt( segInx1, segEP1 );
+ }
+ // Advance to next seg
segInx1 = segInx;
segEP1 = 1-segEP;
cp++;
}
+ // Process last seg in sub-path
GetSegInxEP( cp[-1], &segInx, &segEP );
+ // Find EP its connected to
pos = GetSegEndPt( xx->segs+segInx, 1-segEP, FALSE, NULL );
- segInx = FindEP( tempEndPts_da.cnt, &tempEndPts(0), pos );
+ segInx = FindEP( TempEndPtsCount(), TempEndPt(0), pos );
if ( segInx >= 0 ) {
+ // Found EP, incr refCount
segInx += segCnt;
refCount(segInx)++;
} else {
- DYNARR_APPEND( trkEndPt_t, tempEndPts_da, 10 );
+ // No existing EP: must be a bumper, add virtual EP
+ epp = TempEndPtsAppend();
DYNARR_APPEND( int, refCount_da, 10 );
- epp = &tempEndPts(tempEndPts_da.cnt-1);
- epp->pos = pos;
- epp->angle = 0;
+ SetEndPt( epp, pos, 0 );
segInx = refCount_da.cnt-1;
- refCount(segInx) = 2;
+ refCount(segInx) = GROUP_BUMPER_REFCOUNT;
}
if ( refCount(segInx) > refCount(segInx1) ) {
AddMergePt( segInx, 0 );
@@ -320,14 +356,13 @@ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, ep
}
cp++;
}
- epCnt1 = tempEndPts_da.cnt;
-
+
/* 4: For each path element, map segment to a mergePt if the adjacent segment
* and EP is a mergePt
* If segment is already mapped then merge mergePts
*/
DYNARR_SET( int, refCount_da, segCnt );
- memset( refCount_da.ptr, -1, segCnt * sizeof *(int*)0 );
+ memset( &refCount(0), -1, segCnt * sizeof *(int*)0 );
cp = (char *)GetPaths( trk );
while ( cp[0] ) {
cp += strlen(cp)+1;
@@ -335,7 +370,7 @@ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, ep
GetSegInxEP( cp[0], &segInx, &segEP );
pos = GetSegEndPt( xx->segs+segInx, segEP, FALSE, NULL );
/*REORIGIN1( pos, xx->angle, xx->orig );*/
- segInx1 = FindEP( tempEndPts_da.cnt, &tempEndPts(0), pos );
+ segInx1 = FindEP( TempEndPtsCount(), TempEndPt(0), pos );
if ( segInx1 >= 0 ) {
segInx1 += segCnt;
}
@@ -360,7 +395,7 @@ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, ep
GetSegInxEP( cp[-1], &segInx, &segEP );
pos = GetSegEndPt( xx->segs+segInx, 1-segEP, FALSE, NULL );
/*REORIGIN1( pos, xx->angle, xx->orig );*/
- segInx = FindEP( tempEndPts_da.cnt, &tempEndPts(0), pos );
+ segInx = FindEP( TempEndPtsCount(), TempEndPt(0), pos );
if ( segInx >= 0 ) {
segInx += segCnt;
for ( inx=0; inx<mergePt_da.cnt; inx++ ) {
@@ -379,8 +414,9 @@ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, ep
*/
if ( mergePt_da.cnt > 0 ) {
for ( segInx=0; segInx<segCnt; segInx++ )
- if ( refCount(segInx) != mergePt(0).inx )
+ if ( refCount(segInx) != mergePt(0).inx ) {
break;
+ }
if ( segInx == segCnt ) {
/* all segments on same turnout, nothing we can do here */
turnoutChanged = FALSE;
@@ -397,11 +433,13 @@ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, ep
wDrawDelayUpdate( mainD.d, TRUE );
if ( turnoutChanged ) {
for ( ep=0; ep<epCnt; ep++ ) {
- epp = &tempEndPts(ep);
- if ( epp->track ) {
- DrawEndPt( &mainD, epp->track, epp->index, wDrawColorWhite );
+ epp = TempEndPt(ep);
+ track_p trk1 = GetEndPtTrack(epp);
+ if ( trk1 ) {
+ EPINX_T ep1 = GetEndPtEndPt(epp);
+ DrawEndPt( &mainD, trk1, ep1, wDrawColorWhite );
DrawEndPt( &mainD, trk, ep, wDrawColorWhite );
- DisconnectTracks( trk, ep, epp->track, epp->index );
+ DisconnectTracks( trk, ep, trk1, ep1 );
}
}
}
@@ -432,11 +470,13 @@ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, ep
*/
for ( inx=0; inx<mergePt_da.cnt; inx++ ) {
mp = &mergePt(inx);
- if ( mp->inx != inx )
+ if ( mp->inx != inx ) {
continue;
+ }
DYNARR_RESET( trkSeg_t, tempSegs_da );
- DYNARR_SET( trkEndPt_t, tempEndPts_da, epCnt1 );
DYNARR_RESET( char, pathPtr_da );
+ // Mark start of virtual EPs for this MergePt
+ epCnt1 = TempEndPtsCount();
for ( segInx=0; segInx<segCnt; segInx++ ) {
if ( refCount(segInx) == inx ) {
DYNARR_APPEND( trkSeg_t, tempSegs_da, 10 );
@@ -451,22 +491,23 @@ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, ep
pathPtr(off+2) = '\0';
for ( ep=0; ep<2; ep++ ) {
pos = GetSegEndPt( xx->segs+segInx, ep, FALSE, &angle );
- segEP = FindEP( epCnt1, &tempEndPts(0), pos );
+ segEP = FindEP( epCnt1, TempEndPt(0), pos );
if ( segEP >= 0 && segEP >= epCnt && segEP < epCnt1 ) {
/* was a bumper: no EP */
eps[ep] = -1;
+ // TODO-BUMPER To support Bumpers remove this continue
continue;
}
REORIGIN1( pos, xx->angle, xx->orig );
angle = NormalizeAngle( xx->angle+angle );
- eps[ep] = FindEP( tempEndPts_da.cnt-epCnt1, &tempEndPts(epCnt1), pos );
+ eps[ep] = -1;
+ if ( TempEndPtsCount()-epCnt1 > 0 ) {
+ eps[ep] = FindEP( TempEndPtsCount()-epCnt1, TempEndPt(epCnt1), pos );
+ }
if ( eps[ep] < 0 ) {
- DYNARR_APPEND( trkEndPt_t, tempEndPts_da, 10 );
- eps[ep] = tempEndPts_da.cnt-1-epCnt1;
- epp = &tempEndPts(tempEndPts_da.cnt-1);
- memset( epp, 0, sizeof *epp );
- epp->pos = pos;
- epp->angle = angle;
+ epp = TempEndPtsAppend();
+ eps[ep] = TempEndPtsCount()-1-epCnt1;
+ SetEndPt( epp, pos, angle );
}
}
segTrack(segInx).ep[0] = eps[0];
@@ -475,10 +516,7 @@ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, ep
}
DYNARR_SET( char, pathPtr_da, pathPtr_da.cnt+1 );
pathPtr(pathPtr_da.cnt-1) = '\0';
- if ( tempSegs_da.cnt == 0 ) {
- AbortProg( "tempSegs_da.cnt == 0" );
- continue;
- }
+ CHECK ( tempSegs_da.cnt != 0 );
GetSegBounds( zero, 0, tempSegs_da.cnt, &tempSegs(0), &orig, &size );
orig.x = -orig.x;
orig.y = -orig.y;
@@ -486,7 +524,9 @@ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, ep
Rotate( &orig, zero, xx->angle );
orig.x = xx->orig.x - orig.x;
orig.y = xx->orig.y - orig.y;
- trk1 = NewCompound( T_TURNOUT, 0, orig, xx->angle, xx->title, tempEndPts_da.cnt-epCnt1, &tempEndPts(epCnt1), (PATHPTR_T)&pathPtr(0), tempSegs_da.cnt, &tempSegs(0) );
+ trk1 = NewCompound( T_TURNOUT, 0, orig, xx->angle, xx->title,
+ TempEndPtsCount()-epCnt1, TempEndPt(epCnt1), (PATHPTR_T)&pathPtr(0),
+ tempSegs_da.cnt, &tempSegs(0) );
xx1 = GET_EXTRA_DATA(trk1, T_TURNOUT, extraDataCompound_t);
xx1->ungrouped = TRUE;
xx1->pathOverRide = xx->pathOverRide;
@@ -506,9 +546,10 @@ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, ep
/* 8: for remaining segments, create simple tracks
*/
for ( segInx=0; segInx<segCnt; segInx++ ) {
- if ( refCount(segInx) >= 0 ) continue;
- if ( ! IsSegTrack( xx->segs+segInx ) )
+ if ( refCount(segInx) >= 0 ) { continue; }
+ if ( ! IsSegTrack( xx->segs+segInx ) ) {
continue;
+ }
SegProc( SEGPROC_NEWTRACK, xx->segs+segInx, &segProcData );
SetTrkScale( segProcData.newTrack.trk, GetTrkScale(trk) );
SetTrkBits( segProcData.newTrack.trk, TB_SELECTED );
@@ -528,13 +569,16 @@ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, ep
/* joint EP to this segment */
GetSegInxEP( cp[0], &segInx, &segEP );
stp = &segTrack(segInx);
- ep = FindEP( epCnt, &tempEndPts(0), GetSegEndPt( xx->segs+segInx, segEP, FALSE, NULL ) );
+ ep = FindEP( epCnt, TempEndPt(0), GetSegEndPt( xx->segs+segInx, segEP, FALSE,
+ NULL ) );
if ( ep >= 0 ) {
- epp = &tempEndPts(ep);
- if ( epp->track ) {
- ConnectTracks( stp->trk, stp->ep[segEP], epp->track, epp->index );
- DrawEndPt( &mainD, epp->track, epp->index, GetTrkColor(epp->track,&mainD) );
- epp->track = NULL;
+ epp = TempEndPt(ep);
+ track_p trk1 = GetEndPtTrack(epp);
+ if ( trk1 ) {
+ EPINX_T ep1 = GetEndPtEndPt(epp);
+ ConnectTracks( stp->trk, stp->ep[segEP], trk1, ep1 );
+ DrawEndPt( &mainD, trk1, ep1, GetTrkColor(trk1, &mainD) );
+ SetEndPtTrack( epp, NULL ); // Finished with this EP
}
}
stp1 = stp;
@@ -543,28 +587,35 @@ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, ep
while ( cp[0] ) {
GetSegInxEP( cp[0], &segInx, &segEP );
stp = &segTrack(segInx);
+ // Check EPs are not virtual (Bumpers)
+ // TODO-BUMPER May not be necessary
+ CHECK( stp->ep[segEP] >= 0 );
+ CHECK( stp1->ep[segEP1] >= 0 );
trk0 = GetTrkEndTrk( stp->trk, stp->ep[segEP] );
trk1 = GetTrkEndTrk( stp1->trk, stp1->ep[segEP1] );
if ( trk0 == NULL ) {
- if ( trk1 != NULL )
- AbortProg( "ungroup: seg half connected" );
+ CHECK ( trk1 == NULL );
ConnectTracks( stp->trk, stp->ep[segEP], stp1->trk, stp1->ep[segEP1] );
} else {
- if ( trk1 != stp->trk || stp1->trk != trk0 )
- AbortProg( "ungroup: last seg not connected to curr" );
+ CHECK( trk1 == stp->trk );
+ CHECK( stp1->trk == trk0 );
+ // ungroup: last seg not connected to curr
}
stp1 = stp;
segEP1 = 1-segEP;
cp++;
}
/* joint EP to last segment */
- ep = FindEP( epCnt, &tempEndPts(0), GetSegEndPt( xx->segs+segInx, segEP1, FALSE, NULL ) );
+ ep = FindEP( epCnt, TempEndPt(0), GetSegEndPt( xx->segs+segInx, segEP1, FALSE,
+ NULL ) );
if ( ep > 0 ) {
- epp = &tempEndPts(ep);
- if ( epp->track ) {
- ConnectTracks( stp1->trk, stp1->ep[segEP1], epp->track, epp->index );
- DrawEndPt( &mainD, epp->track, epp->index, wDrawColorWhite );
- epp->track = NULL;
+ epp = TempEndPt(ep);
+ track_p trk1 = GetEndPtTrack( epp );
+ if ( trk1 ) {
+ EPINX_T ep1 = GetEndPtEndPt( epp );
+ ConnectTracks( stp1->trk, stp1->ep[segEP1], trk1, ep1 );
+ DrawEndPt( &mainD, trk1, ep1, wDrawColorWhite );
+ SetEndPtTrack( epp, NULL ); // Finished with this EP
}
}
cp++;
@@ -584,8 +635,9 @@ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, ep
mp->trk = NULL;
}
} else {
- if ( segTrack(segInx).trk )
+ if ( segTrack(segInx).trk ) {
DrawNewTrack( segTrack(segInx).trk );
+ }
}
}
wDrawDelayUpdate( mainD.d, FALSE );
@@ -601,8 +653,9 @@ EXPORT void DoUngroup( void * unused )
int oldTrackCount;
TRKINX_T lastTrackIndex;
- if ( log_group < 0 )
+ if ( log_group < 0 ) {
log_group = LogFindIndex( "group" );
+ }
groupManuf[0] = 0;
groupDesc[0] = 0;
groupPartno[0] = 0;
@@ -615,65 +668,71 @@ EXPORT void DoUngroup( void * unused )
if ( GetTrkSelected( trk ) && GetTrkIndex(trk) <= lastTrackIndex ) {
oldTrackCount = trackCount;
UngroupTrack( trk );
- if ( oldTrackCount != trackCount )
+ if ( oldTrackCount != trackCount ) {
ungroupCnt++;
+ }
}
}
- if ( ungroupCnt )
+ if ( ungroupCnt ) {
InfoMessage( _("%d objects ungrouped"), ungroupCnt );
- else
+ } else {
InfoMessage( _("No objects ungrouped") );
+ }
}
static drawCmd_t groupD = {
- NULL, &tempSegDrawFuncs, DC_SEGTRACK, 1, 0.0, {0.0, 0.0}, {0.0, 0.0}, Pix2CoOrd, CoOrd2Pix };
+ NULL, &tempSegDrawFuncs, DC_SEGTRACK, 1, 0.0, {0.0, 0.0}, {0.0, 0.0}, Pix2CoOrd, CoOrd2Pix
+};
static long groupSegCnt;
static long groupReplace;
static long groupNoCombine;
static double groupOriginX;
static double groupOriginY;
char * groupReplaceLabels[] = { N_("Replace with new group?"), NULL };
+char * groupNoCombineLabels[] = { N_("Turntable/TransferTable/DblSlipSwith?"), NULL };
static wWin_p groupW;
static paramIntegerRange_t r0_999999 = { 0, 999999 };
static paramFloatRange_t r_1000_1000 = { -1000.0, 1000.0, 80 };
static paramData_t groupPLs[] = {
-/*0*/ { PD_STRING, groupManuf, "manuf", PDO_NOPREF | PDO_NOTBLANK, I2VP(350), N_("Manufacturer"), 0, 0, sizeof(groupManuf)},
-/*1*/ { PD_STRING, groupDesc, "desc", PDO_NOPREF | PDO_NOTBLANK, I2VP(230), N_("Description"), 0, 0, sizeof(groupDesc)},
-/*2*/ { PD_STRING, groupPartno, "partno", PDO_NOPREF|PDO_DLGHORZ|PDO_DLGIGNORELABELWIDTH|PDO_NOTBLANK, I2VP(100), N_("#"), 0, 0, sizeof(groupPartno)},
-/*3*/ { PD_LONG, &groupSegCnt, "segcnt", PDO_NOPREF, &r0_999999, N_("# Segments"), BO_READONLY },
+ /*0*/ { PD_STRING, groupManuf, "manuf", PDO_NOPREF | PDO_NOTBLANK, I2VP(350), N_("Manufacturer"), 0, 0, sizeof(groupManuf)},
+ /*1*/ { PD_STRING, groupDesc, "desc", PDO_NOPREF | PDO_NOTBLANK, I2VP(230), N_("Description"), 0, 0, sizeof(groupDesc)},
+ /*2*/ { PD_STRING, groupPartno, "partno", PDO_NOPREF|PDO_DLGHORZ|PDO_DLGIGNORELABELWIDTH|PDO_NOTBLANK, I2VP(100), N_("#"), 0, 0, sizeof(groupPartno)},
+ /*3*/ { PD_LONG, &groupSegCnt, "segcnt", PDO_NOPREF, &r0_999999, N_("# Segments"), BO_READONLY },
#define I_GROUP_ORIGIN_OFFSET 4 /* Need to change if add above */
-/*4*/ { PD_FLOAT, &groupOriginX, "orig", PDO_DIM, &r_1000_1000, N_("Offset X,Y:")},
-/*5*/ { PD_FLOAT, &groupOriginY, "origy",PDO_DIM | PDO_DLGHORZ, &r_1000_1000, ""},
-/*6*/ { PD_TOGGLE, &groupReplace, "replace", 0, groupReplaceLabels, "", BC_HORZ|BC_NOBORDER } };
+ /*4*/ { PD_FLOAT, &groupOriginX, "orig", PDO_DIM, &r_1000_1000, N_("Offset X,Y:")},
+ /*5*/ { PD_FLOAT, &groupOriginY, "origy",PDO_DIM | PDO_DLGHORZ, &r_1000_1000, ""},
+ /*6*/ { PD_TOGGLE, &groupNoCombine, "noCombine", 0, groupNoCombineLabels, "", BC_HORZ|BC_NOBORDER },
+ /*7*/ { PD_TOGGLE, &groupReplace, "replace", 0, groupReplaceLabels, "", BC_HORZ|BC_NOBORDER }
+};
static paramGroup_t groupPG = { "group", 0, groupPLs, COUNT( groupPLs ) };
typedef struct {
- track_p trk;
- int segStart;
- int segEnd;
- int totalSegStart; //Where we are overall
- int totalSegEnd;
- } groupTrk_t, * groupTrk_p;
+ track_p trk;
+ int segStart;
+ int segEnd;
+ int totalSegStart; //Where we are overall
+ int totalSegEnd;
+} groupTrk_t, * groupTrk_p;
static dynArr_t groupTrk_da;
#define groupTrk(N) DYNARR_N( groupTrk_t, groupTrk_da, N )
typedef struct {
- int groupInx;
- EPINX_T ep1, ep2;
- PATHPTR_T path;
- BOOL_T flip;
- } pathElem_t, *pathElem_p;
+ int groupInx;
+ EPINX_T ep1, ep2;
+ PATHPTR_T path;
+ BOOL_T flip;
+} pathElem_t, *pathElem_p;
typedef struct {
- int pathElemStart;
- int pathElemEnd;
- EPINX_T ep1, ep2;
- int conflicts;
- BOOL_T inGroup;
- BOOL_T done;
- } path_t, *path_p;
+ int pathElemStart;
+ int pathElemEnd;
+ EPINX_T ep1, ep2;
+ int conflicts;
+ BOOL_T inGroup;
+ BOOL_T done;
+} path_t, *path_p;
static dynArr_t path_da;
#define path(N) DYNARR_N( path_t, path_da, N )
static dynArr_t pathElem_da;
@@ -684,34 +743,36 @@ static int pathElemStart;
/*
* Find sub-path that connects the 2 EPs for the given track
*
- * \param trk IN Track
+ * \param trk IN Track
* \param ep1, ep2 IN EndPt index
* \param BOOL_T *flip OUT whether path is flipped
* \return sub-path that connects the 2 EPs
*/
static char * FindPathBtwEP(
- track_p trk,
- EPINX_T ep1,
- EPINX_T ep2,
- BOOL_T * flip )
+ track_p trk,
+ EPINX_T ep1,
+ EPINX_T ep2,
+ BOOL_T * flip )
{
char * cp;
coOrd trkPos[2];
-
- LOG( log_group, 3, (" FindPathBtwEP: T%d .%d .%d = ", trk?GetTrkIndex(trk):-1, ep1, ep2 ));
+
+ LOG( log_group, 3, (" FindPathBtwEP: T%d .%d .%d = ", trk?GetTrkIndex(trk):-1,
+ ep1, ep2 ));
if ( GetTrkType(trk) != T_TURNOUT ) {
- if ( ep1+ep2 != 1 )
- AbortProg( "findPathBtwEP" );
+ CHECK( ep1+ep2 == 1 );
*flip = ( ep1 == 1 );
- if (GetTrkType(trk) == T_CORNU ) { // Cornu doesn't have a path but lots of segs!
+ if (GetTrkType(trk) ==
+ T_CORNU ) { // Cornu doesn't have a path but lots of segs!
cp = CreateSegPathList(trk); // Make path
-LOG( log_group, 2, ( " Group: Cornu path:%s \n", cp ) )
- } else cp = "\1\0\0"; //One segment (but could be a Bezier)
+ LOG( log_group, 2, ( " Group: Cornu path:%s \n", cp ) )
+ } else { cp = "\1\0\0"; } //One segment (but could be a Bezier)
LOG( log_group, 3, (" Flip:%s Path= Seg=%d-\n", *flip?"T":"F", *cp ) );
return cp;
}
- struct extraDataCompound_t * xx = GET_EXTRA_DATA( trk, T_TURNOUT, extraDataCompound_t );
+ struct extraDataCompound_t * xx = GET_EXTRA_DATA( trk, T_TURNOUT,
+ extraDataCompound_t );
cp = (char *)GetPaths( trk );
trkPos[0] = GetTrkEndPos(trk,ep1);
Rotate( &trkPos[0], xx->orig, -xx->angle );
@@ -740,7 +801,7 @@ LOG( log_group, 2, ( " Group: Cornu path:%s \n", cp ) )
cp += strlen(cp);
GetSegInxEP( cp[-1], &segInx, &segEP );
segPos[1] = GetSegEndPt( &xx->segs[segInx], 1-segEP, FALSE, NULL );
-
+
// Find the closest seg end
for ( int inx = 0; inx<2; inx++ ) {
// Check 1st end
@@ -750,7 +811,9 @@ LOG( log_group, 2, ( " Group: Cornu path:%s \n", cp ) )
DIST_T dist2 = FindDistance( trkPos[1], segPos[1-inx] );
if ( dist2 > dist1 )
// 2nd end is further away
+ {
dist1 = dist2;
+ }
if ( dist1 < connectDistance && dist1 < dist ) {
// both ends are closest
dist = dist1;
@@ -764,18 +827,19 @@ LOG( log_group, 2, ( " Group: Cornu path:%s \n", cp ) )
}
cp++;
}
-LOG( log_group, 3, (" %s: %d..%d Flip:%s\n", pName, path?path[0]:-1, path?path[strlen(path)-1]:-1, *flip?"T":"F" ) );
+ LOG( log_group, 3, (" %s: %d..%d Flip:%s\n", pName, path?path[0]:-1,
+ path?path[strlen(path)-1]:-1, *flip?"T":"F" ) );
return path;
}
static int GroupShortestPathFunc(
- SPTF_CMD cmd,
- track_p trk,
- EPINX_T ep1,
- EPINX_T ep2,
- DIST_T dist,
- void * data )
+ SPTF_CMD cmd,
+ track_p trk,
+ EPINX_T ep1,
+ EPINX_T ep2,
+ DIST_T dist,
+ void * data )
{
track_p trk1;
path_t *pp;
@@ -788,13 +852,20 @@ static int GroupShortestPathFunc(
switch ( cmd ) {
case SPTC_MATCH:
- if ( !GetTrkSelected(trk) )
+ if ( !GetTrkSelected(trk) ) {
return 0;
+ }
+ // TODO-BUMPER may not be necessary
+ if ( GetTrkEndPtCnt(trk) < 2 && ep1 >= 1 ) {
+ return 1;
+ }
trk1 = GetTrkEndTrk(trk,ep1);
- if ( trk1 == NULL )
+ if ( trk1 == NULL ) {
return 1;
- if ( !GetTrkSelected(trk1) )
+ }
+ if ( !GetTrkSelected(trk1) ) {
return 1;
+ }
return 0;
case SPTC_MATCHANY:
@@ -803,7 +874,7 @@ static int GroupShortestPathFunc(
case SPTC_ADD_TRK:
LOG( log_group, 4, ( " Add T%d[%d]\n", GetTrkIndex(trk), ep2 ) )
DYNARR_APPEND( pathElem_t, pathElem_da, 10 );
- ppp = &pathElem(pathElem_da.cnt-1);
+ ppp = &pathElem(pathElem_da.cnt-1);
for ( inx=0; inx<groupTrk_da.cnt; inx++ ) {
if ( groupTrk(inx).trk == trk ) {
ppp->groupInx = inx;
@@ -813,7 +884,9 @@ static int GroupShortestPathFunc(
return 0;
}
}
- AbortProg( "GroupShortestPathFunc(SPTC_ADD_TRK, T%d) - track not in group", GetTrkIndex(trk) );
+ CHECKMSG( FALSE,
+ ( "GroupShortestPathFunc(SPTC_ADD_TRK, T%d) - track not in group",
+ GetTrkIndex(trk) ) );
case SPTC_TERMINATE:
ppp = &pathElem(pathElemStart);
@@ -825,31 +898,35 @@ static int GroupShortestPathFunc(
pos2 = GetTrkEndPos( trk, ppp->ep1 );
ang2 = GetTrkEndAngle( trk, ppp->ep1 );
ep1 = ep2 = -1;
- for ( ep=0; ep<tempEndPts_da.cnt; ep++ ) {
+ for ( ep=0; ep<TempEndPtsCount(); ep++ ) {
if ( ep1 < 0 ) {
- dist = FindDistance( pos1, tempEndPts(ep).pos );
- angle = NormalizeAngle( ang1 - tempEndPts(ep).angle + connectAngle/2.0 );
- if ( dist < connectDistance && angle < connectAngle )
+ dist = FindDistance( pos1, GetEndPtPos(TempEndPt(ep)));
+ angle = NormalizeAngle( ang1 - GetEndPtAngle(TempEndPt(ep)) +
+ connectAngle/2.0 );
+ if ( dist < connectDistance && angle < connectAngle ) {
ep1 = ep;
+ }
}
if ( ep2 < 0 ) {
- dist = FindDistance( pos2, tempEndPts(ep).pos );
- angle = NormalizeAngle( ang2 - tempEndPts(ep).angle + connectAngle/2.0 );
- if ( dist < connectDistance && angle < connectAngle )
+ dist = FindDistance( pos2, GetEndPtPos(TempEndPt(ep)) );
+ angle = NormalizeAngle( ang2 - GetEndPtAngle(TempEndPt(ep)) +
+ connectAngle/2.0 );
+ if ( dist < connectDistance && angle < connectAngle ) {
ep2 = ep;
+ }
}
}
if ( ep1<0 || ep2<0 ) {
-LOG( log_group, 4, ( " Remove: ep not found\n" ) )
- pathElem_da.cnt = pathElemStart;
+ LOG( log_group, 4, ( " Remove: ep not found\n" ) )
+ DYNARR_SET( pathElem_t, pathElem_da, pathElemStart );
return 0;
}
for ( inx=0; inx<path_da.cnt; inx++ ) {
pp = &path(inx);
if ( ( ep1 < 0 || ( pp->ep1 == ep1 || pp->ep2 == ep1 ) ) &&
- ( ep2 < 0 || ( pp->ep1 == ep2 || pp->ep2 == ep2 ) ) ) {
-LOG( log_group, 4, ( " Remove: duplicate path P%d\n", inx ) )
- pathElem_da.cnt = pathElemStart;
+ ( ep2 < 0 || ( pp->ep1 == ep2 || pp->ep2 == ep2 ) ) ) {
+ LOG( log_group, 4, ( " Remove: duplicate path P%d\n", inx ) )
+ DYNARR_SET( pathElem_t, pathElem_da, pathElemStart );
return 0;
}
}
@@ -861,18 +938,21 @@ LOG( log_group, 4, ( " Remove: duplicate path P%d\n", inx ) )
pp->ep1 = ep1;
pp->ep2 = ep2;
pathElemStart = pathElem_da.cnt;
-LOG( log_group, 4, ( " Keep\n" ) )
+ LOG( log_group, 4, ( " Keep\n" ) )
return 0;
case SPTC_IGNNXTTRK:
- if ( !GetTrkSelected(trk) )
+ if ( !GetTrkSelected(trk) ) {
return 1;
- if ( ep1 == ep2 )
+ }
+ if ( ep1 == ep2 ) {
return 1;
- if ( GetTrkEndPtCnt(trk) == 2 )
+ }
+ if ( GetTrkEndPtCnt(trk) == 2 ) {
return 0;
- if ( GetTrkType(trk) != T_TURNOUT )
- AbortProg( "GroupShortestPathFunc(IGNNXTTRK,T%d:%d,%d)", GetTrkIndex(trk), ep1, ep2 );
+ }
+ CHECKMSG( GetTrkType(trk) == T_TURNOUT,
+ ( "GroupShortestPathFunc(IGNNXTTRK,T%d:%d,%d)", GetTrkIndex(trk), ep1, ep2 ) );
return FindPathBtwEP( trk, ep2, ep1, &flip ) == NULL;
case SPTC_VALID:
@@ -884,8 +964,8 @@ LOG( log_group, 4, ( " Keep\n" ) )
static int CmpGroupOrder(
- const void * ptr1,
- const void * ptr2 )
+ const void * ptr1,
+ const void * ptr2 )
{
int inx1 = *(int*)ptr1;
int inx2 = *(int*)ptr2;
@@ -895,71 +975,76 @@ static int CmpGroupOrder(
static coOrd endPtOrig;
static ANGLE_T endPtAngle;
static int CmpEndPtAngle(
- const void * ptr1,
- const void * ptr2 )
+ const void * ptr1,
+ const void * ptr2 )
{
ANGLE_T angle;
trkEndPt_p epp1 = (trkEndPt_p)ptr1;
trkEndPt_p epp2 = (trkEndPt_p)ptr2;
-
- angle = NormalizeAngle(FindAngle(endPtOrig,epp1->pos)-endPtAngle) - NormalizeAngle(FindAngle(endPtOrig,epp2->pos)-endPtAngle);
+
+ angle = NormalizeAngle(FindAngle(endPtOrig,
+ GetEndPtPos(epp1))-endPtAngle) - NormalizeAngle(FindAngle(endPtOrig,
+ GetEndPtPos(epp2))-endPtAngle);
return (int)angle;
}
static int ConflictPaths(
- path_p path0,
- path_p path1 )
+ path_p path0,
+ path_p path1 )
{
if ( groupNoCombine != 0 ) {
// No grouping
return TRUE;
}
/* do these paths share an EP? */
- if ( path0->ep1 == path1->ep1 ) return TRUE;
- if ( path0->ep1 == path1->ep2 ) return TRUE;
- if ( path0->ep2 == path1->ep1 ) return TRUE;
- if ( path0->ep2 == path1->ep2 ) return TRUE;
+ if ( path0->ep1 == path1->ep1 ) { return TRUE; }
+ if ( path0->ep1 == path1->ep2 ) { return TRUE; }
+ if ( path0->ep2 == path1->ep1 ) { return TRUE; }
+ if ( path0->ep2 == path1->ep2 ) { return TRUE; }
return FALSE;
}
static BOOL_T CheckPathEndPt(
- track_p trk,
- char cc,
- EPINX_T ep )
+ track_p trk,
+ char cc,
+ EPINX_T ep )
{
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
wIndex_t segInx;
EPINX_T segEP, epCnt;
DIST_T d;
coOrd pos;
GetSegInxEP( cc, &segInx, &segEP );
- if ( ep ) segEP = 1-segEP;
+ if ( ep ) { segEP = 1-segEP; }
pos = GetSegEndPt( &xx->segs[segInx], segEP, FALSE, NULL );
REORIGIN1( pos, xx->angle, xx->orig );
epCnt = GetTrkEndPtCnt(trk);
for ( ep=0; ep<epCnt; ep++ ) {
d = FindDistance( pos, GetTrkEndPos( trk, ep ) );
- if ( d < connectDistance )
+ if ( d < connectDistance ) {
return TRUE;
+ }
}
return FALSE;
}
static BOOL_T CheckForBumper(
- track_p trk )
+ track_p trk )
{
char * cp;
cp = (char *)GetPaths( trk );
while ( cp[0] ) {
cp += strlen(cp)+1;
while ( cp[0] ) {
- if ( !CheckPathEndPt( trk, cp[0], 0 ) ) return FALSE;
- while ( cp[0] )
+ if ( !CheckPathEndPt( trk, cp[0], 0 ) ) { return FALSE; }
+ while ( cp[0] ) {
cp++;
- if ( !CheckPathEndPt( trk, cp[-1], 1 ) ) return FALSE;
+ }
+ if ( !CheckPathEndPt( trk, cp[-1], 1 ) ) { return FALSE; }
cp++;
}
cp++;
@@ -975,7 +1060,7 @@ static dynArr_t outputSegs_da;
#define outputSegs(N) DYNARR_N( trkSeg_t, outputSegs_da, N)
static void LogSeg(
- trkSeg_p segP )
+ trkSeg_p segP )
{
if ( segP == NULL ) {
LogPrintf( "<NULL>\n" );
@@ -989,15 +1074,15 @@ static void LogSeg(
case SEG_BENCH:
case SEG_TBLEDGE:
LogPrintf( "[ %0.3f %0.3f ] [ %0.3f %0.3f ]\n",
- segP->u.l.pos[0].x, segP->u.l.pos[0].y,
- segP->u.l.pos[1].x, segP->u.l.pos[1].y );
+ segP->u.l.pos[0].x, segP->u.l.pos[0].y,
+ segP->u.l.pos[1].x, segP->u.l.pos[1].y );
break;
case SEG_CRVLIN:
case SEG_CRVTRK:
LogPrintf( "R:%0.3f [ %0.3f %0.3f } A0:%0.3f A1:%0.3f\n",
- segP->u.c.radius,
- segP->u.c.center.x, segP->u.c.center.y,
- segP->u.c.a0, segP->u.c.a1 );
+ segP->u.c.radius,
+ segP->u.c.center.x, segP->u.c.center.y,
+ segP->u.c.a0, segP->u.c.a1 );
break;
default:
LogPrintf( "%c:\n", segP->type );
@@ -1063,7 +1148,7 @@ static void GroupOk( void * unused )
DYNARR_RESET( groupTrk_t, groupTrk_da );
DYNARR_RESET( path_t, path_da );
DYNARR_RESET( pathElem_t, pathElem_da );
- DYNARR_RESET( trkEndPt_t, tempEndPts_da );
+ TempEndPtsReset();
DYNARR_RESET( char, pathPtr_da );
ParamUpdate( &groupPG );
@@ -1074,8 +1159,9 @@ static void GroupOk( void * unused )
sprintf( message, "%s\t%s\t%s", groupManuf, groupDesc, groupPartno );
if ( strcmp( message, groupTitle ) != 0 ) {
if ( FindCompound( FIND_TURNOUT|FIND_STRUCT, curScaleName, message ) )
- if ( !NoticeMessage2( 1, MSG_TODSGN_REPLACE, _("Yes"), _("No") ) )
+ if ( !NoticeMessage2( 1, MSG_TODSGN_REPLACE, _("Yes"), _("No") ) ) {
return;
+ }
strcpy( groupTitle, message );
}
@@ -1084,8 +1170,11 @@ static void GroupOk( void * unused )
* 1: Collect tracks
*/
trk = NULL;
- int InInx = -1;
+// int InInx = -1;
BOOL_T hasTracks = FALSE;
+ wIndex_t nTrkSeg = 0;
+ wIndex_t nSeg = 0;
+ wIndex_t iLastTrkSeg = 0;
while ( TrackIterate( &trk ) ) {
if ( GetTrkSelected( trk ) ) {
DYNARR_APPEND( groupTrk_t, groupTrk_da, 10 );
@@ -1093,7 +1182,7 @@ static void GroupOk( void * unused )
groupP->trk = trk;
groupP->segStart = trackSegs_da.cnt;
groupP->totalSegStart = tempSegs_da.cnt+trackSegs_da.cnt;
- if (IsTrack(trk)) hasTracks = TRUE;
+ if (IsTrack(trk)) { hasTracks = TRUE; }
if ( GetTrkType(trk) == T_TURNOUT || GetTrkType(trk) == T_STRUCTURE) {
xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
for ( pinx=0; pinx<xx->segCnt; pinx++ ) {
@@ -1122,53 +1211,66 @@ static void GroupOk( void * unused )
} else if (GetTrkType(trk) == T_CORNU) {
- int start = trackSegs_da.cnt;
+// int start = trackSegs_da.cnt;
- GetBezierSegmentsFromCornu(trk,&trackSegs_da,TRUE); //Only give back Bezier - cant be undone
+ GetBezierSegmentsFromCornu(trk,&trackSegs_da,
+ TRUE); //Only give back Bezier - cant be undone
} else {
- if (IsTrack(trk)) hasTracks=TRUE;
+ if (IsTrack(trk)) { hasTracks=TRUE; }
segCnt = tempSegs_da.cnt;
DrawTrack( trk, &groupD, wDrawColorBlack );
- DYNARR_APPEND( trkSeg_t, trackSegs_da, 10 );
- segPtr = &trackSegs(trackSegs_da.cnt-1);
- *segPtr = tempSegs( segCnt );
-
- if ( tempSegs_da.cnt != segCnt+1 ) {
- NoticeMessage2( 0, MSG_CANNOT_GROUP_TRACK, _("Ok"), NULL, GetTrkTypeName(trk));
- wHide( groupW );
- return;
+ for ( ; segCnt < tempSegs_da.cnt; segCnt++ ) {
+ // Copy drawn segments
+ DYNARR_APPEND( trkSeg_t, trackSegs_da, 10 );
+ segPtr = &trackSegs(trackSegs_da.cnt-1);
+ *segPtr = tempSegs( segCnt );
}
+ }
+ // Count number of track segs and if any appear after seg 127
+ for ( ; nSeg < trackSegs_da.cnt; nSeg++ ) {
+ if ( IsSegTrack( &trackSegs( nSeg ) ) ) {
+ nTrkSeg++;
+ iLastTrkSeg = nSeg;
+ }
}
groupP->segEnd = trackSegs_da.cnt-1;
}
}
-if ( log_group >= 1 && logTable(log_group).level >= 4 ) {
- LogPrintf( "Track Segs:\n");
- for ( int inx = 0; inx < trackSegs_da.cnt; inx++ ) {
- if (IsSegTrack(&trackSegs(inx))) {
- LogPrintf( " %d: ", inx+1 );
- LogSeg( &trackSegs(inx) );
+ if ( log_group >= 1 && logTable(log_group).level >= 4 ) {
+ LogPrintf( "Track Segs:\n");
+ for ( int inx = 0; inx < trackSegs_da.cnt; inx++ ) {
+ if (IsSegTrack(&trackSegs(inx))) {
+ LogPrintf( " %d: ", inx+1 );
+ LogSeg( &trackSegs(inx) );
+ }
}
- }
- LogPrintf( "Other Segs:\n");
- for ( int inx = 0; inx < trackSegs_da.cnt; inx++ ) {
- if (!IsSegTrack(&trackSegs(inx))) {
- LogPrintf( " %d: ", inx+1 );
- LogSeg( &tempSegs(inx) );
+ LogPrintf( "Other Segs:\n");
+ for ( int inx = 0; inx < trackSegs_da.cnt; inx++ ) {
+ if (!IsSegTrack(&trackSegs(inx))) {
+ LogPrintf( " %d: ", inx+1 );
+ LogSeg( &tempSegs(inx) );
+ }
}
}
-}
- if ( groupTrk_da.cnt>0 && hasTracks) {
- if ( groupTrk_da.cnt > 128 ) {
- NoticeMessage( MSG_TOOMANYSEGSINGROUP, _("Ok"), NULL );
- wDrawDelayUpdate( mainD.d, FALSE );
- wHide( groupW );
- return;
- }
+ if ( nTrkSeg > MAX_PATH_SEGS ) {
+ // Too many track segs
+ NoticeMessage( MSG_TOOMANYSEGSINGROUP, _("Ok"), NULL );
+ wDrawDelayUpdate( mainD.d, FALSE );
+ wHide( groupW );
+ return;
+ }
+ if ( iLastTrkSeg > MAX_PATH_SEGS ) {
+ // track segs beyond threshold
+ NoticeMessage( MSG_TOOMANYSEGSINGROUP2, _("Ok"), NULL );
+ wDrawDelayUpdate( mainD.d, FALSE );
+ wHide( groupW );
+ return;
+ }
+ if ( groupTrk_da.cnt>0 && hasTracks) {
/*
* Collect EndPts and find paths
*/
@@ -1181,38 +1283,40 @@ if ( log_group >= 1 && logTable(log_group).level >= 4 ) {
trk1 = GetTrkEndTrk(trk,ep);
if ( trk1 == NULL || !GetTrkSelected(trk1) ) {
/* boundary EP */
- for ( epN=0; epN<tempEndPts_da.cnt; epN++ ) {
- dist = FindDistance( GetTrkEndPos(trk,ep), tempEndPts(epN).pos );
- angle = NormalizeAngle( GetTrkEndAngle(trk,ep) - tempEndPts(epN).angle + connectAngle/2.0 );
- if ( dist < connectDistance && angle < connectAngle )
+ for ( epN=0; epN<TempEndPtsCount(); epN++ ) {
+ dist = FindDistance( GetTrkEndPos(trk,ep), GetEndPtPos(TempEndPt(epN)) );
+ angle = NormalizeAngle( GetTrkEndAngle(trk,
+ ep) - GetEndPtAngle(TempEndPt(epN)) + connectAngle/2.0 );
+ if ( dist < connectDistance && angle < connectAngle ) {
break;
+ }
}
- if ( epN>=tempEndPts_da.cnt ) {
- DYNARR_APPEND( trkEndPt_t, tempEndPts_da, 10 );
- endPtP = &tempEndPts(tempEndPts_da.cnt-1);
- memset( endPtP, 0, sizeof *endPtP );
- endPtP->pos = GetTrkEndPos(trk,ep);
- endPtP->angle = GetTrkEndAngle(trk,ep);
- endPtP->track = trk1;
- endPtP->index = (trk1?GetEndPtConnectedToMe(trk1,trk):-1);
- endPtOrig.x += endPtP->pos.x;
- endPtOrig.y += endPtP->pos.y;
+ if ( epN>=TempEndPtsCount() ) {
+ endPtP = TempEndPtsAppend();
+ SetEndPt( endPtP, GetTrkEndPos(trk,ep), GetTrkEndAngle(trk,ep));
+ SetEndPtTrack( endPtP, trk1 );
+ // Remember what EP on trk1 was connecting to me
+ SetEndPtEndPt( endPtP, trk1?GetEndPtConnectedToMe(trk1,trk):-1 );
+ endPtOrig.x += GetEndPtPos(endPtP).x;
+ endPtOrig.y += GetEndPtPos(endPtP).y;
}
}
}
}
-if ( log_group >= 1 && logTable(log_group).level >= 4 ) {
- LogPrintf( "EndPts:\n" );
- for ( int inx=0; inx<tempEndPts_da.cnt; inx++ ) {
- endPtP = &tempEndPts(inx);
- LogPrintf( " [ %0.3f %0.3f ] A:%0.3f, T:%d.%d\n",
- endPtP->pos.x, endPtP->pos.y, endPtP->angle, endPtP->track?GetTrkIndex(endPtP->track):-1, endPtP->index );
- }
-}
+ if ( log_group >= 1 && logTable(log_group).level >= 4 ) {
+ LogPrintf( "EndPts:\n" );
+ for ( int inx=0; inx<TempEndPtsCount(); inx++ ) {
+ endPtP = TempEndPt(inx);
+ LogPrintf( " [ %0.3f %0.3f ] A:%0.3f, T:%d.%d\n",
+ GetEndPtPos(endPtP).x, GetEndPtPos(endPtP).y, GetEndPtAngle(endPtP),
+ GetEndPtTrack(endPtP)?GetTrkIndex(GetEndPtTrack(endPtP)):-1,
+ GetEndPtEndPt(endPtP) );
+ }
+ }
/*
* 2: Collect EndPts
*/
- if ( tempEndPts_da.cnt <= 0 ) {
+ if ( TempEndPtsCount() <= 0 ) {
NoticeMessage( _("No endpts"), _("Ok"), NULL );
wDrawDelayUpdate( mainD.d, FALSE );
wHide( groupW );
@@ -1220,7 +1324,8 @@ if ( log_group >= 1 && logTable(log_group).level >= 4 ) {
}
/* Make sure no turnouts in groupTrk list have a path end which is not an EndPt */
- //TODO Add Trap Points (which are Turnouts with a bumper track)
+ // TODO-BUMPER Add Trap Points (which are Turnouts with a bumper track)
+ // for Bumper support remove this loop
for ( inx=0; inx<groupTrk_da.cnt; inx++ ) {
trk = groupTrk(0).trk;
if ( GetTrkType( trk ) == T_TURNOUT ) {
@@ -1248,37 +1353,38 @@ if ( log_group >= 1 && logTable(log_group).level >= 4 ) {
/*
* Sort EndPts by angle
*/
- endPtOrig.x /= tempEndPts_da.cnt;
- endPtOrig.y /= tempEndPts_da.cnt;
+ endPtOrig.x /= TempEndPtsCount();
+ endPtOrig.y /= TempEndPtsCount();
angleN = 270.0;
epN = -1;
- for ( ep=0; ep<tempEndPts_da.cnt; ep++ ) {
- angle = FindAngle(endPtOrig,tempEndPts(ep).pos);
+ for ( ep=0; ep<TempEndPtsCount(); ep++ ) {
+ angle = FindAngle(endPtOrig,GetEndPtPos(TempEndPt(ep)));
if ( fabs(angle-270.0) < angleN ) {
epN = ep;
angleN = fabs(angle-270.0);
endPtAngle = angle;
}
}
- qsort( tempEndPts_da.ptr, tempEndPts_da.cnt, sizeof *endPtP, CmpEndPtAngle );
- if ( NormalizeAngle( tempEndPts(0).angle - tempEndPts(tempEndPts_da.cnt-1).angle ) >
- NormalizeAngle( tempEndPts(1).angle - tempEndPts(0).angle ) ) {
-
- for ( ep=1; ep<(tempEndPts_da.cnt+1)/2; ep++ ) {
- trkEndPt_t tempEndPt;
- tempEndPt = tempEndPts(ep);
- tempEndPts(ep) = tempEndPts(tempEndPts_da.cnt-ep);
- tempEndPts(tempEndPts_da.cnt-ep) = tempEndPt;
+ qsort( TempEndPt(0), TempEndPtsCount(), EndPtSize(1), CmpEndPtAngle );
+ // TODO-BUMPER - handle TempEndPt(1)
+ if ( NormalizeAngle( GetEndPtAngle(TempEndPt(0)) - GetEndPtAngle(TempEndPt(
+ TempEndPtsCount()-1)) ) >
+ NormalizeAngle( GetEndPtAngle(TempEndPt(1)) - GetEndPtAngle(TempEndPt(0)) ) ) {
+
+ for ( ep=1; ep<(TempEndPtsCount()+1)/2; ep++ ) {
+ SwapEndPts( TempEndPt(0), ep, TempEndPtsCount()-ep );
+ }
+ }
+ if ( log_group >= 1 && logTable(log_group).level >= 3 ) {
+ LogPrintf( "Sorted EndPts:\n" );
+ for ( int inx=0; inx<TempEndPtsCount(); inx++ ) {
+ endPtP = TempEndPt(inx);
+ track_p trk1 = GetEndPtTrack(endPtP);
+ LogPrintf( " [ %0.3f %0.3f ] A:%0.3f, T:%d.%d\n",
+ GetEndPtPos(endPtP).x, GetEndPtPos(endPtP).y, GetEndPtAngle(endPtP),
+ trk1?GetTrkIndex(trk1):-1, GetEndPtEndPt(endPtP) );
}
}
-if ( log_group >= 1 && logTable(log_group).level >= 3 ) {
- LogPrintf( "Sorted EndPts:\n" );
- for ( int inx=0; inx<tempEndPts_da.cnt; inx++ ) {
- endPtP = &tempEndPts(inx);
- LogPrintf( " [ %0.3f %0.3f ] A:%0.3f, T:%d.%d\n",
- endPtP->pos.x, endPtP->pos.y, endPtP->angle, endPtP->track?GetTrkIndex(endPtP->track):-1, endPtP->index );
- }
-}
/*
* 3: Find shortest Paths
@@ -1295,35 +1401,40 @@ if ( log_group >= 1 && logTable(log_group).level >= 3 ) {
}
}
}
-if ( log_group >= 1 && logTable(log_group).level >= 3 ) {
- LogPrintf( "Shortest path:\n Group Tracks\n" );
- for ( int inx=0; inx<groupTrk_da.cnt; inx++ ) {
- groupTrk_p gtp = &groupTrk(inx);
- LogPrintf( " %d: T%d S%d-%d\n", inx, GetTrkIndex( gtp->trk ), gtp->segStart+1, gtp->segEnd+1 );
- }
- LogPrintf( " Path Elem\n" );
- for ( int inx=0; inx<pathElem_da.cnt; inx++ ) {
- ppp = &pathElem(inx);
- LogPrintf( " %d: GTx: %d, EP: %d %d, F:%s, P:",
- inx, ppp->groupInx, ppp->ep1, ppp->ep2, ppp->flip?"T":"F" );
- for ( PATHPTR_T cp = ppp->path; cp[0] || cp[1]; cp++ ) {
- LogPrintf( " %d", *cp );
- }
- LogPrintf( " 0\n" );
- }
- LogPrintf( " Path\n" );
- for ( int inx=0; inx<path_da.cnt; inx++ ) {
- path_p pp = &path(inx);
- LogPrintf( " %d: PE: %d-%d, EP: %d-%d, Conf: %d, InGrp: %s, Done: %s\n",
- inx, pp->pathElemStart, pp->pathElemEnd, pp->ep1, pp->ep2,
- pp->conflicts, pp->inGroup?"T":"F", pp->done?"T":"F" );
- }
-}
+ if ( log_group >= 1 && logTable(log_group).level >= 3 ) {
+ LogPrintf( "Shortest path:\n Group Tracks\n" );
+ for ( int inx=0; inx<groupTrk_da.cnt; inx++ ) {
+ groupTrk_p gtp = &groupTrk(inx);
+ LogPrintf( " %d: T%d S%d-%d\n", inx, GetTrkIndex( gtp->trk ),
+ gtp->segStart+1, gtp->segEnd+1 );
+ }
+ LogPrintf( " Path Elem\n" );
+ for ( int inx=0; inx<pathElem_da.cnt; inx++ ) {
+ ppp = &pathElem(inx);
+ LogPrintf( " %d: GTx: %d, EP: %d %d, F:%s, P:",
+ inx, ppp->groupInx, ppp->ep1, ppp->ep2, ppp->flip?"T":"F" );
+ if ( ppp->path == NULL ) {
+ LogPrintf( "No Paths!\n" );
+ } else {
+ for ( PATHPTR_T cp = ppp->path; cp[0] || cp[1]; cp++ ) {
+ LogPrintf( " %d", *cp );
+ }
+ }
+ LogPrintf( " 0\n" );
+ }
+ LogPrintf( " Path\n" );
+ for ( int inx=0; inx<path_da.cnt; inx++ ) {
+ path_p pp = &path(inx);
+ LogPrintf( " %d: PE: %d-%d, EP: %d-%d, Conf: %d, InGrp: %s, Done: %s\n",
+ inx, pp->pathElemStart, pp->pathElemEnd, pp->ep1, pp->ep2,
+ pp->conflicts, pp->inGroup?"T":"F", pp->done?"T":"F" );
+ }
+ }
/*
* 4: Flip paths so they align
*/
if ( path_da.cnt == 0 ) {
- NoticeMessage( _("No paths"), _("Ok"), NULL );
+ NoticeMessage( MSG_GROUP_NO_PATHS, _("Ok"), NULL );
wDrawDelayUpdate( mainD.d, FALSE );
wHide( groupW );
return;
@@ -1335,24 +1446,25 @@ if ( log_group >= 1 && logTable(log_group).level >= 3 ) {
inx = -1;
for ( pinx=0; pinx<path_da.cnt; pinx++ ) {
pp = &path(pinx);
- if ( pp->done ) continue;
+ if ( pp->done ) { continue; }
for ( pinx2=0; pinx2<path_da.cnt; pinx2++ ) {
- if ( pinx2==pinx ) continue;
+ if ( pinx2==pinx ) { continue; }
ppN = &path(pinx2);
if ( pp->ep1 == ppN->ep1 ||
- pp->ep2 == ppN->ep2 ) {
+ pp->ep2 == ppN->ep2 ) {
pp->done = TRUE;
allDone = FALSE;
-LOG( log_group, 1, ( "P%d aligns with P%d\n", pinx, pinx2 ) );
+ LOG( log_group, 1, ( "P%d aligns with P%d\n", pinx, pinx2 ) );
break;
}
if ( pp->ep1 == ppN->ep2 ||
- pp->ep2 == ppN->ep1 ) {
+ pp->ep2 == ppN->ep1 ) {
pp->done = TRUE;
allDone = FALSE;
-LOG( log_group, 1, ( "P%d aligns flipped with P%d\n", pinx, pinx2 ) );
+ LOG( log_group, 1, ( "P%d aligns flipped with P%d\n", pinx, pinx2 ) );
inx = (pp->pathElemStart+pp->pathElemEnd-1)/2;
- for ( ginx=pp->pathElemStart,ginx2=pp->pathElemEnd; ginx<=inx; ginx++,ginx2-- ) {
+ for ( ginx=pp->pathElemStart,ginx2=pp->pathElemEnd; ginx<=inx;
+ ginx++,ginx2-- ) {
pathElemTemp = pathElem(ginx);
pathElem(ginx) = pathElem(ginx2);
pathElem(ginx2) = pathElemTemp;
@@ -1370,33 +1482,35 @@ LOG( log_group, 1, ( "P%d aligns flipped with P%d\n", pinx, pinx2 ) );
break;
}
}
- if ( inx<0 && !pp->done )
+ if ( inx<0 && !pp->done ) {
inx = pinx;
+ }
}
if ( allDone && inx>=0 ) {
allDone = FALSE;
path(inx).done = TRUE;
- }
- }
-if ( log_group >= 1 && logTable(log_group).level >= 1 ) {
- LogPrintf( "Group Paths\n" );
- for ( pinx=0; pinx<path_da.cnt; pinx++ ) {
- pp = &path(pinx);
- LogPrintf( " P%2d:%d.%d ", pinx, pp->ep1, pp->ep2 );
- for ( pinx2=pp->pathElemEnd; pinx2>=pp->pathElemStart; pinx2-- ) {
- ppp = &pathElem(pinx2);
- LogPrintf( " %sT%d:%d.%d", ppp->flip?"-":"", GetTrkIndex(groupTrk(ppp->groupInx).trk), ppp->ep1, ppp->ep2 );
- }
- LogPrintf( "\n" );
- }
-}
+ }
+ }
+ if ( log_group >= 1 && logTable(log_group).level >= 1 ) {
+ LogPrintf( "Group Paths\n" );
+ for ( pinx=0; pinx<path_da.cnt; pinx++ ) {
+ pp = &path(pinx);
+ LogPrintf( " P%2d:%d.%d ", pinx, pp->ep1, pp->ep2 );
+ for ( pinx2=pp->pathElemEnd; pinx2>=pp->pathElemStart; pinx2-- ) {
+ ppp = &pathElem(pinx2);
+ LogPrintf( " %sT%d:%d.%d", ppp->flip?"-":"",
+ GetTrkIndex(groupTrk(ppp->groupInx).trk), ppp->ep1, ppp->ep2 );
+ }
+ LogPrintf( "\n" );
+ }
+ }
/*
* 5: Create Conflict Map
*/
DYNARR_SET( int, conflictMap_da, path_da.cnt*path_da.cnt );
- memset( conflictMap_da.ptr, 0, conflictMap_da.max * sizeof conflictMap(0,0) );
+ memset( &conflictMap(0,0), 0, conflictMap_da.cnt * sizeof conflictMap(0,0) );
for ( pinx=0; pinx<path_da.cnt; pinx++ ) {
for ( pinx2=pinx+1; pinx2<path_da.cnt; pinx2++ ) {
if ( ConflictPaths( &path(pinx), &path(pinx2) ) ) {
@@ -1411,27 +1525,28 @@ if ( log_group >= 1 && logTable(log_group).level >= 1 ) {
* Sort Paths by number of conflicts
*/
DYNARR_SET( int, groupOrder_da, path_da.cnt );
- for ( pinx=0; pinx<path_da.cnt; pinx++ ) groupOrder(pinx) = pinx;
- qsort( groupOrder_da.ptr, path_da.cnt, sizeof groupOrder(0), CmpGroupOrder );
+ for ( pinx=0; pinx<path_da.cnt; pinx++ ) { groupOrder(pinx) = pinx; }
+ qsort( &groupOrder(0), path_da.cnt, sizeof groupOrder(0), CmpGroupOrder );
/*
- * Group Paths, 1st pass:
+ * Group Paths, 1st pass:
*/
DYNARR_SET( int, groupMap_da, path_da.cnt*(path_da.cnt+1) );
- memset( groupMap_da.ptr, -1, groupMap_da.max * sizeof groupMap(0,0) );
+ memset( &groupMap(0,0), -1, groupMap_da.cnt * sizeof groupMap(0,0) );
groupCnt = 0;
for ( pinx=0; pinx<path_da.cnt; pinx++ ) {
pp = &path(groupOrder(pinx));
- if ( pp->inGroup ) continue;
+ if ( pp->inGroup ) { continue; }
pp->inGroup = TRUE;
groupCnt++;
groupMap( groupCnt-1, 0 ) = groupOrder(pinx);
ginx = 1;
for ( pinx2=pinx+1; pinx2<path_da.cnt; pinx2++ ) {
gpinx2 = groupOrder(pinx2);
- if ( path(gpinx2).inGroup ) continue;
- for ( ginx2=0; ginx2<ginx && !conflictMap(groupMap(groupCnt-1,ginx2),gpinx2); ginx2++ );
- if ( ginx2<ginx ) continue;
+ if ( path(gpinx2).inGroup ) { continue; }
+ for ( ginx2=0; ginx2<ginx
+ && !conflictMap(groupMap(groupCnt-1,ginx2),gpinx2); ginx2++ );
+ if ( ginx2<ginx ) { continue; }
path(gpinx2).inGroup = TRUE;
groupMap( groupCnt-1, ginx++ ) = gpinx2;
}
@@ -1445,22 +1560,24 @@ if ( log_group >= 1 && logTable(log_group).level >= 1 ) {
for ( pinx2=0; pinx2<path_da.cnt; pinx2++ ) {
gpinx2 = groupOrder(pinx2);
for ( ginx2=0; ginx2<ginx && groupMap(pinx,ginx2)!=gpinx2; ginx2++ );
- if ( ginx2<ginx ) continue; /* already on list */
- for ( ginx2=0; ginx2<ginx && !conflictMap(groupMap(pinx,ginx2),gpinx2); ginx2++ );
- if ( ginx2<ginx ) continue; /* conflicts with someone on list */
+ if ( ginx2<ginx ) { continue; } /* already on list */
+ for ( ginx2=0; ginx2<ginx
+ && !conflictMap(groupMap(pinx,ginx2),gpinx2); ginx2++ );
+ if ( ginx2<ginx ) { continue; } /* conflicts with someone on list */
groupMap(pinx,ginx++) = gpinx2;
}
}
-if ( log_group >= 1 && logTable(log_group).level >= 3 ) {
- LogPrintf( "Group Map\n");
- for ( pinx=0; pinx<groupCnt; pinx++ ) {
- LogPrintf( "G%d:", pinx );
- for ( ginx=0; groupMap(pinx,ginx) >= 0; ginx++ )
- LogPrintf( " %d: %d", ginx, groupMap(pinx,ginx) );
- LogPrintf( "\n" );
- }
-}
+ if ( log_group >= 1 && logTable(log_group).level >= 3 ) {
+ LogPrintf( "Group Map\n");
+ for ( pinx=0; pinx<groupCnt; pinx++ ) {
+ LogPrintf( "G%d:", pinx );
+ for ( ginx=0; groupMap(pinx,ginx) >= 0; ginx++ ) {
+ LogPrintf( " %d: %d", ginx, groupMap(pinx,ginx) );
+ }
+ LogPrintf( "\n" );
+ }
+ }
/*
* 6: Count number of times each segment is used as flipped
@@ -1469,34 +1586,36 @@ if ( log_group >= 1 && logTable(log_group).level >= 3 ) {
memset( &segFlip(0), 0, trackSegs_da.cnt * sizeof segFlip(0) );
for ( pinx=0; pinx<pathElem_da.cnt; pinx++ ) {
ppp = &pathElem(pinx);
- for ( PATHPTR_T pPaths=ppp->path; *pPaths; pPaths++ ) {
+ for ( PATHPTR_T pPaths=ppp->path; pPaths && *pPaths; pPaths++ ) {
inx = *pPaths;
- if ( inx<0 )
+ if ( inx<0 ) {
inx = - inx;
- if ( inx > trackSegs_da.cnt )
- AbortProg( "inx > trackSegs_da.cnt" );
+ }
+ CHECK( inx <= trackSegs_da.cnt );
flip = *pPaths<0;
- if ( ppp->flip )
+ if ( ppp->flip ) {
flip = !flip;
+ }
inx += groupTrk(ppp->groupInx).segStart - 1;
- if ( !flip )
+ if ( !flip ) {
segFlip(inx)++;
- else
+ } else {
segFlip(inx)--;
+ }
}
}
/*
* Flip each segment that is used as flipped more than not
*/
-LOG( log_group, 3, ( "Flipping Segments:" ) );
+ LOG( log_group, 3, ( "Flipping Segments:" ) );
for ( pinx=0; pinx<trackSegs_da.cnt; pinx++ ) {
if ( segFlip(pinx) < 0 ) {
- SegProc( SEGPROC_FLIP, &trackSegs(pinx), NULL );
-LOG( log_group, 3, ( " %d", pinx ) );
+ SegProc( SEGPROC_FLIP, &trackSegs(pinx), NULL );
+ LOG( log_group, 3, ( " %d", pinx ) );
}
}
-LOG( log_group, 3, ( "\n" ) );
+ LOG( log_group, 3, ( "\n" ) );
/*
* 7: Output Path lists
@@ -1508,16 +1627,24 @@ LOG( log_group, 3, ( "\n" ) );
memcpy( &pathPtr(inx), message, pathPtr_da.cnt-inx );
for ( ginx=0; groupMap(pinx,ginx) >= 0; ginx++ ) {
pp = &path(groupMap(pinx,ginx));
- LOG( log_group, 3, (" Group Map(%d, %d): elem %d-%d, EP %d %d, Conflicts %d, inGrp %d, Done: %s\n", pinx, ginx, pp->pathElemStart, pp->pathElemEnd, pp->ep1, pp->ep2, pp->conflicts, pp->inGroup, pp->done?"T":"F" ) );
+ LOG( log_group, 3,
+ (" Group Map(%d, %d): elem %d-%d, EP %d %d, Conflicts %d, inGrp %d, Done: %s\n",
+ pinx, ginx, pp->pathElemStart, pp->pathElemEnd, pp->ep1, pp->ep2, pp->conflicts,
+ pp->inGroup, pp->done?"T":"F" ) );
for ( pinx2=pp->pathElemEnd; pinx2>=pp->pathElemStart; pinx2-- ) {
ppp = &pathElem( pinx2 );
- LOG( log_group, 3, (" PE %d: GI %d, EP %d %d, Flip %d =", pinx2, ppp->groupInx, ppp->ep1, ppp->ep2, ppp->flip ));
+ LOG( log_group, 3, (" PE %d: GI %d, EP %d %d, Flip %d =", pinx2,
+ ppp->groupInx, ppp->ep1, ppp->ep2, ppp->flip ));
groupP = &groupTrk( ppp->groupInx );
PATHPTR_T pPaths = ppp->path;
flip = ppp->flip;
- if ( pPaths == NULL )
- AbortProg( "Missing Path T%d:%d.%d", GetTrkIndex(groupP->trk), ppp->ep2, ppp->ep1 );
- if ( flip ) pPaths += strlen((char *)pPaths)-1;
+ if ( pPaths == NULL ) {
+ ErrorMessage( MSG_GROUP_NO_PATHS, _("Ok"), NULL );
+ wDrawDelayUpdate( mainD.d, FALSE );
+ wHide( groupW );
+ return;
+ }
+ if ( flip ) { pPaths += strlen((char *)pPaths)-1; }
while ( *pPaths && (pPaths >= ppp->path) ) { //Add Guard for flip backwards
DYNARR_APPEND( char, pathPtr_da, 10 );
pathChar = *pPaths;
@@ -1527,9 +1654,10 @@ LOG( log_group, 3, ( "\n" ) );
pathChar = - pathChar;
}
pathChar = groupP->segStart+pathChar;
- if ( segFlip(pathChar-1)<0 )
+ if ( segFlip(pathChar-1)<0 ) {
flip1 = ! flip1;
- if ( flip1 ) pathChar = - pathChar;
+ }
+ if ( flip1 ) { pathChar = - pathChar; }
pathPtr(pathPtr_da.cnt-1) = pathChar;
pPaths += (flip?-1:1);
LOG( log_group, 3, (" %d", pathChar ) );
@@ -1551,21 +1679,24 @@ LOG( log_group, 3, ( "\n" ) );
DYNARR_RESET(trkSeg_t, outputSegs_da);
- for (int i=0; i<trackSegs_da.cnt;i++) {
+ for (int i=0; i<trackSegs_da.cnt; i++) {
DYNARR_APPEND(trkSeg_t,outputSegs_da,10);
trkSeg_p from_p = &trackSegs(i);
trkSeg_p to_p = &DYNARR_LAST(trkSeg_t, outputSegs_da);
memcpy(to_p,from_p,sizeof( trkSeg_t));
}
- CloneFilledDraw( outputSegs_da.cnt, outputSegs_da.ptr, FALSE );
+ CloneFilledDraw( outputSegs_da.cnt, &outputSegs(0), FALSE );
GetSegBounds( zero, 0, outputSegs_da.cnt, &outputSegs(0), &orig, &size );
- orig.x = - tempEndPts(0).pos.x;
- orig.y = - tempEndPts(0).pos.y;
+ orig.x = - GetEndPtPos(TempEndPt(0)).x;
+ orig.y = - GetEndPtPos(TempEndPt(0)).y;
MoveSegs( outputSegs_da.cnt, &outputSegs(0), orig );
- for ( ep=0; ep<tempEndPts_da.cnt; ep++ ) {
- tempEndPts(ep).pos.x += orig.x;
- tempEndPts(ep).pos.y += orig.y;
+ for ( ep=0; ep<TempEndPtsCount(); ep++ ) {
+ trkEndPt_p epp = TempEndPt(ep);
+ coOrd pos = GetEndPtPos(epp);
+ pos.x += orig.x;
+ pos.y += orig.y;
+ SetEndPt( epp, pos, GetEndPtAngle(epp) );
}
/*
@@ -1573,12 +1704,14 @@ LOG( log_group, 3, ( "\n" ) );
*/
PATHPTR_T pPaths = (PATHPTR_T)&pathPtr(0);
- CheckPaths( outputSegs_da.cnt, &outputSegs(0), pPaths );
+ CheckPaths( outputSegs_da.cnt, &outputSegs(0), pPaths, groupTitle );
long options = 0;
- if ( groupNoCombine != 0 )
+ if ( groupNoCombine != 0 ) {
options |= COMPOUND_OPTION_PATH_NOCOMBINE;
- to = CreateNewTurnout( curScaleName, groupTitle, outputSegs_da.cnt, &outputSegs(0), pPaths, tempEndPts_da.cnt, &tempEndPts(0), TRUE, options );
+ }
+ to = CreateNewTurnout( curScaleName, groupTitle, outputSegs_da.cnt,
+ &outputSegs(0), pPaths, TempEndPtsCount(), TempEndPt(0), TRUE, options );
/*
* 10: Write defn to xtrkcad.cus
@@ -1586,8 +1719,10 @@ LOG( log_group, 3, ( "\n" ) );
f = OpenCustom("a");
if (f && to) {
SetCLocale();
- rc &= fprintf( f, "TURNOUT %s \"%s\" %ld\n", curScaleName, PutTitle(to->title), options )>0;
- rc &= WriteCompoundPathsEndPtsSegs( f, pPaths, outputSegs_da.cnt, &outputSegs(0), tempEndPts_da.cnt, &tempEndPts(0) );
+ rc &= fprintf( f, "TURNOUT %s \"%s\" %ld\n", curScaleName, PutTitle(to->title),
+ options )>0;
+ rc &= WriteCompoundPathsEndPtsSegs( f, pPaths, outputSegs_da.cnt,
+ &outputSegs(0), TempEndPtsCount(), TempEndPt(0) );
SetUserLocale();
}
if ( groupReplace ) {
@@ -1597,17 +1732,21 @@ LOG( log_group, 3, ( "\n" ) );
UndoStart( _("Group Tracks"), "group" );
orig.x = - orig.x;
orig.y = - orig.y;
- for ( ep=0; ep<tempEndPts_da.cnt; ep++ ) {
- endPtP = &tempEndPts(ep);
- if ( endPtP->track ) {
- trk = GetTrkEndTrk( endPtP->track, endPtP->index );
- epN = GetEndPtConnectedToMe( trk, endPtP->track );
- DrawEndPt( &mainD, endPtP->track, endPtP->index, wDrawColorWhite );
+ for ( ep=0; ep<TempEndPtsCount(); ep++ ) {
+ endPtP = TempEndPt(ep);
+ track_p trk1 = GetEndPtTrack(endPtP);
+ if ( trk1 ) {
+ EPINX_T ep1 = GetEndPtEndPt(endPtP);
+ trk = GetTrkEndTrk( trk1, ep1 );
+ epN = GetEndPtConnectedToMe( trk, trk1 );
+ DrawEndPt( &mainD, trk1, ep1, wDrawColorWhite );
DrawEndPt( &mainD, trk, epN, wDrawColorWhite );
- DisconnectTracks( trk, epN, endPtP->track, endPtP->index );
+ DisconnectTracks( trk, epN, trk1, ep1 );
}
- endPtP->pos.x += orig.x;
- endPtP->pos.y += orig.y;
+ coOrd pos = GetEndPtPos(endPtP);
+ pos.x += orig.x;
+ pos.y += orig.y;
+ SetEndPt( endPtP, pos, GetEndPtAngle(endPtP) );
}
trk = NULL;
while ( TrackIterate( &trk ) ) {
@@ -1618,16 +1757,21 @@ LOG( log_group, 3, ( "\n" ) );
}
}
SelectRecount();
- trk = NewCompound( T_TURNOUT, 0, orig, 0.0, to->title, tempEndPts_da.cnt, &tempEndPts(0), pPaths, outputSegs_da.cnt, &outputSegs(0) );
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
+ trk = NewCompound( T_TURNOUT, 0, orig, 0.0, to->title, TempEndPtsCount(),
+ TempEndPt(0), pPaths, outputSegs_da.cnt, &outputSegs(0) );
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
xx->pathOverRide = FALSE;
xx->pathNoCombine = groupNoCombine;
SetTrkVisible( trk, TRUE );
- for ( ep=0; ep<tempEndPts_da.cnt; ep++ ) {
- if ( tempEndPts(ep).track ) {
- ConnectTracks( trk, ep, tempEndPts(ep).track, (EPINX_T)tempEndPts(ep).index );
- DrawEndPt( &mainD, tempEndPts(ep).track, (EPINX_T)tempEndPts(ep).index, GetTrkColor( tempEndPts(ep).track, &mainD ) );
+ for ( ep=0; ep<TempEndPtsCount(); ep++ ) {
+ trkEndPt_p epp = TempEndPt(ep);
+ track_p trk1 = GetEndPtTrack(epp);
+ if ( trk1 ) {
+ EPINX_T ep1 = GetEndPtEndPt(epp);
+ ConnectTracks( trk, ep, trk1, ep1 );
+ DrawEndPt( &mainD, trk1, ep1, GetTrkColor(trk1, &mainD ) );
}
}
DrawNewTrack( trk );
@@ -1640,11 +1784,13 @@ LOG( log_group, 3, ( "\n" ) );
orig.x = - orig.x-groupOriginX; //Include orig offset
orig.y = - orig.y-groupOriginY;
MoveSegs( trackSegs_da.cnt, &trackSegs(0), orig );
- to = CreateNewStructure( curScaleName, groupTitle, trackSegs_da.cnt, &trackSegs(0), TRUE );
+ to = CreateNewStructure( curScaleName, groupTitle, trackSegs_da.cnt,
+ &trackSegs(0), TRUE );
f = OpenCustom("a");
if (f && to) {
SetCLocale();
- rc &= fprintf( f, "STRUCTURE %s \"%s\"\n", curScaleName, PutTitle(groupTitle) )>0;
+ rc &= fprintf( f, "STRUCTURE %s \"%s\"\n", curScaleName,
+ PutTitle(groupTitle) )>0;
rc &= WriteSegs( f, trackSegs_da.cnt, &trackSegs(0) );
SetUserLocale();
}
@@ -1661,13 +1807,14 @@ LOG( log_group, 3, ( "\n" ) );
SelectRecount();
orig.x = - orig.x;
orig.y = - orig.y;
- trk = NewCompound( T_STRUCTURE, 0, orig, 0.0, groupTitle, 0, NULL, NULL, trackSegs_da.cnt, &trackSegs(0) );
+ trk = NewCompound( T_STRUCTURE, 0, orig, 0.0, groupTitle, 0, NULL, NULL,
+ trackSegs_da.cnt, &trackSegs(0) );
SetTrkVisible( trk, TRUE );
DrawNewTrack( trk );
EnableCommands();
}
}
- if (f) fclose(f);
+ if (f) { fclose(f); }
DoChangeNotification( CHANGE_PARAMS );
wHide( groupW );
wDrawDelayUpdate( mainD.d, FALSE );
@@ -1692,15 +1839,18 @@ EXPORT void DoGroup( void * unused )
while ( TrackIterate( &trk ) ) {
if ( GetTrkSelected( trk ) ) {
trkType = GetTrkType(trk);
- if ( IsTrack(trk) ) isTurnout = TRUE;
+ if ( IsTrack(trk) ) { isTurnout = TRUE; }
if ( trkType == T_TURNOUT || trkType == T_STRUCTURE ) {
xx = GET_EXTRA_DATA(trk, trkType, extraDataCompound_t);
groupSegCnt += xx->segCnt;
GroupCopyTitle( xtitle(xx) );
- if ( trkType == T_TURNOUT && GetTrkEndPtCnt(trk) > 2 && xx->pathNoCombine != 0 )
+ if ( trkType == T_TURNOUT && GetTrkEndPtCnt(trk) > 2
+ && xx->pathNoCombine != 0 ) {
groupNoCombine = TRUE;
- } else
+ }
+ } else {
groupSegCnt += 1;
+ }
}
}
if ( groupSegCnt <= 0 ) {
@@ -1708,11 +1858,13 @@ EXPORT void DoGroup( void * unused )
return;
}
sprintf( groupTitle, "%s\t%s\t%s", groupManuf, groupDesc, groupPartno );
- if ( log_group < 0 )
+ if ( log_group < 0 ) {
log_group = LogFindIndex( "group" );
+ }
if ( !groupW ) {
ParamRegister( &groupPG );
- groupW = ParamCreateDialog( &groupPG, MakeWindowTitle(_("Group Objects")), _("Ok"), GroupOk, wHide, TRUE, NULL, F_BLOCK, NULL );
+ groupW = ParamCreateDialog( &groupPG, MakeWindowTitle(_("Group Objects")),
+ _("Ok"), GroupOk, wHide, TRUE, NULL, F_BLOCK, NULL );
groupD.dpi = mainD.dpi;
}
if (isTurnout) {
diff --git a/app/bin/chndldto.c b/app/bin/chndldto.c
index abb6e32..fb7c05f 100644
--- a/app/bin/chndldto.c
+++ b/app/bin/chndldto.c
@@ -18,7 +18,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 "ccurve.h"
@@ -36,17 +36,17 @@
* STATE INFO
*/
static struct {
- STATE_T state;
- coOrd normalP;
- ANGLE_T normalA;
- track_p normalT;
- coOrd reverseP;
- coOrd reverseP1;
- ANGLE_T reverseA;
- DIST_T frogNo;
- ANGLE_T frogA;
- curveData_t curveData;
- } Dhlt;
+ STATE_T state;
+ coOrd normalP;
+ ANGLE_T normalA;
+ track_p normalT;
+ coOrd reverseP;
+ coOrd reverseP1;
+ ANGLE_T reverseA;
+ DIST_T frogNo;
+ ANGLE_T frogA;
+ curveData_t curveData;
+} Dhlt;
static STATUS_T CmdHandLaidTurnout( wAction_t action, coOrd pos )
@@ -55,7 +55,8 @@ static STATUS_T CmdHandLaidTurnout( wAction_t action, coOrd pos )
EPINX_T ep, ep1, ep2, ep2a=-1, ep2b=-1, pointEp0, pointEp1;
DIST_T dist, reverseD, pointD;
coOrd off, intersectP;
- coOrd pointP, pointC, pointP1, reverseC, point0;
+ coOrd pointP, pointP1, reverseC, point0;
+// coOrd pointC;
track_p trk, trk1, trk2, trk2a=NULL, trk2b=NULL, pointT;
trkSeg_p segP;
BOOL_T right;
@@ -68,18 +69,18 @@ static STATUS_T CmdHandLaidTurnout( wAction_t action, coOrd pos )
DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
Dhlt.state = 0;
Dhlt.normalT = NULL;
- tempSegs_da.cnt = 0;
DYNARR_SET( trkSeg_t, tempSegs_da, 2 );
tempSegs(0).color = drawColorBlack;
- tempSegs(0).width = 0;
+ tempSegs(0).lineWidth = 0;
tempSegs(1).color = drawColorBlack;
- tempSegs(1).width = 0;
+ tempSegs(1).lineWidth = 0;
return C_CONTINUE;
case C_DOWN:
if (Dhlt.state == 0) {
- if ((Dhlt.normalT = OnTrack( &pos, TRUE, TRUE )) == NULL)
+ if ((Dhlt.normalT = OnTrack( &pos, TRUE, TRUE )) == NULL) {
break;
+ }
if ( QueryTrack( Dhlt.normalT, Q_NOT_PLACE_FROGPOINTS ) ) {
ErrorMessage( MSG_CANT_PLACE_FROGPOINTS, _("frog") );
Dhlt.normalT = NULL;
@@ -89,19 +90,20 @@ static STATUS_T CmdHandLaidTurnout( wAction_t action, coOrd pos )
Dhlt.normalA = GetAngleAtPoint( Dhlt.normalT, Dhlt.normalP, NULL, NULL );
InfoMessage( _("Drag to set angle") );
Dhlt.state = 1;
- pointC = pointP = pointP1 = reverseC = zero;
+// pointC = pointP = pointP1 = reverseC = zero;
return C_CONTINUE;
}
case C_MOVE:
case C_UP:
- if (Dhlt.normalT == NULL)
+ if (Dhlt.normalT == NULL) {
break;
+ }
if (Dhlt.state == 1) {
Dhlt.reverseP1 = pos;
Dhlt.reverseA = FindAngle( Dhlt.reverseP, Dhlt.reverseP1 );
Dhlt.frogA = NormalizeAngle( Dhlt.reverseA - Dhlt.normalA );
-/*printf( "RA=%0.3f FA=%0.3f ", Dhlt.reverseA, Dhlt.frogA );*/
+ /*printf( "RA=%0.3f FA=%0.3f ", Dhlt.reverseA, Dhlt.frogA );*/
if (Dhlt.frogA > 270.0) {
Dhlt.frogA = 360.0-Dhlt.frogA;
right = FALSE;
@@ -118,12 +120,13 @@ static STATUS_T CmdHandLaidTurnout( wAction_t action, coOrd pos )
} else {
right = TRUE;
}
-/*printf( "NA=%0.3f FA=%0.3f R=%d\n", Dhlt.normalA, Dhlt.frogA, right );*/
+ /*printf( "NA=%0.3f FA=%0.3f R=%d\n", Dhlt.normalA, Dhlt.frogA, right );*/
Dhlt.frogNo = tan(D2R(Dhlt.frogA));
- if (Dhlt.frogNo > 0.01)
+ if (Dhlt.frogNo > 0.01) {
Dhlt.frogNo = 1.0/Dhlt.frogNo;
- else
+ } else {
Dhlt.frogNo = 0.0;
+ }
if (action == C_MOVE) {
if (Dhlt.frogNo != 0) {
InfoMessage( _("Angle = %0.2f Frog# = %0.2f"), Dhlt.frogA, Dhlt.frogNo );
@@ -133,15 +136,18 @@ static STATUS_T CmdHandLaidTurnout( wAction_t action, coOrd pos )
} else {
InfoMessage( _("Select point position") );
Dhlt.state = 2;
- Translate( &Dhlt.reverseP, Dhlt.reverseP, Dhlt.normalA+(right?+90:-90), trackGauge );
- Translate( &Dhlt.reverseP1, Dhlt.reverseP1, Dhlt.normalA+(right?+90:-90), trackGauge );
+ Translate( &Dhlt.reverseP, Dhlt.reverseP, Dhlt.normalA+(right?+90:-90),
+ trackGauge );
+ Translate( &Dhlt.reverseP1, Dhlt.reverseP1, Dhlt.normalA+(right?+90:-90),
+ trackGauge );
}
return C_CONTINUE;
} else if ( Dhlt.state == 2 ) {
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
pointP = pos;
- if ((pointT = OnTrack( &pointP, TRUE, TRUE )) == NULL)
+ if ((pointT = OnTrack( &pointP, TRUE, TRUE )) == NULL) {
break;
+ }
if ( QueryTrack( pointT, Q_NOT_PLACE_FROGPOINTS ) ) {
ErrorMessage( MSG_CANT_PLACE_FROGPOINTS, _("points") );
break;
@@ -149,11 +155,11 @@ static STATUS_T CmdHandLaidTurnout( wAction_t action, coOrd pos )
dist = FindDistance( Dhlt.normalP, pointP );
pointA = GetAngleAtPoint( pointT, pointP, &pointEp0, &pointEp1 );
angle = NormalizeAngle( pointA + 180.0 - Dhlt.reverseA );
-PTRACE(( "rA=%0.1f pA=%0.1f a=%0.1f ", Dhlt.reverseA, pointA, angle ))
+ PTRACE(( "rA=%0.1f pA=%0.1f a=%0.1f ", Dhlt.reverseA, pointA, angle ))
if ( angle > 90.0 && angle < 270.0 ) {
pointA = NormalizeAngle( pointA + 180.0 );
angle = NormalizeAngle( angle + 180.0 );
-PTRACE(( " {pA=%0.1f a=%0.1f} ", pointA, angle ))
+ PTRACE(( " {pA=%0.1f a=%0.1f} ", pointA, angle ))
} else {
ep = pointEp0; pointEp0 = pointEp1; pointEp1 = ep;
}
@@ -163,10 +169,11 @@ PTRACE(( " {pA=%0.1f a=%0.1f} ", pointA, angle ))
} else {
right = FALSE;
}
-PTRACE(( "r=%c a=%0.1f ", right?'T':'F', angle ))
+ PTRACE(( "r=%c a=%0.1f ", right?'T':'F', angle ))
Translate( &off, pointP, pointA+180.0, trackGauge*2.0 );
- if ((trk = OnTrack( &off, TRUE, TRUE )) == NULL)
+ if ((trk = OnTrack( &off, TRUE, TRUE )) == NULL) {
break;
+ }
if ( QueryTrack( trk, Q_NOT_PLACE_FROGPOINTS ) ) {
ErrorMessage( MSG_CANT_PLACE_FROGPOINTS, _("points") );
break;
@@ -175,23 +182,25 @@ PTRACE(( "r=%c a=%0.1f ", right?'T':'F', angle ))
Rotate( &off, Dhlt.reverseP, 180-Dhlt.reverseA );
off.x -= Dhlt.reverseP.x;
off.y -= Dhlt.reverseP.y;
- if (right)
+ if (right) {
off.x = -off.x;
-PTRACE(( "off=[%0.3f %0.3f] ", off.x, off.y ))
+ }
+ PTRACE(( "off=[%0.3f %0.3f] ", off.x, off.y ))
if (off.y < 0) {
ErrorMessage( MSG_MOVE_POINTS_OTHER_SIDE );
-PTRACE(("\n"))
+ PTRACE(("\n"))
break;
}
if (off.x < 0) {
ErrorMessage( MSG_MOVE_POINTS_AWAY_CLOSE );
-PTRACE(("\n"))
+ PTRACE(("\n"))
break;
}
angle2 = FindAngle( zero, off );
-PTRACE(( "a2=%0.1f\n", angle2 ))
+ PTRACE(( "a2=%0.1f\n", angle2 ))
if (angle < 0.5) {
if ( off.x < connectDistance ) {
+ DYNARR_SET( trkSeg_t, tempSegs_da, 2 );
tempSegs(0).type = SEG_STRTRK;
tempSegs(0).color = wDrawColorBlack;
tempSegs(0).u.l.pos[0] = pointP;
@@ -200,23 +209,25 @@ PTRACE(( "a2=%0.1f\n", angle2 ))
tempSegs(1).color = wDrawColorBlack;
tempSegs(1).u.l.pos[0] = Dhlt.reverseP;
Translate( &tempSegs(1).u.l.pos[1], Dhlt.reverseP, Dhlt.reverseA, trackGauge );
- tempSegs_da.cnt = 2;
} else {
- ErrorMessage( MSG_MOVE_POINTS_AWAY_NO_INTERSECTION );
- break;
+ ErrorMessage( MSG_MOVE_POINTS_AWAY_NO_INTERSECTION );
+ break;
}
} else if (angle < angle2) {
ErrorMessage( MSG_MOVE_POINTS_AWAY_NO_INTERSECTION );
break;
} else {
- if (!FindIntersection( &intersectP, Dhlt.reverseP, Dhlt.reverseA+180.0, pointP, pointA+180.0 ))
+ if (!FindIntersection( &intersectP, Dhlt.reverseP, Dhlt.reverseA+180.0, pointP,
+ pointA+180.0 )) {
break;
+ }
reverseD = FindDistance( Dhlt.reverseP, intersectP );
pointD = FindDistance( pointP, intersectP );
if (reverseD > pointD) {
reverseR = pointD/tan(D2R(angle/2.0));
Translate( &reverseC, pointP, pointA+(right?-90:+90), reverseR );
-PTRACE(( "rR=%0.3f rC=[%0.3f %0.3f]\n", reverseR, reverseC.x, reverseC.y ))
+ PTRACE(( "rR=%0.3f rC=[%0.3f %0.3f]\n", reverseR, reverseC.x, reverseC.y ))
+ DYNARR_SET( trkSeg_t, tempSegs_da, 3 );
tempSegs(0).type = SEG_CRVTRK;
tempSegs(0).color = wDrawColorBlack;
tempSegs(0).u.c.center = reverseC;
@@ -225,13 +236,13 @@ PTRACE(( "rR=%0.3f rC=[%0.3f %0.3f]\n", reverseR, reverseC.x, reverseC.y ))
tempSegs(0).u.c.a1 = angle;
tempSegs(1).type = SEG_STRTRK;
tempSegs(1).color = wDrawColorBlack;
- PointOnCircle( &tempSegs(1).u.l.pos[0], reverseC, reverseR, tempSegs(0).u.c.a0 + (right?angle:0.0) );
+ PointOnCircle( &tempSegs(1).u.l.pos[0], reverseC, reverseR,
+ tempSegs(0).u.c.a0 + (right?angle:0.0) );
tempSegs(1).u.l.pos[1] = Dhlt.reverseP;
tempSegs(2).type = SEG_STRTRK;
tempSegs(2).color = wDrawColorBlack;
tempSegs(2).u.l.pos[0] = Dhlt.reverseP;
Translate( &tempSegs(2).u.l.pos[1], Dhlt.reverseP, Dhlt.reverseA, trackGauge );
- tempSegs_da.cnt = 3;
} else {
reverseR = reverseD/tan(D2R(angle/2.0));
reverseR *= sqrt(reverseD/pointD);
@@ -240,17 +251,21 @@ PTRACE(( "rR=%0.3f rC=[%0.3f %0.3f]\n", reverseR, reverseC.x, reverseC.y ))
dist = FindDistance( reverseC, pointP );
angle2 = R2D( asin( reverseR/dist ) );
angle3 = FindAngle( pointP, reverseC );
- if (right)
+ if (right) {
angle2 = NormalizeAngle(angle3 - pointA+180) - angle2;
- else
+ } else {
angle2 = NormalizeAngle(pointA+180 - angle3) - angle2;
+ }
reverseA1 = angle-angle2;
-PTRACE(( " a2=%0.1f rA1=%0.1f\n", angle2, reverseA1 ))
+ PTRACE(( " a2=%0.1f rA1=%0.1f\n", angle2, reverseA1 ))
+ DYNARR_SET( trkSeg_t, tempSegs_da, 3 );
tempSegs(0).type = SEG_STRTRK;
tempSegs(0).color = wDrawColorBlack;
tempSegs(0).u.l.pos[0] = pointP;
- tempSegs(1).u.c.a0 = NormalizeAngle(Dhlt.reverseA + (right?(-90.0-reverseA1):+90.0));
- PointOnCircle( &tempSegs(0).u.l.pos[1], reverseC, reverseR, tempSegs(1).u.c.a0 + (right?0.0:reverseA1) );
+ tempSegs(1).u.c.a0 = NormalizeAngle(Dhlt.reverseA + (right?
+ (-90.0-reverseA1):+90.0));
+ PointOnCircle( &tempSegs(0).u.l.pos[1], reverseC, reverseR,
+ tempSegs(1).u.c.a0 + (right?0.0:reverseA1) );
tempSegs(1).type = SEG_CRVTRK;
tempSegs(1).color = wDrawColorBlack;
tempSegs(1).u.c.center = reverseC;
@@ -260,26 +275,29 @@ PTRACE(( " a2=%0.1f rA1=%0.1f\n", angle2, reverseA1 ))
tempSegs(2).color = wDrawColorBlack;
tempSegs(2).u.l.pos[0] = Dhlt.reverseP;
Translate( &tempSegs(2).u.l.pos[1], Dhlt.reverseP, Dhlt.reverseA, trackGauge );
- tempSegs_da.cnt = 3;
}
}
if (action != C_UP) {
dist = FindDistance( pointP, Dhlt.normalP );
- InfoMessage( _("Length = %0.2f Angle = %0.2f Frog# = %0.2f"), dist, Dhlt.frogA, Dhlt.frogNo );
+ InfoMessage( _("Length = %0.2f Angle = %0.2f Frog# = %0.2f"), dist, Dhlt.frogA,
+ Dhlt.frogNo );
return C_CONTINUE;
}
- UndoStart( _("Create Hand Laid Turnout"), "Hndldto( T%d[%d] )", GetTrkIndex(pointT), pointEp0 );
+ UndoStart( _("Create Hand Laid Turnout"), "Hndldto( T%d[%d] )",
+ GetTrkIndex(pointT), pointEp0 );
UndoModify( pointT );
- if (!SplitTrack( pointT, pointP, pointEp0, &trk1, TRUE ))
+ if (!SplitTrack( pointT, pointP, pointEp0, &trk1, TRUE )) {
break;
+ }
dist = trackGauge*2.0;
if ( !trk1 ) {
trk1 = pointT;
pointT = NULL;
}
ep1 = PickEndPoint( pointP, trk1 );
- if (!RemoveTrack( &trk1, &ep1, &dist ))
+ if (!RemoveTrack( &trk1, &ep1, &dist )) {
break;
+ }
point0 = GetTrkEndPos( trk1, ep1 );
angle0 = NormalizeAngle(GetTrkEndAngle(trk1,ep1)+180.0);
trk2 = NULL;
@@ -291,7 +309,8 @@ PTRACE(( " a2=%0.1f rA1=%0.1f\n", angle2, reverseA1 ))
ep2b = 0;
break;
case SEG_CRVTRK:
- trk2b = NewCurvedTrack( segP->u.c.center, fabs(segP->u.c.radius), segP->u.c.a0, segP->u.c.a1, 0 );
+ trk2b = NewCurvedTrack( segP->u.c.center, fabs(segP->u.c.radius), segP->u.c.a0,
+ segP->u.c.a1, 0 );
ep2b = (right?0:1);
}
if (trk2 == NULL) {
@@ -305,11 +324,13 @@ PTRACE(( " a2=%0.1f rA1=%0.1f\n", angle2, reverseA1 ))
}
*trkpp = NULL;
dist = trackGauge*2.0;
- if (!RemoveTrack( &trk2, &ep2, &dist ))
+ if (!RemoveTrack( &trk2, &ep2, &dist )) {
break;
+ }
trk = NewHandLaidTurnout( pointP, pointA,
- point0, angle0,
- GetTrkEndPos(trk2,ep2), NormalizeAngle(GetTrkEndAngle(trk2,ep2)+180.0), Dhlt.frogA );
+ point0, angle0,
+ GetTrkEndPos(trk2,ep2), NormalizeAngle(GetTrkEndAngle(trk2,ep2)+180.0),
+ Dhlt.frogA );
DrawEndPt( &mainD, trk1, ep1, wDrawColorWhite );
if ( pointT ) {
DrawEndPt( &mainD, pointT, pointEp0, wDrawColorWhite );
@@ -324,18 +345,22 @@ PTRACE(( " a2=%0.1f rA1=%0.1f\n", angle2, reverseA1 ))
DrawTrack( pointT, &mainD, wDrawColorBlack );
}
DrawTrack( trk, &mainD, wDrawColorBlack );
- for (trkpp=trks; *trkpp; trkpp++)
+ for (trkpp=trks; *trkpp; trkpp++) {
DrawTrack( *trkpp, &mainD, wDrawColorBlack );
-
+ }
+
Dhlt.state = 0;
return C_TERMINATE;
}
case C_REDRAW:
- if (Dhlt.state >= 1)
+ if (Dhlt.state >= 1) {
DrawLine( &tempD, Dhlt.reverseP, Dhlt.reverseP1, 0, wDrawColorBlack );
- if (Dhlt.state >= 2)
- DrawSegs( &tempD, zero, 0.0, &tempSegs(0), tempSegs_da.cnt, trackGauge, wDrawColorBlack );
+ }
+ if (Dhlt.state >= 2) {
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &tempSegs_da, trackGauge, wDrawColorBlack,
+ 0 );
+ }
return C_CONTINUE;
case C_CANCEL:
@@ -348,9 +373,11 @@ PTRACE(( " a2=%0.1f rA1=%0.1f\n", angle2, reverseA1 ))
}
-#include "bitmaps/turnout-designer.xpm"
+#include "bitmaps/turnout-design.xpm3"
EXPORT void InitCmdHandLaidTurnout( wMenu_p menu )
{
- AddMenuButton( menu, CmdHandLaidTurnout, "cmdHandLaidTurnout", _("HandLaidTurnout"), wIconCreatePixMap(turnout_designer_xpm[iconSize]), LEVEL0_50, IC_STICKY|IC_INITNOTSTICKY|IC_POPUP2, ACCL_HNDLDTO, NULL );
+ AddMenuButton( menu, CmdHandLaidTurnout, "cmdHandLaidTurnout",
+ _("HandLaidTurnout"), wIconCreatePixMap(turnout_design_xpm3[iconSize]),
+ LEVEL0_50, IC_STICKY|IC_INITNOTSTICKY|IC_POPUP2, ACCL_HNDLDTO, NULL );
}
diff --git a/app/bin/chotbar.c b/app/bin/chotbar.c
index 379f31a..a0e6332 100644
--- a/app/bin/chotbar.c
+++ b/app/bin/chotbar.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 "compound.h"
@@ -41,27 +41,28 @@ static wMenu_p hotbarPopupM;
static wMenuList_p hotBarML = NULL;
static wIndex_t hotBarMLcnt = 0;
static drawCmd_t hotBarD = {
- NULL,
- &screenDrawFuncs,
- 0,
- 1.0,
- 0.0,
- {0.0, 0.0}, {0.0, 0.0},
- Pix2CoOrd, CoOrd2Pix };
+ NULL,
+ &screenDrawFuncs,
+ 0,
+ 1.0,
+ 0.0,
+ {0.0, 0.0}, {0.0, 0.0},
+ Pix2CoOrd, CoOrd2Pix
+};
static wWinPix_t hotBarDrawHeight[] = {26, 32, 40};
-static wFontSize_t hotBarFontSize[] = {7, 8, 9};
+static wFontSize_t hotBarFontSize[] = {7, 11, 14};
typedef struct {
- DIST_T x;
- DIST_T w;
- DIST_T objectW;
- DIST_T labelW;
- coOrd size;
- coOrd orig;
- BOOL_T isFixed;
- void * context;
- hotBarProc_t proc;
- DIST_T barScale;
- } hotBarMap_t;
+ DIST_T x;
+ DIST_T w;
+ DIST_T objectW;
+ DIST_T labelW;
+ coOrd size;
+ coOrd orig;
+ BOOL_T isFixed;
+ void * context;
+ hotBarProc_t proc;
+ DIST_T barScale;
+} hotBarMap_t;
static dynArr_t hotBarMap_da;
#define hotBarMap(N) DYNARR_N( hotBarMap_t, hotBarMap_da, N )
static int hotBarCurrSelects[2] = { -1, -1 };
@@ -74,23 +75,25 @@ static DIST_T hotBarWidth = 0.0;
static void HotBarHighlight( int inx, DIST_T fixed_x )
{
- if ( inx > 0 && ( inx < hotBarCurrStart || inx >= hotBarCurrEnd ) )
+ if ( inx > 0 && ( inx < hotBarCurrStart || inx >= hotBarCurrEnd ) ) {
return;
+ }
coOrd orig, size;
hotBarD.scale = 1;
- if ( inx == 0 && hotBarMap_da.cnt>0 && hotBarMap(0).isFixed)
+ if ( inx == 0 && hotBarMap_da.cnt>0 && hotBarMap(0).isFixed) {
orig.x = 0;
- else
+ } else {
orig.x = hotBarMap(inx).x-hotBarMap(hotBarCurrStart).x + (inx>0?fixed_x:0);
+ }
orig.y = 0;
size.x = hotBarMap(inx).w - 2.0/hotBarD.dpi;
size.y = toolbarHeight;
#ifdef LATER
printf( "HotBarHilite fixed_x:%0.3f X0:%d/%0.3f X:%d/%0.3f+%0.3f X=%0.3f\n",
- fixed_x,
- hotBarCurrStart, hotBarMap(hotBarCurrStart).x,
- inx, hotBarMap(inx).x, hotBarMap(inx).w,
- orig.x );
+ fixed_x,
+ hotBarCurrStart, hotBarMap(hotBarCurrStart).x,
+ inx, hotBarMap(inx).x, hotBarMap(inx).w,
+ orig.x );
#endif
DrawRectangle( &hotBarD, orig, size, wDrawColorBlack, DRAW_TRANSPARENT );
}
@@ -106,15 +109,18 @@ static void RedrawHotBar( wDraw_p dd, void * data, wWinPix_t w, wWinPix_t h )
coOrd orig;
int inx;
hotBarMap_t * tbm;
- DIST_T barHeight = (DIST_T)(wControlGetHeight( (wControl_p)hotBarD.d ) - 2)/hotBarD.dpi;
- DIST_T barWidth = (DIST_T)(wControlGetWidth( (wControl_p)hotBarD.d ) - 2)/hotBarD.dpi;
+ DIST_T barHeight = (DIST_T)(wControlGetHeight( (wControl_p)hotBarD.d ) -
+ 2)/hotBarD.dpi;
+ DIST_T barWidth = (DIST_T)(wControlGetWidth( (wControl_p)hotBarD.d ) -
+ 2)/hotBarD.dpi;
+
DIST_T barScale;
DIST_T x;
wDrawClear( hotBarD.d );
- if (hotBarCurrStart >0)
+ if (hotBarCurrStart >0) {
wControlActive( (wControl_p)hotBarLeftB, TRUE );
- else {
+ } else {
wButtonSetBusy(hotBarLeftB, FALSE);
wControlActive( (wControl_p)hotBarLeftB, FALSE );
}
@@ -124,11 +130,13 @@ static void RedrawHotBar( wDraw_p dd, void * data, wWinPix_t w, wWinPix_t h )
wControlActive( (wControl_p)hotBarRightB, FALSE );
return;
}
- if ( hotBarLabels && !hotBarFp )
+ if ( hotBarLabels && !hotBarFp ) {
hotBarFp = wStandardFont( F_HELV, FALSE, FALSE );
+ }
DIST_T fixed_x = 0.0;
- if (hotBarCurrStart>0 && hotBarMap_da.cnt>0 && hotBarMap(0).isFixed) { //Do fixed element first - Cornu
+ if (hotBarCurrStart>0 && hotBarMap_da.cnt>0
+ && hotBarMap(0).isFixed) { //Do fixed element first - Cornu
tbm = &hotBarMap(0);
barScale = tbm->barScale;
x = 0.0;
@@ -138,8 +146,8 @@ static void RedrawHotBar( wDraw_p dd, void * data, wWinPix_t w, wWinPix_t h )
if ( tbm->labelW > tbm->objectW ) {
fixed_x = tbm->labelW;
x += (tbm->labelW-tbm->objectW)/2;
- } else fixed_x = tbm->objectW;
- } else fixed_x = tbm->objectW;
+ } else { fixed_x = tbm->objectW; }
+ } else { fixed_x = tbm->objectW; }
x *= barScale;
orig.x = x;
hotBarD.scale = barScale;
@@ -150,7 +158,8 @@ static void RedrawHotBar( wDraw_p dd, void * data, wWinPix_t w, wWinPix_t h )
hotBarD.scale = 1.0;
orig.x = 0.0;
orig.y = 2.0/hotBarD.dpi; //Draw Label under icon
- DrawString( &hotBarD, orig, 0.0, tbm->proc( HB_BARTITLE, tbm->context, NULL, NULL ), hotBarFp, hotBarFs, drawColorBlack );
+ DrawString( &hotBarD, orig, 0.0, tbm->proc( HB_BARTITLE, tbm->context, NULL,
+ NULL ), hotBarFp, hotBarFs, drawColorBlack );
}
}
@@ -179,18 +188,21 @@ static void RedrawHotBar( wDraw_p dd, void * data, wWinPix_t w, wWinPix_t h )
hotBarD.scale = 1.0;
orig.x = tbm->x - hotBarMap(hotBarCurrStart).x + fixed_x;
orig.y = 2.0/hotBarD.dpi; //Draw Label under icon
- DrawString( &hotBarD, orig, 0.0, tbm->proc( HB_BARTITLE, tbm->context, NULL, NULL ), hotBarFp, hotBarFs, drawColorBlack );
+ DrawString( &hotBarD, orig, 0.0, tbm->proc( HB_BARTITLE, tbm->context, NULL,
+ NULL ), hotBarFp, hotBarFs, drawColorBlack );
}
}
hotBarCurrEnd = inx;
if ((hotBarCurrSelect==0 && hotBarMap_da.cnt>0 && hotBarMap(0).isFixed) ||
- ((hotBarCurrSelect >= hotBarCurrStart) && (hotBarCurrSelect < hotBarCurrEnd)) )
+ ((hotBarCurrSelect >= hotBarCurrStart)
+ && (hotBarCurrSelect < hotBarCurrEnd)) ) {
HotBarHighlight( hotBarCurrSelect, fixed_x );
-/* else
- hotBarCurrSelect = -1;*/
- if (hotBarCurrEnd < hotBarMap_da.cnt)
+ }
+ /* else
+ hotBarCurrSelect = -1;*/
+ if (hotBarCurrEnd < hotBarMap_da.cnt) {
wControlActive( (wControl_p)hotBarRightB, TRUE );
- else {
+ } else {
wButtonSetBusy(hotBarRightB, FALSE);
wControlActive( (wControl_p)hotBarRightB, FALSE );
}
@@ -200,22 +212,26 @@ static void RedrawHotBar( wDraw_p dd, void * data, wWinPix_t w, wWinPix_t h )
static void DoHotBarRight( void * data )
{
- DIST_T barWidth = ((DIST_T)wControlGetWidth( (wControl_p)hotBarD.d ) - 2.0)/hotBarD.dpi;
+ DIST_T barWidth = ((DIST_T)wControlGetWidth( (wControl_p)hotBarD.d ) -
+ 2.0)/hotBarD.dpi;
int inx = hotBarCurrStart;
- DIST_T lastX = hotBarMap(hotBarMap_da.cnt-1).x + hotBarMap(hotBarMap_da.cnt-1).w + 2.0/hotBarD.dpi;
+ DIST_T lastX = hotBarMap(hotBarMap_da.cnt-1).x + hotBarMap(
+ hotBarMap_da.cnt-1).w + 2.0/hotBarD.dpi;
if (MyGetKeyState()&WKEY_SHIFT) {
inx += hotBarMap_da.cnt/8;
} else {
inx++;
}
- if ( inx >= hotBarMap_da.cnt )
+ if ( inx >= hotBarMap_da.cnt ) {
inx = hotBarMap_da.cnt-1;
+ }
DIST_T fixed_x = 0.0;
if (hotBarCurrStart>0 && hotBarMap(0).isFixed) {
fixed_x = hotBarMap(0).w;
}
- while ( (inx > 1) && ((lastX - hotBarMap(inx-1).x) < (barWidth - fixed_x)) )
- inx--;
+ while ( (inx > 1) && ((lastX - hotBarMap(inx-1).x) < (barWidth - fixed_x)) ) {
+ inx--;
+ }
if ( inx != hotBarCurrStart ) {
hotBarCurrStart = inx;
RedrawHotBar( hotBarD.d, NULL, 0, 0 );
@@ -231,8 +247,9 @@ static void DoHotBarLeft( void * data )
} else {
inx --;
}
- if ( inx < 0 )
+ if ( inx < 0 ) {
inx = 0;
+ }
if ( inx != hotBarCurrStart ) {
hotBarCurrStart = inx;
RedrawHotBar( hotBarD.d, NULL, 0, 0 );
@@ -245,17 +262,20 @@ static void DoHotBarJump( int inx )
DIST_T x, barWidth;
inx -= '0';
- if (inx < 0 || inx > 9)
+ if (inx < 0 || inx > 9) {
return;
- if (inx == 0)
+ }
+ if (inx == 0) {
inx = 9;
- else
+ } else {
inx--;
+ }
barWidth = (DIST_T)wControlGetWidth( (wControl_p)hotBarD.d )/hotBarD.dpi;
x = (inx*(hotBarWidth-barWidth))/9.0;
for ( inx=0; inx<hotBarMap_da.cnt; inx++ ) {
- if (x <= hotBarMap(inx).x)
+ if (x <= hotBarMap(inx).x) {
break;
+ }
}
if ( hotBarCurrStart != inx ) {
hotBarCurrStart = inx;
@@ -264,21 +284,35 @@ static void DoHotBarJump( int inx )
}
-static void SelectHotBar( wDraw_p d, void * context, wAction_t action, wDrawPix_t w, wDrawPix_t h )
+static void SelectHotBar( wDraw_p d, void * context, wAction_t action,
+ wDrawPix_t w, wDrawPix_t h )
{
int inx;
- coOrd pos;
+// coOrd pos;
DIST_T x;
wWinPix_t px;
hotBarMap_t * tbm;
char * titleP;
- if ( hotBarMap_da.cnt <= 0 )
+ if ( hotBarMap_da.cnt <= 0 ) {
return;
+ }
#if 0
- if ( !CommandEnabled( hotBarCmdInx ) )
+ if ( !CommandEnabled( hotBarCmdInx ) ) {
return;
+ }
#endif
+
+ if ( ( action & 0xff ) == wActionText ) {
+ int key = (int)(action >> 8);
+ if ( key >= '0' && key <= '9') {
+ DoHotBarJump( key );
+ } else if ( key == 0x1B ) {
+ ConfirmReset( FALSE );
+ }
+ return;
+ }
+
if ( (action&0xFF) == wActionRUp ) {
wMenuPopupShow( hotbarPopupM );
return;
@@ -290,20 +324,21 @@ static void SelectHotBar( wDraw_p d, void * context, wAction_t action, wDrawPix_
fixed_x = hotBarMap(0).w;
x = w/hotBarD.dpi + hotBarMap(0).x;
if ( (x>= hotBarMap(0).x) &&
- (x <=hotBarMap(0).w )) inx = 0; //Match on fixed
+ (x <=hotBarMap(0).w )) { inx = 0; } //Match on fixed
}
- if (inx<0){ //NoMatch
+ if (inx<0) { //NoMatch
x = w/hotBarD.dpi + hotBarMap(hotBarCurrStart).x;
for ( inx=hotBarCurrStart; inx<hotBarCurrEnd; inx++ ) {
if ((x >= hotBarMap(inx).x + fixed_x) && //leave spaces between buttons
- (x <= hotBarMap(inx).x + hotBarMap(inx).w + fixed_x )) {
- break;
+ (x <= hotBarMap(inx).x + hotBarMap(inx).w + fixed_x )) {
+ break;
}
}
}
- if (inx >= hotBarCurrEnd)
+ if (inx >= hotBarCurrEnd) {
return;
+ }
tbm = &hotBarMap(inx);
if (inx==0) {
px = (wWinPix_t)((tbm->x-hotBarMap(0).x)*hotBarD.dpi);
@@ -316,8 +351,8 @@ static void SelectHotBar( wDraw_p d, void * context, wAction_t action, wDrawPix_
wControlSetBalloon( (wControl_p)hotBarD.d, px, -20, titleP );
switch (action & 0xff) {
case wActionLDown:
- pos.x = mainD.size.x+mainD.orig.x;
- pos.y = mainD.size.y+mainD.orig.y;
+// pos.x = mainD.size.x+mainD.orig.x;
+// pos.y = mainD.size.y+mainD.orig.y;
if ( hotBarCurrSelect >= 0 ) {
//HotBarHighlight( hotBarCurrSelect );
hotBarCurrSelect = -1;
@@ -328,7 +363,8 @@ static void SelectHotBar( wDraw_p d, void * context, wAction_t action, wDrawPix_
hotBarCurrSelect = inx;
HotBarHighlight( hotBarCurrSelect, fixed_x );
if (recordF) {
- fprintf( recordF, "HOTBARSELECT %s\n", tbm->proc( HB_FULLTITLE, tbm->context, NULL, NULL ) );
+ fprintf( recordF, "HOTBARSELECT %s\n", tbm->proc( HB_FULLTITLE, tbm->context,
+ NULL, NULL ) );
}
FakeDownMouseState();
break;
@@ -348,25 +384,6 @@ static void SelectHotBar( wDraw_p d, void * context, wAction_t action, wDrawPix_
break;
}
break;
- case wActionText:
- switch (action >> 8) {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- DoHotBarJump( action >> 8 );
- break;
- case 0x1B:
- ConfirmReset(FALSE);
- break;
- }
- break;
}
}
@@ -375,34 +392,32 @@ EXPORT void HotBarCancel( void )
{
if ( hotBarCurrSelect >= 0 )
//HotBarHighlight( hotBarCurrSelect );
- hotBarCurrSelect = -1;
+ {
+ hotBarCurrSelect = -1;
+ }
RedrawHotBar(hotBarD.d, NULL, 0, 0 );
}
static BOOL_T HotBarSelectPlayback( char * line )
{
- int inx;
- hotBarMap_t * tbm;
- while (*line && isspace((unsigned char)*line) ) line++;
- DIST_T fixed_x = 0;
- for ( inx=0; inx<hotBarMap_da.cnt; inx++ ) {
- tbm = &hotBarMap(inx);
- if (inx == 0 && hotBarMap_da.cnt>0 && hotBarMap(0).isFixed) {
- fixed_x = hotBarMap(0).w;
- }
+ while (*line && isspace((unsigned char)*line) ) { line++; }
+ for ( int inx=0; inx<hotBarMap_da.cnt; inx++ ) {
+ hotBarMap_t * tbm = &hotBarMap(inx);
if ( strcmp( tbm->proc( HB_FULLTITLE, tbm->context, NULL, NULL ), line) == 0) {
- if ( hotBarCurrSelect >= 0 ) {
- //HotBarHighlight( hotBarCurrSelect );
- RedrawHotBar(hotBarD.d, NULL, 0, 0 );
- }
+ tbm->proc( HB_SELECT, hotBarMap(inx).context, NULL, NULL );
hotBarCurrSelect = inx;
if ( hotBarCurrSelect < hotBarCurrStart || hotBarCurrSelect > hotBarCurrEnd ) {
+ // Shift the hotbar so the selected object is visible
hotBarCurrStart = hotBarCurrSelect;
RedrawHotBar( hotBarD.d, NULL, 0, 0 );
}
+ DIST_T fixed_x = 0.0;
+ if ( inx > 0 && hotBarCurrStart > 0 && hotBarMap(0).isFixed ) {
+ // Leave room for Flex object
+ fixed_x = hotBarMap(0).w;
+ }
HotBarHighlight( hotBarCurrSelect, fixed_x );
- hotBarMap(inx).proc( HB_SELECT, hotBarMap(inx).context, NULL, NULL );
FakeDownMouseState();
return TRUE;
}
@@ -427,58 +442,64 @@ static BOOL_T SetHotBarScale( char * line )
static char curContentsLabel[STR_SHORT_SIZE];
EXPORT void AddHotBarElement(
- char * contentsLabel,
- coOrd size,
- coOrd orig,
- BOOL_T isTrack,
- BOOL_T isFixed,
- DIST_T barScale,
- void * context,
- hotBarProc_t proc_p )
+ char * contentsLabel,
+ coOrd size,
+ coOrd orig,
+ BOOL_T isTrack,
+ BOOL_T isFixed,
+ DIST_T barScale,
+ void * context,
+ hotBarProc_t proc_p )
{
hotBarMap_t * tbm;
coOrd textsize;
- if ( contentsLabel && strncmp(contentsLabel, curContentsLabel, sizeof curContentsLabel) != 0 && !isFixed ) {
- wMenuListAdd( hotBarML, hotBarMLcnt++, contentsLabel, I2VP(hotBarMap_da.cnt) );
- strncpy( curContentsLabel, contentsLabel, sizeof curContentsLabel );
- }
- if (barScale <= 0) {
- if (!isTrack)
- barScale = size.y/(((double)hotBarHeight-2.0)/hotBarD.dpi);
- else if (isTrack) {
- // size.y += 2.0 * trackGauge;
- barScale = (trackGauge>0.1)?trackGauge*(36-hotBarHeight/2):10.0;
- // barScale = 2.0 / ((hotBarHeight-2.0) / hotBarD.dpi);
- //if (size.y >= size.x)
- if (size.y/barScale > ((double)hotBarHeight-2.0)/hotBarD.dpi)
- barScale = (size.y+2.0*trackGauge)/(((double)hotBarHeight-2.0)/hotBarD.dpi);
+ if ( contentsLabel
+ && strncmp(contentsLabel, curContentsLabel, sizeof curContentsLabel) != 0
+ && !isFixed ) {
+ wMenuListAdd( hotBarML, hotBarMLcnt++, contentsLabel, I2VP(hotBarMap_da.cnt) );
+ strncpy( curContentsLabel, contentsLabel, sizeof(curContentsLabel)-1 );
+ }
+ if (barScale <= 0) {
+ if (!isTrack) {
+ barScale = size.y/(((double)hotBarHeight-2.0)/hotBarD.dpi);
+ } else if (isTrack) {
+ // size.y += 2.0 * trackGauge;
+ barScale = (trackGauge>0.1)?trackGauge*(36-hotBarHeight/2):10.0;
+ // barScale = 2.0 / ((hotBarHeight-2.0) / hotBarD.dpi);
+ //if (size.y >= size.x)
+ if (size.y/barScale > ((double)hotBarHeight-2.0)/hotBarD.dpi) {
+ barScale = (size.y+2.0*trackGauge)/(((double)hotBarHeight-2.0)/hotBarD.dpi);
}
- // orig.y += 1.0/hotBarD.dpi;
}
- DYNARR_APPEND( hotBarMap_t, hotBarMap_da, 10 );
- tbm = &hotBarMap(hotBarMap_da.cnt-1);
- if (barScale < 1)
- barScale = 1;
- if (size.x > barScale)
- barScale = size.x;
- tbm->context = context;
- tbm->size = size;
- tbm->orig = orig;
- tbm->proc = proc_p;
- tbm->barScale = barScale;
- tbm->isFixed = isFixed;
- tbm->w = tbm->objectW = size.x/barScale + 5.0/hotBarD.dpi;
- tbm->labelW = 0;
- tbm->x = hotBarWidth;
- if ( hotBarLabels ) {
- DrawTextSize( &hotBarD, proc_p( HB_BARTITLE, context, NULL, NULL), hotBarFp, hotBarFs, FALSE, &textsize );
- tbm->labelW = textsize.x+5/hotBarD.dpi;
- if ( tbm->labelW > tbm->w ) {
- tbm->w = tbm->labelW;
- }
+ // orig.y += 1.0/hotBarD.dpi;
+ }
+ DYNARR_APPEND( hotBarMap_t, hotBarMap_da, 10 );
+ tbm = &hotBarMap(hotBarMap_da.cnt-1);
+ if (barScale < 1) {
+ barScale = 1;
+ }
+ if (size.x > barScale) {
+ barScale = size.x;
+ }
+ tbm->context = context;
+ tbm->size = size;
+ tbm->orig = orig;
+ tbm->proc = proc_p;
+ tbm->barScale = barScale;
+ tbm->isFixed = isFixed;
+ tbm->w = tbm->objectW = size.x/barScale + 5.0/hotBarD.dpi;
+ tbm->labelW = 0;
+ tbm->x = hotBarWidth;
+ if ( hotBarLabels ) {
+ DrawTextSize( &hotBarD, proc_p( HB_BARTITLE, context, NULL, NULL), hotBarFp,
+ hotBarFs, FALSE, &textsize );
+ tbm->labelW = textsize.x+5/hotBarD.dpi;
+ if ( tbm->labelW > tbm->w ) {
+ tbm->w = tbm->labelW;
}
- hotBarWidth += tbm->w + 2/hotBarD.dpi;
+ }
+ hotBarWidth += tbm->w + 2/hotBarD.dpi;
}
@@ -490,10 +511,12 @@ static void ChangeHotBar( long changes )
#endif
static long programModeOld = 0;
- if ( (changes&(CHANGE_SCALE|CHANGE_PARAMS|CHANGE_TOOLBAR)) == 0 )
+ if ( (changes&(CHANGE_SCALE|CHANGE_PARAMS|CHANGE_TOOLBAR)) == 0 ) {
return;
- if ( hotBarLabels && !hotBarFp )
+ }
+ if ( hotBarLabels && !hotBarFp ) {
hotBarFp = wStandardFont( F_HELV, FALSE, FALSE );
+ }
if (hotBarLeftB != NULL && curScaleName) {
hotBarWidth = 0.0;
hotBarMLcnt = 0;
@@ -501,8 +524,9 @@ static void ChangeHotBar( long changes )
DYNARR_RESET( hotBarMap_t, hotBarMap_da );
curContentsLabel[0] = '\0';
if ( programMode == MODE_DESIGN ) {
- if (showFlexTrack)
+ if (showFlexTrack) {
AddHotBarCornu();
+ }
AddHotBarTurnouts();
AddHotBarStructures();
} else {
@@ -513,8 +537,10 @@ static void ChangeHotBar( long changes )
hotBarCurrSelects[0] = hotBarCurrSelects[1] = -1;
programModeOld = programMode;
}
- if (hotBarMap_da.cnt > 0 && (hotBarCurrStart >= hotBarMap_da.cnt||hotBarCurrStart < 0))
+ if (hotBarMap_da.cnt > 0 && (hotBarCurrStart >= hotBarMap_da.cnt
+ ||hotBarCurrStart < 0)) {
hotBarCurrStart = 0;
+ }
RedrawHotBar( NULL, NULL, 0, 0 );
}
}
@@ -542,28 +568,25 @@ EXPORT void LayoutHotBar( void * redraw )
BOOL_T initialize = FALSE;
wWinGetSize( mainW, &winWidth, &winHeight );
- /** @prefs [Preference] LargeIcons=1.5 Sets Icon scaling limits 1.0 to 2.0 */
- double scaleicon;
- wPrefGetFloat(PREFSECTION, LARGEICON, &scaleicon, 1.0);
- if (scaleicon<1.0) scaleicon=1.0;
- if (scaleicon>2.0) scaleicon=2.0;
- //if (scaleicon>1.0) {
- // hotBarHeight = (wWinPix_t)(hotBarHeight);
- //}
- hotBarTextHeight = (wWinPix_t)round(wMessageGetHeight(0L) * (0.5 + (double)iconSize / 10.0));
+ hotBarTextHeight = (wWinPix_t)round(wMessageGetHeight(0L) * (0.6 + 0.4 *
+ (double)iconSize));
if ( hotBarLabels) {
- hbHeight += hotBarTextHeight;
+ hbHeight += hotBarTextHeight;
}
if (hotBarLeftB == NULL) {
wIcon_p bm_p;
- if (winWidth < 50)
+ if (winWidth < 50) {
return;
+ }
bm_p = wIconCreateBitMap( 16, 16, turnbarl_bits, wDrawColorBlack );
- hotBarLeftB = wButtonCreate( mainW, 0, 0, "hotBarLeft", (char*)bm_p, BO_ICON|BO_REPEAT, 0, DoHotBarLeft, NULL );
+ hotBarLeftB = wButtonCreate( mainW, 0, 0, "hotBarLeft", (char*)bm_p,
+ BO_ICON|BO_REPEAT, 0, DoHotBarLeft, NULL );
bm_p = wIconCreateBitMap( 16, 16, turnbarr_bits, wDrawColorBlack );
- hotBarRightB = wButtonCreate( mainW, 0, 0, "hotBarRight", (char*)bm_p, BO_ICON|BO_REPEAT, 0, DoHotBarRight, NULL );
- hotBarD.d = wDrawCreate( mainW, 0, 0, NULL, BD_NOCAPTURE|BD_NOFOCUS, 100, hbHeight, NULL, RedrawHotBar, SelectHotBar );
+ hotBarRightB = wButtonCreate( mainW, 0, 0, "hotBarRight", (char*)bm_p,
+ BO_ICON|BO_REPEAT, 0, DoHotBarRight, NULL );
+ hotBarD.d = wDrawCreate( mainW, 0, 0, NULL, 0, 100,
+ hbHeight, NULL, RedrawHotBar, SelectHotBar );
hotBarD.dpi = wDrawGetDPI( hotBarD.d );
hotBarD.scale = 1.0;
wSetCursor(hotBarD.d,wCursorNormal);
@@ -571,19 +594,25 @@ EXPORT void LayoutHotBar( void * redraw )
}
buttonWidth = wControlGetWidth((wControl_p)hotBarLeftB);
buttonHeight = wControlGetHeight((wControl_p)hotBarLeftB);
- wControlSetPos( (wControl_p)hotBarLeftB, HOTBAR_LEFT, toolbarHeight+(hbHeight-buttonHeight)/2 );
- wControlSetPos( (wControl_p)hotBarRightB, winWidth-20-buttonWidth+HOTBAR_LEFT+1, toolbarHeight+(hbHeight-buttonHeight)/2 );
- wControlSetPos( (wControl_p)hotBarD.d, buttonWidth+HOTBAR_LEFT+1, toolbarHeight );
+ wControlSetPos( (wControl_p)hotBarLeftB, HOTBAR_LEFT,
+ toolbarHeight+(hbHeight-buttonHeight)/2 );
+ wControlSetPos( (wControl_p)hotBarRightB, winWidth-20-buttonWidth+HOTBAR_LEFT+1,
+ toolbarHeight+(hbHeight-buttonHeight)/2 );
+ wControlSetPos( (wControl_p)hotBarD.d, buttonWidth+HOTBAR_LEFT+1,
+ toolbarHeight );
wDrawSetSize( hotBarD.d, winWidth-20-buttonWidth*2, hbHeight+2, redraw );
- hotBarD.size.x = ((double)(winWidth-20-buttonWidth*2))/hotBarD.dpi*hotBarD.scale;
- hotBarD.size.y = (double)hotBarHeight/hotBarD.dpi*hotBarD.scale; //Exclude Label from calc
+ hotBarD.size.x = ((double)(winWidth-20
+ -buttonWidth*2))/hotBarD.dpi*hotBarD.scale;
+ hotBarD.size.y = (double)
+ hotBarHeight/hotBarD.dpi*hotBarD.scale; //Exclude Label from calc
wControlShow( (wControl_p)hotBarLeftB, TRUE );
wControlShow( (wControl_p)hotBarRightB, TRUE );
wControlShow( (wControl_p)hotBarD.d, TRUE );
- if (initialize)
+ if (initialize) {
ChangeHotBar( CHANGE_PARAMS );
- else if (!redraw)
+ } else if (!redraw) {
RedrawHotBar( NULL, NULL, 0, 0 );
+ }
toolbarHeight += hbHeight+3;
}
diff --git a/app/bin/cjoin.c b/app/bin/cjoin.c
index a027327..cb794bd 100644
--- a/app/bin/cjoin.c
+++ b/app/bin/cjoin.c
@@ -20,7 +20,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
*/
@@ -40,30 +40,30 @@ static BOOL_T debug = 0;
/** @logcmd @showrefby join=n cjoin.c */
static int log_join = 0;
typedef struct {
- curveType_e type;
- BOOL_T flip;
- coOrd arcP;
- DIST_T arcR;
- ANGLE_T arcA0, arcA1;
- coOrd pos[2];
- } joinRes_t;
+ curveType_e type;
+ BOOL_T flip;
+ coOrd arcP;
+ DIST_T arcR;
+ ANGLE_T arcA0, arcA1;
+ coOrd pos[2];
+} joinRes_t;
static struct {
- STATE_T state;
- int joinMoveState;
- BOOL_T cornuMode;
- struct {
- TRKTYP_T realType;
- track_p trk;
- coOrd pos;
- EPINX_T ep;
- trackParams_t params;
- } inp[2];
- joinRes_t jRes;
- coOrd inp_pos[2];
- easementData_t jointD[2];
- dynArr_t anchors;
- } Dj;
+ STATE_T state;
+ int joinMoveState;
+ BOOL_T cornuMode;
+ struct {
+ TRKTYP_T realType;
+ track_p trk;
+ coOrd pos;
+ EPINX_T ep;
+ trackParams_t params;
+ } inp[2];
+ joinRes_t jRes;
+ coOrd inp_pos[2];
+ easementData_t jointD[2];
+ dynArr_t anchors;
+} Dj;
/*****************************************************************************
@@ -74,11 +74,11 @@ static struct {
static BOOL_T JoinWithStraight(
- coOrd pos0,
- ANGLE_T a0,
- coOrd pos1,
- ANGLE_T a1,
- joinRes_t * res )
+ coOrd pos0,
+ ANGLE_T a0,
+ coOrd pos1,
+ ANGLE_T a1,
+ joinRes_t * res )
/*
* Determine a track from a point and angle (pos1,a1) to
* a straight (given by an origin and angle: pos0, a0)
@@ -92,17 +92,17 @@ static BOOL_T JoinWithStraight(
DOUBLE_T beyond;
b = NormalizeAngle( a0 - a1 );
-LOG( log_join, 2, (
- "JwL: pos0=[%0.3f %0.3f] a0=%0.3f pos1=[%0.3f %0.3f] a1=%0.3f b=%0.3f\n",
- pos0.x, pos0.y, a0, pos1.x, pos1.y, a1, b ) )
+ LOG( log_join, 2, (
+ "JwL: pos0=[%0.3f %0.3f] a0=%0.3f pos1=[%0.3f %0.3f] a1=%0.3f b=%0.3f\n",
+ pos0.x, pos0.y, a0, pos1.x, pos1.y, a1, b ) )
-/* 3 - cases: */
+ /* 3 - cases: */
if (b >= 360.0-connectAngle/2.0 || b <= connectAngle/2.0) {
-/* CASE 1: antiparallel */
+ /* CASE 1: antiparallel */
FindPos( &off, NULL, pos1, pos0, a0, DIST_INF );
res->arcR = off.y/2.0;
res->arcA1 = 180.0;
-LOG( log_join, 3, ("JwL: parallel: off.y=%0.3f\n", off.y ) )
+ LOG( log_join, 3, ("JwL: parallel: off.y=%0.3f\n", off.y ) )
res->arcA0 = NormalizeAngle( a1 - 90.0 );
Translate( &res->arcP, pos1, res->arcA0, res->arcR );
if (res->arcR > 0.0) {
@@ -112,14 +112,15 @@ LOG( log_join, 3, ("JwL: parallel: off.y=%0.3f\n", off.y ) )
res->flip = 1;
}
} else if (b >= 180.0-connectAngle/2.0 && b <= 180.0+connectAngle/2.0) {
-/* CASE 2: parallel, possibly colinear? */
+ /* CASE 2: parallel, possibly colinear? */
FindPos( &off, &beyond, pos0, pos1, a0, DIST_INF );
-LOG( log_join, 3, ("JwL: colinear? off.y=%0.3f\n", off.y ) )
+ LOG( log_join, 3, ("JwL: colinear? off.y=%0.3f\n", off.y ) )
if (off.y > -connectDistance && off.y < connectDistance) {
res->type = curveTypeStraight;
res->pos[0]=pos0;
res->pos[1]=pos1;
-LOG( log_join, 2, (" = STRAIGHT [%0.3f %0.3f] [%0.3f %0.3f]\n", pos0.x, pos0.y, pos1.x, pos1.y ) )
+ LOG( log_join, 2, (" = STRAIGHT [%0.3f %0.3f] [%0.3f %0.3f]\n", pos0.x,
+ pos0.y, pos1.x, pos1.y ) )
return TRUE;
} else {
res->type = curveTypeNone;
@@ -127,7 +128,7 @@ LOG( log_join, 2, (" = STRAIGHT [%0.3f %0.3f] [%0.3f %0.3f]\n", pos0.x, pos0.
return TRUE;
}
} else {
-/* CASE 3: intersecting */
+ /* CASE 3: intersecting */
if (!FindIntersection( &Px, pos0, a0, pos1, a1 )) {
res->type = curveTypeNone;
ErrorMessage( MSG_SELECTED_TRACKS_PARALLEL );
@@ -136,13 +137,16 @@ LOG( log_join, 2, (" = STRAIGHT [%0.3f %0.3f] [%0.3f %0.3f]\n", pos0.x, pos0.
d = FindDistance( pos1, Px );
k = NormalizeAngle( FindAngle(pos1, Px) - a1 );
c = (b > 180.0) ? (360.0-b) : b;
- if (k < 90.0 && k > 270.0)
+ if (k < 90.0 && k > 270.0) {
c += 180.0;
-LOG( log_join, 3, (" Px=[%0.3f %0.3f] b=%0.3f c=%0.3f d=%0.3f k=%0.3f\n", Px.x, Px.y, b, c, d, k ) )
+ }
+ LOG( log_join, 3, (" Px=[%0.3f %0.3f] b=%0.3f c=%0.3f d=%0.3f k=%0.3f\n",
+ Px.x, Px.y, b, c, d, k ) )
res->arcR = d * sin(D2R(c/2.0))/cos(D2R(c/2.0));
res->arcA1 = 180.0-c;
- if (90.0<k && k<270.0)
- res->arcA1 = 360.0 - res->arcA1;
+ if (90.0<k && k<270.0) {
+ res->arcA1 = 360.0 - res->arcA1;
+ }
if ( (res->arcA1>180.0) == (b>180.0) ) {
Translate( &res->arcP, pos1, a1-90.0, res->arcR );
res->arcA0 = NormalizeAngle( a0 - 90.0 );
@@ -153,73 +157,78 @@ LOG( log_join, 3, (" Px=[%0.3f %0.3f] b=%0.3f c=%0.3f d=%0.3f k=%0.3f\n", Px
res->flip = TRUE;
}
}
-LOG( log_join, 2, (" = CURVE @ Pc=[%0.3f %0.3f] R=%0.3f A0=%0.3f A1=%0.3f Flip=%d\n",
- res->arcP.x, res->arcP.y, res->arcR, res->arcA0, res->arcA1, res->flip ) )
- if (res->arcR<0.0) res->arcR = - res->arcR;
+ LOG( log_join, 2,
+ (" = CURVE @ Pc=[%0.3f %0.3f] R=%0.3f A0=%0.3f A1=%0.3f Flip=%d\n",
+ res->arcP.x, res->arcP.y, res->arcR, res->arcA0, res->arcA1, res->flip ) )
+ if (res->arcR<0.0) { res->arcR = - res->arcR; }
res->type = curveTypeCurve;
d = D2R(res->arcA1);
- if (d < 0.0)
+ if (d < 0.0) {
d = 2*M_PI + d;
+ }
if (!debug)
InfoMessage( _("Curved Track: Radius=%s Length=%s"),
- FormatDistance(res->arcR), FormatDistance(res->arcR*d) );
+ FormatDistance(res->arcR), FormatDistance(res->arcR*d) );
return TRUE;
}
static BOOL_T JoinWithCurve(
- coOrd pos0,
- DIST_T r0,
- EPINX_T ep0,
- coOrd pos1,
- ANGLE_T a1, /* Angle perpendicular to track at (pos1) */
- joinRes_t * res )
+ coOrd pos0,
+ DIST_T r0,
+ EPINX_T ep0,
+ coOrd pos1,
+ ANGLE_T a1, /* Angle perpendicular to track at (pos1) */
+ joinRes_t * res )
/*
* Determine a track point and angle (pos1,a1) to
* a curve (given by center and radius (pos0, r0).
* Curve endPt (ep0) determines whether the connection is
* clockwise or counterclockwise.
- */
+ */
{
coOrd p1, pt;
DIST_T d, r;
ANGLE_T a, aa, A0, A1;
-/* Compute angle of line connecting endPoints: */
+ /* Compute angle of line connecting endPoints: */
Translate( &p1, pos1, a1, -r0 );
aa = FindAngle( p1, pos0 );
a = NormalizeAngle( aa - a1 );
-LOG( log_join, 2, ("JwA: pos0=[%0.3f %0.3f] r0=%0.3f ep0=%d pos1=[%0.3f %0.3f] a1=%0.3f\n",
- pos0.x, pos0.y, r0, ep0, pos1.x, pos1.y, a1 ) )
-LOG( log_join, 3, (" p1=[%0.3f %0.3f] aa=%0.3f a=%0.3f\n",
- p1.x, p1.y, aa, a ) )
+ LOG( log_join, 2,
+ ("JwA: pos0=[%0.3f %0.3f] r0=%0.3f ep0=%d pos1=[%0.3f %0.3f] a1=%0.3f\n",
+ pos0.x, pos0.y, r0, ep0, pos1.x, pos1.y, a1 ) )
+ LOG( log_join, 3, (" p1=[%0.3f %0.3f] aa=%0.3f a=%0.3f\n",
+ p1.x, p1.y, aa, a ) )
if ( (ep0==1 && a > 89.5 && a < 90.5) ||
- (ep0==0 && a > 269.5 && a < 270.5) ) {
-/* The long way around! */
+ (ep0==0 && a > 269.5 && a < 270.5) ) {
+ /* The long way around! */
ErrorMessage( MSG_CURVE_TOO_LARGE );
res->type = curveTypeNone;
} else if ( (ep0==0 && a > 89.5 && a < 90.5) ||
- (ep0==1 && a > 269.5 && a < 270.5) ) {
-/* Straight: */
+ (ep0==1 && a > 269.5 && a < 270.5) ) {
+ /* Straight: */
PointOnCircle( &pt, pos0, r0, a1);
-LOG( log_join, 2, (" = STRAIGHT [%0.3f %0.3f] [%0.3f %0.3f]\n", pt.x, pt.y, pos1.x, pos1.y ) )
+ LOG( log_join, 2, (" = STRAIGHT [%0.3f %0.3f] [%0.3f %0.3f]\n", pt.x, pt.y,
+ pos1.x, pos1.y ) )
if (!debug) InfoMessage( _("Straight Track: Length=%s Angle=%0.3f"),
- FormatDistance(FindDistance( pt, pos1 )), PutAngle(FindAngle( pt, pos1 )) );
+ FormatDistance(FindDistance( pt, pos1 )), PutAngle(FindAngle( pt, pos1 )) );
res->type = curveTypeStraight;
res->pos[0]=pt;
res->pos[1]=pos1;
res->flip = FALSE;
} else {
-/* Curve: */
+ /* Curve: */
d = FindDistance( p1, pos0 ) / 2.0;
r = d/cos(D2R(a));
Translate( &res->arcP, p1, a1, r );
res->arcR = r-r0;
-LOG( log_join, 3, (" Curved d=%0.3f C=[%0.3f %0.3f], r=%0.3f a=%0.3f arcR=%0.3f\n",
- d, res->arcP.x, res->arcP.y, r, a, res->arcR ) )
+ LOG( log_join, 3,
+ (" Curved d=%0.3f C=[%0.3f %0.3f], r=%0.3f a=%0.3f arcR=%0.3f\n",
+ d, res->arcP.x, res->arcP.y, r, a, res->arcR ) )
if ( (ep0==0) == (res->arcR<0) ) {
A1 = 180 + 2*a;
A0 = a1;
@@ -243,12 +252,14 @@ LOG( log_join, 3, (" Curved d=%0.3f C=[%0.3f %0.3f], r=%0.3f a=%0.3f arcR=%0
return TRUE;
}
-LOG( log_join, 3, (" A0=%0.3f A1=%0.3f R=%0.3f\n", res->arcA0, res->arcA1, res->arcR ) )
+ LOG( log_join, 3, (" A0=%0.3f A1=%0.3f R=%0.3f\n", res->arcA0, res->arcA1,
+ res->arcR ) )
d = D2R(res->arcA1);
- if (d < 0.0)
+ if (d < 0.0) {
d = 2*M_PI + d;
+ }
if (!debug) InfoMessage( _("Curved Track: Radius=%s Length=%s Angle=%0.3f"),
- FormatDistance(res->arcR), FormatDistance(res->arcR*d), PutAngle(res->arcA1) );
+ FormatDistance(res->arcR), FormatDistance(res->arcR*d), PutAngle(res->arcA1) );
res->type = curveTypeCurve;
}
return TRUE;
@@ -262,10 +273,10 @@ LOG( log_join, 3, (" A0=%0.3f A1=%0.3f R=%0.3f\n", res->arcA0, res->arcA1,
static STATUS_T AdjustJoint(
- BOOL_T adjust,
- ANGLE_T a1,
- DIST_T eR[2],
- ANGLE_T normalAngle )
+ BOOL_T adjust,
+ ANGLE_T a1,
+ DIST_T eR[2],
+ ANGLE_T normalAngle )
/*
* Compute how to join 2 tracks and then compute the transition-curve
* from the 2 tracks to the joint.
@@ -285,38 +296,42 @@ static STATUS_T AdjustJoint(
coOrd pc;
DIST_T eRc;
DIST_T l, d=0;
-
- if (adjust)
+
+ if (adjust) {
Translate( &p1, Dj.inp[1].pos, a1, Dj.jointD[1].x );
- else
+ } else {
p1 = Dj.inp[1].pos;
+ }
switch ( Dj.inp[0].params.type ) {
case curveTypeCurve:
if (adjust) {
a0 = FindAngle( Dj.inp[0].params.arcP, Dj.jRes.pos[0] );
Translate( &pc, Dj.inp[0].params.arcP, a0, Dj.jointD[0].x );
-LOG( log_join, 2, (" Move P0 X%0.3f A%0.3f P1 X%0.3f A%0.3f SC%d FL%d\n",
- Dj.jointD[0].x, a0, Dj.jointD[1].x, a1,
- Dj.jointD[0].Scurve, Dj.jointD[0].flip ) )
+ LOG( log_join, 2, (" Move P0 X%0.3f A%0.3f P1 X%0.3f A%0.3f SC%d FL%d\n",
+ Dj.jointD[0].x, a0, Dj.jointD[1].x, a1,
+ Dj.jointD[0].Scurve, Dj.jointD[0].flip ) )
} else {
pc = Dj.inp[0].params.arcP;
}
if (!JoinWithCurve( pc, Dj.inp[0].params.arcR,
- Dj.inp[0].params.ep, p1, normalAngle, &Dj.jRes ))
+ Dj.inp[0].params.ep, p1, normalAngle, &Dj.jRes )) {
return FALSE;
+ }
break;
case curveTypeStraight:
if (adjust) {
a0 = Dj.inp[0].params.angle + (Dj.jointD[0].negate?-90.0:+90.0);
Translate( &p0, Dj.inp[0].params.lineOrig, a0, Dj.jointD[0].x );
-LOG( log_join, 2, (" Move P0 X%0.3f A%0.3f P1 X%0.3f A%0.3f\n",
- Dj.jointD[0].x, a0, Dj.jointD[1].x, a1 ) )
+ LOG( log_join, 2, (" Move P0 X%0.3f A%0.3f P1 X%0.3f A%0.3f\n",
+ Dj.jointD[0].x, a0, Dj.jointD[1].x, a1 ) )
} else {
p0 = Dj.inp[0].params.lineOrig;
}
- if (!JoinWithStraight( p0, Dj.inp[0].params.angle, p1, Dj.inp[1].params.angle, &Dj.jRes ))
+ if (!JoinWithStraight( p0, Dj.inp[0].params.angle, p1, Dj.inp[1].params.angle,
+ &Dj.jRes )) {
return FALSE;
+ }
break;
default:
break;
@@ -328,13 +343,15 @@ LOG( log_join, 2, (" Move P0 X%0.3f A%0.3f P1 X%0.3f A%0.3f\n",
if (Dj.jRes.type == curveTypeCurve) {
eRc = Dj.jRes.arcR;
- if (Dj.jRes.flip==1)
+ if (Dj.jRes.flip==1) {
eRc = -eRc;
- } else
+ }
+ } else {
eRc = 0.0;
+ }
if ( ComputeJoint( eR[0], eRc, &Dj.jointD[0] ) == E_ERROR ||
- ComputeJoint( -eR[1], -eRc, &Dj.jointD[1] ) == E_ERROR ) {
+ ComputeJoint( -eR[1], -eRc, &Dj.jointD[1] ) == E_ERROR ) {
return FALSE;
}
@@ -343,9 +360,9 @@ LOG( log_join, 2, (" Move P0 X%0.3f A%0.3f P1 X%0.3f A%0.3f\n",
if (Dj.inp[inx].params.type == curveTypeStraight ) {
d = FindDistance( Dj.inp[inx].params.lineOrig, Dj.inp_pos[inx] );
if (d < Dj.jointD[inx].d0) {
- InfoMessage( _("Track (%d) is too short for transition-curve by %0.3f"),
- GetTrkIndex(Dj.inp[inx].trk),
- PutDim(fabs(Dj.jointD[inx].d0-d)) );
+ InfoMessage( _("Track (%d) is too short for transition-curve by %0.3f"),
+ GetTrkIndex(Dj.inp[inx].trk),
+ PutDim(fabs(Dj.jointD[inx].d0-d)) );
return FALSE;
}
}
@@ -360,20 +377,23 @@ LOG( log_join, 2, (" Move P0 X%0.3f A%0.3f P1 X%0.3f A%0.3f\n",
}
d -= l;
if ( d <= minLength ) {
- if (!debug)
- InfoMessage( _("Connecting track is too short by %0.3f"), PutDim(fabs(minLength-d)) );
+ if (!debug) {
+ InfoMessage( _("Connecting track is too short by %0.3f"),
+ PutDim(fabs(minLength-d)) );
+ }
return FALSE;
}
if (Dj.jRes.type == curveTypeCurve) {
PointOnCircle( &Dj.jRes.pos[Dj.jRes.flip], Dj.jRes.arcP,
- Dj.jRes.arcR, Dj.jRes.arcA0 );
+ Dj.jRes.arcR, Dj.jRes.arcA0 );
PointOnCircle( &Dj.jRes.pos[1-Dj.jRes.flip], Dj.jRes.arcP,
- Dj.jRes.arcR, Dj.jRes.arcA0+Dj.jRes.arcA1 );
+ Dj.jRes.arcR, Dj.jRes.arcA0+Dj.jRes.arcA1 );
}
- if (adjust)
+ if (adjust) {
Translate( &Dj.inp_pos[0], Dj.jRes.pos[0], a0+180.0, Dj.jointD[0].x );
+ }
return TRUE;
}
@@ -381,76 +401,83 @@ LOG( log_join, 2, (" Move P0 X%0.3f A%0.3f P1 X%0.3f A%0.3f\n",
static STATUS_T DoMoveToJoin( coOrd 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 (Dj.joinMoveState == 0 && !CheckTrackLayerSilent( 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 ) {
+ 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 (Dj.joinMoveState == 0 && !CheckTrackLayerSilent( 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 );
+ ErrorMessage( MSG_NO_ENDPTS );
#endif
- return C_CONTINUE;
- }
+ 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;
- }
+ 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") );
- Dj.inp[0].pos = pos;
- 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;
+ if (Dj.joinMoveState == 0) {
+ Dj.joinMoveState++;
+ InfoMessage( GetTrkSelected(Dj.inp[0].trk)?
+ _("Click on an unselected End-Point"):
+ _("Click on a selected End-Point") );
+ Dj.inp[0].pos = pos;
+ 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;
}
typedef enum {NO_LINE,FIRST_END,HAVE_LINE,HAVE_SECOND_LINE} LineState_t;
static struct {
- LineState_t line_state;
- int joinMoveState;
- track_p curr_line;
- struct {
- TRKTYP_T realType;
- track_p line;
- coOrd pos;
- coOrd end;
- int cnt;
- } inp[2];
- joinRes_t jRes;
- coOrd inp_pos[2];
- dynArr_t anchors_da;
- trackParams_t params;
- dynArr_t newLine;
- } Dl;
+ LineState_t line_state;
+ int joinMoveState;
+ track_p curr_line;
+ struct {
+ TRKTYP_T realType;
+ track_p line;
+ coOrd pos;
+ coOrd end;
+ int cnt;
+ } inp[2];
+ joinRes_t jRes;
+ coOrd inp_pos[2];
+ dynArr_t anchors_da;
+ trackParams_t params;
+ dynArr_t newLine;
+} Dl;
#define anchors(N) DYNARR_N(trkSeg_t,Dl.anchors_da,N)
-void AddAnchorEnd(coOrd p) {
+void AddAnchorEnd(coOrd p)
+{
DIST_T d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,Dl.anchors_da,1);
trkSeg_p a = &DYNARR_LAST(trkSeg_t,Dl.anchors_da);
a->type = SEG_CRVLIN;
- a->width = 0;
+ a->lineWidth = 0;
a->u.c.a0 = 0.0;
a->u.c.a1 = 360.0;
a->u.c.center = p;
@@ -460,8 +487,8 @@ void AddAnchorEnd(coOrd p) {
static STATUS_T CmdJoinLine(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
/*
* Join 2 lines.
*/
@@ -472,7 +499,7 @@ static STATUS_T CmdJoinLine(
InfoMessage( _("Left click - Select first draw object end") );
Dl.line_state = NO_LINE;
Dl.joinMoveState = 0;
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
DYNARR_RESET(trkSeg_t,Dl.newLine);
Dl.curr_line = NULL;
SetAllTrackSelect( FALSE );
@@ -482,7 +509,7 @@ static STATUS_T CmdJoinLine(
Dl.curr_line = NULL;
coOrd pos1= pos;
Dl.curr_line = OnTrack( &pos1, FALSE, FALSE );
- if (!Dl.curr_line) return C_CONTINUE;
+ if (!Dl.curr_line) { return C_CONTINUE; }
if (IsTrack(Dl.curr_line)) {
Dl.curr_line = NULL;
return C_CONTINUE;
@@ -496,8 +523,8 @@ static STATUS_T CmdJoinLine(
return C_CONTINUE;
}
if ( (Dl.line_state != NO_LINE) &&
- (Dl.inp[0].line == Dl.curr_line) &&
- (IsClose(FindDistance(Dl.inp[0].pos,Dl.params.lineOrig)) ) ) {
+ (Dl.inp[0].line == Dl.curr_line) &&
+ (IsClose(FindDistance(Dl.inp[0].pos,Dl.params.lineOrig)) ) ) {
Dl.curr_line = NULL;
} else {
AddAnchorEnd(Dl.params.lineOrig);
@@ -512,8 +539,8 @@ static STATUS_T CmdJoinLine(
InfoMessage( _("Not a line - Try again") );
return C_CONTINUE;
}
- if (!QueryTrack(Dl.curr_line,Q_GET_NODES)) return C_CONTINUE;
- if (!GetTrackParams(PARAMS_NODES,Dl.curr_line,pos,&Dl.params)) return C_CONTINUE;
+ if (!QueryTrack(Dl.curr_line,Q_GET_NODES)) { return C_CONTINUE; }
+ if (!GetTrackParams(PARAMS_NODES,Dl.curr_line,pos,&Dl.params)) { return C_CONTINUE; }
Dl.line_state = HAVE_LINE;
Dl.inp[0].line = Dl.curr_line;
Dl.inp[0].pos = Dl.params.lineOrig;
@@ -522,20 +549,23 @@ static STATUS_T CmdJoinLine(
DYNARR_LAST(trkSeg_t,Dl.newLine).type = SEG_POLY;
DYNARR_LAST(trkSeg_t,Dl.newLine).color = wDrawColorBlack;
- DYNARR_LAST(trkSeg_t,Dl.newLine).width = 0;
+ DYNARR_LAST(trkSeg_t,Dl.newLine).lineWidth = 0;
DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.polyType = POLYLINE;
- DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts = MyMalloc(sizeof(pts_t)*Dl.params.nodes.cnt);
+ DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts = MyMalloc(sizeof(
+ pts_t)*Dl.params.nodes.cnt);
DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.cnt = Dl.params.nodes.cnt;
if (Dl.params.ep) {
//Copy in reverse as we want this point to be last
- for (int i=Dl.params.nodes.cnt-1,j=0;i>=0;i--,j++) {
- DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[j].pt = DYNARR_N(coOrd,Dl.params.nodes,i);
+ for (int i=Dl.params.nodes.cnt-1,j=0; i>=0; i--,j++) {
+ DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[j].pt = DYNARR_N(coOrd,Dl.params.nodes,
+ i);
DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[j].pt_type = wPolyLineStraight;
}
} else {
//Copy forwards to end up with this point last
- for (int i=0; i<Dl.params.nodes.cnt;i++) {
- DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[i].pt = DYNARR_N(coOrd,Dl.params.nodes,i);
+ for (int i=0; i<Dl.params.nodes.cnt; i++) {
+ DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[i].pt = DYNARR_N(coOrd,Dl.params.nodes,
+ i);
DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[i].pt_type = wPolyLineStraight;
}
}
@@ -546,11 +576,11 @@ static STATUS_T CmdJoinLine(
InfoMessage( _("Not a line - Try again") );
return C_CONTINUE;
}
- if (!QueryTrack(Dl.curr_line,Q_GET_NODES)) return C_CONTINUE;
- if (!GetTrackParams(PARAMS_NODES,Dl.curr_line,pos,&Dl.params)) return C_CONTINUE;
+ if (!QueryTrack(Dl.curr_line,Q_GET_NODES)) { return C_CONTINUE; }
+ if (!GetTrackParams(PARAMS_NODES,Dl.curr_line,pos,&Dl.params)) { return C_CONTINUE; }
if (Dl.curr_line == Dl.inp[0].line) {
if ((Dl.params.lineOrig.x == Dl.inp[0].pos.x) &&
- (Dl.params.lineOrig.y == Dl.inp[0].pos.y)) {
+ (Dl.params.lineOrig.y == Dl.inp[0].pos.y)) {
InfoMessage( _("Same draw object and same endpoint - Try again") );
return C_CONTINUE;
}
@@ -562,23 +592,29 @@ static STATUS_T CmdJoinLine(
int old_cnt = DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.cnt;
BOOL_T join_near = FALSE;
if (Dl.inp[1].line == Dl.inp[0].line) {
- DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts = MyRealloc(DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts,sizeof(pts_t)*(old_cnt+1));
- DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[old_cnt] = DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[0]; // Joined up Polygon
+ DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts = MyRealloc(DYNARR_LAST(trkSeg_t,
+ Dl.newLine).u.p.pts,sizeof(pts_t)*(old_cnt+1));
+ DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[old_cnt] = DYNARR_LAST(trkSeg_t,
+ Dl.newLine).u.p.pts[0]; // Joined up Polygon
DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.cnt += 1;
} else {
- if (IsClose(FindDistance(Dl.inp[0].pos,Dl.inp[1].pos)))
+ if (IsClose(FindDistance(Dl.inp[0].pos,Dl.inp[1].pos))) {
join_near = TRUE;
- DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts = MyRealloc(DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts,sizeof(pts_t)*(old_cnt+Dl.params.nodes.cnt-join_near));
+ }
+ DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts = MyRealloc(DYNARR_LAST(trkSeg_t,
+ Dl.newLine).u.p.pts,sizeof(pts_t)*(old_cnt+Dl.params.nodes.cnt-join_near));
if (Dl.params.ep) {
//Copy forwards as this point is first
- for (int i=join_near,j=old_cnt;i<Dl.params.nodes.cnt;i++,j++) {
- DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[j].pt = DYNARR_N(coOrd,Dl.params.nodes,i);
+ for (int i=join_near,j=old_cnt; i<Dl.params.nodes.cnt; i++,j++) {
+ DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[j].pt = DYNARR_N(coOrd,Dl.params.nodes,
+ i);
DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[j].pt_type = wPolyLineStraight;
}
} else {
//Copy backwards as this point is last
- for (int i=Dl.params.nodes.cnt-join_near-1,j=old_cnt;i>=0;i--,j++) {
- DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[j].pt = DYNARR_N(coOrd,Dl.params.nodes,i);
+ for (int i=Dl.params.nodes.cnt-join_near-1,j=old_cnt; i>=0; i--,j++) {
+ DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[j].pt = DYNARR_N(coOrd,Dl.params.nodes,
+ i);
DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[j].pt_type = wPolyLineStraight;
}
}
@@ -591,13 +627,14 @@ static STATUS_T CmdJoinLine(
case C_MOVE:
break;
case C_UP:
- if (Dl.line_state != HAVE_SECOND_LINE) return C_CONTINUE;
+ if (Dl.line_state != HAVE_SECOND_LINE) { return C_CONTINUE; }
Dl.line_state = NO_LINE;
UndoStart(_("Create PolyLine"), "newPolyLine");
track_p newTrack = MakePolyLineFromSegs( zero, 0.0, &Dl.newLine );
DeleteTrack(Dl.inp[0].line,FALSE);
- if (Dl.inp[0].line != Dl.inp[1].line)
+ if (Dl.inp[0].line != Dl.inp[1].line) {
DeleteTrack(Dl.inp[1].line,FALSE);
+ }
UndoEnd();
DrawNewTrack(newTrack);
CleanSegs(&Dl.newLine);
@@ -610,10 +647,15 @@ static STATUS_T CmdJoinLine(
Dl.curr_line = NULL;
break;
case C_REDRAW:
- if (Dl.line_state != NO_LINE) DrawSegs(&tempD,zero,0.0,((trkSeg_t*)Dl.newLine.ptr), Dl.newLine.cnt, trackGauge, wDrawColorPreviewSelected);
- if (Dl.curr_line) DrawTrack(Dl.curr_line,&tempD,wDrawColorPreviewSelected);
- if (Dl.anchors_da.cnt>0)
- DrawSegs( &tempD, zero, 0.0, &anchors(0), Dl.anchors_da.cnt, trackGauge, wDrawColorPreviewSelected );
+ if (Dl.line_state != NO_LINE) {
+ DrawSegsDA(&tempD,NULL,zero,0.0,&Dl.newLine, trackGauge,
+ wDrawColorPreviewSelected,0);
+ }
+ if (Dl.curr_line) {
+ DrawTrack(Dl.curr_line,&tempD,wDrawColorPreviewSelected);
+ }
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &Dl.anchors_da, trackGauge,
+ wDrawColorPreviewSelected, 0 );
break;
case C_TEXT:
case C_OK:
@@ -626,34 +668,37 @@ static STATUS_T CmdJoinLine(
}
-void AnchorTempLine(coOrd p0, coOrd p1) {
+void AnchorTempLine(coOrd p0, coOrd p1)
+{
DYNARR_APPEND(trkSeg_t,Dj.anchors,1);
trkSeg_p p = &DYNARR_LAST(trkSeg_t,Dj.anchors);
p->type = SEG_STRLIN;
p->color = wDrawColorBlue;
- p->width = 0.0;
+ p->lineWidth = 0.0;
p->u.l.pos[0] = p0;
p->u.l.pos[1] = p1;
}
-void AnchorTempCircle(coOrd center,DIST_T radius, ANGLE_T a0, ANGLE_T a1) {
+void AnchorTempCircle(coOrd center,DIST_T radius, ANGLE_T a0, ANGLE_T a1)
+{
DYNARR_APPEND(trkSeg_t,Dj.anchors,1);
trkSeg_p p = &DYNARR_LAST(trkSeg_t,Dj.anchors);
p->type = SEG_CRVLIN;
p->color = wDrawColorBlue;
- p->width = 0.0;
+ p->lineWidth = 0.0;
p->u.c.a0 =a0;
p->u.c.a1 = a1;
p->u.c.radius = radius;
p->u.c.center = center;
}
-void AnchorPoint(coOrd center) {
+void AnchorPoint(coOrd center)
+{
DYNARR_APPEND(trkSeg_t,Dj.anchors,1);
trkSeg_p p = &DYNARR_LAST(trkSeg_t,Dj.anchors);
p->type = SEG_CRVLIN;
p->color = wDrawColorAqua;
- p->width = 0.0;
+ p->lineWidth = 0.0;
p->u.c.a0 =0.0;
p->u.c.a1 = 360.0;
p->u.c.radius = mainD.scale/4;
@@ -672,100 +717,126 @@ static paramGroup_t joinPG = { "joinfixed", 0, joinPLs, COUNT( joinPLs ) };
-BOOL_T AdjustPosToRadius(coOrd *pos, DIST_T desired_radius, ANGLE_T an0, ANGLE_T an1) {
+BOOL_T AdjustPosToRadius(coOrd *pos, DIST_T desired_radius, ANGLE_T an0,
+ ANGLE_T an1)
+{
coOrd point1,point2;
switch ( Dj.inp[1].params.type ) {
- case curveTypeCurve:
- if (Dj.inp[0].params.type == curveTypeStraight) {
- coOrd newP, newP1;
- //Offset curve by desired_radius
- DIST_T newR1;
- newR1 = Dj.inp[1].params.arcR + desired_radius*((fabs(an1-Dj.inp[1].params.arcA0)<1.0)?1:-1);
- if (newR1<=0.0) {
- if (debug) InfoMessage("Zero Radius C1");
- return FALSE;
- }
- //Offset line by desired_radius
- Translate(&newP,Dj.inp[0].params.lineEnd,an0,desired_radius);
- Translate(&newP1,Dj.inp[0].params.lineOrig,an0,desired_radius);
- if (debug)
- AnchorTempLine(newP,newP1);
- //Intersect - this is the joining curve center
- if (debug)
- AnchorTempCircle(Dj.inp[1].params.arcP,newR1,Dj.inp[1].params.arcA0,Dj.inp[1].params.arcA1);
- if (!FindArcAndLineIntersections(&point1,&point2,Dj.inp[1].params.arcP,newR1,newP,newP1))
- return FALSE;
- } else if (Dj.inp[0].params.type == curveTypeCurve) {
- //Offset curve by desired_radius
- DIST_T newR0;
- newR0 = Dj.inp[0].params.arcR + desired_radius*((fabs(an0-Dj.inp[0].params.arcA0)<1.0)?1:-1);
- if (newR0<=0.0) {
- if (debug) InfoMessage("Zero Radius C0");
- return FALSE;
- }
- //Offset curve by desired_radius
- if (debug)
- AnchorTempCircle(Dj.inp[0].params.arcP,newR0,Dj.inp[0].params.arcA0,Dj.inp[0].params.arcA1);
- DIST_T newR1;
- newR1 = Dj.inp[1].params.arcR + desired_radius*((fabs(an1-Dj.inp[1].params.arcA0)<1.0)?1:-1);
- if (newR1<=0.0) {
- if (debug) InfoMessage("Zero Radius C1");
- return FALSE;
- }
- //Intersect - this is the joining curve center
- if (debug)
- AnchorTempCircle(Dj.inp[1].params.arcP,newR1,Dj.inp[1].params.arcA0,Dj.inp[1].params.arcA1);
- if (!FindArcIntersections(&point1,&point2,Dj.inp[0].params.arcP,newR0,Dj.inp[1].params.arcP,newR1))
- return FALSE;
+ case curveTypeCurve:
+ if (Dj.inp[0].params.type == curveTypeStraight) {
+ coOrd newP, newP1;
+ //Offset curve by desired_radius
+ DIST_T newR1;
+ newR1 = Dj.inp[1].params.arcR + desired_radius*((fabs(an1
+ -Dj.inp[1].params.arcA0)<1.0)?1:-1);
+ if (newR1<=0.0) {
+ if (debug) { InfoMessage("Zero Radius C1"); }
+ return FALSE;
}
+ //Offset line by desired_radius
+ Translate(&newP,Dj.inp[0].params.lineEnd,an0,desired_radius);
+ Translate(&newP1,Dj.inp[0].params.lineOrig,an0,desired_radius);
if (debug) {
- AnchorPoint(point1);
- AnchorPoint(point2);
+ AnchorTempLine(newP,newP1);
}
- break;
- case curveTypeStraight:
- if (Dj.inp[0].params.type == curveTypeStraight) {
- coOrd newI,newP0,newP01, newP1, newP11;
- //Offset line1 by desired_radius
- Translate(&newP0,Dj.inp[0].params.lineEnd,an0,desired_radius);
- Translate(&newP01,Dj.inp[0].params.lineOrig,an0,desired_radius);
- if (debug)
- AnchorTempLine(newP0,newP01);
- //Offset line2 by desired_radius
- Translate(&newP1,Dj.inp[1].params.lineEnd,an1,desired_radius);
- Translate(&newP11,Dj.inp[1].params.lineOrig,an1,desired_radius);
- if (debug)
- AnchorTempLine(newP1,newP11);
- if (!FindIntersection(&newI,newP0,Dj.inp[0].params.angle,newP1,Dj.inp[1].params.angle))
- return FALSE;
- point1 = point2 = newI;
- } else if (Dj.inp[0].params.type == curveTypeCurve) {
- coOrd newP, newP1;
- //Offset curve by desired_radius
- DIST_T newR0;
- newR0 = Dj.inp[0].params.arcR + desired_radius*((fabs(an0-Dj.inp[0].params.arcA0)<1.0)?1:-1);
- if (newR0<=0.0) {
- if (debug) InfoMessage("Zero Radius C0");
- return FALSE;
- }
- if (debug)
- AnchorTempCircle(Dj.inp[0].params.arcP,newR0,Dj.inp[0].params.arcA0,Dj.inp[0].params.arcA1);
- //Offset line by desired_radius
- Translate(&newP,Dj.inp[1].params.lineEnd,an1,desired_radius);
- Translate(&newP1,Dj.inp[1].params.lineOrig,an1,desired_radius);
- if (debug)
- AnchorTempLine(newP,newP1);
- //Intersect - this is the joining curve center
- if (!FindArcAndLineIntersections(&point1,&point2,Dj.inp[0].params.arcP,newR0,newP,newP1))
- return FALSE;
+ //Intersect - this is the joining curve center
+ if (debug) {
+ AnchorTempCircle(Dj.inp[1].params.arcP,newR1,Dj.inp[1].params.arcA0,
+ Dj.inp[1].params.arcA1);
}
+ if (!FindArcAndLineIntersections(&point1,&point2,Dj.inp[1].params.arcP,newR1,
+ newP,newP1)) {
+ return FALSE;
+ }
+ } else if (Dj.inp[0].params.type == curveTypeCurve) {
+ //Offset curve by desired_radius
+ DIST_T newR0;
+ newR0 = Dj.inp[0].params.arcR + desired_radius*((fabs(an0
+ -Dj.inp[0].params.arcA0)<1.0)?1:-1);
+ if (newR0<=0.0) {
+ if (debug) { InfoMessage("Zero Radius C0"); }
+ return FALSE;
+ }
+ //Offset curve by desired_radius
if (debug) {
- AnchorPoint(point1);
- AnchorPoint(point2);
+ AnchorTempCircle(Dj.inp[0].params.arcP,newR0,Dj.inp[0].params.arcA0,
+ Dj.inp[0].params.arcA1);
}
- break;
- default:
- return FALSE;
+ DIST_T newR1;
+ newR1 = Dj.inp[1].params.arcR + desired_radius*((fabs(an1
+ -Dj.inp[1].params.arcA0)<1.0)?1:-1);
+ if (newR1<=0.0) {
+ if (debug) { InfoMessage("Zero Radius C1"); }
+ return FALSE;
+ }
+ //Intersect - this is the joining curve center
+ if (debug) {
+ AnchorTempCircle(Dj.inp[1].params.arcP,newR1,Dj.inp[1].params.arcA0,
+ Dj.inp[1].params.arcA1);
+ }
+ if (!FindArcIntersections(&point1,&point2,Dj.inp[0].params.arcP,newR0,
+ Dj.inp[1].params.arcP,newR1)) {
+ return FALSE;
+ }
+ }
+ if (debug) {
+ AnchorPoint(point1);
+ AnchorPoint(point2);
+ }
+ break;
+ case curveTypeStraight:
+ if (Dj.inp[0].params.type == curveTypeStraight) {
+ coOrd newI,newP0,newP01, newP1, newP11;
+ //Offset line1 by desired_radius
+ Translate(&newP0,Dj.inp[0].params.lineEnd,an0,desired_radius);
+ Translate(&newP01,Dj.inp[0].params.lineOrig,an0,desired_radius);
+ if (debug) {
+ AnchorTempLine(newP0,newP01);
+ }
+ //Offset line2 by desired_radius
+ Translate(&newP1,Dj.inp[1].params.lineEnd,an1,desired_radius);
+ Translate(&newP11,Dj.inp[1].params.lineOrig,an1,desired_radius);
+ if (debug) {
+ AnchorTempLine(newP1,newP11);
+ }
+ if (!FindIntersection(&newI,newP0,Dj.inp[0].params.angle,newP1,
+ Dj.inp[1].params.angle)) {
+ return FALSE;
+ }
+ point1 = point2 = newI;
+ } else if (Dj.inp[0].params.type == curveTypeCurve) {
+ coOrd newP, newP1;
+ //Offset curve by desired_radius
+ DIST_T newR0;
+ newR0 = Dj.inp[0].params.arcR + desired_radius*((fabs(an0
+ -Dj.inp[0].params.arcA0)<1.0)?1:-1);
+ if (newR0<=0.0) {
+ if (debug) { InfoMessage("Zero Radius C0"); }
+ return FALSE;
+ }
+ if (debug) {
+ AnchorTempCircle(Dj.inp[0].params.arcP,newR0,Dj.inp[0].params.arcA0,
+ Dj.inp[0].params.arcA1);
+ }
+ //Offset line by desired_radius
+ Translate(&newP,Dj.inp[1].params.lineEnd,an1,desired_radius);
+ Translate(&newP1,Dj.inp[1].params.lineOrig,an1,desired_radius);
+ if (debug) {
+ AnchorTempLine(newP,newP1);
+ }
+ //Intersect - this is the joining curve center
+ if (!FindArcAndLineIntersections(&point1,&point2,Dj.inp[0].params.arcP,newR0,
+ newP,newP1)) {
+ return FALSE;
+ }
+ }
+ if (debug) {
+ AnchorPoint(point1);
+ AnchorPoint(point2);
+ }
+ break;
+ default:
+ return FALSE;
}
if (FindDistance(*pos,point1)<=FindDistance(*pos,point2)) {
if (Dj.inp[1].params.type == curveTypeCurve) {
@@ -778,27 +849,30 @@ BOOL_T AdjustPosToRadius(coOrd *pos, DIST_T desired_radius, ANGLE_T an0, ANGLE_T
if (Dj.inp[1].params.type == curveTypeCurve) {
ANGLE_T a = FindAngle(Dj.inp[1].params.arcP,point2);
Translate(pos,Dj.inp[1].params.arcP,a,Dj.inp[1].params.arcR);
- } else
+ } else {
Translate(pos,point2,NormalizeAngle(an1+180),desired_radius);
+ }
}
return TRUE;
}
-void AddAnchorJoin(coOrd pos, ANGLE_T angle) {
+void AddAnchorJoin(coOrd pos, ANGLE_T angle)
+{
DIST_T d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,Dj.anchors,1);
trkSeg_p a = &DYNARR_LAST(trkSeg_t,Dj.anchors);
a->type = SEG_CRVLIN;
- a->width = 0;
+ a->lineWidth = 0;
a->u.c.a0 = 0.0;
a->u.c.a1 = 360.0;
a->u.c.center = pos;
a->u.c.radius = d/2;
a->color = wDrawColorBlue;
DYNARR_SET(trkSeg_t,Dj.anchors,Dj.anchors.cnt+5);
- DrawArrowHeads(&DYNARR_N(trkSeg_t,Dj.anchors,Dj.anchors.cnt-5),pos,angle,FALSE,wDrawColorBlue);
+ DrawArrowHeads(&DYNARR_N(trkSeg_t,Dj.anchors,Dj.anchors.cnt-5),pos,angle,FALSE,
+ wDrawColorBlue);
}
@@ -808,8 +882,8 @@ static coOrd anchor_pos;
static ANGLE_T anchor_angle = 0.0;
static STATUS_T CmdJoin(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
/*
* Join 2 tracks.
*/
@@ -827,17 +901,20 @@ static STATUS_T CmdJoin(
BOOL_T ok;
wControl_p controls[2];
char * labels[1];
+ trkSeg_p p;
switch (action&0xFF) {
case C_START:
if (joinPLs[0].control==NULL) {
- ParamCreateControls(&joinPG, NULL);
+ ParamCreateControls(&joinPG, NULL);
}
- if (selectedTrackCount==0)
+ if (selectedTrackCount==0) {
InfoMessage( _("Left click - join with track") );
- else
- InfoMessage( _("Left click - join with track, Shift Left click - move to join") );
+ } else {
+ InfoMessage(
+ _("Left click - join with track, Shift Left click - move to join") );
+ }
DYNARR_RESET(trkSeg_t,Dj.anchors);
Dj.state = 0;
Dj.joinMoveState = 0;
@@ -845,70 +922,86 @@ static STATUS_T CmdJoin(
/*ParamGroupRecord( &easementPG );*/
infoSubst = FALSE;
anchor_trk = NULL;
- if (easementVal < 0.0)
+ if (easementVal < 0.0) {
+ commandContext = I2VP(cornuJoinTrack);
return CmdCornu(action, pos);
+ }
return C_CONTINUE;
case wActionMove:
anchor_trk = NULL;
DYNARR_RESET(rkSeg_t,Dj.anchors);
- if ((easementVal < 0) && Dj.joinMoveState == 0 )
+ if ((easementVal < 0) && Dj.joinMoveState == 0 ) {
+ commandContext = I2VP(cornuJoinTrack);
return CmdCornu(action, pos);
- if ( Dj.state >= 2) return C_CONTINUE;
- if ( (trk = OnTrack( &pos, FALSE, TRUE )) == NULL)
+ }
+ if ( Dj.state >= 2) { return C_CONTINUE; }
+ if ( (trk = OnTrack( &pos, FALSE, TRUE )) == NULL) {
return C_CONTINUE;
- if (!CheckTrackLayer( trk ) )
+ }
+ if (!CheckTrackLayer( trk ) ) {
return C_CONTINUE;
- if ((Dj.state > 0) && (trk == Dj.inp[0].trk))
+ }
+ if ((Dj.state > 0) && (trk == Dj.inp[0].trk)) {
return C_CONTINUE;
+ }
trackParams_t moveParams;
- if (!GetTrackParams( PARAMS_1ST_JOIN, trk, pos, &moveParams ))
+ if (!GetTrackParams( PARAMS_1ST_JOIN, trk, pos, &moveParams )) {
return C_CONTINUE;
+ }
if (moveParams.type == curveTypeBezier || moveParams.type == curveTypeCornu) {
if (!(easementVal<0)) {
return C_CONTINUE;
}
}
ep = PickUnconnectedEndPointSilent(pos,trk);
- if (ep <0) return C_CONTINUE;
- if (IsClose(FindDistance(GetTrkEndPos(trk,ep),pos)))
+ if (ep <0) { return C_CONTINUE; }
+ if (IsClose(FindDistance(GetTrkEndPos(trk,ep),pos))) {
anchor_angle = GetTrkEndAngle(trk,ep);
- else
+ } else {
anchor_angle = FindAngle(pos,GetTrkEndPos(trk,ep));
+ }
anchor_trk = trk;
anchor_pos = pos;
AddAnchorJoin(pos,anchor_angle);
break;
-
+
case C_DOWN:
- if ( !Dj.cornuMode && ((Dj.state == 0 && (MyGetKeyState() & WKEY_SHIFT) != 0) || Dj.joinMoveState != 0) )
+ if ( !Dj.cornuMode && ((Dj.state == 0 && (MyGetKeyState() & WKEY_SHIFT) != 0)
+ || Dj.joinMoveState != 0) ) {
return DoMoveToJoin( pos );
+ }
if (easementVal < 0.0 && Dj.joinMoveState == 0) {
Dj.cornuMode = TRUE;
+ commandContext = I2VP(cornuJoinTrack);
return CmdCornu(action, pos);
}
DYNARR_SET( trkSeg_t, tempSegs_da, 3 );
tempSegs(0).color = drawColorBlack;
- tempSegs(0).width = 0;
+ tempSegs(0).lineWidth = 0;
tempSegs(1).color = drawColorBlack;
- tempSegs(1).width = 0;
+ tempSegs(1).lineWidth = 0;
tempSegs(2).color = drawColorBlack;
- tempSegs(2).width = 0;
- tempSegs_da.cnt = 0;
+ tempSegs(2).lineWidth = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
Dj.joinMoveState = 0;
-/* Populate (Dj.inp[0]) and check for connecting abutting tracks */
+ /* Populate (Dj.inp[0]) and check for connecting abutting tracks */
if (Dj.state == 0) {
- if ( (Dj.inp[0].trk = OnTrack( &pos, TRUE, TRUE )) == NULL)
+ if ( (Dj.inp[0].trk = OnTrack( &pos, TRUE, TRUE )) == NULL) {
return C_CONTINUE;
- if (!CheckTrackLayer( Dj.inp[0].trk ) )
+ }
+ if (!CheckTrackLayer( Dj.inp[0].trk ) ) {
return C_CONTINUE;
+ }
Dj.inp[0].pos = pos;
-LOG( log_join, 1, ("JOIN: 1st track %d @[%0.3f %0.3f]\n",
- GetTrkIndex(Dj.inp[0].trk), Dj.inp[0].pos.x, Dj.inp[1].pos.y ) )
- if (!GetTrackParams( PARAMS_1ST_JOIN, Dj.inp[0].trk, pos, &Dj.inp[0].params ))
+ LOG( log_join, 1, ("JOIN: 1st track %d @[%0.3f %0.3f]\n",
+ GetTrkIndex(Dj.inp[0].trk), Dj.inp[0].pos.x, Dj.inp[1].pos.y ) )
+ if (!GetTrackParams( PARAMS_1ST_JOIN, Dj.inp[0].trk, pos, &Dj.inp[0].params )) {
return C_CONTINUE;
- if (Dj.inp[0].params.type == curveTypeBezier || Dj.inp[0].params.type == curveTypeCornu) {
+ }
+ if (Dj.inp[0].params.type == curveTypeBezier
+ || Dj.inp[0].params.type == curveTypeCornu) {
if (!(easementVal<0 && Dj.cornuMode)) {
ErrorMessage( MSG_JOIN_NOTBEZIERORCORNU);
return C_CONTINUE;
@@ -929,34 +1022,42 @@ LOG( log_join, 1, ("JOIN: 1st track %d @[%0.3f %0.3f]\n",
ParamGroupRecord(&joinPG);
return C_CONTINUE;
} else {
- if ( (Dj.inp[1].trk = OnTrack( &pos, FALSE, TRUE )) == NULL)
+ if ( (Dj.inp[1].trk = OnTrack( &pos, FALSE, TRUE )) == NULL) {
return C_CONTINUE;
- if (!CheckTrackLayer( Dj.inp[1].trk ) )
+ }
+ if (!CheckTrackLayer( Dj.inp[1].trk ) ) {
return C_CONTINUE;
+ }
Dj.inp[1].pos = pos;
- if (!GetTrackParams( PARAMS_2ND_JOIN, Dj.inp[1].trk, pos, &Dj.inp[1].params ))
+ if (!GetTrackParams( PARAMS_2ND_JOIN, Dj.inp[1].trk, pos, &Dj.inp[1].params )) {
return C_CONTINUE;
+ }
if ( Dj.inp[0].trk == Dj.inp[1].trk ) {
ErrorMessage( MSG_JOIN_SAME );
return C_CONTINUE;
}
- if (infoSubst)
+ if (infoSubst) {
InfoSubstituteControls(NULL, NULL);
+ }
infoSubst = FALSE;
Dj.inp[1].realType = GetTrkType(Dj.inp[1].trk);
- if ( IsCurveCircle( Dj.inp[0].trk ) )
- Dj.inp[0].params.ep = PickArcEndPt( Dj.inp[0].params.arcP, Dj.inp[0].pos, pos );
- if ( IsCurveCircle( Dj.inp[1].trk ) )
- Dj.inp[1].params.ep = PickArcEndPt( Dj.inp[1].params.arcP, pos, Dj.inp[0].pos );
-
-LOG( log_join, 1, (" 2nd track %d, @[%0.3f %0.3f] EP0=%d EP1=%d\n",
- GetTrkIndex(Dj.inp[1].trk), Dj.inp[1].pos.x, Dj.inp[1].pos.y,
- Dj.inp[0].params.ep, Dj.inp[1].params.ep ) )
-LOG( log_join, 1, ("P1=[%0.3f %0.3f]\n", pos.x, pos.y ) )
+ if ( IsCurveCircle( Dj.inp[0].trk ) ) {
+ Dj.inp[0].params.ep = PickArcEndPt( Dj.inp[0].params.arcP, Dj.inp[0].pos,
+ pos );
+ }
+ if ( IsCurveCircle( Dj.inp[1].trk ) ) {
+ Dj.inp[1].params.ep = PickArcEndPt( Dj.inp[1].params.arcP, pos,
+ Dj.inp[0].pos );
+ }
+
+ LOG( log_join, 1, (" 2nd track %d, @[%0.3f %0.3f] EP0=%d EP1=%d\n",
+ GetTrkIndex(Dj.inp[1].trk), Dj.inp[1].pos.x, Dj.inp[1].pos.y,
+ Dj.inp[0].params.ep, Dj.inp[1].params.ep ) )
+ LOG( log_join, 1, ("P1=[%0.3f %0.3f]\n", pos.x, pos.y ) )
BOOL_T only_merge = FALSE;
if ( (Dj.inp[0].params.ep >=0) &&
- (GetTrkEndTrk(Dj.inp[0].trk,Dj.inp[0].params.ep) != NULL)) {
+ (GetTrkEndTrk(Dj.inp[0].trk,Dj.inp[0].params.ep) != NULL)) {
if (GetTrkEndTrk(Dj.inp[0].trk,Dj.inp[0].params.ep) != Dj.inp[1].trk) {
only_merge = TRUE;
ErrorMessage( MSG_TRK_ALREADY_CONN, _("First") );
@@ -964,14 +1065,15 @@ LOG( log_join, 1, ("P1=[%0.3f %0.3f]\n", pos.x, pos.y ) )
}
}
if ( (Dj.inp[1].params.ep >= 0) &&
- (GetTrkEndTrk(Dj.inp[1].trk,Dj.inp[1].params.ep) != NULL)) {
+ (GetTrkEndTrk(Dj.inp[1].trk,Dj.inp[1].params.ep) != NULL)) {
if (GetTrkEndTrk(Dj.inp[1].trk,Dj.inp[1].params.ep) != Dj.inp[0].trk) {
only_merge = TRUE;
ErrorMessage( MSG_TRK_ALREADY_CONN, _("Second") );
return C_CONTINUE;
}
}
- if (Dj.inp[1].params.type == curveTypeBezier || Dj.inp[1].params.type == curveTypeCornu) {
+ if (Dj.inp[1].params.type == curveTypeBezier
+ || Dj.inp[1].params.type == curveTypeCornu) {
if (!(easementVal<0 && Dj.cornuMode)) {
ErrorMessage( MSG_JOIN_NOTBEZIERORCORNU);
return C_CONTINUE;
@@ -979,25 +1081,27 @@ LOG( log_join, 1, ("P1=[%0.3f %0.3f]\n", pos.x, pos.y ) )
}
rc = C_CONTINUE;
if ( MergeTracks( Dj.inp[0].trk, Dj.inp[0].params.ep,
- Dj.inp[1].trk, Dj.inp[1].params.ep ) ) {
+ Dj.inp[1].trk, Dj.inp[1].params.ep ) ) {
rc = C_TERMINATE;
} else if (only_merge) {
rc = C_TERMINATE;
} else if ( Dj.inp[0].params.ep >= 0 && Dj.inp[1].params.ep >= 0 ) {
if ( Dj.inp[0].params.type == curveTypeStraight &&
- Dj.inp[1].params.type == curveTypeStraight &&
- ExtendStraightToJoin( Dj.inp[0].trk, Dj.inp[0].params.ep,
- Dj.inp[1].trk, Dj.inp[1].params.ep ) )
+ Dj.inp[1].params.type == curveTypeStraight &&
+ ExtendStraightToJoin( Dj.inp[0].trk, Dj.inp[0].params.ep,
+ Dj.inp[1].trk, Dj.inp[1].params.ep ) ) {
rc = C_TERMINATE;
+ }
if ( ConnectAbuttingTracks( Dj.inp[0].trk, Dj.inp[0].params.ep,
- Dj.inp[1].trk, Dj.inp[1].params.ep ) )
+ Dj.inp[1].trk, Dj.inp[1].params.ep ) ) {
rc = C_TERMINATE;
+ }
}
if ( rc == C_TERMINATE ) {
return rc;
}
if ( QueryTrack( Dj.inp[0].trk, Q_CANNOT_BE_ON_END ) ||
- QueryTrack( Dj.inp[1].trk, Q_CANNOT_BE_ON_END ) ) {
+ QueryTrack( Dj.inp[1].trk, Q_CANNOT_BE_ON_END ) ) {
ErrorMessage( MSG_JOIN_EASEMENTS );
return C_CONTINUE;
}
@@ -1005,23 +1109,27 @@ LOG( log_join, 1, ("P1=[%0.3f %0.3f]\n", pos.x, pos.y ) )
Dj.state = 2;
Dj.jRes.flip = FALSE;
}
- tempSegs_da.cnt = 0;
/* no break */
-
+
case C_MOVE:
- if (easementVal < 0 && Dj.cornuMode)
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ if (easementVal < 0 && Dj.cornuMode) {
+ commandContext = I2VP(cornuJoinTrack);
return CmdCornu(action, pos);
+ }
-LOG( log_join, 3, ("P1=[%0.3f %0.3f]\n", pos.x, pos.y ) )
- if (Dj.state != 2)
+ LOG( log_join, 3, ("P1=[%0.3f %0.3f]\n", pos.x, pos.y ) )
+ if (Dj.state != 2) {
return C_CONTINUE;
+ }
DYNARR_RESET(trkSeg_t,Dj.anchors);
//Fix Pos onto the line of the second track
if (Dj.inp[1].params.type == curveTypeStraight) {
- ANGLE_T a = NormalizeAngle(FindAngle(Dj.inp[1].params.lineOrig,pos)-Dj.inp[1].params.angle);
+ ANGLE_T a = NormalizeAngle(FindAngle(Dj.inp[1].params.lineOrig,
+ pos)-Dj.inp[1].params.angle);
DIST_T d = FindDistance(Dj.inp[1].params.lineOrig,pos);
Translate(&pos,Dj.inp[1].params.lineOrig,Dj.inp[1].params.angle,d*cos(D2R(a)));
} else {
@@ -1030,33 +1138,39 @@ LOG( log_join, 3, ("P1=[%0.3f %0.3f]\n", pos.x, pos.y ) )
}
if ((desired_radius != 0.0) &&
- ((Dj.inp[0].params.type == curveTypeStraight) || (Dj.inp[0].params.type == curveTypeCurve)) &&
- ((Dj.inp[1].params.type == curveTypeStraight) || (Dj.inp[1].params.type == curveTypeCurve)) &&
- Dj.jRes.type==curveTypeCurve
- ) {
+ ((Dj.inp[0].params.type == curveTypeStraight)
+ || (Dj.inp[0].params.type == curveTypeCurve)) &&
+ ((Dj.inp[1].params.type == curveTypeStraight)
+ || (Dj.inp[1].params.type == curveTypeCurve)) &&
+ Dj.jRes.type==curveTypeCurve
+ ) {
ANGLE_T na0=0.0,na1=0.0;
- coOrd end0, end1;
+// coOrd end0, end1;
ANGLE_T a0,a1;
- end0 = GetTrkEndPos(Dj.inp[0].trk,Dj.inp[0].params.ep);
- end1 = GetTrkEndPos(Dj.inp[1].trk,Dj.inp[1].params.ep);
+// end0 = GetTrkEndPos(Dj.inp[0].trk,Dj.inp[0].params.ep);
+// end1 = GetTrkEndPos(Dj.inp[1].trk,Dj.inp[1].params.ep);
if (Dj.inp[0].params.type == curveTypeStraight) {
- a0 = DifferenceBetweenAngles(Dj.inp[0].params.angle,FindAngle(Dj.jRes.pos[0], pos));
+ a0 = DifferenceBetweenAngles(Dj.inp[0].params.angle,FindAngle(Dj.jRes.pos[0],
+ pos));
na0 = NormalizeAngle( Dj.inp[0].params.angle +
- ((a0>0.0)?90.0:-90.0));
+ ((a0>0.0)?90.0:-90.0));
} else {
na0 = Dj.inp[0].params.arcA0;
- if (FindDistance(Dj.inp[0].params.arcP,pos)<Dj.inp[0].params.arcR)
+ if (FindDistance(Dj.inp[0].params.arcP,pos)<Dj.inp[0].params.arcR) {
na0 = NormalizeAngle(na0+180.0);
+ }
}
//Now Second Line offset
if (Dj.inp[1].params.type == curveTypeStraight) {
- a1 = DifferenceBetweenAngles(Dj.inp[1].params.angle,FindAngle(pos, Dj.jRes.pos[0]));
+ a1 = DifferenceBetweenAngles(Dj.inp[1].params.angle,FindAngle(pos,
+ Dj.jRes.pos[0]));
na1 = NormalizeAngle( Dj.inp[1].params.angle +
- ((a1>0.0)?90.0:-90.0));
+ ((a1>0.0)?90.0:-90.0));
} else {
na1 = Dj.inp[1].params.arcA0;
- if (FindDistance(Dj.inp[1].params.arcP,Dj.jRes.pos[0])<Dj.inp[1].params.arcR)
+ if (FindDistance(Dj.inp[1].params.arcP,Dj.jRes.pos[0])<Dj.inp[1].params.arcR) {
na1 = NormalizeAngle(na1+180.0);
+ }
}
coOrd pos1 = pos;
if (AdjustPosToRadius(&pos1,desired_radius+(Dj.jointD[0].x), na0, na1)) {
@@ -1064,10 +1178,11 @@ LOG( log_join, 3, ("P1=[%0.3f %0.3f]\n", pos.x, pos.y ) )
beyond = 1.0;
if (Dj.inp[1].params.type == curveTypeStraight) {
FindPos( &off, &beyond, pos1, Dj.inp[1].params.lineOrig, Dj.inp[1].params.angle,
- FindDistance(Dj.inp[1].params.lineOrig,Dj.inp[1].params.lineEnd) );
+ FindDistance(Dj.inp[1].params.lineOrig,Dj.inp[1].params.lineEnd) );
} else if (Dj.inp[1].params.type == curveTypeCurve) {
ANGLE_T a = FindAngle(Dj.inp[1].params.arcP,pos1);
- if ((a>Dj.inp[1].params.arcA0+Dj.inp[1].params.arcA1) || (a< Dj.inp[1].params.arcA0)) {
+ if ((a>Dj.inp[1].params.arcA0+Dj.inp[1].params.arcA1)
+ || (a< Dj.inp[1].params.arcA0)) {
beyond = 1.0;
}
}
@@ -1075,9 +1190,9 @@ LOG( log_join, 3, ("P1=[%0.3f %0.3f]\n", pos.x, pos.y ) )
if (beyond>-0.01 && IsClose(FindDistance(pos,pos1))) {
pos = pos1;
DYNARR_APPEND(trkSeg_t,Dj.anchors,1);
- trkSeg_p p = &DYNARR_LAST(trkSeg_t,Dj.anchors);
+ p = &DYNARR_LAST(trkSeg_t,Dj.anchors);
p->type= SEG_CRVLIN;
- p->width = 0;
+ p->lineWidth = 0;
p->color = wDrawColorBlue;
p->u.c.center = pos;
p->u.c.a1= 360.0;
@@ -1088,16 +1203,15 @@ LOG( log_join, 3, ("P1=[%0.3f %0.3f]\n", pos.x, pos.y ) )
}
-
- tempSegs_da.cnt = 0;
- tempSegs(0).color = drawColorBlack;
ok = FALSE;
-/* Populate (Dj.inp[1]) */
+ /* Populate (Dj.inp[1]) */
if ( QueryTrack(Dj.inp[1].trk,Q_REFRESH_JOIN_PARAMS_ON_MOVE) ) {
- if ( !GetTrackParams( PARAMS_2ND_JOIN, Dj.inp[1].trk, pos, &Dj.inp[1].params ) )
+ if ( !GetTrackParams( PARAMS_2ND_JOIN, Dj.inp[1].trk, pos,
+ &Dj.inp[1].params ) ) {
return C_CONTINUE;
+ }
}
@@ -1106,19 +1220,20 @@ LOG( log_join, 3, ("P1=[%0.3f %0.3f]\n", pos.x, pos.y ) )
case curveTypeCurve:
normalAngle = FindAngle( Dj.inp[1].params.arcP, pos );
Dj.inp[1].params.angle = NormalizeAngle( normalAngle +
- ((Dj.inp[1].params.ep==0)?-90.0:90.0));
+ ((Dj.inp[1].params.ep==0)?-90.0:90.0));
PointOnCircle( &Dj.inp[1].pos, Dj.inp[1].params.arcP,
- Dj.inp[1].params.arcR, normalAngle );
- if (Dj.inp[0].params.ep == Dj.inp[1].params.ep)
+ Dj.inp[1].params.arcR, normalAngle );
+ if (Dj.inp[0].params.ep == Dj.inp[1].params.ep) {
normalAngle = NormalizeAngle( normalAngle + 180.0 );
+ }
break;
case curveTypeStraight:
FindPos( &off, &beyond, pos, Dj.inp[1].params.lineOrig, Dj.inp[1].params.angle,
- DIST_INF );
+ DIST_INF );
Translate( &Dj.inp[1].pos, Dj.inp[1].params.lineOrig, Dj.inp[1].params.angle,
- off.x );
+ off.x );
normalAngle = NormalizeAngle( Dj.inp[1].params.angle +
- ((Dj.inp[0].params.ep==0)?-90.0:90.0) );
+ ((Dj.inp[0].params.ep==0)?-90.0:90.0) );
break;
case curveTypeNone:
case curveTypeBezier:
@@ -1126,23 +1241,27 @@ LOG( log_join, 3, ("P1=[%0.3f %0.3f]\n", pos.x, pos.y ) )
break;
}
-/* Compute the radius of the 2 tracks, for ComputeE() */
- for (inx=0;inx<2;inx++)
+ /* Compute the radius of the 2 tracks, for ComputeE() */
+ for (inx=0; inx<2; inx++)
if (Dj.inp[inx].params.type == curveTypeCurve) {
eR[inx] = Dj.inp[inx].params.arcR;
- if (Dj.inp[inx].params.ep == inx)
+ if (Dj.inp[inx].params.ep == inx) {
eR[inx] = - eR[inx];
- } else
+ }
+ } else {
eR[inx] = 0.0;
+ }
- if (!AdjustJoint( FALSE, 0.0, eR, normalAngle ))
+ if (!AdjustJoint( FALSE, 0.0, eR, normalAngle )) {
goto errorReturn;
- /*return C_CONTINUE;*/
+ }
+ /*return C_CONTINUE;*/
if (beyond < -0.000001) {
#ifdef VERBOSE
-printf("pos=[%0.3f,%0.3f] lineOrig=[%0.3f,%0.3f], angle=%0.3f = off=[%0.3f,%0.3f], beyond=%0.3f\n",
-pos.x, pos.y, Dj.inp[1].params.lineOrig.x, Dj.inp[1].params.lineOrig.y, Dj.inp[1].params.angle, off.x, off.y, beyond );
+ printf("pos=[%0.3f,%0.3f] lineOrig=[%0.3f,%0.3f], angle=%0.3f = off=[%0.3f,%0.3f], beyond=%0.3f\n",
+ pos.x, pos.y, Dj.inp[1].params.lineOrig.x, Dj.inp[1].params.lineOrig.y,
+ Dj.inp[1].params.angle, off.x, off.y, beyond );
#endif
InfoMessage( _("Beyond end of 2nd track") );
goto errorReturn;
@@ -1150,34 +1269,35 @@ pos.x, pos.y, Dj.inp[1].params.lineOrig.x, Dj.inp[1].params.lineOrig.y, Dj.inp[1
Dj.inp_pos[0] = Dj.jRes.pos[0];
Dj.inp_pos[1] = Dj.jRes.pos[1];
-LOG( log_join, 3, (" -E POS0=[%0.3f %0.3f] POS1=[%0.3f %0.3f]\n",
- Dj.jRes.pos[0].x, Dj.jRes.pos[0].y,
- Dj.jRes.pos[1].x, Dj.jRes.pos[1].y ) )
+ LOG( log_join, 3, (" -E POS0=[%0.3f %0.3f] POS1=[%0.3f %0.3f]\n",
+ Dj.jRes.pos[0].x, Dj.jRes.pos[0].y,
+ Dj.jRes.pos[1].x, Dj.jRes.pos[1].y ) )
if ( Dj.jointD[0].x!=0.0 || Dj.jointD[1].x!=0.0 ) {
-/* Compute the transition-curve, hopefully twice is enough */
+ /* Compute the transition-curve, hopefully twice is enough */
a1 = Dj.inp[1].params.angle + (Dj.jointD[1].negate?-90.0:+90.0);
if ((!AdjustJoint( TRUE, a1, eR, normalAngle )) ||
- (!AdjustJoint( TRUE, a1, eR, normalAngle )) )
+ (!AdjustJoint( TRUE, a1, eR, normalAngle )) ) {
goto errorReturn;
- /*return C_CONTINUE;*/
+ }
+ /*return C_CONTINUE;*/
if (logTable(log_join).level >= 3) {
Translate( &p1, Dj.jRes.pos[1], a1+180.0, Dj.jointD[1].x );
LogPrintf(" X0=%0.3f, P1=[%0.3f %0.3f]\n",
- FindDistance( Dj.inp_pos[0], Dj.jRes.pos[0] ), p1.x, p1.y );
+ FindDistance( Dj.inp_pos[0], Dj.jRes.pos[0] ), p1.x, p1.y );
LogPrintf(" E+ POS0=[%0.3f %0.3f]..[%0.3f %0.3f] POS1=[%0.3f %0.3f]..[%0.3f %0.3f]\n",
- Dj.inp_pos[0].x, Dj.inp_pos[0].y,
- Dj.jRes.pos[0].x, Dj.jRes.pos[0].y,
- p1.x, p1.y, Dj.jRes.pos[1].x, Dj.jRes.pos[1].y );
+ Dj.inp_pos[0].x, Dj.inp_pos[0].y,
+ Dj.jRes.pos[0].x, Dj.jRes.pos[0].y,
+ p1.x, p1.y, Dj.jRes.pos[1].x, Dj.jRes.pos[1].y );
}
}
switch ( Dj.inp[0].params.type ) {
case curveTypeStraight:
FindPos( &off, &beyond, Dj.inp_pos[0], Dj.inp[0].params.lineOrig,
- Dj.inp[0].params.angle, DIST_INF );
+ Dj.inp[0].params.angle, DIST_INF );
if (beyond < 0.0) {
InfoMessage(_("Beyond end of 1st track"));
goto errorReturn;
@@ -1191,10 +1311,11 @@ LOG( log_join, 3, (" -E POS0=[%0.3f %0.3f] POS1=[%0.3f %0.3f]\n",
d = DIST_INF;
} else {
a = FindAngle( Dj.inp[0].params.arcP, Dj.inp_pos[0] );
- if (Dj.inp[0].params.ep == 0)
+ if (Dj.inp[0].params.ep == 0) {
a1 = NormalizeAngle( Dj.inp[0].params.arcA0+Dj.inp[0].params.arcA1-a );
- else
+ } else {
a1 = NormalizeAngle( a-Dj.inp[0].params.arcA0 );
+ }
d = Dj.inp[0].params.arcR * a1 * 2.0*M_PI/360.0;
}
break;
@@ -1204,7 +1325,8 @@ LOG( log_join, 3, (" -E POS0=[%0.3f %0.3f] POS1=[%0.3f %0.3f]\n",
InfoMessage( _("First Track Type not supported for non-Cornu Join") );
goto errorReturn;
default:
- AbortProg( "cmdJoin - unknown type[0]" );
+ CHECKMSG( FALSE, ( "cmdJoin - unknown type[0] %d",
+ (int)(Dj.inp[0].params.type) ) );
}
d -= Dj.jointD[0].d0;
if ( d <= minLength ) {
@@ -1223,10 +1345,11 @@ LOG( log_join, 3, (" -E POS0=[%0.3f %0.3f] POS1=[%0.3f %0.3f]\n",
d = DIST_INF;
} else {
a = FindAngle( Dj.inp[1].params.arcP, Dj.inp_pos[1] );
- if (Dj.inp[1].params.ep == 0)
+ if (Dj.inp[1].params.ep == 0) {
a1 = NormalizeAngle( Dj.inp[1].params.arcA0+Dj.inp[1].params.arcA1-a );
- else
+ } else {
a1 = NormalizeAngle( a-Dj.inp[1].params.arcA0 );
+ }
d = Dj.inp[1].params.arcR * a1 * 2.0*M_PI/360.0;
}
break;
@@ -1236,7 +1359,7 @@ LOG( log_join, 3, (" -E POS0=[%0.3f %0.3f] POS1=[%0.3f %0.3f]\n",
InfoMessage( _("Second Track Type not supported for non-Cornu Join") );
goto errorReturn;
default:
- AbortProg( "cmdJoin - unknown type[1]" );
+ CHECKMSG( FALSE, ( "cmdJoin - unknown type[1]", Dj.inp[1].params.type ) );
}
d -= Dj.jointD[1].d0;
if ( d <= minLength ) {
@@ -1261,35 +1384,42 @@ LOG( log_join, 3, (" -E POS0=[%0.3f %0.3f] POS1=[%0.3f %0.3f]\n",
}
}
-/* Setup temp track */
+ /* Setup temp track */
for ( ep=0; ep<2; ep++ ) {
switch( Dj.inp[ep].params.type ) {
case curveTypeCurve:
- tempSegs(tempSegs_da.cnt).type = SEG_CRVTRK;
- tempSegs(tempSegs_da.cnt).u.c.center = Dj.inp[ep].params.arcP;
- tempSegs(tempSegs_da.cnt).u.c.radius = Dj.inp[ep].params.arcR;
- if (IsCurveCircle( Dj.inp[ep].trk ))
+ DYNARR_APPEND( trkSeg_t, tempSegs_da, 1 );
+ p = &DYNARR_LAST( trkSeg_t, tempSegs_da );
+ p->type = SEG_CRVTRK;
+ p->color = drawColorBlack;
+ p->u.c.center = Dj.inp[ep].params.arcP;
+ p->u.c.radius = Dj.inp[ep].params.arcR;
+ if (IsCurveCircle( Dj.inp[ep].trk )) {
break;
+ }
a = FindAngle( Dj.inp[ep].params.arcP, Dj.inp_pos[ep] );
a1 = NormalizeAngle( a-Dj.inp[ep].params.arcA0 );
- if (a1 <= Dj.inp[ep].params.arcA1)
+ if (a1 <= Dj.inp[ep].params.arcA1) {
break;
+ }
if (Dj.inp[ep].params.ep == 0) {
- tempSegs(tempSegs_da.cnt).u.c.a0 = a;
- tempSegs(tempSegs_da.cnt).u.c.a1 = NormalizeAngle(Dj.inp[ep].params.arcA0-a);
+ p->u.c.a0 = a;
+ p->u.c.a1 = NormalizeAngle(Dj.inp[ep].params.arcA0-a);
} else {
- tempSegs(tempSegs_da.cnt).u.c.a0 = Dj.inp[ep].params.arcA0+Dj.inp[ep].params.arcA1;
- tempSegs(tempSegs_da.cnt).u.c.a1 = a1-Dj.inp[ep].params.arcA1;
+ p->u.c.a0 = Dj.inp[ep].params.arcA0
+ +Dj.inp[ep].params.arcA1;
+ p->u.c.a1 = a1-Dj.inp[ep].params.arcA1;
}
- tempSegs_da.cnt++;
break;
case curveTypeStraight:
if ( FindDistance( Dj.inp[ep].params.lineOrig, Dj.inp[ep].params.lineEnd ) <
- FindDistance( Dj.inp[ep].params.lineOrig, Dj.inp_pos[ep] ) ) {
- tempSegs(tempSegs_da.cnt).type = SEG_STRTRK;
- tempSegs(tempSegs_da.cnt).u.l.pos[0] = Dj.inp[ep].params.lineEnd;
- tempSegs(tempSegs_da.cnt).u.l.pos[1] = Dj.inp_pos[ep];
- tempSegs_da.cnt++;
+ FindDistance( Dj.inp[ep].params.lineOrig, Dj.inp_pos[ep] ) ) {
+ DYNARR_APPEND( trkSeg_t, tempSegs_da, 1 );
+ p = &DYNARR_LAST( trkSeg_t, tempSegs_da );
+ p->type = SEG_STRTRK;
+ p->color = drawColorBlack;
+ p->u.l.pos[0] = Dj.inp[ep].params.lineEnd;
+ p->u.l.pos[1] = Dj.inp_pos[ep];
}
break;
default:
@@ -1299,46 +1429,48 @@ LOG( log_join, 3, (" -E POS0=[%0.3f %0.3f] POS1=[%0.3f %0.3f]\n",
ok = TRUE;
errorReturn:
- if (!ok)
- tempSegs(tempSegs_da.cnt).color = drawColorRed;
+ DYNARR_APPEND( trkSeg_t, tempSegs_da, 1 );
+ p = &DYNARR_LAST( trkSeg_t, tempSegs_da );
+ p->color = ok ? drawColorBlack : drawColorRed;
switch( Dj.jRes.type ) {
case curveTypeCurve:
- tempSegs(tempSegs_da.cnt).type = SEG_CRVTRK;
- tempSegs(tempSegs_da.cnt).u.c.center = Dj.jRes.arcP;
- tempSegs(tempSegs_da.cnt).u.c.radius = Dj.jRes.arcR;
- tempSegs(tempSegs_da.cnt).u.c.a0 = Dj.jRes.arcA0;
- tempSegs(tempSegs_da.cnt).u.c.a1 = Dj.jRes.arcA1;
- tempSegs_da.cnt++;
+ p->type = SEG_CRVTRK;
+ p->u.c.center = Dj.jRes.arcP;
+ p->u.c.radius = Dj.jRes.arcR;
+ p->u.c.a0 = Dj.jRes.arcA0;
+ p->u.c.a1 = Dj.jRes.arcA1;
break;
case curveTypeStraight:
- tempSegs(tempSegs_da.cnt).type = SEG_STRTRK;
- tempSegs(tempSegs_da.cnt).u.l.pos[0] = Dj.jRes.pos[0];
- tempSegs(tempSegs_da.cnt).u.l.pos[1] = Dj.jRes.pos[1];
- tempSegs_da.cnt++;
+ p->type = SEG_STRTRK;
+ p->u.l.pos[0] = Dj.jRes.pos[0];
+ p->u.l.pos[1] = Dj.jRes.pos[1];
break;
case curveTypeNone:
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
break;
default:
- AbortProg( "Bad track type %d", Dj.jRes.type );
+ CHECKMSG( FALSE, ( "Bad track type %d", Dj.jRes.type ) );
}
- if (!ok)
+ if (!ok) {
Dj.jRes.type = curveTypeNone;
+ }
return C_CONTINUE;
-
+
case C_UP:
if (Dj.state == 0) {
- if (easementVal<0 && Dj.cornuMode)
+ if (easementVal<0 && Dj.cornuMode) {
+ commandContext = I2VP(cornuJoinTrack);
return CmdCornu(action, pos);
- else
+ } else {
return C_CONTINUE;
+ }
}
if (Dj.state == 1) {
InfoMessage( _("Select 2nd track") );
return C_CONTINUE;
}
tempSegs(0).color = drawColorBlack;
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
if (Dj.jRes.type == curveTypeNone) {
Dj.state = 1;
InfoMessage( _("Select 2nd track") );
@@ -1352,7 +1484,7 @@ errorReturn:
break;
case curveTypeCurve:
trk = NewCurvedTrack( Dj.jRes.arcP, Dj.jRes.arcR,
- Dj.jRes.arcA0, Dj.jRes.arcA1, 0 );
+ Dj.jRes.arcA0, Dj.jRes.arcA1, 0 );
break;
case curveTypeNone:
case curveTypeBezier:
@@ -1372,24 +1504,27 @@ errorReturn:
wPrefSetFloat("misc", message, desired_radius);
}
if ( (!JoinTracks( Dj.inp[0].trk, Dj.inp[0].params.ep, Dj.inp_pos[0],
- trk, ep, Dj.jRes.pos[0], &Dj.jointD[0] ) ) ||
- (!JoinTracks( Dj.inp[1].trk, Dj.inp[1].params.ep, Dj.inp_pos[1],
- trk, 1-ep, Dj.jRes.pos[1], &Dj.jointD[1] ) ) )
+ trk, ep, Dj.jRes.pos[0], &Dj.jointD[0] ) ) ||
+ (!JoinTracks( Dj.inp[1].trk, Dj.inp[1].params.ep, Dj.inp_pos[1],
+ trk, 1-ep, Dj.jRes.pos[1], &Dj.jointD[1] ) ) ) {
rc = C_ERROR;
+ }
UndoEnd();
DrawNewTrack( Dj.inp[0].trk );
DrawNewTrack( Dj.inp[1].trk );
DrawNewTrack( trk );
- if (infoSubst)
+ if (infoSubst) {
InfoSubstituteControls(NULL, NULL);
+ }
infoSubst = FALSE;
return rc;
case C_CANCEL:
SetAllTrackSelect( FALSE );
- if (infoSubst)
+ if (infoSubst) {
InfoSubstituteControls(NULL, NULL);
+ }
infoSubst = FALSE;
break;
@@ -1398,20 +1533,25 @@ errorReturn:
HighlightSelectedTracks(NULL, TRUE, TRUE);
if ( Dj.joinMoveState == 1 || Dj.state == 1 ) {
DrawFillCircle( &tempD, Dj.inp[0].pos, 0.10*mainD.scale, selectedColor );
- } else if (easementVal<0 && Dj.joinMoveState == 0)
+ } else if (easementVal<0 && Dj.joinMoveState == 0) {
+ commandContext = I2VP(cornuJoinTrack);
return CmdCornu(action,pos);
- if (Dj.anchors.cnt)
- DrawSegs(&tempD, zero, 0.0, &(((trkSeg_t *)Dj.anchors.ptr)[0]), Dj.anchors.cnt,trackGauge,wDrawColorBlack);
- DrawSegs( &tempD, zero, 0.0, &tempSegs(0), tempSegs_da.cnt, trackGauge, wDrawColorBlack );
+ }
+ DrawSegsDA(&tempD, NULL, zero, 0.0, &Dj.anchors, trackGauge, wDrawColorBlack,
+ 0);
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &tempSegs_da, trackGauge, wDrawColorBlack,
+ 0 );
break;
case C_TEXT:
case C_OK:
SetAllTrackSelect( FALSE );
- if (easementVal<0 && Dj.cornuMode)
+ if (easementVal<0 && Dj.cornuMode) {
return CmdCornu(action,pos);
- if (infoSubst)
+ }
+ if (infoSubst) {
InfoSubstituteControls(NULL, NULL);
+ }
infoSubst = FALSE;
}
@@ -1427,14 +1567,18 @@ errorReturn:
*
*/
-#include "bitmaps/join.xpm"
-#include "bitmaps/join-line.xpm"
+#include "bitmaps/join.xpm3"
+#include "bitmaps/join-line.xpm3"
void InitCmdJoin( wMenu_p menu )
{
ButtonGroupBegin( _("Join"), "cmdJoinSetCmd", _("Join") );
- joinCmdInx = AddMenuButton( menu, CmdJoin, "cmdJoinTrack", _("Join Track"), wIconCreatePixMap(join_xpm[iconSize]), LEVEL0_50, IC_STICKY|IC_POPUP|IC_WANT_MOVE, ACCL_JOIN, NULL );
- AddMenuButton( menu, CmdJoinLine, "cmdJoinLine", _("Join Lines"), wIconCreatePixMap(join_line_xpm[iconSize]), LEVEL0_50, IC_STICKY|IC_POPUP|IC_WANT_MOVE, ACCL_JOIN, NULL );
+ AddMenuButton( menu, CmdJoin, "cmdJoinTrack", _("Join Track"),
+ wIconCreatePixMap(join_xpm3[iconSize]), LEVEL0_50,
+ IC_STICKY|IC_POPUP|IC_WANT_MOVE, ACCL_JOIN, NULL );
+ AddMenuButton( menu, CmdJoinLine, "cmdJoinLine", _("Join Lines"),
+ wIconCreatePixMap(join_line_xpm3[iconSize]), LEVEL0_50,
+ IC_STICKY|IC_POPUP|IC_WANT_MOVE, ACCL_JOIN, NULL );
ButtonGroupEnd();
/** @logcmd @showrefby join=n cjoin.c Log Join Lines and Tracks command */
log_join = LogFindIndex( "join" );
diff --git a/app/bin/cjoin.h b/app/bin/cjoin.h
index eabdce0..710cb72 100644
--- a/app/bin/cjoin.h
+++ b/app/bin/cjoin.h
@@ -16,7 +16,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
*/
#ifndef HAVE_CJOIN_H
@@ -29,24 +29,29 @@
#define E_ERROR (2)
typedef struct {
- DIST_T x;
- DIST_T r0, r1;
- DIST_T l0, l1;
- DIST_T d0, d1;
- BOOL_T flip, negate, Scurve;
- } easementData_t;
+ DIST_T x;
+ DIST_T r0, r1;
+ DIST_T l0, l1;
+ DIST_T d0, d1;
+ BOOL_T flip, negate, Scurve;
+} easementData_t;
extern DIST_T easementVal;
extern DIST_T easeR;
extern DIST_T easeL;
STATUS_T ComputeJoint( DIST_T, DIST_T, easementData_t * );
-BOOL_T JoinTracks( track_p, EPINX_T, coOrd, track_p, EPINX_T, coOrd, easementData_t * );
+BOOL_T JoinTracks( track_p, EPINX_T, coOrd, track_p, EPINX_T, coOrd,
+ easementData_t * );
void UndoJoint( track_p, EPINX_T, track_p, EPINX_T );
-void DrawJointTrack( drawCmd_p, coOrd, ANGLE_T, DIST_T, DIST_T, DIST_T, DIST_T, BOOL_T, BOOL_T, BOOL_T, track_p, EPINX_T, EPINX_T, DIST_T, wDrawColor, long );
-DIST_T JointDistance( coOrd *, coOrd, ANGLE_T, DIST_T, DIST_T, DIST_T, DIST_T, BOOL_T, BOOL_T );
-coOrd GetJointSegEndPos( coOrd, ANGLE_T, DIST_T, DIST_T, DIST_T, DIST_T, BOOL_T, BOOL_T, BOOL_T, EPINX_T, ANGLE_T * );
-DIST_T JointDescriptionDistance(coOrd pos, track_p trk, coOrd * dpos, BOOL_T show_hidden, BOOL_T * hidden);
+void DrawJointTrack( drawCmd_p, coOrd, ANGLE_T, DIST_T, DIST_T, DIST_T, DIST_T,
+ BOOL_T, BOOL_T, BOOL_T, track_p, EPINX_T, EPINX_T, DIST_T, wDrawColor, long );
+DIST_T JointDistance( coOrd *, coOrd, ANGLE_T, DIST_T, DIST_T, DIST_T, DIST_T,
+ BOOL_T, BOOL_T );
+coOrd GetJointSegEndPos( coOrd, ANGLE_T, DIST_T, DIST_T, DIST_T, DIST_T, BOOL_T,
+ BOOL_T, BOOL_T, EPINX_T, ANGLE_T * );
+DIST_T JointDescriptionDistance(coOrd pos, track_p trk, coOrd * dpos,
+ BOOL_T show_hidden, BOOL_T * hidden);
#endif // !HAVE_CJOIN_H
diff --git a/app/bin/cmisc.c b/app/bin/cmisc.c
index 9685503..580c681 100644
--- a/app/bin/cmisc.c
+++ b/app/bin/cmisc.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 "common.h"
@@ -27,28 +27,26 @@
#include "cselect.h"
#include "track.h"
#include "common-ui.h"
+#include "draw.h"
EXPORT wIndex_t describeCmdInx;
EXPORT BOOL_T inDescribeCmd;
-extern wIndex_t selectCmdInx;
-extern wIndex_t joinCmdInx;
-extern wIndex_t modifyCmdInx;
-
static track_p descTrk;
static descData_p descData;
static descUpdate_t descUpdateFunc;
static coOrd descOrig, descSize;
static POS_T descBorder;
static wDrawColor descColor = 0;
-static BOOL_T descUndoStarted;
+EXPORT BOOL_T descUndoStarted;
static BOOL_T descNeedDrawHilite;
static wWinPix_t describeW_posy;
static wWinPix_t describeCmdButtonEnd;
static wMenu_p descPopupM;
-static unsigned int editableLayerList[NUM_LAYERS]; /**< list of non-frozen layers */
+static unsigned int
+editableLayerList[NUM_LAYERS]; /**< list of non-frozen layers */
static int * layerValue; /**pointer to current Layer (int *) */
static paramFloatRange_t rdata = { 0, 0, 100, PDO_NORANGECHECK_HIGH|PDO_NORANGECHECK_LOW };
@@ -58,28 +56,28 @@ static char * pivotLabels[] = { N_("First"), N_("Middle"), N_("End"), NULL };
static char * boxLabels[] = { "", NULL };
static paramData_t describePLs[] = {
#define I_FLOAT_0 (0)
- { PD_FLOAT, NULL, "F1", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F2", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F3", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F4", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F5", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F6", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F7", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F8", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F9", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F10", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F11", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F12", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F13", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F14", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F15", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F16", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F17", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F18", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F19", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F20", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F1", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F2", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F3", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F4", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F5", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F6", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F7", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F8", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F9", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F10", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F11", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F12", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F13", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F14", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F15", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F16", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F17", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F18", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F19", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F20", PDO_NOPREF, &rdata },
{ PD_FLOAT, NULL, "F21", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F22", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F22", PDO_NOPREF, &rdata },
{ PD_FLOAT, NULL, "F23", PDO_NOPREF, &rdata },
{ PD_FLOAT, NULL, "F24", PDO_NOPREF, &rdata },
{ PD_FLOAT, NULL, "F25", PDO_NOPREF, &rdata },
@@ -90,7 +88,7 @@ static paramData_t describePLs[] = {
{ PD_FLOAT, NULL, "F30", PDO_NOPREF, &rdata },
{ PD_FLOAT, NULL, "F31", PDO_NOPREF, &rdata },
{ PD_FLOAT, NULL, "F32", PDO_NOPREF, &rdata },
- { PD_FLOAT, NULL, "F33", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F33", PDO_NOPREF, &rdata },
{ PD_FLOAT, NULL, "F34", PDO_NOPREF, &rdata },
{ PD_FLOAT, NULL, "F35", PDO_NOPREF, &rdata },
{ PD_FLOAT, NULL, "F36", PDO_NOPREF, &rdata },
@@ -101,49 +99,49 @@ static paramData_t describePLs[] = {
#define I_FLOAT_N I_FLOAT_0+40
#define I_LONG_0 I_FLOAT_N
- { PD_LONG, NULL, "I1", PDO_NOPREF, &idata },
- { PD_LONG, NULL, "I2", PDO_NOPREF, &idata },
- { PD_LONG, NULL, "I3", PDO_NOPREF, &idata },
- { PD_LONG, NULL, "I4", PDO_NOPREF, &idata },
- { PD_LONG, NULL, "I5", PDO_NOPREF, &idata },
+ { PD_LONG, NULL, "I1", PDO_NOPREF, &idata },
+ { PD_LONG, NULL, "I2", PDO_NOPREF, &idata },
+ { PD_LONG, NULL, "I3", PDO_NOPREF, &idata },
+ { PD_LONG, NULL, "I4", PDO_NOPREF, &idata },
+ { PD_LONG, NULL, "I5", PDO_NOPREF, &idata },
#define I_LONG_N I_LONG_0+5
#define I_STRING_0 I_LONG_N
- { PD_STRING, NULL, "S1", PDO_NOPREF, I2VP(300) },
- { PD_STRING, NULL, "S2", PDO_NOPREF, I2VP(300) },
- { PD_STRING, NULL, "S3", PDO_NOPREF, I2VP(300) },
- { PD_STRING, NULL, "S4", PDO_NOPREF, I2VP(300) },
+ { PD_STRING, NULL, "S1", PDO_NOPREF, I2VP(300) },
+ { PD_STRING, NULL, "S2", PDO_NOPREF, I2VP(300) },
+ { PD_STRING, NULL, "S3", PDO_NOPREF, I2VP(300) },
+ { PD_STRING, NULL, "S4", PDO_NOPREF, I2VP(300) },
#define I_STRING_N I_STRING_0+4
#define I_LAYER_0 I_STRING_N
- { PD_DROPLIST, NULL, "Y1", PDO_NOPREF, I2VP(150), NULL, 0 },
+ { PD_DROPLIST, NULL, "Y1", PDO_NOPREF, I2VP(150), NULL, 0 },
#define I_LAYER_N I_LAYER_0+1
#define I_COLOR_0 I_LAYER_N
- { PD_COLORLIST, NULL, "C1", PDO_NOPREF, NULL, N_("Color"), BC_HORZ|BC_NOBORDER },
+ { PD_COLORLIST, NULL, "C1", PDO_NOPREF, NULL, N_("Color"), BC_HORZ|BC_NOBORDER },
#define I_COLOR_N I_COLOR_0+1
#define I_LIST_0 I_COLOR_N
- { PD_DROPLIST, NULL, "L1", PDO_NOPREF, I2VP(150), NULL, 0 },
- { PD_DROPLIST, NULL, "L2", PDO_NOPREF, I2VP(150), NULL, 0 },
+ { PD_DROPLIST, NULL, "L1", PDO_NOPREF, I2VP(150), NULL, 0 },
+ { PD_DROPLIST, NULL, "L2", PDO_NOPREF, I2VP(150), NULL, 0 },
{ PD_DROPLIST, NULL, "L3", PDO_NOPREF, I2VP(150), NULL, 0 },
{ PD_DROPLIST, NULL, "L4", PDO_NOPREF, I2VP(150), NULL, 0 },
#define I_LIST_N I_LIST_0+4
#define I_EDITLIST_0 I_LIST_N
- { PD_DROPLIST, NULL, "LE1", PDO_NOPREF, I2VP(150), NULL, BL_EDITABLE },
+ { PD_DROPLIST, NULL, "LE1", PDO_NOPREF, I2VP(150), NULL, BL_EDITABLE },
#define I_EDITLIST_N I_EDITLIST_0+1
#define I_TEXT_0 I_EDITLIST_N
- { PD_TEXT, NULL, "T1", PDO_NOPREF, &tdata, NULL, BT_HSCROLL },
+ { PD_TEXT, NULL, "T1", PDO_NOPREF, &tdata, NULL, BT_HSCROLL },
#define I_TEXT_N I_TEXT_0+1
#define I_PIVOT_0 I_TEXT_N
- { PD_RADIO, NULL, "P1", PDO_NOPREF, pivotLabels, N_("Lock"), BC_HORZ|BC_NOBORDER, 0 },
+ { PD_RADIO, NULL, "P1", PDO_NOPREF, pivotLabels, N_("Lock"), BC_HORZ|BC_NOBORDER, 0 },
#define I_PIVOT_N I_PIVOT_0+1
#define I_TOGGLE_0 I_PIVOT_N
- { PD_TOGGLE, NULL, "boxed1", PDO_NOPREF|PDO_DLGHORZ, boxLabels, N_("Boxed"), BC_HORZ|BC_NOBORDER },
+ { PD_TOGGLE, NULL, "boxed1", PDO_NOPREF|PDO_DLGHORZ, boxLabels, N_("Boxed"), BC_HORZ|BC_NOBORDER },
{ PD_TOGGLE, NULL, "boxed2", PDO_NOPREF|PDO_DLGHORZ, boxLabels, N_("Boxed"), BC_HORZ|BC_NOBORDER },
{ PD_TOGGLE, NULL, "boxed3", PDO_NOPREF|PDO_DLGHORZ, boxLabels, N_("Boxed"), BC_HORZ|BC_NOBORDER },
{ PD_TOGGLE, NULL, "boxed4", PDO_NOPREF|PDO_DLGHORZ, boxLabels, N_("Boxed"), BC_HORZ|BC_NOBORDER },
@@ -161,16 +159,16 @@ static paramGroup_t describePG = { "describe", 0, describePLs, COUNT( describePL
void
CreateEditableLayersList()
{
- int i = 0;
- int j = 0;
+ int i = 0;
+ int j = 0;
- while (i < NUM_LAYERS) {
- if (!GetLayerFrozen(i)) {
- editableLayerList[j++] = i;
- }
+ while (i < NUM_LAYERS) {
+ if (!GetLayerFrozen(i)) {
+ editableLayerList[j++] = i;
+ }
- i++;
- }
+ i++;
+ }
}
/**
@@ -183,244 +181,254 @@ CreateEditableLayersList()
static int
SearchEditableLayerList(unsigned int layer)
{
- int i;
+ int i;
- for (i = 0; i < NUM_LAYERS; i++) {
- if (editableLayerList[i] == layer) {
- return (i);
- }
- }
+ for (i = 0; i < NUM_LAYERS; i++) {
+ if (editableLayerList[i] == layer) {
+ return (i);
+ }
+ }
- return (-1);
+ return (-1);
}
static void DrawDescHilite(BOOL_T selected)
{
- if (descNeedDrawHilite == FALSE) {
- return;
- }
-
- if (descColor==0) {
- descColor = wDrawColorGray(87);
- }
- DrawRectangle(&tempD, descOrig, descSize, selected?descColor:wDrawColorBlue, DRAW_TRANSPARENT);
+ if (descNeedDrawHilite == FALSE) {
+ return;
+ }
+
+ if (descColor==0) {
+ descColor = wDrawColorGray(87);
+ }
+ DrawRectangle(&tempD, descOrig, descSize, selected?descColor:wDrawColorBlue,
+ DRAW_TRANSPARENT);
}
static void DescribeUpdate(
- paramGroup_p pg,
- int inx,
- void * data)
+ paramGroup_p pg,
+ int inx,
+ void * data)
{
- coOrd hi, lo;
- descData_p ddp;
-
- if (inx < 0) {
- return;
- }
-
- ddp = (descData_p)pg->paramPtr[inx].context;
-
- if ((ddp->mode&(DESC_RO|DESC_IGNORE)) != 0) {
- return;
- }
-
- if (ddp->type == DESC_PIVOT) {
- return;
- }
-
- if (!descUndoStarted) {
- UndoStart(_("Change Track"), "Change Track");
- descUndoStarted = TRUE;
- }
-
- if (!descTrk) {
- return; // In case timer pops after OK
- }
-
- UndoModify(descTrk);
- descUpdateFunc(descTrk, (int)(ddp-descData), descData, FALSE);
-
- if (descTrk) {
- GetBoundingBox(descTrk, &hi, &lo);
- if ((ddp->mode&DESC_NOREDRAW) == 0) {
- descOrig = lo;
- descSize = hi;
- descOrig.x -= descBorder;
- descOrig.y -= descBorder;
- descSize.x -= descOrig.x-descBorder;
- descSize.y -= descOrig.y-descBorder;
- }
-
-
- if (OFF_D(mapD.orig, mapD.size, descOrig, descSize)) {
- ErrorMessage(MSG_MOVE_OUT_OF_BOUNDS);
- }
- }
-
-
- for (inx = 0; inx < COUNT( describePLs ); inx++) {
- if ((describePLs[inx].option & PDO_DLGIGNORE) != 0) {
- continue;
- }
-
- ddp = (descData_p)describePLs[inx].context;
-
- if ((ddp->mode&DESC_IGNORE) != 0) {
- continue;
- }
-
- if ((ddp->mode&DESC_CHANGE) == 0) {
- if ((ddp->mode&DESC_CHANGE2) == 0)
- continue;
- }
-
- if (ddp->mode&DESC_RO) {
- wControlActive(ddp->control0, FALSE);
- } else {
- wControlActive(ddp->control0, TRUE);
- }
-
- ddp->mode &= ~DESC_CHANGE;
- if (ddp->type == DESC_POS) { //POS Has two fields
- if (ddp->mode&DESC_CHANGE2) {
- ddp->mode &= ~DESC_CHANGE2; //Second time
- } else {
- ddp->mode |= DESC_CHANGE2; //First time
- }
- }
-
- ParamLoadControl(&describePG, inx);
- }
+ coOrd hi, lo;
+ descData_p ddp;
+
+ if (inx < 0) {
+ return;
+ }
+
+ ddp = (descData_p)pg->paramPtr[inx].context;
+
+ if ((ddp->mode&(DESC_RO|DESC_IGNORE)) != 0) {
+ return;
+ }
+
+ if (ddp->type == DESC_PIVOT) {
+ return;
+ }
+
+ if (!descUndoStarted) {
+ UndoStart(_("Change Track"), "Change Track");
+ descUndoStarted = TRUE;
+ }
+
+ if (!descTrk) {
+ return; // In case timer pops after OK
+ }
+
+ UndoModify(descTrk);
+ descUpdateFunc(descTrk, (int)(ddp-descData), descData, FALSE);
+
+ if (descTrk) {
+ GetBoundingBox(descTrk, &hi, &lo);
+ if ((ddp->mode&DESC_NOREDRAW) == 0) {
+ descOrig = lo;
+ descSize = hi;
+ descOrig.x -= descBorder;
+ descOrig.y -= descBorder;
+ descSize.x -= descOrig.x-descBorder;
+ descSize.y -= descOrig.y-descBorder;
+ }
+
+
+ if (OFF_D(mapD.orig, mapD.size, descOrig, descSize)) {
+ ErrorMessage(MSG_MOVE_OUT_OF_BOUNDS);
+ }
+ }
+
+
+ for (inx = 0; inx < COUNT( describePLs ); inx++) {
+ if ((describePLs[inx].option & PDO_DLGIGNORE) != 0) {
+ continue;
+ }
+
+ ddp = (descData_p)describePLs[inx].context;
+
+ if ((ddp->mode&DESC_IGNORE) != 0) {
+ continue;
+ }
+
+ if ((ddp->mode&DESC_CHANGE) == 0) {
+ if ((ddp->mode&DESC_CHANGE2) == 0) {
+ continue;
+ }
+ }
+
+ if (ddp->mode&DESC_RO) {
+ wControlActive(ddp->control0, FALSE);
+ } else {
+ wControlActive(ddp->control0, TRUE);
+ }
+
+ ddp->mode &= ~DESC_CHANGE;
+ if (ddp->type == DESC_POS) { //POS Has two fields
+ if (ddp->mode&DESC_CHANGE2) {
+ ddp->mode &= ~DESC_CHANGE2; //Second time
+ } else {
+ ddp->mode |= DESC_CHANGE2; //First time
+ }
+ }
+
+ ParamLoadControl(&describePG, inx);
+ }
}
static void DescOk(void * junk)
{
- wHide(describePG.win);
-
- if (layerValue && *layerValue>=0) {
- SetTrkLayer(descTrk, editableLayerList[*layerValue]); //int found that is really in the parm controls.
- }
- layerValue = NULL; // wipe out reference
- descUpdateFunc(descTrk, -1, descData, !descUndoStarted);
- descTrk = NULL;
-
- if (descUndoStarted) {
- UndoEnd();
- descUndoStarted = FALSE;
- }
-
- descNeedDrawHilite = FALSE;
- Reset(); // DescOk
+ wHide(describePG.win);
+
+ if (layerValue && *layerValue>=0) {
+ SetTrkLayer(descTrk,
+ editableLayerList[*layerValue]); //int found that is really in the parm controls.
+ }
+ layerValue = NULL; // wipe out reference
+ descUpdateFunc(descTrk, -1, descData, !descUndoStarted);
+ descTrk = NULL;
+
+ if (descUndoStarted) {
+ UndoEnd();
+ descUndoStarted = FALSE;
+ }
+
+ descNeedDrawHilite = FALSE;
+ if (programMode == MODE_DESIGN) {
+ Reset(); // DescOk
+ } else {
+ descNeedDrawHilite = FALSE;
+ wSetCursor(mainD.d,defaultCursor);
+ }
}
static struct {
- parameterType pd_type;
- long option;
- int first;
- int last;
+ parameterType pd_type;
+ long option;
+ int first;
+ int last;
} descTypeMap[] = {
- /*NULL*/ { 0, 0 },
- /*POS*/ { PD_FLOAT, PDO_DIM, I_FLOAT_0, I_FLOAT_N },
- /*FLOAT*/ { PD_FLOAT, 0, I_FLOAT_0, I_FLOAT_N },
- /*ANGLE*/ { PD_FLOAT, PDO_ANGLE, I_FLOAT_0, I_FLOAT_N },
- /*LONG*/ { PD_LONG, 0, I_LONG_0, I_LONG_N },
- /*COLOR*/ { PD_LONG, 0, I_COLOR_0, I_COLOR_N },
- /*DIM*/ { PD_FLOAT, PDO_DIM, I_FLOAT_0, I_FLOAT_N },
- /*PIVOT*/ { PD_RADIO, 0, I_PIVOT_0, I_PIVOT_N },
- /*LAYER*/ { PD_DROPLIST,PDO_LISTINDEX, I_LAYER_0, I_LAYER_N },
- /*STRING*/ { PD_STRING,0, I_STRING_0, I_STRING_N },
- /*TEXT*/ { PD_TEXT, PDO_DLGNOLABELALIGN, I_TEXT_0, I_TEXT_N },
- /*LIST*/ { PD_DROPLIST, PDO_LISTINDEX, I_LIST_0, I_LIST_N },
- /*EDITABLELIST*/{ PD_DROPLIST, 0, I_EDITLIST_0, I_EDITLIST_N },
+ /*NULL*/ { 0, 0 },
+ /*POS*/ { PD_FLOAT, PDO_DIM, I_FLOAT_0, I_FLOAT_N },
+ /*FLOAT*/ { PD_FLOAT, 0, I_FLOAT_0, I_FLOAT_N },
+ /*ANGLE*/ { PD_FLOAT, PDO_ANGLE, I_FLOAT_0, I_FLOAT_N },
+ /*LONG*/ { PD_LONG, 0, I_LONG_0, I_LONG_N },
+ /*COLOR*/ { PD_LONG, 0, I_COLOR_0, I_COLOR_N },
+ /*DIM*/ { PD_FLOAT, PDO_DIM, I_FLOAT_0, I_FLOAT_N },
+ /*PIVOT*/ { PD_RADIO, 0, I_PIVOT_0, I_PIVOT_N },
+ /*LAYER*/ { PD_DROPLIST,PDO_LISTINDEX, I_LAYER_0, I_LAYER_N },
+ /*STRING*/ { PD_STRING,0, I_STRING_0, I_STRING_N },
+ /*TEXT*/ { PD_TEXT, PDO_DLGNOLABELALIGN, I_TEXT_0, I_TEXT_N },
+ /*LIST*/ { PD_DROPLIST, PDO_LISTINDEX, I_LIST_0, I_LIST_N },
+ /*EDITABLELIST*/{ PD_DROPLIST, 0, I_EDITLIST_0, I_EDITLIST_N },
/*BOXED*/ { PD_TOGGLE, 0, I_TOGGLE_0, I_TOGGLE_N },
};
/**
* An unused param element is selected from the list of pre-defined param elements and initialized
- * for an element specific param.
- *
+ * for an element specific param.
+ *
* \param ddp Element specific param
* \param valueP the value pointer used by the element
* \param label the label assigned by the element
* \param sep ?
* \return the selected widget
*/
-
-static wControl_p AssignParamToDescribeDialog(descData_p ddp, void * valueP, char * label,
- wWinPix_t sep)
+
+static wControl_p AssignParamToDescribeDialog(descData_p ddp, void * valueP,
+ char * label,
+ wWinPix_t sep)
{
- int inx;
-
- for (inx = descTypeMap[ddp->type].first; inx<descTypeMap[ddp->type].last;
- inx++) {
- if ((describePLs[inx].option & PDO_DLGIGNORE) != 0) {
- describePLs[inx].option = descTypeMap[ddp->type].option;
-
- if (describeW_posy > describeCmdButtonEnd) {
- describePLs[inx].option |= PDO_DLGUNDERCMDBUTT;
- }
-
- if (sep)
- describeW_posy += wControlGetHeight(describePLs[inx].control) + sep;
- describePLs[inx].context = ddp;
- describePLs[inx].valueP = valueP;
- if ((ddp->type == DESC_STRING) && ddp->max_string) {
- describePLs[inx].max_string = ddp->max_string;
- describePLs[inx].option |= PDO_STRINGLIMITLENGTH;
- }
-
- if (label && ddp->type != DESC_TEXT) {
- wControlSetLabel(describePLs[inx].control, label);
- describePLs[inx].winLabel = label;
- } else {
- wControlSetLabel(describePLs[inx].control, "");
- describePLs[inx].winLabel = "";
- }
-
- return describePLs[inx].control;
- }
- }
-
- AbortProg("AssignParamToDescribeDialog: can't find %d", ddp->type);
- return NULL;
+ int inx;
+
+ for (inx = descTypeMap[ddp->type].first; inx<descTypeMap[ddp->type].last;
+ inx++) {
+ if ((describePLs[inx].option & PDO_DLGIGNORE) != 0) {
+ describePLs[inx].option = descTypeMap[ddp->type].option;
+
+ if (describeW_posy > describeCmdButtonEnd) {
+ describePLs[inx].option |= PDO_DLGUNDERCMDBUTT;
+ }
+
+ if (sep) {
+ describeW_posy += wControlGetHeight(describePLs[inx].control) + sep;
+ }
+ describePLs[inx].context = ddp;
+ describePLs[inx].valueP = valueP;
+ if ((ddp->type == DESC_STRING) && ddp->max_string) {
+ describePLs[inx].max_string = ddp->max_string;
+ describePLs[inx].option |= PDO_STRINGLIMITLENGTH;
+ }
+
+ if (label && ddp->type != DESC_TEXT) {
+ wControlSetLabel(describePLs[inx].control, label);
+ describePLs[inx].winLabel = label;
+ } else {
+ wControlSetLabel(describePLs[inx].control, "");
+ describePLs[inx].winLabel = "";
+ }
+
+ return describePLs[inx].control;
+ }
+ }
+
+ CHECKMSG( FALSE, ("AssignParamToDescribeDialog: can't find %d", ddp->type) );
+ return NULL;
}
static void DescribeLayout(
- paramData_t * pd,
- int inx,
- wWinPix_t colX,
- wWinPix_t * x,
- wWinPix_t * y)
+ paramData_t * pd,
+ int inx,
+ wWinPix_t colX,
+ wWinPix_t * x,
+ wWinPix_t * y)
{
- descData_p ddp;
- wWinPix_t w, h;
-
- if (inx < 0) {
- return;
- }
-
- if (pd->context == NULL) {
- return;
- }
-
- ddp = (descData_p)pd->context;
- *y = ddp->posy;
-
- if (ddp->type == DESC_POS &&
- ddp->control0 != pd->control) {
- *x += wControlGetWidth(pd->control) + 3;
- } else if (ddp->type == DESC_TEXT) {
- w = tdata.width;
- h = tdata.height;
- wTextSetSize((wText_p)pd->control, w, h);
- }
-
- wControlShow(pd->control, TRUE);
+ descData_p ddp;
+ wWinPix_t w, h;
+
+ if (inx < 0) {
+ return;
+ }
+
+ if (pd->context == NULL) {
+ return;
+ }
+
+ ddp = (descData_p)pd->context;
+ *y = ddp->posy;
+
+ if (ddp->type == DESC_POS &&
+ ddp->control0 != pd->control) {
+ *x += wControlGetWidth(pd->control) + 3;
+ } else if (ddp->type == DESC_TEXT) {
+ w = tdata.width;
+ h = tdata.height;
+ wTextSetSize((wText_p)pd->control, w, h);
+ }
+
+ wControlShow(pd->control, TRUE);
}
@@ -436,82 +444,82 @@ static void DescribeLayout(
*
*/
-static wList_p setLayerL;
+//static wList_p setLayerL;
void DoDescribe(char * title, track_p trk, descData_p data, descUpdate_t update)
{
- int inx;
- descData_p ddp;
- char * label;
- int ro_mode;
-
- if (!inDescribeCmd) {
- return;
- }
-
- CreateEditableLayersList();
- descTrk = trk;
- descData = data;
- descUpdateFunc = update;
- describeW_posy = 0;
-
- if (describePG.win == NULL) {
- /* SDB 5.13.2005 */
- ParamCreateDialog(&describePG, _("Description"), _("Done"), DescOk,
- (paramActionCancelProc) DescribeCancel,
- TRUE, DescribeLayout, F_RECALLPOS,
- DescribeUpdate);
- describeCmdButtonEnd = wControlBelow((wControl_p)describePG.helpB);
- }
-
- for (inx=0; inx<COUNT( describePLs ); inx++) {
- describePLs[inx].option = PDO_DLGIGNORE;
- wControlShow(describePLs[inx].control, FALSE);
- }
-
- ro_mode = (GetLayerFrozen(GetTrkLayer(trk))?DESC_RO:0);
-
- if (ro_mode)
- for (ddp=data; ddp->type != DESC_NULL; ddp++) {
- if (ddp->mode&DESC_IGNORE) {
- continue;
- }
-
- ddp->mode |= DESC_RO;
- }
-
- for (ddp=data; ddp->type != DESC_NULL; ddp++) {
- if (ddp->mode&DESC_IGNORE) {
- continue;
- }
-
- label = _(ddp->label);
- ddp->posy = describeW_posy;
- ddp->control0 = AssignParamToDescribeDialog(ddp, ddp->valueP, label,
- (ddp->type == DESC_POS?3:3));
- if (ddp->type != DESC_LAYER)
- wControlActive(ddp->control0, (!(ddp->mode&DESC_RO)));
-
- switch (ddp->type) {
- case DESC_POS:
- ddp->control1 = AssignParamToDescribeDialog(ddp,
- &((coOrd*)(ddp->valueP))->y,
- NULL,
- 0);
- wControlActive(ddp->control1, (!(ddp->mode&DESC_RO)));
- break;
-
- case DESC_LAYER:
- wListClear((wList_p)ddp->control0); // Rebuild list on each invocation
-
- if (ro_mode) {
- char *layerFormattedName;
- layerFormattedName = FormatLayerName(*(int *)(ddp->valueP));
- wListAddValue((wList_p)ddp->control0, layerFormattedName, NULL, I2VP(inx));
- free(layerFormattedName);
- *(int *)(ddp->valueP) = 0;
- layerValue = (int *)(ddp->valueP);
- wControlActive(ddp->control0, FALSE);
- } else {
+ int inx;
+ descData_p ddp;
+ char * label;
+ int ro_mode;
+
+ if (!inDescribeCmd) {
+ return;
+ }
+
+ CreateEditableLayersList();
+ descTrk = trk;
+ descData = data;
+ descUpdateFunc = update;
+ describeW_posy = 0;
+
+ if (describePG.win == NULL) {
+ /* SDB 5.13.2005 */
+ ParamCreateDialog(&describePG, _("Description"), _("Done"), DescOk,
+ (paramActionCancelProc) DescribeCancel,
+ TRUE, DescribeLayout, F_RECALLPOS,
+ DescribeUpdate);
+ describeCmdButtonEnd = wControlBelow((wControl_p)describePG.helpB);
+ }
+
+ for (inx=0; inx<COUNT( describePLs ); inx++) {
+ describePLs[inx].option = PDO_DLGIGNORE;
+ wControlShow(describePLs[inx].control, FALSE);
+ }
+
+ ro_mode = (GetLayerFrozen(GetTrkLayer(trk))?DESC_RO:0);
+
+ if (ro_mode)
+ for (ddp=data; ddp->type != DESC_NULL; ddp++) {
+ if (ddp->mode&DESC_IGNORE) {
+ continue;
+ }
+
+ ddp->mode |= DESC_RO;
+ }
+
+ for (ddp=data; ddp->type != DESC_NULL; ddp++) {
+ if (ddp->mode&DESC_IGNORE) {
+ continue;
+ }
+
+ label = _(ddp->label);
+ ddp->posy = describeW_posy;
+ ddp->control0 = AssignParamToDescribeDialog(ddp, ddp->valueP, label, 3);
+ if (ddp->type != DESC_LAYER) {
+ wControlActive(ddp->control0, (!(ddp->mode&DESC_RO)));
+ }
+
+ switch (ddp->type) {
+ case DESC_POS:
+ ddp->control1 = AssignParamToDescribeDialog(ddp,
+ &((coOrd*)(ddp->valueP))->y,
+ NULL,
+ 0);
+ wControlActive(ddp->control1, (!(ddp->mode&DESC_RO)));
+ break;
+
+ case DESC_LAYER:
+ wListClear((wList_p)ddp->control0); // Rebuild list on each invocation
+
+ if (ro_mode) {
+ char *layerFormattedName;
+ layerFormattedName = FormatLayerName(*(int *)(ddp->valueP));
+ wListAddValue((wList_p)ddp->control0, layerFormattedName, NULL, I2VP(inx));
+ free(layerFormattedName);
+ *(int *)(ddp->valueP) = 0;
+ layerValue = (int *)(ddp->valueP);
+ wControlActive(ddp->control0, FALSE);
+ } else {
for (inx = 0; inx<NUM_LAYERS; inx++) {
char *layerFormattedName;
layerFormattedName = FormatLayerName(editableLayerList[inx]);
@@ -522,28 +530,28 @@ void DoDescribe(char * title, track_p trk, descData_p data, descUpdate_t update)
*(int *)(ddp->valueP) = SearchEditableLayerList(*(int *)(ddp->valueP));
layerValue = (int *)(ddp->valueP);
wControlActive(ddp->control0, TRUE);
- }
+ }
- break;
+ break;
- default:
- break;
- }
- }
+ default:
+ break;
+ }
+ }
- ParamLayoutDialog(&describePG);
- ParamLoadControls(&describePG);
- sprintf(message, "%s (T%d)", title, GetTrkIndex(trk));
- wWinSetTitle(describePG.win, message);
- wShow(describePG.win);
+ ParamLayoutDialog(&describePG);
+ ParamLoadControls(&describePG);
+ sprintf(message, "%s (T%d)", title, GetTrkIndex(trk));
+ wWinSetTitle(describePG.win, message);
+ wShow(describePG.win);
}
static void DescChange(long changes)
{
if ((changes&CHANGE_UNITS) && describePG.win && wWinIsVisible(describePG.win)) {
- ParamLoadControls(&describePG);
- }
+ ParamLoadControls(&describePG);
+ }
}
/*****************************************************************************
@@ -555,89 +563,90 @@ static void DescChange(long changes)
EXPORT void DescribeCancel(void)
{
- if (describePG.win && wWinIsVisible(describePG.win)) {
- if (descTrk) {
- ASSERT(!IsTrackDeleted(descTrk));
- descUpdateFunc(descTrk, -1, descData, TRUE);
- descTrk = NULL;
+ if (describePG.win && wWinIsVisible(describePG.win)) {
+ if (descTrk) {
+ CHECK(!IsTrackDeleted(descTrk));
+ descUpdateFunc(descTrk, -1, descData, TRUE);
+ descTrk = NULL;
- }
+ }
- wHide(describePG.win);
+ wHide(describePG.win);
- if (descUndoStarted) {
- UndoEnd();
- descUndoStarted = FALSE;
- }
- }
+ if (descUndoStarted) {
+ UndoEnd();
+ descUndoStarted = FALSE;
+ }
+ }
- descNeedDrawHilite = FALSE;
+ descNeedDrawHilite = FALSE;
}
EXPORT STATUS_T CmdDescribe(wAction_t action, coOrd pos)
{
- static track_p trk;
- char msg[STR_SIZE];
-
- switch (action) {
- case C_START:
- InfoMessage(_("Select track to describe +Shift for Frozen"));
- wSetCursor(mainD.d,wCursorQuestion);
- descUndoStarted = FALSE;
- trk = NULL;
- return C_CONTINUE;
-
- case wActionMove:
- trk = OnTrack(&pos, FALSE, FALSE);
- if (trk && GetLayerFrozen(GetTrkLayer(trk)) && !(MyGetKeyState() & WKEY_SHIFT)) {
+ static track_p trk;
+ char msg[STR_SIZE];
+
+ switch (action) {
+ case C_START:
+ InfoMessage(_("Select track to describe +Shift for Frozen"));
+ wSetCursor(mainD.d,wCursorQuestion);
+ descUndoStarted = FALSE;
+ trk = NULL;
+ return C_CONTINUE;
+
+ case wActionMove:
+ trk = OnTrack(&pos, FALSE, FALSE);
+ if (trk && GetLayerFrozen(GetTrkLayer(trk))
+ && !(MyGetKeyState() & WKEY_SHIFT)) {
trk = NULL;
return C_CONTINUE;
}
- return C_CONTINUE;
-
-
- case C_DOWN:
- if ((trk = OnTrack(&pos, FALSE, FALSE)) != NULL) {
- if (GetLayerFrozen(GetTrkLayer(trk)) && !(MyGetKeyState()& WKEY_SHIFT)) {
- InfoMessage("Track is Frozen, Add Shift to Describe");
- trk = NULL;
- return C_CONTINUE;
- }
- if (describePG.win && wWinIsVisible(describePG.win) && descTrk) {
- descUpdateFunc(descTrk, -1, descData, TRUE);
- descTrk = NULL;
- }
-
- descBorder = mainD.scale*0.1;
-
- if (descBorder < trackGauge) {
- descBorder = trackGauge;
- }
-
- inDescribeCmd = TRUE;
- GetBoundingBox(trk, &descSize, &descOrig);
- descOrig.x -= descBorder;
- descOrig.y -= descBorder;
- descSize.x -= descOrig.x-descBorder;
- descSize.y -= descOrig.y-descBorder;
- descNeedDrawHilite = TRUE;
- DescribeTrack(trk, msg, 255);
- inDescribeCmd = FALSE;
- InfoMessage(msg);
- trk = NULL;
- } else {
- InfoMessage("");
- }
-
- return C_CONTINUE;
-
- case C_REDRAW:
-
- if (describePG.win && wWinIsVisible(describePG.win) && descTrk) {
- descNeedDrawHilite = TRUE;
- coOrd lo,hi;
- GetBoundingBox(descTrk,&hi,&lo);
+ return C_CONTINUE;
+
+
+ case C_DOWN:
+ if ((trk = OnTrack(&pos, FALSE, FALSE)) != NULL) {
+ if (GetLayerFrozen(GetTrkLayer(trk)) && !(MyGetKeyState()& WKEY_SHIFT)) {
+ InfoMessage("Track is Frozen, Add Shift to Describe");
+ trk = NULL;
+ return C_CONTINUE;
+ }
+ if (describePG.win && wWinIsVisible(describePG.win) && descTrk) {
+ descUpdateFunc(descTrk, -1, descData, TRUE);
+ descTrk = NULL;
+ }
+
+ descBorder = mainD.scale*0.1;
+
+ if (descBorder < trackGauge) {
+ descBorder = trackGauge;
+ }
+
+ inDescribeCmd = TRUE;
+ GetBoundingBox(trk, &descSize, &descOrig);
+ descOrig.x -= descBorder;
+ descOrig.y -= descBorder;
+ descSize.x -= descOrig.x-descBorder;
+ descSize.y -= descOrig.y-descBorder;
+ descNeedDrawHilite = TRUE;
+ DescribeTrack(trk, msg, 255);
+ inDescribeCmd = FALSE;
+ InfoMessage(msg);
+ trk = NULL;
+ } else {
+ InfoMessage("");
+ }
+
+ return C_CONTINUE;
+
+ case C_REDRAW:
+
+ if (describePG.win && wWinIsVisible(describePG.win) && descTrk) {
+ descNeedDrawHilite = TRUE;
+ coOrd lo,hi;
+ GetBoundingBox(descTrk,&hi,&lo);
descOrig = lo;
descSize = hi;
descOrig.x -= descBorder;
@@ -645,54 +654,53 @@ EXPORT STATUS_T CmdDescribe(wAction_t action, coOrd pos)
descSize.x -= descOrig.x-descBorder;
descSize.y -= descOrig.y-descBorder;
- DrawDescHilite(TRUE);
+ DrawDescHilite(TRUE);
- if (descTrk && QueryTrack(descTrk, Q_IS_DRAW)) {
+ if (descTrk && QueryTrack(descTrk, Q_IS_DRAW)) {
DrawOriginAnchor(descTrk);
}
- } else if (trk){
- DrawTrack(trk,&tempD,wDrawColorPreviewSelected);
- }
+ } else if (trk) {
+ DrawTrack(trk,&tempD,wDrawColorPreviewSelected);
+ }
- break;
+ break;
- case C_CANCEL:
- DescribeCancel();
- wSetCursor(mainD.d,defaultCursor);
- return C_CONTINUE;
+ case C_CANCEL:
+ DescribeCancel();
+ wSetCursor(mainD.d,defaultCursor);
+ return C_CONTINUE;
- case C_CMDMENU:
- menuPos = pos;
- if (!trk) wMenuPopupShow(descPopupM);
- return C_CONTINUE;
- }
+ case C_CMDMENU:
+ menuPos = pos;
+ if (!trk) { wMenuPopupShow(descPopupM); }
+ return C_CONTINUE;
+ }
- return C_CONTINUE;
+ return C_CONTINUE;
}
-#include "bitmaps/describe.xpm"
-
-extern wIndex_t selectCmdInx;
-extern wIndex_t modifyCmdInx;
-extern wIndex_t panCmdInx;
+#include "bitmaps/describe.xpm3"
void InitCmdDescribe(wMenu_p menu)
{
- describeCmdInx = AddMenuButton(menu, CmdDescribe, "cmdDescribe",
- _("Properties"), wIconCreatePixMap(describe_xpm[iconSize]),
- LEVEL0, IC_CANCEL|IC_POPUP|IC_WANT_MOVE|IC_CMDMENU, ACCL_DESCRIBE, NULL);
- RegisterChangeNotification(DescChange);
- ParamRegister(&describePG);
+ describeCmdInx = AddMenuButton(menu, CmdDescribe, "cmdDescribe",
+ _("Properties"), wIconCreatePixMap(describe_xpm3[iconSize]),
+ LEVEL0, IC_CANCEL|IC_POPUP|IC_WANT_MOVE|IC_CMDMENU, ACCL_DESCRIBE, NULL);
+ RegisterChangeNotification(DescChange);
+ ParamRegister(&describePG);
}
void InitCmdDescribe2(wMenu_p menu)
{
- descPopupM = MenuRegister( "Describe Context Menu" );
- wMenuPushCreate(descPopupM, "cmdSelectMode", GetBalloonHelpStr("cmdSelectMode"), 0, DoCommandB, I2VP(selectCmdInx));
- wMenuPushCreate(descPopupM, "cmdModifyMode", GetBalloonHelpStr("cmdModifyMode"), 0, DoCommandB, I2VP(modifyCmdInx));
- wMenuPushCreate(descPopupM, "cmdPanMode", GetBalloonHelpStr("cmdPanMode"), 0, DoCommandB, I2VP(panCmdInx));
+ descPopupM = MenuRegister( "Describe Context Menu" );
+ wMenuPushCreate(descPopupM, "cmdSelectMode", GetBalloonHelpStr("cmdSelectMode"),
+ 0, DoCommandB, I2VP(selectCmdInx));
+ wMenuPushCreate(descPopupM, "cmdModifyMode", GetBalloonHelpStr("cmdModifyMode"),
+ 0, DoCommandB, I2VP(modifyCmdInx));
+ wMenuPushCreate(descPopupM, "cmdPanMode", GetBalloonHelpStr("cmdPanMode"), 0,
+ DoCommandB, I2VP(panCmdInx));
}
diff --git a/app/bin/cmodify.c b/app/bin/cmodify.c
index 1e66e74..491aae3 100644
--- a/app/bin/cmodify.c
+++ b/app/bin/cmodify.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 "cjoin.h"
@@ -34,25 +34,24 @@
#include "layout.h"
#include "cselect.h"
#include "common-ui.h"
+#include "draw.h"
+
+EXPORT wIndex_t modifyCmdInx;
static struct {
- track_p Trk;
- trackParams_t params;
- coOrd pos00, pos00x, pos01;
- ANGLE_T angle;
- curveData_t curveData;
- easementData_t jointD;
- DIST_T r1;
- BOOL_T valid;
- BOOL_T first;
- } Dex;
+ track_p Trk;
+ trackParams_t params;
+ coOrd pos00, pos00x, pos01;
+ ANGLE_T angle;
+ curveData_t curveData;
+ easementData_t jointD;
+ DIST_T r1;
+ BOOL_T valid;
+ BOOL_T first;
+} Dex;
static wMenu_p modPopupM;
-extern wIndex_t selectCmdInx;
-extern wIndex_t joinCmdInx;
-extern wIndex_t describeCmdInx;
-
static dynArr_t anchors_da;
#define anchors(N) DYNARR_N(trkSeg_t,anchors_da,N)
@@ -65,7 +64,8 @@ static BOOL_T modifyProtractorMode;
static BOOL_T modifyExtendMode;
-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);
@@ -76,11 +76,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;
wSetCursor(mainD.d,wCursorNone);
}
-static void CreateCornuAnchor(coOrd p, wBool_t lock) {
+static void CreateCornuAnchor(coOrd p, wBool_t lock)
+{
DIST_T d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
@@ -91,7 +92,7 @@ static void CreateCornuAnchor(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;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
i = anchors_da.cnt-1;
anchors(i).type = SEG_CRVLIN;
@@ -100,42 +101,45 @@ static void CreateCornuAnchor(coOrd p, wBool_t lock) {
anchors(i).u.c.radius = d;
anchors(i).u.c.a0 = 0.0;
anchors(i).u.c.a1 = 360.0;
- anchors(i).width = 0;
+ anchors(i).lineWidth = 0;
wSetCursor(mainD.d,wCursorNone);
}
-static void CreateRadiusAnchor(coOrd p, ANGLE_T a, BOOL_T bi) {
+static void CreateRadiusAnchor(coOrd p, ANGLE_T a, BOOL_T bi)
+{
DYNARR_SET(trkSeg_t,anchors_da,anchors_da.cnt+5);
- DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),p,a,bi,wDrawColorBlue);
+ DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),p,a,bi,
+ wDrawColorBlue);
}
/*
* Call cbezier.c CmdBezModify to alter Bezier Track and Lines.
* Picking a Bezier will allow control point(s) modifications until terminated with "Enter"
*/
-static STATUS_T ModifyBezier(wAction_t action, coOrd pos) {
+static STATUS_T ModifyBezier(wAction_t action, coOrd pos)
+{
STATUS_T rc = C_CONTINUE;
- if (Dex.Trk == NULL) return C_ERROR; //No track picked yet!
+ if (Dex.Trk == NULL) { return C_ERROR; } //No track picked yet!
switch (action&0xFF) {
- case C_START:
- case C_DOWN:
- case C_MOVE:
- case C_UP:
- case C_OK:
- case C_TEXT:
- case wActionMove:
- trackGauge = (IsTrack(Dex.Trk)?GetTrkGauge(Dex.Trk):0.0);
- rc = CmdBezModify(Dex.Trk, action, pos, trackGauge);
- break;
- case C_TERMINATE:
- rc = CmdBezModify(Dex.Trk, action, pos, trackGauge);
- Dex.Trk = NULL;
- modifyBezierMode = FALSE;
- break;
- case C_REDRAW:
- rc = CmdBezModify(Dex.Trk, action, pos, trackGauge);
- break;
+ case C_START:
+ case C_DOWN:
+ case C_MOVE:
+ case C_UP:
+ case C_OK:
+ case C_TEXT:
+ case wActionMove:
+ trackGauge = (IsTrack(Dex.Trk)?GetTrkGauge(Dex.Trk):0.0);
+ rc = CmdBezModify(Dex.Trk, action, pos, trackGauge);
+ break;
+ case C_TERMINATE:
+ rc = CmdBezModify(Dex.Trk, action, pos, trackGauge);
+ Dex.Trk = NULL;
+ modifyBezierMode = FALSE;
+ break;
+ case C_REDRAW:
+ rc = CmdBezModify(Dex.Trk, action, pos, trackGauge);
+ break;
}
return rc;
}
@@ -144,29 +148,30 @@ static STATUS_T ModifyBezier(wAction_t action, coOrd pos) {
* Call ccornu.c CmdCornuModify to alter Cornu Track and Lines.
* Picking a Cornu will allow end point(s) modifications until terminated with "Enter"
*/
-static STATUS_T ModifyCornu(wAction_t action, coOrd pos) {
+static STATUS_T ModifyCornu(wAction_t action, coOrd pos)
+{
STATUS_T rc = C_CONTINUE;
- if (Dex.Trk == NULL) return C_ERROR; //No track picked yet!
+ if (Dex.Trk == NULL) { return C_ERROR; } //No track picked yet!
switch (action&0xFF) {
- case C_LCLICK:
- case C_START:
- case C_DOWN:
- case C_MOVE:
- case C_UP:
- case C_OK:
- case C_TEXT:
- case wActionMove:
- trackGauge = (IsTrack(Dex.Trk)?GetTrkGauge(Dex.Trk):0.0);
- rc = CmdCornuModify(Dex.Trk, action, pos, trackGauge);
- break;
- case C_TERMINATE:
- rc = CmdCornuModify(Dex.Trk, action, pos, trackGauge);
- Dex.Trk = NULL;
- modifyCornuMode = FALSE;
- break;
- case C_REDRAW:
- rc = CmdCornuModify(Dex.Trk, action, pos, trackGauge);
- break;
+ case C_LCLICK:
+ case C_START:
+ case C_DOWN:
+ case C_MOVE:
+ case C_UP:
+ case C_OK:
+ case C_TEXT:
+ case wActionMove:
+ trackGauge = (IsTrack(Dex.Trk)?GetTrkGauge(Dex.Trk):0.0);
+ rc = CmdCornuModify(Dex.Trk, action, pos, trackGauge);
+ break;
+ case C_TERMINATE:
+ rc = CmdCornuModify(Dex.Trk, action, pos, trackGauge);
+ Dex.Trk = NULL;
+ modifyCornuMode = FALSE;
+ break;
+ case C_REDRAW:
+ rc = CmdCornuModify(Dex.Trk, action, pos, trackGauge);
+ break;
}
return rc;
}
@@ -174,64 +179,66 @@ static STATUS_T ModifyCornu(wAction_t action, coOrd pos) {
/*
* Picking a DRAW will allow point modifications until terminated with "Enter"/"Space"
*/
-static STATUS_T ModifyDraw(wAction_t action, coOrd pos) {
+static STATUS_T ModifyDraw(wAction_t action, coOrd pos)
+{
STATUS_T rc = C_CONTINUE;
- if (Dex.Trk == NULL) return C_ERROR; //No item picked yet!
+ if (Dex.Trk == NULL) { return C_ERROR; } //No item picked yet!
switch (action&0xFF) {
- case C_START:
- case C_DOWN:
- case C_MOVE:
- case C_UP:
- rc = ModifyTrack( Dex.Trk, action, pos );
- break;
- case wActionMove:
- rc = ModifyTrack( Dex.Trk, action, pos );
- break;
- case C_TEXT:
- //Delete or '0' - continues
- if ((action>>8 !=32) && (action >>8 !=13) && (action >>8 !=9))
- return ModifyTrack( Dex.Trk, action, pos );
- //Enter/Space/Tab does not
- if ((action>>8 !=32) && (action>>8 != 13) && (action>>8 != 9)) return C_CONTINUE;
- if (((action>>8) == 9 && (MyGetKeyState()&WKEY_SHIFT))) return C_TERMINATE;
- /*no break*/
- case C_OK:
- rc = ModifyTrack( Dex.Trk, C_OK, pos );
- if (rc != C_CONTINUE) modifyDrawMode = FALSE;
- UndoEnd();
- break;
- case C_CONFIRM:
- rc = ModifyTrack( Dex.Trk, action, pos );
- break;
- case C_CANCEL:
- case C_FINISH:
- case C_TERMINATE:
- rc = ModifyTrack( Dex.Trk, action, pos );
- Dex.Trk = NULL;
- modifyDrawMode = FALSE;
- tempSegs_da.cnt = 0;
- rc = C_CONTINUE;
- break;
- case C_REDRAW:
- rc = ModifyTrack( Dex.Trk, action, pos );
- break;
- case C_CMDMENU:
- menuPos = pos;
- rc = ModifyTrack( Dex.Trk, action, pos );
- break;
- case wActionExtKey:
- rc = ModifyTrack( Dex.Trk, action, pos );
- break;
- default:
- break;
+ case C_START:
+ case C_DOWN:
+ case C_MOVE:
+ case C_UP:
+ rc = ModifyTrack( Dex.Trk, action, pos );
+ break;
+ case wActionMove:
+ rc = ModifyTrack( Dex.Trk, action, pos );
+ break;
+ case C_TEXT:
+ //Delete or '0' - continues
+ if ((action>>8 !=32) && (action >>8 !=13) && (action >>8 !=9)) {
+ return ModifyTrack( Dex.Trk, action, pos );
+ }
+ //Enter/Space/Tab does not
+ if ((action>>8 !=32) && (action>>8 != 13) && (action>>8 != 9)) { return C_CONTINUE; }
+ if (((action>>8) == 9 && (MyGetKeyState()&WKEY_SHIFT))) { return C_TERMINATE; }
+ /*no break*/
+ case C_OK:
+ rc = ModifyTrack( Dex.Trk, C_OK, pos );
+ if (rc != C_CONTINUE) { modifyDrawMode = FALSE; }
+ UndoEnd();
+ break;
+ case C_CONFIRM:
+ rc = ModifyTrack( Dex.Trk, action, pos );
+ break;
+ case C_CANCEL:
+ case C_FINISH:
+ case C_TERMINATE:
+ rc = ModifyTrack( Dex.Trk, action, pos );
+ Dex.Trk = NULL;
+ modifyDrawMode = FALSE;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ rc = C_CONTINUE;
+ break;
+ case C_REDRAW:
+ rc = ModifyTrack( Dex.Trk, action, pos );
+ break;
+ case C_CMDMENU:
+ menuPos = pos;
+ rc = ModifyTrack( Dex.Trk, action, pos );
+ break;
+ case wActionExtKey:
+ rc = ModifyTrack( Dex.Trk, action, pos );
+ break;
+ default:
+ break;
}
return rc;
}
STATUS_T CmdModify(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
/*
* Extend and alter a track.
* Extend a track with a curve or straight and optionally an easement.
@@ -253,19 +260,22 @@ STATUS_T CmdModify(
static DIST_T trackGauge;
if ( changeTrackMode ) {
- if ( action == C_MOVE )
+ if ( action == C_MOVE ) {
action = C_RMOVE;
- if ( action == C_UP )
+ }
+ if ( action == C_UP ) {
action = C_RUP;
+ }
}
switch (action&0xFF) {
case C_START:
DYNARR_RESET(trkSeg_t,anchors_da);
- InfoMessage( _("Select a track to modify, Left-Click change length, Right-Click to add flextrack") );
+ InfoMessage(
+ _("Select a track to modify, Left-Click change length, Right-Click to add flextrack") );
Dex.Trk = NULL;
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
/*ChangeParameter( &easementPD );*/
trackGauge = 0.0;
changeTrackMode = modifyRulerMode = FALSE;
@@ -281,21 +291,25 @@ STATUS_T CmdModify(
case C_DOWN:
case C_LDOUBLE:
DYNARR_RESET(trkSeg_t,anchors_da);
- if (modifyProtractorMode)
+ if (modifyProtractorMode) {
return ModifyProtractor(C_DOWN, pos);
- if (modifyBezierMode)
+ }
+ if (modifyBezierMode) {
return ModifyBezier(C_DOWN, pos);
- if (modifyCornuMode)
+ }
+ if (modifyCornuMode) {
return ModifyCornu(C_DOWN, pos);
- if (modifyDrawMode)
+ }
+ if (modifyDrawMode) {
return ModifyDraw(C_DOWN, pos);
+ }
DYNARR_SET( trkSeg_t, tempSegs_da, 2 );
tempSegs(0).color = wDrawColorBlack;
- tempSegs(0).width = 0;
+ tempSegs(0).lineWidth = 0;
tempSegs(1).color = wDrawColorBlack;
- tempSegs(1).width = 0;
- tempSegs_da.cnt = 0;
+ tempSegs(1).lineWidth = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
Dex.Trk = OnTrack( &pos, FALSE, FALSE );
//Dex.Trk = trk;
if (Dex.Trk == NULL) {
@@ -320,7 +334,7 @@ STATUS_T CmdModify(
if (ModifyBezier(C_START, pos) != C_CONTINUE) { //Call Start with track
modifyBezierMode = FALSE; //Function rejected Bezier
Dex.Trk =NULL;
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
}
return C_CONTINUE; //That's it
}
@@ -329,7 +343,7 @@ STATUS_T CmdModify(
if (ModifyCornu(C_START, pos) != C_CONTINUE) { //Call Start with track
modifyCornuMode = FALSE; //Function rejected Cornu
Dex.Trk =NULL;
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
}
return C_CONTINUE; //That's it
@@ -340,32 +354,34 @@ STATUS_T CmdModify(
if (ModifyDraw(C_START, pos) != C_CONTINUE) {
modifyDrawMode = FALSE;
Dex.Trk = NULL;
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
}
return C_CONTINUE;
}
- if ((action&0xFF) == C_LDOUBLE) return C_ERROR;
+ if ((action&0xFF) == C_LDOUBLE) { return C_ERROR; }
- if ((MyGetKeyState()&WKEY_CTRL)) goto extendTrack;
+ if ((MyGetKeyState()&WKEY_CTRL)) { goto extendTrack; }
if ( (MyGetKeyState()&WKEY_SHIFT) && //Free to change radius
- QueryTrack( Dex.Trk, Q_CAN_MODIFYRADIUS )&&
- ((inx=PickUnconnectedEndPoint(pos,Dex.Trk)) >= 0 )) {
+ QueryTrack( Dex.Trk, Q_CAN_MODIFYRADIUS )&&
+ ((inx=PickUnconnectedEndPoint(pos,Dex.Trk)) >= 0 )) {
trk = Dex.Trk;
- while ( (trk1=GetTrkEndTrk(trk,1-inx)) && //Means next track to mine even if can be end...
- QueryTrack(trk1, Q_CANNOT_BE_ON_END) ) {
+ while ( (trk1=GetTrkEndTrk(trk,1-inx))
+ && //Means next track to mine even if can be end...
+ QueryTrack(trk1, Q_CANNOT_BE_ON_END) ) {
inx = GetEndPtConnectedToMe( trk1, trk );
trk = trk1;
}
if (trk1) {
- UndoStart( _("Change Track"), "Change( T%d[%d] )", GetTrkIndex(Dex.Trk), Dex.params.ep );
+ UndoStart( _("Change Track"), "Change( T%d[%d] )", GetTrkIndex(Dex.Trk),
+ Dex.params.ep );
inx = GetEndPtConnectedToMe( trk1, trk );
- Dex.Trk = NULL;
- UndrawNewTrack( trk );
- DeleteTrack(trk, TRUE); //Get rid of original track
+ Dex.Trk = NULL;
+ UndrawNewTrack( trk );
+ DeleteTrack(trk, TRUE); //Get rid of original track
if ( !GetTrkEndTrk( trk1, inx ) ) {
Dex.Trk = trk1;
Dex.pos00 = GetTrkEndPos( Dex.Trk, inx );
@@ -385,9 +401,9 @@ STATUS_T CmdModify(
case wActionMove:
DYNARR_RESET(trkSeg_t,anchors_da);
- if (modifyCornuMode) return ModifyCornu(wActionMove,pos);
- if (modifyDrawMode) return ModifyDraw(wActionMove,pos);
- if (modifyBezierMode) return ModifyBezier(wActionMove, pos);
+ if (modifyCornuMode) { return ModifyCornu(wActionMove,pos); }
+ if (modifyDrawMode) { return ModifyDraw(wActionMove,pos); }
+ if (modifyBezierMode) { return ModifyBezier(wActionMove, pos); }
track_p t;
wSetCursor(mainD.d,defaultCursor);
if (((t=OnTrack(&pos,FALSE,TRUE))!= NULL) && CheckTrackLayerSilent( t )) {
@@ -395,11 +411,12 @@ STATUS_T CmdModify(
if (QueryTrack( t, Q_IS_CORNU )) {
CreateCornuAnchor(pos,FALSE);
} else if ( QueryTrack( t, Q_CAN_MODIFY_CONTROL_POINTS )) {
- CreateRadiusAnchor(pos,NormalizeAngle(GetAngleAtPoint(t,pos,NULL,NULL)+90.0),TRUE);
+ CreateRadiusAnchor(pos,NormalizeAngle(GetAngleAtPoint(t,pos,NULL,NULL)+90.0),
+ TRUE);
CreateEndAnchor(pos,FALSE);
- } else if (QueryTrack(t,Q_CAN_ADD_ENDPOINTS)){ //Turntable
+ } else if (QueryTrack(t,Q_CAN_ADD_ENDPOINTS)) { //Turntable
trackParams_t tp;
- if (!GetTrackParams(PARAMS_CORNU, t, pos, &tp)) return C_CONTINUE;
+ if (!GetTrackParams(PARAMS_CORNU, t, pos, &tp)) { return C_CONTINUE; }
ANGLE_T a = tp.angle;
Translate(&pos,tp.ttcenter,a,tp.ttradius);
CreateRadiusAnchor(pos,a,FALSE);
@@ -414,15 +431,17 @@ STATUS_T CmdModify(
} else {
CreateEndAnchor(pos,FALSE);
if ((MyGetKeyState()&WKEY_SHIFT) && //Shift Down
- QueryTrack( t, Q_CAN_MODIFYRADIUS ) && // Straight or Curve
- ((inx=PickUnconnectedEndPointSilent(pos,t)) >= 0 )) { //Which has an open end
- if (GetTrkEndTrk(t,1-inx)) // Has to have a track on other end
- CreateRadiusAnchor(pos,NormalizeAngle(GetAngleAtPoint(t,pos,NULL,NULL)+90.0),TRUE);
+ QueryTrack( t, Q_CAN_MODIFYRADIUS ) && // Straight or Curve
+ ((inx=PickUnconnectedEndPointSilent(pos,t)) >= 0 )) { //Which has an open end
+ if (GetTrkEndTrk(t,1-inx)) { // Has to have a track on other end
+ CreateRadiusAnchor(pos,NormalizeAngle(GetAngleAtPoint(t,pos,NULL,NULL)+90.0),
+ TRUE);
+ }
}
CreateRadiusAnchor(pos,GetAngleAtPoint(t,pos,NULL,NULL),TRUE);
}
}
- } else if (ep>=0){ //Turnout
+ } else if (ep>=0) { //Turnout
pos = GetTrkEndPos(t, ep);
CreateEndAnchor(pos,TRUE);
if ( (MyGetKeyState()&WKEY_CTRL)) {
@@ -435,8 +454,8 @@ STATUS_T CmdModify(
}
}
} else if (((t=OnTrack(&pos,FALSE,FALSE))!= NULL)
- && (!(GetLayerFrozen(GetTrkLayer(t)) || GetLayerModule(GetTrkLayer(t))))
- && (QueryTrack(t, Q_IS_DRAW ) && !QueryTrack(t, Q_IS_TEXT)) ) {
+ && (!(GetLayerFrozen(GetTrkLayer(t)) || GetLayerModule(GetTrkLayer(t))))
+ && (QueryTrack(t, Q_IS_DRAW ) && !QueryTrack(t, Q_IS_TEXT)) ) {
CreateEndAnchor(pos,FALSE);
} else {
ModifyRuler (wActionMove, pos);
@@ -444,23 +463,29 @@ STATUS_T CmdModify(
return C_CONTINUE;
case C_MOVE:
- if ( modifyRulerMode )
+ if ( modifyRulerMode ) {
return ModifyRuler( C_MOVE, pos );
- if ( modifyProtractorMode )
+ }
+ if ( modifyProtractorMode ) {
return ModifyProtractor( C_MOVE, pos );
- if (Dex.Trk == NULL)
+ }
+ if (Dex.Trk == NULL) {
return C_CONTINUE;
- if ( modifyBezierMode )
+ }
+ if ( modifyBezierMode ) {
return ModifyBezier(C_MOVE, pos);
- if ( modifyCornuMode )
+ }
+ if ( modifyCornuMode ) {
return ModifyCornu(C_MOVE, pos);
- if ( modifyDrawMode)
+ }
+ if ( modifyDrawMode) {
return ModifyDraw(C_MOVE, pos);
- if (modifyExtendMode && (MyGetKeyState()&WKEY_CTRL))
+ }
+ if (modifyExtendMode && (MyGetKeyState()&WKEY_CTRL)) {
goto extendTrackMove;
- tempSegs_da.cnt = 0;
+ }
- if ((MyGetKeyState() & WKEY_ALT) == 0) SnapPos( &pos );
+ if ((MyGetKeyState() & WKEY_ALT) == 0) { SnapPos( &pos ); }
rc = ModifyTrack( Dex.Trk, C_MOVE, pos );
if ( rc != C_CONTINUE ) {
rc = C_CONTINUE;
@@ -470,28 +495,35 @@ STATUS_T CmdModify(
case C_UP:
DYNARR_RESET(trkSeg_t,anchors_da);
- if (Dex.Trk == NULL)
+ if (Dex.Trk == NULL) {
return C_CONTINUE;
- if ( modifyRulerMode )
+ }
+ if ( modifyRulerMode ) {
return ModifyRuler( C_MOVE, pos );
- if ( modifyProtractorMode)
+ }
+ if ( modifyProtractorMode) {
return ModifyProtractor( C_UP, pos);
- if ( modifyBezierMode )
+ }
+ if ( modifyBezierMode ) {
return ModifyBezier( C_UP, pos);
- if (modifyCornuMode)
+ }
+ if (modifyCornuMode) {
return ModifyCornu(C_UP, pos);
- if (modifyDrawMode)
+ }
+ if (modifyDrawMode) {
return ModifyDraw(C_UP, pos);
- if ((MyGetKeyState()&WKEY_CTRL)) goto extendTrackUp;
+ }
+ if ((MyGetKeyState()&WKEY_CTRL)) { goto extendTrackUp; }
- tempSegs_da.cnt = 0;
- if ((MyGetKeyState() & WKEY_ALT) == 0) SnapPos( &pos );
- UndoStart( _("Modify Track"), "Modify( T%d[%d] )", GetTrkIndex(Dex.Trk), Dex.params.ep );
+ if ((MyGetKeyState() & WKEY_ALT) == 0) { SnapPos( &pos ); }
+ UndoStart( _("Modify Track"), "Modify( T%d[%d] )", GetTrkIndex(Dex.Trk),
+ Dex.params.ep );
UndoModify( Dex.Trk );
rc = ModifyTrack( Dex.Trk, C_UP, pos );
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
UndoEnd();
- Dex.Trk = NULL;
+ Dex.Trk = NULL;
return rc;
case C_RDOWN: //This is same as context menu....
@@ -514,7 +546,7 @@ extendTrack:
}
trackGauge = GetTrkGauge( Dex.Trk );
Dex.pos00 = pos;
- CHANGE_TRACK:
+CHANGE_TRACK:
if (GetTrackParams( PARAMS_EXTEND, Dex.Trk, Dex.pos00, &Dex.params)) {
if (Dex.params.ep == -1) {
Dex.Trk = NULL;
@@ -527,8 +559,8 @@ extendTrack:
Dex.pos00 = GetTrkEndPos(Dex.Trk,Dex.params.ep);
Dex.angle = GetTrkEndAngle( Dex.Trk,Dex.params.ep);
Translate( &Dex.pos00x, Dex.pos00, Dex.angle, 10.0 );
- LOG( log_modify, 1, ("extend endPt[%d] = [%0.3f %0.3f] A%0.3f\n",
- Dex.params.ep, Dex.pos00.x, Dex.pos00.y, Dex.angle ) )
+ LOG( log_modify, 1, ("extend endPt[%d] = [%0.3f %0.3f] A%0.3f\n",
+ Dex.params.ep, Dex.pos00.x, Dex.pos00.y, Dex.angle ) )
InfoMessage( _("Drag to add flex track") );
} else {
return C_ERROR;
@@ -542,40 +574,47 @@ extendTrack:
InfoMessage ( _("No track selected"));
return C_ERROR;
}
- /* no break */
+ /* no break */
case C_RMOVE:
extendTrackMove:
DYNARR_RESET(trkSeg_t,anchors_da);
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
Dex.valid = FALSE;
- if (Dex.Trk == NULL) return C_CONTINUE;
- if ((MyGetKeyState() & WKEY_ALT) == 0) SnapPos( &pos );
- if ( Dex.first && FindDistance( pos, Dex.pos00 ) <= minLength )
+ if (Dex.Trk == NULL) { return C_CONTINUE; }
+ if ((MyGetKeyState() & WKEY_ALT) == 0) { SnapPos( &pos ); }
+ if ( Dex.first && FindDistance( pos, Dex.pos00 ) <= minLength ) {
return C_CONTINUE;
+ }
Dex.first = FALSE;
Dex.pos01 = Dex.pos00;
- if (Dex.params.type == curveTypeCornu) { //Always Restrict Cornu drag out to match end
+ if (Dex.params.type ==
+ curveTypeCornu) { //Always Restrict Cornu drag out to match end
ANGLE_T angle2 = NormalizeAngle(FindAngle(pos, Dex.pos00)-Dex.angle);
if (angle2 > 90.0 && angle2 < 270.0) {
if (Dex.params.cornuRadius[Dex.params.ep] == 0) {
Translate( &pos, Dex.pos00, Dex.angle, FindDistance( Dex.pos00, pos ) );
} else {
ANGLE_T angle = FindAngle(Dex.params.cornuCenter[Dex.params.ep],pos)-
- FindAngle(Dex.params.cornuCenter[Dex.params.ep],Dex.pos00);
+ FindAngle(Dex.params.cornuCenter[Dex.params.ep],Dex.pos00);
pos=Dex.pos00;
Rotate(&pos,Dex.params.cornuCenter[Dex.params.ep],angle);
}
- } else pos = Dex.pos00; //Only out from end
- PlotCurve( crvCmdFromCornu, Dex.pos00, Dex.pos00x, pos, &Dex.curveData, FALSE, 0.0 );
- } else
- PlotCurve( crvCmdFromEP1, Dex.pos00, Dex.pos00x, pos, &Dex.curveData, TRUE, 0.0 );
+ } else { pos = Dex.pos00; } //Only out from end
+ PlotCurve( crvCmdFromCornu, Dex.pos00, Dex.pos00x, pos, &Dex.curveData, FALSE,
+ 0.0 );
+ } else {
+ PlotCurve( crvCmdFromEP1, Dex.pos00, Dex.pos00x, pos, &Dex.curveData, TRUE,
+ 0.0 );
+ }
curveType = Dex.curveData.type;
if ( curveType == curveTypeStraight ) {
Dex.r1 = 0.0;
- if (Dex.params.type == curveTypeCurve) {
- if (ComputeJoint( Dex.params.arcR, Dex.r1, &Dex.jointD ) == E_ERROR)
+ if (Dex.params.type == curveTypeCurve &&
+ !QueryTrack( Dex.Trk, Q_IGNORE_EASEMENT_ON_EXTEND ) ) {
+ if (ComputeJoint( Dex.params.arcR, Dex.r1, &Dex.jointD ) == E_ERROR) {
return C_CONTINUE;
+ }
d = Dex.params.len - Dex.jointD.d0;
if (d <= minLength) {
ErrorMessage( MSG_TRK_TOO_SHORT, "First ", PutDim(fabs(minLength-d)) );
@@ -584,8 +623,9 @@ extendTrackMove:
} else {
Dex.jointD.d1 = 0.0;
}
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).type = SEG_STRTRK;
- tempSegs(0).width = 0;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).u.l.pos[0] = Dex.pos01;
tempSegs(0).u.l.pos[1] = Dex.curveData.pos1;
d = FindDistance( Dex.pos01, Dex.curveData.pos1 );
@@ -594,50 +634,56 @@ extendTrackMove:
ErrorMessage( MSG_TRK_TOO_SHORT, "Extending ", PutDim(fabs(minLength-d)) );
return C_CONTINUE;
}
- tempSegs_da.cnt = 1;
Dex.valid = TRUE;
if (action != C_RDOWN)
InfoMessage( _("Straight Track: Length=%s Angle=%0.3f"),
- FormatDistance( FindDistance( Dex.curveData.pos1, Dex.pos01 ) ),
- PutAngle( FindAngle( Dex.pos01, Dex.curveData.pos1 ) ) );
+ FormatDistance( FindDistance( Dex.curveData.pos1, Dex.pos01 ) ),
+ PutAngle( FindAngle( Dex.pos01, Dex.curveData.pos1 ) ) );
} else if ( curveType == curveTypeNone ) {
- if (action != C_RDOWN)
+ if (action != C_RDOWN) {
InfoMessage( _("Back") );
+ }
return C_CONTINUE;
} else if ( curveType == curveTypeCurve ) {
Dex.r1 = Dex.curveData.curveRadius;
if ( QueryTrack( Dex.Trk, Q_IGNORE_EASEMENT_ON_EXTEND ) ) {
- /* Ignore easements when extending turnouts or turntables */
+ /* Ignore easements when extending turnouts or turntables */
Dex.jointD.x =
- Dex.jointD.r0 = Dex.jointD.r1 =
- Dex.jointD.l0 = Dex.jointD.l1 =
- Dex.jointD.d0 = Dex.jointD.d1 = 0.0;
+ Dex.jointD.r0 = Dex.jointD.r1 =
+ Dex.jointD.l0 = Dex.jointD.l1 =
+ Dex.jointD.d0 = Dex.jointD.d1 = 0.0;
Dex.jointD.flip = Dex.jointD.negate = Dex.jointD.Scurve = FALSE;
d = Dex.curveData.curveRadius * Dex.curveData.a1 * 2.0*M_PI/360.0;
} else { /* Easement code */
if (easementVal<0.0) { //Cornu Join - need to estimate a "good" easement length
d = Dex.curveData.curveRadius * Dex.curveData.a1 * 2.0*M_PI/360.0;
- Dex.jointD.d0 = Dex.jointD.d1 =0.75*72*12/GetTrkScale(Dex.Trk); //Easement 1.5 cars long to start
- if (Dex.jointD.d0>(GetTrkLength(Dex.Trk,0,1)/2))
+ Dex.jointD.d0 = Dex.jointD.d1 =0.75*72*12/GetTrkScale(
+ Dex.Trk); //Easement 1.5 cars long to start
+ if (Dex.jointD.d0>(GetTrkLength(Dex.Trk,0,1)/2)) {
Dex.jointD.d0 = GetTrkLength(Dex.Trk,0,1)/2;
- if (Dex.jointD.d1>d/2)
+ }
+ if (Dex.jointD.d1>d/2) {
Dex.jointD.d1 = d/2;
- Dex.jointD.negate = DifferenceBetweenAngles(Dex.angle,FindAngle(Dex.pos00,pos))<0.0;
+ }
+ Dex.jointD.negate = DifferenceBetweenAngles(Dex.angle,FindAngle(Dex.pos00,
+ pos))<0.0;
Dex.jointD.x = 2*trackGauge; //Signal an easement present to JoinTracks
} else {
if ( easeR > 0.0 && Dex.r1 < easeR ) {
ErrorMessage( MSG_RADIUS_LSS_EASE_MIN,
- FormatDistance( Dex.r1 ), FormatDistance( easeR ) );
+ FormatDistance( Dex.r1 ), FormatDistance( easeR ) );
return C_CONTINUE;
}
if ( Dex.r1*2.0*M_PI*Dex.curveData.a1/360.0 > mapD.size.x+mapD.size.y ) {
ErrorMessage( MSG_CURVE_TOO_LARGE );
return C_CONTINUE;
}
- if ( NormalizeAngle( FindAngle( Dex.pos00, pos ) - Dex.angle ) > 180.0 )
+ if ( NormalizeAngle( FindAngle( Dex.pos00, pos ) - Dex.angle ) > 180.0 ) {
Dex.r1 = - Dex.r1;
- if (ComputeJoint( Dex.params.arcR, Dex.r1, &Dex.jointD ) == E_ERROR)
+ }
+ if (ComputeJoint( Dex.params.arcR, Dex.r1, &Dex.jointD ) == E_ERROR) {
return C_CONTINUE;
+ }
d = Dex.params.len - Dex.jointD.d0;
if (d <= minLength) {
ErrorMessage( MSG_TRK_TOO_SHORT, "First ", PutDim(fabs(minLength-d)) );
@@ -648,34 +694,37 @@ extendTrackMove:
a0 = Dex.angle + (Dex.jointD.negate?-90.0:+90.0);
Translate( &Dex.pos01, Dex.pos00, a0, Dex.jointD.x );
Translate( &Dex.curveData.curvePos, Dex.curveData.curvePos,
- a0, Dex.jointD.x );
-LOG( log_modify, 2, ("A=%0.3f X=%0.3f\n", a0, Dex.jointD.x ) )
+ a0, Dex.jointD.x );
+ LOG( log_modify, 2, ("A=%0.3f X=%0.3f\n", a0, Dex.jointD.x ) )
}
if (d <= minLength) {
ErrorMessage( MSG_TRK_TOO_SHORT, "Extending ", PutDim(fabs(minLength-d)) );
return C_CONTINUE;
}
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).type = SEG_CRVTRK;
- tempSegs(0).width = 0;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).u.c.center = Dex.curveData.curvePos;
tempSegs(0).u.c.radius = Dex.curveData.curveRadius,
- tempSegs(0).u.c.a0 = Dex.curveData.a0;
+ tempSegs(0).u.c.a0 = Dex.curveData.a0;
tempSegs(0).u.c.a1 = Dex.curveData.a1;
- tempSegs_da.cnt = 1;
double da = D2R(Dex.curveData.a1);
- if (da < 0.0)
+ if (da < 0.0) {
da = 2*M_PI + da;
- a = NormalizeAngle( Dex.angle - FindAngle( Dex.pos00, Dex.curveData.curvePos ) );
- if ( a < 180.0 )
+ }
+ a = NormalizeAngle( Dex.angle - FindAngle( Dex.pos00,
+ Dex.curveData.curvePos ) );
+ if ( a < 180.0 ) {
a = NormalizeAngle( Dex.curveData.a0-90 );
- else
+ } else {
a = NormalizeAngle( Dex.curveData.a0+Dex.curveData.a1+90.0 );
+ }
Dex.valid = TRUE;
if (action != C_RDOWN)
InfoMessage( _("Curve Track: Radius=%s Length=%s Angle=%0.3f"),
- FormatDistance( Dex.curveData.curveRadius ),
- FormatDistance( Dex.curveData.curveRadius * da),
- Dex.curveData.a1 );
+ FormatDistance( Dex.curveData.curveRadius ),
+ FormatDistance( Dex.curveData.curveRadius * da),
+ Dex.curveData.a1 );
}
return C_CONTINUE;
@@ -683,38 +732,41 @@ LOG( log_modify, 2, ("A=%0.3f X=%0.3f\n", a0, Dex.jointD.x ) )
extendTrackUp:
changeTrackMode = FALSE;
modifyExtendMode = FALSE;
- tempSegs_da.cnt = 0;
- if (Dex.Trk == NULL) return C_CONTINUE;
- if (!Dex.valid)
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ if (Dex.Trk == NULL) { return C_CONTINUE; }
+ if (!Dex.valid) {
return C_CONTINUE;
- UndoStart( _("Extend Track"), "Extend( T%d[%d] )", GetTrkIndex(Dex.Trk), Dex.params.ep );
+ }
+ UndoStart( _("Extend Track"), "Extend( T%d[%d] )", GetTrkIndex(Dex.Trk),
+ Dex.params.ep );
trk = NULL;
curveType = Dex.curveData.type;
-
+
if ( curveType == curveTypeStraight ) {
if (QueryTrack(Dex.Trk,Q_CAN_EXTEND)) //Check it isn't a turnout end....
if ( Dex.params.type == curveTypeStraight &&
- FindDistance(Dex.pos01, Dex.curveData.pos1) > 0 ) {
+ FindDistance(Dex.pos01, Dex.curveData.pos1) > 0 ) {
UndoModify( Dex.Trk );
AdjustStraightEndPt( Dex.Trk, Dex.params.ep, Dex.curveData.pos1 );
UndoEnd();
DrawNewTrack(Dex.Trk );
return C_TERMINATE;
- }
- if (FindDistance(Dex.pos01, Dex.curveData.pos1) == 0) return C_ERROR;
-LOG( log_modify, 1, ("L = %0.3f, P0 = %0.3f, P1 = %0.3f\n",
- Dex.params.len, Dex.pos01, Dex.curveData.pos1 ) )
+ }
+ if (FindDistance(Dex.pos01, Dex.curveData.pos1) == 0) { return C_ERROR; }
+ LOG( log_modify, 1, ("L = %0.3f, P0 = %0.3f, P1 = %0.3f\n",
+ Dex.params.len, Dex.pos01, Dex.curveData.pos1 ) )
trk = NewStraightTrack( Dex.pos01, Dex.curveData.pos1 );
inx = 0;
} else if ( curveType == curveTypeCurve ) {
-LOG( log_modify, 1, ("R = %0.3f, A0 = %0.3f, A1 = %0.3f\n",
- Dex.curveData.curveRadius, Dex.curveData.a0, Dex.curveData.a1 ) )
+ LOG( log_modify, 1, ("R = %0.3f, A0 = %0.3f, A1 = %0.3f\n",
+ Dex.curveData.curveRadius, Dex.curveData.a0, Dex.curveData.a1 ) )
trk = NewCurvedTrack( Dex.curveData.curvePos, Dex.curveData.curveRadius,
- Dex.curveData.a0, Dex.curveData.a1, 0 );
+ Dex.curveData.a0, Dex.curveData.a1, 0 );
inx = PickUnconnectedEndPoint( Dex.pos01, trk );
- if (inx == -1)
+ if (inx == -1) {
return C_ERROR;
+ }
} else {
return C_ERROR;
@@ -726,28 +778,30 @@ LOG( log_modify, 1, ("R = %0.3f, A0 = %0.3f, A1 = %0.3f\n",
DrawEndPt( &mainD, Dex.Trk, Dex.params.ep, wDrawColorBlack );
} else {
UndrawNewTrack( Dex.Trk );
- JoinTracks( Dex.Trk, Dex.params.ep, Dex.pos00, trk, inx, Dex.pos01, &Dex.jointD );
+ JoinTracks( Dex.Trk, Dex.params.ep, Dex.pos00, trk, inx, Dex.pos01,
+ &Dex.jointD );
DrawNewTrack( Dex.Trk );
}
UndoEnd();
- tempSegs_da.cnt = 0;
DrawNewTrack( trk );
return C_TERMINATE;
case C_REDRAW:
- if (modifyBezierMode) return ModifyBezier(C_REDRAW, pos);
- if (modifyCornuMode) return ModifyCornu(C_REDRAW, pos);
- if (modifyDrawMode) return ModifyDraw(C_REDRAW, pos);
- DrawSegs( &tempD, zero, 0.0, &tempSegs(0), tempSegs_da.cnt, trackGauge, wDrawColorBlack );
- if (anchors_da.cnt)
- DrawSegs( &tempD, zero, 0.0, &anchors(0), anchors_da.cnt, trackGauge, wDrawColorBlack );
+ if (modifyBezierMode) { return ModifyBezier(C_REDRAW, pos); }
+ if (modifyCornuMode) { return ModifyCornu(C_REDRAW, pos); }
+ if (modifyDrawMode) { return ModifyDraw(C_REDRAW, pos); }
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &tempSegs_da, trackGauge, wDrawColorBlack,
+ 0 );
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack,
+ 0 );
return C_CONTINUE;
case C_TEXT:
if ((action>>8) == 'c') {
panCenter = pos;
- LOG( log_pan, 2, ( "PanCenter:Mod-%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
+ LOG( log_pan, 2, ( "PanCenter:Mod-%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
PanHere(I2VP(0));
return C_CONTINUE;
}
@@ -760,14 +814,18 @@ LOG( log_modify, 1, ("R = %0.3f, A0 = %0.3f, A1 = %0.3f\n",
if ((action>>8) == '0' || (action>>8 == 'o')) {
PanMenuEnter(I2VP('o'));
}
- if ( !Dex.Trk )
+ if ( !Dex.Trk ) {
return C_CONTINUE;
- if (modifyBezierMode)
+ }
+ if (modifyBezierMode) {
return ModifyBezier(action, pos);
- if (modifyCornuMode)
+ }
+ if (modifyCornuMode) {
return ModifyCornu(action, pos);
- if (modifyDrawMode)
+ }
+ if (modifyDrawMode) {
return ModifyDraw(action, pos);
+ }
return ModifyTrack( Dex.Trk, action, pos );
case C_CMDMENU:
@@ -776,29 +834,35 @@ LOG( log_modify, 1, ("R = %0.3f, A0 = %0.3f, A1 = %0.3f\n",
wMenuPopupShow(modPopupM);
return C_CONTINUE;
}
- if (modifyBezierMode)
+ if (modifyBezierMode) {
return ModifyBezier(action, pos);
- if (modifyCornuMode)
+ }
+ if (modifyCornuMode) {
return ModifyCornu(action, pos);
- if (modifyDrawMode)
+ }
+ if (modifyDrawMode) {
return ModifyDraw(action, pos);
+ }
return ModifyTrack( Dex.Trk, action, pos );
case C_LCLICK:
if ( modifyDrawMode) {
rc = ModifyDraw(C_DOWN, pos);
- if (rc == C_CONTINUE)
+ if (rc == C_CONTINUE) {
return ModifyDraw(C_UP, pos);
+ }
}
- if (modifyCornuMode)
+ if (modifyCornuMode) {
return ModifyCornu(action, pos);
- /*no break*/
+ }
+ /*no break*/
default:
- if (modifyBezierMode) return ModifyBezier(action, pos);
- if (modifyCornuMode) return ModifyCornu(action, pos);
- if (modifyDrawMode) return ModifyDraw(action, pos);
- if (Dex.Trk)
+ if (modifyBezierMode) { return ModifyBezier(action, pos); }
+ if (modifyCornuMode) { return ModifyCornu(action, pos); }
+ if (modifyDrawMode) { return ModifyDraw(action, pos); }
+ if (Dex.Trk) {
return ModifyTrack( Dex.Trk, action, pos );
+ }
return C_CONTINUE;
}
return C_CONTINUE;
@@ -811,21 +875,22 @@ LOG( log_modify, 1, ("R = %0.3f, A0 = %0.3f, A1 = %0.3f\n",
*
*/
-#include "bitmaps/extend.xpm"
-extern wIndex_t panCmdInx;
-extern wIndex_t selectCmdInx;
-extern wIndex_t describeCmdInx;
-
+#include "bitmaps/extend.xpm3"
void InitCmdModify( wMenu_p menu )
{
- modifyCmdInx = AddMenuButton( menu, CmdModify, "cmdModify", _("Modify"), wIconCreatePixMap(extend_xpm[iconSize]), LEVEL0_50, IC_STICKY|IC_POPUP|IC_WANT_MOVE|IC_CMDMENU, ACCL_MODIFY, NULL );
+ modifyCmdInx = AddMenuButton( menu, CmdModify, "cmdModify", _("Modify"),
+ wIconCreatePixMap(extend_xpm3[iconSize]), LEVEL0_50,
+ IC_STICKY|IC_POPUP|IC_WANT_MOVE|IC_CMDMENU, ACCL_MODIFY, NULL );
/** @logcmd @showrefby modify=n cmodify.c Log Modify command */
log_modify = LogFindIndex( "modify" );
modPopupM = MenuRegister( "Modify Context Menu" );
- wMenuPushCreate(modPopupM, "cmdSelectMode", GetBalloonHelpStr("cmdSelectMode"), 0, DoCommandB, I2VP(selectCmdInx));
- wMenuPushCreate(modPopupM, "cmdDescribeMode", GetBalloonHelpStr("cmdDescribeMode"), 0, DoCommandB, I2VP(describeCmdInx));
- wMenuPushCreate(modPopupM, "cmdPanMode", GetBalloonHelpStr("cmdPanMode"), 0, DoCommandB, I2VP(panCmdInx));
+ wMenuPushCreate(modPopupM, "cmdSelectMode", GetBalloonHelpStr("cmdSelectMode"),
+ 0, DoCommandB, I2VP(selectCmdInx));
+ wMenuPushCreate(modPopupM, "cmdDescribeMode",
+ GetBalloonHelpStr("cmdDescribeMode"), 0, DoCommandB, I2VP(describeCmdInx));
+ wMenuPushCreate(modPopupM, "cmdPanMode", GetBalloonHelpStr("cmdPanMode"), 0,
+ DoCommandB, I2VP(panCmdInx));
wMenuSeparatorCreate(modPopupM);
wMenuPushCreate(modPopupM, "", _("Zoom In"), 0, DoZoomUp, I2VP(1));
wMenuPushCreate(modPopupM, "", _("Zoom Out"), 0, DoZoomDown, I2VP(1));
diff --git a/app/bin/cnote.c b/app/bin/cnote.c
index 7e4c0f9..04d63f1 100644
--- a/app/bin/cnote.c
+++ b/app/bin/cnote.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 "custom.h"
@@ -34,51 +34,59 @@ static paramTextData_t noteTextData = { 300, 150 };
static paramData_t notePLs[] = {
#define I_NOTETEXT (0)
#define noteT ((wText_p)notePLs[I_NOTETEXT].control)
- { PD_TEXT, NULL, "text", PDO_DLGRESIZE, &noteTextData }
+ { PD_TEXT, NULL, "text", PDO_DLGRESIZE, &noteTextData }
};
static paramGroup_t notePG = { "note", 0, notePLs, COUNT( notePLs ) };
void ClearNote(void)
{
- if (mainText) {
- MyFree(mainText);
- mainText = NULL;
- }
+ if (mainText) {
+ MyFree(mainText);
+ mainText = NULL;
+ }
}
static void NoteOk(void * unused)
{
- if (wTextGetModified(noteT)) {
- int len;
- ClearNote();
- len = wTextGetSize(noteT);
- mainText = (char*)MyMalloc(len+2);
- wTextGetText(noteT, mainText, len);
- }
-
- wHide(noteW);
+ if (wTextGetModified(noteT)) {
+ int len;
+ ClearNote();
+ len = wTextGetSize(noteT);
+ mainText = (char*)MyMalloc(len+2);
+ wTextGetText(noteT, mainText, len);
+ }
+
+ wHide(noteW);
}
void DoNote(void * unused)
{
- if (noteW == NULL) {
- noteW = ParamCreateDialog(&notePG, MakeWindowTitle(_("Note")), _("Ok"), NoteOk,
- wHide, FALSE, NULL, F_NOTTRANSIENT|F_RESIZE, NULL);
- }
-
- wTextClear(noteT);
- wTextAppend(noteT, mainText?mainText:
- _("Replace this text with your layout notes"));
- wTextSetReadonly(noteT, FALSE);
- wShow(noteW);
+ if (noteW == NULL) {
+ noteW = ParamCreateDialog(&notePG, MakeWindowTitle(_("Note")), _("Ok"), NoteOk,
+ wHide, FALSE, NULL, F_NOTTRANSIENT|F_RESIZE, NULL);
+ }
+
+ wTextClear(noteT);
+ wTextAppend(noteT, mainText?mainText:
+ _("Replace this text with your layout notes"));
+ wTextSetReadonly(noteT, FALSE);
+ wShow(noteW);
}
+/**
+ * Save the main layout note to file. The note text is converted to
+ * UTF-8 if this is configured at compile time. Before saving characters that
+ * have special meanings in the XTC file (eg. ") are escaped.
+ *
+ * \param f open layout file
+ * \return
+ */
BOOL_T WriteMainNote(FILE* f)
{
- BOOL_T rc = TRUE;
+ BOOL_T rc = TRUE;
char *noteText = mainText;
if (noteText && *noteText) {
@@ -92,18 +100,17 @@ BOOL_T WriteMainNote(FILE* f)
}
#endif // UTFCONVERT
-
- char * sText = ConvertToEscapedText( noteText );
- rc &= fprintf(f, "NOTE MAIN 0 0 0 0 0 \"%s\"\n", sText )>0;
- MyFree( sText );
+ char * sText = ConvertToEscapedText( noteText );
+ rc &= fprintf(f, "NOTE MAIN 0 0 0 0 0 \"%s\"\n", sText )>0;
+ MyFree( sText );
#ifdef UTFCONVERT
if (out) {
MyFree(out);
}
#endif // UTFCONVERT
- }
- return rc;
+ }
+ return rc;
}
/**
@@ -114,28 +121,30 @@ BOOL_T WriteMainNote(FILE* f)
BOOL_T ReadMainNote(char *line)
{
- long size;
- char * sNote = NULL;
-
- if (!GetArgs(line + 9,
- paramVersion < 3 ? "l" :
- paramVersion < VERSION_INLINENOTE ? "0000l":
- "0000lq", &size, &sNote)) {
- return FALSE;
- }
-
- if (mainText) {
- MyFree(mainText);
- }
-
- if ( paramVersion < VERSION_INLINENOTE )
- mainText = ReadMultilineText();
- else
- mainText = sNote;
- return TRUE;
+ long size;
+ char * sNote = NULL;
+
+ if (!GetArgs(line + 9,
+ paramVersion < 3 ? "l" :
+ paramVersion < VERSION_INLINENOTE ? "0000l":
+ "0000lq", &size, &sNote)) {
+ return FALSE;
+ }
+
+ if (mainText) {
+ MyFree(mainText);
+ }
+
+ if ( paramVersion < VERSION_INLINENOTE ) {
+ mainText = ReadMultilineText();
+ } else {
+ mainText = sNote;
+ }
+
+ return TRUE;
}
void InitCmdNote()
{
- ParamRegister(&notePG);
+ ParamRegister(&notePG);
}
diff --git a/app/bin/cnvdsgn.c b/app/bin/cnvdsgn.c
index fc4a827..91a31e5 100644
--- a/app/bin/cnvdsgn.c
+++ b/app/bin/cnvdsgn.c
@@ -13,7 +13,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 "utility.h"
@@ -25,23 +25,24 @@
static int trackSeparation = 20;
static int arrowHeadLength = 10;
-static double FindCenter(
- coOrd * pos,
- coOrd p0,
- coOrd p1,
- double radius )
+static double FindCenter(
+ coOrd * pos,
+ coOrd p0,
+ coOrd p1,
+ double radius )
{
double d;
double a0, a1;
d = FindDistance( p0, p1 )/2.0;
a0 = FindAngle( p0, p1 );
a1 = NormalizeAngle(R2D(asin( d/radius )));
- if (a1 > 180)
+ if (a1 > 180) {
a1 -= 360;
+ }
/*a0 = NormalizeAngle( a0 + (radius>0 ? +(90.0-a1) : -(90.0-a1) ) );*/
a0 = NormalizeAngle( a0 + (90.0-a1) );
Translate( pos, p0, a0, radius );
-/*fprintf(stderr,"Center = %0.3f %0.3f\n", pos->x, pos->y );*/
+ /*fprintf(stderr,"Center = %0.3f %0.3f\n", pos->x, pos->y );*/
return a1*2.0;
}
@@ -56,35 +57,35 @@ static void buildDesignerLines( FILE * inf, FILE * outf )
double len;
while ( fgets( line, sizeof line, inf ) != NULL ) {
-
+
if ( strncmp( line, "ARROW", 5 ) == 0 ) {
if ( sscanf( line, "ARROW, %lf, %lf, %lf, %lf",
- &p0.x, &p0.y, &p1.x, &p1.y ) != 4) {
+ &p0.x, &p0.y, &p1.x, &p1.y ) != 4) {
fprintf( stderr, "SYNTAX: %s", line );
exit (1);
}
a0 = FindAngle( p1, p0 );
fprintf( outf, " { 1, %ld, %ld, %ld, %ld },\n",
- (long)(p0.x+0.5), (long)(p0.y+0.5), (long)(p1.x+0.5), (long)(p1.y+0.5) );
+ (long)(p0.x+0.5), (long)(p0.y+0.5), (long)(p1.x+0.5), (long)(p1.y+0.5) );
Translate( &p1, p0, a0+135, arrowHeadLength );
fprintf( outf, " { 1, %ld, %ld, %ld, %ld },\n",
- (long)(p0.x+0.5), (long)(p0.y+0.5), (long)(p1.x+0.5), (long)(p1.y+0.5) );
+ (long)(p0.x+0.5), (long)(p0.y+0.5), (long)(p1.x+0.5), (long)(p1.y+0.5) );
Translate( &p1, p0, a0-135, arrowHeadLength );
fprintf( outf, " { 1, %ld, %ld, %ld, %ld },\n",
- (long)(p0.x+0.5), (long)(p0.y+0.5), (long)(p1.x+0.5), (long)(p1.y+0.5) );
+ (long)(p0.x+0.5), (long)(p0.y+0.5), (long)(p1.x+0.5), (long)(p1.y+0.5) );
} else if ( strncmp( line, "LINE", 4 ) == 0 ) {
if ( sscanf( line, "LINE, %lf, %lf, %lf, %lf",
- &p0.x, &p0.y, &p1.x, &p1.y ) != 4) {
+ &p0.x, &p0.y, &p1.x, &p1.y ) != 4) {
fprintf( stderr, "SYNTAX: %s", line );
exit (1);
}
fprintf( outf, " { 1, %ld, %ld, %ld, %ld },\n",
- (long)(p0.x+0.5), (long)(p0.y+0.5), (long)(p1.x+0.5), (long)(p1.y+0.5) );
+ (long)(p0.x+0.5), (long)(p0.y+0.5), (long)(p1.x+0.5), (long)(p1.y+0.5) );
} else if ( strncmp( line, "STRAIGHT", 8 ) == 0 ) {
if ( sscanf( line, "STRAIGHT, %lf, %lf, %lf, %lf",
- &p0.x, &p0.y, &p1.x, &p1.y ) != 4) {
+ &p0.x, &p0.y, &p1.x, &p1.y ) != 4) {
fprintf( stderr, "SYNTAX: %s", line );
exit (1);
}
@@ -92,38 +93,39 @@ static void buildDesignerLines( FILE * inf, FILE * outf )
Translate( &q0, p0, a0+90, trackSeparation/2.0 );
Translate( &q1, p1, a0+90, trackSeparation/2.0 );
fprintf( outf, " { 3, %ld, %ld, %ld, %ld },\n",
- (long)(q0.x+0.5), (long)(q0.y+0.5), (long)(q1.x+0.5), (long)(q1.y+0.5) );
+ (long)(q0.x+0.5), (long)(q0.y+0.5), (long)(q1.x+0.5), (long)(q1.y+0.5) );
Translate( &q0, p0, a0-90, trackSeparation/2.0 );
Translate( &q1, p1, a0-90, trackSeparation/2.0 );
fprintf( outf, " { 3, %ld, %ld, %ld, %ld },\n",
- (long)(q0.x+0.5), (long)(q0.y+0.5), (long)(q1.x+0.5), (long)(q1.y+0.5) );
-
+ (long)(q0.x+0.5), (long)(q0.y+0.5), (long)(q1.x+0.5), (long)(q1.y+0.5) );
+
} else if ( strncmp( line, "CURVE", 5 ) == 0 ) {
if ( sscanf( line, "CURVE, %lf, %lf, %lf, %lf, %lf",
- &p0.x, &p0.y, &p1.x, &p1.y, &radius ) != 5) {
+ &p0.x, &p0.y, &p1.x, &p1.y, &radius ) != 5) {
fprintf( stderr, "SYNTAX: %s", line );
exit (1);
}
a1 = FindCenter( &pc, p0, p1, radius );
a0 = FindAngle( pc, p0 );
-/*fprintf(stderr, "A0 = %0.3f, A1 = %0.3f\n", a0, a1 );*/
+ /*fprintf(stderr, "A0 = %0.3f, A1 = %0.3f\n", a0, a1 );*/
len = radius * M_PI * 2 * ( a1 / 360.0 );
num = len/20;
- if (num < 0) num = - num;
+ if (num < 0) { num = - num; }
num++;
a1 /= num;
- if (radius < 0)
+ if (radius < 0) {
radius = -radius;
+ }
for ( j=0; j<num; j++ ) {
-/*fprintf( stderr, "A0 = %0.3f\n", a0 );*/
+ /*fprintf( stderr, "A0 = %0.3f\n", a0 );*/
Translate( &p0, pc, a0, radius+trackSeparation/2.0 );
Translate( &p1, pc, a0+a1, radius+trackSeparation/2.0 );
fprintf( outf, " { 3, %ld, %ld, %ld, %ld },\n",
- (long)(p0.x+0.5), (long)(p0.y+0.5), (long)(p1.x+0.5), (long)(p1.y+0.5) );
+ (long)(p0.x+0.5), (long)(p0.y+0.5), (long)(p1.x+0.5), (long)(p1.y+0.5) );
Translate( &p0, pc, a0, radius-trackSeparation/2.0 );
Translate( &p1, pc, a0+a1, radius-trackSeparation/2.0 );
fprintf( outf, " { 3, %ld, %ld, %ld, %ld },\n",
- (long)(p0.x+0.5), (long)(p0.y+0.5), (long)(p1.x+0.5), (long)(p1.y+0.5) );
+ (long)(p0.x+0.5), (long)(p0.y+0.5), (long)(p1.x+0.5), (long)(p1.y+0.5) );
a0 += a1;
p0 = p1;
}
diff --git a/app/bin/command.c b/app/bin/command.c
new file mode 100644
index 0000000..bf628f8
--- /dev/null
+++ b/app/bin/command.c
@@ -0,0 +1,800 @@
+/* file command.c
+ * Main routine and initialization for the application
+ */
+
+/* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+
+
+#include "command.h"
+#include "common.h"
+#include "cselect.h"
+#include "cundo.h"
+#include "draw.h"
+#include "fileio.h"
+#include "track.h"
+#include "common-ui.h"
+#include "menu.h"
+
+/*****************************************************************************
+ *
+ * COMMAND
+ *
+ */
+
+#define COMMAND_MAX (250)
+#define BUTTON_MAX (250)
+
+static struct {
+ wControl_p control;
+ wBool_t enabled;
+ wWinPix_t x, y;
+ long options;
+ int group;
+ wIndex_t cmdInx;
+} buttonList[BUTTON_MAX];
+EXPORT int buttonCnt = 0; // TODO-misc-refactor
+
+static struct {
+ procCommand_t cmdProc;
+ char * helpKey;
+ wIndex_t buttInx;
+ char * labelStr;
+ wIcon_p icon;
+ int reqLevel;
+ wBool_t enabled;
+ long options;
+ long stickyMask;
+ long acclKey;
+ wMenuPush_p menu[NUM_CMDMENUS];
+ void * context;
+} commandList[COMMAND_MAX];
+
+
+EXPORT int commandCnt = 0;
+
+static wIndex_t curCommand = 0;
+
+EXPORT int cmdGroup;
+
+static int log_command;
+
+#define TOOLBARSET_INIT (0xFFFF)
+EXPORT long toolbarSet = TOOLBARSET_INIT;
+EXPORT wWinPix_t toolbarHeight = 0;
+static wWinPix_t toolbarWidth = 0;
+EXPORT long preSelect = 0; /**< default command 0 = Describe 1 = Select */
+EXPORT long rightClickMode = 0;
+EXPORT void * commandContext;
+EXPORT coOrd cmdMenuPos;
+
+/*--------------------------------------------------------------------*/
+EXPORT const char* GetCurCommandName()
+{
+ return commandList[curCommand].helpKey;
+}
+
+EXPORT void EnableCommands(void)
+{
+ int inx, minx;
+ wBool_t enable;
+
+ LOG(log_command, 5,
+ ( "COMMAND enable S%d M%d\n", selectedTrackCount, programMode ))
+ for (inx = 0; inx < commandCnt; inx++) {
+ if (commandList[inx].buttInx) {
+ if ((commandList[inx].options & IC_SELECTED)
+ && selectedTrackCount <= 0) {
+ enable = FALSE;
+ } else if ((programMode == MODE_TRAIN
+ && (commandList[inx].options
+ & (IC_MODETRAIN_TOO | IC_MODETRAIN_ONLY)) == 0)
+ || (programMode != MODE_TRAIN
+ && (commandList[inx].options & IC_MODETRAIN_ONLY)
+ != 0)) {
+ enable = FALSE;
+ } else {
+ enable = TRUE;
+ }
+ if (commandList[inx].enabled != enable) {
+ if (commandList[inx].buttInx >= 0)
+ wControlActive(buttonList[commandList[inx].buttInx].control,
+ enable);
+ for (minx = 0; minx < NUM_CMDMENUS; minx++)
+ if (commandList[inx].menu[minx]) {
+ wMenuPushEnable(commandList[inx].menu[minx], enable);
+ }
+ commandList[inx].enabled = enable;
+ }
+ }
+ }
+
+ EnableMenus();
+
+ for (inx = 0; inx < buttonCnt; inx++) {
+ if (buttonList[inx].cmdInx < 0
+ && (buttonList[inx].options & IC_SELECTED)) {
+ wControlActive(buttonList[inx].control, selectedTrackCount > 0);
+ }
+ }
+}
+
+EXPORT wIndex_t GetCurrentCommand()
+{
+ return curCommand;
+}
+
+EXPORT void Reset(void)
+{
+ if (recordF) {
+ fprintf(recordF, "RESET\n");
+ fflush(recordF);
+ }
+ LOG(log_command, 2,
+ ( "COMMAND CANCEL %s\n", commandList[curCommand].helpKey ))
+ commandList[curCommand].cmdProc( C_CANCEL, zero);
+ if (commandList[curCommand].buttInx >= 0)
+ wButtonSetBusy(
+ (wButton_p) buttonList[commandList[curCommand].buttInx].control,
+ FALSE);
+ curCommand = (preSelect ? selectCmdInx : describeCmdInx);
+ wSetCursor(mainD.d, preSelect ? defaultCursor : wCursorQuestion);
+ commandContext = commandList[curCommand].context;
+ if (commandList[curCommand].buttInx >= 0)
+ wButtonSetBusy(
+ (wButton_p) buttonList[commandList[curCommand].buttInx].control,
+ TRUE);
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+
+ TryCheckPoint();
+
+ ClrAllTrkBits( TB_UNDRAWN );
+ DoRedraw(); // Reset
+ EnableCommands();
+ ResetMouseState();
+ LOG(log_command, 1,
+ ( "COMMAND RESET %s\n", commandList[curCommand].helpKey ))
+ (void) commandList[curCommand].cmdProc( C_START, zero);
+}
+
+static BOOL_T CheckClick(wAction_t *action, coOrd *pos, BOOL_T checkLeft,
+ BOOL_T checkRight)
+{
+ static long time0;
+ static coOrd pos0;
+ long time1;
+ long timeDelta;
+ DIST_T distDelta;
+
+ switch (*action) {
+ case C_LDOUBLE:
+ if (!checkLeft) {
+ return TRUE;
+ }
+ time0 = 0;
+ break;
+ case C_DOWN:
+ if (!checkLeft) {
+ return TRUE;
+ }
+ time0 = wGetTimer() - adjTimer;
+ pos0 = *pos;
+ return FALSE;
+ case C_MOVE:
+ if (!checkLeft) {
+ return TRUE;
+ }
+ if (time0 != 0) {
+ time1 = wGetTimer() - adjTimer;
+ timeDelta = time1 - time0;
+ distDelta = FindDistance(*pos, pos0);
+ if (timeDelta > dragTimeout || distDelta > dragDistance) {
+ time0 = 0;
+ *pos = pos0;
+ *action = C_DOWN;
+ } else {
+ return FALSE;
+ }
+ }
+ break;
+ case C_UP:
+ if (!checkLeft) {
+ return TRUE;
+ }
+ if (time0 != 0) {
+ time1 = wGetTimer() - adjTimer;
+ timeDelta = time1 - time0;
+ distDelta = FindDistance(*pos, pos0);
+ time0 = 0;
+ *action = C_LCLICK;
+ }
+ break;
+ case C_RDOWN:
+ if (!checkRight) {
+ return TRUE;
+ }
+ time0 = wGetTimer() - adjTimer;
+ pos0 = *pos;
+ return FALSE;
+ case C_RMOVE:
+ if (!checkRight) {
+ return TRUE;
+ }
+ if (time0 != 0) {
+ time1 = wGetTimer() - adjTimer;
+ timeDelta = time1 - time0;
+ distDelta = FindDistance(*pos, pos0);
+ if (timeDelta > dragTimeout || distDelta > dragDistance) {
+ time0 = 0;
+ *pos = pos0;
+ *action = C_RDOWN;
+ } else {
+ return FALSE;
+ }
+ }
+ break;
+ case C_RUP:
+ if (!checkRight) {
+ return TRUE;
+ }
+ if (time0 != 0) {
+ time0 = 0;
+ *action = C_RCLICK;
+ }
+ break;
+ }
+ return TRUE;
+}
+
+EXPORT wBool_t DoCurCommand(wAction_t action, coOrd pos)
+{
+ wAction_t rc;
+ int mode;
+ wBool_t bExit = FALSE;
+
+ if (action == wActionMove) {
+ if ((commandList[curCommand].options & IC_WANT_MOVE) == 0) {
+ bExit = TRUE;
+ }
+ } else if ((action&0xFF) == wActionModKey) {
+ if ((commandList[curCommand].options & IC_WANT_MODKEYS) == 0) {
+ bExit = TRUE;
+ }
+ } else if (!CheckClick(&action, &pos,
+ (int) (commandList[curCommand].options & IC_LCLICK), TRUE)) {
+ bExit = TRUE;
+ } else if (action == C_RCLICK
+ && (commandList[curCommand].options & IC_RCLICK) == 0) {
+ if (!inPlayback) {
+ mode = MyGetKeyState();
+ if ((mode & (~WKEY_SHIFT)) != 0) {
+ wBeep();
+ bExit = TRUE;
+ } else if (((mode & WKEY_SHIFT) == 0) == (rightClickMode == 0)) {
+ if (selectedTrackCount > 0) {
+ if (commandList[curCommand].options & IC_CMDMENU) {
+ }
+ wMenuPopupShow(popup2M);
+ } else {
+ wMenuPopupShow(popup1M);
+ }
+ bExit = TRUE;
+ } else if ((commandList[curCommand].options & IC_CMDMENU)) {
+ cmdMenuPos = pos;
+ action = C_CMDMENU;
+ } else {
+ wBeep();
+ bExit = TRUE;
+ }
+ } else {
+ bExit = TRUE;
+ }
+ }
+ if ( bExit ) {
+ TempRedraw(); // DoCurCommand: precommand
+ return C_CONTINUE;
+ }
+
+ LOG(log_command, 2,
+ ( "COMMAND MOUSE %s %d @ %0.3f %0.3f\n", commandList[curCommand].helpKey,
+ (int)action, pos.x, pos.y ))
+ rc = commandList[curCommand].cmdProc(action, pos);
+ LOG(log_command, 4, ( " COMMAND returns %d\n", rc ))
+ switch ( action & 0xFF ) {
+ case wActionMove:
+ case wActionModKey:
+ case C_DOWN:
+ case C_MOVE:
+ case C_UP:
+ case C_RDOWN:
+ case C_RMOVE:
+ case C_RUP:
+ case C_LCLICK:
+ case C_RCLICK:
+ case C_TEXT:
+ case C_OK:
+ if (rc== C_TERMINATE) { MainRedraw(); }
+ else { TempRedraw(); } // DoCurCommand: postcommand
+ break;
+ default:
+ break;
+ }
+ if ((rc == C_TERMINATE || rc == C_INFO)
+ && (commandList[curCommand].options & IC_STICKY)
+ && (commandList[curCommand].stickyMask & stickySet)) {
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ UpdateAllElevations();
+ if (commandList[curCommand].options & IC_NORESTART) {
+ return C_CONTINUE;
+ }
+ //Make sure we checkpoint even sticky commands
+ TryCheckPoint();
+ LOG(log_command, 1,
+ ( "COMMAND START %s\n", commandList[curCommand].helpKey ))
+ wSetCursor(mainD.d,defaultCursor);
+ rc = commandList[curCommand].cmdProc( C_START, pos);
+ LOG(log_command, 4, ( " COMMAND returns %d\n", rc ))
+ switch (rc) {
+ case C_CONTINUE:
+ break;
+ case C_ERROR:
+ Reset();
+#ifdef VERBOSE
+ lprintf( "Start returns Error");
+#endif
+ break;
+ case C_TERMINATE:
+ InfoMessage("");
+ case C_INFO:
+ Reset();
+ break;
+ }
+ }
+ return rc;
+}
+
+/*
+ * \parm reset says if the user used Esc rather than undo/redo
+ */
+EXPORT int ConfirmReset(BOOL_T retry)
+{
+ wAction_t rc;
+ if (curCommand != describeCmdInx) {
+ LOG(log_command, 3,
+ ( "COMMAND CONFIRM %s\n", commandList[curCommand].helpKey ))
+ rc = commandList[curCommand].cmdProc( C_CONFIRM, zero);
+ LOG(log_command, 4, ( " COMMAND returns %d\n", rc ))
+ if (rc == C_ERROR) {
+ if (retry)
+ rc =
+ wNotice3(
+ _(
+ "Cancelling the current command will undo the changes\n"
+ "you are currently making. Do you want to do the update instead?"),
+ _("Yes"), _("No"), _("Cancel"));
+ else
+ rc =
+ wNoticeEx( NT_WARNING,
+ _(
+ "Cancelling the current command will undo the changes\n"
+ "you are currently making. Do you want to do the update instead?"),
+ _("Yes"), _("No"));
+ if (rc == 1) {
+ LOG(log_command, 3,
+ ( "COMMAND OK %s\n", commandList[curCommand].helpKey ))
+ commandList[curCommand].cmdProc( C_OK, zero);
+ return C_OK;
+ } else if (rc == -1) {
+ return C_CANCEL;
+ }
+ } else if (rc == C_TERMINATE) {
+ return C_TERMINATE;
+ }
+ }
+ if (retry) {
+ /* because user pressed esc */
+ SetAllTrackSelect( FALSE);
+ }
+ Reset();
+ LOG(log_command, 1,
+ ( "COMMAND RESET %s\n", commandList[curCommand].helpKey ))
+ commandList[curCommand].cmdProc( C_START, zero);
+ return C_CONTINUE;
+}
+
+EXPORT void DoCommandB(void * data)
+{
+ wIndex_t inx = (wIndex_t)VP2L(data);
+ STATUS_T rc;
+ static coOrd pos = { 0, 0 };
+ static int inDoCommandB = FALSE;
+ wIndex_t buttInx;
+
+ if (inDoCommandB) {
+ return;
+ }
+ inDoCommandB = TRUE;
+
+ if (inx < 0 || inx >= commandCnt) {
+ CHECK(FALSE);
+ inDoCommandB = FALSE;
+ return;
+ }
+
+ if ((!inPlayback) && (!commandList[inx].enabled)) {
+ ErrorMessage(MSG_COMMAND_DISABLED);
+ inx = describeCmdInx;
+ }
+
+ InfoMessage("");
+ if (curCommand != selectCmdInx) {
+ LOG(log_command, 3,
+ ( "COMMAND FINISH %s\n", commandList[curCommand].helpKey ))
+ rc = commandList[curCommand].cmdProc( C_FINISH, zero);
+ LOG(log_command, 3,
+ ( "COMMAND CONFIRM %s\n", commandList[curCommand].helpKey ))
+ rc = commandList[curCommand].cmdProc( C_CONFIRM, zero);
+ LOG(log_command, 4, ( " COMMAND returns %d\n", rc ))
+ if (rc == C_ERROR) {
+ rc = wNotice3(
+ _("Cancelling the current command will undo the changes\n"
+ "you are currently making. Do you want to update?"),
+ _("Yes"), _("No"), _("Cancel"));
+ if (rc == 1) {
+ commandList[curCommand].cmdProc( C_OK, zero);
+ } else if (rc == -1) {
+ inDoCommandB = FALSE;
+ return;
+ }
+ }
+ LOG(log_command, 3,
+ ( "COMMAND CANCEL %s\n", commandList[curCommand].helpKey ))
+ commandList[curCommand].cmdProc( C_CANCEL, pos);
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ } else {
+ LOG(log_command, 3,
+ ( "COMMAND FINISH %s\n", commandList[curCommand].helpKey ))
+ rc = commandList[curCommand].cmdProc( C_FINISH, zero);
+ }
+ if (commandList[curCommand].buttInx >= 0)
+ wButtonSetBusy(
+ (wButton_p) buttonList[commandList[curCommand].buttInx].control,
+ FALSE);
+
+ if (recordF) {
+ fprintf(recordF, "COMMAND %s\n", commandList[inx].helpKey + 3);
+ fflush(recordF);
+ }
+
+ curCommand = inx;
+ commandContext = commandList[curCommand].context;
+ if ((buttInx = commandList[curCommand].buttInx) >= 0) {
+ if (buttonList[buttInx].cmdInx != curCommand) {
+ wButtonSetLabel((wButton_p) buttonList[buttInx].control,
+ (char*) commandList[curCommand].icon);
+ wControlSetHelp(buttonList[buttInx].control,
+ GetBalloonHelpStr(commandList[curCommand].helpKey));
+ wControlSetContext(buttonList[buttInx].control,
+ I2VP(curCommand));
+ buttonList[buttInx].cmdInx = curCommand;
+ }
+ wButtonSetBusy(
+ (wButton_p) buttonList[commandList[curCommand].buttInx].control,
+ TRUE);
+ }
+ LOG(log_command, 1,
+ ( "COMMAND START %s\n", commandList[curCommand].helpKey ))
+ wSetCursor(mainD.d,defaultCursor);
+ rc = commandList[curCommand].cmdProc( C_START, pos);
+ LOG(log_command, 4, ( " COMMAND returns %d\n", rc ))
+ TempRedraw(); // DoCommandB
+ switch (rc) {
+ case C_CONTINUE:
+ break;
+ case C_ERROR:
+ Reset();
+#ifdef VERBOSE
+ lprintf( "Start returns Error");
+#endif
+ break;
+ case C_TERMINATE:
+ case C_INFO:
+ if (rc == C_TERMINATE) {
+ InfoMessage("");
+ }
+ Reset();
+ break;
+ }
+ inDoCommandB = FALSE;
+}
+
+static void LayoutSetPos(wIndex_t inx)
+{
+ wWinPix_t w, h, offset;
+ static wWinPix_t toolbarRowHeight = 0;
+ static wWinPix_t width;
+ static int lastGroup;
+ static wWinPix_t gap;
+ static int layerButtCnt;
+ static int layerButtNumber;
+ int currGroup;
+
+ if (inx == 0) {
+ lastGroup = 0;
+ wWinGetSize(mainW, &width, &h);
+ gap = 5;
+ toolbarWidth = width - 20 + 5;
+ layerButtCnt = 0;
+ layerButtNumber = 0;
+ toolbarHeight = 0;
+ }
+
+ if (buttonList[inx].control) {
+ if (toolbarRowHeight <= 0) {
+ toolbarRowHeight = wControlGetHeight(buttonList[inx].control);
+ }
+
+ currGroup = buttonList[inx].group & ~BG_BIGGAP;
+ if (currGroup != lastGroup && (buttonList[inx].group & BG_BIGGAP)) {
+ gap = 15;
+ }
+ if ((toolbarSet & (1 << currGroup))
+ && (programMode != MODE_TRAIN
+ || (buttonList[inx].options
+ & (IC_MODETRAIN_TOO | IC_MODETRAIN_ONLY)))
+ && (programMode == MODE_TRAIN
+ || (buttonList[inx].options & IC_MODETRAIN_ONLY) == 0)
+ && ((buttonList[inx].group & ~BG_BIGGAP) != BG_LAYER
+ || layerButtCnt < layerCount)) {
+ if (currGroup != lastGroup) {
+ toolbarWidth += gap;
+ lastGroup = currGroup;
+ gap = 5;
+ }
+ w = wControlGetWidth(buttonList[inx].control);
+ h = wControlGetHeight(buttonList[inx].control);
+ if (h<toolbarRowHeight) {
+ offset = (h-toolbarRowHeight)/2;
+ h = toolbarRowHeight; //Uniform
+ } else { offset = 0; }
+ if (inx < buttonCnt - 1 && (buttonList[inx + 1].options & IC_ABUT)) {
+ w += wControlGetWidth(buttonList[inx + 1].control);
+ }
+ if (toolbarWidth + w > width - 20) {
+ toolbarWidth = 0;
+ toolbarHeight += h + 5;
+ }
+ if ((currGroup == BG_LAYER) && layerButtNumber>1
+ && GetLayerHidden(layerButtNumber-2) ) {
+ wControlShow(buttonList[inx].control, FALSE);
+ layerButtNumber++;
+ } else {
+ if (currGroup == BG_LAYER ) {
+ if (layerButtNumber>1) { layerButtCnt++; } // Ignore List and Background
+ layerButtNumber++;
+ }
+ wControlSetPos(buttonList[inx].control, toolbarWidth,
+ toolbarHeight - (h + 5 +offset));
+ buttonList[inx].x = toolbarWidth;
+ buttonList[inx].y = toolbarHeight - (h + 5 + offset);
+ toolbarWidth += wControlGetWidth(buttonList[inx].control);
+ wControlShow(buttonList[inx].control, TRUE);
+ }
+ } else {
+ wControlShow(buttonList[inx].control, FALSE);
+ }
+ }
+}
+
+EXPORT void LayoutToolBar( void * data )
+{
+ int inx;
+
+ for (inx = 0; inx < buttonCnt; inx++) {
+ LayoutSetPos(inx);
+ }
+ if (toolbarSet&(1<<BG_HOTBAR)) {
+ LayoutHotBar(data);
+ } else {
+ HideHotBar();
+ }
+}
+
+static void ToolbarChange(long changes)
+{
+ if ((changes & CHANGE_TOOLBAR)) {
+ /*if ( !(changes&CHANGE_MAIN) )*/
+ MainProc( mainW, wResize_e, NULL, NULL );
+ /*else
+ LayoutToolBar();*/
+ }
+}
+
+/***************************************************************************
+ *
+ *
+ *
+ */
+
+EXPORT BOOL_T CommandEnabled(wIndex_t cmdInx)
+{
+ return commandList[cmdInx].enabled;
+}
+
+
+EXPORT wIndex_t AddCommand(procCommand_t cmdProc, const char * helpKey,
+ const char * nameStr, wIcon_p icon, int reqLevel, long options, long acclKey,
+ wIndex_t buttInx, long stickyMask, wMenuPush_p cmdMenus[NUM_CMDMENUS],
+ void * context)
+{
+ CHECK( commandCnt < COMMAND_MAX - 1 );
+ commandList[commandCnt].labelStr = MyStrdup(nameStr);
+ commandList[commandCnt].helpKey = MyStrdup(helpKey);
+ commandList[commandCnt].cmdProc = cmdProc;
+ commandList[commandCnt].icon = icon;
+ commandList[commandCnt].reqLevel = reqLevel;
+ commandList[commandCnt].enabled = TRUE;
+ commandList[commandCnt].options = options;
+ commandList[commandCnt].acclKey = acclKey;
+ commandList[commandCnt].context = context;
+ commandList[commandCnt].buttInx = buttInx;
+ commandList[commandCnt].stickyMask = stickyMask;
+ commandList[commandCnt].menu[0] = cmdMenus[0];
+ commandList[commandCnt].menu[1] = cmdMenus[1];
+ commandList[commandCnt].menu[2] = cmdMenus[2];
+ commandList[commandCnt].menu[3] = cmdMenus[3];
+ if ( buttInx >= 0 && buttonList[buttInx].cmdInx == -1 ) {
+ // set button back-link
+ buttonList[buttInx].cmdInx = commandCnt;
+ }
+ commandCnt++;
+ return commandCnt - 1;
+}
+
+EXPORT void AddToolbarControl(wControl_p control, long options)
+{
+ CHECK( buttonCnt < COMMAND_MAX - 1 );
+ buttonList[buttonCnt].enabled = TRUE;
+ buttonList[buttonCnt].options = options;
+ buttonList[buttonCnt].group = cmdGroup;
+ buttonList[buttonCnt].x = 0;
+ buttonList[buttonCnt].y = 0;
+ buttonList[buttonCnt].control = control;
+ buttonList[buttonCnt].cmdInx = -1;
+ LayoutSetPos(buttonCnt);
+ buttonCnt++;
+}
+
+
+/*--------------------------------------------------------------------*/
+
+EXPORT void PlaybackButtonMouse(wIndex_t buttInx)
+{
+ wWinPix_t cmdX, cmdY;
+ coOrd pos;
+
+ if (buttInx < 0 || buttInx >= buttonCnt) {
+ return;
+ }
+ if (buttonList[buttInx].control == NULL) {
+ return;
+ }
+ cmdX = buttonList[buttInx].x + 17;
+ cmdY = toolbarHeight - (buttonList[buttInx].y + 17)
+ + (wWinPix_t) (mainD.size.y / mainD.scale * mainD.dpi) + 30;
+
+ mainD.Pix2CoOrd( &mainD, cmdX, cmdY, &pos );
+ MovePlaybackCursor(&mainD, pos, TRUE, buttonList[buttInx].control);
+ if (playbackTimer == 0) {
+ wButtonSetBusy((wButton_p) buttonList[buttInx].control, TRUE);
+ wFlush();
+ wPause(500);
+ wButtonSetBusy((wButton_p) buttonList[buttInx].control, FALSE);
+ wFlush();
+ }
+}
+
+
+EXPORT void PlaybackCommand(const char * line, wIndex_t lineNum)
+{
+ size_t inx;
+ wIndex_t buttInx;
+ size_t len1, len2;
+ len1 = strlen(line + 8);
+ for (inx = 0; inx < commandCnt; inx++) {
+ len2 = strlen(commandList[inx].helpKey + 3);
+ if (len1 == len2
+ && strncmp(line + 8, commandList[inx].helpKey + 3, len2) == 0) {
+ break;
+ }
+ }
+ if (inx >= commandCnt) {
+ fprintf(stderr, "Unknown playback COMMAND command %d : %s\n", lineNum,
+ line);
+ } else {
+ wWinPix_t cmdX, cmdY;
+ coOrd pos;
+ if ((buttInx = commandList[inx].buttInx) >= 0) {
+ cmdX = buttonList[buttInx].x + 17;
+ cmdY = toolbarHeight - (buttonList[buttInx].y + 17)
+ + (wWinPix_t) (mainD.size.y / mainD.scale * mainD.dpi) + 30;
+ mainD.Pix2CoOrd( &mainD, cmdX, cmdY, &pos );
+ MovePlaybackCursor(&mainD, pos,TRUE,buttonList[buttInx].control);
+ }
+ if (strcmp(line + 8, "Undo") == 0) {
+ if (buttInx > 0 && playbackTimer == 0) {
+ wButtonSetBusy((wButton_p) buttonList[buttInx].control, TRUE);
+ wFlush();
+ wPause(500);
+ wButtonSetBusy((wButton_p) buttonList[buttInx].control, FALSE);
+ wFlush();
+ }
+ UndoUndo(NULL);
+ } else if (strcmp(line + 8, "Redo") == 0) {
+ if (buttInx >= 0 && playbackTimer == 0) {
+ wButtonSetBusy((wButton_p) buttonList[buttInx].control, TRUE);
+ wFlush();
+ wPause(500);
+ wButtonSetBusy((wButton_p) buttonList[buttInx].control, FALSE);
+ wFlush();
+ }
+ UndoRedo(NULL);
+ } else {
+ if (buttInx >= 0 && playbackTimer == 0) {
+ wButtonSetBusy((wButton_p) buttonList[buttInx].control, TRUE);
+ wFlush();
+ wPause(500);
+ wButtonSetBusy((wButton_p) buttonList[buttInx].control, FALSE);
+ wFlush();
+ }
+ DoCommandB(I2VP(inx));
+ }
+ }
+}
+
+/*--------------------------------------------------------------------*/
+
+
+EXPORT BOOL_T IsCurCommandSticky(void)
+{
+ if ((commandList[curCommand].options & IC_STICKY) != 0
+ && (commandList[curCommand].stickyMask & stickySet) != 0) {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+EXPORT void ResetIfNotSticky(void)
+{
+ if ((commandList[curCommand].options & IC_STICKY) == 0
+ || (commandList[curCommand].stickyMask & stickySet) == 0) {
+ Reset();
+ }
+}
+
+
+/*--------------------------------------------------------------------*/
+EXPORT void CommandInit( void )
+{
+ curCommand = describeCmdInx;
+ commandContext = commandList[curCommand].context;
+ log_command = LogFindIndex( "command" );
+ RegisterChangeNotification(ToolbarChange);
+}
+
diff --git a/app/bin/command.h b/app/bin/command.h
new file mode 100644
index 0000000..073e412
--- /dev/null
+++ b/app/bin/command.h
@@ -0,0 +1,150 @@
+/** \file command.h
+ * Application wide declarations and defines
+ */
+
+/* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef COMMAND_H
+#define COMMAND_H
+
+#include "common.h"
+
+#define IC_STICKY (1<<0)
+#define IC_INITNOTSTICKY (1<<1)
+#define IC_CANCEL (1<<2)
+#define IC_MENU (1<<3)
+#define IC_NORESTART (1<<4)
+#define IC_SELECTED (1<<5)
+#define IC_POPUP (1<<6)
+#define IC_LCLICK (1<<7)
+#define IC_RCLICK (1<<8)
+#define IC_CMDMENU (1<<9)
+#define IC_POPUP2 (1<<10)
+#define IC_ABUT (1<<11)
+#define IC_ACCLKEY (1<<12)
+#define IC_MODETRAIN_TOO (1<<13)
+#define IC_MODETRAIN_ONLY (1<<14)
+#define IC_WANT_MOVE (1<<15)
+#define IC_PLAYBACK_PUSH (1<<16)
+#define IC_WANT_MODKEYS (1<<17)
+#define IC_POPUP3 (1<<18)
+
+
+/*
+ * 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_LDOUBLE wActionLDownDouble
+#define C_MODKEY wActionModKey
+#define C_SCROLLUP wActionScrollUp
+#define C_SCROLLDOWN wActionScrollDown
+#define C_SCROLLLEFT wActionScrollLeft
+#define C_SCROLLRIGHT wActionScrollRight
+#define C_MDOWN wActionMDown
+#define C_MMOVE wActionMDrag
+#define C_MUP wActionMUp
+#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_UPDATE (wActionLast+11)
+
+#define C_CONTINUE (100)
+#define C_TERMINATE (101)
+#define C_INFO (102)
+#define C_ERROR (103)
+
+/*
+ * Command Levels - obsolete
+ */
+#define LEVEL0 (0)
+#define LEVEL0_50 (1)
+#define LEVEL1 (2)
+#define LEVEL2 (3)
+
+/*
+ * Command groups
+ */
+#define BG_SELECT (0)
+#define BG_ZOOM (1)
+#define BG_UNDO (2)
+#define BG_EASE (3)
+#define BG_TRKCRT (4)
+#define BG_TRKMOD (5)
+#define BG_TRKGRP (6)
+#define BG_MISCCRT (7)
+#define BG_RULER (8)
+#define BG_LAYER (9)
+#define BG_HOTBAR (10)
+#define BG_SNAP (11)
+#define BG_TRAIN (12)
+#define BG_COUNT (13)
+#define BG_FILE (14)
+#define BG_CONTROL (15)
+#define BG_EXPORTIMPORT (16)
+#define BG_PRINT (17)
+#define BG_BIGGAP (1<<8)
+extern int cmdGroup;
+
+
+extern int buttonCnt;
+extern int commandCnt;
+extern int cmdGroup;
+extern long toolbarSet;
+extern wWinPix_t toolbarHeight;
+extern long preSelect;
+extern long rightClickMode;
+extern void * commandContext;
+extern coOrd cmdMenuPos;
+
+const char * GetCurCommandName( void );
+void EnableCommands( void );
+wIndex_t GetCurrentCommand(void);
+void Reset( void );
+wBool_t DoCurCommand( wAction_t, coOrd );
+int ConfirmReset( BOOL_T );
+void DoCommandB( void * );
+void LayoutToolBar( void * );
+BOOL_T CommandEnabled( wIndex_t );
+#define NUM_CMDMENUS (4)
+wIndex_t AddCommand(procCommand_t cmdProc, const char * helpKey,
+ const char * nameStr, wIcon_p icon, int reqLevel, long options, long acclKey,
+ wIndex_t buttInx, long stickyMask, wMenuPush_p cmdMenus[NUM_CMDMENUS],
+ void * context);
+void AddToolbarControl( wControl_p, long );
+void PlaybackButtonMouse( wIndex_t );
+void PlaybackCommand( const char *, wIndex_t );
+BOOL_T IsCurCommandSticky(void);
+void ResetIfNotSticky( void );
+void CommandInit( void );
+#endif
diff --git a/app/bin/common-ui.h b/app/bin/common-ui.h
index 893dbc7..e34c4a9 100644
--- a/app/bin/common-ui.h
+++ b/app/bin/common-ui.h
@@ -1,5 +1,5 @@
/** \file common-ui.h
- * Defnitions of message and other UI types
+ * Defnitions of message and other UI types
*/
/* XTrkCad - Model Railroad CAD
@@ -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
*/
/* Do not include this file in header (.h) files */
diff --git a/app/bin/common.h b/app/bin/common.h
index 92620f2..f03a04c 100644
--- a/app/bin/common.h
+++ b/app/bin/common.h
@@ -17,14 +17,13 @@
*
* 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
*/
#ifndef COMMON_H
#define COMMON_H
// INCLUDES
-#include <assert.h>
#include <ctype.h>
#include <errno.h>
#include <locale.h>
@@ -38,10 +37,6 @@
#include <sys/types.h>
#include <time.h>
-#ifdef HAVE_MALLOC_H
-#include <malloc.h>
-#endif
-
#include "wlib.h"
#ifndef WINDOWS
@@ -119,6 +114,8 @@ typedef double FLOAT_T;
typedef double POS_T;
typedef double DIST_T;
typedef double ANGLE_T;
+typedef double LWIDTH_T;
+
#define SCANF_FLOAT_FORMAT "%lf"
typedef double DOUBLE_T;
@@ -126,8 +123,8 @@ typedef double WDOUBLE_T;
typedef double FONTSIZE_T;
typedef struct {
- POS_T x,y;
- } coOrd;
+ POS_T x,y;
+} coOrd;
typedef struct {
coOrd pt;
@@ -148,48 +145,80 @@ typedef signed char TRKTYP_T;
typedef int TRKINX_T;
typedef long DEBUGF_T;
typedef int REGION_T;
+typedef long SCALEINX_T;
+typedef long GAUGEINX_T;
+typedef long SCALEDESCINX_T;
-enum paramFileState { PARAMFILE_UNLOADED = 0, PARAMFILE_NOTUSABLE, PARAMFILE_COMPATIBLE, PARAMFILE_FIT, PARAMFILE_MAXSTATE };
-#define SCALE_ANY (-2)
-#define SCALE_DEMO (-1)
+enum paramFileState { PARAMFILE_UNLOADED = 0, PARAMFILE_NOTUSABLE, PARAMFILE_COMPATIBLE, PARAMFILE_FIT, PARAMFILE_MAXSTATE };
// DYNARRAY
typedef struct {
- int cnt;
- int max;
- void * ptr;
- } dynArr_t;
+ int cnt;
+ int max;
+ void * ptr;
+} dynArr_t;
#define CHECK_SIZE(T,DA)
+/**
+ * Append INCR mambers to DA
+ * INCR is > 1 if we plan to add more members soon
+ * Increments .cnt for the next member
+ * Note: new members may not be empty
+ */
#define DYNARR_APPEND(T,DA,INCR) \
{ if ((DA).cnt >= (DA).max) { \
- (DA).max += INCR; \
- CHECK_SIZE(T,DA) \
+ (DA).max += (INCR); \
+ CHECK_SIZE((T),(DA)) \
(DA).ptr = MyRealloc( (DA).ptr, (DA).max * sizeof *(T*)NULL ); \
if ( (DA).ptr == NULL ) \
abort(); \
} \
(DA).cnt++; }
-#define DYNARR_ADD(T,DA,INCR) DYNARR_APPEND(T,DA,INCR)
+/**
+ * Return Last member of DA
+ */
#define DYNARR_LAST(T,DA) \
(((T*)(DA).ptr)[(DA).cnt-1])
+/**
+ * Return N't member of DA
+ */
#define DYNARR_N(T,DA,N) \
(((T*)(DA).ptr)[N])
+/**
+ * Logically empty the DA
+ * .max and .ptr are untouched
+ */
#define DYNARR_RESET(T,DA) \
(DA).cnt=0
+/**
+ * Set number of members to N
+ * If extending (.cnt > .max ), new values will be 0'd, otherwise not
+ */
#define DYNARR_SET(T,DA,N) \
- { if ((DA).max < N) { \
- (DA).max = N; \
- CHECK_SIZE(T,DA) \
+ { if ((DA).max < (N)) { \
+ (DA).max = (N); \
+ CHECK_SIZE((T),(DA)) \
(DA).ptr = MyRealloc( (DA).ptr, (DA).max * sizeof *(T*)NULL ); \
if ( (DA).ptr == NULL ) \
abort(); \
} \
- (DA).cnt = N; }
+ (DA).cnt = (N); }
+/**
+ * Initializes DA to empty when .ptr might be garbage (ie local vars)
+ * All fields are cleared
+ */
+#define DYNARR_INIT(T,DA) \
+ { (DA).ptr = NULL; \
+ (DA).max = 0; \
+ (DA).cnt = 0; \
+ }
+/**
+ * Initializes DA to empty and frees .ptr
+ */
#define DYNARR_FREE(T,DA) \
{ if ((DA).ptr) { \
MyFree( (DA).ptr); \
@@ -197,15 +226,19 @@ typedef struct {
} \
(DA).max = 0; \
(DA).cnt = 0; }
-#define DYNARR_REMOVE(T,DA,I) \
+/**
+ * Removes N'th member from DA
+ * (Not used)
+ */
+#define DYNARR_REMOVE(T,DA,N) \
{ \
- { if ((DA).cnt-1 > I) { \
- for (int i=I;i<(DA).cnt-1;i++) { \
+ { if ((DA).cnt-1 > (N)) { \
+ for (int i=(N);i<(DA).cnt-1;i++) { \
(((T*)(DA).ptr)[i])= (((T*)(DA).ptr)[i+1]); \
} \
} \
} \
- if ((DA.cnt)>=I) (DA).cnt--; \
+ if ((DA).cnt>=(N)) (DA).cnt--; \
}
// Base DotsPerInch
@@ -223,14 +256,19 @@ typedef struct {
// FORWARD TYPE DECLS
typedef struct drawCmd_t * drawCmd_p;
typedef struct track_t * track_p;
+typedef struct track_t * track_cp;
typedef struct trkSeg_t * trkSeg_p;
typedef struct traverseTrack_t * traverseTrack_p;
typedef struct trkEndPt_t * trkEndPt_p;
+typedef void (*doSaveCallBack_p)( void );
+typedef void (*addButtonCallBack_t)(void*);
+typedef STATUS_T (*procCommand_t) (wAction_t, coOrd);
+
// base class for extraData*_t: each of which must include this struct as the first element
typedef struct extraDataBase_t {
- TRKTYP_T trkType;
- } extraDataBase_t;
+ TRKTYP_T trkType;
+} extraDataBase_t;
// We check if TRKTYP_T in trk, trk->extraDataBase and the code context (TRKTYP) match.
// If TRKTYP is T_NOTRACK then we are dealing with T_TURNOUT/T_STRUCTURE or T_BEZIER/T_BEZLIN which
// share a log of code and have the same extraData*_t structure.
@@ -238,12 +276,43 @@ typedef struct extraDataBase_t {
((TYPE*)GetTrkExtraData( (TRK), (TRKTYP) ))
extraDataBase_t * GetTrkExtraData( track_p, TRKTYP_T );
+
+typedef struct {
+ BOOL_T valid;
+ DIST_T length;
+ DIST_T width;
+ DIST_T spacing;
+} tieData_t, *tieData_p;
+
+// Syntactic suger for exported (non-static) objects
+#define EXPORT
+
+#define COUNT(A) (sizeof(A)/sizeof(A[0]))
+
+#define STR_SIZE (256)
+#define STR_SHORT_SIZE (80)
+#define STR_LONG_SIZE (1024)
+#define STR_HUGE_SIZE (10240)
+
+#define CAST_AWAY_CONST (char*)
+
+#define TITLEMAXLEN (40)
+
+
+
// COMMON INCLUDES
// If you add includes here, please remove them elsewhere
#include "i18n.h"
#include "utility.h"
+#include "acclkeys.h"
#include "misc.h"
+// TODO - move these includes to the files that need them
+#include "dlayer.h"
+#include "scale.h"
+#include "command.h"
+#include "menu.h"
+
#endif
diff --git a/app/bin/compound.c b/app/bin/compound.c
index b6d5847..dea754d 100644
--- a/app/bin/compound.c
+++ b/app/bin/compound.c
@@ -18,7 +18,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 "tbezier.h"
@@ -30,6 +30,7 @@
#include "fileio.h"
#include "shrtpath.h"
#include "track.h"
+#include "trkendpt.h"
#include "draw.h"
#include "include/paramfile.h"
#include "common-ui.h"
@@ -50,7 +51,8 @@
*/
EXPORT PATHPTR_T GetPaths( track_p trk )
{
- struct extraDataCompound_t * xx = GET_EXTRA_DATA( trk, T_NOTRACK, extraDataCompound_t );
+ struct extraDataCompound_t * xx = GET_EXTRA_DATA( trk, T_NOTRACK,
+ extraDataCompound_t );
if ( GetTrkType(trk) == T_STRUCTURE && xx->paths != NULL ) {
LogPrintf( "GetPaths( STRUCTURE, paths!=NULL )\n" );
}
@@ -70,7 +72,7 @@ EXPORT PATHPTR_T GetPaths( track_p trk )
EXPORT wIndex_t GetPathsLength( PATHPTR_T paths )
{
PATHPTR_T pp;
- ASSERT( paths != NULL );
+ CHECK( paths != NULL );
for ( pp = paths; pp[0]; pp+=2 )
for ( pp += strlen( (char*)pp ); pp[0] || pp[1]; pp++ );
return (wIndex_t)(pp - paths + 1);
@@ -96,9 +98,11 @@ EXPORT void SetPaths( track_p trk, PATHPTR_T paths )
LogPrintf( "SetPaths( TURNOUT, paths==NULL )\n" );
}
- struct extraDataCompound_t * xx = GET_EXTRA_DATA( trk, T_NOTRACK, extraDataCompound_t );
- if ( xx->paths )
+ struct extraDataCompound_t * xx = GET_EXTRA_DATA( trk, T_NOTRACK,
+ extraDataCompound_t );
+ if ( xx->paths ) {
MyFree( xx->paths );
+ }
if ( paths == NULL ) {
xx->paths = NULL;
} else {
@@ -121,13 +125,15 @@ EXPORT void SetPaths( track_p trk, PATHPTR_T paths )
*/
EXPORT PATHPTR_T GetCurrPath( track_p trk )
{
- struct extraDataCompound_t * xx = GET_EXTRA_DATA( trk, T_TURNOUT, extraDataCompound_t );
- if ( xx->currPath )
+ struct extraDataCompound_t * xx = GET_EXTRA_DATA( trk, T_TURNOUT,
+ extraDataCompound_t );
+ if ( xx->currPath ) {
return xx->currPath;
+ }
PATHPTR_T path = GetPaths( trk );
for ( wIndex_t position = xx->currPathIndex;
- position > 0 && path[0];
- path+=2, position-- ) {
+ position > 0 && path[0];
+ path+=2, position-- ) {
for ( path += strlen( (char*)path ); path[0] || path[1]; path++ );
}
if ( !path[0] ) {
@@ -141,18 +147,22 @@ EXPORT PATHPTR_T GetCurrPath( track_p trk )
EXPORT long GetCurrPathIndex( track_p trk )
{
- if ( GetTrkType( trk ) != T_TURNOUT )
+ if ( GetTrkType( trk ) != T_TURNOUT ) {
return 0;
- struct extraDataCompound_t * xx = GET_EXTRA_DATA( trk, T_TURNOUT, extraDataCompound_t );
+ }
+ struct extraDataCompound_t * xx = GET_EXTRA_DATA( trk, T_TURNOUT,
+ extraDataCompound_t );
return xx->currPathIndex;
}
EXPORT void SetCurrPathIndex( track_p trk, long position )
{
- if ( GetTrkType( trk ) != T_TURNOUT )
+ if ( GetTrkType( trk ) != T_TURNOUT ) {
return;
- struct extraDataCompound_t * xx = GET_EXTRA_DATA( trk, T_TURNOUT, extraDataCompound_t );
+ }
+ struct extraDataCompound_t * xx = GET_EXTRA_DATA( trk, T_TURNOUT,
+ extraDataCompound_t );
xx->currPathIndex = position;
xx->currPath = NULL;
}
@@ -173,7 +183,7 @@ PATHPTR_T GetParamPaths( turnoutInfo_t * to )
*
* Set paths for a Turnout Parameter 'to'
* Used when creating a new turnout def'n
- *
+ *
* \param to IN
* \param paths IN
*/
@@ -195,12 +205,12 @@ void SetParamPaths( turnoutInfo_t * to, PATHPTR_T paths )
*/
EXPORT BOOL_T WriteCompoundPathsEndPtsSegs(
- FILE * f,
- PATHPTR_T paths,
- wIndex_t segCnt,
- trkSeg_p segs,
- EPINX_T endPtCnt,
- trkEndPt_t * endPts )
+ FILE * f,
+ PATHPTR_T paths,
+ wIndex_t segCnt,
+ trkSeg_p segs,
+ EPINX_T endPtCnt,
+ trkEndPt_p endPts )
{
int i;
PATHPTR_T pp;
@@ -209,27 +219,30 @@ EXPORT BOOL_T WriteCompoundPathsEndPtsSegs(
if ( paths ) {
for ( pp=paths; *pp; pp+=2 ) {
rc &= fprintf( f, "\tP \"%s\"", pp )>0;
- for ( pp+=strlen((char *)pp)+1; pp[0]!=0 || pp[1]!=0; pp++ )
+ for ( pp+=strlen((char *)pp)+1; pp[0]!=0 || pp[1]!=0; pp++ ) {
rc &= fprintf( f, " %d", pp[0] )>0;
+ }
rc &= fprintf( f, "\n" )>0;
}
}
- for ( i=0; i<endPtCnt; i++ )
+ for ( i=0; i<endPtCnt; i++ ) {
+ trkEndPt_p epp = EndPtIndex( endPts, i );
rc &= fprintf( f, "\tE %0.6f %0.6f %0.6f\n",
- endPts[i].pos.x, endPts[i].pos.y, endPts[i].angle )>0;
+ GetEndPtPos(epp).x, GetEndPtPos(epp).y, GetEndPtAngle(epp) ) > 0;
+ }
rc &= WriteSegs( f, segCnt, segs )>0;
return rc;
}
EXPORT void ParseCompoundTitle(
- char * title,
- char * * manufP,
- int * manufL,
- char * * nameP,
- int * nameL,
- char * * partnoP,
- int * partnoL )
+ char * title,
+ char * * manufP,
+ int * manufL,
+ char * * nameP,
+ int * nameL,
+ char * * partnoP,
+ int * partnoL )
{
char * cp1, *cp2;
size_t len;
@@ -256,10 +269,12 @@ EXPORT void ParseCompoundTitle(
}
}
+EXPORT long listLabels = 7;
+EXPORT long layoutLabels = 1;
-void FormatCompoundTitle(
- long format,
- char * title )
+EXPORT void FormatCompoundTitle(
+ long format,
+ char * title )
{
char *cp1, *cp2=NULL, *cq;
size_t len;
@@ -277,8 +292,9 @@ void FormatCompoundTitle(
cq += strlen(cq);
}
cp1 = strchr( title, '\t' );
- if ( cp1 != NULL )
+ if ( cp1 != NULL ) {
cp2 = strchr( cp1+1, '\t' );
+ }
if (cp2 == NULL) {
if ( (format&LABEL_TABBED) ) {
*cq++ = '\t';
@@ -339,7 +355,7 @@ void FormatCompoundTitle(
void ComputeCompoundBoundingBox(
- track_p trk )
+ track_p trk )
{
struct extraDataCompound_t *xx;
coOrd hi, lo;
@@ -359,32 +375,33 @@ turnoutInfo_t * FindCompound( long type, char * scale, char * title )
wIndex_t inx;
SCALEINX_T scaleInx;
- if ( scale )
+ if ( scale ) {
scaleInx = LookupScale( scale );
- else
+ } else {
scaleInx = -1;
+ }
if ( type&FIND_TURNOUT )
- for (inx=0; inx<turnoutInfo_da.cnt; inx++) {
- to = turnoutInfo(inx);
- if ( IsParamValid(to->paramFileIndex) &&
- to->segCnt > 0 &&
- (scaleInx == -1 || to->scaleInx == scaleInx ) &&
- to->segCnt != 0 &&
- strcmp( to->title, title ) == 0 ) {
- return to;
+ for (inx=0; inx<turnoutInfo_da.cnt; inx++) {
+ to = turnoutInfo(inx);
+ if ( IsParamValid(to->paramFileIndex) &&
+ to->segCnt > 0 &&
+ (scaleInx == -1 || to->scaleInx == scaleInx ) &&
+ to->segCnt != 0 &&
+ strcmp( to->title, title ) == 0 ) {
+ return to;
+ }
}
- }
if ( type&FIND_STRUCT )
- for (inx=0; inx<structureInfo_da.cnt; inx++) {
- to = structureInfo(inx);
- if ( IsParamValid(to->paramFileIndex) &&
- to->segCnt > 0 &&
- (scaleInx == -1 || to->scaleInx == scaleInx ) &&
- to->segCnt != 0 &&
- strcmp( to->title, title ) == 0 ) {
- return to;
+ for (inx=0; inx<structureInfo_da.cnt; inx++) {
+ to = structureInfo(inx);
+ if ( IsParamValid(to->paramFileIndex) &&
+ to->segCnt > 0 &&
+ (scaleInx == -1 || to->scaleInx == scaleInx ) &&
+ to->segCnt != 0 &&
+ strcmp( to->title, title ) == 0 ) {
+ return to;
+ }
}
- }
return NULL;
}
@@ -402,13 +419,17 @@ EXPORT void CompoundClearDemoDefns( void )
for (inx=0; inx<turnoutInfo_da.cnt; inx++) {
to = turnoutInfo(inx);
- if ( to->paramFileIndex == PARAM_CUSTOM && strcasecmp( GetScaleName(to->scaleInx), "DEMO" ) == 0 )
+ if ( to->paramFileIndex == PARAM_CUSTOM
+ && strcasecmp( GetScaleName(to->scaleInx), "DEMO" ) == 0 ) {
to->segCnt = 0;
+ }
}
for (inx=0; inx<structureInfo_da.cnt; inx++) {
to = structureInfo(inx);
- if ( to->paramFileIndex == PARAM_CUSTOM && strcasecmp( GetScaleName(to->scaleInx), "DEMO" ) == 0 )
+ if ( to->paramFileIndex == PARAM_CUSTOM
+ && strcasecmp( GetScaleName(to->scaleInx), "DEMO" ) == 0 ) {
to->segCnt = 0;
+ }
}
}
@@ -419,13 +440,14 @@ EXPORT void CompoundClearDemoDefns( void )
*/
void SetDescriptionOrig(
- track_p trk )
+ track_p trk )
{
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
int i, j;
coOrd p0, p1;
- for (i=0,j=-1;i<xx->segCnt;i++) {
+ for (i=0,j=-1; i<xx->segCnt; i++) {
if ( IsSegTrack( &xx->segs[i] ) ) {
if (j == -1) {
j = i;
@@ -438,8 +460,8 @@ void SetDescriptionOrig(
if (j != -1 && xx->segs[j].type == SEG_CRVTRK) {
REORIGIN( p0, xx->segs[j].u.c.center, xx->angle, xx->orig )
Translate( &p0, p0,
- xx->segs[j].u.c.a0 + xx->segs[j].u.c.a1/2.0 + xx->angle,
- fabs(xx->segs[j].u.c.radius) );
+ xx->segs[j].u.c.a0 + xx->segs[j].u.c.a1/2.0 + xx->angle,
+ fabs(xx->segs[j].u.c.radius) );
} else {
GetBoundingBox( trk, (&p0), (&p1) );
@@ -453,31 +475,38 @@ void SetDescriptionOrig(
void DrawCompoundDescription(
- track_p trk,
- drawCmd_p d,
- wDrawColor color )
+ track_p trk,
+ drawCmd_p d,
+ wDrawColor color )
{
wFont_p fp;
coOrd p1;
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
char * desc;
long layoutLabelsOption = layoutLabels;
- if (layoutLabels == 0)
+ if (layoutLabels == 0) {
return;
- if ((labelEnable&LABELENABLE_TRKDESC)==0)
+ }
+ if ((labelEnable&LABELENABLE_TRKDESC)==0) {
return;
- if ( (d->options&(DC_SIMPLE|DC_SEGTRACK)) )
+ }
+ if ( (d->options&(DC_SIMPLE|DC_SEGTRACK)) ) {
return;
+ }
if ( xx->special == TOpier ) {
desc = xx->u.pier.name;
} else {
- if ( xx->flipped )
+ if ( xx->flipped ) {
layoutLabelsOption |= LABEL_FLIPPED;
- if ( xx->ungrouped )
+ }
+ if ( xx->ungrouped ) {
layoutLabelsOption |= LABEL_UNGROUPED;
- if ( xx->split )
+ }
+ if ( xx->split ) {
layoutLabelsOption |= LABEL_SPLIT;
+ }
FormatCompoundTitle( layoutLabelsOption, xtitle(xx) );
desc = message;
}
@@ -492,45 +521,51 @@ void DrawCompoundDescription(
DrawLine( d, p0, p1, 0, color );
}
fp = wStandardFont( F_TIMES, FALSE, FALSE );
- DrawBoxedString( (xx->special==TOpier)?BOX_INVERT:BOX_NONE, d, p1, desc, fp, (wFontSize_t)descriptionFontSize, color, 0.0 );
+ DrawBoxedString( (xx->special==TOpier)?BOX_INVERT:BOX_NONE, d, p1, desc, fp,
+ (wFontSize_t)descriptionFontSize, color, 0.0 );
}
DIST_T CompoundDescriptionDistance(
- coOrd pos,
- track_p trk,
- coOrd * dpos,
- BOOL_T show_hidden,
- BOOL_T * hidden)
+ coOrd pos,
+ track_p trk,
+ coOrd * dpos,
+ BOOL_T show_hidden,
+ BOOL_T * hidden)
{
coOrd p1;
- if (GetTrkType(trk) != T_TURNOUT && GetTrkType(trk) != T_STRUCTURE)
+ if (GetTrkType(trk) != T_TURNOUT && GetTrkType(trk) != T_STRUCTURE) {
return DIST_INF;
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
- if ( ((GetTrkBits( trk ) & TB_HIDEDESC) != 0 ) && !show_hidden)
+ }
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
+ if ( ((GetTrkBits( trk ) & TB_HIDEDESC) != 0 ) && !show_hidden) {
return DIST_INF;
+ }
p1 = xx->descriptionOrig;
coOrd offset = xx->descriptionOff;
- if ( (GetTrkBits( trk ) & TB_HIDEDESC) != 0 ) offset = zero;
+ if ( (GetTrkBits( trk ) & TB_HIDEDESC) != 0 ) { offset = zero; }
Rotate( &p1, zero, xx->angle );
p1.x += xx->orig.x + offset.x;
p1.y += xx->orig.y + offset.y;
- if (hidden) *hidden = (GetTrkBits( trk ) & TB_HIDEDESC);
+ if (hidden) { *hidden = (GetTrkBits( trk ) & TB_HIDEDESC); }
*dpos = p1;
coOrd tpos = pos;
- if (DistanceCompound(trk,&tpos)<FindDistance( p1, pos ))
+ if (DistanceCompound(trk,&tpos)<FindDistance( p1, pos )) {
return DistanceCompound(trk,&pos);
+ }
return FindDistance( p1, pos );
}
STATUS_T CompoundDescriptionMove(
- track_p trk,
- wAction_t action,
- coOrd pos )
+ track_p trk,
+ wAction_t action,
+ coOrd pos )
{
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
static coOrd p0, p1;
static BOOL_T editMode;
wDrawColor color;
@@ -578,9 +613,9 @@ STATUS_T CompoundDescriptionMove(
*/
EXPORT void SetSegInxEP(
- signed char * segChar,
- int segInx,
- EPINX_T segEP )
+ signed char * segChar,
+ int segInx,
+ EPINX_T segEP )
{
if (segEP == 1) {
* segChar = -(segInx+1);
@@ -591,9 +626,9 @@ EXPORT void SetSegInxEP(
}
EXPORT void GetSegInxEP(
- signed char segChar,
- int * segInx,
- EPINX_T * segEP )
+ signed char segChar,
+ int * segInx,
+ EPINX_T * segEP )
{
int inx;
inx = segChar;
@@ -608,12 +643,14 @@ EXPORT void GetSegInxEP(
DIST_T DistanceCompound(
- track_p t,
- coOrd * p )
+ track_p t,
+ coOrd * p )
{
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(t, T_NOTRACK, extraDataCompound_t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(t, T_NOTRACK,
+ extraDataCompound_t);
EPINX_T ep;
- DIST_T d0, d1;
+ DIST_T d0;
+// DIST_T d1;
coOrd p0, p2;
PATHPTR_T path;
int segInx;
@@ -637,7 +674,7 @@ DIST_T DistanceCompound(
path = GetCurrPath( t );
for ( path += strlen((char *)path)+1; path[0] || path[1]; path++ ) {
if ( path[0] != 0 ) {
- d1 = DIST_INF;
+// d1 = DIST_INF;
GetSegInxEP( *path, &segInx, &segEP );
segProcData.distance.pos1 = p0;
SegProc( SEGPROC_DISTANCE, &xx->segs[segInx], &segProcData );
@@ -659,64 +696,67 @@ DIST_T DistanceCompound(
static struct {
- coOrd endPt[4];
- ANGLE_T endAngle[4];
- DIST_T endRadius[4];
- coOrd endCenter[4];
- FLOAT_T elev[4];
- coOrd orig;
- ANGLE_T angle;
- descPivot_t pivot;
- char manuf[STR_SIZE];
- char name[STR_SIZE];
- char partno[STR_SIZE];
- long epCnt;
- long segCnt;
- long pathCnt;
- FLOAT_T grade;
- DIST_T length;
- drawLineType_e linetype;
- unsigned int layerNumber;
- } compoundData;
+ coOrd endPt[4];
+ ANGLE_T endAngle[4];
+ DIST_T endRadius[4];
+ coOrd endCenter[4];
+ FLOAT_T elev[4];
+ coOrd orig;
+ ANGLE_T angle;
+ descPivot_t pivot;
+ char manuf[STR_SIZE];
+ char name[STR_SIZE];
+ char partno[STR_SIZE];
+ long epCnt;
+ long segCnt;
+ long pathCnt;
+ FLOAT_T grade;
+ DIST_T length;
+ drawLineType_e linetype;
+ unsigned int layerNumber;
+} compoundData;
typedef enum { E0, A0, C0, R0, Z0, E1, A1, C1, R1, Z1, E2, A2, C2, R2, Z2, E3, A3, C3, R3, Z3, GR, OR, AN, PV, MN, NM, PN, LT, SC, LY } compoundDesc_e;
static descData_t compoundDesc[] = {
-/*E0*/ { DESC_POS, N_("End Pt 1: X,Y"), &compoundData.endPt[0] },
-/*A0*/ { DESC_ANGLE, N_("Angle"), &compoundData.endAngle[0] },
-/*C0*/ { DESC_POS, N_("Center X,Y"), &compoundData.endCenter[0] },
-/*R0*/ { DESC_DIM, N_("Radius"), &compoundData.endRadius[0] },
-/*Z0*/ { DESC_DIM, N_("Z1"), &compoundData.elev[0] },
-/*E1*/ { DESC_POS, N_("End Pt 2: X,Y"), &compoundData.endPt[1] },
-/*A1*/ { DESC_ANGLE, N_("Angle"), &compoundData.endAngle[1] },
-/*C1*/ { DESC_POS, N_("Center X,Y"), &compoundData.endCenter[1] },
-/*R1*/ { DESC_DIM, N_("Radius"), &compoundData.endRadius[1] },
-/*Z1*/ { DESC_DIM, N_("Z2"), &compoundData.elev[1] },
-/*E2*/ { DESC_POS, N_("End Pt 3: X,Y"), &compoundData.endPt[2] },
-/*A2*/ { DESC_ANGLE, N_("Angle"), &compoundData.endAngle[2] },
-/*C2*/ { DESC_POS, N_("Center X,Y"), &compoundData.endCenter[2] },
-/*R2*/ { DESC_DIM, N_("Radius"), &compoundData.endRadius[2] },
-/*Z2*/ { DESC_DIM, N_("Z3"), &compoundData.elev[2] },
-/*E3*/ { DESC_POS, N_("End Pt 4: X,Y"), &compoundData.endPt[3] },
-/*A3*/ { DESC_ANGLE, N_("Angle"), &compoundData.endAngle[3] },
-/*C3*/ { DESC_POS, N_("Center X,Y"), &compoundData.endCenter[3] },
-/*R3*/ { DESC_DIM, N_("Radius"), &compoundData.endRadius[3] },
-/*Z3*/ { DESC_DIM, N_("Z4"), &compoundData.elev[3] },
-/*GR*/ { DESC_FLOAT, N_("Grade"), &compoundData.grade },
-/*OR*/ { DESC_POS, N_("Origin: X,Y"), &compoundData.orig },
-/*AN*/ { DESC_ANGLE, N_("Angle"), &compoundData.angle },
-/*PV*/ { DESC_PIVOT, N_("Pivot"), &compoundData.pivot },
-/*MN*/ { DESC_STRING, N_("Manufacturer"), &compoundData.manuf, sizeof(compoundData.manuf)},
-/*NM*/ { DESC_STRING, N_("Name"), &compoundData.name, sizeof(compoundData.name) },
-/*PN*/ { DESC_STRING, N_("Part No"), &compoundData.partno, sizeof(compoundData.partno)},
-/*LT*/ { DESC_LIST, N_("LineType"), &compoundData.linetype },
-/*SC*/ { DESC_LONG, N_("# Segments"), &compoundData.segCnt },
-/*LY*/ { DESC_LAYER, N_("Layer"), &compoundData.layerNumber },
- { DESC_NULL } };
+ /*E0*/ { DESC_POS, N_("End Pt 1: X,Y"), &compoundData.endPt[0] },
+ /*A0*/ { DESC_ANGLE, N_("Angle"), &compoundData.endAngle[0] },
+ /*C0*/ { DESC_POS, N_("Center X,Y"), &compoundData.endCenter[0] },
+ /*R0*/ { DESC_DIM, N_("Radius"), &compoundData.endRadius[0] },
+ /*Z0*/ { DESC_DIM, N_("Z1"), &compoundData.elev[0] },
+ /*E1*/ { DESC_POS, N_("End Pt 2: X,Y"), &compoundData.endPt[1] },
+ /*A1*/ { DESC_ANGLE, N_("Angle"), &compoundData.endAngle[1] },
+ /*C1*/ { DESC_POS, N_("Center X,Y"), &compoundData.endCenter[1] },
+ /*R1*/ { DESC_DIM, N_("Radius"), &compoundData.endRadius[1] },
+ /*Z1*/ { DESC_DIM, N_("Z2"), &compoundData.elev[1] },
+ /*E2*/ { DESC_POS, N_("End Pt 3: X,Y"), &compoundData.endPt[2] },
+ /*A2*/ { DESC_ANGLE, N_("Angle"), &compoundData.endAngle[2] },
+ /*C2*/ { DESC_POS, N_("Center X,Y"), &compoundData.endCenter[2] },
+ /*R2*/ { DESC_DIM, N_("Radius"), &compoundData.endRadius[2] },
+ /*Z2*/ { DESC_DIM, N_("Z3"), &compoundData.elev[2] },
+ /*E3*/ { DESC_POS, N_("End Pt 4: X,Y"), &compoundData.endPt[3] },
+ /*A3*/ { DESC_ANGLE, N_("Angle"), &compoundData.endAngle[3] },
+ /*C3*/ { DESC_POS, N_("Center X,Y"), &compoundData.endCenter[3] },
+ /*R3*/ { DESC_DIM, N_("Radius"), &compoundData.endRadius[3] },
+ /*Z3*/ { DESC_DIM, N_("Z4"), &compoundData.elev[3] },
+ /*GR*/ { DESC_FLOAT, N_("Grade"), &compoundData.grade },
+ /*OR*/ { DESC_POS, N_("Origin: X,Y"), &compoundData.orig },
+ /*AN*/ { DESC_ANGLE, N_("Angle"), &compoundData.angle },
+ /*PV*/ { DESC_PIVOT, N_("Pivot"), &compoundData.pivot },
+ /*MN*/ { DESC_STRING, N_("Manufacturer"), &compoundData.manuf, sizeof(compoundData.manuf)},
+ /*NM*/ { DESC_STRING, N_("Name"), &compoundData.name, sizeof(compoundData.name) },
+ /*PN*/ { DESC_STRING, N_("Part No"), &compoundData.partno, sizeof(compoundData.partno)},
+ /*LT*/ { DESC_LIST, N_("LineType"), &compoundData.linetype },
+ /*SC*/ { DESC_LONG, N_("# Segments"), &compoundData.segCnt },
+ /*LY*/ { DESC_LAYER, N_("Layer"), &compoundData.layerNumber },
+ { DESC_NULL }
+};
#define MAX_DESCRIBE_ENDS 4
-static void UpdateCompound( track_p trk, int inx, descData_p descUpd, BOOL_T needUndoStart )
+static void UpdateCompound( track_p trk, int inx, descData_p descUpd,
+ BOOL_T needUndoStart )
{
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
const char * manufS, * nameS, * partnoS;
char * mP, *nP, *pP;
int mL, nL, pL;
@@ -733,18 +773,19 @@ static void UpdateCompound( track_p trk, int inx, descData_p descUpd, BOOL_T nee
case PN:
titleChanged = FALSE;
ParseCompoundTitle( xtitle(xx), &mP, &mL, &nP, &nL, &pP, &pL );
- if (mP == NULL) mP = "";
- if (nP == NULL) nP = "";
- if (pP == NULL) pP = "";
+ if (mP == NULL) { mP = ""; }
+ if (nP == NULL) { nP = ""; }
+ if (pP == NULL) { pP = ""; }
manufS = wStringGetValue( (wString_p)compoundDesc[MN].control0 );
size_t max_manustr = 256, max_partstr = 256, max_namestr = 256;
- if (compoundDesc[MN].max_string)
+ if (compoundDesc[MN].max_string) {
max_manustr = compoundDesc[MN].max_string-1;
+ }
if (strlen(manufS)>max_manustr) {
NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_manustr-1);
}
message[0] = '\0';
- strncat( message, manufS, max_manustr-1 );
+ strncat( message, manufS, max_manustr-1 );
if ( strncmp( manufS, mP, mL ) != 0 || mL != strlen(manufS) ) {
titleChanged = TRUE;
}
@@ -753,8 +794,9 @@ static void UpdateCompound( track_p trk, int inx, descData_p descUpd, BOOL_T nee
split = xx->split;
nameS = wStringGetValue( (wString_p)compoundDesc[NM].control0 );
max_namestr = 256;
- if (compoundDesc[NM].max_string)
+ if (compoundDesc[NM].max_string) {
max_namestr = compoundDesc[NM].max_string;
+ }
if (strlen(nameS)>max_namestr) {
NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_namestr-1);
}
@@ -777,17 +819,18 @@ static void UpdateCompound( track_p trk, int inx, descData_p descUpd, BOOL_T nee
split = FALSE;
}
if ( strncmp( nameS, nP, nL ) != 0 || nL != strlen(nameS) ||
- xx->flipped != flipped ||
- xx->ungrouped != ungrouped ||
- xx->split != split ) {
+ xx->flipped != flipped ||
+ xx->ungrouped != ungrouped ||
+ xx->split != split ) {
titleChanged = TRUE;
}
strcat( message, "\t" );
strncat( message, nameS, max_namestr-1 );
partnoS = wStringGetValue( (wString_p)compoundDesc[PN].control0 );
max_partstr = 256;
- if (compoundDesc[PN].max_string)
+ if (compoundDesc[PN].max_string) {
max_partstr = compoundDesc[PN].max_string;
+ }
if (strlen(partnoS)>max_partstr) {
NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_partstr-1);
}
@@ -801,22 +844,23 @@ static void UpdateCompound( track_p trk, int inx, descData_p descUpd, BOOL_T nee
MyFree(newTitle);
return;
}
- if ( needUndoStart )
- UndoStart( _("Change Track"), "Change Track" );
+ if ( needUndoStart ) {
+ UndoStart( _("Change Track"), "Change Track" );
+ }
UndoModify( trk );
GetBoundingBox( trk, &hi, &lo );
if ( labelScale >= mainD.scale &&
- !OFF_MAIND( lo, hi ) ) {
+ !OFF_MAIND( lo, hi ) ) {
DrawCompoundDescription( trk, &mainD, wDrawColorWhite );
}
/*sprintf( message, "%s\t%s\t%s", manufS, nameS, partnoS );*/
- if (xx->title) MyFree(xx->title);
+ if (xx->title) { MyFree(xx->title); }
xx->title = newTitle;
xx->flipped = flipped;
xx->ungrouped = ungrouped;
xx->split = split;
if ( labelScale >= mainD.scale &&
- !OFF_MAIND( lo, hi ) ) {
+ !OFF_MAIND( lo, hi ) ) {
DrawCompoundDescription( trk, &mainD, GetTrkColor(trk,&tempD) );
}
return;
@@ -835,29 +879,30 @@ static void UpdateCompound( track_p trk, int inx, descData_p descUpd, BOOL_T nee
case A1:
case A2:
case A3:
- if (inx==A3) ep=3;
- else if (inx==A2) ep=2;
- else if (inx==A1) ep=1;
- else ep=0;
- RotateTrack( trk, GetTrkEndPos(trk,ep), NormalizeAngle( compoundData.endAngle[ep]-GetTrkEndAngle(trk,ep) ) );
+ if (inx==A3) { ep=3; }
+ else if (inx==A2) { ep=2; }
+ else if (inx==A1) { ep=1; }
+ else { ep=0; }
+ RotateTrack( trk, GetTrkEndPos(trk,ep),
+ NormalizeAngle( compoundData.endAngle[ep]-GetTrkEndAngle(trk,ep) ) );
ComputeCompoundBoundingBox( trk );
break;
case AN:
orig = xx->orig;
GetBoundingBox(trk,&hi,&lo);
switch (compoundData.pivot) {
- case DESC_PIVOT_MID:
- orig.x = (hi.x-lo.x)/2+lo.x;
- orig.y = (hi.y-lo.y)/2+lo.y;
- break;
- case DESC_PIVOT_SECOND:
- orig.x = (hi.x-lo.x)/2+lo.x;
- orig.y = (hi.y-lo.y)/2+lo.y;
- orig.x = (orig.x - xx->orig.x)*2+xx->orig.x;
- orig.y = (orig.y - xx->orig.y)*2+xx->orig.y;
- break;
- default:
- break;
+ case DESC_PIVOT_MID:
+ orig.x = (hi.x-lo.x)/2+lo.x;
+ orig.y = (hi.y-lo.y)/2+lo.y;
+ break;
+ case DESC_PIVOT_SECOND:
+ orig.x = (hi.x-lo.x)/2+lo.x;
+ orig.y = (hi.y-lo.y)/2+lo.y;
+ orig.x = (orig.x - xx->orig.x)*2+xx->orig.x;
+ orig.y = (orig.y - xx->orig.y)*2+xx->orig.y;
+ break;
+ default:
+ break;
}
RotateTrack( trk, orig, NormalizeAngle( compoundData.angle-xx->angle ) );
ComputeCompoundBoundingBox( trk );
@@ -866,10 +911,10 @@ static void UpdateCompound( track_p trk, int inx, descData_p descUpd, BOOL_T nee
case E1:
case E2:
case E3:
- if (inx==E3) ep=3;
- else if (inx==E2) ep=2;
- else if (inx==E1) ep=1;
- else ep=0;
+ if (inx==E3) { ep=3; }
+ else if (inx==E2) { ep=2; }
+ else if (inx==E1) { ep=1; }
+ else { ep=0; }
pos = GetTrkEndPos(trk,ep);
pos.x = compoundData.endPt[ep].x - pos.x;
pos.y = compoundData.endPt[ep].y - pos.y;
@@ -881,17 +926,21 @@ static void UpdateCompound( track_p trk, int inx, descData_p descUpd, BOOL_T nee
case Z2:
case Z3:
ep = (inx==Z0?0:(inx==Z1?1:(inx==Z2?2:3)));
- UpdateTrkEndElev( trk, ep, GetTrkEndElevUnmaskedMode(trk,ep), compoundData.elev[ep], NULL );
- if ( GetTrkEndPtCnt(trk) == 1 )
- break;
- for (int i=0;i<compoundData.epCnt;i++) {
- if (i==ep) continue;
+ UpdateTrkEndElev( trk, ep, GetTrkEndElevUnmaskedMode(trk,ep),
+ compoundData.elev[ep], NULL );
+ if ( GetTrkEndPtCnt(trk) == 1 ) {
+ break;
+ }
+ for (int i=0; i<compoundData.epCnt; i++) {
+ if (i==ep) { continue; }
ComputeElev( trk, i, FALSE, &compoundData.elev[i], NULL, TRUE );
}
- if ( compoundData.length > minLength )
- compoundData.grade = fabs( (compoundData.elev[0]-compoundData.elev[1])/compoundData.length )*100.0;
- else
+ if ( compoundData.length > minLength ) {
+ compoundData.grade = fabs( (compoundData.elev[0]
+ -compoundData.elev[1])/compoundData.length )*100.0;
+ } else {
compoundData.grade = 0.0;
+ }
compoundDesc[GR].mode |= DESC_CHANGE;
compoundDesc[Z0+(E1-E0)*inx].mode |= DESC_CHANGE;
break;
@@ -901,18 +950,18 @@ static void UpdateCompound( track_p trk, int inx, descData_p descUpd, BOOL_T nee
default:
break;
}
- switch ( inx ) {
- case A0:
- case A1:
- case A2:
- case A3:
- case E0:
- case E1:
- case E2:
- case E3:
- case AN:
- case OR:
- for (int i=0;(i<compoundData.epCnt)&&(i<MAX_DESCRIBE_ENDS);i++) {
+ switch ( inx ) {
+ case A0:
+ case A1:
+ case A2:
+ case A3:
+ case E0:
+ case E1:
+ case E2:
+ case E3:
+ case AN:
+ case OR:
+ for (int i=0; (i<compoundData.epCnt)&&(i<MAX_DESCRIBE_ENDS); i++) {
compoundData.endPt[i] = GetTrkEndPos(trk,i);
compoundDesc[i*(E1-E0)+E0].mode |= DESC_CHANGE;
trackParams_t params;
@@ -921,20 +970,20 @@ static void UpdateCompound( track_p trk, int inx, descData_p descUpd, BOOL_T nee
GetTrackParams(PARAMS_CORNU,trk,compoundData.endPt[i],&params);
compoundData.endRadius[i] = params.arcR;
if (params.arcR != 0.0) {
- compoundData.endCenter[i] = params.arcP;
- compoundDesc[i*(E1-E0)+C0].mode |= DESC_CHANGE;
+ compoundData.endCenter[i] = params.arcP;
+ compoundDesc[i*(E1-E0)+C0].mode |= DESC_CHANGE;
}
}
compoundData.orig = xx->orig;
compoundDesc[OR].mode |= DESC_CHANGE;
compoundData.angle = xx->angle;
compoundDesc[AN].mode |= DESC_CHANGE;
- break;
- case LT:
- xx->lineType = compoundData.linetype;
- break;
- default:
- break;
+ break;
+ case LT:
+ xx->lineType = compoundData.linetype;
+ break;
+ default:
+ break;
};
DrawNewTrack( trk );
@@ -943,11 +992,12 @@ static void UpdateCompound( track_p trk, int inx, descData_p descUpd, BOOL_T nee
void DescribeCompound(
- track_p trk,
- char * str,
- CSIZE_T len )
+ track_p trk,
+ char * str,
+ CSIZE_T len )
{
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
int fix;
EPINX_T ep, epCnt;
char * mP, *nP, *pP, *cnP;
@@ -955,31 +1005,35 @@ void DescribeCompound(
long mode;
long listLabelsOption = listLabels;
DynString description;
- char *trackType;
+ char *trackType;
- if ( xx->flipped )
+ if ( xx->flipped ) {
listLabelsOption |= LABEL_FLIPPED;
- if ( xx->ungrouped )
+ }
+ if ( xx->ungrouped ) {
listLabelsOption |= LABEL_UNGROUPED;
- if ( xx->split )
+ }
+ if ( xx->split ) {
listLabelsOption |= LABEL_SPLIT;
+ }
FormatCompoundTitle( listLabelsOption, xtitle(xx) );
- if (message[0] == '\0')
+ if (message[0] == '\0') {
FormatCompoundTitle( listLabelsOption|LABEL_DESCR, xtitle(xx) );
+ }
- if (GetTrkEndPtCnt(trk) <= 1) {
+ if (GetTrkEndPtCnt(trk) < 1) {
trackType = _("Structure");
} else {
trackType = GetTrkEndPtCnt(trk) > 2 ? _("Turnout") : _("Sectional Track");
}
DynStringMalloc(&description, len);
DynStringPrintf(&description,
- _("%s (%d) Layer= %d %s"),
- trackType,
- GetTrkIndex(trk),
- GetTrkLayer(trk) + 1,
- message);
-
+ _("%s (%d) Layer= %d %s"),
+ trackType,
+ GetTrkIndex(trk),
+ GetTrkLayer(trk) + 1,
+ message);
+
if (DynStringSize(&description) > (unsigned)len) {
strncpy(str, DynStringToCStr(&description), len - 1);
strcpy(str + len - 4, "...");
@@ -1040,7 +1094,7 @@ void DescribeCompound(
for ( int i=0 ; i<4 ; i++) {
compoundDesc[E0+(E1-E0)*i].mode = DESC_IGNORE;
- compoundDesc[A0+(E1-E0)*i].mode = DESC_IGNORE;
+ compoundDesc[A0+(E1-E0)*i].mode = DESC_IGNORE;
compoundDesc[R0+(E1-E0)*i].mode = DESC_IGNORE;
compoundDesc[C0+(E1-E0)*i].mode = DESC_IGNORE;
compoundDesc[Z0+(E1-E0)*i].mode = DESC_IGNORE;
@@ -1048,16 +1102,16 @@ void DescribeCompound(
compoundDesc[GR].mode = DESC_IGNORE;
compoundDesc[OR].mode =
- compoundDesc[AN].mode = fix?DESC_RO:0;
+ compoundDesc[AN].mode = fix?DESC_RO:0;
compoundDesc[MN].mode =
- compoundDesc[NM].mode =
- compoundDesc[PN].mode = 0 /*DESC_NOREDRAW*/;
+ compoundDesc[NM].mode =
+ compoundDesc[PN].mode = 0 /*DESC_NOREDRAW*/;
compoundDesc[SC].mode = DESC_RO;
compoundDesc[LY].mode = DESC_NOREDRAW;
compoundDesc[PV].mode = 0;
compoundData.pivot = DESC_PIVOT_FIRST;
if (compoundData.epCnt >0) {
- for (int i=0;(i<compoundData.epCnt)&&(i<MAX_DESCRIBE_ENDS);i++) {
+ for (int i=0; (i<compoundData.epCnt)&&(i<MAX_DESCRIBE_ENDS); i++) {
compoundDesc[A0+(E1-E0)*i].mode = (int)mode;
compoundDesc[R0+(E1-E0)*i].mode = DESC_RO;
compoundDesc[C0+(E1-E0)*i].mode = DESC_RO;
@@ -1074,21 +1128,26 @@ void DescribeCompound(
compoundDesc[R0+(E1-E0)*i].mode = DESC_IGNORE;
}
ComputeElev( trk, i, FALSE, &compoundData.elev[i], NULL, FALSE );
- compoundDesc[Z0+(E1-E0)*i].mode = (EndPtIsDefinedElev(trk,i)?0:DESC_RO)|DESC_NOREDRAW;
+ compoundDesc[Z0+(E1-E0)*i].mode = (EndPtIsDefinedElev(trk,
+ i)?0:DESC_RO)|DESC_NOREDRAW;
}
compoundDesc[GR].mode = DESC_RO;
}
- if ( compoundData.epCnt == 2 )
+ if ( compoundData.epCnt == 2 ) {
compoundData.length = GetTrkLength( trk, 0, 1 );
- if ( compoundData.length > minLength && compoundData.epCnt > 1)
- compoundData.grade = fabs( (compoundData.elev[0]-compoundData.elev[1])/compoundData.length )*100.0;
- else
+ }
+ if ( compoundData.length > minLength && compoundData.epCnt > 1) {
+ compoundData.grade = fabs( (compoundData.elev[0]
+ -compoundData.elev[1])/compoundData.length )*100.0;
+ } else {
compoundData.grade = 0.0;
+ }
if (GetTrkEndPtCnt(trk) == 0) {
compoundDesc[LT].mode = 0;
- } else
+ } else {
compoundDesc[LT].mode = DESC_IGNORE;
+ }
DoDescribe(trackType, trk, compoundDesc, UpdateCompound);
@@ -1097,10 +1156,14 @@ void DescribeCompound(
wListAddValue( (wList_p)compoundDesc[LT].control0, _("Solid"), NULL, I2VP(0) );
wListAddValue( (wList_p)compoundDesc[LT].control0, _("Dash"), NULL, I2VP(1) );
wListAddValue( (wList_p)compoundDesc[LT].control0, _("Dot"), NULL, I2VP(2) );
- wListAddValue( (wList_p)compoundDesc[LT].control0, _("DashDot"), NULL, I2VP(3) );
- wListAddValue( (wList_p)compoundDesc[LT].control0, _("DashDotDot"), NULL, I2VP(4) );
- wListAddValue( (wList_p)compoundDesc[LT].control0, _("CenterDot"), NULL, I2VP(5) );
- wListAddValue( (wList_p)compoundDesc[LT].control0, _("PhantomDot"), NULL, I2VP(6) );
+ wListAddValue( (wList_p)compoundDesc[LT].control0, _("DashDot"), NULL,
+ I2VP(3) );
+ wListAddValue( (wList_p)compoundDesc[LT].control0, _("DashDotDot"), NULL,
+ I2VP(4) );
+ wListAddValue( (wList_p)compoundDesc[LT].control0, _("CenterDot"), NULL,
+ I2VP(5) );
+ wListAddValue( (wList_p)compoundDesc[LT].control0, _("PhantomDot"), NULL,
+ I2VP(6) );
wListSetIndex( (wList_p)compoundDesc[LT].control0, compoundData.linetype );
}
@@ -1108,66 +1171,82 @@ void DescribeCompound(
void DeleteCompound(
- track_p t )
+ track_p t )
{
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(t, T_NOTRACK, extraDataCompound_t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(t, T_NOTRACK,
+ extraDataCompound_t);
FreeFilledDraw( xx->segCnt, xx->segs );
- if (xx->segCnt>0) MyFree( xx->segs );
+ if (xx->segCnt>0) { MyFree( xx->segs ); }
xx->segs = NULL;
}
BOOL_T WriteCompound(
- track_p t,
- FILE * f )
+ track_p t,
+ FILE * f )
{
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(t, T_NOTRACK, extraDataCompound_t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(t, T_NOTRACK,
+ extraDataCompound_t);
EPINX_T ep, epCnt;
+ int bits;
long options;
- long position = 0;
+// long position = 0;
drawLineType_e lineType = 0;
BOOL_T rc = TRUE;
options = (long)GetTrkWidth(t);
- if (xx->handlaid)
+ if (xx->handlaid) {
options |= COMPOUND_OPTION_HANDLAID;
- if (xx->flipped)
+ }
+ if (xx->flipped) {
options |= COMPOUND_OPTION_FLIPPED;
- if (xx->ungrouped)
+ }
+ if (xx->ungrouped) {
options |= COMPOUND_OPTION_UNGROUPED;
- if (xx->split)
+ }
+ if (xx->split) {
options |= COMPOUND_OPTION_SPLIT;
- if (xx->pathOverRide)
+ }
+ if (xx->pathOverRide) {
options |= COMPOUND_OPTION_PATH_OVERRIDE;
- if (xx->pathNoCombine)
+ }
+ if (xx->pathNoCombine) {
options |= COMPOUND_OPTION_PATH_NOCOMBINE;
- if ( ( GetTrkBits( t ) & TB_HIDEDESC ) != 0 )
+ }
+ if ( ( GetTrkBits( t ) & TB_HIDEDESC ) != 0 ) {
options |= COMPOUND_OPTION_HIDEDESC;
+ }
epCnt = GetTrkEndPtCnt(t);
lineType = xx->lineType;
+ bits = GetTrkVisible(t)|(GetTrkNoTies(t)?1<<2:0)|(GetTrkBridge(t)?1<<3:0)|
+ (GetTrkRoadbed(t)?1<<4:0);
rc &= fprintf(f, "%s %d %d %ld %ld %d %s %d %0.6f %0.6f 0 %0.6f \"%s\"\n",
- GetTrkTypeName(t),
- GetTrkIndex(t), GetTrkLayer(t), options,
- GetCurrPathIndex(t), lineType,
- GetTrkScaleName(t), GetTrkVisible(t)|(GetTrkNoTies(t)?1<<2:0)|(GetTrkBridge(t)?1<<3:0),
- xx->orig.x, xx->orig.y, xx->angle,
- PutTitle(xtitle(xx)) )>0;
- for (ep=0; ep<epCnt; ep++ )
+ GetTrkTypeName(t),
+ GetTrkIndex(t), GetTrkLayer(t), options,
+ GetCurrPathIndex(t), lineType,
+ GetTrkScaleName(t), bits,
+ xx->orig.x, xx->orig.y, xx->angle,
+ PutTitle(xtitle(xx)) )>0;
+ for (ep=0; ep<epCnt; ep++ ) {
WriteEndPt( f, t, ep );
+ }
switch ( xx->special ) {
case TOadjustable:
rc &= fprintf( f, "\tX %s %0.3f %0.3f\n", ADJUSTABLE,
- xx->u.adjustable.minD, xx->u.adjustable.maxD )>0;
+ xx->u.adjustable.minD, xx->u.adjustable.maxD )>0;
break;
case TOpier:
- rc &= fprintf( f, "\tX %s %0.6f \"%s\"\n", PIER, xx->u.pier.height, xx->u.pier.name )>0;
+ rc &= fprintf( f, "\tX %s %0.6f \"%s\"\n", PIER, xx->u.pier.height,
+ xx->u.pier.name )>0;
break;
default:
;
}
- rc &= fprintf( f, "\tD %0.6f %0.6f\n", xx->descriptionOff.x, xx->descriptionOff.y )>0;
- rc &= WriteCompoundPathsEndPtsSegs( f, GetPaths( t ), xx->segCnt, xx->segs, 0, NULL );
+ rc &= fprintf( f, "\tD %0.6f %0.6f\n", xx->descriptionOff.x,
+ xx->descriptionOff.y )>0;
+ rc &= WriteCompoundPathsEndPtsSegs( f, GetPaths( t ), xx->segCnt, xx->segs, 0,
+ NULL );
return rc;
}
@@ -1180,8 +1259,10 @@ BOOL_T WriteCompound(
*
*/
-EXPORT void SetCompoundLineType( track_p trk, int width ) {
- struct extraDataCompound_t * xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
+EXPORT void SetCompoundLineType( track_p trk, int width )
+{
+ struct extraDataCompound_t * xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
switch(width) {
case 0:
xx->lineType = DRAWLINESOLID;
@@ -1210,16 +1291,16 @@ EXPORT void SetCompoundLineType( track_p trk, int width ) {
EXPORT track_p NewCompound(
- TRKTYP_T trkType,
- TRKINX_T index,
- coOrd pos,
- ANGLE_T angle,
- char * title,
- EPINX_T epCnt,
- trkEndPt_t * epp,
- PATHPTR_T paths,
- wIndex_t segCnt,
- trkSeg_p segs )
+ TRKTYP_T trkType,
+ TRKINX_T index,
+ coOrd pos,
+ ANGLE_T angle,
+ char * title,
+ EPINX_T epCnt,
+ trkEndPt_p epp0,
+ PATHPTR_T paths,
+ wIndex_t segCnt,
+ trkSeg_p segs )
{
track_p trk;
struct extraDataCompound_t * xx;
@@ -1241,21 +1322,22 @@ EXPORT track_p NewCompound(
SetPaths( trk, paths );
xx->segCnt = segCnt;
xx->segs = memdup( segs, segCnt * sizeof *segs );
- trkSeg_p p = xx->segs;
+// trkSeg_p p = xx->segs;
CopyPoly(xx->segs, xx->segCnt);
FixUpBezierSegs(xx->segs,xx->segCnt);
ComputeCompoundBoundingBox( trk );
SetDescriptionOrig( trk );
for ( ep=0; ep<epCnt; ep++ ) {
- SetTrkEndPoint( trk, ep, epp[ep].pos, epp[ep].angle );
+ trkEndPt_p epp = EndPtIndex( epp0, ep );
+ SetTrkEndPoint( trk, ep, GetEndPtPos(epp), GetEndPtAngle(epp) );
}
return trk;
}
BOOL_T ReadCompound(
- char * line,
- TRKTYP_T trkType )
+ char * line,
+ TRKTYP_T trkType )
{
track_p trk;
struct extraDataCompound_t *xx;
@@ -1274,25 +1356,31 @@ BOOL_T ReadCompound(
if (paramVersion<3) {
if ( !GetArgs( line, "dXsdpfq",
- &index, &layer, scale, &visible, &orig, &angle, &title ) )
+ &index, &layer, scale, &visible, &orig, &angle, &title ) ) {
return FALSE;
+ }
} else if (paramVersion <= 5 && trkType == T_STRUCTURE) {
if ( !GetArgs( line, "dL00sdpfq",
- &index, &layer, scale, &visible, &orig, &angle, &title ) )
+ &index, &layer, scale, &visible, &orig, &angle, &title ) ) {
return FALSE;
+ }
} else {
if ( !GetArgs( line, paramVersion<9?"dLlldsdpYfq":"dLlldsdpffq",
- &index, &layer, &options, &position, &lineType, scale, &visible, &orig, &elev, &angle, &title ) )
+ &index, &layer, &options, &position, &lineType, scale, &visible, &orig, &elev,
+ &angle, &title ) ) {
return FALSE;
+ }
}
- if (paramVersion >=3 && paramVersion <= 5 && trkType == T_STRUCTURE)
+ if (paramVersion >=3 && paramVersion <= 5 && trkType == T_STRUCTURE) {
strcpy( scale, curScaleName );
- DYNARR_RESET( trkEndPt_t, tempEndPts_da );
+ }
+ TempEndPtsReset();
pathCnt = 0;
- if ( !ReadSegs() )
+ if ( !ReadSegs() ) {
return FALSE;
+ }
if ( trkType == T_TURNOUT ) {
- if ( tempEndPts_da.cnt <= 0 ) {
+ if ( TempEndPtsCount() <= 0 ) {
InputError( "Turnout defn without EndPoints", TRUE );
return FALSE;
}
@@ -1311,17 +1399,19 @@ BOOL_T ReadCompound(
}
}
trk = NewCompound( trkType, index, orig, angle, title, 0, NULL,
- pathCnt > 1 ? pathPtr : NULL,
- tempSegs_da.cnt, &tempSegs(0) );
+ pathCnt > 1 ? pathPtr : NULL,
+ tempSegs_da.cnt, &tempSegs(0) );
SetEndPts( trk, 0 );
if ( paramVersion < 3 ) {
SetTrkVisible(trk, visible!=0);
SetTrkNoTies(trk, FALSE);
SetTrkBridge(trk, FALSE);
+ SetTrkRoadbed(trk, FALSE);
} else {
SetTrkVisible(trk, visible&2);
SetTrkNoTies(trk, visible&4);
SetTrkBridge(trk, visible&8);
+ SetTrkRoadbed(trk, visible&16);
}
SetTrkScale(trk, LookupScale( scale ));
SetTrkLayer(trk, layer);
@@ -1335,21 +1425,24 @@ BOOL_T ReadCompound(
xx->pathNoCombine = (int)((options&COMPOUND_OPTION_PATH_NOCOMBINE)!=0);
xx->lineType = lineType;
xx->descriptionOff = descriptionOff;
- if ( ( options & COMPOUND_OPTION_HIDEDESC ) != 0 )
+ if ( ( options & COMPOUND_OPTION_HIDEDESC ) != 0 ) {
SetTrkBits( trk, TB_HIDEDESC );
+ }
if (tempSpecial[0] != '\0') {
if (strncmp( tempSpecial, ADJUSTABLE, strlen(ADJUSTABLE) ) == 0) {
xx->special = TOadjustable;
if ( !GetArgs( tempSpecial+strlen(ADJUSTABLE), "ff",
- &xx->u.adjustable.minD, &xx->u.adjustable.maxD ) )
+ &xx->u.adjustable.minD, &xx->u.adjustable.maxD ) ) {
return FALSE;
+ }
} else if (strncmp( tempSpecial, PIER, strlen(PIER) ) == 0) {
xx->special = TOpier;
if ( !GetArgs( tempSpecial+strlen(PIER), "fq",
- &xx->u.pier.height, &xx->u.pier.name ) )
+ &xx->u.pier.height, &xx->u.pier.name ) ) {
return FALSE;
+ }
} else {
InputError("Unknown special case", TRUE);
@@ -1361,10 +1454,11 @@ BOOL_T ReadCompound(
}
void MoveCompound(
- track_p trk,
- coOrd orig )
+ track_p trk,
+ coOrd orig )
{
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
xx->orig.x += orig.x;
xx->orig.y += orig.y;
ComputeCompoundBoundingBox( trk );
@@ -1372,11 +1466,12 @@ void MoveCompound(
void RotateCompound(
- track_p trk,
- coOrd orig,
- ANGLE_T angle )
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle )
{
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
Rotate( &xx->orig, orig, angle );
xx->angle = NormalizeAngle( xx->angle + angle );
Rotate( &xx->descriptionOff, zero, angle );
@@ -1385,10 +1480,11 @@ void RotateCompound(
void RescaleCompound(
- track_p trk,
- FLOAT_T ratio )
+ track_p trk,
+ FLOAT_T ratio )
{
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
xx->orig.x *= ratio;
xx->orig.y *= ratio;
xx->descriptionOff.x *= ratio;
@@ -1400,11 +1496,12 @@ void RescaleCompound(
void FlipCompound(
- track_p trk,
- coOrd orig,
- ANGLE_T angle )
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle )
{
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
EPINX_T ep, epCnt;
char * mP, *nP, *pP;
int mL, nL, pL;
@@ -1424,16 +1521,18 @@ void FlipCompound(
xx->descriptionOrig.y = - xx->descriptionOrig.y;
ComputeCompoundBoundingBox( trk );
epCnt = GetTrkEndPtCnt( trk );
- if ( epCnt >= 1 && epCnt <= 2 )
+ if ( epCnt >= 1 && epCnt <= 2 ) {
return;
+ }
ParseCompoundTitle( xtitle(xx), &mP, &mL, &nP, &nL, &pP, &pL );
- to = FindCompound( epCnt==0?FIND_STRUCT:FIND_TURNOUT, GetScaleName(GetTrkScale(trk)), xx->title );
+ to = FindCompound( epCnt==0?FIND_STRUCT:FIND_TURNOUT,
+ GetScaleName(GetTrkScale(trk)), xx->title );
if ( epCnt!=0 && to && to->customInfo ) {
if ( GetArgs( to->customInfo, "qc", &type, &cp ) ) {
if ( strcmp( type, "Regular Turnout" ) == 0 ||
- strcmp( type, "Curved Turnout" ) == 0 ) {
+ strcmp( type, "Curved Turnout" ) == 0 ) {
if ( GetArgs( cp, "qqqqq", &mfg, &descL, &partL, &descR, &partR ) &&
- mP && strcmp( mP, mfg ) == 0 && nP && pP ) {
+ mP && strcmp( mP, mfg ) == 0 && nP && pP ) {
if ( strcmp( nP, descL ) == 0 && strcmp( pP, partL ) == 0 ) {
sprintf( message, "%s\t%s\t%s", mfg, descR, partR );
xx->title = MyStrdup( message );
@@ -1445,7 +1544,7 @@ void FlipCompound(
return;
}
}
- }
+ }
}
}
if ( epCnt == 3 || epCnt == 4 ) {
@@ -1459,54 +1558,66 @@ void FlipCompound(
if ( epCnt == 3 ) {
/* Wye? */
if ( fabs(endPos[1].x-endPos[2].x) < SMALLVALUE &&
- fabs(endPos[1].y+endPos[2].y) < SMALLVALUE )
+ fabs(endPos[1].y+endPos[2].y) < SMALLVALUE ) {
return;
+ }
} else {
/* Crossing */
- if ( fabs( (endPos[1].x-endPos[3].x) - (endPos[2].x-endPos[0].x ) ) < SMALLVALUE &&
- fabs( (endPos[2].y+endPos[3].y) ) < SMALLVALUE &&
- fabs( (endPos[0].y-endPos[1].y) ) < SMALLVALUE &&
- NormalizeAngle( (endAngle[2]-endAngle[3]-180+0.05) ) < 0.10 )
+ if ( fabs( (endPos[1].x-endPos[3].x) - (endPos[2].x-endPos[0].x ) ) < SMALLVALUE
+ &&
+ fabs( (endPos[2].y+endPos[3].y) ) < SMALLVALUE &&
+ fabs( (endPos[0].y-endPos[1].y) ) < SMALLVALUE &&
+ NormalizeAngle( (endAngle[2]-endAngle[3]-180+0.05) ) < 0.10 ) {
return;
+ }
/* 3 way */
if ( fabs( (endPos[1].x-endPos[2].x) ) < SMALLVALUE &&
- fabs( (endPos[1].y+endPos[2].y) ) < SMALLVALUE &&
- fabs( (endPos[0].y-endPos[3].y) ) < SMALLVALUE &&
- NormalizeAngle( (endAngle[1]+endAngle[2]-180+0.05) ) < 0.10 )
+ fabs( (endPos[1].y+endPos[2].y) ) < SMALLVALUE &&
+ fabs( (endPos[0].y-endPos[3].y) ) < SMALLVALUE &&
+ NormalizeAngle( (endAngle[1]+endAngle[2]-180+0.05) ) < 0.10 ) {
return;
+ }
}
toBest = NULL;
d0 = 0.0;
for (inx=0; inx<turnoutInfo_da.cnt; inx++) {
to = turnoutInfo(inx);
if ( IsParamValid(to->paramFileIndex) &&
- to->segCnt > 0 &&
- to->scaleInx == GetTrkScale(trk) &&
- to->segCnt != 0 &&
- to->endCnt == epCnt ) {
+ to->segCnt > 0 &&
+ to->scaleInx == GetTrkScale(trk) &&
+ to->segCnt != 0 &&
+ to->endCnt == epCnt ) {
d1 = 0;
a1 = 0;
for ( ep=0; ep<epCnt; ep++ ) {
- d2 = FindDistance( endPos[ep], to->endPt[ep].pos );
- if ( d2 > SMALLVALUE )
+ trkEndPt_p epp = EndPtIndex( to->endPt, ep );
+ d2 = FindDistance( endPos[ep], GetEndPtPos(epp) );
+ if ( d2 > SMALLVALUE ) {
break;
- if ( d2 > d1 )
+ }
+ if ( d2 > d1 ) {
d1 = d2;
- a2 = NormalizeAngle( endAngle[ep] - to->endPt[ep].angle + 0.05 );
- if ( a2 > 0.1 )
+ }
+ a2 = NormalizeAngle( endAngle[ep] - GetEndPtAngle(epp) + 0.05 );
+ if ( a2 > 0.1 ) {
break;
- if ( a2 > a1 )
+ }
+ if ( a2 > a1 ) {
a1 = a2;
+ }
}
- if ( ep<epCnt )
+ if ( ep<epCnt ) {
continue;
- if ( toBest == NULL || d1 < d0 )
+ }
+ if ( toBest == NULL || d1 < d0 ) {
toBest = to;
+ }
}
}
if ( toBest ) {
- if ( strcmp( xx->title, toBest->title ) != 0 )
+ if ( strcmp( xx->title, toBest->title ) != 0 ) {
xx->title = MyStrdup( toBest->title );
+ }
return;
}
}
@@ -1515,12 +1626,12 @@ void FlipCompound(
typedef struct {
- long count;
- char * type;
- char * name;
- FLOAT_T price;
- DynString indexes;
- } enumCompound_t;
+ long count;
+ char * type;
+ char * name;
+ FLOAT_T price;
+ DynString indexes;
+} enumCompound_t;
static dynArr_t enumCompound_da;
#define EnumCompound(N) DYNARR_N( enumCompound_t,enumCompound_da,N)
@@ -1534,17 +1645,21 @@ BOOL_T EnumerateCompound( track_p trk )
if ( trk != NULL ) {
xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
- if ( xx->flipped )
+ if ( xx->flipped ) {
listLabelsOption |= LABEL_FLIPPED;
+ }
#ifdef LATER
- if ( xx->ungrouped )
+ if ( xx->ungrouped ) {
listLabelsOption |= LABEL_UNGROUPED;
- if ( xx->split )
+ }
+ if ( xx->split ) {
listLabelsOption |= LABEL_SPLIT;
+ }
#endif
FormatCompoundTitle( listLabelsOption, xtitle(xx) );
- if (message[0] == '\0')
- return FALSE; //No content
+ if (message[0] == '\0') {
+ return FALSE; //No content
+ }
for (inx = 0; inx < enumCompound_da.cnt; inx++ ) {
cmp = strcmp( EnumCompound(inx).name, message );
if ( cmp == 0 ) {
@@ -1558,11 +1673,13 @@ BOOL_T EnumerateCompound( track_p trk )
}
}
DYNARR_APPEND( enumCompound_t, enumCompound_da, 10 );
- for ( inx2 = enumCompound_da.cnt-1; inx2 > inx; inx2-- )
+ for ( inx2 = enumCompound_da.cnt-1; inx2 > inx; inx2-- ) {
EnumCompound(inx2) = EnumCompound(inx2-1);
+ }
EnumCompound(inx).name = MyStrdup( message );
- if (strlen(message) > (size_t)enumerateMaxDescLen)
+ if (strlen(message) > (size_t)enumerateMaxDescLen) {
enumerateMaxDescLen = (int)strlen(message);
+ }
EnumCompound(inx).type = GetTrkTypeName( trk );
EnumCompound(inx).count = 1;
DynStringMalloc(&(EnumCompound(inx).indexes),100);
@@ -1575,9 +1692,10 @@ BOOL_T EnumerateCompound( track_p trk )
for (inx = 0; inx < enumCompound_da.cnt; inx++ ) {
if (EnumCompound(inx).type[0] == *type) {
EnumerateList( EnumCompound(inx).count,
- EnumCompound(inx).price,
- EnumCompound(inx).name,
- DynStringSize(&(EnumCompound(inx).indexes))?DynStringToCStr(&(EnumCompound(inx).indexes)):NULL);
+ EnumCompound(inx).price,
+ EnumCompound(inx).name,
+ DynStringSize(&(EnumCompound(inx).indexes))?DynStringToCStr(&(EnumCompound(
+ inx).indexes)):NULL);
}
DynStringFree(&(EnumCompound(inx).indexes));
}
diff --git a/app/bin/compound.h b/app/bin/compound.h
index edcbb66..0a4a0ae 100644
--- a/app/bin/compound.h
+++ b/app/bin/compound.h
@@ -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
*/
#ifndef COMPOUND_H
@@ -29,77 +29,72 @@
typedef enum { TOnormal, TOadjustable, TOpierInfo, TOpier, TOcarDesc, TOlast } TOspecial_e;
typedef struct {
- char * name;
- FLOAT_T height;
- } pierInfo_t;
+ 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_p endPt;
- PATHPTR_T paths;
- int paramFileIndex;
- char * customInfo;
- DIST_T barScale;
- TOspecial_e special;
- turnoutInfo_u u;
- wBool_t pathOverRide;
- wBool_t pathNoCombine;
- char * contentsLabel;
- } turnoutInfo_t;
+ 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_p endPt;
+ PATHPTR_T paths;
+ int paramFileIndex;
+ char * customInfo;
+ DIST_T barScale;
+ TOspecial_e special;
+ turnoutInfo_u u;
+ wBool_t pathOverRide;
+ wBool_t pathNoCombine;
+ char * contentsLabel;
+} turnoutInfo_t;
#define xtitle(X) \
(X->title)
typedef struct extraDataCompound_t {
- extraDataBase_t base;
- coOrd orig;
- ANGLE_T angle;
- BOOL_T handlaid;
- BOOL_T flipped;
- BOOL_T ungrouped;
- BOOL_T split;
- BOOL_T pathOverRide;
- BOOL_T pathNoCombine;
- coOrd descriptionOrig;
- coOrd descriptionOff;
- coOrd descriptionSize;
- char * title;
- char * customInfo;
- TOspecial_e special;
- turnoutInfo_u u;
- PATHPTR_T paths;
- PATHPTR_T currPath;
- long currPathIndex;
- wIndex_t segCnt;
- trkSeg_p segs;
- drawLineType_e lineType;
- } extraDataCompound_t;
-
-extern TRKTYP_T T_TURNOUT;
-extern TRKTYP_T T_STRUCTURE;
-extern TRKTYP_T T_BEZIER;
-extern TRKTYP_T T_BZRLIN;
-extern TRKTYP_T T_CORNU;
+ extraDataBase_t base;
+ coOrd orig;
+ ANGLE_T angle;
+ BOOL_T handlaid;
+ BOOL_T flipped;
+ BOOL_T ungrouped;
+ BOOL_T split;
+ BOOL_T pathOverRide;
+ BOOL_T pathNoCombine;
+ coOrd descriptionOrig;
+ coOrd descriptionOff;
+ coOrd descriptionSize;
+ char * title;
+ char * customInfo;
+ TOspecial_e special;
+ turnoutInfo_u u;
+ PATHPTR_T paths;
+ PATHPTR_T currPath;
+ long currPathIndex;
+ wIndex_t segCnt;
+ trkSeg_p segs;
+ drawLineType_e lineType;
+} extraDataCompound_t;
+
extern DIST_T curBarScale;
extern dynArr_t turnoutInfo_da;
extern dynArr_t structureInfo_da;
@@ -135,9 +130,11 @@ void SetParamPaths( turnoutInfo_t * to, PATHPTR_T paths );
#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_p);
-void ParseCompoundTitle( char *, char **, int *, char **, int *, char **, int * );
+void FormatCompoundTitle( long, char *);
+BOOL_T WriteCompoundPathsEndPtsSegs( FILE *, PATHPTR_T, wIndex_t, trkSeg_p,
+ EPINX_T, trkEndPt_p);
+void ParseCompoundTitle( char *, char **, int *, char **, int *, char **,
+ int * );
void FormatCompoundTitle( long, char *);
void ComputeCompoundBoundingBox( track_p);
turnoutInfo_t * FindCompound( long, char *, char * );
@@ -149,7 +146,8 @@ 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_p, PATHPTR_T, wIndex_t, trkSeg_p );
+track_p NewCompound( TRKTYP_T, TRKINX_T, coOrd, ANGLE_T, char *, EPINX_T,
+ trkEndPt_p, PATHPTR_T, wIndex_t, trkSeg_p );
BOOL_T WriteCompound( track_p, FILE * );
BOOL_T ReadCompound( char *, TRKTYP_T );
void MoveCompound( track_p, coOrd );
@@ -172,35 +170,38 @@ wIndex_t FindListItemByContext( wList_p, void *);
/* cturnout.c */
+extern long curTurnoutEp;
EPINX_T TurnoutPickEndPt( coOrd p, track_p );
-BOOL_T SplitTurnoutCheck(track_p,coOrd,EPINX_T ep,track_p *,EPINX_T *,EPINX_T *,BOOL_T check, coOrd *, ANGLE_T *);
+BOOL_T SplitTurnoutCheck(track_p,coOrd,EPINX_T ep,track_p *,EPINX_T *,EPINX_T *,
+ BOOL_T check, coOrd *, ANGLE_T *);
void GetSegInxEP( signed char, int *, EPINX_T * );
void SetSegInxEP( signed char *, int, EPINX_T) ;
-wIndex_t CheckPaths( wIndex_t, trkSeg_p, PATHPTR_T );
-turnoutInfo_t * CreateNewTurnout( char *, char *, wIndex_t, trkSeg_p, PATHPTR_T, EPINX_T, trkEndPt_p, wBool_t, long );
+wIndex_t CheckPaths( wIndex_t, trkSeg_p, PATHPTR_T, char* );
+turnoutInfo_t * CreateNewTurnout( char *, char *, wIndex_t, trkSeg_p, PATHPTR_T,
+ EPINX_T, trkEndPt_p, wBool_t, long );
void DeleteTurnoutParams(int fileInx);
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 );
+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 );
-enum paramFileState GetTrackCompatibility(int paramFileIndex, SCALEINX_T scaleIndex);
+enum paramFileState GetTrackCompatibility(int paramFileIndex,
+ SCALEINX_T scaleIndex);
/* 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 );
-enum paramFileState GetStructureCompatibility(int paramFileIndex, SCALEINX_T scaleIndex);
-turnoutInfo_t * StructAdd( long, SCALEINX_T, wList_p, coOrd * );
+turnoutInfo_t * CreateNewStructure( char *, char *, wIndex_t, trkSeg_p,
+ BOOL_T );
+enum paramFileState GetStructureCompatibility(int paramFileIndex,
+ SCALEINX_T scaleIndex);
+turnoutInfo_t * StructAdd( long, SCALEINX_T, wList_p, coOrd * );
STATUS_T CmdStructureAction( wAction_t, coOrd );
BOOL_T StructLoadCarDescList( wList_p );
void DeleteStructures(int fileIndex);
-/* cstrdsgn.c */
-void EditCustomStructure( turnoutInfo_t * );
-
-STATUS_T CmdCarDescAction( wAction_t, coOrd );
-BOOL_T CarCustomSave( FILE * );
#endif
diff --git a/app/bin/cparalle.c b/app/bin/cparalle.c
index 6825aea..533b9d5 100644
--- a/app/bin/cparalle.c
+++ b/app/bin/cparalle.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 "ccurve.h"
@@ -30,10 +30,10 @@
#include "common-ui.h"
static struct {
- track_p Trk;
- coOrd orig;
- track_p anchor_Trk;
- } Dpa;
+ track_p Trk;
+ coOrd orig;
+ track_p anchor_Trk;
+} Dpa;
static DIST_T parSeparation = 1.0;
static double parSepFactor = 0.0;
@@ -57,146 +57,150 @@ static paramGroup_t parSepPG = { "parallel", 0, parSepPLs, COUNT( parSepPLs ) };
static STATUS_T CmdParallel(wAction_t action, coOrd pos)
{
- DIST_T d;
- track_p t=NULL;
- coOrd p;
- static coOrd p0, p1;
- ANGLE_T a;
- track_p t0, t1;
- EPINX_T ep0=-1, ep1=-1;
- wControl_p controls[4];
- char * labels[3];
- static DIST_T parRFactor;
+ DIST_T d;
+ track_p t=NULL;
+ coOrd p;
+ static coOrd p0, p1;
+ ANGLE_T a;
+ track_p t0, t1;
+ EPINX_T ep0=-1, ep1=-1;
+ wControl_p controls[4];
+ char * labels[3];
+ static DIST_T parRFactor;
- parType = VP2L(commandContext);
+ parType = VP2L(commandContext);
- switch (action&0xFF) {
+ switch (action&0xFF) {
- case C_START:
- if (parSepPLs[0].control==NULL) {
- ParamCreateControls(&parSepPG, NULL);
- }
- if (parType == PAR_TRACK) {
- sprintf(message, "parallel-separation-%s", curScaleName);
- parSeparation = ceil(13.0*12.0/curScaleRatio);
- } else {
- sprintf(message, "parallel-line-separation-%s", curScaleName);
- parSeparation = 5.0*12.0/curScaleRatio;
- }
- wPrefGetFloat("misc", message, &parSeparation, parSeparation);
- ParamLoadControls(&parSepPG);
- ParamGroupRecord(&parSepPG);
- parSepPD.option |= PDO_NORECORD;
+ case C_START:
+ if (parSepPLs[0].control==NULL) {
+ ParamCreateControls(&parSepPG, NULL);
+ }
+ if (parType == PAR_TRACK) {
+ sprintf(message, "parallel-separation-%s", curScaleName);
+ parSeparation = ceil(13.0*12.0/curScaleRatio);
+ } else {
+ sprintf(message, "parallel-line-separation-%s", curScaleName);
+ parSeparation = 5.0*12.0/curScaleRatio;
+ }
+ wPrefGetFloat("misc", message, &parSeparation, parSeparation);
+ ParamLoadControls(&parSepPG);
+ ParamGroupRecord(&parSepPG);
+ parSepPD.option |= PDO_NORECORD;
parFactorPD.option |= PDO_NORECORD;
- controls[0] = parSepPD.control;
- if (parType == PAR_TRACK)
- controls[1] = parFactorPD.control;
- else
- controls[1] = NULL;
- controls[2] = NULL;
- labels[0] = N_("Separation");
- labels[1] = N_("Radius Factor");
- InfoSubstituteControls(controls, labels);
- parSepPD.option &= ~PDO_NORECORD;
- parFactorPD.option &= ~PDO_NORECORD;
- Dpa.anchor_Trk = NULL;
- tempSegs_da.cnt = 0;
- SetAllTrackSelect( FALSE );
- return C_CONTINUE;
+ controls[0] = parSepPD.control;
+ if (parType == PAR_TRACK) {
+ controls[1] = parFactorPD.control;
+ } else {
+ controls[1] = NULL;
+ }
+ controls[2] = NULL;
+ labels[0] = N_("Separation");
+ labels[1] = N_("Radius Factor");
+ InfoSubstituteControls(controls, labels);
+ parSepPD.option &= ~PDO_NORECORD;
+ parFactorPD.option &= ~PDO_NORECORD;
+ Dpa.anchor_Trk = NULL;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ SetAllTrackSelect( FALSE );
+ return C_CONTINUE;
- case wActionMove:
- tempSegs_da.cnt = 0;
- Dpa.anchor_Trk = NULL;
- if (parType == PAR_TRACK)
- Dpa.anchor_Trk = OnTrack(&pos, FALSE, TRUE);
- else
- Dpa.anchor_Trk = OnTrack(&pos, FALSE, FALSE);
+ case wActionMove:
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ Dpa.anchor_Trk = NULL;
+ if (parType == PAR_TRACK) {
+ Dpa.anchor_Trk = OnTrack(&pos, FALSE, TRUE);
+ } else {
+ Dpa.anchor_Trk = OnTrack(&pos, FALSE, FALSE);
+ }
- if (!Dpa.anchor_Trk) {
- return C_CONTINUE;
- }
- if (Dpa.anchor_Trk && !CheckTrackLayerSilent(Dpa.anchor_Trk)) {
- Dpa.anchor_Trk = NULL;
- return C_CONTINUE;
- }
- if (!QueryTrack(Dpa.anchor_Trk, Q_CAN_PARALLEL)) {
- Dpa.anchor_Trk = NULL;
- return C_CONTINUE;
- }
- break;
- case C_DOWN:
- Dpa.anchor_Trk = NULL;
- tempSegs_da.cnt = 0;
- if (parSeparation < 0.0) {
- ErrorMessage(MSG_PARALLEL_SEP_GTR_0);
- return C_ERROR;
- }
+ if (!Dpa.anchor_Trk) {
+ return C_CONTINUE;
+ }
+ if (Dpa.anchor_Trk && !CheckTrackLayerSilent(Dpa.anchor_Trk)) {
+ Dpa.anchor_Trk = NULL;
+ return C_CONTINUE;
+ }
+ if (!QueryTrack(Dpa.anchor_Trk, Q_CAN_PARALLEL)) {
+ Dpa.anchor_Trk = NULL;
+ return C_CONTINUE;
+ }
+ break;
+ case C_DOWN:
+ Dpa.anchor_Trk = NULL;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ if (parSeparation < 0.0) {
+ ErrorMessage(MSG_PARALLEL_SEP_GTR_0);
+ return C_ERROR;
+ }
- controls[0] = parSepPD.control;
- controls[1] = parFactorPD.control;
- controls[2] = NULL;
- labels[0] = N_("Separation");
- labels[1] = N_("Radius factor");
- InfoSubstituteControls(controls, labels);
- ParamLoadData(&parSepPG);
- Dpa.orig = pos;
- if (parType == PAR_TRACK)
+ controls[0] = parSepPD.control;
+ controls[1] = parFactorPD.control;
+ controls[2] = NULL;
+ labels[0] = N_("Separation");
+ labels[1] = N_("Radius factor");
+ InfoSubstituteControls(controls, labels);
+ ParamLoadData(&parSepPG);
+ Dpa.orig = pos;
+ if (parType == PAR_TRACK) {
Dpa.Trk = OnTrack(&pos, FALSE, TRUE);
- else
- Dpa.Trk = OnTrack(&pos, FALSE, FALSE); //Also lines for line
- if (!Dpa.Trk) {
- return C_CONTINUE;
- }
- if (!QueryTrack(Dpa.Trk, Q_CAN_PARALLEL)) {
- Dpa.Trk = NULL;
- InfoMessage(_(" Track/Line doesn't support parallel"));
- wBeep();
- return C_CONTINUE;
- }
+ } else {
+ Dpa.Trk = OnTrack(&pos, FALSE, FALSE); //Also lines for line
+ }
+ if (!Dpa.Trk) {
+ return C_CONTINUE;
+ }
+ if (!QueryTrack(Dpa.Trk, Q_CAN_PARALLEL)) {
+ Dpa.Trk = NULL;
+ InfoMessage(_(" Track/Line doesn't support parallel"));
+ wBeep();
+ return C_CONTINUE;
+ }
- parRFactor = (2864.0*(double)parSepFactor)/curScaleRatio;
+ parRFactor = (2864.0*(double)parSepFactor)/curScaleRatio;
- if ((parType == PAR_TRACK) && (parSeparation == 0.0)) {
- DIST_T orig_gauge = GetTrkGauge(Dpa.Trk);
- DIST_T new_gauge = GetScaleTrackGauge(GetLayoutCurScale());
- if (orig_gauge == new_gauge) {
- ErrorMessage(MSG_PARALLEL_SEP_GTR_0);
- return C_ERROR;
- }
- parSeparation = fabs(orig_gauge/2-new_gauge/2);
- parRFactor = 0.0;
- } else if (parType != PAR_TRACK)
- parRFactor = 0.0;
- /* in case query has changed things (eg joint) */
- /*
- * this seems to cause problems so I commented it out
- * until further investigation shows the necessity
- */
- //Dpa.Trk = OnTrack( &Dpa.orig, TRUE, TRUE );
- tempSegs_da.cnt = 0;
- /* no break */
+ if ((parType == PAR_TRACK) && (parSeparation == 0.0)) {
+ DIST_T orig_gauge = GetTrkGauge(Dpa.Trk);
+ DIST_T new_gauge = GetScaleTrackGauge(GetLayoutCurScale());
+ if (orig_gauge == new_gauge) {
+ ErrorMessage(MSG_PARALLEL_SEP_GTR_0);
+ return C_ERROR;
+ }
+ parSeparation = fabs(orig_gauge/2-new_gauge/2);
+ parRFactor = 0.0;
+ } else if (parType != PAR_TRACK) {
+ parRFactor = 0.0;
+ }
+ /* in case query has changed things (eg joint) */
+ /*
+ * this seems to cause problems so I commented it out
+ * until further investigation shows the necessity
+ */
+ //Dpa.Trk = OnTrack( &Dpa.orig, TRUE, TRUE );
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ /* no break */
- case C_MOVE:
- if (Dpa.Trk == NULL) {
- return C_CONTINUE;
- }
- tempSegs_da.cnt = 0;
- if (!MakeParallelTrack(Dpa.Trk, pos, parSeparation, parRFactor, NULL, &p0, &p1,
- parType == PAR_TRACK)) {
- Dpa.Trk = NULL;
- return C_CONTINUE;
- }
- return C_CONTINUE;
+ case C_MOVE:
+ if (Dpa.Trk == NULL) {
+ return C_CONTINUE;
+ }
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ if (!MakeParallelTrack(Dpa.Trk, pos, parSeparation, parRFactor, NULL, &p0, &p1,
+ parType == PAR_TRACK)) {
+ Dpa.Trk = NULL;
+ return C_CONTINUE;
+ }
+ return C_CONTINUE;
- case C_UP:
- Dpa.anchor_Trk = NULL;
- if (Dpa.Trk == NULL) {
- return C_CONTINUE;
- }
- t0=t1=NULL;
- if (parType == PAR_TRACK) {
+ case C_UP:
+ Dpa.anchor_Trk = NULL;
+ if (Dpa.Trk == NULL) {
+ return C_CONTINUE;
+ }
+ t0=t1=NULL;
+ if (parType == PAR_TRACK) {
p = p0;
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
if ((t0=OnTrack(&p, FALSE, TRUE)) != NULL) {
ep0 = PickEndPoint(p, t0);
if (ep0 < 0 || GetTrkEndTrk(t0,ep0) != NULL) {
@@ -222,23 +226,23 @@ static STATUS_T CmdParallel(wAction_t action, coOrd pos)
}
}
}
- }
- UndoStart(_("Create Parallel Track"), "newParallel");
- if (!MakeParallelTrack(Dpa.Trk, pos, parSeparation, parRFactor, &t, NULL, NULL,
- parType == PAR_TRACK)) {
- tempSegs_da.cnt = 0;
- return C_TERMINATE;
- }
- if (parType == PAR_TRACK) {
- if (GetTrkGauge(Dpa.Trk)> parSeparation) {
- SetTrkNoTies(t, TRUE);
- }
- //CopyAttributes( Dpa.Trk, t ); Don't force scale or track width or Layer
- SetTrkBits(t,(GetTrkBits(t)&TB_HIDEDESC) | (GetTrkBits(Dpa.Trk)&~TB_HIDEDESC));
+ }
+ UndoStart(_("Create Parallel Track"), "newParallel");
+ if (!MakeParallelTrack(Dpa.Trk, pos, parSeparation, parRFactor, &t, NULL, NULL,
+ parType == PAR_TRACK)) {
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ return C_TERMINATE;
+ }
+ if (parType == PAR_TRACK) {
+ if (GetTrkGauge(Dpa.Trk)> parSeparation) {
+ SetTrkNoTies(t, TRUE);
+ }
+ //CopyAttributes( Dpa.Trk, t ); Don't force scale or track width or Layer
+ SetTrkBits(t,(GetTrkBits(t)&TB_HIDEDESC) | (GetTrkBits(Dpa.Trk)&~TB_HIDEDESC));
if (t0) {
a = NormalizeAngle(GetTrkEndAngle(t0, ep0) - GetTrkEndAngle(t,
- 0) + (180.0+connectAngle/2.0));
+ 0) + (180.0+connectAngle/2.0));
if (a < connectAngle) {
DrawEndPt(&mainD, t0, ep0, wDrawColorWhite);
ConnectTracks(t0, ep0, t, 0);
@@ -247,55 +251,58 @@ static STATUS_T CmdParallel(wAction_t action, coOrd pos)
}
if (t1) {
a = NormalizeAngle(GetTrkEndAngle(t1, ep1) - GetTrkEndAngle(t,
- 1) + (180.0+connectAngle/2.0));
+ 1) + (180.0+connectAngle/2.0));
if (a < connectAngle) {
DrawEndPt(&mainD, t1, ep1, wDrawColorWhite);
ConnectTracks(t1, ep1, t, 1);
DrawEndPt(&mainD, t1, ep1, wDrawColorBlack);
}
}
- }
- DrawNewTrack(t);
- UndoEnd();
- InfoSubstituteControls(NULL, NULL);
- if (parType == PAR_TRACK)
- sprintf(message, "parallel-separation-%s", curScaleName);
- else
- sprintf(message, "parallel-line-separation-%s", curScaleName);
- wPrefSetFloat("misc", message, parSeparation);
- tempSegs_da.cnt = 0;
- return C_TERMINATE;
+ }
+ DrawNewTrack(t);
+ UndoEnd();
+ InfoSubstituteControls(NULL, NULL);
+ if (parType == PAR_TRACK) {
+ sprintf(message, "parallel-separation-%s", curScaleName);
+ } else {
+ sprintf(message, "parallel-line-separation-%s", curScaleName);
+ }
+ wPrefSetFloat("misc", message, parSeparation);
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ return C_TERMINATE;
- case C_REDRAW:
- if (Dpa.anchor_Trk) {
+ case C_REDRAW:
+ if (Dpa.anchor_Trk) {
DrawTrack(Dpa.anchor_Trk,&tempD,
- wDrawColorPreviewSelected); //Special color means THICK3 as well
- }
- if (tempSegs_da.cnt>0) {
- DrawSegs( &tempD, zero, 0.0, &tempSegs(0), tempSegs_da.cnt, trackGauge,
- wDrawColorBlack );
- }
- return C_CONTINUE;
+ wDrawColorPreviewSelected); //Special color means THICK3 as well
+ }
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &tempSegs_da, trackGauge, wDrawColorBlack,
+ 0 );
+ return C_CONTINUE;
- case C_CANCEL:
- Dpa.anchor_Trk = NULL;
- tempSegs_da.cnt = 0;
- InfoSubstituteControls(NULL, NULL);
- return C_TERMINATE;
+ case C_CANCEL:
+ Dpa.anchor_Trk = NULL;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ InfoSubstituteControls(NULL, NULL);
+ return C_TERMINATE;
- }
- return C_CONTINUE;
+ }
+ return C_CONTINUE;
}
-#include "bitmaps/parallel.xpm"
-#include "bitmaps/parallel-line.xpm"
+#include "bitmaps/parallel.xpm3"
+#include "bitmaps/parallel-line.xpm3"
EXPORT void InitCmdParallel( wMenu_p menu )
{
ButtonGroupBegin( _("Parallel"), "cmdParallelSetCmd", _("Parallel") );
- AddMenuButton( menu, CmdParallel, "cmdParallelTrack", _("Parallel Track"), wIconCreatePixMap(parallel_xpm[iconSize]), LEVEL0_50, IC_STICKY|IC_POPUP|IC_WANT_MOVE, ACCL_PARALLEL, I2VP(0) );
- AddMenuButton( menu, CmdParallel, "cmdParallelLine", _("Parallel Line"), wIconCreatePixMap(parallel_line_xpm[iconSize]), LEVEL0_50, IC_STICKY|IC_POPUP|IC_WANT_MOVE, ACCL_PARALLEL, I2VP(1) );
+ AddMenuButton( menu, CmdParallel, "cmdParallelTrack", _("Parallel Track"),
+ wIconCreatePixMap(parallel_xpm3[iconSize]), LEVEL0_50,
+ IC_STICKY|IC_POPUP|IC_WANT_MOVE, ACCL_PARALLEL, I2VP(0) );
+ AddMenuButton( menu, CmdParallel, "cmdParallelLine", _("Parallel Line"),
+ wIconCreatePixMap(parallel_line_xpm3[iconSize]), LEVEL0_50,
+ IC_STICKY|IC_POPUP|IC_WANT_MOVE, ACCL_PARALLEL, I2VP(1) );
ButtonGroupEnd();
ParamRegister( &parSepPG );
}
diff --git a/app/bin/cprint.c b/app/bin/cprint.c
index a8ae0c1..123ad99 100644
--- a/app/bin/cprint.c
+++ b/app/bin/cprint.c
@@ -1,5 +1,5 @@
/** \file cprint.c
- * Printing functions.
+ * Printing functions.
*/
/* XTrkCad - Model Railroad CAD
@@ -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 "custom.h"
@@ -37,29 +37,31 @@
#define PRINTOPTION_SNAP (1<<0)
typedef struct {
- int x0, x1, y0, y1;
- char * bm;
- int memsize;
- coOrd orig;
- coOrd size;
- ANGLE_T angle;
- } bitmap_t;
+ int x0, x1, y0, y1;
+ char * bm;
+ int memsize;
+ coOrd orig;
+ coOrd size;
+ ANGLE_T angle;
+} bitmap_t;
static bitmap_t bm, bm0;
#define BITMAP( BM, X, Y ) \
(BM).bm[ (X)-(BM).x0 + ((Y)-(BM).y0) * ((BM).x1-(BM).x0) ]
static struct {
- coOrd size;
- coOrd orig;
- ANGLE_T angle;
- } currPrintGrid, newPrintGrid;
+ coOrd size;
+ coOrd orig;
+ ANGLE_T angle;
+} currPrintGrid, newPrintGrid;
-EXPORT coOrd GetPrintOrig() {
+EXPORT coOrd GetPrintOrig()
+{
return currPrintGrid.orig;
}
-EXPORT ANGLE_T GetPrintAngle() {
+EXPORT ANGLE_T GetPrintAngle()
+{
return currPrintGrid.angle;
}
/*
@@ -70,7 +72,7 @@ EXPORT ANGLE_T GetPrintAngle() {
static long printGaudy = 1;
static long printRegistrationMarks = 1;
static long printPageNumbers = 1;
-static long printPhysSize = FALSE;
+static long bIgnoreMargins = FALSE;
static long printFormat = PORTRAIT;
static long printOrder = 0;
static long printGrid = 0;
@@ -87,7 +89,7 @@ static coOrd maxPageSize;
static coOrd realPageSize;
static wWin_p printWin = NULL;
-static wWin_p printMarginWin = NULL;
+static wWin_p customMarginWin = NULL;
static wMenu_p printGridPopupM;
@@ -110,7 +112,7 @@ static char * printOrderLabels[] = { N_("Normal"), N_("Reverse"), NULL };
static char * printGaudyLabels[] = { N_("Engineering Data"), NULL };
static char * printRegistrationMarksLabels[] = { N_("Registration Marks (in 1:1 scale only)"), NULL };
static char * printPageNumberLabels[] = { N_("Page Numbers"), NULL };
-static char * printPhysSizeLabels[] = { N_("Ignore Page Margins"), NULL };
+static char * sIgnoreMarginsLabels[] = { N_("Ignore Page Margins"), NULL };
static char * printGridLabels[] = { N_("Snap Grid"), NULL };
static char * printRulerLabels[] = { N_("Layout Edge"), N_("Every Page"), N_("None"), NULL };
static char * printRoadbedLabels[] = { N_("Roadbed Outline"), NULL };
@@ -123,48 +125,50 @@ static paramFloatRange_t r_100_99999 = { -100, 99999, 0, PDO_NORANGECHECK_HIGH }
static paramFloatRange_t r0_360 = { 0, 360 };
static paramData_t printPLs[] = {
-/*0*/ { PD_LONG, &iPrintScale, "scale", 0, &rminScale_999, N_("Print Scale"), 0, I2VP(1) },
-/*1*/ { PD_FLOAT, &newPrintGrid.size.x, "pagew", PDO_DIM|PDO_SMALLDIM|PDO_NORECORD|PDO_NOPREF, &r1_pgsz_x, N_("Page Width"), 0, I2VP(2) },
-/*2*/ { PD_BUTTON, PrintMaxPageSize, "max", PDO_DLGHORZ, NULL, N_("Max") },
-/*3*/ { PD_FLOAT, &newPrintGrid.size.y, "pageh", PDO_DIM|PDO_SMALLDIM|PDO_NORECORD|PDO_NOPREF, &r1_pgsz_y, N_("Height"), 0, I2VP(2) },
-/*4*/ { PD_BUTTON, PrintSnapShot, "snapshot", PDO_DLGHORZ, NULL, N_("Snap Shot") },
-/*5*/ { PD_RADIO, &printFormat, "format", 0, printFormatLabels, N_("Page Format"), BC_HORZ|BC_NOBORDER, I2VP(1) },
-/*6*/ { PD_RADIO, &printOrder, "order", PDO_DLGBOXEND, printOrderLabels, N_("Print Order"), BC_HORZ|BC_NOBORDER },
-/*7*/ { PD_MESSAGE, N_("Print "), NULL, PDO_DLGRESETMARGIN| PDO_DLGNOLABELALIGN, I2VP(0) },
-/*8*/ { PD_TOGGLE, &printGaudy, "style", PDO_DLGNOLABELALIGN, printGaudyLabels, NULL, BC_HORZ|BC_NOBORDER, I2VP(1) },
+ /*0*/ { PD_LONG, &iPrintScale, "scale", 0, &rminScale_999, N_("Print Scale"), 0, I2VP(1) },
+ /*1*/ { PD_FLOAT, &newPrintGrid.size.x, "pagew", PDO_DIM|PDO_SMALLDIM|PDO_NORECORD|PDO_NOPREF, &r1_pgsz_x, N_("Page Width"), 0, I2VP(2) },
+ /*2*/ { PD_BUTTON, PrintMaxPageSize, "max", PDO_DLGHORZ, NULL, N_("Max") },
+ /*3*/ { PD_FLOAT, &newPrintGrid.size.y, "pageh", PDO_DIM|PDO_SMALLDIM|PDO_NORECORD|PDO_NOPREF, &r1_pgsz_y, N_("Height"), 0, I2VP(2) },
+ /*4*/ { PD_BUTTON, PrintSnapShot, "snapshot", PDO_DLGHORZ, NULL, N_("Snap Shot") },
+ /*5*/ { PD_RADIO, &printFormat, "format", 0, printFormatLabels, N_("Page Format"), BC_HORZ|BC_NOBORDER, I2VP(1) },
+ /*6*/ { PD_RADIO, &printOrder, "order", PDO_DLGBOXEND, printOrderLabels, N_("Print Order"), BC_HORZ|BC_NOBORDER },
+ /*7*/ { PD_MESSAGE, N_("Print "), NULL, PDO_DLGRESETMARGIN| PDO_DLGNOLABELALIGN, I2VP(0) },
+ /*8*/ { PD_TOGGLE, &printGaudy, "style", PDO_DLGNOLABELALIGN, printGaudyLabels, NULL, BC_HORZ|BC_NOBORDER, I2VP(1) },
#define I_REGMARKS (9)
-/*9*/ { PD_TOGGLE, &printRegistrationMarks, "registrationMarks", PDO_DLGNOLABELALIGN, printRegistrationMarksLabels, NULL, BC_HORZ|BC_NOBORDER },
+ /*9*/ { PD_TOGGLE, &printRegistrationMarks, "registrationMarks", PDO_DLGNOLABELALIGN, printRegistrationMarksLabels, NULL, BC_HORZ|BC_NOBORDER },
#define I_PAGENUMBERS (10)
-/*10*/ { PD_TOGGLE, &printPageNumbers, "pageNumbers", PDO_DLGNOLABELALIGN, printPageNumberLabels, NULL, BC_HORZ | BC_NOBORDER },
+ /*10*/ { PD_TOGGLE, &printPageNumbers, "pageNumbers", PDO_DLGNOLABELALIGN, printPageNumberLabels, NULL, BC_HORZ | BC_NOBORDER },
#define I_GRID (11)
-/*11*/ { PD_TOGGLE, &printGrid, "grid", PDO_DLGNOLABELALIGN, printGridLabels, NULL, BC_HORZ|BC_NOBORDER },
+ /*11*/ { PD_TOGGLE, &printGrid, "grid", PDO_DLGNOLABELALIGN, printGridLabels, NULL, BC_HORZ|BC_NOBORDER },
#define I_RULER (12)
-/*12*/ { PD_RADIO, &printRuler, "ruler", 0, printRulerLabels, N_("Rulers:"), BC_HORZ|BC_NOBORDER },
+ /*12*/ { PD_RADIO, &printRuler, "ruler", 0, printRulerLabels, N_("Rulers:"), BC_HORZ|BC_NOBORDER },
#define I_CENTERLINE (13)
-/*13*/ { PD_TOGGLE, &printCenterLine, "centerLine", PDO_DLGNOLABELALIGN, printCenterLineLabels, NULL, BC_HORZ|BC_NOBORDER },
+ /*13*/ { PD_TOGGLE, &printCenterLine, "centerLine", PDO_DLGNOLABELALIGN, printCenterLineLabels, NULL, BC_HORZ|BC_NOBORDER },
#define I_ROADBED (14)
-/*14*/{ PD_TOGGLE, &printRoadbed, "roadbed", PDO_DLGNOLABELALIGN, printRoadbedLabels, NULL, BC_HORZ|BC_NOBORDER },
+ /*14*/{ PD_TOGGLE, &printRoadbed, "roadbed", PDO_DLGNOLABELALIGN, printRoadbedLabels, NULL, BC_HORZ|BC_NOBORDER },
#define I_ROADBEDWIDTH (15)
-/*15*/{ PD_FLOAT, &printRoadbedWidth, "roadbedWidth", PDO_DIM , &r0_, N_(" Width") },
-/*16*/ { PD_TOGGLE, &printPhysSize, "physsize", PDO_DLGNOLABELALIGN, printPhysSizeLabels, NULL, BC_HORZ | BC_NOBORDER, I2VP(1) },
-/*17*/ { PD_BUTTON, DoPrintMargin, "margin", PDO_DLGHORZ|PDO_DLGBOXEND, NULL, N_("Margins") },
-/*18*/{ PD_FLOAT, &newPrintGrid.orig.x, "origx", PDO_DIM|PDO_DLGRESETMARGIN, &r_100_99999, N_("Origin: X"), 0, I2VP(2) },
-/*19*/ { PD_FLOAT, &newPrintGrid.orig.y, "origy", PDO_DIM, &r_100_99999, N_("Y"), 0, I2VP(2) },
-/*20*/ { PD_BUTTON, DoResetGrid, "reset", PDO_DLGHORZ, NULL, N_("Reset") },
-/*21*/ { PD_FLOAT, &newPrintGrid.angle, "origa", PDO_ANGLE|PDO_DLGBOXEND, &r0_360, N_("Angle"), 0, I2VP(2) },
-/*22*/ { PD_BUTTON, DoPrintSetup, "setup", PDO_DLGCMDBUTTON, NULL, N_("Setup") },
-/*23*/ { PD_BUTTON, SelectAllPages, "selall", 0, NULL, N_("Select All") },
-/*24*/ { PD_BUTTON, PrintClear, "clear", 0, NULL, N_("Clear") },
+ /*15*/{ PD_FLOAT, &printRoadbedWidth, "roadbedWidth", PDO_DIM, &r0_, N_(" Width") },
+ /*16*/ { PD_TOGGLE, &bIgnoreMargins, "physsize", PDO_DLGNOLABELALIGN, sIgnoreMarginsLabels, NULL, BC_HORZ | BC_NOBORDER, I2VP(1) },
+ /*17*/ { PD_BUTTON, DoPrintMargin, "margin", PDO_DLGHORZ|PDO_DLGBOXEND, NULL, N_("Margins") },
+ /*18*/{ PD_FLOAT, &newPrintGrid.orig.x, "origx", PDO_DIM|PDO_DLGRESETMARGIN, &r_100_99999, N_("Origin: X"), 0, I2VP(2) },
+ /*19*/ { PD_FLOAT, &newPrintGrid.orig.y, "origy", PDO_DIM, &r_100_99999, N_("Y"), 0, I2VP(2) },
+ /*20*/ { PD_BUTTON, DoResetGrid, "reset", PDO_DLGHORZ, NULL, N_("Reset") },
+ /*21*/ { PD_FLOAT, &newPrintGrid.angle, "origa", PDO_ANGLE|PDO_DLGBOXEND, &r0_360, N_("Angle"), 0, I2VP(2) },
+ /*22*/ { PD_BUTTON, DoPrintSetup, "setup", PDO_DLGCMDBUTTON, NULL, N_("Setup") },
+ /*23*/ { PD_BUTTON, SelectAllPages, "selall", 0, NULL, N_("Select All") },
+ /*24*/ { PD_BUTTON, PrintClear, "clear", 0, NULL, N_("Clear") },
#define I_PAGECNT (25)
-/*25*/ { PD_MESSAGE, N_("0 pages"), NULL, 0, I2VP(80) },
-/*26*/ { PD_MESSAGE, N_("selected"), NULL, 0, I2VP(80) }
+ /*25*/ { PD_MESSAGE, N_("0 pages"), NULL, 0, I2VP(80) },
+ /*26*/ { PD_MESSAGE, N_("selected"), NULL, 0, I2VP(80) }
};
static paramGroup_t printPG = { "print", PGO_PREFMISCGROUP, printPLs, COUNT( printPLs ) };
-static struct {
+struct margins_s {
double top, right, bottom, left;
-} printMargin = { 0.0, 0.0, 0.0, 0.0 };
+};
+static struct margins_s printerMargin = { 0.0, 0.0, 0.0, 0.0 };
+static struct margins_s customMargin = { 0.0, 0.0, 0.0, 0.0 };
/*****************************************************************************
*
@@ -174,10 +178,10 @@ static struct {
/**
* Update the dialog with the current number of selected pages.
- *
+ *
*/
-static void
+static void
UpdatePageCount()
{
DynString msg;
@@ -186,7 +190,7 @@ UpdatePageCount()
DynStringPrintf(&msg, (pageCount == 1?_("%d page"):_("%d pages")), pageCount);
ParamLoadMessage(&printPG, I_PAGECNT, DynStringToCStr(&msg));
ParamDialogOkActive(&printPG, pageCount != 0);
-
+
DynStringFree(&msg);
}
@@ -198,11 +202,13 @@ static void ChangeDim( void )
bitmap_t tmpBm;
BOOL_T selected;
- MapGrid( zero, mapD.size, 0.0, currPrintGrid.orig, currPrintGrid.angle, currPrintGrid.size.x, currPrintGrid.size.y,
- &x0, &x1, &y0, &y1 );
+ MapGrid( zero, mapD.size, 0.0, currPrintGrid.orig, currPrintGrid.angle,
+ currPrintGrid.size.x, currPrintGrid.size.y,
+ &x0, &x1, &y0, &y1 );
- if ( x0==bm.x0 && x1==bm.x1 && y0==bm.y0 && y1==bm.y1 )
+ if ( x0==bm.x0 && x1==bm.x1 && y0==bm.y0 && y1==bm.y1 ) {
return;
+ }
size = (x1-x0) * (y1-y0);
if (size > bm0.memsize) {
bm0.bm = MyRealloc( bm0.bm, size );
@@ -245,15 +251,15 @@ static void ChangeDim( void )
static void MarkPage(
- wIndex_t x,
- wIndex_t y )
+ wIndex_t x,
+ wIndex_t y )
/*
* Hilite a area
*/
{
coOrd p[4];
-
-LOG1( log_print, ( "MarkPage( %d, %d )\n", x, y) )
+
+ LOG1( log_print, ( "MarkPage( %d, %d )\n", x, y) )
if ( x<bm.x0 || x>=bm.x1 || y<bm.y0 || y>=bm.y1) {
ErrorMessage( MSG_OUT_OF_BOUNDS );
return;
@@ -266,7 +272,8 @@ LOG1( log_print, ( "MarkPage( %d, %d )\n", x, y) )
Rotate( &p[1], currPrintGrid.orig, currPrintGrid.angle );
Rotate( &p[2], currPrintGrid.orig, currPrintGrid.angle );
Rotate( &p[3], currPrintGrid.orig, currPrintGrid.angle );
-LOG( log_print, 2, ( "MP(%d,%d) [%0.3f %0.3f] x [%0.3f %0.3f]\n", x, y, p[0].x, p[0].y, p[2].x, p[2].y ) )
+ LOG( log_print, 2, ( "MP(%d,%d) [%0.3f %0.3f] x [%0.3f %0.3f]\n", x, y, p[0].x,
+ p[0].y, p[2].x, p[2].y ) )
DrawHilightPolygon( &tempD, p, 4 );
}
@@ -281,8 +288,9 @@ static void SelectPage( coOrd pos )
Rotate( &pos, zero, -currPrintGrid.angle );
x = (int)floor(pos.x/currPrintGrid.size.x);
y = (int)floor(pos.y/currPrintGrid.size.y);
- if ( x<bm.x0 || x>=bm.x1 || y<bm.y0 || y>=bm.y1)
+ if ( x<bm.x0 || x>=bm.x1 || y<bm.y0 || y>=bm.y1) {
return;
+ }
selected = BITMAP( bm, x, y );
pageCount += (selected?-1:1);
BITMAP( bm, x, y ) = !selected;
@@ -299,7 +307,8 @@ static void DrawPrintGrid( void )
{
wIndex_t x, y;
- DrawGrid( &tempD, &mapD.size, currPrintGrid.size.x, currPrintGrid.size.y, 0, 0, currPrintGrid.orig, currPrintGrid.angle, wDrawColorBlack, TRUE );
+ DrawGrid( &tempD, &mapD.size, currPrintGrid.size.x, currPrintGrid.size.y, 0, 0,
+ currPrintGrid.orig, currPrintGrid.angle, wDrawColorBlack, TRUE );
for (y=bm.y0; y<bm.y1; y++)
for (x=bm.x0; x<bm.x1; x++)
@@ -316,33 +325,35 @@ static void DrawPrintGrid( void )
static drawCmd_t print_d = {
- NULL,
- &printDrawFuncs,
- DC_PRINT,
- 16.0,
- 0.0,
- {0.0, 0.0}, {1.0, 1.0},
- Pix2CoOrd, CoOrd2Pix };
+ NULL,
+ &printDrawFuncs,
+ DC_PRINT,
+ 16.0,
+ 0.0,
+ {0.0, 0.0}, {1.0, 1.0},
+ Pix2CoOrd, CoOrd2Pix
+};
static drawCmd_t page_d = {
- NULL,
- &printDrawFuncs,
- DC_PRINT,
- 1.0,
- 0.0,
- {0.0, 0.0}, {1.0, 1.0},
- Pix2CoOrd, CoOrd2Pix };
+ NULL,
+ &printDrawFuncs,
+ DC_PRINT,
+ 1.0,
+ 0.0,
+ {0.0, 0.0}, {1.0, 1.0},
+ Pix2CoOrd, CoOrd2Pix
+};
/**
* Print the basic layout for a trackplan. This includes the frame and some
* information like room size, print scale etc..
*
- * \param roomSize IN size of the layout
+ * \param roomSize IN size of the layout
*/
static void PrintGaudyBox(
- coOrd roomSize )
+ coOrd roomSize )
{
coOrd p00, p01, p10, p11;
struct tm *tm;
@@ -359,8 +370,9 @@ static void PrintGaudyBox(
strftime( dat, STR_SIZE, "%x", tm );
smiggin = wDrawGetDPI( print_d.d );
- if (smiggin>4.0)
+ if (smiggin>4.0) {
smiggin = 4.0/smiggin;
+ }
pageW = currPrintGrid.size.x/print_d.scale;
pageH = currPrintGrid.size.y/print_d.scale;
/* Draw some lines */
@@ -405,19 +417,19 @@ static void PrintGaudyBox(
DrawString( &page_d, p00, 0.0, GetLayoutSubtitle(), fp, 12.0, wDrawColorBlack );
sprintf( dat, _("PrintScale 1:%ld Room %s x %s Model Scale %s File %s"),
- (long)printScale,
- FormatDistance( roomSize.x ),
- FormatDistance( roomSize.y ),
- curScaleName, GetLayoutFilename() );
+ (long)printScale,
+ FormatDistance( roomSize.x ),
+ FormatDistance( roomSize.y ),
+ curScaleName, GetLayoutFilename() );
p00.x = 0.05; p00.y = 0.25+0.05;
DrawString( &page_d, p00, 0.0, dat, fp, 14.0, wDrawColorBlack );
}
static void PrintPlainBox(
- int x,
- int y,
- coOrd *corners )
+ int x,
+ int y,
+ coOrd *corners )
{
coOrd p00, p01, p10, p11;
char tmp[30];
@@ -426,8 +438,9 @@ static void PrintPlainBox(
DIST_T smiggin;
smiggin = wDrawGetDPI( print_d.d );
- if (smiggin>4.0)
+ if (smiggin>4.0) {
smiggin = 4.0/smiggin;
+ }
pageW = currPrintGrid.size.x/print_d.scale;
pageH = currPrintGrid.size.y/print_d.scale;
@@ -481,7 +494,7 @@ static void PrintEnableControls( void )
printRegistrationMarks = 0;
ParamControlActive( &printPG, I_REGMARKS, FALSE );
}
- if (printScale <= (twoRailScale*2+1)/2.0) {
+ if ( DrawTwoRails( &print_d, 1 ) ) {
ParamLoadControl( &printPG, I_ROADBED );
ParamControlActive( &printPG, I_ROADBED, TRUE );
ParamControlActive( &printPG, I_ROADBEDWIDTH, TRUE );
@@ -516,20 +529,21 @@ static void PrintUpdate( int inx0 )
}
currPrintGrid = newPrintGrid;
for ( inx = 0; inx < COUNT( printPLs ); inx++ ) {
- if ( inx != inx0 && printPLs[inx].context == I2VP(2) )
+ if ( inx != inx0 && printPLs[inx].context == I2VP(2) ) {
ParamLoadControl( &printPG, inx );
+ }
}
ChangeDim();
}
-static void SetPageSize( BOOL_T doScale )
+static void SetMaxPageSize( BOOL_T doScale )
{
WDOUBLE_T temp, x, y;
wPrintGetPageSize( &x, &y );
- if (!printPhysSize) {
- x -= (printMargin.left+printMargin.right);
- y -= (printMargin.top+printMargin.bottom);
+ if (!bIgnoreMargins) {
+ x -= (customMargin.left+customMargin.right);
+ y -= (customMargin.top+customMargin.bottom);
}
maxPageSize.x = x;
maxPageSize.y = y;
@@ -543,8 +557,9 @@ static void SetPageSize( BOOL_T doScale )
printRotate = FALSE;
}
if (doScale) {
- if (printGaudy)
+ if (printGaudy) {
maxPageSize.y -= 1.0;
+ }
maxPageSize.x *= printScale;
maxPageSize.y *= printScale;
}
@@ -554,7 +569,7 @@ static void SetPageSize( BOOL_T doScale )
/**
* Select all pages for printing.
- *
+ *
*/
static void SelectAllPages(void)
@@ -576,7 +591,7 @@ static void PrintMaxPageSize( void )
* (depending on paper size, scale and orientation)
*/
{
- SetPageSize( TRUE );
+ SetMaxPageSize( TRUE );
currPrintGrid.size = maxPageSize;
newPrintGrid = currPrintGrid;
ParamLoadControls( &printPG );
@@ -591,7 +606,7 @@ static void DoPrintScale( void )
* Called whenever print scale or orientation changes.
*/
{
- printScale = iPrintScale;
+ print_d.scale = printScale = iPrintScale;
PrintMaxPageSize();
PrintEnableControls();
}
@@ -603,38 +618,42 @@ static void DoPrintScale( void )
static void PrintMarginReset();
static paramFloatRange_t r0_1 = { 0.0, 1.0, 50 };
-static paramData_t printMarginPLs[] = {
+static paramData_t customMarginPLs[] = {
#define I_PM_FIRST (0)
- { PD_FLOAT, &printMargin.top, "marginT", PDO_DIM|PDO_NOPREF, &r0_1, NULL, 0, NULL },
- { PD_FLOAT, &printMargin.right, "marginR", PDO_DIM|PDO_NOPREF, &r0_1, NULL, 0, NULL },
- { PD_FLOAT, &printMargin.bottom, "marginB", PDO_DIM|PDO_NOPREF, &r0_1, NULL, 0, NULL },
- { PD_FLOAT, &printMargin.left, "marginL", PDO_DIM|PDO_NOPREF, &r0_1, NULL, 0, NULL },
+ { PD_FLOAT, &customMargin.top, "marginT", PDO_DIM|PDO_NOPREF, &r0_1, NULL, BO_IGNFOCUS, NULL },
+ { PD_FLOAT, &customMargin.right, "marginR", PDO_DIM|PDO_NOPREF, &r0_1, NULL, BO_IGNFOCUS, NULL },
+ { PD_FLOAT, &customMargin.bottom, "marginB", PDO_DIM|PDO_NOPREF, &r0_1, NULL, BO_IGNFOCUS, NULL },
+ { PD_FLOAT, &customMargin.left, "marginL", PDO_DIM|PDO_NOPREF, &r0_1, NULL, BO_IGNFOCUS, NULL },
#define I_PM_COUNT (4)
#define I_PM_MESSAGE (4)
{ PD_MESSAGE, NULL, NULL, 0, NULL },
#define I_PM_RESET (5)
- { PD_BUTTON, PrintMarginReset, "marginReset", PDO_DLGCMDBUTTON, NULL, N_("Reset") } };
-static paramGroup_t printMarginPG = { "printMargin", PGO_PREFMISCGROUP|PGO_NODEFAULTPROC, printMarginPLs, COUNT( printMarginPLs ) };
+ { PD_BUTTON, PrintMarginReset, "marginReset", PDO_DLGCMDBUTTON, NULL, N_("Reset") }
+};
+static paramGroup_t customMarginPG = { "printMargin", PGO_PREFMISCGROUP|PGO_NODEFAULTPROC, customMarginPLs, COUNT( customMarginPLs ) };
static wLines_t aPmLines[] = {
- { 1, 25, 11, 94, 11 },
- { 1, 94, 11, 94, 111 },
- { 1, 94, 111, 25, 111 },
- { 1, 25, 111, 25, 11 }};
+ { 1, 25, 11, 94, 11 },
+ { 1, 94, 11, 94, 111 },
+ { 1, 94, 111, 25, 111 },
+ { 1, 25, 111, 25, 11 }
+};
static int pmxoff=14;
static int pmyoff=5;
static void PrintMarginLayout(
- paramData_t * pd,
- int index,
- wWinPix_t colX,
- wWinPix_t * w,
- wWinPix_t * h )
+ paramData_t * pd,
+ int index,
+ wWinPix_t colX,
+ wWinPix_t * w,
+ wWinPix_t * h )
{
- if ( index < I_PM_FIRST || index > (I_PM_MESSAGE) )
+ if ( index < I_PM_FIRST || index > (I_PM_MESSAGE) ) {
return;
+ }
if ( index == I_PM_MESSAGE ) {
- *h = wControlGetPosY( printMarginPLs[I_PM_FIRST+2].control ) + wControlGetHeight( printMarginPLs[I_PM_FIRST+2].control );
+ *h = wControlGetPosY( customMarginPLs[I_PM_FIRST+2].control ) +
+ wControlGetHeight( customMarginPLs[I_PM_FIRST+2].control );
return;
}
wWinPix_t x0, y0;
@@ -642,9 +661,6 @@ static void PrintMarginLayout(
y0 = (aPmLines[index-I_PM_FIRST].y0+aPmLines[index-I_PM_FIRST].y1)/2;
x0 -= pmxoff;
y0 -= pmyoff;
-// y0 += wControlGetPosY( printMarginPLs[0].control ) + wControlGetHeight( printMarginPLs[0].control );
-// x0 -= wControlGetWidth( printMarginPLs[index-I_PM_FIRST].control )/2;
-// y0 -= wControlGetHeight( printMarginPLs[index-I_PM_FIRST].control )/2;
*w = x0;
*h = y0;
}
@@ -652,85 +668,98 @@ static void PrintMarginLayout(
static const char * sPrinterName = NULL;
-static BOOL_T SetMargins()
+/**
+ * Get saved customMargins (default values = printerMargins)
+ * Return true is any values differ from default
+ */
+static void GetMargins()
{
- double top, right, bottom, left;
- wPrintGetMargins( &top, &right, &bottom, &left );
+ wPrintGetMargins( &printerMargin.top, &printerMargin.right,
+ &printerMargin.bottom, &printerMargin.left );
sprintf( message, "%s-marginT", sPrinterName );
- wPrefGetFloat( "printer", message, &printMargin.top, top );
+ wPrefGetFloat( "printer", message, &customMargin.top, printerMargin.top );
sprintf( message, "%s-marginR", sPrinterName );
- wPrefGetFloat( "printer", message, &printMargin.right, right );
+ wPrefGetFloat( "printer", message, &customMargin.right, printerMargin.right );
sprintf( message, "%s-marginB", sPrinterName );
- wPrefGetFloat( "printer", message, &printMargin.bottom, bottom );
+ wPrefGetFloat( "printer", message, &customMargin.bottom, printerMargin.bottom );
sprintf( message, "%s-marginL", sPrinterName );
- wPrefGetFloat( "printer", message, &printMargin.left, left );
- ParamLoadControls( &printMarginPG );
- return
- fabs( top - printMargin.top ) >= 0.001 ||
- fabs( right - printMargin.right ) >= 0.001 ||
- fabs( bottom - printMargin.bottom ) >= 0.001 ||
- fabs( left - printMargin.left ) >= 0.001;
+ wPrefGetFloat( "printer", message, &customMargin.left, printerMargin.left );
+ ParamLoadControls( &customMarginPG );
}
+/**
+ * Process PrintMargin Ok button
+ * Save updates margins
+ * Recalc page size and update dialog items
+ */
static void DoPrintMarginOk( void * context )
{
- wHide( printMarginWin );
+ wHide( customMarginWin );
sprintf( message, "%s-marginT", sPrinterName );
- wPrefSetFloat( "printer", message, printMargin.top );
+ wPrefSetFloat( "printer", message, customMargin.top );
sprintf( message, "%s-marginR", sPrinterName );
- wPrefSetFloat( "printer", message, printMargin.right );
+ wPrefSetFloat( "printer", message, customMargin.right );
sprintf( message, "%s-marginB", sPrinterName );
- wPrefSetFloat( "printer", message, printMargin.bottom );
+ wPrefSetFloat( "printer", message, customMargin.bottom );
sprintf( message, "%s-marginL", sPrinterName );
- wPrefSetFloat( "printer", message, printMargin.left );
- SetPageSize( TRUE );
+ wPrefSetFloat( "printer", message, customMargin.left );
+ SetMaxPageSize( TRUE );
for ( int inx = 0; inx < COUNT( printPLs ); inx++ ) {
- if ( printPLs[inx].context == I2VP(2) )
+ if ( printPLs[inx].context == I2VP(2) ) {
ParamLoadControl( &printPG, inx );
+ }
}
+ ParamLoadControls( &customMarginPG );
DoPrintScale();
}
static void PrintMarginDlgUpdate( paramGroup_p pg, int index, void * context )
{
- wControlActive( printMarginPLs[I_PM_RESET].control, TRUE );
+ wBool_t bEnable =
+ fabs( printerMargin.top - customMargin.top ) >= 0.001 ||
+ fabs( printerMargin.right - customMargin.right ) >= 0.001 ||
+ fabs( printerMargin.bottom - customMargin.bottom ) >= 0.001 ||
+ fabs( printerMargin.left - customMargin.left ) >= 0.001;
+ wControlActive( customMarginPLs[I_PM_RESET].control, bEnable );
}
+/**
+ * Reset custom margins to printer margins
+ */
static void PrintMarginReset()
{
- wPrintGetMargins( &printMargin.top, &printMargin.right, &printMargin.bottom, &printMargin.left );
- ParamLoadControls( &printMarginPG );
- wControlActive( printMarginPLs[I_PM_RESET].control, FALSE );
+ customMargin = printerMargin;
+ ParamLoadControls( &customMarginPG );
+ wControlActive( customMarginPLs[I_PM_RESET].control, FALSE );
}
+/**
+ * Open PrintMargin dialog
+ */
static void DoPrintMargin( void )
{
- sPrinterName = wPrintGetName();
- while ( *sPrinterName == '\0' ) {
- int rc = NoticeMessage( MSG_NO_PRINTER_SELECTED, _("Ok"), _("Cancel") );
- if ( rc <= 0 )
- return;
- DoPrintSetup();
- }
- if ( printMarginWin == NULL ) {
+ if ( customMarginWin == NULL ) {
int x=10, y=10;
- printMarginWin = ParamCreateDialog( &printMarginPG, MakeWindowTitle(_("Print Margins")), _("Ok"), DoPrintMarginOk, NULL, TRUE, PrintMarginLayout, F_BLOCK, PrintMarginDlgUpdate );
- if ( printMarginWin == NULL )
+ customMarginWin = ParamCreateDialog( &customMarginPG,
+ MakeWindowTitle(_("Print Margins")), _("Ok"), DoPrintMarginOk, NULL, TRUE,
+ PrintMarginLayout, F_BLOCK, PrintMarginDlgUpdate );
+ if ( customMarginWin == NULL ) {
return;
+ }
for ( int i=0; i<COUNT( aPmLines ); i++ ) {
aPmLines[i].x0 += x;
aPmLines[i].x1 += x;
aPmLines[i].y0 += y;
aPmLines[i].y1 += y;
}
- wLineCreate( printMarginWin, NULL, COUNT( aPmLines ), aPmLines );
+ wLineCreate( customMarginWin, NULL, COUNT( aPmLines ), aPmLines );
}
- wMessageSetValue( (wMessage_p)printMarginPLs[I_PM_MESSAGE].control, sPrinterName );
- // Enable Reset button if we've changed anything
- wControlActive( printMarginPLs[I_PM_RESET].control, SetMargins() );
- wShow( printMarginWin );
+ wMessageSetValue( (wMessage_p)customMarginPLs[I_PM_MESSAGE].control,
+ sPrinterName );
+ ParamLoadControls( &customMarginPG );
+ wShow( customMarginWin );
}
@@ -741,7 +770,8 @@ static void DoPrintSetup( void )
{
wPrintSetup( (wPrintSetupCallBack_p)DoPrintScale );
sPrinterName = wPrintGetName();
- SetPageSize( TRUE );
+ GetMargins();
+ SetMaxPageSize( TRUE );
}
@@ -778,7 +808,7 @@ static void PrintSnapShot( void )
POS_T t;
PrintClear();
- SetPageSize( FALSE );
+ SetMaxPageSize( FALSE );
pageSize = realPageSize;
if (pageSize.x > pageSize.y) {
t = pageSize.x;
@@ -788,24 +818,26 @@ static void PrintSnapShot( void )
size = mapD.size;
scaleH = 1;
- for (i=0;i<3;i++) {
+ for (i=0; i<3; i++) {
size = mapD.size;
size.x += 2*0.5*scaleH;
size.y += 2*0.5*scaleH;
- if (printGaudy)
+ if (printGaudy) {
size.y += 1.0*scaleH;
+ }
scaleX = size.x/pageSize.x;
scaleY = size.y/pageSize.y;
scaleH = (long)ceil(max( scaleX, scaleY ));
}
scaleV = 1;
- for (i=0;i<3;i++) {
+ for (i=0; i<3; i++) {
size = mapD.size;
size.x += 2*0.5*scaleV;
size.y += 2*0.5*scaleV;
- if (printGaudy)
+ if (printGaudy) {
size.y += 1.0*scaleV;
+ }
scaleX = size.x/pageSize.y;
scaleY = size.y/pageSize.x;
scaleV = (long)ceil(max( scaleX, scaleY ));
@@ -819,17 +851,17 @@ static void PrintSnapShot( void )
printFormat = LANDSCAPE;
}
- SetPageSize( TRUE );
-/*
- if (printFormat == LANDSCAPE) {
- currPrintGrid.orig.x = -0.5*printScale;
- currPrintGrid.orig.y = maxPageSize.x-0.5*printScale;
- currPrintGrid.angle = 90.0;
- } else {*/
- currPrintGrid.orig.x = -0.5*printScale; //Bigger rulers
- currPrintGrid.orig.y = -0.5*printScale; //Bigger rules
- currPrintGrid.angle = 0.0;
-/* }*/
+ SetMaxPageSize( TRUE );
+ /*
+ if (printFormat == LANDSCAPE) {
+ currPrintGrid.orig.x = -0.5*printScale;
+ currPrintGrid.orig.y = maxPageSize.x-0.5*printScale;
+ currPrintGrid.angle = 90.0;
+ } else {*/
+ currPrintGrid.orig.x = -0.5*printScale; //Bigger rulers
+ currPrintGrid.orig.y = -0.5*printScale; //Bigger rules
+ currPrintGrid.angle = 0.0;
+ /* }*/
currPrintGrid.size = maxPageSize;
newPrintGrid = currPrintGrid;
iPrintScale = (long)printScale;
@@ -865,9 +897,11 @@ static void DrawRegistrationMarks( drawCmd_p d )
qq.x = p0.x = p1.x = (POS_T)GetDim(x);
p0.y = 0.0;
p1.y = mapD.size.y;
- if (!ClipLine( &p0, &p1, d->orig, d->angle, d->size ))
+ if (!ClipLine( &p0, &p1, d->orig, d->angle, d->size )) {
continue;
- for ( y=(long)(ceil(PutDim(p0.y)/delta)*delta); (POS_T)y<PutDim(p1.y); y+=delta ) {
+ }
+ for ( y=(long)(ceil(PutDim(p0.y)/delta)*delta); (POS_T)y<PutDim(p1.y);
+ y+=delta ) {
qq.y = (POS_T)GetDim(y);
q0.x = q1.x = qq.x;
if ( x%divisor == 0 && y%divisor == 0 ) {
@@ -886,16 +920,18 @@ static void DrawRegistrationMarks( drawCmd_p d )
DrawLine( d, q0, q1, 0, wDrawColorBlack );
q0.x = qq.x + len/4;;
q0.y = qq.y + len/4;;
- if (units == UNITS_METRIC)
+ if (units == UNITS_METRIC) {
sprintf( msg, "%0.1fm", (DOUBLE_T)x/100.0 );
- else
+ } else {
sprintf( msg, "%ld\' %ld\"", x/12, x%12 );
+ }
DrawString( d, q0, 0.0, msg, fp, fs, wDrawColorBlack );
q0.y = qq.y - len*3/4;
- if (units == UNITS_METRIC)
+ if (units == UNITS_METRIC) {
sprintf( msg, "%0.1fm", (DOUBLE_T)y/100.0 );
- else
+ } else {
sprintf( msg, "%ld\' %ld\"", y/12, y%12 );
+ }
DrawString( d, q0, 0.0, msg, fp, fs, wDrawColorBlack );
}
}
@@ -913,22 +949,22 @@ static void DrawRegistrationMarks( drawCmd_p d )
static char *
FormatPageNumber(int x, int y)
{
- DynString formatted;
- char *result;
-
- DynStringMalloc(&formatted, 16);
- x -= bm.x0-1;
- y -= bm.y0-1;
- if (x > 0 && x <= bm.x1-bm.x0 && y > 0 && y <= bm.y1-bm.y0) {
- DynStringPrintf(&formatted, "(%d/%d)", x, y);
- } else {
- DynStringCatCStr(&formatted, "(-/-)");
- }
-
- result = strdup(DynStringToCStr(&formatted));
- DynStringFree(&formatted);
-
- return (result);
+ DynString formatted;
+ char *result;
+
+ DynStringMalloc(&formatted, 16);
+ x -= bm.x0-1;
+ y -= bm.y0-1;
+ if (x > 0 && x <= bm.x1-bm.x0 && y > 0 && y <= bm.y1-bm.y0) {
+ DynStringPrintf(&formatted, "(%d/%d)", x, y);
+ } else {
+ DynStringCatCStr(&formatted, "(-/-)");
+ }
+
+ result = strdup(DynStringToCStr(&formatted));
+ DynStringFree(&formatted);
+
+ return (result);
}
/**
@@ -944,16 +980,16 @@ FormatPageNumber(int x, int y)
static bool
PrintPageNumber(int x, int y, DIST_T width, DIST_T height)
{
- coOrd printPosition;
- coOrd textSize;
+ coOrd printPosition;
+ coOrd textSize;
- char *positionText;
- wFont_p fp = wStandardFont(F_HELV, TRUE, FALSE);
- wFontSize_t fs = 64.0;
+ char *positionText;
+ wFont_p fp = wStandardFont(F_HELV, TRUE, FALSE);
+ wFontSize_t fs = 64.0;
- positionText = FormatPageNumber(x, y);
+ positionText = FormatPageNumber(x, y);
- if (strcmp(positionText,"(-/-)") != 0) {
+ if (strcmp(positionText,"(-/-)") != 0) {
// even though we're printing into page_d, mainD must be used here
DrawTextSize(&mainD, positionText, fp, fs, TRUE, &textSize);
@@ -968,13 +1004,13 @@ PrintPageNumber(int x, int y, DIST_T width, DIST_T height)
unsigned long options = page_d.options;
page_d.options |= DC_OUTLINE;
DrawString(&page_d, printPosition, 0.0, positionText, fp, fs,
- wDrawColorGray(70));
+ wDrawColorGray(70));
page_d.options = options;
- }
+ }
- free(positionText);
+ free(positionText);
- return (TRUE);
+ return (TRUE);
}
/**
@@ -988,34 +1024,35 @@ PrintPageNumber(int x, int y, DIST_T width, DIST_T height)
void
PrintNextPageNumberAt(int x, int y, coOrd position)
{
- char *pageNumber;
- wFont_p fp = wStandardFont(F_HELV, FALSE, FALSE);
- wFontSize_t fs = 8.0;
-
- pageNumber = FormatPageNumber(x, y);
- //Suppress garbage page numbers
- if (strcmp(pageNumber,"(-/-)") != 0)
- DrawString(&page_d, position, 0.0, pageNumber, fp, fs, wDrawColorBlack);
- free(pageNumber);
+ char *pageNumber;
+ wFont_p fp = wStandardFont(F_HELV, FALSE, FALSE);
+ wFontSize_t fs = 8.0;
+
+ pageNumber = FormatPageNumber(x, y);
+ //Suppress garbage page numbers
+ if (strcmp(pageNumber,"(-/-)") != 0) {
+ DrawString(&page_d, position, 0.0, pageNumber, fp, fs, wDrawColorBlack);
+ }
+ free(pageNumber);
}
/**
* Print the page numbers of all four adjoining pages (left, right, above, below)
- *
+ *
* \param x page index of current page x
* \param y page index of current page y
* \param pageW width of page
* \param pageH height of page
- *
+ *
* \return TRUE
*/
static bool
PrintNextPageNumbers(int x, int y, DIST_T pageW, DIST_T pageH)
{
- coOrd p00;
+ coOrd p00;
- // above
+ // above
if (printFormat == PORTRAIT) {
p00.x = pageW / 2.0 - 20.0 / 72.0;
p00.y = pageH - 10.0 / 72.0;
@@ -1023,17 +1060,17 @@ PrintNextPageNumbers(int x, int y, DIST_T pageW, DIST_T pageH)
p00.x = pageH / 2.0 - 20.0 / 72.0;
p00.y = pageW - 10.0 / 72.0;
}
- PrintNextPageNumberAt(x, y + 1, p00);
+ PrintNextPageNumberAt(x, y + 1, p00);
- // below
+ // below
if (printFormat == PORTRAIT) {
p00.y = 10.0 / 72.0;
} else {
p00.y = 10.0 / 72.0;
}
- PrintNextPageNumberAt(x, y-1, p00);
+ PrintNextPageNumberAt(x, y-1, p00);
- // right
+ // right
if (printFormat == PORTRAIT) {
p00.y = pageH / 2 + 10.0 / 72.0;
p00.x = pageW - 20.0 / 72.0;
@@ -1041,7 +1078,7 @@ PrintNextPageNumbers(int x, int y, DIST_T pageW, DIST_T pageH)
p00.y = pageW / 2 + 10.0 / 72.0;
p00.x = pageH - 20.0 / 72.0;
}
- PrintNextPageNumberAt(x+1, y, p00);
+ PrintNextPageNumberAt(x+1, y, p00);
// left
if (printFormat == PORTRAIT) {
@@ -1050,199 +1087,211 @@ PrintNextPageNumbers(int x, int y, DIST_T pageW, DIST_T pageH)
p00.x = 10.0 / 72.0;
}
PrintNextPageNumberAt(x-1, y, p00);
- return (TRUE);
+ return (TRUE);
}
static BOOL_T PrintPage(
- int x,
- int y )
+ int x,
+ int y )
{
coOrd orig, p[4], psave[4], minP, maxP;
int i;
coOrd clipOrig, clipSize;
coOrd roomSize;
- if (BITMAP(bm,x,y)) {
- orig.x = currPrintGrid.orig.x + x*currPrintGrid.size.x;
- orig.y = currPrintGrid.orig.y + y*currPrintGrid.size.y;
- if (printPhysSize) {
- orig.x += printMargin.left;
- orig.y += printMargin.bottom;
- }
- Rotate( &orig, currPrintGrid.orig, currPrintGrid.angle );
- p[0] = p[1] = p[2] = p[3] = orig;
- p[1].x = p[2].x = orig.x + currPrintGrid.size.x;
- p[2].y = p[3].y = orig.y + currPrintGrid.size.y +
- ( printGaudy ? printScale : 0.0 );
- Rotate( &p[0], orig, currPrintGrid.angle );
- Rotate( &p[1], orig, currPrintGrid.angle );
- Rotate( &p[2], orig, currPrintGrid.angle );
- Rotate( &p[3], orig, currPrintGrid.angle );
- minP = maxP = p[0];
- for (i=1; i<4; i++) {
- if (maxP.x < p[i].x) maxP.x = p[i].x;
- if (maxP.y < p[i].y) maxP.y = p[i].y;
- if (minP.x > p[i].x) minP.x = p[i].x;
- if (minP.y > p[i].y) minP.y = p[i].y;
- }
- maxP.x -= minP.x;
- maxP.y -= minP.y;
- print_d.d = page_d.d = wPrintPageStart();
- if (page_d.d == NULL)
- return FALSE;
- print_d.dpi = page_d.dpi = wDrawGetDPI( print_d.d );
- print_d.angle = currPrintGrid.angle;
- print_d.orig = orig;
- print_d.size = /*maxP*/ currPrintGrid.size;
- page_d.orig = zero;
- page_d.angle = 0.0;
- if ( printGaudy ) {
- Translate( &print_d.orig, orig, currPrintGrid.angle+180.0, printScale );
- print_d.size.y += printScale;
- }
- for (int i=0;i<4;i++) {
- psave[i] = p[i];
- }
- if (printRotate) {
- rotateCW = (printFormat != PORTRAIT);
- if (rotateCW) {
- page_d.orig.x = realPageSize.y;
- page_d.orig.y = 0.0;
- page_d.angle = -90.0;
- print_d.angle += -90.0;
- Translate( &print_d.orig, print_d.orig, currPrintGrid.angle+90, maxPageSize.x );
- } else {
- page_d.orig.x = 0.0;
- page_d.orig.y = realPageSize.x;
- page_d.angle = 90.0;
- print_d.angle += 90.0;
- Translate( &print_d.orig, print_d.orig, currPrintGrid.angle,
- maxPageSize.y+(printGaudy?printScale:0) );
- }
- page_d.size.x = print_d.size.y/printScale;
- page_d.size.y = print_d.size.x/printScale;
- print_d.size.x = currPrintGrid.size.y;
- print_d.size.y = currPrintGrid.size.x;
- } else {
- page_d.size.x = print_d.size.x/printScale;
- page_d.size.y = print_d.size.y/printScale;
- }
- wSetCursor( mainD.d, wCursorWait );
- print_d.scale = printScale;
- if (print_d.d == NULL)
- AbortProg( "wPrintPageStart" );
- clipOrig.x = clipOrig.y = 0;
- clipSize.x = maxPageSize.x/printScale;
- clipSize.y = maxPageSize.y/printScale;
- GetRoomSize( &roomSize );
- if (printGaudy) {
- PrintGaudyBox( roomSize );
- if ((!printRotate) || rotateCW) {
- clipOrig.y = 1.0;
- }
- if (printRotate && rotateCW) {
- print_d.size.x += printScale;
- }
- }
- if (printRotate) {
- wPrintClip( (clipOrig.y*print_d.dpi), (clipOrig.x*print_d.dpi),
- (clipSize.y*print_d.dpi), (clipSize.x*print_d.dpi) );
- } else {
- wPrintClip( (clipOrig.x*print_d.dpi), (clipOrig.y*print_d.dpi),
- (clipSize.x*print_d.dpi), (clipSize.y*print_d.dpi) );
- }
- p[0].x = p[3].x = 0.0;
- p[1].x = p[2].x = roomSize.x;
- p[0].y = p[1].y = 0.0;
- p[2].y = p[3].y = roomSize.y;
-
- BOOL_T left_clear = FALSE, right_clear = FALSE, base_clear = FALSE, top_clear = FALSE;
-
- if (currPrintGrid.orig.x <= -0.5*printScale) left_clear = TRUE;
- if (currPrintGrid.orig.y <= -0.5*printScale) base_clear = TRUE;
- if (clipOrig.x + clipSize.x > roomSize.x + 0.5*printScale) right_clear = TRUE;
- if (clipOrig.y + clipSize.y > roomSize.y + 0.5*printScale) top_clear = TRUE;
-
- if (printRuler != 2) { /* Not None so Edge or Every */
- DrawRuler( &print_d, p[0], p[1], 0.0, TRUE, !base_clear, wDrawColorBlack );
- DrawRuler( &print_d, p[0], p[3], 0.0, TRUE, left_clear, wDrawColorBlack );
- DrawRuler( &print_d, p[1], p[2], 0.0, TRUE, right_clear, wDrawColorBlack );
- DrawRuler( &print_d, p[3], p[2], 0.0, TRUE, !top_clear, wDrawColorBlack );
- }
- if ( printRuler==1 && currPrintGrid.angle == 0 ) { /* Every Page and not rotated origin */
- if ( !printRotate ) {
- p[2] = p[3] = print_d.orig;
- p[3].x += print_d.size.x;
- p[3].y += print_d.size.y;
- } else if ( rotateCW ) {
- p[2].x = print_d.orig.x - print_d.size.y;
- p[2].y = print_d.orig.y;
- p[3].x = print_d.orig.x;
- p[3].y = print_d.orig.y + print_d.size.x;
- } else {
- p[2].x = print_d.orig.x;
- p[2].y = print_d.orig.y - print_d.size.x;
- p[3].x = print_d.orig.x + print_d.size.y;
- p[3].y = print_d.orig.y;
- }
- if ( p[2].x > 0 )
- minP.x = p[2].x + 0.5 * print_d.scale;
- else
- minP.x = 0.0;
- if ( p[3].x < roomSize.x )
- maxP.x = p[3].x - 0.5 * print_d.scale;
- else
- maxP.x = roomSize.x;
- if ( p[2].y > 0 )
- minP.y = p[2].y + 0.5 * print_d.scale;
- else
- minP.y = 0.0;
- if ( p[3].y < roomSize.y )
- maxP.y = p[3].y - 0.5 * print_d.scale;
- else
- maxP.y = roomSize.y;
- p[0].y = 0.0;
- p[1].y = maxP.y - minP.y;
- if ( p[2].x > 0.5* print_d.scale ) {
- p[0].x = p[1].x = p[2].x + 0.5* print_d.scale;
- DrawRuler( &print_d, p[0], p[1], minP.y, TRUE, TRUE, wDrawColorBlack );
- }
- if ( p[3].x < roomSize.x - 0.5 * print_d.scale ) {
- p[0].x = p[1].x = p[3].x - 0.5 * print_d.scale;
- DrawRuler( &print_d, p[0], p[1], minP.y, TRUE, FALSE, wDrawColorBlack );
- }
- p[0].x = 0;
- p[1].x = maxP.x - minP.x;
- if ( p[2].y > 0.5 * print_d.scale ) {
- p[0].y = p[1].y = p[2].y + 0.5 * print_d.scale;
- DrawRuler( &print_d, p[0], p[1], minP.x, TRUE, FALSE, wDrawColorBlack );
- }
- if ( p[3].y < roomSize.y - 0.5 * print_d.scale) {
- p[0].y = p[1].y = p[3].y - 0.5 * print_d.scale;
- DrawRuler( &print_d, p[0], p[1], minP.x, TRUE, TRUE, wDrawColorBlack );
- }
- }
+ if (BITMAP(bm,x,y)) {
+ orig.x = currPrintGrid.orig.x + x*currPrintGrid.size.x;
+ orig.y = currPrintGrid.orig.y + y*currPrintGrid.size.y;
+ orig.x += printerMargin.left;
+ orig.y += printerMargin.bottom;
+ if (!bIgnoreMargins) {
+ orig.x -= customMargin.left;
+ orig.y -= customMargin.bottom;
+ }
+ Rotate( &orig, currPrintGrid.orig, currPrintGrid.angle );
+ p[0] = p[1] = p[2] = p[3] = orig;
+ p[1].x = p[2].x = orig.x + currPrintGrid.size.x;
+ p[2].y = p[3].y = orig.y + currPrintGrid.size.y +
+ ( printGaudy ? printScale : 0.0 );
+ Rotate( &p[0], orig, currPrintGrid.angle );
+ Rotate( &p[1], orig, currPrintGrid.angle );
+ Rotate( &p[2], orig, currPrintGrid.angle );
+ Rotate( &p[3], orig, currPrintGrid.angle );
+ minP = maxP = p[0];
+ for (i=1; i<4; i++) {
+ if (maxP.x < p[i].x) { maxP.x = p[i].x; }
+ if (maxP.y < p[i].y) { maxP.y = p[i].y; }
+ if (minP.x > p[i].x) { minP.x = p[i].x; }
+ if (minP.y > p[i].y) { minP.y = p[i].y; }
+ }
+ maxP.x -= minP.x;
+ maxP.y -= minP.y;
+ print_d.d = page_d.d = wPrintPageStart();
+ if (page_d.d == NULL) {
+ return FALSE;
+ }
+ print_d.dpi = page_d.dpi = wDrawGetDPI( print_d.d );
+ print_d.angle = currPrintGrid.angle;
+ print_d.orig = orig;
+ print_d.size = /*maxP*/ currPrintGrid.size;
+ page_d.orig = zero;
+ page_d.angle = 0.0;
+ if ( printGaudy ) {
+ Translate( &print_d.orig, orig, currPrintGrid.angle+180.0, printScale );
+ print_d.size.y += printScale;
+ }
+ for (int i=0; i<4; i++) {
+ psave[i] = p[i];
+ }
+ if (printRotate) {
+ rotateCW = (printFormat != PORTRAIT);
+ if (rotateCW) {
+ page_d.orig.x = realPageSize.y;
+ page_d.orig.y = 0.0;
+ page_d.angle = -90.0;
+ print_d.angle += -90.0;
+ Translate( &print_d.orig, print_d.orig, currPrintGrid.angle+90, maxPageSize.x );
+ } else {
+ page_d.orig.x = 0.0;
+ page_d.orig.y = realPageSize.x;
+ page_d.angle = 90.0;
+ print_d.angle += 90.0;
+ Translate( &print_d.orig, print_d.orig, currPrintGrid.angle,
+ maxPageSize.y+(printGaudy?printScale:0) );
+ }
+ page_d.size.x = print_d.size.y/printScale;
+ page_d.size.y = print_d.size.x/printScale;
+ print_d.size.x = currPrintGrid.size.y;
+ print_d.size.y = currPrintGrid.size.x;
+ } else {
+ page_d.size.x = print_d.size.x/printScale;
+ page_d.size.y = print_d.size.y/printScale;
+ }
+ wSetCursor( mainD.d, wCursorWait );
+ print_d.scale = printScale;
+ CHECK(print_d.d);
+ clipOrig.x = clipOrig.y = 0;
+ clipSize.x = maxPageSize.x/printScale;
+ clipSize.y = maxPageSize.y/printScale;
+ roomSize = mapD.size;
+ if (printGaudy) {
+ PrintGaudyBox( roomSize );
+ if ((!printRotate) || rotateCW) {
+ clipOrig.y = 1.0;
+ }
+ if (printRotate && rotateCW) {
+ print_d.size.x += printScale;
+ }
+ }
+ if (printRotate) {
+ wPrintClip( (clipOrig.y*print_d.dpi), (clipOrig.x*print_d.dpi),
+ (clipSize.y*print_d.dpi), (clipSize.x*print_d.dpi) );
+ } else {
+ wPrintClip( (clipOrig.x*print_d.dpi), (clipOrig.y*print_d.dpi),
+ (clipSize.x*print_d.dpi), (clipSize.y*print_d.dpi) );
+ }
+ p[0].x = p[3].x = 0.0;
+ p[1].x = p[2].x = roomSize.x;
+ p[0].y = p[1].y = 0.0;
+ p[2].y = p[3].y = roomSize.y;
+
+ BOOL_T left_clear = FALSE, right_clear = FALSE, base_clear = FALSE,
+ top_clear = FALSE;
+
+ if (currPrintGrid.orig.x <= -0.5*printScale) { left_clear = TRUE; }
+ if (currPrintGrid.orig.y <= -0.5*printScale) { base_clear = TRUE; }
+ if (clipOrig.x + clipSize.x > roomSize.x + 0.5*printScale) { right_clear = TRUE; }
+ if (clipOrig.y + clipSize.y > roomSize.y + 0.5*printScale) { top_clear = TRUE; }
+
+ if (printRuler != 2) { /* Not None so Edge or Every */
+ DrawRuler( &print_d, p[0], p[1], 0.0, TRUE, !base_clear, wDrawColorBlack );
+ DrawRuler( &print_d, p[0], p[3], 0.0, TRUE, left_clear, wDrawColorBlack );
+ DrawRuler( &print_d, p[1], p[2], 0.0, TRUE, right_clear, wDrawColorBlack );
+ DrawRuler( &print_d, p[3], p[2], 0.0, TRUE, !top_clear, wDrawColorBlack );
+ }
+ if ( printRuler==1
+ && currPrintGrid.angle == 0 ) { /* Every Page and not rotated origin */
+ if ( !printRotate ) {
+ p[2] = p[3] = print_d.orig;
+ p[3].x += print_d.size.x;
+ p[3].y += print_d.size.y;
+ } else if ( rotateCW ) {
+ p[2].x = print_d.orig.x - print_d.size.y;
+ p[2].y = print_d.orig.y;
+ p[3].x = print_d.orig.x;
+ p[3].y = print_d.orig.y + print_d.size.x;
+ } else {
+ p[2].x = print_d.orig.x;
+ p[2].y = print_d.orig.y - print_d.size.x;
+ p[3].x = print_d.orig.x + print_d.size.y;
+ p[3].y = print_d.orig.y;
+ }
+ if ( p[2].x > 0 ) {
+ minP.x = p[2].x + 0.5 * print_d.scale;
+ } else {
+ minP.x = 0.0;
+ }
+ if ( p[3].x < roomSize.x ) {
+ maxP.x = p[3].x - 0.5 * print_d.scale;
+ } else {
+ maxP.x = roomSize.x;
+ }
+ if ( p[2].y > 0 ) {
+ minP.y = p[2].y + 0.5 * print_d.scale;
+ } else {
+ minP.y = 0.0;
+ }
+ if ( p[3].y < roomSize.y ) {
+ maxP.y = p[3].y - 0.5 * print_d.scale;
+ } else {
+ maxP.y = roomSize.y;
+ }
+ p[0].y = 0.0;
+ p[1].y = maxP.y - minP.y;
+ if ( p[2].x > 0.5* print_d.scale ) {
+ p[0].x = p[1].x = p[2].x + 0.5* print_d.scale;
+ DrawRuler( &print_d, p[0], p[1], minP.y, TRUE, TRUE, wDrawColorBlack );
+ }
+ if ( p[3].x < roomSize.x - 0.5 * print_d.scale ) {
+ p[0].x = p[1].x = p[3].x - 0.5 * print_d.scale;
+ DrawRuler( &print_d, p[0], p[1], minP.y, TRUE, FALSE, wDrawColorBlack );
+ }
+ p[0].x = 0;
+ p[1].x = maxP.x - minP.x;
+ if ( p[2].y > 0.5 * print_d.scale ) {
+ p[0].y = p[1].y = p[2].y + 0.5 * print_d.scale;
+ DrawRuler( &print_d, p[0], p[1], minP.x, TRUE, FALSE, wDrawColorBlack );
+ }
+ if ( p[3].y < roomSize.y - 0.5 * print_d.scale) {
+ p[0].y = p[1].y = p[3].y - 0.5 * print_d.scale;
+ DrawRuler( &print_d, p[0], p[1], minP.x, TRUE, TRUE, wDrawColorBlack );
+ }
+ }
- if (printGrid)
- DrawSnapGrid( &print_d, mapD.size, FALSE );
- roadbedWidth = printRoadbed?printRoadbedWidth:0.0;
- if (printCenterLine) {
- print_d.options |= DC_CENTERLINE;
- } else {
- print_d.options &= ~DC_CENTERLINE;
- }
- DrawTracks( &print_d, print_d.scale, minP, maxP );
- if (printRegistrationMarks && printScale == 1)
- DrawRegistrationMarks( &print_d );
- if (printRegistrationMarks)
- PrintPlainBox( x, y, psave );
-
- if (printPageNumbers) {
- PrintPageNumber(x, y, page_d.size.x, page_d.size.y);
- PrintNextPageNumbers(x, y, page_d.size.x, page_d.size.y);
- }
- if ( !wPrintPageEnd( print_d.d ) )
- return FALSE;
+ if (printGrid) {
+ DrawSnapGrid( &print_d, mapD.size, FALSE );
+ }
+ roadbedWidth = printRoadbed?printRoadbedWidth:0.0;
+ if (printCenterLine) {
+ print_d.options |= DC_CENTERLINE;
+ } else {
+ print_d.options &= ~DC_CENTERLINE;
+ }
+ DrawTracks( &print_d, print_d.scale, minP, maxP );
+ if (printRegistrationMarks && printScale == 1) {
+ DrawRegistrationMarks( &print_d );
+ }
+ if (printRegistrationMarks) {
+ PrintPlainBox( x, y, psave );
+ }
+
+ if (printPageNumbers) {
+ PrintPageNumber(x, y, page_d.size.x, page_d.size.y);
+ PrintNextPageNumbers(x, y, page_d.size.x, page_d.size.y);
+ }
+ if ( !wPrintPageEnd( print_d.d ) ) {
+ return FALSE;
+ }
}
return TRUE;
}
@@ -1272,23 +1321,25 @@ static void DoPrintPrint( void * junk )
wSetCursor( mainD.d, defaultCursor );
return;
}
- if (copies <= 0)
+ if (copies <= 0) {
copies = 1;
+ }
for ( copy=1; copy<=copies; copy++) {
if ( printOrder == 0 ) {
for (x=bm.x0; x<bm.x1; x++)
for (y=bm.y1-1; y>=bm.y0; y--)
- if (!PrintPage( x, y )) goto quitPrinting;
+ if (!PrintPage( x, y )) { goto quitPrinting; }
} else {
for (y=bm.y0; y<bm.y1; y++)
for (x=bm.x0; x<bm.x1; x++)
- if (!PrintPage( x, y )) goto quitPrinting;
+ if (!PrintPage( x, y )) { goto quitPrinting; }
}
for (y=bm.y0; y<bm.y1; y++)
for (x=bm.x0; x<bm.x1; x++)
if (BITMAP(bm,x,y)) {
- if (copy >= copies)
+ if (copy >= copies) {
BITMAP(bm,x,y) = 0;
+ }
}
}
@@ -1329,11 +1380,14 @@ static void PrintGridRotate( void * pangle )
static void PrintChange( long changes )
{
- if ( (changes&(CHANGE_MAP|CHANGE_UNITS|CHANGE_GRID))==0 || printWin==NULL || !wWinIsVisible(printWin) )
+ if ( (changes&(CHANGE_MAP|CHANGE_UNITS|CHANGE_GRID))==0 || printWin==NULL
+ || !wWinIsVisible(printWin) ) {
return;
+ }
newPrintGrid = currPrintGrid;
- if (!GridIsVisible())
+ if (!GridIsVisible()) {
printGrid = 0;
+ }
ParamLoadControls( &printPG );
ParamControlActive( &printPG, I_GRID, GridIsVisible() );
PrintEnableControls();
@@ -1341,22 +1395,23 @@ static void PrintChange( long changes )
static void PrintDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
- if ( inx < 0 ) return;
- if ( pg->paramPtr[inx].context == I2VP(1) )
+ if ( inx < 0 ) { return; }
+ if ( pg->paramPtr[inx].context == I2VP(1) ) {
DoPrintScale();
- else if ( pg->paramPtr[inx].context == I2VP(2) )
+ } else if ( pg->paramPtr[inx].context == I2VP(2) ) {
PrintUpdate( inx );
+ }
ParamControlActive( &printPG, I_RULER, currPrintGrid.angle == 0 );
TempRedraw(); // PrintDlgUpdate
}
static STATUS_T CmdPrint(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
/*
* Print command:
*
@@ -1372,33 +1427,46 @@ static STATUS_T CmdPrint(
switch (action) {
case C_START:
- if (!wPrintInit())
+ if (!wPrintInit()) {
return C_TERMINATE;
+ }
printScale = iPrintScale;
if (printWin == NULL) {
rminScale_999.low = 1;
- if (printScale < rminScale_999.low)
+ if (printScale < rminScale_999.low) {
printScale = rminScale_999.low;
+ }
print_d.scale = printScale;
- printWin = ParamCreateDialog( &printPG, MakeWindowTitle(_("Print")), _("Print"), DoPrintPrint, (paramActionCancelProc)Reset, TRUE, NULL, 0, PrintDlgUpdate );
+ printWin = ParamCreateDialog( &printPG, MakeWindowTitle(_("Print")), _("Print"),
+ DoPrintPrint, (paramActionCancelProc)Reset, TRUE, NULL, 0, PrintDlgUpdate );
}
sPrinterName = wPrintGetName();
- SetMargins();
+ while ( *sPrinterName == '\0' ) {
+ int rc = NoticeMessage( MSG_NO_PRINTER_SELECTED, _("Ok"), _("Cancel") );
+ if ( rc <= 0 ) {
+ return C_TERMINATE;
+ }
+ DoPrintSetup();
+ }
+ GetMargins();
wShow( printWin );
- SetPageSize( TRUE );
+ SetMaxPageSize( TRUE );
if (currPrintGrid.size.x == 0.0) {
currPrintGrid.size.x = maxPageSize.x;
currPrintGrid.size.y = maxPageSize.y;
}
- if (currPrintGrid.size.x >= maxPageSize.x)
+ if (currPrintGrid.size.x >= maxPageSize.x) {
currPrintGrid.size.x = maxPageSize.x;
- if (currPrintGrid.size.y >= maxPageSize.y)
+ }
+ if (currPrintGrid.size.y >= maxPageSize.y) {
currPrintGrid.size.y = maxPageSize.y;
+ }
newPrintGrid = currPrintGrid;
ParamLoadControls( &printPG );
pageCount = 0;
UpdatePageCount();
-LOG( log_print, 2, ( "Page size = %0.3f %0.3f\n", currPrintGrid.size.x, currPrintGrid.size.y ) )
+ LOG( log_print, 2, ( "Page size = %0.3f %0.3f\n", currPrintGrid.size.x,
+ currPrintGrid.size.y ) )
PrintChange( CHANGE_MAP|CHANGE_UNITS );
ChangeDim();
InfoMessage( _("Select pages to print, or drag to move print grid") );
@@ -1470,8 +1538,9 @@ LOG( log_print, 2, ( "Page size = %0.3f %0.3f\n", currPrintGrid.size.x, currPrin
return C_TERMINATE;
case C_CANCEL:
- if (printWin == NULL)
+ if (printWin == NULL) {
return C_TERMINATE;
+ }
PrintClear();
wHide( printWin );
return C_TERMINATE;
@@ -1491,7 +1560,7 @@ LOG( log_print, 2, ( "Page size = %0.3f %0.3f\n", currPrintGrid.size.x, currPrin
}
-#include "bitmaps/doc-print.xpm"
+#include "bitmaps/doc-print.xpm3"
EXPORT wIndex_t InitCmdPrint( wMenu_p menu )
{
@@ -1501,8 +1570,10 @@ EXPORT wIndex_t InitCmdPrint( wMenu_p menu )
RegisterChangeNotification( PrintChange );
printGridPopupM = MenuRegister( "Print Grid Rotate" );
AddRotateMenu( printGridPopupM, PrintGridRotate );
- ParamRegister( &printMarginPG );
- return AddMenuButton( menu, CmdPrint, "cmdPrint", N_("Print..."), wIconCreatePixMap(doc_print_xpm[iconSize]), LEVEL0, IC_LCLICK|IC_POPUP3|IC_CMDMENU, ACCL_PRINT, NULL );
+ ParamRegister( &customMarginPG );
+ return AddMenuButton( menu, CmdPrint, "cmdPrint", N_("Print..."),
+ wIconCreatePixMap(doc_print_xpm3[iconSize]), LEVEL0,
+ IC_LCLICK|IC_POPUP3|IC_CMDMENU, ACCL_PRINT, NULL );
}
/*****************************************************************************
@@ -1514,7 +1585,7 @@ EXPORT wIndex_t InitCmdPrint( wMenu_p menu )
wDrawable_t printD, mainD;
-void PrintPage( void * d, wIndex_t mode , wIndex_t x, wIndex_t y )
+void PrintPage( void * d, wIndex_t mode, wIndex_t x, wIndex_t y )
{
lprintf( "printPage %dx%d at (%0.3f %0.3f)\n", x, y, orig.x, orig.y );
}
@@ -1541,7 +1612,7 @@ void DumpMap( char * f, ANGLE_T a, ANGLE_T b )
} else {
lprintf( " ");
}
- lprintf( "\n");
+ lprintf( "\n");
}
}
@@ -1553,24 +1624,24 @@ struct {
wAction_t cmd;
coOrd pos;
} cmds[] = {
- { C_START, 0, 0 },
- { C_DOWN, 20.5, 12.4 },
- { C_MOVE, 20.5, 12.5 },
- { C_MOVE, 20.5, 12.3 },
- { C_MOVE, 39.3, 69.4 },
- { C_MOVE, 39.4, 4.5 },
- { C_MOVE, 2.4, 4.5 },
- { C_MOVE, 2.4, 50.3 },
- { C_UP, 0, 0 },
- { C_DOWN, 20.5, 12.4 },
- { C_UP, 0, 0 },
- { C_DOWN, 32.5, 4.4 },
- { C_UP, 0, 0 },
- { C_PRINT, 0, 0, },
- { C_START, 0, 0, },
- { C_DOWN, 45.3, 43.5 },
- { C_CANCEL, 0, 0 }
- };
+ { C_START, 0, 0 },
+ { C_DOWN, 20.5, 12.4 },
+ { C_MOVE, 20.5, 12.5 },
+ { C_MOVE, 20.5, 12.3 },
+ { C_MOVE, 39.3, 69.4 },
+ { C_MOVE, 39.4, 4.5 },
+ { C_MOVE, 2.4, 4.5 },
+ { C_MOVE, 2.4, 50.3 },
+ { C_UP, 0, 0 },
+ { C_DOWN, 20.5, 12.4 },
+ { C_UP, 0, 0 },
+ { C_DOWN, 32.5, 4.4 },
+ { C_UP, 0, 0 },
+ { C_PRINT, 0, 0, },
+ { C_START, 0, 0, },
+ { C_DOWN, 45.3, 43.5 },
+ { C_CANCEL, 0, 0 }
+};
main( INT_T argc, char * argv[] )
{
diff --git a/app/bin/cprofile.c b/app/bin/cprofile.c
index 433e1d5..ba51383 100644
--- a/app/bin/cprofile.c
+++ b/app/bin/cprofile.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 "custom.h"
@@ -102,9 +102,9 @@ static BOOL_T printVert = TRUE;
static wMenu_p profilePopupM;
static track_p profilePopupTrk;
static EPINX_T profilePopupEp;
-static wMenuToggle_p profilePopupToggles[3];
+static wMenuToggle_p profilePopupToggles[3];
-static int log_profile = 0;
+static int log_profile = 0;
#define LABELH (labelH*fontSize/screenProfileFontSize)
#define LABELW (labelW*fontSize/screenProfileFontSize)
@@ -113,10 +113,10 @@ static int log_profile = 0;
#define PBR(FS) (1.0*(labelW*(FS)/screenProfileFontSize+3.0/mainD.dpi))
#define PBL(FS) (1.0*(labelW*(FS)/screenProfileFontSize+3.0/mainD.dpi))
static FLOAT_T labelH;
-static FLOAT_T labelW;
+static FLOAT_T labelW;
-track_p pathStartTrk;
+track_p pathStartTrk;
EPINX_T pathStartEp;
track_p pathEndTrk;
EPINX_T pathEndEp;
@@ -125,33 +125,33 @@ EPINX_T pathEndEp;
#define NOP
typedef struct {
- track_p trk;
- EPINX_T ep;
- DIST_T elev;
- DIST_T dist;
- BOOL_T defined; /* from prev PE to current */
+ track_p trk;
+ EPINX_T ep;
+ DIST_T elev;
+ DIST_T dist;
+ BOOL_T defined; /* from prev PE to current */
} profElem_t, *profElem_p;
-static dynArr_t profElem_da;
+static dynArr_t profElem_da;
static profElem_p copyOfprofElem;
-#define profElem(N) DYNARR_N( profElem_t, profElem_da, N )
+#define profElem(N) DYNARR_N( profElem_t, profElem_da, N )
typedef struct {
- DIST_T dist;
- char * name;
+ DIST_T dist;
+ char * name;
} station_t, *station_p;
-static dynArr_t station_da;
+static dynArr_t station_da;
#define station(N) DYNARR_N( station_t, station_da, N )
struct {
- DIST_T totalD, minE;
- int minC, maxC, incrC;
- DIST_T scaleX, scaleY;
-} prof;
+ DIST_T totalD, minE;
+ int minC, maxC, incrC;
+ DIST_T scaleX, scaleY;
+} prof;
/**
@@ -161,17 +161,14 @@ struct {
static void
CreateCopyProfileElements()
{
- if (copyOfprofElem) {
- MyFree(copyOfprofElem);
- }
-
- copyOfprofElem = MyMalloc(profElem_da.cnt * sizeof(profElem_t));
- if (!copyOfprofElem) {
- AbortProg("Couldn't allocate memory for profile copy\n");
- }
- for (int i = 0; i < profElem_da.cnt; i++) {
- copyOfprofElem[i] = profElem(i);
- }
+ if (copyOfprofElem) {
+ MyFree(copyOfprofElem);
+ }
+
+ copyOfprofElem = MyMalloc(profElem_da.cnt * sizeof(profElem_t));
+ for (int i = 0; i < profElem_da.cnt; i++) {
+ copyOfprofElem[i] = profElem(i);
+ }
}
/**
@@ -181,10 +178,10 @@ CreateCopyProfileElements()
static void
DestroyCopyOfProfileElements()
{
- if (copyOfprofElem) {
- MyFree(copyOfprofElem);
- copyOfprofElem = NULL;
- }
+ if (copyOfprofElem) {
+ MyFree(copyOfprofElem);
+ copyOfprofElem = NULL;
+ }
}
@@ -198,118 +195,118 @@ DestroyCopyOfProfileElements()
static void DrawProfile(drawCmd_p D, wFontSize_t fontSize, BOOL_T printVert)
{
- coOrd pl, pt, pb;
- int inx;
- DIST_T grade;
- wFont_p fp;
- static dynArr_t points_da;
+ coOrd pl, pt, pb;
+ int inx;
+ DIST_T grade;
+ wFont_p fp;
+ static dynArr_t points_da;
#define points(N) DYNARR_N( coOrd, points_da, N )
- wDrawWidth lw;
- station_p ps;
- coOrd textsize;
-
- lw = (wDrawWidth)(D->dpi*1.0/mainD.dpi);
- fp = wStandardFont(F_HELV, FALSE, FALSE);
- DYNARR_RESET(pts_t, points_da);
-
- pb.x = pt.x = 0;
- pb.y = prof.minE;
- pt.y = GetDim(prof.maxC);
- DrawLine(D, pb, pt, 0, snapGridColor);
- pb.x = pt.x = prof.totalD;
- DrawLine(D, pb, pt, 0, snapGridColor);
- pb.x = 0;
- pt.x = prof.totalD;
-
- // Draw horizontal grid and y scale
- for (inx=prof.minC; inx<=prof.maxC; inx+=prof.incrC) {
- coOrd textsize;
- // grid line
- pt.y = pb.y = GetDim(inx);
- DrawLine(D, pb, pt, 0, snapGridColor);
- // scale
- sprintf(message, "%d", inx);
- DrawTextSize(&mainD, message, wStandardFont(F_HELV, FALSE, FALSE),
- screenProfileFontSize, FALSE, &textsize);
- pl.x = ((-3.0/mainD.dpi) - textsize.y*0.5 - textsize.x) / prof.scaleX*D->scale;
- pl.y = pb.y-LABELH/2/prof.scaleY*D->scale;
-
- DrawString(D, pl, 0.0, message, fp, fontSize*D->scale, borderColor);
- }
-
- // show the measurement units
- sprintf(message, "%s", units == UNITS_ENGLISH ? "in." : "cm");
- DrawTextSize(&mainD, message, wStandardFont(F_HELV, FALSE, FALSE),
- screenProfileFontSize, FALSE, &textsize);
- pl.x = ((-3.0 / mainD.dpi) - textsize.y*0.5 - textsize.x) /
- prof.scaleX*D->scale;
- pl.y += LABELH * 1.5 / prof.scaleY*D->scale;
- DrawString(D, pl, 0.0, message, fp, fontSize*D->scale, borderColor);
-
- if (profElem_da.cnt <= 0) {
- return;
- }
-
- for (inx=0; inx<profElem_da.cnt; inx++) {
- pt.y = profElem(inx).elev;
- pt.x = profElem(inx).dist;
- DYNARR_APPEND(pts_t, points_da, 10);
- points(points_da.cnt-1) = pt;
- }
- pb.y = pt.y = prof.minE;
- if (points_da.cnt > 1) {
- DYNARR_APPEND(coOrd, points_da, 10);
- pt.x = prof.totalD;
- points(points_da.cnt-1) = pt;
- DYNARR_APPEND(pts_t, points_da, 10);
- pb.x = 0;
- points(points_da.cnt-1) = pb;
- DrawPoly(D, points_da.cnt, points_da.ptr, NULL, profileColorFill, 1, DRAW_FILL);
- }
-
- pt.y = prof.minE-(2*LABELH+3.0/mainD.dpi)/prof.scaleY*D->scale;
- for (inx=0; inx<station_da.cnt; inx++) {
- ps = &station(inx);
- DrawTextSize(&mainD, ps->name, fp, fontSize, FALSE, &textsize);
- pt.x = ps->dist - textsize.x/2.0/prof.scaleX*D->scale;
- if (pt.x < -PBR(screenProfileFontSize)) {
- pt.x = -(PBR(screenProfileFontSize)-3/mainD.dpi)/prof.scaleX*D->scale;
- } else if (pt.x+textsize.x > prof.totalD) {
- pt.x = prof.totalD-(textsize.x-3/mainD.dpi)/prof.scaleX*D->scale;
- }
- DrawString(D, pt, 0.0, ps->name, fp, fontSize*D->scale, borderColor);
- }
-
- pb.x = 0.0;
- pb.y = prof.minE;
+ wDrawWidth lw;
+ station_p ps;
+ coOrd textsize;
+
+ lw = (wDrawWidth)(D->dpi*1.0/mainD.dpi);
+ fp = wStandardFont(F_HELV, FALSE, FALSE);
+ DYNARR_RESET(pts_t, points_da);
+
+ pb.x = pt.x = 0;
+ pb.y = prof.minE;
+ pt.y = GetDim(prof.maxC);
+ DrawLine(D, pb, pt, 0, snapGridColor);
+ pb.x = pt.x = prof.totalD;
+ DrawLine(D, pb, pt, 0, snapGridColor);
+ pb.x = 0;
+ pt.x = prof.totalD;
+
+ // Draw horizontal grid and y scale
+ for (inx=prof.minC; inx<=prof.maxC; inx+=prof.incrC) {
+ coOrd textsize;
+ // grid line
+ pt.y = pb.y = GetDim(inx);
+ DrawLine(D, pb, pt, 0, snapGridColor);
+ // scale
+ sprintf(message, "%d", inx);
+ DrawTextSize(&mainD, message, wStandardFont(F_HELV, FALSE, FALSE),
+ screenProfileFontSize, FALSE, &textsize);
+ pl.x = ((-3.0/mainD.dpi) - textsize.y*0.5 - textsize.x) / prof.scaleX*D->scale;
+ pl.y = pb.y-LABELH/2/prof.scaleY*D->scale;
+
+ DrawString(D, pl, 0.0, message, fp, fontSize*D->scale, borderColor);
+ }
+
+ // show the measurement units
+ sprintf(message, "%s", units == UNITS_ENGLISH ? "in." : "cm");
+ DrawTextSize(&mainD, message, wStandardFont(F_HELV, FALSE, FALSE),
+ screenProfileFontSize, FALSE, &textsize);
+ pl.x = ((-3.0 / mainD.dpi) - textsize.y*0.5 - textsize.x) /
+ prof.scaleX*D->scale;
+ pl.y += LABELH * 1.5 / prof.scaleY*D->scale;
+ DrawString(D, pl, 0.0, message, fp, fontSize*D->scale, borderColor);
+
+ if (profElem_da.cnt <= 0) {
+ return;
+ }
+
+ for (inx=0; inx<profElem_da.cnt; inx++) {
+ pt.y = profElem(inx).elev;
+ pt.x = profElem(inx).dist;
+ DYNARR_APPEND(pts_t, points_da, 10);
+ points(points_da.cnt-1) = pt;
+ }
+ pb.y = pt.y = prof.minE;
+ if (points_da.cnt > 1) {
+ DYNARR_APPEND(coOrd, points_da, 10);
+ pt.x = prof.totalD;
+ points(points_da.cnt-1) = pt;
+ DYNARR_APPEND(pts_t, points_da, 10);
+ pb.x = 0;
+ points(points_da.cnt-1) = pb;
+ DrawPoly(D, points_da.cnt, &points(0), NULL, profileColorFill, 1, DRAW_FILL);
+ }
+
+ pt.y = prof.minE-(2*LABELH+3.0/mainD.dpi)/prof.scaleY*D->scale;
+ for (inx=0; inx<station_da.cnt; inx++) {
+ ps = &station(inx);
+ DrawTextSize(&mainD, ps->name, fp, fontSize, FALSE, &textsize);
+ pt.x = ps->dist - textsize.x/2.0/prof.scaleX*D->scale;
+ if (pt.x < -PBR(screenProfileFontSize)) {
+ pt.x = -(PBR(screenProfileFontSize)-3/mainD.dpi)/prof.scaleX*D->scale;
+ } else if (pt.x+textsize.x > prof.totalD) {
+ pt.x = prof.totalD-(textsize.x-3/mainD.dpi)/prof.scaleX*D->scale;
+ }
+ DrawString(D, pt, 0.0, ps->name, fp, fontSize*D->scale, borderColor);
+ }
+
+ pb.x = 0.0;
+ pb.y = prof.minE;
// mark the starting point for the profile
- pt = points(0);
- DrawLine(D, pb, pt, lw, snapGridColor);
+ pt = points(0);
+ DrawLine(D, pb, pt, lw, snapGridColor);
DrawArc(D, pt, 0.05, 0, 360, TRUE, 2, wDrawColorGrey40);
- if (units==UNITS_ENGLISH) {
- sprintf(message, "%0.1f", PutDim(profElem(0).elev)+0.05);
- } else {
- sprintf(message, "%0.1f", PutDim(profElem(0).elev)+0.05);
- }
- if (printVert) {
- pl.x = pt.x + LABELH/2.0/prof.scaleX*D->scale;
- pl.y = pt.y + 2.0/mainD.dpi/prof.scaleY*D->scale + GetDim(prof.incrC) / 16;;
- DrawString(D, pl, 270.0, message, fp, fontSize*D->scale, borderColor);
- } else {
- pl.x = pt.x+2.0/mainD.dpi/prof.scaleX*D->scale + GetDim(prof.incrC) / 16;;
- pl.y = pt.y;
- if (profElem_da.cnt>1 && profElem(0).elev < profElem(1).elev) {
- pl.y -= LABELH/prof.scaleY*D->scale;
- }
- DrawString(D, pl, 0.0, message, fp, fontSize*D->scale, borderColor);
- }
- pl = pt;
-
- for (inx=1; inx<profElem_da.cnt; inx++) {
- pt.y = profElem(inx).elev;
- pb.x = pt.x = profElem(inx).dist;
- pt = points(inx);
+ if (units==UNITS_ENGLISH) {
+ sprintf(message, "%0.1f", PutDim(profElem(0).elev)+0.05);
+ } else {
+ sprintf(message, "%0.1f", PutDim(profElem(0).elev)+0.05);
+ }
+ if (printVert) {
+ pl.x = pt.x + LABELH/2.0/prof.scaleX*D->scale;
+ pl.y = pt.y + 2.0/mainD.dpi/prof.scaleY*D->scale + GetDim(prof.incrC) / 16;;
+ DrawString(D, pl, 270.0, message, fp, fontSize*D->scale, borderColor);
+ } else {
+ pl.x = pt.x+2.0/mainD.dpi/prof.scaleX*D->scale + GetDim(prof.incrC) / 16;;
+ pl.y = pt.y;
+ if (profElem_da.cnt>1 && profElem(0).elev < profElem(1).elev) {
+ pl.y -= LABELH/prof.scaleY*D->scale;
+ }
+ DrawString(D, pl, 0.0, message, fp, fontSize*D->scale, borderColor);
+ }
+ pl = pt;
+
+ for (inx=1; inx<profElem_da.cnt; inx++) {
+ pt.y = profElem(inx).elev;
+ pb.x = pt.x = profElem(inx).dist;
+ pt = points(inx);
// draw line to x-axis for intermediate elevation points
if (inx != profElem_da.cnt - 1) {
@@ -322,62 +319,62 @@ static void DrawProfile(drawCmd_p D, wFontSize_t fontSize, BOOL_T printVert)
// draw grade line
DrawLine(D, pl, pt, lw*2, (profElem(inx).defined ? profileColorDefinedProfile :
- profileColorUndefinedProfile));
- // draw the markers
- DrawArc(D, pt, 0.05, 0, 360, TRUE, 2, wDrawColorGrey40);
-
- if (profElem(inx).dist > 0.1) {
- grade = fabs(profElem(inx).elev-profElem(inx-1).elev)/
- (profElem(inx).dist-profElem(inx-1).dist);
- sprintf(message, "%0.1f%%", round(grade*1000.0)/10.0);
- DrawTextSize(&mainD, message, fp, fontSize, FALSE, &textsize);
- pl.x = (points(inx).x+points(inx-1).x)/2.0;
- pl.y = (points(inx).y+points(inx-1).y)/2.0;
- if (printVert) {
- pl.x += (LABELH/2)/prof.scaleX*D->scale;
- pl.y += ((LABELH/2)*grade/prof.scaleX + 2.0/mainD.dpi/prof.scaleY)*D->scale;
- DrawString(D, pl, 270.0, message, fp, fontSize*D->scale, borderColor);
- } else {
- pl.x -= (textsize.x/2)/prof.scaleX*D->scale;
- pl.y += (textsize.x/2)*grade/prof.scaleX*D->scale;
- DrawString(D, pl, 0.0, message, fp, fontSize*D->scale, borderColor);
- }
- }
- if (units==UNITS_ENGLISH) {
- if (prof.totalD > 240) {
- sprintf(message, "%0.1f'", (round((profElem(inx).dist/12.0)*10.0)/10.0));
- } else {
- sprintf(message, "%d'%0.1f\"", (int)floor((profElem(inx).dist)/12.0),
- round(fmod(profElem(inx).dist,12.0)*10.0)/10.0);
- }
- } else {
- if (PutDim(prof.totalD) > 10000) {
- sprintf(message, "%0.1fm", (round(PutDim(profElem(inx).dist)/10.0)/10.0));
- } else if (PutDim(prof.totalD) > 100) {
- sprintf(message, "%0.2fm", (round(PutDim(profElem(inx).dist))/100.0));
- } else {
- sprintf(message, "%0.1fcm", round(PutDim(profElem(inx).dist)+0.5));
- }
- }
- DrawTextSize(&mainD, message, fp, fontSize, FALSE, &textsize);
- pl.x = pb.x-(textsize.x/2)/prof.scaleX*D->scale;
- pl.y = prof.minE-(LABELH+3.0/mainD.dpi)/prof.scaleY*D->scale;
- DrawString(D, pl, 0.0, message, fp, fontSize*D->scale, borderColor);
- sprintf(message, "%0.1f", round(PutDim(profElem(inx).elev)*100.0)/100.0);
- if (printVert) {
- pl.x = pt.x + LABELH/2.0/prof.scaleX*D->scale;
- pl.y = pt.y + 2.0/mainD.dpi/prof.scaleY*D->scale+GetDim(prof.incrC) / 16;
- DrawString(D, pl, 270.0, message, fp, fontSize*D->scale, borderColor);
- } else {
- pl.x = pt.x + 2.0/mainD.dpi/prof.scaleX*D->scale + GetDim(prof.incrC) / 16;
- pl.y = pt.y;
- if (inx != profElem_da.cnt-1 && profElem(inx).elev < profElem(inx+1).elev) {
- pl.y -= LABELH/prof.scaleY*D->scale;
- }
- DrawString(D, pl, 0.0, message, fp, fontSize*D->scale, borderColor);
- }
- pl = pt;
- }
+ profileColorUndefinedProfile));
+ // draw the markers
+ DrawArc(D, pt, 0.05, 0, 360, TRUE, 2, wDrawColorGrey40);
+
+ if (profElem(inx).dist > 0.1) {
+ grade = fabs(profElem(inx).elev-profElem(inx-1).elev)/
+ (profElem(inx).dist-profElem(inx-1).dist);
+ sprintf(message, "%0.1f%%", round(grade*1000.0)/10.0);
+ DrawTextSize(&mainD, message, fp, fontSize, FALSE, &textsize);
+ pl.x = (points(inx).x+points(inx-1).x)/2.0;
+ pl.y = (points(inx).y+points(inx-1).y)/2.0;
+ if (printVert) {
+ pl.x += (LABELH/2)/prof.scaleX*D->scale;
+ pl.y += ((LABELH/2)*grade/prof.scaleX + 2.0/mainD.dpi/prof.scaleY)*D->scale;
+ DrawString(D, pl, 270.0, message, fp, fontSize*D->scale, borderColor);
+ } else {
+ pl.x -= (textsize.x/2)/prof.scaleX*D->scale;
+ pl.y += (textsize.x/2)*grade/prof.scaleX*D->scale;
+ DrawString(D, pl, 0.0, message, fp, fontSize*D->scale, borderColor);
+ }
+ }
+ if (units==UNITS_ENGLISH) {
+ if (prof.totalD > 240) {
+ sprintf(message, "%0.1f'", (round((profElem(inx).dist/12.0)*10.0)/10.0));
+ } else {
+ sprintf(message, "%d'%0.1f\"", (int)floor((profElem(inx).dist)/12.0),
+ round(fmod(profElem(inx).dist,12.0)*10.0)/10.0);
+ }
+ } else {
+ if (PutDim(prof.totalD) > 10000) {
+ sprintf(message, "%0.1fm", (round(PutDim(profElem(inx).dist)/10.0)/10.0));
+ } else if (PutDim(prof.totalD) > 100) {
+ sprintf(message, "%0.2fm", (round(PutDim(profElem(inx).dist))/100.0));
+ } else {
+ sprintf(message, "%0.1fcm", round(PutDim(profElem(inx).dist)+0.5));
+ }
+ }
+ DrawTextSize(&mainD, message, fp, fontSize, FALSE, &textsize);
+ pl.x = pb.x-(textsize.x/2)/prof.scaleX*D->scale;
+ pl.y = prof.minE-(LABELH+3.0/mainD.dpi)/prof.scaleY*D->scale;
+ DrawString(D, pl, 0.0, message, fp, fontSize*D->scale, borderColor);
+ sprintf(message, "%0.1f", round(PutDim(profElem(inx).elev)*100.0)/100.0);
+ if (printVert) {
+ pl.x = pt.x + LABELH/2.0/prof.scaleX*D->scale;
+ pl.y = pt.y + 2.0/mainD.dpi/prof.scaleY*D->scale+GetDim(prof.incrC) / 16;
+ DrawString(D, pl, 270.0, message, fp, fontSize*D->scale, borderColor);
+ } else {
+ pl.x = pt.x + 2.0/mainD.dpi/prof.scaleX*D->scale + GetDim(prof.incrC) / 16;
+ pl.y = pt.y;
+ if (inx != profElem_da.cnt-1 && profElem(inx).elev < profElem(inx+1).elev) {
+ pl.y -= LABELH/prof.scaleY*D->scale;
+ }
+ DrawString(D, pl, 0.0, message, fp, fontSize*D->scale, borderColor);
+ }
+ pl = pt;
+ }
}
@@ -385,206 +382,207 @@ static void DrawProfile(drawCmd_p D, wFontSize_t fontSize, BOOL_T printVert)
static void ProfilePix2CoOrd(drawCmd_p, wDrawPix_t, wDrawPix_t, coOrd *);
static void ProfileCoOrd2Pix(drawCmd_p, coOrd, wDrawPix_t*, wDrawPix_t*);
static drawCmd_t screenProfileD = {
- NULL,
- &screenDrawFuncs,
+ NULL,
+ &screenDrawFuncs,
DC_NOCLIP,
- 1.0,
- 0.0,
- {0.0,0.0}, {0.0,0.0},
- ProfilePix2CoOrd, ProfileCoOrd2Pix
+ 1.0,
+ 0.0,
+ {0.0,0.0}, {0.0,0.0},
+ ProfilePix2CoOrd, ProfileCoOrd2Pix
};
static void ProfilePix2CoOrd(
- drawCmd_p d,
- wDrawPix_t xx,
- wDrawPix_t yy,
- coOrd * pos)
+ drawCmd_p d,
+ wDrawPix_t xx,
+ wDrawPix_t yy,
+ coOrd * pos)
{
- pos->x = (xx/d->dpi+d->orig.x)/prof.scaleX;
- pos->y = (yy/d->dpi+d->orig.y)/prof.scaleY+prof.minE;
+ pos->x = (xx/d->dpi+d->orig.x)/prof.scaleX;
+ pos->y = (yy/d->dpi+d->orig.y)/prof.scaleY+prof.minE;
}
static void ProfileCoOrd2Pix(
- drawCmd_p d,
- coOrd pos,
- wDrawPix_t *xx,
- wDrawPix_t *yy)
+ drawCmd_p d,
+ coOrd pos,
+ wDrawPix_t *xx,
+ wDrawPix_t *yy)
{
- wDrawPix_t x, y;
- x = ((((pos.x*prof.scaleX)/d->scale-d->orig.x)*d->dpi+0.5));
- y = (((((pos.y-prof.minE)*prof.scaleY)/d->scale-d->orig.y)*d->dpi+0.5));
- if (d->angle == 0) {
- *xx = x;
- *yy = y;
- } else if (d->angle == -90.0) {
- /* L->P */
- *xx = y;
- *yy = -x;
- } else {
- /* P->L */
- *xx = -y;
- *yy = x;
- }
+ wDrawPix_t x, y;
+ x = ((((pos.x*prof.scaleX)/d->scale-d->orig.x)*d->dpi+0.5));
+ y = (((((pos.y-prof.minE)*prof.scaleY)/d->scale-d->orig.y)*d->dpi+0.5));
+ if (d->angle == 0) {
+ *xx = x;
+ *yy = y;
+ } else if (d->angle == -90.0) {
+ /* L->P */
+ *xx = y;
+ *yy = -x;
+ } else {
+ /* P->L */
+ *xx = -y;
+ *yy = x;
+ }
}
-/**
- * Redraw profile window
+/**
+ * Redraw profile window
*/
-static void RedrawProfileW( wDraw_p d, void * context, wWinPix_t x, wWinPix_t y )
+static void RedrawProfileW( wDraw_p d, void * context, wWinPix_t x,
+ wWinPix_t y )
{
- wWinPix_t ww, hh;
- coOrd size;
- int divC;
- DIST_T maxE, rngE;
- profElem_t *p;
- wFont_p fp;
- POS_T w;
- coOrd textsize;
- char *pTestString;
-
- wDrawDelayUpdate(screenProfileD.d, TRUE);
+ wWinPix_t ww, hh;
+ coOrd size;
+ int divC;
+ DIST_T maxE, rngE;
+ profElem_t *p;
+ wFont_p fp;
+ POS_T w;
+ coOrd textsize;
+ char *pTestString;
+
+ wDrawDelayUpdate(screenProfileD.d, TRUE);
wDrawClear(screenProfileD.d);
// get the size of the window area in pixels and convert to inches
- wDrawGetSize(screenProfileD.d, &ww, &hh);
- screenProfileD.size.x = (ww)/screenProfileD.dpi;
- screenProfileD.size.y = (hh)/screenProfileD.dpi;
+ wDrawGetSize(screenProfileD.d, &ww, &hh);
+ screenProfileD.size.x = (ww)/screenProfileD.dpi;
+ screenProfileD.size.y = (hh)/screenProfileD.dpi;
// calculate positions for labels???
fp = wStandardFont(F_HELV, FALSE, FALSE);
screenProfileD.orig.x = -PBL(screenProfileFontSize);
- screenProfileD.orig.y = -PBB(screenProfileFontSize);
-
- /* Calculate usable dimension of canvas in inches */
- size = screenProfileD.size;
- size.x -= (PBL(screenProfileFontSize));
- size.y -= (PBB(screenProfileFontSize));
-
- /* make sure there is enough space to show the rightmost coordinate value*/
- if (units == UNITS_ENGLISH) {
- if (prof.totalD > 240.0) {
- pTestString = "9999'";
- } else {
- pTestString = "999'11\"";
- }
- } else {
- if (PutDim(prof.totalD) > 10000.0) {
- pTestString = "999m";
- } else {
- if (PutDim(prof.totalD) > 100.0) {
- pTestString = "99.9m";
- } else {
- pTestString = "9.99m";
- }
- }
- }
- DrawTextSize(&mainD, pTestString, fp, screenProfileFontSize, FALSE, &textsize);
- size.x -= textsize.x / 2;
- size.y -= textsize.y * 1.5 ;
+ screenProfileD.orig.y = -PBB(screenProfileFontSize);
+
+ /* Calculate usable dimension of canvas in inches */
+ size = screenProfileD.size;
+ size.x -= (PBL(screenProfileFontSize));
+ size.y -= (PBB(screenProfileFontSize));
+
+ /* make sure there is enough space to show the rightmost coordinate value*/
+ if (units == UNITS_ENGLISH) {
+ if (prof.totalD > 240.0) {
+ pTestString = "9999'";
+ } else {
+ pTestString = "999'11\"";
+ }
+ } else {
+ if (PutDim(prof.totalD) > 10000.0) {
+ pTestString = "999m";
+ } else {
+ if (PutDim(prof.totalD) > 100.0) {
+ pTestString = "99.9m";
+ } else {
+ pTestString = "9.99m";
+ }
+ }
+ }
+ DrawTextSize(&mainD, pTestString, fp, screenProfileFontSize, FALSE, &textsize);
+ size.x -= textsize.x / 2;
+ size.y -= textsize.y * 1.5 ;
// now we have the size of the profile area
#ifdef WINDOWS
- if (printVert) {
- size.x -= PBR(screenProfileFontSize)/4.0;
- size.y -= PBT;
- } else
+ if (printVert) {
+ size.x -= PBR(screenProfileFontSize)/4.0;
+ size.y -= PBT;
+ } else
#endif
- {
- size.x -= PBR(screenProfileFontSize);
- size.y -= PBT;
- }
-
- if (size.x < 0.1 || size.y < 0.1) {
- wDrawDelayUpdate(screenProfileD.d, FALSE);
- return;
- }
-
- /* Calculate range of data values */
- if (profElem_da.cnt<=0) {
- prof.totalD = 0.0;
- prof.minE = 0.0;
- maxE = 1.0;
- } else {
- maxE = prof.minE = profElem(0).elev;
- prof.totalD = profElem(profElem_da.cnt-1).dist;
- for (int inx=1; inx<profElem_da.cnt; inx++) {
- p = &profElem(inx);
- if (p->elev<prof.minE) {
- prof.minE = p->elev;
- }
- if (p->elev>maxE) {
- maxE = p->elev;
- }
- }
- }
-
- /* Calculate number of grid lines */
- prof.minC = (int)floor(PutDim(prof.minE));
- prof.maxC = (int)ceil(PutDim(maxE));
- if (prof.maxC-prof.minC <= 0) {
- prof.maxC = prof.minC+1;
- }
- divC = (int)floor(size.y/labelH);
- if (divC < 1) {
- divC = 1;
- }
- prof.incrC = (prof.maxC-prof.minC+divC-1)/divC;
- if (prof.incrC < 1) {
- prof.incrC = 1;
- }
- prof.maxC = prof.minC + (prof.maxC-prof.minC+prof.incrC-1)/prof.incrC *
- prof.incrC;
-
- /* Reset bounds based on intergal values */
- prof.minE = GetDim(prof.minC);
- rngE = GetDim(prof.maxC) - prof.minE;
- if (rngE < 1.0) {
- rngE = 1.0;
- }
-
- /* Compute vert scale */
- prof.scaleY = size.y/rngE;
- sprintf(message, "%0.2f", maxE);
-
- DrawTextSize(&mainD, message, fp, screenProfileFontSize, FALSE, &textsize);
- w = textsize.x;
- w -= PBT;
- w += 4.0/screenProfileD.dpi;
- w -= (GetDim(prof.maxC)-maxE)*prof.scaleY;
- if (w > 0) {
- size.y -= w;
- prof.scaleY = size.y/rngE;
- }
-
- /* Compute horz scale */
- if (prof.totalD <= 0.1) {
- prof.totalD = size.x;
- }
- prof.scaleX = size.x/prof.totalD;
-
- DrawProfile(&screenProfileD, screenProfileFontSize,
+ {
+ size.x -= PBR(screenProfileFontSize);
+ size.y -= PBT;
+ }
+
+ if (size.x < 0.1 || size.y < 0.1) {
+ wDrawDelayUpdate(screenProfileD.d, FALSE);
+ return;
+ }
+
+ /* Calculate range of data values */
+ if (profElem_da.cnt<=0) {
+ prof.totalD = 0.0;
+ prof.minE = 0.0;
+ maxE = 1.0;
+ } else {
+ maxE = prof.minE = profElem(0).elev;
+ prof.totalD = profElem(profElem_da.cnt-1).dist;
+ for (int inx=1; inx<profElem_da.cnt; inx++) {
+ p = &profElem(inx);
+ if (p->elev<prof.minE) {
+ prof.minE = p->elev;
+ }
+ if (p->elev>maxE) {
+ maxE = p->elev;
+ }
+ }
+ }
+
+ /* Calculate number of grid lines */
+ prof.minC = (int)floor(PutDim(prof.minE));
+ prof.maxC = (int)ceil(PutDim(maxE));
+ if (prof.maxC-prof.minC <= 0) {
+ prof.maxC = prof.minC+1;
+ }
+ divC = (int)floor(size.y/labelH);
+ if (divC < 1) {
+ divC = 1;
+ }
+ prof.incrC = (prof.maxC-prof.minC+divC-1)/divC;
+ if (prof.incrC < 1) {
+ prof.incrC = 1;
+ }
+ prof.maxC = prof.minC + (prof.maxC-prof.minC+prof.incrC-1)/prof.incrC *
+ prof.incrC;
+
+ /* Reset bounds based on intergal values */
+ prof.minE = GetDim(prof.minC);
+ rngE = GetDim(prof.maxC) - prof.minE;
+ if (rngE < 1.0) {
+ rngE = 1.0;
+ }
+
+ /* Compute vert scale */
+ prof.scaleY = size.y/rngE;
+ sprintf(message, "%0.2f", maxE);
+
+ DrawTextSize(&mainD, message, fp, screenProfileFontSize, FALSE, &textsize);
+ w = textsize.x;
+ w -= PBT;
+ w += 4.0/screenProfileD.dpi;
+ w -= (GetDim(prof.maxC)-maxE)*prof.scaleY;
+ if (w > 0) {
+ size.y -= w;
+ prof.scaleY = size.y/rngE;
+ }
+
+ /* Compute horz scale */
+ if (prof.totalD <= 0.1) {
+ prof.totalD = size.x;
+ }
+ prof.scaleX = size.x/prof.totalD;
+
+ DrawProfile(&screenProfileD, screenProfileFontSize,
#ifdef WINDOWS
- printVert
+ printVert
#else
- FALSE
+ FALSE
#endif
- );
- wDrawDelayUpdate(screenProfileD.d, FALSE);
+ );
+ wDrawDelayUpdate(screenProfileD.d, FALSE);
}
static drawCmd_t printProfileD = {
- NULL,
- &printDrawFuncs,
+ NULL,
+ &printDrawFuncs,
DC_PRINT | DC_NOCLIP,
- 1.0,
- 0.0,
- {0.0,0.0}, {1.0,1.0},
- ProfilePix2CoOrd, ProfileCoOrd2Pix
+ 1.0,
+ 0.0,
+ {0.0,0.0}, {1.0,1.0},
+ ProfilePix2CoOrd, ProfileCoOrd2Pix
};
/**
@@ -600,83 +598,83 @@ static drawCmd_t printProfileD = {
static void DoProfilePrint(void * junk)
{
- coOrd size, p[4];
- int copies;
- WDOUBLE_T w, h, screenRatio, printRatio, titleH;
- wFont_p fp;
- coOrd screenSize;
- coOrd textsize;
-
- if (!wPrintDocStart(_("Profile"), 1, &copies)) {
- return;
- }
- printProfileD.d = wPrintPageStart();
- if (printProfileD.d == NULL) {
- return;
- }
- printProfileD.dpi = wDrawGetDPI(printProfileD.d);
- wPrintGetPageSize(&w, &h);
- printProfileD.orig.x = -PBL(printProfileFontSize);
- printProfileD.orig.y = -PBB(printProfileFontSize);
- printProfileD.angle = 0.0;
- screenRatio = screenProfileD.size.y/screenProfileD.size.x;
- screenSize.x = prof.totalD*prof.scaleX;
- screenSize.y = GetDim(prof.maxC-prof.minC)*prof.scaleY;
- screenRatio = screenSize.y/screenSize.x;
- printProfileD.size.x = w;
- printProfileD.size.y = h;
- sprintf(message, _("%s Profile: %s"), sProdName, GetLayoutTitle());
- fp = wStandardFont(F_TIMES, FALSE, FALSE);
- DrawTextSize(&mainD, message, fp, 24, FALSE, &textsize);
- titleH = textsize.y + 6.0/mainD.dpi;
- if (screenRatio < 1.0 && w < h) {
- /* Landscape -> Portrait */
- printProfileD.angle = -90.0;
- printProfileD.orig.x += h;
- size.x = h;
- size.y = w;
- } else if (screenRatio > 1.0 && w > h) {
- /* Portrait -> Landscape */
- printProfileD.angle = 90.0;
- printProfileD.orig.y += w;
- size.x = h;
- size.y = w;
- } else {
- size.x = w;
- size.y = h;
- }
- size.y -= titleH+(printVert?PBT*2:PBT)+PBB(printProfileFontSize);
- size.x -= 4.0/mainD.dpi+PBL(printProfileFontSize)+(printVert?PBR(
- printProfileFontSize)/4.0:PBR(printProfileFontSize));
- printRatio = size.y/size.x;
- if (printRatio < screenRatio) {
- printProfileD.scale = screenSize.y/size.y;
- size.x = screenSize.x/printProfileD.scale;
- } else {
- printProfileD.scale = screenSize.x/size.x;
- printProfileD.orig.y -= size.y;
- size.y = screenSize.y/printProfileD.scale;
- printProfileD.orig.y += size.y;
- }
+ coOrd size, p[4];
+ int copies;
+ WDOUBLE_T w, h, screenRatio, printRatio, titleH;
+ wFont_p fp;
+ coOrd screenSize;
+ coOrd textsize;
+
+ if (!wPrintDocStart(_("Profile"), 1, &copies)) {
+ return;
+ }
+ printProfileD.d = wPrintPageStart();
+ if (printProfileD.d == NULL) {
+ return;
+ }
+ printProfileD.dpi = wDrawGetDPI(printProfileD.d);
+ wPrintGetPageSize(&w, &h);
+ printProfileD.orig.x = -PBL(printProfileFontSize);
+ printProfileD.orig.y = -PBB(printProfileFontSize);
+ printProfileD.angle = 0.0;
+ screenRatio = screenProfileD.size.y/screenProfileD.size.x;
+ screenSize.x = prof.totalD*prof.scaleX;
+ screenSize.y = GetDim(prof.maxC-prof.minC)*prof.scaleY;
+ screenRatio = screenSize.y/screenSize.x;
+ printProfileD.size.x = w;
+ printProfileD.size.y = h;
+ sprintf(message, _("%s Profile: %s"), sProdName, GetLayoutTitle());
+ fp = wStandardFont(F_TIMES, FALSE, FALSE);
+ DrawTextSize(&mainD, message, fp, 24, FALSE, &textsize);
+ titleH = textsize.y + 6.0/mainD.dpi;
+ if (screenRatio < 1.0 && w < h) {
+ /* Landscape -> Portrait */
+ printProfileD.angle = -90.0;
+ printProfileD.orig.x += h;
+ size.x = h;
+ size.y = w;
+ } else if (screenRatio > 1.0 && w > h) {
+ /* Portrait -> Landscape */
+ printProfileD.angle = 90.0;
+ printProfileD.orig.y += w;
+ size.x = h;
+ size.y = w;
+ } else {
+ size.x = w;
+ size.y = h;
+ }
+ size.y -= titleH+(printVert?PBT*2:PBT)+PBB(printProfileFontSize);
+ size.x -= 4.0/mainD.dpi+PBL(printProfileFontSize)+(printVert?PBR(
+ printProfileFontSize)/4.0:PBR(printProfileFontSize));
+ printRatio = size.y/size.x;
+ if (printRatio < screenRatio) {
+ printProfileD.scale = screenSize.y/size.y;
+ size.x = screenSize.x/printProfileD.scale;
+ } else {
+ printProfileD.scale = screenSize.x/size.x;
+ printProfileD.orig.y -= size.y;
+ size.y = screenSize.y/printProfileD.scale;
+ printProfileD.orig.y += size.y;
+ }
#define PRINT_ABS2PAGEX(X) (((X)*printProfileD.scale)/prof.scaleX)
#define PRINT_ABS2PAGEY(Y) (((Y)*printProfileD.scale)/prof.scaleY+prof.minE)
- p[0].y = PRINT_ABS2PAGEY(size.y+(printVert?PBT*2:PBT)+0.05);
- p[0].x = PRINT_ABS2PAGEX((size.x-textsize.x)/2.0);
- if (p[0].x < 0) {
- p[0].x = 0;
- }
- DrawString(&printProfileD, p[0], 0, message, fp, 24*printProfileD.scale,
- borderColor);
- p[0].x = p[3].x = PRINT_ABS2PAGEX((-PBL(printProfileFontSize))+2.0/mainD.dpi);
- p[0].y = p[1].y = PRINT_ABS2PAGEY(-PBB(printProfileFontSize));
- p[1].x = p[2].x = PRINT_ABS2PAGEX(size.x+(printVert?PBR(
- printProfileFontSize)/4.0:PBR(printProfileFontSize)));
- p[2].y = p[3].y = PRINT_ABS2PAGEY(size.y+(printVert?PBT*2:PBT));
- DrawPoly( &printProfileD, 4, p, NULL, drawColorBlack, 0, DRAW_CLOSED );
-
- DrawProfile(&printProfileD, printProfileFontSize, printVert);
- wPrintPageEnd(printProfileD.d);
- wPrintDocEnd();
+ p[0].y = PRINT_ABS2PAGEY(size.y+(printVert?PBT*2:PBT)+0.05);
+ p[0].x = PRINT_ABS2PAGEX((size.x-textsize.x)/2.0);
+ if (p[0].x < 0) {
+ p[0].x = 0;
+ }
+ DrawString(&printProfileD, p[0], 0, message, fp, 24*printProfileD.scale,
+ borderColor);
+ p[0].x = p[3].x = PRINT_ABS2PAGEX((-PBL(printProfileFontSize))+2.0/mainD.dpi);
+ p[0].y = p[1].y = PRINT_ABS2PAGEY(-PBB(printProfileFontSize));
+ p[1].x = p[2].x = PRINT_ABS2PAGEX(size.x+(printVert?PBR(
+ printProfileFontSize)/4.0:PBR(printProfileFontSize)));
+ p[2].y = p[3].y = PRINT_ABS2PAGEY(size.y+(printVert?PBT*2:PBT));
+ DrawPoly( &printProfileD, 4, p, NULL, drawColorBlack, 0, DRAW_CLOSED );
+
+ DrawProfile(&printProfileD, printProfileFontSize, printVert);
+ wPrintPageEnd(printProfileD.d);
+ wPrintDocEnd();
}
/**************************************************************************
@@ -699,17 +697,17 @@ static void CloseProfileWindow(paramGroup_p pg, int event, void *data);
static paramDrawData_t profileDrawData = { 300, 150, RedrawProfileW, SelProfileW, &screenProfileD };
static paramData_t profilePLs[] = {
- { PD_DRAW, NULL, "canvas", PDO_DLGRESIZE, &profileDrawData },
+ { PD_DRAW, NULL, "canvas", PDO_DLGRESIZE, &profileDrawData },
#define I_PROFILEMSG (1)
- { PD_MESSAGE, NULL, NULL, PDO_DLGIGNOREX, I2VP(300) },
+ { PD_MESSAGE, NULL, NULL, PDO_DLGIGNOREX, I2VP(300) },
#define I_CHANGEBUTTON 2
- { PD_BUTTON, DoProfileChange, "change", PDO_DLGCMDBUTTON, NULL, N_("Change") },
+ { PD_BUTTON, DoProfileChange, "change", PDO_DLGCMDBUTTON, NULL, N_("Change") },
#define I_RESETBUTTON 3
- { PD_BUTTON, DoProfileReset, "reset", PDO_DLGCMDBUTTON, NULL, N_("Reset") },
+ { PD_BUTTON, DoProfileReset, "reset", PDO_DLGCMDBUTTON, NULL, N_("Reset") },
#define I_CLEARBUTTON 4
- { PD_BUTTON, DoProfileClear, "clear", PDO_DLGCMDBUTTON, NULL, N_("Clear") },
+ { PD_BUTTON, DoProfileClear, "clear", PDO_DLGCMDBUTTON, NULL, N_("Clear") },
#define I_PRINTBUTTON 5
- { PD_BUTTON, DoProfilePrint, "print", 0, NULL, N_("Print") }
+ { PD_BUTTON, DoProfilePrint, "print", 0, NULL, N_("Print") }
};
static paramGroup_t profilePG = { "profile", 0, profilePLs, COUNT( profilePLs ) };
@@ -719,97 +717,97 @@ static paramGroup_t profilePG = { "profile", 0, profilePLs, COUNT( profilePLs )
#define PRINTBUTTON ((wButton_p)profilePLs[I_PRINTBUTTON].control)
static void SelProfileW(
- wIndex_t action,
- coOrd pos)
+ wIndex_t action,
+ coOrd pos)
{
- DIST_T dist;
- static DIST_T oldElev;
- static int inx;
- DIST_T elev;
-
- if (profElem_da.cnt <= 0) {
- return;
- }
-
- dist = pos.x;
- elev = pos.y;
-
- switch (action&0xFF) {
- case C_START:
- profileUndo = FALSE;
- break;
- case C_DOWN:
- for (inx=0; inx<profElem_da.cnt; inx++) {
- if (dist <= profElem(inx).dist) {
- if (inx!=0 && profElem(inx).dist-dist > dist-profElem(inx-1).dist) {
- inx--;
- }
- break;
- }
- }
- if (inx >= profElem_da.cnt) {
- inx = profElem_da.cnt-1;
- }
- sprintf(message, _("Elev = %0.1f"), round(PutDim(elev)*10.0)/10.0);
- ParamLoadMessage(&profilePG, I_PROFILEMSG, message);
- oldElev = elev;
- RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
- break;
- case C_MOVE:
- if (inx < 0) {
- break;
- }
- if (profElem_da.cnt == 1) {
- sprintf(message, _("Elev = %0.1f"), round(PutDim(elev)*10.0)/10.0);
- } else if (inx == 0) {
- sprintf(message, _("Elev=%0.2f %0.1f%%"),
- round(PutDim(elev)*100.0)/100.0,
- round(fabs(((profElem(inx+1).elev-elev) / (profElem(inx+1).dist-profElem(
- inx).dist)) * 1000.0))/10.0);
- } else if (inx == profElem_da.cnt-1) {
- sprintf(message, _("%0.1f%% Elev = %0.2f"),
- round(fabs(((profElem(inx-1).elev-elev) / (profElem(inx).dist-profElem(
- inx-1).dist)) * 1000.0))/10.0,
- round(PutDim(elev)*100.0)/100.0);
- } else {
- sprintf(message, _("%0.1f%% Elev = %0.2f %0.1f%%"),
- round(fabs(((profElem(inx-1).elev-elev) / (profElem(inx).dist-profElem(
- inx-1).dist)) * 1000.0))/10.0,
- round(PutDim(elev)*100.0)/100.0,
- round(fabs((profElem(inx+1).elev-elev) / (profElem(inx+1).dist-profElem(
- inx).dist)) * 1000.0)/10.0);
- }
- ParamLoadMessage(&profilePG, I_PROFILEMSG, message);
- oldElev = elev;
- profElem(inx).elev = oldElev;
- RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
+ DIST_T dist;
+ static DIST_T oldElev;
+ static int inx;
+ DIST_T elev;
+
+ if (profElem_da.cnt <= 0) {
+ return;
+ }
+
+ dist = pos.x;
+ elev = pos.y;
+
+ switch (action&0xFF) {
+ case C_START:
+ profileUndo = FALSE;
+ break;
+ case C_DOWN:
+ for (inx=0; inx<profElem_da.cnt; inx++) {
+ if (dist <= profElem(inx).dist) {
+ if (inx!=0 && profElem(inx).dist-dist > dist-profElem(inx-1).dist) {
+ inx--;
+ }
+ break;
+ }
+ }
+ if (inx >= profElem_da.cnt) {
+ inx = profElem_da.cnt-1;
+ }
+ sprintf(message, _("Elev = %0.1f"), round(PutDim(elev)*10.0)/10.0);
+ ParamLoadMessage(&profilePG, I_PROFILEMSG, message);
+ oldElev = elev;
+ RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
+ break;
+ case C_MOVE:
+ if (inx < 0) {
+ break;
+ }
+ if (profElem_da.cnt == 1) {
+ sprintf(message, _("Elev = %0.1f"), round(PutDim(elev)*10.0)/10.0);
+ } else if (inx == 0) {
+ sprintf(message, _("Elev=%0.2f %0.1f%%"),
+ round(PutDim(elev)*100.0)/100.0,
+ round(fabs(((profElem(inx+1).elev-elev) / (profElem(inx+1).dist-profElem(
+ inx).dist)) * 1000.0))/10.0);
+ } else if (inx == profElem_da.cnt-1) {
+ sprintf(message, _("%0.1f%% Elev = %0.2f"),
+ round(fabs(((profElem(inx-1).elev-elev) / (profElem(inx).dist-profElem(
+ inx-1).dist)) * 1000.0))/10.0,
+ round(PutDim(elev)*100.0)/100.0);
+ } else {
+ sprintf(message, _("%0.1f%% Elev = %0.2f %0.1f%%"),
+ round(fabs(((profElem(inx-1).elev-elev) / (profElem(inx).dist-profElem(
+ inx-1).dist)) * 1000.0))/10.0,
+ round(PutDim(elev)*100.0)/100.0,
+ round(fabs((profElem(inx+1).elev-elev) / (profElem(inx+1).dist-profElem(
+ inx).dist)) * 1000.0)/10.0);
+ }
+ ParamLoadMessage(&profilePG, I_PROFILEMSG, message);
+ oldElev = elev;
+ profElem(inx).elev = oldElev;
+ RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
wPause(500l);
break;
- case C_UP:
- if (profileUndo == FALSE) {
- UndoStart(_("Profile Command"), "Profile - set elevation");
- profileUndo = TRUE;
- }
- if (profElem(inx).trk) {
- UpdateTrkEndElev(profElem(inx).trk, profElem(inx).ep, ELEV_DEF|ELEV_VISIBLE,
- oldElev, NULL);
- }
- profElem(inx).elev = oldElev;
- RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
- ParamLoadMessage(&profilePG, I_PROFILEMSG, _("Drag to change Elevation"));
- inx = -1;
- break;
- default:
- break;
- }
+ case C_UP:
+ if (profileUndo == FALSE) {
+ UndoStart(_("Profile Command"), "Profile - set elevation");
+ profileUndo = TRUE;
+ }
+ if (profElem(inx).trk) {
+ UpdateTrkEndElev(profElem(inx).trk, profElem(inx).ep, ELEV_DEF|ELEV_VISIBLE,
+ oldElev, NULL);
+ }
+ profElem(inx).elev = oldElev;
+ RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
+ ParamLoadMessage(&profilePG, I_PROFILEMSG, _("Drag to change Elevation"));
+ inx = -1;
+ break;
+ default:
+ break;
+ }
}
static void HilightProfileElevations(BOOL_T show)
{
- /*if ( profElem_da.cnt <= 0 ) {*/
- HilightElevations(show);
- /*} else {
- }*/
+ /*if ( profElem_da.cnt <= 0 ) {*/
+ HilightElevations(show);
+ /*} else {
+ }*/
}
/**
@@ -822,15 +820,15 @@ static void HilightProfileElevations(BOOL_T show)
void
CloseProfileWindow(paramGroup_p pg, int event, void *data)
{
- Reset();
- return;
+ Reset();
+ return;
}
-/**
+/**
* Undo the changes made in the profile window to the layout.
*/
-
+
static void
ResetChanges()
{
@@ -839,7 +837,7 @@ ResetChanges()
profElem(i) = copyOfprofElem[i];
if (profElem(i).trk) {
UpdateTrkEndElev(profElem(i).trk, profElem(i).ep, ELEV_DEF | ELEV_VISIBLE,
- copyOfprofElem[i].elev, NULL);
+ copyOfprofElem[i].elev, NULL);
}
}
}
@@ -861,7 +859,7 @@ DoProfileReset(void *junk)
}
ResetChanges();
RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
- TempRedraw();
+ TempRedraw();
}
/**
@@ -874,34 +872,34 @@ static void
DoProfileChange(void *junk)
{
DestroyCopyOfProfileElements();
- TempRedraw();
+ TempRedraw();
}
static void DoProfileDone(void * junk)
{
- Reset();
+ Reset();
}
static void DoProfileClear(void * junk)
{
ResetChanges();
- profElem_da.cnt = 0;
- station_da.cnt = 0;
- ClrAllTrkBitsRedraw(TB_PROFILEPATH, TRUE);
- pathStartTrk = pathEndTrk = NULL;
- RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
+ DYNARR_RESET( profElem_t, profElem_da );
+ DYNARR_RESET( station_t, station_da );
+ ClrAllTrkBitsRedraw(TB_PROFILEPATH, TRUE);
+ pathStartTrk = pathEndTrk = NULL;
+ RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
}
static void DoProfileChangeMode(void * junk)
{
- if (profElem_da.cnt<=0) {
- InfoMessage(_("Select a Defined Elevation to start Profile"));
- } else {
- InfoMessage(_("Select a Defined Elevation to extend Profile"));
- }
+ if (profElem_da.cnt<=0) {
+ InfoMessage(_("Select a Defined Elevation to start Profile"));
+ } else {
+ InfoMessage(_("Select a Defined Elevation to extend Profile"));
+ }
}
/**************************************************************************
@@ -912,15 +910,15 @@ static void DoProfileChangeMode(void * junk)
static BOOL_T PathListEmpty(void)
{
- return pathStartTrk == NULL;
+ return pathStartTrk == NULL;
}
static BOOL_T PathListSingle(void)
{
- return pathStartTrk != NULL &&
- (pathEndTrk == NULL ||
- (GetTrkEndTrk(pathEndTrk,pathEndEp) == pathStartTrk &&
- GetTrkEndTrk(pathStartTrk,pathStartEp) == pathEndTrk));
+ return pathStartTrk != NULL &&
+ (pathEndTrk == NULL ||
+ (GetTrkEndTrk(pathEndTrk,pathEndEp) == pathStartTrk &&
+ GetTrkEndTrk(pathStartTrk,pathStartEp) == pathEndTrk));
}
@@ -928,106 +926,106 @@ static int profileShortestPathMatch;
static DIST_T profileShortestPathDist;
static int ProfileShortestPathFunc(
- SPTF_CMD cmd,
- track_p trk,
- EPINX_T ep,
- EPINX_T ep0,
- DIST_T dist,
- void * data)
+ SPTF_CMD cmd,
+ track_p trk,
+ EPINX_T ep,
+ EPINX_T ep0,
+ DIST_T dist,
+ void * data)
{
- int rc0=0;
- int pathMatch;
-
- switch (cmd) {
- track_p trkN;
- case SPTC_TERMINATE:
- rc0 = 1;
- break;
-
- case SPTC_MATCH:
- if (EndPtIsIgnoredElev(trk,ep)) {
- break;
- }
- if (PathListSingle()) {
- if (trk == pathStartTrk && ep == pathStartEp) {
- pathMatch = 2;
- } else if (trk == pathEndTrk && ep == pathEndEp) {
- pathMatch = 3;
- } else {
- break;
- }
- } else if ((trkN = GetTrkEndTrk(trk,ep)) == NULL) {
- break;
- } else {
- EPINX_T epN;
- epN = GetEndPtConnectedToMe(trkN, trk);
- if (trkN == pathStartTrk && epN == pathStartEp) {
- pathMatch = 1;
- } else if (trkN == pathEndTrk && epN == pathEndEp) {
- pathMatch = 2;
- } else if (trkN == pathStartTrk && trkN == pathEndTrk) {
- pathMatch = 2;
- } else if (trkN == pathStartTrk) {
- pathMatch = 1;
- } else if (trkN == pathEndTrk) {
- pathMatch = 2;
- } else {
- break;
- }
- }
- if (profileShortestPathMatch < 0 || profileShortestPathDist > dist) {
- LOG(log_shortPath, 4, (" Match=%d", pathMatch))
- profileShortestPathMatch = pathMatch;
- profileShortestPathDist = dist;
- }
- rc0 = 1;
- break;
-
- case SPTC_MATCHANY:
- rc0 = -1;
- break;
-
- case SPTC_IGNNXTTRK:
- if (EndPtIsIgnoredElev(trk,ep)) {
- rc0 = 1;
- } else if ((GetTrkBits(trk)&TB_PROFILEPATH)!=0) {
- rc0 = 1;
- } else if ((!EndPtIsDefinedElev(trk,ep)) && GetTrkEndTrk(trk,ep)==NULL) {
- rc0 = 1;
- } else {
- rc0 = 0;
- }
- break;
-
- case SPTC_ADD_TRK:
- if (log_shortPath<=0||
- logTable(log_shortPath).level<4) LOG(log_profile, 4, (" ADD_TRK T%d:%d",
- GetTrkIndex(trk), ep))
- SetTrkBits(trk, TB_PROFILEPATH);
- DrawTrack(trk, &mainD, profilePathColor);
- rc0 = 0;
- break;
-
- case SPTC_VALID:
- rc0 = 1;
- break;
-
- default:
- break;
- }
- return rc0;
+ int rc0=0;
+ int pathMatch;
+
+ switch (cmd) {
+ track_p trkN;
+ case SPTC_TERMINATE:
+ rc0 = 1;
+ break;
+
+ case SPTC_MATCH:
+ if (EndPtIsIgnoredElev(trk,ep)) {
+ break;
+ }
+ if (PathListSingle()) {
+ if (trk == pathStartTrk && ep == pathStartEp) {
+ pathMatch = 2;
+ } else if (trk == pathEndTrk && ep == pathEndEp) {
+ pathMatch = 3;
+ } else {
+ break;
+ }
+ } else if ((trkN = GetTrkEndTrk(trk,ep)) == NULL) {
+ break;
+ } else {
+ EPINX_T epN;
+ epN = GetEndPtConnectedToMe(trkN, trk);
+ if (trkN == pathStartTrk && epN == pathStartEp) {
+ pathMatch = 1;
+ } else if (trkN == pathEndTrk && epN == pathEndEp) {
+ pathMatch = 2;
+ } else if (trkN == pathStartTrk && trkN == pathEndTrk) {
+ pathMatch = 2;
+ } else if (trkN == pathStartTrk) {
+ pathMatch = 1;
+ } else if (trkN == pathEndTrk) {
+ pathMatch = 2;
+ } else {
+ break;
+ }
+ }
+ if (profileShortestPathMatch < 0 || profileShortestPathDist > dist) {
+ LOG(log_shortPath, 4, (" Match=%d", pathMatch))
+ profileShortestPathMatch = pathMatch;
+ profileShortestPathDist = dist;
+ }
+ rc0 = 1;
+ break;
+
+ case SPTC_MATCHANY:
+ rc0 = -1;
+ break;
+
+ case SPTC_IGNNXTTRK:
+ if (EndPtIsIgnoredElev(trk,ep)) {
+ rc0 = 1;
+ } else if ((GetTrkBits(trk)&TB_PROFILEPATH)!=0) {
+ rc0 = 1;
+ } else if ((!EndPtIsDefinedElev(trk,ep)) && GetTrkEndTrk(trk,ep)==NULL) {
+ rc0 = 1;
+ } else {
+ rc0 = 0;
+ }
+ break;
+
+ case SPTC_ADD_TRK:
+ if (log_shortPath<=0||
+ logTable(log_shortPath).level<4) LOG(log_profile, 4, (" ADD_TRK T%d:%d",
+ GetTrkIndex(trk), ep))
+ SetTrkBits(trk, TB_PROFILEPATH);
+ DrawTrack(trk, &mainD, profilePathColor);
+ rc0 = 0;
+ break;
+
+ case SPTC_VALID:
+ rc0 = 1;
+ break;
+
+ default:
+ break;
+ }
+ return rc0;
}
static int FindProfileShortestPath(
- track_p trkN,
- EPINX_T epN)
+ track_p trkN,
+ EPINX_T epN)
{
- LOG(log_profile, 4, ("Searching from T%d:%d to T%d:%d or T%d:%d\n",
- GetTrkIndex(trkN), epN,
- pathStartTrk?GetTrkIndex(pathStartTrk):-1, pathStartTrk?pathStartEp:-1,
- pathEndTrk?GetTrkIndex(pathEndTrk):-1, pathEndTrk?pathEndEp:-1))
- profileShortestPathMatch = -1;
- return FindShortestPath(trkN, epN, TRUE, ProfileShortestPathFunc, NULL);
+ LOG(log_profile, 4, ("Searching from T%d:%d to T%d:%d or T%d:%d\n",
+ GetTrkIndex(trkN), epN,
+ pathStartTrk?GetTrkIndex(pathStartTrk):-1, pathStartTrk?pathStartEp:-1,
+ pathEndTrk?GetTrkIndex(pathEndTrk):-1, pathEndTrk?pathEndEp:-1))
+ profileShortestPathMatch = -1;
+ return FindShortestPath(trkN, epN, TRUE, ProfileShortestPathFunc, NULL);
}
@@ -1044,492 +1042,493 @@ static int FindProfileShortestPath(
#define ONPATH_BRANCH (1<<3)
static int OnPath(track_p trk, EPINX_T ep)
{
- if (GetTrkBits(trk)&TB_PROFILEPATH) {
- track_p trk0;
- trk0 = GetTrkEndTrk(profilePopupTrk, profilePopupEp);
- if (trk0 && (GetTrkBits(trk0)&TB_PROFILEPATH)) {
- return ONPATH_MID;
- }
- if (trk == pathStartTrk && ep == pathStartEp) {
- return ONPATH_END;
- }
- return ONPATH_BRANCH;
- }
- return ONPATH_NOT;
+ if (GetTrkBits(trk)&TB_PROFILEPATH) {
+ track_p trk0;
+ trk0 = GetTrkEndTrk(profilePopupTrk, profilePopupEp);
+ if (trk0 && (GetTrkBits(trk0)&TB_PROFILEPATH)) {
+ return ONPATH_MID;
+ }
+ if (trk == pathStartTrk && ep == pathStartEp) {
+ return ONPATH_END;
+ }
+ return ONPATH_BRANCH;
+ }
+ return ONPATH_NOT;
}
static BOOL_T PathListCheck(void)
{
- track_p trk;
- if (PathListEmpty() || PathListSingle()) {
- return TRUE;
- }
- if (!(GetTrkBits(pathStartTrk)&TB_PROFILEPATH)) {
- ErrorMessage(MSG_PST_NOT_ON_PATH);
- return FALSE;
- }
- if (!(GetTrkBits(pathEndTrk)&TB_PROFILEPATH)) {
- ErrorMessage(MSG_PET_NOT_ON_PATH);
- return FALSE;
- }
- trk = GetTrkEndTrk(pathStartTrk,pathStartEp);
- if (trk && (GetTrkBits(trk)&TB_PROFILEPATH)) {
- ErrorMessage(MSG_INV_PST_ON_PATH);
- return FALSE;
- }
- trk = GetTrkEndTrk(pathEndTrk,pathEndEp);
- if (trk && (GetTrkBits(trk)&TB_PROFILEPATH)) {
- ErrorMessage(MSG_INV_PET_ON_PATH);
- return FALSE;
- }
- return TRUE;
+ track_p trk;
+ if (PathListEmpty() || PathListSingle()) {
+ return TRUE;
+ }
+ if (!(GetTrkBits(pathStartTrk)&TB_PROFILEPATH)) {
+ ErrorMessage(MSG_PST_NOT_ON_PATH);
+ return FALSE;
+ }
+ if (!(GetTrkBits(pathEndTrk)&TB_PROFILEPATH)) {
+ ErrorMessage(MSG_PET_NOT_ON_PATH);
+ return FALSE;
+ }
+ trk = GetTrkEndTrk(pathStartTrk,pathStartEp);
+ if (trk && (GetTrkBits(trk)&TB_PROFILEPATH)) {
+ ErrorMessage(MSG_INV_PST_ON_PATH);
+ return FALSE;
+ }
+ trk = GetTrkEndTrk(pathEndTrk,pathEndEp);
+ if (trk && (GetTrkBits(trk)&TB_PROFILEPATH)) {
+ ErrorMessage(MSG_INV_PET_ON_PATH);
+ return FALSE;
+ }
+ return TRUE;
}
static void RemoveTracksFromPath(
- track_p *Rtrk,
- EPINX_T *Rep,
- track_p trkEnd,
- EPINX_T epEnd)
+ track_p *Rtrk,
+ EPINX_T *Rep,
+ track_p trkEnd,
+ EPINX_T epEnd)
{
- track_p trk = *Rtrk, trkN;
- EPINX_T ep = *Rep;
-
- PASSERT("removeTracksFromPath", trk, NOP);
- PASSERT("removeTracksFromPath", !PathListSingle(), NOP);
- while (1) {
- EPINX_T ep2;
- DrawTrack(trk, &mainD, drawColorWhite);
- ClrTrkBits(trk, TB_PROFILEPATH);
- DrawTrack(trk, &mainD, drawColorBlack);
-
- if (trk == trkEnd) {
- pathStartTrk = trkEnd;
- pathStartEp = epEnd;
- pathEndTrk = GetTrkEndTrk(pathStartTrk,pathStartEp);
- if (pathEndTrk) {
- pathEndEp = GetEndPtConnectedToMe(pathEndTrk,pathStartTrk);
- }
- return;
- }
-
- ep2 = GetNextTrkOnPath(trk, ep);
- PASSERT("removeTracksFromPath", ep2 >= 0,NOP);
- trkN = GetTrkEndTrk(trk,ep2);
- PASSERT("removeTracksFromPath", trkN != NULL, NOP);
- ep = GetEndPtConnectedToMe(trkN,trk);
- trk = trkN;
- if (EndPtIsDefinedElev(trk,ep)) {
- *Rtrk = trk;
- *Rep = ep;
- return;
- }
- }
+ track_p trk = *Rtrk, trkN;
+ EPINX_T ep = *Rep;
+
+ PASSERT("removeTracksFromPath", trk, NOP);
+ PASSERT("removeTracksFromPath", !PathListSingle(), NOP);
+ while (1) {
+ EPINX_T ep2;
+ DrawTrack(trk, &mainD, drawColorWhite);
+ ClrTrkBits(trk, TB_PROFILEPATH);
+ DrawTrack(trk, &mainD, drawColorBlack);
+
+ if (trk == trkEnd) {
+ pathStartTrk = trkEnd;
+ pathStartEp = epEnd;
+ pathEndTrk = GetTrkEndTrk(pathStartTrk,pathStartEp);
+ if (pathEndTrk) {
+ pathEndEp = GetEndPtConnectedToMe(pathEndTrk,pathStartTrk);
+ }
+ return;
+ }
+
+ ep2 = GetNextTrkOnPath(trk, ep);
+ PASSERT("removeTracksFromPath", ep2 >= 0,NOP);
+ trkN = GetTrkEndTrk(trk,ep2);
+ PASSERT("removeTracksFromPath", trkN != NULL, NOP);
+ ep = GetEndPtConnectedToMe(trkN,trk);
+ trk = trkN;
+ if (EndPtIsDefinedElev(trk,ep)) {
+ *Rtrk = trk;
+ *Rep = ep;
+ return;
+ }
+ }
}
static void ChkElev(track_p trk, EPINX_T ep, EPINX_T ep2, DIST_T dist,
BOOL_T * defined)
{
- profElem_p p;
- station_p s;
- EPINX_T epDefElev = -1;
- int mode;
- BOOL_T undefined;
-
- mode = GetTrkEndElevMode(trk, ep);
- if (mode == ELEV_DEF) {
- epDefElev = ep;
- } else if (mode == ELEV_STATION) {
- DYNARR_APPEND(station_t, station_da, 10);
- s = &station(station_da.cnt-1);
- s->dist = dist;
- s->name = GetTrkEndElevStation(trk,ep);
- }
- undefined = FALSE;
- if (epDefElev<0) {
- if ((trk == pathStartTrk && ep == pathStartEp) ||
- (trk == pathEndTrk && ep == pathEndEp)) {
- epDefElev = ep;
- }
- }
- if (epDefElev<0) {
- if (ep == ep2 ||
- GetTrkEndElevMode(trk,ep2) != ELEV_DEF)
- for (EPINX_T ep1=0; ep1<GetTrkEndPtCnt(trk); ep1++) {
- if (ep1==ep || ep1==ep2) {
- continue;
- }
- if (EndPtIsDefinedElev(trk,ep1)) {
- epDefElev = ep1;
- dist -= GetTrkLength(trk, ep, ep1);
- break;
- }
- if (GetTrkEndTrk(trk,ep1)) {
- if (!EndPtIsIgnoredElev(trk,ep1)) {
- undefined = TRUE;
- }
- }
- }
- }
-
- if (epDefElev>=0) {
- DYNARR_APPEND(profElem_t, profElem_da, 10);
- p = &profElem(profElem_da.cnt-1);
- p->trk = trk;
- p->ep = epDefElev;
- p->dist = dist;
- if (GetTrkEndElevMode(trk,epDefElev) == ELEV_DEF) {
- p->elev = GetTrkEndElevHeight(trk,epDefElev);
- } else {
- ComputeElev(trk, epDefElev, TRUE, &p->elev, NULL, TRUE);
- }
- p->defined = *defined;
- *defined = TRUE;
- } else if (undefined) {
- *defined = FALSE;
- }
+ profElem_p p;
+ station_p s;
+ EPINX_T epDefElev = -1;
+ int mode;
+ BOOL_T undefined;
+
+ mode = GetTrkEndElevMode(trk, ep);
+ if (mode == ELEV_DEF) {
+ epDefElev = ep;
+ } else if (mode == ELEV_STATION) {
+ DYNARR_APPEND(station_t, station_da, 10);
+ s = &station(station_da.cnt-1);
+ s->dist = dist;
+ s->name = GetTrkEndElevStation(trk,ep);
+ }
+ undefined = FALSE;
+ if (epDefElev<0) {
+ if ((trk == pathStartTrk && ep == pathStartEp) ||
+ (trk == pathEndTrk && ep == pathEndEp)) {
+ epDefElev = ep;
+ }
+ }
+ if (epDefElev<0) {
+ if (ep == ep2 ||
+ GetTrkEndElevMode(trk,ep2) != ELEV_DEF)
+ for (EPINX_T ep1=0; ep1<GetTrkEndPtCnt(trk); ep1++) {
+ if (ep1==ep || ep1==ep2) {
+ continue;
+ }
+ if (EndPtIsDefinedElev(trk,ep1)) {
+ epDefElev = ep1;
+ dist -= GetTrkLength(trk, ep, ep1);
+ break;
+ }
+ if (GetTrkEndTrk(trk,ep1)) {
+ if (!EndPtIsIgnoredElev(trk,ep1)) {
+ undefined = TRUE;
+ }
+ }
+ }
+ }
+
+ if (epDefElev>=0) {
+ DYNARR_APPEND(profElem_t, profElem_da, 10);
+ p = &profElem(profElem_da.cnt-1);
+ p->trk = trk;
+ p->ep = epDefElev;
+ p->dist = dist;
+ if (GetTrkEndElevMode(trk,epDefElev) == ELEV_DEF) {
+ p->elev = GetTrkEndElevHeight(trk,epDefElev);
+ } else {
+ ComputeElev(trk, epDefElev, TRUE, &p->elev, NULL, TRUE);
+ }
+ p->defined = *defined;
+ *defined = TRUE;
+ } else if (undefined) {
+ *defined = FALSE;
+ }
}
static void ComputeProfElem(void)
{
- track_p trk = pathStartTrk, trkN;
- EPINX_T ep = pathStartEp, ep2;
- BOOL_T go;
- DIST_T dist;
- BOOL_T defined;
-
- profElem_da.cnt = 0;
- station_da.cnt = 0;
- dist = 0;
- defined = TRUE;
- if (PathListEmpty()) {
- return;
- }
- ChkElev(trk, ep, ep, dist, &defined);
- if (PathListSingle()) {
- return;
- }
- go = TRUE;
- while (go) {
- if (trk == pathEndTrk) {
- go = FALSE;
- ep2 = pathEndEp;
- } else {
- ep2 = GetNextTrkOnPath(trk, ep);
- //PASSERT( "computeProfElem", ep2 >= 0, NOP );
- }
- dist += GetTrkLength(trk, ep, ep2);
- ChkElev(trk, ep2, ep, dist, &defined);
- if (!go) {
- break;
- }
- trkN = GetTrkEndTrk(trk,ep2);
- ep = GetEndPtConnectedToMe(trkN,trk);
- trk = trkN;
- }
+ track_p trk = pathStartTrk, trkN;
+ EPINX_T ep = pathStartEp, ep2;
+ BOOL_T go;
+ DIST_T dist;
+ BOOL_T defined;
+
+ DYNARR_RESET( profElem_t, profElem_da );
+ DYNARR_RESET( station_t, station_da );
+ dist = 0;
+ defined = TRUE;
+ if (PathListEmpty()) {
+ return;
+ }
+ ChkElev(trk, ep, ep, dist, &defined);
+ if (PathListSingle()) {
+ return;
+ }
+ go = TRUE;
+ while (go) {
+ if (trk == pathEndTrk) {
+ go = FALSE;
+ ep2 = pathEndEp;
+ } else {
+ ep2 = GetNextTrkOnPath(trk, ep);
+ //PASSERT( "computeProfElem", ep2 >= 0, NOP );
+ }
+ dist += GetTrkLength(trk, ep, ep2);
+ ChkElev(trk, ep2, ep, dist, &defined);
+ if (!go) {
+ break;
+ }
+ trkN = GetTrkEndTrk(trk,ep2);
+ ep = GetEndPtConnectedToMe(trkN,trk);
+ trk = trkN;
+ }
}
static void DumpProfElems(void)
{
- track_p trk, trkN;
- EPINX_T ep;
- BOOL_T go;
-
- trk = pathStartTrk;
- ep = pathStartEp;
-
- if (pathStartTrk==NULL) {
- lprintf("s--:- e--:-");
- } else if (pathEndTrk == NULL) {
- lprintf("sT%d:%d e--:-", GetTrkIndex(pathStartTrk), pathStartEp);
- } else {
- lprintf("sT%d:%d eT%d:%d", GetTrkIndex(pathStartTrk), pathStartEp,
- GetTrkIndex(pathEndTrk), pathEndEp);
- }
- lprintf(" { ");
- go = TRUE;
- if (!PathListSingle())
- while (trk) {
- EPINX_T ep2;
- if (trk==pathEndTrk) {
- ep2 = pathEndEp;
- go = FALSE;
- } else {
- ep2 = GetNextTrkOnPath(trk, ep);
- PASSERT("computeProfElem", ep2 >= 0, NOP);
- }
- lprintf("T%d:%d:%d ", GetTrkIndex(trk), ep, ep2);
- if (!go) {
- break;
- }
- trkN = GetTrkEndTrk(trk,ep2);
- ep = GetEndPtConnectedToMe(trkN,trk);
- trk = trkN;
- }
- lprintf("}");
+ track_p trk, trkN;
+ EPINX_T ep;
+ BOOL_T go;
+
+ trk = pathStartTrk;
+ ep = pathStartEp;
+
+ if (pathStartTrk==NULL) {
+ lprintf("s--:- e--:-");
+ } else if (pathEndTrk == NULL) {
+ lprintf("sT%d:%d e--:-", GetTrkIndex(pathStartTrk), pathStartEp);
+ } else {
+ lprintf("sT%d:%d eT%d:%d", GetTrkIndex(pathStartTrk), pathStartEp,
+ GetTrkIndex(pathEndTrk), pathEndEp);
+ }
+ lprintf(" { ");
+ go = TRUE;
+ if (!PathListSingle())
+ while (trk) {
+ EPINX_T ep2;
+ if (trk==pathEndTrk) {
+ ep2 = pathEndEp;
+ go = FALSE;
+ } else {
+ ep2 = GetNextTrkOnPath(trk, ep);
+ PASSERT("computeProfElem", ep2 >= 0, NOP);
+ }
+ lprintf("T%d:%d:%d ", GetTrkIndex(trk), ep, ep2);
+ if (!go) {
+ break;
+ }
+ trkN = GetTrkEndTrk(trk,ep2);
+ ep = GetEndPtConnectedToMe(trkN,trk);
+ trk = trkN;
+ }
+ lprintf("}");
}
static void ProfileSelect(track_p trkN, EPINX_T epN)
{
- track_p trkP;
- EPINX_T epP=-1;
- int rc;
-
- if (log_profile>=1) {
- DumpProfElems();
- lprintf(" @ T%d:%d ", GetTrkIndex(trkN), epN);
- if (log_profile>=2) {
- lprintf("\n");
- }
- }
-
- trkP = GetTrkEndTrk(trkN, epN);
- if (trkP) {
- epP = GetEndPtConnectedToMe(trkP, trkN);
- }
-
- if (!PathListCheck()) {
- return;
- }
-
- if (PathListEmpty()) {
- pathStartTrk = trkN;
- pathStartEp = epN;
- pathEndTrk = trkP;
- pathEndEp = epP;
- LOG(log_profile, 2, ("Adding first element\n"))
-
- } else if (PathListSingle() &&
- ((trkN == pathStartTrk && epN == pathStartEp) ||
- (trkP && trkP == pathStartTrk && epP == pathStartEp))) {
- pathStartTrk = pathEndTrk = NULL;
- LOG(log_profile, 2, ("Clearing list\n"))
-
- } else if ((trkN == pathStartTrk && epN == pathStartEp) ||
- (trkP && trkP == pathStartTrk && epP == pathStartEp)) {
- RemoveTracksFromPath(&pathStartTrk, &pathStartEp, pathEndTrk, pathEndEp);
- LOG(log_profile, 2, ("Removing first element\n"))
-
- } else if ((trkN == pathEndTrk && epN == pathEndEp) ||
- (trkP && trkP == pathEndTrk && epP == pathEndEp)) {
- RemoveTracksFromPath(&pathEndTrk, &pathEndEp, pathStartTrk, pathStartEp);
- LOG(log_profile, 2, ("Removing last element\n"))
-
- } else if ((GetTrkBits(trkN)&TB_PROFILEPATH) || (trkP &&
- (GetTrkBits(trkP)&TB_PROFILEPATH))) {
- ErrorMessage(MSG_EP_ON_PATH);
- return;
-
- } else if ((rc = FindProfileShortestPath(trkN, epN)) > 0) {
- if (!(GetTrkBits(trkN)&TB_PROFILEPATH)) {
- PASSERT("profileSelect", trkP != NULL, NOP);
- trkN = trkP;
- epN = epP;
- LOG(log_profile, 2, ("Invert selected EP\n"))
- }
-
- switch (profileShortestPathMatch) {
- case 1:
- /* extend Start */
- pathStartTrk = trkN;
- pathStartEp = epN;
- LOG(log_profile, 2, ("Prepending Path\n"))
- break;
- case 2:
- /* extend End */
- pathEndTrk = trkN;
- pathEndEp = epN;
- LOG(log_profile, 2, ("Appending Path\n"))
- break;
- case 3:
- /* need to flip */
- pathStartTrk = pathEndTrk;
- pathStartEp = pathEndEp;
- pathEndTrk = trkN;
- pathEndEp = epN;
- LOG(log_profile, 2, ("Flip/Appending Path\n"))
- break;
- default:
- AbortProg("findPaths:1");
- }
-
- } else {
- ErrorMessage(MSG_NO_PATH_TO_EP);
- return;
- }
-
- DestroyCopyOfProfileElements();
- ComputeProfElem();
- CreateCopyProfileElements();
-
- RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
- DoProfileChangeMode(NULL);
- if (log_profile>=1) {
- lprintf(" = ");
- DumpProfElems();
- lprintf("\n");
- }
- PathListCheck();
+ track_p trkP;
+ EPINX_T epP=-1;
+ int rc;
+
+ if (log_profile>=1) {
+ DumpProfElems();
+ lprintf(" @ T%d:%d ", GetTrkIndex(trkN), epN);
+ if (log_profile>=2) {
+ lprintf("\n");
+ }
+ }
+
+ trkP = GetTrkEndTrk(trkN, epN);
+ if (trkP) {
+ epP = GetEndPtConnectedToMe(trkP, trkN);
+ }
+
+ if (!PathListCheck()) {
+ return;
+ }
+
+ if (PathListEmpty()) {
+ pathStartTrk = trkN;
+ pathStartEp = epN;
+ pathEndTrk = trkP;
+ pathEndEp = epP;
+ LOG(log_profile, 2, ("Adding first element\n"))
+
+ } else if (PathListSingle() &&
+ ((trkN == pathStartTrk && epN == pathStartEp) ||
+ (trkP && trkP == pathStartTrk && epP == pathStartEp))) {
+ pathStartTrk = pathEndTrk = NULL;
+ LOG(log_profile, 2, ("Clearing list\n"))
+
+ } else if ((trkN == pathStartTrk && epN == pathStartEp) ||
+ (trkP && trkP == pathStartTrk && epP == pathStartEp)) {
+ RemoveTracksFromPath(&pathStartTrk, &pathStartEp, pathEndTrk, pathEndEp);
+ LOG(log_profile, 2, ("Removing first element\n"))
+
+ } else if ((trkN == pathEndTrk && epN == pathEndEp) ||
+ (trkP && trkP == pathEndTrk && epP == pathEndEp)) {
+ RemoveTracksFromPath(&pathEndTrk, &pathEndEp, pathStartTrk, pathStartEp);
+ LOG(log_profile, 2, ("Removing last element\n"))
+
+ } else if ((GetTrkBits(trkN)&TB_PROFILEPATH) || (trkP &&
+ (GetTrkBits(trkP)&TB_PROFILEPATH))) {
+ ErrorMessage(MSG_EP_ON_PATH);
+ return;
+
+ } else if ((rc = FindProfileShortestPath(trkN, epN)) > 0) {
+ if (!(GetTrkBits(trkN)&TB_PROFILEPATH)) {
+ PASSERT("profileSelect", trkP != NULL, NOP);
+ trkN = trkP;
+ epN = epP;
+ LOG(log_profile, 2, ("Invert selected EP\n"))
+ }
+
+ switch (profileShortestPathMatch) {
+ case 1:
+ /* extend Start */
+ pathStartTrk = trkN;
+ pathStartEp = epN;
+ LOG(log_profile, 2, ("Prepending Path\n"))
+ break;
+ case 2:
+ /* extend End */
+ pathEndTrk = trkN;
+ pathEndEp = epN;
+ LOG(log_profile, 2, ("Appending Path\n"))
+ break;
+ case 3:
+ /* need to flip */
+ pathStartTrk = pathEndTrk;
+ pathStartEp = pathEndEp;
+ pathEndTrk = trkN;
+ pathEndEp = epN;
+ LOG(log_profile, 2, ("Flip/Appending Path\n"))
+ break;
+ default:
+ CHECK(FALSE);
+ }
+
+ } else {
+ ErrorMessage(MSG_NO_PATH_TO_EP);
+ return;
+ }
+
+ DestroyCopyOfProfileElements();
+ ComputeProfElem();
+ CreateCopyProfileElements();
+
+ RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
+ DoProfileChangeMode(NULL);
+ if (log_profile>=1) {
+ lprintf(" = ");
+ DumpProfElems();
+ lprintf("\n");
+ }
+ PathListCheck();
}
static void ProfileSubCommand(void* pcmd)
{
- long cmd = VP2L(pcmd);
- int mode;
- coOrd pos = oldMarker;
- DIST_T elev;
- DIST_T radius;
-
- if ((profilePopupTrk = OnTrack(&pos, TRUE, TRUE)) == NULL ||
- (profilePopupEp = PickEndPoint(pos, profilePopupTrk)) < 0) {
- return;
- }
- if (profileUndo==0) {
- profileUndo = TRUE;
- UndoStart(_("Profile Command"), "Profile");
- }
- radius = 0.05*mainD.scale;
- if (radius < trackGauge/2.0) {
- radius = trackGauge/2.0;
- }
- pos = GetTrkEndPos(profilePopupTrk, profilePopupEp);
- mode = GetTrkEndElevMode(profilePopupTrk, profilePopupEp);
-
- elev = 0.0;
- switch (cmd) {
- case 0:
- /* define */
- ComputeElev(profilePopupTrk, profilePopupEp, TRUE, &elev, NULL, TRUE);
- mode = ELEV_DEF|ELEV_VISIBLE;
- break;
- case 1:
- /* ignore */
- mode = ELEV_IGNORE|ELEV_VISIBLE;
- break;
- case 2:
- default:
- /* none */
- mode = ELEV_NONE;
- break;
- }
- UpdateTrkEndElev(profilePopupTrk, profilePopupEp, mode, elev, NULL);
- ComputeProfElem();
- RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
- TempRedraw(); // ProfileSubCommand
+ long cmd = VP2L(pcmd);
+ int mode;
+ coOrd pos = oldMarker;
+ DIST_T elev;
+ DIST_T radius;
+
+ if ((profilePopupTrk = OnTrack(&pos, TRUE, TRUE)) == NULL ||
+ (profilePopupEp = PickEndPoint(pos, profilePopupTrk)) < 0) {
+ return;
+ }
+ if (profileUndo==0) {
+ profileUndo = TRUE;
+ UndoStart(_("Profile Command"), "Profile");
+ }
+ radius = 0.05*mainD.scale;
+ if (radius < trackGauge/2.0) {
+ radius = trackGauge/2.0;
+ }
+ pos = GetTrkEndPos(profilePopupTrk, profilePopupEp);
+ mode = GetTrkEndElevMode(profilePopupTrk, profilePopupEp);
+
+ elev = 0.0;
+ switch (cmd) {
+ case 0:
+ /* define */
+ ComputeElev(profilePopupTrk, profilePopupEp, TRUE, &elev, NULL, TRUE);
+ mode = ELEV_DEF|ELEV_VISIBLE;
+ break;
+ case 1:
+ /* ignore */
+ mode = ELEV_IGNORE|ELEV_VISIBLE;
+ break;
+ case 2:
+ default:
+ /* none */
+ mode = ELEV_NONE;
+ break;
+ }
+ UpdateTrkEndElev(profilePopupTrk, profilePopupEp, mode, elev, NULL);
+ ComputeProfElem();
+ RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
+ TempRedraw(); // ProfileSubCommand
}
static STATUS_T CmdProfile(wAction_t action, coOrd pos)
{
- track_p trk0;
- coOrd textsize;
-
- switch (action) {
- case C_START:
- if (profileW == NULL) {
- profileColorDefinedProfile = drawColorBlue;
- profileColorUndefinedProfile = drawColorRed;
- profileColorFill = drawColorGrey80;
- DrawTextSize(&mainD, "999.9", wStandardFont(F_HELV, FALSE, FALSE),
- screenProfileFontSize, FALSE, &textsize);
- labelH = textsize.y;
- labelW = textsize.x;
- profileW = ParamCreateDialog(&profilePG, MakeWindowTitle(_("Profile")), NULL,
- NULL, wHide, TRUE, NULL, F_RESIZE, CloseProfileWindow);
- }
- ParamLoadControls(&profilePG);
- ParamGroupRecord(&profilePG);
- wShow(profileW);
- ParamLoadMessage(&profilePG, I_PROFILEMSG, _("Drag to change Elevation"));
- profElem_da.cnt = 0;
- station_da.cnt = 0;
- RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
- ClrAllTrkBitsRedraw(TB_PROFILEPATH, TRUE);
- pathStartTrk = NULL;
- SetAllTrackSelect(FALSE);
- profileUndo = FALSE;
- InfoMessage(_("Select a Defined Elevation to start profile"));
- TempRedraw(); // CmdProfile C_START
- return C_CONTINUE;
- case C_LCLICK:
- InfoMessage("");
- if ((trk0 = OnTrack(&pos, TRUE, TRUE)) != NULL) {
- EPINX_T ep0;
- ep0 = PickEndPoint(pos, trk0);
- if (ep0 >= 0) {
- ProfileSelect(trk0, ep0);
- }
- }
- return C_CONTINUE;
- case C_CMDMENU:
- if ((profilePopupTrk = OnTrack(&pos, TRUE, TRUE)) != NULL) {
- profilePopupEp = PickEndPoint(pos, profilePopupTrk);
- if (profilePopupEp >= 0) {
- int mode;
- mode = GetTrkEndElevMode(profilePopupTrk, profilePopupEp);
- if (mode != ELEV_DEF && mode != ELEV_IGNORE && mode != ELEV_NONE) {
- ErrorMessage(MSG_CHANGE_ELEV_MODE);
- } else {
- wMenuToggleEnable(profilePopupToggles[1], TRUE);
- if (OnPath(profilePopupTrk, profilePopupEp) & (ONPATH_END|ONPATH_MID)) {
- wMenuToggleEnable(profilePopupToggles[1], FALSE);
- }
- wMenuToggleSet(profilePopupToggles[0], mode == ELEV_DEF);
- wMenuToggleSet(profilePopupToggles[1], mode == ELEV_IGNORE);
- wMenuToggleSet(profilePopupToggles[2], mode == ELEV_NONE);
- menuPos = pos;
- wMenuPopupShow(profilePopupM);
- }
- }
- }
- return C_CONTINUE;
- case C_OK:
- DoProfileDone(NULL);
- return C_TERMINATE;
- case C_CANCEL:
- wHide(profileW);
- ClrAllTrkBitsRedraw(TB_PROFILEPATH, TRUE);
- return C_TERMINATE;
- case C_REDRAW:
- if (wWinIsVisible(profileW)) {
- HilightProfileElevations(wWinIsVisible(profileW));
- }
- return C_CONTINUE;
- }
- return C_CONTINUE;
+ track_p trk0;
+ coOrd textsize;
+
+ switch (action) {
+ case C_START:
+ if (profileW == NULL) {
+ profileColorDefinedProfile = drawColorBlue;
+ profileColorUndefinedProfile = drawColorRed;
+ profileColorFill = drawColorGrey80;
+ DrawTextSize(&mainD, "999.9", wStandardFont(F_HELV, FALSE, FALSE),
+ screenProfileFontSize, FALSE, &textsize);
+ labelH = textsize.y;
+ labelW = textsize.x;
+ profileW = ParamCreateDialog(&profilePG, MakeWindowTitle(_("Profile")), NULL,
+ NULL, wHide, TRUE, NULL, F_RESIZE, CloseProfileWindow);
+ }
+ ParamLoadControls(&profilePG);
+ ParamGroupRecord(&profilePG);
+ wShow(profileW);
+ ParamLoadMessage(&profilePG, I_PROFILEMSG, _("Drag to change Elevation"));
+ DYNARR_RESET( profElem_t, profElem_da );
+ DYNARR_RESET( station_t, station_da );
+ RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
+ ClrAllTrkBitsRedraw(TB_PROFILEPATH, TRUE);
+ pathStartTrk = NULL;
+ SetAllTrackSelect(FALSE);
+ profileUndo = FALSE;
+ InfoMessage(_("Select a Defined Elevation to start profile"));
+ TempRedraw(); // CmdProfile C_START
+ return C_CONTINUE;
+ case C_LCLICK:
+ InfoMessage("");
+ if ((trk0 = OnTrack(&pos, TRUE, TRUE)) != NULL) {
+ EPINX_T ep0;
+ ep0 = PickEndPoint(pos, trk0);
+ if (ep0 >= 0) {
+ ProfileSelect(trk0, ep0);
+ }
+ }
+ return C_CONTINUE;
+ case C_CMDMENU:
+ if ((profilePopupTrk = OnTrack(&pos, TRUE, TRUE)) != NULL) {
+ profilePopupEp = PickEndPoint(pos, profilePopupTrk);
+ if (profilePopupEp >= 0) {
+ int mode;
+ mode = GetTrkEndElevMode(profilePopupTrk, profilePopupEp);
+ if (mode != ELEV_DEF && mode != ELEV_IGNORE && mode != ELEV_NONE) {
+ ErrorMessage(MSG_CHANGE_ELEV_MODE);
+ } else {
+ wMenuToggleEnable(profilePopupToggles[1], TRUE);
+ if (OnPath(profilePopupTrk, profilePopupEp) & (ONPATH_END|ONPATH_MID)) {
+ wMenuToggleEnable(profilePopupToggles[1], FALSE);
+ }
+ wMenuToggleSet(profilePopupToggles[0], mode == ELEV_DEF);
+ wMenuToggleSet(profilePopupToggles[1], mode == ELEV_IGNORE);
+ wMenuToggleSet(profilePopupToggles[2], mode == ELEV_NONE);
+ menuPos = pos;
+ wMenuPopupShow(profilePopupM);
+ }
+ }
+ }
+ return C_CONTINUE;
+ case C_OK:
+ DoProfileDone(NULL);
+ return C_TERMINATE;
+ case C_CANCEL:
+ wHide(profileW);
+ ClrAllTrkBitsRedraw(TB_PROFILEPATH, TRUE);
+ return C_TERMINATE;
+ case C_REDRAW:
+ if (wWinIsVisible(profileW)) {
+ HilightProfileElevations(wWinIsVisible(profileW));
+ }
+ return C_CONTINUE;
+ }
+ return C_CONTINUE;
}
static void ProfileChange(long changes)
{
- if ((changes & CHANGE_UNITS) && screenProfileD.d) {
- RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
- }
+ if ((changes & CHANGE_UNITS) && screenProfileD.d) {
+ RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
+ }
}
-#include "bitmaps/profile.xpm"
+#include "bitmaps/profile.xpm3"
EXPORT void InitCmdProfile(wMenu_p menu)
{
- log_profile = LogFindIndex("profile");
- ParamRegister(&profilePG);
-
- AddMenuButton(menu, CmdProfile, "cmdProfile", _("Profile"),
- wIconCreatePixMap(profile_xpm[iconSize]), LEVEL0_50, IC_LCLICK|IC_CMDMENU|IC_POPUP3,
- ACCL_PROFILE, NULL);
- profilePopupM = MenuRegister("Profile Mode");
- profilePopupToggles[0] = wMenuToggleCreate(profilePopupM, "", _("Define"), 0,
- FALSE, ProfileSubCommand, I2VP(0));
- profilePopupToggles[1] = wMenuToggleCreate(profilePopupM, "", _("Ignore"), 0,
- FALSE, ProfileSubCommand, I2VP(1));
- profilePopupToggles[2] = wMenuToggleCreate(profilePopupM, "", _("None"), 0,
- FALSE, ProfileSubCommand, I2VP(2));
- RegisterChangeNotification(ProfileChange);
+ log_profile = LogFindIndex("profile");
+ ParamRegister(&profilePG);
+
+ AddMenuButton(menu, CmdProfile, "cmdProfile", _("Profile"),
+ wIconCreatePixMap(profile_xpm3[iconSize]), LEVEL0_50,
+ IC_LCLICK|IC_CMDMENU|IC_POPUP3,
+ ACCL_PROFILE, NULL);
+ profilePopupM = MenuRegister("Profile Mode");
+ profilePopupToggles[0] = wMenuToggleCreate(profilePopupM, "", _("Define"), 0,
+ FALSE, ProfileSubCommand, I2VP(0));
+ profilePopupToggles[1] = wMenuToggleCreate(profilePopupM, "", _("Ignore"), 0,
+ FALSE, ProfileSubCommand, I2VP(1));
+ profilePopupToggles[2] = wMenuToggleCreate(profilePopupM, "", _("None"), 0,
+ FALSE, ProfileSubCommand, I2VP(2));
+ RegisterChangeNotification(ProfileChange);
}
diff --git a/app/bin/cpull.c b/app/bin/cpull.c
index afdf834..af6642e 100644
--- a/app/bin/cpull.c
+++ b/app/bin/cpull.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 "cselect.h"
@@ -37,22 +37,22 @@ DIST_T littleD = 0.1;
static double factorX=10, factorY=100, factorA=0.2;
typedef struct {
- double X, Y, A, T;
- } cost_t;
+ double X, Y, A, T;
+} cost_t;
static cost_t sumCosts;
static cost_t maxCosts;
static int maxCostsInx;
typedef struct {
- coOrd p[2];
- ANGLE_T a[2];
- ANGLE_T angle;
- DIST_T dist;
- track_p trk;
- EPINX_T ep[2];
- cost_t costs[2];
- double contrib;
- coOrd pp;
- } section_t, *section_p;
+ coOrd p[2];
+ ANGLE_T a[2];
+ ANGLE_T angle;
+ DIST_T dist;
+ track_p trk;
+ EPINX_T ep[2];
+ cost_t costs[2];
+ double contrib;
+ coOrd pp;
+} section_t, *section_p;
static dynArr_t section_da;
#define section(N) DYNARR_N( section_t, section_da, N )
static double contribL, contribR;
@@ -67,10 +67,10 @@ typedef enum { freeEnd, connectedEnd, loopEnd } ending_e;
* Utilities
*/
static ending_e GetConnectedTracks(
- track_p trk,
- EPINX_T ep,
- track_p endTrk,
- EPINX_T endEp )
+ track_p trk,
+ EPINX_T ep,
+ track_p endTrk,
+ EPINX_T endEp )
{
track_p trk1;
EPINX_T ep1, ep2;
@@ -81,15 +81,15 @@ static ending_e GetConnectedTracks(
trk1 = NULL;
} else {
ep2 = GetNextTrk( trk, ep, &trk1, &ep1, 0 );
- if (trk1 == NULL)
+ if (trk1 == NULL) {
return freeEnd;
+ }
}
if ( ep2 >= 0 ) {
int inx;
- for (inx=0;inx<section_da.cnt;inx++) {
- if ( section(inx).trk == trk ) {
- AbortProg("GetConnectedTracks(T%d already selected)", GetTrkIndex(trk));
- }
+ for (inx=0; inx<section_da.cnt; inx++) {
+ CHECKMSG( section(inx).trk != trk, ("GetConnectedTracks(T%d already selected)",
+ GetTrkIndex(trk)) );
}
}
DYNARR_APPEND( section_t, section_da, 10 );
@@ -99,17 +99,19 @@ static ending_e GetConnectedTracks(
sp->ep[1] = ep2;
sp->p[0] = GetTrkEndPos(trk,ep);
sp->costs[0].X = sp->costs[0].Y = sp->costs[0].A = sp->costs[0].T =
- sp->costs[1].X = sp->costs[1].Y = sp->costs[1].A = sp->costs[1].T =0.0;
+ sp->costs[1].X = sp->costs[1].Y = sp->costs[1].A = sp->costs[1].T =0.0;
sp->a[0] = GetTrkEndAngle(trk,ep);
sp->a[1] = 0;
- if (ep2 < 0)
+ if (ep2 < 0) {
return connectedEnd;
+ }
sp->p[1] = GetTrkEndPos(trk,ep2);
sp->dist = FindDistance( GetTrkEndPos(trk,ep), GetTrkEndPos(trk,ep2) );
sp->angle = NormalizeAngle( GetTrkEndAngle(trk,ep2)-GetTrkEndAngle(trk,ep) );
sp->a[1] = GetTrkEndAngle(trk,ep2);
- if (trk == endTrk)
+ if (trk == endTrk) {
return loopEnd;
+ }
trk = trk1;
ep = ep1;
}
@@ -119,10 +121,10 @@ static ending_e GetConnectedTracks(
* Simple move to connect
*/
static void MoveConnectedTracks(
- track_p trk1,
- EPINX_T ep1,
- coOrd pos,
- ANGLE_T angle )
+ track_p trk1,
+ EPINX_T ep1,
+ coOrd pos,
+ ANGLE_T angle )
{
EPINX_T ep, ep2;
track_p trk;
@@ -140,10 +142,10 @@ static void MoveConnectedTracks(
RotateTrack( trk1, pos, a );
DrawNewTrack( trk1 );
ep2 = GetNextTrk( trk1, ep1, &trk, &ep, 0 );
- if (trk==NULL)
+ if (trk==NULL) {
return;
- if (ep2 < 0)
- AbortProg("MoveConnectedTracks(T%d rooted)", GetTrkIndex(trk1));
+ }
+ CHECKMSG( ep2 >= 0, ("MoveConnectedTracks(T%d rooted)", GetTrkIndex(trk1)) );;
angle = NormalizeAngle(GetTrkEndAngle( trk1, ep2 )+180.0);
pos = GetTrkEndPos( trk1, ep2 );
trk1 = trk;
@@ -156,7 +158,7 @@ static void MoveConnectedTracks(
* Helpers for complex case
*/
static void ReverseSectionList(
- int start, int end )
+ int start, int end )
{
int up, down;
section_t tmpUp, tmpDown;
@@ -200,25 +202,28 @@ static int CheckConnections( void )
sp = &section(inx);
dist = FindDistance( sp[0].p[0], sp[-1].p[1] );
angle = NormalizeAngle( sp[0].a[0] - sp[-1].a[1] + 180.0 + connectAngle/2 );
- if (dist > connectDistance)
+ if (dist > connectDistance) {
rc |= DIST_FAULT;
- if (angle > connectAngle)
+ }
+ if (angle > connectAngle) {
rc |= ANGLE_FAULT;
+ }
}
return rc;
}
static void ComputeCost(
- coOrd p,
- ANGLE_T a,
- section_p sp )
+ coOrd p,
+ ANGLE_T a,
+ section_p sp )
{
ANGLE_T da;
coOrd pp;
da = NormalizeAngle( sp->a[0]+180.0-a );
- if (da>180)
+ if (da>180) {
da = 360.0-a;
+ }
sp->costs[0].A = da*factorA;
pp = sp->p[0];
Rotate( &pp, p, -a );
@@ -226,8 +231,9 @@ static void ComputeCost(
pp.y -= p.y;
sp->costs[0].X = fabs(pp.y*factorX);
sp->costs[0].Y = fabs(pp.x*factorY);
- if ( pp.x < -0.010 )
+ if ( pp.x < -0.010 ) {
sp->costs[0].X *= 100;
+ }
sp->costs[0].T = sp->costs[0].X+sp->costs[0].Y;
}
@@ -242,9 +248,9 @@ static void ComputeCosts( void )
for (inx=1; inx<section_da.cnt; inx++) {
sp = &section(inx);
ComputeCost( sp[-1].p[1], sp[-1].a[1], sp );
-if (debugPull) {
-/*printf("%2d: X=%0.3f Y=%0.3f A=%0.3f T=%0.3f\n", inx, sp->costs[0].X, sp->costs[0].Y, sp->costs[0].A, sp->costs[0].T );*/
-}
+ if (debugPull) {
+ /*printf("%2d: X=%0.3f Y=%0.3f A=%0.3f T=%0.3f\n", inx, sp->costs[0].X, sp->costs[0].Y, sp->costs[0].A, sp->costs[0].T );*/
+ }
sumCosts.A += sp->costs[0].A;
sumCosts.X += sp->costs[0].X;
sumCosts.Y += sp->costs[0].Y;
@@ -261,11 +267,11 @@ if (debugPull) {
static double ComputeContrib(
- DIST_T dist,
- ANGLE_T angle,
- int start,
- int end,
- EPINX_T ep )
+ DIST_T dist,
+ ANGLE_T angle,
+ int start,
+ int end,
+ EPINX_T ep )
{
int inx;
section_p sp;
@@ -292,27 +298,30 @@ static void ComputeContribs( coOrd *rp1 )
Rotate( &p1, p0, -sp[0].a[0] );
p1.x -= p0.x;
p1.y -= p0.y;
- if (sp->costs[0].X > 0.000001 && sp->costs[0].X > aveX)
+ if (sp->costs[0].X > 0.000001 && sp->costs[0].X > aveX) {
p1.y *= 1-aveX/sp->costs[0].X;
- else
+ } else {
p1.y = 0.0;
- if (sp->costs[0].Y > 0.000001 && sp->costs[0].Y > aveY)
+ }
+ if (sp->costs[0].Y > 0.000001 && sp->costs[0].Y > aveY) {
p1.x *= 1-aveY/sp->costs[0].Y;
- else
+ } else {
p1.x = 0.0;
+ }
Rotate( &p1, zero, sp[0].a[0] );
dist = FindDistance( zero, p1 );
angle = FindAngle( zero, p1 );
- contribL = ComputeContrib( dist, NormalizeAngle(angle+180.0), 1, maxCostsInx-1, 0 );
+ contribL = ComputeContrib( dist, NormalizeAngle(angle+180.0), 1, maxCostsInx-1,
+ 0 );
contribR = ComputeContrib( dist, angle, maxCostsInx, section_da.cnt-2, 1 );
if (debugPull) {
printf( "Minx=%d D=%0.3f A=%0.3f X=%0.3f Y=%0.3f L=%0.3f R=%0.3f\n",
- maxCostsInx, dist, angle, p1.x, p1.y, contribL, contribR );
+ maxCostsInx, dist, angle, p1.x, p1.y, contribL, contribR );
sp = &section(0);
printf( " 0[%d] [%0.3f %0.3f] [%0.3f %0.3f]\n",
- GetTrkIndex(sp->trk),
- sp[0].p[0].x, sp[0].p[0].y, sp[0].p[1].x, sp[0].p[1].y );
+ GetTrkIndex(sp->trk),
+ sp[0].p[0].x, sp[0].p[0].y, sp[0].p[1].x, sp[0].p[1].y );
}
*rp1 = p1;
}
@@ -322,8 +331,8 @@ static void ComputeContribs( coOrd *rp1 )
* Shufflers
*/
static void AdjustSection(
- section_p sp,
- coOrd amount )
+ section_p sp,
+ coOrd amount )
{
sp->p[0].x += amount.x;
sp->p[0].y += amount.y;
@@ -368,13 +377,16 @@ static void DumpSections( void )
sp = &section(inx);
dist = FindDistance( sp[0].p[0], sp[-1].p[1] );
printf( "%2d[%d] X%0.3f Y%0.3f A%0.3f T%0.3f C%0.3f x%0.3f y%0.3f [%0.3f %0.3f] [%0.3f %0.3f] dd%0.3f da%0.3f\n",
- inx, GetTrkIndex(sp->trk), sp->costs[0].X, sp->costs[0].Y, sp->costs[0].A, sp->costs[0].T,
- sp->contrib, sp->pp.x, sp->pp.y,
- sp[0].p[0].x, sp[0].p[0].y, sp[0].p[1].x, sp[0].p[1].y,
- dist,
- (dist>0.001)?NormalizeAngle( FindAngle( sp[0].p[0], sp[-1].p[1] ) - sp[0].a[0] ):0.0 );
+ inx, GetTrkIndex(sp->trk), sp->costs[0].X, sp->costs[0].Y, sp->costs[0].A,
+ sp->costs[0].T,
+ sp->contrib, sp->pp.x, sp->pp.y,
+ sp[0].p[0].x, sp[0].p[0].y, sp[0].p[1].x, sp[0].p[1].y,
+ dist,
+ (dist>0.001)?NormalizeAngle( FindAngle( sp[0].p[0],
+ sp[-1].p[1] ) - sp[0].a[0] ):0.0 );
}
- printf("== X%0.3f Y%0.3f A%0.3f T%0.3f\n", sumCosts.X, sumCosts.Y, sumCosts.A, sumCosts.T );
+ printf("== X%0.3f Y%0.3f A%0.3f T%0.3f\n", sumCosts.X, sumCosts.Y, sumCosts.A,
+ sumCosts.T );
}
@@ -387,22 +399,28 @@ static int MinimizeCosts( void )
int inx;
int rc = 0;
coOrd p1;
- if (section_da.cnt <= 0)
+ if (section_da.cnt <= 0) {
return FALSE;
+ }
for (inx=0; inx<iterCnt; inx++) {
rc = CheckConnections();
ComputeCosts();
- if (maxCostsInx<0)
+ if (maxCostsInx<0) {
return TRUE;
+ }
ComputeContribs( &p1 );
- if (contribR+contribL <= 0.001)
+ if (contribR+contribL <= 0.001) {
return rc;
+ }
if (maxCosts.T*1.1 < sumCosts.T/(contribR+contribL) && rc)
/* our work is done */
+ {
return rc;
+ }
AdjustSections( p1 );
- if (debugPull)
+ if (debugPull) {
DumpSections();
+ }
}
return rc;
}
@@ -422,9 +440,9 @@ static void MoveSectionTracks( void )
oldPos = GetTrkEndPos( sp->trk, sp->ep[0] );
amount.x = sp->p[0].x-oldPos.x;
amount.y = sp->p[0].y-oldPos.y;
-if (debugPull) {
-printf("%2d: X%0.3f Y%0.3f\n", inx, amount.x, amount.y );
-}
+ if (debugPull) {
+ printf("%2d: X%0.3f Y%0.3f\n", inx, amount.x, amount.y );
+ }
if (fabs(amount.x)>0.001 || fabs(amount.y)>0.001) {
UndrawNewTrack( sp->trk );
UndoModify( sp->trk );
@@ -438,10 +456,10 @@ printf("%2d: X%0.3f Y%0.3f\n", inx, amount.x, amount.y );
static void PullTracks(
- track_p trk1,
- EPINX_T ep1,
- track_p trk2,
- EPINX_T ep2 )
+ track_p trk1,
+ EPINX_T ep1,
+ track_p trk2,
+ EPINX_T ep2 )
{
ending_e e1, e2;
DIST_T d;
@@ -449,7 +467,8 @@ static void PullTracks(
coOrd p1, p2;
ANGLE_T a1, a2;
coOrd p;
- int cnt1, cnt2;
+ int cnt1;
+// int cnt2;
int rc;
if (QueryTrack(trk1,Q_CAN_ADD_ENDPOINTS)) {
@@ -460,13 +479,15 @@ static void PullTracks(
return;
}
- if (ep1<0 || ep2<0 ) return;
+ if (ep1<0 || ep2<0 ) { return; }
- if (ConnectAbuttingTracks( trk1, ep1, trk2, ep2 ))
+ if (ConnectAbuttingTracks( trk1, ep1, trk2, ep2 )) {
return;
+ }
- if (ConnectAdjustableTracks( trk1, ep1, trk2, ep2 ))
+ if (ConnectAdjustableTracks( trk1, ep1, trk2, ep2 )) {
return;
+ }
p1 = GetTrkEndPos( trk1, ep1 );
@@ -479,23 +500,25 @@ static void PullTracks(
ErrorMessage( MSG_TOO_FAR_APART_DIVERGE );
return;
}
- UndoStart( _("Pull Tracks"), "PullTracks(T%d[%d] T%d[%d] D%0.3f A%0.3F )", GetTrkIndex(trk1), ep1, GetTrkIndex(trk2), ep2, d, a );
-
+ UndoStart( _("Pull Tracks"), "PullTracks(T%d[%d] T%d[%d] D%0.3f A%0.3F )",
+ GetTrkIndex(trk1), ep1, GetTrkIndex(trk2), ep2, d, a );
+
DYNARR_RESET( section_t, section_da );
e1 = e2 = GetConnectedTracks( trk1, ep1, trk2, ep2 );
cnt1 = section_da.cnt;
if ( e1 != loopEnd ) {
e2 = GetConnectedTracks( trk2, ep2, trk1, ep1 );
- }
- cnt2 = section_da.cnt - cnt1;
+ }
+// cnt2 = section_da.cnt - cnt1;
if ( e1 == freeEnd && e2 == freeEnd ) {
p.x = (p1.x+p2.x)/2.0;
p.y = (p1.y+p2.y)/2.0;
a = NormalizeAngle( (a1-(a2+180.0)) );
- if ( a < 180.0 )
+ if ( a < 180.0 ) {
a = NormalizeAngle(a1 + a/2.0);
- else
+ } else {
a = NormalizeAngle(a1 - (360-a)/2.0);
+ }
MoveConnectedTracks( trk1, ep1, p, a );
MoveConnectedTracks( trk2, ep2, p, a+180.0 );
} else if ( e1 == freeEnd ) {
@@ -545,8 +568,8 @@ static void PullTracks(
*/
static void TightenTracks(
- track_p trk,
- EPINX_T ep )
+ track_p trk,
+ EPINX_T ep )
{
track_p trk1;
EPINX_T ep1, ep2;
@@ -559,8 +582,9 @@ static void TightenTracks(
ep = ep1;
}
trk1 = GetTrkEndTrk( trk, ep );
- if (trk1 == NULL)
+ if (trk1 == NULL) {
return;
+ }
ep1 = GetEndPtConnectedToMe( trk1, trk );
cnt = 0;
while(1) {
@@ -571,9 +595,9 @@ static void TightenTracks(
p1.x = p0.x - p1.x;
p1.y = p0.y - p1.y;
a1 = NormalizeAngle( a0-a1 );
-if (debugPull) {
-printf("T%d [%0.3f %0.3f %0.3f]\n", GetTrkIndex(trk1), p1.x, p1.y, a1 );
-}
+ if (debugPull) {
+ printf("T%d [%0.3f %0.3f %0.3f]\n", GetTrkIndex(trk1), p1.x, p1.y, a1 );
+ }
if ( FindDistance( zero, p1 ) > 0.001 || ( a1 > 0.05 && a1 < 365.95 ) ) {
UndrawNewTrack( trk1 );
UndoModify( trk1 );
@@ -584,15 +608,16 @@ printf("T%d [%0.3f %0.3f %0.3f]\n", GetTrkIndex(trk1), p1.x, p1.y, a1 );
}
trk = trk1;
ep = GetNextTrk( trk, ep1, &trk1, &ep1, 0 );
- if (trk1 == NULL)
+ if (trk1 == NULL) {
break;
- if (ep<0)
- AbortProg( "tightenTracks: can't happen" );
+ }
+ CHECK(ep>=0);
}
InfoMessage( _("%d tracks moved"), cnt );
}
-static void CreateConnectAnchor(EPINX_T ep, track_p t, BOOL_T shift) {
+static void CreateConnectAnchor(EPINX_T ep, track_p t, BOOL_T shift)
+{
coOrd pos = GetTrkEndPos(t,ep);
DIST_T d = tempD.scale*0.15;
DIST_T w = tempD.scale/tempD.dpi*4;
@@ -606,7 +631,7 @@ static void CreateConnectAnchor(EPINX_T ep, track_p t, BOOL_T shift) {
anchors(i).u.l.pos[0] = pos;
Translate(&anchors(i).u.l.pos[1],pos,a+90,-GetTrkGauge(t));
Translate(&anchors(i).u.l.pos[1],anchors(i).u.l.pos[1],a,-d);
- anchors(i).width = w;
+ anchors(i).lineWidth = w;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
i = anchors_da.cnt-1;
anchors(i).type = SEG_STRLIN;
@@ -614,7 +639,7 @@ static void CreateConnectAnchor(EPINX_T ep, track_p t, BOOL_T shift) {
anchors(i).u.l.pos[0] = pos;
Translate(&anchors(i).u.l.pos[1],pos,a+90,GetTrkGauge(t));
Translate(&anchors(i).u.l.pos[1],anchors(i).u.l.pos[1],a,-d);
- anchors(i).width = w;
+ anchors(i).lineWidth = w;
} else {
DYNARR_APPEND(trkSeg_t,anchors_da,1);
i = anchors_da.cnt-1;
@@ -624,7 +649,7 @@ static void CreateConnectAnchor(EPINX_T ep, track_p t, BOOL_T shift) {
Translate(&anchors(i).u.l.pos[0],anchors(i).u.l.pos[0],a,d);
Translate(&anchors(i).u.l.pos[1],pos,a+90,-GetTrkGauge(t));
Translate(&anchors(i).u.l.pos[1],anchors(i).u.l.pos[1],a,-d);
- anchors(i).width = w;
+ anchors(i).lineWidth = w;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
i = anchors_da.cnt-1;
anchors(i).type = SEG_STRLIN;
@@ -633,24 +658,28 @@ static void CreateConnectAnchor(EPINX_T ep, track_p t, BOOL_T shift) {
Translate(&anchors(i).u.l.pos[0],anchors(i).u.l.pos[0],a,-d);
Translate(&anchors(i).u.l.pos[1],pos,a+90,-GetTrkGauge(t));
Translate(&anchors(i).u.l.pos[1],anchors(i).u.l.pos[1],a,d);
- anchors(i).width = w;
+ anchors(i).lineWidth = w;
}
}
-STATUS_T ConnectMultiple() {
+STATUS_T ConnectMultiple()
+{
int countTracksR0 =0,countTracksR1 =0, possibleEndPoints =0;
if (selectedTrackCount==0) {
- ErrorMessage(_("Connect Multiple Tracks - Select multiple tracks to join first"));
+ ErrorMessage(
+ _("Connect Multiple Tracks - Select multiple tracks to join first"));
return C_CONTINUE;
}
- if (NoticeMessage(_("Try to Connect all Selected Tracks?"), _("Yes"), _("No"))<=0) return C_CONTINUE;
+ if (NoticeMessage(_("Try to Connect all Selected Tracks?"), _("Yes"),
+ _("No"))<=0) { return C_CONTINUE; }
track_p trk1 = NULL;
track_p trk2 = NULL;
EPINX_T ep1,ep2;
ANGLE_T a;
DIST_T d;
UndoStart( _("ReConnect"),"Try to reconnect all selected tracks");
- for (int i=0;i<2;i++) { // Try twice - in case later joins help earlier ones and to try close ones first
+ for (int i=0; i<2;
+ i++) { // Try twice - in case later joins help earlier ones and to try close ones first
while ( TrackIterate( &trk1 ) ) {
BOOL_T found = FALSE;
if ( GetTrkSelected( trk1 ) ) {
@@ -658,42 +687,46 @@ STATUS_T ConnectMultiple() {
if (!GetTrkEndTrk( trk1, ep1 )) {
trk2 = NULL;
while (!found && TrackIterate(&trk2) ) {
- if (trk1 == trk2) continue;
+ if (trk1 == trk2) { continue; }
for (ep2=0; ep2<GetTrkEndPtCnt(trk2); ep2++) {
- if (GetTrkEndTrk( trk2, ep2 )) continue;
+ if (GetTrkEndTrk( trk2, ep2 )) { continue; }
d = FindDistance(GetTrkEndPos(trk1,ep1),GetTrkEndPos(trk2,ep2));
- a = NormalizeAngle( 180+GetTrkEndAngle( trk1, ep1 ) - GetTrkEndAngle( trk2, ep2 )+(connectAngle/2.0));
+ a = NormalizeAngle( 180+GetTrkEndAngle( trk1, ep1 ) - GetTrkEndAngle( trk2,
+ ep2 )+(connectAngle/2.0));
// Take two passes. In round one favor closer connections. In round two try anything.
if ( (i==0 && (d < connectDistance) && (a < connectAngle)) ||
- (i>0 && (d<3.0 && a<7.5))) { // Match PullTracks criteria in round 2
+ (i>0 && (d<3.0 && a<7.5))) { // Match PullTracks criteria in round 2
PullTracks(trk1,ep1,trk2,ep2);
if (GetTrkEndTrk( trk2, ep2 )) {
found = TRUE;
- if (i==0)
+ if (i==0) {
countTracksR0++;
- else
+ } else {
countTracksR1++;
+ }
break; //Stop looking
- } else if (i==1) possibleEndPoints++;
+ } else if (i==1) { possibleEndPoints++; }
}
}
}
- if (found) break; //Next EndPoint
+ if (found) { break; } //Next EndPoint
}
}
}
}
}
UndoEnd();
- NoticeMessage(_("Round 1 %d and Round 2 %d tracks connected, %d close pairs of end Points were not connected"), _("Ok"), NULL, countTracksR0, countTracksR1, possibleEndPoints);
+ NoticeMessage(
+ _("Round 1 %d and Round 2 %d tracks connected, %d close pairs of end Points were not connected"),
+ _("Ok"), NULL, countTracksR0, countTracksR1, possibleEndPoints);
return C_TERMINATE;
}
static wMenu_p pullPopupM;
static STATUS_T CmdPull(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
static track_p trk1, t1, t2;
@@ -703,16 +736,19 @@ static STATUS_T CmdPull(
EPINX_T ep2;
static BOOL_T turntable;
- int countTracksR0 = 0, countTracksR1 = 0, possibleEndPoints = 0;
- BOOL_T found = FALSE;
+// int countTracksR0 = 0, countTracksR1 = 0, possibleEndPoints = 0;
+// BOOL_T found = FALSE;
switch (action&0xFF) {
case C_START:
- if (selectedTrackCount==0)
- InfoMessage( _("Select first endpoint or turntable to connect, +Shift to tighten") );
- else
- InfoMessage( _("Select first endpoint to connect, or Right-Click for connecting selected tracks (not turntable)") );
+ if (selectedTrackCount==0) {
+ InfoMessage(
+ _("Select first endpoint or turntable to connect, +Shift to tighten") );
+ } else {
+ InfoMessage(
+ _("Select first endpoint to connect, or Right-Click for connecting selected tracks (not turntable)") );
+ }
trk1 = NULL;
turntable = FALSE;
t1 = t2 = NULL;
@@ -728,35 +764,39 @@ static STATUS_T CmdPull(
if (QueryTrack(t1, Q_CAN_ADD_ENDPOINTS)) {
DrawTrack(t1,&mainD,wDrawColorBlue);
t_turn1 = TRUE;
- } else t1 = NULL;
+ } else { t1 = NULL; }
}
- if (t1 && t_ep1 >=0)
+ if (t1 && t_ep1 >=0) {
CreateConnectAnchor(t_ep1,t1,FALSE);
+ }
}
} else {
if (t1 != NULL) {
- if (t_turn1) DrawTrack(t1,&mainD,wDrawColorBlue);
- else CreateConnectAnchor(t_ep1,t1,FALSE);
+ if (t_turn1) { DrawTrack(t1,&mainD,wDrawColorBlue); }
+ else { CreateConnectAnchor(t_ep1,t1,FALSE); }
}
if ((t2= OnTrackIgnore( &pos, FALSE, TRUE, t1 )) != NULL) {
if ((t_ep2 = PickUnconnectedEndPointSilent( pos, t2 )) < 0) {
if (QueryTrack(t2, Q_CAN_ADD_ENDPOINTS)) {
DrawTrack(t2,&mainD,wDrawColorBlue);
t_turn2 = TRUE;
- } else t2 = NULL;
+ } else { t2 = NULL; }
}
- if (t2 && t_ep2 >=0)
+ if (t2 && t_ep2 >=0) {
CreateConnectAnchor(t_ep2,t2,FALSE);
+ }
}
}
} else { //Shift, tighten
t1 = OnTrack( &pos, FALSE, TRUE );
- if (t1 == NULL)
+ if (t1 == NULL) {
return C_CONTINUE;
+ }
t_ep1 = PickUnconnectedEndPointSilent( pos, t1 );
- if ( t_ep1 < 0 )
+ if ( t_ep1 < 0 ) {
return C_CONTINUE;
+ }
CreateConnectAnchor(t_ep1,t1,TRUE);
}
break;
@@ -769,7 +809,7 @@ static STATUS_T CmdPull(
if (QueryTrack(trk1, Q_CAN_ADD_ENDPOINTS)) {
turntable = TRUE;
ep1 = -1;
- } else trk1 = NULL;
+ } else { trk1 = NULL; }
} else {
InfoMessage( _("Select second endpoint or turntable to connect") );
}
@@ -787,7 +827,8 @@ static STATUS_T CmdPull(
inError = TRUE;
return C_TERMINATE;
}
- if (!turntable && QueryTrack(trk2, Q_CAN_ADD_ENDPOINTS)) { /*Second end a turntable */
+ if (!turntable
+ && QueryTrack(trk2, Q_CAN_ADD_ENDPOINTS)) { /*Second end a turntable */
ep2 = -1;
turntable = TRUE;
PullTracks( trk2, ep2, trk1, ep1);
@@ -800,11 +841,13 @@ static STATUS_T CmdPull(
}
} else {
trk1 = OnTrack( &pos, TRUE, TRUE );
- if (trk1 == NULL)
+ if (trk1 == NULL) {
return C_CONTINUE;
+ }
ep1 = PickUnconnectedEndPoint( pos, trk1 );
- if ( ep1 < 0 )
+ if ( ep1 < 0 ) {
return C_CONTINUE;
+ }
TightenTracks( trk1, ep1 );
trk1 = NULL;
inError = TRUE;
@@ -815,12 +858,14 @@ static STATUS_T CmdPull(
case C_REDRAW:
DrawHighlightBoxes(FALSE,FALSE,NULL);
HighlightSelectedTracks(NULL, TRUE, TRUE);
- if (anchors_da.cnt)
- DrawSegs( &tempD, zero, 0.0, &anchors(0), anchors_da.cnt, trackGauge, wDrawColorBlack );
- if (t1 && t_turn1)
- DrawTrack(t1,&tempD,wDrawColorBlue);
- if (t2 && t_turn2)
- DrawTrack(t2,&tempD,wDrawColorBlue);
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack,
+ 0 );
+ if (t1 && t_turn1) {
+ DrawTrack(t1,&tempD,wDrawColorBlue);
+ }
+ if (t2 && t_turn2) {
+ DrawTrack(t2,&tempD,wDrawColorBlue);
+ }
return C_CONTINUE;
case C_TEXT:
@@ -855,7 +900,7 @@ static STATUS_T CmdPull(
-#include "bitmaps/connect.xpm"
+#include "bitmaps/connect.xpm3"
wMenuPush_p pullConnectMultiple;
@@ -870,7 +915,11 @@ void pullMenuEnter( void * keyVP )
void InitCmdPull( wMenu_p menu )
{
- AddMenuButton( menu, CmdPull, "cmdConnect", _("Connect Two Tracks"), wIconCreatePixMap(connect_xpm[iconSize]), LEVEL0_50, IC_STICKY|IC_INITNOTSTICKY|IC_LCLICK|IC_POPUP3|IC_CMDMENU|IC_WANT_MOVE, ACCL_CONNECT, NULL );
+ AddMenuButton( menu, CmdPull, "cmdConnect", _("Connect Two Tracks"),
+ wIconCreatePixMap(connect_xpm3[iconSize]), LEVEL0_50,
+ IC_STICKY|IC_INITNOTSTICKY|IC_LCLICK|IC_POPUP3|IC_CMDMENU|IC_WANT_MOVE,
+ ACCL_CONNECT, NULL );
pullPopupM = MenuRegister( "Connect Options" );
- pullConnectMultiple = wMenuPushCreate( pullPopupM, "", _("Connect All Selected - 'S'"), 0, pullMenuEnter, I2VP('S') );
+ pullConnectMultiple = wMenuPushCreate( pullPopupM, "",
+ _("Connect All Selected - 'S'"), 0, pullMenuEnter, I2VP('S') );
}
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();
}
diff --git a/app/bin/cselect.c b/app/bin/cselect.c
index 1b153b9..a1158bc 100644
--- a/app/bin/cselect.c
+++ b/app/bin/cselect.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 "common.h"
@@ -37,8 +37,8 @@
#include "cjoin.h"
#include "draw.h"
#include "misc.h"
-#include "trackx.h"
#include "common-ui.h"
+#include "ctrain.h"
#include "bitmaps/bmendpt.xbm"
@@ -54,6 +54,9 @@ EXPORT wIndex_t moveCmdInx;
EXPORT wIndex_t rotateCmdInx;
EXPORT wIndex_t flipCmdInx;
+EXPORT long selectMode = 0;
+EXPORT long selectZero = 1;
+
#define MAXMOVEMODE (3)
static long moveMode = MAXMOVEMODE;
static BOOL_T enableMoveDraw = TRUE;
@@ -76,25 +79,27 @@ static dynArr_t tlist_da;
{ DYNARR_APPEND( track_p, tlist_da, 10 );\
Tlist(tlist_da.cnt-1) = T; }
-BOOL_T TListSearch(track_p T) {
- for (int i=0;i<tlist_da.cnt-1;i++) { \
- if (Tlist(i) == T) return TRUE;
+BOOL_T TListSearch(track_p T)
+{
+ for (int i=0; i<tlist_da.cnt-1; i++) {
+ \
+ if (Tlist(i) == T) { return TRUE; }
}
return FALSE;
}
static wMenu_p selectPopup1M;
-static wMenu_p selectPopup1CM;
static wMenu_p selectPopup2M;
-static wMenu_p selectPopup2CM;
static wMenu_p selectPopup2RM;
static wMenu_p selectPopup2TM;
static wMenu_p selectPopup2TYM;
static wMenuPush_p menuPushModify;
static wMenuPush_p rotateAlignMI;
static wMenuPush_p descriptionMI;
+static wMenuPush_p tiesMI;
static wMenuPush_p hideMI;
static wMenuPush_p bridgeMI;
+static wMenuPush_p roadbedMI;
static wMenuPush_p tiesMI;
@@ -102,51 +107,53 @@ static BOOL_T doingAlign = FALSE;
static enum { AREA, MOVE } mode;
static void SelectOneTrack(
- track_p trk,
- wBool_t selected );
+ track_p trk,
+ wBool_t selected );
static void DrawSelectedTracksD( drawCmd_p d, wDrawColor color );
static dynArr_t anchors_da;
#define anchors(N) DYNARR_N(trkSeg_t,anchors_da,N)
-void CreateArrowAnchor(coOrd pos,ANGLE_T a,DIST_T len) {
- DYNARR_APPEND(trkSeg_t,anchors_da,1);
- int i = anchors_da.cnt-1;
- anchors(i).type = SEG_STRLIN;
- anchors(i).width = 0;
- anchors(i).u.l.pos[0] = pos;
- Translate(&anchors(i).u.l.pos[1],pos,NormalizeAngle(a+135),len);
- anchors(i).color = wDrawColorBlue;
- DYNARR_APPEND(trkSeg_t,anchors_da,1);
- i = anchors_da.cnt-1;
- anchors(i).type = SEG_STRLIN;
- anchors(i).width = 0;
- anchors(i).u.l.pos[0] = pos;
- Translate(&anchors(i).u.l.pos[1],pos,NormalizeAngle(a-135),len);
- anchors(i).color = wDrawColorBlue;
- wSetCursor(mainD.d,wCursorNone);
+void CreateArrowAnchor(coOrd pos,ANGLE_T a,DIST_T len)
+{
+ DYNARR_APPEND(trkSeg_t,anchors_da,1);
+ int i = anchors_da.cnt-1;
+ anchors(i).type = SEG_STRLIN;
+ anchors(i).lineWidth = 0;
+ anchors(i).u.l.pos[0] = pos;
+ Translate(&anchors(i).u.l.pos[1],pos,NormalizeAngle(a+135),len);
+ anchors(i).color = wDrawColorBlue;
+ DYNARR_APPEND(trkSeg_t,anchors_da,1);
+ i = anchors_da.cnt-1;
+ anchors(i).type = SEG_STRLIN;
+ anchors(i).lineWidth = 0;
+ anchors(i).u.l.pos[0] = pos;
+ Translate(&anchors(i).u.l.pos[1],pos,NormalizeAngle(a-135),len);
+ anchors(i).color = wDrawColorBlue;
+ wSetCursor(mainD.d,wCursorNone);
}
-void static CreateRotateAnchor(coOrd pos) {
+void static CreateRotateAnchor(coOrd pos)
+{
DIST_T d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
int i = anchors_da.cnt-1;
anchors(i).type = SEG_CRVLIN;
- anchors(i).width = d/8;
+ anchors(i).lineWidth = d/8;
anchors(i).u.c.center = pos;
anchors(i).u.c.a0 = 180.0;
anchors(i).u.c.a1 = 360.0;
anchors(i).u.c.radius = d*2;
anchors(i).color = wDrawColorAqua;
coOrd head; //Arrows
- for (int j=0;j<3;j++) {
+ for (int j=0; j<3; j++) {
Translate(&head,pos,j*120,d*2);
CreateArrowAnchor(head,NormalizeAngle((j*120)+90),d);
}
DYNARR_APPEND(trkSeg_t,anchors_da,1);
i = anchors_da.cnt-1;
anchors(i).type = SEG_CRVLIN;
- anchors(i).width = d/8;
+ anchors(i).lineWidth = d/8;
anchors(i).u.c.center = pos;
anchors(i).u.c.a0 = 180.0;
anchors(i).u.c.a1 = 360.0;
@@ -155,12 +162,13 @@ void static CreateRotateAnchor(coOrd pos) {
wSetCursor(mainD.d,wCursorNone);
}
-void static CreateModifyAnchor(coOrd pos) {
+void static CreateModifyAnchor(coOrd pos)
+{
DIST_T d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
int i = anchors_da.cnt-1;
anchors(i).type = SEG_FILCRCL;
- anchors(i).width = 0;
+ anchors(i).lineWidth = 0;
anchors(i).u.c.center = pos;
anchors(i).u.c.a0 = 180.0;
anchors(i).u.c.a1 = 360.0;
@@ -169,7 +177,7 @@ void static CreateModifyAnchor(coOrd pos) {
DYNARR_APPEND(trkSeg_t,anchors_da,1);
i = anchors_da.cnt-1;
anchors(i).type = SEG_CRVLIN;
- anchors(i).width = 0;
+ anchors(i).lineWidth = 0;
anchors(i).u.c.center = pos;
anchors(i).u.c.a0 = 180.0;
anchors(i).u.c.a1 = 360.0;
@@ -179,15 +187,16 @@ void static CreateModifyAnchor(coOrd pos) {
}
-void CreateDescribeAnchor(coOrd pos) {
+void CreateDescribeAnchor(coOrd pos)
+{
DIST_T d = tempD.scale*0.15;
- for (int j=0;j<2;j++) {
+ for (int j=0; j<2; j++) {
pos.x += j*d*3/4;
pos.y += j*d/2;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
int i = anchors_da.cnt-1;
anchors(i).type = SEG_CRVLIN;
- anchors(i).width = d/4;
+ anchors(i).lineWidth = d/4;
anchors(i).u.c.center = pos;
anchors(i).u.c.a0 = 270.0;
anchors(i).u.c.a1 = 270.0;
@@ -196,7 +205,7 @@ void CreateDescribeAnchor(coOrd pos) {
DYNARR_APPEND(trkSeg_t,anchors_da,1);
i = anchors_da.cnt-1;
anchors(i).type = SEG_STRLIN;
- anchors(i).width = d/4;
+ anchors(i).lineWidth = d/4;
Translate(&anchors(i).u.l.pos[0],pos,180.0,d*3/4);
Translate(&anchors(i).u.l.pos[1],pos,180.0,d*1.5);
anchors(i).color = wDrawColorPowderedBlue;
@@ -204,13 +213,14 @@ void CreateDescribeAnchor(coOrd pos) {
wSetCursor(mainD.d,wCursorNone);
}
-void CreateActivateAnchor(coOrd pos) {
+void CreateActivateAnchor(coOrd pos)
+{
DIST_T d = tempD.scale*0.15;
coOrd c = pos;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
int i = anchors_da.cnt-1;
anchors(i).type = SEG_CRVLIN;
- anchors(i).width = 0;
+ anchors(i).lineWidth = 0;
c.x -= d*3/4;
anchors(i).u.c.center = c;
anchors(i).u.c.a0 = 0.0;
@@ -221,7 +231,7 @@ void CreateActivateAnchor(coOrd pos) {
i = anchors_da.cnt-1;
c.x += d*1.5;
anchors(i).type = SEG_CRVLIN;
- anchors(i).width = 0;
+ anchors(i).lineWidth = 0;
anchors(i).u.c.center = pos;
anchors(i).u.c.a0 = 0.0;
anchors(i).u.c.a1 = 360.0;
@@ -230,15 +240,19 @@ void CreateActivateAnchor(coOrd pos) {
wSetCursor(mainD.d,wCursorNone);
}
-void static CreateMoveAnchor(coOrd pos) {
+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);
wSetCursor(mainD.d,wCursorNone);
}
-void CreateEndAnchor(coOrd p, wBool_t lock) {
+void CreateEndAnchor(coOrd p, wBool_t lock)
+{
DIST_T d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
@@ -249,7 +263,7 @@ 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;
}
@@ -260,7 +274,8 @@ void CreateEndAnchor(coOrd p, wBool_t lock) {
*
*/
-EXPORT long selectedTrackCount = 0; /**< number of currently selected track components */
+EXPORT long selectedTrackCount =
+ 0; /**< number of currently selected track components */
static void SelectedTrackCountChange( void )
{
@@ -279,20 +294,20 @@ static void SelectedTrackCountChange( void )
static void DrawTrackAndEndPts(
- track_p trk,
- wDrawColor color )
+ track_p trk,
+ wDrawColor color )
{
EPINX_T ep, ep2;
track_p trk2;
DrawTrack( trk, &mainD, color );
- for (ep=0;ep<GetTrkEndPtCnt(trk);ep++) {
+ for (ep=0; ep<GetTrkEndPtCnt(trk); ep++) {
if ((trk2=GetTrkEndTrk(trk,ep)) != NULL) {
- ASSERT( !IsTrackDeleted(trk) );
+ CHECK( !IsTrackDeleted(trk) );
ep2 = GetEndPtConnectedToMe( trk2, trk );
DrawEndPt( &mainD, trk2, ep2,
- (color==wDrawColorBlack && GetTrkSelected(trk2))?
- selectedColor:color );
+ (color==wDrawColorBlack && GetTrkSelected(trk2))?
+ selectedColor:color );
}
}
}
@@ -301,14 +316,14 @@ static void DrawTrackAndEndPts(
static void RedrawSelectedTracksBoundary()
{
-/* Truth table: 4 cases for a track trk, connected to trk1
- * SELREDRAW
- * trk, trk1: F, F - No changes, nothing to draw
- * T, F - trk changes but trk1 didn't, flip drawing of select boundary marker
- * F, T - trk didn't change but trk1 did, handle redrawing when we get to 2nd track
- * T, T - both changed, but we don't need to redraw anything
- * unfortunately we will do a redundant redraw when we get to the 2nd track
- */
+ /* Truth table: 4 cases for a track trk, connected to trk1
+ * SELREDRAW
+ * trk, trk1: F, F - No changes, nothing to draw
+ * T, F - trk changes but trk1 didn't, flip drawing of select boundary marker
+ * F, T - trk didn't change but trk1 did, handle redrawing when we get to 2nd track
+ * T, T - both changed, but we don't need to redraw anything
+ * unfortunately we will do a redundant redraw when we get to the 2nd track
+ */
// if (importTrack != NULL)
// return;
track_p trk;
@@ -317,8 +332,9 @@ static void RedrawSelectedTracksBoundary()
// This track has changed
for ( EPINX_T ep = 0; ep < GetTrkEndPtCnt(trk); ep++ ) {
track_p trk1 = GetTrkEndTrk( trk, ep );
- if ( trk1 == NULL )
+ if ( trk1 == NULL ) {
continue;
+ }
// if ( GetTrkIndex( trk ) < GetTrkIndex( trk1 )
// continue;
@@ -335,20 +351,23 @@ static void RedrawSelectedTracksBoundary()
ANGLE_T a = GetTrkEndAngle( trk, ep );
coOrd p0, p1, p2;
len = GetTrkGauge(trk)*2.0;
- if (len < 0.10*mainD.scale)
+ if (len < 0.10*mainD.scale) {
len = 0.10*mainD.scale;
- Translate( &p1, p, a+45, len );
- Translate( &p2, p, a+225, len );
- DrawLine( &mainD, p1, p2, 2, color );
- Translate( &p1, p, a-45, len );
- Translate( &p2, p, a-225, len );
- DrawLine( &mainD, p1, p2, 2, color );
+ }
+ if (DrawTwoRails( &mainD, 1 ) ) {
+ Translate( &p1, p, a+45, len );
+ Translate( &p2, p, a+225, len );
+ DrawLine( &mainD, p1, p2, 2, color );
+ Translate( &p1, p, a-45, len );
+ Translate( &p2, p, a-225, len );
+ DrawLine( &mainD, p1, p2, 2, color );
+ }
if ( color == wDrawColorWhite ) {
// Fill in holes by undraw cross
DIST_T len2 = sqrt( GetTrkGauge(trk)*GetTrkGauge(trk)/2.0 );
DIST_T len3 = 0.1*mainD.scale;
color = GetTrkColor( trk, &mainD );
- if ( mainD.scale < twoRailScale ) {
+ if ( DrawTwoRails( &mainD, 1 ) ) {
Translate( &p0, p, a-225, len2 );
Translate( &p1, p0, a, len3 );
Translate( &p2, p0, a+180, len3 );
@@ -393,16 +412,20 @@ EXPORT void SetAllTrackSelect( BOOL_T select )
selectedTrackCount = 0;
trk = NULL;
while ( TrackIterate( &trk ) ) {
- if ((!select) || (GetLayerVisible( GetTrkLayer( trk )) && !GetLayerFrozen(GetTrkLayer( trk )) )) {
- if (select)
+ if ((!select) || (GetLayerVisible( GetTrkLayer( trk ))
+ && !GetLayerFrozen(GetTrkLayer( trk )) )) {
+ if (select) {
selectedTrackCount++;
+ }
if ((GetTrkSelected(trk)!=0) != select) {
- if (select)
+ if (select) {
SetTrkBits( trk, TB_SELECTED );
- else
+ } else {
ClrTrkBits( trk, TB_SELECTED );
- if (!doRedraw)
+ }
+ if (!doRedraw) {
SetTrkBits( trk, TB_SELREDRAW );
+ }
DrawTrackAndEndPts( trk, wDrawColorBlack );
}
}
@@ -421,7 +444,7 @@ EXPORT void SetAllTrackSelect( BOOL_T select )
* \param none
* \return none
*/
-
+
EXPORT void InvertTrackSelect( void * unused )
{
track_p trk;
@@ -429,11 +452,11 @@ EXPORT void InvertTrackSelect( void * unused )
trk = NULL;
while ( TrackIterate( &trk ) ) {
if (GetLayerVisible( GetTrkLayer( trk )) &&
- !GetLayerModule(GetTrkLayer( trk )) && !GetLayerFrozen(GetTrkLayer( trk )) ) {
+ !GetLayerModule(GetTrkLayer( trk )) && !GetLayerFrozen(GetTrkLayer( trk )) ) {
SelectOneTrack( trk, GetTrkSelected(trk)==0 );
}
}
-
+
RedrawSelectedTracksBoundary();
SelectedTrackCountChange();
MainRedraw(); // InvertTrackSelect
@@ -444,28 +467,30 @@ EXPORT void InvertTrackSelect( void * unused )
* \param none
* \return none
*/
-
+
EXPORT void OrphanedTrackSelect( void *ptr )
{
track_p trk;
EPINX_T ep;
int cnt ;
-
+
trk = NULL;
-
+
while( TrackIterate( &trk ) ) {
cnt = 0;
- if( GetLayerVisible( GetTrkLayer( trk ) && !GetLayerModule(GetTrkLayer(trk)) && !GetLayerFrozen(GetTrkLayer(trk)))) {
+ if( GetLayerVisible( GetTrkLayer( trk ) && !GetLayerModule(GetTrkLayer(trk))
+ && !GetLayerFrozen(GetTrkLayer(trk)))) {
for( ep = 0; ep < GetTrkEndPtCnt( trk ); ep++ ) {
- if( GetTrkEndTrk( trk, ep ) )
- cnt++;
+ if( GetTrkEndTrk( trk, ep ) ) {
+ cnt++;
+ }
}
-
+
if( !cnt && GetTrkEndPtCnt( trk )) {
SetTrkBits( trk, TB_SELECTED );
DrawTrackAndEndPts( trk, wDrawColorBlack );
- selectedTrackCount++;
- }
+ selectedTrackCount++;
+ }
}
}
RedrawSelectedTracksBoundary();
@@ -474,43 +499,45 @@ EXPORT void OrphanedTrackSelect( void *ptr )
}
static void SelectOneTrack(
- track_p trk,
- wBool_t selected )
+ track_p trk,
+ wBool_t selected )
{
- BOOL_T bRedraw = (GetTrkSelected(trk) != 0) != selected;
- if ( !bRedraw ) {
- ClrTrkBits( trk, TB_SELREDRAW );
- return;
- }
- SetTrkBits( trk, TB_SELREDRAW );
- if (selected) {
- SetTrkBits( trk, TB_SELECTED );
- selectedTrackCount++;
- } else {
- ClrTrkBits( trk, TB_SELECTED );
- selectedTrackCount--;
- }
- SelectedTrackCountChange();
+ BOOL_T bRedraw = (GetTrkSelected(trk) != 0) != selected;
+ if ( !bRedraw ) {
+ ClrTrkBits( trk, TB_SELREDRAW );
+ return;
+ }
+ SetTrkBits( trk, TB_SELREDRAW );
+ if (selected) {
+ SetTrkBits( trk, TB_SELECTED );
+ selectedTrackCount++;
+ } else {
+ ClrTrkBits( trk, TB_SELECTED );
+ selectedTrackCount--;
+ }
+ SelectedTrackCountChange();
}
EXPORT void HighlightSelectedTracks(
- track_p trk_ignore, BOOL_T keep, BOOL_T invert )
+ track_p trk_ignore, BOOL_T keep, BOOL_T invert )
{
track_p trk = NULL;
- if ( selectedTrackCount == 0 )
+ if ( selectedTrackCount == 0 ) {
return;
+ }
while ( TrackIterate( &trk ) ) {
- if (trk == trk_ignore) continue;
- if(GetTrkSelected(trk)) {
- if (!GetLayerVisible( GetTrkLayer( trk ))) continue;
- if (keep)
- DrawTrack(trk,&tempD,selectedColor);
- else if (invert)
- DrawTrack(trk,&tempD,wDrawColorPreviewUnselected);
- else
- DrawTrack(trk,&tempD,wDrawColorPreviewSelected );
- }
+ if (trk == trk_ignore) { continue; }
+ if(GetTrkSelected(trk)) {
+ if (!GetLayerVisible( GetTrkLayer( trk ))) { continue; }
+ if (keep) {
+ DrawTrack(trk,&tempD,selectedColor);
+ } else if (invert) {
+ DrawTrack(trk,&tempD,wDrawColorPreviewUnselected);
+ } else {
+ DrawTrack(trk,&tempD,wDrawColorPreviewSelected );
+ }
+ }
}
}
@@ -521,28 +548,31 @@ EXPORT void HighlightSelectedTracks(
* Ignore Frozen Tracks
*/
static void SelectConnectedTracks(
- track_p trk, BOOL_T display_only )
+ track_p trk, BOOL_T display_only )
{
track_p trk1;
int inx;
EPINX_T ep;
- tlist_da.cnt = 0;
+ DYNARR_RESET( track_p, tlist_da );
TlistAppend( trk );
InfoCount( 0 );
- if (!display_only) wDrawDelayUpdate( mainD.d, FALSE );
+ if (!display_only) { wDrawDelayUpdate( mainD.d, FALSE ); }
for (inx=0; inx<tlist_da.cnt; inx++) {
- if ( inx > 0 && (selectedTrackCount == 0) && !display_only )
+ if ( inx > 0 && (selectedTrackCount == 0) && !display_only ) {
return;
+ }
trk = Tlist(inx);
if (!GetLayerFrozen(GetTrkLayer(trk))) {
if (inx!=0 &&
- GetTrkSelected(trk)) {
- if (display_only)
+ GetTrkSelected(trk)) {
+ if (display_only) {
DrawTrack(trk,&tempD,wDrawColorPreviewSelected );
+ }
continue;
} else if (GetTrkSelected(trk)) {
- if (display_only)
+ if (display_only) {
DrawTrack(trk,&tempD,wDrawColorPreviewUnselected);
+ }
continue;
}
}
@@ -550,11 +580,11 @@ static void SelectConnectedTracks(
trk1 = GetTrkEndTrk( trk, ep );
if (trk1 && !TListSearch(trk1) && GetLayerVisible( GetTrkLayer( trk1 ))) {
if (GetTrkSelected(trk1)) {
- if (display_only) DrawTrack(trk1,&tempD,wDrawColorPreviewSelected );
- } else TlistAppend( trk1 );
+ if (display_only) { DrawTrack(trk1,&tempD,wDrawColorPreviewSelected ); }
+ } else { TlistAppend( trk1 ); }
}
}
- if (display_only && !GetLayerFrozen(GetTrkLayer(trk))) DrawTrack(trk,&tempD,wDrawColorPreviewSelected );
+ if (display_only && !GetLayerFrozen(GetTrkLayer(trk))) { DrawTrack(trk,&tempD,wDrawColorPreviewSelected ); }
else if (!GetTrkSelected(trk)) {
if (GetLayerModule(GetTrkLayer(trk))) {
continue;
@@ -575,44 +605,47 @@ static void SelectConnectedTracks(
}
typedef void (*doModuleTrackCallBack_t)(track_p, BOOL_T);
-static int DoModuleTracks( int moduleLayer, doModuleTrackCallBack_t doit, BOOL_T val)
+static int DoModuleTracks( int moduleLayer, doModuleTrackCallBack_t doit,
+ BOOL_T val)
{
track_p trk;
trk = NULL;
int cnt = 0;
while ( TrackIterate( &trk ) ) {
if (GetTrkLayer(trk) == moduleLayer) {
- doit( trk, val );
- cnt++;
+ doit( trk, val );
+ cnt++;
}
}
return cnt;
}
-static void DrawSingleTrack(track_p trk, BOOL_T bit) {
+static void DrawSingleTrack(track_p trk, BOOL_T bit)
+{
DrawTrack(trk,&tempD,bit?wDrawColorPreviewSelected:wDrawColorPreviewUnselected);
}
typedef BOOL_T (*testSelectedTrackCallBack_t)(track_p, int);
-static BOOL_T TestAllSelectedTracks( testSelectedTrackCallBack_t testit, int value)
+static BOOL_T TestAllSelectedTracks( testSelectedTrackCallBack_t testit,
+ int value)
{
track_p trk;
- trk = NULL;
- while ( TrackIterate( &trk ) ) {
- if (GetTrkSelected(trk)) {
- if ( !testit( trk, value ) ) {
- return FALSE;
- }
+ trk = NULL;
+ while ( TrackIterate( &trk ) ) {
+ if (GetTrkSelected(trk)) {
+ if ( !testit( trk, value ) ) {
+ return FALSE;
}
}
+ }
return TRUE;
}
typedef BOOL_T (*doSelectedTrackCallBack_t)(track_p, BOOL_T);
-static void DoSelectedTracks( doSelectedTrackCallBack_t doit )
+EXPORT void DoSelectedTracks( doSelectedTrackCallBack_t doit )
{
track_p trk;
trk = NULL;
@@ -645,8 +678,9 @@ static BOOL_T SelectedTracksAreFrozen( void )
EXPORT void SelectTrackWidth( void* width )
{
track_p trk;
- if (SelectedTracksAreFrozen())
+ if (SelectedTracksAreFrozen()) {
return;
+ }
if (selectedTrackCount<=0) {
ErrorMessage( MSG_NO_SELECTED_TRK );
return;
@@ -670,8 +704,9 @@ static void SelectLineType( void* widthVP )
{
int width = (int)VP2L(widthVP);
track_p trk;
- if (SelectedTracksAreFrozen())
+ if (SelectedTracksAreFrozen()) {
return;
+ }
if (selectedTrackCount<=0) {
ErrorMessage( MSG_NO_SELECTED_TRK );
return;
@@ -682,11 +717,11 @@ static void SelectLineType( void* widthVP )
while ( TrackIterate( &trk ) ) {
if (GetTrkSelected(trk)) {
UndoModify( trk );
- if (QueryTrack(trk, Q_CAN_MODIFY_CONTROL_POINTS))
+ if (QueryTrack(trk, Q_CAN_MODIFY_CONTROL_POINTS)) {
SetBezierLineType(trk, width);
- else if (QueryTrack(trk, Q_IS_DRAW))
+ } else if (QueryTrack(trk, Q_IS_DRAW)) {
SetLineType( trk, width );
- else if (QueryTrack(trk, Q_IS_STRUCTURE)) {
+ } else if (QueryTrack(trk, Q_IS_STRUCTURE)) {
SetCompoundLineType(trk, width);
}
}
@@ -707,13 +742,15 @@ EXPORT int SelectDelete( void )
}
}
- if (doingDouble || (GetCurrentCommand() == modifyCmdInx)) return 1;
+ if (doingDouble || (GetCurrentCommand() == modifyCmdInx)) { return 1; }
- if (SelectedTracksAreFrozen())
+ if (SelectedTracksAreFrozen()) {
return 0;
+ }
if (selectedTrackCount>0) {
BOOL_T UndoStarted = FALSE;
- if (!TestAllSelectedTracks(QueryTrack,(int)Q_ISTRAIN)) { // If all Cars, don't bother with UndoStart as there will be nothing to delete
+ if (!TestAllSelectedTracks(QueryTrack,
+ (int)Q_ISTRAIN)) { // If all Cars, don't bother with UndoStart as there will be nothing to delete
UndoStarted = TRUE;
UndoStart( _("Delete Tracks"), "delete" );
}
@@ -725,8 +762,9 @@ EXPORT int SelectDelete( void )
wDrawDelayUpdate( mapD.d, FALSE );
selectedTrackCount = 0;
SelectedTrackCountChange();
- if (UndoStarted)
+ if (UndoStarted) {
UndoEnd();
+ }
} else {
ErrorMessage( MSG_NO_SELECTED_TRK );
}
@@ -736,7 +774,8 @@ EXPORT int SelectDelete( void )
/*
* Called By Windows directly with Delete Key. We first try a simple Delete, and if that doesn't work saying "In Modify" we call Modify with a Text key for Delete
*/
-EXPORT void TrySelectDelete( void ) {
+EXPORT void TrySelectDelete( void )
+{
if(SelectDelete() == 1) {
CmdModify((C_TEXT+(int)(127<<8)),zero);
}
@@ -756,13 +795,15 @@ static BOOL_T FlipHidden( track_p trk, BOOL_T unused )
UndrawNewTrack( trk2 );
}*/
UndoModify( trk );
- if ( drawTunnel == 0 )
+ if ( drawTunnel == 0 ) {
flipHiddenDoSelectRecount = TRUE;
+ }
if (GetTrkVisible(trk)) {
ClrTrkBits( trk, TB_VISIBLE|(drawTunnel==0?(TB_SELECTED|TB_SELREDRAW):0) );
ClrTrkBits (trk, TB_BRIDGE);
ClrTrkBits (trk, TB_NOTIES);
-; } else {
+ ;
+ } else {
SetTrkBits( trk, TB_VISIBLE );
}
/*DrawNewTrack( trk );*/
@@ -787,6 +828,18 @@ static BOOL_T FlipBridge( track_p trk, BOOL_T unused )
return TRUE;
}
+static BOOL_T FlipRoadbed( track_p trk, BOOL_T unused )
+{
+ UndoModify( trk );
+ if (GetTrkRoadbed(trk)) {
+ ClrTrkBits( trk, TB_ROADBED );
+ } else {
+ SetTrkBits( trk, TB_ROADBED );
+ SetTrkBits( trk, TB_VISIBLE);
+ }
+ return TRUE;
+}
+
static BOOL_T FlipTies( track_p trk, BOOL_T unused )
{
UndoModify( trk );
@@ -801,8 +854,9 @@ static BOOL_T FlipTies( track_p trk, BOOL_T unused )
EXPORT void SelectTunnel( void * unused )
{
- if (SelectedTracksAreFrozen())
+ if (SelectedTracksAreFrozen()) {
return;
+ }
if (selectedTrackCount>0) {
flipHiddenDoSelectRecount = FALSE;
UndoStart( _("Hide Tracks (Tunnel)"), "tunnel" );
@@ -813,14 +867,16 @@ EXPORT void SelectTunnel( void * unused )
} else {
ErrorMessage( MSG_NO_SELECTED_TRK );
}
- if ( flipHiddenDoSelectRecount )
+ if ( flipHiddenDoSelectRecount ) {
SelectRecount();
+ }
}
EXPORT void SelectBridge( void * unused )
{
- if (SelectedTracksAreFrozen())
+ if (SelectedTracksAreFrozen()) {
return;
+ }
if (selectedTrackCount>0) {
flipHiddenDoSelectRecount = FALSE;
UndoStart( _("Bridge Tracks "), "bridge" );
@@ -834,10 +890,29 @@ EXPORT void SelectBridge( void * unused )
MainRedraw(); // SelectBridge
}
+EXPORT void SelectRoadbed( void * unused )
+{
+ if (SelectedTracksAreFrozen()) {
+ return;
+ }
+ if (selectedTrackCount>0) {
+ flipHiddenDoSelectRecount = FALSE;
+ UndoStart( _("Roadbed Tracks "), "roadbed" );
+ wDrawDelayUpdate( mainD.d, TRUE );
+ DoSelectedTracks( FlipRoadbed );
+ wDrawDelayUpdate( mainD.d, FALSE );
+ UndoEnd();
+ } else {
+ ErrorMessage( MSG_NO_SELECTED_TRK );
+ }
+ MainRedraw(); // SelectBridge
+}
+
EXPORT void SelectTies( void * unused )
{
- if (SelectedTracksAreFrozen())
+ if (SelectedTracksAreFrozen()) {
return;
+ }
if (selectedTrackCount>0) {
flipHiddenDoSelectRecount = FALSE;
UndoStart( _("Ties Tracks "), "noties" );
@@ -874,22 +949,23 @@ static BOOL_T SetLayer( track_p trk, BOOL_T unused )
EXPORT void MoveSelectedTracksToCurrentLayer( void * unused )
{
- if (SelectedTracksAreFrozen())
+ if (SelectedTracksAreFrozen()) {
return;
- if (selectedTrackCount>0) {
- UndoStart( _("Move To Current Layer"), "changeLayer" );
- DoSelectedTracks( SetLayer );
- UndoEnd();
- } else {
- ErrorMessage( MSG_NO_SELECTED_TRK );
- }
+ }
+ if (selectedTrackCount>0) {
+ UndoStart( _("Move To Current Layer"), "changeLayer" );
+ DoSelectedTracks( SetLayer );
+ UndoEnd();
+ } else {
+ ErrorMessage( MSG_NO_SELECTED_TRK );
+ }
}
EXPORT void SelectCurrentLayer( void * unused )
{
track_p trk;
trk = NULL;
- if (GetLayerFrozen(curLayer)) return;
+ if (GetLayerFrozen(curLayer)) { return; }
while ( TrackIterate( &trk ) ) {
if ((!GetTrkSelected(trk)) && GetTrkLayer(trk) == curLayer) {
SelectOneTrack( trk, TRUE );
@@ -898,7 +974,8 @@ EXPORT void SelectCurrentLayer( void * unused )
RedrawSelectedTracksBoundary();
}
-EXPORT void DeselectLayer( unsigned int layer ) {
+EXPORT void DeselectLayer( unsigned int layer )
+{
track_p trk;
trk = NULL;
while ( TrackIterate( &trk ) ) {
@@ -926,8 +1003,9 @@ static BOOL_T ClearElevation( track_p trk, BOOL_T unused )
EXPORT void ClearElevations( void * unused )
{
- if (SelectedTracksAreFrozen())
+ if (SelectedTracksAreFrozen()) {
return;
+ }
if (selectedTrackCount>0) {
UndoStart( _("Clear Elevations"), "clear elevations" );
DoSelectedTracks( ClearElevation );
@@ -951,8 +1029,9 @@ static BOOL_T AddElevation( track_p trk, BOOL_T unused )
if ((trk1=GetTrkEndTrk(trk,ep))) {
ep1 = GetEndPtConnectedToMe( trk1, trk );
if (ep1 >= 0) {
- if (GetTrkSelected(trk1) && GetTrkIndex(trk1)<GetTrkIndex(trk))
+ if (GetTrkSelected(trk1) && GetTrkIndex(trk1)<GetTrkIndex(trk)) {
continue;
+ }
}
}
if (EndPtIsDefinedElev(trk,ep)) {
@@ -969,8 +1048,9 @@ static BOOL_T AddElevation( track_p trk, BOOL_T unused )
EXPORT void AddElevations( DIST_T delta )
{
- if (SelectedTracksAreFrozen())
+ if (SelectedTracksAreFrozen()) {
return;
+ }
if (selectedTrackCount>0) {
elevDelta = delta;
UndoStart( _("Add Elevations"), "add elevations" );
@@ -985,8 +1065,9 @@ EXPORT void AddElevations( DIST_T delta )
EXPORT void DoRefreshCompound( void * unused )
{
- if (SelectedTracksAreFrozen())
+ if (SelectedTracksAreFrozen()) {
return;
+ }
if (selectedTrackCount>0) {
UndoStart( _("Refresh Compound"), "refresh compound" );
DoSelectedTracks( RefreshCompound );
@@ -1000,7 +1081,8 @@ EXPORT void DoRefreshCompound( void * unused )
static drawCmd_t tempSegsD = {
- NULL, &tempSegDrawFuncs, 0, 1, 0.0, {0.0, 0.0}, {0.0, 0.0}, Pix2CoOrd, CoOrd2Pix };
+ NULL, &tempSegDrawFuncs, 0, 1, 0.0, {0.0, 0.0}, {0.0, 0.0}, Pix2CoOrd, CoOrd2Pix
+};
EXPORT void WriteSelectedTracksToTempSegs( void )
{
track_p trk;
@@ -1008,8 +1090,9 @@ EXPORT void WriteSelectedTracksToTempSegs( void )
tempSegsD.dpi = mainD.dpi;
for ( trk=NULL; TrackIterate(&trk); ) {
if ( GetTrkSelected( trk ) ) {
- if ( IsTrack( trk ) )
+ if ( IsTrack( trk ) ) {
continue;
+ }
ClrTrkBits( trk, TB_SELECTED );
DrawTrack( trk, &tempSegsD, wDrawColorBlack );
SetTrkBits( trk, TB_SELECTED );
@@ -1017,260 +1100,6 @@ EXPORT void WriteSelectedTracksToTempSegs( void )
}
}
-static char rescaleFromScale[20];
-static char rescaleFromGauge[20];
-
-static char * rescaleToggleLabels[] = { N_("Scale"), N_("Ratio"), NULL };
-static long rescaleMode;
-static wIndex_t rescaleFromScaleInx;
-static wIndex_t rescaleFromGaugeInx;
-static wIndex_t rescaleToScaleInx;
-static wIndex_t rescaleToGaugeInx;
-static wIndex_t rescaleToInx;
-static long rescaleNoChangeDim = FALSE;
-static FLOAT_T rescalePercent;
-static char * rescaleChangeDimLabels[] = { N_("Do not resize track"), NULL };
-static paramFloatRange_t r0o001_10000 = { 0.001, 10000.0 };
-static paramData_t rescalePLs[] = {
-#define I_RESCALE_MODE (0)
- { PD_RADIO, &rescaleMode, "toggle", PDO_NOPREF, &rescaleToggleLabels, N_("Rescale by:"), BC_HORZ|BC_NOBORDER },
-#define I_RESCALE_FROM_SCALE (1)
- { PD_STRING, rescaleFromScale, "fromS", PDO_NOPREF|PDO_STRINGLIMITLENGTH, I2VP(100), N_("From:"),0, 0, sizeof(rescaleFromScale)},
-#define I_RESCALE_FROM_GAUGE (2)
- { PD_STRING, rescaleFromGauge, "fromG", PDO_NOPREF|PDO_DLGHORZ | PDO_STRINGLIMITLENGTH, I2VP(100), " / ", 0, 0, sizeof(rescaleFromGauge)},
-#define I_RESCALE_TO_SCALE (3)
- { PD_DROPLIST, &rescaleToScaleInx, "toS", PDO_NOPREF|PDO_LISTINDEX, I2VP(100), N_("To: ") },
-#define I_RESCALE_TO_GAUGE (4)
- { PD_DROPLIST, &rescaleToGaugeInx, "toG", PDO_NOPREF|PDO_LISTINDEX|PDO_DLGHORZ, NULL, " / " },
-#define I_RESCALE_CHANGE (5)
- { PD_TOGGLE, &rescaleNoChangeDim, "change-dim", 0, &rescaleChangeDimLabels, "", BC_HORZ|BC_NOBORDER },
-#define I_RESCALE_PERCENT (6)
- { PD_FLOAT, &rescalePercent, "ratio", 0, &r0o001_10000, N_("Ratio") },
- { PD_MESSAGE, "%", NULL, PDO_DLGHORZ } };
-static paramGroup_t rescalePG = { "rescale", 0, rescalePLs, COUNT( rescalePLs ) };
-
-
-static long getboundsCount;
-static coOrd getboundsLo, getboundsHi;
-
-static BOOL_T GetboundsDoIt( track_p trk, BOOL_T unused )
-{
- coOrd hi, lo;
-
- GetBoundingBox( trk, &hi, &lo );
- if ( getboundsCount == 0 ) {
- getboundsLo = lo;
- getboundsHi = hi;
- } else {
- if ( lo.x < getboundsLo.x ) getboundsLo.x = lo.x;
- if ( lo.y < getboundsLo.y ) getboundsLo.y = lo.y;
- if ( hi.x > getboundsHi.x ) getboundsHi.x = hi.x;
- if ( hi.y > getboundsHi.y ) getboundsHi.y = hi.y;
- }
- getboundsCount++;
- return TRUE;
-}
-
-static coOrd rescaleShift;
-static BOOL_T RescaleDoIt( track_p trk, BOOL_T unused )
-{
- EPINX_T ep, ep1;
- track_p trk1;
- UndrawNewTrack( trk );
- UndoModify(trk);
- if ( rescalePercent != 100.0 ) {
- for (ep=0; ep<GetTrkEndPtCnt(trk); ep++) {
- if ((trk1 = GetTrkEndTrk(trk,ep)) != NULL &&
- !GetTrkSelected(trk1)) {
- ep1 = GetEndPtConnectedToMe( trk1, trk );
- DisconnectTracks( trk, ep, trk1, ep1 );
- }
- }
- /* should the track dimensions ie. length or radius be changed as well? */
- if( rescaleNoChangeDim == 0 )
- RescaleTrack( trk, rescalePercent/100.0, rescaleShift );
- }
-
- if ( rescaleMode==0 )
- SetTrkScale( trk, rescaleToInx );
- getboundsCount++;
- DrawNewTrack( trk );
- return TRUE;
-}
-
-
-static void RescaleDlgOk(
- void * unused )
-{
- coOrd center, size;
- DIST_T d;
- FLOAT_T ratio = rescalePercent/100.0;
-
- UndoStart( _("Rescale Tracks"), "Rescale" );
- getboundsCount = 0;
- DoSelectedTracks( GetboundsDoIt );
- center.x = (getboundsLo.x+getboundsHi.x)/2.0;
- center.y = (getboundsLo.y+getboundsHi.y)/2.0;
- size.x = (getboundsHi.x-getboundsLo.x)/2.0*ratio;
- size.y = (getboundsHi.y-getboundsLo.y)/2.0*ratio;
- getboundsLo.x = center.x - size.x;
- getboundsLo.y = center.y - size.y;
- getboundsHi.x = center.x + size.x;
- getboundsHi.y = center.y + size.y;
- if ( getboundsLo.x < 0 ) {
- getboundsHi.x -= getboundsLo.x;
- getboundsLo.x = 0;
- } else if ( getboundsHi.x > mapD.size.x ) {
- d = getboundsHi.x - mapD.size.x;
- if ( getboundsLo.x < d )
- d = getboundsLo.x;
- getboundsHi.x -= d;
- getboundsLo.x -= d;
- }
- if ( getboundsLo.y < 0 ) {
- getboundsHi.y -= getboundsLo.y;
- getboundsLo.y = 0;
- } else if ( getboundsHi.y > mapD.size.y ) {
- d = getboundsHi.y - mapD.size.y;
- if ( getboundsLo.y < d )
- d = getboundsLo.y;
- getboundsHi.y -= d;
- getboundsLo.y -= d;
- }
- if ( rescaleNoChangeDim == 0 &&
- (getboundsHi.x > mapD.size.x ||
- getboundsHi.y > mapD.size.y )) {
- NoticeMessage( MSG_RESCALE_TOO_BIG, _("Ok"), NULL, FormatDistance(getboundsHi.x), FormatDistance(getboundsHi.y) );
- }
- rescaleShift.x = (getboundsLo.x+getboundsHi.x)/2.0 - center.x*ratio;
- rescaleShift.y = (getboundsLo.y+getboundsHi.y)/2.0 - center.y*ratio;
-
- rescaleToInx = GetScaleInx( rescaleToScaleInx, rescaleToGaugeInx );
- DoSelectedTracks( RescaleDoIt );
-
- // rescale the background if it exists and the layout is resized
- if (HasBackGround() && ratio != 1.0) {
- coOrd pos = GetLayoutBackGroundPos();
- double size = GetLayoutBackGroundSize();
- pos.x = ratio * pos.x + rescaleShift.x;
- pos.y = ratio * pos.y + rescaleShift.y;
- SetLayoutBackGroundPos(pos);
-
- size *= ratio;
- SetLayoutBackGroundSize(size);
- }
- DoRedraw();
- wHide( rescalePG.win );
-}
-
-
-static void RescaleDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
-{
- switch (inx) {
- case I_RESCALE_MODE:
- wControlShow( pg->paramPtr[I_RESCALE_FROM_SCALE].control, rescaleMode==0 );
- wControlActive( pg->paramPtr[I_RESCALE_FROM_SCALE].control, FALSE );
- wControlShow( pg->paramPtr[I_RESCALE_TO_SCALE].control, rescaleMode==0 );
- wControlShow( pg->paramPtr[I_RESCALE_FROM_GAUGE].control, rescaleMode==0 );
- wControlActive( pg->paramPtr[I_RESCALE_FROM_GAUGE].control, FALSE );
- wControlShow( pg->paramPtr[I_RESCALE_TO_GAUGE].control, rescaleMode==0 );
- wControlShow( pg->paramPtr[I_RESCALE_CHANGE].control, rescaleMode==0 );
- wControlActive( pg->paramPtr[I_RESCALE_PERCENT].control, rescaleMode==1 );
- if ( rescaleMode!=0 )
- break;
- case I_RESCALE_TO_SCALE:
- LoadGaugeList( (wList_p)rescalePLs[I_RESCALE_TO_GAUGE].control, *((int *)valueP) );
- rescaleToGaugeInx = 0;
- ParamLoadControl( pg, I_RESCALE_TO_GAUGE );
- ParamLoadControl( pg, I_RESCALE_TO_SCALE );
- rescalePercent = GetScaleDescRatio(rescaleFromScaleInx)/GetScaleDescRatio(rescaleToScaleInx)*100.0;
- wControlActive( pg->paramPtr[I_RESCALE_CHANGE].control, (rescaleFromScaleInx != rescaleToScaleInx) );
- ParamLoadControl( pg, I_RESCALE_PERCENT );
- break;
- case I_RESCALE_TO_GAUGE:
- ParamLoadControl( pg, I_RESCALE_TO_GAUGE );
- break;
- case I_RESCALE_FROM_SCALE:
- ParamLoadControl( pg, I_RESCALE_FROM_SCALE );
- break;
- case I_RESCALE_FROM_GAUGE:
- ParamLoadControl( pg, I_RESCALE_FROM_GAUGE );
- break;
- case I_RESCALE_CHANGE:
- ParamLoadControl( pg, I_RESCALE_CHANGE );
- break;
- case -1:
- break;
- }
- ParamDialogOkActive( pg, rescalePercent!=100.0 || rescaleFromGaugeInx != rescaleToGaugeInx );
-}
-
-/**
- * Get the scale gauge information for the selected track pieces.
- * FIXME: special cases like tracks pieces with different gauges or scale need to be handled
- *
- * \param IN trk track element
- * \param IN unused
- * \return TRUE;
- */
-
-static BOOL_T SelectedScaleGauge( track_p trk, BOOL_T unused )
-{
- char *scaleName;
- SCALEINX_T scale;
- SCALEDESCINX_T scaleInx;
- GAUGEINX_T gaugeInx;
-
- scale = GetTrkScale( trk );
- scaleName = GetScaleName( scale );
- if( strcmp( scaleName, "*" )) {
- GetScaleGauge( scale, &scaleInx, &gaugeInx );
- strcpy( rescaleFromScale,GetScaleDesc( scaleInx ));
- strcpy( rescaleFromGauge, GetGaugeDesc( scaleInx, gaugeInx ));
-
- rescaleFromScaleInx = scaleInx;
- rescaleFromGaugeInx = gaugeInx;
- rescaleToScaleInx = scaleInx;
- rescaleToGaugeInx = gaugeInx;
- }
-
- return TRUE;
-}
-
-/**
- * Bring up the rescale dialog. The dialog for rescaling the selected pieces
- * of track is created if necessary and shown. Handling of user input is done via
- * RescaleDlgUpdate()
- */
-
-EXPORT void DoRescale( void * unused )
-{
- if ( rescalePG.win == NULL ) {
- ParamCreateDialog( &rescalePG, MakeWindowTitle(_("Rescale")), _("Ok"), RescaleDlgOk, wHide, TRUE, NULL, F_BLOCK, RescaleDlgUpdate );
- LoadScaleList( (wList_p)rescalePLs[I_RESCALE_TO_SCALE].control );
- LoadGaugeList( (wList_p)rescalePLs[I_RESCALE_TO_GAUGE].control, GetLayoutCurScaleDesc() ); /* set correct gauge list here */
- rescaleFromScaleInx = GetLayoutCurScale();
- rescaleToScaleInx = rescaleFromScaleInx;
- rescalePercent = 100.0;
- }
-
- DoSelectedTracks( SelectedScaleGauge );
-
- RescaleDlgUpdate( &rescalePG, I_RESCALE_MODE, &rescaleMode );
- RescaleDlgUpdate( &rescalePG, I_RESCALE_CHANGE, &rescaleMode );
-
- RescaleDlgUpdate( &rescalePG, I_RESCALE_FROM_GAUGE, rescaleFromGauge );
- RescaleDlgUpdate( &rescalePG, I_RESCALE_FROM_SCALE, rescaleFromScale );
-
- RescaleDlgUpdate( &rescalePG, I_RESCALE_TO_SCALE, &rescaleToScaleInx );
- RescaleDlgUpdate( &rescalePG, I_RESCALE_TO_GAUGE, &rescaleToGaugeInx );
-
- wShow( rescalePG.win );
-}
-
static void DrawSelectedTracksD( drawCmd_p d, wDrawColor color )
{
@@ -1282,31 +1111,35 @@ static void DrawSelectedTracksD( drawCmd_p d, wDrawColor color )
trk = Tlist(inx);
if (d != &mapD) {
GetBoundingBox( trk, &hi, &lo );
- if ( OFF_D( d->orig, d->size, lo, hi ) )
+ if ( OFF_D( d->orig, d->size, lo, hi ) ) {
continue;
+ }
}
- if (color != wDrawColorWhite)
+ if (color != wDrawColorWhite) {
ClrTrkBits(trk, TB_UNDRAWN);
- if (color == wDrawColorWhite)
+ }
+ if (color == wDrawColorWhite) {
SetTrkBits( trk, TB_UNDRAWN );
+ }
}
MainRedraw(); //Omitting all the tracks with TB_UNDRAWN set
/*wDrawDelayUpdate( d->d, FALSE );*/
}
static BOOL_T AddSelectedTrack(
- track_p trk, BOOL_T unused )
+ track_p trk, BOOL_T unused )
{
DYNARR_APPEND( track_p, tlist_da, 10 );
DYNARR_LAST( track_p, tlist_da ) = trk;
return TRUE;
}
-static BOOL_T RemoveSelectedTrack(track_p trk) {
+static BOOL_T RemoveSelectedTrack(track_p trk)
+{
- for(int i=0;i<tlist_da.cnt; i++) {
+ for(int i=0; i<tlist_da.cnt; i++) {
if (DYNARR_N(track_p,tlist_da,i) == trk) {
- for (int j=i;j<tlist_da.cnt-1;j++) {
+ for (int j=i; j<tlist_da.cnt-1; j++) {
DYNARR_N(track_p,tlist_da,j) = DYNARR_N(track_p,tlist_da,j+1);
}
tlist_da.cnt--;
@@ -1316,13 +1149,43 @@ static BOOL_T RemoveSelectedTrack(track_p trk) {
return FALSE;
}
+static long getSelectedBoundsCount;
+static coOrd getSelectedBoundsLo, getSelectedBoundsHi;
+
+static BOOL_T GetBoundsDoIt( track_p trk, BOOL_T unused )
+{
+ coOrd hi, lo;
+
+ GetBoundingBox( trk, &hi, &lo );
+ if ( getSelectedBoundsCount == 0 ) {
+ getSelectedBoundsLo = lo;
+ getSelectedBoundsHi = hi;
+ } else {
+ if ( lo.x < getSelectedBoundsLo.x ) { getSelectedBoundsLo.x = lo.x; }
+ if ( lo.y < getSelectedBoundsLo.y ) { getSelectedBoundsLo.y = lo.y; }
+ if ( hi.x > getSelectedBoundsHi.x ) { getSelectedBoundsHi.x = hi.x; }
+ if ( hi.y > getSelectedBoundsHi.y ) { getSelectedBoundsHi.y = hi.y; }
+ }
+ getSelectedBoundsCount++;
+ return TRUE;
+}
+
+EXPORT void GetSelectedBounds( coOrd * low, coOrd * high )
+{
+ getSelectedBoundsCount = 0;
+ DoSelectedTracks( GetBoundsDoIt );
+ *low = getSelectedBoundsLo;
+ *high = getSelectedBoundsHi;
+}
+
static coOrd moveOrig;
static ANGLE_T moveAngle;
static coOrd moveD_hi, moveD_lo;
static drawCmd_t moveD = {
- NULL, &tempSegDrawFuncs, DC_SIMPLE, 1, 0.0, {0.0, 0.0}, {0.0, 0.0}, Pix2CoOrd, CoOrd2Pix };
+ NULL, &tempSegDrawFuncs, DC_SIMPLE, 1, 0.0, {0.0, 0.0}, {0.0, 0.0}, Pix2CoOrd, CoOrd2Pix
+};
@@ -1347,12 +1210,13 @@ static void AccumulateTracks( void )
if (trk) {
GetBoundingBox( trk, &hi, &lo );
if (lo.x <= moveD_hi.x && hi.x >= moveD_lo.x &&
- lo.y <= moveD_hi.y && hi.y >= moveD_lo.y ) {
- if (!QueryTrack(trk,Q_IS_CORNU))
- DrawTrack( trk, &moveD, wDrawColorBlack );
+ lo.y <= moveD_hi.y && hi.y >= moveD_lo.y ) {
+ if (!QueryTrack(trk,Q_IS_CORNU)) {
+ DrawTrack( trk, &moveD, wDrawColorBlack );
}
- movedCnt++;
}
+ movedCnt++;
+ }
}
InfoCount( movedCnt );
/*wDrawDelayUpdate( moveD.d, FALSE );*/
@@ -1360,13 +1224,15 @@ static void AccumulateTracks( void )
static dynArr_t auto_select_da;
-static void AddEndCornus() {
- for (int i=0;i<tlist_da.cnt;i++) {
+static void AddEndCornus()
+{
+ for (int i=0; i<tlist_da.cnt; i++) {
track_p trk = DYNARR_N(track_p,tlist_da,i);
track_p tc;
- for (int j=GetTrkEndPtCnt(trk)-1;j>=0;j--) {
+ for (int j=GetTrkEndPtCnt(trk)-1; j>=0; j--) {
tc = GetTrkEndTrk(trk,j);
- if (tc && !GetTrkSelected(tc) && QueryTrack(tc,Q_IS_CORNU) && !QueryTrack(trk,Q_IS_CORNU)) { //On end and cornu
+ if (tc && !GetTrkSelected(tc) && QueryTrack(tc,Q_IS_CORNU)
+ && !QueryTrack(trk,Q_IS_CORNU)) { //On end and cornu
SelectOneTrack( tc, TRUE );
DYNARR_APPEND(track_p,tlist_da,1); //Add to selected list
DYNARR_LAST(track_p,tlist_da) = tc;
@@ -1377,9 +1243,10 @@ static void AddEndCornus() {
}
}
-static void RemoveEndCornus() {
+static void RemoveEndCornus()
+{
track_p tc;
- for (int i=0;i<auto_select_da.cnt;i++) {
+ for (int i=0; i<auto_select_da.cnt; i++) {
tc = DYNARR_N(track_p,auto_select_da,i);
SelectOneTrack( tc, FALSE );
RemoveSelectedTrack(tc);
@@ -1435,16 +1302,20 @@ static void SetMoveD( BOOL_T moveB, coOrd orig, ANGLE_T angle )
moveD_hi = mainD.orig;
Rotate( &moveD_hi, orig, -angle );
moveD_lo = moveD_hi;
- for (inx=0;inx<3;inx++) {
+ for (inx=0; inx<3; inx++) {
Rotate( &corner[inx], orig, -angle );
- if (corner[inx].x < moveD_lo.x)
+ if (corner[inx].x < moveD_lo.x) {
moveD_lo.x = corner[inx].x;
- if (corner[inx].y < moveD_lo.y)
+ }
+ if (corner[inx].y < moveD_lo.y) {
moveD_lo.y = corner[inx].y;
- if (corner[inx].x > moveD_hi.x)
+ }
+ if (corner[inx].x > moveD_hi.x) {
moveD_hi.x = corner[inx].x;
- if (corner[inx].y > moveD_hi.y)
+ }
+ if (corner[inx].y > moveD_hi.y) {
moveD_hi.y = corner[inx].y;
+ }
}
}
AccumulateTracks();
@@ -1456,9 +1327,10 @@ static void DrawMovedTracks( void )
int inx;
track_p trk;
dynArr_t cornu_segs;
+ DYNARR_INIT( trkSeg_t, cornu_segs );
- DrawSegs( &tempD, moveOrig, moveAngle, &tempSegs(0), tempSegs_da.cnt,
- 0.0, selectedColor );
+ DrawSegsDA( &tempD, NULL, moveOrig, moveAngle, &tempSegs_da, 0.0, selectedColor,
+ 0 );
for ( inx=0; inx<tlist_da.cnt; inx++ ) {
trk = Tlist(inx);
@@ -1470,13 +1342,13 @@ static void DrawMovedTracks( void )
coOrd center[2];
trackParams_t trackParams;
if (GetTrackParams(PARAMS_CORNU, trk, zero, &trackParams)) {
- for (int i=0;i<2;i++) {
+ for (int i=0; i<2; i++) {
pos[i] = trackParams.cornuEnd[i];
center[i] = trackParams.cornuCenter[i];
angle[i] = trackParams.cornuAngle[i];
radius[i] = trackParams.cornuRadius[i];
if (!GetTrkEndTrk(trk,i) ||
- (GetTrkEndTrk(trk,i) && GetTrkSelected(GetTrkEndTrk(trk,i)))) {
+ (GetTrkEndTrk(trk,i) && GetTrkSelected(GetTrkEndTrk(trk,i)))) {
if (!move0B) {
Rotate( &pos[i], zero, moveAngle );
Rotate( &center[i],zero, moveAngle );
@@ -1489,10 +1361,8 @@ static void DrawMovedTracks( void )
}
}
CallCornu0(&pos[0],&center[0],&angle[0],&radius[0],&cornu_segs, FALSE);
- trkSeg_p cornu_p = &DYNARR_N(trkSeg_t,cornu_segs,0);
-
- DrawSegsO(&tempD, trk, zero, 0.0, cornu_p,cornu_segs.cnt,
- GetTrkGauge(trk), selectedColor, DTS_LEFT|DTS_RIGHT );
+ DrawSegsDA(&tempD, trk, zero, 0.0, &cornu_segs,
+ GetTrkGauge(trk), selectedColor, DTS_LEFT|DTS_RIGHT );
}
}
@@ -1504,13 +1374,13 @@ static void DrawMovedTracks( void )
static void MoveTracks(
- BOOL_T eraseFirst,
- BOOL_T move,
- BOOL_T rotate,
- coOrd base,
- coOrd orig,
- ANGLE_T angle,
- BOOL_T undo)
+ BOOL_T eraseFirst,
+ BOOL_T move,
+ BOOL_T rotate,
+ coOrd base,
+ coOrd orig,
+ ANGLE_T angle,
+ BOOL_T undo)
{
track_p trk, trk1;
EPINX_T ep, ep1;
@@ -1530,21 +1400,23 @@ static void MoveTracks(
}
//Do non-Cornu first to establish new end-points
for ( inx=0; inx<tlist_da.cnt; inx++ ) {
- trk = Tlist(inx);
- UndoModify( trk );
- if (QueryTrack(trk, Q_IS_CORNU)) continue;
- if (move)
- MoveTrack( trk, base );
- if (rotate)
- RotateTrack( trk, orig, angle );
- for (ep=0; ep<GetTrkEndPtCnt(trk); ep++) {
- if ((trk1 = GetTrkEndTrk(trk,ep)) != NULL &&
- !GetTrkSelected(trk1)) {
- ep1 = GetEndPtConnectedToMe( trk1, trk );
- DisconnectTracks( trk, ep, trk1, ep1 );
- DrawEndPt( &mainD, trk1, ep1, wDrawColorBlack );
- }
+ trk = Tlist(inx);
+ UndoModify( trk );
+ if (QueryTrack(trk, Q_IS_CORNU)) { continue; }
+ if (move) {
+ MoveTrack( trk, base );
+ }
+ if (rotate) {
+ RotateTrack( trk, orig, angle );
+ }
+ for (ep=0; ep<GetTrkEndPtCnt(trk); ep++) {
+ if ((trk1 = GetTrkEndTrk(trk,ep)) != NULL &&
+ !GetTrkSelected(trk1)) {
+ ep1 = GetEndPtConnectedToMe( trk1, trk );
+ DisconnectTracks( trk, ep, trk1, ep1 );
+ DrawEndPt( &mainD, trk1, ep1, wDrawColorBlack );
}
+ }
}
//Now do the just Cornus - to reset to where the fixed parts ended up
for ( inx=0; inx<tlist_da.cnt; inx++ ) {
@@ -1552,28 +1424,30 @@ static void MoveTracks(
UndoModify( trk );
BOOL_T fixed_end;
fixed_end = FALSE;
- if (!QueryTrack(trk, Q_IS_CORNU)) continue;
- for (int i=0;i<2;i++) {
+ if (!QueryTrack(trk, Q_IS_CORNU)) { continue; }
+ for (int i=0; i<2; i++) {
track_p te;
if ((te = GetTrkEndTrk(trk,i)) && !GetTrkSelected(te)) {
fixed_end = TRUE;
}
}
- if (!fixed_end) {
- if (move)
+ if (!fixed_end) {
+ if (move) {
MoveTrack( trk, base );
- if (rotate)
+ }
+ if (rotate) {
RotateTrack( trk, orig, angle );
+ }
for (ep=0; ep<GetTrkEndPtCnt(trk); ep++) {
if ((trk1 = GetTrkEndTrk(trk,ep)) != NULL &&
- !GetTrkSelected(trk1)) {
+ !GetTrkSelected(trk1)) {
ep1 = GetEndPtConnectedToMe( trk1, trk );
DisconnectTracks( trk, ep, trk1, ep1 );
DrawEndPt( &mainD, trk1, ep1, wDrawColorBlack );
}
}
- } else {
- for (int i=0;i<2;i++) {
+ } else {
+ for (int i=0; i<2; i++) {
if ((trk1 = GetTrkEndTrk(trk,i)) && GetTrkSelected(trk1)) {
ep1 = GetEndPtConnectedToMe( trk1, trk );
DisconnectTracks(trk,i,trk1,ep1);
@@ -1610,7 +1484,8 @@ static void MoveTracks(
end_center = trackParms.cornuCenter[i];
end_center.x += base.x;
end_center.y += base.y;
- SetCornuEndPt(trk,i,end_pos,end_center,trackParms.cornuAngle[i],trackParms.cornuRadius[i]);
+ SetCornuEndPt(trk,i,end_pos,end_center,trackParms.cornuAngle[i],
+ trackParms.cornuRadius[i]);
}
if (rotate) {
coOrd end_pos, end_center;
@@ -1626,7 +1501,7 @@ static void MoveTracks(
DrawTrack(trk,&mapD,wDrawColorBlack);
}
}
- }
+ }
InfoCount( inx );
}
@@ -1634,52 +1509,62 @@ static void MoveTracks(
ClrAllTrkBits(TB_UNDRAWN);
DoRedraw();
wSetCursor( mainD.d, defaultCursor );
- if (undo) UndoEnd();
+ if (undo) { UndoEnd(); }
InfoCount( trackCount );
}
-
void MoveToJoin(
- track_p trk0,
- EPINX_T ep0,
- track_p trk1,
- EPINX_T ep1 )
+ track_p trk0,
+ EPINX_T ep0,
+ track_p trk1,
+ EPINX_T ep1 )
{
coOrd orig;
coOrd base;
ANGLE_T angle;
- UndoStart( _("Move To Join"), "Move To Join" );
- base = GetTrkEndPos(trk0,ep0);
- orig = GetTrkEndPos(trk1, ep1 );
- base.x = orig.x - base.x;
- base.y = orig.y - base.y;
- angle = GetTrkEndAngle(trk1,ep1);
- angle -= GetTrkEndAngle(trk0,ep0);
- angle += 180.0;
- angle = NormalizeAngle( angle );
- GetMovedTracks( FALSE );
- MoveTracks( TRUE, TRUE, TRUE, base, orig, angle, TRUE );
- UndrawNewTrack( trk0 );
- UndrawNewTrack( trk1 );
- ConnectTracks( trk0, ep0, trk1, ep1 );
- DrawNewTrack( trk0 );
- DrawNewTrack( trk1 );
- RemoveEndCornus();
+ UndoStart(_("Move To Join"), "Move To Join");
+ base = GetTrkEndPos(trk0, ep0);
+ orig = GetTrkEndPos(trk1, ep1);
+ base.x = orig.x - base.x;
+ base.y = orig.y - base.y;
+ angle = GetTrkEndAngle(trk1, ep1);
+ angle -= GetTrkEndAngle(trk0, ep0);
+ angle += 180.0;
+ angle = NormalizeAngle(angle);
+ GetMovedTracks(FALSE);
+ MoveTracks(TRUE, TRUE, TRUE, base, orig, angle, TRUE);
+ UndrawNewTrack( trk0 );
+ UndrawNewTrack( trk1 );
+ ConnectTracks( trk0, ep0, trk1, ep1 );
+ DrawNewTrack( trk0 );
+ DrawNewTrack( trk1 );
+ RemoveEndCornus();
+
+ track_p trk = NULL;
+ while (TrackIterate(&trk)) {
+ if (GetTrkSelected(trk)) {
+ ConnectAllEndPts(trk);
+ }
+ }
}
-void FreeTempStrings() {
+void FreeTempStrings()
+{
for (int i = 0; i<tempSegs_da.cnt; i++) {
if (tempSegs(i).type == SEG_TEXT) {
- if (tempSegs(i).u.t.string)
+ if (tempSegs(i).u.t.string) {
MyFree(tempSegs(i).u.t.string);
+ }
tempSegs(i).u.t.string = NULL;
}
}
}
-wBool_t FindEndIntersection(coOrd base, coOrd orig, ANGLE_T angle, track_p * t1, EPINX_T * ep1, track_p * t2, EPINX_T * ep2) {
+wBool_t FindEndIntersection(coOrd base, coOrd orig, ANGLE_T angle, track_p * t1,
+ EPINX_T * ep1, track_p * t2, EPINX_T * ep2)
+{
*ep1 = -1;
*ep2 = -1;
*t1 = NULL;
@@ -1689,13 +1574,13 @@ wBool_t FindEndIntersection(coOrd base, coOrd orig, ANGLE_T angle, track_p * t1,
for (int i=0; i<GetTrkEndPtCnt(ts); i++) { //All EndPoints
track_p ct;
if ((ct = GetTrkEndTrk(ts,i))!=NULL) {
- if (GetTrkSelected(ct) || QueryTrack(ts,Q_IS_CORNU)) continue; // Another selected track or Cornu - ignore
+ if (GetTrkSelected(ct) || QueryTrack(ts,Q_IS_CORNU)) { continue; } // Another selected track or Cornu - ignore
}
coOrd pos1 = GetTrkEndPos(ts,i);
- if (angle != 0.0)
+ if (angle != 0.0) {
Rotate(&pos1,orig,angle);
- else {
+ } else {
pos1.x +=base.x;
pos1.y +=base.y;
}
@@ -1703,7 +1588,7 @@ wBool_t FindEndIntersection(coOrd base, coOrd orig, ANGLE_T angle, track_p * t1,
pos2 = pos1;
track_p tt;
if ((tt=OnTrackIgnore(&pos2,FALSE,TRUE,ts))!=NULL) {
- if (GetTrkGauge(ts) != GetTrkGauge(tt)) continue; //Ignore if different gauges
+ if (GetTrkGauge(ts) != GetTrkGauge(tt)) { continue; } //Ignore if different gauges
if (!GetTrkSelected(tt)) { //Ignore if new track is selected
EPINX_T epp = PickUnconnectedEndPointSilent(pos2, tt);
if (epp>=0) {
@@ -1719,7 +1604,8 @@ wBool_t FindEndIntersection(coOrd base, coOrd orig, ANGLE_T angle, track_p * t1,
epp = PickEndPoint(pos2,tt); //Any close end point (even joined)
if (epp>=0) {
ct = GetTrkEndTrk(tt,epp);
- if (ct && GetTrkSelected(ct)) { //Point is junction to selected track - so will be broken
+ if (ct && GetTrkSelected(
+ ct)) { //Point is junction to selected track - so will be broken
DIST_T d = FindDistance(pos1,GetTrkEndPos(tt,epp));
if (IsClose(d)) {
*ep1 = epp;
@@ -1738,14 +1624,15 @@ wBool_t FindEndIntersection(coOrd base, coOrd orig, ANGLE_T angle, track_p * t1,
return FALSE;
}
-void DrawHighlightLayer(int layer) {
+void DrawHighlightLayer(int layer)
+{
track_p ts = NULL;
BOOL_T initial = TRUE;
coOrd layer_hi = zero,layer_lo = zero;
while ( TrackIterate( &ts ) ) {
- if ( !GetLayerVisible( GetTrkLayer( ts))) continue;
- if (!GetTrkSelected(ts)) continue;
- if (GetTrkLayer(ts) != layer) continue;
+ if ( !GetLayerVisible( GetTrkLayer( ts))) { continue; }
+ if (!GetTrkSelected(ts)) { continue; }
+ if (GetTrkLayer(ts) != layer) { continue; }
coOrd hi,lo;
GetBoundingBox(ts, &hi, &lo);
if (initial) {
@@ -1753,10 +1640,10 @@ void DrawHighlightLayer(int layer) {
layer_lo = lo;
initial = FALSE;
} else {
- if (layer_hi.x < hi.x ) layer_hi.x = hi.x;
- if (layer_hi.y < hi.y ) layer_hi.y = hi.y;
- if (layer_lo.x > lo.x ) layer_lo.x = lo.x;
- if (layer_lo.y > lo.y ) layer_lo.y = lo.y;
+ if (layer_hi.x < hi.x ) { layer_hi.x = hi.x; }
+ if (layer_hi.y < hi.y ) { layer_hi.y = hi.y; }
+ if (layer_lo.x > lo.x ) { layer_lo.x = lo.x; }
+ if (layer_lo.y > lo.y ) { layer_lo.y = lo.y; }
}
}
wDrawPix_t margin = (10.5*mainD.scale/mainD.dpi);
@@ -1777,7 +1664,8 @@ void DrawHighlightLayer(int layer) {
DrawPoly(&tempD,4,rect,type,wDrawColorPowderedBlue,wDrawLineDash,DRAW_CLOSED);
}
-void SetUpMenu2(coOrd pos, track_p trk) {
+void SetUpMenu2(coOrd pos, track_p trk)
+{
wMenuPushEnable( menuPushModify,FALSE);
wMenuPushEnable(descriptionMI,FALSE);
wMenuPushEnable( rotateAlignMI, FALSE );
@@ -1785,12 +1673,13 @@ void SetUpMenu2(coOrd pos, track_p trk) {
wMenuPushEnable( bridgeMI, FALSE );
wMenuPushEnable( tiesMI, FALSE );
if ((trk) &&
- QueryTrack(trk,Q_CAN_ADD_ENDPOINTS)) { //Turntable snap to center if within 1/4 radius
+ QueryTrack(trk,
+ Q_CAN_ADD_ENDPOINTS)) { //Turntable snap to center if within 1/4 radius
trackParams_t trackParams;
if (GetTrackParams(PARAMS_CORNU, trk, pos, &trackParams)) {
DIST_T dist = FindDistance(pos, trackParams.ttcenter);
if (dist < trackParams.ttradius/4) {
- cmdMenuPos = trackParams.ttcenter;
+ cmdMenuPos = trackParams.ttcenter;
}
}
}
@@ -1801,24 +1690,25 @@ void SetUpMenu2(coOrd pos, track_p trk) {
}
if (trk) {
wMenuPushEnable( menuPushModify,
- (QueryTrack( trk, Q_CAN_MODIFY_CONTROL_POINTS ) ||
- QueryTrack( trk, Q_IS_CORNU ) ||
- (QueryTrack( trk, Q_IS_DRAW ) && !QueryTrack( trk, Q_IS_TEXT )) ||
- QueryTrack( trk, Q_IS_ACTIVATEABLE)));
+ (QueryTrack( trk, Q_CAN_MODIFY_CONTROL_POINTS ) ||
+ QueryTrack( trk, Q_IS_CORNU ) ||
+ (QueryTrack( trk, Q_IS_DRAW ) && !QueryTrack( trk, Q_IS_TEXT )) ||
+ QueryTrack( trk, Q_IS_ACTIVATEABLE)));
}
if ((trk)) {
wMenuPushEnable(descriptionMI, QueryTrack( trk, Q_HAS_DESC ));
moveDescTrk = trk;
moveDescPos = pos;
}
- if (selectedTrackCount>0)
+ if (selectedTrackCount>0) {
wMenuPushEnable( rotateAlignMI, TRUE );
+ }
}
static STATUS_T CmdMove(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
static coOrd base;
static coOrd orig;
@@ -1832,166 +1722,172 @@ static STATUS_T CmdMove(
switch( action & 0xFF) {
- case C_START:
- DYNARR_RESET(trkSeg_t,anchors_da);
- if (selectedTrackCount == 0) {
- ErrorMessage( MSG_NO_SELECTED_TRK );
- return C_TERMINATE;
- }
- if (SelectedTracksAreFrozen()) {
- return C_TERMINATE;
- }
- InfoMessage( _("Drag to move selected tracks - Shift+Ctrl+Arrow micro-steps the move") );
- state = 0;
- ep1 = -1;
- ep2 = -1;
- doingMove = FALSE;
- break;
+ case C_START:
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ if (selectedTrackCount == 0) {
+ ErrorMessage( MSG_NO_SELECTED_TRK );
+ return C_TERMINATE;
+ }
+ if (SelectedTracksAreFrozen()) {
+ return C_TERMINATE;
+ }
+ InfoMessage(
+ _("Drag to move selected tracks - Shift+Ctrl+Arrow micro-steps the move") );
+ state = 0;
+ ep1 = -1;
+ ep2 = -1;
+ doingMove = FALSE;
+ break;
- case wActionMove:
- DYNARR_RESET(trkSeg_t,anchors_da);
- CreateMoveAnchor(pos);
- break;
- case C_DOWN:
- DYNARR_RESET(trkSeg_t,anchors_da);
- if (doingMove) {
- doingMove = FALSE;
- UndoEnd();
- }
+ case wActionMove:
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ CreateMoveAnchor(pos);
+ break;
+ case C_DOWN:
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ if (doingMove) {
+ doingMove = FALSE;
+ UndoEnd();
+ }
- if (SelectedTracksAreFrozen()) {
- return C_TERMINATE;
- }
- UndoStart( _("Move Tracks"), "move" );
- base = zero;
- orig = pos;
- DYNARR_RESET(track_p,auto_select_da);
- GetMovedTracks(TRUE);
- SetMoveD( TRUE, base, 0.0 );
- drawCount = 0;
- state = 1;
- return C_CONTINUE;
- case C_MOVE:
- DYNARR_RESET(trkSeg_t,anchors_da);
- ep1=-1;
- ep2=-1;
- drawEnable = enableMoveDraw;
- base.x = pos.x - orig.x;
- base.y = pos.y - orig.y;
- if ((MyGetKeyState() & WKEY_ALT) == 0) SnapPos( &base );
- SetMoveD( TRUE, base, 0.0 );
- if (((MyGetKeyState()&(WKEY_ALT)) == 0) == magneticSnap) { // ALT
- if (FindEndIntersection(base,zero,0.0,&t1,&ep1,&t2,&ep2)) {
- coOrd pos2 = GetTrkEndPos(t2,ep2);
- pos2.x +=base.x;
- pos2.y +=base.y;
- CreateEndAnchor(pos2,FALSE);
- CreateEndAnchor(GetTrkEndPos(t1,ep1),TRUE);
- }
+ if (SelectedTracksAreFrozen()) {
+ return C_TERMINATE;
+ }
+ UndoStart( _("Move Tracks"), "move" );
+ base = zero;
+ orig = pos;
+ DYNARR_RESET(track_p,auto_select_da);
+ GetMovedTracks(TRUE);
+ SetMoveD( TRUE, base, 0.0 );
+ drawCount = 0;
+ state = 1;
+ return C_CONTINUE;
+ case C_MOVE:
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ ep1=-1;
+ ep2=-1;
+ drawEnable = enableMoveDraw;
+ base.x = pos.x - orig.x;
+ base.y = pos.y - orig.y;
+ if ((MyGetKeyState() & WKEY_ALT) == 0) { SnapPos( &base ); }
+ SetMoveD( TRUE, base, 0.0 );
+ if (((MyGetKeyState()&(WKEY_ALT)) == 0) == magneticSnap) { // ALT
+ if (FindEndIntersection(base,zero,0.0,&t1,&ep1,&t2,&ep2)) {
+ coOrd pos2 = GetTrkEndPos(t2,ep2);
+ pos2.x +=base.x;
+ pos2.y +=base.y;
+ CreateEndAnchor(pos2,FALSE);
+ CreateEndAnchor(GetTrkEndPos(t1,ep1),TRUE);
}
+ }
#ifdef DRAWCOUNT
- InfoMessage( " [%s %s] #%ld", FormatDistance(base.x), FormatDistance(base.y), drawCount );
+ InfoMessage( " [%s %s] #%ld", FormatDistance(base.x), FormatDistance(base.y),
+ drawCount );
#else
- InfoMessage( " [%s %s]", FormatDistance(base.x), FormatDistance(base.y) );
+ InfoMessage( " [%s %s]", FormatDistance(base.x), FormatDistance(base.y) );
#endif
- drawEnable = TRUE;
- return C_CONTINUE;
- case C_UP:
- DYNARR_RESET(trkSeg_t,anchors_da);
- state = 0;
- FreeTempStrings();
- if (t1 && ep1>=0 && t2 && ep2>=0) {
- MoveToJoin(t2,ep2,t1,ep1);
- } else {
- MoveTracks( FALSE, TRUE, FALSE, base, zero, 0.0, TRUE );
- }
- ep1 = -1;
- ep2 = -1;
- RemoveEndCornus();
- tlist_da.cnt = 0;
- return C_TERMINATE;
+ drawEnable = TRUE;
+ return C_CONTINUE;
+ case C_UP:
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ state = 0;
+ FreeTempStrings();
+ if (t1 && ep1>=0 && t2 && ep2>=0) {
+ MoveToJoin(t2,ep2,t1,ep1);
+ } else {
+ MoveTracks( FALSE, TRUE, FALSE, base, zero, 0.0, TRUE );
+ }
+ ep1 = -1;
+ ep2 = -1;
+ RemoveEndCornus();
+ DYNARR_RESET( track_p, tlist_da );
+ return C_TERMINATE;
- case C_CMDMENU:
- if (doingMove) UndoEnd();
- doingMove = FALSE;
- base = pos;
- track_p trk = OnTrack(&pos, FALSE, FALSE); //Note pollutes pos if turntable
- if ((trk) &&
- QueryTrack(trk,Q_CAN_ADD_ENDPOINTS)) { //Turntable snap to center if within 1/4 radius
- trackParams_t trackParams;
- if (GetTrackParams(PARAMS_CORNU, trk, pos, &trackParams)) {
- DIST_T dist = FindDistance(base, trackParams.ttcenter);
- if (dist < trackParams.ttradius/4) {
- cmdMenuPos = trackParams.ttcenter;
- }
+ case C_CMDMENU:
+ if (doingMove) { UndoEnd(); }
+ doingMove = FALSE;
+ base = pos;
+ track_p trk = OnTrack(&pos, FALSE, FALSE); //Note pollutes pos if turntable
+ if ((trk) &&
+ QueryTrack(trk,
+ Q_CAN_ADD_ENDPOINTS)) { //Turntable snap to center if within 1/4 radius
+ trackParams_t trackParams;
+ if (GetTrackParams(PARAMS_CORNU, trk, pos, &trackParams)) {
+ DIST_T dist = FindDistance(base, trackParams.ttcenter);
+ if (dist < trackParams.ttradius/4) {
+ cmdMenuPos = trackParams.ttcenter;
}
}
- moveDescPos = pos;
- moveDescTrk = trk;
- SetUpMenu2(pos,trk);
- menuPos = pos;
- wMenuPopupShow( selectPopup2M );
- return C_CONTINUE;
+ }
+ moveDescPos = pos;
+ moveDescTrk = trk;
+ SetUpMenu2(pos,trk);
+ menuPos = pos;
+ wMenuPopupShow( selectPopup2M );
+ return C_CONTINUE;
- case C_TEXT:
- if ((action>>8) == 'c') {
- panCenter = pos;
- LOG( log_pan, 2, ( "PanCenter:Sel-%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
- PanHere(I2VP(0));
- }
- if ((action>>8) == 'e') {
- DoZoomExtents(I2VP(0));
- }
- if ((action>>8 == 's')) {
- DoZoomExtents(I2VP(1));
- }
- if ((action>>8) == '0' || (action>>8 == 'o')) {
- PanMenuEnter(I2VP('o'));
- }
- if ((action>>8) == 127 || (action>>8) == 8)
- SelectDelete();
+ case C_TEXT:
+ if ((action>>8) == 'c') {
+ panCenter = pos;
+ LOG( log_pan, 2, ( "PanCenter:Sel-%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
+ PanHere(I2VP(0));
+ }
+ if ((action>>8) == 'e') {
+ DoZoomExtents(I2VP(0));
+ }
+ if ((action>>8 == 's')) {
+ DoZoomExtents(I2VP(1));
+ }
+ if ((action>>8) == '0' || (action>>8 == 'o')) {
+ PanMenuEnter(I2VP('o'));
+ }
+ if ((action>>8) == 127 || (action>>8) == 8) {
+ SelectDelete();
+ }
+ break;
+ case C_REDRAW:
+ /* DO_REDRAW */
+ //Draw all existing highlight boxes only
+ DrawHighlightBoxes(FALSE, FALSE, NULL);
+ HighlightSelectedTracks(NULL, TRUE, TRUE);
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack,
+ 0 );
+ if ( state == 0 ) {
break;
- case C_REDRAW:
- /* DO_REDRAW */
- //Draw all existing highlight boxes only
- DrawHighlightBoxes(FALSE, FALSE, NULL);
- HighlightSelectedTracks(NULL, TRUE, TRUE);
- if (anchors_da.cnt)
- DrawSegs( &tempD, zero, 0.0, &anchors(0), anchors_da.cnt, trackGauge, wDrawColorBlack );
- if ( state == 0 )
- break;
- DrawMovedTracks();
+ }
+ DrawMovedTracks();
- break;
+ break;
- case wActionExtKey:
- if (state) return C_CONTINUE;
- if (SelectedTracksAreFrozen()) return C_TERMINATE;
- if ((MyGetKeyState() &
- (WKEY_SHIFT | WKEY_CTRL)) == (WKEY_SHIFT | WKEY_CTRL)) { //Both
- base = zero;
- DIST_T w = tempD.scale/tempD.dpi;
- switch((wAccelKey_e) action>>8) {
- case wAccelKey_Up:
- base.y = w;
- break;
- case wAccelKey_Down:
- base.y = -w;
- break;
- case wAccelKey_Left:
- base.x = -w;
- break;
- case wAccelKey_Right:
- base.x = w;
- break;
- default:
- return C_CONTINUE;
- break;
- }
+ case wActionExtKey:
+ if (state) { return C_CONTINUE; }
+ if (SelectedTracksAreFrozen()) { return C_TERMINATE; }
+ if ((MyGetKeyState() &
+ (WKEY_SHIFT | WKEY_CTRL)) == (WKEY_SHIFT | WKEY_CTRL)) { //Both
+ base = zero;
+ DIST_T w = tempD.scale/tempD.dpi;
+ switch((wAccelKey_e) action>>8) {
+ case wAccelKey_Up:
+ base.y = w;
+ break;
+ case wAccelKey_Down:
+ base.y = -w;
+ break;
+ case wAccelKey_Left:
+ base.x = -w;
+ break;
+ case wAccelKey_Right:
+ base.x = w;
+ break;
+ default:
+ return C_CONTINUE;
+ break;
+ }
drawEnable = enableMoveDraw;
GetMovedTracks(TRUE);
- if (!doingMove) UndoStart( _("Move Tracks"), "move" );
+ if (!doingMove) { UndoStart( _("Move Tracks"), "move" ); }
doingMove = TRUE;
SetMoveD( TRUE, base, 0.0 );
MoveTracks( FALSE, TRUE, FALSE, base, zero, 0.0, FALSE );
@@ -2002,28 +1898,28 @@ static STATUS_T CmdMove(
}
RemoveEndCornus();
return C_CONTINUE;
- }
- break;
+ }
+ break;
- case C_FINISH:
- if (doingMove) {
- doingMove = FALSE;
- UndoEnd();
- }
- RemoveEndCornus();
- tlist_da.cnt = 0;
- break;
- case C_CONFIRM:
- case C_CANCEL:
- if (doingMove) {
- doingMove = FALSE;
- UndoUndo(NULL);
- }
- RemoveEndCornus();
- tlist_da.cnt = 0;
- break;
- default:
- break;
+ case C_FINISH:
+ if (doingMove) {
+ doingMove = FALSE;
+ UndoEnd();
+ }
+ RemoveEndCornus();
+ DYNARR_RESET( track_p, tlist_da );
+ break;
+ case C_CONFIRM:
+ case C_CANCEL:
+ if (doingMove) {
+ doingMove = FALSE;
+ UndoUndo(NULL);
+ }
+ RemoveEndCornus();
+ DYNARR_RESET( track_p, tlist_da );
+ break;
+ default:
+ break;
}
return C_CONTINUE;
}
@@ -2045,8 +1941,8 @@ static void RotateAlign( void * alignVP )
}
static STATUS_T CmdRotate(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
static coOrd base;
static coOrd orig_base;
@@ -2068,303 +1964,332 @@ static STATUS_T CmdRotate(
switch( action ) {
- case C_START:
- DYNARR_RESET(trkSeg_t,anchors_da);
- state = 0;
- if (selectedTrackCount == 0) {
- ErrorMessage( MSG_NO_SELECTED_TRK );
- return C_TERMINATE;
- }
- if (SelectedTracksAreFrozen()) {
- return C_TERMINATE;
- }
- InfoMessage( _("Drag to rotate selected tracks, Shift+RightClick for QuickRotate Menu") );
- wMenuPushEnable( rotateAlignMI, TRUE );
- rotateAlignState = 0;
- ep1 = -1;
- ep2 = -1;
- break;
- case wActionMove:
- DYNARR_RESET(trkSeg_t,anchors_da);
- CreateRotateAnchor(pos);
- break;
- case C_DOWN:
- DYNARR_RESET(trkSeg_t,anchors_da);
- state = 1;
- if (SelectedTracksAreFrozen()) {
- return C_TERMINATE;
- }
- UndoStart( _("Rotate Tracks"), "rotate" );
- DYNARR_RESET(track_p,auto_select_da);
- if ( rotateAlignState == 0 ) {
- drawnAngle = FALSE;
- angle = 0.0;
- base = orig = pos;
- trk = OnTrack(&pos, FALSE, FALSE); //Note pollutes pos if turntable
- if ((trk) &&
- QueryTrack(trk,Q_CAN_ADD_ENDPOINTS)) { //Turntable snap to center if within 1/4 radius
- trackParams_t trackParams;
- if (GetTrackParams(PARAMS_CORNU, trk, pos, &trackParams)) {
- DIST_T dist = FindDistance(base, trackParams.ttcenter);
- if (dist < trackParams.ttradius/4) {
- base = orig = trackParams.ttcenter;
- InfoMessage( _("Center of Rotation snapped to Turntable center") );
- }
+ case C_START:
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ state = 0;
+ if (selectedTrackCount == 0) {
+ ErrorMessage( MSG_NO_SELECTED_TRK );
+ return C_TERMINATE;
+ }
+ if (SelectedTracksAreFrozen()) {
+ return C_TERMINATE;
+ }
+ InfoMessage(
+ _("Drag to rotate selected tracks, Shift+RightClick for QuickRotate Menu") );
+ wMenuPushEnable( rotateAlignMI, TRUE );
+ rotateAlignState = 0;
+ ep1 = -1;
+ ep2 = -1;
+ break;
+ case wActionMove:
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ CreateRotateAnchor(pos);
+ break;
+ case C_DOWN:
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ state = 1;
+ if (SelectedTracksAreFrozen()) {
+ return C_TERMINATE;
+ }
+ UndoStart( _("Rotate Tracks"), "rotate" );
+ DYNARR_RESET(track_p,auto_select_da);
+ if ( rotateAlignState == 0 ) {
+ drawnAngle = FALSE;
+ angle = 0.0;
+ base = orig = pos;
+ trk = OnTrack(&pos, FALSE, FALSE); //Note pollutes pos if turntable
+ if ((trk) &&
+ QueryTrack(trk,
+ Q_CAN_ADD_ENDPOINTS)) { //Turntable snap to center if within 1/4 radius
+ trackParams_t trackParams;
+ if (GetTrackParams(PARAMS_CORNU, trk, pos, &trackParams)) {
+ DIST_T dist = FindDistance(base, trackParams.ttcenter);
+ if (dist < trackParams.ttradius/4) {
+ base = orig = trackParams.ttcenter;
+ InfoMessage( _("Center of Rotation snapped to Turntable center") );
}
}
- CreateRotateAnchor(orig);
- GetMovedTracks(TRUE);
- SetMoveD( FALSE, base, angle );
+ }
+ CreateRotateAnchor(orig);
+ GetMovedTracks(TRUE);
+ SetMoveD( FALSE, base, angle );
- /*DrawLine( &mainD, base, orig, 0, wDrawColorBlack );
- DrawMovedTracks(FALSE, orig, angle);*/
- } else {
- pos1 = pos;
- drawnAngle = FALSE;
- onTrackInSplit = TRUE;
- trk = OnTrack( &pos, TRUE, FALSE );
- onTrackInSplit = FALSE;
- if ( trk == NULL ) return C_CONTINUE;
- angle1 = NormalizeAngle( GetAngleAtPoint( trk, pos, NULL, NULL ) );
- if ( rotateAlignState == 1 ) {
- if ( !GetTrkSelected(trk) ) {
- NoticeMessage( MSG_1ST_TRACK_MUST_BE_SELECTED, _("Ok"), NULL );
- } else {
- base = pos;
- baseAngle = angle1;
- getboundsCount = 0;
- DoSelectedTracks( GetboundsDoIt );
- orig.x = (getboundsLo.x+getboundsHi.x)/2.0;
- orig.y = (getboundsLo.y+getboundsHi.y)/2.0;
-/*printf( "orig = [%0.3f %0.3f], baseAngle = %0.3f\n", orig.x, orig.y, baseAngle );*/
- }
+ /*DrawLine( &mainD, base, orig, 0, wDrawColorBlack );
+ DrawMovedTracks(FALSE, orig, angle);*/
+ } else {
+ pos1 = pos;
+ drawnAngle = FALSE;
+ onTrackInSplit = TRUE;
+ trk = OnTrack( &pos, TRUE, FALSE );
+ onTrackInSplit = FALSE;
+ if ( trk == NULL ) { return C_CONTINUE; }
+ angle1 = NormalizeAngle( GetAngleAtPoint( trk, pos, NULL, NULL ) );
+ if ( rotateAlignState == 1 ) {
+ if ( !GetTrkSelected(trk) ) {
+ NoticeMessage( MSG_1ST_TRACK_MUST_BE_SELECTED, _("Ok"), NULL );
} else {
- if ( GetTrkSelected(trk) ) {
- ErrorMessage( MSG_2ND_TRACK_MUST_BE_UNSELECTED );
- angle = 0;
- } else {
- angle = NormalizeAngle(angle1-baseAngle);
- //if ( angle > 90 && angle < 270 )
- // angle = NormalizeAngle( angle + 180.0 );
- //if ( NormalizeAngle( FindAngle( base, pos1 ) - angle1 ) < 180.0 )
- // angle = NormalizeAngle( angle + 180.0 );
-/*printf( "angle 1 = %0.3f\n", angle );*/
- if ( angle1 > 180.0 ) angle1 -= 180.0;
- InfoMessage( _("Angle %0.3f"), angle1 );
- }
- GetMovedTracks(TRUE);
- SetMoveD( FALSE, orig, angle );
+ coOrd low, high;
+ base = pos;
+ baseAngle = angle1;
+ GetSelectedBounds( &low, &high );
+// getboundsCount = 0;
+// DoSelectedTracks( GetboundsDoIt );
+// orig.x = (getboundsLo.x+getboundsHi.x)/2.0;
+// orig.y = (getboundsLo.y+getboundsHi.y)/2.0;
+ orig.x = (low.x+high.x)/2.0;
+ orig.y = (low.y+high.y)/2.0;
+ /*printf( "orig = [%0.3f %0.3f], baseAngle = %0.3f\n", orig.x, orig.y, baseAngle );*/
}
- }
- return C_CONTINUE;
- case C_MOVE:
- DYNARR_RESET(trkSeg_t,anchors_da);
- ep1=-1;
- ep2=-1;
- if ( rotateAlignState == 1 )
- return C_CONTINUE;
- if ( rotateAlignState == 2 ) {
- pos1 = pos;
- onTrackInSplit = TRUE;
- trk = OnTrack( &pos, TRUE, FALSE );
- onTrackInSplit = FALSE;
- if ( trk == NULL )
- return C_CONTINUE;
+ } else {
if ( GetTrkSelected(trk) ) {
ErrorMessage( MSG_2ND_TRACK_MUST_BE_UNSELECTED );
- return C_CONTINUE;
+ angle = 0;
+ } else {
+ angle = NormalizeAngle(angle1-baseAngle);
+ //if ( angle > 90 && angle < 270 )
+ // angle = NormalizeAngle( angle + 180.0 );
+ //if ( NormalizeAngle( FindAngle( base, pos1 ) - angle1 ) < 180.0 )
+ // angle = NormalizeAngle( angle + 180.0 );
+ /*printf( "angle 1 = %0.3f\n", angle );*/
+ if ( angle1 > 180.0 ) { angle1 -= 180.0; }
+ InfoMessage( _("Angle %0.3f"), angle1 );
}
- angle1 = NormalizeAngle( GetAngleAtPoint( trk, pos, NULL, NULL ) );
- angle = NormalizeAngle(angle1-baseAngle);
- if ( angle > 90 && angle < 270 )
- angle = NormalizeAngle( angle + 180.0 );
- if ( NormalizeAngle( FindAngle( pos, pos1 ) - angle1 ) < 180.0 )
- angle = NormalizeAngle( angle + 180.0 );
- if ( angle1 > 180.0 ) angle1 -= 180.0;
- InfoMessage( _("Angle %0.3f"), angle1 );
+ GetMovedTracks(TRUE);
SetMoveD( FALSE, orig, angle );
-/*printf( "angle 2 = %0.3f\n", angle );*/
+ }
+ }
+ return C_CONTINUE;
+ case C_MOVE:
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ ep1=-1;
+ ep2=-1;
+ if ( rotateAlignState == 1 ) {
+ return C_CONTINUE;
+ }
+ if ( rotateAlignState == 2 ) {
+ pos1 = pos;
+ onTrackInSplit = TRUE;
+ trk = OnTrack( &pos, TRUE, FALSE );
+ onTrackInSplit = FALSE;
+ if ( trk == NULL ) {
return C_CONTINUE;
}
- ANGLE_T diff_angle = 0.0;
- base = pos;
- drawEnable = enableMoveDraw;
- if ( FindDistance( orig, pos ) > (20.0/BASE_DPI)*mainD.scale ) {
- ANGLE_T old_angle = angle;
- angle = FindAngle( orig, pos );
- if (!drawnAngle) {
- baseAngle = angle;
- drawnAngle = TRUE;
- direction_set = FALSE;
+ if ( GetTrkSelected(trk) ) {
+ ErrorMessage( MSG_2ND_TRACK_MUST_BE_UNSELECTED );
+ return C_CONTINUE;
+ }
+ angle1 = NormalizeAngle( GetAngleAtPoint( trk, pos, NULL, NULL ) );
+ angle = NormalizeAngle(angle1-baseAngle);
+ if ( angle > 90 && angle < 270 ) {
+ angle = NormalizeAngle( angle + 180.0 );
+ }
+ if ( NormalizeAngle( FindAngle( pos, pos1 ) - angle1 ) < 180.0 ) {
+ angle = NormalizeAngle( angle + 180.0 );
+ }
+ if ( angle1 > 180.0 ) { angle1 -= 180.0; }
+ InfoMessage( _("Angle %0.3f"), angle1 );
+ SetMoveD( FALSE, orig, angle );
+ /*printf( "angle 2 = %0.3f\n", angle );*/
+ return C_CONTINUE;
+ }
+ ANGLE_T diff_angle = 0.0;
+ base = pos;
+ drawEnable = enableMoveDraw;
+ if ( FindDistance( orig, pos ) > (20.0/BASE_DPI)*mainD.scale ) {
+ ANGLE_T old_angle = angle;
+ angle = FindAngle( orig, pos );
+ if (!drawnAngle) {
+ baseAngle = angle;
+ drawnAngle = TRUE;
+ direction_set = FALSE;
+ } else {
+ if (!direction_set) {
+ if (DifferenceBetweenAngles(baseAngle,angle)>=0) { clockwise = TRUE; }
+ else { clockwise = FALSE; }
+ direction_set = TRUE;
} else {
- if (!direction_set) {
- if (DifferenceBetweenAngles(baseAngle,angle)>=0) clockwise = TRUE;
- else clockwise = FALSE;
- direction_set = TRUE;
+ if (clockwise) {
+ if (DifferenceBetweenAngles(baseAngle,angle)<0
+ && fabs(DifferenceBetweenAngles(baseAngle, old_angle))<5) {
+ clockwise = FALSE;
+ }
} else {
- if (clockwise) {
- if (DifferenceBetweenAngles(baseAngle,angle)<0 && fabs(DifferenceBetweenAngles(baseAngle, old_angle))<5)
- clockwise = FALSE;
- } else {
- if (DifferenceBetweenAngles(baseAngle,angle)>=0 && fabs(DifferenceBetweenAngles(baseAngle,old_angle))<5)
- clockwise = TRUE;
+ if (DifferenceBetweenAngles(baseAngle,angle)>=0
+ && fabs(DifferenceBetweenAngles(baseAngle,old_angle))<5) {
+ clockwise = TRUE;
}
}
}
- orig_base = base = pos;
- //angle = NormalizeAngle( angle-baseAngle );
- diff_angle = DifferenceBetweenAngles(baseAngle,angle);
- if ( (MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) == (WKEY_CTRL|WKEY_SHIFT) ) { //Both Shift+Ctrl
- if (clockwise) {
- if (diff_angle<0) diff_angle+=360;
- } else {
- if (diff_angle>0) diff_angle-=360;
- }
- diff_angle = floor((diff_angle+7.5)/15.0)*15.0;
- angle = baseAngle+diff_angle;
+ }
+ orig_base = base = pos;
+ //angle = NormalizeAngle( angle-baseAngle );
+ diff_angle = DifferenceBetweenAngles(baseAngle,angle);
+ if ( (MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) ==
+ (WKEY_CTRL|WKEY_SHIFT) ) { //Both Shift+Ctrl
+ if (clockwise) {
+ if (diff_angle<0) { diff_angle+=360; }
+ } else {
+ if (diff_angle>0) { diff_angle-=360; }
}
- Translate( &base, orig, angle, FindDistance(orig,pos) ); //Line one
- Translate( &orig_base,orig, baseAngle, FindDistance(orig,pos)<=(60.0/BASE_DPI*mainD.scale)?FindDistance(orig,pos):60.0/BASE_DPI*mainD.scale ); //Line two
- SetMoveD( FALSE, orig, NormalizeAngle( angle-baseAngle ) );
- if (((MyGetKeyState()&(WKEY_ALT)) == WKEY_ALT) != magneticSnap) { //Just Shift
- if (FindEndIntersection(zero,orig,NormalizeAngle( angle-baseAngle ),&t1,&ep1,&t2,&ep2)) {
- coOrd pos2 = GetTrkEndPos(t2,ep2);
- coOrd pos1 = GetTrkEndPos(t1,ep1);
- Rotate(&pos2,orig,NormalizeAngle( angle-baseAngle ));
- CreateEndAnchor(pos2,FALSE);
- CreateEndAnchor(pos1,TRUE);
- }
+ diff_angle = floor((diff_angle+7.5)/15.0)*15.0;
+ angle = baseAngle+diff_angle;
+ }
+ Translate( &base, orig, angle, FindDistance(orig,pos) ); //Line one
+ Translate( &orig_base,orig, baseAngle, FindDistance(orig,
+ pos)<=(60.0/BASE_DPI*mainD.scale)?FindDistance(orig,
+ pos):60.0/BASE_DPI*mainD.scale ); //Line two
+ SetMoveD( FALSE, orig, NormalizeAngle( angle-baseAngle ) );
+ if (((MyGetKeyState()&(WKEY_ALT)) == WKEY_ALT) != magneticSnap) { //Just Shift
+ if (FindEndIntersection(zero,orig,NormalizeAngle( angle-baseAngle ),&t1,&ep1,
+ &t2,&ep2)) {
+ coOrd pos2 = GetTrkEndPos(t2,ep2);
+ coOrd pos1 = GetTrkEndPos(t1,ep1);
+ Rotate(&pos2,orig,NormalizeAngle( angle-baseAngle ));
+ CreateEndAnchor(pos2,FALSE);
+ CreateEndAnchor(pos1,TRUE);
}
+ }
#ifdef DRAWCOUNT
- InfoMessage( _("Angle %0.3f #%ld"), fabs(diff_angle), drawCount );
+ InfoMessage( _("Angle %0.3f #%ld"), fabs(diff_angle), drawCount );
#else
- InfoMessage( _("Angle %0.3f %s"), fabs(diff_angle), clockwise?"Clockwise":"Counter-Clockwise" );
+ InfoMessage( _("Angle %0.3f %s"), fabs(diff_angle),
+ clockwise?"Clockwise":"Counter-Clockwise" );
#endif
- wFlush();
- drawEnable = TRUE;
- } else
- InfoMessage( _("Origin Set. Drag away to set start angle"));
+ wFlush();
+ drawEnable = TRUE;
+ } else {
+ InfoMessage( _("Origin Set. Drag away to set start angle"));
+ }
- return C_CONTINUE;
+ return C_CONTINUE;
- case C_UP:
- DYNARR_RESET(trkSeg_t,anchors_da);
- state = 0;
- if (t1 && ep1>=0 && t2 && ep2>=0) {
- MoveToJoin(t2,ep2,t1,ep1);
- CleanSegs(&tempSegs_da);
- rotateAlignState = 0;
- } else {
- if ( rotateAlignState == 1 ) {
- if ( trk && GetTrkSelected(trk) ) {
- InfoMessage( _("Align: Click on the 2nd unselected object") );
- rotateAlignState = 2;
- }
- return C_CONTINUE;
- }
- CleanSegs(&tempSegs_da);
- if ( rotateAlignState == 2 ) {
- MoveTracks( FALSE, FALSE, TRUE, zero, orig, angle, TRUE );
- rotateAlignState = 0;
- } else if (drawnAngle) {
- MoveTracks( FALSE, FALSE, TRUE, zero, orig, NormalizeAngle( angle-baseAngle ), TRUE );
+ case C_UP:
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ state = 0;
+ if (t1 && ep1>=0 && t2 && ep2>=0) {
+ MoveToJoin(t2,ep2,t1,ep1);
+ CleanSegs(&tempSegs_da);
+ rotateAlignState = 0;
+ } else {
+ if ( rotateAlignState == 1 ) {
+ if ( trk && GetTrkSelected(trk) ) {
+ InfoMessage( _("Align: Click on the 2nd unselected object") );
+ rotateAlignState = 2;
}
+ return C_CONTINUE;
}
- UndoEnd();
- RemoveEndCornus();
- tlist_da.cnt = 0;
- return C_TERMINATE;
+ CleanSegs(&tempSegs_da);
+ if ( rotateAlignState == 2 ) {
+ MoveTracks( FALSE, FALSE, TRUE, zero, orig, angle, TRUE );
+ rotateAlignState = 0;
+ } else if (drawnAngle) {
+ MoveTracks( FALSE, FALSE, TRUE, zero, orig, NormalizeAngle( angle-baseAngle ),
+ TRUE );
+ }
+ }
+ UndoEnd();
+ RemoveEndCornus();
+ DYNARR_RESET( track_p, tlist_da );
+ return C_TERMINATE;
- case C_CMDMENU:
- base = pos;
- trk = OnTrack(&pos, FALSE, FALSE); //Note pollutes pos if turntable
- if ((trk) &&
- QueryTrack(trk,Q_CAN_ADD_ENDPOINTS)) { //Turntable snap to center if within 1/4 radius
- trackParams_t trackParams;
- if (GetTrackParams(PARAMS_CORNU, trk, pos, &trackParams)) {
- DIST_T dist = FindDistance(base, trackParams.ttcenter);
- if (dist < trackParams.ttradius/4) {
- cmdMenuPos = trackParams.ttcenter;
- }
+ case C_CMDMENU:
+ base = pos;
+ trk = OnTrack(&pos, FALSE, FALSE); //Note pollutes pos if turntable
+ if ((trk) &&
+ QueryTrack(trk,
+ Q_CAN_ADD_ENDPOINTS)) { //Turntable snap to center if within 1/4 radius
+ trackParams_t trackParams;
+ if (GetTrackParams(PARAMS_CORNU, trk, pos, &trackParams)) {
+ DIST_T dist = FindDistance(base, trackParams.ttcenter);
+ if (dist < trackParams.ttradius/4) {
+ cmdMenuPos = trackParams.ttcenter;
}
}
- moveDescPos = pos;
- moveDescTrk = trk;
- SetUpMenu2(pos,trk);
- menuPos = pos;
- wMenuPopupShow( selectPopup2M );
- return C_CONTINUE;
+ }
+ moveDescPos = pos;
+ moveDescTrk = trk;
+ SetUpMenu2(pos,trk);
+ menuPos = pos;
+ wMenuPopupShow( selectPopup2M );
+ return C_CONTINUE;
- case C_TEXT:
- if ((action>>8) == 'd') {
- panCenter = pos;
- LOG( log_pan, 2, ( "PanCenter:Sel-%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
- PanHere(I2VP(0));
- }
- if ((action>>8) == 'e') {
- DoZoomExtents(I2VP(0));
- }
- if ((action>>8) == 's') {
- DoZoomExtents(I2VP(1));
- }
- if ((action>>8) == '0' || (action>>8 == 'o')) {
- PanMenuEnter(I2VP('o'));
- }
+ case C_TEXT:
+ if ((action>>8) == 'd') {
+ panCenter = pos;
+ LOG( log_pan, 2, ( "PanCenter:Sel-%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
+ PanHere(I2VP(0));
+ }
+ if ((action>>8) == 'e') {
+ DoZoomExtents(I2VP(0));
+ }
+ if ((action>>8) == 's') {
+ DoZoomExtents(I2VP(1));
+ }
+ if ((action>>8) == '0' || (action>>8 == 'o')) {
+ PanMenuEnter(I2VP('o'));
+ }
+ break;
+ case C_REDRAW:
+ DrawHighlightBoxes(FALSE,FALSE,NULL);
+ HighlightSelectedTracks(NULL, TRUE, TRUE);
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack,
+ 0 );
+ /* DO_REDRAW */
+ if ( state == 0 ) {
break;
- case C_REDRAW:
- DrawHighlightBoxes(FALSE,FALSE,NULL);
- HighlightSelectedTracks(NULL, TRUE, TRUE);
- if (anchors_da.cnt)
- DrawSegs( &tempD, zero, 0.0, &anchors(0), anchors_da.cnt, trackGauge, wDrawColorBlack );
- /* DO_REDRAW */
- if ( state == 0 )
- break;
- if ( rotateAlignState != 2 ) {
- DIST_T width = tempD.scale*0.15;
- DrawLine( &tempD, base, orig, 0, wDrawColorBlue );
- if (drawnAngle) {
- DrawLine( &tempD, orig_base, orig, (wDrawWidth)width/2, wDrawColorBlue );
- ANGLE_T a = DifferenceBetweenAngles(FindAngle(orig, orig_base),FindAngle(orig, base));
-
- DIST_T dist = FindDistance(orig,base);
- if (dist>(60.0/BASE_DPI)*mainD.scale) dist = (60.0/BASE_DPI)*mainD.scale;
-
- if (direction_set) {
- if (clockwise) {
- if (a<0) a = a + 360;
- DrawArc( &tempD, orig, dist/2, FindAngle(orig,orig_base), a, FALSE, 0, wDrawColorBlue);
- } else {
- if (a>0) a = a - 360;
- DrawArc( &tempD, orig, dist/2, FindAngle(orig,base), fabs(a), FALSE, 0, wDrawColorBlue);
- }
- DIST_T d;
- d = mainD.scale*0.25;
- ANGLE_T arrow_a = NormalizeAngle(FindAngle(orig,orig_base)+a/2);
- coOrd arr1,arr2,arr3;
- Translate(&arr2,orig,arrow_a,dist/2);
- if (clockwise) arrow_a +=90;
- else arrow_a -=90;
- Translate(&arr1,arr2,arrow_a+135,d/2);
- Translate(&arr3,arr2,arrow_a-135,d/2);
- DrawLine( &tempD, arr1, arr2, 0, wDrawColorBlue );
- DrawLine( &tempD, arr2, arr3, 0, wDrawColorBlue );
+ }
+ if ( rotateAlignState != 2 ) {
+ DIST_T width = tempD.scale*0.15;
+ DrawLine( &tempD, base, orig, 0, wDrawColorBlue );
+ if (drawnAngle) {
+ DrawLine( &tempD, orig_base, orig, (wDrawWidth)width/2, wDrawColorBlue );
+ ANGLE_T a = DifferenceBetweenAngles(FindAngle(orig, orig_base),FindAngle(orig,
+ base));
+
+ DIST_T dist = FindDistance(orig,base);
+ if (dist>(60.0/BASE_DPI)*mainD.scale) { dist = (60.0/BASE_DPI)*mainD.scale; }
+
+ if (direction_set) {
+ if (clockwise) {
+ if (a<0) { a = a + 360; }
+ DrawArc( &tempD, orig, dist/2, FindAngle(orig,orig_base), a, FALSE, 0,
+ wDrawColorBlue);
+ } else {
+ if (a>0) { a = a - 360; }
+ DrawArc( &tempD, orig, dist/2, FindAngle(orig,base), fabs(a), FALSE, 0,
+ wDrawColorBlue);
}
+ DIST_T d;
+ d = mainD.scale*0.25;
+ ANGLE_T arrow_a = NormalizeAngle(FindAngle(orig,orig_base)+a/2);
+ coOrd arr1,arr2,arr3;
+ Translate(&arr2,orig,arrow_a,dist/2);
+ if (clockwise) { arrow_a +=90; }
+ else { arrow_a -=90; }
+ Translate(&arr1,arr2,arrow_a+135,d/2);
+ Translate(&arr3,arr2,arrow_a-135,d/2);
+ DrawLine( &tempD, arr1, arr2, 0, wDrawColorBlue );
+ DrawLine( &tempD, arr2, arr3, 0, wDrawColorBlue );
}
-
}
- DrawMovedTracks();
- break;
}
+ DrawMovedTracks();
+ break;
+
+ }
return C_CONTINUE;
}
-static void QuickMove( void* pos) {
+static void QuickMove( void* pos)
+{
coOrd move_pos = *(coOrd*)pos;
DYNARR_RESET(track_p,auto_select_da);
- if ( SelectedTracksAreFrozen() )
+ if ( SelectedTracksAreFrozen() ) {
return;
+ }
wDrawDelayUpdate( mainD.d, TRUE );
GetMovedTracks(FALSE);
UndoStart( _("Move Tracks"), "Move Tracks" );
@@ -2372,16 +2297,18 @@ static void QuickMove( void* pos) {
wDrawDelayUpdate( mainD.d, FALSE );
}
-static track_p SelectTrackByIndex(TRKINX_T ti, char * message ) {
+static track_p SelectTrackByIndex(TRKINX_T ti, char * message )
+{
track_p trk = FindTrack(ti);
if (trk) {
if (!GetLayerFrozen( GetTrkLayer( trk ) ) ) {
if (GetLayerModule(GetTrkLayer(trk))) {
DoModuleTracks(GetTrkLayer(trk),DrawSingleTrack,TRUE);
- snprintf(message, STR_LONG_SIZE, "%s %d",_("In module layer:"),GetTrkLayer(trk)+1);
+ snprintf(message, STR_LONG_SIZE, "%s %d",_("In module layer:"),
+ GetTrkLayer(trk)+1);
} else {
- if (!GetLayerVisible(GetTrkLayer(trk))) FlipLayer(I2VP(GetTrkLayer(trk)));
- if (!GetTrkVisible(trk) && drawTunnel==0 ) drawTunnel = 1; //Force DRAW_TUNNEL_DASH
+ if (!GetLayerVisible(GetTrkLayer(trk))) { FlipLayer(I2VP(GetTrkLayer(trk))); }
+ if (!GetTrkVisible(trk) && drawTunnel==0 ) { drawTunnel = 1; } //Force DRAW_TUNNEL_DASH
SelectOneTrack(trk,TRUE);
}
} else {
@@ -2394,7 +2321,8 @@ static track_p SelectTrackByIndex(TRKINX_T ti, char * message ) {
return trk;
}
-EXPORT void SelectByIndex( void* string) {
+EXPORT void SelectByIndex( void* string)
+{
char result[STR_LONG_SIZE] = "";
char * message;
SetAllTrackSelect(FALSE);
@@ -2414,13 +2342,13 @@ EXPORT void SelectByIndex( void* string) {
}
}
cp = strtok(NULL,",");
- if (cp) single = FALSE;
+ if (cp) { single = FALSE; }
}
DoZoomExtents(I2VP(1));
- if (strlen(result))
+ if (strlen(result)) {
InfoMessage(result);
- else if (single && trk) {
+ } else if (single && trk) {
char msg[STR_SIZE];
DescribeTrack( trk, msg, sizeof msg );
InfoMessage( msg );
@@ -2433,8 +2361,9 @@ static void QuickRotate( void* pangle )
{
ANGLE_T angle = (ANGLE_T)VP2L(pangle);
DYNARR_RESET(track_p,auto_select_da);
- if ( SelectedTracksAreFrozen() )
+ if ( SelectedTracksAreFrozen() ) {
return;
+ }
wDrawDelayUpdate( mainD.d, TRUE );
GetMovedTracks(FALSE);
//DrawSelectedTracksD( &mainD, wDrawColorWhite );
@@ -2457,8 +2386,9 @@ static void ChangeDetailedFlag( void * mode )
if ( ( GetTrkBits( moveDescTrk ) & TB_DETAILDESC ) == 0 ) {
ClrTrkBits( moveDescTrk, TB_HIDEDESC );
SetTrkBits( moveDescTrk, TB_DETAILDESC );
- } else
+ } else {
ClrTrkBits( moveDescTrk, TB_DETAILDESC );
+ }
DrawNewTrack( moveDescTrk );
wDrawDelayUpdate( mainD.d, FALSE );
}
@@ -2469,10 +2399,11 @@ static void ChangeDescFlag( void * mode )
UndoStart( _("Toggle Label"), "Modedesc( T%d )", GetTrkIndex(moveDescTrk) );
UndoModify( moveDescTrk );
UndrawNewTrack( moveDescTrk );
- if ( ( GetTrkBits( moveDescTrk ) & TB_HIDEDESC ) == 0 )
+ if ( ( GetTrkBits( moveDescTrk ) & TB_HIDEDESC ) == 0 ) {
SetTrkBits( moveDescTrk, TB_HIDEDESC );
- else
+ } else {
ClrTrkBits( moveDescTrk, TB_HIDEDESC );
+ }
DrawNewTrack( moveDescTrk );
wDrawDelayUpdate( mainD.d, FALSE );
}
@@ -2481,134 +2412,142 @@ static void ChangeDescFlag( void * mode )
* Mode_o -1 = everything, 0 = elevations only, 1 = descriptions only
*/
-track_p FindTrackDescription(coOrd pos, EPINX_T * ep_o, int * mode_o, BOOL_T show_hidden, BOOL_T * hidden_o) {
- track_p trk = NULL;
- DIST_T d, dd = DIST_INF;
- track_p trk1 = NULL;
- EPINX_T ep1=-1, ep=-1;
- BOOL_T hidden_t, hidden;
- coOrd dpos = pos;
- coOrd cpos;
- int mode = -1;
- while ( TrackIterate( &trk1 ) ) {
- if ( !GetLayerVisible(GetTrkLayer(trk1)) )
- continue;
- if ( (!GetTrkVisible(trk1)) && drawTunnel==0 )
- continue;
- if ( GetLayerFrozen( GetTrkLayer( trk1 ) ))
- continue;
- if ( (labelEnable&LABELENABLE_ENDPT_ELEV)!=0 && *mode_o <= 0) {
- for ( ep1=0; ep1<GetTrkEndPtCnt(trk1); ep1++ ) {
- d = EndPtDescriptionDistance( pos, trk1, ep1, &dpos, FALSE, NULL ); //No hidden
- if ( d < dd ) {
- dd = d;
- trk = trk1;
- ep = ep1;
- mode = 0;
- hidden = FALSE;
- cpos= dpos;
- }
+track_p FindTrackDescription(coOrd pos, EPINX_T * ep_o, int * mode_o,
+ BOOL_T show_hidden, BOOL_T * hidden_o)
+{
+ track_p trk = NULL;
+ DIST_T d, dd = DIST_INF;
+ track_p trk1 = NULL;
+ EPINX_T ep1=-1, ep=-1;
+ BOOL_T hidden_t, hidden;
+ coOrd dpos = pos;
+// coOrd cpos;
+ int mode = -1;
+ while ( TrackIterate( &trk1 ) ) {
+ if ( !GetLayerVisible(GetTrkLayer(trk1)) ) {
+ continue;
+ }
+ if ( (!GetTrkVisible(trk1)) && drawTunnel==0 ) {
+ continue;
+ }
+ if ( GetLayerFrozen( GetTrkLayer( trk1 ) )) {
+ continue;
+ }
+ if ( (labelEnable&LABELENABLE_ENDPT_ELEV)!=0 && *mode_o <= 0) {
+ for ( ep1=0; ep1<GetTrkEndPtCnt(trk1); ep1++ ) {
+ d = EndPtDescriptionDistance( pos, trk1, ep1, &dpos, FALSE, NULL ); //No hidden
+ if ( d < dd ) {
+ dd = d;
+ trk = trk1;
+ ep = ep1;
+ mode = 0;
+ hidden = FALSE;
+// cpos= dpos;
}
}
- if (IsClose(dd)) break;
- if ( *mode_o == 0 || !QueryTrack( trk1, Q_HAS_DESC ) )
- continue;
- if ((labelEnable&LABELENABLE_TRKDESC)==0)
- continue;
- if ( ( GetTrkBits( trk1 ) & TB_HIDEDESC ) != 0 ) {
- if ( !show_hidden ) continue;
- }
- d = CompoundDescriptionDistance( pos, trk1, &dpos, show_hidden, &hidden_t );
- if ( d < dd ) {
- dd = d;
- trk = trk1;
- ep = -1;
- mode = 1;
- hidden = hidden_t;
- cpos = dpos;
- }
- d = CurveDescriptionDistance( pos, trk1, &dpos, show_hidden, &hidden_t );
- if ( d < dd ) {
- dd = d;
- trk = trk1;
- ep = -1;
- mode = 2;
- hidden = hidden_t;
- cpos = dpos;
- }
- d = CornuDescriptionDistance( pos, trk1, &dpos, show_hidden, &hidden_t );
- if ( d < dd ) {
- dd = d;
- trk = trk1;
- ep = -1;
- mode = 3;
- hidden = hidden_t;
- cpos = dpos;
- }
- d = BezierDescriptionDistance( pos, trk1, &dpos, show_hidden, &hidden_t );
- if ( d < dd ) {
- dd = d;
- trk = trk1;
- ep = -1;
- mode = 4;
- hidden = hidden_t;
- cpos = dpos;
- }
- d = StraightDescriptionDistance( pos, trk1, &dpos, show_hidden, &hidden_t );
- if (d < dd ) {
- dd = d;
- trk = trk1;
- ep = -1;
- mode = 5;
- hidden = hidden_t;
- cpos = dpos;
- }
- d = JointDescriptionDistance( pos, trk1, &dpos, show_hidden, &hidden_t );
- if (d < dd ) {
- dd = d;
- trk = trk1;
- ep = -1;
- mode = 6;
- hidden = hidden_t;
- cpos = dpos;
- }
-
- }
-
- coOrd pos1 = pos;
-
- if ((trk != NULL) && IsClose(dd) ) {
- if (ep_o) *ep_o = ep;
- if (mode_o) *mode_o = mode;
- if (hidden_o) *hidden_o = hidden;
- return trk;
- } else { // Return other track for description (not near to description but nearest to track)
- if ((trk1 = OnTrack(&pos1, FALSE, FALSE))==NULL) return NULL;
- if (!QueryTrack( trk1, Q_HAS_DESC )) return NULL;
- if (GetLayerFrozen(GetTrkLayer(trk1))) return NULL;
- if (IsClose(FindDistance(pos,pos1))) {
- if (mode_o) *mode_o = -1;
- if (ep_o) *ep_o = -1;
- if (hidden_o) *hidden_o = GetTrkBits( trk1 ) & TB_HIDEDESC;
- return trk1;
- }
- }
-
- return NULL;
+ }
+ if (IsClose(dd)) { break; }
+ if ( *mode_o == 0 || !QueryTrack( trk1, Q_HAS_DESC ) ) {
+ continue;
+ }
+ if ((labelEnable&LABELENABLE_TRKDESC)==0) {
+ continue;
+ }
+ if ( ( GetTrkBits( trk1 ) & TB_HIDEDESC ) != 0 ) {
+ if ( !show_hidden ) { continue; }
+ }
+ d = CompoundDescriptionDistance( pos, trk1, &dpos, show_hidden, &hidden_t );
+ if ( d < dd ) {
+ dd = d;
+ trk = trk1;
+ ep = -1;
+ mode = 1;
+ hidden = hidden_t;
+// cpos = dpos;
+ }
+ d = CurveDescriptionDistance( pos, trk1, &dpos, show_hidden, &hidden_t );
+ if ( d < dd ) {
+ dd = d;
+ trk = trk1;
+ ep = -1;
+ mode = 2;
+ hidden = hidden_t;
+// cpos = dpos;
+ }
+ d = CornuDescriptionDistance( pos, trk1, &dpos, show_hidden, &hidden_t );
+ if ( d < dd ) {
+ dd = d;
+ trk = trk1;
+ ep = -1;
+ mode = 3;
+ hidden = hidden_t;
+// cpos = dpos;
+ }
+ d = BezierDescriptionDistance( pos, trk1, &dpos, show_hidden, &hidden_t );
+ if ( d < dd ) {
+ dd = d;
+ trk = trk1;
+ ep = -1;
+ mode = 4;
+ hidden = hidden_t;
+// cpos = dpos;
+ }
+ d = StraightDescriptionDistance( pos, trk1, &dpos, show_hidden, &hidden_t );
+ if (d < dd ) {
+ dd = d;
+ trk = trk1;
+ ep = -1;
+ mode = 5;
+ hidden = hidden_t;
+// cpos = dpos;
+ }
+ d = JointDescriptionDistance( pos, trk1, &dpos, show_hidden, &hidden_t );
+ if (d < dd ) {
+ dd = d;
+ trk = trk1;
+ ep = -1;
+ mode = 6;
+ hidden = hidden_t;
+// cpos = dpos;
+ }
+
+ }
+
+ coOrd pos1 = pos;
+
+ if ((trk != NULL) && IsClose(dd) ) {
+ if (ep_o) { *ep_o = ep; }
+ if (mode_o) { *mode_o = mode; }
+ if (hidden_o) { *hidden_o = hidden; }
+ return trk;
+ } else { // Return other track for description (not near to description but nearest to track)
+ if ((trk1 = OnTrack(&pos1, FALSE, FALSE))==NULL) { return NULL; }
+ if (!QueryTrack( trk1, Q_HAS_DESC )) { return NULL; }
+ if (GetLayerFrozen(GetTrkLayer(trk1))) { return NULL; }
+ if (IsClose(FindDistance(pos,pos1))) {
+ if (mode_o) { *mode_o = -1; }
+ if (ep_o) { *ep_o = -1; }
+ if (hidden_o) { *hidden_o = GetTrkBits( trk1 ) & TB_HIDEDESC; }
+ return trk1;
+ }
+ }
+
+ return NULL;
}
static long moveDescMode;
STATUS_T CmdMoveDescription(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
static EPINX_T ep;
static BOOL_T hidden;
static int mode;
BOOL_T bChanged;
- moveDescMode = VP2L(commandContext); //Context 0 = everything, 1 means elevations, 2 means descriptions
+ moveDescMode = VP2L(
+ commandContext); //Context 0 = everything, 1 means elevations, 2 means descriptions
bChanged = FALSE;
switch (action&0xFF) {
@@ -2618,55 +2557,58 @@ STATUS_T CmdMoveDescription(
hidden = FALSE;
mode = -1;
if ( labelWhen < 2 || mainD.scale > labelScale ||
- (labelEnable&(LABELENABLE_TRKDESC|LABELENABLE_ENDPT_ELEV))==0 ) {
+ (labelEnable&(LABELENABLE_TRKDESC|LABELENABLE_ENDPT_ELEV))==0 ) {
ErrorMessage( MSG_DESC_NOT_VISIBLE );
return C_ERROR;
}
SetAllTrackSelect( FALSE );
- /* no break */
+ /* no break */
case wActionMove:
- if ( labelWhen < 2 || mainD.scale > labelScale ) return C_CONTINUE;
- mode = moveDescMode-1; // -1 means everything, 0 means elevations only, 1 means descriptions only
- if ((moveDescTrk=FindTrackDescription(pos,&ep,&mode,TRUE,&hidden))!=NULL) {
- if (mode==0) {
- InfoMessage(_("Elevation description"));
+ if ( labelWhen < 2 || mainD.scale > labelScale ) { return C_CONTINUE; }
+ mode = moveDescMode
+ -1; // -1 means everything, 0 means elevations only, 1 means descriptions only
+ if ((moveDescTrk=FindTrackDescription(pos,&ep,&mode,TRUE,&hidden))!=NULL) {
+ if (mode==0) {
+ InfoMessage(_("Elevation description"));
+ } else {
+ if (moveDescMode == 1) {
+ moveDescTrk = NULL;
+ return C_CONTINUE; //Ignore other tracks if only looking for elevations
+ }
+ if (hidden) {
+ InfoMessage(_("Hidden description - 's' to Show, 'd' Details"));
+ moveDescPos = pos;
} else {
- if (moveDescMode == 1) {
- moveDescTrk = NULL;
- return C_CONTINUE; //Ignore other tracks if only looking for elevations
- }
- if (hidden) {
- InfoMessage(_("Hidden description - 's' to Show, 'd' Details"));
- moveDescPos = pos;
- } else {
- InfoMessage(_("Shown description - 'h' to Hide"));
- moveDescPos = pos;
- }
+ InfoMessage(_("Shown description - 'h' to Hide"));
+ moveDescPos = pos;
}
- return C_CONTINUE;
- } else {
- moveDescTrk = NULL;
}
- InfoMessage( _("Select and drag a description") );
- break;
+ return C_CONTINUE;
+ } else {
+ moveDescTrk = NULL;
+ }
+ InfoMessage( _("Select and drag a description") );
+ break;
case C_TEXT:
- if (!moveDescTrk) return C_CONTINUE;
- if (mode == 0) return C_CONTINUE;
+ if (!moveDescTrk) { return C_CONTINUE; }
+ if (mode == 0) { return C_CONTINUE; }
bChanged = FALSE;
if (action>>8 == 's') {
- if ( ( GetTrkBits( moveDescTrk ) & TB_HIDEDESC) != 0 )
+ if ( ( GetTrkBits( moveDescTrk ) & TB_HIDEDESC) != 0 ) {
bChanged = TRUE;
+ }
ClrTrkBits( moveDescTrk, TB_HIDEDESC );
} else if (action>>8 == 'h') {
- if ( ( GetTrkBits( moveDescTrk ) & TB_HIDEDESC) == 0 )
+ if ( ( GetTrkBits( moveDescTrk ) & TB_HIDEDESC) == 0 ) {
bChanged = TRUE;
+ }
SetTrkBits( moveDescTrk, TB_HIDEDESC );
ClrTrkBits( moveDescTrk, TB_DETAILDESC );
} else if (action>>8 == 'd') { //Toggle Detailed
bChanged = TRUE;
- if ((GetTrkBits( moveDescTrk ) & TB_DETAILDESC) != 0)
+ if ((GetTrkBits( moveDescTrk ) & TB_DETAILDESC) != 0) {
ClrTrkBits( moveDescTrk, TB_DETAILDESC);
- else {
+ } else {
ClrTrkBits( moveDescTrk, TB_HIDEDESC );
SetTrkBits( moveDescTrk, TB_DETAILDESC );
}
@@ -2677,57 +2619,62 @@ STATUS_T CmdMoveDescription(
break;
case C_DOWN:
if (( labelWhen < 2 || mainD.scale > labelScale ) ||
- (labelEnable&(LABELENABLE_TRKDESC|LABELENABLE_ENDPT_ELEV))==0 ) {
- ErrorMessage( MSG_DESC_NOT_VISIBLE );
+ (labelEnable&(LABELENABLE_TRKDESC|LABELENABLE_ENDPT_ELEV))==0 ) {
+ ErrorMessage( MSG_DESC_NOT_VISIBLE );
return C_ERROR;
- }
+ }
mode = moveDescMode-1;
moveDescTrk = FindTrackDescription(pos,&ep,&mode,TRUE,&hidden);
- if (moveDescTrk == NULL )
+ if (moveDescTrk == NULL ) {
return C_CONTINUE;
+ }
if (hidden) {
InfoMessage(_("Hidden Label - Drag to reveal"));
} else {
InfoMessage(_("Drag label"));
}
- if (ep == -1 )
+ if (ep == -1 ) {
DrawTrack( moveDescTrk, &mainD, wDrawColorWhite );
- /* no break */
+ }
+ /* no break */
case C_MOVE:
- if (moveDescTrk == NULL )
- return C_CONTINUE;
+ if (moveDescTrk == NULL ) {
+ return C_CONTINUE;
+ }
UndoStart( _("Move Label"), "Modedesc( T%d )", GetTrkIndex(moveDescTrk) );
UndoModify( moveDescTrk );
ClrTrkBits( moveDescTrk, TB_HIDEDESC );
hidden = FALSE;
- /* no break */
+ /* no break */
case C_UP:
- if ( labelWhen < 2 || mainD.scale > labelScale )
+ if ( labelWhen < 2 || mainD.scale > labelScale ) {
return C_CONTINUE;
- if ( moveDescTrk == NULL )
+ }
+ if ( moveDescTrk == NULL ) {
return C_CONTINUE;
- int rc = C_CONTINUE;
+ }
+// int rc = C_CONTINUE;
switch (mode) {
case 0:
- rc = EndPtDescriptionMove( moveDescTrk, ep, action, pos );
+ EndPtDescriptionMove( moveDescTrk, ep, action, pos );
break;
case 1:
- rc = CompoundDescriptionMove( moveDescTrk, action, pos );
+ CompoundDescriptionMove( moveDescTrk, action, pos );
break;
case 2:
- rc = CurveDescriptionMove( moveDescTrk, action, pos );
+ CurveDescriptionMove( moveDescTrk, action, pos );
break;
case 3:
- rc = CornuDescriptionMove( moveDescTrk, action, pos );
+ CornuDescriptionMove( moveDescTrk, action, pos );
break;
case 4:
- rc = BezierDescriptionMove( moveDescTrk, action, pos );
+ BezierDescriptionMove( moveDescTrk, action, pos );
break;
case 5:
- rc = StraightDescriptionMove( moveDescTrk, action, pos);
+ StraightDescriptionMove( moveDescTrk, action, pos);
break;
case 6:
- rc = JointDescriptionMove( moveDescTrk, action, pos);
+ JointDescriptionMove( moveDescTrk, action, pos);
break;
}
hidden = FALSE;
@@ -2738,8 +2685,9 @@ STATUS_T CmdMoveDescription(
}
break;
case C_REDRAW:
- if ( labelWhen < 2 || mainD.scale > labelScale )
+ if ( labelWhen < 2 || mainD.scale > labelScale ) {
return C_CONTINUE;
+ }
if ( moveDescTrk ) {
if (mode==0) {
DrawEndPt2( &tempD, moveDescTrk, ep, drawColorPreviewSelected );
@@ -2762,15 +2710,18 @@ STATUS_T CmdMoveDescription(
} else {
moveDescPos = pos;
}
- if ( moveDescTrk == NULL ) break;
- if ( ! QueryTrack( moveDescTrk, Q_HAS_DESC ) ) break;
+ if ( moveDescTrk == NULL ) { break; }
+ if ( ! QueryTrack( moveDescTrk, Q_HAS_DESC ) ) { break; }
if ( moveDescM == NULL ) {
moveDescM = MenuRegister( "Move Desc Toggle" );
- moveDescMI = wMenuToggleCreate( moveDescM, "", _("Show/Hide Description"), 0, TRUE, ChangeDescFlag, NULL );
- moveDetailDescMI = wMenuToggleCreate( moveDescM, "", _("Toggle Detailed Description"), 0, TRUE, ChangeDetailedFlag, NULL );
+ moveDescMI = wMenuToggleCreate( moveDescM, "", _("Show/Hide Description"), 0,
+ TRUE, ChangeDescFlag, NULL );
+ moveDetailDescMI = wMenuToggleCreate( moveDescM, "",
+ _("Toggle Detailed Description"), 0, TRUE, ChangeDetailedFlag, NULL );
}
wMenuToggleSet( moveDescMI, !( GetTrkBits( moveDescTrk ) & TB_HIDEDESC ) );
- wMenuToggleSet( moveDetailDescMI, ( GetTrkBits( moveDescTrk ) & TB_DETAILDESC ) );
+ wMenuToggleSet( moveDetailDescMI,
+ ( GetTrkBits( moveDescTrk ) & TB_DETAILDESC ) );
menuPos = pos;
wMenuPopupShow( moveDescM );
break;
@@ -2778,14 +2729,14 @@ STATUS_T CmdMoveDescription(
default:
;
}
-
+
return C_CONTINUE;
}
static void FlipTracks(
- coOrd orig,
- ANGLE_T angle )
+ coOrd orig,
+ ANGLE_T angle )
{
track_p trk, trk1;
EPINX_T ep, ep1;
@@ -2797,16 +2748,17 @@ static void FlipTracks(
wDrawDelayUpdate( mapD.d, TRUE );
}
for ( trk=NULL; TrackIterate(&trk); ) {
- if ( !GetTrkSelected(trk) )
+ if ( !GetTrkSelected(trk) ) {
continue;
+ }
UndoModify( trk );
if (selectedTrackCount <= incrementalDrawLimit) {
- DrawTrack( trk, &mainD, wDrawColorWhite );
- DrawTrack( trk, &mapD, wDrawColorWhite );
+ DrawTrack( trk, &mainD, wDrawColorWhite );
+ DrawTrack( trk, &mapD, wDrawColorWhite );
}
for (ep=0; ep<GetTrkEndPtCnt(trk); ep++) {
if ((trk1 = GetTrkEndTrk(trk,ep)) != NULL &&
- !GetTrkSelected(trk1)) {
+ !GetTrkSelected(trk1)) {
ep1 = GetEndPtConnectedToMe( trk1, trk );
DisconnectTracks( trk, ep, trk1, ep1 );
DrawEndPt( &mainD, trk1, ep1, wDrawColorBlack );
@@ -2814,8 +2766,8 @@ static void FlipTracks(
}
FlipTrack( trk, orig, angle );
if (selectedTrackCount <= incrementalDrawLimit) {
- DrawTrack( trk, &mainD, wDrawColorBlack );
- DrawTrack( trk, &mapD, wDrawColorBlack );
+ DrawTrack( trk, &mainD, wDrawColorBlack );
+ DrawTrack( trk, &mapD, wDrawColorBlack );
}
}
if (selectedTrackCount > incrementalDrawLimit) {
@@ -2831,8 +2783,8 @@ static void FlipTracks(
static STATUS_T CmdFlip(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
static coOrd pos0;
static coOrd pos1;
@@ -2840,53 +2792,55 @@ static STATUS_T CmdFlip(
switch( action ) {
- case C_START:
- state = 0;
- if (selectedTrackCount == 0) {
- ErrorMessage( MSG_NO_SELECTED_TRK );
- return C_TERMINATE;
- }
- if (SelectedTracksAreFrozen())
- return C_TERMINATE;
- InfoMessage( _("Drag to mark mirror line") );
- break;
- case C_DOWN:
- state = 1;
- if (SelectedTracksAreFrozen()) {
- return C_TERMINATE;
- }
- pos0 = pos1 = pos;
- return C_CONTINUE;
- case C_MOVE:
- pos1 = pos;
- InfoMessage( _("Angle %0.2f"), FindAngle( pos0, pos1 ) );
- return C_CONTINUE;
- case C_UP:
- UndoStart( _("Flip Tracks"), "flip" );
- FlipTracks( pos0, FindAngle( pos0, pos1 ) );
- state = 0;
+ case C_START:
+ state = 0;
+ if (selectedTrackCount == 0) {
+ ErrorMessage( MSG_NO_SELECTED_TRK );
return C_TERMINATE;
+ }
+ if (SelectedTracksAreFrozen()) {
+ return C_TERMINATE;
+ }
+ InfoMessage( _("Drag to mark mirror line") );
+ break;
+ case C_DOWN:
+ state = 1;
+ if (SelectedTracksAreFrozen()) {
+ return C_TERMINATE;
+ }
+ pos0 = pos1 = pos;
+ return C_CONTINUE;
+ case C_MOVE:
+ pos1 = pos;
+ InfoMessage( _("Angle %0.2f"), FindAngle( pos0, pos1 ) );
+ return C_CONTINUE;
+ case C_UP:
+ UndoStart( _("Flip Tracks"), "flip" );
+ FlipTracks( pos0, FindAngle( pos0, pos1 ) );
+ state = 0;
+ return C_TERMINATE;
#ifdef LATER
- case C_CANCEL:
+ case C_CANCEL:
#endif
- case C_REDRAW:
- DrawHighlightBoxes(FALSE,FALSE,NULL);
- HighlightSelectedTracks(NULL, TRUE, TRUE);
- if ( state == 0 )
- return C_CONTINUE;
- DrawLine( &tempD, pos0, pos1, 0, wDrawColorBlack );
+ case C_REDRAW:
+ DrawHighlightBoxes(FALSE,FALSE,NULL);
+ HighlightSelectedTracks(NULL, TRUE, TRUE);
+ if ( state == 0 ) {
return C_CONTINUE;
+ }
+ DrawLine( &tempD, pos0, pos1, 0, wDrawColorBlack );
+ return C_CONTINUE;
- default:
- break;
+ default:
+ break;
}
return C_CONTINUE;
}
static BOOL_T SelectArea(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
static coOrd pos0;
static int state;
@@ -2938,36 +2892,39 @@ static BOOL_T SelectArea(
subtract = (action == C_RUP);
cnt = 0;
trk = NULL;
- if (add && (selectMode == 0)) SetAllTrackSelect( FALSE ); //Remove all tracks first
+ if (add && (selectMode == 0)) { SetAllTrackSelect( FALSE ); } //Remove all tracks first
while ( TrackIterate( &trk ) ) {
GetBoundingBox( trk, &hi, &lo );
if (GetLayerVisible( GetTrkLayer( trk ) ) &&
- lo.x >= base.x && hi.x <= base.x+size.x &&
- lo.y >= base.y && hi.y <= base.y+size.y) {
- if ( (GetTrkSelected( trk )==0) == (action==C_UP) )
- cnt++;
+ lo.x >= base.x && hi.x <= base.x+size.x &&
+ lo.y >= base.y && hi.y <= base.y+size.y) {
+ if ( (GetTrkSelected( trk )==0) == (action==C_UP) ) {
+ cnt++;
+ }
}
}
trk = NULL;
while ( TrackIterate( &trk ) ) {
GetBoundingBox( trk, &hi, &lo );
if (GetLayerVisible( GetTrkLayer( trk ) ) &&
- lo.x >= base.x && hi.x <= base.x+size.x &&
- lo.y >= base.y && hi.y <= base.y+size.y) {
+ lo.x >= base.x && hi.x <= base.x+size.x &&
+ lo.y >= base.y && hi.y <= base.y+size.y) {
if ( (GetTrkSelected( trk )==0) == (action==C_UP) ) {
if (GetLayerFrozen(GetTrkLayer(trk))) {
continue;
} else if (GetLayerModule(GetTrkLayer(trk))) {
- if (add)
+ if (add) {
DoModuleTracks(GetTrkLayer(trk),SelectOneTrack,TRUE);
- else
+ } else {
DoModuleTracks(GetTrkLayer(trk),SelectOneTrack,FALSE);
+ }
} else if (cnt > incrementalDrawLimit) {
selectedTrackCount += (action==C_UP?1:-1);
- if (add)
+ if (add) {
SetTrkBits( trk, TB_SELECTED );
- else
+ } else {
ClrTrkBits( trk, TB_SELECTED );
+ }
} else {
SelectOneTrack( trk, add );
}
@@ -2992,33 +2949,38 @@ static BOOL_T SelectArea(
break;
case C_REDRAW:
- if (state == 0)
+ if (state == 0) {
break;
+ }
//Draw to-be selected tracks versus not.
trk = NULL;
- if (selectMode == 1 && add) HighlightSelectedTracks(NULL, TRUE, TRUE);
+ if (selectMode == 1 && add) { HighlightSelectedTracks(NULL, TRUE, TRUE); }
while ( TrackIterate( &trk ) ) {
GetBoundingBox( trk, &hi, &lo );
if (GetLayerVisible( GetTrkLayer( trk ) ) &&
- lo.x >= base.x && hi.x <= base.x+size.x &&
- lo.y >= base.y && hi.y <= base.y+size.y) {
- if (GetLayerFrozen(GetTrkLayer(trk)))
+ lo.x >= base.x && hi.x <= base.x+size.x &&
+ lo.y >= base.y && hi.y <= base.y+size.y) {
+ if (GetLayerFrozen(GetTrkLayer(trk))) {
continue;
+ }
if (GetLayerModule(GetTrkLayer(trk))) {
- if (add)
+ if (add) {
DoModuleTracks(GetTrkLayer(trk),DrawSingleTrack,TRUE);
- else if (subtract)
+ } else if (subtract) {
DoModuleTracks(GetTrkLayer(trk),DrawSingleTrack,FALSE);
+ }
} else {
if (add) {
- if (selectMode == 0 && add)
+ if (selectMode == 0 && add) {
DrawTrack(trk,&tempD,wDrawColorPreviewSelected);
- if (!GetTrkSelected(trk))
+ }
+ if (!GetTrkSelected(trk)) {
DrawTrack(trk,&tempD,wDrawColorPreviewSelected);
- }
- else if (subtract) {
- if (GetTrkSelected(trk))
+ }
+ } else if (subtract) {
+ if (GetTrkSelected(trk)) {
DrawTrack(trk,&tempD,wDrawColorPreviewUnselected);
+ }
}
}
}
@@ -3033,23 +2995,19 @@ static BOOL_T SelectArea(
return FALSE;
}
-extern BOOL_T inDescribeCmd;
-extern wIndex_t modifyCmdInx;
-extern wIndex_t describeCmdInx;
-extern wIndex_t panCmdInx;
-extern wIndex_t trainCmdInx;
-static STATUS_T SelectTrack(
- coOrd pos )
+static STATUS_T SelectTrack(
+ coOrd pos )
{
track_p trk;
char msg[STR_SIZE];
- if (((trk = OnTrack( &pos, FALSE, FALSE )) == NULL) && selectZero) { //If option set and !ctrl or unset and ctrl
+ if (((trk = OnTrack( &pos, FALSE, FALSE )) == NULL)
+ && selectZero) { //If option set and !ctrl or unset and ctrl
SetAllTrackSelect( FALSE ); //Unselect all
return C_CONTINUE;
}
- if (trk == NULL) return C_CONTINUE;
+ if (trk == NULL) { return C_CONTINUE; }
if (!CheckTrackLayerSilent( trk ) ) {
if (GetLayerFrozen(GetTrkLayer(trk)) ) {
trk = NULL;
@@ -3061,10 +3019,12 @@ static STATUS_T SelectTrack(
DescribeTrack( trk, msg, sizeof msg );
InfoMessage( msg );
if (GetLayerModule(GetTrkLayer(trk))) {
- if (((MyGetKeyState() & WKEY_CTRL) && (selectMode==0)) || (!(MyGetKeyState() & WKEY_CTRL) && (selectMode==1)) ) {
+ if (((MyGetKeyState() & WKEY_CTRL) && (selectMode==0))
+ || (!(MyGetKeyState() & WKEY_CTRL) && (selectMode==1)) ) {
DoModuleTracks(GetTrkLayer(trk),SelectOneTrack,!GetTrkSelected(trk));
} else {
- SetAllTrackSelect( FALSE ); //Just this Track if selectMode = 0 and !CTRL or selectMode = 1 and CTRL
+ SetAllTrackSelect(
+ FALSE ); //Just this Track if selectMode = 0 and !CTRL or selectMode = 1 and CTRL
DoModuleTracks(GetTrkLayer(trk),SelectOneTrack,TRUE);
}
RedrawSelectedTracksBoundary();
@@ -3085,57 +3045,62 @@ static STATUS_T SelectTrack(
return C_CONTINUE;
}
-static STATUS_T Activate( coOrd pos) {
+static STATUS_T Activate( coOrd pos)
+{
track_p trk;
if ((trk = OnTrack( &pos, TRUE, FALSE )) == NULL) {
- return C_CONTINUE;
+ return C_CONTINUE;
}
if (GetLayerModule(GetTrkLayer(trk))) {
return C_CONTINUE;
}
- if (QueryTrack(trk,Q_IS_ACTIVATEABLE)) ActivateTrack(trk);
+ if (QueryTrack(trk,Q_IS_ACTIVATEABLE)) { ActivateTrack(trk); }
return C_CONTINUE;
}
-track_p IsInsideABox(coOrd pos) {
+track_p IsInsideABox(coOrd pos)
+{
track_p ts = NULL;
while ( TrackIterate( &ts ) ) {
- if (!GetLayerVisible( GetTrkLayer( ts))) continue;
- if (!GetTrkSelected(ts)) continue;
+ if (!GetLayerVisible( GetTrkLayer( ts))) { continue; }
+ if (!GetTrkSelected(ts)) { continue; }
coOrd hi,lo;
GetBoundingBox(ts, &hi, &lo);
double boundary = mainD.scale*5/mainD.dpi;
- if ((pos.x>=lo.x-boundary && pos.x<=hi.x+boundary) && (pos.y>=lo.y-boundary && pos.y<=hi.y+boundary)) {
+ if ((pos.x>=lo.x-boundary && pos.x<=hi.x+boundary) && (pos.y>=lo.y-boundary
+ && pos.y<=hi.y+boundary)) {
return ts;
}
}
return NULL;
}
-void DrawHighlightBoxes(BOOL_T highlight_selected, BOOL_T select, track_p not_this) {
+void DrawHighlightBoxes(BOOL_T highlight_selected, BOOL_T select,
+ track_p not_this)
+{
track_p ts = NULL;
coOrd origin,max;
BOOL_T first = TRUE;
while ( TrackIterate( &ts ) ) {
- if ( !GetLayerVisible( GetTrkLayer( ts))) continue;
- if (!GetTrkSelected(ts)) continue;
+ if ( !GetLayerVisible( GetTrkLayer( ts))) { continue; }
+ if (!GetTrkSelected(ts)) { continue; }
if (GetLayerModule(GetTrkLayer(ts))) {
DrawHighlightLayer(GetTrkLayer(ts));
}
coOrd hi,lo;
- if (highlight_selected && (ts != not_this)) DrawTrack(ts,&tempD,select?wDrawColorPreviewSelected:wDrawColorPreviewUnselected );
+ if (highlight_selected && (ts != not_this)) { DrawTrack(ts,&tempD,select?wDrawColorPreviewSelected:wDrawColorPreviewUnselected ); }
GetBoundingBox(ts, &hi, &lo);
if (first) {
origin = lo;
max = hi;
first = FALSE;
} else {
- if (lo.x <origin.x) origin.x = lo.x;
- if (lo.y <origin.y) origin.y = lo.y;
- if (hi.x >max.x) max.x = hi.x;
- if (hi.y >max.y) max.y = hi.y;
+ if (lo.x <origin.x) { origin.x = lo.x; }
+ if (lo.y <origin.y) { origin.y = lo.y; }
+ if (hi.x >max.x) { max.x = hi.x; }
+ if (hi.y >max.y) { max.y = hi.y; }
}
}
if (!first) {
@@ -3152,19 +3117,23 @@ void DrawHighlightBoxes(BOOL_T highlight_selected, BOOL_T select, track_p not_th
}
static STATUS_T CallModify(wAction_t action,
- coOrd pos ) {
+ coOrd pos )
+{
int rc = CmdModify(action,pos);
- if (rc != C_CONTINUE)
+ if (rc != C_CONTINUE) {
doingDouble = FALSE;
+ }
return rc;
}
-static STATUS_T CallDescribe(wAction_t action, coOrd pos) {
+static STATUS_T CallDescribe(wAction_t action, coOrd pos)
+{
int rc = CmdDescribe(action, pos);
return rc;
}
-static void CallPushDescribe(void * unused) {
+static void CallPushDescribe(void * unused)
+{
if (moveDescTrk) {
CallDescribe(C_START, moveDescPos);
CallDescribe(C_DOWN, moveDescPos);
@@ -3175,7 +3144,8 @@ static void CallPushDescribe(void * unused) {
static STATUS_T CmdSelect(wAction_t,coOrd);
-static void CallPushModify(void * unused) {
+static void CallPushModify(void * unused)
+{
if (moveDescTrk) {
CmdSelect(C_LDOUBLE, moveDescPos);
}
@@ -3183,8 +3153,8 @@ static void CallPushModify(void * unused) {
}
static STATUS_T CmdSelect(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
static BOOL_T doingMove;
@@ -3195,17 +3165,19 @@ static STATUS_T CmdSelect(
STATUS_T rc=C_CONTINUE;
static track_p trk = NULL;
typedef enum {NOSHOW,SHOWMOVE,SHOWROTATE,SHOWMODIFY,SHOWACTIVATE} showType;
- static showType showMode;
+// static showType showMode;
mode = AREA;
- if (doingAlign || doingRotate || doingMove )
+ if (doingAlign || doingRotate || doingMove ) {
mode = MOVE;
- else {
- if ( (action == C_DOWN) || (action == C_RDOWN) || ((action&0xFF) == wActionExtKey) ) {
+ } else {
+ if ( (action == C_DOWN) || (action == C_RDOWN)
+ || ((action&0xFF) == wActionExtKey) ) {
mode = AREA;
- if ( ((action&0xFF) == wActionExtKey) || ( //Moves don't need to be in a box
- ( MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) && IsInsideABox(pos)) ) //But cursors do
- {
+ if ( ((action&0xFF) == wActionExtKey)
+ || ( //Moves don't need to be in a box
+ ( MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT))
+ && IsInsideABox(pos)) ) { //But cursors do
mode = MOVE;
}
}
@@ -3218,7 +3190,7 @@ static STATUS_T CmdSelect(
doingRotate = FALSE;
doingAlign = FALSE;
doingDouble = FALSE;
- showMode = NOSHOW;
+// showMode = NOSHOW;
SelectArea( action, pos );
wMenuPushEnable( rotateAlignMI, FALSE );
wSetCursor(mainD.d,defaultCursor);
@@ -3231,12 +3203,12 @@ static STATUS_T CmdSelect(
if (doingDouble) {
return CallModify(action,pos);
}
- showMode = NOSHOW;
+// showMode = NOSHOW;
DYNARR_RESET(trkSeg_t,anchors_da);
coOrd p = pos;
trk = OnTrack( &p, FALSE, FALSE );
track_p ht;
- if ((selectedTrackCount==0) && (trk == NULL)) return C_CONTINUE;
+ if ((selectedTrackCount==0) && (trk == NULL)) { return C_CONTINUE; }
if (trk && !CheckTrackLayerSilent( trk ) ) {
if (GetLayerFrozen(GetTrkLayer(trk)) ) {
trk = NULL;
@@ -3248,25 +3220,25 @@ static STATUS_T CmdSelect(
if ((ht = IsInsideABox(pos)) != NULL) {
if ((MyGetKeyState()&WKEY_SHIFT)) {
CreateMoveAnchor(pos);
- showMode = SHOWMOVE;
+// showMode = SHOWMOVE;
} else if ((MyGetKeyState()&WKEY_CTRL)) {
CreateRotateAnchor(pos);
- showMode = SHOWROTATE;
+// showMode = SHOWROTATE;
} else if (!GetLayerModule(GetTrkLayer(ht))) {
if (QueryTrack( ht, Q_CAN_MODIFY_CONTROL_POINTS ) ||
- QueryTrack( ht, Q_IS_CORNU ) ||
- (QueryTrack( ht, Q_IS_DRAW ) && !QueryTrack( ht, Q_IS_TEXT))) {
+ QueryTrack( ht, Q_IS_CORNU ) ||
+ (QueryTrack( ht, Q_IS_DRAW ) && !QueryTrack( ht, Q_IS_TEXT))) {
CreateModifyAnchor(pos);
- showMode = SHOWMODIFY;
+// showMode = SHOWMODIFY;
} else {
if (QueryTrack(ht,Q_IS_ACTIVATEABLE)) {
CreateActivateAnchor(pos);
- showMode = SHOWACTIVATE;
- } else wSetCursor(mainD.d,defaultCursor);
+// showMode = SHOWACTIVATE;
+ } else { wSetCursor(mainD.d,defaultCursor); }
}
- } else wSetCursor(mainD.d,defaultCursor);
- } else wSetCursor(mainD.d,defaultCursor);
- } else wSetCursor(mainD.d,defaultCursor);
+ } else { wSetCursor(mainD.d,defaultCursor); }
+ } else { wSetCursor(mainD.d,defaultCursor); }
+ } else { wSetCursor(mainD.d,defaultCursor); }
break;
case C_DOWN:
@@ -3306,13 +3278,15 @@ static STATUS_T CmdSelect(
SelectDelete();
break;
}
- /* No Break */
+ /* No Break */
case C_RMOVE:
case C_MOVE:
if (doingDouble) {
return CallModify(action,pos);
}
- if ((action&0xFF) == wActionExtKey && ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL)) == (WKEY_SHIFT|WKEY_CTRL))) { //Both + arrow
+ if ((action&0xFF) == wActionExtKey
+ && ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL)) ==
+ (WKEY_SHIFT|WKEY_CTRL))) { //Both + arrow
doingMove = TRUE;
mode = MOVE;
}
@@ -3321,7 +3295,7 @@ static STATUS_T CmdSelect(
case MOVE:
if (SelectedTracksAreFrozen() || (selectedTrackCount==0)) {
rc = C_TERMINATE;
- tlist_da.cnt = 0;
+ DYNARR_RESET( track_p, tlist_da );
doingMove = FALSE;
doingRotate = FALSE;
} else if (doingRotate == TRUE) {
@@ -3338,8 +3312,11 @@ static STATUS_T CmdSelect(
break;
default: ;
}
- if ((action&0xFF) == wActionExtKey && ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL)) == (WKEY_SHIFT|WKEY_CTRL))) //Both
+ if ((action&0xFF) == wActionExtKey
+ && ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL)) ==
+ (WKEY_SHIFT|WKEY_CTRL))) { //Both
doingMove = FALSE;
+ }
return rc;
break;
case C_RUP:
@@ -3392,24 +3369,26 @@ static STATUS_T CmdSelect(
//Once doing a move or a rotate, make an early exit
if (doingMove || doingRotate) {
- 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 );
return C_CONTINUE;
}
BOOL_T AreaSelect = FALSE;
// Draw the selected area, no-op if none selected
if (mode==AREA) {
- AreaSelect = SelectArea( action, pos );
- if (AreaSelect) return C_CONTINUE;
+ AreaSelect = SelectArea( action, pos );
+ if (AreaSelect) { return C_CONTINUE; }
}
// Highlight a whole Module's worth of tracks if we are hovering over one
if (trk && GetLayerModule(GetTrkLayer(trk))) {
- if ( (selectMode == 1) && ((MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) != WKEY_CTRL) )
- DoModuleTracks(GetTrkLayer(trk),DrawSingleTrack,!GetTrkSelected(trk)); //Toggle
- else
+ if ( (selectMode == 1)
+ && ((MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) != WKEY_CTRL) ) {
+ DoModuleTracks(GetTrkLayer(trk),DrawSingleTrack,
+ !GetTrkSelected(trk)); //Toggle
+ } else {
DoModuleTracks(GetTrkLayer(trk),DrawSingleTrack,TRUE);
+ }
DrawHighlightLayer(GetTrkLayer(trk));
}
@@ -3425,66 +3404,77 @@ static STATUS_T CmdSelect(
}
} else {
//Handle the SHIFT+ which means SelectAllConnected case
- if ((MyGetKeyState() & WKEY_SHIFT) )
- SelectConnectedTracks(trk, TRUE); //Highlight all connected
+ if ((MyGetKeyState() & WKEY_SHIFT) ) {
+ SelectConnectedTracks(trk, TRUE); //Highlight all connected
+ }
//Normal case - handle track we are hovering over
else {
//Select=Add
if (selectMode == 1) {
if ((MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) == WKEY_CTRL) {
//Only Highlight if adding otherwise show already selected
- if (!GetTrkSelected(trk))
+ if (!GetTrkSelected(trk)) {
DrawTrack(trk,&tempD,wDrawColorPreviewSelected);
- else
+ } else {
DrawTrack(trk,&tempD,selectedColor);
+ }
} else {
- if (GetTrkSelected(trk))
- DrawTrack(trk,&tempD,wDrawColorPreviewUnselected); //Toggle
- else
+ if (GetTrkSelected(trk)) {
+ DrawTrack(trk,&tempD,wDrawColorPreviewUnselected); //Toggle
+ } else {
DrawTrack(trk,&tempD,wDrawColorPreviewSelected);
+ }
}
- //Select=Only
+ //Select=Only
} else {
if ((MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) == WKEY_CTRL) {
- if (GetTrkSelected(trk))
- DrawTrack(trk,&tempD,wDrawColorPreviewUnselected); //Toggle
- else
+ if (GetTrkSelected(trk)) {
+ DrawTrack(trk,&tempD,wDrawColorPreviewUnselected); //Toggle
+ } else {
DrawTrack(trk,&tempD,wDrawColorPreviewSelected);
+ }
} else {
//Only Highlight if adding
- if (!GetTrkSelected(trk))
+ if (!GetTrkSelected(trk)) {
DrawTrack(trk,&tempD,wDrawColorPreviewSelected );
- else
+ } else {
DrawTrack(trk,&tempD,selectedColor);
+ }
}
}
}
// Now Highlight the rest of the tracks or Module
if (GetLayerModule(GetTrkLayer(trk))) {
- if (selectMode == 1 && ((MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) != WKEY_CTRL) )
- DoModuleTracks(GetTrkLayer(trk),DrawSingleTrack,!GetTrkSelected(trk)); //Toggle
- else
+ if (selectMode == 1
+ && ((MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) != WKEY_CTRL) ) {
+ DoModuleTracks(GetTrkLayer(trk),DrawSingleTrack,
+ !GetTrkSelected(trk)); //Toggle
+ } else {
DoModuleTracks(GetTrkLayer(trk),DrawSingleTrack,TRUE);
+ }
DrawHighlightLayer(GetTrkLayer(trk));
}
//Select=Add
if (selectMode == 1) {
- if (((MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) == WKEY_CTRL))
+ if (((MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) == WKEY_CTRL)) {
HighlightSelectedTracks(trk, FALSE, TRUE);
- else
- HighlightSelectedTracks(trk, TRUE, FALSE); // Highlight all others selected
- //Select=Only
+ } else {
+ HighlightSelectedTracks(trk, TRUE,
+ FALSE); // Highlight all others selected
+ }
+ //Select=Only
} else {
- if (((MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) != WKEY_CTRL))
+ if (((MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) != WKEY_CTRL)) {
HighlightSelectedTracks(trk, FALSE, TRUE);
- else
- HighlightSelectedTracks(trk, TRUE, FALSE); // Highlight all others selected
+ } else {
+ HighlightSelectedTracks(trk, TRUE,
+ FALSE); // Highlight all others selected
+ }
}
}
//Finally add the anchors for any actions or snaps
- 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 );
return rc;
@@ -3498,8 +3488,9 @@ static STATUS_T CmdSelect(
if (doingAlign) {
rc = CmdRotate (C_DOWN, pos);
rc = CmdRotate (C_UP, pos);
- } else
+ } else {
rc = SelectTrack( pos );
+ }
doingRotate = FALSE;
doingMove = FALSE;
return rc;
@@ -3512,23 +3503,23 @@ static STATUS_T CmdSelect(
return C_CONTINUE;
}
switch (mode) {
- case AREA:
- if ((ht = OnTrack(&pos,FALSE,FALSE))!=NULL) {
- if (QueryTrack( ht, Q_CAN_MODIFY_CONTROL_POINTS ) ||
- QueryTrack( ht, Q_IS_CORNU ) ||
- (QueryTrack( ht, Q_IS_DRAW ) && !QueryTrack( ht, Q_IS_TEXT ))) {
- doingDouble = TRUE;
- CallModify(C_START,pos);
- if (doingDouble == FALSE) return C_CONTINUE;
- CallModify(C_LDOUBLE,pos);
- } else if (QueryTrack( ht, Q_IS_ACTIVATEABLE)){
- return Activate(pos);
- }
+ case AREA:
+ if ((ht = OnTrack(&pos,FALSE,FALSE))!=NULL) {
+ if (QueryTrack( ht, Q_CAN_MODIFY_CONTROL_POINTS ) ||
+ QueryTrack( ht, Q_IS_CORNU ) ||
+ (QueryTrack( ht, Q_IS_DRAW ) && !QueryTrack( ht, Q_IS_TEXT ))) {
+ doingDouble = TRUE;
+ CallModify(C_START,pos);
+ if (doingDouble == FALSE) { return C_CONTINUE; }
+ CallModify(C_LDOUBLE,pos);
+ } else if (QueryTrack( ht, Q_IS_ACTIVATEABLE)) {
+ return Activate(pos);
}
- break;
- case MOVE:
- default:
- break;
+ }
+ break;
+ case MOVE:
+ default:
+ break;
}
break;
@@ -3540,7 +3531,7 @@ static STATUS_T CmdSelect(
if (selectedTrackCount <= 0) {
wMenuPopupShow( selectPopup1M );
} else {
- track_p trk = OnTrack(&pos, FALSE, FALSE); //Note pollutes pos if turntable
+ track_p trk = OnTrack(&pos, FALSE, FALSE); //Note pollutes pos if turntable
SetUpMenu2(pos,trk);
wMenuPopupShow( selectPopup2M );
}
@@ -3555,7 +3546,8 @@ static STATUS_T CmdSelect(
}
if ((action>>8) == 'c') {
panCenter = pos;
- LOG( log_pan, 2, ( "PanCenter:Sel-%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
+ LOG( log_pan, 2, ( "PanCenter:Sel-%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
PanHere(I2VP(0));
}
if ((action>>8) == 'e') {
@@ -3565,120 +3557,149 @@ static STATUS_T CmdSelect(
PanMenuEnter(I2VP('o'));
}
if ((action>>8) == '?') {
- if((moveDescTrk = OnTrack(&pos,FALSE,FALSE)) != NULL)
+ if((moveDescTrk = OnTrack(&pos,FALSE,FALSE)) != NULL) {
moveDescPos = pos;
- CallPushDescribe(I2VP(0));
+ }
+ CallPushDescribe(I2VP(0));
wSetCursor(mainD.d,defaultCursor);
moveDescTrk = NULL;
}
break;
case C_CONFIRM:
- if (doingDouble)
+ if (doingDouble) {
return CallModify(action,pos);
+ }
return C_CONTINUE;
case C_FINISH:
if (doingDouble) {
CallModify(C_OK,pos);
CallModify(C_FINISH,pos);
}
- if (doingMove) UndoEnd();
+ if (doingMove) { UndoEnd(); }
doingDouble = FALSE;
wSetCursor(mainD.d,defaultCursor);
break;
default:
- if (doingDouble) return CallModify(action, pos);
+ if (doingDouble) { return CallModify(action, pos); }
}
return C_CONTINUE;
}
-#include "bitmaps/select.xpm"
-#include "bitmaps/delete.xpm"
-#include "bitmaps/tunnel.xpm"
-#include "bitmaps/bridge.xpm"
-#include "bitmaps/move.xpm"
-#include "bitmaps/rotate.xpm"
-#include "bitmaps/reflect.xpm"
-#include "bitmaps/description.xpm"
+#include "bitmaps/select.xpm3"
+#include "bitmaps/delete.xpm3"
+#include "bitmaps/tunnel.xpm3"
+#include "bitmaps/ties.xpm3"
+#include "bitmaps/bridge.xpm3"
+#include "bitmaps/roadbed.xpm3"
+#include "bitmaps/move.xpm3"
+#include "bitmaps/rotate.xpm3"
+#include "bitmaps/reflect.xpm3"
+#include "bitmaps/description.xpm3"
static void SetMoveMode( char * line )
{
long tmp = atol( line );
moveMode = tmp & 0x0F;
- if (moveMode < 0 || moveMode > MAXMOVEMODE)
+ if (moveMode < 0 || moveMode > MAXMOVEMODE) {
moveMode = MAXMOVEMODE;
+ }
enableMoveDraw = ((tmp&0x10) == 0);
}
-static void moveDescription( void * unused ) {
- if (!moveDescTrk) return;
+static void moveDescription( void * unused )
+{
+ if (!moveDescTrk) { return; }
int hidden = GetTrkBits( moveDescTrk) &TB_HIDEDESC ;
- if (hidden)
+ if (hidden) {
ClrTrkBits( moveDescTrk, TB_HIDEDESC );
- else
+ } else {
SetTrkBits( moveDescTrk, TB_HIDEDESC );
+ }
MainRedraw();
}
EXPORT void InitCmdSelect( wMenu_p menu )
{
- selectCmdInx = AddMenuButton( menu, CmdSelect, "cmdSelect", _("Select"), wIconCreatePixMap(select_xpm[iconSize]),
- LEVEL0, IC_CANCEL|IC_POPUP|IC_LCLICK|IC_CMDMENU|IC_WANT_MOVE|IC_WANT_MODKEYS, ACCL_SELECT, NULL );
+ selectCmdInx = AddMenuButton( menu, CmdSelect, "cmdSelect", _("Select"),
+ wIconCreatePixMap(select_xpm3[iconSize]),
+ LEVEL0, IC_CANCEL|IC_POPUP|IC_LCLICK|IC_CMDMENU|IC_WANT_MOVE|IC_WANT_MODKEYS,
+ ACCL_SELECT, NULL );
}
-extern wIndex_t trainCmdInx;
-EXPORT void InitCmdSelect2( wMenu_p menu ) {
+EXPORT void InitCmdSelect2( wMenu_p menu )
+{
- endpt_bm = wDrawBitMapCreate( mainD.d, bmendpt_width, bmendpt_width, 7, 7, bmendpt_bits );
- angle_bm[0] = wDrawBitMapCreate( mainD.d, bma90_width, bma90_width, 7, 7, bma90_bits );
- angle_bm[1] = wDrawBitMapCreate( mainD.d, bma135_width, bma135_width, 7, 7, bma135_bits );
- angle_bm[2] = wDrawBitMapCreate( mainD.d, bma0_width, bma0_width, 7, 7, bma0_bits );
- angle_bm[3] = wDrawBitMapCreate( mainD.d, bma45_width, bma45_width, 7, 7, bma45_bits );
+ endpt_bm = wDrawBitMapCreate( mainD.d, bmendpt_width, bmendpt_width, 7, 7,
+ bmendpt_bits );
+ angle_bm[0] = wDrawBitMapCreate( mainD.d, bma90_width, bma90_width, 7, 7,
+ bma90_bits );
+ angle_bm[1] = wDrawBitMapCreate( mainD.d, bma135_width, bma135_width, 7, 7,
+ bma135_bits );
+ angle_bm[2] = wDrawBitMapCreate( mainD.d, bma0_width, bma0_width, 7, 7,
+ bma0_bits );
+ angle_bm[3] = wDrawBitMapCreate( mainD.d, bma45_width, bma45_width, 7, 7,
+ bma45_bits );
AddPlaybackProc( SETMOVEMODE, (playbackProc_p)SetMoveMode, NULL );
wPrefGetInteger( "draw", "movemode", &moveMode, MAXMOVEMODE );
- if (moveMode > MAXMOVEMODE || moveMode < 0)
+ if (moveMode > MAXMOVEMODE || moveMode < 0) {
moveMode = MAXMOVEMODE;
+ }
selectPopup1M = MenuRegister( "Select Mode Menu" );
wMenuPushCreate(selectPopup1M, "", _("Undo"), 0, UndoUndo, NULL);
wMenuPushCreate(selectPopup1M, "", _("Redo"), 0, UndoRedo, NULL);
wMenuSeparatorCreate( selectPopup1M );
- wMenuPushCreate(selectPopup1M, "cmdDescribeMode", GetBalloonHelpStr("cmdModifyMode"), 0, DoCommandB, I2VP(modifyCmdInx));
- wMenuPushCreate(selectPopup1M, "cmdPanMode", GetBalloonHelpStr("cmdPanMode"), 0, DoCommandB, I2VP(panCmdInx));
- wMenuPushCreate(selectPopup1M, "cmdTrainMode", GetBalloonHelpStr("cmdTrainMode"), 0, DoCommandB, I2VP(trainCmdInx));
+ wMenuPushCreate(selectPopup1M, "cmdDescribeMode",
+ GetBalloonHelpStr("cmdModifyMode"), 0, DoCommandB, I2VP(modifyCmdInx));
+ wMenuPushCreate(selectPopup1M, "cmdPanMode", GetBalloonHelpStr("cmdPanMode"), 0,
+ DoCommandB, I2VP(panCmdInx));
+ wMenuPushCreate(selectPopup1M, "cmdTrainMode",
+ GetBalloonHelpStr("cmdTrainMode"), 0, DoCommandB, I2VP(trainCmdInx));
wMenuSeparatorCreate( selectPopup1M );
wMenuPushCreate(selectPopup1M, "", _("Zoom In"), 0, DoZoomUp, I2VP(1));
- wMenuPushCreate( selectPopup1M, "", _("Zoom to extents - 'e'"), 0, DoZoomExtents, I2VP(0) );
+ wMenuPushCreate( selectPopup1M, "", _("Zoom to extents - 'e'"), 0,
+ DoZoomExtents, I2VP(0) );
wMenu_p zoomPop1 = wMenuMenuCreate(selectPopup1M, "", _("&Zoom"));
InitCmdZoom(NULL, NULL, zoomPop1, NULL);
wMenuPushCreate(selectPopup1M, "", _("Zoom Out"), 0, DoZoomDown, I2VP(1));
- wMenuPushCreate(selectPopup1M, "", _("Pan to Origin - 'o'/'0'"), 0, PanMenuEnter, I2VP( 'o'));
- wMenuPushCreate(selectPopup1M, "", _("Pan Center Here - 'c'"), 0, PanHere, I2VP( 3));
+ wMenuPushCreate(selectPopup1M, "", _("Pan to Origin - 'o'/'0'"), 0,
+ PanMenuEnter, I2VP( 'o'));
+ wMenuPushCreate(selectPopup1M, "", _("Pan Center Here - 'c'"), 0, PanHere,
+ I2VP( 3));
wMenuSeparatorCreate( selectPopup1M );
- wMenuPushCreate(selectPopup1M, "", _("Select All"), 0,(wMenuCallBack_p) SetAllTrackSelect, I2VP( 1));
- wMenuPushCreate(selectPopup1M, "",_("Select Current Layer"), 0, SelectCurrentLayer, I2VP( 0));
+ wMenuPushCreate(selectPopup1M, "", _("Select All"), 0,
+ (wMenuCallBack_p) SetAllTrackSelect, I2VP( 1));
+ wMenuPushCreate(selectPopup1M, "",_("Select Current Layer"), 0,
+ SelectCurrentLayer, I2VP( 0));
AddIndexMenu( selectPopup1M, SelectByIndex);
wMenuSeparatorCreate( selectPopup1M );
selectPopup2M = MenuRegister( "Track Selected Menu " );
- wMenuPushCreate(selectPopup2M, "", _("Undo"), 0, UndoUndo , NULL);
- wMenuPushCreate(selectPopup2M, "", _("Redo"), 0, UndoRedo , NULL);
+ wMenuPushCreate(selectPopup2M, "", _("Undo"), 0, UndoUndo, NULL);
+ wMenuPushCreate(selectPopup2M, "", _("Redo"), 0, UndoRedo, NULL);
wMenuSeparatorCreate( selectPopup2M );
wMenuPushCreate(selectPopup2M, "", _("Zoom In"), 0, DoZoomUp, I2VP( 1));
wMenuPushCreate(selectPopup2M, "", _("Zoom Out"), 0, DoZoomDown, I2VP( 1));
- wMenuPushCreate( selectPopup2M, "", _("Zoom to extents - 'e'"), 0, DoZoomExtents, I2VP( 0));
- wMenuPushCreate( selectPopup2M, "", _("Zoom to selected - 's'"), 0, DoZoomExtents, I2VP( 1));
- wMenuPushCreate(selectPopup2M, "", _("Pan Center Here - 'c'"), 0, PanHere, I2VP( 3));
+ wMenuPushCreate( selectPopup2M, "", _("Zoom to extents - 'e'"), 0,
+ DoZoomExtents, I2VP( 0));
+ wMenuPushCreate( selectPopup2M, "", _("Zoom to selected - 's'"), 0,
+ DoZoomExtents, I2VP( 1));
+ wMenuPushCreate(selectPopup2M, "", _("Pan Center Here - 'c'"), 0, PanHere,
+ I2VP( 3));
wMenuSeparatorCreate( selectPopup2M );
AddIndexMenu( selectPopup2M, SelectByIndex);
- wMenuPushCreate(selectPopup2M, "", _("Deselect All"), 0, (wMenuCallBack_p) SetAllTrackSelect, I2VP( 0));
+ wMenuPushCreate(selectPopup2M, "", _("Deselect All"), 0,
+ (wMenuCallBack_p) SetAllTrackSelect, I2VP( 0));
wMenuSeparatorCreate( selectPopup2M );
- wMenuPushCreate(selectPopup2M, "", _("Properties -'?'"), 0, CallPushDescribe, I2VP(0));
- menuPushModify = wMenuPushCreate(selectPopup2M, "", _("Modify/Activate Track"), 0, CallPushModify, I2VP(0));
+ wMenuPushCreate(selectPopup2M, "", _("Properties -'?'"), 0, CallPushDescribe,
+ I2VP(0));
+ menuPushModify = wMenuPushCreate(selectPopup2M, "", _("Modify/Activate Track"),
+ 0, CallPushModify, I2VP(0));
wMenuSeparatorCreate( selectPopup2M );
wMenuPushCreate(selectPopup2M, "", _("Cut"), 0, EditCut, I2VP( 0));
wMenuPushCreate(selectPopup2M, "", _("Copy"), 0, EditCopy, I2VP( 0));
@@ -3687,23 +3708,40 @@ EXPORT void InitCmdSelect2( wMenu_p menu ) {
AddMoveMenu( selectPopup2M, QuickMove);
selectPopup2RM = wMenuMenuCreate(selectPopup2M, "", _("Rotate..."));
AddRotateMenu( selectPopup2RM, QuickRotate );
- rotateAlignMI = wMenuPushCreate( selectPopup2RM, "", _("Align"), 0, RotateAlign, I2VP(1) );
+ rotateAlignMI = wMenuPushCreate( selectPopup2RM, "", _("Align"), 0, RotateAlign,
+ I2VP(1) );
wMenuSeparatorCreate( selectPopup2M );
- descriptionMI = wMenuPushCreate(selectPopup2M, "cmdMoveLabel", _("Show/Hide Description"), 0, moveDescription, I2VP(0));
+ descriptionMI = wMenuPushCreate(selectPopup2M, "cmdMoveLabel",
+ _("Show/Hide Description"), 0, moveDescription, I2VP(0));
wMenuSeparatorCreate( selectPopup2M );
- hideMI = wMenuPushCreate(selectPopup2M, "", _("Hide/NoHide"), 0, SelectTunnel, I2VP( 0));
- bridgeMI = wMenuPushCreate(selectPopup2M, "", _("Bridge/NoBridge"), 0, SelectBridge, I2VP( 0));
- tiesMI = wMenuPushCreate(selectPopup2M, "", _("NoTies/Ties"), 0, SelectTies, I2VP( 0));
+ tiesMI = wMenuPushCreate(selectPopup2M, "", _("Ties/NoTies"), 0, SelectTies,
+ I2VP( 0));
+ hideMI = wMenuPushCreate(selectPopup2M, "", _("Hide/NoHide"), 0, SelectTunnel,
+ I2VP( 0));
+ bridgeMI = wMenuPushCreate(selectPopup2M, "", _("Bridge/NoBridge"), 0,
+ SelectBridge, I2VP( 0));
+ roadbedMI = wMenuPushCreate(selectPopup2M, "", _("Roadbed/NoRoadbed"), 0,
+ SelectRoadbed, I2VP( 0));
+ tiesMI = wMenuPushCreate(selectPopup2M, "", _("NoTies/Ties"), 0, SelectTies,
+ I2VP( 0));
selectPopup2TM = wMenuMenuCreate(selectPopup2M, "", _("Thickness..."));
- wMenuPushCreate( selectPopup2TM, "", _("Thin Tracks"), 0, SelectTrackWidth, I2VP(0 ));
- wMenuPushCreate( selectPopup2TM, "", _("Medium Tracks"), 0, SelectTrackWidth, I2VP(2 ));
- wMenuPushCreate( selectPopup2TM, "", _("Thick Tracks"), 0, SelectTrackWidth, I2VP(3 ));
+ wMenuPushCreate( selectPopup2TM, "", _("Thin Tracks"), 0, SelectTrackWidth,
+ I2VP(0 ));
+ wMenuPushCreate( selectPopup2TM, "", _("Medium Tracks"), 0, SelectTrackWidth,
+ I2VP(2 ));
+ wMenuPushCreate( selectPopup2TM, "", _("Thick Tracks"), 0, SelectTrackWidth,
+ I2VP(3 ));
selectPopup2TYM = wMenuMenuCreate( selectPopup2M, "", _("LineType...") );
- wMenuPushCreate( selectPopup2TYM, "", _("Solid Line"), 0, SelectLineType, I2VP(0 ));
- wMenuPushCreate( selectPopup2TYM, "", _("Dashed Line"), 0, SelectLineType, I2VP(1 ));
- wMenuPushCreate( selectPopup2TYM, "", _("Dotted Line"), 0, SelectLineType, I2VP(2 ));
- wMenuPushCreate( selectPopup2TYM, "", _("Dash-Dotted Line"), 0, SelectLineType, I2VP(3 ));
- wMenuPushCreate( selectPopup2TYM, "", _("Dash-Dot-Dotted Line"), 0, SelectLineType, I2VP(4 ));
+ wMenuPushCreate( selectPopup2TYM, "", _("Solid Line"), 0, SelectLineType,
+ I2VP(0 ));
+ wMenuPushCreate( selectPopup2TYM, "", _("Dashed Line"), 0, SelectLineType,
+ I2VP(1 ));
+ wMenuPushCreate( selectPopup2TYM, "", _("Dotted Line"), 0, SelectLineType,
+ I2VP(2 ));
+ wMenuPushCreate( selectPopup2TYM, "", _("Dash-Dotted Line"), 0, SelectLineType,
+ I2VP(3 ));
+ wMenuPushCreate( selectPopup2TYM, "", _("Dash-Dot-Dotted Line"), 0,
+ SelectLineType, I2VP(4 ));
wMenuSeparatorCreate( selectPopup2M );
wMenuPushCreate(selectPopup2M, "", _("Move To Front"), 0, SelectAbove,I2VP( 0));
wMenuPushCreate(selectPopup2M, "", _("Move To Back"), 0, SelectBelow, I2VP( 0));
@@ -3711,8 +3749,6 @@ EXPORT void InitCmdSelect2( wMenu_p menu ) {
wMenuPushCreate(selectPopup2M, "", _("Group"), 0, DoGroup, I2VP( 0));
wMenuPushCreate(selectPopup2M, "", _("UnGroup"), 0, DoUngroup, I2VP( 0));
wMenuSeparatorCreate( selectPopup2M );
-
- ParamRegister( &rescalePG );
}
@@ -3720,38 +3756,58 @@ EXPORT void InitCmdSelect2( wMenu_p menu ) {
EXPORT void InitCmdDelete( void )
{
wIcon_p icon;
- icon = wIconCreatePixMap( delete_xpm[iconSize] );
- AddToolbarButton( "cmdDelete", icon, IC_SELECTED, (wButtonCallBack_p)SelectDelete, 0 );
+ icon = wIconCreatePixMap( delete_xpm3[iconSize] );
+ AddToolbarButton( "cmdDelete", icon, IC_SELECTED,
+ (wButtonCallBack_p)SelectDelete, 0 );
+}
+
+EXPORT void InitCmdTies( void )
+{
+ wIcon_p icon;
+ icon = wIconCreatePixMap( ties_xpm3[iconSize] );
+ AddToolbarButton( "cmdTies", icon, IC_SELECTED|IC_POPUP, SelectTies, NULL );
}
EXPORT void InitCmdTunnel( void )
{
wIcon_p icon;
- icon = wIconCreatePixMap( tunnel_xpm[iconSize] );
+ icon = wIconCreatePixMap( tunnel_xpm3[iconSize] );
AddToolbarButton( "cmdTunnel", icon, IC_SELECTED|IC_POPUP, SelectTunnel, NULL );
}
EXPORT void InitCmdBridge( void)
{
wIcon_p icon;
- icon = wIconCreatePixMap( bridge_xpm[iconSize] );
+ icon = wIconCreatePixMap( bridge_xpm3[iconSize] );
AddToolbarButton( "cmdBridge", icon, IC_SELECTED|IC_POPUP, SelectBridge, NULL );
}
+EXPORT void InitCmdRoadbed( void)
+{
+ wIcon_p icon;
+ icon = wIconCreatePixMap( roadbed_xpm3[iconSize] );
+ AddToolbarButton( "cmdRoadbed", icon, IC_SELECTED|IC_POPUP, SelectRoadbed,
+ NULL );
+}
+
EXPORT void InitCmdMoveDescription( wMenu_p menu )
{
- AddMenuButton( menu, CmdMoveDescription, "cmdMoveLabel", _("Move Description"), wIconCreatePixMap(description_xpm[iconSize]),
- LEVEL0, IC_STICKY|IC_POPUP3|IC_CMDMENU|IC_WANT_MOVE, ACCL_MOVEDESC, I2VP( 0 ));
+ AddMenuButton( menu, CmdMoveDescription, "cmdMoveLabel", _("Move Description"),
+ wIconCreatePixMap(description_xpm3[iconSize]),
+ LEVEL0, IC_STICKY|IC_POPUP3|IC_CMDMENU|IC_WANT_MOVE, ACCL_MOVEDESC, I2VP( 0 ));
}
EXPORT void InitCmdMove( wMenu_p menu )
{
- moveCmdInx = AddMenuButton( menu, CmdMove, "cmdMove", _("Move"), wIconCreatePixMap(move_xpm[iconSize]),
- LEVEL0, IC_STICKY|IC_SELECTED|IC_CMDMENU|IC_WANT_MOVE, ACCL_MOVE, NULL );
- rotateCmdInx = AddMenuButton( menu, CmdRotate, "cmdRotate", _("Rotate"), wIconCreatePixMap(rotate_xpm[iconSize]),
- LEVEL0, IC_STICKY|IC_SELECTED|IC_CMDMENU|IC_WANT_MOVE, ACCL_ROTATE, NULL );
- flipCmdInx = AddMenuButton( menu, CmdFlip, "cmdFlip", _("Flip"), wIconCreatePixMap(reflect_xpm[iconSize]),
- LEVEL0, IC_STICKY|IC_SELECTED|IC_CMDMENU, ACCL_FLIP, NULL );
+ moveCmdInx = AddMenuButton( menu, CmdMove, "cmdMove", _("Move"),
+ wIconCreatePixMap(move_xpm3[iconSize]),
+ LEVEL0, IC_STICKY|IC_SELECTED|IC_CMDMENU|IC_WANT_MOVE, ACCL_MOVE, NULL );
+ rotateCmdInx = AddMenuButton( menu, CmdRotate, "cmdRotate", _("Rotate"),
+ wIconCreatePixMap(rotate_xpm3[iconSize]),
+ LEVEL0, IC_STICKY|IC_SELECTED|IC_CMDMENU|IC_WANT_MOVE, ACCL_ROTATE, NULL );
+ flipCmdInx = AddMenuButton( menu, CmdFlip, "cmdFlip", _("Flip"),
+ wIconCreatePixMap(reflect_xpm3[iconSize]),
+ LEVEL0, IC_STICKY|IC_SELECTED|IC_CMDMENU, ACCL_FLIP, NULL );
}
diff --git a/app/bin/cselect.h b/app/bin/cselect.h
index 0f36cfd..9227032 100644
--- a/app/bin/cselect.h
+++ b/app/bin/cselect.h
@@ -16,7 +16,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
*/
#ifndef CSELECT_H
@@ -29,6 +29,10 @@
extern wIndex_t selectCmdInx;
extern wIndex_t moveCmdInx;
extern wIndex_t rotateCmdInx;
+extern wIndex_t flipCmdInx;
+
+extern long selectMode;
+extern long selectZero;
extern int incrementalDrawLimit;
extern long selectedTrackCount;
@@ -37,6 +41,7 @@ void OrphanedTrackSelect( void * unused );
void SetAllTrackSelect( BOOL_T );
void SelectTunnel( void * unused );
void SelectBridge( void * unused );
+void SelectRoadbed( void * unused );
void SelectTies( void * unused );
void SelectRecount( void );
void SelectTrackWidth( void* );
@@ -51,9 +56,11 @@ void ClearElevations( void * unused );
void AddElevations( DIST_T );
void DoRefreshCompound( void * unused );
void WriteSelectedTracksToTempSegs( void );
-void DoRescale( void *unused );
+void GetSelectedBounds( coOrd *, coOrd * );
STATUS_T CmdMoveDescription( wAction_t, coOrd );
void DrawHighlightBoxes(BOOL_T, BOOL_T,track_p);
void HighlightSelectedTracks(track_p trk_ignore, BOOL_T keep, BOOL_T invert );
+typedef BOOL_T (*doSelectedTrackCallBack_t)(track_p, BOOL_T);
+void DoSelectedTracks( doSelectedTrackCallBack_t doit );
#endif
diff --git a/app/bin/csensor.c b/app/bin/csensor.c
index b6f2224..761b511 100644
--- a/app/bin/csensor.c
+++ b/app/bin/csensor.c
@@ -4,8 +4,8 @@
/* -*- C -*- ****************************************************************
*
- * System :
- * Module :
+ * System :
+ * Module :
* Object Name : $RCSfile$
* Revision : $Revision$
* Date : $Date$
@@ -14,12 +14,12 @@
* Created : Sun Mar 5 16:01:37 2017
* Last Modified : <170314.1407>
*
- * Description
+ * Description
*
* Notes
*
* History
- *
+ *
****************************************************************************
*
* Copyright (C) 2017 Robert Heller D/B/A Deepwoods Software
@@ -38,13 +38,13 @@
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
*
- *
*
****************************************************************************/
-static const char rcsid[] = "@(#) : $Id$";
+//static const char rcsid[] = "@(#) : $Id$";
#include "compound.h"
#include "cselect.h"
@@ -54,7 +54,6 @@ static const char rcsid[] = "@(#) : $Id$";
#include "layout.h"
#include "param.h"
#include "track.h"
-#include "trackx.h"
#include "common-ui.h"
#ifdef UTFCONVERT
#include "include/utf8convert.h"
@@ -73,257 +72,261 @@ static drawCmd_t sensorD = {
1.0,
0.0,
{0.0,0.0}, {0.0,0.0},
- Pix2CoOrd, CoOrd2Pix };
+ Pix2CoOrd, CoOrd2Pix
+};
static char sensorName[STR_SHORT_SIZE];
static char sensorScript[STR_LONG_SIZE];
#endif
typedef struct sensorData_t {
- extraDataBase_t base;
- coOrd orig;
- BOOL_T IsHilite;
- char * name;
- char * script;
+ extraDataBase_t base;
+ coOrd orig;
+ BOOL_T IsHilite;
+ char * name;
+ char * script;
} sensorData_t, *sensorData_p;
static sensorData_p GetsensorData ( track_p trk )
{
- return GET_EXTRA_DATA( trk, T_SENSOR, sensorData_t );
+ return GET_EXTRA_DATA( trk, T_SENSOR, sensorData_t );
}
#define RADIUS 6
#define sensor_SF (3.0)
-static void DDrawSensor(drawCmd_p d, coOrd orig, DIST_T scaleRatio,
- wDrawColor color )
+static void DDrawSensor(drawCmd_p d, coOrd orig, DIST_T scaleRatio,
+ wDrawColor color )
{
- coOrd p1, p2;
-
- p1 = orig;
- DrawFillCircle(d,p1, RADIUS * sensor_SF / scaleRatio,color);
- Translate (&p2, orig, 45, RADIUS * sensor_SF / scaleRatio);
- DrawLine(d, p1, p2, 2, wDrawColorWhite);
- Translate (&p2, orig, 45+90, RADIUS * sensor_SF / scaleRatio);
- DrawLine(d, p1, p2, 2, wDrawColorWhite);
- Translate (&p2, orig, 45+180, RADIUS * sensor_SF / scaleRatio);
- DrawLine(d, p1, p2, 2, wDrawColorWhite);
- Translate (&p2, orig, 45+270, RADIUS * sensor_SF / scaleRatio);
- DrawLine(d, p1, p2, 2, wDrawColorWhite);
+ coOrd p1, p2;
+
+ p1 = orig;
+ DrawFillCircle(d,p1, RADIUS * sensor_SF / scaleRatio,color);
+ Translate (&p2, orig, 45, RADIUS * sensor_SF / scaleRatio);
+ DrawLine(d, p1, p2, 2, wDrawColorWhite);
+ Translate (&p2, orig, 45+90, RADIUS * sensor_SF / scaleRatio);
+ DrawLine(d, p1, p2, 2, wDrawColorWhite);
+ Translate (&p2, orig, 45+180, RADIUS * sensor_SF / scaleRatio);
+ DrawLine(d, p1, p2, 2, wDrawColorWhite);
+ Translate (&p2, orig, 45+270, RADIUS * sensor_SF / scaleRatio);
+ DrawLine(d, p1, p2, 2, wDrawColorWhite);
}
static void DrawSensor (track_p t, drawCmd_p d, wDrawColor color )
{
- sensorData_p xx = GetsensorData(t);
- DDrawSensor(d,xx->orig,GetScaleRatio(GetTrkScale(t)),color);
+ sensorData_p xx = GetsensorData(t);
+ DDrawSensor(d,xx->orig,GetScaleRatio(GetTrkScale(t)),color);
}
-static void SensorBoundingBox (coOrd orig, DIST_T scaleRatio, coOrd *hi,
- coOrd *lo)
+static void SensorBoundingBox (coOrd orig, DIST_T scaleRatio, coOrd *hi,
+ coOrd *lo)
{
- coOrd p1, p2;
-
- p1 = orig;
- Translate (&p1, orig, 0, -RADIUS * sensor_SF / scaleRatio);
- Translate (&p2, orig, 0, RADIUS * sensor_SF / scaleRatio);
- *hi = p1; *lo = p1;
- if (p2.x > hi->x) hi->x = p2.x;
- if (p2.x < lo->x) lo->x = p2.x;
- if (p2.y > hi->y) hi->y = p2.y;
- if (p2.y < lo->y) lo->y = p2.y;
-}
+ coOrd p1, p2;
+
+ p1 = orig;
+ Translate (&p1, orig, 0, -RADIUS * sensor_SF / scaleRatio);
+ Translate (&p2, orig, 0, RADIUS * sensor_SF / scaleRatio);
+ *hi = p1; *lo = p1;
+ if (p2.x > hi->x) { hi->x = p2.x; }
+ if (p2.x < lo->x) { lo->x = p2.x; }
+ if (p2.y > hi->y) { hi->y = p2.y; }
+ if (p2.y < lo->y) { lo->y = p2.y; }
+}
static void ComputeSensorBoundingBox (track_p t )
{
- coOrd lo, hi;
- sensorData_p xx = GetsensorData(t);
- SensorBoundingBox(xx->orig, GetScaleRatio(GetTrkScale(t)), &hi, &lo);
- SetBoundingBox(t, hi, lo);
+ coOrd lo, hi;
+ sensorData_p xx = GetsensorData(t);
+ SensorBoundingBox(xx->orig, GetScaleRatio(GetTrkScale(t)), &hi, &lo);
+ SetBoundingBox(t, hi, lo);
}
static DIST_T DistanceSensor (track_p t, coOrd * p )
{
- sensorData_p xx = GetsensorData(t);
- return FindDistance(xx->orig, *p);
+ sensorData_p xx = GetsensorData(t);
+ return FindDistance(xx->orig, *p);
}
static struct {
- char name[STR_SHORT_SIZE];
- coOrd pos;
- char script[STR_LONG_SIZE];
+ char name[STR_SHORT_SIZE];
+ coOrd pos;
+ char script[STR_LONG_SIZE];
} sensorProperties;
typedef enum { NM, PS, SC } sensorDesc_e;
static descData_t sensorDesc[] = {
- /* NM */ { DESC_STRING, N_("Name"), &sensorProperties.name, sizeof(sensorProperties.name) },
- /* PS */ { DESC_POS, N_("Position"), &sensorProperties.pos },
- /* SC */ { DESC_STRING, N_("Script"), &sensorProperties.script, sizeof(sensorProperties.script) },
- { DESC_NULL } };
+ /* NM */ { DESC_STRING, N_("Name"), &sensorProperties.name, sizeof(sensorProperties.name) },
+ /* PS */ { DESC_POS, N_("Position"), &sensorProperties.pos },
+ /* SC */ { DESC_STRING, N_("Script"), &sensorProperties.script, sizeof(sensorProperties.script) },
+ { DESC_NULL }
+};
static void UpdateSensorProperties ( track_p trk, int inx, descData_p
- descUpd, BOOL_T needUndoStart )
+ descUpd, BOOL_T needUndoStart )
{
- sensorData_p xx = GetsensorData(trk);
- const char *thename, *thescript;
- char *newName, *newScript;
- unsigned int max_str;
- BOOL_T changed, nChanged, pChanged, sChanged;
-
- switch (inx) {
- case NM:
- break;
- case PS:
- break;
- case SC:
- break;
- case -1:
- changed = nChanged = pChanged = sChanged = FALSE;
- thename = wStringGetValue( (wString_p) sensorDesc[NM].control0 );
- if (strcmp(thename,xx->name) != 0) {
- nChanged = changed = TRUE;
- max_str = sensorDesc[NM].max_string;
+ sensorData_p xx = GetsensorData(trk);
+ const char *thename, *thescript;
+ char *newName, *newScript = NULL;
+ unsigned int max_str;
+ BOOL_T changed, nChanged, pChanged, sChanged;
+
+ switch (inx) {
+ case NM:
+ break;
+ case PS:
+ break;
+ case SC:
+ break;
+ case -1:
+ changed = nChanged = pChanged = sChanged = FALSE;
+ thename = wStringGetValue( (wString_p) sensorDesc[NM].control0 );
+ if (strcmp(thename,xx->name) != 0) {
+ nChanged = changed = TRUE;
+ max_str = sensorDesc[NM].max_string;
if (max_str && strlen(thename)>max_str-1) {
newName = MyMalloc(max_str);
newName[max_str-1] = '\0';
strncat(newName,thename,max_str-1);
NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str-1);
- } else newName = MyStrdup(thename);
- }
+ } else { newName = MyStrdup(thename); }
+ }
- thescript = wStringGetValue( (wString_p) sensorDesc[SC].control0 );
- if (strcmp(thescript,xx->script) != 0) {
- sChanged = changed = TRUE;
- max_str = sensorDesc[SC].max_string;
+ thescript = wStringGetValue( (wString_p) sensorDesc[SC].control0 );
+ if (strcmp(thescript,xx->script) != 0) {
+ sChanged = changed = TRUE;
+ max_str = sensorDesc[SC].max_string;
if (max_str && strlen(thename)>max_str-1) {
newScript = MyMalloc(max_str);
newScript[max_str-1] = '\0';
strncat(newScript,thescript,max_str-1);
NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str-1);
- } else newScript = MyStrdup(thescript);
- }
-
- if (sensorProperties.pos.x != xx->orig.x ||
- sensorProperties.pos.y != xx->orig.y) {
- pChanged = changed = TRUE;
- }
- if (!changed) break;
- if (needUndoStart)
- UndoStart( _("Change Sensor"), "Change Sensor" );
- UndoModify( trk );
- if (nChanged) {
- MyFree(xx->name);
- xx->name = newName;
- }
- if (pChanged) {
- UndrawNewTrack( trk );
- }
- if (pChanged) {
- xx->orig = sensorProperties.pos;
- }
- if (sChanged) {
- MyFree(xx->script);
- xx->script = newScript;
- }
- if (pChanged) {
- ComputeSensorBoundingBox( trk );
- DrawNewTrack( trk );
- }
- break;
- }
+ } else { newScript = MyStrdup(thescript); }
+ }
+
+ if (sensorProperties.pos.x != xx->orig.x ||
+ sensorProperties.pos.y != xx->orig.y) {
+ pChanged = changed = TRUE;
+ }
+ if (!changed) { break; }
+ if (needUndoStart) {
+ UndoStart( _("Change Sensor"), "Change Sensor" );
+ }
+ UndoModify( trk );
+ if (nChanged) {
+ MyFree(xx->name);
+ xx->name = newName;
+ }
+ if (pChanged) {
+ UndrawNewTrack( trk );
+ }
+ if (pChanged) {
+ xx->orig = sensorProperties.pos;
+ }
+ if (sChanged) {
+ MyFree(xx->script);
+ xx->script = newScript;
+ }
+ if (pChanged) {
+ ComputeSensorBoundingBox( trk );
+ DrawNewTrack( trk );
+ }
+ break;
+ }
}
-
+
static void DescribeSensor (track_p trk, char * str, CSIZE_T len )
{
- sensorData_p xx = GetsensorData(trk);
-
- strcpy( str, _(GetTrkTypeName( trk )) );
- str++;
- while (*str) {
- *str = tolower((unsigned char)*str);
- str++;
- }
- sprintf( str, _("(%d [%s]): Layer=%u, at %0.3f,%0.3f"),
- GetTrkIndex(trk),
- xx->name,GetTrkLayer(trk)+1, xx->orig.x, xx->orig.y);
- strncpy(sensorProperties.name,xx->name,STR_SHORT_SIZE-1);
- sensorProperties.name[STR_SHORT_SIZE-1] = '\0';
- strncpy(sensorProperties.script,xx->script,STR_LONG_SIZE-1);
- sensorProperties.script[STR_LONG_SIZE-1] = '\0';
- sensorProperties.pos = xx->orig;
- sensorDesc[NM].mode =
- sensorDesc[SC].mode = DESC_NOREDRAW;
- DoDescribe( _("Sensor"), trk, sensorDesc, UpdateSensorProperties );
+ sensorData_p xx = GetsensorData(trk);
+
+ strcpy( str, _(GetTrkTypeName( trk )) );
+ str++;
+ while (*str) {
+ *str = tolower((unsigned char)*str);
+ str++;
+ }
+ sprintf( str, _("(%d [%s]): Layer=%u, at %0.3f,%0.3f"),
+ GetTrkIndex(trk),
+ xx->name,GetTrkLayer(trk)+1, xx->orig.x, xx->orig.y);
+ strncpy(sensorProperties.name,xx->name,STR_SHORT_SIZE-1);
+ sensorProperties.name[STR_SHORT_SIZE-1] = '\0';
+ strncpy(sensorProperties.script,xx->script,STR_LONG_SIZE-1);
+ sensorProperties.script[STR_LONG_SIZE-1] = '\0';
+ sensorProperties.pos = xx->orig;
+ sensorDesc[NM].mode =
+ sensorDesc[SC].mode = DESC_NOREDRAW;
+ DoDescribe( _("Sensor"), trk, sensorDesc, UpdateSensorProperties );
}
-static void DeleteSensor ( track_p trk )
+static void DeleteSensor ( track_p trk )
{
- sensorData_p xx = GetsensorData(trk);
- MyFree(xx->name); xx->name = NULL;
- MyFree(xx->script); xx->script = NULL;
+ sensorData_p xx = GetsensorData(trk);
+ MyFree(xx->name); xx->name = NULL;
+ MyFree(xx->script); xx->script = NULL;
}
static BOOL_T WriteSensor ( track_p t, FILE * f )
{
- BOOL_T rc = TRUE;
- sensorData_p xx = GetsensorData(t);
+ BOOL_T rc = TRUE;
+ sensorData_p xx = GetsensorData(t);
char *sensorName = MyStrdup(xx->name);
#ifdef UTFCONVERT
sensorName = Convert2UTF8(sensorName);
#endif // UTFCONVERT
- rc &= fprintf(f, "SENSOR %d %u %s %d %0.6f %0.6f \"%s\" \"%s\"\n",
- GetTrkIndex(t), GetTrkLayer(t), GetTrkScaleName(t),
- GetTrkVisible(t), xx->orig.x, xx->orig.y, sensorName,
- xx->script)>0;
+ rc &= fprintf(f, "SENSOR %d %u %s %d %0.6f %0.6f \"%s\" \"%s\"\n",
+ GetTrkIndex(t), GetTrkLayer(t), GetTrkScaleName(t),
+ GetTrkVisible(t), xx->orig.x, xx->orig.y, sensorName,
+ xx->script)>0;
MyFree(sensorName);
- return rc;
+ return rc;
}
static BOOL_T ReadSensor ( char * line )
{
- wIndex_t index;
- /*TRKINX_T trkindex;*/
- track_p trk;
- /*char * cp = NULL;*/
- char *name;
- char *script;
- coOrd orig;
- BOOL_T visible;
- char scale[10];
- wIndex_t layer;
- sensorData_p xx;
- if (!GetArgs(line+7,"dLsdpqq",&index,&layer,scale, &visible, &orig,&name,&script)) {
- return FALSE;
- }
+ wIndex_t index;
+ /*TRKINX_T trkindex;*/
+ track_p trk;
+ /*char * cp = NULL;*/
+ char *name;
+ char *script;
+ coOrd orig;
+ BOOL_T visible;
+ char scale[10];
+ wIndex_t layer;
+ sensorData_p xx;
+ if (!GetArgs(line+7,"dLsdpqq",&index,&layer,scale, &visible, &orig,&name,
+ &script)) {
+ return FALSE;
+ }
#ifdef UTFCONVERT
ConvertUTF8ToSystem(name);
#endif // UTFCONVERT
- trk = NewTrack(index, T_SENSOR, 0, sizeof(sensorData_t));
- SetTrkVisible(trk, visible);
- SetTrkScale(trk, LookupScale( scale ));
- SetTrkLayer(trk, layer);
- xx = GetsensorData ( trk );
- xx->name = name;
- xx->orig = orig;
- xx->script = script;
- ComputeSensorBoundingBox(trk);
- return TRUE;
+ trk = NewTrack(index, T_SENSOR, 0, sizeof(sensorData_t));
+ SetTrkVisible(trk, visible);
+ SetTrkScale(trk, LookupScale( scale ));
+ SetTrkLayer(trk, layer);
+ xx = GetsensorData ( trk );
+ xx->name = name;
+ xx->orig = orig;
+ xx->script = script;
+ ComputeSensorBoundingBox(trk);
+ return TRUE;
}
static void MoveSensor (track_p trk, coOrd orig )
{
- sensorData_p xx = GetsensorData ( trk );
- xx->orig.x += orig.x;
- xx->orig.y += orig.y;
- ComputeSensorBoundingBox(trk);
+ sensorData_p xx = GetsensorData ( trk );
+ xx->orig.x += orig.x;
+ xx->orig.y += orig.y;
+ ComputeSensorBoundingBox(trk);
}
static void RotateSensor (track_p trk, coOrd orig, ANGLE_T angle )
@@ -334,45 +337,45 @@ static void RescaleSensor (track_p trk, FLOAT_T ratio )
{
}
-static void FlipSensor (track_p trk, coOrd orig, ANGLE_T angle )
+static void FlipSensor (track_p trk, coOrd orig, ANGLE_T angle )
{
- sensorData_p xx = GetsensorData ( trk );
- FlipPoint(&(xx->orig), orig, angle);
- ComputeSensorBoundingBox(trk);
+ sensorData_p xx = GetsensorData ( trk );
+ FlipPoint(&(xx->orig), orig, angle);
+ ComputeSensorBoundingBox(trk);
}
static trackCmd_t sensorCmds = {
- "SENSOR",
- DrawSensor,
- DistanceSensor,
- DescribeSensor,
- DeleteSensor,
- WriteSensor,
- ReadSensor,
- MoveSensor,
- RotateSensor,
- RescaleSensor,
- NULL, /* audit */
- NULL, /* getAngle */
- NULL, /* split */
- NULL, /* traverse */
- NULL, /* enumerate */
- NULL, /* redraw */
- NULL, /* trim */
- NULL, /* merge */
- NULL, /* modify */
- NULL, /* getLength */
- NULL, /* getTrkParams */
- NULL, /* moveEndPt */
- NULL, /* query */
- NULL, /* ungroup */
- FlipSensor, /* flip */
- NULL, /* drawPositionIndicator */
- NULL, /* advancePositionIndicator */
- NULL, /* checkTraverse */
- NULL, /* makeParallel */
- NULL /* drawDesc */
+ "SENSOR",
+ DrawSensor,
+ DistanceSensor,
+ DescribeSensor,
+ DeleteSensor,
+ WriteSensor,
+ ReadSensor,
+ MoveSensor,
+ RotateSensor,
+ RescaleSensor,
+ NULL, /* audit */
+ NULL, /* getAngle */
+ NULL, /* split */
+ NULL, /* traverse */
+ NULL, /* enumerate */
+ NULL, /* redraw */
+ NULL, /* trim */
+ NULL, /* merge */
+ NULL, /* modify */
+ NULL, /* getLength */
+ NULL, /* getTrkParams */
+ NULL, /* moveEndPt */
+ NULL, /* query */
+ NULL, /* ungroup */
+ FlipSensor, /* flip */
+ NULL, /* drawPositionIndicator */
+ NULL, /* advancePositionIndicator */
+ NULL, /* checkTraverse */
+ NULL, /* makeParallel */
+ NULL /* drawDesc */
};
static coOrd sensorEditOrig;
@@ -383,13 +386,13 @@ static char sensorEditScript[STR_LONG_SIZE];
static paramFloatRange_t r_1000_1000 = { -1000.0, 1000.0, 80 };
static paramData_t sensorEditPLs[] = {
#define I_SENSORNAME (0)
- /*0*/ { PD_STRING, sensorEditName, "name", PDO_NOPREF|PDO_NOTBLANK, I2VP(200), N_("Name"), 0, 0, sizeof(sensorEditName)},
+ /*0*/ { PD_STRING, sensorEditName, "name", PDO_NOPREF|PDO_NOTBLANK, I2VP(200), N_("Name"), 0, 0, sizeof(sensorEditName)},
#define I_ORIGX (1)
- /*1*/ { PD_FLOAT, &sensorEditOrig.x, "origx", PDO_DIM, &r_1000_1000, N_("Origin X") },
+ /*1*/ { PD_FLOAT, &sensorEditOrig.x, "origx", PDO_DIM, &r_1000_1000, N_("Origin X") },
#define I_ORIGY (2)
- /*2*/ { PD_FLOAT, &sensorEditOrig.y, "origy", PDO_DIM, &r_1000_1000, N_("Origin Y") },
+ /*2*/ { PD_FLOAT, &sensorEditOrig.y, "origy", PDO_DIM, &r_1000_1000, N_("Origin Y") },
#define I_SENSORSCRIPT (3)
- /*3*/ { PD_STRING, sensorEditScript, "script", PDO_NOPREF, I2VP(350), N_("Script"), 0, 0, sizeof(sensorEditScript)},
+ /*3*/ { PD_STRING, sensorEditScript, "script", PDO_NOPREF, I2VP(350), N_("Script"), 0, 0, sizeof(sensorEditScript)},
};
static paramGroup_t sensorEditPG = { "sensorEdit", 0, sensorEditPLs, COUNT( sensorEditPLs ) };
@@ -397,109 +400,113 @@ static wWin_p sensorEditW;
static void SensorEditOk ( void * junk )
{
- track_p trk;
- sensorData_p xx;
-
- if (sensorEditTrack == NULL) {
- UndoStart( _("Create Sensor"), "Create Sensor");
- trk = NewTrack(0, T_SENSOR, 0, sizeof(sensorData_t));
- } else {
- UndoStart( _("Modify Sensor"), "Modify Sensor");
- trk = sensorEditTrack;
- }
- xx = GetsensorData(trk);
- xx->orig = sensorEditOrig;
- if ( xx->name == NULL || strncmp (xx->name, sensorEditName, STR_SHORT_SIZE) != 0) {
- MyFree(xx->name);
- xx->name = MyStrdup(sensorEditName);
- }
- if ( xx->script == NULL || strncmp (xx->script, sensorEditScript, STR_LONG_SIZE) != 0) {
- MyFree(xx->script);
- xx->script = MyStrdup(sensorEditScript);
- }
- UndoEnd();
- DoRedraw();
- ComputeSensorBoundingBox(trk);
- wHide( sensorEditW );
+ track_p trk;
+ sensorData_p xx;
+
+ if (sensorEditTrack == NULL) {
+ UndoStart( _("Create Sensor"), "Create Sensor");
+ trk = NewTrack(0, T_SENSOR, 0, sizeof(sensorData_t));
+ } else {
+ UndoStart( _("Modify Sensor"), "Modify Sensor");
+ trk = sensorEditTrack;
+ }
+ xx = GetsensorData(trk);
+ xx->orig = sensorEditOrig;
+ if ( xx->name == NULL
+ || strncmp (xx->name, sensorEditName, STR_SHORT_SIZE) != 0) {
+ MyFree(xx->name);
+ xx->name = MyStrdup(sensorEditName);
+ }
+ if ( xx->script == NULL
+ || strncmp (xx->script, sensorEditScript, STR_LONG_SIZE) != 0) {
+ MyFree(xx->script);
+ xx->script = MyStrdup(sensorEditScript);
+ }
+ UndoEnd();
+ DoRedraw();
+ ComputeSensorBoundingBox(trk);
+ wHide( sensorEditW );
}
#if 0
static void SensorEditCancel ( wWin_p junk )
{
- wHide( sensorEditW );
+ wHide( sensorEditW );
}
#endif
static void EditSensorDialog()
{
- sensorData_p xx;
-
- if ( !sensorEditW ) {
- ParamRegister( &sensorEditPG );
- sensorEditW = ParamCreateDialog (&sensorEditPG,
- MakeWindowTitle(_("Edit sensor")),
- _("Ok"), SensorEditOk,
- wHide, TRUE, NULL,
- F_BLOCK,
- NULL );
- }
- if (sensorEditTrack == NULL) {
- sensorEditName[0] = '\0';
- sensorEditScript[0] = '\0';
- } else {
- xx = GetsensorData ( sensorEditTrack );
- strncpy(sensorEditName,xx->name,STR_SHORT_SIZE);
- strncpy(sensorEditScript,xx->script,STR_LONG_SIZE);
- sensorEditOrig = xx->orig;
- }
- ParamLoadControls( &sensorEditPG );
- wShow( sensorEditW );
+ sensorData_p xx;
+
+ if ( !sensorEditW ) {
+ ParamRegister( &sensorEditPG );
+ sensorEditW = ParamCreateDialog (&sensorEditPG,
+ MakeWindowTitle(_("Edit sensor")),
+ _("Ok"), SensorEditOk,
+ wHide, TRUE, NULL,
+ F_BLOCK,
+ NULL );
+ }
+ if (sensorEditTrack == NULL) {
+ sensorEditName[0] = '\0';
+ sensorEditScript[0] = '\0';
+ } else {
+ xx = GetsensorData ( sensorEditTrack );
+ strncpy(sensorEditName,xx->name,STR_SHORT_SIZE);
+ strncpy(sensorEditScript,xx->script,STR_LONG_SIZE);
+ sensorEditOrig = xx->orig;
+ }
+ ParamLoadControls( &sensorEditPG );
+ wShow( sensorEditW );
}
static void EditSensor (track_p trk)
{
- sensorEditTrack = trk;
- EditSensorDialog();
+ sensorEditTrack = trk;
+ EditSensorDialog();
}
static void CreateNewSensor (coOrd orig)
{
- sensorEditOrig = orig;
- sensorEditTrack = NULL;
- EditSensorDialog();
+ sensorEditOrig = orig;
+ sensorEditTrack = NULL;
+ EditSensorDialog();
}
static STATUS_T CmdSensor ( wAction_t action, coOrd pos )
{
static coOrd sensor_pos;
static BOOL_T create;
- switch (action) {
- case C_START:
- InfoMessage(_("Place sensor"));
- SetAllTrackSelect( FALSE );
- create = FALSE;
- return C_CONTINUE;
- case C_DOWN:
- create = TRUE;
- /* no break */
+ switch (action) {
+ case C_START:
+ InfoMessage(_("Place sensor"));
+ SetAllTrackSelect( FALSE );
+ create = FALSE;
+ return C_CONTINUE;
+ case C_DOWN:
+ create = TRUE;
+ /* no break */
case C_MOVE:
SnapPos(&pos);
sensor_pos = pos;
- return C_CONTINUE;
- case C_UP:
- SnapPos(&pos);
- CreateNewSensor(pos);
- return C_TERMINATE;
- case C_REDRAW:
- if (create)
- DDrawSensor( &tempD, sensor_pos, GetScaleRatio(GetLayoutCurScale()), wDrawColorBlack );
- return C_CONTINUE;
- case C_CANCEL:
- create = FALSE;
- return C_CONTINUE;
- default:
- return C_CONTINUE;
- }
+ return C_CONTINUE;
+ case C_UP:
+ SnapPos(&pos);
+ CreateNewSensor(pos);
+ return C_TERMINATE;
+ case C_REDRAW:
+ if (create) {
+ DDrawSensor( &tempD, sensor_pos, GetScaleRatio(GetLayoutCurScale()),
+ wDrawColorBlack );
+ }
+ return C_CONTINUE;
+ case C_CANCEL:
+ create = FALSE;
+ return C_CONTINUE;
+ default:
+ return C_CONTINUE;
+ }
}
static coOrd ctlhiliteOrig, ctlhiliteSize;
@@ -507,92 +514,95 @@ static POS_T ctlhiliteBorder;
static wDrawColor ctlhiliteColor = 0;
static void DrawSensorTrackHilite( void )
{
- if (ctlhiliteColor==0)
+ if (ctlhiliteColor==0) {
ctlhiliteColor = wDrawColorGray(87);
- DrawRectangle( &tempD, ctlhiliteOrig, ctlhiliteSize, ctlhiliteColor, DRAW_TRANSPARENT );
+ }
+ DrawRectangle( &tempD, ctlhiliteOrig, ctlhiliteSize, ctlhiliteColor,
+ DRAW_TRANSPARENT );
}
static int SensorMgmProc ( int cmd, void * data )
{
- track_p trk = (track_p) data;
- sensorData_p xx = GetsensorData(trk);
- /*char msg[STR_SIZE];*/
-
- switch ( cmd ) {
- case CONTMGM_CAN_EDIT:
- return TRUE;
- break;
- case CONTMGM_DO_EDIT:
- EditSensor(trk);
- return TRUE;
- break;
- case CONTMGM_CAN_DELETE:
- return TRUE;
- break;
- case CONTMGM_DO_DELETE:
- DeleteTrack(trk, FALSE);
- return TRUE;
- break;
- case CONTMGM_DO_HILIGHT:
- if (!xx->IsHilite) {
- ctlhiliteBorder = mainD.scale*0.1;
- if ( ctlhiliteBorder < trackGauge ) ctlhiliteBorder = trackGauge;
- GetBoundingBox( trk, &ctlhiliteSize, &ctlhiliteOrig );
- ctlhiliteOrig.x -= ctlhiliteBorder;
- ctlhiliteOrig.y -= ctlhiliteBorder;
- ctlhiliteSize.x -= ctlhiliteOrig.x-ctlhiliteBorder;
- ctlhiliteSize.y -= ctlhiliteOrig.y-ctlhiliteBorder;
- DrawSensorTrackHilite();
- xx->IsHilite = TRUE;
- }
- break;
- case CONTMGM_UN_HILIGHT:
- if (xx->IsHilite) {
- ctlhiliteBorder = mainD.scale*0.1;
- if ( ctlhiliteBorder < trackGauge ) ctlhiliteBorder = trackGauge;
- GetBoundingBox( trk, &ctlhiliteSize, &ctlhiliteOrig );
- ctlhiliteOrig.x -= ctlhiliteBorder;
- ctlhiliteOrig.y -= ctlhiliteBorder;
- ctlhiliteSize.x -= ctlhiliteOrig.x-ctlhiliteBorder;
- ctlhiliteSize.y -= ctlhiliteOrig.y-ctlhiliteBorder;
- DrawSensorTrackHilite();
- xx->IsHilite = FALSE;
- }
- break;
- case CONTMGM_GET_TITLE:
- sprintf(message,"\t%s\t",xx->name);
- break;
- }
- return FALSE;
+ track_p trk = (track_p) data;
+ sensorData_p xx = GetsensorData(trk);
+ /*char msg[STR_SIZE];*/
+
+ switch ( cmd ) {
+ case CONTMGM_CAN_EDIT:
+ return TRUE;
+ break;
+ case CONTMGM_DO_EDIT:
+ EditSensor(trk);
+ return TRUE;
+ break;
+ case CONTMGM_CAN_DELETE:
+ return TRUE;
+ break;
+ case CONTMGM_DO_DELETE:
+ DeleteTrack(trk, FALSE);
+ return TRUE;
+ break;
+ case CONTMGM_DO_HILIGHT:
+ if (!xx->IsHilite) {
+ ctlhiliteBorder = mainD.scale*0.1;
+ if ( ctlhiliteBorder < trackGauge ) { ctlhiliteBorder = trackGauge; }
+ GetBoundingBox( trk, &ctlhiliteSize, &ctlhiliteOrig );
+ ctlhiliteOrig.x -= ctlhiliteBorder;
+ ctlhiliteOrig.y -= ctlhiliteBorder;
+ ctlhiliteSize.x -= ctlhiliteOrig.x-ctlhiliteBorder;
+ ctlhiliteSize.y -= ctlhiliteOrig.y-ctlhiliteBorder;
+ DrawSensorTrackHilite();
+ xx->IsHilite = TRUE;
+ }
+ break;
+ case CONTMGM_UN_HILIGHT:
+ if (xx->IsHilite) {
+ ctlhiliteBorder = mainD.scale*0.1;
+ if ( ctlhiliteBorder < trackGauge ) { ctlhiliteBorder = trackGauge; }
+ GetBoundingBox( trk, &ctlhiliteSize, &ctlhiliteOrig );
+ ctlhiliteOrig.x -= ctlhiliteBorder;
+ ctlhiliteOrig.y -= ctlhiliteBorder;
+ ctlhiliteSize.x -= ctlhiliteOrig.x-ctlhiliteBorder;
+ ctlhiliteSize.y -= ctlhiliteOrig.y-ctlhiliteBorder;
+ DrawSensorTrackHilite();
+ xx->IsHilite = FALSE;
+ }
+ break;
+ case CONTMGM_GET_TITLE:
+ sprintf(message,"\t%s\t",xx->name);
+ break;
+ }
+ return FALSE;
}
-#include "bitmaps/sensor.xpm"
+#include "bitmaps/sensor.xpm3"
EXPORT void SensorMgmLoad ( void )
{
- track_p trk;
- static wIcon_p sensorI = NULL;
-
- if (sensorI == NULL) {
- sensorI = wIconCreatePixMap( sensor_xpm[iconSize] );
- }
-
- TRK_ITERATE(trk) {
- if (GetTrkType(trk) != T_SENSOR) continue;
- ContMgmLoad (sensorI, SensorMgmProc, trk );
- }
+ track_p trk;
+ static wIcon_p sensorI = NULL;
+
+ if (sensorI == NULL) {
+ sensorI = wIconCreatePixMap( sensor_xpm3[iconSize] );
+ }
+
+ TRK_ITERATE(trk) {
+ if (GetTrkType(trk) != T_SENSOR) { continue; }
+ ContMgmLoad (sensorI, SensorMgmProc, trk );
+ }
}
#define ACCL_SENSOR 0
EXPORT void InitCmdSensor ( wMenu_p menu )
{
- AddMenuButton( menu, CmdSensor, "cmdSensor", _("Sensor"),
- wIconCreatePixMap( sensor_xpm[iconSize] ), LEVEL0_50, IC_STICKY|IC_POPUP2, ACCL_SENSOR, NULL );
+ AddMenuButton( menu, CmdSensor, "cmdSensor", _("Sensor"),
+ wIconCreatePixMap( sensor_xpm3[iconSize] ), LEVEL0_50, IC_STICKY|IC_POPUP2,
+ ACCL_SENSOR, NULL );
}
EXPORT void InitTrkSensor ( void )
{
- T_SENSOR = InitObject ( &sensorCmds );
- log_sensor = LogFindIndex ( "sensor" );
+ T_SENSOR = InitObject ( &sensorCmds );
+ log_sensor = LogFindIndex ( "sensor" );
}
diff --git a/app/bin/csignal.c b/app/bin/csignal.c
index 83609e1..36392cc 100644
--- a/app/bin/csignal.c
+++ b/app/bin/csignal.c
@@ -4,8 +4,8 @@
/* -*- C -*- ****************************************************************
*
- * System :
- * Module :
+ * System :
+ * Module :
* Object Name : $RCSfile$
* Revision : $Revision$
* Date : $Date$
@@ -14,12 +14,12 @@
* Created : Sun Feb 19 13:11:45 2017
* Last Modified : <170417.1113>
*
- * Description
+ * Description
*
* Notes
*
* History
- *
+ *
****************************************************************************
*
* Copyright (C) 2017 Robert Heller D/B/A Deepwoods Software
@@ -38,13 +38,13 @@
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
*
- *
*
****************************************************************************/
-static const char rcsid[] = "@(#) : $Id$";
+//static const char rcsid[] = "@(#) : $Id$";
#include "compound.h"
@@ -55,7 +55,6 @@ static const char rcsid[] = "@(#) : $Id$";
#include "layout.h"
#include "param.h"
#include "track.h"
-#include "trackx.h"
#include "common-ui.h"
#ifdef UTFCONVERT
#include "include/utf8convert.h"
@@ -74,34 +73,35 @@ static drawCmd_t signalD = {
1.0,
0.0,
{0.0,0.0}, {0.0,0.0},
- Pix2CoOrd, CoOrd2Pix };
+ Pix2CoOrd, CoOrd2Pix
+};
static char signalName[STR_SHORT_SIZE];
static int signalHeadCount;
#endif
typedef struct signalAspect_t {
- char * aspectName;
- char * aspectScript;
+ char * aspectName;
+ char * aspectScript;
} signalAspect_t, *signalAspect_p;
static dynArr_t signalAspect_da;
#define signalAspect(N) DYNARR_N( signalAspect_t, signalAspect_da, N )
typedef struct signalData_t {
- extraDataBase_t base;
- coOrd orig;
- ANGLE_T angle;
- char * name;
- wIndex_t numHeads;
- BOOL_T IsHilite;
- wIndex_t numAspects;
- signalAspect_t aspectList;
+ extraDataBase_t base;
+ coOrd orig;
+ ANGLE_T angle;
+ char * name;
+ wIndex_t numHeads;
+ BOOL_T IsHilite;
+ wIndex_t numAspects;
+ signalAspect_t aspectList;
} signalData_t, *signalData_p;
static signalData_p GetsignalData ( track_p trk )
{
- return GET_EXTRA_DATA( trk, T_SIGNAL, signalData_t );
+ return GET_EXTRA_DATA( trk, T_SIGNAL, signalData_t );
}
#define BASEX 6
@@ -115,368 +115,372 @@ static signalData_p GetsignalData ( track_p trk )
#define signal_SF (3.0)
-static void DDrawSignal(drawCmd_p d, coOrd orig, ANGLE_T angle,
- wIndex_t numHeads, DIST_T scaleRatio,
+static void DDrawSignal(drawCmd_p d, coOrd orig, ANGLE_T angle,
+ wIndex_t numHeads, DIST_T scaleRatio,
wDrawColor color )
{
- coOrd p1, p2;
- ANGLE_T x_angle, y_angle;
- DIST_T hoffset;
- wIndex_t ihead;
-
- x_angle = 90-(360-angle);
- if (x_angle < 0) x_angle += 360;
- y_angle = -(360-angle);
- if (y_angle < 0) y_angle += 360;
-
- Translate (&p1, orig, x_angle, (-BASEX) * signal_SF / scaleRatio);
- Translate (&p1, p1, y_angle, BASEY * signal_SF / scaleRatio);
- Translate (&p2, orig, x_angle, BASEX * signal_SF / scaleRatio);
- Translate (&p2, p2, y_angle, BASEY * signal_SF / scaleRatio);
- DrawLine(d, p1, p2, 2, color);
- p1 = orig;
- Translate (&p2, orig, x_angle, MASTX * signal_SF / scaleRatio);
- Translate (&p2, p2, y_angle, MASTY * signal_SF / scaleRatio);
- DrawLine(d, p1, p2, 2, color);
- hoffset = MASTY;
- for (ihead = 0; ihead < numHeads; ihead++) {
- Translate (&p1, orig, x_angle, MASTX * signal_SF / scaleRatio);
- Translate (&p1, p1, y_angle, (hoffset+HEADR) * signal_SF / scaleRatio);
- DrawFillCircle(d,p1,HEADR * signal_SF / scaleRatio,color);
- hoffset += HEADR*2;
- }
+ coOrd p1, p2;
+ ANGLE_T x_angle, y_angle;
+ DIST_T hoffset;
+ wIndex_t ihead;
+
+ x_angle = 90-(360-angle);
+ if (x_angle < 0) { x_angle += 360; }
+ y_angle = -(360-angle);
+ if (y_angle < 0) { y_angle += 360; }
+
+ Translate (&p1, orig, x_angle, (-BASEX) * signal_SF / scaleRatio);
+ Translate (&p1, p1, y_angle, BASEY * signal_SF / scaleRatio);
+ Translate (&p2, orig, x_angle, BASEX * signal_SF / scaleRatio);
+ Translate (&p2, p2, y_angle, BASEY * signal_SF / scaleRatio);
+ DrawLine(d, p1, p2, 2, color);
+ p1 = orig;
+ Translate (&p2, orig, x_angle, MASTX * signal_SF / scaleRatio);
+ Translate (&p2, p2, y_angle, MASTY * signal_SF / scaleRatio);
+ DrawLine(d, p1, p2, 2, color);
+ hoffset = MASTY;
+ for (ihead = 0; ihead < numHeads; ihead++) {
+ Translate (&p1, orig, x_angle, MASTX * signal_SF / scaleRatio);
+ Translate (&p1, p1, y_angle, (hoffset+HEADR) * signal_SF / scaleRatio);
+ DrawFillCircle(d,p1,HEADR * signal_SF / scaleRatio,color);
+ hoffset += HEADR*2;
+ }
}
static void DrawSignal (track_p t, drawCmd_p d, wDrawColor color )
{
- signalData_p xx = GetsignalData(t);
- DDrawSignal(d,xx->orig, xx->angle, xx->numHeads, GetScaleRatio(GetTrkScale(t)),color);
+ signalData_p xx = GetsignalData(t);
+ DDrawSignal(d,xx->orig, xx->angle, xx->numHeads, GetScaleRatio(GetTrkScale(t)),
+ color);
}
-static void SignalBoundingBox (coOrd orig, ANGLE_T angle,wIndex_t numHeads,
+static void SignalBoundingBox (coOrd orig, ANGLE_T angle,wIndex_t numHeads,
DIST_T scaleRatio, coOrd *hi, coOrd *lo)
{
- coOrd p1, p2, headp1, headp2;
- ANGLE_T x_angle, y_angle;
- DIST_T hoffset,delta;
- wIndex_t ihead;
-
- x_angle = 90-(360-angle);
- if (x_angle < 0) x_angle += 360;
- y_angle = -(360-angle);
- if (y_angle < 0) y_angle += 360;
-
- Translate (&p1, orig, x_angle, (-BASEX) * signal_SF / scaleRatio);
- Translate (&p1, p1, y_angle, BASEY * signal_SF / scaleRatio);
- Translate (&p2, orig, x_angle, BASEX * signal_SF / scaleRatio);
- Translate (&p2, p2, y_angle, BASEY * signal_SF / scaleRatio);
- *hi = p1; *lo = p1;
- if (p2.x > hi->x) hi->x = p2.x;
- if (p2.x < lo->x) lo->x = p2.x;
- if (p2.y > hi->y) hi->y = p2.y;
- if (p2.y < lo->y) lo->y = p2.y;
- p1 = orig;
- Translate (&p2, orig, x_angle, MASTX * signal_SF / scaleRatio);
- Translate (&p2, p2, y_angle, MASTY * signal_SF / scaleRatio);
- if (p1.x > hi->x) hi->x = p1.x;
- if (p1.x < lo->x) lo->x = p1.x;
- if (p1.y > hi->y) hi->y = p1.y;
- if (p1.y < lo->y) lo->y = p1.y;
- if (p2.x > hi->x) hi->x = p2.x;
- if (p2.x < lo->x) lo->x = p2.x;
- if (p2.y > hi->y) hi->y = p2.y;
- if (p2.y < lo->y) lo->y = p2.y;
- hoffset = MASTY;
- for (ihead = 0; ihead < numHeads; ihead++) {
- Translate (&p1, orig, x_angle, MASTX * signal_SF / scaleRatio);
- Translate (&p1, p1, y_angle, (hoffset+HEADR) * signal_SF / scaleRatio);
- delta = HEADR * signal_SF / scaleRatio;
- headp1.x = p1.x - delta;
- headp1.y = p1.y - delta;
- headp2.x = p1.x + delta;
- headp2.y = p1.y + delta;
- if (headp1.x > hi->x) hi->x = headp1.x;
- if (headp1.x < lo->x) lo->x = headp1.x;
- if (headp1.y > hi->y) hi->y = headp1.y;
- if (headp1.y < lo->y) lo->y = headp1.y;
- if (headp2.x > hi->x) hi->x = headp2.x;
- if (headp2.x < lo->x) lo->x = headp2.x;
- if (headp2.y > hi->y) hi->y = headp2.y;
- if (headp2.y < lo->y) lo->y = headp2.y;
- hoffset += HEADR*2;
- }
-
+ coOrd p1, p2, headp1, headp2;
+ ANGLE_T x_angle, y_angle;
+ DIST_T hoffset,delta;
+ wIndex_t ihead;
+
+ x_angle = 90-(360-angle);
+ if (x_angle < 0) { x_angle += 360; }
+ y_angle = -(360-angle);
+ if (y_angle < 0) { y_angle += 360; }
+
+ Translate (&p1, orig, x_angle, (-BASEX) * signal_SF / scaleRatio);
+ Translate (&p1, p1, y_angle, BASEY * signal_SF / scaleRatio);
+ Translate (&p2, orig, x_angle, BASEX * signal_SF / scaleRatio);
+ Translate (&p2, p2, y_angle, BASEY * signal_SF / scaleRatio);
+ *hi = p1; *lo = p1;
+ if (p2.x > hi->x) { hi->x = p2.x; }
+ if (p2.x < lo->x) { lo->x = p2.x; }
+ if (p2.y > hi->y) { hi->y = p2.y; }
+ if (p2.y < lo->y) { lo->y = p2.y; }
+ p1 = orig;
+ Translate (&p2, orig, x_angle, MASTX * signal_SF / scaleRatio);
+ Translate (&p2, p2, y_angle, MASTY * signal_SF / scaleRatio);
+ if (p1.x > hi->x) { hi->x = p1.x; }
+ if (p1.x < lo->x) { lo->x = p1.x; }
+ if (p1.y > hi->y) { hi->y = p1.y; }
+ if (p1.y < lo->y) { lo->y = p1.y; }
+ if (p2.x > hi->x) { hi->x = p2.x; }
+ if (p2.x < lo->x) { lo->x = p2.x; }
+ if (p2.y > hi->y) { hi->y = p2.y; }
+ if (p2.y < lo->y) { lo->y = p2.y; }
+ hoffset = MASTY;
+ for (ihead = 0; ihead < numHeads; ihead++) {
+ Translate (&p1, orig, x_angle, MASTX * signal_SF / scaleRatio);
+ Translate (&p1, p1, y_angle, (hoffset+HEADR) * signal_SF / scaleRatio);
+ delta = HEADR * signal_SF / scaleRatio;
+ headp1.x = p1.x - delta;
+ headp1.y = p1.y - delta;
+ headp2.x = p1.x + delta;
+ headp2.y = p1.y + delta;
+ if (headp1.x > hi->x) { hi->x = headp1.x; }
+ if (headp1.x < lo->x) { lo->x = headp1.x; }
+ if (headp1.y > hi->y) { hi->y = headp1.y; }
+ if (headp1.y < lo->y) { lo->y = headp1.y; }
+ if (headp2.x > hi->x) { hi->x = headp2.x; }
+ if (headp2.x < lo->x) { lo->x = headp2.x; }
+ if (headp2.y > hi->y) { hi->y = headp2.y; }
+ if (headp2.y < lo->y) { lo->y = headp2.y; }
+ hoffset += HEADR*2;
+ }
+
}
static void ComputeSignalBoundingBox (track_p t )
{
- coOrd lo, hi;
- signalData_p xx = GetsignalData(t);
- SignalBoundingBox(xx->orig, xx->angle, xx->numHeads,
- GetScaleRatio(GetTrkScale(t)), &hi, &lo);
- SetBoundingBox(t, hi, lo);
+ coOrd lo, hi;
+ signalData_p xx = GetsignalData(t);
+ SignalBoundingBox(xx->orig, xx->angle, xx->numHeads,
+ GetScaleRatio(GetTrkScale(t)), &hi, &lo);
+ SetBoundingBox(t, hi, lo);
}
static DIST_T DistanceSignal (track_p t, coOrd * p )
{
- signalData_p xx = GetsignalData(t);
- return FindDistance(xx->orig, *p);
+ signalData_p xx = GetsignalData(t);
+ return FindDistance(xx->orig, *p);
}
static struct {
- char name[STR_SHORT_SIZE];
- coOrd pos;
- ANGLE_T orient;
- long heads;
+ char name[STR_SHORT_SIZE];
+ coOrd pos;
+ ANGLE_T orient;
+ long heads;
} signalProperties;
typedef enum { NM, PS, OR, HD } signalDesc_e;
static descData_t signalDesc[] = {
- /* NM */ { DESC_STRING, N_("Name"), &signalProperties.name, sizeof(signalProperties.name) },
- /* PS */ { DESC_POS, N_("Position"), &signalProperties.pos },
- /* OR */ { DESC_ANGLE, N_("Angle"), &signalProperties.orient },
- /* HD */ { DESC_LONG, N_("Number Of Heads"), &signalProperties.heads },
- { DESC_NULL } };
+ /* NM */ { DESC_STRING, N_("Name"), &signalProperties.name, sizeof(signalProperties.name) },
+ /* PS */ { DESC_POS, N_("Position"), &signalProperties.pos },
+ /* OR */ { DESC_ANGLE, N_("Angle"), &signalProperties.orient },
+ /* HD */ { DESC_LONG, N_("Number Of Heads"), &signalProperties.heads },
+ { DESC_NULL }
+};
static void UpdateSignalProperties ( track_p trk, int inx, descData_p
descUpd, BOOL_T needUndoStart )
{
- signalData_p xx = GetsignalData( trk );
- const char *thename;
- char *newName;
- BOOL_T changed, nChanged, pChanged, oChanged;
-
- switch (inx) {
- case NM: break;
- case PS: break;
- case OR: break;
- case HD: break;
- case -1:
- changed = nChanged = pChanged = oChanged = FALSE;
- thename = wStringGetValue( (wString_p) signalDesc[NM].control0 );
- if (strcmp(thename,xx->name) != 0) {
- nChanged = changed = TRUE;
- unsigned int max_str = signalDesc[NM].max_string;
+ signalData_p xx = GetsignalData( trk );
+ const char *thename;
+ char *newName;
+ BOOL_T changed, nChanged, pChanged, oChanged;
+
+ switch (inx) {
+ case NM: break;
+ case PS: break;
+ case OR: break;
+ case HD: break;
+ case -1:
+ changed = nChanged = pChanged = oChanged = FALSE;
+ thename = wStringGetValue( (wString_p) signalDesc[NM].control0 );
+ if (strcmp(thename,xx->name) != 0) {
+ nChanged = changed = TRUE;
+ unsigned int max_str = signalDesc[NM].max_string;
if (max_str && strlen(thename)>max_str) {
newName = MyMalloc(max_str);
newName[max_str-1] = '\0';
strncat(newName,thename, max_str-1);
NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str-1);
- } else newName = MyStrdup(thename);
- }
-
- if (signalProperties.pos.x != xx->orig.x ||
- signalProperties.pos.y != xx->orig.y) {
- pChanged = changed = TRUE;
- }
- if (signalProperties.orient != xx->angle) {
- oChanged = changed = TRUE;
- }
- if (!changed) break;
- if (needUndoStart)
- UndoStart( _("Change Signal"), "Change Signal" );
- UndoModify( trk );
- if (nChanged) {
- MyFree(xx->name);
- xx->name = newName;
- }
- if (pChanged || oChanged) {
- UndrawNewTrack( trk );
- }
- if (pChanged) {
- xx->orig = signalProperties.pos;
- }
- if (oChanged) {
- xx->angle = signalProperties.orient;
- }
- if (pChanged || oChanged) {
- ComputeSignalBoundingBox( trk );
- DrawNewTrack( trk );
- }
- break;
- }
-}
-
-
-static void DescribeSignal (track_p trk, char * str, CSIZE_T len )
-{
- signalData_p xx = GetsignalData(trk);
-
- strcpy( str, _(GetTrkTypeName( trk )) );
- str++;
- while (*str) {
- *str = tolower((unsigned char)*str);
- str++;
- }
- sprintf( str, _("(%d [%s]): Layer=%u, %d heads at %0.3f,%0.3f A%0.3f"),
- GetTrkIndex(trk),
- xx->name,GetTrkLayer(trk)+1, xx->numHeads,
- xx->orig.x, xx->orig.y,xx->angle );
- strncpy(signalProperties.name,xx->name,STR_SHORT_SIZE-1);
- signalProperties.name[STR_SHORT_SIZE-1] = '\0';
- signalProperties.pos = xx->orig;
- signalProperties.orient = xx->angle;
- signalProperties.heads = xx->numHeads;
- signalDesc[HD].mode = DESC_RO;
- signalDesc[NM].mode = DESC_NOREDRAW;
- DoDescribe( _("Signal"), trk, signalDesc, UpdateSignalProperties );
+ } else { newName = MyStrdup(thename); }
+ }
+
+ if (signalProperties.pos.x != xx->orig.x ||
+ signalProperties.pos.y != xx->orig.y) {
+ pChanged = changed = TRUE;
+ }
+ if (signalProperties.orient != xx->angle) {
+ oChanged = changed = TRUE;
+ }
+ if (!changed) { break; }
+ if (needUndoStart) {
+ UndoStart( _("Change Signal"), "Change Signal" );
+ }
+ UndoModify( trk );
+ if (nChanged) {
+ MyFree(xx->name);
+ xx->name = newName;
+ }
+ if (pChanged || oChanged) {
+ UndrawNewTrack( trk );
+ }
+ if (pChanged) {
+ xx->orig = signalProperties.pos;
+ }
+ if (oChanged) {
+ xx->angle = signalProperties.orient;
+ }
+ if (pChanged || oChanged) {
+ ComputeSignalBoundingBox( trk );
+ DrawNewTrack( trk );
+ }
+ break;
+ }
+}
+
+
+static void DescribeSignal (track_p trk, char * str, CSIZE_T len )
+{
+ signalData_p xx = GetsignalData(trk);
+
+ strcpy( str, _(GetTrkTypeName( trk )) );
+ str++;
+ while (*str) {
+ *str = tolower((unsigned char)*str);
+ str++;
+ }
+ sprintf( str, _("(%d [%s]): Layer=%u, %d heads at %0.3f,%0.3f A%0.3f"),
+ GetTrkIndex(trk),
+ xx->name,GetTrkLayer(trk)+1, xx->numHeads,
+ xx->orig.x, xx->orig.y,xx->angle );
+ strncpy(signalProperties.name,xx->name,STR_SHORT_SIZE-1);
+ signalProperties.name[STR_SHORT_SIZE-1] = '\0';
+ signalProperties.pos = xx->orig;
+ signalProperties.orient = xx->angle;
+ signalProperties.heads = xx->numHeads;
+ signalDesc[HD].mode = DESC_RO;
+ signalDesc[NM].mode = DESC_NOREDRAW;
+ DoDescribe( _("Signal"), trk, signalDesc, UpdateSignalProperties );
}
static void DeleteSignal ( track_p trk )
{
- wIndex_t ia;
- signalData_p xx = GetsignalData(trk);
- MyFree(xx->name); xx->name = NULL;
- for (ia = 0; ia < xx->numAspects; ia++) {
- MyFree((&(xx->aspectList))[ia].aspectName);
- MyFree((&(xx->aspectList))[ia].aspectScript);
- }
+ wIndex_t ia;
+ signalData_p xx = GetsignalData(trk);
+ MyFree(xx->name); xx->name = NULL;
+ for (ia = 0; ia < xx->numAspects; ia++) {
+ MyFree((&(xx->aspectList))[ia].aspectName);
+ MyFree((&(xx->aspectList))[ia].aspectScript);
+ }
}
static BOOL_T WriteSignal ( track_p t, FILE * f )
{
- BOOL_T rc = TRUE;
- wIndex_t ia;
- signalData_p xx = GetsignalData(t);
+ BOOL_T rc = TRUE;
+ wIndex_t ia;
+ signalData_p xx = GetsignalData(t);
char *signalName = MyStrdup(xx->name);
#ifdef UTFCONVERT
signalName = Convert2UTF8(signalName);
#endif // UTFCONVERT
- rc &= fprintf(f, "SIGNAL %d %u %s %d %0.6f %0.6f %0.6f %d \"%s\"\n",
- GetTrkIndex(t), GetTrkLayer(t), GetTrkScaleName(t),
- GetTrkVisible(t), xx->orig.x, xx->orig.y, xx->angle,
- xx->numHeads, signalName)>0;
- for (ia = 0; ia < xx->numAspects; ia++) {
- rc &= fprintf(f, "\tASPECT \"%s\" \"%s\"\n",
- (&(xx->aspectList))[ia].aspectName,
- (&(xx->aspectList))[ia].aspectScript)>0;
- }
- rc &= fprintf( f, "\t%s\n",END_SIGNAL )>0;
+ rc &= fprintf(f, "SIGNAL %d %u %s %d %0.6f %0.6f %0.6f %d \"%s\"\n",
+ GetTrkIndex(t), GetTrkLayer(t), GetTrkScaleName(t),
+ GetTrkVisible(t), xx->orig.x, xx->orig.y, xx->angle,
+ xx->numHeads, signalName)>0;
+ for (ia = 0; ia < xx->numAspects; ia++) {
+ rc &= fprintf(f, "\tASPECT \"%s\" \"%s\"\n",
+ (&(xx->aspectList))[ia].aspectName,
+ (&(xx->aspectList))[ia].aspectScript)>0;
+ }
+ rc &= fprintf( f, "\t%s\n",END_SIGNAL )>0;
MyFree(signalName);
- return rc;
+ return rc;
}
static BOOL_T ReadSignal ( char * line )
{
- /*TRKINX_T trkindex;*/
- wIndex_t index;
- track_p trk;
- char * cp = NULL;
- wIndex_t ia;
- char *name;
- char *aspname, *aspscript;
- wIndex_t numHeads;
- coOrd orig;
- ANGLE_T angle;
- BOOL_T visible;
- char scale[10];
- wIndex_t layer;
- signalData_p xx;
- if (!GetArgs(line+6,"dLsdpfdq",&index,&layer,scale, &visible, &orig,
- &angle, &numHeads,&name)) {
- return FALSE;
- }
+ /*TRKINX_T trkindex;*/
+ wIndex_t index;
+ track_p trk;
+ char * cp = NULL;
+ wIndex_t ia;
+ char *name;
+ char *aspname, *aspscript;
+ wIndex_t numHeads;
+ coOrd orig;
+ ANGLE_T angle;
+ BOOL_T visible;
+ char scale[10];
+ wIndex_t layer;
+ signalData_p xx;
+ if (!GetArgs(line+6,"dLsdpfdq",&index,&layer,scale, &visible, &orig,
+ &angle, &numHeads,&name)) {
+ return FALSE;
+ }
#ifdef UTFCONVERT
ConvertUTF8ToSystem(name);
#endif // UTFCONVERT
- DYNARR_RESET( signalAspect_p, signalAspect_da );
- while ( (cp = GetNextLine()) != NULL ) {
- if ( IsEND( END_SIGNAL) ) {
- break;
- }
- while (isspace((unsigned char)*cp)) cp++;
- if ( *cp == '\n' || *cp == '#' ) {
- continue;
- }
- if ( strncmp( cp, "ASPECT", 6 ) == 0 ) {
- if (!GetArgs(cp+4,"qq",&aspname,&aspscript)) return FALSE;
- DYNARR_APPEND( signalAspect_p *, signalAspect_da, 10 );
- signalAspect(signalAspect_da.cnt-1).aspectName = aspname;
- signalAspect(signalAspect_da.cnt-1).aspectScript = aspscript;
- }
- }
- trk = NewTrack(index, T_SIGNAL, 0, sizeof(signalData_t)+(sizeof(signalAspect_t)*(signalAspect_da.cnt-1))+1);
- SetTrkVisible(trk, visible);
- SetTrkScale(trk, LookupScale( scale ));
- SetTrkLayer(trk, layer);
- xx = GetsignalData ( trk );
- xx->name = name;
- xx->numHeads = numHeads;
- xx->orig = orig;
- xx->angle = angle;
- xx->numAspects = signalAspect_da.cnt;
- for (ia = 0; ia < xx->numAspects; ia++) {
- (&(xx->aspectList))[ia].aspectName = signalAspect(ia).aspectName;
- (&(xx->aspectList))[ia].aspectScript = signalAspect(ia).aspectScript;
- }
- ComputeSignalBoundingBox(trk);
- return TRUE;
+ DYNARR_RESET( signalAspect_p, signalAspect_da );
+ while ( (cp = GetNextLine()) != NULL ) {
+ if ( IsEND( END_SIGNAL) ) {
+ break;
+ }
+ while (isspace((unsigned char)*cp)) { cp++; }
+ if ( *cp == '\n' || *cp == '#' ) {
+ continue;
+ }
+ if ( strncmp( cp, "ASPECT", 6 ) == 0 ) {
+ if (!GetArgs(cp+4,"qq",&aspname,&aspscript)) { return FALSE; }
+ DYNARR_APPEND( signalAspect_p *, signalAspect_da, 10 );
+ signalAspect(signalAspect_da.cnt-1).aspectName = aspname;
+ signalAspect(signalAspect_da.cnt-1).aspectScript = aspscript;
+ }
+ }
+ trk = NewTrack(index, T_SIGNAL, 0,
+ sizeof(signalData_t)+(sizeof(signalAspect_t)*(signalAspect_da.cnt-1))+1);
+ SetTrkVisible(trk, visible);
+ SetTrkScale(trk, LookupScale( scale ));
+ SetTrkLayer(trk, layer);
+ xx = GetsignalData ( trk );
+ xx->name = name;
+ xx->numHeads = numHeads;
+ xx->orig = orig;
+ xx->angle = angle;
+ xx->numAspects = signalAspect_da.cnt;
+ for (ia = 0; ia < xx->numAspects; ia++) {
+ (&(xx->aspectList))[ia].aspectName = signalAspect(ia).aspectName;
+ (&(xx->aspectList))[ia].aspectScript = signalAspect(ia).aspectScript;
+ }
+ ComputeSignalBoundingBox(trk);
+ return TRUE;
}
static void MoveSignal (track_p trk, coOrd orig )
{
- signalData_p xx = GetsignalData ( trk );
- xx->orig.x += orig.x;
- xx->orig.y += orig.y;
- ComputeSignalBoundingBox(trk);
+ signalData_p xx = GetsignalData ( trk );
+ xx->orig.x += orig.x;
+ xx->orig.y += orig.y;
+ ComputeSignalBoundingBox(trk);
}
-static void RotateSignal (track_p trk, coOrd orig, ANGLE_T angle )
+static void RotateSignal (track_p trk, coOrd orig, ANGLE_T angle )
{
- signalData_p xx = GetsignalData ( trk );
- Rotate(&(xx->orig), orig, angle);
- xx->angle = NormalizeAngle(xx->angle + angle);
- ComputeSignalBoundingBox(trk);
+ signalData_p xx = GetsignalData ( trk );
+ Rotate(&(xx->orig), orig, angle);
+ xx->angle = NormalizeAngle(xx->angle + angle);
+ ComputeSignalBoundingBox(trk);
}
-static void RescaleSignal (track_p trk, FLOAT_T ratio )
+static void RescaleSignal (track_p trk, FLOAT_T ratio )
{
}
static void FlipSignal (track_p trk, coOrd orig, ANGLE_T angle )
{
- signalData_p xx = GetsignalData ( trk );
- FlipPoint(&(xx->orig), orig, angle);
- xx->angle = NormalizeAngle(2*angle - xx->angle);
- ComputeSignalBoundingBox(trk);
+ signalData_p xx = GetsignalData ( trk );
+ FlipPoint(&(xx->orig), orig, angle);
+ xx->angle = NormalizeAngle(2*angle - xx->angle);
+ ComputeSignalBoundingBox(trk);
}
static trackCmd_t signalCmds = {
- "SIGNAL",
- DrawSignal,
- DistanceSignal,
- DescribeSignal,
- DeleteSignal,
- WriteSignal,
- ReadSignal,
- MoveSignal,
- RotateSignal,
- RescaleSignal,
- NULL, /* audit */
- NULL, /* getAngle */
- NULL, /* split */
- NULL, /* traverse */
- NULL, /* enumerate */
- NULL, /* redraw */
- NULL, /* trim */
- NULL, /* merge */
- NULL, /* modify */
- NULL, /* getLength */
- NULL, /* getTrkParams */
- NULL, /* moveEndPt */
- NULL, /* query */
- NULL, /* ungroup */
- FlipSignal, /* flip */
- NULL, /* drawPositionIndicator */
- NULL, /* advancePositionIndicator */
- NULL, /* checkTraverse */
- NULL, /* makeParallel */
- NULL /* drawDesc */
+ "SIGNAL",
+ DrawSignal,
+ DistanceSignal,
+ DescribeSignal,
+ DeleteSignal,
+ WriteSignal,
+ ReadSignal,
+ MoveSignal,
+ RotateSignal,
+ RescaleSignal,
+ NULL, /* audit */
+ NULL, /* getAngle */
+ NULL, /* split */
+ NULL, /* traverse */
+ NULL, /* enumerate */
+ NULL, /* redraw */
+ NULL, /* trim */
+ NULL, /* merge */
+ NULL, /* modify */
+ NULL, /* getLength */
+ NULL, /* getTrkParams */
+ NULL, /* moveEndPt */
+ NULL, /* query */
+ NULL, /* ungroup */
+ FlipSignal, /* flip */
+ NULL, /* drawPositionIndicator */
+ NULL, /* advancePositionIndicator */
+ NULL, /* checkTraverse */
+ NULL, /* makeParallel */
+ NULL /* drawDesc */
};
static BOOL_T signalCreate_P;
@@ -503,24 +507,24 @@ static paramFloatRange_t r_1000_1000 = { -1000.0, 1000.0, 80 };
static paramFloatRange_t r0_360 = { 0.0, 360.0, 80 };
static paramData_t signalEditPLs[] = {
#define I_SIGNALNAME (0)
- /*0*/ { PD_STRING, signalEditName, "name", PDO_NOPREF|PDO_NOTBLANK, I2VP(200), N_("Name"), 0, 0, sizeof(signalEditName)},
+ /*0*/ { PD_STRING, signalEditName, "name", PDO_NOPREF|PDO_NOTBLANK, I2VP(200), N_("Name"), 0, 0, sizeof(signalEditName)},
#define I_ORIGX (1)
- /*1*/ { PD_FLOAT, &signalEditOrig.x, "origx", PDO_DIM, &r_1000_1000, N_("Origin X") },
+ /*1*/ { PD_FLOAT, &signalEditOrig.x, "origx", PDO_DIM, &r_1000_1000, N_("Origin X") },
#define I_ORIGY (2)
- /*2*/ { PD_FLOAT, &signalEditOrig.y, "origy", PDO_DIM, &r_1000_1000, N_("Origin Y") },
+ /*2*/ { PD_FLOAT, &signalEditOrig.y, "origy", PDO_DIM, &r_1000_1000, N_("Origin Y") },
#define I_ANGLE (3)
- /*3*/ { PD_FLOAT, &signalEditAngle, "origa", PDO_ANGLE, &r0_360, N_("Angle") },
+ /*3*/ { PD_FLOAT, &signalEditAngle, "origa", PDO_ANGLE, &r0_360, N_("Angle") },
#define I_SIGNALHEADCOUNT (4)
- /*4*/ { PD_LONG, &signalEditHeadCount, "headCount", PDO_NOPREF, &r1_3, N_("Number of Heads") },
+ /*4*/ { PD_LONG, &signalEditHeadCount, "headCount", PDO_NOPREF, &r1_3, N_("Number of Heads") },
#define I_SIGNALASPECTLIST (5)
#define aspectSelL ((wList_p)signalEditPLs[I_SIGNALASPECTLIST].control)
- /*5*/ { PD_LIST, NULL, "inx", PDO_DLGRESETMARGIN|PDO_DLGRESIZE, &aspectListData, NULL, BL_MANY },
+ /*5*/ { PD_LIST, NULL, "inx", PDO_DLGRESETMARGIN|PDO_DLGRESIZE, &aspectListData, NULL, BL_MANY },
#define I_SIGNALASPECTEDIT (6)
- /*6*/ { PD_BUTTON, AspectEdit, "edit", PDO_DLGCMDBUTTON, NULL, N_("Edit Aspect") },
+ /*6*/ { PD_BUTTON, AspectEdit, "edit", PDO_DLGCMDBUTTON, NULL, N_("Edit Aspect") },
#define I_SIGNALASPECTADD (7)
- /*7*/ { PD_BUTTON, AspectAdd, "add", PDO_DLGCMDBUTTON, NULL, N_("Add Aspect") },
+ /*7*/ { PD_BUTTON, AspectAdd, "add", PDO_DLGCMDBUTTON, NULL, N_("Add Aspect") },
#define I_SIGNALASPECTDELETE (8)
- /*8*/ { PD_BUTTON, AspectDelete, "delete", 0, NULL, N_("Delete Aspect") },
+ /*8*/ { PD_BUTTON, AspectDelete, "delete", 0, NULL, N_("Delete Aspect") },
};
static paramGroup_t signalEditPG = { "signalEdit", 0, signalEditPLs, COUNT( signalEditPLs ) };
static wWin_p signalEditW;
@@ -529,11 +533,11 @@ static paramIntegerRange_t rm1_999999 = { -1, 999999 };
static paramData_t aspectEditPLs[] = {
#define I_ASPECTNAME (0)
- /*0*/ { PD_STRING, signalAspectEditName, "name", PDO_NOPREF|PDO_NOTBLANK, I2VP(200), N_("Name"), 0, 0, sizeof(signalAspectEditName)},
+ /*0*/ { PD_STRING, signalAspectEditName, "name", PDO_NOPREF|PDO_NOTBLANK, I2VP(200), N_("Name"), 0, 0, sizeof(signalAspectEditName)},
#define I_ASPECTSCRIPT (1)
- /*1*/ { PD_STRING, signalAspectEditScript, "script", PDO_NOPREF, I2VP(350), N_("Script"), 0, 0, sizeof(signalAspectEditScript)},
+ /*1*/ { PD_STRING, signalAspectEditScript, "script", PDO_NOPREF, I2VP(350), N_("Script"), 0, 0, sizeof(signalAspectEditScript)},
#define I_ASPECTINDEX (2)
- /*2*/ { PD_LONG, &signalAspectEditIndex, "index", PDO_NOPREF, &rm1_999999, N_("Aspect Index"), BO_READONLY },
+ /*2*/ { PD_LONG, &signalAspectEditIndex, "index", PDO_NOPREF, &rm1_999999, N_("Aspect Index"), BO_READONLY },
};
static paramGroup_t aspectEditPG = { "aspectEdit", 0, aspectEditPLs, COUNT( aspectEditPLs ) };
@@ -542,224 +546,239 @@ static wWin_p aspectEditW;
static void SignalEditOk ( void * junk )
{
- track_p trk;
- signalData_p xx;
- wIndex_t ia;
- CSIZE_T newsize;
-
- if (signalCreate_P) {
- UndoStart( _("Create Signal"), "Create Signal");
- trk = NewTrack(0, T_SIGNAL, 0, sizeof(signalData_t)+(sizeof(signalAspect_t)*(signalAspect_da.cnt-1))+1);
- xx = GetsignalData(trk);
- } else {
- UndoStart( _("Modify Signal"), "Modify Signal");
- trk = signalEditTrack;
- xx = GetsignalData(trk);
- if (xx->numAspects != signalAspect_da.cnt) {
- /* We need to reallocate the extra data. */
- for (ia = 0; ia < xx->numAspects; ia++) {
- MyFree((&(xx->aspectList))[ia].aspectName);
- MyFree((&(xx->aspectList))[ia].aspectScript);
- (&(xx->aspectList))[ia].aspectName = NULL;
- (&(xx->aspectList))[ia].aspectScript = NULL;
- }
- newsize = sizeof(signalData_t)+(sizeof(signalAspect_t)*(signalAspect_da.cnt-1))+1;
- trk->extraData = MyRealloc(trk->extraData,newsize);
- trk->extraSize = newsize;
- xx = GetsignalData(trk);
- }
- }
- xx->orig = signalEditOrig;
- xx->angle = signalEditAngle;
- xx->numHeads = signalEditHeadCount;
- if ( xx->name == NULL || strncmp (xx->name, signalEditName, STR_SHORT_SIZE) != 0) {
- MyFree(xx->name);
- xx->name = MyStrdup(signalEditName);
- }
- xx->numAspects = signalAspect_da.cnt;
- for (ia = 0; ia < xx->numAspects; ia++) {
- if ((&(xx->aspectList))[ia].aspectName == NULL) {
- (&(xx->aspectList))[ia].aspectName = signalAspect(ia).aspectName;
- } else if (strcmp((&(xx->aspectList))[ia].aspectName,signalAspect(ia).aspectName) != 0) {
- MyFree((&(xx->aspectList))[ia].aspectName);
- (&(xx->aspectList))[ia].aspectName = signalAspect(ia).aspectName;
- } else {
- MyFree(signalAspect(ia).aspectName);
- }
- if ((&(xx->aspectList))[ia].aspectScript == NULL) {
- (&(xx->aspectList))[ia].aspectScript = signalAspect(ia).aspectScript;
- } else if (strcmp((&(xx->aspectList))[ia].aspectScript,signalAspect(ia).aspectScript) != 0) {
- MyFree((&(xx->aspectList))[ia].aspectScript);
- (&(xx->aspectList))[ia].aspectScript = signalAspect(ia).aspectScript;
- } else {
- MyFree(signalAspect(ia).aspectScript);
- }
- }
- UndoEnd();
- DoRedraw();
- ComputeSignalBoundingBox(trk);
- wHide( signalEditW );
+ track_p trk;
+ signalData_p xx;
+ wIndex_t ia;
+ CSIZE_T newsize;
+
+ if (signalCreate_P) {
+ UndoStart( _("Create Signal"), "Create Signal");
+ trk = NewTrack(0, T_SIGNAL, 0,
+ sizeof(signalData_t)+(sizeof(signalAspect_t)*(signalAspect_da.cnt-1))+1);
+ xx = GetsignalData(trk);
+ } else {
+ UndoStart( _("Modify Signal"), "Modify Signal");
+ trk = signalEditTrack;
+ xx = GetsignalData(trk);
+ if (xx->numAspects != signalAspect_da.cnt) {
+ /* We need to reallocate the extra data. */
+ for (ia = 0; ia < xx->numAspects; ia++) {
+ MyFree((&(xx->aspectList))[ia].aspectName);
+ MyFree((&(xx->aspectList))[ia].aspectScript);
+ (&(xx->aspectList))[ia].aspectName = NULL;
+ (&(xx->aspectList))[ia].aspectScript = NULL;
+ }
+ newsize = sizeof(signalData_t)+(sizeof(signalAspect_t)*(signalAspect_da.cnt-1))
+ +1;
+ ResizeExtraData( trk, newsize );
+ xx = GetsignalData(trk);
+ }
+ }
+ xx->orig = signalEditOrig;
+ xx->angle = signalEditAngle;
+ xx->numHeads = signalEditHeadCount;
+ if ( xx->name == NULL
+ || strncmp (xx->name, signalEditName, STR_SHORT_SIZE) != 0) {
+ MyFree(xx->name);
+ xx->name = MyStrdup(signalEditName);
+ }
+ xx->numAspects = signalAspect_da.cnt;
+ for (ia = 0; ia < xx->numAspects; ia++) {
+ if ((&(xx->aspectList))[ia].aspectName == NULL) {
+ (&(xx->aspectList))[ia].aspectName = signalAspect(ia).aspectName;
+ } else if (strcmp((&(xx->aspectList))[ia].aspectName,
+ signalAspect(ia).aspectName) != 0) {
+ MyFree((&(xx->aspectList))[ia].aspectName);
+ (&(xx->aspectList))[ia].aspectName = signalAspect(ia).aspectName;
+ } else {
+ MyFree(signalAspect(ia).aspectName);
+ }
+ if ((&(xx->aspectList))[ia].aspectScript == NULL) {
+ (&(xx->aspectList))[ia].aspectScript = signalAspect(ia).aspectScript;
+ } else if (strcmp((&(xx->aspectList))[ia].aspectScript,
+ signalAspect(ia).aspectScript) != 0) {
+ MyFree((&(xx->aspectList))[ia].aspectScript);
+ (&(xx->aspectList))[ia].aspectScript = signalAspect(ia).aspectScript;
+ } else {
+ MyFree(signalAspect(ia).aspectScript);
+ }
+ }
+ UndoEnd();
+ DoRedraw();
+ ComputeSignalBoundingBox(trk);
+ wHide( signalEditW );
}
static void SignalEditCancel ( wWin_p junk )
{
- wIndex_t ia;
+ wIndex_t ia;
- for (ia = 0; ia < signalAspect_da.cnt; ia++) {
- MyFree(signalAspect(ia).aspectName);
- MyFree(signalAspect(ia).aspectScript);
- }
- DYNARR_RESET( signalAspect_p, signalAspect_da );
- wHide( signalEditW );
+ for (ia = 0; ia < signalAspect_da.cnt; ia++) {
+ MyFree(signalAspect(ia).aspectName);
+ MyFree(signalAspect(ia).aspectScript);
+ }
+ DYNARR_RESET( signalAspect_p, signalAspect_da );
+ wHide( signalEditW );
}
static void SignalEditDlgUpdate (paramGroup_p pg, int inx, void *valueP )
{
- wIndex_t selcnt = wListGetSelectedCount( aspectSelL );
-
- if ( inx != I_SIGNALASPECTLIST ) return;
- ParamControlActive( &signalEditPG, I_SIGNALASPECTEDIT, selcnt>0 );
- ParamControlActive( &signalEditPG, I_SIGNALASPECTADD, TRUE );
- ParamControlActive( &signalEditPG, I_SIGNALASPECTDELETE, selcnt>0 );
+ wIndex_t selcnt = wListGetSelectedCount( aspectSelL );
+
+ if ( inx != I_SIGNALASPECTLIST ) { return; }
+ ParamControlActive( &signalEditPG, I_SIGNALASPECTEDIT, selcnt>0 );
+ ParamControlActive( &signalEditPG, I_SIGNALASPECTADD, TRUE );
+ ParamControlActive( &signalEditPG, I_SIGNALASPECTDELETE, selcnt>0 );
}
static void aspectEditOK ( void * junk )
{
- if (signalAspectEditIndex < 0) {
- DYNARR_APPEND( signalAspect_p *, signalAspect_da, 10 );
- signalAspect(signalAspect_da.cnt-1).aspectName = MyStrdup(signalAspectEditName);
- signalAspect(signalAspect_da.cnt-1).aspectScript = MyStrdup(signalAspectEditScript);
- snprintf(message,sizeof(message),"%s\t%s",signalAspectEditName,signalAspectEditScript);
- wListAddValue( aspectSelL, message, NULL, NULL );
- } else {
- if ( strncmp( signalAspectEditName, signalAspect(signalAspectEditIndex).aspectName,STR_SHORT_SIZE ) != 0 ) {
- MyFree(signalAspect(signalAspectEditIndex).aspectName);
- signalAspect(signalAspectEditIndex).aspectName = MyStrdup(signalAspectEditName);
- }
- if ( strncmp( signalAspectEditScript, signalAspect(signalAspectEditIndex).aspectScript, STR_LONG_SIZE ) != 0 ) {
- MyFree(signalAspect(signalAspectEditIndex).aspectScript);
- signalAspect(signalAspectEditIndex).aspectScript = MyStrdup(signalAspectEditScript);
- }
- snprintf(message,sizeof(message),"%s\t%s",signalAspect(signalAspectEditIndex).aspectName,signalAspect(signalAspectEditIndex).aspectScript);
- wListSetValues( aspectSelL, signalAspectEditIndex, message, NULL, NULL );
- }
- wHide( aspectEditW );
+ if (signalAspectEditIndex < 0) {
+ DYNARR_APPEND( signalAspect_p *, signalAspect_da, 10 );
+ signalAspect(signalAspect_da.cnt-1).aspectName = MyStrdup(signalAspectEditName);
+ signalAspect(signalAspect_da.cnt-1).aspectScript = MyStrdup(
+ signalAspectEditScript);
+ snprintf(message,sizeof(message),"%s\t%s",signalAspectEditName,
+ signalAspectEditScript);
+ wListAddValue( aspectSelL, message, NULL, NULL );
+ } else {
+ if ( strncmp( signalAspectEditName,
+ signalAspect(signalAspectEditIndex).aspectName,STR_SHORT_SIZE ) != 0 ) {
+ MyFree(signalAspect(signalAspectEditIndex).aspectName);
+ signalAspect(signalAspectEditIndex).aspectName = MyStrdup(signalAspectEditName);
+ }
+ if ( strncmp( signalAspectEditScript,
+ signalAspect(signalAspectEditIndex).aspectScript, STR_LONG_SIZE ) != 0 ) {
+ MyFree(signalAspect(signalAspectEditIndex).aspectScript);
+ signalAspect(signalAspectEditIndex).aspectScript = MyStrdup(
+ signalAspectEditScript);
+ }
+ snprintf(message,sizeof(message),"%s\t%s",
+ signalAspect(signalAspectEditIndex).aspectName,
+ signalAspect(signalAspectEditIndex).aspectScript);
+ wListSetValues( aspectSelL, signalAspectEditIndex, message, NULL, NULL );
+ }
+ wHide( aspectEditW );
}
static void EditAspectDialog ( wIndex_t inx )
{
- if (inx < 0) {
- signalAspectEditName[0] = '\0';
- signalAspectEditScript[0] = '\0';
- } else {
- strncpy(signalAspectEditName,signalAspect(inx).aspectName,STR_SHORT_SIZE);
- strncpy(signalAspectEditScript,signalAspect(inx).aspectScript,STR_LONG_SIZE);
- }
- signalAspectEditIndex = inx;
- if ( !aspectEditW ) {
- ParamRegister( &aspectEditPG );
- aspectEditW = ParamCreateDialog (&aspectEditPG,
- MakeWindowTitle(_("Edit aspect")),
- _("Ok"), aspectEditOK,
- wHide, TRUE, NULL,F_BLOCK,NULL);
- }
- ParamLoadControls( &aspectEditPG );
- wShow( aspectEditW );
+ if (inx < 0) {
+ signalAspectEditName[0] = '\0';
+ signalAspectEditScript[0] = '\0';
+ } else {
+ strncpy(signalAspectEditName,signalAspect(inx).aspectName,STR_SHORT_SIZE);
+ strncpy(signalAspectEditScript,signalAspect(inx).aspectScript,STR_LONG_SIZE);
+ }
+ signalAspectEditIndex = inx;
+ if ( !aspectEditW ) {
+ ParamRegister( &aspectEditPG );
+ aspectEditW = ParamCreateDialog (&aspectEditPG,
+ MakeWindowTitle(_("Edit aspect")),
+ _("Ok"), aspectEditOK,
+ wHide, TRUE, NULL,F_BLOCK,NULL);
+ }
+ ParamLoadControls( &aspectEditPG );
+ wShow( aspectEditW );
}
static void AspectEdit( void * action )
{
- wIndex_t selcnt = wListGetSelectedCount( aspectSelL );
- wIndex_t inx, cnt;
-
- if ( selcnt != 1) return;
- cnt = wListGetCount( aspectSelL );
- for ( inx=0;
- inx<cnt && wListGetItemSelected( aspectSelL, inx ) != TRUE;
- inx++ );
- if ( inx >= cnt ) return;
- EditAspectDialog(inx);
+ wIndex_t selcnt = wListGetSelectedCount( aspectSelL );
+ wIndex_t inx, cnt;
+
+ if ( selcnt != 1) { return; }
+ cnt = wListGetCount( aspectSelL );
+ for ( inx=0;
+ inx<cnt && wListGetItemSelected( aspectSelL, inx ) != TRUE;
+ inx++ );
+ if ( inx >= cnt ) { return; }
+ EditAspectDialog(inx);
}
static void AspectAdd( void * action )
{
- EditAspectDialog(-1);
+ EditAspectDialog(-1);
}
static void MoveAspectUp (wIndex_t inx)
{
- wIndex_t cnt = signalAspect_da.cnt;
- wIndex_t ia;
-
- MyFree(signalAspect(inx).aspectName);
- MyFree(signalAspect(inx).aspectScript);
- for (ia = inx+1; ia < cnt; ia++) {
- signalAspect(ia-1).aspectName = signalAspect(ia).aspectName;
- signalAspect(ia-1).aspectScript = signalAspect(ia).aspectScript;
- }
- DYNARR_SET(signalAspect_t,signalAspect_da,cnt-1);
+ wIndex_t cnt = signalAspect_da.cnt;
+ wIndex_t ia;
+
+ MyFree(signalAspect(inx).aspectName);
+ MyFree(signalAspect(inx).aspectScript);
+ for (ia = inx+1; ia < cnt; ia++) {
+ signalAspect(ia-1).aspectName = signalAspect(ia).aspectName;
+ signalAspect(ia-1).aspectScript = signalAspect(ia).aspectScript;
+ }
+ DYNARR_SET(signalAspect_t,signalAspect_da,cnt-1);
}
static void AspectDelete( void * action )
{
- wIndex_t selcnt = wListGetSelectedCount( aspectSelL );
- wIndex_t inx, cnt;
-
- if ( selcnt <= 0) return;
- if ( (!NoticeMessage2( 1, _("Are you sure you want to delete the %d aspect(s)"), _("Yes"), _("No"), selcnt ) ) )
- return;
- cnt = wListGetCount( aspectSelL );
- for ( inx=0; inx<cnt; inx++ ) {
- if ( !wListGetItemSelected( aspectSelL, inx ) ) continue;
- wListDelete( aspectSelL, inx );
- MoveAspectUp(inx);
- inx--;
- cnt--;
- }
- DoChangeNotification( CHANGE_PARAMS );
+ wIndex_t selcnt = wListGetSelectedCount( aspectSelL );
+ wIndex_t inx, cnt;
+
+ if ( selcnt <= 0) { return; }
+ if ( (!NoticeMessage2( 1, _("Are you sure you want to delete the %d aspect(s)"),
+ _("Yes"), _("No"), selcnt ) ) ) {
+ return;
+ }
+ cnt = wListGetCount( aspectSelL );
+ for ( inx=0; inx<cnt; inx++ ) {
+ if ( !wListGetItemSelected( aspectSelL, inx ) ) { continue; }
+ wListDelete( aspectSelL, inx );
+ MoveAspectUp(inx);
+ inx--;
+ cnt--;
+ }
+ DoChangeNotification( CHANGE_PARAMS );
}
static void EditSignalDialog()
{
- signalData_p xx;
- wIndex_t ia;
-
- if ( !signalEditW ) {
- ParamRegister( &signalEditPG );
- signalEditW = ParamCreateDialog (&signalEditPG,
- MakeWindowTitle(_("Edit signal")),
- _("Ok"), SignalEditOk,
- SignalEditCancel, TRUE, NULL,
- F_RESIZE|F_RECALLSIZE|F_BLOCK,
- SignalEditDlgUpdate );
- }
- if (signalCreate_P) {
- signalEditName[0] = '\0';
- signalEditHeadCount = 1;
- wListClear( aspectSelL );
- DYNARR_RESET( signalAspect_p, signalAspect_da );
- } else {
- xx = GetsignalData ( signalEditTrack );
- strncpy(signalEditName,xx->name,STR_SHORT_SIZE);
- signalEditHeadCount = xx->numHeads;
- signalEditOrig = xx->orig;
- signalEditAngle = xx->angle;
- wListClear( aspectSelL );
- DYNARR_RESET( signalAspect_p, signalAspect_da );
- for (ia = 0; ia < xx->numAspects; ia++) {
- snprintf(message,sizeof(message),"%s\t%s",(&(xx->aspectList))[ia].aspectName,
- (&(xx->aspectList))[ia].aspectScript);
- wListAddValue( aspectSelL, message, NULL, NULL );
- DYNARR_APPEND( signalAspect_p *, signalAspect_da, 10 );
- signalAspect(signalAspect_da.cnt-1).aspectName = MyStrdup((&(xx->aspectList))[ia].aspectName);
- signalAspect(signalAspect_da.cnt-1).aspectScript = MyStrdup((&(xx->aspectList))[ia].aspectScript);
- }
- }
- ParamLoadControls( &signalEditPG );
- ParamControlActive( &signalEditPG, I_SIGNALASPECTEDIT, FALSE );
- ParamControlActive( &signalEditPG, I_SIGNALASPECTADD, TRUE );
- ParamControlActive( &signalEditPG, I_SIGNALASPECTDELETE, FALSE );
- wShow( signalEditW );
+ signalData_p xx;
+ wIndex_t ia;
+
+ if ( !signalEditW ) {
+ ParamRegister( &signalEditPG );
+ signalEditW = ParamCreateDialog (&signalEditPG,
+ MakeWindowTitle(_("Edit signal")),
+ _("Ok"), SignalEditOk,
+ SignalEditCancel, TRUE, NULL,
+ F_RESIZE|F_RECALLSIZE|F_BLOCK,
+ SignalEditDlgUpdate );
+ }
+ if (signalCreate_P) {
+ signalEditName[0] = '\0';
+ signalEditHeadCount = 1;
+ wListClear( aspectSelL );
+ DYNARR_RESET( signalAspect_p, signalAspect_da );
+ } else {
+ xx = GetsignalData ( signalEditTrack );
+ strncpy(signalEditName,xx->name,STR_SHORT_SIZE);
+ signalEditHeadCount = xx->numHeads;
+ signalEditOrig = xx->orig;
+ signalEditAngle = xx->angle;
+ wListClear( aspectSelL );
+ DYNARR_RESET( signalAspect_p, signalAspect_da );
+ for (ia = 0; ia < xx->numAspects; ia++) {
+ snprintf(message,sizeof(message),"%s\t%s",(&(xx->aspectList))[ia].aspectName,
+ (&(xx->aspectList))[ia].aspectScript);
+ wListAddValue( aspectSelL, message, NULL, NULL );
+ DYNARR_APPEND( signalAspect_p *, signalAspect_da, 10 );
+ signalAspect(signalAspect_da.cnt-1).aspectName = MyStrdup((&
+ (xx->aspectList))[ia].aspectName);
+ signalAspect(signalAspect_da.cnt-1).aspectScript = MyStrdup((&
+ (xx->aspectList))[ia].aspectScript);
+ }
+ }
+ ParamLoadControls( &signalEditPG );
+ ParamControlActive( &signalEditPG, I_SIGNALASPECTEDIT, FALSE );
+ ParamControlActive( &signalEditPG, I_SIGNALASPECTADD, TRUE );
+ ParamControlActive( &signalEditPG, I_SIGNALASPECTDELETE, FALSE );
+ wShow( signalEditW );
}
@@ -767,17 +786,17 @@ static void EditSignalDialog()
static void EditSignal (track_p trk)
{
- signalCreate_P = FALSE;
- signalEditTrack = trk;
- EditSignalDialog();
+ signalCreate_P = FALSE;
+ signalEditTrack = trk;
+ EditSignalDialog();
}
static void CreateNewSignal (coOrd orig, ANGLE_T angle)
{
- signalCreate_P = TRUE;
- signalEditOrig = orig;
- signalEditAngle = angle;
- EditSignalDialog();
+ signalCreate_P = TRUE;
+ signalEditOrig = orig;
+ signalEditAngle = angle;
+ EditSignalDialog();
}
static coOrd pos0;
@@ -785,39 +804,41 @@ static ANGLE_T orient;
static STATUS_T CmdSignal ( wAction_t action, coOrd pos )
{
-
- static BOOL_T create;
- switch (action) {
- case C_START:
- InfoMessage(_("Place base of signal"));
- create = FALSE;
- SetAllTrackSelect( FALSE );
- return C_CONTINUE;
- case C_DOWN:
- SnapPos(&pos);
- pos0 = pos;
- create = TRUE;
- InfoMessage(_("Drag to orient signal"));
- return C_CONTINUE;
- case C_MOVE:
- SnapPos(&pos);
- orient = FindAngle(pos0,pos);
- return C_CONTINUE;
- case C_UP:
- SnapPos(&pos);
- orient = FindAngle(pos0,pos);
- CreateNewSignal(pos0,orient);
- return C_TERMINATE;
- case C_REDRAW:
- if (create)
- DDrawSignal( &tempD, pos0, orient, 1, GetScaleRatio(GetLayoutCurScale()), wDrawColorBlack );
- return C_CONTINUE;
- case C_CANCEL:
- create = FALSE;
- return C_CONTINUE;
- default:
- return C_CONTINUE;
- }
+
+ static BOOL_T create;
+ switch (action) {
+ case C_START:
+ InfoMessage(_("Place base of signal"));
+ create = FALSE;
+ SetAllTrackSelect( FALSE );
+ return C_CONTINUE;
+ case C_DOWN:
+ SnapPos(&pos);
+ pos0 = pos;
+ create = TRUE;
+ InfoMessage(_("Drag to orient signal"));
+ return C_CONTINUE;
+ case C_MOVE:
+ SnapPos(&pos);
+ orient = FindAngle(pos0,pos);
+ return C_CONTINUE;
+ case C_UP:
+ SnapPos(&pos);
+ orient = FindAngle(pos0,pos);
+ CreateNewSignal(pos0,orient);
+ return C_TERMINATE;
+ case C_REDRAW:
+ if (create) {
+ DDrawSignal( &tempD, pos0, orient, 1, GetScaleRatio(GetLayoutCurScale()),
+ wDrawColorBlack );
+ }
+ return C_CONTINUE;
+ case C_CANCEL:
+ create = FALSE;
+ return C_CONTINUE;
+ default:
+ return C_CONTINUE;
+ }
}
static coOrd sighiliteOrig, sighiliteSize;
@@ -825,92 +846,95 @@ static POS_T sighiliteBorder;
static wDrawColor sighiliteColor = 0;
static void DrawSignalTrackHilite( void )
{
- if (sighiliteColor==0)
+ if (sighiliteColor==0) {
sighiliteColor = wDrawColorGray(87);
- DrawRectangle( &tempD, sighiliteOrig, sighiliteSize, sighiliteColor, DRAW_TRANSPARENT );
+ }
+ DrawRectangle( &tempD, sighiliteOrig, sighiliteSize, sighiliteColor,
+ DRAW_TRANSPARENT );
}
static int SignalMgmProc ( int cmd, void * data )
{
- track_p trk = (track_p) data;
- signalData_p xx = GetsignalData(trk);
- /*char msg[STR_SIZE];*/
-
- switch ( cmd ) {
- case CONTMGM_CAN_EDIT:
- return TRUE;
- break;
- case CONTMGM_DO_EDIT:
- EditSignal(trk);
- return TRUE;
- break;
- case CONTMGM_CAN_DELETE:
- return TRUE;
- break;
- case CONTMGM_DO_DELETE:
- DeleteTrack(trk, FALSE);
- return TRUE;
- break;
- case CONTMGM_DO_HILIGHT:
- if (!xx->IsHilite) {
- sighiliteBorder = mainD.scale*0.1;
- if ( sighiliteBorder < trackGauge ) sighiliteBorder = trackGauge;
- GetBoundingBox( trk, &sighiliteSize, &sighiliteOrig );
- sighiliteOrig.x -= sighiliteBorder;
- sighiliteOrig.y -= sighiliteBorder;
- sighiliteSize.x -= sighiliteOrig.x-sighiliteBorder;
- sighiliteSize.y -= sighiliteOrig.y-sighiliteBorder;
- DrawSignalTrackHilite();
- xx->IsHilite = TRUE;
- }
- break;
- case CONTMGM_UN_HILIGHT:
- if (xx->IsHilite) {
- sighiliteBorder = mainD.scale*0.1;
- if ( sighiliteBorder < trackGauge ) sighiliteBorder = trackGauge;
- GetBoundingBox( trk, &sighiliteSize, &sighiliteOrig );
- sighiliteOrig.x -= sighiliteBorder;
- sighiliteOrig.y -= sighiliteBorder;
- sighiliteSize.x -= sighiliteOrig.x-sighiliteBorder;
- sighiliteSize.y -= sighiliteOrig.y-sighiliteBorder;
- DrawSignalTrackHilite();
- xx->IsHilite = FALSE;
- }
- break;
- case CONTMGM_GET_TITLE:
- sprintf(message,"\t%s\t",xx->name);
- break;
- }
- return FALSE;
-}
-
-#include "bitmaps/signal.xpm"
+ track_p trk = (track_p) data;
+ signalData_p xx = GetsignalData(trk);
+ /*char msg[STR_SIZE];*/
+
+ switch ( cmd ) {
+ case CONTMGM_CAN_EDIT:
+ return TRUE;
+ break;
+ case CONTMGM_DO_EDIT:
+ EditSignal(trk);
+ return TRUE;
+ break;
+ case CONTMGM_CAN_DELETE:
+ return TRUE;
+ break;
+ case CONTMGM_DO_DELETE:
+ DeleteTrack(trk, FALSE);
+ return TRUE;
+ break;
+ case CONTMGM_DO_HILIGHT:
+ if (!xx->IsHilite) {
+ sighiliteBorder = mainD.scale*0.1;
+ if ( sighiliteBorder < trackGauge ) { sighiliteBorder = trackGauge; }
+ GetBoundingBox( trk, &sighiliteSize, &sighiliteOrig );
+ sighiliteOrig.x -= sighiliteBorder;
+ sighiliteOrig.y -= sighiliteBorder;
+ sighiliteSize.x -= sighiliteOrig.x-sighiliteBorder;
+ sighiliteSize.y -= sighiliteOrig.y-sighiliteBorder;
+ DrawSignalTrackHilite();
+ xx->IsHilite = TRUE;
+ }
+ break;
+ case CONTMGM_UN_HILIGHT:
+ if (xx->IsHilite) {
+ sighiliteBorder = mainD.scale*0.1;
+ if ( sighiliteBorder < trackGauge ) { sighiliteBorder = trackGauge; }
+ GetBoundingBox( trk, &sighiliteSize, &sighiliteOrig );
+ sighiliteOrig.x -= sighiliteBorder;
+ sighiliteOrig.y -= sighiliteBorder;
+ sighiliteSize.x -= sighiliteOrig.x-sighiliteBorder;
+ sighiliteSize.y -= sighiliteOrig.y-sighiliteBorder;
+ DrawSignalTrackHilite();
+ xx->IsHilite = FALSE;
+ }
+ break;
+ case CONTMGM_GET_TITLE:
+ sprintf(message,"\t%s\t",xx->name);
+ break;
+ }
+ return FALSE;
+}
+
+#include "bitmaps/signal.xpm3"
EXPORT void SignalMgmLoad ( void )
{
- track_p trk;
- static wIcon_p signalI = NULL;
-
- if (signalI == NULL) {
- signalI = wIconCreatePixMap( signal_xpm[iconSize] );
- }
-
- TRK_ITERATE(trk) {
- if (GetTrkType(trk) != T_SIGNAL) continue;
- ContMgmLoad (signalI, SignalMgmProc, trk );
- }
+ track_p trk;
+ static wIcon_p signalI = NULL;
+
+ if (signalI == NULL) {
+ signalI = wIconCreatePixMap( signal_xpm3[iconSize] );
+ }
+
+ TRK_ITERATE(trk) {
+ if (GetTrkType(trk) != T_SIGNAL) { continue; }
+ ContMgmLoad (signalI, SignalMgmProc, trk );
+ }
}
#define ACCL_SIGNAL 0
EXPORT void InitCmdSignal ( wMenu_p menu )
{
- AddMenuButton( menu, CmdSignal, "cmdSignal", _("Signal"),
- wIconCreatePixMap( signal_xpm[iconSize] ), LEVEL0_50, IC_STICKY|IC_POPUP2, ACCL_SIGNAL, NULL );
+ AddMenuButton( menu, CmdSignal, "cmdSignal", _("Signal"),
+ wIconCreatePixMap( signal_xpm3[iconSize] ), LEVEL0_50, IC_STICKY|IC_POPUP2,
+ ACCL_SIGNAL, NULL );
}
EXPORT void InitTrkSignal ( void )
{
- T_SIGNAL = InitObject ( &signalCmds );
- log_signal = LogFindIndex ( "signal" );
+ T_SIGNAL = InitObject ( &signalCmds );
+ log_signal = LogFindIndex ( "signal" );
}
diff --git a/app/bin/csnap.c b/app/bin/csnap.c
index 5c437fa..baf6998 100644
--- a/app/bin/csnap.c
+++ b/app/bin/csnap.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 "custom.h"
@@ -31,11 +31,11 @@ int log_timedrawgrid = 0;
/*****************************************************************************
*
-
+
*
*/
-EXPORT long minGridSpacing = 3;
+EXPORT long minGridSpacing = 5;
#define CROSSTICK
#ifdef CROSSTICK
@@ -46,17 +46,17 @@ static wDrawBitMap_p cross0_bm;
#define DEFAULTGRIDSPACING (1.0)
EXPORT void MapGrid(
- coOrd orig,
- coOrd size,
- ANGLE_T angle,
- coOrd gridOrig,
- ANGLE_T gridAngle,
- POS_T Xspacing,
- POS_T Yspacing,
- int * x0,
- int * x1,
- int * y0,
- int * y1 )
+ coOrd orig,
+ coOrd size,
+ ANGLE_T angle,
+ coOrd gridOrig,
+ ANGLE_T gridAngle,
+ POS_T Xspacing,
+ POS_T Yspacing,
+ int * x0,
+ int * x1,
+ int * y0,
+ int * y1 )
{
coOrd p[4], hi, lo;
int i;
@@ -76,14 +76,18 @@ EXPORT void MapGrid(
}
hi = lo = p[0];
for (i=1; i<4; i++) {
- if (hi.x < p[i].x)
+ if (hi.x < p[i].x) {
hi.x = p[i].x;
- if (hi.y < p[i].y)
+ }
+ if (hi.y < p[i].y) {
hi.y = p[i].y;
- if (lo.x > p[i].x)
+ }
+ if (lo.x > p[i].x) {
lo.x = p[i].x;
- if (lo.y > p[i].y)
+ }
+ if (lo.y > p[i].y) {
lo.y = p[i].y;
+ }
}
*x0 = (int)floor( lo.x / Xspacing );
*y0 = (int)floor( lo.y / Yspacing );
@@ -95,15 +99,16 @@ EXPORT void MapGrid(
static DIST_T Gdx, Gdy, Ddx, Ddy;
static coOrd GDorig;
static wDrawPix_t lborder, bborder;
+int nDrawGridPoints = 0;
void static DrawGridPoint(
- drawCmd_p D,
- wDrawColor Color,
- coOrd orig,
- coOrd * size,
- DIST_T dpi,
- coOrd p0,
- BOOL_T bigdot )
+ drawCmd_p D,
+ wDrawColor Color,
+ coOrd orig,
+ coOrd * size,
+ DIST_T dpi,
+ coOrd p0,
+ BOOL_T bigdot )
{
// Map Grid index to Layout pos
POS_T x;
@@ -111,29 +116,34 @@ void static DrawGridPoint(
p0.y = (p0.y*Gdx - p0.x*Gdy) + orig.y;
p0.x = x;
if (size &&
- ( p0.x < 0.0 || p0.x > size->x ||
- p0.y < 0.0 || p0.y > size->y ) )
+ ( p0.x < 0.0 || p0.x > size->x ||
+ p0.y < 0.0 || p0.y > size->y ) ) {
return;
+ }
DIST_T r;
+ nDrawGridPoints++;
if ( bigdot ) {
r = (bigdot_width+0.5)/2 - 0.5;
} else {
r = 0.75;
}
- r /= dpi;
- DrawFillCircle( D, p0, r, Color );
+ coOrd sz;
+ sz.x = sz.y = (bigdot?2.5:1.5)/dpi;
+ p0.x -= 1.0/dpi;
+ p0.y -= 1.0/dpi;
+ DrawRectangle( D, p0, sz, Color, DRAW_FILL );
}
static void DrawGridLine(
- drawCmd_p D,
- wDrawColor Color,
- coOrd orig,
- coOrd * size,
- DIST_T dpi,
- BOOL_T clip,
- coOrd p0,
- coOrd p1 )
+ drawCmd_p D,
+ wDrawColor Color,
+ coOrd orig,
+ coOrd * size,
+ DIST_T dpi,
+ BOOL_T clip,
+ coOrd p0,
+ coOrd p1 )
{
POS_T x;
x = (p0.x*Gdx + p0.y*Gdy) + orig.x;
@@ -142,23 +152,24 @@ static void DrawGridLine(
x = (p1.x*Gdx + p1.y*Gdy) + orig.x;
p1.y = (p1.y*Gdx - p1.x*Gdy) + orig.y;
p1.x = x;
- if (size && clip && !ClipLine( &p0, &p1, zero, 0.0, *size ))
+ if (size && clip && !ClipLine( &p0, &p1, zero, 0.0, *size )) {
return;
+ }
DrawLine( D, p0, p1, 0, Color );
}
EXPORT void DrawGrid(
- drawCmd_p D,
- coOrd * size,
- POS_T hMajSpacing,
- POS_T vMajSpacing,
- long Hdivision,
- long Vdivision,
- coOrd Gorig,
- ANGLE_T Gangle,
- wDrawColor Color,
- BOOL_T clip )
+ drawCmd_p D,
+ coOrd * size,
+ POS_T hMajSpacing,
+ POS_T vMajSpacing,
+ long Hdivision,
+ long Vdivision,
+ coOrd Gorig,
+ ANGLE_T Gangle,
+ wDrawColor Color,
+ BOOL_T clip )
{
int hMaj, hMajCnt0, hMajCnt1, vMaj, vMajCnt0, vMajCnt1;
coOrd p0, p1;
@@ -169,15 +180,21 @@ EXPORT void DrawGrid(
POS_T hMajSpacing_dpi, vMajSpacing_dpi;
BOOL_T bigdot;
- if (hMajSpacing <= 0 && vMajSpacing <= 0)
+ if (hMajSpacing <= 0 && vMajSpacing <= 0) {
return;
+ }
#ifdef CROSSTICK
- if (!cross0_bm)
- cross0_bm = wDrawBitMapCreate( mainD.d, cross0_width, cross0_height, 2, 2, cross0_bits );
+ if (!cross0_bm) {
+ cross0_bm = wDrawBitMapCreate( mainD.d, cross0_width, cross0_height, 2, 2,
+ cross0_bits );
+ }
#endif
+ unsigned long drawOptions = D->options;
+ D->options |= DC_ROUND;
unsigned long time0 = wGetTimer();
+ nDrawGridPoints = 0;
wSetCursor( mainD.d, wCursorWait );
dpi = D->dpi/D->scale;
Gdx = cos(D2R(Gangle));
@@ -196,9 +213,9 @@ EXPORT void DrawGrid(
vMajSpacing_dpi = vMajSpacing*dpi;
MapGrid( D->orig, D->size, D->angle, Gorig, Gangle,
- (hMajSpacing>0?hMajSpacing:vMajSpacing),
- (vMajSpacing>0?vMajSpacing:hMajSpacing),
- &hMajCnt0, &hMajCnt1, &vMajCnt0, &vMajCnt1 );
+ (hMajSpacing>0?hMajSpacing:vMajSpacing),
+ (vMajSpacing>0?vMajSpacing:hMajSpacing),
+ &hMajCnt0, &hMajCnt1, &vMajCnt0, &vMajCnt1 );
hMinCnt1 = vMinCnt1 = 0;
@@ -213,8 +230,9 @@ EXPORT void DrawGrid(
}
if ( Hdivision > 0 ) {
hMinSpacing = hMajSpacing/Hdivision;
- if (hMinSpacing*dpi > minGridSpacing)
+ if (hMinSpacing*dpi > minGridSpacing) {
hMinCnt1 = (int)Hdivision;
+ }
}
}
@@ -229,13 +247,15 @@ EXPORT void DrawGrid(
}
if ( Vdivision > 0 ) {
vMinSpacing = vMajSpacing/Vdivision;
- if (vMinSpacing*dpi > minGridSpacing)
+ if (vMinSpacing*dpi > minGridSpacing) {
vMinCnt1 = (int)Vdivision;
+ }
}
}
- if (hMinCnt1 <= 0 && vMinCnt1 <= 0)
+ if (hMinCnt1 <= 0 && vMinCnt1 <= 0) {
goto done;
+ }
if (hMajSpacing <= 0) {
hMinCnt1 = vMinCnt1+1;
@@ -282,7 +302,7 @@ EXPORT void DrawGrid(
vMinCnt1 = (int)(Vdivision/f);
vMinSpacing *= f;
}
-
+
bigdot = ( hMinSpacing*dpi > 10 && vMinSpacing*dpi > 10 );
for ( hMaj=hMajCnt0; hMaj<hMajCnt1; hMaj++ ) {
for ( vMaj=vMajCnt0; vMaj<vMajCnt1; vMaj++ ) {
@@ -295,11 +315,13 @@ EXPORT void DrawGrid(
}
}
}
-
+
done:
+ D->options = drawOptions;
wSetCursor( mainD.d, defaultCursor );
- LOG( log_timedrawgrid, 1, ( "DrawGrid time = %lu mS\n", wGetTimer()-time0 ) );
+ LOG( log_timedrawgrid, 1, ( "DrawGrid BD = %d, n = %d, time = %lu mS\n", bigdot,
+ nDrawGridPoints, wGetTimer()-time0 ) );
}
@@ -308,8 +330,9 @@ static void DrawBigCross( coOrd pos, ANGLE_T angle )
{
coOrd p0, p1;
DIST_T d;
- if (angleSystem!=ANGLE_POLAR)
+ if (angleSystem!=ANGLE_POLAR) {
angle += 90.0;
+ }
d = max( mainD.size.x, mainD.size.y );
Translate( &p0, pos, angle, d );
Translate( &p1, pos, angle+180, d );
@@ -326,10 +349,10 @@ static void DrawBigCross( coOrd pos, ANGLE_T angle )
EXPORT STATUS_T GridAction(
- wAction_t action,
- coOrd pos,
- coOrd *orig,
- DIST_T *angle )
+ wAction_t action,
+ coOrd pos,
+ coOrd *orig,
+ DIST_T *angle )
{
static coOrd pos0, pos1;
@@ -357,8 +380,9 @@ EXPORT STATUS_T GridAction(
if ( FindDistance(pos0, pos) > 0.1*mainD.scale ) {
pos1 = pos;
newAngle = FindAngle( pos0, pos1 );
- if (angleSystem!=ANGLE_POLAR)
+ if (angleSystem!=ANGLE_POLAR) {
newAngle = newAngle-90.0;
+ }
newAngle = NormalizeAngle( floor( newAngle*10.0 ) / 10.0 );
*angle = newAngle;
}
@@ -386,48 +410,55 @@ EXPORT STATUS_T GridAction(
EXPORT wDrawColor snapGridColor;
typedef struct {
- DIST_T Spacing;
- long Division;
- long Enable;
- } gridData;
+ DIST_T Spacing;
+ long Division;
+ long Enable;
+} gridData;
typedef struct {
- gridData Horz;
- gridData Vert;
- coOrd Orig;
- ANGLE_T Angle;
- long Show;
- } gridHVData;
+ gridData Horz;
+ gridData Vert;
+ coOrd Orig;
+ ANGLE_T Angle;
+ long Show;
+} gridHVData;
static gridHVData grid = { { 1.0, 0, 1 },
- { 1.0, 0, 1 } };
+ { 1.0, 0, 1 }
+};
EXPORT BOOL_T SnapPos( coOrd * pos )
{
coOrd p;
DIST_T spacing;
- if ((MyGetKeyState() & WKEY_ALT) != 0)
+ if ((MyGetKeyState() & WKEY_ALT) != 0) {
return FALSE;
- if ( grid.Vert.Enable == FALSE && grid.Horz.Enable == FALSE )
+ }
+ if ( grid.Vert.Enable == FALSE && grid.Horz.Enable == FALSE ) {
return FALSE;
+ }
p = *pos;
p.x -= grid.Orig.x;
p.y -= grid.Orig.y;
Rotate( &p, zero, -grid.Angle );
if ( grid.Horz.Enable ) {
- if ( grid.Horz.Division > 0 )
+ if ( grid.Horz.Division > 0 ) {
spacing = grid.Horz.Spacing / grid.Horz.Division;
- else
+ } else {
spacing = grid.Horz.Spacing;
- if (spacing > 0.001)
+ }
+ if (spacing > 0.001) {
p.x = floor(p.x/spacing+0.5) * spacing;
+ }
}
if ( grid.Vert.Enable ) {
- if ( grid.Vert.Division > 0 )
+ if ( grid.Vert.Division > 0 ) {
spacing = grid.Vert.Spacing / grid.Vert.Division;
- else
+ } else {
spacing = grid.Vert.Spacing;
- if (spacing > 0.001)
+ }
+ if (spacing > 0.001) {
p.y = floor(p.y/spacing+0.5) * spacing;
+ }
}
REORIGIN1( p, grid.Angle, grid.Orig );
*pos = p;
@@ -435,18 +466,30 @@ EXPORT BOOL_T SnapPos( coOrd * pos )
return TRUE;
}
+EXPORT BOOL_T SnapPosAngle( coOrd * pos, ANGLE_T * angle )
+{
+ if ( SnapPos( pos ) ) {
+ *angle = grid.Angle;
+ return TRUE;
+ }
+ return FALSE;
+}
+
-static void DrawASnapGrid( gridHVData * gridP, drawCmd_p d, coOrd size, BOOL_T drawDivisions )
+static void DrawASnapGrid( gridHVData * gridP, drawCmd_p d, coOrd size,
+ BOOL_T drawDivisions )
{
- if (gridP->Horz.Spacing <= 0.0 && gridP->Vert.Spacing <= 0.0)
+ if (gridP->Horz.Spacing <= 0.0 && gridP->Vert.Spacing <= 0.0) {
return;
- if (gridP->Show == FALSE)
+ }
+ if (gridP->Show == FALSE) {
return;
+ }
DrawGrid( d, &size,
- gridP->Horz.Spacing, gridP->Vert.Spacing,
- drawDivisions?gridP->Horz.Division:0,
- drawDivisions?gridP->Vert.Division:0,
- gridP->Orig, gridP->Angle, snapGridColor, TRUE );
+ gridP->Horz.Spacing, gridP->Vert.Spacing,
+ drawDivisions?gridP->Horz.Division:0,
+ drawDivisions?gridP->Vert.Division:0,
+ gridP->Orig, gridP->Angle, snapGridColor, TRUE );
}
@@ -471,8 +514,6 @@ static wWin_p gridW;
static wMenu_p snapGridPopupM;
static wButton_p snapGridEnable_b;
static wButton_p snapGridShow_b;
-EXPORT wMenuToggle_p snapGridEnableMI;
-EXPORT wMenuToggle_p snapGridShowMI;
static gridHVData oldGrid;
@@ -510,7 +551,8 @@ static paramData_t gridPLs[] = {
{ PD_FLOAT, &grid.Angle, "origa", PDO_ANGLE, &r0_360, N_("A") },
#define I_SHOW (11)
#define gridShowT ((wChoice_p)gridPLs[I_SHOW].control)
- { PD_TOGGLE, &grid.Show, "show", PDO_DLGIGNORELABELWIDTH, gridLabels, N_("Show"), BC_HORZ|BC_NOBORDER } };
+ { PD_TOGGLE, &grid.Show, "show", PDO_DLGIGNORELABELWIDTH, gridLabels, N_("Show"), BC_HORZ|BC_NOBORDER }
+};
static paramGroup_t gridPG = { "grid", PGO_RECORD, gridPLs, COUNT( gridPLs ) };
@@ -518,20 +560,20 @@ static paramGroup_t gridPG = { "grid", PGO_RECORD, gridPLs, COUNT( gridPLs ) };
static BOOL_T GridChanged( void )
{
return
- grid.Horz.Spacing != oldGrid.Horz.Spacing ||
- grid.Horz.Division != oldGrid.Horz.Division ||
- grid.Vert.Spacing != oldGrid.Vert.Spacing ||
- grid.Vert.Division != oldGrid.Vert.Division ||
- grid.Orig.x != oldGrid.Orig.x ||
- grid.Orig.y != oldGrid.Orig.y ||
- grid.Angle != oldGrid.Angle ||
- grid.Horz.Division != oldGrid.Horz.Division;
+ grid.Horz.Spacing != oldGrid.Horz.Spacing ||
+ grid.Horz.Division != oldGrid.Horz.Division ||
+ grid.Vert.Spacing != oldGrid.Vert.Spacing ||
+ grid.Vert.Division != oldGrid.Vert.Division ||
+ grid.Orig.x != oldGrid.Orig.x ||
+ grid.Orig.y != oldGrid.Orig.y ||
+ grid.Angle != oldGrid.Angle ||
+ grid.Horz.Division != oldGrid.Horz.Division;
}
static void RedrawGrid( void )
{
if (grid.Show != oldGrid.Show ||
- GridChanged() ) {
+ GridChanged() ) {
wDrawDelayUpdate( tempD.d, TRUE );
MainRedraw(); // RedrawGrid
wDrawDelayUpdate( tempD.d, FALSE );
@@ -545,19 +587,22 @@ static void GridOk( void * unused )
ParamLoadData( &gridPG );
if ( ( grid.Horz.Enable && grid.Horz.Spacing <= 0.0) ||
- ( grid.Vert.Enable && grid.Vert.Spacing <= 0.0) ) {
+ ( grid.Vert.Enable && grid.Vert.Spacing <= 0.0) ) {
NoticeMessage( MSG_GRID_ENABLE_SPACE_GTR_0, _("Ok"), NULL );
return;
}
if ( grid.Horz.Spacing <= 0.0 &&
- grid.Vert.Spacing <= 0.0 )
+ grid.Vert.Spacing <= 0.0 ) {
grid.Show = FALSE;
+ }
changes = 0;
- if ( GridChanged() )
+ if ( GridChanged() ) {
changes |= CHANGE_GRID;
- if (grid.Show != oldGrid.Show || changes != 0)
+ }
+ if (grid.Show != oldGrid.Show || changes != 0) {
changes |= CHANGE_MAIN;
+ }
DoChangeNotification( changes );
oldGrid = grid;
Reset();
@@ -569,44 +614,55 @@ static void GridButtonUpdate( long mode0 )
long mode1;
mode1 = 0;
if ( grid.Show &&
- grid.Horz.Spacing <= 0.0 &&
- grid.Vert.Spacing <= 0.0 ) {
+ grid.Horz.Spacing <= 0.0 &&
+ grid.Vert.Spacing <= 0.0 ) {
grid.Show = FALSE;
- if ( mode0&CHK_SHOW )
+ if ( mode0&CHK_SHOW ) {
ErrorMessage( MSG_GRID_SHOW_SPACE_GTR_0 );
+ }
}
if ( grid.Horz.Enable &&
- grid.Horz.Spacing <= 0.0 ) {
+ grid.Horz.Spacing <= 0.0 ) {
grid.Horz.Enable = FALSE;
- if ( mode0&CHK_HENABLE )
+ if ( mode0&CHK_HENABLE ) {
mode1 |= CHK_HENABLE;
+ }
}
if ( grid.Vert.Enable &&
- grid.Vert.Spacing <= 0.0 ) {
+ grid.Vert.Spacing <= 0.0 ) {
grid.Vert.Enable = FALSE;
- if ( mode0&CHK_VENABLE )
+ if ( mode0&CHK_VENABLE ) {
mode1 |= CHK_VENABLE;
+ }
}
if ( mode1 &&
- (mode0&(CHK_HENABLE|CHK_VENABLE)) == mode1 )
+ (mode0&(CHK_HENABLE|CHK_VENABLE)) == mode1 ) {
ErrorMessage( MSG_GRID_ENABLE_SPACE_GTR_0 );
+ }
if ( gridShowT &&
- grid.Show != (wToggleGetValue( gridShowT ) != 0) )
+ grid.Show != (wToggleGetValue( gridShowT ) != 0) ) {
ParamLoadControl( &gridPG, I_SHOW );
+ }
if ( gridHorzEnableT &&
- grid.Horz.Enable != (wToggleGetValue( gridHorzEnableT ) != 0) )
+ grid.Horz.Enable != (wToggleGetValue( gridHorzEnableT ) != 0) ) {
ParamLoadControl( &gridPG, I_HORZENABLE );
+ }
if ( gridVertEnableT &&
- grid.Vert.Enable != (wToggleGetValue( gridVertEnableT ) != 0) )
+ grid.Vert.Enable != (wToggleGetValue( gridVertEnableT ) != 0) ) {
ParamLoadControl( &gridPG, I_VERTENABLE );
- if (snapGridEnable_b)
+ }
+ if (snapGridEnable_b) {
wButtonSetBusy( snapGridEnable_b, grid.Horz.Enable||grid.Vert.Enable );
- if (snapGridShow_b)
+ }
+ if (snapGridShow_b) {
wButtonSetBusy( snapGridShow_b, (wBool_t)grid.Show );
- if (snapGridEnableMI)
+ }
+ if (snapGridEnableMI) {
wMenuToggleSet( snapGridEnableMI, grid.Horz.Enable||grid.Vert.Enable );
- if (snapGridShowMI)
+ }
+ if (snapGridShowMI) {
wMenuToggleSet( snapGridShowMI, (wBool_t)grid.Show );
+ }
if ( mode0&CHK_SHOW ) {
RedrawGrid();
@@ -617,19 +673,21 @@ static void GridButtonUpdate( long mode0 )
static void GridChange( long changes )
{
- if ( (changes&(CHANGE_GRID|CHANGE_UNITS))==0 )
+ if ( (changes&(CHANGE_GRID|CHANGE_UNITS))==0 ) {
return;
+ }
GridButtonUpdate( 0 );
- if (gridW==NULL || !wWinIsVisible(gridW))
+ if (gridW==NULL || !wWinIsVisible(gridW)) {
return;
+ }
ParamLoadControls( &gridPG );
}
static void GridDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
switch ( inx ) {
case I_HORZENABLE:
@@ -663,8 +721,8 @@ static void SnapGridRotate( void * pangle )
EXPORT STATUS_T CmdGrid(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
STATUS_T rc;
@@ -672,7 +730,8 @@ EXPORT STATUS_T CmdGrid(
case C_START:
if (gridW == NULL) {
- gridW = ParamCreateDialog( &gridPG, MakeWindowTitle(_("Snap Grid")), _("Ok"), GridOk, (paramActionCancelProc)Reset, TRUE, NULL, 0, GridDlgUpdate );
+ gridW = ParamCreateDialog( &gridPG, MakeWindowTitle(_("Snap Grid")), _("Ok"),
+ GridOk, (paramActionCancelProc)Reset, TRUE, NULL, 0, GridDlgUpdate );
}
oldGrid = grid;
ParamLoadControls( &gridPG );
@@ -694,10 +753,11 @@ EXPORT STATUS_T CmdGrid(
case C_CONFIRM:
if (GridChanged() ||
- grid.Show != oldGrid.Show )
+ grid.Show != oldGrid.Show ) {
return C_ERROR;
- else
+ } else {
return C_CONTINUE;
+ }
case C_DOWN:
case C_RDOWN:
@@ -728,7 +788,7 @@ EXPORT STATUS_T CmdGrid(
/**
- * Initialize the user interface for the grid functions.
+ * Initialize the user interface for the grid functions.
*
* \param menu IN pulldown to which the grid function will be added
* \return created command button
@@ -738,18 +798,22 @@ EXPORT wIndex_t InitGrid( wMenu_p menu )
{
ParamRegister( &gridPG );
RegisterChangeNotification( GridChange );
- if ( grid.Horz.Enable && grid.Horz.Spacing <= 0.0 )
+ if ( grid.Horz.Enable && grid.Horz.Spacing <= 0.0 ) {
grid.Horz.Enable = FALSE;
- if ( grid.Vert.Enable && grid.Vert.Spacing <= 0.0 )
+ }
+ if ( grid.Vert.Enable && grid.Vert.Spacing <= 0.0 ) {
grid.Vert.Enable = FALSE;
+ }
if ( grid.Horz.Spacing <= 0.0 &&
- grid.Vert.Spacing <= 0.0 )
+ grid.Vert.Spacing <= 0.0 ) {
grid.Show = FALSE;
+ }
snapGridPopupM = MenuRegister( "Snap Grid Rotate" );
AddRotateMenu( snapGridPopupM, SnapGridRotate );
GridButtonUpdate( 0 );
log_timedrawgrid = LogFindIndex( "timedrawgrid" );
- return InitCommand( menu, CmdGrid, N_("Change Grid..."), NULL, LEVEL0, IC_CMDMENU, ACCL_GRIDW );
+ return AddMenuButton( menu, CmdGrid, "cmdChange Grid...", N_("Change Grid..."),
+ NULL, LEVEL0, IC_CMDMENU, ACCL_GRIDW, NULL );
}
@@ -766,11 +830,14 @@ EXPORT void SnapGridShow( void * unused )
GridButtonUpdate( CHK_SHOW );
}
-#include "bitmaps/snap-curs.xpm"
-#include "bitmaps/snap-grid.xpm"
+#include "bitmaps/snap-curs.xpm3"
+#include "bitmaps/snap-grid.xpm3"
EXPORT void InitSnapGridButtons( void )
{
- snapGridEnable_b = AddToolbarButton( "cmdGridEnable", wIconCreatePixMap(snap_curs_xpm[iconSize] ), 0, SnapGridEnable, NULL );
- snapGridShow_b = AddToolbarButton( "cmdGridShow", wIconCreatePixMap(snap_grid_xpm[iconSize] ), IC_MODETRAIN_TOO, SnapGridShow, NULL );
+ snapGridEnable_b = AddToolbarButton( "cmdGridEnable",
+ wIconCreatePixMap(snap_curs_xpm3[iconSize] ), 0, SnapGridEnable, NULL );
+ snapGridShow_b = AddToolbarButton( "cmdGridShow",
+ wIconCreatePixMap(snap_grid_xpm3[iconSize] ), IC_MODETRAIN_TOO, SnapGridShow,
+ NULL );
}
diff --git a/app/bin/csplit.c b/app/bin/csplit.c
index 49b87ce..154b837 100644
--- a/app/bin/csplit.c
+++ b/app/bin/csplit.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"
@@ -50,8 +50,9 @@ static void ChangeSplitEPMode( void * mode )
UndoModify( splitTrkTrk[inx] );
option = GetTrkEndOption( splitTrkTrk[inx], splitTrkEP[inx] );
option &= ~EPOPT_GAPPED;
- if ( (imode&1) != 0 )
+ if ( (imode&1) != 0 ) {
option |= EPOPT_GAPPED;
+ }
SetTrkEndOption( splitTrkTrk[inx], splitTrkEP[inx], option );
imode >>= 1;
}
@@ -59,7 +60,9 @@ static void ChangeSplitEPMode( void * mode )
DrawEndPt( &mainD, splitTrkTrk[1], splitTrkEP[1], wDrawColorBlack );
}
-static void CreateSplitAnchorAngle(coOrd pos, track_p t, BOOL_T end, ANGLE_T a, BOOL_T trim) {
+static void CreateSplitAnchorAngle(coOrd pos, track_p t, BOOL_T end, ANGLE_T a,
+ BOOL_T trim)
+{
DIST_T d = tempD.scale*0.1;
DIST_T w = tempD.scale/tempD.dpi*4;
int i;
@@ -70,7 +73,7 @@ static void CreateSplitAnchorAngle(coOrd pos, track_p t, BOOL_T end, ANGLE_T a,
anchors(i).color = wDrawColorBlue;
Translate(&anchors(i).u.l.pos[0],pos,a,trim?2*GetTrkGauge(t):GetTrkGauge(t));
Translate(&anchors(i).u.l.pos[1],pos,a,trim?2*-GetTrkGauge(t):-GetTrkGauge(t));
- anchors(i).width = w;
+ anchors(i).lineWidth = w;
} else {
DYNARR_APPEND(trkSeg_t,anchors_da,1);
i = anchors_da.cnt-1;
@@ -80,7 +83,7 @@ static void CreateSplitAnchorAngle(coOrd pos, track_p t, BOOL_T end, ANGLE_T a,
Translate(&anchors(i).u.l.pos[0],anchors(i).u.l.pos[0],a+90,d);
Translate(&anchors(i).u.l.pos[1],pos,a,-GetTrkGauge(t));
Translate(&anchors(i).u.l.pos[1],anchors(i).u.l.pos[1],a+90,-d);
- anchors(i).width = w;
+ anchors(i).lineWidth = w;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
i = anchors_da.cnt-1;
anchors(i).type = SEG_STRLIN;
@@ -89,17 +92,18 @@ static void CreateSplitAnchorAngle(coOrd pos, track_p t, BOOL_T end, ANGLE_T a,
Translate(&anchors(i).u.l.pos[0],anchors(i).u.l.pos[0],a+90,-d);
Translate(&anchors(i).u.l.pos[1],pos,a,-GetTrkGauge(t));
Translate(&anchors(i).u.l.pos[1],anchors(i).u.l.pos[1],a+90,d);
- anchors(i).width = w;
+ anchors(i).lineWidth = w;
}
}
-static void CreateSplitAnchor(coOrd pos, track_p t, BOOL_T end) {
+static void CreateSplitAnchor(coOrd pos, track_p t, BOOL_T end)
+{
ANGLE_T a = NormalizeAngle(GetAngleAtPoint(t,pos,NULL,NULL)+90.0);
CreateSplitAnchorAngle(pos,t,end,a,FALSE);
}
-static void CreateTrimAnchorLeg(coOrd pos, ANGLE_T a, track_p t) {
- DIST_T d = tempD.scale*0.1;
+static void CreateTrimAnchorLeg(coOrd pos, ANGLE_T a, track_p t)
+{
DIST_T w = tempD.scale/tempD.dpi*4;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
int i = anchors_da.cnt-1;
@@ -107,11 +111,12 @@ static void CreateTrimAnchorLeg(coOrd pos, ANGLE_T a, track_p t) {
anchors(i).color = wDrawColorBlue;
anchors(i).u.l.pos[0] = pos;
Translate(&anchors(i).u.l.pos[1],pos,a,GetTrkGauge(t)*2);
- anchors(i).width = w;
+ anchors(i).lineWidth = w;
}
-static void CreateTrimAnchor(coOrd pos, track_p t, track_p s, coOrd cursor) {
+static void CreateTrimAnchor(coOrd pos, track_p t, track_p s, coOrd cursor)
+{
ANGLE_T a = NormalizeAngle(GetAngleAtPoint(s,pos,NULL,NULL));
CreateSplitAnchorAngle(pos,t,FALSE,a,TRUE);
ANGLE_T aa = FindAngle(pos,cursor);
@@ -123,16 +128,16 @@ static STATUS_T CmdSplitTrack( wAction_t action, coOrd pos )
{
track_p trk0, trk1;
EPINX_T ep0 = 0;
- int oldTrackCount;
+// int oldTrackCount;
int inx, mode, quad;
ANGLE_T angle;
switch (action) {
case C_START:
- InfoMessage( _("Select track to split") );
+ InfoMessage( _("Select track and position for split") );
DYNARR_RESET(trkSeg_t,anchors_da);
SetAllTrackSelect( FALSE );
- /* no break */
+ /* no break */
case C_DOWN:
case C_MOVE:
return C_CONTINUE;
@@ -146,7 +151,8 @@ static STATUS_T CmdSplitTrack( wAction_t action, coOrd pos )
return C_TERMINATE;
}
ep0 = PickEndPoint( pos, trk0 );
- if (IsClose(FindDistance(GetTrkEndPos(trk0,ep0),pos)) && (GetTrkEndTrk(trk0,ep0)!=NULL)) {
+ if (IsClose(FindDistance(GetTrkEndPos(trk0,ep0),pos))
+ && (GetTrkEndTrk(trk0,ep0)!=NULL)) {
pos = GetTrkEndPos(trk0,ep0);
} else {
if (!IsTrack(trk0) ||
@@ -161,11 +167,12 @@ static STATUS_T CmdSplitTrack( wAction_t action, coOrd pos )
return C_CONTINUE;
}
UndoStart( _("Split Track"), "SplitTrack( T%d[%d] )", GetTrkIndex(trk0), ep0 );
- oldTrackCount = trackCount;
+// oldTrackCount = trackCount;
SplitTrack( trk0, pos, ep0, &trk1, FALSE );
UndoEnd();
return C_TERMINATE;
- } else if ((trk0 = OnTrack( &pos, FALSE, FALSE))!=NULL && CheckTrackLayerSilent( trk0 )) {
+ } else if ((trk0 = OnTrack( &pos, FALSE, FALSE))!=NULL
+ && CheckTrackLayerSilent( trk0 )) {
if (!QueryTrack(trk0,Q_MODIFY_CAN_SPLIT)) {
onTrackInSplit = FALSE;
InfoMessage(_("Can't Split that Draw Object"));
@@ -173,7 +180,7 @@ static STATUS_T CmdSplitTrack( wAction_t action, coOrd pos )
}
onTrackInSplit = FALSE;
UndoStart( _("Split Track"), "SplitTrack( T%d[%d] )", GetTrkIndex(trk0), ep0 );
- oldTrackCount = trackCount;
+// oldTrackCount = trackCount;
SplitTrack( trk0, pos, ep0, &trk1, FALSE );
UndoEnd();
return C_TERMINATE;
@@ -186,56 +193,75 @@ static STATUS_T CmdSplitTrack( wAction_t action, coOrd pos )
break;
case C_CMDMENU:
splitTrkTrk[0] = OnTrack( &pos, TRUE, TRUE );
- if ( splitTrkTrk[0] == NULL )
+ if ( splitTrkTrk[0] == NULL ) {
return C_CONTINUE;
+ }
if ( splitPopupM[0] == NULL ) {
splitPopupM[0] = MenuRegister( "End Point Mode R-L" );
- splitPopupMI[0][0] = wMenuToggleCreate( splitPopupM[0], "", _("None"), 0, TRUE, ChangeSplitEPMode, I2VP(0) );
- splitPopupMI[0][1] = wMenuToggleCreate( splitPopupM[0], "", _("Left"), 0, FALSE, ChangeSplitEPMode, I2VP(1) );
- splitPopupMI[0][2] = wMenuToggleCreate( splitPopupM[0], "", _("Right"), 0, FALSE, ChangeSplitEPMode, I2VP(2) );
- splitPopupMI[0][3] = wMenuToggleCreate( splitPopupM[0], "", _("Both"), 0, FALSE, ChangeSplitEPMode, I2VP(3) );
+ splitPopupMI[0][0] = wMenuToggleCreate( splitPopupM[0], "", _("None"), 0, TRUE,
+ ChangeSplitEPMode, I2VP(0) );
+ splitPopupMI[0][1] = wMenuToggleCreate( splitPopupM[0], "", _("Left"), 0, FALSE,
+ ChangeSplitEPMode, I2VP(1) );
+ splitPopupMI[0][2] = wMenuToggleCreate( splitPopupM[0], "", _("Right"), 0,
+ FALSE, ChangeSplitEPMode, I2VP(2) );
+ splitPopupMI[0][3] = wMenuToggleCreate( splitPopupM[0], "", _("Both"), 0, FALSE,
+ ChangeSplitEPMode, I2VP(3) );
splitPopupM[1] = MenuRegister( "End Point Mode T-B" );
- splitPopupMI[1][0] = wMenuToggleCreate( splitPopupM[1], "", _("None"), 0, TRUE, ChangeSplitEPMode, I2VP(0) );
- splitPopupMI[1][1] = wMenuToggleCreate( splitPopupM[1], "", _("Top"), 0, FALSE, ChangeSplitEPMode, I2VP(1) );
- splitPopupMI[1][2] = wMenuToggleCreate( splitPopupM[1], "", _("Bottom"), 0, FALSE, ChangeSplitEPMode, I2VP(2) );
- splitPopupMI[1][3] = wMenuToggleCreate( splitPopupM[1], "", _("Both"), 0, FALSE, ChangeSplitEPMode, I2VP(3) );
+ splitPopupMI[1][0] = wMenuToggleCreate( splitPopupM[1], "", _("None"), 0, TRUE,
+ ChangeSplitEPMode, I2VP(0) );
+ splitPopupMI[1][1] = wMenuToggleCreate( splitPopupM[1], "", _("Top"), 0, FALSE,
+ ChangeSplitEPMode, I2VP(1) );
+ splitPopupMI[1][2] = wMenuToggleCreate( splitPopupM[1], "", _("Bottom"), 0,
+ FALSE, ChangeSplitEPMode, I2VP(2) );
+ splitPopupMI[1][3] = wMenuToggleCreate( splitPopupM[1], "", _("Both"), 0, FALSE,
+ ChangeSplitEPMode, I2VP(3) );
}
splitTrkEP[0] = PickEndPoint( pos, splitTrkTrk[0] );
angle = NormalizeAngle(GetTrkEndAngle( splitTrkTrk[0], splitTrkEP[0] ));
- if ( angle <= 45.0 )
+ if ( angle <= 45.0 ) {
quad = 0;
- else if ( angle <= 135.0 )
+ } else if ( angle <= 135.0 ) {
quad = 1;
- else if ( angle <= 225.0 )
+ } else if ( angle <= 225.0 ) {
quad = 2;
- else if ( angle <= 315.0 )
+ } else if ( angle <= 315.0 ) {
quad = 3;
- else
+ } else {
quad = 0;
+ }
splitTrkFlip = (quad<2);
- if ( (splitTrkTrk[1] = GetTrkEndTrk( splitTrkTrk[0], splitTrkEP[0] ) ) == NULL ) {
+ if ( (splitTrkTrk[1] = GetTrkEndTrk( splitTrkTrk[0],
+ splitTrkEP[0] ) ) == NULL ) {
ErrorMessage( MSG_BAD_BLOCKGAP );
return C_CONTINUE;
}
splitTrkEP[1] = GetEndPtConnectedToMe( splitTrkTrk[1], splitTrkTrk[0] );
mode = 0;
- if ( GetTrkEndOption( splitTrkTrk[1-splitTrkFlip], splitTrkEP[1-splitTrkFlip] ) & EPOPT_GAPPED )
+ if ( GetTrkEndOption( splitTrkTrk[1-splitTrkFlip],
+ splitTrkEP[1-splitTrkFlip] ) & EPOPT_GAPPED ) {
mode |= 2;
- if ( GetTrkEndOption( splitTrkTrk[splitTrkFlip], splitTrkEP[splitTrkFlip] ) & EPOPT_GAPPED )
+ }
+ if ( GetTrkEndOption( splitTrkTrk[splitTrkFlip],
+ splitTrkEP[splitTrkFlip] ) & EPOPT_GAPPED ) {
mode |= 1;
- for ( inx=0; inx<4; inx++ )
+ }
+ for ( inx=0; inx<4; inx++ ) {
wMenuToggleSet( splitPopupMI[quad&1][inx], mode == inx );
+ }
menuPos = pos;
wMenuPopupShow( splitPopupM[quad&1] );
break;
case wActionMove:
DYNARR_RESET(trkSeg_t,anchors_da);
onTrackInSplit = TRUE;
- if ((trk0 = OnTrack( &pos, FALSE, TRUE ))!=NULL && CheckTrackLayerSilent( trk0 )) {
+ if ((trk0 = OnTrack( &pos, FALSE, TRUE ))!=NULL
+ && CheckTrackLayerSilent( trk0 )) {
ep0 = PickEndPoint( pos, trk0 );
- if ( ep0 < 0 )
+ if ( ep0 < 0 ) {
break;
- if (IsClose(FindDistance(GetTrkEndPos(trk0,ep0),pos)) && (GetTrkEndTrk(trk0,ep0)!=NULL)) {
+ }
+ if (IsClose(FindDistance(GetTrkEndPos(trk0,ep0),pos))
+ && (GetTrkEndTrk(trk0,ep0)!=NULL)) {
CreateSplitAnchor(GetTrkEndPos(trk0,ep0),trk0,TRUE);
} else if (QueryTrack(trk0,Q_IS_TURNOUT)) {
if ((MyGetKeyState()&WKEY_SHIFT) != 0 ) {
@@ -251,7 +277,8 @@ static STATUS_T CmdSplitTrack( wAction_t action, coOrd pos )
CreateSplitAnchor(pos,trk0,FALSE);
}
} else {
- if ((trk0 = OnTrack( &pos, FALSE, FALSE))!=NULL && CheckTrackLayerSilent( trk0 )) {
+ if ((trk0 = OnTrack( &pos, FALSE, FALSE))!=NULL
+ && CheckTrackLayerSilent( trk0 )) {
if (QueryTrack(trk0,Q_MODIFY_CAN_SPLIT)) {
CreateSplitAnchor(pos,trk0, FALSE);
}
@@ -261,8 +288,8 @@ static STATUS_T CmdSplitTrack( wAction_t action, coOrd pos )
break;
case C_REDRAW:
- 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 );
break;
}
@@ -273,22 +300,23 @@ static STATUS_T CmdSplitDraw( wAction_t action, coOrd pos )
{
track_p trk0, trk1;
EPINX_T ep0 = 0;
- int oldTrackCount;
+// int oldTrackCount;
switch (action) {
case C_START:
InfoMessage( _("Select draw to split") );
DYNARR_RESET(trkSeg_t,anchors_da);
SetAllTrackSelect( FALSE );
- /* no break */
+ /* no break */
case C_DOWN:
case C_MOVE:
return C_CONTINUE;
break;
case C_UP:
onTrackInSplit = TRUE;
- if ((trk0 = OnTrack( &pos, FALSE, FALSE))!=NULL && CheckTrackLayerSilent( trk0 )) {
- if (IsTrack(trk0)) return C_CONTINUE;
+ if ((trk0 = OnTrack( &pos, FALSE, FALSE))!=NULL
+ && CheckTrackLayerSilent( trk0 )) {
+ if (IsTrack(trk0)) { return C_CONTINUE; }
if (!QueryTrack(trk0,Q_MODIFY_CAN_SPLIT)) {
onTrackInSplit = FALSE;
InfoMessage(_("Can't Split that Draw Object"));
@@ -296,7 +324,7 @@ static STATUS_T CmdSplitDraw( wAction_t action, coOrd pos )
}
onTrackInSplit = FALSE;
UndoStart( _("Split Draw"), "SplitDraw( T%d[%d] )", GetTrkIndex(trk0), ep0 );
- oldTrackCount = trackCount;
+// oldTrackCount = trackCount;
SplitTrack( trk0, pos, ep0, &trk1, FALSE );
UndoEnd();
return C_TERMINATE;
@@ -310,8 +338,9 @@ static STATUS_T CmdSplitDraw( wAction_t action, coOrd pos )
case wActionMove:
DYNARR_RESET(trkSeg_t,anchors_da);
onTrackInSplit = TRUE;
- if ((trk0 = OnTrack( &pos, FALSE, FALSE))!=NULL && CheckTrackLayerSilent( trk0 )) {
- if (IsTrack(trk0)) break;
+ if ((trk0 = OnTrack( &pos, FALSE, FALSE))!=NULL
+ && CheckTrackLayerSilent( trk0 )) {
+ if (IsTrack(trk0)) { break; }
if (QueryTrack(trk0,Q_MODIFY_CAN_SPLIT)) {
CreateSplitAnchor(pos,trk0, FALSE);
}
@@ -319,8 +348,8 @@ static STATUS_T CmdSplitDraw( wAction_t action, coOrd pos )
onTrackInSplit = FALSE;
break;
case C_REDRAW:
- 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 );
break;
}
@@ -345,14 +374,15 @@ static STATUS_T CmdTrimDraw( wAction_t action, coOrd pos )
trimLine = NULL;
trk = NULL;
SetAllTrackSelect( FALSE );
- /* no break */
+ /* no break */
case C_DOWN:
case C_MOVE:
return C_CONTINUE;
break;
case C_UP:
if (trimState == TRIM_NONE) {
- if ((trk0 = OnTrack( &pos, FALSE, FALSE))!=NULL && CheckTrackLayerSilent( trk0 )) {
+ if ((trk0 = OnTrack( &pos, FALSE, FALSE))!=NULL
+ && CheckTrackLayerSilent( trk0 )) {
if (IsTrack(trk0)) {
InfoMessage(_("Can't Trim with a Track"));
return C_CONTINUE;
@@ -361,8 +391,7 @@ static STATUS_T CmdTrimDraw( wAction_t action, coOrd pos )
trimLine = trk0;
InfoMessage( _("Select an intersecting draw object to Trim") );
return C_CONTINUE;
- }
- else return C_CONTINUE;
+ } else { return C_CONTINUE; }
}
if (!trimLine) {
InfoMessage(_("No Draw to Trim with"));
@@ -382,27 +411,27 @@ static STATUS_T CmdTrimDraw( wAction_t action, coOrd pos )
return C_CONTINUE;
}
pos1 = pos;
- if (IsClose(GetTrkDistance(trimLine,&pos1)*4)) {
+ if (IsClose(GetTrkDistance(trimLine,&pos1)*4)) {
if ( IsClose(GetTrkDistance(trk1,&pos1)*4)) {
//Iterate twice
- for (int i=0; i<2;i++) {
+ for (int i=0; i<2; i++) {
GetTrkDistance(trimLine,&pos1);
GetTrkDistance(trk1,&pos1);
}
- } else return C_CONTINUE;
+ } else { return C_CONTINUE; }
} else {
return C_CONTINUE;
}
- } else return C_CONTINUE;
+ } else { return C_CONTINUE; }
ANGLE_T a = GetAngleAtPoint(trk1,pos1,NULL,NULL);
ANGLE_T aa = DifferenceBetweenAngles(a,FindAngle(pos1,pos));
- if (fabs(aa)<90 ) ep0 = 1;
- else ep0 = 0;
+ if (fabs(aa)<90 ) { ep0 = 1; }
+ else { ep0 = 0; }
UndoStart( _("Trim Draw"), "TrimDraw( T%d[%d] )", GetTrkIndex(trimLine), ep0 );
SplitTrack( trk1, pos1, ep0, &trk2, FALSE );
- if (trk2 ) DeleteTrack(trk2, FALSE);
+ if (trk2 ) { DeleteTrack(trk2, FALSE); }
UndoEnd();
MainRedraw();
InfoMessage( _("Select another draw object to Trim, or Space to Deselect") );
@@ -412,8 +441,9 @@ static STATUS_T CmdTrimDraw( wAction_t action, coOrd pos )
DYNARR_RESET(trkSeg_t,anchors_da);
trk = NULL;
if (trimState == TRIM_NONE) {
- if ((trk0 = OnTrack( &pos, FALSE, FALSE))!=NULL && CheckTrackLayerSilent( trk0 )) {
- if (IsTrack(trk0)) break;
+ if ((trk0 = OnTrack( &pos, FALSE, FALSE))!=NULL
+ && CheckTrackLayerSilent( trk0 )) {
+ if (IsTrack(trk0)) { break; }
if (QueryTrack(trk0,Q_MODIFY_CAN_SPLIT)) {
trk = trk0;
}
@@ -429,7 +459,7 @@ static STATUS_T CmdTrimDraw( wAction_t action, coOrd pos )
if (IsClose(GetTrkDistance(trimLine,&pos1)*4)) {
if (IsClose(GetTrkDistance(trk1,&pos1)*4)) {
//Iterate Twice
- for (int i=0; i<2;i++) {
+ for (int i=0; i<2; i++) {
GetTrkDistance(trimLine,&pos1);
GetTrkDistance(trk1,&pos1);
}
@@ -446,12 +476,13 @@ static STATUS_T CmdTrimDraw( wAction_t action, coOrd pos )
if (trimLine) {
DrawTrack(trimLine,&tempD,selectedColor);
}
- 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 );
break;
case C_TEXT:
- if (action>>8 != ' ' && action>>8 != 13 )
+ if (action>>8 != ' ' && action>>8 != 13 ) {
return C_CONTINUE;
+ }
trimLine = NULL;
trk = NULL;
trimState = TRIM_NONE;
@@ -464,16 +495,22 @@ static STATUS_T CmdTrimDraw( wAction_t action, coOrd pos )
}
-#include "bitmaps/split.xpm"
-#include "bitmaps/split-draw.xpm"
-#include "bitmaps/trim.xpm"
+#include "bitmaps/split.xpm3"
+#include "bitmaps/split-draw.xpm3"
+#include "bitmaps/trim.xpm3"
void InitCmdSplit( wMenu_p menu )
{
ButtonGroupBegin( _("Split"), "cmdSplitSetCmd", _("Split") );
- AddMenuButton( menu, CmdSplitTrack, "cmdSplitTrack", _("Split Track"), wIconCreatePixMap(split_xpm[iconSize]), LEVEL0_50, IC_STICKY|IC_POPUP|IC_CMDMENU|IC_WANT_MOVE, ACCL_SPLIT, NULL);
- AddMenuButton( menu, CmdSplitDraw, "cmdSplitDraw", _("Split Draw"), wIconCreatePixMap(split_draw_xpm[iconSize]), LEVEL0_50, IC_STICKY|IC_POPUP|IC_WANT_MOVE, ACCL_SPLITDRAW, NULL);
- AddMenuButton( menu, CmdTrimDraw, "cmdTrimDraw", _("Trim Draw"), wIconCreatePixMap(trim_xpm[iconSize]), LEVEL0_50, IC_STICKY|IC_POPUP|IC_WANT_MOVE, ACCL_TRIMDRAW, NULL);
+ AddMenuButton( menu, CmdSplitTrack, "cmdSplitTrack", _("Split Track"),
+ wIconCreatePixMap(split_xpm3[iconSize]), LEVEL0_50,
+ IC_STICKY|IC_POPUP|IC_CMDMENU|IC_WANT_MOVE, ACCL_SPLIT, NULL);
+ AddMenuButton( menu, CmdSplitDraw, "cmdSplitDraw", _("Split Draw"),
+ wIconCreatePixMap(split_draw_xpm3[iconSize]), LEVEL0_50,
+ IC_STICKY|IC_POPUP|IC_WANT_MOVE, ACCL_SPLITDRAW, NULL);
+ AddMenuButton( menu, CmdTrimDraw, "cmdTrimDraw", _("Trim Draw"),
+ wIconCreatePixMap(trim_xpm3[iconSize]), LEVEL0_50,
+ IC_STICKY|IC_POPUP|IC_WANT_MOVE, ACCL_TRIMDRAW, NULL);
ButtonGroupEnd();
}
diff --git a/app/bin/cstraigh.c b/app/bin/cstraigh.c
index 277db96..b61d9b8 100644
--- a/app/bin/cstraigh.c
+++ b/app/bin/cstraigh.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 "cstraigh.h"
@@ -33,16 +33,17 @@
* STATE INFO
*/
static struct {
- coOrd pos0, pos1;
- track_p trk;
- EPINX_T ep;
- BOOL_T down;
- } Dl;
+ coOrd pos0, pos1;
+ track_p trk;
+ EPINX_T ep;
+ BOOL_T down;
+} Dl;
static dynArr_t anchors_da;
#define anchors(N) DYNARR_N(trkSeg_t,anchors_da,N)
-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);
@@ -53,7 +54,7 @@ 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;
}
@@ -72,7 +73,8 @@ static STATUS_T CmdStraight( wAction_t action, coOrd pos )
Dl.trk = NULL;
Dl.ep=-1;
Dl.down = FALSE;
- InfoMessage( _("Place 1st endpoint of straight track, snap to unconnected endpoint") );
+ InfoMessage(
+ _("Place 1st endpoint of straight track, snap to unconnected endpoint") );
SetAllTrackSelect( FALSE );
return C_CONTINUE;
@@ -83,30 +85,30 @@ static STATUS_T CmdStraight( wAction_t action, coOrd pos )
Dl.trk = NULL;
if (((MyGetKeyState() & WKEY_ALT) == 0) == magneticSnap) {
if ((t = OnTrack(&p, FALSE, TRUE)) != NULL) {
- EPINX_T ep = PickUnconnectedEndPointSilent(p, t);
- if (ep != -1) {
- if (GetTrkGauge(t) != GetScaleTrackGauge(GetLayoutCurScale())) {
- wBeep();
- InfoMessage(_("Track is different gauge"));
- return C_CONTINUE;
- }
- Dl.trk = t;
- Dl.ep = ep;
- pos = GetTrkEndPos(t, ep);
- found = TRUE;
- }
+ EPINX_T ep = PickUnconnectedEndPointSilent(p, t);
+ if (ep != -1) {
+ if (GetTrkGauge(t) != GetScaleTrackGauge(GetLayoutCurScale())) {
+ wBeep();
+ InfoMessage(_("Track is different gauge"));
+ return C_CONTINUE;
+ }
+ Dl.trk = t;
+ Dl.ep = ep;
+ pos = GetTrkEndPos(t, ep);
+ found = TRUE;
+ }
}
}
- Dl.down = TRUE;
- if (!found) SnapPos( &pos );
+ Dl.down = TRUE;
+ if (!found) { SnapPos( &pos ); }
Dl.pos0 = pos;
InfoMessage( _("Drag to place 2nd end point") );
DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).color = wDrawColorBlack;
- tempSegs(0).width = 0;
- tempSegs_da.cnt = 0;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).type = SEG_STRTRK;
tempSegs(0).u.l.pos[0] = pos;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
return C_CONTINUE;
case C_MOVE:
@@ -118,13 +120,13 @@ static STATUS_T CmdStraight( wAction_t action, coOrd pos )
p = pos;
if ((t = OnTrack(&p, FALSE, TRUE)) != NULL) {
if (GetTrkGauge(t) == GetScaleTrackGauge(GetLayoutCurScale())) {
- EPINX_T ep = PickUnconnectedEndPointSilent(pos, t);
- if (ep != -1) {
- if (GetTrkGauge(t) == GetScaleTrackGauge(GetLayoutCurScale())) {
- CreateEndAnchor(GetTrkEndPos(t,ep),FALSE);
- found = TRUE;
- }
- }
+ EPINX_T ep = PickUnconnectedEndPointSilent(pos, t);
+ if (ep != -1) {
+ if (GetTrkGauge(t) == GetScaleTrackGauge(GetLayoutCurScale())) {
+ CreateEndAnchor(GetTrkEndPos(t,ep),FALSE);
+ found = TRUE;
+ }
+ }
}
}
}
@@ -138,35 +140,35 @@ static STATUS_T CmdStraight( wAction_t action, coOrd pos )
if (Dl.trk && !(MyGetKeyState() & WKEY_SHIFT)) {
angle = NormalizeAngle(GetTrkEndAngle( Dl.trk, Dl.ep));
angle2 = NormalizeAngle(FindAngle(pos, Dl.pos0)-angle);
- if (angle2 > 90.0 && angle2 < 270.0)
+ if (angle2 > 90.0 && angle2 < 270.0) {
Translate( &pos, Dl.pos0, angle, FindDistance( Dl.pos0, pos ) );
- else pos = Dl.pos0;
+ } else { pos = Dl.pos0; }
} else if (SnapPos( &pos )) {
- CreateEndAnchor(pos,FALSE);
- found = TRUE;
+ CreateEndAnchor(pos,FALSE);
+ found = TRUE;
}
-
+
InfoMessage( _("Straight Track Length=%s Angle=%0.3f"),
- FormatDistance(FindDistance( Dl.pos0, pos )),
- PutAngle(FindAngle( Dl.pos0, pos )) );
+ FormatDistance(FindDistance( Dl.pos0, pos )),
+ PutAngle(FindAngle( Dl.pos0, pos )) );
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).u.l.pos[1] = pos;
- tempSegs_da.cnt = 1;
return C_CONTINUE;
case C_UP:
DYNARR_RESET(trkSeg_t,anchors_da);
- if (!Dl.down) return C_CONTINUE;
- tempSegs_da.cnt = 0;
+ if (!Dl.down) { return C_CONTINUE; }
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
if (Dl.trk && !(MyGetKeyState() & WKEY_SHIFT)) {
angle = NormalizeAngle(GetTrkEndAngle( Dl.trk, Dl.ep));
angle2 = NormalizeAngle(FindAngle(pos, Dl.pos0)-angle);
- if (angle2 > 90.0 && angle2 < 270.0)
+ if (angle2 > 90.0 && angle2 < 270.0) {
Translate( &pos, Dl.pos0, angle, FindDistance( Dl.pos0, pos ));
- else pos = Dl.pos0;
- } else SnapPos( &pos );
+ } else { pos = Dl.pos0; }
+ } else { SnapPos( &pos ); }
if ((dist=FindDistance( Dl.pos0, pos )) <= minLength) {
- ErrorMessage( MSG_TRK_TOO_SHORT, "Straight ", PutDim(fabs(minLength-dist)) );
- return C_TERMINATE;
+ ErrorMessage( MSG_TRK_TOO_SHORT, "Straight ", PutDim(fabs(minLength-dist)) );
+ return C_TERMINATE;
}
UndoStart( _("Create Straight Track"), "newStraight" );
t = NewStraightTrack( Dl.pos0, pos );
@@ -178,10 +180,12 @@ static STATUS_T CmdStraight( wAction_t action, coOrd pos )
return C_TERMINATE;
case C_REDRAW:
- if (anchors_da.cnt)
- DrawSegs( &tempD, zero, 0.0, &anchors(0), anchors_da.cnt, trackGauge, wDrawColorBlack );
- if (Dl.down)
- DrawSegs( &tempD, zero, 0.0, &tempSegs(0), tempSegs_da.cnt, trackGauge, wDrawColorBlack );
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack,
+ 0 );
+ if (Dl.down) {
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &tempSegs_da, trackGauge, wDrawColorBlack,
+ 0 );
+ }
return C_CONTINUE;
case C_CANCEL:
Dl.down = FALSE;
@@ -193,9 +197,11 @@ static STATUS_T CmdStraight( wAction_t action, coOrd pos )
}
-#include "bitmaps/straight.xpm"
+#include "bitmaps/straight.xpm3"
void InitCmdStraight( wMenu_p menu )
{
- AddMenuButton( menu, CmdStraight, "cmdStraight", _("Straight Track"), wIconCreatePixMap(straight_xpm[iconSize]), LEVEL0_50, IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_STRAIGHT, NULL );
+ AddMenuButton( menu, CmdStraight, "cmdStraight", _("Straight Track"),
+ wIconCreatePixMap(straight_xpm3[iconSize]), LEVEL0_50,
+ IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_STRAIGHT, NULL );
}
diff --git a/app/bin/cstraigh.h b/app/bin/cstraigh.h
index 1231546..bff288a 100644
--- a/app/bin/cstraigh.h
+++ b/app/bin/cstraigh.h
@@ -17,16 +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
*/
-#ifndef HAVE_CSTRAIGH_H
-#define HAVE_CSTRAIGH_H
-
-#include "common.h"
+#ifndef HAVE_CSTRAIGH_H
+#define HAVE_CSTRAIGH_H
+
+#include "common.h"
void AdjustStraightEndPt( track_p t, EPINX_T ep, coOrd pos );
track_p NewStraightTrack( coOrd p0, coOrd p1 );
BOOL_T ExtendStraightToJoin( track_p, EPINX_T, track_p, EPINX_T );
-#endif // !HAVE_CSTRAIGH_H \ No newline at end of file
+#endif // !HAVE_CSTRAIGH_H
diff --git a/app/bin/cstruct.c b/app/bin/cstruct.c
index fc13924..9006ebd 100644
--- a/app/bin/cstruct.c
+++ b/app/bin/cstruct.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 "compound.h"
@@ -30,6 +30,7 @@
#include "cselect.h"
#include "include/paramfile.h"
#include "track.h"
+#include "tbezier.h"
#include "ccurve.h"
#include "common-ui.h"
@@ -45,18 +46,20 @@ static int log_structure = 0;
static wMenu_p structPopupM;
static drawCmd_t structureD = {
- NULL,
- &screenDrawFuncs,
- 0,
- 1.0,
- 0.0,
- {0.0,0.0}, {0.0,0.0},
- Pix2CoOrd, CoOrd2Pix };
+ NULL,
+ &screenDrawFuncs,
+ 0,
+ 1.0,
+ 0.0,
+ {0.0,0.0}, {0.0,0.0},
+ Pix2CoOrd, CoOrd2Pix
+};
static wIndex_t structureHotBarCmdInx;
static wIndex_t structureInx;
static long hideStructureWindow;
-static void RedrawStructure( wDraw_p d, void * context, wWinPix_t x, wWinPix_t y );
+static void RedrawStructure( wDraw_p d, void * context, wWinPix_t x,
+ wWinPix_t y );
static wWinPix_t structureListWidths[] = { 80, 80, 220 };
static const char * structureListTitles[] = { N_("Manufacturer"), N_("Part No"), N_("Description") };
@@ -76,7 +79,8 @@ static paramData_t structurePLs[] = {
#define I_MSGWIDTH (4)
{ PD_MESSAGE, NULL, NULL, 0, I2VP(80) },
#define I_MSGHEIGHT (5)
- { PD_MESSAGE, NULL, NULL, 0, I2VP(80) } };
+ { PD_MESSAGE, NULL, NULL, 0, I2VP(80) }
+};
static paramGroup_t structurePG = { "structure", 0, structurePLs, COUNT( structurePLs ) };
@@ -91,19 +95,20 @@ static paramGroup_t structurePG = { "structure", 0, structurePLs, COUNT( structu
EXPORT turnoutInfo_t * CreateNewStructure(
- char * scale,
- char * title,
- wIndex_t segCnt,
- trkSeg_p segData,
- BOOL_T updateList )
+ char * scale,
+ char * title,
+ wIndex_t segCnt,
+ trkSeg_p segData,
+ BOOL_T updateList )
{
turnoutInfo_t * to;
#ifdef REORIGSTRUCT
coOrd orig;
#endif
- if (segCnt == 0)
- return NULL;
+ if (segCnt == 0) {
+ return NULL;
+ }
to = FindCompound( FIND_STRUCT, scale, title );
if (to == NULL) {
DYNARR_APPEND( turnoutInfo_t *, structureInfo_da, 10 );
@@ -115,6 +120,7 @@ EXPORT turnoutInfo_t * CreateNewStructure(
to->segCnt = segCnt;
to->segs = (trkSeg_p)memdup( segData, (sizeof *segData) * segCnt );
CopyPoly(to->segs,segCnt);
+ FixUpBezierSegs(to->segs, segCnt);
GetSegBounds( zero, 0.0, to->segCnt, to->segs, &to->orig, &to->size );
#ifdef REORIGSTRUCT
GetSegBounds( zero, 0.0, to->segCnt, to->segs, &orig, &to->size );
@@ -124,16 +130,19 @@ EXPORT turnoutInfo_t * CreateNewStructure(
to->orig = zero;
#endif
to->paramFileIndex = curParamFileIndex;
- if (curParamFileIndex == PARAM_CUSTOM)
+ if (curParamFileIndex == PARAM_CUSTOM) {
to->contentsLabel = MyStrdup("Custom Structures");
- else
+ } else {
to->contentsLabel = curSubContents;
+ }
to->endCnt = 0;
SetParamPaths( to, NULL );
if (updateList && structureListL != NULL) {
- FormatCompoundTitle( LABEL_TABBED|LABEL_MANUF|LABEL_PARTNO|LABEL_DESCR, to->title );
- if (message[0] != '\0')
+ FormatCompoundTitle( LABEL_TABBED|LABEL_MANUF|LABEL_PARTNO|LABEL_DESCR,
+ to->title );
+ if (message[0] != '\0') {
wListAddValue( structureListL, message, NULL, to );
+ }
}
to->barScale = curBarScale>0?curBarScale:-1;
@@ -141,7 +150,7 @@ EXPORT turnoutInfo_t * CreateNewStructure(
}
/**
- * Delete a structure definition from memory.
+ * Delete a structure definition from memory.
* \TODO Find a better way to handle Custom Structures (see CreateNewStructure)
*
* \param [IN] structure the structure to be deleted
@@ -161,9 +170,10 @@ StructureDelete(void *structure)
to->u.pier.name = NULL;
break;
case TOpierInfo:
- for(int pierInx=0;pierInx<to->u.pierInfo.cnt;pierInx++) {
- if (to->u.pierInfo.info[pierInx].name)
+ for(int pierInx=0; pierInx<to->u.pierInfo.cnt; pierInx++) {
+ if (to->u.pierInfo.info[pierInx].name) {
MyFree(to->u.pierInfo.info[pierInx].name);
+ }
to->u.pierInfo.info[pierInx].name = NULL;
}
MyFree(to->u.pierInfo.info);
@@ -188,34 +198,34 @@ StructureDelete(void *structure)
void
DeleteStructures(int fileIndex)
{
- int inx = 0;
- int startInx = -1;
- int cnt = 0;
-
- // go to the start of the block
- while (inx < structureInfo_da.cnt &&
- structureInfo(inx)->paramFileIndex != fileIndex) {
- startInx = inx++;
- }
-
- // delete them
- for (; inx < structureInfo_da.cnt &&
- structureInfo(inx)->paramFileIndex == fileIndex; inx++) {
- turnoutInfo_t * to = structureInfo(inx);
- if (to->paramFileIndex == fileIndex) {
- StructureDelete(to);
- cnt++;
- }
- }
-
- // copy down the rest of the list to fill the gap
- startInx++;
- while (inx < structureInfo_da.cnt) {
- structureInfo(startInx++) = structureInfo(inx++);
- }
-
- // and reduce the actual number
- structureInfo_da.cnt -= cnt;
+ int inx = 0;
+ int startInx = -1;
+ int cnt = 0;
+
+ // go to the start of the block
+ while (inx < structureInfo_da.cnt &&
+ structureInfo(inx)->paramFileIndex != fileIndex) {
+ startInx = inx++;
+ }
+
+ // delete them
+ for (; inx < structureInfo_da.cnt &&
+ structureInfo(inx)->paramFileIndex == fileIndex; inx++) {
+ turnoutInfo_t * to = structureInfo(inx);
+ if (to->paramFileIndex == fileIndex) {
+ StructureDelete(to);
+ cnt++;
+ }
+ }
+
+ // copy down the rest of the list to fill the gap
+ startInx++;
+ while (inx < structureInfo_da.cnt) {
+ structureInfo(startInx++) = structureInfo(inx++);
+ }
+
+ // and reduce the actual number
+ structureInfo_da.cnt -= cnt;
}
/**
@@ -230,19 +240,19 @@ DeleteStructures(int fileIndex)
* \return
*/
enum paramFileState
-GetStructureCompatibility(int paramFileIndex, SCALEINX_T scaleIndex)
-{
+GetStructureCompatibility(int paramFileIndex, SCALEINX_T scaleIndex) {
int i;
enum paramFileState ret = PARAMFILE_NOTUSABLE;
- DIST_T ratio = GetScaleRatio(scaleIndex);
- if (!IsParamValid(paramFileIndex)) {
+ if (!IsParamValid(paramFileIndex))
+ {
return(PARAMFILE_UNLOADED);
}
//Loop over all entries until an exact fit is found if none return if compatibles were found
- for (i = 0; i < structureInfo_da.cnt; i++) {
+ for (i = 0; i < structureInfo_da.cnt; i++)
+ {
turnoutInfo_t *to = structureInfo(i);
if (to->paramFileIndex == paramFileIndex) {
SCALE_FIT_T fit = CompatibleScale(FIT_STRUCTURE,to->scaleInx,scaleIndex);
@@ -261,22 +271,25 @@ GetStructureCompatibility(int paramFileIndex, SCALEINX_T scaleIndex)
}
static BOOL_T ReadStructureParam(
- char * firstLine )
+ char * firstLine )
{
char scale[10];
char *title;
turnoutInfo_t * to;
char * cp;
-static dynArr_t pierInfo_da;
+ static dynArr_t pierInfo_da;
#define pierInfo(N) DYNARR_N( pierInfo_t, pierInfo_da, N )
- if ( !GetArgs( firstLine+10, "sq", scale, &title ) )
+ if ( !GetArgs( firstLine+10, "sq", scale, &title ) ) {
return FALSE;
- if ( !ReadSegs() )
- return FALSE;
+ }
+ if ( !ReadSegs() ) {
+ return FALSE;
+ }
to = CreateNewStructure( scale, title, tempSegs_da.cnt, &tempSegs(0), FALSE );
- if (to == NULL)
+ if (to == NULL) {
return FALSE;
+ }
if (tempSpecial[0] != '\0') {
if (strncmp( tempSpecial, PIER, strlen(PIER) ) == 0) {
DYNARR_RESET( pierInfo_t, pierInfo_da );
@@ -284,14 +297,18 @@ static dynArr_t pierInfo_da;
cp = tempSpecial+strlen(PIER);
while (cp) {
DYNARR_APPEND( pierInfo_t, pierInfo_da, 10 );
- if ( !GetArgs( cp, "fqc", &pierInfo(pierInfo_da.cnt-1).height, &pierInfo(pierInfo_da.cnt-1).name, &cp ) )
+ if ( !GetArgs( cp, "fqc", &pierInfo(pierInfo_da.cnt-1).height,
+ &pierInfo(pierInfo_da.cnt-1).name, &cp ) ) {
return FALSE;
+ }
}
to->u.pierInfo.cnt = pierInfo_da.cnt;
- to->u.pierInfo.info = (pierInfo_t*)MyMalloc( pierInfo_da.cnt * sizeof *(pierInfo_t*)NULL );
- memcpy( to->u.pierInfo.info, &pierInfo(0), pierInfo_da.cnt * sizeof *(pierInfo_t*)NULL );
+ to->u.pierInfo.info = (pierInfo_t*)MyMalloc( pierInfo_da.cnt * sizeof *
+ (pierInfo_t*)NULL );
+ memcpy( to->u.pierInfo.info, &pierInfo(0),
+ pierInfo_da.cnt * sizeof *(pierInfo_t*)NULL );
} else {
- InputError("Unknown special case", TRUE);
+ InputError("Unknown special case", TRUE);
}
}
if (tempCustom[0] != '\0') {
@@ -302,7 +319,8 @@ static dynArr_t pierInfo_da;
}
-EXPORT turnoutInfo_t * StructAdd( long mode, SCALEINX_T scale, wList_p list, coOrd * maxDim )
+EXPORT turnoutInfo_t * StructAdd( long mode, SCALEINX_T scale, wList_p list,
+ coOrd * maxDim )
{
wIndex_t inx;
turnoutInfo_t * to, *to1=NULL;
@@ -310,11 +328,12 @@ EXPORT turnoutInfo_t * StructAdd( long mode, SCALEINX_T scale, wList_p list, coO
for ( inx = 0; inx < structureInfo_da.cnt; inx++ ) {
to = structureInfo(inx);
if ( IsParamValid(to->paramFileIndex) &&
- to->segCnt > 0 &&
- (FIT_NONE != CompatibleScale( FIT_STRUCTURE, to->scaleInx, scale )) &&
- to->segCnt != 0 ) {
- if (to1 == NULL)
+ to->segCnt > 0 &&
+ (FIT_NONE != CompatibleScale( FIT_STRUCTURE, to->scaleInx, scale )) &&
+ to->segCnt != 0 ) {
+ if (to1 == NULL) {
to1 = to;
+ }
if ( to == curStructure ) {
to1 = to;
structureInx = wListGetCount( list );
@@ -323,10 +342,12 @@ EXPORT turnoutInfo_t * StructAdd( long mode, SCALEINX_T scale, wList_p list, coO
if (message[0] != '\0') {
wListAddValue( list, message, NULL, to );
if (maxDim) {
- if (to->size.x > maxDim->x)
+ if (to->size.x > maxDim->x) {
maxDim->x = to->size.x;
- if (to->size.y > maxDim->y)
- maxDim->y = to->size.y;
+ }
+ if (to->size.y > maxDim->y) {
+ maxDim->y = to->size.y;
+ }
}
}
}
@@ -342,11 +363,12 @@ EXPORT turnoutInfo_t * StructAdd( long mode, SCALEINX_T scale, wList_p list, coO
*/
static void DrawStructure(
- track_p t,
- drawCmd_p d,
- wDrawColor color )
+ track_p t,
+ drawCmd_p d,
+ wDrawColor color )
{
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(t, T_STRUCTURE, extraDataCompound_t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(t, T_STRUCTURE,
+ extraDataCompound_t);
d->options &= ~DC_NOTSOLIDLINE;
switch(xx->lineType) {
@@ -374,36 +396,37 @@ static void DrawStructure(
DrawSegs( d, xx->orig, xx->angle, xx->segs, xx->segCnt, 0.0, color );
d->options &= ~DC_NOTSOLIDLINE;
if ( ((d->options & DC_SIMPLE)==0) &&
- (labelWhen == 2 || (labelWhen == 1 && (d->options&DC_PRINT))) &&
- labelScale >= d->scale &&
- ( GetTrkBits( t ) & TB_HIDEDESC ) == 0 ) {
+ (labelWhen == 2 || (labelWhen == 1 && (d->options&DC_PRINT))) &&
+ labelScale >= d->scale &&
+ ( GetTrkBits( t ) & TB_HIDEDESC ) == 0 ) {
DrawCompoundDescription( t, d, color );
}
}
static BOOL_T ReadStructure(
- char * line )
+ char * line )
{
return ReadCompound( line+10, T_STRUCTURE );
}
static ANGLE_T GetAngleStruct(
- track_p trk,
- coOrd pos,
- EPINX_T * ep0,
- EPINX_T * ep1 )
+ track_p trk,
+ coOrd pos,
+ EPINX_T * ep0,
+ EPINX_T * ep1 )
{
- struct extraDataCompound_t * xx = GET_EXTRA_DATA(trk, T_STRUCTURE, extraDataCompound_t);
+ struct extraDataCompound_t * xx = GET_EXTRA_DATA(trk, T_STRUCTURE,
+ extraDataCompound_t);
ANGLE_T angle;
pos.x -= xx->orig.x;
pos.y -= xx->orig.y;
Rotate( &pos, zero, -xx->angle );
angle = GetAngleSegs( xx->segCnt, xx->segs, &pos, NULL, NULL, NULL, NULL, NULL);
- if ( ep0 ) *ep0 = -1;
- if ( ep1 ) *ep1 = -1;
+ if ( ep0 ) { *ep0 = -1; }
+ if ( ep1 ) { *ep1 = -1; }
return NormalizeAngle( angle+xx->angle );
}
@@ -423,8 +446,10 @@ static BOOL_T QueryStructure( track_p trk, int query )
static wBool_t CompareStruct( track_cp trk1, track_cp trk2 )
{
- struct extraDataCompound_t *xx1 = GET_EXTRA_DATA( trk1, T_STRUCTURE, extraDataCompound_t );
- struct extraDataCompound_t *xx2 = GET_EXTRA_DATA( trk2, T_STRUCTURE, extraDataCompound_t );
+ struct extraDataCompound_t *xx1 = GET_EXTRA_DATA( trk1, T_STRUCTURE,
+ extraDataCompound_t );
+ struct extraDataCompound_t *xx2 = GET_EXTRA_DATA( trk2, T_STRUCTURE,
+ extraDataCompound_t );
char * cp = message + strlen(message);
REGRESS_CHECK_POS( "Orig", xx1, xx2, orig )
REGRESS_CHECK_ANGLE( "Angle", xx1, xx2, angle )
@@ -439,44 +464,46 @@ static wBool_t CompareStruct( track_cp trk1, track_cp trk2 )
}
static trackCmd_t structureCmds = {
- "STRUCTURE",
- DrawStructure,
- DistanceCompound,
- DescribeCompound,
- DeleteCompound,
- WriteCompound,
- ReadStructure,
- MoveCompound,
- RotateCompound,
- RescaleCompound,
- NULL,
- GetAngleStruct,
- NULL, /* split */
- NULL, /* traverse */
- EnumerateCompound,
- NULL, /* redraw */
- NULL, /* trim */
- NULL, /* merge */
- NULL, /* modify */
- NULL, /* getLength */
- NULL, /* getTrkParams */
- NULL, /* moveEndPt */
- QueryStructure,
- UngroupCompound,
- FlipCompound,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- CompareStruct };
+ "STRUCTURE",
+ DrawStructure,
+ DistanceCompound,
+ DescribeCompound,
+ DeleteCompound,
+ WriteCompound,
+ ReadStructure,
+ MoveCompound,
+ RotateCompound,
+ RescaleCompound,
+ NULL,
+ GetAngleStruct,
+ NULL, /* split */
+ NULL, /* traverse */
+ EnumerateCompound,
+ NULL, /* redraw */
+ NULL, /* trim */
+ NULL, /* merge */
+ NULL, /* modify */
+ NULL, /* getLength */
+ NULL, /* getTrkParams */
+ NULL, /* moveEndPt */
+ QueryStructure,
+ UngroupCompound,
+ FlipCompound,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ CompareStruct
+};
static paramData_t pierPLs[] = {
- { PD_DROPLIST, &pierListInx, "inx", 0, I2VP(50), N_("Pier Number") } };
+ { PD_DROPLIST, &pierListInx, "inx", 0, I2VP(50), N_("Pier Number") }
+};
static paramGroup_t pierPG = { "structure-pier", 0, pierPLs, COUNT( pierPLs ) };
#define pierL ((wList_p)pierPLs[0].control)
@@ -493,13 +520,15 @@ static void ShowPierL( void )
}
currInx = wListGetIndex( pierL );
wListClear( pierL );
- for (inx=0;inx<curStructure->u.pierInfo.cnt; inx++) {
+ for (inx=0; inx<curStructure->u.pierInfo.cnt; inx++) {
wListAddValue( pierL, curStructure->u.pierInfo.info[inx].name, NULL, NULL );
}
- if ( currInx < 0 )
- currInx = 0;
- if ( currInx >= curStructure->u.pierInfo.cnt )
- currInx = curStructure->u.pierInfo.cnt-1;
+ if ( currInx < 0 ) {
+ currInx = 0;
+ }
+ if ( currInx >= curStructure->u.pierInfo.cnt ) {
+ currInx = curStructure->u.pierInfo.cnt-1;
+ }
wListSetIndex( pierL, currInx );
controls[0] = (wControl_p)pierL;
controls[1] = NULL;
@@ -546,21 +575,25 @@ static void RescaleStructure( void )
static void structureChange( long changes )
{
static char * lastScaleName = NULL;
- if (structureW == NULL)
+ if (structureW == NULL) {
return;
+ }
wListSetIndex( structureListL, 0 );
if ( (!wWinIsVisible(structureW)) ||
- ( ((changes&CHANGE_SCALE) == 0 || lastScaleName == curScaleName) &&
- (changes&CHANGE_PARAMS) == 0 ) )
+ ( ((changes&CHANGE_SCALE) == 0 || lastScaleName == curScaleName) &&
+ (changes&CHANGE_PARAMS) == 0 ) ) {
return;
+ }
lastScaleName = curScaleName;
//curStructure = NULL;
wControlShow( (wControl_p)structureListL, FALSE );
wListClear( structureListL );
maxStructureDim.x = maxStructureDim.y = 0.0;
- if (structureInfo_da.cnt <= 0)
+ if (structureInfo_da.cnt <= 0) {
return;
- curStructure = StructAdd( LABEL_TABBED|LABEL_MANUF|LABEL_PARTNO|LABEL_DESCR, GetLayoutCurScale(), structureListL, &maxStructureDim );
+ }
+ curStructure = StructAdd( LABEL_TABBED|LABEL_MANUF|LABEL_PARTNO|LABEL_DESCR,
+ GetLayoutCurScale(), structureListL, &maxStructureDim );
wListSetIndex( structureListL, structureInx );
wControlShow( (wControl_p)structureListL, TRUE );
if (curStructure == NULL) {
@@ -576,18 +609,21 @@ static void structureChange( long changes )
-static void RedrawStructure( wDraw_p d, void * context, wWinPix_t x, wWinPix_t y )
+static void RedrawStructure( wDraw_p d, void * context, wWinPix_t x,
+ wWinPix_t y )
{
RescaleStructure();
-LOG( log_structure, 2, ( "SelStructure(%s)\n", (curStructure?curStructure->title:"<NULL>") ) )
+ LOG( log_structure, 2, ( "SelStructure(%s)\n",
+ (curStructure?curStructure->title:"<NULL>") ) )
wDrawClear( structureD.d );
if (curStructure == NULL) {
return;
}
structureD.orig.x = -0.10*structureD.scale + curStructure->orig.x;
- structureD.orig.y = (curStructure->size.y + curStructure->orig.y) - structureD.size.y + trackGauge;
+ structureD.orig.y = (curStructure->size.y + curStructure->orig.y) -
+ structureD.size.y + trackGauge;
DrawSegs( &structureD, zero, 0.0, curStructure->segs, curStructure->segCnt,
- 0.0, wDrawColorBlack );
+ 0.0, wDrawColorBlack );
sprintf( message, _("Scale %d:1"), (int)structureD.scale );
ParamLoadMessage( &structurePG, I_MSGSCALE, message );
sprintf( message, _("Width %s"), FormatDistance(curStructure->size.x) );
@@ -598,13 +634,14 @@ LOG( log_structure, 2, ( "SelStructure(%s)\n", (curStructure?curStructure->title
static void StructureDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
turnoutInfo_t * to;
- if ( inx != I_LIST ) return;
- to = (turnoutInfo_t*)wListGetItemContext( (wList_p)pg->paramPtr[inx].control, (wIndex_t)*(long*)valueP );
+ if ( inx != I_LIST ) { return; }
+ to = (turnoutInfo_t*)wListGetItemContext( (wList_p)pg->paramPtr[inx].control,
+ (wIndex_t)*(long*)valueP );
NewStructure();
curStructure = to;
ShowPierL();
@@ -631,10 +668,10 @@ static void DoStructOk( void )
* STATE INFO
*/
static struct {
- int state;
- coOrd pos;
- ANGLE_T angle;
- } Dst;
+ int state;
+ coOrd pos;
+ ANGLE_T angle;
+} Dst;
static track_p pierTrk;
static EPINX_T pierEp;
@@ -642,70 +679,78 @@ static EPINX_T pierEp;
static dynArr_t anchors_da;
#define anchors(N) DYNARR_N(trkSeg_t,anchors_da,N)
-void static CreateArrowAnchor(coOrd pos,ANGLE_T a,DIST_T len) {
+void static CreateArrowAnchor(coOrd pos,ANGLE_T a,DIST_T len)
+{
DYNARR_APPEND(trkSeg_t,anchors_da,1);
int i = anchors_da.cnt-1;
anchors(i).type = SEG_STRLIN;
- anchors(i).width = 0;
+ anchors(i).lineWidth = 0;
anchors(i).u.l.pos[0] = pos;
Translate(&anchors(i).u.l.pos[1],pos,NormalizeAngle(a+135),len);
anchors(i).color = wDrawColorBlue;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
i = anchors_da.cnt-1;
anchors(i).type = SEG_STRLIN;
- anchors(i).width = 0;
+ anchors(i).lineWidth = 0;
anchors(i).u.l.pos[0] = pos;
Translate(&anchors(i).u.l.pos[1],pos,NormalizeAngle(a-135),len);
anchors(i).color = wDrawColorBlue;
}
-void static CreateRotateAnchor(coOrd pos) {
+void static CreateRotateAnchor(coOrd pos)
+{
DIST_T d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
int i = anchors_da.cnt-1;
anchors(i).type = SEG_CRVLIN;
- anchors(i).width = 0.5;
+ anchors(i).lineWidth = 0.5;
anchors(i).u.c.center = pos;
anchors(i).u.c.a0 = 180.0;
anchors(i).u.c.a1 = 360.0;
anchors(i).u.c.radius = d*2;
anchors(i).color = wDrawColorAqua;
coOrd head; //Arrows
- for (int j=0;j<3;j++) {
+ for (int j=0; j<3; j++) {
Translate(&head,pos,j*120,d*2);
CreateArrowAnchor(head,NormalizeAngle((j*120)+90),d);
}
}
-void static CreateMoveAnchor(coOrd pos) {
+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);
}
static ANGLE_T PlaceStructure(
- coOrd p0,
- coOrd p1,
- coOrd origPos,
- coOrd * resPos,
- ANGLE_T * resAngle )
+ coOrd p0,
+ coOrd p1,
+ coOrd origPos,
+ coOrd * resPos,
+ ANGLE_T * resAngle )
{
coOrd p2 = p1;
if (curStructure->special == TOpierInfo) {
pierTrk = OnTrack( &p1, FALSE, TRUE );
if (pierTrk != NULL) {
- if (GetTrkType(pierTrk) == T_TURNOUT) {
- pierEp = PickEndPoint( p1, pierTrk );
- if (pierEp >= 0) {
- *resPos = GetTrkEndPos(pierTrk, pierEp);
- *resAngle = NormalizeAngle(GetTrkEndAngle(pierTrk, pierEp)-90.0);
- return TRUE;
+ if (((MyGetKeyState() & WKEY_ALT)==0) == magneticSnap ) {
+ if (GetTrkType(pierTrk) == T_TURNOUT) {
+ pierEp = PickEndPoint( p1, pierTrk );
+ if (pierEp >= 0) {
+ *resPos = GetTrkEndPos(pierTrk, pierEp);
+ *resAngle = NormalizeAngle(GetTrkEndAngle(pierTrk, pierEp)-90.0);
+ return TRUE;
+ }
}
}
*resAngle = NormalizeAngle(GetAngleAtPoint( pierTrk, p1, NULL, NULL )+90.0);
- if ( NormalizeAngle( FindAngle( p1, p2 ) - *resAngle + 90.0 ) > 180.0 )
+ if ( NormalizeAngle( FindAngle( p1, p2 ) - *resAngle + 90.0 ) > 180.0 ) {
*resAngle = NormalizeAngle( *resAngle + 180.0 );
+ }
*resPos = p1;
return TRUE;
}
@@ -722,45 +767,47 @@ static void NewStructure( void )
struct extraDataCompound_t *xx;
wIndex_t pierInx;
- if (curStructure->segCnt < 1) {
- AbortProg( "newStructure: bad cnt" );
- }
- if (Dst.state == 0)
+ CHECK( curStructure->segCnt >= 1 );
+ if (Dst.state == 0) {
return;
+ }
if (curStructure->special == TOpierInfo &&
- curStructure->u.pierInfo.cnt>1 &&
- wListGetIndex(pierL) == -1) {
+ curStructure->u.pierInfo.cnt>1 &&
+ wListGetIndex(pierL) == -1) {
return;
}
UndoStart( _("Place Structure"), "newStruct" );
- trk = NewCompound( T_STRUCTURE, 0, Dst.pos, Dst.angle, curStructure->title, 0, NULL, NULL, curStructure->segCnt, curStructure->segs );
+ trk = NewCompound( T_STRUCTURE, 0, Dst.pos, Dst.angle, curStructure->title, 0,
+ NULL, NULL, curStructure->segCnt, curStructure->segs );
xx = GET_EXTRA_DATA(trk, T_STRUCTURE, extraDataCompound_t);
switch(curStructure->special) {
- case TOnormal:
- xx->special = TOnormal;
- break;
- case TOpierInfo:
- xx->special = TOpier;
- if (curStructure->u.pierInfo.cnt>1) {
- pierInx = wListGetIndex(pierL);
- if (pierInx < 0 || pierInx >= curStructure->u.pierInfo.cnt)
- pierInx = 0;
- } else {
+ case TOnormal:
+ xx->special = TOnormal;
+ break;
+ case TOpierInfo:
+ xx->special = TOpier;
+ if (curStructure->u.pierInfo.cnt>1) {
+ pierInx = wListGetIndex(pierL);
+ if (pierInx < 0 || pierInx >= curStructure->u.pierInfo.cnt) {
pierInx = 0;
}
- xx->u.pier.height = curStructure->u.pierInfo.info[pierInx].height;
- xx->u.pier.name = curStructure->u.pierInfo.info[pierInx].name;
- if (pierTrk != NULL && xx->u.pier.height >= 0 ) {
- UpdateTrkEndElev( pierTrk, pierEp, ELEV_DEF, xx->u.pier.height, NULL );
- }
- break;
- default:
- AbortProg("bad special");
+ } else {
+ pierInx = 0;
+ }
+ xx->u.pier.height = curStructure->u.pierInfo.info[pierInx].height;
+ xx->u.pier.name = curStructure->u.pierInfo.info[pierInx].name;
+ if (pierTrk != NULL && xx->u.pier.height >= 0 ) {
+ UpdateTrkEndElev( pierTrk, pierEp, ELEV_DEF, xx->u.pier.height, NULL );
+ }
+ break;
+ default:
+ CHECKMSG( FALSE, ("bad special %d", (int) (curStructure->special) ) );
}
-
+
SetTrkVisible( trk, TRUE );
SetTrkNoTies( trk, FALSE);
SetTrkBridge( trk, FALSE);
+ SetTrkRoadbed( trk, FALSE);
DrawNewTrack( trk );
/*DrawStructure( trk, &mainD, wDrawColorBlack, 0 );*/
@@ -773,8 +820,9 @@ static void NewStructure( void )
static void StructRotate( void * pangle )
{
- if (Dst.state == 0)
+ if (Dst.state == 0) {
return;
+ }
ANGLE_T angle = (ANGLE_T)VP2L(pangle);
angle /= 1000.0;
Dst.pos = cmdMenuPos;
@@ -785,8 +833,8 @@ static void StructRotate( void * pangle )
EXPORT STATUS_T CmdStructureAction(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
ANGLE_T angle;
@@ -799,9 +847,15 @@ EXPORT STATUS_T CmdStructureAction(
switch (action & 0xFF) {
case C_START:
+ if (!magneticSnap) {
+ InfoMessage(_("+Alt for Magnetic Snap"));
+ } else {
+ InfoMessage(_("+Alt to inhibit Magnetic Snap"));
+ }
+
DYNARR_RESET(trkSeg_t,anchors_da);
Dst.state = 0;
- Dst.angle = 00.0;
+ Dst.angle = 0.0;
ShowPierL();
SetAllTrackSelect( FALSE );
return C_CONTINUE;
@@ -818,8 +872,14 @@ EXPORT STATUS_T CmdStructureAction(
case C_DOWN:
DYNARR_RESET(trkSeg_t,anchors_da);
- if ( curStructure == NULL ) return C_CONTINUE;
+ if ( curStructure == NULL ) { return C_CONTINUE; }
ShowPierL();
+ if ((MyGetKeyState()&WKEY_ALT) == 0) {
+ angle = Dst.angle;
+ if (SnapPosAngle(&pos, &angle)) {
+ Dst.angle = angle;
+ }
+ }
Dst.pos = pos;
rot0 = pos;
origPos = Dst.pos;
@@ -831,15 +891,26 @@ EXPORT STATUS_T CmdStructureAction(
case C_MOVE:
DYNARR_RESET(trkSeg_t,anchors_da);
- if ( curStructure == NULL ) return C_CONTINUE;
+ if ( curStructure == NULL ) { return C_CONTINUE; }
+ if ((MyGetKeyState()&WKEY_ALT) == 0) {
+ angle = Dst.angle;
+ if (SnapPosAngle(&pos, &angle)) {
+ Dst.angle = angle;
+ }
+ }
PlaceStructure( rot0, pos, origPos, &Dst.pos, &Dst.angle );
CreateMoveAnchor(pos);
- InfoMessage( "[ %0.3f %0.3f ]", pos.x - origPos.x, pos.y - origPos.y );
+ if (!magneticSnap) {
+ InfoMessage(_("+Alt for Magnetic Snap"));
+ } else {
+ InfoMessage(_("+Alt to inhibit Magnetic Snap"));
+ }
+ // InfoMessage( "[ %0.3f %0.3f ]", pos.x - origPos.x, pos.y - origPos.y );
return C_CONTINUE;
case C_RDOWN:
DYNARR_RESET(trkSeg_t,anchors_da);
- if ( curStructure == NULL ) return C_CONTINUE;
+ if ( curStructure == NULL ) { return C_CONTINUE; }
if (Dst.state == 0) {
Dst.pos = pos; // If first, use pos, otherwise use current
}
@@ -854,7 +925,7 @@ EXPORT STATUS_T CmdStructureAction(
case C_RMOVE:
DYNARR_RESET(trkSeg_t,anchors_da);
- if ( curStructure == NULL ) return C_CONTINUE;
+ if ( curStructure == NULL ) { return C_CONTINUE; }
rot1 = pos;
if ( FindDistance( rot0, rot1 ) > (6.0/BASE_DPI)*mainD.scale ) {
angle = FindAngle( rot0, rot1 );
@@ -867,17 +938,18 @@ EXPORT STATUS_T CmdStructureAction(
Dst.angle = NormalizeAngle( origAngle + angle );
Rotate( &Dst.pos, rot0, angle );
}
- InfoMessage( _("Angle = %0.3f"), Dst.angle );
+ // InfoMessage( _("Angle = %0.3f"), Dst.angle );
Dst.state = 2;
CreateRotateAnchor(rot0);
return C_CONTINUE;
-
+
case C_RUP:
case C_UP:
DYNARR_RESET(trkSeg_t,anchors_da);
CreateMoveAnchor(pos);
Dst.state = 1;
- InfoMessage(_("Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter to accept, Esc to Cancel"));
+ InfoMessage(
+ _("Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter to accept, Esc to Cancel"));
return C_CONTINUE;
case C_CMDMENU:
@@ -888,22 +960,25 @@ EXPORT STATUS_T CmdStructureAction(
case C_REDRAW:
wSetCursor(mainD.d,defaultCursor);
- if (Dst.state)
+ if (Dst.state) {
DrawSegs( &tempD, Dst.pos, Dst.angle,
- curStructure->segs, curStructure->segCnt, 0.0, selectedColor );
+ curStructure->segs, curStructure->segCnt, 0.0, selectedColor );
+ }
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack,
+ 0 );
if (anchors_da.cnt>0) {
- DrawSegs( &tempD, zero, 0.0, &anchors(0), anchors_da.cnt, trackGauge, wDrawColorBlack );
- wSetCursor(mainD.d,wCursorNone);
- }
- if (Dst.state == 2)
+ wSetCursor(mainD.d,wCursorNone);
+ }
+ if (Dst.state == 2) {
DrawLine( &tempD, rot0, rot1, 0, wDrawColorBlack );
+ }
return C_CONTINUE;
case C_LCLICK:
DYNARR_RESET(trkSeg_t,anchors_da);
- if ( curStructure == NULL ) return C_CONTINUE;
+ if ( curStructure == NULL ) { return C_CONTINUE; }
CmdStructureAction( C_DOWN, pos );
- CmdStructureAction( C_UP, pos );
+ CmdStructureAction( C_UP, pos );
return C_CONTINUE;
case C_CANCEL:
@@ -915,9 +990,10 @@ EXPORT STATUS_T CmdStructureAction(
return C_TERMINATE;
case C_TEXT:
- if ((action>>8) != ' ')
+ if ((action>>8) != ' ') {
return C_CONTINUE;
- /*no break*/
+ }
+ /*no break*/
case C_OK:
DYNARR_RESET(trkSeg_t,anchors_da);
NewStructure();
@@ -926,10 +1002,11 @@ EXPORT STATUS_T CmdStructureAction(
case C_FINISH:
DYNARR_RESET(trkSeg_t,anchors_da);
- if (Dst.state != 0)
+ if (Dst.state != 0) {
CmdStructureAction( C_OK, pos );
- else
+ } else {
CmdStructureAction( C_CANCEL, pos );
+ }
return C_TERMINATE;
default:
@@ -939,8 +1016,8 @@ EXPORT STATUS_T CmdStructureAction(
static STATUS_T CmdStructure(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
wIndex_t structureIndex;
@@ -950,7 +1027,9 @@ static STATUS_T CmdStructure(
case C_START:
if (structureW == NULL) {
- structureW = ParamCreateDialog( &structurePG, MakeWindowTitle(_("Structure")), _("Close"), (paramActionOkProc)DoStructOk, wHide, TRUE, NULL, F_RESIZE, StructureDlgUpdate );
+ structureW = ParamCreateDialog( &structurePG, MakeWindowTitle(_("Structure")),
+ _("Close"), (paramActionOkProc)DoStructOk, wHide, TRUE, NULL, F_RESIZE,
+ StructureDlgUpdate );
RegisterChangeNotification( structureChange );
}
ParamDialogOkActive( &structurePG, FALSE );
@@ -986,17 +1065,18 @@ static STATUS_T CmdStructure(
if (MyGetKeyState()&WKEY_CTRL) {
return CmdStructureAction( C_RDOWN, pos );
}
- /* no break*/
+ /* no break*/
case C_RDOWN:
ParamDialogOkActive( &structurePG, TRUE );
- if (hideStructureWindow)
+ if (hideStructureWindow) {
wHide( structureW );
+ }
return CmdStructureAction( action, pos );
case C_MOVE:
if (MyGetKeyState()&WKEY_CTRL) {
return CmdStructureAction( C_RMOVE, pos );
}
- /*no break*/
+ /*no break*/
case C_RMOVE:
return CmdStructureAction( action, pos );
case C_RUP:
@@ -1004,9 +1084,11 @@ static STATUS_T CmdStructure(
if (MyGetKeyState()&WKEY_CTRL) {
return CmdStructureAction( C_RUP, pos );
}
- if (hideStructureWindow)
+ if (hideStructureWindow) {
wShow( structureW );
- InfoMessage( _("Left drag to move, right drag to rotate, or press Return or click Ok to finalize") );
+ }
+ InfoMessage(
+ _("Left drag to move, right drag to rotate, or press Return or click Ok to finalize") );
return CmdStructureAction( action, pos );
return C_CONTINUE;
@@ -1016,7 +1098,8 @@ static STATUS_T CmdStructure(
case C_CANCEL:
wHide( structureW );
- /*no break*/
+ return C_CANCEL;
+
case C_REDRAW:
case C_TEXT:
case C_OK:
@@ -1032,10 +1115,10 @@ static STATUS_T CmdStructure(
static char * CmdStructureHotBarProc(
- hotBarProc_e op,
- void * data,
- drawCmd_p d,
- coOrd * origP )
+ hotBarProc_e op,
+ void * data,
+ drawCmd_p d,
+ coOrd * origP )
{
turnoutInfo_t * to = (turnoutInfo_t*)data;
switch ( op ) {
@@ -1046,8 +1129,9 @@ static char * CmdStructureHotBarProc(
return NULL;
case HB_LISTTITLE:
FormatCompoundTitle( listLabels, to->title );
- if (message[0] == '\0')
+ if (message[0] == '\0') {
FormatCompoundTitle( listLabels|LABEL_DESCR, to->title );
+ }
return message;
case HB_BARTITLE:
FormatCompoundTitle( hotBarLabels<<1, to->title );
@@ -1071,18 +1155,22 @@ EXPORT void AddHotBarStructures( void )
for ( inx=0; inx < structureInfo_da.cnt; inx ++ ) {
to = structureInfo(inx);
if ( !( IsParamValid(to->paramFileIndex) &&
- to->segCnt > 0 &&
- (FIT_NONE != CompatibleScale( FIT_STRUCTURE, to->scaleInx, GetLayoutCurScale())) ) )
- /*( (strcmp( to->scale, "*" ) == 0 && strcasecmp( curScaleName, "DEMO" ) != 0 ) ||
- strncasecmp( to->scale, curScaleName, strlen(to->scale) ) == 0 ) ) )*/
- continue;
- AddHotBarElement( to->contentsLabel, to->size, to->orig, FALSE, FALSE, to->barScale, to, CmdStructureHotBarProc );
+ to->segCnt > 0 &&
+ (FIT_NONE != CompatibleScale( FIT_STRUCTURE, to->scaleInx,
+ GetLayoutCurScale())) ) )
+ /*( (strcmp( to->scale, "*" ) == 0 && strcasecmp( curScaleName, "DEMO" ) != 0 ) ||
+ strncasecmp( to->scale, curScaleName, strlen(to->scale) ) == 0 ) ) )*/
+ {
+ continue;
+ }
+ AddHotBarElement( to->contentsLabel, to->size, to->orig, FALSE, FALSE,
+ to->barScale, to, CmdStructureHotBarProc );
}
}
static STATUS_T CmdStructureHotBar(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
switch (action & 0xFF) {
@@ -1094,9 +1182,10 @@ static STATUS_T CmdStructureHotBar(
}
FormatCompoundTitle( listLabels|LABEL_DESCR, curStructure->title );
InfoMessage( _("Place %s and draw into position"), message );
- wIndex_t listIndex = FindListItemByContext( structureListL, curStructure );
- if ( listIndex >= 0 )
- structureInx = listIndex;
+ wIndex_t listIndex = FindListItemByContext( structureListL, curStructure );
+ if ( listIndex >= 0 ) {
+ structureInx = listIndex;
+ }
ParamLoadControls( &structurePG );
ParamGroupRecord( &structurePG );
return CmdStructureAction( action, pos );
@@ -1109,6 +1198,9 @@ static STATUS_T CmdStructureHotBar(
if (MyGetKeyState()&WKEY_CTRL) {
return CmdStructureAction( C_RDOWN, pos );
}
+ if ((MyGetKeyState()&WKEY_ALT) == 0) {
+ SnapPos(&pos);
+ }
return CmdStructureAction( action, pos );
case C_RMOVE:
@@ -1116,6 +1208,9 @@ static STATUS_T CmdStructureHotBar(
if (MyGetKeyState()&WKEY_CTRL) {
return CmdStructureAction( C_RMOVE, pos );
}
+ if ((MyGetKeyState()&WKEY_ALT) == 0) {
+ SnapPos(&pos);
+ }
return CmdStructureAction( action, pos );
case C_RUP:
@@ -1123,31 +1218,37 @@ static STATUS_T CmdStructureHotBar(
if (MyGetKeyState()&WKEY_CTRL) {
return CmdStructureAction( C_RUP, pos );
}
- InfoMessage( _("Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter to accept, Esc to Cancel") );
+ InfoMessage(
+ _("Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter to accept, Esc to Cancel") );
return CmdStructureAction( action, pos );
case C_TEXT:
- if ((action>>8) != ' ')
+ if ((action>>8) != ' ') {
return C_CONTINUE;
- /*no break*/
+ }
+ /*no break*/
case C_OK:
CmdStructureAction( action, pos );
return C_CONTINUE;
case C_CANCEL:
HotBarCancel();
- /* no break*/
+ /* no break*/
default:
return CmdStructureAction( action, pos );
}
}
-#include "bitmaps/building.xpm"
+#include "bitmaps/building.xpm3"
EXPORT void InitCmdStruct( wMenu_p menu )
{
- AddMenuButton( menu, CmdStructure, "cmdStructure", _("Structure"), wIconCreatePixMap(building_xpm[iconSize]), LEVEL0_50, IC_WANT_MOVE|IC_STICKY|IC_CMDMENU|IC_POPUP2, ACCL_STRUCTURE, NULL );
- structureHotBarCmdInx = AddMenuButton( menu, CmdStructureHotBar, "cmdStructureHotBar", "", NULL, LEVEL0_50, IC_WANT_MOVE|IC_STICKY|IC_CMDMENU|IC_POPUP2, 0, NULL );
+ AddMenuButton( menu, CmdStructure, "cmdStructure", _("Structure"),
+ wIconCreatePixMap(building_xpm3[iconSize]), LEVEL0_50,
+ IC_WANT_MOVE|IC_STICKY|IC_CMDMENU|IC_POPUP2, ACCL_STRUCTURE, NULL );
+ structureHotBarCmdInx = AddMenuButton( menu, CmdStructureHotBar,
+ "cmdStructureHotBar", "", NULL, LEVEL0_50,
+ IC_WANT_MOVE|IC_STICKY|IC_CMDMENU|IC_POPUP2, 0, NULL );
ParamRegister( &structurePG );
if ( structPopupM == NULL ) {
structPopupM = MenuRegister( "Structure Rotate" );
diff --git a/app/bin/cswitchmotor.c b/app/bin/cswitchmotor.c
index 563e4b8..7bdbbcf 100644
--- a/app/bin/cswitchmotor.c
+++ b/app/bin/cswitchmotor.c
@@ -44,7 +44,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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
*
*/
@@ -56,7 +56,6 @@
#include "fileio.h"
#include "param.h"
#include "track.h"
-#include "trackx.h"
#include "common-ui.h"
#ifdef UTFCONVERT
#include "include/utf8convert.h"
@@ -74,7 +73,8 @@ static drawCmd_t switchmotorD = {
1.0,
0.0,
{0.0,0.0}, {0.0,0.0},
- Pix2CoOrd, CoOrd2Pix };
+ Pix2CoOrd, CoOrd2Pix
+};
static char switchmotorName[STR_SHORT_SIZE];
static char switchmotorNormal[STR_LONG_SIZE];
@@ -86,10 +86,10 @@ static track_p last_motor;
static track_p first_motor;
static paramData_t switchmotorPLs[] = {
-/*0*/ { PD_STRING, switchmotorName, "name", PDO_NOPREF|PDO_NOTBLANK, I2VP(200), N_("Name"), 0, 0, sizeof(switchmotorName)},
-/*1*/ { PD_STRING, switchmotorNormal, "normal", PDO_NOPREF, I2VP(350), N_("Normal"), 0, 0, sizeof(switchmotorNormal)},
-/*2*/ { PD_STRING, switchmotorReverse, "reverse", PDO_NOPREF, I2VP(350), N_("Reverse"), 0, 0, sizeof(switchmotorReverse)},
-/*3*/ { PD_STRING, switchmotorPointSense, "pointSense", PDO_NOPREF, I2VP(350), N_("Point Sense"), 0, 0, sizeof(switchmotorPointSense)}
+ /*0*/ { PD_STRING, switchmotorName, "name", PDO_NOPREF|PDO_NOTBLANK, I2VP(200), N_("Name"), 0, 0, sizeof(switchmotorName)},
+ /*1*/ { PD_STRING, switchmotorNormal, "normal", PDO_NOPREF, I2VP(350), N_("Normal"), 0, 0, sizeof(switchmotorNormal)},
+ /*2*/ { PD_STRING, switchmotorReverse, "reverse", PDO_NOPREF, I2VP(350), N_("Reverse"), 0, 0, sizeof(switchmotorReverse)},
+ /*3*/ { PD_STRING, switchmotorPointSense, "pointSense", PDO_NOPREF, I2VP(350), N_("Point Sense"), 0, 0, sizeof(switchmotorPointSense)}
};
static paramGroup_t switchmotorPG = { "switchmotor", 0, switchmotorPLs, COUNT( switchmotorPLs ) };
@@ -105,11 +105,11 @@ static track_p switchmotorEditTrack;
static paramIntegerRange_t r0_999999 = { 0, 999999 };
static paramData_t switchmotorEditPLs[] = {
- /*0*/ { PD_STRING, switchmotorEditName, "name", PDO_NOPREF | PDO_NOTBLANK, I2VP(200), N_("Name"), 0, 0, sizeof(switchmotorEditName)},
-/*1*/ { PD_STRING, switchmotorEditNormal, "normal", PDO_NOPREF, I2VP(350), N_("Normal"), 0, 0, sizeof(switchmotorEditNormal)},
-/*2*/ { PD_STRING, switchmotorEditReverse, "reverse", PDO_NOPREF, I2VP(350), N_("Reverse"), 0, 0, sizeof(switchmotorEditReverse)},
-/*3*/ { PD_STRING, switchmotorEditPointSense, "pointSense", PDO_NOPREF, I2VP(350), N_("Point Sense"), 0, 0, sizeof(switchmotorEditPointSense)},
-/*4*/ { PD_LONG, &switchmotorEditTonum, "turnoutNumber", PDO_NOPREF, &r0_999999, N_("Turnout Number"), BO_READONLY },
+ /*0*/ { PD_STRING, switchmotorEditName, "name", PDO_NOPREF | PDO_NOTBLANK, I2VP(200), N_("Name"), 0, 0, sizeof(switchmotorEditName)},
+ /*1*/ { PD_STRING, switchmotorEditNormal, "normal", PDO_NOPREF, I2VP(350), N_("Normal"), 0, 0, sizeof(switchmotorEditNormal)},
+ /*2*/ { PD_STRING, switchmotorEditReverse, "reverse", PDO_NOPREF, I2VP(350), N_("Reverse"), 0, 0, sizeof(switchmotorEditReverse)},
+ /*3*/ { PD_STRING, switchmotorEditPointSense, "pointSense", PDO_NOPREF, I2VP(350), N_("Point Sense"), 0, 0, sizeof(switchmotorEditPointSense)},
+ /*4*/ { PD_LONG, &switchmotorEditTonum, "turnoutNumber", PDO_NOPREF, &r0_999999, N_("Turnout Number"), BO_READONLY },
};
static paramGroup_t switchmotorEditPG = { "switchmotorEdit", 0, switchmotorEditPLs, COUNT( switchmotorEditPLs ) };
@@ -121,15 +121,15 @@ static dynArr_t switchmotorTrk_da;
*/
typedef struct switchmotorData_t {
- extraDataBase_t base;
- char * name;
- char * normal;
- char * reverse;
- char * pointsense;
- BOOL_T IsHilite;
- TRKINX_T turnindx;
- track_p turnout;
- track_p next_motor;
+ extraDataBase_t base;
+ char * name;
+ char * normal;
+ char * reverse;
+ char * pointsense;
+ BOOL_T IsHilite;
+ TRKINX_T turnindx;
+ track_p turnout;
+ track_p next_motor;
} switchmotorData_t, *switchmotorData_p;
static switchmotorData_p GetswitchmotorData ( track_p trk )
@@ -143,69 +143,76 @@ static wDrawBitMap_p switchmotormark_bm = NULL;
#endif
static coOrd switchmotorPoly_Pix[] = {
- {6,0}, {6,13}, {4,13}, {4,19}, {6,19}, {6,23}, {9,23}, {9,19}, {13,19},
- {13,23}, {27,23}, {27,10}, {13,10}, {13,13}, {9,13}, {9,0}, {6,0} };
+ {6,0}, {6,13}, {4,13}, {4,19}, {6,19}, {6,23}, {9,23}, {9,19}, {13,19},
+ {13,23}, {27,23}, {27,10}, {13,10}, {13,13}, {9,13}, {9,0}, {6,0}
+};
#define switchmotorPoly_CNT (COUNT(switchmotorPoly_Pix))
#define switchmotorPoly_SF (3.0)
static void ComputeSwitchMotorBoundingBox (track_p t)
{
- coOrd hi, lo, p;
- switchmotorData_p data_p = GetswitchmotorData(t);
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(data_p->turnout, T_TURNOUT, extraDataCompound_t);
- coOrd orig = xx->orig;
- ANGLE_T angle = xx->angle;
- SCALEINX_T s = GetTrkScale(data_p->turnout);
- DIST_T scaleRatio = GetScaleRatio(s);
- int iPoint;
- ANGLE_T x_angle, y_angle;
-
- x_angle = 90-(360-angle);
- if (x_angle < 0) x_angle += 360;
- y_angle = -(360-angle);
- if (y_angle < 0) y_angle += 360;
-
-
- for (iPoint = 0; iPoint < switchmotorPoly_CNT; iPoint++) {
- Translate (&p, orig, x_angle, switchmotorPoly_Pix[iPoint].x * switchmotorPoly_SF / scaleRatio );
- Translate (&p, p, y_angle, (10+switchmotorPoly_Pix[iPoint].y) * switchmotorPoly_SF / scaleRatio );
- if (iPoint == 0) {
- lo = p;
- hi = p;
- } else {
- if (p.x < lo.x) lo.x = p.x;
- if (p.y < lo.y) lo.y = p.y;
- if (p.x > hi.x) hi.x = p.x;
- if (p.y > hi.y) hi.y = p.y;
- }
- }
- SetBoundingBox(t, hi, lo);
+ coOrd hi, lo, p;
+ switchmotorData_p data_p = GetswitchmotorData(t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(data_p->turnout, T_TURNOUT,
+ extraDataCompound_t);
+ coOrd orig = xx->orig;
+ ANGLE_T angle = xx->angle;
+ SCALEINX_T s = GetTrkScale(data_p->turnout);
+ DIST_T scaleRatio = GetScaleRatio(s);
+ int iPoint;
+ ANGLE_T x_angle, y_angle;
+
+ x_angle = 90-(360-angle);
+ if (x_angle < 0) { x_angle += 360; }
+ y_angle = -(360-angle);
+ if (y_angle < 0) { y_angle += 360; }
+
+
+ for (iPoint = 0; iPoint < switchmotorPoly_CNT; iPoint++) {
+ Translate (&p, orig, x_angle,
+ switchmotorPoly_Pix[iPoint].x * switchmotorPoly_SF / scaleRatio );
+ Translate (&p, p, y_angle,
+ (10+switchmotorPoly_Pix[iPoint].y) * switchmotorPoly_SF / scaleRatio );
+ if (iPoint == 0) {
+ lo = p;
+ hi = p;
+ } else {
+ if (p.x < lo.x) { lo.x = p.x; }
+ if (p.y < lo.y) { lo.y = p.y; }
+ if (p.x > hi.x) { hi.x = p.x; }
+ if (p.y > hi.y) { hi.y = p.y; }
+ }
+ }
+ SetBoundingBox(t, hi, lo);
}
-
-
+
+
static void DrawSwitchMotor (track_p t, drawCmd_p d, wDrawColor color )
{
- coOrd p[switchmotorPoly_CNT];
- switchmotorData_p data_p = GetswitchmotorData(t);
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(data_p->turnout, T_TURNOUT, extraDataCompound_t);
- coOrd orig = xx->orig;
- ANGLE_T angle = xx->angle;
- SCALEINX_T s = GetTrkScale(data_p->turnout);
- DIST_T scaleRatio = GetScaleRatio(s);
- int iPoint;
- ANGLE_T x_angle, y_angle;
-
- x_angle = 90-(360-angle);
- if (x_angle < 0) x_angle += 360;
- y_angle = -(360-angle);
- if (y_angle < 0) y_angle += 360;
-
-
- for (iPoint = 0; iPoint < switchmotorPoly_CNT; iPoint++) {
- Translate (&p[iPoint], orig, x_angle, switchmotorPoly_Pix[iPoint].x * switchmotorPoly_SF / scaleRatio );
- Translate (&p[iPoint], p[iPoint], y_angle, (10+switchmotorPoly_Pix[iPoint].y) * switchmotorPoly_SF / scaleRatio );
- }
- DrawPoly(d, switchmotorPoly_CNT, p, NULL, color, 0, DRAW_FILL);
+ coOrd p[switchmotorPoly_CNT];
+ switchmotorData_p data_p = GetswitchmotorData(t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(data_p->turnout, T_TURNOUT,
+ extraDataCompound_t);
+ coOrd orig = xx->orig;
+ ANGLE_T angle = xx->angle;
+ SCALEINX_T s = GetTrkScale(data_p->turnout);
+ DIST_T scaleRatio = GetScaleRatio(s);
+ int iPoint;
+ ANGLE_T x_angle, y_angle;
+
+ x_angle = 90-(360-angle);
+ if (x_angle < 0) { x_angle += 360; }
+ y_angle = -(360-angle);
+ if (y_angle < 0) { y_angle += 360; }
+
+
+ for (iPoint = 0; iPoint < switchmotorPoly_CNT; iPoint++) {
+ Translate (&p[iPoint], orig, x_angle,
+ switchmotorPoly_Pix[iPoint].x * switchmotorPoly_SF / scaleRatio );
+ Translate (&p[iPoint], p[iPoint], y_angle,
+ (10+switchmotorPoly_Pix[iPoint].y) * switchmotorPoly_SF / scaleRatio );
+ }
+ DrawPoly(d, switchmotorPoly_CNT, p, NULL, color, 0, DRAW_FILL);
}
static struct {
@@ -218,14 +225,16 @@ static struct {
typedef enum { NM, NOR, REV, PS, TO } switchmotorDesc_e;
static descData_t switchmotorDesc[] = {
-/*NM */ { DESC_STRING, N_("Name"), &switchmotorData.name, sizeof(switchmotorData.name) },
-/*NOR*/ { DESC_STRING, N_("Normal"), &switchmotorData.normal, sizeof(switchmotorData.normal) },
-/*REV*/ { DESC_STRING, N_("Reverse"), &switchmotorData.reverse, sizeof(switchmotorData.reverse) },
-/*PS */ { DESC_STRING, N_("Point Sense"), &switchmotorData.pointsense, sizeof(switchmotorData.pointsense) },
-/*TO */ { DESC_LONG, N_("Turnout"), &switchmotorData.turnout },
- { DESC_NULL } };
-
-static void UpdateSwitchMotor (track_p trk, int inx, descData_p descUpd, BOOL_T needUndoStart )
+ /*NM */ { DESC_STRING, N_("Name"), &switchmotorData.name, sizeof(switchmotorData.name) },
+ /*NOR*/ { DESC_STRING, N_("Normal"), &switchmotorData.normal, sizeof(switchmotorData.normal) },
+ /*REV*/ { DESC_STRING, N_("Reverse"), &switchmotorData.reverse, sizeof(switchmotorData.reverse) },
+ /*PS */ { DESC_STRING, N_("Point Sense"), &switchmotorData.pointsense, sizeof(switchmotorData.pointsense) },
+ /*TO */ { DESC_LONG, N_("Turnout"), &switchmotorData.turnout },
+ { DESC_NULL }
+};
+
+static void UpdateSwitchMotor (track_p trk, int inx, descData_p descUpd,
+ BOOL_T needUndoStart )
{
switchmotorData_p xx = GetswitchmotorData(trk);
const char * thename, *thenormal, *thereverse, *thepointsense;
@@ -233,7 +242,8 @@ static void UpdateSwitchMotor (track_p trk, int inx, descData_p descUpd, BOOL_T
unsigned int max_str;
BOOL_T changed, nChanged, norChanged, revChanged, psChanged;
- LOG( log_switchmotor, 1, ("*** UpdateSwitchMotor(): needUndoStart = %d\n",needUndoStart))
+ LOG( log_switchmotor, 1, ("*** UpdateSwitchMotor(): needUndoStart = %d\n",
+ needUndoStart))
if ( inx == -1 ) {
nChanged = norChanged = revChanged = psChanged = changed = FALSE;
thename = wStringGetValue( (wString_p)switchmotorDesc[NM].control0 );
@@ -245,7 +255,7 @@ static void UpdateSwitchMotor (track_p trk, int inx, descData_p descUpd, BOOL_T
newName[max_str-1] = '\0';
strncat(newName,thename,max_str-1);
NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str-1);
- } else newName = MyStrdup(thename);
+ } else { newName = MyStrdup(thename); }
}
thenormal = wStringGetValue( (wString_p)switchmotorDesc[NOR].control0 );
@@ -257,7 +267,7 @@ static void UpdateSwitchMotor (track_p trk, int inx, descData_p descUpd, BOOL_T
newNormal[max_str-1] = '\0';
strncat(newNormal,thenormal, max_str-1);
NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str-1);
- } else newNormal = MyStrdup(thenormal);
+ } else { newNormal = MyStrdup(thenormal); }
}
thereverse = wStringGetValue( (wString_p)switchmotorDesc[REV].control0 );
@@ -269,7 +279,7 @@ static void UpdateSwitchMotor (track_p trk, int inx, descData_p descUpd, BOOL_T
newReverse[max_str-1] = '\0';
strncat(newReverse,thereverse,max_str-1);
NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str-1);
- } else newReverse = MyStrdup(thereverse);
+ } else { newReverse = MyStrdup(thereverse); }
}
thepointsense = wStringGetValue( (wString_p)switchmotorDesc[PS].control0 );
@@ -281,12 +291,13 @@ static void UpdateSwitchMotor (track_p trk, int inx, descData_p descUpd, BOOL_T
newPointSense[max_str-1] = '\0';
strncat(newPointSense,thepointsense, max_str-1);
NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str-1);
- } else newPointSense = MyStrdup(thepointsense);
+ } else { newPointSense = MyStrdup(thepointsense); }
}
- if ( ! changed ) return;
- if ( needUndoStart )
+ if ( ! changed ) { return; }
+ if ( needUndoStart ) {
UndoStart( _("Change Switch Motor"), "Change Switch Motor" );
+ }
UndoModify( trk );
if (nChanged) {
MyFree(xx->name);
@@ -311,13 +322,13 @@ static void UpdateSwitchMotor (track_p trk, int inx, descData_p descUpd, BOOL_T
static DIST_T DistanceSwitchMotor (track_p t, coOrd * p )
{
switchmotorData_p xx = GetswitchmotorData(t);
- if (xx->turnout == NULL) return 0;
- coOrd center,hi,lo;
- GetBoundingBox(t,&hi,&lo);
- center.x = (hi.x+lo.x)/2;
- center.y = (hi.y+lo.y)/2;
- DIST_T d = FindDistance(center,*p);
- *p = center;
+ if (xx->turnout == NULL) { return 0; }
+ coOrd center,hi,lo;
+ GetBoundingBox(t,&hi,&lo);
+ center.x = (hi.x+lo.x)/2;
+ center.y = (hi.y+lo.y)/2;
+ DIST_T d = FindDistance(center,*p);
+ *p = center;
return d;
}
@@ -326,10 +337,12 @@ static void DescribeSwitchMotor (track_p trk, char * str, CSIZE_T len )
switchmotorData_p xx = GetswitchmotorData(trk);
long listLabelsOption = listLabels;
- LOG( log_switchmotor, 1, ("*** DescribeSwitchMotor(): trk is T%d\n",GetTrkIndex(trk)))
+ LOG( log_switchmotor, 1, ("*** DescribeSwitchMotor(): trk is T%d\n",
+ GetTrkIndex(trk)))
FormatCompoundTitle( listLabelsOption, xx->name );
- if (message[0] == '\0')
+ if (message[0] == '\0') {
FormatCompoundTitle( listLabelsOption|LABEL_DESCR, xx->name );
+ }
strcpy( str, _(GetTrkTypeName( trk )) );
str++;
while (*str) {
@@ -337,7 +350,7 @@ static void DescribeSwitchMotor (track_p trk, char * str, CSIZE_T len )
str++;
}
sprintf( str, _("(%d): Layer=%u %s"),
- GetTrkIndex(trk), GetTrkLayer(trk)+1, message );
+ GetTrkIndex(trk), GetTrkLayer(trk)+1, message );
strncpy(switchmotorData.name,xx->name,STR_SHORT_SIZE-1);
switchmotorData.name[STR_SHORT_SIZE-1] = '\0';
strncpy(switchmotorData.normal,xx->normal,STR_LONG_SIZE-1);
@@ -346,13 +359,13 @@ static void DescribeSwitchMotor (track_p trk, char * str, CSIZE_T len )
switchmotorData.reverse[STR_LONG_SIZE-1] = '\0';
strncpy(switchmotorData.pointsense,xx->pointsense,STR_LONG_SIZE-1);
switchmotorData.pointsense[STR_LONG_SIZE-1] = '\0';
- if (xx->turnout == NULL) switchmotorData.turnout = 0;
- else switchmotorData.turnout = GetTrkIndex(xx->turnout);
+ if (xx->turnout == NULL) { switchmotorData.turnout = 0; }
+ else { switchmotorData.turnout = GetTrkIndex(xx->turnout); }
switchmotorDesc[TO].mode = DESC_RO;
switchmotorDesc[NM].mode =
- switchmotorDesc[NOR].mode =
- switchmotorDesc[REV].mode =
- switchmotorDesc[PS].mode = DESC_NOREDRAW;
+ switchmotorDesc[NOR].mode =
+ switchmotorDesc[REV].mode =
+ switchmotorDesc[PS].mode = DESC_NOREDRAW;
DoDescribe(_("Switch motor"), trk, switchmotorDesc, UpdateSwitchMotor );
}
@@ -360,35 +373,43 @@ static void switchmotorDebug (track_p trk)
{
switchmotorData_p xx = GetswitchmotorData(trk);
LOG( log_switchmotor, 1, ("*** switchmotorDebug(): trk = %08x\n",trk))
- LOG( log_switchmotor, 1, ("*** switchmotorDebug(): Index = %d\n",GetTrkIndex(trk)))
+ LOG( log_switchmotor, 1, ("*** switchmotorDebug(): Index = %d\n",
+ GetTrkIndex(trk)))
LOG( log_switchmotor, 1, ("*** switchmotorDebug(): name = \"%s\"\n",xx->name))
- LOG( log_switchmotor, 1, ("*** switchmotorDebug(): normal = \"%s\"\n",xx->normal))
- LOG( log_switchmotor, 1, ("*** switchmotorDebug(): reverse = \"%s\"\n",xx->reverse))
- LOG( log_switchmotor, 1, ("*** switchmotorDebug(): pointsense = \"%s\"\n",xx->pointsense))
- LOG( log_switchmotor, 1, ("*** switchmotorDebug(): turnindx = %d\n",xx->turnindx))
- if (xx->turnout != NULL) {
- LOG( log_switchmotor, 1, ("*** switchmotorDebug(): turnout = T%d, %s\n",
- GetTrkIndex(xx->turnout), GetTrkTypeName(xx->turnout)))
- }
+ LOG( log_switchmotor, 1, ("*** switchmotorDebug(): normal = \"%s\"\n",
+ xx->normal))
+ LOG( log_switchmotor, 1, ("*** switchmotorDebug(): reverse = \"%s\"\n",
+ xx->reverse))
+ LOG( log_switchmotor, 1, ("*** switchmotorDebug(): pointsense = \"%s\"\n",
+ xx->pointsense))
+ LOG( log_switchmotor, 1, ("*** switchmotorDebug(): turnindx = %d\n",
+ xx->turnindx))
+ if (xx->turnout != NULL) {
+ LOG( log_switchmotor, 1, ("*** switchmotorDebug(): turnout = T%d, %s\n",
+ GetTrkIndex(xx->turnout), GetTrkTypeName(xx->turnout)))
+ }
}
static void DeleteSwitchMotor ( track_p trk )
{
- track_p trk1;
+ track_p trk1;
switchmotorData_p xx1;
LOG( log_switchmotor, 1,("*** DeleteSwitchMotor(%p)\n",trk))
- LOG( log_switchmotor, 1,("*** DeleteSwitchMotor(): index is %d\n",GetTrkIndex(trk)))
+ LOG( log_switchmotor, 1,("*** DeleteSwitchMotor(): index is %d\n",
+ GetTrkIndex(trk)))
switchmotorData_p xx = GetswitchmotorData(trk);
- LOG( log_switchmotor, 1,("*** DeleteSwitchMotor(): xx = %p, xx->name = %p, xx->normal = %p, xx->reverse = %p, xx->pointsense = %p\n",
- xx,xx->name,xx->normal,xx->reverse,xx->pointsense))
+ LOG( log_switchmotor, 1,
+ ("*** DeleteSwitchMotor(): xx = %p, xx->name = %p, xx->normal = %p, xx->reverse = %p, xx->pointsense = %p\n",
+ xx,xx->name,xx->normal,xx->reverse,xx->pointsense))
MyFree(xx->name); xx->name = NULL;
MyFree(xx->normal); xx->normal = NULL;
MyFree(xx->reverse); xx->reverse = NULL;
MyFree(xx->pointsense); xx->pointsense = NULL;
- if (first_motor == trk)
- first_motor = xx->next_motor;
+ if (first_motor == trk) {
+ first_motor = xx->next_motor;
+ }
trk1 = first_motor;
while(trk1) {
xx1 = GetswitchmotorData (trk1);
@@ -398,8 +419,9 @@ static void DeleteSwitchMotor ( track_p trk )
}
trk1 = xx1->next_motor;
}
- if (trk == last_motor)
- last_motor = trk1;
+ if (trk == last_motor) {
+ last_motor = trk1;
+ }
}
static BOOL_T WriteSwitchMotor ( track_p t, FILE * f )
@@ -407,16 +429,17 @@ static BOOL_T WriteSwitchMotor ( track_p t, FILE * f )
BOOL_T rc = TRUE;
switchmotorData_p xx = GetswitchmotorData(t);
char *switchMotorName = MyStrdup(xx->name);
-
+
#ifdef UTFCONVERT
switchMotorName = Convert2UTF8(switchMotorName);
#endif // UTFCONVERT
- if (xx->turnout == NULL)
+ if (xx->turnout == NULL) {
return FALSE;
+ }
rc &= fprintf(f, "SWITCHMOTOR %d %d \"%s\" \"%s\" \"%s\" \"%s\"\n",
- GetTrkIndex(t), GetTrkIndex(xx->turnout), switchMotorName,
- xx->normal, xx->reverse, xx->pointsense)>0;
+ GetTrkIndex(t), GetTrkIndex(xx->turnout), switchMotorName,
+ xx->normal, xx->reverse, xx->pointsense)>0;
MyFree(switchMotorName);
return rc;
@@ -431,7 +454,8 @@ static BOOL_T ReadSwitchMotor ( char * line )
char *name, *normal, *reverse, *pointsense;
LOG( log_switchmotor, 1, ("*** ReadSwitchMotor: line is '%s'\n",line))
- if (!GetArgs(line+12,"ddqqqq",&index,&trkindex,&name,&normal,&reverse,&pointsense)) {
+ if (!GetArgs(line+12,"ddqqqq",&index,&trkindex,&name,&normal,&reverse,
+ &pointsense)) {
return FALSE;
}
#ifdef UTFCONVERT
@@ -443,37 +467,42 @@ static BOOL_T ReadSwitchMotor ( char * line )
xx->normal = normal;
xx->reverse = reverse;
xx->pointsense = pointsense;
- xx->turnindx = trkindex;
- if (last_motor) {
- last_trk = last_motor;
- xx1 = GetswitchmotorData(last_trk);
- xx1->next_motor = trk;
- } else first_motor = trk;
- xx->next_motor = NULL;
- last_motor = trk;
-
- LOG( log_switchmotor, 1,("*** ReadSwitchMotor(): trk = %p (%d), xx = %p\n",trk,GetTrkIndex(trk),xx))
- LOG( log_switchmotor, 1,("*** ReadSwitchMotor(): name = %p, normal = %p, reverse = %p, pointsense = %p\n",
- name,normal,reverse,pointsense))
- switchmotorDebug(trk);
+ xx->turnindx = trkindex;
+ if (last_motor) {
+ last_trk = last_motor;
+ xx1 = GetswitchmotorData(last_trk);
+ xx1->next_motor = trk;
+ } else { first_motor = trk; }
+ xx->next_motor = NULL;
+ last_motor = trk;
+
+ LOG( log_switchmotor, 1,("*** ReadSwitchMotor(): trk = %p (%d), xx = %p\n",trk,
+ GetTrkIndex(trk),xx))
+ LOG( log_switchmotor, 1,
+ ("*** ReadSwitchMotor(): name = %p, normal = %p, reverse = %p, pointsense = %p\n",
+ name,normal,reverse,pointsense))
+ switchmotorDebug(trk);
return TRUE;
}
EXPORT void ResolveSwitchmotorTurnout ( track_p trk )
{
- LOG( log_switchmotor, 1,("*** ResolveSwitchmotorTurnout(%p)\n",trk))
- switchmotorData_p xx;
- track_p t_trk;
- if (GetTrkType(trk) != T_SWITCHMOTOR) return;
- xx = GetswitchmotorData(trk);
- LOG( log_switchmotor, 1, ("*** ResolveSwitchmotorTurnout(%d)\n",GetTrkIndex(trk)))
- t_trk = FindTrack(xx->turnindx);
- if (t_trk == NULL) {
- NoticeMessage( _("ResolveSwitchmotor: Turnout T%d: T%d doesn't exist"), _("Continue"), NULL, GetTrkIndex(trk), xx->turnindx );
- }
- xx->turnout = t_trk;
- ComputeSwitchMotorBoundingBox(trk);
- LOG( log_switchmotor, 1,("*** ResolveSwitchmotorTurnout(): t_trk = (%d) %p\n",xx->turnindx,t_trk))
+ LOG( log_switchmotor, 1,("*** ResolveSwitchmotorTurnout(%p)\n",trk))
+ switchmotorData_p xx;
+ track_p t_trk;
+ if (GetTrkType(trk) != T_SWITCHMOTOR) { return; }
+ xx = GetswitchmotorData(trk);
+ LOG( log_switchmotor, 1, ("*** ResolveSwitchmotorTurnout(%d)\n",
+ GetTrkIndex(trk)))
+ t_trk = FindTrack(xx->turnindx);
+ if (t_trk == NULL) {
+ NoticeMessage( _("ResolveSwitchmotor: Turnout T%d: T%d doesn't exist"),
+ _("Continue"), NULL, GetTrkIndex(trk), xx->turnindx );
+ }
+ xx->turnout = t_trk;
+ ComputeSwitchMotorBoundingBox(trk);
+ LOG( log_switchmotor, 1,("*** ResolveSwitchmotorTurnout(): t_trk = (%d) %p\n",
+ xx->turnindx,t_trk))
}
static void MoveSwitchMotor (track_p trk, coOrd orig ) {}
@@ -523,7 +552,7 @@ static track_p FindSwitchMotor (track_p trk)
while (a_trk) {
xx = GetswitchmotorData(a_trk);
if (!IsTrackDeleted(a_trk)) {
- if (xx->turnout == trk) return a_trk;
+ if (xx->turnout == trk) { return a_trk; }
}
a_trk = xx->next_motor;
}
@@ -555,10 +584,11 @@ static void SwitchMotorOk ( void * junk )
if (trk1) {
xx1 = GetswitchmotorData( trk1 );
xx1->next_motor = trk;
- } else first_motor = trk;
+ } else { first_motor = trk; }
xx->next_motor = NULL;
last_motor = trk;
- LOG( log_switchmotor, 1,("*** SwitchMotorOk(): trk = %p (%d), xx = %p\n",trk,GetTrkIndex(trk),xx))
+ LOG( log_switchmotor, 1,("*** SwitchMotorOk(): trk = %p (%d), xx = %p\n",trk,
+ GetTrkIndex(trk),xx))
switchmotorDebug(trk);
UndoEnd();
wHide( switchmotorW );
@@ -571,10 +601,12 @@ static void NewSwitchMotorDialog(track_p trk)
LOG( log_switchmotor, 1, ("*** NewSwitchMotorDialog()\n"))
switchmotorTurnout = trk;
- if ( log_switchmotor < 0 ) log_switchmotor = LogFindIndex( "switchmotor" );
+ if ( log_switchmotor < 0 ) { log_switchmotor = LogFindIndex( "switchmotor" ); }
if ( !switchmotorW ) {
ParamRegister( &switchmotorPG );
- switchmotorW = ParamCreateDialog (&switchmotorPG, MakeWindowTitle(_("Create switch motor")), _("Ok"), SwitchMotorOk, wHide, TRUE, NULL, F_BLOCK, NULL );
+ switchmotorW = ParamCreateDialog (&switchmotorPG,
+ MakeWindowTitle(_("Create switch motor")), _("Ok"), SwitchMotorOk, wHide, TRUE,
+ NULL, F_BLOCK, NULL );
switchmotorD.dpi = mainD.dpi;
}
ParamLoadControls( &switchmotorPG );
@@ -585,7 +617,8 @@ static STATUS_T CmdSwitchMotorCreate( wAction_t action, coOrd pos )
{
track_p trk;
- LOG( log_switchmotor, 1, ("*** CmdSwitchMotorCreate(%08x,{%f,%f})\n",action,pos.x,pos.y))
+ LOG( log_switchmotor, 1, ("*** CmdSwitchMotorCreate(%08x,{%f,%f})\n",action,
+ pos.x,pos.y))
switch (action & 0xFF) {
case C_START:
InfoMessage( _("Select a turnout") );
@@ -611,7 +644,6 @@ static STATUS_T CmdSwitchMotorCreate( wAction_t action, coOrd pos )
}
#if 0
-extern BOOL_T inDescribeCmd;
static STATUS_T CmdSwitchMotorEdit( wAction_t action, coOrd pos )
{
@@ -665,7 +697,8 @@ static STATUS_T CmdSwitchMotorDelete( wAction_t action, coOrd pos )
}
/* Confirm Delete SwitchMotor */
xx = GetswitchmotorData(btrk);
- if ( NoticeMessage( _("Really delete switch motor %s?"), _("Yes"), _("No"), xx->name) ) {
+ if ( NoticeMessage( _("Really delete switch motor %s?"), _("Yes"), _("No"),
+ xx->name) ) {
UndoStart( _("Delete Switch Motor"), "delete" );
DeleteTrack (btrk, FALSE);
UndoEnd();
@@ -690,7 +723,8 @@ static STATUS_T CmdSwitchMotorDelete( wAction_t action, coOrd pos )
static STATUS_T CmdSwitchMotor (wAction_t action, coOrd pos )
{
- LOG( log_switchmotor, 1, ("*** CmdSwitchMotor(%08x,{%f,%f})\n",action,pos.x,pos.y))
+ LOG( log_switchmotor, 1, ("*** CmdSwitchMotor(%08x,{%f,%f})\n",action,pos.x,
+ pos.y))
switch (VP2L(commandContext)) {
case SWITCHMOTOR_CREATE: return CmdSwitchMotorCreate(action,pos);
@@ -703,51 +737,51 @@ static STATUS_T CmdSwitchMotor (wAction_t action, coOrd pos )
static void SwitchMotorEditOk ( void * junk )
{
- switchmotorData_p xx;
- track_p trk;
-
- LOG( log_switchmotor, 1, ("*** SwitchMotorEditOk()\n"))
- ParamUpdate (&switchmotorEditPG );
- if ( switchmotorEditName[0]==0 ) {
- NoticeMessage( _("Switch motor must have a name!") , _("Ok"), NULL);
- return;
- }
- wDrawDelayUpdate( mainD.d, TRUE );
- UndoStart( _("Modify Switch Motor"), "Modify Switch Motor" );
- trk = switchmotorEditTrack;
- xx = GetswitchmotorData( trk );
- xx->name = MyStrdup(switchmotorEditName);
- xx->normal = MyStrdup(switchmotorEditNormal);
- xx->reverse = MyStrdup(switchmotorEditReverse);
- xx->pointsense = MyStrdup(switchmotorEditPointSense);
- switchmotorDebug(trk);
- UndoEnd();
- wHide( switchmotorEditW );
+ switchmotorData_p xx;
+ track_p trk;
+
+ LOG( log_switchmotor, 1, ("*** SwitchMotorEditOk()\n"))
+ ParamUpdate (&switchmotorEditPG );
+ if ( switchmotorEditName[0]==0 ) {
+ NoticeMessage( _("Switch motor must have a name!"), _("Ok"), NULL);
+ return;
+ }
+ wDrawDelayUpdate( mainD.d, TRUE );
+ UndoStart( _("Modify Switch Motor"), "Modify Switch Motor" );
+ trk = switchmotorEditTrack;
+ xx = GetswitchmotorData( trk );
+ xx->name = MyStrdup(switchmotorEditName);
+ xx->normal = MyStrdup(switchmotorEditNormal);
+ xx->reverse = MyStrdup(switchmotorEditReverse);
+ xx->pointsense = MyStrdup(switchmotorEditPointSense);
+ switchmotorDebug(trk);
+ UndoEnd();
+ wHide( switchmotorEditW );
}
static void EditSwitchMotor (track_p trk)
{
- switchmotorData_p xx = GetswitchmotorData(trk);
- strncpy(switchmotorEditName,xx->name,STR_SHORT_SIZE);
- strncpy(switchmotorEditNormal,xx->normal,STR_LONG_SIZE);
- strncpy(switchmotorEditReverse,xx->reverse,STR_LONG_SIZE);
- strncpy(switchmotorEditPointSense,xx->pointsense,STR_LONG_SIZE);
- if (xx->turnout == NULL) switchmotorEditTonum = 0;
- else switchmotorEditTonum = GetTrkIndex(xx->turnout);
- switchmotorEditTrack = trk;
- if ( !switchmotorEditW ) {
- ParamRegister( &switchmotorEditPG );
- switchmotorEditW = ParamCreateDialog (&switchmotorEditPG,
- MakeWindowTitle(_("Edit switch motor")),
- _("Ok"), SwitchMotorEditOk,
- wHide, TRUE, NULL, F_BLOCK,
- NULL );
- }
- ParamLoadControls( &switchmotorEditPG );
- sprintf( message, _("Edit switch motor %d"), GetTrkIndex(trk) );
- wWinSetTitle( switchmotorEditW, message );
- wShow (switchmotorEditW);
+ switchmotorData_p xx = GetswitchmotorData(trk);
+ strncpy(switchmotorEditName,xx->name,STR_SHORT_SIZE);
+ strncpy(switchmotorEditNormal,xx->normal,STR_LONG_SIZE);
+ strncpy(switchmotorEditReverse,xx->reverse,STR_LONG_SIZE);
+ strncpy(switchmotorEditPointSense,xx->pointsense,STR_LONG_SIZE);
+ if (xx->turnout == NULL) { switchmotorEditTonum = 0; }
+ else { switchmotorEditTonum = GetTrkIndex(xx->turnout); }
+ switchmotorEditTrack = trk;
+ if ( !switchmotorEditW ) {
+ ParamRegister( &switchmotorEditPG );
+ switchmotorEditW = ParamCreateDialog (&switchmotorEditPG,
+ MakeWindowTitle(_("Edit switch motor")),
+ _("Ok"), SwitchMotorEditOk,
+ wHide, TRUE, NULL, F_BLOCK,
+ NULL );
+ }
+ ParamLoadControls( &switchmotorEditPG );
+ sprintf( message, _("Edit switch motor %d"), GetTrkIndex(trk) );
+ wWinSetTitle( switchmotorEditW, message );
+ wShow (switchmotorEditW);
}
static coOrd swmhiliteOrig, swmhiliteSize;
@@ -755,70 +789,72 @@ static POS_T swmhiliteBorder;
static wDrawColor swmhiliteColor = 0;
static void DrawSWMotorTrackHilite( void )
{
- if (swmhiliteColor==0)
+ if (swmhiliteColor==0) {
swmhiliteColor = wDrawColorGray(87);
- DrawRectangle( &tempD, swmhiliteOrig, swmhiliteSize, swmhiliteColor, DRAW_TRANSPARENT );
+ }
+ DrawRectangle( &tempD, swmhiliteOrig, swmhiliteSize, swmhiliteColor,
+ DRAW_TRANSPARENT );
}
static int SwitchmotorMgmProc ( int cmd, void * data )
{
- track_p trk = (track_p) data;
- switchmotorData_p xx = GetswitchmotorData(trk);
- /*char msg[STR_SIZE];*/
-
- switch ( cmd ) {
- case CONTMGM_CAN_EDIT:
- return TRUE;
- break;
- case CONTMGM_DO_EDIT:
- EditSwitchMotor (trk);
- /*inDescribeCmd = TRUE;*/
- /*DescribeTrack (trk, msg, sizeof msg );*/
- /*InfoMessage( msg );*/
- return TRUE;
- break;
- case CONTMGM_CAN_DELETE:
- return TRUE;
- break;
- case CONTMGM_DO_DELETE:
- DeleteTrack (trk, FALSE);
- return TRUE;
- break;
- case CONTMGM_DO_HILIGHT:
- if (xx->turnout != NULL && !xx->IsHilite) {
- swmhiliteBorder = mainD.scale*0.1;
- if ( swmhiliteBorder < trackGauge ) swmhiliteBorder = trackGauge;
- GetBoundingBox( xx->turnout, &swmhiliteSize, &swmhiliteOrig );
- swmhiliteOrig.x -= swmhiliteBorder;
- swmhiliteOrig.y -= swmhiliteBorder;
- swmhiliteSize.x -= swmhiliteOrig.x-swmhiliteBorder;
- swmhiliteSize.y -= swmhiliteOrig.y-swmhiliteBorder;
- DrawSWMotorTrackHilite();
- xx->IsHilite = TRUE;
- }
- break;
- case CONTMGM_UN_HILIGHT:
- if (xx->turnout != NULL && xx->IsHilite) {
- swmhiliteBorder = mainD.scale*0.1;
- if ( swmhiliteBorder < trackGauge ) swmhiliteBorder = trackGauge;
- GetBoundingBox( xx->turnout, &swmhiliteSize, &swmhiliteOrig );
- swmhiliteOrig.x -= swmhiliteBorder;
- swmhiliteOrig.y -= swmhiliteBorder;
- swmhiliteSize.x -= swmhiliteOrig.x-swmhiliteBorder;
- swmhiliteSize.y -= swmhiliteOrig.y-swmhiliteBorder;
- DrawSWMotorTrackHilite();
- xx->IsHilite = FALSE;
- }
- break;
- case CONTMGM_GET_TITLE:
- if (xx->turnout == NULL) {
- sprintf( message, "\t%s\t%d", xx->name, 0);
- } else {
- sprintf( message, "\t%s\t%d", xx->name, GetTrkIndex(xx->turnout));
- }
- break;
- }
- return FALSE;
+ track_p trk = (track_p) data;
+ switchmotorData_p xx = GetswitchmotorData(trk);
+ /*char msg[STR_SIZE];*/
+
+ switch ( cmd ) {
+ case CONTMGM_CAN_EDIT:
+ return TRUE;
+ break;
+ case CONTMGM_DO_EDIT:
+ EditSwitchMotor (trk);
+ /*inDescribeCmd = TRUE;*/
+ /*DescribeTrack (trk, msg, sizeof msg );*/
+ /*InfoMessage( msg );*/
+ return TRUE;
+ break;
+ case CONTMGM_CAN_DELETE:
+ return TRUE;
+ break;
+ case CONTMGM_DO_DELETE:
+ DeleteTrack (trk, FALSE);
+ return TRUE;
+ break;
+ case CONTMGM_DO_HILIGHT:
+ if (xx->turnout != NULL && !xx->IsHilite) {
+ swmhiliteBorder = mainD.scale*0.1;
+ if ( swmhiliteBorder < trackGauge ) { swmhiliteBorder = trackGauge; }
+ GetBoundingBox( xx->turnout, &swmhiliteSize, &swmhiliteOrig );
+ swmhiliteOrig.x -= swmhiliteBorder;
+ swmhiliteOrig.y -= swmhiliteBorder;
+ swmhiliteSize.x -= swmhiliteOrig.x-swmhiliteBorder;
+ swmhiliteSize.y -= swmhiliteOrig.y-swmhiliteBorder;
+ DrawSWMotorTrackHilite();
+ xx->IsHilite = TRUE;
+ }
+ break;
+ case CONTMGM_UN_HILIGHT:
+ if (xx->turnout != NULL && xx->IsHilite) {
+ swmhiliteBorder = mainD.scale*0.1;
+ if ( swmhiliteBorder < trackGauge ) { swmhiliteBorder = trackGauge; }
+ GetBoundingBox( xx->turnout, &swmhiliteSize, &swmhiliteOrig );
+ swmhiliteOrig.x -= swmhiliteBorder;
+ swmhiliteOrig.y -= swmhiliteBorder;
+ swmhiliteSize.x -= swmhiliteOrig.x-swmhiliteBorder;
+ swmhiliteSize.y -= swmhiliteOrig.y-swmhiliteBorder;
+ DrawSWMotorTrackHilite();
+ xx->IsHilite = FALSE;
+ }
+ break;
+ case CONTMGM_GET_TITLE:
+ if (xx->turnout == NULL) {
+ sprintf( message, "\t%s\t%d", xx->name, 0);
+ } else {
+ sprintf( message, "\t%s\t%d", xx->name, GetTrkIndex(xx->turnout));
+ }
+ break;
+ }
+ return FALSE;
}
//#include "bitmaps/switchmotor.xpm"
@@ -826,20 +862,21 @@ static int SwitchmotorMgmProc ( int cmd, void * data )
//#include "bitmaps/switchmnew.xpm"
//#include "bitmaps/switchmedit.xpm"
//#include "bitmaps/switchmdel.xpm"
-#include "bitmaps/switchm.xpm"
+#include "bitmaps/switch-motor.xpm3"
EXPORT void SwitchmotorMgmLoad( void )
{
- track_p trk;
- static wIcon_p switchmI = NULL;
-
- if ( switchmI == NULL)
- switchmI = wIconCreatePixMap( switchm_xpm );
-
- TRK_ITERATE(trk) {
- if (GetTrkType(trk) != T_SWITCHMOTOR) continue;
- ContMgmLoad( switchmI, SwitchmotorMgmProc, trk );
- }
+ track_p trk;
+ static wIcon_p switchmI = NULL;
+
+ if ( switchmI == NULL) {
+ switchmI = wIconCreatePixMap( switch_motor_xpm3[iconSize] );
+ }
+
+ TRK_ITERATE(trk) {
+ if (GetTrkType(trk) != T_SWITCHMOTOR) { continue; }
+ ContMgmLoad( switchmI, SwitchmotorMgmProc, trk );
+ }
}
EXPORT void InitCmdSwitchMotor( wMenu_p menu )
@@ -847,24 +884,25 @@ EXPORT void InitCmdSwitchMotor( wMenu_p menu )
switchmotorName[0] = '\0';
switchmotorNormal[0] = '\0';
switchmotorReverse[0] = '\0';
- switchmotorPointSense[0] = '\0';
- AddMenuButton( menu, CmdSwitchMotorCreate, "cmdSwitchMotorCreate",
- _("Switch Motor"), wIconCreatePixMap( switchm_xpm ),
- LEVEL0_50, IC_STICKY|IC_POPUP2, ACCL_SWITCHMOTOR1,
- NULL );
+ switchmotorPointSense[0] = '\0';
+ AddMenuButton( menu, CmdSwitchMotorCreate, "cmdSwitchMotorCreate",
+ _("Switch Motor"), wIconCreatePixMap( switch_motor_xpm3[iconSize] ),
+ LEVEL0_50, IC_STICKY|IC_POPUP2, ACCL_SWITCHMOTOR1,
+ NULL );
ParamRegister( &switchmotorPG );
}
EXPORT void CheckDeleteSwitchmotor(track_p t)
{
- track_p sm;
- switchmotorData_p xx;
- if (GetTrkType( t ) != T_TURNOUT) return; // SMs only on turnouts
-
- while ((sm = FindSwitchMotor( t ))) { //Cope with multiple motors for one Turnout!
- xx = GetswitchmotorData (sm);
- InfoMessage(_("Deleting Switch Motor %s"),xx->name);
- DeleteTrack (sm, FALSE);
- };
+ track_p sm;
+ switchmotorData_p xx;
+ if (GetTrkType( t ) != T_TURNOUT) { return; } // SMs only on turnouts
+
+ while ((sm = FindSwitchMotor(
+ t ))) { //Cope with multiple motors for one Turnout!
+ xx = GetswitchmotorData (sm);
+ InfoMessage(_("Deleting Switch Motor %s"),xx->name);
+ DeleteTrack (sm, FALSE);
+ };
}
diff --git a/app/bin/ctext.c b/app/bin/ctext.c
index 3ab301c..673e4f7 100644
--- a/app/bin/ctext.c
+++ b/app/bin/ctext.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"
@@ -28,7 +28,8 @@
#include "misc.h"
#include "common-ui.h"
-track_p NewText( wIndex_t index, coOrd p, ANGLE_T angle, char * text, CSIZE_T textSize, wDrawColor color, BOOL_T boxed );
+track_p NewText( wIndex_t index, coOrd p, ANGLE_T angle, char * text,
+ CSIZE_T textSize, wDrawColor color, BOOL_T boxed );
void LoadFontSizeList( wList_p, long );
void UpdateFontSizeList( long *, wList_p, wIndex_t );
@@ -42,43 +43,42 @@ static wMenu_p textPopupM;
*/
static struct {
- STATE_T state;
- CSIZE_T len;
- coOrd cursPos0, cursPos1;
- POS_T cursHeight;
- POS_T textLen;
- POS_T lastLineLen;
- POS_T lastLineOffset;
- coOrd pos;
- ANGLE_T angle;
- long size;
- wIndex_t fontSizeInx;
- char text[STR_HUGE_SIZE];
- wDrawColor color;
- BOOL_T boxed;
- } Dt;
+ STATE_T state;
+ CSIZE_T len;
+ coOrd cursPos0, cursPos1;
+ POS_T cursHeight;
+ POS_T textLen;
+ POS_T lastLineLen;
+ POS_T lastLineOffset;
+ coOrd pos;
+ ANGLE_T angle;
+ long size;
+ wIndex_t fontSizeInx;
+ char text[STR_HUGE_SIZE];
+ wDrawColor color;
+ BOOL_T boxed;
+} Dt;
static char * boxLabels[] = { "", NULL };
static paramData_t textPLs[] = {
#define textPD (textPLs[0])
- { PD_DROPLIST, &Dt.fontSizeInx, "fontsize", 0, NULL, N_("Font Size"), BL_EDITABLE },
+ { PD_DROPLIST, &Dt.fontSizeInx, "fontsize", 0, NULL, N_("Font Size"), BL_EDITABLE },
#define colorPD (textPLs[1])
- { PD_COLORLIST, &Dt.color, "color", PDO_NORECORD, NULL, N_("Color") },
+ { PD_COLORLIST, &Dt.color, "color", PDO_NORECORD, NULL, N_("Color") },
#define boxPD (textPLs[2])
- { PD_TOGGLE, &Dt.boxed, "boxed", 0, boxLabels, N_("Boxed"), 0 }
- };
+ { PD_TOGGLE, &Dt.boxed, "boxed", 0, boxLabels, N_("Boxed"), 0 }
+};
static paramGroup_t textPG = { "text", 0, textPLs, COUNT( textPLs ) };
-enum TEXT_POSITION
-{
+enum TEXT_POSITION {
POSITION_TEXT = 0,
SHOW_TEXT
};
static void TextDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * context )
+ paramGroup_p pg,
+ int inx,
+ void * context )
{
coOrd size, lastline;
@@ -100,7 +100,7 @@ static void TextDlgUpdate(
Dt.cursPos0.x = Dt.cursPos1.x = Dt.pos.x+Dt.lastLineLen;
Dt.cursPos1.y = Dt.pos.y+Dt.cursHeight+Dt.lastLineOffset;
}
- break;
+ break;
}
}
@@ -115,7 +115,7 @@ static STATUS_T CmdText( wAction_t action, coOrd pos )
switch (action & 0xFF) {
case C_START:
- Dt.state = POSITION_TEXT;
+ Dt.state = POSITION_TEXT;
Dt.cursPos0 = Dt.cursPos1 = zero;
Dt.len = 0;
Dt.textLen = 0;
@@ -123,8 +123,7 @@ static STATUS_T CmdText( wAction_t action, coOrd pos )
Dt.lastLineLen = 0;
Dt.lastLineOffset = 0;
- if (textPD.control == NULL)
- {
+ if (textPD.control == NULL) {
ParamCreateControls(&textPG, TextDlgUpdate);
LoadFontSizeList((wList_p)textPD.control, Dt.size);
ParamRegister(&textPG);
@@ -140,11 +139,11 @@ static STATUS_T CmdText( wAction_t action, coOrd pos )
controls[0] = textPD.control;
controls[1] = colorPD.control;
- controls[2] = boxPD.control;
- controls[3] = 0;
+ controls[2] = boxPD.control;
+ controls[3] = 0;
labels[0] = N_("Font Size");
- labels[1] = N_("Color");
- labels[2] = N_("Boxed");
+ labels[1] = N_("Color");
+ labels[2] = N_("Boxed");
InfoSubstituteControls( controls, labels );
return C_CONTINUE;
break;
@@ -154,17 +153,18 @@ static STATUS_T CmdText( wAction_t action, coOrd pos )
Dt.pos = pos;
Dt.cursPos0.y = Dt.cursPos1.y = pos.y + Dt.lastLineOffset;
Dt.cursPos0.x = Dt.cursPos1.x = pos.x + Dt.lastLineLen;
- DrawTextSize(&mainD, "Aquilp", NULL, Dt.size, TRUE, &size); //In case fontsize change
+ DrawTextSize(&mainD, "Aquilp", NULL, Dt.size, TRUE,
+ &size); //In case fontsize change
Dt.cursHeight = size.y;
Dt.cursPos1.y += Dt.cursHeight;
- Dt.state = SHOW_TEXT;
+ Dt.state = SHOW_TEXT;
return C_CONTINUE;
case C_MOVE:
Dt.pos = pos;
Dt.cursPos0.y = Dt.cursPos1.y = pos.y + Dt.lastLineOffset;
Dt.cursPos0.x = Dt.cursPos1.x = pos.x + Dt.lastLineLen;
Dt.cursPos1.y += Dt.cursHeight;
- return C_CONTINUE;
+ return C_CONTINUE;
case C_UP:
return C_CONTINUE;
case C_TEXT:
@@ -172,7 +172,7 @@ static STATUS_T CmdText( wAction_t action, coOrd pos )
NoticeMessage( MSG_SEL_POS_FIRST, _("Ok"), NULL );
return C_CONTINUE;
}
-
+
c = (unsigned char)(action >> 8);
switch (c) {
case '\b':
@@ -192,7 +192,8 @@ static STATUS_T CmdText( wAction_t action, coOrd pos )
break;
case '\015':
UndoStart( _("Create Text"), "newText - CR" );
- t = NewText( 0, Dt.pos, Dt.angle, Dt.text, (CSIZE_T)Dt.size, Dt.color, Dt.boxed );
+ t = NewText( 0, Dt.pos, Dt.angle, Dt.text, (CSIZE_T)Dt.size, Dt.color,
+ Dt.boxed );
UndoEnd();
DrawNewTrack(t);
Dt.state = POSITION_TEXT;
@@ -210,21 +211,23 @@ static STATUS_T CmdText( wAction_t action, coOrd pos )
InfoMessage("Text too long - truncated");
wBeep();
}
- DrawMultiLineTextSize( &mainD, Dt.text, NULL, Dt.size, TRUE, &size, &lastline);
+ DrawMultiLineTextSize( &mainD, Dt.text, NULL, Dt.size, TRUE, &size, &lastline);
Dt.textLen = size.x;
Dt.lastLineLen = lastline.x;
Dt.lastLineOffset = lastline.y;
Dt.cursPos0.x = Dt.cursPos1.x = Dt.pos.x + Dt.lastLineLen;
Dt.cursPos0.y = Dt.cursPos1.y = Dt.pos.y + Dt.lastLineOffset;
POS_T descent, ascent;
- DrawTextSize2(&mainD, "Aquilp", NULL, Dt.size, TRUE, &size, &descent, &ascent); //In case fontsize change
+ DrawTextSize2(&mainD, "Aquilp", NULL, Dt.size, TRUE, &size, &descent,
+ &ascent); //In case fontsize change
Dt.cursHeight = size.y;
Dt.cursPos0.y -=descent;
Dt.cursPos1.y +=Dt.cursHeight;
return C_CONTINUE;
case C_REDRAW:
DrawLine( &tempD, Dt.cursPos0, Dt.cursPos1, 0, Dt.color );
- DrawMultiString(&tempD, Dt.pos, Dt.text, NULL, (FONTSIZE_T)Dt.size, Dt.color, 0.0, NULL, NULL, Dt.boxed );
+ DrawMultiString(&tempD, Dt.pos, Dt.text, NULL, (FONTSIZE_T)Dt.size, Dt.color,
+ 0.0, NULL, NULL, Dt.boxed );
return C_CONTINUE;
case C_CANCEL:
if (Dt.state != POSITION_TEXT) {
@@ -237,7 +240,8 @@ static STATUS_T CmdText( wAction_t action, coOrd pos )
Dt.state = POSITION_TEXT;
if (Dt.len) {
UndoStart( _("Create Text"), "newText - OK" );
- t = NewText( 0, Dt.pos, Dt.angle, Dt.text, (CSIZE_T)Dt.size, Dt.color, Dt.boxed );
+ t = NewText( 0, Dt.pos, Dt.angle, Dt.text, (CSIZE_T)Dt.size, Dt.color,
+ Dt.boxed );
UndoEnd();
DrawNewTrack(t);
}
@@ -246,10 +250,11 @@ static STATUS_T CmdText( wAction_t action, coOrd pos )
return C_TERMINATE;
case C_FINISH:
- if (Dt.state != POSITION_TEXT && Dt.len > 0)
- CmdText( C_OK, pos );
- else
+ if (Dt.state != POSITION_TEXT && Dt.len > 0) {
+ CmdText( C_OK, pos );
+ } else {
CmdText( C_CANCEL, pos );
+ }
return C_TERMINATE;
case C_CMDMENU:
@@ -261,15 +266,17 @@ static STATUS_T CmdText( wAction_t action, coOrd pos )
}
-#include "bitmaps/text.xpm"
+#include "bitmaps/text.xpm3"
void InitCmdText( wMenu_p menu )
{
- AddMenuButton( menu, CmdText, "cmdText", _("Text"), wIconCreatePixMap(text_xpm[iconSize]), LEVEL0_50, IC_STICKY|IC_CMDMENU|IC_POPUP2, ACCL_TEXT, NULL );
+ AddMenuButton( menu, CmdText, "cmdText", _("Text"),
+ wIconCreatePixMap(text_xpm3[iconSize]), LEVEL0_50,
+ IC_STICKY|IC_CMDMENU|IC_POPUP2, ACCL_TEXT, NULL );
textPopupM = MenuRegister( "Text Font" );
wMenuPushCreate( textPopupM, "", _("Fonts..."), 0, SelectFont, NULL );
Dt.size = (CSIZE_T)wSelectedFontSize();
- Dt.color = wDrawColorBlack;
+ Dt.color = wDrawColorBlack;
}
void InitTrkText( void )
diff --git a/app/bin/ctie.c b/app/bin/ctie.c
new file mode 100644
index 0000000..6881bc4
--- /dev/null
+++ b/app/bin/ctie.c
@@ -0,0 +1,53 @@
+/** \file ctie.c
+ * TIE
+ */
+
+/* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+//#include "cselect.h"
+//#include "custom.h"
+//#include "fileio.h"
+#include "layout.h"
+//#include "param.h"
+//#include "paths.h"
+#include "track.h"
+//#include "include/paramfile.h"
+#include "common-ui.h"
+
+static int log_tieList;
+
+/****************************************************************************
+*
+* TIE DATA
+*
+*/
+
+/**
+* @brief Default tie data for a scale in tieLength, tieWidth, tieSpacing
+*/
+EXPORT void GetDefaultTieData( SCALEINX_T inx, tieData_p tieData )
+{
+ SCALEDESCINX_T scaleInx;
+ GAUGEINX_T gaugeInx;
+ GetScaleGauge( inx, &scaleInx, &gaugeInx );
+
+ tieData->length = (96.0-54.0) / GetScaleRatio(inx) + GetScaleTrackGauge(inx);
+ tieData->width = 16.0 / GetScaleRatio(inx);
+ tieData->spacing = 2 * (tieData->width);
+}
diff --git a/app/bin/ctodesgn.c b/app/bin/ctodesgn.c
index ea124cf..1b50d91 100644
--- a/app/bin/ctodesgn.c
+++ b/app/bin/ctodesgn.c
@@ -18,7 +18,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 "ccurve.h"
@@ -29,13 +29,15 @@
#include "param.h"
#include "track.h"
+#include "trkendpt.h"
#include "ccornu.h"
#include "cbezier.h"
#include "misc.h"
#include "common-ui.h"
+static int log_cornuturnoutdesigner;
+
dynArr_t tempSegs_da;
-dynArr_t tempEndPts_da;
char tempCustom[4096];
#define TURNOUTDESIGNER "CTURNOUT DESIGNER"
@@ -74,35 +76,37 @@ dynArr_t tempSegs_da;
typedef struct {
- struct {
- wWinPix_t x, y;
- } pos;
- int index;
- char * winLabel;
- char * printLabel;
- enum { Dim_e, Frog_e, Angle_e, Rad_e } mode;
- } toDesignFloat_t;
+ struct {
+ wWinPix_t x, y;
+ } pos;
+ int index;
+ char * winLabel;
+ char * printLabel;
+ enum { Dim_e, Frog_e, Angle_e, Rad_e } mode;
+} toDesignFloat_t;
typedef struct {
- PATHPTR_T paths;
- char * segOrder;
- } toDesignSchema_t;
+ PATHPTR_T paths;
+ char * segOrder;
+} toDesignSchema_t;
typedef struct {
- int type;
- char * label;
- int strCnt;
- int lineCnt;
- wLines_t * lines;
- int floatCnt;
- toDesignFloat_t * floats;
- toDesignSchema_t * paths;
- int angleModeCnt;
- wLine_p lineC;
- wBool_t slipmode;
- } toDesignDesc_t;
+ int type;
+ char * label;
+ int strCnt;
+ int lineCnt;
+ wLines_t * lines;
+ int floatCnt;
+ toDesignFloat_t * floats;
+ toDesignSchema_t * paths;
+ int angleModeCnt;
+ wLine_p lineC;
+ wBool_t slipmode;
+} toDesignDesc_t;
+#ifndef MKTURNOUT
static wWin_p newTurnW;
+#endif
static FLOAT_T newTurnRad0;
static FLOAT_T newTurnAngle0;
@@ -135,27 +139,31 @@ static char newTurnManufacturer[STR_SIZE];
static char *newTurnAngleModeLabels[] = { N_("Frog #"), N_("Degrees"), NULL };
static char *newTurnSlipModeLabels[] = { N_("Dual Path"), N_("Quad Path"), NULL };
static DIST_T newTurnRoadbedWidth;
-static long newTurnRoadbedLineWidth = 0;
-static wDrawColor roadbedColor;
+static LWIDTH_T newTurnRoadbedLineWidth = 0;
+static wDrawColor newTurnRoadbedColor;
static DIST_T newTurnTrackGauge;
static char * newTurnScaleName;
static paramFloatRange_t r0d001_10000 = { 0.001, 10000, 80 };
static paramFloatRange_t r0d300_10000 = { 0.300, 10000, 80 };
-static paramFloatRange_t r0_10000 = { 0, 10000, 80 };
+//static paramFloatRange_t r0_10000 = { 0, 10000, 80 };
static paramFloatRange_t r_10000_10000 = { -1000, 10000, 80 };
static paramFloatRange_t r0d001_90 = { 0.001, 90, 80 };
-static paramFloatRange_t r_90_90 = { -90, 90, 80 };
static paramFloatRange_t r0_100 = { 0, 100, 80 };
static paramIntegerRange_t i0_100 = { 0, 100, 40 };
static void NewTurnOk( void * context );
+#ifndef MKTURNOUT
+static paramFloatRange_t r_90_90 = { -90, 90, 80 };
static void ShowTurnoutDesigner( void * context );
+#endif
static coOrd points[20];
+#ifndef MKTURNOUT
static coOrd end_points[20];
static coOrd end_centers[20];
static double end_arcs[20];
static double end_angles[20];
+#endif
static DIST_T radii[10];
static double angles[10];
@@ -199,23 +207,22 @@ static paramData_t turnDesignPLs[] = {
{ PD_STRING, &newTurnRightPartno, "partno2", PDO_DLGHORZ | PDO_NOTBLANK, NULL, N_(" #"),0, 0, sizeof(newTurnRightPartno)},
{ PD_FLOAT, &newTurnRoadbedWidth, "roadbedWidth", PDO_DIM, &r0_100, N_("Roadbed Width") },
{ PD_LONG, &newTurnRoadbedLineWidth, "roadbedLineWidth", PDO_DLGHORZ, &i0_100, N_("Line Width") },
- { PD_COLORLIST, &roadbedColor, "color", PDO_DLGHORZ|PDO_DLGBOXEND, NULL, N_("Color") },
+ { PD_COLORLIST, &newTurnRoadbedColor, "color", PDO_DLGHORZ|PDO_DLGBOXEND, NULL, N_("Color") },
{ PD_BUTTON, NewTurnOk, "done", PDO_DLGCMDBUTTON, NULL, N_("Ok") },
{ PD_BUTTON, wPrintSetup, "printsetup", 0, NULL, N_("Print Setup") },
#define I_TOANGMODE (28)
{ PD_RADIO, &newTurnAngleMode, "angleMode", 0, newTurnAngleModeLabels },
#define I_TOSLIPMODE (29)
{ PD_RADIO, &newTurnSlipMode, "slipMode", 0, newTurnSlipModeLabels }
- };
+};
#ifndef MKTURNOUT
static paramGroup_t turnDesignPG = { "turnoutNew", 0, turnDesignPLs, COUNT( turnDesignPLs ) };
static turnoutInfo_t * customTurnout1, * customTurnout2;
static BOOL_T includeNontrackSegments;
-#endif
-#ifdef MKTURNOUT
+#else
int doCustomInfoLine = 1;
int doRoadBed = 0;
char specialLine[256];
@@ -230,531 +237,619 @@ static toDesignDesc_t * curDesign;
static wLines_t RegLines[] = {
#include "toreg.lin"
- };
+};
static toDesignFloat_t RegFloats[] = {
-{ { 175, 10 }, I_TOLENGTH+0, N_("Length"), N_("Diverging Length"), Dim_e },
-{ { 400, 28 }, I_TOANGLE+0, N_("Angle"), N_("Diverging Angle"), Frog_e },
-{ { 325, 68 }, I_TOOFFSET+0, N_("Offset"), N_("Diverging Offset"), Dim_e },
-{ { 100, 120 }, I_TOLENGTH+1, N_("Length"), N_("Overall Length"), Dim_e },
- };
+ { { 175, 10 }, I_TOLENGTH+0, N_("Length"), N_("Diverging Length"), Dim_e },
+ { { 400, 28 }, I_TOANGLE+0, N_("Angle"), N_("Diverging Angle"), Frog_e },
+ { { 325, 68 }, I_TOOFFSET+0, N_("Offset"), N_("Diverging Offset"), Dim_e },
+ { { 100, 120 }, I_TOLENGTH+1, N_("Length"), N_("Overall Length"), Dim_e },
+};
static signed char RegPaths[] = {
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 2, 0, 0,
- 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 3, 4, 0, 0, 0 };
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 2, 0, 0,
+ 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 3, 4, 0, 0, 0
+};
static toDesignSchema_t RegSchema = {
- RegPaths,
- "030" "310" "341" "420" };
+ RegPaths,
+ "030" "310" "341" "420"
+};
static toDesignDesc_t RegDesc = {
- NTO_REGULAR,
- N_("Regular Turnout"),
- 2,
- COUNT( RegLines ), RegLines,
- COUNT( RegFloats ), RegFloats,
- &RegSchema, 1 };
+ NTO_REGULAR,
+ N_("Regular Turnout"),
+ 2,
+ COUNT( RegLines ), RegLines,
+ COUNT( RegFloats ), RegFloats,
+ &RegSchema, 1
+};
static wLines_t CrvLines[] = {
#include "tocrv.lin"
- };
+};
static toDesignFloat_t CrvFloats[] = {
-{ { 175, 10 }, I_TOLENGTH+0, N_("Length"), N_("Inner Length"), Dim_e },
-{ { 375, 12 }, I_TOANGLE+0, N_("Angle"), N_("Inner Angle"), Frog_e },
-{ { 375, 34 }, I_TOOFFSET+0, N_("Offset"), N_("Inner Offset"), Dim_e },
-{ { 400, 62 }, I_TOANGLE+1, N_("Angle"), N_("Outer Angle"), Frog_e },
-{ { 400, 84 }, I_TOOFFSET+1, N_("Offset"), N_("Outer Offset"), Dim_e },
-{ { 175, 120 }, I_TOLENGTH+1, N_("Length"), N_("Outer Length"), Dim_e } };
+ { { 175, 10 }, I_TOLENGTH+0, N_("Length"), N_("Inner Length"), Dim_e },
+ { { 375, 12 }, I_TOANGLE+0, N_("Angle"), N_("Inner Angle"), Frog_e },
+ { { 375, 34 }, I_TOOFFSET+0, N_("Offset"), N_("Inner Offset"), Dim_e },
+ { { 400, 62 }, I_TOANGLE+1, N_("Angle"), N_("Outer Angle"), Frog_e },
+ { { 400, 84 }, I_TOOFFSET+1, N_("Offset"), N_("Outer Offset"), Dim_e },
+ { { 175, 120 }, I_TOLENGTH+1, N_("Length"), N_("Outer Length"), Dim_e }
+};
static signed char Crv1Paths[] = {
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 4, 5, 0, 0,
- 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 2, 3, 0, 0, 0 };
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 4, 5, 0, 0,
+ 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 2, 3, 0, 0, 0
+};
static toDesignSchema_t Crv1Schema = {
- Crv1Paths,
- "030" "341" "410" "362" "620" };
+ Crv1Paths,
+ "030" "341" "410" "362" "620"
+};
static signed char Crv2Paths[] = {
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 4, 5, 0, 0,
- 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 6, 2, 3, 0, 0, 0 };
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 4, 5, 0, 0,
+ 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 6, 2, 3, 0, 0, 0
+};
static toDesignSchema_t Crv2Schema = {
- Crv2Paths,
- "050" "341" "410" "562" "620" "530" };
+ Crv2Paths,
+ "050" "341" "410" "562" "620" "530"
+};
static signed char Crv3Paths[] = {
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 6, 4, 5, 0, 0,
- 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 2, 3, 0, 0, 0 };
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 6, 4, 5, 0, 0,
+ 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 2, 3, 0, 0, 0
+};
static toDesignSchema_t Crv3Schema = {
- Crv3Paths,
- "030" "341" "410" "562" "620" "350" };
+ Crv3Paths,
+ "030" "341" "410" "562" "620" "350"
+};
static toDesignDesc_t CrvDesc = {
- NTO_CURVED,
- N_("Curved Turnout"),
- 2,
- COUNT( CrvLines ), CrvLines,
- COUNT( CrvFloats ), CrvFloats,
- &Crv1Schema, 1 };
+ NTO_CURVED,
+ N_("Curved Turnout"),
+ 2,
+ COUNT( CrvLines ), CrvLines,
+ COUNT( CrvFloats ), CrvFloats,
+ &Crv1Schema, 1
+};
+#ifndef MKTURNOUT
static wLines_t CornuLines[] = {
#include "tocornu.lin"
- };
+};
static toDesignFloat_t CornuFloats[] = {
-{ { 175, 10 }, I_TOLENGTH+0, N_("Length"), N_("Inner Length"), Dim_e },
-{ { 375, 0 }, I_TOANGLE+0, N_("Angle"), N_("Inner Angle"), Frog_e },
-{ { 375, 22 }, I_TOOFFSET+0, N_("Offset"), N_("Inner Offset"), Dim_e },
-{ { 375, 44 }, I_TORAD+0, N_("Radius"), N_("Inner Radius"), Dim_e },
-{ { 400, 62 }, I_TOANGLE+1, N_("Angle"), N_("Outer Angle"), Frog_e },
-{ { 400, 84 }, I_TOOFFSET+1, N_("Offset"), N_("Outer Offset"), Dim_e },
-{ { 400, 106 }, I_TORAD+1, N_("Radius"), N_("Outer Radius"), Dim_e },
-{ { 175, 120 }, I_TOLENGTH+1, N_("Length"), N_("Outer Length"), Dim_e },
-{ { 50, 90 }, I_TORAD+2, N_("Radius"), N_("Toe Radius"), Dim_e },
-{ { 50, 40 }, I_TOTOELENGTH+0, N_("Length"), N_("Toe Length"), Dim_e } };
+ { { 175, 10 }, I_TOLENGTH+0, N_("Length"), N_("Inner Length"), Dim_e },
+ { { 375, 0 }, I_TOANGLE+0, N_("Angle"), N_("Inner Angle"), Frog_e },
+ { { 375, 22 }, I_TOOFFSET+0, N_("Offset"), N_("Inner Offset"), Dim_e },
+ { { 375, 44 }, I_TORAD+0, N_("Radius"), N_("Inner Radius"), Dim_e },
+ { { 400, 62 }, I_TOANGLE+1, N_("Angle"), N_("Outer Angle"), Frog_e },
+ { { 400, 84 }, I_TOOFFSET+1, N_("Offset"), N_("Outer Offset"), Dim_e },
+ { { 400, 106 }, I_TORAD+1, N_("Radius"), N_("Outer Radius"), Dim_e },
+ { { 175, 120 }, I_TOLENGTH+1, N_("Length"), N_("Outer Length"), Dim_e },
+ { { 50, 90 }, I_TORAD+2, N_("Radius"), N_("Toe Radius"), Dim_e },
+ { { 50, 40 }, I_TOTOELENGTH+0, N_("Length"), N_("Toe Length"), Dim_e }
+};
static signed char CornuPaths[] = {
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 4, 0, 0, 0,
- 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 2, 0, 0, 0, 0 };
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 4, 0, 0, 0,
+ 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 2, 0, 0, 0, 0
+};
static toDesignSchema_t CornuSchema = {
- CornuPaths,
- "033" "343" "413" };
+ CornuPaths,
+ "033" "343" "413"
+};
static toDesignDesc_t CornuDesc = {
- NTO_CORNU,
- N_("Cornu Curved Turnout"),
- 2,
- COUNT( CornuLines ), CornuLines,
- COUNT( CornuFloats ), CornuFloats,
- &CornuSchema, 1 };
+ NTO_CORNU,
+ N_("Cornu Curved Turnout"),
+ 2,
+ COUNT( CornuLines ), CornuLines,
+ COUNT( CornuFloats ), CornuFloats,
+ &CornuSchema, 1
+};
+#endif
static wLines_t WyeLines[] = {
#include "towye.lin"
- };
+};
static toDesignFloat_t WyeFloats[] = {
-{ { 175, 10 }, I_TOLENGTH+0, N_("Length"), N_("Left Length"), Dim_e },
-{ { 400, 28 }, I_TOANGLE+0, N_("Angle"), N_("Left Angle"), Frog_e },
-{ { 325, 68 }, I_TOOFFSET+0, N_("Offset"), N_("Left Offset"), Dim_e },
-{ { 325, 115 }, I_TOOFFSET+1, N_("Offset"), N_("Right Offset"), Dim_e },
-{ { 400, 153 }, I_TOANGLE+1, N_("Angle"), N_("Right Angle"), Frog_e },
-{ { 175, 170 }, I_TOLENGTH+1, N_("Length"), N_("Right Length"), Dim_e },
- };
+ { { 175, 10 }, I_TOLENGTH+0, N_("Length"), N_("Left Length"), Dim_e },
+ { { 400, 28 }, I_TOANGLE+0, N_("Angle"), N_("Left Angle"), Frog_e },
+ { { 325, 68 }, I_TOOFFSET+0, N_("Offset"), N_("Left Offset"), Dim_e },
+ { { 325, 115 }, I_TOOFFSET+1, N_("Offset"), N_("Right Offset"), Dim_e },
+ { { 400, 153 }, I_TOANGLE+1, N_("Angle"), N_("Right Angle"), Frog_e },
+ { { 175, 170 }, I_TOLENGTH+1, N_("Length"), N_("Right Length"), Dim_e },
+};
static signed char Wye1Paths[] = {
- 'L', 'e', 'f', 't', 0, 1, 2, 3, 0, 0,
- 'R', 'i', 'g', 'h', 't', 0, 1, 4, 5, 0, 0, 0 };
+ 'L', 'e', 'f', 't', 0, 1, 2, 3, 0, 0,
+ 'R', 'i', 'g', 'h', 't', 0, 1, 4, 5, 0, 0, 0
+};
static toDesignSchema_t Wye1Schema = {
- Wye1Paths,
- "030" "341" "410" "362" "620" };
+ Wye1Paths,
+ "030" "341" "410" "362" "620"
+};
static signed char Wye2Paths[] = {
- 'L', 'e', 'f', 't', 0, 1, 2, 3, 4, 0, 0,
- 'R', 'i', 'g', 'h', 't', 0, 1, 5, 6, 0, 0, 0 };
+ 'L', 'e', 'f', 't', 0, 1, 2, 3, 4, 0, 0,
+ 'R', 'i', 'g', 'h', 't', 0, 1, 5, 6, 0, 0, 0
+};
static toDesignSchema_t Wye2Schema = {
- Wye2Paths,
- "050" "530" "341" "410" "562" "620" };
+ Wye2Paths,
+ "050" "530" "341" "410" "562" "620"
+};
static signed char Wye3Paths[] = {
- 'L', 'e', 'f', 't', 0, 1, 2, 3, 0, 0,
- 'R', 'i', 'g', 'h', 't', 0, 1, 4, 5, 6, 0, 0, 0 };
+ 'L', 'e', 'f', 't', 0, 1, 2, 3, 0, 0,
+ 'R', 'i', 'g', 'h', 't', 0, 1, 4, 5, 6, 0, 0, 0
+};
static toDesignSchema_t Wye3Schema = {
- Wye3Paths,
- "030" "341" "410" "350" "562" "620" };
+ Wye3Paths,
+ "030" "341" "410" "350" "562" "620"
+};
static toDesignDesc_t WyeDesc = {
- NTO_WYE,
- N_("Wye Turnout"),
- 1,
- COUNT( WyeLines ), WyeLines,
- COUNT( WyeFloats ), WyeFloats,
- NULL, 1 };
+ NTO_WYE,
+ N_("Wye Turnout"),
+ 1,
+ COUNT( WyeLines ), WyeLines,
+ COUNT( WyeFloats ), WyeFloats,
+ NULL, 1
+};
+#ifndef MKTURNOUT
static wLines_t CornuWyeLines[] = {
#include "tocornuwye.lin"
- };
+};
static toDesignFloat_t CornuWyeFloats[] = {
-{ { 175, 10 }, I_TOLENGTH+0, N_("Length"), N_("Left Length"), Dim_e },
-{ { 400, 28 }, I_TOANGLE+0, N_("Angle"), N_("Left Angle"), Frog_e },
-{ { 400, 48 }, I_TOOFFSET+0, N_("Offset"), N_("Left Offset"), Dim_e },
-{ { 400, 68 }, I_TORAD+0, N_("Radius"), N_("Left Radius"), Dim_e },
-{ { 400, 108 }, I_TORAD+1, N_("Radius"), N_("Right Radius"), Dim_e },
-{ { 400, 128 }, I_TOOFFSET+1, N_("Offset"), N_("Right Offset"), Dim_e },
-{ { 400, 148 }, I_TOANGLE+1, N_("Angle"), N_("Right Angle"), Frog_e },
-{ { 175, 170 }, I_TOLENGTH+1, N_("Length"), N_("Right Length"), Dim_e },
-{ { 80, 48 }, I_TOTOELENGTH+0, N_("Length"), N_("Toe Length"), Dim_e },
-{ { 80, 28 }, I_TORAD+2, N_("Radius"), N_("Toe Radius"), Dim_e },
- };
+ { { 175, 10 }, I_TOLENGTH+0, N_("Length"), N_("Left Length"), Dim_e },
+ { { 400, 28 }, I_TOANGLE+0, N_("Angle"), N_("Left Angle"), Frog_e },
+ { { 400, 48 }, I_TOOFFSET+0, N_("Offset"), N_("Left Offset"), Dim_e },
+ { { 400, 68 }, I_TORAD+0, N_("Radius"), N_("Left Radius"), Dim_e },
+ { { 400, 108 }, I_TORAD+1, N_("Radius"), N_("Right Radius"), Dim_e },
+ { { 400, 128 }, I_TOOFFSET+1, N_("Offset"), N_("Right Offset"), Dim_e },
+ { { 400, 148 }, I_TOANGLE+1, N_("Angle"), N_("Right Angle"), Frog_e },
+ { { 175, 170 }, I_TOLENGTH+1, N_("Length"), N_("Right Length"), Dim_e },
+ { { 80, 48 }, I_TOTOELENGTH+0, N_("Length"), N_("Toe Length"), Dim_e },
+ { { 80, 28 }, I_TORAD+2, N_("Radius"), N_("Toe Radius"), Dim_e },
+};
static signed char CornuWyePaths[] = {
- 'L', 'e', 'f', 't', 0, 1, 2, 3, 0, 0,
- 'R', 'i', 'g', 'h', 't', 0, 1, 4, 5, 0, 0, 0 }; /* Not Used */
+ 'L', 'e', 'f', 't', 0, 1, 2, 3, 0, 0,
+ 'R', 'i', 'g', 'h', 't', 0, 1, 4, 5, 0, 0, 0
+}; /* Not Used */
static toDesignSchema_t CornuWyeSchema = {
- CornuWyePaths,
- "030" "341" "410" "362" "620" }; /* Not Used */
+ CornuWyePaths,
+ "030" "341" "410" "362" "620"
+}; /* Not Used */
static toDesignDesc_t CornuWyeDesc = {
- NTO_CORNUWYE,
- N_("Cornu Wye Turnout"),
- 1,
- COUNT( CornuWyeLines ), CornuWyeLines,
- COUNT( CornuWyeFloats ), CornuWyeFloats,
- NULL, 1 };
+ NTO_CORNUWYE,
+ N_("Cornu Wye Turnout"),
+ 1,
+ COUNT( CornuWyeLines ), CornuWyeLines,
+ COUNT( CornuWyeFloats ), CornuWyeFloats,
+ NULL, 1
+};
+#endif
static wLines_t ThreewayLines[] = {
#include "to3way.lin"
- };
+};
static toDesignFloat_t ThreewayFloats[] = {
-{ { 175, 10 }, I_TOLENGTH+0, N_("Length"), N_("Left Length"), Dim_e },
-{ { 400, 28 }, I_TOANGLE+0, N_("Angle"), N_("Left Angle"), Frog_e },
-{ { 325, 68 }, I_TOOFFSET+0, N_("Offset"), N_("Left Offset"), Dim_e },
-{ { 100, 90 }, I_TOLENGTH+2, N_("Length"), N_("Length"), Dim_e },
-{ { 325, 115 }, I_TOOFFSET+1, N_("Offset"), N_("Right Offset"), Dim_e },
-{ { 400, 153 }, I_TOANGLE+1, N_("Angle"), N_("Right Angle"), Frog_e },
-{ { 175, 170 }, I_TOLENGTH+1, N_("Length"), N_("Right Length"), Dim_e },
- };
+ { { 175, 10 }, I_TOLENGTH+0, N_("Length"), N_("Left Length"), Dim_e },
+ { { 400, 28 }, I_TOANGLE+0, N_("Angle"), N_("Left Angle"), Frog_e },
+ { { 325, 68 }, I_TOOFFSET+0, N_("Offset"), N_("Left Offset"), Dim_e },
+ { { 100, 90 }, I_TOLENGTH+2, N_("Length"), N_("Length"), Dim_e },
+ { { 325, 115 }, I_TOOFFSET+1, N_("Offset"), N_("Right Offset"), Dim_e },
+ { { 400, 153 }, I_TOANGLE+1, N_("Angle"), N_("Right Angle"), Frog_e },
+ { { 175, 170 }, I_TOLENGTH+1, N_("Length"), N_("Right Length"), Dim_e },
+};
static signed char Tri1Paths[] = {
- 'L', 'e', 'f', 't', 0, 1, 2, 3, 0, 0,
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 6, 0, 0,
- 'R', 'i', 'g', 'h', 't', 0, 1, 4, 5, 0, 0, 0 };
+ 'L', 'e', 'f', 't', 0, 1, 2, 3, 0, 0,
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 6, 0, 0,
+ 'R', 'i', 'g', 'h', 't', 0, 1, 4, 5, 0, 0, 0
+};
static toDesignSchema_t Tri1Schema = {
- Tri1Paths,
- "030" "341" "410" "362" "620" "370" };
+ Tri1Paths,
+ "030" "341" "410" "362" "620" "370"
+};
static signed char Tri2Paths[] = {
- 'L', 'e', 'f', 't', 0, 1, 2, 3, 4, 0, 0,
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 2, 7, 0, 0,
- 'R', 'i', 'g', 'h', 't', 0, 1, 5, 6, 0, 0, 0 };
+ 'L', 'e', 'f', 't', 0, 1, 2, 3, 4, 0, 0,
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 2, 7, 0, 0,
+ 'R', 'i', 'g', 'h', 't', 0, 1, 5, 6, 0, 0, 0
+};
static toDesignSchema_t Tri2Schema = {
- Tri2Paths,
- "050" "530" "341" "410" "562" "620" "370" };
+ Tri2Paths,
+ "050" "530" "341" "410" "562" "620" "370"
+};
static signed char Tri3Paths[] = {
- 'L', 'e', 'f', 't', 0, 1, 2, 3, 0, 0,
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 4, 7, 0, 0,
- 'R', 'i', 'g', 'h', 't', 0, 1, 4, 5, 6, 0, 0, 0 };
+ 'L', 'e', 'f', 't', 0, 1, 2, 3, 0, 0,
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 4, 7, 0, 0,
+ 'R', 'i', 'g', 'h', 't', 0, 1, 4, 5, 6, 0, 0, 0
+};
static toDesignSchema_t Tri3Schema = {
- Tri3Paths,
- "030" "341" "410" "350" "562" "620" "570" };
+ Tri3Paths,
+ "030" "341" "410" "350" "562" "620" "570"
+};
static toDesignDesc_t ThreewayDesc = {
- NTO_3WAY,
- N_("3-way Turnout"),
- 1,
- COUNT( ThreewayLines ), ThreewayLines,
- COUNT( ThreewayFloats ), ThreewayFloats,
- NULL, 1 };
+ NTO_3WAY,
+ N_("3-way Turnout"),
+ 1,
+ COUNT( ThreewayLines ), ThreewayLines,
+ COUNT( ThreewayFloats ), ThreewayFloats,
+ NULL, 1
+};
+#ifndef MKTURNOUT
static wLines_t CornuThreewayLines[] = {
#include "tocornu3way.lin"
- };
+};
static toDesignFloat_t CornuThreewayFloats[] = {
-{ { 175, 10 }, I_TOLENGTH+0, N_("Length"), N_("Left Length"), Dim_e },
-{ { 380, 10 }, I_TOANGLE+0, N_("Angle"), N_("Left Angle"), Frog_e },
-{ { 380, 50 }, I_TOOFFSET+0, N_("Offset"), N_("Left Offset"), Dim_e },
-{ { 380, 30 }, I_TORAD+0, N_("Radius"), N_("Left Radius"), Dim_e },
-{ { 130, 90 }, I_TOLENGTH+3, N_("Length"), N_("Center Length"), Dim_e },
-{ { 400, 70 }, I_TOANGLE+3, N_("Angle"), N_("Center Angle"), Dim_e },
-{ { 400, 90}, I_TOOFFSET+3, N_("Offset"), N_("Center Offset"), Dim_e },
-{ { 400, 110 }, I_TORAD+3, N_("Radius"), N_("Center Radius"), Dim_e },
-{ { 420, 150 }, I_TORAD+1, N_("Radius"), N_("Right Radius"), Dim_e },
-{ { 420, 130 }, I_TOOFFSET+1, N_("Offset"), N_("Right Offset"), Dim_e },
-{ { 420, 170 }, I_TOANGLE+1, N_("Angle"), N_("Right Angle"), Frog_e },
-{ { 175, 170 }, I_TOLENGTH+1, N_("Length"), N_("Right Length"), Dim_e },
-{ { 45, 50 }, I_TOTOELENGTH+0, N_("Length"), N_("Toe Length Left"), Dim_e },
-{ { 55, 140 }, I_TOTOELENGTH+1, N_("Length"), N_("Toe Length Right"), Dim_e },
-{ { 40, 105 }, I_TORAD+2, N_("Radius"), N_("Toe Radius"), Dim_e },
- };
+ { { 175, 10 }, I_TOLENGTH+0, N_("Length"), N_("Left Length"), Dim_e },
+ { { 380, 10 }, I_TOANGLE+0, N_("Angle"), N_("Left Angle"), Frog_e },
+ { { 380, 50 }, I_TOOFFSET+0, N_("Offset"), N_("Left Offset"), Dim_e },
+ { { 380, 30 }, I_TORAD+0, N_("Radius"), N_("Left Radius"), Dim_e },
+ { { 130, 90 }, I_TOLENGTH+3, N_("Length"), N_("Center Length"), Dim_e },
+ { { 400, 70 }, I_TOANGLE+3, N_("Angle"), N_("Center Angle"), Dim_e },
+ { { 400, 90}, I_TOOFFSET+3, N_("Offset"), N_("Center Offset"), Dim_e },
+ { { 400, 110 }, I_TORAD+3, N_("Radius"), N_("Center Radius"), Dim_e },
+ { { 420, 150 }, I_TORAD+1, N_("Radius"), N_("Right Radius"), Dim_e },
+ { { 420, 130 }, I_TOOFFSET+1, N_("Offset"), N_("Right Offset"), Dim_e },
+ { { 420, 170 }, I_TOANGLE+1, N_("Angle"), N_("Right Angle"), Frog_e },
+ { { 175, 170 }, I_TOLENGTH+1, N_("Length"), N_("Right Length"), Dim_e },
+ { { 45, 50 }, I_TOTOELENGTH+0, N_("Length"), N_("Toe Length Left"), Dim_e },
+ { { 55, 140 }, I_TOTOELENGTH+1, N_("Length"), N_("Toe Length Right"), Dim_e },
+ { { 40, 105 }, I_TORAD+2, N_("Radius"), N_("Toe Radius"), Dim_e },
+};
static signed char CornuTriPaths[] = {
- 'L', 'e', 'f', 't', 0, 1, 2, 3, 0, 0,
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 6, 0, 0,
- 'R', 'i', 'g', 'h', 't', 0, 1, 4, 5, 0, 0, 0 };
+ 'L', 'e', 'f', 't', 0, 1, 2, 3, 0, 0,
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 6, 0, 0,
+ 'R', 'i', 'g', 'h', 't', 0, 1, 4, 5, 0, 0, 0
+};
static toDesignSchema_t CornuTriSchema = {
- CornuTriPaths,
- "030" "341" "410" "362" "620" "370" };
+ CornuTriPaths,
+ "030" "341" "410" "362" "620" "370"
+};
static toDesignDesc_t CornuThreewayDesc = {
- NTO_CORNU3WAY,
- N_("Cornu 3-way Turnout"),
- 1,
- COUNT( CornuThreewayLines ), CornuThreewayLines,
- COUNT( CornuThreewayFloats ), CornuThreewayFloats,
- NULL, 1 };
+ NTO_CORNU3WAY,
+ N_("Cornu 3-way Turnout"),
+ 1,
+ COUNT( CornuThreewayLines ), CornuThreewayLines,
+ COUNT( CornuThreewayFloats ), CornuThreewayFloats,
+ NULL, 1
+};
+#endif
static wLines_t CrossingLines[] = {
#include "toxing.lin"
- };
+};
static toDesignFloat_t CrossingFloats[] = {
-{ { 329, 30 }, I_TOLENGTH+0, N_("Length"), N_("Length"), Dim_e },
-{ { 370, 90 }, I_TOANGLE+0, N_("Angle"), N_("Angle"), Frog_e },
-{ { 329, 150 }, I_TOLENGTH+1, N_("Length"), N_("Length"), Dim_e } };
+ { { 329, 30 }, I_TOLENGTH+0, N_("Length"), N_("Length"), Dim_e },
+ { { 370, 90 }, I_TOANGLE+0, N_("Angle"), N_("Angle"), Frog_e },
+ { { 329, 150 }, I_TOLENGTH+1, N_("Length"), N_("Length"), Dim_e }
+};
static signed char CrossingPaths[] = {
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 0, 2, 0, 0, 0 };
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 0, 2, 0, 0, 0
+};
static toDesignSchema_t CrossingSchema = {
- CrossingPaths,
- "010" "230" };
+ CrossingPaths,
+ "010" "230"
+};
static toDesignDesc_t CrossingDesc = {
- NTO_CROSSING,
- N_("Crossing"),
- 1,
- COUNT( CrossingLines ), CrossingLines,
- COUNT( CrossingFloats ), CrossingFloats,
- &CrossingSchema, 1 };
+ NTO_CROSSING,
+ N_("Crossing"),
+ 1,
+ COUNT( CrossingLines ), CrossingLines,
+ COUNT( CrossingFloats ), CrossingFloats,
+ &CrossingSchema, 1
+};
static wLines_t SingleSlipLines[] = {
#include "tosslip.lin"
- };
+};
static toDesignFloat_t SingleSlipFloats[] = {
-{ { 329, 30 }, I_TOLENGTH+0, N_("Length"), N_("Length"), Dim_e },
-{ { 370, 90 }, I_TOANGLE+0, N_("Angle"), N_("Angle"), Frog_e },
-{ { 329, 155 }, I_TOLENGTH+1, N_("Length"), N_("Length"), Dim_e } };
+ { { 329, 30 }, I_TOLENGTH+0, N_("Length"), N_("Length"), Dim_e },
+ { { 370, 90 }, I_TOANGLE+0, N_("Angle"), N_("Angle"), Frog_e },
+ { { 329, 155 }, I_TOLENGTH+1, N_("Length"), N_("Length"), Dim_e }
+};
static signed char SingleSlipPaths[] = {
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 2, 0, 3, 4, 0, 0,
- 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 5, 4, 0, 0, 0 };
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 2, 0, 3, 4, 0, 0,
+ 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 5, 4, 0, 0, 0
+};
static toDesignSchema_t SingleSlipSchema = {
- SingleSlipPaths,
- "040" "410" "250" "530" "451" };
+ SingleSlipPaths,
+ "040" "410" "250" "530" "451"
+};
static toDesignDesc_t SingleSlipDesc = {
- NTO_S_SLIP,
- N_("Single Slipswitch"),
- 1,
- COUNT( SingleSlipLines ), SingleSlipLines,
- COUNT( SingleSlipFloats ), SingleSlipFloats,
- &SingleSlipSchema, 1 };
+ NTO_S_SLIP,
+ N_("Single Slipswitch"),
+ 1,
+ COUNT( SingleSlipLines ), SingleSlipLines,
+ COUNT( SingleSlipFloats ), SingleSlipFloats,
+ &SingleSlipSchema, 1
+};
static wLines_t DoubleSlipLines[] = {
#include "todslip.lin"
- };
+};
static toDesignFloat_t DoubleSlipFloats[] = {
-{ { 329, 30 }, I_TOLENGTH+0, N_("Length"), N_("Length"), Dim_e },
-{ { 370, 90 }, I_TOANGLE+0, N_("Angle"), N_("Angle"), Frog_e },
-{ { 329, 155 }, I_TOLENGTH+1, N_("Length"), N_("Length"), Dim_e } };
+ { { 329, 30 }, I_TOLENGTH+0, N_("Length"), N_("Length"), Dim_e },
+ { { 370, 90 }, I_TOANGLE+0, N_("Angle"), N_("Angle"), Frog_e },
+ { { 329, 155 }, I_TOLENGTH+1, N_("Length"), N_("Length"), Dim_e }
+};
static signed char DoubleSlipPaths[] = {
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 2, 3, 0, 4, 5, 6, 0, 0,
- 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 7, 6, 0, 4, 8, 3, 0, 0, 0 };
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 2, 3, 0, 4, 5, 6, 0, 0,
+ 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 7, 6, 0, 4, 8, 3, 0, 0, 0
+};
static signed char DoubleSlipPaths2[] = {
- 'C', 'r', 'o', 's', 's', '1', 0, 1, 2, 3, 0, 0,
- 'C', 'r', 'o', 's', 's', '2', 0, 4, 5, 6, 0, 0,
- 'S', 'l', 'i', 'p', '1', 0, 1, 7, 6, 0, 0,
- 'S', 'l', 'i', 'p', '2', 0, 4, 8, 3, 0, 0, 0 };
+ 'C', 'r', 'o', 's', 's', '1', 0, 1, 2, 3, 0, 0,
+ 'C', 'r', 'o', 's', 's', '2', 0, 4, 5, 6, 0, 0,
+ 'S', 'l', 'i', 'p', '1', 0, 1, 7, 6, 0, 0,
+ 'S', 'l', 'i', 'p', '2', 0, 4, 8, 3, 0, 0, 0
+};
static toDesignSchema_t DoubleSlipSchema = {
- DoubleSlipPaths,
- "040" "460" "610" "270" "750" "530" "451" "762" };
+ DoubleSlipPaths,
+ "040" "460" "610" "270" "750" "530" "451" "762"
+};
static toDesignSchema_t DoubleSlipSchema2 = {
- DoubleSlipPaths2,
- "040" "460" "610" "270" "750" "530" "451" "762" };
+ DoubleSlipPaths2,
+ "040" "460" "610" "270" "750" "530" "451" "762"
+};
static toDesignDesc_t DoubleSlipDesc = {
- NTO_D_SLIP,
- N_("Double Slipswitch"),
- 1,
- COUNT( DoubleSlipLines ), DoubleSlipLines,
- COUNT( DoubleSlipFloats ), DoubleSlipFloats,
- &DoubleSlipSchema, 1 };
+ NTO_D_SLIP,
+ N_("Double Slipswitch"),
+ 1,
+ COUNT( DoubleSlipLines ), DoubleSlipLines,
+ COUNT( DoubleSlipFloats ), DoubleSlipFloats,
+ &DoubleSlipSchema, 1
+};
+#ifndef MKTURNOUT
static wLines_t RightCrossoverLines[] = {
#include "torcross.lin"
- };
+};
static toDesignFloat_t RightCrossoverFloats[] = {
-{ { 200, 10 }, I_TOLENGTH+0, N_("Length"), N_("Length"), Dim_e },
-{ { 90, 85 }, I_TOOFFSET+0, N_("Separation"), N_("Separation"), Dim_e } };
+ { { 200, 10 }, I_TOLENGTH+0, N_("Length"), N_("Length"), Dim_e },
+ { { 90, 85 }, I_TOOFFSET+0, N_("Separation"), N_("Separation"), Dim_e }
+};
static signed char RightCrossoverPaths[] = {
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 2, 0, 3, 4, 0, 0,
- 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 3, 5, 6, 7, 2, 0, 0, 0 };
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 2, 0, 3, 4, 0, 0,
+ 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 3, 5, 6, 7, 2, 0, 0, 0
+};
static toDesignSchema_t RightCrossoverSchema = {
- RightCrossoverPaths,
- "060" "610" "280" "830" "892" "970" "761" };
+ RightCrossoverPaths,
+ "060" "610" "280" "830" "892" "970" "761"
+};
static toDesignDesc_t RightCrossoverDesc = {
- NTO_R_CROSSOVER,
- N_("Right Crossover"),
- 1,
- COUNT( RightCrossoverLines ), RightCrossoverLines,
- COUNT( RightCrossoverFloats ), RightCrossoverFloats,
- &RightCrossoverSchema, 0 };
+ NTO_R_CROSSOVER,
+ N_("Right Crossover"),
+ 1,
+ COUNT( RightCrossoverLines ), RightCrossoverLines,
+ COUNT( RightCrossoverFloats ), RightCrossoverFloats,
+ &RightCrossoverSchema, 0
+};
+#endif
+#ifndef MKTURNOUT
static wLines_t LeftCrossoverLines[] = {
#include "tolcross.lin"
- };
+};
static toDesignFloat_t LeftCrossoverFloats[] = {
-{ { 200, 10 }, I_TOLENGTH+0, N_("Length"), N_("Length"), Dim_e },
-{ { 90, 85 }, I_TOOFFSET+0, N_("Separation"), N_("Separation"), Dim_e } };
+ { { 200, 10 }, I_TOLENGTH+0, N_("Length"), N_("Length"), Dim_e },
+ { { 90, 85 }, I_TOOFFSET+0, N_("Separation"), N_("Separation"), Dim_e }
+};
static signed char LeftCrossoverPaths[] = {
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 2, 0, 3, 4, 0, 0,
- 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 5, 6, 7, 4, 0, 0, 0 };
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 2, 0, 3, 4, 0, 0,
+ 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 5, 6, 7, 4, 0, 0, 0
+};
static toDesignSchema_t LeftCrossoverSchema = {
- LeftCrossoverPaths,
- "040" "410" "2A0" "A30" "451" "5B0" "BA2" };
+ LeftCrossoverPaths,
+ "040" "410" "2A0" "A30" "451" "5B0" "BA2"
+};
static toDesignDesc_t LeftCrossoverDesc = {
- NTO_L_CROSSOVER,
- N_("Left Crossover"),
- 1,
- COUNT( LeftCrossoverLines ), LeftCrossoverLines,
- COUNT( LeftCrossoverFloats ), LeftCrossoverFloats,
- &LeftCrossoverSchema, 0 };
+ NTO_L_CROSSOVER,
+ N_("Left Crossover"),
+ 1,
+ COUNT( LeftCrossoverLines ), LeftCrossoverLines,
+ COUNT( LeftCrossoverFloats ), LeftCrossoverFloats,
+ &LeftCrossoverSchema, 0
+};
+#endif
static wLines_t DoubleCrossoverLines[] = {
#include "todcross.lin"
- };
+};
static toDesignFloat_t DoubleCrossoverFloats[] = {
-{ { 200, 10 }, I_TOLENGTH+0, N_("Length"), N_("Length"), Dim_e },
-{ { 90, 85 }, I_TOOFFSET+0, N_("Separation"), N_("Separation"), Dim_e } };
+ { { 200, 10 }, I_TOLENGTH+0, N_("Length"), N_("Length"), Dim_e },
+ { { 90, 85 }, I_TOOFFSET+0, N_("Separation"), N_("Separation"), Dim_e }
+};
static signed char DoubleCrossoverPaths[] = {
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 2, 3, 0, 4, 5, 6, 0, 0,
- 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 7, 8, 9, 6, 0, 4, 10, 11, 12, 3, 0, 0, 0 };
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 2, 3, 0, 4, 5, 6, 0, 0,
+ 'R', 'e', 'v', 'e', 'r', 's', 'e', 0, 1, 7, 8, 9, 6, 0, 4, 10, 11, 12, 3, 0, 0, 0
+};
static toDesignSchema_t DoubleCrossoverSchema = {
- DoubleCrossoverPaths,
- "040" "460" "610" "280" "8A0" "A30" "451" "5B0" "BA2" "892" "970" "761" };
+ DoubleCrossoverPaths,
+ "040" "460" "610" "280" "8A0" "A30" "451" "5B0" "BA2" "892" "970" "761"
+};
static toDesignDesc_t DoubleCrossoverDesc = {
- NTO_D_CROSSOVER,
- N_("Double Crossover"),
- 1,
- COUNT( DoubleCrossoverLines ), DoubleCrossoverLines,
- COUNT( DoubleCrossoverFloats ), DoubleCrossoverFloats,
- &DoubleCrossoverSchema, 0 };
+ NTO_D_CROSSOVER,
+ N_("Double Crossover"),
+ 1,
+ COUNT( DoubleCrossoverLines ), DoubleCrossoverLines,
+ COUNT( DoubleCrossoverFloats ), DoubleCrossoverFloats,
+ &DoubleCrossoverSchema, 0
+};
static wLines_t StrSectionLines[] = {
#include "tostrsct.lin"
- };
+};
static toDesignFloat_t StrSectionFloats[] = {
-{ { 200, 10 }, I_TOLENGTH+0, N_("Length"), N_("Length"), Dim_e } };
+ { { 200, 10 }, I_TOLENGTH+0, N_("Length"), N_("Length"), Dim_e }
+};
static signed char StrSectionPaths[] = {
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 0, 0, 0 };
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 0, 0, 0
+};
static toDesignSchema_t StrSectionSchema = {
- StrSectionPaths,
- "010" };
+ StrSectionPaths,
+ "010"
+};
static toDesignDesc_t StrSectionDesc = {
- NTO_STR_SECTION,
- N_("Straight Section"),
- 1,
- COUNT( StrSectionLines ), StrSectionLines,
- COUNT( StrSectionFloats ), StrSectionFloats,
- &StrSectionSchema, 0 };
+ NTO_STR_SECTION,
+ N_("Straight Section"),
+ 1,
+ COUNT( StrSectionLines ), StrSectionLines,
+ COUNT( StrSectionFloats ), StrSectionFloats,
+ &StrSectionSchema, 0
+};
static wLines_t CrvSectionLines[] = {
#include "tocrvsct.lin"
- };
+};
static toDesignFloat_t CrvSectionFloats[] = {
-{ { 225, 90 }, I_TOLENGTH+0, N_("Radius"), N_("Radius"), Dim_e },
-{ { 225, 140}, I_TOANGLE+0, N_("Angle (Degrees)"), N_("Angle"), Angle_e } };
+ { { 225, 90 }, I_TOLENGTH+0, N_("Radius"), N_("Radius"), Dim_e },
+ { { 225, 140}, I_TOANGLE+0, N_("Angle (Degrees)"), N_("Angle"), Angle_e }
+};
static signed char CrvSectionPaths[] = {
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 0, 0, 0 };
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 0, 0, 0
+};
static toDesignSchema_t CrvSectionSchema = {
- CrvSectionPaths,
- "011" };
+ CrvSectionPaths,
+ "011"
+};
static toDesignDesc_t CrvSectionDesc = {
- NTO_CRV_SECTION,
- N_("Curved Section"),
- 1,
- COUNT( CrvSectionLines ), CrvSectionLines,
- COUNT( CrvSectionFloats ), CrvSectionFloats,
- &CrvSectionSchema, 0 };
+ NTO_CRV_SECTION,
+ N_("Curved Section"),
+ 1,
+ COUNT( CrvSectionLines ), CrvSectionLines,
+ COUNT( CrvSectionFloats ), CrvSectionFloats,
+ &CrvSectionSchema, 0
+};
#ifdef LATER
static wLines_t BumperLines[] = {
#include "tostrsct.lin"
- };
+};
static toDesignFloat_t BumperFloats[] = {
-{ { 200, 10 }, I_TOLENGTH+0, N_("Length"), N_("Length"), Dim_e } };
+ { { 200, 10 }, I_TOLENGTH+0, N_("Length"), N_("Length"), Dim_e }
+};
static signed char BumperPaths[] = {
- 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 0, 0, 0 };
+ 'N', 'o', 'r', 'm', 'a', 'l', 0, 1, 0, 0, 0
+};
static toDesignSchema_t BumperSchema = {
- BumperPaths,
- "010" };
+ BumperPaths,
+ "010"
+};
static toDesignDesc_t BumperDesc = {
- NTO_BUMPER,
- N_("Bumper Section"),
- 1,
- COUNT( BumberLines ), BumperLines,
- COUNT( BumperFloats ), BumperFloats,
- &BumperSchema, 0 };
+ NTO_BUMPER,
+ N_("Bumper Section"),
+ 1,
+ COUNT( BumberLines ), BumperLines,
+ COUNT( BumperFloats ), BumperFloats,
+ &BumperSchema, 0
+};
static wLines_t TurntableLines[] = {
#include "tostrsct.lin"
- };
+};
static toDesignFloat_t TurntableFloats[] = {
-{ { 200, 10 }, I_TOOFFSET+0, N_("Offset"), N_("Count"), 0 },
-{ { 200, 10 }, I_TOLENGTH+0, N_("Length"), N_("Radius1"), Dim_e },
-{ { 200, 10 }, I_TOLENGTH+1, N_("Length"), N_("Radius2"), Dim_e } };
+ { { 200, 10 }, I_TOOFFSET+0, N_("Offset"), N_("Count"), 0 },
+ { { 200, 10 }, I_TOLENGTH+0, N_("Length"), N_("Radius1"), Dim_e },
+ { { 200, 10 }, I_TOLENGTH+1, N_("Length"), N_("Radius2"), Dim_e }
+};
static signed char TurntablePaths[] = {
- '1', 0, 1, 0, 0,
- '2', 0, 2, 0, 0,
- '3', 0, 3, 0, 0,
- '4', 0, 4, 0, 0,
- '5', 0, 5, 0, 0,
- '6', 0, 6, 0, 0,
- '7', 0, 7, 0, 0,
- '8', 0, 8, 0, 0,
- '9', 0, 9, 0, 0,
- '1', '0', 0, 10, 0, 0,
- '1', '1', 0, 11, 0, 0,
- '1', '2', 0, 12, 0, 0,
- '1', '3', 0, 13, 0, 0,
- '1', '4', 0, 14, 0, 0,
- '1', '5', 0, 15, 0, 0,
- '1', '6', 0, 16, 0, 0,
- '1', '7', 0, 17, 0, 0,
- '1', '8', 0, 18, 0, 0,
- '1', '9', 0, 19, 0, 0,
- '2', '0', 0, 20, 0, 0,
- '2', '1', 0, 21, 0, 0,
- '2', '2', 0, 22, 0, 0,
- '2', '3', 0, 23, 0, 0,
- '2', '4', 0, 24, 0, 0,
- '2', '5', 0, 25, 0, 0,
- '2', '6', 0, 26, 0, 0,
- '2', '7', 0, 27, 0, 0,
- '2', '8', 0, 28, 0, 0,
- '2', '9', 0, 29, 0, 0,
- '3', '0', 0, 30, 0, 0,
- '3', '1', 0, 31, 0, 0,
- '3', '2', 0, 32, 0, 0,
- '3', '3', 0, 33, 0, 0,
- '3', '4', 0, 34, 0, 0,
- '3', '5', 0, 35, 0, 0,
- '3', '6', 0, 36, 0, 0,
- '3', '7', 0, 37, 0, 0,
- '3', '8', 0, 38, 0, 0,
- '3', '9', 0, 39, 0, 0,
- '4', '0', 0, 40, 0, 0,
- '4', '1', 0, 41, 0, 0,
- '4', '2', 0, 42, 0, 0,
- '4', '3', 0, 43, 0, 0,
- '4', '4', 0, 44, 0, 0,
- '4', '5', 0, 45, 0, 0,
- '4', '6', 0, 46, 0, 0,
- '4', '7', 0, 47, 0, 0,
- '4', '8', 0, 48, 0, 0,
- '4', '9', 0, 49, 0, 0,
- '5', '0', 0, 50, 0, 0,
- '5', '1', 0, 51, 0, 0,
- '5', '2', 0, 52, 0, 0,
- '5', '3', 0, 53, 0, 0,
- '5', '4', 0, 54, 0, 0,
- '5', '5', 0, 55, 0, 0,
- '5', '6', 0, 56, 0, 0,
- '5', '7', 0, 57, 0, 0,
- '5', '8', 0, 58, 0, 0,
- '5', '9', 0, 59, 0, 0,
- '6', '0', 0, 60, 0, 0,
- '6', '1', 0, 61, 0, 0,
- '6', '2', 0, 62, 0, 0,
- '6', '3', 0, 63, 0, 0,
- '6', '4', 0, 64, 0, 0,
- '6', '5', 0, 65, 0, 0,
- '6', '6', 0, 66, 0, 0,
- '6', '7', 0, 67, 0, 0,
- '6', '8', 0, 68, 0, 0,
- '6', '9', 0, 69, 0, 0,
- '7', '0', 0, 70, 0, 0,
- '7', '1', 0, 71, 0, 0,
- '7', '2', 0, 72, 0, 0,
- 0 };
+ '1', 0, 1, 0, 0,
+ '2', 0, 2, 0, 0,
+ '3', 0, 3, 0, 0,
+ '4', 0, 4, 0, 0,
+ '5', 0, 5, 0, 0,
+ '6', 0, 6, 0, 0,
+ '7', 0, 7, 0, 0,
+ '8', 0, 8, 0, 0,
+ '9', 0, 9, 0, 0,
+ '1', '0', 0, 10, 0, 0,
+ '1', '1', 0, 11, 0, 0,
+ '1', '2', 0, 12, 0, 0,
+ '1', '3', 0, 13, 0, 0,
+ '1', '4', 0, 14, 0, 0,
+ '1', '5', 0, 15, 0, 0,
+ '1', '6', 0, 16, 0, 0,
+ '1', '7', 0, 17, 0, 0,
+ '1', '8', 0, 18, 0, 0,
+ '1', '9', 0, 19, 0, 0,
+ '2', '0', 0, 20, 0, 0,
+ '2', '1', 0, 21, 0, 0,
+ '2', '2', 0, 22, 0, 0,
+ '2', '3', 0, 23, 0, 0,
+ '2', '4', 0, 24, 0, 0,
+ '2', '5', 0, 25, 0, 0,
+ '2', '6', 0, 26, 0, 0,
+ '2', '7', 0, 27, 0, 0,
+ '2', '8', 0, 28, 0, 0,
+ '2', '9', 0, 29, 0, 0,
+ '3', '0', 0, 30, 0, 0,
+ '3', '1', 0, 31, 0, 0,
+ '3', '2', 0, 32, 0, 0,
+ '3', '3', 0, 33, 0, 0,
+ '3', '4', 0, 34, 0, 0,
+ '3', '5', 0, 35, 0, 0,
+ '3', '6', 0, 36, 0, 0,
+ '3', '7', 0, 37, 0, 0,
+ '3', '8', 0, 38, 0, 0,
+ '3', '9', 0, 39, 0, 0,
+ '4', '0', 0, 40, 0, 0,
+ '4', '1', 0, 41, 0, 0,
+ '4', '2', 0, 42, 0, 0,
+ '4', '3', 0, 43, 0, 0,
+ '4', '4', 0, 44, 0, 0,
+ '4', '5', 0, 45, 0, 0,
+ '4', '6', 0, 46, 0, 0,
+ '4', '7', 0, 47, 0, 0,
+ '4', '8', 0, 48, 0, 0,
+ '4', '9', 0, 49, 0, 0,
+ '5', '0', 0, 50, 0, 0,
+ '5', '1', 0, 51, 0, 0,
+ '5', '2', 0, 52, 0, 0,
+ '5', '3', 0, 53, 0, 0,
+ '5', '4', 0, 54, 0, 0,
+ '5', '5', 0, 55, 0, 0,
+ '5', '6', 0, 56, 0, 0,
+ '5', '7', 0, 57, 0, 0,
+ '5', '8', 0, 58, 0, 0,
+ '5', '9', 0, 59, 0, 0,
+ '6', '0', 0, 60, 0, 0,
+ '6', '1', 0, 61, 0, 0,
+ '6', '2', 0, 62, 0, 0,
+ '6', '3', 0, 63, 0, 0,
+ '6', '4', 0, 64, 0, 0,
+ '6', '5', 0, 65, 0, 0,
+ '6', '6', 0, 66, 0, 0,
+ '6', '7', 0, 67, 0, 0,
+ '6', '8', 0, 68, 0, 0,
+ '6', '9', 0, 69, 0, 0,
+ '7', '0', 0, 70, 0, 0,
+ '7', '1', 0, 71, 0, 0,
+ '7', '2', 0, 72, 0, 0,
+ 0
+};
static toDesignSchema_t TurntableSchema = {
- TurntablePaths,
- "010" "020" "030" "040" "050" "060" "070" "080" "090" "0A0" "0B0" };
+ TurntablePaths,
+ "010" "020" "030" "040" "050" "060" "070" "080" "090" "0A0" "0B0"
+};
static toDesignDesc_t TurntableDesc = {
- NTO_TURNTABLE,
- N_("Turntable Section"),
- 1,
- COUNT( TurntableLines ), TurntableLines,
- COUNT( TurntableFloats ), TurntableFLoats,
- &TurntableSchema, 0 };
+ NTO_TURNTABLE,
+ N_("Turntable Section"),
+ 1,
+ COUNT( TurntableLines ), TurntableLines,
+ COUNT( TurntableFloats ), TurntableFLoats,
+ &TurntableSchema, 0
+};
#endif
#ifndef MKTURNOUT
static toDesignDesc_t * designDescs[] = {
- &RegDesc,
- &CrvDesc,
- &CornuDesc,
- &WyeDesc,
- &CornuWyeDesc,
- &ThreewayDesc,
- &CornuThreewayDesc,
- &CrossingDesc,
- &SingleSlipDesc,
- &DoubleSlipDesc,
- &RightCrossoverDesc,
- &LeftCrossoverDesc,
- &DoubleCrossoverDesc,
- &StrSectionDesc,
- &CrvSectionDesc };
+ &RegDesc,
+ &CrvDesc,
+ &CornuDesc,
+ &WyeDesc,
+ &CornuWyeDesc,
+ &ThreewayDesc,
+ &CornuThreewayDesc,
+ &CrossingDesc,
+ &SingleSlipDesc,
+ &DoubleSlipDesc,
+ &RightCrossoverDesc,
+ &LeftCrossoverDesc,
+ &DoubleCrossoverDesc,
+ &StrSectionDesc,
+ &CrvSectionDesc
+};
#endif
/**************************************************************************
@@ -766,50 +861,51 @@ static toDesignDesc_t * designDescs[] = {
int debugComputeRoadbed = 0;
#ifdef LATER
typedef struct {
- int start;
- unsigned long bits;
- unsigned long mask;
- int width;
- } searchTable_t;
+ int start;
+ unsigned long bits;
+ unsigned long mask;
+ int width;
+} searchTable_t;
static searchTable_t searchTable[] = {
- { 0, 0xFFFF0000, 0xFFFF0000, 32000} ,
- { 32, 0x0000FFFF, 0x0000FFFF, 32000} ,
-
- { 16, 0x00FFFF00, 0x00FFFF00, 16} ,
-
- { 8, 0x0FF00000, 0x0FF00000, 8} ,
- { 24, 0x00000FF0, 0x00000FF0, 8} ,
-
- { 4, 0x3C000000, 0x3C000000, 4} ,
- { 12, 0x003C0000, 0x003C0000, 4} ,
- { 20, 0x00003C00, 0x00003C00, 4} ,
- { 28, 0x0000003C, 0x0000003C, 4} ,
-
- { 2, 0x60000000, 0x60000000, 2} ,
- { 6, 0x06000000, 0x06000000, 2},
- { 10, 0x00600000, 0x00600000, 2},
- { 14, 0x00060000, 0x00060000, 2},
- { 18, 0x00006000, 0x00006000, 2},
- { 22, 0x00000600, 0x00000600, 2},
- { 26, 0x00000060, 0x00000060, 2},
- { 30, 0x00000006, 0x00000006, 2},
-
- { 1, 0x40000000, 0x60000000, 1},
- { 3, 0x10000000, 0x30000000, 1},
- { 5, 0x04000000, 0x06000000, 1},
- { 7, 0x01000000, 0x03000000, 1},
- { 9, 0x00400000, 0x00600000, 1},
- { 11, 0x00100000, 0x00300000, 1},
- { 13, 0x00040000, 0x00060000, 1},
- { 15, 0x00010000, 0x00030000, 1},
- { 17, 0x00004000, 0x00006000, 1},
- { 19, 0x00001000, 0x00003000, 1},
- { 21, 0x00000400, 0x00000600, 1},
- { 23, 0x00000100, 0x00000300, 1},
- { 25, 0x00000040, 0x00000060, 1},
- { 27, 0x00000010, 0x00000030, 1},
- { 29, 0x00000004, 0x00000006, 1},
- { 31, 0x00000001, 0x00000003, 1}};
+ { 0, 0xFFFF0000, 0xFFFF0000, 32000},
+ { 32, 0x0000FFFF, 0x0000FFFF, 32000},
+
+ { 16, 0x00FFFF00, 0x00FFFF00, 16},
+
+ { 8, 0x0FF00000, 0x0FF00000, 8},
+ { 24, 0x00000FF0, 0x00000FF0, 8},
+
+ { 4, 0x3C000000, 0x3C000000, 4},
+ { 12, 0x003C0000, 0x003C0000, 4},
+ { 20, 0x00003C00, 0x00003C00, 4},
+ { 28, 0x0000003C, 0x0000003C, 4},
+
+ { 2, 0x60000000, 0x60000000, 2},
+ { 6, 0x06000000, 0x06000000, 2},
+ { 10, 0x00600000, 0x00600000, 2},
+ { 14, 0x00060000, 0x00060000, 2},
+ { 18, 0x00006000, 0x00006000, 2},
+ { 22, 0x00000600, 0x00000600, 2},
+ { 26, 0x00000060, 0x00000060, 2},
+ { 30, 0x00000006, 0x00000006, 2},
+
+ { 1, 0x40000000, 0x60000000, 1},
+ { 3, 0x10000000, 0x30000000, 1},
+ { 5, 0x04000000, 0x06000000, 1},
+ { 7, 0x01000000, 0x03000000, 1},
+ { 9, 0x00400000, 0x00600000, 1},
+ { 11, 0x00100000, 0x00300000, 1},
+ { 13, 0x00040000, 0x00060000, 1},
+ { 15, 0x00010000, 0x00030000, 1},
+ { 17, 0x00004000, 0x00006000, 1},
+ { 19, 0x00001000, 0x00003000, 1},
+ { 21, 0x00000400, 0x00000600, 1},
+ { 23, 0x00000100, 0x00000300, 1},
+ { 25, 0x00000040, 0x00000060, 1},
+ { 27, 0x00000010, 0x00000030, 1},
+ { 29, 0x00000004, 0x00000006, 1},
+ { 31, 0x00000001, 0x00000003, 1}
+};
#endif
@@ -851,20 +947,21 @@ double CircleSegDistance( coOrd p, coOrd c, double r, double a0, double a1 )
d0 = FindDistance( p, p1 );
PointOnCircle( &p1, c, r, a0+a1 );
d1 = FindDistance( p, p1 );
- if (d0 < d1)
+ if (d0 < d1) {
return d0;
- else
+ } else {
return d1;
+ }
}
BOOL_T HittestTurnoutRoadbed(
- trkSeg_p segPtr,
- int segCnt,
- int segInx,
- ANGLE_T side,
- int fraction,
- DIST_T roadbedWidth )
+ trkSeg_p segPtr,
+ int segCnt,
+ int segInx,
+ ANGLE_T side,
+ int fraction,
+ DIST_T roadbedWidth )
{
ANGLE_T a;
DIST_T d;
@@ -888,10 +985,11 @@ BOOL_T HittestTurnoutRoadbed(
fraction = 31-fraction;
}
a = sp->u.c.a0 + sp->u.c.a1*(fraction*2+1)/64.0;
- if (side>0)
+ if (side>0) {
d += roadbedWidth/2.0;
- else
+ } else {
d -= roadbedWidth/2.0;
+ }
PointOnCircle( &p0, sp->u.c.center, d, a );
}
dd = DIST_INF;
@@ -904,33 +1002,36 @@ BOOL_T HittestTurnoutRoadbed(
d = LineSegDistance( p1, sp->u.l.pos[0], sp->u.l.pos[1] );
break;
case SEG_CRVTRK:
- d = CircleSegDistance( p1, sp->u.c.center, fabs(sp->u.c.radius), sp->u.c.a0, sp->u.c.a1 );
+ d = CircleSegDistance( p1, sp->u.c.center, fabs(sp->u.c.radius), sp->u.c.a0,
+ sp->u.c.a1 );
break;
default:
continue;
}
#ifdef LATER
- if (inx==segInx)
+ if (inx==segInx) {
d *= .999;
+ }
#endif
if ( d < dd ) {
dd = d;
closest = inx;
}
}
- if (closest == segInx)
+ if (closest == segInx) {
return FALSE;
- else
+ } else {
return TRUE;
+ }
}
#ifdef LATER
EXPORT long ComputeTurnoutRoadbedSide(
- trkSeg_p segPtr,
- int segCnt,
- int segInx,
- ANGLE_T side,
- DIST_T roadbedWidth )
+ trkSeg_p segPtr,
+ int segCnt,
+ int segInx,
+ ANGLE_T side,
+ DIST_T roadbedWidth )
{
DIST_T length;
int rbw;
@@ -940,42 +1041,45 @@ EXPORT long ComputeTurnoutRoadbedSide(
trkSeg_p sp;
sp = &segPtr[segInx];
- if (sp->type == SEG_STRTRK)
+ if (sp->type == SEG_STRTRK) {
length = FindDistance( sp->u.l.pos[0], sp->u.l.pos[1] );
- else
- length = (fabs(sp->u.c.radius) + (side>0?roadbedWidth/2.0:-roadbedWidth/2.0) ) * 2 * M_PI * sp->u.c.a1 / 360.0;
+ } else {
+ length = (fabs(sp->u.c.radius) + (side>0?roadbedWidth/2.0:-roadbedWidth/2.0) ) *
+ 2 * M_PI * sp->u.c.a1 / 360.0;
+ }
rbw = (int)(roadbedWidth/length*32/2);
-/*printf( "L=%0.3f G=%0.3f [%0.3f %0.3f] RBW=%d\n", length, gapWidth, first, last, rbw );*/
+ /*printf( "L=%0.3f G=%0.3f [%0.3f %0.3f] RBW=%d\n", length, gapWidth, first, last, rbw );*/
res = 0xFF0000FF;
for ( p=searchTable; p<&searchTable[COUNT( searchTable )]; p++) {
- if ( (p->width < rbw && res==0xFFFFFFFF) || res==0 )
+ if ( (p->width < rbw && res==0xFFFFFFFF) || res==0 ) {
break;
+ }
res1 = (p->mask & res);
where = p->start*length/32.0;
if (p->width >= rbw || (res1!=p->mask && res1!=0)) {
if (HittestTurnoutRoadbed(segPtr, segCnt, segInx, side, p->start)) {
- res &= ~p->bits;
-if (debugComputeRoadbed>=1) printf( "res=%08lx *p={%02d %08lx %08lx %02d} res1=%08lx W=%0.3f HIT\n", res, p->start, p->bits, p->mask, p->width, res1, where );
+ res &= ~p->bits;
+ if (debugComputeRoadbed>=1) { printf( "res=%08lx *p={%02d %08lx %08lx %02d} res1=%08lx W=%0.3f HIT\n", res, p->start, p->bits, p->mask, p->width, res1, where ); }
} else {
- res |= p->bits;
-if (debugComputeRoadbed>=1) printf( "res=%08lx *p={%02d %08lx %08lx %02d} res1=%08lx W=%0.3f MISS\n", res, p->start, p->bits, p->mask, p->width, res1, where );
+ res |= p->bits;
+ if (debugComputeRoadbed>=1) { printf( "res=%08lx *p={%02d %08lx %08lx %02d} res1=%08lx W=%0.3f MISS\n", res, p->start, p->bits, p->mask, p->width, res1, where ); }
}
} else {
-if (debugComputeRoadbed>=2) printf( "res=%08lx *p={%02d %08lx %08lx %02d} res1=%08lx W=%0.3f SKIP\n", res, p->start, p->bits, p->mask, p->width, res1, where );
+ if (debugComputeRoadbed>=2) { printf( "res=%08lx *p={%02d %08lx %08lx %02d} res1=%08lx W=%0.3f SKIP\n", res, p->start, p->bits, p->mask, p->width, res1, where ); }
}
}
-if (debugComputeRoadbed>=1) printf( "res=%08lx\n", res );
+ if (debugComputeRoadbed>=1) { printf( "res=%08lx\n", res ); }
return res;
}
#endif
EXPORT long ComputeTurnoutRoadbedSide(
- trkSeg_p segPtr,
- int segCnt,
- int segInx,
- ANGLE_T side,
- DIST_T roadbedWidth )
+ trkSeg_p segPtr,
+ int segCnt,
+ int segInx,
+ ANGLE_T side,
+ DIST_T roadbedWidth )
{
trkSeg_p sp;
DIST_T length;
@@ -985,37 +1089,43 @@ EXPORT long ComputeTurnoutRoadbedSide(
int i, j, k, hitx;
sp = &segPtr[segInx];
- if (sp->type == SEG_STRTRK)
+ if (sp->type == SEG_STRTRK) {
length = FindDistance( sp->u.l.pos[0], sp->u.l.pos[1] );
- else
- length = (fabs(sp->u.c.radius) + (side>0?roadbedWidth/2.0:-roadbedWidth/2.0) ) * 2 * M_PI * sp->u.c.a1 / 360.0;
+ } else {
+ length = (fabs(sp->u.c.radius) + (side>0?roadbedWidth/2.0:-roadbedWidth/2.0) ) *
+ 2 * M_PI * sp->u.c.a1 / 360.0;
+ }
bitWidth = (int)floor(roadbedWidth*32/length);
- if ( bitWidth > 31 )
+ if ( bitWidth > 31 ) {
bitWidth = 31;
- else if ( bitWidth <= 0 )
+ } else if ( bitWidth <= 0 ) {
bitWidth = 2;
+ }
res = 0;
mask = (1<<bitWidth)-1;
hit0 = HittestTurnoutRoadbed( segPtr, segCnt, segInx, side, 0, roadbedWidth );
inx0 = 0;
inx1 = bitWidth;
-if ( debugComputeRoadbed>=3 ) printf( "bW=%d HT[0]=%d\n", bitWidth, hit0 );
+ if ( debugComputeRoadbed>=3 ) { printf( "bW=%d HT[0]=%d\n", bitWidth, hit0 ); }
while ( 1 ) {
- if ( inx1 > 31 )
+ if ( inx1 > 31 ) {
inx1 = 31;
- hit1 = HittestTurnoutRoadbed( segPtr, segCnt, segInx, side, inx1, roadbedWidth );
-if ( debugComputeRoadbed>=3 ) printf( " HT[%d]=%d\n", inx1, hit1 );
+ }
+ hit1 = HittestTurnoutRoadbed( segPtr, segCnt, segInx, side, inx1,
+ roadbedWidth );
+ if ( debugComputeRoadbed>=3 ) { printf( " HT[%d]=%d\n", inx1, hit1 ); }
if ( hit0 != hit1 ) {
i=inx0;
j=inx1;
while ( j-i >= 2 ) {
k = (i+j)/2;
hitx = HittestTurnoutRoadbed( segPtr, segCnt, segInx, side, k, roadbedWidth );
-if ( debugComputeRoadbed>=3 ) printf( " .HT[%d]=%d\n", k, hitx );
- if ( hitx == hit0 )
+ if ( debugComputeRoadbed>=3 ) { printf( " .HT[%d]=%d\n", k, hitx ); }
+ if ( hitx == hit0 ) {
i = k;
- else
+ } else {
j = k;
+ }
}
if ( !hit0 ) {
res |= ((1<<(i-inx0+1))-1)<<inx0;
@@ -1025,10 +1135,11 @@ if ( debugComputeRoadbed>=3 ) printf( " .HT[%d]=%d\n", k, hitx );
} else if ( !hit1 ) {
res |= mask;
}
-if ( debugComputeRoadbed>=3 ) printf( " res=%lx\n", res );
+ if ( debugComputeRoadbed>=3 ) { printf( " res=%lx\n", res ); }
if ( inx1 >= 31 ) {
- if ( !hit1 )
+ if ( !hit1 ) {
res |= 0x80000000;
+ }
break;
}
mask <<= bitWidth;
@@ -1036,7 +1147,7 @@ if ( debugComputeRoadbed>=3 ) printf( " res=%lx\n", res );
inx1 += bitWidth;
hit0 = hit1;
}
-if ( debugComputeRoadbed>=2 ) printf( "S%d %c res=%lx\n", segInx, side>0?'+':'-', res );
+ if ( debugComputeRoadbed>=2 ) { printf( "S%d %c res=%lx\n", segInx, side>0?'+':'-', res ); }
return (0xFFFFFFFF)&res;
}
@@ -1050,23 +1161,19 @@ static BOOL_T IsNear( coOrd p0, coOrd p1 )
static void AddRoadbedPieces(
- int inx,
- ANGLE_T side,
- int first,
- int last )
+ int inx,
+ ANGLE_T side,
+ int first,
+ int last )
{
DIST_T d0, d1;
ANGLE_T a0, a1;
coOrd p0, p1;
trkSeg_p sp, sq;
-#ifdef MKTURNOUT
-#define _DPI (76.0)
-#else
-#define _DPI mainD.dpi
-#endif
- if (last<=first)
+ if (last<=first) {
return;
+ }
sp = &tempSegs(inx);
if ( sp->type == SEG_STRTRK ) {
d0 = FindDistance( sp->u.l.pos[0], sp->u.l.pos[1] );
@@ -1084,20 +1191,20 @@ static void AddRoadbedPieces(
a1 = NormalizeAngle( a1-a0+0.5 );
if ( first==0 ) {
if ( a1 < 1.0 && IsNear( p0, sq->u.l.pos[1] ) ) {
- sq->u.l.pos[1] = p1;
- return;
+ sq->u.l.pos[1] = p1;
+ return;
} else if ( a1 > 180.0 && a1 < 181.0 && IsNear( p0, sq->u.l.pos[0] ) ) {
- sq->u.l.pos[0] = p1;
- return;
+ sq->u.l.pos[0] = p1;
+ return;
}
}
if ( last==32 ) {
if ( a1 < 1.0 && IsNear( p1, sq->u.l.pos[0] ) ) {
- sq->u.l.pos[0] = p0;
- return;
+ sq->u.l.pos[0] = p0;
+ return;
} else if ( a1 > 180.0 && a1 < 181.0 && IsNear( p1, sq->u.l.pos[1] ) ) {
- sq->u.l.pos[1] = p0;
- return;
+ sq->u.l.pos[1] = p0;
+ return;
}
}
}
@@ -1107,8 +1214,8 @@ static void AddRoadbedPieces(
DYNARR_APPEND( trkSeg_t, tempSegs_da, 10 );
sp = &tempSegs(inx);
sq = &tempSegs(tempSegs_da.cnt-1);
- sq->width = newTurnRoadbedLineWidth/(_DPI);
- sq->color = roadbedColor;
+ sq->lineWidth = newTurnRoadbedLineWidth;
+ sq->color = newTurnRoadbedColor;
if (sp->type == SEG_STRTRK) {
sq->type = SEG_STRLIN;
sq->u.l.pos[0] = p0;
@@ -1122,10 +1229,11 @@ static void AddRoadbedPieces(
a0 = NormalizeAngle( sp->u.c.a0 + sp->u.c.a1*(32-last)/32.0 );
}
a1 = sp->u.c.a1*(last-first)/32.0;
- if (side>0)
+ if (side>0) {
d0 += newTurnRoadbedWidth/2.0;
- else
+ } else {
d0 -= newTurnRoadbedWidth/2.0;
+ }
sq->type = SEG_CRVLIN;
sq->u.c.center = sp->u.c.center;
sq->u.c.radius = d0;
@@ -1136,14 +1244,15 @@ static void AddRoadbedPieces(
static void AddRoadbedToOneSide(
- int trkCnt,
- int inx,
- ANGLE_T side )
+ int trkCnt,
+ int inx,
+ ANGLE_T side )
{
unsigned long res, res1;
int b0, b1;
- res = ComputeTurnoutRoadbedSide( &tempSegs(0), trkCnt, inx, side, newTurnRoadbedWidth );
+ res = ComputeTurnoutRoadbedSide( &tempSegs(0), trkCnt, inx, side,
+ newTurnRoadbedWidth );
if ( res == 0L ) {
return;
} else if ( res == 0xFFFFFFFF ) {
@@ -1161,13 +1270,15 @@ static void AddRoadbed( void )
{
int trkCnt, inx;
trkSeg_p sp;
- if ( newTurnRoadbedWidth < newTurnTrackGauge )
+ if ( newTurnRoadbedWidth < newTurnTrackGauge ) {
return;
+ }
trkCnt = tempSegs_da.cnt;
for ( inx=0; inx<trkCnt; inx++ ) {
sp = &tempSegs(inx);
- if ( sp->type!=SEG_STRTRK && sp->type!=SEG_CRVTRK )
+ if ( sp->type!=SEG_STRTRK && sp->type!=SEG_CRVTRK ) {
continue;
+ }
AddRoadbedToOneSide( trkCnt, inx, +90 );
AddRoadbedToOneSide( trkCnt, inx, -90 );
}
@@ -1181,8 +1292,8 @@ static void AddRoadbed( void )
*/
static BOOL_T ComputeCurve(
- coOrd *p0, coOrd *p1, DIST_T *radius,
- DIST_T len, DIST_T off, ANGLE_T angle )
+ coOrd *p0, coOrd *p1, DIST_T *radius,
+ DIST_T len, DIST_T off, ANGLE_T angle )
{
coOrd Pf;
coOrd Px, Pc;
@@ -1198,8 +1309,9 @@ static BOOL_T ComputeCurve(
NoticeMessage( MSG_TODSGN_NO_CONVERGE, _("Ok"), NULL );
return FALSE;
}
- if (Px.x-newTurnTrackGauge < d)
+ if (Px.x-newTurnTrackGauge < d) {
d = Px.x-newTurnTrackGauge;
+ }
*radius = d * cos( D2R(angle/2.0) ) / sin( D2R(angle/2.0) );
p0->x = Px.x - *radius * sin( D2R(angle/2.0) ) / cos( D2R(angle/2.0) );
@@ -1211,54 +1323,57 @@ static BOOL_T ComputeCurve(
#ifndef MKTURNOUT
/* For Bezier Segs we need to duplicate the subSegs Array as well */
-void AppendSegs(dynArr_t * target, dynArr_t * source) {
+void AppendSegs(dynArr_t * target, dynArr_t * source)
+{
#define sourceSegs(N) DYNARR_N( trkSeg_t, *source, N )
#define targetSegs(N) DYNARR_N( trkSeg_t, *target, N )
trkSeg_p src;
- for (int i=0;i<source->cnt; i++) {
+ for (int i=0; i<source->cnt; i++) {
src = &sourceSegs(i);
addSegBezier(target, src);
}
}
/* Bezier Segs will have subSegs Array - free it before resetting the array */
-void ClearSegs(dynArr_t * target) {
- for (int i=0;i<(*target).cnt;i++) {
- if (targetSegs(i).type == SEG_BEZTRK)
- if (targetSegs(i).bezSegs.ptr) MyFree(targetSegs(i).bezSegs.ptr);
- targetSegs(i).bezSegs.ptr = NULL;
- targetSegs(i).bezSegs.cnt = 0;
- targetSegs(i).bezSegs.max = 0;
+void ClearSegs(dynArr_t * target)
+{
+ for (int i=0; i<(*target).cnt; i++) {
+ if (targetSegs(i).type == SEG_BEZTRK) {
+ // Free DA if a BEZTRK
+ DYNARR_FREE( trkSeg_t, targetSegs(i).bezSegs );
+ } else {
+ // Otherwise just clear it
+ DYNARR_INIT( trkSeg_t, targetSegs(i).bezSegs );
+ }
}
DYNARR_RESET( trkSeg_t, *target );
}
-BOOL_T CallCornuNoBez(coOrd pos[2], coOrd center[2], ANGLE_T angle[2], DIST_T radius[2], dynArr_t * array_p) {
+BOOL_T CallCornuNoBez(coOrd pos[2], coOrd center[2], ANGLE_T angle[2],
+ DIST_T radius[2], dynArr_t * array_p)
+{
dynArr_t temp_array;
- DYNARR_RESET(trkSeg_t,temp_array);
- temp_array.ptr=0;
- temp_array.max=0;
-
+ DYNARR_INIT(trkSeg_t,temp_array);
wBool_t rc = CallCornu0(pos,center,angle,radius, &temp_array, FALSE);
- if (!rc) return FALSE;
+ if (!rc) { return FALSE; }
- for (int i=0;i<temp_array.cnt;i++) {
+ for (int i=0; i<temp_array.cnt; i++) {
trkSeg_p from_seg = &DYNARR_N(trkSeg_t,temp_array,i);
if ((from_seg->type == SEG_BEZTRK) || (from_seg->type == SEG_BEZLIN)) {
- for (int j=0;j<from_seg->bezSegs.cnt;j++) {
+ for (int j=0; j<from_seg->bezSegs.cnt; j++) {
trkSeg_p sub_seg = &DYNARR_N(trkSeg_t,from_seg->bezSegs,j);
DYNARR_APPEND(trkSeg_t,*array_p,5);
trkSeg_p to_seg = &DYNARR_N(trkSeg_t,*array_p,(*array_p).cnt-1);
to_seg->u = sub_seg->u;
to_seg->type = sub_seg->type;
to_seg->color = wDrawColorBlack;
- to_seg->width = sub_seg->width;
+ to_seg->lineWidth = sub_seg->lineWidth;
}
} else {
DYNARR_APPEND(trkSeg_t,*array_p,5);
@@ -1266,7 +1381,7 @@ BOOL_T CallCornuNoBez(coOrd pos[2], coOrd center[2], ANGLE_T angle[2], DIST_T ra
to_seg->u = from_seg->u;
to_seg->type = from_seg->type;
to_seg->color = wDrawColorBlack;
- to_seg->width = from_seg->width;
+ to_seg->lineWidth = from_seg->lineWidth;
}
}
@@ -1279,22 +1394,20 @@ BOOL_T CallCornuNoBez(coOrd pos[2], coOrd center[2], ANGLE_T angle[2], DIST_T ra
static toDesignSchema_t * LoadSegs(
- toDesignDesc_t * dp,
- wBool_t loadPoints )
+ toDesignDesc_t * dp,
+ wBool_t loadPoints )
{
wIndex_t s;
int p, p0, p1;
DIST_T d;
-#ifndef MKTURNOUT
- wIndex_t pathLen;
-#endif
toDesignSchema_t * pp;
char *segOrder;
coOrd pos;
- wIndex_t segCnt;
+ wIndex_t segCnt = 0;
ANGLE_T angle0, angle1, angle2, angle3;
trkSeg_p segPtr;
#ifndef MKTURNOUT
+ wIndex_t pathLen;
struct {
coOrd pos[10];
coOrd center[10];
@@ -1312,19 +1425,23 @@ static toDesignSchema_t * LoadSegs(
if ( newTurnAngleMode == 0 && dp->type != NTO_CRV_SECTION ) {
/* convert from Frog Num to degrees */
- if ( angle0 > 0 )
+ if ( angle0 > 0 ) {
angle0 = R2D(asin(1.0 / angle0));
- if ( angle1 > 0 )
+ }
+ if ( angle1 > 0 ) {
angle1 = R2D(asin(1.0 / angle1));
- if ( angle2 > 0 )
+ }
+ if ( angle2 > 0 ) {
angle2 = R2D(asin(1.0 / angle2));
- if ( angle3 > 0 )
+ }
+ if ( angle3 > 0 ) {
angle3 = R2D(asin(1.0 / angle3));
+ }
}
pp = dp->paths;
if (loadPoints) {
- DYNARR_RESET( trkEndPt_t, tempEndPts_da );
+ TempEndPtsReset();
// for ( i=0; i<dp->floatCnt; i++ )
// if ( *(FLOAT_T*)(turnDesignPLs[dp->floats[i].index].valueP) == 0.0 )
// if (dp->type != NTO_CORNU &&
@@ -1337,73 +1454,78 @@ static toDesignSchema_t * LoadSegs(
switch (dp->type) {
case NTO_REGULAR:
- DYNARR_SET( trkEndPt_t, tempEndPts_da, 3 );
+ TempEndPtsSet( 3 );
if ( !ComputeCurve( &points[3], &points[4], &radii[0],
- (newTurnLen0), fabs(newTurnOff0), angle0 ) )
+ (newTurnLen0), fabs(newTurnOff0), angle0 ) ) {
return NULL;
+ }
radii[0] = - radii[0];
points[0].x = points[0].y = points[1].y = 0.0;
points[1].x = (newTurnLen1);
points[2].y = fabs(newTurnOff0);
points[2].x = (newTurnLen0);
- tempEndPts(0).pos = points[0]; tempEndPts(0).angle = 270.0;
- tempEndPts(1).pos = points[1]; tempEndPts(1).angle = 90.0;
- tempEndPts(2).pos = points[2]; tempEndPts(2).angle = 90.0-angle0;
+ SetEndPt( TempEndPt(0), points[0], 270.0 );
+ SetEndPt( TempEndPt(1), points[1], 90.0 );
+ SetEndPt( TempEndPt(2), points[2], 90.0-angle0 );
break;
case NTO_CURVED:
- DYNARR_SET( trkEndPt_t, tempEndPts_da, 3 );
+ TempEndPtsSet( 3 );
if ( !ComputeCurve( &points[3], &points[4], &radii[0],
- (newTurnLen0), fabs(newTurnOff0), angle0 ) )
+ (newTurnLen0), fabs(newTurnOff0), angle0 ) ) {
return NULL;
+ }
if ( !ComputeCurve( &points[5], &points[6], &radii[1],
- (newTurnLen1), fabs(newTurnOff1), angle1 ) )
+ (newTurnLen1), fabs(newTurnOff1), angle1 ) ) {
return NULL;
+ }
d = points[3].x - points[5].x;
- if ( d < -MIN_TRACK_LENGTH )
+ if ( d < -MIN_TRACK_LENGTH ) {
pp = &Crv3Schema;
- else if ( d > MIN_TRACK_LENGTH )
+ } else if ( d > MIN_TRACK_LENGTH ) {
pp = &Crv2Schema;
- else
+ } else {
pp = &Crv1Schema;
+ }
radii[0] = - radii[0];
radii[1] = - radii[1];
points[0].x = points[0].y = 0.0;
points[1].y = fabs(newTurnOff0); points[1].x = (newTurnLen0);
points[2].y = fabs(newTurnOff1); points[2].x = (newTurnLen1);
- tempEndPts(0).pos = points[0]; tempEndPts(0).angle = 270.0;
- tempEndPts(2).pos = points[1]; tempEndPts(2).angle = 90.0-angle0;
- tempEndPts(1).pos = points[2]; tempEndPts(1).angle = 90.0-angle1;
+ SetEndPt( TempEndPt(0), points[0], 270.0 );
+ SetEndPt( TempEndPt(2), points[1], 90.0-angle0 );
+ SetEndPt( TempEndPt(1), points[2], 90.0-angle1 );
break;
#ifndef MKTURNOUT
case NTO_CORNU:
-
+ TempEndPtsSet( 3 );
radii[0] = fabs(newTurnRad2); /*Toe*/
radii[1] = fabs(newTurnRad0); /*Inner*/
radii[2] = fabs(newTurnRad1); /*Outer*/
angles[0] = 0.0; /*Base*/
- angles[1] = newTurnAngle0; /*Inner*/
- angles[2] = newTurnAngle1; /*Outer*/
+ angles[1] = angle0; /*Inner*/
+ angles[2] = angle1; /*Outer*/
pp = &CornuSchema;
points[0].x = points[0].y = 0.0;
points[1].y = (newTurnOff0); points[1].x = (newTurnLen0); /*Inner*/
points[2].y = (newTurnOff1); points[2].x = (newTurnLen1); /*Outer*/
- tempEndPts(0).pos = points[0]; tempEndPts(0).angle = 270.0;
- tempEndPts(2).pos = points[1]; tempEndPts(2).angle = 90.0-angles[1];
- tempEndPts(1).pos = points[2]; tempEndPts(1).angle = 90.0-angles[2];
-
+ SetEndPt( TempEndPt(0), points[0], 270.0 );
+ SetEndPt( TempEndPt(2), points[1], 90.0-angles[1] );
+ SetEndPt( TempEndPt(1), points[2], 90.0-angles[2] );
break;
#endif
case NTO_WYE:
case NTO_3WAY:
- DYNARR_SET( trkEndPt_t, tempEndPts_da, (dp->type==NTO_3WAY)?4:3 );
+ TempEndPtsSet( (dp->type==NTO_3WAY)?4:3 );
if ( !ComputeCurve( &points[3], &points[4], &radii[0],
- (newTurnLen0), fabs(newTurnOff0), angle0 ) )
+ (newTurnLen0), fabs(newTurnOff0), angle0 ) ) {
return NULL;
+ }
if ( !ComputeCurve( &points[5], &points[6], &radii[1],
- (newTurnLen1), fabs(newTurnOff1), angle1 ) )
+ (newTurnLen1), fabs(newTurnOff1), angle1 ) ) {
return NULL;
+ }
points[5].y = - points[5].y;
points[6].y = - points[6].y;
radii[0] = - radii[0];
@@ -1422,17 +1544,17 @@ static toDesignSchema_t * LoadSegs(
} else {
pp = (dp->type==NTO_3WAY ? &Tri1Schema : &Wye1Schema );
}
- tempEndPts(0).pos = points[0]; tempEndPts(0).angle = 270.0;
- tempEndPts(1).pos = points[1]; tempEndPts(1).angle = 90.0-angle0;
- tempEndPts(2).pos = points[2]; tempEndPts(2).angle = 90.0+angle1;
+ SetEndPt( TempEndPt(0), points[0], 270.0 );
+ SetEndPt( TempEndPt(1), points[1], 90.0-angle0 );
+ SetEndPt( TempEndPt(2), points[2], 90.0+angle1 );
if (dp->type == NTO_3WAY) {
- tempEndPts(3).pos = points[7]; tempEndPts(3).angle = 90.0;
+ SetEndPt( TempEndPt(3), points[7], 90.0 );
}
break;
#ifndef MKTURNOUT
case NTO_CORNUWYE:
case NTO_CORNU3WAY:
- DYNARR_SET( trkEndPt_t, tempEndPts_da, (dp->type==NTO_CORNU3WAY)?4:3 );
+ TempEndPtsSet( (dp->type==NTO_CORNU3WAY)?4:3 );
/*
* Construct Wye and 3 Way Turnouts with Cornu curves
@@ -1457,9 +1579,9 @@ static toDesignSchema_t * LoadSegs(
radii[2] = (newTurnRad1); /*Right*/
radii[3] = (newTurnRad3); /*Center*/
angles[0] = 0.0; /*Base*/
- angles[1] = newTurnAngle0; /*Left*/
- angles[2] = newTurnAngle1; /*Right*/
- angles[3] = newTurnAngle3; /*Center*/
+ angles[1] = angle0; /*Left*/
+ angles[2] = angle1; /*Right*/
+ angles[3] = angle3; /*Center*/
points[0].x = points[0].y = 0.0; /*Base*/
points[1].y = (newTurnOff0); /* Left */
points[1].x = (newTurnLen0);
@@ -1472,63 +1594,71 @@ static toDesignSchema_t * LoadSegs(
pp = (dp->type==NTO_CORNU3WAY ? &CornuTriSchema : &CornuWyeSchema );
- tempEndPts(0).pos = points[0]; tempEndPts(0).angle = 270.0;
+ SetEndPt( TempEndPt(0), points[0], 270.0 );
if (newTurnRad0<0.0) {
- tempEndPts(1).pos = points[1]; tempEndPts(1).angle = 90.0+angles[1];
+ SetEndPt( TempEndPt(1), points[1], 90.0+angles[1] );
} else {
- tempEndPts(1).pos = points[1]; tempEndPts(1).angle = 90.0-angles[1];
+ SetEndPt( TempEndPt(1), points[1], 90.0-angles[1] );
}
if (newTurnRad1<0.0) {
- tempEndPts(2).pos = points[2]; tempEndPts(2).angle = 90.0-angles[2];
+ SetEndPt( TempEndPt(2), points[2], 90.0-angles[2] );
} else {
- tempEndPts(2).pos = points[2]; tempEndPts(2).angle = 90.0+angles[2];
+ SetEndPt( TempEndPt(2), points[2], 90.0+angles[2] );
}
if (dp->type == NTO_CORNU3WAY) {
if (newTurnRad3<0.0) {
- tempEndPts(3).pos = points[3]; tempEndPts(3).angle = 90.0+angles[3];
+ SetEndPt( TempEndPt(3), points[3], 90.0+angles[3] );
} else {
- tempEndPts(3).pos = points[3]; tempEndPts(3).angle = 90.0-angles[3];
+ SetEndPt( TempEndPt(3), points[3], 90.0-angles[3] );
}
}
DIST_T end_length = MIN_TRACK_LENGTH;
- for (int i=0;i<((dp->type==NTO_CORNU3WAY)?4:3);i++) {
+ for (int i=0; i<((dp->type==NTO_CORNU3WAY)?4:3); i++) {
if (radii[i] == 0.0) {
- if (i==2)
- Translate(&end_points[i], points[i], NormalizeAngle(90.0+angles[i]+180), end_length);
- else
- Translate(&end_points[i], points[i], NormalizeAngle(90.0-angles[i]+(i==0?0.0:180.0)), end_length);
+ if (i==2) {
+ Translate(&end_points[i], points[i], NormalizeAngle(90.0+angles[i]+180),
+ end_length);
+ } else {
+ Translate(&end_points[i], points[i],
+ NormalizeAngle(90.0-angles[i]+(i==0?0.0:180.0)), end_length);
+ }
end_angles[i] = angles[i];
} else {
if (i!=2) {
- if (((i==0) && radii[0]>0.0) || ((i==1 || i==3) && radii[i]>0.0))
+ if (((i==0) && radii[0]>0.0) || ((i==1 || i==3) && radii[i]>0.0)) {
Translate(&end_centers[i], points[i], -angles[i], fabs(radii[i]));
- else
+ } else {
Translate(&end_centers[i], points[i], angles[i]+180, fabs(radii[i]));
+ }
end_arcs[i] = (radii[i]>=0?1:-1)*R2D(end_length/fabs(radii[i]));
} else {
- if (radii[2]>0.0)
+ if (radii[2]>0.0) {
Translate(&end_centers[i], points[i], angles[i]+180, fabs(radii[i]));
- else
+ } else {
Translate(&end_centers[i], points[i], -angles[i], fabs(radii[i]));
+ }
end_arcs[i] = (radii[i]>=0?-1:1)*R2D(end_length/fabs(radii[i]));
}
end_points[i] = points[i];
Rotate(&end_points[i],end_centers[i],end_arcs[i]);
end_angles[i] = angles[i]+end_arcs[i];
}
-LogPrintf( "ctoDes0-%d: EP(%f,%f) NEP(%f,%f) EA(%f) NEA(%f) R(%f) ARC(%f) EC(%f,%f) \n",
- i+1,points[i].x,points[i].y,end_points[i].x,end_points[i].y,angles[i],end_angles[i],radii[i],end_arcs[i],
- end_centers[i].x,end_centers[i].y);
+ LOG( log_cornuturnoutdesigner, 1,
+ ( "ctoDes0-%d: EP(%f,%f) NEP(%f,%f) EA(%f) NEA(%f) R(%f) ARC(%f) EC(%f,%f) \n",
+ \
+ i+1,points[i].x,points[i].y,end_points[i].x,end_points[i].y,angles[i],
+ end_angles[i],radii[i],end_arcs[i], \
+ end_centers[i].x,end_centers[i].y) );
}
wBool_t LH_main = TRUE, LH_first = TRUE;
cornuData.pos[0] = end_points[0]; /*Start*/
if (dp->type == NTO_CORNU3WAY) {
- if (newTurnToeR < newTurnToeL) LH_first = FALSE;
+ if (newTurnToeR < newTurnToeL) { LH_first = FALSE; }
cornuData.pos[1] = end_points[3]; /*Center for First Time */
cornuData.pos[5] = end_points[3]; /*Center for last time*/
} else if (newTurnRad1>=0.0) {
@@ -1546,44 +1676,53 @@ LogPrintf( "ctoDes0-%d: EP(%f,%f) NEP(%f,%f) EA(%f) NEA(%f) R(%f) ARC(%f) EC(%f,
cornuData.pos[5] = end_points[3]; /*Center */
}
- if (radii[0] == 0.0) /* Base */
+ if (radii[0] == 0.0) { /* Base */
cornuData.center[0] = zero;
- else {
+ } else {
cornuData.center[0].x = end_points[0].x;
cornuData.center[0].y = end_points[0].y + radii[0];
}
- if (radii[1] == 0.0) /* Left */
+ if (radii[1] == 0.0) { /* Left */
cornuData.center[7] = zero;
- else if (radii[1] >0.0)
+ } else if (radii[1] >0.0) {
Translate(&cornuData.center[7], cornuData.pos[7], -end_angles[1], radii[1]);
- else
- Translate(&cornuData.center[7], cornuData.pos[7], 180.0+end_angles[1], radii[1]);
+ } else {
+ Translate(&cornuData.center[7], cornuData.pos[7], 180.0+end_angles[1],
+ radii[1]);
+ }
- if (radii[2] == 0.0) /* Right */
+ if (radii[2] == 0.0) { /* Right */
cornuData.center[9] = zero;
- else if (radii[2] >0.0)
- Translate(&cornuData.center[9], cornuData.pos[9], 180.0+end_angles[2], radii[2]);
- else
+ } else if (radii[2] >0.0) {
+ Translate(&cornuData.center[9], cornuData.pos[9], 180.0+end_angles[2],
+ radii[2]);
+ } else {
Translate(&cornuData.center[9], cornuData.pos[9], -end_angles[2], radii[2]);
+ }
if (dp->type == NTO_CORNU3WAY) {
- if (radii[3] == 0.0) /* Center */
+ if (radii[3] == 0.0) { /* Center */
cornuData.center[5] = zero;
- else if (radii[3] >0.0)
+ } else if (radii[3] >0.0) {
Translate(&cornuData.center[5], cornuData.pos[5], -end_angles[3], radii[3]);
- else
- Translate(&cornuData.center[5], cornuData.pos[5], 180.0+end_angles[3], radii[3]);
+ } else {
+ Translate(&cornuData.center[5], cornuData.pos[5], 180.0+end_angles[3],
+ radii[3]);
+ }
}
/* Set up for calculation of Toe(s) */
if (dp->type == NTO_CORNU3WAY) {
- cornuData.center[1] = cornuData.center[5]; /*For Toe1 calc always use center */
- cornuData.center[3] = cornuData.center[5]; /*For Toe2 calc always use center*/
+ cornuData.center[1] =
+ cornuData.center[5]; /*For Toe1 calc always use center */
+ cornuData.center[3] =
+ cornuData.center[5]; /*For Toe2 calc always use center*/
} else if (LH_main) {
cornuData.center[1] = cornuData.center[7]; /* Dominant Curve Left */
- } else
- cornuData.center[1] = cornuData.center[9]; /* Right */
+ } else {
+ cornuData.center[1] = cornuData.center[9]; /* Right */
+ }
cornuData.angle[0] = 270.0; /*Always*/
if (dp->type == NTO_CORNU3WAY) {
@@ -1614,11 +1753,7 @@ LogPrintf( "ctoDes0-%d: EP(%f,%f) NEP(%f,%f) EA(%f) NEA(%f) R(%f) ARC(%f) EC(%f,
/* Ready to find Toe points */
DYNARR_RESET( trkSeg_t, tempSegs_da );
- trkSeg_t * temp_p;
- temp_p = &tempSegs(0);
-
-
- DIST_T radius;
+ DIST_T radius = 0.0;
coOrd center;
ANGLE_T angle;
int inx,subSeg;
@@ -1635,12 +1770,14 @@ LogPrintf( "ctoDes0-%d: EP(%f,%f) NEP(%f,%f) EA(%f) NEA(%f) R(%f) ARC(%f) EC(%f,
} else {
/*Find Toe 1 from curve */
- CallCornu0(&cornuData.pos[0],&cornuData.center[0],&cornuData.angle[0],&cornuData.radius[0],&tempSegs_da, FALSE);
+ CallCornu0(&cornuData.pos[0],&cornuData.center[0],&cornuData.angle[0],
+ &cornuData.radius[0],&tempSegs_da, FALSE);
/*Get ToeAngle/Radius/Center for first toe */
pos.x = end_points[0].x+(LH_first?newTurnToeL:newTurnToeR);
pos.y = end_points[0].y; /* This will be close to but not on the curve */
- angle = GetAngleSegs(tempSegs_da.cnt,(trkSeg_t *)(tempSegs_da.ptr),&pos,&inx,NULL,&back,&subSeg,&neg);
+ angle = GetAngleSegs(tempSegs_da.cnt,&tempSegs(0),&pos,&inx,
+ NULL,&back,&subSeg,&neg);
segPtr = &DYNARR_N(trkSeg_t, tempSegs_da, inx);
if (segPtr->type == SEG_BEZTRK) {
@@ -1692,18 +1829,19 @@ LogPrintf( "ctoDes0-%d: EP(%f,%f) NEP(%f,%f) EA(%f) NEA(%f) R(%f) ARC(%f) EC(%f,
}
if (dp->type == NTO_CORNU3WAY) {
- if (newTurnToeR!=newTurnToeL) {
+ if (newTurnToeR!=newTurnToeL) {
/* Second Toe */
- if (cornuData.radius[0] == 0.0) {
+ if (cornuData.radius[0] == 0.0) {
pos.x = end_points[0].x+(LH_first?newTurnToeR:newTurnToeL)-MIN_TRACK_LENGTH;
pos.y = 0.0;
angle = 90.0;
radius = 0.0;
center = zero;
- } else {
+ } else {
pos.x = end_points[0].x+(LH_first?newTurnToeR:newTurnToeL);
pos.y = end_points[0].y; /* This will be close to but not on the curve */
- angle = GetAngleSegs(tempSegs_da.cnt,(trkSeg_t *)(tempSegs_da.ptr),&pos,&inx,NULL,&back,&subSeg,&neg);
+ angle = GetAngleSegs(tempSegs_da.cnt,&tempSegs(0),&pos,&inx,
+ NULL,&back,&subSeg,&neg);
segPtr = &DYNARR_N(trkSeg_t, tempSegs_da, inx);
if (segPtr->type == SEG_BEZTRK) {
@@ -1717,7 +1855,7 @@ LogPrintf( "ctoDes0-%d: EP(%f,%f) NEP(%f,%f) EA(%f) NEA(%f) R(%f) ARC(%f) EC(%f,
center = segPtr->u.c.center;
radius = fabs(segPtr->u.c.radius);
}
- }
+ }
cornuData.pos[3] = pos;
cornuData.center[3] = center;
cornuData.angle[3] = angle;
@@ -1762,55 +1900,63 @@ LogPrintf( "ctoDes0-%d: EP(%f,%f) NEP(%f,%f) EA(%f) NEA(%f) R(%f) ARC(%f) EC(%f,
ClearSegs(&tempSegs_da);
ClearSegs(&cornuSegs_da);
- int Toe1Seg = 0 , Toe2Seg = 0, CenterEndSeg = 0, LeftEndSeg = 0, RightEndSeg = 0;
+ int Toe1Seg = 0, Toe2Seg = 0, CenterEndSeg = 0, LeftEndSeg = 0, RightEndSeg = 0;
/* Override if at zero radius at base don't compute end */
if (cornuData.radius[0] == 0.0) {
DYNARR_APPEND(trkSeg_t,tempSegs_da,1);
- temp_p = &DYNARR_LAST(trkSeg_t,tempSegs_da);
+ trkSeg_p temp_p = &DYNARR_LAST(trkSeg_t,tempSegs_da);
temp_p->type = SEG_STRTRK;
temp_p->color = wDrawColorBlack;
- temp_p->width = 0.0;
+ temp_p->lineWidth = 0.0;
temp_p->u.l.pos[0] = zero;
temp_p->u.l.pos[1] = cornuData.pos[0];
-LogPrintf( "ctoDes1: P0(%f,%f) P1(%f,%f) \n",
- temp_p->u.l.pos[0].x,temp_p->u.l.pos[0].y,temp_p->u.l.pos[1].x,temp_p->u.l.pos[1].y );
+ LOG( log_cornuturnoutdesigner, 1, ( "ctoDes1: P0(%f,%f) P1(%f,%f) \n", \
+ temp_p->u.l.pos[0].x,temp_p->u.l.pos[0].y,temp_p->u.l.pos[1].x,
+ temp_p->u.l.pos[1].y ) );
} else {
DYNARR_APPEND(trkSeg_t,tempSegs_da,1);
- temp_p = &DYNARR_LAST(trkSeg_t,tempSegs_da);
+ trkSeg_p temp_p = &DYNARR_LAST(trkSeg_t,tempSegs_da);
temp_p->type = SEG_CRVTRK;
temp_p->color = wDrawColorBlack;
- temp_p->width = 0.0;
+ temp_p->lineWidth = 0.0;
temp_p->u.c.radius = fabs(radii[0]);;
- if (radii[0]>0.0)
+ if (radii[0]>0.0) {
temp_p->u.c.a0 = FindAngle(end_centers[0],end_points[0]);
- else
+ } else {
temp_p->u.c.a0 = FindAngle(end_centers[0],points[0]);
+ }
temp_p->u.c.a1 = fabs(end_arcs[0]);
temp_p->u.c.center = end_centers[0];
coOrd rp0,rp1;
Translate(&rp0,temp_p->u.c.center,temp_p->u.c.a0,temp_p->u.c.radius);
- Translate(&rp1,temp_p->u.c.center,temp_p->u.c.a0+temp_p->u.c.a1,temp_p->u.c.radius);
-LogPrintf( "ctoDes1: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f), EP(%f,%f) RP0(%f,%f) RP1(%f,%f)\n",
- temp_p->u.c.radius,temp_p->u.c.a0,temp_p->u.c.a1,temp_p->u.c.center.x,temp_p->u.c.center.y,
- points[0].x,points[0].y,end_points[0].x,end_points[0].y,
- rp0.x,rp0.y,rp1.x,rp1.y);
+ Translate(&rp1,temp_p->u.c.center,temp_p->u.c.a0+temp_p->u.c.a1,
+ temp_p->u.c.radius);
+ LOG( log_cornuturnoutdesigner, 1,
+ ( "ctoDes1: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f), EP(%f,%f) RP0(%f,%f) RP1(%f,%f)\n",
+ \
+ temp_p->u.c.radius,temp_p->u.c.a0,temp_p->u.c.a1,temp_p->u.c.center.x,
+ temp_p->u.c.center.y, \
+ points[0].x,points[0].y,end_points[0].x,end_points[0].y, \
+ rp0.x,rp0.y,rp1.x,rp1.y) ) ;
}
//If Radius zero, just a straight to the First Toe if offset
if (cornuData.radius[0] == 0.0) {
if ((cornuData.pos[0].x != cornuData.pos[1].x) ||
(cornuData.pos[0].y != cornuData.pos[1].y)) {
DYNARR_APPEND(trkSeg_t,tempSegs_da,1);
- temp_p = &DYNARR_LAST(trkSeg_t,tempSegs_da);
+ trkSeg_p temp_p = &DYNARR_LAST(trkSeg_t,tempSegs_da);
temp_p->type = SEG_STRTRK;
temp_p->color = wDrawColorBlack;
- temp_p->width = 0.0;
+ temp_p->lineWidth = 0.0;
temp_p->u.l.pos[0] = cornuData.pos[0];
temp_p->u.l.pos[1] = cornuData.pos[1];
}
} else if ((cornuData.pos[0].x != cornuData.pos[1].x) ||
- (cornuData.pos[0].y != cornuData.pos[1].y) )
- CallCornuNoBez(&cornuData.pos[0],&cornuData.center[0],&cornuData.angle[0],&cornuData.radius[0],&tempSegs_da);
+ (cornuData.pos[0].y != cornuData.pos[1].y) ) {
+ CallCornuNoBez(&cornuData.pos[0],&cornuData.center[0],&cornuData.angle[0],
+ &cornuData.radius[0],&tempSegs_da);
+ }
Toe1Seg = tempSegs_da.cnt;
@@ -1819,15 +1965,17 @@ LogPrintf( "ctoDes1: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f), EP(%f,%f) RP0(%f,%f)
/* Toe1 to Toe2 in tempSegs array */
if (cornuData.radius[0] == 0.0) {
DYNARR_APPEND(trkSeg_t,cornuSegs_da,1);
- temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
+ trkSeg_p temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
temp_p->type = SEG_STRTRK;
temp_p->color = wDrawColorBlack;
- temp_p->width = 0.0;
+ temp_p->lineWidth = 0.0;
temp_p->u.l.pos[0] = cornuData.pos[2];
temp_p->u.l.pos[1] = cornuData.pos[3];
} else if ((cornuData.pos[2].x != cornuData.pos[3].x) ||
- (cornuData.pos[2].y != cornuData.pos[3].y) )
- CallCornuNoBez(&cornuData.pos[2],&cornuData.center[2],&cornuData.angle[2],&cornuData.radius[2],&cornuSegs_da);
+ (cornuData.pos[2].y != cornuData.pos[3].y) ) {
+ CallCornuNoBez(&cornuData.pos[2],&cornuData.center[2],&cornuData.angle[2],
+ &cornuData.radius[2],&cornuSegs_da);
+ }
Toe2Seg = cornuSegs_da.cnt+Toe1Seg;
/* Add to second cornu to tempSegs array */
@@ -1838,38 +1986,45 @@ LogPrintf( "ctoDes1: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f), EP(%f,%f) RP0(%f,%f)
Toe2Seg = Toe1Seg; //No Toe2
}
/* Toe2 to Center in cornuSegs array */
- CallCornuNoBez(&cornuData.pos[4],&cornuData.center[4],&cornuData.angle[4],&cornuData.radius[4],&cornuSegs_da);
+ CallCornuNoBez(&cornuData.pos[4],&cornuData.center[4],&cornuData.angle[4],
+ &cornuData.radius[4],&cornuSegs_da);
if (cornuData.radius[5] == 0.0) {
DYNARR_APPEND(trkSeg_t,cornuSegs_da,1);
- temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
+ trkSeg_p temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
temp_p->type = SEG_STRTRK;
temp_p->color = wDrawColorBlack;
- temp_p->width = 0.0;
+ temp_p->lineWidth = 0.0;
temp_p->u.l.pos[0] = cornuData.pos[5];
temp_p->u.l.pos[1] = points[3];
- LogPrintf( "ctoDes2: P0(%f,%f) P1(%f,%f) \n",
- temp_p->u.l.pos[0].x,temp_p->u.l.pos[0].y,temp_p->u.l.pos[1].x,temp_p->u.l.pos[1].y );
+ LOG( log_cornuturnoutdesigner, 1, ( "ctoDes2: P0(%f,%f) P1(%f,%f) \n", \
+ temp_p->u.l.pos[0].x,temp_p->u.l.pos[0].y,temp_p->u.l.pos[1].x,
+ temp_p->u.l.pos[1].y )) ;
} else {
DYNARR_APPEND(trkSeg_t,cornuSegs_da,1);
- temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
+ trkSeg_p temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
temp_p->type = SEG_CRVTRK;
temp_p->color = wDrawColorBlack;
- temp_p->width = 0.0;
+ temp_p->lineWidth = 0.0;
temp_p->u.c.radius = -radii[3]; //Assumed Left
- if (radii[3]>0)
+ if (radii[3]>0) {
temp_p->u.c.a0 = FindAngle(end_centers[3],points[3]);
- else
+ } else {
temp_p->u.c.a0 = FindAngle(end_centers[3],end_points[3]);
+ }
temp_p->u.c.a1 = fabs(end_arcs[3]);
temp_p->u.c.center = end_centers[3];
coOrd rp0,rp1;
Translate(&rp0,temp_p->u.c.center,temp_p->u.c.a0,temp_p->u.c.radius);
- Translate(&rp1,temp_p->u.c.center,temp_p->u.c.a0+temp_p->u.c.a1,temp_p->u.c.radius);
- LogPrintf( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f) RP1(%f,%f)\n",
- temp_p->u.c.radius,temp_p->u.c.a0,temp_p->u.c.a1,temp_p->u.c.center.x,temp_p->u.c.center.y,
- points[3].x,points[3].y,end_points[3].x,end_points[3].y,
- rp0.x,rp0.y,rp1.x,rp1.y);
+ Translate(&rp1,temp_p->u.c.center,temp_p->u.c.a0+temp_p->u.c.a1,
+ temp_p->u.c.radius);
+ LOG( log_cornuturnoutdesigner, 1,
+ ( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f) RP1(%f,%f)\n",
+ \
+ temp_p->u.c.radius,temp_p->u.c.a0,temp_p->u.c.a1,temp_p->u.c.center.x,
+ temp_p->u.c.center.y, \
+ points[3].x,points[3].y,end_points[3].x,end_points[3].y, \
+ rp0.x,rp0.y,rp1.x,rp1.y) );
}
CenterEndSeg = cornuSegs_da.cnt+Toe2Seg;
@@ -1882,38 +2037,45 @@ LogPrintf( "ctoDes1: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f), EP(%f,%f) RP0(%f,%f)
}
/* Left in cornuSegs array*/
- CallCornuNoBez(&cornuData.pos[6],&cornuData.center[6],&cornuData.angle[6],&cornuData.radius[6],&cornuSegs_da);
+ CallCornuNoBez(&cornuData.pos[6],&cornuData.center[6],&cornuData.angle[6],
+ &cornuData.radius[6],&cornuSegs_da);
if (cornuData.radius[7] == 0.0) {
DYNARR_APPEND(trkSeg_t,cornuSegs_da,1);
- temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
+ trkSeg_p temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
temp_p->type = SEG_STRTRK;
temp_p->color = wDrawColorBlack;
- temp_p->width = 0.0;
+ temp_p->lineWidth = 0.0;
temp_p->u.l.pos[0] = cornuData.pos[7];
temp_p->u.l.pos[1] = points[1];
-LogPrintf( "ctoDes2: P0(%f,%f) P1(%f,%f) \n",
- temp_p->u.l.pos[0].x,temp_p->u.l.pos[0].y,temp_p->u.l.pos[1].x,temp_p->u.l.pos[1].y );
+ LOG( log_cornuturnoutdesigner, 1, ( "ctoDes2: P0(%f,%f) P1(%f,%f) \n", \
+ temp_p->u.l.pos[0].x,temp_p->u.l.pos[0].y,temp_p->u.l.pos[1].x,
+ temp_p->u.l.pos[1].y ) );
} else {
DYNARR_APPEND(trkSeg_t,cornuSegs_da,1);
- temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
+ trkSeg_p temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
temp_p->type = SEG_CRVTRK;
temp_p->color = wDrawColorBlack;
- temp_p->width = 0.0;
+ temp_p->lineWidth = 0.0;
temp_p->u.c.radius = -radii[1]; //Negative relative to left
- if (radii[1]>0)
+ if (radii[1]>0) {
temp_p->u.c.a0 = FindAngle(end_centers[1],points[1]);
- else
+ } else {
temp_p->u.c.a0 = FindAngle(end_centers[1],end_points[1]);
+ }
temp_p->u.c.a1 = fabs(end_arcs[1]);
temp_p->u.c.center = end_centers[1];
coOrd rp0,rp1;
Translate(&rp0,temp_p->u.c.center,temp_p->u.c.a0,temp_p->u.c.radius);
- Translate(&rp1,temp_p->u.c.center,temp_p->u.c.a0+temp_p->u.c.a1,temp_p->u.c.radius);
-LogPrintf( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f) RP1(%f,%f)\n",
- temp_p->u.c.radius,temp_p->u.c.a0,temp_p->u.c.a1,temp_p->u.c.center.x,temp_p->u.c.center.y,
- points[1].x,points[1].y,end_points[1].x,end_points[1].y,
- rp0.x,rp0.y,rp1.x,rp1.y);
+ Translate(&rp1,temp_p->u.c.center,temp_p->u.c.a0+temp_p->u.c.a1,
+ temp_p->u.c.radius);
+ LOG( log_cornuturnoutdesigner, 1,
+ ( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f) RP1(%f,%f)\n",
+ \
+ temp_p->u.c.radius,temp_p->u.c.a0,temp_p->u.c.a1,temp_p->u.c.center.x,
+ temp_p->u.c.center.y, \
+ points[1].x,points[1].y,end_points[1].x,end_points[1].y, \
+ rp0.x,rp0.y,rp1.x,rp1.y) );
}
LeftEndSeg = cornuSegs_da.cnt+CenterEndSeg;
@@ -1924,38 +2086,45 @@ LogPrintf( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f)
ClearSegs(&cornuSegs_da);
/* Right in cornuSegs array*/
- CallCornuNoBez(&cornuData.pos[8],&cornuData.center[8],&cornuData.angle[8],&cornuData.radius[8],&cornuSegs_da);
+ CallCornuNoBez(&cornuData.pos[8],&cornuData.center[8],&cornuData.angle[8],
+ &cornuData.radius[8],&cornuSegs_da);
if (cornuData.radius[9] == 0.0) {
DYNARR_APPEND(trkSeg_t,cornuSegs_da,1);
- temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
+ trkSeg_p temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
temp_p->type = SEG_STRTRK;
temp_p->color = wDrawColorBlack;
- temp_p->width = 0.0;
+ temp_p->lineWidth = 0.0;
temp_p->u.l.pos[0] = cornuData.pos[9];
temp_p->u.l.pos[1] = points[2];
-LogPrintf( "ctoDes2: P0(%f,%f) P1(%f,%f) \n",
- temp_p->u.l.pos[0].x,temp_p->u.l.pos[0].y,temp_p->u.l.pos[1].x,temp_p->u.l.pos[1].y );
+ LOG( log_cornuturnoutdesigner, 1, ( "ctoDes2: P0(%f,%f) P1(%f,%f) \n", \
+ temp_p->u.l.pos[0].x,temp_p->u.l.pos[0].y,temp_p->u.l.pos[1].x,
+ temp_p->u.l.pos[1].y ) );
} else {
DYNARR_APPEND(trkSeg_t,cornuSegs_da,1);
- temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
+ trkSeg_p temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
temp_p->type = SEG_CRVTRK;
temp_p->color = wDrawColorBlack;
- temp_p->width = 0.0;
+ temp_p->lineWidth = 0.0;
temp_p->u.c.radius = radii[2];
- if (radii[2]>0)
+ if (radii[2]>0) {
temp_p->u.c.a0 = FindAngle(end_centers[2],cornuData.pos[9]);
- else
+ } else {
temp_p->u.c.a0 = FindAngle(end_centers[2],end_points[2]);
+ }
temp_p->u.c.a1 = fabs(end_arcs[2]);
temp_p->u.c.center = end_centers[2];
coOrd rp0,rp1;
Translate(&rp0,temp_p->u.c.center,temp_p->u.c.a0,temp_p->u.c.radius);
- Translate(&rp1,temp_p->u.c.center,temp_p->u.c.a0+temp_p->u.c.a1,temp_p->u.c.radius);
-LogPrintf( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f) RP1(%f,%f)\n",
- temp_p->u.c.radius,temp_p->u.c.a0,temp_p->u.c.a1,temp_p->u.c.center.x,temp_p->u.c.center.y,
- points[2].x,points[2].y,end_points[2].x,end_points[2].y,
- rp0.x,rp0.y,rp1.x,rp1.y);
+ Translate(&rp1,temp_p->u.c.center,temp_p->u.c.a0+temp_p->u.c.a1,
+ temp_p->u.c.radius);
+ LOG( log_cornuturnoutdesigner, 1,
+ ( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f) RP1(%f,%f)\n",
+ \
+ temp_p->u.c.radius,temp_p->u.c.a0,temp_p->u.c.a1,temp_p->u.c.center.x,
+ temp_p->u.c.center.y, \
+ points[2].x,points[2].y,end_points[2].x,end_points[2].y, \
+ rp0.x,rp0.y,rp1.x,rp1.y) );
}
RightEndSeg = cornuSegs_da.cnt+LeftEndSeg;
@@ -1976,7 +2145,7 @@ LogPrintf( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f)
if (dp->type == NTO_CORNU3WAY) {
strcpy(pathChar,"Normal"); /* Also resets array */
pathLen = (wIndex_t)strlen(pathChar)+1;
- for (uint8_t i=0;i<CenterEndSeg;i++) {
+ for (uint8_t i=0; i<CenterEndSeg; i++) {
pathChar[pathLen] = i+1;
pathLen++;
}
@@ -1990,18 +2159,18 @@ LogPrintf( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f)
strcpy(pathChar,"Left");
pathLen = (wIndex_t)strlen(pathChar)+1;
}
- for (uint8_t i=0;i<Toe1Seg;i++) {
+ for (uint8_t i=0; i<Toe1Seg; i++) {
pathChar[pathLen] = i+1;
pathLen++;
}
if ((dp->type == NTO_CORNU3WAY) && !LH_first && (newTurnToeR != newTurnToeL)) {
- for (uint8_t i=Toe1Seg;i<Toe2Seg;i++) {
+ for (uint8_t i=Toe1Seg; i<Toe2Seg; i++) {
pathChar[pathLen] = i+1;
pathLen++;
}
}
- for (uint8_t i=CenterEndSeg;i<LeftEndSeg;i++) {
+ for (uint8_t i=CenterEndSeg; i<LeftEndSeg; i++) {
pathChar[pathLen] = i+1;
pathLen++;
}
@@ -2014,17 +2183,17 @@ LogPrintf( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f)
sprintf(&pathChar[pathLen],"%s","Right");
pathLen += (wIndex_t)strlen(&pathChar[pathLen])+1;
- for (uint8_t i=0;i<Toe1Seg;i++) {
+ for (uint8_t i=0; i<Toe1Seg; i++) {
pathChar[pathLen] = i+1;
pathLen++;
}
if ((dp->type == NTO_CORNU3WAY) && LH_first && (newTurnToeR != newTurnToeL)) {
- for (uint8_t i=Toe1Seg;i<Toe2Seg;i++) {
+ for (uint8_t i=Toe1Seg; i<Toe2Seg; i++) {
pathChar[pathLen] = i+1;
pathLen++;
}
}
- for (uint8_t i=LeftEndSeg;i<RightEndSeg;i++) {
+ for (uint8_t i=LeftEndSeg; i<RightEndSeg; i++) {
pathChar[pathLen] = i+1;
pathLen++;
}
@@ -2045,12 +2214,13 @@ LogPrintf( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f)
case NTO_S_SLIP:
case NTO_CROSSING:
if (dp->type == NTO_D_SLIP) {
- if (newTurnSlipMode == 1)
+ if (newTurnSlipMode == 1) {
pp = &DoubleSlipSchema2;
- else
+ } else {
pp = &DoubleSlipSchema;
+ }
}
- DYNARR_SET( trkEndPt_t, tempEndPts_da, 4 );
+ TempEndPtsSet( 4 );
points[0].x = points[0].y = points[1].y = 0.0;
points[1].x = (newTurnLen0);
pos.y = 0; pos.x = (newTurnLen0)/2.0;
@@ -2061,24 +2231,25 @@ LogPrintf( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f)
if (dp->type != NTO_CROSSING) {
Translate( &pos, points[3], 90.0+angle0, -newTurnTrackGauge );
if (!ComputeCurve( &points[4], &points[5], &radii[0],
- pos.x, fabs(pos.y), angle0 )) /*???*/
+ pos.x, fabs(pos.y), angle0 )) { /*???*/
return NULL;
+ }
radii[1] = - radii[0];
points[5].y = - points[5].y;
points[6].y = 0; points[6].x = cpos.x-(points[4].x-cpos.x);
points[7].y = -points[5].y;
points[7].x = cpos.x-(points[5].x-cpos.x);
}
- tempEndPts(0).pos = points[0]; tempEndPts(0).angle = 270.0;
- tempEndPts(1).pos = points[1]; tempEndPts(1).angle = 90.0;
- tempEndPts(2).pos = points[2]; tempEndPts(2).angle = 270.0+angle0;
- tempEndPts(3).pos = points[3]; tempEndPts(3).angle = 90.0+angle0;
+ SetEndPt( TempEndPt(0), points[0], 270.0 );
+ SetEndPt( TempEndPt(1), points[1], 90.0 );
+ SetEndPt( TempEndPt(2), points[2], 270.0+angle0 );
+ SetEndPt( TempEndPt(3), points[3], 90.0+angle0 );
break;
case NTO_R_CROSSOVER:
case NTO_L_CROSSOVER:
case NTO_D_CROSSOVER:
- DYNARR_SET( trkEndPt_t, tempEndPts_da, 4 );
+ TempEndPtsSet( 4 );
d = (newTurnLen0)/2.0 - newTurnTrackGauge;
if (d < 0.0) {
NoticeMessage( MSG_TODSGN_CROSSOVER_TOO_SHORT, _("Ok"), NULL );
@@ -2090,8 +2261,9 @@ LogPrintf( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f)
points[2].y = fabs(newTurnOff0); points[2].x = 0.0;
points[3].y = fabs(newTurnOff0); points[3].x = (newTurnLen0);
if (!ComputeCurve( &points[4], &points[5], &radii[1],
- (newTurnLen0)/2.0, fabs(newTurnOff0)/2.0, angle0 ) )
+ (newTurnLen0)/2.0, fabs(newTurnOff0)/2.0, angle0 ) ) {
return NULL;
+ }
radii[0] = - radii[1];
points[6].y = 0.0; points[6].x = (newTurnLen0)-points[4].x;
points[7].y = points[5].y; points[7].x = (newTurnLen0)-points[5].x;
@@ -2099,35 +2271,35 @@ LogPrintf( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f)
points[9].y = fabs(newTurnOff0)-points[5].y; points[9].x = points[5].x;
points[10].y = fabs(newTurnOff0); points[10].x = points[6].x;
points[11].y = points[9].y; points[11].x = points[7].x;
- tempEndPts(0).pos = points[0]; tempEndPts(0).angle = 270.0;
- tempEndPts(1).pos = points[1]; tempEndPts(1).angle = 90.0;
- tempEndPts(2).pos = points[2]; tempEndPts(2).angle = 270.0;
- tempEndPts(3).pos = points[3]; tempEndPts(3).angle = 90.0;
+ SetEndPt( TempEndPt(0), points[0], 270.0 );
+ SetEndPt( TempEndPt(1), points[1], 90.0 );
+ SetEndPt( TempEndPt(2), points[2], 270.0 );
+ SetEndPt( TempEndPt(3), points[3], 90.0 );
break;
case NTO_STR_SECTION:
- DYNARR_SET( trkEndPt_t, tempEndPts_da, 2 );
+ TempEndPtsSet( 2 );
points[0].y = points[0].x = 0;
points[1].y = 0/*(newTurnOff1)*/; points[1].x = (newTurnLen0);
- tempEndPts(0).pos = points[0]; tempEndPts(0).angle = 270.0;
- tempEndPts(1).pos = points[1]; tempEndPts(1).angle = 90.0;
+ SetEndPt( TempEndPt(0), points[0], 270.0 );
+ SetEndPt( TempEndPt(1), points[1], 90.0 );
break;
case NTO_CRV_SECTION:
- DYNARR_SET( trkEndPt_t, tempEndPts_da, 2 );
+ TempEndPtsSet( 2 );
points[0].y = points[0].x = 0;
points[1].y = (newTurnLen0) * (1.0 - cos( D2R(angle0) ) );
points[1].x = (newTurnLen0) * sin( D2R(angle0) );
radii[0] = -(newTurnLen0);
- tempEndPts(0).pos = points[0]; tempEndPts(0).angle = 270.0;
- tempEndPts(1).pos = points[1]; tempEndPts(1).angle = 90.0-angle0;
+ SetEndPt( TempEndPt(0), points[0], 270.0 );
+ SetEndPt( TempEndPt(1), points[1], 90.0-angle0 );
break;
case NTO_BUMPER:
- DYNARR_SET( trkEndPt_t, tempEndPts_da, 1 );
+ TempEndPtsSet( 1 );
points[0].y = points[0].x = 0;
points[1].y = 0/*(newTurnOff1)*/; points[1].x = (newTurnLen0);
- tempEndPts(0).pos = points[0]; tempEndPts(0).angle = 270.0;
+ SetEndPt( TempEndPt(0), points[0], 270.0 );
break;
default:
@@ -2137,310 +2309,334 @@ LogPrintf( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f)
switch (dp->type) {
case NTO_CURVED:
d = points[3].x - points[5].x;
- if ( d < -MIN_TRACK_LENGTH )
+ if ( d < -MIN_TRACK_LENGTH ) {
pp = &Crv3Schema;
- else if ( d > MIN_TRACK_LENGTH )
+ } else if ( d > MIN_TRACK_LENGTH ) {
pp = &Crv2Schema;
- else
+ } else {
pp = &Crv1Schema;
+ }
break;
}
}
#ifndef MKTURNOUT
if(dp->type == NTO_CORNU) {
- DYNARR_SET( trkEndPt_t, tempEndPts_da, 3 );
-
- DIST_T end_length = MIN_TRACK_LENGTH;
-
- // Adjust end_points to impose small fixed end segments
-
- for (int i=0;i<3;i++) {
- if (radii[i] == 0.0) {
- Translate(&end_points[i], points[i], 90-angles[i]+(i==0?0:180), end_length);
- end_angles[i] = angles[i];
- } else {
- Translate(&end_centers[i], points[i], -angles[i], radii[i]);
- end_arcs[i] = (radii[i]>=0?1:-1)*R2D(end_length/fabs(radii[i]));
- end_points[i] = points[i];
- Rotate(&end_points[i],end_centers[i],(i>0?1:-1)*end_arcs[i]);
- end_angles[i] = angles[i]-(i>0?1:-1)*end_arcs[i];
- }
-LogPrintf( "ctoDes0-%d: EP(%f,%f) NEP(%f,%f) EA(%f) NEA(%f) R(%f) ARC(%f) EC(%f,%f) \n",
- i+1,points[i].x,points[i].y,end_points[i].x,end_points[i].y,angles[i],end_angles[i],radii[i],end_arcs[i],
- end_centers[i].x,end_centers[i].y);
- }
-
- cornuData.pos[0] = end_points[0]; /*Start*/
- cornuData.pos[1] = end_points[2]; /*Outer*/
- cornuData.pos[3] = end_points[2]; /*Outer for second time*/
- cornuData.pos[5] = end_points[1]; /*Inner*/
+ DIST_T end_length = MIN_TRACK_LENGTH;
+ // Adjust end_points to impose small fixed end segments
- if (radii[0] == 0.0) /* Toe */
- cornuData.center[0] = zero;
- else {
- cornuData.center[0].x = end_points[0].x;
- cornuData.center[0].y = end_points[0].y + radii[0];
+ for (int i=0; i<3; i++) {
+ if (radii[i] == 0.0) {
+ Translate(&end_points[i], points[i], 90-angles[i]+(i==0?0:180), end_length);
+ end_angles[i] = angles[i];
+ } else {
+ Translate(&end_centers[i], points[i], -angles[i], radii[i]);
+ end_arcs[i] = (radii[i]>=0?1:-1)*R2D(end_length/fabs(radii[i]));
+ end_points[i] = points[i];
+ Rotate(&end_points[i],end_centers[i],(i>0?1:-1)*end_arcs[i]);
+ end_angles[i] = angles[i]-(i>0?1:-1)*end_arcs[i];
}
- if (radii[1] == 0.0) /* Inner */
- cornuData.center[5] = zero;
- else
- Translate(&cornuData.center[5], cornuData.pos[5], -end_angles[1], radii[1]);
-
- if (radii[2] == 0.0) /* Outer */
- cornuData.center[1] = zero;
- else
- Translate(&cornuData.center[1], cornuData.pos[1], -end_angles[2], radii[2]);
- cornuData.center[3] = cornuData.center[1];
-
- cornuData.angle[0] = 270.0;
- cornuData.angle[1] = 90.0-end_angles[2];
- cornuData.angle[3] = 90.0-end_angles[2];
- cornuData.angle[5] = 90.0-end_angles[1]; /*Inner*/
-
- cornuData.radius[0] = fabs(radii[0]);
- cornuData.radius[1] = fabs(radii[2]);
- cornuData.radius[3] = fabs(radii[2]);
- cornuData.radius[5] = fabs(radii[1]); /*Inner*/
-
- DYNARR_RESET( trkSeg_t, tempSegs_da );
- trkSeg_t * temp_p, * cornu_p;
- temp_p = &tempSegs(0);
+ LOG( log_cornuturnoutdesigner, 1,
+ ( "ctoDes0-%d: EP(%f,%f) NEP(%f,%f) EA(%f) NEA(%f) R(%f) ARC(%f) EC(%f,%f) \n",
+ \
+ i+1,points[i].x,points[i].y,end_points[i].x,end_points[i].y,angles[i],
+ end_angles[i],radii[i],end_arcs[i], \
+ end_centers[i].x,end_centers[i].y) );
+ }
- /*Map out the full outer curve */
- CallCornu0(&cornuData.pos[0],&cornuData.center[0],&cornuData.angle[0],&cornuData.radius[0],&tempSegs_da, FALSE);
+ cornuData.pos[0] = end_points[0]; /*Start*/
+ cornuData.pos[1] = end_points[2]; /*Outer*/
+ cornuData.pos[3] = end_points[2]; /*Outer for second time*/
+ cornuData.pos[5] = end_points[1]; /*Inner*/
- /*Get ToeAngle/Radius/Center */
- int inx,subSeg;
- wBool_t back, neg;
- DIST_T radius;
- coOrd center;
- pos.x = end_points[0].x+newTurnToeL-MIN_TRACK_LENGTH;
- pos.y = end_points[0].y; /* This will be close to but not on the curve */
- ANGLE_T angle = GetAngleSegs(tempSegs_da.cnt,(trkSeg_t *)(tempSegs_da.ptr),&pos,&inx,NULL,&back,&subSeg,&neg);
- segPtr = &DYNARR_N(trkSeg_t, tempSegs_da, inx);
-
- if (segPtr->type == SEG_BEZTRK) {
- segPtr = &DYNARR_N(trkSeg_t,segPtr->bezSegs,subSeg);
- }
-
- if (segPtr->type == SEG_STRTRK) {
- radius = 0.0;
- center = zero;
- } else if (segPtr->type == SEG_CRVTRK) {
- center = segPtr->u.c.center;
- radius = fabs(segPtr->u.c.radius);
- }
- cornuData.pos[1] = pos;
- cornuData.center[1] = center;
- cornuData.angle[1] = angle;
- cornuData.radius[1] = radius;
- cornuData.pos[2] = pos;
- cornuData.center[2] = center;
- cornuData.angle[2] = NormalizeAngle(180.0+angle);
- cornuData.radius[2] = radius;
- cornuData.pos[4] = pos;
- cornuData.center[4] = center;
- cornuData.angle[4] = NormalizeAngle(180.0+angle);
- cornuData.radius[4] = radius;
- static dynArr_t cornuSegs_da;
+ if (radii[0] == 0.0) { /* Toe */
+ cornuData.center[0] = zero;
+ } else {
+ cornuData.center[0].x = end_points[0].x;
+ cornuData.center[0].y = end_points[0].y + radii[0];
+ }
+ if (radii[1] == 0.0) { /* Inner */
+ cornuData.center[5] = zero;
+ } else {
+ Translate(&cornuData.center[5], cornuData.pos[5], -end_angles[1], radii[1]);
+ }
- ClearSegs(&tempSegs_da);
- ClearSegs(&cornuSegs_da);
+ if (radii[2] == 0.0) { /* Outer */
+ cornuData.center[1] = zero;
+ } else {
+ Translate(&cornuData.center[1], cornuData.pos[1], -end_angles[2], radii[2]);
+ }
+ cornuData.center[3] = cornuData.center[1];
+
+ cornuData.angle[0] = 270.0;
+ cornuData.angle[1] = 90.0-end_angles[2];
+ cornuData.angle[3] = 90.0-end_angles[2];
+ cornuData.angle[5] = 90.0-end_angles[1]; /*Inner*/
+
+ cornuData.radius[0] = fabs(radii[0]);
+ cornuData.radius[1] = fabs(radii[2]);
+ cornuData.radius[3] = fabs(radii[2]);
+ cornuData.radius[5] = fabs(radii[1]); /*Inner*/
+
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+
+ /*Map out the full outer curve */
+
+ CallCornu0(&cornuData.pos[0],&cornuData.center[0],&cornuData.angle[0],
+ &cornuData.radius[0],&tempSegs_da, FALSE);
+
+ /*Get ToeAngle/Radius/Center */
+ int inx,subSeg;
+ wBool_t back, neg;
+ DIST_T radius = 0.0;
+ coOrd center;
+ pos.x = end_points[0].x+newTurnToeL-MIN_TRACK_LENGTH;
+ pos.y = end_points[0].y; /* This will be close to but not on the curve */
+ ANGLE_T angle = GetAngleSegs(tempSegs_da.cnt,&tempSegs(0),&pos,
+ &inx,NULL,&back,&subSeg,&neg);
+ segPtr = &DYNARR_N(trkSeg_t, tempSegs_da, inx);
+
+ if (segPtr->type == SEG_BEZTRK) {
+ segPtr = &DYNARR_N(trkSeg_t,segPtr->bezSegs,subSeg);
+ }
- /* Override if at zero radius at base don't compute end */
- if (cornuData.radius[0] == 0.0) {
- DYNARR_APPEND(trkSeg_t,tempSegs_da,1);
- temp_p = &DYNARR_LAST(trkSeg_t,tempSegs_da);
- temp_p->type = SEG_STRTRK;
- temp_p->color = wDrawColorBlack;
- temp_p->width = 0.0;
- temp_p->u.l.pos[0] = zero;
- temp_p->u.l.pos[1] = cornuData.pos[1];
-LogPrintf( "ctoDes1: P0(%f,%f) P1(%f,%f) \n",
- temp_p->u.l.pos[0].x,temp_p->u.l.pos[0].y,temp_p->u.l.pos[1].x,temp_p->u.l.pos[1].y );
+ if (segPtr->type == SEG_STRTRK) {
+ radius = 0.0;
+ center = zero;
+ } else if (segPtr->type == SEG_CRVTRK) {
+ center = segPtr->u.c.center;
+ radius = fabs(segPtr->u.c.radius);
+ }
+ cornuData.pos[1] = pos;
+ cornuData.center[1] = center;
+ cornuData.angle[1] = angle;
+ cornuData.radius[1] = radius;
+ cornuData.pos[2] = pos;
+ cornuData.center[2] = center;
+ cornuData.angle[2] = NormalizeAngle(180.0+angle);
+ cornuData.radius[2] = radius;
+ cornuData.pos[4] = pos;
+ cornuData.center[4] = center;
+ cornuData.angle[4] = NormalizeAngle(180.0+angle);
+ cornuData.radius[4] = radius;
+
+ static dynArr_t cornuSegs_da;
+
+ ClearSegs(&tempSegs_da);
+ ClearSegs(&cornuSegs_da);
+
+ /* Override if at zero radius at base don't compute end */
+ if (cornuData.radius[0] == 0.0) {
+ DYNARR_APPEND(trkSeg_t,tempSegs_da,1);
+ trkSeg_p temp_p = &DYNARR_LAST(trkSeg_t,tempSegs_da);
+ temp_p->type = SEG_STRTRK;
+ temp_p->color = wDrawColorBlack;
+ temp_p->lineWidth = 0.0;
+ temp_p->u.l.pos[0] = zero;
+ temp_p->u.l.pos[1] = cornuData.pos[1];
+ LOG( log_cornuturnoutdesigner, 1, ( "ctoDes1: P0(%f,%f) P1(%f,%f) \n", \
+ temp_p->u.l.pos[0].x,temp_p->u.l.pos[0].y,temp_p->u.l.pos[1].x,
+ temp_p->u.l.pos[1].y ) );
+ } else {
+ DYNARR_APPEND(trkSeg_t,tempSegs_da,1);
+ trkSeg_p temp_p = &DYNARR_LAST(trkSeg_t,tempSegs_da);
+ temp_p->type = SEG_CRVTRK;
+ temp_p->color = wDrawColorBlack;
+ temp_p->lineWidth = 0.0;
+ temp_p->u.c.radius = -radii[0];
+ if (radii[0]>0.0) {
+ temp_p->u.c.a0 = FindAngle(end_centers[0],end_points[0]);
} else {
- DYNARR_APPEND(trkSeg_t,tempSegs_da,1);
- temp_p = &DYNARR_LAST(trkSeg_t,tempSegs_da);
- temp_p->type = SEG_CRVTRK;
- temp_p->color = wDrawColorBlack;
- temp_p->width = 0.0;
- temp_p->u.c.radius = -radii[0];
- if (radii[0]>0.0)
- temp_p->u.c.a0 = FindAngle(end_centers[0],end_points[0]);
- else
- temp_p->u.c.a0 = FindAngle(end_centers[0],points[0]);
- temp_p->u.c.a1 = fabs(end_arcs[0]);
- temp_p->u.c.center = end_centers[0];
- coOrd rp0,rp1;
- Translate(&rp0,temp_p->u.c.center,temp_p->u.c.a0,temp_p->u.c.radius);
- Translate(&rp1,temp_p->u.c.center,temp_p->u.c.a0+temp_p->u.c.a1,temp_p->u.c.radius);
-LogPrintf( "ctoDes1: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f), EP(%f,%f) RP0(%f,%f) RP1(%f,%f)\n",
- temp_p->u.c.radius,temp_p->u.c.a0,temp_p->u.c.a1,temp_p->u.c.center.x,temp_p->u.c.center.y,
- points[0].x,points[0].y,end_points[0].x,end_points[0].y,
- rp0.x,rp0.y,rp1.x,rp1.y);
-
- /* Base to Toe in tempSegs array */
- CallCornuNoBez(&cornuData.pos[0],&cornuData.center[0],& cornuData.angle[0],&cornuData.radius[0],&tempSegs_da);
+ temp_p->u.c.a0 = FindAngle(end_centers[0],points[0]);
}
+ temp_p->u.c.a1 = fabs(end_arcs[0]);
+ temp_p->u.c.center = end_centers[0];
+ coOrd rp0,rp1;
+ Translate(&rp0,temp_p->u.c.center,temp_p->u.c.a0,temp_p->u.c.radius);
+ Translate(&rp1,temp_p->u.c.center,temp_p->u.c.a0+temp_p->u.c.a1,
+ temp_p->u.c.radius);
+ LOG( log_cornuturnoutdesigner, 1,
+ ( "ctoDes1: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f), EP(%f,%f) RP0(%f,%f) RP1(%f,%f)\n",
+ \
+ temp_p->u.c.radius,temp_p->u.c.a0,temp_p->u.c.a1,temp_p->u.c.center.x,
+ temp_p->u.c.center.y, \
+ points[0].x,points[0].y,end_points[0].x,end_points[0].y, \
+ rp0.x,rp0.y,rp1.x,rp1.y) );
+
+ /* Base to Toe in tempSegs array */
+ CallCornuNoBez(&cornuData.pos[0],&cornuData.center[0],& cornuData.angle[0],
+ &cornuData.radius[0],&tempSegs_da);
+ }
- int ToeSeg = tempSegs_da.cnt;
-
- /* Toe to Outer in cornuSegs array */
- CallCornuNoBez(&cornuData.pos[2],&cornuData.center[2],&cornuData.angle[2],&cornuData.radius[2],&cornuSegs_da);
-
- cornu_p = (trkSeg_p)cornuSegs_da.ptr;
-
- if (cornuData.radius[3] == 0.0) {
- DYNARR_APPEND(trkSeg_t,cornuSegs_da,1);
- temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
- temp_p->type = SEG_STRTRK;
- temp_p->color = wDrawColorBlack;
- temp_p->width = 0.0;
- temp_p->u.l.pos[0] = cornuData.pos[3];
- temp_p->u.l.pos[1] = end_points[2];
-LogPrintf( "ctoDes2: P0(%f,%f) P1(%f,%f) \n",
- temp_p->u.l.pos[0].x,temp_p->u.l.pos[0].y,temp_p->u.l.pos[1].x,temp_p->u.l.pos[1].y );
+ int ToeSeg = tempSegs_da.cnt;
+
+ /* Toe to Outer in cornuSegs array */
+ CallCornuNoBez(&cornuData.pos[2],&cornuData.center[2],&cornuData.angle[2],
+ &cornuData.radius[2],&cornuSegs_da);
+ if (cornuData.radius[3] == 0.0) {
+ DYNARR_APPEND(trkSeg_t,cornuSegs_da,1);
+ trkSeg_p temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
+ temp_p->type = SEG_STRTRK;
+ temp_p->color = wDrawColorBlack;
+ temp_p->lineWidth = 0.0;
+ temp_p->u.l.pos[0] = cornuData.pos[3];
+ temp_p->u.l.pos[1] = end_points[2];
+ LOG( log_cornuturnoutdesigner, 1, ( "ctoDes2: P0(%f,%f) P1(%f,%f) \n", \
+ temp_p->u.l.pos[0].x,temp_p->u.l.pos[0].y,temp_p->u.l.pos[1].x,
+ temp_p->u.l.pos[1].y ) );
+ } else {
+ DYNARR_APPEND(trkSeg_t,cornuSegs_da,1);
+ trkSeg_p temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
+ temp_p->type = SEG_CRVTRK;
+ temp_p->color = wDrawColorBlack;
+ temp_p->lineWidth = 0.0;
+ temp_p->u.c.radius = -radii[2];
+ if (radii[2]>0) {
+ temp_p->u.c.a0 = FindAngle(end_centers[2],points[2]);
} else {
- DYNARR_APPEND(trkSeg_t,cornuSegs_da,1);
- temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
- temp_p->type = SEG_CRVTRK;
- temp_p->color = wDrawColorBlack;
- temp_p->width = 0.0;
- temp_p->u.c.radius = -radii[2];
- if (radii[2]>0)
- temp_p->u.c.a0 = FindAngle(end_centers[2],points[2]);
- else
- temp_p->u.c.a0 = FindAngle(end_centers[2],end_points[2]);
- temp_p->u.c.a1 = fabs(end_arcs[2]);
- temp_p->u.c.center = end_centers[2];
- coOrd rp0,rp1;
- Translate(&rp0,temp_p->u.c.center,temp_p->u.c.a0,temp_p->u.c.radius);
- Translate(&rp1,temp_p->u.c.center,temp_p->u.c.a0+temp_p->u.c.a1,temp_p->u.c.radius);
-LogPrintf( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f) RP1(%f,%f)\n",
- temp_p->u.c.radius,temp_p->u.c.a0,temp_p->u.c.a1,temp_p->u.c.center.x,temp_p->u.c.center.y,
- points[2].x,points[2].y,end_points[2].x,end_points[2].y,
- rp0.x,rp0.y,rp1.x,rp1.y);
+ temp_p->u.c.a0 = FindAngle(end_centers[2],end_points[2]);
}
+ temp_p->u.c.a1 = fabs(end_arcs[2]);
+ temp_p->u.c.center = end_centers[2];
+ coOrd rp0,rp1;
+ Translate(&rp0,temp_p->u.c.center,temp_p->u.c.a0,temp_p->u.c.radius);
+ Translate(&rp1,temp_p->u.c.center,temp_p->u.c.a0+temp_p->u.c.a1,
+ temp_p->u.c.radius);
+ LOG( log_cornuturnoutdesigner, 1,
+ ( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f) RP1(%f,%f)\n",
+ \
+ temp_p->u.c.radius,temp_p->u.c.a0,temp_p->u.c.a1,temp_p->u.c.center.x,
+ temp_p->u.c.center.y, \
+ points[2].x,points[2].y,end_points[2].x,end_points[2].y, \
+ rp0.x,rp0.y,rp1.x,rp1.y) );
+ }
- int OuterEndSeg = cornuSegs_da.cnt + ToeSeg;
-
- /* Add to second cornu to tempSegs array */
- AppendSegs(&tempSegs_da,&cornuSegs_da);
-
- /* Get ready to reuse cornuSegs array*/
- ClearSegs(&cornuSegs_da);
-
- /* Toe to Inner in cornuSegs array*/
- CallCornuNoBez(&cornuData.pos[4],&cornuData.center[4],&cornuData.angle[4],&cornuData.radius[4],&cornuSegs_da);
-
- if (cornuData.radius[5] == 0.0) {
- DYNARR_APPEND(trkSeg_t,cornuSegs_da,1);
- temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
- temp_p->type = SEG_STRTRK;
- temp_p->color = wDrawColorBlack;
- temp_p->width = 0.0;
- temp_p->u.l.pos[0] = cornuData.pos[5];
- temp_p->u.l.pos[1] = points[1];
-LogPrintf( "ctoDes3: P0(%f,%f) P1(%f,%f) \n",
- temp_p->u.l.pos[0].x,temp_p->u.l.pos[0].y,temp_p->u.l.pos[1].x,temp_p->u.l.pos[1].y );
+ int OuterEndSeg = cornuSegs_da.cnt + ToeSeg;
+
+ /* Add to second cornu to tempSegs array */
+ AppendSegs(&tempSegs_da,&cornuSegs_da);
+
+ /* Get ready to reuse cornuSegs array*/
+ ClearSegs(&cornuSegs_da);
+
+ /* Toe to Inner in cornuSegs array*/
+ CallCornuNoBez(&cornuData.pos[4],&cornuData.center[4],&cornuData.angle[4],
+ &cornuData.radius[4],&cornuSegs_da);
+
+ if (cornuData.radius[5] == 0.0) {
+ DYNARR_APPEND(trkSeg_t,cornuSegs_da,1);
+ trkSeg_p temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
+ temp_p->type = SEG_STRTRK;
+ temp_p->color = wDrawColorBlack;
+ temp_p->lineWidth = 0.0;
+ temp_p->u.l.pos[0] = cornuData.pos[5];
+ temp_p->u.l.pos[1] = points[1];
+ LOG( log_cornuturnoutdesigner, 1, ( "ctoDes3: P0(%f,%f) P1(%f,%f) \n", \
+ temp_p->u.l.pos[0].x,temp_p->u.l.pos[0].y,temp_p->u.l.pos[1].x,
+ temp_p->u.l.pos[1].y ) );
+ } else {
+ DYNARR_APPEND(trkSeg_t,cornuSegs_da,1);
+ trkSeg_p temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
+ temp_p->type = SEG_CRVTRK;
+ temp_p->color = wDrawColorBlack;
+ temp_p->lineWidth = 0.0;
+ temp_p->u.c.radius = -radii[1];
+ if (radii[1]>0) {
+ temp_p->u.c.a0 = FindAngle(end_centers[1],points[1]);
} else {
- DYNARR_APPEND(trkSeg_t,cornuSegs_da,1);
- temp_p = &DYNARR_LAST(trkSeg_t,cornuSegs_da);
- temp_p->type = SEG_CRVTRK;
- temp_p->color = wDrawColorBlack;
- temp_p->width = 0.0;
- temp_p->u.c.radius = -radii[1];
- if (radii[1]>0)
- temp_p->u.c.a0 = FindAngle(end_centers[1],points[1]);
- else
- temp_p->u.c.a0 = FindAngle(end_centers[1],end_points[1]);
- temp_p->u.c.a1 = fabs(end_arcs[1]);
- temp_p->u.c.center = end_centers[1];
- coOrd rp0,rp1;
- Translate(&rp0,temp_p->u.c.center,temp_p->u.c.a0,temp_p->u.c.radius);
- Translate(&rp1,temp_p->u.c.center,temp_p->u.c.a0+temp_p->u.c.a1,temp_p->u.c.radius);
-LogPrintf( "ctoDes3: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f) RP1(%f,%f)\n",
- temp_p->u.c.radius,temp_p->u.c.a0,temp_p->u.c.a1,temp_p->u.c.center.x,temp_p->u.c.center.y,
- points[1].x,points[1].y,end_points[1].x,end_points[1].y,
- rp0.x,rp0.y,rp1.x,rp1.y);
+ temp_p->u.c.a0 = FindAngle(end_centers[1],end_points[1]);
}
+ temp_p->u.c.a1 = fabs(end_arcs[1]);
+ temp_p->u.c.center = end_centers[1];
+ coOrd rp0,rp1;
+ Translate(&rp0,temp_p->u.c.center,temp_p->u.c.a0,temp_p->u.c.radius);
+ Translate(&rp1,temp_p->u.c.center,temp_p->u.c.a0+temp_p->u.c.a1,
+ temp_p->u.c.radius);
+ LOG( log_cornuturnoutdesigner, 1,
+ ( "ctoDes3: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f) RP1(%f,%f)\n",
+ \
+ temp_p->u.c.radius,temp_p->u.c.a0,temp_p->u.c.a1,temp_p->u.c.center.x,
+ temp_p->u.c.center.y, \
+ points[1].x,points[1].y,end_points[1].x,end_points[1].y, \
+ rp0.x,rp0.y,rp1.x,rp1.y) );
+ }
- int InnerEndSeg = cornuSegs_da.cnt + OuterEndSeg;
+ int InnerEndSeg = cornuSegs_da.cnt + OuterEndSeg;
- /*Add Third Part to tempSegs Array */
- AppendSegs(&tempSegs_da,&cornuSegs_da);
+ /*Add Third Part to tempSegs Array */
+ AppendSegs(&tempSegs_da,&cornuSegs_da);
- /* Safety - clear out cornu Array */
- ClearSegs(&cornuSegs_da);
+ /* Safety - clear out cornu Array */
+ ClearSegs(&cornuSegs_da);
- if (tempSegs_da.cnt >128 ) {
- NoticeMessage( MSG_TODSGN_CORNU_TOO_COMPLEX, _("Ok"), NULL );
- return NULL;
- }
+ if (tempSegs_da.cnt >128 ) {
+ NoticeMessage( MSG_TODSGN_CORNU_TOO_COMPLEX, _("Ok"), NULL );
+ return NULL;
+ }
- static char pathChar[512];
- strcpy(pathChar,"Normal"); /* Also resets array */
+ static char pathChar[512];
+ strcpy(pathChar,"Normal"); /* Also resets array */
- pathLen = (wIndex_t)strlen(pathChar)+1;
+ pathLen = (wIndex_t)strlen(pathChar)+1;
- for (uint8_t i=0;i<OuterEndSeg;i++) {
- pathChar[pathLen] = i+1;
- pathLen++;
- }
- pathChar[pathLen] = 0;
- pathLen++;
- pathChar[pathLen] = 0;
+ for (uint8_t i=0; i<OuterEndSeg; i++) {
+ pathChar[pathLen] = i+1;
pathLen++;
+ }
+ pathChar[pathLen] = 0;
+ pathLen++;
+ pathChar[pathLen] = 0;
+ pathLen++;
- sprintf(&pathChar[pathLen],"%s","Reverse");
+ sprintf(&pathChar[pathLen],"%s","Reverse");
- pathLen += (wIndex_t)strlen(&pathChar[pathLen])+1;
- for (uint8_t i=0;i<ToeSeg;i++) {
- pathChar[pathLen] = i+1;
- pathLen++;
- }
- for (uint8_t i=OuterEndSeg;i<InnerEndSeg;i++) {
- pathChar[pathLen] = i+1;
- pathLen++;
- }
- pathChar[pathLen] = 0;
+ pathLen += (wIndex_t)strlen(&pathChar[pathLen])+1;
+ for (uint8_t i=0; i<ToeSeg; i++) {
+ pathChar[pathLen] = i+1;
pathLen++;
- pathChar[pathLen] = 0;
+ }
+ for (uint8_t i=OuterEndSeg; i<InnerEndSeg; i++) {
+ pathChar[pathLen] = i+1;
pathLen++;
- pathChar[pathLen] = 0;
- pathLen++;
-
- pp->paths = (signed char *)pathChar;
- segCnt = tempSegs_da.cnt;
+ }
+ pathChar[pathLen] = 0;
+ pathLen++;
+ pathChar[pathLen] = 0;
+ pathLen++;
+ pathChar[pathLen] = 0;
+ pathLen++;
+
+ pp->paths = (signed char *)pathChar;
+ segCnt = tempSegs_da.cnt;
}
#endif
- if (!( (dp->type== NTO_CORNU) || (dp->type == NTO_CORNUWYE) || (dp->type == NTO_CORNU3WAY))) {
+ if (!( (dp->type== NTO_CORNU) || (dp->type == NTO_CORNUWYE)
+ || (dp->type == NTO_CORNU3WAY))) {
segOrder = pp->segOrder;
segCnt = (wIndex_t)strlen( segOrder );
- if (segCnt%3 != 0)
- AbortProg( dp->label );
+ CHECKMSG( segCnt%3 == 0, ( "%s", dp->label ) );
segCnt /= 3;
DYNARR_SET( trkSeg_t, tempSegs_da, segCnt );
- tempSegs_da.cnt = segCnt;
memset( &tempSegs(0), 0, segCnt * sizeof tempSegs(0) );
for ( s=0; s<segCnt; s++ ) {
segPtr = &tempSegs(s);
segPtr->color = wDrawColorBlack;
- if (*segOrder <= '9')
+ if (*segOrder <= '9') {
p0 = *segOrder++ - '0';
- else
+ } else {
p0 = *segOrder++ - 'A' + 10;
- if (*segOrder <= '9')
+ }
+ if (*segOrder <= '9') {
p1 = *segOrder++ - '0';
- else
+ } else {
p1 = *segOrder++ - 'A' + 10;
+ }
p = *segOrder++ - '0';
if (p == 3) {
/* cornu */
@@ -2459,18 +2655,21 @@ LogPrintf( "ctoDes3: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f)
AddRoadbed();
#ifndef MKTURNOUT
- if ( CheckPaths( segCnt, &tempSegs(0), pp->paths ) < 0 )
+ if ( CheckPaths( segCnt, &tempSegs(0), pp->paths, dp->label ) < 0 ) {
return NULL;
+ }
#endif
return pp;
}
+#ifndef MKTURNOUT
static void CopyNonTracks( turnoutInfo_t * to )
{
trkSeg_p sp0;
for ( sp0=to->segs; sp0<&to->segs[to->segCnt]; sp0++ ) {
- if ( sp0->type != SEG_STRTRK && sp0->type != SEG_CRVTRK && sp0->type != SEG_BEZTRK ) {
+ if ( sp0->type != SEG_STRTRK && sp0->type != SEG_CRVTRK
+ && sp0->type != SEG_BEZTRK ) {
DYNARR_APPEND( trkSeg_t, tempSegs_da, 10 );
tempSegs(tempSegs_da.cnt-1) = *sp0;
}
@@ -2478,9 +2677,8 @@ static void CopyNonTracks( turnoutInfo_t * to )
}
-#ifndef MKTURNOUT
static void NewTurnPrint(
- void * junk )
+ void * junk )
{
coOrd pos, p0, p1;
WDOUBLE_T px, py;
@@ -2499,12 +2697,15 @@ static void NewTurnPrint(
0.0,
{ 0.0, 0.0 },
{ 0.0, 0.0 },
- Pix2CoOrd, CoOrd2Pix };
+ Pix2CoOrd, CoOrd2Pix
+ };
- if ((pp=LoadSegs( curDesign, TRUE )) == NULL)
+ if ((pp=LoadSegs( curDesign, TRUE )) == NULL) {
return;
- if (includeNontrackSegments && customTurnout1)
+ }
+ if (includeNontrackSegments && customTurnout1) {
CopyNonTracks( customTurnout1 );
+ }
GetSegBounds( zero, 0.0, tempSegs_da.cnt, &tempSegs(0), &orig, &size );
tmp = orig.x; orig.x = orig.y; orig.y = tmp;
@@ -2522,19 +2723,23 @@ static void NewTurnPrint(
case SEG_CRVTRK:
case SEG_CRVLIN:
PointOnCircle( &pos[0], segPtr->u.c.center, segPtr->u.c.radius,
- segPtr->u.c.a0 );
+ segPtr->u.c.a0 );
PointOnCircle( &pos[1], segPtr->u.c.center, segPtr->u.c.radius,
- segPtr->u.c.a0+segPtr->u.c.a1 );
+ segPtr->u.c.a0+segPtr->u.c.a1 );
}
for ( ep=0; ep<2; ep++ ) {
- if (pos[ep].x < orig.x)
+ if (pos[ep].x < orig.x) {
orig.x = pos[ep].x;
- if (pos[ep].x > size.x)
+ }
+ if (pos[ep].x > size.x) {
size.x = pos[ep].x;
- if (pos[ep].y < orig.y)
+ }
+ if (pos[ep].y < orig.y) {
orig.y = pos[ep].y;
- if (pos[ep].y > size.y)
+ }
+ if (pos[ep].y > size.y) {
size.y = pos[ep].y;
+ }
}
}
@@ -2548,8 +2753,9 @@ static void NewTurnPrint(
newTurnout_d.size.y = py;
ii = (int)(size.y/newTurnout_d.size.x)+1;
jj = (int)(size.x/newTurnout_d.size.y)+1;
- if ( !wPrintDocStart( sTurnoutDesignerW, ii*jj, NULL ) )
+ if ( !wPrintDocStart( sTurnoutDesignerW, ii*jj, NULL ) ) {
return;
+ }
#ifdef LATER
orig.x -= (0.5);
orig.y -= (jj*newTurnout_d.size.y-size.y)/2.0;
@@ -2558,9 +2764,9 @@ static void NewTurnPrint(
orig.y -= (0.5);
coOrd strPos;
for ( i=0, newTurnout_d.orig.x=orig.x; i<ii;
- i++, newTurnout_d.orig.x+=newTurnout_d.size.x ) {
+ i++, newTurnout_d.orig.x+=newTurnout_d.size.x ) {
for ( j=0, newTurnout_d.orig.y=orig.y; j<jj;
- j++, newTurnout_d.orig.y+=newTurnout_d.size.y ) {
+ j++, newTurnout_d.orig.y+=newTurnout_d.size.y ) {
newTurnout_d.d = wPrintPageStart();
newTurnout_d.dpi = wDrawGetDPI(newTurnout_d.d);
strPos.x = newTurnout_d.orig.x + 3.0;
@@ -2578,45 +2784,52 @@ static void NewTurnPrint(
for ( p=0; p<curDesign->floatCnt; p++ ) {
tmpR = *(FLOAT_T*)(turnDesignPLs[curDesign->floats[p].index].valueP);
sprintf( message, "%s: %s",
- (curDesign->floats[p].mode!=Frog_e||newTurnAngleMode!=0)?_(curDesign->floats[p].printLabel):_("Frog Number"),
- curDesign->floats[p].mode==Dim_e?
- FormatDistance(tmpR):
- FormatFloat(tmpR) );
+ (curDesign->floats[p].mode!=Frog_e
+ ||newTurnAngleMode!=0)?_(curDesign->floats[p].printLabel):_("Frog Number"),
+ curDesign->floats[p].mode==Dim_e?
+ FormatDistance(tmpR):
+ FormatFloat(tmpR) );
strPos.y -= 0.25;
DrawString( &newTurnout_d, strPos, 0.0, message, fp, 16, wDrawColorBlack );
}
if (newTurnLeftDesc[0] || newTurnLeftPartno[0]) {
- sprintf( message, "%s %s %s", newTurnManufacturer, newTurnLeftPartno, newTurnLeftDesc );
+ sprintf( message, "%s %s %s", newTurnManufacturer, newTurnLeftPartno,
+ newTurnLeftDesc );
strPos.y -= 0.25;
DrawString( &newTurnout_d, strPos, 0.0, message, fp, 16, wDrawColorBlack );
}
if (newTurnRightDesc[0] || newTurnRightPartno[0]) {
- sprintf( message, "%s %s %s", newTurnManufacturer, newTurnRightPartno, newTurnRightDesc );
+ sprintf( message, "%s %s %s", newTurnManufacturer, newTurnRightPartno,
+ newTurnRightDesc );
strPos.y -= 0.25;
DrawString( &newTurnout_d, strPos, 0.0, message, fp, 16, wDrawColorBlack );
}
- DrawRectangle( &newTurnout_d, newTurnout_d.orig, newTurnout_d.size, wDrawColorBlack, DRAW_CLOSED );
+ DrawRectangle( &newTurnout_d, newTurnout_d.orig, newTurnout_d.size,
+ wDrawColorBlack, DRAW_CLOSED );
- DrawSegs( &newTurnout_d, zero, 270.0, &tempSegs(0), tempSegs_da.cnt, newTurnTrackGauge, wDrawColorBlack );
+ DrawSegsDA( &newTurnout_d, NULL, zero, 270.0, &tempSegs_da, newTurnTrackGauge,
+ wDrawColorBlack, 0 );
- for ( ep=0; ep<tempEndPts_da.cnt; ep++ ) {
- pos.x = -tempEndPts(ep).pos.y;
- pos.y = tempEndPts(ep).pos.x;
- Translate( &p0, pos, tempEndPts(ep).angle+90+270.0,
- newTurnTrackGauge );
- Translate( &p1, pos, tempEndPts(ep).angle+270+270.0,
- newTurnTrackGauge );
+ for ( ep=0; ep<TempEndPtsCount(); ep++ ) {
+ pos.x = - GetEndPtPos( TempEndPt(ep) ).y;
+ pos.y = GetEndPtPos( TempEndPt(ep) ).x;
+ ANGLE_T angle = GetEndPtAngle( TempEndPt(ep) );
+ Translate( &p0, pos, angle+90+270.0,
+ newTurnTrackGauge );
+ Translate( &p1, pos, angle+270+270.0,
+ newTurnTrackGauge );
DrawLine( &newTurnout_d, p0, p1, 0, wDrawColorBlack );
- Translate( &p0, pos, tempEndPts(ep).angle+270.0,
- newTurnout_d.size.y/2.0 );
+ Translate( &p0, pos, angle+270.0,
+ newTurnout_d.size.y/2.0 );
DrawStraightTrack( &newTurnout_d, pos, p0,
- tempEndPts(ep).angle+270.0,
- NULL, wDrawColorBlack, 0 );
+ angle+270.0,
+ NULL, wDrawColorBlack, 0 );
}
- if ( !wPrintPageEnd( newTurnout_d.d ) )
+ if ( !wPrintPageEnd( newTurnout_d.d ) ) {
goto quitPrinting;
+ }
}
}
quitPrinting:
@@ -2624,27 +2837,45 @@ quitPrinting:
}
#endif
+
+static char * BuildTrimedTitle( char * cp, const char * sep, const char * mfg,
+ const char * desc, const char * partno )
+{
+ cp = Strcpytrimed( cp, mfg, FALSE );
+ strcpy( cp, sep );
+ cp += strlen(cp);
+ cp = Strcpytrimed( cp, desc, FALSE );
+ strcpy( cp, sep );
+ cp += strlen(cp);
+ cp = Strcpytrimed( cp, partno, FALSE );
+ return cp;
+}
+
static void NewTurnOk( void * context )
{
FILE * f;
toDesignSchema_t * pp;
int i;
- BOOL_T foundR=FALSE;
char * cp;
#ifndef MKTURNOUT
+ BOOL_T foundR=FALSE;
turnoutInfo_t *to;
#endif
FLOAT_T flt;
- wIndex_t segCnt;
char * customInfoP;
+ coOrd pos;
+ ANGLE_T angle;
+
#ifndef MKTURNOUT
- if ( ! ParamCheckInputs( &turnDesignPG, (wControl_p)turnDesignPG.okB ) )
+ if ( ! ParamCheckInputs( &turnDesignPG, (wControl_p)turnDesignPG.okB ) ) {
return;
+ }
#endif
- if ((pp=LoadSegs( curDesign, TRUE )) == NULL)
+ if ((pp=LoadSegs( curDesign, TRUE )) == NULL) {
return;
+ }
// if ( (curDesign->strCnt >= 1 && newTurnLeftDesc[0] == 0) ||
// (curDesign->strCnt >= 2 && newTurnRightDesc[0] == 0) ) {
@@ -2652,12 +2883,14 @@ static void NewTurnOk( void * context )
// return;
// }
- BuildTrimedTitle( message, "\t", newTurnManufacturer, newTurnLeftDesc, newTurnLeftPartno );
+ BuildTrimedTitle( message, "\t", newTurnManufacturer, newTurnLeftDesc,
+ newTurnLeftPartno );
#ifndef MKTURNOUT
if ( customTurnout1 == NULL &&
- ( foundR || FindCompound( FIND_TURNOUT, newTurnScaleName, message ) ) ) {
- if ( !NoticeMessage( MSG_TODSGN_REPLACE, _("Yes"), _("No") ) )
+ ( foundR || FindCompound( FIND_TURNOUT, newTurnScaleName, message ) ) ) {
+ if ( !NoticeMessage( MSG_TODSGN_REPLACE, _("Yes"), _("No") ) ) {
return;
+ }
}
SetCLocale();
#endif
@@ -2665,7 +2898,7 @@ static void NewTurnOk( void * context )
f = OpenCustom("a");
sprintf( tempCustom, "\"%s\" \"%s\" \"",
- curDesign->label, "" );
+ curDesign->label, "" );
cp = tempCustom + strlen(tempCustom);
cp = Strcpytrimed( cp, newTurnManufacturer, TRUE );
strcpy( cp, "\" \"" );
@@ -2676,7 +2909,8 @@ static void NewTurnOk( void * context )
cp = Strcpytrimed( cp, newTurnLeftPartno, TRUE );
strcpy( cp, "\"" );
cp += 1;
- if (curDesign->type == NTO_REGULAR || curDesign->type == NTO_CURVED || curDesign->type == NTO_CORNU ) {
+ if (curDesign->type == NTO_REGULAR || curDesign->type == NTO_CURVED
+ || curDesign->type == NTO_CORNU ) {
strcpy( cp, " \"" );
cp += 2;
cp = Strcpytrimed( cp, newTurnRightDesc, TRUE );
@@ -2686,59 +2920,64 @@ static void NewTurnOk( void * context )
strcpy( cp, "\"" );
cp += 1;
}
- if ( cp-tempCustom > sizeof tempCustom )
- AbortProg( "Custom line overflow" );
+ CHECK( cp-tempCustom <= sizeof tempCustom );
for ( i=0; i<curDesign->floatCnt; i++ ) {
flt = *(FLOAT_T*)(turnDesignPLs[curDesign->floats[i].index].valueP);
switch( curDesign->floats[i].mode ) {
- case Dim_e:
- flt = ( flt );
- break;
- case Frog_e:
- if (newTurnAngleMode == 0 && flt > 0.0)
- flt = R2D(asin(1.0/flt));
- break;
- case Angle_e:
- break;
- case Rad_e:
- break;
+ case Dim_e:
+ flt = ( flt );
+ break;
+ case Frog_e:
+ if (newTurnAngleMode == 0 && flt > 0.0) {
+ flt = R2D(asin(1.0/flt));
+ }
+ break;
+ case Angle_e:
+ break;
+ case Rad_e:
+ break;
}
sprintf( cp, " %0.6f", flt );
cp += strlen(cp);
}
- sprintf( cp, " %0.6f %0.6f %ld", newTurnRoadbedWidth, newTurnRoadbedLineWidth/(_DPI), wDrawGetRGB(roadbedColor) );
+ sprintf( cp, " %0.6f %0.6f %ld", newTurnRoadbedWidth,
+ newTurnRoadbedLineWidth, wDrawGetRGB(newTurnRoadbedColor) );
customInfoP = MyStrdup( tempCustom );
strcpy( tempCustom, message );
- segCnt = tempSegs_da.cnt;
long options = 0;
- if ( curDesign->type == NTO_D_SLIP && newTurnSlipMode == 1)
+ if ( curDesign->type == NTO_D_SLIP && newTurnSlipMode == 1) {
options |= COMPOUND_OPTION_PATH_NOCOMBINE;
+ }
#ifndef MKTURNOUT
- if (includeNontrackSegments && customTurnout1)
+ if (includeNontrackSegments && customTurnout1) {
CopyNonTracks( customTurnout1 );
- if ( customTurnout1 )
+ }
+ if ( customTurnout1 ) {
customTurnout1->segCnt = 0;
+ }
- DIST_T * radii_ends = NULL;
+// DIST_T * radii_ends = NULL;
- if ((curDesign->type == NTO_CORNU) ||
- (curDesign->type == NTO_CORNUWYE) ||
- (curDesign->type == NTO_CORNU3WAY)) {
- radii_ends = &radii[0];
- }
- to = CreateNewTurnout( newTurnScaleName, tempCustom, tempSegs_da.cnt, &tempSegs(0),
- pp->paths, tempEndPts_da.cnt, &tempEndPts(0), FALSE, options );
+ if ((curDesign->type == NTO_CORNU) ||
+ (curDesign->type == NTO_CORNUWYE) ||
+ (curDesign->type == NTO_CORNU3WAY)) {
+// radii_ends = &radii[0];
+ }
+ to = CreateNewTurnout( newTurnScaleName, tempCustom, tempSegs_da.cnt,
+ &tempSegs(0),
+ pp->paths, TempEndPtsCount(), TempEndPt(0), FALSE, options );
to->customInfo = customInfoP;
#endif
if (f) {
- fprintf( f, "TURNOUT %s \"%s\" %ld\n", newTurnScaleName, PutTitle(tempCustom), options );
+ fprintf( f, "TURNOUT %s \"%s\" %ld\n", newTurnScaleName, PutTitle(tempCustom),
+ options );
#ifdef MKTURNOUT
if (doCustomInfoLine)
#endif
- fprintf( f, "\tU %s\n", customInfoP );
+ fprintf( f, "\tU %s\n", customInfoP );
WriteCompoundPathsEndPtsSegs( f, pp->paths, tempSegs_da.cnt, &tempSegs(0),
- tempEndPts_da.cnt, &tempEndPts(0) );
+ TempEndPtsCount(), TempEndPt(0) );
}
switch (curDesign->type) {
@@ -2748,26 +2987,34 @@ static void NewTurnOk( void * context )
points[4].y = - points[4].y;
radii[0] = - radii[0];
LoadSegs( curDesign, FALSE );
- tempEndPts(2).pos.y = - tempEndPts(2).pos.y;
- tempEndPts(2).angle = 180.0 - tempEndPts(2).angle;
- BuildTrimedTitle( tempCustom, "\t", newTurnManufacturer, newTurnRightDesc, newTurnRightPartno );
- tempSegs_da.cnt = segCnt;
+ pos = GetEndPtPos(TempEndPt(2));
+ angle = GetEndPtAngle(TempEndPt(2));
+ pos.y = - pos.y;
+ angle = 180.0 - angle;
+ SetEndPt(TempEndPt(2), pos, angle );
+ BuildTrimedTitle( tempCustom, "\t", newTurnManufacturer, newTurnRightDesc,
+ newTurnRightPartno );
#ifndef MKTURNOUT
- if (includeNontrackSegments && customTurnout2)
+ if (includeNontrackSegments && customTurnout2) {
CopyNonTracks( customTurnout2 );
- if ( customTurnout2 )
+ }
+ if ( customTurnout2 ) {
customTurnout2->segCnt = 0;
- to = CreateNewTurnout( newTurnScaleName, tempCustom, tempSegs_da.cnt, &tempSegs(0),
- pp->paths, tempEndPts_da.cnt, &tempEndPts(0), FALSE, options );
+ }
+ to = CreateNewTurnout( newTurnScaleName, tempCustom, tempSegs_da.cnt,
+ &tempSegs(0),
+ pp->paths, TempEndPtsCount(), TempEndPt(0), FALSE, options );
to->customInfo = customInfoP;
#endif
if (f) {
- fprintf( f, "TURNOUT %s \"%s\" %ld\n", newTurnScaleName, PutTitle(tempCustom), options );
+ fprintf( f, "TURNOUT %s \"%s\" %ld\n", newTurnScaleName, PutTitle(tempCustom),
+ options );
#ifdef MKTURNOUT
if (doCustomInfoLine)
#endif
- fprintf( f, "\tU %s\n", customInfoP );
- WriteCompoundPathsEndPtsSegs( f, pp->paths, tempSegs_da.cnt, &tempSegs(0), tempEndPts_da.cnt, &tempEndPts(0) );
+ fprintf( f, "\tU %s\n", customInfoP );
+ WriteCompoundPathsEndPtsSegs( f, pp->paths, tempSegs_da.cnt, &tempSegs(0),
+ TempEndPtsCount(), TempEndPt(0) );
}
break;
case NTO_CURVED:
@@ -2793,28 +3040,39 @@ static void NewTurnOk( void * context )
angles[5] = -angles[5];
angles[6] = -angles[6];
LoadSegs( curDesign, FALSE );
- tempEndPts(1).pos.y = - tempEndPts(1).pos.y;
- tempEndPts(1).angle = 180.0 - tempEndPts(1).angle;
- tempEndPts(2).pos.y = - tempEndPts(2).pos.y;
- tempEndPts(2).angle = 180.0 - tempEndPts(2).angle;
- BuildTrimedTitle( tempCustom, "\t", newTurnManufacturer, newTurnRightDesc, newTurnRightPartno );
- //tempSegs_da.cnt = segCnt;
+ pos = GetEndPtPos(TempEndPt(1));
+ angle = GetEndPtAngle(TempEndPt(1));
+ pos.y = - pos.y;
+ angle = 180.0 - angle;
+ SetEndPt( TempEndPt(1), pos, angle );
+ pos = GetEndPtPos(TempEndPt(2));
+ angle = GetEndPtAngle(TempEndPt(2));
+ pos.y = - pos.y;
+ angle = 180.0 - angle;
+ SetEndPt( TempEndPt(2), pos, angle );
+ BuildTrimedTitle( tempCustom, "\t", newTurnManufacturer, newTurnRightDesc,
+ newTurnRightPartno );
#ifndef MKTURNOUT
- if (includeNontrackSegments && customTurnout2)
+ if (includeNontrackSegments && customTurnout2) {
CopyNonTracks( customTurnout2 );
- if ( customTurnout2 )
+ }
+ if ( customTurnout2 ) {
customTurnout2->segCnt = 0;
- to = CreateNewTurnout( newTurnScaleName, tempCustom, tempSegs_da.cnt, &tempSegs(0),
- pp->paths, tempEndPts_da.cnt, &tempEndPts(0), FALSE, options );
+ }
+ to = CreateNewTurnout( newTurnScaleName, tempCustom, tempSegs_da.cnt,
+ &tempSegs(0),
+ pp->paths, TempEndPtsCount(), TempEndPt(0), FALSE, options );
to->customInfo = customInfoP;
#endif
if (f) {
- fprintf( f, "TURNOUT %s \"%s\" %ld\n", newTurnScaleName, PutTitle(tempCustom), options );
+ fprintf( f, "TURNOUT %s \"%s\" %ld\n", newTurnScaleName, PutTitle(tempCustom),
+ options );
#ifdef MKTURNOUT
if (doCustomInfoLine)
#endif
- fprintf( f, "\tU %s\n", customInfoP );
- WriteCompoundPathsEndPtsSegs( f, pp->paths, tempSegs_da.cnt, &tempSegs(0), tempEndPts_da.cnt, &tempEndPts(0) );
+ fprintf( f, "\tU %s\n", customInfoP );
+ WriteCompoundPathsEndPtsSegs( f, pp->paths, tempSegs_da.cnt, &tempSegs(0),
+ TempEndPtsCount(), TempEndPt(0) );
}
break;
default:
@@ -2823,8 +3081,9 @@ static void NewTurnOk( void * context )
tempCustom[0] = '\0';
#ifndef MKTURNOUT
- if (f)
+ if (f) {
fclose(f);
+ }
SetUserLocale();
includeNontrackSegments = TRUE;
wHide( newTurnW );
@@ -2848,15 +3107,16 @@ static wWinPix_t turnDesignWidth;
static wWinPix_t turnDesignHeight;
static void TurnDesignLayout(
- paramData_t * pd,
- int index,
- wWinPix_t colX,
- wWinPix_t * w,
- wWinPix_t * h )
+ paramData_t * pd,
+ int index,
+ wWinPix_t colX,
+ wWinPix_t * w,
+ wWinPix_t * h )
{
wIndex_t inx;
- if ( curDesign == NULL )
+ if ( curDesign == NULL ) {
return;
+ }
if ( index >= I_TO_FIRST_FLOAT && index <= I_TO_LAST_FLOAT ) {
for ( inx=0; inx<curDesign->floatCnt; inx++ ) {
if ( index == curDesign->floats[inx].index ) {
@@ -2865,7 +3125,7 @@ static void TurnDesignLayout(
return;
}
}
- AbortProg( "turnDesignLayout: bad index = %d", index );
+ CHECKMSG( FALSE, ( "turnDesignLayout: bad index = %d", index ) );
} else if ( index == I_TOMANUF ) {
*h = turnDesignHeight + 10;
}
@@ -2881,18 +3141,21 @@ static void SetupTurnoutDesignerW( toDesignDesc_t * newDesign )
if ( newTurnW == NULL ) {
partnoWidth = wLabelWidth( "999-99999-9999" );
turnDesignPLs[I_TOLDESC+1].winData =
- turnDesignPLs[I_TORDESC+1].winData =
- I2VP(partnoWidth);
+ turnDesignPLs[I_TORDESC+1].winData =
+ I2VP(partnoWidth);
partnoWidth += wLabelWidth( " # " );
- newTurnW = ParamCreateDialog( &turnDesignPG, _("Turnout Designer"), _("Print"), NewTurnPrint, NewTurnCancel, TRUE, TurnDesignLayout, F_BLOCK, NULL );
+ newTurnW = ParamCreateDialog( &turnDesignPG, _("Turnout Designer"), _("Print"),
+ NewTurnPrint, NewTurnCancel, TRUE, TurnDesignLayout, F_BLOCK, NULL );
for ( inx=0; inx<COUNT( designDescs ); inx++ ) {
- designDescs[inx]->lineC = wLineCreate( turnDesignPG.win, NULL, designDescs[inx]->lineCnt, designDescs[inx]->lines );
+ designDescs[inx]->lineC = wLineCreate( turnDesignPG.win, NULL,
+ designDescs[inx]->lineCnt, designDescs[inx]->lines );
wControlShow( (wControl_p)designDescs[inx]->lineC, FALSE );
}
}
if ( curDesign != newDesign ) {
- if ( curDesign )
+ if ( curDesign ) {
wControlShow( (wControl_p)curDesign->lineC, FALSE );
+ }
curDesign = newDesign;
sprintf( message, _("%s %s Designer"), sProdName, _(curDesign->label) );
wWinSetTitle( newTurnW, message );
@@ -2902,7 +3165,8 @@ static void SetupTurnoutDesignerW( toDesignDesc_t * newDesign )
}
for ( inx=0; inx<curDesign->floatCnt; inx++ ) {
turnDesignPLs[curDesign->floats[inx].index].option &= ~PDO_DLGIGNORE;
- wControlSetLabel( turnDesignPLs[curDesign->floats[inx].index].control, _(curDesign->floats[inx].winLabel) );
+ wControlSetLabel( turnDesignPLs[curDesign->floats[inx].index].control,
+ _(curDesign->floats[inx].winLabel) );
wControlShow( turnDesignPLs[curDesign->floats[inx].index].control, TRUE );
}
wControlShow( turnDesignPLs[I_TORDESC+0].control, curDesign->strCnt>1 );
@@ -2910,24 +3174,30 @@ static void SetupTurnoutDesignerW( toDesignDesc_t * newDesign )
wControlShow( (wControl_p)curDesign->lineC, TRUE );
turnDesignWidth = turnDesignHeight = 0;
- for (inx=0;inx<curDesign->lineCnt;inx++) {
- if (curDesign->lines[inx].x0 > turnDesignWidth)
+ for (inx=0; inx<curDesign->lineCnt; inx++) {
+ if (curDesign->lines[inx].x0 > turnDesignWidth) {
turnDesignWidth = curDesign->lines[inx].x0;
- if (curDesign->lines[inx].x1 > turnDesignWidth)
+ }
+ if (curDesign->lines[inx].x1 > turnDesignWidth) {
turnDesignWidth = curDesign->lines[inx].x1;
- if (curDesign->lines[inx].y0 > turnDesignHeight)
+ }
+ if (curDesign->lines[inx].y0 > turnDesignHeight) {
turnDesignHeight = curDesign->lines[inx].y0;
- if (curDesign->lines[inx].y1 > turnDesignHeight)
+ }
+ if (curDesign->lines[inx].y1 > turnDesignHeight) {
turnDesignHeight = curDesign->lines[inx].y1;
+ }
}
ctlH = wControlGetHeight( turnDesignPLs[I_TO_FIRST_FLOAT].control );
for ( inx=0; inx<curDesign->floatCnt; inx++ ) {
w = curDesign->floats[inx].pos.x + 80;
h = curDesign->floats[inx].pos.y + ctlH;
- if (turnDesignWidth < w)
+ if (turnDesignWidth < w) {
turnDesignWidth = w;
- if (turnDesignHeight < h)
+ }
+ if (turnDesignHeight < h) {
turnDesignHeight = h;
+ }
}
if ( curDesign->strCnt > 1 ) {
w = wLabelWidth( _("Right Description") );
@@ -2966,22 +3236,22 @@ static void SetupTurnoutDesignerW( toDesignDesc_t * newDesign )
curDesign->type == NTO_CORNUWYE ||
curDesign->type == NTO_CORNU3WAY ) {
turnDesignPLs[I_TOOFFSET+0].winData =
- turnDesignPLs[I_TOOFFSET+1].winData =
- turnDesignPLs[I_TOOFFSET+2].winData =
- turnDesignPLs[I_TOOFFSET+3].winData = &r_10000_10000;
+ turnDesignPLs[I_TOOFFSET+1].winData =
+ turnDesignPLs[I_TOOFFSET+2].winData =
+ turnDesignPLs[I_TOOFFSET+3].winData = &r_10000_10000;
turnDesignPLs[I_TOANGLE+0].winData =
- turnDesignPLs[I_TOANGLE+1].winData =
- turnDesignPLs[I_TOANGLE+2].winData =
- turnDesignPLs[I_TOANGLE+3].winData = &r_90_90;
+ turnDesignPLs[I_TOANGLE+1].winData =
+ turnDesignPLs[I_TOANGLE+2].winData =
+ turnDesignPLs[I_TOANGLE+3].winData = &r_90_90;
} else {
turnDesignPLs[I_TOOFFSET+0].winData =
- turnDesignPLs[I_TOOFFSET+1].winData =
- turnDesignPLs[I_TOOFFSET+2].winData =
- turnDesignPLs[I_TOOFFSET+3].winData = &r0d001_10000;
+ turnDesignPLs[I_TOOFFSET+1].winData =
+ turnDesignPLs[I_TOOFFSET+2].winData =
+ turnDesignPLs[I_TOOFFSET+3].winData = &r0d001_10000;
turnDesignPLs[I_TOANGLE+0].winData =
- turnDesignPLs[I_TOANGLE+1].winData =
- turnDesignPLs[I_TOANGLE+2].winData =
- turnDesignPLs[I_TOANGLE+3].winData = &r0d001_90;
+ turnDesignPLs[I_TOANGLE+1].winData =
+ turnDesignPLs[I_TOANGLE+2].winData =
+ turnDesignPLs[I_TOANGLE+3].winData = &r0d001_90;
}
ParamLayoutDialog( &turnDesignPG );
}
@@ -2991,12 +3261,15 @@ static void SetupTurnoutDesignerW( toDesignDesc_t * newDesign )
static void ShowTurnoutDesigner( void * context )
{
wBool_t sameTurnout = FALSE;
- if (recordF)
- fprintf( recordF, TURNOUTDESIGNER " SHOW %s\n", ((toDesignDesc_t*)context)->label );
+ if (recordF) {
+ fprintf( recordF, TURNOUTDESIGNER " SHOW %s\n",
+ ((toDesignDesc_t*)context)->label );
+ }
newTurnScaleName = curScaleName;
newTurnTrackGauge = trackGauge;
- if (context && (curDesign == context))
+ if (context && (curDesign == context)) {
sameTurnout = TRUE;
+ }
SetupTurnoutDesignerW( (toDesignDesc_t*)context );
if (!sameTurnout) { /* Clear Values unless same as last time */
newTurnRightDesc[0] = '\0';
@@ -3004,10 +3277,10 @@ static void ShowTurnoutDesigner( void * context )
newTurnLeftDesc[0] = '\0';
newTurnLeftPartno[0] = '\0';
newTurnOff0 = newTurnLen0 = newTurnAngle0 = newTurnRad0 =
- newTurnOff1 = newTurnLen1 = newTurnAngle1 = newTurnRad1 =
- newTurnOff2 = newTurnLen2 = newTurnAngle2 = newTurnRad2 =
- newTurnOff3 = newTurnLen3 = newTurnAngle3 = newTurnRad3 =
- newTurnToeL = newTurnToeR = 0.0;
+ newTurnOff1 = newTurnLen1 = newTurnAngle1 = newTurnRad1 =
+ newTurnOff2 = newTurnLen2 = newTurnAngle2 = newTurnRad2 =
+ newTurnOff3 = newTurnLen3 = newTurnAngle3 = newTurnRad3 =
+ newTurnToeL = newTurnToeR = 0.0;
}
ParamLoadControls( &turnDesignPG );
ParamGroupRecord( &turnDesignPG );
@@ -3031,18 +3304,21 @@ EXPORT void EditCustomTurnout( turnoutInfo_t * to, turnoutInfo_t * to1 )
long rgb;
trkSeg_p sp0, sp1;
BOOL_T segsDiff;
- DIST_T width;
+ LWIDTH_T lineWidth;
- if ( ! GetArgs( to->customInfo, "qqqqqc", &type, &name, &mfg, &descL, &partL, &cp ) )
+ if ( ! GetArgs( to->customInfo, "qqqqqc", &type, &name, &mfg, &descL, &partL,
+ &cp ) ) {
return;
+ }
for ( i=0; i<COUNT( designDescs ); i++ ) {
dp = designDescs[i];
if ( strcmp( type, dp->label ) == 0 ) {
break;
}
}
- if ( i >= COUNT( designDescs ) )
+ if ( i >= COUNT( designDescs ) ) {
return;
+ }
SetupTurnoutDesignerW(dp);
newTurnTrackGauge = GetScaleTrackGauge( to->scaleInx );
@@ -3050,25 +3326,30 @@ EXPORT void EditCustomTurnout( turnoutInfo_t * to, turnoutInfo_t * to1 )
strcpy( newTurnManufacturer, mfg );
strcpy( newTurnLeftDesc, descL );
strcpy( newTurnLeftPartno, partL );
- if (dp->type == NTO_REGULAR || dp->type == NTO_CURVED || dp->type == NTO_CORNU) {
- if ( ! GetArgs( cp, "qqc", &descR, &partR, &cp ))
+ if (dp->type == NTO_REGULAR || dp->type == NTO_CURVED
+ || dp->type == NTO_CORNU) {
+ if ( ! GetArgs( cp, "qqc", &descR, &partR, &cp )) {
return;
+ }
strcpy( newTurnRightDesc, descR );
strcpy( newTurnRightPartno, partR );
} else {
descR = partR = "";
}
for ( i=0; i<dp->floatCnt; i++ ) {
- if ( ! GetArgs( cp, "fc", turnDesignPLs[dp->floats[i].index].valueP, &cp ) )
+ if ( ! GetArgs( cp, "fc", turnDesignPLs[dp->floats[i].index].valueP, &cp ) ) {
return;
+ }
switch (dp->floats[i].mode) {
case Dim_e:
/* *dp->floats[i].valueP = PutDim( *dp->floats[i].valueP ); */
break;
case Frog_e:
if (newTurnAngleMode == 0) {
- if ( *(FLOAT_T*)(turnDesignPLs[dp->floats[i].index].valueP) > 0.0 )
- *(FLOAT_T*)(turnDesignPLs[dp->floats[i].index].valueP) = 1.0/sin(D2R(*(FLOAT_T*)(turnDesignPLs[dp->floats[i].index].valueP)));
+ if ( *(FLOAT_T*)(turnDesignPLs[dp->floats[i].index].valueP) > 0.0 ) {
+ *(FLOAT_T*)(turnDesignPLs[dp->floats[i].index].valueP) = 1.0/sin(D2R(*
+ (FLOAT_T*)(turnDesignPLs[dp->floats[i].index].valueP)));
+ }
}
break;
case Angle_e:
@@ -3078,13 +3359,13 @@ EXPORT void EditCustomTurnout( turnoutInfo_t * to, turnoutInfo_t * to1 )
}
}
rgb = 0;
- if ( cp && GetArgs( cp, "ffl", &newTurnRoadbedWidth, &width, &rgb ) ) {
- roadbedColor = wDrawFindColor(rgb);
- newTurnRoadbedLineWidth = (long)floor(width*mainD.dpi+0.5);
+ if ( cp && GetArgs( cp, "ffl", &newTurnRoadbedWidth, &lineWidth, &rgb ) ) {
+ newTurnRoadbedColor = wDrawFindColor(rgb);
+ newTurnRoadbedLineWidth = lineWidth;
} else {
newTurnRoadbedWidth = 0;
newTurnRoadbedLineWidth = 0;
- roadbedColor = wDrawColorBlack;
+ newTurnRoadbedColor = wDrawColorBlack;
}
customTurnout1 = to;
@@ -3095,28 +3376,31 @@ EXPORT void EditCustomTurnout( turnoutInfo_t * to, turnoutInfo_t * to1 )
LoadSegs( dp, TRUE );
segsDiff = FALSE;
if ( to->segCnt == tempSegs_da.cnt ) {
- for ( sp0=to->segs,sp1=&tempSegs(0); (!segsDiff) && sp0<&to->segs[to->segCnt]; sp0++,sp1++ ) {
+ for ( sp0=to->segs,sp1=&tempSegs(0); (!segsDiff)
+ && sp0<&to->segs[to->segCnt]; sp0++,sp1++ ) {
switch (sp0->type) {
case SEG_STRLIN:
if (sp0->type != sp1->type ||
- sp0->color != sp1->color ||
- NotClose(sp0->width-width) ||
- NotClose(sp0->u.l.pos[0].x-sp1->u.l.pos[0].x) ||
- NotClose(sp0->u.l.pos[0].y-sp1->u.l.pos[0].y) ||
- NotClose(sp0->u.l.pos[1].x-sp1->u.l.pos[1].x) ||
- NotClose(sp0->u.l.pos[1].y-sp1->u.l.pos[1].y) )
- segsDiff = TRUE;
+ sp0->color != sp1->color ||
+ NotClose(sp0->lineWidth-lineWidth) ||
+ NotClose(sp0->u.l.pos[0].x-sp1->u.l.pos[0].x) ||
+ NotClose(sp0->u.l.pos[0].y-sp1->u.l.pos[0].y) ||
+ NotClose(sp0->u.l.pos[1].x-sp1->u.l.pos[1].x) ||
+ NotClose(sp0->u.l.pos[1].y-sp1->u.l.pos[1].y) ) {
+ segsDiff = TRUE;
+ }
break;
case SEG_CRVLIN:
if (sp0->type != sp1->type ||
- sp0->color != sp1->color ||
- NotClose(sp0->width-width) ||
- NotClose(sp0->u.c.center.x-sp1->u.c.center.x) ||
- NotClose(sp0->u.c.center.y-sp1->u.c.center.y) ||
- NotClose(sp0->u.c.radius-sp1->u.c.radius) ||
- NotClose(sp0->u.c.a0-sp1->u.c.a0) ||
- NotClose(sp0->u.c.a1-sp1->u.c.a1) )
- segsDiff = TRUE;
+ sp0->color != sp1->color ||
+ NotClose(sp0->lineWidth-lineWidth) ||
+ NotClose(sp0->u.c.center.x-sp1->u.c.center.x) ||
+ NotClose(sp0->u.c.center.y-sp1->u.c.center.y) ||
+ NotClose(sp0->u.c.radius-sp1->u.c.radius) ||
+ NotClose(sp0->u.c.a0-sp1->u.c.a0) ||
+ NotClose(sp0->u.c.a1-sp1->u.c.a1) ) {
+ segsDiff = TRUE;
+ }
break;
case SEG_STRTRK:
case SEG_CRVTRK:
@@ -3128,12 +3412,15 @@ EXPORT void EditCustomTurnout( turnoutInfo_t * to, turnoutInfo_t * to1 )
}
} else {
for ( sp0=to->segs; (!segsDiff) && sp0<&to->segs[to->segCnt]; sp0++ ) {
- if ( sp0->type != SEG_STRTRK && sp0->type != SEG_CRVTRK && sp0->type != SEG_BEZTRK)
+ if ( sp0->type != SEG_STRTRK && sp0->type != SEG_CRVTRK
+ && sp0->type != SEG_BEZTRK) {
segsDiff = TRUE;
+ }
}
}
}
- if ( (!segsDiff) && to1 && (dp->type==NTO_REGULAR||dp->type==NTO_CURVED||dp->type == NTO_CORNU) ) {
+ if ( (!segsDiff) && to1 && (dp->type==NTO_REGULAR||dp->type==NTO_CURVED
+ ||dp->type == NTO_CORNU) ) {
if ( dp->type==NTO_REGULAR ) {
points[2].y = - points[2].y;
radii[0] = - radii[0];
@@ -3169,28 +3456,31 @@ EXPORT void EditCustomTurnout( turnoutInfo_t * to, turnoutInfo_t * to1 )
}
segsDiff = FALSE;
if ( to1->segCnt == tempSegs_da.cnt ) {
- for ( sp0=to1->segs,sp1=&tempSegs(0); (!segsDiff) && sp0<&to1->segs[to1->segCnt]; sp0++,sp1++ ) {
+ for ( sp0=to1->segs,sp1=&tempSegs(0); (!segsDiff)
+ && sp0<&to1->segs[to1->segCnt]; sp0++,sp1++ ) {
switch (sp0->type) {
case SEG_STRLIN:
if (sp0->type != sp1->type ||
- sp0->color != sp1->color ||
- NotClose(sp0->width-width) ||
- NotClose(sp0->u.l.pos[0].x-sp1->u.l.pos[0].x) ||
- NotClose(sp0->u.l.pos[0].y-sp1->u.l.pos[0].y) ||
- NotClose(sp0->u.l.pos[1].x-sp1->u.l.pos[1].x) ||
- NotClose(sp0->u.l.pos[1].y-sp1->u.l.pos[1].y) )
- segsDiff = TRUE;
+ sp0->color != sp1->color ||
+ NotClose(sp0->lineWidth-lineWidth) ||
+ NotClose(sp0->u.l.pos[0].x-sp1->u.l.pos[0].x) ||
+ NotClose(sp0->u.l.pos[0].y-sp1->u.l.pos[0].y) ||
+ NotClose(sp0->u.l.pos[1].x-sp1->u.l.pos[1].x) ||
+ NotClose(sp0->u.l.pos[1].y-sp1->u.l.pos[1].y) ) {
+ segsDiff = TRUE;
+ }
break;
case SEG_CRVLIN:
if (sp0->type != sp1->type ||
- sp0->color != sp1->color ||
- NotClose(sp0->width-width) ||
- NotClose(sp0->u.c.center.x-sp1->u.c.center.x) ||
- NotClose(sp0->u.c.center.y-sp1->u.c.center.y) ||
- NotClose(sp0->u.c.radius-sp1->u.c.radius) ||
- NotClose(sp0->u.c.a0-sp1->u.c.a0) ||
- NotClose(sp0->u.c.a1-sp1->u.c.a1) )
- segsDiff = TRUE;
+ sp0->color != sp1->color ||
+ NotClose(sp0->lineWidth-lineWidth) ||
+ NotClose(sp0->u.c.center.x-sp1->u.c.center.x) ||
+ NotClose(sp0->u.c.center.y-sp1->u.c.center.y) ||
+ NotClose(sp0->u.c.radius-sp1->u.c.radius) ||
+ NotClose(sp0->u.c.a0-sp1->u.c.a0) ||
+ NotClose(sp0->u.c.a1-sp1->u.c.a1) ) {
+ segsDiff = TRUE;
+ }
break;
case SEG_STRTRK:
case SEG_CRVTRK:
@@ -3202,8 +3492,10 @@ EXPORT void EditCustomTurnout( turnoutInfo_t * to, turnoutInfo_t * to1 )
}
} else {
for ( sp0=to1->segs; (!segsDiff) && sp0<&to1->segs[to1->segCnt]; sp0++ ) {
- if ( sp0->type != SEG_STRTRK && sp0->type != SEG_CRVTRK && sp0->type != SEG_BEZTRK)
+ if ( sp0->type != SEG_STRTRK && sp0->type != SEG_CRVTRK
+ && sp0->type != SEG_BEZTRK) {
segsDiff = TRUE;
+ }
}
}
}
@@ -3230,12 +3522,13 @@ EXPORT void InitNewTurn( wMenu_p m )
ParamRegister( &turnDesignPG );
for ( i=0; i<COUNT( designDescs ); i++ ) {
wMenuPushCreate( m, NULL, _(designDescs[i]->label), 0,
- ShowTurnoutDesigner, designDescs[i] );
+ ShowTurnoutDesigner, designDescs[i] );
sprintf( message, "%s SHOW %s", TURNOUTDESIGNER, designDescs[i]->label );
AddPlaybackProc( message, (playbackProc_p)ShowTurnoutDesigner, designDescs[i] );
}
- roadbedColor = wDrawColorBlack;
+ newTurnRoadbedColor = wDrawColorBlack;
includeNontrackSegments = TRUE;
+ log_cornuturnoutdesigner = LogFindIndex( "cornuturnoutdesigner" );
}
#endif
@@ -3247,19 +3540,30 @@ char * curScaleName;
double trackGauge;
long units = 0;
wDrawColor drawColorBlack;
-long roadbedColorRGB = 0;
+long newTurnRoadbedColorRGB = 0;
-EXPORT void AbortProg(
- const char * msg,
- ... )
+EXPORT const char * AbortMessage(
+ const char * sFormat,
+ ... )
{
- static BOOL_T abort2 = FALSE;
-// int rc;
+ static char sMessage[STR_SIZE];
+ if ( sFormat == NULL ) {
+ return "";
+ }
va_list ap;
- va_start( ap, msg );
- vsprintf( message, msg, ap );
- va_end( ap );
- fprintf( stderr, "%s", message );
+ va_start(ap, sFormat);
+ vsnprintf(sMessage, sizeof sMessage, sFormat, ap);
+ va_end(ap);
+ return sMessage;
+}
+
+EXPORT void AbortProg(
+ const char * sCond,
+ const char * sFileName,
+ int iLineNumber,
+ const char * sMsg )
+{
+ fprintf( stderr, "%s: %s:%d %s", sCond, sFileName, iLineNumber, sMsg );
abort();
}
@@ -3276,6 +3580,11 @@ EXPORT char * MyStrdup( const char * str )
return ret;
}
+EXPORT void LogPrintf(
+ const char * format,
+ ... )
+{
+}
int NoticeMessage( const char * msg, const char * yes, const char * no, ... )
{
@@ -3293,10 +3602,10 @@ void wPrintSetup( wPrintSetupCallBack_p notused )
}
EXPORT void ComputeCurvedSeg(
- trkSeg_p s,
- DIST_T radius,
- coOrd p0,
- coOrd p1 )
+ trkSeg_p s,
+ DIST_T radius,
+ coOrd p0,
+ coOrd p1 )
{
DIST_T d;
ANGLE_T a, aa, aaa;
@@ -3321,14 +3630,16 @@ EXPORT void ComputeCurvedSeg(
EXPORT char * Strcpytrimed( char * dst, const char * src, BOOL_T double_quotes )
{
const char * cp;
- while (*src && isspace((unsigned char)*src) ) src++;
- if (!*src)
+ while (*src && isspace((unsigned char)*src) ) { src++; }
+ if (!*src) {
return dst;
+ }
cp = src+strlen(src)-1;
- while ( cp>src && isspace((unsigned char)*cp) ) cp--;
+ while ( cp>src && isspace((unsigned char)*cp) ) { cp--; }
while ( src<=cp ) {
- if (*src == '"' && double_quotes)
+ if (*src == '"' && double_quotes) {
*dst++ = '"';
+ }
*dst++ = *src++;
}
*dst = '\0';
@@ -3336,17 +3647,6 @@ EXPORT char * Strcpytrimed( char * dst, const char * src, BOOL_T double_quotes )
}
-EXPORT char * BuildTrimedTitle( char * cp, const char * sep, const char * mfg, const char * desc, const char * partno )
-{
- cp = Strcpytrimed( cp, mfg, FALSE );
- strcpy( cp, sep );
- cp += strlen(cp);
- cp = Strcpytrimed( cp, desc, FALSE );
- strcpy( cp, sep );
- cp += strlen(cp);
- cp = Strcpytrimed( cp, partno, FALSE );
- return cp;
-}
EXPORT char * PutTitle( char * cp )
@@ -3368,15 +3668,15 @@ EXPORT char * PutTitle( char * cp )
long wDrawGetRGB(
- wDrawColor color )
+ wDrawColor color )
{
- return roadbedColorRGB;
+ return newTurnRoadbedColorRGB;
}
EXPORT BOOL_T WriteSegs(
- FILE * f,
- wIndex_t segCnt,
- trkSeg_p segs )
+ FILE * f,
+ wIndex_t segCnt,
+ trkSeg_p segs )
{
int i, j;
BOOL_T rc = TRUE;
@@ -3385,32 +3685,34 @@ EXPORT BOOL_T WriteSegs(
case SEG_STRLIN:
case SEG_STRTRK:
rc &= fprintf( f, "\t%c %ld %0.6f %0.6f %0.6f %0.6f %0.6f\n",
- segs[i].type, (segs[i].type==SEG_STRTRK?0:roadbedColorRGB), segs[i].width,
- segs[i].u.l.pos[0].x, segs[i].u.l.pos[0].y,
- segs[i].u.l.pos[1].x, segs[i].u.l.pos[1].y )>0;
+ segs[i].type, (segs[i].type==SEG_STRTRK?0:newTurnRoadbedColorRGB),
+ segs[i].lineWidth,
+ segs[i].u.l.pos[0].x, segs[i].u.l.pos[0].y,
+ segs[i].u.l.pos[1].x, segs[i].u.l.pos[1].y )>0;
break;
case SEG_CRVTRK:
case SEG_CRVLIN:
rc &= fprintf( f, "\t%c %ld %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f\n",
- segs[i].type, (segs[i].type==SEG_CRVTRK?0:roadbedColorRGB), segs[i].width,
- fabs(segs[i].u.c.radius),
- segs[i].u.c.center.x, segs[i].u.c.center.y,
- segs[i].u.c.a0, segs[i].u.c.a1 )>0;
+ segs[i].type, (segs[i].type==SEG_CRVTRK?0:newTurnRoadbedColorRGB),
+ segs[i].lineWidth,
+ fabs(segs[i].u.c.radius),
+ segs[i].u.c.center.x, segs[i].u.c.center.y,
+ segs[i].u.c.a0, segs[i].u.c.a1 )>0;
break;
case SEG_FILCRCL:
rc &= fprintf( f, "\t%c %ld %0.6f %0.6f %0.6f %0.6f\n",
- segs[i].type, roadbedColorRGB, segs[i].width,
- fabs(segs[i].u.c.radius),
- segs[i].u.c.center.x, segs[i].u.c.center.y )>0;
+ segs[i].type, newTurnRoadbedColorRGB, segs[i].lineWidth,
+ fabs(segs[i].u.c.radius),
+ segs[i].u.c.center.x, segs[i].u.c.center.y )>0;
break;
case SEG_POLY:
case SEG_FILPOLY:
rc &= fprintf( f, "\t%c %ld %0.6f %d\n",
- segs[i].type, roadbedColorRGB, segs[i].width,
- segs[i].u.p.cnt )>0;
+ segs[i].type, newTurnRoadbedColorRGB, segs[i].lineWidth,
+ segs[i].u.p.cnt )>0;
for ( j=0; j<segs[i].u.p.cnt; j++ )
rc &= fprintf( f, "\t\t%0.6f %0.6f\n",
- segs[i].u.p.pts[j].pt.x, segs[i].u.p.pts[j].pt.y )>0;
+ segs[i].u.p.pts[j].pt.x, segs[i].u.p.pts[j].pt.y )>0;
break;
}
}
@@ -3419,28 +3721,32 @@ EXPORT BOOL_T WriteSegs(
}
BOOL_T WriteCompoundPathsEndPtsSegs(
- FILE * f,
- PATHPTR_T paths,
- wIndex_t segCnt,
- trkSeg_p segs,
- EPINX_T endPtCnt,
- trkEndPt_t * endPts )
+ FILE * f,
+ PATHPTR_T paths,
+ wIndex_t segCnt,
+ trkSeg_p segs,
+ EPINX_T endPtCnt,
+ trkEndPt_p endPts )
{
int i;
PATHPTR_T pp;
BOOL_T rc = TRUE;
for ( pp=paths; *pp; pp+=2 ) {
rc &= fprintf( f, "\tP \"%s\"", (char*)pp )>0;
- for ( pp+=strlen((char*)pp)+1; pp[0]!=0||pp[1]!=0; pp++ )
+ for ( pp+=strlen((char*)pp)+1; pp[0]!=0||pp[1]!=0; pp++ ) {
rc &= fprintf( f, " %d", *pp )>0;
+ }
rc &= fprintf( f, "\n" )>0;
}
for ( i=0; i<endPtCnt; i++ )
rc &= fprintf( f, "\tE %0.6f %0.6f %0.6f\n",
- endPts[i].pos.x, endPts[i].pos.y, endPts[i].angle )>0;
+ GetEndPtPos(EndPtIndex(endPts,i)).x,
+ GetEndPtPos(EndPtIndex(endPts,i)).y,
+ GetEndPtAngle(EndPtIndex(endPts,i)) )>0;
#ifdef MKTURNOUT
- if ( specialLine[0] )
+ if ( specialLine[0] ) {
rc &= fprintf( f, "%s\n", specialLine );
+ }
#endif
rc &= WriteSegs( f, segCnt, segs );
return rc;
@@ -3450,39 +3756,40 @@ BOOL_T WriteCompoundPathsEndPtsSegs(
void Usage( int argc, char **argv )
{
int inx;
- for (inx=1;inx<argc;inx++)
+ for (inx=1; inx<argc; inx++) {
fprintf( stderr, "%s ", argv[inx] );
+ }
fprintf( stderr,
-"\nUsage: [-m] [-u] [-r#] [-c#] [-l#]\n"
-" <SCL> <MNF> B <DSC> <PNO> <LEN> # Create bumper\n"
-" <SCL> <MNF> S <DSC> <PNO> <LEN> # Create straight track\n"
-" <SCL> <MNF> J <DSC> <PNO> <LEN1> <LEN2> # Create adjustable track\n"
-" <SCL> <MNF> C <DSC> <PNO> <RAD> <ANG> # Create curved track\n"
-" <SCL> <MNF> R <LDSC> <LPNO> <RDSC> <RPNO> <LEN2> <ANG> <OFF> <LEN1> # Create Regular Turnout\n"
-" <SCL> <MNF> Q <LDSC> <LPNO> <RDSC> <RPNO> <RAD> <ANG> <LEN> # Create Radial Turnout\n"
-" <SCL> <MNF> V <LDSC> <LPNO> <RDSC> <RPNO> <LEN1> <ANG1> <OFF1> <LEN2> <ANG2> <OFF2> # Create Curved Turnout\n"
-" <SCL> <MNF> W <LDSC> <LPNO> <RDSC> <RPNO> <RAD1> <ANG2> <RAD2> <ANG2> # Create Radial Curved Turnout\n"
-" <SCL> <MNF> Y <LDSC> <LPNO> <RDSC> <RPNO> <LENL> <ANGL> <OFFL> <LENR> <ANGR> <OFFR> # Create Wye Turnout\n"
-" <SCL> <MNF> 3 <DSC> <PNO> <LEN0> <LENL> <ANGL> <OFFL> <LENR> <ANGR> <OFFR> # Create 3-Way Turnout\n"
-" <SCL> <MNF> X <DSC> <PNO> <LEN1> <ANG> <LEN2> # Create Crossing\n"
-" <SCL> <MNF> 1 <DSC> <PNO> <LEN1> <ANG> <LEN2> # Create Single Slipswitch\n"
-" <SCL> <MNF> 2 <DSC> <PNO> <LEN1> <ANG> <LEN2> # Create Double Slipswitch\n"
-" <SCL> <MNF> D <DSC> <PNO> <LEN> <OFF> # Create Double Crossover\n"
-" <SCL> <MNF> T <DSC> <PNO> <CNT> <IN-DIAM> <OUT-DIAM> # Create TurnTable\n"
-);
- exit(1);
+ "\nUsage: [-m] [-u] [-r#] [-c#] [-l#]\n"
+ " <SCL> <MNF> B <DSC> <PNO> <LEN> # Create bumper\n"
+ " <SCL> <MNF> S <DSC> <PNO> <LEN> # Create straight track\n"
+ " <SCL> <MNF> J <DSC> <PNO> <LEN1> <LEN2> # Create adjustable track\n"
+ " <SCL> <MNF> C <DSC> <PNO> <RAD> <ANG> # Create curved track\n"
+ " <SCL> <MNF> R <LDSC> <LPNO> <RDSC> <RPNO> <LEN2> <ANG> <OFF> <LEN1> # Create Regular Turnout\n"
+ " <SCL> <MNF> Q <LDSC> <LPNO> <RDSC> <RPNO> <RAD> <ANG> <LEN> # Create Radial Turnout\n"
+ " <SCL> <MNF> V <LDSC> <LPNO> <RDSC> <RPNO> <LEN1> <ANG1> <OFF1> <LEN2> <ANG2> <OFF2> # Create Curved Turnout\n"
+ " <SCL> <MNF> W <LDSC> <LPNO> <RDSC> <RPNO> <RAD1> <ANG2> <RAD2> <ANG2> # Create Radial Curved Turnout\n"
+ " <SCL> <MNF> Y <LDSC> <LPNO> <RDSC> <RPNO> <LENL> <ANGL> <OFFL> <LENR> <ANGR> <OFFR> # Create Wye Turnout\n"
+ " <SCL> <MNF> 3 <DSC> <PNO> <LEN0> <LENL> <ANGL> <OFFL> <LENR> <ANGR> <OFFR> # Create 3-Way Turnout\n"
+ " <SCL> <MNF> X <DSC> <PNO> <LEN1> <ANG> <LEN2> # Create Crossing\n"
+ " <SCL> <MNF> 1 <DSC> <PNO> <LEN1> <ANG> <LEN2> # Create Single Slipswitch\n"
+ " <SCL> <MNF> 2 <DSC> <PNO> <LEN1> <ANG> <LEN2> # Create Double Slipswitch\n"
+ " <SCL> <MNF> D <DSC> <PNO> <LEN> <OFF> # Create Double Crossover\n"
+ " <SCL> <MNF> T <DSC> <PNO> <CNT> <IN-DIAM> <OUT-DIAM> # Create TurnTable\n"
+ );
+ exit(1);
}
struct {
- char * scale;
- double trackGauge;
- } scaleMap[] = {
- { "N", 0.3531 },
- { "HO", 0.6486 },
- { "O", 1.1770 },
- { "HOm", 0.472440 },
- { "G", 1.770 }
- };
+ char * scale;
+ double trackGauge;
+} scaleMap[] = {
+ { "N", 0.3531 },
+ { "HO", 0.6486 },
+ { "O", 1.1770 },
+ { "HOm", 0.472440 },
+ { "G", 1.770 }
+};
@@ -3514,15 +3821,16 @@ int main ( int argc, char * argv[] )
break;
case 'r':
doRoadBed = TRUE;
- if (argv[0][2] == '\0')
+ if (argv[0][2] == '\0') {
Usage(argc0,argv0);
+ }
newTurnRoadbedWidth = atof(&argv[0][2]);
- roadbedColorRGB = 0;
- roadbedColor = 0;
+ newTurnRoadbedColorRGB = 0;
+ newTurnRoadbedColor = 0;
newTurnRoadbedLineWidth = 0;
break;
case 'c':
- roadbedColorRGB = atol(&argv[0][2]);
+ newTurnRoadbedColorRGB = atol(&argv[0][2]);
break;
case 'l':
newTurnRoadbedLineWidth = atol(&argv[0][2]);
@@ -3550,7 +3858,7 @@ int main ( int argc, char * argv[] )
specialLine[0] = '\0';
switch (tolower((unsigned char)(*argv++)[0])) {
case 'b':
- if (argc != 7) Usage(argc0,argv0);
+ if (argc != 7) { Usage(argc0,argv0); }
strcpy( newTurnLeftDesc, *argv++ );
strcpy( newTurnLeftPartno, *argv++ );
newTurnLen0 = GetDim(atof( *argv++ ));
@@ -3558,7 +3866,7 @@ int main ( int argc, char * argv[] )
NewTurnOk( &StrSectionDesc );
break;
case 's':
- if (argc != 7) Usage(argc0,argv0);
+ if (argc != 7) { Usage(argc0,argv0); }
strcpy( newTurnLeftDesc, *argv++ );
strcpy( newTurnLeftPartno, *argv++ );
newTurnLen0 = GetDim(atof( *argv++ ));
@@ -3566,7 +3874,7 @@ int main ( int argc, char * argv[] )
NewTurnOk( &StrSectionDesc );
break;
case 'j':
- if (argc != 8) Usage(argc0,argv0);
+ if (argc != 8) { Usage(argc0,argv0); }
strcpy( newTurnLeftDesc, *argv++ );
strcpy( newTurnLeftPartno, *argv++ );
newTurnLen0 = GetDim(atof( *argv++ ));
@@ -3576,7 +3884,7 @@ int main ( int argc, char * argv[] )
NewTurnOk( &StrSectionDesc );
break;
case 'c':
- if (argc != 8) Usage(argc0,argv0);
+ if (argc != 8) { Usage(argc0,argv0); }
strcpy( newTurnLeftDesc, *argv++ );
strcpy( newTurnLeftPartno, *argv++ );
newTurnLen0 = GetDim(atof( *argv++ ));
@@ -3585,7 +3893,7 @@ int main ( int argc, char * argv[] )
NewTurnOk( &CrvSectionDesc );
break;
case 'r':
- if (argc != 12) Usage(argc0,argv0);
+ if (argc != 12) { Usage(argc0,argv0); }
strcpy( newTurnLeftDesc, *argv++ );
strcpy( newTurnLeftPartno, *argv++ );
strcpy( newTurnRightDesc, *argv++ );
@@ -3598,7 +3906,7 @@ int main ( int argc, char * argv[] )
NewTurnOk( &RegDesc );
break;
case 'q':
- if (argc != 11) Usage(argc0,argv0);
+ if (argc != 11) { Usage(argc0,argv0); }
strcpy( newTurnLeftDesc, *argv++ );
strcpy( newTurnLeftPartno, *argv++ );
strcpy( newTurnRightDesc, *argv++ );
@@ -3612,7 +3920,7 @@ int main ( int argc, char * argv[] )
NewTurnOk( &RegDesc );
break;
case 'v':
- if (argc != 14) Usage(argc0,argv0);
+ if (argc != 14) { Usage(argc0,argv0); }
strcpy( newTurnLeftDesc, *argv++ );
strcpy( newTurnLeftPartno, *argv++ );
strcpy( newTurnRightDesc, *argv++ );
@@ -3627,7 +3935,7 @@ int main ( int argc, char * argv[] )
NewTurnOk( &CrvDesc );
break;
case 'w':
- if (argc != 12) Usage(argc0,argv0);
+ if (argc != 12) { Usage(argc0,argv0); }
strcpy( newTurnLeftDesc, *argv++ );
strcpy( newTurnLeftPartno, *argv++ );
strcpy( newTurnRightDesc, *argv++ );
@@ -3644,7 +3952,7 @@ int main ( int argc, char * argv[] )
NewTurnOk( &CrvDesc );
break;
case 'y':
- if (argc != 14) Usage(argc0,argv0);
+ if (argc != 14) { Usage(argc0,argv0); }
strcpy( newTurnLeftDesc, *argv++ );
strcpy( newTurnLeftPartno, *argv++ );
strcpy( newTurnRightDesc, *argv++ );
@@ -3659,7 +3967,7 @@ int main ( int argc, char * argv[] )
NewTurnOk( &WyeDesc );
break;
case '3':
- if (argc != 13) Usage(argc0,argv0);
+ if (argc != 13) { Usage(argc0,argv0); }
strcpy( newTurnLeftDesc, *argv++ );
strcpy( newTurnLeftPartno, *argv++ );
newTurnLen2 = GetDim(atof( *argv++ ));
@@ -3673,7 +3981,7 @@ int main ( int argc, char * argv[] )
NewTurnOk( &ThreewayDesc );
break;
case 'x':
- if (argc<9) Usage(argc0,argv0);
+ if (argc<9) { Usage(argc0,argv0); }
strcpy( newTurnLeftDesc, *argv++ );
strcpy( newTurnLeftPartno, *argv++ );
newTurnLen0 = GetDim(atof( *argv++ ));
@@ -3683,7 +3991,7 @@ int main ( int argc, char * argv[] )
NewTurnOk( &CrossingDesc );
break;
case '1':
- if (argc<9) Usage(argc0,argv0);
+ if (argc<9) { Usage(argc0,argv0); }
strcpy( newTurnLeftDesc, *argv++ );
strcpy( newTurnLeftPartno, *argv++ );
newTurnLen0 = GetDim(atof( *argv++ ));
@@ -3695,7 +4003,7 @@ int main ( int argc, char * argv[] )
case '2':
strcpy( newTurnLeftDesc, *argv++ );
strcpy( newTurnLeftPartno, *argv++ );
- if (argc<9) Usage(argc0,argv0);
+ if (argc<9) { Usage(argc0,argv0); }
newTurnLen0 = GetDim(atof( *argv++ ));
newTurnAngle0 = atof( *argv++ );
newTurnLen1 = GetDim(atof( *argv++ ));
@@ -3705,7 +4013,7 @@ int main ( int argc, char * argv[] )
case 'd':
strcpy( newTurnLeftDesc, *argv++ );
strcpy( newTurnLeftPartno, *argv++ );
- if (argc<8) Usage(argc0,argv0);
+ if (argc<8) { Usage(argc0,argv0); }
newTurnLen0 = GetDim(atof( *argv++ ));
newTurnOff0 = GetDim(atof( *argv++ ));
curDesign = &DoubleCrossoverDesc;
@@ -3714,17 +4022,19 @@ int main ( int argc, char * argv[] )
case 't':
strcpy( newTurnLeftDesc, *argv++ );
strcpy( newTurnLeftPartno, *argv++ );
- if (argc<9) Usage(argc0,argv0);
+ if (argc<9) { Usage(argc0,argv0); }
cnt = atoi( *argv++ )/2;
radius = GetDim(atof( *argv++ ))/2.0;
radius2 = GetDim(atof( *argv++ ))/2.0;
- BuildTrimedTitle( message, "\t", newTurnManufacturer, newTurnLeftDesc, newTurnLeftPartno );
+ BuildTrimedTitle( message, "\t", newTurnManufacturer, newTurnLeftDesc,
+ newTurnLeftPartno );
fprintf( stdout, "TURNOUT %s \"%s\"\n", curScaleName, PutTitle(message) );
for (inx=0; inx<cnt; inx++) {
fprintf( stdout, "\tP \"%d\" %d %d %d\n", inx+1, inx*3+1, inx*3+2, inx*3+3 );
}
for (inx=0; inx<cnt; inx++) {
- fprintf( stdout, "\tP \"%d\" %d %d %d\n", inx+1+cnt, -(inx*3+3), -(inx*3+2), -(inx*3+1) );
+ fprintf( stdout, "\tP \"%d\" %d %d %d\n", inx+1+cnt, -(inx*3+3), -(inx*3+2),
+ -(inx*3+1) );
}
for (inx=0; inx<cnt; inx++) {
ang = inx*180.0/cnt;
@@ -3743,8 +4053,10 @@ int main ( int argc, char * argv[] )
fprintf( stdout, "\tS 0 0 %0.6f %0.6f %0.6f %0.6f\n", x1, y1, -x1, -y1 );
fprintf( stdout, "\tS 0 0 %0.6f %0.6f %0.6f %0.6f\n", -x1, -y1, -x0, -y0 );
}
- fprintf( stdout, "\tA 16711680 0 %0.6f 0.000000 0.000000 0.000000 360.000000\n", radius2 );
- fprintf( stdout, "\tA 16711680 0 %0.6f 0.000000 0.000000 0.000000 360.000000\n", radius );
+ fprintf( stdout, "\tA 16711680 0 %0.6f 0.000000 0.000000 0.000000 360.000000\n",
+ radius2 );
+ fprintf( stdout, "\tA 16711680 0 %0.6f 0.000000 0.000000 0.000000 360.000000\n",
+ radius );
fprintf( stdout, "\t%s\n", END_SEGS );
break;
default:
diff --git a/app/bin/ctrain.c b/app/bin/ctrain.c
index f113ee5..015f9e8 100644
--- a/app/bin/ctrain.c
+++ b/app/bin/ctrain.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 "compound.h"
@@ -29,33 +29,31 @@
#include "layout.h"
#include "param.h"
#include "track.h"
-#include "trackx.h"
#include "common-ui.h"
long programMode;
long maxCouplingSpeed = 100;
long hideTrainsInTunnels;
-extern int doDrawTurnoutPosition;
-extern void NextTurnoutPosition(track_p);
+static int doDrawTurnoutPosition = 1;
static TRKTYP_T T_CAR = -1;
typedef enum { ST_NotOnTrack, ST_StopManual, ST_EndOfTrack, ST_OpenTurnout, ST_NoRoom, ST_Crashed } trainStatus_e;
typedef struct extraDataCar_t {
- extraDataBase_t base;
- traverseTrack_t trvTrk;
- long state;
- carItem_p item;
- double speed;
- BOOL_T pencils;
- BOOL_T direction;
- BOOL_T autoReverse;
- trainStatus_e status;
- DIST_T distance;
- coOrd couplerPos[2];
- unsigned int trkLayer;
+ extraDataBase_t base;
+ traverseTrack_t trvTrk;
+ long state;
+ carItem_p item;
+ double speed;
+ BOOL_T pencils;
+ BOOL_T direction;
+ BOOL_T autoReverse;
+ trainStatus_e status;
+ DIST_T distance;
+ coOrd couplerPos[2];
+ unsigned int trkLayer;
} extraDataCar_t;
#define NOTALAYER (127)
@@ -93,7 +91,7 @@ static wButton_p newcarB;
static void ControllerDialogSyncAll(void);
static STATUS_T CmdTrain(wAction_t, coOrd);
static wMenu_p trainPopupM;
-static wMenuPush_p trainPopupMI[10];
+static wMenuPush_p trainPopupMI[11];
static track_p followTrain;
static coOrd followCenter;
static BOOL_T trainsTimeoutPending;
@@ -101,14 +99,16 @@ static enum { TRAINS_STOP, TRAINS_RUN, TRAINS_IDLE, TRAINS_PAUSE } trainsState;
static wIcon_p stopI, goI;
static wIcon_p stopB, goB;
static void RestartTrains(void);
-static void DrawAllCars(void);
-static void UncoupleCars(track_p, track_p);
+static void DrawAllCars(track_p);
+//static void UncoupleCars(track_p, track_p);
static void TrainTimeEndPause(void);
static void TrainTimeStartPause(void);
static int log_trainMove;
static int log_trainPlayback;
+static track_p trainHighlighted;
+
static void PlaceCar(track_p);
@@ -133,128 +133,128 @@ static void PlaceCar(track_p);
*/
void CarGetPos(
- track_p car,
- coOrd * posR,
- ANGLE_T * angleR)
+ track_p car,
+ coOrd * posR,
+ ANGLE_T * angleR)
{
- struct extraDataCar_t * xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
+ struct extraDataCar_t * xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
- if (GetTrkType(car) != T_CAR) {
- AbortProg("getCarPos");
- }
+ CHECK (GetTrkType(car) == T_CAR);
- *posR = xx->trvTrk.pos;
- *angleR = xx->trvTrk.angle;
+ *posR = xx->trvTrk.pos;
+ *angleR = xx->trvTrk.angle;
}
void CarSetVisible(
- track_p car)
+ track_p car)
{
- struct extraDataCar_t * xx;
- int dir;
- dir = 0;
- WALK_CARS_START(car, xx, dir)
-
- if (GetTrkType(car) != T_CAR) {
- AbortProg("carSetVisible");
- }
-
- WALK_CARS_END(car, xx, dir)
- dir = 1-dir;
- WALK_CARS_START(car, xx, dir) {
- xx->state &= ~(CAR_STATE_ONHIDENTRACK);
- xx->trkLayer = NOTALAYER;
- }
- WALK_CARS_END(car, xx, dir)
+ struct extraDataCar_t * xx;
+ int dir;
+ dir = 0;
+ WALK_CARS_START(car, xx, dir)
+
+ CHECK( GetTrkType(car) == T_CAR );
+
+ WALK_CARS_END(car, xx, dir)
+ dir = 1-dir;
+ WALK_CARS_START(car, xx, dir) {
+ xx->state &= ~(CAR_STATE_ONHIDENTRACK);
+ xx->trkLayer = NOTALAYER;
+ }
+ WALK_CARS_END(car, xx, dir)
}
static struct {
- long index;
- coOrd pos;
- ANGLE_T angle;
- DIST_T length;
- DIST_T width;
- char desc[STR_SIZE];
- char number[STR_SIZE];
+ long index;
+ coOrd pos;
+ ANGLE_T angle;
+ DIST_T length;
+ DIST_T width;
+ char desc[STR_SIZE];
+ char number[STR_SIZE];
} carData;
typedef enum { IT, PN, AN, LN, WD, DE, NM } carDesc_e;
static descData_t carDesc[] = {
- /*IT*/ { DESC_LONG, N_("Index"), &carData.index },
- /*PN*/ { DESC_POS, N_("Position"), &carData.pos },
- /*AN*/ { DESC_ANGLE, N_("Angle"), &carData.angle },
- /*LN*/ { DESC_DIM, N_("Length"), &carData.length },
- /*WD*/ { DESC_DIM, N_("Width"), &carData.width },
- /*DE*/ { DESC_STRING, N_("Description"), &carData.desc, sizeof(carData.desc) },
- /*NM*/ { DESC_STRING, N_("Rep Marks"), &carData.number, sizeof(carData.number) },
- { DESC_NULL }
+ /*IT*/ { DESC_LONG, N_("Index"), &carData.index },
+ /*PN*/ { DESC_POS, N_("Position"), &carData.pos },
+ /*AN*/ { DESC_ANGLE, N_("Angle"), &carData.angle },
+ /*LN*/ { DESC_DIM, N_("Length"), &carData.length },
+ /*WD*/ { DESC_DIM, N_("Width"), &carData.width },
+ /*DE*/ { DESC_STRING, N_("Description"), &carData.desc, sizeof(carData.desc) },
+ /*NM*/ { DESC_STRING, N_("Report Marks"), &carData.number, sizeof(carData.number) },
+ { DESC_NULL }
};
static void UpdateCar(
- track_p trk,
- int inx,
- descData_p descUpd,
- BOOL_T needUndoStart)
-{
- if (inx == -1) {
- BOOL_T titleChanged;
- const char * cp;
- titleChanged = FALSE;
- cp = wStringGetValue((wString_p)carDesc[NM].control0);
- unsigned int max_str = sizeof(carData.number);
+ track_p trk,
+ int inx,
+ descData_p descUpd,
+ BOOL_T needUndoStart)
+{
+ unsigned int max_str;
+ struct extraDataCar_t *xx = GET_EXTRA_DATA(trk, T_CAR, extraDataCar_t);
+ if (inx == -1) {
+ BOOL_T numberChanged;
+ const char * cp;
+ numberChanged = FALSE;
+
+ cp = wStringGetValue((wString_p)carDesc[NM].control0);
+ max_str = sizeof(carData.number);
if (max_str && strlen(cp)>max_str) {
NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str-1);
- }
- if (cp && strcmp(carData.number, cp) != 0) {
- titleChanged = TRUE;
+ }
+ if (cp && strcmp(CarItemNumber(xx->item), cp) != 0) {
+ numberChanged = TRUE;
carData.number[0] = '\0';
strncat(carData.number, cp, max_str - 1);
- }
+ }
- if (!titleChanged) {
- return;
- }
+ if (!numberChanged) {
+ return;
+ }
- if (needUndoStart) {
- UndoStart(_("Change Track"), "Change Track");
- }
+ if (needUndoStart) {
+ UndoStart(_("Change Track"), "Change Track");
+ }
- UndoModify(trk);
- UndrawNewTrack(trk);
- DrawNewTrack(trk);
- return;
- }
+ UndoModify(trk);
+ CarItemSetNumber(xx->item, carData.number);
+ UndrawNewTrack(trk);
+ DrawNewTrack(trk);
+ return;
+ }
- UndrawNewTrack(trk);
+ UndrawNewTrack(trk);
- switch (inx) {
- case NM:
- break;
+ switch (inx) {
+ case NM:
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
- DrawNewTrack(trk);
+ DrawNewTrack(trk);
}
static void DescribeCar(
- track_p trk,
- char * str,
- CSIZE_T len)
-{
- struct extraDataCar_t *xx = GET_EXTRA_DATA(trk, T_CAR, extraDataCar_t);
- char * cp;
- coOrd size;
- CarItemSize(xx->item, &size);
- carData.length = size.x;
- carData.width = size.y;
- cp = CarItemDescribe(xx->item, 0, &carData.index);
+ track_p trk,
+ char * str,
+ CSIZE_T len)
+{
+ struct extraDataCar_t *xx = GET_EXTRA_DATA(trk, T_CAR, extraDataCar_t);
+ char * cp;
+ coOrd size;
+ CarItemSize(xx->item, &size);
+ carData.length = size.x;
+ carData.width = size.y;
+ cp = CarItemDescribe(xx->item, 0, &carData.index);
carData.number[0] = '\0';
strncat(carData.number, CarItemNumber(xx->item),
- sizeof(carData.number) - 1);
+ sizeof(carData.number) - 1);
str[0] = '\0';
strncat(str, cp, len - 1);
carData.pos = xx->trvTrk.pos;
@@ -263,70 +263,71 @@ static void DescribeCar(
carData.desc[0] = '\0';
strncat(carData.desc, cp, sizeof(carData.desc) - 1);
- carDesc[IT].mode =
- carDesc[PN].mode =
- carDesc[AN].mode =
- carDesc[LN].mode =
- carDesc[WD].mode = DESC_RO;
- carDesc[DE].mode =
- carDesc[NM].mode = DESC_RO;
- DoDescribe(_("Car"), trk, carDesc, UpdateCar);
+ carDesc[IT].mode =
+ carDesc[PN].mode =
+ carDesc[AN].mode =
+ carDesc[LN].mode =
+ carDesc[WD].mode = DESC_RO;
+ carDesc[DE].mode = DESC_RO;
+ carDesc[NM].mode = 0;
+ DoDescribe(_("Car"), trk, carDesc, UpdateCar);
}
void FlipTraverseTrack(
- traverseTrack_p trvTrk)
+ traverseTrack_p trvTrk)
{
- trvTrk->angle = NormalizeAngle(trvTrk->angle + 180.0);
+ trvTrk->angle = NormalizeAngle(trvTrk->angle + 180.0);
- if (trvTrk->length > 0) {
- trvTrk->dist = trvTrk->length - trvTrk->dist;
- }
+ if (trvTrk->length > 0) {
+ trvTrk->dist = trvTrk->length - trvTrk->dist;
+ }
}
BOOL_T TraverseTrack2(
- traverseTrack_p trvTrk0,
- DIST_T dist0)
+ traverseTrack_p trvTrk0,
+ DIST_T dist0)
{
- traverseTrack_t trvTrk = *trvTrk0;
- DIST_T dist = dist0;
+ traverseTrack_t trvTrk = *trvTrk0;
+ DIST_T dist = dist0;
- if (dist0 < 0) {
- dist = -dist;
- FlipTraverseTrack(&trvTrk);
- }
+ if (dist0 < 0) {
+ dist = -dist;
+ FlipTraverseTrack(&trvTrk);
+ }
- if (trvTrk.trk==NULL ||
- (!TraverseTrack(&trvTrk,&dist)) ||
- trvTrk.trk==NULL ||
- dist!=0.0) {
- Translate(&trvTrk.pos, trvTrk.pos, trvTrk.angle, dist);
+ if (trvTrk.trk==NULL ||
+ (!TraverseTrack(&trvTrk,&dist)) ||
+ trvTrk.trk==NULL ||
+ dist!=0.0) {
+ Translate(&trvTrk.pos, trvTrk.pos, trvTrk.angle, dist);
- }
+ }
- if (dist0 < 0) {
- FlipTraverseTrack(&trvTrk);
- }
+ if (dist0 < 0) {
+ FlipTraverseTrack(&trvTrk);
+ }
- *trvTrk0 = trvTrk;
- return TRUE;
+ *trvTrk0 = trvTrk;
+ return TRUE;
}
/***************
* When a track is deleted, cross check that the Traverse Track reference is removed.
*/
-EXPORT void CheckCarTraverse(track_p track) {
+EXPORT void CheckCarTraverse(track_p track)
+{
- track_p car;
+ track_p car;
for (car=NULL; TrackIterate(&car);) {
- if (GetTrkType(car) == T_CAR) {
- struct extraDataCar_t * xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
+ if (GetTrkType(car) == T_CAR) {
+ struct extraDataCar_t * xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
if (xx->trvTrk.trk == track) {
xx->trvTrk.trk=NULL;
xx->status = ST_NotOnTrack;
}
- }
+ }
}
}
@@ -337,225 +338,294 @@ static BOOL_T drawCarEnable = TRUE;
static BOOL_T noCarDraw = FALSE;
static void DrawCar(
- track_p car,
- drawCmd_p d,
- wDrawColor color)
+ track_p car,
+ drawCmd_p d,
+ wDrawColor color)
{
- struct extraDataCar_t * xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
- int dir;
- vector_t coupler[2];
- struct extraDataCar_t * xx1;
- int dir1;
-
- if (drawCarEnable == FALSE) {
- return;
- }
+ struct extraDataCar_t * xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
+ int dir;
+ vector_t coupler[2];
+ struct extraDataCar_t * xx1;
+ int dir1;
+
+ if (drawCarEnable == FALSE) {
+ return;
+ }
- if (d == &mapD) {
- return;
- }
+ if (d == &mapD) {
+ return;
+ }
- if (noCarDraw) {
- return;
- }
+ if (noCarDraw) {
+ return;
+ }
- if (hideTrainsInTunnels &&
- ((((xx->state&CAR_STATE_ONHIDENTRACK)!=0) && drawTunnel==0) ||
- (xx->trkLayer!=NOTALAYER && !GetLayerVisible(xx->trkLayer)))) {
- return;
- }
+ if (hideTrainsInTunnels &&
+ ((((xx->state&CAR_STATE_ONHIDENTRACK)!=0) && drawTunnel==0) ||
+ (xx->trkLayer!=NOTALAYER && !GetLayerVisible(xx->trkLayer)))) {
+ return;
+ }
- for (dir=0; dir<2; dir++) {
- track_p car1;
- coupler[dir].pos = xx->couplerPos[dir];
+ for (dir=0; dir<2; dir++) {
+ track_p car1;
+ coupler[dir].pos = xx->couplerPos[dir];
- if ((car1 = GetTrkEndTrk(car,dir))) {
- xx1 = GET_EXTRA_DATA(car1, T_CAR, extraDataCar_t);
- dir1 = (GetTrkEndTrk(car1,0)==car)?0:1;
- coupler[dir].angle = FindAngle(xx->couplerPos[dir], xx1->couplerPos[dir1]);
- } else {
- coupler[dir].angle = NormalizeAngle(xx->trvTrk.angle+(dir==0?0.0:180.0)-15.0);
- }
- }
+ if ((car1 = GetTrkEndTrk(car,dir))) {
+ xx1 = GET_EXTRA_DATA(car1, T_CAR, extraDataCar_t);
+ dir1 = (GetTrkEndTrk(car1,0)==car)?0:1;
+ coupler[dir].angle = FindAngle(xx->couplerPos[dir], xx1->couplerPos[dir1]);
+ } else {
+ coupler[dir].angle = NormalizeAngle(xx->trvTrk.angle+(dir==0?0.0:180.0)-15.0);
+ }
+ }
- CarItemDraw(d, xx->item, color, xx->direction, IsLocoMaster(xx), coupler, xx->pencils, xx->trvTrk.trk);
+ CarItemDraw(d, xx->item, color, xx->direction, IsLocoMaster(xx), coupler,
+ xx->pencils, xx->trvTrk.trk);
}
static DIST_T DistanceCar(
- track_p trk,
- coOrd * pos)
+ track_p trk,
+ coOrd * pos)
{
- struct extraDataCar_t * xx = GET_EXTRA_DATA(trk, T_CAR, extraDataCar_t);
- DIST_T dist;
- coOrd pos1;
- coOrd size;
+ struct extraDataCar_t * xx = GET_EXTRA_DATA(trk, T_CAR, extraDataCar_t);
+ DIST_T dist;
+ coOrd ends[4];
+ coOrd size;
+
+ if (IsIgnored(xx)) {
+ return 10000.0;
+ }
- if (IsIgnored(xx)) {
- return DIST_INF;
- }
+ if (hideTrainsInTunnels &&
+ ((((xx->state&CAR_STATE_ONHIDENTRACK)!=0) && drawTunnel==0) ||
+ (xx->trkLayer!=NOTALAYER && !GetLayerVisible(xx->trkLayer)))) {
+ return 10000.0;
+ }
- CarItemSize(xx->item,
- &size); /* TODO assumes xx->trvTrk.pos is the car center */
- dist = FindDistance(*pos, xx->trvTrk.pos);
+ CarItemSize(xx->item,
+ &size);
- if (dist < size.x/2.0) {
- pos1 = *pos;
- Rotate(&pos1, xx->trvTrk.pos, -xx->trvTrk.angle);
- pos1.x += -xx->trvTrk.pos.x + size.y/2.0; /* TODO: why not size.x? */
- pos1.y += -xx->trvTrk.pos.y + size.x/2.0;
+ size.x = CarItemCoupledLength(xx->item); /* Coupling included */
- if (pos1.x >= 0 && pos1.x <= size.y &&
- pos1.y >= 0 && pos1.y <= size.x) {
- dist = 0;
- }
- }
+ coOrd carPos;
+ CarItemPos(xx->item,
+ &carPos);
- *pos = xx->trvTrk.pos;
- return dist;
-}
+ dist = FindDistance(*pos, carPos); /* Basic distance to center */
+ if (dist < size.x/2.0
+ +size.y/2.0) { /* Crude circle to evaluate if "close" */
+
+ coOrd point = *pos;
+ point.x += -carPos.x;
+ point.y += -carPos.y;
+ Rotate(&point,zero,-(xx->trvTrk.angle+90.0)); /* Convert to simple coOrds */
+
+ for (int i=0; i<4; i++) {
+ ends[i].x = 0.0;
+ ends[i].y = 0.0;
+ }
+ ends[0].x = size.x/2.0;
+ ends[0].y = size.y/2.0;
+ ends[1].x = - size.x/2.0;
+ ends[1].y = size.y/2.0;
+ ends[2].x = - size.x/2.0;
+ ends[2].y = - size.y/2.0;
+ ends[3].x = size.x/2.0;
+ ends[3].y = - size.y/2.0;
+
+
+ /*
+ * A | B | C
+ * --1------------------------0---
+ * D | 0.0 | E
+ * --2------------------------3---
+ * F | G | H
+ */
+
+ if ((point.x >= ends[2].x) && (point.x <= ends[0].x) && (point.y >= ends[2].y)
+ && (point.y <= ends[0].y)) {
+ dist = 0.0; /* center */
+ *pos = carPos;
+ } else {
+ if (point.x > ends[2].x && point.x < ends[0].x ) {
+ if (point.y > ends[0].y) {
+ dist = fabs(point.y - ends[0].y); /* B */
+ point.y = ends[0].y;
+ } else {
+ dist = fabs(point.y - ends[2].y); /* G */
+ point.y = ends[2].y;
+ }
+ } else if (point.y > ends[2].y && point.y < ends[0].y) {
+ if (point.x > ends[0].x) {
+ dist = fabs(point.x - ends[0].x); /* E */
+ point.x = ends[0].x;
+ } else {
+ dist = fabs(point.x - ends[2].x); /* D */
+ point.x = ends[2].x;
+ }
+ } else { /* A,C,F,G */
+ for (int i=0; i<4; i++) {
+ if (dist>FindDistance(point,ends[i])) {
+ dist = FindDistance(point,ends[i]);
+ point = ends[i];
+ }
+ }
+ }
+ Rotate(&point,zero,(xx->trvTrk.angle+90.0));
+ point.x +=carPos.x;
+ point.y +=carPos.y;
+ *pos = point;
+ }
+
+ }
+
+ return dist;
+}
static void SetCarBoundingBox(
- track_p car)
+ track_p car)
{
- struct extraDataCar_t * xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
- coOrd lo, hi, p[4];
- int inx;
- coOrd size;
- /* TODO: should be bounding box of all pieces aligned on track */
- CarItemSize(xx->item,
- &size); /* TODO assumes xx->trvTrk.pos is the car center */
- Translate(&p[0], xx->trvTrk.pos, xx->trvTrk.angle, size.x/2.0);
- Translate(&p[1], p[0], xx->trvTrk.angle+90, size.y/2.0);
- Translate(&p[0], p[0], xx->trvTrk.angle-90, size.y/2.0);
- Translate(&p[2], xx->trvTrk.pos, xx->trvTrk.angle+180, size.x/2.0);
- Translate(&p[3], p[2], xx->trvTrk.angle+90, size.y/2.0);
- Translate(&p[2], p[2], xx->trvTrk.angle-90, size.y/2.0);
- lo = hi = p[0];
-
- for (inx = 1; inx < 4; inx++) {
- if (p[inx].x < lo.x) {
- lo.x = p[inx].x;
- }
+ struct extraDataCar_t * xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
+ coOrd lo, hi, p[4];
+ int inx;
+ coOrd size;
+ /* TODO: should be bounding box of all pieces aligned on track */
+ CarItemSize(xx->item,
+ &size); /* TODO assumes xx->trvTrk.pos is the car center */
+ Translate(&p[0], xx->trvTrk.pos, xx->trvTrk.angle, size.x/2.0);
+ Translate(&p[1], p[0], xx->trvTrk.angle+90, size.y/2.0);
+ Translate(&p[0], p[0], xx->trvTrk.angle-90, size.y/2.0);
+ Translate(&p[2], xx->trvTrk.pos, xx->trvTrk.angle+180, size.x/2.0);
+ Translate(&p[3], p[2], xx->trvTrk.angle+90, size.y/2.0);
+ Translate(&p[2], p[2], xx->trvTrk.angle-90, size.y/2.0);
+ lo = hi = p[0];
+
+ for (inx = 1; inx < 4; inx++) {
+ if (p[inx].x < lo.x) {
+ lo.x = p[inx].x;
+ }
- if (p[inx].y < lo.y) {
- lo.y = p[inx].y;
- }
+ if (p[inx].y < lo.y) {
+ lo.y = p[inx].y;
+ }
- if (p[inx].x > hi.x) {
- hi.x = p[inx].x;
- }
+ if (p[inx].x > hi.x) {
+ hi.x = p[inx].x;
+ }
- if (p[inx].y > hi.y) {
- hi.y = p[inx].y;
- }
- }
+ if (p[inx].y > hi.y) {
+ hi.y = p[inx].y;
+ }
+ }
- SetBoundingBox(car, hi, lo);
+ SetBoundingBox(car, hi, lo);
}
track_p NewCar(
- wIndex_t index,
- carItem_p item,
- coOrd pos,
- ANGLE_T angle)
-{
- track_p trk;
- struct extraDataCar_t * xx;
- trk = NewTrack(index, T_CAR, 2, sizeof(*xx));
- /*SetEndPts( trk, 0 );*/
- xx = GET_EXTRA_DATA(trk, T_CAR, extraDataCar_t);
- /*SetTrkVisible( trk, IsVisible(xx) );*/
- xx->item = item;
- xx->trvTrk.pos = pos;
- xx->trvTrk.angle = angle;
- xx->state = 0;
- SetCarBoundingBox(trk);
- CarItemSetTrack(item, trk);
- PlaceCar(trk);
- return trk;
+ wIndex_t index,
+ carItem_p item,
+ coOrd pos,
+ ANGLE_T angle)
+{
+ track_p trk;
+ struct extraDataCar_t * xx;
+ trk = NewTrack(index, T_CAR, 2, sizeof(*xx));
+ /*SetEndPts( trk, 0 );*/
+ xx = GET_EXTRA_DATA(trk, T_CAR, extraDataCar_t);
+ /*SetTrkVisible( trk, IsVisible(xx) );*/
+ xx->item = item;
+ xx->trvTrk.pos = pos;
+ xx->trvTrk.angle = angle;
+ xx->state = 0;
+ SetCarBoundingBox(trk);
+ CarItemSetTrack(item, trk);
+ PlaceCar(trk);
+ return trk;
}
static void DeleteCar(
- track_p trk)
+ track_p trk)
{
- struct extraDataCar_t * xx = GET_EXTRA_DATA(trk, T_CAR, extraDataCar_t);
- CarItemSetTrack(xx->item, NULL);
+ struct extraDataCar_t * xx = GET_EXTRA_DATA(trk, T_CAR, extraDataCar_t);
+ CarItemSetTrack(xx->item, NULL);
}
static BOOL_T ReadCar(
- char * line)
+ char * line)
{
- return CarItemRead(line);
+ return CarItemRead(line);
}
static BOOL_T WriteCar(
- track_p trk,
- FILE * f)
+ track_p trk,
+ FILE * f)
{
- BOOL_T rc = TRUE;
- return rc;
+ BOOL_T rc = TRUE;
+ return rc;
}
static void MoveCar(
- track_p car,
- coOrd pos)
+ track_p car,
+ coOrd pos)
{
- struct extraDataCar_t *xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
- xx->trvTrk.pos.x += pos.x;
- xx->trvTrk.pos.y += pos.y;
- xx->trvTrk.trk = NULL;
- PlaceCar(car);
- SetCarBoundingBox(car);
+ struct extraDataCar_t *xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
+ xx->trvTrk.pos.x += pos.x;
+ xx->trvTrk.pos.y += pos.y;
+ xx->trvTrk.trk = NULL;
+ PlaceCar(car);
+ SetCarBoundingBox(car);
}
static void RotateCar(
- track_p car,
- coOrd pos,
- ANGLE_T angle)
+ track_p car,
+ coOrd pos,
+ ANGLE_T angle)
{
- struct extraDataCar_t *xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
- Rotate(&xx->trvTrk.pos, pos, angle);
- xx->trvTrk.angle = NormalizeAngle(xx->trvTrk.angle + angle);
- xx->trvTrk.trk = NULL;
- PlaceCar(car);
- SetCarBoundingBox(car);
+ struct extraDataCar_t *xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
+ Rotate(&xx->trvTrk.pos, pos, angle);
+ xx->trvTrk.angle = NormalizeAngle(xx->trvTrk.angle + angle);
+ xx->trvTrk.trk = NULL;
+ PlaceCar(car);
+ SetCarBoundingBox(car);
}
static BOOL_T QueryCar(track_p trk, int query)
{
- switch (query) {
- case Q_NODRAWENDPT:
- return TRUE;
- case Q_ISTRAIN:
- return TRUE;
-
- default:
- return FALSE;
- }
+ switch (query) {
+ case Q_NODRAWENDPT:
+ return TRUE;
+ case Q_ISTRAIN:
+ return TRUE;
+
+ default:
+ return FALSE;
+ }
}
static BOOL_T StoreCar(
- track_p car,
- void **data,
- long * len) {
+ track_p car,
+ void **data,
+ long * len)
+{
struct extraDataCar_t *xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
return StoreCarItem(xx->item,data,len);
}
-static BOOL_T ReplayCar (track_p car, void *data,long len) {
+static BOOL_T ReplayCar (track_p car, void *data,long len)
+{
struct extraDataCar_t *xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
return ReplayCarItem(xx->item,data,len);
@@ -570,41 +640,41 @@ static wBool_t CompareCar( track_cp trk1, track_cp trk2 )
static trackCmd_t carCmds = {
- "CAR ",
- DrawCar, /* draw */
- DistanceCar, /* distance */
- DescribeCar, /* describe */
- DeleteCar, /* delete */
- WriteCar, /* write */
- ReadCar, /* read */
- MoveCar, /* move */
- RotateCar, /* rotate */
- NULL, /* rescale */
- NULL, /* audit */
- NULL, /* getAngle */
- NULL, /* split */
- NULL, /* traverse */
- NULL, /* enumerate */
- NULL, /* redraw*/
- NULL, /* trim*/
- NULL, /* merge*/
- NULL, /* modify */
- NULL, /* getLength */
- NULL, /* getParams */
- NULL, /* moveEndPt */
- QueryCar, /* query */
- NULL, /* ungroup */
- NULL, /* flip */
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- ReplayCar,
- StoreCar,
- NULL, /*activate*/
- CompareCar
+ "CAR ",
+ DrawCar, /* draw */
+ DistanceCar, /* distance */
+ DescribeCar, /* describe */
+ DeleteCar, /* delete */
+ WriteCar, /* write */
+ ReadCar, /* read */
+ MoveCar, /* move */
+ RotateCar, /* rotate */
+ NULL, /* rescale */
+ NULL, /* audit */
+ NULL, /* getAngle */
+ NULL, /* split */
+ NULL, /* traverse */
+ NULL, /* enumerate */
+ NULL, /* redraw*/
+ NULL, /* trim*/
+ NULL, /* merge*/
+ NULL, /* modify */
+ NULL, /* getLength */
+ NULL, /* getParams */
+ NULL, /* moveEndPt */
+ QueryCar, /* query */
+ NULL, /* ungroup */
+ NULL, /* flip */
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ ReplayCar,
+ StoreCar,
+ NULL, /*activate*/
+ CompareCar
};
/*
@@ -621,36 +691,35 @@ static int numTrainDlg;
#define MAX_SPEED (100.0)
typedef struct {
- wWin_p win;
- wIndex_t inx;
- track_p train;
- long direction;
- long followMe;
- long autoReverse;
- coOrd pos;
- char posS[STR_SHORT_SIZE];
- DIST_T speed;
- char speedS[10];
- paramGroup_p trainPGp;
+ wWin_p win;
+ wIndex_t inx;
+ track_p train;
+ long direction;
+ long followMe;
+ long autoReverse;
+ coOrd pos;
+ char posS[STR_SHORT_SIZE];
+ DIST_T speed;
+ char speedS[10];
+ paramGroup_p trainPGp;
} trainControlDlg_t, * trainControlDlg_p;
static trainControlDlg_t * curTrainDlg;
static void SpeedRedraw(wDraw_p, void *, wWinPix_t, wWinPix_t);
static void SpeedAction(wAction_t, coOrd);
-static void LocoListChangeEntry(track_p, track_p);
static void CmdTrainExit(void * unused);
drawCmd_t speedD = {
- NULL,
- &screenDrawFuncs,
- 0,
- 1.0,
- 0.0,
- { 0.0, 0.0 },
- { 0.0, 0.0 },
- Pix2CoOrd,
- CoOrd2Pix
+ NULL,
+ &screenDrawFuncs,
+ 0,
+ 1.0,
+ 0.0,
+ { 0.0, 0.0 },
+ { 0.0, 0.0 },
+ Pix2CoOrd,
+ CoOrd2Pix
};
static paramDrawData_t speedParamData = { SLIDER_WIDTH, SLIDER_HEIGHT, SpeedRedraw, SpeedAction, &speedD };
#ifndef WINDOWS
@@ -661,56 +730,56 @@ static char * trainAutoReverseLabels[] = { N_("Auto Reverse"), NULL };
static paramData_t trainPLs[] = {
#define I_LIST (0)
#ifdef WINDOWS
- /*0*/ { PD_DROPLIST, NULL, "list", PDO_NOPREF|PDO_NOPSHUPD, I2VP(120), NULL, 0 },
+ /*0*/ { PD_DROPLIST, NULL, "list", PDO_NOPREF|PDO_NOPSHUPD, I2VP(120), NULL, 0 },
#else
- /*0*/ { PD_LIST, NULL, "list", PDO_NOPREF|PDO_NOPSHUPD, &listData, NULL, 0 },
+ /*0*/ { PD_LIST, NULL, "list", PDO_NOPREF|PDO_NOPSHUPD, &listData, NULL, 0 },
#endif
#define I_STATUS (1)
- { PD_MESSAGE, NULL, NULL, 0, I2VP(120) },
+ { PD_MESSAGE, NULL, NULL, 0, I2VP(120) },
#define I_POS (2)
- { PD_MESSAGE, NULL, NULL, 0, I2VP(120) },
+ { PD_MESSAGE, NULL, NULL, 0, I2VP(120) },
#define I_SLIDER (3)
- { PD_DRAW, NULL, "speed", PDO_NOPSHUPD|PDO_DLGSETY, &speedParamData },
+ { PD_DRAW, NULL, "speed", PDO_NOPSHUPD|PDO_DLGSETY, &speedParamData },
#define I_DIST (4)
- { PD_STRING, NULL, "distance", PDO_DLGNEWCOLUMN, I2VP(100-SLIDER_WIDTH), NULL, BO_READONLY },
+ { PD_STRING, NULL, "distance", PDO_DLGNEWCOLUMN, I2VP(100-SLIDER_WIDTH), NULL, BO_READONLY },
#define I_ZERO (5)
- { PD_BUTTON, NULL, "zeroDistance", PDO_NOPSHUPD|PDO_NOPREF|PDO_DLGHORZ, NULL, NULL, BO_ICON },
+ { PD_BUTTON, NULL, "zeroDistance", PDO_NOPSHUPD|PDO_NOPREF|PDO_DLGHORZ, NULL, NULL, BO_ICON },
#define I_GOTO (6)
- { PD_BUTTON, NULL, "goto", PDO_NOPSHUPD|PDO_NOPREF|PDO_DLGWIDE, NULL, N_("Find") },
+ { PD_BUTTON, NULL, "goto", PDO_NOPSHUPD|PDO_NOPREF|PDO_DLGWIDE, NULL, N_("Find") },
#define I_FOLLOW (7)
- { PD_TOGGLE, NULL, "follow", PDO_NOPREF|PDO_DLGWIDE, trainFollowMeLabels, NULL, BC_HORZ|BC_NOBORDER },
+ { PD_TOGGLE, NULL, "follow", PDO_NOPREF|PDO_DLGWIDE, trainFollowMeLabels, NULL, BC_HORZ|BC_NOBORDER },
#define I_AUTORVRS (8)
- { PD_TOGGLE, NULL, "autoreverse", PDO_NOPREF, trainAutoReverseLabels, NULL, BC_HORZ|BC_NOBORDER },
+ { PD_TOGGLE, NULL, "autoreverse", PDO_NOPREF, trainAutoReverseLabels, NULL, BC_HORZ|BC_NOBORDER },
#define I_DIR (9)
- { PD_BUTTON, NULL, "direction", PDO_NOPREF|PDO_DLGWIDE, NULL, N_("Forward"), 0 },
+ { PD_BUTTON, NULL, "direction", PDO_NOPREF|PDO_DLGWIDE, NULL, N_("Forward"), 0 },
#define I_STOP (10)
- { PD_BUTTON, NULL, "stop", PDO_DLGWIDE, NULL, N_("Stop") },
+ { PD_BUTTON, NULL, "stop", PDO_DLGWIDE, NULL, N_("Stop") },
#define I_SPEED (11)
- { PD_MESSAGE, NULL, NULL, PDO_DLGIGNOREX, I2VP(120) }
+ { PD_MESSAGE, NULL, NULL, PDO_DLGIGNOREX, I2VP(120) }
};
static paramGroup_t trainPG = { "train", 0, trainPLs, COUNT( trainPLs ) };
typedef struct {
- track_p loco;
- BOOL_T running;
+ track_p loco;
+ BOOL_T running;
} locoList_t;
dynArr_t locoList_da;
#define locoList(N) DYNARR_N( locoList_t, locoList_da, N )
static wIndex_t FindLoco(
- track_p loco)
+ track_p loco)
{
- wIndex_t inx;
+ wIndex_t inx;
- for (inx = 0; inx<locoList_da.cnt; inx++) {
- if (locoList(inx).loco == loco) {
- return inx;
- }
- }
+ for (inx = 0; inx<locoList_da.cnt; inx++) {
+ if (locoList(inx).loco == loco) {
+ return inx;
+ }
+ }
- return -1;
+ return -1;
}
/**
@@ -724,34 +793,34 @@ static wIndex_t FindLoco(
*/
static void SpeedRedraw(
- wDraw_p d,
- void * context,
- wWinPix_t w,
- wWinPix_t h)
-{
- wDrawPix_t y;
- trainControlDlg_p dlg = (trainControlDlg_p)context;
- struct extraDataCar_t * xx;
- wDrawColor drawColor;
- wDrawClear(d);
-
- if (dlg == NULL || dlg->train == NULL) {
- return;
- }
-
- xx = GET_EXTRA_DATA(dlg->train, T_CAR, extraDataCar_t);
-
- if (xx->speed > MAX_SPEED) {
- xx->speed = MAX_SPEED;
- }
-
- if (xx->speed < 0) {
- xx->speed = 0;
- }
-
- y = (xx->speed/MAX_SPEED*((SLIDER_HEIGHT-SLIDER_THICKNESS))
- +SLIDER_THICKNESS/2);
- drawColor = wDrawFindColor(wRGB(160, 160, 160));
+ wDraw_p d,
+ void * context,
+ wWinPix_t w,
+ wWinPix_t h)
+{
+ wDrawPix_t y;
+ trainControlDlg_p dlg = (trainControlDlg_p)context;
+ struct extraDataCar_t * xx;
+ wDrawColor drawColor;
+ wDrawClear(d);
+
+ if (dlg == NULL || dlg->train == NULL) {
+ return;
+ }
+
+ xx = GET_EXTRA_DATA(dlg->train, T_CAR, extraDataCar_t);
+
+ if (xx->speed > MAX_SPEED) {
+ xx->speed = MAX_SPEED;
+ }
+
+ if (xx->speed < 0) {
+ xx->speed = 0;
+ }
+
+ y = (xx->speed/MAX_SPEED*((SLIDER_HEIGHT-SLIDER_THICKNESS))
+ +SLIDER_THICKNESS/2);
+ drawColor = wDrawFindColor(wRGB(160, 160, 160));
coOrd pos0, pos1, siz;
y /= speedD.dpi;
siz.x = SLIDER_WIDTH/speedD.dpi;
@@ -766,547 +835,551 @@ static void SpeedRedraw(
DrawLine( &speedD, pos0, pos1, 3, drawColorRed );
pos0.y = pos1.y = y + siz.y/2.0;
DrawLine( &speedD, pos0, pos1, 1, drawColorBlack );
- sprintf(dlg->speedS, "%3d %s",
- (int)(units==UNITS_ENGLISH?xx->speed:xx->speed*1.6),
- (units==UNITS_ENGLISH?"mph":"km/h"));
- ParamLoadMessage(dlg->trainPGp, I_SPEED, dlg->speedS);
- LOG(log_trainPlayback, 3, ("Speed = %d\n", (int)xx->speed));
+ sprintf(dlg->speedS, "%3d %s",
+ (int)(units==UNITS_ENGLISH?xx->speed:xx->speed*1.6),
+ (units==UNITS_ENGLISH?"mph":"km/h"));
+ ParamLoadMessage(dlg->trainPGp, I_SPEED, dlg->speedS);
+ LOG(log_trainPlayback, 3, ("Speed = %d\n", (int)xx->speed));
}
static void SpeedAction(
- wAction_t action,
- coOrd pos)
+ wAction_t action,
+ coOrd pos)
{
- trainControlDlg_p dlg = curTrainDlg;
- struct extraDataCar_t * xx;
- FLOAT_T speed;
- BOOL_T startStop;
+ trainControlDlg_p dlg = curTrainDlg;
+ struct extraDataCar_t * xx;
+ FLOAT_T speed;
+ BOOL_T startStop;
- if (dlg == NULL || dlg->train == NULL) {
- return;
- }
+ if (dlg == NULL || dlg->train == NULL) {
+ return;
+ }
- xx = GET_EXTRA_DATA(dlg->train, T_CAR, extraDataCar_t);
+ xx = GET_EXTRA_DATA(dlg->train, T_CAR, extraDataCar_t);
- switch (action) {
- case C_DOWN:
- InfoMessage("");
+ switch (action) {
+ case C_DOWN:
+ InfoMessage("");
- case C_MOVE:
- case C_UP:
- TrainTimeEndPause();
+ case C_MOVE:
+ case C_UP:
+ TrainTimeEndPause();
- if (IsOnTrack(xx)) {
- speed = ((FLOAT_T)((pos.y*speedD.dpi)-SLIDER_THICKNESS/2))/
- (SLIDER_HEIGHT-SLIDER_THICKNESS)*MAX_SPEED;
- } else {
- speed = 0;
- }
+ if (IsOnTrack(xx)) {
+ speed = ((FLOAT_T)((pos.y*speedD.dpi)-SLIDER_THICKNESS/2))/
+ (SLIDER_HEIGHT-SLIDER_THICKNESS)*MAX_SPEED;
+ } else {
+ speed = 0;
+ }
- if (speed > MAX_SPEED) {
- speed = MAX_SPEED;
- }
+ if (speed > MAX_SPEED) {
+ speed = MAX_SPEED;
+ }
- if (speed < 0) {
- speed = 0;
- }
+ if (speed < 0) {
+ speed = 0;
+ }
- startStop = (xx->speed == 0) != (speed == 0);
- xx->speed = speed;
- SpeedRedraw((wDraw_p)dlg->trainPGp->paramPtr[I_SLIDER].control, dlg,
- SLIDER_WIDTH, SLIDER_HEIGHT);
+ startStop = (xx->speed == 0) != (speed == 0);
+ xx->speed = speed;
+ SpeedRedraw((wDraw_p)dlg->trainPGp->paramPtr[I_SLIDER].control, dlg,
+ SLIDER_WIDTH, SLIDER_HEIGHT);
- if (startStop) {
- if (xx->speed == 0) {
- xx->status = ST_StopManual;
- }
+ if (startStop) {
+ if (xx->speed == 0) {
+ xx->status = ST_StopManual;
+ }
- LocoListChangeEntry(dlg->train, dlg->train);
- }
+ LocoListChangeEntry(dlg->train, dlg->train);
+ }
- TrainTimeStartPause();
+ TrainTimeStartPause();
- if (trainsState == TRAINS_IDLE) {
- RestartTrains();
- }
+ if (trainsState == TRAINS_IDLE) {
+ RestartTrains();
+ }
- break;
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
}
static void ControllerDialogSync(
- trainControlDlg_p dlg)
-{
- struct extraDataCar_t * xx=NULL;
- wIndex_t inx;
- BOOL_T dir;
- BOOL_T followMe;
- BOOL_T autoReverse;
- coOrd pos;
-
- if (dlg == NULL) {
- return;
- }
-
- inx = wListGetIndex((wList_p)dlg->trainPGp->paramPtr[I_LIST].control);
-
- if (dlg->train) {
- if (inx >= 0 && inx < locoList_da.cnt && dlg->train &&
- dlg->train != locoList(inx).loco) {
- inx = FindLoco(dlg->train);
-
- if (inx >= 0) {
- wListSetIndex((wList_p)dlg->trainPGp->paramPtr[I_LIST].control, inx);
- }
- }
- } else {
- wListSetIndex((wList_p)dlg->trainPGp->paramPtr[I_LIST].control, -1);
- }
-
- if (dlg->train) {
- char * statusMsg;
- DIST_T speed;
- xx = GET_EXTRA_DATA(dlg->train, T_CAR, extraDataCar_t);
- dir = xx->direction==0?0:1;
- speed = xx->speed;
- pos = xx->trvTrk.pos;
- followMe = followTrain == dlg->train;
- autoReverse = xx->autoReverse;
-
- if (xx->trvTrk.trk == NULL) {
- if (xx->status == ST_Crashed) {
- statusMsg = _("Crashed");
- } else {
- statusMsg = _("Not on Track");
- }
- } else if (xx->speed > 0) {
- if (trainsState == TRAINS_STOP) {
- statusMsg = _("Trains Paused");
- } else {
- statusMsg = _("Running");
- }
- } else {
- switch (xx->status) {
- case ST_EndOfTrack:
- statusMsg = _("End of Track");
- break;
-
- case ST_OpenTurnout:
- statusMsg = _("Open Turnout");
- break;
-
- case ST_StopManual:
- statusMsg = _("Manual Stop");
- break;
-
- case ST_NoRoom:
- statusMsg = _("No Room");
- break;
-
- case ST_Crashed:
- statusMsg = _("Crashed");
- break;
-
- default:
- statusMsg = _("Unknown Status");
- break;
- }
- }
-
- ParamLoadMessage(dlg->trainPGp, I_STATUS, statusMsg);
- } else {
- dir = 0;
- followMe = FALSE;
- autoReverse = FALSE;
- ParamLoadMessage(dlg->trainPGp, I_STATUS, _("No trains"));
- }
-
- if (dlg->followMe != followMe) {
- dlg->followMe = followMe;
- ParamLoadControl(dlg->trainPGp, I_FOLLOW);
- }
-
- if (dlg->autoReverse != autoReverse) {
- dlg->autoReverse = autoReverse;
- ParamLoadControl(dlg->trainPGp, I_AUTORVRS);
- }
-
- if (dlg->direction != dir) {
- dlg->direction = dir;
- wButtonSetLabel((wButton_p)dlg->trainPGp->paramPtr[I_DIR].control,
- (dlg->direction?_("Reverse"):_("Forward")));
- }
-
- if (dlg->train) {
- if (dlg->posS[0] == '\0' ||
- dlg->pos.x != xx->trvTrk.pos.x ||
- dlg->pos.y != xx->trvTrk.pos.y) {
- long format;
- dlg->pos = xx->trvTrk.pos;
- format = GetDistanceFormat();
- format &= ~DISTFMT_DECS;
- sprintf(dlg->posS, "X:%s Y:%s",
- FormatDistanceEx(xx->trvTrk.pos.x, format),
- FormatDistanceEx(xx->trvTrk.pos.y, format));
- ParamLoadMessage(dlg->trainPGp, I_POS, dlg->posS);
- }
-
- if (dlg->speed != xx->speed) {
- dlg->speed = xx->speed;
- sprintf(dlg->speedS, "%3d",
- (int)(units==UNITS_ENGLISH?xx->speed:xx->speed*1.6));
- ParamLoadMessage(dlg->trainPGp, I_SPEED, dlg->speedS);
- SpeedRedraw((wDraw_p)dlg->trainPGp->paramPtr[I_SLIDER].control, dlg,
- SLIDER_WIDTH, SLIDER_HEIGHT);
- }
-
- ParamLoadMessage(dlg->trainPGp, I_DIST, FormatDistance(xx->distance));
- } else {
- if (dlg->posS[0] != '\0') {
- dlg->posS[0] = '\0';
- ParamLoadMessage(dlg->trainPGp, I_POS, dlg->posS);
- }
-
- if (dlg->speed >= 0) {
- dlg->speed = -1;
- dlg->speedS[0] = '\0';
- ParamLoadMessage(dlg->trainPGp, I_SPEED, dlg->speedS);
- wDrawClear((wDraw_p)dlg->trainPGp->paramPtr[I_SLIDER].control);
- }
-
- ParamLoadMessage(dlg->trainPGp, I_DIST, "");
- }
+ trainControlDlg_p dlg)
+{
+ struct extraDataCar_t * xx=NULL;
+ wIndex_t inx;
+ BOOL_T dir;
+ BOOL_T followMe;
+ BOOL_T autoReverse;
+// coOrd pos;
+
+ if (dlg == NULL) {
+ return;
+ }
+
+ inx = wListGetIndex((wList_p)dlg->trainPGp->paramPtr[I_LIST].control);
+
+ if (dlg->train) {
+ if (inx >= 0 && inx < locoList_da.cnt && dlg->train &&
+ dlg->train != locoList(inx).loco) {
+ inx = FindLoco(dlg->train);
+
+ if (inx >= 0) {
+ wListSetIndex((wList_p)dlg->trainPGp->paramPtr[I_LIST].control, inx);
+ }
+ }
+ } else {
+ wListSetIndex((wList_p)dlg->trainPGp->paramPtr[I_LIST].control, -1);
+ }
+
+ if (dlg->train) {
+ char * statusMsg;
+// DIST_T speed;
+ xx = GET_EXTRA_DATA(dlg->train, T_CAR, extraDataCar_t);
+ dir = xx->direction==0?0:1;
+// speed = xx->speed;
+// pos = xx->trvTrk.pos;
+ followMe = followTrain == dlg->train;
+ autoReverse = xx->autoReverse;
+
+ if (xx->trvTrk.trk == NULL) {
+ if (xx->status == ST_Crashed) {
+ statusMsg = _("Crashed");
+ } else {
+ statusMsg = _("Not on Track");
+ }
+ } else if (xx->speed > 0) {
+ if (trainsState == TRAINS_STOP) {
+ statusMsg = _("Trains Paused");
+ } else {
+ statusMsg = _("Running");
+ }
+ } else {
+ switch (xx->status) {
+ case ST_EndOfTrack:
+ statusMsg = _("End of Track");
+ break;
+
+ case ST_OpenTurnout:
+ statusMsg = _("Open Turnout");
+ break;
+
+ case ST_StopManual:
+ statusMsg = _("Manual Stop");
+ break;
+
+ case ST_NoRoom:
+ statusMsg = _("No Room");
+ break;
+
+ case ST_Crashed:
+ statusMsg = _("Crashed");
+ break;
+
+ default:
+ statusMsg = _("Unknown Status");
+ break;
+ }
+ }
+
+ ParamLoadMessage(dlg->trainPGp, I_STATUS, statusMsg);
+ } else {
+ dir = 0;
+ followMe = FALSE;
+ autoReverse = FALSE;
+ ParamLoadMessage(dlg->trainPGp, I_STATUS, _("No trains"));
+ }
+
+ if (dlg->followMe != followMe) {
+ dlg->followMe = followMe;
+ ParamLoadControl(dlg->trainPGp, I_FOLLOW);
+ }
+
+ if (dlg->autoReverse != autoReverse) {
+ dlg->autoReverse = autoReverse;
+ ParamLoadControl(dlg->trainPGp, I_AUTORVRS);
+ }
+
+ if (dlg->direction != dir) {
+ dlg->direction = dir;
+ wButtonSetLabel((wButton_p)dlg->trainPGp->paramPtr[I_DIR].control,
+ (dlg->direction?_("Reverse"):_("Forward")));
+ }
+
+ if (dlg->train) {
+ if (dlg->posS[0] == '\0' ||
+ dlg->pos.x != xx->trvTrk.pos.x ||
+ dlg->pos.y != xx->trvTrk.pos.y) {
+ long format;
+ dlg->pos = xx->trvTrk.pos;
+ format = GetDistanceFormat();
+ format &= ~DISTFMT_DECS;
+ sprintf(dlg->posS, "X:%s Y:%s",
+ FormatDistanceEx(xx->trvTrk.pos.x, format),
+ FormatDistanceEx(xx->trvTrk.pos.y, format));
+ ParamLoadMessage(dlg->trainPGp, I_POS, dlg->posS);
+ }
+
+ if (dlg->speed != xx->speed) {
+ dlg->speed = xx->speed;
+ sprintf(dlg->speedS, "%3d",
+ (int)(units==UNITS_ENGLISH?xx->speed:xx->speed*1.6));
+ ParamLoadMessage(dlg->trainPGp, I_SPEED, dlg->speedS);
+ SpeedRedraw((wDraw_p)dlg->trainPGp->paramPtr[I_SLIDER].control, dlg,
+ SLIDER_WIDTH, SLIDER_HEIGHT);
+ }
+
+ ParamLoadMessage(dlg->trainPGp, I_DIST, FormatDistance(xx->distance));
+ } else {
+ if (dlg->posS[0] != '\0') {
+ dlg->posS[0] = '\0';
+ ParamLoadMessage(dlg->trainPGp, I_POS, dlg->posS);
+ }
+
+ if (dlg->speed >= 0) {
+ dlg->speed = -1;
+ dlg->speedS[0] = '\0';
+ ParamLoadMessage(dlg->trainPGp, I_SPEED, dlg->speedS);
+ wDrawClear((wDraw_p)dlg->trainPGp->paramPtr[I_SLIDER].control);
+ }
+
+ ParamLoadMessage(dlg->trainPGp, I_DIST, "");
+ }
}
static void ControllerDialogSyncAll(void)
{
- if (curTrainDlg) {
- ControllerDialogSync(curTrainDlg);
- }
+ if (curTrainDlg) {
+ ControllerDialogSync(curTrainDlg);
+ }
}
-static void LocoListChangeEntry(
- track_p oldLoco,
- track_p newLoco)
+EXPORT void LocoListChangeEntry(
+ track_p oldLoco,
+ track_p newLoco)
{
- wIndex_t inx = -1;
- struct extraDataCar_t * xx;
+ wIndex_t inx = -1;
+ struct extraDataCar_t * xx;
- if (curTrainDlg == NULL) {
- return;
- }
-
- if (oldLoco && (inx=FindLoco(oldLoco))>=0) {
- if (newLoco) {
- locoList(inx).loco = newLoco;
- xx = GET_EXTRA_DATA(newLoco, T_CAR, extraDataCar_t);
- locoList(inx).running = IsOnTrack(xx) && xx->speed > 0;
- wListSetValues((wList_p)curTrainDlg->trainPGp->paramPtr[I_LIST].control, inx,
- CarItemNumber(xx->item), locoList(inx).running?goI:stopI, newLoco);
- } else {
- wListDelete((wList_p)curTrainDlg->trainPGp->paramPtr[I_LIST].control, inx);
+ if (curTrainDlg == NULL) {
+ return;
+ }
- for (; inx<locoList_da.cnt-1; inx++) {
- locoList(inx) = locoList(inx+1);
- }
+ if (oldLoco && (inx=FindLoco(oldLoco))>=0) {
+ if (newLoco) {
+ locoList(inx).loco = newLoco;
+ xx = GET_EXTRA_DATA(newLoco, T_CAR, extraDataCar_t);
+ locoList(inx).running = IsOnTrack(xx) && xx->speed > 0;
+ wListSetValues((wList_p)curTrainDlg->trainPGp->paramPtr[I_LIST].control, inx,
+ CarItemNumber(xx->item), locoList(inx).running?goI:stopI, newLoco);
+ } else {
+ wListDelete((wList_p)curTrainDlg->trainPGp->paramPtr[I_LIST].control, inx);
+
+ for (; inx<locoList_da.cnt-1; inx++) {
+ locoList(inx) = locoList(inx+1);
+ }
- locoList_da.cnt -= 1;
+ locoList_da.cnt -= 1;
- if (inx >= locoList_da.cnt) {
- inx--;
- }
- }
- } else if (newLoco) {
- inx = locoList_da.cnt;
- DYNARR_APPEND(locoList_t, locoList_da, 10);
- locoList(inx).loco = newLoco;
- xx = GET_EXTRA_DATA(newLoco, T_CAR, extraDataCar_t);
- locoList(inx).running = IsOnTrack(xx) && xx->speed > 0;
- wListAddValue((wList_p)curTrainDlg->trainPGp->paramPtr[I_LIST].control,
- CarItemNumber(xx->item), locoList(inx).running?goI:stopI, newLoco);
- }
+ if (inx >= locoList_da.cnt) {
+ inx--;
+ }
+ }
+ } else if (newLoco) {
+ inx = locoList_da.cnt;
+ DYNARR_APPEND(locoList_t, locoList_da, 10);
+ locoList(inx).loco = newLoco;
+ xx = GET_EXTRA_DATA(newLoco, T_CAR, extraDataCar_t);
+ locoList(inx).running = IsOnTrack(xx) && xx->speed > 0;
+ wListAddValue((wList_p)curTrainDlg->trainPGp->paramPtr[I_LIST].control,
+ CarItemNumber(xx->item), locoList(inx).running?goI:stopI, newLoco);
+ }
- if (curTrainDlg->train == oldLoco) {
- if (newLoco || locoList_da.cnt <= 0) {
- curTrainDlg->train = newLoco;
- } else {
- curTrainDlg->train = wListGetItemContext((wList_p)
- curTrainDlg->trainPGp->paramPtr[I_LIST].control, inx);
- }
- }
+ if (curTrainDlg->train == oldLoco) {
+ if (newLoco || locoList_da.cnt <= 0) {
+ curTrainDlg->train = newLoco;
+ } else {
+ curTrainDlg->train = wListGetItemContext((wList_p)
+ curTrainDlg->trainPGp->paramPtr[I_LIST].control, inx);
+ }
+ }
- ControllerDialogSync(curTrainDlg);
+ ControllerDialogSync(curTrainDlg);
}
static void LocoListInit(void)
{
- track_p train;
- struct extraDataCar_t * xx;
- locoList_da.cnt = 0;
+ track_p train;
+ struct extraDataCar_t * xx;
+ DYNARR_RESET( locoList_t, locoList_da );
- for (train=NULL; TrackIterate(&train);) {
- if (GetTrkType(train) != T_CAR) {
- continue;
- }
+ for (train=NULL; TrackIterate(&train);) {
+ if (GetTrkType(train) != T_CAR) {
+ continue;
+ }
- xx = GET_EXTRA_DATA(train, T_CAR, extraDataCar_t);
+ xx = GET_EXTRA_DATA(train, T_CAR, extraDataCar_t);
- if (!CarItemIsLoco(xx->item)) {
- continue;
- }
+ if (!CarItemIsLoco(xx->item)) {
+ continue;
+ }
- if (!IsLocoMaster(xx)) {
- continue;
- }
+ if (!IsLocoMaster(xx)) {
+ continue;
+ }
- LocoListChangeEntry(NULL, train);
- }
+ LocoListChangeEntry(NULL, train);
+ }
}
static void SetCurTrain(
- track_p train)
+ track_p train)
{
- curTrainDlg->train = train;
- ControllerDialogSync(curTrainDlg);
+ curTrainDlg->train = train;
+ ControllerDialogSync(curTrainDlg);
}
static void StopTrain(
- track_p train,
- trainStatus_e status)
+ track_p train,
+ trainStatus_e status)
{
- struct extraDataCar_t * xx;
+ struct extraDataCar_t * xx;
- if (train == NULL) {
- return;
- }
+ if (train == NULL) {
+ return;
+ }
- xx = GET_EXTRA_DATA(train, T_CAR, extraDataCar_t);
- xx->speed = 0;
- xx->status = status;
- LocoListChangeEntry(train, train);
+ xx = GET_EXTRA_DATA(train, T_CAR, extraDataCar_t);
+ xx->speed = 0;
+ xx->status = status;
+ LocoListChangeEntry(train, train);
}
static void MoveMainWindow(
- coOrd pos,
- ANGLE_T angle)
+ coOrd pos,
+ ANGLE_T angle)
{
- DIST_T dist;
- static DIST_T factor = 0.5;
- ANGLE_T angle1 = angle, angle2;
+ DIST_T dist;
+ static DIST_T factor = 0.5;
+ ANGLE_T angle1 = angle, angle2;
- if (angle1 > 180.0) {
- angle1 = 360.0 - angle1;
- }
+ if (angle1 > 180.0) {
+ angle1 = 360.0 - angle1;
+ }
- if (angle1 > 90.0) {
- angle1 = 180.0 - angle1;
- }
+ if (angle1 > 90.0) {
+ angle1 = 180.0 - angle1;
+ }
- angle2 = R2D(atan2(mainD.size.x,mainD.size.y));
+ angle2 = R2D(atan2(mainD.size.x,mainD.size.y));
- if (angle1 < angle2) {
- dist = mainD.size.y/2.0/cos(D2R(angle1));
- } else {
- dist = mainD.size.x/2.0/cos(D2R(90.0-angle1));
- }
+ if (angle1 < angle2) {
+ dist = mainD.size.y/2.0/cos(D2R(angle1));
+ } else {
+ dist = mainD.size.x/2.0/cos(D2R(90.0-angle1));
+ }
- dist *= factor;
- Translate(&pos, pos, angle, dist);
- mainD.orig.x = pos.x-mainD.size.x/2;;
- mainD.orig.y = pos.y-mainD.size.y/2;;
- panCenter = pos;
- LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
- MainLayout( TRUE, TRUE ); // MoveTrainWindow
+ dist *= factor;
+ Translate(&pos, pos, angle, dist);
+ mainD.orig.x = pos.x-mainD.size.x/2;;
+ mainD.orig.y = pos.y-mainD.size.y/2;;
+ panCenter = pos;
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
+ MainLayout( TRUE, TRUE ); // MoveTrainWindow
}
static void SetTrainDirection(
- track_p train)
+ track_p train)
{
- struct extraDataCar_t *xx, *xx0=GET_EXTRA_DATA(train, T_CAR, extraDataCar_t);
- int dir0;
- track_p car;
- car = train;
-
- for (dir0 = 0; dir0 < 2; dir0++) {
- int dir;
- dir = dir0;
- WALK_CARS_START(car, xx, dir)
-
- if (car != train) {
- if (CarItemIsLoco(xx->item)) {
- xx->direction = (dir==dir0?xx0->direction:!xx0->direction);
- }
- }
+ struct extraDataCar_t *xx, *xx0=GET_EXTRA_DATA(train, T_CAR, extraDataCar_t);
+ int dir0;
+ track_p car;
+ car = train;
+
+ for (dir0 = 0; dir0 < 2; dir0++) {
+ int dir;
+ dir = dir0;
+ WALK_CARS_START(car, xx, dir)
+
+ if (car != train) {
+ if (CarItemIsLoco(xx->item)) {
+ xx->direction = (dir==dir0?xx0->direction:!xx0->direction);
+ }
+ }
- WALK_CARS_END(car, xx, dir)
- }
+ WALK_CARS_END(car, xx, dir)
+ }
}
static void ControllerDialogUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP)
-{
- trainControlDlg_p dlg = curTrainDlg;
- track_p train;
- struct extraDataCar_t * xx;
-
- if (dlg == NULL) {
- return;
- }
-
- TrainTimeEndPause();
-
- switch (inx) {
- case I_LIST:
- train = (track_p)wListGetItemContext((wList_p)pg->paramPtr[inx].control,
- (wIndex_t)*(long*)valueP);
-
- if (train == NULL) {
- return;
- }
-
- dlg->train = train;
- ControllerDialogSync(dlg);
- break;
-
- case I_ZERO:
- if (dlg->train == NULL) {
- return;
- }
-
- TrainTimeEndPause();
- xx = GET_EXTRA_DATA(dlg->train, T_CAR, extraDataCar_t);
- xx->distance = 0.0;
- ParamLoadMessage(dlg->trainPGp, I_DIST, FormatDistance(xx->distance));
- ParamLoadControl(curTrainDlg->trainPGp, I_DIST);
- TrainTimeStartPause();
- break;
-
- case I_GOTO:
- if (dlg->train == NULL) {
- return;
- }
-
- TrainTimeEndPause();
- xx = GET_EXTRA_DATA(dlg->train, T_CAR, extraDataCar_t);
- followTrain = NULL;
- dlg->followMe = FALSE;
- ParamLoadControl(curTrainDlg->trainPGp, I_FOLLOW);
- CarSetVisible(dlg->train);
- MoveMainWindow(xx->trvTrk.pos, xx->trvTrk.angle);
- TrainTimeStartPause();
- break;
-
- case I_FOLLOW:
- if (dlg->train == NULL) {
- return;
- }
-
- if (*(long*)valueP) {
- followTrain = dlg->train;
- xx = GET_EXTRA_DATA(dlg->train, T_CAR, extraDataCar_t);
-
- if (OFF_MAIND(xx->trvTrk.pos, xx->trvTrk.pos)) {
- MoveMainWindow(xx->trvTrk.pos, xx->trvTrk.angle);
- }
-
- followCenter = mainCenter;
- } else {
- followTrain = NULL;
- }
-
- break;
-
- case I_AUTORVRS:
- if (dlg->train == NULL) {
- return;
- }
-
- xx = GET_EXTRA_DATA(dlg->train, T_CAR, extraDataCar_t);
- xx->autoReverse = *(long*)valueP!=0;
- break;
-
- case I_DIR:
- if (dlg->train == NULL) {
- return;
- }
-
- xx = GET_EXTRA_DATA(dlg->train, T_CAR, extraDataCar_t);
- dlg->direction = xx->direction = !xx->direction;
- wButtonSetLabel((wButton_p)pg->paramPtr[I_DIR].control,
- (dlg->direction?_("Reverse"):_("Forward")));
- SetTrainDirection(dlg->train);
- TempRedraw(); // ctrain: change direction
- break;
-
- case I_STOP:
- if (dlg->train == NULL) {
- return;
- }
-
- TrainTimeEndPause();
- StopTrain(dlg->train, ST_StopManual);
- TrainTimeStartPause();
- break;
-
- case -1:
- /* Close window */
- CmdTrainExit(NULL);
- break;
- }
-
- /*ControllerDialogSync( dlg );*/
- TrainTimeStartPause();
+ paramGroup_p pg,
+ int inx,
+ void * valueP)
+{
+ trainControlDlg_p dlg = curTrainDlg;
+ track_p train;
+ struct extraDataCar_t * xx;
+
+ if (dlg == NULL) {
+ return;
+ }
+
+ TrainTimeEndPause();
+
+ switch (inx) {
+ case I_LIST:
+ train = (track_p)wListGetItemContext((wList_p)pg->paramPtr[inx].control,
+ (wIndex_t)*(long*)valueP);
+
+ if (train == NULL) {
+ return;
+ }
+
+ dlg->train = train;
+ ControllerDialogSync(dlg);
+ break;
+
+ case I_ZERO:
+ if (dlg->train == NULL) {
+ return;
+ }
+
+ TrainTimeEndPause();
+ xx = GET_EXTRA_DATA(dlg->train, T_CAR, extraDataCar_t);
+ xx->distance = 0.0;
+ ParamLoadMessage(dlg->trainPGp, I_DIST, FormatDistance(xx->distance));
+ ParamLoadControl(curTrainDlg->trainPGp, I_DIST);
+ TrainTimeStartPause();
+ break;
+
+ case I_GOTO:
+ if (dlg->train == NULL) {
+ return;
+ }
+
+
+
+ TrainTimeEndPause();
+ xx = GET_EXTRA_DATA(dlg->train, T_CAR, extraDataCar_t);
+ followTrain = NULL;
+ dlg->followMe = FALSE;
+ ParamLoadControl(curTrainDlg->trainPGp, I_FOLLOW);
+ CarSetVisible(dlg->train);
+ MoveMainWindow(xx->trvTrk.pos, xx->trvTrk.angle);
+ trainHighlighted = dlg->train;
+ TrainTimeStartPause();
+ break;
+
+ case I_FOLLOW:
+ if (dlg->train == NULL) {
+ return;
+ }
+
+ if (*(long*)valueP) {
+ followTrain = dlg->train;
+ xx = GET_EXTRA_DATA(dlg->train, T_CAR, extraDataCar_t);
+
+ if (OFF_MAIND(xx->trvTrk.pos, xx->trvTrk.pos)) {
+ MoveMainWindow(xx->trvTrk.pos, xx->trvTrk.angle);
+ }
+
+ followCenter = mainCenter;
+ } else {
+ followTrain = NULL;
+ }
+
+ break;
+
+ case I_AUTORVRS:
+ if (dlg->train == NULL) {
+ return;
+ }
+
+ xx = GET_EXTRA_DATA(dlg->train, T_CAR, extraDataCar_t);
+ xx->autoReverse = *(long*)valueP!=0;
+ break;
+
+ case I_DIR:
+ if (dlg->train == NULL) {
+ return;
+ }
+
+ xx = GET_EXTRA_DATA(dlg->train, T_CAR, extraDataCar_t);
+ dlg->direction = xx->direction = !xx->direction;
+ wButtonSetLabel((wButton_p)pg->paramPtr[I_DIR].control,
+ (dlg->direction?_("Reverse"):_("Forward")));
+ SetTrainDirection(dlg->train);
+ TempRedraw(); // ctrain: change direction
+ break;
+
+ case I_STOP:
+ if (dlg->train == NULL) {
+ return;
+ }
+
+ TrainTimeEndPause();
+ StopTrain(dlg->train, ST_StopManual);
+ TrainTimeStartPause();
+ break;
+
+ case -1:
+ /* Close window */
+ CmdTrainExit(NULL);
+ break;
+ }
+
+ /*ControllerDialogSync( dlg );*/
+ TrainTimeStartPause();
}
static trainControlDlg_p CreateTrainControlDlg(void)
{
- trainControlDlg_p dlg;
- char * title;
- paramData_p PLp;
- dlg = (trainControlDlg_p)MyMalloc(sizeof *dlg);
- PLp = trainPLs;
- dlg->posS[0] = '\0';
- dlg->speedS[0] = '\0';
- PLp[I_LIST].valueP = &dlg->inx;
- PLp[I_LIST].context = dlg;
- PLp[I_POS].valueP = &dlg->posS;
- PLp[I_POS].context = dlg;
- /*PLp[I_GOTO].valueP = NULL;*/
- PLp[I_GOTO].context = dlg;
- PLp[I_SLIDER].context = dlg;
- PLp[I_SPEED].valueP = &dlg->speedS;
- PLp[I_SPEED].context = dlg;
- PLp[I_DIR].context = dlg;
- /*PLp[I_STOP].valueP = NULL;*/
- PLp[I_STOP].context = dlg;
- PLp[I_FOLLOW].valueP = &dlg->followMe;
- PLp[I_FOLLOW].context = dlg;
- PLp[I_AUTORVRS].valueP = &dlg->autoReverse;
- PLp[I_AUTORVRS].context = dlg;
- title = MyStrdup(_("Train Control XXX"));
- sprintf(title, _("Train Control %d"), ++numTrainDlg);
- dlg->trainPGp = &trainPG;
- dlg->win = ParamCreateDialog(dlg->trainPGp, _("Train Control"), NULL, NULL,
- NULL, FALSE, NULL, 0, ControllerDialogUpdate);
- speedD.size.x = SLIDER_WIDTH/speedD.dpi;
- speedD.size.y = SLIDER_HEIGHT/speedD.dpi;
- return dlg;
+ trainControlDlg_p dlg;
+ char * title;
+ paramData_p PLp;
+ dlg = (trainControlDlg_p)MyMalloc(sizeof *dlg);
+ PLp = trainPLs;
+ dlg->posS[0] = '\0';
+ dlg->speedS[0] = '\0';
+ PLp[I_LIST].valueP = &dlg->inx;
+ PLp[I_LIST].context = dlg;
+ PLp[I_POS].valueP = &dlg->posS;
+ PLp[I_POS].context = dlg;
+ /*PLp[I_GOTO].valueP = NULL;*/
+ PLp[I_GOTO].context = dlg;
+ PLp[I_SLIDER].context = dlg;
+ PLp[I_SPEED].valueP = &dlg->speedS;
+ PLp[I_SPEED].context = dlg;
+ PLp[I_DIR].context = dlg;
+ /*PLp[I_STOP].valueP = NULL;*/
+ PLp[I_STOP].context = dlg;
+ PLp[I_FOLLOW].valueP = &dlg->followMe;
+ PLp[I_FOLLOW].context = dlg;
+ PLp[I_AUTORVRS].valueP = &dlg->autoReverse;
+ PLp[I_AUTORVRS].context = dlg;
+ title = MyStrdup(_("Train Control XXX"));
+ sprintf(title, _("Train Control %d"), ++numTrainDlg);
+ dlg->trainPGp = &trainPG;
+ dlg->win = ParamCreateDialog(dlg->trainPGp, _("Train Control"), NULL, NULL,
+ NULL, FALSE, NULL, 0, ControllerDialogUpdate);
+ speedD.size.x = SLIDER_WIDTH/speedD.dpi;
+ speedD.size.y = SLIDER_HEIGHT/speedD.dpi;
+ return dlg;
}
@@ -1316,431 +1389,443 @@ static trainControlDlg_p CreateTrainControlDlg(void)
*/
static struct {
- STATE_T state;
- coOrd pos0;
+ STATE_T state;
+ coOrd pos0;
} Dtrain;
long trainPause = 200;
static track_p followTrain = NULL;
-static void DrawAllCars(void)
-{
- track_p car;
- struct extraDataCar_t * xx;
- coOrd size, lo, hi;
- BOOL_T drawCarEnable1 = drawCarEnable;
- drawCarEnable = TRUE;
- wDrawDelayUpdate(mainD.d, TRUE);
- wDrawRestoreImage(mainD.d);
- DrawPositionIndicators();
-
- for (car=NULL; TrackIterate(&car);) {
- if (GetTrkType(car) == T_CAR) {
- xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
- CarItemSize(xx->item,
- &size); /* TODO assumes xx->trvTrk.pos is the car center */
- lo.x = xx->trvTrk.pos.x - size.x/2.0;
- lo.y = xx->trvTrk.pos.y - size.x/2.0;
- hi.x = lo.x + size.x;
- hi.y = lo.y + size.x;
-
- if (!OFF_MAIND(lo, hi)) {
- DrawCar(car, &tempD, wDrawColorBlack);
- }
- }
- }
-
- wDrawDelayUpdate(mainD.d, FALSE);
- drawCarEnable = drawCarEnable1;
+static void DrawAllCars(track_p trk)
+{
+ track_p car;
+ struct extraDataCar_t * xx;
+ coOrd size, lo, hi;
+ BOOL_T drawCarEnable1 = drawCarEnable;
+ drawCarEnable = TRUE;
+ wDrawDelayUpdate(mainD.d, TRUE);
+ wDrawRestoreImage(mainD.d);
+ DrawPositionIndicators();
+
+ for (car=NULL; TrackIterate(&car);) {
+ if (GetTrkType(car) == T_CAR) {
+ xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
+ CarItemSize(xx->item,
+ &size); /* TODO assumes xx->trvTrk.pos is the car center */
+ lo.x = xx->trvTrk.pos.x - size.x/2.0;
+ lo.y = xx->trvTrk.pos.y - size.x/2.0;
+ hi.x = lo.x + size.x;
+ hi.y = lo.y + size.x;
+
+ if (!OFF_MAIND(lo, hi)) {
+ DrawCar(car, &tempD, wDrawColorBlack);
+ if (car == trk) {
+ DrawCar(trk,&tempD,wDrawColorPreviewSelected);
+ }
+ }
+ }
+ }
+
+ wDrawDelayUpdate(mainD.d, FALSE);
+ drawCarEnable = drawCarEnable1;
}
static DIST_T GetTrainLength2(
- track_p * car0,
- BOOL_T * dir)
+ track_p * car0,
+ BOOL_T * dir)
{
- DIST_T length = 0, carLength;
- struct extraDataCar_t * xx;
- WALK_CARS_START(*car0, xx, *dir)
- carLength = CarItemCoupledLength(xx->item);
-
- if (length == 0) {
- length = carLength/2.0; /* TODO assumes xx->trvTrk.pos is the car center */
- } else {
- length += carLength;
- }
+ DIST_T length = 0, carLength;
+ struct extraDataCar_t * xx;
+ WALK_CARS_START(*car0, xx, *dir)
+ carLength = CarItemCoupledLength(xx->item);
+
+ if (length == 0) {
+ length = carLength/2.0; /* TODO assumes xx->trvTrk.pos is the car center */
+ } else {
+ length += carLength;
+ }
- WALK_CARS_END(*car0, xx, *dir)
- return length;
+ WALK_CARS_END(*car0, xx, *dir)
+ return length;
}
static DIST_T GetTrainLength(
- track_p car0,
- BOOL_T dir)
+ track_p car0,
+ BOOL_T dir)
{
- return GetTrainLength2(&car0, &dir);
+ return GetTrainLength2(&car0, &dir);
}
static void PlaceCar(
- track_p car)
+ track_p car)
{
- struct extraDataCar_t *xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
- DIST_T dists[2];
- CarItemPlace(xx->item, &xx->trvTrk, dists);
-
- CarItemFindCouplerMountPoint(xx->item, xx->trvTrk, xx->couplerPos);
-
- car->endPt[0].angle = xx->trvTrk.angle;
- Translate(&car->endPt[0].pos, xx->trvTrk.pos, car->endPt[0].angle, dists[0]);
- car->endPt[1].angle = NormalizeAngle(xx->trvTrk.angle + 180.0);
- Translate(&car->endPt[1].pos, xx->trvTrk.pos, car->endPt[1].angle, dists[1]);
- LOG(log_trainMove, 4, ("%s @ [%0.3f,%0.3f] A%0.3f\n", CarItemNumber(xx->item),
- xx->trvTrk.pos.x, xx->trvTrk.pos.y, xx->trvTrk.angle))
- SetCarBoundingBox(car);
- xx->state &= ~(CAR_STATE_ONHIDENTRACK);
- xx->trkLayer = NOTALAYER;
-
- if (xx->trvTrk.trk) {
- if (!GetTrkVisible(xx->trvTrk.trk)) {
- xx->state |= CAR_STATE_ONHIDENTRACK;
- }
+ struct extraDataCar_t *xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
+ DIST_T dists[2];
+ CarItemPlace(xx->item, &xx->trvTrk, dists);
+
+ CarItemFindCouplerMountPoint(xx->item, xx->trvTrk, xx->couplerPos);
+
+ coOrd tempPos;
+ ANGLE_T tempAng;
+ tempAng = xx->trvTrk.angle;
+ Translate( &tempPos, xx->trvTrk.pos, tempAng, dists[0] );
+ SetTrkEndPointSilent( car, 0, tempPos, tempAng );
+ tempAng = NormalizeAngle( tempAng+180.0 );
+ Translate( &tempPos, xx->trvTrk.pos, tempAng, dists[1] );
+ SetTrkEndPointSilent( car, 1, tempPos, tempAng );
+
+ LOG(log_trainMove, 4, ("%s @ [%0.3f,%0.3f] A%0.3f\n", CarItemNumber(xx->item),
+ xx->trvTrk.pos.x, xx->trvTrk.pos.y, xx->trvTrk.angle))
+ SetCarBoundingBox(car);
+ xx->state &= ~(CAR_STATE_ONHIDENTRACK);
+ xx->trkLayer = NOTALAYER;
+
+ if (xx->trvTrk.trk) {
+ if (!GetTrkVisible(xx->trvTrk.trk)) {
+ xx->state |= CAR_STATE_ONHIDENTRACK;
+ }
- xx->trkLayer = GetTrkLayer(xx->trvTrk.trk);
- }
+ xx->trkLayer = GetTrkLayer(xx->trvTrk.trk);
+ }
}
static track_p FindCar(
- coOrd * pos)
+ coOrd * pos)
{
- coOrd pos0, pos1;
- track_p trk, trk1;
- DIST_T dist1 = DIST_INF, dist;
- struct extraDataCar_t * xx;
- trk1 = NULL;
+ coOrd pos0, pos1;
+ track_p trk, trk1;
+ DIST_T dist1 = DIST_INF, dist;
+ struct extraDataCar_t * xx;
+ trk1 = NULL;
+
+ for (trk=NULL; TrackIterate(&trk);) {
+ if (GetTrkType(trk) == T_CAR) {
+ xx = GET_EXTRA_DATA(trk, T_CAR, extraDataCar_t);
+
+ if (IsIgnored(xx)) {
+ continue;
+ }
- for (trk=NULL; TrackIterate(&trk);) {
- if (GetTrkType(trk) == T_CAR) {
- xx = GET_EXTRA_DATA(trk, T_CAR, extraDataCar_t);
+ pos0 = *pos;
- if (IsIgnored(xx)) {
- continue;
- }
+ coOrd hi,lo;
- pos0 = *pos;
- dist = DistanceCar(trk, &pos0);
+ GetBoundingBox(trk,&hi,&lo);
- if (dist < dist1) {
- dist1 = dist;
- trk1 = trk;
- pos1 = pos0;
- }
- }
- }
+ if (hi.x < pos0.x ||
+ lo.x > pos0.x ||
+ hi.y < pos0.y ||
+ lo.y > pos0.y ) {
+ continue;
+ }
+
+ dist = DistanceCar(trk, &pos0);
+
+ if (dist < dist1) {
+ dist1 = dist;
+ trk1 = trk;
+ pos1 = pos0;
+ }
+ }
+ }
- if (dist1 < 10) {
- *pos = pos1;
- return trk1;
- } else {
- return NULL;
- }
+ if (dist1 < trackGauge*2.0) {
+ *pos = pos1;
+ return trk1;
+ } else {
+ return NULL;
+ }
}
static track_p FindMasterLoco(
- track_p train,
- int * dirR)
+ track_p train,
+ int * dirR)
{
- struct extraDataCar_t *xx0;
- int dir;
-
- for (dir = 0; dir<2; dir++) {
- track_p car0;
- int dir0;
- car0 = train;
- dir0 = dir;
- WALK_CARS_START(car0, xx0, dir0)
-
- if (CarItemIsLoco(xx0->item) && IsLocoMaster(xx0)) {
- if (dirR) {
- *dirR = 1-dir0;
- }
+ struct extraDataCar_t *xx0;
+ int dir;
+
+ for (dir = 0; dir<2; dir++) {
+ track_p car0;
+ int dir0;
+ car0 = train;
+ dir0 = dir;
+ WALK_CARS_START(car0, xx0, dir0)
+
+ if (CarItemIsLoco(xx0->item) && IsLocoMaster(xx0)) {
+ if (dirR) {
+ *dirR = 1-dir0;
+ }
- return car0;
- }
+ return car0;
+ }
- WALK_CARS_END(car0, xx0, dir0)
- }
+ WALK_CARS_END(car0, xx0, dir0)
+ }
- return NULL;
+ return NULL;
}
static track_p PickMasterLoco(
- track_p car,
- int dir)
+ track_p car,
+ int dir)
{
- track_p loco=NULL;
- struct extraDataCar_t *xx;
- WALK_CARS_START(car, xx, dir)
+ track_p loco=NULL;
+ struct extraDataCar_t *xx;
+ WALK_CARS_START(car, xx, dir)
- if (CarItemIsLoco(xx->item)) {
- if (IsLocoMaster(xx)) {
- return car;
- }
+ if (CarItemIsLoco(xx->item)) {
+ if (IsLocoMaster(xx)) {
+ return car;
+ }
- if (loco == NULL) {
- loco = car;
- }
- }
+ if (loco == NULL) {
+ loco = car;
+ }
+ }
- WALK_CARS_END(car, xx, dir)
+ WALK_CARS_END(car, xx, dir)
- if (loco == NULL) {
- return NULL;
- }
+ if (loco == NULL) {
+ return NULL;
+ }
- xx = GET_EXTRA_DATA(loco, T_CAR, extraDataCar_t);
- SetLocoMaster(xx);
- xx->speed = 0;
- LOG(log_trainMove, 1, ("%s becomes master\n", CarItemNumber(xx->item)))
- return loco;
+ xx = GET_EXTRA_DATA(loco, T_CAR, extraDataCar_t);
+ SetLocoMaster(xx);
+ xx->speed = 0;
+ LOG(log_trainMove, 1, ("%s becomes master\n", CarItemNumber(xx->item)))
+ return loco;
}
-static void UncoupleCars(
- track_p car1,
- track_p car2)
+EXPORT void UncoupleCars(
+ track_p car1,
+ int dir1 )
{
- track_p loco;
- int dir1, dir2;
-
- if (GetTrkEndTrk(car1,0) == car2) {
- dir1 = 0;
- } else if (GetTrkEndTrk(car1,1) == car2) {
- dir1 = 1;
- } else {
- ErrorMessage("uncoupleCars - not coupled");
- return;
- }
-
- if (GetTrkEndTrk(car2,0) == car1) {
- dir2 = 0;
- } else if (GetTrkEndTrk(car2,1) == car1) {
- dir2 = 1;
- } else {
- ErrorMessage("uncoupleCars - not coupled");
- return;
- }
+ track_p car2 = GetTrkEndTrk(car1,dir1);
+ if ( car2 == NULL ) {
+ return;
+ }
+ track_p loco;
+ int dir2;
+
+ if (GetTrkEndTrk(car2,0) == car1) {
+ dir2 = 0;
+ } else if (GetTrkEndTrk(car2,1) == car1) {
+ dir2 = 1;
+ } else {
+ ErrorMessage("uncoupleCars - not coupled");
+ return;
+ }
- loco = FindMasterLoco(car1, NULL);
- car1->endPt[dir1].track = NULL;
- car2->endPt[dir2].track = NULL;
+ loco = FindMasterLoco(car1, NULL);
+ DisconnectTracks( car1, dir1, car2, dir2 );
- if (loco) {
- track_p loco1, loco2;
- loco1 = PickMasterLoco(car1, 1-dir1);
+ if (loco) {
+ track_p loco1, loco2;
+ loco1 = PickMasterLoco(car1, 1-dir1);
- if (loco1 != loco) {
- LocoListChangeEntry(NULL, loco1);
- }
+ if (loco1 != loco) {
+ LocoListChangeEntry(NULL, loco1);
+ }
- loco2 = PickMasterLoco(car2, 1-dir2);
+ loco2 = PickMasterLoco(car2, 1-dir2);
- if (loco2 != loco) {
- LocoListChangeEntry(NULL, loco2);
- }
- }
+ if (loco2 != loco) {
+ LocoListChangeEntry(NULL, loco2);
+ }
+ }
}
static void CoupleCars(
- track_p car1,
- int dir1,
- track_p car2,
- int dir2)
+ track_p car1,
+ int dir1,
+ track_p car2,
+ int dir2)
{
- struct extraDataCar_t * xx1, * xx2;
- track_p loco1, loco2;
- track_p car;
- int dir;
- xx1 = GET_EXTRA_DATA(car1, T_CAR, extraDataCar_t);
- xx2 = GET_EXTRA_DATA(car2, T_CAR, extraDataCar_t);
-
- if (GetTrkEndTrk(car1,dir1) != NULL || GetTrkEndTrk(car2,dir2) != NULL) {
- LOG(log_trainMove, 1, ("coupleCars - already coupled\n"))
- return;
- }
+ struct extraDataCar_t * xx1, * xx2;
+ track_p loco1, loco2;
+ track_p car;
+ int dir;
+ xx1 = GET_EXTRA_DATA(car1, T_CAR, extraDataCar_t);
+ xx2 = GET_EXTRA_DATA(car2, T_CAR, extraDataCar_t);
+
+ if (GetTrkEndTrk(car1,dir1) != NULL || GetTrkEndTrk(car2,dir2) != NULL) {
+ LOG(log_trainMove, 1, ("coupleCars - already coupled\n"))
+ return;
+ }
- car = car1;
- dir = 1-dir1;
- WALK_CARS_START(car, xx1, dir)
+ car = car1;
+ dir = 1-dir1;
+ WALK_CARS_START(car, xx1, dir)
- if (car == car2) {
- LOG(log_trainMove, 1, ("coupleCars - already coupled\n"))
- ErrorMessage("Car coupling loop");
- return;
- }
+ if (car == car2) {
+ LOG(log_trainMove, 1, ("coupleCars - already coupled\n"))
+ ErrorMessage("Car coupling loop");
+ return;
+ }
- WALK_CARS_END(car, xx1, dir)
- car = car2;
- dir = 1-dir2;
- WALK_CARS_START(car, xx2, dir)
+ WALK_CARS_END(car, xx1, dir)
+ car = car2;
+ dir = 1-dir2;
+ WALK_CARS_START(car, xx2, dir)
- if (car == car1) {
- LOG(log_trainMove, 1, ("coupleCars - already coupled\n"))
- ErrorMessage("Car coupling loop");
- return;
- }
+ if (car == car1) {
+ LOG(log_trainMove, 1, ("coupleCars - already coupled\n"))
+ ErrorMessage("Car coupling loop");
+ return;
+ }
- WALK_CARS_END(car, xx1, dir)
- loco1 = FindMasterLoco(car1, NULL);
- loco2 = FindMasterLoco(car2, NULL);
- car1->endPt[dir1].track = car2;
- car2->endPt[dir2].track = car1;
+ WALK_CARS_END(car, xx1, dir)
+ loco1 = FindMasterLoco(car1, NULL);
+ loco2 = FindMasterLoco(car2, NULL);
+ ConnectTracks( car1, dir1, car2, dir2 );
- /*ConnectTracks( car1, dir1, car2, dir2 );*/
- if (logTable(log_trainMove).level >= 2) {
- LogPrintf("Coupling %s[%d] ", CarItemNumber(xx1->item), dir1);
- LogPrintf(" and %s[%d]\n", CarItemNumber(xx2->item), dir2);
- }
+ if (logTable(log_trainMove).level >= 2) {
+ LogPrintf("Coupling %s[%d] ", CarItemNumber(xx1->item), dir1);
+ LogPrintf(" and %s[%d]\n", CarItemNumber(xx2->item), dir2);
+ }
- if ((loco1 != NULL && loco2 != NULL)) {
- xx1 = GET_EXTRA_DATA(loco1, T_CAR, extraDataCar_t);
- xx2 = GET_EXTRA_DATA(loco2, T_CAR, extraDataCar_t);
+ if ((loco1 != NULL && loco2 != NULL)) {
+ xx1 = GET_EXTRA_DATA(loco1, T_CAR, extraDataCar_t);
+ xx2 = GET_EXTRA_DATA(loco2, T_CAR, extraDataCar_t);
- if (xx1->speed == 0) {
- ClrLocoMaster(xx1);
- LOG(log_trainMove, 2, ("%s loses master\n", CarItemNumber(xx1->item)))
+ if (xx1->speed == 0) {
+ ClrLocoMaster(xx1);
+ LOG(log_trainMove, 2, ("%s loses master\n", CarItemNumber(xx1->item)))
- if (followTrain == loco1) {
- followTrain = loco2;
- }
+ if (followTrain == loco1) {
+ followTrain = loco2;
+ }
- LocoListChangeEntry(loco1, NULL);
- loco1 = loco2;
- } else {
- ClrLocoMaster(xx2);
- xx1->speed = (xx1->speed + xx2->speed)/2.0;
+ LocoListChangeEntry(loco1, NULL);
+ loco1 = loco2;
+ } else {
+ ClrLocoMaster(xx2);
+ xx1->speed = (xx1->speed + xx2->speed)/2.0;
- if (xx1->speed < 0) {
- xx1->speed = 0;
- }
+ if (xx1->speed < 0) {
+ xx1->speed = 0;
+ }
- if (xx1->speed > 100) {
- xx1->speed = 100;
- }
+ if (xx1->speed > 100) {
+ xx1->speed = 100;
+ }
- LOG(log_trainMove, 2, ("%s loses master\n", CarItemNumber(xx2->item)))
+ LOG(log_trainMove, 2, ("%s loses master\n", CarItemNumber(xx2->item)))
- if (followTrain == loco2) {
- followTrain = loco1;
- }
+ if (followTrain == loco2) {
+ followTrain = loco1;
+ }
- LocoListChangeEntry(loco2, NULL);
- }
+ LocoListChangeEntry(loco2, NULL);
+ }
- SetTrainDirection(loco1);
- }
+ SetTrainDirection(loco1);
+ }
}
long crashDistFactor=60;
static void PlaceCars(
- track_p car0,
- int dir0,
- long crashSpeed,
- BOOL_T crashFlip)
+ track_p car0,
+ int dir0,
+ long crashSpeed,
+ BOOL_T crashFlip)
{
- struct extraDataCar_t *xx0 = GET_EXTRA_DATA(car0, T_CAR, extraDataCar_t), *xx;
- int dir;
- traverseTrack_t trvTrk;
- DIST_T length;
- track_p car_curr;
- DIST_T flipflop = 1;
-
- if (crashFlip) {
- flipflop = -1;
- }
+ struct extraDataCar_t *xx0 = GET_EXTRA_DATA(car0, T_CAR, extraDataCar_t), *xx;
+ int dir;
+ traverseTrack_t trvTrk;
+ DIST_T length;
+ track_p car_curr;
+ DIST_T flipflop = 1;
+
+ if (crashFlip) {
+ flipflop = -1;
+ }
- dir = dir0;
- trvTrk = xx0->trvTrk;
+ dir = dir0;
+ trvTrk = xx0->trvTrk;
- if (dir0) {
- FlipTraverseTrack(&trvTrk);
- }
+ if (dir0) {
+ FlipTraverseTrack(&trvTrk);
+ }
- length = CarItemCoupledLength(xx0->item)/2.0;
- car_curr = car0;
- ClrIgnored(xx0);
- WALK_CARS_START(car_curr, xx, dir)
+ length = CarItemCoupledLength(xx0->item)/2.0;
+ car_curr = car0;
+ ClrIgnored(xx0);
+ WALK_CARS_START(car_curr, xx, dir)
- if (car_curr != car0) {
- DIST_T dist, length1;
- ClrIgnored(xx);
- length1 = CarItemCoupledLength(xx->item)/2.0;
- dist = length + length1;
- crashSpeed = crashSpeed*CRASHSPEEDDECAY/10;
+ if (car_curr != car0) {
+ DIST_T dist, length1;
+ ClrIgnored(xx);
+ length1 = CarItemCoupledLength(xx->item)/2.0;
+ dist = length + length1;
+ crashSpeed = crashSpeed*CRASHSPEEDDECAY/10;
- if (crashSpeed > 0) {
- dist -= dist * crashSpeed/crashDistFactor;
- }
+ if (crashSpeed > 0) {
+ dist -= dist * crashSpeed/crashDistFactor;
+ }
- TraverseTrack2(&trvTrk, dist);
- xx->trvTrk = trvTrk;
+ TraverseTrack2(&trvTrk, dist);
+ xx->trvTrk = trvTrk;
- if (crashSpeed > 0) {
- xx->trvTrk.angle = NormalizeAngle(xx->trvTrk.angle + flipflop*crashSpeed);
- xx->trvTrk.trk = NULL;
- }
+ if (crashSpeed > 0) {
+ xx->trvTrk.angle = NormalizeAngle(xx->trvTrk.angle + flipflop*crashSpeed);
+ xx->trvTrk.trk = NULL;
+ }
- flipflop = -flipflop;
+ flipflop = -flipflop;
- if (dir != 0) {
- FlipTraverseTrack(&xx->trvTrk);
- }
+ if (dir != 0) {
+ FlipTraverseTrack(&xx->trvTrk);
+ }
- PlaceCar(car_curr);
- length = length1;
- }
+ PlaceCar(car_curr);
+ length = length1;
+ }
- WALK_CARS_END(car_curr, xx, dir)
+ WALK_CARS_END(car_curr, xx, dir)
}
static void CrashTrain(
- track_p car,
- int dir,
- traverseTrack_p trvTrkP,
- long speed,
- BOOL_T flip)
+ track_p car,
+ int dir,
+ traverseTrack_p trvTrkP,
+ long speed,
+ BOOL_T flip)
{
- track_p loco;
- struct extraDataCar_t *xx;
- loco = FindMasterLoco(car,NULL);
+ track_p loco;
+ struct extraDataCar_t *xx;
+ loco = FindMasterLoco(car,NULL);
- if (loco != NULL) {
- StopTrain(loco, ST_Crashed);
- }
+ if (loco != NULL) {
+ StopTrain(loco, ST_Crashed);
+ }
- xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
- xx->trvTrk = *trvTrkP;
+ xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
+ xx->trvTrk = *trvTrkP;
- if (dir) {
- FlipTraverseTrack(&xx->trvTrk);
- }
+ if (dir) {
+ FlipTraverseTrack(&xx->trvTrk);
+ }
- PlaceCars(car, 1-dir, speed, flip);
+ PlaceCars(car, 1-dir, speed, flip);
- if (flip) {
- speed = - speed;
- }
+ if (flip) {
+ speed = - speed;
+ }
- xx->trvTrk.angle = NormalizeAngle(xx->trvTrk.angle - speed);
- xx->trvTrk.trk = NULL;
- PlaceCar(car);
+ xx->trvTrk.angle = NormalizeAngle(xx->trvTrk.angle - speed);
+ xx->trvTrk.trk = NULL;
+ PlaceCar(car);
}
/*
@@ -1749,105 +1834,107 @@ static void CrashTrain(
* Returns TRUE if we should continue.
*/
static BOOL_T CheckCoupling(
- track_p car0,
- int dir00,
- BOOL_T doCheckCrash)
-{
- track_p car1;
- struct extraDataCar_t *xx0, *xx1;
- coOrd pos1;
- DIST_T dist0, distc, dist=DIST_INF;
- int dir0, dir1, dirl;
- ANGLE_T angle;
- traverseTrack_t trvTrk0, trvTrk1;
- xx0 = xx1 = GET_EXTRA_DATA(car0, T_CAR, extraDataCar_t);
- /* find length of train from loco to start and end */
- dir0 = dir00;
- dist0 = GetTrainLength2(&car0, &dir0);
- trvTrk0 = xx0->trvTrk;
-
- if (dir00) {
- FlipTraverseTrack(&trvTrk0);
- }
-
- TraverseTrack2(&trvTrk0, dist0);
- pos1 = trvTrk0.pos;
- car1 = FindCar(&pos1);
-
- if (!car1) {
- return TRUE;
- }
-
- xx1 = GET_EXTRA_DATA(car1, T_CAR, extraDataCar_t);
-
- if (!IsOnTrack(xx1)) {
- return TRUE;
- }
-
- /* determine which EP of the found car to couple to */
- angle = NormalizeAngle(trvTrk0.angle-xx1->trvTrk.angle);
-
- if (angle > 90 && angle < 270) {
- dir1 = 0;
- angle = NormalizeAngle(angle+180);
- } else {
- dir1 = 1;
- }
-
- /* already coupled? */
- if (GetTrkEndTrk(car1,dir1) != NULL) {
- return TRUE;
- }
-
- /* are we close to aligned? Uses 45 degrees offset today */
- /* It assumes that if the cars are aligned they could/should be coupled */
- if (angle > COUPLERCONNECTIONANGLE && angle < 360.0-COUPLERCONNECTIONANGLE) {
- return TRUE;
- }
-
- /* find pos of found end car's coupler, and dist btw couplers */
- distc = CarItemCoupledLength(xx1->item);
- /* pos1 is the end of the xx1 car (end car) */
- Translate(&pos1, xx1->trvTrk.pos, xx1->trvTrk.angle+(dir1?180.0:0.0),
- distc/2.0);
- dist = FindDistance(trvTrk0.pos, pos1);
- /* How far away are the two ends?*/
- if (dist < trackGauge/10) {
- return TRUE;
- }
-
- /* not real close: are we overlapped? */
- angle = FindAngle(trvTrk0.pos, pos1);
- angle = NormalizeAngle(angle - trvTrk0.angle);
-
- if (angle < 90 || angle > 270) {
- return TRUE;
- }
-
- /* are we beyond the end of the found car? */
- if (dist > distc) {
- return TRUE;
- }
-
- /* are we on the same track? */
- trvTrk1 = xx1->trvTrk;
-
- if (dir1) {
- FlipTraverseTrack(&trvTrk1);
- }
-
- /* Move second train back along track half a car length */
- TraverseTrack2(&trvTrk1, distc/2.0-dist);
- if ( trvTrk0.trk == NULL || trvTrk1.trk == NULL )
- // fell off the end of track
- return FALSE;
-
- /* If tracks are not the same - dont couple */
- if (trvTrk1.trk != trvTrk0.trk) {
- return TRUE;
- }
-
- /* If this is further apart than 2 track gauges on a turnout, dont couple */
+ track_p car0,
+ int dir00,
+ BOOL_T doCheckCrash)
+{
+ track_p car1;
+ struct extraDataCar_t *xx0, *xx1;
+ coOrd pos1;
+ DIST_T dist0, distc, dist=DIST_INF;
+ int dir0, dir1, dirl;
+ ANGLE_T angle;
+ traverseTrack_t trvTrk0, trvTrk1;
+ xx0 = xx1 = GET_EXTRA_DATA(car0, T_CAR, extraDataCar_t);
+ /* find length of train from loco to start and end */
+ dir0 = dir00;
+ dist0 = GetTrainLength2(&car0, &dir0);
+ trvTrk0 = xx0->trvTrk;
+
+ if (dir00) {
+ FlipTraverseTrack(&trvTrk0);
+ }
+
+ TraverseTrack2(&trvTrk0, dist0);
+ pos1 = trvTrk0.pos;
+ car1 = FindCar(&pos1);
+
+ if (!car1) {
+ return TRUE;
+ }
+
+ xx1 = GET_EXTRA_DATA(car1, T_CAR, extraDataCar_t);
+
+ if (!IsOnTrack(xx1)) {
+ return TRUE;
+ }
+
+ /* determine which EP of the found car to couple to */
+ angle = NormalizeAngle(trvTrk0.angle-xx1->trvTrk.angle);
+
+ if (angle > 90 && angle < 270) {
+ dir1 = 0;
+ angle = NormalizeAngle(angle+180);
+ } else {
+ dir1 = 1;
+ }
+
+ /* already coupled? */
+ if (GetTrkEndTrk(car1,dir1) != NULL) {
+ return TRUE;
+ }
+
+ /* are we close to aligned? Uses 45 degrees offset today */
+ /* It assumes that if the cars are aligned they could/should be coupled */
+ if (angle > COUPLERCONNECTIONANGLE && angle < 360.0-COUPLERCONNECTIONANGLE) {
+ return TRUE;
+ }
+
+ /* find pos of found end car's coupler, and dist btw couplers */
+ distc = CarItemCoupledLength(xx1->item);
+ /* pos1 is the end of the xx1 car (end car) */
+ Translate(&pos1, xx1->trvTrk.pos, xx1->trvTrk.angle+(dir1?180.0:0.0),
+ distc/2.0);
+ dist = FindDistance(trvTrk0.pos, pos1);
+ /* How far away are the two ends?*/
+ if (dist < trackGauge/10) {
+ return TRUE;
+ }
+
+ /* not real close: are we overlapped? */
+ angle = FindAngle(trvTrk0.pos, pos1);
+ angle = NormalizeAngle(angle - trvTrk0.angle);
+
+ if (angle < 90 || angle > 270) {
+ return TRUE;
+ }
+
+ /* are we beyond the end of the found car? */
+ if (dist > distc) {
+ return TRUE;
+ }
+
+ /* are we on the same track? */
+ trvTrk1 = xx1->trvTrk;
+
+ if (dir1) {
+ FlipTraverseTrack(&trvTrk1);
+ }
+
+ /* Move second train back along track half a car length */
+ TraverseTrack2(&trvTrk1, distc/2.0-dist);
+ if ( trvTrk0.trk == NULL || trvTrk1.trk == NULL )
+ // fell off the end of track
+ {
+ return FALSE;
+ }
+
+ /* If tracks are not the same - dont couple */
+ if (trvTrk1.trk != trvTrk0.trk) {
+ return TRUE;
+ }
+
+ /* If this is further apart than 2 track gauges on a turnout, dont couple */
if (GetTrkType(trvTrk0.trk) == T_TURNOUT) {
if (dist > GetTrkGauge(trvTrk0.trk)*2) {
return TRUE;
@@ -1856,617 +1943,622 @@ static BOOL_T CheckCoupling(
/* Concluded we are hitting each other */
- if (doCheckCrash) {
- track_p loco1;
- long speed, speed0, speed1;
- speed0 = (long)xx0->speed;
+ if (doCheckCrash) {
+ track_p loco1;
+ long speed, speed0, speed1;
+ speed0 = (long)xx0->speed;
- if ((xx0->direction==0) != (dir00==0)) {
- speed0 = - speed0;
- }
+ if ((xx0->direction==0) != (dir00==0)) {
+ speed0 = - speed0;
+ }
- loco1 = FindMasterLoco(car1, &dirl);
- xx1 = NULL;
+ loco1 = FindMasterLoco(car1, &dirl);
+ xx1 = NULL;
- if (loco1) {
- xx1 = GET_EXTRA_DATA(loco1, T_CAR, extraDataCar_t);
- speed1 = (long)xx1->speed;
+ if (loco1) {
+ xx1 = GET_EXTRA_DATA(loco1, T_CAR, extraDataCar_t);
+ speed1 = (long)xx1->speed;
- if (car1 == loco1) {
- dirl = IsAligned(xx1->trvTrk.angle, FindAngle(trvTrk0.pos,
- xx1->trvTrk.pos))?1:0;
- }
+ if (car1 == loco1) {
+ dirl = IsAligned(xx1->trvTrk.angle, FindAngle(trvTrk0.pos,
+ xx1->trvTrk.pos))?1:0;
+ }
- if ((xx1->direction==1) != (dirl==1)) {
- speed1 = -speed1;
- }
- } else {
- speed1 = 0;
- }
+ if ((xx1->direction==1) != (dirl==1)) {
+ speed1 = -speed1;
+ }
+ } else {
+ speed1 = 0;
+ }
- speed = labs(speed0 + speed1);
- LOG(log_trainMove, 2, ("coupling speed=%ld\n", speed))
+ speed = labs(speed0 + speed1);
+ LOG(log_trainMove, 2, ("coupling speed=%ld\n", speed))
- if (speed > maxCouplingSpeed) {
- CrashTrain(car0, dir0, &trvTrk0, speed, FALSE);
- CrashTrain(car1, dir1, &trvTrk1, speed, TRUE);
- return FALSE;
- }
- }
+ if (speed > maxCouplingSpeed) {
+ CrashTrain(car0, dir0, &trvTrk0, speed, FALSE);
+ CrashTrain(car1, dir1, &trvTrk1, speed, TRUE);
+ return FALSE;
+ }
+ }
- if (dir00) {
- dist = -dist;
- }
+ if (dir00) {
+ dist = -dist;
+ }
- TraverseTrack2(&xx0->trvTrk, dist);
- CoupleCars(car0, dir0, car1, dir1);
- LOG(log_trainMove, 3, (" -> %0.3f\n", dist))
- return TRUE;
+ TraverseTrack2(&xx0->trvTrk, dist);
+ CoupleCars(car0, dir0, car1, dir1);
+ LOG(log_trainMove, 3, (" -> %0.3f\n", dist))
+ return TRUE;
}
static void PlaceTrain(
- track_p car0,
- BOOL_T doCheckCrash,
- BOOL_T doCheckCoupling)
-{
- track_p car_curr;
- struct extraDataCar_t *xx0;
- int dir0;
- xx0 = GET_EXTRA_DATA(car0, T_CAR, extraDataCar_t);
- LOG(log_trainMove, 2, (" placeTrain: %s [%0.3f %0.3f] A%0.3f",
- CarItemNumber(xx0->item), xx0->trvTrk.pos.x, xx0->trvTrk.pos.y,
- xx0->trvTrk.angle))
- car_curr = car0;
-
- for (dir0=0; dir0<2; dir0++) {
- int dir;
- struct extraDataCar_t *xx;
- car_curr = car0;
- dir = dir0;
- xx = xx0;
- WALK_CARS_START(car_curr, xx, dir)
- SetIgnored(xx);
- WALK_CARS_END(car_curr, xx, dir);
- }
-
- /* check for coupling to other cars */
- if (doCheckCoupling) {
- if (xx0->trvTrk.trk)
- if (!CheckCoupling(car0, 0, doCheckCrash)) {
- return;
- }
-
- if (xx0->trvTrk.trk)
- if (!CheckCoupling(car0, 1, doCheckCrash)) {
- return;
- }
- }
-
- PlaceCar(car0);
-
- for (dir0=0; dir0<2; dir0++) {
- PlaceCars(car0, dir0, 0, FALSE);
- }
+ track_p car0,
+ BOOL_T doCheckCrash,
+ BOOL_T doCheckCoupling)
+{
+ track_p car_curr;
+ struct extraDataCar_t *xx0;
+ int dir0;
+ xx0 = GET_EXTRA_DATA(car0, T_CAR, extraDataCar_t);
+ LOG(log_trainMove, 2, (" placeTrain: %s [%0.3f %0.3f] A%0.3f",
+ CarItemNumber(xx0->item), xx0->trvTrk.pos.x, xx0->trvTrk.pos.y,
+ xx0->trvTrk.angle))
+ car_curr = car0;
+
+ for (dir0=0; dir0<2; dir0++) {
+ int dir;
+ struct extraDataCar_t *xx;
+ car_curr = car0;
+ dir = dir0;
+ xx = xx0;
+ WALK_CARS_START(car_curr, xx, dir)
+ SetIgnored(xx);
+ WALK_CARS_END(car_curr, xx, dir);
+ }
+
+ /* check for coupling to other cars */
+ if (doCheckCoupling) {
+ if (xx0->trvTrk.trk)
+ if (!CheckCoupling(car0, 0, doCheckCrash)) {
+ return;
+ }
+
+ if (xx0->trvTrk.trk)
+ if (!CheckCoupling(car0, 1, doCheckCrash)) {
+ return;
+ }
+ }
+
+ PlaceCar(car0);
+
+ for (dir0=0; dir0<2; dir0++) {
+ PlaceCars(car0, dir0, 0, FALSE);
+ }
}
static void PlaceTrainInit(
- track_p car0,
- track_p trk0,
- coOrd pos0,
- ANGLE_T angle0,
- BOOL_T doCheckCoupling)
+ track_p car0,
+ track_p trk0,
+ coOrd pos0,
+ ANGLE_T angle0,
+ BOOL_T doCheckCoupling)
{
- struct extraDataCar_t * xx = GET_EXTRA_DATA(car0, T_CAR, extraDataCar_t);
- xx->trvTrk.trk = trk0;
- xx->trvTrk.dist = xx->trvTrk.length = -1;
- xx->trvTrk.pos = pos0;
- xx->trvTrk.angle = angle0;
- PlaceTrain(car0, FALSE, doCheckCoupling);
+ struct extraDataCar_t * xx = GET_EXTRA_DATA(car0, T_CAR, extraDataCar_t);
+ xx->trvTrk.trk = trk0;
+ xx->trvTrk.dist = xx->trvTrk.length = -1;
+ xx->trvTrk.pos = pos0;
+ xx->trvTrk.angle = angle0;
+ PlaceTrain(car0, FALSE, doCheckCoupling);
}
static void FlipTrain(
- track_p train)
+ track_p train)
{
- DIST_T d0, d1;
- struct extraDataCar_t * xx;
+ DIST_T d0, d1;
+ struct extraDataCar_t * xx;
- if (train == NULL) {
- return;
- }
+ if (train == NULL) {
+ return;
+ }
- d0 = GetTrainLength(train, 0);
- d1 = GetTrainLength(train, 1);
- xx = GET_EXTRA_DATA(train, T_CAR, extraDataCar_t);
- TraverseTrack2(&xx->trvTrk, d0-d1);
- FlipTraverseTrack(&xx->trvTrk);
- xx->trvTrk.length = -1;
- PlaceTrain(train, FALSE, TRUE);
+ d0 = GetTrainLength(train, 0);
+ d1 = GetTrainLength(train, 1);
+ xx = GET_EXTRA_DATA(train, T_CAR, extraDataCar_t);
+ TraverseTrack2(&xx->trvTrk, d0-d1);
+ FlipTraverseTrack(&xx->trvTrk);
+ xx->trvTrk.length = -1;
+ PlaceTrain(train, FALSE, TRUE);
}
static BOOL_T MoveTrain(
- track_p train,
- long timeD)
-{
- DIST_T ips, dist0, dist1;
- struct extraDataCar_t *xx, *xx1;
- traverseTrack_t trvTrk;
- DIST_T length;
- track_p car1;
- int dir1;
- int measured; /* make sure the distance is only measured once per train */
-
- if (train == NULL) {
- return FALSE;
- }
-
- xx = GET_EXTRA_DATA(train, T_CAR, extraDataCar_t);
-
- if (xx->speed <= 0) {
- return FALSE;
- }
-
- ips = ((xx->speed*5280.0*12.0)/(60.0*60.0*GetScaleRatio(GetLayoutCurScale())));
- dist0 = ips * timeD/1000.0;
- length = GetTrainLength(train, xx->direction);
- dist1 = length + dist0;
- trvTrk = xx->trvTrk;
-
- if (trvTrk.trk == NULL) {
- return FALSE;
- }
-
- LOG(log_trainMove, 1,
- ("moveTrain: %s t%ld->%0.3f S%0.3f D%d [%0.3f %0.3f] A%0.3f T%d\n",
- CarItemNumber(xx->item), timeD, dist0, xx->speed, xx->direction,
- xx->trvTrk.pos.x, xx->trvTrk.pos.y, xx->trvTrk.angle,
- xx->trvTrk.trk?GetTrkIndex(xx->trvTrk.trk):-1))
-
- if (xx->direction) {
- FlipTraverseTrack(&trvTrk);
- }
-
- TraverseTrack(&trvTrk, &dist1);
-
- if (dist1 > 0.0) {
- if (dist1 > dist0) {
- /*ErrorMessage( "%s no room: L%0.3f D%0.3f", CarItemNumber(xx->item), length, dist1 );*/
- StopTrain(train, ST_NoRoom);
- return FALSE;
- } else {
- dist0 -= dist1;
- LOG(log_trainMove, 1, (" %s STOP D%d [%0.3f %0.3f] A%0.3f D%0.3f\n",
- CarItemNumber(xx->item), xx->direction, xx->trvTrk.pos.x, xx->trvTrk.pos.y,
- xx->trvTrk.angle, dist0))
- }
-
- /*ErrorMessage( "%s stopped at End Of Track", CarItemNumber(xx->item) );*/
- if (xx->autoReverse) {
- xx->direction = !xx->direction;
- SetTrainDirection(train);
- } else {
- if (xx->speed > maxCouplingSpeed) {
- car1 = train;
- dir1 = xx->direction;
- GetTrainLength2(&car1, &dir1);
- CrashTrain(car1, dir1, &trvTrk, (long)xx->speed, FALSE);
- return TRUE;
- } else {
- if (trvTrk.trk && trvTrk.trk->endCnt > 1) //Test for null track after Traverse
- StopTrain(train, ST_OpenTurnout );
- else
- StopTrain(train, ST_EndOfTrack);
- return (FALSE);
- }
- }
- }
-
- trvTrk = xx->trvTrk;
- TraverseTrack2(&xx->trvTrk, xx->direction==0?dist0:-dist0);
- car1 = train;
- dir1 = 0;
- GetTrainLength2(&car1, &dir1);
- dir1 = 1-dir1;
- measured = FALSE;
- WALK_CARS_START(car1, xx1, dir1);
-
- if (CarItemIsLoco(xx1->item) && !measured) {
- xx->distance += dist0;
- measured = TRUE;
- }
-
- WALK_CARS_END(car1, xx1, dir1);
-
- if (train == followTrain) {
- if (followCenter.x != mainCenter.x ||
- followCenter.y != mainCenter.y) {
- if (curTrainDlg->train == followTrain) {
- curTrainDlg->followMe = FALSE;
- ParamLoadControl(curTrainDlg->trainPGp, I_FOLLOW);
- }
-
- followTrain = NULL;
- } else if (OFF_FOLLOW(xx->trvTrk.pos, xx->trvTrk.pos)) {
- MoveMainWindow(xx->trvTrk.pos,
- NormalizeAngle(xx->trvTrk.angle+(xx->direction?180.0:0.0)));
- followCenter = mainCenter;
- }
- }
-
- PlaceTrain(train, TRUE, TRUE);
- return TRUE;
+ track_p train,
+ long timeD)
+{
+ DIST_T ips, dist0, dist1;
+ struct extraDataCar_t *xx, *xx1;
+ traverseTrack_t trvTrk;
+ DIST_T length;
+ track_p car1;
+ int dir1;
+ int measured; /* make sure the distance is only measured once per train */
+
+ if (train == NULL) {
+ return FALSE;
+ }
+
+ xx = GET_EXTRA_DATA(train, T_CAR, extraDataCar_t);
+
+ if (xx->speed <= 0) {
+ return FALSE;
+ }
+
+ ips = ((xx->speed*5280.0*12.0)/(60.0*60.0*GetScaleRatio(GetLayoutCurScale())));
+ dist0 = ips * timeD/1000.0;
+ length = GetTrainLength(train, xx->direction);
+ dist1 = length + dist0;
+ trvTrk = xx->trvTrk;
+
+ if (trvTrk.trk == NULL) {
+ return FALSE;
+ }
+
+ LOG(log_trainMove, 1,
+ ("moveTrain: %s t%ld->%0.3f S%0.3f D%d [%0.3f %0.3f] A%0.3f T%d\n",
+ CarItemNumber(xx->item), timeD, dist0, xx->speed, xx->direction,
+ xx->trvTrk.pos.x, xx->trvTrk.pos.y, xx->trvTrk.angle,
+ xx->trvTrk.trk?GetTrkIndex(xx->trvTrk.trk):-1))
+
+ if (xx->direction) {
+ FlipTraverseTrack(&trvTrk);
+ }
+
+ TraverseTrack(&trvTrk, &dist1);
+
+ if (dist1 > 0.0) {
+ if (dist1 > dist0) {
+ /*ErrorMessage( "%s no room: L%0.3f D%0.3f", CarItemNumber(xx->item), length, dist1 );*/
+ StopTrain(train, ST_NoRoom);
+ return FALSE;
+ } else {
+ dist0 -= dist1;
+ LOG(log_trainMove, 1, (" %s STOP D%d [%0.3f %0.3f] A%0.3f D%0.3f\n",
+ CarItemNumber(xx->item), xx->direction, xx->trvTrk.pos.x, xx->trvTrk.pos.y,
+ xx->trvTrk.angle, dist0))
+ }
+
+ /*ErrorMessage( "%s stopped at End Of Track", CarItemNumber(xx->item) );*/
+ if (xx->autoReverse) {
+ xx->direction = !xx->direction;
+ SetTrainDirection(train);
+ } else {
+ if (xx->speed > maxCouplingSpeed) {
+ car1 = train;
+ dir1 = xx->direction;
+ GetTrainLength2(&car1, &dir1);
+ CrashTrain(car1, dir1, &trvTrk, (long)xx->speed, FALSE);
+ return TRUE;
+ } else {
+ if (trvTrk.trk
+ && GetTrkEndPtCnt( trvTrk.trk ) > 1) { //Test for null track after Traverse
+ StopTrain(train, ST_OpenTurnout );
+ } else {
+ StopTrain(train, ST_EndOfTrack);
+ }
+ return (FALSE);
+ }
+ }
+ }
+
+ trvTrk = xx->trvTrk;
+ TraverseTrack2(&xx->trvTrk, xx->direction==0?dist0:-dist0);
+ car1 = train;
+ dir1 = 0;
+ GetTrainLength2(&car1, &dir1);
+ dir1 = 1-dir1;
+ measured = FALSE;
+ WALK_CARS_START(car1, xx1, dir1);
+
+ if (CarItemIsLoco(xx1->item) && !measured) {
+ xx->distance += dist0;
+ measured = TRUE;
+ }
+
+ WALK_CARS_END(car1, xx1, dir1);
+
+ if (train == followTrain) {
+ if (followCenter.x != mainCenter.x ||
+ followCenter.y != mainCenter.y) {
+ if (curTrainDlg->train == followTrain) {
+ curTrainDlg->followMe = FALSE;
+ ParamLoadControl(curTrainDlg->trainPGp, I_FOLLOW);
+ }
+
+ followTrain = NULL;
+ } else if (OFF_FOLLOW(xx->trvTrk.pos, xx->trvTrk.pos)) {
+ MoveMainWindow(xx->trvTrk.pos,
+ NormalizeAngle(xx->trvTrk.angle+(xx->direction?180.0:0.0)));
+ followCenter = mainCenter;
+ }
+ }
+
+ PlaceTrain(train, TRUE, TRUE);
+ return TRUE;
}
static BOOL_T MoveTrains(long timeD)
{
- BOOL_T trains_moved = FALSE;
- track_p train;
- struct extraDataCar_t * xx;
+ BOOL_T trains_moved = FALSE;
+ track_p train;
+ struct extraDataCar_t * xx;
- for (train=NULL; TrackIterate(&train);) {
- if (GetTrkType(train) != T_CAR) {
- continue;
- }
+ for (train=NULL; TrackIterate(&train);) {
+ if (GetTrkType(train) != T_CAR) {
+ continue;
+ }
- xx = GET_EXTRA_DATA(train, T_CAR, extraDataCar_t);
+ xx = GET_EXTRA_DATA(train, T_CAR, extraDataCar_t);
- if (!CarItemIsLoco(xx->item)) {
- continue;
- }
+ if (!CarItemIsLoco(xx->item)) {
+ continue;
+ }
- if (!IsLocoMaster(xx)) {
- continue;
- }
+ if (!IsLocoMaster(xx)) {
+ continue;
+ }
- if (xx->speed == 0) {
- continue;
- }
+ if (xx->speed == 0) {
+ continue;
+ }
- trains_moved |= MoveTrain(train, timeD);
- }
+ trains_moved |= MoveTrain(train, timeD);
+ }
- ControllerDialogSyncAll();
- TempRedraw(); // MoveTrains
- return trains_moved;
+ ControllerDialogSyncAll();
+ TempRedraw(); // MoveTrains
+ return trains_moved;
}
static void MoveTrainsLoop(void)
{
- long time1, timeD;
- static long time0 = 0;
- trainsTimeoutPending = FALSE;
+ long time1, timeD;
+ static long time0 = 0;
+ trainsTimeoutPending = FALSE;
- if (trainsState != TRAINS_RUN) {
- time0 = 0;
- return;
- }
+ if (trainsState != TRAINS_RUN) {
+ time0 = 0;
+ return;
+ }
- if (time0 == 0) {
- time0 = wGetTimer();
- }
+ if (time0 == 0) {
+ time0 = wGetTimer();
+ }
- time1 = wGetTimer();
- timeD = time1-time0;
- time0 = time1;
+ time1 = wGetTimer();
+ timeD = time1-time0;
+ time0 = time1;
- if (timeD > 1000) {
- timeD = 1000;
- }
+ if (timeD > 1000) {
+ timeD = 1000;
+ }
- if (MoveTrains(timeD)) {
- wAlarm(trainPause, MoveTrainsLoop);
- trainsTimeoutPending = TRUE;
- } else {
- time0 = 0;
- trainsState = TRAINS_IDLE;
- TrainTimeEndPause();
- }
+ if (MoveTrains(timeD)) {
+ wAlarm(trainPause, MoveTrainsLoop);
+ trainsTimeoutPending = TRUE;
+ } else {
+ time0 = 0;
+ trainsState = TRAINS_IDLE;
+ TrainTimeEndPause();
+ }
}
static void RestartTrains(void)
{
- if (trainsState != TRAINS_RUN) {
- TrainTimeStartPause();
- }
+ if (trainsState != TRAINS_RUN) {
+ TrainTimeStartPause();
+ }
- trainsState = TRAINS_RUN;
+ trainsState = TRAINS_RUN;
- if (!trainsTimeoutPending) {
- MoveTrainsLoop();
- }
+ if (!trainsTimeoutPending) {
+ MoveTrainsLoop();
+ }
}
static long trainTime0 = 0;
static long playbackTrainPause = 0;
static drawCmd_t trainMovieD = {
- NULL,
- &screenDrawFuncs,
- 0,
- 16.0,
- 0,
- {0,0}, {1,1},
- Pix2CoOrd, CoOrd2Pix
+ NULL,
+ &screenDrawFuncs,
+ 0,
+ 16.0,
+ 0,
+ {0,0}, {1,1},
+ Pix2CoOrd, CoOrd2Pix
};
static long trainMovieFrameDelay;
static long trainMovieFrameNext;
static void TrainTimeEndPause(void)
{
- if (recordF) {
- if (trainTime0 != 0) {
- long delay;
- delay = wGetTimer()-trainTime0;
+ if (recordF) {
+ if (trainTime0 != 0) {
+ long delay;
+ delay = wGetTimer()-trainTime0;
- if (delay > 0) {
- fprintf(recordF, "TRAINPAUSE %ld\n", delay);
- }
- }
+ if (delay > 0) {
+ fprintf(recordF, "TRAINPAUSE %ld\n", delay);
+ }
+ }
- trainTime0 = 0;
- }
+ trainTime0 = 0;
+ }
}
static void TrainTimeStartPause(void)
{
- if (trainTime0 == 0) {
- trainTime0 = wGetTimer();
- }
+ if (trainTime0 == 0) {
+ trainTime0 = wGetTimer();
+ }
}
static BOOL_T TrainTimeDoPause(char * line)
{
- BOOL_T drawCarEnable2;
- playbackTrainPause = atol(line);
- LOG(log_trainPlayback, 1, ("DoPause %ld\n", playbackTrainPause));
- trainsState = TRAINS_RUN;
-
- if (trainMovieFrameDelay > 0) {
- drawCarEnable2 = drawCarEnable;
- drawCarEnable = TRUE;
- TakeSnapshot(&trainMovieD);
- drawCarEnable = drawCarEnable2;
- LOG(log_trainPlayback, 1, ("SNAP 0\n"));
- trainMovieFrameNext = trainMovieFrameDelay;
- }
-
- /*MoveTrains();*/
- while (playbackTrainPause > 0) {
- if (playbackTrainPause > trainPause) {
- wPause(trainPause);
- MoveTrains(trainPause);
- playbackTrainPause -= trainPause;
-
- if (trainMovieFrameDelay > 0) {
- trainMovieFrameNext -= trainPause;
- }
- } else {
- wPause(playbackTrainPause);
- MoveTrains(playbackTrainPause);
-
- if (trainMovieFrameDelay > 0) {
- trainMovieFrameNext -= playbackTrainPause;
- }
-
- playbackTrainPause = 0;
- }
-
- if (trainMovieFrameDelay > 0 &&
- trainMovieFrameNext <= 0) {
- drawCarEnable2 = drawCarEnable;
- drawCarEnable = TRUE;
- TakeSnapshot(&trainMovieD);
- drawCarEnable = drawCarEnable2;
- LOG(log_trainPlayback, 1, ("SNAP %ld\n", trainMovieFrameNext));
- trainMovieFrameNext = trainMovieFrameDelay;
- }
- }
-
- return TRUE;
+ BOOL_T drawCarEnable2;
+ playbackTrainPause = atol(line);
+ LOG(log_trainPlayback, 1, ("DoPause %ld\n", playbackTrainPause));
+ trainsState = TRAINS_RUN;
+
+ if (trainMovieFrameDelay > 0) {
+ drawCarEnable2 = drawCarEnable;
+ drawCarEnable = TRUE;
+ TakeSnapshot(&trainMovieD);
+ drawCarEnable = drawCarEnable2;
+ LOG(log_trainPlayback, 1, ("SNAP 0\n"));
+ trainMovieFrameNext = trainMovieFrameDelay;
+ }
+
+ /*MoveTrains();*/
+ while (playbackTrainPause > 0) {
+ if (playbackTrainPause > trainPause) {
+ wPause(trainPause);
+ MoveTrains(trainPause);
+ playbackTrainPause -= trainPause;
+
+ if (trainMovieFrameDelay > 0) {
+ trainMovieFrameNext -= trainPause;
+ }
+ } else {
+ wPause(playbackTrainPause);
+ MoveTrains(playbackTrainPause);
+
+ if (trainMovieFrameDelay > 0) {
+ trainMovieFrameNext -= playbackTrainPause;
+ }
+
+ playbackTrainPause = 0;
+ }
+
+ if (trainMovieFrameDelay > 0 &&
+ trainMovieFrameNext <= 0) {
+ drawCarEnable2 = drawCarEnable;
+ drawCarEnable = TRUE;
+ TakeSnapshot(&trainMovieD);
+ drawCarEnable = drawCarEnable2;
+ LOG(log_trainPlayback, 1, ("SNAP %ld\n", trainMovieFrameNext));
+ trainMovieFrameNext = trainMovieFrameDelay;
+ }
+ }
+
+ return TRUE;
}
static BOOL_T TrainDoMovie(char * line)
{
- /* on/off, scale, orig, size */
- long fps;
+ /* on/off, scale, orig, size */
+ long fps;
- if (trainMovieD.dpi == 0) {
- trainMovieD.dpi = mainD.dpi;
- }
+ if (trainMovieD.dpi == 0) {
+ trainMovieD.dpi = mainD.dpi;
+ }
- if (!GetArgs(line, "lfpp", &fps, &trainMovieD.scale, &trainMovieD.orig,
- &trainMovieD.size)) {
- return FALSE;
- }
+ if (!GetArgs(line, "lfpp", &fps, &trainMovieD.scale, &trainMovieD.orig,
+ &trainMovieD.size)) {
+ return FALSE;
+ }
- if (fps > 0) {
- trainMovieFrameDelay = 1000/fps;
- } else {
- trainMovieFrameDelay = 0;
- }
+ if (fps > 0) {
+ trainMovieFrameDelay = 1000/fps;
+ } else {
+ trainMovieFrameDelay = 0;
+ }
- trainMovieFrameNext = 0;
- return TRUE;
+ trainMovieFrameNext = 0;
+ return TRUE;
}
void AttachTrains(void)
{
- track_p car;
- track_p loco;
- struct extraDataCar_t * xx;
- coOrd pos;
- track_p trk;
- ANGLE_T angle;
- EPINX_T ep0, ep1;
- int dir;
-
- for (car=NULL; TrackIterate(&car);) {
- ClrTrkBits(car, TB_CARATTACHED);
-
- if (GetTrkType(car) != T_CAR) {
- continue;
- }
-
- xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
- ClrProcessed(xx);
- }
-
- for (car=NULL; TrackIterate(&car);) {
- if (GetTrkType(car) != T_CAR) {
- continue;
- }
-
- xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
-
- if (IsProcessed(xx)) {
- continue;
- }
-
- loco = FindMasterLoco(car, NULL);
-
- if (loco != NULL) {
- xx = GET_EXTRA_DATA(loco, T_CAR, extraDataCar_t);
- } else {
- loco = car;
- }
-
- pos = xx->trvTrk.pos;
-
- if (xx->status == ST_Crashed) {
- continue;
- }
-
- TRK_ITERATE(trk) {
- if (trk == xx->trvTrk.trk) {
- break;
- }
- }
-
- if (trk!=NULL && !QueryTrack(trk, Q_ISTRACK)) {
- trk = NULL;
- }
- if (trk==NULL || GetTrkDistance(trk,&pos)>trackGauge*2.0) {
- trk = OnTrack2(&pos, FALSE, TRUE, FALSE, NULL);
- }
-
- if (trk!=NULL) {
- /*if ( trk == xx->trvTrk.trk )
- continue;*/
- angle = GetAngleAtPoint(trk, pos, &ep0, &ep1);
-
- if (NormalizeAngle(xx->trvTrk.angle-angle+90) > 180) {
- angle = NormalizeAngle(angle+180);
- }
-
- PlaceTrainInit(loco, trk, pos, angle, TRUE);
- } else {
- PlaceTrainInit(loco, NULL, xx->trvTrk.pos, xx->trvTrk.angle, FALSE);
- }
-
- dir = 0;
- WALK_CARS_START(loco, xx, dir)
- WALK_CARS_END(loco, xx, dir)
- dir = 1-dir;
- WALK_CARS_START(loco, xx, dir)
- SetProcessed(xx);
-
- if (xx->trvTrk.trk) {
- SetTrkBits(xx->trvTrk.trk, TB_CARATTACHED);
- xx->status = ST_StopManual;
- } else {
- xx->status = ST_NotOnTrack;
- }
-
- WALK_CARS_END(loco, xx, dir)
- }
-
- for (car=NULL; TrackIterate(&car);) {
- if (GetTrkType(car) != T_CAR) {
- continue;
- }
-
- xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
- ClrProcessed(xx);
- }
+ track_p car;
+ track_p loco;
+ struct extraDataCar_t * xx;
+ coOrd pos;
+ track_p trk;
+ ANGLE_T angle;
+ EPINX_T ep0, ep1;
+ int dir;
+
+ for (car=NULL; TrackIterate(&car);) {
+ ClrTrkBits(car, TB_CARATTACHED);
+
+ if (GetTrkType(car) != T_CAR) {
+ continue;
+ }
+
+ xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
+ ClrProcessed(xx);
+ }
+
+ for (car=NULL; TrackIterate(&car);) {
+ if (GetTrkType(car) != T_CAR) {
+ continue;
+ }
+
+ xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
+
+ if (IsProcessed(xx)) {
+ continue;
+ }
+
+ loco = FindMasterLoco(car, NULL);
+
+ if (loco != NULL) {
+ xx = GET_EXTRA_DATA(loco, T_CAR, extraDataCar_t);
+ } else {
+ loco = car;
+ }
+
+ pos = xx->trvTrk.pos;
+
+ if (xx->status == ST_Crashed) {
+ continue;
+ }
+
+ TRK_ITERATE(trk) {
+ if (trk == xx->trvTrk.trk) {
+ break;
+ }
+ }
+
+ if (trk!=NULL && !QueryTrack(trk, Q_ISTRACK)) {
+ trk = NULL;
+ }
+ if (trk==NULL || GetTrkDistance(trk,&pos)>trackGauge*2.0) {
+ // Suppress moving pos to turnout endPt
+ onTrackInSplit = TRUE;
+ trk = OnTrack2(&pos, FALSE, TRUE, FALSE, NULL);
+ onTrackInSplit = FALSE;
+ }
+
+ if (trk!=NULL) {
+ /*if ( trk == xx->trvTrk.trk )
+ continue;*/
+ angle = GetAngleAtPoint(trk, pos, &ep0, &ep1);
+
+ if (NormalizeAngle(xx->trvTrk.angle-angle+90) > 180) {
+ angle = NormalizeAngle(angle+180);
+ }
+
+ PlaceTrainInit(loco, trk, pos, angle, TRUE);
+ } else {
+ PlaceTrainInit(loco, NULL, xx->trvTrk.pos, xx->trvTrk.angle, FALSE);
+ }
+
+ dir = 0;
+ WALK_CARS_START(loco, xx, dir)
+ WALK_CARS_END(loco, xx, dir)
+ dir = 1-dir;
+ WALK_CARS_START(loco, xx, dir)
+ SetProcessed(xx);
+
+ if (xx->trvTrk.trk) {
+ SetTrkBits(xx->trvTrk.trk, TB_CARATTACHED);
+ xx->status = ST_StopManual;
+ } else {
+ xx->status = ST_NotOnTrack;
+ }
+
+ WALK_CARS_END(loco, xx, dir)
+ }
+
+ for (car=NULL; TrackIterate(&car);) {
+ if (GetTrkType(car) != T_CAR) {
+ continue;
+ }
+
+ xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
+ ClrProcessed(xx);
+ }
}
static void UpdateTrainAttachment(void)
{
- track_p trk;
- struct extraDataCar_t * xx;
+ track_p trk;
+ struct extraDataCar_t * xx;
- for (trk=NULL; TrackIterate(&trk);) {
- ClrTrkBits(trk, TB_CARATTACHED);
- }
+ for (trk=NULL; TrackIterate(&trk);) {
+ ClrTrkBits(trk, TB_CARATTACHED);
+ }
- for (trk=NULL; TrackIterate(&trk);) {
- if (GetTrkType(trk) == T_CAR) {
- xx = GET_EXTRA_DATA(trk, T_CAR, extraDataCar_t);
+ for (trk=NULL; TrackIterate(&trk);) {
+ if (GetTrkType(trk) == T_CAR) {
+ xx = GET_EXTRA_DATA(trk, T_CAR, extraDataCar_t);
- if (xx->trvTrk.trk != NULL) {
- SetTrkBits(xx->trvTrk.trk, TB_CARATTACHED);
- }
- }
- }
+ if (xx->trvTrk.trk != NULL) {
+ SetTrkBits(xx->trvTrk.trk, TB_CARATTACHED);
+ }
+ }
+ }
}
static BOOL_T TrainOnMovableTrack(
- track_p trk,
- track_p *trainR)
+ track_p trk,
+ track_p *trainR)
{
- track_p train;
- struct extraDataCar_t * xx;
- int dir;
+ track_p train;
+ struct extraDataCar_t * xx;
+ int dir;
- for (train=NULL; TrackIterate(&train);) {
- if (GetTrkType(train) != T_CAR) {
- continue;
- }
+ for (train=NULL; TrackIterate(&train);) {
+ if (GetTrkType(train) != T_CAR) {
+ continue;
+ }
- xx = GET_EXTRA_DATA(train, T_CAR, extraDataCar_t);
+ xx = GET_EXTRA_DATA(train, T_CAR, extraDataCar_t);
- if (IsOnTrack(xx)) {
- if (xx->trvTrk.trk == trk) {
- break;
- }
- }
- }
+ if (IsOnTrack(xx)) {
+ if (xx->trvTrk.trk == trk) {
+ break;
+ }
+ }
+ }
- *trainR = train;
+ *trainR = train;
- if (train == NULL) {
- return TRUE;
- }
+ if (train == NULL) {
+ return TRUE;
+ }
- dir = 0;
- WALK_CARS_START(train, xx, dir)
- WALK_CARS_END(train, xx, dir)
- dir = 1-dir;
- WALK_CARS_START(train, xx, dir)
+ dir = 0;
+ WALK_CARS_START(train, xx, dir)
+ WALK_CARS_END(train, xx, dir)
+ dir = 1-dir;
+ WALK_CARS_START(train, xx, dir)
- if (xx->trvTrk.trk != trk) {
- ErrorMessage(MSG_CANT_MOVE_UNDER_TRAIN);
- return FALSE;
- }
+ if (xx->trvTrk.trk != trk) {
+ ErrorMessage(MSG_CANT_MOVE_UNDER_TRAIN);
+ return FALSE;
+ }
- WALK_CARS_END(train, xx, dir)
- train = FindMasterLoco(train, NULL);
+ WALK_CARS_END(train, xx, dir)
+ train = FindMasterLoco(train, NULL);
- if (train != NULL) {
- *trainR = train;
- }
+ if (train != NULL) {
+ *trainR = train;
+ }
- return TRUE;
+ return TRUE;
}
/*
@@ -2483,363 +2575,384 @@ static BOOL_T TrainOnMovableTrack(
#define DO_STOP (7)
#define DO_PENCILS_ON (8)
#define DO_PENCILS_OFF (9)
+#define DO_DESCRIBE (10)
static track_p trainFuncCar;
static coOrd trainFuncPos;
static wButton_p trainPauseB;
+
static STATUS_T CmdTrain(wAction_t action, coOrd pos)
{
- track_p trk0, trk1;
- static track_p currCar;
- coOrd pos0, pos1;
- static coOrd delta;
- ANGLE_T angle1;
- EPINX_T ep0, ep1;
- int dir;
- struct extraDataCar_t * xx=NULL;
- wWinPix_t w, h;
-
- switch (action) {
- case C_START:
- /*UndoStart( "Trains", "Trains" );*/
- UndoSuspend();
- programMode = MODE_TRAIN;
- drawCarEnable = FALSE;
- doDrawTurnoutPosition = 1;
- DoChangeNotification(CHANGE_PARAMS|CHANGE_TOOLBAR);
-
- if (CarAvailableCount() <= 0) {
- if (NoticeMessage(MSG_NO_CARS, _("Yes"), _("No")) > 0) {
- DoCarDlg(NULL);
- DoChangeNotification(CHANGE_PARAMS);
- }
- }
- SetAllTrackSelect( FALSE );
- EnableCommands();
-
- if (curTrainDlg == NULL) {
- curTrainDlg = CreateTrainControlDlg();
- }
-
- curTrainDlg->train = NULL;
- wListClear((wList_p)curTrainDlg->trainPGp->paramPtr[I_LIST].control);
- Dtrain.state = 0;
- trk0 = NULL;
- tempSegs_da.cnt = 0;
- DYNARR_SET(trkSeg_t, tempSegs_da, 8);
- RestartTrains();
- wButtonSetLabel(trainPauseB, (char*)goB);
- trainTime0 = 0;
- AttachTrains();
- curTrainDlg->train = NULL;
- curTrainDlg->speed = -1;
- wDrawClear((wDraw_p)curTrainDlg->trainPGp->paramPtr[I_SLIDER].control);
- LocoListInit();
- ControllerDialogSync(curTrainDlg);
- wShow(curTrainDlg->win);
- wControlShow((wControl_p)newcarB, (toolbarSet&(1<<BG_TRAIN)));
- currCarItemPtr = NULL;
- TempRedraw(); // CmdTrain C_START
- return C_CONTINUE;
-
- case C_TEXT:
- if (Dtrain.state == 0) {
- return C_CONTINUE;
- } else {
- return C_CONTINUE;
- }
-
- case C_DOWN:
- /*trainEnable = FALSE;*/
- InfoMessage("");
-
- if (trainsState == TRAINS_RUN) {
- trainsState = TRAINS_PAUSE;
- TrainTimeEndPause();
- }
-
- pos0 = pos;
-
- if (currCarItemPtr != NULL) {
- DIST_T dist;
- currCar = NewCar(-1, currCarItemPtr, zero, 0.0);
- CarItemUpdate(currCarItemPtr);
- HotBarCancel();
-
- if (currCar == NULL) {
- LOG1(log_error, ("Train: currCar became NULL 1\n"))
- return C_CONTINUE;
- }
-
- xx = GET_EXTRA_DATA(currCar, T_CAR, extraDataCar_t);
- xx->pencils = FALSE;
- dist = CarItemCoupledLength(xx->item)/2.0;
- Translate(&pos, xx->trvTrk.pos, xx->trvTrk.angle, dist);
- SetTrkEndPoint(currCar, 0, pos, xx->trvTrk.angle);
- Translate(&pos, xx->trvTrk.pos, xx->trvTrk.angle+180.0, dist);
- SetTrkEndPoint(currCar, 1, pos, NormalizeAngle(xx->trvTrk.angle+180.0));
- /*xx->state |= (xx->item->options&CAR_DESC_BITS);*/
- ClrLocoMaster(xx);
-
- if (CarItemIsLoco(xx->item)) {
- SetLocoMaster(xx);
- LocoListChangeEntry(NULL, currCar);
- }
-
- if ((trk0 = OnTrack(&pos0, FALSE, TRUE))) {
- xx->trvTrk.angle = GetAngleAtPoint(trk0, pos0, &ep0, &ep1);
-
- if (NormalizeAngle(FindAngle(pos, pos0) - xx->trvTrk.angle) > 180.0) {
- xx->trvTrk.angle = NormalizeAngle(xx->trvTrk.angle + 180);
- }
-
- xx->status = ST_StopManual;
- } else {
- xx->trvTrk.angle = 90;
- }
-
- PlaceTrainInit(currCar, trk0, pos0, xx->trvTrk.angle,
- (MyGetKeyState()&WKEY_SHIFT) == 0);
- /*DrawCars( &tempD, currCar, TRUE );*/
- } else {
- currCar = FindCar(&pos);
- delta.x = pos.x - pos0.x;
- delta.y = pos.y - pos0.y;
-
- if (logTable(log_trainMove).level >= 1) {
- if (currCar) {
- xx = GET_EXTRA_DATA(currCar, T_CAR, extraDataCar_t);
- LogPrintf("selected %s\n", CarItemNumber(xx->item));
-
- for (dir=0; dir<2; dir++) {
- int dir1 = dir;
- track_p car1 = currCar;
- struct extraDataCar_t * xx1 = GET_EXTRA_DATA(car1, T_CAR, extraDataCar_t);
- LogPrintf("dir=%d\n", dir1);
- WALK_CARS_START(car1, xx1, dir1)
- LogPrintf(" %s [%0.3f,%d]\n", CarItemNumber(xx1->item), xx1->trvTrk.angle,
- dir1);
- WALK_CARS_END(car1, xx1, dir1)
- }
- }
- }
- }
-
- if (currCar == NULL) {
- return C_CONTINUE;
- }
-
- trk0 = FindMasterLoco(currCar, NULL);
-
- if (trk0) {
- SetCurTrain(trk0);
- }
-
- return C_CONTINUE;
-
- case C_MOVE:
- if (currCar == NULL) {
- return C_CONTINUE;
- }
-
- pos.x += delta.x;
- pos.y += delta.y;
- pos0 = pos;
- xx = GET_EXTRA_DATA(currCar, T_CAR, extraDataCar_t);
- trk0 = OnTrack(&pos0, FALSE, TRUE);
-
- if (/*currCarItemPtr != NULL &&*/ trk0) {
- angle1 = GetAngleAtPoint(trk0, pos0, &ep0, &ep1);
-
- if (currCarItemPtr != NULL) {
- if (NormalizeAngle(FindAngle(pos, pos0) - angle1) > 180.0) {
- angle1 = NormalizeAngle(angle1 + 180);
- }
- } else {
- if (NormalizeAngle(xx->trvTrk.angle - angle1 + 90.0) > 180.0) {
- angle1 = NormalizeAngle(angle1 + 180);
- }
- }
-
- xx->trvTrk.angle = angle1;
- }
-
- tempSegs_da.cnt = 1;
- PlaceTrainInit(currCar, trk0, pos0, xx->trvTrk.angle,
- (MyGetKeyState()&WKEY_SHIFT) == 0);
- ControllerDialogSync(curTrainDlg);
- return C_CONTINUE;
-
- case C_UP:
- if (currCar != NULL) {
- trk0 = FindMasterLoco(currCar, NULL);
-
- if (trk0) {
- xx = GET_EXTRA_DATA(trk0, T_CAR, extraDataCar_t);
-
- if (!IsOnTrack(xx) || xx->speed <= 0) {
- StopTrain(trk0, ST_StopManual);
- }
- }
-
- Dtrain.state = 1;
- ControllerDialogSync(curTrainDlg);
- }
-
- InfoSubstituteControls(NULL, NULL);
- currCar = trk0 = NULL;
- currCarItemPtr = NULL;
-
- /*trainEnable = TRUE;*/
- if (trainsState == TRAINS_PAUSE) {
- RestartTrains();
- }
-
- return C_CONTINUE;
-
- case C_LCLICK:
- if (MyGetKeyState() & WKEY_SHIFT) {
- pos0 = pos;
- programMode = MODE_DESIGN;
-
- if ((trk0=OnTrack(&pos,FALSE,TRUE)) &&
- QueryTrack(trk0, Q_CAN_NEXT_POSITION) &&
- TrainOnMovableTrack(trk0, &trk1)) {
- if (trk1) {
- xx = GET_EXTRA_DATA(trk1, T_CAR, extraDataCar_t);
- pos1 = xx->trvTrk.pos;
- angle1 = xx->trvTrk.angle;
- } else {
- pos1 = pos0;
- angle1 = 0;
- }
-
- AdvancePositionIndicator(trk0, pos0, &pos1, &angle1);
-
- if (trk1) {
- xx->trvTrk.pos = pos1;
- xx->trvTrk.angle = angle1;
- PlaceTrain(trk1, FALSE, TRUE);
- }
- }
-
- programMode = MODE_TRAIN;
- trk0 = NULL;
- MainRedraw(); //CmdTrain: Make sure track is redrawn after switch thrown
- } else {
- trk0 = FindCar(&pos);
-
- if (trk0 == NULL) {
- return C_CONTINUE;
- }
-
- trk0 = FindMasterLoco(trk0, NULL);
-
- if (trk0 == NULL) {
- return C_CONTINUE;
- }
-
- SetCurTrain(trk0);
- }
-
- return C_CONTINUE;
-
- case C_RCLICK:
- trainFuncPos = pos;
- trainFuncCar = FindCar(&pos);
-
- if (trainFuncCar == NULL ||
- GetTrkType(trainFuncCar) != T_CAR) {
- return C_CONTINUE;
- }
-
- xx = GET_EXTRA_DATA(trainFuncCar, T_CAR, extraDataCar_t);
- if (xx->pencils) {
- wMenuPushEnable(trainPopupMI[DO_PENCILS_OFF], TRUE);
- wMenuPushEnable(trainPopupMI[DO_PENCILS_ON], FALSE);
- } else {
- wMenuPushEnable(trainPopupMI[DO_PENCILS_OFF], FALSE);
- wMenuPushEnable(trainPopupMI[DO_PENCILS_ON], TRUE);
- }
-
- trk0 = FindMasterLoco(trainFuncCar,NULL);
- dir = IsAligned(xx->trvTrk.angle, FindAngle(xx->trvTrk.pos,
- trainFuncPos)) ? 0 : 1;
- wMenuPushEnable(trainPopupMI[DO_UNCOUPLE], GetTrkEndTrk(trainFuncCar,
- dir)!=NULL);
- wMenuPushEnable(trainPopupMI[DO_MUMASTER], CarItemIsLoco(xx->item) &&
- !IsLocoMaster(xx));
-
- if (trk0) {
- xx = GET_EXTRA_DATA(trk0, T_CAR, extraDataCar_t);
- }
-
- wMenuPushEnable(trainPopupMI[DO_CHANGEDIR], trk0!=NULL);
- wMenuPushEnable(trainPopupMI[DO_STOP], trk0!=NULL && xx->speed>0);
- /*trainEnable = FALSE;*/
- trk0 = FindMasterLoco(trainFuncCar, NULL);
-
- if (trk0) {
- SetCurTrain(trk0);
- }
-
- if (!inPlayback) {
- wMenuPopupShow(trainPopupM);
- }
-
- return C_CONTINUE;
-
- case C_REDRAW:
- wDrawSaveImage(mainD.d);
- DrawAllCars();
- wWinGetSize(mainW, &w, &h);
- w -= wControlGetPosX(newCarControls[0]) + 4;
-
- if (w > 20) {
- wListSetSize((wList_p)newCarControls[0], w,
- wControlGetHeight(newCarControls[0]));
- }
-
- return C_CONTINUE;
-
- case C_CANCEL:
- /*trainEnable = FALSE;*/
- trainsState = TRAINS_STOP;
- TrainTimeEndPause();
- LOG(log_trainMove, 1, ("Train Cancel\n"))
- Dtrain.state = 0;
- doDrawTurnoutPosition = 0;
- drawCarEnable = TRUE;
- programMode = MODE_DESIGN;
- UpdateTrainAttachment();
- UndoResume();
- DoChangeNotification(CHANGE_PARAMS|CHANGE_TOOLBAR);
-
- if (curTrainDlg->win) {
- wHide(curTrainDlg->win);
- }
-
- MainRedraw(); // CmdTrain: Exit
- curTrainDlg->train = NULL;
- return C_CONTINUE;
-
- case C_CONFIRM:
-
- /*trainEnable = FALSE;*/
- if (trainsState != TRAINS_STOP) {
- trainsState = TRAINS_STOP;
- wButtonSetLabel(trainPauseB, (char*)stopI);
- TrainTimeEndPause();
- }
-
- currCar = NULL;
- currCarItemPtr = NULL;
- HotBarCancel();
- InfoSubstituteControls(NULL, NULL);
- return C_TERMINATE;
- }
-
- return C_CONTINUE;
+ static track_p trk0, trk1;
+ static track_p currCar;
+ coOrd pos0, pos1;
+ static coOrd delta;
+ ANGLE_T angle1;
+ EPINX_T ep0, ep1;
+ int dir;
+ struct extraDataCar_t * xx=NULL;
+ wWinPix_t w, h;
+ char msg[STR_SIZE];
+
+ switch (action) {
+ case C_START:
+ /*UndoStart( "Trains", "Trains" );*/
+ UndoSuspend();
+ programMode = MODE_TRAIN;
+ drawCarEnable = FALSE;
+ doDrawTurnoutPosition = 1;
+ DoChangeNotification(CHANGE_PARAMS|CHANGE_TOOLBAR);
+
+ if (CarAvailableCount() <= 0) {
+ if (NoticeMessage(MSG_NO_CARS, _("Yes"), _("No")) > 0) {
+ DoCarDlg(NULL);
+ DoChangeNotification(CHANGE_PARAMS);
+ }
+ }
+ SetAllTrackSelect( FALSE );
+ EnableCommands();
+
+ if (curTrainDlg == NULL) {
+ curTrainDlg = CreateTrainControlDlg();
+ }
+
+ curTrainDlg->train = NULL;
+ wListClear((wList_p)curTrainDlg->trainPGp->paramPtr[I_LIST].control);
+ Dtrain.state = 0;
+ trk0 = NULL;
+ trainHighlighted = NULL;
+ DYNARR_SET(trkSeg_t, tempSegs_da, 8);
+ RestartTrains();
+ wButtonSetLabel(trainPauseB, (char*)goB);
+ trainTime0 = 0;
+ AttachTrains();
+ curTrainDlg->train = NULL;
+ curTrainDlg->speed = -1;
+ wDrawClear((wDraw_p)curTrainDlg->trainPGp->paramPtr[I_SLIDER].control);
+ LocoListInit();
+ ControllerDialogSync(curTrainDlg);
+ wShow(curTrainDlg->win);
+ wControlShow((wControl_p)newcarB, (toolbarSet&(1<<BG_TRAIN)));
+ currCarItemPtr = NULL;
+ TempRedraw(); // CmdTrain C_START
+ return C_CONTINUE;
+
+ case wActionMove:
+
+ trainHighlighted = FindCar(&pos);
+
+ return C_CONTINUE;
+ break;
+
+
+ case C_TEXT:
+ return C_CONTINUE;
+
+ case C_DOWN:
+ /*trainEnable = FALSE;*/
+ InfoMessage("");
+
+ if (trainsState == TRAINS_RUN) {
+ trainsState = TRAINS_PAUSE;
+ TrainTimeEndPause();
+ }
+
+ pos0 = pos;
+
+ if (currCarItemPtr != NULL) {
+ DIST_T dist;
+ currCar = NewCar(-1, currCarItemPtr, zero, 0.0);
+ CarItemUpdate(currCarItemPtr);
+ HotBarCancel();
+
+ CHECK(currCar != NULL);
+
+ xx = GET_EXTRA_DATA(currCar, T_CAR, extraDataCar_t);
+ xx->pencils = FALSE;
+ dist = CarItemCoupledLength(xx->item)/2.0;
+ Translate(&pos, xx->trvTrk.pos, xx->trvTrk.angle, dist);
+ SetTrkEndPoint(currCar, 0, pos, xx->trvTrk.angle);
+ Translate(&pos, xx->trvTrk.pos, xx->trvTrk.angle+180.0, dist);
+ SetTrkEndPoint(currCar, 1, pos, NormalizeAngle(xx->trvTrk.angle+180.0));
+ /*xx->state |= (xx->item->options&CAR_DESC_BITS);*/
+ ClrLocoMaster(xx);
+
+ if (CarItemIsLoco(xx->item)) {
+ SetLocoMaster(xx);
+ LocoListChangeEntry(NULL, currCar);
+ }
+
+ if ((trk0 = OnTrack(&pos0, FALSE, TRUE))) {
+ xx->trvTrk.angle = GetAngleAtPoint(trk0, pos0, &ep0, &ep1);
+
+ if (NormalizeAngle(FindAngle(pos, pos0) - xx->trvTrk.angle) > 180.0) {
+ xx->trvTrk.angle = NormalizeAngle(xx->trvTrk.angle + 180);
+ }
+
+ xx->status = ST_StopManual;
+ } else {
+ xx->trvTrk.angle = 90;
+ }
+
+ PlaceTrainInit(currCar, trk0, pos0, xx->trvTrk.angle,
+ (MyGetKeyState()&WKEY_SHIFT) == 0);
+ /*DrawCars( &tempD, currCar, TRUE );*/
+ } else {
+ currCar = FindCar(&pos);
+ delta.x = pos.x - pos0.x;
+ delta.y = pos.y - pos0.y;
+
+ if (logTable(log_trainMove).level >= 1) {
+ if (currCar) {
+ xx = GET_EXTRA_DATA(currCar, T_CAR, extraDataCar_t);
+ LogPrintf("selected %s\n", CarItemNumber(xx->item));
+
+ for (dir=0; dir<2; dir++) {
+ int dir1 = dir;
+ track_p car1 = currCar;
+ struct extraDataCar_t * xx1 = GET_EXTRA_DATA(car1, T_CAR, extraDataCar_t);
+ LogPrintf("dir=%d\n", dir1);
+ WALK_CARS_START(car1, xx1, dir1)
+ LogPrintf(" %s [%0.3f,%d]\n", CarItemNumber(xx1->item), xx1->trvTrk.angle,
+ dir1);
+ WALK_CARS_END(car1, xx1, dir1)
+ }
+ }
+ }
+ }
+
+ if (currCar == NULL) {
+ return C_CONTINUE;
+ }
+
+ trainHighlighted = currCar;
+
+ trk0 = FindMasterLoco(currCar, NULL);
+
+ if (trk0) {
+ SetCurTrain(trk0);
+ }
+
+ return C_CONTINUE;
+
+ case C_MOVE:
+ if (currCar == NULL) {
+ return C_CONTINUE;
+ }
+
+ pos.x += delta.x;
+ pos.y += delta.y;
+ pos0 = pos;
+ xx = GET_EXTRA_DATA(currCar, T_CAR, extraDataCar_t);
+ trk0 = OnTrack(&pos0, FALSE, TRUE);
+
+ if (/*currCarItemPtr != NULL &&*/ trk0) {
+ angle1 = GetAngleAtPoint(trk0, pos0, &ep0, &ep1);
+
+ if (currCarItemPtr != NULL) {
+ if (NormalizeAngle(FindAngle(pos, pos0) - angle1) > 180.0) {
+ angle1 = NormalizeAngle(angle1 + 180);
+ }
+ } else {
+ if (NormalizeAngle(xx->trvTrk.angle - angle1 + 90.0) > 180.0) {
+ angle1 = NormalizeAngle(angle1 + 180);
+ }
+ }
+
+ xx->trvTrk.angle = angle1;
+ }
+
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ PlaceTrainInit(currCar, trk0, pos0, xx->trvTrk.angle,
+ (MyGetKeyState()&WKEY_SHIFT) == 0);
+ ControllerDialogSync(curTrainDlg);
+ return C_CONTINUE;
+
+ case C_UP:
+ if (currCar != NULL) {
+ trk0 = FindMasterLoco(currCar, NULL);
+
+ if (trk0) {
+ xx = GET_EXTRA_DATA(trk0, T_CAR, extraDataCar_t);
+
+ if (!IsOnTrack(xx) || xx->speed <= 0) {
+ StopTrain(trk0, ST_StopManual);
+ }
+ }
+
+ Dtrain.state = 1;
+ ControllerDialogSync(curTrainDlg);
+ }
+
+ InfoSubstituteControls(NULL, NULL);
+ currCar = trk0 = NULL;
+ currCarItemPtr = NULL;
+ trainHighlighted = NULL;
+
+ /*trainEnable = TRUE;*/
+ if (trainsState == TRAINS_PAUSE) {
+ RestartTrains();
+ }
+
+ return C_CONTINUE;
+
+ case C_LCLICK:
+ if (MyGetKeyState() & WKEY_SHIFT) {
+ pos0 = pos;
+ programMode = MODE_DESIGN;
+
+ if ((trk0=OnTrack(&pos,FALSE,TRUE)) &&
+ QueryTrack(trk0, Q_CAN_NEXT_POSITION) &&
+ TrainOnMovableTrack(trk0, &trk1)) {
+ if (trk1) {
+ xx = GET_EXTRA_DATA(trk1, T_CAR, extraDataCar_t);
+ pos1 = xx->trvTrk.pos;
+ angle1 = xx->trvTrk.angle;
+ } else {
+ pos1 = pos0;
+ angle1 = 0;
+ }
+
+ AdvancePositionIndicator(trk0, pos0, &pos1, &angle1);
+
+ if (trk1) {
+ xx->trvTrk.pos = pos1;
+ xx->trvTrk.angle = angle1;
+ PlaceTrain(trk1, FALSE, TRUE);
+ }
+ }
+
+ programMode = MODE_TRAIN;
+ trk0 = NULL;
+ MainRedraw(); //CmdTrain: Make sure track is redrawn after switch thrown
+ } else {
+ trk0 = FindCar(&pos);
+
+ if (trk0 == NULL) {
+ return C_CONTINUE;
+ }
+
+ trainHighlighted = trk0;
+ DescribeTrack( trk0, msg, sizeof msg );
+ InfoMessage( msg );
+
+ trk0 = FindMasterLoco(trk0, NULL);
+
+ if (trk0 == NULL) {
+ return C_CONTINUE;
+ }
+
+ SetCurTrain(trk0);
+ }
+
+ return C_CONTINUE;
+
+ case C_RCLICK:
+ trainFuncPos = pos;
+ trainFuncCar = FindCar(&pos);
+
+ if (trainFuncCar == NULL ||
+ GetTrkType(trainFuncCar) != T_CAR) {
+ return C_CONTINUE;
+ }
+
+ xx = GET_EXTRA_DATA(trainFuncCar, T_CAR, extraDataCar_t);
+ if (xx->pencils) {
+// wMenuPushEnable(trainPopupMI[DO_PENCILS_OFF], TRUE);
+// wMenuPushEnable(trainPopupMI[DO_PENCILS_ON], FALSE);
+ } else {
+// wMenuPushEnable(trainPopupMI[DO_PENCILS_OFF], FALSE);
+// wMenuPushEnable(trainPopupMI[DO_PENCILS_ON], TRUE);
+ }
+
+ trk0 = FindMasterLoco(trainFuncCar,NULL);
+ dir = IsAligned(xx->trvTrk.angle, FindAngle(xx->trvTrk.pos,
+ trainFuncPos)) ? 0 : 1;
+ wMenuPushEnable(trainPopupMI[DO_UNCOUPLE], GetTrkEndTrk(trainFuncCar,
+ dir)!=NULL);
+ wMenuPushEnable(trainPopupMI[DO_MUMASTER], CarItemIsLoco(xx->item) &&
+ !IsLocoMaster(xx));
+
+ if (trk0) {
+ xx = GET_EXTRA_DATA(trk0, T_CAR, extraDataCar_t);
+ }
+
+ wMenuPushEnable(trainPopupMI[DO_CHANGEDIR], trk0!=NULL);
+ wMenuPushEnable(trainPopupMI[DO_STOP], trk0!=NULL && xx->speed>0);
+ /*trainEnable = FALSE;*/
+ trainHighlighted = trk0;
+ trk0 = FindMasterLoco(trainFuncCar, NULL);
+
+ if (trk0) {
+ SetCurTrain(trk0);
+ }
+
+ if (!inPlayback) {
+ wMenuPopupShow(trainPopupM);
+ }
+
+ return C_CONTINUE;
+
+ case C_REDRAW:
+ wDrawSaveImage(mainD.d);
+ DrawAllCars(trainHighlighted);
+
+ wWinGetSize(mainW, &w, &h);
+ w -= wControlGetPosX(newCarControls[0]) + 4;
+
+ if (w > 20) {
+ wListSetSize((wList_p)newCarControls[0], w,
+ wControlGetHeight(newCarControls[0]));
+ }
+
+
+
+ return C_CONTINUE;
+
+ case C_CANCEL:
+ /*trainEnable = FALSE;*/
+ trainsState = TRAINS_STOP;
+ TrainTimeEndPause();
+ LOG(log_trainMove, 1, ("Train Cancel\n"))
+ Dtrain.state = 0;
+ doDrawTurnoutPosition = 0;
+ drawCarEnable = TRUE;
+ programMode = MODE_DESIGN;
+ UpdateTrainAttachment();
+ UndoResume();
+ DoChangeNotification(CHANGE_PARAMS|CHANGE_TOOLBAR);
+
+ if (curTrainDlg && curTrainDlg->win) {
+ wHide(curTrainDlg->win);
+ }
+
+ MainRedraw(); // CmdTrain: Exit
+ if ( curTrainDlg ) {
+ curTrainDlg->train = NULL;
+ }
+ trk0 = NULL;
+ trainHighlighted = NULL;
+ return C_CONTINUE;
+
+ case C_CONFIRM:
+
+ /*trainEnable = FALSE;*/
+ if (trainsState != TRAINS_STOP) {
+ trainsState = TRAINS_STOP;
+ wButtonSetLabel(trainPauseB, (char*)stopI);
+ TrainTimeEndPause();
+ }
+
+ currCar = NULL;
+ currCarItemPtr = NULL;
+ HotBarCancel();
+ InfoSubstituteControls(NULL, NULL);
+ trk0 = NULL;
+ trainHighlighted = NULL;
+ return C_TERMINATE;
+ }
+
+ return C_CONTINUE;
}
@@ -2847,298 +2960,290 @@ static STATUS_T CmdTrain(wAction_t action, coOrd pos)
*
*/
-STATUS_T CmdCarDescAction(
- wAction_t action,
- coOrd pos)
+static STATUS_T CmdCarDescAction(
+ wAction_t action,
+ coOrd pos)
{
- return CmdTrain(action, pos);
+ return CmdTrain(action, pos);
}
-#include "bitmaps/train.xpm"
-#include "bitmaps/exit.xpm"
-#include "bitmaps/new-car.xpm"
+#include "bitmaps/train.xpm3"
+#include "bitmaps/exit.xpm3"
+#include "bitmaps/new-car.xpm3"
+#include "bitmaps/go.xpm3"
+#include "bitmaps/stop.xpm3"
+
#include "bitmaps/zero.xpm"
-#include "bitmaps/go.xpm"
-#include "bitmaps/stop.xpm"
#include "bitmaps/greendot.xpm"
#include "bitmaps/reddot.xpm"
static void CmdTrainStopGo(void * unused)
{
- wIcon_p icon;
-
- if (trainsState == TRAINS_STOP) {
- icon = goB;
- RestartTrains();
- } else {
- trainsState = TRAINS_STOP;
- icon = stopB;
- TrainTimeEndPause();
- }
+ wIcon_p icon;
+
+ if (trainsState == TRAINS_STOP) {
+ icon = goB;
+ RestartTrains();
+ } else {
+ trainsState = TRAINS_STOP;
+ icon = stopB;
+ TrainTimeEndPause();
+ }
- ControllerDialogSync(curTrainDlg);
- wButtonSetLabel(trainPauseB, (char*)icon);
+ ControllerDialogSync(curTrainDlg);
+ wButtonSetLabel(trainPauseB, (char*)icon);
- if (recordF) {
- fprintf(recordF, "TRAINSTOPGO %s\n", trainsState==TRAINS_STOP?"STOP":"GO");
- }
+ if (recordF) {
+ fprintf(recordF, "TRAINSTOPGO %s\n", trainsState==TRAINS_STOP?"STOP":"GO");
+ }
}
static BOOL_T TrainStopGoPlayback(char * line)
{
- while (*line && isspace((unsigned char)*line)) {
- line++;
- }
+ while (*line && isspace((unsigned char)*line)) {
+ line++;
+ }
- if ((strcasecmp(line, "STOP") == 0) != (trainsState == TRAINS_STOP)) {
- CmdTrainStopGo(NULL);
- }
+ if ((strcasecmp(line, "STOP") == 0) != (trainsState == TRAINS_STOP)) {
+ CmdTrainStopGo(NULL);
+ }
- return TRUE;
+ return TRUE;
}
static void CmdTrainExit(void * unused)
{
- Reset();
- InfoSubstituteControls(NULL, NULL);
+ Reset();
+ InfoSubstituteControls(NULL, NULL);
}
static void TrainFunc(
- void * action)
-{
- struct extraDataCar_t * xx, *xx1;
- ANGLE_T angle;
- int dir;
- track_p loco;
- track_p temp0, temp1;
- coOrd pos0, pos1;
- ANGLE_T angle0, angle1;
- EPINX_T ep0=-1, ep1=-1;
-
- if (trainFuncCar == NULL) {
- fprintf(stderr, "trainFunc: trainFuncCar==NULL\n");
- return;
- }
-
- xx = GET_EXTRA_DATA(trainFuncCar, T_CAR, extraDataCar_t);
- angle = FindAngle(xx->trvTrk.pos, trainFuncPos);
- angle = NormalizeAngle(angle-xx->trvTrk.angle);
- dir = (angle>90&&angle<270);
-
- switch (VP2L(action)) {
- case DO_UNCOUPLE:
- if (GetTrkEndTrk(trainFuncCar,dir)) {
- UncoupleCars(trainFuncCar, GetTrkEndTrk(trainFuncCar,dir));
- }
-
- break;
-
- case DO_PENCILS_ON:
- xx->pencils = TRUE;
- break;
-
- case DO_PENCILS_OFF:
- xx->pencils = FALSE;
- break;
-
- case DO_FLIPCAR:
- temp0 = GetTrkEndTrk(trainFuncCar,0);
- pos0 = GetTrkEndPos(trainFuncCar,0);
- angle0 = GetTrkEndAngle(trainFuncCar,0);
- temp1 = GetTrkEndTrk(trainFuncCar,1);
- pos1 = GetTrkEndPos(trainFuncCar,1);
- angle1 = GetTrkEndAngle(trainFuncCar,1);
-
- if (temp0) {
- ep0 = GetEndPtConnectedToMe(temp0,trainFuncCar);
- trainFuncCar->endPt[0].track = NULL;
- temp0->endPt[ep0].track = NULL;
- }
-
- if (temp1) {
- ep1 = GetEndPtConnectedToMe(temp1,trainFuncCar);
- trainFuncCar->endPt[1].track = NULL;
- temp1->endPt[ep1].track = NULL;
- }
-
- xx->direction = !xx->direction;
- FlipTraverseTrack(&xx->trvTrk);
- SetTrkEndPoint(trainFuncCar, 0, pos1, angle1);
- SetTrkEndPoint(trainFuncCar, 1, pos0, angle0);
-
- if (temp0) {
- trainFuncCar->endPt[1].track = temp0;
- temp0->endPt[ep0].track = trainFuncCar;
- }
-
- if (temp1) {
- trainFuncCar->endPt[0].track = temp1;
- temp1->endPt[ep1].track = trainFuncCar;
- }
-
- ControllerDialogSync(curTrainDlg);
- PlaceCar(trainFuncCar);
- break;
-
- case DO_FLIPTRAIN:
- FlipTrain(trainFuncCar);
- /*PlaceTrain( trainFuncCar, xx->trk, xx->trvTrk.pos, xx->trvTrk.angle );*/
- break;
-
- case DO_DELCAR:
- for (dir=0; dir<2; dir++)
- if (GetTrkEndTrk(trainFuncCar,dir)) {
- UncoupleCars(trainFuncCar, GetTrkEndTrk(trainFuncCar,dir));
- }
-
- if (CarItemIsLoco(xx->item)) {
- LocoListChangeEntry(trainFuncCar, NULL);
- }
-
- trainFuncCar->deleted = TRUE;
- /*DeleteTrack( trainFuncCar, FALSE );*/
- CarItemUpdate(xx->item);
- HotBarCancel();
- InfoSubstituteControls(NULL, NULL);
- break;
-
- case DO_DELTRAIN:
- dir = 0;
- loco = FindMasterLoco(trainFuncCar, NULL);
- WALK_CARS_START(trainFuncCar, xx, dir)
- WALK_CARS_END(trainFuncCar, xx, dir)
- dir = 1-dir;
- temp0 = NULL;
- WALK_CARS_START(trainFuncCar, xx, dir)
-
- if (temp0) {
- xx1 = GET_EXTRA_DATA(temp0, T_CAR, extraDataCar_t);
- temp0->deleted = TRUE;
- /*DeleteTrack( temp0, FALSE );*/
- CarItemUpdate(xx1->item);
- }
-
- temp0 = trainFuncCar;
- WALK_CARS_END(trainFuncCar, xx, dir)
-
- if (temp0) {
- xx1 = GET_EXTRA_DATA(temp0, T_CAR, extraDataCar_t);
- temp0->deleted = TRUE;
- /*DeleteTrack( temp0, FALSE );*/
- CarItemUpdate(xx1->item);
- }
-
- if (loco) {
- LocoListChangeEntry(loco, NULL);
- }
-
- HotBarCancel();
- InfoSubstituteControls(NULL, NULL);
- break;
-
- case DO_MUMASTER:
- if (CarItemIsLoco(xx->item)) {
- loco = FindMasterLoco(trainFuncCar, NULL);
-
- if (loco != trainFuncCar) {
- SetLocoMaster(xx);
- LOG(log_trainMove, 1, ("%s gets master\n", CarItemNumber(xx->item)))
-
- if (loco) {
- xx1 = GET_EXTRA_DATA(loco, T_CAR, extraDataCar_t);
- ClrLocoMaster(xx1);
- LOG(log_trainMove, 1, ("%s looses master\n", CarItemNumber(xx1->item)))
- xx->speed = xx1->speed;
- xx1->speed = 0;
- }
-
- LocoListChangeEntry(loco, trainFuncCar);
- }
- }
-
- break;
-
- case DO_CHANGEDIR:
- loco = FindMasterLoco(trainFuncCar, NULL);
-
- if (loco) {
- xx = GET_EXTRA_DATA(loco, T_CAR, extraDataCar_t);
- xx->direction = !xx->direction;
- SetTrainDirection(loco);
- ControllerDialogSync(curTrainDlg);
- }
-
- break;
-
- case DO_STOP:
- loco = FindMasterLoco(trainFuncCar, NULL);
-
- if (loco) {
- StopTrain(loco, ST_StopManual);
- ControllerDialogSync(curTrainDlg);
- }
-
- break;
- }
-
- MainRedraw(); //TrainFunc: Redraw if Train altered
-
- if (trainsState == TRAINS_PAUSE) {
- RestartTrains();
- } else {
- }
+ void * action)
+{
+ struct extraDataCar_t * xx, *xx1;
+ ANGLE_T angle;
+ int dir;
+ track_p loco;
+ track_p temp0, temp1;
+ coOrd pos0, pos1;
+ ANGLE_T angle0, angle1;
+ EPINX_T ep0, ep1;
+ char describe_str[STR_SIZE];
+
+ if (trainFuncCar == NULL) {
+ fprintf(stderr, "trainFunc: trainFuncCar==NULL\n");
+ return;
+ }
+
+ xx = GET_EXTRA_DATA(trainFuncCar, T_CAR, extraDataCar_t);
+ angle = FindAngle(xx->trvTrk.pos, trainFuncPos);
+ angle = NormalizeAngle(angle-xx->trvTrk.angle);
+ dir = (angle>90&&angle<270);
+
+ switch (VP2L(action)) {
+ case DO_UNCOUPLE:
+ UncoupleCars( trainFuncCar, dir );
+ break;
+
+ case DO_PENCILS_ON:
+ xx->pencils = TRUE;
+ break;
+
+ case DO_PENCILS_OFF:
+ xx->pencils = FALSE;
+ break;
+
+ case DO_FLIPCAR:
+ temp0 = GetTrkEndTrk(trainFuncCar,0);
+ pos0 = GetTrkEndPos(trainFuncCar,0);
+ angle0 = GetTrkEndAngle(trainFuncCar,0);
+ temp1 = GetTrkEndTrk(trainFuncCar,1);
+ pos1 = GetTrkEndPos(trainFuncCar,1);
+ angle1 = GetTrkEndAngle(trainFuncCar,1);
+
+ xx->direction = !xx->direction;
+ FlipTraverseTrack(&xx->trvTrk);
+ if ( temp0 ) {
+ ep0 = GetEndPtConnectedToMe( temp0, trainFuncCar );
+ DisconnectTracks( trainFuncCar, 0, temp0, ep0 );
+ }
+ if ( temp1 ) {
+ ep1 = GetEndPtConnectedToMe( temp1, trainFuncCar );
+ DisconnectTracks( trainFuncCar, 1, temp1, ep1 );
+ }
+ SetTrkEndPoint(trainFuncCar, 0, pos1, angle1);
+ SetTrkEndPoint(trainFuncCar, 1, pos0, angle0);
+ if ( temp1 ) {
+ ConnectTracks( trainFuncCar, 0, temp1, ep1 );
+ }
+ if ( temp0 ) {
+ ConnectTracks( trainFuncCar, 1, temp0, ep0 );
+ }
+
+ ControllerDialogSync(curTrainDlg);
+ PlaceCar(trainFuncCar);
+ break;
+
+ case DO_FLIPTRAIN:
+ FlipTrain(trainFuncCar);
+ /*PlaceTrain( trainFuncCar, xx->trk, xx->trvTrk.pos, xx->trvTrk.angle );*/
+ break;
+
+ case DO_DESCRIBE:
+ pos0 = trainFuncPos;
+ CmdDescribe(C_START, pos0);
+ CmdDescribe(C_DOWN, pos0);
+ CmdDescribe(C_UP, pos0);
+ break;
+
+ case DO_DELCAR:
+ CarItemShelve( xx->item );
+ break;
+
+ case DO_DELTRAIN:
+ dir = 0;
+ loco = FindMasterLoco(trainFuncCar, NULL);
+ WALK_CARS_START(trainFuncCar, xx, dir)
+ WALK_CARS_END(trainFuncCar, xx, dir)
+ dir = 1-dir;
+ temp0 = NULL;
+ WALK_CARS_START(trainFuncCar, xx, dir)
+
+ if (temp0) {
+ xx1 = GET_EXTRA_DATA(temp0, T_CAR, extraDataCar_t);
+ //temp0->deleted = TRUE;
+ DeleteTrack( temp0, FALSE );
+ CarItemUpdate(xx1->item);
+ }
+
+ temp0 = trainFuncCar;
+ WALK_CARS_END(trainFuncCar, xx, dir)
+
+ if (temp0) {
+ xx1 = GET_EXTRA_DATA(temp0, T_CAR, extraDataCar_t);
+ //temp0->deleted = TRUE;
+ DeleteTrack( temp0, FALSE );
+ CarItemUpdate(xx1->item);
+ }
+
+ if (loco) {
+ LocoListChangeEntry(loco, NULL);
+ }
+
+ HotBarCancel();
+ InfoSubstituteControls(NULL, NULL);
+ break;
+
+ case DO_MUMASTER:
+ if (CarItemIsLoco(xx->item)) {
+ loco = FindMasterLoco(trainFuncCar, NULL);
+
+ if (loco != trainFuncCar) {
+ SetLocoMaster(xx);
+ LOG(log_trainMove, 1, ("%s gets master\n", CarItemNumber(xx->item)))
+
+ if (loco) {
+ xx1 = GET_EXTRA_DATA(loco, T_CAR, extraDataCar_t);
+ ClrLocoMaster(xx1);
+ LOG(log_trainMove, 1, ("%s looses master\n", CarItemNumber(xx1->item)))
+ xx->speed = xx1->speed;
+ xx1->speed = 0;
+ }
+
+ LocoListChangeEntry(loco, trainFuncCar);
+ }
+ }
+
+ break;
+
+ case DO_CHANGEDIR:
+ loco = FindMasterLoco(trainFuncCar, NULL);
+
+ if (loco) {
+ xx = GET_EXTRA_DATA(loco, T_CAR, extraDataCar_t);
+ xx->direction = !xx->direction;
+ SetTrainDirection(loco);
+ ControllerDialogSync(curTrainDlg);
+ }
+
+ break;
+
+ case DO_STOP:
+ loco = FindMasterLoco(trainFuncCar, NULL);
+
+ if (loco) {
+ StopTrain(loco, ST_StopManual);
+ ControllerDialogSync(curTrainDlg);
+ }
+
+ break;
+ }
+
+ MainRedraw(); //TrainFunc: Redraw if Train altered
+
+ if (trainsState == TRAINS_PAUSE) {
+ RestartTrains();
+ } else {
+ }
}
EXPORT wIndex_t trainCmdInx;
void InitCmdTrain(wMenu_p menu)
{
- log_trainMove = LogFindIndex("trainMove");
- log_trainPlayback = LogFindIndex("trainPlayback");
- trainPLs[I_ZERO].winLabel = (char*)wIconCreatePixMap(zero_xpm);
- ParamRegister(&trainPG);
- trainCmdInx = AddMenuButton(menu, CmdTrain, "cmdTrain", _("Run Trains"),
- wIconCreatePixMap(train_xpm[iconSize]), LEVEL0_50, IC_POPUP3|IC_LCLICK|IC_RCLICK, 0,
- NULL);
- stopI = wIconCreatePixMap(reddot);
- goI = wIconCreatePixMap(greendot);
- stopB = wIconCreatePixMap(stop_xpm[iconSize]);
- goB = wIconCreatePixMap(go_xpm[iconSize]);
+ log_trainMove = LogFindIndex("trainMove");
+ log_trainPlayback = LogFindIndex("trainPlayback");
+ trainPLs[I_ZERO].winLabel = (char*)wIconCreatePixMap(zero_xpm);
+ ParamRegister(&trainPG);
+ trainCmdInx = AddMenuButton(menu, CmdTrain, "cmdTrain", _("Run Trains"),
+ wIconCreatePixMap(train_xpm3[iconSize]), LEVEL0_50,
+ IC_POPUP3|IC_LCLICK|IC_RCLICK|IC_WANT_MOVE, 0,
+ NULL);
+ stopI = wIconCreatePixMap(reddot);
+ goI = wIconCreatePixMap(greendot);
+ stopB = wIconCreatePixMap(stop_xpm3[iconSize]);
+ goB = wIconCreatePixMap(go_xpm3[iconSize]);
trainPauseB = AddToolbarButton("cmdTrainPause", stopB, IC_MODETRAIN_ONLY,
- CmdTrainStopGo, NULL);
- AddToolbarButton("cmdTrainExit", wIconCreatePixMap(exit_xpm[iconSize]), IC_MODETRAIN_ONLY,
- CmdTrainExit, NULL);
- newcarB = AddToolbarButton("cmdTrainNewCar", wIconCreatePixMap(new_car_xpm[iconSize]),
- IC_MODETRAIN_ONLY, CarItemLoadList, NULL);
- T_CAR = InitObject(&carCmds);
+ CmdTrainStopGo, NULL);
+ AddToolbarButton("cmdTrainExit", wIconCreatePixMap(exit_xpm3[iconSize]),
+ IC_MODETRAIN_ONLY,
+ CmdTrainExit, NULL);
+ newcarB = AddToolbarButton("cmdTrainNewCar",
+ wIconCreatePixMap(new_car_xpm3[iconSize]),
+ IC_MODETRAIN_ONLY, CarItemLoadList, NULL);
+ T_CAR = InitObject(&carCmds);
trainPopupM = MenuRegister("Train Commands");
- trainPopupMI[DO_UNCOUPLE] = wMenuPushCreate(trainPopupM, "", _("Uncouple"), 0,
- TrainFunc, I2VP(DO_UNCOUPLE));
- trainPopupMI[DO_FLIPCAR] = wMenuPushCreate(trainPopupM, "", _("Flip Car"), 0,
- TrainFunc, I2VP(DO_FLIPCAR));
- trainPopupMI[DO_PENCILS_ON] = wMenuPushCreate(trainPopupM, "", _("Clearance Lines On"), 0,
- TrainFunc, I2VP(DO_PENCILS_ON));
- trainPopupMI[DO_PENCILS_OFF] = wMenuPushCreate(trainPopupM, "", _("Clearance Lines Off"), 0,
- TrainFunc, I2VP(DO_PENCILS_OFF));
- trainPopupMI[DO_FLIPTRAIN] = wMenuPushCreate(trainPopupM, "", _("Flip Train"),
- 0, TrainFunc, I2VP(DO_FLIPTRAIN));
- trainPopupMI[DO_MUMASTER] = wMenuPushCreate(trainPopupM, "", _("MU Master"),
- 0, TrainFunc, I2VP(DO_MUMASTER));
- trainPopupMI[DO_CHANGEDIR] = wMenuPushCreate(trainPopupM, "",
- _("Change Direction"), 0, TrainFunc, I2VP(DO_CHANGEDIR));
- trainPopupMI[DO_STOP] = wMenuPushCreate(trainPopupM, "", _("Stop"), 0,
- TrainFunc, I2VP(DO_STOP));
- wMenuSeparatorCreate(trainPopupM);
- trainPopupMI[DO_DELCAR] = wMenuPushCreate(trainPopupM, "", _("Remove Car"),
- 0, TrainFunc, I2VP(DO_DELCAR));
- trainPopupMI[DO_DELTRAIN] = wMenuPushCreate(trainPopupM, "",
- _("Remove Train"), 0, TrainFunc, I2VP(DO_DELTRAIN));
- AddPlaybackProc("TRAINSTOPGO", (playbackProc_p)TrainStopGoPlayback, NULL);
- AddPlaybackProc("TRAINPAUSE", (playbackProc_p)TrainTimeDoPause, NULL);
- AddPlaybackProc("TRAINMOVIE", (playbackProc_p)TrainDoMovie, NULL);
+ trainPopupMI[DO_UNCOUPLE] = wMenuPushCreate(trainPopupM, "", _("Uncouple"), 0,
+ TrainFunc, I2VP(DO_UNCOUPLE));
+ trainPopupMI[DO_FLIPCAR] = wMenuPushCreate(trainPopupM, "", _("Flip Car"), 0,
+ TrainFunc, I2VP(DO_FLIPCAR));
+ trainPopupMI[DO_PENCILS_ON] = wMenuPushCreate(trainPopupM, "",
+ _("Clearance Lines On"), 0,
+ TrainFunc, I2VP(DO_PENCILS_ON));
+ trainPopupMI[DO_PENCILS_OFF] = wMenuPushCreate(trainPopupM, "",
+ _("Clearance Lines Off"), 0,
+ TrainFunc, I2VP(DO_PENCILS_OFF));
+ trainPopupMI[DO_FLIPTRAIN] = wMenuPushCreate(trainPopupM, "", _("Flip Train"),
+ 0, TrainFunc, I2VP(DO_FLIPTRAIN));
+ trainPopupMI[DO_DESCRIBE] = wMenuPushCreate(trainPopupM, "", _("Describe"),
+ 0, TrainFunc, I2VP(DO_DESCRIBE));
+ trainPopupMI[DO_MUMASTER] = wMenuPushCreate(trainPopupM, "", _("MU Master"),
+ 0, TrainFunc, I2VP(DO_MUMASTER));
+ trainPopupMI[DO_CHANGEDIR] = wMenuPushCreate(trainPopupM, "",
+ _("Change Direction"), 0, TrainFunc, I2VP(DO_CHANGEDIR));
+ trainPopupMI[DO_STOP] = wMenuPushCreate(trainPopupM, "", _("Stop"), 0,
+ TrainFunc, I2VP(DO_STOP));
+ wMenuSeparatorCreate(trainPopupM);
+ trainPopupMI[DO_DELCAR] = wMenuPushCreate(trainPopupM, "", _("Remove Car"),
+ 0, TrainFunc, I2VP(DO_DELCAR));
+ trainPopupMI[DO_DELTRAIN] = wMenuPushCreate(trainPopupM, "",
+ _("Remove Train"), 0, TrainFunc, I2VP(DO_DELTRAIN));
+ AddPlaybackProc("TRAINSTOPGO", (playbackProc_p)TrainStopGoPlayback, NULL);
+ AddPlaybackProc("TRAINPAUSE", (playbackProc_p)TrainTimeDoPause, NULL);
+ AddPlaybackProc("TRAINMOVIE", (playbackProc_p)TrainDoMovie, NULL);
}
diff --git a/app/bin/ctrain.h b/app/bin/ctrain.h
index f11ba81..0e06332 100644
--- a/app/bin/ctrain.h
+++ b/app/bin/ctrain.h
@@ -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
*/
#ifndef HAVE_CTRAIN_H
@@ -28,43 +28,61 @@
extern wIndex_t trainCmdInx;
+extern long trainPause;
+
struct carItem_t;
typedef struct carItem_t carItem_t;
typedef carItem_t * carItem_p;
typedef struct {
- coOrd pos;
- ANGLE_T angle;
- } vector_t;
+ coOrd pos;
+ ANGLE_T angle;
+} vector_t;
extern carItem_p currCarItemPtr;
extern wControl_p newCarControls[2];
void DoCarDlg( void * unused );
BOOL_T CarItemRead( char * );
+void CarItemShelve( carItem_p );
track_p NewCar( wIndex_t, carItem_p, coOrd, ANGLE_T );
+void UncoupleCars( track_p, int );
void CarGetPos( track_p, coOrd *, ANGLE_T * );
void CarSetVisible( track_p );
void CarItemUpdate( carItem_p );
void CarItemLoadList( void * );
char * CarItemDescribe( carItem_p, long, long * );
void CarItemFindCouplerMountPoint( carItem_p, traverseTrack_t, coOrd[2] );
+void CarItemPos( carItem_p, coOrd *);
void CarItemSize( carItem_p, coOrd * );
char * CarItemNumber( carItem_p );
+void CarItemSetNumber( carItem_p, char *);
DIST_T CarItemCoupledLength( carItem_p );
BOOL_T CarItemIsLoco( carItem_p );
BOOL_T CarItemIsLocoMaster( carItem_p );
void CarItemSetLocoMaster( carItem_p, BOOL_T );
void CarItemSetTrack( carItem_p, track_p );
void CarItemPlace( carItem_p, traverseTrack_p, DIST_T * );
-void CarItemDraw( drawCmd_p, carItem_p, wDrawColor, int, BOOL_T, vector_t *, BOOL_T, track_p );
+void CarItemDraw( drawCmd_p, carItem_p, wDrawColor, int, BOOL_T, vector_t *,
+ BOOL_T, track_p );
+
+BOOL_T WriteCars( FILE * );
+void ClearCars( void );
+void CarDlgAddProto( void );
+void CarDlgAddDesc( void );
+void AttachTrains( void );
+
BOOL_T StoreCarItem (carItem_p item, void **data,long *len);
BOOL_T ReplayCarItem(carItem_p item, void *data,long len);
-enum paramFileState GetCarPartCompatibility(int paramFileIndex, SCALEINX_T scaleIndex);
-enum paramFileState GetCarProtoCompatibility(int paramFileIndex, SCALEINX_T scaleIndex);
+enum paramFileState GetCarPartCompatibility(int paramFileIndex,
+ SCALEINX_T scaleIndex);
+enum paramFileState GetCarProtoCompatibility(int paramFileIndex,
+ SCALEINX_T scaleIndex);
int CarAvailableCount( void );
BOOL_T TraverseTrack2( traverseTrack_p, DIST_T );
void FlipTraverseTrack( traverseTrack_p );
void CheckCarTraverse( track_p trk);
+
void DeleteCarProto(int fileIndex);
void DeleteCarPart(int fileIndex);
+void LocoListChangeEntry( track_p, track_p );
#endif // !HAVE_CTRAIN_H
diff --git a/app/bin/cturnout.c b/app/bin/cturnout.c
index 02eadef..9bae6ae 100644
--- a/app/bin/cturnout.c
+++ b/app/bin/cturnout.c
@@ -1,24 +1,24 @@
/** \file cturnout.c
- * Turnout object handling and drawing
+ * Turnout object handling
*/
- /* 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.
- */
+/* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
#include "common.h"
#include "ccurve.h"
@@ -35,7 +35,7 @@
#include "cselect.h"
#include "include/paramfile.h"
#include "track.h"
-#include "trackx.h"
+#include "trkendpt.h"
#include "common-ui.h"
EXPORT TRKTYP_T T_TURNOUT = -1;
@@ -48,7 +48,7 @@ EXPORT dynArr_t turnoutInfo_da;
EXPORT turnoutInfo_t* curTurnout = NULL;
EXPORT long curTurnoutEp = 0;
-static int curTurnoutInx = -1;
+//static int curTurnoutInx = -1;
/** @logcmd @showrefby turnout=n cturnout.c */
static int log_turnout = 0;
@@ -63,18 +63,20 @@ static wMenu_p turnoutPopupM;
#ifdef TURNOUTCMD
static drawCmd_t turnoutD = {
- NULL,
- &screenDrawFuncs,
- 0,
- 1.0,
- 0.0,
- {0.0,0.0}, {0.0,0.0},
- Pix2CoOrd, CoOrd2Pix };
+ NULL,
+ &screenDrawFuncs,
+ 0,
+ 1.0,
+ 0.0,
+ {0.0,0.0}, {0.0,0.0},
+ Pix2CoOrd, CoOrd2Pix
+};
static wIndex_t turnoutHotBarCmdInx;
static wIndex_t turnoutInx;
static long hideTurnoutWindow;
-static void RedrawTurnout( wDraw_p d, void * context, wWinPix_t x, wWinPix_t y );
+static void RedrawTurnout( wDraw_p d, void * context, wWinPix_t x,
+ wWinPix_t y );
static void SelTurnoutEndPt(wIndex_t, coOrd);
static void HilightEndPt(void);
@@ -95,76 +97,10 @@ static paramData_t turnoutPLs[] = {
{ PD_MENU, NULL, "new", PDO_DLGCMDBUTTON, NULL, N_("New") },
#define I_HIDE (3)
#define turnoutHideT ((wChoice_p)turnoutPLs[I_HIDE].control)
- { PD_TOGGLE, &hideTurnoutWindow, "hide", PDO_DLGCMDBUTTON, hideLabels, NULL, BC_NOBORDER } };
-static paramGroup_t turnoutPG = { "turnout", 0, turnoutPLs, COUNT( turnoutPLs ) };
-#endif
-
-/* Draw turnout data */
-
-/**
- * The types of turnouts that get enhanced drawing methods
- */
-enum dtoType {
- DTO_INVALID,
- DTO_NORMAL,
- DTO_THREE,
- DTO_WYE,
-
- DTO_CURVED,
-
- DTO_XING,
- DTO_XNG9,
- DTO_SSLIP,
- DTO_DSLIP,
-
- DTO_LCROSS,
- DTO_RCROSS,
- DTO_DCROSS
-};
-
-// Define to plot control points (DTO_NORMAL, DTO_CURVED, DTO_XING, DTO_LCROSS)
-// #define DTO_DEBUG DTO_XING
-
-#define DTO_DIM 4 // Maximum number of paths
-#define DTO_SEGS 24 // Maximum number of control points
-
-static struct DrawToData_t {
- TRKINX_T index;
- enum dtoType toType;
- track_p trk;
- int bridge;
- int endCnt;
- int pathCnt;
- int routeCnt;
- int strCnt;
- int crvCnt;
- int rgtCnt;
- int lftCnt;
- int strPath;
- int str2Path;
- int crvPath;
- int crv2Path;
- int origCnt;
- int origins[DTO_DIM];
- coOrd midPt;
- struct extraDataCompound_t* xx;
-} dtod;
-
-struct DrawTo_t {
- int n;
- trkSeg_p trkSeg[DTO_SEGS];
- coOrd base[DTO_SEGS];
- coOrd baseLast;
- DIST_T dy[DTO_SEGS];
- ANGLE_T angle;
- ANGLE_T crvAngle;
- coOrd pts[DTO_SEGS];
- coOrd ptsLast;
- char type;
+ { PD_TOGGLE, &hideTurnoutWindow, "hide", PDO_DLGCMDBUTTON, hideLabels, NULL, BC_NOBORDER }
};
-
-static struct DrawTo_t dto[DTO_DIM];
-
+static paramGroup_t turnoutPG = { "newFixedTrack", 0, turnoutPLs, COUNT( turnoutPLs ) };
+#endif
/****************************************
@@ -175,15 +111,15 @@ static struct DrawTo_t dto[DTO_DIM];
EXPORT turnoutInfo_t* CreateNewTurnout(
- char* scale,
- char* title,
- wIndex_t segCnt,
- trkSeg_p segData,
- PATHPTR_T paths,
- EPINX_T endPtCnt,
- trkEndPt_t* endPts,
- wBool_t updateList,
- long options)
+ char* scale,
+ char* title,
+ wIndex_t segCnt,
+ trkSeg_p segData,
+ PATHPTR_T paths,
+ EPINX_T endPtCnt,
+ trkEndPt_p endPts,
+ wBool_t updateList,
+ long options)
{
turnoutInfo_t* to;
long changes = 0;
@@ -202,38 +138,42 @@ EXPORT turnoutInfo_t* CreateNewTurnout(
to->segs = (trkSeg_p)memdup(segData, (sizeof(*segData) * segCnt));
seg_p = to->segs;
for (int i = 0; i < segCnt; i++) {
- seg_p[i].bezSegs.ptr = NULL;
- seg_p[i].bezSegs.cnt = 0;
- seg_p[i].bezSegs.max = 0;
+ DYNARR_INIT( trackSeg_t, seg_p[i].bezSegs );
}
CopyPoly(to->segs, segCnt);
FixUpBezierSegs(to->segs, to->segCnt);
GetSegBounds(zero, 0.0, segCnt, to->segs, &to->orig, &to->size);
to->endCnt = endPtCnt;
- to->endPt = (trkEndPt_t*)memdup(endPts, (sizeof * endPts) * to->endCnt);
+ to->endPt = (trkEndPt_p)memdup(endPts, EndPtSize(to->endCnt));
- if (options & COMPOUND_OPTION_PATH_OVERRIDE)
+ if (options & COMPOUND_OPTION_PATH_OVERRIDE) {
to->pathOverRide = TRUE;
- if (options & COMPOUND_OPTION_PATH_NOCOMBINE)
+ }
+ if (options & COMPOUND_OPTION_PATH_NOCOMBINE) {
to->pathNoCombine = TRUE;
+ }
SetParamPaths( to, paths );
to->paramFileIndex = curParamFileIndex;
- if (curParamFileIndex == PARAM_CUSTOM)
+ if (curParamFileIndex == PARAM_CUSTOM) {
to->contentsLabel = MyStrdup("Custom Turnouts");
- else
+ } else {
to->contentsLabel = curSubContents;
+ }
#ifdef TURNOUTCMD
if (updateList && turnoutListL != NULL) {
- FormatCompoundTitle(LABEL_TABBED | LABEL_MANUF | LABEL_PARTNO | LABEL_DESCR, title);
- if (message[0] != '\0')
+ FormatCompoundTitle(LABEL_TABBED | LABEL_MANUF | LABEL_PARTNO | LABEL_DESCR,
+ title);
+ if (message[0] != '\0') {
wListAddValue(turnoutListL, message, NULL, to);
+ }
}
#endif
to->barScale = curBarScale > 0 ? curBarScale : -1;
to->special = TOnormal;
- if (updateList && changes)
+ if (updateList && changes) {
DoChangeNotification(changes);
+ }
return to;
}
@@ -281,17 +221,20 @@ DeleteTurnoutParams(int fileIndex)
// go to the start of the block
while (inx < turnoutInfo_da.cnt &&
- turnoutInfo(inx)->paramFileIndex != fileIndex) {
+ turnoutInfo(inx)->paramFileIndex != fileIndex) {
startInx = inx++;
}
// delete them
for (; inx < turnoutInfo_da.cnt &&
- turnoutInfo(inx)->paramFileIndex == fileIndex; inx++) {
+ turnoutInfo(inx)->paramFileIndex == fileIndex; inx++) {
turnoutInfo_t* to = turnoutInfo(inx);
if (to->paramFileIndex == fileIndex) {
DeleteTurnout(to);
cnt++;
+ if ( to == curTurnout ) {
+ curTurnout = NULL;
+ }
}
}
@@ -320,26 +263,26 @@ DeleteTurnoutParams(int fileIndex)
*/
enum paramFileState
- GetTrackCompatibility(int paramFileIndex, SCALEINX_T scaleIndex)
-{
+GetTrackCompatibility(int paramFileIndex, SCALEINX_T scaleIndex) {
int i;
enum paramFileState ret = PARAMFILE_NOTUSABLE;
- DIST_T gauge = GetScaleTrackGauge(scaleIndex);
+// DIST_T gauge = GetScaleTrackGauge(scaleIndex);
- if (!IsParamValid(paramFileIndex)) {
+ if (!IsParamValid(paramFileIndex))
+ {
return(PARAMFILE_UNLOADED);
}
// loop over all parameter entries or until a exact fit is found
- for (i = 0; i < turnoutInfo_da.cnt && ret < PARAMFILE_FIT; i++) {
+ for (i = 0; i < turnoutInfo_da.cnt && ret < PARAMFILE_FIT; i++)
+ {
turnoutInfo_t* to = turnoutInfo(i);
if (to->paramFileIndex == paramFileIndex) {
SCALE_FIT_T fit = CompatibleScale(FIT_TURNOUT, to->scaleInx, scaleIndex);
if (fit == FIT_EXACT) {
ret = PARAMFILE_FIT;
break;
- }
- else if (fit == FIT_COMPATIBLE) {
+ } else if (fit == FIT_COMPATIBLE) {
ret = PARAMFILE_COMPATIBLE;
}
}
@@ -358,24 +301,31 @@ enum paramFileState
* \returns -1 if a track segment is not on a path
*/
EXPORT wIndex_t CheckPaths(
- wIndex_t segCnt,
- trkSeg_p segs,
- PATHPTR_T paths)
+ wIndex_t segCnt,
+ trkSeg_p segs,
+ PATHPTR_T paths,
+ char * sTitle )
{
- if ((segCnt == 0) || !segs) return -1;
- if (!paths) return -1;
+ if ((segCnt == 0) || !segs) { return -1; }
+ if (!paths) { return -1; }
int pc, ps;
PATHPTR_T pp = 0;
int segInx[2], segEp[2];
- int segTrkLast = -1;
+// int segTrkLast = -1;
// Check that each track segment is on at least one path
// Note - In new-P the tracks may be preceded by draws (or interspersed by them)
- int suppressCheckPaths = log_suppressCheckPaths > 0 ? logTable(log_suppressCheckPaths).level : 0;
+ int suppressCheckPaths = log_suppressCheckPaths > 0 ? logTable(
+ log_suppressCheckPaths).level : 0;
if (suppressCheckPaths == 0) {
for (int inx = 0; inx < segCnt; inx++) {
if (IsSegTrack(&segs[inx])) {
+ if ( inx > MAX_PATH_SEGS ) {
+ InputError("Too many segments %d in Turnout definition %s", FALSE, inx + 1,
+ PutTitle(sTitle));
+ return -1;
+ }
PATHPTR_T cp = paths;
while (*cp) {
// 0-9 are x00 to x09 or the negative equivalent (backwards)
@@ -383,19 +333,24 @@ EXPORT wIndex_t CheckPaths(
// Path is: NAME01203400
for (; *cp; cp++); //Skip Name
cp++; //Skip 0 after name
- // check each path component
- for (; cp[0] || cp[1]; cp++) { //keeps going even if there are two or more parts
- if (!cp[0]) continue; //ignore the 0 between parts of the same PATH!!
- GetSegInxEP(cp[0], &segInx[0], &segEp[0]); //GetSegInxEP subtracts one to match inx
- if (segInx[0] == inx) break; //Found it!
+ // check each path component
+ for (; cp[0]
+ || cp[1]; cp++) { //keeps going even if there are two or more parts
+ if (!cp[0]) { continue; } //ignore the 0 between parts of the same PATH!!
+ GetSegInxEP(cp[0], &segInx[0],
+ &segEp[0]); //GetSegInxEP subtracts one to match inx
+ if (segInx[0] == inx) { break; } //Found it!
+ }
+ if (*cp) { // we broke early
+ break; // get out - we found it
}
- if (*cp) // we broke early
- break; // get out - we found it
cp++;
cp++; // Go to next path - past two 0s
}
if (!*cp) { // we looked through all the paths and didn't find it
- InputError("Track segment %d not on Path", FALSE, inx + 1);
+// InputError("Track segment %d not on Path", FALSE, inx + 1);
+ NoticeMessage(MSG_SEGMENT_NOT_ON_PATH, _("OK"), NULL, inx + 1,
+ PutTitle(sTitle));
return -1;;
}
}
@@ -403,7 +358,8 @@ EXPORT wIndex_t CheckPaths(
}
for (pc = 0, pp = paths; *pp; pp += 2, pc++) {
- for (ps = 0, pp += strlen((char*)pp) + 1; pp[0] != 0 || pp[1] != 0; pp++, ps++) {
+ for (ps = 0, pp += strlen((char*)pp) + 1; pp[0] != 0
+ || pp[1] != 0; pp++, ps++) {
if (pp[0] != 0 && ps == 0) { // First or only one
}
if (pp[0] != 0 && pp[1] != 0) {
@@ -413,20 +369,21 @@ EXPORT wIndex_t CheckPaths(
GetSegInxEP(pp[1], &segInx[1], &segEp[1]);
if (!IsSegTrack(&segs[segInx[0]])) {
InputError(_("CheckPath: Turnout path[%d] %d is not a track segment"),
- FALSE, pc, pp[0]);
+ FALSE, pc, pp[0]);
return -1;
}
if (!IsSegTrack(&segs[segInx[1]])) {
InputError(_("CheckPath: Turnout path[%d] %d is not a track segment"),
- FALSE, pc, pp[1]);
+ FALSE, pc, pp[1]);
return -1;
}
coOrd p0 = GetSegEndPt(&segs[segInx[0]], 1 - segEp[0], FALSE, NULL);
coOrd p1 = GetSegEndPt(&segs[segInx[1]], segEp[1], FALSE, NULL);
d = FindDistance(p0, p1);
if (d > MIN_TURNOUT_SEG_CONNECT_DIST) {
- InputError(_("CheckPath: Turnout path[%d] %d-%d not connected: %0.3f P0(%f,%f) P1(%f,%f)"),
- FALSE, pc, pp[0], pp[1], d, p0.x, p0.y, p1.x, p1.y);
+ InputError(
+ _("CheckPath: Turnout path[%d] %d-%d not connected: %0.3f P0(%f,%f) P1(%f,%f)"),
+ FALSE, pc, pp[0], pp[1], d, p0.x, p0.y, p1.x, p1.y);
return -1;
}
}
@@ -438,7 +395,7 @@ EXPORT wIndex_t CheckPaths(
static BOOL_T ReadTurnoutParam(
- char* firstLine)
+ char* firstLine)
{
char scale[10];
char* title;
@@ -446,32 +403,37 @@ static BOOL_T ReadTurnoutParam(
PATHPTR_T cp;
long options = 0;
- if (!GetArgs(firstLine + 8, "sqc", scale, &title, &cp))
+ if (!GetArgs(firstLine + 8, "sqc", scale, &title, &cp)) {
return FALSE;
+ }
if (cp != NULL)
- if (!GetArgs((char*)cp, "l", &options))
+ if (!GetArgs((char*)cp, "l", &options)) {
return FALSE;
- DYNARR_RESET(trkEndPt_t, tempEndPts_da);
+ }
+ TempEndPtsReset();
pathCnt = 0;
- if (!ReadSegs())
+ if (!ReadSegs()) {
return FALSE;
+ }
PATHPTR_T pPaths = NULL;
- if ( pathPtr && pathPtr[0] && pathCnt > 0 )
+ if ( pathPtr && pathPtr[0] && pathCnt > 0 ) {
pPaths = pathPtr;
- CheckPaths( tempSegs_da.cnt, &tempSegs(0), pPaths );
+ }
+ CheckPaths( tempSegs_da.cnt, &tempSegs(0), pPaths, title );
to = CreateNewTurnout(scale, title, tempSegs_da.cnt, &tempSegs(0),
- pPaths, tempEndPts_da.cnt, &tempEndPts(0), FALSE, options );
+ pPaths, TempEndPtsCount(), TempEndPt(0), FALSE, options );
MyFree(title);
- if (to == NULL)
+ if (to == NULL) {
return FALSE;
+ }
if (tempSpecial[0] != '\0') {
if (strncmp(tempSpecial, ADJUSTABLE, strlen(ADJUSTABLE)) == 0) {
to->special = TOadjustable;
if (!GetArgs(tempSpecial + strlen(ADJUSTABLE), "ff",
- &to->u.adjustable.minD, &to->u.adjustable.maxD))
+ &to->u.adjustable.minD, &to->u.adjustable.maxD)) {
return FALSE;
- }
- else {
+ }
+ } else {
InputError(_("Unknown special case"), TRUE);
return FALSE;
}
@@ -483,7 +445,8 @@ static BOOL_T ReadTurnoutParam(
}
-EXPORT turnoutInfo_t* TurnoutAdd(long mode, SCALEINX_T scale, wList_p list, coOrd* maxDim, EPINX_T epCnt)
+EXPORT turnoutInfo_t* TurnoutAdd(long mode, SCALEINX_T scale, wList_p list,
+ coOrd* maxDim, EPINX_T epCnt)
{
wIndex_t inx;
turnoutInfo_t* to, * to1 = NULL;
@@ -491,12 +454,13 @@ EXPORT turnoutInfo_t* TurnoutAdd(long mode, SCALEINX_T scale, wList_p list, coOr
for (inx = 0; inx < turnoutInfo_da.cnt; inx++) {
to = turnoutInfo(inx);
if (IsParamValid(to->paramFileIndex) &&
- to->segCnt > 0 &&
- (FIT_NONE != CompatibleScale(FIT_TURNOUT, to->scaleInx, scale)) &&
- /*strcasecmp( to->scale, scaleName ) == 0 && */
- (epCnt <= 0 || epCnt == to->endCnt)) {
- if (to1 == NULL)
+ to->segCnt > 0 &&
+ (FIT_NONE != CompatibleScale(FIT_TURNOUT, to->scaleInx, scale)) &&
+ /*strcasecmp( to->scale, scaleName ) == 0 && */
+ (epCnt <= 0 || epCnt == to->endCnt)) {
+ if (to1 == NULL) {
to1 = to;
+ }
if (to == curTurnout) {
to1 = to;
turnoutInx = wListGetCount(list);
@@ -505,10 +469,12 @@ EXPORT turnoutInfo_t* TurnoutAdd(long mode, SCALEINX_T scale, wList_p list, coOr
if (message[0] != '\0') {
wListAddValue(list, message, NULL, to);
if (maxDim) {
- if (to->size.x > maxDim->x)
+ if (to->size.x > maxDim->x) {
maxDim->x = to->size.x;
- if (to->size.y > maxDim->y)
+ }
+ if (to->size.y > maxDim->y) {
maxDim->y = to->size.y;
+ }
}
}
}
@@ -524,19 +490,21 @@ EXPORT turnoutInfo_t* TurnoutAdd(long mode, SCALEINX_T scale, wList_p list, coOr
static void ChangeAdjustableEndPt(
- track_p trk,
- EPINX_T ep,
- DIST_T d)
+ track_p trk,
+ EPINX_T ep,
+ DIST_T d)
{
- struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
+ struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
coOrd pos;
trkSeg_p segPtr;
ANGLE_T angle = GetTrkEndAngle(trk, ep);
Translate(&pos, GetTrkEndPos(trk, 1 - ep), angle, d);
UndoModify(trk);
SetTrkEndPoint(trk, ep, pos, angle);
- if (ep == 0)
+ if (ep == 0) {
xx->orig = pos;
+ }
for (segPtr = xx->segs; segPtr < &xx->segs[xx->segCnt]; segPtr++) {
switch (segPtr->type) {
case SEG_STRLIN:
@@ -553,10 +521,10 @@ static void ChangeAdjustableEndPt(
EXPORT BOOL_T ConnectAdjustableTracks(
- track_p trk1,
- EPINX_T ep1,
- track_p trk2,
- EPINX_T ep2)
+ track_p trk1,
+ EPINX_T ep1,
+ track_p trk2,
+ EPINX_T ep2)
{
struct extraDataCompound_t* xx1;
struct extraDataCompound_t* xx2;
@@ -568,43 +536,45 @@ EXPORT BOOL_T ConnectAdjustableTracks(
coOrd off;
DIST_T beyond;
- if ((GetTrkType(trk1) != T_TURNOUT) && (GetTrkType(trk2) != T_TURNOUT)) return FALSE;
+ if ((GetTrkType(trk1) != T_TURNOUT) && (GetTrkType(trk2) != T_TURNOUT)) { return FALSE; }
adj1 = adj2 = FALSE;
if (GetTrkType(trk1) == T_TURNOUT) {
xx1 = GET_EXTRA_DATA(trk1, T_TURNOUT, extraDataCompound_t);
- if (xx1->special == TOadjustable)
+ if (xx1->special == TOadjustable) {
adj1 = TRUE;
+ }
}
if (GetTrkType(trk2) == T_TURNOUT) {
xx2 = GET_EXTRA_DATA(trk2, T_TURNOUT, extraDataCompound_t);
- if (xx2->special == TOadjustable)
+ if (xx2->special == TOadjustable) {
adj2 = TRUE;
+ }
}
- if (adj1 == FALSE && adj2 == FALSE)
+ if (adj1 == FALSE && adj2 == FALSE) {
return FALSE;
+ }
a1 = GetTrkEndAngle(trk1, ep1);
a2 = GetTrkEndAngle(trk2, ep2);
a = NormalizeAngle(a1 - a2 + 180.0 + connectAngle / 2.0);
- if (a > connectAngle)
+ if (a > connectAngle) {
return FALSE;
+ }
UndoStart(_("Connect Adjustable Tracks"), "changeAdjustableEndPt");
maxD = 0.0;
if (adj1) {
p1 = GetTrkEndPos(trk1, 1 - ep1);
Translate(&p1, p1, a1, xx1->u.adjustable.minD);
maxD += xx1->u.adjustable.maxD - xx1->u.adjustable.minD;
- }
- else {
+ } else {
p1 = GetTrkEndPos(trk1, ep1);
}
if (adj2) {
p2 = GetTrkEndPos(trk2, 1 - ep2);
Translate(&p2, p2, a2, xx2->u.adjustable.minD);
maxD += xx2->u.adjustable.maxD - xx2->u.adjustable.minD;
- }
- else {
+ } else {
p2 = GetTrkEndPos(trk2, ep2);
}
d = FindDistance(p1, p2);
@@ -614,16 +584,19 @@ EXPORT BOOL_T ConnectAdjustableTracks(
rc = FALSE;
}
FindPos(&off, &beyond, p1, p2, a1, DIST_INF);
- if (fabs(off.y) > connectDistance)
+ if (fabs(off.y) > connectDistance) {
rc = FALSE;
+ }
if (adj1) {
UndrawNewTrack(trk1);
- d1 = d * (xx1->u.adjustable.maxD - xx1->u.adjustable.minD) / maxD + xx1->u.adjustable.minD;
+ d1 = d * (xx1->u.adjustable.maxD - xx1->u.adjustable.minD) / maxD +
+ xx1->u.adjustable.minD;
ChangeAdjustableEndPt(trk1, ep1, d1);
}
if (adj2) {
UndrawNewTrack(trk2);
- d2 = d * (xx2->u.adjustable.maxD - xx2->u.adjustable.minD) / maxD + xx2->u.adjustable.minD;
+ d2 = d * (xx2->u.adjustable.maxD - xx2->u.adjustable.minD) / maxD +
+ xx2->u.adjustable.minD;
ChangeAdjustableEndPt(trk2, ep2, d2);
}
if (rc) {
@@ -638,118 +611,27 @@ EXPORT BOOL_T ConnectAdjustableTracks(
/****************************************
*
- * Draw Turnout Roadbed
- *
- */
-
-int roadbedOnScreen = 0;
-
-
-void DrawTurnoutRoadbedSide(drawCmd_p d, wDrawColor color, coOrd orig, ANGLE_T angle, trkSeg_p sp, ANGLE_T side, int first, int last)
-{
- segProcData_t data;
- if (last <= first)
- return;
- data.drawRoadbedSide.first = first;
- data.drawRoadbedSide.last = last;
- data.drawRoadbedSide.side = side;
- data.drawRoadbedSide.roadbedWidth = roadbedWidth;
- data.drawRoadbedSide.rbw = (wDrawWidth)floor(roadbedLineWidth * (d->dpi / d->scale) + 0.5);
- data.drawRoadbedSide.orig = orig;
- data.drawRoadbedSide.angle = angle;
- data.drawRoadbedSide.color = color;
- data.drawRoadbedSide.d = d;
- SegProc(SEGPROC_DRAWROADBEDSIDE, sp, &data);
-}
-
-
-static void ComputeAndDrawTurnoutRoadbedSide(
- drawCmd_p d,
- wDrawColor color,
- coOrd orig,
- ANGLE_T angle,
- trkSeg_p segPtr,
- int segCnt,
- int segInx,
- ANGLE_T side)
-{
- unsigned long res, res1;
- int b0, b1;
- res = ComputeTurnoutRoadbedSide(segPtr, segCnt, segInx, side, roadbedWidth);
- if (res == 0L) {
- }
- else if (res == 0xFFFFFFFF) {
- DrawTurnoutRoadbedSide(d, color, orig, angle, &segPtr[segInx], side, 0, 32);
- }
- else {
- for (b0 = 0, res1 = 0x00000001; res1 && (res1 & res); b0++, res1 <<= 1);
- for (b1 = 32, res1 = 0x80000000; res1 && (res1 & res); b1--, res1 >>= 1);
- DrawTurnoutRoadbedSide(d, color, orig, angle, &segPtr[segInx], side, 0, b0);
- DrawTurnoutRoadbedSide(d, color, orig, angle, &segPtr[segInx], side, b1, 32);
- }
-}
-
-
-static void DrawTurnoutRoadbed(
- drawCmd_p d,
- wDrawColor color,
- coOrd orig,
- ANGLE_T angle,
- trkSeg_p segPtr,
- int segCnt)
-{
- int inx, trkCnt = 0, segInx = 0;
- for (inx = 0; inx < segCnt; inx++) {
- if (IsSegTrack(&segPtr[inx])) {
- segInx = inx;
- trkCnt++;
- if (trkCnt > 1)
- break;
- }
- }
- if (trkCnt == 0)
- return;
- if (trkCnt == 1) {
- DrawTurnoutRoadbedSide(d, color, orig, angle, &segPtr[segInx], +90, 0, 32);
- DrawTurnoutRoadbedSide(d, color, orig, angle, &segPtr[segInx], -90, 0, 32);
- }
- else {
- for (inx = 0; inx < segCnt; inx++) {
- if (IsSegTrack(&segPtr[inx])) {
- ComputeAndDrawTurnoutRoadbedSide(d, color, orig, angle, segPtr, segCnt, inx, +90);
- ComputeAndDrawTurnoutRoadbedSide(d, color, orig, angle, segPtr, segCnt, inx, -90);
- }
- }
- }
-}
-
-/****************************************
- *
* HAND LAID TURNOUTS
*
*/
track_p NewHandLaidTurnout(
- coOrd p0,
- ANGLE_T a0,
- coOrd p1,
- ANGLE_T a1,
- coOrd p2,
- ANGLE_T a2,
- ANGLE_T frogA)
+ coOrd p0,
+ ANGLE_T a0,
+ coOrd p1,
+ ANGLE_T a1,
+ coOrd p2,
+ ANGLE_T a2,
+ ANGLE_T frogA)
{
track_p trk;
struct extraDataCompound_t* xx;
trkSeg_t segs[2];
sprintf(message, "\tHand Laid Turnout, Angle=%0.1f\t", frogA);
- DYNARR_SET(trkEndPt_t, tempEndPts_da, 2);
- memset(&tempEndPts(0), 0, tempEndPts_da.cnt * sizeof tempEndPts(0));
- tempEndPts(0).pos = p0;
- tempEndPts(0).angle = a0;
- tempEndPts(1).pos = p1;
- tempEndPts(1).angle = a1;
- tempEndPts(2).pos = p2;
- tempEndPts(2).angle = a2;
+ TempEndPtsSet( 3 );
+ SetEndPt( TempEndPt(0), p0, a0 );
+ SetEndPt( TempEndPt(1), p1, a1 );
+ SetEndPt( TempEndPt(2), p2, a2 );
Rotate(&p1, p0, -a0);
p1.x -= p0.x;
p1.y -= p0.y;
@@ -764,7 +646,8 @@ track_p NewHandLaidTurnout(
segs[1].color = wDrawColorBlack;
segs[1].u.l.pos[0] = zero;
segs[1].u.l.pos[1] = p2;
- trk = NewCompound(T_TURNOUT, 0, p0, a0, message, 3, &tempEndPts(0), (PATHPTR_T)"Normal\0\1\0\0Reverse\0\2\0\0\0", 2, segs);
+ trk = NewCompound(T_TURNOUT, 0, p0, a0, message, 3, TempEndPt(0),
+ (PATHPTR_T)"Normal\0\1\0\0Reverse\0\2\0\0\0", 2, segs);
xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
xx->handlaid = TRUE;
@@ -778,9 +661,9 @@ track_p NewHandLaidTurnout(
*/
static coOrd MapPathPos(
- struct extraDataCompound_t* xx,
- signed char segInx,
- EPINX_T ep)
+ struct extraDataCompound_t* xx,
+ signed char segInx,
+ EPINX_T ep)
{
trkSeg_p segPtr;
coOrd pos;
@@ -802,8 +685,9 @@ static coOrd MapPathPos(
}
static trkSeg_p MapPathSeg(
- struct extraDataCompound_t* xx,
- signed char segInx) {
+ struct extraDataCompound_t* xx,
+ signed char segInx)
+{
if (segInx < 0) {
segInx = -segInx;
@@ -812,1897 +696,30 @@ static trkSeg_p MapPathSeg(
}
-/****************************************
- *
- * TURNOUT DRAWING
- *
- */
-
- /**
- * Get the paths from the turnout definition. Puts the results into static dto structure.
- * Curved segments are broken up into short sections of the lesser of 5 degrees or 5 * tie spacing.
- *
- * \param trk track_p pointer to a track
- * \param xx pointer to the extraDataCompound struct
- *
- * \returns the number of paths
- */
-int GetTurnoutPaths(track_p trk, struct extraDataCompound_t* xx) {
- wIndex_t segInx;
- wIndex_t segEP;
-
- SCALEINX_T scaleInx = GetTrkScale(trk);
- tieData_p td = GetScaleTieData(scaleInx);
-
- int i;
- ANGLE_T a0, a1, aa0, aa1;
- DIST_T r, len;
- coOrd p0, p1;
-
- PATHPTR_T pp;
- int pathCnt = 0, routeCnt = 0;
-
- for (i = 0; i < DTO_DIM; i++)
- dto[i].n = 0;
-
- dtod.trk = trk;
- dtod.index = trk->index;
- dtod.xx = xx;
-
- // Validate that the first segment starts at (0, 0)
- // and if STR p1.y == 0, if CRV angle == 0 or angle == 180
- GetSegInxEP(1, &segInx, &segEP);
- trkSeg_p segPtr = &xx->segs[segInx];
- switch (segPtr->type) {
- case SEG_STRTRK:
- p0 = segPtr->u.l.pos[0];
- p1 = segPtr->u.l.pos[1];
- if ((FindDistance(p0, zero) > EPSILON) || (fabs(p1.y) > EPSILON))
- return -1;
- break;
- case SEG_CRVTRK:
- r = fabs(segPtr->u.c.radius);
- a0 = segPtr->u.c.a0;
- a1 = segPtr->u.c.a1;
-
- if (segPtr->u.c.radius > 0) {
- aa0 = a0;
- }
- else {
- aa0 = a0 + a1;
- }
- PointOnCircle(&p0, segPtr->u.c.center, r, aa0);
- if ((FindDistance(p0, zero) > EPSILON)
- || ((fabs(aa0 - 180) > EPSILON) && (fabs(aa0) > EPSILON)))
- return -1;
- break;
- }
-
- pp = GetPaths(trk);
- while (pp[0]) {
- pp += strlen((char*)pp) + 1;
-
- ANGLE_T angle = 0;
- while (pp[0]) {
- if (pathCnt < DTO_DIM)
- dto[pathCnt].type = 'S';
- while (pp[0]) {
- GetSegInxEP(pp[0], &segInx, &segEP);
- // trkSeg_p
- segPtr = &xx->segs[segInx];
- switch (segPtr->type) {
- case SEG_STRTRK:
- p0 = segPtr->u.l.pos[0];
- p1 = segPtr->u.l.pos[1];
-
- wIndex_t n = dto[pathCnt].n;
- dto[pathCnt].trkSeg[n] = segPtr;
- dto[pathCnt].base[n] = p0;
- n++;
- dto[pathCnt].trkSeg[n] = segPtr;
- dto[pathCnt].base[n] = p1;
- // n++;
- dto[pathCnt].n = n;
-
- if (n >= DTO_SEGS - 1) return -1;
-
- break;
- case SEG_CRVTRK:
- r = fabs(segPtr->u.c.radius);
-
- dto[pathCnt].type = segPtr->u.c.center.y < 0 ? 'R' : 'L';
-
- a0 = segPtr->u.c.a0;
- a1 = segPtr->u.c.a1;
-
- angle += a1;
-
- len = D2R(a1) * r;
- // Every 5 degrees or 5 * tie spacing
- int cnt = (int)floor(a1 / 5.0);
- int cnt2 = (int)floor(len / 5 / td->spacing);
- if (cnt2 > cnt) cnt = cnt2;
- if (cnt <= 0) cnt = 1;
-
- aa1 = a1 / cnt;
- if (dto[pathCnt].type == 'R') {
- aa0 = a0;
- }
- else {
- aa0 = a0 + a1;
- aa1 = -aa1;
- }
- PointOnCircle(&p0, segPtr->u.c.center, r, aa0);
- n = dto[pathCnt].n;
- dto[pathCnt].trkSeg[n] = segPtr;
- dto[pathCnt].base[n] = p0;
- n++;
- dto[pathCnt].n = n;
-
- while (cnt > 0) {
- aa0 += aa1;
- PointOnCircle(&p0, segPtr->u.c.center, r, aa0);
-
- // n = dto[pathCnt].n;
- dto[pathCnt].trkSeg[n] = segPtr;
- dto[pathCnt].base[n] = p0;
- n++;
-
- if (n >= DTO_SEGS - 1) return -1;
-
- cnt--;
- }
- n--; // remove that last point count
- dto[pathCnt].n = n;
- }
- pp++;
- }
- // Include the last point
- dto[pathCnt].crvAngle = angle;
- dto[pathCnt].n++;
-
- pathCnt++;
- if (pathCnt > DTO_DIM) return -1;
- pp++;
- }
- routeCnt++;
- pp++;
- }
- dtod.pathCnt = pathCnt;
- dtod.routeCnt = routeCnt;
- dtod.endCnt = trk->endCnt;
-
- // Guard value: n < DTO_SEGS - 2
- for (i = 0; i < pathCnt; i++)
- dto[i].pts[dto[i].n].x = DIST_INF;
-
- return pathCnt;
-}
-
-/**
-* Sets the turnout type if compatible with enhanced drawing methods. The data is
-* from the path data saved in dtod and dto by GetTurnoutPaths. The turnout type is
-* stored in the dtod.toType. DTO_INVALID (0) if the enhanced methods cannot handle
-* it.
-*/
-void GetTurnoutType() {
- dtod.strPath = -1;
- dtod.str2Path = -1;
- dtod.crvPath = -1;
- dtod.crv2Path = -1;
-
- dtod.toType = DTO_INVALID;
-
- int strCnt = 0, crvCnt = 0, lftCnt = 0, rgtCnt = 0;
- enum dtoType toType = DTO_INVALID;
- int i, j;
-
- // Count path origins
- dtod.origCnt = 1;
- dtod.origins[0] = 0;
-
- for (i = 1; i < dtod.pathCnt; i++) {
- int eq = 0;
- for (j = 0; j < i; j++) {
- if (CoOrdEqual(dto[dtod.origins[j]].base[0], dto[i].base[0]))
- eq++;
- }
- if (eq == 0) {
- dtod.origins[dtod.origCnt] = i;
- dtod.origCnt++;
- }
-
- if (dtod.origCnt > 4)
- return;
- }
-
- // Determine the path type
- for (i = 0; i < dtod.pathCnt; i++) {
- switch (dto[i].type) {
- case 'S':
- strCnt++;
- if (strCnt == 1)
- dtod.strPath = i;
- else
- dtod.str2Path = i;
- break;
- case 'L':
- lftCnt++;
- crvCnt++;
- if (crvCnt == 1)
- dtod.crvPath = i;
- else
- dtod.crv2Path = i;
- break;
- case 'R':
- rgtCnt++;
- crvCnt++;
- if (crvCnt == 1)
- dtod.crvPath = i;
- else
- dtod.crv2Path = i;
- break;
- }
- }
-
- dtod.strCnt = strCnt;
- dtod.crvCnt = crvCnt;
- dtod.lftCnt = lftCnt;
- dtod.rgtCnt = rgtCnt;
-
- // Normal two- or three-way turnout, or a curved turnout
- if (dtod.origCnt == 1) {
- if (dtod.pathCnt == 2) {
- if (strCnt == 1 && crvCnt == 1) {
- dtod.toType = DTO_NORMAL;
- }
- else if ((strCnt == 0) && ((lftCnt == 2) || (rgtCnt == 2))) {
- // Assumes outer curve is [0] and inner is [1]
- if ((dto[0].crvAngle <= 20) && (dto[1].crvAngle - dto[0].crvAngle <= 15))
- dtod.toType = DTO_CURVED;
- }
- else if (lftCnt == 1 && rgtCnt == 1) {
- dtod.toType = DTO_WYE;
- }
- }
- else if ((dtod.pathCnt == 3) && (strCnt == 1)
- && (lftCnt == 1) && (rgtCnt == 1)) {
- dtod.toType = DTO_THREE;
- }
- }
- else
- // Crossing, single- and double-slip
- if ((dtod.origCnt == 2) && (dtod.endCnt == 4)
- && strCnt == 2) {
-
- ANGLE_T a0, a1, a2;
- a1 = FindAngle(dto[dtod.strPath].base[0], dto[dtod.strPath].base[1]);
- a2 = FindAngle(dto[dtod.str2Path].base[0], dto[dtod.str2Path].base[1]);
- // Swap the ends of the strPath if large angle
- if((a1 > 180.0) && (dto[dtod.strPath].n == 2))
- {
- coOrd tmp = dto[dtod.strPath].base[0];
- dto[dtod.strPath].base[0] = dto[dtod.strPath].base[1];
- dto[dtod.strPath].base[1] = tmp;
-
- i = dto[dtod.strPath].n - 1;
- tmp = dto[dtod.strPath].pts[0];
- dto[dtod.strPath].pts[0] = dto[dtod.strPath].pts[i];
- dto[dtod.strPath].pts[i] = tmp;
-
- a1 = a1 - 180.0;
- dto[dtod.strPath].angle = a1;
- }
- // Swap the ends of the str2Path if large angle
- if((a2 > 180.0) && (dto[dtod.str2Path].n == 2))
- {
- coOrd tmp = dto[dtod.str2Path].base[0];
- dto[dtod.str2Path].base[0] = dto[dtod.str2Path].base[1];
- dto[dtod.str2Path].base[1] = tmp;
-
- i = dto[dtod.str2Path].n - 1;
- tmp = dto[dtod.str2Path].pts[0];
- dto[dtod.str2Path].pts[0] = dto[dtod.str2Path].pts[i];
- dto[dtod.str2Path].pts[i] = tmp;
-
- a2 = a2 - 180.0;
- dto[dtod.str2Path].angle = a2;
- }
- a0 = DifferenceBetweenAngles(a1, a2);
- if(a0 < 0)
- {
- int tmp = dtod.strPath;
- dtod.strPath = dtod.str2Path;
- dtod.str2Path = tmp;
- a0 = NormalizeAngle(-a0);
- }
- if ((a0 > 90.0) || (a0 < 0.0))
- return;
-
- coOrd p1 = dto[dtod.strPath].base[0];
- coOrd p2 = dto[dtod.str2Path].base[0];
- coOrd pos = zero;
- int intersect = FindIntersection(&pos, p1, a1, p2, a2);
-
- if (intersect) {
- if(strCnt == 2 && dtod.pathCnt == 2){
- if((a0 <= 61) && (a0 >= -61))
- dtod.toType = DTO_XING;
- else
- dtod.toType = DTO_XNG9;
- }
- else if(dtod.pathCnt == 3 && (lftCnt == 1 || rgtCnt == 1)){
- dtod.toType = DTO_SSLIP;
- }
- else if(dtod.pathCnt == 4 && lftCnt == 1 && rgtCnt == 1){
- dtod.toType = DTO_DSLIP;
- }
- }
- // No intersect, it could be a crossover
- else if (strCnt == 2) {
- if (dtod.pathCnt == 4 && lftCnt == 1 && rgtCnt == 1) {
- dtod.toType = DTO_DCROSS;
- }
- else if(dtod.pathCnt == 3){
- // Perverse test because the cross paths go Left then Right, for example
- if(lftCnt == 1){
- dtod.toType = DTO_RCROSS;
- }
- else if(rgtCnt == 1){
- dtod.toType = DTO_LCROSS;
- }
- else{
- dtod.toType = DTO_INVALID;
- }
- }
- }
- }
-}
-
-/**
- * Draw Layout lines and points
- *
- * \param d The drawing object
- * \param scaleInx The layout/track scale index
- */
-static void DrawDtoLayout(
- drawCmd_p d,
- SCALEINX_T scaleInx
-)
-{
- tieData_p td;
- td = GetScaleTieData(scaleInx);
-
- // Draw the points and lines from dto
- double r = td->width / 2;
- // if (r < 1) r = 1;
-
- int i, j;
- for (i = 0; i < DTO_DIM; i++) {
- for (j = 0; j < dto[i].n; j++) {
- DrawFillCircle(d, dto[i].pts[j], r, drawColorPurple);
- if (j < dto[i].n - 1)
- DrawLine(d, dto[i].pts[j], dto[i].pts[j + 1], 0, drawColorPurple);
- }
- }
-}
-
-/**
-* Use the coOrds to build a polygon and draw the bridge fill. Note that the coordinates are
-* passed as pairs, and rearranged into a polygon with the 1,2,4,3 order.
-*
-* \param d The drawing object
-* \param b1 The first coordinate
-* \param b2 The second coordinate
-* \param b3 The third coordinate
-* \param b4 The fourth coordinate
-*/
-static void DrawBridgeFill(
- drawCmd_p d,
- coOrd b1,
- coOrd b2,
- coOrd b3,
- coOrd b4
- )
-{
- coOrd p[4] = {b1, b2, b4, b3};
- DrawPoly(d,4,p,NULL,drawColorGrey90,0,DRAW_FILL );
-}
-
-/**
-* Draw Bridge parapets and background for a turnout
-*
-* \param d The drawing object
-* \param path1 The first path
-* \param path2 The second path
-*/
-static void DrawTurnoutBridge(
- drawCmd_p d,
- int path1,
- int path2
-)
-{
- DIST_T trackGauge = GetTrkGauge(dtod.trk);
- wDrawWidth width2 = (wDrawWidth)round((2.0 * d->dpi) / BASE_DPI);
- if (d->options&DC_PRINT)
- width2 = (wDrawWidth)round(d->dpi / BASE_DPI);
-
- coOrd b1,b2,b3,b4,b5,b6;
- ANGLE_T angle = dtod.xx->angle,a = 0.0;
- int i,j,i1,i2;
- i1 = path1;
- i2 = path2;
- if(dto[i1].base[dto[i1].n - 1].y < dto[i2].base[dto[i2].n - 1].y) {
- i1 = path2;
- i2 = path1;
- // a = -a;
- }
-
- if(dtod.toType == DTO_THREE) {
- i = dtod.strPath;
- DIST_T dy = fabs(dto[i].dy[0]) + trackGauge * 1.5;
- b1 = dto[i].pts[0];
- Translate(&b3,b1,(angle + a),dy);
- b1 = dto[i].pts[dto[i].n - 1];
- Translate(&b4,b1,(angle + a),dy);
- b2 = dto[i].pts[0];
- Translate(&b5,b2,(angle + a),-dy);
- b2 = dto[i].pts[dto[i].n - 1];
- Translate(&b6,b2,(angle + a),-dy);
-
- // Draw the bridge background
- DrawBridgeFill(d,b3,b4,b5,b6);
- }
-
- for(i = i1; 1; i = i2,a = 180.0) {
- DIST_T dy = fabs(dto[i].dy[0]) + trackGauge * 1.5;
- b1 = dto[i].pts[0];
- Translate(&b3,b1,(angle + a),dy);
- Translate(&b5,b1,(angle + a),-(dy * 0.75));
- for(j = 1; j < dto[i].n; j++) {
- dy = fabs(dto[i].dy[j]) + trackGauge * 1.5;
- b2 = dto[i].pts[j];
- Translate(&b4,b2,(angle + a),dy);
- Translate(&b6,b2,(angle + a),-(dy * 0.75));
-
- // Draw the bridge background
- DrawBridgeFill(d,b3,b4,b5,b6);
-
- // Draw the bridge edge
- DrawLine(d,b3,b4,width2,drawColorBlack);
-
- b1 = b2;
- b3 = b4;
- b5 = b6;
- }
-
- if(i == i2)
- break;
- }
-
- EPINX_T ep;
- coOrd p;
- track_p trk1;
- coOrd p0,p1;
-
- for(ep = 0; ep < 3; ep++) {
- trk1 = GetTrkEndTrk(dtod.trk,ep);
-
- if((trk1) && (!GetTrkBridge(trk1))) {
-
- p = GetTrkEndPos(dtod.trk,ep);
- a = GetTrkEndAngle(dtod.trk,ep) + 90.0;
-
- int i = (dtod.lftCnt > 0) && (dtod.rgtCnt == 0) ? 2 : 1;
- if(ep != i) {
- Translate(&p0,p,a,trackGauge * 1.5);
- Translate(&p1,p0,a - 45.0,trackGauge * 1.5);
- DrawLine(d,p0,p1,width2,drawColorBlack);
- }
- if(ep != (3 - i)) {
- Translate(&p0,p,a,-trackGauge * 1.5);
- Translate(&p1,p0,a + 45.0,-trackGauge * 1.5);
- DrawLine(d,p0,p1,width2,drawColorBlack);
- }
- }
- }
-}
-
-/**
-* Draw Bridge parapets and background for a cross-over
-*
-* \param d The drawing object
-* \param path1 The first path, straight
-* \param path2 The second path, straight
-*/
-static void DrawCrossBridge(
- drawCmd_p d,
- int path1,
- int path2
-)
-{
- DIST_T trackGauge = GetTrkGauge(dtod.trk);
- wDrawWidth width2 = (wDrawWidth)round((2.0 * d->dpi)/BASE_DPI);
- if (d->options&DC_PRINT)
- width2 = (wDrawWidth)round(d->dpi / BASE_DPI);
-
- coOrd b1, b2, b3, b4, b5, b6;
- ANGLE_T angle = dtod.xx->angle, a = 0.0;
- int i1, i2;
- i1 = path1;
- i2 = path2;
- if(dto[i1].base[dto[i1].n - 1].y < dto[i2].base[dto[i2].n - 1].y) {
- i1 = path2;
- i2 = path1;
- // a = -a;
- }
-
- DIST_T dy = fabs(dto[i1].dy[0]) + trackGauge * 1.5;
- b1 = dto[i1].pts[0];
- Translate(&b3,b1,(angle + a),dy);
- b1 = dto[i1].pts[dto[i1].n-1];
- Translate(&b4,b1,(angle + a),dy);
- b2 = dto[i2].pts[0];
- Translate(&b5,b2,(angle + a),-dy);
- b2 = dto[i2].pts[dto[i2].n-1];
- Translate(&b6,b2,(angle + a),-dy);
-
- // Draw the bridge background
- DrawBridgeFill(d, b3, b4, b5, b6);
-
- // Draw the bridge edges
- DrawLine(d,b3,b4,width2,drawColorBlack);
- DrawLine(d,b5,b6,width2,drawColorBlack);
-
- EPINX_T ep;
- coOrd p;
- track_p trk1;
- coOrd p0,p1;
-
- for(ep = 0; ep < 4; ep++) {
- trk1 = GetTrkEndTrk(dtod.trk,ep);
-
- if((trk1) && (!GetTrkBridge(trk1))) {
- p = GetTrkEndPos(dtod.trk,ep);
- a = GetTrkEndAngle(dtod.trk,ep) + 90.0;
-
- if((ep == 1) || (ep == 2)) {
- Translate(&p0,p,a,trackGauge * 1.5);
- Translate(&p1,p0,a - 45.0,trackGauge * 1.5);
- DrawLine(d,p0,p1,width2,drawColorBlack);
- }
- if((ep == 0) || (ep == 3)) {
- Translate(&p0,p,a,-trackGauge * 1.5);
- Translate(&p1,p0,a + 45.0,-trackGauge * 1.5);
- DrawLine(d,p0,p1,width2,drawColorBlack);
- }
- }
- }
-}
-
-/**
-* Draw Bridge parapets and background for a crossing
-*
-* \param d The drawing object
-* \param path1 The first path
-* \param path2 The second path
-*/
-static void DrawXingBridge(
- drawCmd_p d,
- int path1,
- int path2
-)
-{
- DIST_T trackGauge = GetTrkGauge(dtod.trk);
- wDrawWidth width2 = (wDrawWidth)round((2.0 * d->dpi)/BASE_DPI);
- if (d->options&DC_PRINT)
- width2 = (wDrawWidth)round(d->dpi / BASE_DPI);
-
- coOrd b0, b1, b2, b3, b4, b5, b6;
- int i, j, i1, i2;
- i1 = dtod.strPath;
- i2 = dtod.str2Path;
-
- // Bridge fill both straight sections
- wDrawWidth width3 = (wDrawWidth)round(trackGauge * 3 * d->dpi/d->scale);
- b1 = dto[i1].pts[0];
- b2 = dto[i1].pts[dto[i1].n-1];
- DrawLine(d,b1,b2,width3,wDrawColorGrey90);
- b1 = dto[i2].pts[0];
- b2 = dto[i2].pts[dto[i1].n-1];
- DrawLine(d,b1,b2,width3,wDrawColorGrey90);
-
- i1 = path1;
- i2 = path2;
- if(dto[i1].base[dto[i1].n - 1].y < dto[i2].base[dto[i2].n - 1].y) {
- i1 = path2;
- i2 = path1;
- }
-
- // Handle curved sections for slips
- BOOL_T hasLeft = 0, hasRgt = 0;
- ANGLE_T angle = dtod.xx->angle, a = 0.0;
- for(i = i1; 1; i = i2,a = 180.0) {
- DIST_T dy = fabs(dto[i].dy[0]) + trackGauge * 1.5;
- b1 = dto[i].pts[0];
- Translate(&b3,b1,(angle + a),dy);
- Translate(&b5,b1,(angle + a),-(dy * 0.75));
- if(dto[i].type != 'S') {
- if(dto[i].type == 'L')
- hasLeft = 1;
- else if(dto[i].type == 'R')
- hasRgt = 1;
- for(j = 1; j < dto[i].n; j++) {
- dy = fabs(dto[i].dy[j]) + trackGauge * 1.5;
- b2 = dto[i].pts[j];
- Translate(&b4,b2,(angle + a),dy);
- Translate(&b6,b2,(angle + a),-(dy * 0.75));
-
- // Draw the bridge background
- DrawBridgeFill(d,b3,b4,b5,b6);
-
- // Draw the bridge edge
- DrawLine(d,b3,b4,width2,drawColorBlack);
- b1 = b2;
- b3 = b4;
- b5 = b6;
- }
- }
- if(i == i2)
- break;
- }
-
- if(dtod.strPath >= 0 && dtod.str2Path >= 0) {
- i1 = dtod.strPath;
- i2 = dtod.str2Path;
- if(!hasRgt) {
- DIST_T dy = trackGauge * 1.5;
- ANGLE_T a1, a2;
- b1 = dto[i1].pts[0];
- a1 = dto[i1].angle + 90;
- Translate(&b3,b1,a1,dy);
-
- b2 = dto[i2].pts[dto[i2].n - 1];
- a2 = dto[i2].angle + 90;
- Translate(&b4,b2,a2,dy);
-
- FindIntersection(&b0, b3, a1-90.0, b4, a2-90.0);
-
- // Draw the bridge edge
- DrawLine(d,b3,b0,width2,drawColorBlack);
- DrawLine(d,b0,b4,width2,drawColorBlack);
- }
-
- if(!hasLeft) {
- DIST_T dy = trackGauge * 1.5;
- ANGLE_T a1, a2;
- b1 = dto[i2].pts[0];
- a1 = dto[i2].angle - 90;
- Translate(&b3,b1,a1,dy);
-
- b2 = dto[i1].pts[dto[i1].n - 1];
- a2 = dto[i1].angle - 90;
- Translate(&b4,b2,a2,dy);
-
- FindIntersection(&b0, b3, a1+90.0, b4, a2+90.0);
-
- // Draw the bridge edge
- DrawLine(d,b3,b0,width2,drawColorBlack);
- DrawLine(d,b0,b4,width2,drawColorBlack);
- }
-
- if(dtod.toType == DTO_XNG9) {
- DIST_T dy = trackGauge * 1.5;
- ANGLE_T a1, a2;
- b1 = dto[i1].pts[dto[i1].n - 1];
- a1 = dto[i1].angle + 90;
- Translate(&b3,b1,a1,dy);
-
- b2 = dto[i2].pts[dto[i2].n - 1];
- a2 = dto[i2].angle - 90;
- Translate(&b4,b2,a2,dy);
-
- FindIntersection(&b0, b3, a1-90.0, b4, a2+90.0);
-
- // Draw the bridge edge
- DrawLine(d,b3,b0,width2,drawColorBlack);
- DrawLine(d,b0,b4,width2,drawColorBlack);
-
- b1 = dto[i1].pts[0];
- a1 = dto[i1].angle - 90;
- Translate(&b3,b1,a1,dy);
-
- b2 = dto[i2].pts[0];
- a2 = dto[i2].angle + 90;
- Translate(&b4,b2,a2,dy);
-
- FindIntersection(&b0, b3, a1+90.0, b4, a2-90.0);
-
- // Draw the bridge edge
- DrawLine(d,b3,b0,width2,drawColorBlack);
- DrawLine(d,b0,b4,width2,drawColorBlack);
- }
- }
-
- // Bridge wings
- EPINX_T ep;
- coOrd p;
- track_p trk1;
- coOrd p0,p1;
-
- for(ep = 0; ep < 4; ep++) {
- trk1 = GetTrkEndTrk(dtod.trk,ep);
-
- if((trk1) && (!GetTrkBridge(trk1))) {
- p = GetTrkEndPos(dtod.trk,ep);
- a = GetTrkEndAngle(dtod.trk,ep) + 90.0;
-
- if((dtod.toType == DTO_XNG9) || (ep == 2) || (ep == 3)) {
- Translate(&p0,p,a,trackGauge * 1.5);
- Translate(&p1,p0,a - 45.0,trackGauge * 1.5);
- DrawLine(d,p0,p1,width2,drawColorBlack);
- }
- if((dtod.toType == DTO_XNG9) || (ep == 0) || (ep == 1)) {
- Translate(&p0,p,a,-trackGauge * 1.5);
- Translate(&p1,p0,a + 45.0,-trackGauge * 1.5);
- DrawLine(d,p0,p1,width2,drawColorBlack);
- }
- }
- }
-}
-
-/**
- * Init Normal Turnout data structure
- * Calculates the dy value of each segment
- * Sets pts values REORIGIN base to actual position and angle
- * Save often used last base and last point coOrd
- */
-static void DrawDtoInit()
-{
- struct extraDataCompound_t* xx = dtod.xx;
- coOrd p1;
- int i, j;
-
- for(i = 0; i < DTO_DIM; i++) {
- int n = dto[i].n;
- for(j = 0; j < n; j++) {
- REORIGIN(p1,dto[i].base[j],xx->angle,xx->orig);
- dto[i].pts[j] = p1;
- if(j < n - 1)
- dto[i].dy[j] = (dto[i].base[j + 1].y - dto[i].base[j].y) / (dto[i].base[j + 1].x - dto[i].base[j].x);
- }
- dto[i].ptsLast = dto[i].pts[n - 1];
- dto[i].baseLast = dto[i].base[n - 1];
- }
-}
-
-/**
- * Draw Normal (Single Origin) Turnout Bridge and Ties. Uses the static dto and dtod structures.
- *
- * \param d The drawing object
- * \param scaleInx The layout/track scale index
- * \param color The tie color. If black the color is read from the global tieColor.
- */
-static void DrawNormalTurnout(
- drawCmd_p d,
- SCALEINX_T scaleInx,
- BOOL_T omitTies,
- wDrawColor color)
-{
- tieData_p td;
- DIST_T len;
- coOrd pos;
- int cnt;
- ANGLE_T angle;
- coOrd s1, s2, p1, p2, q1, q2;
- int s0, p0, q0;
- ANGLE_T a0;
-
- if (color == wDrawColorBlack)
- color = tieColor;
-
- DIST_T trackGauge = GetTrkGauge(dtod.trk);
-
- DrawDtoInit();
-
- // draw the points
-#ifdef DTO_DEBUG
- if (DTO_DEBUG == DTO_NORMAL) DrawDtoLayout(d, scaleInx);
-#endif
-
- int strPath = dtod.strPath, othPath = 0, secPath = 1;
- int toType = dtod.toType;
- int first = 1;
-
- switch (toType) {
- case DTO_NORMAL:
- othPath = 1 - strPath;
- secPath = strPath;
- break;
- case DTO_WYE:
- // strPath = 2;
- othPath = 0; secPath = 1;
- break;
- case DTO_THREE:
- switch (strPath) {
- case 0:
- othPath = 1; secPath = 2;
- break;
- case 1:
- othPath = 0; secPath = 2;
- break;
- case 2:
- othPath = 0; secPath = 1;
- break;
- }
- break;
- }
-
- if(dtod.bridge) {
- DrawTurnoutBridge(d,othPath,secPath);
- }
- if (omitTies)
- return;
-
- // Straight vector for tie angle
- if (toType == DTO_WYE) {
- s1 = dto[othPath].pts[0];
- s2 = MidPtCoOrd(dto[othPath].ptsLast, dto[secPath].ptsLast);
- }
- else {
- s1 = dto[strPath].pts[0];
- s2 = dto[strPath].ptsLast;
- }
- // Diverging vector(s)
- p1 = dto[othPath].pts[0];
- p2 = dto[othPath].ptsLast;
- q1 = dto[secPath].pts[0];
- q2 = dto[secPath].ptsLast;
-
- td = GetScaleTieData(scaleInx);
- len = FindDistance(s1, s2);
- angle = FindAngle(s1, s2); // The straight segment
-
- cnt = (int)floor(len / td->spacing + 0.5);
- if (cnt > 0) {
- int pn = dto[othPath].n;
- int qn = dto[secPath].n;
- DIST_T dx = len / cnt;
- s0 = p0 = q0 = 0;
- DIST_T tdlen = td->length;
- DIST_T tdmax = (toType == DTO_WYE) ? 2.0 * tdlen : 2.5 * tdlen;
- DIST_T px = len, dlenx = dx / 2;
-
- cnt = cnt > 1 ? cnt - 1 : 1;
- for (px = dlenx; cnt; cnt--, px += dx) {
- if (px >= dto[othPath].base[p0 + 1].x) p0++;
- if (px >= dto[secPath].base[q0 + 1].x) q0++;
- if (p0 >= pn || q0 >= qn)
- break;
-
- if ((px + dx >= dto[othPath].baseLast.x) || (px + dx >= dto[secPath].baseLast.x)) {
- break;
- }
-
- DIST_T dy1 = dto[othPath].base[p0].y + (px - dto[othPath].base[p0].x) * dto[othPath].dy[p0];
- DIST_T dy2 = dto[secPath].base[q0].y + (px - dto[secPath].base[q0].x) * dto[secPath].dy[q0];
- tdlen = td->length + fabs(dy1) + fabs(dy2);
- if (tdlen > tdmax)
- break;
-
- DIST_T dy = dy1 + dy2;
- Translate(&pos, s1, angle, px);
- Translate(&pos, pos, (angle - 90.0), dy / 2);
-
- DrawTie(d, pos, angle, tdlen, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
- }
-
- // Asymmetric? Use longer ties for remaining two tracks (strPath, othPath)
- DIST_T sx = px; // Save these values for second code block
- int s0 = p0;
- if((dtod.toType == DTO_THREE) && (px + dx >= dto[secPath].baseLast.x)){
- for ( ; cnt; cnt--, px += dx) {
- if (px >= dto[othPath].base[p0 + 1].x) p0++;
- // if (px >= dto[secPath].base[q0 + 1].x) q0++;
- if (p0 >= pn)
- break;
-
- if (px + dx >= dto[othPath].baseLast.x) {
- break;
- }
-
- DIST_T dy1 = dto[othPath].base[p0].y + (px - dto[othPath].base[p0].x) * dto[othPath].dy[p0];
- tdlen = td->length + fabs(dy1);
- if (tdlen > tdmax)
- break;
-
- DIST_T dy = dy1;
- Translate(&pos, s1, angle, px);
- Translate(&pos, pos, (angle - 90.0), dy / 2);
-
- DrawTie(d, pos, angle, tdlen, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
- }
- }
-
- // Draw remaining ties, if any
- if (px + dx < dto[othPath].baseLast.x){
- p1 = dto[othPath].pts[p0];
- p2 = dto[othPath].ptsLast;
- angle = FindAngle(p1, p2);
- a0 = FindAngle(dto[othPath].base[p0], dto[othPath].baseLast);
- DIST_T lenr = (dto[othPath].baseLast.x - px + dlenx) / cos(D2R(90.0 - a0));
- Translate(&p1, p2, angle, -lenr);
- DrawStraightTies(d, scaleInx, p1, p2, color);
- }
- else {
- p1 = dto[othPath].pts[pn - 2];
- a0 = FindAngle(p1, p2);
- Translate(&pos, p2, a0, -dx / 2);
- DrawTie(d, pos, a0, td->length, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
- }
- // Restore saved values
- if(dtod.toType == DTO_THREE){
- px = sx;
- p0 = s0;
- }
-
- // Asymmetric? Use longer ties for remaining two tracks (strPath, secPath)
- if((dtod.toType == DTO_THREE) && (px + dx >= dto[othPath].baseLast.x)){
- for ( ; cnt; cnt--, px += dx) {
- // if (px >= dto[othPath].base[p0 + 1].x) p0++;
- if (px >= dto[secPath].base[q0 + 1].x) q0++;
- if (q0 >= qn)
- break;
-
- if (px + dx >= dto[secPath].baseLast.x) {
- break;
- }
-
- DIST_T dy1 = dto[secPath].base[q0].y + (px - dto[secPath].base[q0].x) * dto[secPath].dy[q0];
- tdlen = td->length + fabs(dy1);
- if (tdlen > tdmax)
- break;
-
- DIST_T dy = dy1;
- Translate(&pos, s1, angle, px);
- Translate(&pos, pos, (angle - 90.0), dy / 2);
-
- DrawTie(d, pos, angle, tdlen, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
- }
- }
- if (px + dx < dto[secPath].baseLast.x) {
- q1 = dto[secPath].pts[q0];
- q2 = dto[secPath].ptsLast;
- angle = FindAngle(q1, q2);
- a0 = FindAngle(dto[secPath].base[q0], dto[secPath].baseLast);
- DIST_T lenr = (dto[secPath].baseLast.x - px + dlenx) / cos(D2R(90.0 - a0));
- Translate(&q1, q2, angle, -lenr);
- DrawStraightTies(d, scaleInx, q1, q2, color);
- }
- else {
- q1 = dto[secPath].pts[qn - 2];
- a0 = FindAngle(q1, q2);
- Translate(&pos, q2, a0, -dx / 2);
- DrawTie(d, pos, a0, td->length, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
- }
-
- // Final ties at end
- if (dtod.toType == DTO_THREE) {
-
- int n = (int)(dto[strPath].baseLast.x);
- if (px + dx < len) {
- angle = FindAngle(s1, s2);
- DIST_T lenr = len - px + dlenx;
- Translate(&s1, s2, angle, -lenr);
- DrawStraightTies(d, scaleInx, s1, s2, color);
- }
- else {
- n = dto[strPath].n;
- s1 = dto[strPath].pts[n - 2];
- a0 = FindAngle(s1, s2);
- Translate(&pos, s2, a0, -dx / 2);
- DrawTie(d, pos, a0, td->length, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
- }
- }
- }
-}
-
-/**
- * Draw Curved (Single Origin) Turnout Bridge and Ties. Uses the static dto and dtod structures.
- *
- * \param d The drawing object
- * \param scaleInx The layout/track scale index
- * \param color The tie color. If black the color is read from the global tieColor.
- */
-static void DrawCurvedTurnout(
- drawCmd_p d,
- SCALEINX_T scaleInx,
- BOOL_T omitTies,
- wDrawColor color)
-{
- tieData_p td;
- DIST_T len, r;
- coOrd pos;
- int cnt;
- ANGLE_T angle, dang;
- coOrd center;
- coOrd p1, p2, q1, q2;
- ANGLE_T a0, a1, a2;
- struct extraDataCompound_t* xx = dtod.xx;
-
- if (color == wDrawColorBlack)
- color = tieColor;
-
- DrawDtoInit();
-
- // draw the points
-#ifdef DTO_DEBUG
- if (DTO_DEBUG == DTO_CURVED) DrawDtoLayout(d, scaleInx);
-#endif
-
- int othPath = 0, secPath = 1;
- int toType = dtod.toType;
-
- if(dtod.bridge) {
- DrawTurnoutBridge(d,othPath,secPath);
- }
- if (omitTies)
- return;
-
- td = GetScaleTieData(scaleInx);
-
- // Save the ending coordinates
- coOrd othEnd = zero, secEnd = zero;
-
- trkSeg_p trk;
- DIST_T tdlen = td->length, tdmax = tdlen * 2.5;
- DIST_T tdspc = td->spacing, tdspc2 = tdspc / 2.0;
- double rdot = td->width / 2;
-
- int pn = dto[othPath].n;
- int qn = dto[secPath].n;
- int p0 = 0, q0 = 0;
- DIST_T px = 0, qx = 0, dy = 0, dy1 = 0, dy2 = 0;
-
- double cosAdj = 1.0;
-
- angle = 0;
- px = tdspc2;
- qx = tdspc2;
- int segs = max(dto[othPath].n, dto[secPath].n);
- for (; segs > 0; segs--) {
-
- if (px >= dto[othPath].base[p0 + 1].x)
- p0++;
- if (qx >= dto[secPath].base[q0 + 1].x)
- q0++;
- if ((p0 >= pn - 1) || (q0 >= qn - 1)) {
- break;
- }
-
- trk = dto[othPath].trkSeg[p0];
- if (trk->type == SEG_CRVTRK) {
-
- center = trk->u.c.center;
- r = fabs(trk->u.c.radius);
- a0 = NormalizeAngle(trk->u.c.a0 + dtod.xx->angle);
- a1 = trk->u.c.a1;
-
- pos = center;
- REORIGIN(center, pos, xx->angle, xx->orig);
-
- len = r * D2R(a1);
- cnt = (int)floor(len / tdspc + 0.5);
- if (len - tdspc * cnt >= tdspc2) {
- cnt++;
- }
- DIST_T tdlen = td->length;
- DIST_T dx = len / cnt, dx2 = dx / 2;
-
- if (cnt != 0) {
- dang = (len / cnt) * 360 / (2 * M_PI * r);
- DIST_T dx = len / cnt, dx2 = dx / 2;
-
- if (dto[othPath].type == 'R') {
- a2 = a0 + dang / 2;
- }
- else {
- a2 = a0 + a1 - dang / 2;
- dang = -dang;
- }
- angle += fabs(dang / 2);
-
- cosAdj = fabs(cos(D2R(angle)));
- px += dx2 * cosAdj;
- qx += dx2 * cosAdj;
-
- for (; cnt; cnt--, a2 += dang, angle += dang) {
- if (px >= dto[othPath].base[p0 + 1].x)
- p0++;
- if (qx >= dto[secPath].base[q0 + 1].x)
- q0++;
- if ((p0 >= pn - 1) || (q0 >= qn - 1)) {
- break;
- }
-
- coOrd e1, e2;
- PointOnCircle(&e1, center, r, a2);
-
- q1 = dto[secPath].pts[q0];
- q2 = dto[secPath].pts[q0 + 1];
- FindIntersection(&e2, e1, a2, q1, FindAngle(q1, q2));
-
- dy = FindDistance(e1, e2);
- DIST_T tlen = tdlen + dy;
-
- if (tlen > tdmax) {
- break;
- }
-
- Translate(&pos, e1, a2, -dy / 2);
- DrawTie(d, pos, angle + xx->angle + 90, tlen, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
-
- // Assures that these ends are the last point drawn before break
- othEnd = e1;
- secEnd = e2;
-
- cosAdj = fabs(cos(D2R(angle)));
- if (cnt > 1) {
- px += dx * cosAdj;
- qx += dx * cosAdj;
- }
- else {
- px += dx2 * cosAdj;
- qx += dx2 * cosAdj;
- }
- }
- }
- }
- else {
- cosAdj = fabs(cos(D2R(angle)));
-
- p1 = dto[othPath].base[p0];
- p2 = dto[othPath].base[p0 + 1];
- len = FindDistance(p1, p2);
- cnt = (int)floor(len / tdspc + 0.6);
- if (cnt > 0) {
- DIST_T dx = len / cnt, dx2 = dx / 2;
-
- for (; cnt; cnt--) {
- if (px >= dto[othPath].base[p0 + 1].x)
- p0++;
- if (qx >= dto[secPath].base[q0 + 1].x)
- q0++;
- if ((p0 >= pn - 1) || (q0 >= qn - 1)) {
- break;
- }
-
- p1 = dto[othPath].base[p0];
- p2 = dto[othPath].base[p0 + 1];
-
- if ((px >= dto[othPath].baseLast.x)
- || (qx >= dto[secPath].baseLast.x)) {
- break;
- }
-
- dy1 = dto[secPath].base[q0].y + (qx - dto[secPath].base[q0].x) * dto[secPath].dy[q0];
- dy2 = dto[othPath].base[p0].y + (px - dto[othPath].base[p0].x) * dto[othPath].dy[p0];
- dy = dy1 - dy2;
- DIST_T tlen = tdlen + fabs(cosAdj * dy);
- if (tlen > tdmax) {
- break;
- }
-
- q1 = dto[secPath].pts[q0];
- q2 = dto[secPath].pts[q0 + 1];
- a1 = FindAngle(q1, q2);
- DIST_T xlen = qx - dto[secPath].base[q0].x;
- Translate(&pos, q1, a1, xlen);
- secEnd = pos;
-
- q1 = dto[othPath].pts[p0];
- q2 = dto[othPath].pts[p0 + 1];
- a1 = FindAngle(q1, q2);
- xlen = px - dto[othPath].base[p0].x;
- Translate(&pos, q1, a1, xlen);
- othEnd = pos;
-
- Translate(&pos, pos, (a1 - 90.0), dy / 2);
- DrawTie(d, pos, a1, tlen, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
-
- cosAdj = fabs(cos(D2R(angle)));
- px += dx * cosAdj;
- qx += dx * cosAdj;
- }
- }
- else {
- break;
- }
- }
- }
-
-#ifdef DTO_DEBUG
- if (DTO_DEBUG == DTO_CURVED) {
- DrawFillCircle(d, othEnd, rdot, drawColorGreen);
- DrawFillCircle(d, secEnd, rdot, drawColorGreen);
-
- DrawFillCircle(d, dto[othPath].pts[p0], rdot, drawColorBlue);
- DrawFillCircle(d, dto[secPath].pts[q0], rdot, drawColorBlue);
- }
-#endif
-
- // Draw remaining ties, if any
- p1 = othEnd;
- p2 = dto[othPath].ptsLast;
- a0 = FindAngle(p1, p2);
- len = FindDistance(p1, p2);
- if (len >= 2 * tdspc) {
- Translate(&p1, p1, a0, tdspc2);
- DrawStraightTies(d, scaleInx, p1, p2, color);
- }
- else if (len > tdspc2) {
- Translate(&p2, p2, a0, -tdspc2);
- DrawTie(d, p2, a0, td->length, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
- }
-
- q1 = secEnd;
- q2 = dto[secPath].ptsLast;
- a0 = FindAngle(q1, q2);
- len = FindDistance(q1, q2);
- if (len >= 2 * tdspc) {
- Translate(&q1, q1, a0, tdspc2);
- DrawStraightTies(d, scaleInx, q1, q2, color);
- }
- else if (len > tdspc2) {
- Translate(&q2, q2, a0, -tdspc2);
- DrawTie(d, q2, a0, td->length, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
- }
-}
-
-/**
- * Draw Crossing and Slip Turnout Bridge and Ties - Uses the static dto and dtod structures.
- *
- * \param d The drawing object
- * \param scaleInx The layout/track scale index
- * \param color The tie color. If black the color is read from the global tieColor.
- */
-static void DrawXingTurnout(
- drawCmd_p d,
- SCALEINX_T scaleInx,
- BOOL_T omitTies,
- wDrawColor color)
-{
- tieData_p td;
- DIST_T len;
- coOrd pos;
- int cnt;
- ANGLE_T cAngle;
-
- if (color == wDrawColorBlack)
- color = tieColor;
-
- coOrd c1, c2, s1, s2, p1, p2, q1;
- int p0, q0;
- ANGLE_T a0, a1, a2;
- int strPath = dtod.strPath, str2Path = dtod.str2Path;
-
- struct extraDataCompound_t* xx = dtod.xx;
-
- DrawDtoInit();
-
- dto[strPath].angle = FindAngle(dto[strPath].pts[0], dto[strPath].ptsLast);
- dto[str2Path].angle = FindAngle(dto[str2Path].pts[0], dto[str2Path].ptsLast);
-
- int othPath = strPath, secPath = str2Path;
- int toType = dtod.toType;
-
- int i, j;
- switch (toType) {
- case DTO_XING:
- case DTO_XNG9:
- break;
- case DTO_SSLIP:
- for (i = 0; i < dtod.pathCnt; i++) {
- if (dto[i].type == 'L' || dto[i].type == 'R') {
- secPath = i;
- break;
- }
- }
- break;
- case DTO_DSLIP:
- for (i = 0; i < dtod.pathCnt; i++) {
- if (dto[i].type == 'L') {
- othPath = i;
- }
- else if (dto[i].type == 'R') {
- secPath = i;
- }
- }
- break;
- }
-
- if(dtod.bridge) {
- DrawXingBridge(d,othPath,secPath);
- }
- // draw the points
-#ifdef DTO_DEBUG
- if (DTO_DEBUG == DTO_XING) DrawDtoLayout(d, scaleInx);
-#endif
-
- if (omitTies)
- return;
-
- td = GetScaleTieData(scaleInx);
- DIST_T tdlen = td->length, tdmax = 2.0 * tdlen;
- DIST_T tdspc = td->spacing, tdspc2 = tdspc / 2;
-
- // Midpoint
- p1 = dto[strPath].pts[0];
- a1 = dto[strPath].angle;
-
- q1 = dto[str2Path].pts[0];
- a2 = dto[str2Path].angle;
-
- FindIntersection(&pos, p1, a1, q1, a2);
- dtod.midPt = pos;
-
-#ifdef DTO_DEBUG
- if(DTO_DEBUG == DTO_XING)
- {
- double r = td->width / 2;
- DrawFillCircle(d,p1,r,drawColorPurple);
- DrawFillCircle(d,q1,r,drawColorPurple);
- DrawFillCircle(d,dtod.midPt,r,drawColorPurple);
- }
-#endif
-
- // Tie length adjust
- double dAngle = fabs(DifferenceBetweenAngles(a1, a2));
- double magic = 1.0;
-
- // Short circuit the complex code for this simple case
- if (toType == DTO_XNG9) {
- p1 = dto[strPath].pts[0];
- p2 = dto[strPath].ptsLast;
- DrawStraightTies(d, scaleInx, p1, p2, color);
-
- p1 = dto[str2Path].pts[0];
- p2 = dto[str2Path].ptsLast;
-
- // Omit the center ties
- magic = 1 / cos(D2R(90 - dAngle));
- DIST_T tdadj = (tdlen / 2) * magic;
- DIST_T tdadj2 = tdspc2 * magic;
-
- dAngle = (dAngle - 90) / 2;
- Translate(&pos, dtod.midPt, a2, -tdadj - tdadj2);
- DrawTie(d, pos, a2 - dAngle, tdlen, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
-
- Translate(&pos, dtod.midPt, a2, -tdadj - tdspc);
- DrawStraightTies(d, scaleInx, p1, pos, color);
-
- Translate(&pos, dtod.midPt, a2, tdadj + tdadj2);
- DrawTie(d, pos, a2 - dAngle, tdlen, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
-
- Translate(&pos, dtod.midPt, a2, tdadj + tdspc);
- DrawStraightTies(d, scaleInx, pos, p2, color);
- return;
- }
-
- // Straight vector for tie angle
- s1 = MidPtCoOrd(dto[strPath].base[0], dto[str2Path].base[0]);
- s2 = MidPtCoOrd(dto[strPath].baseLast, dto[str2Path].baseLast);
-
- // Rotate base coordinates so that the tie line is aligned with x-axis and origin is at zero
- cAngle = FindAngle(s1, s2);
- for (i = 0; i < DTO_DIM; i++)
- for (j = 0; j < dto[i].n; j++) {
- dto[i].base[j].x -= s1.x;
- dto[i].base[j].y -= s1.y;
- Rotate(&dto[i].base[j], zero, (90.0 - cAngle));
- }
-
- for (i = 0; i < DTO_DIM; i++) {
- for (j = 0; j < dto[i].n - 1; j++) {
- dto[i].dy[j] = (dto[i].base[j + 1].y - dto[i].base[j].y) / (dto[i].base[j + 1].x - dto[i].base[j].x);
- }
- if (dto[i].type == 'S')
- dto[i].angle = FindAngle(dto[i].pts[0], dto[i].ptsLast);
- }
-
- // Tie center line in drawing coordinates
- REORIGIN(c1, s1, xx->angle, xx->orig);
- REORIGIN(c2, s2, xx->angle, xx->orig);
- cAngle = FindAngle(c1, c2);
-
- int pn = dto[othPath].n;
- int qn = dto[secPath].n;
-
- // Tie length adjust
- magic = 1 / cos(0.5 * D2R(dAngle));
- // Extra ties length adjust
- double magic2 = 1.0 / cos(0.5 * D2R(dAngle));
-
- // Draw right half
- len = FindDistance(dtod.midPt, c2);
- cnt = (int)floor(len / td->spacing + 0.5);
- if (cnt <= 0)
- return;
-
- DIST_T dx = len / cnt;
- p0 = q0 = 0;
- DIST_T dx2 = dx / 2;
- DIST_T px = len + dx2;
- DIST_T lenx = 0;
-
- while (p0 < pn && px > dto[othPath].base[p0 + 1].x) p0++;
- while (q0 < qn && px > dto[secPath].base[q0 + 1].x) q0++;
- while (p0 < pn && q0 < qn) {
- if (px > dto[othPath].base[p0 + 1].x) p0++;
- if (px > dto[secPath].base[q0 + 1].x) q0++;
- if (p0 >= pn || q0 >= qn)
- break;
- // Dont use baseLast, as base coOrds have been rotated
- if ((px + dx >= dto[othPath].base[pn - 1].x)
- || (px + dx >= dto[secPath].base[qn - 1].x)) {
- break;
- }
-
- DIST_T dy1 = dto[othPath].base[p0].y + (px - dto[othPath].base[p0].x) * dto[othPath].dy[p0];
- DIST_T dy2 = dto[secPath].base[q0].y + (px - dto[secPath].base[q0].x) * dto[secPath].dy[q0];
- tdlen = (td->length + fabs(dy1) + fabs(dy2)) * magic;
- if(tdlen > tdmax)
- {
- if(dAngle >= 30)
- {
- DIST_T dy = (dy1 + dy2) / 2;
- Translate(&pos,dtod.midPt,cAngle,px - len);
- Translate(&pos,pos,(cAngle - 90.0),dy);
- DrawTie(d,pos,cAngle,tdlen - td->length * magic,td->width,color,tieDrawMode == TIEDRAWMODE_SOLID);
- lenx += dx2 * magic2;
- }
- break;
- }
-
- DIST_T dy = (dy1 + dy2) / 2;
- Translate(&pos, dtod.midPt, cAngle, px - len);
- Translate(&pos, pos, (cAngle - 90.0), dy);
- DrawTie(d, pos, cAngle, tdlen, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
-
- px += dx;
- lenx += dx;
- }
-
- p1 = dtod.midPt;
- p2 = dto[strPath].ptsLast;
- DIST_T lenr = FindDistance(p1, p2) - lenx * magic2;
- a0 = dto[strPath].angle;
- if (lenr > dx) {
- Translate(&pos, p2, a0, -lenr);
- DrawStraightTies(d, scaleInx, pos, p2, color);
- }
- else {
- Translate(&pos, p2, a0, -dx2);
- DrawTie(d, pos, a0, td->length, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
- }
-
- // p1 = dtod.midPt;
- p2 = dto[str2Path].ptsLast;
- lenr = FindDistance(p1, p2) - lenx * magic2;
- a0 = dto[str2Path].angle;
- if (lenr > dx) {
- Translate(&pos, p2, a0, -lenr);
- DrawStraightTies(d, scaleInx, pos, p2, color);
- }
- else {
- Translate(&pos, p2, a0, -dx2);
- DrawTie(d, pos, a0, td->length, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
- }
-
- // Draw left half
- // Change the straight path used
- if (dtod.toType == DTO_SSLIP) {
- othPath = str2Path;
- }
-
- len = FindDistance(c1, dtod.midPt);
- cnt = (int)floor(len / td->spacing + 0.5);
- if (cnt <= 0)
- return;
-
- p0 = q0 = 0;
- tdlen = td->length;
-
- dx = len / cnt;
- dx2 = dx / 2;
- px = len - dx2;
- lenx = 0;
-
- while (p0 < pn && px > dto[othPath].base[p0 + 1].x) p0++;
- while (q0 < qn && px > dto[secPath].base[q0 + 1].x) q0++;
- while (p0 >= 0 && q0 >= 0) {
- if (px < dto[othPath].base[p0].x) p0--;
- if (px < dto[secPath].base[q0].x) q0--;
- if (p0 < 0 || q0 < 0)
- break;
-
- if ((px - dx < dto[othPath].base[0].x)
- || (px - dx < dto[secPath].base[0].x)) {
- break;
- }
-
- DIST_T dy1 = dto[othPath].base[p0].y + (px - dto[othPath].base[p0].x) * dto[othPath].dy[p0];
- DIST_T dy2 = dto[secPath].base[q0].y + (px - dto[secPath].base[q0].x) * dto[secPath].dy[q0];
- tdlen = (td->length + fabs(dy1) + fabs(dy2)) * magic;
- if(tdlen > tdmax)
- {
- if(dAngle >= 30)
- {
- DIST_T dy = (dy1 + dy2) / 2;
- Translate(&pos,dtod.midPt,cAngle,px - len);
- Translate(&pos,pos,(cAngle - 90.0),dy);
- DrawTie(d,pos,cAngle,tdlen - td->length * magic,td->width,color,tieDrawMode == TIEDRAWMODE_SOLID);
- lenx += dx2 * magic2;
- }
- break;
- }
-
- DIST_T dy = (dy1 + dy2) / 2;
- Translate(&pos, dtod.midPt, cAngle, px - len);
- Translate(&pos, pos, (cAngle - 90.0), dy);
- DrawTie(d, pos, cAngle, tdlen, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
-
- px -= dx;
- lenx += dx;
- }
-
- p1 = dto[strPath].pts[0];
- p2 = dtod.midPt;
- a0 = dto[strPath].angle;
- lenr = FindDistance(p1, p2) - lenx * magic2;
- if (lenr > dx) {
- Translate(&pos, p1, a0, lenr);
- DrawStraightTies(d, scaleInx, p1, pos, color);
- }
- else {
- Translate(&pos, p1, a0, dx2);
- DrawTie(d, pos, a0, td->length, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
- }
- p1 = dto[str2Path].pts[0];
- // p2 = dtod.midPt;
- a0 = dto[str2Path].angle;
- lenr = FindDistance(p1, p2) - lenx * magic2;
- if (lenr > dx) {
- Translate(&pos, p1, a0, lenr);
- DrawStraightTies(d, scaleInx, p1, pos, color);
- }
- else {
- Translate(&pos, p1, a0, dx2);
- DrawTie(d, pos, a0, td->length, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
- }
-}
-
-/**
- * Draw Crossover (Two Origin) Turnout Bridge and Ties. Uses the static dto and dtod structures.
- *
- * \param d The drawing object
- * \param scaleInx The layout/track scale index
- * \param color The tie color. If black the color is read from the global tieColor.
- */
-static void DrawCrossTurnout(
- drawCmd_p d,
- SCALEINX_T scaleInx,
- BOOL_T omitTies,
- wDrawColor color)
-{
- tieData_p td;
- DIST_T len, dx;
- coOrd pos;
- int cnt;
- ANGLE_T angle;
-
- if (color == wDrawColorBlack)
- color = tieColor;
-
- struct extraDataCompound_t* xx = dtod.xx;
-
- DrawDtoInit();
-
- // draw the points
-#ifdef DTO_DEBUG
- if (DTO_DEBUG == DTO_LCROSS) DrawDtoLayout(d, scaleInx);
-#endif
-
- int strPath = dtod.strPath, str2Path = dtod.str2Path;
- // Bad assumption
- int othPath = 2, secPath = 2;
- if (dtod.pathCnt == 4) secPath = 3;
-
- dto[strPath].angle = FindAngle(dto[strPath].pts[0], dto[strPath].ptsLast);
- dto[str2Path].angle = FindAngle(dto[str2Path].pts[0], dto[str2Path].ptsLast);
-
- if(dtod.bridge) {
- DrawCrossBridge(d,strPath,str2Path);
- }
- if (omitTies)
- return;
-
- td = GetScaleTieData(scaleInx);
-
- coOrd s1, s2, t1, t2, p1, p2, q1, q2;
- int s0, t0, p0, q0;
-
- int sn = dto[strPath].n;
- int tn = dto[str2Path].n;
- int pn = dto[othPath].n;
- int qn = dto[secPath].n;
-
- s1 = dto[strPath].pts[0];
- s2 = dto[strPath].ptsLast;
- t1 = dto[str2Path].pts[0];
- t2 = dto[str2Path].ptsLast;
- angle = dto[strPath].angle;
-
- p1 = dto[othPath].base[0];
- p2 = dto[othPath].baseLast;
- q1 = dto[secPath].base[0];
- q2 = dto[secPath].baseLast;
-
- td = GetScaleTieData(scaleInx);
- len = FindDistance(s1, s2);
- angle = dto[strPath].angle;
-
- cnt = (int)floor(len / td->spacing + 0.5);
- if (cnt > 0) {
- DIST_T px = 0;
- DIST_T dy, dy1, dy2;
- int cflag = 0;
- dy = dto[str2Path].base[0].y - dto[strPath].base[0].y;
-
- dx = len / cnt;
- s0 = t0 = p0 = q0 = 0;
- DIST_T tdlen = td->length;
- DIST_T dlenx = dx / 2;
-
- DIST_T px1 = len / 2 - dlenx * 5,
- px2 = len / 2 + dlenx * 4;
-
- for (px = dlenx; cnt; cnt--, px += dx) {
- if (px >= dto[strPath].base[s0 + 1].x) s0++;
- if (px >= dto[str2Path].base[t0 + 1].x) t0++;
- if (px >= dto[othPath].base[p0 + 1].x) p0++;
- if (px >= dto[secPath].base[q0 + 1].x) q0++;
- if (s0 >= sn || t0 >= tn || p0 >= pn || q0 >= qn)
- break;
-
- if ((px >= dto[strPath].baseLast.x)
- || (px >= dto[str2Path].baseLast.x)) {
- break;
- }
-
- dy1 = dy2 = 0;
- cflag = 0;
- if (px < px1) {
- switch (dtod.toType) {
- case DTO_DCROSS:
- dy1 = dto[othPath].base[p0].y + (px - dto[othPath].base[p0].x) * dto[othPath].dy[p0];
- dy2 = dy - dto[secPath].base[q0].y - (px - dto[secPath].base[q0].x) * dto[secPath].dy[q0];
- break;
- case DTO_LCROSS:
- dy1 = dto[othPath].base[p0].y + (px - dto[othPath].base[p0].x) * dto[othPath].dy[p0];
- dy2 = 0;
- break;
- case DTO_RCROSS:
- dy1 = 0;
- dy2 = dy - dto[secPath].base[q0].y - (px - dto[secPath].base[q0].x) * dto[secPath].dy[q0];
- break;
- default:
- break;
- }
- }
- else if (px < px2) {
- dy1 = (dto[str2Path].base[s0].y - dto[strPath].base[t0].y);
- dy2 = 0;
- cflag = 1;
- }
- else {
- switch (dtod.toType) {
- case DTO_DCROSS:
- dy1 = dto[secPath].base[q0].y + (px - dto[secPath].base[q0].x) * dto[secPath].dy[q0];
- dy2 = dy - dto[othPath].base[p0].y - (px - dto[othPath].base[p0].x) * dto[othPath].dy[p0];
- break;
- case DTO_LCROSS:
- dy1 = 0;
- dy2 = dy - dto[secPath].base[q0].y - (px - dto[secPath].base[q0].x) * dto[secPath].dy[q0];
- break;
- case DTO_RCROSS:
- dy1 = dto[othPath].base[p0].y + (px - dto[othPath].base[p0].x) * dto[othPath].dy[p0];
- dy2 = 0;
- break;
- default:
- break;
- }
- }
-
- if (fabs(dy1) + fabs(dy2) >= dy) {
- dy1 = (dto[str2Path].base[s0].y - dto[strPath].base[t0].y);
- dy2 = 0;
- cflag = 1;
- }
-
- tdlen = td->length + fabs(dy1);
- Translate(&pos, s1, angle, px);
- Translate(&pos, pos, (angle - 90.0), dy1 / 2);
- DrawTie(d, pos, angle, tdlen, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
-
- if (!cflag) {
- tdlen = td->length + fabs(dy2);
- Translate(&pos, t1, angle, px);
- Translate(&pos, pos, (angle - 90.0), -dy2 / 2);
- DrawTie(d, pos, angle, tdlen, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
- }
- }
- return;
-
- // Draw remaining ties, if any
- // Currently by definition, there won't be any
- /*
- if (px + dx < dto[strPath].baseLast.x) {
- p1 = dto[strPath].pts[p0];
- p2 = dto[strPath].ptsLast;
- angle = FindAngle(p1, p2);
- a0 = FindAngle(dto[strPath].base[p0], dto[strPath].baseLast);
- DIST_T lenr = (dto[strPath].baseLast.x - px + dlenx) / cos(D2R(90.0 - a0));
- Translate(&p1, p2, angle, -lenr);
- DrawStraightTies(d, scaleInx, p1, p2, color);
- }
- else {
- p1 = dto[strPath].pts[pn - 2];
- a0 = FindAngle(p1, p2);
- Translate(&pos, p2, a0, -dx / 2);
- DrawTie(d, pos, a0, td->length, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
- }
-
- if (px + dx < dto[str2Path].baseLast.x) {
- q1 = dto[str2Path].pts[q0];
- q2 = dto[str2Path].ptsLast;
- angle = FindAngle(q1, q2);
- a0 = FindAngle(dto[str2Path].base[q0], dto[str2Path].baseLast);
- DIST_T lenr = (dto[str2Path].baseLast.x - px + dlenx) / cos(D2R(90.0 - a0));
- Translate(&q1, q2, angle, -lenr);
- DrawStraightTies(d, scaleInx, q1, q2, color);
- }
- else {
- q1 = dto[str2Path].pts[qn - 2];
- a0 = FindAngle(q1, q2);
- Translate(&pos, q2, a0, -dx / 2);
- DrawTie(d, pos, a0, td->length, td->width, color, tieDrawMode == TIEDRAWMODE_SOLID);
- }
- */
- }
-}
-
-/**
- * Draw all turnout components: ties, rail, roadbed, etc. The turnout is checked
- * to see if the enhanced methods can be used. If so the ties are drawn and the
- * TB_NOTIES bit is set so that the rails and such are drawn on top of the ties.
- * That bit is restored to its previous state before return.
- *
- * \param trk Pointer to the track object
- * \param d The drawing object
- * \param color The turnout color.
- */
-static void DrawTurnout(
- track_p trk,
- drawCmd_p d,
- wDrawColor color)
-{
- struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
- wIndex_t i;
- long widthOptions = 0;
- SCALEINX_T scaleInx = GetTrkScale(trk);
- DIST_T scale2rail = (d->options & DC_PRINT) ? (twoRailScale * 2 + 1) : twoRailScale;
- BOOL_T omitTies = !DoDrawTies(d, trk) || (d->scale > scale2rail) || ((d->options & DC_SIMPLE) != 0); // || (scaleInx == 0);
-
- widthOptions = DTS_LEFT | DTS_RIGHT;
-
- int noTies = GetTrkNoTies(trk);
- int bridge = GetTrkBridge(trk);
-
- long skip = 0;
- /** @prefs [Preference] NormalTurnoutDraw=1 to skip enhanced drawing methods */
- wPrefGetInteger("Preference", "NormalTurnoutDraw", (long *) &skip, 0);
-
- int pathCnt = (skip == 0 ? GetTurnoutPaths(trk, xx) : 0);
-
- if ( (pathCnt > 1) && (pathCnt <= DTO_DIM)
- && (trk->endCnt <= 4)
- && (xx->special == TOnormal) )
- {
-
- dtod.bridge = bridge;
-
- int strPath = -1;
- GetTurnoutType();
-
- if (dtod.toType != DTO_INVALID) {
-
- switch (dtod.toType)
- {
- case DTO_NORMAL:
- case DTO_THREE:
- case DTO_WYE:
- DrawNormalTurnout(d, scaleInx, omitTies, color);
- break;
- case DTO_CURVED:
- DrawCurvedTurnout(d, scaleInx, omitTies, color);
- break;
- case DTO_XING:
- case DTO_XNG9:
- case DTO_SSLIP:
- case DTO_DSLIP:
- DrawXingTurnout(d, scaleInx, omitTies, color);
- break;
- case DTO_LCROSS:
- case DTO_RCROSS:
- case DTO_DCROSS:
- DrawCrossTurnout(d, scaleInx, omitTies, color);
- break;
- default:
- break;
- }
- SetTrkNoTies(trk, 1);
- ClrTrkBits(trk, TB_BRIDGE);
- }
- }
-
- // Begin standard DrawTurnout code to draw rails or centerline
- DrawSegsO(d, trk, xx->orig, xx->angle, xx->segs, xx->segCnt, GetTrkGauge(trk), color, widthOptions | DTS_NOCENTER); // no curve center for turnouts
-
-
- for (i = 0; i < GetTrkEndPtCnt(trk); i++) {
- DrawEndPt(d, trk, i, color);
- }
- if ((d->options & DC_SIMPLE) == 0 &&
- (labelWhen == 2 || (labelWhen == 1 && (d->options & DC_PRINT))) &&
- labelScale >= d->scale &&
- (GetTrkBits(trk) & TB_HIDEDESC) == 0) {
- DrawCompoundDescription(trk, d, color);
- if (!xx->handlaid)
- LabelLengths(d, trk, color);
- }
- if (roadbedWidth > GetTrkGauge(trk) &&
- (((d->options & DC_PRINT) && d->scale <= (twoRailScale * 2 + 1) / 2.0) ||
- (roadbedOnScreen && d->scale <= twoRailScale)))
- DrawTurnoutRoadbed(d, color, xx->orig, xx->angle, xx->segs, xx->segCnt);
-
- // Restore these settings
- if (noTies == 0) ClrTrkBits(trk, TB_NOTIES);
- if (bridge) SetTrkBits(trk, TB_BRIDGE);
-}
-
-
static BOOL_T ReadTurnout(
- char* line)
+ char* line)
{
- if (!ReadCompound(line + 8, T_TURNOUT))
+ if (!ReadCompound(line + 8, T_TURNOUT)) {
return FALSE;
+ }
return TRUE;
}
static ANGLE_T GetAngleTurnout(
- track_p trk,
- coOrd pos,
- EPINX_T* ep0,
- EPINX_T* ep1)
+ track_p trk,
+ coOrd pos,
+ EPINX_T* ep0,
+ EPINX_T* ep1)
{
- struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
+ struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
wIndex_t segCnt, segInx;
ANGLE_T angle;
- if (ep0 && ep1)
+ if (ep0 && ep1) {
*ep0 = *ep1 = PickEndPoint(pos, trk);
+ }
coOrd pos0 = pos;
double dd = DIST_INF;
int found = -1;
@@ -2721,21 +738,21 @@ static ANGLE_T GetAngleTurnout(
pos.x -= xx->orig.x;
pos.y -= xx->orig.y;
Rotate(&pos, zero, -xx->angle);
- angle = GetAngleSegs(1, &xx->segs[found], &pos, &segInx, NULL, NULL, NULL, NULL);
+ angle = GetAngleSegs(1, &xx->segs[found], &pos, &segInx, NULL, NULL, NULL,
+ NULL);
return NormalizeAngle(angle + xx->angle);
- }
- else return 0.0;
+ } else { return 0.0; }
}
static BOOL_T SplitTurnoutCheckPath(
- wIndex_t segInxEnd,
- PATHPTR_T pp1,
- int dir1,
- PATHPTR_T pp2,
- int dir2,
- trkSeg_p segs,
- coOrd epPos)
+ wIndex_t segInxEnd,
+ PATHPTR_T pp1,
+ int dir1,
+ PATHPTR_T pp2,
+ int dir2,
+ trkSeg_p segs,
+ coOrd epPos)
{
wIndex_t segInx1, segInx2;
EPINX_T segEP;
@@ -2743,18 +760,21 @@ static BOOL_T SplitTurnoutCheckPath(
DIST_T dist;
GetSegInxEP(pp2[0], &segInx2, &segEP);
- if (dir2 < 0) segEP = 1 - segEP;
+ if (dir2 < 0) { segEP = 1 - segEP; }
pos = GetSegEndPt(&segs[segInx2], segEP, FALSE, NULL);
dist = FindDistance(pos, epPos);
- if (dist > connectDistance)
+ if (dist > connectDistance) {
return TRUE;
+ }
while (pp2[0]) {
GetSegInxEP(pp1[0], &segInx1, &segEP);
GetSegInxEP(pp2[0], &segInx2, &segEP);
- if (segInx1 != segInx2)
+ if (segInx1 != segInx2) {
break;
- if (segInxEnd == segInx2)
+ }
+ if (segInxEnd == segInx2) {
return TRUE;
+ }
pp1 += dir1;
pp2 += dir2;
}
@@ -2763,22 +783,25 @@ static BOOL_T SplitTurnoutCheckPath(
static BOOL_T SplitTurnoutCheckEP(
- wIndex_t segInx0,
- coOrd epPos,
- PATHPTR_T pp1,
- int dir1,
- PATHPTR_T pp,
- trkSeg_p segs)
+ wIndex_t segInx0,
+ coOrd epPos,
+ PATHPTR_T pp1,
+ int dir1,
+ PATHPTR_T pp,
+ trkSeg_p segs)
{
while (pp[0]) {
pp += strlen((char*)pp) + 1;
while (pp[0]) {
- if (!SplitTurnoutCheckPath(segInx0, pp1, dir1, pp, 1, segs, epPos))
+ if (!SplitTurnoutCheckPath(segInx0, pp1, dir1, pp, 1, segs, epPos)) {
return FALSE;
- while (pp[0])
+ }
+ while (pp[0]) {
pp++;
- if (!SplitTurnoutCheckPath(segInx0, pp1, dir1, pp - 1, -1, segs, epPos))
+ }
+ if (!SplitTurnoutCheckPath(segInx0, pp1, dir1, pp - 1, -1, segs, epPos)) {
return FALSE;
+ }
pp++;
}
pp++;
@@ -2788,10 +811,11 @@ static BOOL_T SplitTurnoutCheckEP(
EXPORT EPINX_T TurnoutPickEndPt(
- coOrd epPos,
- track_p trk)
+ coOrd epPos,
+ track_p trk)
{
- struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
+ struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
wIndex_t segInx, segInx0;
EPINX_T segEP;
PATHPTR_T cp, cq, pps[2];
@@ -2818,7 +842,7 @@ EXPORT EPINX_T TurnoutPickEndPt(
for (dir = 0; dir < 2; dir++) {
for (cq = cp; cq[dir ? -1 : 1]; cq += (dir ? -1 : 1));
GetSegInxEP(cq[0], &segInx, &segEP);
- if (dir == 0) segEP = 1 - segEP;
+ if (dir == 0) { segEP = 1 - segEP; }
pos = GetSegEndPt(&xx->segs[segInx], segEP, FALSE, NULL);
dist = FindDistance(pos, epPos);
if (eps[dir] < 0 || dist < dists[dir]) {
@@ -2827,12 +851,14 @@ EXPORT EPINX_T TurnoutPickEndPt(
pos.y += xx->orig.y;
Rotate(&pos, xx->orig, xx->angle);
for (ep = 0; ep < epCnt; ep++) {
- if (FindDistance(pos, GetTrkEndPos(trk, ep)) < connectDistance)
+ if (FindDistance(pos, GetTrkEndPos(trk, ep)) < connectDistance) {
break;
+ }
}
if (ep < epCnt) {
- if (eps[dir] >= 0 && eps[dir] != ep)
+ if (eps[dir] >= 0 && eps[dir] != ep) {
unique_eps[dir] = FALSE;
+ }
eps[dir] = ep;
dists[dir] = dist;
pps[dir] = cq;
@@ -2850,23 +876,29 @@ EXPORT EPINX_T TurnoutPickEndPt(
for (dir = 0; dir < 2; dir++) {
if (unique_eps[dir] && eps[dir] >= 0) {
GetSegInxEP(pps[dir][0], &segInx, &segEP);
- if (dir == 0) segEP = 1 - segEP;
+ if (dir == 0) { segEP = 1 - segEP; }
epPos = GetSegEndPt(&xx->segs[segInx], segEP, FALSE, NULL);
- if (!SplitTurnoutCheckEP(segInx0, epPos, pps[dir], dir ? 1 : -1, GetPaths(trk), xx->segs))
+ if (!SplitTurnoutCheckEP(segInx0, epPos, pps[dir], dir ? 1 : -1, GetPaths(trk),
+ xx->segs)) {
unique_eps[dir] = FALSE;
+ }
}
}
if (unique_eps[0] == unique_eps[1]) {
- if (eps[0] >= 0 && eps[1] >= 0)
+ if (eps[0] >= 0 && eps[1] >= 0) {
return (dists[0] < dists[1]) ? eps[0] : eps[1];
+ }
}
- if (unique_eps[0] && eps[0] >= 0)
+ if (unique_eps[0] && eps[0] >= 0) {
return eps[0];
- if (unique_eps[1] && eps[1] >= 0)
+ }
+ if (unique_eps[1] && eps[1] >= 0) {
return eps[1];
- if (eps[0] >= 0 && eps[1] >= 0)
+ }
+ if (eps[0] >= 0 && eps[1] >= 0) {
return (dists[0] < dists[1]) ? eps[0] : eps[1];
+ }
return eps[0] >= 0 ? eps[0] : eps[1];
}
@@ -2876,11 +908,11 @@ static PATHPTR_T splitTurnoutRoot;
static int splitTurnoutDir;
static void SplitTurnoutCheckEndPt(
- PATHPTR_T path,
- int dir,
- trkSeg_p segs,
- coOrd epPos,
- coOrd splitPos)
+ PATHPTR_T path,
+ int dir,
+ trkSeg_p segs,
+ coOrd epPos,
+ coOrd splitPos)
{
PATHPTR_T path0;
wIndex_t segInx;
@@ -2890,19 +922,23 @@ static void SplitTurnoutCheckEndPt(
path0 = path;
GetSegInxEP(path[0], &segInx, &segEP);
- if (dir < 0) segEP = 1 - segEP;
+ if (dir < 0) { segEP = 1 - segEP; }
pos = GetSegEndPt(&segs[segInx], segEP, FALSE, NULL);
dist = FindDistance(pos, epPos);
- LOG(log_splitturnout, 1, (" SPTChkEp P%d DIR:%d SegInx:%d SegEP:%d POS[%0.3f %0.3f] DIST:%0.3f\n", *path, dir, segInx, segEP, pos.x, pos.y, dist));
- if (dist > connectDistance)
+ LOG(log_splitturnout, 1,
+ (" SPTChkEp P%d DIR:%d SegInx:%d SegEP:%d POS[%0.3f %0.3f] DIST:%0.3f\n",
+ *path, dir, segInx, segEP, pos.x, pos.y, dist));
+ if (dist > connectDistance) {
return;
+ }
minDist = trackGauge;
while (path[0]) {
GetSegInxEP(path[0], &segInx, &segEP);
- if (dir < 0) segEP = 1 - segEP;
+ if (dir < 0) { segEP = 1 - segEP; }
pos = splitPos;
dist = DistanceSegs(zero, 0.0, 1, &segs[segInx], &pos, NULL);
- LOG(log_splitturnout, 1, (" - P:%d SegInx:%d SegEP:%d DIST:%0.3f\n", path[0], segInx, segEP, dist));
+ LOG(log_splitturnout, 1, (" - P:%d SegInx:%d SegEP:%d DIST:%0.3f\n", path[0],
+ segInx, segEP, dist));
if (dist < minDist) {
minDist = dist;
splitTurnoutPath = path;
@@ -2914,23 +950,26 @@ static void SplitTurnoutCheckEndPt(
}
EXPORT BOOL_T SplitTurnoutCheck(
- track_p trk,
- coOrd pos,
- EPINX_T ep,
- track_p* leftover,
- EPINX_T* ep0,
- EPINX_T* ep1,
- BOOL_T check,
- coOrd* outPos,
- ANGLE_T* outAngle)
-{
- struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
+ track_p trk,
+ coOrd pos,
+ EPINX_T ep,
+ track_p* leftover,
+ EPINX_T* ep0,
+ EPINX_T* ep1,
+ BOOL_T check,
+ coOrd* outPos,
+ ANGLE_T* outAngle)
+{
+ struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
wIndex_t segInx0, segInx, segCnt;
- EPINX_T segEP, epCnt, ep2 = 0, epN;
+ EPINX_T segEP, ep2 = 0, epN;
+// EPINX_T epCnt;
PATHPTR_T pp, pp1, pp2;
unsigned char c;
char* cp;
- int negCnt, posCnt, pathCnt, dir;
+ int negCnt, posCnt, dir;
+// int pathCnt;
segProcData_t segProcDataSplit;
segProcData_t segProcDataNewTrack;
track_p trk2 = NULL;
@@ -2945,17 +984,19 @@ EXPORT BOOL_T SplitTurnoutCheck(
trkSeg_t newSeg;
if ((MyGetKeyState() & WKEY_SHIFT) == 0) {
- if (!check)
+ if (!check) {
ErrorMessage(MSG_CANT_SPLIT_TRK, _("Turnout"));
+ }
return FALSE;
}
/*
* 1. Find segment on path that ends at 'ep'
*/
- epCnt = GetTrkEndPtCnt(trk);
+// epCnt = GetTrkEndPtCnt(trk);
epPos = GetTrkEndPos(trk, ep);
- for (segCnt = 0; segCnt < xx->segCnt && IsSegTrack(&xx->segs[segCnt]); segCnt++);
+ for (segCnt = 0; segCnt < xx->segCnt
+ && IsSegTrack(&xx->segs[segCnt]); segCnt++);
Rotate(&pos, xx->orig, -xx->angle);
pos.x -= xx->orig.x;
pos.y -= xx->orig.y;
@@ -2964,24 +1005,30 @@ EXPORT BOOL_T SplitTurnoutCheck(
epPos.y -= xx->orig.y;
splitTurnoutPath = NULL;
pp = GetPaths(trk);
- LOG(log_splitturnout, 1, ("SplitTurnoutCheck T%d POS[%0.3f %0.3f] EP:%d CHK:%d EPPOS[%0.3f %0.3f]\n", trk ? trk->index : 0, pos.x, pos.y, ep, check, epPos.x, epPos.y));
+ LOG(log_splitturnout, 1,
+ ("SplitTurnoutCheck T%d POS[%0.3f %0.3f] EP:%d CHK:%d EPPOS[%0.3f %0.3f]\n",
+ trk ? GetTrkIndex( trk ): 0, pos.x, pos.y, ep, check, epPos.x, epPos.y));
while (pp[0]) {
pp += strlen((char*)pp) + 1;
while (pp[0]) {
SplitTurnoutCheckEndPt(pp, 1, xx->segs, epPos, pos);
- if (splitTurnoutPath != NULL)
+ if (splitTurnoutPath != NULL) {
goto foundSeg;
- while (pp[0])
+ }
+ while (pp[0]) {
pp++;
+ }
SplitTurnoutCheckEndPt(pp - 1, -1, xx->segs, epPos, pos);
- if (splitTurnoutPath != NULL)
+ if (splitTurnoutPath != NULL) {
goto foundSeg;
+ }
pp++;
}
pp++;
}
- if (!check)
+ if (!check) {
ErrorMessage(_("splitTurnout: can't find segment"));
+ }
return FALSE;
foundSeg:
@@ -2989,9 +1036,10 @@ foundSeg:
* 2a. Check that all other paths thru found segment are the same
*/
GetSegInxEP(splitTurnoutPath[0], &segInx0, &segEP);
- LOG(log_splitturnout, 1, (" Found Seg: %d SEG:%d EP:%d\n", *splitTurnoutPath, segInx0, segEP));
+ LOG(log_splitturnout, 1, (" Found Seg: %d SEG:%d EP:%d\n", *splitTurnoutPath,
+ segInx0, segEP));
pp = GetPaths(trk);
- pathCnt = 0;
+// pathCnt = 0;
while (pp[0]) {
pp += strlen((char*)pp) + 1;
while (pp[0]) {
@@ -3002,14 +1050,16 @@ foundSeg:
pp2 = pp;
dir = (pp2[0] > 0 ? 1 : -1) * splitTurnoutDir;
while (pp1[0] && pp2[0]) {
- if (splitTurnoutDir * pp1[0] != dir * pp2[0])
+ if (splitTurnoutDir * pp1[0] != dir * pp2[0]) {
break;
+ }
pp1 += splitTurnoutDir;
pp2 += dir;
}
if (pp1[0] != '\0' || pp2[0] != '\0') {
- if (!check)
+ if (!check) {
ErrorMessage(MSG_SPLIT_POS_BTW_MERGEPTS);
+ }
return FALSE;
}
}
@@ -3023,9 +1073,11 @@ foundSeg:
/*
* 2b. Check that all paths from ep pass thru segInx0
*/
- if (!SplitTurnoutCheckEP(segInx0, epPos, splitTurnoutRoot, -splitTurnoutDir, GetPaths(trk), xx->segs)) {
- if (!check)
+ if (!SplitTurnoutCheckEP(segInx0, epPos, splitTurnoutRoot, -splitTurnoutDir,
+ GetPaths(trk), xx->segs)) {
+ if (!check) {
ErrorMessage(MSG_SPLIT_PATH_NOT_UNIQUE);
+ }
return FALSE;
}
@@ -3048,21 +1100,20 @@ foundSeg:
s1 = 1 - s0;
SegProc(SEGPROC_SPLIT, xx->segs + segInx0, &segProcDataSplit);
if (segProcDataSplit.split.length[s1] <= minLength) {
- if (splitTurnoutPath[splitTurnoutDir] == '\0')
+ if (splitTurnoutPath[splitTurnoutDir] == '\0') {
return FALSE;
+ }
segProcDataSplit.split.length[s0] += segProcDataSplit.split.length[s1];
segProcDataSplit.split.length[s1] = 0;
segProcDataSplit.split.newSeg[s0] = xx->segs[segInx0];
epPos = GetSegEndPt(&segProcDataSplit.split.newSeg[s0], s1, FALSE, &epAngle);
- }
- else if (segProcDataSplit.split.length[s0] <= minLength) {
+ } else if (segProcDataSplit.split.length[s0] <= minLength) {
segProcDataSplit.split.length[s1] += segProcDataSplit.split.length[s0];
segProcDataSplit.split.length[s0] = 0;
segProcDataSplit.split.newSeg[s1] = xx->segs[segInx0];
epPos = GetSegEndPt(&segProcDataSplit.split.newSeg[s1], s0, FALSE, &epAngle);
epAngle += 180.0;
- }
- else {
+ } else {
epPos = GetSegEndPt(&segProcDataSplit.split.newSeg[s1], s0, FALSE, &epAngle);
epAngle += 180.0;
}
@@ -3071,11 +1122,13 @@ foundSeg:
* 4. Map the old segments to new
*/
DYNARR_SET(int, segIndexMap_da, xx->segCnt);
- for (segInx = 0; segInx < xx->segCnt; segInx++)
+ for (segInx = 0; segInx < xx->segCnt; segInx++) {
segIndexMap(segInx) = segInx + 1;
+ }
pp = splitTurnoutPath;
- if (segProcDataSplit.split.length[s0] > minLength)
+ if (segProcDataSplit.split.length[s0] > minLength) {
pp += splitTurnoutDir;
+ }
negCnt = 0;
while (*pp) {
GetSegInxEP(*pp, &segInx, &segEP);
@@ -3084,16 +1137,16 @@ foundSeg:
pp += splitTurnoutDir;
}
for (segInx = posCnt = 0; segInx < xx->segCnt; segInx++) {
- if (segIndexMap(segInx) > 0)
+ if (segIndexMap(segInx) > 0) {
segIndexMap(segInx) = ++posCnt;
+ }
}
DYNARR_SET(trkSeg_t, tempSegs_da, posCnt);
for (segInx = posCnt = 0; segInx < xx->segCnt; segInx++) {
if (segIndexMap(segInx) > 0) {
if (segInx == segInx0) {
tempSegs(segIndexMap(segInx) - 1) = segProcDataSplit.split.newSeg[s0];
- }
- else {
+ } else {
tempSegs(segIndexMap(segInx) - 1) = xx->segs[segInx];
}
posCnt++;
@@ -3115,8 +1168,9 @@ foundSeg:
GetSegInxEP(*pp, &segInx, &segEP);
if (segIndexMap(segInx) > 0) {
c = segIndexMap(segInx);
- if (*pp < 0)
+ if (*pp < 0) {
c = -c;
+ }
*pp1++ = c;
}
pp++;
@@ -3144,12 +1198,10 @@ foundSeg:
memcpy(message, xx->title, cp - xx->title + 1);
strcpy(message + (cp - xx->title + 1), "Split ");
strcat(message, cp + 1);
- }
- else {
+ } else {
strcpy(message, xx->title);
}
- }
- else {
+ } else {
sprintf(message, "Split %s", xx->title);
}
@@ -3158,15 +1210,15 @@ foundSeg:
*/
int trks = 0;
path = splitTurnoutPath;
- if (segProcDataSplit.split.length[s1] < minLength)
+ if (segProcDataSplit.split.length[s1] < minLength) {
path += splitTurnoutDir;
+ }
while (path[0]) {
GetSegInxEP(path[0], &segInx, &segEP);
s0 = (path[0] > 0) != (splitTurnoutDir > 0);
if (segInx0 != segInx) {
newSeg = xx->segs[segInx];
- }
- else {
+ } else {
newSeg = segProcDataSplit.split.newSeg[s1];
}
MoveSegs(1, &newSeg, xx->orig);
@@ -3176,8 +1228,7 @@ foundSeg:
*ep0 = segProcDataNewTrack.newTrack.ep[s0];
*leftover = trk2 = segProcDataNewTrack.newTrack.trk;
ep2 = 1 - *ep0;
- }
- else {
+ } else {
epN = segProcDataNewTrack.newTrack.ep[s0];
ConnectTracks(trk2, ep2, segProcDataNewTrack.newTrack.trk, epN);
trk2 = segProcDataNewTrack.newTrack.trk;
@@ -3209,21 +1260,22 @@ foundSeg:
}
static BOOL_T SplitTurnout(
- track_p trk,
- coOrd pos,
- EPINX_T ep,
- track_p* leftover,
- EPINX_T* ep0,
- EPINX_T* ep1)
+ track_p trk,
+ coOrd pos,
+ EPINX_T ep,
+ track_p* leftover,
+ EPINX_T* ep0,
+ EPINX_T* ep1)
{
return SplitTurnoutCheck(trk, pos, ep, leftover, ep0, ep1, FALSE, NULL, NULL);
}
static BOOL_T CheckTraverseTurnout(
- track_p trk,
- coOrd pos)
+ track_p trk,
+ coOrd pos)
{
- struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
+ struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
coOrd pos1;
#ifdef LATER
int inx, foundInx = 0;
@@ -3234,67 +1286,73 @@ static BOOL_T CheckTraverseTurnout(
int segInx;
EPINX_T segEP;
- LOG(log_traverseTurnout, 1, ("CheckTraverseTurnout( T%d, [%0.3f %0.3f])\n", GetTrkIndex(trk), pos.x, pos.y))
- Rotate(&pos, xx->orig, -xx->angle);
+ LOG(log_traverseTurnout, 1, ("CheckTraverseTurnout( T%d, [%0.3f %0.3f])\n",
+ GetTrkIndex(trk), pos.x, pos.y))
+ Rotate(&pos, xx->orig, -xx->angle);
pos.x -= xx->orig.x;
pos.y -= xx->orig.y;
LOG(log_traverseTurnout, 1, ("After rotation = [%0.3f %0.3f])\n", pos.x, pos.y))
#ifdef LATER
- for (inx = 0; inx < xx->segCnt; inx++) {
- switch (xx->segs[inx].type) {
- case SEG_STRTRK:
- case SEG_CRVTRK:
- pos1 = GetSegEndPt(&xx->segs[inx], 0, FALSE, NULL);
- d = FindDistance(pos, pos1);
- if (foundInx == 0 || d < foundD) {
- foundInx = inx + 1;
- foundD = d;
- }
- pos1 = GetSegEndPt(&xx->segs[inx], 1, FALSE, NULL);
- d = FindDistance(pos, pos1);
- if (foundInx == 0 || d < foundD) {
- foundInx = -(inx + 1);
- foundD = d;
- }
- break;
+ for (inx = 0; inx < xx->segCnt; inx++) {
+ switch (xx->segs[inx].type) {
+ case SEG_STRTRK:
+ case SEG_CRVTRK:
+ pos1 = GetSegEndPt(&xx->segs[inx], 0, FALSE, NULL);
+ d = FindDistance(pos, pos1);
+ if (foundInx == 0 || d < foundD) {
+ foundInx = inx + 1;
+ foundD = d;
}
+ pos1 = GetSegEndPt(&xx->segs[inx], 1, FALSE, NULL);
+ d = FindDistance(pos, pos1);
+ if (foundInx == 0 || d < foundD) {
+ foundInx = -(inx + 1);
+ foundD = d;
+ }
+ break;
}
- if (foundInx == 0)
+ }
+ if (foundInx == 0) {
return FALSE;
+ }
#endif
PATHPTR_T pathName = GetCurrPath(trk);
for (pathCurr = pathName + strlen((char*)pathName) + 1;
- pathCurr[0] || pathCurr[1]; pathCurr++) {
- LOG(log_traverseTurnout, 1, ("P[%d] = %d ", pathCurr - GetPaths(trk), pathCurr[0]))
- if (pathCurr[-1] == 0) {
- GetSegInxEP(pathCurr[0], &segInx, &segEP);
- pos1 = GetSegEndPt(&xx->segs[segInx], segEP, FALSE, NULL);
- d = FindDistance(pos, pos1);
- LOG(log_traverseTurnout, 1, ("d=%0.3f\n", d))
- if (d < connectDistance)
- return TRUE;
+ pathCurr[0] || pathCurr[1]; pathCurr++) {
+ LOG(log_traverseTurnout, 1, ("P[%d] = %d ", pathCurr - GetPaths(trk),
+ pathCurr[0]))
+ if (pathCurr[-1] == 0) {
+ GetSegInxEP(pathCurr[0], &segInx, &segEP);
+ pos1 = GetSegEndPt(&xx->segs[segInx], segEP, FALSE, NULL);
+ d = FindDistance(pos, pos1);
+ LOG(log_traverseTurnout, 1, ("d=%0.3f\n", d))
+ if (d < connectDistance) {
+ return TRUE;
}
+ }
if (pathCurr[1] == 0) {
GetSegInxEP(pathCurr[0], &segInx, &segEP);
pos1 = GetSegEndPt(&xx->segs[segInx], 1 - segEP, FALSE, NULL);
d = FindDistance(pos, pos1);
LOG(log_traverseTurnout, 1, ("d=%0.3f\n", d))
- if (d < connectDistance)
- return TRUE;
+ if (d < connectDistance) {
+ return TRUE;
+ }
}
}
LOG(log_traverseTurnout, 1, (" not found\n"))
- return FALSE;
+ return FALSE;
}
static BOOL_T TraverseTurnout(
- traverseTrack_p trvTrk,
- DIST_T* distR)
+ traverseTrack_p trvTrk,
+ DIST_T* distR)
{
track_p trk = trvTrk->trk;
- struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
+ struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
coOrd pos0, pos1, pos2;
DIST_T d, dist;
PATHPTR_T path, pathCurr;
@@ -3310,12 +1368,16 @@ static BOOL_T TraverseTurnout(
pos0.x -= xx->orig.x;
pos0.y -= xx->orig.y;
dist = *distR;
- LOG(log_traverseTurnout, 1, ("TraverseTurnout( T%d, [%0.3f %0.3f] [%0.3f %0.3f], A%0.3f, D%0.3f\n", GetTrkIndex(trk), trvTrk->pos.x, trvTrk->pos.y, pos0.x, pos0.y, trvTrk->angle, *distR))
- pathCurr = 0;
+ LOG(log_traverseTurnout, 1,
+ ("TraverseTurnout( T%d, [%0.3f %0.3f] [%0.3f %0.3f], A%0.3f, D%0.3f\n",
+ GetTrkIndex(trk), trvTrk->pos.x, trvTrk->pos.y, pos0.x, pos0.y, trvTrk->angle,
+ *distR))
+ pathCurr = 0;
path = GetCurrPath(trk);
for (path += strlen((char*)path) + 1; path[0] || path[1]; path++) {
- if (path[0] == 0)
+ if (path[0] == 0) {
continue;
+ }
GetSegInxEP(path[0], &segInx, &segEP);
segPtr = xx->segs + segInx;
segProcData.distance.pos1 = pos0;
@@ -3331,7 +1393,7 @@ static BOOL_T TraverseTurnout(
return FALSE;
}
LOG(log_traverseTurnout, 1, (" PC=%d ", pathCurr[0]))
- GetSegInxEP(pathCurr[0], &segInx, &segEP);
+ GetSegInxEP(pathCurr[0], &segInx, &segEP);
segPtr = xx->segs + segInx;
segProcData.traverse1.pos = pos2;
segProcData.traverse1.angle = -xx->angle + trvTrk->angle;
@@ -3348,45 +1410,50 @@ static BOOL_T TraverseTurnout(
// a curve that is flipped is negative (the end points are reversed) which Traverse1 handles,
// and a path can also be reversed (negative path number) and will have segEP = 1
BOOL_T turnout_backwards = backwards;
- if (segEP) turnout_backwards = !turnout_backwards; //direction modified if path reversed
+ if (segEP) { turnout_backwards = !turnout_backwards; } //direction modified if path reversed
- LOG(log_traverseTurnout, 2, (" SI%d TB%d SP%d B%d SB%d N%d BSI%d D%0.3f\n", segInx, turnout_backwards, segEP, backwards, segs_backwards, neg, BezSegInx, dist))
- while (*pathCurr) {
- //Set up Traverse2
- GetSegInxEP(pathCurr[0], &segInx, &segEP);
- segPtr = xx->segs + segInx;
- segProcData.traverse2.segDir = backwards;
- segProcData.traverse2.dist = dist;
- segProcData.traverse2.BezSegInx = BezSegInx;
- segProcData.traverse2.segs_backwards = segs_backwards;
- SegProc(SEGPROC_TRAVERSE2, segPtr, &segProcData);
- if (segProcData.traverse2.dist <= 0) {
- *distR = 0;
- REORIGIN(trvTrk->pos, segProcData.traverse2.pos, xx->angle, xx->orig);
- trvTrk->angle = NormalizeAngle(xx->angle + segProcData.traverse2.angle);
- LOG(log_traverseTurnout, 2, (" -> [%0.3f %0.3f] A%0.3f D%0.3f\n", trvTrk->pos.x, trvTrk->pos.y, trvTrk->angle, *distR))
- return TRUE;
- }
- dist = segProcData.traverse2.dist; //Remainder after segment
- pathCurr += (turnout_backwards ? -1 : 1); //Use master direction for turnout
- //Redrive Traverse 1 for each segment for Bezier - to pick up backwards elements
- if (pathCurr[0] == '\0') continue; //
- //Set up Traverse1 - copy all of Traverse2 values first
- GetSegInxEP(pathCurr[0], &segInx, &segEP);
- segPtr = xx->segs + segInx;
- ANGLE_T angle = segProcData.traverse2.angle;
- coOrd pos = segProcData.traverse2.pos;
- LOG(log_traverseTurnout, 1, (" Loop2-1 SI%d SP%d [%0.3f %0.3f] A%0.3f D%0.3f\n", segInx, segEP, pos.x, pos.y, angle, dist))
- segProcData.traverse1.pos = pos;
- segProcData.traverse1.angle = angle;
- SegProc(SEGPROC_TRAVERSE1, segPtr, &segProcData);
- // dist += segProcData.traverse1.dist; //Add distance from end to pos (could be zero or whole length if backwards)
- backwards = segProcData.traverse1.backwards;
- segs_backwards = segProcData.traverse1.segs_backwards;
- neg = segProcData.traverse1.negative;
- BezSegInx = segProcData.traverse1.BezSegInx;
- LOG(log_traverseTurnout, 1, (" Loop1-2 B%d SB%d N%d BSI%d D%0.3f\n", backwards, segs_backwards, neg, BezSegInx, dist))
+ LOG(log_traverseTurnout, 2, (" SI%d TB%d SP%d B%d SB%d N%d BSI%d D%0.3f\n",
+ segInx, turnout_backwards, segEP, backwards, segs_backwards, neg, BezSegInx,
+ dist))
+ while (*pathCurr) {
+ //Set up Traverse2
+ GetSegInxEP(pathCurr[0], &segInx, &segEP);
+ segPtr = xx->segs + segInx;
+ segProcData.traverse2.segDir = backwards;
+ segProcData.traverse2.dist = dist;
+ segProcData.traverse2.BezSegInx = BezSegInx;
+ segProcData.traverse2.segs_backwards = segs_backwards;
+ SegProc(SEGPROC_TRAVERSE2, segPtr, &segProcData);
+ if (segProcData.traverse2.dist <= 0) {
+ *distR = 0;
+ REORIGIN(trvTrk->pos, segProcData.traverse2.pos, xx->angle, xx->orig);
+ trvTrk->angle = NormalizeAngle(xx->angle + segProcData.traverse2.angle);
+ LOG(log_traverseTurnout, 2, (" -> [%0.3f %0.3f] A%0.3f D%0.3f\n",
+ trvTrk->pos.x, trvTrk->pos.y, trvTrk->angle, *distR))
+ return TRUE;
}
+ dist = segProcData.traverse2.dist; //Remainder after segment
+ pathCurr += (turnout_backwards ? -1 : 1); //Use master direction for turnout
+ //Redrive Traverse 1 for each segment for Bezier - to pick up backwards elements
+ if (pathCurr[0] == '\0') { continue; } //
+ //Set up Traverse1 - copy all of Traverse2 values first
+ GetSegInxEP(pathCurr[0], &segInx, &segEP);
+ segPtr = xx->segs + segInx;
+ ANGLE_T angle = segProcData.traverse2.angle;
+ coOrd pos = segProcData.traverse2.pos;
+ LOG(log_traverseTurnout, 1, (" Loop2-1 SI%d SP%d [%0.3f %0.3f] A%0.3f D%0.3f\n",
+ segInx, segEP, pos.x, pos.y, angle, dist))
+ segProcData.traverse1.pos = pos;
+ segProcData.traverse1.angle = angle;
+ SegProc(SEGPROC_TRAVERSE1, segPtr, &segProcData);
+ // dist += segProcData.traverse1.dist; //Add distance from end to pos (could be zero or whole length if backwards)
+ backwards = segProcData.traverse1.backwards;
+ segs_backwards = segProcData.traverse1.segs_backwards;
+ neg = segProcData.traverse1.negative;
+ BezSegInx = segProcData.traverse1.BezSegInx;
+ LOG(log_traverseTurnout, 1, (" Loop1-2 B%d SB%d N%d BSI%d D%0.3f\n", backwards,
+ segs_backwards, neg, BezSegInx, dist))
+ }
pathCurr += (turnout_backwards ? 1 : -1);
pos1 = MapPathPos(xx, pathCurr[0], (turnout_backwards ? 0 : 1));
@@ -3404,15 +1471,15 @@ static BOOL_T TraverseTurnout(
if (dist > connectDistance) {
trk = NULL;
trvTrk->pos = pos1;
- }
- else {
+ } else {
trvTrk->pos = GetTrkEndPos(trk, ep);
trvTrk->angle = GetTrkEndAngle(trk, ep);
trk = GetTrkEndTrk(trk, ep);
}
dist = FindDistance(trvTrk->pos, pos1);
- LOG(log_traverseTurnout, 1, (" -> [%0.3f %0.3f] A%0.3f D%0.3f\n", trvTrk->pos.x, trvTrk->pos.y, trvTrk->angle, *distR))
- trvTrk->trk = trk;
+ LOG(log_traverseTurnout, 1, (" -> [%0.3f %0.3f] A%0.3f D%0.3f\n",
+ trvTrk->pos.x, trvTrk->pos.y, trvTrk->angle, *distR))
+ trvTrk->trk = trk;
return TRUE;
}
@@ -3421,7 +1488,7 @@ static STATUS_T ModifyTurnout(track_p trk, wAction_t action, coOrd pos)
{
struct extraDataCompound_t* xx;
static EPINX_T ep;
- static wBool_t curved;
+// static wBool_t curved;
DIST_T d;
xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
@@ -3429,29 +1496,33 @@ static STATUS_T ModifyTurnout(track_p trk, wAction_t action, coOrd pos)
switch (action) {
case C_START:
ep = -1;
- curved = FALSE;
+// curved = FALSE;
return C_CONTINUE;
case C_DOWN:
ep = PickUnconnectedEndPoint(pos, trk);
- if (ep == -1)
+ if (ep == -1) {
return C_ERROR;
+ }
UndrawNewTrack(trk);
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).type = SEG_STRTRK;
- tempSegs(0).width = 0;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).u.l.pos[0] = GetTrkEndPos(trk, 1 - ep);
- tempSegs_da.cnt = 1;
InfoMessage(_("Drag to change track length"));
return C_CONTINUE;
case C_MOVE:
d = FindDistance(tempSegs(0).u.l.pos[0], pos);
- if (d < xx->u.adjustable.minD)
+ if (d < xx->u.adjustable.minD) {
d = xx->u.adjustable.minD;
- else if (d > xx->u.adjustable.maxD)
+ } else if (d > xx->u.adjustable.maxD) {
d = xx->u.adjustable.maxD;
- Translate(&tempSegs(0).u.l.pos[1], tempSegs(0).u.l.pos[0], GetTrkEndAngle(trk, ep), d);
- tempSegs_da.cnt = 1;
- if (action == C_MOVE)
+ }
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ Translate(&tempSegs(0).u.l.pos[1], tempSegs(0).u.l.pos[0], GetTrkEndAngle(trk,
+ ep), d);
+ if (action == C_MOVE) {
InfoMessage(_("Length=%s"), FormatDistance(d));
+ }
return C_CONTINUE;
case C_UP:
d = FindDistance(tempSegs(0).u.l.pos[0], tempSegs(0).u.l.pos[1]);
@@ -3466,7 +1537,8 @@ static STATUS_T ModifyTurnout(track_p trk, wAction_t action, coOrd pos)
}
-static BOOL_T GetParamsTurnout(int inx, track_p trk, coOrd pos, trackParams_t* params)
+static BOOL_T GetParamsTurnout(int inx, track_p trk, coOrd pos,
+ trackParams_t* params)
{
struct extraDataCompound_t* xx;
xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
@@ -3488,8 +1560,9 @@ static BOOL_T GetParamsTurnout(int inx, track_p trk, coOrd pos, trackParams_t* p
path = GetCurrPath(trk);
pathCurr = path;
for (path += strlen((char*)path) + 1; path[0] || path[1]; path++) {
- if (path[0] == 0)
+ if (path[0] == 0) {
continue;
+ }
GetSegInxEP(path[0], &segInx, &segEP);
segPtr = xx->segs + segInx;
segProcData.distance.pos1 = pos;
@@ -3511,12 +1584,14 @@ static BOOL_T GetParamsTurnout(int inx, track_p trk, coOrd pos, trackParams_t* p
pathCurr += segEP ? 1 : -1;
}
params->len = d;
- }
- else {
+ } else {
// Centroid is middle of bounding box
- params->centroid.x = (trk->lo.x + trk->hi.x) / 2.0;
- params->centroid.y = (trk->lo.y + trk->hi.y) / 2.0;
- params->len = FindDistance(params->centroid, pos) * 2; //Times two because it will be halved by track.c
+ coOrd lo, hi;
+ GetBoundingBox( trk, &hi, &lo );
+ params->centroid.x = (lo.x + hi.x) / 2.0;
+ params->centroid.y = (lo.y + hi.y) / 2.0;
+ params->len = FindDistance(params->centroid,
+ pos) * 2; //Times two because it will be halved by track.c
}
return TRUE;
}
@@ -3529,17 +1604,17 @@ static BOOL_T GetParamsTurnout(int inx, track_p trk, coOrd pos, trackParams_t* p
if (params->ep >= 0) {
params->angle = GetTrkEndAngle(trk, params->ep);
params->track_angle = params->angle + params->ep ? 0 : 180;
- }
- else {
+ } else {
params->angle = params->track_angle = 0;
return FALSE;
}
/* Find the path we are closest to */
- PATHPTR_T pathCurr = 0;
+// PATHPTR_T pathCurr = 0;
int segInx, subSegInx;
trkSeg_p segPtr;
DIST_T d = DIST_INF;
- struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
+ struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
/* Get parms from that seg */
wBool_t back, negative;
coOrd segPos = pos;
@@ -3548,15 +1623,15 @@ static BOOL_T GetParamsTurnout(int inx, track_p trk, coOrd pos, trackParams_t* p
segPos.y -= xx->orig.y;
params->track_angle = GetAngleSegs( //Find correct subSegment
- xx->segCnt, xx->segs,
- &segPos, &segInx, &d, &back, &subSegInx, &negative);
- if (segInx == -1) return FALSE;
+ xx->segCnt, xx->segs,
+ &segPos, &segInx, &d, &back, &subSegInx, &negative);
+ if (segInx == -1) { return FALSE; }
segPtr = xx->segs + segInx;
switch (segPtr->type) {
case SEG_BEZTRK:
- if (negative != back) params->track_angle = NormalizeAngle(params->track_angle + 180); //Bezier is in reverse
+ if (negative != back) { params->track_angle = NormalizeAngle(params->track_angle + 180); } //Bezier is in reverse
segPtr = xx->segs + segInx;
- trkSeg_p subSegPtr = (trkSeg_p)segPtr->bezSegs.ptr + subSegInx;
+ trkSeg_p subSegPtr = &DYNARR_N(trkSeg_t,segPtr->bezSegs,subSegInx);
if (subSegPtr->type == SEG_CRVTRK) {
params->type = curveTypeCurve;
params->arcR = fabs(subSegPtr->u.c.radius);
@@ -3587,19 +1662,20 @@ static BOOL_T GetParamsTurnout(int inx, track_p trk, coOrd pos, trackParams_t* p
if (params->ep >= 0) {
params->angle = GetTrkEndAngle(trk, params->ep);
params->track_angle = params->angle + params->ep ? 0 : 180;
- }
- else {
+ } else {
params->angle = params->track_angle = 0;
return FALSE;
}
return TRUE;
}
- if ((inx == PARAMS_1ST_JOIN) || (inx == PARAMS_2ND_JOIN))
+ if ((inx == PARAMS_1ST_JOIN) || (inx == PARAMS_2ND_JOIN)) {
params->ep = PickEndPoint(pos, trk);
- else
+ } else {
params->ep = PickUnconnectedEndPointSilent(pos, trk);
- if (params->ep == -1)
+ }
+ if (params->ep == -1) {
return FALSE;
+ }
params->lineOrig = GetTrkEndPos(trk, params->ep);
params->lineEnd = params->lineOrig;
params->len = 0.0;
@@ -3653,16 +1729,17 @@ static BOOL_T QueryTurnout(track_p trk, int query)
case Q_IS_TURNOUT:
return TRUE;
case Q_CAN_PARALLEL:
- if (GetTrkEndPtCnt(trk) == 2 && fabs(GetTrkEndAngle(trk, 0) - GetTrkEndAngle(trk, 1)) == 180.0)
+ if (GetTrkEndPtCnt(trk) == 2
+ && fabs(GetTrkEndAngle(trk, 0) - GetTrkEndAngle(trk, 1)) == 180.0) {
return TRUE;
- else
+ } else {
return FALSE;
- case Q_CAN_NEXT_POSITION:
- {
- PATHPTR_T path = GetPaths( trk ); // QueryTurnout
- for ( path += strlen((char*)path) + 1; path[0] || path[1]; path++ );
- return ( path[2] != 0 );
}
+ case Q_CAN_NEXT_POSITION: {
+ PATHPTR_T path = GetPaths( trk ); // QueryTurnout
+ for ( path += strlen((char*)path) + 1; path[0] || path[1]; path++ );
+ return ( path[2] != 0 );
+ }
case Q_CORNU_CAN_MODIFY:
return FALSE;
default:
@@ -3671,28 +1748,29 @@ static BOOL_T QueryTurnout(track_p trk, int query)
}
-EXPORT int doDrawTurnoutPosition = 1;
static wIndex_t drawTurnoutPositionWidth = 3;
static void DrawTurnoutPositionIndicator(
- track_p trk,
- wDrawColor color)
+ track_p trk,
+ wDrawColor color)
{
- struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
+ struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
PATHPTR_T path, path1;
coOrd pos0 = zero, pos1;
trkSeg_p seg;
BOOL_T multiPart = FALSE;
// Only 1 path? Don't draw
- if ( ! QueryTurnout( trk, Q_CAN_NEXT_POSITION ) )
+ if ( ! QueryTurnout( trk, Q_CAN_NEXT_POSITION ) ) {
return;
+ }
path = GetCurrPath(trk);
//Is this a multi-part path?
path1 = path;
for (path1 += strlen((char*)path1) + 1; path1[0]; path1++);
- if (path1[1] != 0) multiPart = TRUE;
+ if (path1[1] != 0) { multiPart = TRUE; }
for (path += strlen((char*)path); path[0] || path[1]; path++) {
@@ -3701,52 +1779,55 @@ static void DrawTurnoutPositionIndicator(
pos0 = MapPathPos(xx, path[1], 0);
if ((tempD.scale <= 10) || !multiPart) {
seg = MapPathSeg(xx, path[1]);
- DrawSegsO(&tempD, trk, xx->orig, xx->angle, seg, 1, GetTrkGauge(trk), color, DTS_CENTERONLY);
+ DrawSegsO(&tempD, trk, xx->orig, xx->angle, seg, 1, GetTrkGauge(trk), color,
+ DTS_CENTERONLY);
}
- }
- else if (path[1] == 0) {
+ } else if (path[1] == 0) {
pos1 = MapPathPos(xx, path[0], 1);
- if ((tempD.scale > 10) && multiPart)
+ if ((tempD.scale > 10) && multiPart) {
DrawLine(&tempD, pos0, pos1, drawTurnoutPositionWidth, color);
- else {
+ } else {
seg = MapPathSeg(xx, path[0]);
- DrawSegsO(&tempD, trk, xx->orig, xx->angle, seg, 1, GetTrkGauge(trk), color, DTS_CENTERONLY);
+ DrawSegsO(&tempD, trk, xx->orig, xx->angle, seg, 1, GetTrkGauge(trk), color,
+ DTS_CENTERONLY);
}
- }
- else if ((tempD.scale <= 10) || !multiPart) {
+ } else if ((tempD.scale <= 10) || !multiPart) {
seg = MapPathSeg(xx, path[0]);
- DrawSegsO(&tempD, trk, xx->orig, xx->angle, seg, 1, GetTrkGauge(trk), color, DTS_CENTERONLY);
+ DrawSegsO(&tempD, trk, xx->orig, xx->angle, seg, 1, GetTrkGauge(trk), color,
+ DTS_CENTERONLY);
}
}
}
EXPORT void AdvanceTurnoutPositionIndicator(
- track_p trk,
- coOrd pos,
- coOrd* posR,
- ANGLE_T* angleR)
+ track_p trk,
+ coOrd pos,
+ coOrd* posR,
+ ANGLE_T* angleR)
{
traverseTrack_t trvtrk;
DIST_T dist;
- if (GetTrkType(trk) != T_TURNOUT)
- AbortProg("nextTurnoutPosition");
+ CHECK( GetTrkType(trk) == T_TURNOUT );
SetCurrPathIndex(trk, GetCurrPathIndex(trk) + 1);
InfoMessage(_("Turnout %d Path: %s"), GetTrkIndex(trk), GetCurrPath(trk));
- if (angleR == NULL || posR == NULL)
+ if (angleR == NULL || posR == NULL) {
return;
+ }
trvtrk.trk = trk;
trvtrk.length = 0;
trvtrk.dist = 0;
trvtrk.pos = *posR;
trvtrk.angle = *angleR;
dist = 0;
- if (!TraverseTurnout(&trvtrk, &dist))
+ if (!TraverseTurnout(&trvtrk, &dist)) {
return;
- if (NormalizeAngle(trvtrk.angle - *angleR + 90.0) > 180)
+ }
+ if (NormalizeAngle(trvtrk.angle - *angleR + 90.0) > 180) {
trvtrk.angle = NormalizeAngle(trvtrk.angle + 180.0);
+ }
*posR = trvtrk.pos;
*angleR = trvtrk.angle;
}
@@ -3765,27 +1846,28 @@ EXPORT void AdvanceTurnoutPositionIndicator(
*/
static BOOL_T MakeParallelTurnout(
- track_p trk,
- coOrd pos,
- DIST_T sep,
- DIST_T factor,
- track_p* newTrk,
- coOrd* p0R,
- coOrd* p1R,
- BOOL_T track)
+ track_p trk,
+ coOrd pos,
+ DIST_T sep,
+ DIST_T factor,
+ track_p* newTrk,
+ coOrd* p0R,
+ coOrd* p1R,
+ BOOL_T track)
{
ANGLE_T angle = GetTrkEndAngle(trk, 1);
struct extraDataCompound_t* xx, * yy;
coOrd* endPts;
- trkEndPt_p endPt;
int i;
int option;
DIST_T d;
- if (NormalizeAngle(FindAngle(GetTrkEndPos(trk, 0), pos) - GetTrkEndAngle(trk, 1)) < 180.0)
+ if (NormalizeAngle(FindAngle(GetTrkEndPos(trk, 0), pos) - GetTrkEndAngle(trk,
+ 1)) < 180.0) {
angle += 90;
- else
+ } else {
angle -= 90;
+ }
/*
* get all endpoints of current piece and translate them for the new piece
@@ -3801,19 +1883,18 @@ static BOOL_T MakeParallelTurnout(
if (newTrk) {
if (track) {
- endPt = MyMalloc(GetTrkEndPtCnt(trk) * sizeof(trkEndPt_t));
- endPt[0].pos = endPts[0];
- endPt[0].angle = GetTrkEndAngle(trk, 0);
- endPt[1].pos = endPts[1];
- endPt[1].angle = GetTrkEndAngle(trk, 1);
+ TempEndPtsSet(2);
+ SetEndPt( TempEndPt(0), endPts[0], GetTrkEndAngle(trk,0));
+ SetEndPt( TempEndPt(1), endPts[1], GetTrkEndAngle(trk,1));
yy = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
PATHPTR_T paths = GetPaths(trk); // MakeParallelTurnout
- *newTrk = NewCompound(T_TURNOUT, 0, endPt[0].pos, endPt[0].angle + 90.0,
- yy->title, 2, endPt, paths,
- yy->segCnt, yy->segs);
+ *newTrk = NewCompound(T_TURNOUT, 0,
+ GetEndPtPos(TempEndPt(0)), GetEndPtAngle(TempEndPt(0)) + 90.0,
+ yy->title, 2, TempEndPt(0), paths,
+ yy->segCnt, yy->segs);
xx = GET_EXTRA_DATA(*newTrk, T_TURNOUT, extraDataCompound_t);
xx->customInfo = yy->customInfo;
@@ -3836,31 +1917,27 @@ static BOOL_T MakeParallelTurnout(
SetTrkEndElev(*newTrk, 0, option, d, NULL);
GetTrkEndElev(trk, 1, &option, &d);
SetTrkEndElev(*newTrk, 1, option, d, NULL);
-
- MyFree(endPt);
- }
- else {
+ } else {
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).color = wDrawColorBlack;
- tempSegs(0).width = 0;
- tempSegs_da.cnt = 1;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).type = track ? SEG_STRTRK : SEG_STRLIN;
tempSegs(0).u.l.pos[0] = endPts[0];
tempSegs(0).u.l.pos[1] = endPts[1];
*newTrk = MakeDrawFromSeg(zero, 0.0, &tempSegs(0));
}
- }
- else {
+ } else {
/* draw some temporary track while command is in process */
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).color = wDrawColorBlack;
- tempSegs(0).width = 0;
- tempSegs_da.cnt = 1;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).type = track ? SEG_STRTRK : SEG_STRLIN;
tempSegs(0).u.l.pos[0] = endPts[0];
tempSegs(0).u.l.pos[1] = endPts[1];
}
- if (p0R) *p0R = endPts[0];
- if (p1R) *p1R = endPts[1];
+ if (p0R) { *p0R = endPts[0]; }
+ if (p1R) { *p1R = endPts[1]; }
MyFree(endPts);
return TRUE;
@@ -3868,58 +1945,61 @@ static BOOL_T MakeParallelTurnout(
static wBool_t CompareTurnout(track_cp trk1, track_cp trk2)
{
- struct extraDataCompound_t* xx1 = GET_EXTRA_DATA(trk1, T_TURNOUT, extraDataCompound_t);
- struct extraDataCompound_t* xx2 = GET_EXTRA_DATA(trk2, T_TURNOUT, extraDataCompound_t);
+ struct extraDataCompound_t* xx1 = GET_EXTRA_DATA(trk1, T_TURNOUT,
+ extraDataCompound_t);
+ struct extraDataCompound_t* xx2 = GET_EXTRA_DATA(trk2, T_TURNOUT,
+ extraDataCompound_t);
char* cp = message + strlen(message);
REGRESS_CHECK_POS("Orig", xx1, xx2, orig)
- REGRESS_CHECK_ANGLE("Angle", xx1, xx2, angle)
- REGRESS_CHECK_INT("Handlaid", xx1, xx2, handlaid)
- REGRESS_CHECK_INT("Flipped", xx1, xx2, flipped)
- REGRESS_CHECK_INT("Ungrouped", xx1, xx2, ungrouped)
- REGRESS_CHECK_INT("Split", xx1, xx2, split)
- /* desc orig is not stable
- REGRESS_CHECK_POS( "DescOrig", xx1, xx2, descriptionOrig ) */
- REGRESS_CHECK_POS("DescOff", xx1, xx2, descriptionOff)
- REGRESS_CHECK_POS("DescSize", xx1, xx2, descriptionSize)
- return CompareSegs(xx1->segs, xx1->segCnt, xx1->segs, xx1->segCnt);
+ REGRESS_CHECK_ANGLE("Angle", xx1, xx2, angle)
+ REGRESS_CHECK_INT("Handlaid", xx1, xx2, handlaid)
+ REGRESS_CHECK_INT("Flipped", xx1, xx2, flipped)
+ REGRESS_CHECK_INT("Ungrouped", xx1, xx2, ungrouped)
+ REGRESS_CHECK_INT("Split", xx1, xx2, split)
+ /* desc orig is not stable
+ REGRESS_CHECK_POS( "DescOrig", xx1, xx2, descriptionOrig ) */
+ REGRESS_CHECK_POS("DescOff", xx1, xx2, descriptionOff)
+ REGRESS_CHECK_POS("DescSize", xx1, xx2, descriptionSize)
+ return CompareSegs(xx1->segs, xx1->segCnt, xx1->segs, xx1->segCnt);
}
static trackCmd_t turnoutCmds = {
- "TURNOUT ",
- DrawTurnout,
- DistanceCompound,
- DescribeCompound,
- DeleteCompound,
- WriteCompound,
- ReadTurnout,
- MoveCompound,
- RotateCompound,
- RescaleCompound,
- NULL,
- GetAngleTurnout,
- SplitTurnout,
- TraverseTurnout,
- EnumerateCompound,
- NULL, /*redraw*/
- NULL, /*trim*/
- NULL, /*merge*/
- ModifyTurnout,
- NULL, /* getLength */
- GetParamsTurnout,
- MoveEndPtTurnout,
- QueryTurnout,
- UngroupCompound,
- FlipCompound,
- DrawTurnoutPositionIndicator,
- AdvanceTurnoutPositionIndicator,
- CheckTraverseTurnout,
- MakeParallelTurnout,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- CompareTurnout };
+ "TURNOUT ",
+ DrawTurnout,
+ DistanceCompound,
+ DescribeCompound,
+ DeleteCompound,
+ WriteCompound,
+ ReadTurnout,
+ MoveCompound,
+ RotateCompound,
+ RescaleCompound,
+ NULL,
+ GetAngleTurnout,
+ SplitTurnout,
+ TraverseTurnout,
+ EnumerateCompound,
+ NULL, /*redraw*/
+ NULL, /*trim*/
+ NULL, /*merge*/
+ ModifyTurnout,
+ NULL, /* getLength */
+ GetParamsTurnout,
+ MoveEndPtTurnout,
+ QueryTurnout,
+ UngroupCompound,
+ FlipCompound,
+ DrawTurnoutPositionIndicator,
+ AdvanceTurnoutPositionIndicator,
+ CheckTraverseTurnout,
+ MakeParallelTurnout,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ CompareTurnout
+};
#ifdef TURNOUTCMD
@@ -3942,14 +2022,18 @@ static void RescaleTurnout(void)
DIST_T xscale, yscale;
wWinPix_t ww, hh;
DIST_T w, h;
+ if ( curTurnout == NULL ) {
+ return;
+ }
wDrawGetSize(turnoutD.d, &ww, &hh);
w = ww / turnoutD.dpi;
h = hh / turnoutD.dpi;
- xscale = maxTurnoutDim.x / w;
- yscale = maxTurnoutDim.y / h;
+ xscale = (curTurnout->size.x + trackGauge*2) / w;
+ yscale = (curTurnout->size.y + trackGauge*2) / h;
turnoutD.scale = max(xscale, yscale);
- if (turnoutD.scale == 0.0)
+ if (turnoutD.scale == 0.0) {
turnoutD.scale = 1.0;
+ }
turnoutD.size.x = w * turnoutD.scale;
turnoutD.size.y = h * turnoutD.scale;
return;
@@ -3959,22 +2043,26 @@ static void RescaleTurnout(void)
static void TurnoutChange(long changes)
{
static char* lastScaleName = NULL;
- if (turnoutW == NULL)
+ if (turnoutW == NULL) {
return;
+ }
wListSetIndex(turnoutListL, 0);
if ((!wWinIsVisible(turnoutW)) ||
- (((changes & CHANGE_SCALE) == 0 || lastScaleName == curScaleName) &&
- (changes & CHANGE_PARAMS) == 0))
+ (((changes & CHANGE_SCALE) == 0 || lastScaleName == curScaleName) &&
+ (changes & CHANGE_PARAMS) == 0)) {
return;
+ }
lastScaleName = curScaleName;
//curTurnout = NULL;
curTurnoutEp = 0;
wControlShow((wControl_p)turnoutListL, FALSE);
wListClear(turnoutListL);
maxTurnoutDim.x = maxTurnoutDim.y = 0.0;
- if (turnoutInfo_da.cnt <= 0)
+ if (turnoutInfo_da.cnt <= 0) {
return;
- curTurnout = TurnoutAdd(LABEL_TABBED | LABEL_MANUF | LABEL_PARTNO | LABEL_DESCR, GetLayoutCurScale(), turnoutListL, &maxTurnoutDim, -1);
+ }
+ curTurnout = TurnoutAdd(LABEL_TABBED | LABEL_MANUF | LABEL_PARTNO | LABEL_DESCR,
+ GetLayoutCurScale(), turnoutListL, &maxTurnoutDim, -1);
wListSetIndex(turnoutListL, turnoutInx);
wControlShow((wControl_p)turnoutListL, TRUE);
if (curTurnout == NULL) {
@@ -3993,16 +2081,18 @@ static void TurnoutChange(long changes)
static void RedrawTurnout( wDraw_p d, void * context, wWinPix_t x, wWinPix_t y )
{
RescaleTurnout();
- LOG(log_turnout, 2, ("SelTurnout(%s)\n", (curTurnout ? curTurnout->title : "<NULL>")))
+ LOG(log_turnout, 2, ("SelTurnout(%s)\n",
+ (curTurnout ? curTurnout->title : "<NULL>")))
- wDrawClear(turnoutD.d);
+ wDrawClear(turnoutD.d);
if (curTurnout == NULL) {
return;
}
turnoutD.orig.x = curTurnout->orig.x - trackGauge;
- turnoutD.orig.y = (curTurnout->size.y + curTurnout->orig.y) - turnoutD.size.y + trackGauge;
+ turnoutD.orig.y = (curTurnout->size.y + curTurnout->orig.y) - turnoutD.size.y +
+ trackGauge;
DrawSegs(&turnoutD, zero, 0.0, curTurnout->segs, curTurnout->segCnt,
- trackGauge, wDrawColorBlack);
+ trackGauge, wDrawColorBlack);
curTurnoutEp = 0;
HilightEndPt();
}
@@ -4016,13 +2106,14 @@ static void TurnoutOk(void)
static void TurnoutDlgUpdate(
- paramGroup_p pg,
- int inx,
- void* valueP)
+ paramGroup_p pg,
+ int inx,
+ void* valueP)
{
turnoutInfo_t* to;
- if (inx != I_LIST) return;
- to = (turnoutInfo_t*)wListGetItemContext((wList_p)pg->paramPtr[inx].control, (wIndex_t) * (long*)valueP);
+ if (inx != I_LIST) { return; }
+ to = (turnoutInfo_t*)wListGetItemContext((wList_p)pg->paramPtr[inx].control,
+ (wIndex_t) * (long*)valueP);
AddTurnout();
curTurnout = to;
RedrawTurnout( turnoutD.d, NULL, 0, 0 );
@@ -4031,17 +2122,18 @@ static void TurnoutDlgUpdate(
static wIndex_t TOpickEndPoint(
- coOrd p,
- turnoutInfo_t* to)
+ coOrd p,
+ turnoutInfo_t* to)
{
wIndex_t inx, i;
DIST_T d, dd;
coOrd posI;
- d = FindDistance(p, to->endPt[0].pos);
+ d = FindDistance(p, GetEndPtPos(to->endPt));
+
inx = 0;
for (i = 1; i < to->endCnt; i++) {
- posI = to->endPt[i].pos;
+ posI = GetEndPtPos(EndPtIndex(to->endPt, i));
if ((dd = FindDistance(p, posI)) < d) {
d = dd;
inx = i;
@@ -4054,18 +2146,20 @@ static wIndex_t TOpickEndPoint(
static void HilightEndPt(void)
{
coOrd p, s;
- p.x = curTurnout->endPt[(int)curTurnoutEp].pos.x - trackGauge;
- p.y = curTurnout->endPt[(int)curTurnoutEp].pos.y - trackGauge;
+ trkEndPt_p epp = EndPtIndex( curTurnout->endPt, (EPINX_T)curTurnoutEp );
+ p.x = GetEndPtPos(epp).x - trackGauge;
+ p.y = GetEndPtPos(epp).y - trackGauge;
s.x = s.y = trackGauge * 2.0 /*+ turnoutD.minSize*/;
DrawHilight(&turnoutD, p, s, FALSE);
}
static void SelTurnoutEndPt(
- wIndex_t action,
- coOrd pos)
+ wIndex_t action,
+ coOrd pos)
{
- if (action != C_DOWN) return;
+ if (action != C_DOWN) { return; }
+ if ( curTurnout == NULL ) { return; }
curTurnoutEp = TOpickEndPoint(pos, curTurnout);
HilightEndPt();
@@ -4079,9 +2173,9 @@ static void SelTurnoutEndPt(
*
*/
- /*
- * STATE INFO
- */
+/*
+ * STATE INFO
+ */
static struct {
int state;
coOrd pos;
@@ -4113,13 +2207,13 @@ typedef struct {
* OUT Vector - An array of end points positions and offsets
*/
static void PlaceTurnoutTrial(
- track_p* trkR,
- coOrd* posR,
- ANGLE_T* angle1R,
- ANGLE_T* angle2R,
- int* connCntR,
- DIST_T* maxDR,
- vector_t* v)
+ track_p* trkR,
+ coOrd* posR,
+ ANGLE_T* angle1R,
+ ANGLE_T* angle2R,
+ int* connCntR,
+ DIST_T* maxDR,
+ vector_t* v)
{
coOrd pos = *posR;
ANGLE_T aa;
@@ -4132,65 +2226,68 @@ static void PlaceTurnoutTrial(
DIST_T d, maxD = 0;
coOrd testP = pos;
- if (*trkR && (GetTrkDistance(*trkR, &testP) < trackGauge)) { //Have Track, stick with it unless outside bounds
+ if (*trkR && (GetTrkDistance(*trkR,
+ &testP) < trackGauge)) { //Have Track, stick with it unless outside bounds
trk = *trkR;
pos = testP;
- }
- else *trkR = trk = OnTrack(&pos, FALSE, TRUE);
+ } else { *trkR = trk = OnTrack(&pos, FALSE, TRUE); }
if ((trk) != NULL &&
- !QueryTrack(trk, Q_CANNOT_PLACE_TURNOUT) &&
- (ep0 = PickEndPoint(pos, trk)) >= 0 &&
- !(GetTrkType(trk) == T_TURNOUT &&
- (trk1 = GetTrkEndTrk(trk, ep0)) &&
- GetTrkType(trk1) == T_TURNOUT) &&
- !GetLayerFrozen(GetTrkLayer(trk)) &&
- !GetLayerModule(GetTrkLayer(trk))) {
+ !QueryTrack(trk, Q_CANNOT_PLACE_TURNOUT) &&
+ (ep0 = PickEndPoint(pos, trk)) >= 0 &&
+ !(GetTrkType(trk) == T_TURNOUT &&
+ (trk1 = GetTrkEndTrk(trk, ep0)) &&
+ GetTrkType(trk1) == T_TURNOUT) &&
+ !GetLayerFrozen(GetTrkLayer(trk)) &&
+ !GetLayerModule(GetTrkLayer(trk))) {
epPos = GetTrkEndPos(trk, ep0);
d = FindDistance(pos, epPos);
- if (d <= minLength)
+ if (d <= minLength) {
pos = epPos;
+ }
if (GetTrkType(trk) == T_TURNOUT) { //Only on the end
ep0 = ep1 = PickEndPoint(pos, trk);
angle = GetTrkEndAngle(trk, ep0);
- }
- else {
+ } else {
angle = GetAngleAtPoint(trk, pos, &ep0, &ep1);
- if (ep0 == 1) angle = NormalizeAngle(angle + 180); //Reverse if curve backwards
+ if (ep0 == 1) { angle = NormalizeAngle(angle + 180); } //Reverse if curve backwards
}
angle = NormalizeAngle(angle + 180.0);
- if (NormalizeAngle(FindAngle(pos, *posR) - angle) < 180.0 && ep0 != ep1)
+ if (NormalizeAngle(FindAngle(pos, *posR) - angle) < 180.0 && ep0 != ep1) {
angle = NormalizeAngle(angle + 180);
+ }
*angle2R = angle;
- epPos = curTurnout->endPt[(int)curTurnoutEp].pos;
- *angle1R = angle = NormalizeAngle(angle - curTurnout->endPt[(int)curTurnoutEp].angle);
+ trkEndPt_p epp = EndPtIndex( curTurnout->endPt, (EPINX_T)curTurnoutEp );
+ epPos = GetEndPtPos(epp);
+ *angle1R = angle = NormalizeAngle(angle - GetEndPtAngle(epp) );
Rotate(&epPos, zero, angle);
pos.x -= epPos.x;
pos.y -= epPos.y;
*posR = pos; //The place the Turnout end sits
LOG(log_turnout, 3, ("placeTurnout T%d (%0.3f %0.3f) A%0.3f\n",
- GetTrkIndex(trk), pos.x, pos.y, angle))
- /*InfoMessage( "Turnout(%d): Angle=%0.3f", GetTrkIndex(trk), angle );*/
- track_p ctrk = NULL;
- int ccnt = 0;
- DIST_T clarge = DIST_INF;
+ GetTrkIndex(trk), pos.x, pos.y, angle))
+ /*InfoMessage( "Turnout(%d): Angle=%0.3f", GetTrkIndex(trk), angle );*/
+// track_p ctrk = NULL;
+// int ccnt = 0;
+// DIST_T clarge = DIST_INF;
for (i = 0; i < curTurnout->endCnt; i++) {
- posI = curTurnout->endPt[i].pos;
+ posI = GetEndPtPos(EndPtIndex(curTurnout->endPt,(EPINX_T)i));
epPos = AddCoOrd(pos, posI, angle);
- epAngle = NormalizeAngle(curTurnout->endPt[i].angle + angle);
+ epAngle = NormalizeAngle(GetEndPtAngle(EndPtIndex(curTurnout->endPt,
+ (EPINX_T)i)) + angle);
conPos = epPos;
if ((trk = OnTrack(&conPos, FALSE, TRUE)) != NULL &&
- !GetLayerFrozen(GetTrkLayer(trk)) &&
- !GetLayerModule(GetTrkLayer(trk))) {
+ !GetLayerFrozen(GetTrkLayer(trk)) &&
+ !GetLayerModule(GetTrkLayer(trk))) {
v->off = FindDistance(epPos, conPos);
v->angle = FindAngle(epPos, conPos);
if (GetTrkType(trk) == T_TURNOUT) {
ep0 = ep1 = PickEndPoint(conPos, trk);
aa = GetTrkEndAngle(trk, ep0);
- }
- else {
+ } else {
aa = GetAngleAtPoint(trk, conPos, &ep0, &ep1);
- if (ep0) //Backwards - so reverse
+ if (ep0) { //Backwards - so reverse
aa = NormalizeAngle(aa + 180);
+ }
}
v->ep = i;
aa = fabs(DifferenceBetweenAngles(aa, epAngle));
@@ -4198,29 +2295,29 @@ static void PlaceTurnoutTrial(
int k = 0;
v->trk = trk;
for (int j = 0; j < i; j++) {
- if (vector(j).trk == trk) k++;
+ if (vector(j).trk == trk) { k++; }
}
if (k < 2) { //Already two conns to this track
connCnt++;
- if (v->off > maxD)
+ if (v->off > maxD) {
maxD = v->off;
+ }
v++;
}
- }
- else if ((IsClose(v->off) && (aa < connectAngle || aa>180 - connectAngle) &&
- !(GetTrkType(trk) == T_TURNOUT &&
- (trk1 = GetTrkEndTrk(trk, ep0)) &&
- GetTrkType(trk1) == T_TURNOUT))) {
- if (v->off > maxD)
+ } else if ((IsClose(v->off) && (aa < connectAngle || aa>180 - connectAngle) &&
+ !(GetTrkType(trk) == T_TURNOUT &&
+ (trk1 = GetTrkEndTrk(trk, ep0)) &&
+ GetTrkType(trk1) == T_TURNOUT))) {
+ if (v->off > maxD) {
maxD = v->off;
+ }
connCnt++;
v++;
}
}
}
- }
- else {
+ } else {
trk = NULL;
*trkR = NULL;
}
@@ -4230,7 +2327,7 @@ static void PlaceTurnoutTrial(
static void PlaceTurnout(
- coOrd pos, track_p trk)
+ coOrd pos, track_p trk)
{
coOrd p, pos1, pos2;
track_p trk1, trk2;
@@ -4243,18 +2340,20 @@ static void PlaceTurnout(
pos1 = Dto.place = Dto.pos = pos;
LOG(log_turnout, 1, ("Place Turnout @ %0.3fx%0.3f\n", Dto.pos.x, Dto.pos.y));
- if (curTurnoutEp >= (long)curTurnout->endCnt)
+ if (curTurnoutEp >= (long)curTurnout->endCnt) {
curTurnoutEp = 0;
+ }
DYNARR_SET(vector_t, vector_da, curTurnout->endCnt);
- if (trk) trk1 = trk;
- else trk1 = NULL;
+ if (trk) { trk1 = trk; }
+ else { trk1 = NULL; }
PlaceTurnoutTrial(&trk1, &pos1, &a1, &a2, &connCnt1, &maxD1, &vector(0));
if (connCnt1 > 0) {
Dto.pos = pos1; //First track pos
LOG(log_turnout, 1, (" trial 1 @ %0.3fx%0.3f\n", Dto.pos.x, Dto.pos.y));
Dto.trk = trk1; //Track
Dto.angle = a1; //Angle of track to put down
- if (((MyGetKeyState() & WKEY_SHIFT) == 0) && (connCnt1 > 1) && (maxD1 >= 0.001)) { //Adjust if not Shift
+ if (((MyGetKeyState() & WKEY_SHIFT) == 0) && (connCnt1 > 1)
+ && (maxD1 >= 0.001)) { //Adjust if not Shift
maxV = &vector(0);
for (i = 1; i < connCnt1; i++) { //Ignore first point
V = &vector(i);
@@ -4262,13 +2361,15 @@ static void PlaceTurnout(
maxV = V;
}
}
- a3 = NormalizeAngle(Dto.angle + curTurnout->endPt[maxV->ep].angle);
+ a3 = NormalizeAngle(Dto.angle + GetEndPtAngle(EndPtIndex(curTurnout->endPt,
+ maxV->ep)));
a = NormalizeAngle(a2 - a3);
sina = sin(D2R(a));
if (fabs(sina) > 0.01) {
d = maxV->off / sina;
- if (NormalizeAngle(maxV->angle - a3) > 180)
+ if (NormalizeAngle(maxV->angle - a3) > 180) {
d = -d;
+ }
Translate(&pos2, pos, a2, d);
trk2 = trk1;
PlaceTurnoutTrial(&trk2, &pos2, &a2, &a, &connCnt2, &maxD2, &vector(0));
@@ -4286,13 +2387,12 @@ static void PlaceTurnout(
if (connCnt1 > 0) {
FormatCompoundTitle(listLabels, curTurnout->title);
InfoMessage(_("%d connections, max distance %0.3f (%s)"),
- connCnt1, PutDim(maxD1), message);
- }
- else {
+ connCnt1, PutDim(maxD1), message);
+ } else {
Dto.trk = NULL;
FormatCompoundTitle(listLabels, curTurnout->title);
InfoMessage(_("0 connections (%s)"), message);
- p = curTurnout->endPt[(int)curTurnoutEp].pos;
+ p = GetEndPtPos(EndPtIndex(curTurnout->endPt,(EPINX_T)curTurnoutEp));
Rotate(&p, zero, Dto.angle);
Dto.pos.x = pos.x - p.x;
Dto.pos.y = pos.y - p.y;
@@ -4323,24 +2423,25 @@ static void AddTurnout(void)
BOOL_T noConnections;
coOrd p0, p1;
- if (Dto.state == 0)
+ if (Dto.state == 0) {
return;
-
- if (curTurnout->segCnt < 1 || curTurnout->endCnt < 1) {
- AbortProg("addTurnout: bad cnt");
}
+ CHECK( curTurnout->segCnt >= 1 );
+ CHECK( curTurnout->endCnt >= 1 );
+
UndoStart(_("Place New Turnout"), "addTurnout");
- DYNARR_SET(trkEndPt_t, tempEndPts_da, curTurnout->endCnt);
+ TempEndPtsSet( curTurnout->endCnt);
DYNARR_SET(junk_t, connection_da, curTurnout->endCnt);
DYNARR_SET(junk_t, leftover_da, curTurnout->endCnt);
for (i = 0; i < curTurnout->endCnt; i++) {
coOrd posI;
- posI = curTurnout->endPt[i].pos;
- tempEndPts(i).pos = AddCoOrd(Dto.pos, posI, Dto.angle);
- tempEndPts(i).angle = NormalizeAngle(curTurnout->endPt[i].angle + Dto.angle);
+ trkEndPt_p epp = EndPtIndex( curTurnout->endPt, i);
+ posI = GetEndPtPos( epp );
+ SetEndPt( TempEndPt(i), AddCoOrd(Dto.pos, posI, Dto.angle),
+ NormalizeAngle(GetEndPtAngle(epp) + Dto.angle) );
}
AuditTracks("addTurnout begin");
@@ -4351,56 +2452,53 @@ static void AddTurnout(void)
connection(i).ep = -1;
leftover(i).ep = -1;
/* connect each endPt ... */
- epPos = tempEndPts(i).pos;
- if ((trk = OnTrack(&epPos, FALSE, TRUE)) != NULL && //Adjust epPos onto existing track
- (!GetLayerFrozen(GetTrkLayer(trk))) &&
- (!GetLayerModule(GetTrkLayer(trk))) &&
- (!QueryTrack(trk, Q_CANNOT_PLACE_TURNOUT))) {
+ epPos = GetEndPtPos( TempEndPt(i) );
+ if ((trk = OnTrack(&epPos, FALSE, TRUE)) != NULL
+ && //Adjust epPos onto existing track
+ (!GetLayerFrozen(GetTrkLayer(trk))) &&
+ (!GetLayerModule(GetTrkLayer(trk))) &&
+ (!QueryTrack(trk, Q_CANNOT_PLACE_TURNOUT))) {
LOG(log_turnout, 1, ("ep[%d] on T%d @(%0.3f %0.3f)\n",
- i, GetTrkIndex(trk), epPos.x, epPos.y))
- DIST_T dd = DIST_INF;
+ i, GetTrkIndex(trk), epPos.x, epPos.y))
+ DIST_T dd = DIST_INF;
int nearest = -1;
for (int j = 0; j < curTurnout->endCnt; j++) {
- if (j < i && (connection(j).trk == trk)) {
- nearest = -1;
- goto nextEnd; //Track already chosen in use
- }
- if (dd > FindDistance(epPos, tempEndPts(j).pos)) {
- dd = FindDistance(epPos, tempEndPts(j).pos);
+ DIST_T dd1 = FindDistance( epPos, GetEndPtPos(TempEndPt(j)));
+ if (dd > dd1) {
+ dd = dd1;
nearest = j;
}
}
- if (nearest != i) continue; //Not this one
- d = FindDistance(tempEndPts(i).pos, epPos);
+ if (nearest != i) { continue; } //Not this one
+ d = FindDistance(GetEndPtPos(TempEndPt(i)), epPos);
if (GetTrkType(trk) == T_TURNOUT) {
ep0 = ep1 = PickEndPoint(epPos, trk);
a = GetTrkEndAngle(trk, ep0);
- }
- else {
+ } else {
a = GetAngleAtPoint(trk, epPos, &ep0, &ep1);
}
- aa = fabs(DifferenceBetweenAngles(a, tempEndPts(i).angle));
+ aa = fabs(DifferenceBetweenAngles(a, GetEndPtAngle(TempEndPt(i))));
if ((QueryTrack(trk, Q_IS_CORNU) && (d < trackGauge * 2)) ||
- ((IsClose(d) && (((ep0 != ep1) && (aa <= connectAngle)) || ((aa <= connectAngle) || (aa > 180 - connectAngle))) &&
- !(GetTrkType(trk) == T_TURNOUT &&
- (trk1 = GetTrkEndTrk(trk, ep0)) &&
- GetTrkType(trk1) == T_TURNOUT)))) {
+ ((IsClose(d) && (((ep0 != ep1) && (aa <= connectAngle))
+ || ((aa <= connectAngle) || (aa > 180 - connectAngle))) &&
+ !(GetTrkType(trk) == T_TURNOUT &&
+ (trk1 = GetTrkEndTrk(trk, ep0)) &&
+ GetTrkType(trk1) == T_TURNOUT)))) {
/* ... if they are close enough to a track and line up */
if (aa < 90) {
epx = ep1;
epy = ep0;
- }
- else {
+ } else {
epx = ep0;
epy = ep1;
}
LOG(log_turnout, 1, (" Attach! epx=%d\n", epx))
- if ((epx != epy) &&
- ((d = FindDistance(GetTrkEndPos(trk, epy), epPos)) < minLength) &&
- ((trk1 = GetTrkEndTrk(trk, epy)) != NULL)) {
- epx = GetEndPtConnectedToMe(trk1, trk);
- trk = trk1;
- }
+ if ((epx != epy) &&
+ ((d = FindDistance(GetTrkEndPos(trk, epy), epPos)) < minLength) &&
+ ((trk1 = GetTrkEndTrk(trk, epy)) != NULL)) {
+ epx = GetEndPtConnectedToMe(trk1, trk);
+ trk = trk1;
+ }
/* split the track at the intersection point */
AuditTracks("addTurnout [%d] before splitTrack", i);
if (SplitTrack(trk, epPos, epx, &leftover(i).trk, TRUE)) {
@@ -4415,8 +2513,8 @@ static void AddTurnout(void)
if (connection(i).trk == leftover(j).trk) {
/* yes. Remove the latest leftover piece */
LOG(log_turnout, 1, (" deleting leftover T%d\n",
- GetTrkIndex(leftover(i).trk)))
- AuditTracks("addTurnout [%d] before delete", i);
+ GetTrkIndex(leftover(i).trk)))
+ AuditTracks("addTurnout [%d] before delete", i);
UndrawNewTrack(leftover(i).trk);
DeleteTrack(leftover(i).trk, FALSE);
AuditTracks("addTurnout [%d] before delete", i);
@@ -4431,7 +2529,6 @@ static void AddTurnout(void)
}
}
}
- nextEnd:;
}
AuditTracks("addTurnout after loop");
@@ -4439,7 +2536,9 @@ static void AddTurnout(void)
/*
* copy data */
- newTrk = NewCompound(T_TURNOUT, 0, Dto.pos, Dto.angle, curTurnout->title, tempEndPts_da.cnt, &tempEndPts(0), GetParamPaths(curTurnout), curTurnout->segCnt, curTurnout->segs);
+ newTrk = NewCompound(T_TURNOUT, 0, Dto.pos, Dto.angle, curTurnout->title,
+ TempEndPtsCount(), TempEndPt(0), GetParamPaths(curTurnout), curTurnout->segCnt,
+ curTurnout->segs);
xx = GET_EXTRA_DATA(newTrk, T_TURNOUT, extraDataCompound_t);
xx->customInfo = curTurnout->customInfo;
if (connection((int)curTurnoutEp).trk) {
@@ -4459,7 +2558,7 @@ static void AddTurnout(void)
AuditTracks("addTurnout T%d before connection", GetTrkIndex(newTrk));
for (i = 0; i < curTurnout->endCnt; i++) {
if (connection(i).trk != NULL) {
- if (GetTrkEndTrk(connection(i).trk, connection(i).ep)) continue;
+ if (GetTrkEndTrk(connection(i).trk, connection(i).ep)) { continue; }
p0 = GetTrkEndPos(newTrk, i);
p1 = GetTrkEndPos(connection(i).trk, connection(i).ep);
ANGLE_T a0 = GetTrkEndAngle(newTrk, i);
@@ -4471,16 +2570,16 @@ static void AddTurnout(void)
if (IsClose(d) || fabs(a) <= 90.0) {
trk1 = connection(i).trk;
ep0 = connection(i).ep;
- if (GetTrkEndTrk(trk1, ep0)) continue;
+ if (GetTrkEndTrk(trk1, ep0)) { continue; }
DrawEndPt(&mainD, trk1, ep0, wDrawColorWhite);
trackParams_t params;
GetTrackParams(PARAMS_EXTEND, newTrk, GetTrkEndPos(newTrk, i), &params);
- SetCornuEndPt(trk1, ep0, GetTrkEndPos(newTrk, i), params.arcP, NormalizeAngle(params.angle + 180.0), params.arcR);
+ SetCornuEndPt(trk1, ep0, GetTrkEndPos(newTrk, i), params.arcP,
+ NormalizeAngle(params.angle + 180.0), params.arcR);
ConnectTracks(newTrk, i, trk1, ep0);
DrawEndPt(&mainD, trk1, ep0, wDrawColorBlack);
}
- }
- else if (d < connectDistance && (a <= connectAngle)) {
+ } else if (d < connectDistance && (a <= connectAngle)) {
noConnections = FALSE;
trk1 = connection(i).trk;
ep0 = connection(i).ep;
@@ -4492,17 +2591,20 @@ static void AddTurnout(void)
}
}
}
- if (noConnections)
+ if (noConnections) {
visible = TRUE;
+ }
SetTrkVisible(newTrk, visible);
SetTrkNoTies(newTrk, no_ties);
SetTrkBridge(newTrk, FALSE);
+ SetTrkRoadbed(newTrk, FALSE);
- AuditTracks("addTurnout T%d before dealing with leftovers", GetTrkIndex(newTrk));
+ AuditTracks("addTurnout T%d before dealing with leftovers",
+ GetTrkIndex(newTrk));
/* deal with the leftovers */
for (i = 0; i < curTurnout->endCnt; i++) {
if ((trk = leftover(i).trk) != NULL) {
- ASSERT( !IsTrackDeleted(trk) );
+ CHECK( !IsTrackDeleted(trk) );
/* move endPt beyond the turnout */
/* it it is short then delete it */
coOrd off;
@@ -4524,7 +2626,8 @@ static void AddTurnout(void)
DIST_T dd = DIST_INF;
a = NormalizeAngle(GetTrkEndAngle(lt, le) + 180.0);
for (ep = 0; ep < curTurnout->endCnt; ep++) {
- FindPos(&off, NULL, GetTrkEndPos(newTrk, ep), GetTrkEndPos(lt, le), a, DIST_INF);
+ FindPos(&off, NULL, GetTrkEndPos(newTrk, ep), GetTrkEndPos(lt, le), a,
+ DIST_INF);
pos = GetTrkEndPos(newTrk, ep);
DIST_T d = GetTrkDistance(lt, &pos);
if ((d < dd) && (d < trackGauge / 2)) {
@@ -4542,26 +2645,29 @@ static void AddTurnout(void)
dd = d;
}
}
- if (off.x > maxX)
+ if (off.x > maxX) {
maxX = off.x;
+ }
}
maxX += trackGauge;
pos = Dto.pos;
if (QueryTrack(lt, Q_IS_CORNU)) {
if (nearest_ep >= 0) {
- SetCornuEndPt(lt, le, nearest_pos, nearest_center, nearest_angle, nearest_radius);
+ SetCornuEndPt(lt, le, nearest_pos, nearest_center, nearest_angle,
+ nearest_radius);
ConnectTracks(newTrk, nearest_ep, lt, le);
- }
- else {
+ } else {
UndrawNewTrack(lt);
DeleteTrack(lt, TRUE);
leftover(i).trk = NULL;
}
- }
- else {
- AuditTracks("addTurnout T%d[%d] before trimming L%d[%d]", GetTrkIndex(newTrk), i, GetTrkIndex(lt), le);
- wBool_t rc = TrimTrack(lt, le, maxX, nearest_pos, nearest_angle, nearest_radius, nearest_center);
- AuditTracks("addTurnout T%d[%d] after trimming L%d[%d]", GetTrkIndex(newTrk), i, GetTrkIndex(lt), le);
+ } else {
+ AuditTracks("addTurnout T%d[%d] before trimming L%d[%d]", GetTrkIndex(newTrk),
+ i, GetTrkIndex(lt), le);
+ TrimTrack(lt, le, maxX, nearest_pos, nearest_angle, nearest_radius,
+ nearest_center);
+ AuditTracks("addTurnout T%d[%d] after trimming L%d[%d]", GetTrkIndex(newTrk), i,
+ GetTrkIndex(lt), le);
}
}
@@ -4583,8 +2689,9 @@ static void AddTurnout(void)
static void TurnoutRotate(void* pangle)
{
- if (Dto.state == 0)
+ if (Dto.state == 0) {
return;
+ }
ANGLE_T angle = (ANGLE_T)VP2L(pangle);
angle /= 1000.0;
Dto.pos = cmdMenuPos;
@@ -4596,29 +2703,31 @@ static void TurnoutRotate(void* pangle)
static dynArr_t anchors_da;
#define anchors(N) DYNARR_N(trkSeg_t,anchors_da,N)
-void static CreateArrowAnchor(coOrd pos, ANGLE_T a, DIST_T len) {
+void static CreateArrowAnchor(coOrd pos, ANGLE_T a, DIST_T len)
+{
DYNARR_APPEND(trkSeg_t, anchors_da, 1);
int i = anchors_da.cnt - 1;
anchors(i).type = SEG_STRLIN;
- anchors(i).width = 0;
+ anchors(i).lineWidth = 0;
anchors(i).u.l.pos[0] = pos;
Translate(&anchors(i).u.l.pos[1], pos, NormalizeAngle(a + 135), len);
anchors(i).color = wDrawColorBlue;
DYNARR_APPEND(trkSeg_t, anchors_da, 1);
i = anchors_da.cnt - 1;
anchors(i).type = SEG_STRLIN;
- anchors(i).width = 0;
+ anchors(i).lineWidth = 0;
anchors(i).u.l.pos[0] = pos;
Translate(&anchors(i).u.l.pos[1], pos, NormalizeAngle(a - 135), len);
anchors(i).color = wDrawColorBlue;
}
-void static CreateRotateAnchor(coOrd pos) {
+void static CreateRotateAnchor(coOrd pos)
+{
DIST_T d = tempD.scale * 0.15;
DYNARR_APPEND(trkSeg_t, anchors_da, 1);
int i = anchors_da.cnt - 1;
anchors(i).type = SEG_CRVLIN;
- anchors(i).width = 0.5;
+ anchors(i).lineWidth = 0.5;
anchors(i).u.c.center = pos;
anchors(i).u.c.a0 = 180.0;
anchors(i).u.c.a1 = 360.0;
@@ -4631,11 +2740,14 @@ void static CreateRotateAnchor(coOrd pos) {
}
}
-void static CreateMoveAnchor(coOrd pos) {
+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);
}
/**
@@ -4647,14 +2759,14 @@ void static CreateMoveAnchor(coOrd pos) {
*/
EXPORT STATUS_T CmdTurnoutAction(
- wAction_t action,
- coOrd pos)
+ wAction_t action,
+ coOrd pos)
{
ANGLE_T angle;
static BOOL_T validAngle;
- static ANGLE_T baseAngle;
static coOrd origPos;
#ifdef NEWROTATE
+ static ANGLE_T baseAngle;
static ANGLE_T origAngle;
#endif
@@ -4672,36 +2784,37 @@ EXPORT STATUS_T CmdTurnoutAction(
DYNARR_RESET(trkSeg_t, anchors_da);
if (Dto.state && (MyGetKeyState() & WKEY_CTRL)) {
CreateRotateAnchor(pos);
- }
- else {
+ } else {
CreateMoveAnchor(pos);
}
return C_CONTINUE;
break;
case C_DOWN:
DYNARR_RESET(trkSeg_t, anchors_da);
- if (curTurnout == NULL) return C_CONTINUE;
+ if (curTurnout == NULL) { return C_CONTINUE; }
PlaceTurnout(pos, NULL);
Dto.state = 1;
return C_CONTINUE;
case C_MOVE:
DYNARR_RESET(trkSeg_t, anchors_da);
- if (curTurnout == NULL) return C_CONTINUE;
- if (curTurnoutEp >= (long)curTurnout->endCnt)
+ if (curTurnout == NULL) { return C_CONTINUE; }
+ if (curTurnoutEp >= (long)curTurnout->endCnt) {
curTurnoutEp = 0;
+ }
Dto.state = 1;
PlaceTurnout(pos, Dto.trk);
return C_CONTINUE;
case C_UP:
DYNARR_RESET(trkSeg_t, anchors_da);
- InfoMessage(_("Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter to accept, Esc to Cancel"));
+ InfoMessage(
+ _("Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter to accept, Esc to Cancel"));
return C_CONTINUE;
case C_RDOWN:
DYNARR_RESET(trkSeg_t, anchors_da);
- if (curTurnout == NULL) return C_CONTINUE;
+ if (curTurnout == NULL) { return C_CONTINUE; }
if (Dto.state == 0) {
Dto.pos = pos; // If first, use pos, otherwise use current
LOG(log_turnout, 1, ("RDOWN @ %0.3fx%0.3f\n", Dto.pos.x, Dto.pos.y));
@@ -4712,19 +2825,23 @@ EXPORT STATUS_T CmdTurnoutAction(
#ifdef NEWROTATE
origAngle = Dto.angle;
#else
- Rotate(&origPos, Dto.rot0, -(Dto.angle + curTurnout->endPt[(int)curTurnoutEp].angle));
+ Rotate(&origPos, Dto.rot0,
+ -(Dto.angle + GetEndPtAngle(EndPtIndex(curTurnout->endPt,
+ (EPINX_T)curTurnoutEp))));
#endif
validAngle = FALSE;
return C_CONTINUE;
case C_RMOVE:
DYNARR_RESET(trkSeg_t, anchors_da);
- if (curTurnout == NULL) return C_CONTINUE;
+ if (curTurnout == NULL) { return C_CONTINUE; }
Dto.rot1 = pos;
if (FindDistance(Dto.rot0, Dto.rot1) > 0.1 * mainD.scale) {
angle = FindAngle(Dto.rot0, Dto.rot1);
if (!validAngle) {
+#ifdef NEWROTATE
baseAngle = angle/* - Dto.angle*/;
+#endif
validAngle = TRUE;
}
Dto.pos = origPos;
@@ -4734,36 +2851,41 @@ EXPORT STATUS_T CmdTurnoutAction(
Dto.angle = NormalizeAngle(origAngle + angle);
#else
angle += 180.0;
- Dto.angle = angle - curTurnout->endPt[(int)curTurnoutEp].angle;
+ Dto.angle = angle - GetEndPtAngle(EndPtIndex(curTurnout->endPt,
+ (EPINX_T)curTurnoutEp));
#endif
Rotate(&Dto.pos, Dto.rot0, angle);
LOG(log_turnout, 1, ("RMOVE post @ %0.3fx%0.3f\n", Dto.pos.x, Dto.pos.y));
}
FormatCompoundTitle(listLabels, curTurnout->title);
- InfoMessage(_("Angle = %0.3f (%s)"), PutAngle(NormalizeAngle(Dto.angle + 90.0)), message);
+ InfoMessage(_("Angle = %0.3f (%s)"), PutAngle(NormalizeAngle(Dto.angle + 90.0)),
+ message);
Dto.state = 2;
return C_CONTINUE;
case C_RUP:
DYNARR_RESET(trkSeg_t, anchors_da);
- if (curTurnout == NULL) return C_CONTINUE;
+ if (curTurnout == NULL) { return C_CONTINUE; }
Dto.state = 1;
- InfoMessage(_("Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter to accept, Esc to Cancel"));
+ InfoMessage(
+ _("Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter to accept, Esc to Cancel"));
return C_CONTINUE;
case C_LCLICK:
DYNARR_RESET(trkSeg_t, anchors_da);
- if (curTurnout == NULL) return C_CONTINUE;
+ if (curTurnout == NULL) { return C_CONTINUE; }
if (MyGetKeyState() & WKEY_SHIFT) {
- angle = curTurnout->endPt[(int)curTurnoutEp].angle;
+ angle = GetEndPtAngle( EndPtIndex( curTurnout->endPt, (EPINX_T)curTurnoutEp ) );
curTurnoutEp++;
- if (curTurnoutEp >= (long)curTurnout->endCnt)
+ if (curTurnoutEp >= (long)curTurnout->endCnt) {
curTurnoutEp = 0;
- if (Dto.trk == NULL)
- Dto.angle = NormalizeAngle(Dto.angle + (angle - curTurnout->endPt[(int)curTurnoutEp].angle));
+ }
+ if (Dto.trk == NULL) {
+ Dto.angle = NormalizeAngle(Dto.angle + (angle - GetEndPtAngle( EndPtIndex(
+ curTurnout->endPt, (EPINX_T)curTurnoutEp))));
+ }
PlaceTurnout(Dto.place, Dto.trk);
- }
- else {
+ } else {
CmdTurnoutAction(C_DOWN, pos);
CmdTurnoutAction(C_UP, pos);
}
@@ -4773,14 +2895,16 @@ EXPORT STATUS_T CmdTurnoutAction(
wSetCursor(mainD.d, defaultCursor);
if (Dto.state) {
DrawSegs(&tempD, Dto.pos, Dto.angle,
- curTurnout->segs, curTurnout->segCnt, trackGauge, selectedColor);
+ curTurnout->segs, curTurnout->segCnt, trackGauge, selectedColor);
}
+ DrawSegsDA(&tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack,
+ 0 );
if (anchors_da.cnt > 0) {
- DrawSegs(&tempD, zero, 0.0, &anchors(0), anchors_da.cnt, trackGauge, wDrawColorBlack);
wSetCursor(mainD.d, wCursorNone);
}
- if (Dto.state == 2)
+ if (Dto.state == 2) {
DrawLine(&tempD, Dto.rot0, Dto.rot1, 0, wDrawColorBlue);
+ }
return C_CONTINUE;
case C_CANCEL:
@@ -4791,9 +2915,10 @@ EXPORT STATUS_T CmdTurnoutAction(
return C_TERMINATE;
case C_TEXT:
- if ((action >> 8) != ' ')
+ if ((action >> 8) != ' ') {
return C_CONTINUE;
- /*no break*/
+ }
+ /*no break*/
case C_OK:
DYNARR_RESET(trkSeg_t, anchors_da);
AddTurnout();
@@ -4803,10 +2928,11 @@ EXPORT STATUS_T CmdTurnoutAction(
case C_FINISH:
DYNARR_RESET(trkSeg_t, anchors_da);
- if (Dto.state != 0 && Dto.trk != NULL)
+ if (Dto.state != 0 && Dto.trk != NULL) {
CmdTurnoutAction(C_OK, pos);
- else
+ } else {
CmdTurnoutAction(C_CANCEL, pos);
+ }
return C_TERMINATE;
case C_CMDMENU:
@@ -4822,8 +2948,8 @@ EXPORT STATUS_T CmdTurnoutAction(
#ifdef TURNOUTCMD
static STATUS_T CmdTurnout(
- wAction_t action,
- coOrd pos)
+ wAction_t action,
+ coOrd pos)
{
wIndex_t turnoutIndex;
turnoutInfo_t* turnoutPtr;
@@ -4832,8 +2958,10 @@ static STATUS_T CmdTurnout(
case C_START:
if (turnoutW == NULL) {
- /* turnoutW = ParamCreateDialog( &turnoutPG, MakeWindowTitle("Turnout"), "Ok", , (paramActionCancelProc)Reset, TRUE, NULL, F_RESIZE|F_RECALLSIZE, TurnoutDlgUpdate ); */
- turnoutW = ParamCreateDialog(&turnoutPG, MakeWindowTitle(_("Turnout")), _("Close"), (paramActionOkProc)TurnoutOk, wHide, TRUE, NULL, F_RESIZE | F_RECALLSIZE | PD_F_ALT_CANCELLABEL, TurnoutDlgUpdate);
+ /* turnoutW = ParamCreateDialog( &turnoutPG, MakeWindowTitle("Fixed-Track"), "Ok", , (paramActionCancelProc)Reset, TRUE, NULL, F_RESIZE|F_RECALLSIZE, TurnoutDlgUpdate ); */
+ turnoutW = ParamCreateDialog(&turnoutPG, MakeWindowTitle(_("Add Fixed-Track")),
+ _("Close"), (paramActionOkProc)TurnoutOk, wHide, TRUE, NULL,
+ F_RESIZE | F_RECALLSIZE | PD_F_ALT_CANCELLABEL, TurnoutDlgUpdate);
InitNewTurn(turnoutNewM);
}
/* ParamDialogOkActive( &turnoutPG, FALSE ); */
@@ -4862,26 +2990,32 @@ static STATUS_T CmdTurnout(
case C_DOWN:
case C_RDOWN:
ParamDialogOkActive(&turnoutPG, TRUE);
- if (hideTurnoutWindow)
+ if (hideTurnoutWindow) {
wHide(turnoutW);
- if (((action & 0xFF) == C_DOWN) && (MyGetKeyState() & WKEY_CTRL))
- return CmdTurnoutAction(C_RDOWN, pos); //Convert CTRL into Right
- /*no break*/
+ }
+ if (((action & 0xFF) == C_DOWN) && (MyGetKeyState() & WKEY_CTRL)) {
+ return CmdTurnoutAction(C_RDOWN, pos); //Convert CTRL into Right
+ }
+ /*no break*/
case C_MOVE:
- if (MyGetKeyState() & WKEY_CTRL)
+ if (MyGetKeyState() & WKEY_CTRL) {
return CmdTurnoutAction(C_RMOVE, pos);
- /*no break*/
+ }
+ /*no break*/
case C_RMOVE:
return CmdTurnoutAction(action, pos);
case C_UP:
case C_RUP:
- if (hideTurnoutWindow)
+ if (hideTurnoutWindow) {
wShow(turnoutW);
+ }
- InfoMessage(_("Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter to accept, Esc to Cancel"));
- if (((action & 0xFF) == C_UP) && (MyGetKeyState() & WKEY_CTRL))
+ InfoMessage(
+ _("Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter to accept, Esc to Cancel"));
+ if (((action & 0xFF) == C_UP) && (MyGetKeyState() & WKEY_CTRL)) {
return CmdTurnoutAction(C_RUP, pos);
+ }
return CmdTurnoutAction(action, pos);
case C_LCLICK:
@@ -4919,22 +3053,24 @@ static STATUS_T CmdTurnout(
*/
static char* CmdTurnoutHotBarProc(
- hotBarProc_e op,
- void* data,
- drawCmd_p d,
- coOrd* origP)
+ hotBarProc_e op,
+ void* data,
+ drawCmd_p d,
+ coOrd* origP)
{
turnoutInfo_t* to = (turnoutInfo_t*)data;
switch (op) {
case HB_SELECT: /* new element is selected */
CmdTurnoutAction(C_FINISH, zero); /* finish current operation */
curTurnout = to;
- DoCommandB(I2VP(turnoutHotBarCmdInx)); /* continue with new turnout / structure */
+ DoCommandB(I2VP(
+ turnoutHotBarCmdInx)); /* continue with new turnout / structure */
return NULL;
case HB_LISTTITLE:
FormatCompoundTitle(listLabels, to->title);
- if (message[0] == '\0')
+ if (message[0] == '\0') {
FormatCompoundTitle(listLabels | LABEL_DESCR, to->title);
+ }
return message;
case HB_BARTITLE:
FormatCompoundTitle(hotBarLabels << 1, to->title);
@@ -4956,10 +3092,13 @@ EXPORT void AddHotBarTurnouts(void)
for (inx = 0; inx < turnoutInfo_da.cnt; inx++) {
to = turnoutInfo(inx);
if (!(IsParamValid(to->paramFileIndex) &&
- to->segCnt > 0 &&
- (FIT_NONE != CompatibleScale(FIT_TURNOUT, to->scaleInx, GetLayoutCurScale()))))
+ to->segCnt > 0 &&
+ (FIT_NONE != CompatibleScale(FIT_TURNOUT, to->scaleInx,
+ GetLayoutCurScale())))) {
continue;
- AddHotBarElement(to->contentsLabel, to->size, to->orig, TRUE, FALSE, to->barScale, to, CmdTurnoutHotBarProc);
+ }
+ AddHotBarElement(to->contentsLabel, to->size, to->orig, TRUE, FALSE,
+ to->barScale, to, CmdTurnoutHotBarProc);
}
}
@@ -4972,8 +3111,8 @@ EXPORT void AddHotBarTurnouts(void)
*/
static STATUS_T CmdTurnoutHotBar(
- wAction_t action,
- coOrd pos)
+ wAction_t action,
+ coOrd pos)
{
switch (action & 0xFF) {
@@ -4987,8 +3126,9 @@ static STATUS_T CmdTurnoutHotBar(
FormatCompoundTitle(listLabels | LABEL_DESCR, curTurnout->title);
InfoMessage(_("Place %s and draw into position"), message);
wIndex_t listIndex = FindListItemByContext(turnoutListL, curTurnout);
- if (listIndex >= 0)
+ if (listIndex >= 0) {
turnoutInx = listIndex;
+ }
ParamLoadControls(&turnoutPG);
ParamGroupRecord(&turnoutPG);
return CmdTurnoutAction(action, pos);
@@ -5000,7 +3140,7 @@ static STATUS_T CmdTurnoutHotBar(
if (MyGetKeyState() & WKEY_CTRL) {
return CmdTurnoutAction(C_RDOWN, pos);
}
- /*no break*/
+ /*no break*/
case C_RDOWN:
return CmdTurnoutAction(action, pos);
@@ -5008,7 +3148,7 @@ static STATUS_T CmdTurnoutHotBar(
if (MyGetKeyState() & WKEY_CTRL) {
return CmdTurnoutAction(C_RMOVE, pos);
}
- /*no break*/
+ /*no break*/
case C_RMOVE:
return CmdTurnoutAction(action, pos);
@@ -5016,37 +3156,44 @@ static STATUS_T CmdTurnoutHotBar(
if (MyGetKeyState() & WKEY_CTRL) {
return CmdTurnoutAction(C_RUP, pos);
}
- /*no break*/
+ /*no break*/
case C_RUP:
- InfoMessage(_("Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter to accept, Esc to Cancel"));
+ InfoMessage(
+ _("Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter to accept, Esc to Cancel"));
return CmdTurnoutAction(action, pos);
case C_REDRAW:
return CmdTurnoutAction(action, pos);
case C_TEXT:
- if ((action >> 8) != ' ')
+ if ((action >> 8) != ' ') {
return C_CONTINUE;
- /* no break*/
+ }
+ /* no break*/
case C_OK:
CmdTurnoutAction(action, pos);
return C_CONTINUE;
case C_CANCEL:
HotBarCancel();
- /*no break*/
+ /*no break*/
default:
return CmdTurnoutAction(action, pos);
}
}
#ifdef TURNOUTCMD
-#include "bitmaps/turnout.xpm"
+#include "bitmaps/turnout.xpm3"
EXPORT void InitCmdTurnout(wMenu_p menu)
{
- AddMenuButton(menu, CmdTurnout, "cmdTurnout", _("Predefined Track"), wIconCreatePixMap(turnout_xpm[iconSize]), LEVEL0_50, IC_WANT_MOVE | IC_STICKY | IC_LCLICK | IC_CMDMENU | IC_POPUP2, ACCL_TURNOUT, NULL);
- turnoutHotBarCmdInx = AddMenuButton(menu, CmdTurnoutHotBar, "cmdTurnoutHotBar", "", NULL, LEVEL0_50, IC_WANT_MOVE | IC_STICKY | IC_LCLICK | IC_CMDMENU | IC_POPUP2, 0, NULL);
+ AddMenuButton(menu, CmdTurnout, "cmdNewFixedTrack", _("Fixed-Track"),
+ wIconCreatePixMap(turnout_xpm3[iconSize]), LEVEL0_50,
+ IC_WANT_MOVE | IC_STICKY | IC_LCLICK | IC_CMDMENU | IC_POPUP2, ACCL_TURNOUT,
+ NULL);
+ turnoutHotBarCmdInx = AddMenuButton(menu, CmdTurnoutHotBar, "cmdTurnoutHotBar",
+ "", NULL, LEVEL0_50, IC_WANT_MOVE | IC_STICKY | IC_LCLICK | IC_CMDMENU |
+ IC_POPUP2, 0, NULL);
RegisterChangeNotification(TurnoutChange);
ParamRegister(&turnoutPG);
log_turnout = LogFindIndex("turnout");
@@ -5072,7 +3219,8 @@ EXPORT void InitTrkTurnout(void)
wDrawable_t turnoutD;
-void wListAddValue(wList_p bl, char* val, wIcon_p, void* listData, void* itemData)
+void wListAddValue(wList_p bl, char* val, wIcon_p, void* listData,
+ void* itemData)
{
}
@@ -5095,7 +3243,8 @@ void GetTrkCurveCenter(track_p t, coOrd* pos, DIST_T* radius)
#ifdef NOTRACK_C
-track_p NewTrack(wIndex_t index, TRKTYP_T type, EPINX_T endCnt, SIZE_T extraSize)
+track_p NewTrack(wIndex_t index, TRKTYP_T type, EPINX_T endCnt,
+ SIZE_T extraSize)
{
return NULL;
}
diff --git a/app/bin/cturntbl.c b/app/bin/cturntbl.c
index 2ef49d1..bab9850 100644
--- a/app/bin/cturntbl.c
+++ b/app/bin/cturntbl.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 "cstraigh.h"
@@ -32,12 +32,12 @@ static TRKTYP_T T_TURNTABLE = -1;
typedef struct extraDataTurntable_t {
- extraDataBase_t base;
- coOrd pos;
- DIST_T radius;
- EPINX_T currEp;
- BOOL_T reverse;
- } extraDataTurntable_t;
+ extraDataBase_t base;
+ coOrd pos;
+ DIST_T radius;
+ EPINX_T currEp;
+ BOOL_T reverse;
+} extraDataTurntable_t;
static DIST_T turntableDiameter = 1.0;
@@ -46,18 +46,21 @@ EXPORT ANGLE_T turntableAngle = 0.0;
static paramFloatRange_t r1_100 = { 1.0, 100.0, 100 };
static paramData_t turntablePLs[] = {
#define turntableDiameterPD (turntablePLs[0])
- { PD_FLOAT, &turntableDiameter, "diameter", PDO_DIM|PDO_NOPREF, &r1_100, N_("Diameter") } };
+ { PD_FLOAT, &turntableDiameter, "diameter", PDO_DIM|PDO_NOPREF, &r1_100, N_("Diameter") }
+};
static paramGroup_t turntablePG = { "turntable", 0, turntablePLs, COUNT( turntablePLs ) };
static BOOL_T ValidateTurntablePosition(
- track_p trk )
+ track_p trk )
{
EPINX_T ep, epCnt = GetTrkEndPtCnt(trk);
-
- if ( epCnt <= 0 )
+
+ if ( epCnt <= 0 ) {
return FALSE;
- struct extraDataTurntable_t * xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ }
+ struct extraDataTurntable_t * xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
ep = xx->currEp;
do {
if ( GetTrkEndTrk(trk,ep) ) {
@@ -65,8 +68,9 @@ static BOOL_T ValidateTurntablePosition(
return TRUE;
}
ep++;
- if ( ep >= epCnt )
+ if ( ep >= epCnt ) {
ep = 0;
+ }
} while ( ep != xx->currEp );
return FALSE;
}
@@ -75,7 +79,8 @@ static BOOL_T ValidateTurntablePosition(
static void ComputeTurntableBoundingBox( track_p trk )
{
coOrd hi, lo;
- struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
hi.x = xx->pos.x+xx->radius;
lo.x = xx->pos.x-xx->radius;
hi.y = xx->pos.y+xx->radius;
@@ -99,57 +104,70 @@ static track_p NewTurntable( coOrd p, DIST_T r )
#ifdef LATER
-static void PruneTurntable( track_p trk )
--{
-- EPINX_T inx0;
-- EPINX_T inx1;
-- for (inx0=inx1=0; inx0<trk->endCnt; inx0++) {
-- if (GetTrkEndTrk(trk,inx0) == NULL) {
-- continue;
-- } else {
-- if (inx0 != inx1) {
-- trk->endPt[inx1] = GetTrkEndTrk(trk,inx0);
-- }
-- inx1++;
-- }
-- }
-- trk->endPt = Realloc( trk->endPt, inx1*sizeof trk->endPt[0] );
-- trk->endCnt = inx1;
--}
+ -
+{
+ - EPINX_T inx0;
+ - EPINX_T inx1;
+ - for (inx0=inx1=0; inx0<trk->endCnt; inx0++) {
+ - if (GetTrkEndTrk(trk,inx0) == NULL) {
+ - continue;
+ -
+ } else {
+ - if (inx0 != inx1) {
+ - trk->endPt[inx1] = GetTrkEndTrk(trk,inx0);
+ -
+ }
+ - inx1++;
+ -
+ }
+ -
+ }
+ - trk->endPt = Realloc( trk->endPt, inx1*sizeof trk->endPt[0] );
+ - trk->endCnt = inx1;
+ -
+ }
#endif
static ANGLE_T ConstrainTurntableAngle( track_p trk, coOrd pos )
{
- struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
ANGLE_T a, al, ah, aa, aaa;
EPINX_T inx, cnt;
a = FindAngle( xx->pos, pos );
cnt = GetTrkEndPtCnt(trk);
- if ( cnt == 0 || turntableAngle == 0.0 )
+ if ( cnt == 0 || turntableAngle == 0.0 ) {
return a;
+ }
ah = 360.0;
al = 360.0;
for ( inx = 0; inx<cnt; inx++ ) {
- if (GetTrkEndTrk(trk,inx) == NULL)
+ if (GetTrkEndTrk(trk,inx) == NULL) {
continue;
+ }
aa = NormalizeAngle( GetTrkEndAngle(trk,inx) - a );
- if (aa < al)
+ if (aa < al) {
al = aa;
+ }
aa = 360 - aa;
- if (aa < ah)
+ if (aa < ah) {
ah = aa;
+ }
}
- if (al+ah>361)
+ if (al+ah>361) {
return a;
+ }
if ( (al+ah) < turntableAngle*2.0 ) {
ErrorMessage( MSG_NO_ROOM_BTW_TRKS );
aaa = -1;
- } else if ( al <= turntableAngle)
+ } else if ( al <= turntableAngle) {
aaa = NormalizeAngle( a - ( turntableAngle - al ) );
- else if ( ah <= turntableAngle)
+ } else if ( ah <= turntableAngle) {
aaa = NormalizeAngle( a + ( turntableAngle - ah ) );
- else
+ } else {
aaa = a;
+ }
#ifdef VERBOSE
Lprintf( "CTA( %0.3f ) [ %0.3f .. %0.3f ] = %0.3f\n", a, ah, al, aaa );
#endif
@@ -158,10 +176,11 @@ static ANGLE_T ConstrainTurntableAngle( track_p trk, coOrd pos )
static EPINX_T NewTurntableEndPt( track_p trk, ANGLE_T angle )
{
- struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
EPINX_T ep = -1;
/* Reuse an old empty ep if it exists */
- for (int i =0;i< GetTrkEndPtCnt(trk)-1;i++) {
+ for (int i =0; i< GetTrkEndPtCnt(trk)-1; i++) {
if (GetTrkEndTrk(trk,i) == NULL) {
ep = i;
break;
@@ -179,14 +198,16 @@ static EPINX_T NewTurntableEndPt( track_p trk, ANGLE_T angle )
static void TurntableGetCenter( track_p trk, coOrd * center, DIST_T * radius)
{
- struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
*center = xx->pos;
*radius = xx->radius;
}
static void DrawTurntable( track_p t, drawCmd_p d, wDrawColor color )
{
- struct extraDataTurntable_t *xx = GET_EXTRA_DATA(t, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t *xx = GET_EXTRA_DATA(t, T_TURNTABLE,
+ extraDataTurntable_t);
coOrd p0, p1;
EPINX_T ep;
long widthOptions = DTS_LEFT|DTS_RIGHT;
@@ -200,24 +221,29 @@ static void DrawTurntable( track_p t, drawCmd_p d, wDrawColor color )
p0 = GetTrkEndPos( t, xx->currEp );
Translate( &p1, xx->pos, GetTrkEndAngle(t,xx->currEp)+180.0, xx->radius );
}
- if (color == wDrawColorBlack)
+ if (color == wDrawColorBlack) {
color = normalColor;
- DrawArc( d, xx->pos, xx->radius, 0.0, 360.0, 0, (color == wDrawColorPreviewSelected || color == wDrawColorPreviewUnselected)?3:0, color );
+ }
+ DrawArc( d, xx->pos, xx->radius, 0.0, 360.0, 0,
+ (color == wDrawColorPreviewSelected
+ || color == wDrawColorPreviewUnselected)?3:0, color );
DrawStraightTrack( d, p0, p1, FindAngle(p0,p1), t, color, widthOptions );
for ( ep=0; ep<GetTrkEndPtCnt(t); ep++ ) {
- if (GetTrkEndTrk(t,ep) != NULL )
+ if (GetTrkEndTrk(t,ep) != NULL ) {
DrawEndPt( d, t, ep, color );
+ }
}
if ( ((d->options&DC_SIMPLE)==0) &&
- (labelWhen == 2 || (labelWhen == 1 && (d->options&DC_PRINT))) &&
- labelScale >= d->scale ) {
+ (labelWhen == 2 || (labelWhen == 1 && (d->options&DC_PRINT))) &&
+ labelScale >= d->scale ) {
LabelLengths( d, t, color );
}
}
static DIST_T DistanceTurntable( track_p trk, coOrd * p )
{
- struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
DIST_T d;
ANGLE_T a;
coOrd pos0, pos1;
@@ -227,8 +253,9 @@ static DIST_T DistanceTurntable( track_p trk, coOrd * p )
a = FindAngle( xx->pos, *p );
Translate( p, xx->pos, a, d+xx->radius );
} else {
- if ( !ValidateTurntablePosition(trk) )
+ if ( !ValidateTurntablePosition(trk) ) {
return DIST_INF;
+ }
pos0 = GetTrkEndPos(trk,xx->currEp);
Translate( &pos1, xx->pos, GetTrkEndAngle(trk,xx->currEp)+180.0, xx->radius );
LineDistance( p, pos0, pos1 );
@@ -237,34 +264,39 @@ static DIST_T DistanceTurntable( track_p trk, coOrd * p )
}
static struct {
- coOrd orig;
- DIST_T diameter;
- long epCnt;
- unsigned int layerNumber;
- } trntblData;
+ coOrd orig;
+ DIST_T diameter;
+ long epCnt;
+ unsigned int layerNumber;
+} trntblData;
typedef enum { OR, RA, EC, LY } trntblDesc_e;
static descData_t trntblDesc[] = {
-/*OR*/ { DESC_POS, N_("Origin: X"), &trntblData.orig },
-/*RA*/ { DESC_DIM, N_("Diameter"), &trntblData.diameter },
-/*EC*/ { DESC_LONG, N_("# EndPt"), &trntblData.epCnt },
-/*LY*/ { DESC_LAYER, N_("Layer"), &trntblData.layerNumber },
- { DESC_NULL } };
+ /*OR*/ { DESC_POS, N_("Origin: X"), &trntblData.orig },
+ /*RA*/ { DESC_DIM, N_("Diameter"), &trntblData.diameter },
+ /*EC*/ { DESC_LONG, N_("# EndPt"), &trntblData.epCnt },
+ /*LY*/ { DESC_LAYER, N_("Layer"), &trntblData.layerNumber },
+ { DESC_NULL }
+};
-static void UpdateTurntable( track_p trk, int inx, descData_p descUpd, BOOL_T final )
+static void UpdateTurntable( track_p trk, int inx, descData_p descUpd,
+ BOOL_T final )
{
- struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
- if ( inx == -1 )
+ if ( inx == -1 ) {
return;
+ }
UndrawNewTrack( trk );
switch ( inx ) {
case OR:
xx->pos = trntblData.orig;
break;
case RA:
- if ( trntblData.diameter > 2.0 )
+ if ( trntblData.diameter > 2.0 ) {
xx->radius = trntblData.diameter/2.0;
+ }
break;
case LY:
SetTrkLayer( trk, trntblData.layerNumber );
@@ -279,24 +311,25 @@ static void UpdateTurntable( track_p trk, int inx, descData_p descUpd, BOOL_T fi
static void DescribeTurntable( track_p trk, char * str, CSIZE_T len )
{
- struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
sprintf( str, _("Turntable(%d): Layer=%d Center=[%s %s] Diameter=%s #EP=%d"),
- GetTrkIndex(trk), GetTrkLayer(trk)+1,
- FormatDistance(xx->pos.x), FormatDistance(xx->pos.y),
- FormatDistance(xx->radius * 2.0), GetTrkEndPtCnt(trk) );
+ GetTrkIndex(trk), GetTrkLayer(trk)+1,
+ FormatDistance(xx->pos.x), FormatDistance(xx->pos.y),
+ FormatDistance(xx->radius * 2.0), GetTrkEndPtCnt(trk) );
trntblData.orig = xx->pos;
trntblData.diameter = xx->radius*2.0;
int j=0;
- for (int i=0;i<GetTrkEndPtCnt(trk);i++) {
- if (GetTrkEndTrk(trk,i)) j++; //Only count if track
+ for (int i=0; i<GetTrkEndPtCnt(trk); i++) {
+ if (GetTrkEndTrk(trk,i)) { j++; } //Only count if track
}
trntblData.epCnt = j;
trntblData.layerNumber = GetTrkLayer(trk);
trntblDesc[OR].mode =
- trntblDesc[RA].mode =
- trntblData.epCnt>0?DESC_RO:0;
+ trntblDesc[RA].mode =
+ trntblData.epCnt>0?DESC_RO:0;
trntblDesc[EC].mode = DESC_RO;
trntblDesc[LY].mode = DESC_NOREDRAW;
DoDescribe( _("Turntable"), trk, trntblDesc, UpdateTurntable );
@@ -308,19 +341,20 @@ static void DeleteTurntable( track_p t )
static BOOL_T WriteTurntable( track_p t, FILE * f )
{
- struct extraDataTurntable_t *xx = GET_EXTRA_DATA(t, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t *xx = GET_EXTRA_DATA(t, T_TURNTABLE,
+ extraDataTurntable_t);
EPINX_T ep;
BOOL_T rc = TRUE;
int j = -1, k = 0;
for (ep=0; ep<GetTrkEndPtCnt(t); ep++) {
- if (GetTrkEndTrk(t,ep)) j++;
- if (ep == xx->currEp) k=j; //Write out the curr->Ep reset to real endPts
+ if (GetTrkEndTrk(t,ep)) { j++; }
+ if (ep == xx->currEp) { k=j; } //Write out the curr->Ep reset to real endPts
}
rc &= fprintf(f, "TURNTABLE %d %d 0 0 0 %s %d %0.6f %0.6f 0 %0.6f %d\n",
- GetTrkIndex(t), GetTrkLayer(t), GetTrkScaleName(t), GetTrkVisible(t),
- xx->pos.x, xx->pos.y, xx->radius, k )>0;
+ GetTrkIndex(t), GetTrkLayer(t), GetTrkScaleName(t), GetTrkVisible(t),
+ xx->pos.x, xx->pos.y, xx->radius, k )>0;
for (ep=0; ep<GetTrkEndPtCnt(t); ep++) {
- if (GetTrkEndTrk(t,ep)) rc &= WriteEndPt( f, t, ep ); //Only write if there is a track
+ if (GetTrkEndTrk(t,ep)) { rc &= WriteEndPt( f, t, ep ); } //Only write if there is a track
}
rc &= fprintf(f, "\t%s\n", END_SEGS)>0;
return rc;
@@ -340,14 +374,16 @@ static BOOL_T ReadTurntable( char * line )
int currEp;
if ( !GetArgs( line+10,
- paramVersion<3?"dXsdpYfX":
- paramVersion<9?"dL000sdpYfX":
- paramVersion<10?"dL000sdpffX":
- "dL000sdpffd",
- &index, &layer, scale, &visible, &p, &elev, &r, &currEp ))
+ paramVersion<3?"dXsdpYfX":
+ paramVersion<9?"dL000sdpYfX":
+ paramVersion<10?"dL000sdpffX":
+ "dL000sdpffd",
+ &index, &layer, scale, &visible, &p, &elev, &r, &currEp )) {
return FALSE;
- if ( !ReadSegs() )
+ }
+ if ( !ReadSegs() ) {
return FALSE;
+ }
trk = NewTrack( index, T_TURNTABLE, 0, sizeof *xx );
SetEndPts( trk, 0 );
xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
@@ -361,7 +397,7 @@ static BOOL_T ReadTurntable( char * line )
xx->pos = p;
xx->radius = r;
xx->currEp = currEp;
- if (xx->currEp > GetTrkEndPtCnt(trk)) xx->currEp = 0;
+ if (xx->currEp > GetTrkEndPtCnt(trk)) { xx->currEp = 0; }
xx->reverse = 0;
ComputeTurntableBoundingBox( trk );
return TRUE;
@@ -369,7 +405,8 @@ static BOOL_T ReadTurntable( char * line )
static void MoveTurntable( track_p trk, coOrd orig )
{
- struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
xx->pos.x += orig.x;
xx->pos.y += orig.y;
ComputeTurntableBoundingBox( trk );
@@ -377,56 +414,65 @@ static void MoveTurntable( track_p trk, coOrd orig )
static void RotateTurntable( track_p trk, coOrd orig, ANGLE_T angle )
{
- struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
Rotate( &xx->pos, orig, angle );
ComputeTurntableBoundingBox( trk );
}
static void RescaleTurntable( track_p trk, FLOAT_T ratio )
{
- struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
xx->pos.x *= ratio;
xx->pos.y *= ratio;
}
-static ANGLE_T GetAngleTurntable( track_p trk, coOrd pos, EPINX_T * ep0, EPINX_T * ep1 )
+static ANGLE_T GetAngleTurntable( track_p trk, coOrd pos, EPINX_T * ep0,
+ EPINX_T * ep1 )
{
- struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
if ( programMode == MODE_DESIGN ) {
return FindAngle( xx->pos, pos );
} else {
- if ( !ValidateTurntablePosition( trk ) )
+ if ( !ValidateTurntablePosition( trk ) ) {
return 90.0;
- else
+ } else {
return GetTrkEndAngle( trk, xx->currEp );
+ }
}
}
-static BOOL_T SplitTurntable( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover, EPINX_T *ep0, EPINX_T *ep1 )
+static BOOL_T SplitTurntable( track_p trk, coOrd pos, EPINX_T ep,
+ track_p *leftover, EPINX_T *ep0, EPINX_T *ep1 )
{
- if (leftover)
+ if (leftover) {
*leftover = NULL;
- ErrorMessage( MSG_CANT_SPLIT_TRK, "Turntable" );
+ }
+ ErrorMessage( MSG_CANT_SPLIT_TRK, _("Turntable") );
return FALSE;
}
static BOOL_T FindTurntableEndPt(
- track_p trk,
- ANGLE_T *angleR,
- EPINX_T *epR,
- BOOL_T *reverseR )
+ track_p trk,
+ ANGLE_T *angleR,
+ EPINX_T *epR,
+ BOOL_T *reverseR )
{
- EPINX_T ep, ep0, epCnt=GetTrkEndPtCnt(trk);
+ EPINX_T ep, /*ep0,*/ epCnt=GetTrkEndPtCnt(trk);
ANGLE_T angle=*angleR, angle0, angle1;
- for (ep=0,ep0=-1,epCnt=GetTrkEndPtCnt(trk),angle0=370.0; ep<epCnt; ep++) {
- if ( (GetTrkEndTrk(trk,ep)) == NULL )
+ for (ep=0,/*ep0=-1,*/epCnt=GetTrkEndPtCnt(trk),angle0=370.0; ep<epCnt; ep++) {
+ if ( (GetTrkEndTrk(trk,ep)) == NULL ) {
continue;
+ }
angle1 = GetTrkEndAngle(trk,ep);
angle1 = NormalizeAngle(angle1-angle);
- if ( angle1 > 180.0 )
- angle1 = 360.0-angle1;
+ if ( angle1 > 180.0 ) {
+ angle1 = 360.0-angle1;
+ }
if ( angle1 < angle0 ) {
*epR = ep;
*reverseR = FALSE;
@@ -453,71 +499,81 @@ static BOOL_T FindTurntableEndPt(
static EPINX_T FindTurntableNextEndPt(
- track_p trk,
- coOrd pos) {
-
- EPINX_T ep,epfound=-1,epCnt;
- struct extraDataTurntable_t * xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
- ANGLE_T a = FindAngle(xx->pos,pos);
- ANGLE_T foundangle = 370.0;
- ANGLE_T diff = DifferenceBetweenAngles(GetTrkEndAngle(trk,xx->currEp),a);
- BOOL_T forward = TRUE;
- if (diff>90) {
- forward = FALSE;
- }
- if (diff<0 && diff>-90) {
- forward = FALSE;
- }
- ANGLE_T currdiff, angle1;
- for (ep=0,epCnt=GetTrkEndPtCnt(trk); ep<epCnt; ep++) {
- if ( (GetTrkEndTrk(trk,ep)) == NULL )
- continue;
- angle1 = GetTrkEndAngle(trk,ep);
- if (forward)
- currdiff = NormalizeAngle(angle1-a);
- else
- currdiff = NormalizeAngle(a-angle1);
- if (currdiff<foundangle) {
- foundangle = currdiff;
- epfound = ep;
- }
+ track_p trk,
+ coOrd pos)
+{
+
+ EPINX_T ep,epfound=-1,epCnt;
+ struct extraDataTurntable_t * xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
+ ANGLE_T a = FindAngle(xx->pos,pos);
+ ANGLE_T foundangle = 370.0;
+ ANGLE_T diff = DifferenceBetweenAngles(GetTrkEndAngle(trk,xx->currEp),a);
+ BOOL_T forward = TRUE;
+ if (diff>90) {
+ forward = FALSE;
+ }
+ if (diff<0 && diff>-90) {
+ forward = FALSE;
+ }
+ ANGLE_T currdiff, angle1;
+ for (ep=0,epCnt=GetTrkEndPtCnt(trk); ep<epCnt; ep++) {
+ if ( (GetTrkEndTrk(trk,ep)) == NULL ) {
+ continue;
+ }
+ angle1 = GetTrkEndAngle(trk,ep);
+ if (forward) {
+ currdiff = NormalizeAngle(angle1-a);
+ } else {
+ currdiff = NormalizeAngle(a-angle1);
}
- return epfound;
+ if (currdiff<foundangle) {
+ foundangle = currdiff;
+ epfound = ep;
+ }
+ }
+ return epfound;
}
static BOOL_T CheckTraverseTurntable(
- track_p trk,
- coOrd pos )
+ track_p trk,
+ coOrd pos )
{
- struct extraDataTurntable_t * xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t * xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
ANGLE_T angle;
- if ( !ValidateTurntablePosition( trk ) )
+ if ( !ValidateTurntablePosition( trk ) ) {
return FALSE;
- angle = FindAngle( xx->pos, pos ) - GetTrkEndAngle( trk, xx->currEp )+connectAngle/2.0;
- if ( angle <= connectAngle ||
- ( angle >= 180.0 && angle <= 180+connectAngle ) )
+ }
+ angle = FindAngle( xx->pos, pos ) - GetTrkEndAngle( trk,
+ xx->currEp )+connectAngle/2.0;
+ if ( angle <= connectAngle ||
+ ( angle >= 180.0 && angle <= 180+connectAngle ) ) {
return TRUE;
+ }
return FALSE;
}
static BOOL_T TraverseTurntable(
- traverseTrack_p trvTrk,
- DIST_T * distR )
+ traverseTrack_p trvTrk,
+ DIST_T * distR )
{
track_p trk = trvTrk->trk;
- struct extraDataTurntable_t * xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t * xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
coOrd pos0;
DIST_T dist, dist1;
ANGLE_T angle, angle1;
- EPINX_T ep;
+ EPINX_T ep = 0;
BOOL_T reverse;
- if ( !ValidateTurntablePosition( trk ) )
+ if ( !ValidateTurntablePosition( trk ) ) {
return FALSE;
+ }
dist = FindDistance( xx->pos, trvTrk->pos );
pos0 = GetTrkEndPos( trk, xx->currEp );
angle = FindAngle( pos0, xx->pos );
@@ -529,8 +585,9 @@ static BOOL_T TraverseTurntable(
if ( dist > xx->radius*0.9 ) {
angle = NormalizeAngle( angle-trvTrk->angle );
if ( ( angle < 90.0 && angle > connectAngle ) ||
- ( angle > 270.0 && angle < 360.0-connectAngle ) )
+ ( angle > 270.0 && angle < 360.0-connectAngle ) ) {
return FALSE;
+ }
}
trvTrk->angle = angle1;
angle = FindAngle( trvTrk->pos, xx->pos );
@@ -552,7 +609,8 @@ static BOOL_T TraverseTurntable(
}
Translate( &trvTrk->pos, xx->pos, angle1, xx->radius );
*distR -= dist1;
- if ( FindTurntableEndPt( trk, &angle1, &ep, &reverse ) && angle1 < connectAngle ) {
+ if ( FindTurntableEndPt( trk, &angle1, &ep, &reverse )
+ && angle1 < connectAngle ) {
trk = GetTrkEndTrk(trk,ep);
} else {
trk = NULL;
@@ -575,10 +633,12 @@ static BOOL_T EnumerateTurntable( track_p trk )
xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
DYNARR_APPEND( FLOAT_T, turntables_da, 10 );
turntables(turntables_da.cnt-1) = xx->radius*2.0;
- sprintf( tmp, "Turntable, diameter %s", FormatDistance(turntables(turntables_da.cnt-1)) );
+ sprintf( tmp, "Turntable, diameter %s",
+ FormatDistance(turntables(turntables_da.cnt-1)) );
inx = strlen( tmp );
- if ( inx > enumerateMaxDescLen )
+ if ( inx > enumerateMaxDescLen ) {
enumerateMaxDescLen = (int)inx;
+ }
} else {
for (inx=0; inx<turntables_da.cnt; inx++) {
content = TRUE;
@@ -606,7 +666,7 @@ static STATUS_T ModifyTurntable( track_p trk, wAction_t action, coOrd pos )
case C_DOWN:
TurntableGetCenter( trk, &ttCenter, &ttRadius );
tempSegs(0).type = SEG_STRTRK;
- tempSegs(0).width = 0;
+ tempSegs(0).lineWidth = 0;
InfoMessage( _("Drag to create stall track") );
case C_MOVE:
@@ -616,22 +676,25 @@ static STATUS_T ModifyTurntable( track_p trk, wAction_t action, coOrd pos )
} else if ((r=FindDistance( ttCenter, pos )) < ttRadius) {
ErrorMessage( MSG_POINT_INSIDE_TURNTABLE );
} else if ( (r-ttRadius) <= minLength ) {
- if (action == C_MOVE)
- ErrorMessage( MSG_TRK_TOO_SHORT, "Stall ", PutDim(fabs(minLength-(r-ttRadius))) );
+ if (action == C_MOVE) {
+ ErrorMessage( MSG_TRK_TOO_SHORT, "Stall ",
+ PutDim(fabs(minLength-(r-ttRadius))) );
+ }
} else {
Translate( &tempSegs(0).u.l.pos[0], ttCenter, angle, ttRadius );
Translate( &tempSegs(0).u.l.pos[1], ttCenter, angle, r );
if (action == C_MOVE)
InfoMessage( _("Straight Track: Length=%s Angle=%0.3f"),
- FormatDistance( r-ttRadius ), PutAngle( angle ) );
- tempSegs_da.cnt = 1;
+ FormatDistance( r-ttRadius ), PutAngle( angle ) );
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
valid = TRUE;
}
return C_CONTINUE;
case C_UP:
- if (!valid)
+ if (!valid) {
return C_TERMINATE;
+ }
ep = NewTurntableEndPt( trk, angle );
trk1 = NewStraightTrack( tempSegs(0).u.l.pos[0], tempSegs(0).u.l.pos[1] );
CopyAttributes( trk, trk1 );
@@ -646,22 +709,25 @@ static STATUS_T ModifyTurntable( track_p trk, wAction_t action, coOrd pos )
}
EXPORT BOOL_T ConnectTurntableTracks(
- track_p trk1, /*The turntable */
- EPINX_T ep1, /*Ignored */
- track_p trk2,
- EPINX_T ep2 ) {
+ track_p trk1, /*The turntable */
+ EPINX_T ep1, /*Ignored */
+ track_p trk2,
+ EPINX_T ep2 )
+{
coOrd center, pos;
DIST_T radius;
DIST_T dist;
- if (!QueryTrack(trk1,Q_CAN_ADD_ENDPOINTS)) return FALSE;
+ if (!QueryTrack(trk1,Q_CAN_ADD_ENDPOINTS)) { return FALSE; }
TurntableGetCenter( trk1, &center, &radius );
pos = GetTrkEndPos(trk2,ep2);
ANGLE_T angle = FindAngle(center, GetTrkEndPos(trk2,ep2));
- if (fabs(DifferenceBetweenAngles(GetTrkEndAngle(trk2,ep2),angle+180)) <= connectAngle) {
+ if (fabs(DifferenceBetweenAngles(GetTrkEndAngle(trk2,ep2),
+ angle+180)) <= connectAngle) {
dist = FindDistance(center,pos)-radius;
if (dist < connectDistance) {
- UndoStart( _("Connect Turntable Tracks"), "TurnTracks(T%d[%d] T%d[%d] D%0.3f A%0.3F )",
- GetTrkIndex(trk1), ep1, GetTrkIndex(trk2), ep2, dist, angle );
+ UndoStart( _("Connect Turntable Tracks"),
+ "TurnTracks(T%d[%d] T%d[%d] D%0.3f A%0.3F )",
+ GetTrkIndex(trk1), ep1, GetTrkIndex(trk2), ep2, dist, angle );
UndoModify(trk1);
EPINX_T ep = NewTurntableEndPt(trk1,angle);
if (ConnectTracks( trk1, ep, trk2, ep2 )) {
@@ -676,7 +742,8 @@ EXPORT BOOL_T ConnectTurntableTracks(
}
-static BOOL_T GetParamsTurntable( int inx, track_p trk, coOrd pos, trackParams_t * params )
+static BOOL_T GetParamsTurntable( int inx, track_p trk, coOrd pos,
+ trackParams_t * params )
{
coOrd center;
DIST_T radius;
@@ -688,8 +755,9 @@ static BOOL_T GetParamsTurntable( int inx, track_p trk, coOrd pos, trackParams_t
params->type = curveTypeStraight;
params->ep = -1;
params->angle = ConstrainTurntableAngle( trk, pos );
- if (params->angle < 0.0)
- return FALSE;
+ if (params->angle < 0.0) {
+ return FALSE;
+ }
TurntableGetCenter( trk, &center, &radius );
PointOnCircle( &params->lineOrig, center, radius, params->angle );
params->lineEnd = params->lineOrig;
@@ -701,7 +769,8 @@ static BOOL_T GetParamsTurntable( int inx, track_p trk, coOrd pos, trackParams_t
}
-static BOOL_T MoveEndPtTurntable( track_p *trk, EPINX_T *ep, coOrd pos, DIST_T d0 )
+static BOOL_T MoveEndPtTurntable( track_p *trk, EPINX_T *ep, coOrd pos,
+ DIST_T d0 )
{
coOrd posCen;
DIST_T r;
@@ -725,14 +794,16 @@ static BOOL_T MoveEndPtTurntable( track_p *trk, EPINX_T *ep, coOrd pos, DIST_T d
//Look for empty slot
BOOL_T found = FALSE;
for (*ep=0; *ep<GetTrkEndPtCnt(*trk); *ep=*ep+1) {
- if ( (GetTrkEndTrk(*trk,*ep)) == NULL )
+ if ( (GetTrkEndTrk(*trk,*ep)) == NULL ) {
found = TRUE;
- break;
+ }
+ break;
}
- if (!found)
+ if (!found) {
*ep = NewTurntableEndPt(*trk,angle0);
- else {
- struct extraDataTurntable_t *xx = GET_EXTRA_DATA(*trk, T_TURNTABLE, extraDataTurntable_t);
+ } else {
+ struct extraDataTurntable_t *xx = GET_EXTRA_DATA(*trk, T_TURNTABLE,
+ extraDataTurntable_t);
coOrd pos1;
PointOnCircle( &pos1, xx->pos, xx->radius, angle0 );
SetTrkEndPoint(*trk, *ep, pos1, angle0); //Reuse
@@ -759,7 +830,7 @@ static BOOL_T QueryTurntable( track_p trk, int query )
case Q_ISTRACK:
case Q_NOT_PLACE_FROGPOINTS:
case Q_MODIFY_REDRAW_DONT_UNDRAW_TRACK:
- case Q_CAN_ADD_ENDPOINTS:
+ case Q_CAN_ADD_ENDPOINTS:
return TRUE;
case Q_MODIFY_CAN_SPLIT:
case Q_CORNU_CAN_MODIFY:
@@ -771,11 +842,12 @@ static BOOL_T QueryTurntable( track_p trk, int query )
static void FlipTurntable(
- track_p trk,
- coOrd orig,
- ANGLE_T angle )
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle )
{
- struct extraDataTurntable_t * xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t * xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
FlipPoint( &xx->pos, orig, angle );
ComputeBoundingBox( trk );
}
@@ -784,12 +856,14 @@ BOOL_T debug = 0;
static void DrawTurntablePositionIndicator( track_p trk, wDrawColor color )
{
- struct extraDataTurntable_t * xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t * xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
coOrd pos0, pos1;
ANGLE_T angle;
-
- if ( !ValidateTurntablePosition(trk) )
+
+ if ( !ValidateTurntablePosition(trk) ) {
return;
+ }
pos0 = GetTrkEndPos(trk,xx->currEp);
angle = FindAngle( xx->pos, pos0 );
PointOnCircle( &pos1, xx->pos, xx->radius, angle+180.0 );
@@ -808,8 +882,10 @@ static void DrawTurntablePositionIndicator( track_p trk, wDrawColor color )
static wBool_t CompareTurntable( track_cp trk1, track_cp trk2 )
{
- struct extraDataTurntable_t *xx1 = GET_EXTRA_DATA( trk1, T_TURNTABLE, extraDataTurntable_t );
- struct extraDataTurntable_t *xx2 = GET_EXTRA_DATA( trk2, T_TURNTABLE, extraDataTurntable_t );
+ struct extraDataTurntable_t *xx1 = GET_EXTRA_DATA( trk1, T_TURNTABLE,
+ extraDataTurntable_t );
+ struct extraDataTurntable_t *xx2 = GET_EXTRA_DATA( trk2, T_TURNTABLE,
+ extraDataTurntable_t );
char * cp = message + strlen(message);
REGRESS_CHECK_POS( "Pos", xx1, xx2, pos )
REGRESS_CHECK_DIST( "Radius", xx1, xx2, radius )
@@ -819,13 +895,14 @@ static wBool_t CompareTurntable( track_cp trk1, track_cp trk2 )
}
static void AdvanceTurntablePositionIndicator(
- track_p trk,
- coOrd pos,
- coOrd * posR,
- ANGLE_T * angleR )
+ track_p trk,
+ coOrd pos,
+ coOrd * posR,
+ ANGLE_T * angleR )
{
- struct extraDataTurntable_t * xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
+ struct extraDataTurntable_t * xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
EPINX_T ep;
ANGLE_T angle0, angle1;
BOOL_T reverse=FALSE, train_reversed = FALSE;
@@ -834,12 +911,13 @@ static void AdvanceTurntablePositionIndicator(
coOrd inpos = *posR;
ANGLE_T inangle = *angleR;
angle0 = GetTrkEndAngle(trk,xx->currEp);
- if (fabs(DifferenceBetweenAngles(angle0,*angleR))>90) train_reversed = TRUE;
+ if (fabs(DifferenceBetweenAngles(angle0,*angleR))>90) { train_reversed = TRUE; }
DIST_T dd = DIST_INF;
// If on ep, use that
for (ep=0; ep<epCnt; ep++) {
- if ( (GetTrkEndTrk(trk,ep)) == NULL )
+ if ( (GetTrkEndTrk(trk,ep)) == NULL ) {
continue;
+ }
coOrd end = GetTrkEndPos(trk,ep);
DIST_T d = FindDistance(end,pos);
if (d<dd) {
@@ -861,7 +939,8 @@ static void AdvanceTurntablePositionIndicator(
train_reversed = !train_reversed;
} else {
//If back end moving, flip result
- if (fabs(DifferenceBetweenAngles(FindAngle(xx->pos,pos),GetTrkEndAngle(trk,xx->currEp)))>90) {
+ if (fabs(DifferenceBetweenAngles(FindAngle(xx->pos,pos),GetTrkEndAngle(trk,
+ xx->currEp)))>90) {
if (epfound>=0 && epfound != xx->currEp) {
reverse = TRUE;
xx->reverse = !xx->reverse;
@@ -879,48 +958,51 @@ static void AdvanceTurntablePositionIndicator(
Translate(posR, xx->pos, *angleR, FindDistance(*posR,xx->pos) );
}
coOrd outpos = *posR;
- if (debug)
- InfoMessage("AO:%0.3f PO:(%0.3f,%0.3f) AI:%0.3f PI:(%0.3f,%0.3f)",*angleR,outpos.x,outpos.y,inangle,inpos.x,inpos.y);
+ if (debug) {
+ InfoMessage("AO:%0.3f PO:(%0.3f,%0.3f) AI:%0.3f PI:(%0.3f,%0.3f)",*angleR,
+ outpos.x,outpos.y,inangle,inpos.x,inpos.y);
+ }
}
}
static trackCmd_t turntableCmds = {
- "TURNTABLE",
- DrawTurntable,
- DistanceTurntable,
- DescribeTurntable,
- DeleteTurntable,
- WriteTurntable,
- ReadTurntable,
- MoveTurntable,
- RotateTurntable,
- RescaleTurntable,
- NULL, /* audit */
- GetAngleTurntable,
- SplitTurntable, /* split */
- TraverseTurntable,
- EnumerateTurntable,
- NULL, /* redraw */
- NULL, /* trim */
- NULL, /* merge */
- ModifyTurntable,
- NULL, /* getLength */
- GetParamsTurntable,
- MoveEndPtTurntable,
- QueryTurntable,
- NULL, /* ungroup */
- FlipTurntable,
- DrawTurntablePositionIndicator,
- AdvanceTurntablePositionIndicator,
- CheckTraverseTurntable,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- CompareTurntable };
+ "TURNTABLE",
+ DrawTurntable,
+ DistanceTurntable,
+ DescribeTurntable,
+ DeleteTurntable,
+ WriteTurntable,
+ ReadTurntable,
+ MoveTurntable,
+ RotateTurntable,
+ RescaleTurntable,
+ NULL, /* audit */
+ GetAngleTurntable,
+ SplitTurntable, /* split */
+ TraverseTurntable,
+ EnumerateTurntable,
+ NULL, /* redraw */
+ NULL, /* trim */
+ NULL, /* merge */
+ ModifyTurntable,
+ NULL, /* getLength */
+ GetParamsTurntable,
+ MoveEndPtTurntable,
+ QueryTurntable,
+ NULL, /* ungroup */
+ FlipTurntable,
+ DrawTurntablePositionIndicator,
+ AdvanceTurntablePositionIndicator,
+ CheckTraverseTurntable,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ CompareTurntable
+};
static STATUS_T CmdTurntable( wAction_t action, coOrd pos )
@@ -934,8 +1016,9 @@ static STATUS_T CmdTurntable( wAction_t action, coOrd pos )
switch (action) {
case C_START:
- if (turntableDiameterPD.control==NULL)
+ if (turntableDiameterPD.control==NULL) {
ParamCreateControls( &turntablePG, NULL );
+ }
sprintf( message, "turntable-diameter-%s", curScaleName );
turntableDiameter = ceil(80.0*12.0/curScaleRatio);
wPrefGetFloat( "misc", message, &turntableDiameter, turntableDiameter );
@@ -984,7 +1067,8 @@ static STATUS_T CmdTurntable( wAction_t action, coOrd pos )
case C_REDRAW:
if ( state > 0 ) {
- DrawArc( &tempD, pos0, turntableDiameter/2.0, 0.0, 360.0, 0, 0, wDrawColorBlack );
+ DrawArc( &tempD, pos0, turntableDiameter/2.0, 0.0, 360.0, 0, 0,
+ wDrawColorBlack );
}
return C_CONTINUE;
@@ -998,12 +1082,14 @@ static STATUS_T CmdTurntable( wAction_t action, coOrd pos )
}
-#include "bitmaps/turntable.xpm"
+#include "bitmaps/turntable.xpm3"
EXPORT void InitCmdTurntable( wMenu_p menu )
{
- AddMenuButton( menu, CmdTurntable, "cmdTurntable", _("Custom Turntable"), wIconCreatePixMap(turntable_xpm[iconSize]), LEVEL0_50, IC_STICKY|IC_INITNOTSTICKY, ACCL_TURNTABLE, NULL );
+ AddMenuButton( menu, CmdTurntable, "cmdTurntable", _("Custom Turntable"),
+ wIconCreatePixMap(turntable_xpm3[iconSize]), LEVEL0_50,
+ IC_STICKY|IC_INITNOTSTICKY, ACCL_TURNTABLE, NULL );
}
diff --git a/app/bin/cundo.c b/app/bin/cundo.c
index fda012f..b58d541 100644
--- a/app/bin/cundo.c
+++ b/app/bin/cundo.c
@@ -1,5 +1,5 @@
/** \file cundo.c
- * Undo / redo functions.
+ * Undo / redo functions.
*/
/* XTrkCad - Model Railroad CAD
@@ -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
*/
/*
@@ -45,7 +45,7 @@
* At this point, any DeleteOp records in the old transaction are processed
* (DeleteInStream) and the deleted track is Free'd
*
- * The streams are expandable ring buffers.
+ * The streams are expandable ring buffers.
* When the transaction buffer wraps, the unreferenced start of the undoStreams is trimmed.
* THe redoStream is purged for every transaction.
*
@@ -56,7 +56,7 @@
* 1 Marks the track's transaction record with DeleteOp
* When the transaction record is recycled, the old track object will be Free'd.
* 2 Sets the .delete flag in the track object
- * For the most part (except dcar.c and cundo.c) IsTrackDeleted() is used in ASSERTs
+ * For the most part (except dcar.c and cundo.c) IsTrackDeleted() is used in CHECKs
* There are a few cases where we have to deal with deleted track.
* In general, we do not need to look inside a deleted track and
* GET_EXTRA_DATA will complain if we try (FreeTrack is the exception)
@@ -67,10 +67,13 @@
#include "fileio.h"
#include "paths.h"
#include "track.h"
-#include "trackx.h"
+// We need to fiddle with the track list
+#include "trackx.h" // tempTrk, to_first, to_last
+#include "trkendpt.h"
#include "draw.h"
#include "cundo.h"
#include "common-ui.h"
+#include "ctrain.h"
#include <inttypes.h>
@@ -79,6 +82,52 @@
#define SLOG_FMT "0x%.12" PRIxPTR
+/****************************************************************************
+ *
+ * RPRINTF
+ *
+ */
+
+
+#define RBUFF_SIZE (8192)
+static char rbuff[RBUFF_SIZE+1];
+static int roff;
+static int rbuff_record = 0;
+
+EXPORT void Rdump( FILE * outf )
+{
+ fprintf( outf, "Record Buffer:\n" );
+ rbuff[RBUFF_SIZE] = '\0';
+ fprintf( outf, "%s", rbuff+roff );
+ rbuff[roff] = '\0';
+ fprintf( outf, "%s", rbuff );
+ memset( rbuff, 0, sizeof rbuff );
+ roff = 0;
+}
+
+
+static void Rprintf(
+ char * format,
+ ... )
+{
+ static char buff[STR_SIZE];
+ char * cp;
+ va_list ap;
+ va_start( ap, format );
+ vsprintf( buff, format, ap );
+ va_end( ap );
+ if (rbuff_record >= 1) {
+ lprintf( buff );
+ }
+ for ( cp=buff; *cp; cp++ ) {
+ rbuff[roff] = *cp;
+ roff++;
+ if (roff>=RBUFF_SIZE) {
+ roff=0;
+ }
+ }
+}
+
/*****************************************************************************
*
* UNDO
@@ -90,20 +139,20 @@ static int log_undo = 0; /**< loglevel, can only be set at compile time */
#define UNDO_STACK_SIZE (10)
typedef struct {
- wIndex_t modCnt;
- wIndex_t newCnt;
- wIndex_t delCnt;
- wIndex_t trackCount;
- track_p newTrks;
- uintptr_t undoStart;
- uintptr_t undoEnd;
- uintptr_t redoStart;
- uintptr_t redoEnd;
- BOOL_T needRedo;
- track_p * oldTail;
- track_p * newTail;
- char * label;
- } undoStack_t, *undoStack_p;
+ wIndex_t modCnt;
+ wIndex_t newCnt;
+ wIndex_t delCnt;
+ wIndex_t trackCount;
+ track_p newTrks;
+ uintptr_t undoStart;
+ uintptr_t undoEnd;
+ uintptr_t redoStart;
+ uintptr_t redoEnd;
+ BOOL_T needRedo;
+ track_p * oldTail;
+ track_p * newTail;
+ char * label;
+} undoStack_t, *undoStack_p;
static undoStack_t undoStack[UNDO_STACK_SIZE];
static wIndex_t undoHead = -1;
@@ -134,11 +183,11 @@ static BOOL_T recordUndo = 1;
typedef char streamBlocks_t[BSTREAM_SIZE];
typedef streamBlocks_t *streamBlocks_p;
typedef struct {
- dynArr_t stream_da;
- long startBInx;
- uintptr_t end;
- uintptr_t curr;
- } stream_t;
+ dynArr_t stream_da;
+ long startBInx;
+ uintptr_t end;
+ uintptr_t curr;
+} stream_t;
typedef stream_t *stream_p;
static stream_t undoStream;
static stream_t redoStream;
@@ -175,8 +224,10 @@ static void DumpStream( FILE * outf, stream_p stream, char * name )
if ( memcmp( &((*blk)[i]), zeros, 16 ) == 0 ) {
zeroCnt++;
} else {
- if ( zeroCnt == 2 )
- fprintf( outf, "%6.6lx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n", (unsigned long)off-16 );
+ if ( zeroCnt == 2 ) {
+ fprintf( outf, "%6.6lx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n",
+ (unsigned long)off-16 );
+ }
zeroCnt = 0;
}
if ( zeroCnt <= 1 ) {
@@ -186,52 +237,65 @@ static void DumpStream( FILE * outf, stream_p stream, char * name )
}
fprintf( outf, "\n" );
} else if ( zeroCnt == 3 ) {
- fprintf( outf, SLOG_FMT" .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..\n", off );
+ fprintf( outf, SLOG_FMT" .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..\n",
+ off );
}
off += 16;
}
}
- if ( zeroCnt > 2 )
- fprintf( outf, SLOG_FMT" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n", off-16 );
+ if ( zeroCnt > 2 ) {
+ fprintf( outf, SLOG_FMT" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n",
+ off-16 );
+ }
}
-static BOOL_T UndoFail( char * cause, uintptr_t val, char * fileName, int lineNumber )
+static BOOL_T UndoFail( char * cause, uintptr_t val, char * fileName,
+ int lineNumber )
{
int inx, cnt;
undoStack_p us;
FILE * outf;
time_t clock;
- char *temp;
- NoticeMessage( MSG_UNDO_ASSERT, _("Ok"), NULL, fileName, lineNumber, val, val, cause );
+ char *temp;
+ NoticeMessage( MSG_UNDO_ASSERT, _("Ok"), NULL, fileName, lineNumber, val, val,
+ cause );
MakeFullpath(&temp, workingDir, sUndoF, NULL);
outf = fopen( temp, "a+" );
free(temp);
if ( outf == NULL ) {
- NoticeMessage( MSG_OPEN_FAIL, _("Ok"), NULL, _("Undo Trace"), temp, strerror(errno) );
+ NoticeMessage( MSG_OPEN_FAIL, _("Ok"), NULL, _("Undo Trace"), temp,
+ strerror(errno) );
return FALSE;
}
time( &clock );
- fprintf(outf, "\nUndo Assert: %s @ %s:%d (%s)\n", cause, fileName, lineNumber, ctime(&clock) );
+ fprintf(outf, "\nUndo Assert: %s @ %s:%d (%s)\n", cause, fileName, lineNumber,
+ ctime(&clock) );
fprintf(outf, "Val = %lld(" SLOG_FMT ")\n", (long long)val, val );
- fprintf(outf, "to_first="SLOG_FMT", to_last="SLOG_FMT"\n", (uintptr_t)to_first, (uintptr_t)to_last );
- fprintf(outf, "undoHead=%d, doCount=%d, undoCount=%d\n", undoHead, doCount, undoCount );
- if (undoHead >= 0 && undoHead < UNDO_STACK_SIZE)
+ fprintf(outf, "to_first="SLOG_FMT", to_last="SLOG_FMT"\n", (uintptr_t)to_first,
+ (uintptr_t)to_last );
+ fprintf(outf, "undoHead=%d, doCount=%d, undoCount=%d\n", undoHead, doCount,
+ undoCount );
+ if (undoHead >= 0 && undoHead < UNDO_STACK_SIZE) {
inx=undoHead;
- else
+ } else {
inx = 0;
+ }
for (cnt=0; cnt<UNDO_STACK_SIZE; cnt++) {
us = &undoStack[inx];
- fprintf( outf, "US[%d]: M:%d N:%d D:%d TC:%d NT:"SLOG_FMT" OT:"SLOG_FMT" NT:"SLOG_FMT" US:"SLOG_FMT" UE:"SLOG_FMT" RS:"SLOG_FMT" RE:"SLOG_FMT" NR:%d\n",
- inx, us->modCnt, us->newCnt, us->delCnt, us->trackCount,
- (uintptr_t)us->newTrks, (uintptr_t)us->oldTail, (uintptr_t)us->newTail,
- us->undoStart, us->undoEnd, us->redoStart, us->redoEnd, us->needRedo );
+ fprintf( outf,
+ "US[%d]: M:%d N:%d D:%d TC:%d NT:"SLOG_FMT" OT:"SLOG_FMT" NT:"SLOG_FMT" US:"SLOG_FMT" UE:"SLOG_FMT" RS:"SLOG_FMT" RE:"SLOG_FMT" NR:%d\n",
+ inx, us->modCnt, us->newCnt, us->delCnt, us->trackCount,
+ (uintptr_t)us->newTrks, (uintptr_t)us->oldTail, (uintptr_t)us->newTail,
+ us->undoStart, us->undoEnd, us->redoStart, us->redoEnd, us->needRedo );
INC_UNDO_INX(inx);
}
fprintf( outf, "Undo: SBI:%ld E:"SLOG_FMT" C:"SLOG_FMT" SC:%d SM:%d\n",
- undoStream.startBInx, undoStream.end, undoStream.curr, undoStream.stream_da.cnt, undoStream.stream_da.max );
+ undoStream.startBInx, undoStream.end, undoStream.curr, undoStream.stream_da.cnt,
+ undoStream.stream_da.max );
fprintf( outf, "Redo: SBI:%ld E:"SLOG_FMT" C:"SLOG_FMT" SC:%d SM:%d\n",
- redoStream.startBInx, redoStream.end, redoStream.curr, redoStream.stream_da.cnt, redoStream.stream_da.max );
+ redoStream.startBInx, redoStream.end, redoStream.curr, redoStream.stream_da.cnt,
+ redoStream.stream_da.max );
DumpStream( outf, &undoStream, "undoStream" );
DumpStream( outf, &redoStream, "redoStream" );
Rdump(outf);
@@ -247,10 +311,12 @@ BOOL_T ReadStream( stream_t * stream, void * ptr, int size )
size_t binx, boff, brem;
streamBlocks_p blk;
if ( stream->curr+size > stream->end ) {
- UndoFail( "Overrun on stream", (uintptr_t)(stream->curr+size), __FILE__, __LINE__ );
+ UndoFail( "Overrun on stream", (uintptr_t)(stream->curr+size), __FILE__,
+ __LINE__ );
return FALSE;
}
-LOG( log_undo, 5, ( "ReadStream( , "SLOG_FMT", %d ) %ld %ld %ld\n", (uintptr_t)ptr, size, stream->startBInx, stream->curr, stream->end ) )
+ LOG( log_undo, 5, ( "ReadStream( , "SLOG_FMT", %d ) %ld %ld %ld\n",
+ (uintptr_t)ptr, size, stream->startBInx, stream->curr, stream->end ) )
binx = stream->curr/BSTREAM_SIZE;
boff = stream->curr%BSTREAM_SIZE;
stream->curr += size;
@@ -278,9 +344,12 @@ BOOL_T WriteStream( stream_p stream, void * ptr, int size )
{
size_t binx, boff, brem;
streamBlocks_p blk;
-LOG( log_undo, 5, ( "WriteStream( , "SLOG_FMT", %d ) %ld "SLOG_FMT" "SLOG_FMT"\n", (uintptr_t)ptr, size, stream->startBInx, stream->curr, stream->end ) )
- if (size == 0)
+ LOG( log_undo, 5,
+ ( "WriteStream( , "SLOG_FMT", %d ) %ld "SLOG_FMT" "SLOG_FMT"\n", (uintptr_t)ptr,
+ size, stream->startBInx, stream->curr, stream->end ) )
+ if (size == 0) {
return TRUE;
+ }
binx = stream->end/BSTREAM_SIZE;
boff = stream->end%BSTREAM_SIZE;
stream->end += size;
@@ -315,20 +384,24 @@ BOOL_T TrimStream( stream_p stream, uintptr_t off )
{
size_t binx, cnt, inx;
streamBlocks_p blk;
-LOG( log_undo, 3, ( " TrimStream( , %ld )\n", off ) )
+ LOG( log_undo, 3, ( " TrimStream( , %ld )\n", off ) )
binx = off/BSTREAM_SIZE;
cnt = binx-stream->startBInx;
- if (recordUndo)
- Rprintf("Trim("SLOG_FMT") %ld blocks (out of %d)\n", off, cnt, stream->stream_da.cnt);
+ if (recordUndo) {
+ Rprintf("Trim("SLOG_FMT") %ld blocks (out of %d)\n", off, cnt,
+ stream->stream_da.cnt);
+ }
UASSERT( cnt >= 0 && cnt <= stream->stream_da.cnt, cnt );
- if (cnt == 0)
+ if (cnt == 0) {
return TRUE;
+ }
for (inx=0; inx<cnt; inx++) {
blk = DYNARR_N( streamBlocks_p, stream->stream_da, inx );
MyFree( blk );
}
for (inx=cnt; inx<stream->stream_da.cnt; inx++ ) {
- DYNARR_N( streamBlocks_p, stream->stream_da, inx-cnt ) = DYNARR_N( streamBlocks_p, stream->stream_da, inx );
+ DYNARR_N( streamBlocks_p, stream->stream_da,
+ inx-cnt ) = DYNARR_N( streamBlocks_p, stream->stream_da, inx );
}
stream->startBInx =(long)binx;
stream->stream_da.cnt -= (wIndex_t)cnt;
@@ -345,7 +418,7 @@ void ClearStream( stream_p stream )
blk = DYNARR_N( streamBlocks_p, stream->stream_da, inx );
MyFree( blk );
}
- stream->stream_da.cnt = 0;
+ DYNARR_RESET( streamBlocks_p, stream->stream_da );
stream->startBInx = 0;
stream->end = stream->curr = 0;
}
@@ -355,23 +428,27 @@ BOOL_T TruncateStream( stream_p stream, uintptr_t off )
{
size_t binx, boff, cnt, inx;
streamBlocks_p blk;
-LOG( log_undo, 3, ( "TruncateStream( , %ld )\n", off ) )
+ LOG( log_undo, 3, ( "TruncateStream( , %ld )\n", off ) )
binx = off/BSTREAM_SIZE;
boff = off%BSTREAM_SIZE;
- if (boff!=0)
+ if (boff!=0) {
binx++;
+ }
binx -= stream->startBInx;
cnt = stream->stream_da.cnt-binx;
- if (recordUndo)
- Rprintf("Truncate("SLOG_FMT") %ld blocks (out of %d)\n", off, cnt, stream->stream_da.cnt);
+ if (recordUndo) {
+ Rprintf("Truncate("SLOG_FMT") %ld blocks (out of %d)\n", off, cnt,
+ stream->stream_da.cnt);
+ }
UASSERT( cnt >= 0 && cnt <= stream->stream_da.cnt, cnt );
- if (cnt == 0)
+ if (cnt == 0) {
return TRUE;
+ }
for (inx=binx; inx<stream->stream_da.cnt; inx++) {
blk = DYNARR_N( streamBlocks_p, stream->stream_da, inx );
MyFree( blk );
}
- stream->stream_da.cnt = (wIndex_t)binx;
+ DYNARR_SET( streamBlocks_p, stream->stream_da, (wIndex_t)binx );
stream->end = off;
UASSERT( stream->stream_da.cnt >= 0, stream->stream_da.cnt );
return TRUE;
@@ -383,11 +460,12 @@ BOOL_T WriteObject( stream_p stream, char op, track_p trk )
void * buff = NULL;
long len = 0;
if (!WriteStream( stream, &op, sizeof op ) ||
- !WriteStream( stream, &trk, sizeof trk ) ||
- !WriteStream( stream, trk, sizeof *trk ) ||
- !WriteStream( stream, trk->endPt, trk->endCnt * sizeof trk->endPt[0] ) ||
- !WriteStream( stream, trk->extraData, trk->extraSize ))
+ !WriteStream( stream, &trk, sizeof trk ) ||
+ !WriteStream( stream, trk, sizeof *trk ) ||
+ !WriteStream( stream, trk->endPt, EndPtSize(trk->endCnt) ) ||
+ !WriteStream( stream, trk->extraData, trk->extraSize )) {
return FALSE;
+ }
/* Add a copy of the any type specific data before it is tampered with, for example */
if ( !IsTrackDeleted(trk) ) {
StoreTrackData(trk,&buff,&len);
@@ -395,11 +473,13 @@ BOOL_T WriteObject( stream_p stream, char op, track_p trk )
len = 0;
buff = NULL;
}
- if (!WriteStream( stream, &len, sizeof len ))
+ if (!WriteStream( stream, &len, sizeof len )) {
return FALSE;
+ }
if (len)
- if (!WriteStream( stream, buff, len ))
+ if (!WriteStream( stream, buff, len )) {
return FALSE;
+ }
return TRUE;
}
@@ -416,62 +496,79 @@ static BOOL_T ReadObject( stream_p stream, BOOL_T needRedo )
track_p trk;
track_t tempTrk;
char op;
- if (!ReadStream( stream, &op, sizeof op ))
+ if (!ReadStream( stream, &op, sizeof op )) {
return FALSE;
- if (!ReadStream( stream, &trk, sizeof trk ))
+ }
+ if (!ReadStream( stream, &trk, sizeof trk )) {
return FALSE;
- LOG( log_undo, 4, ( " @ " SLOG_FMT " %s\n", stream->curr-1, op==ModifyOp?"Mod":"Del" ) );
+ }
+ LOG( log_undo, 4, ( " @ " SLOG_FMT " %s\n", stream->curr-1,
+ op==ModifyOp?"Mod":"Del" ) );
if (needRedo) {
if (!WriteObject( &redoStream, op, trk )) {
return FALSE;
}
}
- if (!ReadStream( stream, &tempTrk, sizeof tempTrk ))
+ if (!ReadStream( stream, &tempTrk, sizeof tempTrk )) {
return FALSE;
- if (op == ModifyOp)
+ }
+ if (op == ModifyOp) {
UASSERT( (op==ModifyOp) && !IsTrackDeleted(&tempTrk), GetTrkIndex(&tempTrk) );
+ }
// op==DeleteOp doesnot imply that tmpTrk.delete == TRUE: SetDeleteOpInStream
- if (tempTrk.endCnt != trk->endCnt)
- tempTrk.endPt = MyRealloc( trk->endPt, tempTrk.endCnt * sizeof tempTrk.endPt[0] );
- else
+ if (tempTrk.endCnt != trk->endCnt) {
+ tempTrk.endPt = MyRealloc( trk->endPt, EndPtSize(tempTrk.endCnt) );
+ } else {
tempTrk.endPt = trk->endPt;
- if (!ReadStream( stream, tempTrk.endPt, tempTrk.endCnt * sizeof tempTrk.endPt[0] ))
+ }
+ if (!ReadStream( stream, tempTrk.endPt, EndPtSize(tempTrk.endCnt) )) {
return FALSE;
- if (tempTrk.extraSize != trk->extraSize)
- tempTrk.extraData = (extraDataBase_t*)MyRealloc( trk->extraData, tempTrk.extraSize );
- else
+ }
+ if (tempTrk.extraSize != trk->extraSize) {
+ tempTrk.extraData = (extraDataBase_t*)MyRealloc( trk->extraData,
+ tempTrk.extraSize );
+ } else {
tempTrk.extraData = trk->extraData;
- if (!ReadStream( stream, tempTrk.extraData, tempTrk.extraSize ))
+ }
+ if (!ReadStream( stream, tempTrk.extraData, tempTrk.extraSize )) {
return FALSE;
+ }
long Addsize;
void * tempBuff;
/* Fix up pts to be as big as it was before -> because it may have changed since */
- if (!ReadStream (stream, &Addsize, sizeof Addsize))
+ if (!ReadStream (stream, &Addsize, sizeof Addsize)) {
return FALSE;
+ }
if (Addsize) {
tempBuff = MyMalloc(Addsize);
- if (!ReadStream( stream, tempBuff, Addsize ))
+ if (!ReadStream( stream, tempBuff, Addsize )) {
return FALSE;
- if ( ! IsTrackDeleted(&tempTrk) )
+ }
+ if ( ! IsTrackDeleted(&tempTrk) ) {
ReplayTrackData(&tempTrk, tempBuff, Addsize);
+ }
MyFree(tempBuff);
}
- if ( ! IsTrackDeleted(&tempTrk) )
- RebuildTrackSegs(&tempTrk); //If we had an array of Segs - recreate it
- if (recordUndo) Rprintf( "Restore T%D(%d) @ "SLOG_FMT"\n", trk->index, tempTrk.index, (uintptr_t)trk );
+ if ( ! IsTrackDeleted(&tempTrk) ) {
+ RebuildTrackSegs(&tempTrk); //If we had an array of Segs - recreate it
+ }
+ if (recordUndo) { Rprintf( "Restore T%D(%d) @ "SLOG_FMT"\n", trk->index, tempTrk.index, (uintptr_t)trk ); }
tempTrk.index = trk->index;
tempTrk.next = trk->next;
- if ( (tempTrk.bits&TB_CARATTACHED) != 0 )
+ if ( (tempTrk.bits&TB_CARATTACHED) != 0 ) {
needAttachTrains = TRUE;
+ }
tempTrk.bits &= ~TB_TEMPBITS;
*trk = tempTrk;
- if (!IsTrackDeleted(trk))
+ if (!IsTrackDeleted(trk)) {
ClrTrkElev( trk );
+ }
return TRUE;
}
-static BOOL_T RedrawInStream( stream_p stream, uintptr_t start, uintptr_t end, BOOL_T draw )
+static BOOL_T RedrawInStream( stream_p stream, uintptr_t start, uintptr_t end,
+ BOOL_T draw )
{
char op;
track_p trk;
@@ -479,19 +576,22 @@ static BOOL_T RedrawInStream( stream_p stream, uintptr_t start, uintptr_t end, B
stream->curr = start;
while (stream->curr < end ) {
if (!ReadStream( stream, &op, sizeof op ) ||
- !ReadStream( stream, &trk, sizeof trk ) ||
- !ReadStream( stream, &tempTrk, sizeof tempTrk ) )
+ !ReadStream( stream, &trk, sizeof trk ) ||
+ !ReadStream( stream, &tempTrk, sizeof tempTrk ) ) {
return FALSE;
- stream->curr += tempTrk.extraSize + tempTrk.endCnt*sizeof tempTrk.endPt[0];;
+ }
+ stream->curr += tempTrk.extraSize + EndPtSize(tempTrk.endCnt);
long Addsize;
- if (!ReadStream( stream, &Addsize, sizeof Addsize ))
- return FALSE;
+ if (!ReadStream( stream, &Addsize, sizeof Addsize )) {
+ return FALSE;
+ }
stream->curr += Addsize;
if (!IsTrackDeleted(trk)) {
- if (draw)
+ if (draw) {
DrawNewTrack( trk );
- else
+ } else {
UndrawNewTrack( trk );
+ }
}
}
return TRUE;
@@ -515,24 +615,30 @@ static BOOL_T DeleteInStream( stream_p stream, uintptr_t start, uintptr_t end )
track_p *ptrk;
track_t tempTrk;
int delCount = 0;
- LOG( log_undo, 3, ( " DeleteInStream( , "SLOG_FMT", "SLOG_FMT" )\n", start, end ) )
+ LOG( log_undo, 3, ( " DeleteInStream( , "SLOG_FMT", "SLOG_FMT" )\n", start,
+ end ) )
stream->curr = start;
while (stream->curr < end ) {
- if (!ReadStream( stream, &op, sizeof op ))
+ if (!ReadStream( stream, &op, sizeof op )) {
return FALSE;
+ }
UASSERT( op == ModifyOp || op == DeleteOp, (long)op );
- LOG( log_undo, 4, ( " @ " SLOG_FMT " %s\n", stream->curr-1, op==ModifyOp?"Mod":"Del" ) );
+ LOG( log_undo, 4, ( " @ " SLOG_FMT " %s\n", stream->curr-1,
+ op==ModifyOp?"Mod":"Del" ) );
if (!ReadStream( stream, &trk, sizeof trk ) ||
- !ReadStream( stream, &tempTrk, sizeof tempTrk ))
+ !ReadStream( stream, &tempTrk, sizeof tempTrk )) {
return FALSE;
- stream->curr += tempTrk.extraSize + tempTrk.endCnt*sizeof tempTrk.endPt[0];
+ }
+ stream->curr += tempTrk.extraSize + EndPtSize(tempTrk.endCnt);
long Addsize;
- if (!ReadStream( stream, &Addsize, sizeof Addsize ))
+ if (!ReadStream( stream, &Addsize, sizeof Addsize )) {
return FALSE;
+ }
stream->curr += Addsize;
if (op == DeleteOp) {
- if (recordUndo) Rprintf( " Free T%D(%d) @ "SLOG_FMT"\n", trk->index, tempTrk.index, (uintptr_t)trk );
- LOG( log_undo, 3, ( " Free T%d @ "SLOG_FMT"\n", GetTrkIndex(trk), (uintptr_t)trk ) );
+ if (recordUndo) { Rprintf( " Free T%D(%d) @ "SLOG_FMT"\n", trk->index, tempTrk.index, (uintptr_t)trk ); }
+ LOG( log_undo, 3, ( " Free T%d @ "SLOG_FMT"\n", GetTrkIndex(trk),
+ (uintptr_t)trk ) );
UASSERT( IsTrackDeleted(trk), GetTrkIndex(trk) );
trk->index = -1;
delCount++;
@@ -567,7 +673,8 @@ static BOOL_T DeleteInStream( stream_p stream, uintptr_t start, uintptr_t end )
*
* Note: does not set trk->delete flag
*/
-static BOOL_T SetDeleteOpInStream( stream_p stream, uintptr_t start, uintptr_t end, track_p trk0 )
+static BOOL_T SetDeleteOpInStream( stream_p stream, uintptr_t start,
+ uintptr_t end, track_p trk0 )
{
char op;
track_p trk;
@@ -575,20 +682,25 @@ static BOOL_T SetDeleteOpInStream( stream_p stream, uintptr_t start, uintptr_t e
size_t binx, boff;
streamBlocks_p blk;
- LOG( log_undo, 3, ( " SetDeleteOpInStream T%d @ "SLOG_FMT"\n", GetTrkIndex(trk0), (uintptr_t)trk0) );
+ LOG( log_undo, 3, ( " SetDeleteOpInStream T%d @ "SLOG_FMT"\n",
+ GetTrkIndex(trk0), (uintptr_t)trk0) );
stream->curr = start;
while (stream->curr < end) {
binx = stream->curr/BSTREAM_SIZE;
binx -= stream->startBInx;
boff = stream->curr%BSTREAM_SIZE;
- if (!ReadStream( stream, &op, sizeof op ))
+ if (!ReadStream( stream, &op, sizeof op )) {
return FALSE;
+ }
UASSERT( op == ModifyOp || op == DeleteOp, (long)op );
- LOG( log_undo, 4, ( " @ " SLOG_FMT " %s\n", stream->curr-1, op==ModifyOp?"Mod":"Del" ) );
- if (!ReadStream( stream, &trk, sizeof trk ) )
+ LOG( log_undo, 4, ( " @ " SLOG_FMT " %s\n", stream->curr-1,
+ op==ModifyOp?"Mod":"Del" ) );
+ if (!ReadStream( stream, &trk, sizeof trk ) ) {
return FALSE;
- if (!ReadStream( stream, &tempTrk, sizeof tempTrk ))
+ }
+ if (!ReadStream( stream, &tempTrk, sizeof tempTrk )) {
return FALSE;
+ }
if (trk == trk0) {
UASSERT( op == ModifyOp, (long)op );
blk = DYNARR_N( streamBlocks_p, stream->stream_da, binx );
@@ -597,10 +709,11 @@ static BOOL_T SetDeleteOpInStream( stream_p stream, uintptr_t start, uintptr_t e
LOG( log_undo, 3, ( " -> Delete\n") );
return TRUE;
}
- stream->curr += tempTrk.extraSize + tempTrk.endCnt*sizeof tempTrk.endPt[0];
+ stream->curr += tempTrk.extraSize + EndPtSize(tempTrk.endCnt);
long Addsize;
- if (!ReadStream( stream, &Addsize, sizeof Addsize))
- return FALSE;
+ if (!ReadStream( stream, &Addsize, sizeof Addsize)) {
+ return FALSE;
+ }
stream->curr += Addsize;
}
UASSERT( "Cannot find undo record to convert to DeleteOp", 0 );
@@ -645,11 +758,13 @@ static track_p * FindParent( track_p trk, int lineNum )
{
track_p *ptrk;
ptrk = &to_first;
- while ( 1 ) {
- if ( *ptrk == trk )
+ while ( 1 ) {
+ if ( *ptrk == trk ) {
return ptrk;
- if (*ptrk == NULL)
+ }
+ if (*ptrk == NULL) {
break;
+ }
ptrk = &(*ptrk)->next;
}
UndoFail( "Cannot find trk on list", (uintptr_t)trk, "cundo.c", lineNum );
@@ -668,9 +783,9 @@ static int undoIgnoreEmpty = 0;
*
*/
void UndoStart(
- char * label,
- char * format,
- ... )
+ char * label,
+ char * format,
+ ... )
{
static char buff[STR_SIZE];
va_list ap;
@@ -679,18 +794,21 @@ void UndoStart(
int inx;
int usp;
-LOG( log_undo, 1, ( "UndoStart[%d] (%s) d:%d u:%d us:"SLOG_FMT"\n", undoHead, label, undoHead, doCount, undoCount, undoStream.end ) )
+ LOG( log_undo, 1, ( "UndoStart[%d] (%s) d:%d u:%d us:"SLOG_FMT"\n", undoHead,
+ label, undoHead, doCount, undoCount, undoStream.end ) )
if (recordUndo) {
va_start( ap, format );
vsprintf( buff, format, ap );
va_end( ap );
- Rprintf( "Start(%s)[%d] d:%d u:%d us:"SLOG_FMT"\n", buff, undoHead, doCount, undoCount, undoStream.end );
+ Rprintf( "Start(%s)[%d] d:%d u:%d us:"SLOG_FMT"\n", buff, undoHead, doCount,
+ undoCount, undoStream.end );
}
if ( undoHead >= 0 ) {
us = &undoStack[undoHead];
if ( us->modCnt == 0 && us->delCnt == 0 && us->newCnt == 0 ) {
- LOG( log_undo, 1, ( " noop: %s - %s\n", us->label?us->label:"<>", label?label:"<>" ) );
+ LOG( log_undo, 1, ( " noop: %s - %s\n", us->label?us->label:"<>",
+ label?label:"<>" ) );
if ( undoIgnoreEmpty ) {
us->label = label;
return;
@@ -703,34 +821,38 @@ LOG( log_undo, 1, ( "UndoStart[%d] (%s) d:%d u:%d us:"SLOG_FMT"\n", undoHead, la
SetFileChanged();
if (doCount == UNDO_STACK_SIZE) {
- if (recordUndo) Rprintf( " Wrapped N:%d M:%d D:%d\n", us->newCnt, us->modCnt, us->delCnt );
+ if (recordUndo) { Rprintf( " Wrapped N:%d M:%d D:%d\n", us->newCnt, us->modCnt, us->delCnt ); }
/* wrapped around stack */
/* if track saved in undoStream is deleted then really deleted since
we can't get it back */
- if (!DeleteInStream( &undoStream, us->undoStart, us->undoEnd ))
+ if (!DeleteInStream( &undoStream, us->undoStart, us->undoEnd )) {
return;
+ }
/* strip off unused head of stream */
- if (!TrimStream( &undoStream, us->undoEnd ))
+ if (!TrimStream( &undoStream, us->undoEnd )) {
return;
+ }
} else if (undoCount != 0) {
- if (recordUndo) Rprintf( " Undid N:%d M:%d D:%d\n", us->newCnt, us->modCnt, us->delCnt );
+ if (recordUndo) { Rprintf( " Undid N:%d M:%d D:%d\n", us->newCnt, us->modCnt, us->delCnt ); }
/* reusing an undid entry */
/* really delete all new tracks since this point */
for( inx=0,usp = undoHead; inx<undoCount; inx++ ) {
us1 = &undoStack[usp];
- if (recordUndo) Rprintf(" U[%d] N:%d\n", usp, us1->newCnt );
+ if (recordUndo) { Rprintf(" U[%d] N:%d\n", usp, us1->newCnt ); }
for (trk=us1->newTrks; trk; trk=next) {
- if (recordUndo) Rprintf( " Free T%d @ "SLOG_FMT"\n", trk->index, (uintptr_t)trk );
+ if (recordUndo) { Rprintf( " Free T%d @ "SLOG_FMT"\n", trk->index, (uintptr_t)trk ); }
// trk->delete may not be TRUE, see SetDeleteOpInStream
- LOG( log_undo, 4, (" Free T%d @ "SLOG_FMT"\n", trk->index, (uintptr_t)trk ) );
+ LOG( log_undo, 4, (" Free T%d @ "SLOG_FMT"\n", trk->index,
+ (uintptr_t)trk ) );
next = trk->next;
FreeTrack( trk );
}
INC_UNDO_INX(usp);
}
/* strip off unused tail of stream */
- if (!TruncateStream( &undoStream, us->undoStart ))
+ if (!TruncateStream( &undoStream, us->undoStart )) {
return;
+ }
}
us->label = label;
us->modCnt = 0;
@@ -751,8 +873,9 @@ LOG( log_undo, 1, ( "UndoStart[%d] (%s) d:%d u:%d us:"SLOG_FMT"\n", undoHead, la
trk->modified = FALSE;
trk->new = FALSE;
}
- if (doCount < UNDO_STACK_SIZE)
+ if (doCount < UNDO_STACK_SIZE) {
doCount++;
+ }
SetButtons( TRUE, FALSE );
}
@@ -768,21 +891,26 @@ BOOL_T UndoModify( track_p trk )
{
undoStack_p us;
- if ( !undoActive ) return TRUE;
- if (trk == NULL) return TRUE;
+ if ( !undoActive ) { return TRUE; }
+ if (trk == NULL) { return TRUE; }
UASSERT(undoCount==0, undoCount);
UASSERT(undoHead >= 0, undoHead);
UASSERT(!IsTrackDeleted(trk), GetTrkIndex(trk));
- if (trk->modified || trk->new)
+ if (trk->modified || trk->new) {
return TRUE;
-LOG( log_undo, 2, ( " UndoModify( T%d, E%d, X%ld @ "SLOG_FMT"\n", trk->index, trk->endCnt, trk->extraSize, (uintptr_t)trk ) )
- if ( (GetTrkBits(trk)&TB_CARATTACHED)!=0 )
+ }
+ LOG( log_undo, 2, ( " UndoModify( T%d, E%d, X%ld @ "SLOG_FMT"\n", trk->index,
+ trk->endCnt, trk->extraSize, (uintptr_t)trk ) )
+ if ( (GetTrkBits(trk)&TB_CARATTACHED)!=0 ) {
needAttachTrains = TRUE;
+ }
us = &undoStack[undoHead];
- if (recordUndo)
+ if (recordUndo) {
Rprintf( " MOD T%d @ "SLOG_FMT"\n", trk->index, (uintptr_t)trk );
- if (!WriteObject( &undoStream, ModifyOp, trk ))
+ }
+ if (!WriteObject( &undoStream, ModifyOp, trk )) {
return FALSE;
+ }
us->undoEnd = undoStream.end;
trk->modified = TRUE;
us->modCnt++;
@@ -804,29 +932,36 @@ LOG( log_undo, 2, ( " UndoModify( T%d, E%d, X%ld @ "SLOG_FMT"\n", trk->index,
BOOL_T UndoDelete( track_p trk )
{
undoStack_p us;
- if ( !undoActive ) return TRUE;
-LOG( log_undo, 2, ( " UndoDelete( T%d, E%d, X%ld @ "SLOG_FMT" )\n", trk->index, trk->endCnt, trk->extraSize, (uintptr_t)trk ) )
- if ( (GetTrkBits(trk)&TB_CARATTACHED)!=0 )
+ if ( !undoActive ) { return TRUE; }
+ LOG( log_undo, 2, ( " UndoDelete( T%d, E%d, X%ld @ "SLOG_FMT" )\n",
+ trk->index, trk->endCnt, trk->extraSize, (uintptr_t)trk ) )
+ if ( (GetTrkBits(trk)&TB_CARATTACHED)!=0 ) {
needAttachTrains = TRUE;
+ }
us = &undoStack[undoHead];
- if (recordUndo)
+ if (recordUndo) {
Rprintf( " DEL T%d @ "SLOG_FMT"\n", trk->index, (uintptr_t)trk );
+ }
UASSERT( !IsTrackDeleted(trk), trk->index );
if ( trk->modified ) {
- if (!SetDeleteOpInStream( &undoStream, us->undoStart, us->undoEnd, trk ))
+ if (!SetDeleteOpInStream( &undoStream, us->undoStart, us->undoEnd, trk )) {
return FALSE;
+ }
} else if ( !trk->new ) {
LOG( log_undo, 3, ( " Write DeleteOp object\n" ) );
- if (!WriteObject( &undoStream, DeleteOp, trk ))
- return FALSE;
+ if (!WriteObject( &undoStream, DeleteOp, trk )) {
+ return FALSE;
+ }
us->undoEnd = undoStream.end;
} else {
LOG( log_undo, 3, ( " Remove New object\n" ) );
track_p * ptrk;
- if (us->newTrks == trk)
+ if (us->newTrks == trk) {
us->newTrks = trk->next;
- if (!(ptrk = FindParent( trk, __LINE__ )))
+ }
+ if (!(ptrk = FindParent( trk, __LINE__ ))) {
return FALSE;
+ }
if (trk->next == NULL) {
UASSERT( to_last == &(*ptrk)->next, (uintptr_t)&(*ptrk)->next );
to_last = ptrk;
@@ -852,22 +987,26 @@ LOG( log_undo, 2, ( " UndoDelete( T%d, E%d, X%ld @ "SLOG_FMT" )\n", trk->inde
*/
BOOL_T UndoNew( track_p trk )
{
- undoStack_p us;
- if (!undoActive)
+ undoStack_p us;
+ if (!undoActive) {
return TRUE;
+ }
-LOG( log_undo, 2, ( " UndoNew( T%d @ "SLOG_FMT")\n", trk->index, (uintptr_t)trk ) )
-
- if (recordUndo)
+ LOG( log_undo, 2, ( " UndoNew( T%d @ "SLOG_FMT")\n", trk->index,
+ (uintptr_t)trk ) )
+
+ if (recordUndo) {
Rprintf( " NEW T%d @"SLOG_FMT"\n", trk->index, (uintptr_t)trk );
+ }
UASSERT(undoCount==0, undoCount);
UASSERT(undoHead >= 0, undoHead);
us = &undoStack[undoHead];
trk->new = TRUE;
- if (us->newTrks == NULL)
+ if (us->newTrks == NULL) {
us->newTrks = trk;
+ }
us->newCnt++;
-
+
return TRUE;
}
@@ -877,7 +1016,7 @@ LOG( log_undo, 2, ( " UndoNew( T%d @ "SLOG_FMT")\n", trk->index, (uintptr_t)t
*/
void UndoEnd( void )
{
- if (recordUndo) Rprintf( "End[%d] d:%d\n", undoHead, doCount );
+ if (recordUndo) { Rprintf( "End[%d] d:%d\n", undoHead, doCount ); }
/*undoActive = FALSE;*/
if ( needAttachTrains ) {
AttachTrains();
@@ -893,7 +1032,7 @@ void UndoEnd( void )
void UndoClear( void )
{
int inx;
-LOG( log_undo, 2, ( " UndoClear()\n" ) )
+ LOG( log_undo, 2, ( " UndoClear()\n" ) )
undoActive = FALSE;
undoHead = -1;
undoCount = 0;
@@ -930,35 +1069,42 @@ void UndoUndo( void * unused )
return;
}
- int rc = ConfirmReset( FALSE );
+ ConfirmReset( FALSE );
wDrawDelayUpdate( mainD.d, TRUE );
us = &undoStack[undoHead];
-LOG( log_undo, 1, ( " UndoUndo[%d] d:%d u:%d N:%d M:%d D:%d %s\n", undoHead, doCount, undoCount, us->newCnt, us->modCnt, us->delCnt, us->needRedo?"Redo":"" ) )
- if (recordUndo) Rprintf( "Undo[%d] d:%d u:%d N:%d M:%d D:%d\n", undoHead, doCount, undoCount, us->newCnt, us->modCnt, us->delCnt );
+ LOG( log_undo, 1, ( " UndoUndo[%d] d:%d u:%d N:%d M:%d D:%d %s\n", undoHead,
+ doCount, undoCount, us->newCnt, us->modCnt, us->delCnt,
+ us->needRedo?"Redo":"" ) )
+ if (recordUndo) { Rprintf( "Undo[%d] d:%d u:%d N:%d M:%d D:%d\n", undoHead, doCount, undoCount, us->newCnt, us->modCnt, us->delCnt ); }
//redrawAll = (us->newCnt+us->modCnt) > incrementalDrawLimit;
- redrawAll = TRUE;
+ redrawAll = TRUE;
if (!redrawAll) {
- for (trk=us->newTrks; trk; trk=trk->next )
+ for (trk=us->newTrks; trk; trk=trk->next ) {
UndrawNewTrack( trk );
+ }
RedrawInStream( &undoStream, us->undoStart, us->undoEnd, FALSE );
}
- if (us->needRedo)
+ if (us->needRedo) {
us->redoStart = us->redoEnd = redoStream.end;
- if (!(us->oldTail=FindParent(us->newTrks,__LINE__)))
- return;
+ }
+ if (!(us->oldTail=FindParent(us->newTrks,__LINE__))) {
+ return;
+ }
us->newTail = to_last;
to_last = us->oldTail;
*to_last = NULL;
needAttachTrains = FALSE;
undoStream.curr = us->undoStart;
while ( undoStream.curr < us->undoEnd ) {
- if (!ReadObject( &undoStream, us->needRedo ))
+ if (!ReadObject( &undoStream, us->needRedo )) {
return;
+ }
}
- if (us->needRedo)
+ if (us->needRedo) {
us->redoEnd = redoStream.end;
+ }
us->needRedo = FALSE;
if ( needAttachTrains ) {
@@ -966,10 +1112,11 @@ LOG( log_undo, 1, ( " UndoUndo[%d] d:%d u:%d N:%d M:%d D:%d %s\n", undoHead,
needAttachTrains = FALSE;
}
UpdateAllElevations();
- if (!redrawAll)
+ if (!redrawAll) {
RedrawInStream( &undoStream, us->undoStart, us->undoEnd, TRUE );
- else
+ } else {
DoRedraw();
+ }
oldCount = trackCount;
trackCount = us->trackCount;
@@ -1009,15 +1156,16 @@ void UndoRedo( void * unused )
return;
}
- int rc = ConfirmReset( FALSE );
+ ConfirmReset( FALSE );
wDrawDelayUpdate( mainD.d, TRUE );
INC_UNDO_INX( undoHead );
us = &undoStack[undoHead];
-LOG( log_undo, 1, ( " UndoRedo[%d] d:%d u:%d N:%d M:%d D:%d\n", undoHead, doCount, undoCount, us->newCnt, us->modCnt, us->delCnt ) )
- if (recordUndo) Rprintf( "Redo[%d] d:%d u:%d N:%d M:%d D:%d\n", undoHead, doCount, undoCount, us->newCnt, us->modCnt, us->delCnt );
+ LOG( log_undo, 1, ( " UndoRedo[%d] d:%d u:%d N:%d M:%d D:%d\n", undoHead,
+ doCount, undoCount, us->newCnt, us->modCnt, us->delCnt ) )
+ if (recordUndo) { Rprintf( "Redo[%d] d:%d u:%d N:%d M:%d D:%d\n", undoHead, doCount, undoCount, us->newCnt, us->modCnt, us->delCnt ); }
//redrawAll = (us->newCnt+us->modCnt) > incrementalDrawLimit;
- redrawAll = TRUE;
+ redrawAll = TRUE;
if (!redrawAll) {
RedrawInStream( &redoStream, us->redoStart, us->redoEnd, FALSE );
}
@@ -1031,8 +1179,9 @@ LOG( log_undo, 1, ( " UndoRedo[%d] d:%d u:%d N:%d M:%d D:%d\n", undoHead, doC
needAttachTrains = FALSE;
redoStream.curr = us->redoStart;
while ( redoStream.curr < us->redoEnd ) {
- if (!ReadObject( &redoStream, FALSE ))
+ if (!ReadObject( &redoStream, FALSE )) {
return;
+ }
}
if ( needAttachTrains ) {
@@ -1041,11 +1190,13 @@ LOG( log_undo, 1, ( " UndoRedo[%d] d:%d u:%d N:%d M:%d D:%d\n", undoHead, doC
}
UpdateAllElevations();
if (!redrawAll) {
- for (trk=us->newTrks; trk; trk=trk->next )
+ for (trk=us->newTrks; trk; trk=trk->next ) {
DrawNewTrack( trk );
+ }
RedrawInStream( &redoStream, us->redoStart, us->redoEnd, TRUE );
- } else
+ } else {
DoRedraw();
+ }
oldCount = trackCount;
trackCount = us->trackCount;
diff --git a/app/bin/cundo.h b/app/bin/cundo.h
index 4b7fca1..2282835 100644
--- a/app/bin/cundo.h
+++ b/app/bin/cundo.h
@@ -17,15 +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
*/
-#ifndef HAVE_CUNDO_H
-#define HAVE_CUNDO_H
+#ifndef HAVE_CUNDO_H
+#define HAVE_CUNDO_H
#include "common.h"
extern wBool_t undoStatus; // Status of the last Undo/Redo command
+void Rdump( FILE * );
void UndoUndo( void * unused );
void UndoRedo( void * unused );
void UndoResume( void );
diff --git a/app/bin/custom.c b/app/bin/custom.c
index 1ec38e0..e53372f 100644
--- a/app/bin/custom.c
+++ b/app/bin/custom.c
@@ -18,7 +18,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 "cjoin.h"
@@ -88,16 +88,18 @@ void InitCmdEasement( void )
}
void DoEasementRedir( void * unused )
{
- if (easementP)
+ if (easementP) {
easementP(NULL);
+ }
}
#ifdef STRUCTDESIGNER
static addButtonCallBack_t structDesignerP;
void DoStructDesignerRedir( void )
{
- if (structDesignerP)
+ if (structDesignerP) {
structDesignerP(NULL);
+ }
}
#endif
@@ -121,10 +123,10 @@ BOOL_T Initialize( void )
InitTrkDraw();
InitTrkBlock();
- InitTrkSwitchMotor();
- InitTrkSignal();
- InitTrkControl();
- InitTrkSensor();
+ InitTrkSwitchMotor();
+ InitTrkSignal();
+ InitTrkControl();
+ InitTrkSensor();
InitCarDlg();
InitCmdNote();
@@ -142,72 +144,61 @@ void InitCustom( void )
char *buf = malloc(1024);
/* Initialize some localized strings */
- if (sTurnoutDesignerW == NULL)
- {
+ if (sTurnoutDesignerW == NULL) {
sprintf(buf, _("%s Turnout Designer"), Product);
sTurnoutDesignerW = strdup(buf);
}
- if (sAboutProd == NULL)
- {
+ if (sAboutProd == NULL) {
sprintf(buf, _("%s Version %s"), Product, Version);
sAboutProd = strdup(buf);
}
- if (sSourceFilePattern == NULL)
- {
+ if (sSourceFilePattern == NULL) {
sprintf(buf, _("All %s Files (*.xtc,*.xtce)|*.xtc;*.xtce|"
- "%s Trackplan (*.xtc)|*.xtc|"
- "%s Extended Trackplan (*.xtce)|*.xtce|"
- "All Files (*)|*"),
- Product,
- Product,
- Product );
+ "%s Trackplan (*.xtc)|*.xtc|"
+ "%s Extended Trackplan (*.xtce)|*.xtce|"
+ "All Files (*)|*"),
+ Product,
+ Product,
+ Product );
sSourceFilePattern = strdup(buf);
}
- if (sSaveFilePattern == NULL)
- {
+ if (sSaveFilePattern == NULL) {
sprintf(buf, _("%s Trackplan (*.xtc)|*.xtc|"
- "%s Extended Trackplan (*.xtce)|*.xtce|"
- "All Files (*)|*"),
- Product,
- Product );
+ "%s Extended Trackplan (*.xtce)|*.xtce|"
+ "All Files (*)|*"),
+ Product,
+ Product );
sSaveFilePattern = strdup(buf);
}
- if (sImageFilePattern == NULL)
- {
+ if (sImageFilePattern == NULL) {
sprintf(buf,_("All Files (*)|*"));
sImageFilePattern = strdup(buf);
}
- if (sImportFilePattern == NULL)
- {
+ if (sImportFilePattern == NULL) {
sprintf(buf, _("%s Import Files (*.xti)|*.xti"), Product );
sImportFilePattern = strdup(buf);
}
- if (sDXFFilePattern == NULL)
- {
+ if (sDXFFilePattern == NULL) {
sDXFFilePattern = strdup(_("Data Exchange Format Files (*.dxf)|*.dxf"));
}
- if (sSVGFilePattern == NULL)
- {
- sSVGFilePattern = strdup(_("Scalable Vector Graphics Format Files (*.svg)|*.svg" ));
+ if (sSVGFilePattern == NULL) {
+ sSVGFilePattern = strdup(
+ _("Scalable Vector Graphics Format Files (*.svg)|*.svg" ));
}
- if (sRecordFilePattern == NULL)
- {
+ if (sRecordFilePattern == NULL) {
sprintf(buf, _("%s Record Files (*.xtr)|*.xtr"), Product);
sRecordFilePattern = strdup(buf);
}
- if (sNoteFilePattern == NULL)
- {
+ if (sNoteFilePattern == NULL) {
sprintf(buf, _("%s Note Files (*.not)|*.not"), Product);
sNoteFilePattern = strdup(buf);
}
- if (sLogFilePattern == NULL)
- {
+ if (sLogFilePattern == NULL) {
sprintf(buf, _("%s Log Files (*.log)|*.log"), Product);
sLogFilePattern = strdup(buf);
}
- if (sPartsListFilePattern == NULL)
- {
+ if (sPartsListFilePattern == NULL) {
sprintf(buf, _("%s PartsList Files (*.txt)|*.txt"), Product);
sPartsListFilePattern = strdup(buf);
}
@@ -219,28 +210,23 @@ void InitCustom( void )
void CleanupCustom( void )
{
/* Free dynamically allocated strings */
- if (sTurnoutDesignerW)
- {
+ if (sTurnoutDesignerW) {
free(sTurnoutDesignerW);
sTurnoutDesignerW = NULL;
}
- if (sAboutProd)
- {
+ if (sAboutProd) {
free(sAboutProd);
sAboutProd = NULL;
}
- if (sSourceFilePattern)
- {
+ if (sSourceFilePattern) {
free(sSourceFilePattern);
sSourceFilePattern = NULL;
}
- if (sImportFilePattern)
- {
+ if (sImportFilePattern) {
free(sImportFilePattern);
sImportFilePattern = NULL;
}
- if (sDXFFilePattern)
- {
+ if (sDXFFilePattern) {
free(sDXFFilePattern);
sDXFFilePattern = NULL;
}
@@ -248,23 +234,19 @@ void CleanupCustom( void )
free(sSVGFilePattern);
sSVGFilePattern = NULL;
}
- if (sRecordFilePattern)
- {
+ if (sRecordFilePattern) {
free(sRecordFilePattern);
sRecordFilePattern = NULL;
}
- if (sNoteFilePattern)
- {
+ if (sNoteFilePattern) {
free(sNoteFilePattern);
sNoteFilePattern = NULL;
}
- if (sLogFilePattern)
- {
+ if (sLogFilePattern) {
free(sLogFilePattern);
sLogFilePattern = NULL;
}
- if (sPartsListFilePattern)
- {
+ if (sPartsListFilePattern) {
free(sPartsListFilePattern);
sPartsListFilePattern = NULL;
}
diff --git a/app/bin/custom.h b/app/bin/custom.h
index abef217..d14bff7 100644
--- a/app/bin/custom.h
+++ b/app/bin/custom.h
@@ -1,5 +1,5 @@
/** \file custom.h
- *
+ *
*/
/* XTrkCad - Model Railroad CAD
@@ -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
*/
#ifndef CUSTOM_H
@@ -25,30 +25,6 @@
#include "common.h"
-#define ICON_WIDTH (64)
-#define ICON_HEIGHT (64)
-
-#define BG_SELECT (0)
-#define BG_ZOOM (1)
-#define BG_UNDO (2)
-#define BG_EASE (3)
-#define BG_TRKCRT (4)
-#define BG_TRKMOD (5)
-#define BG_TRKGRP (6)
-#define BG_MISCCRT (7)
-#define BG_RULER (8)
-#define BG_LAYER (9)
-#define BG_HOTBAR (10)
-#define BG_SNAP (11)
-#define BG_TRAIN (12)
-#define BG_COUNT (13)
-#define BG_FILE (14)
-#define BG_CONTROL (15)
-#define BG_EXPORTIMPORT (16)
-#define BG_PRINT (17)
-#define BG_BIGGAP (1<<8)
-extern int cmdGroup;
-
extern char * sProdName;
extern char * sProdNameLower;
extern char * sProdNameUpper;
@@ -66,6 +42,7 @@ extern char * sClipboardF;
extern char * sParamQF;
extern char * sUndoF;
extern char * sAuditF;
+extern char * sTipF;
extern char * sSourceFilePattern;
extern char * sSaveFilePattern;
@@ -126,8 +103,10 @@ void InitCmdPan( wMenu_p menu );
void InitCmdPan2( wMenu_p menu );
void InitCmdDelete( void );
void InitCmdSplit( wMenu_p menu );
+void InitCmdTies( void );
void InitCmdTunnel( void );
void InitCmdBridge( void );
+void InitCmdRoadbed( void );
void InitCmdRuler( wMenu_p menu );
void InitCmdParallel( wMenu_p menu );
@@ -142,7 +121,6 @@ void InitCmdUndo( void );
void InitCmdStruct( wMenu_p menu );
void InitCmdAboveBelow( void );
//void InitCmdEnumerate( void );
-void InitCmdExport( void );
void InitCmdEasement( void );
char * MakeWindowTitle( char * );
diff --git a/app/bin/dbench.c b/app/bin/dbench.c
index 7619fcb..a6284ea 100644
--- a/app/bin/dbench.c
+++ b/app/bin/dbench.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 "param.h"
@@ -53,42 +53,45 @@ static char *benchTypeS[] = { "", N_(" L-Girder"), N_(" T-Girder") };
#include "bitmaps/bo_ti.xpm"
typedef struct {
- char * name;
- char ** xpm;
- wIcon_p icon;
- } orientData_t;
+ char * name;
+ char ** xpm;
+ wIcon_p icon;
+} orientData_t;
static orientData_t rectOrientD[] = {
- { N_("On Edge"), bo_edge_xpm },
- { N_("Flat"), bo_flat_xpm } };
+ { N_("On Edge"), bo_edge_xpm },
+ { N_("Flat"), bo_flat_xpm }
+};
static orientData_t lgirderOrientD[] = {
- { N_("Left"), bo_ll_xpm },
- { N_("Right"), bo_lr_xpm },
- { N_("Left-Down"), bo_lld_xpm },
- { N_("Right-Down"), bo_lrd_xpm },
- { N_("Left-Up"), bo_llu_xpm },
- { N_("Right-Up"), bo_lru_xpm },
- { N_("Left-Inverted"), bo_lli_xpm },
- { N_("Right-Inverted"), bo_lri_xpm } };
+ { N_("Left"), bo_ll_xpm },
+ { N_("Right"), bo_lr_xpm },
+ { N_("Left-Down"), bo_lld_xpm },
+ { N_("Right-Down"), bo_lrd_xpm },
+ { N_("Left-Up"), bo_llu_xpm },
+ { N_("Right-Up"), bo_lru_xpm },
+ { N_("Left-Inverted"), bo_lli_xpm },
+ { N_("Right-Inverted"), bo_lri_xpm }
+};
static orientData_t tgirderOrientD[] = {
- { N_("Normal"), bo_t_xpm },
- { N_("Right"), bo_tr_xpm },
- { N_("Left"), bo_tl_xpm },
- { N_("Inverted"), bo_ti_xpm } };
+ { N_("Normal"), bo_t_xpm },
+ { N_("Right"), bo_tr_xpm },
+ { N_("Left"), bo_tl_xpm },
+ { N_("Inverted"), bo_ti_xpm }
+};
static struct {
- int cnt;
- orientData_t *data;
- } orientD[] = { {2, rectOrientD}, {8, lgirderOrientD}, {4, tgirderOrientD} };
+ int cnt;
+ orientData_t *data;
+} orientD[] = { {2, rectOrientD}, {8, lgirderOrientD}, {4, tgirderOrientD} };
+
-
/* L-N R-N L-D R-D L-U R-U L-I R-I */
static BOOL_T lgirderFlangeLeft[] = { 1, 0, 0, 1, 1, 0, 0, 1 };
static BOOL_T lgirderFlangeDashed[] = { 1, 1, 1, 1, 0, 0, 0, 0 };
static BOOL_T lgirderNarrow[] = { 1, 1, 0, 0, 0, 0, 1, 1 };
EXPORT void BenchUpdateOrientationList(
- long benchData,
- wList_p list )
+ long benchData,
+ wList_p list )
{
long type;
orientData_t *op;
@@ -99,29 +102,30 @@ EXPORT void BenchUpdateOrientationList(
op = orientD[type].data;
for (cnt=orientD[type].cnt-1; cnt>=0; cnt--,op++) {
#ifdef WINDOWS
- if (op->icon == NULL)
+ if (op->icon == NULL) {
op->icon = wIconCreatePixMap( op->xpm );
+ }
wListAddValue( list, NULL, op->icon, op );
#else
/* gtk_combo_find is upset if we try to put anything other that a label on a list */
wListAddValue( list, _(op->name), NULL, op );
#endif
- }
- wListSetIndex( list, 0 );
+ }
+ wListSetIndex( list, 0 );
}
typedef struct {
- long type;
- long width;
- long height0, height1;
- } benchType_t, *benchType_p;
+ long type;
+ long width;
+ long height0, height1;
+} benchType_t, *benchType_p;
static dynArr_t benchType_da;
#define benchType(N) DYNARR_N( benchType_t, benchType_da, N )
static void AddBenchTypes(
- long type,
- const char * key,
- const char * defvalue )
+ long type,
+ const char * key,
+ const char * defvalue )
{
benchType_p bt;
const char *value, *cp;
@@ -140,7 +144,8 @@ static void AddBenchTypes(
bt->height0 = strtol( cp=cq, &cq, 10 );
bt->height1 = strtol( cp=cq, &cq, 10 );
if ( cp == cq ) {
- NoticeMessage( _("Bad BenchType for %s:\n%s"), _("Continue"), NULL, key, value );
+ NoticeMessage( _("Bad BenchType for %s:\n%s"), _("Continue"), NULL, key,
+ value );
benchType_da.cnt--;
return;
}
@@ -167,12 +172,14 @@ EXPORT void BenchLoadLists( wList_p choiceL, wList_p orientL )
bt = &benchType(inx);
for (height=bt->height0; height<=bt->height1; height++ ) {
benchData = bt->type<<24 | bt->width<<17 | height<<9;
- sprintf( message, "%s", (bt->type==B_LGRIDER?"L-":bt->type==B_TGRIDER?"T-":"") );
+ sprintf( message, "%s", (bt->type==B_LGRIDER?"L-":bt->type==B_TGRIDER
+ ?"T-":"") );
cp = message+strlen(message);
- if ( units==UNITS_ENGLISH )
+ if ( units==UNITS_ENGLISH ) {
sprintf( cp, "%ld\"x%ld\"", bt->width, height );
- else
+ } else {
sprintf( cp, "%ldmm x %ldmm", height*25, bt->width*25 );
+ }
wListAddValue( choiceL, message, NULL, I2VP(benchData) );
}
}
@@ -182,15 +189,15 @@ EXPORT void BenchLoadLists( wList_p choiceL, wList_p orientL )
EXPORT long GetBenchData(
- long benchData,
- long orient )
+ long benchData,
+ long orient )
{
return (benchData&0xFFFFFF00)|(orient&0xFF);
}
EXPORT wIndex_t GetBenchListIndex(
- long benchData )
+ long benchData )
{
wIndex_t inx, cnt;
benchType_p bt;
@@ -204,11 +211,12 @@ EXPORT wIndex_t GetBenchListIndex(
for ( inx=cnt=0; inx<benchType_da.cnt; inx++ ) {
bt = &benchType(inx);
if ( bt->type == type &&
- bt->width == iwidth ) {
- if ( iheight < bt->height0 )
+ bt->width == iwidth ) {
+ if ( iheight < bt->height0 ) {
bt->height0 = iheight;
- else if ( iheight > bt->height1 )
+ } else if ( iheight > bt->height1 ) {
bt->height1 = iheight;
+ }
cnt += (wIndex_t)(iheight - bt->height0);
return cnt;
}
@@ -224,13 +232,13 @@ EXPORT wIndex_t GetBenchListIndex(
EXPORT void DrawBench(
- drawCmd_p d,
- coOrd p0,
- coOrd p1,
- wDrawColor color1,
- wDrawColor color2,
- long option,
- long benchData )
+ drawCmd_p d,
+ coOrd p0,
+ coOrd p1,
+ wDrawColor color1,
+ wDrawColor color2,
+ long option,
+ long benchData )
{
long orient;
coOrd pp[4];
@@ -257,16 +265,17 @@ EXPORT void DrawBench(
DrawPoly( d, 4, pp, NULL, color1, 0, DRAW_FILL );
/* Draw Outline */
if ( /*color1 != color2 &&*/
- ( ( d->scale < ((d->options&DC_PRINT)?(twoRailScale*2+1):twoRailScale) ) || /* big enough scale */
- ( d->funcs == &tempSegDrawFuncs ) ) ) {
+ DrawTwoRails(d,1) ||
+ d->funcs == &tempSegDrawFuncs ) {
DrawPoly( d, 4, pp, NULL, color2, 0, DRAW_CLOSED );
if ( color1 != color2 && type != B_RECT ) {
oldOptions = d->options;
if ( type == B_LGRIDER || orient == 1 || orient == 2 ) {
- if ( type == B_LGRIDER && lgirderFlangeDashed[orient] )
+ if ( type == B_LGRIDER && lgirderFlangeDashed[orient] ) {
d->options |= DC_DASH;
+ }
if ( (type == B_LGRIDER && lgirderFlangeLeft[orient]) ||
- (type == B_TGRIDER && orient == 1) ) {
+ (type == B_TGRIDER && orient == 1) ) {
Translate( &pp[0], pp[1], a+90, thickness );
Translate( &pp[3], pp[2], a+90, thickness );
} else {
@@ -275,14 +284,15 @@ EXPORT void DrawBench(
}
DrawLine( d, pp[0], pp[3], 0, color2 );
} else {
- Translate( &pp[0], p0, a+90, thickness/2.0 );
- Translate( &pp[1], p0, a-90, thickness/2.0 );
- Translate( &pp[2], p1, a-90, thickness/2.0 );
- Translate( &pp[3], p1, a+90, thickness/2.0 );
- if ( orient == 0 )
- d->options |= DC_DASH;
- DrawLine( d, pp[0], pp[3], 0, color2 );
- DrawLine( d, pp[1], pp[2], 0, color2 );
+ Translate( &pp[0], p0, a+90, thickness/2.0 );
+ Translate( &pp[1], p0, a-90, thickness/2.0 );
+ Translate( &pp[2], p1, a-90, thickness/2.0 );
+ Translate( &pp[3], p1, a+90, thickness/2.0 );
+ if ( orient == 0 ) {
+ d->options |= DC_DASH;
+ }
+ DrawLine( d, pp[0], pp[3], 0, color2 );
+ DrawLine( d, pp[1], pp[2], 0, color2 );
}
d->options = oldOptions;
}
@@ -301,8 +311,8 @@ EXPORT addButtonCallBack_t InitBenchDialog( void )
EXPORT void BenchGetDesc(
- long benchData,
- char * desc )
+ long benchData,
+ char * desc )
{
long orient;
long type;
@@ -314,49 +324,52 @@ EXPORT void BenchGetDesc(
iwidth = (benchData>>17)&0x7f;
type = (benchData>>24)&0xff;
- if ( units==UNITS_ENGLISH )
+ if ( units==UNITS_ENGLISH ) {
sprintf( name, "%ld\"x%ld\"", iwidth, iheight );
- else
+ } else {
sprintf( name, "%ldmm x %ldmm", iheight*25, iwidth*25 );
+ }
sprintf( desc, "%s%s %s",
- (type==B_LGRIDER?"L - ":type==B_TGRIDER?"T - ":""),
- name,
- _(orientD[type].data[(int)orient].name) );
+ (type==B_LGRIDER?"L - ":type==B_TGRIDER?"T - ":""),
+ name,
+ _(orientD[type].data[(int)orient].name) );
}
typedef struct {
- long type;
- long width;
- long height;
- DIST_T length;
- } benchEnum_t, *benchEnum_p;
+ long type;
+ long width;
+ long height;
+ DIST_T length;
+} benchEnum_t, *benchEnum_p;
static dynArr_t benchEnum_da;
#define benchEnum(N) DYNARR_N( benchEnum_t, benchEnum_da, N )
static void PrintBenchLine(
- char * line,
- benchEnum_p bp )
+ char * line,
+ benchEnum_p bp )
{
char name[40];
- if ( units==UNITS_ENGLISH )
+ if ( units==UNITS_ENGLISH ) {
sprintf( name, "%ld\"x%ld\"", bp->width, bp->height );
- else
+ } else {
sprintf( name, "%ldmm x %ldmm", bp->height*25, bp->width*25 );
- sprintf( line, "%s - %s%s", FormatDistance(bp->length), name, benchTypeS[bp->type] );
+ }
+ sprintf( line, "%s - %s%s", FormatDistance(bp->length), name,
+ benchTypeS[bp->type] );
}
EXPORT void CountBench(
- long benchData,
- DIST_T length )
+ long benchData,
+ DIST_T length )
{
int inx;
- long orient;
+// long orient;
long type;
long iwidth, iheight;
benchEnum_p bp;
- orient = benchData&0xFF;
+// orient = benchData&0xFF;
iheight = (benchData>>9)&0xff;
iwidth = (benchData>>17)&0x7f;
type = (benchData>>24)&0xff;
@@ -364,8 +377,8 @@ EXPORT void CountBench(
for ( inx=0; inx<benchEnum_da.cnt; inx++ ) {
bp = &benchEnum(inx);
if ( bp->type == type &&
- bp->width == iwidth &&
- bp->height == iheight ) {
+ bp->width == iwidth &&
+ bp->height == iheight ) {
bp->length += length;
goto foundBenchEnum;
}
@@ -379,20 +392,21 @@ EXPORT void CountBench(
foundBenchEnum:
PrintBenchLine( message, bp );
size_t width = strlen(message);
- if ( width > enumerateMaxDescLen)
+ if ( width > enumerateMaxDescLen) {
enumerateMaxDescLen = (int)width;
+ }
}
static int Cmp_benchEnum(
- const void *p1,
- const void *p2 )
+ const void *p1,
+ const void *p2 )
{
benchEnum_p bp1 = (benchEnum_p)p1;
benchEnum_p bp2 = (benchEnum_p)p2;
long diff;
- if ( ( diff = bp1->type-bp2->type ) != 0 ) return (int)diff;
- if ( ( diff = bp1->width-bp2->width ) != 0 ) return (int)diff;
- if ( ( diff = bp1->height-bp2->height ) != 0 ) return (int)diff;
+ if ( ( diff = bp1->type-bp2->type ) != 0 ) { return (int)diff; }
+ if ( ( diff = bp1->width-bp2->width ) != 0 ) { return (int)diff; }
+ if ( ( diff = bp1->height-bp2->height ) != 0 ) { return (int)diff; }
return 0;
}
@@ -402,7 +416,7 @@ EXPORT void TotalBench( void )
char title[STR_SIZE];
benchEnum_p bp;
- qsort( benchEnum_da.ptr, benchEnum_da.cnt, sizeof *bp, Cmp_benchEnum );
+ qsort( &benchEnum(0), benchEnum_da.cnt, sizeof *bp, Cmp_benchEnum );
for ( inx=0; inx<benchEnum_da.cnt; inx++ ) {
bp = &benchEnum(inx);
if ( bp->length > 0 ) {
diff --git a/app/bin/dbitmap.c b/app/bin/dbitmap.c
index 62c708e..0732065 100644
--- a/app/bin/dbitmap.c
+++ b/app/bin/dbitmap.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 "custom.h"
@@ -81,8 +81,9 @@ static drawCmd_t bitmap_d = {
* \param yPos The position.
*/
-static void DrawTextCenterXPosY( char *string, wFont_p font, wFontSize_t fontSize,
- POS_T yPos )
+static void DrawTextCenterXPosY( char *string, wFont_p font,
+ wFontSize_t fontSize,
+ POS_T yPos )
{
coOrd textSize;
coOrd p;
@@ -142,8 +143,8 @@ static int SaveBitmapFile(
{
bool result;
- assert( fileName != NULL );
- assert( files == 1 );
+ CHECK( fileName != NULL );
+ CHECK( files == 1 );
wSetCursor( mainD.d, wCursorWait );
InfoMessage( _( "Drawing tracks to bitmap" ) );
diff --git a/app/bin/dcar.c b/app/bin/dcar.c
index 5607738..11a5a1e 100644
--- a/app/bin/dcar.c
+++ b/app/bin/dcar.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 "cselect.h"
@@ -36,7 +36,7 @@ static int log_carInvList;
static int log_carDlgState;
static int log_carDlgList;
-static paramFloatRange_t r0_99999 = { 0, 99999, 80 };
+//static paramFloatRange_t r0_99999 = { 0, 99999, 80 };
static paramFloatRange_t r0d001_99999 = { 0.001, 99999, 80 };
static paramFloatRange_t r9999_9999 = {-99999, 99999, 80};
static paramIntegerRange_t i1_999999999 = { 1, 999999999, 80, PDO_NORANGECHECK_HIGH };
@@ -56,9 +56,9 @@ static void CarInvListUpdate( carItem_p item );
#define T_NUMBER (6)
typedef struct {
- char * name;
- long value;
- } nameLongMap_t;
+ char * name;
+ long value;
+} nameLongMap_t;
#define CAR_DESC_COUPLER_MODE_BODY (1L<<0)
@@ -74,40 +74,40 @@ typedef struct {
typedef struct carProto_t * carProto_p;
typedef struct {
- DIST_T carLength;
- DIST_T carWidth;
- DIST_T truckCenter;
- DIST_T truckCenterOffset;
- DIST_T coupledLength;
- } carDim_t;
+ DIST_T carLength;
+ DIST_T carWidth;
+ DIST_T truckCenter;
+ DIST_T truckCenterOffset;
+ DIST_T coupledLength;
+} carDim_t;
typedef struct {
- char * number;
- FLOAT_T purchPrice;
- FLOAT_T currPrice;
- long condition;
- long purchDate;
- long serviceDate;
- char * notes;
- } carData_t;
+ char * number;
+ FLOAT_T purchPrice;
+ FLOAT_T currPrice;
+ long condition;
+ long purchDate;
+ long serviceDate;
+ char * notes;
+} carData_t;
struct carItem_t {
- long index;
- SCALEINX_T scaleInx;
- char * contentsLabel;
- char * title;
- carProto_p proto;
- DIST_T barScale;
- wDrawColor color;
- long options;
- long type;
- carDim_t dim;
- carData_t data;
- wIndex_t segCnt;
- trkSeg_p segPtr;
- track_p car;
- coOrd pos;
- ANGLE_T angle;
- };
+ long index;
+ SCALEINX_T scaleInx;
+ char * contentsLabel;
+ char * title;
+ carProto_p proto;
+ DIST_T barScale;
+ wDrawColor color;
+ long options;
+ long type;
+ carDim_t dim;
+ carData_t data;
+ wIndex_t segCnt;
+ trkSeg_p segPtr;
+ track_p car;
+ coOrd pos;
+ ANGLE_T angle;
+};
/*
@@ -117,23 +117,24 @@ struct carItem_t {
typedef struct {
- char * ptr;
- int len;
- } tabString_t, *tabString_p;
+ char * ptr;
+ int len;
+} tabString_t, *tabString_p;
static void TabStringExtract(
- char * string,
- int count,
- tabString_t * tabs )
+ char * string,
+ int count,
+ tabString_t * tabs )
{
int inx;
char * next = string;
for ( inx=0; inx<count; inx++ ) {
tabs[inx].ptr = string;
- if ( next )
- next = strchr( string, '\t' );
+ if ( next ) {
+ next = strchr( string, '\t' );
+ }
if ( next ) {
tabs[inx].len = (int)(next-string);
string = next+1;
@@ -150,7 +151,7 @@ static void TabStringExtract(
static char * TabStringDup(
- tabString_t * tab )
+ tabString_t * tab )
{
char * ret;
ret = MyMalloc( tab->len+1 );
@@ -161,8 +162,8 @@ static char * TabStringDup(
static char * TabStringCpy(
- char * dst,
- tabString_t * tab )
+ char * dst,
+ tabString_t * tab )
{
memcpy( dst, tab->ptr, tab->len );
dst[tab->len] = '\0';
@@ -171,31 +172,34 @@ static char * TabStringCpy(
static int TabStringCmp(
- char * src,
- tabString_t * tab )
+ char * src,
+ tabString_t * tab )
{
size_t srclen = strlen(src);
size_t len = srclen;
int rc;
- if ( len > tab->len )
+ if ( len > tab->len ) {
len = tab->len;
+ }
rc = strncasecmp( src, tab->ptr, len );
- if ( rc != 0 || srclen == tab->len )
+ if ( rc != 0 || srclen == tab->len ) {
return rc;
- else if ( srclen > tab->len )
+ } else if ( srclen > tab->len ) {
return 1;
- else
+ } else {
return -1;
+ }
}
static long TabGetLong(
- tabString_t * tab )
+ tabString_t * tab )
{
char old_c;
long val;
- if ( tab->len <= 0 )
+ if ( tab->len <= 0 ) {
return 0;
+ }
old_c = tab->ptr[tab->len];
tab->ptr[tab->len] = '\0';
val = atol( tab->ptr );
@@ -205,12 +209,13 @@ static long TabGetLong(
static FLOAT_T TabGetFloat(
- tabString_t * tab )
+ tabString_t * tab )
{
char old_c;
FLOAT_T val;
- if ( tab->len <= 0 )
+ if ( tab->len <= 0 ) {
return 0.0;
+ }
old_c = tab->ptr[tab->len];
tab->ptr[tab->len] = '\0';
val = atof( tab->ptr );
@@ -220,10 +225,10 @@ static FLOAT_T TabGetFloat(
static void RotatePts(
- int cnt,
- coOrd * pts,
- coOrd orig,
- ANGLE_T angle )
+ int cnt,
+ coOrd * pts,
+ coOrd orig,
+ ANGLE_T angle )
{
int inx;
for ( inx=0; inx<cnt; inx++ ) {
@@ -233,10 +238,10 @@ static void RotatePts(
static void RescalePts(
- int cnt,
- coOrd * pts,
- FLOAT_T scale_x,
- FLOAT_T scale_y )
+ int cnt,
+ coOrd * pts,
+ FLOAT_T scale_x,
+ FLOAT_T scale_y )
{
int inx;
for ( inx=0; inx<cnt; inx++ ) {
@@ -248,10 +253,10 @@ static void RescalePts(
static int lookupListIndex;
static void * LookupListElem(
- dynArr_t * da,
- void * key,
- int (*cmpFunc)( void *, void * ),
- int elem_size )
+ dynArr_t * da,
+ void * key,
+ int (*cmpFunc)( void *, void * ),
+ int elem_size )
{
int hi, lo, mid, rc;
lo = 0;
@@ -263,18 +268,20 @@ static void * LookupListElem(
lookupListIndex = mid;
return DYNARR_N(void*,*da,mid);
}
- if ( rc > 0 )
+ if ( rc > 0 ) {
lo = mid+1;
- else
+ } else {
hi = mid-1;
+ }
}
if ( elem_size == 0 ) {
lookupListIndex = -1;
return NULL;
}
DYNARR_APPEND( void*, *da, 10 );
- for ( mid=da->cnt-1; mid>lo; mid-- )
+ for ( mid=da->cnt-1; mid>lo; mid-- ) {
DYNARR_N(void*,*da,mid) = DYNARR_N(void*,*da,mid-1);
+ }
DYNARR_N(void*,*da,lo) = MyMalloc(elem_size);
memset( DYNARR_N(void*,*da,lo), 0, elem_size );
lookupListIndex = lo;
@@ -282,17 +289,18 @@ static void * LookupListElem(
}
static void RemoveListElem(
- dynArr_t * da,
- void * elem )
+ dynArr_t * da,
+ void * elem )
{
int inx;
for ( inx=0; inx<da->cnt; inx++ )
- if ( DYNARR_N(void*,*da,inx) == elem )
+ if ( DYNARR_N(void*,*da,inx) == elem ) {
break;
- if ( inx>=da->cnt )
- AbortProg( "removeListElem" );
- for ( inx++; inx<da->cnt; inx++ )
+ }
+ CHECK( inx<da->cnt );
+ for ( inx++; inx<da->cnt; inx++ ) {
DYNARR_N(void*,*da,inx-1) = DYNARR_N(void*,*da,inx);
+ }
da->cnt--;
}
@@ -306,53 +314,55 @@ static void RemoveListElem(
#define SI (30)
#define SO (37)
static coOrd truckOutline[] = {
- { -TW, -SO },
- { TW, -SO },
- { TW, -SI },
- { BW, -SI },
- { BW, SI },
- { TW, SI },
- { TW, SO },
- { -TW, SO },
- { -TW, SI },
- { -BW, SI },
- { -BW, -SI },
- { -TW, -SI } };
+ { -TW, -SO },
+ { TW, -SO },
+ { TW, -SI },
+ { BW, -SI },
+ { BW, SI },
+ { TW, SI },
+ { TW, SO },
+ { -TW, SO },
+ { -TW, SI },
+ { -BW, SI },
+ { -BW, -SI },
+ { -TW, -SI }
+};
#define WO ((56.6-2)/2)
#define WI ((56.6-12)/2)
#define Wd (36/2)
#define AW (8/2)
static coOrd wheelOutline[] = {
- { -Wd, -WO },
+ { -Wd, -WO },
- { -AW, -WO },
- { -AW, -SI },
- { AW, -SI },
- { AW, -WO },
+ { -AW, -WO },
+ { -AW, -SI },
+ { AW, -SI },
+ { AW, -WO },
- { Wd, -WO },
- { Wd, -WI },
- { AW, -WI },
- { AW, WI },
- { Wd, WI },
- { Wd, WO },
+ { Wd, -WO },
+ { Wd, -WI },
+ { AW, -WI },
+ { AW, WI },
+ { Wd, WI },
+ { Wd, WO },
- { AW, WO },
- { AW, SI },
- { -AW, SI },
- { -AW, WO },
+ { AW, WO },
+ { AW, SI },
+ { -AW, SI },
+ { -AW, WO },
- { -Wd, WO },
- { -Wd, WI },
- { -AW, WI },
- { -AW, -WI },
+ { -Wd, WO },
+ { -Wd, WI },
+ { -AW, WI },
+ { -AW, -WI },
- { -Wd, -WI } };
+ { -Wd, -WI }
+};
static void MovePts(
- int cnt,
- coOrd * pts,
- coOrd orig )
+ int cnt,
+ coOrd * pts,
+ coOrd orig )
{
int inx;
for ( inx=0; inx<cnt; inx++ ) {
@@ -363,11 +373,11 @@ static void MovePts(
static void CarProtoDrawTruck(
- drawCmd_t * d,
- DIST_T width,
- FLOAT_T ratio,
- coOrd pos,
- ANGLE_T angle )
+ drawCmd_t * d,
+ DIST_T width,
+ FLOAT_T ratio,
+ coOrd pos,
+ ANGLE_T angle )
{
coOrd p[24], pp;
wDrawColor color = wDrawColorBlack;
@@ -399,38 +409,40 @@ static void CarProtoDrawTruck(
static coOrd couplerOutline[] = {
- { 0, 2.5 },
- { 0, -2.5 },
- { 0, -2.5 },
- { 3, -7 },
- { 14, -5 },
- { 14, 2 },
- { 12, 2 },
- { 12, -2 },
- { 9, -2 },
- { 9, 3 },
- { 13, 6 },
- { 13, 7 },
- { 6, 7 },
- { 0, 2.5 } };
+ { 0, 2.5 },
+ { 0, -2.5 },
+ { 0, -2.5 },
+ { 3, -7 },
+ { 14, -5 },
+ { 14, 2 },
+ { 12, 2 },
+ { 12, -2 },
+ { 9, -2 },
+ { 9, 3 },
+ { 13, 6 },
+ { 13, 7 },
+ { 6, 7 },
+ { 0, 2.5 }
+};
static void CarProtoDrawCoupler(
- drawCmd_t * d,
- DIST_T length,
- FLOAT_T ratio,
- coOrd pos,
- ANGLE_T angle )
+ drawCmd_t * d,
+ DIST_T length,
+ FLOAT_T ratio,
+ coOrd pos,
+ ANGLE_T angle )
{
coOrd p[24], pp;
wDrawColor color = wDrawColorBlack;
length /= ratio;
- if ( length < 12.0 )
+ if ( length < 12.0 ) {
return;
+ }
memcpy( p, couplerOutline, sizeof couplerOutline );
p[0].x = p[1].x = -(length-12.0);
pp.x = length-12.0;
pp.y = 0;
-/* TODO - if length > 6 then draw Sills */
+ /* TODO - if length > 6 then draw Sills */
MovePts( COUNT( couplerOutline ), p, pp );
RescalePts( COUNT( couplerOutline ), p, ratio, ratio );
RotatePts( COUNT( couplerOutline ), p, zero, angle-90.0 );
@@ -449,30 +461,31 @@ struct carProto_t;
typedef struct carProto_t carProto_t;
struct carProto_t {
- char * contentsLabel;
- wIndex_t paramFileIndex;
- char * desc;
- long options;
- long type;
- carDim_t dim;
- int segCnt;
- trkSeg_p segPtr;
- coOrd size;
- coOrd orig;
- };
+ char * contentsLabel;
+ wIndex_t paramFileIndex;
+ char * desc;
+ long options;
+ long type;
+ carDim_t dim;
+ int segCnt;
+ trkSeg_p segPtr;
+ coOrd size;
+ coOrd orig;
+};
static dynArr_t carProto_da;
#define carProto(N) DYNARR_N( carProto_t*, carProto_da, N )
#define N_TYPELISTMAP (7)
static nameLongMap_t typeListMap[N_TYPELISTMAP] = {
- { N_("Diesel Loco"), 10101 },
- { N_("Steam Loco"), 10201 },
- { N_("Elect Loco"), 10301 },
- { N_("Freight Car"), 30100 },
- { N_("Psngr Car"), 50100 },
- { N_("M-O-W"), 70100 },
- { N_("Other"), 90100 } };
+ { N_("Diesel Loco"), 10101 },
+ { N_("Steam Loco"), 10201 },
+ { N_("Elect Loco"), 10301 },
+ { N_("Freight Car"), 30100 },
+ { N_("Psngr Car"), 50100 },
+ { N_("M-O-W"), 70100 },
+ { N_("Other"), 90100 }
+};
static trkSeg_p carProtoSegPtr;
static int carProtoSegCnt;
@@ -481,12 +494,12 @@ static int carProtoSegCnt;
static pts_t dummyOutlineSegPts[5];
static trkSeg_t dummyOutlineSegs;
static void CarProtoDlgCreateDummyOutline(
- int * segCntP,
- trkSeg_p * segPtrP,
- BOOL_T isLoco,
- DIST_T length,
- DIST_T width,
- wDrawColor color )
+ int * segCntP,
+ trkSeg_p * segPtrP,
+ BOOL_T isLoco,
+ DIST_T length,
+ DIST_T width,
+ wDrawColor color )
{
trkSeg_p segPtr;
pts_t * pts;
@@ -497,7 +510,7 @@ static void CarProtoDlgCreateDummyOutline(
segPtr->type = SEG_FILPOLY;
segPtr->color = color;
- segPtr->width = 0;
+ segPtr->lineWidth = 0;
segPtr->u.p.cnt = isLoco?5:4;
segPtr->u.p.pts = pts = dummyOutlineSegPts;
segPtr->u.p.orig.x = 0;
@@ -530,15 +543,16 @@ static void CarProtoDlgCreateDummyOutline(
static int CarProtoFindTypeCode(
- long code )
+ long code )
{
int inx;
for ( inx=0; inx<N_TYPELISTMAP; inx++ ) {
if ( typeListMap[inx].value > code ) {
- if ( inx == 0 )
+ if ( inx == 0 ) {
return N_TYPELISTMAP-1;
- else
+ } else {
return inx-1;
+ }
}
}
return N_TYPELISTMAP-1;
@@ -546,8 +560,8 @@ static int CarProtoFindTypeCode(
static int CmpCarProto(
- void * key,
- void * elem )
+ void * key,
+ void * elem )
{
char * key_val=key;
carProto_p elem_val=elem;
@@ -556,24 +570,26 @@ static int CmpCarProto(
static carProto_p CarProtoFind(
- char * desc )
+ char * desc )
{
return LookupListElem( &carProto_da, desc, CmpCarProto, 0 );
}
static carProto_p CarProtoLookup(
- char * desc,
- BOOL_T createMissing,
- BOOL_T isLoco,
- DIST_T length,
- DIST_T width )
+ char * desc,
+ BOOL_T createMissing,
+ BOOL_T isLoco,
+ DIST_T length,
+ DIST_T width )
{
carProto_p proto;
trkSeg_p segPtr;
- proto = LookupListElem( &carProto_da, desc, CmpCarProto, createMissing?sizeof *proto:0 );
- if ( proto == NULL )
+ proto = LookupListElem( &carProto_da, desc, CmpCarProto,
+ createMissing?sizeof *proto:0 );
+ if ( proto == NULL ) {
return NULL;
+ }
if ( proto->desc == NULL ) {
proto->desc = MyStrdup(desc);
proto->contentsLabel = "Car Prototype";
@@ -583,10 +599,13 @@ static carProto_p CarProtoLookup(
proto->dim.carWidth = width;
proto->dim.truckCenter = length - 2.0*59.0;
proto->dim.coupledLength = length + 2.0*16.0;
- CarProtoDlgCreateDummyOutline( &proto->segCnt, &segPtr, isLoco, length, width, drawColorBlue );
- proto->segPtr = (trkSeg_p)memdup( segPtr, (sizeof *(trkSeg_p)0) * proto->segCnt );
+ CarProtoDlgCreateDummyOutline( &proto->segCnt, &segPtr, isLoco, length, width,
+ drawColorBlue );
+ proto->segPtr = (trkSeg_p)memdup( segPtr,
+ (sizeof *(trkSeg_p)0) * proto->segCnt );
CloneFilledDraw( proto->segCnt, proto->segPtr, FALSE );
- GetSegBounds( zero, 0.0, proto->segCnt, proto->segPtr, &proto->orig, &proto->size );
+ GetSegBounds( zero, 0.0, proto->segCnt, proto->segPtr, &proto->orig,
+ &proto->size );
carProtoListChanged = TRUE;
// return proto;
}
@@ -594,17 +613,18 @@ static carProto_p CarProtoLookup(
}
enum paramFileState
-GetCarProtoCompatibility(int paramFileIndex, SCALEINX_T scaleIndex)
-{
+GetCarProtoCompatibility(int paramFileIndex, SCALEINX_T scaleIndex) {
int i;
enum paramFileState ret = PARAMFILE_NOTUSABLE;
- DIST_T ratio = GetScaleRatio(scaleIndex);
+// DIST_T ratio = GetScaleRatio(scaleIndex);
- if (!IsParamValid(paramFileIndex)) {
+ if (!IsParamValid(paramFileIndex))
+ {
return(PARAMFILE_UNLOADED);
}
- for (i = 0; i < carProto_da.cnt; i++) {
+ for (i = 0; i < carProto_da.cnt; i++)
+ {
carProto_t *carProto = carProto(i);
if (carProto->paramFileIndex == paramFileIndex) {
ret = PARAMFILE_FIT;
@@ -615,21 +635,22 @@ GetCarProtoCompatibility(int paramFileIndex, SCALEINX_T scaleIndex)
}
static carProto_p CarProtoNew(
- carProto_p proto,
- int paramFileIndex,
- char * desc,
- long options,
- long type,
- carDim_t * dim,
- wIndex_t segCnt,
- trkSeg_p segPtr )
+ carProto_p proto,
+ int paramFileIndex,
+ char * desc,
+ long options,
+ long type,
+ carDim_t * dim,
+ wIndex_t segCnt,
+ trkSeg_p segPtr )
{
if ( proto == NULL ) {
proto = LookupListElem( &carProto_da, desc, CmpCarProto, sizeof *proto );
if ( proto->desc != NULL ) {
if ( proto->paramFileIndex == PARAM_CUSTOM &&
- paramFileIndex != PARAM_CUSTOM )
+ paramFileIndex != PARAM_CUSTOM ) {
return proto;
+ }
}
}
if ( proto->desc != NULL ) {
@@ -644,22 +665,26 @@ static carProto_p CarProtoNew(
proto->segCnt = segCnt;
//if (proto->segPtr) Can't do this because segPtr could be static
// free(proto->segPtr);
- proto->segPtr = (trkSeg_p)memdup( segPtr, (sizeof *(trkSeg_p)0) * proto->segCnt );
+ proto->segPtr = (trkSeg_p)memdup( segPtr,
+ (sizeof *(trkSeg_p)0) * proto->segCnt );
CloneFilledDraw( proto->segCnt, proto->segPtr, FALSE );
- GetSegBounds( zero, 0.0, proto->segCnt, proto->segPtr, &proto->orig, &proto->size );
+ GetSegBounds( zero, 0.0, proto->segCnt, proto->segPtr, &proto->orig,
+ &proto->size );
carProtoListChanged = TRUE;
return proto;
}
static void CarProtoDelete(
- carProto_p protoP )
+ carProto_p protoP )
{
- if ( protoP == NULL )
+ if ( protoP == NULL ) {
return;
+ }
RemoveListElem( &carProto_da, protoP );
- if ( protoP->desc )
+ if ( protoP->desc ) {
MyFree( protoP->desc );
+ }
MyFree( protoP );
}
@@ -685,7 +710,8 @@ DeleteCarProto(int fileIndex)
}
// delete them
- for (; inx < carProto_da.cnt && carProto(inx)->paramFileIndex == fileIndex; inx++) {
+ for (; inx < carProto_da.cnt
+ && carProto(inx)->paramFileIndex == fileIndex; inx++) {
carProto_t * cp = carProto(inx);
if (cp->paramFileIndex == fileIndex) {
CarProtoDelete(cp);
@@ -704,7 +730,7 @@ DeleteCarProto(int fileIndex)
}
static BOOL_T CarProtoRead(
- char * line )
+ char * line )
{
char * desc;
long options;
@@ -713,12 +739,16 @@ static BOOL_T CarProtoRead(
long longCenterOffset;
if ( !GetArgs( line+9, "qllff0lff",
- &desc, &options, &type, &dim.carLength, &dim.carWidth, &longCenterOffset, &dim.truckCenter, &dim.coupledLength ) )
+ &desc, &options, &type, &dim.carLength, &dim.carWidth, &longCenterOffset,
+ &dim.truckCenter, &dim.coupledLength ) ) {
return FALSE;
+ }
dim.truckCenterOffset = longCenterOffset/1000.0;
- if ( !ReadSegs() )
+ if ( !ReadSegs() ) {
return FALSE;
- CarProtoNew( NULL, curParamFileIndex, desc, options, type, &dim, tempSegs_da.cnt, &tempSegs(0) );
+ }
+ CarProtoNew( NULL, curParamFileIndex, desc, options, type, &dim,
+ tempSegs_da.cnt, &tempSegs(0) );
FreeFilledDraw(tempSegs_da.cnt,&tempSegs(0));
MyFree(desc);
return TRUE;
@@ -726,8 +756,8 @@ static BOOL_T CarProtoRead(
static BOOL_T CarProtoWrite(
- FILE * f,
- carProto_t * proto )
+ FILE * f,
+ carProto_t * proto )
{
BOOL_T rc = TRUE;
@@ -736,7 +766,9 @@ static BOOL_T CarProtoWrite(
long longCenterOffset = (long)(proto->dim.truckCenterOffset*1000);
rc &= fprintf( f, "CARPROTO \"%s\" %ld %ld %0.3f %0.3f 0 %ld %0.3f %0.3f\n",
- PutTitle(proto->desc), proto->options, proto->type, proto->dim.carLength, proto->dim.carWidth, longCenterOffset, proto->dim.truckCenter, proto->dim.coupledLength )>0;
+ PutTitle(proto->desc), proto->options, proto->type, proto->dim.carLength,
+ proto->dim.carWidth, longCenterOffset, proto->dim.truckCenter,
+ proto->dim.coupledLength )>0;
rc &= WriteSegs( f, proto->segCnt, proto->segPtr );
SetUserLocale();
@@ -747,7 +779,7 @@ static BOOL_T CarProtoWrite(
static BOOL_T CarProtoCustomSave(
- FILE * f )
+ FILE * f )
{
int inx;
carProto_t * proto;
@@ -755,8 +787,9 @@ static BOOL_T CarProtoCustomSave(
for ( inx=0; inx<carProto_da.cnt; inx++ ) {
proto = carProto(inx);
- if ( proto->paramFileIndex == PARAM_CUSTOM )
+ if ( proto->paramFileIndex == PARAM_CUSTOM ) {
rc &= CarProtoWrite( f, proto );
+ }
}
return rc;
}
@@ -774,32 +807,32 @@ typedef struct carPartParent_t carPartParent_t;
typedef carPartParent_t * carPartParent_p;
typedef struct {
- char * name;
- int len;
- } cmp_key_t;
+ char * name;
+ int len;
+} cmp_key_t;
typedef struct {
- tabString_t manuf;
- tabString_t proto;
- SCALEINX_T scale;
- } cmp_partparent_t;
+ tabString_t manuf;
+ tabString_t proto;
+ SCALEINX_T scale;
+} cmp_partparent_t;
struct carPartParent_t {
- char * manuf;
- char * proto;
- SCALEINX_T scale;
- dynArr_t parts_da;
- };
+ char * manuf;
+ char * proto;
+ SCALEINX_T scale;
+ dynArr_t parts_da;
+};
struct carPart_t {
- carPartParent_p parent;
- wIndex_t paramFileIndex;
- char * title;
- long options;
- long type;
- carDim_t dim;
- wDrawColor color;
- char * partnoP;
- int partnoL;
- };
+ carPartParent_p parent;
+ wIndex_t paramFileIndex;
+ char * title;
+ long options;
+ long type;
+ carDim_t dim;
+ wDrawColor color;
+ char * partnoP;
+ int partnoL;
+};
static dynArr_t carPartParent_da;
#define carPartParent(N) DYNARR_N(carPartParent_p, carPartParent_da, N)
#define carPart(P,N) DYNARR_N(carPart_p, (P)->parts_da, N)
@@ -807,19 +840,17 @@ struct roadnameMap_t;
typedef struct roadnameMap_t roadnameMap_t;
typedef roadnameMap_t * roadnameMap_p;
struct roadnameMap_t {
- char * roadname;
- char * repmark;
- };
+ char * roadname;
+ char * repmark;
+};
static dynArr_t roadnameMap_da;
#define roadnameMap(N) DYNARR_N(roadnameMap_p, roadnameMap_da, N)
static BOOL_T roadnameMapChanged;
-static long carPartChangeLevel = 0;
-
static int Cmp_part(
- void * key,
- void * elem )
+ void * key,
+ void * elem )
{
carPart_p cmp_key=key;
carPart_p part_elem=elem;
@@ -828,85 +859,100 @@ static int Cmp_part(
len = min( cmp_key->partnoL, part_elem->partnoL );
rc = strncasecmp( cmp_key->partnoP, part_elem->partnoP, len+1 );
- if ( rc != 0 )
+ if ( rc != 0 ) {
return rc;
- if ( cmp_key->paramFileIndex == part_elem->paramFileIndex )
+ }
+ if ( cmp_key->paramFileIndex == part_elem->paramFileIndex ) {
return 0;
- if ( cmp_key->paramFileIndex == PARAM_DEMO )
+ }
+ if ( cmp_key->paramFileIndex == PARAM_DEMO ) {
return -1;
- if ( part_elem->paramFileIndex == PARAM_DEMO )
+ }
+ if ( part_elem->paramFileIndex == PARAM_DEMO ) {
return 1;
- if ( cmp_key->paramFileIndex == PARAM_CUSTOM )
+ }
+ if ( cmp_key->paramFileIndex == PARAM_CUSTOM ) {
return -1;
- if ( part_elem->paramFileIndex == PARAM_CUSTOM )
+ }
+ if ( part_elem->paramFileIndex == PARAM_CUSTOM ) {
return 1;
- if ( cmp_key->paramFileIndex == PARAM_LAYOUT )
+ }
+ if ( cmp_key->paramFileIndex == PARAM_LAYOUT ) {
return 1;
- if ( part_elem->paramFileIndex == PARAM_LAYOUT )
+ }
+ if ( part_elem->paramFileIndex == PARAM_LAYOUT ) {
return -1;
- if ( cmp_key->paramFileIndex > part_elem->paramFileIndex )
+ }
+ if ( cmp_key->paramFileIndex > part_elem->paramFileIndex ) {
return -1;
- else
+ } else {
return 1;
+ }
}
static int Cmp_partparent(
- void * key,
- void * elem )
+ void * key,
+ void * elem )
{
cmp_partparent_t * cmp_key=key;
carPartParent_p part_elem=elem;
int rc;
rc = - TabStringCmp( part_elem->manuf, &cmp_key->manuf );
- if ( rc != 0 )
+ if ( rc != 0 ) {
return rc;
+ }
rc = cmp_key->scale - part_elem->scale;
- if ( rc != 0 )
+ if ( rc != 0 ) {
return rc;
+ }
rc = - TabStringCmp( part_elem->proto, &cmp_key->proto );
return rc;
}
static int Cmp_roadnameMap(
- void * key,
- void * elem )
+ void * key,
+ void * elem )
{
cmp_key_t * cmp_key=key;
roadnameMap_p roadname_elem=elem;
int rc;
rc = strncasecmp( cmp_key->name, roadname_elem->roadname, cmp_key->len );
- if ( rc == 0 && roadname_elem->roadname[cmp_key->len] )
+ if ( rc == 0 && roadname_elem->roadname[cmp_key->len] ) {
return -1;
+ }
return rc;
}
static roadnameMap_p LoadRoadnameList(
- tabString_p roadnameTab,
- tabString_p repmarkTab )
+ tabString_p roadnameTab,
+ tabString_p repmarkTab )
{
cmp_key_t cmp_key;
roadnameMap_p roadnameMapP;
lookupListIndex = -1;
- if ( roadnameTab->len<=0 )
+ if ( roadnameTab->len<=0 ) {
return NULL;
- if ( TabStringCmp( "undecorated", roadnameTab ) == 0 )
+ }
+ if ( TabStringCmp( "undecorated", roadnameTab ) == 0 ) {
return NULL;
+ }
cmp_key.name = roadnameTab->ptr;
cmp_key.len = roadnameTab->len;
- roadnameMapP = LookupListElem( &roadnameMap_da, &cmp_key, Cmp_roadnameMap, sizeof (roadnameMap_t) );
+ roadnameMapP = LookupListElem( &roadnameMap_da, &cmp_key, Cmp_roadnameMap,
+ sizeof (roadnameMap_t) );
if ( roadnameMapP->roadname == NULL ) {
roadnameMapP->roadname = TabStringDup(roadnameTab);
roadnameMapP->repmark = TabStringDup(repmarkTab);
roadnameMapChanged = TRUE;
} else if ( repmarkTab->len > 0 &&
- ( roadnameMapP->repmark == NULL || roadnameMapP->repmark[0] == '\0' ) ) {
+ ( roadnameMapP->repmark == NULL || roadnameMapP->repmark[0] == '\0' ) ) {
roadnameMapP->repmark = TabStringDup(repmarkTab);
roadnameMapChanged = TRUE;
}
@@ -915,11 +961,11 @@ static roadnameMap_p LoadRoadnameList(
static carPart_p CarPartFind(
- char * manufP,
- int manufL,
- char * partnoP,
- int partnoL,
- SCALEINX_T scale )
+ char * manufP,
+ int manufL,
+ char * partnoP,
+ int partnoL,
+ SCALEINX_T scale )
{
wIndex_t inx1, inx2;
carPart_p partP;
@@ -927,15 +973,15 @@ static carPart_p CarPartFind(
for ( inx1=0; inx1<carPartParent_da.cnt; inx1++ ) {
parentP = carPartParent(inx1);
if ( manufL == (int)strlen(parentP->manuf) &&
- strncasecmp( manufP, parentP->manuf, manufL ) == 0 &&
- scale == parentP->scale ) {
+ strncasecmp( manufP, parentP->manuf, manufL ) == 0 &&
+ scale == parentP->scale ) {
for ( inx2=0; inx2<parentP->parts_da.cnt; inx2++ ) {
partP = carPart( parentP, inx2 );
if ( partnoL == partP->partnoL &&
- strncasecmp( partnoP, partP->partnoP, partnoL ) == 0 ) {
+ strncasecmp( partnoP, partP->partnoP, partnoL ) == 0 ) {
return partP;
}
- }
+ }
}
}
return NULL;
@@ -945,7 +991,7 @@ static carPart_p CarPartFind(
static void CarPartParentDelete(
- carPartParent_p parentP )
+ carPartParent_p parentP )
{
RemoveListElem( &carPartParent_da, parentP );
MyFree( parentP->manuf );
@@ -955,7 +1001,7 @@ static void CarPartParentDelete(
static void CarPartUnlink(
- carPart_p partP )
+ carPart_p partP )
{
carPartParent_p parentP = partP->parent;
RemoveListElem( &parentP->parts_da, partP );
@@ -966,11 +1012,11 @@ static void CarPartUnlink(
static carPartParent_p CarPartParentNew(
- char * manufP,
- int manufL,
- char *protoP,
- int protoL,
- SCALEINX_T scale )
+ char * manufP,
+ int manufL,
+ char *protoP,
+ int protoL,
+ SCALEINX_T scale )
{
carPartParent_p parentP;
cmp_partparent_t cmp_key;
@@ -979,7 +1025,8 @@ static carPartParent_p CarPartParentNew(
cmp_key.proto.ptr = protoP;
cmp_key.proto.len = protoL;
cmp_key.scale = scale;
- parentP = (carPartParent_p)LookupListElem( &carPartParent_da, &cmp_key, Cmp_partparent, sizeof * parentP);
+ parentP = (carPartParent_p)LookupListElem( &carPartParent_da, &cmp_key,
+ Cmp_partparent, sizeof * parentP);
if ( parentP->manuf == NULL ) {
parentP->manuf = (char*)MyMalloc( manufL+1 );
memcpy( parentP->manuf, manufP, manufL );
@@ -994,14 +1041,14 @@ static carPartParent_p CarPartParentNew(
static carPart_p CarPartNew(
- carPart_p partP,
- int paramFileIndex,
- SCALEINX_T scaleInx,
- char * title,
- long options,
- long type,
- carDim_t *dim,
- wDrawColor color)
+ carPart_p partP,
+ int paramFileIndex,
+ SCALEINX_T scaleInx,
+ char * title,
+ long options,
+ long type,
+ carDim_t *dim,
+ wDrawColor color)
{
carPartParent_p parentP;
carPart_t cmp_key;
@@ -1009,27 +1056,34 @@ static carPart_p CarPartNew(
TabStringExtract(title, 7, tabs);
if (TabStringCmp("Undecorated", &tabs[T_MANUF]) == 0 ||
- TabStringCmp("Custom", &tabs[T_MANUF]) == 0 ||
- tabs[T_PART].len == 0)
+ TabStringCmp("Custom", &tabs[T_MANUF]) == 0 ||
+ tabs[T_PART].len == 0) {
return NULL;
- if (tabs[T_PROTO].len == 0)
+ }
+ if (tabs[T_PROTO].len == 0) {
return NULL;
+ }
if (partP == NULL) {
- partP = CarPartFind(tabs[T_MANUF].ptr, tabs[T_MANUF].len, tabs[T_PART].ptr, tabs[T_PART].len, scaleInx);
+ partP = CarPartFind(tabs[T_MANUF].ptr, tabs[T_MANUF].len, tabs[T_PART].ptr,
+ tabs[T_PART].len, scaleInx);
if (partP != NULL &&
- partP->paramFileIndex == PARAM_CUSTOM &&
- paramFileIndex != PARAM_CUSTOM)
+ partP->paramFileIndex == PARAM_CUSTOM &&
+ paramFileIndex != PARAM_CUSTOM) {
return partP;
- LOG(log_carList, 2, ("new car part: %s (%d) at %d\n", title, paramFileIndex, lookupListIndex))
+ }
+ LOG(log_carList, 2, ("new car part: %s (%d) at %d\n", title, paramFileIndex,
+ lookupListIndex))
}
if (partP != NULL) {
CarPartUnlink(partP);
- if (partP->title != NULL)
+ if (partP->title != NULL) {
MyFree(partP->title);
+ }
LOG(log_carList, 2, ("upd car part: %s (%d)\n", title, paramFileIndex))
}
LoadRoadnameList(&tabs[T_ROADNAME], &tabs[T_REPMARK]);
- parentP = CarPartParentNew(tabs[T_MANUF].ptr, tabs[T_MANUF].len, tabs[T_PROTO].ptr, tabs[T_PROTO].len, scaleInx);
+ parentP = CarPartParentNew(tabs[T_MANUF].ptr, tabs[T_MANUF].len,
+ tabs[T_PROTO].ptr, tabs[T_PROTO].len, scaleInx);
cmp_key.title = title;
cmp_key.parent = parentP;
cmp_key.paramFileIndex = paramFileIndex;
@@ -1039,9 +1093,11 @@ static carPart_p CarPartNew(
cmp_key.color = color;
cmp_key.partnoP = tabs[T_PART].ptr;
cmp_key.partnoL = tabs[T_PART].len;
- partP = (carPart_p)LookupListElem(&parentP->parts_da, &cmp_key, Cmp_part, sizeof * partP);
- if (partP->title != NULL)
+ partP = (carPart_p)LookupListElem(&parentP->parts_da, &cmp_key, Cmp_part,
+ sizeof * partP);
+ if (partP->title != NULL) {
MyFree(partP->title);
+ }
*partP = cmp_key;
sprintf(message, "\t\t%s", tabs[2].ptr);
partP->title = MyStrdup(message);
@@ -1052,13 +1108,15 @@ static carPart_p CarPartNew(
static void CarPartDelete(
- carPart_p partP )
+ carPart_p partP )
{
- if ( partP == NULL )
+ if ( partP == NULL ) {
return;
+ }
CarPartUnlink( partP );
- if ( partP->title )
+ if ( partP->title ) {
MyFree( partP->title );
+ }
MyFree( partP );
}
@@ -1090,7 +1148,7 @@ DeleteCarPart(int fileIndex)
}
static BOOL_T CarPartRead(
- char * line )
+ char * line )
{
char scale[10];
long options;
@@ -1101,18 +1159,21 @@ static BOOL_T CarPartRead(
long longCenterOffset;
if ( !GetArgs( line+8, "sqllff0lffl",
- scale, &title, &options, &type, &dim.carLength, &dim.carWidth, &longCenterOffset, &dim.truckCenter, &dim.coupledLength, &rgb ) )
+ scale, &title, &options, &type, &dim.carLength, &dim.carWidth,
+ &longCenterOffset, &dim.truckCenter, &dim.coupledLength, &rgb ) ) {
return FALSE;
+ }
dim.truckCenterOffset = longCenterOffset/1000.0;
- CarPartNew( NULL, curParamFileIndex, LookupScale(scale), title, options, type, &dim, wDrawFindColor(rgb) );
+ CarPartNew( NULL, curParamFileIndex, LookupScale(scale), title, options, type,
+ &dim, wDrawFindColor(rgb) );
MyFree( title );
return TRUE;
}
static BOOL_T CarPartWrite(
- FILE * f,
- carPart_p partP )
+ FILE * f,
+ carPart_p partP )
{
BOOL_T rc = TRUE;
carPartParent_p parentP=partP->parent;
@@ -1122,15 +1183,17 @@ static BOOL_T CarPartWrite(
TabStringExtract( partP->title, 7, tabs );
sprintf( message, "%s\t%s\t%.*s\t%.*s\t%.*s\t%.*s\t%.*s",
- parentP->manuf, parentP->proto,
- tabs[T_DESC].len, tabs[T_DESC].ptr,
- tabs[T_PART].len, tabs[T_PART].ptr,
- tabs[T_ROADNAME].len, tabs[T_ROADNAME].ptr,
- tabs[T_REPMARK].len, tabs[T_REPMARK].ptr,
- tabs[T_NUMBER].len, tabs[T_NUMBER].ptr );
- rc &= fprintf( f, "CARPART %s \"%s\"", GetScaleName(partP->parent->scale), PutTitle(message) )>0;
+ parentP->manuf, parentP->proto,
+ tabs[T_DESC].len, tabs[T_DESC].ptr,
+ tabs[T_PART].len, tabs[T_PART].ptr,
+ tabs[T_ROADNAME].len, tabs[T_ROADNAME].ptr,
+ tabs[T_REPMARK].len, tabs[T_REPMARK].ptr,
+ tabs[T_NUMBER].len, tabs[T_NUMBER].ptr );
+ rc &= fprintf( f, "CARPART %s \"%s\"", GetScaleName(partP->parent->scale),
+ PutTitle(message) )>0;
rc &= fprintf( f, " %ld %ld %0.3f %0.3f 0 0 %0.3f %0.3f %ld\n",
- partP->options, partP->type, partP->dim.carLength, partP->dim.carWidth, partP->dim.truckCenter, partP->dim.coupledLength, wDrawGetRGB(partP->color) )>0;
+ partP->options, partP->type, partP->dim.carLength, partP->dim.carWidth,
+ partP->dim.truckCenter, partP->dim.coupledLength, wDrawGetRGB(partP->color) )>0;
SetUserLocale();
@@ -1140,7 +1203,7 @@ static BOOL_T CarPartWrite(
static BOOL_T CarDescCustomSave(
- FILE * f )
+ FILE * f )
{
int parentX;
carPartParent_p parentP;
@@ -1152,8 +1215,9 @@ static BOOL_T CarDescCustomSave(
parentP = carPartParent(parentX);
for ( partX=0; partX<parentP->parts_da.cnt; partX++ ) {
partP = carPart(parentP,partX);
- if ( partP->paramFileIndex == PARAM_CUSTOM )
+ if ( partP->paramFileIndex == PARAM_CUSTOM ) {
rc &= CarPartWrite(f, partP );
+ }
}
}
return rc;
@@ -1170,54 +1234,57 @@ static dynArr_t carItemInfo_da;
#define N_CONDLISTMAP (6)
static nameLongMap_t condListMap[N_CONDLISTMAP] = {
- { N_("N/A"), 0 },
- { N_("Mint"), 100 },
- { N_("Excellent"), 80 },
- { N_("Good"), 60 },
- { N_("Fair"), 40 },
- { N_("Poor"), 20 } };
+ { N_("N/A"), 0 },
+ { N_("Mint"), 100 },
+ { N_("Excellent"), 80 },
+ { N_("Good"), 60 },
+ { N_("Fair"), 40 },
+ { N_("Poor"), 20 }
+};
static wIndex_t MapCondition(
- long conditionValue )
+ long conditionValue )
{
- if ( conditionValue < 10 )
- return 0;
- else if ( conditionValue < 30 )
- return 5;
- else if ( conditionValue < 50 )
- return 4;
- else if ( conditionValue < 70 )
- return 3;
- else if ( conditionValue < 90 )
- return 2;
- else
- return 1;
+ if ( conditionValue < 10 ) {
+ return 0;
+ } else if ( conditionValue < 30 ) {
+ return 5;
+ } else if ( conditionValue < 50 ) {
+ return 4;
+ } else if ( conditionValue < 70 ) {
+ return 3;
+ } else if ( conditionValue < 90 ) {
+ return 2;
+ } else {
+ return 1;
+ }
}
static carItem_p CarItemNew(
- carItem_p item,
- int paramFileIndex,
- long itemIndex,
- SCALEINX_T scale,
- char * title,
- long options,
- long type,
- carDim_t *dim,
- wDrawColor color,
- FLOAT_T purchPrice,
- FLOAT_T currPrice,
- long condition,
- long purchDate,
- long serviceDate )
+ carItem_p item,
+ int paramFileIndex,
+ long itemIndex,
+ SCALEINX_T scale,
+ char * title,
+ long options,
+ long type,
+ carDim_t *dim,
+ wDrawColor color,
+ FLOAT_T purchPrice,
+ FLOAT_T currPrice,
+ long condition,
+ long purchDate,
+ long serviceDate )
{
carPart_p partP;
tabString_t tabs[7];
TabStringExtract( title, 7, tabs );
if ( paramFileIndex != PARAM_CUSTOM ) {
- partP = CarPartFind( tabs[T_MANUF].ptr, tabs[T_MANUF].len, tabs[T_PART].ptr, tabs[T_PART].len, scale );
+ partP = CarPartFind( tabs[T_MANUF].ptr, tabs[T_MANUF].len, tabs[T_PART].ptr,
+ tabs[T_PART].len, scale );
if ( partP == NULL ) {
CarPartNew( NULL, PARAM_LAYOUT, scale, title, options, type, dim, color );
}
@@ -1228,8 +1295,8 @@ static carItem_p CarItemNew(
item = (carItem_t*)MyMalloc( sizeof * item );
carItemInfo(carItemInfo_da.cnt-1) = item;
} else {
- if ( item->title ) MyFree( item->title );
- if ( item->data.number ) MyFree( item->data.number );
+ if ( item->title ) { MyFree( item->title ); }
+ if ( item->data.number ) { MyFree( item->data.number ); }
}
item->index = itemIndex;
item->scaleInx = scale;
@@ -1241,7 +1308,9 @@ static carItem_p CarItemNew(
item->dim = *dim;
item->color = color;
if ( tabs[T_REPMARK].len>0 || tabs[T_NUMBER].len>0 ) {
- sprintf( message, "%.*s%s%.*s", tabs[T_REPMARK].len, tabs[T_REPMARK].ptr, (tabs[T_REPMARK].len>0&&tabs[T_NUMBER].len>0)?" ":"", tabs[T_NUMBER].len, tabs[T_NUMBER].ptr );
+ sprintf( message, "%.*s%s%.*s", tabs[T_REPMARK].len, tabs[T_REPMARK].ptr,
+ (tabs[T_REPMARK].len>0
+ &&tabs[T_NUMBER].len>0)?" ":"", tabs[T_NUMBER].len, tabs[T_NUMBER].ptr );
} else {
sprintf( message, "#%ld", item->index );
}
@@ -1261,24 +1330,25 @@ static carItem_p CarItemNew(
/**
* Check the whether the parameter file has CARPARTS that are a fit or compatible
* with the current state.
- *
+ *
* \param paramFileIndex IN the parameter file
* \param scaleIndex IN the scale to check against
* \return the compatibility state of the the
*/
-enum paramFileState
-GetCarPartCompatibility(int paramFileIndex, SCALEINX_T scaleIndex)
-{
+enum paramFileState
+GetCarPartCompatibility(int paramFileIndex, SCALEINX_T scaleIndex) {
int i;
enum paramFileState ret = PARAMFILE_NOTUSABLE;
- DIST_T ratio = GetScaleRatio(scaleIndex);
- DIST_T gauge = GetScaleTrackGauge(scaleIndex);
+// DIST_T ratio = GetScaleRatio(scaleIndex);
+// DIST_T gauge = GetScaleTrackGauge(scaleIndex);
- if (!IsParamValid(paramFileIndex)) {
+ if (!IsParamValid(paramFileIndex))
+ {
return(PARAMFILE_UNLOADED);
}
- for (i = 0; i < carPartParent_da.cnt && ret != PARAMFILE_FIT; i++) {
+ for (i = 0; i < carPartParent_da.cnt && ret != PARAMFILE_FIT; i++)
+ {
carPartParent_t *carPartParent = carPartParent( i );
SCALE_FIT_T fit = CompatibleScale(FIT_CAR,carPartParent->scale,scaleIndex);
if(fit == FIT_EXACT) {
@@ -1298,7 +1368,7 @@ GetCarPartCompatibility(int paramFileIndex, SCALEINX_T scaleIndex)
}
EXPORT BOOL_T CarItemRead(
- char * line )
+ char * line )
{
long itemIndex;
char scale[10];
@@ -1322,31 +1392,38 @@ EXPORT BOOL_T CarItemRead(
char * sNote = NULL;
if ( !GetArgs( line+4, "lsqll" "ff0lffl" "fflll000000c",
- &itemIndex, scale, &title, &options, &type,
- &dim.carLength, &dim.carWidth, &longCenterOffset, &dim.truckCenter, &dim.coupledLength, &rgb,
- &purchPrice, &currPrice, &condition, &purchDate, &serviceDate, &cp ) )
+ &itemIndex, scale, &title, &options, &type,
+ &dim.carLength, &dim.carWidth, &longCenterOffset, &dim.truckCenter,
+ &dim.coupledLength, &rgb,
+ &purchPrice, &currPrice, &condition, &purchDate, &serviceDate, &cp ) ) {
return FALSE;
+ }
dim.truckCenterOffset = longCenterOffset/1000.0;
if ( paramVersion < VERSION_INLINENOTE ) {
if ( (options&CAR_ITEM_HASNOTES) ) {
sNote = ReadMultilineText();
}
} else {
- if ( !GetArgs( cp, "qc", &sNote, &cp ) )
+ if ( !GetArgs( cp, "qc", &sNote, &cp ) ) {
return FALSE;
+ }
}
- item = CarItemNew( NULL, curParamFileIndex, itemIndex, LookupScale(scale), title,
- options&(CAR_DESC_BITS|CAR_ITEM_BITS), type, &dim, wDrawFindColor(rgb),
- purchPrice, currPrice, condition, purchDate, serviceDate );
- if ( (options&CAR_ITEM_HASNOTES) )
+ item = CarItemNew( NULL, curParamFileIndex, itemIndex, LookupScale(scale),
+ title,
+ options&(CAR_DESC_BITS|CAR_ITEM_BITS), type, &dim, wDrawFindColor(rgb),
+ purchPrice, currPrice, condition, purchDate, serviceDate );
+ if ( (options&CAR_ITEM_HASNOTES) ) {
item->data.notes = sNote;
+ }
MyFree(title);
if ( (options&CAR_ITEM_ONLAYOUT) ) {
if ( !GetArgs( cp, "dLpf",
- &index, &layer, &pos, &angle ) )
+ &index, &layer, &pos, &angle ) ) {
return FALSE;
- if ( !ReadSegs() )
+ }
+ if ( !ReadSegs() ) {
return FALSE;
+ }
item->car = NewCar( index, item, pos, angle );
SetTrkLayer( item->car, layer );
SetEndPts( item->car, 2 );
@@ -1357,9 +1434,9 @@ EXPORT BOOL_T CarItemRead(
static BOOL_T CarItemWrite(
- FILE * f,
- carItem_t * item,
- BOOL_T layout )
+ FILE * f,
+ carItem_t * item,
+ BOOL_T layout )
{
long options = (item->options&CAR_DESC_BITS);
coOrd pos;
@@ -1369,15 +1446,20 @@ static BOOL_T CarItemWrite(
SetCLocale();
- if ( item->data.notes && item->data.notes[0] )
+ if ( item->data.notes && item->data.notes[0] ) {
options |= CAR_ITEM_HASNOTES;
- if ( layout && item->car && !IsTrackDeleted(item->car) )
+ }
+ if ( layout && item->car && !IsTrackDeleted(item->car) ) {
options |= CAR_ITEM_ONLAYOUT;
- rc &= fprintf( f, "CAR %ld %s \"%s\" %ld %ld %0.3f %0.3f 0 %ld %0.3f %0.3f %ld %0.3f %0.3f %ld %ld %ld 0 0 0 0 0 0",
- item->index, GetScaleName(item->scaleInx), PutTitle(item->title),
- options, item->type,
- item->dim.carLength, item->dim.carWidth, longCenterOffset, item->dim.truckCenter, item->dim.coupledLength, wDrawGetRGB(item->color),
- item->data.purchPrice, item->data.currPrice, item->data.condition, item->data.purchDate, item->data.serviceDate )>0;
+ }
+ rc &= fprintf( f,
+ "CAR %ld %s \"%s\" %ld %ld %0.3f %0.3f 0 %ld %0.3f %0.3f %ld %0.3f %0.3f %ld %ld %ld 0 0 0 0 0 0",
+ item->index, GetScaleName(item->scaleInx), PutTitle(item->title),
+ options, item->type,
+ item->dim.carLength, item->dim.carWidth, longCenterOffset,
+ item->dim.truckCenter, item->dim.coupledLength, wDrawGetRGB(item->color),
+ item->data.purchPrice, item->data.currPrice, item->data.condition,
+ item->data.purchDate, item->data.serviceDate )>0;
if ( (options&CAR_ITEM_HASNOTES) ) {
char * sEscapedNote = ConvertToEscapedText( item->data.notes );
rc &= fprintf( f, " \"%s\"", sEscapedNote )>0;
@@ -1388,7 +1470,7 @@ static BOOL_T CarItemWrite(
if ( ( options&CAR_ITEM_ONLAYOUT) ) {
CarGetPos( item->car, &pos, &angle );
rc &= fprintf( f, " %d %u %0.3f %0.3f %0.3f\n",
- GetTrkIndex(item->car), GetTrkLayer(item->car), pos.x, pos.y, angle )>0;
+ GetTrkIndex(item->car), GetTrkLayer(item->car), pos.x, pos.y, angle )>0;
rc &= WriteEndPt( f, item->car, 0 );
rc &= WriteEndPt( f, item->car, 1 );
rc &= fprintf( f, "\t%s\n", END_SEGS )>0;
@@ -1404,29 +1486,31 @@ static BOOL_T CarItemWrite(
EXPORT carItem_p CarItemFind(
- long itemInx )
+ long itemInx )
{
- if ( itemInx >= 0 && itemInx < carItemInfo_da.cnt )
+ if ( itemInx >= 0 && itemInx < carItemInfo_da.cnt ) {
return carItemInfo(itemInx);
- else
+ } else {
return NULL;
+ }
}
EXPORT long CarItemFindIndex(
- carItem_p item )
+ carItem_p item )
{
long inx;
for ( inx=0; inx<carItemInfo_da.cnt; inx++ )
- if ( carItemInfo(inx) == item )
+ if ( carItemInfo(inx) == item ) {
return inx;
- AbortProg( "carItemFindIndex" );
+ }
+ CHECK( FALSE );
return -1;
}
EXPORT void CarItemGetSegs(
- carItem_p item )
+ carItem_p item )
{
coOrd orig;
carProto_p protoP;
@@ -1442,7 +1526,9 @@ EXPORT void CarItemGetSegs(
segPtr = protoP->segPtr;
orig = protoP->orig;
} else {
- CarProtoDlgCreateDummyOutline( &item->segCnt, &segPtr, (item->options&CAR_DESC_IS_LOCO)!=0, item->dim.carLength, item->dim.carWidth, item->color );
+ CarProtoDlgCreateDummyOutline( &item->segCnt, &segPtr,
+ (item->options&CAR_DESC_IS_LOCO)!=0, item->dim.carLength, item->dim.carWidth,
+ item->color );
orig = zero;
}
item->segPtr = (trkSeg_p)MyMalloc( item->segCnt * sizeof *(segPtr) );
@@ -1452,25 +1538,27 @@ EXPORT void CarItemGetSegs(
orig.x = -orig.x;
orig.y = -orig.y;
MoveSegs( item->segCnt, item->segPtr, orig );
- RescaleSegs( item->segCnt, item->segPtr, item->dim.carLength/protoP->size.x, item->dim.carWidth/protoP->size.y, 1/ratio );
+ RescaleSegs( item->segCnt, item->segPtr, item->dim.carLength/protoP->size.x,
+ item->dim.carWidth/protoP->size.y, 1/ratio );
RecolorSegs( item->segCnt, item->segPtr, item->color );
}
}
EXPORT BOOL_T WriteCars(
- FILE * f )
+ FILE * f )
{
int inx;
BOOL_T rc = TRUE;
- for ( inx=0; inx<carItemInfo_da.cnt; inx++ )
+ for ( inx=0; inx<carItemInfo_da.cnt; inx++ ) {
rc &= CarItemWrite( f, carItemInfo(inx), TRUE );
+ }
return rc;
}
EXPORT BOOL_T CarCustomSave(
- FILE * f )
+ FILE * f )
{
BOOL_T rc = TRUE;
rc &= CarProtoCustomSave( f );
@@ -1489,7 +1577,8 @@ static long carHotbarModes[] = { 0x0002, 0x0012, 0x0312, 0x4312, 0x0021, 0x0321,
static long carHotbarContents[] = { 0x0005, 0x0002, 0x0012, 0x0012, 0x0001, 0x0021, 0x0021 };
static long newCarInx;
static paramData_t newCarPLs[] = {
- { PD_DROPLIST, &newCarInx, "index", PDO_DLGWIDE, I2VP(400), N_("Item") } };
+ { PD_DROPLIST, &newCarInx, "index", PDO_DLGWIDE, I2VP(400), N_("Item") }
+};
static paramGroup_t newCarPG = { "train-newcar", 0, newCarPLs, COUNT( newCarPLs ) };
EXPORT wControl_p newCarControls[2];
static char newCarLabel1[STR_SIZE];
@@ -1500,8 +1589,8 @@ static dynArr_t carItemHotbar_da;
static int Cmp_carHotbar(
- const void * ptr1,
- const void * ptr2 )
+ const void * ptr1,
+ const void * ptr2 )
{
carItem_p item1 = *(carItem_p*)ptr1;
carItem_p item2 = *(carItem_p*)ptr2;
@@ -1517,18 +1606,22 @@ static int Cmp_carHotbar(
rc = (int)(item1->index-item2->index);
break;
case 1:
- rc = strncasecmp( tabs1[T_MANUF].ptr, tabs2[T_MANUF].ptr, max(tabs1[T_MANUF].len,tabs2[T_MANUF].len) );
+ rc = strncasecmp( tabs1[T_MANUF].ptr, tabs2[T_MANUF].ptr,
+ max(tabs1[T_MANUF].len,tabs2[T_MANUF].len) );
break;
case 3:
- rc = strncasecmp( tabs1[T_PART].ptr, tabs2[T_PART].ptr, max(tabs1[T_PART].len,tabs2[T_PART].len) );
+ rc = strncasecmp( tabs1[T_PART].ptr, tabs2[T_PART].ptr, max(tabs1[T_PART].len,
+ tabs2[T_PART].len) );
break;
case 2:
- if ( item1->type < item2->type )
+ if ( item1->type < item2->type ) {
rc = -1;
- else if ( item1->type > item2->type )
+ } else if ( item1->type > item2->type ) {
rc = 1;
- else
- rc = strncasecmp( tabs1[T_PROTO].ptr, tabs2[T_PROTO].ptr, max(tabs1[T_PROTO].len,tabs2[T_PROTO].len) );
+ } else {
+ rc = strncasecmp( tabs1[T_PROTO].ptr, tabs2[T_PROTO].ptr,
+ max(tabs1[T_PROTO].len,tabs2[T_PROTO].len) );
+ }
break;
}
}
@@ -1537,63 +1630,66 @@ static int Cmp_carHotbar(
static void CarItemHotbarUpdate(
- paramGroup_p pg,
- int inx,
- void * data )
+ paramGroup_p pg,
+ int inx,
+ void * data )
{
wIndex_t carItemInx;
carItem_p item;
if ( inx == 0 ) {
carItemInx = (wIndex_t)*(long*)data;
- if ( carItemInx < 0 )
+ if ( carItemInx < 0 ) {
return;
- carItemInx = (wIndex_t)VP2L(wListGetItemContext( (wList_p)pg->paramPtr[inx].control, carItemInx ));
+ }
+ carItemInx = (wIndex_t)VP2L(wListGetItemContext( (wList_p)
+ pg->paramPtr[inx].control, carItemInx ));
item = carItemHotbar(carItemInx);
- if ( item != NULL )
+ if ( item != NULL ) {
currCarItemPtr = item;
+ }
}
}
static char * FormatCarTitle(
- carItem_p item,
- long mode )
+ carItem_p item,
+ long mode )
{
tabString_t tabs[7];
char * cp;
- TabStringExtract( item->title, 7, tabs );
- cp = message;
- for ( ; mode!=0; mode>>=4 ) {
- switch ( mode&0x000F ) {
- case 1:
- cp = TabStringCpy( cp, &tabs[T_MANUF] );
- break;
- case 2:
- cp = TabStringCpy( cp, &tabs[T_PROTO] );
- break;
- case 3:
- cp = TabStringCpy( cp, &tabs[T_PART] );
- break;
- case 4:
- sprintf( cp, "%ld ", item->index );
- cp += strlen(cp);
- break;
- case 5:
- strcpy( cp, typeListMap[CarProtoFindTypeCode(item->type)].name );
- cp += strlen(cp);
- break;
- }
- *cp++ = '/';
+ TabStringExtract( item->title, 7, tabs );
+ cp = message;
+ for ( ; mode!=0; mode>>=4 ) {
+ switch ( mode&0x000F ) {
+ case 1:
+ cp = TabStringCpy( cp, &tabs[T_MANUF] );
+ break;
+ case 2:
+ cp = TabStringCpy( cp, &tabs[T_PROTO] );
+ break;
+ case 3:
+ cp = TabStringCpy( cp, &tabs[T_PART] );
+ break;
+ case 4:
+ sprintf( cp, "%ld ", item->index );
+ cp += strlen(cp);
+ break;
+ case 5:
+ strcpy( cp, typeListMap[CarProtoFindTypeCode(item->type)].name );
+ cp += strlen(cp);
+ break;
}
- *--cp = '\0';
- return message;
+ *cp++ = '/';
+ }
+ *--cp = '\0';
+ return message;
}
EXPORT char * CarItemDescribe(
- carItem_p item,
- long mode,
- long * index )
+ carItem_p item,
+ long mode,
+ long * index )
{
tabString_t tabs[7];
char * cp;
@@ -1605,15 +1701,18 @@ EXPORT char * CarItemDescribe(
sprintf( cp, "%ld ", item->index );
cp = desc+strlen(cp);
}
- if ( (mode&0xF)!=1 && ((mode>>4)&0xF)!=1 && ((mode>>8)&0xF)!=1 && ((mode>>12)&0xF)!=1 ) {
+ if ( (mode&0xF)!=1 && ((mode>>4)&0xF)!=1 && ((mode>>8)&0xF)!=1
+ && ((mode>>12)&0xF)!=1 ) {
cp = TabStringCpy( cp, &tabs[T_MANUF] );
*cp++ = ' ';
}
- if ( (mode&0xF)!=3 && ((mode>>4)&0xF)!=3 && ((mode>>8)&0xF)!=3 && ((mode>>12)&0xF)!=3 ) {
+ if ( (mode&0xF)!=3 && ((mode>>4)&0xF)!=3 && ((mode>>8)&0xF)!=3
+ && ((mode>>12)&0xF)!=3 ) {
cp = TabStringCpy( cp, &tabs[T_PART] );
*cp++ = ' ';
}
- if ( (mode&0xF)!=2 && ((mode>>4)&0xF)!=2 && ((mode>>8)&0xF)!=2 && ((mode>>12)&0xF)!=2 ) {
+ if ( (mode&0xF)!=2 && ((mode>>4)&0xF)!=2 && ((mode>>8)&0xF)!=2
+ && ((mode>>12)&0xF)!=2 ) {
cp = TabStringCpy( cp, &tabs[T_PROTO] );
*cp++ = ' ';
}
@@ -1635,8 +1734,9 @@ EXPORT char * CarItemDescribe(
}
}
*--cp = '\0';
- if ( index != NULL )
+ if ( index != NULL ) {
*index = item->index;
+ }
return desc;
}
@@ -1649,12 +1749,14 @@ EXPORT void CarItemLoadList( void * unused )
wWinPix_t w, h;
DYNARR_SET( carItem_t*, carItemHotbar_da, carItemInfo_da.cnt );
- memcpy( carItemHotbar_da.ptr, carItemInfo_da.ptr, carItemInfo_da.cnt * sizeof item );
+ memcpy( &carItemHotbar(0), &carItemInfo(0),
+ carItemInfo_da.cnt * sizeof carItemHotbar(0) );
wListClear( (wList_p)newCarPLs[0].control );
for ( inx=0; inx<carItemHotbar_da.cnt; inx++ ) {
item = carItemHotbar(inx);
- if ( item->car && !IsTrackDeleted(item->car) )
+ if ( item->car && !IsTrackDeleted(item->car) ) {
continue;
+ }
cp = CarItemDescribe( item, 0, NULL );
wListAddValue( (wList_p)newCarPLs[0].control, cp, NULL, I2VP(inx) );
}
@@ -1665,16 +1767,18 @@ EXPORT void CarItemLoadList( void * unused )
InfoSubstituteControls( newCarControls, newCarLabels );
wWinGetSize( mainW, &w, &h );
w -= wControlGetPosX( newCarControls[0] ) + 4;
- if ( w > 20 )
- wListSetSize( (wList_p)newCarControls[0], w, wControlGetHeight( newCarControls[0] ) );
+ if ( w > 20 ) {
+ wListSetSize( (wList_p)newCarControls[0], w,
+ wControlGetHeight( newCarControls[0] ) );
+ }
}
static char * CarItemHotbarProc(
- hotBarProc_e op,
- void * data,
- drawCmd_p d,
- coOrd * origP )
+ hotBarProc_e op,
+ void * data,
+ drawCmd_p d,
+ coOrd * origP )
{
wIndex_t carItemInx = (wIndex_t)VP2L(data);
carItem_p item;
@@ -1684,8 +1788,9 @@ static char * CarItemHotbarProc(
wWinPix_t w, h;
item = carItemHotbar(carItemInx);
- if ( item == NULL )
+ if ( item == NULL ) {
return NULL;
+ }
switch ( op ) {
case HB_SELECT:
currCarItemPtr = item;
@@ -1693,11 +1798,13 @@ static char * CarItemHotbarProc(
if ( (mode&0xF000) == 0 ) {
wListClear( (wList_p)newCarPLs[0].control );
for ( inx=carItemInx;
- inx<carItemHotbar_da.cnt && ( inx==carItemInx || Cmp_carHotbar(&carItemHotbar(carItemInx),&carItemHotbar(inx))==0 );
- inx++ ) {
+ inx<carItemHotbar_da.cnt && ( inx==carItemInx
+ || Cmp_carHotbar(&carItemHotbar(carItemInx),&carItemHotbar(inx))==0 );
+ inx++ ) {
item = carItemHotbar(inx);
- if ( item->car && !IsTrackDeleted(item->car) )
+ if ( item->car && !IsTrackDeleted(item->car) ) {
continue;
+ }
cp = CarItemDescribe( item, mode, NULL );
wListAddValue( (wList_p)newCarPLs[0].control, cp, NULL, I2VP(inx) );
}
@@ -1711,8 +1818,10 @@ static char * CarItemHotbarProc(
InfoSubstituteControls( newCarControls, newCarLabels );
wWinGetSize( mainW, &w, &h );
w -= wControlGetPosX( newCarControls[0] ) + 4;
- if ( w > 20 )
- wListSetSize( (wList_p)newCarControls[0], w, wControlGetHeight( newCarControls[0] ) );
+ if ( w > 20 ) {
+ wListSetSize( (wList_p)newCarControls[0], w,
+ wControlGetHeight( newCarControls[0] ) );
+ }
} else {
InfoSubstituteControls( NULL, NULL );
cp = CarItemDescribe( item, 0, NULL );
@@ -1725,9 +1834,11 @@ static char * CarItemHotbarProc(
case HB_FULLTITLE:
return item->title;
case HB_DRAW:
- if ( item->segCnt == 0 )
+ if ( item->segCnt == 0 ) {
CarItemGetSegs( item );
- DrawSegs( d, *origP, 0.0, item->segPtr, item->segCnt, trackGauge, wDrawColorBlack );
+ }
+ DrawSegs( d, *origP, 0.0, item->segPtr, item->segCnt, trackGauge,
+ wDrawColorBlack );
return NULL;
}
return NULL;
@@ -1741,8 +1852,10 @@ EXPORT int CarAvailableCount( void )
carItem_t * item;
for ( inx=0; inx < carItemHotbar_da.cnt; inx ++ ) {
item = carItemHotbar(inx);
- if (FIT_NONE == CompatibleScale( FIT_CAR, item->scaleInx, GetLayoutCurScale()))
+ if (FIT_NONE == CompatibleScale( FIT_CAR, item->scaleInx,
+ GetLayoutCurScale())) {
continue;
+ }
cnt++;
}
return cnt;
@@ -1757,15 +1870,20 @@ EXPORT void AddHotBarCarDesc( void )
coOrd size;
DYNARR_SET( carItem_t*, carItemHotbar_da, carItemInfo_da.cnt );
- memcpy( carItemHotbar_da.ptr, carItemInfo_da.ptr, carItemInfo_da.cnt * sizeof item0 );
- qsort( carItemHotbar_da.ptr, carItemHotbar_da.cnt, sizeof item0, Cmp_carHotbar );
+ memcpy( &carItemHotbar(0), &carItemInfo(0),
+ carItemInfo_da.cnt * sizeof carItemHotbar(0) );
+ qsort( &carItemHotbar(0), carItemHotbar_da.cnt, sizeof carItemHotbar(0),
+ Cmp_carHotbar );
for ( inx=0,item0=NULL; inx < carItemHotbar_da.cnt; inx ++ ) {
item1 = carItemHotbar(inx);
- if ( item1->car && !IsTrackDeleted(item1->car) )
+ if ( item1->car && !IsTrackDeleted(item1->car) ) {
continue;
- if ( FIT_NONE == CompatibleScale(FIT_CAR,item1->scaleInx,GetLayoutCurScale()))
+ }
+ if ( FIT_NONE == CompatibleScale(FIT_CAR,item1->scaleInx,GetLayoutCurScale())) {
continue;
- if ( (carHotbarModes[carHotbarModeInx]&0xF000)!=0 || ( item0 == NULL || Cmp_carHotbar( &item0, &item1 ) != 0 ) ) {
+ }
+ if ( (carHotbarModes[carHotbarModeInx]&0xF000)!=0 || ( item0 == NULL
+ || Cmp_carHotbar( &item0, &item1 ) != 0 ) ) {
#ifdef DESCFIX
orig.x = - item->orig.x;
orig.y = - item->orig.y;
@@ -1773,7 +1891,9 @@ EXPORT void AddHotBarCarDesc( void )
orig = zero;
size.x = item1->dim.carLength;
size.y = item1->dim.carWidth;
- AddHotBarElement( FormatCarTitle( item1, carHotbarContents[carHotbarModeInx] ), size, orig, FALSE, FALSE, (60.0*12.0/curScaleRatio), I2VP(inx), CarItemHotbarProc );
+ AddHotBarElement( FormatCarTitle( item1, carHotbarContents[carHotbarModeInx] ),
+ size, orig, FALSE, FALSE, (60.0*12.0/curScaleRatio), I2VP(inx),
+ CarItemHotbarProc );
}
item0 = item1;
}
@@ -1781,26 +1901,30 @@ EXPORT void AddHotBarCarDesc( void )
EXPORT void CarItemFindCouplerMountPoint(
- carItem_p item,
- traverseTrack_t trvTrk0,
- coOrd pos[2] )
+ carItem_p item,
+ traverseTrack_t trvTrk0,
+ coOrd pos[2] )
{
// We assume the coupler pivot is 'couplerLength' before the end of the car
DIST_T couplerLength = (item->dim.coupledLength - item->dim.carLength) / 2.0;
if ( IsClose(item->dim.truckCenter) ) {
// Single truck/bogie
DIST_T d = item->dim.carLength/2.0 - couplerLength;
- Translate( &pos[0], trvTrk0.pos, trvTrk0.angle, d + item->dim.truckCenterOffset );
+ Translate( &pos[0], trvTrk0.pos, trvTrk0.angle,
+ d + item->dim.truckCenterOffset );
FlipTraverseTrack( &trvTrk0 );
- Translate( &pos[1], trvTrk0.pos, trvTrk0.angle, d - item->dim.truckCenterOffset );
+ Translate( &pos[1], trvTrk0.pos, trvTrk0.angle,
+ d - item->dim.truckCenterOffset );
return;
}
// Find the pos of the 2 trucks
// Note this is a slight simplification, we should use the car center, not the on-track position
traverseTrack_t trvTrk1 = trvTrk0;
- TraverseTrack2( &trvTrk0, item->dim.truckCenter/2.0 + item->dim.truckCenterOffset );
+ TraverseTrack2( &trvTrk0,
+ item->dim.truckCenter/2.0 + item->dim.truckCenterOffset );
FlipTraverseTrack( & trvTrk1 );
- TraverseTrack2( &trvTrk1, item->dim.truckCenter/2.0 - item->dim.truckCenterOffset );
+ TraverseTrack2( &trvTrk1,
+ item->dim.truckCenter/2.0 - item->dim.truckCenterOffset );
// Get the angle to translate from the truck
ANGLE_T angle[2];
@@ -1818,111 +1942,143 @@ EXPORT void CarItemFindCouplerMountPoint(
// Get the distance to translate
DIST_T d[2];
- d[0] = item->dim.carLength/2.0 - couplerLength - ( item->dim.truckCenter/2.0 + item->dim.truckCenterOffset );
- d[1] = item->dim.carLength/2.0 - couplerLength - ( item->dim.truckCenter/2.0 - item->dim.truckCenterOffset );
+ d[0] = item->dim.carLength/2.0 - couplerLength - ( item->dim.truckCenter/2.0 +
+ item->dim.truckCenterOffset );
+ d[1] = item->dim.carLength/2.0 - couplerLength - ( item->dim.truckCenter/2.0 -
+ item->dim.truckCenterOffset );
// And translate
Translate( &pos[0], trvTrk0.pos, angle[0], d[0] );
Translate( &pos[1], trvTrk1.pos, angle[1], d[1] );
-
+
#ifdef LATER
if ( trvTrk.trk == NULL || (item->options&CAR_DESC_COUPLER_MODE_BODY)!=0 ) {
couplerOffset = item->dim.coupledLength/2.0;
Translate( &pos, trvTrk.pos, trvTrk.angle, couplerOffset );
} else {
- if (dir)
- TraverseTrack2( &trvTrk, item->dim.truckCenter/2.0-item->dim.truckCenterOffset );
- else
- TraverseTrack2( &trvTrk, item->dim.truckCenter/2.0+item->dim.truckCenterOffset );
+ if (dir) {
+ TraverseTrack2( &trvTrk,
+ item->dim.truckCenter/2.0-item->dim.truckCenterOffset );
+ } else {
+ TraverseTrack2( &trvTrk,
+ item->dim.truckCenter/2.0+item->dim.truckCenterOffset );
+ }
/*Translate( &pos1, trvTrk.pos, trvTrk.angle, item->dim.truckCenter/2.0 );*/
couplerOffset = (item->dim.coupledLength-item->dim.truckCenter)/2.0;
- if (dir)
+ if (dir) {
couplerOffset = couplerOffset + item->dim.truckCenterOffset;
- else
+ } else {
couplerOffset = couplerOffset - item->dim.truckCenterOffset;
+ }
Translate( &pos, trvTrk.pos, trvTrk.angle, couplerOffset );
}
#endif
}
+EXPORT void CarItemPos(
+ carItem_p item,
+ coOrd * pos )
+{
+ pos->x = item->pos.x;
+ pos->y = item->pos.y;
+}
+
+
EXPORT void CarItemSize(
- carItem_p item,
- coOrd * size )
+ carItem_p item,
+ coOrd * size )
{
size->x = item->dim.carLength;
size->y = item->dim.carWidth;
}
+EXPORT void CarItemSetNumber(carItem_p item, char * number)
+{
+ if (item->data.number && number[0]) {
+ MyFree(item->data.number);
+ }
+ if (number[0]) {
+ item->data.number = MyStrdup(number);
+ }
+}
+
EXPORT char * CarItemNumber(
- carItem_p item )
+ carItem_p item )
{
return item->data.number;
}
+
+
static DIST_T CarItemTruckCenter(
- carItem_p item )
+ carItem_p item )
{
return item->dim.truckCenter;
}
static DIST_T CarItemTruckOffset(
- carItem_p item ) {
- return item->dim.truckCenterOffset;
+ carItem_p item )
+{
+ return item->dim.truckCenterOffset;
}
EXPORT DIST_T CarItemCoupledLength(
- carItem_p item )
+ carItem_p item )
{
return item->dim.coupledLength;
}
EXPORT BOOL_T CarItemIsLoco(
- carItem_p item )
+ carItem_p item )
{
return (item->options&CAR_DESC_IS_LOCO) == (CAR_DESC_IS_LOCO);
}
EXPORT BOOL_T CarItemIsLocoMaster(
- carItem_p item )
+ carItem_p item )
{
- return (item->options&(CAR_DESC_IS_LOCO|CAR_DESC_IS_LOCO_MASTER)) == (CAR_DESC_IS_LOCO|CAR_DESC_IS_LOCO_MASTER);
+ return (item->options&(CAR_DESC_IS_LOCO|CAR_DESC_IS_LOCO_MASTER)) ==
+ (CAR_DESC_IS_LOCO|CAR_DESC_IS_LOCO_MASTER);
}
EXPORT void CarItemSetLocoMaster(
- carItem_p item,
- BOOL_T locoIsMaster )
+ carItem_p item,
+ BOOL_T locoIsMaster )
{
- if ( locoIsMaster )
+ if ( locoIsMaster ) {
item->options |= CAR_DESC_IS_LOCO_MASTER;
- else
+ } else {
item->options &= ~CAR_DESC_IS_LOCO_MASTER;
+ }
}
EXPORT void CarItemSetTrack(
- carItem_p item,
- track_p trk )
+ carItem_p item,
+ track_p trk )
{
item->car = trk;
- if ( trk != NULL )
+ if ( trk != NULL ) {
SetTrkScale( trk, item->scaleInx );
+ }
}
static DIST_T CarItemCouplerLength(
- carItem_p item,
- int dir )
+ carItem_p item,
+ int dir )
{
return item->dim.coupledLength-item->dim.carLength;
}
-EXPORT BOOL_T StoreCarItem (carItem_p item, void **data,long *len) {
+EXPORT BOOL_T StoreCarItem (carItem_p item, void **data,long *len)
+{
*data = item;
*len = sizeof (carItem_t);
@@ -1930,7 +2086,8 @@ EXPORT BOOL_T StoreCarItem (carItem_p item, void **data,long *len) {
}
-EXPORT BOOL_T ReplayCarItem(carItem_p item, void *data,long len) {
+EXPORT BOOL_T ReplayCarItem(carItem_p item, void *data,long len)
+{
item->pos = ((carItem_t *)data)->pos;
@@ -1940,54 +2097,39 @@ EXPORT BOOL_T ReplayCarItem(carItem_p item, void *data,long len) {
}
EXPORT void CarItemPlace(
- carItem_p item,
- traverseTrack_p trvTrk,
- DIST_T * dists )
+ carItem_p item,
+ traverseTrack_p trvTrk,
+ DIST_T * dists )
{
DIST_T dist;
DIST_T offset;
traverseTrack_t trks[2];
dist = CarItemTruckCenter(item)/2.0;
- offset = CarItemTruckOffset(item); //Offset is the amount the truck centers are displaced
+ offset = CarItemTruckOffset(
+ item); //Offset is the amount the truck centers are displaced
trks[0] = trks[1] = *trvTrk;
TraverseTrack2( &trks[0], dist+offset );
TraverseTrack2( &trks[1], -dist+offset );
item->angle = FindAngle( trks[1].pos, trks[0].pos );
item->pos.x = (trks[0].pos.x+trks[1].pos.x)/2.0;
item->pos.y = (trks[0].pos.y+trks[1].pos.y)/2.0;
- Translate(&item->pos,item->pos,item->angle, -offset); // Put truck center back along line by offset
+ Translate(&item->pos,item->pos,item->angle,
+ -offset); // Put truck center back along line by offset
dists[0] = dists[1] = CarItemCoupledLength(item)/2.0;
}
-static dynArr_t clearance;
-
-static void ClearClearancePoints(void) {
- //DYNARR_RESET(trkSeg_t,clearance);
-}
-
-static void CreateClearancePoint(coOrd pos, int position) {
- //DYNARR_APPEND(trkSeg_t,clearance,1);
-
-}
-
-static void DrawClearancePoints(void) {
- //for (int i=0;i<clearance.cnt;i++) {
- //DrawSegs();
- //}
-}
-
static int drawCarTrucks = 0;
EXPORT void CarItemDraw(
- drawCmd_p d,
- carItem_p item,
- wDrawColor color,
- int direction,
- BOOL_T locoIsMaster,
- vector_t *coupler,
- BOOL_T pencils,
- track_p traverse)
+ drawCmd_p d,
+ carItem_p item,
+ wDrawColor color,
+ int direction,
+ BOOL_T locoIsMaster,
+ vector_t *coupler,
+ BOOL_T pencils,
+ track_p traverse)
{
coOrd size, pos, pos2;
DIST_T length;
@@ -1996,12 +2138,11 @@ EXPORT void CarItemDraw(
trkSeg_t simpleSegs[1];
pts_t simplePts[4];
int dir;
- DIST_T rad;
+// DIST_T rad;
static int couplerLineWidth = 3;
- DIST_T scale2rail;
CarItemSize( item, &size );
- if ( d->scale >= ((d->options&DC_PRINT)?(twoRailScale*2+1):twoRailScale) ) {
+ if ( !DrawTwoRails( d, 1 ) ) {
simplePts[0].pt.x = simplePts[3].pt.x = -size.x/2.0;
simplePts[1].pt.x = simplePts[2].pt.x = size.x/2.0;
simplePts[0].pt.y = simplePts[1].pt.y = -size.y/2.0;
@@ -2012,52 +2153,23 @@ EXPORT void CarItemDraw(
simplePts[3].pt_type = 0;
simpleSegs[0].type = SEG_FILPOLY;
simpleSegs[0].color = item->color;
- simpleSegs[0].width = 0;
+ simpleSegs[0].lineWidth = 0;
simpleSegs[0].u.p.cnt = 4;
simpleSegs[0].u.p.pts = simplePts;
simpleSegs[0].u.p.orig = zero;
simpleSegs[0].u.p.angle = 0.0;
DrawSegs( d, item->pos, item->angle-90.0, simpleSegs, 1, 0.0, color );
} else {
- if ( item->segCnt == 0 )
+ if ( item->segCnt == 0 ) {
CarItemGetSegs( item );
+ }
Translate( &pos, item->pos, item->angle, -size.x/2.0 );
Translate( &pos, pos, item->angle-90, -size.y/2.0 );
DrawSegs( d, pos, item->angle-90.0, item->segPtr, item->segCnt, 0.0, color );
}
if (pencils) {
- ClearClearancePoints();
- coOrd posm1,posm2;
- Translate( &posm1, item->pos, item->angle-90, -size.y/2.0 );
- Translate( &posm2, item->pos, item->angle+90, -size.y/2.0 );
- coOrd posm1a = posm1;
- coOrd posm2a = posm2;
- if (GetTrkDistance(traverse, &posm1a)>GetTrkDistance(traverse, &posm2a))
- CreateClearancePoint(posm1,1);
- else
- CreateClearancePoint(posm2,2);
-
- coOrd pose1,pose2;
- Translate( &pose1, item->pos, item->angle, size.x/2.0 );
- Translate( &pose1, pose1, item->angle-90, -size.y/2.0 );
- Translate( &pose2, pose1, item->angle+90, -size.y );
-
- traverseTrack_t traverseTrk;
- traverseTrk.trk = traverse;
- traverseTrk.pos = item->pos;
- traverseTrk.angle = item->angle;
- TraverseTrack2(&traverseTrk,size.x/2.0);
- coOrd pose1a = pose1;
- coOrd pose2a = pose2;
- if (GetTrkDistance(traverseTrk.trk, &pose1a)>GetTrkDistance(traverseTrk.trk, &pose2a))
- CreateClearancePoint(pose1,3);
- else
- CreateClearancePoint(pose2,4);
-
-
- DrawClearancePoints();
-
+// No code for pencils
}
if ( drawCarTrucks ) {
@@ -2066,36 +2178,41 @@ EXPORT void CarItemDraw(
double offset = CarItemTruckOffset(item);
Translate( &pos, item->pos, item->angle, length+(direction?offset:-offset) );
DrawArc( d, pos, trackGauge/2.0, 0.0, 360.0, FALSE, 0, color );
- Translate( &pos, item->pos, item->angle+180, length+(direction?-offset:offset) );
+ Translate( &pos, item->pos, item->angle+180,
+ length+(direction?-offset:offset) );
DrawArc( d, pos, trackGauge/2.0, 0.0, 360.0, FALSE, 0, color );
}
if ( (labelEnable&LABELENABLE_CARS) ) {
fp = wStandardFont( F_HELV, FALSE, FALSE );
- DrawBoxedString( BOX_BACKGROUND, d, item->pos, item->data.number, fp, (wFontSize_t)descriptionFontSize, color, 0.0 );
+ DrawBoxedString( BOX_BACKGROUND, d, item->pos, item->data.number, fp,
+ (wFontSize_t)descriptionFontSize, color, 0.0 );
}
/* draw loco head light */
if ( (item->options&CAR_DESC_IS_LOCO)!=0 ) {
- Translate( &pos, item->pos, item->angle+(direction?180.0:0.0), size.x/2.0-trackGauge/2.0 );
+ Translate( &pos, item->pos, item->angle+(direction?180.0:0.0),
+ size.x/2.0-trackGauge/2.0 );
if ( locoIsMaster ) {
- DrawFillCircle( d, pos, trackGauge/2.0, (color==wDrawColorBlack?drawColorGold:color) );
+ DrawFillCircle( d, pos, trackGauge/2.0,
+ (color==wDrawColorBlack?drawColorGold:color) );
} else {
width = (wDrawWidth)floor( trackGauge/8.0 * d->dpi / d->scale );
- DrawArc( d, pos, trackGauge/2.0, 0.0, 360.0, FALSE, width, (color==wDrawColorBlack?drawColorGold:color) );
+ DrawArc( d, pos, trackGauge/2.0, 0.0, 360.0, FALSE, width,
+ (color==wDrawColorBlack?drawColorGold:color) );
}
}
/* draw coupler */
- scale2rail = ((d->options&DC_PRINT)?(twoRailScale*2+1):twoRailScale);
- if ( d->scale >= scale2rail )
+ if ( ! DrawTwoRails(d,0.5) ) {
return;
- scale2rail /= 2;
- rad = trackGauge/8.0;
+ }
+// rad = trackGauge/8.0;
for ( dir=0; dir<2; dir++ ) {
- Translate( &pos, coupler[dir].pos, coupler[dir].angle, CarItemCouplerLength(item,dir) );
+ Translate( &pos, coupler[dir].pos, coupler[dir].angle,
+ CarItemCouplerLength(item,dir) );
DrawLine( d, coupler[dir].pos, pos, couplerLineWidth, color );
- if ( d->scale < scale2rail ) {
+ if ( DrawTwoRails(d,1) ) {
/*DrawFillCircle( d, p0, rad, dir==0?color:selectedColor );*/
Translate( &pos2, pos, coupler[dir].angle+90.0, trackGauge/3 );
DrawLine( d, pos2, pos, couplerLineWidth, color );
@@ -2105,7 +2222,7 @@ EXPORT void CarItemDraw(
EXPORT void CarItemUpdate(
- carItem_p item )
+ carItem_p item )
{
DoChangeNotification( CHANGE_SCALE );
}
@@ -2129,9 +2246,10 @@ static wIndex_t carDlgManufInx;
static char carDlgManufStr[STR_SIZE];
static wIndex_t carDlgKindInx;
static wIndex_t carDlgProtoInx;
-static char carDlgProtoStr[STR_SIZE];
+static char carDlgProtoStr[STR_SIZE] =
+ "Prototype"; // Make sure we have something in ProtoStr
static wIndex_t carDlgPartnoInx;
-static char carDlgPartnoStr[STR_SIZE];
+static char carDlgPartnoStr[STR_SIZE] = "0"; // and in PartnoStr
static char carDlgDescStr[STR_SIZE];
static long carDlgDispMode;
@@ -2163,17 +2281,18 @@ static long carDlgMultiNum;
static char *dispmodeLabels[] = { N_("Information"), N_("Customize"), NULL };
static drawCmd_t carDlgD = {
- NULL,
- &screenDrawFuncs,
- 0,
- 1.0,
- 0.0,
- { 0, 0 }, { 0, 0 },
- Pix2CoOrd, CoOrd2Pix };
+ NULL,
+ &screenDrawFuncs,
+ 0,
+ 1.0,
+ 0.0,
+ { 0, 0 }, { 0, 0 },
+ Pix2CoOrd, CoOrd2Pix
+};
static void CarDlgRedraw( wDraw_p d, void * context, wWinPix_t x, wWinPix_t y );
-static paramDrawData_t carDlgDrawData = { 455, 100, CarDlgRedraw, NULL, &carDlgD };
-static paramTextData_t notesData = { 440, 100 };
+static paramDrawData_t carDlgDrawData = { 500, 120, CarDlgRedraw, NULL, &carDlgD };
+static paramTextData_t notesData = { 500, 156 };
static char *multinumLabels[] = { N_("Sequential"), N_("Repeated"), NULL };
static void CarDlgNewProto( void );
static void CarDlgUpdate( paramGroup_p, int, void * );
@@ -2254,7 +2373,7 @@ static paramData_t carDlgPLs[] = {
#define I_CD_MLTNUM (C+7)
{ PD_RADIO, &carDlgMultiNum, "multinum", PDO_NOPREF|PDO_DLGWIDE|PDO_DLGHORZ, multinumLabels, N_("Numbers"), BC_HORZ|BC_NOBORDER },
#define I_CD_NOTES (C+8)
- { PD_TEXT, NULL, "notes", PDO_NOPREF|PDO_DLGWIDE|PDO_DLGNOLABELALIGN|PDO_DLGRESETMARGIN, &notesData, N_("Notes") },
+ { PD_TEXT, NULL, "notes", PDO_NOPREF|PDO_DLGWIDE|PDO_DLGNOLABELALIGN|PDO_DLGRESETMARGIN|PDO_DLGRESIZE, &notesData, N_("Notes") },
#define D (C+9)
#define I_CD_MSG (D+0)
@@ -2264,7 +2383,8 @@ static paramData_t carDlgPLs[] = {
{ PD_MENUITEM, CarDlgNewDesc, "new-part-mi", 0, NULL, N_("Car Part"), 0, I2VP(0) },
{ PD_MENUITEM, CarDlgNewProto, "new-proto-mi", 0, NULL, N_("Car Prototype"), 0, I2VP(0) },
#define I_CD_NEWPROTO (D+4)
- { PD_BUTTON, CarDlgNewProto, "new", PDO_DLGCMDBUTTON, NULL, N_("New"), 0, I2VP(0) } };
+ { PD_BUTTON, CarDlgNewProto, "new", PDO_DLGCMDBUTTON, NULL, N_("New"), 0, I2VP(0) }
+};
static paramGroup_t carDlgPG = { "carpart", 0, carDlgPLs, COUNT( carDlgPLs ) };
@@ -2274,151 +2394,163 @@ static dynArr_t carDlgSegs_da;
typedef enum {
- T_ItemSel, T_ItemEnter, T_ProtoSel, T_ProtoEnter, T_PartnoSel, T_PartnoEnter } carDlgTransistion_e;
+ T_ItemSel, T_ItemEnter, T_ProtoSel, T_ProtoEnter, T_PartnoSel, T_PartnoEnter
+} carDlgTransistion_e;
static char *carDlgTransistion_s[] = {
- "ItemSel", "ItemEnter", "ProtoSel", "ProtoEnter", "PartnoSel", "PartnoEnter" };
+ "ItemSel", "ItemEnter", "ProtoSel", "ProtoEnter", "PartnoSel", "PartnoEnter"
+};
typedef enum {
- S_Error,
- S_ItemSel, S_ItemEnter, S_PartnoSel, S_PartnoEnter, S_ProtoSel } carDlgState_e;
+ S_Error,
+ S_ItemSel, S_ItemEnter, S_PartnoSel, S_PartnoEnter, S_ProtoSel
+} carDlgState_e;
static char *carDlgState_s[] = {
- "Error",
- "ItemSel", "ItemEnter", "PartnoSel", "PartnoEnter", "ProtoSel" };
+ "Error",
+ "ItemSel", "ItemEnter", "PartnoSel", "PartnoEnter", "ProtoSel"
+};
typedef enum {
- A_Return,
- A_SError,
- A_Else,
- A_SItemSel,
- A_SItemEnter,
- A_SPartnoSel,
- A_SPartnoEnter,
- A_SProtoSel,
- A_IsCustom,
- A_IsNewPart,
- A_IsNewProto,
- A_LoadDataFromPartList,
- A_LoadDimsFromStack,
- A_LoadManufListForScale,
- A_LoadManufListAll,
- A_LoadProtoListForManuf,
- A_LoadProtoListAll,
- A_LoadPartnoList,
- A_LoadLists,
- A_LoadDimsFromProtoList,
- A_ConvertDimsToProto,
- A_Redraw,
- A_ClrManuf,
- A_ClrPartnoStr,
- A_ClrNumberStr,
- A_LoadProtoStrFromList,
- A_ShowPartnoList,
- A_HidePartnoList,
- A_PushDims,
- A_PopDims,
- A_PopTitleAndTypeinx,
- A_PopCouplerLength,
- A_ShowControls,
- A_LoadInfoFromUpdateItem,
- A_LoadDataFromUpdatePart,
- A_InitProto,
- A_RecallCouplerLength,
- A_Last
- } carDlgAction_e;
+ A_Return,
+ A_SError,
+ A_Else,
+ A_SItemSel,
+ A_SItemEnter,
+ A_SPartnoSel,
+ A_SPartnoEnter,
+ A_SProtoSel,
+ A_IsCustom,
+ A_IsNewPart,
+ A_IsNewProto,
+ A_LoadDataFromPartList,
+ A_LoadDimsFromStack,
+ A_LoadManufListForScale,
+ A_LoadManufListAll,
+ A_LoadProtoListForManuf,
+ A_LoadProtoListAll,
+ A_LoadPartnoList,
+ A_LoadLists,
+ A_LoadDimsFromProtoList,
+ A_ConvertDimsToProto,
+ A_Redraw,
+ A_ClrManuf,
+ A_ClrPartnoStr,
+ A_ClrNumberStr,
+ A_LoadProtoStrFromList,
+ A_ShowPartnoList,
+ A_HidePartnoList,
+ A_PushDims,
+ A_PopDims,
+ A_PopTitleAndTypeinx,
+ A_PopCouplerLength,
+ A_ShowControls,
+ A_LoadInfoFromUpdateItem,
+ A_LoadDataFromUpdatePart,
+ A_InitProto,
+ A_RecallCouplerLength,
+ A_Last
+} carDlgAction_e;
static char *carDlgAction_s[] = {
- "Return",
- "SError",
- "Else",
- "SItemSel",
- "SItemEnter",
- "SPartnoSel",
- "SPartnoEnter",
- "SProtoSel",
- "IsCustom",
- "IsNewPart",
- "IsNewProto",
- "LoadDataFromPartList",
- "LoadDimsFromStack",
- "LoadManufListForScale",
- "LoadManufListAll",
- "LoadProtoListForManuf",
- "LoadProtoListAll",
- "LoadPartnoList",
- "LoadLists",
- "LoadDimsFromProtoList",
- "ConvertDimsToProto",
- "Redraw",
- "ClrManuf",
- "ClrPartnoStr",
- "ClrNumberStr",
- "LoadProtoStrFromList",
- "ShowPartnoList",
- "HidePartnoList",
- "PushDims",
- "PopDims",
- "PopTitleAndTypeinx",
- "PopCouplerLength",
- "ShowControls",
- "LoadInfoFromUpdateItem",
- "LoadDataFromUpdatePart",
- "InitProto",
- "RecallCouplerLength",
- "Last"
- };
+ "Return",
+ "SError",
+ "Else",
+ "SItemSel",
+ "SItemEnter",
+ "SPartnoSel",
+ "SPartnoEnter",
+ "SProtoSel",
+ "IsCustom",
+ "IsNewPart",
+ "IsNewProto",
+ "LoadDataFromPartList",
+ "LoadDimsFromStack",
+ "LoadManufListForScale",
+ "LoadManufListAll",
+ "LoadProtoListForManuf",
+ "LoadProtoListAll",
+ "LoadPartnoList",
+ "LoadLists",
+ "LoadDimsFromProtoList",
+ "ConvertDimsToProto",
+ "Redraw",
+ "ClrManuf",
+ "ClrPartnoStr",
+ "ClrNumberStr",
+ "LoadProtoStrFromList",
+ "ShowPartnoList",
+ "HidePartnoList",
+ "PushDims",
+ "PopDims",
+ "PopTitleAndTypeinx",
+ "PopCouplerLength",
+ "ShowControls",
+ "LoadInfoFromUpdateItem",
+ "LoadDataFromUpdatePart",
+ "InitProto",
+ "RecallCouplerLength",
+ "Last"
+};
static carDlgAction_e stateMachine[7][7][10] = {
-/* A_SError */{ {A_SError}, {A_SError}, {A_SError}, {A_SError}, {A_SError}, {A_SError}, {A_SError} },
-
-/*A_SItemSel*/{
-/*T_ItemSel*/ { A_LoadProtoListForManuf, A_LoadPartnoList, A_LoadDataFromPartList, A_Redraw },
-/*T_ItemEnter*/ { A_SItemEnter, A_LoadProtoListAll, A_ClrPartnoStr, A_ClrNumberStr, A_LoadDimsFromProtoList, A_Redraw, A_HidePartnoList },
-/*T_ProtoSel*/ { A_LoadPartnoList, A_LoadDataFromPartList, A_Redraw },
-/*T_ProtoEnter*/ { A_SError },
-/*T_PartnoSel*/ { A_LoadDataFromPartList, A_Redraw },
-/*T_PartnoEnter*/{ A_SItemEnter, A_LoadProtoListAll, A_HidePartnoList } },
-
-/*A_SItemEnter*/{
-/*T_ItemSel*/ { A_SItemSel, A_LoadProtoListForManuf, A_LoadPartnoList, A_LoadDataFromPartList, A_Redraw, A_ShowPartnoList },
-/*T_ItemEnter*/ { A_Return },
-/*T_ProtoSel*/ { A_LoadDimsFromProtoList, A_Redraw },
-/*T_ProtoEnter*/ { A_SError },
-/*T_PartnoSel*/ { A_SError },
-/*T_PartnoEnter*/{ A_Return } },
-
-/*A_SPartnoSel*/{
-/*T_ItemSel*/ { A_SPartnoSel },
-/*T_ItemEnter*/ { A_SPartnoSel },
-/*T_ProtoSel*/ { A_SPartnoSel, A_LoadDimsFromProtoList, A_Redraw },
-/*T_ProtoEnter*/ { A_SError },
-/*T_PartnoSel*/ { A_SError } },
-
-/*A_SPartnoEnter*/{
-/*T_ItemSel*/ { A_SPartnoSel },
-/*T_ItemEnter*/ { A_SPartnoEnter },
-/*T_ProtoSel*/ { A_SPartnoEnter, A_LoadDimsFromProtoList, A_Redraw },
-/*T_ProtoEnter*/ { A_SError },
-/*T_PartnoSel*/ { A_SError },
-/*T_PartnoEnter*/{ A_SPartnoEnter } },
-
-/*A_SProtoSel*/{
-/*T_ItemSel*/ { A_SError },
-/*T_ItemEnter*/ { A_SError },
-/*T_ProtoSel*/ { A_SError },
-/*T_ProtoEnter*/ { A_SProtoSel },
-/*T_PartnoSel*/ { A_SError },
-/*T_PartnoEnter*/{ A_SError } } };
+ /* A_SError */{ {A_SError}, {A_SError}, {A_SError}, {A_SError}, {A_SError}, {A_SError}, {A_SError} },
+
+ /*A_SItemSel*/{
+ /*T_ItemSel*/ { A_LoadProtoListForManuf, A_LoadPartnoList, A_LoadDataFromPartList, A_Redraw },
+ /*T_ItemEnter*/ { A_SItemEnter, A_LoadProtoListAll, A_ClrPartnoStr, A_ClrNumberStr, A_LoadDimsFromProtoList, A_Redraw, A_HidePartnoList },
+ /*T_ProtoSel*/ { A_LoadPartnoList, A_LoadDataFromPartList, A_Redraw },
+ /*T_ProtoEnter*/ { A_SError },
+ /*T_PartnoSel*/ { A_LoadDataFromPartList, A_Redraw },
+ /*T_PartnoEnter*/{ A_SItemEnter, A_LoadProtoListAll, A_HidePartnoList }
+ },
+
+ /*A_SItemEnter*/{
+ /*T_ItemSel*/ { A_SItemSel, A_LoadProtoListForManuf, A_LoadPartnoList, A_LoadDataFromPartList, A_Redraw, A_ShowPartnoList },
+ /*T_ItemEnter*/ { A_Return },
+ /*T_ProtoSel*/ { A_LoadDimsFromProtoList, A_Redraw },
+ /*T_ProtoEnter*/ { A_SError },
+ /*T_PartnoSel*/ { A_SError },
+ /*T_PartnoEnter*/{ A_Return }
+ },
+
+ /*A_SPartnoSel*/{
+ /*T_ItemSel*/ { A_SPartnoSel },
+ /*T_ItemEnter*/ { A_SPartnoSel },
+ /*T_ProtoSel*/ { A_SPartnoSel, A_LoadDimsFromProtoList, A_Redraw },
+ /*T_ProtoEnter*/ { A_SError },
+ /*T_PartnoSel*/ { A_SError }
+ },
+
+ /*A_SPartnoEnter*/{
+ /*T_ItemSel*/ { A_SPartnoSel },
+ /*T_ItemEnter*/ { A_SPartnoEnter },
+ /*T_ProtoSel*/ { A_SPartnoEnter, A_LoadDimsFromProtoList, A_Redraw },
+ /*T_ProtoEnter*/ { A_SError },
+ /*T_PartnoSel*/ { A_SError },
+ /*T_PartnoEnter*/{ A_SPartnoEnter }
+ },
+
+ /*A_SProtoSel*/{
+ /*T_ItemSel*/ { A_SError },
+ /*T_ItemEnter*/ { A_SError },
+ /*T_ProtoSel*/ { A_SError },
+ /*T_ProtoEnter*/ { A_SProtoSel },
+ /*T_PartnoSel*/ { A_SError },
+ /*T_PartnoEnter*/{ A_SError }
+ }
+};
static carDlgAction_e itemNewActions[] = {
- A_RecallCouplerLength,
- A_LoadLists,
- A_IsCustom, 2+3,
- A_LoadDimsFromProtoList, A_ClrPartnoStr, A_ClrNumberStr,
- A_Else, 1,
- A_LoadDataFromPartList,
- A_ShowControls, A_Return };
+ A_RecallCouplerLength,
+ A_LoadLists,
+ A_IsCustom, 2+3,
+ A_LoadDimsFromProtoList, A_ClrPartnoStr, A_ClrNumberStr,
+ A_Else, 1,
+ A_LoadDataFromPartList,
+ A_ShowControls, A_Return
+};
static carDlgAction_e itemUpdActions[] = { A_LoadInfoFromUpdateItem, /*A_LoadManufListForScale,
A_IsCustom, 5,
A_LoadProtoListAll, A_HidePartnoList, A_SItemEnter,
A_Else, 5,
A_LoadProtoListForManuf, A_LoadPartnoList, A_LoadDataFromPartList, A_ShowPartnoList, A_SItemSel,*/
- A_ShowControls, A_Return };
+ A_ShowControls, A_Return
+ };
static carDlgAction_e partNewActions[] = { A_RecallCouplerLength, A_LoadManufListAll, A_LoadProtoListAll, A_ClrPartnoStr, A_ClrNumberStr, A_SPartnoSel, A_LoadDimsFromProtoList, A_ShowControls, A_Redraw, A_Return };
static carDlgAction_e partUpdActions[] = { A_LoadDataFromUpdatePart, A_SPartnoSel, A_ShowControls, A_Return };
@@ -2427,64 +2559,68 @@ static carDlgAction_e protoNewActions[] = { A_InitProto, A_SProtoSel, A_ShowCont
static carDlgAction_e protoUpdActions[] = { A_InitProto, A_SProtoSel, A_ShowControls, A_Return };
static carDlgAction_e item2partActions[] = {
- A_PushDims, A_LoadManufListAll, A_LoadProtoListAll,
- A_IsCustom, 0+1,
- A_ClrManuf,
- A_SPartnoSel,
- A_ShowControls, A_Return };
+ A_PushDims, A_LoadManufListAll, A_LoadProtoListAll,
+ A_IsCustom, 0+1,
+ A_ClrManuf,
+ A_SPartnoSel,
+ A_ShowControls, A_Return
+};
static carDlgAction_e part2itemActions[] = {
- A_IsNewPart, 2+0,
- A_Else, 1,
- A_PopTitleAndTypeinx,
- A_LoadLists,
- A_IsCustom, 2+1,
- A_LoadDimsFromProtoList,
- A_Else, 1,
- A_LoadDataFromPartList,
+ A_IsNewPart, 2+0,
+ A_Else, 1,
+ A_PopTitleAndTypeinx,
+ A_LoadLists,
+ A_IsCustom, 2+1,
+ A_LoadDimsFromProtoList,
+ A_Else, 1,
+ A_LoadDataFromPartList,
#ifdef LATER
- A_IsNewPart, 2+0,
- A_Else, 1,
- A_LoadDimsFromStack,
+ A_IsNewPart, 2+0,
+ A_Else, 1,
+ A_LoadDimsFromStack,
#endif
- A_ShowControls,
- A_Return };
+ A_ShowControls,
+ A_Return
+};
static carDlgAction_e item2protoActions[] = { A_PushDims, A_ConvertDimsToProto, A_SProtoSel, A_ShowControls, A_Return };
static carDlgAction_e proto2itemActions[] = {
- A_IsCustom, 2+2+3,
- A_IsNewProto, 2+3,
- A_LoadProtoListAll,
- A_PopCouplerLength,
- A_LoadDimsFromProtoList,
- A_Else, 2,
- A_LoadDimsFromStack,
- A_LoadProtoStrFromList,
- A_ShowControls,
- A_Return };
+ A_IsCustom, 2+2+3,
+ A_IsNewProto, 2+3,
+ A_LoadProtoListAll,
+ A_PopCouplerLength,
+ A_LoadDimsFromProtoList,
+ A_Else, 2,
+ A_LoadDimsFromStack,
+ A_LoadProtoStrFromList,
+ A_ShowControls,
+ A_Return
+};
static carDlgAction_e part2protoActions[] = { A_PushDims, A_ConvertDimsToProto, A_SProtoSel, A_ShowControls, A_Return };
static carDlgAction_e proto2partActions[] = {
- A_IsNewProto, 2+3,
- A_LoadProtoListAll,
- A_PopCouplerLength,
- A_LoadDimsFromProtoList,
- A_Else, 2,
- A_LoadDimsFromStack,
- A_LoadProtoStrFromList,
- A_ShowControls,
- A_Return };
+ A_IsNewProto, 2+3,
+ A_LoadProtoListAll,
+ A_PopCouplerLength,
+ A_LoadDimsFromProtoList,
+ A_Else, 2,
+ A_LoadDimsFromStack,
+ A_LoadProtoStrFromList,
+ A_ShowControls,
+ A_Return
+};
#define CARDLG_STK_SIZE (2)
int carDlgStkPtr = 0;
struct {
- carDim_t dim;
- DIST_T couplerLength;
- carDlgState_e state;
- int changed;
- carPart_p partP;
- wIndex_t typeInx;
- } carDlgStk[CARDLG_STK_SIZE];
+ carDim_t dim;
+ DIST_T couplerLength;
+ carDlgState_e state;
+ int changed;
+ carPart_p partP;
+ wIndex_t typeInx;
+} carDlgStk[CARDLG_STK_SIZE];
static carDlgState_e currState = S_Error;
#define S_ITEM (currState==S_ItemSel||currState==S_ItemEnter)
@@ -2497,10 +2633,11 @@ static void CarDlgLoadDimsFromPart( carPart_p partP )
{
tabString_t tabs[7];
- if ( partP == NULL ) return;
+ if ( partP == NULL ) { return; }
carDlgDim = partP->dim;
carDlgCouplerLength = (carDlgDim.coupledLength-carDlgDim.carLength)/2.0;
- sprintf( message, "%s-%s", carDlgPLs[I_CD_CPLRLEN].nameStr, GetScaleName(carDlgScaleInx) );
+ sprintf( message, "%s-%s", carDlgPLs[I_CD_CPLRLEN].nameStr,
+ GetScaleName(carDlgScaleInx) );
wPrefSetFloat( carDlgPG.nameStr, message, carDlgCouplerLength );
carDlgIsLoco = (partP->options&CAR_DESC_IS_LOCO)?1:0;
carDlgBodyColor = partP->color;
@@ -2508,7 +2645,8 @@ static void CarDlgLoadDimsFromPart( carPart_p partP )
ParamLoadControl( &carDlgPG, I_CD_CARWIDTH );
ParamLoadControl( &carDlgPG, I_CD_TRKCENTER );
ParamLoadControl( &carDlgPG, I_CD_CPLDLEN );
- wColorSelectButtonSetColor( (wButton_p)carDlgPLs[I_CD_BODYCOLOR].control, *(wDrawColor*)carDlgPLs[I_CD_BODYCOLOR].valueP );
+ wColorSelectButtonSetColor( (wButton_p)carDlgPLs[I_CD_BODYCOLOR].control,
+ *(wDrawColor*)carDlgPLs[I_CD_BODYCOLOR].valueP );
TabStringExtract( partP->title, 7, tabs );
}
@@ -2531,7 +2669,7 @@ static void CarDlgLoadDimsFromProto( carProto_p protoP )
static void CarDlgRedraw(
- wDraw_p d, void * context, wWinPix_t x, wWinPix_t y )
+ wDraw_p d, void * context, wWinPix_t x, wWinPix_t y )
{
wWinPix_t w, h;
DIST_T ww, hh;
@@ -2542,33 +2680,37 @@ static void CarDlgRedraw(
int segCnt;
trkSeg_p segPtr;
- if ( S_PROTO )
+ if ( S_PROTO ) {
ratio = 1;
- else
+ } else {
ratio = 1/GetScaleRatio(carDlgScaleInx);
+ }
wDrawClear( carDlgD.d );
- if ( carDlgDim.carLength <= 0 || carDlgDim.carWidth <= 0 )
+ if ( carDlgDim.carLength <= 0 || carDlgDim.carWidth <= 0 ) {
return;
+ }
FreeFilledDraw( carDlgSegs_da.cnt, &carDlgSegs(0) );
if ( !S_PROTO ) {
if ( carDlgProtoInx < 0 ||
- (protoP = CarProtoLookup( carDlgProtoStr, FALSE, FALSE, 0.0, 0.0 )) == NULL ||
- protoP->segCnt == 0 ) {
- CarProtoDlgCreateDummyOutline( &segCnt, &segPtr, (BOOL_T)carDlgIsLoco, carDlgDim.carLength, carDlgDim.carWidth, carDlgBodyColor );
+ (protoP = CarProtoLookup( carDlgProtoStr, FALSE, FALSE, 0.0, 0.0 )) == NULL ||
+ protoP->segCnt == 0 ) {
+ CarProtoDlgCreateDummyOutline( &segCnt, &segPtr, (BOOL_T)carDlgIsLoco,
+ carDlgDim.carLength, carDlgDim.carWidth, carDlgBodyColor );
} else {
segCnt = protoP->segCnt;
segPtr = protoP->segPtr;
}
} else {
if ( carProtoSegCnt <= 0 ) {
- CarProtoDlgCreateDummyOutline( &segCnt, &segPtr, (BOOL_T)carDlgIsLoco, carDlgDim.carLength, carDlgDim.carWidth, drawColorBlue );
+ CarProtoDlgCreateDummyOutline( &segCnt, &segPtr, (BOOL_T)carDlgIsLoco,
+ carDlgDim.carLength, carDlgDim.carWidth, drawColorBlue );
} else {
segCnt = carProtoSegCnt;
segPtr = carProtoSegPtr;
}
}
DYNARR_SET( trkSeg_t, carDlgSegs_da, segCnt );
- memcpy( &carDlgSegs(0), segPtr, segCnt * sizeof *(trkSeg_t*)0 );
+ memcpy( &carDlgSegs(0), segPtr, segCnt * sizeof carDlgSegs(0) );
CloneFilledDraw( carDlgSegs_da.cnt, &carDlgSegs(0), TRUE );
GetSegBounds( zero, 0.0, carDlgSegs_da.cnt, &carDlgSegs(0), &orig, &size );
scale_w = carDlgDim.carLength/size.x;
@@ -2589,26 +2731,32 @@ static void CarDlgRedraw(
hh = h/carDlgD.dpi-0.5;
scale_w = carDlgDim.carLength/ww;
scale_h = carDlgDim.carWidth/hh;
- if ( scale_w > scale_h )
+ if ( scale_w > scale_h ) {
carDlgD.scale = scale_w;
- else
+ } else {
carDlgD.scale = scale_h;
+ }
orig.x = 0.50*carDlgD.scale;
orig.y = 0.25*carDlgD.scale;
- DrawSegs( &carDlgD, orig, 0.0, &carDlgSegs(0), carDlgSegs_da.cnt, 0.0, wDrawColorBlack );
+ DrawSegsDA( &carDlgD, NULL, orig, 0.0, &carDlgSegs_da, 0.0, wDrawColorBlack,
+ 0 );
pos.y = orig.y+carDlgDim.carWidth/2.0;
if ( carDlgDim.truckCenter > 0.0 ) {
- pos.x = orig.x+(carDlgDim.carLength-carDlgDim.truckCenter)/2.0-carDlgDim.truckCenterOffset;
+ pos.x = orig.x+(carDlgDim.carLength-carDlgDim.truckCenter)/2.0
+ -carDlgDim.truckCenterOffset;
CarProtoDrawTruck( &carDlgD, trackGauge*curScaleRatio, ratio, pos, 0.0 );
- pos.x = orig.x+(carDlgDim.carLength+carDlgDim.truckCenter)/2.0-carDlgDim.truckCenterOffset;
+ pos.x = orig.x+(carDlgDim.carLength+carDlgDim.truckCenter)/2.0
+ -carDlgDim.truckCenterOffset;
CarProtoDrawTruck( &carDlgD, trackGauge*curScaleRatio, ratio, pos, 0.0 );
}
if ( carDlgDim.coupledLength > carDlgDim.carLength ) {
pos.x = orig.x;
- CarProtoDrawCoupler( &carDlgD, (carDlgDim.coupledLength-carDlgDim.carLength)/2.0, ratio, pos, 270.0 );
+ CarProtoDrawCoupler( &carDlgD,
+ (carDlgDim.coupledLength-carDlgDim.carLength)/2.0, ratio, pos, 270.0 );
pos.x = orig.x+carDlgDim.carLength;
- CarProtoDrawCoupler( &carDlgD, (carDlgDim.coupledLength-carDlgDim.carLength)/2.0, ratio, pos, 90.0 );
+ CarProtoDrawCoupler( &carDlgD,
+ (carDlgDim.coupledLength-carDlgDim.carLength)/2.0, ratio, pos, 90.0 );
}
}
@@ -2623,97 +2771,119 @@ static void CarDlgLoadRoadnameList( void )
wIndex_t inx;
roadnameMap_p roadnameMapP;
- if ( !roadnameMapChanged ) return;
+ if ( !roadnameMapChanged ) { return; }
wListClear( (wList_p)carDlgPLs[I_CD_ROADNAME_LIST].control );
- wListAddValue( (wList_p)carDlgPLs[I_CD_ROADNAME_LIST].control, _("Undecorated"), NULL, NULL );
+ wListAddValue( (wList_p)carDlgPLs[I_CD_ROADNAME_LIST].control, _("Undecorated"),
+ NULL, NULL );
for ( inx=0; inx<roadnameMap_da.cnt; inx++ ) {
roadnameMapP = DYNARR_N(roadnameMap_p, roadnameMap_da, inx);
- wListAddValue( (wList_p)carDlgPLs[I_CD_ROADNAME_LIST].control, roadnameMapP->roadname, NULL, roadnameMapP );
- if ( strcasecmp( carDlgRoadnameStr, roadnameMapP->roadname )==0 )
+ wListAddValue( (wList_p)carDlgPLs[I_CD_ROADNAME_LIST].control,
+ roadnameMapP->roadname, NULL, roadnameMapP );
+ if ( strcasecmp( carDlgRoadnameStr, roadnameMapP->roadname )==0 ) {
carDlgRoadnameInx = inx+1;
+ }
}
roadnameMapChanged = FALSE;
}
static BOOL_T CheckAvail(
- carPartParent_p parentP )
+ carPartParent_p parentP )
{
wIndex_t inx;
carPart_p partP;
for ( inx=0; inx<parentP->parts_da.cnt; inx++ ) {
partP = carPart(parentP,inx);
- if ( IsParamValid(partP->paramFileIndex) )
+ if ( IsParamValid(partP->paramFileIndex) ) {
return TRUE;
+ }
}
return FALSE;
}
static BOOL_T CarDlgLoadManufList(
- BOOL_T bLoadAll,
- BOOL_T bInclCustomUnknown,
- SCALEINX_T scale )
+ BOOL_T bLoadAll,
+ BOOL_T bInclCustomUnknown,
+ SCALEINX_T scale )
{
carPartParent_p manufP, manufP1;
wIndex_t inx, listInx=-1;
BOOL_T found = TRUE;
char * firstName = NULL;
-LOG( log_carDlgList, 3, ( "CarDlgLoadManufList( %s, %s, %d )\n carDlgManufStr=\"%s\"\n", bLoadAll?"TRUE":"FALSE", bInclCustomUnknown?"TRUE":"FALSE", scale, carDlgManufStr ) )
+ LOG( log_carDlgList, 3,
+ ( "CarDlgLoadManufList( %s, %s, %d )\n carDlgManufStr=\"%s\"\n",
+ bLoadAll?"TRUE":"FALSE", bInclCustomUnknown?"TRUE":"FALSE", scale,
+ carDlgManufStr ) )
carDlgManufInx = -1;
manufP1 = NULL;
wListClear( (wList_p)carDlgPLs[I_CD_MANUF_LIST].control );
- for ( inx=0; inx<carPartParent_da.cnt; inx++ ) {
- manufP = carPartParent(inx);
- if ( manufP1!=NULL && strcasecmp( manufP1->manuf, manufP->manuf ) == 0 )
- continue;
- if ( bLoadAll==FALSE && manufP->scale != scale )
- continue;
- if ( !CheckAvail(manufP) )
- continue;
- listInx = wListAddValue( (wList_p)carDlgPLs[I_CD_MANUF_LIST].control, manufP->manuf, NULL, manufP );
- if ( carDlgManufInx < 0 && ( carDlgManufStr[0] == '\0' || strcasecmp( carDlgManufStr, manufP->manuf ) == 0 ) ) {
-LOG( log_carDlgList, 4, ( " found manufStr (inx=%d, listInx=%d)\n", inx, listInx ) )
- carDlgManufInx = listInx;
- if ( carDlgManufStr[0] == '\0' ) strcpy( carDlgManufStr, manufP->manuf );
- }
- if ( firstName == NULL )
- firstName = manufP->manuf;
- manufP1 = manufP;
- }
- if ( bInclCustomUnknown ) {
- listInx = wListAddValue( (wList_p)carDlgPLs[I_CD_MANUF_LIST].control, _("Custom"), NULL, NULL );
- if ( carDlgManufInx < 0 && ( carDlgManufStr[0] == '\0' || strcasecmp( carDlgManufStr, "Custom" ) == 0 ) ) {
-LOG( log_carDlgList, 4, ( " found Cus manufStr (inx=%d, listInx=%d)\n", inx, listInx ) )
- carDlgManufInx = listInx;
- if ( carDlgManufStr[0] == '\0' ) strcpy( carDlgManufStr, _("Custom") );
- }
- if ( firstName == NULL )
- firstName = "Custom";
- wListAddValue( (wList_p)carDlgPLs[I_CD_MANUF_LIST].control, _("Unknown"), NULL, NULL );
- if ( carDlgManufInx < 0 && ( carDlgManufStr[0] == '\0' || strcasecmp( carDlgManufStr, "Unknown" ) == 0 ) ) {
-LOG( log_carDlgList, 4, ( " found Unk manufStr (inx=%d, listInx=%d)\n", inx, listInx ) )
- carDlgManufInx = listInx;
- if ( carDlgManufStr[0] == '\0' ) strcpy( carDlgManufStr, _("Unknown") );
- }
+ for ( inx=0; inx<carPartParent_da.cnt; inx++ ) {
+ manufP = carPartParent(inx);
+ if ( manufP1!=NULL && strcasecmp( manufP1->manuf, manufP->manuf ) == 0 ) {
+ continue;
}
- if ( carDlgManufInx < 0 ) {
- found = FALSE;
- if ( firstName != NULL ) {
-LOG( log_carDlgList, 4, ( " didn't find manufStr, using [0] = %s\n", firstName ) )
- carDlgManufInx = 0;
- strcpy( carDlgManufStr, firstName );
- }
+ if ( bLoadAll==FALSE && manufP->scale != scale ) {
+ continue;
+ }
+ if ( !CheckAvail(manufP) ) {
+ continue;
+ }
+ listInx = wListAddValue( (wList_p)carDlgPLs[I_CD_MANUF_LIST].control,
+ manufP->manuf, NULL, manufP );
+ if ( carDlgManufInx < 0 && ( carDlgManufStr[0] == '\0'
+ || strcasecmp( carDlgManufStr, manufP->manuf ) == 0 ) ) {
+ LOG( log_carDlgList, 4, ( " found manufStr (inx=%d, listInx=%d)\n", inx,
+ listInx ) )
+ carDlgManufInx = listInx;
+ if ( carDlgManufStr[0] == '\0' ) { strcpy( carDlgManufStr, manufP->manuf ); }
+ }
+ if ( firstName == NULL ) {
+ firstName = manufP->manuf;
+ }
+ manufP1 = manufP;
+ }
+ if ( bInclCustomUnknown ) {
+ listInx = wListAddValue( (wList_p)carDlgPLs[I_CD_MANUF_LIST].control,
+ _("Custom"), NULL, NULL );
+ if ( carDlgManufInx < 0 && ( carDlgManufStr[0] == '\0'
+ || strcasecmp( carDlgManufStr, "Custom" ) == 0 ) ) {
+ LOG( log_carDlgList, 4, ( " found Cus manufStr (inx=%d, listInx=%d)\n", inx,
+ listInx ) )
+ carDlgManufInx = listInx;
+ if ( carDlgManufStr[0] == '\0' ) { strcpy( carDlgManufStr, _("Custom") ); }
+ }
+ if ( firstName == NULL ) {
+ firstName = "Custom";
+ }
+ wListAddValue( (wList_p)carDlgPLs[I_CD_MANUF_LIST].control, _("Unknown"), NULL,
+ NULL );
+ if ( carDlgManufInx < 0 && ( carDlgManufStr[0] == '\0'
+ || strcasecmp( carDlgManufStr, "Unknown" ) == 0 ) ) {
+ LOG( log_carDlgList, 4, ( " found Unk manufStr (inx=%d, listInx=%d)\n", inx,
+ listInx ) )
+ carDlgManufInx = listInx;
+ if ( carDlgManufStr[0] == '\0' ) { strcpy( carDlgManufStr, _("Unknown") ); }
}
+ }
+ if ( carDlgManufInx < 0 ) {
+ found = FALSE;
+ if ( firstName != NULL ) {
+ LOG( log_carDlgList, 4, ( " didn't find manufStr, using [0] = %s\n",
+ firstName ) )
+ carDlgManufInx = 0;
+ strcpy( carDlgManufStr, firstName );
+ }
+ }
return found;
}
static BOOL_T CarDlgLoadProtoList(
- char * manuf,
- SCALEINX_T scale,
- BOOL_T loadTypeList )
+ char * manuf,
+ SCALEINX_T scale,
+ BOOL_T loadTypeList )
{
carPartParent_p parentP;
wIndex_t inx, listInx, inx1;
@@ -2730,75 +2900,96 @@ static BOOL_T CarDlgLoadProtoList(
wListClear( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control );
memset( typeCount, 0, N_TYPELISTMAP * sizeof typeCount[0] );
-LOG( log_carDlgList, 3, ( "CarDlgLoadProtoList( %s, %d, %s )\n carDlgProtoStr=\"%s\", carDlgTypeInx=%d\n", manuf?manuf:"NULL", scale, loadTypeList?"TRUE":"FALSE", carDlgProtoStr, carDlgTypeInx ) )
+ LOG( log_carDlgList, 3,
+ ( "CarDlgLoadProtoList( %s, %d, %s )\n carDlgProtoStr=\"%s\", carDlgTypeInx=%d\n",
+ manuf?manuf:"NULL", scale, loadTypeList?"TRUE":"FALSE", carDlgProtoStr,
+ carDlgTypeInx ) )
if ( manuf==NULL ) {
- if ( carProto_da.cnt <= 0 ) return FALSE;
- if ( listTypeInx < 0 && carDlgProtoStr[0] && (protoP=CarProtoFind(carDlgProtoStr)) )
+ if ( carProto_da.cnt <= 0 ) { return FALSE; }
+ if ( listTypeInx < 0 && carDlgProtoStr[0]
+ && (protoP=CarProtoFind(carDlgProtoStr)) ) {
listTypeInx = CarProtoFindTypeCode(protoP->type);
- if ( listTypeInx < 0 )
+ }
+ if ( listTypeInx < 0 ) {
listTypeInx = CarProtoFindTypeCode(carProto(0)->type);
+ }
for ( inx=0; inx<carProto_da.cnt; inx++ ) {
protoP = carProto(inx);
currTypeInx = CarProtoFindTypeCode(protoP->type);
typeCount[currTypeInx]++;
if ( carDlgTypeInx >= 0 &&
- listTypeInx != carDlgTypeInx &&
- currTypeInx == carDlgTypeInx ) {
-LOG( log_carDlgList, 4, ( " found typeinx, reset list (old=%d)\n", listTypeInx ) )
+ listTypeInx != carDlgTypeInx &&
+ currTypeInx == carDlgTypeInx ) {
+ LOG( log_carDlgList, 4, ( " found typeinx, reset list (old=%d)\n",
+ listTypeInx ) )
wListClear( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control );
listTypeInx = carDlgTypeInx;
carDlgProtoInx = -1;
firstName = NULL;
}
- if ( currTypeInx != listTypeInx ) continue;
- listInx = wListAddValue( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control, protoP->desc, NULL, protoP );
- if ( carDlgProtoInx < 0 && carDlgProtoStr[0] && strcasecmp( carDlgProtoStr, protoP->desc ) == 0 ) {
-LOG( log_carDlgList, 4, ( " found protoStr (inx=%d, listInx=%d)\n", inx, listInx ) )
+ if ( currTypeInx != listTypeInx ) { continue; }
+ listInx = wListAddValue( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control,
+ protoP->desc, NULL, protoP );
+ if ( carDlgProtoInx < 0 && carDlgProtoStr[0]
+ && strcasecmp( carDlgProtoStr, protoP->desc ) == 0 ) {
+ LOG( log_carDlgList, 4, ( " found protoStr (inx=%d, listInx=%d)\n", inx,
+ listInx ) )
carDlgProtoInx = listInx;
- if ( carDlgProtoStr[0] == '\0' ) strcpy( carDlgProtoStr, protoP->desc );
+ if ( carDlgProtoStr[0] == '\0' ) { strcpy( carDlgProtoStr, protoP->desc ); }
}
- if ( firstName == NULL )
+ if ( firstName == NULL ) {
firstName = protoP->desc;
+ }
}
} else {
for ( inx=0; inx<carPartParent_da.cnt; inx++ ) {
parentP = carPartParent(inx);
if ( strcasecmp( manuf, parentP->manuf ) != 0 ||
- scale != parentP->scale )
+ scale != parentP->scale ) {
continue;
- if ( !CheckAvail(parentP) )
+ }
+ if ( !CheckAvail(parentP) ) {
continue;
+ }
found = FALSE;
for ( inx1=0; inx1<parentP->parts_da.cnt; inx1++ ) {
partP = carPart( parentP, inx1 );
currTypeInx = CarProtoFindTypeCode(partP->type);
typeCount[currTypeInx]++;
- if ( listTypeInx < 0 )
+ if ( listTypeInx < 0 ) {
listTypeInx = currTypeInx;
+ }
if ( carDlgTypeInx >= 0 &&
- listTypeInx != carDlgTypeInx &&
- currTypeInx == carDlgTypeInx ) {
-LOG( log_carDlgList, 4, ( " found typeinx, reset list (old=%d)\n", listTypeInx ) )
+ listTypeInx != carDlgTypeInx &&
+ currTypeInx == carDlgTypeInx ) {
+ LOG( log_carDlgList, 4, ( " found typeinx, reset list (old=%d)\n",
+ listTypeInx ) )
wListClear( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control );
listTypeInx = carDlgTypeInx;
carDlgProtoInx = -1;
firstName = NULL;
}
- if ( listTypeInx == currTypeInx )
+ if ( listTypeInx == currTypeInx ) {
found = TRUE;
+ }
}
- if ( !found )
+ if ( !found ) {
continue;
- listInx = wListAddValue( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control, parentP->proto, NULL, parentP );
- if ( carDlgProtoInx < 0 && ( carDlgProtoStr[0] == '\0' || strcasecmp( carDlgProtoStr, parentP->proto ) == 0 ) ) {
-LOG( log_carDlgList, 4, ( " found protoStr (inx=%d, listInx=%d)\n", inx, listInx ) )
+ }
+ listInx = wListAddValue( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control,
+ parentP->proto, NULL, parentP );
+ if ( carDlgProtoInx < 0 && ( carDlgProtoStr[0] == '\0'
+ || strcasecmp( carDlgProtoStr, parentP->proto ) == 0 ) ) {
+ LOG( log_carDlgList, 4, ( " found protoStr (inx=%d, listInx=%d)\n", inx,
+ listInx ) )
carDlgProtoInx = listInx;
if ( carDlgProtoStr[0] == '\0' ) {
strcpy( carDlgProtoStr, parentP->proto );
}
}
- if ( firstName == NULL )
+ if ( firstName == NULL ) {
firstName = parentP->proto;
+ }
}
}
@@ -2806,60 +2997,63 @@ LOG( log_carDlgList, 4, ( " found protoStr (inx=%d, listInx=%d)\n", inx, list
if ( carDlgProtoInx < 0 ) {
found = FALSE;
if ( firstName != NULL ) {
-LOG( log_carDlgList, 4, ( " didn't find protoStr, using [0] = %s\n", firstName ) )
+ LOG( log_carDlgList, 4, ( " didn't find protoStr, using [0] = %s\n",
+ firstName ) )
carDlgProtoInx = 0;
strcpy( carDlgProtoStr, firstName );
}
}
- wListSetIndex( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control, carDlgProtoInx );
+ wListSetIndex( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control,
+ carDlgProtoInx );
if ( loadTypeList ) {
-LOG( log_carDlgList, 4, ( " loading typelist\n" ) )
- wListClear( (wList_p)carDlgPLs[I_CD_PROTOKIND_LIST].control );
- for ( currTypeInx=0; currTypeInx<N_TYPELISTMAP; currTypeInx++ ) {
- if ( typeCount[currTypeInx] > 0 ) {
- listInx = wListAddValue( (wList_p)carDlgPLs[I_CD_PROTOKIND_LIST].control, _(typeListMap[currTypeInx].name), NULL, I2VP(currTypeInx) );
- if ( currTypeInx == listTypeInx ) {
-LOG( log_carDlgList, 4, ( " current = %d\n", listInx ) )
- carDlgKindInx = listInx;
+ LOG( log_carDlgList, 4, ( " loading typelist\n" ) )
+ wListClear( (wList_p)carDlgPLs[I_CD_PROTOKIND_LIST].control );
+ for ( currTypeInx=0; currTypeInx<N_TYPELISTMAP; currTypeInx++ ) {
+ if ( typeCount[currTypeInx] > 0 ) {
+ listInx = wListAddValue( (wList_p)carDlgPLs[I_CD_PROTOKIND_LIST].control,
+ _(typeListMap[currTypeInx].name), NULL, I2VP(currTypeInx) );
+ if ( currTypeInx == listTypeInx ) {
+ LOG( log_carDlgList, 4, ( " current = %d\n", listInx ) )
+ carDlgKindInx = listInx;
+ }
}
}
}
- }
return found;
}
static void ConstructPartDesc(
- tabString_t * tabs )
+ tabString_t * tabs )
{
char * cp;
- cp = message;
- *cp = '\0';
- if ( tabs[T_PART].len ) {
- cp = TabStringCpy( cp, &tabs[T_PART] );
- *cp++ = ' ';
- }
- if ( tabs[T_DESC].len ) {
- cp = TabStringCpy( cp, &tabs[T_DESC] );
- *cp++ = ' ';
- }
- if ( tabs[T_REPMARK].len ) {
- cp = TabStringCpy( cp, &tabs[T_REPMARK] );
- *cp++ = ' ';
- } else if ( tabs[T_ROADNAME].len ) {
- cp = TabStringCpy( cp, &tabs[T_ROADNAME] );
- *cp++ = ' ';
- } else {
- strcpy( cp, _("Undecorated ") );
- cp += strlen( cp );
- }
- if ( tabs[T_NUMBER].len ) {
- cp = TabStringCpy( cp, &tabs[T_NUMBER] );
- *cp++ = ' ';
- }
- *cp = '\0';
+ cp = message;
+ *cp = '\0';
+ if ( tabs[T_PART].len ) {
+ cp = TabStringCpy( cp, &tabs[T_PART] );
+ *cp++ = ' ';
+ }
+ if ( tabs[T_DESC].len ) {
+ cp = TabStringCpy( cp, &tabs[T_DESC] );
+ *cp++ = ' ';
+ }
+ if ( tabs[T_REPMARK].len ) {
+ cp = TabStringCpy( cp, &tabs[T_REPMARK] );
+ *cp++ = ' ';
+ } else if ( tabs[T_ROADNAME].len ) {
+ cp = TabStringCpy( cp, &tabs[T_ROADNAME] );
+ *cp++ = ' ';
+ } else {
+ strcpy( cp, _("Undecorated ") );
+ cp += strlen( cp );
+ }
+ if ( tabs[T_NUMBER].len ) {
+ cp = TabStringCpy( cp, &tabs[T_NUMBER] );
+ *cp++ = ' ';
+ }
+ *cp = '\0';
}
@@ -2894,16 +3088,19 @@ static BOOL_T CarDlgLoadPartList( carPartParent_p parentP )
ConstructPartDesc( tabs );
lastPart.paramFileIndex = partP->paramFileIndex;
if ( message[0] && IsParamValid(partP->paramFileIndex) &&
- ( lastPart.title == NULL || Cmp_part( &lastPart, partP ) != 0 ) ) {
- listInx = wListAddValue( (wList_p)carDlgPLs[I_CD_PARTNO_LIST].control, message, NULL, partP );
+ ( lastPart.title == NULL || Cmp_part( &lastPart, partP ) != 0 ) ) {
+ listInx = wListAddValue( (wList_p)carDlgPLs[I_CD_PARTNO_LIST].control, message,
+ NULL, partP );
if ( carDlgPartnoInx<0 &&
- (carDlgPartnoStr[0]?TabStringCmp( carDlgPartnoStr, &tabs[T_PART] ) == 0:TRUE) ) {
+ (carDlgPartnoStr[0]?TabStringCmp( carDlgPartnoStr,
+ &tabs[T_PART] ) == 0:TRUE) ) {
carDlgPartnoInx = listInx;
found = TRUE;
selPartP = partP;
}
- if ( selPartP == NULL )
+ if ( selPartP == NULL ) {
selPartP = partP;
+ }
lastPart = *partP;
}
}
@@ -2911,8 +3108,9 @@ static BOOL_T CarDlgLoadPartList( carPartParent_p parentP )
carDlgPartnoStr[0] = '\0';
carDlgDescStr[0] = '\0';
} else {
- if ( carDlgPartnoInx<0 )
+ if ( carDlgPartnoInx<0 ) {
carDlgPartnoInx = 0;
+ }
TabStringExtract( selPartP->title, 7, tabs );
TabStringCpy( carDlgPartnoStr, &tabs[T_PART] );
TabStringCpy( carDlgDescStr, &tabs[T_DESC] );
@@ -2923,7 +3121,7 @@ static BOOL_T CarDlgLoadPartList( carPartParent_p parentP )
static void CarDlgLoadPart(
- carPart_p partP )
+ carPart_p partP )
{
tabString_t tabs[7];
roadnameMap_p roadnameMapP;
@@ -2951,9 +3149,9 @@ static void CarDlgLoadPart(
static BOOL_T CarDlgLoadLists(
- BOOL_T isItem,
- tabString_t * tabs,
- SCALEINX_T scale )
+ BOOL_T isItem,
+ tabString_t * tabs,
+ SCALEINX_T scale )
{
BOOL_T loadCustomUnknown = isItem;
DIST_T ratio;
@@ -2961,25 +3159,28 @@ static BOOL_T CarDlgLoadLists(
static carProto_t protoTmp;
static char protoTmpDesc[STR_SIZE];
- if ( tabs ) TabStringCpy( carDlgManufStr, &tabs[T_MANUF] );
+ if ( tabs ) { TabStringCpy( carDlgManufStr, &tabs[T_MANUF] ); }
if ( strcasecmp( carDlgManufStr, "unknown" ) == 0 ||
- strcasecmp( carDlgManufStr, "custom" ) == 0 ) {
+ strcasecmp( carDlgManufStr, "custom" ) == 0 ) {
loadCustomUnknown = TRUE;
/*isItem = FALSE;*/
}
if ( (!CarDlgLoadManufList( !isItem, loadCustomUnknown, scale )) && tabs ) {
TabStringCpy( carDlgManufStr, &tabs[T_MANUF] );
- carDlgManufInx = wListAddValue( (wList_p)carDlgPLs[I_CD_MANUF_LIST].control, carDlgManufStr, NULL, NULL );
+ carDlgManufInx = wListAddValue( (wList_p)carDlgPLs[I_CD_MANUF_LIST].control,
+ carDlgManufStr, NULL, NULL );
isItem = FALSE;
}
if ( isItem ) {
- parentP = (carPartParent_p)wListGetItemContext( (wList_p)carDlgPLs[I_CD_MANUF_LIST].control, carDlgManufInx );
+ parentP = (carPartParent_p)wListGetItemContext( (wList_p)
+ carDlgPLs[I_CD_MANUF_LIST].control, carDlgManufInx );
if ( parentP ) {
- if ( tabs ) TabStringCpy( carDlgProtoStr, &tabs[T_PROTO] );
+ if ( tabs ) { TabStringCpy( carDlgProtoStr, &tabs[T_PROTO] ); }
if ( CarDlgLoadProtoList( carDlgManufStr, scale, TRUE ) || !tabs ) {
- parentP = (carPartParent_p)wListGetItemContext( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control, carDlgProtoInx );
+ parentP = (carPartParent_p)wListGetItemContext( (wList_p)
+ carDlgPLs[I_CD_PROTOTYPE_LIST].control, carDlgProtoInx );
if ( parentP ) {
- if ( tabs ) TabStringCpy( carDlgPartnoStr, &tabs[T_PART] );
+ if ( tabs ) { TabStringCpy( carDlgPartnoStr, &tabs[T_PART] ); }
if ( CarDlgLoadPartList( parentP ) || ( (!tabs) && carDlgPartnoInx>=0 ) ) {
return TRUE;
}
@@ -2987,7 +3188,7 @@ static BOOL_T CarDlgLoadLists(
}
}
}
- if ( tabs ) TabStringCpy( carDlgProtoStr, &tabs[T_PROTO] );
+ if ( tabs ) { TabStringCpy( carDlgProtoStr, &tabs[T_PROTO] ); }
if ( !CarDlgLoadProtoList( NULL, 0, TRUE ) && tabs ) {
/* create dummy proto */
ratio = GetScaleRatio( scale );
@@ -3002,12 +3203,16 @@ static BOOL_T CarDlgLoadLists(
protoTmp.dim.coupledLength = carDlgDim.coupledLength*ratio;
protoTmp.dim.truckCenter = carDlgDim.truckCenter*ratio;
protoTmp.dim.truckCenterOffset = carDlgDim.truckCenterOffset*ratio;
- CarProtoDlgCreateDummyOutline( &carProtoSegCnt, &carProtoSegPtr, (BOOL_T)carDlgIsLoco, protoTmp.dim.carLength, protoTmp.dim.carWidth, drawColorBlue );
+ CarProtoDlgCreateDummyOutline( &carProtoSegCnt, &carProtoSegPtr,
+ (BOOL_T)carDlgIsLoco, protoTmp.dim.carLength, protoTmp.dim.carWidth,
+ drawColorBlue );
protoTmp.segCnt = carProtoSegCnt;
protoTmp.segPtr = carProtoSegPtr;
- GetSegBounds( zero, 0.0, carProtoSegCnt, carProtoSegPtr, &protoTmp.orig, &protoTmp.size );
+ GetSegBounds( zero, 0.0, carProtoSegCnt, carProtoSegPtr, &protoTmp.orig,
+ &protoTmp.size );
TabStringCpy( carDlgProtoStr, &tabs[T_PROTO] );
- carDlgProtoInx = wListAddValue( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control, carDlgProtoStr, NULL, &protoTmp );/*??*/
+ carDlgProtoInx = wListAddValue( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control,
+ carDlgProtoStr, NULL, &protoTmp );/*??*/
}
carDlgPartnoInx = -1;
if ( tabs ) {
@@ -3034,30 +3239,45 @@ static void CarDlgShowControls( void )
ParamControlShow( &carDlgPG, I_CD_PURDAT, S_ITEM && carDlgDispMode==0 );
ParamControlShow( &carDlgPG, I_CD_SRVDAT, S_ITEM && carDlgDispMode==0 );
ParamControlShow( &carDlgPG, I_CD_NOTES, S_ITEM && carDlgDispMode==0 );
- ParamControlShow( &carDlgPG, I_CD_MLTNUM, S_ITEM && carDlgUpdateItemPtr==NULL && carDlgDispMode==0 );
- ParamControlShow( &carDlgPG, I_CD_QTY, S_ITEM && carDlgUpdateItemPtr==NULL && carDlgDispMode==0 );
-
- ParamControlShow( &carDlgPG, I_CD_ROADNAME_LIST, S_PART || ( S_ITEM && carDlgDispMode==1 ) );
- ParamControlShow( &carDlgPG, I_CD_REPMARK, S_PART || ( S_ITEM && carDlgDispMode==1 ) );
- ParamControlShow( &carDlgPG, I_CD_NUMBER, S_PART || ( S_ITEM && carDlgDispMode==1 ) );
- ParamControlShow( &carDlgPG, I_CD_BODYCOLOR, S_PART || ( S_ITEM && carDlgDispMode==1 ) );
- ParamControlShow( &carDlgPG, I_CD_CARLENGTH, !( S_ITEM && carDlgDispMode==0 ) );
- ParamControlShow( &carDlgPG, I_CD_CARWIDTH, !( S_ITEM && carDlgDispMode==0 ) );
- ParamControlShow( &carDlgPG, I_CD_TRKCENTER, !( S_ITEM && carDlgDispMode==0 ) );
- ParamControlShow( &carDlgPG, I_CD_TRKOFFSET, !( S_ITEM && carDlgDispMode==0 ) );
+ ParamControlShow( &carDlgPG, I_CD_MLTNUM, S_ITEM
+ && carDlgUpdateItemPtr==NULL && carDlgDispMode==0 );
+ ParamControlShow( &carDlgPG, I_CD_QTY, S_ITEM && carDlgUpdateItemPtr==NULL
+ && carDlgDispMode==0 );
+
+ ParamControlShow( &carDlgPG, I_CD_ROADNAME_LIST, S_PART || ( S_ITEM
+ && carDlgDispMode==1 ) );
+ ParamControlShow( &carDlgPG, I_CD_REPMARK, S_PART || ( S_ITEM
+ && carDlgDispMode==1 ) );
+ ParamControlShow( &carDlgPG, I_CD_NUMBER, S_PART || ( S_ITEM
+ && carDlgDispMode==1 ) );
+ ParamControlShow( &carDlgPG, I_CD_BODYCOLOR, S_PART || ( S_ITEM
+ && carDlgDispMode==1 ) );
+ ParamControlShow( &carDlgPG, I_CD_CARLENGTH, !( S_ITEM
+ && carDlgDispMode==0 ) );
+ ParamControlShow( &carDlgPG, I_CD_CARWIDTH, !( S_ITEM
+ && carDlgDispMode==0 ) );
+ ParamControlShow( &carDlgPG, I_CD_TRKCENTER, !( S_ITEM
+ && carDlgDispMode==0 ) );
+ ParamControlShow( &carDlgPG, I_CD_TRKOFFSET, !( S_ITEM
+ && carDlgDispMode==0 ) );
ParamControlShow( &carDlgPG, I_CD_CANVAS, !( S_ITEM && carDlgDispMode==0 ) );
- ParamControlShow( &carDlgPG, I_CD_CPLRLEN, S_PART || ( S_ITEM && carDlgDispMode==1 ) );
- ParamControlShow( &carDlgPG, I_CD_CPLDLEN, S_PART || ( S_ITEM && carDlgDispMode==1 ) );
- ParamControlShow( &carDlgPG, I_CD_CPLRMNT, S_PART || ( S_ITEM && carDlgDispMode==1 ) );
+ ParamControlShow( &carDlgPG, I_CD_CPLRLEN, S_PART || ( S_ITEM
+ && carDlgDispMode==1 ) );
+ ParamControlShow( &carDlgPG, I_CD_CPLDLEN, S_PART || ( S_ITEM
+ && carDlgDispMode==1 ) );
+ ParamControlShow( &carDlgPG, I_CD_CPLRMNT, S_PART || ( S_ITEM
+ && carDlgDispMode==1 ) );
ParamControlShow( &carDlgPG, I_CD_DISPMODE, S_ITEM );
ParamControlShow( &carDlgPG, I_CD_TYPE_LIST, S_PROTO );
ParamControlShow( &carDlgPG, I_CD_FLIP, S_PROTO );
- ParamControlShow( &carDlgPG, I_CD_DESC_STR, S_PART || (currState==S_ItemEnter) );
+ ParamControlShow( &carDlgPG, I_CD_DESC_STR, S_PART
+ || (currState==S_ItemEnter) );
ParamControlShow( &carDlgPG, I_CD_IMPORT, S_PROTO );
ParamControlShow( &carDlgPG, I_CD_RESET, S_PROTO );
- ParamControlShow( &carDlgPG, I_CD_PARTNO_STR, S_PART || (currState==S_ItemEnter) );
+ ParamControlShow( &carDlgPG, I_CD_PARTNO_STR, S_PART
+ || (currState==S_ItemEnter) );
ParamControlShow( &carDlgPG, I_CD_PARTNO_LIST, (currState==S_ItemSel) );
ParamControlShow( &carDlgPG, I_CD_ISLOCO, S_PROTO );
ParamControlShow( &carDlgPG, I_CD_PROTOKIND_LIST, !S_PROTO );
@@ -3066,7 +3286,8 @@ static void CarDlgShowControls( void )
ParamControlShow( &carDlgPG, I_CD_MANUF_LIST, !S_PROTO );
/*ParamControlActive( &carDlgPG, I_CD_PROTOTYPE_STR, S_PROTO && carDlgUpdateProtoPtr==NULL );*/
- ParamControlActive( &carDlgPG, I_CD_ITEMINDEX, S_ITEM && carDlgUpdateItemPtr==NULL );
+ ParamControlActive( &carDlgPG, I_CD_ITEMINDEX, S_ITEM
+ && carDlgUpdateItemPtr==NULL );
ParamControlActive( &carDlgPG, I_CD_MLTNUM, S_ITEM && carDlgQuantity>1 );
ParamControlActive( &carDlgPG, I_CD_IMPORT, selectedTrackCount > 0 );
@@ -3086,7 +3307,8 @@ static void CarDlgShowControls( void )
sprintf( message, _("New %s Scale Car Part"), GetScaleName( carDlgScaleInx ) );
wButtonSetLabel( carDlgPG.okB, _("Add") );
} else {
- sprintf( message, _("Update %s Scale Car Part"), GetScaleName( carDlgScaleInx ) );
+ sprintf( message, _("Update %s Scale Car Part"),
+ GetScaleName( carDlgScaleInx ) );
wButtonSetLabel( carDlgPG.okB, _("Update") );
}
wWinSetTitle( carDlgPG.win, message );
@@ -3109,7 +3331,7 @@ static void CarDlgShowControls( void )
static void CarDlgDoActions(
- carDlgAction_e * actions )
+ carDlgAction_e * actions )
{
carPart_p partP;
carPartParent_p parentP;
@@ -3136,12 +3358,13 @@ static void CarDlgDoActions(
memset( reload, 0, sizeof reload );
while ( 1 ) {
-LOG( log_carDlgState, 2, ( "Action = %s\n", carDlgAction_s[*actions] ) )
+ LOG( log_carDlgState, 2, ( "Action = %s\n", carDlgAction_s[*actions] ) )
switch ( *actions++ ) {
case A_Return:
for ( inx=0; inx<COUNT( carDlgPLs ); inx++ )
- if ( reload[inx] )
+ if ( reload[inx] ) {
ParamLoadControl( &carDlgPG, inx );
+ }
return;
case A_SError:
currState = S_Error;
@@ -3167,8 +3390,9 @@ LOG( log_carDlgState, 2, ( "Action = %s\n", carDlgAction_s[*actions] ) )
break;
case A_IsCustom:
offset = (int)*actions++;
- if ( currState != S_ItemEnter )
+ if ( currState != S_ItemEnter ) {
actions += offset;
+ }
break;
case A_IsNewPart:
offset = (int)*actions++;
@@ -3190,8 +3414,9 @@ LOG( log_carDlgState, 2, ( "Action = %s\n", carDlgAction_s[*actions] ) )
}
break;
case A_LoadDataFromPartList:
- partP = (carPart_p)wListGetItemContext( (wList_p)carDlgPLs[I_CD_PARTNO_LIST].control, carDlgPartnoInx );
- if ( partP != NULL ){
+ partP = (carPart_p)wListGetItemContext( (wList_p)
+ carDlgPLs[I_CD_PARTNO_LIST].control, carDlgPartnoInx );
+ if ( partP != NULL ) {
CarDlgLoadPart(partP);
RELOAD_PARTDATA;
RELOAD_PARTDATA;
@@ -3213,7 +3438,8 @@ LOG( log_carDlgState, 2, ( "Action = %s\n", carDlgAction_s[*actions] ) )
reload[I_CD_MANUF_LIST] = TRUE;
break;
case A_LoadProtoListForManuf:
- parentP = (carPartParent_p)wListGetItemContext( (wList_p)carDlgPLs[I_CD_MANUF_LIST].control, carDlgManufInx );
+ parentP = (carPartParent_p)wListGetItemContext( (wList_p)
+ carDlgPLs[I_CD_MANUF_LIST].control, carDlgManufInx );
CarDlgLoadProtoList( parentP->manuf, parentP->scale, TRUE );
reload[I_CD_PROTOKIND_LIST] = TRUE;
reload[I_CD_PROTOTYPE_LIST] = TRUE;
@@ -3224,18 +3450,21 @@ LOG( log_carDlgState, 2, ( "Action = %s\n", carDlgAction_s[*actions] ) )
reload[I_CD_PROTOTYPE_LIST] = TRUE;
break;
case A_LoadPartnoList:
- parentP = (carPartParent_p)wListGetItemContext( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control, carDlgProtoInx );
+ parentP = (carPartParent_p)wListGetItemContext( (wList_p)
+ carDlgPLs[I_CD_PROTOTYPE_LIST].control, carDlgProtoInx );
CarDlgLoadPartList( parentP );
reload[I_CD_PARTNO_LIST] = TRUE;
break;
case A_LoadLists:
- if ( CarDlgLoadLists( TRUE, NULL, carDlgScaleInx ) )
+ if ( CarDlgLoadLists( TRUE, NULL, carDlgScaleInx ) ) {
currState = S_ItemSel;
- else
+ } else {
currState = S_ItemEnter;
+ }
break;
case A_LoadDimsFromProtoList:
- protoP = (carProto_p)wListGetItemContext( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control, carDlgProtoInx );
+ protoP = (carProto_p)wListGetItemContext( (wList_p)
+ carDlgPLs[I_CD_PROTOTYPE_LIST].control, carDlgProtoInx );
if ( protoP ) {
CarDlgLoadDimsFromProto( protoP );
carDlgTypeInx = CarProtoFindTypeCode( protoP->type );
@@ -3281,9 +3510,11 @@ LOG( log_carDlgState, 2, ( "Action = %s\n", carDlgAction_s[*actions] ) )
reload[I_CD_NUMBER] = TRUE;
break;
case A_LoadProtoStrFromList:
- wListGetValues( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control, carDlgProtoStr, sizeof carDlgProtoStr, NULL, NULL );
+ wListGetValues( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control, carDlgProtoStr,
+ sizeof carDlgProtoStr, NULL, NULL );
#ifdef LATER
- protoP = (carProto_p)wListGetItemContext( (wList_p)carDlgPLs[I_CD_PROTOTYPE_LIST].control, carDlgProtoInx );
+ protoP = (carProto_p)wListGetItemContext( (wList_p)
+ carDlgPLs[I_CD_PROTOTYPE_LIST].control, carDlgProtoInx );
if ( protoP ) {
carDlgTypeInx = CarProtoFindTypeCode( protoP->type );
carDlgIsLoco = (protoP->options&CAR_DESC_IS_LOCO)!=0;
@@ -3303,17 +3534,18 @@ LOG( log_carDlgState, 2, ( "Action = %s\n", carDlgAction_s[*actions] ) )
ParamControlShow( &carDlgPG, I_CD_PARTNO_STR, TRUE );
break;
case A_PushDims:
- if ( carDlgStkPtr >= CARDLG_STK_SIZE )
- AbortProg( "carDlgNewDesc: CARDLG_STK_SIZE" );
+ CHECK( carDlgStkPtr < CARDLG_STK_SIZE );
carDlgStk[carDlgStkPtr].dim = carDlgDim;
carDlgStk[carDlgStkPtr].couplerLength = carDlgCouplerLength;
carDlgStk[carDlgStkPtr].state = currState;
carDlgStk[carDlgStkPtr].changed = carDlgChanged;
carDlgStk[carDlgStkPtr].typeInx = carDlgTypeInx;
- if ( currState == S_ItemSel && carDlgPartnoInx >= 0 )
- carDlgStk[carDlgStkPtr].partP = (carPart_p)wListGetItemContext( (wList_p)carDlgPLs[I_CD_PARTNO_LIST].control, carDlgPartnoInx );
- else
+ if ( currState == S_ItemSel && carDlgPartnoInx >= 0 ) {
+ carDlgStk[carDlgStkPtr].partP = (carPart_p)wListGetItemContext( (
+ wList_p)carDlgPLs[I_CD_PARTNO_LIST].control, carDlgPartnoInx );
+ } else {
carDlgStk[carDlgStkPtr].partP = NULL;
+ }
carDlgStkPtr++;
break;
case A_PopDims:
@@ -3348,9 +3580,11 @@ LOG( log_carDlgState, 2, ( "Action = %s\n", carDlgAction_s[*actions] ) )
carDlgTypeInx = CarProtoFindTypeCode( carDlgUpdateItemPtr->type );
carDlgIsLoco = (carDlgUpdateItemPtr->type&1)!=0;
carDlgCouplerLength = (carDlgDim.coupledLength-carDlgDim.carLength)/2.0;
- sprintf( message, "%s-%s", carDlgPLs[I_CD_CPLRLEN].nameStr, GetScaleName(carDlgScaleInx) );
+ sprintf( message, "%s-%s", carDlgPLs[I_CD_CPLRLEN].nameStr,
+ GetScaleName(carDlgScaleInx) );
wPrefSetFloat( carDlgPG.nameStr, message, carDlgCouplerLength );
- carDlgCouplerMount = (carDlgUpdateItemPtr->options&CAR_DESC_COUPLER_MODE_BODY)!=0;
+ carDlgCouplerMount = (carDlgUpdateItemPtr->options&CAR_DESC_COUPLER_MODE_BODY)!=
+ 0;
carDlgIsLoco = (carDlgUpdateItemPtr->options&CAR_DESC_IS_LOCO)!=0;
carDlgPurchPrice = carDlgUpdateItemPtr->data.purchPrice;
sprintf( carDlgPurchPriceStr, "%0.2f", carDlgPurchPrice );
@@ -3359,21 +3593,24 @@ LOG( log_carDlgState, 2, ( "Action = %s\n", carDlgAction_s[*actions] ) )
carDlgCondition = carDlgUpdateItemPtr->data.condition;
carDlgConditionInx = MapCondition( carDlgUpdateItemPtr->data.condition );
carDlgPurchDate = carDlgUpdateItemPtr->data.purchDate;
- if ( carDlgPurchDate )
+ if ( carDlgPurchDate ) {
sprintf( carDlgPurchDateStr, "%ld", carDlgPurchDate );
- else
+ } else {
carDlgPurchDateStr[0] = '\0';
+ }
carDlgServiceDate = carDlgUpdateItemPtr->data.serviceDate;
- if ( carDlgServiceDate )
+ if ( carDlgServiceDate ) {
sprintf( carDlgServiceDateStr, "%ld", carDlgServiceDate );
- else
+ } else {
carDlgServiceDateStr[0] = '\0';
+ }
wTextClear( (wText_p)carDlgPLs[I_CD_NOTES].control );
if ( carDlgUpdateItemPtr->data.notes ) {
- strncpy( message, carDlgUpdateItemPtr->data.notes, sizeof message );
- message[sizeof message - 1] = '\0';
- for ( cp=message; *cp; cp++ )
- if ( *cp == '\n' ) *cp = ' ';
+ strncpy( message, carDlgUpdateItemPtr->data.notes, sizeof message );
+ message[sizeof message - 1] = '\0';
+ for ( cp=message; *cp; cp++ ) {
+ if ( *cp == '\n' ) { *cp = ' '; }
+ }
wTextAppend( (wText_p)carDlgPLs[I_CD_NOTES].control, message );
}
LoadRoadnameList( &tabs[T_ROADNAME], &tabs[T_REPMARK] );
@@ -3381,10 +3618,11 @@ LOG( log_carDlgState, 2, ( "Action = %s\n", carDlgAction_s[*actions] ) )
carDlgRoadnameInx = lookupListIndex+1;
memset( reload, 1, sizeof reload );
- if ( CarDlgLoadLists( TRUE, tabs, carDlgScaleInx ) )
+ if ( CarDlgLoadLists( TRUE, tabs, carDlgScaleInx ) ) {
currState = S_ItemSel;
- else
+ } else {
currState = S_ItemEnter;
+ }
break;
case A_LoadDataFromUpdatePart:
carDlgScaleInx = carDlgUpdatePartPtr->parent->scale;
@@ -3410,7 +3648,7 @@ LOG( log_carDlgState, 2, ( "Action = %s\n", carDlgAction_s[*actions] ) )
carDlgDim.truckCenterOffset = 0;
carDlgIsLoco = (typeListMap[carDlgTypeInx].value&1);
} else {
- strcpy( carDlgProtoStr , carDlgUpdateProtoPtr->desc );
+ strcpy( carDlgProtoStr, carDlgUpdateProtoPtr->desc );
carDlgDim = carDlgUpdateProtoPtr->dim;
carDlgCouplerLength = (carDlgDim.coupledLength-carDlgDim.carLength)/2.0;
carDlgIsLoco = (carDlgUpdateProtoPtr->options&CAR_DESC_IS_LOCO)!=0;
@@ -3422,12 +3660,14 @@ LOG( log_carDlgState, 2, ( "Action = %s\n", carDlgAction_s[*actions] ) )
RELOAD_DIMS;
break;
case A_RecallCouplerLength:
- sprintf( message, "%s-%s", carDlgPLs[I_CD_CPLRLEN].nameStr, GetScaleName(carDlgScaleInx) );
+ sprintf( message, "%s-%s", carDlgPLs[I_CD_CPLRLEN].nameStr,
+ GetScaleName(carDlgScaleInx) );
carDlgCouplerLength = 16.0/GetScaleRatio(carDlgScaleInx);
- wPrefGetFloat( carDlgPG.nameStr, message, &carDlgCouplerLength, carDlgCouplerLength );
+ wPrefGetFloat( carDlgPG.nameStr, message, &carDlgCouplerLength,
+ carDlgCouplerLength );
break;
default:
- AbortProg( "carDlgDoActions: bad action" );
+ CHECKMSG( FALSE, ( "carDlgDoActions: bad action %d", (int)(actions[-1]) ) );
break;
}
}
@@ -3435,16 +3675,17 @@ LOG( log_carDlgState, 2, ( "Action = %s\n", carDlgAction_s[*actions] ) )
static void CarDlgDoStateActions(
- carDlgAction_e * actions )
+ carDlgAction_e * actions )
{
CarDlgDoActions( actions );
-LOG( log_carDlgState, 1, ( " ==> S_%s\n", carDlgState_s[currState] ) )
+ LOG( log_carDlgState, 1, ( " ==> S_%s\n", carDlgState_s[currState] ) )
}
static void CarDlgStateMachine(
- carDlgTransistion_e transistion )
+ carDlgTransistion_e transistion )
{
-LOG( log_carDlgState, 1, ( "S_%s[T_%s]\n", carDlgState_s[currState], carDlgTransistion_s[transistion] ) )
+ LOG( log_carDlgState, 1, ( "S_%s[T_%s]\n", carDlgState_s[currState],
+ carDlgTransistion_s[transistion] ) )
CarDlgDoStateActions( stateMachine[currState][transistion] );
}
@@ -3473,9 +3714,9 @@ static BOOL_T CheckCarDlgItemIndex( long * index )
void CarDlgError(
- wBool_t ok,
- paramData_p p,
- char * msg )
+ wBool_t ok,
+ paramData_p p,
+ char * msg )
{
p->bInvalid = !ok;
ParamHilite( p->group->win, p->control, !ok );
@@ -3485,9 +3726,9 @@ void CarDlgError(
static void CarDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
BOOL_T redraw = FALSE;
roadnameMap_p roadnameMapP;
@@ -3510,49 +3751,60 @@ static void CarDlgUpdate(
ratio = (S_PROTO?1.0:GetScaleRatio(carDlgScaleInx));
-LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
+ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
switch ( inx ) {
case -1:
- if ( carDlgDim.truckCenter > 0 && carDlgDim.carLength > carDlgDim.truckCenter ) {
- carDlgTruckOffsetL = (carDlgDim.carLength - carDlgDim.truckCenter)/2 - carDlgDim.truckCenterOffset;
- carDlgTruckOffsetR = (carDlgDim.carLength - carDlgDim.truckCenter)/2 + carDlgDim.truckCenterOffset;
- }
- else {
+ if ( carDlgDim.truckCenter > 0
+ && carDlgDim.carLength > carDlgDim.truckCenter ) {
+ carDlgTruckOffsetL = (carDlgDim.carLength - carDlgDim.truckCenter)/2 -
+ carDlgDim.truckCenterOffset;
+ carDlgTruckOffsetR = (carDlgDim.carLength - carDlgDim.truckCenter)/2 +
+ carDlgDim.truckCenterOffset;
+ } else {
carDlgTruckOffsetL = 0;
carDlgTruckOffsetR = 0;
}
- carDlgCarLengthClock = carDlgCoupledLengthClock = carDlgTruckCenterClock = carDlgCouplerLengthClock = carDlgClock = 0;
+ carDlgCarLengthClock = carDlgCoupledLengthClock = carDlgTruckCenterClock =
+ carDlgCouplerLengthClock = carDlgClock = 0;
redraw = TRUE;
break;
case I_CD_MANUF_LIST:
carDlgChanged++;
- wListGetValues( (wList_p)pg->paramPtr[inx].control, carDlgManufStr, sizeof carDlgManufStr, NULL, NULL );
+ wListGetValues( (wList_p)pg->paramPtr[inx].control, carDlgManufStr,
+ sizeof carDlgManufStr, NULL, NULL );
if ( carDlgManufInx < 0 ||
- wListGetItemContext( (wList_p)pg->paramPtr[inx].control, carDlgManufInx ) == NULL )
+ wListGetItemContext( (wList_p)pg->paramPtr[inx].control,
+ carDlgManufInx ) == NULL ) {
CarDlgStateMachine( T_ItemEnter );
+ }
#ifdef LATER
else if ( strcasecmp( carDlgManufStr, "unknown" ) == 0 ||
- strcasecmp( carDlgManufStr, "custom" ) == 0 )
+ strcasecmp( carDlgManufStr, "custom" ) == 0 ) {
CarDlgStateMachine( T_ItemEnter );
+ }
#endif
- else
+ else {
CarDlgStateMachine( T_ItemSel );
+ }
/*ParamControlShow( &carDlgPG, I_CD_MANUF_LIST, TRUE );*/
break;
case I_CD_PROTOKIND_LIST:
carDlgChanged++;
- carDlgTypeInx = (int)VP2L(wListGetItemContext( (wList_p)pg->paramPtr[inx].control, carDlgKindInx ));
+ carDlgTypeInx = (int)VP2L(wListGetItemContext( (wList_p)
+ pg->paramPtr[inx].control, carDlgKindInx ));
if ( S_PART || (currState==S_ItemEnter) ) {
CarDlgLoadProtoList( NULL, 0, FALSE );
} else {
parentP = NULL;
- if ( carDlgProtoInx >= 0 )
- parentP = (carPartParent_p)wListGetItemContext( (wList_p)pg->paramPtr[I_CD_PROTOTYPE_LIST].control, carDlgProtoInx );
+ if ( carDlgProtoInx >= 0 ) {
+ parentP = (carPartParent_p)wListGetItemContext( (wList_p)
+ pg->paramPtr[I_CD_PROTOTYPE_LIST].control, carDlgProtoInx );
+ }
CarDlgLoadProtoList( carDlgManufStr, (parentP?parentP->scale:0), FALSE );
}
CarDlgStateMachine( T_ProtoSel );
@@ -3560,13 +3812,15 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
case I_CD_PROTOTYPE_LIST:
carDlgChanged++;
- wListGetValues( (wList_p)pg->paramPtr[inx].control, carDlgProtoStr, sizeof carDlgProtoStr, NULL, NULL );
+ wListGetValues( (wList_p)pg->paramPtr[inx].control, carDlgProtoStr,
+ sizeof carDlgProtoStr, NULL, NULL );
CarDlgStateMachine( T_ProtoSel );
break;
case I_CD_PARTNO_LIST:
carDlgChanged++;
- wListGetValues( (wList_p)pg->paramPtr[inx].control, carDlgPartnoStr, sizeof carDlgPartnoStr, NULL, NULL );
+ wListGetValues( (wList_p)pg->paramPtr[inx].control, carDlgPartnoStr,
+ sizeof carDlgPartnoStr, NULL, NULL );
if ( carDlgPartnoInx >= 0 ) {
CarDlgStateMachine( T_PartnoSel );
} else {
@@ -3582,10 +3836,12 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
ParamLoadControl( &carDlgPG, I_CD_DISPMODE );
break;
}
- for ( inx=B; inx<C; inx++ )
+ for ( inx=B; inx<C; inx++ ) {
ParamControlShow( &carDlgPG, inx, carDlgDispMode==1 );
- for ( inx=C; inx<D; inx++ )
+ }
+ for ( inx=C; inx<D; inx++ ) {
ParamControlShow( &carDlgPG, inx, carDlgDispMode==0 );
+ }
if ( carDlgDispMode == 0 && carDlgUpdateItemPtr != NULL ) {
ParamControlShow( &carDlgPG, I_CD_QTY, FALSE );
ParamControlShow( &carDlgPG, I_CD_MLTNUM, FALSE );
@@ -3597,13 +3853,15 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
carDlgChanged++;
roadnameMapP = NULL;
if ( *(long*)valueP == 0 ) {
- roadnameMapP = NULL;
- carDlgRoadnameStr[0] = '\0';
+ roadnameMapP = NULL;
+ carDlgRoadnameStr[0] = '\0';
} else if ( *(long*)valueP > 0 ) {
- roadnameMapP = (roadnameMap_p)wListGetItemContext( (wList_p)pg->paramPtr[I_CD_ROADNAME_LIST].control, (wIndex_t)*(long*)valueP );
- strcpy( carDlgRoadnameStr, roadnameMapP->roadname );
+ roadnameMapP = (roadnameMap_p)wListGetItemContext( (wList_p)
+ pg->paramPtr[I_CD_ROADNAME_LIST].control, (wIndex_t)*(long*)valueP );
+ strcpy( carDlgRoadnameStr, roadnameMapP->roadname );
} else {
- wListGetValues( (wList_p)pg->paramPtr[I_CD_ROADNAME_LIST].control, carDlgRoadnameStr, sizeof carDlgRoadnameStr, NULL, NULL );
+ wListGetValues( (wList_p)pg->paramPtr[I_CD_ROADNAME_LIST].control,
+ carDlgRoadnameStr, sizeof carDlgRoadnameStr, NULL, NULL );
cmp_key.name = carDlgRoadnameStr;
cmp_key.len = (int)strlen(carDlgRoadnameStr);
roadnameMapP = LookupListElem( &roadnameMap_da, &cmp_key, Cmp_roadnameMap, 0 );
@@ -3619,23 +3877,26 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
case I_CD_CARLENGTH:
carDlgChanged++;
if ( carDlgDim.carLength == 0.0 ) {
- carDlgCarLengthClock = 0;
+ carDlgCarLengthClock = 0;
} else if ( carDlgDim.carLength < 100/ratio ) {
return;
- } else if ( carDlgCouplerLength != 0 && ( carDlgDim.coupledLength == 0 || carDlgCouplerLengthClock >= carDlgCoupledLengthClock ) ) {
+ } else if ( carDlgCouplerLength != 0 && ( carDlgDim.coupledLength == 0
+ || carDlgCouplerLengthClock >= carDlgCoupledLengthClock ) ) {
len = carDlgDim.carLength+carDlgCouplerLength*2.0;
if ( len > 0 ) {
carDlgDim.coupledLength = len;
ParamLoadControl( &carDlgPG, I_CD_CPLDLEN );
}
carDlgCarLengthClock = ++carDlgClock;
- } else if ( carDlgDim.coupledLength != 0 && ( carDlgCouplerLength == 0 || carDlgCoupledLengthClock > carDlgCouplerLengthClock ) ) {
+ } else if ( carDlgDim.coupledLength != 0 && ( carDlgCouplerLength == 0
+ || carDlgCoupledLengthClock > carDlgCouplerLengthClock ) ) {
len = (carDlgDim.coupledLength-carDlgDim.carLength)/2.0;
if ( len > 0 ) {
carDlgCouplerLength = len;
ParamLoadControl( &carDlgPG, I_CD_CPLRLEN );
if ( !S_PROTO ) {
- sprintf( message, "%s-%s", carDlgPLs[I_CD_CPLRLEN].nameStr, GetScaleName(carDlgScaleInx) );
+ sprintf( message, "%s-%s", carDlgPLs[I_CD_CPLRLEN].nameStr,
+ GetScaleName(carDlgScaleInx) );
wPrefSetFloat( carDlgPG.nameStr, message, carDlgCouplerLength );
}
}
@@ -3651,18 +3912,21 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
carDlgCoupledLengthClock = 0;
} else if ( carDlgDim.coupledLength < 100/ratio ) {
return;
- } else if ( carDlgDim.carLength != 0 && ( carDlgCouplerLength == 0 || carDlgCarLengthClock > carDlgCouplerLengthClock ) ) {
+ } else if ( carDlgDim.carLength != 0 && ( carDlgCouplerLength == 0
+ || carDlgCarLengthClock > carDlgCouplerLengthClock ) ) {
len = (carDlgDim.coupledLength-carDlgDim.carLength)/2.0;
if ( len > 0 ) {
carDlgCouplerLength = len;
ParamLoadControl( &carDlgPG, I_CD_CPLRLEN );
if ( !S_PROTO ) {
- sprintf( message, "%s-%s", carDlgPLs[I_CD_CPLRLEN].nameStr, GetScaleName(carDlgScaleInx) );
+ sprintf( message, "%s-%s", carDlgPLs[I_CD_CPLRLEN].nameStr,
+ GetScaleName(carDlgScaleInx) );
wPrefSetFloat( carDlgPG.nameStr, message, carDlgCouplerLength );
}
}
carDlgCoupledLengthClock = ++carDlgClock;
- } else if ( carDlgCouplerLength != 0 && ( carDlgDim.carLength == 0 || carDlgCouplerLengthClock >= carDlgCarLengthClock ) ) {
+ } else if ( carDlgCouplerLength != 0 && ( carDlgDim.carLength == 0
+ || carDlgCouplerLengthClock >= carDlgCarLengthClock ) ) {
len = carDlgDim.coupledLength-carDlgCouplerLength*2.0;
if ( len > 0 ) {
carDlgDim.carLength = len;
@@ -3682,14 +3946,16 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
break;
} else if ( carDlgCouplerLength < 1/ratio ) {
return;
- } else if ( carDlgDim.carLength != 0 && ( carDlgDim.coupledLength == 0 || carDlgCarLengthClock >= carDlgCoupledLengthClock ) ) {
+ } else if ( carDlgDim.carLength != 0 && ( carDlgDim.coupledLength == 0
+ || carDlgCarLengthClock >= carDlgCoupledLengthClock ) ) {
len = carDlgDim.carLength+carDlgCouplerLength*2.0;
if ( len > 0 ) {
carDlgDim.coupledLength = len;
ParamLoadControl( &carDlgPG, I_CD_CPLDLEN );
}
carDlgCouplerLengthClock = ++carDlgClock;
- } else if ( carDlgDim.coupledLength != 0 && ( carDlgDim.carLength == 0 || carDlgCoupledLengthClock > carDlgCarLengthClock ) ) {
+ } else if ( carDlgDim.coupledLength != 0 && ( carDlgDim.carLength == 0
+ || carDlgCoupledLengthClock > carDlgCarLengthClock ) ) {
len = carDlgDim.coupledLength-carDlgCouplerLength*2.0;
if ( len > 0 ) {
carDlgDim.carLength = len;
@@ -3699,15 +3965,16 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
carDlgCouplerLengthClock = ++carDlgClock;
}
if ( !S_PROTO ) {
- sprintf( message, "%s-%s", carDlgPLs[I_CD_CPLRLEN].nameStr, GetScaleName(carDlgScaleInx) );
- wPrefSetFloat( carDlgPG.nameStr, message, carDlgCouplerLength );
+ sprintf( message, "%s-%s", carDlgPLs[I_CD_CPLRLEN].nameStr,
+ GetScaleName(carDlgScaleInx) );
+ wPrefSetFloat( carDlgPG.nameStr, message, carDlgCouplerLength );
}
redraw = TRUE;
break;
case I_CD_CARWIDTH:
carDlgChanged++;
- if ( carDlgDim.carLength < 30/ratio ) return;
+ if ( carDlgDim.carLength < 30/ratio ) { return; }
redraw = TRUE;
break;
@@ -3727,16 +3994,19 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
if ( carDlgDim.truckCenterOffset == 0 ) {
carDlgTruckOffsetL = carDlgDim.truckCenter/2;
carDlgTruckOffsetR = carDlgTruckOffsetL;
- } else if (carDlgDim.carLength - carDlgDim.truckCenter > 2*fabs(carDlgDim.truckCenterOffset)) {
+ } else if (carDlgDim.carLength - carDlgDim.truckCenter > 2*fabs(
+ carDlgDim.truckCenterOffset)) {
carDlgTruckOffsetL = carDlgDim.truckCenter/2 - carDlgDim.truckCenterOffset;
carDlgTruckOffsetR = carDlgDim.truckCenter/2 + carDlgDim.truckCenterOffset;
} else {
carDlgTruckOffsetL = 0;
carDlgTruckOffsetR = 0;
}
- if ( 2*carDlgDim.truckCenterOffset > carDlgDim.carLength - carDlgDim.truckCenter) {
+ if ( 2*carDlgDim.truckCenterOffset > carDlgDim.carLength -
+ carDlgDim.truckCenter) {
ok = FALSE;
- CarDlgError( ok, &carDlgPLs[I_CD_TRKOFFSET], _("Truck Center Offset plus Truck Centers must be less than Car Length") );
+ CarDlgError( ok, &carDlgPLs[I_CD_TRKOFFSET],
+ _("Truck Center Offset plus Truck Centers must be less than Car Length") );
}
redraw = TRUE;
break;
@@ -3746,11 +4016,13 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
if ( carDlgDim.truckCenter == 0 ) {
carDlgTruckOffsetL = 0;
carDlgTruckOffsetR = 0;
- } else if ( carDlgDim.truckCenter < 100/ratio /*&& carDlgDim.carLength == 0.0*/ ) {
+ } else if ( carDlgDim.truckCenter <
+ 100/ratio /*&& carDlgDim.carLength == 0.0*/ ) {
carDlgTruckOffsetL = 0;
carDlgTruckOffsetR = 0;
return;
- } else if ( carDlgDim.carLength - carDlgDim.truckCenter > 2*fabs(carDlgDim.truckCenterOffset) ) {
+ } else if ( carDlgDim.carLength - carDlgDim.truckCenter > 2*fabs(
+ carDlgDim.truckCenterOffset) ) {
carDlgTruckOffsetL = carDlgDim.truckCenter/2-carDlgDim.truckCenterOffset;
carDlgTruckOffsetR = carDlgDim.truckCenter/2+carDlgDim.truckCenterOffset;
} else {
@@ -3767,7 +4039,8 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
case I_CD_PURPRC:
case I_CD_CURPRC:
carDlgChanged++;
- *(FLOAT_T*)(pg->paramPtr[inx].context) = strtod( (char*)pg->paramPtr[inx].valueP, &cp );
+ *(FLOAT_T*)(pg->paramPtr[inx].context) = strtod( (char*)
+ pg->paramPtr[inx].valueP, &cp );
if ( cp==NULL || *cp!='\0' ) {
*(FLOAT_T*)(pg->paramPtr[inx].context) = -1;
ok = FALSE;
@@ -3779,17 +4052,18 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
case I_CD_COND:
carDlgChanged++;
carDlgCondition =
- (carDlgConditionInx==0)?0:
- (carDlgConditionInx==1)?100:
- (carDlgConditionInx==2)?80:
- (carDlgConditionInx==3)?60:
- (carDlgConditionInx==4)?40:20;
+ (carDlgConditionInx==0)?0:
+ (carDlgConditionInx==1)?100:
+ (carDlgConditionInx==2)?80:
+ (carDlgConditionInx==3)?60:
+ (carDlgConditionInx==4)?40:20;
break;
case I_CD_PURDAT:
case I_CD_SRVDAT:
carDlgChanged++;
- for ( cp = (char*)pg->paramPtr[inx].valueP; *cp && isspace(*(unsigned char*)cp); cp++ );
+ for ( cp = (char*)pg->paramPtr[inx].valueP; *cp
+ && isspace(*(unsigned char*)cp); cp++ );
if ( *cp ) {
valL = strtol( cp, &cq, 10 );
if ( cq==NULL || *cq !='\0' ) {
@@ -3824,10 +4098,11 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
valL = 0;
}
CarDlgError( ok, &pg->paramPtr[inx], cp );
- if (inx == I_CD_PURDAT)
+ if (inx == I_CD_PURDAT) {
carDlgPurchDate = valL;
- else
+ } else {
carDlgServiceDate = valL;
+ }
break;
case I_CD_TYPE_LIST:
@@ -3841,12 +4116,12 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
carDlgChanged++;
WriteSelectedTracksToTempSegs();
carProtoSegCnt = tempSegs_da.cnt;
- carProtoSegPtr = (trkSeg_t*)tempSegs_da.ptr;
+ carProtoSegPtr = &tempSegs(0);
CloneFilledDraw( carProtoSegCnt, carProtoSegPtr, TRUE );
GetSegBounds( zero, 0.0, carProtoSegCnt, carProtoSegPtr, &orig, &size );
if ( size.x <= 0.0 ||
- size.y <= 0.0 ||
- size.x < size.y ) {
+ size.y <= 0.0 ||
+ size.x < size.y ) {
NoticeMessage( MSG_CARPROTO_BADSEGS, _("Ok"), NULL );
return;
}
@@ -3855,7 +4130,8 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
MoveSegs( carProtoSegCnt, carProtoSegPtr, orig );
size2.x = floor(size.x*curScaleRatio+0.5);
size2.y = floor(size.y*curScaleRatio+0.5);
- RescaleSegs( carProtoSegCnt, carProtoSegPtr, size2.x/size.x, size2.y/size.y, curScaleRatio );
+ RescaleSegs( carProtoSegCnt, carProtoSegPtr, size2.x/size.x, size2.y/size.y,
+ curScaleRatio );
carDlgDim.carLength = size2.x;
carDlgDim.carWidth = size2.y;
carDlgDim.coupledLength = carDlgDim.carLength + 32;
@@ -3893,7 +4169,8 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
if ( checkTruckCenter && carDlgDim.carLength > 0 ) {
if ( carDlgTruckOffsetL > 0 || carDlgTruckOffsetR > 0 ) {
- carDlgDim.truckCenter = carDlgTruckOffsetL + carDlgTruckOffsetR;
+ carDlgDim.truckCenter = carDlgDim.carLength - ( carDlgTruckOffsetL +
+ carDlgTruckOffsetR );
carDlgDim.truckCenterOffset = (carDlgTruckOffsetR - carDlgTruckOffsetL)/2;
} else {
carDlgDim.truckCenter = carDlgDim.carLength * 0.75;
@@ -3903,11 +4180,12 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
ParamLoadControl( &carDlgPG, I_CD_TRKOFFSET );
}
- if ( S_PART && carDlgManufStr[0] == '\0' )
+ if ( S_PART && carDlgManufStr[0] == '\0' ) {
ParamLoadMessage( &carDlgPG, I_CD_MSG, _("Select or Enter a Manufacturer") );
- else if ( S_ITEM && carDlgUpdateItemPtr==NULL &&
- ( valL = carDlgItemIndex , !CheckCarDlgItemIndex(&carDlgItemIndex) ) ) {
- sprintf( message, _("Item Index %ld duplicated an existing item: updated to new value"), valL );
+ } else if ( S_ITEM && carDlgUpdateItemPtr==NULL &&
+ ( valL = carDlgItemIndex, !CheckCarDlgItemIndex(&carDlgItemIndex) ) ) {
+ sprintf( message,
+ _("Item Index %ld duplicated an existing item: updated to new value"), valL );
ParamLoadControl( &carDlgPG, I_CD_ITEMINDEX );
ParamLoadMessage( &carDlgPG, I_CD_MSG, message );
ok = TRUE;
@@ -3916,8 +4194,9 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
ok = TRUE;
}
- if ( redraw )
+ if ( redraw ) {
CarDlgRedraw( carDlgD.d, NULL, 0, 0 );
+ }
ParamDialogOkActive( pg, ok );
}
@@ -3948,10 +4227,11 @@ static void CarDlgNewProto( void )
}
carDlgUpdateProtoPtr = NULL;
carDlgNewProtoPtr = NULL;
- if ( S_ITEM )
+ if ( S_ITEM ) {
CarDlgDoStateActions( item2protoActions );
- else
+ } else {
CarDlgDoStateActions( part2protoActions );
+ }
carDlgChanged = 0;
}
@@ -3962,8 +4242,9 @@ static void CarDlgClose( wWin_p win )
if ( carDlgChanged ) {
if ( !inPlayback ) {
- if ( NoticeMessage( MSG_CARDESC_CHANGED, _("Yes"), _("No") ) <= 0 )
+ if ( NoticeMessage( MSG_CARDESC_CHANGED, _("Yes"), _("No") ) <= 0 ) {
return;
+ }
} else {
PlaybackMessage( "Car Desc Changed\n" );
}
@@ -3974,12 +4255,13 @@ static void CarDlgClose( wWin_p win )
currState = carDlgStk[carDlgStkPtr].state;
carDlgChanged = carDlgStk[carDlgStkPtr].changed;
if ( oldState == S_ProtoSel )
- if ( S_PART )
+ if ( S_PART ) {
CarDlgDoStateActions( proto2partActions );
- else
+ } else {
CarDlgDoStateActions( proto2itemActions );
- else
- CarDlgDoStateActions( part2itemActions );
+ } else {
+ CarDlgDoStateActions( part2itemActions );
+ }
} else {
wTextClear( (wText_p)carDlgPLs[I_CD_NOTES].control );
wHide( carDlgPG.win );
@@ -3996,27 +4278,27 @@ static void CarDlgOk( void * unused )
char * cp;
long count;
tabString_t tabs[7];
- char title[STR_LONG_SIZE];
+ char title[STR_LONG_SIZE*2];
carItem_p itemP=NULL;
carPart_p partP=NULL;
carProto_p protoP;
BOOL_T reloadRoadnameList = FALSE;
-LOG( log_carDlgState, 3, ( "CarDlgOk()\n" ) )
+ LOG( log_carDlgState, 3, ( "CarDlgOk()\n" ) )
ParamUpdate(&carDlgPG);
/*ParamUpdate( &carDlgPG );*/
if ( carDlgDim.carLength <= 0.0 ||
- carDlgDim.carWidth <= 0.0 ||
- carDlgDim.truckCenter <= 0.0 ||
- carDlgDim.truckCenterOffset < 0.0 ||
- carDlgDim.coupledLength <= 0.0 ) {
+ carDlgDim.carWidth <= 0.0 ||
+ carDlgDim.truckCenter <= 0.0 ||
+ carDlgDim.truckCenterOffset < 0.0 ||
+ carDlgDim.coupledLength <= 0.0 ) {
NoticeMessage( MSG_CARDESC_VALUE_ZERO, _("Ok"), NULL );
return;
}
if ( carDlgDim.carLength <= carDlgDim.carWidth ||
- carDlgDim.truckCenter >= carDlgDim.carLength ) {
+ carDlgDim.truckCenter >= carDlgDim.carLength ) {
NoticeMessage( MSG_CARDESC_BAD_DIM_VALUE, _("Ok"), NULL );
return;
}
@@ -4025,35 +4307,44 @@ LOG( log_carDlgState, 3, ( "CarDlgOk()\n" ) )
return;
}
- if ( S_ITEM && carDlgUpdateItemPtr==NULL && !CheckCarDlgItemIndex(&carDlgItemIndex) ) {
+ if ( S_ITEM && carDlgUpdateItemPtr==NULL
+ && !CheckCarDlgItemIndex(&carDlgItemIndex) ) {
NoticeMessage( MSG_CARITEM_BAD_INDEX, _("Ok"), NULL );
ParamLoadControl( &carDlgPG, I_CD_ITEMINDEX );
return;
}
- if ( S_ITEM && (carDlgPurchDate<0 || carDlgServiceDate<0 || carDlgPurchPrice <0 || carDlgCurrPrice<0)) return;
+ if ( S_ITEM && (carDlgPurchDate<0 || carDlgServiceDate<0 || carDlgPurchPrice <0
+ || carDlgCurrPrice<0)) { return; }
- if ( S_PROTO && carDlgProtoStr[0] == '\0' ) return;
+ if ( S_PROTO && carDlgProtoStr[0] == '\0' ) { return; }
- if ( S_PART && (carDlgManufStr[0] == '\0' || carDlgPartnoStr[0] == '\0')) return;
+ if ( S_PART && (carDlgManufStr[0] == '\0' || carDlgPartnoStr[0] == '\0')) { return; }
- if ( S_ITEM && carDlgItemIndex <= 0 ) return;
+ if ( S_ITEM && carDlgItemIndex <= 0 ) { return; }
- if ( (!S_PROTO) && carDlgCouplerMount != 0 )
+ if ( (!S_PROTO) && carDlgCouplerMount != 0 ) {
options |= CAR_DESC_COUPLER_MODE_BODY;
- if ( carDlgIsLoco == 1 )
+ }
+ if ( carDlgIsLoco == 1 ) {
options |= CAR_DESC_IS_LOCO;
+ }
if ( S_ITEM ) {
len = wTextGetSize( (wText_p)carDlgPLs[I_CD_NOTES].control );
- sprintf( title, "%s\t%s\t%s\t%s\t%s\t%s\t%s", carDlgManufStr, carDlgProtoStr, carDlgDescStr, carDlgPartnoStr, carDlgRoadnameStr, carDlgRepmarkStr, carDlgNumberStr );
+ sprintf( title, "%s\t%s\t%s\t%s\t%s\t%s\t%s", carDlgManufStr, carDlgProtoStr,
+ carDlgDescStr, carDlgPartnoStr, carDlgRoadnameStr, carDlgRepmarkStr,
+ carDlgNumberStr );
partP = NULL;
if ( ( carDlgManufInx < 0 || carDlgPartnoInx < 0 ) && carDlgPartnoStr[0] ) {
- partP = CarPartFind( carDlgManufStr, (int)strlen(carDlgManufStr), carDlgPartnoStr, (int)strlen(carDlgPartnoStr), carDlgScaleInx );
+ partP = CarPartFind( carDlgManufStr, (int)strlen(carDlgManufStr),
+ carDlgPartnoStr, (int)strlen(carDlgPartnoStr), carDlgScaleInx );
if ( partP != NULL &&
- NoticeMessage( MSG_CARPART_DUPNAME, _("Yes"), _("No") ) <= 0 )
+ NoticeMessage( MSG_CARPART_DUPNAME, _("Yes"), _("No") ) <= 0 ) {
return;
- partP = CarPartNew( NULL, PARAM_CUSTOM, carDlgScaleInx, title, options, typeListMap[carDlgTypeInx].value, &carDlgDim, carDlgBodyColor );
+ }
+ partP = CarPartNew( NULL, PARAM_CUSTOM, carDlgScaleInx, title, options,
+ typeListMap[carDlgTypeInx].value, &carDlgDim, carDlgBodyColor );
if ( partP != NULL ) {
if ( ( f = OpenCustom("a") ) ) {
SetCLocale();
@@ -4068,11 +4359,11 @@ LOG( log_carDlgState, 3, ( "CarDlgOk()\n" ) )
}
for ( count=0; count<carDlgQuantity; count++ ) {
itemP = CarItemNew( carDlgUpdateItemPtr,
- PARAM_CUSTOM, carDlgItemIndex,
- carDlgScaleInx, title, options, typeListMap[carDlgTypeInx].value,
- &carDlgDim, carDlgBodyColor,
- carDlgPurchPrice, carDlgCurrPrice, carDlgCondition,
- carDlgPurchDate, carDlgServiceDate );
+ PARAM_CUSTOM, carDlgItemIndex,
+ carDlgScaleInx, title, options, typeListMap[carDlgTypeInx].value,
+ &carDlgDim, carDlgBodyColor,
+ carDlgPurchPrice, carDlgCurrPrice, carDlgCondition,
+ carDlgPurchDate, carDlgServiceDate );
if ( carDlgUpdateItemPtr==NULL ) {
wPrefSetInteger( "misc", "last-car-item-index", carDlgItemIndex );
carDlgItemIndex++;
@@ -4082,15 +4373,18 @@ LOG( log_carDlgState, 3, ( "CarDlgOk()\n" ) )
number = strtol( carDlgNumberStr, &cp, 10 );
if ( cp && *cp == 0 && number > 0 ) {
sprintf( carDlgNumberStr, "%ld", number+1 );
- sprintf( title, "%s\t%s\t%s\t%s\t%s\t%s\t%s", carDlgManufStr, carDlgProtoStr, carDlgDescStr, carDlgPartnoStr, carDlgRoadnameStr, carDlgRepmarkStr, carDlgNumberStr );
+ sprintf( title, "%s\t%s\t%s\t%s\t%s\t%s\t%s", carDlgManufStr, carDlgProtoStr,
+ carDlgDescStr, carDlgPartnoStr, carDlgRoadnameStr, carDlgRepmarkStr,
+ carDlgNumberStr );
}
}
}
if ( len > 0 ) {
- if ( itemP->data.notes )
+ if ( itemP->data.notes ) {
itemP->data.notes = MyRealloc( itemP->data.notes, (len+2) * sizeof(wchar_t) );
- else
+ } else {
itemP->data.notes = MyMalloc( (len+2) * sizeof(wchar_t) );
+ }
// itemP->data.notes = (char*)MyMalloc( (len+2) * sizeof(wchar_t) );
wTextGetText( (wText_p)carDlgPLs[I_CD_NOTES].control, itemP->data.notes, len );
if ( itemP->data.notes[len-1] != '\n' ) {
@@ -4104,10 +4398,11 @@ LOG( log_carDlgState, 3, ( "CarDlgOk()\n" ) )
itemP->data.notes = NULL;
}
}
- if ( carDlgUpdateItemPtr==NULL )
+ if ( carDlgUpdateItemPtr==NULL ) {
CarInvListAdd( itemP );
- else
+ } else {
CarInvListUpdate( itemP );
+ }
SetFileChanged();
reloadRoadnameList = TRUE;
if ( carDlgUpdateItemPtr==NULL ) {
@@ -4120,9 +4415,9 @@ LOG( log_carDlgState, 3, ( "CarDlgOk()\n" ) )
strcpy( message, _("Updated Car") );
}
sprintf( message+strlen(message), "%s: %s %s %s %s %s %s",
- (partP?_(" and Part"):""),
- carDlgManufStr, carDlgPartnoStr, carDlgProtoStr, carDlgDescStr,
- (carDlgRepmarkStr[ 0 ]?carDlgRepmarkStr:carDlgRoadnameStr), carDlgNumberStr );
+ (partP?_(" and Part"):""),
+ carDlgManufStr, carDlgPartnoStr, carDlgProtoStr, carDlgDescStr,
+ (carDlgRepmarkStr[ 0 ]?carDlgRepmarkStr:carDlgRoadnameStr), carDlgNumberStr );
carDlgQuantity = 1;
ParamLoadControl( &carDlgPG, I_CD_QTY );
@@ -4132,14 +4427,19 @@ LOG( log_carDlgState, 3, ( "CarDlgOk()\n" ) )
carDlgRepmarkStr[0] = '\0';
}
if ( carDlgUpdatePartPtr==NULL ) {
- partP = CarPartFind( carDlgManufStr, (int)strlen(carDlgManufStr), carDlgPartnoStr, (int)strlen(carDlgPartnoStr), carDlgScaleInx );
+ partP = CarPartFind( carDlgManufStr, (int)strlen(carDlgManufStr),
+ carDlgPartnoStr, (int)strlen(carDlgPartnoStr), carDlgScaleInx );
if ( partP != NULL &&
- NoticeMessage( MSG_CARPART_DUPNAME, _("Yes"), _("No") ) <= 0 )
+ NoticeMessage( MSG_CARPART_DUPNAME, _("Yes"), _("No") ) <= 0 ) {
return;
+ }
}
- sprintf( message, "%s\t%s\t%s\t%s\t%s\t%s\t%s", carDlgManufStr, carDlgProtoStr, carDlgDescStr, carDlgPartnoStr, carDlgRoadnameStr, carDlgRepmarkStr, carDlgNumberStr );
- carDlgNewPartPtr = CarPartNew( carDlgUpdatePartPtr, PARAM_CUSTOM, carDlgScaleInx, message, options, typeListMap[carDlgTypeInx].value,
- &carDlgDim, carDlgBodyColor );
+ sprintf( message, "%s\t%s\t%s\t%s\t%s\t%s\t%s", carDlgManufStr, carDlgProtoStr,
+ carDlgDescStr, carDlgPartnoStr, carDlgRoadnameStr, carDlgRepmarkStr,
+ carDlgNumberStr );
+ carDlgNewPartPtr = CarPartNew( carDlgUpdatePartPtr, PARAM_CUSTOM,
+ carDlgScaleInx, message, options, typeListMap[carDlgTypeInx].value,
+ &carDlgDim, carDlgBodyColor );
if ( carDlgNewPartPtr != NULL && ( f = OpenCustom("a") ) ) {
SetCLocale();
CarPartWrite( f, carDlgNewPartPtr );
@@ -4147,16 +4447,22 @@ LOG( log_carDlgState, 3, ( "CarDlgOk()\n" ) )
SetUserLocale();
}
reloadRoadnameList = TRUE;
- sprintf( message, _("%s Part: %s %s %s %s %s %s"), carDlgUpdatePartPtr==NULL?_("Added new"):_("Updated"), carDlgManufStr, carDlgPartnoStr, carDlgProtoStr, carDlgDescStr, carDlgRepmarkStr[ 0 ]?carDlgRepmarkStr:carDlgRoadnameStr, carDlgNumberStr );
+ sprintf( message, _("%s Part: %s %s %s %s %s %s"),
+ carDlgUpdatePartPtr==NULL?_("Added new"):_("Updated"), carDlgManufStr,
+ carDlgPartnoStr, carDlgProtoStr, carDlgDescStr,
+ carDlgRepmarkStr[ 0 ]?carDlgRepmarkStr:carDlgRoadnameStr, carDlgNumberStr );
} else if ( S_PROTO ) {
if ( carDlgUpdateProtoPtr==NULL ) {
protoP = CarProtoFind( carDlgProtoStr );
if ( protoP != NULL &&
- NoticeMessage( MSG_CARPROTO_DUPNAME, _("Yes"), _("No") ) <= 0 )
+ NoticeMessage( MSG_CARPROTO_DUPNAME, _("Yes"), _("No") ) <= 0 ) {
return;
+ }
}
- carDlgNewProtoPtr = CarProtoNew( carDlgUpdateProtoPtr, PARAM_CUSTOM, carDlgProtoStr, options, typeListMap[carDlgTypeInx].value, &carDlgDim, carDlgSegs_da.cnt, &carDlgSegs(0) );
+ carDlgNewProtoPtr = CarProtoNew( carDlgUpdateProtoPtr, PARAM_CUSTOM,
+ carDlgProtoStr, options, typeListMap[carDlgTypeInx].value, &carDlgDim,
+ carDlgSegs_da.cnt, &carDlgSegs(0) );
if ( (f = OpenCustom("a") ) ) {
SetCLocale();
CarProtoWrite( f, carDlgNewProtoPtr );
@@ -4164,8 +4470,8 @@ LOG( log_carDlgState, 3, ( "CarDlgOk()\n" ) )
SetUserLocale();
}
sprintf( message, _("%s Prototype: %s%s."),
- carDlgUpdateProtoPtr==NULL?_("Added new"):_("Updated"), carDlgProtoStr,
- carDlgUpdateProtoPtr==NULL?_(". Enter new values or press Close"):"" );
+ carDlgUpdateProtoPtr==NULL?_("Added new"):_("Updated"), carDlgProtoStr,
+ carDlgUpdateProtoPtr==NULL?_(". Enter new values or press Close"):"" );
}
if ( reloadRoadnameList ) {
@@ -4187,10 +4493,11 @@ LOG( log_carDlgState, 3, ( "CarDlgOk()\n" ) )
if ( carDlgUpdateItemPtr==NULL ) {
if ( partP ) {
TabStringExtract( title, 7, tabs );
- if ( CarDlgLoadLists( TRUE, tabs, GetLayoutCurScale()) )
+ if ( CarDlgLoadLists( TRUE, tabs, GetLayoutCurScale()) ) {
currState = S_ItemSel;
- else
+ } else {
currState = S_ItemEnter;
+ }
ParamLoadControl( &carDlgPG, I_CD_MANUF_LIST );
ParamLoadControl( &carDlgPG, I_CD_PROTOKIND_LIST );
ParamLoadControl( &carDlgPG, I_CD_PROTOTYPE_LIST );
@@ -4208,10 +4515,11 @@ LOG( log_carDlgState, 3, ( "CarDlgOk()\n" ) )
} else if ( S_PART ) {
if ( carDlgUpdatePartPtr==NULL ) {
number = strtol( carDlgPartnoStr, &cp, 10 );
- if ( cp && *cp == 0 && number > 0 )
+ if ( cp && *cp == 0 && number > 0 ) {
sprintf( carDlgPartnoStr, "%ld", number+1 );
- else
+ } else {
carDlgPartnoStr[0] = '\0';
+ }
carDlgNumberStr[0] = '\0';
ParamLoadControl( &carDlgPG, I_CD_PARTNO_STR );
ParamLoadControl( &carDlgPG, I_CD_NUMBER );
@@ -4230,11 +4538,11 @@ LOG( log_carDlgState, 3, ( "CarDlgOk()\n" ) )
static void CarDlgLayout(
- paramData_t * pd,
- int inx,
- wWinPix_t currX,
- wWinPix_t *xx,
- wWinPix_t *yy )
+ paramData_t * pd,
+ int inx,
+ wWinPix_t currX,
+ wWinPix_t *xx,
+ wWinPix_t *yy )
{
static wWinPix_t col2pos = 0;
wWinPix_t y0, y1;
@@ -4252,8 +4560,9 @@ static void CarDlgLayout(
break;
case I_CD_CPLRLEN:
case I_CD_CARWIDTH:
- if ( col2pos == 0 )
+ if ( col2pos == 0 ) {
col2pos = wLabelWidth( _("Coupler Length") )+20;
+ }
*xx = wControlBeside(carDlgPLs[inx-1].control) + col2pos;
break;
case I_CD_DESC_STR:
@@ -4286,27 +4595,37 @@ static void DoCarPartDlg( carDlgAction_e *actions )
int inx;
if ( carDlgPG.win == NULL ) {
- ParamCreateDialog( &carDlgPG, MakeWindowTitle(_("New Car Part")), _("Add"), CarDlgOk, CarDlgClose, TRUE, CarDlgLayout, F_BLOCK|F_RESIZE|F_RECALLSIZE|PD_F_ALT_CANCELLABEL, CarDlgUpdate );
+ ParamCreateDialog( &carDlgPG, MakeWindowTitle(_("New Car Part")), _("Add"),
+ CarDlgOk, CarDlgClose, TRUE, CarDlgLayout,
+ F_BLOCK|F_RESIZE|F_RECALLSIZE|PD_F_ALT_CANCELLABEL, CarDlgUpdate );
- if ( carDlgDim.carWidth==0 )
+ if ( carDlgDim.carWidth==0 ) {
carDlgDim.carWidth = 12.0*10.0/curScaleRatio;
+ }
for ( pd=carDlgPG.paramPtr; pd<&carDlgPG.paramPtr[carDlgPG.paramCnt]; pd++ ) {
- if ( pd->type == PD_FLOAT && pd->valueP ) {
+ if ( pd->type == PD_FLOAT && pd->valueP ) {
sprintf( message, "%s-%s", pd->nameStr, curScaleName );
- wPrefGetFloat( carDlgPG.nameStr, message, (FLOAT_T*)pd->valueP, *(FLOAT_T*)pd->valueP );
+ wPrefGetFloat( carDlgPG.nameStr, message, (FLOAT_T*)pd->valueP,
+ *(FLOAT_T*)pd->valueP );
}
}
roadnameMapChanged = TRUE;
- for ( inx=0; inx<N_CONDLISTMAP; inx++ )
- wListAddValue( (wList_p)carDlgPLs[I_CD_COND].control, _(condListMap[inx].name), NULL, I2VP(condListMap[inx].value) );
+ for ( inx=0; inx<N_CONDLISTMAP; inx++ ) {
+ wListAddValue( (wList_p)carDlgPLs[I_CD_COND].control, _(condListMap[inx].name),
+ NULL, I2VP(condListMap[inx].value) );
+ }
- for ( inx=0; inx<N_TYPELISTMAP; inx++ )
- wListAddValue( (wList_p)carDlgPLs[I_CD_TYPE_LIST].control, _(typeListMap[inx].name), NULL, I2VP(typeListMap[inx].value) );
+ for ( inx=0; inx<N_TYPELISTMAP; inx++ ) {
+ wListAddValue( (wList_p)carDlgPLs[I_CD_TYPE_LIST].control,
+ _(typeListMap[inx].name), NULL, I2VP(typeListMap[inx].value) );
+ }
- for ( inx=0; inx<N_TYPELISTMAP; inx++ )
- wListAddValue( (wList_p)carDlgPLs[I_CD_PROTOKIND_LIST].control, _(typeListMap[inx].name), NULL, I2VP(typeListMap[inx].value) );
+ for ( inx=0; inx<N_TYPELISTMAP; inx++ ) {
+ wListAddValue( (wList_p)carDlgPLs[I_CD_PROTOKIND_LIST].control,
+ _(typeListMap[inx].name), NULL, I2VP(typeListMap[inx].value) );
+ }
wTextSetReadonly( (wText_p)carDlgPLs[I_CD_NOTES].control, FALSE );
}
@@ -4319,8 +4638,9 @@ static void DoCarPartDlg( carDlgAction_e *actions )
carDlgScaleInx = GetLayoutCurScale();
carDlgFlipToggle = FALSE;
carDlgChanged = 0;
- for ( paramData_p p=carDlgPLs; p < carDlgPLs + COUNT( carDlgPLs ); p++ )
+ for ( paramData_p p=carDlgPLs; p < carDlgPLs + COUNT( carDlgPLs ); p++ ) {
p->bInvalid = FALSE;
+ }
CarDlgDoStateActions( actions );
@@ -4360,24 +4680,27 @@ static wIndex_t carInvSort[] = { 0, 1, 2, 3 };
static void CarInvDlgAdd( void );
static void CarInvDlgEdit( void );
-static void CarInvDlgDelete( void );
+static void CarInvDlgDeleteShelve( void );
static void CarInvDlgImportCsv( void );
static void CarInvDlgExportCsv( void );
static void CarInvDlgSaveText( void );
static void CarInvListLoad( void );
static wWinPix_t carInvColumnWidths[] = {
- -40, 30, 100, -50, 50, 130, 120, 100,
- -50, -50, 60, 55, 55, 40, 200 };
+ -40, 30, 100, -50, 50, 130, 120, 100,
+ -50, -50, 60, 55, 55, 40, 200
+ };
static const char * carInvColumnTitles[] = {
N_("Index"), N_("Scale"), N_("Manufacturer"), N_("Part No"), N_("Type"),
N_("Description"), N_("Roadname"), N_("Rep Marks"), N_("Purc Price"),
N_("Curr Price"), N_("Condition"), N_("Purc Date"), N_("Srvc Date"),
- N_("Locat'n"), N_("Notes") };
+ N_("Locat'n"), N_("Notes")
+};
static char * sortOrders[] = {
N_("Index"), N_("Scale"), N_("Manufacturer"), N_("Part No"), N_("Type"),
N_("Description"), N_("Roadname"), N_("RepMarks"), N_("Purch Price"),
- N_("Curr Price"), N_("Condition"), N_("Purch Date"), N_("Service Date") };
+ N_("Curr Price"), N_("Condition"), N_("Purch Date"), N_("Service Date")
+};
#define S_INDEX (0)
#define S_SCALE (1)
#define S_MANUF (2)
@@ -4406,27 +4729,31 @@ static paramData_t carInvPLs[] = {
#define I_CI_ADD (S+2)
{ PD_BUTTON, CarInvDlgAdd, "add", 0, NULL, N_("Add"), 0, 0 },
#define I_CI_DELETE (S+3)
- { PD_BUTTON, CarInvDlgDelete, "delete", PDO_DLGWIDE, NULL, N_("Delete") },
+ { PD_BUTTON, CarInvDlgDeleteShelve, "delete", PDO_DLGWIDE, NULL, N_("Delete") },
#define I_CI_IMPORT_CSV (S+4)
{ PD_BUTTON, CarInvDlgImportCsv, "import", PDO_DLGWIDE, NULL, N_("Import") },
#define I_CI_EXPORT_CSV (S+5)
{ PD_BUTTON, CarInvDlgExportCsv, "export", 0, NULL, N_("Export") },
#define I_CI_PRINT (S+6)
- { PD_BUTTON, CarInvDlgSaveText, "savetext", 0, NULL, N_("List") } };
+ { PD_BUTTON, CarInvDlgSaveText, "savetext", 0, NULL, N_("List") }
+};
static paramGroup_t carInvPG = { "carinv", 0, carInvPLs, COUNT( carInvPLs ) };
static carItem_p CarInvDlgFindCurrentItem( void )
{
- wIndex_t selcnt = wListGetSelectedCount( (wList_p)carInvPLs[I_CI_LIST].control );
+ wIndex_t selcnt = wListGetSelectedCount( (wList_p)
+ carInvPLs[I_CI_LIST].control );
wIndex_t inx, cnt;
- if ( selcnt != 1 ) return NULL;
+ if ( selcnt != 1 ) { return NULL; }
cnt = wListGetCount( (wList_p)carInvPLs[I_CI_LIST].control );
for ( inx=0; inx<cnt; inx++ )
- if ( wListGetItemSelected( (wList_p)carInvPLs[I_CI_LIST].control, inx ) )
+ if ( wListGetItemSelected( (wList_p)carInvPLs[I_CI_LIST].control, inx ) ) {
break;
- if ( inx>=cnt ) return NULL;
- return (carItem_p)wListGetItemContext( (wList_p)carInvPLs[I_CI_LIST].control, inx );
+ }
+ if ( inx>=cnt ) { return NULL; }
+ return (carItem_p)wListGetItemContext( (wList_p)carInvPLs[I_CI_LIST].control,
+ inx );
}
@@ -4435,11 +4762,12 @@ static void CarInvDlgFind( void * unused )
carItem_p item = CarInvDlgFindCurrentItem();
coOrd pos;
ANGLE_T angle;
- if ( item == NULL || item->car == NULL || IsTrackDeleted(item->car) ) return;
+ if ( item == NULL || item->car == NULL || IsTrackDeleted(item->car) ) { return; }
CarGetPos( item->car, &pos, &angle );
CarSetVisible( item->car );
panCenter = pos;
- LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
PanHere( I2VP(0) ); // CarInvDlgFind
}
@@ -4458,55 +4786,96 @@ static void CarInvDlgAdd( void )
static void CarInvDlgEdit( void )
{
carDlgUpdateItemPtr = CarInvDlgFindCurrentItem();
- if ( carDlgUpdateItemPtr == NULL )
+ if ( carDlgUpdateItemPtr == NULL ) {
return;
+ }
DoCarPartDlg( itemUpdActions );
}
+/**
+ * Move a CarItem from the layout to the Shelf
+ *
+ * \item car item to be moved
+ */
+EXPORT void CarItemShelve(
+ carItem_p item )
+{
+ if ( item->car == NULL || IsTrackDeleted( item->car ) ) { return; }
+ DeleteTrack( item->car, FALSE );
+ if (CarItemIsLoco(item)) {
+ LocoListChangeEntry(item->car, NULL);
+ }
+ CarItemUpdate(item);
+ HotBarCancel();
+ InfoSubstituteControls(NULL, NULL);
+}
+
-static void CarInvDlgDelete( void )
+static void CarInvDlgDeleteShelve( void )
{
carItem_p item;
wIndex_t inx, inx1, cnt, selcnt;
+ wBool_t bShowMsg = FALSE;
+ wBool_t bNeedReload = FALSE;
selcnt = wListGetSelectedCount( (wList_p)carInvPLs[I_CI_LIST].control );
- if ( selcnt == 0 )
- return;
- if ( NoticeMessage( MSG_CARINV_DELETE_CONFIRM, _("Yes"), _("No"), selcnt ) <= 0 )
+ if ( selcnt == 0 ) {
return;
+ }
cnt = wListGetCount( (wList_p)carInvPLs[I_CI_LIST].control );
for ( inx=0; inx<cnt; inx++ ) {
- if ( !wListGetItemSelected( (wList_p)carInvPLs[I_CI_LIST].control, inx ) )
+ if ( !wListGetItemSelected( (wList_p)carInvPLs[I_CI_LIST].control, inx ) ) {
continue;
- item = (carItem_p)wListGetItemContext( (wList_p)carInvPLs[I_CI_LIST].control, inx );
- if ( item == NULL )
- continue;
- if ( item->car && !IsTrackDeleted(item->car) )
+ }
+ item = (carItem_p)wListGetItemContext( (wList_p)carInvPLs[I_CI_LIST].control,
+ inx );
+ if ( item == NULL ) {
continue;
- wListDelete( (wList_p)carInvPLs[I_CI_LIST].control, inx );
- if ( item->title ) MyFree( item->title );
- if ( item->data.number ) MyFree( item->data.number );
- MyFree( item );
- for ( inx1=inx; inx1<carItemInfo_da.cnt-1; inx1++ )
- carItemInfo(inx1) = carItemInfo(inx1+1);
- carItemInfo_da.cnt -= 1;
- inx--;
- cnt--;
+ }
+ if ( item->car && !IsTrackDeleted(item->car) ) {
+ // Shelve car from Layout
+ CarItemShelve( item );
+ bNeedReload = TRUE;
+ } else {
+ // Delete car from Inventory
+ if ( ! bShowMsg ) {
+ if ( NoticeMessage( MSG_CARINV_DELETE_CONFIRM,
+ _("Yes"), _("No"), selcnt ) <= 0 ) {
+ return;
+ }
+ bShowMsg = TRUE;
+ }
+ wListDelete( (wList_p)carInvPLs[I_CI_LIST].control, inx );
+ if ( item->title ) { MyFree( item->title ); }
+ if ( item->data.number ) { MyFree( item->data.number ); }
+ MyFree( item );
+ for ( inx1=inx; inx1<carItemInfo_da.cnt-1; inx1++ ) {
+ carItemInfo(inx1) = carItemInfo(inx1+1);
+ }
+ carItemInfo_da.cnt -= 1;
+ inx--;
+ cnt--;
+ }
+ }
+ if ( bNeedReload ) {
+ CarInvListLoad();
+ MainRedraw(); // Shelve Car from layout
}
SetFileChanged();
carInvInx = -1;
ParamLoadControl( &carInvPG, I_CI_LIST );
ParamControlActive( &carInvPG, I_CI_EDIT, FALSE );
ParamControlActive( &carInvPG, I_CI_DELETE, FALSE );
+ wButtonSetLabel( (wButton_p)(carInvPLs[I_CI_DELETE].control), "" );
ParamControlActive( &carInvPG, I_CI_EXPORT_CSV, carItemInfo_da.cnt > 0 );
ParamDialogOkActive( &carInvPG, FALSE );
}
static int CarInvSaveText(
- int files,
- char ** fileName,
- void * data )
+ int files,
+ char ** fileName,
+ void * data )
{
FILE * f;
carItem_p item;
@@ -4516,13 +4885,14 @@ static int CarInvSaveText(
char * cp0, * cp1;
int len;
- assert( fileName != NULL );
- assert( files == 1 );
+ CHECK( fileName != NULL );
+ CHECK( files == 1 );
SetCurrentPath( CARSPATHKEY, fileName[0] );
f = fopen( fileName[0], "w" );
if ( f == NULL ) {
- NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Car Inventory"), fileName[0], strerror(errno) );
+ NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Car Inventory"),
+ fileName[0], strerror(errno) );
return FALSE;
}
@@ -4532,35 +4902,40 @@ static int CarInvSaveText(
TabStringExtract( item->title, 7, tabs );
sprintf( message, "%ld", item->index );
width = (int)strlen( message );
- if ( width > widths[0] ) widths[0] = width;
- width = (int)strlen(GetScaleName(item->scaleInx)) + 1 + tabs[T_MANUF].len + 1 + tabs[T_PART].len;
- if ( width > widths[1] ) widths[1] = width;
- if ( tabs[T_PROTO].len > widths[2] ) widths[2] = tabs[T_PROTO].len;
+ if ( width > widths[0] ) { widths[0] = width; }
+ width = (int)strlen(GetScaleName(item->scaleInx)) + 1 + tabs[T_MANUF].len + 1 +
+ tabs[T_PART].len;
+ if ( width > widths[1] ) { widths[1] = width; }
+ if ( tabs[T_PROTO].len > widths[2] ) { widths[2] = tabs[T_PROTO].len; }
width = tabs[T_REPMARK].len + tabs[T_NUMBER].len;
- if ( tabs[T_REPMARK].len > 0 && tabs[T_NUMBER].len > 0 )
+ if ( tabs[T_REPMARK].len > 0 && tabs[T_NUMBER].len > 0 ) {
width += 1;
- if ( width > widths[3] ) widths[3] = width;
- if ( item->data.purchDate > 0 ) widths[4] = 8;
+ }
+ if ( width > widths[3] ) { widths[3] = width; }
+ if ( item->data.purchDate > 0 ) { widths[4] = 8; }
if ( item->data.purchPrice > 0 ) {
sprintf( message, "%0.2f", item->data.purchPrice );
width = (int)strlen(message);
- if ( width > widths[5] ) widths[5] = width;
+ if ( width > widths[5] ) { widths[5] = width; }
}
- if ( item->data.condition != 0 )
+ if ( item->data.condition != 0 ) {
widths[6] = 5;
+ }
if ( item->data.currPrice > 0 ) {
sprintf( message, "%0.2f", item->data.currPrice );
width = (int)strlen(message);
- if ( width > widths[7] ) widths[7] = width;
+ if ( width > widths[7] ) { widths[7] = width; }
}
- if ( item->data.serviceDate > 0 ) widths[8] = 8;
+ if ( item->data.serviceDate > 0 ) { widths[8] = 8; }
}
- fprintf( f, "%-*.*s %-*.*s %-*.*s %-*.*s", widths[0], widths[0], "#", widths[1], widths[1], "Part", widths[2], widths[2], "Description", widths[3], widths[3], "Rep Mark" );
- if ( widths[4] ) fprintf( f, " %-*.*s", widths[4], widths[4], "PurDate" );
- if ( widths[5] ) fprintf( f, " %-*.*s", widths[5], widths[5], "PurPrice" );
- if ( widths[6] ) fprintf( f, " %-*.*s", widths[6], widths[6], "Cond" );
- if ( widths[7] ) fprintf( f, " %-*.*s", widths[7], widths[7], "CurPrice" );
- if ( widths[8] ) fprintf( f, " %-*.*s", widths[8], widths[8], "SrvDate" );
+ fprintf( f, "%-*.*s %-*.*s %-*.*s %-*.*s", widths[0], widths[0], "#", widths[1],
+ widths[1], "Part", widths[2], widths[2], "Description", widths[3], widths[3],
+ "Rep Mark" );
+ if ( widths[4] ) { fprintf( f, " %-*.*s", widths[4], widths[4], "PurDate" ); }
+ if ( widths[5] ) { fprintf( f, " %-*.*s", widths[5], widths[5], "PurPrice" ); }
+ if ( widths[6] ) { fprintf( f, " %-*.*s", widths[6], widths[6], "Cond" ); }
+ if ( widths[7] ) { fprintf( f, " %-*.*s", widths[7], widths[7], "CurPrice" ); }
+ if ( widths[8] ) { fprintf( f, " %-*.*s", widths[8], widths[8], "SrvDate" ); }
fprintf( f, "\n" );
for ( inx=0; inx<carItemInfo_da.cnt; inx++ ) {
@@ -4569,11 +4944,14 @@ static int CarInvSaveText(
sprintf( message, "%ld", item->index );
fprintf( f, "%.*s", widths[0], message );
width = tabs[T_MANUF].len + 1 + tabs[T_PART].len;
- sprintf( message, "%s %.*s %.*s", GetScaleName(item->scaleInx), tabs[T_MANUF].len, tabs[T_MANUF].ptr, tabs[T_PART].len, tabs[T_PART].ptr );
+ sprintf( message, "%s %.*s %.*s", GetScaleName(item->scaleInx),
+ tabs[T_MANUF].len, tabs[T_MANUF].ptr, tabs[T_PART].len, tabs[T_PART].ptr );
fprintf( f, " %-*s", widths[1], message );
fprintf( f, " %-*.*s", widths[2], tabs[T_PROTO].len, tabs[T_PROTO].ptr );
width = tabs[T_REPMARK].len + tabs[T_NUMBER].len;
- sprintf( message, "%.*s%s%.*s", tabs[T_REPMARK].len, tabs[T_REPMARK].ptr, (tabs[T_REPMARK].len > 0 && tabs[T_NUMBER].len > 0)?" ":"", tabs[T_NUMBER].len, tabs[T_NUMBER].ptr );
+ sprintf( message, "%.*s%s%.*s", tabs[T_REPMARK].len, tabs[T_REPMARK].ptr,
+ (tabs[T_REPMARK].len > 0
+ && tabs[T_NUMBER].len > 0)?" ":"", tabs[T_NUMBER].len, tabs[T_NUMBER].ptr );
fprintf( f, " %-*s", widths[3], message );
if ( widths[4] > 0 ) {
if ( item->data.purchDate > 0 ) {
@@ -4593,7 +4971,8 @@ static int CarInvSaveText(
}
if ( widths[6] > 0 ) {
if ( item->data.condition != 0 ) {
- fprintf( f, " %-*.*s", widths[6], widths[6], condListMap[MapCondition(item->data.condition)].name );
+ fprintf( f, " %-*.*s", widths[6], widths[6],
+ condListMap[MapCondition(item->data.condition)].name );
} else {
fprintf( f, " %*s", widths[6], " " );
}
@@ -4623,12 +5002,14 @@ static int CarInvSaveText(
len = (int)(cp1-cp0);
} else {
len = (int)strlen( cp0 );
- if ( len == 0 )
+ if ( len == 0 ) {
break;
+ }
}
fprintf( f, "%*.*s %*.*s\n", widths[0], widths[0], " ", len, len, cp0 );
- if ( cp1 == NULL )
+ if ( cp1 == NULL ) {
break;
+ }
cp0 = cp1+1;
}
}
@@ -4643,16 +5024,17 @@ static void CarInvDlgSaveText( void )
{
if ( carInvSaveText_fs == NULL )
carInvSaveText_fs = wFilSelCreate( mainW, FS_SAVE, 0, _("List Cars"),
- "Text (*.txt)|*.txt", CarInvSaveText, NULL );
+ "Text (*.txt)|*.txt", CarInvSaveText, NULL );
wFilSelect( carInvSaveText_fs, GetCurrentPath(CARSPATHKEY));
}
static char *carCsvColumnTitles[] = {
- "Index", "Scale", "Manufacturer", "Type", "Partno", "Prototype",
- "Description", "Roadname", "Repmark", "Number", "Options", "CarLength",
- "CarWidth", "CoupledLength", "TruckOffset", "TruckCenter", "Color", "PurchPrice",
- "CurrPrice", "Condition", "PurchDate", "ServiceDate", "Notes" };
+ "Index", "Scale", "Manufacturer", "Type", "Partno", "Prototype",
+ "Description", "Roadname", "Repmark", "Number", "Options", "CarLength",
+ "CarWidth", "CoupledLength", "TruckOffset", "TruckCenter", "Color", "PurchPrice",
+ "CurrPrice", "Condition", "PurchDate", "ServiceDate", "Notes"
+};
#define M_INDEX (0)
#define M_SCALE (1)
#define M_MANUF (2)
@@ -4680,10 +5062,10 @@ static char *carCsvColumnTitles[] = {
static int ParseCsvLine(
- char * line,
- int max_elem,
- tabString_t * tabs,
- int * map )
+ char * line,
+ int max_elem,
+ tabString_t * tabs,
+ int * map )
{
int elem = 0;
char * cp, * cq, * ptr;
@@ -4698,7 +5080,7 @@ static int ParseCsvLine(
}
elem = 0;
while ( *cp && elem < max_elem ) {
- while ( *cp == ' ' ) cp++;
+ while ( *cp == ' ' ) { cp++; }
if ( *cp == ',' ) {
ptr = "";
len = 0;
@@ -4714,7 +5096,7 @@ static int ParseCsvLine(
*cq++ = *cp++;
}
cp++;
- if ( *cp!='"' ) break;
+ if ( *cp!='"' ) { break; }
*cq++ = *cp++;
}
if ( *cp && *cp != ',' ) {
@@ -4728,10 +5110,10 @@ static int ParseCsvLine(
len = (int)(cp-ptr);
}
if ( map[elem] >= 0 ) {
- tabs[map[elem]].ptr = ptr;
- tabs[map[elem]].len = len;
+ tabs[map[elem]].ptr = ptr;
+ tabs[map[elem]].len = len;
}
- if ( *cp ) cp++;
+ if ( *cp ) { cp++; }
elem++;
}
return elem;
@@ -4739,9 +5121,9 @@ static int ParseCsvLine(
static int CarInvImportCsv(
- int files,
- char **fileName,
- void * data )
+ int files,
+ char **fileName,
+ void * data )
{
FILE * f;
carItem_p item;
@@ -4759,13 +5141,14 @@ static int CarInvImportCsv(
carPart_p partP;
int requiredCols;
- assert( fileName != NULL );
- assert( files == 1 );
+ CHECK( fileName != NULL );
+ CHECK( files == 1 );
SetCurrentPath( CARSPATHKEY, fileName[0] );
f = fopen( fileName[0], "r" );
if ( f == NULL ) {
- NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Import Cars"), fileName[0], strerror(errno) );
+ NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Import Cars"),
+ fileName[0], strerror(errno) );
return FALSE;
}
@@ -4777,28 +5160,30 @@ static int CarInvImportCsv(
SetUserLocale();
return FALSE;
}
- for ( j=0; j<40; j++ ) map[j] = j;
+ for ( j=0; j<40; j++ ) { map[j] = j; }
numCol = ParseCsvLine( message, 40, tabs, map );
if ( numCol <= 0 ) {
fclose( f );
SetUserLocale();
return FALSE;
}
- for ( j=0; j<40; j++ ) map[j] = -1;
+ for ( j=0; j<40; j++ ) { map[j] = -1; }
requiredCols = 0;
for ( i=0; i<numCol; i++ ) {
for ( j=0; j<COUNT( carCsvColumnTitles ); j++ ) {
if ( TabStringCmp( carCsvColumnTitles[j], &tabs[i] ) == 0 ) {
if ( map[i] >= 0 ) {
- NoticeMessage( MSG_CARIMP_DUP_COLUMNS, _("Continue"), NULL, carCsvColumnTitles[j] );
+ NoticeMessage( MSG_CARIMP_DUP_COLUMNS, _("Continue"), NULL,
+ carCsvColumnTitles[j] );
fclose( f );
SetUserLocale();
return FALSE;
}
map[i] = j;
/*j = COUNT( carCsvColumnTitles );*/
- if ( j == M_SCALE || j == M_PROTO || j == M_MANUF || j == M_PARTNO )
+ if ( j == M_SCALE || j == M_PROTO || j == M_MANUF || j == M_PARTNO ) {
requiredCols++;
+ }
}
}
if ( map[i] == -1 ) {
@@ -4815,7 +5200,7 @@ static int CarInvImportCsv(
}
while ( fgets( message, sizeof message, f ) != NULL ) {
cnt = ParseCsvLine( message, 40, tabs, map );
- if ( cnt > numCol ) cnt = numCol;
+ if ( cnt > numCol ) { cnt = numCol; }
tabs[M_SCALE].ptr[tabs[M_SCALE].len] = '\0';
scale = LookupScale( tabs[M_SCALE].ptr );
tabs[M_SCALE].ptr[tabs[M_SCALE].len] = ',';
@@ -4835,9 +5220,10 @@ static int CarInvImportCsv(
}
#ifdef OBSOLETE
if ( TabStringCmp( "Unknown", &tabs[M_MANUF] ) != 0 &&
- TabStringCmp( "Custom", &tabs[M_MANUF] ) != 0 ) {
+ TabStringCmp( "Custom", &tabs[M_MANUF] ) != 0 ) {
if ( tabs[M_PARTNO].len == 0 ) {
- rc = NoticeMessage( MSG_CARIMP_MISSING_PARTNO, _("Continue"), _("Stop"), tabs[M_MANUF].ptr );
+ rc = NoticeMessage( MSG_CARIMP_MISSING_PARTNO, _("Continue"), _("Stop"),
+ tabs[M_MANUF].ptr );
if ( rc <= 0 ) {
fclose( f );
SetUserLocale();
@@ -4853,8 +5239,10 @@ static int CarInvImportCsv(
dim.truckCenter = TabGetFloat( &tabs[M_TRKCENTER] );
dim.truckCenterOffset = TabGetFloat( &tabs[M_TRKOFFSET] );
partP = NULL;
- if ( tabs[M_MANUF].len > 0 && tabs[M_PARTNO].len > 0 )
- partP = CarPartFind( tabs[M_MANUF].ptr, tabs[M_MANUF].len, tabs[M_PARTNO].ptr, tabs[M_PARTNO].len, scale );
+ if ( tabs[M_MANUF].len > 0 && tabs[M_PARTNO].len > 0 ) {
+ partP = CarPartFind( tabs[M_MANUF].ptr, tabs[M_MANUF].len, tabs[M_PARTNO].ptr,
+ tabs[M_PARTNO].len, scale );
+ }
if ( partP ) {
TabStringExtract( partP->title, 7, partTabs );
if ( tabs[M_PROTO].len == 0 && partTabs[T_PROTO].len > 0 ) { tabs[M_PROTO].ptr = partTabs[T_PROTO].ptr; tabs[M_PROTO].len = partTabs[T_PROTO].len; }
@@ -4862,13 +5250,13 @@ static int CarInvImportCsv(
if ( tabs[M_ROADNAME].len == 0 && partTabs[T_ROADNAME].len > 0 ) { tabs[M_ROADNAME].ptr = partTabs[T_ROADNAME].ptr; tabs[M_ROADNAME].len = partTabs[T_ROADNAME].len; }
if ( tabs[M_REPMARK].len == 0 && partTabs[T_REPMARK].len > 0 ) { tabs[M_REPMARK].ptr = partTabs[T_REPMARK].ptr; tabs[M_REPMARK].len = partTabs[T_REPMARK].len; }
if ( tabs[M_NUMBER].len == 0 && partTabs[T_NUMBER].len > 0 ) { tabs[M_NUMBER].ptr = partTabs[T_NUMBER].ptr; tabs[M_NUMBER].len = partTabs[T_NUMBER].len; }
- if ( dim.carLength <= 0 ) dim.carLength = partP->dim.carLength;
- if ( dim.carWidth <= 0 ) dim.carWidth = partP->dim.carWidth;
- if ( dim.coupledLength <= 0 ) dim.coupledLength = partP->dim.coupledLength;
- if ( dim.truckCenter <= 0 ) dim.truckCenter = partP->dim.truckCenter;
- if ( dim.truckCenterOffset < 0 ) dim.truckCenterOffset = partP->dim.truckCenterOffset;
+ if ( dim.carLength <= 0 ) { dim.carLength = partP->dim.carLength; }
+ if ( dim.carWidth <= 0 ) { dim.carWidth = partP->dim.carWidth; }
+ if ( dim.coupledLength <= 0 ) { dim.coupledLength = partP->dim.coupledLength; }
+ if ( dim.truckCenter <= 0 ) { dim.truckCenter = partP->dim.truckCenter; }
+ if ( dim.truckCenterOffset < 0 ) { dim.truckCenterOffset = partP->dim.truckCenterOffset; }
}
- if (dim.truckCenterOffset <0) dim.truckCenterOffset = 0;
+ if (dim.truckCenterOffset <0) { dim.truckCenterOffset = 0; }
cp = TabStringCpy( title, &tabs[M_MANUF] );
*cp++ = '\t';
cp = TabStringCpy( cp, &tabs[M_PROTO] );
@@ -4891,7 +5279,8 @@ static int CarInvImportCsv(
condition = TabGetLong( &tabs[M_CONDITION] );
purchDate = TabGetLong( &tabs[M_PURCHDATE] );
srvcDate = TabGetLong( &tabs[M_SRVDATE] );
- if ( dim.carLength <= 0 || dim.carWidth <= 0 || dim.coupledLength <= 0 || dim.truckCenter <= 0 ) {
+ if ( dim.carLength <= 0 || dim.carWidth <= 0 || dim.coupledLength <= 0
+ || dim.truckCenter <= 0 ) {
rc = NoticeMessage( MSG_CARIMP_MISSING_DIMS, _("Yes"), _("No"), message );
if ( rc <= 0 ) {
fclose( f );
@@ -4901,8 +5290,8 @@ static int CarInvImportCsv(
continue;
}
item = CarItemNew( NULL, PARAM_CUSTOM, index, scale, title, options, type,
- &dim, wDrawFindColor(color),
- purchPrice, currPrice, condition, purchDate, srvcDate );
+ &dim, wDrawFindColor(color),
+ purchPrice, currPrice, condition, purchDate, srvcDate );
if ( tabs[M_NOTES].len > 0 ) {
item->data.notes = cp = MyMalloc( (tabs[M_NOTES].len+2) );
for ( cq=tabs[M_NOTES].ptr,len=tabs[M_NOTES].len; *cq&&len; ) {
@@ -4931,24 +5320,25 @@ static void CarInvDlgImportCsv( void )
{
if ( carInvImportCsv_fs == NULL )
carInvImportCsv_fs = wFilSelCreate( mainW, FS_LOAD, 0, _("Import Cars"),
- _("Comma-Separated-Values (*.csv)|*.csv"), CarInvImportCsv, NULL );
+ _("Comma-Separated-Values (*.csv)|*.csv"), CarInvImportCsv, NULL );
wFilSelect( carInvImportCsv_fs, GetCurrentPath(CARSPATHKEY));
}
static void CsvFormatString(
- FILE * f,
- char * str,
- int len,
- char * sep )
+ FILE * f,
+ char * str,
+ int len,
+ char * sep )
{
- while ( str && len>0 && str[len-1]=='\n' ) len--;
+ while ( str && len>0 && str[len-1]=='\n' ) { len--; }
if ( *str && len ) {
fputc( '"', f );
for ( ; *str && len; str++,len-- ) {
if ( !iscntrl((unsigned char) *str ) ) {
- if ( *str == '"' )
+ if ( *str == '"' ) {
fputc( '"', f );
+ }
fputc( *str, f );
} else if ( *str == '\n' && str[1] && len > 1 ) {
fprintf( f, "<NL>" );
@@ -4961,32 +5351,34 @@ static void CsvFormatString(
static void CsvFormatLong(
- FILE * f,
- long val,
- char * sep )
+ FILE * f,
+ long val,
+ char * sep )
{
- if ( val != 0 )
+ if ( val != 0 ) {
fprintf( f, "%ld", val );
+ }
fprintf( f, "%s", sep );
}
static void CsvFormatFloat(
- FILE * f,
- FLOAT_T val,
- int digits,
- char * sep )
+ FILE * f,
+ FLOAT_T val,
+ int digits,
+ char * sep )
{
- if ( val != 0.0 )
+ if ( val != 0.0 ) {
fprintf( f, "%0.*f", digits, val );
+ }
fprintf( f, "%s", sep );
}
static int CarInvExportCsv(
- int files,
- char ** fileName,
- void * data )
+ int files,
+ char ** fileName,
+ void * data )
{
FILE * f;
carItem_p item;
@@ -4994,20 +5386,23 @@ static int CarInvExportCsv(
tabString_t tabs[7];
char * sp;
- assert( fileName != NULL );
- assert( files == 1 );
+ CHECK( fileName != NULL );
+ CHECK( files == 1 );
SetCurrentPath( CARSPATHKEY, fileName[0] );
f = fopen( fileName[0], "w" );
if ( f == NULL ) {
- NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Export Cars"), fileName[0], strerror(errno) );
+ NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Export Cars"),
+ fileName[0], strerror(errno) );
return FALSE;
}
SetCLocale();
for ( inx=0; inx<COUNT( carCsvColumnTitles ); inx++ ) {
- CsvFormatString( f, carCsvColumnTitles[inx], (int)strlen(carCsvColumnTitles[inx]), inx<(COUNT( carCsvColumnTitles ))-1?",":"\n" );
+ CsvFormatString( f, carCsvColumnTitles[inx],
+ (int)strlen(carCsvColumnTitles[inx]),
+ inx<(COUNT( carCsvColumnTitles ))-1?",":"\n" );
}
for ( inx=0; inx<carItemInfo_da.cnt; inx++ ) {
item = carItemInfo( inx );
@@ -5035,10 +5430,11 @@ static int CarInvExportCsv(
CsvFormatLong( f, item->data.condition, "," );
CsvFormatLong( f, item->data.purchDate, "," );
CsvFormatLong( f, item->data.serviceDate, "," );
- if ( item->data.notes )
+ if ( item->data.notes ) {
CsvFormatString( f, item->data.notes, (int)strlen(item->data.notes), "\n" );
- else
+ } else {
CsvFormatString( f, "", (int)strlen(""), "\n" );
+ }
}
fclose( f );
SetUserLocale();
@@ -5049,20 +5445,21 @@ static int CarInvExportCsv(
static struct wFilSel_t * carInvExportCsv_fs;
static void CarInvDlgExportCsv( void )
{
- if ( carItemInfo_da.cnt <= 0 )
+ if ( carItemInfo_da.cnt <= 0 ) {
return;
+ }
if ( carInvExportCsv_fs == NULL )
carInvExportCsv_fs = wFilSelCreate( mainW, FS_SAVE, 0, _("Export Cars"),
- _("Comma-Separated-Values (*.csv)|*.csv"), CarInvExportCsv, NULL );
+ _("Comma-Separated-Values (*.csv)|*.csv"), CarInvExportCsv, NULL );
wFilSelect( carInvExportCsv_fs, GetCurrentPath(CARSPATHKEY));
}
static void CarInvLoadItem(
- carItem_p item )
+ carItem_p item )
{
-/* "Index", "Scale", "Manufacturer", "Type", "Part No", "Description", "Roadname", "RepMarks",
- "Purch Price", "Curr Price", "Condition", "Purch Date", "Service Date", "Location", "Notes" */
+ /* "Index", "Scale", "Manufacturer", "Type", "Part No", "Description", "Roadname", "RepMarks",
+ "Purch Price", "Curr Price", "Condition", "Purch Date", "Service Date", "Location", "Notes" */
char *condition;
char *location;
char *manuf;
@@ -5078,42 +5475,51 @@ static void CarInvLoadItem(
notes[0] = '\0';
}
condition =
- (item->data.condition < 10) ? N_("N/A"):
- (item->data.condition < 30) ? N_("Poor"):
- (item->data.condition < 50) ? N_("Fair"):
- (item->data.condition < 70) ? N_("Good"):
- (item->data.condition < 90) ? N_("Excellent"):
- N_("Mint");
-
- if ( item->car && !IsTrackDeleted(item->car) )
- location = N_("Layout");
- else
+ (item->data.condition < 10) ? N_("N/A"):
+ (item->data.condition < 30) ? N_("Poor"):
+ (item->data.condition < 50) ? N_("Fair"):
+ (item->data.condition < 70) ? N_("Good"):
+ (item->data.condition < 90) ? N_("Excellent"):
+ N_("Mint");
+
+ char carLocation[30];
+ if ( item->car && !IsTrackDeleted(item->car) ) {
+ coOrd hi, lo;
+ GetBoundingBox( item->car, &hi, &lo );
+ snprintf( carLocation, sizeof carLocation, "%0.0fx%0.0f",
+ PutDim((lo.x+hi.x)/2.0),
+ PutDim((lo.y+hi.y)/2.0) );
+ location = carLocation;
+ } else {
location = N_("Shelf");
+ }
manuf = TabStringDup(&tabs[T_MANUF]);
road = TabStringDup(&tabs[T_ROADNAME]);
- sprintf( message, "%ld\t%s\t%s\t%.*s\t%s\t%.*s%s%.*s\t%s\t%.*s%s%.*s\t%0.2f\t%0.2f\t%s\t%ld\t%ld\t%s\t%s",
- item->index, GetScaleName(item->scaleInx),
- _(manuf),
- tabs[T_PART].len, tabs[T_PART].ptr,
- _(typeListMap[CarProtoFindTypeCode(item->type)].name),
- tabs[T_PROTO].len, tabs[T_PROTO].ptr,
- (tabs[T_PROTO].len>0 && tabs[T_DESC].len)?"/":"",
- tabs[T_DESC].len, tabs[T_DESC].ptr,
- _(road),
- tabs[T_REPMARK].len, tabs[T_REPMARK].ptr,
- (tabs[T_REPMARK].len>0&&tabs[T_NUMBER].len>0)?" ":"",
- tabs[T_NUMBER].len, tabs[T_NUMBER].ptr,
- item->data.purchPrice, item->data.currPrice, _(condition), item->data.purchDate, item->data.serviceDate, _(location), notes );
- if (manuf) MyFree(manuf);
- if (road) MyFree(road);
+ sprintf( message,
+ "%ld\t%s\t%s\t%.*s\t%s\t%.*s%s%.*s\t%s\t%.*s%s%.*s\t%0.2f\t%0.2f\t%s\t%ld\t%ld\t%s\t%s",
+ item->index, GetScaleName(item->scaleInx),
+ _(manuf),
+ tabs[T_PART].len, tabs[T_PART].ptr,
+ _(typeListMap[CarProtoFindTypeCode(item->type)].name),
+ tabs[T_PROTO].len, tabs[T_PROTO].ptr,
+ (tabs[T_PROTO].len>0 && tabs[T_DESC].len)?"/":"",
+ tabs[T_DESC].len, tabs[T_DESC].ptr,
+ _(road),
+ tabs[T_REPMARK].len, tabs[T_REPMARK].ptr,
+ (tabs[T_REPMARK].len>0&&tabs[T_NUMBER].len>0)?" ":"",
+ tabs[T_NUMBER].len, tabs[T_NUMBER].ptr,
+ item->data.purchPrice, item->data.currPrice, _(condition), item->data.purchDate,
+ item->data.serviceDate, _(location), notes );
+ if (manuf) { MyFree(manuf); }
+ if (road) { MyFree(road); }
wListAddValue( (wList_p)carInvPLs[I_CI_LIST].control, message, NULL, item );
}
static int Cmp_carInvItem(
- const void * ptr1,
- const void * ptr2 )
+ const void * ptr1,
+ const void * ptr2 )
{
carItem_p item1 = *(carItem_p*)ptr1;
carItem_p item2 = *(carItem_p*)ptr2;
@@ -5131,25 +5537,32 @@ static int Cmp_carInvItem(
case S_SCALE:
rc = (int)(item1->scaleInx-item2->scaleInx);
case S_MANUF:
- rc = strncasecmp( tabs1[T_MANUF].ptr, tabs2[T_MANUF].ptr, max(tabs1[T_MANUF].len,tabs2[T_MANUF].len) );
+ rc = strncasecmp( tabs1[T_MANUF].ptr, tabs2[T_MANUF].ptr,
+ max(tabs1[T_MANUF].len,tabs2[T_MANUF].len) );
break;
case S_TYPE:
rc = (int)(item1->type-item2->type);
break;
case S_PARTNO:
- rc = strncasecmp( tabs1[T_PART].ptr, tabs2[T_PART].ptr, max(tabs1[T_PART].len,tabs2[T_PART].len) );
+ rc = strncasecmp( tabs1[T_PART].ptr, tabs2[T_PART].ptr, max(tabs1[T_PART].len,
+ tabs2[T_PART].len) );
break;
case S_DESC:
- rc = strncasecmp( tabs1[T_PROTO].ptr, tabs2[T_PROTO].ptr, max(tabs1[T_PROTO].len,tabs2[T_PROTO].len) );
- if ( rc != 0 )
+ rc = strncasecmp( tabs1[T_PROTO].ptr, tabs2[T_PROTO].ptr,
+ max(tabs1[T_PROTO].len,tabs2[T_PROTO].len) );
+ if ( rc != 0 ) {
break;
- rc = strncasecmp( tabs1[T_DESC].ptr, tabs2[T_DESC].ptr, max(tabs1[T_DESC].len,tabs2[T_DESC].len) );
+ }
+ rc = strncasecmp( tabs1[T_DESC].ptr, tabs2[T_DESC].ptr, max(tabs1[T_DESC].len,
+ tabs2[T_DESC].len) );
break;
case S_ROADNAME:
- rc = strncasecmp( tabs1[T_ROADNAME].ptr, tabs2[T_ROADNAME].ptr, max(tabs1[T_ROADNAME].len,tabs2[T_ROADNAME].len) );
+ rc = strncasecmp( tabs1[T_ROADNAME].ptr, tabs2[T_ROADNAME].ptr,
+ max(tabs1[T_ROADNAME].len,tabs2[T_ROADNAME].len) );
break;
case S_REPMARKS:
- rc = strncasecmp( tabs1[T_REPMARK].ptr, tabs2[T_REPMARK].ptr, max(tabs1[T_REPMARK].len,tabs2[T_REPMARK].len) );
+ rc = strncasecmp( tabs1[T_REPMARK].ptr, tabs2[T_REPMARK].ptr,
+ max(tabs1[T_REPMARK].len,tabs2[T_REPMARK].len) );
break;
case S_PURCHPRICE:
rc = (int)(item1->data.purchPrice-item2->data.purchPrice);
@@ -5178,7 +5591,8 @@ static void CarInvListLoad( void )
int inx;
carItem_p item;
- qsort( carItemInfo_da.ptr, carItemInfo_da.cnt, sizeof item, Cmp_carInvItem );
+ qsort( &carItemInfo(0), carItemInfo_da.cnt, sizeof carItemInfo(0),
+ Cmp_carInvItem );
ParamControlShow( &carInvPG, I_CI_LIST, FALSE );
wListClear( (wList_p)carInvPLs[I_CI_LIST].control );
for ( inx=0; inx<carItemInfo_da.cnt; inx++ ) {
@@ -5188,51 +5602,63 @@ static void CarInvListLoad( void )
ParamControlShow( &carInvPG, I_CI_LIST, TRUE );
ParamControlActive( &carInvPG, I_CI_EDIT, FALSE );
ParamControlActive( &carInvPG, I_CI_DELETE, FALSE );
+ wButtonSetLabel( (wButton_p)(carInvPLs[I_CI_DELETE].control), "" );
ParamControlActive( &carInvPG, I_CI_EXPORT_CSV, carItemInfo_da.cnt > 0 );
ParamDialogOkActive( &carInvPG, FALSE );
}
static void CarInvDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
carItem_p item = NULL;
wIndex_t cnt, selinx, selcnt;
- wBool_t enableDelete;
if ( inx >= I_CI_SORT && inx < I_CI_SORT+N_SORT ) {
item = CarInvDlgFindCurrentItem();
CarInvListLoad();
if ( item ) {
carInvInx = (wIndex_t)CarItemFindIndex( item );
- if ( carInvInx >= 0 )
+ if ( carInvInx >= 0 ) {
ParamLoadControl( &carInvPG, I_CI_LIST );
+ }
}
} else if ( inx == I_CI_LIST ) {
cnt = wListGetCount( (wList_p)carInvPLs[I_CI_LIST].control );
- enableDelete = TRUE;
+ wIndex_t nOnShelf = 0;
+ wIndex_t nOnLayout = 0;
for ( selinx=selcnt=0; selinx<cnt; selinx++ ) {
if ( wListGetItemSelected( (wList_p)carInvPLs[I_CI_LIST].control, selinx ) ) {
selcnt++;
- item = (carItem_p)wListGetItemContext( (wList_p)carInvPLs[I_CI_LIST].control, selinx );
- if ( item && item->car && !IsTrackDeleted( item->car ) ) {
- enableDelete = FALSE;
- break;
+ item = (carItem_p)wListGetItemContext( (wList_p)carInvPLs[I_CI_LIST].control,
+ selinx );
+ if ( ! item ) { continue; }
+ if ( item->car && !IsTrackDeleted( item->car ) ) {
+ nOnLayout++;
+ } else {
+ nOnShelf++;
}
}
}
- item = CarInvDlgFindCurrentItem();
- ParamDialogOkActive( pg, selcnt==1 && item && item->car && !IsTrackDeleted(item->car) );
- ParamControlActive( &carInvPG, I_CI_EDIT, selcnt==1 && item && (item->car==NULL || IsTrackDeleted(item->car)) );
- ParamControlActive( &carInvPG, I_CI_DELETE, selcnt>0 && enableDelete );
+ // Enable Find if 1 selected car is on Layout
+ ParamDialogOkActive( pg, nOnLayout == 1 && nOnShelf == 0 );
+ // Enable Edit if 1 selected car is on Shelf
+ ParamControlActive( &carInvPG, I_CI_EDIT, nOnLayout == 0 && nOnShelf == 1 );
+ wBool_t bEnableDelete = nOnLayout+nOnShelf > 0 &&
+ ( nOnLayout == 0 || nOnShelf == 0 );
+ wButtonSetLabel( (wButton_p)(carInvPLs[I_CI_DELETE].control),
+ bEnableDelete == FALSE ? "" :
+ nOnLayout > 0 ? _("Shelve") :
+ _("Delete") );
+ ParamControlActive( &carInvPG, I_CI_DELETE, bEnableDelete );
}
}
static void CarInvListAdd(
- carItem_p item )
+ carItem_p item )
{
CarInvListLoad();
carInvInx = (wIndex_t)CarItemFindIndex( item );
@@ -5243,7 +5669,7 @@ static void CarInvListAdd(
static void CarInvListUpdate(
- carItem_p item )
+ carItem_p item )
{
CarInvListLoad();
carInvInx = (wIndex_t)CarItemFindIndex( item );
@@ -5257,10 +5683,13 @@ EXPORT void DoCarDlg( void * unused )
{
int inx, inx2;
if ( carInvPG.win == NULL ) {
- ParamCreateDialog( &carInvPG, MakeWindowTitle(_("Car Inventory")), _("Find"), CarInvDlgFind, wHide, TRUE, NULL, F_BLOCK|F_RESIZE|F_RECALLSIZE|PD_F_ALT_CANCELLABEL, CarInvDlgUpdate );
+ ParamCreateDialog( &carInvPG, MakeWindowTitle(_("Car Inventory")), _("Find"),
+ CarInvDlgFind, wHide, TRUE, NULL,
+ F_BLOCK|F_RESIZE|F_RECALLSIZE|PD_F_ALT_CANCELLABEL, CarInvDlgUpdate );
for ( inx=I_CI_SORT; inx<I_CI_SORT+N_SORT; inx++ ) {
for ( inx2=0; inx2<COUNT( sortOrders ); inx2++ ) {
- wListAddValue( (wList_p)carInvPLs[inx].control, _(sortOrders[inx2]), NULL, NULL );
+ wListAddValue( (wList_p)carInvPLs[inx].control, _(sortOrders[inx2]), NULL,
+ NULL );
ParamLoadControl( &carInvPG, inx );
}
}
@@ -5274,7 +5703,6 @@ EXPORT void DoCarDlg( void * unused )
static void CarDlgChange( long changes )
{
if ( (changes&CHANGE_SCALE) ) {
- carPartChangeLevel = 0;
carDlgCouplerLength = 0.0;
}
}
@@ -5283,29 +5711,25 @@ static void CarDlgChange( long changes )
EXPORT void ClearCars( void )
{
int inx;
- for ( inx=0; inx<carItemInfo_da.cnt; inx++ )
+ for ( inx=0; inx<carItemInfo_da.cnt; inx++ ) {
MyFree( carItemInfo(inx) );
- carItemInfo_da.cnt = 0;
- carItemInfo_da.max = 0;
- if ( carItemInfo_da.ptr )
- MyFree( carItemInfo_da.ptr );
- carItemInfo_da.ptr = NULL;
+ }
+ DYNARR_FREE( carItem_t*, carItemInfo_da );
}
static struct {
- dynArr_t carProto_da;
- dynArr_t carPartParent_da;
- dynArr_t carItemInfo_da;
- } savedCarState;
+ dynArr_t carProto_da;
+ dynArr_t carPartParent_da;
+ dynArr_t carItemInfo_da;
+} savedCarState;
EXPORT void SaveCarState( void )
{
savedCarState.carProto_da = carProto_da;
savedCarState.carPartParent_da = carPartParent_da;
savedCarState.carItemInfo_da = carItemInfo_da;
- carItemInfo_da.cnt = carItemInfo_da.max = 0;
- carItemInfo_da.ptr = NULL;
+ DYNARR_INIT( carItem_t*, carItemInfo_da );
}
@@ -5344,8 +5768,8 @@ EXPORT void InitCarDlg( void )
*/
static int CarPartCustMgmProc(
- int cmd,
- void * data )
+ int cmd,
+ void * data )
{
tabString_t tabs[7];
int rd_inx;
@@ -5357,8 +5781,9 @@ static int CarPartCustMgmProc(
case CUSTMGM_CAN_EDIT:
return TRUE;
case CUSTMGM_DO_EDIT:
- if ( partP == NULL )
+ if ( partP == NULL ) {
return FALSE;
+ }
carDlgUpdatePartPtr = partP;
DoCarPartDlg( partUpdActions );
return TRUE;
@@ -5370,16 +5795,17 @@ static int CarPartCustMgmProc(
case CUSTMGM_GET_TITLE:
TabStringExtract( partP->title, 7, tabs );
rd_inx = T_REPMARK;
- if ( tabs[T_REPMARK].len == 0 )
+ if ( tabs[T_REPMARK].len == 0 ) {
rd_inx = T_ROADNAME;
+ }
sprintf( message, "\t%s\t%s\t%.*s\t%s%s%.*s%s%.*s%s%.*s",
- partP->parent->manuf,
- GetScaleName(partP->parent->scale),
- tabs[T_PART].len, tabs[T_PART].ptr,
- partP->parent->proto,
- tabs[T_DESC].len?", ":"", tabs[T_DESC].len, tabs[T_DESC].ptr,
- tabs[rd_inx].len?", ":"", tabs[rd_inx].len, tabs[rd_inx].ptr,
- tabs[T_NUMBER].len?" ":"", tabs[T_NUMBER].len, tabs[T_NUMBER].ptr );
+ partP->parent->manuf,
+ GetScaleName(partP->parent->scale),
+ tabs[T_PART].len, tabs[T_PART].ptr,
+ partP->parent->proto,
+ tabs[T_DESC].len?", ":"", tabs[T_DESC].len, tabs[T_DESC].ptr,
+ tabs[rd_inx].len?", ":"", tabs[rd_inx].len, tabs[rd_inx].ptr,
+ tabs[T_NUMBER].len?" ":"", tabs[T_NUMBER].len, tabs[T_NUMBER].ptr );
return TRUE;
}
return FALSE;
@@ -5387,8 +5813,8 @@ static int CarPartCustMgmProc(
static int CarProtoCustMgmProc(
- int cmd,
- void * data )
+ int cmd,
+ void * data )
{
carProto_p protoP = (carProto_p)data;
switch ( cmd ) {
@@ -5397,8 +5823,9 @@ static int CarProtoCustMgmProc(
case CUSTMGM_CAN_EDIT:
return TRUE;
case CUSTMGM_DO_EDIT:
- if ( protoP == NULL )
+ if ( protoP == NULL ) {
return FALSE;
+ }
carDlgUpdateProtoPtr = protoP;
DoCarPartDlg( protoUpdActions );
return TRUE;
@@ -5408,7 +5835,8 @@ static int CarProtoCustMgmProc(
CarProtoDelete( protoP );
return TRUE;
case CUSTMGM_GET_TITLE:
- sprintf( message, "\t%s\t\t%s\t%s", _("Prototype"), _(typeListMap[CarProtoFindTypeCode(protoP->type)].name), protoP->desc );
+ sprintf( message, "\t%s\t\t%s\t%s", _("Prototype"),
+ _(typeListMap[CarProtoFindTypeCode(protoP->type)].name), protoP->desc );
return TRUE;
}
return FALSE;
@@ -5427,25 +5855,29 @@ EXPORT void CarCustMgmLoad( void )
static wIcon_p carpartI = NULL;
static wIcon_p carprotoI = NULL;
- if ( carpartI == NULL )
+ if ( carpartI == NULL ) {
carpartI = wIconCreatePixMap( carpart_xpm );
- if ( carprotoI == NULL )
+ }
+ if ( carprotoI == NULL ) {
carprotoI = wIconCreatePixMap( carproto_xpm );
+ }
for ( parentX=0; parentX<carPartParent_da.cnt; parentX++ ) {
parentP = carPartParent(parentX);
for ( partX=0; partX<parentP->parts_da.cnt; partX++ ) {
partP = carPart(parentP,partX);
- if ( partP->paramFileIndex != PARAM_CUSTOM )
+ if ( partP->paramFileIndex != PARAM_CUSTOM ) {
continue;
+ }
CustMgmLoad( carpartI, CarPartCustMgmProc, partP );
}
}
for ( protoX=0; protoX<carProto_da.cnt; protoX++ ) {
carProtoP = carProto(protoX);
- if ( carProtoP->paramFileIndex != PARAM_CUSTOM )
+ if ( carProtoP->paramFileIndex != PARAM_CUSTOM ) {
continue;
+ }
if (carProtoP->paramFileIndex == PARAM_CUSTOM) {
CustMgmLoad( carprotoI, CarProtoCustMgmProc, carProtoP );
}
diff --git a/app/bin/dcmpnd.c b/app/bin/dcmpnd.c
index b86ab7b..9b7dfcc 100644
--- a/app/bin/dcmpnd.c
+++ b/app/bin/dcmpnd.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 "compound.h"
@@ -28,6 +28,7 @@
#include "include/paramfile.h"
#include "shrtpath.h"
#include "track.h"
+#include "trkendpt.h"
#include "common-ui.h"
/*****************************************************************************
@@ -42,11 +43,11 @@ static updateType_e updateListType;
static BOOL_T updateWVisible;
static BOOL_T updateWStale;
typedef struct {
- updateType_e type;
- SCALEINX_T scale;
- char * old;
- char * new;
- } updateTitleElement;
+ updateType_e type;
+ SCALEINX_T scale;
+ char * old;
+ char * new;
+} updateTitleElement;
static dynArr_t updateTitles_da;
#define updateTitles(N) DYNARR_N( updateTitleElement, updateTitles_da, N )
@@ -69,24 +70,29 @@ static paramData_t updateTitlePLs[] = {
{ PD_DROPLIST, NULL, "sel", PDO_NOPREF, I2VP(400) },
{ PD_BUTTON, UpdateTitleIgnore, "ignore", PDO_DLGCMDBUTTON, NULL, N_("Ignore") },
#define I_UPDATELOAD (12)
- { PD_BUTTON, NULL, "load", 0, NULL, N_("Load") } };
+ { PD_BUTTON, NULL, "load", 0, NULL, N_("Load") }
+};
static paramGroup_t updateTitlePG = { "updatetitle", 0, updateTitlePLs, COUNT( updateTitlePLs ) };
static void UpdateTitleChange( long changes )
{
- if ( (changes & (CHANGE_SCALE|CHANGE_PARAMS)) == 0 )
+ if ( (changes & (CHANGE_SCALE|CHANGE_PARAMS)) == 0 ) {
return;
+ }
if (!updateWVisible) {
updateWStale = TRUE;
return;
}
wControlShow( (wControl_p)updateTitleL, FALSE );
wListClear( updateTitleL );
- if (updateTitles(updateTitleInx).type == updateTurnout)
- TurnoutAdd( listLabels, updateTitles(updateTitleInx).scale, updateTitleL, NULL, -1 );
- else
- StructAdd( listLabels, updateTitles(updateTitleInx).scale, updateTitleL, NULL );
+ if (updateTitles(updateTitleInx).type == updateTurnout) {
+ TurnoutAdd( listLabels, updateTitles(updateTitleInx).scale, updateTitleL, NULL,
+ -1 );
+ } else {
+ StructAdd( listLabels, updateTitles(updateTitleInx).scale, updateTitleL,
+ NULL );
+ }
wControlShow( (wControl_p)updateTitleL, TRUE );
updateListType = updateTitles(updateTitleInx).type;
}
@@ -112,7 +118,7 @@ static void UpdateTitleNext( void )
xx = GET_EXTRA_DATA(trk, trkType, extraDataCompound_t);
for (inx=0; inx<updateTitles_da.cnt; inx++) {
if ( updateTitles(inx).old &&
- strcmp( xx->title, updateTitles(inx).old ) == 0 ) {
+ strcmp( xx->title, updateTitles(inx).old ) == 0 ) {
xx->title = MyStrdup( updateTitles(inx).new );
break;
}
@@ -126,9 +132,11 @@ static void UpdateTitleNext( void )
DoChangeNotification( CHANGE_MAIN );
return;
}
- ParamLoadMessage( &updateTitlePG, I_UPDATESTR, updateTitles(updateTitleInx).old );
- if (updateWStale || updateTitles(updateTitleInx).type != updateListType)
+ ParamLoadMessage( &updateTitlePG, I_UPDATESTR,
+ updateTitles(updateTitleInx).old );
+ if (updateWStale || updateTitles(updateTitleInx).type != updateListType) {
UpdateTitleChange( CHANGE_SCALE|CHANGE_PARAMS );
+ }
}
@@ -160,12 +168,15 @@ static void UpdateTitleCancel( wWin_p junk )
void DoUpdateTitles( void )
{
- if (updateTitles_da.cnt <= 0)
+ if (updateTitles_da.cnt <= 0) {
return;
+ }
if (updateTitleW == NULL) {
ParamRegister( &updateTitlePG );
updateTitlePLs[I_UPDATELOAD].valueP = ParamFilesInit();
- updateTitleW = ParamCreateDialog( &updateTitlePG, MakeWindowTitle(_("Update Title")), _("Update"), UpdateTitleUpdate, UpdateTitleCancel, TRUE, NULL, 0, NULL );
+ updateTitleW = ParamCreateDialog( &updateTitlePG,
+ MakeWindowTitle(_("Update Title")), _("Update"), UpdateTitleUpdate,
+ UpdateTitleCancel, TRUE, NULL, 0, NULL );
RegisterChangeNotification( UpdateTitleChange );
}
updateTitleInx = -1;
@@ -176,13 +187,14 @@ void DoUpdateTitles( void )
}
EXPORT void UpdateTitleMark(
- char * title,
- SCALEINX_T scale )
+ char * title,
+ SCALEINX_T scale )
{
int inx;
updateTitleElement * ut;
- if ( inPlayback )
+ if ( inPlayback ) {
return;
+ }
for (inx=0; inx<updateTitles_da.cnt; inx++) {
if (strcmp(title,updateTitles(inx).old) == 0) {
return;
@@ -190,10 +202,11 @@ EXPORT void UpdateTitleMark(
}
DYNARR_APPEND( updateTitleElement, updateTitles_da, 10 );
ut = &updateTitles(updateTitles_da.cnt-1);
- if ( tempEndPts_da.cnt > 0)
+ if ( TempEndPtsCount() > 0) {
ut->type = updateTurnout;
- else
+ } else {
ut->type = updateStructure;
+ }
ut->scale = scale;
ut->old = MyStrdup(title);
ut->new = NULL;
@@ -206,14 +219,15 @@ EXPORT void UpdateTitleMark(
*/
static BOOL_T CheckCompoundEndPoint(
- track_p trk,
- EPINX_T trkEp,
- turnoutInfo_t * to,
- EPINX_T toEp,
- BOOL_T flip )
+ track_p trk,
+ EPINX_T trkEp,
+ turnoutInfo_t * to,
+ EPINX_T toEp,
+ BOOL_T flip )
{
-
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
+
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
coOrd pos;
DIST_T d;
ANGLE_T a, a2;
@@ -221,20 +235,24 @@ static BOOL_T CheckCompoundEndPoint(
Rotate( &pos, xx->orig, -xx->angle );
pos.x -= xx->orig.x;
pos.y -= xx->orig.y;
- if ( flip )
+ if ( flip ) {
pos.y = - pos.y;
- d = FindDistance( pos, to->endPt[toEp].pos );
+ }
+ d = FindDistance( pos, GetEndPtPos(EndPtIndex(to->endPt,toEp)));
if ( d > connectDistance ) {
- sprintf( message, _("End-Point #%d of the selected and actual turnouts are not close"), toEp );
+ sprintf( message,
+ _("End-Point #%d of the selected and actual turnouts are not close"), toEp );
return FALSE;
}
a = GetTrkEndAngle( trk, trkEp );
- a2 = to->endPt[toEp].angle;
- if ( flip )
+ a2 = GetEndPtAngle(EndPtIndex(to->endPt,toEp));
+ if ( flip ) {
a2 = 180.0 - a2;
+ }
a = NormalizeAngle( a - xx->angle - a2 + connectAngle/2.0 );
if ( a > connectAngle ) {
- sprintf( message, _("End-Point #%d of the selected and actual turnouts are not aligned"), toEp );
+ sprintf( message,
+ _("End-Point #%d of the selected and actual turnouts are not aligned"), toEp );
return FALSE;
}
return TRUE;
@@ -243,8 +261,8 @@ static BOOL_T CheckCompoundEndPoint(
int refreshCompoundCnt;
static BOOL_T RefreshCompound1(
- track_p trk,
- turnoutInfo_t * to )
+ track_p trk,
+ turnoutInfo_t * to )
{
EPINX_T ep, epCnt;
BOOL_T ok;
@@ -252,7 +270,8 @@ static BOOL_T RefreshCompound1(
epCnt = GetTrkEndPtCnt(trk);
if ( epCnt != to->endCnt ) {
- strcpy( message, _("The selected Turnout had a differing number of End-Points") );
+ strcpy( message,
+ _("The selected Turnout had a differing number of End-Points") );
return FALSE;
}
ok = TRUE;
@@ -263,24 +282,25 @@ static BOOL_T RefreshCompound1(
}
if ( !ok ) {
if ( ep > 0 && epCnt == 2 &&
- CheckCompoundEndPoint( trk, 1, to, 1, TRUE ) ) {
+ CheckCompoundEndPoint( trk, 1, to, 1, TRUE ) ) {
flip = TRUE;
ok = TRUE;
} else if ( ep > 0 && epCnt == 3 &&
- CheckCompoundEndPoint( trk, 1, to, 2, FALSE ) &&
- CheckCompoundEndPoint( trk, 2, to, 1, FALSE ) ) {
+ CheckCompoundEndPoint( trk, 1, to, 2, FALSE ) &&
+ CheckCompoundEndPoint( trk, 2, to, 1, FALSE ) ) {
ok = TRUE;
} else if ( ep > 0 && epCnt == 4 &&
- CheckCompoundEndPoint( trk, 1, to, 3, FALSE ) &&
- CheckCompoundEndPoint( trk, 2, to, 2, FALSE ) &&
- CheckCompoundEndPoint( trk, 3, to, 1, FALSE ) ) {
+ CheckCompoundEndPoint( trk, 1, to, 3, FALSE ) &&
+ CheckCompoundEndPoint( trk, 2, to, 2, FALSE ) &&
+ CheckCompoundEndPoint( trk, 3, to, 1, FALSE ) ) {
ok = TRUE;
} else {
return FALSE;
}
}
UndoModify( trk );
- struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
FreeFilledDraw( xx->segCnt, xx->segs );
MyFree( xx->segs );
xx->segCnt = to->segCnt;
@@ -289,8 +309,9 @@ static BOOL_T RefreshCompound1(
xx->pathOverRide = to->pathOverRide;
xx->pathNoCombine = to->pathNoCombine;
SetPaths( trk, GetParamPaths(to) );
- if ( flip )
+ if ( flip ) {
FlipSegs( xx->segCnt, xx->segs, zero, 90.0 );
+ }
ClrTrkBits( trk, TB_SELECTED );
refreshCompoundCnt++;
CloneFilledDraw( xx->segCnt, xx->segs, FALSE );
@@ -299,9 +320,9 @@ static BOOL_T RefreshCompound1(
typedef struct {
- char * name;
- turnoutInfo_t * to;
- } refreshSpecial_t;
+ char * name;
+ turnoutInfo_t * to;
+} refreshSpecial_t;
static dynArr_t refreshSpecial_da;
#define refreshSpecial(N) DYNARR_N( refreshSpecial_t, refreshSpecial_da, N )
static wIndex_t refreshSpecialInx;
@@ -310,37 +331,38 @@ static void RefreshSkip( void * junk );
static paramListData_t refreshSpecialListData = { 30, 600, 0, NULL, NULL };
static paramData_t refreshSpecialPLs[] = {
#define REFRESH_M1 (0)
- { PD_MESSAGE, NULL, NULL, 0/*PDO_DLGRESIZEW*/, I2VP(380) },
+ { PD_MESSAGE, NULL, NULL, 0/*PDO_DLGRESIZEW*/, I2VP(380) },
#define REFRESH_M2 (1)
- { PD_MESSAGE, NULL, NULL, 0/*PDO_DLGRESIZEW*/, I2VP(380) },
+ { PD_MESSAGE, NULL, NULL, 0/*PDO_DLGRESIZEW*/, I2VP(380) },
#define REFRESH_S (2)
- { PD_MESSAGE, NULL, NULL, 0/*PDO_DLGRESIZEW*/, I2VP(380) },
+ { PD_MESSAGE, NULL, NULL, 0/*PDO_DLGRESIZEW*/, I2VP(380) },
#define REFRESH_L (3)
- { PD_LIST, &refreshSpecialInx, "list", PDO_LISTINDEX|PDO_NOPREF|PDO_DLGRESIZE, &refreshSpecialListData, NULL, BO_READONLY },
- { PD_BUTTON, RefreshSkip, "skip", PDO_DLGCMDBUTTON, NULL, N_("Skip") } };
+ { PD_LIST, &refreshSpecialInx, "list", PDO_LISTINDEX|PDO_NOPREF|PDO_DLGRESIZE, &refreshSpecialListData, NULL, BO_READONLY },
+ { PD_BUTTON, RefreshSkip, "skip", PDO_DLGCMDBUTTON, NULL, N_("Skip") }
+};
static paramGroup_t refreshSpecialPG = { "refreshSpecial", 0, refreshSpecialPLs, COUNT( refreshSpecialPLs ) };
static void RefreshSpecialOk(
- void * junk )
+ void * junk )
{
wHide( refreshSpecialPG.win );
}
static void RefreshSpecialCancel(
- wWin_p win )
+ wWin_p win )
{
refreshSpecialInx = -1;
refreshReturnVal = FALSE;
wHide( refreshSpecialPG.win );
}
static void RefreshSkip(
- void * junk )
+ void * junk )
{
refreshSpecialInx = -1;
wHide( refreshSpecialPG.win );
}
EXPORT BOOL_T RefreshCompound(
- track_p trk,
- BOOL_T junk )
+ track_p trk,
+ BOOL_T junk )
{
TRKTYP_T trkType;
struct extraDataCompound_t *xx;
@@ -353,8 +375,9 @@ EXPORT BOOL_T RefreshCompound(
refreshCompoundCnt = 0;
for ( inx=0; inx<refreshSpecial_da.cnt; inx++ )
if ( refreshSpecial(inx).name != NULL &&
- refreshSpecial(inx).to == NULL )
+ refreshSpecial(inx).to == NULL ) {
refreshSpecial(inx).name = NULL;
+ }
return FALSE;
}
trkType = GetTrkType(trk);
@@ -367,13 +390,14 @@ EXPORT BOOL_T RefreshCompound(
refreshReturnVal = TRUE;
for ( inx=0; inx<refreshSpecial_da.cnt; inx++ ) {
if ( refreshSpecial(inx).name != NULL &&
- strcasecmp( xx->title, refreshSpecial(inx).name ) == 0 ) {
+ strcasecmp( xx->title, refreshSpecial(inx).name ) == 0 ) {
to = refreshSpecial(inx).to;
- if ( to == NULL )
+ if ( to == NULL ) {
return TRUE;
+ }
if ( IsParamValid(to->paramFileIndex) &&
- to->segCnt > 0 &&
- (FIT_NONE != CompatibleScale( GetTrkEndPtCnt(trk)>0, to->scaleInx, scale ) )) {
+ to->segCnt > 0 &&
+ (FIT_NONE != CompatibleScale( GetTrkEndPtCnt(trk)>0, to->scaleInx, scale ) )) {
if ( RefreshCompound1( trk, refreshSpecial(inx).to ) ) {
if ( strcasecmp( xx->title, to->title ) != 0 ) {
MyFree( xx->title );
@@ -384,24 +408,32 @@ EXPORT BOOL_T RefreshCompound(
}
}
}
- if ( ( to = FindCompound( FIND_TURNOUT|FIND_STRUCT, NULL, xx->title ) ) != NULL &&
- RefreshCompound1( trk, to ) )
+ if ( ( to = FindCompound( FIND_TURNOUT|FIND_STRUCT, NULL, xx->title ) ) != NULL
+ &&
+ RefreshCompound1( trk, to ) ) {
return TRUE;
+ }
if ( refreshSpecialPG.win == NULL ) {
ParamRegister( &refreshSpecialPG );
- ParamCreateDialog( &refreshSpecialPG, MakeWindowTitle(_("Refresh Turnout/Structure")), _("Ok"), RefreshSpecialOk, RefreshSpecialCancel, TRUE, NULL, F_BLOCK|F_RESIZE|F_RECALLSIZE, NULL );
+ ParamCreateDialog( &refreshSpecialPG,
+ MakeWindowTitle(_("Refresh Turnout/Structure")), _("Ok"), RefreshSpecialOk,
+ RefreshSpecialCancel, TRUE, NULL, F_BLOCK|F_RESIZE|F_RECALLSIZE, NULL );
}
- ParamLoadMessage( &refreshSpecialPG, REFRESH_M1, _("Choose a Turnout/Structure to replace:") );
+ ParamLoadMessage( &refreshSpecialPG, REFRESH_M1,
+ _("Choose a Turnout/Structure to replace:") );
ParamLoadMessage( &refreshSpecialPG, REFRESH_M2, "" );
refreshSpecialInx = -1;
wListClear( (wList_p)refreshSpecialPLs[REFRESH_L].control );
- if ( GetTrkEndPtCnt(trk) > 0 )
- to = TurnoutAdd( listLabels, scale, (wList_p)refreshSpecialPLs[REFRESH_L].control, NULL, GetTrkEndPtCnt(trk) );
- else
- to = StructAdd( listLabels, scale, (wList_p)refreshSpecialPLs[REFRESH_L].control, NULL );
+ if ( GetTrkEndPtCnt(trk) > 0 ) {
+ to = TurnoutAdd( listLabels, scale,
+ (wList_p)refreshSpecialPLs[REFRESH_L].control, NULL, GetTrkEndPtCnt(trk) );
+ } else {
+ to = StructAdd( listLabels, scale,
+ (wList_p)refreshSpecialPLs[REFRESH_L].control, NULL );
+ }
if ( to == NULL ) {
NoticeMessage( MSG_NO_TURNOUTS_AVAILABLE, _("Ok"), NULL,
- GetTrkEndPtCnt(trk)>0 ? _("Turnouts") : _("Structures") );
+ GetTrkEndPtCnt(trk)>0 ? _("Turnouts") : _("Structures") );
return FALSE;
}
FormatCompoundTitle( listLabels, xx->title );
@@ -417,9 +449,10 @@ EXPORT BOOL_T RefreshCompound(
}
return refreshReturnVal;
}
- to = (turnoutInfo_t*)wListGetItemContext( (wList_p)refreshSpecialPLs[REFRESH_L].control, refreshSpecialInx );
+ to = (turnoutInfo_t*)wListGetItemContext( (wList_p)
+ refreshSpecialPLs[REFRESH_L].control, refreshSpecialInx );
if ( to != NULL &&
- RefreshCompound1( trk, to ) ) {
+ RefreshCompound1( trk, to ) ) {
DYNARR_APPEND( refreshSpecial_t, refreshSpecial_da, 10 );
refreshSpecial(refreshSpecial_da.cnt-1).to = to;
refreshSpecial(refreshSpecial_da.cnt-1).name = MyStrdup( xx->title );
@@ -430,7 +463,8 @@ EXPORT BOOL_T RefreshCompound(
return TRUE;
}
ParamLoadMessage( &refreshSpecialPG, REFRESH_M1, message );
- ParamLoadMessage( &refreshSpecialPG, REFRESH_M2, _("Choose another Turnout/Structure to replace:") );
+ ParamLoadMessage( &refreshSpecialPG, REFRESH_M2,
+ _("Choose another Turnout/Structure to replace:") );
}
}
@@ -446,14 +480,15 @@ static char renamePartno[STR_SIZE];
static turnoutInfo_t * renameTo;
static paramData_t renamePLs[] = {
-/*0*/ { PD_STRING, renameManuf, "manuf", PDO_NOPREF | PDO_NOTBLANK, I2VP(350), N_("Manufacturer"), 0, 0, sizeof(renameManuf)},
-/*1*/ { PD_STRING, renameDesc, "desc", PDO_NOPREF | PDO_NOTBLANK, I2VP(230), N_("Description"), 0, 0, sizeof(renameDesc)},
-/*2*/ { PD_STRING, renamePartno, "partno", PDO_NOPREF|PDO_DLGHORZ|PDO_DLGIGNORELABELWIDTH | PDO_NOTBLANK, I2VP(100), N_("#"), 0, 0, sizeof(renamePartno)} };
+ /*0*/ { PD_STRING, renameManuf, "manuf", PDO_NOPREF | PDO_NOTBLANK, I2VP(350), N_("Manufacturer"), 0, 0, sizeof(renameManuf)},
+ /*1*/ { PD_STRING, renameDesc, "desc", PDO_NOPREF | PDO_NOTBLANK, I2VP(230), N_("Description"), 0, 0, sizeof(renameDesc)},
+ /*2*/ { PD_STRING, renamePartno, "partno", PDO_NOPREF|PDO_DLGHORZ|PDO_DLGIGNORELABELWIDTH | PDO_NOTBLANK, I2VP(100), N_("#"), 0, 0, sizeof(renamePartno)}
+};
static paramGroup_t renamePG = { "rename", 0, renamePLs, COUNT( renamePLs ) };
EXPORT BOOL_T CompoundCustomSave(
- FILE * f )
+ FILE * f )
{
int inx;
turnoutInfo_t * to;
@@ -462,19 +497,24 @@ EXPORT BOOL_T CompoundCustomSave(
for ( inx=0; inx<turnoutInfo_da.cnt; inx++ ) {
to = turnoutInfo(inx);
if (to->paramFileIndex == PARAM_CUSTOM && to->segCnt > 0) {
- rc &= fprintf( f, "TURNOUT %s \"%s\"\n", GetScaleName(to->scaleInx), PutTitle(to->title) )>0;
- if ( to->customInfo )
+ rc &= fprintf( f, "TURNOUT %s \"%s\"\n", GetScaleName(to->scaleInx),
+ PutTitle(to->title) )>0;
+ if ( to->customInfo ) {
rc &= fprintf( f, "\tU %s\n",to->customInfo )>0;
- rc &= WriteCompoundPathsEndPtsSegs( f, GetParamPaths( to ), to->segCnt, to->segs,
- to->endCnt, to->endPt );
+ }
+ rc &= WriteCompoundPathsEndPtsSegs( f, GetParamPaths( to ), to->segCnt,
+ to->segs,
+ to->endCnt, to->endPt );
}
}
for ( inx=0; inx<structureInfo_da.cnt; inx++ ) {
to = structureInfo(inx);
if (to->paramFileIndex == PARAM_CUSTOM && to->segCnt > 0) {
- rc &= fprintf( f, "STRUCTURE %s \"%s\"\n", GetScaleName(to->scaleInx), PutTitle(to->title) )>0;
- if ( to->customInfo )
+ rc &= fprintf( f, "STRUCTURE %s \"%s\"\n", GetScaleName(to->scaleInx),
+ PutTitle(to->title) )>0;
+ if ( to->customInfo ) {
rc &= fprintf( f, "\tU %s\n",to->customInfo )>0;
+ }
rc &= WriteSegs( f, to->segCnt, to->segs );
}
}
@@ -485,8 +525,9 @@ EXPORT BOOL_T CompoundCustomSave(
static void RenameOk( void * junk )
{
sprintf( message, "%s\t%s\t%s", renameManuf, renameDesc, renamePartno );
- if ( renameTo->title )
+ if ( renameTo->title ) {
MyFree( renameTo->title );
+ }
renameTo->title = MyStrdup( message );
wHide( renamePG.win );
DoChangeNotification( CHANGE_PARAMS );
@@ -494,8 +535,8 @@ static void RenameOk( void * junk )
static int CompoundCustMgmProc(
- int cmd,
- void * data )
+ int cmd,
+ void * data )
{
turnoutInfo_t * to = (turnoutInfo_t*)data;
turnoutInfo_t * to2=NULL;
@@ -506,19 +547,24 @@ static int CompoundCustMgmProc(
switch ( cmd ) {
case CUSTMGM_DO_COPYTO:
- if ( to->segCnt <= 0 )
+ if ( to->segCnt <= 0 ) {
return TRUE;
+ }
if ( to->endCnt ) {
- rc &= fprintf( customMgmF, "TURNOUT %s \"%s\"\n", GetScaleName(to->scaleInx), PutTitle(to->title) )>0;
- if ( to->customInfo )
+ rc &= fprintf( customMgmF, "TURNOUT %s \"%s\"\n", GetScaleName(to->scaleInx),
+ PutTitle(to->title) )>0;
+ if ( to->customInfo ) {
rc &= fprintf( customMgmF, "\tU %s\n",to->customInfo )>0;
- rc &= WriteCompoundPathsEndPtsSegs( customMgmF,
- GetParamPaths( to ), to->segCnt, to->segs,
- to->endCnt, to->endPt );
+ }
+ rc &= WriteCompoundPathsEndPtsSegs( customMgmF,
+ GetParamPaths( to ), to->segCnt, to->segs,
+ to->endCnt, to->endPt );
} else {
- rc &= fprintf( customMgmF, "STRUCTURE %s \"%s\"\n", GetScaleName(to->scaleInx), PutTitle(to->title) )>0;
- if ( to->customInfo )
+ rc &= fprintf( customMgmF, "STRUCTURE %s \"%s\"\n", GetScaleName(to->scaleInx),
+ PutTitle(to->title) )>0;
+ if ( to->customInfo ) {
rc &= fprintf( customMgmF, "\tU %s\n",to->customInfo )>0;
+ }
rc &= WriteSegs( customMgmF, to->segCnt, to->segs );
}
return rc;
@@ -533,23 +579,24 @@ static int CompoundCustMgmProc(
strncpy( renamePartno, nP, nL ); renamePartno[nL] = 0;
if ( !renamePG.win ) {
ParamRegister( &renamePG );
- ParamCreateDialog( &renamePG, MakeWindowTitle(_("Rename Object")), _("Ok"), RenameOk, wHide, TRUE, NULL, F_BLOCK, NULL );
+ ParamCreateDialog( &renamePG, MakeWindowTitle(_("Rename Object")), _("Ok"),
+ RenameOk, wHide, TRUE, NULL, F_BLOCK, NULL );
}
ParamLoadControls( &renamePG );
wShow( renamePG.win );
} else {
- for (inx=0; inx<turnoutInfo_da.cnt && to!=turnoutInfo(inx); inx++);
- if ( inx > 0 &&
- turnoutInfo(inx-1)->customInfo &&
- strcmp( to->customInfo, turnoutInfo(inx-1)->customInfo ) == 0 ) {
- to2 = to;
- to = turnoutInfo(inx-1);
- } else if ( inx < turnoutInfo_da.cnt-1 &&
- turnoutInfo(inx+1)->customInfo &&
- strcmp( to->customInfo, turnoutInfo(inx+1)->customInfo ) == 0 ) {
- to2 = turnoutInfo(inx+1);
- }
- EditCustomTurnout( to, to2 );
+ for (inx=0; inx<turnoutInfo_da.cnt && to!=turnoutInfo(inx); inx++);
+ if ( inx > 0 &&
+ turnoutInfo(inx-1)->customInfo &&
+ strcmp( to->customInfo, turnoutInfo(inx-1)->customInfo ) == 0 ) {
+ to2 = to;
+ to = turnoutInfo(inx-1);
+ } else if ( inx < turnoutInfo_da.cnt-1 &&
+ turnoutInfo(inx+1)->customInfo &&
+ strcmp( to->customInfo, turnoutInfo(inx+1)->customInfo ) == 0 ) {
+ to2 = turnoutInfo(inx+1);
+ }
+ EditCustomTurnout( to, to2 );
}
return TRUE;
case CUSTMGM_CAN_DELETE:
@@ -559,15 +606,16 @@ static int CompoundCustMgmProc(
return TRUE;
case CUSTMGM_GET_TITLE:
ParseCompoundTitle( to->title, &mP, &mL, &pP, &pL, &nP, &nL );
- sprintf( message, "\t%.*s\t%s\t%.*s\t%.*s", mL, mP, GetScaleName(to->scaleInx), nL, nP, pL, pP );
+ sprintf( message, "\t%.*s\t%s\t%.*s\t%.*s", mL, mP, GetScaleName(to->scaleInx),
+ nL, nP, pL, pP );
return TRUE;
}
return FALSE;
}
-#include "bitmaps/turnout.xpm"
-#include "bitmaps/building.xpm"
+#include "bitmaps/turnout.xpm3"
+#include "bitmaps/building.xpm3"
EXPORT void CompoundCustMgmLoad( void )
{
@@ -576,10 +624,12 @@ EXPORT void CompoundCustMgmLoad( void )
static wIcon_p turnoutI = NULL;
static wIcon_p structI = NULL;
- if ( turnoutI == NULL )
- turnoutI = wIconCreatePixMap( turnout_xpm[0] );
- if ( structI == NULL )
- structI = wIconCreatePixMap( building_xpm[0] );
+ if ( turnoutI == NULL ) {
+ turnoutI = wIconCreatePixMap( turnout_xpm3[0] );
+ }
+ if ( structI == NULL ) {
+ structI = wIconCreatePixMap( building_xpm3[0] );
+ }
for ( inx=0; inx<turnoutInfo_da.cnt; inx++ ) {
to = turnoutInfo(inx);
@@ -602,13 +652,15 @@ EXPORT void CompoundCustMgmLoad( void )
*/
wIndex_t FindListItemByContext(
- wList_p listP,
- void * context )
+ wList_p listP,
+ void * context )
{
- if ( listP == NULL )
+ if ( listP == NULL ) {
return -1;
- if ( context == NULL )
+ }
+ if ( context == NULL ) {
return -1;
+ }
for ( wIndex_t inx = 0; inx < wListGetCount( listP ); ++inx ) {
void * itemContext = wListGetItemContext( listP, inx );
if ( itemContext != NULL ) {
diff --git a/app/bin/dcontmgm.c b/app/bin/dcontmgm.c
index 1ffd067..d9df025 100644
--- a/app/bin/dcontmgm.c
+++ b/app/bin/dcontmgm.c
@@ -4,36 +4,36 @@
/* -*- C -*- ****************************************************************
*
- * System :
- * Module :
+ * System :
+ * Module :
* Created By : Robert Heller
* Created : Thu Jan 5 10:52:12 2017
* Last Modified : <170411.1447>
*
* Description
- *
- * Control Element Mangment. Control Elements are elements related to
+ *
+ * Control Element Mangment. Control Elements are elements related to
* layout control: Blocks (occupency detection), Switchmotors (actuators
* to "throw" turnouts), and (eventually) signals. These elements don't
* relate to "physical" items on the layout, but instead refer to the
* elements used by the layout control software. These elements contain
* "scripts", which are really just textual items that provide information
- * for the layout control software and provide a bridge between physical
- * layout elements (like tracks or turnouts) and the layout control
+ * for the layout control software and provide a bridge between physical
+ * layout elements (like tracks or turnouts) and the layout control
* software. These textual items could be actual software code or could
- * be LCC Events (for I/O device elements on a LCC network) or DCC
+ * be LCC Events (for I/O device elements on a LCC network) or DCC
* addresses for stationary decoders, etc. XTrkCAD does not impose any
* sort of syntax or format -- that is left up to other software that might
* load and parse the XTrkCAD layout file. All the XTrkCAD does is provide
* a unified place for this information to be stored and to provide a
* mapping (association) between this control information and the layout
* itself.
- *
+ *
*
* Notes
*
* History
- *
+ *
****************************************************************************
*
* Copyright (C) 2017 Robert Heller D/B/A Deepwoods Software
@@ -52,13 +52,13 @@
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
*
- *
*
****************************************************************************/
-static const char rcsid[] = "@(#) : $Id$";
+//static const char rcsid[] = "@(#) : $Id$";
#include "cundo.h"
#include "custom.h"
@@ -77,7 +77,8 @@ static void ControlDelete( void * action );
static void ControlDone( void * action );
static wWinPix_t controlListWidths[] = { 18, 100, 150 };
static const char * controlListTitles[] = { "", N_("Name"),
- N_("Tracks") };
+ N_("Tracks")
+ };
static paramListData_t controlListData = { 10, 400, 3, controlListWidths, controlListTitles };
static paramData_t controlPLs[] = {
#define I_CONTROLLIST (0)
@@ -86,45 +87,45 @@ static paramData_t controlPLs[] = {
#define I_CONTROLEDIT (1)
{ PD_BUTTON, ControlEdit, "edit", PDO_DLGCMDBUTTON, NULL, N_("Edit") },
#define I_CONTROLDEL (2)
- { PD_BUTTON, ControlDelete, "delete", 0, NULL, N_("Delete") },
- } ;
+ { PD_BUTTON, ControlDelete, "delete", 0, NULL, N_("Delete") },
+} ;
static paramGroup_t controlPG = { "contmgm", 0, controlPLs, COUNT( controlPLs ) };
typedef struct {
- contMgmCallBack_p proc;
- void * data;
- wIcon_p icon;
- } contMgmContext_t, *contMgmContext_p;
+ contMgmCallBack_p proc;
+ void * data;
+ wIcon_p icon;
+} contMgmContext_t, *contMgmContext_p;
static BOOL_T AnyHILIGHT = FALSE;
static void ControlDlgUpdate(
- paramGroup_p pg,
- int inx,
- void *valueP )
+ paramGroup_p pg,
+ int inx,
+ void *valueP )
{
- contMgmContext_p context = NULL;
- wIndex_t selcnt = wListGetSelectedCount( (wList_p)controlPLs[0].control );
- wIndex_t linx, lcnt;
-
- if ( inx != I_CONTROLLIST ) return;
- lcnt = wListGetCount( (wList_p)controlPLs[0].control );
- AnyHILIGHT = FALSE;
- for (linx=0;
- linx < lcnt;
- linx++ ) {
- if (wListGetItemSelected( (wList_p)controlPLs[0].control, linx ) == TRUE) {
- context = (contMgmContext_p)wListGetItemContext( controlSelL, linx );
- context->proc( CONTMGM_DO_HILIGHT, context->data );
- AnyHILIGHT = TRUE;
- } else {
- context = (contMgmContext_p)wListGetItemContext( controlSelL, linx );
- context->proc( CONTMGM_UN_HILIGHT, context->data );
- }
- }
- ParamControlActive( &controlPG, I_CONTROLEDIT, selcnt>0 );
- ParamControlActive( &controlPG, I_CONTROLDEL, selcnt>0 );
+ contMgmContext_p context = NULL;
+ wIndex_t selcnt = wListGetSelectedCount( (wList_p)controlPLs[0].control );
+ wIndex_t linx, lcnt;
+
+ if ( inx != I_CONTROLLIST ) { return; }
+ lcnt = wListGetCount( (wList_p)controlPLs[0].control );
+ AnyHILIGHT = FALSE;
+ for (linx=0;
+ linx < lcnt;
+ linx++ ) {
+ if (wListGetItemSelected( (wList_p)controlPLs[0].control, linx ) == TRUE) {
+ context = (contMgmContext_p)wListGetItemContext( controlSelL, linx );
+ context->proc( CONTMGM_DO_HILIGHT, context->data );
+ AnyHILIGHT = TRUE;
+ } else {
+ context = (contMgmContext_p)wListGetItemContext( controlSelL, linx );
+ context->proc( CONTMGM_UN_HILIGHT, context->data );
+ }
+ }
+ ParamControlActive( &controlPG, I_CONTROLEDIT, selcnt>0 );
+ ParamControlActive( &controlPG, I_CONTROLDEL, selcnt>0 );
}
static void ControlEdit( void * action )
@@ -133,17 +134,20 @@ static void ControlEdit( void * action )
wIndex_t selcnt = wListGetSelectedCount( (wList_p)controlPLs[0].control );
wIndex_t inx, cnt;
- if ( selcnt != 1 )
+ if ( selcnt != 1 ) {
return;
+ }
cnt = wListGetCount( (wList_p)controlPLs[0].control );
for ( inx=0;
- inx<cnt && wListGetItemSelected( (wList_p)controlPLs[0].control, inx ) != TRUE;
- inx++ );
- if ( inx >= cnt )
+ inx<cnt && wListGetItemSelected( (wList_p)controlPLs[0].control, inx ) != TRUE;
+ inx++ );
+ if ( inx >= cnt ) {
return;
+ }
context = (contMgmContext_p)wListGetItemContext( controlSelL, inx );
- if ( context == NULL )
+ if ( context == NULL ) {
return;
+ }
context->proc( CONTMGM_DO_EDIT, context->data );
context->proc( CONTMGM_GET_TITLE, context->data );
wListSetValues( controlSelL, inx, message, context->icon, context );
@@ -156,15 +160,20 @@ static void ControlDelete( void * action )
wIndex_t inx, cnt;
contMgmContext_p context = NULL;
- if ( selcnt <= 0 )
+ if ( selcnt <= 0 ) {
return;
- if ( (!NoticeMessage2( 1, _("Are you sure you want to delete the %d control element(s)"), _("Yes"), _("No"), selcnt ) ) )
+ }
+ if ( (!NoticeMessage2( 1,
+ _("Are you sure you want to delete the %d control element(s)"), _("Yes"),
+ _("No"), selcnt ) ) ) {
return;
- cnt = wListGetCount( (wList_p)controlPLs[0].control );
- UndoStart( _("Control Elements"), "delete" );
+ }
+ cnt = wListGetCount( (wList_p)controlPLs[0].control );
+ UndoStart( _("Control Elements"), "delete" );
for ( inx=0; inx<cnt; inx++ ) {
- if ( !wListGetItemSelected( (wList_p)controlPLs[0].control, inx ) )
+ if ( !wListGetItemSelected( (wList_p)controlPLs[0].control, inx ) ) {
continue;
+ }
context = (contMgmContext_p)wListGetItemContext( controlSelL, inx );
context->proc( CONTMGM_DO_DELETE, context->data );
MyFree( context );
@@ -172,32 +181,32 @@ static void ControlDelete( void * action )
inx--;
cnt--;
}
- UndoEnd();
+ UndoEnd();
DoChangeNotification( CHANGE_PARAMS );
}
static void ControlDone( void * action )
{
- contMgmContext_p context = NULL;
- wIndex_t linx, lcnt;
-
- if (AnyHILIGHT) {
- lcnt = wListGetCount( (wList_p)controlPLs[0].control );
- for (linx=0;
- linx < lcnt;
- linx++ ) {
- context = (contMgmContext_p)wListGetItemContext( controlSelL, linx );
- context->proc( CONTMGM_UN_HILIGHT, context->data );
- }
- }
- wHide( controlPG.win );
+ contMgmContext_p context = NULL;
+ wIndex_t linx, lcnt;
+
+ if (AnyHILIGHT) {
+ lcnt = wListGetCount( (wList_p)controlPLs[0].control );
+ for (linx=0;
+ linx < lcnt;
+ linx++ ) {
+ context = (contMgmContext_p)wListGetItemContext( controlSelL, linx );
+ context->proc( CONTMGM_UN_HILIGHT, context->data );
+ }
+ }
+ wHide( controlPG.win );
}
EXPORT void ContMgmLoad(
- wIcon_p icon,
- contMgmCallBack_p proc,
- void * data )
+ wIcon_p icon,
+ contMgmCallBack_p proc,
+ void * data )
{
contMgmContext_p context;
context = MyMalloc( sizeof *context );
@@ -214,32 +223,40 @@ static void LoadControlMgmList( void )
wIndex_t curInx, cnt=0;
long tempL;
contMgmContext_p context;
+#ifdef LATER
contMgmContext_t curContext;
+#endif
curInx = wListGetIndex( controlSelL );
+#ifdef LATER
curContext.proc = NULL;
curContext.data = NULL;
curContext.icon = NULL;
+#endif
if ( curInx >= 0 ) {
context = (contMgmContext_p)wListGetItemContext( controlSelL, curInx );
- if ( context != NULL )
+#ifdef LATER
+ if ( context != NULL ) {
curContext = *context;
+ }
+#endif
}
cnt = wListGetCount( controlSelL );
for ( curInx=0; curInx<cnt; curInx++ ) {
context = (contMgmContext_p)wListGetItemContext( controlSelL, curInx );
- if ( context )
+ if ( context ) {
MyFree( context );
+ }
}
curInx = wListGetIndex( controlSelL );
wControlShow( (wControl_p)controlSelL, FALSE );
wListClear( controlSelL );
BlockMgmLoad();
- SwitchmotorMgmLoad();
- SignalMgmLoad();
- ControlMgmLoad();
- SensorMgmLoad();
+ SwitchmotorMgmLoad();
+ SignalMgmLoad();
+ ControlMgmLoad();
+ SensorMgmLoad();
#ifdef LATER
curInx = 0;
@@ -248,13 +265,15 @@ static void LoadControlMgmList( void )
for ( curInx=0; curInx<cnt; curInx++ ) {
context = (contMgmContext_p)wListGetItemContext( controlSelL, curInx );
if ( context &&
- context->proc == curContext.proc &&
- context->data == curContext.data )
+ context->proc == curContext.proc &&
+ context->data == curContext.data ) {
break;
+ }
}
}
- if ( curInx >= cnt )
+ if ( curInx >= cnt ) {
curInx = (cnt>0?0:-1);
+ }
wListSetIndex( controlSelL, curInx );
tempL = curInx;
@@ -273,8 +292,9 @@ static void ContMgmChange( long changes )
}
}
if ((changes&CHANGE_PARAMS) == 0 ||
- controlPG.win == NULL || !wWinIsVisible(controlPG.win) )
+ controlPG.win == NULL || !wWinIsVisible(controlPG.win) ) {
return;
+ }
LoadControlMgmList();
}
@@ -283,22 +303,24 @@ static void ContMgmChange( long changes )
static void DoControlMgr( void * junk )
{
- if (controlPG.win == NULL) {
- ParamCreateDialog( &controlPG, MakeWindowTitle(_("Manage Layout Control Elements")), _("Done"), ControlDone, wHide, TRUE, NULL, F_RESIZE|F_RECALLSIZE|F_BLOCK, ControlDlgUpdate );
- } else {
- wListClear( controlSelL );
- }
- /*ParamLoadControls( &controlPG );*/
- /*ParamGroupRecord( &controlPG );*/
- LoadControlMgmList();
- wShow( controlPG.win );
+ if (controlPG.win == NULL) {
+ ParamCreateDialog( &controlPG,
+ MakeWindowTitle(_("Manage Layout Control Elements")), _("Done"), ControlDone,
+ wHide, TRUE, NULL, F_RESIZE|F_RECALLSIZE|F_BLOCK, ControlDlgUpdate );
+ } else {
+ wListClear( controlSelL );
+ }
+ /*ParamLoadControls( &controlPG );*/
+ /*ParamGroupRecord( &controlPG );*/
+ LoadControlMgmList();
+ wShow( controlPG.win );
}
EXPORT addButtonCallBack_t ControlMgrInit( void )
{
- ParamRegister( &controlPG );
- /*ParamRegister( &contMgmContentsPG );*/
- RegisterChangeNotification( ContMgmChange );
- return &DoControlMgr;
+ ParamRegister( &controlPG );
+ /*ParamRegister( &contMgmContentsPG );*/
+ RegisterChangeNotification( ContMgmChange );
+ return &DoControlMgr;
}
diff --git a/app/bin/dcustmgm.c b/app/bin/dcustmgm.c
index 73de62c..871787f 100644
--- a/app/bin/dcustmgm.c
+++ b/app/bin/dcustmgm.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 "custom.h"
@@ -27,6 +27,7 @@
#include "track.h"
#include "include/paramfilelist.h"
#include "common-ui.h"
+#include "ctrain.h"
#ifdef UTFCONVERT
#include "include/utf8convert.h"
#endif
@@ -42,55 +43,59 @@ static wIndex_t selectedType;
static wWinPix_t customListWidths[] = { 18, 100, 30, 80, 220 };
static const char * customListTitles[] = { "", N_("Manufacturer"),
- N_("Scale"), N_("Part No"), N_("Description") };
+ N_("Scale"), N_("Part No"), N_("Description")
+ };
static paramListData_t customListData = { 10, 400, 5, customListWidths, customListTitles };
static paramData_t customPLs[] = {
#define I_CUSTOMLIST (0)
#define customSelL ((wList_p)customPLs[I_CUSTOMLIST].control)
- { PD_LIST, NULL, "inx", PDO_DLGRESETMARGIN|PDO_DLGRESIZE|PDO_DLGBOXEND, &customListData, NULL, BL_MANY },
+ { PD_LIST, NULL, "inx", PDO_DLGRESETMARGIN|PDO_DLGRESIZE|PDO_DLGBOXEND, &customListData, NULL, BL_MANY },
#define I_CUSTOMNEWTYPE (1)
- { PD_DROPLIST, &selectedType, "newtype", PDO_DLGRESETMARGIN | PDO_LISTINDEX, I2VP(150), N_("Create a new ") },
-#define I_CUSTOMNEW (2)
- { PD_BUTTON, CustomNewCar, "newcar", PDO_DLGHORZ| PDO_DLGBOXEND, NULL, N_("Go") },
+ { PD_DROPLIST, &selectedType, "newtype", PDO_DLGRESETMARGIN | PDO_LISTINDEX, I2VP(150), N_("Create a new ") },
+#define I_CUSTOMNEW (2)
+ { PD_BUTTON, CustomNewCar, "newcar", PDO_DLGHORZ| PDO_DLGBOXEND, NULL, N_("Go") },
#define I_CUSTOMEDIT (3)
{ PD_BUTTON, CustomEdit, "edit", PDO_DLGCMDBUTTON, NULL, N_("Edit") },
#define I_CUSTOMDEL (4)
{ PD_BUTTON, CustomDelete, "delete", 0, NULL, N_("Delete") },
#define I_CUSTOMCOPYTO (5)
{ PD_BUTTON, CustomExport, "export", 0, NULL, N_("Move To") },
- } ;
+} ;
static paramGroup_t customPG = { "custmgm", 0, customPLs, COUNT( customPLs ) };
typedef struct {
- custMgmCallBack_p proc;
- void * data;
- wIcon_p icon;
- } custMgmContext_t, *custMgmContext_p;
+ custMgmCallBack_p proc;
+ void * data;
+ wIcon_p icon;
+} custMgmContext_t, *custMgmContext_p;
static void CustomDlgUpdate(
- paramGroup_p pg,
- int inx,
- void *valueP )
+ paramGroup_p pg,
+ int inx,
+ void *valueP )
{
custMgmContext_p context = NULL;
wIndex_t selcnt = wListGetSelectedCount( (wList_p)customPLs[0].control );
wIndex_t linx, lcnt;
- if ( inx == I_CUSTOMNEW ) {
- lcnt = wListGetCount( (wList_p)pg->paramPtr[I_CUSTOMNEWTYPE].control );
- }
-
- if ( inx != I_CUSTOMLIST ) return;
+ if ( inx == I_CUSTOMNEW ) {
+ lcnt = wListGetCount( (wList_p)pg->paramPtr[I_CUSTOMNEWTYPE].control );
+ }
+
+ if ( inx != I_CUSTOMLIST ) { return; }
if ( selcnt == 1 ) {
lcnt = wListGetCount( (wList_p)pg->paramPtr[inx].control );
for ( linx=0;
- linx<lcnt && wListGetItemSelected( (wList_p)customPLs[0].control, linx ) != TRUE;
- linx++ );
+ linx<lcnt && wListGetItemSelected( (wList_p)customPLs[0].control,
+ linx ) != TRUE;
+ linx++ );
if ( linx < lcnt ) {
- context = (custMgmContext_p)wListGetItemContext( (wList_p)pg->paramPtr[inx].control, linx );
- wButtonSetLabel( (wButton_p)customPLs[I_CUSTOMEDIT].control, context->proc( CUSTMGM_CAN_EDIT, context->data )?_("Edit"):_("Rename") );
+ context = (custMgmContext_p)wListGetItemContext( (wList_p)
+ pg->paramPtr[inx].control, linx );
+ wButtonSetLabel( (wButton_p)customPLs[I_CUSTOMEDIT].control,
+ context->proc( CUSTMGM_CAN_EDIT, context->data )?_("Edit"):_("Rename") );
ParamControlActive( &customPG, I_CUSTOMEDIT, TRUE );
} else {
ParamControlActive( &customPG, I_CUSTOMEDIT, FALSE );
@@ -109,17 +114,20 @@ static void CustomEdit( void * action )
wIndex_t selcnt = wListGetSelectedCount( (wList_p)customPLs[0].control );
wIndex_t inx, cnt;
- if ( selcnt != 1 )
+ if ( selcnt != 1 ) {
return;
+ }
cnt = wListGetCount( (wList_p)customPLs[0].control );
for ( inx=0;
- inx<cnt && wListGetItemSelected( (wList_p)customPLs[0].control, inx ) != TRUE;
- inx++ );
- if ( inx >= cnt )
+ inx<cnt && wListGetItemSelected( (wList_p)customPLs[0].control, inx ) != TRUE;
+ inx++ );
+ if ( inx >= cnt ) {
return;
+ }
context = (custMgmContext_p)wListGetItemContext( customSelL, inx );
- if ( context == NULL )
+ if ( context == NULL ) {
return;
+ }
context->proc( CUSTMGM_DO_EDIT, context->data );
#ifdef OBSOLETE
context->proc( CUSTMGM_GET_TITLE, context->data );
@@ -130,16 +138,16 @@ static void CustomEdit( void * action )
static void CustomNewCar( void * action )
{
- switch(selectedType) {
- case 1: // car prototype
- CarDlgAddProto();
- break;
- case 0: // car part
- CarDlgAddDesc();
- break;
- default:
- break;
- }
+ switch(selectedType) {
+ case 1: // car prototype
+ CarDlgAddProto();
+ break;
+ case 0: // car part
+ CarDlgAddDesc();
+ break;
+ default:
+ break;
+ }
}
static void CustomDelete( void * action )
@@ -148,14 +156,18 @@ static void CustomDelete( void * action )
wIndex_t inx, cnt;
custMgmContext_p context = NULL;
- if ( selcnt <= 0 )
+ if ( selcnt <= 0 ) {
return;
- if ( (!NoticeMessage2( 1, MSG_CUSTMGM_DELETE_CONFIRM, _("Yes"), _("No"), selcnt ) ) )
+ }
+ if ( (!NoticeMessage2( 1, MSG_CUSTMGM_DELETE_CONFIRM, _("Yes"), _("No"),
+ selcnt ) ) ) {
return;
+ }
cnt = wListGetCount( (wList_p)customPLs[0].control );
for ( inx=0; inx<cnt; inx++ ) {
- if ( !wListGetItemSelected( (wList_p)customPLs[0].control, inx ) )
+ if ( !wListGetItemSelected( (wList_p)customPLs[0].control, inx ) ) {
continue;
+ }
context = (custMgmContext_p)wListGetItemContext( customSelL, inx );
context->proc( CUSTMGM_DO_DELETE, context->data );
MyFree( context );
@@ -171,7 +183,8 @@ EXPORT FILE * customMgmF;
static char custMgmContentsStr[STR_SIZE];
static BOOL_T custMgmProceed;
static paramData_t custMgmContentsPLs[] = {
- { PD_STRING, custMgmContentsStr, "label", PDO_NOTBLANK, I2VP(400), N_("Label"), 0, 0, sizeof(custMgmContentsStr)} };
+ { PD_STRING, custMgmContentsStr, "label", PDO_NOTBLANK, I2VP(400), N_("Label"), 0, 0, sizeof(custMgmContentsStr)}
+};
static paramGroup_t custMgmContentsPG = { "contents", 0, custMgmContentsPLs, COUNT( custMgmContentsPLs ) };
static void CustMgmContentsOk( void * junk )
@@ -182,21 +195,22 @@ static void CustMgmContentsOk( void * junk )
static int CustomDoExport(
- int files,
- char ** fileName,
- void * data )
+ int files,
+ char ** fileName,
+ void * data )
{
int rc;
wIndex_t selcnt = wListGetSelectedCount( (wList_p)customPLs[0].control );
wIndex_t inx, cnt;
custMgmContext_p context = NULL;
- assert( fileName != NULL );
- assert( files == 1 );
+ CHECK( fileName != NULL );
+ CHECK( files == 1 );
- if ( selcnt <= 0 )
+ if ( selcnt <= 0 ) {
return FALSE;
-
+ }
+
SetCurrentPath( PARAMETERPATHKEY, fileName[ 0 ] );
rc = access( fileName[ 0 ], F_OK );
if ( rc != -1 ) {
@@ -208,13 +222,15 @@ static int CustomDoExport(
custMgmProceed = TRUE;
} else {
if ( custMgmContentsPG.win == NULL ) {
- ParamCreateDialog( &custMgmContentsPG, MakeWindowTitle(_("Contents Label")), _("Ok"), CustMgmContentsOk, wHide, TRUE, NULL, F_BLOCK, NULL );
+ ParamCreateDialog( &custMgmContentsPG, MakeWindowTitle(_("Contents Label")),
+ _("Ok"), CustMgmContentsOk, wHide, TRUE, NULL, F_BLOCK, NULL );
}
custMgmProceed = FALSE;
wShow( custMgmContentsPG.win );
}
- if ( !custMgmProceed )
+ if ( !custMgmProceed ) {
return FALSE;
+ }
customMgmF = fopen( fileName[ 0 ], "a" );
if ( customMgmF == NULL ) {
NoticeMessage( MSG_CUSTMGM_CANT_WRITE, _("Ok"), NULL, fileName[ 0 ] );
@@ -223,26 +239,27 @@ static int CustomDoExport(
SetCLocale();
- if (rc == -1)
- {
- #ifdef UTFCONVERT
- char *contents = MyStrdup(custMgmContentsStr);
- contents = Convert2UTF8(contents);
- fprintf(customMgmF, "CONTENTS %s\n", contents);
+ if (rc == -1) {
+#ifdef UTFCONVERT
+ char *contents = MyStrdup(custMgmContentsStr);
+ contents = Convert2UTF8(contents);
+ fprintf(customMgmF, "CONTENTS %s\n", contents);
MyFree(contents);
- #else
- fprintf(customMgmF, "CONTENTS %s\n", custMgmContentsStr);
- #endif // UTFCONVERT
+#else
+ fprintf(customMgmF, "CONTENTS %s\n", custMgmContentsStr);
+#endif // UTFCONVERT
}
cnt = wListGetCount( (wList_p)customPLs[0].control );
for ( inx=0; inx<cnt; inx++ ) {
- if ( !wListGetItemSelected( (wList_p)customPLs[0].control, inx ) )
+ if ( !wListGetItemSelected( (wList_p)customPLs[0].control, inx ) ) {
continue;
+ }
context = (custMgmContext_p)wListGetItemContext( customSelL, inx );
- if ( context == NULL ) continue;
+ if ( context == NULL ) { continue; }
if (!context->proc( CUSTMGM_DO_COPYTO, context->data )) {
- NoticeMessage( MSG_WRITE_FAILURE, _("Ok"), NULL, strerror(errno), fileName[ 0 ] );
+ NoticeMessage( MSG_WRITE_FAILURE, _("Ok"), NULL, strerror(errno),
+ fileName[ 0 ] );
fclose( customMgmF );
SetUserLocale();
return FALSE;
@@ -265,7 +282,7 @@ static void CustomExport( void * junk )
{
if ( customMgmExport_fs == NULL )
customMgmExport_fs = wFilSelCreate( mainW, FS_UPDATE, 0, _("Move To XTP"),
- _("Parameter File (*.xtp)|*.xtp"), CustomDoExport, NULL );
+ _("Parameter File (*.xtp)|*.xtp"), CustomDoExport, NULL );
wFilSelect( customMgmExport_fs, GetCurrentPath(CUSTOMPATHKEY));
}
@@ -288,9 +305,9 @@ static void CustomDone( void * action )
EXPORT void CustMgmLoad(
- wIcon_p icon,
- custMgmCallBack_p proc,
- void * data )
+ wIcon_p icon,
+ custMgmCallBack_p proc,
+ void * data )
{
custMgmContext_p context;
context = MyMalloc( sizeof *context );
@@ -307,22 +324,30 @@ static void LoadCustomMgmList( void )
wIndex_t curInx, cnt=0;
long tempL;
custMgmContext_p context;
+#ifdef LATER
custMgmContext_t curContext;
+#endif
curInx = wListGetIndex( customSelL );
+#ifdef LATER
curContext.proc = NULL;
curContext.data = NULL;
curContext.icon = NULL;
+#endif
if ( curInx >= 0 ) {
context = (custMgmContext_p)wListGetItemContext( customSelL, curInx );
- if ( context != NULL )
+#ifdef LATER
+ if ( context != NULL ) {
curContext = *context;
+ }
+#endif
}
cnt = wListGetCount( customSelL );
for ( curInx=0; curInx<cnt; curInx++ ) {
context = (custMgmContext_p)wListGetItemContext( customSelL, curInx );
- if ( context )
+ if ( context ) {
MyFree( context );
+ }
}
curInx = wListGetIndex( customSelL );
wControlShow( (wControl_p)customSelL, FALSE );
@@ -338,13 +363,15 @@ static void LoadCustomMgmList( void )
for ( curInx=0; curInx<cnt; curInx++ ) {
context = (custMgmContext_p)wListGetItemContext( customSelL, curInx );
if ( context &&
- context->proc == curContext.proc &&
- context->data == curContext.data )
+ context->proc == curContext.proc &&
+ context->data == curContext.data ) {
break;
+ }
}
}
- if ( curInx >= cnt )
+ if ( curInx >= cnt ) {
curInx = (cnt>0?0:-1);
+ }
wListSetIndex( customSelL, curInx );
tempL = curInx;
@@ -363,8 +390,9 @@ static void CustMgmChange( long changes )
}
}
if ((changes&CHANGE_PARAMS) == 0 ||
- customPG.win == NULL || !wWinIsVisible(customPG.win) )
+ customPG.win == NULL || !wWinIsVisible(customPG.win) ) {
return;
+ }
LoadCustomMgmList();
}
@@ -372,16 +400,19 @@ static void CustMgmChange( long changes )
static void DoCustomMgr( void * junk )
{
- int i = 0;
-
+ int i = 0;
+
if (customPG.win == NULL) {
- ParamCreateDialog( &customPG, MakeWindowTitle(_("Manage custom designed parts")), _("Done"), CustomDone, wHide, TRUE, NULL, F_RESIZE|F_RECALLSIZE|F_BLOCK, CustomDlgUpdate );
- while(customTypes[ i ] != NULL) {
- wListAddValue( ((wList_p)customPLs[I_CUSTOMNEWTYPE].control), customTypes[ i++ ], NULL, NULL );
- }
- selectedType = 0;
- wListSetIndex( ((wList_p)customPLs[I_CUSTOMNEWTYPE].control), selectedType);
-
+ ParamCreateDialog( &customPG,
+ MakeWindowTitle(_("Manage custom designed parts")), _("Done"), CustomDone,
+ wHide, TRUE, NULL, F_RESIZE|F_RECALLSIZE|F_BLOCK, CustomDlgUpdate );
+ while(customTypes[ i ] != NULL) {
+ wListAddValue( ((wList_p)customPLs[I_CUSTOMNEWTYPE].control),
+ customTypes[ i++ ], NULL, NULL );
+ }
+ selectedType = 0;
+ wListSetIndex( ((wList_p)customPLs[I_CUSTOMNEWTYPE].control), selectedType);
+
} else {
wListClear( customSelL );
}
@@ -395,7 +426,7 @@ static void DoCustomMgr( void * junk )
EXPORT addButtonCallBack_t CustomMgrInit( void )
{
- ParamRegister( &customPG );
+ ParamRegister( &customPG );
ParamRegister( &custMgmContentsPG );
RegisterChangeNotification( CustMgmChange );
return &DoCustomMgr;
diff --git a/app/bin/dease.c b/app/bin/dease.c
index 2b393db..4112c61 100644
--- a/app/bin/dease.c
+++ b/app/bin/dease.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 "common.h"
@@ -29,6 +29,10 @@
#include "param.h"
#include "track.h"
+EXPORT DIST_T easementVal = 0.0;
+EXPORT DIST_T easeR = 0.0;
+EXPORT DIST_T easeL = 0.0;
+
static wButton_p easementB;
static DIST_T easeX = 0.0;
@@ -74,13 +78,14 @@ static paramData_t easementPLs[] = {
{ PD_FLOAT, &easeX, "x", PDO_DIM|PDO_DLGHORZ, &r0_10, N_("X"), BO_READONLY },
{ PD_FLOAT, &easeL, "l", PDO_DIM|PDO_DLGHORZ, &r0_100, N_("L"), BO_READONLY },
#define I_EASESEL (4)
- { PD_RADIO, &easeM, "radio", PDO_DIM|PDO_NORECORD|PDO_NOPREF|PDO_DLGRESETMARGIN, easementChoiceLabels, NULL, BC_HORZ|BC_NONE } };
+ { PD_RADIO, &easeM, "radio", PDO_DIM|PDO_NORECORD|PDO_NOPREF|PDO_DLGRESETMARGIN, easementChoiceLabels, NULL, BC_HORZ|BC_NONE }
+};
static paramGroup_t easementPG = { "easement", PGO_RECORD, easementPLs, COUNT( easementPLs ) };
static void SetEasement(
- DIST_T val,
- void * update )
+ DIST_T val,
+ void * update )
/*
* Set transition-curve parameters (R and L).
*/
@@ -101,14 +106,15 @@ static void SetEasement(
val = 0;
bm = enone_bm;
} else if (val <= 1.0) {
- if (val < 0.21) val = 0.21; //Eliminate values that give negative radii
+ if (val < 0.21) { val = 0.21; } //Eliminate values that give negative radii
z = 1.0/val - 1.0;
easeR = Rvalues[1] - z * (Rvalues[1] - Rvalues[0]);
easeL = Lvalues[1] - z * (Lvalues[1] - Lvalues[0]);
- if (easeR != 0.0)
+ if (easeR != 0.0) {
easeX = easeL*easeL/(24*easeR);
- else
+ } else {
easeX = 0.0;
+ }
if (val == 1.0) {
selVal = 2;
bm = enormal_bm;
@@ -126,10 +132,11 @@ static void SetEasement(
z = val - 1.0;
easeR = Rvalues[1] + z * (Rvalues[2] - Rvalues[1]);
easeL = Lvalues[1] + z * (Lvalues[2] - Lvalues[1]);
- if (easeR != 0.0)
+ if (easeR != 0.0) {
easeX = easeL*easeL/(24*easeR);
- else
+ } else {
easeX = 0.0;
+ }
if (val == 2.0) {
selVal = 3;
bm = ebroad_bm;
@@ -154,8 +161,9 @@ static void SetEasement(
}
/*ParamChange( &easeValPD );*/
- if (easementB)
+ if (easementB) {
wButtonSetLabel( easementB, (char*)bm );
+ }
}
@@ -175,7 +183,7 @@ static void EasementCancel( void )
static void EasementSel(
- long arg )
+ long arg )
/*
* Handle transition-curve parameter selection.
*/
@@ -198,7 +206,7 @@ static void EasementSel(
val = -1.0;
break;
default:
- AbortProg( "easementSel: bad value %ld", arg);
+ CHECKMSG( FALSE, ( "easementSel: bad value %ld", arg) );
val = 0.0;
break;
}
@@ -207,9 +215,9 @@ static void EasementSel(
static void EasementDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
switch (inx) {
case I_EASEVAL:
@@ -223,21 +231,25 @@ static void EasementDlgUpdate(
static void LayoutEasementW(
- paramData_t * pd,
- int inx,
- wWinPix_t colX,
- wWinPix_t * x,
- wWinPix_t * y )
+ paramData_t * pd,
+ int inx,
+ wWinPix_t colX,
+ wWinPix_t * x,
+ wWinPix_t * y )
{
- if ( inx == 2 )
- wControlSetPos( easementPLs[0].control, *x, wControlGetPosY(easementPLs[0].control) );
+ if ( inx == 2 ) {
+ wControlSetPos( easementPLs[0].control, *x,
+ wControlGetPosY(easementPLs[0].control) );
+ }
}
static void DoEasement( void * unused )
{
if (easementW == NULL) {
- easementW = ParamCreateDialog( &easementPG, MakeWindowTitle(_("Easement")), _("Ok"), (paramActionOkProc)EasementOk, (paramActionCancelProc)EasementCancel, TRUE, LayoutEasementW, 0, EasementDlgUpdate );
+ easementW = ParamCreateDialog( &easementPG, MakeWindowTitle(_("Easement")),
+ _("Ok"), (paramActionOkProc)EasementOk, (paramActionCancelProc)EasementCancel,
+ TRUE, LayoutEasementW, 0, EasementDlgUpdate );
SetEasement( easementVal, I2VP(TRUE) );
}
oldEasementVal = easementVal;
@@ -258,31 +270,32 @@ static void EasementChange( long changes )
}
-#include "bitmaps/ease-none.xpm"
-#include "bitmaps/ease-sharp.xpm"
-#include "bitmaps/ease-gt-sharp.xpm"
-#include "bitmaps/ease-lt-sharp.xpm"
-#include "bitmaps/ease-normal.xpm"
-#include "bitmaps/ease-broad.xpm"
-#include "bitmaps/ease-gt-broad.xpm"
-#include "bitmaps/ease-lt-broad.xpm"
-#include "bitmaps/ease-cornu.xpm"
+#include "bitmaps/ease-none.xpm3"
+#include "bitmaps/ease-sharp.xpm3"
+#include "bitmaps/ease-gt-sharp.xpm3"
+#include "bitmaps/ease-lt-sharp.xpm3"
+#include "bitmaps/ease-normal.xpm3"
+#include "bitmaps/ease-broad.xpm3"
+#include "bitmaps/ease-gt-broad.xpm3"
+#include "bitmaps/ease-lt-broad.xpm3"
+#include "bitmaps/ease-cornu.xpm3"
EXPORT addButtonCallBack_t EasementInit( void )
{
ParamRegister( &easementPG );
- enone_bm = wIconCreatePixMap( ease_none_xpm[iconSize] );
- eltsharp_bm = wIconCreatePixMap( ease_ltsharp_xpm[iconSize] );
- esharp_bm = wIconCreatePixMap( ease_sharp_xpm[iconSize] );
- egtsharp_bm = wIconCreatePixMap( ease_gtsharp_xpm[iconSize] );
- enormal_bm = wIconCreatePixMap( ease_normal_xpm[iconSize] );
- eltbroad_bm = wIconCreatePixMap( ease_ltbroad_xpm[iconSize] );
- ebroad_bm = wIconCreatePixMap( ease_broad_xpm[iconSize] );
- egtbroad_bm = wIconCreatePixMap( ease_gtbroad_xpm[iconSize] );
- ecornu_bm = wIconCreatePixMap( ease_cornu_xpm[iconSize] );
- easementB = AddToolbarButton( "cmdEasement", enone_bm, 0, DoEasementRedir, NULL );
+ enone_bm = wIconCreatePixMap( ease_none_xpm3[iconSize] );
+ eltsharp_bm = wIconCreatePixMap( ease_lt_sharp_xpm3[iconSize] );
+ esharp_bm = wIconCreatePixMap( ease_sharp_xpm3[iconSize] );
+ egtsharp_bm = wIconCreatePixMap( ease_gt_sharp_xpm3[iconSize] );
+ enormal_bm = wIconCreatePixMap( ease_normal_xpm3[iconSize] );
+ eltbroad_bm = wIconCreatePixMap( ease_lt_broad_xpm3[iconSize] );
+ ebroad_bm = wIconCreatePixMap( ease_broad_xpm3[iconSize] );
+ egtbroad_bm = wIconCreatePixMap( ease_gt_broad_xpm3[iconSize] );
+ ecornu_bm = wIconCreatePixMap( ease_cornu_xpm3[iconSize] );
+ easementB = AddToolbarButton( "cmdEasement", enone_bm, 0, DoEasementRedir,
+ NULL );
RegisterChangeNotification( EasementChange );
return &DoEasement;
diff --git a/app/bin/denum.c b/app/bin/denum.c
index 9a83ffb..bb87601 100644
--- a/app/bin/denum.c
+++ b/app/bin/denum.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 "custom.h"
@@ -60,30 +60,31 @@ static paramGroup_t enumPG = { "enum", 0, enumPLs, COUNT( enumPLs ) };
static struct wFilSel_t * enumFile_fs;
-static int count_utf8_chars(char *s) {
+static int count_utf8_chars(char *s)
+{
int i = 0, j = 0;
while (s[i]) {
- if ((s[i] & 0xc0) != 0x80) j++;
+ if ((s[i] & 0xc0) != 0x80) { j++; }
i++;
}
return j;
}
static int DoEnumSave(
- int files,
- char **fileName,
- void * data )
+ int files,
+ char **fileName,
+ void * data )
{
- assert( fileName != NULL );
- assert( files == 1 );
-
+ CHECK( fileName != NULL );
+ CHECK( files == 1 );
+
SetCurrentPath( PARTLISTPATHKEY, fileName[0] );
return wTextSave( enumT, fileName[ 0 ] );
}
static void DoEnumOp(
- void * data )
+ void * data )
{
switch( VP2L(data) ) {
case ENUMOP_SAVE:
@@ -100,11 +101,11 @@ static void DoEnumOp(
static void EnumDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
- if ( inx != I_ENUMLISTPRICE && inx != I_ENUMLISTINDEXES) return;
+ if ( inx != I_ENUMLISTPRICE && inx != I_ENUMLISTINDEXES) { return; }
EnumerateTracks( NULL );
}
@@ -113,10 +114,10 @@ int enumerateMaxDescLen;
static FLOAT_T enumerateTotal;
void EnumerateList(
- long count,
- FLOAT_T price,
- char * desc,
- char * indexes )
+ long count,
+ FLOAT_T price,
+ char * desc,
+ char * indexes )
{
char * cp;
size_t len;
@@ -124,7 +125,7 @@ void EnumerateList(
if (enableListPrices) {
cp = message + strlen( message )-1;
len = enumerateMaxDescLen-strlen(desc);
- if (len<0) len = 0;
+ if (len<0) { len = 0; }
memset( cp, ' ', len );
cp += len;
if (price > 0.0) {
@@ -134,8 +135,9 @@ void EnumerateList(
sprintf( cp, " | %-*s |\n", (int) max( 7, count_utf8_chars( _("Each"))), " " );
}
}
- if (enableListIndexes && indexes)
- sprintf( message, "%s%s -> %s \n", message, N_("Indexes"), indexes);
+ if (enableListIndexes && indexes) {
+ sprintf( &message[strlen(message)], "%s -> %s \n", N_("Indexes"), indexes);
+ }
wTextAppend( enumT, message );
}
@@ -147,8 +149,10 @@ void EnumerateStart(void)
if (enumW == NULL) {
ParamRegister( &enumPG );
- enumW = ParamCreateDialog( &enumPG, MakeWindowTitle(_("Parts List")), NULL, NULL, wHide, TRUE, NULL, F_RESIZE, EnumDlgUpdate );
- enumFile_fs = wFilSelCreate( mainW, FS_SAVE, 0, _("Parts List"), sPartsListFilePattern, DoEnumSave, NULL );
+ enumW = ParamCreateDialog( &enumPG, MakeWindowTitle(_("Parts List")), NULL,
+ NULL, wHide, TRUE, NULL, F_RESIZE, EnumDlgUpdate );
+ enumFile_fs = wFilSelCreate( mainW, FS_SAVE, 0, _("Parts List"),
+ sPartsListFilePattern, DoEnumSave, NULL );
}
wTextClear( enumT );
@@ -175,37 +179,43 @@ void EnumerateStart(void)
}
time(&clock);
- tm = localtime(&clock);
+ tm = localtime(&clock);
strftime( message, STR_LONG_SIZE, "%x\n", tm );
wTextAppend( enumT, message );
enumerateTotal = 0.0;
- if( count_utf8_chars( _("Description")) > enumerateMaxDescLen )
+ if( count_utf8_chars( _("Description")) > enumerateMaxDescLen ) {
enumerateMaxDescLen = count_utf8_chars( _("Description" ));
+ }
/* create the table header */
- sprintf( message, "%s | %-*s", _("Count"), enumerateMaxDescLen, _("Description"));
+ sprintf( message, "%s | %-*s", _("Count"), enumerateMaxDescLen,
+ _("Description"));
- if( enableListPrices )
- sprintf( message+strlen(message), " | %-*s | %-*s\n", (int) max( 7, count_utf8_chars( _("Each"))), _("Each"), (int) max( 9, count_utf8_chars(_("Extended"))), _("Extended"));
- else
+ if( enableListPrices ) {
+ sprintf( message+strlen(message), " | %-*s | %-*s\n", (int) max( 7,
+ count_utf8_chars( _("Each"))), _("Each"), (int) max( 9,
+ count_utf8_chars(_("Extended"))), _("Extended"));
+ } else {
strcat( message, "\n" );
+ }
wTextAppend( enumT, message );
/* underline the header */
cp = message;
- while( *cp && *cp != '\n' )
- if( *cp == '|' )
+ while( *cp && *cp != '\n' )
+ if( *cp == '|' ) {
*cp++ = '+';
- else
+ } else {
*cp++ = '-';
+ }
wTextAppend( enumT, message );
}
/**
* End of parts list. Print the footer line and the totals if necessary.
- * \todo These formatting instructions could be re-written in an easier
+ * \todo These formatting instructions could be re-written in an easier
* to understand fashion using the possibilities of the printf formatting
* and some string functions.
*/
@@ -215,13 +225,13 @@ void EnumerateEnd(void)
size_t len;
char * cp;
ScaleLengthEnd();
-
+
memset( message, '\0', STR_LONG_SIZE );
memset( message, '-', strlen(_("Count")) + 1 );
strcpy( message + strlen(_("Count")) + 1, "+");
cp = message+strlen(message);
memset( cp, '-', enumerateMaxDescLen+2 );
- if (enableListPrices){
+ if (enableListPrices) {
strcpy( cp+enumerateMaxDescLen+2, "+-" );
memset( cp+enumerateMaxDescLen+4, '-', max( 7, strlen( _("Each"))));
strcat( cp, "-+-");
@@ -234,7 +244,8 @@ void EnumerateEnd(void)
wTextAppend( enumT, message );
if (enableListPrices) {
- len = strlen( message ) - strlen( _("Total")) - max( 9, strlen(_("Extended"))) - 4 ;
+ len = strlen( message ) - strlen( _("Total")) - max( 9,
+ strlen(_("Extended"))) - 4 ;
memset ( message, ' ', len );
cp = message+len;
sprintf( cp, ("%s |%9.2f\n"), _("Total"), enumerateTotal );
diff --git a/app/bin/directory.c b/app/bin/directory.c
index 991e139..b0a2b23 100644
--- a/app/bin/directory.c
+++ b/app/bin/directory.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 "directory.h"
@@ -35,18 +35,18 @@
BOOL_T SafeCreateDir(const char *dir)
{
- int err;
-
- err = mkdir(dir, 0755);
- if (err < 0) {
- if (errno != EEXIST) {
- NoticeMessage(MSG_DIR_CREATE_FAIL,
- _("Continue"), NULL, dir, strerror(errno));
- perror(dir);
- return FALSE;
- }
- }
- return TRUE;
+ int err;
+
+ err = mkdir(dir, 0755);
+ if (err < 0) {
+ if (errno != EEXIST) {
+ NoticeMessage(MSG_DIR_CREATE_FAIL,
+ _("Continue"), NULL, dir, strerror(errno));
+ perror(dir);
+ return FALSE;
+ }
+ }
+ return TRUE;
}
/************************************************
@@ -59,83 +59,83 @@ BOOL_T SafeCreateDir(const char *dir)
*/
BOOL_T DeleteDirectory(const char *dir_path)
{
- size_t path_len;
- char *full_path = NULL;
- DIR *dir;
- struct stat stat_path, stat_entry;
- struct dirent *entry;
- DynString path;
-
- // stat for the path
- int resp = stat(dir_path, &stat_path);
-
- if (resp != 0 && errno == ENOENT) {
- return TRUE; //Does not Exist
- }
-
- // if path is not dir - exit
- if (!(S_ISDIR(stat_path.st_mode))) {
- NoticeMessage(MSG_NOT_DIR_FAIL,
- _("Continue"), NULL, dir_path);
- return FALSE;
- }
-
- // if not possible to read the directory for this user
- if ((dir = opendir(dir_path)) == NULL) {
- NoticeMessage(MSG_DIR_OPEN_FAIL,
- _("Continue"), NULL, dir_path);
- return FALSE;
- }
-
- // the length of the path
- path_len = strlen(dir_path) + 1;
- DynStringMalloc(&path, path_len + 16); //guessing the total path length
-
- // iteration through entries in the directory
- while ((entry = readdir(dir)) != NULL) {
-
- // skip entries "." and ".."
- if (!strcmp(entry->d_name, ".") || !strcmp(entry->d_name, "..")) {
- continue;
- }
-
- // determinate a full path of an entry
- DynStringReset(&path);
- DynStringCatCStrs(&path, dir_path, FILE_SEP_CHAR, entry->d_name, NULL);
- full_path = DynStringToCStr(&path);
- // stat for the entry
- stat(full_path, &stat_entry);
-
- // recursively remove a nested directory
- if (S_ISDIR(stat_entry.st_mode) != 0) {
- DeleteDirectory(full_path);
- continue;
- }
-
- // remove a file object
- if (unlink(full_path)) {
- NoticeMessage(MSG_UNLINK_FAIL, _("Continue"), NULL, full_path);
- DynStringFree(&path);
- closedir(dir);
- return FALSE;
- } else {
+ size_t path_len;
+ char *full_path = NULL;
+ DIR *dir;
+ struct stat stat_path, stat_entry;
+ struct dirent *entry;
+ DynString path;
+
+ // stat for the path
+ int resp = stat(dir_path, &stat_path);
+
+ if (resp != 0 && errno == ENOENT) {
+ return TRUE; //Does not Exist
+ }
+
+ // if path is not dir - exit
+ if (!(S_ISDIR(stat_path.st_mode))) {
+ NoticeMessage(MSG_NOT_DIR_FAIL,
+ _("Continue"), NULL, dir_path);
+ return FALSE;
+ }
+
+ // if not possible to read the directory for this user
+ if ((dir = opendir(dir_path)) == NULL) {
+ NoticeMessage(MSG_DIR_OPEN_FAIL,
+ _("Continue"), NULL, dir_path);
+ return FALSE;
+ }
+
+ // the length of the path
+ path_len = strlen(dir_path) + 1;
+ DynStringMalloc(&path, path_len + 16); //guessing the total path length
+
+ // iteration through entries in the directory
+ while ((entry = readdir(dir)) != NULL) {
+
+ // skip entries "." and ".."
+ if (!strcmp(entry->d_name, ".") || !strcmp(entry->d_name, "..")) {
+ continue;
+ }
+
+ // determinate a full path of an entry
+ DynStringReset(&path);
+ DynStringCatCStrs(&path, dir_path, FILE_SEP_CHAR, entry->d_name, NULL);
+ full_path = DynStringToCStr(&path);
+ // stat for the entry
+ stat(full_path, &stat_entry);
+
+ // recursively remove a nested directory
+ if (S_ISDIR(stat_entry.st_mode) != 0) {
+ DeleteDirectory(full_path);
+ continue;
+ }
+
+ // remove a file object
+ if (unlink(full_path)) {
+ NoticeMessage(MSG_UNLINK_FAIL, _("Continue"), NULL, full_path);
+ DynStringFree(&path);
+ closedir(dir);
+ return FALSE;
+ } else {
#if DEBUG
- printf("Removed a file: %s \n", full_path);
+ printf("Removed a file: %s \n", full_path);
#endif
- }
- }
+ }
+ }
- closedir(dir);
- DynStringFree(&path);
+ closedir(dir);
+ DynStringFree(&path);
- // remove the devastated directory and close the object of it
- if (rmdir(dir_path)) {
- NoticeMessage(MSG_RMDIR_FAIL, _("Continue"), NULL, dir_path);
- return FALSE;
- } else {
+ // remove the devastated directory and close the object of it
+ if (rmdir(dir_path)) {
+ NoticeMessage(MSG_RMDIR_FAIL, _("Continue"), NULL, dir_path);
+ return FALSE;
+ } else {
#if DEBUG
- printf("Removed a directory: %s \n", dir_path);
+ printf("Removed a directory: %s \n", dir_path);
#endif
- }
- return TRUE;
+ }
+ return TRUE;
}
diff --git a/app/bin/directory.h b/app/bin/directory.h
index 2ddfffd..b88f256 100644
--- a/app/bin/directory.h
+++ b/app/bin/directory.h
@@ -1,6 +1,6 @@
#ifndef HAVE_DIRECTORY_H
- #define HAVE_DIRECTORY_H
- #include "common.h"
- BOOL_T SafeCreateDir(const char *dir);
- BOOL_T DeleteDirectory(const char *dir_path);
+#define HAVE_DIRECTORY_H
+#include "common.h"
+BOOL_T SafeCreateDir(const char *dir);
+BOOL_T DeleteDirectory(const char *dir_path);
#endif \ No newline at end of file
diff --git a/app/bin/dlayer.c b/app/bin/dlayer.c
index e5fed61..92c58c4 100644
--- a/app/bin/dlayer.c
+++ b/app/bin/dlayer.c
@@ -1,1798 +1,2363 @@
-/** \file dlayer.c
- * Functions and dialogs for handling layers.
- */
-
-/* XTrkCad - Model Railroad CAD
- * Copyright (C) 2005 Dave Bullis and (C) 2007 Martin Fischer
- *
- * 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.
- */
-
-#include "cselect.h"
-#include "custom.h"
-#include "paths.h"
-#include "dynstring.h"
-#include "fileio.h"
-#include "layout.h"
-#include "param.h"
-#include "track.h"
-#include "include/partcatalog.h"
-#include "include/stringxtc.h"
-#include "common-ui.h"
-
-/*****************************************************************************
- *
- * LAYERS
- *
- */
-
-#define NUM_BUTTONS (99)
-#define LAYERPREF_FROZEN (1)
-#define LAYERPREF_ONMAP (2)
-#define LAYERPREF_VISIBLE (4)
-#define LAYERPREF_MODULE (8)
-#define LAYERPREF_NOBUTTON (16)
-#define LAYERPREF_SECTION ("Layers")
-#define LAYERPREF_NAME "name"
-#define LAYERPREF_COLOR "color"
-#define LAYERPREF_FLAGS "flags"
-#define LAYERPREF_LIST "list"
-#define LAYERPREF_SETTINGS "settings"
-
-unsigned int curLayer;
-long layerCount = 10;
-static long newLayerCount = 10;
-static unsigned int layerCurrent = NUM_LAYERS;
-
-
-static BOOL_T layoutLayerChanged = FALSE;
-
-static wIcon_p show_layer_bmps[NUM_BUTTONS];
-static wButton_p layer_btns[NUM_BUTTONS]; /**< layer buttons on toolbar */
-
-/** Layer selector on toolbar */
-static wList_p setLayerL;
-
-/** Describe the properties of a layer */
-typedef struct {
- char name[STR_SHORT_SIZE]; /**< Layer name */
- wDrawColor color; /**< layer color, is an index into a color table */
- BOOL_T useColor; /**< Use Layer color */
- BOOL_T frozen; /**< Frozen flag */
- BOOL_T visible; /**< visible flag */
- BOOL_T onMap; /**< is layer shown map */
- BOOL_T module; /**< is layer a module (all or nothing) */
- BOOL_T button_off; /**< hide button */
- long objCount; /**< number of objects on layer */
- dynArr_t layerLinkList; /**< other layers that show/hide with this one */
- char settingsName[STR_SHORT_SIZE]; /**< name of settings file to load when this is current */
-} layer_t;
-
-static layer_t layers[NUM_LAYERS];
-static layer_t *layers_save = NULL;
-
-static Catalog * settingsCatalog;
-
-
-static int oldColorMap[][3] = {
- { 255, 255, 255 }, /* White */
- { 0, 0, 0 }, /* Black */
- { 255, 0, 0 }, /* Red */
- { 0, 255, 0 }, /* Green */
- { 0, 0, 255 }, /* Blue */
- { 255, 255, 0 }, /* Yellow */
- { 255, 0, 255 }, /* Purple */
- { 0, 255, 255 }, /* Aqua */
- { 128, 0, 0 }, /* Dk. Red */
- { 0, 128, 0 }, /* Dk. Green */
- { 0, 0, 128 }, /* Dk. Blue */
- { 128, 128, 0 }, /* Dk. Yellow */
- { 128, 0, 128 }, /* Dk. Purple */
- { 0, 128, 128 }, /* Dk. Aqua */
- { 65, 105, 225 }, /* Royal Blue */
- { 0, 191, 255 }, /* DeepSkyBlue */
- { 125, 206, 250 }, /* LightSkyBlue */
- { 70, 130, 180 }, /* Steel Blue */
- { 176, 224, 230 }, /* Powder Blue */
- { 127, 255, 212 }, /* Aquamarine */
- { 46, 139, 87 }, /* SeaGreen */
- { 152, 251, 152 }, /* PaleGreen */
- { 124, 252, 0 }, /* LawnGreen */
- { 50, 205, 50 }, /* LimeGreen */
- { 34, 139, 34 }, /* ForestGreen */
- { 255, 215, 0 }, /* Gold */
- { 188, 143, 143 }, /* RosyBrown */
- { 139, 69, 19 }, /* SaddleBrown */
- { 245, 245, 220 }, /* Beige */
- { 210, 180, 140 }, /* Tan */
- { 210, 105, 30 }, /* Chocolate */
- { 165, 42, 42 }, /* Brown */
- { 255, 165, 0 }, /* Orange */
- { 255, 127, 80 }, /* Coral */
- { 255, 99, 71 }, /* Tomato */
- { 255, 105, 180 }, /* HotPink */
- { 255, 192, 203 }, /* Pink */
- { 176, 48, 96 }, /* Maroon */
- { 238, 130, 238 }, /* Violet */
- { 160, 32, 240 }, /* Purple */
- { 16, 16, 16 }, /* Gray */
- { 32, 32, 32 }, /* Gray */
- { 48, 48, 48 }, /* Gray */
- { 64, 64, 64 }, /* Gray */
- { 80, 80, 80 }, /* Gray */
- { 96, 96, 96 }, /* Gray */
- { 112, 112, 122 }, /* Gray */
- { 128, 128, 128 }, /* Gray */
- { 144, 144, 144 }, /* Gray */
- { 160, 160, 160 }, /* Gray */
- { 176, 176, 176 }, /* Gray */
- { 192, 192, 192 }, /* Gray */
- { 208, 208, 208 }, /* Gray */
- { 224, 224, 224 }, /* Gray */
- { 240, 240, 240 }, /* Gray */
- { 0, 0, 0 } /* BlackPixel */
-};
-
-static void DoLayerOp(void * data);
-void UpdateLayerDlg(unsigned int);
-
-static void InitializeLayers(void LayerInitFunc(void), int newCurrLayer);
-static void LayerPrefSave(void);
-static void LayerPrefLoad(void);
-
-int IsLayerValid(unsigned int layer)
-{
- return (layer <= NUM_LAYERS && layer != -1);
-}
-
-BOOL_T GetLayerVisible(unsigned int layer)
-{
- if (!IsLayerValid(layer)) {
- return TRUE;
- } else {
- return layers[layer].visible;
- }
-}
-
-BOOL_T GetLayerHidden(unsigned int layer)
-{
- if (!IsLayerValid(layer)) {
- return TRUE;
- } else {
- return layers[layer].button_off;
- }
-}
-
-
-BOOL_T GetLayerFrozen(unsigned int layer)
-{
- if (!IsLayerValid(layer)) {
- return TRUE;
- } else {
- return layers[layer].frozen;
- }
-}
-
-
-BOOL_T GetLayerOnMap(unsigned int layer)
-{
- if (!IsLayerValid(layer)) {
- return TRUE;
- } else {
- return layers[layer].onMap;
- }
-}
-
-BOOL_T GetLayerModule(unsigned int layer)
-{
- if (!IsLayerValid(layer)) {
- return TRUE;
- } else {
- return layers[layer].module;
- }
-}
-
-void SetLayerModule(unsigned int layer, BOOL_T module)
-{
- if (IsLayerValid(layer)) {
- layers[layer].module = module;
- }
-}
-
-
-char * GetLayerName(unsigned int layer)
-{
- if (!IsLayerValid(layer)) {
- return NULL;
- } else {
- return layers[layer].name;
- }
-}
-
-void SetLayerName(unsigned int layer, char* name) {
- if (IsLayerValid(layer)) {
- strcpy(layers[layer].name,name);
- }
-}
-
-BOOL_T GetLayerUseColor(unsigned int layer) {
- return layers[layer].useColor;
-}
-
-wDrawColor GetLayerColor(unsigned int layer)
-{
- return layers[layer].color;
-}
-
-static void RedrawLayer( unsigned int l, BOOL_T draw )
-{
- DoRedraw(); // RedrawLayer
-}
-
-
-EXPORT void FlipLayer( void * layerVP )
-{
- unsigned int layer = (unsigned int)VP2L(layerVP);
- wBool_t visible;
-
- if (!IsLayerValid(layer)) {
- return;
- }
-
- if (layer == curLayer && layers[layer].visible) {
- if (!layers[layer].button_off)
- wButtonSetBusy(layer_btns[layer], layers[layer].visible);
- NoticeMessage(MSG_LAYER_HIDE, _("Ok"), NULL);
- return;
- }
-
- RedrawLayer(layer, FALSE);
- visible = !layers[layer].visible;
- layers[layer].visible = visible;
-
- if (layer<NUM_BUTTONS) {
- if (!layers[layer].button_off) {
- wButtonSetBusy(layer_btns[layer], visible != 0);
- wButtonSetLabel(layer_btns[layer], (char *)show_layer_bmps[layer]);
- }
- }
-
- /* Set visible on related layers other than current */
- for (int i=0;i<layers[layer].layerLinkList.cnt;i++) {
- int l = DYNARR_N(int,layers[layer].layerLinkList,i)-1;
- if ((l != curLayer) && (l >=0) && (l < NUM_LAYERS)) {
- layers[l].visible = layers[layer].visible;
- if (!layers[l].button_off)
- wButtonSetBusy(layer_btns[l], layers[l].visible);
- }
- }
-
- RedrawLayer(layer, TRUE);
-}
-
-static char lastSettings[STR_SHORT_SIZE];
-void SetCurrLayer(wIndex_t inx, const char * name, wIndex_t op,
- void * listContext, void * arg)
-{
- unsigned int newLayer = (unsigned int)inx;
-
- if (layers[newLayer].frozen) {
- NoticeMessage(MSG_LAYER_SEL_FROZEN, _("Ok"), NULL);
- wListSetIndex(setLayerL, curLayer);
- return;
- }
-
- char *array[1];
- if (!layers[inx].settingsName[0] || strcmp(layers[inx].settingsName," ")==0) {
- if (lastSettings[0]) {
- DoSettingsRead(1,NULL, NULL);
- }
- lastSettings[0] = '\0';
- } else {
- if (strcmp(layers[inx].settingsName,lastSettings)!=0) {
- if (!lastSettings[0]) wPrefFlush(""); // Save Last Settings for no settings file
- array[0] = layers[inx].settingsName;
- DoSettingsRead(1,array, NULL);
- }
- strcpy(lastSettings,layers[inx].settingsName);
- }
-
-
- curLayer = newLayer;
-
- if (!IsLayerValid(curLayer)) {
- curLayer = 0; //Too big or -1
- layers[curLayer].frozen = FALSE; //Make sure the layer is not frozen
- }
-
-
- if (!layers[curLayer].visible) {
- FlipLayer(I2VP(inx));
- }
-
- /* Set visible on related layers other than current */
- for (int i=0;i<layers[curLayer].layerLinkList.cnt;i++) {
- int l = DYNARR_N(int,layers[curLayer].layerLinkList,i)-1;
- if (l != curLayer && l >=0 && l < NUM_LAYERS) {
- layers[l].visible = layers[curLayer].visible;
- if (!layers[l].button_off)
- wButtonSetBusy(layer_btns[l], layers[l].visible);
- }
- }
-
- if (recordF) {
- fprintf(recordF, "SETCURRLAYER %d\n", inx);
- }
-}
-
-static void PlaybackCurrLayer(char * line)
-{
- wIndex_t layer;
- layer = atoi(line);
- wListSetIndex(setLayerL, layer);
- SetCurrLayer(layer, NULL, 0, NULL, NULL);
-}
-
-/**
- * Change the color of a layer.
- *
- * \param inx IN layer to change
- * \param color IN new color
- */
-
-static void SetLayerColor(unsigned int inx, wDrawColor color)
-{
- if (color != layers[inx].color) {
- if (inx < NUM_BUTTONS) {
- wIconSetColor(show_layer_bmps[inx], color);
- wButtonSetLabel(layer_btns[inx], (char*)show_layer_bmps[inx]);
- }
-
- layers[inx].color = color;
- layoutLayerChanged = TRUE;
- }
-}
-
-static void SetLayerHideButton(unsigned int inx, wBool_t hide) {
- if (hide != layers[inx].button_off) {
- if (inx < NUM_BUTTONS) {
- wControlShow((wControl_p)layer_btns[inx],!hide);
- if (!hide) wButtonSetBusy(layer_btns[inx], layers[inx].visible);
- }
- layers[inx].button_off = hide;
- layoutLayerChanged = TRUE;
- }
-}
-
-char *
-FormatLayerName(unsigned int layerNumber)
-{
- DynString string;// = NaS;
- char *result;
- DynStringMalloc(&string, 0);
- DynStringPrintf(&string,
- "%2d %c %s",
- layerNumber + 1,
- (layers[layerNumber].frozen ? '*': layers[layerNumber].module ? 'm': layers[layerNumber].objCount > 0 ? '+' : '-'),
- layers[layerNumber].name);
- result = strdup(DynStringToCStr(&string));
- DynStringFree(&string);
- return result;
-}
-
-static int lbits_width[3] = {14,20,26};
-static int lbits_height[3] = {16,24,32};
-
-#include "bitmaps/l1.xbm"
-#include "bitmaps/l2.xbm"
-#include "bitmaps/l3.xbm"
-#include "bitmaps/l4.xbm"
-#include "bitmaps/l5.xbm"
-#include "bitmaps/l6.xbm"
-#include "bitmaps/l7.xbm"
-#include "bitmaps/l8.xbm"
-#include "bitmaps/l9.xbm"
-#include "bitmaps/l10.xbm"
-#include "bitmaps/l11.xbm"
-#include "bitmaps/l12.xbm"
-#include "bitmaps/l13.xbm"
-#include "bitmaps/l14.xbm"
-#include "bitmaps/l15.xbm"
-#include "bitmaps/l16.xbm"
-#include "bitmaps/l17.xbm"
-#include "bitmaps/l18.xbm"
-#include "bitmaps/l19.xbm"
-#include "bitmaps/l20.xbm"
-#include "bitmaps/l21.xbm"
-#include "bitmaps/l22.xbm"
-#include "bitmaps/l23.xbm"
-#include "bitmaps/l24.xbm"
-#include "bitmaps/l25.xbm"
-#include "bitmaps/l26.xbm"
-#include "bitmaps/l27.xbm"
-#include "bitmaps/l28.xbm"
-#include "bitmaps/l29.xbm"
-#include "bitmaps/l30.xbm"
-#include "bitmaps/l31.xbm"
-#include "bitmaps/l32.xbm"
-#include "bitmaps/l33.xbm"
-#include "bitmaps/l34.xbm"
-#include "bitmaps/l35.xbm"
-#include "bitmaps/l36.xbm"
-#include "bitmaps/l37.xbm"
-#include "bitmaps/l38.xbm"
-#include "bitmaps/l39.xbm"
-#include "bitmaps/l40.xbm"
-#include "bitmaps/l41.xbm"
-#include "bitmaps/l42.xbm"
-#include "bitmaps/l43.xbm"
-#include "bitmaps/l44.xbm"
-#include "bitmaps/l45.xbm"
-#include "bitmaps/l46.xbm"
-#include "bitmaps/l47.xbm"
-#include "bitmaps/l48.xbm"
-#include "bitmaps/l49.xbm"
-#include "bitmaps/l50.xbm"
-#include "bitmaps/l51.xbm"
-#include "bitmaps/l52.xbm"
-#include "bitmaps/l53.xbm"
-#include "bitmaps/l54.xbm"
-#include "bitmaps/l55.xbm"
-#include "bitmaps/l56.xbm"
-#include "bitmaps/l57.xbm"
-#include "bitmaps/l58.xbm"
-#include "bitmaps/l59.xbm"
-#include "bitmaps/l60.xbm"
-#include "bitmaps/l61.xbm"
-#include "bitmaps/l62.xbm"
-#include "bitmaps/l63.xbm"
-#include "bitmaps/l64.xbm"
-#include "bitmaps/l65.xbm"
-#include "bitmaps/l66.xbm"
-#include "bitmaps/l67.xbm"
-#include "bitmaps/l68.xbm"
-#include "bitmaps/l69.xbm"
-#include "bitmaps/l70.xbm"
-#include "bitmaps/l71.xbm"
-#include "bitmaps/l72.xbm"
-#include "bitmaps/l73.xbm"
-#include "bitmaps/l74.xbm"
-#include "bitmaps/l75.xbm"
-#include "bitmaps/l76.xbm"
-#include "bitmaps/l77.xbm"
-#include "bitmaps/l78.xbm"
-#include "bitmaps/l79.xbm"
-#include "bitmaps/l80.xbm"
-#include "bitmaps/l81.xbm"
-#include "bitmaps/l82.xbm"
-#include "bitmaps/l83.xbm"
-#include "bitmaps/l84.xbm"
-#include "bitmaps/l85.xbm"
-#include "bitmaps/l86.xbm"
-#include "bitmaps/l87.xbm"
-#include "bitmaps/l88.xbm"
-#include "bitmaps/l89.xbm"
-#include "bitmaps/l90.xbm"
-#include "bitmaps/l91.xbm"
-#include "bitmaps/l92.xbm"
-#include "bitmaps/l93.xbm"
-#include "bitmaps/l94.xbm"
-#include "bitmaps/l95.xbm"
-#include "bitmaps/l96.xbm"
-#include "bitmaps/l97.xbm"
-#include "bitmaps/l98.xbm"
-#include "bitmaps/l99.xbm"
-
-
-static char * show_layer_bits[3][NUM_BUTTONS] = {
- { l1_x16, l2_x16, l3_x16, l4_x16, l5_x16, l6_x16, l7_x16, l8_x16, l9_x16, l10_x16,
- l11_x16, l12_x16, l13_x16, l14_x16, l15_x16, l16_x16, l17_x16, l18_x16, l19_x16, l20_x16,
- l21_x16, l22_x16, l23_x16, l24_x16, l25_x16, l26_x16, l27_x16, l28_x16, l29_x16, l30_x16,
- l31_x16, l32_x16, l33_x16, l34_x16, l35_x16, l36_x16, l37_x16, l38_x16, l39_x16, l40_x16,
- l41_x16, l42_x16, l43_x16, l44_x16, l45_x16, l46_x16, l47_x16, l48_x16, l49_x16, l50_x16,
- l51_x16, l52_x16, l53_x16, l54_x16, l55_x16, l56_x16, l57_x16, l58_x16, l59_x16, l60_x16,
- l61_x16, l62_x16, l63_x16, l64_x16, l65_x16, l66_x16, l67_x16, l68_x16, l69_x16, l70_x16,
- l71_x16, l72_x16, l73_x16, l74_x16, l75_x16, l76_x16, l77_x16, l78_x16, l79_x16, l80_x16,
- l81_x16, l82_x16, l83_x16, l84_x16, l85_x16, l86_x16, l87_x16, l88_x16, l89_x16, l90_x16,
- l91_x16, l92_x16, l93_x16, l94_x16, l95_x16, l96_x16, l97_x16, l98_x16, l99_x16, },
- { l1_x24, l2_x24, l3_x24, l4_x24, l5_x24, l6_x24, l7_x24, l8_x24, l9_x24, l10_x24,
- l11_x24, l12_x24, l13_x24, l14_x24, l15_x24, l16_x24, l17_x24, l18_x24, l19_x24, l20_x24,
- l21_x24, l22_x24, l23_x24, l24_x24, l25_x24, l26_x24, l27_x24, l28_x24, l29_x24, l30_x24,
- l31_x24, l32_x24, l33_x24, l34_x24, l35_x24, l36_x24, l37_x24, l38_x24, l39_x24, l40_x24,
- l41_x24, l42_x24, l43_x24, l44_x24, l45_x24, l46_x24, l47_x24, l48_x24, l49_x24, l50_x24,
- l51_x24, l52_x24, l53_x24, l54_x24, l55_x24, l56_x24, l57_x24, l58_x24, l59_x24, l60_x24,
- l61_x24, l62_x24, l63_x24, l64_x24, l65_x24, l66_x24, l67_x24, l68_x24, l69_x24, l70_x24,
- l71_x24, l72_x24, l73_x24, l74_x24, l75_x24, l76_x24, l77_x24, l78_x24, l79_x24, l80_x24,
- l81_x24, l82_x24, l83_x24, l84_x24, l85_x24, l86_x24, l87_x24, l88_x24, l89_x24, l90_x24,
- l91_x24, l92_x24, l93_x24, l94_x24, l95_x24, l96_x24, l97_x24, l98_x24, l99_x24, },
- { l1_x32, l2_x32, l3_x32, l4_x32, l5_x32, l6_x32, l7_x32, l8_x32, l9_x32, l10_x32,
- l11_x32, l12_x32, l13_x32, l14_x32, l15_x32, l16_x32, l17_x32, l18_x32, l19_x32, l20_x32,
- l21_x32, l22_x32, l23_x32, l24_x32, l25_x32, l26_x32, l27_x32, l28_x32, l29_x32, l30_x32,
- l31_x32, l32_x32, l33_x32, l34_x32, l35_x32, l36_x32, l37_x32, l38_x32, l39_x32, l40_x32,
- l41_x32, l42_x32, l43_x32, l44_x32, l45_x32, l46_x32, l47_x32, l48_x32, l49_x32, l50_x32,
- l51_x32, l52_x32, l53_x32, l54_x32, l55_x32, l56_x32, l57_x32, l58_x32, l59_x32, l60_x32,
- l61_x32, l62_x32, l63_x32, l64_x32, l65_x32, l66_x32, l67_x32, l68_x32, l69_x32, l70_x32,
- l71_x32, l72_x32, l73_x32, l74_x32, l75_x32, l76_x32, l77_x32, l78_x32, l79_x32, l80_x32,
- l81_x32, l82_x32, l83_x32, l84_x32, l85_x32, l86_x32, l87_x32, l88_x32, l89_x32, l90_x32,
- l91_x32, l92_x32, l93_x32, l94_x32, l95_x32, l96_x32, l97_x32, l98_x32, l99_x32, }
-};
-
-
-static long layerRawColorTab[] = {
- wRGB(0, 0,255), /* blue */
- wRGB(0, 0,128), /* dk blue */
- wRGB(0,128, 0), /* dk green */
- wRGB(255,255, 0), /* yellow */
- wRGB(0,255, 0), /* green */
- wRGB(0,255,255), /* lt cyan */
- wRGB(128, 0, 0), /* brown */
- wRGB(128, 0,128), /* purple */
- wRGB(128,128, 0), /* green-brown */
- wRGB(255, 0,255)
-}; /* lt-purple */
-static wDrawColor layerColorTab[COUNT(layerRawColorTab)];
-
-
-static wWin_p layerW;
-static char layerName[STR_SHORT_SIZE];
-static char layerLinkList[STR_LONG_SIZE];
-static char settingsName[STR_SHORT_SIZE];
-static wDrawColor layerColor;
-static long layerUseColor = TRUE;
-static long layerVisible = TRUE;
-static long layerFrozen = FALSE;
-static long layerOnMap = TRUE;
-static long layerModule = FALSE;
-static long layerNoButton = FALSE;
-static void LayerOk(void * unused);
-static BOOL_T layerRedrawMap = FALSE;
-
-#define ENUMLAYER_RELOAD (1)
-#define ENUMLAYER_SAVE (2)
-#define ENUMLAYER_CLEAR (3)
-
-static char *visibleLabels[] = { "", NULL };
-static char *frozenLabels[] = { "", NULL };
-static char *onMapLabels[] = { "", NULL };
-static char *moduleLabels[] = { "", NULL };
-static char *layerColorLabels[] = { "", NULL };
-static paramIntegerRange_t i0_20 = { 0, NUM_BUTTONS };
-static paramListData_t layerUiListData = { 10, 370, 0 };
-
-static paramData_t layerPLs[] = {
-#define I_LIST (0)
- { PD_DROPLIST, NULL, "layer", PDO_LISTINDEX, I2VP(250), N_("Select Layer:") },
-#define I_NAME (1)
- { PD_STRING, layerName, "name", PDO_NOPREF|PDO_STRINGLIMITLENGTH, I2VP(250-54), N_("Name"), 0, 0, sizeof(layerName) },
-#define I_COLOR (2)
- { PD_COLORLIST, &layerColor, "color", PDO_NOPREF, NULL, N_("Color") },
-#define I_USE_COLOR (3)
- { PD_TOGGLE, &layerUseColor, "layercolor", PDO_NOPREF|PDO_DLGHORZ, layerColorLabels, N_("Use Color"), BC_HORZ|BC_NOBORDER },
-#define I_VIS (4)
- { PD_TOGGLE, &layerVisible, "visible", PDO_NOPREF, visibleLabels, N_("Visible"), BC_HORZ|BC_NOBORDER },
-#define I_FRZ (5)
- { PD_TOGGLE, &layerFrozen, "frozen", PDO_NOPREF|PDO_DLGHORZ, frozenLabels, N_("Frozen"), BC_HORZ|BC_NOBORDER },
-#define I_MAP (6)
- { PD_TOGGLE, &layerOnMap, "onmap", PDO_NOPREF|PDO_DLGHORZ, onMapLabels, N_("On Map"), BC_HORZ|BC_NOBORDER },
-#define I_MOD (7)
- { PD_TOGGLE, &layerModule, "module", PDO_NOPREF|PDO_DLGHORZ, moduleLabels, N_("Module"), BC_HORZ|BC_NOBORDER },
-#define I_BUT (8)
- { PD_TOGGLE, &layerNoButton, "button", PDO_NOPREF|PDO_DLGHORZ, moduleLabels, N_("No Button"), BC_HORZ|BC_NOBORDER },
-#define I_LINKLIST (9)
- { PD_STRING, layerLinkList, "layerlist", PDO_NOPREF|PDO_STRINGLIMITLENGTH, I2VP(250-54), N_("Linked Layers"), 0, 0, sizeof(layerLinkList) },
-#define I_SETTINGS (10)
- { PD_DROPLIST, NULL, "settings", PDO_LISTINDEX, I2VP( 250), N_("Settings when Current") },
-#define I_COUNT (11)
- { PD_MESSAGE, N_("Object Count:"), NULL, PDO_DLGBOXEND|PDO_DLGNOLABELALIGN, I2VP(370) },
- { PD_MESSAGE, N_("All Layer Preferences"), NULL, PDO_DLGRESETMARGIN, I2VP(180) },
- { PD_BUTTON, DoLayerOp, "load", PDO_DLGRESETMARGIN, 0, N_("Load"), 0, I2VP(ENUMLAYER_RELOAD) },
- { PD_BUTTON, DoLayerOp, "save", PDO_DLGHORZ, 0, N_("Save"), 0, I2VP(ENUMLAYER_SAVE) },
- { PD_BUTTON, DoLayerOp, "clear", PDO_DLGHORZ | PDO_DLGBOXEND, 0, N_("Defaults"), 0, I2VP(ENUMLAYER_CLEAR) },
- { PD_LONG, &newLayerCount, "button-count", PDO_DLGBOXEND|PDO_DLGRESETMARGIN, &i0_20, N_("Number of Layer Buttons") },
-};
-
-#define settingsListL ((wList_p)layerPLs[I_SETTINGS].control)
-#define MESSAGETEXT ((wMessage_p)layerPLs[I_COUNT].control)
-
-static paramGroup_t layerPG = { "layer", 0, layerPLs, COUNT( layerPLs ) };
-
-/**
- * Reload the listbox showing the current catalog
- */
-
-static
-int LoadFileListLoad(Catalog *catalog, char * name)
-{
- CatalogEntry *currentEntry = catalog->head;
- DynString description;
- DynStringMalloc(&description, STR_SHORT_SIZE);
-
- wControlShow((wControl_p)settingsListL, FALSE);
- wListClear(settingsListL);
-
- int currset = 0;
-
- int i = 0;
-
- wListAddValue(settingsListL," ",NULL," ");
-
- while (currentEntry) {
- i++;
- DynStringClear(&description);
- DynStringCatCStr(&description,
- currentEntry->contents) ;
- wListAddValue(settingsListL,
- DynStringToCStr(&description),
- NULL,
- currentEntry->fullFileName[0]);
- if (strcmp(currentEntry->fullFileName[0],name)==0) currset = i;
- currentEntry = currentEntry->next;
- }
-
-
- wListSetIndex(settingsListL,currset);
-
- wControlShow((wControl_p)settingsListL, TRUE);
-
- DynStringFree(&description);
-
- if (currset == 0 && strcmp(" ",name)!=0) return FALSE;
- return TRUE;
-
-}
-
-#define layerL ((wList_p)layerPLs[I_LIST].control)
-
-#define layerS ((wList_p)layerPLs[I_SETTINGS].control)
-
-void GetLayerLinkString(int inx,char * list) {
-
- char * cp = &list[0];
- cp[0] = '\0';
- int len = 0;
- for (int i = 0; i<layers[inx].layerLinkList.cnt && len<STR_LONG_SIZE-5; i++) {
- int l = DYNARR_N(int,layers[inx].layerLinkList,i);
- if (i==0)
- cp += sprintf(cp,"%d",l);
- else
- cp += sprintf(cp,";%d",l);
- cp[0] = '\0';
- }
-}
-
-void PutLayerListArray(int inx, char * list) {
- char * cp = &list[0];
- DYNARR_RESET(int, layers[inx].layerLinkList);
- while (cp) {
- cp = strpbrk(list,",; ");
- if (cp) {
- cp[0] ='\0';
- int i = abs((int)strtol(list,&list,0));
- if (i>0 && i !=inx-1 && i<NUM_LAYERS) {
- DYNARR_APPEND(int,layers[inx].layerLinkList,1);
- DYNARR_LAST(int, layers[inx].layerLinkList) = i;
- }
- cp[0] = ';';
- list = cp+1;
- } else {
- int i = abs((int)strtol(list,&list,0));
- if (i>0 && i !=inx-1 && i<NUM_LAYERS) {
- DYNARR_APPEND(int,layers[inx].layerLinkList,1);
- DYNARR_LAST(int,layers[inx].layerLinkList) = i;
- }
- cp = 0;
- }
- }
-}
-
-
-/**
- * Load the layer settings to hard coded system defaults
- */
-
-void
-LayerSystemDefaults(void)
-{
- int inx;
-
- for (inx=0; inx<NUM_LAYERS; inx++) {
- strcpy(layers[inx].name, inx==0?_("Main"):"");
- layers[inx].visible = TRUE;
- layers[inx].frozen = FALSE;
- layers[inx].onMap = TRUE;
- layers[inx].module = FALSE;
- layers[inx].button_off = FALSE;
- layers[inx].objCount = 0;
- DYNARR_RESET(int,layers[inx].layerLinkList);
- SetLayerColor(inx, layerColorTab[inx%COUNT(layerColorTab)]);
- }
-}
-
-/**
- * Load the layer listboxes in Manage Layers and the Toolbar with up-to-date information.
- */
-
-void LoadLayerLists(void)
-{
- int inx;
- /* clear both lists */
- wListClear(setLayerL);
-
- if (layerL) {
- wListClear(layerL);
- }
-
- if (layerS) {
- wListClear(layerS);
- }
-
-
- /* add all layers to both lists */
- for (inx=0; inx<NUM_LAYERS; inx++) {
- char *layerLabel;
- layerLabel = FormatLayerName(inx);
-
- if (layerL) {
- wListAddValue(layerL, layerLabel, NULL, NULL);
- }
-
- wListAddValue(setLayerL, layerLabel, NULL, NULL);
- free(layerLabel);
- }
-
- /* set current layer to selected */
- wListSetIndex(setLayerL, curLayer);
-
- if (layerL) wListSetIndex(layerL,curLayer);
-
-}
-
-/**
- * Handle button presses for the layer dialog. For all button presses in the layer
- * dialog, this function is called. The parameter identifies the button pressed and
- * the operation is performed.
- *
- * \param[IN] data identifier for the button prerssed
- * \return
- */
-
-static void DoLayerOp(void * data)
-{
- switch (VP2L(data)) {
- case ENUMLAYER_CLEAR:
- InitializeLayers(LayerSystemDefaults, -1);
- break;
-
- case ENUMLAYER_SAVE:
- LayerPrefSave();
- break;
-
- case ENUMLAYER_RELOAD:
- LayerPrefLoad();
- break;
- }
-
- UpdateLayerDlg(curLayer); //Reset to current Layer
-
- if (layoutLayerChanged) {
- MainProc(mainW, wResize_e, NULL, NULL);
- layoutLayerChanged = FALSE;
- SetFileChanged();
- }
-}
-
-/**
- * Update all dialogs and dialog elements after changing layers preferences. Once the global array containing
- * the settings for the labels has been changed, this function needs to be called to update all the user interface
- * elements to the new settings.
- */
-
-EXPORT void UpdateLayerDlg(unsigned int layer)
-{
- int inx;
- /* update the globals for the layer dialog */
- layerVisible = layers[layer].visible;
- layerFrozen = layers[layer].frozen;
- layerOnMap = layers[layer].onMap;
- layerModule = layers[layer].module;
- layerColor = layers[layer].color;
- layerUseColor = layers[layer].useColor;
- layerNoButton = layers[layer].button_off;
- strcpy(layerName, layers[layer].name);
- strcpy(settingsName, layers[layer].settingsName);
- GetLayerLinkString(layer,layerLinkList);
-
- layerCurrent = layer;
- /* now re-load the layer list boxes */
- LoadLayerLists();
-
-
-
- /* force update of the 'manage layers' dialogbox */
- if (layerL) {
- wListSetIndex(layerL,layer);
- ParamLoadControls(&layerPG);
- }
-
- if (layerS) {
- if (!LoadFileListLoad(settingsCatalog,settingsName))
- layers[layer].settingsName[0] = '\0';
- }
-
- sprintf(message, "Object Count: %ld", layers[layer].objCount);
- if (MESSAGETEXT) wMessageSetValue(MESSAGETEXT, message);
-
- /* finally show the layer buttons with balloon text */
- for (inx = 0; inx < NUM_BUTTONS; inx++) {
- if (!layers[inx].button_off) {
- wButtonSetBusy(layer_btns[inx], layers[inx].visible != 0);
- wControlSetBalloonText((wControl_p)layer_btns[inx],
- (layers[inx].name[0] != '\0' ? layers[inx].name :_("Show/Hide Layer")));
- }
- }
-
-}
-
-/**
- * Fill a layer dropbox with the current layer settings
- *
- * \param listLayers the dropbox
- * \return
- */
-
-void
-FillLayerList( wList_p listLayers)
-{
- wListClear(listLayers); // Rebuild list on each invovation
-
- for (int inx = 0; inx < NUM_LAYERS; inx++) {
- char *layerFormattedName;
- layerFormattedName = FormatLayerName(inx);
- wListAddValue((wList_p)listLayers, layerFormattedName, NULL, I2VP(inx));
- free(layerFormattedName);
- }
-
- /* set current layer to selected */
- wListSetIndex(listLayers, curLayer);
-}
-/**
- * Initialize the layer lists.
- *
- * \param IN pointer to function that actually initialize tha data structures
- * \param IN current layer (0...NUM_LAYERS), (-1) for no change
- */
-
-static void
-InitializeLayers(void LayerInitFunc(void), int newCurrLayer)
-{
- /* reset the data structures to default valuses */
- LayerInitFunc();
- /* count the objects on each layer */
- LayerSetCounts();
-
- /* Switch the current layer when requested or the first above not frozen*/
- if (newCurrLayer != -1) {
- curLayer = -1;
- for (int i = newCurrLayer; i< NUM_LAYERS; i++) {
- if (!layers[i].frozen) {
- curLayer = i;
- break;
- }
- }
- if (curLayer == -1) {
- ErrorMessage( MSG_NO_EMPTY_LAYER );
- layers[0].frozen = FALSE;
- curLayer = 0;
- }
- }
-}
-
-/**
- * Save the customized layer information to preferences.
- */
-
-static void
-LayerPrefSave(void)
-{
- unsigned int inx;
- int flags;
- char buffer[ 80 ];
- char links[STR_LONG_SIZE];
- char layersSaved[ 3 * NUM_LAYERS + 1 ]; /* 0..99 plus separator */
- /* FIXME: values for layers that are configured to default now should be overwritten in the settings */
- layersSaved[ 0 ] = '\0';
-
- for (inx = 0; inx < NUM_LAYERS; inx++) {
- /* if a name is set that is not the default value or a color different from the default has been set,
- information about the layer needs to be saved */
- if ((layers[inx].name[0]) ||
- layers[inx].frozen || (!layers[inx].onMap) || (!layers[inx].visible) ||
- layers[inx].button_off || (layers[inx].layerLinkList.cnt>0) ||
- layers[inx].module ||
- layers[inx].color != layerColorTab[inx%COUNT(layerColorTab)]) {
- sprintf(buffer, LAYERPREF_NAME ".%0u", inx);
- wPrefSetString(LAYERPREF_SECTION, buffer, layers[inx].name);
- sprintf(buffer, LAYERPREF_COLOR ".%0u", inx);
- wPrefSetInteger(LAYERPREF_SECTION, buffer, wDrawGetRGB(layers[inx].color));
- flags = 0;
-
- if (layers[inx].frozen) {
- flags |= LAYERPREF_FROZEN;
- }
-
- if (layers[inx].onMap) {
- flags |= LAYERPREF_ONMAP;
- }
-
- if (layers[inx].visible) {
- flags |= LAYERPREF_VISIBLE;
- }
-
- if (layers[inx].module) {
- flags |= LAYERPREF_MODULE;
- }
-
- if (layers[inx].button_off) {
- flags |= LAYERPREF_NOBUTTON;
- }
-
- sprintf(buffer, LAYERPREF_FLAGS ".%0u", inx);
- wPrefSetInteger(LAYERPREF_SECTION, buffer, flags);
-
- if (layers[inx].layerLinkList.cnt>0) {
- sprintf(buffer, LAYERPREF_LIST ".%0u", inx);
- GetLayerLinkString(inx,links);
- wPrefSetString(LAYERPREF_SECTION, buffer, links);
-
- if (settingsName[0] && strcmp(settingsName," ")!=0) {
- sprintf(buffer, LAYERPREF_SETTINGS ".%0u", inx);
- wPrefSetString(LAYERPREF_SECTION, buffer, layers[inx].settingsName);
- }
- }
-
- /* extend the list of layers that are set up via the preferences */
- if (layersSaved[ 0 ]) {
- strcat(layersSaved, ",");
- }
-
- sprintf(buffer, "%u", inx);
- strcat(layersSaved, buffer);
- }
- }
-
- wPrefSetString(LAYERPREF_SECTION, "layers", layersSaved);
-}
-
-
-/**
- * Load the settings for all layers from the preferences.
- */
-
-static void
-LayerPrefLoad(void)
-{
- const char *prefString;
- long rgb;
- long flags;
- /* reset layer preferences to system default */
- LayerSystemDefaults();
- prefString = wPrefGetString(LAYERPREF_SECTION, "layers");
-
- if (prefString && prefString[ 0 ]) {
- char layersSaved[3 * NUM_LAYERS];
- strncpy(layersSaved, prefString, sizeof(layersSaved));
- prefString = strtok(layersSaved, ",");
-
- while (prefString) {
- int inx;
- char layerOption[20];
- const char *layerValue;
- char listValue[STR_LONG_SIZE];
- int color;
- inx = atoi(prefString);
- sprintf(layerOption, LAYERPREF_NAME ".%d", inx);
- layerValue = wPrefGetString(LAYERPREF_SECTION, layerOption);
-
- if (layerValue) {
- strcpy(layers[inx].name, layerValue);
- } else {
- *(layers[inx].name) = '\0';
- }
-
- /* get and set the color, using the system default color in case color is not available from prefs */
- sprintf(layerOption, LAYERPREF_COLOR ".%d", inx);
- wPrefGetInteger(LAYERPREF_SECTION, layerOption, &rgb,
- layerColorTab[inx%COUNT(layerColorTab)]);
- color = wDrawFindColor(rgb);
- SetLayerColor(inx, color);
- /* get and set the flags */
- sprintf(layerOption, LAYERPREF_FLAGS ".%d", inx);
- wPrefGetInteger(LAYERPREF_SECTION, layerOption, &flags,
- LAYERPREF_ONMAP | LAYERPREF_VISIBLE);
- layers[inx].frozen = ((flags & LAYERPREF_FROZEN) != 0);
- layers[inx].onMap = ((flags & LAYERPREF_ONMAP) != 0);
- layers[inx].visible = ((flags & LAYERPREF_VISIBLE) != 0);
- layers[inx].module = ((flags & LAYERPREF_MODULE) !=0);
- layers[inx].button_off = ((flags & LAYERPREF_NOBUTTON) !=0);
-
- sprintf(layerOption, LAYERPREF_LIST ".%d", inx);
- layerValue = wPrefGetString(LAYERPREF_SECTION,layerOption);
- if (layerValue) {
- strcpy(listValue,layerValue);
- PutLayerListArray(inx,listValue);
- } else {
- listValue[0] = '\0';
- PutLayerListArray(inx,listValue);
- }
- sprintf(layerOption, LAYERPREF_SETTINGS ".%d", inx);
- layerValue = wPrefGetString(LAYERPREF_SECTION,layerOption);
- if (layerValue) {
- strcpy(layers[inx].settingsName,layerValue);
- } else {
- layers[inx].settingsName[0] = '\0';
- }
-
- prefString = strtok(NULL, ",");
- }
- }
- //Make sure curLayer not frozen
- for (int i=curLayer; i<NUM_LAYERS; i++) {
- if (!layers[i].frozen) {
- curLayer = i;
- break;
- }
- }
- if (layers[curLayer].frozen) {
- ErrorMessage( MSG_NO_EMPTY_LAYER );
- layers[0].frozen = FALSE;
- curLayer = 0;
- }
-}
-
-/**
- * Increment the count of objects on a given layer.
- *
- * \param index IN the layer to change
- */
-
-void IncrementLayerObjects(unsigned int layer)
-{
- assert(layer <= NUM_LAYERS);
- layers[layer].objCount++;
-}
-
-/**
-* Decrement the count of objects on a given layer.
-*
-* \param index IN the layer to change
-*/
-
-void DecrementLayerObjects(unsigned int layer)
-{
- assert(layer <= NUM_LAYERS);
- layers[layer].objCount--;
-}
-
-/**
- * Count the number of objects on each layer and store result in layers data structure.
- */
-
-void LayerSetCounts(void)
-{
- int inx;
- track_p trk;
-
- for (inx=0; inx<NUM_LAYERS; inx++) {
- layers[inx].objCount = 0;
- }
-
- for (trk=NULL; TrackIterate(&trk);) {
- inx = GetTrkLayer(trk);
-
- if (inx >= 0 && inx < NUM_LAYERS) {
- layers[inx].objCount++;
- }
- }
-}
-
-int FindUnusedLayer(unsigned int start) {
- int inx;
- for (inx=start; inx<NUM_LAYERS; inx++) {
- if (layers[inx].objCount == 0 && !layers[inx].frozen) return inx;
- }
- ErrorMessage( MSG_NO_EMPTY_LAYER );
- return -1;
-}
-
-/**
- * Reset layer options to their default values. The default values are loaded
- * from the preferences file.
- */
-
-void
-DefaultLayerProperties(void)
-{
- InitializeLayers(LayerPrefLoad, 0);
- UpdateLayerDlg(curLayer); //Use Current Layer
-
- if (layoutLayerChanged) {
- MainProc(mainW, wResize_e, NULL, NULL);
- layoutLayerChanged = FALSE;
- }
-}
-
-/**
- * Update all UI elements after selecting a layer.
- *
- */
-
-static void LayerUpdate(void)
-{
- BOOL_T redraw;
- char *layerFormattedName;
- ParamLoadData(&layerPG);
-
- if (!IsLayerValid(layerCurrent)) {
- return;
- }
-
- if (layerCurrent == curLayer && layerFrozen) {
- NoticeMessage(MSG_LAYER_FREEZE, _("Ok"), NULL);
- layerFrozen = FALSE;
- ParamLoadControl(&layerPG, I_FRZ);
- }
-
- if (layerCurrent == curLayer && !layerVisible) {
- NoticeMessage(MSG_LAYER_HIDE, _("Ok"), NULL);
- layerVisible = TRUE;
- ParamLoadControl(&layerPG, I_VIS);
- }
-
- if (layerCurrent == curLayer && layerModule) {
- NoticeMessage(MSG_LAYER_MODULE, _("Ok"), NULL);
- layerModule = FALSE;
- ParamLoadControl(&layerPG, I_MOD);
- }
- char oldLinkList[STR_LONG_SIZE];
- GetLayerLinkString((int)layerCurrent,oldLinkList);
-
- if (strcmp(layers[(int)layerCurrent].name, layerName) ||
- layerColor != layers[(int)layerCurrent].color ||
- layers[(int)layerCurrent].useColor != (BOOL_T)layerUseColor ||
- layers[(int)layerCurrent].visible != (BOOL_T)layerVisible ||
- layers[(int)layerCurrent].frozen != (BOOL_T)layerFrozen ||
- layers[(int)layerCurrent].onMap != (BOOL_T)layerOnMap ||
- layers[(int)layerCurrent].module != (BOOL_T)layerModule ||
- layers[(int)layerCurrent].button_off != (BOOL_T)layerNoButton ||
- strcmp(layers[(int)layerCurrent].settingsName,settingsName) ||
- strcmp(oldLinkList,layerLinkList)) {
- SetFileChanged();
- }
-
- if (layerL) {
- strncpy(layers[(int)layerCurrent].name, layerName,
- sizeof layers[(int)layerCurrent].name);
- layerFormattedName = FormatLayerName(layerCurrent);
- wListSetValues(layerL, layerCurrent, layerFormattedName, NULL, NULL);
- free(layerFormattedName);
- }
-
-
- layerFormattedName = FormatLayerName(layerCurrent);
- wListSetValues(setLayerL, layerCurrent, layerFormattedName, NULL, NULL);
- free(layerFormattedName);
-
- if (layerCurrent < NUM_BUTTONS && !layers[(int)layerCurrent].button_off) {
- if (strlen(layers[(int)layerCurrent].name)>0) {
- wControlSetBalloonText((wControl_p)layer_btns[(int)layerCurrent],
- layers[(int)layerCurrent].name);
- } else {
- wControlSetBalloonText((wControl_p)layer_btns[(int)layerCurrent],
- _("Show/Hide Layer"));
- }
- }
-
- redraw = (layerColor != layers[(int)layerCurrent].color ||
- layers[(int)layerCurrent].useColor != (BOOL_T)layerUseColor ||
- (BOOL_T)layerVisible != layers[(int)layerCurrent].visible);
-
- if ((!layerRedrawMap) && redraw) {
- RedrawLayer((unsigned int)layerCurrent, FALSE);
- }
-
- SetLayerColor(layerCurrent, layerColor);
-
- if (layerCurrent<NUM_BUTTONS &&
- layers[(int)layerCurrent].visible!=(BOOL_T)layerVisible && !layers[(int)layerCurrent].button_off) {
- wButtonSetBusy(layer_btns[(int)layerCurrent], layerVisible);
- }
-
- layers[(int)layerCurrent].useColor = (BOOL_T)layerUseColor;
- if (layers[(int)layerCurrent].visible != (BOOL_T)layerVisible)
- FlipLayer(I2VP(layerCurrent));
- layers[(int)layerCurrent].visible = (BOOL_T)layerVisible;
- layers[(int)layerCurrent].frozen = (BOOL_T)layerFrozen;
- if (layers[(int)layerCurrent].frozen) DeselectLayer(layerCurrent);
- layers[(int)layerCurrent].onMap = (BOOL_T)layerOnMap;
- layers[(int)layerCurrent].module = (BOOL_T)layerModule;
- strcpy(layers[(int)layerCurrent].settingsName,settingsName);
-
- PutLayerListArray((int)layerCurrent,layerLinkList);
-
- SetLayerHideButton(layerCurrent,layerNoButton);
-
- MainProc( mainW, wResize_e, NULL, NULL );
-
- if (layerRedrawMap) {
- DoRedraw();
- } else if (redraw) {
- RedrawLayer((unsigned int)layerCurrent, TRUE);
- }
-
- layerRedrawMap = FALSE;
-}
-
-
-static void LayerSelect(
- wIndex_t inx)
-{
- LayerUpdate();
-
- if (inx < 0 || inx >= NUM_LAYERS) {
- return;
- }
-
- layerCurrent = (unsigned int)inx;
- strcpy(layerName, layers[inx].name);
- strcpy(settingsName, layers[inx].settingsName);
- layerVisible = layers[inx].visible;
- layerFrozen = layers[inx].frozen;
- layerOnMap = layers[inx].onMap;
- layerModule = layers[inx].module;
- layerColor = layers[inx].color;
- layerUseColor = layers[inx].useColor;
- layerNoButton = layers[inx].button_off;
- sprintf(message, "%ld", layers[inx].objCount);
- GetLayerLinkString(inx,layerLinkList);
- ParamLoadMessage(&layerPG, I_COUNT, message);
- ParamLoadControls(&layerPG);
-
- if (layerS) {
- if (!LoadFileListLoad(settingsCatalog,settingsName)) {
- settingsName[0] = '\0';
- layers[inx].settingsName[0] = '\0';
- }
-
- }
-}
-
-void ResetLayers(void)
-{
- int inx;
-
- for (inx=0; inx<NUM_LAYERS; inx++) {
- strcpy(layers[inx].name, inx==0?_("Main"):"");
- layers[inx].visible = TRUE;
- layers[inx].frozen = FALSE;
- layers[inx].onMap = TRUE;
- layers[inx].module = FALSE;
- layers[inx].button_off = FALSE;
- layers[inx].objCount = 0;
- strcpy(layers[inx].settingsName,"");
- DYNARR_RESET(int,layers[inx].layerLinkList);
- SetLayerColor(inx, layerColorTab[inx%COUNT(layerColorTab)]);
-
-
- if (inx<NUM_BUTTONS) {
- wButtonSetLabel(layer_btns[inx], (char*)show_layer_bmps[inx]);
- }
- }
-
- wControlSetBalloonText((wControl_p)layer_btns[0], _("Main"));
-
- for (inx=1; inx<NUM_BUTTONS; inx++) {
- wControlSetBalloonText((wControl_p)layer_btns[inx], _("Show/Hide Layer"));
- }
-
- curLayer = -1;
-
- for (int i=0;i<NUM_LAYERS;i++) {
- if (!layers[i].frozen) {
- curLayer = i;
- break;
- }
- }
-
- if (curLayer == -1) {
- ErrorMessage( MSG_NO_EMPTY_LAYER );
- layers[0].frozen = FALSE;
- curLayer = 0;
- }
-
- layerVisible = TRUE;
- layerFrozen = FALSE;
- layerOnMap = TRUE;
- layerModule = FALSE;
- layerColor = layers[0].color;
- layerUseColor = TRUE;
- strcpy(layerName, layers[0].name);
- strcpy(settingsName, layers[0].settingsName);
-
- LoadLayerLists();
-
- if (layerL) {
- ParamLoadControls(&layerPG);
- ParamLoadMessage(&layerPG, I_COUNT, "0");
- }
-}
-
-
-void SaveLayers(void)
-{
- layers_save = malloc(NUM_LAYERS * sizeof(layers[0]));
-
- if (layers_save == NULL) {
- abort();
- }
-
- for (int i=0;i<NUM_LAYERS;i++) {
- layers[i].settingsName[0] = '\0';
- }
-
- memcpy(layers_save, layers, NUM_LAYERS * sizeof layers[0]);
- ResetLayers();
-}
-
-void RestoreLayers(void)
-{
- int inx;
- char * label;
- wDrawColor color;
- assert(layers_save != NULL);
- memcpy(layers, layers_save, NUM_LAYERS * sizeof layers[0]);
- free(layers_save);
-
- for (inx=0; inx<NUM_BUTTONS; inx++) {
- color = layers[inx].color;
- layers[inx].color = -1;
- SetLayerColor(inx, color);
-
- if (layers[inx].name[0] == '\0') {
- if (inx == 0) {
- label = _("Main");
- } else {
- label = _("Show/Hide Layer");
- }
- } else {
- label = layers[inx].name;
- }
-
- wControlSetBalloonText((wControl_p)layer_btns[inx], label);
- }
-
- if (layerL) {
- ParamLoadControls(&layerPG);
- ParamLoadMessage(&layerPG, I_COUNT, "0");
- }
-
- LoadLayerLists();
-}
-
-/**
- * This function is called when the Done button on the layer dialog is pressed. It hides the layer dialog and
- * updates the layer information.
- *
- * \param IN ignored
- *
- */
-
-static void LayerOk(void * unused)
-{
- LayerSelect(layerCurrent);
-
- if (newLayerCount != layerCount) {
- layoutLayerChanged = TRUE;
-
- if (newLayerCount > NUM_BUTTONS) {
- newLayerCount = NUM_BUTTONS;
- }
-
- layerCount = newLayerCount;
- }
-
- if (layoutLayerChanged) {
- MainProc(mainW, wResize_e, NULL, NULL);
- }
-
- wHide(layerW);
-}
-
-
-static void LayerDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP)
-{
- switch (inx) {
- case I_LIST:
- LayerSelect((wIndex_t)*(long*)valueP);
- break;
-
- case I_NAME:
- LayerUpdate();
- break;
-
- case I_MAP:
- layerRedrawMap = TRUE;
- /* No Break */
- case I_VIS:
- case I_FRZ:
- case I_MOD:
- case I_BUT:
- LayerUpdate();
- UpdateLayerDlg(layerCurrent);
- break;
-
- case I_SETTINGS:
- if (strcmp((char*)wListGetItemContext(settingsListL,(wIndex_t)*(long*)valueP)," ")==0)
- settingsName[0] = '\0';
- else
- strcpy(settingsName,(char*)wListGetItemContext(settingsListL,(wIndex_t)*(long*)valueP));
- break;
- }
-
-
-
-}
-
-/**
- * Scan opened directory for the next settings file
- *
- * \param dir IN opened directory handle
- * \param dirName IN name of directory
- * \param fileName OUT fully qualified filename
- *
- * \return TRUE if file found, FALSE if not
- */
-
-static bool
-GetNextSettingsFile(DIR *dir, const char *dirName, char **fileName)
-{
- bool done = false;
- bool res = false;
-
- /*
- * get all files from the directory
- */
- while (!done) {
- struct stat fileState;
- struct dirent *ent;
-
- ent = readdir(dir);
-
- if (ent) {
- if (!XtcStricmp(FindFileExtension(ent->d_name), "xset")) {
- /* create full file name and get the state for that file */
- MakeFullpath(fileName, dirName, ent->d_name, NULL);
-
- if (stat(*fileName, &fileState) == -1) {
- fprintf(stderr, "Error getting file state for %s\n", *fileName);
- continue;
- }
-
- /* ignore any directories */
- if (!(fileState.st_mode & S_IFDIR)) {
- done = true;
- res = true;
- }
- }
- } else {
- done = true;
- res = false;
- }
- }
- return (res);
-}
-
-
-/*
- * Get all the settings files in the working directory
- */
-
-static CatalogEntry *
-ScanSettingsDirectory(Catalog *catalog, const char *dirName)
-{
- DIR *d;
- CatalogEntry *newEntry = catalog->head;
- char contents[STR_SHORT_SIZE];
-
- d = opendir(dirName);
- if (d) {
- char *fileName = NULL;
-
- while (GetNextSettingsFile(d, dirName, &fileName)) {
- char *contents_start = strrchr(fileName,PATH_SEPARATOR[0]);
- if (contents_start[0] == '/') contents_start++;
- char *contents_end = strchr(contents_start,'.');
- if (contents_end[0] == '.') contents_end[0] = '\0';
- strcpy(contents,contents_start);
- contents_end[0] = '.';
- newEntry = InsertInOrder(catalog,contents, NULL);
- UpdateCatalogEntry(newEntry, fileName, contents, NULL);
- free(fileName);
- fileName = NULL;
- }
- closedir(d);
- }
-
- return (newEntry);
-}
-
-static void DoLayer(void * unused)
-{
- if (layerW == NULL) {
- layerW = ParamCreateDialog(&layerPG, MakeWindowTitle(_("Layers")), _("Done"),
- LayerOk, wHide, TRUE, NULL, 0, LayerDlgUpdate);
- }
-
- if (settingsCatalog) CatalogDiscard(settingsCatalog);
- else settingsCatalog = InitCatalog();
- ScanSettingsDirectory(settingsCatalog, wGetAppWorkDir());
-
-
- /* set the globals to the values for the current layer */
- UpdateLayerDlg(curLayer);
- layerRedrawMap = FALSE;
- wShow(layerW);
- layoutLayerChanged = FALSE;
-}
-
-
-
-BOOL_T ReadLayers(char * line)
-{
- char * name, *layerLinkList, *layerSettingsName;
- int inx, visible, frozen, color, onMap, module, dontUseColor, ColorFlags, button_off;
- unsigned long rgb;
-
- /* older files didn't support layers */
-
- if (paramVersion < 7) {
- return TRUE;
- }
-
- /* set the current layer */
-
- if (strncmp(line, "CURRENT", 7) == 0) {
- curLayer = atoi(line+7);
-
- if (!IsLayerValid(curLayer)) {
-
- curLayer = 0;
- }
-
- if (layers[curLayer].frozen) {
- ErrorMessage( MSG_NOT_UNFROZEN_LAYER );
- layers[curLayer].frozen = FALSE;
- }
-
- if (layerL) {
- wListSetIndex(layerL, curLayer);
- }
-
- if (setLayerL) {
- wListSetIndex(setLayerL, curLayer);
- }
-
- return TRUE;
- }
-
- if (strncmp(line, "LINK", 4) == 0) {
- if (!GetArgs(line+4, "dq" , &inx, &layerLinkList)) {
- return FALSE;
- }
- PutLayerListArray(inx,layerLinkList);
- return TRUE;
- }
-
- if (strncmp(line, "SET", 3) == 0) {
- if (!GetArgs(line+3, "dq", &inx, &layerSettingsName)) {
- return FALSE;
- }
- strcpy(layers[inx].settingsName,layerSettingsName);
- return TRUE;
- }
-
- /* get the properties for a layer from the file and update the layer accordingly */
-
- if (!GetArgs(line, "dddduddddq", &inx, &visible, &frozen, &onMap, &rgb, &module, &dontUseColor, &ColorFlags, &button_off,
- &name)) {
-
- return FALSE;
- }
-
-
- if (paramVersion < 9) {
- if ((int)rgb < COUNT( oldColorMap ) ) {
- rgb = wRGB(oldColorMap[(int)rgb][0], oldColorMap[(int)rgb][1],
- oldColorMap[(int)rgb][2]);
- } else {
- rgb = 0;
- }
- }
-
- if (inx < 0 || inx >= NUM_LAYERS) {
- return FALSE;
- }
-
- color = wDrawFindColor(rgb);
- SetLayerColor(inx, color);
- strncpy(layers[inx].name, name, sizeof layers[inx].name);
- layers[inx].visible = visible;
- layers[inx].frozen = frozen;
- layers[inx].onMap = onMap;
- layers[inx].module = module;
- layers[inx].color = color;
- layers[inx].useColor = !dontUseColor;
- layers[inx].button_off = button_off;
-
- colorTrack = ColorFlags&1; //Make sure globals are set
- colorDraw = ColorFlags&2;
-
- if (inx<NUM_BUTTONS && !layers[inx].button_off) {
- if (strlen(name) > 0) {
- wControlSetBalloonText((wControl_p)layer_btns[(int)inx], layers[inx].name);
- }
- wButtonSetBusy(layer_btns[(int)inx], visible);
- }
- MyFree(name);
-
- return TRUE;
-}
-
-/**
- * Find out whether layer information should be saved to the layout file.
- * Usually only layers where settings are off from the default are written.
- * NOTE: as a fix for a problem with XTrkCadReader a layer definition is
- * written for each layer that is used.
- *
- * \param layerNumber IN index of the layer
- * \return TRUE if configured, FALSE if not
- */
-
-BOOL_T
-IsLayerConfigured(unsigned int layerNumber)
-{
- return (!layers[layerNumber].visible ||
- layers[layerNumber].frozen ||
- !layers[layerNumber].onMap ||
- layers[layerNumber].module ||
- layers[layerNumber].button_off ||
- layers[layerNumber].color !=
- layerColorTab[layerNumber % (COUNT(layerColorTab))] ||
- layers[layerNumber].name[0] ||
- layers[layerNumber].layerLinkList.cnt > 0 ||
- layers[layerNumber].objCount);
-}
-
-
-/**
- * Save the layer information to the file.
- *
- * \paran f IN open file handle
- * \return always TRUE
- */
-
-BOOL_T WriteLayers(FILE * f)
-{
- unsigned int inx;
-
- int ColorFlags = 0;
-
- if (colorTrack) ColorFlags |= 1;
- if (colorDraw) ColorFlags |= 2;
-
- for (inx = 0; inx < NUM_LAYERS; inx++) {
- if (IsLayerConfigured(inx)) {
- fprintf(f, "LAYERS %u %d %d %d %ld %d %d %d %d \"%s\"\n",
- inx,
- layers[inx].visible,
- layers[inx].frozen,
- layers[inx].onMap,
- wDrawGetRGB(layers[inx].color),
- layers[inx].module,
- layers[inx].useColor?0:1,
- ColorFlags, layers[inx].button_off,
- PutTitle(layers[inx].name));
- }
- }
-
- fprintf(f, "LAYERS CURRENT %u\n", curLayer);
-
- for (inx = 0; inx < NUM_LAYERS; inx++) {
- GetLayerLinkString(inx,layerLinkList);
- if (IsLayerConfigured(inx) && strlen(layerLinkList)>0)
- fprintf(f, "LAYERS LINK %u \"%s\"\n",inx,layerLinkList);
- if (IsLayerConfigured(inx) && layers[inx].settingsName[0])
- fprintf(f, "LAYERS SET %u \"%s\"\n",inx, layers[inx].settingsName);
- }
- return TRUE;
-}
-
-#include "bitmaps/background.xpm"
-
-void InitLayers(void)
-{
- unsigned int i;
- wPrefGetInteger(PREFSECT, "layer-button-count", &layerCount, layerCount);
-
- for (i = 0; i<COUNT(layerRawColorTab); i++) {
- layerColorTab[i] = wDrawFindColor(layerRawColorTab[i]);
- }
-
- /* create the bitmaps for the layer buttons */
- /* all bitmaps have to have the same dimensions */
- for (int i = 0;i<NUM_LAYERS; i++) {
- // char *bits = (show_layer_bits[i] + iconSize * sizeof(char*)));
- show_layer_bmps[i] = wIconCreateBitMap(lbits_width[iconSize], lbits_height[iconSize],
- show_layer_bits[iconSize][i],
- layerColorTab[i%(COUNT(layerColorTab))]);
- layers[i].color = layerColorTab[i%(COUNT(layerColorTab))];
- layers[i].useColor = TRUE;
- }
-
- /* layer list for toolbar */
- setLayerL = wDropListCreate(mainW, 0, 0, "cmdLayerSet", NULL, 0, 10, 200, NULL,
- SetCurrLayer, NULL);
- wControlSetBalloonText((wControl_p)setLayerL, GetBalloonHelpStr("cmdLayerSet"));
- AddToolbarControl((wControl_p)setLayerL, IC_MODETRAIN_TOO);
-
- backgroundB = AddToolbarButton("cmdBackgroundShow", wIconCreatePixMap(background_xpm[iconSize]), 0,
- BackgroundToggleShow, NULL);
- /* add the help text */
- wControlSetBalloonText((wControl_p)backgroundB, _("Show/Hide Background"));
- wControlActive((wControl_p)backgroundB, FALSE);
-
- for (int i = 0; i<NUM_LAYERS; i++) {
- char *layerName;
-
- if (i<NUM_BUTTONS) {
- /* create the layer button */
- sprintf(message, "cmdLayerShow%u", i);
- layer_btns[i] = wButtonCreate(mainW, 0, 0, message,
- (char*)(show_layer_bmps[i]),
- BO_ICON, 0, FlipLayer, I2VP(i) );
- /* add the help text */
- wControlSetBalloonText((wControl_p)layer_btns[i], _("Show/Hide Layer"));
- /* put on toolbar */
- AddToolbarControl((wControl_p)layer_btns[i], IC_MODETRAIN_TOO);
- /* set state of button */
- wButtonSetBusy(layer_btns[i], 1);
- }
-
- layerName = FormatLayerName(i);
- wListAddValue(setLayerL, layerName, NULL, I2VP(i));
- free(layerName);
- }
-
- AddPlaybackProc("SETCURRLAYER", PlaybackCurrLayer, NULL);
- AddPlaybackProc("LAYERS", (playbackProc_p)ReadLayers, NULL);
-}
-
-addButtonCallBack_t InitLayersDialog(void)
-{
- ParamRegister(&layerPG);
- return &DoLayer;
-}
+/** \file dlayer.c
+ * Functions and dialogs for handling layers.
+ */
+
+/* XTrkCad - Model Railroad CAD
+ * Copyright (C) 2005 Dave Bullis and (C) 2007 Martin Fischer
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "common.h"
+#include "cselect.h"
+#include "custom.h"
+#include "paths.h"
+#include "dynstring.h"
+#include "fileio.h"
+#include "layout.h"
+#include "param.h"
+#include "track.h"
+#include "include/partcatalog.h"
+#include "include/stringxtc.h"
+#include "common-ui.h"
+
+/*****************************************************************************
+ *
+ * LAYERS
+ *
+ */
+
+#define NUM_BUTTONS (99)
+#define LAYERPREF_FROZEN (1)
+#define LAYERPREF_ONMAP (2)
+#define LAYERPREF_VISIBLE (4)
+#define LAYERPREF_MODULE (8)
+#define LAYERPREF_NOBUTTON (16)
+#define LAYERPREF_DEFAULT (32)
+#define LAYERPREF_SECTION ("Layers")
+#define LAYERPREF_NAME "name"
+#define LAYERPREF_COLOR "color"
+#define LAYERPREF_FLAGS "flags"
+#define LAYERPREF_SCALEINX "scaleInx"
+#define LAYERPREF_SCLDESCINX "sclDescInx"
+#define LAYERPREF_GAUGEINX "gaugeInx"
+#define LAYERPREF_MINRADIUS "minRadius"
+#define LAYERPREF_MAXGRADE "maxGrade"
+#define LAYERPREF_TIELENGTH "tieLength"
+#define LAYERPREF_TIEWIDTH "tieWidth"
+#define LAYERPREF_TIESPACING "tieSpacing"
+#define LAYERPREF_LIST "list"
+#define LAYERPREF_SETTINGS "settings"
+
+static paramIntegerRange_t r_nocheck = { 0, 1, 100, PDO_NORANGECHECK_LOW | PDO_NORANGECHECK_HIGH };
+static paramFloatRange_t r_tieData = { 0.05, 100.0, 100, PDO_NORANGECHECK_LOW | PDO_NORANGECHECK_HIGH };
+
+static paramFloatRange_t r0_10000 = { 0.0, 10000.0 };
+static paramFloatRange_t r0_90 = { 0.0, 90.0 };
+
+EXPORT unsigned int maxLayer;
+
+unsigned int curLayer;
+long layerCount = 10;
+static long newLayerCount = 10;
+static unsigned int layerSelected = 0;
+
+
+static BOOL_T layoutLayerChanged = FALSE;
+
+static wIcon_p show_layer_bmps[NUM_BUTTONS];
+static wButton_p layer_btns[NUM_BUTTONS]; /**< layer buttons on toolbar */
+
+/** Layer selector on toolbar */
+static wList_p setLayerL;
+
+/** Describe the properties of a layer
+ * Defaults for layout track grade and min radius are in scale.c: SetScale
+ */
+typedef struct {
+ char name[STR_SHORT_SIZE]; /**< Layer name */
+ wDrawColor color; /**< layer color, is an index into a color table */
+ BOOL_T useColor; /**< Use Layer color */
+ BOOL_T frozen; /**< Frozen flag */
+ BOOL_T visible; /**< visible flag */
+ BOOL_T onMap; /**< is layer shown map */
+ BOOL_T module; /**< is layer a module (all or nothing) */
+ BOOL_T button_off; /**< hide button */
+ BOOL_T inherit; /**< inherit layout defaults */
+ SCALEINX_T scaleInx; /**< scale override */
+ SCALEDESCINX_T scaleDescInx; /**< the scale description */
+ GAUGEINX_T gaugeInx; /**< the gauge desc index */
+ DIST_T minTrackRadius; /**< minimum track radius */
+ ANGLE_T maxTrackGrade; /**< maximum track grade */
+ tieData_t tieData; /**< tie data structure */
+ long objCount; /**< number of objects on layer */
+ dynArr_t layerLinkList; /**< other layers that show/hide with this one, 1-based index */
+ char settingsName[STR_SHORT_SIZE]; /**< name of settings file to load when this is current */
+} layer_t;
+
+static layer_t layers[NUM_LAYERS];
+static layer_t *layers_save = NULL;
+
+static Catalog * settingsCatalog;
+
+
+static int oldColorMap[][3] = {
+ { 255, 255, 255 }, /* White */
+ { 0, 0, 0 }, /* Black */
+ { 255, 0, 0 }, /* Red */
+ { 0, 255, 0 }, /* Green */
+ { 0, 0, 255 }, /* Blue */
+ { 255, 255, 0 }, /* Yellow */
+ { 255, 0, 255 }, /* Purple */
+ { 0, 255, 255 }, /* Aqua */
+ { 128, 0, 0 }, /* Dk. Red */
+ { 0, 128, 0 }, /* Dk. Green */
+ { 0, 0, 128 }, /* Dk. Blue */
+ { 128, 128, 0 }, /* Dk. Yellow */
+ { 128, 0, 128 }, /* Dk. Purple */
+ { 0, 128, 128 }, /* Dk. Aqua */
+ { 65, 105, 225 }, /* Royal Blue */
+ { 0, 191, 255 }, /* DeepSkyBlue */
+ { 125, 206, 250 }, /* LightSkyBlue */
+ { 70, 130, 180 }, /* Steel Blue */
+ { 176, 224, 230 }, /* Powder Blue */
+ { 127, 255, 212 }, /* Aquamarine */
+ { 46, 139, 87 }, /* SeaGreen */
+ { 152, 251, 152 }, /* PaleGreen */
+ { 124, 252, 0 }, /* LawnGreen */
+ { 50, 205, 50 }, /* LimeGreen */
+ { 34, 139, 34 }, /* ForestGreen */
+ { 255, 215, 0 }, /* Gold */
+ { 188, 143, 143 }, /* RosyBrown */
+ { 139, 69, 19 }, /* SaddleBrown */
+ { 245, 245, 220 }, /* Beige */
+ { 210, 180, 140 }, /* Tan */
+ { 210, 105, 30 }, /* Chocolate */
+ { 165, 42, 42 }, /* Brown */
+ { 255, 165, 0 }, /* Orange */
+ { 255, 127, 80 }, /* Coral */
+ { 255, 99, 71 }, /* Tomato */
+ { 255, 105, 180 }, /* HotPink */
+ { 255, 192, 203 }, /* Pink */
+ { 176, 48, 96 }, /* Maroon */
+ { 238, 130, 238 }, /* Violet */
+ { 160, 32, 240 }, /* Purple */
+ { 16, 16, 16 }, /* Gray */
+ { 32, 32, 32 }, /* Gray */
+ { 48, 48, 48 }, /* Gray */
+ { 64, 64, 64 }, /* Gray */
+ { 80, 80, 80 }, /* Gray */
+ { 96, 96, 96 }, /* Gray */
+ { 112, 112, 122 }, /* Gray */
+ { 128, 128, 128 }, /* Gray */
+ { 144, 144, 144 }, /* Gray */
+ { 160, 160, 160 }, /* Gray */
+ { 176, 176, 176 }, /* Gray */
+ { 192, 192, 192 }, /* Gray */
+ { 208, 208, 208 }, /* Gray */
+ { 224, 224, 224 }, /* Gray */
+ { 240, 240, 240 }, /* Gray */
+ { 0, 0, 0 } /* BlackPixel */
+};
+
+static void DoLayerOp(void * data);
+void UpdateLayerDlg(unsigned int);
+
+static void InitializeLayers(void LayerInitFunc(void), int newCurrLayer);
+static void LayerPrefSave(void);
+static void LayerPrefLoad(void);
+
+int IsLayerValid(unsigned int layer)
+{
+ return (layer <= NUM_LAYERS && layer != -1);
+}
+
+BOOL_T GetLayerVisible(unsigned int layer)
+{
+ if (!IsLayerValid(layer)) {
+ return TRUE;
+ } else {
+ return layers[layer].visible;
+ }
+}
+
+BOOL_T GetLayerHidden(unsigned int layer)
+{
+ if (!IsLayerValid(layer)) {
+ return TRUE;
+ } else {
+ return layers[layer].button_off;
+ }
+}
+
+
+BOOL_T GetLayerFrozen(unsigned int layer)
+{
+ if (!IsLayerValid(layer)) {
+ return TRUE;
+ } else {
+ return layers[layer].frozen;
+ }
+}
+
+BOOL_T GetLayerOnMap(unsigned int layer)
+{
+ if (!IsLayerValid(layer)) {
+ return TRUE;
+ } else {
+ return layers[layer].onMap;
+ }
+}
+
+EXPORT BOOL_T GetLayerUseDefault(unsigned int layer)
+{
+ if (!IsLayerValid(layer)) {
+ return TRUE;
+ } else {
+ return layers[layer].inherit;
+ }
+}
+
+
+EXPORT SCALEINX_T GetLayerScale( unsigned int layer )
+{
+ if ( IsLayerValid(layer) && !GetLayerUseDefault(layer) ) {
+ return layers[layer].scaleInx;
+ }
+ return GetLayoutCurScale(); // layout scale
+}
+
+EXPORT DIST_T GetLayerMinTrackRadius( unsigned int layer )
+{
+ if ( IsLayerValid(layer) && !GetLayerUseDefault(layer) ) {
+ return layers[layer].minTrackRadius;
+ }
+ return GetLayoutMinTrackRadius();
+}
+
+EXPORT ANGLE_T GetLayerMaxTrackGrade( unsigned int layer )
+{
+ if ( IsLayerValid(layer) && !GetLayerUseDefault(layer) ) {
+ return layers[layer].maxTrackGrade;
+ }
+ return GetLayoutMaxTrackGrade();
+}
+
+EXPORT tieData_t GetLayerTieData( unsigned int layer )
+{
+ if ( IsLayerValid(layer) && !GetLayerUseDefault(layer)
+ && layers[layer].tieData.valid ) {
+ return layers[layer].tieData;
+ }
+ return GetScaleTieData(GetLayoutCurScale()); // layout scale default tie data
+}
+
+BOOL_T GetLayerModule(unsigned int layer)
+{
+ if (!IsLayerValid(layer)) {
+ return TRUE;
+ } else {
+ return layers[layer].module;
+ }
+}
+
+void SetLayerModule(unsigned int layer, BOOL_T module)
+{
+ if (IsLayerValid(layer)) {
+ layers[layer].module = module;
+ }
+}
+
+void SetLayerDefault(unsigned int layer, BOOL_T inherit)
+{
+ if (IsLayerValid(layer)) {
+ layers[layer].inherit = inherit;
+ }
+}
+
+
+char * GetLayerName(unsigned int layer)
+{
+ if (!IsLayerValid(layer)) {
+ return NULL;
+ } else {
+ return layers[layer].name;
+ }
+}
+
+void SetLayerName(unsigned int layer, char* name)
+{
+ if (IsLayerValid(layer)) {
+ strcpy(layers[layer].name, name);
+ }
+}
+
+BOOL_T GetLayerUseColor(unsigned int layer)
+{
+ return layers[layer].useColor;
+}
+
+wDrawColor GetLayerColor(unsigned int layer)
+{
+ return layers[layer].color;
+}
+
+static void RedrawLayer( unsigned int l, BOOL_T draw )
+{
+ DoRedraw();
+}
+
+
+EXPORT void FlipLayer( void * layerVP )
+{
+ unsigned int layer = (unsigned int)VP2L(layerVP);
+ wBool_t visible;
+
+ if (!IsLayerValid(layer)) {
+ return;
+ }
+
+ if (layer == curLayer && layers[layer].visible) {
+ if (!layers[layer].button_off) {
+ wButtonSetBusy(layer_btns[layer], layers[layer].visible);
+ }
+ NoticeMessage(MSG_LAYER_HIDE, _("Ok"), NULL);
+ return;
+ }
+
+ RedrawLayer(layer, FALSE);
+ visible = !layers[layer].visible;
+ layers[layer].visible = visible;
+
+ if (layer < NUM_BUTTONS) {
+ if (!layers[layer].button_off) {
+ wButtonSetBusy(layer_btns[layer], visible != 0);
+ wButtonSetLabel(layer_btns[layer], (char *)show_layer_bmps[layer]);
+ }
+ }
+
+ /* Set visible on related layers other than current */
+ for (int i = 0; i < layers[layer].layerLinkList.cnt; i++) {
+ // .layerLinkList values are 1-based layer indices
+ int l = DYNARR_N(int, layers[layer].layerLinkList, i) - 1;
+ if ((l != curLayer) && (l >= 0) && (l < NUM_LAYERS)) {
+ layers[l].visible = layers[layer].visible;
+ if (!layers[l].button_off) {
+ wButtonSetBusy(layer_btns[l], layers[l].visible);
+ }
+ }
+ }
+
+ RedrawLayer(layer, TRUE);
+}
+
+static char lastSettings[STR_SHORT_SIZE];
+void SetCurrLayer(wIndex_t inx, const char * name, wIndex_t op,
+ void * listContext, void * arg)
+{
+ unsigned int newLayer = (unsigned int)inx;
+
+ if (layers[newLayer].frozen) {
+ NoticeMessage(MSG_LAYER_SEL_FROZEN, _("Ok"), NULL);
+ wListSetIndex(setLayerL, curLayer);
+ return;
+ }
+
+ char *array[1];
+ if (!layers[inx].settingsName[0]
+ || strcmp(layers[inx].settingsName, " ") == 0) {
+ if (lastSettings[0]) {
+ DoSettingsRead(1, NULL, NULL);
+ }
+ lastSettings[0] = '\0';
+ } else {
+ if (strcmp(layers[inx].settingsName, lastSettings) != 0) {
+ if (!lastSettings[0]) { wPrefFlush(""); } // Save Last Settings for no settings file
+ array[0] = layers[inx].settingsName;
+ DoSettingsRead(1, array, NULL);
+ }
+ strcpy(lastSettings, layers[inx].settingsName);
+ }
+
+
+ curLayer = newLayer;
+
+ if (!IsLayerValid(curLayer)) {
+ curLayer = 0; //Too big or -1
+ layers[curLayer].frozen = FALSE; //Make sure the layer is not frozen
+ }
+
+
+ if (!layers[curLayer].visible) {
+ FlipLayer(I2VP(inx));
+ }
+
+ /* Set visible on related layers other than current */
+ for (int i = 0; i < layers[curLayer].layerLinkList.cnt; i++) {
+ // .layerLinkList values are 1-based layer indices
+ int l = DYNARR_N(int, layers[curLayer].layerLinkList, i) - 1;
+ if (l != curLayer && l >= 0 && l < NUM_LAYERS) {
+ layers[l].visible = layers[curLayer].visible;
+ if (!layers[l].button_off) {
+ wButtonSetBusy(layer_btns[l], layers[l].visible);
+ }
+ }
+ }
+
+ if (recordF) {
+ fprintf(recordF, "SETCURRLAYER %d\n", inx);
+ }
+}
+
+static void PlaybackCurrLayer(char * line)
+{
+ wIndex_t layer;
+ layer = atoi(line);
+ wListSetIndex(setLayerL, layer);
+ SetCurrLayer(layer, NULL, 0, NULL, NULL);
+}
+
+/**
+ * Change the color of a layer.
+ *
+ * \param inx IN layer to change
+ * \param color IN new color
+ */
+
+static void SetLayerColor(unsigned int inx, wDrawColor color)
+{
+ if (color != layers[inx].color) {
+ if (inx < NUM_BUTTONS) {
+ wIconSetColor(show_layer_bmps[inx], color);
+ wButtonSetLabel(layer_btns[inx], (char*)show_layer_bmps[inx]);
+ }
+
+ layers[inx].color = color;
+ layoutLayerChanged = TRUE;
+ }
+}
+
+static void SetLayerHideButton(unsigned int inx, wBool_t hide)
+{
+ if (hide != layers[inx].button_off) {
+ if (inx < NUM_BUTTONS) {
+ wControlShow((wControl_p)layer_btns[inx], !hide);
+ if (!hide) { wButtonSetBusy(layer_btns[inx], layers[inx].visible); }
+ }
+ layers[inx].button_off = hide;
+ layoutLayerChanged = TRUE;
+ }
+}
+
+char *
+FormatLayerName(unsigned int layerNumber)
+{
+ DynString string;// = NaS;
+ char *result;
+ DynStringMalloc(&string, 0);
+ DynStringPrintf(&string,
+ "%2d %c %s",
+ layerNumber + 1,
+ (layers[layerNumber].frozen ? '*' : layers[layerNumber].module ? 'm' :
+ layers[layerNumber].objCount > 0 ? '+' : '-'),
+ layers[layerNumber].name);
+ result = strdup(DynStringToCStr(&string));
+ DynStringFree(&string);
+ return result;
+}
+
+static char *show_layer_bits;
+
+static long layerRawColorTab[] = {
+ wRGB( 0, 0, 192), /* blue */
+ wRGB( 0, 192, 0), /* green */
+ wRGB(192, 0, 0), /* red */
+ wRGB(128, 128, 0), /* yellow */
+ wRGB( 0, 128, 128), /* cyan */
+ wRGB( 0, 0, 128), /* dk blue */
+ wRGB( 0, 128, 0), /* dk green */
+ wRGB(128, 0, 0), /* dk red */
+ wRGB( 96, 96, 0), /* green-brown */
+ wRGB( 0, 96, 96) /* dk cyan */
+};
+static wDrawColor layerColorTab[COUNT(layerRawColorTab)];
+
+
+static wWin_p layerW;
+static char layerName[STR_SHORT_SIZE];
+static char layerLinkList[STR_LONG_SIZE];
+static char settingsName[STR_SHORT_SIZE];
+static wDrawColor layerColor;
+static long layerUseColor = TRUE;
+static long layerVisible = TRUE;
+static long layerFrozen = FALSE;
+static long layerOnMap = TRUE;
+static long layerModule = FALSE;
+static long layerNoButton = FALSE;
+static long layerInherit = FALSE;
+
+static SCALEINX_T layerScaleInx;
+static SCALEDESCINX_T layerScaleDescInx;
+static GAUGEINX_T layerGaugeInx;
+static DIST_T layerMinRadius;
+static ANGLE_T layerMaxGrade;
+static tieData_t layerTieData;
+
+static long layerObjectCount;
+static void LayerOk(void * unused);
+static BOOL_T layerRedrawMap = FALSE;
+
+#define ENUMLAYER_RELOAD (1)
+#define ENUMLAYER_SAVE (2)
+#define ENUMLAYER_CLEAR (3)
+#define ENUMLAYER_ADD (4)
+#define ENUMLAYER_DELETE (5)
+#define ENUMLAYER_DEFAULT (6)
+
+static char *visibleLabels[] = { "", NULL };
+static char *frozenLabels[] = { "", NULL };
+static char *onMapLabels[] = { "", NULL };
+static char *moduleLabels[] = { "", NULL };
+static char *noButtonLabels[] = { "", NULL };
+static char *defaultLabels[] = { "", NULL };
+static char *layerColorLabels[] = { "", NULL };
+static paramIntegerRange_t i0_20 = { 0, NUM_BUTTONS };
+//static paramListData_t layerUiListData = { 10, 370, 0 };
+
+static paramData_t layerPLs[] = {
+#define I_LIST (0)
+ { PD_DROPLIST, NULL, "layer", PDO_LISTINDEX, I2VP(250), N_("Select Layer:") },
+#define I_NAME (1)
+ { PD_STRING, layerName, "name", PDO_NOPREF | PDO_STRINGLIMITLENGTH | PDO_DLGBOXEND, I2VP(250 - 54), N_("Name"), 0, 0, sizeof(layerName) },
+#define I_COLOR (2)
+ { PD_COLORLIST, &layerColor, "color", PDO_NOPREF, NULL, N_("Color") },
+#define I_USE_COLOR (3)
+ { PD_TOGGLE, &layerUseColor, "layercolor", PDO_NOPREF | PDO_DLGHORZ, layerColorLabels, N_("Use Color"), BC_HORZ | BC_NOBORDER },
+#define I_VIS (4)
+ { PD_TOGGLE, &layerVisible, "visible", PDO_NOPREF, visibleLabels, N_("Visible"), BC_HORZ | BC_NOBORDER },
+#define I_FRZ (5)
+ { PD_TOGGLE, &layerFrozen, "frozen", PDO_NOPREF | PDO_DLGHORZ, frozenLabels, N_("Frozen"), BC_HORZ | BC_NOBORDER },
+#define I_MAP (6)
+ { PD_TOGGLE, &layerOnMap, "onmap", PDO_NOPREF | PDO_DLGHORZ, onMapLabels, N_("On Map"), BC_HORZ | BC_NOBORDER },
+#define I_MOD (7)
+ { PD_TOGGLE, &layerModule, "module", PDO_NOPREF | PDO_DLGHORZ, moduleLabels, N_("Module"), BC_HORZ | BC_NOBORDER },
+#define I_BUT (8)
+ { PD_TOGGLE, &layerNoButton, "button", PDO_NOPREF | PDO_DLGHORZ, noButtonLabels, N_("No Button"), BC_HORZ | BC_NOBORDER },
+#define I_DEF (9)
+ { PD_TOGGLE, &layerInherit, "inherit", PDO_NOPREF | PDO_DLGHORZ | PDO_DLGBOXEND, defaultLabels, N_("Inherit"), BC_HORZ | BC_NOBORDER },
+#define I_SCALE (10)
+ { PD_DROPLIST, &layerScaleDescInx, "scale", PDO_NOPREF | PDO_NOPSHUPD | PDO_NORECORD | PDO_NOUPDACT, I2VP(180), N_("Scale"), 0, I2VP(CHANGE_LAYER) },
+#define I_GAUGE (11)
+ { PD_DROPLIST, &layerGaugeInx, "gauge", PDO_NOPREF | PDO_NOPSHUPD | PDO_NORECORD | PDO_NOUPDACT | PDO_DLGHORZ, I2VP(180), N_(" Gauge") },
+#define I_MINRADIUSENTRY (12)
+ { PD_FLOAT, &layerMinRadius, "mintrackradius", PDO_DIM | PDO_NOPSHUPD | PDO_NOPREF, &r0_10000, N_("Min Track Radius"), 0, I2VP(CHANGE_MAIN | CHANGE_LIMITS) },
+#define I_MAXGRADEENTRY (13)
+ { PD_FLOAT, &layerMaxGrade, "maxtrackgrade", PDO_NOPSHUPD | PDO_DLGHORZ | PDO_NOPREF, &r0_90, N_(" Max Track Grade (%)"), 0, I2VP(CHANGE_MAIN) },
+#define I_TIELEN (14)
+ { PD_FLOAT, &layerTieData.length, "tielength", PDO_NOPREF, &r_tieData, N_( "Tie Length" ), 0, I2VP( CHANGE_MAIN ) },
+#define I_TIEWID (15)
+ { PD_FLOAT, &layerTieData.width, "tiewidth", PDO_NOPREF | PDO_DLGHORZ, &r_tieData, N_( " Width" ), 0, I2VP( CHANGE_MAIN ) },
+#define I_TIESPC (16)
+ { PD_FLOAT, &layerTieData.spacing, "tiespacing", PDO_NOPREF | PDO_DLGHORZ | PDO_DLGBOXEND, &r_tieData, N_( " Spacing" ), 0, I2VP( CHANGE_MAIN ) },
+
+ { PD_MESSAGE, N_("Layer Actions"), NULL, PDO_DLGRESETMARGIN, I2VP(180) },
+#define I_ADD (18)
+ { PD_BUTTON, DoLayerOp, "add", PDO_DLGRESETMARGIN, 0, N_("Add Layer"), 0, I2VP(ENUMLAYER_ADD) },
+#define I_DELETE (19)
+ { PD_BUTTON, DoLayerOp, "delete", PDO_DLGHORZ, 0, N_("Delete Layer"), 0, I2VP(ENUMLAYER_DELETE) },
+#define I_DEFAULT (20)
+ { PD_BUTTON, DoLayerOp, "default", PDO_DLGHORZ | PDO_DLGBOXEND, 0, N_("Default Values"), 0, I2VP(ENUMLAYER_DEFAULT) },
+ { PD_LONG, &newLayerCount, "button-count", PDO_DLGBOXEND | PDO_DLGRESETMARGIN, &i0_20, N_("Number of Layer Buttons") },
+#define I_LINKLIST (22)
+ { PD_STRING, layerLinkList, "layerlist", PDO_NOPREF | PDO_STRINGLIMITLENGTH, I2VP(250 - 54), N_("Linked Layers"), 0, 0, sizeof(layerLinkList) },
+#define I_SETTINGS (23)
+ { PD_DROPLIST, NULL, "settings", PDO_LISTINDEX, I2VP(250), N_("Settings when Current") },
+#define I_COUNT (24)
+ { PD_LONG, &layerObjectCount, "objectCount", PDO_DLGBOXEND, &r_nocheck, N_("Object Count:"), 0, 0 },
+ { PD_MESSAGE, N_("All Layer Preferences"), NULL, PDO_DLGRESETMARGIN, I2VP(180) },
+ { PD_BUTTON, DoLayerOp, "load", PDO_DLGRESETMARGIN, 0, N_("Load"), 0, I2VP(ENUMLAYER_RELOAD) },
+ { PD_BUTTON, DoLayerOp, "save", PDO_DLGHORZ, 0, N_("Save"), 0, I2VP(ENUMLAYER_SAVE) },
+ { PD_BUTTON, DoLayerOp, "clear", PDO_DLGHORZ | PDO_DLGBOXEND, 0, N_("Defaults"), 0, I2VP(ENUMLAYER_CLEAR) },
+};
+
+#define settingsListL ((wList_p)layerPLs[I_SETTINGS].control)
+
+static paramGroup_t layerPG = { "layer", 0, layerPLs, COUNT( layerPLs ) };
+
+/**
+ * Reload the listbox showing the current catalog
+ */
+static int LoadFileListLoad(Catalog *catalog, char * name)
+{
+ CatalogEntry *currentEntry = catalog->head;
+ DynString description;
+ DynStringMalloc(&description, STR_SHORT_SIZE);
+
+ wControlShow((wControl_p)settingsListL, FALSE);
+ wListClear(settingsListL);
+
+ int currset = 0;
+
+ int i = 0;
+
+ wListAddValue(settingsListL, " ", NULL, " ");
+
+ while (currentEntry) {
+ i++;
+ DynStringClear(&description);
+ DynStringCatCStr(&description,
+ currentEntry->contents) ;
+ wListAddValue(settingsListL,
+ DynStringToCStr(&description),
+ NULL,
+ currentEntry->fullFileName[0]);
+ if (strcmp(currentEntry->fullFileName[0], name) == 0) { currset = i; }
+ currentEntry = currentEntry->next;
+ }
+
+
+ wListSetIndex(settingsListL, currset);
+
+ wControlShow((wControl_p)settingsListL, TRUE);
+
+ DynStringFree(&description);
+
+ if (currset == 0 && strcmp(" ", name) != 0) { return FALSE; }
+ return TRUE;
+}
+
+#define layerL ((wList_p)layerPLs[I_LIST].control)
+
+#define layerS ((wList_p)layerPLs[I_SETTINGS].control)
+
+#define scaleL ((wList_p)layerPLs[I_SCALE].control)
+
+#define gaugeL ((wList_p)layerPLs[I_GAUGE].control)
+
+/**
+* @brief Reload Layer parameters if changes
+* @param changes
+*/
+static void LayerChange(long changes)
+{
+ if (changes & (CHANGE_LAYER))
+ if (layerW != NULL && wWinIsVisible(layerW)) {
+ ParamLoadControls(&layerPG);
+ }
+}
+
+void GetLayerLinkString(int inx, char * list)
+{
+ char * cp = &list[0];
+ cp[0] = '\0';
+ int len = 0;
+ for (int i = 0; i < layers[inx].layerLinkList.cnt
+ && len < STR_LONG_SIZE - 5; i++) {
+ int l = DYNARR_N(int, layers[inx].layerLinkList, i);
+ if (i == 0) {
+ cp += sprintf(cp, "%d", l);
+ } else {
+ cp += sprintf(cp, ";%d", l);
+ }
+ cp[0] = '\0';
+ }
+}
+
+void PutLayerListArray(int inx, char * list)
+{
+ char * cp = &list[0];
+ DYNARR_RESET(int, layers[inx].layerLinkList);
+ while (cp) {
+ cp = strpbrk(list, ",; ");
+ if (cp) {
+ cp[0] = '\0';
+ int i = abs((int)strtol(list, &list, 0));
+ if (i > 0 && i != inx - 1 && i < NUM_LAYERS) {
+ DYNARR_APPEND(int, layers[inx].layerLinkList, 1);
+ DYNARR_LAST(int, layers[inx].layerLinkList) = i;
+ }
+ cp[0] = ';';
+ list = cp + 1;
+ } else {
+ int i = abs((int)strtol(list, &list, 0));
+ if (i > 0 && i != inx - 1 && i < NUM_LAYERS) {
+ DYNARR_APPEND(int, layers[inx].layerLinkList, 1);
+ DYNARR_LAST(int, layers[inx].layerLinkList) = i;
+ }
+ cp = 0;
+ }
+ }
+}
+
+/**
+ * Set a Layer to System Default
+ */
+void LayerSystemDefault( unsigned int inx )
+{
+
+ strcpy(layers[inx].name, inx == 0 ? _("Main") : "");
+ layers[inx].visible = TRUE;
+ layers[inx].frozen = FALSE;
+ layers[inx].onMap = TRUE;
+ layers[inx].module = FALSE;
+ layers[inx].button_off = FALSE;
+ layers[inx].inherit = TRUE;
+ layers[inx].scaleInx = 0;
+ GetScaleGauge(layers[inx].scaleInx, &layers[inx].scaleDescInx,
+ &layers[inx].gaugeInx);
+ layers[inx].minTrackRadius = GetLayoutMinTrackRadius();
+ layers[inx].maxTrackGrade = GetLayoutMaxTrackGrade();
+ layers[inx].tieData.valid = FALSE;
+ layers[inx].tieData.length = 0.0;
+ layers[inx].tieData.width = 0.0;
+ layers[inx].tieData.spacing = 0.0;
+ layers[inx].objCount = 0;
+ DYNARR_RESET(int, layers[inx].layerLinkList);
+ SetLayerColor(inx, layerColorTab[inx % COUNT(layerColorTab)]);
+}
+
+/**
+ * Is a layer the system default?
+ */
+BOOL_T IsLayerDefault( unsigned int inx )
+{
+ return (!layers[inx].name[0]) &&
+ layers[inx].visible &&
+ !layers[inx].frozen &&
+ layers[inx].onMap &&
+ !layers[inx].module &&
+ !layers[inx].button_off &&
+ layers[inx].inherit &&
+ (!layers[inx].layerLinkList.cnt) &&
+ (layers[inx].color == layerColorTab[inx % COUNT(layerColorTab)]) &&
+ layers[inx].scaleInx == 0 &&
+ //layers[inx].scaleDescInx != layerScaleDescInx ||
+ //layers[inx].gaugeInx != layerGaugeInx ||
+ layers[inx].minTrackRadius == GetLayoutMinTrackRadius() &&
+ layers[inx].maxTrackGrade == GetLayoutMaxTrackGrade() &&
+ layers[inx].tieData.valid == FALSE &&
+ layers[inx].tieData.length == 0.0 &&
+ layers[inx].tieData.width == 0.0 &&
+ layers[inx].tieData.spacing == 0.0;
+}
+
+/**
+ * Load the layer settings to hard coded system defaults
+ */
+EXPORT void LayerAllDefaults(void)
+{
+ int inx;
+
+ for (inx = 0; inx < NUM_LAYERS; inx++) {
+ LayerSystemDefault(inx);
+ }
+}
+
+/**
+ * Load the layer listboxes in Manage Layers and the Toolbar with up-to-date information.
+ */
+void LoadLayerLists(void)
+{
+ int inx;
+ /* clear both lists */
+ wListClear(setLayerL);
+
+ if (layerL) {
+ wListClear(layerL);
+ }
+
+ if (layerS) {
+ wListClear(layerS);
+ }
+
+
+ /* add all layers to both lists */
+ for (inx = 0; inx < NUM_LAYERS; inx++) {
+ char *layerLabel;
+ layerLabel = FormatLayerName(inx);
+
+ if (layerL) {
+ wListAddValue(layerL, layerLabel, NULL, NULL);
+ }
+
+ wListAddValue(setLayerL, layerLabel, NULL, NULL);
+ free(layerLabel);
+ }
+
+ /* set current layer to selected */
+ wListSetIndex(setLayerL, curLayer);
+
+ if (layerL) {
+ wListSetIndex(layerL, curLayer);
+ }
+}
+
+/**
+ * Add a layer after selected layer
+ */
+static void LayerAdd( )
+{
+ unsigned int inx;
+ unsigned int newLayer = layerSelected + 1;
+
+ // UndoStart( _("Add Layer"), "addlayer" );
+ maxLayer++;
+ for ( inx = maxLayer; inx > newLayer; inx-- ) {
+ layers[inx] = layers[inx - 1];
+ }
+
+ TrackInsertLayer(newLayer);
+
+ LayerSystemDefault(newLayer);
+ strcpy(layers[newLayer].name, "New Layer");
+ layers[newLayer].objCount = 0;
+
+ UpdateLayerDlg( newLayer );
+
+ layerSelected = newLayer;
+ layoutLayerChanged = TRUE;
+ // UndoEnd();
+}
+
+/**
+* Delete the selected layer
+*/
+static void LayerDelete( )
+{
+ unsigned int inx;
+
+ if (layers[layerSelected].objCount > 0) {
+ NoticeMessage(_("Layer must not have any objects in it."), _("Ok"), NULL);
+ return;
+ }
+
+ if (layerSelected <= maxLayer) {
+ for ( inx = layerSelected; inx < maxLayer; inx++ ) {
+ layers[inx] = layers[inx + 1];
+ }
+ LayerSystemDefault(maxLayer);
+
+ if (maxLayer > 0) {
+ maxLayer--;
+ }
+ }
+
+ TrackDeleteLayer( layerSelected );
+
+ UpdateLayerDlg( layerSelected );
+
+ layoutLayerChanged = TRUE;
+}
+
+/**
+* Set the Min Radius, Max Grade and Tie values to Layout or Scale defaults
+*/
+static void LayerDefault( )
+{
+ if ( layers[layerSelected].inherit ) {
+ layers[layerSelected].scaleInx = GetLayoutCurScale( );
+ GetScaleGauge(layers[layerSelected].scaleInx,
+ &layers[layerSelected].scaleDescInx,
+ &layers[layerSelected].gaugeInx);
+ layers[layerSelected].minTrackRadius = GetLayoutMinTrackRadius();
+ layers[layerSelected].maxTrackGrade = GetLayoutMaxTrackGrade();
+ } else {
+ layers[layerSelected].scaleInx = GetLayerScale( layerSelected );
+ GetScaleGauge(layers[layerSelected].scaleInx,
+ &layers[layerSelected].scaleDescInx,
+ &layers[layerSelected].gaugeInx);
+ layers[layerSelected].minTrackRadius = GetLayoutMinTrackRadius();
+ layers[layerSelected].maxTrackGrade = GetLayoutMaxTrackGrade();
+ }
+ layers[layerSelected].tieData = GetScaleTieData(layers[layerSelected].scaleInx);
+
+ UpdateLayerDlg( layerSelected );
+
+ layoutLayerChanged = TRUE;
+}
+
+/**
+ * Handle button presses for the layer dialog. For all button presses in the layer
+ * dialog, this function is called. The parameter identifies the button pressed and
+ * the operation is performed.
+ *
+ * \param[IN] data identifier for the button pressed
+ * \return
+ */
+
+static void DoLayerOp(void * data)
+{
+ switch (VP2L(data)) {
+ case ENUMLAYER_CLEAR:
+ InitializeLayers(LayerAllDefaults, -1);
+ break;
+
+ case ENUMLAYER_SAVE:
+ LayerPrefSave();
+ break;
+
+ case ENUMLAYER_RELOAD:
+ LayerPrefLoad();
+ break;
+
+ case ENUMLAYER_ADD:
+ LayerAdd();
+ break;
+
+ case ENUMLAYER_DELETE:
+ LayerDelete();
+ break;
+
+ case ENUMLAYER_DEFAULT:
+ LayerDefault();
+ break;
+ }
+
+ // UpdateLayerDlg(curLayer); //Reset to current Layer
+ ParamControlActive( &layerPG, I_DELETE, (layerSelected > 0) ? TRUE : FALSE);
+
+ if (layoutLayerChanged) {
+ MainProc(mainW, wResize_e, NULL, NULL);
+ layoutLayerChanged = FALSE;
+ SetFileChanged();
+ }
+}
+
+/**
+ * Update all dialogs and dialog elements after changing layers preferences. Once the global array containing
+ * the settings for the labels has been changed, this function needs to be called to update all the user interface
+ * elements to the new settings.
+ */
+EXPORT void UpdateLayerDlg(unsigned int layer)
+{
+ int inx;
+ /* update the globals for the layer dialog */
+ layerVisible = layers[layer].visible;
+ layerFrozen = layers[layer].frozen;
+ layerOnMap = layers[layer].onMap;
+ layerModule = layers[layer].module;
+ layerColor = layers[layer].color;
+ layerUseColor = layers[layer].useColor;
+ layerNoButton = layers[layer].button_off;
+ layerInherit = layers[layer].inherit;
+ layerScaleInx = layers[layer].scaleInx;
+ layerScaleDescInx = layers[layer].scaleDescInx;
+ layerGaugeInx = layers[layer].gaugeInx;
+ layerMinRadius = layers[layer].minTrackRadius;
+ layerMaxGrade = layers[layer].maxTrackGrade;
+ layerTieData = layers[layer].tieData;
+ layerObjectCount = layers[layer].objCount;
+ strcpy(layerName, layers[layer].name);
+ strcpy(settingsName, layers[layer].settingsName);
+ GetLayerLinkString(layer, layerLinkList);
+
+ layerSelected = layer;
+
+ /* now re-load the layer list boxes */
+ LoadLayerLists();
+
+ /* Sync Scale and lists */
+ if (gaugeL) {
+ LoadGaugeList(gaugeL, layerScaleDescInx);
+ wListSetIndex(gaugeL, layerGaugeInx);
+ }
+ /* Sync Scale and lists */
+ GetScaleGauge(layerScaleInx, &layerScaleDescInx, &layerGaugeInx);
+
+ /* force update of the 'manage layers' dialogbox */
+ if (layerL) {
+ wListSetIndex(layerL, layer);
+ ParamLoadControls(&layerPG);
+ }
+
+ if (layerS) {
+ if (!LoadFileListLoad(settingsCatalog, settingsName)) {
+ layers[layer].settingsName[0] = '\0';
+ }
+ }
+
+ ParamControlActive( &layerPG, I_DELETE, (layerSelected > 0) ? TRUE : FALSE);
+ ParamControlActive( &layerPG, I_COUNT, FALSE );
+
+ ParamControlActive( &layerPG, I_SCALE, !layerInherit);
+ ParamControlActive( &layerPG, I_GAUGE, !layerInherit);
+ ParamControlActive( &layerPG, I_MINRADIUSENTRY, !layerInherit);
+ ParamControlActive( &layerPG, I_MAXGRADEENTRY, !layerInherit);
+ ParamControlActive( &layerPG, I_TIELEN, !layerInherit);
+ ParamControlActive( &layerPG, I_TIEWID, !layerInherit);
+ ParamControlActive( &layerPG, I_TIESPC, !layerInherit);
+
+ /* finally show the layer buttons with balloon text */
+ for (inx = 0; inx < NUM_BUTTONS; inx++) {
+ if (!layers[inx].button_off) {
+ wButtonSetBusy(layer_btns[inx], layers[inx].visible != 0);
+ wControlSetBalloonText((wControl_p)layer_btns[inx],
+ (layers[inx].name[0] != '\0' ? layers[inx].name : _("Show/Hide Layer")));
+ }
+ }
+}
+
+/**
+ * Fill a layer dropbox with the current layer settings
+ *
+ * \param listLayers the dropbox
+ * \return
+ */
+void FillLayerList( wList_p listLayers)
+{
+ wListClear(listLayers); // Rebuild list on each invocation
+
+ for (int inx = 0; inx < NUM_LAYERS; inx++) {
+ char *layerFormattedName;
+ layerFormattedName = FormatLayerName(inx);
+ wListAddValue((wList_p)listLayers, layerFormattedName, NULL, I2VP(inx));
+ free(layerFormattedName);
+ }
+
+ /* set current layer to selected */
+ wListSetIndex(listLayers, curLayer);
+
+ ParamControlActive( &layerPG, I_DELETE, (curLayer > 0) ? TRUE : FALSE);
+ if ( layerInherit ) {
+ ParamControlActive( &layerPG, I_TIELEN, FALSE);
+ ParamControlActive( &layerPG, I_TIEWID, FALSE);
+ ParamControlActive( &layerPG, I_TIESPC, FALSE);
+ }
+}
+
+/**
+ * Initialize the layer lists.
+ *
+ * \param IN pointer to function that actually initialize tha data structures
+ * \param IN current layer (0...NUM_LAYERS), (-1) for no change
+ */
+static void
+InitializeLayers(void LayerInitFunc(void), int newCurrLayer)
+{
+ /* reset the data structures to default valuses */
+ LayerInitFunc();
+ /* count the objects on each layer */
+ LayerSetCounts();
+
+ /* Switch the current layer when requested or the first above not frozen*/
+ if (newCurrLayer != -1) {
+ curLayer = -1;
+ for (int i = newCurrLayer; i < NUM_LAYERS; i++) {
+ if (!layers[i].frozen) {
+ curLayer = i;
+ break;
+ }
+ }
+ if (curLayer == -1) {
+ ErrorMessage( MSG_NO_EMPTY_LAYER );
+ layers[0].frozen = FALSE;
+ curLayer = 0;
+ }
+ }
+}
+
+/**
+ * Save an integer to Prefs
+ */
+static void
+layerSetInteger( unsigned int inx, char prefName[], int value )
+{
+ char buffer[80];
+ char name[80];
+ strcpy(name, prefName);
+ strcat(name, ".%0u");
+ sprintf( buffer, name, inx );
+ wPrefSetInteger( LAYERPREF_SECTION, buffer, value );
+}
+/**
+* Save a float to Prefs
+*/
+static void
+layerSetFloat( unsigned int inx, char prefName[], double value )
+{
+ char buffer[80];
+ char name[20];
+ strcpy(name, prefName);
+ strcat(name, ".%0u");
+ sprintf( buffer, name, inx );
+ wPrefSetFloat( LAYERPREF_SECTION, buffer, value );
+}
+
+/**
+ * Save the customized layer information to preferences.
+ */
+static void
+LayerPrefSave(void)
+{
+ unsigned int inx;
+ int flags;
+ char buffer[ 80 ];
+ char links[STR_LONG_SIZE];
+ char layersSaved[ 3 * NUM_LAYERS + 1 ]; /* 0..99 plus separator */
+ /* FIXME: values for layers that are configured to default now should be overwritten in the settings */
+ layersSaved[ 0 ] = '\0';
+
+ for (inx = 0; inx < NUM_LAYERS; inx++) {
+ /* if a name is set that is not the default value or a color different from the default has been set,
+ information about the layer needs to be saved */
+ if (inx == 0 || !IsLayerDefault(inx)) {
+ sprintf(buffer, LAYERPREF_NAME ".%0u", inx);
+ wPrefSetString(LAYERPREF_SECTION, buffer, layers[inx].name);
+
+ layerSetInteger(inx, LAYERPREF_COLOR, wDrawGetRGB(layers[inx].color));
+
+ flags = 0;
+ if (layers[inx].frozen) {
+ flags |= LAYERPREF_FROZEN;
+ }
+ if (layers[inx].onMap) {
+ flags |= LAYERPREF_ONMAP;
+ }
+ if (layers[inx].visible) {
+ flags |= LAYERPREF_VISIBLE;
+ }
+ if (layers[inx].module) {
+ flags |= LAYERPREF_MODULE;
+ }
+ if (layers[inx].button_off) {
+ flags |= LAYERPREF_NOBUTTON;
+ }
+ if (layers[inx].inherit) {
+ flags |= LAYERPREF_DEFAULT;
+ }
+ layerSetInteger(inx, LAYERPREF_FLAGS, flags);
+
+ layers[inx].scaleInx = GetScaleInx( layers[inx].scaleDescInx,
+ layers[inx].gaugeInx );
+ layerSetInteger(inx, LAYERPREF_SCALEINX, layers[inx].scaleInx);
+ layerSetInteger(inx, LAYERPREF_SCLDESCINX, layers[inx].scaleDescInx);
+ layerSetInteger(inx, LAYERPREF_GAUGEINX, layers[inx].gaugeInx);
+ layerSetFloat(inx, LAYERPREF_MINRADIUS, layers[inx].minTrackRadius);
+ layerSetFloat(inx, LAYERPREF_MAXGRADE, layers[inx].maxTrackGrade);
+ layerSetFloat(inx, LAYERPREF_TIELENGTH, layers[inx].tieData.length);
+ layerSetFloat(inx, LAYERPREF_TIEWIDTH, layers[inx].tieData.width);
+ layerSetFloat(inx, LAYERPREF_TIESPACING, layers[inx].tieData.spacing);
+
+ if (layers[inx].layerLinkList.cnt > 0) {
+ sprintf(buffer, LAYERPREF_LIST ".%0u", inx);
+ GetLayerLinkString(inx, links);
+ wPrefSetString(LAYERPREF_SECTION, buffer, links);
+
+ if (settingsName[0] && strcmp(settingsName, " ") != 0) {
+ sprintf(buffer, LAYERPREF_SETTINGS ".%0u", inx);
+ wPrefSetString(LAYERPREF_SECTION, buffer, layers[inx].settingsName);
+ }
+ }
+
+ /* extend the list of layers that are set up via the preferences */
+ if (layersSaved[ 0 ]) {
+ strcat(layersSaved, ",");
+ }
+
+ sprintf(buffer, "%u", inx);
+ strcat(layersSaved, buffer);
+ }
+ }
+
+ wPrefSetString(LAYERPREF_SECTION, "layers", layersSaved);
+}
+
+
+/**
+* Load an integer from Prefs
+*/
+static void
+layerGetInteger( unsigned int inx, char prefName[], long *value, int deflt )
+{
+ char buffer[80];
+ char name[80];
+ strcpy(name, prefName);
+ strcat(name, ".%0u");
+ sprintf( buffer, name, inx );
+ wPrefGetInteger( LAYERPREF_SECTION, buffer, value, deflt );
+}
+/**
+* Load a float from Prefs
+*/
+static void
+layerGetFloat( unsigned int inx, char prefName[], double *value, double deflt )
+{
+ char buffer[80];
+ char name[20];
+ strcpy(name, prefName);
+ strcat(name, ".%0u");
+ sprintf( buffer, name, inx );
+ wPrefGetFloat( LAYERPREF_SECTION, buffer, value, deflt );
+}
+
+/**
+ * Load the settings for all layers from the preferences.
+ */
+
+static void
+LayerPrefLoad(void)
+{
+ const char *prefString;
+ long rgb;
+ long flags;
+ /* reset layer preferences to system default */
+ LayerAllDefaults();
+ prefString = wPrefGetString(LAYERPREF_SECTION, "layers");
+
+ if (prefString && prefString[ 0 ]) {
+ char layersSaved[3 * NUM_LAYERS];
+ strncpy(layersSaved, prefString, sizeof(layersSaved));
+ prefString = strtok(layersSaved, ",");
+
+ while (prefString) {
+ int inx;
+ char layerOption[20];
+ const char *layerValue;
+ char listValue[STR_LONG_SIZE];
+ int color;
+ inx = atoi(prefString);
+ sprintf(layerOption, LAYERPREF_NAME ".%d", inx);
+ layerValue = wPrefGetString(LAYERPREF_SECTION, layerOption);
+
+ if (layerValue) {
+ strcpy(layers[inx].name, layerValue);
+ } else {
+ *(layers[inx].name) = '\0';
+ }
+
+ /* get and set the color, using the system default color in case color is not available from prefs */
+ layerGetInteger(inx, LAYERPREF_COLOR, &rgb,
+ layerColorTab[inx % COUNT(layerColorTab)]);
+ color = wDrawFindColor(rgb);
+ SetLayerColor(inx, color);
+ /* get and set the flags */
+ layerGetInteger(inx, LAYERPREF_FLAGS, &flags,
+ LAYERPREF_ONMAP | LAYERPREF_VISIBLE);
+ layers[inx].frozen = ((flags & LAYERPREF_FROZEN) != 0);
+ layers[inx].onMap = ((flags & LAYERPREF_ONMAP) != 0);
+ layers[inx].visible = ((flags & LAYERPREF_VISIBLE) != 0);
+ layers[inx].module = ((flags & LAYERPREF_MODULE) != 0);
+ layers[inx].button_off = ((flags & LAYERPREF_NOBUTTON) != 0);
+ layers[inx].inherit = ((flags & LAYERPREF_DEFAULT) != 0);
+
+ layerGetInteger(inx, LAYERPREF_SCALEINX, &layers[inx].scaleInx,
+ GetLayoutCurScale());
+ layerGetInteger(inx, LAYERPREF_SCLDESCINX, &layers[inx].scaleDescInx,
+ GetLayoutCurScaleDesc());
+ layerGetInteger(inx, LAYERPREF_GAUGEINX, &layers[inx].gaugeInx, 0);
+
+ layerGetFloat(inx, LAYERPREF_MINRADIUS, &layers[inx].minTrackRadius,
+ GetLayoutMinTrackRadius());
+ layerGetFloat(inx, LAYERPREF_MAXGRADE, &layers[inx].maxTrackGrade,
+ GetLayoutMaxTrackGrade());
+ layerGetFloat(inx, LAYERPREF_TIELENGTH, &layers[inx].tieData.length, 0.0);
+ layerGetFloat(inx, LAYERPREF_TIEWIDTH, &layers[inx].tieData.width, 0.0);
+ layerGetFloat(inx, LAYERPREF_TIESPACING, &layers[inx].tieData.spacing, 0.0);
+
+ sprintf(layerOption, LAYERPREF_LIST ".%d", inx);
+ layerValue = wPrefGetString(LAYERPREF_SECTION, layerOption);
+ if (layerValue) {
+ strcpy(listValue, layerValue);
+ PutLayerListArray(inx, listValue);
+ } else {
+ listValue[0] = '\0';
+ PutLayerListArray(inx, listValue);
+ }
+ sprintf(layerOption, LAYERPREF_SETTINGS ".%d", inx);
+ layerValue = wPrefGetString(LAYERPREF_SECTION, layerOption);
+ if (layerValue) {
+ strcpy(layers[inx].settingsName, layerValue);
+ } else {
+ layers[inx].settingsName[0] = '\0';
+ }
+
+ prefString = strtok(NULL, ",");
+ }
+ }
+ //Make sure curLayer not frozen
+ for (int i = curLayer; i < NUM_LAYERS; i++) {
+ if (!layers[i].frozen) {
+ curLayer = i;
+ break;
+ }
+ }
+ if (layers[curLayer].frozen) {
+ ErrorMessage( MSG_NO_EMPTY_LAYER );
+ layers[0].frozen = FALSE;
+ curLayer = 0;
+ }
+}
+
+/**
+ * Increment the count of objects on a given layer.
+ *
+ * \param index IN the layer to change
+ */
+
+void IncrementLayerObjects(unsigned int layer)
+{
+ CHECK(layer <= NUM_LAYERS);
+ layers[layer].objCount++;
+}
+
+/**
+* Decrement the count of objects on a given layer.
+*
+* \param index IN the layer to change
+*/
+
+void DecrementLayerObjects(unsigned int layer)
+{
+ CHECK(layer <= NUM_LAYERS);
+ layers[layer].objCount--;
+}
+
+/**
+ * Count the number of objects on each layer and store result in layers data structure.
+ */
+
+void LayerSetCounts(void)
+{
+ int inx;
+ track_p trk;
+
+ for (inx = 0; inx < NUM_LAYERS; inx++) {
+ layers[inx].objCount = 0;
+ }
+
+ for (trk = NULL; TrackIterate(&trk);) {
+ inx = GetTrkLayer(trk);
+
+ if (inx >= 0 && inx < NUM_LAYERS) {
+ layers[inx].objCount++;
+ }
+ }
+}
+
+int FindUnusedLayer(unsigned int start)
+{
+ int inx;
+ for (inx = start; inx < NUM_LAYERS; inx++) {
+ if (layers[inx].objCount == 0 && !layers[inx].frozen) { return inx; }
+ }
+ ErrorMessage( MSG_NO_EMPTY_LAYER );
+ return -1;
+}
+
+/**
+ * Reset layer options to their default values. The default values are loaded
+ * from the preferences file.
+ */
+
+void
+DefaultLayerProperties(void)
+{
+ InitializeLayers(LayerPrefLoad, 0);
+ UpdateLayerDlg(curLayer); //Use Current Layer
+
+ if (layoutLayerChanged) {
+ MainProc(mainW, wResize_e, NULL, NULL);
+ layoutLayerChanged = FALSE;
+ }
+}
+
+/**
+ * Update all UI elements after selecting a layer.
+ *
+ */
+
+static void LayerUpdate(void)
+{
+ BOOL_T redraw;
+ char *layerFormattedName;
+ ParamLoadData(&layerPG);
+
+ if (!IsLayerValid(layerSelected)) {
+ return;
+ }
+
+ if (layerSelected == curLayer && layerFrozen) {
+ NoticeMessage(MSG_LAYER_FREEZE, _("Ok"), NULL);
+ layerFrozen = FALSE;
+ ParamLoadControl(&layerPG, I_FRZ);
+ }
+
+ if (layerSelected == curLayer && !layerVisible) {
+ NoticeMessage(MSG_LAYER_HIDE, _("Ok"), NULL);
+ layerVisible = TRUE;
+ ParamLoadControl(&layerPG, I_VIS);
+ }
+
+ if (layerSelected == curLayer && layerModule) {
+ NoticeMessage(MSG_LAYER_MODULE, _("Ok"), NULL);
+ layerModule = FALSE;
+ ParamLoadControl(&layerPG, I_MOD);
+ }
+ char oldLinkList[STR_LONG_SIZE];
+ GetLayerLinkString((int)layerSelected, oldLinkList);
+
+ if (strcmp(layers[(int)layerSelected].name, layerName) ||
+ layerColor != layers[(int)layerSelected].color ||
+ layers[(int)layerSelected].useColor != (BOOL_T)layerUseColor ||
+ layers[(int)layerSelected].visible != (BOOL_T)layerVisible ||
+ layers[(int)layerSelected].frozen != (BOOL_T)layerFrozen ||
+ layers[(int)layerSelected].onMap != (BOOL_T)layerOnMap ||
+ layers[(int)layerSelected].module != (BOOL_T)layerModule ||
+ layers[(int)layerSelected].button_off != (BOOL_T)layerNoButton ||
+ layers[(int)layerSelected].inherit != (BOOL_T)layerInherit ||
+ layers[(int)layerSelected].scaleInx != layerScaleInx ||
+ layers[(int)layerSelected].scaleDescInx != layerScaleDescInx ||
+ layers[(int)layerSelected].gaugeInx != layerGaugeInx ||
+ layers[(int)layerSelected].minTrackRadius != layerMinRadius ||
+ layers[(int)layerSelected].maxTrackGrade != layerMaxGrade ||
+ layers[(int)layerSelected].tieData.length != layerTieData.length ||
+ layers[(int)layerSelected].tieData.width != layerTieData.width ||
+ layers[(int)layerSelected].tieData.spacing != layerTieData.spacing ||
+ strcmp(layers[(int)layerSelected].settingsName, settingsName) ||
+ strcmp(oldLinkList, layerLinkList)) {
+ SetFileChanged();
+ }
+
+ if (layerL) {
+ strncpy(layers[(int)layerSelected].name, layerName,
+ sizeof layers[(int)layerSelected].name);
+ layerFormattedName = FormatLayerName(layerSelected);
+ wListSetValues(layerL, layerSelected, layerFormattedName, NULL, NULL);
+ free(layerFormattedName);
+ }
+
+
+ layerFormattedName = FormatLayerName(layerSelected);
+ wListSetValues(setLayerL, layerSelected, layerFormattedName, NULL, NULL);
+ free(layerFormattedName);
+
+ if (layerSelected < NUM_BUTTONS && !layers[(int)layerSelected].button_off) {
+ if (strlen(layers[(int)layerSelected].name) > 0) {
+ wControlSetBalloonText((wControl_p)layer_btns[(int)layerSelected],
+ layers[(int)layerSelected].name);
+ } else {
+ wControlSetBalloonText((wControl_p)layer_btns[(int)layerSelected],
+ _("Show/Hide Layer"));
+ }
+ }
+
+ redraw = (layerColor != layers[(int)layerSelected].color ||
+ layers[(int)layerSelected].useColor != (BOOL_T)layerUseColor ||
+ (BOOL_T)layerVisible != layers[(int)layerSelected].visible);
+
+ SetLayerColor(layerSelected, layerColor);
+
+ if (layerSelected < NUM_BUTTONS &&
+ layers[(int)layerSelected].visible != (BOOL_T)layerVisible
+ && !layers[(int)layerSelected].button_off) {
+ wButtonSetBusy(layer_btns[(int)layerSelected], layerVisible);
+ }
+
+ layers[(int)layerSelected].useColor = (BOOL_T)layerUseColor;
+ if (layers[(int)layerSelected].visible != (BOOL_T)layerVisible) {
+ FlipLayer(I2VP(layerSelected));
+ }
+ layers[(int)layerSelected].visible = (BOOL_T)layerVisible;
+ layers[(int)layerSelected].frozen = (BOOL_T)layerFrozen;
+ if (layers[(int)layerSelected].frozen) { DeselectLayer(layerSelected); }
+ layers[(int)layerSelected].onMap = (BOOL_T)layerOnMap;
+ layers[(int)layerSelected].scaleDescInx = layerScaleDescInx;
+ layers[(int)layerSelected].gaugeInx = layerGaugeInx;
+ layers[(int)layerSelected].scaleInx = GetScaleInx( layerScaleDescInx,
+ layerGaugeInx );
+ layers[(int)layerSelected].minTrackRadius = layerMinRadius;
+ layers[(int)layerSelected].maxTrackGrade = layerMaxGrade;
+ layers[(int)layerSelected].tieData = layerTieData;
+ layers[(int)layerSelected].module = (BOOL_T)layerModule;
+ layers[(int)layerSelected].inherit = (BOOL_T)layerInherit;
+ strcpy(layers[(int)layerSelected].settingsName, settingsName);
+
+ PutLayerListArray((int)layerSelected, layerLinkList);
+
+ SetLayerHideButton(layerSelected, layerNoButton);
+
+ MainProc( mainW, wResize_e, NULL, NULL );
+
+ if (layerRedrawMap) {
+ DoRedraw();
+ } else if (redraw) {
+ RedrawLayer(layerSelected, TRUE);
+ }
+
+ layerRedrawMap = FALSE;
+}
+
+
+static void LayerSelect(
+ wIndex_t inx)
+{
+ LayerUpdate();
+
+ if (inx < 0 || inx >= NUM_LAYERS) {
+ return;
+ }
+
+ layerSelected = (unsigned int)inx;
+ strcpy(layerName, layers[inx].name);
+ strcpy(settingsName, layers[inx].settingsName);
+ layerVisible = layers[inx].visible;
+ layerFrozen = layers[inx].frozen;
+ layerOnMap = layers[inx].onMap;
+ layerModule = layers[inx].module;
+ layerColor = layers[inx].color;
+ layerUseColor = layers[inx].useColor;
+ layerNoButton = layers[inx].button_off;
+ layerInherit = layers[inx].inherit;
+ layerScaleInx = layers[inx].scaleInx;
+ layerScaleDescInx = layers[inx].scaleDescInx;
+ layerGaugeInx = layers[inx].gaugeInx;
+ layerMinRadius = layers[inx].minTrackRadius;
+ layerMaxGrade = layers[inx].maxTrackGrade;
+ layerTieData.valid = layers[inx].tieData.valid;
+ layerTieData.length = layers[inx].tieData.length;
+ layerTieData.width = layers[inx].tieData.width;
+ layerTieData.spacing = layers[inx].tieData.spacing;
+ layerObjectCount = layers[inx].objCount;
+
+ GetLayerLinkString(inx, layerLinkList);
+ // sprintf(message, "%ld", layers[inx].objCount);
+ // ParamLoadMessage(&layerPG, I_COUNT, message);
+ ParamLoadControls(&layerPG);
+
+ ParamControlActive( &layerPG, I_DELETE, (layerSelected > 0) ? TRUE : FALSE);
+
+ ParamControlActive( &layerPG, I_SCALE, !layerInherit);
+ ParamControlActive( &layerPG, I_GAUGE, !layerInherit);
+ ParamControlActive( &layerPG, I_MINRADIUSENTRY, !layerInherit);
+ ParamControlActive( &layerPG, I_MAXGRADEENTRY, !layerInherit);
+ ParamControlActive( &layerPG, I_TIELEN, !layerInherit);
+ ParamControlActive( &layerPG, I_TIEWID, !layerInherit);
+ ParamControlActive( &layerPG, I_TIESPC, !layerInherit);
+
+ if (layerS) {
+ if (!LoadFileListLoad(settingsCatalog, settingsName)) {
+ settingsName[0] = '\0';
+ layers[inx].settingsName[0] = '\0';
+ }
+
+ }
+}
+
+void ResetLayers(void)
+{
+ int inx;
+
+ for (inx = 0; inx < NUM_LAYERS; inx++) {
+ strcpy(layers[inx].name, inx == 0 ? _("Main") : "");
+ layers[inx].visible = TRUE;
+ layers[inx].frozen = FALSE;
+ layers[inx].onMap = TRUE;
+ layers[inx].module = FALSE;
+ layers[inx].button_off = FALSE;
+ layers[inx].inherit = TRUE;
+ layers[inx].objCount = 0;
+ strcpy(layers[inx].settingsName, "");
+ DYNARR_RESET(int, layers[inx].layerLinkList);
+ SetLayerColor(inx, layerColorTab[inx % COUNT(layerColorTab)]);
+
+
+ if (inx < NUM_BUTTONS) {
+ wButtonSetLabel(layer_btns[inx], (char*)show_layer_bmps[inx]);
+ }
+ }
+
+ wControlSetBalloonText((wControl_p)layer_btns[0], _("Main"));
+
+ for (inx = 1; inx < NUM_BUTTONS; inx++) {
+ wControlSetBalloonText((wControl_p)layer_btns[inx], _("Show/Hide Layer"));
+ }
+
+ curLayer = -1;
+
+ for (int i = 0; i < NUM_LAYERS; i++) {
+ if (!layers[i].frozen) {
+ curLayer = i;
+ break;
+ }
+ }
+
+ if (curLayer == -1) {
+ ErrorMessage( MSG_NO_EMPTY_LAYER );
+ layers[0].frozen = FALSE;
+ curLayer = 0;
+ }
+
+ layerVisible = TRUE;
+ layerFrozen = FALSE;
+ layerOnMap = TRUE;
+ layerModule = FALSE;
+ layerInherit = FALSE;
+ layerColor = layers[0].color;
+ layerUseColor = TRUE;
+ strcpy(layerName, layers[0].name);
+ strcpy(settingsName, layers[0].settingsName);
+
+ LoadLayerLists();
+
+ if (layerL) {
+ ParamLoadControls(&layerPG);
+ // ParamLoadMessage(&layerPG, I_COUNT, "0");
+ }
+}
+
+
+void SaveLayers(void)
+{
+ layers_save = malloc(NUM_LAYERS * sizeof(layers[0]));
+
+ CHECK(layers_save != NULL);
+
+ for (int i = 0; i < NUM_LAYERS; i++) {
+ layers[i].settingsName[0] = '\0';
+ }
+
+ memcpy(layers_save, layers, NUM_LAYERS * sizeof layers[0]);
+ ResetLayers();
+}
+
+void RestoreLayers(void)
+{
+ int inx;
+ char * label;
+ wDrawColor color;
+ CHECK(layers_save != NULL);
+ memcpy(layers, layers_save, NUM_LAYERS * sizeof layers[0]);
+ free(layers_save);
+
+ for (inx = 0; inx < NUM_BUTTONS; inx++) {
+ color = layers[inx].color;
+ layers[inx].color = -1;
+ SetLayerColor(inx, color);
+
+ if (layers[inx].name[0] == '\0') {
+ if (inx == 0) {
+ label = _("Main");
+ } else {
+ label = _("Show/Hide Layer");
+ }
+ } else {
+ label = layers[inx].name;
+ }
+
+ wControlSetBalloonText((wControl_p)layer_btns[inx], label);
+ }
+
+ if (layerL) {
+ ParamLoadControls(&layerPG);
+ //ParamLoadMessage(&layerPG, I_COUNT, "0");
+ }
+
+ LoadLayerLists();
+}
+
+
+/**
+ * Scan opened directory for the next settings file
+ *
+ * \param dir IN opened directory handle
+ * \param dirName IN name of directory
+ * \param fileName OUT fully qualified filename
+ *
+ * \return TRUE if file found, FALSE if not
+ */
+
+static bool
+GetNextSettingsFile(DIR *dir, const char *dirName, char **fileName)
+{
+ bool done = false;
+ bool res = false;
+
+ /*
+ * get all files from the directory
+ */
+ while (!done) {
+ struct stat fileState;
+ struct dirent *ent;
+
+ ent = readdir(dir);
+
+ if (ent) {
+ if (!XtcStricmp(FindFileExtension(ent->d_name), "xset")) {
+ /* create full file name and get the state for that file */
+ MakeFullpath(fileName, dirName, ent->d_name, NULL);
+
+ if (stat(*fileName, &fileState) == -1) {
+ fprintf(stderr, "Error getting file state for %s\n", *fileName);
+ continue;
+ }
+
+ /* ignore any directories */
+ if (!(fileState.st_mode & S_IFDIR)) {
+ done = true;
+ res = true;
+ }
+ }
+ } else {
+ done = true;
+ res = false;
+ }
+ }
+ return (res);
+}
+
+
+/*
+ * Get all the settings files in the working directory
+ */
+
+static CatalogEntry *
+ScanSettingsDirectory(Catalog *catalog, const char *dirName)
+{
+ DIR *d;
+ CatalogEntry *newEntry = catalog->head;
+ char contents[STR_SHORT_SIZE];
+
+ d = opendir(dirName);
+ if (d) {
+ char *fileName = NULL;
+
+ while (GetNextSettingsFile(d, dirName, &fileName)) {
+ char *contents_start = strrchr(fileName, PATH_SEPARATOR[0]);
+ if (contents_start[0] == '/') { contents_start++; }
+ char *contents_end = strchr(contents_start, '.');
+ if (contents_end[0] == '.') { contents_end[0] = '\0'; }
+ strcpy(contents, contents_start);
+ contents_end[0] = '.';
+ newEntry = InsertInOrder(catalog, contents, NULL);
+ UpdateCatalogEntry(newEntry, fileName, contents, NULL);
+ free(fileName);
+ fileName = NULL;
+ }
+ closedir(d);
+ }
+
+ return (newEntry);
+}
+
+
+
+/*****************************************************************************
+*
+* FILE READ/WRITE
+*
+*/
+
+BOOL_T ReadLayers(char * line)
+{
+ char *name, *layerLinkList, *layerSettingsName, *extra;
+ int inx, visible, frozen, color, onMap, sclInx, module, dontUseColor,
+ ColorFlags, button_off, inherit;
+ double minRad, maxGrd, tieLen, tieWid, tieSpc;
+ unsigned long rgb;
+
+ /* older files didn't support layers */
+
+ if (paramVersion < 7) {
+ return TRUE;
+ }
+
+ /* set the current layer */
+
+ if (strncmp(line, "CURRENT", 7) == 0) {
+ curLayer = atoi(line + 7);
+
+ if (!IsLayerValid(curLayer)) {
+
+ curLayer = 0;
+ }
+
+ if (layers[curLayer].frozen) {
+ ErrorMessage( MSG_NOT_UNFROZEN_LAYER );
+ layers[curLayer].frozen = FALSE;
+ }
+
+ if (layerL) {
+ wListSetIndex(layerL, curLayer);
+ }
+
+ if (setLayerL) {
+ wListSetIndex(setLayerL, curLayer);
+ }
+
+ return TRUE;
+ }
+
+ if (strncmp(line, "LINK", 4) == 0) {
+ if (!GetArgs(line + 4, "dq", &inx, &layerLinkList)) {
+ return FALSE;
+ }
+ PutLayerListArray(inx, layerLinkList);
+ return TRUE;
+ }
+
+ if (strncmp(line, "SET", 3) == 0) {
+ if (!GetArgs(line + 3, "dq", &inx, &layerSettingsName)) {
+ return FALSE;
+ }
+ strcpy(layers[inx].settingsName, layerSettingsName);
+ return TRUE;
+ }
+
+ /* get the properties for a layer from the file and update the layer accordingly */
+ /* No Scale/tie data version */
+ if (!GetArgs(line, "dddduddddqc", &inx, &visible, &frozen, &onMap, &rgb,
+ &module, &dontUseColor, &ColorFlags, &button_off, &name, &extra)) {
+ return FALSE;
+ }
+ /* Check for old version: name here */
+ if (extra && strlen(extra) > 0) {
+ /* tie data version */
+ if (!GetArgs(extra, "dufffff", &inherit, &sclInx, &minRad, &maxGrd,
+ &tieLen, &tieWid, &tieSpc)) {
+ return FALSE;
+ }
+ } else {
+ sclInx = GetLayoutCurScale();
+ inherit = TRUE;
+ minRad = 0.0;
+ maxGrd = 0.0;
+ tieLen = 0.0;
+ tieWid = 0.0;
+ tieSpc = 0.0;
+ }
+
+ // Provide defaults
+ if ( minRad < EPSILON ) {
+ minRad = GetScaleMinRadius(sclInx);
+ }
+
+ if (paramVersion < 9) {
+ if ((int)rgb < COUNT( oldColorMap ) ) {
+ rgb = wRGB(oldColorMap[(int)rgb][0], oldColorMap[(int)rgb][1],
+ oldColorMap[(int)rgb][2]);
+ } else {
+ rgb = 0;
+ }
+ }
+
+ if (inx < 0 || inx >= NUM_LAYERS) {
+ return FALSE;
+ }
+
+ tieData_t td = {TRUE, tieLen, tieWid, tieSpc};
+ ValidateTieData(&td);
+ if ( !td.valid ) {
+ td = GetScaleTieData(sclInx);
+ }
+ color = wDrawFindColor(rgb);
+ SetLayerColor(inx, color);
+ strncpy(layers[inx].name, name, sizeof layers[inx].name);
+ layers[inx].visible = visible;
+ layers[inx].frozen = frozen;
+ layers[inx].onMap = onMap;
+ layers[inx].scaleInx = sclInx;
+ layers[inx].minTrackRadius = minRad;
+ layers[inx].maxTrackGrade = maxGrd;
+ layers[inx].tieData = td;
+ layers[inx].module = module;
+ layers[inx].color = color;
+ layers[inx].useColor = !dontUseColor;
+ layers[inx].button_off = button_off;
+ layers[inx].inherit = inherit;
+ GetScaleGauge(sclInx, &layers[inx].scaleDescInx, &layers[inx].gaugeInx);
+
+ colorTrack = ( ColorFlags & 1 ) ? 1 : 0; //Make sure globals are set
+ colorDraw = ( ColorFlags & 2 ) ? 1 : 0;
+
+ if (inx < NUM_BUTTONS && !layers[inx].button_off) {
+ if (strlen(name) > 0) {
+ wControlSetBalloonText((wControl_p)layer_btns[(int)inx], layers[inx].name);
+ }
+ wButtonSetBusy(layer_btns[(int)inx], visible);
+ }
+ MyFree(name);
+
+ // The last layer will set this correctly
+ maxLayer = inx;
+
+ return TRUE;
+}
+
+/**
+ * Find out whether layer information should be saved to the layout file.
+ * Usually only layers where settings are off from the default are written.
+ * NOTE: as a fix for a problem with XTrkCadReader a layer definition is
+ * written for each layer that is used.
+ *
+ * \param layerNumber IN index of the layer
+ * \return TRUE if configured, FALSE if not
+ */
+
+BOOL_T
+IsLayerConfigured(unsigned int layerNumber)
+{
+ return (layers[layerNumber].name[0] ||
+ !layers[layerNumber].visible ||
+ layers[layerNumber].frozen ||
+ !layers[layerNumber].onMap ||
+ layers[layerNumber].module ||
+ layers[layerNumber].button_off ||
+ layers[layerNumber].color != layerColorTab[layerNumber % (COUNT(
+ layerColorTab))] ||
+ layers[layerNumber].layerLinkList.cnt > 0 ||
+ layers[layerNumber].objCount);
+}
+
+
+/**
+ * Save the layer information to the file.
+ *
+ * \paran f IN open file handle
+ * \return always TRUE
+ */
+
+BOOL_T WriteLayers(FILE * f)
+{
+ unsigned int inx;
+
+ int ColorFlags = 0;
+
+ if (colorTrack) { ColorFlags |= 1; }
+ if (colorDraw) { ColorFlags |= 2; }
+
+ for (inx = 0; inx < NUM_LAYERS; inx++) {
+ if (IsLayerConfigured(inx)) {
+ fprintf(f,
+ "LAYERS %u %d %d %d %ld %d %d %d %d \"%s\" %d %lu %.6f %.6f %.6f %.6f %.6f\n",
+ inx,
+ layers[inx].visible,
+ layers[inx].frozen,
+ layers[inx].onMap,
+ wDrawGetRGB(layers[inx].color),
+ layers[inx].module,
+ layers[inx].useColor ? 0 : 1,
+ ColorFlags,
+ layers[inx].button_off,
+ PutTitle(layers[inx].name),
+ layers[inx].inherit,
+ layers[inx].scaleInx,
+ layers[inx].minTrackRadius,
+ layers[inx].maxTrackGrade,
+ layers[inx].tieData.length,
+ layers[inx].tieData.width,
+ layers[inx].tieData.spacing
+ );
+ }
+ }
+
+ fprintf(f, "LAYERS CURRENT %u\n", curLayer);
+
+ for (inx = 0; inx < NUM_LAYERS; inx++) {
+ unsigned int layerInx = inx;
+ GetLayerLinkString(inx, layerLinkList);
+ if (IsLayerConfigured(inx) && strlen(layerLinkList) > 0) {
+ fprintf(f, "LAYERS LINK %u \"%s\"\n", layerInx, layerLinkList);
+ }
+ if (IsLayerConfigured(inx) && layers[inx].settingsName[0]) {
+ fprintf(f, "LAYERS SET %u \"%s\"\n", layerInx, layers[inx].settingsName);
+ }
+ }
+ return TRUE;
+}
+
+/*****************************************************************************
+*
+* DIALOG & MENU
+*
+*/
+
+/**
+* This function is called when the Done button on the layer dialog is pressed. It hides the layer dialog and
+* updates the layer information.
+*
+* \param IN ignored
+*
+*/
+static void LayerOk(void * unused)
+{
+ LayerSelect(layerSelected);
+
+ if (newLayerCount != layerCount) {
+ layoutLayerChanged = TRUE;
+
+ if (newLayerCount > NUM_BUTTONS) {
+ newLayerCount = NUM_BUTTONS;
+ }
+
+ layerCount = newLayerCount;
+ }
+
+ if (layoutLayerChanged) {
+ MainProc(mainW, wResize_e, NULL, NULL);
+ }
+
+ wHide(layerW);
+}
+
+
+static void LayerDlgUpdate(
+ paramGroup_p pg,
+ int inx,
+ void * valueP)
+{
+ switch (inx) {
+ case I_LIST:
+ LayerSelect((wIndex_t) * (long*)valueP);
+ break;
+
+ case I_NAME:
+ LayerUpdate();
+ break;
+
+ case I_MAP:
+ layerRedrawMap = TRUE;
+ /* No Break */
+ case I_VIS:
+ case I_FRZ:
+ case I_MOD:
+ case I_BUT:
+ case I_DEF:
+ LayerUpdate();
+ UpdateLayerDlg(layerSelected);
+ break;
+
+ case I_SCALE:
+ LoadGaugeList((wList_p)layerPLs[I_GAUGE].control, *((int *)valueP));
+ // set the first entry as default, usually the standard gauge for a scale
+ wListSetIndex((wList_p)layerPLs[I_GAUGE].control, 0);
+ break;
+
+ case I_TIELEN:
+ case I_TIEWID:
+ case I_TIESPC:
+ ValidateTieData(&layerTieData);
+ r_tieData.rangechecks = layerTieData.valid ? PDO_NORANGECHECK_LOW |
+ PDO_NORANGECHECK_HIGH : 0;
+ break;
+
+ case I_SETTINGS:
+ if (strcmp((char*)wListGetItemContext(settingsListL,
+ (wIndex_t) * (long*)valueP), " ") == 0) {
+ settingsName[0] = '\0';
+ } else {
+ strcpy(settingsName, (char*)wListGetItemContext(settingsListL,
+ (wIndex_t) * (long*)valueP));
+ }
+ break;
+ }
+}
+
+
+static void DoLayer(void * unused)
+{
+ if (layerW == NULL) {
+ layerW = ParamCreateDialog(&layerPG, MakeWindowTitle(_("Layers")), _("Done"),
+ LayerOk, wHide, TRUE, NULL, 0, LayerDlgUpdate);
+ GetScaleGauge(layerScaleInx, &layerScaleDescInx, &layerGaugeInx);
+ LoadScaleList(scaleL);
+ LoadGaugeList(gaugeL, layerScaleDescInx);
+ }
+
+ if (settingsCatalog) { CatalogDiscard(settingsCatalog); }
+ else { settingsCatalog = InitCatalog(); }
+ ScanSettingsDirectory(settingsCatalog, wGetAppWorkDir());
+
+
+ /* set the globals to the values for the current layer */
+ UpdateLayerDlg(curLayer);
+ layerRedrawMap = FALSE;
+ wShow(layerW);
+ layoutLayerChanged = FALSE;
+}
+
+#include "bitmaps/background.xpm3"
+
+#if NUM_BUTTONS < 100
+static int lbmap_width[3] = { 16, 24, 32 }; // For numbers < 100
+#else
+static int lbmap_width[3] = { 20, 28, 36 }; // For numbers > 99
+#endif
+static int lbmap_height[3] = { 16, 24, 32 };
+
+static int lbit0_width[3] = { 6, 10, 14 };
+static int lbit1_width[3] = { 4, 5, 6 };
+
+static int lbits_top[3] = { 3, 4, 6 };
+static int lbits_height[3] = { 10, 15, 20 };
+
+#include "bitmaps/layer_num.inc"
+
+static char** show_layer_digits[3][10] = {
+ {
+ n0_x16, n1_x16, n2_x16, n3_x16, n4_x16, n5_x16, n6_x16, n7_x16, n8_x16, n9_x16
+ },
+ {
+ n0_x24, n1_x24, n2_x24, n3_x24, n4_x24, n5_x24, n6_x24, n7_x24, n8_x24, n9_x24
+ },
+ {
+ n0_x32, n1_x32, n2_x32, n3_x32, n4_x32, n5_x32, n6_x32, n7_x32, n8_x32, n9_x32
+ }
+};
+
+/* Note: If the number of buttons is increased to > ~120, you should
+ * also increase COMMAND_MAX and BUTTON_MAX in command.c
+ * NUM_LAYERS is defined in common.h
+ */
+#define ONE_PIXEL v *= 2; if (v > 128) { show_layer_bits[xx + yy] = b; xx += 1; v = 1; b = 0; }
+
+void InitLayers(void)
+{
+ unsigned int i;
+ wPrefGetInteger(PREFSECT, "layer-button-count", &layerCount, layerCount);
+
+ for (i = 0; i < COUNT(layerRawColorTab); i++) {
+ layerColorTab[i] = wDrawFindColor(layerRawColorTab[i]);
+ }
+
+ /* build the adjust table for starting bit */
+ int dx_table[] = { 1, 2, 4, 8, 16, 32, 64, 128 };
+
+ /* create the bitmaps for the layer buttons */
+ /* all bitmaps have to have the same dimensions */
+ for (int i = 0; i < NUM_LAYERS; i++) {
+ int n = i + 1;
+ int bwid = lbmap_width[iconSize];
+ int wb = (bwid + 7) / 8; // width in bytes
+ int bhgt = lbmap_height[iconSize];
+ int h = lbits_height[iconSize];
+
+ // if (n > 30) n = n + 70; for testing > 100
+
+ show_layer_bits = MyMalloc(bhgt * wb);
+
+ if (n < 10) {
+ // width of char
+ int wc = 0; // width of char
+ if (n == 1) {
+ wc = lbit1_width[iconSize];
+ } else {
+ wc = lbit0_width[iconSize];
+ }
+
+ // X-adjust
+ int dx = (bwid - wc) / 2;
+ int x0 = 0;
+ if (dx > 7) {
+ dx -= 8;
+ x0++;
+ }
+
+ char** cp = show_layer_digits[iconSize][n];
+
+ for (int y = 0; y < h; y++) {
+ int v = dx_table[dx]; // power of two
+ char b = 0; // bits
+
+ int yy = wb * (y + (bhgt - h) / 2);
+
+ int xx = x0; // starting byte
+ for (int x = 0; x < wc; x++) {
+ char z = *(*cp + x + y * wc);
+ if (z != ' ') {
+ b |= v;
+ }
+ ONE_PIXEL
+ }
+ if (v <= 128) {
+ show_layer_bits[xx + yy] = b;
+ }
+ }
+
+ } else if (n < 100) {
+ // width of chars
+ int wc1 = 0;
+ int wc0 = 0;
+ if ((n / 10) == 1) {
+ wc1 = lbit1_width[iconSize];
+ } else {
+ wc1 = lbit0_width[iconSize];
+ }
+ if ((n % 10) == 1) {
+ wc0 = lbit1_width[iconSize];
+ } else {
+ wc0 = lbit0_width[iconSize];
+ }
+
+ // X-adjust
+ int dx = (bwid - wc1 - wc0 - (iconSize >= 1 ? 2 : 1)) / 2;
+ int x0 = 0;
+ if (dx > 7) {
+ dx -= 8;
+ x0++;
+ }
+
+ char** cp1 = show_layer_digits[iconSize][n / 10];
+ char** cp0 = show_layer_digits[iconSize][n % 10];
+
+ for (int y = 0; y < h; y++) {
+ int v = dx_table[dx]; // powers of two
+ char b = 0; // bits
+
+ int yy = wb * (y + (bhgt - h) / 2);
+
+ int xx = x0; // starting byte
+ for (int x = 0; x < wc1; x++) {
+ char z = *(*cp1 + x + y * wc1);
+ if (z != ' ') {
+ b |= v;
+ }
+ ONE_PIXEL
+ }
+ ONE_PIXEL
+ if (iconSize >= 1) {
+ ONE_PIXEL
+ }
+ for (int x = 0; x < wc0; x++) {
+ char z = *(*cp0 + x + y * wc0);
+ if (z != ' ') {
+ b |= v;
+ }
+ ONE_PIXEL
+ }
+ if (v <= 128) {
+ show_layer_bits[xx + yy] = b;
+ }
+ }
+
+ } else { // n >= 100
+ // width of chars
+ int wc2 = 0;
+ int wc1 = 0;
+ int wc0 = 0;
+ if ((n / 100) == 1) {
+ wc2 = lbit1_width[iconSize];
+ } else {
+ wc2 = lbit0_width[iconSize];
+ }
+ if (((n / 10) % 10) == 1) {
+ wc1 = lbit1_width[iconSize];
+ } else {
+ wc1 = lbit0_width[iconSize];
+ }
+ if ((n % 10) == 1) {
+ wc0 = lbit1_width[iconSize];
+ } else {
+ wc0 = lbit0_width[iconSize];
+ }
+
+ // X-adjust and start
+ int dx = (bwid - wc2 - wc1 - wc0 - 2) / 2;
+ int x0 = 0;
+ if (dx > 7) {
+ dx -= 8;
+ x0++;
+ }
+
+ char** cp2 = show_layer_digits[iconSize][n / 100];
+ char** cp1 = show_layer_digits[iconSize][(n / 10) % 10];
+ char** cp0 = show_layer_digits[iconSize][n % 10];
+
+ for (int y = 0; y < h; y++) {
+ int v = dx_table[dx]; // powers of two
+ char b = 0; // bits
+
+ int yy = wb * (y + (bhgt - h) / 2);
+
+ int xx = x0; // byte
+ for (int x = 0; x < wc2; x++) {
+ char z = *(*cp2 + x + y * wc2);
+ if (z != ' ') {
+ b |= v;
+ }
+ ONE_PIXEL
+ }
+ ONE_PIXEL
+ for (int x = 0; x < wc1; x++) {
+ char z = *(*cp1 + x + y * wc1);
+ if (z != ' ') {
+ b |= v;
+ }
+ ONE_PIXEL
+ }
+ ONE_PIXEL
+ for (int x = 0; x < wc0; x++) {
+ char z = *(*cp0 + x + y * wc0);
+ if (z != ' ') {
+ b |= v;
+ }
+ ONE_PIXEL
+ }
+ if (v <= 128) {
+ show_layer_bits[xx + yy] = b;
+ }
+ }
+ }
+
+ show_layer_bmps[i] = wIconCreateBitMap(
+ bwid,
+ bhgt,
+ show_layer_bits,
+ layerColorTab[i % (COUNT(layerColorTab))]);
+ layers[i].color = layerColorTab[i % (COUNT(layerColorTab))];
+ layers[i].useColor = TRUE;
+
+ MyFree(show_layer_bits);
+ }
+
+ /* layer list for toolbar */
+ setLayerL = wDropListCreate(mainW, 0, 0, "cmdLayerSet", NULL, 0, 10, 200, NULL,
+ SetCurrLayer, NULL);
+ wControlSetBalloonText((wControl_p)setLayerL, GetBalloonHelpStr("cmdLayerSet"));
+ AddToolbarControl((wControl_p)setLayerL, IC_MODETRAIN_TOO);
+
+ backgroundB = AddToolbarButton("cmdBackgroundShow",
+ wIconCreatePixMap(background_xpm3[iconSize]), 0,
+ BackgroundToggleShow, NULL);
+ /* add the help text */
+ wControlSetBalloonText((wControl_p)backgroundB, _("Show/Hide Background"));
+ wControlActive((wControl_p)backgroundB, FALSE);
+
+ for (int i = 0; i < NUM_LAYERS; i++) {
+ char *layerName;
+
+ if (i < NUM_BUTTONS) {
+ /* create the layer button */
+ sprintf(message, "cmdLayerShow%u", i);
+ layer_btns[i] = AddToolbarButton(message, show_layer_bmps[i], IC_MODETRAIN_TOO,
+ FlipLayer, I2VP(i) );
+ /* set state of button */
+ wButtonSetBusy(layer_btns[i], 1);
+ }
+
+ layerName = FormatLayerName(i);
+ wListAddValue(setLayerL, layerName, NULL, I2VP(i));
+ free(layerName);
+ }
+
+ AddPlaybackProc("SETCURRLAYER", PlaybackCurrLayer, NULL);
+ AddPlaybackProc("LAYERS", (playbackProc_p)ReadLayers, NULL);
+}
+
+addButtonCallBack_t InitLayersDialog(void)
+{
+ ParamRegister(&layerPG);
+ RegisterChangeNotification(LayerChange);
+ return &DoLayer;
+}
diff --git a/app/bin/dlayer.h b/app/bin/dlayer.h
new file mode 100644
index 0000000..bc67063
--- /dev/null
+++ b/app/bin/dlayer.h
@@ -0,0 +1,69 @@
+
+/** \file dlayer.h
+ *
+ */
+
+/* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef DLAYER_H
+#define DLAYER_H
+
+#include "common.h"
+extern unsigned int curLayer;
+extern long layerCount;
+void SetCurrLayer(wIndex_t inx, const char * name, wIndex_t op,
+ void * listContext, void * arg);
+wDrawColor GetLayerColor( unsigned int );
+BOOL_T GetLayerUseDefault( unsigned int );
+SCALEINX_T GetLayerScale( unsigned int );
+BOOL_T GetLayerUseColor( unsigned int);
+BOOL_T GetLayerVisible( unsigned int );
+void FlipLayer( void * layerVP );
+BOOL_T GetLayerFrozen( unsigned int );
+BOOL_T GetLayerOnMap( unsigned int );
+BOOL_T GetLayerModule( unsigned int );
+BOOL_T GetLayerHidden( unsigned int);
+tieData_t GetLayerTieData( unsigned int );
+DIST_T GetLayerMinTrackRadius( unsigned int layer );
+ANGLE_T GetLayerMaxTrackGrade( unsigned int layer );
+void SetLayerModule(unsigned int, BOOL_T);
+char * GetLayerName( unsigned int );
+void SetLayerName(unsigned int layer, char* name);
+BOOL_T ReadLayers( char * );
+BOOL_T WriteLayers( FILE * );
+char * FormatLayerName(unsigned int layerNumber);
+// void UpdateLayerLists( void );
+void DefaultLayerProperties(void);
+void UpdateLayerDlg( unsigned int );
+void ResetLayers( void );
+void SaveLayers( void );
+void RestoreLayers( void );
+void LoadLayerLists( void );
+addButtonCallBack_t InitLayersDialog( void );
+addButtonCallBack_t InitDrawOrderDialog( void );
+void FillLayerList(wList_p layerList);
+
+void LayerAllDefaults();
+void LayerSetCounts();
+int FindUnusedLayer(unsigned int start);
+void DecrementLayerObjects(unsigned int index);
+void IncrementLayerObjects(unsigned int index);
+
+
+#endif
diff --git a/app/bin/doption.c b/app/bin/doption.c
index d196558..28010d4 100644
--- a/app/bin/doption.c
+++ b/app/bin/doption.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 "ccurve.h"
@@ -26,8 +26,9 @@
#include "param.h"
#include "track.h"
#include "common-ui.h"
+#include "ctrain.h"
-static paramIntegerRange_t i1_64 = { 1, 64 };
+//static paramIntegerRange_t i1_64 = { 1, 64 };
static paramIntegerRange_t i1_100 = { 1, 100 };
static paramIntegerRange_t i0_256 = { 0, 256 };
static paramIntegerRange_t i1_256 = { 1, 256 };
@@ -59,8 +60,9 @@ long GetChanges( paramGroup_p pg )
long changed;
int inx;
for ( changed=ParamUpdate(pg),inx=0,changes=0; changed; changed>>=1,inx++ ) {
- if ( changed&1 )
+ if ( changed&1 ) {
changes |= VP2L(pg->paramPtr[inx].context);
+ }
}
return changes;
}
@@ -72,7 +74,7 @@ static paramGroup_t prefPG;
static void OptionDlgCancel(
- wWin_p win )
+ wWin_p win )
{
wEnableBalloonHelp( (int)enableBalloonHelp );
wHide( win );
@@ -103,9 +105,6 @@ static char * hideTrainsInTunnelsLabels[] = { N_("Hide Trains On Hidden Track"),
static char * constrainMainLabels[] = {N_("Constrain Drawing Area to Room boundaries"), NULL};
static char * dontHideLabels[] = {N_("Don't Hide System Cursor when program cursor is active"), NULL};
-extern long trainPause;
-
-
static paramData_t displayPLs[] = {
{ PD_RADIO, &colorTrack, "color-track", PDO_NOPSHUPD|PDO_DRAW, colorTrackLabels, N_("Color Track"), BC_HORZ, I2VP(CHANGE_MAIN) },
@@ -116,24 +115,24 @@ static paramData_t displayPLs[] = {
{ PD_RADIO, &tieDrawMode, "tiedraw", PDO_NOPSHUPD|PDO_DRAW, tiedrawLabels, N_("Draw Ties"), BC_HORZ, I2VP(CHANGE_MAIN) },
{ PD_RADIO, &centerDrawMode, "centerdraw", PDO_NOPSHUPD|PDO_DRAW, drawCenterCircle, N_("Draw Centers"), BC_HORZ, I2VP(CHANGE_MAIN | CHANGE_MAP) },
{ PD_LONG, &twoRailScale, "tworailscale", PDO_NOPSHUPD, &i1_256, N_("Two Rail Scale"), 0, I2VP(CHANGE_MAIN) },
- { PD_LONG, &mapScale, "mapscale", PDO_NOPSHUPD, &i1_1024, N_("Map Scale"), 0, I2VP(CHANGE_MAP) },
+ { PD_FLOAT, &mapD.scale, "mapscale", PDO_NOPSHUPD, &r1_1000, N_("Map Scale"), 0, I2VP(CHANGE_MAP) },
{ PD_TOGGLE, &dontHideCursor, "donthidecursor", PDO_NOPSHUPD, dontHideLabels, "", BC_HORZ },
{ PD_TOGGLE, &constrainMain, "constrainmain", PDO_NOPSHUPD, constrainMainLabels, "", BC_HORZ },
{ PD_TOGGLE, &liveMap, "livemap", PDO_NOPSHUPD, liveMapLabels, "", BC_HORZ },
{ PD_TOGGLE, &autoPan, "autoPan", PDO_NOPSHUPD, autoPanLabels, "", BC_HORZ },
-#define labelSelect (12)
+#define labelSelect (13)
{ PD_TOGGLE, &labelEnable, "labelenable", PDO_NOPSHUPD, labelEnableLabels, N_("Label Enable"), 0, I2VP(CHANGE_MAIN) },
{ PD_LONG, &labelScale, "labelscale", PDO_NOPSHUPD, &i0_256, N_("Label Scale"), 0, I2VP(CHANGE_MAIN) },
{ PD_LONG, &descriptionFontSize, "description-fontsize", PDO_NOPSHUPD, &i1_1000, N_("Label Font Size"), 0, I2VP(CHANGE_MAIN) },
{ PD_TOGGLE, &hotBarLabels, "hotbarlabels", PDO_NOPSHUPD, hotBarLabelsLabels, N_("Hot Bar Labels"), BC_HORZ, I2VP(CHANGE_TOOLBAR) },
{ PD_TOGGLE, &layoutLabels, "layoutlabels", PDO_NOPSHUPD, listLabelsLabels, N_("Layout Labels"), BC_HORZ, I2VP(CHANGE_MAIN) },
{ PD_TOGGLE, &listLabels, "listlabels", PDO_NOPSHUPD, listLabelsLabels, N_("List Labels"), BC_HORZ, I2VP(CHANGE_PARAMS) },
-/* ATTENTION: update the define below if you add entries above */
+ /* ATTENTION: update the define below if you add entries above */
#define I_HOTBARLABELS (19)
{ PD_DROPLIST, &carHotbarModeInx, "carhotbarlabels", PDO_NOPSHUPD|PDO_DLGUNDERCMDBUTT|PDO_LISTINDEX, I2VP(250), N_("Car Labels"), 0, I2VP(CHANGE_SCALE) },
- { PD_LONG, &trainPause, "trainpause", PDO_NOPSHUPD, &i10_1000 , N_("Train Update Delay"), 0, 0 },
+ { PD_LONG, &trainPause, "trainpause", PDO_NOPSHUPD, &i10_1000, N_("Train Update Delay"), 0, 0 },
{ PD_TOGGLE, &hideTrainsInTunnels, "hideTrainsInTunnels", PDO_NOPSHUPD, hideTrainsInTunnelsLabels, "", BC_HORZ }
- };
+};
static paramGroup_t displayPG = { "display", PGO_RECORD|PGO_PREFMISC, displayPLs, COUNT( displayPLs ) };
@@ -147,11 +146,11 @@ static void DisplayOk( void * junk )
static void OptionDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
- if ( inx < 0 ) return;
+ if ( inx < 0 ) { return; }
if ( pg->paramPtr[inx].valueP == &enableBalloonHelp ) {
wEnableBalloonHelp((wBool_t)*(long*)valueP);
} else {
@@ -173,7 +172,8 @@ static void OptionDlgUpdate(
checkPtInterval = *(long *)valueP;
if (checkPtInterval == 0 ) {
wWinPix_t h = wControlGetHeight(pg->paramPtr[inx].control);
- wControlSetBalloon( pg->paramPtr[inx].control, 0, h*3/4, _("Turning off AutoSave") );
+ wControlSetBalloon( pg->paramPtr[inx].control, 0, h*3/4,
+ _("Turning off AutoSave") );
UpdateAutoSaveInterval(0);
} else {
wControlSetBalloon( pg->paramPtr[inx].control, 0, 0, NULL );
@@ -183,7 +183,8 @@ static void OptionDlgUpdate(
autosaveChkPoints = *(long *)valueP;
if (checkPtInterval == 0 && autosaveChkPoints>0 ) {
wWinPix_t h = wControlGetHeight(pg->paramPtr[inx].control);
- wControlSetBalloon( pg->paramPtr[inx].control, 0, -h*3/4, _("Turning on CheckPointing") );
+ wControlSetBalloon( pg->paramPtr[inx].control, 0, -h*3/4,
+ _("Turning on CheckPointing") );
UpdateChkPtInterval(10);
} else {
wControlSetBalloon( pg->paramPtr[inx].control, 0, 0, NULL );
@@ -197,14 +198,22 @@ static void OptionDlgUpdate(
static void DoDisplay( void * junk )
{
if (displayW == NULL) {
- displayW = ParamCreateDialog( &displayPG, MakeWindowTitle(_("Display Options")), _("Ok"), DisplayOk, OptionDlgCancel, TRUE, NULL, 0, OptionDlgUpdate );
- wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control, _("Proto"), NULL, I2VP(0x0002) );
- wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control, _("Proto/Manuf"), NULL, I2VP(0x0012) );
- wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control, _("Proto/Manuf/Part Number"), NULL, I2VP(0x0312) );
- wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control, _("Proto/Manuf/Partno/Item"), NULL, I2VP(0x4312) );
- wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control, _("Manuf/Proto"), NULL, I2VP(0x0021) );
- wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control, _("Manuf/Proto/Part Number"), NULL, I2VP(0x0321) );
- wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control, _("Manuf/Proto/Partno/Item"), NULL, I2VP(0x4321) );
+ displayW = ParamCreateDialog( &displayPG, MakeWindowTitle(_("Display Options")),
+ _("Ok"), DisplayOk, OptionDlgCancel, TRUE, NULL, 0, OptionDlgUpdate );
+ wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control, _("Proto"), NULL,
+ I2VP(0x0002) );
+ wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control, _("Proto/Manuf"),
+ NULL, I2VP(0x0012) );
+ wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control,
+ _("Proto/Manuf/Part Number"), NULL, I2VP(0x0312) );
+ wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control,
+ _("Proto/Manuf/Partno/Item"), NULL, I2VP(0x4312) );
+ wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control, _("Manuf/Proto"),
+ NULL, I2VP(0x0021) );
+ wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control,
+ _("Manuf/Proto/Part Number"), NULL, I2VP(0x0321) );
+ wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control,
+ _("Manuf/Proto/Partno/Item"), NULL, I2VP(0x4321) );
}
ParamLoadControls( &displayPG );
@@ -242,7 +251,7 @@ static char * hideSelectionWindowLabels[] = { N_("Hide"), NULL };
#endif
static char * rightClickLabels[] = {N_("Normal: Command List, Shift: Command Options"), N_("Normal: Command Options, Shift: Command List"), NULL };
-EXPORT paramData_t cmdoptPLs[] = {
+static paramData_t cmdoptPLs[] = {
{ PD_RADIO, &preSelect, "preselect", PDO_NOPSHUPD, preSelectLabels, N_("Default Command"), BC_HORZ },
#ifdef HIDESELECTIONWINDOW
{ PD_TOGGLE, &hideSelectionWindow, PDO_NOPSHUPD, hideSelectionWindowLabels, N_("Hide Selection Window"), BC_HORZ },
@@ -250,7 +259,7 @@ EXPORT paramData_t cmdoptPLs[] = {
{ PD_RADIO, &rightClickMode, "rightclickmode", PDO_NOPSHUPD, rightClickLabels, N_("Right Click"), 0 },
{ PD_RADIO, &selectMode, "selectmode", PDO_NOPSHUPD, selectLabels, N_("Select Mode"), 0},
{ PD_TOGGLE, &selectZero, "selectzero", PDO_NOPSHUPD, selectZeroLabels, "", 0 }
- };
+};
static paramGroup_t cmdoptPG = { "cmdopt", PGO_RECORD|PGO_PREFMISC, cmdoptPLs, COUNT( cmdoptPLs ) };
static void CmdoptOk( void * junk )
@@ -265,15 +274,17 @@ static void CmdoptOk( void * junk )
static void CmdoptChange( long changes )
{
if (changes & CHANGE_CMDOPT)
- if (cmdoptW != NULL && wWinIsVisible(cmdoptW) )
+ if (cmdoptW != NULL && wWinIsVisible(cmdoptW) ) {
ParamLoadControls( &cmdoptPG );
+ }
}
static void DoCmdopt( void * junk )
{
if (cmdoptW == NULL) {
- cmdoptW = ParamCreateDialog( &cmdoptPG, MakeWindowTitle(_("Command Options")), _("Ok"), CmdoptOk, OptionDlgCancel, TRUE, NULL, 0, OptionDlgUpdate );
+ cmdoptW = ParamCreateDialog( &cmdoptPG, MakeWindowTitle(_("Command Options")),
+ _("Ok"), CmdoptOk, OptionDlgCancel, TRUE, NULL, 0, OptionDlgUpdate );
}
ParamLoadControls( &cmdoptPG );
wShow( cmdoptW );
@@ -306,6 +317,7 @@ static char * startOptions[] = { N_("Load Last Layout"), N_("Start New Layout"),
static paramData_t prefPLs[] = {
{ PD_RADIO, &iconSize, "iconsize", PDO_NOPSHUPD, iconSizeLabels, N_("Icon Size"), BC_HORZ, I2VP(CHANGE_ICONSIZE) },
{ PD_RADIO, &angleSystem, "anglesystem", PDO_NOPSHUPD, angleSystemLabels, N_("Angles"), BC_HORZ },
+#define I_UNITS (2)
{ PD_RADIO, &units, "units", PDO_NOPSHUPD|PDO_NOUPDACT, unitsLabels, N_("Units"), BC_HORZ, I2VP(CHANGE_MAIN|CHANGE_UNITS) },
#define I_DSTFMT (3)
{ PD_DROPLIST, &distanceFormatInx, "dstfmt", PDO_DIM|PDO_NOPSHUPD|PDO_LISTINDEX, I2VP(150), N_("Length Format"), 0, I2VP(CHANGE_MAIN|CHANGE_UNITS) },
@@ -324,54 +336,56 @@ static paramData_t prefPLs[] = {
#define I_AUTOSAVE (15)
{ PD_LONG, &autosaveChkPoints, "autosave", PDO_NOPSHUPD|PDO_FILE, &i0_99, N_("Autosave Checkpoint Frequency") },
{ PD_RADIO, &onStartup, "onstartup", PDO_NOPSHUPD, startOptions, N_("On Program Startup"), 0, NULL }
- };
+};
static paramGroup_t prefPG = { "pref", PGO_RECORD|PGO_PREFMISC, prefPLs, COUNT( prefPLs ) };
typedef struct {
- char * name;
- long fmt;
- } dstFmts_t;
+ char * name;
+ long fmt;
+} dstFmts_t;
static dstFmts_t englishDstFmts[] = {
- { N_("999.999"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|3 },
- { N_("999.999999"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|6 },
- { N_("999.99999"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|5 },
- { N_("999.9999"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|4 },
- { N_("999.999"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|3 },
- { N_("999.99"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|2 },
- { N_("999.9"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|1 },
- { N_("999 7/8"), DISTFMT_FMT_NONE|DISTFMT_FRACT_FRC|3 },
- { N_("999 63/64"), DISTFMT_FMT_NONE|DISTFMT_FRACT_FRC|6 },
- { N_("999' 11.999\""), DISTFMT_FMT_SHRT|DISTFMT_FRACT_NUM|3 },
- { N_("999' 11.99\""), DISTFMT_FMT_SHRT|DISTFMT_FRACT_NUM|2 },
- { N_("999' 11.9\""), DISTFMT_FMT_SHRT|DISTFMT_FRACT_NUM|1 },
- { N_("999' 11 7/8\""), DISTFMT_FMT_SHRT|DISTFMT_FRACT_FRC|3 },
- { N_("999' 11 63/64\""), DISTFMT_FMT_SHRT|DISTFMT_FRACT_FRC|6 },
- { N_("999ft 11.999in"), DISTFMT_FMT_LONG|DISTFMT_FRACT_NUM|3 },
- { N_("999ft 11.99in"), DISTFMT_FMT_LONG|DISTFMT_FRACT_NUM|2 },
- { N_("999ft 11.9in"), DISTFMT_FMT_LONG|DISTFMT_FRACT_NUM|1 },
- { N_("999ft 11 7/8in"), DISTFMT_FMT_LONG|DISTFMT_FRACT_FRC|3 },
- { N_("999ft 11 63/64in"), DISTFMT_FMT_LONG|DISTFMT_FRACT_FRC|6 },
- { NULL, 0 } };
+ { N_("999.999"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|3 },
+ { N_("999.999999"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|6 },
+ { N_("999.99999"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|5 },
+ { N_("999.9999"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|4 },
+ { N_("999.999"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|3 },
+ { N_("999.99"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|2 },
+ { N_("999.9"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|1 },
+ { N_("999 7/8"), DISTFMT_FMT_NONE|DISTFMT_FRACT_FRC|3 },
+ { N_("999 63/64"), DISTFMT_FMT_NONE|DISTFMT_FRACT_FRC|6 },
+ { N_("999' 11.999\""), DISTFMT_FMT_SHRT|DISTFMT_FRACT_NUM|3 },
+ { N_("999' 11.99\""), DISTFMT_FMT_SHRT|DISTFMT_FRACT_NUM|2 },
+ { N_("999' 11.9\""), DISTFMT_FMT_SHRT|DISTFMT_FRACT_NUM|1 },
+ { N_("999' 11 7/8\""), DISTFMT_FMT_SHRT|DISTFMT_FRACT_FRC|3 },
+ { N_("999' 11 63/64\""), DISTFMT_FMT_SHRT|DISTFMT_FRACT_FRC|6 },
+ { N_("999ft 11.999in"), DISTFMT_FMT_LONG|DISTFMT_FRACT_NUM|3 },
+ { N_("999ft 11.99in"), DISTFMT_FMT_LONG|DISTFMT_FRACT_NUM|2 },
+ { N_("999ft 11.9in"), DISTFMT_FMT_LONG|DISTFMT_FRACT_NUM|1 },
+ { N_("999ft 11 7/8in"), DISTFMT_FMT_LONG|DISTFMT_FRACT_FRC|3 },
+ { N_("999ft 11 63/64in"), DISTFMT_FMT_LONG|DISTFMT_FRACT_FRC|6 },
+ { NULL, 0 }
+};
static dstFmts_t metricDstFmts[] = {
- { N_("999.999"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|3 },
- { N_("999.99"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|2 },
- { N_("999.9"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|1 },
- { N_("999.999mm"), DISTFMT_FMT_MM|DISTFMT_FRACT_NUM|3 },
- { N_("999.99mm"), DISTFMT_FMT_MM|DISTFMT_FRACT_NUM|2 },
- { N_("999.9mm"), DISTFMT_FMT_MM|DISTFMT_FRACT_NUM|1 },
- { N_("999.999cm"), DISTFMT_FMT_CM|DISTFMT_FRACT_NUM|3 },
- { N_("999.99cm"), DISTFMT_FMT_CM|DISTFMT_FRACT_NUM|2 },
- { N_("999.9cm"), DISTFMT_FMT_CM|DISTFMT_FRACT_NUM|1 },
- { N_("999.999m"), DISTFMT_FMT_M|DISTFMT_FRACT_NUM|3 },
- { N_("999.99m"), DISTFMT_FMT_M|DISTFMT_FRACT_NUM|2 },
- { N_("999.9m"), DISTFMT_FMT_M|DISTFMT_FRACT_NUM|1 },
- { NULL, 0 },
- { NULL, 0 },
- { NULL, 0 },
- { NULL, 0 },
- { NULL, 0 },
- { NULL, 0 } };
+ { N_("999.999"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|3 },
+ { N_("999.99"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|2 },
+ { N_("999.9"), DISTFMT_FMT_NONE|DISTFMT_FRACT_NUM|1 },
+ { N_("999.999mm"), DISTFMT_FMT_MM|DISTFMT_FRACT_NUM|3 },
+ { N_("999.99mm"), DISTFMT_FMT_MM|DISTFMT_FRACT_NUM|2 },
+ { N_("999.9mm"), DISTFMT_FMT_MM|DISTFMT_FRACT_NUM|1 },
+ { N_("999.999cm"), DISTFMT_FMT_CM|DISTFMT_FRACT_NUM|3 },
+ { N_("999.99cm"), DISTFMT_FMT_CM|DISTFMT_FRACT_NUM|2 },
+ { N_("999.9cm"), DISTFMT_FMT_CM|DISTFMT_FRACT_NUM|1 },
+ { N_("999.999m"), DISTFMT_FMT_M|DISTFMT_FRACT_NUM|3 },
+ { N_("999.99m"), DISTFMT_FMT_M|DISTFMT_FRACT_NUM|2 },
+ { N_("999.9m"), DISTFMT_FMT_M|DISTFMT_FRACT_NUM|1 },
+ { NULL, 0 },
+ { NULL, 0 },
+ { NULL, 0 },
+ { NULL, 0 },
+ { NULL, 0 },
+ { NULL, 0 }
+};
static dstFmts_t *dstFmts[] = { englishDstFmts, metricDstFmts };
void UpdateAutoSaveInterval(long value)
@@ -390,19 +404,21 @@ void UpdateChkPtInterval(long value)
/**
* Load the selection list for number formats with the appropriate list of variants.
- */
-
+ */
+
static void LoadDstFmtList( void )
{
int inx;
wListClear( (wList_p)prefPLs[I_DSTFMT].control );
- for ( inx=0; dstFmts[units][inx].name; inx++ )
- wListAddValue( (wList_p)prefPLs[I_DSTFMT].control, _(dstFmts[units][inx].name), NULL, I2VP(dstFmts[units][inx].fmt) );
+ for ( inx=0; dstFmts[units][inx].name; inx++ ) {
+ wListAddValue( (wList_p)prefPLs[I_DSTFMT].control, _(dstFmts[units][inx].name),
+ NULL, I2VP(dstFmts[units][inx].fmt) );
+ }
}
/**
-* Handle changing of measurement system. The list of number formats is loaded
-* and the first entry is selected as default value.
+* Handle changing of measurement system. The list of number formats is loaded
+* and the first entry is selected as default value.
*/
static void UpdatePrefD( void )
@@ -410,9 +426,11 @@ static void UpdatePrefD( void )
long newUnits, oldUnits;
int inx;
- if ( prefW==NULL || (!wWinIsVisible(prefW)) || prefPLs[1].control==NULL )
+ if ( prefW==NULL || (!wWinIsVisible(prefW))
+ || prefPLs[I_UNITS].control==NULL ) {
return;
- newUnits = wRadioGetValue( (wChoice_p)prefPLs[1].control );
+ }
+ newUnits = wRadioGetValue( (wChoice_p)prefPLs[I_UNITS].control );
if (newUnits != displayUnits) {
oldUnits = units;
units = newUnits;
@@ -437,10 +455,10 @@ static void UpdatePrefD( void )
static void UpdateMeasureFmt()
{
- int inx;
+ int inx;
distanceFormatInx = wListGetIndex((wList_p)prefPLs[I_DSTFMT].control);
- units = wRadioGetValue((wChoice_p)prefPLs[1].control);
+ units = wRadioGetValue((wChoice_p)prefPLs[I_UNITS].control);
for (inx = 0; inx < COUNT( prefPLs ); inx++) {
if ((prefPLs[inx].option&PDO_DIM)) {
@@ -482,8 +500,9 @@ static void PrefOk( void * junk )
NoticeMessage2( 0, MSG_CONN_PARAMS_TOO_BIG, _("Ok"), NULL ) ;
}
- if(changes & CHANGE_ICONSIZE)
+ if(changes & CHANGE_ICONSIZE) {
NoticeMessage( MSG_ICON_SIZE_RESTART, _("Ok"), NULL ) ;
+ }
wHide( prefW );
DoChangeNotification(changes);
@@ -494,7 +513,8 @@ static void PrefOk( void * junk )
static void DoPref( void * junk )
{
if (prefW == NULL) {
- prefW = ParamCreateDialog( &prefPG, MakeWindowTitle(_("Preferences")), _("Ok"), PrefOk, wHide, TRUE, NULL, 0, OptionDlgUpdate );
+ prefW = ParamCreateDialog( &prefPG, MakeWindowTitle(_("Preferences")), _("Ok"),
+ PrefOk, wHide, TRUE, NULL, 0, OptionDlgUpdate );
LoadDstFmtList();
}
ParamLoadControls( &prefPG );
@@ -506,21 +526,25 @@ static void DoPref( void * junk )
EXPORT addButtonCallBack_t PrefInit( void )
{
ParamRegister( &prefPG );
- if (connectAngle < 1.0)
+ if (connectAngle < 1.0) {
connectAngle = 1.0;
- if (connectDistance < 0.1)
+ }
+ if (connectDistance < 0.1) {
connectDistance = 0.1;
- if (minLength < 0.1)
+ }
+ if (minLength < 0.1) {
minLength = 0.1;
+ }
return &DoPref;
}
EXPORT long GetDistanceFormat( void )
{
- while ( dstFmts[units][distanceFormatInx].name == NULL )
+ while ( dstFmts[units][distanceFormatInx].name == NULL ) {
distanceFormatInx--;
- return dstFmts[units][distanceFormatInx].fmt;
+ }
+ return dstFmts[units][distanceFormatInx].fmt;
}
/*****************************************************************************
@@ -541,7 +565,10 @@ static paramData_t colorPLs[] = {
{ PD_COLORLIST, &selectedColor, "selected", PDO_NOPSHUPD, NULL, N_("Selected Track"), 0, I2VP(CHANGE_MAIN) },
{ PD_COLORLIST, &profilePathColor, "profile", PDO_NOPSHUPD, NULL, N_("Profile Path"), 0, I2VP(CHANGE_MAIN) },
{ PD_COLORLIST, &exceptionColor, "exception", PDO_NOPSHUPD, NULL, N_("Exception Track"), 0, I2VP(CHANGE_MAIN) },
- { PD_COLORLIST, &tieColor, "tie", PDO_NOPSHUPD, NULL, N_("Track Ties"), 0, I2VP(CHANGE_MAIN) } };
+ { PD_COLORLIST, &tieColor, "tie", PDO_NOPSHUPD, NULL, N_("Track Ties"), 0, I2VP(CHANGE_MAIN) },
+ { PD_COLORLIST, &bridgeColor, "bridge", PDO_NOPSHUPD, NULL, N_("Bridge Base"), 0, I2VP(CHANGE_MAIN) },
+ { PD_COLORLIST, &roadbedColor, "roadbed", PDO_NOPSHUPD, NULL, N_("Track Roadbed"), 0, I2VP(CHANGE_MAIN) }
+};
static paramGroup_t colorPG = { "rgbcolor", PGO_RECORD|PGO_PREFGROUP, colorPLs, COUNT( colorPLs ) };
@@ -551,16 +578,19 @@ static void ColorOk( void * junk )
long changes;
changes = GetChanges( &colorPG );
wHide( colorW );
- if ( (changes&CHANGE_GRID) && GridIsVisible() )
+ if ( (changes&CHANGE_GRID) && GridIsVisible() ) {
changes |= CHANGE_MAIN;
+ }
DoChangeNotification( changes );
}
static void DoColor( void * junk )
{
- if (colorW == NULL)
- colorW = ParamCreateDialog( &colorPG, MakeWindowTitle(_("Color")), _("Ok"), ColorOk, wHide, TRUE, NULL, 0, NULL );
+ if (colorW == NULL) {
+ colorW = ParamCreateDialog( &colorPG, MakeWindowTitle(_("Color")), _("Ok"),
+ ColorOk, wHide, TRUE, NULL, 0, NULL );
+ }
ParamLoadControls( &colorPG );
wShow( colorW );
}
diff --git a/app/bin/dpricels.c b/app/bin/dpricels.c
index ef7025e..06931fe 100644
--- a/app/bin/dpricels.c
+++ b/app/bin/dpricels.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 "compound.h"
@@ -51,12 +51,13 @@ static paramData_t priceListPLs[] = {
{ PD_STRING, &priceListEntryV, "entry", PDO_NOPREF|PDO_NOPSHUPD|PDO_DLGHORZ, I2VP(400-80-3), NULL, BO_READONLY, NULL, sizeof priceListEntryV },
#define I_PRICELSLIST (2)
#define priceListSelL ((wList_p)priceListPLs[I_PRICELSLIST].control)
- { PD_LIST, NULL, "inx", PDO_NOPREF|PDO_NOPSHUPD, &priceListListData },
+ { PD_LIST, NULL, "inx", PDO_DLGRESIZE|PDO_NOPREF|PDO_NOPSHUPD, &priceListListData },
#define I_PRICELSFLEXLEN (3)
{ PD_FLOAT, &priceListFlexLengthV, "flexlen", PDO_NOPREF|PDO_NOPSHUPD|PDO_DIM|PDO_DLGRESETMARGIN, &priceListFlexData, N_("Flex Track") },
{ PD_MESSAGE, N_("costs"), NULL, PDO_DLGHORZ },
#define I_PRICELSFLEXCOST (6)
- { PD_FLOAT, &priceListFlexCostV, "flexcost", PDO_NOPREF|PDO_NOPSHUPD|PDO_DLGHORZ, &priceListFlexData } };
+ { PD_FLOAT, &priceListFlexCostV, "flexcost", PDO_NOPREF|PDO_NOPSHUPD|PDO_DLGHORZ, &priceListFlexData }
+};
static paramGroup_t priceListPG = { "pricelist", 0, priceListPLs, COUNT( priceListPLs ) };
@@ -64,16 +65,21 @@ static void PriceListUpdate()
{
DIST_T oldPrice;
ParamLoadData( &priceListPG );
- if (priceListCurrent == NULL)
+ if (priceListCurrent == NULL) {
return;
- FormatCompoundTitle( LABEL_MANUF|LABEL_DESCR|LABEL_PARTNO, priceListCurrent->title );
+ }
+ FormatCompoundTitle( LABEL_MANUF|LABEL_DESCR|LABEL_PARTNO,
+ priceListCurrent->title );
wPrefGetFloat( "price list", message, &oldPrice, 0.0 );
- if (oldPrice == priceListCostV)
+ if (oldPrice == priceListCostV) {
return;
+ }
wPrefSetFloat( "price list", message, priceListCostV );
FormatCompoundTitle( listLabels|LABEL_COST, priceListCurrent->title );
- if (message[0] != '\0')
- wListSetValues( priceListSelL, wListGetIndex(priceListSelL), message, NULL, priceListCurrent );
+ if (message[0] != '\0') {
+ wListSetValues( priceListSelL, wListGetIndex(priceListSelL), message, NULL,
+ priceListCurrent );
+ }
}
@@ -88,14 +94,16 @@ static void PriceListOk( void * action )
static void PriceListSel(
- turnoutInfo_t * to )
+ turnoutInfo_t * to )
{
FLOAT_T price;
PriceListUpdate();
priceListCurrent = to;
- if (priceListCurrent == NULL)
+ if (priceListCurrent == NULL) {
return;
- FormatCompoundTitle( LABEL_MANUF|LABEL_DESCR|LABEL_PARTNO, priceListCurrent->title );
+ }
+ FormatCompoundTitle( LABEL_MANUF|LABEL_DESCR|LABEL_PARTNO,
+ priceListCurrent->title );
wPrefGetFloat( "price list", message, &price, 0.00 );
priceListCostV = price;
strcpy( priceListEntryV, message );
@@ -108,18 +116,24 @@ static void PriceListChange( long changes )
{
turnoutInfo_t * to1, * to2;
if ((changes & (CHANGE_SCALE|CHANGE_PARAMS)) == 0 ||
- priceListW == NULL || !wWinIsVisible( priceListW ) )
+ priceListW == NULL || !wWinIsVisible( priceListW ) ) {
return;
+ }
wListClear( priceListSelL );
- to1 = TurnoutAdd( listLabels|LABEL_COST, GetLayoutCurScale(), priceListSelL, NULL, -1 );
- to2 = StructAdd( listLabels|LABEL_COST, GetLayoutCurScale(), priceListSelL, NULL );
- if (to1 == NULL)
+ to1 = TurnoutAdd( listLabels|LABEL_COST, GetLayoutCurScale(), priceListSelL,
+ NULL, -1 );
+ to2 = StructAdd( listLabels|LABEL_COST, GetLayoutCurScale(), priceListSelL,
+ NULL );
+ if (to1 == NULL) {
to1 = to2;
+ }
priceListCurrent = NULL;
- if (to1)
+ if (to1) {
PriceListSel( to1 );
- if ((changes & CHANGE_SCALE) == 0)
+ }
+ if ((changes & CHANGE_SCALE) == 0) {
return;
+ }
sprintf( message, "price list %s", curScaleName );
wPrefGetFloat( message, "flex length", &priceListFlexLengthV, 0.0 );
wPrefGetFloat( message, "flex cost", &priceListFlexCostV, 0.0 );
@@ -128,9 +142,9 @@ static void PriceListChange( long changes )
static void PriceListDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
turnoutInfo_t * to;
switch( inx ) {
@@ -138,7 +152,8 @@ static void PriceListDlgUpdate(
PriceListUpdate();
break;
case I_PRICELSLIST:
- to = (turnoutInfo_t*)wListGetItemContext( (wList_p)pg->paramPtr[inx].control, (wIndex_t)*(long*)valueP );
+ to = (turnoutInfo_t*)wListGetItemContext( (wList_p)pg->paramPtr[inx].control,
+ (wIndex_t)*(long*)valueP );
PriceListSel( to );
break;
}
@@ -147,8 +162,10 @@ static void PriceListDlgUpdate(
static void DoPriceList( void * junk )
{
- if (priceListW == NULL)
- priceListW = ParamCreateDialog( &priceListPG, MakeWindowTitle(_("Price List")), _("Done"), PriceListOk, wHide, TRUE, NULL, F_RESIZE, PriceListDlgUpdate );
+ if (priceListW == NULL) {
+ priceListW = ParamCreateDialog( &priceListPG, MakeWindowTitle(_("Price List")),
+ _("Done"), PriceListOk, wHide, TRUE, NULL, F_RESIZE, PriceListDlgUpdate );
+ }
wShow( priceListW );
PriceListChange( CHANGE_SCALE|CHANGE_PARAMS );
}
diff --git a/app/bin/dprmfile.c b/app/bin/dprmfile.c
index 7fbe337..ced4c8f 100644
--- a/app/bin/dprmfile.c
+++ b/app/bin/dprmfile.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 "custom.h"
@@ -67,17 +67,17 @@ static char * paramFileLabels[] = { N_("Show File Names"), NULL };
static paramData_t paramFilePLs[] = {
#define I_PRMFILLIST (0)
#define paramFileL ((wList_p)paramFilePLs[I_PRMFILLIST].control)
- { PD_LIST, NULL, "inx", PDO_NOPREF | PDO_DLGRESIZE, &paramFileListData, NULL, BL_DUP|BL_SETSTAY|BL_MANY },
+ { PD_LIST, NULL, "inx", PDO_NOPREF | PDO_DLGRESIZE, &paramFileListData, NULL, BL_DUP|BL_SETSTAY|BL_MANY },
#define I_PRMFILTOGGLE (1)
- { PD_TOGGLE, &paramFileSel, "mode", 0, paramFileLabels, NULL, BC_HORZ|BC_NOBORDER },
+ { PD_TOGGLE, &paramFileSel, "mode", 0, paramFileLabels, NULL, BC_HORZ|BC_NOBORDER },
#define I_MESSAGE (2)
{ PD_MESSAGE, "", NULL, 0, I2VP(370) },
- { PD_BUTTON, ParamFileSelectAll, "selectall", PDO_DLGCMDBUTTON, NULL, N_("Select all") },
+ { PD_BUTTON, ParamFileSelectAll, "selectall", PDO_DLGCMDBUTTON, NULL, N_("Select all") },
#define I_PRMFILEFAVORITE (4)
- { PD_BUTTON, ParamFileFavorite, "favorite", PDO_DLGCMDBUTTON, I2VP(TRUE), N_("Favorite")},
- { PD_BUTTON, ParamUnloadSelectedFiles, "unload", PDO_DLGCMDBUTTON, NULL, N_(PARAMBUTTON_UNLOAD), 0L, FALSE },
+ { PD_BUTTON, ParamFileFavorite, "favorite", PDO_DLGCMDBUTTON, I2VP(TRUE), N_("Favorite")},
+ { PD_BUTTON, ParamUnloadSelectedFiles, "unload", PDO_DLGCMDBUTTON, NULL, N_(PARAMBUTTON_UNLOAD), 0L, FALSE },
{ PD_BUTTON, ParamRefreshSelectedFiles, "refresh", PDO_DLGCMDBUTTON, NULL, N_(PARAMBUTTON_REFRESH), 0L, FALSE },
- { PD_BUTTON, DoSearchParams, "find", 0, NULL, N_("Library...") },
+ { PD_BUTTON, DoSearchParams, "find", 0, NULL, N_("Library...") },
{ PD_BUTTON, ParamFileBrowse, "browse", 0, NULL, N_("Browse...") },
@@ -100,14 +100,16 @@ static dynArr_t *sortFiles;
int
CompareParameterFiles(const void *index1, const void *index2)
{
- paramFileInfo_t paramFile1 = DYNARR_N(paramFileInfo_t, (*sortFiles), *(int*)index1);
- paramFileInfo_t paramFile2 = DYNARR_N(paramFileInfo_t, (*sortFiles), *(int*)index2);
-
- if (paramFile2.trackState != paramFile1.trackState) {
- return (paramFile2.trackState - paramFile1.trackState);
- } else {
- return (strcmp(paramFile1.contents, paramFile2.contents));
- }
+ paramFileInfo_t paramFile1 = DYNARR_N(paramFileInfo_t, (*sortFiles),
+ *(int*)index1);
+ paramFileInfo_t paramFile2 = DYNARR_N(paramFileInfo_t, (*sortFiles),
+ *(int*)index2);
+
+ if (paramFile2.trackState != paramFile1.trackState) {
+ return (paramFile2.trackState - paramFile1.trackState);
+ } else {
+ return (strcmp(paramFile1.contents, paramFile2.contents));
+ }
}
/**
@@ -123,13 +125,13 @@ CompareParameterFiles(const void *index1, const void *index2)
void
SortParamFileList(size_t cnt, dynArr_t *files, int *list)
{
- for (size_t i = 0; i < cnt; i++) {
- list[i] = (int)i;
- }
+ for (size_t i = 0; i < cnt; i++) {
+ list[i] = (int)i;
+ }
- sortFiles = files;
+ sortFiles = files;
- qsort(list, (size_t)cnt, sizeof(int), CompareParameterFiles);
+ qsort(list, (size_t)cnt, sizeof(int), CompareParameterFiles);
}
@@ -138,45 +140,46 @@ SortParamFileList(size_t cnt, dynArr_t *files, int *list)
*/
void ParamFileListLoad(int paramFileCnt, dynArr_t *paramFiles)
{
- DynString description;
- DynStringMalloc(&description, STR_SHORT_SIZE);
- int *sortedIndex = MyMalloc(sizeof(int)*paramFileCnt);
+ DynString description;
+ DynStringMalloc(&description, STR_SHORT_SIZE);
+ int *sortedIndex = MyMalloc(sizeof(int)*paramFileCnt);
int log_params = LogFindIndex("params");
- SortParamFileList(paramFileCnt, paramFiles, sortedIndex);
-
- wControlShow((wControl_p)paramFileL, FALSE);
- wListClear(paramFileL);
-
- for (int i = 0; i < paramFileCnt; i++) {
- paramFileInfo_t paramFileInfo = DYNARR_N(paramFileInfo_t, (*paramFiles),
- sortedIndex[ i ]);
- if (paramFileInfo.valid) {
- DynStringClear(&description);
- DynStringCatCStr(&description,
- ((!paramFileSel) && paramFileInfo.contents) ?
- paramFileInfo.contents :
- paramFileInfo.name);
-
- wListAddValue(paramFileL,
- DynStringToCStr(&description),
- indicatorIcons[ paramFileInfo.favorite ][paramFileInfo.trackState],
- I2VP(sortedIndex[i]));
-
- LOG1(log_params, ("ParamFileListLoad: = %s: %d\n", paramFileInfo.contents, paramFileInfo.trackState))
- }
- }
- wControlShow((wControl_p)paramFileL, TRUE);
- DynStringFree(&description);
- MyFree(sortedIndex);
+ SortParamFileList(paramFileCnt, paramFiles, sortedIndex);
+
+ wControlShow((wControl_p)paramFileL, FALSE);
+ wListClear(paramFileL);
+
+ for (int i = 0; i < paramFileCnt; i++) {
+ paramFileInfo_t paramFileInfo = DYNARR_N(paramFileInfo_t, (*paramFiles),
+ sortedIndex[ i ]);
+ if (paramFileInfo.valid) {
+ DynStringClear(&description);
+ DynStringCatCStr(&description,
+ ((!paramFileSel) && paramFileInfo.contents) ?
+ paramFileInfo.contents :
+ paramFileInfo.name);
+
+ wListAddValue(paramFileL,
+ DynStringToCStr(&description),
+ indicatorIcons[ paramFileInfo.favorite ][paramFileInfo.trackState],
+ I2VP(sortedIndex[i]));
+
+ LOG1(log_params, ("ParamFileListLoad: = %s: %d\n", paramFileInfo.contents,
+ paramFileInfo.trackState))
+ }
+ }
+ wControlShow((wControl_p)paramFileL, TRUE);
+ DynStringFree(&description);
+ MyFree(sortedIndex);
}
static void ParamFileBrowse(void * junk)
{
wMessageSetValue(MESSAGETEXT, "");
- wFilSelect(paramFile_fs, GetParamFileDir());
- return;
+ wFilSelect(paramFile_fs, GetParamFileDir());
+ return;
}
/**
@@ -188,35 +191,35 @@ static void ParamFileBrowse(void * junk)
static void UpdateParamFileButton(void)
{
- wIndex_t selcnt = wListGetSelectedCount(paramFileL);
- wIndex_t inx, cnt;
- wIndex_t fileInx;
-
- //nothing selected -> leave
- if (selcnt <= 0) {
- return;
- }
-
- // set the default
- paramFilePLs[I_PRMFILEFAVORITE].context = FALSE;
-
- // get the number of items in list
- cnt = wListGetCount(paramFileL);
-
- // walk through the whole list box
- for (inx=0; inx<cnt; inx++) {
- if (wListGetItemSelected((wList_p)paramFileL, inx)) {
- // if item is selected, get status
- fileInx = (wIndex_t)VP2L(wListGetItemContext(paramFileL, inx));
-
- if (fileInx < 0 || fileInx >= GetParamFileCount()) {
- return;
- }
- if (!IsParamFileFavorite(fileInx)) {
- paramFilePLs[I_PRMFILEFAVORITE].context = I2VP(TRUE);
- }
- }
- }
+ wIndex_t selcnt = wListGetSelectedCount(paramFileL);
+ wIndex_t inx, cnt;
+ wIndex_t fileInx;
+
+ //nothing selected -> leave
+ if (selcnt <= 0) {
+ return;
+ }
+
+ // set the default
+ paramFilePLs[I_PRMFILEFAVORITE].context = FALSE;
+
+ // get the number of items in list
+ cnt = wListGetCount(paramFileL);
+
+ // walk through the whole list box
+ for (inx=0; inx<cnt; inx++) {
+ if (wListGetItemSelected((wList_p)paramFileL, inx)) {
+ // if item is selected, get status
+ fileInx = (wIndex_t)VP2L(wListGetItemContext(paramFileL, inx));
+
+ if (fileInx < 0 || fileInx >= GetParamFileCount()) {
+ return;
+ }
+ if (!IsParamFileFavorite(fileInx)) {
+ paramFilePLs[I_PRMFILEFAVORITE].context = I2VP(TRUE);
+ }
+ }
+ }
}
/**
@@ -228,20 +231,20 @@ static void UpdateParamFileButton(void)
void
UpdateParamFileProperties( bool newState)
{
- wIndex_t inx, cnt;
- wIndex_t fileInx;
-
- // get the number of items in list
- cnt = wListGetCount(paramFileL);
-
- // walk through the whole list box
- for (inx = 0; inx < cnt; inx++) {
- if (wListGetItemSelected((wList_p)paramFileL, inx)) {
- fileInx = (wIndex_t)VP2L(wListGetItemContext(paramFileL, inx));
- SetParamFileFavorite(fileInx, newState);
- }
- }
- DoChangeNotification(CHANGE_PARAMS);
+ wIndex_t inx, cnt;
+ wIndex_t fileInx;
+
+ // get the number of items in list
+ cnt = wListGetCount(paramFileL);
+
+ // walk through the whole list box
+ for (inx = 0; inx < cnt; inx++) {
+ if (wListGetItemSelected((wList_p)paramFileL, inx)) {
+ fileInx = (wIndex_t)VP2L(wListGetItemContext(paramFileL, inx));
+ SetParamFileFavorite(fileInx, newState);
+ }
+ }
+ DoChangeNotification(CHANGE_PARAMS);
}
/**
@@ -253,11 +256,11 @@ UpdateParamFileProperties( bool newState)
static void ParamFileFavorite(void * setFavorite)
{
- wIndex_t selcnt = wListGetSelectedCount(paramFileL);
+ wIndex_t selcnt = wListGetSelectedCount(paramFileL);
wMessageSetValue(MESSAGETEXT, "");
- if (selcnt) {
- UpdateParamFileProperties(setFavorite?TRUE:FALSE);
- }
+ if (selcnt) {
+ UpdateParamFileProperties(setFavorite?TRUE:FALSE);
+ }
}
/**
@@ -295,7 +298,8 @@ ParamChangeSelectedFiles(unsigned paramFileChange)
}
break;
default:
- AbortProg("Invalid change type %d in ParamChangeSelectedFiles", paramFileChange);
+ CHECKMSG( FALSE, ("Invalid change type %d in ParamChangeSelectedFiles",
+ paramFileChange) );
}
}
}
@@ -312,24 +316,24 @@ ParamChangeSelectedFiles(unsigned paramFileChange)
static void ParamRefreshSelectedFiles(void * action)
{
- wIndex_t selcnt = wListGetSelectedCount(paramFileL);
-
- //nothing selected -> leave
- if (selcnt) {
- DynString reloadMessage;
- ParamChangeSelectedFiles(PARAMFILE_REFRESH);
-
- DynStringMalloc(&reloadMessage, 16);
- if (selcnt > 1) {
- DynStringPrintf(&reloadMessage, _("%d parameter files reloaded."), selcnt);
- } else {
- DynStringCatCStr(&reloadMessage, _("One parameter file reloaded."));
- }
- wMessageSetValue(MESSAGETEXT, DynStringToCStr(&reloadMessage));
+ wIndex_t selcnt = wListGetSelectedCount(paramFileL);
+
+ //nothing selected -> leave
+ if (selcnt) {
+ DynString reloadMessage;
+ ParamChangeSelectedFiles(PARAMFILE_REFRESH);
+
+ DynStringMalloc(&reloadMessage, 16);
+ if (selcnt > 1) {
+ DynStringPrintf(&reloadMessage, _("%d parameter files reloaded."), selcnt);
+ } else {
+ DynStringCatCStr(&reloadMessage, _("One parameter file reloaded."));
+ }
+ wMessageSetValue(MESSAGETEXT, DynStringToCStr(&reloadMessage));
DynStringFree(&reloadMessage);
- } else {
- wBeep();
- }
+ } else {
+ wBeep();
+ }
}
static void ParamUnloadSelectedFiles(void * action)
@@ -355,43 +359,43 @@ static void ParamUnloadSelectedFiles(void * action)
static void ParamFileSelectAll(void *junk)
{
wMessageSetValue(MESSAGETEXT, "");
- wListSelectAll(paramFileL);
- UpdateParamFileButton();
+ wListSelectAll(paramFileL);
+ UpdateParamFileButton();
}
static void ParamFileOk(void * junk)
{
- SearchUiOk(junk);
-
+ SearchUiOk(junk);
+
DoChangeNotification(CHANGE_PARAMS);
- wHide(paramFileW);
+ wHide(paramFileW);
}
static void ParamFileDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP)
+ paramGroup_p pg,
+ int inx,
+ void * valueP)
{
- switch (inx) {
- case I_PRMFILLIST:
- UpdateParamFileButton();
- break;
- case I_PRMFILTOGGLE:
- DoChangeNotification(CHANGE_PARAMS);
- break;
- }
+ switch (inx) {
+ case I_PRMFILLIST:
+ UpdateParamFileButton();
+ break;
+ case I_PRMFILTOGGLE:
+ DoChangeNotification(CHANGE_PARAMS);
+ break;
+ }
}
void ParamFilesChange(long changes)
{
- if (changes & CHANGE_PARAMS || changes & CHANGE_SCALE) {
- UpdateParamFileList();
- if (paramFileW) {
- ParamFileListLoad(paramFileInfo_da.cnt, &paramFileInfo_da);
- }
- }
+ if (changes & CHANGE_PARAMS || changes & CHANGE_SCALE) {
+ UpdateParamFileList();
+ if (paramFileW) {
+ ParamFileListLoad(paramFileInfo_da.cnt, &paramFileInfo_da);
+ }
+ }
}
/**
@@ -402,38 +406,38 @@ void ParamFilesChange(long changes)
void DoParamFiles(void * junk)
{
- void * data;
-
- if (paramFileW == NULL) {
- indicatorIcons[ STANDARD_PARAM ][ PARAMFILE_UNLOADED ] = wIconCreatePixMap(
- greydot);
- indicatorIcons[ STANDARD_PARAM ][ PARAMFILE_NOTUSABLE ] = wIconCreatePixMap(
- reddot);
- indicatorIcons[ STANDARD_PARAM ][ PARAMFILE_COMPATIBLE ] = wIconCreatePixMap(
- yellowdot);
- indicatorIcons[ STANDARD_PARAM ][ PARAMFILE_FIT] = wIconCreatePixMap(greendot);
- indicatorIcons[ FAVORITE_PARAM ][ PARAMFILE_UNLOADED ] = wIconCreatePixMap(
- greystar);
- indicatorIcons[ FAVORITE_PARAM ][ PARAMFILE_NOTUSABLE ] = wIconCreatePixMap(
- redstar);
- indicatorIcons[ FAVORITE_PARAM ][ PARAMFILE_COMPATIBLE ] = wIconCreatePixMap(
- yellowstar);
- indicatorIcons[ FAVORITE_PARAM ][ PARAMFILE_FIT ] = wIconCreatePixMap(
- greenstar);
-
- ParamRegister(&paramFilePG);
-
- paramFileW = ParamCreateDialog(&paramFilePG,
- MakeWindowTitle(_("Parameter Files")), _("Ok"), ParamFileOk, NULL,
- TRUE, NULL, F_RESIZE | F_RECALLSIZE, ParamFileDlgUpdate);
- paramFile_fs = wFilSelCreate(mainW, FS_LOAD, FS_MULTIPLEFILES,
- _("Load Parameters"), _("Parameter files (*.xtp)|*.xtp"), LoadParamFile, NULL);
- }
- ParamLoadControls(&paramFilePG);
- ParamGroupRecord(&paramFilePG);
- if ((wListGetValues(paramFileL, NULL, 0, NULL, &data))>=0) {
- UpdateParamFileButton();
- }
-
- wShow(paramFileW);
+ void * data;
+
+ if (paramFileW == NULL) {
+ indicatorIcons[ STANDARD_PARAM ][ PARAMFILE_UNLOADED ] = wIconCreatePixMap(
+ greydot);
+ indicatorIcons[ STANDARD_PARAM ][ PARAMFILE_NOTUSABLE ] = wIconCreatePixMap(
+ reddot);
+ indicatorIcons[ STANDARD_PARAM ][ PARAMFILE_COMPATIBLE ] = wIconCreatePixMap(
+ yellowdot);
+ indicatorIcons[ STANDARD_PARAM ][ PARAMFILE_FIT] = wIconCreatePixMap(greendot);
+ indicatorIcons[ FAVORITE_PARAM ][ PARAMFILE_UNLOADED ] = wIconCreatePixMap(
+ greystar);
+ indicatorIcons[ FAVORITE_PARAM ][ PARAMFILE_NOTUSABLE ] = wIconCreatePixMap(
+ redstar);
+ indicatorIcons[ FAVORITE_PARAM ][ PARAMFILE_COMPATIBLE ] = wIconCreatePixMap(
+ yellowstar);
+ indicatorIcons[ FAVORITE_PARAM ][ PARAMFILE_FIT ] = wIconCreatePixMap(
+ greenstar);
+
+ ParamRegister(&paramFilePG);
+
+ paramFileW = ParamCreateDialog(&paramFilePG,
+ MakeWindowTitle(_("Parameter Files")), _("Ok"), ParamFileOk, NULL,
+ TRUE, NULL, F_RESIZE | F_RECALLSIZE, ParamFileDlgUpdate);
+ paramFile_fs = wFilSelCreate(mainW, FS_LOAD, FS_MULTIPLEFILES,
+ _("Load Parameters"), _("Parameter files (*.xtp)|*.xtp"), LoadParamFile, NULL);
+ }
+ ParamLoadControls(&paramFilePG);
+ ParamGroupRecord(&paramFilePG);
+ if ((wListGetValues(paramFileL, NULL, 0, NULL, &data))>=0) {
+ UpdateParamFileButton();
+ }
+
+ wShow(paramFileW);
}
diff --git a/app/bin/draw.c b/app/bin/draw.c
index d7ec0c0..d833a7b 100644
--- a/app/bin/draw.c
+++ b/app/bin/draw.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 "cselect.h"
@@ -38,13 +38,13 @@ static void DrawMarkers( void );
static void ConstraintOrig( coOrd *, coOrd, int, int );
static void DoMouse( wAction_t action, coOrd pos );
static void DDrawPoly(
- drawCmd_p d,
- int cnt,
- coOrd * pts,
- int * types,
- wDrawColor color,
- wDrawWidth width,
- drawFill_e eFillOpt );
+ drawCmd_p d,
+ int cnt,
+ coOrd * pts,
+ int * types,
+ wDrawColor color,
+ wDrawWidth width,
+ drawFill_e eFillOpt );
static void DrawMapBoundingBox( BOOL_T set );
static void DrawTicks( drawCmd_p d, coOrd size );
static void DoZoom( void * pScaleVP );
@@ -54,6 +54,7 @@ static int log_zoom = 0;
static int log_mouse = 0;
static int log_redraw = 0;
static int log_timemainredraw = 0;
+static int log_mapsize = 0;
static wFontSize_t drawMaxTextFontSize = 100;
@@ -65,11 +66,14 @@ static wFontSize_t drawMaxTextFontSize = 100;
// static char FAR message[STR_LONG_SIZE];
-EXPORT wDrawPix_t closePixels = 10;
EXPORT long maxArcSegStraightLen = 100;
EXPORT long drawCount;
EXPORT BOOL_T drawEnable = TRUE;
EXPORT long currRedraw = 0;
+EXPORT long constrainMain = 0;
+//EXPORT long mapScale = 64;
+EXPORT long liveMap = 0;
+EXPORT long descriptionFontSize = 72;
EXPORT coOrd panCenter;
EXPORT coOrd menuPos;
@@ -80,10 +84,15 @@ EXPORT wDrawColor drawColorRed;
EXPORT wDrawColor drawColorBlue;
EXPORT wDrawColor drawColorGreen;
EXPORT wDrawColor drawColorAqua;
+EXPORT wDrawColor drawColorDkRed;
+EXPORT wDrawColor drawColorDkBlue;
+EXPORT wDrawColor drawColorDkGreen;
+EXPORT wDrawColor drawColorDkAqua;
EXPORT wDrawColor drawColorPreviewSelected;
EXPORT wDrawColor drawColorPreviewUnselected;
EXPORT wDrawColor drawColorPowderedBlue;
EXPORT wDrawColor drawColorPurple;
+EXPORT wDrawColor drawColorMagenta;
EXPORT wDrawColor drawColorGold;
EXPORT wDrawColor drawColorGrey10;
EXPORT wDrawColor drawColorGrey20;
@@ -122,24 +131,26 @@ EXPORT wDrawColor elevColorDefined;
EXPORT wDrawColor profilePathColor;
EXPORT wDrawColor exceptionColor;
+DIST_T closeDist = 0.100;
+
static wFont_p rulerFp;
static struct {
- wStatus_p scale_m;
- wStatus_p count_m;
- wStatus_p posX_m;
- wStatus_p posY_m;
- wStatus_p info_m;
- wWinPix_t scale_w;
- wWinPix_t count_w;
- wWinPix_t pos_w;
- wWinPix_t info_w;
- wBox_p scale_b;
- wBox_p count_b;
- wBox_p posX_b;
- wBox_p posY_b;
- wBox_p info_b;
- } infoD;
+ wStatus_p scale_m;
+ wStatus_p count_m;
+ wStatus_p posX_m;
+ wStatus_p posY_m;
+ wStatus_p info_m;
+ wWinPix_t scale_w;
+ wWinPix_t count_w;
+ wWinPix_t pos_w;
+ wWinPix_t info_w;
+ wBox_p scale_b;
+ wBox_p count_b;
+ wBox_p posX_b;
+ wBox_p posY_b;
+ wBox_p info_b;
+} infoD;
EXPORT coOrd oldMarker = { 0.0, 0.0 };
@@ -150,7 +161,8 @@ EXPORT BOOL_T inError = FALSE;
typedef enum { mouseNone, mouseLeft, mouseRight, mouseLeftPending } mouseState_e;
static mouseState_e mouseState;
-static wDrawPix_t mousePositionx, mousePositiony; /**< position of mouse pointer */
+static wDrawPix_t mousePositionx,
+ mousePositiony; /**< position of mouse pointer */
static int delayUpdate = 1;
@@ -159,62 +171,72 @@ static char yLabel[] = "Y: ";
static char zoomLabel[] = "Zoom: ";
static struct {
- char * name;
- double value;
- wMenuRadio_p pdRadio;
- wMenuRadio_p btRadio;
- wMenuRadio_p ctxRadio1;
- wMenuRadio_p panRadio;
- } zoomList[] = {
- { "1:10", 1.0 / 10.0 },
- { "1:9", 1.0 / 9.0 },
- { "1:8", 1.0 / 8.0 },
- { "1:7", 1.0 / 7.0 },
- { "1:6", 1.0 / 6.0 },
- { "1:5", 1.0 / 5.0 },
- { "1:4", 1.0 / 4.0 },
- { "1:3", 1.0 / 3.0 },
- { "1:2", 1.0 / 2.0 },
- { "1:1", 1.0 },
- { "2:1", 2.0 },
- { "3:1", 3.0 },
- { "4:1", 4.0 },
- { "5:1", 5.0 },
- { "6:1", 6.0 },
- { "7:1", 7.0 },
- { "8:1", 8.0 },
- { "9:1", 9.0 },
- { "10:1", 10.0 },
- { "12:1", 12.0 },
- { "14:1", 14.0 },
- { "16:1", 16.0 },
- { "18:1", 18.0 },
- { "20:1", 20.0 },
- { "24:1", 24.0 },
- { "28:1", 28.0 },
- { "32:1", 32.0 },
- { "36:1", 36.0 },
- { "40:1", 40.0 },
- { "48:1", 48.0 },
- { "56:1", 56.0 },
- { "64:1", 64.0 },
- { "80:1", 80.0 },
- { "96:1", 96.0 },
- { "112:1", 112.0 },
- { "128:1", 128.0 },
- { "160:1", 160.0 },
- { "192:1", 192.0 },
- { "224:1", 224.0 },
- { "256:1", 256.0 },
- { "320:1", 320.0 },
- { "384:1", 384.0 },
- { "448:1", 448.0 },
- { "512:1", 512.0 },
- { "640:1", 640.0 },
- { "768:1", 768.0 },
- { "896:1", 896.0 },
- { "1024:1", 1024.0 },
- };
+ char * name;
+ DIST_T value;
+ wMenuRadio_p pdRadio;
+ wMenuRadio_p btRadio;
+ wMenuRadio_p ctxRadio1;
+ wMenuRadio_p panRadio;
+} zoomList[] = {
+ { "1:10", 1.0 / 10.0 },
+ { "1:9", 1.0 / 9.0 },
+ { "1:8", 1.0 / 8.0 },
+ { "1:7", 1.0 / 7.0 },
+ { "1:6", 1.0 / 6.0 },
+ { "1:5", 1.0 / 5.0 },
+ { "1:4", 1.0 / 4.0 },
+ { "1:3.5", 1.0 / 3.5 },
+ { "1:3", 1.0 / 3.0 },
+ { "1:2.5", 1.0 / 2.5 },
+ { "1:2", 1.0 / 2.0 },
+ { "1:1.75", 1.0 / 1.75 },
+ { "1:1.5", 1.0 / 1.5 },
+ { "1:1.25", 1.0 / 1.25 },
+ { "1:1", 1.0 },
+ { "1.25:1", 1.25 },
+ { "1.5:1", 1.5 },
+ { "1.75:1", 1.75 },
+ { "2:1", 2.0 },
+ { "2.5:1", 2.5 },
+ { "3:1", 3.0 },
+ { "3.5:1", 3.5 },
+ { "4:1", 4.0 },
+ { "5:1", 5.0 },
+ { "6:1", 6.0 },
+ { "7:1", 7.0 },
+ { "8:1", 8.0 },
+ { "9:1", 9.0 },
+ { "10:1", 10.0 },
+ { "12:1", 12.0 },
+ { "14:1", 14.0 },
+ { "16:1", 16.0 },
+ { "18:1", 18.0 },
+ { "20:1", 20.0 },
+ { "24:1", 24.0 },
+ { "28:1", 28.0 },
+ { "32:1", 32.0 },
+ { "36:1", 36.0 },
+ { "40:1", 40.0 },
+ { "48:1", 48.0 },
+ { "56:1", 56.0 },
+ { "64:1", 64.0 },
+ { "80:1", 80.0 },
+ { "96:1", 96.0 },
+ { "112:1", 112.0 },
+ { "128:1", 128.0 },
+ { "160:1", 160.0 },
+ { "192:1", 192.0 },
+ { "224:1", 224.0 },
+ { "256:1", 256.0 },
+ { "320:1", 320.0 },
+ { "384:1", 384.0 },
+ { "448:1", 448.0 },
+ { "512:1", 512.0 },
+ { "640:1", 640.0 },
+ { "768:1", 768.0 },
+ { "896:1", 896.0 },
+ { "1024:1", 1024.0 },
+};
@@ -224,24 +246,28 @@ static struct {
*
*/
-static void MainCoOrd2Pix( drawCmd_p d, coOrd p, wDrawPix_t * x, wDrawPix_t * y )
+static void MainCoOrd2Pix( drawCmd_p d, coOrd p, wDrawPix_t * x,
+ wDrawPix_t * y )
{
DIST_T t;
- if (d->angle != 0.0)
+ if (d->angle != 0.0) {
Rotate( &p, d->orig, -d->angle );
+ }
p.x = (p.x - d->orig.x) / d->scale;
p.y = (p.y - d->orig.y) / d->scale;
t = p.x*d->dpi;
- if ( t > 0.0 )
+ if ( t > 0.0 ) {
t += 0.5;
- else
+ } else {
t -= 0.5;
+ }
*x = ((wDrawPix_t)t) + ((d->options&DC_TICKS)?LBORDER:0);
t = p.y*d->dpi;
- if ( t > 0.0 )
+ if ( t > 0.0 ) {
t += 0.5;
- else
+ } else {
t -= 0.5;
+ }
*y = ((wDrawPix_t)t) + ((d->options&DC_TICKS)?BBORDER:0);
}
@@ -249,10 +275,10 @@ static void MainCoOrd2Pix( drawCmd_p d, coOrd p, wDrawPix_t * x, wDrawPix_t * y
static int Pix2CoOrd_interpolate = 0;
static void MainPix2CoOrd(
- drawCmd_p d,
- wDrawPix_t px,
- wDrawPix_t py,
- coOrd * posR )
+ drawCmd_p d,
+ wDrawPix_t px,
+ wDrawPix_t py,
+ coOrd * posR )
{
DIST_T x, y;
DIST_T bins = pixelBins;
@@ -260,19 +286,20 @@ static void MainPix2CoOrd(
y = ((((POS_T)((py)-BBORDER))/d->dpi)) * d->scale;
x = (long)(x*bins)/bins;
y = (long)(y*bins)/bins;
-if (Pix2CoOrd_interpolate) {
- DIST_T x1, y1;
- x1 = ((((POS_T)((px-1)-LBORDER))/d->dpi)) * d->scale;
- y1 = ((((POS_T)((py-1)-BBORDER))/d->dpi)) * d->scale;
- x1 = (long)(x1*bins)/bins;
- y1 = (long)(y1*bins)/bins;
- if (x == x1) {
- x += 1/bins/2;
- printf ("px=%0.1f x1=%0.6f x=%0.6f\n", px, x1, x );
- }
- if (y == y1)
- y += 1/bins/2;
-}
+ if (Pix2CoOrd_interpolate) {
+ DIST_T x1, y1;
+ x1 = ((((POS_T)((px-1)-LBORDER))/d->dpi)) * d->scale;
+ y1 = ((((POS_T)((py-1)-BBORDER))/d->dpi)) * d->scale;
+ x1 = (long)(x1*bins)/bins;
+ y1 = (long)(y1*bins)/bins;
+ if (x == x1) {
+ x += 1/bins/2;
+ printf ("px=%0.1f x1=%0.6f x=%0.6f\n", px, x1, x );
+ }
+ if (y == y1) {
+ y += 1/bins/2;
+ }
+ }
x += d->orig.x;
y += d->orig.y;
posR->x = x;
@@ -283,36 +310,38 @@ if (Pix2CoOrd_interpolate) {
#define DRAWOPTS( D ) (((D->options&DC_TEMP)?wDrawOptTemp:0)|((D->options&DC_OUTLINE)?wDrawOutlineFont:0))
static void DDrawLine(
- drawCmd_p d,
- coOrd p0,
- coOrd p1,
- wDrawWidth width,
- wDrawColor color )
+ drawCmd_p d,
+ coOrd p0,
+ coOrd p1,
+ wDrawWidth width,
+ wDrawColor color )
{
wDrawPix_t x0, y0, x1, y1;
BOOL_T in0 = FALSE, in1 = FALSE;
coOrd orig, size;
- if (d == &mapD && !mapVisible)
+ if (d == &mapD && !mapVisible) {
return;
- if ( (d->options&DC_NOCLIP) == 0 ) {
- if (d->angle == 0.0) {
- in0 = (p0.x >= d->orig.x && p0.x <= d->orig.x+d->size.x &&
- p0.y >= d->orig.y && p0.y <= d->orig.y+d->size.y);
- in1 = (p1.x >= d->orig.x && p1.x <= d->orig.x+d->size.x &&
- p1.y >= d->orig.y && p1.y <= d->orig.y+d->size.y);
- }
- if ( (!in0) || (!in1) ) {
- orig = d->orig;
- size = d->size;
- if (d->options&DC_TICKS) {
- orig.x -= LBORDER/d->dpi*d->scale;
- orig.y -= BBORDER/d->dpi*d->scale;
- size.x += (LBORDER+RBORDER)/d->dpi*d->scale;
- size.y += (BBORDER+TBORDER)/d->dpi*d->scale;
- }
- if (!ClipLine( &p0, &p1, orig, d->angle, size ))
- return;
}
+ if ( (d->options&DC_NOCLIP) == 0 ) {
+ if (d->angle == 0.0) {
+ in0 = (p0.x >= d->orig.x && p0.x <= d->orig.x+d->size.x &&
+ p0.y >= d->orig.y && p0.y <= d->orig.y+d->size.y);
+ in1 = (p1.x >= d->orig.x && p1.x <= d->orig.x+d->size.x &&
+ p1.y >= d->orig.y && p1.y <= d->orig.y+d->size.y);
+ }
+ if ( (!in0) || (!in1) ) {
+ orig = d->orig;
+ size = d->size;
+ if (d->options&DC_TICKS) {
+ orig.x -= LBORDER/d->dpi*d->scale;
+ orig.y -= BBORDER/d->dpi*d->scale;
+ size.x += (LBORDER+RBORDER)/d->dpi*d->scale;
+ size.y += (BBORDER+TBORDER)/d->dpi*d->scale;
+ }
+ if (!ClipLine( &p0, &p1, orig, d->angle, size )) {
+ return;
+ }
+ }
}
d->CoOrd2Pix(d,p0,&x0,&y0);
d->CoOrd2Pix(d,p1,&x1,&y1);
@@ -320,126 +349,126 @@ static void DDrawLine(
wDrawLineType_e lineOpt = wDrawLineSolid;
unsigned long NotSolid = DC_NOTSOLIDLINE;
unsigned long opt = d->options&NotSolid;
- if (opt == DC_DASH)
- lineOpt = wDrawLineDash;
- else if(opt == DC_DOT)
- lineOpt = wDrawLineDot;
- else if(opt == DC_DASHDOT)
- lineOpt = wDrawLineDashDot;
- else if (opt == DC_DASHDOTDOT)
- lineOpt = wDrawLineDashDotDot;
- else if(opt == DC_CENTER)
- lineOpt = wDrawLineCenter;
- else if (opt == DC_PHANTOM)
- lineOpt = wDrawLinePhantom;
+ if (opt == DC_DASH) {
+ lineOpt = wDrawLineDash;
+ } else if(opt == DC_DOT) {
+ lineOpt = wDrawLineDot;
+ } else if(opt == DC_DASHDOT) {
+ lineOpt = wDrawLineDashDot;
+ } else if (opt == DC_DASHDOTDOT) {
+ lineOpt = wDrawLineDashDotDot;
+ } else if(opt == DC_CENTER) {
+ lineOpt = wDrawLineCenter;
+ } else if (opt == DC_PHANTOM) {
+ lineOpt = wDrawLinePhantom;
+ }
if (drawEnable) {
wDrawLine( d->d, x0, y0, x1, y1,
- width,
- lineOpt,
- color, DRAWOPTS(d) );
+ width,
+ lineOpt,
+ color, DRAWOPTS(d) );
}
}
static void DDrawArc(
- drawCmd_p d,
- coOrd p,
- DIST_T r,
- ANGLE_T angle0,
- ANGLE_T angle1,
- BOOL_T drawCenter,
- wDrawWidth width,
- wDrawColor color )
-{
- wDrawPix_t x, y;
- ANGLE_T da;
- coOrd p0, p1;
- DIST_T rr;
- int i, cnt;
-
- if (d == &mapD && !mapVisible)
- {
- return;
- }
- rr = (r / d->scale) * d->dpi + 0.5;
- if (rr > wDrawGetMaxRadius(d->d))
- {
- da = (maxArcSegStraightLen * 180) / (M_PI * rr);
- cnt = (int)(angle1/da) + 1;
- da = angle1 / cnt;
- coOrd min,max;
- min = d->orig;
- max.x = min.x + d->size.x;
- max.y = min.y + d->size.y;
- PointOnCircle(&p0, p, r, angle0);
- for (i=1; i<=cnt; i++) {
- angle0 += da;
- PointOnCircle(&p1, p, r, angle0);
- if (d->angle == 0.0 &&
- ((p0.x >= min.x &&
- p0.x <= max.x &&
- p0.y >= min.y &&
- p0.y <= max.y) ||
- (p1.x >= min.x &&
- p1.x <= max.x &&
- p1.y >= min.y &&
- p1.y <= max.y))) {
- DrawLine(d, p0, p1, width, color);
- } else {
- coOrd clip0 = p0, clip1 = p1;
- if (ClipLine(&clip0, &clip1, d->orig, d->angle, d->size)) {
- DrawLine(d, clip0, clip1, width, color);
- }
- }
-
- p0 = p1;
- }
- return;
- }
- if (d->angle!=0.0 && angle1 < 360.0)
- {
- angle0 = NormalizeAngle(angle0-d->angle);
- }
- d->CoOrd2Pix(d,p,&x,&y);
- drawCount++;
- wDrawLineType_e lineOpt = wDrawLineSolid;
- unsigned long NotSolid = DC_NOTSOLIDLINE;
- unsigned long opt = d->options&NotSolid;
- if (opt == DC_DASH)
+ drawCmd_p d,
+ coOrd p,
+ DIST_T r,
+ ANGLE_T angle0,
+ ANGLE_T angle1,
+ BOOL_T drawCenter,
+ wDrawWidth width,
+ wDrawColor color )
+{
+ wDrawPix_t x, y;
+ ANGLE_T da;
+ coOrd p0, p1;
+ DIST_T rr;
+ int i, cnt;
+
+ if (d == &mapD && !mapVisible) {
+ return;
+ }
+ rr = (r / d->scale) * d->dpi + 0.5;
+ if (rr > wDrawGetMaxRadius(d->d)) {
+ da = (maxArcSegStraightLen * 180) / (M_PI * rr);
+ cnt = (int)(angle1/da) + 1;
+ da = angle1 / cnt;
+ coOrd min,max;
+ min = d->orig;
+ max.x = min.x + d->size.x;
+ max.y = min.y + d->size.y;
+ PointOnCircle(&p0, p, r, angle0);
+ for (i=1; i<=cnt; i++) {
+ angle0 += da;
+ PointOnCircle(&p1, p, r, angle0);
+ if (d->angle == 0.0 &&
+ ((p0.x >= min.x &&
+ p0.x <= max.x &&
+ p0.y >= min.y &&
+ p0.y <= max.y) ||
+ (p1.x >= min.x &&
+ p1.x <= max.x &&
+ p1.y >= min.y &&
+ p1.y <= max.y))) {
+ DrawLine(d, p0, p1, width, color);
+ } else {
+ coOrd clip0 = p0, clip1 = p1;
+ if (ClipLine(&clip0, &clip1, d->orig, d->angle, d->size)) {
+ DrawLine(d, clip0, clip1, width, color);
+ }
+ }
+
+ p0 = p1;
+ }
+ return;
+ }
+ if (d->angle!=0.0 && angle1 < 360.0) {
+ angle0 = NormalizeAngle(angle0-d->angle);
+ }
+ d->CoOrd2Pix(d,p,&x,&y);
+ drawCount++;
+ wDrawLineType_e lineOpt = wDrawLineSolid;
+ unsigned long NotSolid = DC_NOTSOLIDLINE;
+ unsigned long opt = d->options&NotSolid;
+ if (opt == DC_DASH) {
lineOpt = wDrawLineDash;
- else if(opt == DC_DOT)
+ } else if(opt == DC_DOT) {
lineOpt = wDrawLineDot;
- else if(opt == DC_DASHDOT)
+ } else if(opt == DC_DASHDOT) {
lineOpt = wDrawLineDashDot;
- else if (opt == DC_DASHDOTDOT)
+ } else if (opt == DC_DASHDOTDOT) {
lineOpt = wDrawLineDashDotDot;
- else if(opt == DC_CENTER)
+ } else if(opt == DC_CENTER) {
lineOpt = wDrawLineCenter;
- else if (opt == DC_PHANTOM)
+ } else if (opt == DC_PHANTOM) {
lineOpt = wDrawLinePhantom;
- if (drawEnable)
- {
- int sizeCenter = (int)(drawCenter ? ((d->options & DC_PRINT) ? (d->dpi / BASE_DPI) : 1) : 0);
- wDrawArc(d->d, x, y, (wDrawPix_t)(rr), angle0, angle1, sizeCenter,
- width, lineOpt,
- color, DRAWOPTS(d) );
- }
+ }
+ if (drawEnable) {
+ int sizeCenter = (int)(drawCenter ? ((d->options & DC_PRINT) ?
+ (d->dpi / BASE_DPI) : 1) : 0);
+ wDrawArc(d->d, x, y, (wDrawPix_t)(rr), angle0, angle1, sizeCenter,
+ width, lineOpt,
+ color, DRAWOPTS(d) );
+ }
}
static void DDrawString(
- drawCmd_p d,
- coOrd p,
- ANGLE_T a,
- char * s,
- wFont_p fp,
- FONTSIZE_T fontSize,
- wDrawColor color )
+ drawCmd_p d,
+ coOrd p,
+ ANGLE_T a,
+ char * s,
+ wFont_p fp,
+ FONTSIZE_T fontSize,
+ wDrawColor color )
{
wDrawPix_t x, y;
- if (d == &mapD && !mapVisible)
+ if (d == &mapD && !mapVisible) {
return;
+ }
d->CoOrd2Pix(d,p,&x,&y);
if ( color == wDrawColorWhite ) {
wDrawPix_t width, height, descent, ascent;
@@ -467,13 +496,13 @@ static void DDrawString(
static void DDrawPoly(
- drawCmd_p d,
- int cnt,
- coOrd * pts,
- int * types,
- wDrawColor color,
- wDrawWidth width,
- drawFill_e eFillOpt )
+ drawCmd_p d,
+ int cnt,
+ coOrd * pts,
+ int * types,
+ wDrawColor color,
+ wDrawWidth width,
+ drawFill_e eFillOpt )
{
typedef wDrawPix_t wPos2[2];
static dynArr_t wpts_da;
@@ -490,26 +519,28 @@ static void DDrawPoly(
d->CoOrd2Pix( d, pts[inx], &x, &y );
wpts(inx)[0] = x;
wpts(inx)[1] = y;
- if (!types)
+ if (!types) {
wtype(inx) = 0;
- else
+ } else {
wtype(inx) = (wPolyLine_e)types[inx];
+ }
}
wDrawLineType_e lineOpt = wDrawLineSolid;
unsigned long NotSolid = DC_NOTSOLIDLINE;
unsigned long opt = d->options&NotSolid;
- if (opt == DC_DASH)
+ if (opt == DC_DASH) {
lineOpt = wDrawLineDash;
- else if(opt == DC_DOT)
+ } else if(opt == DC_DOT) {
lineOpt = wDrawLineDot;
- else if(opt == DC_DASHDOT)
+ } else if(opt == DC_DASHDOT) {
lineOpt = wDrawLineDashDot;
- else if (opt == DC_DASHDOTDOT)
+ } else if (opt == DC_DASHDOTDOT) {
lineOpt = wDrawLineDashDotDot;
- else if(opt == DC_CENTER)
+ } else if(opt == DC_CENTER) {
lineOpt = wDrawLineCenter;
- else if (opt == DC_PHANTOM)
+ } else if (opt == DC_PHANTOM) {
lineOpt = wDrawLinePhantom;
+ }
wDrawOpts drawOpts = DRAWOPTS(d);
switch ( eFillOpt ) {
@@ -526,23 +557,25 @@ static void DDrawPoly(
drawOpts |= wDrawOptTransparent;
break;
default:
- abort();
+ CHECK(FALSE);
}
- wDrawPolygon( d->d, &wpts(0), &wtype(0), cnt, color, width, lineOpt, drawOpts, fill, open );
+ wDrawPolygon( d->d, &wpts(0), &wtype(0), cnt, color, width, lineOpt, drawOpts,
+ fill, open );
}
static void DDrawFillCircle(
- drawCmd_p d,
- coOrd p,
- DIST_T r,
- wDrawColor color )
+ drawCmd_p d,
+ coOrd p,
+ DIST_T r,
+ wDrawColor color )
{
wDrawPix_t x, y;
DIST_T rr;
- if (d == &mapD && !mapVisible)
+ if (d == &mapD && !mapVisible) {
return;
+ }
rr = (r / d->scale) * d->dpi + 0.5;
if (rr > wDrawGetMaxRadius(d->d)) {
// Circle too big
@@ -553,32 +586,35 @@ static void DDrawFillCircle(
wDrawGetSize( d->d, &w, &h );
if ( d->options & DC_TICKS ) {
if ( x+rr < LBORDER || x-rr > w-RBORDER ||
- y+rr < BBORDER || y-rr > h-TBORDER )
+ y+rr < BBORDER || y-rr > h-TBORDER ) {
return;
+ }
} else {
if ( x+rr < 0 || x-rr > w ||
- y+rr < 0 || y-rr > h )
+ y+rr < 0 || y-rr > h ) {
return;
+ }
}
drawCount++;
if (drawEnable) {
wDrawFilledCircle( d->d, x, y, (wDrawPix_t)(rr),
- color, DRAWOPTS(d) );
+ color, DRAWOPTS(d) );
}
}
static void DDrawRectangle(
- drawCmd_p d,
- coOrd orig,
- coOrd size,
- wDrawColor color,
- drawFill_e eFillOpt )
+ drawCmd_p d,
+ coOrd orig,
+ coOrd size,
+ wDrawColor color,
+ drawFill_e eFillOpt )
{
wDrawPix_t x, y, w, h;
- if (d == &mapD && !mapVisible)
- return;
+ if (d == &mapD && !mapVisible) {
+ return;
+ }
d->CoOrd2Pix(d,orig,&x,&y);
w = (wDrawPix_t)((size.x/d->scale)*d->dpi+0.5);
h = (wDrawPix_t)((size.y/d->scale)*d->dpi+0.5);
@@ -603,12 +639,16 @@ static void DDrawRectangle(
break;
case DRAW_TRANSPARENT:
opts |= wDrawOptTransparent;
- // Fallthru
+ // Fallthru
case DRAW_FILL:
+ if ( d->options & DC_ROUND ) {
+ x = round(x);
+ y = round(y);
+ }
wDrawFilledRectangle( d->d, x, y, w, h, color, opts );
break;
default:
- abort();
+ CHECK(FALSE);
}
}
}
@@ -619,32 +659,34 @@ EXPORT void DrawHilight( drawCmd_p d, coOrd p, coOrd s, BOOL_T add )
unsigned long options = d->options;
d->options |= DC_TEMP;
wBool_t bTemp = wDrawSetTempMode( d->d, TRUE );
- DrawRectangle( d, p, s, add?drawColorPowderedBlue:selectedColor, DRAW_TRANSPARENT );
+ DrawRectangle( d, p, s, add?drawColorPowderedBlue:selectedColor,
+ DRAW_TRANSPARENT );
wDrawSetTempMode( d->d, bTemp );
d->options = options;
}
EXPORT void DrawHilightPolygon( drawCmd_p d, coOrd *p, int cnt )
{
- ASSERT( cnt <= 4 );
+ CHECK( cnt <= 4 );
static wDrawColor color = 0;
- if ( color == 0 )
+ if ( color == 0 ) {
color = wDrawColorGray( 70 );
+ }
DrawPoly( d, cnt, p, NULL, color, 0, DRAW_TRANSPARENT );
}
EXPORT void DrawMultiString(
- drawCmd_p d,
- coOrd pos,
- char * text,
- wFont_p fp,
- wFontSize_t fs,
- wDrawColor color,
- ANGLE_T a,
- coOrd * lo,
- coOrd * hi,
- BOOL_T boxed)
+ drawCmd_p d,
+ coOrd pos,
+ char * text,
+ wFont_p fp,
+ wFontSize_t fs,
+ wDrawColor color,
+ ANGLE_T a,
+ coOrd * lo,
+ coOrd * hi,
+ BOOL_T boxed)
{
char * cp;
char * cp1;
@@ -668,21 +710,24 @@ EXPORT void DrawMultiString(
cp = line; // Build up message to hold all of the strings separated by nulls
while (*text) {
cp1 = cp;
- while (*text != '\0' && *text != '\n')
+ while (*text != '\0' && *text != '\n') {
*cp++ = *text++;
+ }
*cp = '\0';
DrawTextSize2( &mainD, cp1, fp, fs, TRUE, &textsize, &descent, &ascent);
lineW = textsize.x;
- if (lineW>size.x)
+ if (lineW>size.x) {
size.x = lineW;
+ }
posl.x = pos.x;
posl.y = pos.y;
Rotate( &posl, orig, a);
DrawString( d, posl, a, cp1, fp, fs, color );
pos.y -= lineH;
size.y += lineH;
- if (*text == '\0')
+ if (*text == '\0') {
break;
+ }
text++;
cp++;
}
@@ -700,11 +745,12 @@ EXPORT void DrawMultiString(
size.y = fabs(orig.y-posl.y)+bh*d->scale/d->dpi;
size.y += descent+ascent;
coOrd p[4];
- p[0] = orig; p[0].x -= (bw-br)*d->scale/d->dpi; p[0].y += (bh-bb)*d->scale/d->dpi+ascent;
+ p[0] = orig; p[0].x -= (bw-br)*d->scale/d->dpi;
+ p[0].y += (bh-bb)*d->scale/d->dpi+ascent;
p[1] = p[0]; p[1].x += size.x;
p[2] = p[1]; p[2].y -= size.y;
p[3] = p[2]; p[3].x = p[0].x;
- for (int i=0;i<4;i++) {
+ for (int i=0; i<4; i++) {
Rotate( &p[i], orig, a);
}
DrawPoly( d, 4, p, NULL, color, 0, DRAW_CLOSED );
@@ -713,52 +759,64 @@ EXPORT void DrawMultiString(
free(line);
}
+/**
+ * Draw some text inside a box. The layout of the box can be defined using the style
+ * parameter. Possibilities are complete frame, underline only, omit background or
+ * draw inversed.
+ * The background is drawn in white if not disabled
+ *
+ * \param style style of box framed, underlined, no background, inverse
+ * \param d drawing command
+ * \param pos position
+ * \param text text to draw
+ * \param fp font
+ * \param fs font size
+ * \param color text color
+ * \param a angle
+ */
EXPORT void DrawBoxedString(
- int style,
- drawCmd_p d,
- coOrd pos,
- char * text,
- wFont_p fp, wFontSize_t fs,
- wDrawColor color,
- ANGLE_T a )
-{
- coOrd size, p[4], p0=pos, p1, p2;
- static int bw=2, bh=2, br=1, bb=1;
+ int style,
+ drawCmd_p d,
+ coOrd pos,
+ char* text,
+ wFont_p fp, wFontSize_t fs,
+ wDrawColor color,
+ ANGLE_T a)
+{
+ coOrd size, p[4], p0 = pos, p1, p2;
+ static int bw = 2, bh = 2, br = 1, bb = 1;
static double arrowScale = 0.5;
- unsigned long options = d->options;
POS_T descent, ascent;
- /*DrawMultiString( d, pos, text, fp, fs, color, a, &lo, &hi );*/
- if ( fs < 2*d->scale )
+ if (fs < 2 * d->scale) {
return;
+ }
#ifndef WINDOWS
- if ( ( d->options & DC_PRINT) != 0 ) {
- double scale = ((FLOAT_T)fs)/((FLOAT_T)drawMaxTextFontSize)/mainD.dpi;
+ if ((d->options & DC_PRINT) != 0) {
+ double scale = ((FLOAT_T)fs) / ((FLOAT_T)drawMaxTextFontSize) / mainD.dpi;
wDrawPix_t w, h, d, a;
- wDrawGetTextSize( &w, &h, &d, &a, mainD.d, text, fp, drawMaxTextFontSize );
- size.x = w*scale;
- size.y = h*scale;
- descent = d*scale;
- ascent = a*scale;
+ wDrawGetTextSize(&w, &h, &d, &a, mainD.d, text, fp, drawMaxTextFontSize);
+ size.x = w * scale;
+ size.y = h * scale;
+ descent = d * scale;
+ ascent = a * scale;
} else
#endif
- DrawTextSize2( &mainD, text, fp, fs, TRUE, &size, &descent, &ascent );
-#ifdef WINDOWS
- /*h -= 15;*/
-#endif
- p0.x -= size.x/2.0;
- p0.y -= size.y/2.0;
+ DrawTextSize2(&mainD, text, fp, fs, TRUE, &size, &descent, &ascent);
+
+ p0.x -= size.x / 2.0;
+ p0.y -= size.y / 2.0;
if (style == BOX_NONE || d == &mapD) {
- DrawString( d, p0, 0.0, text, fp, fs, color );
+ DrawString(d, p0, 0.0, text, fp, fs, color);
return;
}
- size.x += bw*d->scale/d->dpi;
- size.y += bh*d->scale/d->dpi;
+ size.x += bw * d->scale / d->dpi;
+ size.y += bh * d->scale / d->dpi;
p[0] = p0;
- p[0].x -= br*d->scale/d->dpi; //Top of box
- p[0].y += (bb*d->scale/d->dpi+ascent);
+ p[0].x -= br * d->scale / d->dpi; //Top of box
+ p[0].y += (bb * d->scale / d->dpi + ascent);
p[1].y = p[0].y;
- p[2].y = p[3].y = p[0].y-size.y-descent; //Bottom of box
+ p[2].y = p[3].y = p[0].y - size.y - descent; //Bottom of box
p[1].x = p[2].x = p[0].x + size.x;
p[3].x = p[0].x;
d->options &= ~DC_DASH;
@@ -766,61 +824,64 @@ EXPORT void DrawBoxedString(
case BOX_ARROW:
case BOX_ARROW_BACKGROUND:
// Reset size to actual size of the box
- size.x = p[2].x-p[0].x;
- size.y = p[0].y-p[2].y;
+ size.x = p[2].x - p[0].x;
+ size.y = p[0].y - p[2].y;
// Pick a point (p1) outside of Box in arrow direction
- Translate( &p1, pos, a, size.x+size.y );
+ Translate(&p1, pos, a, size.x + size.y);
// Find point on edge of Box (p1)
- ClipLine( &pos, &p1, p[3], 0.0, size );
+ ClipLine(&pos, &p1, p[3], 0.0, size);
// Draw line from edge (p1) to Arrow head (p2)
- Translate( &p2, p1, a, size.y*arrowScale );
- DrawLine( d, p1, p2, 0, color );
+ Translate(&p2, p1, a, size.y * arrowScale);
+ DrawLine(d, p1, p2, 0, color);
// Draw Arrow edges
- Translate( &p1, p2, a+150, size.y*0.7*arrowScale );
- DrawLine( d, p1, p2, 0, color );
- Translate( &p1, p2, a-150, size.y*0.7*arrowScale );
- DrawLine( d, p1, p2, 0, color );
- /* no break */
+ Translate(&p1, p2, a + 150, size.y * 0.7 * arrowScale);
+ DrawLine(d, p1, p2, 0, color);
+ Translate(&p1, p2, a - 150, size.y * 0.7 * arrowScale);
+ DrawLine(d, p1, p2, 0, color);
+ /* no break */
case BOX_BOX:
case BOX_BOX_BACKGROUND:
- if (style == BOX_ARROW_BACKGROUND || style == BOX_BOX_BACKGROUND)
- DrawPoly( d, 4, p, NULL, wDrawColorWhite, 0, DRAW_FILL ); //Clear background for box and box-arrow
- DrawLine( d, p[1], p[2], 0, color );
- DrawLine( d, p[2], p[3], 0, color );
- DrawLine( d, p[3], p[0], 0, color );
- /* no break */
+ if (style == BOX_ARROW_BACKGROUND || style == BOX_BOX_BACKGROUND) {
+ DrawPoly(d, 4, p, NULL, wDrawColorWhite, 0,
+ DRAW_FILL); //Clear background for box and box-arrow
+ }
+ DrawLine(d, p[1], p[2], 0, color);
+ DrawLine(d, p[2], p[3], 0, color);
+ DrawLine(d, p[3], p[0], 0, color);
+ /* no break */
case BOX_UNDERLINE:
- DrawLine( d, p[0], p[1], 0, color );
- DrawString( d, p0, 0.0, text, fp, fs, color );
+ DrawLine(d, p[0], p[1], 0, color);
+ DrawString(d, p0, 0.0, text, fp, fs, color);
break;
case BOX_INVERT:
- DrawPoly( d, 4, p, NULL, color, 0, DRAW_FILL );
- if ( color != wDrawColorWhite )
- DrawString( d, p0, 0.0, text, fp, fs, wDrawColorGray( 94 ) );
+ DrawPoly(d, 4, p, NULL, color, 0, DRAW_FILL);
+ if (color != wDrawColorWhite) {
+ DrawString(d, p0, 0.0, text, fp, fs, wDrawColorGray(94));
+ }
break;
case BOX_BACKGROUND:
- DrawPoly( d, 4, p, NULL, wDrawColorWhite, 0, DRAW_FILL );
- DrawString( d, p0, 0.0, text, fp, fs, color );
+ DrawPoly(d, 4, p, NULL, wDrawColorWhite, 0, DRAW_FILL);
+ DrawString(d, p0, 0.0, text, fp, fs, color);
break;
}
- d->options = options;
}
EXPORT void DrawTextSize2(
- drawCmd_p dp,
- char * text,
- wFont_p fp,
- wFontSize_t fs,
- BOOL_T relative,
- coOrd * size,
- POS_T * descent,
- POS_T * ascent)
+ drawCmd_p dp,
+ char * text,
+ wFont_p fp,
+ wFontSize_t fs,
+ BOOL_T relative,
+ coOrd * size,
+ POS_T * descent,
+ POS_T * ascent)
{
wDrawPix_t w, h, d, a;
FLOAT_T scale = 1.0;
- if ( relative )
+ if ( relative ) {
fs /= dp->scale;
+ }
if ( fs > drawMaxTextFontSize ) {
scale = ((FLOAT_T)fs)/((FLOAT_T)drawMaxTextFontSize);
fs = drawMaxTextFontSize;
@@ -836,29 +897,29 @@ EXPORT void DrawTextSize2(
*descent *= dp->scale;
*ascent *=dp->scale;
}
-/* printf( "DTS2(\"%s\",%0.3f,%d) = (w%d,h%d,d%d) *%0.3f x%0.3f y%0.3f %0.3f\n", text, fs, relative, w, h, d, scale, size->x, size->y, *descent );*/
+ /* printf( "DTS2(\"%s\",%0.3f,%d) = (w%d,h%d,d%d) *%0.3f x%0.3f y%0.3f %0.3f\n", text, fs, relative, w, h, d, scale, size->x, size->y, *descent );*/
}
EXPORT void DrawTextSize(
- drawCmd_p dp,
- char * text,
- wFont_p fp,
- wFontSize_t fs,
- BOOL_T relative,
- coOrd * size )
+ drawCmd_p dp,
+ char * text,
+ wFont_p fp,
+ wFontSize_t fs,
+ BOOL_T relative,
+ coOrd * size )
{
POS_T descent, ascent;
DrawTextSize2( dp, text, fp, fs, relative, size, &descent, &ascent );
}
EXPORT void DrawMultiLineTextSize(
- drawCmd_p dp,
- char * text,
- wFont_p fp,
- wFontSize_t fs,
- BOOL_T relative,
- coOrd * size,
- coOrd * lastline )
+ drawCmd_p dp,
+ char * text,
+ wFont_p fp,
+ wFontSize_t fs,
+ BOOL_T relative,
+ coOrd * size,
+ coOrd * lastline )
{
POS_T descent, ascent, lineW, lineH;
coOrd textsize, blocksize;
@@ -874,14 +935,16 @@ EXPORT void DrawMultiLineTextSize(
lastline->y = 0;
while (text && *text != '\0' ) {
cp = line;
- while (*text != '\0' && *text != '\n')
+ while (*text != '\0' && *text != '\n') {
*cp++ = *text++;
+ }
*cp = '\0';
blocksize.y += lineH;
DrawTextSize2( &mainD, line, fp, fs, TRUE, &textsize, &descent, &ascent);
lineW = textsize.x;
- if (lineW>blocksize.x)
+ if (lineW>blocksize.x) {
blocksize.x = lineW;
+ }
lastline->x = textsize.x;
if (*text =='\n') {
blocksize.y += lineH;
@@ -900,7 +963,8 @@ EXPORT void DrawMultiLineTextSize(
}
-static void DDrawBitMap( drawCmd_p d, coOrd p, wDrawBitMap_p bm, wDrawColor color)
+static void DDrawBitMap( drawCmd_p d, coOrd p, wDrawBitMap_p bm,
+ wDrawColor color)
{
wDrawPix_t x, y;
d->CoOrd2Pix( d, p, &x, &y );
@@ -909,45 +973,47 @@ static void DDrawBitMap( drawCmd_p d, coOrd p, wDrawBitMap_p bm, wDrawColor colo
static void TempSegLine(
- drawCmd_p d,
- coOrd p0,
- coOrd p1,
- wDrawWidth width,
- wDrawColor color )
+ drawCmd_p d,
+ coOrd p0,
+ coOrd p1,
+ wDrawWidth width,
+ wDrawColor color )
{
DYNARR_APPEND( trkSeg_t, tempSegs_da, 10 );
tempSegs(tempSegs_da.cnt-1).type = SEG_STRLIN;
tempSegs(tempSegs_da.cnt-1).color = color;
- if (d->options&DC_SIMPLE)
- tempSegs(tempSegs_da.cnt-1).width = 0;
- else if (width<0)
- tempSegs(tempSegs_da.cnt-1).width = width;
- else
- tempSegs(tempSegs_da.cnt-1).width = width*d->scale/d->dpi;
+ if (d->options&DC_SIMPLE) {
+ tempSegs(tempSegs_da.cnt-1).lineWidth = 0;
+ } else if (width<0) {
+ tempSegs(tempSegs_da.cnt-1).lineWidth = width;
+ } else {
+ tempSegs(tempSegs_da.cnt-1).lineWidth = width*d->scale/d->dpi;
+ }
tempSegs(tempSegs_da.cnt-1).u.l.pos[0] = p0;
tempSegs(tempSegs_da.cnt-1).u.l.pos[1] = p1;
}
static void TempSegArc(
- drawCmd_p d,
- coOrd p,
- DIST_T r,
- ANGLE_T angle0,
- ANGLE_T angle1,
- BOOL_T drawCenter,
- wDrawWidth width,
- wDrawColor color )
+ drawCmd_p d,
+ coOrd p,
+ DIST_T r,
+ ANGLE_T angle0,
+ ANGLE_T angle1,
+ BOOL_T drawCenter,
+ wDrawWidth width,
+ wDrawColor color )
{
DYNARR_APPEND( trkSeg_t, tempSegs_da, 10 );
tempSegs(tempSegs_da.cnt-1).type = SEG_CRVLIN;
tempSegs(tempSegs_da.cnt-1).color = color;
- if (d->options&DC_SIMPLE)
- tempSegs(tempSegs_da.cnt-1).width = 0;
- else if (width<0)
- tempSegs(tempSegs_da.cnt-1).width = width;
- else
- tempSegs(tempSegs_da.cnt-1).width = width*d->scale/d->dpi;
+ if (d->options&DC_SIMPLE) {
+ tempSegs(tempSegs_da.cnt-1).lineWidth = 0;
+ } else if (width<0) {
+ tempSegs(tempSegs_da.cnt-1).lineWidth = width;
+ } else {
+ tempSegs(tempSegs_da.cnt-1).lineWidth = width*d->scale/d->dpi;
+ }
tempSegs(tempSegs_da.cnt-1).u.c.center = p;
tempSegs(tempSegs_da.cnt-1).u.c.radius = r;
tempSegs(tempSegs_da.cnt-1).u.c.a0 = angle0;
@@ -956,19 +1022,19 @@ static void TempSegArc(
static void TempSegString(
- drawCmd_p d,
- coOrd p,
- ANGLE_T a,
- char * s,
- wFont_p fp,
- FONTSIZE_T fontSize,
- wDrawColor color )
+ drawCmd_p d,
+ coOrd p,
+ ANGLE_T a,
+ char * s,
+ wFont_p fp,
+ FONTSIZE_T fontSize,
+ wDrawColor color )
{
DYNARR_APPEND( trkSeg_t, tempSegs_da, 10 );
tempSegs(tempSegs_da.cnt-1).type = SEG_TEXT;
tempSegs(tempSegs_da.cnt-1).color = color;
tempSegs(tempSegs_da.cnt-1).u.t.boxed = FALSE;
- tempSegs(tempSegs_da.cnt-1).width = 0;
+ tempSegs(tempSegs_da.cnt-1).lineWidth = 0;
tempSegs(tempSegs_da.cnt-1).u.t.pos = p;
tempSegs(tempSegs_da.cnt-1).u.t.angle = a;
tempSegs(tempSegs_da.cnt-1).u.t.fontP = fp;
@@ -978,13 +1044,13 @@ static void TempSegString(
static void TempSegPoly(
- drawCmd_p d,
- int cnt,
- coOrd * pts,
- int * types,
- wDrawColor color,
- wDrawWidth width,
- drawFill_e eFillOpt )
+ drawCmd_p d,
+ int cnt,
+ coOrd * pts,
+ int * types,
+ wDrawColor color,
+ wDrawWidth width,
+ drawFill_e eFillOpt )
{
int fill = 0;
int open = 0;
@@ -1001,39 +1067,41 @@ static void TempSegPoly(
fill = 1;
break;
default:
- abort();
+ CHECK(FALSE);
}
DYNARR_APPEND( trkSeg_t, tempSegs_da, 1);
tempSegs(tempSegs_da.cnt-1).type = fill?SEG_FILPOLY:SEG_POLY;
tempSegs(tempSegs_da.cnt-1).color = color;
- if (d->options&DC_SIMPLE)
- tempSegs(tempSegs_da.cnt-1).width = 0;
- else if (width<0)
- tempSegs(tempSegs_da.cnt-1).width = width;
- else
- tempSegs(tempSegs_da.cnt-1).width = width*d->scale/d->dpi;
+ if (d->options&DC_SIMPLE) {
+ tempSegs(tempSegs_da.cnt-1).lineWidth = 0;
+ } else if (width<0) {
+ tempSegs(tempSegs_da.cnt-1).lineWidth = width;
+ } else {
+ tempSegs(tempSegs_da.cnt-1).lineWidth = width*d->scale/d->dpi;
+ }
tempSegs(tempSegs_da.cnt-1).u.p.polyType = open?POLYLINE:FREEFORM;
tempSegs(tempSegs_da.cnt-1).u.p.cnt = cnt;
tempSegs(tempSegs_da.cnt-1).u.p.orig = zero;
tempSegs(tempSegs_da.cnt-1).u.p.angle = 0.0;
tempSegs(tempSegs_da.cnt-1).u.p.pts = (pts_t *)MyMalloc(cnt*sizeof(pts_t));
- for (int i=0;i<=cnt-1;i++) {
+ for (int i=0; i<=cnt-1; i++) {
tempSegs(tempSegs_da.cnt-1).u.p.pts[i].pt = pts[i];
- tempSegs(tempSegs_da.cnt-1).u.p.pts[i].pt_type = ((d->options&DC_SIMPLE)==0 && (types!=0))?types[i]:wPolyLineStraight;
+ tempSegs(tempSegs_da.cnt-1).u.p.pts[i].pt_type = ((d->options&DC_SIMPLE)==0
+ && (types!=0))?types[i]:wPolyLineStraight;
}
}
static void TempSegFillCircle(
- drawCmd_p d,
- coOrd p,
- DIST_T r,
- wDrawColor color )
+ drawCmd_p d,
+ coOrd p,
+ DIST_T r,
+ wDrawColor color )
{
DYNARR_APPEND( trkSeg_t, tempSegs_da, 10 );
tempSegs(tempSegs_da.cnt-1).type = SEG_FILCRCL;
tempSegs(tempSegs_da.cnt-1).color = color;
- tempSegs(tempSegs_da.cnt-1).width = 0;
+ tempSegs(tempSegs_da.cnt-1).lineWidth = 0;
tempSegs(tempSegs_da.cnt-1).u.c.center = p;
tempSegs(tempSegs_da.cnt-1).u.c.radius = r;
tempSegs(tempSegs_da.cnt-1).u.c.a0 = 0.0;
@@ -1042,11 +1110,11 @@ static void TempSegFillCircle(
static void TempSegRectangle(
- drawCmd_p d,
- coOrd orig,
- coOrd size,
- wDrawColor color,
- drawFill_e eOpts )
+ drawCmd_p d,
+ coOrd orig,
+ coOrd size,
+ wDrawColor color,
+ drawFill_e eOpts )
{
coOrd p[4];
// p1 p2
@@ -1059,48 +1127,55 @@ static void TempSegRectangle(
}
-static void NoDrawBitMap( drawCmd_p d, coOrd p, wDrawBitMap_p bm, wDrawColor color )
+static void NoDrawBitMap( drawCmd_p d, coOrd p, wDrawBitMap_p bm,
+ wDrawColor color )
{
}
EXPORT drawFuncs_t screenDrawFuncs = {
- DDrawLine,
- DDrawArc,
- DDrawString,
- DDrawBitMap,
- DDrawPoly,
- DDrawFillCircle,
- DDrawRectangle};
+ DDrawLine,
+ DDrawArc,
+ DDrawString,
+ DDrawBitMap,
+ DDrawPoly,
+ DDrawFillCircle,
+ DDrawRectangle
+};
EXPORT drawFuncs_t printDrawFuncs = {
- DDrawLine,
- DDrawArc,
- DDrawString,
- NoDrawBitMap,
- DDrawPoly,
- DDrawFillCircle,
- DDrawRectangle};
+ DDrawLine,
+ DDrawArc,
+ DDrawString,
+ NoDrawBitMap,
+ DDrawPoly,
+ DDrawFillCircle,
+ DDrawRectangle
+};
EXPORT drawFuncs_t tempSegDrawFuncs = {
- TempSegLine,
- TempSegArc,
- TempSegString,
- NoDrawBitMap,
- TempSegPoly,
- TempSegFillCircle,
- TempSegRectangle};
+ TempSegLine,
+ TempSegArc,
+ TempSegString,
+ NoDrawBitMap,
+ TempSegPoly,
+ TempSegFillCircle,
+ TempSegRectangle
+};
EXPORT drawCmd_t mainD = {
- NULL, &screenDrawFuncs, DC_TICKS, INIT_MAIN_SCALE, 0.0, {0.0,0.0}, {0.0,0.0}, MainPix2CoOrd, MainCoOrd2Pix, 96.0};
+ NULL, &screenDrawFuncs, DC_TICKS, INIT_MAIN_SCALE, 0.0, {0.0,0.0}, {0.0,0.0}, MainPix2CoOrd, MainCoOrd2Pix, 96.0
+};
EXPORT drawCmd_t tempD = {
- NULL, &screenDrawFuncs, DC_TICKS|DC_TEMP, INIT_MAIN_SCALE, 0.0, {0.0,0.0}, {0.0,0.0}, MainPix2CoOrd, MainCoOrd2Pix, 96.0};
+ NULL, &screenDrawFuncs, DC_TICKS|DC_TEMP, INIT_MAIN_SCALE, 0.0, {0.0,0.0}, {0.0,0.0}, MainPix2CoOrd, MainCoOrd2Pix, 96.0
+};
EXPORT drawCmd_t mapD = {
- NULL, &screenDrawFuncs, DC_SIMPLE, INIT_MAP_SCALE, 0.0, {0.0,0.0}, {96.0,48.0}, Pix2CoOrd, CoOrd2Pix, 96.0};
+ NULL, &screenDrawFuncs, DC_SIMPLE, INIT_MAP_SCALE, 0.0, {0.0,0.0}, {96.0,48.0}, Pix2CoOrd, CoOrd2Pix, 96.0
+};
/*****************************************************************************
@@ -1127,37 +1202,41 @@ static wWinPix_t curInfoLabelWidth[NUM_INFOCTL];
static wWinPix_t GetInfoPosWidth( void )
{
wWinPix_t labelWidth;
-
+
DIST_T dist;
- if ( mapD.size.x > mapD.size.y )
- dist = mapD.size.x;
- else
- dist = mapD.size.y;
- if ( units == UNITS_METRIC ) {
- dist *= 2.54;
- if ( dist >= 1000 )
- dist = 9999.999*2.54;
- else if ( dist >= 100 )
- dist = 999.999*2.54;
- else if ( dist >= 10 )
- dist = 99.999*2.54;
- } else {
- if ( dist >= 100*12 )
- dist = 999.0*12.0+11.0+3.0/4.0-1.0/64.0;
- else if ( dist >= 10*12 )
- dist = 99.0*12.0+11.0+3.0/4.0-1.0/64.0;
- else if ( dist >= 1*12 )
- dist = 9.0*12.0+11.0+3.0/4.0-1.0/64.0;
+ if ( mapD.size.x > mapD.size.y ) {
+ dist = mapD.size.x;
+ } else {
+ dist = mapD.size.y;
+ }
+ if ( units == UNITS_METRIC ) {
+ dist *= 2.54;
+ if ( dist >= 1000 ) {
+ dist = 9999.999*2.54;
+ } else if ( dist >= 100 ) {
+ dist = 999.999*2.54;
+ } else if ( dist >= 10 ) {
+ dist = 99.999*2.54;
+ }
+ } else {
+ if ( dist >= 100*12 ) {
+ dist = 999.0*12.0+11.0+3.0/4.0-1.0/64.0;
+ } else if ( dist >= 10*12 ) {
+ dist = 99.0*12.0+11.0+3.0/4.0-1.0/64.0;
+ } else if ( dist >= 1*12 ) {
+ dist = 9.0*12.0+11.0+3.0/4.0-1.0/64.0;
}
-
- labelWidth = (wStatusGetWidth( xLabel ) > wStatusGetWidth( yLabel ) ? wStatusGetWidth( xLabel ):wStatusGetWidth( yLabel ));
-
- return wStatusGetWidth( FormatDistance(dist) ) + labelWidth;
+ }
+
+ labelWidth = (wStatusGetWidth( xLabel ) > wStatusGetWidth(
+ yLabel ) ? wStatusGetWidth( xLabel ):wStatusGetWidth( yLabel ));
+
+ return wStatusGetWidth( FormatDistance(dist) ) + labelWidth;
}
/**
* Initialize the status line at the bottom of the window.
- *
+ *
*/
EXPORT void InitInfoBar( void )
@@ -1176,27 +1255,33 @@ EXPORT void InitInfoBar( void )
infoD.scale_w = wStatusGetWidth( "999:1" ) + wStatusGetWidth( zoomLabel );
/* we do not use the count label for the moment */
infoD.count_w = 0;
- infoD.info_w = width - 20 - infoD.pos_w*2 - infoD.scale_w - infoD.count_w - 45; // Allow Window to resize down
+ infoD.info_w = width - 20 - infoD.pos_w*2 - infoD.scale_w - infoD.count_w -
+ 45; // Allow Window to resize down
if (infoD.info_w <= 0) {
infoD.info_w = 10;
}
yb = y+info_yb_offset;
ym = y+(infoHeight-textHeight)/2;
boxH = infoHeight;
- x = 2;
- infoD.scale_b = wBoxCreate( mainW, x, yb, NULL, wBoxBelow, infoD.scale_w, boxH );
- infoD.scale_m = wStatusCreate( mainW, x+info_xm_offset, ym, "infoBarScale", infoD.scale_w-six, zoomLabel);
- x += infoD.scale_w + 2;
- infoD.posX_b = wBoxCreate( mainW, x, yb, NULL, wBoxBelow, infoD.pos_w, boxH );
- infoD.posX_m = wStatusCreate( mainW, x+info_xm_offset, ym, "infoBarPosX", infoD.pos_w-six, xLabel );
- x += infoD.pos_w + 2;
- infoD.posY_b = wBoxCreate( mainW, x, yb, NULL, wBoxBelow, infoD.pos_w, boxH );
- infoD.posY_m = wStatusCreate( mainW, x+info_xm_offset, ym, "infoBarPosY", infoD.pos_w-six, yLabel );
- x += infoD.pos_w + 2;
- messageOrControlX = x+info_xm_offset; //Remember Position
- messageOrControlY = ym;
- infoD.info_b = wBoxCreate( mainW, x, yb, NULL, wBoxBelow, infoD.info_w, boxH );
- infoD.info_m = wStatusCreate( mainW, x+info_xm_offset, ym, "infoBarStatus", infoD.info_w-six, "" );
+ x = 2;
+ infoD.scale_b = wBoxCreate( mainW, x, yb, NULL, wBoxBelow, infoD.scale_w,
+ boxH );
+ infoD.scale_m = wStatusCreate( mainW, x+info_xm_offset, ym, "infoBarScale",
+ infoD.scale_w-six, zoomLabel);
+ x += infoD.scale_w + 2;
+ infoD.posX_b = wBoxCreate( mainW, x, yb, NULL, wBoxBelow, infoD.pos_w, boxH );
+ infoD.posX_m = wStatusCreate( mainW, x+info_xm_offset, ym, "infoBarPosX",
+ infoD.pos_w-six, xLabel );
+ x += infoD.pos_w + 2;
+ infoD.posY_b = wBoxCreate( mainW, x, yb, NULL, wBoxBelow, infoD.pos_w, boxH );
+ infoD.posY_m = wStatusCreate( mainW, x+info_xm_offset, ym, "infoBarPosY",
+ infoD.pos_w-six, yLabel );
+ x += infoD.pos_w + 2;
+ messageOrControlX = x+info_xm_offset; //Remember Position
+ messageOrControlY = ym;
+ infoD.info_b = wBoxCreate( mainW, x, yb, NULL, wBoxBelow, infoD.info_w, boxH );
+ infoD.info_m = wStatusCreate( mainW, x+info_xm_offset, ym, "infoBarStatus",
+ infoD.info_w-six, "" );
}
@@ -1217,58 +1302,62 @@ static void SetInfoBar( void )
wBoxSetSize( infoD.posY_b, infoD.pos_w, infoHeight-3 );
wStatusSetWidth( infoD.posY_m, infoD.pos_w-six );
}
- infoD.info_w = width - 20 - infoD.pos_w*2 - infoD.scale_w - infoD.count_w - 40 + 4;
+ infoD.info_w = width - 20 - infoD.pos_w*2 - infoD.scale_w - infoD.count_w - 40 +
+ 4;
if (infoD.info_w <= 0) {
infoD.info_w = 10;
}
yb = y+info_yb_offset;
ym = y+(infoHeight-textHeight)/2;
boxH = infoHeight;
- wWinClear( mainW, 0, y, width-20, infoHeight );
- x = 0;
- wControlSetPos( (wControl_p)infoD.scale_b, x, yb );
- wControlSetPos( (wControl_p)infoD.scale_m, x+info_xm_offset, ym );
- x += infoD.scale_w + 10;
- wControlSetPos( (wControl_p)infoD.posX_b, x, yb );
- wControlSetPos( (wControl_p)infoD.posX_m, x+info_xm_offset, ym );
- x += infoD.pos_w + 5;
- wControlSetPos( (wControl_p)infoD.posY_b, x, yb );
- wControlSetPos( (wControl_p)infoD.posY_m, x+info_xm_offset, ym );
- x += infoD.pos_w + 10;
- wControlSetPos( (wControl_p)infoD.info_b, x, yb );
- wControlSetPos( (wControl_p)infoD.info_m, x+info_xm_offset, ym );
- wBoxSetSize( infoD.info_b, infoD.info_w, boxH );
- wStatusSetWidth( infoD.info_m, infoD.info_w-six );
- messageOrControlX = x+info_xm_offset;
- messageOrControlY = ym;
- if (curInfoControl[0]) {
- for ( inx=0; curInfoControl[inx]; inx++ ) {
- x += curInfoLabelWidth[inx];
- wWinPix_t y_this = ym + (textHeight/2) - (wControlGetHeight( curInfoControl[inx] )/2);
- wControlSetPos( curInfoControl[inx], x, y_this );
- x += wControlGetWidth( curInfoControl[inx] )+3;
- wControlShow( curInfoControl[inx], TRUE );
- }
- wControlSetPos( (wControl_p)infoD.info_m, x+info_xm_offset, ym ); //Move to end
+ wWinClear( mainW, 0, y, width-20, infoHeight );
+ x = 0;
+ wControlSetPos( (wControl_p)infoD.scale_b, x, yb );
+ wControlSetPos( (wControl_p)infoD.scale_m, x+info_xm_offset, ym );
+ x += infoD.scale_w + 10;
+ wControlSetPos( (wControl_p)infoD.posX_b, x, yb );
+ wControlSetPos( (wControl_p)infoD.posX_m, x+info_xm_offset, ym );
+ x += infoD.pos_w + 5;
+ wControlSetPos( (wControl_p)infoD.posY_b, x, yb );
+ wControlSetPos( (wControl_p)infoD.posY_m, x+info_xm_offset, ym );
+ x += infoD.pos_w + 10;
+ wControlSetPos( (wControl_p)infoD.info_b, x, yb );
+ wControlSetPos( (wControl_p)infoD.info_m, x+info_xm_offset, ym );
+ wBoxSetSize( infoD.info_b, infoD.info_w, boxH );
+ wStatusSetWidth( infoD.info_m, infoD.info_w-six );
+ messageOrControlX = x+info_xm_offset;
+ messageOrControlY = ym;
+ if (curInfoControl[0]) {
+ for ( inx=0; curInfoControl[inx]; inx++ ) {
+ x += curInfoLabelWidth[inx];
+ wWinPix_t y_this = ym + (textHeight/2) - (wControlGetHeight(
+ curInfoControl[inx] )/2);
+ wControlSetPos( curInfoControl[inx], x, y_this );
+ x += wControlGetWidth( curInfoControl[inx] )+3;
+ wControlShow( curInfoControl[inx], TRUE );
}
+ wControlSetPos( (wControl_p)infoD.info_m, x+info_xm_offset, ym ); //Move to end
+ }
}
static void InfoScale( void )
{
- if (mainD.scale >= 1)
- sprintf( message, "%s%0.0f:1", zoomLabel, mainD.scale );
- else
- sprintf( message, "%s1:%0.0f", zoomLabel, floor(1/mainD.scale+0.5) );
+ if (mainD.scale >= 1.0) {
+ sprintf( message, "%s%.4g:1", zoomLabel, lround(mainD.scale*4.0)/4.0 );
+ } else {
+ sprintf( message, "%s1:%.4g", zoomLabel, lround((1.0/mainD.scale)*4.0)/4.0 );
+ }
+
wStatusSetValue( infoD.scale_m, message );
}
EXPORT void InfoCount( wIndex_t count )
{
-/*
- sprintf( message, "%d", count );
- wMessageSetValue( infoD.count_m, message );
-*/
+ /*
+ sprintf( message, "%d", count );
+ wMessageSetValue( infoD.count_m, message );
+ */
}
EXPORT void InfoPos( coOrd pos )
@@ -1277,7 +1366,7 @@ EXPORT void InfoPos( coOrd pos )
wStatusSetValue( infoD.posX_m, message );
sprintf( message, "%s%s", yLabel, FormatDistance(pos.y) );
wStatusSetValue( infoD.posY_m, message );
-
+
oldMarker = pos;
}
@@ -1285,8 +1374,8 @@ static wControl_p deferSubstituteControls[NUM_INFOCTL+1];
static char * deferSubstituteLabels[NUM_INFOCTL];
EXPORT void InfoSubstituteControls(
- wControl_p * controls,
- char ** labels )
+ wControl_p * controls,
+ char ** labels )
{
wWinPix_t x, y;
int inx;
@@ -1318,7 +1407,8 @@ EXPORT void InfoSubstituteControls(
#ifdef WINDOWS
wWinPix_t y_this = y + (infoHeight/2) - (textHeight / 2 );
#else
- wWinPix_t y_this = y + (infoHeight / 2) - (wControlGetHeight(controls[inx]) / 2) - 2;
+ wWinPix_t y_this = y + (infoHeight / 2) - (wControlGetHeight(
+ controls[inx]) / 2) - 2;
#endif
wControlSetPos( controls[inx], x, y_this );
x += wControlGetWidth( controls[inx] );
@@ -1337,70 +1427,140 @@ EXPORT void SetMessage( char * msg )
wStatusSetValue( infoD.info_m, msg );
}
+/**
+ * Map Handling
+ *
+ */
-static void ChangeMapScale( BOOL_T reset )
+/*
+ * Set mapW size to fit the rescaled map
+ *
+ * \param reset IN
+ */
+static int mapBorderH = 24;
+static int mapBorderW = 24;
+static void ChangeMapScale()
{
wWinPix_t w, h;
- wWinPix_t dw, dh;
FLOAT_T fw, fh;
+ // Restrict map size to 1/2 of screen
+ FLOAT_T fScaleW = mapD.size.x / ( displayWidth * 0.5 / mapD.dpi );
+ FLOAT_T fScaleH = mapD.size.y / ( displayHeight * 0.5 / mapD.dpi );
+ FLOAT_T fScale = ceil( max( fScaleW, fScaleH ) );
+ if ( fScale > mapD.scale ) {
+ LOG( log_mapsize, 2, ( " ChangeMapScale incr scale from %0.3f to %0.3f\n",
+ mapD.scale, fScale ) );
+ mapD.scale = fScale;
+ }
- fw = (((mapD.size.x/mapD.scale)*mapD.dpi) + 0.5)+2;
- fh = (((mapD.size.y/mapD.scale)*mapD.dpi) + 0.5)+2;
+ fw = (((mapD.size.x/mapD.scale)*mapD.dpi) + 0.5)+2;
+ fh = (((mapD.size.y/mapD.scale)*mapD.dpi) + 0.5)+2;
w = (wWinPix_t)fw;
h = (wWinPix_t)fh;
- if (reset) {
- wGetDisplaySize( &dw, &dh );
- wSetGeometry(mapW, 50, dw, 50, dh, -1, -1, mapD.size.x/mapD.size.y);
- wWinSetSize( mapW, w+DlgSepLeft+DlgSepRight, h+DlgSepTop+DlgSepBottom);
- }
+ LOG( log_mapsize, 2, ( " ChangeMapScale mapD.scale=%0.3f w=%ld h=%ld\n",
+ mapD.scale, w, h ) );
+ wWinSetSize( mapW, w+mapBorderW, h+mapBorderH );
+ // This should be done by wWinSetSize
wDrawSetSize( mapD.d, w, h, NULL );
}
EXPORT BOOL_T SetRoomSize( coOrd size )
{
+ LOG( log_mapsize, 2, ( "SetRoomSize NEW:%0.3fx%0.3f OLD:%0.3fx%0.3f\n", size.x,
+ size.y, mapD.size.x, mapD.size.y ) );
SetLayoutRoomSize(size);
- if (size.x < 12.0)
- size.x = 12.0;
- if (size.y < 12.0)
- size.y = 12.0;
+ if (size.x < 1.0) {
+ size.x = 1.0;
+ }
+ if (size.y < 1.0) {
+ size.y = 1.0;
+ }
if ( mapD.size.x == size.x &&
- mapD.size.y == size.y )
+ mapD.size.y == size.y ) {
return TRUE;
+ }
mapD.size = size;
SetLayoutRoomSize(size);
- if ( mapW == NULL)
- return TRUE;
- ChangeMapScale(TRUE);
wPrefSetFloat( "draw", "roomsizeX", mapD.size.x );
wPrefSetFloat( "draw", "roomsizeY", mapD.size.y );
+ if ( mapW == NULL) {
+ return TRUE;
+ }
+ ChangeMapScale();
return TRUE;
}
-EXPORT void GetRoomSize( coOrd * froomSize )
-{
- *froomSize = mapD.size;
-}
-
+/**
+ * Redraw the Map window using the Scale derived from the Window size and Room size
+ * \param bd [inout] Map canvas - not used
+ * \param pContext [inout] Param context - not used
+ * \param px, py [in] canvas size
+ */
static void MapRedraw(
- wDraw_p bd, void * pContex, wWinPix_t px, wWinPix_t py )
+ wDraw_p bd, void * pContex, wWinPix_t px, wWinPix_t py )
{
- if (inPlaybackQuit)
+ if (inPlaybackQuit) {
return;
+ }
static int cMR = 0;
LOG( log_redraw, 2, ( "MapRedraw: %d\n", cMR++ ) );
- if (!mapVisible)
+ if (!mapVisible) {
return;
- if (delayUpdate)
- wDrawDelayUpdate( mapD.d, TRUE );
+ }
+ if (delayUpdate) {
+ wDrawDelayUpdate( mapD.d, TRUE );
+ }
//wSetCursor( mapD.d, wCursorWait );
wBool_t bTemp = wDrawSetTempMode( mapD.d, FALSE );
- if ( bTemp )
+ if ( bTemp ) {
printf( "MapRedraw TempMode\n" );
+ }
+
+ if ( log_mapsize >= 2 ) {
+ lprintf( " MapRedraw: parm=%ldx%ld", px, py );
+ wWinPix_t tx, ty;
+ if ( mapW ) {
+ wWinGetSize( mapW, &tx, &ty );
+ lprintf( " win=%ldx%ld", tx, ty );
+ }
+ if ( mapD.d ) {
+ wDrawGetSize( mapD.d, &tx, &ty );
+ lprintf( " draw=%ldx%ld", tx, ty );
+ }
+ lprintf( "\n" );
+ }
+
+ // Find new mapD.scale
+ if ( ( px <= 0 || py <= 0 ) && mapD.d ) {
+ wDrawGetSize( mapD.d, &px, &py );
+ px += 2;
+ py += 2;
+ }
+ if ( px > 0 && py > 0 ) {
+ FLOAT_T scaleX = mapD.size.x * mapD.dpi / px;
+ FLOAT_T scaleY = mapD.size.y * mapD.dpi / py;
+ FLOAT_T scale;
+
+ // Find largest scale
+ if (scaleX>scaleY) { scale = scaleX; }
+ else { scale = scaleY; }
+
+ if (scale > MAX_MAIN_SCALE) { scale = MAX_MAIN_SCALE; }
+ if (scale < MIN_MAIN_MACRO) { scale = MIN_MAIN_MACRO; }
+
+ scale = ceil( scale ); // Round up
+ LOG( log_mapsize, 2,
+ ( " %ldx%ld mapD.scale=%0.3f, scaleX=%0.3f scaleY=%0.3f scale=%0.3f\n",
+ px, py, mapD.scale, scaleX, scaleY, scale ) );
+ mapD.scale = scale;
+ } else {
+ LOG( log_mapsize, 2, ( " 0x0 mapD.scale=%0.3f\n", mapD.scale ) );
+ }
wDrawClear( mapD.d );
DrawTracks( &mapD, mapD.scale, mapD.orig, mapD.size );
DrawMapBoundingBox( TRUE );
@@ -1410,14 +1570,6 @@ static void MapRedraw(
}
-static void MapResize( void )
-{
- mapD.scale = mapScale;
- ChangeMapScale(TRUE);
- MapRedraw( mapD.d, NULL, 0, 0 );
-}
-
-
EXPORT void SetMainSize( void )
{
wWinPix_t ww, hh;
@@ -1432,35 +1584,34 @@ EXPORT void SetMainSize( void )
tempD.size = mainD.size;
}
-// Hack to switch between TempRedraw and MainRedraw
-extern wBool_t wDrawDoTempDraw;
/* Update temp_surface after executing a command
*/
-EXPORT void TempRedraw( void ) {
+EXPORT void TempRedraw( void )
+{
static int cTR = 0;
LOG( log_redraw, 2, ( "TempRedraw: %d\n", cTR++ ) );
-if (wDrawDoTempDraw == FALSE) {
- // Remove this after windows supports GTK
- MainRedraw(); // TempRedraw - windows
-} else {
- wDrawDelayUpdate( tempD.d, TRUE );
- wDrawSetTempMode( tempD.d, TRUE );
- DrawMarkers();
- DoCurCommand( C_REDRAW, zero );
- RulerRedraw( FALSE );
- RedrawPlaybackCursor(); //If in playback
- wDrawSetTempMode( tempD.d, FALSE );
- wDrawDelayUpdate( tempD.d, FALSE );
-}
+ if (wDrawDoTempDraw == FALSE) {
+ // Remove this after windows supports GTK
+ MainRedraw(); // TempRedraw - windows
+ } else {
+ wDrawDelayUpdate( tempD.d, TRUE );
+ wDrawSetTempMode( tempD.d, TRUE );
+ DrawMarkers();
+ DoCurCommand( C_REDRAW, zero );
+ RulerRedraw( FALSE );
+ RedrawPlaybackCursor(); //If in playback
+ wDrawSetTempMode( tempD.d, FALSE );
+ wDrawDelayUpdate( tempD.d, FALSE );
+ }
}
/**
* Calculate position and size of background bitmap
*
* \param [in] drawP destination drawing area
- * \param [in] origX x origin of drawing area
+ * \param [in] origX x origin of drawing area
* \param [in] origY y origin of drawing area
* \param [out] posX x position of bitmap
* \param [out] posY y position of bitmap
@@ -1473,15 +1624,15 @@ void
TranslateBackground(drawCmd_p drawP, POS_T origX, POS_T origY, wWinPix_t* posX,
wWinPix_t* posY, wWinPix_t* pWidth)
{
- coOrd back_pos = GetLayoutBackGroundPos();
+ coOrd back_pos = GetLayoutBackGroundPos();
- *pWidth = (wWinPix_t)(GetLayoutBackGroundSize() / drawP->scale *
- drawP->dpi);
+ *pWidth = (wWinPix_t)(GetLayoutBackGroundSize() / drawP->scale *
+ drawP->dpi);
- *posX = (wWinPix_t)((back_pos.x - origX) / drawP->scale *
- drawP->dpi);
- *posY = (wWinPix_t)((back_pos.y - origY) / drawP->scale *
- drawP->dpi);
+ *posX = (wWinPix_t)((back_pos.x - origX) / drawP->scale *
+ drawP->dpi);
+ *posY = (wWinPix_t)((back_pos.y - origY) / drawP->scale *
+ drawP->dpi);
}
/*
@@ -1492,10 +1643,12 @@ EXPORT void MainRedraw( void )
coOrd orig, size;
static int cMR = 0;
- LOG( log_redraw, 1, ( "MainRedraw: %d\n", cMR++ ) );
+ LOG( log_redraw, 1, ( "MainRedraw: %d %0.1fx%0.1f\n", cMR++, mainD.size.x,
+ mainD.size.y ) );
unsigned long time0 = wGetTimer();
- if (delayUpdate)
- wDrawDelayUpdate( mainD.d, TRUE );
+ if (delayUpdate) {
+ wDrawDelayUpdate( mainD.d, TRUE );
+ }
wDrawSetTempMode( mainD.d, FALSE );
wDrawClear( mainD.d );
@@ -1537,7 +1690,8 @@ EXPORT void MainRedraw( void )
//wSetCursor( mainD.d, defaultCursor );
InfoScale();
- LOG( log_timemainredraw, 1, ( "MainRedraw time = %lu mS\n", wGetTimer()-time0 ) );
+ LOG( log_timemainredraw, 1, ( "MainRedraw time = %lu mS\n",
+ wGetTimer()-time0 ) );
// The remainder is from TempRedraw
wDrawSetTempMode( tempD.d, TRUE );
DrawMarkers();
@@ -1555,14 +1709,16 @@ EXPORT void MainRedraw( void )
* \param bNoBorder Don't allow mainD.orig to go negative
*/
EXPORT void MainLayout(
- wBool_t bRedraw,
- wBool_t bNoBorder )
+ wBool_t bRedraw,
+ wBool_t bNoBorder )
{
DIST_T t1;
- if (inPlaybackQuit)
+ if (inPlaybackQuit) {
return;
+ }
static int cML = 0;
- LOG( log_redraw, 1, ( "MainLayout: %d\n", cML++ ) );
+ LOG( log_redraw, 1, ( "MainLayout: %d %s %s\n", cML++, bRedraw?"RDW":"---",
+ bNoBorder?"NBR":"---" ) );
SetMainSize();
t1 = mainD.dpi/mainD.scale;
@@ -1574,14 +1730,17 @@ EXPORT void MainLayout(
pixelBins = 0.127;
while (1) {
pixelBins *= 2.0;
- if ( pixelBins >= t1 )
+ if ( pixelBins >= t1 ) {
break;
+ }
pixelBins *= 2.0;
- if ( pixelBins >= t1 )
+ if ( pixelBins >= t1 ) {
break;
+ }
pixelBins *= 2.5;
- if ( pixelBins >= t1 )
+ if ( pixelBins >= t1 ) {
break;
+ }
}
}
LOG( log_pan, 2, ( "PixelBins=%0.6f\n", pixelBins ) );
@@ -1592,30 +1751,34 @@ EXPORT void MainLayout(
mainCenter.y = mainD.orig.y + mainD.size.y/2.0;
DrawMapBoundingBox( TRUE );
- if ( bRedraw )
+ if ( bRedraw ) {
MainRedraw();
+ }
if ( bRedraw && wDrawDoTempDraw ) { // Temporary until mswlib supports TempDraw
wAction_t action = wActionMove;
coOrd pos;
- if ( mouseState == mouseLeft )
+ if ( mouseState == mouseLeft ) {
action = wActionLDrag;
- if ( mouseState == mouseRight )
+ }
+ if ( mouseState == mouseRight ) {
action = wActionRDrag;
+ }
mainD.Pix2CoOrd( &mainD, mousePositionx, mousePositiony, &pos );
// Prevent recursion if curCommand calls MainLayout when action if a Move or Drag
// ie CmdPan
static int iRecursion = 0;
iRecursion++;
- if ( iRecursion == 1 )
+ if ( iRecursion == 1 ) {
DoMouse( action, pos );
+ }
iRecursion--;
}
}
/**
* The wlib event handler for the main window.
- *
+ *
* \param win wlib window information
* \param e the wlib event
* \param data additional data (unused)
@@ -1623,30 +1786,36 @@ EXPORT void MainLayout(
void MainProc( wWin_p win, winProcEvent e, void * refresh, void * data )
{
+ static int cMP = 0;
wWinPix_t width, height;
switch( e ) {
case wResize_e:
- if (mainD.d == NULL)
+ if (mainD.d == NULL) {
return;
+ }
wWinGetSize( mainW, &width, &height );
+ LOG( log_redraw, 1, ( "MainProc/Resize: %d %s %ld %ld\n", cMP++,
+ refresh==NULL?"RDW":"---", width, height ) );
LayoutToolBar(refresh);
height -= (toolbarHeight+max(infoHeight,textHeight)+10);
if (height >= 0) {
wBool_t bTemp = wDrawSetTempMode(mainD.d, FALSE );
-if ( bTemp )
- printf( "MainProc TempMode\n" );
+ if ( bTemp ) {
+ printf( "MainProc TempMode\n" );
+ }
wDrawSetSize( mainD.d, width-20, height, refresh );
wControlSetPos( (wControl_p)mainD.d, 0, toolbarHeight );
SetMainSize();
SetInfoBar();
panCenter.x = mainD.orig.x + mainD.size.x/2.0;
panCenter.y = mainD.orig.y + mainD.size.y/2.0;
- LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
MainLayout( !refresh, TRUE ); // MainProc: wResize_e event
wPrefSetInteger( "draw", "mainwidth", (int)width );
wPrefSetInteger( "draw", "mainheight", (int)height );
wDrawSetTempMode( mainD.d, bTemp );
- } else DrawMapBoundingBox( TRUE );
+ } else { DrawMapBoundingBox( TRUE ); }
break;
case wState_e:
wPrefSetInteger( "draw", "maximized", wWinIsMaximized(win) );
@@ -1666,6 +1835,8 @@ if ( bTemp )
EXPORT void DoRedraw( void )
{
+ LOG( log_mapsize, 2, ( "DoRedraw\n" ) );
+ ChangeMapScale();
MapRedraw( mapD.d, NULL, 0, 0 );
MainRedraw(); // DoRedraw
}
@@ -1679,8 +1850,9 @@ EXPORT void DoRedraw( void )
static void DrawRoomWalls( wBool_t drawBackground )
{
- if (mainD.d == NULL)
+ if (mainD.d == NULL) {
return;
+ }
if (drawBackground) {
DrawRectangle( &mainD, mainD.orig, mainD.size, drawColorGrey80, DRAW_FILL );
@@ -1714,13 +1886,13 @@ static DIST_T rulerFontSize = 12.0;
EXPORT void DrawRuler(
- drawCmd_p d,
- coOrd pos0,
- coOrd pos1,
- DIST_T offset,
- int number,
- int tickSide,
- wDrawColor color )
+ drawCmd_p d,
+ coOrd pos0,
+ coOrd pos1,
+ DIST_T offset,
+ int number,
+ int tickSide,
+ wDrawColor color )
{
coOrd orig = pos0;
wAngle_t a, aa;
@@ -1733,9 +1905,10 @@ EXPORT void DrawRuler(
coOrd d_orig, d_size;
wFontSize_t fs;
long mm, mm0, mm1, power, skip;
-
+
static double lengths[] = {
- 0, 2.0, 4.0, 2.0, 6.0, 2.0, 4.0, 2.0, 8.0, 2.0, 4.0, 2.0, 6.0, 2.0, 4.0, 2.0, 0.0 };
+ 0, 2.0, 4.0, 2.0, 6.0, 2.0, 4.0, 2.0, 8.0, 2.0, 4.0, 2.0, 6.0, 2.0, 4.0, 2.0, 0.0
+ };
int fraction, incr, firstFraction, lastFraction;
int majorLength;
coOrd p0, p1;
@@ -1746,18 +1919,21 @@ EXPORT void DrawRuler(
aa = NormalizeAngle(a+(tickSide==0?+90:-90));
end = FindDistance( pos0, pos1 );
- if (end < 0.1)
+ if (end < 0.1) {
return;
+ }
d_orig.x = d->orig.x - 0.1;
d_orig.y = d->orig.y - 0.1;
d_size.x = d->size.x + 0.2;
d_size.y = d->size.y + 0.2;
- if (!ClipLine( &pos0, &pos1, d_orig, d->angle, d_size ))
+ if (!ClipLine( &pos0, &pos1, d_orig, d->angle, d_size )) {
return;
+ }
start = FindDistance( orig, pos0 );
- if (offset < 0)
+ if (offset < 0) {
start = -start;
+ }
end = FindDistance( orig, pos1 );
DrawLine( d, pos0, pos1, 0, color );
@@ -1779,39 +1955,39 @@ EXPORT void DrawRuler(
// Label interval for scale > 40
if (d->scale <= 200) {
skip = 2000;
- }
- else if (d->scale <= 400) {
+ } else if (d->scale <= 400) {
skip = 5000;
- }
- else {
+ } else {
skip = 10000;
}
for ( ; power<=1000; power*=10,len+=3 ) {
- if (power == 1000)
+ if (power == 1000) {
len = 10;
+ }
for (mm=((mm0+(mm0>0?power-1:0))/power)*power; mm<=mm1; mm+=power) {
if (power==1000 || mm%(power*10) != 0) {
Translate( &p0, orig, a, mm/25.4 );
Translate( &p1, p0, aa, len*d->scale/mainD.dpi );
DrawLine( d, p0, p1, 0, color );
- if (!number || (d->scale > 40 && mm % skip != 0.0))
+ if (!number || (d->scale > 40 && mm % skip != 0.0)) {
continue;
+ }
if ( (power>=1000) ||
- (d->scale<=8 && power>=100) ||
- (d->scale<=1 && power>=10) ) {
+ (d->scale<=8 && power>=100) ||
+ (d->scale<=1 && power>=10) ) {
if (mm%100 != 0) {
sprintf(message, "%ld", mm/10%10 );
fs = rulerFontSize*2/3;
Translate( &p0, p0, aa, (fs/2.0+len)*d->scale/mainD.dpi );
- Translate( &p0, p0, 225, fs*d->scale/mainD.dpi );
+ Translate( &p0, p0, 225, fs*d->scale/mainD.dpi );
//p0.x = p1.x+4*dxn/10*d->scale/mainD.dpi;
//p0.y = p1.y+dyn*d->scale/mainD.dpi;
} else {
sprintf(message, "%0.1f", mm/1000.0 );
fs = rulerFontSize;
Translate( &p0, p0, aa, (fs/2.0+len)*d->scale/mainD.dpi );
- Translate( &p0, p0, 225, 1.5*fs*d->scale/mainD.dpi );
+ Translate( &p0, p0, 225, 1.5*fs*d->scale/mainD.dpi );
//p0.x = p0.x+((-(LBORDER-2)/2)+((LBORDER-2)/2+2)*sin_aa)*d->scale/mainD.dpi;
//p0.y = p1.y+dyn*d->scale/mainD.dpi;
}
@@ -1821,18 +1997,19 @@ EXPORT void DrawRuler(
}
}
} else {
- if (d->scale <= 1)
- incr = 1; //16ths
- else if (d->scale <= 3)
- incr = 2; //8ths
- else if (d->scale <= 5)
- incr = 4; //4ths
- else if (d->scale <= 7)
- incr = 8; //1/2ths
- else if (d->scale <= 48)
+ if (d->scale <= 1) {
+ incr = 1; //16ths
+ } else if (d->scale <= 3) {
+ incr = 2; //8ths
+ } else if (d->scale <= 5) {
+ incr = 4; //4ths
+ } else if (d->scale <= 7) {
+ incr = 8; //1/2ths
+ } else if (d->scale <= 48) {
incr = 32;
- else
- incr = 16; //Inches
+ } else {
+ incr = 16; //Inches
+ }
lastInch = (int)floor(end);
lastFraction = 16;
@@ -1842,7 +2019,7 @@ EXPORT void DrawRuler(
inch--;
firstFraction = 16 - firstFraction;
}
- for ( ; inch<=lastInch; inch++){
+ for ( ; inch<=lastInch; inch++) {
if(inch % 12 == 0) {
lengths[0] = 12;
majorLength = 16;
@@ -1855,7 +2032,7 @@ EXPORT void DrawRuler(
digit = (int)(inch%12);
fs = rulerFontSize*(2.0/3.0);
quote = '"';
- } else if (d->scale <= 24){ // 16
+ } else if (d->scale <= 24) { // 16
lengths[0] = 10;
majorLength = 12;
digit = (int)(inch%12);
@@ -1863,24 +2040,22 @@ EXPORT void DrawRuler(
} else {
continue;
}
- if (inch == lastInch)
+ if (inch == lastInch) {
lastFraction = (((int)((end - lastInch)*16)) / incr) * incr;
+ }
for ( fraction = firstFraction; fraction <= lastFraction; fraction += incr ) {
// Tick interval for scale > 128
skip = 0;
if(d->scale > 512) {
skip = (inch % 120 != 0);
- }
- else if(d->scale > 256) {
+ } else if(d->scale > 256) {
skip = (inch % 60 != 0);
- }
- else if(d->scale > 128) {
+ } else if(d->scale > 128) {
skip = (inch % 24 != 0);
- }
- else if(d->scale > 64) {
+ } else if(d->scale > 64) {
skip = (inch % 12 != 0);
}
- if(!skip){
+ if(!skip) {
Translate( &p0, orig, a, inch+fraction/16.0 );
Translate( &p1, p0, aa, lengths[fraction]*d->scale/mainD.dpi );
DrawLine( d, p0, p1, 0, color );
@@ -1889,20 +2064,16 @@ EXPORT void DrawRuler(
// Label interval for scale > 40
if (d->scale <= 80) {
skip = 2;
- }
- else if (d->scale <= 120) {
+ } else if (d->scale <= 120) {
skip = 5;
- }
- else if (d->scale <= 240) {
+ } else if (d->scale <= 240) {
skip = 10;
- }
- else if (d->scale <= 480) {
+ } else if (d->scale <= 480) {
skip = 20;
- }
- else {
+ } else {
skip = 50;
}
- if ( (number == TRUE && d->scale <= 40) || (digit % skip == 0)) {
+ if ( number == TRUE && ((d->scale <= 40) || (digit % skip == 0.0)) ) {
if (inch % 12 == 0 || d->scale <= 2) {
Translate( &p0, p0, aa, majorLength*d->scale/mainD.dpi );
Translate( &p0, p0, 225, fs*d->scale/mainD.dpi );
@@ -1911,7 +2082,7 @@ EXPORT void DrawRuler(
}
}
}
- firstFraction = 0;
+ firstFraction = 0;
}
}
}
@@ -1928,14 +2099,14 @@ static void DrawTicks( drawCmd_p d, coOrd size )
double blank_zone = 40*d->scale/mainD.dpi;
if ( d->orig.x<0.0-blank_zone ) {
- p0.y = 0.0; p1.y = mapD.size.y;
- p0.x = p1.x = 0.0;
- DrawRuler( d, p0, p1, offset, FALSE, TRUE, borderColor );
+ p0.y = 0.0; p1.y = mapD.size.y;
+ p0.x = p1.x = 0.0;
+ DrawRuler( d, p0, p1, offset, FALSE, TRUE, borderColor );
}
if (d->orig.x+d->size.x>mapD.size.x+blank_zone) {
- p0.y = 0.0; p1.y = mapD.size.y;
- p0.x = p1.x = mapD.size.x;
- DrawRuler( d, p0, p1, offset, FALSE, FALSE, borderColor );
+ p0.y = 0.0; p1.y = mapD.size.y;
+ p0.x = p1.x = mapD.size.x;
+ DrawRuler( d, p0, p1, offset, FALSE, FALSE, borderColor );
}
p0.x = 0.0; p1.x = d->size.x;
offset = d->orig.x;
@@ -1952,9 +2123,9 @@ static void DrawTicks( drawCmd_p d, coOrd size )
DrawRuler( d, p0, p1, offset, FALSE, FALSE, borderColor );
}
if (d->orig.y+d->size.y>mapD.size.y+blank_zone) {
- p0.x = 0.0; p1.x = mapD.size.x;
- p0.y = p1.y = mapD.size.y;
- DrawRuler( d, p0, p1, offset, FALSE, TRUE, borderColor );
+ p0.x = 0.0; p1.x = mapD.size.x;
+ p0.y = p1.y = mapD.size.y;
+ DrawRuler( d, p0, p1, offset, FALSE, TRUE, borderColor );
}
p0.y = 0.0; p1.y = d->size.y;
offset = d->orig.y;
@@ -1974,23 +2145,26 @@ EXPORT coOrd mainCenter;
static void DrawMapBoundingBox( BOOL_T set )
{
- if (mainD.d == NULL || mapD.d == NULL)
- abort();
- if (!mapVisible)
+ CHECK( mainD.d );
+ CHECK( mapD.d );
+ if (!mapVisible) {
return;
+ }
DrawHilight( &mapD, mainD.orig, mainD.size, TRUE );
}
-static void ConstraintOrig( coOrd * orig, coOrd size, wBool_t bNoBorder, wBool_t bRound )
+static void ConstraintOrig( coOrd * orig, coOrd size, wBool_t bNoBorder,
+ wBool_t bRound )
{
-LOG( log_pan, 2, ( "ConstraintOrig [ %0.6f, %0.6f ] RoomSize(%0.3f %0.3f), WxH=%0.3fx%0.3f",
- orig->x, orig->y, mapD.size.x, mapD.size.y,
- size.x, size.y ) )
+ LOG( log_pan, 2,
+ ( "ConstraintOrig [ %0.6f, %0.6f ] RoomSize(%0.3f %0.3f), WxH=%0.3fx%0.3f",
+ orig->x, orig->y, mapD.size.x, mapD.size.y,
+ size.x, size.y ) )
coOrd bound = zero;
- if ( !bNoBorder ) {
+ if ( !bNoBorder ) {
bound.x = size.x/2;
bound.y = size.y/2;
}
@@ -2004,8 +2178,9 @@ LOG( log_pan, 2, ( "ConstraintOrig [ %0.6f, %0.6f ] RoomSize(%0.3f %0.3f), WxH=%
}
}
- if (orig->x < (0-bound.x))
- orig->x = 0-bound.x;
+ if (orig->x < (0-bound.x)) {
+ orig->x = 0-bound.x;
+ }
if (orig->y > 0.0) {
if ((orig->y+size.y) > (mapD.size.y+bound.y) ) {
@@ -2015,8 +2190,9 @@ LOG( log_pan, 2, ( "ConstraintOrig [ %0.6f, %0.6f ] RoomSize(%0.3f %0.3f), WxH=%
}
}
- if (orig->y < (0-bound.y))
- orig->y = 0-bound.y;
+ if (orig->y < (0-bound.y)) {
+ orig->y = 0-bound.y;
+ }
if (bRound) {
orig->x = round(orig->x*pixelBins)/pixelBins;
@@ -2026,8 +2202,8 @@ LOG( log_pan, 2, ( "ConstraintOrig [ %0.6f, %0.6f ] RoomSize(%0.3f %0.3f), WxH=%
}
/**
- * Initialize the menu for setting zoom factors.
- *
+ * Initialize the menu for setting zoom factors.
+ *
* \param IN zoomM Menu to which radio button is added
* \param IN zoomSubM Second menu to which radio button is added, ignored if NULL
* \param IN ctxMenu1
@@ -2035,31 +2211,34 @@ LOG( log_pan, 2, ( "ConstraintOrig [ %0.6f, %0.6f ] RoomSize(%0.3f %0.3f), WxH=%
*
*/
-EXPORT void InitCmdZoom( wMenu_p zoomM, wMenu_p zoomSubM, wMenu_p ctxMenu1, wMenu_p panMenu )
+EXPORT void InitCmdZoom( wMenu_p zoomM, wMenu_p zoomSubM, wMenu_p ctxMenu1,
+ wMenu_p panMenu )
{
int inx;
-
+
for ( inx=0; inx<COUNT( zoomList ); inx++ ) {
- if( (zoomList[ inx ].value >= 1.0 && zoomList[ inx ].value<=10 ) ||
- (ceil(log2(zoomList[ inx ].value)) == floor(log2(zoomList[ inx ].value))))
- {
- if (zoomM)
- zoomList[inx].btRadio = wMenuRadioCreate( zoomM, "cmdZoom", zoomList[inx].name, 0, DoZoom, (&(zoomList[inx].value)));
- if( zoomSubM )
- zoomList[inx].pdRadio = wMenuRadioCreate( zoomSubM, "cmdZoom", zoomList[inx].name, 0, DoZoom, (&(zoomList[inx].value)));
- if (panMenu)
- zoomList[inx].panRadio = wMenuRadioCreate( panMenu, "cmdZoom", zoomList[inx].name, 0, DoZoom, (&(zoomList[inx].value)));
+ if (zoomM) {
+ zoomList[inx].btRadio = wMenuRadioCreate( zoomM, "cmdZoom", zoomList[inx].name,
+ 0, DoZoom, (&(zoomList[inx].value)));
}
- if ((zoomList[inx].value >=1.0 && zoomList[inx].value <= 10.0) || (ceil(log2(zoomList[ inx ].value)) == floor(log2(zoomList[ inx ].value)))) {
- if (ctxMenu1)
- zoomList[inx].ctxRadio1 = wMenuRadioCreate( ctxMenu1, "cmdZoom", zoomList[inx].name, 0, DoZoom, (&(zoomList[inx].value)));
+ if( zoomSubM ) {
+ zoomList[inx].pdRadio = wMenuRadioCreate( zoomSubM, "cmdZoom",
+ zoomList[inx].name, 0, DoZoom, (&(zoomList[inx].value)));
+ }
+ if (panMenu) {
+ zoomList[inx].panRadio = wMenuRadioCreate( panMenu, "cmdZoom",
+ zoomList[inx].name, 0, DoZoom, (&(zoomList[inx].value)));
+ }
+ if (ctxMenu1) {
+ zoomList[inx].ctxRadio1 = wMenuRadioCreate( ctxMenu1, "cmdZoom",
+ zoomList[inx].name, 0, DoZoom, (&(zoomList[inx].value)));
}
}
}
/**
* Set radio button(s) corresponding to current scale.
- *
+ *
* \param IN scale current scale
*
*/
@@ -2067,93 +2246,126 @@ EXPORT void InitCmdZoom( wMenu_p zoomM, wMenu_p zoomSubM, wMenu_p ctxMenu1, wMen
static void SetZoomRadio( DIST_T scale )
{
int inx;
- long curScale = (long)scale;
-
+
for ( inx=0; inx<COUNT( zoomList ); inx++ ) {
- if( curScale == zoomList[inx].value ) {
- if (zoomList[inx].btRadio)
+ if( scale == zoomList[inx].value ) {
+ if (zoomList[inx].btRadio) {
wMenuRadioSetActive( zoomList[inx].btRadio );
- if( zoomList[inx].pdRadio )
+ }
+ if( zoomList[inx].pdRadio ) {
wMenuRadioSetActive( zoomList[inx].pdRadio );
- if (zoomList[inx].ctxRadio1)
+ }
+ if (zoomList[inx].ctxRadio1) {
wMenuRadioSetActive( zoomList[inx].ctxRadio1 );
- if (zoomList[inx].panRadio)
+ }
+ if (zoomList[inx].panRadio) {
wMenuRadioSetActive( zoomList[inx].panRadio );
- /* activate / deactivate zoom buttons when appropriate */
+ }
+ /* activate / deactivate zoom buttons when appropriate */
wControlLinkedActive( (wControl_p)zoomUpB, ( inx != 0 ) );
- wControlLinkedActive( (wControl_p)zoomDownB, ( inx < (COUNT( zoomList ) - 1)));
+ wControlLinkedActive( (wControl_p)zoomDownB, ( inx < (COUNT( zoomList ) - 1)));
}
}
-}
+}
/**
- * Find current scale
+ * Find current scale
*
* \param IN scale current scale
* \return index in scale table or -1 if error
*
*/
-
+
static int ScaleInx( DIST_T scale )
{
int inx;
-
+
for ( inx=0; inx<COUNT( zoomList); inx++ ) {
if( scale == zoomList[inx].value ) {
return inx;
}
}
- return -1;
+ return -1;
}
/*
* Find Nearest Scale
*/
-static int NearestScaleInx ( DIST_T scale, BOOL_T larger ) {
+static int NearestScaleInx ( DIST_T scale, BOOL_T larger )
+{
int inx;
- for ( inx=0; inx<COUNT( zoomList ); inx++ ) {
+ //scale = rintf(scale*4.0)/4.0;
+
+ if (larger) {
+ for ( inx=0; inx<COUNT( zoomList )-1; inx++ ) {
if( scale == zoomList[inx].value ) {
return inx;
}
- if (scale < zoomList[inx].value) return inx;
+ if (scale < zoomList[inx].value) {
+ return inx;
+ }
}
return inx-1;
+ } else {
+ for ( inx=COUNT( zoomList)-1; inx>=0; inx-- ) {
+ if( scale == zoomList[inx].value ) {
+ return inx;
+ }
+ if (scale > zoomList[inx].value ) {
+ return inx;
+ }
+ }
+ }
+ return 0;
}
/**
- * Set up for new drawing scale. After the scale was changed, eg. via zoom button, everything
- * is set up for the new scale.
+ * Set up for new drawing scale. After the scale was changed, eg. via zoom button, everything
+ * is set up for the new scale.
*
* \param scale IN new scale
*/
-
+
static void DoNewScale( DIST_T scale )
{
char tmp[20];
- if (scale > MAX_MAIN_SCALE)
+ static BOOL_T in_use = 0; //lock for recursion to avoid additional setting.
+
+ if (in_use) { return; }
+
+ in_use = 1; //set lock
+
+ if (scale > MAX_MAIN_SCALE) {
scale = MAX_MAIN_SCALE;
+ }
+
+ if (scale < zoomList[0].value) {
+ scale = zoomList[0].value;
+ }
tempD.scale = mainD.scale = scale;
mainD.dpi = wDrawGetDPI( mainD.d );
- if ( scale > 1.0 && scale <= 12.0 ) {
- mainD.dpi = floor( (mainD.dpi + scale/2)/scale) * scale;
- }
+ //if ( scale > 1.0 && scale <= 12.0 ) {
+ // mainD.dpi = floor( (mainD.dpi + scale/2)/scale) * scale;
+ //}
tempD.dpi = mainD.dpi;
- SetZoomRadio( scale );
+ SetZoomRadio( scale ); //This routine causes a re-drive of the DoNewScale.
+
InfoScale();
- SetMainSize();
+ SetMainSize();
PanHere( I2VP(1) );
-LOG( log_zoom, 1, ( "center = [%0.3f %0.3f]\n", mainCenter.x, mainCenter.y ) )
+ LOG( log_zoom, 1, ( "center = [%0.3f %0.3f]\n", mainCenter.x, mainCenter.y ) )
sprintf( tmp, "%0.3f", mainD.scale );
wPrefSetString( "draw", "zoom", tmp );
if (recordF) {
fprintf( recordF, "ORIG %0.3f %0.3f %0.3f\n",
- mainD.scale, mainD.orig.x, mainD.orig.y );
+ mainD.scale, mainD.orig.x, mainD.orig.y );
}
+ in_use=0; //release lock
}
@@ -2167,34 +2379,37 @@ EXPORT void DoZoomUp( void * mode )
{
long newScale;
int i;
-
+
LOG( log_zoom, 2, ( "DoZoomUp KS:%x\n", MyGetKeyState() ) );
if ( mode != NULL || (MyGetKeyState()&WKEY_SHIFT) == 0) {
i = ScaleInx( mainD.scale );
- if (i < 0) i = NearestScaleInx(mainD.scale, TRUE);
- /*
- * Zooming into macro mode happens when we are at scale 1:1.
+ if (i < 0) { i = NearestScaleInx(mainD.scale, FALSE); }
+ /*
+ * Zooming into macro mode happens when we are at scale 1:1.
* To jump into macro mode, the CTRL-key has to be pressed and held.
*/
if( mainD.scale != 1.0 || (mainD.scale == 1.0 && (MyGetKeyState()&WKEY_CTRL))) {
if( i ) {
- if (mainD.scale <=1.0)
+ if (mainD.scale <=1.0) {
InfoMessage(_("Macro Zoom Mode"));
- else
+ } else {
InfoMessage("");
- DoNewScale( zoomList[ i - 1 ].value );
-
- } else InfoMessage("Minimum Macro Zoom");
+ }
+ DoNewScale( zoomList[ i - 1 ].value );
+
+ } else { InfoMessage("Minimum Macro Zoom"); }
} else {
InfoMessage(_("Scale 1:1 - Use Ctrl+ to go to Macro Zoom Mode"));
}
} else if ( (MyGetKeyState()&WKEY_CTRL) == 0 ) {
wPrefGetInteger( "misc", "zoomin", &newScale, 4 );
- InfoMessage(_("Preset Zoom In Value selected. Shift+Ctrl+PageDwn to reset value"));
+ InfoMessage(
+ _("Preset Zoom In Value selected. Shift+Ctrl+PageDwn to reset value"));
DoNewScale( newScale );
} else {
wPrefSetInteger( "misc", "zoomin", (long)mainD.scale );
- InfoMessage( _("Zoom In Program Value %ld:1, Shift+PageDwn to use"), (long)mainD.scale );
+ InfoMessage( _("Zoom In Program Value %ld:1, Shift+PageDwn to use"),
+ (long)mainD.scale );
}
}
@@ -2202,31 +2417,33 @@ EXPORT void DoZoomUp( void * mode )
* Mode - 0 = Extents are Map size
* Mode - 1 = Extents are Selected size
*/
-EXPORT void DoZoomExtents( void * mode) {
+EXPORT void DoZoomExtents( void * mode)
+{
DIST_T scale_x, scale_y;
if ( 1 == VP2L(mode) ) {
- if ( selectedTrackCount == 0 )
- return;
- track_p trk = NULL;
- coOrd bot, top;
- BOOL_T first = TRUE;
- while ( TrackIterate( &trk ) ) {
- if(GetTrkSelected(trk)) {
- coOrd hi, lo;
- GetBoundingBox(trk,&hi,&lo);
- if (first) {
- first = FALSE;
- bot = lo;
- top = hi;
- } else {
- if (lo.x < bot.x) bot.x = lo.x;
- if (lo.y < bot.y) bot.y = lo.y;
- if (hi.x > top.x) top.x = hi.x;
- if (hi.y > top.y) top.y = hi.y;
- }
- }
+ if ( selectedTrackCount == 0 ) {
+ return;
+ }
+ track_p trk = NULL;
+ coOrd bot, top;
+ BOOL_T first = TRUE;
+ while ( TrackIterate( &trk ) ) {
+ if(GetTrkSelected(trk)) {
+ coOrd hi, lo;
+ GetBoundingBox(trk,&hi,&lo);
+ if (first) {
+ first = FALSE;
+ bot = lo;
+ top = hi;
+ } else {
+ if (lo.x < bot.x) { bot.x = lo.x; }
+ if (lo.y < bot.y) { bot.y = lo.y; }
+ if (hi.x > top.x) { top.x = hi.x; }
+ if (hi.y > top.y) { top.y = hi.y; }
+ }
}
+ }
panCenter.x = (top.x/2)+(bot.x)/2;
panCenter.y = (top.y/2)+(bot.y)/2;
PanHere(I2VP(1));
@@ -2238,13 +2455,15 @@ EXPORT void DoZoomExtents( void * mode) {
}
- if (scale_x<scale_y)
+ if (scale_x<scale_y) {
scale_x = scale_y;
+ }
scale_x = ceil(scale_x);
- if (scale_x < 1) scale_x = 1;
- if (scale_x > MAX_MAIN_SCALE) scale_x = MAX_MAIN_SCALE;
- if (1 != (intptr_t)1)
+ if (scale_x < 1) { scale_x = 1; }
+ if (scale_x > MAX_MAIN_SCALE) { scale_x = MAX_MAIN_SCALE; }
+ if (1 != (intptr_t)1) {
mainD.orig = zero;
+ }
DoNewScale(scale_x);
MainLayout(TRUE,TRUE);
@@ -2261,31 +2480,34 @@ EXPORT void DoZoomDown( void * mode)
{
long newScale;
int i;
-
+
LOG( log_zoom, 2, ( "DoZoomDown KS:%x\n", MyGetKeyState() ) );
if ( mode != NULL || (MyGetKeyState()&WKEY_SHIFT) == 0 ) {
i = ScaleInx( mainD.scale );
- if (i < 0) i = NearestScaleInx(mainD.scale, TRUE);
- if( i>= 0 && i < ( COUNT( zoomList ) - 1 )) {
+ if (i < 0) { i = NearestScaleInx(mainD.scale, TRUE); }
+ if( i >= 0 && i < ( COUNT( zoomList ) - 1 )) {
InfoMessage("");
DoNewScale( zoomList[ i + 1 ].value );
- } else
+ } else {
InfoMessage(_("At Maximum Zoom Out"));
-
-
+ }
+
+
} else if ( (MyGetKeyState()&WKEY_CTRL) == 0 ) {
wPrefGetInteger( "misc", "zoomout", &newScale, 16 );
- InfoMessage(_("Preset Zoom Out Value selected. Shift+Ctrl+PageUp to reset value"));
+ InfoMessage(
+ _("Preset Zoom Out Value selected. Shift+Ctrl+PageUp to reset value"));
DoNewScale( newScale );
} else {
wPrefSetInteger( "misc", "zoomout", (long)mainD.scale );
- InfoMessage( _("Zoom Out Program Value %ld:1 set, Shift+PageUp to use"), (long)mainD.scale );
+ InfoMessage( _("Zoom Out Program Value %ld:1 set, Shift+PageUp to use"),
+ (long)mainD.scale );
}
}
/**
- * Zoom to user selected value. This is the callback function for the
- * user-selectable preset zoom values.
+ * Zoom to user selected value. This is the callback function for the
+ * user-selectable preset zoom values.
*
* \param IN scale current pScale
*
@@ -2295,26 +2517,27 @@ static void DoZoom( void * pScaleVP )
DIST_T *pScale = pScaleVP;
DIST_T scale = *pScale;
- if( scale != mainD.scale )
+ if( scale != mainD.scale ) {
DoNewScale( scale );
+ }
}
EXPORT void Pix2CoOrd(
- drawCmd_p d,
- wDrawPix_t x,
- wDrawPix_t y,
- coOrd * pos )
+ drawCmd_p d,
+ wDrawPix_t x,
+ wDrawPix_t y,
+ coOrd * pos )
{
pos->x = (((DIST_T)x)/d->dpi)*d->scale+d->orig.x;
pos->y = (((DIST_T)y)/d->dpi)*d->scale+d->orig.y;
}
EXPORT void CoOrd2Pix(
- drawCmd_p d,
- coOrd pos,
- wDrawPix_t * x,
- wDrawPix_t * y )
+ drawCmd_p d,
+ coOrd pos,
+ wDrawPix_t * x,
+ wDrawPix_t * y )
{
*x = (wDrawPix_t)((pos.x-d->orig.x)/d->scale*d->dpi);
*y = (wDrawPix_t)((pos.y-d->orig.y)/d->scale*d->dpi);
@@ -2330,20 +2553,24 @@ EXPORT void CoOrd2Pix(
* - 2: same as 0, plus liveMap
* - 3: Take position from menuPos
*/
-EXPORT void PanHere(void * mode) {
+EXPORT void PanHere(void * mode)
+{
if ( 3 == VP2L(mode ) ) {
panCenter = menuPos;
- LOG( log_pan, 2, ( "MCenter:Mod-%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
+ LOG( log_pan, 2, ( "MCenter:Mod-%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
+ }
+ wBool_t bLiveMap = TRUE;
+ if ( 2 == VP2L(mode) ) {
+ bLiveMap = liveMap;
}
mainD.orig.x = panCenter.x - mainD.size.x/2.0;
mainD.orig.y = panCenter.y - mainD.size.y/2.0;
wBool_t bNoBorder = (constrainMain != 0);
if ( 1 != VP2L(mode) )
- if ( (MyGetKeyState()&WKEY_CTRL)!= 0 )
+ if ( (MyGetKeyState()&WKEY_CTRL)!= 0 ) {
bNoBorder = !bNoBorder;
- wBool_t bLiveMap = TRUE;
- if ( 2 == VP2L(mode) )
- bLiveMap = liveMap;
+ }
MainLayout( bLiveMap, bNoBorder ); // PanHere
}
@@ -2365,44 +2592,52 @@ static int DoPanKeyAction( wAction_t action )
case wAccelKey_Right:
panCenter.x = mainD.orig.x + mainD.size.x/2;
panCenter.y = mainD.orig.y + mainD.size.y/2;
- if ((MyGetKeyState() & WKEY_SHIFT) != 0)
- panCenter.x += 0.25*mainD.scale; //~1cm in 1::1, 1ft in 30:1, 1mm in 10:1
- else
+ if ((MyGetKeyState() & WKEY_SHIFT) != 0) {
+ panCenter.x += 0.25*mainD.scale; //~1cm in 1::1, 1ft in 30:1, 1mm in 10:1
+ } else {
panCenter.x += mainD.size.x/2;
- LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
+ }
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
PanHere(I2VP(0));
break;
case wAccelKey_Left:
panCenter.x = mainD.orig.x + mainD.size.x/2;
panCenter.y = mainD.orig.y + mainD.size.y/2;
- if ((MyGetKeyState() & WKEY_SHIFT) != 0)
+ if ((MyGetKeyState() & WKEY_SHIFT) != 0) {
panCenter.x -= 0.25*mainD.scale;
- else
+ } else {
panCenter.x -= mainD.size.x/2;
- LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
+ }
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
PanHere(I2VP(0));
break;
case wAccelKey_Up:
panCenter.x = mainD.orig.x + mainD.size.x/2;
panCenter.y = mainD.orig.y + mainD.size.y/2;
- if ((MyGetKeyState() & WKEY_SHIFT) != 0)
+ if ((MyGetKeyState() & WKEY_SHIFT) != 0) {
panCenter.y += 0.25*mainD.scale;
- else
+ } else {
panCenter.y += mainD.size.y/2;
- LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
+ }
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
PanHere(I2VP(0));
break;
case wAccelKey_Down:
panCenter.x = mainD.orig.x + mainD.size.x/2;
panCenter.y = mainD.orig.y + mainD.size.y/2;
- if ((MyGetKeyState() & WKEY_SHIFT) != 0)
+ if ((MyGetKeyState() & WKEY_SHIFT) != 0) {
panCenter.y -= 0.25*mainD.scale;
- else
+ } else {
panCenter.y -= mainD.size.y/2;
- LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
+ }
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
PanHere(I2VP(0));
break;
@@ -2424,63 +2659,77 @@ static void DoMapPan( wAction_t action, coOrd pos )
switch (action & 0xFF) {
case C_DOWN:
- if ( mode == noPan )
+ if ( mode == noPan ) {
mode = movePan;
- else
+ } else {
break;
+ }
case C_MOVE:
- if ( mode != movePan )
+ if ( mode != movePan ) {
break;
+ }
// mainD.orig.x = pos.x - mainD.size.x/2.0;
// mainD.orig.y = pos.y - mainD.size.y/2.0;
panCenter = pos;
-LOG( log_pan, 1, ( "%s = [ %0.3f, %0.3f ]\n", action == C_DOWN? "START":"MOVE", mainD.orig.x, mainD.orig.y ) )
+ LOG( log_pan, 1, ( "%s = [ %0.3f, %0.3f ]\n", action == C_DOWN? "START":"MOVE",
+ mainD.orig.x, mainD.orig.y ) )
PanHere( I2VP(2));
break;
case C_UP:
- if ( mode != movePan )
+ if ( mode != movePan ) {
break;
+ }
panCenter = pos;
PanHere( I2VP(0));
-LOG( log_pan, 1, ( "FINAL = [ %0.3f, %0.3f ]\n", mainD.orig.x, mainD.orig.y ) )
+ LOG( log_pan, 1, ( "FINAL = [ %0.3f, %0.3f ]\n", mainD.orig.x, mainD.orig.y ) )
mode = noPan;
break;
case C_RDOWN:
- if ( mode == noPan )
+ if ( mode == noPan ) {
mode = resizePan;
- else
+ } else {
break;
+ }
mapOrig = pos;
size.x = mainD.size.x/mainD.scale; //How big screen?
size.y = mainD.size.y/mainD.scale;
xscale = mainD.scale; //start at current
panCenter = pos;
-LOG( log_pan, 1, ( "START %0.3fx%0.3f %0.3f+%0.3f\n", mapOrig.x, mapOrig.y, size.x, size.y ) )
+ LOG( log_pan, 1, ( "START %0.3fx%0.3f %0.3f+%0.3f\n", mapOrig.x, mapOrig.y,
+ size.x, size.y ) )
break;
case C_RMOVE:
- if ( mode != resizePan )
+ if ( mode != resizePan ) {
break;
- if (pos.x < 0)
+ }
+ if (pos.x < 0) {
pos.x = 0;
- if (pos.x > mapD.size.x)
+ }
+ if (pos.x > mapD.size.x) {
pos.x = mapD.size.x;
- if (pos.y < 0)
+ }
+ if (pos.y < 0) {
pos.y = 0;
- if (pos.y > mapD.size.y)
+ }
+ if (pos.y > mapD.size.y) {
pos.y = mapD.size.y;
+ }
xscale = fabs((pos.x-mapOrig.x)*2.0/size.x);
yscale = fabs((pos.y-mapOrig.y)*2.0/size.y);
- if (xscale < yscale)
+ if (xscale < yscale) {
xscale = yscale;
+ }
xscale = ceil( xscale );
- if (xscale < 0.01)
+ if (xscale < 0.01) {
xscale = 0.01;
- if (xscale > 64)
+ }
+ if (xscale > 64) {
xscale = 64;
+ }
mainD.size.x = size.x * xscale;
mainD.size.y = size.y * xscale;
@@ -2488,13 +2737,15 @@ LOG( log_pan, 1, ( "START %0.3fx%0.3f %0.3f+%0.3f\n", mapOrig.x, mapOrig.y, size
mainD.orig.y = mapOrig.y - mainD.size.y / 2.0;
tempD.scale = mainD.scale = xscale;
PanHere( I2VP(2));
-LOG( log_pan, 1, ( "MOVE SCL:%0.3f %0.3fx%0.3f %0.3f+%0.3f\n", xscale, mainD.orig.x, mainD.orig.y, mainD.size.x, mainD.size.y ) )
+ LOG( log_pan, 1, ( "MOVE SCL:%0.3f %0.3fx%0.3f %0.3f+%0.3f\n", xscale,
+ mainD.orig.x, mainD.orig.y, mainD.size.x, mainD.size.y ) )
InfoScale();
- break;
+ break;
case C_RUP:
- if ( mode != resizePan )
+ if ( mode != resizePan ) {
break;
+ }
DoNewScale( xscale );
mode = noPan;
break;
@@ -2515,13 +2766,12 @@ LOG( log_pan, 1, ( "MOVE SCL:%0.3f %0.3fx%0.3f %0.3f+%0.3f\n", xscale, mainD.ori
/*
* IsClose
* is distance smaller than 10 pixels at 72 DPI?
+* is distance smaller than 0.1" at 1:1?
*/
EXPORT BOOL_T IsClose(
- DIST_T d )
+ DIST_T d )
{
- wDrawPix_t pd;
- pd = (wDrawPix_t)(d/mainD.scale * mainD.dpi);
- return pd <= closePixels;
+ return d <= closeDist*mainD.scale;
}
/*****************************************************************************
@@ -2548,7 +2798,7 @@ EXPORT void FakeDownMouseState( void )
*
* \param x OUT pointer x position
* \param y OUT pointer y position
- * \return
+ * \return
*/
void
@@ -2560,7 +2810,8 @@ GetMousePosition( wDrawPix_t *x, wDrawPix_t *y )
}
}
-coOrd minIncrementSizes() {
+coOrd minIncrementSizes()
+{
double x,y;
if (mainD.scale >= 1.0) {
if (units == UNITS_ENGLISH) {
@@ -2572,11 +2823,11 @@ coOrd minIncrementSizes() {
}
} else {
if (units == UNITS_ENGLISH) {
- x = 1/64; //<1:1 = 1/64 inch
- y = 1/64;
+ x = 1.0/64.0; //<1:1 = 1/64 inch
+ y = 1.0/64.0;
} else {
- x = 1/(25.4*2); //>1:1 = 0.5 mm
- y = 1/(25.4*2);
+ x = 1.0/(25.4*2); //>1:1 = 0.5 mm
+ y = 1.0/(25.4*2);
}
}
coOrd ret;
@@ -2591,8 +2842,12 @@ static void DoMouse( wAction_t action, coOrd pos )
BOOL_T rc;
wDrawPix_t x, y;
static BOOL_T ignoreCommands;
+ // Middle button pan state
+ static BOOL_T panActive = FALSE;
+ static coOrd panOrigin, panStart;
- LOG( log_mouse, 2, ( "DoMouse( %d, %0.3f, %0.3f )\n", action, pos.x, pos.y ) )
+ LOG( log_mouse, (action == wActionMove)?2:1,
+ ( "DoMouse( %d, %0.3f, %0.3f )\n", action, pos.x, pos.y ) )
if (recordF) {
RecordMouse( "MOUSE", action, pos.x, pos.y );
@@ -2602,8 +2857,9 @@ static void DoMouse( wAction_t action, coOrd pos )
switch (action&0xFF) {
case C_UP:
- if (mouseState != mouseLeft)
+ if (mouseState != mouseLeft) {
return;
+ }
if (ignoreCommands) {
ignoreCommands = FALSE;
return;
@@ -2611,29 +2867,43 @@ static void DoMouse( wAction_t action, coOrd pos )
mouseState = mouseNone;
break;
case C_RUP:
- if (mouseState != mouseRight)
+ if (mouseState != mouseRight) {
return;
+ }
if (ignoreCommands) {
ignoreCommands = FALSE;
return;
}
mouseState = mouseNone;
break;
+ case C_MUP:
+ if ( !panActive ) {
+ return;
+ }
+ if (ignoreCommands) {
+ ignoreCommands = FALSE;
+ return;
+ }
+ break;
case C_MOVE:
if (mouseState == mouseLeftPending ) {
action = C_DOWN;
mouseState = mouseLeft;
}
- if (mouseState != mouseLeft)
+ if (mouseState != mouseLeft) {
+ return;
+ }
+ if (ignoreCommands) {
return;
- if (ignoreCommands)
- return;
+ }
break;
case C_RMOVE:
- if (mouseState != mouseRight)
+ if (mouseState != mouseRight) {
+ return;
+ }
+ if (ignoreCommands) {
return;
- if (ignoreCommands)
- return;
+ }
break;
case C_DOWN:
mouseState = mouseLeft;
@@ -2641,11 +2911,19 @@ static void DoMouse( wAction_t action, coOrd pos )
case C_RDOWN:
mouseState = mouseRight;
break;
+ case C_MDOWN:
+ // Set up state for Middle button pan
+ panActive = TRUE;
+ panOrigin = panCenter;
+ panStart.x = pos.x-mainD.orig.x;
+ panStart.y = pos.y-mainD.orig.y;
+ break;
}
inError = FALSE;
- if ( deferSubstituteControls[0] )
+ if ( deferSubstituteControls[0] ) {
InfoSubstituteControls( deferSubstituteControls, deferSubstituteLabels );
+ }
// panCenter.y = mainD.orig.y + mainD.size.y/2;
// panCenter.x = mainD.orig.x + mainD.size.x/2;
@@ -2654,105 +2932,131 @@ static void DoMouse( wAction_t action, coOrd pos )
coOrd min = minIncrementSizes();
switch ( action&0xFF ) {
- case C_DOWN:
- case C_RDOWN:
- tempSegs_da.cnt = 0;
- break;
- case wActionMove:
- InfoPos( pos );
- if ( ignoreMoves )
- return;
- break;
- case wActionExtKey:
- mainD.CoOrd2Pix(&mainD,pos,&x,&y);
- if ((MyGetKeyState() &
- (WKEY_SHIFT | WKEY_CTRL)) == (WKEY_SHIFT | WKEY_CTRL) &&
- ( action>>8 == wAccelKey_Up ||
- action>>8 == wAccelKey_Down ||
- action>>8 == wAccelKey_Left ||
- action>>8 == wAccelKey_Right ))
- break; //Allow SHIFT+CTRL for Move
- if (((action>>8)&0xFF) == wAccelKey_LineFeed) {
- action = C_TEXT+((int)(0x0A<<8));
- break;
- }
- int rc = DoPanKeyAction(action);
- if (rc!=1) return;
- break;
- case C_TEXT:
- if ((action>>8) == 0x0D) {
- action = C_OK;
- } else if ((action>>8) == 0x1B) {
- ConfirmReset( TRUE );
- return;
- }
- /*no break */
- case C_MODKEY:
- case C_MOVE:
- case C_UP:
- case C_RMOVE:
- case C_RUP:
- case C_LDOUBLE:
- InfoPos( pos );
- /*DrawTempTrack();*/
- break;
- case C_WUP:
- DoZoomUp(I2VP(1L));
- break;
- case C_WDOWN:
- DoZoomDown(I2VP(1L));
- break;
- case C_SCROLLUP:
- panCenter.y = panCenter.y + ((mainD.size.y/20>min.y)?mainD.size.y/20:min.y);
- LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
- PanHere(I2VP(1));
- break;
- case C_SCROLLDOWN:
- panCenter.y = panCenter.y - ((mainD.size.y/20>min.y)?mainD.size.y/20:min.y);
- LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
- PanHere(I2VP(1));
- break;
- case C_SCROLLLEFT:
- panCenter.x = panCenter.x - ((mainD.size.x/20>min.x)?mainD.size.x/20:min.x);
- LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
- PanHere(I2VP(1));
- break;
- case C_SCROLLRIGHT:
- panCenter.x = panCenter.x + ((mainD.size.x/20>min.x)?mainD.size.x/20:min.x);
- LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
- PanHere(I2VP(1));
- break;
- default:
- NoticeMessage( MSG_DOMOUSE_BAD_OP, _("Ok"), NULL, action&0xFF );
- break;
+ case C_DOWN:
+ case C_RDOWN:
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ break;
+ case C_MDOWN:
+ break;
+ case wActionMove:
+ InfoPos( pos );
+ if ( ignoreMoves ) {
+ return;
}
- if (delayUpdate)
- wDrawDelayUpdate( mainD.d, TRUE );
- rc = DoCurCommand( action, pos );
- wDrawDelayUpdate( mainD.d, FALSE );
- switch( rc ) {
- case C_CONTINUE:
- /*DrawTempTrack();*/
- break;
- case C_ERROR:
- ignoreCommands = TRUE;
- inError = TRUE;
- Reset();
- LOG( log_mouse, 1, ( "Mouse returns Error\n" ) )
- break;
- case C_TERMINATE:
- Reset();
- DoCurCommand( C_START, zero );
+ break;
+ case wActionExtKey:
+ mainD.CoOrd2Pix(&mainD,pos,&x,&y);
+ if ((MyGetKeyState() &
+ (WKEY_SHIFT | WKEY_CTRL)) == (WKEY_SHIFT | WKEY_CTRL) &&
+ ( action>>8 == wAccelKey_Up ||
+ action>>8 == wAccelKey_Down ||
+ action>>8 == wAccelKey_Left ||
+ action>>8 == wAccelKey_Right )) {
+ break; //Allow SHIFT+CTRL for Move
+ }
+ if (((action>>8)&0xFF) == wAccelKey_LineFeed) {
+ action = C_TEXT+((int)(0x0A<<8));
break;
- case C_INFO:
- Reset();
+ }
+ int rc = DoPanKeyAction(action);
+ if (rc!=1) { return; }
+ break;
+ case C_TEXT:
+ if ((action>>8) == 0x0D) {
+ action = C_OK;
+ } else if ((action>>8) == 0x1B) {
+ ConfirmReset( TRUE );
+ return;
+ }
+ /*no break */
+ case C_MODKEY:
+ case C_MOVE:
+ case C_UP:
+ case C_RMOVE:
+ case C_RUP:
+ case C_LDOUBLE:
+ case C_MUP:
+ InfoPos( pos );
+ /*DrawTempTrack();*/
+ break;
+ case C_WUP:
+ DoZoomUp(I2VP(1L));
+ break;
+ case C_WDOWN:
+ DoZoomDown(I2VP(1L));
+ break;
+ case C_SCROLLUP:
+ panCenter.y = panCenter.y + ((mainD.size.y/20>min.y)?mainD.size.y/20:min.y);
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
+ PanHere(I2VP(1));
+ break;
+ case C_SCROLLDOWN:
+ panCenter.y = panCenter.y - ((mainD.size.y/20>min.y)?mainD.size.y/20:min.y);
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
+ PanHere(I2VP(1));
+ break;
+ case C_SCROLLLEFT:
+ panCenter.x = panCenter.x - ((mainD.size.x/20>min.x)?mainD.size.x/20:min.x);
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
+ PanHere(I2VP(1));
+ break;
+ case C_SCROLLRIGHT:
+ panCenter.x = panCenter.x + ((mainD.size.x/20>min.x)?mainD.size.x/20:min.x);
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
+ PanHere(I2VP(1));
+ break;
+ case C_MMOVE:
+ // Middle button pan
+ if ( !panActive ) {
break;
}
+ panCenter.x = panOrigin.x + (panStart.x - ( pos.x - mainD.orig.x ) );
+ panCenter.y = panOrigin.y + (panStart.y - ( pos.y - mainD.orig.y ) );
+ if ( panCenter.x < 0 ) { panCenter.x = 0; }
+ if ( panCenter.x > mapD.size.x ) { panCenter.x = mapD.size.x; }
+ if ( panCenter.y < 0 ) { panCenter.y = 0; }
+ if ( panCenter.y > mapD.size.y ) { panCenter.y = mapD.size.y; }
+ LOG( log_pan, 1, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__,
+ panCenter.x, panCenter.y ) );
+ PanHere(I2VP(1));
+ break;
+ default:
+ NoticeMessage( MSG_DOMOUSE_BAD_OP, _("Ok"), NULL, action&0xFF );
+ break;
+ }
+ if (delayUpdate) {
+ wDrawDelayUpdate( mainD.d, TRUE );
+ }
+ rc = DoCurCommand( action, pos );
+ wDrawDelayUpdate( mainD.d, FALSE );
+ switch( rc ) {
+ case C_CONTINUE:
+ /*DrawTempTrack();*/
+ break;
+ case C_ERROR:
+ ignoreCommands = TRUE;
+ inError = TRUE;
+ Reset();
+ LOG( log_mouse, 1, ( "Mouse returns Error\n" ) )
+ break;
+ case C_TERMINATE:
+ Reset();
+ DoCurCommand( C_START, zero );
+ break;
+ case C_INFO:
+ Reset();
+ break;
+ }
}
wDrawPix_t autoPanFactor = 10;
-static void DoMousew( wDraw_p d, void * context, wAction_t action, wDrawPix_t x, wDrawPix_t y )
+static void DoMousew( wDraw_p d, void * context, wAction_t action, wDrawPix_t x,
+ wDrawPix_t y )
{
coOrd pos;
coOrd orig;
@@ -2761,8 +3065,9 @@ static void DoMousew( wDraw_p d, void * context, wAction_t action, wDrawPix_t x,
DIST_T minDist;
wDrawGetSize( mainD.d, &w, &h );
if ( autoPan && !inPlayback ) {
- if ( action == wActionLDown || action == wActionRDown ||
- (action == wActionLDrag && mouseState == mouseLeftPending ) /*||
+ if ( action == wActionLDown || action == wActionRDown
+ || action == wActionScrollDown ||
+ (action == wActionLDrag && mouseState == mouseLeftPending ) /*||
(action == wActionRDrag && mouseState == mouseRightPending ) */ ) {
lastX = x;
lastY = y;
@@ -2770,39 +3075,45 @@ static void DoMousew( wDraw_p d, void * context, wAction_t action, wDrawPix_t x,
if ( action == wActionLDrag || action == wActionRDrag ) {
orig = mainD.orig;
if ( ( x < 10 && x < lastX ) ||
- ( x > w-10 && x > lastX ) ||
- ( y < 10 && y < lastY ) ||
- ( y > h-10 && y > lastY ) ) {
+ ( x > w-10 && x > lastX ) ||
+ ( y < 10 && y < lastY ) ||
+ ( y > h-10 && y > lastY ) ) {
mainD.Pix2CoOrd( &mainD, x, y, &pos );
- orig.x = mainD.orig.x + (pos.x - (mainD.orig.x + mainD.size.x/2.0) )/autoPanFactor;
- orig.y = mainD.orig.y + (pos.y - (mainD.orig.y + mainD.size.y/2.0) )/autoPanFactor;
+ orig.x = mainD.orig.x + (pos.x - (mainD.orig.x +
+ mainD.size.x/2.0) )/autoPanFactor;
+ orig.y = mainD.orig.y + (pos.y - (mainD.orig.y +
+ mainD.size.y/2.0) )/autoPanFactor;
if ( orig.x != mainD.orig.x || orig.y != mainD.orig.y ) {
if ( mainD.scale >= 1 ) {
- if ( units == UNITS_ENGLISH )
+ if ( units == UNITS_ENGLISH ) {
minDist = 1.0;
- else
+ } else {
minDist = 1.0/2.54;
+ }
if ( orig.x != mainD.orig.x ) {
if ( fabs( orig.x-mainD.orig.x ) < minDist ) {
- if ( orig.x < mainD.orig.x )
+ if ( orig.x < mainD.orig.x ) {
orig.x -= minDist;
- else
+ } else {
orig.x += minDist;
+ }
}
}
if ( orig.y != mainD.orig.y ) {
if ( fabs( orig.y-mainD.orig.y ) < minDist ) {
- if ( orig.y < mainD.orig.y )
+ if ( orig.y < mainD.orig.y ) {
orig.y -= minDist;
- else
+ } else {
orig.y += minDist;
+ }
}
}
}
mainD.orig = orig;
panCenter.x = mainD.orig.x + mainD.size.x/2.0;
panCenter.y = mainD.orig.y + mainD.size.y/2.0;
- LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
MainLayout( TRUE, TRUE ); // DoMouseW: autopan
tempD.orig = mainD.orig;
wFlush();
@@ -2822,6 +3133,7 @@ static void DoMousew( wDraw_p d, void * context, wAction_t action, wDrawPix_t x,
case wActionRDrag:
case wActionRUp:
case wActionLDownDouble:
+ case wActionMDrag:
mousePositionx = x;
mousePositiony = y;
break;
@@ -2844,7 +3156,8 @@ static wBool_t PlaybackMain( char * line )
SetCLocale();
- rc=sscanf( line, "%d " SCANF_FLOAT_FORMAT SCANF_FLOAT_FORMAT, &action, &pos.x, &pos.y);
+ rc=sscanf( line, "%d " SCANF_FLOAT_FORMAT SCANF_FLOAT_FORMAT, &action, &pos.x,
+ &pos.y);
SetUserLocale();
if (rc != 3) {
@@ -2863,7 +3176,8 @@ static wBool_t PlaybackKey( char * line )
int c;
SetCLocale();
- rc=sscanf( line, "%d " SCANF_FLOAT_FORMAT SCANF_FLOAT_FORMAT, &c, &pos.x, &pos.y );
+ rc=sscanf( line, "%d " SCANF_FLOAT_FORMAT SCANF_FLOAT_FORMAT, &c, &pos.x,
+ &pos.y );
SetUserLocale();
if (rc != 3) {
@@ -2881,92 +3195,108 @@ static wBool_t PlaybackKey( char * line )
*
*/
-static paramDrawData_t mapDrawData = { 100, 100, MapRedraw, DoMapPan, &mapD };
+static paramDrawData_t mapDrawData = { 50, 50, MapRedraw, DoMapPan, &mapD };
static paramData_t mapPLs[] = {
- { PD_DRAW, NULL, "canvas", 0, &mapDrawData } };
+ { PD_DRAW, NULL, "canvas", PDO_DLGRESIZE, &mapDrawData }
+};
static paramGroup_t mapPG = { "map", PGO_NODEFAULTPROC, mapPLs, COUNT( mapPLs ) };
-static void MapDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
-{
- wWinPix_t width,height;
- switch(inx) {
- case wResize_e:
- if (mapD.d == NULL)
- return;
- wWinGetSize( mapW, &width, &height );
- if (height >= 100) {
- wControlSetPos( (wControl_p)mapD.d, 0, 0 );
- double scaleX = (mapD.size.x/((width-DlgSepLeft-DlgSepRight-10)/mapD.dpi));
- double scaleY = (mapD.size.y/((height-DlgSepTop-DlgSepBottom-10)/mapD.dpi));
- double scale;
-
- if (scaleX<scaleY) scale = scaleX;
- else scale = scaleY;
-
- if (scale > MAX_MAIN_SCALE) scale = MAX_MAIN_SCALE;
- if (scale < MIN_MAIN_MACRO) scale = MIN_MAIN_MACRO;
-
- mapScale = (long)scale;
-
- mapD.scale = mapScale;
- ChangeMapScale(FALSE);
-
- if (mapVisible) {
- MapRedraw( mapD.d, NULL, 0, 0 );
- }
- wPrefSetInteger( "draw", "mapscale", (long)mapD.scale );
- }
- break;
- case -1:
- MapWindowShow( FALSE );
- break;
- default:
- break;
- }
-}
-
static void DrawChange( long changes )
{
if (changes & CHANGE_MAIN) {
MainLayout( TRUE, FALSE ); // DrawChange: CHANGE_MAIN
}
- if (changes &CHANGE_UNITS)
+ if (changes &CHANGE_UNITS) {
SetInfoBar();
- if (changes & CHANGE_MAP)
- MapResize();
+ }
+ if (changes & CHANGE_MAP) {
+ LOG( log_mapsize, 2, ( "CHANGE_MAP: mapD.scale=%0.3f\n", mapD.scale ) );
+ ChangeMapScale();
+ }
}
static void MainLayoutCB(
- wDraw_p bd, void * pContex, wWinPix_t px, wWinPix_t py )
+ wDraw_p bd, void * pContex, wWinPix_t px, wWinPix_t py )
{
MainLayout( TRUE, FALSE );
}
+EXPORT void InitColor( void )
+{
+ drawColorBlack = wDrawFindColor( wRGB( 0, 0, 0) );
+ drawColorWhite = wDrawFindColor( wRGB(255,255,255) );
+ drawColorRed = wDrawFindColor( wRGB(255, 0, 0) );
+ drawColorBlue = wDrawFindColor( wRGB( 0, 0,255) );
+ drawColorGreen = wDrawFindColor( wRGB( 0,255, 0) );
+ drawColorAqua = wDrawFindColor( wRGB( 0,255,255) );
+ drawColorDkRed = wDrawFindColor( wRGB(128, 0, 0) );
+ drawColorDkBlue = wDrawFindColor( wRGB( 0, 0,128) );
+ drawColorDkGreen= wDrawFindColor( wRGB( 0,128, 0) );
+ drawColorDkAqua = wDrawFindColor( wRGB( 0,128,128) );
+
+ // Last component of spectial color must be > 3
+ drawColorPreviewSelected = wDrawFindColor( wRGB ( 6, 6, 255) ); //Special Blue
+ drawColorPreviewUnselected = wDrawFindColor( wRGB( 255, 215,
+ 6)); //Special Yellow
+
+ drawColorPowderedBlue = wDrawFindColor( wRGB(129, 212, 250) );
+ drawColorPurple = wDrawFindColor( wRGB(128, 0,128) );
+ drawColorMagenta = wDrawFindColor( wRGB(255, 0, 255) );
+ drawColorGold = wDrawFindColor( wRGB(255,215, 0) );
+ drawColorGrey10 = wDrawFindColor( wRGB(26,26,26) );
+ drawColorGrey20 = wDrawFindColor( wRGB(51,51,51) );
+ drawColorGrey30 = wDrawFindColor( wRGB(72,72,72) );
+ drawColorGrey40 = wDrawFindColor( wRGB(102,102,102) );
+ drawColorGrey50 = wDrawFindColor( wRGB(128,128,128) );
+ drawColorGrey60 = wDrawFindColor( wRGB(153,153,153) );
+ drawColorGrey70 = wDrawFindColor( wRGB(179,179,179) );
+ drawColorGrey80 = wDrawFindColor( wRGB(204,204,204) );
+ drawColorGrey90 = wDrawFindColor( wRGB(230,230,230) );
+ snapGridColor = drawColorGreen;
+ markerColor = drawColorRed;
+ borderColor = drawColorBlack;
+ crossMajorColor = drawColorRed;
+ crossMinorColor = drawColorBlue;
+ selectedColor = drawColorRed;
+ normalColor = drawColorBlack;
+ elevColorIgnore = drawColorBlue;
+ elevColorDefined = drawColorGold;
+ profilePathColor = drawColorPurple;
+ exceptionColor = wDrawFindColor(wRGB(255, 89, 0 ));
+ tieColor = wDrawFindColor(wRGB(153, 89, 68));
+}
+
+
EXPORT void DrawInit( int initialZoom )
{
wWinPix_t w, h;
+ log_pan = LogFindIndex( "pan" );
+ log_zoom = LogFindIndex( "zoom" );
+ log_mouse = LogFindIndex( "mouse" );
+ log_redraw = LogFindIndex( "redraw" );
+ log_timemainredraw = LogFindIndex( "timemainredraw" );
+ log_mapsize = LogFindIndex( "mapsize" );
+// InitColor();
wWinGetSize( mainW, &w, &h );
/*LayoutToolBar();*/
h = h - (toolbarHeight+max(textHeight,infoHeight)+10);
- if ( w <= 0 ) w = 1;
- if ( h <= 0 ) h = 1;
- tempD.d = mainD.d = wDrawCreate( mainW, 0, toolbarHeight, "", BD_TICKS|BD_MODKEYS,
- w, h, &mainD,
- MainLayoutCB, DoMousew );
+ if ( w <= 0 ) { w = 1; }
+ if ( h <= 0 ) { h = 1; }
+ tempD.d = mainD.d = wDrawCreate( mainW, 0, toolbarHeight, "",
+ BD_TICKS|BD_MODKEYS,
+ w, h, &mainD,
+ MainLayoutCB, DoMousew );
if (initialZoom == 0) {
WDOUBLE_T tmpR;
wPrefGetFloat( "draw", "zoom", &tmpR, mainD.scale );
mainD.scale = tmpR;
- } else {
+ } else {
while (initialZoom > 0 && mainD.scale < MAX_MAIN_SCALE) {
mainD.scale *= 2;
initialZoom--;
@@ -2986,38 +3316,33 @@ EXPORT void DrawInit( int initialZoom )
SetMainSize();
panCenter.x = mainD.size.x/2 +mainD.orig.x;
panCenter.y = mainD.size.y/2 +mainD.orig.y;
- mapD.scale = mapScale;
/*w = (wWinPix_t)((mapD.size.x/mapD.scale)*mainD.dpi + 0.5)+2;*/
/*h = (wWinPix_t)((mapD.size.y/mapD.scale)*mainD.dpi + 0.5)+2;*/
ParamRegister( &mapPG );
- mapW = ParamCreateDialog( &mapPG, MakeWindowTitle(_("Map")), NULL, NULL, NULL, FALSE, NULL, F_RESIZE, MapDlgUpdate );
- ChangeMapScale(TRUE);
-
- log_pan = LogFindIndex( "pan" );
- log_zoom = LogFindIndex( "zoom" );
- log_mouse = LogFindIndex( "mouse" );
- log_redraw = LogFindIndex( "redraw" );
- log_timemainredraw = LogFindIndex( "timemainredraw" );
+ LOG( log_mapsize, 2, ( "DrawInit/ParamCreateDialog(&mapPG\n" ) );
+ mapW = ParamCreateDialog( &mapPG, MakeWindowTitle(_("Map")), NULL, NULL, NULL,
+ FALSE, NULL, F_RESIZE, NULL );
+ ChangeMapScale();
AddPlaybackProc( "MOUSE ", (playbackProc_p)PlaybackMain, NULL );
AddPlaybackProc( "KEY ", (playbackProc_p)PlaybackKey, NULL );
rulerFp = wStandardFont( F_HELV, FALSE, FALSE );
- SetZoomRadio( mainD.scale );
+ SetZoomRadio( mainD.scale );
InfoScale();
SetInfoBar();
InfoPos( zero );
RegisterChangeNotification( DrawChange );
}
-#include "bitmaps/pan-zoom.xpm"
+#include "bitmaps/pan-zoom.xpm3"
-EXPORT static wMenu_p panPopupM;
+static wMenu_p panPopupM;
static STATUS_T CmdPan(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
static enum { PAN, ZOOM, NONE } panmode;
@@ -3035,10 +3360,11 @@ static STATUS_T CmdPan(
switch (action&0xFF) {
case C_START:
start_pos = zero;
- panmode = NONE;
- InfoMessage(_("Left-Drag to pan, Ctrl+Left-Drag to zoom, 0 to set origin to zero, 1-9 to zoom#, e to set to extents"));
- wSetCursor(mainD.d,wCursorSizeAll);
- break;
+ panmode = NONE;
+ InfoMessage(
+ _("Left-Drag to pan, Ctrl+Left-Drag to zoom, 0 to set origin to zero, 1-9 to zoom#, e to set to extents"));
+ wSetCursor(mainD.d,wCursorSizeAll);
+ break;
case C_DOWN:
if ((MyGetKeyState()&WKEY_CTRL) == 0) {
panmode = PAN;
@@ -3055,33 +3381,36 @@ static STATUS_T CmdPan(
break;
case C_MOVE:
if (panmode == PAN) {
- double min_inc;
- if (mainD.scale >= 1.0) {
- if (units == UNITS_ENGLISH) {
- min_inc = 1/4; //>1:1 = 1/4 inch
- } else {
- min_inc = 1/(2.54*2); //>1:1 = 0.5 cm
- }
+ double min_inc;
+ if (mainD.scale >= 1.0) {
+ if (units == UNITS_ENGLISH) {
+ min_inc = 1.0/4.0; //>1:1 = 1/4 inch
} else {
- if (units == UNITS_ENGLISH) {
- min_inc = 1/64; //<1:1 = 1/64 inch
- } else {
- min_inc = 1/(25.4*2); //>1:1 = 0.5 mm
- }
+ min_inc = 1.0/(2.54*2); //>1:1 = 0.5 cm
}
- if ((fabs(pos.x-start_pos.x) > min_inc) || (fabs(pos.y-start_pos.y) > min_inc)) {
- coOrd oldOrig = mainD.orig;
- mainD.orig.x -= (pos.x - start_pos.x);
- mainD.orig.y -= (pos.y - start_pos.y);
- if ((MyGetKeyState()&WKEY_SHIFT) != 0)
- ConstraintOrig(&mainD.orig,mainD.size,TRUE,TRUE);
- if ((oldOrig.x == mainD.orig.x) && (oldOrig.y == mainD.orig.y))
- InfoMessage(_("Can't move any further in that direction"));
- else
- InfoMessage(_("Left click to pan, right click to zoom, 'o' for origin, 'e' for extents"));
+ } else {
+ if (units == UNITS_ENGLISH) {
+ min_inc = 1.0/64.0; //<1:1 = 1/64 inch
+ } else {
+ min_inc = 1.0/(25.4*2); //>1:1 = 0.5 mm
}
}
- else if (panmode == ZOOM) {
+ if ((fabs(pos.x-start_pos.x) > min_inc)
+ || (fabs(pos.y-start_pos.y) > min_inc)) {
+ coOrd oldOrig = mainD.orig;
+ mainD.orig.x -= (pos.x - start_pos.x);
+ mainD.orig.y -= (pos.y - start_pos.y);
+ if ((MyGetKeyState()&WKEY_SHIFT) != 0) {
+ ConstraintOrig(&mainD.orig,mainD.size,TRUE,TRUE);
+ }
+ if ((oldOrig.x == mainD.orig.x) && (oldOrig.y == mainD.orig.y)) {
+ InfoMessage(_("Can't move any further in that direction"));
+ } else {
+ InfoMessage(
+ _("Left click to pan, right click to zoom, 'o' for origin, 'e' for extents"));
+ }
+ }
+ } else if (panmode == ZOOM) {
base = start_pos;
size.x = pos.x - base.x;
if (size.x < 0) {
@@ -3103,32 +3432,36 @@ static STATUS_T CmdPan(
scale_x = size.x/mainD.size.x*mainD.scale;
scale_y = size.y/mainD.size.y*mainD.scale;
- if (scale_x<scale_y)
- scale_x = scale_y;
- if (scale_x>1) scale_x = ceil( scale_x );
- else scale_x = 1/(ceil(1/scale_x));
+ if (scale_x<scale_y) {
+ scale_x = scale_y;
+ }
+ if (scale_x>1) { scale_x = ceil( scale_x ); }
+ else { scale_x = 1/(ceil(1/scale_x)); }
- if (scale_x > MAX_MAIN_SCALE) scale_x = MAX_MAIN_SCALE;
- if (scale_x < MIN_MAIN_MACRO) scale_x = MIN_MAIN_MACRO;
+ if (scale_x > MAX_MAIN_SCALE) { scale_x = MAX_MAIN_SCALE; }
+ if (scale_x < MIN_MAIN_MACRO) { scale_x = MIN_MAIN_MACRO; }
mainD.orig.x = base.x;
mainD.orig.y = base.y;
panmode = NONE;
- InfoMessage(_("Left Drag to Pan, +CTRL to Zoom, 0 to set Origin to 0,0, 1-9 to Zoom#, e to set to Extent"));
+ InfoMessage(
+ _("Left Drag to Pan, +CTRL to Zoom, 0 to set Origin to 0,0, 1-9 to Zoom#, e to set to Extent"));
DoNewScale(scale_x);
break;
} else if (panmode == PAN) {
panCenter.x = mainD.orig.x + mainD.size.x/2.0;
panCenter.y = mainD.orig.y + mainD.size.y/2.0;
- LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
panmode = NONE;
}
break;
case C_REDRAW:
if (panmode == ZOOM) {
- if (base.x && base.y && size.x && size.y)
+ if (base.x && base.y && size.x && size.y) {
DrawHilight( &tempD, base, size, TRUE );
+ }
}
break;
case C_CANCEL:
@@ -3146,14 +3479,16 @@ static STATUS_T CmdPan(
mainD.orig = zero;
panCenter.x = mainD.size.x/2.0;
panCenter.y = mainD.size.y/2.0;
- LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
MainLayout( TRUE, TRUE ); // CmdPan C_TEXT '0' 'o'
} else if ((action>>8) >= '1' && (action>>8) <= '9') { //"1" to "9"
scale_x = (action>>8)&0x0F;
DoNewScale(scale_x);
} else if ((action>>8) == 'c') { // "c"
panCenter = pos;
- LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
PanHere( I2VP(0)); // CmdPan C_TEXT 'c'
}
@@ -3175,7 +3510,8 @@ static STATUS_T CmdPan(
return C_CONTINUE;
}
static wMenuPush_p zoomExtents,panOrig,panHere;
-static wMenuPush_p zoomLvl1,zoomLvl2,zoomLvl3,zoomLvl4,zoomLvl5,zoomLvl6,zoomLvl7,zoomLvl8,zoomLvl9;
+static wMenuPush_p zoomLvl1,zoomLvl2,zoomLvl3,zoomLvl4,zoomLvl5,zoomLvl6,
+ zoomLvl7,zoomLvl8,zoomLvl9;
EXPORT void PanMenuEnter( void * keyVP )
{
@@ -3186,35 +3522,47 @@ EXPORT void PanMenuEnter( void * keyVP )
CmdPan(action,zero);
}
-extern wIndex_t selectCmdInx;
-extern wIndex_t describeCmdInx;
-extern wIndex_t joinCmdInx;
-extern wIndex_t modifyCmdInx;
EXPORT void InitCmdPan( wMenu_p menu )
{
- panCmdInx = AddMenuButton( menu, CmdPan, "cmdPan", _("Pan/Zoom"), wIconCreatePixMap(pan_zoom_xpm[iconSize]),
- LEVEL0, IC_CANCEL|IC_POPUP|IC_LCLICK|IC_CMDMENU, ACCL_PAN, NULL );
+ panCmdInx = AddMenuButton( menu, CmdPan, "cmdPan", _("Pan/Zoom"),
+ wIconCreatePixMap(pan_zoom_xpm3[iconSize]),
+ LEVEL0, IC_CANCEL|IC_POPUP|IC_LCLICK|IC_CMDMENU, ACCL_PAN, NULL );
}
EXPORT void InitCmdPan2( wMenu_p menu )
{
panPopupM = MenuRegister( "Pan Options" );
- wMenuPushCreate(panPopupM, "cmdSelectMode", GetBalloonHelpStr("cmdSelectMode"), 0, DoCommandB, I2VP(selectCmdInx));
- wMenuPushCreate(panPopupM, "cmdDescribeMode", GetBalloonHelpStr("cmdDescribeMode"), 0, DoCommandB, I2VP(describeCmdInx));
- wMenuPushCreate(panPopupM, "cmdModifyMode", GetBalloonHelpStr("cmdModifyMode"), 0, DoCommandB, I2VP(modifyCmdInx));
+ wMenuPushCreate(panPopupM, "cmdSelectMode", GetBalloonHelpStr("cmdSelectMode"),
+ 0, DoCommandB, I2VP(selectCmdInx));
+ wMenuPushCreate(panPopupM, "cmdDescribeMode",
+ GetBalloonHelpStr("cmdDescribeMode"), 0, DoCommandB, I2VP(describeCmdInx));
+ wMenuPushCreate(panPopupM, "cmdModifyMode", GetBalloonHelpStr("cmdModifyMode"),
+ 0, DoCommandB, I2VP(modifyCmdInx));
wMenuSeparatorCreate(panPopupM);
- zoomExtents = wMenuPushCreate( panPopupM, "", _("Zoom to extents - 'e'"), 0, PanMenuEnter, I2VP( 'e'));
- zoomLvl1 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:1 - '1'"), 0, PanMenuEnter, I2VP( '1'));
- zoomLvl2 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:2 - '2'"), 0, PanMenuEnter, I2VP( '2'));
- zoomLvl3 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:3 - '3'"), 0, PanMenuEnter, I2VP( '3'));
- zoomLvl4 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:4 - '4'"), 0, PanMenuEnter, I2VP( '4'));
- zoomLvl5 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:5 - '5'"), 0, PanMenuEnter, I2VP( '5'));
- zoomLvl6 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:6 - '6'"), 0, PanMenuEnter, I2VP( '6'));
- zoomLvl7 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:7 - '7'"), 0, PanMenuEnter, I2VP( '7'));
- zoomLvl8 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:8 - '8'"), 0, PanMenuEnter, I2VP( '8'));
- zoomLvl9 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:9 - '9'"), 0, PanMenuEnter, I2VP( '9'));
- panOrig = wMenuPushCreate( panPopupM, "", _("Pan to Origin - 'o'/'0'"), 0, PanMenuEnter, I2VP( 'o'));
+ zoomExtents = wMenuPushCreate( panPopupM, "", _("Zoom to extents - 'e'"), 0,
+ PanMenuEnter, I2VP( 'e'));
+ zoomLvl1 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:1 - '1'"), 0,
+ PanMenuEnter, I2VP( '1'));
+ zoomLvl2 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:2 - '2'"), 0,
+ PanMenuEnter, I2VP( '2'));
+ zoomLvl3 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:3 - '3'"), 0,
+ PanMenuEnter, I2VP( '3'));
+ zoomLvl4 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:4 - '4'"), 0,
+ PanMenuEnter, I2VP( '4'));
+ zoomLvl5 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:5 - '5'"), 0,
+ PanMenuEnter, I2VP( '5'));
+ zoomLvl6 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:6 - '6'"), 0,
+ PanMenuEnter, I2VP( '6'));
+ zoomLvl7 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:7 - '7'"), 0,
+ PanMenuEnter, I2VP( '7'));
+ zoomLvl8 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:8 - '8'"), 0,
+ PanMenuEnter, I2VP( '8'));
+ zoomLvl9 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:9 - '9'"), 0,
+ PanMenuEnter, I2VP( '9'));
+ panOrig = wMenuPushCreate( panPopupM, "", _("Pan to Origin - 'o'/'0'"), 0,
+ PanMenuEnter, I2VP( 'o'));
wMenu_p zoomPanM = wMenuMenuCreate(panPopupM, "", _("&Zoom"));
InitCmdZoom(NULL, NULL, NULL, zoomPanM);
- panHere = wMenuPushCreate( panPopupM, "", _("Pan center here - 'c'"), 0, PanHere, I2VP( 3));
+ panHere = wMenuPushCreate( panPopupM, "", _("Pan center here - 'c'"), 0,
+ PanHere, I2VP( 3));
}
diff --git a/app/bin/draw.h b/app/bin/draw.h
index 4942b8d..0ddf547 100644
--- a/app/bin/draw.h
+++ b/app/bin/draw.h
@@ -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
*/
#ifndef DRAW_H
@@ -44,6 +44,8 @@
#define DC_TEMP (1<<6)
// OUTLINE: use outline font
#define DC_OUTLINE (1<<7)
+// Round pixel pos for performance
+#define DC_ROUND (1<<8)
// Line styles
#define DC_THICK (1<<9)
@@ -64,44 +66,48 @@
typedef enum { DRAW_OPEN, DRAW_CLOSED, DRAW_FILL, DRAW_TRANSPARENT } drawFill_e;
+struct drawCmd_t;
typedef struct drawCmd_t * drawCmd_p;
typedef struct {
- void (*drawLine)(drawCmd_p, coOrd, coOrd, wDrawWidth, wDrawColor);
- void (*drawArc)(drawCmd_p, coOrd, DIST_T, ANGLE_T, ANGLE_T, BOOL_T, wDrawWidth,
- wDrawColor);
- void (*drawString)(drawCmd_p, coOrd, ANGLE_T, char *, wFont_p, FONTSIZE_T,
- wDrawColor);
- void (*drawBitMap)(drawCmd_p, coOrd, wDrawBitMap_p, wDrawColor);
- void (*drawPoly)(drawCmd_p, int, coOrd *, int *, wDrawColor, wDrawWidth, drawFill_e);
- void (*drawFillCircle)(drawCmd_p, coOrd, DIST_T, wDrawColor);
- void (*drawRectangle)(drawCmd_p, coOrd, coOrd, wDrawColor, drawFill_e);
+ void (*drawLine)(drawCmd_p, coOrd, coOrd, wDrawWidth, wDrawColor);
+ void (*drawArc)(drawCmd_p, coOrd, DIST_T, ANGLE_T, ANGLE_T, BOOL_T, wDrawWidth,
+ wDrawColor);
+ void (*drawString)(drawCmd_p, coOrd, ANGLE_T, char *, wFont_p, FONTSIZE_T,
+ wDrawColor);
+ void (*drawBitMap)(drawCmd_p, coOrd, wDrawBitMap_p, wDrawColor);
+ void (*drawPoly)(drawCmd_p, int, coOrd *, int *, wDrawColor, wDrawWidth,
+ drawFill_e);
+ void (*drawFillCircle)(drawCmd_p, coOrd, DIST_T, wDrawColor);
+ void (*drawRectangle)(drawCmd_p, coOrd, coOrd, wDrawColor, drawFill_e);
} drawFuncs_t;
-typedef void (*drawConvertPix2CoOrd)(drawCmd_p, wDrawPix_t, wDrawPix_t, coOrd *);
-typedef void (*drawConvertCoOrd2Pix)(drawCmd_p, coOrd, wDrawPix_t *, wDrawPix_t *);
+typedef void (*drawConvertPix2CoOrd)(drawCmd_p, wDrawPix_t, wDrawPix_t,
+ coOrd *);
+typedef void (*drawConvertCoOrd2Pix)(drawCmd_p, coOrd, wDrawPix_t *,
+ wDrawPix_t *);
typedef struct drawCmd_t {
- wDraw_p d;
- drawFuncs_t * funcs;
- unsigned long options;
- DIST_T scale;
- ANGLE_T angle;
- coOrd orig;
- coOrd size;
- drawConvertPix2CoOrd Pix2CoOrd;
- drawConvertCoOrd2Pix CoOrd2Pix;
- FLOAT_T dpi;
+ wDraw_p d;
+ drawFuncs_t * funcs;
+ unsigned long options;
+ DIST_T scale;
+ ANGLE_T angle;
+ coOrd orig;
+ coOrd size;
+ drawConvertPix2CoOrd Pix2CoOrd;
+ drawConvertCoOrd2Pix CoOrd2Pix;
+ FLOAT_T dpi;
} drawCmd_t;
#define SCALEX(D,X) ((X)/(D).dpi)
#define SCALEY(D,Y) ((Y)/(D).dpi)
#ifdef WINDOWS
- #define LBORDER (33)
- #define BBORDER (32)
+#define LBORDER (33)
+#define BBORDER (32)
#else
- #define LBORDER (26)
- #define BBORDER (27)
+#define LBORDER (26)
+#define BBORDER (27)
#endif
#define RBORDER (9)
#define TBORDER (8)
@@ -120,7 +126,6 @@ extern drawCmd_t mapD;
extern drawCmd_t tempD;
#define RoomSize (mapD.size)
extern coOrd oldMarker;
-extern wDrawPix_t closePixels;
#define dragDistance (dragPixels*mainD.scale / mainD.dpi)
extern long dragPixels;
extern long dragTimeout;
@@ -129,12 +134,16 @@ extern long minGridSpacing;
extern long drawCount;
extern BOOL_T drawEnable;
extern long currRedraw;
+extern long constrainMain;
+extern long liveMap;
+extern long descriptionFontSize;
extern coOrd panCenter;
extern coOrd menuPos;
extern int log_pan;
+extern wBool_t wDrawDoTempDraw;
extern wDrawColor drawColorBlack;
extern wDrawColor drawColorWhite;
@@ -142,8 +151,13 @@ extern wDrawColor drawColorRed;
extern wDrawColor drawColorBlue;
extern wDrawColor drawColorGreen;
extern wDrawColor drawColorAqua;
+extern wDrawColor drawColorDkRed;
+extern wDrawColor drawColorDkBlue;
+extern wDrawColor drawColorDkGreen;
+extern wDrawColor drawColorDkAqua;
extern wDrawColor drawColorPowderedBlue;
extern wDrawColor drawColorPurple;
+extern wDrawColor drawColorMagenta;
extern wDrawColor drawColorGold;
extern wDrawColor drawColorGrey10;
extern wDrawColor drawColorGrey20;
@@ -219,14 +233,15 @@ extern drawFuncs_t printDrawFuncs;
void DrawHilight(drawCmd_p, coOrd, coOrd, BOOL_T add);
void DrawHilightPolygon(drawCmd_p, coOrd *, int);
-#define BOX_NONE (0)
-#define BOX_UNDERLINE (1)
-#define BOX_BOX (2)
-#define BOX_INVERT (3)
-#define BOX_ARROW (4)
-#define BOX_BACKGROUND (5)
-#define BOX_ARROW_BACKGROUND (6)
-#define BOX_BOX_BACKGROUND (7)
+#define BOX_NONE (0) // do not draw a frame around text
+#define BOX_UNDERLINE (1) // draw underline under text only
+#define BOX_BOX (2) // draw a frame around text
+#define BOX_INVERT (3) // invert colors, text is drawn gray
+#define BOX_ARROW (4) // box has a connector
+#define BOX_BACKGROUND (5) // draw box with backgound only, no frame
+#define BOX_ARROW_BACKGROUND (6) // box has a connector and background
+#define BOX_BOX_BACKGROUND (7) // draw complete frame and background
+
void DrawBoxedString(int, drawCmd_p, coOrd, char *, wFont_p, wFontSize_t,
wDrawColor, ANGLE_T);
void DrawMultiLineTextSize(drawCmd_p dp, char * text, wFont_p fp,
@@ -241,7 +256,6 @@ void TranslateBackground(drawCmd_p drawP, POS_T origX, POS_T origY,
wWinPix_t* posX,
wWinPix_t* posY, wWinPix_t* pWidth);
BOOL_T SetRoomSize(coOrd);
-void GetRoomSize(coOrd *);
void DoRedraw(void);
void SetMainSize(void);
void MainRedraw(void);
@@ -250,6 +264,7 @@ void TempRedraw(void);
void DrawRuler(drawCmd_p, coOrd, coOrd, DIST_T, int, int, wDrawColor);
void MainProc(wWin_p, winProcEvent, void *, void *);
void InitInfoBar(void);
+void InitColor(void);
void DrawInit(int);
void DoZoomUp(void * modeVP);
void DoZoomDown(void * modeVP);
diff --git a/app/bin/drawgeom.c b/app/bin/drawgeom.c
index f249ff0..b52d42a 100644
--- a/app/bin/drawgeom.c
+++ b/app/bin/drawgeom.c
@@ -14,7 +14,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 "ccurve.h"
@@ -46,11 +46,12 @@ static void EndPoly( drawContext_t * context, int cnt, wBool_t open)
pts_t * pts;
int inx;
- if (context->State==0 || cnt == 0)
+ if (context->State==0 || cnt == 0) {
return;
-
+ }
+
if ( cnt < 3 ) {
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
ErrorMessage( MSG_POLY_SHAPES_3_SIDES );
return;
}
@@ -61,7 +62,8 @@ static void EndPoly( drawContext_t * context, int cnt, wBool_t open)
}
DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
segPtr = &tempSegs(0);
- segPtr->type = ( (context->Op == OP_POLY || context->Op == OP_POLYLINE )? SEG_POLY:SEG_FILPOLY );
+ segPtr->type = ( (context->Op == OP_POLY
+ || context->Op == OP_POLYLINE )? SEG_POLY:SEG_FILPOLY );
segPtr->u.p.cnt = cnt;
segPtr->u.p.pts = pts;
segPtr->u.p.angle = 0.0;
@@ -70,7 +72,7 @@ static void EndPoly( drawContext_t * context, int cnt, wBool_t open)
UndoStart( _("Create Lines"), "newDraw" );
trk = MakeDrawFromSeg( zero, 0.0, segPtr );
DrawNewTrack( trk );
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
}
@@ -80,18 +82,21 @@ static void DrawGeomOk( BOOL_T started )
track_p trk;
int inx;
- if (tempSegs_da.cnt <= 0)
+ if (tempSegs_da.cnt <= 0) {
return;
- if (!started)
+ }
+ if (!started) {
UndoStart( _("Create Lines"), "newDraw" );
+ }
for ( inx=0; inx<tempSegs_da.cnt; inx++ ) {
trk = MakeDrawFromSeg( zero, 0.0, &tempSegs(inx) );
DrawNewTrack( trk );
}
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
}
-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);
@@ -102,10 +107,11 @@ 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 CreateLineAnchor(coOrd p, coOrd p0) {
+static void CreateLineAnchor(coOrd p, coOrd p0)
+{
DIST_T d = tempD.scale*0.15;
coOrd p1;
ANGLE_T a = FindAngle(p0,p);
@@ -116,62 +122,67 @@ static void CreateLineAnchor(coOrd p, coOrd p0) {
anchors(i).color = wDrawColorBlue;
anchors(i).u.l.pos[0] = p;
anchors(i).u.l.pos[1] = p0;
- anchors(i).width = 0;
+ anchors(i).lineWidth = 0;
}
-static void CreateSquareAnchor(coOrd p) {
+static void CreateSquareAnchor(coOrd p)
+{
DIST_T d = tempD.scale*0.15;
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;
}
-BOOL_T FindTempNear(drawContext_t *context, coOrd *p) {
+BOOL_T FindTempNear(drawContext_t *context, coOrd *p)
+{
if (context->State == 2) {
if ((context->Op >= OP_CURVE1) && (context->Op <= OP_CURVE4)) {
if (context->ArcData.type == curveTypeCurve) {
ANGLE_T a = FindAngle(context->ArcData.curvePos,*p);
- if (IsClose(FindDistance(context->ArcData.curvePos,*p)-context->ArcData.curveRadius) &&
- (a>=context->ArcData.a0) && (a<=context->ArcData.a0+context->ArcData.a1)) {
+ if (IsClose(FindDistance(context->ArcData.curvePos,
+ *p)-context->ArcData.curveRadius) &&
+ (a>=context->ArcData.a0) && (a<=context->ArcData.a0+context->ArcData.a1)) {
Translate(p,context->ArcData.curvePos,a,context->ArcData.curveRadius);
return TRUE;
}
} else {
- if (IsClose(LineDistance(p,tempSegs(0).u.l.pos[0],tempSegs(0).u.l.pos[1])))
+ if (IsClose(LineDistance(p,tempSegs(0).u.l.pos[0],tempSegs(0).u.l.pos[1]))) {
return TRUE;
+ }
}
} else if ( (context->Op >=OP_LINE) && (context->Op <= OP_BENCH)) {
- if (IsClose(LineDistance(p,tempSegs(0).u.l.pos[0],tempSegs(0).u.l.pos[1])))
+ if (IsClose(LineDistance(p,tempSegs(0).u.l.pos[0],tempSegs(0).u.l.pos[1]))) {
return TRUE;
+ }
}
}
return FALSE;
}
/**
- * Create and draw a graphics primitive (lines, arc, circle). The complete handling of mouse
- * movements and clicks during the editing process is done here.
+ * Create and draw a graphics primitive (lines, arc, circle). The complete handling of mouse
+ * movements and clicks during the editing process is done here.
*
- * \param action IN mouse action
+ * \param action IN mouse action
* \param pos IN position of mouse pointer
- * \param context IN/OUT parameters for drawing op
+ * \param context IN/OUT parameters for drawing op
* \return next command state
*
* Note - Poly supports both clicking points and/or dragging sides. Close is space or enter.
@@ -180,30 +191,29 @@ BOOL_T FindTempNear(drawContext_t *context, coOrd *p) {
*/
STATUS_T DrawGeomMouse(
- wAction_t action,
- coOrd pos,
- drawContext_t *context)
+ wAction_t action,
+ coOrd pos,
+ drawContext_t *context)
{
- static int lastValid = FALSE;
+// static int lastValid = FALSE;
static BOOL_T locked;
static coOrd pos0, pos0x, pos1, lastPos, movePos;
trkSeg_p segPtr;
pts_t *pts;
int inx;
- DIST_T width;
static int segCnt;
DIST_T d;
ANGLE_T a1,a2;
static ANGLE_T line_angle;
- BOOL_T createTrack;
-
- width = context->line_Width/context->D->dpi;
+// BOOL_T createTrack;
switch (action&0xFF) {
case C_UPDATE:
- if (context->State == 0 ) return C_TERMINATE;
- if (context->Op != OP_POLY && context->Op != OP_FILLPOLY && context->Op != OP_POLYLINE && context->State == 1) return C_TERMINATE;
+ if (context->State == 0 ) { return C_TERMINATE; }
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ if (context->Op != OP_POLY && context->Op != OP_FILLPOLY
+ && context->Op != OP_POLYLINE && context->State == 1) { return C_TERMINATE; }
switch (context->Op) {
case OP_CIRCLE1:
case OP_CIRCLE2:
@@ -212,7 +222,7 @@ STATUS_T DrawGeomMouse(
case OP_FILLCIRCLE2:
case OP_FILLCIRCLE3:
tempSegs(0).u.c.radius = context->radius;
- break;
+ break;
case OP_CURVE1:
case OP_CURVE2:
case OP_CURVE3:
@@ -220,7 +230,8 @@ STATUS_T DrawGeomMouse(
if (context->ArcData.type == curveTypeCurve) {
if (tempSegs(0).u.c.radius != context->radius) {
coOrd end;
- Translate(&end,context->ArcData.curvePos,context->ArcData.a0,context->ArcData.curveRadius);
+ Translate(&end,context->ArcData.curvePos,context->ArcData.a0,
+ context->ArcData.curveRadius);
tempSegs(0).u.c.radius = context->radius;
Translate(&tempSegs(0).u.c.center,end,context->ArcData.a0+180,context->radius);
context->ArcData.curvePos = tempSegs(0).u.c.center;
@@ -228,20 +239,24 @@ STATUS_T DrawGeomMouse(
}
tempSegs(0).u.c.a1 = context->angle;
context->ArcData.a1 = tempSegs(0).u.c.a1;
- Translate(&context->ArcData.pos1,context->ArcData.curvePos,context->ArcData.a0,context->ArcData.curveRadius);
- Translate(&context->ArcData.pos2,context->ArcData.curvePos,context->ArcData.a0+context->ArcData.a1,context->ArcData.curveRadius);
- } else
- Translate(&tempSegs(0).u.l.pos[1],tempSegs(0).u.l.pos[0],context->angle,context->length);
- break;
+ Translate(&context->ArcData.pos1,context->ArcData.curvePos,context->ArcData.a0,
+ context->ArcData.curveRadius);
+ Translate(&context->ArcData.pos2,context->ArcData.curvePos,
+ context->ArcData.a0+context->ArcData.a1,context->ArcData.curveRadius);
+ } else {
+ Translate(&tempSegs(0).u.l.pos[1],tempSegs(0).u.l.pos[0],context->angle,
+ context->length);
+ }
+ break;
case OP_LINE:
case OP_BENCH:
case OP_TBLEDGE:
a1 = FindAngle(pos0,pos1);
- Translate(&tempSegs(0).u.l.pos[1],tempSegs(0).u.l.pos[0],context->angle,context->length);
+ Translate(&tempSegs(0).u.l.pos[1],tempSegs(0).u.l.pos[0],context->angle,
+ context->length);
lastPos = pos1 = tempSegs(0).u.l.pos[1];
- tempSegs_da.cnt = 1;
context->angle = NormalizeAngle(context->angle);
- break;
+ break;
case OP_BOX:
case OP_FILLBOX:
pts = tempSegs(0).u.p.pts;
@@ -250,29 +265,31 @@ STATUS_T DrawGeomMouse(
a2 = FindAngle(pts[0].pt,pts[3].pt);
Translate(&pts[2].pt,pts[1].pt,a2,context->width);
Translate(&pts[3].pt,pts[0].pt,a2,context->width);
- tempSegs_da.cnt = 1;
- break;
+ break;
case OP_POLY:
case OP_FILLPOLY:
case OP_POLYLINE:
- tempSegs_da.cnt = segCnt;
+ DYNARR_SET( trkSeg_t, tempSegs_da, segCnt );
if (segCnt>1) {
- ANGLE_T an = FindAngle(tempSegs(segCnt-2).u.l.pos[0],tempSegs(segCnt-2).u.l.pos[1]);
+ ANGLE_T an = FindAngle(tempSegs(segCnt-2).u.l.pos[0],
+ tempSegs(segCnt-2).u.l.pos[1]);
an = an+context->angle;
- Translate(&tempSegs(segCnt-1).u.l.pos[1],tempSegs(segCnt-1).u.l.pos[0],an,context->length);
+ Translate(&tempSegs(segCnt-1).u.l.pos[1],tempSegs(segCnt-1).u.l.pos[0],an,
+ context->length);
} else {
- Translate(&tempSegs(0).u.l.pos[1],tempSegs(0).u.l.pos[0],context->angle,context->length);
+ Translate(&tempSegs(0).u.l.pos[1],tempSegs(0).u.l.pos[0],context->angle,
+ context->length);
}
pos1 = lastPos = tempSegs(segCnt-1).u.l.pos[1];
context->angle = fabs(context->angle);
- if (context->angle >180) context->angle = context->angle - 180.0;
- break;
+ if (context->angle >180) { context->angle = context->angle - 180.0; }
+ break;
default:
- break;
+ break;
}
context->Changed = TRUE; //Update made
MainRedraw();
- anchors_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, anchors_da );
return C_CONTINUE;
case C_START:
@@ -283,10 +300,11 @@ STATUS_T DrawGeomMouse(
DYNARR_RESET( trkSeg_t, tempSegs_da );
DYNARR_RESET( trkSeg_t, anchors_da );
locked = FALSE;
- if (!magneticSnap)
+ if (!magneticSnap) {
InfoMessage(_("+Alt for Magnetic Snap"));
- else
+ } else {
InfoMessage(_("+Alt to inhibit Magnetic Snap"));
+ }
wSetCursor(mainD.d,defaultCursor);
movePos = zero;
context->UndoStarted = FALSE;
@@ -296,56 +314,57 @@ STATUS_T DrawGeomMouse(
locked = FALSE;
wSetCursor(mainD.d,defaultCursor);
if ((context->State == 0 &&
- context->Op != OP_FILLCIRCLE2 && context->Op != OP_CIRCLE2) ||
- context->State ==2 ||
- (context->State == 1 &&
- (context->Op == OP_POLY || context->Op == OP_FILLPOLY || context->Op == OP_POLYLINE))) {
+ context->Op != OP_FILLCIRCLE2 && context->Op != OP_CIRCLE2) ||
+ context->State ==2 ||
+ (context->State == 1 &&
+ (context->Op == OP_POLY || context->Op == OP_FILLPOLY
+ || context->Op == OP_POLYLINE))) {
DYNARR_RESET( trkSeg_t, anchors_da );
wSetCursor(mainD.d,defaultCursor);
switch (context->Op) { //Snap pos to nearest line for lines and some curves
- case OP_CURVE1:
- case OP_CURVE2:
- case OP_CURVE3:
- case OP_CURVE4:
- case OP_CIRCLE2:
- case OP_CIRCLE3:
- case OP_FILLCIRCLE2:
- case OP_FILLCIRCLE3:
- case OP_LINE:
- case OP_DIMLINE:
- case OP_BENCH:
- case OP_TBLEDGE:
- case OP_BOX:
- case OP_FILLBOX:
- case OP_POLY:
- case OP_FILLPOLY:
- case OP_POLYLINE:;
- if (((MyGetKeyState() & WKEY_ALT)==0) == magneticSnap ) {
- coOrd p = pos;
- track_p t;
- if (((t=OnTrack(&p,FALSE,FALSE))!=NULL) && (IsClose(FindDistance(p,pos))) ) {
- if (context->Op == OP_DIMLINE ) {
- CreateEndAnchor(p,FALSE);
- wSetCursor(mainD.d,wCursorNone);
- movePos = p;
- locked = TRUE;
- } else if (!IsTrack(t)) {
- CreateEndAnchor(p,FALSE);
- wSetCursor(mainD.d,wCursorNone);
- movePos = p;
- locked = TRUE;
- }
+ case OP_CURVE1:
+ case OP_CURVE2:
+ case OP_CURVE3:
+ case OP_CURVE4:
+ case OP_CIRCLE2:
+ case OP_CIRCLE3:
+ case OP_FILLCIRCLE2:
+ case OP_FILLCIRCLE3:
+ case OP_LINE:
+ case OP_DIMLINE:
+ case OP_BENCH:
+ case OP_TBLEDGE:
+ case OP_BOX:
+ case OP_FILLBOX:
+ case OP_POLY:
+ case OP_FILLPOLY:
+ case OP_POLYLINE:;
+ if (((MyGetKeyState() & WKEY_ALT)==0) == magneticSnap ) {
+ coOrd p = pos;
+ track_p t;
+ if (((t=OnTrack(&p,FALSE,FALSE))!=NULL) && (IsClose(FindDistance(p,pos))) ) {
+ if (context->Op == OP_DIMLINE ) {
+ CreateEndAnchor(p,FALSE);
+ // wSetCursor(mainD.d,wCursorNone);
+ movePos = p;
+ locked = TRUE;
+ } else if (!IsTrack(t)) {
+ CreateEndAnchor(p,FALSE);
+ // wSetCursor(mainD.d,wCursorNone);
+ movePos = p;
+ locked = TRUE;
}
}
- if (!locked && SnapPos(&pos)) {
- CreateEndAnchor(pos,FALSE);
- wSetCursor(mainD.d,wCursorNone);
- movePos = pos;
- locked = TRUE;
- }
- break;
- default:
- ;
+ }
+ if (!locked && SnapPos(&pos)) {
+ CreateEndAnchor(pos,FALSE);
+ // wSetCursor(mainD.d,wCursorNone);
+ movePos = pos;
+ locked = TRUE;
+ }
+ break;
+ default:
+ ;
}
}
return C_CONTINUE;
@@ -355,36 +374,41 @@ STATUS_T DrawGeomMouse(
DYNARR_RESET( trkSeg_t, anchors_da );
wSetCursor(mainD.d,defaultCursor);
if (context->State == 2) {
- tempSegs_da.cnt = segCnt;
- if ((context->Op == OP_POLY || context->Op == OP_FILLPOLY || context->Op == OP_POLYLINE)) {
+ DYNARR_SET( trkSeg_t, tempSegs_da, segCnt );
+ if ((context->Op == OP_POLY || context->Op == OP_FILLPOLY
+ || context->Op == OP_POLYLINE)) {
EndPoly(context, segCnt, context->Op==OP_POLYLINE);
} else {
DrawGeomOk(TRUE);
}
context->UndoStarted = FALSE;
segCnt = 0;
- anchors_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, anchors_da );
context->State = 0;
TryCheckPoint();
}
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
context->Started = TRUE;
line_angle = 90.0;
if ((context->Op == OP_CURVE1 && context->State != 2) ||
- (context->Op == OP_CURVE2 && context->State == 0) ||
- (context->Op == OP_CURVE3 && context->State != 0) ||
- (context->Op == OP_CURVE4 && context->State != 2) ||
- (context->Op == OP_CIRCLE2 && context->State != 0) ||
- (context->Op == OP_CIRCLE3 && context->State == 0) ||
- (context->Op == OP_FILLCIRCLE2 && context->State != 0) ||
- (context->Op == OP_FILLCIRCLE3 && context->State == 0) ||
- (context->Op == OP_LINE) || (context->Op == OP_DIMLINE) ||
- (context->Op == OP_BENCH) || (context->Op == OP_TBLEDGE) ||
- (context->Op == OP_BOX) || (context->Op == OP_FILLBOX) ||
- (context->Op == OP_POLY) || (context->Op == OP_POLYLINE) || (context->Op == OP_FILLPOLY) ) {
- if (locked) pos = movePos;
- }
- if ((context->Op == OP_CURVE1 || context->Op == OP_CURVE2 || context->Op == OP_CURVE3 || context->Op == OP_CURVE4) && context->State == 1) {
- ;
+ (context->Op == OP_CURVE2 && context->State == 0) ||
+ (context->Op == OP_CURVE3 && context->State != 0) ||
+ (context->Op == OP_CURVE4 && context->State != 2) ||
+ (context->Op == OP_CIRCLE2 && context->State != 0) ||
+ (context->Op == OP_CIRCLE3 && context->State == 0) ||
+ (context->Op == OP_FILLCIRCLE2 && context->State != 0) ||
+ (context->Op == OP_FILLCIRCLE3 && context->State == 0) ||
+ (context->Op == OP_LINE) || (context->Op == OP_DIMLINE) ||
+ (context->Op == OP_BENCH) || (context->Op == OP_TBLEDGE) ||
+ (context->Op == OP_BOX) || (context->Op == OP_FILLBOX) ||
+ (context->Op == OP_POLY) || (context->Op == OP_POLYLINE)
+ || (context->Op == OP_FILLPOLY) ) {
+ if (locked) { pos = movePos; }
+ }
+ if ((context->Op == OP_CURVE1 || context->Op == OP_CURVE2
+ || context->Op == OP_CURVE3 || context->Op == OP_CURVE4)
+ && context->State == 1) {
+ ;
} else {
pos0 = pos;
pos1 = pos;
@@ -394,33 +418,40 @@ STATUS_T DrawGeomMouse(
case OP_LINE:
case OP_DIMLINE:
case OP_BENCH:
- DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
switch (context->Op) {
- case OP_LINE: tempSegs(0).type = SEG_STRLIN; break;
- case OP_DIMLINE: tempSegs(0).type = SEG_DIMLIN; break;
- case OP_BENCH: tempSegs(0).type = SEG_BENCH; break;
+ case OP_LINE:
+ tempSegs(0).type = SEG_STRLIN;
+ tempSegs(0).color = lineColor;
+ break;
+ case OP_DIMLINE:
+ tempSegs(0).type = SEG_DIMLIN;
+ tempSegs(0).color = wDrawColorBlack;
+ break;
+ case OP_BENCH:
+ tempSegs(0).type = SEG_BENCH;
+ tempSegs(0).color = benchColor;
+ break;
}
- tempSegs(0).color = context->Color;
- tempSegs(0).width = width;
+ tempSegs(0).lineWidth = lineWidth;
tempSegs(0).u.l.pos[0] = tempSegs(0).u.l.pos[1] = pos;
if ( context->Op == OP_BENCH || context->Op == OP_DIMLINE ) {
tempSegs(0).u.l.option = context->benchOption;
} else {
tempSegs(0).u.l.option = 0;
}
- tempSegs_da.cnt = 0;
- context->message( _("Drag next point, +Alt reverse Magnetic Snap or +Ctrl lock to 90 deg") );
+ context->message(
+ _("Drag next point, +Alt reverse Magnetic Snap or +Ctrl lock to 90 deg") );
break;
case OP_TBLEDGE:
OnTableEdgeEndPt( NULL, &pos );
- DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).type = SEG_TBLEDGE;
- tempSegs(0).color = context->Color;
- tempSegs(0).width = (mainD.scale<=16)?(3/context->D->dpi*context->D->scale):0;
+ tempSegs(0).color = wDrawColorBlack;
+ tempSegs(0).lineWidth = (mainD.scale<=16)?(3/context->D->dpi*context->D->scale)
+ :0;
tempSegs(0).u.l.pos[0] = tempSegs(0).u.l.pos[1] = pos;
tempSegs(0).u.l.option = 0;
- tempSegs_da.cnt = 0;
- context->message( _("Drag next point, +Alt reverse Magnetic Snap, or +Ctrl to lock to 90 degrees") );
+ context->message(
+ _("Drag next point, +Alt reverse Magnetic Snap, or +Ctrl to lock to 90 degrees") );
break;
case OP_CURVE1: case OP_CURVE2: case OP_CURVE3: case OP_CURVE4:
if (context->State == 0) {
@@ -430,8 +461,10 @@ STATUS_T DrawGeomMouse(
case OP_CURVE3: drawGeomCurveMode = crvCmdFromCenter; break;
case OP_CURVE4: drawGeomCurveMode = crvCmdFromChord; break;
}
- CreateCurve( C_START, pos, FALSE, context->Color, width, drawGeomCurveMode, &anchors_da, context->message );
- CreateCurve( C_DOWN, pos, FALSE, context->Color, width, drawGeomCurveMode, &anchors_da, context->message );
+ CreateCurve( C_START, pos, FALSE, lineColor, lineWidth, drawGeomCurveMode,
+ &anchors_da, context->message );
+ CreateCurve( C_DOWN, pos, FALSE, lineColor, lineWidth, drawGeomCurveMode,
+ &anchors_da, context->message );
}
break;
case OP_CIRCLE1:
@@ -440,13 +473,13 @@ STATUS_T DrawGeomMouse(
case OP_FILLCIRCLE1:
case OP_FILLCIRCLE2:
case OP_FILLCIRCLE3:
- DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).type = SEG_CRVLIN;
- tempSegs(0).color = context->Color;
- if ( context->Op >= OP_CIRCLE1 && context->Op <= OP_CIRCLE3 )
- tempSegs(0).width = width;
- else
- tempSegs(0).width = 0;
+ tempSegs(0).color = lineColor;
+ if ( context->Op >= OP_CIRCLE1 && context->Op <= OP_CIRCLE3 ) {
+ tempSegs(0).lineWidth = lineWidth;
+ } else {
+ tempSegs(0).lineWidth = 0;
+ }
tempSegs(0).u.c.a0 = 0;
tempSegs(0).u.c.a1 = 360;
tempSegs(0).u.c.radius = 0;
@@ -455,14 +488,14 @@ STATUS_T DrawGeomMouse(
context->State = 1;
break;
case OP_FILLBOX:
- width = 0;
- /* no break */
+ lineWidth = 0;
+ /* no break */
case OP_BOX:
DYNARR_SET( trkSeg_t, tempSegs_da, 4 );
for ( inx=0; inx<4; inx++ ) {
tempSegs(inx).type = SEG_STRLIN;
- tempSegs(inx).color = context->Color;
- tempSegs(inx).width = width;
+ tempSegs(inx).color = lineColor;
+ tempSegs(inx).lineWidth = lineWidth;
tempSegs(inx).u.l.pos[0] = tempSegs(inx).u.l.pos[1] = pos;
}
context->message( _("Drag set box size") );
@@ -470,7 +503,7 @@ STATUS_T DrawGeomMouse(
case OP_POLY:
case OP_FILLPOLY:
case OP_POLYLINE:
- tempSegs_da.cnt = segCnt;
+ DYNARR_SET( trkSeg_t, tempSegs_da, segCnt );
wBool_t first_spot = FALSE;
if (segCnt == 1 && tempSegs(0).type == SEG_CRVLIN) {
coOrd start;
@@ -483,8 +516,9 @@ STATUS_T DrawGeomMouse(
}
segPtr = &tempSegs(tempSegs_da.cnt-1);
segPtr->type = SEG_STRLIN;
- segPtr->color = context->Color;
- segPtr->width = (context->Op==OP_POLY?width:0);
+ segPtr->color = lineColor;
+ segPtr->lineWidth = (context->Op==OP_POLY
+ || context->Op==OP_POLYLINE ? lineWidth : 0);
//End if over start
if ( segCnt>2 && IsClose(FindDistance(tempSegs(0).u.l.pos[0], pos ))) {
segPtr->u.l.pos[0] = tempSegs(segCnt-1).u.l.pos[1];
@@ -517,17 +551,18 @@ STATUS_T DrawGeomMouse(
coOrd p = pos1 = pos;
BOOL_T locked = FALSE, poslocked = FALSE;
if ((context->Op == OP_CURVE1 && context->State == 1) ||
- (context->Op == OP_CURVE2 && context->State == 0) ||
- (context->Op == OP_CURVE4 && context->State != 1) ||
- (context->Op == OP_CIRCLE2 && context->State != 0) ||
- (context->Op == OP_CIRCLE3 && context->State == 0) ||
- (context->Op == OP_FILLCIRCLE2 && context->State != 0) ||
- (context->Op == OP_FILLCIRCLE3 && context->State == 0) ||
- (context->Op == OP_BOX ) ||
- (context->Op == OP_FILLBOX ) ||
- (context->Op == OP_DIMLINE ) || (context->Op == OP_TBLEDGE) ||
- (context->Op == OP_LINE ) || (context->Op == OP_BENCH) ||
- (context->Op == OP_POLY) || (context->Op == OP_POLYLINE) || (context->Op == OP_FILLPOLY) ) {
+ (context->Op == OP_CURVE2 && context->State == 0) ||
+ (context->Op == OP_CURVE4 && context->State != 1) ||
+ (context->Op == OP_CIRCLE2 && context->State != 0) ||
+ (context->Op == OP_CIRCLE3 && context->State == 0) ||
+ (context->Op == OP_FILLCIRCLE2 && context->State != 0) ||
+ (context->Op == OP_FILLCIRCLE3 && context->State == 0) ||
+ (context->Op == OP_BOX ) ||
+ (context->Op == OP_FILLBOX ) ||
+ (context->Op == OP_DIMLINE ) || (context->Op == OP_TBLEDGE) ||
+ (context->Op == OP_LINE ) || (context->Op == OP_BENCH) ||
+ (context->Op == OP_POLY) || (context->Op == OP_POLYLINE)
+ || (context->Op == OP_FILLPOLY) ) {
if ( ( (MyGetKeyState() & WKEY_ALT)==0) == magneticSnap) {
p = pos;
if ((OnTrack( &p, FALSE, FALSE )!=NULL) && (IsClose(FindDistance(p,pos)))) {
@@ -547,18 +582,21 @@ STATUS_T DrawGeomMouse(
switch (context->Op) {
case OP_TBLEDGE:
- if ((MyGetKeyState() & WKEY_CTRL) == WKEY_CTRL) { //If +Ctrl, snap to table edge end
+ if ((MyGetKeyState() & WKEY_CTRL) ==
+ WKEY_CTRL) { //If +Ctrl, snap to table edge end
p = pos;
if (OnTableEdgeEndPt( NULL, &p )) {
locked = TRUE;
pos1 = p;
}
}
- /* no break */
+ /* no break */
case OP_LINE:
case OP_DIMLINE:
case OP_BENCH:
- if (!locked && ((MyGetKeyState() & WKEY_CTRL) == WKEY_CTRL )) { //If not found already +Ctl = Right Angle
+ if (!locked
+ && ((MyGetKeyState() & WKEY_CTRL) ==
+ WKEY_CTRL )) { //If not found already +Ctl = Right Angle
//Snap to Right-Angle from previous or from 0
DIST_T l = FindDistance(pos0, pos);
ANGLE_T angle2 = NormalizeAngle(FindAngle(pos0, pos)-line_angle);
@@ -566,60 +604,76 @@ STATUS_T DrawGeomMouse(
if (tempSegs_da.cnt != 1 && (quad == 2)) {
pos1 = pos0;
} else if (quad == 1 || quad == 3) {
- if (tempSegs_da.cnt != 1)
- l = fabs(l*cos(D2R(((quad==1)?line_angle+90.0:line_angle-90.0)-FindAngle(pos,pos0))));
- Translate( &pos1, pos0, NormalizeAngle(quad==1?line_angle+90.0:line_angle-90.0), l );
+ if (tempSegs_da.cnt != 1) {
+ l = fabs(l*cos(D2R(((quad==1)?line_angle+90.0:line_angle-90.0)-FindAngle(pos,
+ pos0))));
+ }
+ Translate( &pos1, pos0, NormalizeAngle(quad==1?line_angle+90.0:line_angle-90.0),
+ l );
} else {
- if (tempSegs_da.cnt != 1)
- l = fabs(l*cos(D2R(((quad==0||quad==4)?line_angle:line_angle+180.0)-FindAngle(pos,pos0))));
- Translate( &pos1, pos0, NormalizeAngle((quad==0||quad==4)?line_angle:line_angle+180.0), l );
+ if (tempSegs_da.cnt != 1) {
+ l = fabs(l*cos(D2R(((quad==0
+ ||quad==4)?line_angle:line_angle+180.0)-FindAngle(pos,pos0))));
+ }
+ Translate( &pos1, pos0, NormalizeAngle((quad==0
+ ||quad==4)?line_angle:line_angle+180.0), l );
}
CreateLineAnchor(pos1,pos0);
}
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).u.l.pos[1] = pos1;
context->message( _("Length = %s, Angle = %0.2f"),
- FormatDistance(FindDistance( pos0, pos1 )),
- PutAngle(FindAngle( pos0, pos1 )) );
- tempSegs_da.cnt = 1;
- if (anchors_da.cnt == 0) CreateEndAnchor(pos1, FALSE);
+ FormatDistance(FindDistance( pos0, pos1 )),
+ PutAngle(FindAngle( pos0, pos1 )) );
+ if (anchors_da.cnt == 0) { CreateEndAnchor(pos1, FALSE); }
break;
case OP_POLY:
case OP_FILLPOLY:
case OP_POLYLINE:
if ((MyGetKeyState() & WKEY_CTRL) == WKEY_CTRL ) {
coOrd last_point = zero;
- ANGLE_T last_angle, initial_angle;
+ ANGLE_T last_angle;
+// ANGLE_T initial_angle;
if (tempSegs_da.cnt == 1) {
last_angle = 90.0;
last_point = tempSegs(0).u.l.pos[0];
- initial_angle = 90.0;
+// initial_angle = 90.0;
} else {
last_point = tempSegs(tempSegs_da.cnt-2).u.l.pos[1];
- last_angle = FindAngle(tempSegs(tempSegs_da.cnt-2).u.l.pos[0],tempSegs(tempSegs_da.cnt-2).u.l.pos[1]);
- initial_angle = FindAngle(tempSegs(0).u.l.pos[0],tempSegs(0).u.l.pos[1]);
+ last_angle = FindAngle(tempSegs(tempSegs_da.cnt-2).u.l.pos[0],
+ tempSegs(tempSegs_da.cnt-2).u.l.pos[1]);
+// initial_angle = FindAngle(tempSegs(0).u.l.pos[0],tempSegs(0).u.l.pos[1]);
}
//Snap to Right-Angle from previous or from 0
DIST_T l = FindDistance(tempSegs(tempSegs_da.cnt-1).u.l.pos[0], pos);
- ANGLE_T angle2 = NormalizeAngle(FindAngle(tempSegs(tempSegs_da.cnt-1).u.l.pos[0], pos)-last_angle);
+ ANGLE_T angle2 = NormalizeAngle(FindAngle(tempSegs(tempSegs_da.cnt
+ -1).u.l.pos[0], pos)-last_angle);
int quad = (int)((angle2+45.0)/90.0);
if (tempSegs_da.cnt != 1 && (quad == 2)) {
pos = tempSegs(tempSegs_da.cnt-1).u.l.pos[0];
} else if (quad == 1 || quad == 3) {
- if (tempSegs_da.cnt != 1)
- l = fabs(l*cos(D2R(((quad==1)?last_angle+90.0:last_angle-90.0)-FindAngle(pos,last_point))));
- Translate( &pos, tempSegs(tempSegs_da.cnt-1).u.l.pos[0], NormalizeAngle(quad==1?last_angle+90.0:last_angle-90.0), l );
+ if (tempSegs_da.cnt != 1) {
+ l = fabs(l*cos(D2R(((quad==1)?last_angle+90.0:last_angle-90.0)-FindAngle(pos,
+ last_point))));
+ }
+ Translate( &pos, tempSegs(tempSegs_da.cnt-1).u.l.pos[0],
+ NormalizeAngle(quad==1?last_angle+90.0:last_angle-90.0), l );
} else {
- if (tempSegs_da.cnt != 1)
- l = fabs(l*cos(D2R(((quad==0||quad==4)?last_angle:last_angle+180.0)-FindAngle(pos,last_point))));
- Translate( &pos, tempSegs(tempSegs_da.cnt-1).u.l.pos[0], NormalizeAngle((quad==0||quad==4)?last_angle:last_angle+180.0), l );
+ if (tempSegs_da.cnt != 1) {
+ l = fabs(l*cos(D2R(((quad==0
+ ||quad==4)?last_angle:last_angle+180.0)-FindAngle(pos,last_point))));
+ }
+ Translate( &pos, tempSegs(tempSegs_da.cnt-1).u.l.pos[0], NormalizeAngle((quad==0
+ ||quad==4)?last_angle:last_angle+180.0), l );
}
CreateEndAnchor(pos,TRUE);
- if (FindDistance(pos,last_point)>0.0) CreateLineAnchor(pos,last_point);
+ if (FindDistance(pos,last_point)>0.0) { CreateLineAnchor(pos,last_point); }
//If there is any point on this line that will give a 90 degree return to the first point, show it
if (tempSegs_da.cnt > 1) {
coOrd intersect;
ANGLE_T an_this = FindAngle(tempSegs(tempSegs_da.cnt-2).u.l.pos[1],pos);
- if (FindIntersection(&intersect,tempSegs(0).u.l.pos[0],an_this+90.0,tempSegs(tempSegs_da.cnt-2).u.l.pos[1],an_this)) {
+ if (FindIntersection(&intersect,tempSegs(0).u.l.pos[0],an_this+90.0,
+ tempSegs(tempSegs_da.cnt-2).u.l.pos[1],an_this)) {
ANGLE_T an_inter = FindAngle(tempSegs(tempSegs_da.cnt-2).u.l.pos[1],intersect);
if (fabs(DifferenceBetweenAngles(an_inter,an_this))<90.0) {
CreateSquareAnchor(intersect);
@@ -630,36 +684,37 @@ STATUS_T DrawGeomMouse(
}
}
}
- } else if (poslocked) pos = pos1;
+ } else if (poslocked) { pos = pos1; }
tempSegs(tempSegs_da.cnt-1).type = SEG_STRLIN;
tempSegs(tempSegs_da.cnt-1).u.l.pos[1] = pos;
context->message( _("Length = %s, Angle = %0.2f"),
- FormatDistance(FindDistance( tempSegs(tempSegs_da.cnt-1).u.l.pos[0], pos )),
- PutAngle(FindAngle( tempSegs(tempSegs_da.cnt-1).u.l.pos[0], pos )) );
+ FormatDistance(FindDistance( tempSegs(tempSegs_da.cnt-1).u.l.pos[0], pos )),
+ PutAngle(FindAngle( tempSegs(tempSegs_da.cnt-1).u.l.pos[0], pos )) );
segCnt = tempSegs_da.cnt;
break;
case OP_CURVE1: case OP_CURVE2: case OP_CURVE3: case OP_CURVE4:
if (context->State == 0) {
pos0x = pos1;
- CreateCurve( C_MOVE, pos, FALSE, context->Color, width, drawGeomCurveMode, &anchors_da, context->message );
+ CreateCurve( C_MOVE, pos, FALSE, lineColor, lineWidth, drawGeomCurveMode,
+ &anchors_da, context->message );
} else {
- PlotCurve( drawGeomCurveMode, pos0, pos0x, pos1, &context->ArcData, FALSE, 0.0 );
- tempSegs(0).color = context->Color;
- tempSegs(0).width = width;
- DYNARR_SET(trkSeg_t,tempSegs_da,1);
+ PlotCurve( drawGeomCurveMode, pos0, pos0x, pos1, &context->ArcData, FALSE,
+ 0.0 );
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ tempSegs(0).color = lineColor;
+ tempSegs(0).lineWidth = lineWidth;
if (context->ArcData.type == curveTypeStraight) {
tempSegs(0).type = SEG_STRLIN;
tempSegs(0).u.l.pos[0] = pos0;
tempSegs(0).u.l.pos[1] = context->ArcData.pos1;
- tempSegs_da.cnt = 1;
CreateEndAnchor(pos0, FALSE);
CreateEndAnchor(context->ArcData.pos1, FALSE);
context->message( _("Straight Line: Length=%s Angle=%0.3f"),
- FormatDistance(FindDistance( pos0, context->ArcData.pos1 )),
- PutAngle(FindAngle( pos0, context->ArcData.pos1 )) );
+ FormatDistance(FindDistance( pos0, context->ArcData.pos1 )),
+ PutAngle(FindAngle( pos0, context->ArcData.pos1 )) );
} else if (context->ArcData.type == curveTypeNone) {
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
context->message( _("Back") );
} else if (context->ArcData.type == curveTypeCurve) {
tempSegs(0).type = SEG_CRVLIN;
@@ -667,29 +722,32 @@ STATUS_T DrawGeomMouse(
tempSegs(0).u.c.radius = context->ArcData.curveRadius;
tempSegs(0).u.c.a0 = context->ArcData.a0;
tempSegs(0).u.c.a1 = context->ArcData.a1;
- tempSegs_da.cnt = 1;
d = D2R(context->ArcData.a1);
- if (d < 0.0)
+ if (d < 0.0) {
d = 2*M_PI+d;
+ }
if ( d*context->ArcData.curveRadius > mapD.size.x+mapD.size.y ) {
ErrorMessage( MSG_CURVE_TOO_LARGE );
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
context->ArcData.type = curveTypeNone;
return C_CONTINUE;
}
context->message( _("Curved Line: Radius=%s Angle=%0.3f Length=%s"),
- FormatDistance(context->ArcData.curveRadius), context->ArcData.a1,
- FormatDistance(context->ArcData.curveRadius*d) );
- if (context->Op == OP_CURVE1 || context->Op == OP_CURVE4 )
- DrawArrowHeadsArray(&anchors_da,pos1,FindAngle(context->ArcData.curvePos,pos),TRUE,wDrawColorRed);
- else if (context->Op == OP_CURVE2 || context->Op == OP_CURVE3 ) {
+ FormatDistance(context->ArcData.curveRadius), context->ArcData.a1,
+ FormatDistance(context->ArcData.curveRadius*d) );
+ if (context->Op == OP_CURVE1 || context->Op == OP_CURVE4 ) {
+ DrawArrowHeadsArray(&anchors_da,pos1,FindAngle(context->ArcData.curvePos,pos),
+ TRUE,wDrawColorRed);
+ } else if (context->Op == OP_CURVE2 || context->Op == OP_CURVE3 ) {
CreateEndAnchor(context->ArcData.pos2,FALSE);
- DrawArrowHeadsArray(&anchors_da,context->ArcData.pos2,FindAngle(context->ArcData.curvePos,context->ArcData.pos2)+90,TRUE,wDrawColorRed);
+ DrawArrowHeadsArray(&anchors_da,context->ArcData.pos2,
+ FindAngle(context->ArcData.curvePos,context->ArcData.pos2)+90,TRUE,
+ wDrawColorRed);
}
CreateEndAnchor(context->ArcData.curvePos,TRUE);
}
}
- if (anchors_da.cnt == 0) CreateEndAnchor(pos, FALSE);
+ if (anchors_da.cnt == 0) { CreateEndAnchor(pos, FALSE); }
break;
case OP_CIRCLE1:
case OP_FILLCIRCLE1:
@@ -697,30 +755,30 @@ STATUS_T DrawGeomMouse(
case OP_CIRCLE2:
case OP_FILLCIRCLE2:
tempSegs(0).u.c.center = pos1;
- if (context->State == 1 && locked) CreateEndAnchor(pos1, FALSE);
- else wSetCursor(mainD.d,defaultCursor);
+ if (context->State == 1 && locked) { CreateEndAnchor(pos1, FALSE); }
+ else { wSetCursor(mainD.d,defaultCursor); }
tempSegs(0).u.c.radius = FindDistance( pos0, pos1 );
context->message( _("Radius = %s"),
- FormatDistance(FindDistance( pos0, pos1 )) );
+ FormatDistance(FindDistance( pos0, pos1 )) );
break;
case OP_CIRCLE3:
case OP_FILLCIRCLE3:
- if (context->State == 1) CreateEndAnchor(pos0, TRUE);
+ if (context->State == 1) { CreateEndAnchor(pos0, TRUE); }
wSetCursor(mainD.d,defaultCursor);
tempSegs(0).u.c.radius = FindDistance( pos0, pos1 );
context->message( _("Radius = %s"),
- FormatDistance(FindDistance( pos0, pos1 )) );
+ FormatDistance(FindDistance( pos0, pos1 )) );
break;
case OP_BOX:
case OP_FILLBOX:
- tempSegs_da.cnt = 4;
- tempSegs(0).u.l.pos[1].x = tempSegs(1).u.l.pos[0].x =
- tempSegs(1).u.l.pos[1].x = tempSegs(2).u.l.pos[0].x = pos1.x;
- tempSegs(1).u.l.pos[1].y = tempSegs(2).u.l.pos[0].y =
- tempSegs(2).u.l.pos[1].y = tempSegs(3).u.l.pos[0].y = pos1.y;
- if (locked) CreateEndAnchor(pos1,FALSE);
+ DYNARR_SET( trkSeg_t, tempSegs_da, 4 );
+ tempSegs(0).u.l.pos[1].x = tempSegs(1).u.l.pos[0].x =
+ tempSegs(1).u.l.pos[1].x = tempSegs(2).u.l.pos[0].x = pos1.x;
+ tempSegs(1).u.l.pos[1].y = tempSegs(2).u.l.pos[0].y =
+ tempSegs(2).u.l.pos[1].y = tempSegs(3).u.l.pos[0].y = pos1.y;
+ if (locked) { CreateEndAnchor(pos1,FALSE); }
context->message( _("Width = %s, Height = %s"),
- FormatDistance(fabs(pos1.x - pos0.x)), FormatDistance(fabs(pos1.y - pos0.y)) );
+ FormatDistance(fabs(pos1.x - pos0.x)), FormatDistance(fabs(pos1.y - pos0.y)) );
break;
}
wSetCursor(mainD.d,wCursorNone);
@@ -728,38 +786,37 @@ STATUS_T DrawGeomMouse(
case wActionLUp:
case wActionRUp:
- lastValid = FALSE;
- createTrack = FALSE;
+// lastValid = FALSE;
+// createTrack = FALSE;
//Note - pos1 is last drag point
wSetCursor(mainD.d,defaultCursor);
- if ((context->Op == OP_POLY) || (context->Op == OP_POLYLINE) || (context->Op == OP_FILLPOLY )
- || (context->Op == OP_BOX) || (context->Op == OP_FILLBOX) ){ ;
+ if ((context->Op == OP_POLY) || (context->Op == OP_POLYLINE)
+ || (context->Op == OP_FILLPOLY )
+ || (context->Op == OP_BOX) || (context->Op == OP_FILLBOX) ) {
+ ;
} else if (context->Op == OP_LINE || context->Op == OP_DIMLINE ||
- context->Op == OP_BENCH || context->Op == OP_TBLEDGE ) {
+ context->Op == OP_BENCH || context->Op == OP_TBLEDGE ) {
tempSegs(0).u.l.pos[1] = pos1;
} else if ((context->Op>=OP_FILLCIRCLE1 && context->Op<=OP_FILLCIRCLE3) ||
- (context->Op>=OP_CIRCLE1 && context->Op<=OP_CIRCLE3)) {
+ (context->Op>=OP_CIRCLE1 && context->Op<=OP_CIRCLE3)) {
;
} else {
- PlotCurve( drawGeomCurveMode, pos0, pos0x, pos1, &context->ArcData, FALSE, 0.0 );
+ PlotCurve( drawGeomCurveMode, pos0, pos0x, pos1, &context->ArcData, FALSE,
+ 0.0 );
if (context->ArcData.type == curveTypeStraight) {
- DYNARR_RESET(trkSeg_t,tempSegs_da);
- DYNARR_APPEND(trkSeg_t,tempSegs_da,1);
+ DYNARR_SET(trkSeg_t,tempSegs_da,1);
tempSegs(0).type = SEG_STRLIN;
tempSegs(0).u.l.pos[0] = pos0;
tempSegs(0).u.l.pos[1] = context->ArcData.pos1;
- tempSegs_da.cnt = 1;
} else if (context->ArcData.type == curveTypeNone) {
DYNARR_RESET(trkSeg_t,tempSegs_da);
} else if (context->ArcData.type == curveTypeCurve) {
- DYNARR_RESET(trkSeg_t,tempSegs_da);
- DYNARR_APPEND(trkSeg_t,tempSegs_da,1);
+ DYNARR_SET(trkSeg_t,tempSegs_da,1);
tempSegs(0).type = SEG_CRVLIN;
tempSegs(0).u.c.center = context->ArcData.curvePos;
tempSegs(0).u.c.radius = context->ArcData.curveRadius;
tempSegs(0).u.c.a0 = context->ArcData.a0;
tempSegs(0).u.c.a1 = context->ArcData.a1;
- tempSegs_da.cnt = 1;
}
}
switch ( context->Op ) {
@@ -767,7 +824,7 @@ STATUS_T DrawGeomMouse(
case OP_DIMLINE:
case OP_BENCH:
case OP_TBLEDGE:
- lastValid = TRUE;
+// lastValid = TRUE;
lastPos = pos1;
context->length = FindDistance(pos1,pos0);
context->angle = FindAngle(pos0,pos1);
@@ -779,7 +836,8 @@ STATUS_T DrawGeomMouse(
context->State = 1;
context->ArcAngle = FindAngle( pos0, pos1 );
pos0x = pos1;
- CreateCurve( C_UP, pos, FALSE, context->Color, width, drawGeomCurveMode, &anchors_da, context->message );
+ CreateCurve( C_UP, pos, FALSE, lineColor, lineWidth, drawGeomCurveMode,
+ &anchors_da, context->message );
context->message( _("Drag on Red arrows to adjust curve") );
context->show = FALSE;
return C_CONTINUE;
@@ -788,8 +846,8 @@ STATUS_T DrawGeomMouse(
if (context->ArcData.type == curveTypeCurve) {
segPtr = &tempSegs(0);
segPtr->type = SEG_CRVLIN;
- segPtr->color = context->Color;
- segPtr->width = width;
+ segPtr->color = lineColor;
+ segPtr->lineWidth = lineWidth;
segPtr->u.c.center = context->ArcData.curvePos;
segPtr->u.c.radius = context->ArcData.curveRadius;
segPtr->u.c.a0 = context->ArcData.a0;
@@ -799,22 +857,25 @@ STATUS_T DrawGeomMouse(
} else if (context->ArcData.type == curveTypeStraight) {
segPtr = &tempSegs(0);
segPtr->type = SEG_STRLIN;
- segPtr->color = context->Color;
- segPtr->width = width;
+ segPtr->color = lineColor;
+ segPtr->lineWidth = lineWidth;
segPtr->u.l.pos[0] = pos0;
segPtr->u.l.pos[1] = pos1;
context->radius = 0;
context->length = FindDistance(pos0,pos1);
context->angle = FindAngle(pos0,pos1);
}
- lastValid = TRUE;
+// lastValid = TRUE;
lastPos = pos1;
context->State = 2;
- if (context->Op == OP_CURVE1 || context->Op == OP_CURVE4 )
- DrawArrowHeadsArray(&anchors_da,pos1,FindAngle(context->ArcData.curvePos,pos),TRUE,wDrawColorRed);
- else if (context->Op == OP_CURVE2 || context->Op == OP_CURVE3 ) {
+ if (context->Op == OP_CURVE1 || context->Op == OP_CURVE4 ) {
+ DrawArrowHeadsArray(&anchors_da,pos1,FindAngle(context->ArcData.curvePos,pos),
+ TRUE,wDrawColorRed);
+ } else if (context->Op == OP_CURVE2 || context->Op == OP_CURVE3 ) {
CreateEndAnchor(context->ArcData.pos2,FALSE);
- DrawArrowHeadsArray(&anchors_da,context->ArcData.pos2,FindAngle(context->ArcData.curvePos,context->ArcData.pos2)+90,TRUE,wDrawColorRed);
+ DrawArrowHeadsArray(&anchors_da,context->ArcData.pos2,
+ FindAngle(context->ArcData.curvePos,context->ArcData.pos2)+90,TRUE,
+ wDrawColorRed);
}
CreateEndAnchor(context->ArcData.curvePos,TRUE);
/*drawContext = context;
@@ -827,9 +888,10 @@ STATUS_T DrawGeomMouse(
case OP_FILLCIRCLE1:
case OP_FILLCIRCLE2:
case OP_FILLCIRCLE3:
- if ( context->Op>=OP_FILLCIRCLE1 && context->Op<=OP_FILLCIRCLE3 )
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ if ( context->Op>=OP_FILLCIRCLE1 && context->Op<=OP_FILLCIRCLE3 ) {
tempSegs(0).type = SEG_FILCRCL;
- tempSegs_da.cnt = 1;
+ }
context->State = 2;
context->radius = tempSegs(0).u.c.radius;
break;
@@ -840,13 +902,13 @@ STATUS_T DrawGeomMouse(
pts[inx].pt = tempSegs(inx).u.l.pos[0];
pts[inx].pt_type = wPolyLineStraight;
}
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).type = (context->Op == OP_FILLBOX)?SEG_FILPOLY:SEG_POLY;
tempSegs(0).u.p.cnt = 4;
tempSegs(0).u.p.pts = pts;
tempSegs(0).u.p.angle = 0.0;
tempSegs(0).u.p.orig = zero;
tempSegs(0).u.p.polyType = RECTANGLE;
- tempSegs_da.cnt = 1;
/*drawContext = context;
DrawGeomOp( I2VP(context->Op) );*/
context->length = FindDistance(pts[0].pt,pts[1].pt);
@@ -857,8 +919,8 @@ STATUS_T DrawGeomMouse(
case OP_POLY:
case OP_FILLPOLY:
case OP_POLYLINE:
- tempSegs_da.cnt = segCnt;
- anchors_da.cnt=0;
+ DYNARR_SET( trkSeg_t, tempSegs_da, segCnt );
+ DYNARR_RESET( trkSeg_t, anchors_da );
//End if close to start
if ( segCnt>2 && IsClose(FindDistance(tempSegs(0).u.l.pos[0], pos))) {
EndPoly(context, tempSegs_da.cnt, context->Op==OP_POLYLINE);
@@ -886,12 +948,16 @@ STATUS_T DrawGeomMouse(
}
int text_inx = tempSegs_da.cnt-1;
//tempSegs(tempSegs_da.cnt-1).u.l.pos[1] = pos;
- context->length = FindDistance(tempSegs(text_inx).u.l.pos[0],tempSegs(text_inx).u.l.pos[1]);
+ context->length = FindDistance(tempSegs(text_inx).u.l.pos[0],
+ tempSegs(text_inx).u.l.pos[1]);
if (text_inx>1) {
- ANGLE_T an = FindAngle(tempSegs(text_inx-1).u.l.pos[0],tempSegs(text_inx-1).u.l.pos[1]);
- context->angle = NormalizeAngle(FindAngle(tempSegs(text_inx).u.l.pos[0],tempSegs(text_inx).u.l.pos[1])-an);
- } else
+ ANGLE_T an = FindAngle(tempSegs(text_inx-1).u.l.pos[0],
+ tempSegs(text_inx-1).u.l.pos[1]);
+ context->angle = NormalizeAngle(FindAngle(tempSegs(text_inx).u.l.pos[0],
+ tempSegs(text_inx).u.l.pos[1])-an);
+ } else {
context->angle = FindAngle(tempSegs(1).u.l.pos[0],tempSegs(1).u.l.pos[1]);
+ }
context->State = 1;
context->index = text_inx;
segCnt = tempSegs_da.cnt;
@@ -915,24 +981,28 @@ STATUS_T DrawGeomMouse(
DYNARR_RESET(trkSeg_t, anchors_da );
int key = (action>>8&0xFF);
if ( key == 0x0D ||
- key == ' ' ||
- (key == 0x09 && ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) != WKEY_SHIFT))) { //Tab continue
- if ((context->Op == OP_POLY) || (context->Op == OP_FILLPOLY) || (context->Op == OP_POLYLINE)) {
- tempSegs_da.cnt = segCnt;
+ key == ' ' ||
+ (key == 0x09
+ && ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) !=
+ WKEY_SHIFT))) { //Tab continue
+ if ((context->Op == OP_POLY) || (context->Op == OP_FILLPOLY)
+ || (context->Op == OP_POLYLINE)) {
+ DYNARR_SET( trkSeg_t, tempSegs_da, segCnt );
//If last segment wasn't just a point, add another starting on its end
- if (!IsClose(FindDistance(tempSegs(segCnt-1).u.l.pos[0],tempSegs(segCnt-1).u.l.pos[1]))) {
+ if (!IsClose(FindDistance(tempSegs(segCnt-1).u.l.pos[0],
+ tempSegs(segCnt-1).u.l.pos[1]))) {
DYNARR_APPEND(trkSeg_t,tempSegs_da,1);
- segPtr = &tempSegs(tempSegs_da.cnt-1);
+ segPtr = &DYNARR_LAST( trkSeg_t, tempSegs_da );
segPtr->type = SEG_STRLIN;
segPtr->u.l.pos[0] = segPtr[-1].u.l.pos[1];
segPtr->u.l.pos[1] = tempSegs(0).u.l.pos[0];
}
- EndPoly(context, tempSegs_da.cnt, context->Op == OP_POLYLINE);
- DYNARR_RESET(pts_t, points_da);
+ EndPoly(context, tempSegs_da.cnt, context->Op == OP_POLYLINE);
+ DYNARR_RESET(pts_t, points_da);
DYNARR_RESET(trkSeg_t,tempSegs_da);
} else {
if (context->State == 2) {
- tempSegs_da.cnt = segCnt;
+ DYNARR_SET( trkSeg_t, tempSegs_da, segCnt );
DrawGeomOk(context->UndoStarted);
context->UndoStarted = FALSE;
@@ -940,9 +1010,11 @@ STATUS_T DrawGeomMouse(
}
context->State = 0;
segCnt = 0;
- if (key == 0x0D) return C_CONTINUE; //Esc - go to Reset
- else return C_TERMINATE; //Space/Enter/Tab - end command
- } else if (key == 0x09 && ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) == WKEY_SHIFT)) { //Tab plus shift - abandon
+ if (key == 0x0D) { return C_CONTINUE; } //Esc - go to Reset
+ else { return C_TERMINATE; } //Space/Enter/Tab - end command
+ } else if (key == 0x09
+ && ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) ==
+ WKEY_SHIFT)) { //Tab plus shift - abandon
context->State = 0;
segCnt = 0;
return C_TERMINATE;
@@ -958,21 +1030,20 @@ STATUS_T DrawGeomMouse(
case C_CANCEL:
DYNARR_RESET(trkSeg_t, anchors_da );
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
context->message( "" );
context->Changed = FALSE;
context->State = 0;
segCnt = 0;
- lastValid = FALSE;
+// lastValid = FALSE;
return C_TERMINATE;
case C_REDRAW:
- DrawSegs( &tempD, zero, 0.0, &tempSegs(0), tempSegs_da.cnt, trackGauge, wDrawColorBlack );
- if (anchors_da.cnt > 0) {
- DrawSegs( &tempD, zero, 0.0, &anchors(0), anchors_da.cnt, 0.0, wDrawColorBlack );
- }
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &tempSegs_da, trackGauge, wDrawColorBlack,
+ 0 );
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, 0.0, wDrawColorBlack, 0 );
return C_CONTINUE;
-
+
case C_CMDMENU:
return C_CONTINUE;
@@ -989,10 +1060,12 @@ typedef enum {POLY_NONE, POLY_SELECTED, POLYPOINT_SELECTED} PolyState_e;
static PolyState_e polyState = POLY_NONE;
static coOrd rotate_origin;
static ANGLE_T rotate_angle;
-static dynArr_t origin_da;
+//static dynArr_t origin_da;
-void static CreateCircleAnchor(wBool_t selected,coOrd center, DIST_T rad, ANGLE_T angle) {
+void static CreateCircleAnchor(wBool_t selected,coOrd center, DIST_T rad,
+ ANGLE_T angle)
+{
DYNARR_RESET(trkSeg_t,anchors_da);
double d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,anchors_da,2);
@@ -1003,7 +1076,8 @@ void static CreateCircleAnchor(wBool_t selected,coOrd center, DIST_T rad, ANGLE_
PointOnCircle(&anchors(0).u.c.center,center,rad,angle);
}
-void static CreateLineAnchors(int index, coOrd p0, coOrd p1) {
+void static CreateLineAnchors(int index, coOrd p0, coOrd p1)
+{
DYNARR_RESET(trkSeg_t,anchors_da);
double d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,anchors_da,2);
@@ -1018,29 +1092,35 @@ void static CreateLineAnchors(int index, coOrd p0, coOrd p1) {
anchors(1).color = wDrawColorBlue;
anchors(1).u.c.radius = d/2;
anchors(1).u.c.center = p1;
- if (index>=0) wSetCursor(mainD.d,wCursorNone);
+ if (index>=0) { wSetCursor(mainD.d,wCursorNone); }
}
-void static CreateBoxAnchors(int index, pts_t pt[4]) {
+void static CreateBoxAnchors(int index, pts_t pt[4])
+{
DYNARR_RESET(trkSeg_t,anchors_da);
- double d = tempD.scale*0.15;
+// double d = tempD.scale*0.15;
ANGLE_T a = FindAngle(pt[0].pt,pt[1].pt);
ANGLE_T diag = FindAngle(pt[0].pt,pt[2].pt);
- if (index>=0) wSetCursor(mainD.d,wCursorNone);
- for (int i=0;i<4;i++) {
+ if (index>=0) { wSetCursor(mainD.d,wCursorNone); }
+ for (int i=0; i<4; i++) {
DYNARR_SET(trkSeg_t,anchors_da,anchors_da.cnt+5);
- DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),pt[i].pt,(diag>a?45.0:-45.0)+a+(90.0*(i)),TRUE,i==index?wDrawColorRed:wDrawColorBlue);
+ DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),pt[i].pt,
+ (diag>a?45.0:-45.0)+a+(90.0*(i)),TRUE,i==index?wDrawColorRed:wDrawColorBlue);
}
coOrd pp;
- for (int i=0;i<4;i++) {
- pp.x = (i==3?((((pt[0].pt.x - pt[i].pt.x)/2))+pt[i].pt.x):((pt[i+1].pt.x - pt[i].pt.x)/2)+pt[i].pt.x);
- pp.y = (i==3?((((pt[0].pt.y - pt[i].pt.y)/2))+pt[i].pt.y):((pt[i+1].pt.y - pt[i].pt.y)/2)+pt[i].pt.y);
+ for (int i=0; i<4; i++) {
+ pp.x = (i==3?((((pt[0].pt.x - pt[i].pt.x)/2))+pt[i].pt.x):((
+ pt[i+1].pt.x - pt[i].pt.x)/2)+pt[i].pt.x);
+ pp.y = (i==3?((((pt[0].pt.y - pt[i].pt.y)/2))+pt[i].pt.y):((
+ pt[i+1].pt.y - pt[i].pt.y)/2)+pt[i].pt.y);
DYNARR_SET(trkSeg_t,anchors_da,anchors_da.cnt+5);
- DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),pp,90.0*(i-1)+a,TRUE,i==index+5?wDrawColorRed:wDrawColorBlue);
+ DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),pp,90.0*(i-1)+a,
+ TRUE,i==index+5?wDrawColorRed:wDrawColorBlue);
}
}
-void static CreateOriginAnchor(coOrd origin, wBool_t trans_selected) {
+void static CreateOriginAnchor(coOrd origin, wBool_t trans_selected)
+{
double d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,anchors_da,2);
int i = anchors_da.cnt-1;
@@ -1051,7 +1131,7 @@ void static CreateOriginAnchor(coOrd origin, wBool_t trans_selected) {
anchors(i).u.l.pos[0] = p0;
anchors(i).u.l.pos[1] = p1;
anchors(i).color = trans_selected?wDrawColorAqua:wDrawColorBlue;
- anchors(i).width = 0;
+ anchors(i).lineWidth = 0;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
Translate(&p0,origin,90,d*4);
Translate(&p1,origin,90,-d*4);
@@ -1060,11 +1140,13 @@ void static CreateOriginAnchor(coOrd origin, wBool_t trans_selected) {
anchors(i).u.l.pos[0] = p0;
anchors(i).u.l.pos[1] = p1;
anchors(i).color = wDrawColorBlue;
- anchors(i).width = 0;
- if (trans_selected) wSetCursor(mainD.d,wCursorNone);
+ anchors(i).lineWidth = 0;
+ if (trans_selected) { wSetCursor(mainD.d,wCursorNone); }
}
-void static CreateCurveAnchors(int index, coOrd pm, coOrd pc, coOrd p0, coOrd p1) {
+void static CreateCurveAnchors(int index, coOrd pm, coOrd pc, coOrd p0,
+ coOrd p1)
+{
DYNARR_RESET(trkSeg_t,anchors_da);
double d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,anchors_da,9);
@@ -1073,69 +1155,73 @@ void static CreateCurveAnchors(int index, coOrd pm, coOrd pc, coOrd p0, coOrd p1
anchors(0).color = wDrawColorBlue;
anchors(0).u.c.radius = d/2;
anchors(0).u.c.center = p0;
- anchors(0).width = 0;
+ anchors(0).lineWidth = 0;
DYNARR_APPEND(trkSeg_t,anchors_da,8);
anchors(1).type = (index ==1)?SEG_FILCRCL:SEG_CRVLIN;
anchors(1).u.c.a1 = 360.0;
anchors(1).color = wDrawColorBlue;
anchors(1).u.c.radius = d/2;
anchors(1).u.c.center = p1;
- anchors(1).width = 0;
+ anchors(1).lineWidth = 0;
DYNARR_SET(trkSeg_t,anchors_da,anchors_da.cnt+5);
- DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),pm,FindAngle(pm,pc),TRUE,index==2?wDrawColorAqua:wDrawColorBlue);
- if (index>=0) wSetCursor(mainD.d,wCursorNone);
- else wSetCursor(mainD.d,defaultCursor);
+ DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),pm,FindAngle(pm,
+ pc),TRUE,index==2?wDrawColorAqua:wDrawColorBlue);
+ if (index>=0) { wSetCursor(mainD.d,wCursorNone); }
+ else { wSetCursor(mainD.d,defaultCursor); }
}
-void static CreatePolyAnchors(int index) {
- DYNARR_RESET(trkSeg_t,anchors_da);
- double d = tempD.scale*0.15;
- for ( int inx=0; inx<points_da.cnt; inx++ ) {
- DYNARR_APPEND(trkSeg_t,anchors_da,3);
-
- anchors(inx).type = point_selected(inx)?SEG_FILCRCL:SEG_CRVLIN;
- anchors(inx).u.c.a0 = 0.0;
- anchors(inx).u.c.a1 = 360.0;
- anchors(inx).width = 0;
- anchors(inx).color = wDrawColorBlue;
- anchors(inx).u.c.radius = d/2;
- anchors(inx).u.c.center = points(inx).pt;
- }
- if (index>=0) {
- DYNARR_APPEND(trkSeg_t,anchors_da,1);
- int inx = anchors_da.cnt-1;
- anchors(inx).type = SEG_STRLIN;
- anchors(inx).u.l.pos[0] = points(index==0?points_da.cnt-1:index-1).pt;
- anchors(inx).u.l.pos[1] = points(index).pt;
- anchors(inx).color = wDrawColorBlue;
- anchors(inx).width = 0;
- DYNARR_APPEND(trkSeg_t,anchors_da,1);
- inx = anchors_da.cnt-1;
- int index0 = index==0?points_da.cnt-1:index-1;
- ANGLE_T an0 = FindAngle(points(index0).pt, points(index).pt);
- ANGLE_T an1 = FindAngle(points(index0==0?points_da.cnt-1:index0-1).pt, points(index0).pt);
- anchors(inx).type = SEG_CRVLIN;
- if (DifferenceBetweenAngles(an0,an1)<=0) {
- anchors(inx).u.c.a1 = DifferenceBetweenAngles(an0,an1)-180;
- anchors(inx).u.c.a0 = an0;
- } else {
- anchors(inx).u.c.a1 = 180-DifferenceBetweenAngles(an0,an1);
- anchors(inx).u.c.a0 = NormalizeAngle(180+an1);
- }
- anchors(inx).color = wDrawColorBlue;
- anchors(inx).u.c.radius = d;
- anchors(inx).u.c.center = points(index0).pt;
+void static CreatePolyAnchors(int index)
+{
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ double d = tempD.scale*0.15;
+ for ( int inx=0; inx<points_da.cnt; inx++ ) {
+ DYNARR_APPEND(trkSeg_t,anchors_da,3);
+
+ anchors(inx).type = point_selected(inx)?SEG_FILCRCL:SEG_CRVLIN;
+ anchors(inx).u.c.a0 = 0.0;
+ anchors(inx).u.c.a1 = 360.0;
+ anchors(inx).lineWidth = 0;
+ anchors(inx).color = wDrawColorBlue;
+ anchors(inx).u.c.radius = d/2;
+ anchors(inx).u.c.center = points(inx).pt;
+ }
+ if (index>=0) {
+ DYNARR_APPEND(trkSeg_t,anchors_da,1);
+ int inx = anchors_da.cnt-1;
+ anchors(inx).type = SEG_STRLIN;
+ anchors(inx).u.l.pos[0] = points(index==0?points_da.cnt-1:index-1).pt;
+ anchors(inx).u.l.pos[1] = points(index).pt;
+ anchors(inx).color = wDrawColorBlue;
+ anchors(inx).lineWidth = 0;
+ DYNARR_APPEND(trkSeg_t,anchors_da,1);
+ inx = anchors_da.cnt-1;
+ int index0 = index==0?points_da.cnt-1:index-1;
+ ANGLE_T an0 = FindAngle(points(index0).pt, points(index).pt);
+ ANGLE_T an1 = FindAngle(points(index0==0?points_da.cnt-1:index0-1).pt,
+ points(index0).pt);
+ anchors(inx).type = SEG_CRVLIN;
+ if (DifferenceBetweenAngles(an0,an1)<=0) {
+ anchors(inx).u.c.a1 = DifferenceBetweenAngles(an0,an1)-180;
+ anchors(inx).u.c.a0 = an0;
+ } else {
+ anchors(inx).u.c.a1 = 180-DifferenceBetweenAngles(an0,an1);
+ anchors(inx).u.c.a0 = NormalizeAngle(180+an1);
}
+ anchors(inx).color = wDrawColorBlue;
+ anchors(inx).u.c.radius = d;
+ anchors(inx).u.c.center = points(index0).pt;
+ }
}
-void CreateMovingAnchor(coOrd pos,BOOL_T fill) {
+void CreateMovingAnchor(coOrd pos,BOOL_T fill)
+{
double d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
int inx = anchors_da.cnt-1;
anchors(inx).type = fill?SEG_FILCRCL:SEG_CRVLIN;
anchors(inx).u.c.a0 = 0.0;
anchors(inx).u.c.a1 = 360.0;
- anchors(inx).width = 0;
+ anchors(inx).lineWidth = 0;
anchors(inx).color = wDrawColorBlue;
anchors(inx).u.c.radius = d/4;
anchors(inx).u.c.center = pos;
@@ -1150,546 +1236,586 @@ void CreateMovingAnchor(coOrd pos,BOOL_T fill) {
* The last selected node can be deleted
*
*/
-STATUS_T DrawGeomPolyModify(
- wAction_t action,
- coOrd pos,
- drawModContext_t *context) {
+static STATUS_T DrawGeomPolyModify(
+ wAction_t action,
+ coOrd pos,
+ drawModContext_t *context)
+{
double d;
static int selected_count;
static int segInx;
static int prev_inx;
- static wDrawColor save_color;
- static wBool_t drawnAngle;
- static double currentAngle;
- static double baseAngle;
- static BOOL_T lock;
+// static wDrawColor save_color;
+// static wBool_t drawnAngle;
+// static double currentAngle;
+// static double baseAngle;
+// static BOOL_T lock;
switch ( action&0xFF ) {
- case C_START:
- lock = FALSE;
- DistanceSegs( context->orig, context->angle, context->segCnt, context->segPtr, &pos, &segInx );
- if (segInx == -1)
- return C_ERROR;
- if (context->type != SEG_POLY && context->type != SEG_FILPOLY)
- return C_ERROR;
- prev_inx = -1;
- polyState = POLY_SELECTED;
- polyInx = -1;
- //Copy points
- DYNARR_RESET( pts_t, points_da);
- DYNARR_RESET( wBool_t, select_da);
- for (int inx=0;inx<context->segPtr->u.p.cnt;inx++) {
- DYNARR_APPEND(pts_t, points_da,3);
- DYNARR_APPEND(wBool_t,select_da,3);
- REORIGIN( points(inx).pt, context->segPtr[segInx].u.p.pts[inx].pt, context->angle, context->orig );
- points(inx).pt_type = context->segPtr[segInx].u.p.pts[inx].pt_type;
- point_selected(inx) = FALSE;
- }
- context->prev_inx = -1;
- context->max_inx = points_da.cnt-1;
- selected_count=0;
- rotate_origin = context->orig;
- rotate_angle = context->angle;
- context->p0 = points(0).pt;
- context->p1 = points(1).pt;
- //Show points
- tempSegs_da.cnt = 1;
- tempSegs(0).width = context->segPtr->width;
- save_color = context->segPtr->color;
- tempSegs(0).color = wDrawColorRed;
- tempSegs(0).type = context->type;
- tempSegs(0).u.p.cnt = context->segPtr[segInx].u.p.cnt;
- tempSegs(0).u.p.angle = 0.0;
- tempSegs(0).u.p.orig = zero;
- tempSegs(0).u.p.polyType = context->segPtr[segInx].u.p.polyType;
- tempSegs(0).u.p.pts = &points(0);
- CreatePolyAnchors( -1);
- InfoMessage(_("Select points or use context menu"));
- ClrAllTrkBitsRedraw( TB_UNDRAWN, TRUE );
- UndrawNewTrack( context->trk );
- return C_CONTINUE;
- case wActionMove:
- DYNARR_RESET(trkSeg_t,anchors_da);
- CreatePolyAnchors(context->prev_inx);
- for (int i = 0; i<points_da.cnt; i++) {
- if (IsClose(FindDistance(pos,points(i).pt))) {
- CreateMovingAnchor(points(i).pt,TRUE);
- return C_CONTINUE;
- }
+ case C_START:
+// lock = FALSE;
+ DistanceSegs( context->orig, context->angle, context->segCnt, context->segPtr,
+ &pos, &segInx );
+ if (segInx == -1) {
+ return C_ERROR;
+ }
+ if (context->type != SEG_POLY && context->type != SEG_FILPOLY) {
+ return C_ERROR;
+ }
+ prev_inx = -1;
+ polyState = POLY_SELECTED;
+ polyInx = -1;
+ //Copy points
+ DYNARR_RESET( pts_t, points_da);
+ DYNARR_RESET( wBool_t, select_da);
+ for (int inx=0; inx<context->segPtr->u.p.cnt; inx++) {
+ DYNARR_APPEND(pts_t, points_da,3);
+ DYNARR_APPEND(wBool_t,select_da,3);
+ REORIGIN( points(inx).pt, context->segPtr[segInx].u.p.pts[inx].pt,
+ context->angle, context->orig );
+ points(inx).pt_type = context->segPtr[segInx].u.p.pts[inx].pt_type;
+ point_selected(inx) = FALSE;
+ }
+ context->prev_inx = -1;
+ context->max_inx = points_da.cnt-1;
+ selected_count=0;
+ rotate_origin = context->orig;
+ rotate_angle = context->angle;
+ context->p0 = points(0).pt;
+ context->p1 = points(1).pt;
+ //Show points
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ tempSegs(0).lineWidth = context->segPtr->lineWidth;
+// save_color = context->segPtr->color;
+ tempSegs(0).color = wDrawColorRed;
+ tempSegs(0).type = context->type;
+ tempSegs(0).u.p.cnt = context->segPtr[segInx].u.p.cnt;
+ tempSegs(0).u.p.angle = 0.0;
+ tempSegs(0).u.p.orig = zero;
+ tempSegs(0).u.p.polyType = context->segPtr[segInx].u.p.polyType;
+ tempSegs(0).u.p.pts = &points(0);
+ CreatePolyAnchors( -1);
+ InfoMessage(_("Select points or use context menu"));
+ ClrAllTrkBitsRedraw( TB_UNDRAWN, TRUE );
+ UndrawNewTrack( context->trk );
+ return C_CONTINUE;
+ case wActionMove:
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ CreatePolyAnchors(context->prev_inx);
+ for (int i = 0; i<points_da.cnt; i++) {
+ if (IsClose(FindDistance(pos,points(i).pt))) {
+ CreateMovingAnchor(points(i).pt,TRUE);
+ return C_CONTINUE;
}
- wSetCursor(mainD.d,defaultCursor);
- int pInx=0;
- coOrd pm0,pm1;
- DIST_T dm = DIST_INF;
- for ( int inx=0; inx<points_da.cnt; inx++ ) {
- pm0 = pos;
- DIST_T ddm = LineDistance( &pm0, points( inx==0?points_da.cnt-1:inx-1).pt, points(inx).pt );
- if ( dm > ddm ) {
- dm = ddm;
- pm1 = pm0;
- pInx = inx;
- }
+ }
+ wSetCursor(mainD.d,defaultCursor);
+ int pInx=0;
+ coOrd pm0,pm1;
+ DIST_T dm = DIST_INF;
+ for ( int inx=0; inx<points_da.cnt; inx++ ) {
+ pm0 = pos;
+ DIST_T ddm = LineDistance( &pm0, points( inx==0?points_da.cnt-1:inx-1).pt,
+ points(inx).pt );
+ if ( dm > ddm ) {
+ dm = ddm;
+ pm1 = pm0;
+ pInx = inx;
}
- if (!IsClose(dm)) return C_CONTINUE;
- int inxm = pInx==0?points_da.cnt-1:pInx-1;
- dm = FindDistance( points(inxm).pt, pm1 );
- DIST_T ddm = FindDistance( points(inxm).pt, points(pInx).pt );
- if ( (dm > 0.25*ddm) && (dm < 0.75*ddm)) {
- CreateMovingAnchor(pm1,FALSE);
+ }
+ if (!IsClose(dm)) { return C_CONTINUE; }
+ int inxm = pInx==0?points_da.cnt-1:pInx-1;
+ dm = FindDistance( points(inxm).pt, pm1 );
+ DIST_T ddm = FindDistance( points(inxm).pt, points(pInx).pt );
+ if ( (dm > 0.25*ddm) && (dm < 0.75*ddm)) {
+ CreateMovingAnchor(pm1,FALSE);
+ } else {
+ if (dm < FindDistance( points(pInx).pt, pm1 )) {
+ CreateMovingAnchor(points(inxm).pt,TRUE);
} else {
- if (dm < FindDistance( points(pInx).pt, pm1 ))
- CreateMovingAnchor(points(inxm).pt,TRUE);
- else
- CreateMovingAnchor(points(pInx).pt,TRUE);
+ CreateMovingAnchor(points(pInx).pt,TRUE);
}
- return C_CONTINUE;
- break;
- case C_DOWN:
- d = DIST_INF;
- polyInx = -1;
- coOrd p0;
- double dd;
- int inx;
- if ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) != WKEY_SHIFT) {
- if (selected_count <2 ) {
- //Wipe out selection(s) if we don't have multiple already (i,e. move with >1 selected)
- for (int i=0;i<points_da.cnt;i++) {
+ }
+ return C_CONTINUE;
+ break;
+ case C_DOWN:
+ d = DIST_INF;
+ polyInx = -1;
+ coOrd p0;
+ double dd;
+ int inx;
+ if ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) != WKEY_SHIFT) {
+ if (selected_count <2 ) {
+ //Wipe out selection(s) if we don't have multiple already (i,e. move with >1 selected)
+ for (int i=0; i<points_da.cnt; i++) {
+ point_selected(i) = FALSE;
+ }
+ selected_count = 0;
+ } else {
+ for (int i=0; i<points_da.cnt; i++) {
+ if (IsClose(FindDistance(pos,points(i).pt)) && point_selected(i)==TRUE) {
point_selected(i) = FALSE;
- }
- selected_count = 0;
- } else {
- for (int i=0;i<points_da.cnt;i++) {
- if (IsClose(FindDistance(pos,points(i).pt)) && point_selected(i)==TRUE) {
- point_selected(i) = FALSE;
- selected_count--;
- }
+ selected_count--;
}
}
}
- //Select Point (polyInx)
- for ( int inx=0; inx<points_da.cnt; inx++ ) {
- p0 = pos;
- dd = LineDistance( &p0, points( inx==0?points_da.cnt-1:inx-1).pt, points(inx).pt );
- if ( d > dd ) {
- d = dd;
- polyInx = inx;
- }
+ }
+ //Select Point (polyInx)
+ for ( int inx=0; inx<points_da.cnt; inx++ ) {
+ p0 = pos;
+ dd = LineDistance( &p0, points( inx==0?points_da.cnt-1:inx-1).pt,
+ points(inx).pt );
+ if ( d > dd ) {
+ d = dd;
+ polyInx = inx;
}
- if (!IsClose(d)) { //Not on/near object - de-select all points
- for (int i=0;i<points_da.cnt;i++) {
- point_selected(i) = FALSE;
+ }
+ if (!IsClose(d)) { //Not on/near object - de-select all points
+ for (int i=0; i<points_da.cnt; i++) {
+ point_selected(i) = FALSE;
+ }
+ polyInx = -1;
+ selected_count = 0;
+ CreatePolyAnchors( -1);
+ context->prev_inx = -1;
+ return C_CONTINUE; //Not close to any line
+ }
+ polyState = POLYPOINT_SELECTED;
+ inx = polyInx==0?points_da.cnt-1:polyInx-1;
+ //Find if the point is to be added
+ d = FindDistance( points(inx).pt, pos );
+ dd = FindDistance( points(inx).pt, points(polyInx).pt );
+ if ( d < 0.25*dd ) {
+ polyInx = inx;
+ } else if ( d > 0.75*dd ) {
+ ;
+ } else {
+ if (selected_count ==
+ 0) { //Only add a new point if no points are already selected!
+ DYNARR_APPEND(wBool_t,select_da,1);
+ for (int i=0; i<select_da.cnt; i++) {
+ if (i == polyInx) { point_selected(i) = TRUE; }
+ else { point_selected(i) = FALSE; }
}
- polyInx = -1;
- selected_count = 0;
- CreatePolyAnchors( -1);
- context->prev_inx = -1;
- return C_CONTINUE; //Not close to any line
- }
- polyState = POLYPOINT_SELECTED;
- inx = polyInx==0?points_da.cnt-1:polyInx-1;
- //Find if the point is to be added
- d = FindDistance( points(inx).pt, pos );
- dd = FindDistance( points(inx).pt, points(polyInx).pt );
- if ( d < 0.25*dd ) {
- polyInx = inx;
- } else if ( d > 0.75*dd ) {
- ;
- } else {
- if (selected_count == 0) { //Only add a new point if no points are already selected!
- DYNARR_APPEND(wBool_t,select_da,1);
- for (int i=0;i<select_da.cnt;i++) {
- if (i == polyInx) point_selected(i) = TRUE;
- else point_selected(i) = FALSE;
- }
- selected_count=1;
- DYNARR_APPEND(pts_t,points_da,1);
- tempSegs(0).u.p.pts = &points(0);
- for (inx=points_da.cnt-1; inx>polyInx; inx-- ) {
- points(inx) = points(inx-1);
- }
- points(polyInx).pt_type = wPolyLineStraight;
- tempSegs(0).u.p.cnt = points_da.cnt;
- context->max_inx = points_da.cnt-1;
+ selected_count=1;
+ DYNARR_APPEND(pts_t,points_da,1);
+ tempSegs(0).u.p.pts = &points(0);
+ for (inx=points_da.cnt-1; inx>polyInx; inx-- ) {
+ points(inx) = points(inx-1);
}
+ points(polyInx).pt_type = wPolyLineStraight;
+ tempSegs(0).u.p.cnt = points_da.cnt;
+ context->max_inx = points_da.cnt-1;
}
- //If already selected (multiple points), not using shift (to add) select, and on object move to first point
- if (selected_count>0 && ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) != WKEY_SHIFT)) {
- for (int i=0; i<points_da.cnt;i++) {
- if (IsClose(FindDistance(pos,points(i).pt))) {
+ }
+ //If already selected (multiple points), not using shift (to add) select, and on object move to first point
+ if (selected_count>0
+ && ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) != WKEY_SHIFT)) {
+ for (int i=0; i<points_da.cnt; i++) {
+ if (IsClose(FindDistance(pos,points(i).pt))) {
- point_selected(i) = FALSE;
+ point_selected(i) = FALSE;
- }
- if (point_selected(i) == TRUE) {
- polyInx = i;
- }
}
- }
- pos = points(polyInx).pt; //Move to point
- if (point_selected(polyInx)) { //Already selected
- } else {
- point_selected(polyInx) = TRUE;
- ++selected_count;
- }
- //Work out before and after point
- int first_inx = -1;
- if (selected_count >0 && selected_count < points_da.cnt-2) {
- for (int i=0; i<points_da.cnt;i++) {
- if (point_selected(i)) {
- first_inx = i;
- break;
- }
+ if (point_selected(i) == TRUE) {
+ polyInx = i;
}
}
- int last_inx = -1, next_inx = -1;
- ANGLE_T an1, an0;
- if (first_inx >=0) {
- if (first_inx == 0) {
- last_inx = points_da.cnt-1;
- } else {
- last_inx = first_inx-1;
- }
- if (first_inx == points_da.cnt-1) {
- next_inx = 0;
- } else {
- next_inx = first_inx+1;
- }
- context->length = FindDistance(points(last_inx).pt,points(first_inx).pt);
- an1 = FindAngle(points(last_inx).pt,points(first_inx).pt);
- an0 = FindAngle(points(last_inx==0?(points_da.cnt-1):(last_inx-1)).pt,points(last_inx).pt);
- if (DifferenceBetweenAngles(an0,an1)<=0) {
- context->rel_angle = 180+DifferenceBetweenAngles(an0,an1);
- } else {
- context->rel_angle = 180-DifferenceBetweenAngles(an0,an1);
+ }
+ pos = points(polyInx).pt; //Move to point
+ if (point_selected(polyInx)) { //Already selected
+ } else {
+ point_selected(polyInx) = TRUE;
+ ++selected_count;
+ }
+ //Work out before and after point
+ int first_inx = -1;
+ if (selected_count >0 && selected_count < points_da.cnt-2) {
+ for (int i=0; i<points_da.cnt; i++) {
+ if (point_selected(i)) {
+ first_inx = i;
+ break;
}
+ }
+ }
+ int last_inx = -1;
+// int next_inx = -1;
+ ANGLE_T an1, an0;
+ if (first_inx >=0) {
+ if (first_inx == 0) {
+ last_inx = points_da.cnt-1;
} else {
-
+ last_inx = first_inx-1;
+ }
+// if (first_inx == points_da.cnt-1) {
+// next_inx = 0;
+// } else {
+// next_inx = first_inx+1;
+// }
+ context->length = FindDistance(points(last_inx).pt,points(first_inx).pt);
+ an1 = FindAngle(points(last_inx).pt,points(first_inx).pt);
+ an0 = FindAngle(points(last_inx==0?(points_da.cnt-1):(last_inx-1)).pt,
+ points(last_inx).pt);
+ if (DifferenceBetweenAngles(an0,an1)<=0) {
+ context->rel_angle = 180+DifferenceBetweenAngles(an0,an1);
+ } else {
+ context->rel_angle = 180-DifferenceBetweenAngles(an0,an1);
}
- context->prev_inx = first_inx;
- context->p0 = points(0).pt;
- context->p1 = points(1).pt;
- //Show three anchors only
- CreatePolyAnchors(first_inx);
- return C_CONTINUE;
- case C_LDOUBLE:
+ } else {
+
+ }
+ context->prev_inx = first_inx;
+ context->p0 = points(0).pt;
+ context->p1 = points(1).pt;
+ //Show three anchors only
+ CreatePolyAnchors(first_inx);
+ return C_CONTINUE;
+ case C_LDOUBLE:
+ return C_CONTINUE;
+ case C_MOVE:
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ if (polyState != POLYPOINT_SELECTED) {
return C_CONTINUE;
- case C_MOVE:
- tempSegs_da.cnt = 1;
- if (polyState != POLYPOINT_SELECTED) {
- return C_CONTINUE;
- }
- //Moving with Point Selected
- if (polyInx<0) return C_ERROR;
- first_inx = -1;
- if (selected_count >0 && selected_count < points_da.cnt-2) {
- for (int i=0; i<points_da.cnt;i++) {
- if (point_selected(i)) {
- first_inx = i;
- break;
- }
+ }
+ //Moving with Point Selected
+ if (polyInx<0) { return C_ERROR; }
+ first_inx = -1;
+ if (selected_count >0 && selected_count < points_da.cnt-2) {
+ for (int i=0; i<points_da.cnt; i++) {
+ if (point_selected(i)) {
+ first_inx = i;
+ break;
}
}
- last_inx = -1;
- next_inx = -1;
- coOrd intersect;
- wBool_t show_intersect = FALSE;
- if (first_inx >=0) {
+ }
+ last_inx = -1;
+// next_inx = -1;
+ coOrd intersect;
+ wBool_t show_intersect = FALSE;
+ if (first_inx >=0) {
+ if (first_inx == 0) {
+ last_inx = points_da.cnt-1;
+ } else {
+ last_inx = first_inx-1;
+ }
+// if (first_inx == points_da.cnt-1) {
+// next_inx = 0;
+// } else {
+// next_inx = first_inx+1;
+// }
+ //Lock to 90 degrees first/last point
+ if ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) == WKEY_CTRL ) {
+ ANGLE_T last_angle;
+// ANGLE_T next_angle;
+ coOrd last_point,next_point;
if (first_inx == 0) {
- last_inx = points_da.cnt-1;
+ last_point = points(points_da.cnt-1).pt;
+ last_angle = FindAngle(points(points_da.cnt-2).pt,last_point);
+ } else if (first_inx == 1) {
+ last_point = points(0).pt;
+ last_angle = FindAngle(points(points_da.cnt-1).pt,last_point);
} else {
- last_inx = first_inx-1;
+ last_point = points(first_inx-1).pt;
+ last_angle = FindAngle(points(first_inx-2).pt,last_point);
}
if (first_inx == points_da.cnt-1) {
- next_inx = 0;
+ next_point = points(0).pt;
+// next_angle = FindAngle(next_point,points(1).pt);
+ } else if (first_inx == points_da.cnt-2) {
+ next_point = points(points_da.cnt-1).pt;
+// next_angle = FindAngle(next_point,points(0).pt);
} else {
- next_inx = first_inx+1;
+ next_point = points(first_inx+1).pt;
+// next_angle = FindAngle(next_point,points(first_inx+2).pt);
}
- //Lock to 90 degrees first/last point
- if ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) == WKEY_CTRL ) {
- ANGLE_T last_angle,next_angle;
- coOrd last_point,next_point;
- if (first_inx == 0) {
- last_point = points(points_da.cnt-1).pt;
- last_angle = FindAngle(points(points_da.cnt-2).pt,last_point);
- } else if (first_inx == 1) {
- last_point = points(0).pt;
- last_angle = FindAngle(points(points_da.cnt-1).pt,last_point);
- } else {
- last_point = points(first_inx-1).pt;
- last_angle = FindAngle(points(first_inx-2).pt,last_point);
- }
- if (first_inx == points_da.cnt-1) {
- next_point = points(0).pt;
- next_angle = FindAngle(next_point,points(1).pt);
- } else if (first_inx == points_da.cnt-2){
- next_point = points(points_da.cnt-1).pt;
- next_angle = FindAngle(next_point,points(0).pt);
- } else {
- next_point = points(first_inx+1).pt;
- next_angle = FindAngle(next_point,points(first_inx+2).pt);
- }
- coOrd diff;
- diff.x = pos.x - points(polyInx).pt.x;
- diff.y = pos.y - points(polyInx).pt.y;
- coOrd pos_lock = points(first_inx).pt;
- pos_lock.x += diff.x;
- pos_lock.y += diff.y;
- //Snap to Right-Angle from previous or from 0
- DIST_T l = FindDistance(last_point, pos_lock);
- ANGLE_T angle2 = NormalizeAngle(FindAngle(last_point, pos_lock)-last_angle);
- int quad = (int)((angle2+45.0)/90.0);
- if (tempSegs_da.cnt != 1 && (quad == 2)) {
- pos_lock = last_point;
- } else if (quad == 1 || quad == 3) {
- l = fabs(l*cos(D2R(((quad==1)?last_angle+90.0:last_angle-90.0)-FindAngle(pos_lock,last_point))));
- Translate( &pos_lock, last_point, NormalizeAngle((quad==1)?last_angle+90.0:last_angle-90.0), l );
- } else {
- l = fabs(l*cos(D2R(((quad==0||quad==4)?last_angle:last_angle+180.0)-FindAngle(pos_lock,last_point))));
- Translate( &pos_lock, last_point, NormalizeAngle((quad==0||quad==4)?last_angle:last_angle+180.0), l );
- }
- diff.x = pos_lock.x - points(first_inx).pt.x;
- diff.y = pos_lock.y - points(first_inx).pt.y;
- pos.x = points(polyInx).pt.x+diff.x;
- pos.y = points(polyInx).pt.y+diff.y;
- if (selected_count<2) {
- if (FindIntersection(&intersect,last_point,last_angle+90.0,next_point,last_angle+180.0)) {
- show_intersect = TRUE;
- }
- }
- d = FindDistance(intersect,pos_lock);
- if (IsClose(d)) {
- pos = intersect;
+ coOrd diff;
+ diff.x = pos.x - points(polyInx).pt.x;
+ diff.y = pos.y - points(polyInx).pt.y;
+ coOrd pos_lock = points(first_inx).pt;
+ pos_lock.x += diff.x;
+ pos_lock.y += diff.y;
+ //Snap to Right-Angle from previous or from 0
+ DIST_T l = FindDistance(last_point, pos_lock);
+ ANGLE_T angle2 = NormalizeAngle(FindAngle(last_point, pos_lock)-last_angle);
+ int quad = (int)((angle2+45.0)/90.0);
+ if (tempSegs_da.cnt != 1 && (quad == 2)) {
+ pos_lock = last_point;
+ } else if (quad == 1 || quad == 3) {
+ l = fabs(l*cos(D2R(((quad==1)?last_angle+90.0:last_angle-90.0)-FindAngle(
+ pos_lock,last_point))));
+ Translate( &pos_lock, last_point,
+ NormalizeAngle((quad==1)?last_angle+90.0:last_angle-90.0), l );
+ } else {
+ l = fabs(l*cos(D2R(((quad==0
+ ||quad==4)?last_angle:last_angle+180.0)-FindAngle(pos_lock,last_point))));
+ Translate( &pos_lock, last_point, NormalizeAngle((quad==0
+ ||quad==4)?last_angle:last_angle+180.0), l );
+ }
+ diff.x = pos_lock.x - points(first_inx).pt.x;
+ diff.y = pos_lock.y - points(first_inx).pt.y;
+ pos.x = points(polyInx).pt.x+diff.x;
+ pos.y = points(polyInx).pt.y+diff.y;
+ if (selected_count<2) {
+ if (FindIntersection(&intersect,last_point,last_angle+90.0,next_point,
+ last_angle+180.0)) {
+ show_intersect = TRUE;
}
- InfoMessage( _("Length = %s, Last angle = %0.2f"),
- FormatDistance(FindDistance(pos_lock,last_point)),
- PutAngle(FindAngle(pos_lock,last_point)));
-
- } else SnapPos(&pos); //If not using CTL and snap enabled
- }
- context->prev_inx = first_inx;
- coOrd diff;
- diff.x = pos.x - points(polyInx).pt.x;
- diff.y = pos.y - points(polyInx).pt.y;
- //points(polyInx) = pos;
- for (int i=0;i<points_da.cnt;i++) {
- if (point_selected(i)) {
- points(i).pt.x = points(i).pt.x + diff.x;
- points(i).pt.y = points(i).pt.y + diff.y;
}
+ d = FindDistance(intersect,pos_lock);
+ if (IsClose(d)) {
+ pos = intersect;
+ }
+ InfoMessage( _("Length = %s, Last angle = %0.2f"),
+ FormatDistance(FindDistance(pos_lock,last_point)),
+ PutAngle(FindAngle(pos_lock,last_point)));
+
+ } else { SnapPos(&pos); } //If not using CTL and snap enabled
+ }
+ context->prev_inx = first_inx;
+ coOrd diff;
+ diff.x = pos.x - points(polyInx).pt.x;
+ diff.y = pos.y - points(polyInx).pt.y;
+ //points(polyInx) = pos;
+ for (int i=0; i<points_da.cnt; i++) {
+ if (point_selected(i)) {
+ points(i).pt.x = points(i).pt.x + diff.x;
+ points(i).pt.y = points(i).pt.y + diff.y;
}
- if (first_inx>=0) {
- context->length = FindDistance(points(first_inx).pt,points(last_inx).pt);
- an1 = FindAngle(points(last_inx).pt,points(first_inx).pt);
- an0 = FindAngle(points(first_inx==0?(points_da.cnt-1):(first_inx-1)).pt,points(first_inx).pt);
- context->rel_angle = NormalizeAngle(180-(an1-an0));
+ }
+ if (first_inx>=0) {
+ context->length = FindDistance(points(first_inx).pt,points(last_inx).pt);
+ an1 = FindAngle(points(last_inx).pt,points(first_inx).pt);
+ an0 = FindAngle(points(first_inx==0?(points_da.cnt-1):(first_inx-1)).pt,
+ points(first_inx).pt);
+ context->rel_angle = NormalizeAngle(180-(an1-an0));
+ }
+ CreatePolyAnchors(first_inx);
+ if (show_intersect) {
+ CreateSquareAnchor(intersect);
+ }
+ context->p0 = points(0).pt;
+ context->p1 = points(1).pt;
+ return C_CONTINUE;
+ case C_UP:
+ context->prev_inx = -1;
+ if (segInx == -1 || polyState != POLYPOINT_SELECTED) {
+ return C_CONTINUE; //Didn't get a point selected/added
+ }
+ polyState = POLY_SELECTED; //Return to base state
+ DYNARR_RESET( trkSeg_t, anchors_da );
+ CreatePolyAnchors(polyInx); //Show last selection
+ prev_inx = polyInx;
+ for (int i=0; i<points_da.cnt; i++) {
+ if (point_selected(i)) {
+ first_inx = i;
+ break;
}
- CreatePolyAnchors(first_inx);
- if (show_intersect)
- CreateSquareAnchor(intersect);
- context->p0 = points(0).pt;
- context->p1 = points(1).pt;
- return C_CONTINUE;
- case C_UP:
- context->prev_inx = -1;
- if (segInx == -1 || polyState != POLYPOINT_SELECTED)
- return C_CONTINUE; //Didn't get a point selected/added
- polyState = POLY_SELECTED; //Return to base state
- anchors_da.cnt = 0;
- CreatePolyAnchors(polyInx); //Show last selection
- prev_inx = polyInx;
- for (int i=0;i<points_da.cnt;i++) {
- if (point_selected(i)) {
- first_inx = i;
- break;
- }
+ }
+ last_inx = first_inx==0?(points_da.cnt-1):(first_inx-1);
+ if (first_inx>=0) {
+ context->length = FindDistance(points(first_inx).pt,points(last_inx).pt);
+ an1 = FindAngle(points(last_inx).pt,points(first_inx).pt);
+ an0 = FindAngle(points(last_inx==0?(points_da.cnt-1):(last_inx-1)).pt,
+ points(last_inx).pt);
+ if (DifferenceBetweenAngles(an0,an1)<=0) {
+ context->rel_angle = 180+DifferenceBetweenAngles(an0,an1);
+ } else {
+ context->rel_angle = 180-DifferenceBetweenAngles(an0,an1);
}
- last_inx = first_inx==0?(points_da.cnt-1):(first_inx-1);
- if (first_inx>=0) {
- context->length = FindDistance(points(first_inx).pt,points(last_inx).pt);
- an1 = FindAngle(points(last_inx).pt,points(first_inx).pt);
- an0 = FindAngle(points(last_inx==0?(points_da.cnt-1):(last_inx-1)).pt,points(last_inx).pt);
- if (DifferenceBetweenAngles(an0,an1)<=0) {
- context->rel_angle = 180+DifferenceBetweenAngles(an0,an1);
- } else {
- context->rel_angle = 180-DifferenceBetweenAngles(an0,an1);
- }
+ }
+ context->prev_inx = first_inx;
+ context->p0 = points(0).pt;
+ context->p1 = points(1).pt;
+ polyInx = -1;
+ return C_CONTINUE;
+ case C_UPDATE:
+ if (context->prev_inx>=0) {
+ int last_index = context->prev_inx==0?(points_da.cnt-1):(context->prev_inx-1);
+ an0 = FindAngle(points(last_index==0?(points_da.cnt-1):(last_index-1)).pt,
+ points(last_index).pt);
+ an1 = FindAngle(points(last_index).pt,points(context->prev_inx).pt);
+ if (DifferenceBetweenAngles(an0,an1)<=0) {
+ an1 = NormalizeAngle(an0-(180-context->rel_angle));
+ } else {
+ an1 = NormalizeAngle((180-context->rel_angle)+an0);
}
- context->prev_inx = first_inx;
- context->p0 = points(0).pt;
- context->p1 = points(1).pt;
- polyInx = -1;
+ Translate(&points(prev_inx).pt,points(last_index).pt,an1,context->length);
+ }
+ context->rel_angle = fabs(context->rel_angle);
+ if (context->rel_angle >180) { context->rel_angle = context->rel_angle - 180.0; }
+ CreatePolyAnchors(prev_inx);
+ context->p0 = points(0).pt;
+ context->p1 = points(1).pt;
+ break;
+ case C_TEXT:
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ if (action>>8 == 'o') { //"o" -> origin mode
+ MenuMode(I2VP(1));
+ InfoMessage("Move Origin Mode: Place Origin, p for Points, Enter or Esc");
return C_CONTINUE;
- case C_UPDATE:
- if (context->prev_inx>=0) {
- int last_index = context->prev_inx==0?(points_da.cnt-1):(context->prev_inx-1);
- an0 = FindAngle(points(last_index==0?(points_da.cnt-1):(last_index-1)).pt,points(last_index).pt);
- an1 = FindAngle(points(last_index).pt,points(context->prev_inx).pt);
- if (DifferenceBetweenAngles(an0,an1)<=0) {
- an1 = NormalizeAngle(an0-(180-context->rel_angle));
- } else {
- an1 = NormalizeAngle((180-context->rel_angle)+an0);
- }
- Translate(&points(prev_inx).pt,points(last_index).pt,an1,context->length);
- }
- context->rel_angle = fabs(context->rel_angle);
- if (context->rel_angle >180) context->rel_angle = context->rel_angle - 180.0;
- CreatePolyAnchors(prev_inx);
- context->p0 = points(0).pt;
- context->p1 = points(1).pt;
- break;
- case C_TEXT:
- if (action>>8 == 'o') { //"o" -> origin mode
- MenuMode(I2VP(1));
- InfoMessage("Move Origin Mode: Place Origin, p for Points, Enter or Esc");
+ }
+ if (((prev_inx>=0 && tempSegs(0).u.p.polyType != POLYLINE) ||
+ ((tempSegs(0).u.p.polyType == POLYLINE) && (prev_inx>=1)
+ && (prev_inx<=points_da.cnt-2)) ) &&
+ ((action>>8 == 's') || (action>>8 == 'v') || (action>>8 == 'r'))) {
+ switch(action>>8) {
+ case 's':
+ points(context->prev_inx).pt_type = wPolyLineSmooth;
return C_CONTINUE;
+ case 'v':
+ points(context->prev_inx).pt_type = wPolyLineStraight;
+ return C_CONTINUE;
+ case 'r':
+ points(context->prev_inx).pt_type = wPolyLineRound;
+ return C_CONTINUE;
+ default:;
}
- if (((prev_inx>=0 && tempSegs(0).u.p.polyType != POLYLINE) ||
- ((tempSegs(0).u.p.polyType == POLYLINE) && (prev_inx>=1) && (prev_inx<=points_da.cnt-2)) ) &&
- ((action>>8 == 's') || (action>>8 == 'v') || (action>>8 == 'r'))) {
- switch(action>>8) {
- case 's':
- points(context->prev_inx).pt_type = wPolyLineSmooth;
- return C_CONTINUE;
- case 'v':
- points(context->prev_inx).pt_type = wPolyLineStraight;
+ }
+ if ((action>>8 == 'g') && (tempSegs(0).type == SEG_POLY)
+ && (tempSegs(0).u.p.polyType == POLYLINE) ) {
+ tempSegs(0).u.p.polyType = FREEFORM;
+ context->subtype=FREEFORM;
+ context->open = FALSE;
+ CreatePolyAnchors( -1);
+ return C_CONTINUE;
+ }
+ if ((action>>8 == 'l') && (tempSegs(0).type == SEG_POLY)
+ && (tempSegs(0).u.p.polyType != POLYLINE)) {
+ tempSegs(0).u.p.polyType = POLYLINE;
+ context->subtype=POLYLINE;
+ context->open = TRUE;
+ CreatePolyAnchors( -1);
+ return C_CONTINUE;
+ }
+ if ((action>>8 == 'f') && (tempSegs(0).type == SEG_POLY)
+ && (tempSegs(0).u.p.polyType != POLYLINE )) {
+ tempSegs(0).type = SEG_FILPOLY;
+ context->type = SEG_FILPOLY;
+ context->subtype=tempSegs(0).u.p.polyType;
+ context->filled = TRUE;
+ CreatePolyAnchors( -1);
+ return C_CONTINUE;
+ }
+ if ((action>>8 == 'u') && (tempSegs(0).type == SEG_FILPOLY) ) {
+ tempSegs(0).type = SEG_POLY;
+ context->type = SEG_POLY;
+ context->subtype=tempSegs(0).u.p.polyType;
+ context->filled = FALSE;
+ CreatePolyAnchors( -1);
+ return C_CONTINUE;
+ }
+ //Delete or backspace deletes last selected index
+ if (action>>8 == 127 || action>>8 == 8) {
+ if (polyState == POLY_SELECTED && prev_inx >=0) {
+ if (selected_count >1) {
+ ErrorMessage( MSG_POLY_MULTIPLE_SELECTED );
return C_CONTINUE;
- case 'r':
- points(context->prev_inx).pt_type = wPolyLineRound;
+ }
+ if (points_da.cnt <= 3) {
+ ErrorMessage( MSG_POLY_SHAPES_3_SIDES );
return C_CONTINUE;
- default:;
}
- }
- if ((action>>8 == 'g') && (tempSegs(0).type == SEG_POLY) && (tempSegs(0).u.p.polyType == POLYLINE) ) {
- tempSegs(0).u.p.polyType = FREEFORM;
- context->subtype=FREEFORM;
- context->open = FALSE;
- CreatePolyAnchors( -1);
- return C_CONTINUE;
- }
- if ((action>>8 == 'l') && (tempSegs(0).type == SEG_POLY) && (tempSegs(0).u.p.polyType == FREEFORM)) {
- tempSegs(0).u.p.polyType = POLYLINE;
- context->subtype=POLYLINE;
- context->open = TRUE;
- CreatePolyAnchors( -1);
- return C_CONTINUE;
- }
- if ((action>>8 == 'f') && (tempSegs(0).type == SEG_POLY) && (tempSegs(0).u.p.polyType != POLYLINE )) {
- tempSegs(0).type = SEG_FILPOLY;
- tempSegs(0).u.p.polyType = FREEFORM;
- context->type = SEG_FILPOLY;
- context->subtype=FREEFORM;
- context->filled = TRUE;
- CreatePolyAnchors( -1);
- return C_CONTINUE;
- }
- if ((action>>8 == 'u') && (tempSegs(0).type == SEG_FILPOLY) ) {
- tempSegs(0).type = SEG_POLY;
- tempSegs(0).u.p.polyType = FREEFORM;
- context->type = SEG_POLY;
- context->subtype=FREEFORM;
- context->filled = FALSE;
- CreatePolyAnchors( -1);
- return C_CONTINUE;
- }
- //Delete or backspace deletes last selected index
- if (action>>8 == 127 || action>>8 == 8) {
- if (polyState == POLY_SELECTED && prev_inx >=0) {
- if (selected_count >1) {
- ErrorMessage( MSG_POLY_MULTIPLE_SELECTED );
- return C_CONTINUE;
- }
- if (points_da.cnt <= 3) {
- ErrorMessage( MSG_POLY_SHAPES_3_SIDES );
- return C_CONTINUE;
- }
- for (int i=0;i<points_da.cnt;i++) {
- point_selected(i) = FALSE;
- if (i>=prev_inx && i<points_da.cnt-1)
- points(i) = points(i+1);
+ for (int i=0; i<points_da.cnt; i++) {
+ point_selected(i) = FALSE;
+ if (i>=prev_inx && i<points_da.cnt-1) {
+ points(i) = points(i+1);
}
- points_da.cnt--;
- select_da.cnt--;
- selected_count=0;
- tempSegs(0).u.p.cnt = points_da.cnt;
- context->max_inx = points_da.cnt-1;
- } else {
- ErrorMessage( MSG_POLY_NOTHING_SELECTED );
}
- prev_inx = -1;
- context->prev_inx = -1;
- polyInx = -1;
- polyState = POLY_SELECTED;
- CreatePolyAnchors( -1);
- InfoMessage(_("Point Deleted"));
- return C_CONTINUE;
- }
- if (action>>8 != 32 && action>>8 != 13 && action>>8 !=9) return C_CONTINUE;
- if (action>>8 == 9 && (MyGetKeyState() & WKEY_SHIFT) != 0) return C_TERMINATE;
- /* no break */
- case C_CONFIRM:
- case C_OK:
- case C_FINISH:
- //copy changes back into track
- if (polyState != POLY_SELECTED) {
- polyState = POLY_NONE;
- DYNARR_RESET(trkSeg_t,anchors_da);
- DYNARR_RESET(trkSeg_t,tempSegs_da);
- return C_TERMINATE;
- }
- //If ends overlap precisely remove last segment and close if >3 points
- DIST_T dist = FindDistance(points(0).pt,points(points_da.cnt-1).pt);
- if (IsClose(dist*4) && points_da.cnt>3 && tempSegs(0).u.p.polyType == POLYLINE) {
- tempSegs(0).u.p.polyType = FREEFORM;
- context->subtype=FREEFORM;
- context->open = FALSE;
points_da.cnt--;
select_da.cnt--;
selected_count=0;
tempSegs(0).u.p.cnt = points_da.cnt;
context->max_inx = points_da.cnt-1;
+ } else {
+ ErrorMessage( MSG_POLY_NOTHING_SELECTED );
}
- pts_t * oldPts = context->segPtr[segInx].u.p.pts;
- void * newPts = (pts_t*)MyMalloc( points_da.cnt * sizeof (pts_t) );
- context->segPtr[segInx].u.p.pts = newPts;
- context->segPtr[segInx].u.p.cnt = points_da.cnt;
- context->orig = rotate_origin;
- context->angle = rotate_angle;
- for (int i=0; i<points_da.cnt; i++) {
- pos = points(i).pt;
- pos.x -= context->orig.x;
- pos.y -= context->orig.y;
- Rotate( &pos, zero, -context->angle );
- context->segPtr[segInx].u.p.pts[i].pt = pos;
- context->segPtr[segInx].u.p.pts[i].pt_type = points(i).pt_type;
- }
- MyFree(oldPts);
+ prev_inx = -1;
+ context->prev_inx = -1;
+ polyInx = -1;
+ polyState = POLY_SELECTED;
+ CreatePolyAnchors( -1);
+ InfoMessage(_("Point Deleted"));
+ return C_CONTINUE;
+ }
+ if (action>>8 != 32 && action>>8 != 13 && action>>8 !=9) { return C_CONTINUE; }
+ if (action>>8 == 9 && (MyGetKeyState() & WKEY_SHIFT) != 0) { return C_TERMINATE; }
+ /* no break */
+ case C_CONFIRM:
+ case C_OK:
+ case C_FINISH:
+ //copy changes back into track
+ if (polyState != POLY_SELECTED) {
polyState = POLY_NONE;
DYNARR_RESET(trkSeg_t,anchors_da);
- DYNARR_RESET(trkSeg_t,points_da);
DYNARR_RESET(trkSeg_t,tempSegs_da);
- if ((action&0xFF)==C_CONFIRM) return C_CONTINUE;
- else return C_TERMINATE;
- case C_REDRAW:
- if (polyState == POLY_NONE) return C_CONTINUE;
- DrawSegs( &tempD, zero, 0.0, &tempSegs(0), tempSegs_da.cnt,trackGauge, wDrawColorBlack);
- DrawSegs( &tempD, zero, 0.0, &anchors(0), anchors_da.cnt, trackGauge, wDrawColorBlack );
- break;
- default:
- ;
+ return C_TERMINATE;
}
- return C_CONTINUE;
+ //If ends overlap precisely remove last segment and close if >3 points
+ DIST_T dist = FindDistance(points(0).pt,points(points_da.cnt-1).pt);
+ if (IsClose(dist*4) && points_da.cnt>3
+ && tempSegs(0).u.p.polyType == POLYLINE) {
+ tempSegs(0).u.p.polyType = FREEFORM;
+ context->subtype=FREEFORM;
+ context->open = FALSE;
+ points_da.cnt--;
+ select_da.cnt--;
+ selected_count=0;
+ tempSegs(0).u.p.cnt = points_da.cnt;
+ context->max_inx = points_da.cnt-1;
+ }
+ pts_t * oldPts = context->segPtr[segInx].u.p.pts;
+ void * newPts = (pts_t*)MyMalloc( points_da.cnt * sizeof (pts_t) );
+ context->segPtr[segInx].u.p.pts = newPts;
+ context->segPtr[segInx].u.p.cnt = points_da.cnt;
+ context->orig = rotate_origin;
+ context->angle = rotate_angle;
+ for (int i=0; i<points_da.cnt; i++) {
+ pos = points(i).pt;
+ pos.x -= context->orig.x;
+ pos.y -= context->orig.y;
+ Rotate( &pos, zero, -context->angle );
+ context->segPtr[segInx].u.p.pts[i].pt = pos;
+ context->segPtr[segInx].u.p.pts[i].pt_type = points(i).pt_type;
+ }
+ MyFree(oldPts);
+ polyState = POLY_NONE;
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ DYNARR_RESET(trkSeg_t,points_da);
+ DYNARR_RESET(trkSeg_t,tempSegs_da);
+ if ((action&0xFF)==C_CONFIRM) {
+ return C_CONTINUE;
+ } else {
+ return C_TERMINATE;
+ }
+ case C_REDRAW:
+ if (polyState == POLY_NONE) { return C_CONTINUE; }
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &tempSegs_da, trackGauge, wDrawColorBlack,
+ 0 );
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack,
+ 0 );
+ break;
+ default:
+ ;
+ }
+ return C_CONTINUE;
}
-void BuildCircleContext(drawModContext_t * context,int segInx) {
+void BuildCircleContext(drawModContext_t * context,int segInx)
+{
context->radius = fabs(context->segPtr[segInx].u.c.radius);
- REORIGIN( context->pc, context->segPtr[segInx].u.c.center, context->angle, context->orig );
- PointOnCircle( &context->p0, context->segPtr[segInx].u.c.center, fabs(context->segPtr[segInx].u.c.radius), context->segPtr[segInx].u.c.a0 );
+ REORIGIN( context->pc, context->segPtr[segInx].u.c.center, context->angle,
+ context->orig );
+ PointOnCircle( &context->p0, context->segPtr[segInx].u.c.center,
+ fabs(context->segPtr[segInx].u.c.radius), context->segPtr[segInx].u.c.a0 );
REORIGIN( context->p0, context->p0, context->angle, context->orig );
- PointOnCircle( &context->p1, context->segPtr[segInx].u.c.center, fabs(context->segPtr[segInx].u.c.radius), context->segPtr[segInx].u.c.a0 + context->segPtr[segInx].u.c.a1);
+ PointOnCircle( &context->p1, context->segPtr[segInx].u.c.center,
+ fabs(context->segPtr[segInx].u.c.radius),
+ context->segPtr[segInx].u.c.a0 + context->segPtr[segInx].u.c.a1);
REORIGIN( context->p1, context->p1, context->angle, context->orig );
if (context->segPtr[segInx].u.c.a1<360) {
context->arc_angle = context->segPtr[segInx].u.c.a1;
- PointOnCircle( &context->pm, context->segPtr[segInx].u.c.center, fabs(context->segPtr[segInx].u.c.radius), context->segPtr[segInx].u.c.a0 + (context->segPtr[segInx].u.c.a1/2));
+ PointOnCircle( &context->pm, context->segPtr[segInx].u.c.center,
+ fabs(context->segPtr[segInx].u.c.radius),
+ context->segPtr[segInx].u.c.a0 + (context->segPtr[segInx].u.c.a1/2));
REORIGIN( context->pm, context->pm, context->angle, context->orig );
coOrd cm;
cm = context->pm;
@@ -1703,7 +1829,8 @@ void BuildCircleContext(drawModContext_t * context,int segInx) {
}
}
-void CreateSelectedAnchor(coOrd pos) {
+void CreateSelectedAnchor(coOrd pos)
+{
double d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
int inx = anchors_da.cnt-1;
@@ -1728,125 +1855,135 @@ void CreateSelectedAnchor(coOrd pos) {
**/
STATUS_T DrawGeomOriginMove(
- wAction_t action,
- coOrd pos,
- drawModContext_t * context) {
+ wAction_t action,
+ coOrd pos,
+ drawModContext_t * context)
+{
switch ( action&0xFF ) {
- case C_START:
+ case C_START:
+ context->state = MOD_ORIGIN;
+ context->rotate_state = TRUE;
+ context->rot_moved = TRUE;
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ CreateOriginAnchor(context->rot_center,FALSE);
+ if ((tempSegs(0).type == SEG_POLY || tempSegs(0).type == SEG_FILPOLY)
+ && (context->prev_inx>=0)) {
+ CreateSelectedAnchor(points(context->prev_inx).pt);
+ }
+ InfoMessage("Move Origin Mode: Place Origin, 0-4, c or l, Enter or Esc");
+ return C_CONTINUE;
+ break;
+ case wActionMove:
+ CreateOriginAnchor(context->rot_center, FALSE);
+ if ((tempSegs(0).type == SEG_POLY || tempSegs(0).type == SEG_FILPOLY)
+ && (context->prev_inx>=0)) {
+ CreateSelectedAnchor(points(context->prev_inx).pt);
+ }
+ return C_CONTINUE;
+ break;
+ case C_DOWN:
+ if (context->state == MOD_ORIGIN || context->state == MOD_AFTER_ORIG) {
context->state = MOD_ORIGIN;
- context->rotate_state = TRUE;
- context->rot_moved = TRUE;
DYNARR_RESET(trkSeg_t,anchors_da);
- CreateOriginAnchor(context->rot_center,FALSE);
- if ((tempSegs(0).type == SEG_POLY || tempSegs(0).type == SEG_FILPOLY) && (context->prev_inx>=0)) {
- CreateSelectedAnchor(points(context->prev_inx).pt);
- }
- InfoMessage("Move Origin Mode: Place Origin, 0-4, c or l, Enter or Esc");
- return C_CONTINUE;
- break;
- case wActionMove:
- CreateOriginAnchor(context->rot_center, FALSE);
- if ((tempSegs(0).type == SEG_POLY || tempSegs(0).type == SEG_FILPOLY) && (context->prev_inx>=0)) {
- CreateSelectedAnchor(points(context->prev_inx).pt);
- }
- return C_CONTINUE;
- break;
- case C_DOWN:
- if (context->state == MOD_ORIGIN || context->state == MOD_AFTER_ORIG) {
- context->state = MOD_ORIGIN;
- DYNARR_RESET(trkSeg_t,anchors_da);
- if (IsClose(FindDistance(pos,context->rot_center))) {
- pos = context->rot_center;
- } else {
- context->rot_center = pos;
- }
- CreateOriginAnchor(context->rot_center, TRUE);
- if ((tempSegs(0).type == SEG_POLY || tempSegs(0).type == SEG_FILPOLY) && (context->prev_inx>=0)) {
- CreateSelectedAnchor(points(context->prev_inx).pt);
- }
- }
- return C_CONTINUE;
- break;
- case C_MOVE:
- if (context->state == MOD_ORIGIN || context->state == MOD_AFTER_ORIG){
+ if (IsClose(FindDistance(pos,context->rot_center))) {
+ pos = context->rot_center;
+ } else {
context->rot_center = pos;
- DYNARR_RESET(trkSeg_t,anchors_da);
- CreateOriginAnchor(context->rot_center, TRUE);
- if ((tempSegs(0).type == SEG_POLY || tempSegs(0).type == SEG_FILPOLY) && (context->prev_inx>=0)) {
- CreateSelectedAnchor(points(context->prev_inx).pt);
- }
- }
- return C_CONTINUE;
- break;
- case C_UP:
- DYNARR_RESET(trkSeg_t,anchors_da);
- if (context->state == MOD_ORIGIN) {
- context->state = MOD_AFTER_ORIG;
}
- CreateOriginAnchor(context->rot_center,FALSE);
- if ((tempSegs(0).type == SEG_POLY || tempSegs(0).type == SEG_FILPOLY) && (context->prev_inx>=0)) {
+ CreateOriginAnchor(context->rot_center, TRUE);
+ if ((tempSegs(0).type == SEG_POLY || tempSegs(0).type == SEG_FILPOLY)
+ && (context->prev_inx>=0)) {
CreateSelectedAnchor(points(context->prev_inx).pt);
}
- return C_CONTINUE;
- break;
- case C_UPDATE:
+ }
+ return C_CONTINUE;
+ break;
+ case C_MOVE:
+ if (context->state == MOD_ORIGIN || context->state == MOD_AFTER_ORIG) {
+ context->rot_center = pos;
DYNARR_RESET(trkSeg_t,anchors_da);
- if (context->state == MOD_AFTER_ORIG) {
- if (context->rot_center.x != context->rel_center.x &&
- context->rot_center.y != context->rel_center.y ) {
- context->rel_center = context->rot_center;
- CreateOriginAnchor(context->rot_center, FALSE);
- if ((tempSegs(0).type == SEG_POLY || tempSegs(0).type == SEG_FILPOLY) && (context->prev_inx>=0)) {
- CreateSelectedAnchor(points(context->prev_inx).pt);
- }
- }
+ CreateOriginAnchor(context->rot_center, TRUE);
+ if ((tempSegs(0).type == SEG_POLY || tempSegs(0).type == SEG_FILPOLY)
+ && (context->prev_inx>=0)) {
+ CreateSelectedAnchor(points(context->prev_inx).pt);
}
- return C_CONTINUE;
- break;
- case C_TEXT:
- if ((context->state == MOD_ORIGIN || context->state == MOD_AFTER_ORIG) &&
- ((action>>8 >= '0' && action>>8 <= '1') || action>>8 == 'l' || action>>8 == 'm' || action>>8 == 'p')) {
- // 0,1,2,3,4 -> reset rot center
- if (action>>8 == '0') {
- context->rot_center = zero;
- } else if (action>>8 == '1') {
- context->rot_center = context->p0;
- } else if (action>>8 == '2') {
- context->rot_center = context->p1;
- } else if (tempSegs(0).type == SEG_POLY || tempSegs(0).type == SEG_FILPOLY) {
- if (action>>8 == '3' || action>>8 == '4') {
- context->rot_center = action>>8 == '3'?points(2).pt:points(3).pt;
- } else if (action>>8 == 'l') { //"l" - last selected
- if (context->prev_inx !=-1) {
- context->rot_center = points(context->prev_inx).pt;
- }
- } else if (action>>8 == 'm') {
- context->rot_center = FindCentroid(points_da.cnt,&points(0));
- }
- }
- if (action>>8 == 'p') { //"p" - points mode
- MenuMode(I2VP(0));
- return C_CONTINUE;
- }
+ }
+ return C_CONTINUE;
+ break;
+ case C_UP:
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ if (context->state == MOD_ORIGIN) {
+ context->state = MOD_AFTER_ORIG;
+ }
+ CreateOriginAnchor(context->rot_center,FALSE);
+ if ((tempSegs(0).type == SEG_POLY || tempSegs(0).type == SEG_FILPOLY)
+ && (context->prev_inx>=0)) {
+ CreateSelectedAnchor(points(context->prev_inx).pt);
+ }
+ return C_CONTINUE;
+ break;
+ case C_UPDATE:
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ if (context->state == MOD_AFTER_ORIG) {
+ if (context->rot_center.x != context->rel_center.x &&
+ context->rot_center.y != context->rel_center.y ) {
context->rel_center = context->rot_center;
- context->rot_angle = 0;
- DYNARR_RESET(trkSeg_t,anchors_da);
- context->state = MOD_AFTER_ORIG;
CreateOriginAnchor(context->rot_center, FALSE);
- if ((tempSegs(0).type == SEG_POLY || tempSegs(0).type == SEG_FILPOLY) && (context->prev_inx>=0)) {
+ if ((tempSegs(0).type == SEG_POLY || tempSegs(0).type == SEG_FILPOLY)
+ && (context->prev_inx>=0)) {
CreateSelectedAnchor(points(context->prev_inx).pt);
}
+ }
+ }
+ return C_CONTINUE;
+ break;
+ case C_TEXT:
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ if ((context->state == MOD_ORIGIN || context->state == MOD_AFTER_ORIG) &&
+ ((action>>8 >= '0' && action>>8 <= '1') || action>>8 == 'l' || action>>8 == 'm'
+ || action>>8 == 'p')) {
+ // 0,1,2,3,4 -> reset rot center
+ if (action>>8 == '0') {
+ context->rot_center = zero;
+ } else if (action>>8 == '1') {
+ context->rot_center = context->p0;
+ } else if (action>>8 == '2') {
+ context->rot_center = context->p1;
+ } else if (tempSegs(0).type == SEG_POLY || tempSegs(0).type == SEG_FILPOLY) {
+ if (action>>8 == '3' || action>>8 == '4') {
+ context->rot_center = action>>8 == '3'?points(2).pt:points(3).pt;
+ } else if (action>>8 == 'l') { //"l" - last selected
+ if (context->prev_inx !=-1) {
+ context->rot_center = points(context->prev_inx).pt;
+ }
+ } else if (action>>8 == 'm') {
+ context->rot_center = FindCentroid(points_da.cnt,&points(0));
+ }
+ }
+ if (action>>8 == 'p') { //"p" - points mode
+ MenuMode(I2VP(0));
return C_CONTINUE;
}
- break;
- case C_FINISH:
- context->rotate_state = FALSE;
- context->state = MOD_STARTED;
+ context->rel_center = context->rot_center;
+ context->rot_angle = 0;
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ context->state = MOD_AFTER_ORIG;
+ CreateOriginAnchor(context->rot_center, FALSE);
+ if ((tempSegs(0).type == SEG_POLY || tempSegs(0).type == SEG_FILPOLY)
+ && (context->prev_inx>=0)) {
+ CreateSelectedAnchor(points(context->prev_inx).pt);
+ }
return C_CONTINUE;
- break;
- default:
- break;
+ }
+ break;
+ case C_FINISH:
+ context->rotate_state = FALSE;
+ context->state = MOD_STARTED;
+ return C_CONTINUE;
+ break;
+ default:
+ break;
}
return C_CONTINUE;
@@ -1857,26 +1994,28 @@ STATUS_T DrawGeomOriginMove(
* Base Modify function for Draw objects.
*/
STATUS_T DrawGeomModify(
- wAction_t action,
- coOrd pos,
- drawModContext_t * context)
+ wAction_t action,
+ coOrd pos,
+ drawModContext_t * context)
{
ANGLE_T a;
coOrd p0, p1, pc, pm;
static coOrd start_pos;
static wIndex_t segInx;
- static EPINX_T segEp;
+// static EPINX_T segEp;
static ANGLE_T segA1;
- static int inx_other, inx_line, inx_origin;
+ static int inx_line, inx_origin;
+// static int inx_other;
static BOOL_T corner_mode;
static BOOL_T polyMode;
- static ANGLE_T original_angle;
- int inx, inx1, inx2;
+// static ANGLE_T original_angle;
+ int inx, inx2;
+// int inx1;
DIST_T d, d1, d2, dd;
- coOrd * newPts = NULL;
- tempSegs_da.cnt = 1;
+// coOrd * newPts = NULL;
switch ( action&0xFF ) {
case C_START:
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
if (!context->rotate_state && !context->rot_moved) {
context->rot_center.x = context->orig.x;
context->rot_center.y = context->orig.y;
@@ -1888,81 +2027,86 @@ STATUS_T DrawGeomModify(
curveInx = -1;
segInx = -1;
polyMode = FALSE;
- DistanceSegs( context->orig, context->angle, context->segCnt, context->segPtr, &pos, &segInx );
- if (segInx == -1)
+ DistanceSegs( context->orig, context->angle, context->segCnt, context->segPtr,
+ &pos, &segInx );
+ if (segInx == -1) {
return C_ERROR;
+ }
context->type = context->segPtr[segInx].type;
switch(context->type) {
- case SEG_TBLEDGE:
- case SEG_STRLIN:
- case SEG_DIMLIN:
- case SEG_BENCH:
- REORIGIN( p0, context->segPtr[segInx].u.l.pos[0], context->angle, context->orig );
- REORIGIN( p1, context->segPtr[segInx].u.l.pos[1], context->angle, context->orig );
- tempSegs(0).type = SEG_STRLIN;
- tempSegs(0).color = wDrawColorRed;
- tempSegs(0).u.l.pos[0] = p0;
- tempSegs(0).u.l.pos[1] = p1;
- tempSegs(0).width = 0;
- tempSegs_da.cnt = 1;
- tempSegs(0).u.l.option = context->segPtr[segInx].u.l.option;
- context->p0 = p0;
- context->p1 = p1;
- CreateLineAnchors(-1,p0,p1);
- break;
- case SEG_CRVLIN:
- case SEG_FILCRCL:
- BuildCircleContext(context,segInx);
- tempSegs(0).type = SEG_CRVLIN;
+ case SEG_TBLEDGE:
+ case SEG_STRLIN:
+ case SEG_DIMLIN:
+ case SEG_BENCH:
+ REORIGIN( p0, context->segPtr[segInx].u.l.pos[0], context->angle,
+ context->orig );
+ REORIGIN( p1, context->segPtr[segInx].u.l.pos[1], context->angle,
+ context->orig );
+ tempSegs(0).type = SEG_STRLIN;
+ tempSegs(0).color = wDrawColorRed;
+ tempSegs(0).u.l.pos[0] = p0;
+ tempSegs(0).u.l.pos[1] = p1;
+ tempSegs(0).lineWidth = 0;
+ tempSegs(0).u.l.option = context->segPtr[segInx].u.l.option;
+ context->p0 = p0;
+ context->p1 = p1;
+ CreateLineAnchors(-1,p0,p1);
+ break;
+ case SEG_CRVLIN:
+ case SEG_FILCRCL:
+ BuildCircleContext(context,segInx);
+ tempSegs(0).type = SEG_CRVLIN;
+ tempSegs(0).color = wDrawColorRed;
+ tempSegs(0).u.c.center = context->pc;
+ tempSegs(0).u.c.radius = context->radius;
+ tempSegs(0).u.c.a0 = context->segPtr[segInx].u.c.a0;
+ tempSegs(0).u.c.a1 = context->segPtr[segInx].u.c.a1;
+ tempSegs(0).lineWidth = 0;
+ if (tempSegs(0).u.c.a1<360.0) {
+ CreateCurveAnchors(-1,context->pm,context->pc,context->p0,context->p1);
+ } else {
+ CreateCircleAnchor(FALSE,tempSegs(0).u.c.center,tempSegs(0).u.c.radius,
+ FindAngle(tempSegs(0).u.c.center,pos));
+ }
+ context->last_inx = 2;
+ break;
+ case SEG_POLY:
+ case SEG_FILPOLY:
+ if (context->segPtr[segInx].u.p.polyType !=RECTANGLE) {
+ polyMode = TRUE;
+ return DrawGeomPolyModify(action,pos,context);
+ } else {
+ tempSegs(0).type = SEG_POLY;
tempSegs(0).color = wDrawColorRed;
- tempSegs(0).u.c.center = context->pc;
- tempSegs(0).u.c.radius = context->radius;
- tempSegs(0).u.c.a0 = context->segPtr[segInx].u.c.a0;
- tempSegs(0).u.c.a1 = context->segPtr[segInx].u.c.a1;
- tempSegs(0).width = 0;
- tempSegs_da.cnt = 1;
- if (tempSegs(0).u.c.a1<360.0) {
- CreateCurveAnchors(-1,context->pm,context->pc,context->p0,context->p1);
- } else
- CreateCircleAnchor(FALSE,tempSegs(0).u.c.center,tempSegs(0).u.c.radius,FindAngle(tempSegs(0).u.c.center,pos));
- context->last_inx = 2;
- break;
- case SEG_POLY:
- case SEG_FILPOLY:
- if (context->segPtr[segInx].u.p.polyType !=RECTANGLE) {
- polyMode = TRUE;
- return DrawGeomPolyModify(action,pos,context);
- } else {
- tempSegs(0).type = SEG_POLY;
- tempSegs(0).color = wDrawColorRed;
- DYNARR_RESET( pts_t, points_da);
- for (int inx=0;inx<context->segPtr->u.p.cnt;inx++) {
- DYNARR_APPEND(pts_t, points_da,3);
- REORIGIN( points(inx).pt, context->segPtr[segInx].u.p.pts[inx].pt, context->angle, context->orig );
- }
- tempSegs(0).u.p.pts = &points(0);
- tempSegs(0).u.p.cnt = points_da.cnt;
- tempSegs(0).width = 0;
- tempSegs_da.cnt = 1;
- context->p0 = points(0).pt;
- CreateBoxAnchors(-1,&context->segPtr[segInx].u.p.pts[0]);
- context->p0 = points(0).pt;
- context->p1 = points(1).pt;
+ DYNARR_RESET( pts_t, points_da);
+ for (int inx=0; inx<context->segPtr->u.p.cnt; inx++) {
+ DYNARR_APPEND(pts_t, points_da,3);
+ REORIGIN( points(inx).pt, context->segPtr[segInx].u.p.pts[inx].pt,
+ context->angle, context->orig );
}
- break;
- case SEG_TEXT:
- InfoMessage("Text can only be modified with Describe");
- wBeep();
- return C_ERROR;
- default:
- ;
+ tempSegs(0).u.p.pts = &points(0);
+ tempSegs(0).u.p.cnt = points_da.cnt;
+ tempSegs(0).lineWidth = 0;
+ context->p0 = points(0).pt;
+ CreateBoxAnchors(-1,&context->segPtr[segInx].u.p.pts[0]);
+ context->p0 = points(0).pt;
+ context->p1 = points(1).pt;
+
+ }
+ break;
+ case SEG_TEXT:
+ InfoMessage("Text can only be modified with Describe");
+ wBeep();
+ return C_ERROR;
+ default:
+ ;
}
InfoMessage("Points Mode - Select and drag Anchor Point");
return C_CONTINUE;
break;
case wActionMove:
- if (context->rotate_state) return DrawGeomOriginMove(action,pos,context);
- if (polyMode) return DrawGeomPolyModify(action,pos,context);
+ if (context->rotate_state) { return DrawGeomOriginMove(action,pos,context); }
+ if (polyMode) { return DrawGeomPolyModify(action,pos,context); }
DYNARR_RESET(trkSeg_t,anchors_da);
wSetCursor(mainD.d,defaultCursor);
switch( context->type) {
@@ -1981,7 +2125,7 @@ STATUS_T DrawGeomModify(
CreateMovingAnchor(context->p1,TRUE);
}
}
- break;
+ break;
case SEG_CRVLIN:
case SEG_FILCRCL:
DYNARR_RESET(trkSeg_t,anchors_da);
@@ -1991,7 +2135,8 @@ STATUS_T DrawGeomModify(
Translate(&p,context->pc,FindAngle(context->pc,pos),context->radius);
CreateMovingAnchor(p,TRUE);
DYNARR_SET(trkSeg_t,anchors_da,anchors_da.cnt+5);
- DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),p,FindAngle(context->pc,pos),TRUE,wDrawColorBlue);
+ DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),p,
+ FindAngle(context->pc,pos),TRUE,wDrawColorBlue);
}
} else {
CreateCurveAnchors(curveInx,context->pm,context->pc,context->p0,context->p1);
@@ -2010,7 +2155,7 @@ STATUS_T DrawGeomModify(
}
}
}
- break;
+ break;
case SEG_POLY:
case SEG_FILPOLY:;
CreateBoxAnchors(-1,&points(0));
@@ -2020,12 +2165,13 @@ STATUS_T DrawGeomModify(
return C_CONTINUE;
break;
case C_DOWN:
- if (context->rotate_state) return DrawGeomOriginMove(action,pos,context);
- if (polyMode) return DrawGeomPolyModify(action,pos,context);
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ if (context->rotate_state) { return DrawGeomOriginMove(action,pos,context); }
+ if (polyMode) { return DrawGeomPolyModify(action,pos,context); }
corner_mode = FALSE;
segInx = 0;
context->state = MOD_STARTED;
- tempSegs(0).width = context->segPtr[segInx].width;
+ tempSegs(0).lineWidth = context->segPtr[segInx].lineWidth;
tempSegs(0).color = context->segPtr[segInx].color;
switch ( context->type ) {
case SEG_TBLEDGE:
@@ -2047,27 +2193,27 @@ STATUS_T DrawGeomModify(
if (lineInx < 0 ) {
InfoMessage( _("Not close to end of line"));
} else {
- if (context->type == SEG_TBLEDGE)
+ if (context->type == SEG_TBLEDGE) {
InfoMessage("End selected, drag to move +Ctl to lock to other edge end, +Shift lock to line");
- else
+ } else {
InfoMessage("End selected, drag to reposition +Shift lock to line");
+ }
context->state = MOD_SELECTED_PT;
}
tempSegs(0).color = wDrawColorBlack;
- tempSegs(0).width = 0;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).type = context->type;
tempSegs(0).u.l.pos[0] = p0;
tempSegs(0).u.l.pos[1] = p1;
tempSegs(0).u.l.option = context->segPtr[segInx].u.l.option;
segA1 = FindAngle( p1, p0 );
- tempSegs_da.cnt = 1;
CreateLineAnchors(lineInx,p0,p1);
break;
case SEG_CRVLIN:
case SEG_FILCRCL:
curveInx = -1;
tempSegs(0).color = wDrawColorBlack;
- tempSegs(0).width = 0;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).type = context->type;
tempSegs(0).u.c.center = context->pc;
tempSegs(0).u.c.radius = context->radius;
@@ -2075,14 +2221,16 @@ STATUS_T DrawGeomModify(
tempSegs(0).u.c.a0 = 0.0;
tempSegs(0).u.c.a1 = 360.0;
InfoMessage("Drag to Change Radius");
- CreateCircleAnchor(TRUE,tempSegs(0).u.c.center,tempSegs(0).u.c.radius,FindAngle(tempSegs(0).u.c.center,pos));
+ CreateCircleAnchor(TRUE,tempSegs(0).u.c.center,tempSegs(0).u.c.radius,
+ FindAngle(tempSegs(0).u.c.center,pos));
} else {
p0 = context->p0;
p1 = context->p1;
pm = context->pm;
pc = context->pc;
tempSegs(0).u.c.a0 = FindAngle(context->pc,context->p0);
- tempSegs(0).u.c.a1 = DifferenceBetweenAngles(FindAngle(context->pc,context->p0),FindAngle(context->pc,context->p1));
+ tempSegs(0).u.c.a1 = DifferenceBetweenAngles(FindAngle(context->pc,context->p0),
+ FindAngle(context->pc,context->p1));
tempSegs(0).u.c.center = context->pc;
tempSegs(0).u.c.radius = context->radius;
curveInx = -1;
@@ -2104,14 +2252,15 @@ STATUS_T DrawGeomModify(
InfoMessage( _("Not close to ends or middle of mine, reselect"));
return C_CONTINUE;
} else {
- if (curveInx <2 )
+ if (curveInx <2 ) {
InfoMessage("Drag to move end, +Ctrl to lock to other objects");
- else
+ } else {
InfoMessage("Drag to change radius");
+ }
}
- tempSegs_da.cnt = 1;
- if (tempSegs(0).u.c.a1 < 360.0)
+ if (tempSegs(0).u.c.a1 < 360.0) {
CreateCurveAnchors(curveInx,pm,pc,p0,p1);
+ }
}
context->state = MOD_SELECTED_PT;
break;
@@ -2142,21 +2291,23 @@ STATUS_T DrawGeomModify(
polyInx = inx_line;
}
}
- inx1 = (polyInx==0?3:polyInx-1); //Prev point
+// inx1 = (polyInx==0?3:polyInx-1); //Prev point
inx2 = (polyInx==3?0:polyInx+1); //Next Point
inx_origin = (inx2==3?0:inx2+1); //Opposite point
if ( corner_mode ) {
start_pos = pos;
pos = points(inx).pt;
DYNARR_SET(trkSeg_t,anchors_da,5);
- DrawArrowHeads( &anchors(0), pos, FindAngle(points(polyInx).pt,points(inx_origin).pt), TRUE, wDrawColorRed );
+ DrawArrowHeads( &anchors(0), pos, FindAngle(points(polyInx).pt,
+ points(inx_origin).pt), TRUE, wDrawColorRed );
InfoMessage( _("Drag to Move Corner Point"));
} else {
start_pos = pos;
pos.x = (points(inx_line).pt.x + points(inx_line==0?3:inx_line-1).pt.x)/2;
pos.y = (points(inx_line).pt.y + points(inx_line==0?3:inx_line-1).pt.y)/2;
DYNARR_SET(trkSeg_t,anchors_da,5);
- DrawArrowHeads( &anchors(0), pos, FindAngle(points(polyInx).pt,pos)+90, TRUE, wDrawColorRed );
+ DrawArrowHeads( &anchors(0), pos, FindAngle(points(polyInx).pt,pos)+90, TRUE,
+ wDrawColorRed );
InfoMessage( _("Drag to Move Edge "));
}
context->state = MOD_SELECTED_PT;
@@ -2165,13 +2316,10 @@ STATUS_T DrawGeomModify(
segInx = -1;
return C_ERROR;
default:
- ASSERT( FALSE ); /* CHECKME */
+ CHECK( FALSE ); /* CHECKME */
}
- if ( FindDistance( p0, pos ) < FindDistance( p1, pos ) )
- segEp = 0;
- else {
- segEp = 1;
+ if ( FindDistance( p0, pos ) >= FindDistance( p1, pos ) ) {
switch ( context->type ) {
case SEG_TBLEDGE:
case SEG_STRLIN:
@@ -2187,18 +2335,19 @@ STATUS_T DrawGeomModify(
return C_CONTINUE;
case C_MOVE:
- if (context->rotate_state) return DrawGeomOriginMove(action,pos,context);
- if (polyMode) return DrawGeomPolyModify(action,pos,context);
- if (context->state != MOD_SELECTED_PT) return C_CONTINUE;
+ if (context->rotate_state) { return DrawGeomOriginMove(action,pos,context); }
+ if (polyMode) { return DrawGeomPolyModify(action,pos,context); }
+ if (context->state != MOD_SELECTED_PT) { return C_CONTINUE; }
BOOL_T locked = FALSE;
switch (tempSegs(0).type) {
case SEG_TBLEDGE:
- if ( (MyGetKeyState() & WKEY_CTRL) == WKEY_CTRL ) { //Special Snap to Table End Point if Ctrl
- if (OnTableEdgeEndPt( NULL, &pos )) {
+ if ( (MyGetKeyState() & WKEY_CTRL) ==
+ WKEY_CTRL ) { //Special Snap to Table End Point if Ctrl
+ if (OnTableEdgeEndPt( NULL, &pos )) {
locked = TRUE;
- }
+ }
}
- /* No Break*/
+ /* No Break*/
case SEG_STRLIN:
case SEG_DIMLIN:
case SEG_BENCH:
@@ -2207,7 +2356,8 @@ STATUS_T DrawGeomModify(
d = FindDistance( pos, tempSegs(0).u.l.pos[1-lineInx] );
Translate( &pos, tempSegs(0).u.l.pos[1-lineInx], segA1, d );
locked = TRUE;
- } else if (((MyGetKeyState() & WKEY_ALT) == 0) == magneticSnap ) { //M.S. Either on or Off
+ } else if (((MyGetKeyState() & WKEY_ALT) == 0) ==
+ magneticSnap ) { //M.S. Either on or Off
if (OnTrack( &pos, FALSE, FALSE )!=NULL) {
CreateEndAnchor(pos,TRUE);
locked = TRUE;
@@ -2215,7 +2365,7 @@ STATUS_T DrawGeomModify(
}
};
if (!locked) {
- if (SnapPos(&pos)) locked = TRUE;
+ if (SnapPos(&pos)) { locked = TRUE; }
}
break;
default:
@@ -2223,16 +2373,16 @@ STATUS_T DrawGeomModify(
}
int prior_pnt, next_pnt, orig_pnt;
ANGLE_T prior_angle, next_angle, line_angle;
- tempSegs_da.cnt = 1;
switch (tempSegs(0).type) {
case SEG_TBLEDGE:
case SEG_STRLIN:
case SEG_DIMLIN:
case SEG_BENCH:
- if (lineInx<0 || lineInx>1) return C_CONTINUE;
+ if (lineInx<0 || lineInx>1) { return C_CONTINUE; }
tempSegs(0).u.l.pos[lineInx] = pos;
- InfoMessage( _("Length = %0.3f Angle = %0.3f"), FindDistance( tempSegs(0).u.l.pos[lineInx], tempSegs(0).u.l.pos[1-lineInx] ), FindAngle( tempSegs(0).u.l.pos[1-lineInx], tempSegs(0).u.l.pos[lineInx] ) );
- tempSegs_da.cnt = 1;
+ InfoMessage( _("Length = %0.3f Angle = %0.3f"),
+ FindDistance( tempSegs(0).u.l.pos[lineInx], tempSegs(0).u.l.pos[1-lineInx] ),
+ FindAngle( tempSegs(0).u.l.pos[1-lineInx], tempSegs(0).u.l.pos[lineInx] ) );
context->p0 = tempSegs(0).u.l.pos[0];
context->p1 = tempSegs(0).u.l.pos[1];
p0 = context->p0;
@@ -2243,10 +2393,11 @@ STATUS_T DrawGeomModify(
case SEG_FILCRCL:
if (tempSegs(0).u.c.a1 >= 360.0) {
tempSegs(0).u.c.radius = FindDistance( context->pc, pos );
- CreateCircleAnchor(TRUE,tempSegs(0).u.c.center,tempSegs(0).u.c.radius,FindAngle(tempSegs(0).u.c.center,pos));
+ CreateCircleAnchor(TRUE,tempSegs(0).u.c.center,tempSegs(0).u.c.radius,
+ FindAngle(tempSegs(0).u.c.center,pos));
} else {
- if (context->state != MOD_SELECTED_PT) return C_CONTINUE;
- if (curveInx < 0 || curveInx > 2) return C_CONTINUE;
+ if (context->state != MOD_SELECTED_PT) { return C_CONTINUE; }
+ if (curveInx < 0 || curveInx > 2) { return C_CONTINUE; }
wSetCursor(mainD.d,wCursorNone);
p0 = context->p0;
p1 = context->p1;
@@ -2287,8 +2438,9 @@ STATUS_T DrawGeomModify(
if ( fabs(d) >= 0.01 ) {
d2 = sqrt( d0*d0 + d*d )/2.0;
r = d2*d2*2.0/d;
- if ( fabs(r) > 1000.0 )
+ if ( fabs(r) > 1000.0 ) {
r = ((r > 0)? 1 : -1) *1000.0;
+ }
} else {
r = ((r > 0) ? 1 : -1 ) *1000.0;
}
@@ -2302,10 +2454,12 @@ STATUS_T DrawGeomModify(
context->radius = tempSegs(0).u.c.radius = fabs(r);
Translate( &pc, posx, a0, fabs(r)-fabs(d) );
context->pc = tempSegs(0).u.c.center = pc;
- tempSegs(0).u.c.a0 = FindAngle(pc,p0);
- context->arc_angle = tempSegs(0).u.c.a1 = NormalizeAngle(FindAngle(pc,p1)-FindAngle(pc,p0));
- PointOnCircle(&pm,pc,context->radius,tempSegs(0).u.c.a0+(tempSegs(0).u.c.a1/2.0));
- context->pm = pm;
+ tempSegs(0).u.c.a0 = FindAngle(pc,p0);
+ context->arc_angle = tempSegs(0).u.c.a1 = NormalizeAngle(FindAngle(pc,
+ p1)-FindAngle(pc,p0));
+ PointOnCircle(&pm,pc,context->radius,
+ tempSegs(0).u.c.a0+(tempSegs(0).u.c.a1/2.0));
+ context->pm = pm;
} else {
//Change radius using chord
p0 = context->p0;
@@ -2320,8 +2474,9 @@ STATUS_T DrawGeomModify(
if ( fabs(pos2.x) >= 0.01 ) {
d2 = sqrt( d0*d0 + pos2.x*pos2.x )/2.0;
r = d2*d2*2.0/pos2.x;
- if ( fabs(r) > 1000.0 )
+ if ( fabs(r) > 1000.0 ) {
r = ((r > 0) ? 1 : -1 ) *1000.0;
+ }
} else {
r = ((r > 0) ? 1 : -1 ) *1000.0;
}
@@ -2349,8 +2504,9 @@ STATUS_T DrawGeomModify(
context->disp = pos2.x;
}
}
- if (tempSegs(0).u.c.a1 < 360.0)
+ if (tempSegs(0).u.c.a1 < 360.0) {
CreateCurveAnchors(curveInx,pm,pc,p0,p1);
+ }
}
break;
case SEG_POLY:
@@ -2359,7 +2515,8 @@ STATUS_T DrawGeomModify(
if (!corner_mode) {
/* Constrain movement to be perpendicular */
d = FindDistance(start_pos, pos);
- line_angle = NormalizeAngle(FindAngle(points(inx_line).pt,points(inx_line==3?0:inx_line+1).pt));
+ line_angle = NormalizeAngle(FindAngle(points(inx_line).pt,
+ points(inx_line==3?0:inx_line+1).pt));
a = FindAngle(pos,start_pos);
Translate( &pos, start_pos, line_angle, - d*cos(D2R(line_angle-a)));
}
@@ -2373,19 +2530,23 @@ STATUS_T DrawGeomModify(
d = FindDistance(points(orig_pnt).pt,points(polyInx).pt);
a = FindAngle(points(orig_pnt).pt,points(polyInx).pt);
prior_angle = FindAngle(points(orig_pnt).pt,points(prior_pnt).pt);
- Translate( &points(prior_pnt).pt, points(orig_pnt).pt, prior_angle, d*cos(D2R(prior_angle-a)));
+ Translate( &points(prior_pnt).pt, points(orig_pnt).pt, prior_angle,
+ d*cos(D2R(prior_angle-a)));
next_angle = FindAngle(points(orig_pnt).pt,points(next_pnt).pt);
- Translate( &points(next_pnt).pt, points(orig_pnt).pt, next_angle, d*cos(D2R(next_angle-a)));
+ Translate( &points(next_pnt).pt, points(orig_pnt).pt, next_angle,
+ d*cos(D2R(next_angle-a)));
if (!corner_mode) {
pos.x = (points(inx_line).pt.x + points(inx_line==0?3:inx_line-1).pt.x)/2;
pos.y = (points(inx_line).pt.y + points(inx_line==0?3:inx_line-1).pt.y)/2;
DYNARR_SET(trkSeg_t,anchors_da,5);
- DrawArrowHeads( &anchors(0), pos, FindAngle(points(inx_line).pt,points(inx_line==0?3:inx_line-1).pt)+90, TRUE, wDrawColorRed );
+ DrawArrowHeads( &anchors(0), pos, FindAngle(points(inx_line).pt,
+ points(inx_line==0?3:inx_line-1).pt)+90, TRUE, wDrawColorRed );
InfoMessage( _("Drag to Move Edge"));
} else {
pos = points(polyInx).pt;
DYNARR_SET(trkSeg_t,anchors_da,5);
- DrawArrowHeads( &anchors(0), pos, FindAngle(points(polyInx).pt,points(inx_origin).pt), TRUE, wDrawColorRed );
+ DrawArrowHeads( &anchors(0), pos, FindAngle(points(polyInx).pt,
+ points(inx_origin).pt), TRUE, wDrawColorRed );
InfoMessage( _("Drag to Move Corner Point"));
}
context->p0 = points(0).pt;
@@ -2396,17 +2557,19 @@ STATUS_T DrawGeomModify(
}
return C_CONTINUE;
case C_UP:
- if (context->rotate_state) return DrawGeomOriginMove(action, pos, context);
+ if (context->rotate_state) { return DrawGeomOriginMove(action, pos, context); }
if (polyMode) {
int rc;
rc = DrawGeomPolyModify(action,pos,context);
- if (context->prev_inx != -1)
+ if (context->prev_inx != -1) {
context->state = MOD_AFTER_PT;
+ }
return rc;
}
wSetCursor(mainD.d,defaultCursor);
- if (segInx == -1)
+ if (segInx == -1) {
return C_CONTINUE;
+ }
switch (tempSegs(0).type) {
case SEG_TBLEDGE:
case SEG_STRLIN:
@@ -2421,10 +2584,12 @@ STATUS_T DrawGeomModify(
break;
case SEG_CRVLIN:
case SEG_FILCRCL:
- if ( (tempSegs(0).type == SEG_FILCRCL) || (tempSegs(0).u.c.a1 == 360.0 || tempSegs(0).u.c.a1 == 0.0) ) {
+ if ( (tempSegs(0).type == SEG_FILCRCL) || (tempSegs(0).u.c.a1 == 360.0
+ || tempSegs(0).u.c.a1 == 0.0) ) {
context->radius = fabs(tempSegs(0).u.c.radius);
context->arc_angle = 360.0;
- CreateCircleAnchor(FALSE,tempSegs(0).u.c.center,tempSegs(0).u.c.radius,FindAngle(tempSegs(0).u.c.center,pos));
+ CreateCircleAnchor(FALSE,tempSegs(0).u.c.center,tempSegs(0).u.c.radius,
+ FindAngle(tempSegs(0).u.c.center,pos));
} else {
p0 = context->p0;
p1 = context->p1;
@@ -2442,10 +2607,12 @@ STATUS_T DrawGeomModify(
case SEG_POLY:
case SEG_FILPOLY:
CreateBoxAnchors(-1,tempSegs(0).u.p.pts);
- context->width = FindDistance(tempSegs(0).u.p.pts[0].pt,tempSegs(0).u.p.pts[1].pt);
- context->height = FindDistance(tempSegs(0).u.p.pts[1].pt,tempSegs(0).u.p.pts[2].pt);
+ context->width = FindDistance(tempSegs(0).u.p.pts[0].pt,
+ tempSegs(0).u.p.pts[1].pt);
+ context->height = FindDistance(tempSegs(0).u.p.pts[1].pt,
+ tempSegs(0).u.p.pts[2].pt);
context->last_inx = polyInx;
- if (corner_mode) context->last_inx +=5;
+ if (corner_mode) { context->last_inx +=5; }
break;
default:
;
@@ -2457,122 +2624,147 @@ STATUS_T DrawGeomModify(
InfoMessage("Enter/Space to Accept, ESC to Reject");
return C_CONTINUE;
case C_UPDATE:
- if (context->rotate_state) return DrawGeomOriginMove(action, pos, context);
+ if (context->rotate_state) { return DrawGeomOriginMove(action, pos, context); }
- if (polyMode) return DrawGeomPolyModify(action,pos,context);
+ if (polyMode) { return DrawGeomPolyModify(action,pos,context); }
if (context->state == MOD_AFTER_PT) {
switch (tempSegs(0).type) {
- case SEG_TBLEDGE:
- case SEG_STRLIN:
- case SEG_DIMLIN:
- case SEG_BENCH:
- context->abs_angle = NormalizeAngle(context->abs_angle);
- Translate(&tempSegs(0).u.l.pos[1],tempSegs(0).u.l.pos[0],context->abs_angle,context->length);
- CreateLineAnchors(context->last_inx,tempSegs(0).u.l.pos[0],tempSegs(0).u.l.pos[1]);
- context->p0 = tempSegs(0).u.l.pos[0];
- context->p1 = tempSegs(0).u.l.pos[1];
- break;
- case SEG_CRVLIN:
- case SEG_FILCRCL:
- if (tempSegs(0).u.c.a1 == 360.0 || tempSegs(0).u.c.a1 == 0.0) {
- tempSegs(0).u.c.a1 = 360.0;
- tempSegs(0).u.c.radius = context->radius;
- Translate(&p0,tempSegs(0).u.c.center,tempSegs(0).u.c.a0,tempSegs(0).u.c.radius);
- context->p0 = p0;
- context->p1 = p0;
- context->pm = p0;
- context->pc = tempSegs(0).u.c.center;
- break;
- }
- if (context->radius < 0) { //swap ends
- context->radius = fabs(context->radius);
- p1 = context->p0;
- p0 = context->p1;
- a = FindAngle(context->pc,context->pm);
- Translate(&pm,context->pm,a+180,2*context->disp);
- Translate(&pc,pm,a,context->radius);
- context->pm = pm;
- context->pc = pc;
- context->p0 = p0;
- context->p1 = p1;
- } else {
- pm = context->pm;
- pc = context->pc;
- p0 = context->p0;
- p1 = context->p1;
- }
- if (context->last_inx == 0) {
- p1 = context->p1;
- pc = context->pc;
- a = FindAngle(p1,pc);
- Translate(&pc,p1,a,context->radius);
- context->pc = pc;
- PointOnCircle( &p0, context->pc, context->radius, NormalizeAngle(a+180-context->arc_angle) );
- context->p0 = p0;
- PointOnCircle( &pm, context->pc, context->radius, NormalizeAngle(a+180-(context->arc_angle/2)));
- context->pm = pm;
- } else if (context->last_inx == 1) {
- p0 = context->p0;
- pc = context->pc;
- a = FindAngle(p0,pc);
- Translate(&pc,p0,a,context->radius);
- context->pc = pc;
- PointOnCircle( &p1, context->pc, context->radius, NormalizeAngle(a+180+context->arc_angle) );
- context->p1 = p1;
- PointOnCircle( &pm, context->pc, context->radius, NormalizeAngle(a+180+(context->arc_angle/2)));
- context->pm = pm;
- } else { // Middle if neither
- a = FindAngle(context->pm,context->pc);
- Translate(&pc,context->pm,a,context->radius);
- context->pc = pc;
- PointOnCircle( &p1, context->pc, context->radius, NormalizeAngle(FindAngle(context->pc,context->pm)+(context->arc_angle/2)) );
- PointOnCircle( &p0, context->pc, context->radius, NormalizeAngle(FindAngle(context->pc,context->pm)-(context->arc_angle/2)) );
- context->p1 = p1;
- context->p0 = p0;
- }
- a = FindAngle(p1,p0);
- Rotate(&pm,p1,-a);
- context->disp = pm.x-p1.x;
- tempSegs(0).u.c.center = context->pc;
- tempSegs(0).u.c.a0 = FindAngle(context->pc,context->p0);
- tempSegs(0).u.c.a1 = NormalizeAngle(FindAngle(context->pc,context->p1)-tempSegs(0).u.c.a0);
- if (tempSegs(0).u.c.a1 == 0.0) tempSegs(0).u.c.a1 = 360.0;
+ case SEG_TBLEDGE:
+ case SEG_STRLIN:
+ case SEG_DIMLIN:
+ case SEG_BENCH:
+ context->abs_angle = NormalizeAngle(context->abs_angle);
+ Translate(&tempSegs(0).u.l.pos[1],tempSegs(0).u.l.pos[0],context->abs_angle,
+ context->length);
+ CreateLineAnchors(context->last_inx,tempSegs(0).u.l.pos[0],
+ tempSegs(0).u.l.pos[1]);
+ context->p0 = tempSegs(0).u.l.pos[0];
+ context->p1 = tempSegs(0).u.l.pos[1];
+ break;
+ case SEG_CRVLIN:
+ case SEG_FILCRCL:
+ if (tempSegs(0).u.c.a1 == 360.0 || tempSegs(0).u.c.a1 == 0.0) {
+ tempSegs(0).u.c.a1 = 360.0;
tempSegs(0).u.c.radius = context->radius;
- CreateCurveAnchors(context->last_inx,context->pm,context->pc,context->p0,context->p1);
- break;
- case SEG_POLY:
- case SEG_FILPOLY:
- a = NormalizeAngle(FindAngle(points(0).pt,points(3).pt));
- Translate( &points(3).pt, points(0).pt, a, context->height);
- Translate( &points(2).pt, points(1).pt, a, context->height);
- a = NormalizeAngle(FindAngle(points(0).pt,points(1).pt));;
- Translate( &points(1).pt, points(0).pt, a, context->width);
- Translate( &points(2).pt, points(3).pt, a, context->width);
- CreateBoxAnchors(context->last_inx,&points(0));
- break;
- default:
+ Translate(&p0,tempSegs(0).u.c.center,tempSegs(0).u.c.a0,tempSegs(0).u.c.radius);
+ context->p0 = p0;
+ context->p1 = p0;
+ context->pm = p0;
+ context->pc = tempSegs(0).u.c.center;
break;
+ }
+ if (context->radius < 0) { //swap ends
+ context->radius = fabs(context->radius);
+ p1 = context->p0;
+ p0 = context->p1;
+ a = FindAngle(context->pc,context->pm);
+ Translate(&pm,context->pm,a+180,2*context->disp);
+ Translate(&pc,pm,a,context->radius);
+ context->pm = pm;
+ context->pc = pc;
+ context->p0 = p0;
+ context->p1 = p1;
+ } else {
+ pm = context->pm;
+ pc = context->pc;
+ p0 = context->p0;
+ p1 = context->p1;
+ }
+ if (context->last_inx == 0) {
+ p1 = context->p1;
+ pc = context->pc;
+ a = FindAngle(p1,pc);
+ Translate(&pc,p1,a,context->radius);
+ context->pc = pc;
+ PointOnCircle( &p0, context->pc, context->radius,
+ NormalizeAngle(a+180-context->arc_angle) );
+ context->p0 = p0;
+ PointOnCircle( &pm, context->pc, context->radius,
+ NormalizeAngle(a+180-(context->arc_angle/2)));
+ context->pm = pm;
+ } else if (context->last_inx == 1) {
+ p0 = context->p0;
+ pc = context->pc;
+ a = FindAngle(p0,pc);
+ Translate(&pc,p0,a,context->radius);
+ context->pc = pc;
+ PointOnCircle( &p1, context->pc, context->radius,
+ NormalizeAngle(a+180+context->arc_angle) );
+ context->p1 = p1;
+ PointOnCircle( &pm, context->pc, context->radius,
+ NormalizeAngle(a+180+(context->arc_angle/2)));
+ context->pm = pm;
+ } else { // Middle if neither
+ a = FindAngle(context->pm,context->pc);
+ Translate(&pc,context->pm,a,context->radius);
+ context->pc = pc;
+ PointOnCircle( &p1, context->pc, context->radius,
+ NormalizeAngle(FindAngle(context->pc,context->pm)+(context->arc_angle/2)) );
+ PointOnCircle( &p0, context->pc, context->radius,
+ NormalizeAngle(FindAngle(context->pc,context->pm)-(context->arc_angle/2)) );
+ context->p1 = p1;
+ context->p0 = p0;
+ }
+ a = FindAngle(p1,p0);
+ Rotate(&pm,p1,-a);
+ context->disp = pm.x-p1.x;
+ tempSegs(0).u.c.center = context->pc;
+ tempSegs(0).u.c.a0 = FindAngle(context->pc,context->p0);
+ tempSegs(0).u.c.a1 = NormalizeAngle(FindAngle(context->pc,
+ context->p1)-tempSegs(0).u.c.a0);
+ if (tempSegs(0).u.c.a1 == 0.0) { tempSegs(0).u.c.a1 = 360.0; }
+ tempSegs(0).u.c.radius = context->radius;
+ CreateCurveAnchors(context->last_inx,context->pm,context->pc,context->p0,
+ context->p1);
+ break;
+ case SEG_POLY:
+ case SEG_FILPOLY:
+ a = NormalizeAngle(FindAngle(points(0).pt,points(3).pt));
+ Translate( &points(3).pt, points(0).pt, a, context->height);
+ Translate( &points(2).pt, points(1).pt, a, context->height);
+ a = NormalizeAngle(FindAngle(points(0).pt,points(1).pt));;
+ Translate( &points(1).pt, points(0).pt, a, context->width);
+ Translate( &points(2).pt, points(3).pt, a, context->width);
+ CreateBoxAnchors(context->last_inx,&points(0));
+ break;
+ default:
+ break;
}
}
break;
case wActionExtKey:
- if ((((action>>8)&0xFF)== wAccelKey_Del) && polyMode) //Convert Del key to be BackSpace in PolyModify
+ if ((((action>>8)&0xFF)== wAccelKey_Del)
+ && polyMode) { //Convert Del key to be BackSpace in PolyModify
return DrawGeomPolyModify(C_TEXT+((int)(127<<8)),pos,context);
+ }
break;
case C_TEXT:
- if (context->rotate_state) DrawGeomOriginMove(action, pos, context);
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ if (context->rotate_state) { DrawGeomOriginMove(action, pos, context); }
- if (polyMode) return DrawGeomPolyModify(action,pos,context);
+ if (polyMode) { return DrawGeomPolyModify(action,pos,context); }
if (action>>8 == 'o') {
MenuMode(I2VP(1));
}
+ if (context->subtype == RECTANGLE) {
+ switch (action>>8) {
+ case 'f':
+ tempSegs(0).type = SEG_FILPOLY;
+ context->type = SEG_FILPOLY;
+ break;
+ case 'u':
+ tempSegs(0).type = SEG_POLY;
+ context->type = SEG_POLY;
+ break;
+ }
+ }
- if (action>>8 != 32 && action>>8 != 13) return C_CONTINUE;
- /* no break */
+ if (action>>8 != 32 && action>>8 != 13) { return C_CONTINUE; }
+ /* no break */
case C_CONFIRM:
return C_CONTINUE;
- /* no break*/
+ /* no break*/
case C_OK:
case C_FINISH:
UndoStart("Modify Draw", "OK");
@@ -2581,10 +2773,13 @@ STATUS_T DrawGeomModify(
DrawGeomPolyModify(action,pos,context);
context->segPtr[segInx].type = context->type;
context->segPtr[segInx].u.p.polyType = context->subtype;
- if (context->segPtr[segInx].type == SEG_FILPOLY)
- context->segPtr[segInx].u.p.polyType = FREEFORM; //Ensure Filled is closed
+ if (context->segPtr[segInx].type == SEG_FILPOLY) {
+ context->segPtr[segInx].u.p.polyType =
+ FREEFORM; //Ensure Filled is closed
+ }
context->state = MOD_NONE;
DrawNewTrack( context->trk );
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
return C_TERMINATE;
}
//copy changes back into track
@@ -2593,56 +2788,61 @@ STATUS_T DrawGeomModify(
context->rot_moved = FALSE;
context->angle = 0.0;
switch (tempSegs(0).type) {
- case SEG_TBLEDGE:
- case SEG_STRLIN:
- case SEG_DIMLIN:
- case SEG_BENCH:
- for (int i=0;i<2;i++) {
- pos = i==0?context->p0:context->p1;
- pos.x -= context->rot_center.x;
- pos.y -= context->rot_center.y;
- context->segPtr[segInx].u.l.pos[i] = pos;
- }
- break;
- case SEG_CRVLIN:
- case SEG_FILCRCL:
- pc = context->pc;
- pc.x -= context->rot_center.x;
- pc.y -= context->rot_center.y;
- context->segPtr[segInx].u.c.center = pc;
- p0 = context->p0;
- p0.x -= context->rot_center.x;
- p0.y -= context->rot_center.y;
- p1 = context->p1;
- p1.x -= context->rot_center.x;
- p1.y -= context->rot_center.y;
- context->segPtr[segInx].u.c.a0 = FindAngle(pc,p0);
- context->segPtr[segInx].u.c.a1 = NormalizeAngle(FindAngle(pc,p1)-FindAngle(pc,p0));
- if (context->segPtr[segInx].u.c.a1 == 0) context->segPtr[segInx].u.c.a1 = 360.0;
- context->segPtr[segInx].u.c.radius = context->radius;
- break;
- case SEG_POLY:
- case SEG_FILPOLY:
- for (int i=0;i<4;i++) {
- pos = points(i).pt;
- pos.x -= context->rot_center.x;
- pos.y -= context->rot_center.y;
- context->segPtr[segInx].u.p.pts[i].pt = pos;
- }
- break;
- default:
- break;
+ case SEG_TBLEDGE:
+ case SEG_STRLIN:
+ case SEG_DIMLIN:
+ case SEG_BENCH:
+ for (int i=0; i<2; i++) {
+ pos = i==0?context->p0:context->p1;
+ pos.x -= context->rot_center.x;
+ pos.y -= context->rot_center.y;
+ context->segPtr[segInx].u.l.pos[i] = pos;
+ }
+ break;
+ case SEG_CRVLIN:
+ case SEG_FILCRCL:
+ pc = context->pc;
+ pc.x -= context->rot_center.x;
+ pc.y -= context->rot_center.y;
+ context->segPtr[segInx].u.c.center = pc;
+ p0 = context->p0;
+ p0.x -= context->rot_center.x;
+ p0.y -= context->rot_center.y;
+ p1 = context->p1;
+ p1.x -= context->rot_center.x;
+ p1.y -= context->rot_center.y;
+ context->segPtr[segInx].u.c.a0 = FindAngle(pc,p0);
+ context->segPtr[segInx].u.c.a1 = NormalizeAngle(FindAngle(pc,p1)-FindAngle(pc,
+ p0));
+ if (context->segPtr[segInx].u.c.a1 == 0) { context->segPtr[segInx].u.c.a1 = 360.0; }
+ context->segPtr[segInx].u.c.radius = context->radius;
+ break;
+ case SEG_POLY:
+ case SEG_FILPOLY:
+ for (int i=0; i<4; i++) {
+ pos = points(i).pt;
+ pos.x -= context->rot_center.x;
+ pos.y -= context->rot_center.y;
+ context->segPtr[segInx].u.p.pts[i].pt = pos;
+ }
+ break;
+ default:
+ break;
}
context->state = MOD_NONE;
context->rotate_state = FALSE;
context->last_inx = -1;
DYNARR_RESET(trkSeg_t,anchors_da);
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ DrawNewTrack( context->trk );
return C_TERMINATE;
case C_REDRAW:
- if (polyMode) return DrawGeomPolyModify(action,pos,context);
- if (context->state == MOD_NONE) return C_CONTINUE;
- DrawSegs( &tempD, zero, 0.0, &tempSegs(0), tempSegs_da.cnt, trackGauge, wDrawColorBlack);
- DrawSegs( &tempD, zero, 0.0, &anchors(0), anchors_da.cnt, trackGauge, wDrawColorBlack );
+ if (polyMode) { return DrawGeomPolyModify(action,pos,context); }
+ if (context->state == MOD_NONE) { return C_CONTINUE; }
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &tempSegs_da, trackGauge, wDrawColorBlack,
+ 0 );
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack,
+ 0 );
break;
case C_CANCEL:
context->state = MOD_NONE;
@@ -2650,6 +2850,7 @@ STATUS_T DrawGeomModify(
context->rot_moved = FALSE;
polyMode = FALSE;
DYNARR_RESET(trkSeg_t,anchors_da);
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
DrawNewTrack( context->trk );
break;
default:
@@ -2657,3 +2858,5 @@ STATUS_T DrawGeomModify(
}
return C_CONTINUE;
}
+
+
diff --git a/app/bin/drawgeom.h b/app/bin/drawgeom.h
index 19a982d..d98cf1d 100644
--- a/app/bin/drawgeom.h
+++ b/app/bin/drawgeom.h
@@ -16,7 +16,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
*/
#ifndef HAVE_DRAWGEOM_H
@@ -49,78 +49,78 @@
#define OP_LAST (OP_POLYLINE)
typedef struct {
- void (*message)( const char *, ... );
- void (*Redraw)( void );
- drawCmd_p D;
- long Op;
- wDrawColor Color;
- long line_Width;
- double width;
- ANGLE_T angle;
- double length;
- double radius;
- long benchOption;
- drawLineType_e lineType;
- int State;
- int index;
- curveData_t ArcData;
- ANGLE_T ArcAngle;
- int Started;
- BOOL_T Changed;
- BOOL_T show;
- BOOL_T UndoStarted;
- } drawContext_t;
+ void (*message)( const char *, ... );
+ void (*Redraw)( void );
+ drawCmd_p D;
+ long Op;
+ double width;
+ ANGLE_T angle;
+ double length;
+ double radius;
+ long benchOption;
+ drawLineType_e lineType;
+ int State;
+ int index;
+ curveData_t ArcData;
+ ANGLE_T ArcAngle;
+ int Started;
+ BOOL_T Changed;
+ BOOL_T show;
+ BOOL_T UndoStarted;
+} drawContext_t;
typedef enum {MOD_NONE, MOD_STARTED, MOD_SELECTED_PT, MOD_AFTER_PT,
- MOD_ORIGIN, MOD_AFTER_ORIG } ModState_e;
+ MOD_ORIGIN, MOD_AFTER_ORIG
+ } ModState_e;
typedef struct {
- void (*message)( const char *, ... );
- void (*Redraw)( void );
- drawCmd_p D;
- double length;
- ANGLE_T rel_angle;
- double radius;
- ANGLE_T arc_angle;
- int last_inx;
- ANGLE_T abs_angle;
- double height;
- double width;
- int prev_inx;
- int max_inx;
- track_p trk;
- char type;
- coOrd orig; //Origin Pos
- ANGLE_T angle; //Origin Angle
- wIndex_t segCnt;
- trkSeg_p segPtr;
- wBool_t selected;
- wBool_t circle;
- ModState_e state;
- coOrd rel_center;
- coOrd rot_center;
- wBool_t rot_moved;
- coOrd translate_center;
- coOrd moved;
- coOrd arm;
- coOrd new_arm;
- ANGLE_T rot_angle;
- coOrd p0;
- coOrd p1;
- coOrd pm;
- coOrd pc;
- DIST_T disp;
- wBool_t rotate_state;
- wBool_t open;
- wBool_t filled;
- PolyType_e subtype;
- } drawModContext_t;
+ void (*message)( const char *, ... );
+ void (*Redraw)( void );
+ drawCmd_p D;
+ double length;
+ ANGLE_T rel_angle;
+ double radius;
+ ANGLE_T arc_angle;
+ int last_inx;
+ ANGLE_T abs_angle;
+ double height;
+ double width;
+ int prev_inx;
+ int max_inx;
+ track_p trk;
+ char type;
+ coOrd orig; //Origin Pos
+ ANGLE_T angle; //Origin Angle
+ wIndex_t segCnt;
+ trkSeg_p segPtr;
+ wBool_t selected;
+ wBool_t circle;
+ ModState_e state;
+ coOrd rel_center;
+ coOrd rot_center;
+ wBool_t rot_moved;
+ coOrd translate_center;
+ coOrd moved;
+ coOrd arm;
+ coOrd new_arm;
+ ANGLE_T rot_angle;
+ coOrd p0;
+ coOrd p1;
+ coOrd pm;
+ coOrd pc;
+ DIST_T disp;
+ wBool_t rotate_state;
+ wBool_t open;
+ wBool_t filled;
+ PolyType_e subtype;
+} drawModContext_t;
typedef enum {LENGTH_UPDATE, WIDTH_UPDATE} drawUpdateType_e;
extern drawContext_t * drawContext;
extern wDrawColor lineColor;
-extern long lineWidth;
+extern wDrawColor benchColor;
+extern DIST_T lineWidth;
void DrawGeomOp( void * );
STATUS_T DrawGeomMouse( wAction_t, coOrd, drawContext_t *);
diff --git a/app/bin/dxfformat.c b/app/bin/dxfformat.c
index 3adc1b7..ac634cf 100644
--- a/app/bin/dxfformat.c
+++ b/app/bin/dxfformat.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 <dynstring.h>
@@ -26,8 +26,9 @@
extern char *sProdNameUpper;
extern long units; /**< meaning is 0 = English, 1 = metric */
-static char *dxfDimensionDefaults[][3] = { /**< default values for dimensions, English, metric and DXF variable name */
- { "1.0", "25.0", "$DIMTXT" },
+static char *dxfDimensionDefaults[][3] = {
+ /**< default values for dimensions, English, metric and DXF variable name */
+ { "1.0", "25.0", "$DIMTXT" },
{ "0.8", "20.0", "$DIMASZ"}
};
@@ -42,14 +43,27 @@ static char *dxfDimensionDefaults[][3] = { /**< default values for dimensions, E
void DxfLayerName(DynString *result, char *name, int layer)
{
- DynStringPrintf(result, DXF_INDENT "8\n%s%d\n", name, layer);
+ DynStringPrintf(result, DXF_INDENT "8\n%s%d\n", name, layer);
+}
+
+/**
+* Build and format an integer.
+*
+* \param result OUT buffer for result
+* \param type IN type of integer following DXF specs
+* \param value IN position
+*/
+
+void DxfFormatInteger(DynString *result, int type, int value)
+{
+ DynStringPrintf(result, DXF_INDENT "%d\n%d\n", type, value);
}
/**
* Build and format a position. If it specifies a point the value
* is assumed to be in inches and will be converted to millimeters
* if the metric system is active.
-* If it is an angle (group codes 50 to 59) it is not converted.
+* If it is an angle (group codes 50 to 59) it is not converted.
*
* \param result OUT buffer for result
* \param type IN type of position following DXF specs
@@ -58,26 +72,30 @@ void DxfLayerName(DynString *result, char *name, int layer)
void DxfFormatPosition(DynString *result, int type, double value)
{
- if (units == 1)
- {
- if( type < 50 || type > 58 )
+ if (units == 1) {
+ if( type < 50 || type > 58 ) {
value *= 25.4;
+ }
}
-
- DynStringPrintf(result, DXF_INDENT "%d\n%0.6f\n", type, value);
+
+ DynStringPrintf(result, DXF_INDENT "%d\n%0.6f\n", type, value);
}
/**
* Build and format the line style definition
*
* \param result OUT buffer for result
-* \param type IN line style TRUE for dashed, FALSE for solid lines
+* \param type IN line style
*/
-void DxfLineStyle(DynString *result, int isDashed)
+void DxfLineStyle(DynString *result, int style)
{
- DynStringPrintf(result, DXF_INDENT "6\n%s\n",
- (isDashed ? "DASHED" : "CONTINUOUS"));
+ char* s = "CONTINUOUS";
+ switch ( style ) {
+ case 1: s = "DASHEDTINY"; break;
+ case 2: s = "DOTTINY"; break;
+ }
+ DynStringPrintf(result, DXF_INDENT "6\n%s\n", s);
}
/**
@@ -92,11 +110,11 @@ void DxfLineStyle(DynString *result, int isDashed)
static void
DxfAppendLayerName(DynString *output, int layer)
{
- DynString formatted = NaS;
- DynStringMalloc(&formatted, 0);
- DxfLayerName(&formatted, sProdNameUpper, layer);
- DynStringCatStr(output, &formatted);
- DynStringFree(&formatted);
+ DynString formatted = NaS;
+ DynStringMalloc(&formatted, 0);
+ DxfLayerName(&formatted, sProdNameUpper, layer);
+ DynStringCatStr(output, &formatted);
+ DynStringFree(&formatted);
}
/**
@@ -110,28 +128,46 @@ DxfAppendLayerName(DynString *output, int layer)
static void
DxfAppendPosition(DynString *output, int type, double value)
{
- DynString formatted = NaS;
- DynStringMalloc(&formatted, 0);
- DxfFormatPosition(&formatted, type, value);
- DynStringCatStr(output, &formatted);
- DynStringFree(&formatted);
+ DynString formatted = NaS;
+ DynStringMalloc(&formatted, 0);
+ DxfFormatPosition(&formatted, type, value);
+ DynStringCatStr(output, &formatted);
+ DynStringFree(&formatted);
+}
+
+/**
+* Build and format an integer. The result is appended to the existing result buffer.
+*
+* \param output OUT buffer for result
+* \param type IN type of integer following DXF specs
+* \param value IN position
+*/
+
+static void
+DxfAppendInteger(DynString *output, int type, int value)
+{
+ DynString formatted = NaS;
+ DynStringMalloc(&formatted, 0);
+ DxfFormatInteger(&formatted, type, value);
+ DynStringCatStr(output, &formatted);
+ DynStringFree(&formatted);
}
/**
* Build and format the line style definition. The result is appended to the existing result buffer.
*
* \param result OUT buffer for result
-* \param type IN line style TRUE for dashed, FALSE for solid lines
+* \param type IN line style 0 CONTINUOUS, 1 DASHED or 2 DOT
*/
static void
DxfAppendLineStyle(DynString *output, int style)
{
- DynString formatted = NaS;
- DynStringMalloc(&formatted, 0);
- DxfLineStyle(&formatted, style);
- DynStringCatStr(output, &formatted);
- DynStringFree(&formatted);
+ DynString formatted = NaS;
+ DynStringMalloc(&formatted, 0);
+ DxfLineStyle(&formatted, style);
+ DynStringCatStr(output, &formatted);
+ DynStringFree(&formatted);
}
/**
@@ -142,19 +178,21 @@ DxfAppendLineStyle(DynString *output, int style)
* \param x0, y0 IN first endpoint
* \param x1, y1 IN second endpoint
* \param style IN line style, TRUE for dashed, FALSE for continuous
+* \param color IN line color
*/
void
DxfLineCommand(DynString *result, int layer, double x0,
- double y0, double x1, double y1, int style)
+ double y0, double x1, double y1, int style, int color)
{
- DynStringCatCStr(result, DXF_INDENT "0\nLINE\n");
- DxfAppendLayerName(result, layer);
- DxfAppendPosition(result, 10, x0);
- DxfAppendPosition(result, 20, y0);
- DxfAppendPosition(result, 11, x1);
- DxfAppendPosition(result, 21, y1);
- DxfAppendLineStyle(result, style);
+ DynStringCatCStr(result, DXF_INDENT "0\nLINE\n");
+ DxfAppendLayerName(result, layer);
+ DxfAppendPosition(result, 10, x0);
+ DxfAppendPosition(result, 20, y0);
+ DxfAppendPosition(result, 11, x1);
+ DxfAppendPosition(result, 21, y1);
+ DxfAppendLineStyle(result, style);
+ DxfAppendInteger(result, 420, color);
}
/**
@@ -165,18 +203,20 @@ DxfLineCommand(DynString *result, int layer, double x0,
* \param x, y IN center point
* \param r IN radius
* \param style IN line style, TRUE for dashed, FALSE for continuous
+* \param color IN line color
*/
void
DxfCircleCommand(DynString *result, int layer, double x,
- double y, double r, int style)
+ double y, double r, int style, int color)
{
- DynStringCatCStr(result, DXF_INDENT "0\nCIRCLE\n");
- DxfAppendPosition(result, 10, x);
- DxfAppendPosition(result, 20, y);
- DxfAppendPosition(result, 40, r);
- DxfAppendLayerName(result, layer);
- DxfAppendLineStyle(result, style);
+ DynStringCatCStr(result, DXF_INDENT "0\nCIRCLE\n");
+ DxfAppendPosition(result, 10, x);
+ DxfAppendPosition(result, 20, y);
+ DxfAppendPosition(result, 40, r);
+ DxfAppendLayerName(result, layer);
+ DxfAppendLineStyle(result, style);
+ DxfAppendInteger(result, 420, color);
}
/**
@@ -189,20 +229,22 @@ DxfCircleCommand(DynString *result, int layer, double x,
* \param a0 IN starting angle
* \param a1 IN ending angle
* \param style IN line style, TRUE for dashed, FALSE for continuous
+* \param color IN line color
*/
void
DxfArcCommand(DynString *result, int layer, double x, double y,
- double r, double a0, double a1, int style)
+ double r, double a0, double a1, int style, int color)
{
- DynStringCatCStr(result, DXF_INDENT "0\nARC\n");
- DxfAppendPosition(result, 10, x);
- DxfAppendPosition(result, 20, y);
- DxfAppendPosition(result, 40, r);
- DxfAppendPosition(result, 50, a0);
- DxfAppendPosition(result, 51, a0+a1);
- DxfAppendLayerName(result, layer);
- DxfAppendLineStyle(result, style);
+ DynStringCatCStr(result, DXF_INDENT "0\nARC\n");
+ DxfAppendPosition(result, 10, x);
+ DxfAppendPosition(result, 20, y);
+ DxfAppendPosition(result, 40, r);
+ DxfAppendPosition(result, 50, a0);
+ DxfAppendPosition(result, 51, a0+a1);
+ DxfAppendLayerName(result, layer);
+ DxfAppendLineStyle(result, style);
+ DxfAppendInteger(result, 420, color);
}
/**
@@ -213,18 +255,20 @@ DxfArcCommand(DynString *result, int layer, double x, double y,
* \param x, y IN text position
* \param size IN font size
* \param text IN text
+* \param color IN text color
*/
void
DxfTextCommand(DynString *result, int layer, double x,
- double y, double size, char *text)
+ double y, double size, char *text, int color)
{
- DynStringCatCStr(result, DXF_INDENT "0\nTEXT\n");
- DynStringCatCStrs(result, DXF_INDENT "1\n", text, "\n", NULL);
- DxfAppendPosition(result, 10, x);
- DxfAppendPosition(result, 20, y);
- DxfAppendPosition(result, 40, size/72.0);
- DxfAppendLayerName(result, layer);
+ DynStringCatCStr(result, DXF_INDENT "0\nTEXT\n");
+ DynStringCatCStrs(result, DXF_INDENT "1\n", text, "\n", NULL);
+ DxfAppendPosition(result, 10, x);
+ DxfAppendPosition(result, 20, y);
+ DxfAppendPosition(result, 40, size/72.0);
+ DxfAppendLayerName(result, layer);
+ DxfAppendInteger(result, 420, color);
}
/**
@@ -238,29 +282,29 @@ DxfTextCommand(DynString *result, int layer, double x,
void
DxfUnits(DynString *result)
{
- char *value;
- DynStringCatCStr(result, DXF_INDENT "9\n$MEASUREMENT\n 70\n");
+ char *value;
+ DynStringCatCStr(result, DXF_INDENT "9\n$MEASUREMENT\n 70\n");
- if (units == 1) {
- value = "1\n";
- } else {
- value = "0\n";
- }
+ if (units == 1) {
+ value = "1\n";
+ } else {
+ value = "0\n";
+ }
- DynStringCatCStr(result, value);
- DynStringCatCStr(result, DXF_INDENT "9\n$INSUNITS\n 70\n");
+ DynStringCatCStr(result, value);
+ DynStringCatCStr(result, DXF_INDENT "9\n$INSUNITS\n 70\n");
- if (units == 1) {
- value = "4\n";
- } else {
- value = "1\n";
- }
+ if (units == 1) {
+ value = "4\n";
+ } else {
+ value = "1\n";
+ }
- DynStringCatCStr(result, value);
+ DynStringCatCStr(result, value);
}
/**
-* Define a size of dimensions. The default values are taken from
+* Define a size of dimensions. The default values are taken from
* static array dxfDimensionDefaults
*
* \PARAM result OUT the completed command is appended to this buffer
@@ -273,10 +317,10 @@ DxfDimensionSize(DynString *result, enum DXF_DIMENSIONS dimension )
DynString formatted;
DynStringMalloc(&formatted, 0);
- DynStringPrintf(&formatted,
- DXF_INDENT "9\n%s\n 40\n%s\n",
- dxfDimensionDefaults[dimension][2],
- dxfDimensionDefaults[dimension][units]);
+ DynStringPrintf(&formatted,
+ DXF_INDENT "9\n%s\n 40\n%s\n",
+ dxfDimensionDefaults[dimension][2],
+ dxfDimensionDefaults[dimension][units]);
DynStringCatStr(result, &formatted);
DynStringFree(&formatted);
@@ -296,24 +340,24 @@ void
DxfPrologue(DynString *result, int layerCount, double x0, double y0, double x1,
double y1)
{
- int i;
- DynString layer = NaS;
- DynStringMalloc(&layer, 0);
- DynStringCatCStr(result, "\
+ int i;
+ DynString layer = NaS;
+ DynStringMalloc(&layer, 0);
+ DynStringCatCStr(result, "\
0\nSECTION\n\
2\nHEADER\n\
9\n$ACADVER\n 1\nAC1009\n");
DxfUnits(result);
DxfDimensionSize(result, DXF_DIMTEXTSIZE);
DxfDimensionSize(result, DXF_DIMARROWSIZE);
-
- DynStringCatCStr(result, " 9\n$EXTMIN\n");
- DxfAppendPosition(result, 10, x0);
- DxfAppendPosition(result, 20, y0);
- DynStringCatCStr(result, " 9\n$EXTMAX\n");
- DxfAppendPosition(result, 10, x1);
- DxfAppendPosition(result, 20, y1);
- DynStringCatCStr(result, "\
+
+ DynStringCatCStr(result, " 9\n$EXTMIN\n");
+ DxfAppendPosition(result, 10, x0);
+ DxfAppendPosition(result, 20, y0);
+ DynStringCatCStr(result, " 9\n$EXTMAX\n");
+ DxfAppendPosition(result, 10, x1);
+ DxfAppendPosition(result, 20, y1);
+ DynStringCatCStr(result, "\
9\n$TEXTSTYLE\n 7\nSTANDARD\n\
0\nENDSEC\n\
0\nSECTION\n\
@@ -334,14 +378,14 @@ DxfPrologue(DynString *result, int layerCount, double x0, double y0, double x1,
2\nLAYER\n\
70\n0\n");
- for (i = 0; i < layerCount; i++) {
- DynStringPrintf(&layer,
- DXF_INDENT"0\nLAYER\n 2\n%s%d\n 6\nCONTINUOUS\n 62\n7\n 70\n0\n",
- sProdNameUpper, i + 1);
- DynStringCatStr(result, &layer);
- }
+ for (i = 0; i < layerCount; i++) {
+ DynStringPrintf(&layer,
+ DXF_INDENT"0\nLAYER\n 2\n%s%d\n 6\nCONTINUOUS\n 62\n7\n 70\n0\n",
+ sProdNameUpper, i + 1);
+ DynStringCatStr(result, &layer);
+ }
- DynStringCatCStr(result, "\
+ DynStringCatCStr(result, "\
0\nENDTAB\n\
0\nENDSEC\n\
0\nSECTION\n\
@@ -358,5 +402,5 @@ DxfPrologue(DynString *result, int layerCount, double x0, double y0, double x1,
void
DxfEpilogue(DynString *result)
{
- DynStringCatCStr(result, DXF_INDENT "0\nENDSEC\n" DXF_INDENT "0\nEOF\n");
+ DynStringCatCStr(result, DXF_INDENT "0\nENDSEC\n" DXF_INDENT "0\nEOF\n");
}
diff --git a/app/bin/dxfformat.h b/app/bin/dxfformat.h
index dbb1ee9..d0bd7ab 100644
--- a/app/bin/dxfformat.h
+++ b/app/bin/dxfformat.h
@@ -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
*/
#ifndef HAVE_DXFFORMAT_H
@@ -25,8 +25,7 @@
#include "dynstring.h"
-enum DXF_DIMENSIONS
-{
+enum DXF_DIMENSIONS {
DXF_DIMTEXTSIZE,
DXF_DIMARROWSIZE
};
@@ -35,14 +34,19 @@ void DxfLayerName(DynString *result, char *name, int layer);
void DxfFormatPosition(DynString *result, int type, double value);
void DxfLineStyle(DynString *result, int isDashed);
-void DxfLineCommand(DynString *result, int layer, double x0, double yo, double x1, double y1, int style);
-void DxfCircleCommand(DynString *result, int layer, double x, double y, double r, int style);
-void DxfArcCommand(DynString *result, int layer, double x, double y, double r, double a0, double a1, int style);
-void DxfTextCommand(DynString *result, int layer, double x, double y, double size, char *text);
+void DxfLineCommand(DynString *result, int layer, double x0, double yo,
+ double x1, double y1, int style, int color);
+void DxfCircleCommand(DynString *result, int layer, double x, double y,
+ double r, int style, int color);
+void DxfArcCommand(DynString *result, int layer, double x, double y, double r,
+ double a0, double a1, int style, int color);
+void DxfTextCommand(DynString *result, int layer, double x, double y,
+ double size, char *text, int color);
void DxfUnits(DynString *result);
void DxfDimensionSize(DynString *result, enum DXF_DIMENSIONS dimension);
-void DxfPrologue(DynString *result, int layerCount, double x0, double y0, double x1, double y1);
+void DxfPrologue(DynString *result, int layerCount, double x0, double y0,
+ double x1, double y1);
void DxfEpilogue(DynString *result);
#define DXF_INDENT " "
diff --git a/app/bin/dxfoutput.c b/app/bin/dxfoutput.c
index 957110e..3988696 100644
--- a/app/bin/dxfoutput.c
+++ b/app/bin/dxfoutput.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 <xtrkcad-config.h>
@@ -36,114 +36,128 @@
static struct wFilSel_t * exportDXFFile_fs;
static void DxfLine(
- drawCmd_p d,
- coOrd p0,
- coOrd p1,
- wDrawWidth width,
- wDrawColor color)
+ drawCmd_p d,
+ coOrd p0,
+ coOrd p1,
+ wDrawWidth width,
+ wDrawColor color)
{
- DynString command = NaS;
- DynStringMalloc(&command, 100);
- DxfLineCommand(&command,
- curTrackLayer + 1,
- p0.x, p0.y,
- p1.x, p1.y,
- ((d->options&DC_DASH) != 0));
- fputs(DynStringToCStr(&command), (FILE *)d->d);
- DynStringFree(&command);
+ long c = wDrawGetRGB( color );
+ long s = d->options & DC_DASH ? 1 : (d->options & DC_DOT ? 2 : 0);
+
+ DynString command = NaS;
+ DynStringMalloc(&command, 100);
+ DxfLineCommand(&command,
+ curTrackLayer + 1,
+ p0.x, p0.y,
+ p1.x, p1.y,
+ s,
+ c);
+ fputs(DynStringToCStr(&command), (FILE *)d->d);
+ DynStringFree(&command);
}
static void DxfArc(
- drawCmd_p d,
- coOrd p,
- DIST_T r,
- ANGLE_T angle0,
- ANGLE_T angle1,
- BOOL_T drawCenter,
- wDrawWidth width,
- wDrawColor color)
+ drawCmd_p d,
+ coOrd p,
+ DIST_T r,
+ ANGLE_T angle0,
+ ANGLE_T angle1,
+ BOOL_T drawCenter,
+ wDrawWidth width,
+ wDrawColor color)
{
- DynString command = NaS;
- DynStringMalloc(&command, 100);
- angle0 = NormalizeAngle(90.0-(angle0+angle1));
-
- if (angle1 >= 360.0) {
- DxfCircleCommand(&command,
- curTrackLayer + 1,
- p.x,
- p.y,
- r,
- ((d->options&DC_DASH) != 0));
- } else {
- DxfArcCommand(&command,
- curTrackLayer + 1,
- p.x,
- p.y,
- r,
- angle0,
- angle1,
- ((d->options&DC_DASH) != 0));
- }
-
- fputs(DynStringToCStr(&command), (FILE *)d->d);
- DynStringFree(&command);
+ long c = wDrawGetRGB( color );
+ long s = d->options & DC_DASH ? 1 : (d->options & DC_DOT ? 2 : 0);
+
+ DynString command = NaS;
+ DynStringMalloc(&command, 100);
+ angle0 = NormalizeAngle(90.0-(angle0+angle1));
+
+ if (angle1 >= 360.0) {
+ DxfCircleCommand(&command,
+ curTrackLayer + 1,
+ p.x,
+ p.y,
+ r,
+ s,
+ c);
+ } else {
+ DxfArcCommand(&command,
+ curTrackLayer + 1,
+ p.x,
+ p.y,
+ r,
+ angle0,
+ angle1,
+ s,
+ c);
+ }
+
+ fputs(DynStringToCStr(&command), (FILE *)d->d);
+ DynStringFree(&command);
}
static void DxfString(
- drawCmd_p d,
- coOrd p,
- ANGLE_T a,
- char * s,
- wFont_p fp,
- FONTSIZE_T fontSize,
- wDrawColor color)
+ drawCmd_p d,
+ coOrd p,
+ ANGLE_T a,
+ char * s,
+ wFont_p fp,
+ FONTSIZE_T fontSize,
+ wDrawColor color)
{
- DynString command = NaS;
- DynStringMalloc(&command, 100);
- DxfTextCommand(&command,
- curTrackLayer + 1,
- p.x,
- p.y,
- fontSize,
- s);
- fputs(DynStringToCStr(&command), (FILE *)d->d);
- DynStringFree(&command);
+ long c = wDrawGetRGB( color );
+
+ DynString command = NaS;
+ DynStringMalloc(&command, 100);
+ DxfTextCommand(&command,
+ curTrackLayer + 1,
+ p.x,
+ p.y,
+ fontSize,
+ s,
+ c);
+ fputs(DynStringToCStr(&command), (FILE *)d->d);
+ DynStringFree(&command);
}
static void DxfBitMap(
- drawCmd_p d,
- coOrd p,
- wDrawBitMap_p bm,
- wDrawColor color)
+ drawCmd_p d,
+ coOrd p,
+ wDrawBitMap_p bm,
+ wDrawColor color)
{
}
static void DxfPoly(
- drawCmd_p d,
- int cnt,
- coOrd * pts,
- int * types,
- wDrawColor color,
- wDrawWidth width,
- drawFill_e eOpts )
+ drawCmd_p d,
+ int cnt,
+ coOrd * pts,
+ int * types,
+ wDrawColor color,
+ wDrawWidth width,
+ drawFill_e eOpts )
{
- int inx;
-
- for (inx=1; inx<cnt; inx++) {
- DxfLine(d, pts[inx-1], pts[inx], width, color);
- }
- if (eOpts != DRAW_OPEN)
- DxfLine(d, pts[cnt-1], pts[0], width, color);
+ int inx;
+
+ for (inx=1; inx<cnt; inx++) {
+ DxfLine(d, pts[inx-1], pts[inx], width, color);
+ }
+ if (eOpts != DRAW_OPEN) {
+ DxfLine(d, pts[cnt-1], pts[0], width, color);
+ }
}
static void DxfFillCircle(drawCmd_p d, coOrd center, DIST_T radius,
wDrawColor color)
{
- DxfArc(d, center, radius, 0.0, 360, FALSE, 0, color);
+ DxfArc(d, center, radius, 0.0, 360, FALSE, 0, color);
}
-static void DxfRectangle(drawCmd_p d, coOrd orig, coOrd size, wDrawColor color, drawFill_e eOpts)
+static void DxfRectangle(drawCmd_p d, coOrd orig, coOrd size, wDrawColor color,
+ drawFill_e eOpts)
{
coOrd p[4];
// p1 p2
@@ -157,61 +171,61 @@ static void DxfRectangle(drawCmd_p d, coOrd orig, coOrd size, wDrawColor color,
static drawFuncs_t dxfDrawFuncs = {
- DxfLine,
- DxfArc,
- DxfString,
- DxfBitMap,
- DxfPoly,
- DxfFillCircle,
- DxfRectangle
+ DxfLine,
+ DxfArc,
+ DxfString,
+ DxfBitMap,
+ DxfPoly,
+ DxfFillCircle,
+ DxfRectangle
};
static drawCmd_t dxfD = {
- NULL, &dxfDrawFuncs, 0, 1.0, 0.0, {0.0,0.0}, {0.0,0.0}, Pix2CoOrd, CoOrd2Pix, 100.0
+ NULL, &dxfDrawFuncs, 0, 1.0, 0.0, {0.0,0.0}, {0.0,0.0}, Pix2CoOrd, CoOrd2Pix, 100.0
};
static int DoExportDXFTracks(
- int cnt,
- char ** fileName,
- void * data)
+ int cnt,
+ char ** fileName,
+ void * data)
{
- time_t clock;
+ time_t clock;
DynString command = NaS;
FILE * dxfF;
- assert(fileName != NULL);
- assert(cnt == 1);
+ CHECK(fileName != NULL);
+ CHECK(cnt == 1);
DynStringMalloc(&command, 100);
SetCurrentPath(DXFPATHKEY, fileName[ 0 ]);
- dxfF = fopen(fileName[0], "w");
-
- if (dxfF==NULL) {
- NoticeMessage(MSG_OPEN_FAIL, _("Continue"), NULL, "DXF", fileName[0],
- strerror(errno));
- return FALSE;
- }
-
- SetCLocale();
- wSetCursor(mainD.d, wCursorWait);
- time(&clock);
-
+ dxfF = fopen(fileName[0], "w");
+
+ if (dxfF==NULL) {
+ NoticeMessage(MSG_OPEN_FAIL, _("Continue"), NULL, "DXF", fileName[0],
+ strerror(errno));
+ return FALSE;
+ }
+
+ SetCLocale();
+ wSetCursor(mainD.d, wCursorWait);
+ time(&clock);
+
DxfPrologue(&command, 10, 0.0, 0.0, mapD.size.x, mapD.size.y);
fputs(DynStringToCStr(&command), dxfF);
dxfD.d = (wDraw_p)dxfF;
- DrawSelectedTracks(&dxfD);
+ DrawSelectedTracks( &dxfD, false );
DynStringClear(&command);
DxfEpilogue(&command);
fputs(DynStringToCStr(&command), dxfF);
- fclose(dxfF);
- SetUserLocale();
- Reset();
- wSetCursor(mainD.d, defaultCursor);
- return TRUE;
+ fclose(dxfF);
+ SetUserLocale();
+ Reset();
+ wSetCursor(mainD.d, defaultCursor);
+ return TRUE;
}
/**
@@ -220,17 +234,17 @@ static int DoExportDXFTracks(
void DoExportDXF(void* unused )
{
- //if (selectedTrackCount <= 0) {
- // ErrorMessage(MSG_NO_SELECTED_TRK);
- // return;
- //}
- assert(selectedTrackCount > 0);
+ //if (selectedTrackCount <= 0) {
+ // ErrorMessage(MSG_NO_SELECTED_TRK);
+ // return;
+ //}
+ CHECK(selectedTrackCount > 0);
- if (exportDXFFile_fs == NULL)
- exportDXFFile_fs = wFilSelCreate(mainW, FS_SAVE, 0, _("Export to DXF"),
- sDXFFilePattern, DoExportDXFTracks, NULL);
+ if (exportDXFFile_fs == NULL)
+ exportDXFFile_fs = wFilSelCreate(mainW, FS_SAVE, 0, _("Export to DXF"),
+ sDXFFilePattern, DoExportDXFTracks, NULL);
- wFilSelect(exportDXFFile_fs, GetCurrentPath(DXFPATHKEY));
+ wFilSelect(exportDXFFile_fs, GetCurrentPath(DXFPATHKEY));
}
diff --git a/app/bin/elev.c b/app/bin/elev.c
index ff987cc..98fcbab 100644
--- a/app/bin/elev.c
+++ b/app/bin/elev.c
@@ -1,5 +1,5 @@
/** \file elev.c
- *
+ *
*/
/* XTrkCad - Model Railroad CAD
@@ -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 "ccurve.h"
@@ -40,10 +40,10 @@ static char * elevPrefix;
static void SetTrkOnElevPath( track_p trk, int mode, DIST_T elev );
typedef struct {
- track_p trk;
- EPINX_T ep;
- DIST_T len;
- } elist_t;
+ track_p trk;
+ EPINX_T ep;
+ DIST_T len;
+} elist_t;
static dynArr_t elist_da;
#define elist(N) DYNARR_N( elist_t, elist_da, N )
#define elistAppend( T, E, L ) \
@@ -52,33 +52,35 @@ static dynArr_t elist_da;
EPINX_T GetNextTrkOnPath( track_p trk, EPINX_T ep )
{
-/* Get next track on Path:
- 1 - there is only 1 connected (not counting ep)
- 2 - there are >1 but only 1 on Path
- 3 - one of them is PST:PSE or PET:PEE
-*/
+ /* Get next track on Path:
+ 1 - there is only 1 connected (not counting ep)
+ 2 - there are >1 but only 1 on Path
+ 3 - one of them is PST:PSE or PET:PEE
+ */
EPINX_T ep2;
track_p trkN;
int epCnt = GetTrkEndPtCnt(trk);
for ( ep2=0; ep2<epCnt; ep2++) {
- if ( ep2 == ep )
+ if ( ep2 == ep ) {
continue;
+ }
trkN = GetTrkEndTrk(trk,ep2);
- if (trkN && (GetTrkBits(trkN)&TB_PROFILEPATH))
+ if (trkN && (GetTrkBits(trkN)&TB_PROFILEPATH)) {
return ep2;
+ }
}
return -1;
}
EXPORT int FindDefinedElev(
- track_p trk,
- EPINX_T ep,
- int dir,
- BOOL_T onpath,
- DIST_T * Relev,
- DIST_T *Rdist )
+ track_p trk,
+ EPINX_T ep,
+ int dir,
+ BOOL_T onpath,
+ DIST_T * Relev,
+ DIST_T *Rdist )
{
track_p trk0, trk1;
EPINX_T ep0, ep1, ep2;
@@ -86,8 +88,9 @@ EXPORT int FindDefinedElev(
if (dir) {
trk1 = GetTrkEndTrk( trk, ep );
- if (trk1 == NULL)
+ if (trk1 == NULL) {
return FDE_END;
+ }
ep = GetEndPtConnectedToMe( trk1, trk );
trk = trk1;
}
@@ -96,7 +99,7 @@ EXPORT int FindDefinedElev(
while (1) {
for (ep2=0; ep2<GetTrkEndPtCnt(trk); ep2++) {
if ((trk!=trk0||ep2!=ep0)&&
- EndPtIsDefinedElev(trk,ep2) ) {
+ EndPtIsDefinedElev(trk,ep2) ) {
dist += GetTrkLength( trk, ep, ep2 );
*Relev = GetTrkEndElevHeight(trk,ep2);
*Rdist = dist;
@@ -126,19 +129,20 @@ EXPORT int FindDefinedElev(
dist += GetTrkLength( trk, ep, ep2 );
trk = trk1;
ep = ep1;
- if (trk == trk0)
+ if (trk == trk0) {
return FDE_UDF;
+ }
}
}
BOOL_T ComputeElev(
- track_p trk,
- EPINX_T ep,
- BOOL_T onpath,
- DIST_T *elevR,
- DIST_T *gradeR,
- BOOL_T force )
+ track_p trk,
+ EPINX_T ep,
+ BOOL_T onpath,
+ DIST_T *elevR,
+ DIST_T *gradeR,
+ BOOL_T force )
{
DIST_T grade = 0.0;
DIST_T elev0;
@@ -182,10 +186,12 @@ BOOL_T ComputeElev(
}
}
- if ( elevR )
+ if ( elevR ) {
*elevR = elev0;
- if ( gradeR )
+ }
+ if ( gradeR ) {
*gradeR = grade;
+ }
return rc;
}
@@ -198,10 +204,10 @@ BOOL_T ComputeElev(
*/
typedef struct {
- track_p trk;
- EPINX_T ep;
- DIST_T elev;
- } defelev_t;
+ track_p trk;
+ EPINX_T ep;
+ DIST_T elev;
+} defelev_t;
static dynArr_t defelev_da;
#define defelev(N) DYNARR_N( defelev_t, defelev_da, N )
@@ -217,8 +223,9 @@ static void FindDefElev( void )
while ( TrackIterate( &trk ) ) {
cnt = GetTrkEndPtCnt( trk );
for ( ep = 0; ep < cnt; ep++ ) {
- if ( !EndPtIsDefinedElev( trk, ep ) )
+ if ( !EndPtIsDefinedElev( trk, ep ) ) {
continue;
+ }
DYNARR_APPEND( defelev_t, defelev_da, 10 );
dep = &defelev( defelev_da.cnt-1 );
dep->trk = trk;
@@ -226,7 +233,8 @@ static void FindDefElev( void )
dep->elev = GetTrkEndElevHeight(trk,ep);
}
}
-LOG( log_fillElev, 1, ( "%s: findDefElev [%d] (%ld)\n", elevPrefix, defelev_da.cnt, wGetTimer()-time0 ) )
+ LOG( log_fillElev, 1, ( "%s: findDefElev [%d] (%ld)\n", elevPrefix,
+ defelev_da.cnt, wGetTimer()-time0 ) )
}
@@ -250,15 +258,17 @@ static void FindAttachedDefElev( track_p trk, BOOL_T remove )
DYNARR_RESET( elist_t, elist_da );
elistAppend( trk, 0, 0 );
SetTrkBits( trk, TB_PROCESSED );
- if (remove)
+ if (remove) {
ClrTrkBits( trk, TB_ELEVPATH );
+ }
for ( i1=0; i1<elist_da.cnt; i1++ ) {
trk = elist(i1).trk;
- if (!IsTrack(trk))
+ if (!IsTrack(trk)) {
continue;
+ }
cnt = GetTrkEndPtCnt(trk);
for ( ep=0; ep<cnt; ep++ ) {
- if ( EndPtIsDefinedElev(trk,ep) ) {
+ if ( EndPtIsDefinedElev(trk,ep) ) {
DYNARR_APPEND( defelev_t, defelev_da, 10 );
dep = &defelev( defelev_da.cnt-1 );
dep->trk = trk;
@@ -286,8 +296,9 @@ static void FindAttachedDefElev( track_p trk, BOOL_T remove )
if ( !(GetTrkBits(trk1)&TB_PROCESSED) ) {
elistAppend( trk1, 0, 0 );
SetTrkBits( trk1, TB_PROCESSED );
- if (remove)
+ if (remove) {
ClrTrkBits( trk1, TB_ELEVPATH );
+ }
}
}
}
@@ -311,7 +322,8 @@ static int FindObsoleteElevs( void )
FindAttachedDefElev( trk, TRUE );
}
}
-LOG( log_fillElev, 1, ( "%s: findObsoleteElevs [%d] (%ld)\n", elevPrefix, cnt, wGetTimer()-time0 ) )
+ LOG( log_fillElev, 1, ( "%s: findObsoleteElevs [%d] (%ld)\n", elevPrefix, cnt,
+ wGetTimer()-time0 ) )
return cnt;
}
@@ -325,22 +337,22 @@ LOG( log_fillElev, 1, ( "%s: findObsoleteElevs [%d] (%ld)\n", elevPrefix, cnt, w
*/
typedef struct {
- track_p trk;
- EPINX_T ep;
- EPINX_T ep2;
- DIST_T dist;
- DIST_T elev;
- } fork_t;
+ track_p trk;
+ EPINX_T ep;
+ EPINX_T ep2;
+ DIST_T dist;
+ DIST_T elev;
+} fork_t;
static dynArr_t fork_da;
#define fork(N) DYNARR_N( fork_t, fork_da, N )
static int FillElevShortestPathFunc(
- SPTF_CMD cmd,
- track_p trk,
- EPINX_T ep,
- EPINX_T ep2,
- DIST_T dist,
- void * data )
+ SPTF_CMD cmd,
+ track_p trk,
+ EPINX_T ep,
+ EPINX_T ep2,
+ DIST_T dist,
+ void * data )
{
defelev_t * dep = (defelev_t *)data;
track_p trk1;
@@ -351,10 +363,11 @@ static int FillElevShortestPathFunc(
case SPTC_MATCH:
/*if ( (GetTrkBits(trk)&TB_PROCESSED) )
epRc = 0;
- else*/ if ( (dep->trk!=trk || dep->ep!=ep) && EndPtIsDefinedElev(trk,ep))
+ else*/ if ( (dep->trk!=trk || dep->ep!=ep) && EndPtIsDefinedElev(trk,ep)) {
epRc = 1;
- else
+ } else {
epRc = 0;
+ }
break;
case SPTC_MATCHANY:
@@ -374,12 +387,18 @@ static int FillElevShortestPathFunc(
if (!(GetTrkBits(trk)&TB_PROCESSED)) {
SetTrkBits(trk, TB_PROCESSED);
if ( EndPtIsDefinedElev( trk, ep ) ) {
-if (log_shortPath<=0||logTable(log_shortPath).level<4) LOG( log_fillElev, 5, ( " ADD_TRK: T%d:%d D=%0.1f -> DefElev\n", GetTrkIndex(trk), ep, dist ) )
-LOG( log_shortPath, 4, ( "DefElev " ) )
- } else if ( GetNextTrk( trk, ep, &trk1, &ep1, GNTignoreIgnore ) < 0 && trk1 != NULL ) {
-if (log_shortPath<=0||logTable(log_shortPath).level<4) LOG( log_fillElev, 4, ( " ADD_TRK: T%d:%d D=%0.3f E=%0.3f -> Fork[%d]\n", GetTrkIndex(trk), ep, dist, dep->elev, fork_da.cnt ) )
-LOG( log_shortPath, 4, ( "E:%0.3f Fork[%d] ", dep->elev, fork_da.cnt ) )
- DYNARR_APPEND( fork_t, fork_da, 10 );
+ if (log_shortPath<=0
+ ||logTable(log_shortPath).level<4) LOG( log_fillElev, 5,
+ ( " ADD_TRK: T%d:%d D=%0.1f -> DefElev\n", GetTrkIndex(trk), ep, dist ) )
+ LOG( log_shortPath, 4, ( "DefElev " ) )
+ } else if ( GetNextTrk( trk, ep, &trk1, &ep1, GNTignoreIgnore ) < 0
+ && trk1 != NULL ) {
+ if (log_shortPath<=0
+ ||logTable(log_shortPath).level<4) LOG( log_fillElev, 4,
+ ( " ADD_TRK: T%d:%d D=%0.3f E=%0.3f -> Fork[%d]\n", GetTrkIndex(trk), ep,
+ dist, dep->elev, fork_da.cnt ) )
+ LOG( log_shortPath, 4, ( "E:%0.3f Fork[%d] ", dep->elev, fork_da.cnt ) )
+ DYNARR_APPEND( fork_t, fork_da, 10 );
n = &fork(fork_da.cnt-1);
n->trk = trk;
n->ep = ep;
@@ -391,10 +410,10 @@ LOG( log_shortPath, 4, ( "E:%0.3f Fork[%d] ", dep->elev, fork_da.cnt ) )
n->nep = dep->ep;
#endif
} else {
-LOG( log_shortPath, 4, ( "Normal " ) )
+ LOG( log_shortPath, 4, ( "Normal " ) )
}
} else {
-LOG( log_shortPath, 4, ( "Processed " ) )
+ LOG( log_shortPath, 4, ( "Processed " ) )
}
return 0;
@@ -404,10 +423,10 @@ LOG( log_shortPath, 4, ( "Processed " ) )
case SPTC_IGNNXTTRK:
if ( EndPtIsIgnoredElev(trk,ep2) ) {
-LOG( log_shortPath, 4, ( "2 Ignore " ) )
+ LOG( log_shortPath, 4, ( "2 Ignore " ) )
epRc = 1;
} else if ( (!EndPtIsDefinedElev(trk,ep)) && GetTrkEndTrk(trk,ep)==NULL ) {
-LOG( log_shortPath, 4, ( "1 Null && !DefElev " ) )
+ LOG( log_shortPath, 4, ( "1 Null && !DefElev " ) )
epRc = 1;
} else {
epRc = 0;
@@ -436,19 +455,20 @@ static void FindForks( void )
{
int i;
defelev_t * dep;
- int rc;
long time0 = wGetTimer();
DYNARR_RESET( fork_t, fork_da );
for ( i=0; i<defelev_da.cnt; i++ ) {
dep = &defelev(i);
-
+
ClrAllTrkBits( TB_PROCESSED );
-LOG( log_fillElev, 3, ( " findForks from T%d:%d\n", GetTrkIndex(dep->trk), dep->ep ) )
- rc = FindShortestPath( dep->trk, dep->ep, FALSE, FillElevShortestPathFunc, dep );
+ LOG( log_fillElev, 3, ( " findForks from T%d:%d\n", GetTrkIndex(dep->trk),
+ dep->ep ) )
+ FindShortestPath( dep->trk, dep->ep, FALSE, FillElevShortestPathFunc, dep );
}
ClrAllTrkBits( TB_PROCESSED );
-LOG( log_fillElev, 1, ( "%s: findForks [%d] (%ld)\n", elevPrefix, fork_da.cnt, wGetTimer()-time0 ) )
+ LOG( log_fillElev, 1, ( "%s: findForks [%d] (%ld)\n", elevPrefix, fork_da.cnt,
+ wGetTimer()-time0 ) )
}
@@ -462,9 +482,9 @@ LOG( log_fillElev, 1, ( "%s: findForks [%d] (%ld)\n", elevPrefix, fork_da.cnt, w
*/
typedef struct {
- DIST_T elev;
- DIST_T dist;
- } elevdist_t;
+ DIST_T elev;
+ DIST_T dist;
+} elevdist_t;
static dynArr_t elevdist_da;
#define elevdist(N) DYNARR_N( elevdist_t, elevdist_da, N );
@@ -488,7 +508,8 @@ static DIST_T ComputeWeightedElev( DIST_T totalDist )
w = &elevdist(i2);
if (w->dist < 0.001) {
e = w->elev;
-LOG( log_fillElev, 3, ( " computeWeightedElev: close! D%0.3f E%0.3f\n", w->dist, e ) )
+ LOG( log_fillElev, 3, ( " computeWeightedElev: close! D%0.3f E%0.3f\n",
+ w->dist, e ) )
return e;
}
d2 += totalDist/w->dist;
@@ -501,13 +522,13 @@ LOG( log_fillElev, 3, ( " computeWeightedElev: close! D%0.3f E%0.3f\n", w-
e += ((totalDist/w->dist)/d2)*w->elev;
}
- if (log_fillElev >= 4) {
- for ( i2=0; i2<elevdist_da.cnt; i2++ ) {
- w = &elevdist(i2);
- lprintf( " E%0.3f D%0.3f\n", w->elev, w->dist );
- }
+ if (log_fillElev >= 4) {
+ for ( i2=0; i2<elevdist_da.cnt; i2++ ) {
+ w = &elevdist(i2);
+ lprintf( " E%0.3f D%0.3f\n", w->elev, w->dist );
}
-LOG( log_fillElev, 3, ( " computeWeightedElev: E%0.3f\n", e ) )
+ }
+ LOG( log_fillElev, 3, ( " computeWeightedElev: E%0.3f\n", e ) )
return e;
}
@@ -536,8 +557,9 @@ static void ComputeForkElev( void )
n1 = &fork(i1);
if ((trk=n1->trk)) {
cnt = GetTrkEndPtCnt(n1->trk);
- if (cnt<=0)
+ if (cnt<=0) {
continue;
+ }
/* collect dist/elev to connected DefElev points */
d1 = 0;
@@ -554,21 +576,25 @@ static void ComputeForkElev( void )
n2->trk = NULL;
d1 += w->dist;
if ( ! ( ( n1->ep == n2->ep && n1->ep2 == n2->ep2 ) ||
- ( n1->ep == n2->ep2 && n1->ep2 == n2->ep ) ) )
+ ( n1->ep == n2->ep2 && n1->ep2 == n2->ep ) ) ) {
singlePath = FALSE;
+ }
}
}
/* Also check my EPs */
for (ep=0; ep<cnt; ep++) {
- if ( (trk1=GetTrkEndTrk(trk,ep)) )
+ if ( (trk1=GetTrkEndTrk(trk,ep)) ) {
SetTrkBits( trk1, TB_PROCESSED );
- if (!EndPtIsDefinedElev(trk,ep))
+ }
+ if (!EndPtIsDefinedElev(trk,ep)) {
continue;
+ }
for (i2=i1; i2<fork_da.cnt; i2++) {
n2 = &fork(i2);
- if (trk==n2->trk && ep==n2->ep)
+ if (trk==n2->trk && ep==n2->ep) {
break;
+ }
}
if (i2 >= fork_da.cnt) {
DYNARR_APPEND( elevdist_t, elevdist_da, 10 );
@@ -591,12 +617,13 @@ static void ComputeForkElev( void )
SetTrkOnElevPath( trk, ELEV_FORK, e );
/* 3 or more EPs are to DefElevs */
n3->ep = -1;
-LOG( log_fillElev, 2, ( " 1 T%d E%0.3f\n", GetTrkIndex(trk), e ) )
+ LOG( log_fillElev, 2, ( " 1 T%d E%0.3f\n", GetTrkIndex(trk), e ) )
}
forkCnt++;
}
}
-LOG( log_fillElev, 1, ( "%s: computeForkElev [%d] (%ld)\n", elevPrefix, forkCnt, wGetTimer()-time0 ) )
+ LOG( log_fillElev, 1, ( "%s: computeForkElev [%d] (%ld)\n", elevPrefix, forkCnt,
+ wGetTimer()-time0 ) )
}
@@ -618,8 +645,7 @@ static void RedrawCompGradeElev( track_p trk, EPINX_T ep )
pos = GetTrkEndPos( trk, ep );
if (!OFF_MAIND( pos, pos ) ) {
trk1 = GetTrkEndTrk( trk, ep );
- if ( (trk1=GetTrkEndTrk(trk,ep)) && GetTrkIndex(trk1)<GetTrkIndex(trk) )
-{
+ if ( (trk1=GetTrkEndTrk(trk,ep)) && GetTrkIndex(trk1)<GetTrkIndex(trk) ) {
ep = GetEndPtConnectedToMe( trk1, trk );
trk = trk1;
}
@@ -631,10 +657,10 @@ static void RedrawCompGradeElev( track_p trk, EPINX_T ep )
static void PropogateForkElev(
- track_p trk1,
- EPINX_T ep1,
- DIST_T d1,
- DIST_T e )
+ track_p trk1,
+ EPINX_T ep1,
+ DIST_T d1,
+ DIST_T e )
/* Propogate elev from fork connection
* The track list starting from trk1:ep1 ends at a DefElev or a Fork
* Inputs:
@@ -651,74 +677,77 @@ static void PropogateForkElev(
fork_t * n1;
int i2, i3;
- DYNARR_RESET( elist_t, elist_da );
- while (trk1) {
- if ( GetTrkIndex(trk1) == checkTrk )
- printf( "found btw forks\n" );
- if ( GetTrkOnElevPath( trk1, &e1 ) ) {
- d1 += GetTrkLength( trk1, ep1, -1 );
- goto nextStep;
- }
- cnt2 = GetTrkEndPtCnt(trk1);
- for ( ep2=0; ep2<cnt2; ep2++ ) {
- if ( ep2!=ep1 && EndPtIsDefinedElev(trk1,ep2) ) {
- e1 = GetTrkEndElevHeight( trk1, ep2 );
- d2 = GetTrkLength( trk1, ep1, ep2 )/2.0;
- d1 += d2;
- elistAppend( trk1, ep1, d1 );
- d1 += d2;
- goto nextStep;
- }
- }
- ep2 = GetNextTrk( trk1, ep1, &trkN, &epN, GNTignoreIgnore );
- if ( ep2<0 ) {
- /* is this really a fork? */
- for ( i2=0; i2<forkCnt; i2++ ) {
- n1 = &fork(i2);
- if ( trk1 == n1->trk && n1->ep >= 0 ) {
- /* no: make sure we are on the path */
- if ( n1->ep == ep1 )
- ep2 = n1->ep2;
- else if ( n1->ep2 == ep1 )
- ep2 = n1->ep;
- else
- return;
- trkN = GetTrkEndTrk(trk1,ep2);
- epN = GetEndPtConnectedToMe( trkN, trk1 );
- break;
- }
- }
- if ( i2 >= forkCnt )
- return;
+ DYNARR_RESET( elist_t, elist_da );
+ while (trk1) {
+ if ( GetTrkIndex(trk1) == checkTrk ) {
+ printf( "found btw forks\n" );
+ }
+ if ( GetTrkOnElevPath( trk1, &e1 ) ) {
+ d1 += GetTrkLength( trk1, ep1, -1 );
+ goto nextStep;
+ }
+ cnt2 = GetTrkEndPtCnt(trk1);
+ for ( ep2=0; ep2<cnt2; ep2++ ) {
+ if ( ep2!=ep1 && EndPtIsDefinedElev(trk1,ep2) ) {
+ e1 = GetTrkEndElevHeight( trk1, ep2 );
+ d2 = GetTrkLength( trk1, ep1, ep2 )/2.0;
+ d1 += d2;
+ elistAppend( trk1, ep1, d1 );
+ d1 += d2;
+ goto nextStep;
+ }
+ }
+ ep2 = GetNextTrk( trk1, ep1, &trkN, &epN, GNTignoreIgnore );
+ if ( ep2<0 ) {
+ /* is this really a fork? */
+ for ( i2=0; i2<forkCnt; i2++ ) {
+ n1 = &fork(i2);
+ if ( trk1 == n1->trk && n1->ep >= 0 ) {
+ /* no: make sure we are on the path */
+ if ( n1->ep == ep1 ) {
+ ep2 = n1->ep2;
+ } else if ( n1->ep2 == ep1 ) {
+ ep2 = n1->ep;
+ } else {
+ return;
}
- d2 = GetTrkLength( trk1, ep1, ep2 )/2.0;
- d1 += d2;
- elistAppend( trk1, ep1, d1 );
- d1 += d2;
- trk1 = trkN;
- ep1 = epN;
+ trkN = GetTrkEndTrk(trk1,ep2);
+ epN = GetEndPtConnectedToMe( trkN, trk1 );
+ break;
}
+ }
+ if ( i2 >= forkCnt ) {
+ return;
+ }
+ }
+ d2 = GetTrkLength( trk1, ep1, ep2 )/2.0;
+ d1 += d2;
+ elistAppend( trk1, ep1, d1 );
+ d1 += d2;
+ trk1 = trkN;
+ ep1 = epN;
+ }
nextStep:
- ASSERT(d1>0.0);
- e1 = (e1-e)/d1;
- trk1 = NULL;
- i3 = elist_da.cnt;
- for (i2=0; i2<elist_da.cnt; i2++) {
- trk1 = elist(i2).trk;
- ep1 = elist(i2).ep;
- if ( GetTrkOnElevPath( trk1, &e1 ) ) {
- i3=i2;
- break;
- }
- d2 = elist(i2).len;
- SetTrkOnElevPath( trk1, ELEV_BRANCH, e+e1*d2 );
-LOG( log_fillElev, 2, ( " 2 T%d E%0.3f\n", GetTrkIndex(trk1), e+e1*d2 ) )
- }
- for (i2=0; i2<i3; i2++) {
- trk1 = elist(i2).trk;
- ep1 = elist(i2).ep;
- RedrawCompGradeElev( trk1, ep1 );
- }
+ CHECK(d1>0.0);
+ e1 = (e1-e)/d1;
+ trk1 = NULL;
+ i3 = elist_da.cnt;
+ for (i2=0; i2<elist_da.cnt; i2++) {
+ trk1 = elist(i2).trk;
+ ep1 = elist(i2).ep;
+ if ( GetTrkOnElevPath( trk1, &e1 ) ) {
+ i3=i2;
+ break;
+ }
+ d2 = elist(i2).len;
+ SetTrkOnElevPath( trk1, ELEV_BRANCH, e+e1*d2 );
+ LOG( log_fillElev, 2, ( " 2 T%d E%0.3f\n", GetTrkIndex(trk1), e+e1*d2 ) )
+ }
+ for (i2=0; i2<i3; i2++) {
+ trk1 = elist(i2).trk;
+ ep1 = elist(i2).ep;
+ RedrawCompGradeElev( trk1, ep1 );
+ }
}
static void PropogateForkElevs( void )
@@ -743,8 +772,9 @@ static void PropogateForkElevs( void )
/* propogate elevs between forks */
for ( i1=0; i1<forkCnt; i1++ ) {
n1 = &fork(i1);
- if ( n1->ep >= 0 )
+ if ( n1->ep >= 0 ) {
continue;
+ }
trk = n1->trk;
GetTrkOnElevPath( trk, &e );
cnt = GetTrkEndPtCnt(trk);
@@ -762,7 +792,8 @@ static void PropogateForkElevs( void )
}
}
}
-LOG( log_fillElev, 1, ( "%s: propogateForkElev (%ld)\n", elevPrefix, wGetTimer()-time0 ) )
+ LOG( log_fillElev, 1, ( "%s: propogateForkElev (%ld)\n", elevPrefix,
+ wGetTimer()-time0 ) )
}
static void PropogateDefElevs( void )
@@ -783,11 +814,14 @@ static void PropogateDefElevs( void )
dep = &defelev(i1);
if (GetTrkOnElevPath( dep->trk, &e ))
/* propogateForkElevs beat us to it */
+ {
continue;
+ }
e = GetTrkEndElevHeight( dep->trk, dep->ep );
PropogateForkElev( dep->trk, dep->ep, 0, e );
}
-LOG( log_fillElev, 1, ( "%s: propogateDefElevs [%d] (%ld)\n", elevPrefix, defelev_da.cnt, wGetTimer()-time0 ) )
+ LOG( log_fillElev, 1, ( "%s: propogateDefElevs [%d] (%ld)\n", elevPrefix,
+ defelev_da.cnt, wGetTimer()-time0 ) )
}
@@ -803,16 +837,16 @@ LOG( log_fillElev, 1, ( "%s: propogateDefElevs [%d] (%ld)\n", elevPrefix, defele
*/
typedef struct {
- track_p trk;
- coOrd pos;
- DIST_T elev;
- } pivot_t;
+ track_p trk;
+ coOrd pos;
+ DIST_T elev;
+} pivot_t;
static dynArr_t pivot_da;
#define pivot(N) DYNARR_N(pivot_t, pivot_da, N)
static void SurveyIsland(
- track_p trk,
- BOOL_T stopAtElevPath )
+ track_p trk,
+ BOOL_T stopAtElevPath )
/* Find the tracks in this island and the pivots of this island
* Outputs:
* elist_da - tracks in the island
@@ -833,8 +867,9 @@ static void SurveyIsland(
SetTrkBits( trk, TB_PROCESSED );
for ( i1=0; i1 < elist_da.cnt; i1++ ) {
trk = elist(i1).trk;
- if ( GetTrkIndex(trk) == checkTrk )
+ if ( GetTrkIndex(trk) == checkTrk ) {
printf( "found in island\n" );
+ }
cnt = GetTrkEndPtCnt(trk);
for ( ep=0; ep<cnt; ep++ ) {
trk1 = GetTrkEndTrk( trk, ep );
@@ -862,7 +897,7 @@ static void SurveyIsland(
}
static void ComputeIslandElev(
- track_p trk )
+ track_p trk )
/* Compute elev of tracks connected to 'trk'
* An island is the set of tracks bounded by a DefElev EP or a track already on ElevPath
* Inputs:
@@ -885,8 +920,9 @@ static void ComputeIslandElev(
for ( i1=0; i1 < elist_da.cnt; i1++ ) {
trk = elist(i1).trk;
- if ( !IsTrack(trk) )
+ if ( !IsTrack(trk) ) {
continue;
+ }
mode = ELEV_ISLAND;
if (pivot_da.cnt == 0) {
elev = 0;
@@ -912,7 +948,7 @@ static void ComputeIslandElev(
elev = ComputeWeightedElev( totalDist );
}
SetTrkOnElevPath( trk, mode, elev );
-LOG( log_fillElev, 1, ( " 3 T%d E%0.3f\n", GetTrkIndex(trk), elev ) )
+ LOG( log_fillElev, 1, ( " 3 T%d E%0.3f\n", GetTrkIndex(trk), elev ) )
}
for ( i1=0; i1<elist_da.cnt; i1++ ) {
@@ -945,12 +981,13 @@ static void FindIslandElevs( void )
}
}
}
-LOG( log_fillElev, 1, ( "%s: findIslandElevs [%d] (%ld)\n", elevPrefix, islandCnt, wGetTimer()-time0 ) )
+ LOG( log_fillElev, 1, ( "%s: findIslandElevs [%d] (%ld)\n", elevPrefix,
+ islandCnt, wGetTimer()-time0 ) )
}
/*
* DYNAMIC ELEVATION COMPUTATION
- *
+ *
* Drivers
*
*/
@@ -968,26 +1005,28 @@ EXPORT void RecomputeElevations( void * unused )
PropogateDefElevs();
FindIslandElevs();
MainRedraw(); // RecomputeElevations
-LOG( log_fillElev, 1, ( "%s: Total (%ld)\n", elevPrefix, wGetTimer()-time0 ) )
+ LOG( log_fillElev, 1, ( "%s: Total (%ld)\n", elevPrefix, wGetTimer()-time0 ) )
if ( log_dumpElev > 0 ) {
track_p trk;
DIST_T elev;
for ( trk=NULL; TrackIterate( &trk ); ) {
printf( "T%4.4d = ", GetTrkIndex(trk) );
- if ( GetTrkOnElevPath( trk, &elev ) )
+ if ( GetTrkOnElevPath( trk, &elev ) ) {
printf( "%d:%0.2f\n", GetTrkElevMode(trk), elev );
- else
+ } else {
printf( "noelev\n" );
+ }
EPINX_T ep;
int mode;
for ( ep=0; ep<GetTrkEndPtCnt(trk); ep++ ) {
mode = GetTrkEndElevMode( trk, ep );
ComputeElev( trk, ep, FALSE, &elev, NULL, FALSE );
printf( "T%4.4d[%2.2d] = %s:%0.3f\n",
- GetTrkIndex(trk), ep,
- mode==ELEV_NONE?"None":mode==ELEV_DEF?"Def":mode==ELEV_COMP?"Comp":
- mode==ELEV_GRADE?"Grade":mode==ELEV_IGNORE?"Ignore":mode==ELEV_STATION?"Station":"???",
- elev );
+ GetTrkIndex(trk), ep,
+ mode==ELEV_NONE?"None":mode==ELEV_DEF?"Def":mode==ELEV_COMP?"Comp":
+ mode==ELEV_GRADE?"Grade":mode==ELEV_IGNORE?"Ignore":mode==ELEV_STATION
+ ?"Station":"???",
+ elev );
}
}
}
@@ -1002,18 +1041,20 @@ EXPORT void UpdateAllElevations( void )
elevPrefix = "UPDELV";
if ( !log_fillElev_initted ) { log_fillElev = LogFindIndex( "fillElev" ); log_dumpElev = LogFindIndex( "dumpElev" ); log_fillElev_initted = TRUE; }
- if (!needElevUpdate)
+ if (!needElevUpdate) {
return;
+ }
work = FindObsoleteElevs();
- if (!work)
+ if (!work) {
return;
+ }
FindForks();
ComputeForkElev();
PropogateForkElevs();
PropogateDefElevs();
FindIslandElevs();
needElevUpdate = FALSE;
-LOG( log_fillElev, 1, ( "%s: Total (%ld)\n", elevPrefix, wGetTimer()-time0 ) )
+ LOG( log_fillElev, 1, ( "%s: Total (%ld)\n", elevPrefix, wGetTimer()-time0 ) )
}
@@ -1038,13 +1079,15 @@ EXPORT DIST_T GetElevation( track_p trk )
ComputeForkElev();
PropogateForkElevs();
PropogateDefElevs();
- if ( GetTrkOnElevPath(trk,&elev) )
+ if ( GetTrkOnElevPath(trk,&elev) ) {
return elev;
+ }
ComputeIslandElev( trk );
- if ( GetTrkOnElevPath(trk,&elev) )
+ if ( GetTrkOnElevPath(trk,&elev) ) {
return elev;
+ }
printf( "GetElevation(T%d) failed\n", GetTrkIndex(trk) );
return 0;
@@ -1053,7 +1096,7 @@ EXPORT DIST_T GetElevation( track_p trk )
/*
* DYNAMIC ELEVATION COMPUTATION
- *
+ *
* Utilities
*
*/
@@ -1072,8 +1115,9 @@ static void PropogateElevMode( track_p trk, DIST_T elev, int mode )
{
int i1;
SurveyIsland( trk, FALSE );
- for ( i1=0; i1<elist_da.cnt; i1++ )
+ for ( i1=0; i1<elist_da.cnt; i1++ ) {
SetTrkOnElevPath( elist(i1).trk, mode, elev );
+ }
}
@@ -1081,17 +1125,20 @@ static BOOL_T CheckForElevAlone( track_p trk )
{
int i1;
SurveyIsland( trk, FALSE );
- if ( pivot_da.cnt!=0 )
+ if ( pivot_da.cnt!=0 ) {
return FALSE;
- for ( i1=0; i1<elist_da.cnt; i1++ )
+ }
+ for ( i1=0; i1<elist_da.cnt; i1++ ) {
SetTrkOnElevPath( elist(i1).trk, ELEV_ALONE, 0.0 );
+ }
return TRUE;
}
-EXPORT void SetTrkElevModes( BOOL_T connect, track_p trk0, EPINX_T ep0, track_p trk1, EPINX_T ep1 )
+EXPORT void SetTrkElevModes( BOOL_T connect, track_p trk0, EPINX_T ep0,
+ track_p trk1, EPINX_T ep1 )
{
- int mode0, mode1;
+ int mode0, mode1;
DIST_T elev, diff, elev0, elev1;
char * station;
BOOL_T update = TRUE;
@@ -1112,11 +1159,13 @@ EXPORT void SetTrkElevModes( BOOL_T connect, track_p trk0, EPINX_T ep0, track_p
}
} else {
if ( mode0 == ELEV_ISLAND ) {
- if (CheckForElevAlone( trk0 ))
+ if (CheckForElevAlone( trk0 )) {
update = FALSE;
+ }
} else if ( mode1 == ELEV_ISLAND ) {
- if (CheckForElevAlone( trk1 ))
+ if (CheckForElevAlone( trk1 )) {
update = FALSE;
+ }
}
}
@@ -1126,13 +1175,15 @@ EXPORT void SetTrkElevModes( BOOL_T connect, track_p trk0, EPINX_T ep0, track_p
elev = 0.0;
station = NULL;
if (mode0 == ELEV_DEF && mode1 == ELEV_DEF) {
- mode0 = GetTrkEndElevUnmaskedMode( trk0, ep0 ) | GetTrkEndElevUnmaskedMode( trk1, ep1 );
+ mode0 = GetTrkEndElevUnmaskedMode( trk0,
+ ep0 ) | GetTrkEndElevUnmaskedMode( trk1, ep1 );
elev0 = GetTrkEndElevHeight( trk0, ep0 );
elev1 = GetTrkEndElevHeight( trk1, ep1 );
elev = (elev0+elev1)/2.0;
diff = fabs( elev0-elev1 );
- if (diff>0.1)
+ if (diff>0.1) {
ErrorMessage( MSG_JOIN_DIFFER_ELEV, PutDim(diff) );
+ }
} else if (mode0 == ELEV_DEF) {
mode0 = GetTrkEndElevUnmaskedMode( trk0, ep0 );
elev = GetTrkEndElevHeight( trk0, ep0 );
@@ -1168,18 +1219,18 @@ EXPORT void SetTrkElevModes( BOOL_T connect, track_p trk0, EPINX_T ep0, track_p
EXPORT void UpdateTrkEndElev(
- track_p trk,
- EPINX_T ep,
- int newMode,
- DIST_T newElev,
- char * newStation )
+ track_p trk,
+ EPINX_T ep,
+ int newMode,
+ DIST_T newElev,
+ char * newStation )
{
int oldMode;
DIST_T oldElev;
char * oldStation;
BOOL_T changed = TRUE;
track_p trk1;
- EPINX_T ep1;
+// EPINX_T ep1;
oldMode = GetTrkEndElevUnmaskedMode( trk, ep );
if ( (oldMode&ELEV_MASK) == (newMode&ELEV_MASK) ) {
@@ -1187,8 +1238,9 @@ EXPORT void UpdateTrkEndElev(
case ELEV_DEF:
oldElev = GetTrkEndElevHeight( trk, ep );
if ( oldElev == newElev ) {
- if ( oldMode == newMode )
+ if ( oldMode == newMode ) {
return;
+ }
changed = FALSE;
}
break;
@@ -1204,8 +1256,9 @@ EXPORT void UpdateTrkEndElev(
} else {
changed = TRUE;
if ( (newMode&ELEV_MASK)==ELEV_DEF || (oldMode&ELEV_MASK)==ELEV_DEF ||
- (newMode&ELEV_MASK)==ELEV_IGNORE || (oldMode&ELEV_MASK)==ELEV_IGNORE )
+ (newMode&ELEV_MASK)==ELEV_IGNORE || (oldMode&ELEV_MASK)==ELEV_IGNORE ) {
changed = TRUE;
+ }
}
UndoModify( trk );
if ( (trk1 = GetTrkEndTrk( trk, ep )) ) {
@@ -1217,7 +1270,7 @@ EXPORT void UpdateTrkEndElev(
if ( changed ) {
ClrTrkElev( trk );
if ( trk1 ) {
- ep1 = GetEndPtConnectedToMe( trk1, trk );
+// ep1 = GetEndPtConnectedToMe( trk1, trk );
ClrTrkElev( trk1 );
}
UpdateAllElevations();
@@ -1231,23 +1284,28 @@ static void SetTrkOnElevPath( track_p trk, int mode, DIST_T elev )
DIST_T oldElev;
coOrd hi, lo;
- if ( !GetTrkOnElevPath( trk, &oldElev ) )
+ if ( !GetTrkOnElevPath( trk, &oldElev ) ) {
oldElev = 0.0;
+ }
GetBoundingBox( trk, &hi, &lo );
if ((labelEnable&LABELENABLE_TRACK_ELEV) &&
- labelScale >= mainD.scale &&
- (! OFF_MAIND( lo, hi ) ) &&
- (GetTrkVisible(trk) || drawTunnel!=0/*DRAW_TUNNEL_NONE*/) &&
- GetLayerVisible(GetTrkLayer(trk)) )
+ labelScale >= mainD.scale &&
+ (! OFF_MAIND( lo, hi ) ) &&
+ (GetTrkVisible(trk) || drawTunnel!=0/*DRAW_TUNNEL_NONE*/) &&
+ GetLayerVisible(GetTrkLayer(trk)) ) {
redraw = TRUE;
-
- if ( (GetTrkBits(trk)&TB_ELEVPATH) && (oldElev == elev && oldMode == mode) )
+ }
+
+ if ( (GetTrkBits(trk)&TB_ELEVPATH) && (oldElev == elev && oldMode == mode) ) {
return;
- if ( redraw && (GetTrkBits(trk)&TB_ELEVPATH))
+ }
+ if ( redraw && (GetTrkBits(trk)&TB_ELEVPATH)) {
DrawTrackElev( trk, &mainD, FALSE );
+ }
SetTrkElev( trk, mode, elev );
- if ( redraw )
+ if ( redraw ) {
DrawTrackElev( trk, &mainD, TRUE );
+ }
}
@@ -1260,40 +1318,45 @@ EXPORT void DrawTrackElev( track_cp trk, drawCmd_p d, BOOL_T drawIt )
coOrd lo, hi;
if ( (!IsTrack(trk)) ||
- (!(labelEnable&LABELENABLE_TRACK_ELEV)) ||
- (d == &mapD) ||
- (labelScale < d->scale) ||
- (!GetTrkOnElevPath( trk, &elev )) ||
- ((GetTrkBits(trk)&TB_ELEVPATH) == 0) ||
- (d->options & DC_SIMPLE) != 0 )
+ (!(labelEnable&LABELENABLE_TRACK_ELEV)) ||
+ (d == &mapD) ||
+ (labelScale < d->scale) ||
+ (!GetTrkOnElevPath( trk, &elev )) ||
+ ((GetTrkBits(trk)&TB_ELEVPATH) == 0) ||
+ (d->options & DC_SIMPLE) != 0 ) {
return;
+ }
- if ( !GetCurveMiddle( trk, &pos ) && !GetCornuMiddle(trk, &pos) && !GetBezierMiddle(trk, &pos)) {
+ if ( !GetCurveMiddle( trk, &pos ) && !GetCornuMiddle(trk, &pos)
+ && !GetBezierMiddle(trk, &pos)) {
GetBoundingBox( trk, &hi, &lo );
pos.x = (hi.x+lo.x)/2.0;
pos.y = (hi.y+lo.y)/2.0;
}
- if ( d==&mainD && OFF_MAIND( pos, pos ) )
+ if ( d==&mainD && OFF_MAIND( pos, pos ) ) {
return;
+ }
switch ( GetTrkElevMode(trk) ) {
case ELEV_FORK:
- color = drawColorBlue;
+ color = drawColorDkBlue;
break;
case ELEV_BRANCH:
color = drawColorPurple;
break;
case ELEV_ISLAND:
- color = drawColorGold;
+ color = drawColorDkAqua;
break;
case ELEV_ALONE:
return;
}
- if ( !drawIt )
+ if ( !drawIt ) {
color = wDrawColorWhite;
+ }
sprintf( message, "%s", FormatDistance(elev));
fp = wStandardFont( F_HELV, FALSE, FALSE );
- DrawBoxedString( BOX_INVERT, d, pos, message, fp, (wFontSize_t)descriptionFontSize, color, 0 );
+ DrawBoxedString( BOX_INVERT, d, pos, message, fp,
+ (wFontSize_t)descriptionFontSize, color, 0 );
}
diff --git a/app/bin/file2uri.c b/app/bin/file2uri.c
index dd690cc..86a67cf 100644
--- a/app/bin/file2uri.c
+++ b/app/bin/file2uri.c
@@ -2,44 +2,44 @@
* Conversion for filename to URI and reverse
*/
- /* XTrackCAD - Model Railroad CAD
- * Copyright (C) 2019 Martin Fischer
- *
- * 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.
- */
-
+/* XTrackCAD - Model Railroad CAD
+ * Copyright (C) 2019 Martin Fischer
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
#include "common.h"
static char *reservedChars = "?#[]@!$&'()*+,;= ";
-unsigned
+unsigned
File2URI(char *fileName, unsigned resultLen, char *resultBuffer)
{
char *currentSource = fileName;
- char *currentDest;
+ char *currentDest;
currentDest = resultBuffer;
- while (*currentSource && ((unsigned)(currentDest - resultBuffer) < resultLen - 1)) {
+ while (*currentSource
+ && ((unsigned)(currentDest - resultBuffer) < resultLen - 1)) {
if (*currentSource == FILE_SEP_CHAR[ 0 ]) {
*currentDest++ = '/';
currentSource++;
continue;
}
- if (strchr(reservedChars, *currentSource))
- {
+ if (strchr(reservedChars, *currentSource)) {
sprintf(currentDest, "%%%02x", *currentSource);
currentSource++;
currentDest += 3;
@@ -52,14 +52,15 @@ File2URI(char *fileName, unsigned resultLen, char *resultBuffer)
return((unsigned)strlen(resultBuffer));
}
-unsigned
+unsigned
URI2File(char *encodedFileName, unsigned resultLen, char *resultBuffer)
{
char *currentSource = encodedFileName;
char *currentDest = resultBuffer;
currentSource = encodedFileName;
- while (*currentSource && ((unsigned)(currentDest - resultBuffer) < resultLen - 1)) {
+ while (*currentSource
+ && ((unsigned)(currentDest - resultBuffer) < resultLen - 1)) {
if (*currentSource == '/') {
*currentDest++ = FILE_SEP_CHAR[0];
currentSource++;
diff --git a/app/bin/file2uri.h b/app/bin/file2uri.h
index 921976a..f6700dd 100644
--- a/app/bin/file2uri.h
+++ b/app/bin/file2uri.h
@@ -2,26 +2,27 @@
* Include file for file2uri.c
*/
- /* XTrackCAD - Model Railroad CAD
- * Copyright (C) 2019 Martin Fischer
- *
- * 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 HAVE_FILE2URI_H
-unsigned File2URI(char *fileName, unsigned resultLen, char *resultBuffer);
-unsigned URI2File(char *encodedFileName, unsigned resultLen, char *resultBuffer);
-#endif // !HAVE_FILE2URI_H
-
+/* XTrackCAD - Model Railroad CAD
+ * Copyright (C) 2019 Martin Fischer
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef HAVE_FILE2URI_H
+unsigned File2URI(char *fileName, unsigned resultLen, char *resultBuffer);
+unsigned URI2File(char *encodedFileName, unsigned resultLen,
+ char *resultBuffer);
+#endif // !HAVE_FILE2URI_H
+
diff --git a/app/bin/fileio.c b/app/bin/fileio.c
index 0a2e576..4741c05 100644
--- a/app/bin/fileio.c
+++ b/app/bin/fileio.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 <cJSON.h>
@@ -37,11 +37,13 @@
#include "misc.h"
#include "param.h"
#include "include/paramfile.h"
+#include "include/paramfilelist.h"
#include "paths.h"
#include "track.h"
#include "version.h"
#include "dynstring.h"
#include "common-ui.h"
+#include "ctrain.h"
#ifdef UTFCONVERT
#include "include/utf8convert.h"
@@ -54,44 +56,45 @@ EXPORT dynArr_t paramProc_da;
EXPORT const char * workingDir;
EXPORT const char * libDir;
-EXPORT wMenuList_p fileList_ml;
-
EXPORT char * clipBoardN;
static coOrd paste_offset, cursor_offset;
EXPORT wBool_t bExample = FALSE;
EXPORT wBool_t bReadOnly = FALSE;
+EXPORT wBool_t bInReadTracks = FALSE;
#ifdef WINDOWS
#define rename( F1, F2 ) Copyfile( F1, F2 )
+#endif
-static int Copyfile( char * fn1, char * fn2 )
+EXPORT int Copyfile( const char * fn1, const char * fn2 )
{
FILE *f1, *f2;
size_t size;
f1 = fopen( fn1, "r" );
- if ( f1 == NULL )
+ if ( f1 == NULL ) {
return 0;
+ }
f2 = fopen( fn2, "w" );
if ( f2 == NULL ) {
fclose( f1 );
return -1;
}
- while ( (size=fread( message, 1, sizeof message, f1 )) > 0 )
+ while ( (size=fread( message, 1, sizeof message, f1 )) > 0 ) {
fwrite( message, size, 1, f2 );
+ }
fclose( f1 );
fclose( f2 );
return 0;
}
-#endif
//
// Locale handling
// SetCLocale is called before reading/writing any data files (.xtc, .xti, .xtq, .cus...)
// SetUserLocale is called after
// Calls can be nested: C, C, User, User
-//
+//
static char * sUserLocale = NULL; // current user locale
static long lCLocale = 0; // locale state: > 0 C locale, <= 0 user locale
static long nCLocale = 0; // total # of setlocals calls
@@ -105,7 +108,10 @@ EXPORT void SetCLocale()
}
if ( lCLocale == 0 ) {
LOG( log_locale, 1, ( "Set C Locale: %ld\n", ++nCLocale ) );
- setlocale( LC_ALL, "C" );
+ setlocale( LC_ALL, "C" );
+#ifdef LC_MESSAGES
+ setlocale( LC_MESSAGES, "");
+#endif
}
lCLocale++;
if ( lCLocale > 1 ) {
@@ -151,13 +157,16 @@ EXPORT void Stripcr( char * line )
{
char * cp;
cp = line + strlen(line);
- if (cp == line)
+ if (cp == line) {
return;
+ }
cp--;
- if (*cp == '\n')
+ if (*cp == '\n') {
*cp-- = '\0';
- if (cp >= line && *cp == '\r')
+ }
+ if (cp >= line && *cp == '\r') {
*cp = '\0';
+ }
}
EXPORT char * GetNextLine( void )
@@ -194,16 +203,16 @@ EXPORT char * GetNextLine( void )
*/
EXPORT int InputError(
- char * msg,
- BOOL_T showLine,
- ... )
+ char * msg,
+ BOOL_T showLine,
+ ... )
{
va_list ap;
char * mp = message;
int ret;
mp += sprintf( message, "INPUT ERROR: %s:%d\n",
- paramFileName, paramLineNum );
+ paramFileName, paramLineNum );
va_start( ap, showLine );
mp += vsprintf( mp, msg, ap );
va_end( ap );
@@ -227,12 +236,12 @@ EXPORT int InputError(
EXPORT void SyntaxError(
- char * event,
- wIndex_t actual,
- wIndex_t expected )
+ char * event,
+ wIndex_t actual,
+ wIndex_t expected )
{
InputError( "%s scan returned %d (expected %d)",
- TRUE, event, actual, expected );
+ TRUE, event, actual, expected );
}
@@ -264,9 +273,9 @@ EXPORT void SyntaxError(
*/
EXPORT BOOL_T GetArgs(
- char * line,
- char * format,
- ... )
+ char * line,
+ char * format,
+ ... )
{
char * cp, * cq;
long * pl;
@@ -279,13 +288,14 @@ EXPORT BOOL_T GetArgs(
va_list ap;
char * sError = NULL;
- if ( lCLocale < 1 )
+ if ( lCLocale < 1 ) {
LOG( log_locale, 1, ( "GetArgs: not in C locale\n" ) );
+ }
cp = line;
va_start( ap, format );
for ( ; sError==NULL && *format; format++ ) {
- while (isspace((unsigned char)*cp)) cp++;
+ while (isspace((unsigned char)*cp)) { cp++; }
if (!*cp && strchr( "XZYzc", *format ) == NULL ) {
sError = "EOL unexpected";
break;
@@ -336,10 +346,11 @@ EXPORT BOOL_T GetArgs(
sError = "%s: expected integer";
break;
}
- if (*cq == '.')
+ if (*cq == '.') {
*pf = strtod( cp, &cq );
- else
+ } else {
*pf /= mainD.dpi;
+ }
cp = cq;
break;
case 'u':
@@ -391,24 +402,25 @@ EXPORT BOOL_T GetArgs(
break;
case 's':
ps = va_arg( ap, char * );
- while (isspace((unsigned char)*cp)) cp++;
- while (*cp && !isspace((unsigned char)*cp)) *ps++ = *cp++;
+ while (isspace((unsigned char)*cp)) { cp++; }
+ while (*cp && !isspace((unsigned char)*cp)) { *ps++ = *cp++; }
*ps++ = '\0';
break;
case 'q':
qp = va_arg( ap, char * * );
if (*cp != '\"')
/* Stupid windows */
+ {
cq = strchr( cp, '\"' );
- else
+ } else {
cq = cp;
+ }
if (cq!=NULL) {
cp = cq;
ps = &message[0];
cp++;
while (*cp) {
- if ( (ps-message)>=sizeof message)
- AbortProg( "Quoted title argument too long" );
+ CHECK( (ps-message)<sizeof message );
if (*cp == '\"') {
if (*++cp == '\"') {
*ps++ = '\"';
@@ -433,14 +445,15 @@ EXPORT BOOL_T GetArgs(
break;
case 'c':
qp = va_arg( ap, char * * );
- while (isspace((unsigned char)*cp)) cp++;
- if (*cp)
+ while (isspace((unsigned char)*cp)) { cp++; }
+ if (*cp) {
*qp = cp;
- else
+ } else {
*qp = NULL;
+ }
break;
default:
- AbortProg( "getArgs: bad format char: %c", *format );
+ CHECKMSG( FALSE, ( "getArgs: bad format char: %c", *format ) );
}
}
va_end( ap );
@@ -458,15 +471,17 @@ wBool_t IsEND( char * sEnd )
char * cp;
wBool_t bAllowNakedENDs = paramVersion < VERSION_NONAKEDENDS;
for( cp = paramLine; *cp && (isspace( *cp ) || *cp == '\t'); cp++ );
- if ( strncmp( cp, sEnd, strlen(sEnd) ) == 0 )
+ if ( strncmp( cp, sEnd, strlen(sEnd) ) == 0 ) {
cp += strlen( sEnd );
- else if ( bAllowNakedENDs && strncmp( cp, "END", 3 ) == 0 )
+ } else if ( bAllowNakedENDs && strncmp( cp, "END", 3 ) == 0 ) {
cp += 3;
- else
+ } else {
return FALSE;
+ }
for ( ; *cp && isspace( *cp ); cp++ );
- if ( *cp != '\0' )
+ if ( *cp != '\0' ) {
return FALSE;
+ }
return TRUE;
}
@@ -510,8 +525,8 @@ ReadMultilineText()
EXPORT wBool_t ParseRoomSize(
- char * s,
- coOrd * roomSizeRet )
+ char * s,
+ coOrd * roomSizeRet )
{
coOrd size;
char *cp;
@@ -519,7 +534,7 @@ EXPORT wBool_t ParseRoomSize(
size.x = strtod( s, &cp );
if (cp != s) {
s = cp;
- while (isspace((unsigned char)*s)) s++;
+ while (isspace((unsigned char)*s)) { s++; }
if (*s == 'x' || *s == 'X') {
size.y = strtod( ++s, &cp );
if (cp != s) {
@@ -545,8 +560,8 @@ EXPORT wBool_t ParseRoomSize(
* \param [IN] delete if not NULL function for freeing the definition
*/
EXPORT void AddParam(
- char * name,
- readParam_t proc)
+ char * name,
+ readParam_t proc)
{
DYNARR_APPEND( paramProc_t, paramProc_da, 10 );
paramProc(paramProc_da.cnt-1).name = name;
@@ -576,8 +591,9 @@ EXPORT char * PutTitle( char * cp )
}
cp++;
}
- if ( *cp )
+ if ( *cp ) {
NoticeMessage( _("putTitle: title too long: %s"), _("Ok"), NULL, title );
+ }
*tp = '\0';
#ifdef UTFCONVERT
@@ -602,15 +618,16 @@ void SetWindowTitle( void )
{
char *filename;
- if ( changed > 2 || inPlayback )
+ if ( changed > 2 || inPlayback ) {
return;
+ }
filename = GetLayoutFilename();
sprintf( message, "%s%s%s - %s(%s)",
- (filename && filename[0])?filename: _("Unnamed Trackplan"),
- bReadOnly?_(" (R/O)"):"",
- changed>0?"*":"",
- sProdName, sVersion );
+ (filename && filename[0])?filename: _("Unnamed Trackplan"),
+ bReadOnly?_(" (R/O)"):"",
+ changed>0?"*":"",
+ sProdName, sVersion );
wWinSetTitle( mainW, message );
}
@@ -635,18 +652,18 @@ static char * checkPtFileNameBackup;
* \param IN pathName filename including directory
* \param IN fileName pointer to filename part in pathName
* \param IN full
- * \param IN noSetCurDir if FALSE current diurectory is changed to file location
+ * \param IN noSetCurDir if FALSE current directory is changed to file location
* \param IN complain if FALSE error messages are supressed
*
* \return FALSE in case of load error
*/
static BOOL_T ReadTrackFile(
- const char * pathName,
- const char * fileName,
- BOOL_T full,
- BOOL_T noSetCurDir,
- BOOL_T complain )
+ const char * pathName,
+ const char * fileName,
+ BOOL_T full,
+ BOOL_T noSetCurDir,
+ BOOL_T complain )
{
int count;
coOrd roomSize;
@@ -656,11 +673,14 @@ static BOOL_T ReadTrackFile(
paramFile = fopen( pathName, "r" );
if (paramFile == NULL) {
- if ( complain )
- NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, sProdName, pathName, strerror(errno) );
+ if ( complain ) {
+ NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, sProdName, pathName,
+ strerror(errno) );
+ }
return FALSE;
}
+ bInReadTracks = TRUE;
SetCLocale();
checkPtFileNameBackup = NULL;
paramLineNum = 0;
@@ -670,7 +690,8 @@ static BOOL_T ReadTrackFile(
count = 0;
int skipLines = 0;
BOOL_T skip = FALSE;
- while ( paramFile && ( fgets(paramLine, sizeof paramLine, paramFile) ) != NULL ) {
+ while ( paramFile
+ && ( fgets(paramLine, sizeof paramLine, paramFile) ) != NULL ) {
count++;
BOOL_T old_skip = skip;
skip = FALSE;
@@ -680,14 +701,15 @@ static BOOL_T ReadTrackFile(
}
paramLineNum++;
if (strlen(paramLine) == (sizeof paramLine) -1 &&
- paramLine[(sizeof paramLine)-1] != '\n') {
- if( !(ret = InputError( "Line too long", TRUE )))
+ paramLine[(sizeof paramLine)-1] != '\n') {
+ if( !(ret = InputError( "Line too long", TRUE ))) {
break;
+ }
}
Stripcr( paramLine );
if (paramLine[0] == '#' ||
- paramLine[0] == '\n' ||
- paramLine[0] == '\0' ) {
+ paramLine[0] == '\n' ||
+ paramLine[0] == '\0' ) {
/* comment */
continue;
}
@@ -699,22 +721,26 @@ static BOOL_T ReadTrackFile(
} else if (strncmp( paramLine, "VERSION ", 8 ) == 0) {
paramVersion = strtol( paramLine+8, &cp, 10 );
if (cp)
- while (*cp && isspace((unsigned char)*cp)) cp++;
+ while (*cp && isspace((unsigned char)*cp)) { cp++; }
if ( paramVersion > iParamVersion ) {
if (cp && *cp) {
- NoticeMessage( MSG_UPGRADE_VERSION1, _("Ok"), NULL, paramVersion, iParamVersion, sProdName, cp );
+ NoticeMessage( MSG_UPGRADE_VERSION1, _("Ok"), NULL, paramVersion, iParamVersion,
+ sProdName, cp );
} else {
- NoticeMessage( MSG_UPGRADE_VERSION2, _("Ok"), NULL, paramVersion, iParamVersion, sProdName );
+ NoticeMessage( MSG_UPGRADE_VERSION2, _("Ok"), NULL, paramVersion, iParamVersion,
+ sProdName );
}
break;
}
if ( paramVersion < iMinParamVersion ) {
- NoticeMessage( MSG_BAD_FILE_VERSION, _("Ok"), NULL, paramVersion, iMinParamVersion, sProdName );
+ NoticeMessage( MSG_BAD_FILE_VERSION, _("Ok"), NULL, paramVersion,
+ iMinParamVersion, sProdName );
break;
}
} else if (!full) {
- if( !(ret = InputError( "unknown command", TRUE )))
+ if( !(ret = InputError( "unknown command", TRUE ))) {
break;
+ }
} else if (strncmp( paramLine, "TITLE1 ", 7 ) == 0) {
#ifdef UTFCONVERT
ConvertUTF8ToSystem(paramLine + 7);
@@ -731,24 +757,27 @@ static BOOL_T ReadTrackFile(
/*wFloatSetValue( roomSizeXPD.control, PutDim(roomSize.x) );*/
/*wFloatSetValue( roomSizeYPD.control, PutDim(roomSize.y) );*/
} else {
- if( !(ret = InputError( "ROOMSIZE: bad value", TRUE )))
+ if( !(ret = InputError( "ROOMSIZE: bad value", TRUE ))) {
break;
+ }
}
} else if (strncmp( paramLine, "SCALE ", 6 ) == 0) {
- if ( !DoSetScale( paramLine+5 ) ) {
- if( !(ret = InputError( "SCALE: bad value", TRUE )))
+ if ( !DoSetScale( paramLine+6 ) ) {
+ if( !(ret = InputError( "SCALE: bad value", TRUE ))) {
break;
+ }
}
} else if (strncmp( paramLine, "MAPSCALE ", 9 ) == 0) {
scale = atol( paramLine+9 );
if (scale > 1) {
- mapD.scale = mapScale = scale;
+ mapD.scale = scale;
}
} else if (strncmp( paramLine, "LAYERS ", 7 ) == 0) {
ReadLayers( paramLine+7 );
} else {
if (!old_skip) {
- if (InputError(_("Unknown layout file object - skip until next good object?"), TRUE)) { //OK to carry on
+ if (InputError(_("Unknown layout file object - skip until next good object?"),
+ TRUE)) { //OK to carry on
/* SKIP until next main line we recognize */
skip = TRUE;
skipLines++;
@@ -756,56 +785,61 @@ static BOOL_T ReadTrackFile(
} else {
break; //Close File
}
- } else skip = TRUE;
+ } else { skip = TRUE; }
skipLines++;
}
}
+ bInReadTracks = FALSE;
if (paramFile) {
fclose(paramFile);
paramFile = NULL;
}
if( ret ) {
- if (!noSetCurDir)
+ if (!noSetCurDir) {
SetCurrentPath( LAYOUTPATHKEY, fileName );
+ }
}
- if (skipLines>0)
- NoticeMessage( MSG_LAYOUT_LINES_SKIPPED, _("Ok"), NULL, paramFileName, skipLines);
+ if (skipLines>0) {
+ NoticeMessage( MSG_LAYOUT_LINES_SKIPPED, _("Ok"), NULL, paramFileName,
+ skipLines);
+ }
paramFile = NULL;
SetUserLocale();
free(paramFileName);
- paramFileName = NULL;
+ paramFileName = NULL;
InfoMessage( "%d", count );
return ret;
}
int LoadTracks(
- int cnt,
- char **fileName,
- void * data)
+ int cnt,
+ char **fileName,
+ void * data)
{
char *nameOfFile = NULL;
char *extOfFile;
- assert( fileName != NULL );
- assert( cnt == 1 );
+ CHECK( fileName != NULL );
+ CHECK( cnt == 1 );
nameOfFile = FindFilename(fileName[0]);
// Make sure it exists and it is readable
- if (access(fileName[0], R_OK) != 0)
- {
- NoticeMessage(MSG_OPEN_FAIL, _("Continue"), NULL, _("Track"), nameOfFile, _("Not Found"));
+ if (access(fileName[0], R_OK) != 0) {
+ NoticeMessage(MSG_OPEN_FAIL, _("Continue"), NULL, _("Track"), nameOfFile,
+ _("Not Found"));
return FALSE;
}
- if ( ! bExample )
+ if ( ! bExample ) {
SetCurrentPath(LAYOUTPATHKEY, fileName[0]);
+ }
bReadOnly = bExample;
paramVersion = -1;
wSetCursor( mainD.d, wCursorWait );
@@ -813,17 +847,19 @@ int LoadTracks(
ClearTracks();
ResetLayers();
checkPtMark = changed = 0;
- if (!data)
- LayoutBackGroundInit(TRUE); //Keep values of background -> will be overriden by archive
+ if (!data) {
+ LayoutBackGroundInit(
+ TRUE); //Keep values of background -> will be overriden by archive
+ }
UndoSuspend();
useCurrentLayer = FALSE;
- /*
- * Support zipped filetype
- */
+ /*
+ * Support zipped filetype
+ */
extOfFile = FindFileExtension( nameOfFile);
- BOOL_T zipped = FALSE;
+// BOOL_T zipped = FALSE;
BOOL_T loadXTC = TRUE;
char * full_path = strdup(fileName[0]);
@@ -847,20 +883,18 @@ int LoadTracks(
FILE * f = fopen (manifest_file, "rb");
- if (f)
- {
- fseek(f, 0, SEEK_END);
- length = ftell(f);
- fseek(f, 0, SEEK_SET);
- manifest = malloc(length + 1);
- if (manifest) {
- size_t siz = fread(manifest, 1, length, f);
- manifest[length] = '\0';
- }
- fclose(f);
- } else
- {
- NoticeMessage(MSG_MANIFEST_OPEN_FAIL, _("Continue"), NULL, manifest_file);
+ if (f) {
+ fseek(f, 0, SEEK_END);
+ length = ftell(f);
+ fseek(f, 0, SEEK_SET);
+ manifest = malloc(length + 1);
+ if (manifest) {
+ fread(manifest, 1, length, f);
+ manifest[length] = '\0';
+ }
+ fclose(f);
+ } else {
+ NoticeMessage(MSG_MANIFEST_OPEN_FAIL, _("Continue"), NULL, manifest_file);
}
free(manifest_file);
@@ -868,56 +902,54 @@ int LoadTracks(
//Set filename to point to included .xtc file
//Use the name inside manifest (this helps if a user renames the zip)
- if (manifest)
- {
- arch_file = ParseManifest(manifest, zip_input);
+ if (manifest) {
+ arch_file = ParseManifest(manifest, zip_input);
free(manifest);
}
free(full_path);
full_path = NULL;
// If no manifest value use same name as the archive
- if (arch_file && arch_file[0])
- {
- MakeFullpath(&full_path, zip_input, arch_file, NULL);
- } else
- {
- MakeFullpath(&full_path, zip_input, nameOfFile, NULL);
+ if (arch_file && arch_file[0]) {
+ MakeFullpath(&full_path, zip_input, arch_file, NULL);
+ } else {
+ MakeFullpath(&full_path, zip_input, nameOfFile, NULL);
}
nameOfFile = FindFilename(full_path);
extOfFile = FindFileExtension(full_path);
- if (strcmp(extOfFile, ZIPFILETYPEEXTENSION )==0)
- {
- for (int i=0; i<4; i++) {
- extOfFile[i] = extOfFile[i+1];
- }
+ if (strcmp(extOfFile, ZIPFILETYPEEXTENSION )==0) {
+ for (int i=0; i<4; i++) {
+ extOfFile[i] = extOfFile[i+1];
+ }
}
LOG(log_zip, 1, ("Zip-File %s \n", full_path))
- #if DEBUG
- printf("File Path: %s \n", full_path);
- #endif
+#if DEBUG
+ printf("File Path: %s \n", full_path);
+#endif
} else {
loadXTC = FALSE; // when unzipping fails, don't attempt loading the trackplan
}
- zipped = TRUE;
+// zipped = TRUE;
free(zip_input);
}
- if ( bExample )
+ if ( bExample ) {
bReadOnly = TRUE;
- else if ( access( fileName[0], W_OK ) == -1 )
+ } else if ( access( fileName[0], W_OK ) == -1 ) {
bReadOnly = TRUE;
- else
+ } else {
bReadOnly = FALSE;
+ }
char *copyOfFileName = MyStrdup(fileName[0]);
unsigned long time0 = wGetTimer();
- if (loadXTC && ReadTrackFile( full_path, FindFilename( fileName[0]), TRUE, TRUE, TRUE )) {
+ if (loadXTC
+ && ReadTrackFile( full_path, FindFilename( fileName[0]), TRUE, TRUE, TRUE )) {
nameOfFile = NULL;
extOfFile = NULL;
@@ -927,13 +959,15 @@ int LoadTracks(
if ( ! bExample && (nameOfFile != NULL) ) {
char * copyFile = strdup(fileName[0]);
- char * listName = FindFilename(strdup(fileName[0])); //Make sure the list name is new
+ char * listName = FindFilename(strdup(
+ fileName[0])); //Make sure the list name is new
wMenuListAdd( fileList_ml, 0, listName, copyFile );
}
ResolveIndex();
- LOG( log_timereadfile, 1, ( "Read time (%s) = %lu mS \n", fileName[0], wGetTimer()-time0 ) );
+ LOG( log_timereadfile, 1, ( "Read time (%s) = %lu mS \n", fileName[0],
+ wGetTimer()-time0 ) );
RecomputeElevations(NULL);
AttachTrains();
DoChangeNotification( CHANGE_ALL );
@@ -962,20 +996,21 @@ int LoadTracks(
*/
EXPORT void DoFileList(
- int index,
- char * label,
- void * data )
+ int index,
+ char * label,
+ void * data )
{
char *pathName = (char*)data;
bExample = FALSE;
- if (label)
+ if (label) {
LoadTracks( 1, &pathName, I2VP(1));
- else
+ } else {
LoadTracks( 1, &pathName, NULL );
+ }
}
static BOOL_T DoSaveTracks(
- const char * fileName )
+ const char * fileName )
{
FILE * f;
time_t clock;
@@ -984,13 +1019,15 @@ static BOOL_T DoSaveTracks(
f = fopen( fileName, "w" );
if (f==NULL) {
- NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Track"), fileName, strerror(errno) );
+ NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Track"), fileName,
+ strerror(errno) );
return FALSE;
}
SetCLocale();
wSetCursor( mainD.d, wCursorWait );
time(&clock);
- rc &= fprintf(f,"#%s Version: %s, Date: %s\n", sProdName, sVersion, ctime(&clock) )>0;
+ rc &= fprintf(f,"#%s Version: %s, Date: %s\n", sProdName, sVersion,
+ ctime(&clock) )>0;
rc &= fprintf(f, "VERSION %d %s\n", iParamVersion, PARAMVERSIONVERSION )>0;
Stripcr( GetLayoutTitle() );
Stripcr( GetLayoutSubtitle() );
@@ -1003,8 +1040,9 @@ static BOOL_T DoSaveTracks(
rc &= WriteMainNote( f );
rc &= WriteTracks( f, TRUE );
rc &= fprintf(f, "%s\n", END_TRK_FILE)>0;
- if ( !rc )
+ if ( !rc ) {
NoticeMessage( MSG_WRITE_FAILURE, _("Ok"), NULL, strerror(errno), fileName );
+ }
fclose(f);
bReadOnly = FALSE;
@@ -1025,74 +1063,83 @@ static BOOL_T DoSaveTracks(
*/
static BOOL_T CopyDependency(char * name, char * target_dir)
{
- char * backname = FindFilename(name);
+ char * backname = FindFilename(name);
BOOL_T copied = TRUE;
FILE * source = fopen(name, "rb");
- if (source != NULL) {
- char * target_file;
- MakeFullpath(&target_file, target_dir, backname, NULL);
- FILE * target = fopen(target_file, "wb");
-
- if (target != NULL) {
- char *buffer = MyMalloc(COPYBLOCKSIZE);
- while (!feof(source)) {
- size_t bytes = fread(buffer, 1, sizeof(buffer), source);
- if (bytes) {
- fwrite(buffer, 1, bytes, target);
- }
- }
+ if (source != NULL) {
+ char * target_file;
+ MakeFullpath(&target_file, target_dir, backname, NULL);
+ FILE * target = fopen(target_file, "wb");
+
+ if (target != NULL) {
+ char *buffer = MyMalloc(COPYBLOCKSIZE);
+ while (!feof(source)) {
+ size_t bytes = fread(buffer, 1, sizeof(buffer), source);
+ if (bytes) {
+ fwrite(buffer, 1, bytes, target);
+ }
+ }
MyFree(buffer);
- LOG(log_zip, 1, ("Zip-Include %s into %s \n", name, target_file))
+ LOG(log_zip, 1, ("Zip-Include %s into %s \n", name, target_file))
#if DEBUG
- printf("xtrkcad: Included file %s into %s \n",
- name, target_file);
+ printf("xtrkcad: Included file %s into %s \n",
+ name, target_file);
#endif
- fclose(target);
- } else {
- NoticeMessage(MSG_COPY_FAIL, _("Continue"), NULL, name, target_file);
- copied = FALSE;
- }
- free(target_file);
- fclose(source);
- } else {
- NoticeMessage(MSG_COPY_OPEN_FAIL, _("Continue"), NULL, name);
- copied = FALSE;
- }
- return copied;
+ fclose(target);
+ } else {
+ NoticeMessage(MSG_COPY_FAIL, _("Continue"), NULL, name, target_file);
+ copied = FALSE;
+ }
+ free(target_file);
+ fclose(source);
+ } else {
+ NoticeMessage(MSG_COPY_OPEN_FAIL, _("Continue"), NULL, name);
+ copied = FALSE;
+ }
+ return copied;
}
static doSaveCallBack_p doAfterSave;
-
+/**
+ * Save the layout to file. This function handles either cases, classic xtc
+ * files as well as xtce zip archives.
+ *
+ * \param cnt Number of files, must be 1
+ * \param fileName name of destination file including extension (xtc or xtce)
+ * \param data unused
+ *
+ * \returns TRUE for success
+ */
static int SaveTracks(
- int cnt,
- char **fileName,
- void * data )
+ int cnt,
+ char** fileName,
+ void* data)
{
+ BOOL_T success = FALSE;
- assert( fileName != NULL );
- assert( cnt == 1 );
+ CHECK(fileName != NULL);
+ CHECK(cnt == 1);
- char *nameOfFile = FindFilename(fileName[0]);
+ char* nameOfFile = FindFilename(fileName[0]);
SetCurrentPath(LAYOUTPATHKEY, fileName[0]);
//Support Archive zipped files
- char * extOfFile = FindFileExtension( fileName[0]);
-
+ char* extOfFile = FindFileExtension(fileName[0]);
- if (extOfFile && (strcmp(extOfFile,ZIPFILETYPEEXTENSION)==0)) {
+ if (extOfFile && (strcmp(extOfFile, ZIPFILETYPEEXTENSION) == 0)) {
- char * ArchiveName;
+ char* ArchiveName;
//Set filename to point to be the same as the included .xtc file.
//This is also in the manifest - in case a user renames the archive file.
- char * zip_output = GetZipDirectoryName(ARCHIVE_WRITE);
+ char* zip_output = GetZipDirectoryName(ARCHIVE_WRITE);
DeleteDirectory(zip_output);
SafeCreateDir(zip_output);
@@ -1102,75 +1149,125 @@ static int SaveTracks(
nameOfFile = FindFilename(ArchiveName);
extOfFile = FindFileExtension(ArchiveName);
- if (extOfFile && strcmp(extOfFile, ZIPFILETYPEEXTENSION)==0) {
+ if (extOfFile && strcmp(extOfFile, ZIPFILETYPEEXTENSION) == 0) {
// Get rid of the 'e'
extOfFile[3] = '\0';
}
- char * DependencyDir;
+ char* DependencyDir;
- //The included files are placed (for now) into an includes directory - TODO an array of includes with directories by type
+ // The included files are placed (for now) into an includes directory -
+ // TODO an array of includes with directories by type
MakeFullpath(&DependencyDir, zip_output, "includes", NULL);
SafeCreateDir(DependencyDir);
- char * background = GetLayoutBackGroundFullPath();
+ char* background = GetLayoutBackGroundFullPath();
- if (background && background[0])
- CopyDependency(background,DependencyDir);
+ // if used, get the background file
+ // else ignore this step
+ if (background && background[0]) {
+ success = CopyDependency(background, DependencyDir);
+ } else {
+ background = NULL;
+ success = TRUE;
+ }
- //The details are stored into the manifest - TODO use arrays for files, locations
- SetCLocale();
- char* json_Manifest = CreateManifest(nameOfFile, background, "includes");
- char * manifest_file;
+ if (success) {
+ //The details are stored into the manifest - TODO use arrays for files, locations
+ SetCLocale();
+ char* json_Manifest = CreateManifest(nameOfFile, background, "includes");
+ char* manifest_file;
- MakeFullpath(&manifest_file, zip_output, "manifest.json", NULL);
+ MakeFullpath(&manifest_file, zip_output, "manifest.json", NULL);
- FILE *fp = fopen(manifest_file, "wb");
- if (fp != NULL)
- {
- fputs(json_Manifest, fp);
- fclose(fp);
- } else {
- NoticeMessage( MSG_MANIFEST_FAIL, _("Continue"), NULL, manifest_file );
- }
- SetUserLocale();
+ FILE* fp = fopen(manifest_file, "wb");
+ if (fp != NULL) {
+ fputs(json_Manifest, fp);
+ fclose(fp);
+ } else {
+ NoticeMessage(MSG_MANIFEST_FAIL, _("Continue"), NULL, manifest_file);
+ success = FALSE;
+ }
+ SetUserLocale();
- free(manifest_file);
- free(json_Manifest);
+ free(manifest_file);
+ free(json_Manifest);
+ }
- DoSaveTracks( ArchiveName );
+ success &= DoSaveTracks(ArchiveName);
- if (CreateArchive( zip_output, fileName[0]) != TRUE) {
- NoticeMessage( MSG_ARCHIVE_FAIL, _("Continue"), NULL, fileName[0], zip_output );
+ if (success) {
+ if (CreateArchive(zip_output, fileName[0]) != TRUE) {
+ NoticeMessage(MSG_ARCHIVE_FAIL, _("Continue"), NULL, fileName[0], zip_output);
+ }
}
+
free(zip_output);
free(ArchiveName);
- } else
+ } else {
+ success = DoSaveTracks(fileName[0]);
+ }
- DoSaveTracks( fileName[ 0 ] );
+ if (success) {
+ nameOfFile = FindFilename(fileName[0]);
+ wMenuListAdd(fileList_ml, 0, nameOfFile, MyStrdup(fileName[0]));
+ checkPtMark = changed = 0;
- nameOfFile = FindFilename( fileName[ 0 ] );
- wMenuListAdd( fileList_ml, 0, nameOfFile, MyStrdup(fileName[ 0 ]) );
- checkPtMark = changed = 0;
-
- SetLayoutFullPath(fileName[0]);
+ SetLayoutFullPath(fileName[0]);
+ }
- if (doAfterSave)
+ if (doAfterSave) {
doAfterSave();
- doAfterSave = NULL;
- return TRUE;
+ }
+ return success;
}
-EXPORT void SetAutoSave() {
+/**
+ * Save information about current files and some settings to preferences file.
+ */
+
+EXPORT void SaveState(void)
+{
+ wWinPix_t width, height;
+ const char * fileName;
+ void * pathName;
+ char file[6];
+ int inx;
+
+ wWinGetSize(mainW, &width, &height);
+ wPrefSetInteger("draw", "mainwidth", (int)width);
+ wPrefSetInteger("draw", "mainheight", (int)height);
+ SaveParamFileList();
+ ParamUpdatePrefs();
+
+ wPrefSetString( "misc", "lastlayout", GetLayoutFullPath());
+ wPrefSetInteger( "misc", "lastlayoutexample", bExample );
+
+ if (fileList_ml) {
+ strcpy(file, "file");
+ file[5] = 0;
+ for (inx = 0; inx < NUM_FILELIST; inx++) {
+ fileName = wMenuListGet(fileList_ml, inx, &pathName);
+ if (fileName) {
+ file[4] = '0' + inx;
+ sprintf(message, "%s", (char* )pathName);
+ wPrefSetString("filelist", file, message);
+ }
+ }
+ }
+ wPrefFlush("");
+}
+static void SetAutoSave()
+{
if (saveFile_fs == NULL)
saveFile_fs = wFilSelCreate( mainW, FS_SAVE, 0, _("AutoSave Tracks As"),
- sSourceFilePattern, SaveTracks, NULL );
+ sSourceFilePattern, SaveTracks, NULL );
wFilSelect( saveFile_fs, GetCurrentPath(LAYOUTPATHKEY));
checkPtMark = 1;
SetWindowTitle();
- CleanupFiles(); //Remove old checkpoint
+ CleanupCheckpointFiles(); //Remove old checkpoint
SaveState();
}
@@ -1181,7 +1278,7 @@ EXPORT void DoSave( void * doAfterSaveVP )
if ( bReadOnly || *(GetLayoutFilename()) == '\0') {
if (saveFile_fs == NULL)
saveFile_fs = wFilSelCreate( mainW, FS_SAVE, 0, _("Save Tracks"),
- sSourceFilePattern, SaveTracks, NULL );
+ sSourceFilePattern, SaveTracks, NULL );
wFilSelect( saveFile_fs, GetCurrentPath(LAYOUTPATHKEY));
checkPtMark = 1;
} else {
@@ -1189,7 +1286,7 @@ EXPORT void DoSave( void * doAfterSaveVP )
SaveTracks( 1, &temp, NULL );
}
SetWindowTitle();
- CleanupFiles(); //Remove old checkpoint
+ CleanupCheckpointFiles(); //Remove old checkpoint
SaveState();
}
@@ -1198,11 +1295,11 @@ EXPORT void DoSaveAs( void * doAfterSaveVP )
doAfterSave = doAfterSaveVP;
if (saveFile_fs == NULL)
saveFile_fs = wFilSelCreate( mainW, FS_SAVE, 0, _("Save Tracks As"),
- sSaveFilePattern, SaveTracks, NULL );
+ sSaveFilePattern, SaveTracks, NULL );
wFilSelect( saveFile_fs, GetCurrentPath(LAYOUTPATHKEY));
checkPtMark = 1;
SetWindowTitle();
- CleanupFiles(); //Remove old checkpoint
+ CleanupCheckpointFiles(); //Remove old checkpoint
SaveState();
}
@@ -1210,12 +1307,12 @@ EXPORT void DoLoad( void )
{
if (loadFile_fs == NULL)
loadFile_fs = wFilSelCreate( mainW, FS_LOAD, 0, _("Open Tracks"),
- sSourceFilePattern, LoadTracks, NULL );
+ sSourceFilePattern, LoadTracks, NULL );
bExample = FALSE;
wFilSelect( loadFile_fs, GetCurrentPath(LAYOUTPATHKEY));
paste_offset = zero;
cursor_offset = zero;
- CleanupFiles(); //Remove old checkpoint
+ CleanupCheckpointFiles(); //Remove old checkpoint
SaveState();
}
@@ -1223,14 +1320,13 @@ EXPORT void DoLoad( void )
EXPORT void DoExamples( void )
{
if (examplesFile_fs == NULL) {
- static wBool_t bExample = TRUE;
examplesFile_fs = wFilSelCreate( mainW, FS_LOAD, 0, _("Example Tracks"),
- sSourceFilePattern, LoadTracks, NULL );
+ sSourceFilePattern, LoadTracks, NULL );
}
bExample = TRUE;
sprintf( message, "%s" FILE_SEP_CHAR "examples" FILE_SEP_CHAR, libDir );
wFilSelect( examplesFile_fs, message );
- CleanupFiles(); //Remove old checkpoint
+ CleanupCheckpointFiles(); //Remove old checkpoint
SaveState();
}
@@ -1239,7 +1335,7 @@ wIndex_t max_generations_count = 10;
static char sCheckPointBF[STR_LONG_SIZE];
-EXPORT void DoCheckPoint( void )
+static void DoCheckPoint( void )
{
int rc;
@@ -1279,6 +1375,35 @@ EXPORT void DoCheckPoint( void )
wShow( mainW );
}
+
+static wIndex_t autosave_count = 0;
+EXPORT wIndex_t checkPtMark = 0;
+EXPORT long checkPtInterval = 10;
+EXPORT long autosaveChkPoints = 0;
+
+EXPORT void TryCheckPoint()
+{
+ if (checkPtInterval > 0
+ && changed >= checkPtMark + (wIndex_t) checkPtInterval
+ && !inPlayback) {
+ DoCheckPoint();
+ checkPtMark = changed;
+
+ autosave_count++;
+
+ if ((autosaveChkPoints>0) && (autosave_count>=autosaveChkPoints)) {
+ if ( bReadOnly || *(GetLayoutFilename()) == '\0') {
+ SetAutoSave();
+ } else {
+ DoSave(NULL);
+ }
+ InfoMessage(_("File AutoSaved"));
+ autosave_count = 0;
+ }
+ }
+}
+
+
/**
* Remove all temporary files before exiting. When the program terminates
* normally through the exit choice, files and directories that were created
@@ -1289,10 +1414,8 @@ EXPORT void DoCheckPoint( void )
*
*/
-EXPORT void CleanupFiles( void )
+EXPORT void CleanupCheckpointFiles( void )
{
- char *tempDir;
-
if( checkPtFileName1 ) {
if (checkPtFileNameBackup) {
remove( checkPtFileNameBackup );
@@ -1301,6 +1424,22 @@ EXPORT void CleanupFiles( void )
remove( checkPtFileName1 );
}
+}
+
+/**
+ * Remove all temporary files used for archive handling. When the program terminates
+ * normally through the exit choice, files and directories that were created
+ * temporarily are removed: zip_in.<pid> and zip_out.<pid>
+ *
+ * \param none
+ * \return none
+ *
+ */
+
+EXPORT void CleanupTempArchive(void)
+{
+ char* tempDir;
+
for (int i = ARCHIVE_READ; i <= ARCHIVE_WRITE; ++i) {
tempDir = GetZipDirectoryName(i);
if (tempDir) {
@@ -1352,7 +1491,8 @@ EXPORT int LoadCheckpoint( BOOL_T sameName )
MakeFullpath(&search, workingDir, sCheckPointF, NULL);
UndoSuspend();
- if (ReadTrackFile( search, search + strlen(search) - strlen( sCheckPointF ), TRUE, TRUE, TRUE )) {
+ if (ReadTrackFile( search, search + strlen(search) - strlen( sCheckPointF ),
+ TRUE, TRUE, TRUE )) {
ResolveIndex();
LayoutBackGroundInit(FALSE); //Get Prior BackGround
LayoutBackGroundSave(); //Save Background Values
@@ -1366,14 +1506,14 @@ EXPORT int LoadCheckpoint( BOOL_T sameName )
SetCurrentPath( LAYOUTPATHKEY, initialFile );
SetLayoutFullPath(initialFile);
}
- } else SetLayoutFullPath("");
+ } else { SetLayoutFullPath(""); }
RecomputeElevations(NULL);
AttachTrains();
DoChangeNotification( CHANGE_ALL );
DoUpdateTitles();
- } else SetLayoutFullPath("");
+ } else { SetLayoutFullPath(""); }
LayerSetCounts();
UpdateLayerDlg(curLayer);
@@ -1410,15 +1550,15 @@ static int importAsModule;
*/
static int ImportTracks(
- int cnt,
- char **fileName,
- void * data )
+ int cnt,
+ char **fileName,
+ void * data )
{
char *nameOfFile;
long paramVersionOld = paramVersion;
- assert( fileName != NULL );
- assert( cnt == 1 );
+ CHECK( fileName != NULL );
+ CHECK( cnt == 1 );
nameOfFile = FindFilename(fileName[ 0 ]);
paramVersion = -1;
@@ -1426,14 +1566,14 @@ static int ImportTracks(
Reset();
SetAllTrackSelect( FALSE );
int saveLayer = curLayer;
- int layer;
+ int layer = 0;
if (importAsModule) {
layer = FindUnusedLayer(0);
- if (layer==-1) return FALSE;
+ if (layer==-1) { return FALSE; }
char LayerName[80];
LayerName[0] = '\0';
sprintf(LayerName,_("Module - %s"),nameOfFile);
- if (layer>=0) SetCurrLayer(layer, NULL, 0, NULL, NULL);
+ if (layer>=0) { SetCurrLayer(layer, NULL, 0, NULL, NULL); }
SetLayerName(layer,LayerName);
}
ImportStart();
@@ -1441,7 +1581,7 @@ static int ImportTracks(
useCurrentLayer = TRUE;
ReadTrackFile( fileName[ 0 ], nameOfFile, FALSE, FALSE, TRUE );
ImportEnd(zero, TRUE, FALSE);
- if (importAsModule) SetLayerModule(layer,TRUE);
+ if (importAsModule) { SetLayerModule(layer,TRUE); }
useCurrentLayer = FALSE;
SetCurrLayer(saveLayer, NULL, 0, NULL, NULL);
/*DoRedraw();*/
@@ -1457,8 +1597,9 @@ EXPORT void DoImport( void * type )
{
importAsModule = (int)VP2L(type);
if (importFile_fs == NULL)
- importFile_fs = wFilSelCreate( mainW, FS_LOAD, 0, _("Import Tracks"),
- sImportFilePattern, ImportTracks, NULL );
+ importFile_fs = wFilSelCreate( mainW, FS_LOAD, 0,
+ type == 0 ? _("Import Tracks") : _("Import Module"),
+ sImportFilePattern, ImportTracks, NULL );
wFilSelect( importFile_fs, GetCurrentPath(LAYOUTPATHKEY));
}
@@ -1474,20 +1615,21 @@ EXPORT void DoImport( void * type )
*/
static int DoExportTracks(
- int cnt,
- char **fileName,
- void * data )
+ int cnt,
+ char **fileName,
+ void * data )
{
FILE * f;
time_t clock;
- assert( fileName != NULL );
- assert( cnt == 1 );
+ CHECK( fileName != NULL );
+ CHECK( cnt == 1 );
SetCurrentPath( IMPORTPATHKEY, fileName[ 0 ] );
f = fopen( fileName[ 0 ], "w" );
if (f==NULL) {
- NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Export"), fileName[0], strerror(errno) );
+ NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Export"), fileName[0],
+ strerror(errno) );
return FALSE;
}
@@ -1498,7 +1640,7 @@ static int DoExportTracks(
fprintf(f,"#%s Version: %s, Date: %s\n", sProdName, sVersion, ctime(&clock) );
fprintf(f, "VERSION %d %s\n", iParamVersion, PARAMVERSIONVERSION );
coOrd offset;
- ExportTracks( f , &offset);
+ ExportTracks( f, &offset );
fprintf(f, "%s\n", END_TRK_FILE);
fclose(f);
@@ -1513,13 +1655,9 @@ static int DoExportTracks(
EXPORT void DoExport( void * unused )
{
- if (selectedTrackCount <= 0) {
- ErrorMessage( MSG_NO_SELECTED_TRK );
- return;
- }
if (exportFile_fs == NULL)
exportFile_fs = wFilSelCreate( mainW, FS_SAVE, 0, _("Export Tracks"),
- sImportFilePattern, DoExportTracks, NULL );
+ sImportFilePattern, DoExportTracks, NULL );
wFilSelect( exportFile_fs, GetCurrentPath(LAYOUTPATHKEY));
}
@@ -1539,7 +1677,8 @@ EXPORT void EditCopy( void * unused )
}
f = fopen( clipBoardN, "w" );
if (f == NULL) {
- NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Clipboard"), clipBoardN, strerror(errno) );
+ NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Clipboard"), clipBoardN,
+ strerror(errno) );
return;
}
@@ -1548,7 +1687,7 @@ EXPORT void EditCopy( void * unused )
time(&clock);
fprintf(f,"#%s Version: %s, Date: %s\n", sProdName, sVersion, ctime(&clock) );
fprintf(f, "VERSION %d %s\n", iParamVersion, PARAMVERSIONVERSION );
- ExportTracks(f, &paste_offset);
+ ExportTracks(f, &paste_offset );
fprintf(f, "%s\n", END_TRK_FILE );
SetUserLocale();
fclose(f);
@@ -1560,7 +1699,7 @@ EXPORT void EditCopy( void * unused )
EXPORT void EditCut( void * unused )
{
EditCopy(NULL);
- if ( !editStatus ) return;
+ if ( !editStatus ) { return; }
SelectDelete();
}
@@ -1594,10 +1733,11 @@ static BOOL_T EditPastePlace( wBool_t inPlace )
NoticeMessage( MSG_CANT_PASTE, _("Continue"), NULL );
rc = FALSE;
}
- if (inPlace)
+ if (inPlace) {
ImportEnd(paste_offset, FALSE, TRUE);
- else
+ } else {
ImportEnd(zero, FALSE, FALSE);
+ }
useCurrentLayer = FALSE;
/*DoRedraw();*/
EnableCommands();
@@ -1609,13 +1749,15 @@ static BOOL_T EditPastePlace( wBool_t inPlace )
return rc;
}
-EXPORT void EditPaste( void * unused ) {
+EXPORT void EditPaste( void * unused )
+{
editStatus = EditPastePlace(FALSE);
}
-EXPORT void EditClone( void * unused ) {
+EXPORT void EditClone( void * unused )
+{
EditCopy( NULL );
- if ( !editStatus ) return;
+ if ( !editStatus ) { return; }
editStatus = EditPastePlace(TRUE);
}
@@ -1625,16 +1767,39 @@ EXPORT void EditClone( void * unused ) {
*
*/
-EXPORT void FileInit( void )
+
+EXPORT void LoadFileList(void)
{
- if ( (libDir = wGetAppLibDir()) == NULL ) {
- abort();
+ char file[6];
+ int inx;
+ const char * cp;
+ const char *fileName, *pathName;
+ strcpy(file, "fileX");
+ for (inx = NUM_FILELIST - 1; inx >= 0; inx--) {
+ file[4] = '0' + inx;
+ cp = wPrefGetString("filelist", file);
+ if (!cp) {
+ continue;
+ }
+ pathName = MyStrdup(cp);
+ fileName = FindFilename((char *) pathName);
+ if (fileName) {
+ wMenuListAdd(fileList_ml, 0, fileName, pathName);
+ }
}
- if ( (workingDir = wGetAppWorkDir()) == NULL )
- AbortProg( "wGetAppWorkDir()" );
+}
+
+
+
+EXPORT void FileInit( void )
+{
+ libDir = wGetAppLibDir();
+ CHECK( libDir );
+ workingDir = wGetAppWorkDir();
+ CHECK( workingDir );
SetLayoutFullPath("");
- MakeFullpath(&clipBoardN, workingDir, sClipboardF, NULL);
+ MakeFullpath(&clipBoardN, workingDir, sClipboardF, NULL);
log_locale = LogFindIndex( "locale" );
log_timereadfile = LogFindIndex( "timereadfile" );
diff --git a/app/bin/fileio.h b/app/bin/fileio.h
index a037063..0ea80af 100644
--- a/app/bin/fileio.h
+++ b/app/bin/fileio.h
@@ -16,7 +16,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
*/
#ifndef FILEIO_H
@@ -42,6 +42,9 @@ extern const char * libDir;
extern wBool_t bReadOnly;
extern wBool_t bExample;
+// Processing an input file, objects may be incomplete so avoid some ops (MapRedraw)
+extern wBool_t bInReadTracks;
+
#define PARAM_CUSTOM (-2)
#define PARAM_LAYOUT (-3)
extern int curParamFileIndex;
@@ -56,8 +59,6 @@ extern wBool_t inPlaybackQuit;
extern wWin_p demoW;
extern int curDemo;
-extern wMenuList_p fileList_ml;
-
#define ZIPFILETYPEEXTENSION "xtce"
#define PARAM_SUBDIR "params"
@@ -96,7 +97,7 @@ BOOL_T GetArgs( char *, char *, ... );
char * ReadMultilineText();
BOOL_T ParseRoomSize( char *, coOrd * );
int InputError( char *, BOOL_T, ... );
-void SyntaxError( char *, wIndex_t, wIndex_t );
+void SyntaxError( char *, wIndex_t, wIndex_t );
void AddParam( char *name, readParam_t proc );
@@ -110,21 +111,23 @@ void DoParamFiles(void * unused);
int LoadTracks( int cnt, char **fileName, void *data );
-typedef void (*doSaveCallBack_p)( void );
-void SetAutoSave(void);
+void SaveState( void );
void DoSave( void * doAfterSaveVP );
void DoSaveAs( void * doAfterSaveVP );
void DoLoad( void );
void DoExamples( void );
void DoFileList( int, char *, void * );
-void DoCheckPoint( void );
-void CleanupFiles( void );
+void TryCheckPoint( void );
+void CleanupCheckpointFiles( void );
+void CleanupTempArchive( void );
int ExistsCheckpoint( void );
int LoadCheckpoint( BOOL_T );
void DoImport( void * typeVP );
void DoExport( void * unused );
void DoExportDXF( void * unused );
-void DoExportSVG(void);
+#if XTRKCAD_CREATE_SVG
+void DoExportSVG( void * unused );
+#endif
extern wBool_t editStatus; // Status of last Edit* command
void EditCopy( void * unused );
void EditCut( void * unused );
@@ -143,10 +146,12 @@ int RegLevel( void );
void ReadKey( void );
void PopupRegister( void * );
+void LoadFileList( void );
void FileInit( void );
BOOL_T MacroInit( void );
+int Copyfile( const char * fn1, const char * fn2);
void SetCLocale();
void SetUserLocale();
diff --git a/app/bin/filenoteui.c b/app/bin/filenoteui.c
index 2470836..9b1c2d5 100644
--- a/app/bin/filenoteui.c
+++ b/app/bin/filenoteui.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 "custom.h"
@@ -30,33 +30,42 @@
#include "include/stringxtc.h"
#include "track.h"
-extern BOOL_T inDescribeCmd;
-
#define MYMIN(x, y) (((x) < (y)) ? (x) : (y))
#define DOCUMENTFILEPATTERN "All Files (*.*)|*.*"
#define DOCUMENTPATHKEY "document"
-static struct extraDataNote_t noteDataInUI;
+struct {
+ coOrd pos;
+ int layer;
+ track_p trk;
+ char title[TITLEMAXIMUMLENGTH];
+ char path[PATHMAXIMUMLENGTH];
+} fileNoteData;
+
static struct wFilSel_t * documentFile_fs;
static void NoteFileOpenExternal(void * junk);
static void NoteFileBrowse(void * junk);
+static void FileDlgUpdate(
+ paramGroup_p pg,
+ int inx,
+ void * valueP);
-static paramFloatRange_t r_1000_1000 = { -1000.0, 1000.0, 80 };
+static paramFloatRange_t noRangeCheck = { 0.0, 0.0, 80, PDO_NORANGECHECK_HIGH | PDO_NORANGECHECK_LOW };
// static char *toggleLabels[] = { N_("Copy to archive"), NULL };
-static paramData_t fileEditPLs[] = {
+static paramData_t fileNotePLs[] = {
#define I_ORIGX (0)
- /*0*/ { PD_FLOAT, &noteDataInUI.pos.x, "origx", PDO_DIM, &r_1000_1000, N_("Position X") },
+ /*0*/ { PD_FLOAT, &fileNoteData.pos.x, "origx", PDO_DIM|PDO_NOPREF, &noRangeCheck, N_("Position X") },
#define I_ORIGY (1)
- /*1*/ { PD_FLOAT, &noteDataInUI.pos.y, "origy", PDO_DIM, &r_1000_1000, N_("Position Y") },
+ /*1*/ { PD_FLOAT, &fileNoteData.pos.y, "origy", PDO_DIM|PDO_NOPREF, &noRangeCheck, N_("Position Y") },
#define I_LAYER (2)
- /*2*/ { PD_DROPLIST, &noteDataInUI.layer, "layer", 0, I2VP(150), "Layer", 0 },
+ /*2*/ { PD_DROPLIST, &fileNoteData.layer, "layer", PDO_NOPREF, I2VP(150), "Layer", 0 },
#define I_TITLE (3)
- /*3*/ { PD_STRING, NULL, "title", PDO_NOPREF | PDO_STRINGLIMITLENGTH, I2VP(200), N_("Title"), 0, 0, TITLEMAXIMUMLENGTH-1 },
+ /*3*/ { PD_STRING, &fileNoteData.title, "title", PDO_NOPREF | PDO_NOTBLANK, I2VP(200), N_("Title"), 0, 0, sizeof fileNoteData.title },
#define I_PATH (4)
- { PD_STRING, NULL, "filename", PDO_NOPSHUPD, I2VP(200), N_("Document"), BO_READONLY, I2VP(0L), PATHMAXIMUMLENGTH-1 },
+ { PD_STRING, &fileNoteData.path, "filename", PDO_NOPREF | PDO_NOTBLANK, I2VP(200), N_("Document"), BO_READONLY, I2VP(0L), sizeof fileNoteData.path },
#define I_BROWSE (5)
{ PD_BUTTON, NoteFileBrowse, "browse", 0L, NULL, N_("Select...") },
#define I_OPEN (6)
@@ -66,12 +75,12 @@ static paramData_t fileEditPLs[] = {
};
-static paramGroup_t fileEditPG = { "fileEdit", 0, fileEditPLs, COUNT( fileEditPLs ) };
-static wWin_p fileEditW;
+static paramGroup_t fileNotePG = { "fileNote", 0, fileNotePLs, COUNT( fileNotePLs ) };
+static wWin_p fileNoteW;
BOOL_T IsFileNote(track_p trk)
{
- struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
+ struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
return(xx->op == OP_NOTEFILE );
}
@@ -84,13 +93,13 @@ BOOL_T IsFileNote(track_p trk)
BOOL_T IsFileValid(char *fileName)
{
if (!strlen(fileName)) {
- return(FALSE);
+ return(FALSE);
} else {
if (access(fileName, F_OK) == -1) {
return(FALSE);
}
}
-
+
return(TRUE);
}
@@ -103,50 +112,52 @@ BOOL_T IsFileValid(char *fileName)
* \return always 0
*/
int LoadDocumentFile(
- int files,
- char ** fileName,
- void * data)
+ int files,
+ char ** fileName,
+ void * data)
{
- wControlActive(fileEditPLs[I_OPEN].control, TRUE);
- ParamDialogOkActive(&fileEditPG, TRUE);
- strscpy(noteDataInUI.noteData.fileData.path, *fileName, PATHMAXIMUMLENGTH );
- ParamLoadControl(&fileEditPG, I_PATH);
+ wControlActive(fileNotePLs[I_OPEN].control, TRUE);
+ ParamDialogOkActive(&fileNotePG, TRUE);
+ strscpy(fileNoteData.path, *fileName, PATHMAXIMUMLENGTH );
+ ParamLoadControl(&fileNotePG, I_PATH);
return(0);
}
/**
* Select the file to attach
- *
+ *
* \param junk unused
*/
static void NoteFileBrowse(void * junk)
{
- documentFile_fs = wFilSelCreate(mainW, FS_LOAD, 0, _("Add Document"), DOCUMENTFILEPATTERN, LoadDocumentFile, NULL);
+ documentFile_fs = wFilSelCreate(mainW, FS_LOAD, 0, _("Add Document"),
+ DOCUMENTFILEPATTERN, LoadDocumentFile, NULL);
wFilSelect(documentFile_fs, GetCurrentPath(DOCUMENTPATHKEY));
- wControlActive(fileEditPLs[I_OPEN].control,
- (strlen(noteDataInUI.noteData.fileData.path) ? TRUE : FALSE));
-
+ wControlActive(fileNotePLs[I_OPEN].control,
+ (strlen(fileNoteData.path) ? TRUE : FALSE));
+ FileDlgUpdate( &fileNotePG, I_PATH, NULL );
return;
}
/**
* Open the file using an external program. Before opening the file existance and permissions are checked.
* If access is not allowed the Open Button is disabled
- *
+ *
* \param fileName IN file
*/
-
+
static void NoteFileOpen(char *fileName)
{
if (IsFileValid(fileName)) {
wOpenFileExternal(fileName);
} else {
- wNoticeEx(NT_ERROR, _("The file doesn't exist or cannot be read!"), _("Cancel"), NULL);
- if (fileEditW) {
- wControlActive(fileEditPLs[I_OPEN].control, FALSE);
+ wNoticeEx(NT_ERROR, _("The file doesn't exist or cannot be read!"), _("Cancel"),
+ NULL);
+ if (fileNoteW) {
+ wControlActive(fileNotePLs[I_OPEN].control, FALSE);
}
}
}
@@ -154,50 +165,47 @@ static void NoteFileOpen(char *fileName)
static void
NoteFileOpenExternal(void * junk)
{
- NoteFileOpen(noteDataInUI.noteData.fileData.path);
+ NoteFileOpen(fileNoteData.path);
}
/**
* Handle the dialog actions
*/
static void
FileDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP)
+ paramGroup_p pg,
+ int inx,
+ void * valueP)
{
- switch (inx) {
+ switch (inx) {
case I_ORIGX:
case I_ORIGY:
- UpdateFile(&noteDataInUI, OR_NOTE, FALSE);
+ // TODO: redraw bitmap at new location
+ //UpdateFile(&noteDataInUI, OR_NOTE, FALSE);
break;
- case I_LAYER:
- UpdateFile(&noteDataInUI, LY_NOTE, FALSE);
+ case I_PATH:
+ if (!IsFileValid(fileNoteData.path)) {
+ paramData_p p = &fileNotePLs[I_PATH];
+ p->bInvalid = TRUE;
+ wWinPix_t h = wControlGetHeight(p->control);
+ wControlSetBalloon( p->control, 0, h, "Document path is invalid" );
+ ParamHilite( p->group->win, p->control, TRUE );
+ }
break;
- case I_PATH:
- if (IsFileValid(noteDataInUI.noteData.fileData.path)) {
- wControlActive(fileEditPLs[I_OPEN].control, TRUE);
- } else {
- wControlActive(fileEditPLs[I_OPEN].control, FALSE);
- }
- break;
- default:
+ default:
break;
- }
+ }
}
-/**
+/**
* Handle Cancel button: restore old values for layer and position
*/
static void
FileEditCancel( wWin_p junk)
{
- if (inDescribeCmd) {
- UpdateFile(&noteDataInUI, CANCEL_NOTE, FALSE);
- }
ResetIfNotSticky();
- wHide(fileEditW);
+ wHide(fileNoteW);
}
/**
* Handle OK button: make sure the entered filename is syntactically valid, update
@@ -209,8 +217,21 @@ FileEditCancel( wWin_p junk)
static void
FileEditOK(void *junk)
{
- UpdateFile(&noteDataInUI, OK_FILE, FALSE);
- wHide(fileEditW);
+ track_p trk = fileNoteData.trk;
+ if ( trk == NULL ) {
+ // new file note
+ trk = NewNote( -1, fileNoteData.pos, OP_NOTEFILE );
+ }
+ struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
+ xx->pos = fileNoteData.pos;
+ SetTrkLayer( trk, fileNoteData.layer );
+ MyFree( xx->noteData.fileData.title );
+ xx->noteData.fileData.title = MyStrdup( fileNoteData.title );
+ MyFree( xx->noteData.fileData.path );
+ xx->noteData.fileData.path = MyStrdup( fileNoteData.path );
+ SetBoundingBox( trk, xx->pos, xx->pos );
+ DrawNewTrack( trk );
+ wHide(fileNoteW);
ResetIfNotSticky();
SetFileChanged();
}
@@ -222,38 +243,27 @@ FileEditOK(void *junk)
* \param windowTitle IN title for the edit dialog window
*/
-void CreateEditFileDialog(track_p trk, char * windowTitle)
+static void CreateEditFileDialog(char * windowTitle)
{
- if (!fileEditW) {
- noteDataInUI.base.trkType = T_NOTE;
- noteDataInUI.noteData.fileData.path = MyMalloc(PATHMAXIMUMLENGTH);
- noteDataInUI.noteData.fileData.title = MyMalloc(TITLEMAXIMUMLENGTH);
- fileEditPLs[I_TITLE].valueP = noteDataInUI.noteData.fileData.title;
- fileEditPLs[I_PATH].valueP = noteDataInUI.noteData.fileData.path;
-
- ParamRegister(&fileEditPG);
- fileEditW = ParamCreateDialog(&fileEditPG,
- "",
- _("Done"), FileEditOK,
- FileEditCancel, TRUE, NULL,
- F_BLOCK,
- FileDlgUpdate);
- }
-
- wWinSetTitle(fileEditPG.win, MakeWindowTitle(windowTitle));
-
- struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
- noteDataInUI.pos = xx->pos;
- noteDataInUI.layer = xx->layer;
- noteDataInUI.trk = trk;
- strscpy(noteDataInUI.noteData.fileData.title, xx->noteData.fileData.title, TITLEMAXIMUMLENGTH);
- strscpy(noteDataInUI.noteData.fileData.path, xx->noteData.fileData.path, PATHMAXIMUMLENGTH);
- FillLayerList((wList_p)fileEditPLs[I_LAYER].control);
- ParamLoadControls(&fileEditPG);
- wControlActive(fileEditPLs[I_OPEN].control, (IsFileValid(noteDataInUI.noteData.fileData.path)?TRUE:FALSE));
-
- wShow(fileEditW);
+ if (!fileNoteW) {
+ ParamRegister(&fileNotePG);
+ fileNoteW = ParamCreateDialog(&fileNotePG,
+ "",
+ _("Done"), FileEditOK,
+ FileEditCancel, TRUE, NULL,
+ F_BLOCK,
+ FileDlgUpdate);
+ }
+
+ wWinSetTitle(fileNotePG.win, MakeWindowTitle(windowTitle));
+
+ FillLayerList((wList_p)fileNotePLs[I_LAYER].control);
+ ParamLoadControls(&fileNotePG);
+ wControlActive(fileNotePLs[I_OPEN].control,
+ (IsFileValid(fileNoteData.path)?TRUE:FALSE));
+
+ wShow(fileNoteW);
}
/**
@@ -263,7 +273,7 @@ void CreateEditFileDialog(track_p trk, char * windowTitle)
void ActivateFileNote(track_p trk)
{
- struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
NoteFileOpen(xx->noteData.fileData.path);
}
@@ -279,25 +289,33 @@ void ActivateFileNote(track_p trk)
void DescribeFileNote(track_p trk, char * str, CSIZE_T len)
{
struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
- DynString statusLine;
-
- DynStringMalloc(&statusLine, 80);
+ DynString statusLine;
- DynStringPrintf(&statusLine,
- _("Document(%d) Layer=%d %-.80s [%s]"),
- GetTrkIndex(trk),
- GetTrkLayer(trk) + 1,
- xx->noteData.fileData.title,
- xx->noteData.fileData.path);
+ DynStringMalloc(&statusLine, 80);
- strcpy(str, DynStringToCStr(&statusLine));
- DynStringFree(&statusLine);
+ DynStringPrintf(&statusLine,
+ _("Document(%d) Layer=%d %-.80s [%s]"),
+ GetTrkIndex(trk),
+ GetTrkLayer(trk) + 1,
+ xx->noteData.fileData.title,
+ xx->noteData.fileData.path);
- if (inDescribeCmd) {
- NoteStateSave(trk);
-
- CreateEditFileDialog(trk, _("Update document"));
+ strcpy(str, DynStringToCStr(&statusLine));
+ DynStringFree(&statusLine);
+ if ( ! inDescribeCmd ) {
+ return;
}
+
+
+ fileNoteData.pos = xx->pos;
+ fileNoteData.layer = GetTrkLayer( trk );
+ fileNoteData.trk = trk;
+ strscpy( fileNoteData.title, xx->noteData.fileData.title,
+ sizeof fileNoteData.title );
+ strscpy( fileNoteData.path, xx->noteData.fileData.path,
+ sizeof fileNoteData.path );
+
+ CreateEditFileDialog(_("Update Document"));
}
/**
@@ -307,14 +325,15 @@ void DescribeFileNote(track_p trk, char * str, CSIZE_T len)
* \param the newly created trk
*/
-void NewFileNoteUI(track_p trk)
+void NewFileNoteUI(coOrd pos)
{
- struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
char *tmpPtrText = _("Describe the file");
- xx->noteData.fileData.title = MyStrdup(tmpPtrText);
- xx->noteData.fileData.path = MyStrdup("");
+ fileNoteData.pos = pos;
+ fileNoteData.layer = curLayer;
+ fileNoteData.trk = NULL;
+ strscpy( fileNoteData.title, tmpPtrText, sizeof fileNoteData.title );
+ strscpy( fileNoteData.path, "", sizeof fileNoteData.path );
- CreateEditFileDialog(trk,
- _("Attach document"));
+ CreateEditFileDialog( _("Attach Document"));
}
diff --git a/app/bin/helphelper.c b/app/bin/helphelper.c
index 36083b8..52bce2d 100644
--- a/app/bin/helphelper.c
+++ b/app/bin/helphelper.c
@@ -1,5 +1,5 @@
/** \file helphelper.c
- * use OSX Help system
+ * use OSX Help system
*/
/* XTrkCad - Model Railroad CAD
@@ -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
*/
#import <CoreFoundation/CoreFoundation.h>
@@ -43,50 +43,56 @@
OSStatus MyGoToHelpPage (CFStringRef pagePath, CFStringRef anchorName)
{
- CFBundleRef myApplicationBundle = NULL;
- CFStringRef myBookName = NULL;
- OSStatus err = noErr;
- printf("HelpHelper: Started to look for help\n");
-
- myApplicationBundle = CFBundleGetMainBundle();
- if (myApplicationBundle == NULL) {
- printf("HelpHelper: Error - No Application Bundle\n");
- err = fnfErr;
- return err;
- }
- printf("HelpHelper: Application Bundle Found\n");
-
- myBookName = CFBundleGetValueForInfoDictionaryKey(
- myApplicationBundle,
- CFSTR("CFBundleHelpBookName"));
- if (myBookName == NULL) {
- myBookName = CFStringCreateWithCString(NULL, "XTrackCAD Help", kCFStringEncodingMacRoman);
- printf("HelpHelper: Defaulting to 'XTrackCAD Help'\n" );
- err = fnfErr;
- return err;
- }
- printf("HelpHelper: BookName dictionary name %s found\n",CFStringGetCStringPtr(myBookName, kCFStringEncodingMacRoman));
-
- if (CFGetTypeID(myBookName) != CFStringGetTypeID()) {
- printf("HelpHelper: Error - BookName is not a string\n" );
- err = paramErr;
- }
-
- if (err == noErr) {
- err = AHGotoPage (myBookName, pagePath, anchorName);
- if (err != noErr) {
- printf("HelpHelper: Error in AHGoToPage('%s','%s')\n",CFStringGetCStringPtr(myBookName, kCFStringEncodingMacRoman), CFStringGetCStringPtr(pagePath, kCFStringEncodingMacRoman));
- }
- }
-
- return err;
-
+ CFBundleRef myApplicationBundle = NULL;
+ CFStringRef myBookName = NULL;
+ OSStatus err = noErr;
+ printf("HelpHelper: Started to look for help\n");
+
+ myApplicationBundle = CFBundleGetMainBundle();
+ if (myApplicationBundle == NULL) {
+ printf("HelpHelper: Error - No Application Bundle\n");
+ err = fnfErr;
+ return err;
+ }
+ printf("HelpHelper: Application Bundle Found\n");
+
+ myBookName = CFBundleGetValueForInfoDictionaryKey(
+ myApplicationBundle,
+ CFSTR("CFBundleHelpBookName"));
+ if (myBookName == NULL) {
+ myBookName = CFStringCreateWithCString(NULL, "XTrackCAD Help",
+ kCFStringEncodingMacRoman);
+ printf("HelpHelper: Defaulting to 'XTrackCAD Help'\n" );
+ err = fnfErr;
+ return err;
+ }
+ printf("HelpHelper: BookName dictionary name %s found\n",
+ CFStringGetCStringPtr(myBookName, kCFStringEncodingMacRoman));
+
+ if (CFGetTypeID(myBookName) != CFStringGetTypeID()) {
+ printf("HelpHelper: Error - BookName is not a string\n" );
+ err = paramErr;
+ }
+
+ if (err == noErr) {
+ err = AHGotoPage (myBookName, pagePath, anchorName);
+ if (err != noErr) {
+ printf("HelpHelper: Error in AHGoToPage('%s','%s')\n",
+ CFStringGetCStringPtr(myBookName, kCFStringEncodingMacRoman),
+ CFStringGetCStringPtr(pagePath, kCFStringEncodingMacRoman));
+ }
+ }
+
+ return err;
+
};
-int displayHelp(char* name) {
- CFStringRef str = CFStringCreateWithCString(NULL,name,kCFStringEncodingMacRoman);
+int displayHelp(char* name)
+{
+ CFStringRef str = CFStringCreateWithCString(NULL,name,
+ kCFStringEncodingMacRoman);
OSStatus err = MyGoToHelpPage(str, NULL);
- if (err != noErr) printf("HelpHelper: MyGoToHelpPage had error %d\n", err);
+ if (err != noErr) { printf("HelpHelper: MyGoToHelpPage had error %d\n", err); }
return err;
};
@@ -97,51 +103,54 @@ main( int argc, char **argv )
int handleOfPipe = 0;
char buffer[ 100 ];
char issue[ 100 ];
-
+
int len;
int finished = 0;
int numBytes = 0;
int numBytes2 = 0;
-
+
printf( "HelpHelper: starting!\n" );
-
+
handleOfPipe = open( HELPCOMMANDPIPE, O_RDONLY );
if( handleOfPipe ) {
printf( "HelpHelper: opened pipe for reading\n" );
while( !finished ) {
printf( "HelpHelper: reading from pipe...\n" );
numBytes = read( handleOfPipe, &len, sizeof( int ));
-
- if( numBytes > 0 )
+
+ if( numBytes > 0 ) {
printf( "HelpHelper: read %d bytes\n", numBytes );
+ }
if( numBytes == sizeof(int)) {
printf( "HelpHelper: Expecting %d bytes\n", len );
numBytes2 = read( handleOfPipe, buffer, len + 1 );
buffer[numBytes2] = '\0';
- if (numBytes2 > 0)
+ if (numBytes2 > 0) {
printf( "HelpHelper: Display help on: %s\n", buffer );
-
+ }
+
if( !strcmp(buffer, EXITCOMMAND )) {
finished = 1;
} else {
- if (displayHelp(buffer) != 0)
+ if (displayHelp(buffer) != 0) {
printf( "HelpHelper: Error\n");
- }
+ }
+ }
}
if( numBytes <= 0 ) {
printf( "HelpHelper: exiting on pipe error\n" );
exit( 1 );
- }
+ }
}
} else {
printf( "HelpHelper: Could not open pipe for reading\n" );
- }
-
+ }
+
printf( "HelpHelper: exiting!" );
-
+
exit( 0 );
};
-
+
diff --git a/app/bin/i18n.c b/app/bin/i18n.c
index e6abe70..8782803 100644
--- a/app/bin/i18n.c
+++ b/app/bin/i18n.c
@@ -16,7 +16,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 <locale.h>
@@ -26,9 +26,9 @@
#include "wlib.h"
/**
- * Initialize gettext environment. By default, the language files are installed
- * in <install_dir>\share\locale\<language>
- * The install dir is derived from the library directory by removing the last
+ * Initialize gettext environment. By default, the language files are installed
+ * in <install_dir>\share\locale\<language>
+ * The install dir is derived from the library directory by removing the last
* directory in the path (xtrkcad)
* Directory layout on Windows is:
* <install_dir>\bin\
@@ -39,15 +39,15 @@ void InitGettext( void )
{
#ifdef XTRKCAD_USE_GETTEXT
char directory[2048];
-
+
setlocale(LC_ALL, "");
-
+
// build the correct directory path
strcpy(directory, wGetAppLibDir());
strcat( directory, "/../locale" );
#ifdef WINDOWS
_fullpath( directory, directory, 2048 );
-#endif
+#endif
// initialize gettext
bindtextdomain(XTRKCAD_PACKAGE, directory);
bind_textdomain_codeset(XTRKCAD_PACKAGE, "UTF-8");
@@ -55,7 +55,7 @@ void InitGettext( void )
#ifdef VERBOSE
printf(_("Gettext initialized (PACKAGE=%s, LOCALEDIR=%s, LC_ALL=%s).\n"),
- XTRKCAD_PACKAGE, directory, setlocale(LC_ALL, NULL));
+ XTRKCAD_PACKAGE, directory, setlocale(LC_ALL, NULL));
#endif
#endif /* XTRKCAD_USE_GETTEXT */
diff --git a/app/bin/i18n.h b/app/bin/i18n.h
index f70c87d..9b53944 100644
--- a/app/bin/i18n.h
+++ b/app/bin/i18n.h
@@ -13,31 +13,31 @@
*
* 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 "xtrkcad-config.h"
#ifdef XTRKCAD_USE_GETTEXT
/* Use gettext */
- #ifndef USE_SIMPLE_GETTEXT
- #include <libintl.h>
- #endif
+#ifndef USE_SIMPLE_GETTEXT
+#include <libintl.h>
+#endif
- #include <string.h>
+#include <string.h>
- #define _(String) ((String && strlen(String) > 0) \
+#define _(String) ((String && strlen(String) > 0) \
? gettext(String) : String)
- #define p_(Context, String) ((Context && strlen(Context) > 0) \
+#define p_(Context, String) ((Context && strlen(Context) > 0) \
? pgettext(Context, String) : _(String))
- #define gettext_noop(String) String
- #define N_(String) gettext_noop(String)
+#define gettext_noop(String) String
+#define N_(String) gettext_noop(String)
#else
- /* Don't use gettext */
- #define _(String) String
- #define gettext_noop(String) String
- #define N_(String) String
+/* Don't use gettext */
+#define _(String) String
+#define gettext_noop(String) String
+#define N_(String) String
#endif /* XTRKCAD_USE_GETTEXT */
void InitGettext( void );
diff --git a/app/bin/include/dirent.h b/app/bin/include/dirent.h
index 2ebf703..31e31e3 100644
--- a/app/bin/include/dirent.h
+++ b/app/bin/include/dirent.h
@@ -9,10 +9,10 @@
#ifndef DIRENT_H
#define DIRENT_H
- /*
- * Include windows.h without Windows Sockets 1.1 to prevent conflicts with
- * Windows Sockets 2.0.
- */
+/*
+ * Include windows.h without Windows Sockets 1.1 to prevent conflicts with
+ * Windows Sockets 2.0.
+ */
#ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
#endif
@@ -23,12 +23,11 @@
#include <wchar.h>
#include <string.h>
#include <stdlib.h>
-#include <malloc.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
- /* Indicates that d_type field is available in dirent structure */
+/* Indicates that d_type field is available in dirent structure */
#define _DIRENT_HAVE_D_TYPE
/* Indicates that d_namlen field is available in dirent structure */
@@ -197,7 +196,7 @@
# define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK)
#endif
- /* Return the exact length of the file name without zero terminator */
+/* Return the exact length of the file name without zero terminator */
#define _D_EXACT_NAMLEN(p) ((p)->d_namlen)
/* Return the maximum size of a file name */
@@ -209,103 +208,103 @@ extern "C" {
#endif
- /* Wide-character version */
- struct _wdirent {
- /* Always zero */
- long d_ino;
+/* Wide-character version */
+struct _wdirent {
+ /* Always zero */
+ long d_ino;
- /* File position within stream */
- long d_off;
+ /* File position within stream */
+ long d_off;
- /* Structure size */
- unsigned short d_reclen;
+ /* Structure size */
+ unsigned short d_reclen;
- /* Length of name without \0 */
- size_t d_namlen;
+ /* Length of name without \0 */
+ size_t d_namlen;
- /* File type */
- int d_type;
+ /* File type */
+ int d_type;
- /* File name */
- wchar_t d_name[PATH_MAX + 1];
- };
- typedef struct _wdirent _wdirent;
+ /* File name */
+ wchar_t d_name[PATH_MAX + 1];
+};
+typedef struct _wdirent _wdirent;
- struct _WDIR {
- /* Current directory entry */
- struct _wdirent ent;
+struct _WDIR {
+ /* Current directory entry */
+ struct _wdirent ent;
- /* Private file data */
- WIN32_FIND_DATAW data;
+ /* Private file data */
+ WIN32_FIND_DATAW data;
- /* True if data is valid */
- int cached;
+ /* True if data is valid */
+ int cached;
- /* Win32 search handle */
- HANDLE handle;
+ /* Win32 search handle */
+ HANDLE handle;
- /* Initial directory name */
- wchar_t *patt;
- };
- typedef struct _WDIR _WDIR;
+ /* Initial directory name */
+ wchar_t *patt;
+};
+typedef struct _WDIR _WDIR;
- /* Multi-byte character version */
- struct dirent {
- /* Always zero */
- long d_ino;
+/* Multi-byte character version */
+struct dirent {
+ /* Always zero */
+ long d_ino;
- /* File position within stream */
- long d_off;
+ /* File position within stream */
+ long d_off;
- /* Structure size */
- unsigned short d_reclen;
+ /* Structure size */
+ unsigned short d_reclen;
- /* Length of name without \0 */
- size_t d_namlen;
+ /* Length of name without \0 */
+ size_t d_namlen;
- /* File type */
- int d_type;
+ /* File type */
+ int d_type;
- /* File name */
- char d_name[PATH_MAX + 1];
- };
- typedef struct dirent dirent;
+ /* File name */
+ char d_name[PATH_MAX + 1];
+};
+typedef struct dirent dirent;
- struct DIR {
- struct dirent ent;
- struct _WDIR *wdirp;
- };
- typedef struct DIR DIR;
+struct DIR {
+ struct dirent ent;
+ struct _WDIR *wdirp;
+};
+typedef struct DIR DIR;
- /* Dirent functions */
- static DIR *opendir(const char *dirname);
- static _WDIR *_wopendir(const wchar_t *dirname);
+/* Dirent functions */
+static DIR *opendir(const char *dirname);
+static _WDIR *_wopendir(const wchar_t *dirname);
- static struct dirent *readdir(DIR *dirp);
- static struct _wdirent *_wreaddir(_WDIR *dirp);
+static struct dirent *readdir(DIR *dirp);
+static struct _wdirent *_wreaddir(_WDIR *dirp);
- static int readdir_r(
- DIR *dirp, struct dirent *entry, struct dirent **result);
- static int _wreaddir_r(
- _WDIR *dirp, struct _wdirent *entry, struct _wdirent **result);
+static int readdir_r(
+ DIR *dirp, struct dirent *entry, struct dirent **result);
+static int _wreaddir_r(
+ _WDIR *dirp, struct _wdirent *entry, struct _wdirent **result);
- static int closedir(DIR *dirp);
- static int _wclosedir(_WDIR *dirp);
+static int closedir(DIR *dirp);
+static int _wclosedir(_WDIR *dirp);
- static void rewinddir(DIR* dirp);
- static void _wrewinddir(_WDIR* dirp);
+static void rewinddir(DIR* dirp);
+static void _wrewinddir(_WDIR* dirp);
- static int scandir(const char *dirname, struct dirent ***namelist,
- int(*filter)(const struct dirent*),
- int(*compare)(const struct dirent**, const struct dirent**));
+static int scandir(const char *dirname, struct dirent ***namelist,
+ int(*filter)(const struct dirent*),
+ int(*compare)(const struct dirent**, const struct dirent**));
- static int alphasort(const struct dirent **a, const struct dirent **b);
+static int alphasort(const struct dirent **a, const struct dirent **b);
- static int versionsort(const struct dirent **a, const struct dirent **b);
+static int versionsort(const struct dirent **a, const struct dirent **b);
- /* For compatibility with Symbian */
+/* For compatibility with Symbian */
#define wdirent _wdirent
#define WDIR _WDIR
#define wopendir _wopendir
@@ -315,937 +314,907 @@ extern "C" {
/* Internal utility functions */
- static WIN32_FIND_DATAW *dirent_first(_WDIR *dirp);
- static WIN32_FIND_DATAW *dirent_next(_WDIR *dirp);
+static WIN32_FIND_DATAW *dirent_first(_WDIR *dirp);
+static WIN32_FIND_DATAW *dirent_next(_WDIR *dirp);
- static int dirent_mbstowcs_s(
- size_t *pReturnValue,
- wchar_t *wcstr,
- size_t sizeInWords,
- const char *mbstr,
- size_t count);
+static int dirent_mbstowcs_s(
+ size_t *pReturnValue,
+ wchar_t *wcstr,
+ size_t sizeInWords,
+ const char *mbstr,
+ size_t count);
- static int dirent_wcstombs_s(
- size_t *pReturnValue,
- char *mbstr,
- size_t sizeInBytes,
- const wchar_t *wcstr,
- size_t count);
+static int dirent_wcstombs_s(
+ size_t *pReturnValue,
+ char *mbstr,
+ size_t sizeInBytes,
+ const wchar_t *wcstr,
+ size_t count);
- static void dirent_set_errno(int error);
+static void dirent_set_errno(int error);
- /*
- * Open directory stream DIRNAME for read and return a pointer to the
- * internal working area that is used to retrieve individual directory
- * entries.
- */
- static _WDIR*
- _wopendir(
- const wchar_t *dirname)
- {
- _WDIR *dirp = NULL;
- int error;
+/*
+ * Open directory stream DIRNAME for read and return a pointer to the
+ * internal working area that is used to retrieve individual directory
+ * entries.
+ */
+static _WDIR*
+_wopendir(
+ const wchar_t *dirname)
+{
+ _WDIR *dirp = NULL;
+ int error;
+
+ /* Must have directory name */
+ if (dirname == NULL || dirname[0] == '\0') {
+ dirent_set_errno(ENOENT);
+ return NULL;
+ }
- /* Must have directory name */
- if (dirname == NULL || dirname[0] == '\0') {
- dirent_set_errno(ENOENT);
- return NULL;
- }
+ /* Allocate new _WDIR structure */
+ dirp = (_WDIR*)malloc(sizeof(struct _WDIR));
+ if (dirp != NULL) {
+ DWORD n;
- /* Allocate new _WDIR structure */
- dirp = (_WDIR*)malloc(sizeof(struct _WDIR));
- if (dirp != NULL) {
- DWORD n;
+ /* Reset _WDIR structure */
+ dirp->handle = INVALID_HANDLE_VALUE;
+ dirp->patt = NULL;
+ dirp->cached = 0;
- /* Reset _WDIR structure */
- dirp->handle = INVALID_HANDLE_VALUE;
- dirp->patt = NULL;
- dirp->cached = 0;
+ /* Compute the length of full path plus zero terminator
+ *
+ * Note that on WinRT there's no way to convert relative paths
+ * into absolute paths, so just assume it is an absolute path.
+ */
+# if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
+ n = wcslen(dirname);
+# else
+ n = GetFullPathNameW(dirname, 0, NULL, NULL);
+# endif
- /* Compute the length of full path plus zero terminator
+ /* Allocate room for absolute directory name and search pattern */
+ dirp->patt = (wchar_t*)malloc(sizeof(wchar_t) * n + 16);
+ if (dirp->patt) {
+
+ /*
+ * Convert relative directory name to an absolute one. This
+ * allows rewinddir() to function correctly even when current
+ * working directory is changed between opendir() and rewinddir().
*
* Note that on WinRT there's no way to convert relative paths
* into absolute paths, so just assume it is an absolute path.
*/
-# if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
- n = wcslen(dirname);
-# else
- n = GetFullPathNameW(dirname, 0, NULL, NULL);
-# endif
-
- /* Allocate room for absolute directory name and search pattern */
- dirp->patt = (wchar_t*)malloc(sizeof(wchar_t) * n + 16);
- if (dirp->patt) {
-
- /*
- * Convert relative directory name to an absolute one. This
- * allows rewinddir() to function correctly even when current
- * working directory is changed between opendir() and rewinddir().
- *
- * Note that on WinRT there's no way to convert relative paths
- * into absolute paths, so just assume it is an absolute path.
- */
# if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
- wcsncpy_s(dirp->patt, n + 1, dirname, n);
+ wcsncpy_s(dirp->patt, n + 1, dirname, n);
# else
- n = GetFullPathNameW(dirname, n, dirp->patt, NULL);
+ n = GetFullPathNameW(dirname, n, dirp->patt, NULL);
# endif
- if (n > 0) {
- wchar_t *p;
-
- /* Append search pattern \* to the directory name */
- p = dirp->patt + n;
- if (dirp->patt < p) {
- switch (p[-1]) {
- case '\\':
- case '/':
- case ':':
- /* Directory ends in path separator, e.g. c:\temp\ */
- /*NOP*/;
- break;
-
- default:
- /* Directory name doesn't end in path separator */
- *p++ = '\\';
- }
- }
- *p++ = '*';
- *p = '\0';
+ if (n > 0) {
+ wchar_t *p;
+
+ /* Append search pattern \* to the directory name */
+ p = dirp->patt + n;
+ if (dirp->patt < p) {
+ switch (p[-1]) {
+ case '\\':
+ case '/':
+ case ':':
+ /* Directory ends in path separator, e.g. c:\temp\ */
+ /*NOP*/;
+ break;
- /* Open directory stream and retrieve the first entry */
- if (dirent_first(dirp)) {
- /* Directory stream opened successfully */
- error = 0;
- }
- else {
- /* Cannot retrieve first entry */
- error = 1;
- dirent_set_errno(ENOENT);
+ default:
+ /* Directory name doesn't end in path separator */
+ *p++ = '\\';
}
-
}
- else {
- /* Cannot retrieve full path name */
- dirent_set_errno(ENOENT);
+ *p++ = '*';
+ *p = '\0';
+
+ /* Open directory stream and retrieve the first entry */
+ if (dirent_first(dirp)) {
+ /* Directory stream opened successfully */
+ error = 0;
+ } else {
+ /* Cannot retrieve first entry */
error = 1;
+ dirent_set_errno(ENOENT);
}
- }
- else {
- /* Cannot allocate memory for search pattern */
+ } else {
+ /* Cannot retrieve full path name */
+ dirent_set_errno(ENOENT);
error = 1;
}
- }
- else {
- /* Cannot allocate _WDIR structure */
+ } else {
+ /* Cannot allocate memory for search pattern */
error = 1;
}
- /* Clean up in case of error */
- if (error && dirp) {
- _wclosedir(dirp);
- dirp = NULL;
- }
+ } else {
+ /* Cannot allocate _WDIR structure */
+ error = 1;
+ }
- return dirp;
+ /* Clean up in case of error */
+ if (error && dirp) {
+ _wclosedir(dirp);
+ dirp = NULL;
}
+ return dirp;
+}
+
+/*
+ * Read next directory entry.
+ *
+ * Returns pointer to static directory entry which may be overwritten by
+ * subsequent calls to _wreaddir().
+ */
+static struct _wdirent*
+_wreaddir(
+ _WDIR *dirp)
+{
+ struct _wdirent *entry;
+
/*
- * Read next directory entry.
- *
- * Returns pointer to static directory entry which may be overwritten by
- * subsequent calls to _wreaddir().
+ * Read directory entry to buffer. We can safely ignore the return value
+ * as entry will be set to NULL in case of error.
*/
- static struct _wdirent*
- _wreaddir(
- _WDIR *dirp)
- {
- struct _wdirent *entry;
+ (void)_wreaddir_r(dirp, &dirp->ent, &entry);
+
+ /* Return pointer to statically allocated directory entry */
+ return entry;
+}
+
+/*
+ * Read next directory entry.
+ *
+ * Returns zero on success. If end of directory stream is reached, then sets
+ * result to NULL and returns zero.
+ */
+static int
+_wreaddir_r(
+ _WDIR *dirp,
+ struct _wdirent *entry,
+ struct _wdirent **result)
+{
+ WIN32_FIND_DATAW *datap;
+
+ /* Read next directory entry */
+ datap = dirent_next(dirp);
+ if (datap) {
+ size_t n;
+ DWORD attr;
/*
- * Read directory entry to buffer. We can safely ignore the return value
- * as entry will be set to NULL in case of error.
+ * Copy file name as wide-character string. If the file name is too
+ * long to fit in to the destination buffer, then truncate file name
+ * to PATH_MAX characters and zero-terminate the buffer.
*/
- (void)_wreaddir_r(dirp, &dirp->ent, &entry);
+ n = 0;
+ while (n < PATH_MAX && datap->cFileName[n] != 0) {
+ entry->d_name[n] = datap->cFileName[n];
+ n++;
+ }
+ entry->d_name[n] = 0;
- /* Return pointer to statically allocated directory entry */
- return entry;
- }
+ /* Length of file name excluding zero terminator */
+ entry->d_namlen = n;
- /*
- * Read next directory entry.
- *
- * Returns zero on success. If end of directory stream is reached, then sets
- * result to NULL and returns zero.
- */
- static int
- _wreaddir_r(
- _WDIR *dirp,
- struct _wdirent *entry,
- struct _wdirent **result)
- {
- WIN32_FIND_DATAW *datap;
-
- /* Read next directory entry */
- datap = dirent_next(dirp);
- if (datap) {
- size_t n;
- DWORD attr;
+ /* File type */
+ attr = datap->dwFileAttributes;
+ if ((attr & FILE_ATTRIBUTE_DEVICE) != 0) {
+ entry->d_type = DT_CHR;
+ } else if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0) {
+ entry->d_type = DT_DIR;
+ } else {
+ entry->d_type = DT_REG;
+ }
- /*
- * Copy file name as wide-character string. If the file name is too
- * long to fit in to the destination buffer, then truncate file name
- * to PATH_MAX characters and zero-terminate the buffer.
- */
- n = 0;
- while (n < PATH_MAX && datap->cFileName[n] != 0) {
- entry->d_name[n] = datap->cFileName[n];
- n++;
- }
- entry->d_name[n] = 0;
+ /* Reset dummy fields */
+ entry->d_ino = 0;
+ entry->d_off = 0;
+ entry->d_reclen = sizeof(struct _wdirent);
- /* Length of file name excluding zero terminator */
- entry->d_namlen = n;
+ /* Set result address */
+ *result = entry;
- /* File type */
- attr = datap->dwFileAttributes;
- if ((attr & FILE_ATTRIBUTE_DEVICE) != 0) {
- entry->d_type = DT_CHR;
- }
- else if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0) {
- entry->d_type = DT_DIR;
- }
- else {
- entry->d_type = DT_REG;
- }
+ } else {
- /* Reset dummy fields */
- entry->d_ino = 0;
- entry->d_off = 0;
- entry->d_reclen = sizeof(struct _wdirent);
+ /* Return NULL to indicate end of directory */
+ *result = NULL;
- /* Set result address */
- *result = entry;
+ }
- }
- else {
+ return /*OK*/0;
+}
- /* Return NULL to indicate end of directory */
- *result = NULL;
+/*
+ * Close directory stream opened by opendir() function. This invalidates the
+ * DIR structure as well as any directory entry read previously by
+ * _wreaddir().
+ */
+static int
+_wclosedir(
+ _WDIR *dirp)
+{
+ int ok;
+ if (dirp) {
+
+ /* Release search handle */
+ if (dirp->handle != INVALID_HANDLE_VALUE) {
+ FindClose(dirp->handle);
+ dirp->handle = INVALID_HANDLE_VALUE;
+ }
+ /* Release search pattern */
+ if (dirp->patt) {
+ free(dirp->patt);
+ dirp->patt = NULL;
}
- return /*OK*/0;
- }
+ /* Release directory structure */
+ free(dirp);
+ ok = /*success*/0;
- /*
- * Close directory stream opened by opendir() function. This invalidates the
- * DIR structure as well as any directory entry read previously by
- * _wreaddir().
- */
- static int
- _wclosedir(
- _WDIR *dirp)
- {
- int ok;
- if (dirp) {
-
- /* Release search handle */
- if (dirp->handle != INVALID_HANDLE_VALUE) {
- FindClose(dirp->handle);
- dirp->handle = INVALID_HANDLE_VALUE;
- }
+ } else {
- /* Release search pattern */
- if (dirp->patt) {
- free(dirp->patt);
- dirp->patt = NULL;
- }
+ /* Invalid directory stream */
+ dirent_set_errno(EBADF);
+ ok = /*failure*/-1;
- /* Release directory structure */
- free(dirp);
- ok = /*success*/0;
+ }
+ return ok;
+}
+/*
+ * Rewind directory stream such that _wreaddir() returns the very first
+ * file name again.
+ */
+static void
+_wrewinddir(
+ _WDIR* dirp)
+{
+ if (dirp) {
+ /* Release existing search handle */
+ if (dirp->handle != INVALID_HANDLE_VALUE) {
+ FindClose(dirp->handle);
}
- else {
-
- /* Invalid directory stream */
- dirent_set_errno(EBADF);
- ok = /*failure*/-1;
- }
- return ok;
+ /* Open new search handle */
+ dirent_first(dirp);
}
+}
- /*
- * Rewind directory stream such that _wreaddir() returns the very first
- * file name again.
- */
- static void
- _wrewinddir(
- _WDIR* dirp)
- {
- if (dirp) {
- /* Release existing search handle */
- if (dirp->handle != INVALID_HANDLE_VALUE) {
- FindClose(dirp->handle);
- }
-
- /* Open new search handle */
- dirent_first(dirp);
- }
- }
+/* Get first directory entry (internal) */
+static WIN32_FIND_DATAW*
+dirent_first(
+ _WDIR *dirp)
+{
+ WIN32_FIND_DATAW *datap;
- /* Get first directory entry (internal) */
- static WIN32_FIND_DATAW*
- dirent_first(
- _WDIR *dirp)
- {
- WIN32_FIND_DATAW *datap;
-
- /* Open directory and retrieve the first entry */
- dirp->handle = FindFirstFileExW(
- dirp->patt, FindExInfoStandard, &dirp->data,
- FindExSearchNameMatch, NULL, 0);
- if (dirp->handle != INVALID_HANDLE_VALUE) {
+ /* Open directory and retrieve the first entry */
+ dirp->handle = FindFirstFileExW(
+ dirp->patt, FindExInfoStandard, &dirp->data,
+ FindExSearchNameMatch, NULL, 0);
+ if (dirp->handle != INVALID_HANDLE_VALUE) {
- /* a directory entry is now waiting in memory */
- datap = &dirp->data;
- dirp->cached = 1;
+ /* a directory entry is now waiting in memory */
+ datap = &dirp->data;
+ dirp->cached = 1;
- }
- else {
+ } else {
- /* Failed to re-open directory: no directory entry in memory */
- dirp->cached = 0;
- datap = NULL;
+ /* Failed to re-open directory: no directory entry in memory */
+ dirp->cached = 0;
+ datap = NULL;
- }
- return datap;
}
+ return datap;
+}
- /*
- * Get next directory entry (internal).
- *
- * Returns
- */
- static WIN32_FIND_DATAW*
- dirent_next(
- _WDIR *dirp)
- {
- WIN32_FIND_DATAW *p;
-
- /* Get next directory entry */
- if (dirp->cached != 0) {
+/*
+ * Get next directory entry (internal).
+ *
+ * Returns
+ */
+static WIN32_FIND_DATAW*
+dirent_next(
+ _WDIR *dirp)
+{
+ WIN32_FIND_DATAW *p;
- /* A valid directory entry already in memory */
- p = &dirp->data;
- dirp->cached = 0;
+ /* Get next directory entry */
+ if (dirp->cached != 0) {
- }
- else if (dirp->handle != INVALID_HANDLE_VALUE) {
+ /* A valid directory entry already in memory */
+ p = &dirp->data;
+ dirp->cached = 0;
- /* Get the next directory entry from stream */
- if (FindNextFileW(dirp->handle, &dirp->data) != FALSE) {
- /* Got a file */
- p = &dirp->data;
- }
- else {
- /* The very last entry has been processed or an error occurred */
- FindClose(dirp->handle);
- dirp->handle = INVALID_HANDLE_VALUE;
- p = NULL;
- }
+ } else if (dirp->handle != INVALID_HANDLE_VALUE) {
+ /* Get the next directory entry from stream */
+ if (FindNextFileW(dirp->handle, &dirp->data) != FALSE) {
+ /* Got a file */
+ p = &dirp->data;
+ } else {
+ /* The very last entry has been processed or an error occurred */
+ FindClose(dirp->handle);
+ dirp->handle = INVALID_HANDLE_VALUE;
+ p = NULL;
}
- else {
- /* End of directory stream reached */
- p = NULL;
+ } else {
- }
+ /* End of directory stream reached */
+ p = NULL;
- return p;
}
- /*
- * Open directory stream using plain old C-string.
- */
- static DIR*
- opendir(
- const char *dirname)
- {
- struct DIR *dirp;
- int error;
-
- /* Must have directory name */
- if (dirname == NULL || dirname[0] == '\0') {
- dirent_set_errno(ENOENT);
- return NULL;
- }
+ return p;
+}
- /* Allocate memory for DIR structure */
- dirp = (DIR*)malloc(sizeof(struct DIR));
- if (dirp) {
- wchar_t wname[PATH_MAX + 1];
- size_t n;
-
- /* Convert directory name to wide-character string */
- error = dirent_mbstowcs_s(
- &n, wname, PATH_MAX + 1, dirname, PATH_MAX + 1);
- if (!error) {
-
- /* Open directory stream using wide-character name */
- dirp->wdirp = _wopendir(wname);
- if (dirp->wdirp) {
- /* Directory stream opened */
- error = 0;
- }
- else {
- /* Failed to open directory stream */
- error = 1;
- }
+/*
+ * Open directory stream using plain old C-string.
+ */
+static DIR*
+opendir(
+ const char *dirname)
+{
+ struct DIR *dirp;
+ int error;
+
+ /* Must have directory name */
+ if (dirname == NULL || dirname[0] == '\0') {
+ dirent_set_errno(ENOENT);
+ return NULL;
+ }
- }
- else {
- /*
- * Cannot convert file name to wide-character string. This
- * occurs if the string contains invalid multi-byte sequences or
- * the output buffer is too small to contain the resulting
- * string.
- */
+ /* Allocate memory for DIR structure */
+ dirp = (DIR*)malloc(sizeof(struct DIR));
+ if (dirp) {
+ wchar_t wname[PATH_MAX + 1];
+ size_t n;
+
+ /* Convert directory name to wide-character string */
+ error = dirent_mbstowcs_s(
+ &n, wname, PATH_MAX + 1, dirname, PATH_MAX + 1);
+ if (!error) {
+
+ /* Open directory stream using wide-character name */
+ dirp->wdirp = _wopendir(wname);
+ if (dirp->wdirp) {
+ /* Directory stream opened */
+ error = 0;
+ } else {
+ /* Failed to open directory stream */
error = 1;
}
- }
- else {
- /* Cannot allocate DIR structure */
+ } else {
+ /*
+ * Cannot convert file name to wide-character string. This
+ * occurs if the string contains invalid multi-byte sequences or
+ * the output buffer is too small to contain the resulting
+ * string.
+ */
error = 1;
}
- /* Clean up in case of error */
- if (error && dirp) {
- free(dirp);
- dirp = NULL;
- }
-
- return dirp;
+ } else {
+ /* Cannot allocate DIR structure */
+ error = 1;
}
- /*
- * Read next directory entry.
- */
- static struct dirent*
- readdir(
- DIR *dirp)
- {
- struct dirent *entry;
+ /* Clean up in case of error */
+ if (error && dirp) {
+ free(dirp);
+ dirp = NULL;
+ }
- /*
- * Read directory entry to buffer. We can safely ignore the return value
- * as entry will be set to NULL in case of error.
- */
- (void)readdir_r(dirp, &dirp->ent, &entry);
+ return dirp;
+}
- /* Return pointer to statically allocated directory entry */
- return entry;
- }
+/*
+ * Read next directory entry.
+ */
+static struct dirent*
+readdir(
+ DIR *dirp)
+{
+ struct dirent *entry;
/*
- * Read next directory entry into called-allocated buffer.
- *
- * Returns zero on success. If the end of directory stream is reached, then
- * sets result to NULL and returns zero.
+ * Read directory entry to buffer. We can safely ignore the return value
+ * as entry will be set to NULL in case of error.
*/
- static int
- readdir_r(
- DIR *dirp,
- struct dirent *entry,
- struct dirent **result)
- {
- WIN32_FIND_DATAW *datap;
-
- /* Read next directory entry */
- datap = dirent_next(dirp->wdirp);
- if (datap) {
- size_t n;
- int error;
-
- /* Attempt to convert file name to multi-byte string */
- error = dirent_wcstombs_s(
- &n, entry->d_name, PATH_MAX + 1, datap->cFileName, PATH_MAX + 1);
+ (void)readdir_r(dirp, &dirp->ent, &entry);
- /*
- * If the file name cannot be represented by a multi-byte string,
- * then attempt to use old 8+3 file name. This allows traditional
- * Unix-code to access some file names despite of unicode
- * characters, although file names may seem unfamiliar to the user.
- *
- * Be ware that the code below cannot come up with a short file
- * name unless the file system provides one. At least
- * VirtualBox shared folders fail to do this.
- */
- if (error && datap->cAlternateFileName[0] != '\0') {
- error = dirent_wcstombs_s(
- &n, entry->d_name, PATH_MAX + 1,
- datap->cAlternateFileName, PATH_MAX + 1);
- }
+ /* Return pointer to statically allocated directory entry */
+ return entry;
+}
- if (!error) {
- DWORD attr;
+/*
+ * Read next directory entry into called-allocated buffer.
+ *
+ * Returns zero on success. If the end of directory stream is reached, then
+ * sets result to NULL and returns zero.
+ */
+static int
+readdir_r(
+ DIR *dirp,
+ struct dirent *entry,
+ struct dirent **result)
+{
+ WIN32_FIND_DATAW *datap;
+
+ /* Read next directory entry */
+ datap = dirent_next(dirp->wdirp);
+ if (datap) {
+ size_t n;
+ int error;
- /* Length of file name excluding zero terminator */
- entry->d_namlen = n - 1;
+ /* Attempt to convert file name to multi-byte string */
+ error = dirent_wcstombs_s(
+ &n, entry->d_name, PATH_MAX + 1, datap->cFileName, PATH_MAX + 1);
- /* File attributes */
- attr = datap->dwFileAttributes;
- if ((attr & FILE_ATTRIBUTE_DEVICE) != 0) {
- entry->d_type = DT_CHR;
- }
- else if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0) {
- entry->d_type = DT_DIR;
- }
- else {
- entry->d_type = DT_REG;
- }
+ /*
+ * If the file name cannot be represented by a multi-byte string,
+ * then attempt to use old 8+3 file name. This allows traditional
+ * Unix-code to access some file names despite of unicode
+ * characters, although file names may seem unfamiliar to the user.
+ *
+ * Be ware that the code below cannot come up with a short file
+ * name unless the file system provides one. At least
+ * VirtualBox shared folders fail to do this.
+ */
+ if (error && datap->cAlternateFileName[0] != '\0') {
+ error = dirent_wcstombs_s(
+ &n, entry->d_name, PATH_MAX + 1,
+ datap->cAlternateFileName, PATH_MAX + 1);
+ }
- /* Reset dummy fields */
- entry->d_ino = 0;
- entry->d_off = 0;
- entry->d_reclen = sizeof(struct dirent);
+ if (!error) {
+ DWORD attr;
- }
- else {
-
- /*
- * Cannot convert file name to multi-byte string so construct
- * an erroneous directory entry and return that. Note that
- * we cannot return NULL as that would stop the processing
- * of directory entries completely.
- */
- entry->d_name[0] = '?';
- entry->d_name[1] = '\0';
- entry->d_namlen = 1;
- entry->d_type = DT_UNKNOWN;
- entry->d_ino = 0;
- entry->d_off = -1;
- entry->d_reclen = 0;
+ /* Length of file name excluding zero terminator */
+ entry->d_namlen = n - 1;
+ /* File attributes */
+ attr = datap->dwFileAttributes;
+ if ((attr & FILE_ATTRIBUTE_DEVICE) != 0) {
+ entry->d_type = DT_CHR;
+ } else if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0) {
+ entry->d_type = DT_DIR;
+ } else {
+ entry->d_type = DT_REG;
}
- /* Return pointer to directory entry */
- *result = entry;
+ /* Reset dummy fields */
+ entry->d_ino = 0;
+ entry->d_off = 0;
+ entry->d_reclen = sizeof(struct dirent);
- }
- else {
+ } else {
- /* No more directory entries */
- *result = NULL;
+ /*
+ * Cannot convert file name to multi-byte string so construct
+ * an erroneous directory entry and return that. Note that
+ * we cannot return NULL as that would stop the processing
+ * of directory entries completely.
+ */
+ entry->d_name[0] = '?';
+ entry->d_name[1] = '\0';
+ entry->d_namlen = 1;
+ entry->d_type = DT_UNKNOWN;
+ entry->d_ino = 0;
+ entry->d_off = -1;
+ entry->d_reclen = 0;
}
- return /*OK*/0;
+ /* Return pointer to directory entry */
+ *result = entry;
+
+ } else {
+
+ /* No more directory entries */
+ *result = NULL;
+
}
- /*
- * Close directory stream.
- */
- static int
- closedir(
- DIR *dirp)
- {
- int ok;
- if (dirp) {
+ return /*OK*/0;
+}
- /* Close wide-character directory stream */
- ok = _wclosedir(dirp->wdirp);
- dirp->wdirp = NULL;
+/*
+ * Close directory stream.
+ */
+static int
+closedir(
+ DIR *dirp)
+{
+ int ok;
+ if (dirp) {
- /* Release multi-byte character version */
- free(dirp);
+ /* Close wide-character directory stream */
+ ok = _wclosedir(dirp->wdirp);
+ dirp->wdirp = NULL;
- }
- else {
+ /* Release multi-byte character version */
+ free(dirp);
- /* Invalid directory stream */
- dirent_set_errno(EBADF);
- ok = /*failure*/-1;
+ } else {
- }
- return ok;
- }
+ /* Invalid directory stream */
+ dirent_set_errno(EBADF);
+ ok = /*failure*/-1;
- /*
- * Rewind directory stream to beginning.
- */
- static void
- rewinddir(
- DIR* dirp)
- {
- /* Rewind wide-character string directory stream */
- _wrewinddir(dirp->wdirp);
}
+ return ok;
+}
- /*
- * Scan directory for entries.
- */
- static int
- scandir(
- const char *dirname,
- struct dirent ***namelist,
- int(*filter)(const struct dirent*),
- int(*compare)(const struct dirent**, const struct dirent**))
- {
- struct dirent **files = NULL;
- size_t size = 0;
- size_t allocated = 0;
- const size_t init_size = 1;
- DIR *dir = NULL;
- struct dirent *entry;
- struct dirent *tmp = NULL;
- size_t i;
- int result = 0;
-
- /* Open directory stream */
- dir = opendir(dirname);
- if (dir) {
-
- /* Read directory entries to memory */
- while (1) {
-
- /* Enlarge pointer table to make room for another pointer */
- if (size >= allocated) {
- void *p;
- size_t num_entries;
-
- /* Compute number of entries in the enlarged pointer table */
- if (size < init_size) {
- /* Allocate initial pointer table */
- num_entries = init_size;
- }
- else {
- /* Double the size */
- num_entries = size * 2;
- }
+/*
+ * Rewind directory stream to beginning.
+ */
+static void
+rewinddir(
+ DIR* dirp)
+{
+ /* Rewind wide-character string directory stream */
+ _wrewinddir(dirp->wdirp);
+}
- /* Allocate first pointer table or enlarge existing table */
- p = realloc(files, sizeof(void*) * num_entries);
- if (p != NULL) {
- /* Got the memory */
- files = (dirent**)p;
- allocated = num_entries;
- }
- else {
- /* Out of memory */
- result = -1;
- break;
- }
+/*
+ * Scan directory for entries.
+ */
+static int
+scandir(
+ const char *dirname,
+ struct dirent ***namelist,
+ int(*filter)(const struct dirent*),
+ int(*compare)(const struct dirent**, const struct dirent**))
+{
+ struct dirent **files = NULL;
+ size_t size = 0;
+ size_t allocated = 0;
+ const size_t init_size = 1;
+ DIR *dir = NULL;
+ struct dirent *entry;
+ struct dirent *tmp = NULL;
+ size_t i;
+ int result = 0;
+
+ /* Open directory stream */
+ dir = opendir(dirname);
+ if (dir) {
+
+ /* Read directory entries to memory */
+ while (1) {
+
+ /* Enlarge pointer table to make room for another pointer */
+ if (size >= allocated) {
+ void *p;
+ size_t num_entries;
+
+ /* Compute number of entries in the enlarged pointer table */
+ if (size < init_size) {
+ /* Allocate initial pointer table */
+ num_entries = init_size;
+ } else {
+ /* Double the size */
+ num_entries = size * 2;
+ }
+ /* Allocate first pointer table or enlarge existing table */
+ p = realloc(files, sizeof(void*) * num_entries);
+ if (p != NULL) {
+ /* Got the memory */
+ files = (dirent**)p;
+ allocated = num_entries;
+ } else {
+ /* Out of memory */
+ result = -1;
+ break;
}
- /* Allocate room for temporary directory entry */
+ }
+
+ /* Allocate room for temporary directory entry */
+ if (tmp == NULL) {
+ tmp = (struct dirent*) malloc(sizeof(struct dirent));
if (tmp == NULL) {
- tmp = (struct dirent*) malloc(sizeof(struct dirent));
- if (tmp == NULL) {
- /* Cannot allocate temporary directory entry */
- result = -1;
- break;
- }
+ /* Cannot allocate temporary directory entry */
+ result = -1;
+ break;
}
+ }
- /* Read directory entry to temporary area */
- if (readdir_r(dir, tmp, &entry) == /*OK*/0) {
-
- /* Did we get an entry? */
- if (entry != NULL) {
- int pass;
+ /* Read directory entry to temporary area */
+ if (readdir_r(dir, tmp, &entry) == /*OK*/0) {
- /* Determine whether to include the entry in result */
- if (filter) {
- /* Let the filter function decide */
- pass = filter(tmp);
- }
- else {
- /* No filter function, include everything */
- pass = 1;
- }
+ /* Did we get an entry? */
+ if (entry != NULL) {
+ int pass;
- if (pass) {
- /* Store the temporary entry to pointer table */
- files[size++] = tmp;
- tmp = NULL;
+ /* Determine whether to include the entry in result */
+ if (filter) {
+ /* Let the filter function decide */
+ pass = filter(tmp);
+ } else {
+ /* No filter function, include everything */
+ pass = 1;
+ }
- /* Keep up with the number of files */
- result++;
- }
+ if (pass) {
+ /* Store the temporary entry to pointer table */
+ files[size++] = tmp;
+ tmp = NULL;
+ /* Keep up with the number of files */
+ result++;
}
- else {
-
- /*
- * End of directory stream reached => sort entries and
- * exit.
- */
- qsort(files, size, sizeof(void*),
- (int(*) (const void*, const void*)) compare);
- break;
- }
+ } else {
- }
- else {
- /* Error reading directory entry */
- result = /*Error*/ -1;
+ /*
+ * End of directory stream reached => sort entries and
+ * exit.
+ */
+ qsort(files, size, sizeof(void*),
+ (int(*) (const void*, const void*)) compare);
break;
+
}
+ } else {
+ /* Error reading directory entry */
+ result = /*Error*/ -1;
+ break;
}
}
- else {
- /* Cannot open directory */
- result = /*Error*/ -1;
- }
- /* Release temporary directory entry */
- if (tmp) {
- free(tmp);
- }
-
- /* Release allocated memory on error */
- if (result < 0) {
- for (i = 0; i < size; i++) {
- free(files[i]);
- }
- free(files);
- files = NULL;
- }
+ } else {
+ /* Cannot open directory */
+ result = /*Error*/ -1;
+ }
- /* Close directory stream */
- if (dir) {
- closedir(dir);
- }
+ /* Release temporary directory entry */
+ if (tmp) {
+ free(tmp);
+ }
- /* Pass pointer table to caller */
- if (namelist) {
- *namelist = files;
+ /* Release allocated memory on error */
+ if (result < 0) {
+ for (i = 0; i < size; i++) {
+ free(files[i]);
}
- return result;
+ free(files);
+ files = NULL;
}
- /* Alphabetical sorting */
- static int
- alphasort(
- const struct dirent **a, const struct dirent **b)
- {
- return strcoll((*a)->d_name, (*b)->d_name);
+ /* Close directory stream */
+ if (dir) {
+ closedir(dir);
}
- /* Sort versions */
- static int
- versionsort(
- const struct dirent **a, const struct dirent **b)
- {
- /* FIXME: implement strverscmp and use that */
- return alphasort(a, b);
+ /* Pass pointer table to caller */
+ if (namelist) {
+ *namelist = files;
}
+ return result;
+}
- /* Convert multi-byte string to wide character string */
- static int
- dirent_mbstowcs_s(
- size_t *pReturnValue,
- wchar_t *wcstr,
- size_t sizeInWords,
- const char *mbstr,
- size_t count)
- {
- int error;
- int n;
- size_t len;
- UINT cp;
- DWORD flags;
-
- /* Determine code page for multi-byte string */
- if (AreFileApisANSI()) {
- /* Default ANSI code page */
- cp = GetACP();
- }
- else {
- /* Default OEM code page */
- cp = GetOEMCP();
- }
+/* Alphabetical sorting */
+static int
+alphasort(
+ const struct dirent **a, const struct dirent **b)
+{
+ return strcoll((*a)->d_name, (*b)->d_name);
+}
+
+/* Sort versions */
+static int
+versionsort(
+ const struct dirent **a, const struct dirent **b)
+{
+ /* FIXME: implement strverscmp and use that */
+ return alphasort(a, b);
+}
+
+/* Convert multi-byte string to wide character string */
+static int
+dirent_mbstowcs_s(
+ size_t *pReturnValue,
+ wchar_t *wcstr,
+ size_t sizeInWords,
+ const char *mbstr,
+ size_t count)
+{
+ int error;
+ int n;
+ size_t len;
+ UINT cp;
+ DWORD flags;
+
+ /* Determine code page for multi-byte string */
+ if (AreFileApisANSI()) {
+ /* Default ANSI code page */
+ cp = GetACP();
+ } else {
+ /* Default OEM code page */
+ cp = GetOEMCP();
+ }
+ /*
+ * Determine flags based on the character set. For more information,
+ * please see https://docs.microsoft.com/fi-fi/windows/desktop/api/stringapiset/nf-stringapiset-multibytetowidechar
+ */
+ switch (cp) {
+ case 42:
+ case 50220:
+ case 50221:
+ case 50222:
+ case 50225:
+ case 50227:
+ case 50229:
+ case 57002:
+ case 57003:
+ case 57004:
+ case 57005:
+ case 57006:
+ case 57007:
+ case 57008:
+ case 57009:
+ case 57010:
+ case 57011:
+ case 65000:
+ /* MultiByteToWideChar does not support MB_ERR_INVALID_CHARS */
+ flags = 0;
+ break;
+
+ default:
/*
- * Determine flags based on the character set. For more information,
- * please see https://docs.microsoft.com/fi-fi/windows/desktop/api/stringapiset/nf-stringapiset-multibytetowidechar
+ * Ask MultiByteToWideChar to return an error if a multi-byte
+ * character cannot be converted to a wide-character.
*/
- switch (cp) {
- case 42:
- case 50220:
- case 50221:
- case 50222:
- case 50225:
- case 50227:
- case 50229:
- case 57002:
- case 57003:
- case 57004:
- case 57005:
- case 57006:
- case 57007:
- case 57008:
- case 57009:
- case 57010:
- case 57011:
- case 65000:
- /* MultiByteToWideChar does not support MB_ERR_INVALID_CHARS */
- flags = 0;
- break;
-
- default:
- /*
- * Ask MultiByteToWideChar to return an error if a multi-byte
- * character cannot be converted to a wide-character.
- */
- flags = MB_ERR_INVALID_CHARS;
- }
+ flags = MB_ERR_INVALID_CHARS;
+ }
- /* Compute the length of input string without zero-terminator */
- len = 0;
- while (mbstr[len] != '\0' && len < count) {
- len++;
- }
+ /* Compute the length of input string without zero-terminator */
+ len = 0;
+ while (mbstr[len] != '\0' && len < count) {
+ len++;
+ }
- /* Convert to wide-character string */
- n = MultiByteToWideChar(
- /* Source code page */ cp,
- /* Flags */ flags,
- /* Pointer to string to convert */ mbstr,
- /* Size of multi-byte string */ (int)len,
- /* Pointer to output buffer */ wcstr,
- /* Size of output buffer */ (int)sizeInWords - 1
- );
-
- /* Ensure that output buffer is zero-terminated */
- wcstr[n] = '\0';
-
- /* Return length of wide-character string with zero-terminator */
- *pReturnValue = (size_t)(n + 1);
-
- /* Return zero if conversion succeeded */
- if (n > 0) {
- error = 0;
- }
- else {
- error = 1;
- }
- return error;
+ /* Convert to wide-character string */
+ n = MultiByteToWideChar(
+ /* Source code page */ cp,
+ /* Flags */ flags,
+ /* Pointer to string to convert */ mbstr,
+ /* Size of multi-byte string */ (int)len,
+ /* Pointer to output buffer */ wcstr,
+ /* Size of output buffer */ (int)sizeInWords - 1
+ );
+
+ /* Ensure that output buffer is zero-terminated */
+ wcstr[n] = '\0';
+
+ /* Return length of wide-character string with zero-terminator */
+ *pReturnValue = (size_t)(n + 1);
+
+ /* Return zero if conversion succeeded */
+ if (n > 0) {
+ error = 0;
+ } else {
+ error = 1;
}
+ return error;
+}
- /* Convert wide-character string to multi-byte string */
- static int
- dirent_wcstombs_s(
- size_t *pReturnValue,
- char *mbstr,
- size_t sizeInBytes, /* max size of mbstr */
- const wchar_t *wcstr,
- size_t count)
- {
- int n;
- int error;
- UINT cp;
- size_t len;
- BOOL flag = 0;
- LPBOOL pflag;
-
- /* Determine code page for multi-byte string */
- if (AreFileApisANSI()) {
- /* Default ANSI code page */
- cp = GetACP();
- }
- else {
- /* Default OEM code page */
- cp = GetOEMCP();
- }
+/* Convert wide-character string to multi-byte string */
+static int
+dirent_wcstombs_s(
+ size_t *pReturnValue,
+ char *mbstr,
+ size_t sizeInBytes, /* max size of mbstr */
+ const wchar_t *wcstr,
+ size_t count)
+{
+ int n;
+ int error;
+ UINT cp;
+ size_t len;
+ BOOL flag = 0;
+ LPBOOL pflag;
+
+ /* Determine code page for multi-byte string */
+ if (AreFileApisANSI()) {
+ /* Default ANSI code page */
+ cp = GetACP();
+ } else {
+ /* Default OEM code page */
+ cp = GetOEMCP();
+ }
- /* Compute the length of input string without zero-terminator */
- len = 0;
- while (wcstr[len] != '\0' && len < count) {
- len++;
- }
+ /* Compute the length of input string without zero-terminator */
+ len = 0;
+ while (wcstr[len] != '\0' && len < count) {
+ len++;
+ }
+ /*
+ * Determine if we can ask WideCharToMultiByte to return information on
+ * broken characters. For more information, please see
+ * https://docs.microsoft.com/en-us/windows/desktop/api/stringapiset/nf-stringapiset-widechartomultibyte
+ */
+ switch (cp) {
+ case CP_UTF7:
+ case CP_UTF8:
/*
- * Determine if we can ask WideCharToMultiByte to return information on
- * broken characters. For more information, please see
- * https://docs.microsoft.com/en-us/windows/desktop/api/stringapiset/nf-stringapiset-widechartomultibyte
+ * WideCharToMultiByte fails if we request information on default
+ * characters. This is just a nuisance but doesn't affect the
+ * conversion: if Windows is configured to use UTF-8, then the default
+ * character should not be needed anyway.
*/
- switch (cp) {
- case CP_UTF7:
- case CP_UTF8:
- /*
- * WideCharToMultiByte fails if we request information on default
- * characters. This is just a nuisance but doesn't affect the
- * conversion: if Windows is configured to use UTF-8, then the default
- * character should not be needed anyway.
- */
- pflag = NULL;
- break;
+ pflag = NULL;
+ break;
- default:
- /*
- * Request that WideCharToMultiByte sets the flag if it uses the
- * default character.
- */
- pflag = &flag;
- }
+ default:
+ /*
+ * Request that WideCharToMultiByte sets the flag if it uses the
+ * default character.
+ */
+ pflag = &flag;
+ }
- /* Convert wide-character string to multi-byte character string */
- n = WideCharToMultiByte(
- /* Target code page */ cp,
- /* Flags */ 0,
- /* Pointer to unicode string */ wcstr,
- /* Length of unicode string */ (int)len,
- /* Pointer to output buffer */ mbstr,
- /* Size of output buffer */ (int)sizeInBytes - 1,
- /* Default character */ NULL,
- /* Whether default character was used or not */ pflag
- );
-
- /* Ensure that output buffer is zero-terminated */
- mbstr[n] = '\0';
-
- /* Return length of multi-byte string with zero-terminator */
- *pReturnValue = (size_t)(n + 1);
-
- /* Return zero if conversion succeeded without using default characters */
- if (n > 0 && flag == 0) {
- error = 0;
- }
- else {
- error = 1;
- }
- return error;
+ /* Convert wide-character string to multi-byte character string */
+ n = WideCharToMultiByte(
+ /* Target code page */ cp,
+ /* Flags */ 0,
+ /* Pointer to unicode string */ wcstr,
+ /* Length of unicode string */ (int)len,
+ /* Pointer to output buffer */ mbstr,
+ /* Size of output buffer */ (int)sizeInBytes - 1,
+ /* Default character */ NULL,
+ /* Whether default character was used or not */ pflag
+ );
+
+ /* Ensure that output buffer is zero-terminated */
+ mbstr[n] = '\0';
+
+ /* Return length of multi-byte string with zero-terminator */
+ *pReturnValue = (size_t)(n + 1);
+
+ /* Return zero if conversion succeeded without using default characters */
+ if (n > 0 && flag == 0) {
+ error = 0;
+ } else {
+ error = 1;
}
+ return error;
+}
- /* Set errno variable */
- static void
- dirent_set_errno(
- int error)
- {
+/* Set errno variable */
+static void
+dirent_set_errno(
+ int error)
+{
#if defined(_MSC_VER) && _MSC_VER >= 1400
- /* Microsoft Visual Studio 2005 and later */
- _set_errno(error);
+ /* Microsoft Visual Studio 2005 and later */
+ _set_errno(error);
#else
- /* Non-Microsoft compiler or older Microsoft compiler */
- errno = error;
+ /* Non-Microsoft compiler or older Microsoft compiler */
+ errno = error;
#endif
- }
+}
#ifdef __cplusplus
diff --git a/app/bin/include/levenshtein.h b/app/bin/include/levenshtein.h
index b3e0111..1ea6c36 100644
--- a/app/bin/include/levenshtein.h
+++ b/app/bin/include/levenshtein.h
@@ -15,7 +15,8 @@ size_t
levenshtein(const char *a, const char *b);
size_t
-levenshtein_n (const char *a, const size_t length, const char *b, const size_t bLength);
+levenshtein_n (const char *a, const size_t length, const char *b,
+ const size_t bLength);
#ifdef __cplusplus
}
diff --git a/app/bin/include/paramfile.h b/app/bin/include/paramfile.h
index 97f635a..8ae7f59 100644
--- a/app/bin/include/paramfile.h
+++ b/app/bin/include/paramfile.h
@@ -1,35 +1,35 @@
#ifndef HAVE_PARAMFILE_H
- #define HAVE_PARAMFILE_H
- #include <stdbool.h>
- #include <wlib.h>
- #include "common.h"
+#define HAVE_PARAMFILE_H
+#include <stdbool.h>
+#include <wlib.h>
+#include "common.h"
- extern DIST_T curBarScale;
- extern dynArr_t paramProc_da;
- extern dynArr_t paramFileInfo_da;
+extern DIST_T curBarScale;
+extern dynArr_t paramProc_da;
+extern dynArr_t paramFileInfo_da;
- void ParamCheckSumLine(char * line);
- wBool_t IsParamValid(int fileInx);
- bool IsParamFileDeleted(int fileInx);
- bool IsParamFileFavorite(int fileInx);
- void SetParamFileState(int index);
- int ReadParamFile(const char *fileName);
- int ReloadDeletedParamFile(int fileindex);
- void SetParamFileDeleted(int fileInx, bool deleted);
- void SetParamFileFavorite(int fileInx, bool favorite);
- char * GetParamFileName(int fileInx);
- char * GetParamFileContents(int fileInx);
- bool ReadParams(long key, const char * dirName, const char * fileName);
+void ParamCheckSumLine(char * line);
+wBool_t IsParamValid(int fileInx);
+bool IsParamFileDeleted(int fileInx);
+bool IsParamFileFavorite(int fileInx);
+void SetParamFileState(int index);
+int ReadParamFile(const char *fileName);
+int ReloadDeletedParamFile(int fileindex);
+void SetParamFileDeleted(int fileInx, bool deleted);
+void SetParamFileFavorite(int fileInx, bool favorite);
+char * GetParamFileName(int fileInx);
+char * GetParamFileContents(int fileInx);
+bool ReadParams(long key, const char * dirName, const char * fileName);
- #define CONTENTSCOMMAND "CONTENTS"
- char *GetParameterFileContent(char *file);
+#define CONTENTSCOMMAND "CONTENTS"
+char *GetParameterFileContent(char *file);
- #define TURNOUTCOMMAND "TURNOUT"
- #define STRUCTURECOMMAND "STRUCTURE"
- #define CARCOMMAND "CARPART"
- #define CARPROTOCOMMAND "CARPROTO"
+#define TURNOUTCOMMAND "TURNOUT"
+#define STRUCTURECOMMAND "STRUCTURE"
+#define CARCOMMAND "CARPART"
+#define CARPROTOCOMMAND "CARPROTO"
- char * GetParameterFileScale(char *file);
+char * GetParameterFileScale(char *file);
#endif // !HAVE_PARAMFILE_H
diff --git a/app/bin/include/paramfilelist.h b/app/bin/include/paramfilelist.h
index 0ad7523..2893292 100644
--- a/app/bin/include/paramfilelist.h
+++ b/app/bin/include/paramfilelist.h
@@ -1,37 +1,37 @@
#ifndef HAVE_PARAMFILELIST_H
- #define HAVE_PARAMFILELIST_H
- #include <stdbool.h>
- #include "include/paramfile.h"
+#define HAVE_PARAMFILELIST_H
+#include <stdbool.h>
+#include "include/paramfile.h"
- typedef struct {
- char * name; /** < name of parameter file */
- char * contents;
- int deleted;
- int deletedShadow;
- int valid; /** < FALSE for dropped file */
- bool favorite;
- enum paramFileState trackState;
- enum paramFileState structureState;
- } paramFileInfo_t;
- typedef paramFileInfo_t * paramFileInfo_p;
+typedef struct {
+ char * name; /** < name of parameter file */
+ char * contents;
+ int deleted;
+ int deletedShadow;
+ int valid; /** < FALSE for dropped file */
+ bool favorite;
+ enum paramFileState trackState;
+ enum paramFileState structureState;
+} paramFileInfo_t;
+typedef paramFileInfo_t * paramFileInfo_p;
- #define paramFileInfo(N) DYNARR_N( paramFileInfo_t, paramFileInfo_da, N )
-
- char *GetParamFileDir(void);
- void SetParamFileDir(char *fullPath);
- void LoadParamFileList(void);
- //BOOL_T ReadDefaultParams(const char * dirName);
- void SaveParamFileList(void);
- int GetParamFileCount();
- void UpdateParamFileList(void);
- void ParamFilesChange(long changes);
- int LoadParamFile(int files, char ** fileName, void * data);
+#define paramFileInfo(N) DYNARR_N( paramFileInfo_t, paramFileInfo_da, N )
+
+char *GetParamFileDir(void);
+void SetParamFileDir(char *fullPath);
+void LoadParamFileList(void);
+//BOOL_T ReadDefaultParams(const char * dirName);
+void SaveParamFileList(void);
+int GetParamFileCount();
+void UpdateParamFileList(void);
+void ParamFilesChange(long changes);
+int LoadParamFile(int files, char ** fileName, void * data);
// void InitializeParamDir(void);
- void ParamFileListConfirmChange(void);
- void ParamFileListCancelChange(void);
- BOOL_T ParamFileListInit(void);
+void ParamFileListConfirmChange(void);
+void ParamFileListCancelChange(void);
+BOOL_T ParamFileListInit(void);
- void SearchUiOk(void * junk);
- bool ReloadParamFile(wIndex_t index);
- bool UnloadParamFile(wIndex_t fileIndex);
+void SearchUiOk(void * junk);
+bool ReloadParamFile(wIndex_t index);
+bool UnloadParamFile(wIndex_t fileIndex);
#endif // !HAVE_PARAMFILELIST_H
diff --git a/app/bin/include/partcatalog.h b/app/bin/include/partcatalog.h
index e1ea110..365e78b 100644
--- a/app/bin/include/partcatalog.h
+++ b/app/bin/include/partcatalog.h
@@ -16,7 +16,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
*/
#ifndef HAVE_TRACKCATALOG_H
@@ -28,16 +28,16 @@
#define MAXFILESPERCONTENT 10 /**< count of files with the same content header */
struct sCatalogEntry {
- struct sCatalogEntry *next, *prev;
- unsigned files; /**< current count of files */
- char *fullFileName[MAXFILESPERCONTENT]; /**< fully qualified file name */
- char *contents; /**< content field of parameter file */
- char *tag; /**< data about the file */
+ struct sCatalogEntry *next, *prev;
+ unsigned files; /**< current count of files */
+ char *fullFileName[MAXFILESPERCONTENT]; /**< fully qualified file name */
+ char *contents; /**< content field of parameter file */
+ char *tag; /**< data about the file */
};
typedef struct sCatalogEntry CatalogEntry;
struct sCatalog {
- CatalogEntry *head; /**< The entries */
+ CatalogEntry *head; /**< The entries */
};
typedef struct sCatalog Catalog;
@@ -48,54 +48,57 @@ CatalogEntry
It is managed as a linked list
*/
struct sIndexEntry {
- struct sIndexEntry *next;
- struct sIndexEntry *prev;
- char *keyWord; /**< keyword */
- dynArr_t *references; /**< references to the CatalogEntry */
+ struct sIndexEntry *next;
+ struct sIndexEntry *prev;
+ char *keyWord; /**< keyword */
+ dynArr_t *references; /**< references to the CatalogEntry */
};
typedef struct sIndexEntry IndexEntry;
struct sParameterLib {
- Catalog *catalog; /**< list of files cataloged */
- IndexEntry *index; /**< Index for lookup */
- unsigned wordCount; /**< How many words indexed */
- unsigned parameterFileCount; /**< */
- char *words;
+ Catalog *catalog; /**< list of files cataloged */
+ IndexEntry *index; /**< Index for lookup */
+ unsigned wordCount; /**< How many words indexed */
+ unsigned parameterFileCount; /**< */
+ char *words;
};
typedef struct sParameterLib
- ParameterLib; /**< core data structure for the catalog */
+ ParameterLib; /**< core data structure for the catalog */
enum WORDSTATE {
- SEARCHED,
- DISCARDED,
- NOTFOUND,
+ SEARCHED,
+ DISCARDED,
+ NOTFOUND,
CLOSE,
- STATE_COUNT
+ STATE_COUNT
};
struct sSearchResult {
- Catalog subCatalog;
- unsigned totalFound;
- unsigned words; /**< no of words in search string */
- struct sSingleResult {
- char *keyWord;
- unsigned count;
- enum WORDSTATE state;
- } *kw;
+ Catalog subCatalog;
+ unsigned totalFound;
+ unsigned words; /**< no of words in search string */
+ struct sSingleResult {
+ char *keyWord;
+ unsigned count;
+ enum WORDSTATE state;
+ } *kw;
};
typedef struct sSearchResult SearchResult;
Catalog *InitCatalog(void);
void DestroyCatalog(Catalog *catalog);
-CatalogEntry * InsertInOrder(Catalog *catalog, const char *contents, const char *tag);
-void UpdateCatalogEntry(CatalogEntry *entry, char *path, char *contents, char *tag);
+CatalogEntry * InsertInOrder(Catalog *catalog, const char *contents,
+ const char *tag);
+void UpdateCatalogEntry(CatalogEntry *entry, char *path, char *contents,
+ char *tag);
ParameterLib *InitLibrary(void);
ParameterLib *CreateLibrary(char *directory);
void DestroyLibrary(ParameterLib *tracklib);
bool CreateCatalogFromDir(ParameterLib *trackLib, char *directory);
unsigned CreateLibraryIndex(ParameterLib *trackLib);
-unsigned SearchLibrary(ParameterLib *library, char *searchExpression, SearchResult *totalResult);
+unsigned SearchLibrary(ParameterLib *library, char *searchExpression,
+ SearchResult *totalResult);
char *SearchStatistics(SearchResult *result);
void SearchDiscardResult(SearchResult *res);
unsigned CountCatalogEntries(Catalog *catalog);
diff --git a/app/bin/include/problemrep.h b/app/bin/include/problemrep.h
new file mode 100644
index 0000000..bcc6982
--- /dev/null
+++ b/app/bin/include/problemrep.h
@@ -0,0 +1,37 @@
+/** \file problemrep.h
+ * Collect data for a problem report and remove private info
+*/
+
+/* XTrkCad - Model Railroad CAD
+ * Copyright (C) 2024 Martin Fischer
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef HAVE_PROBLEMREP_H
+#define HAVE_PROBLEMREP_H
+
+//problemrep.c
+
+void DoProblemCollect(void* unused);
+
+// problemrepui.c
+
+void ProblemrepCreateW(void* ptr);
+void ProblemrepUpdateW(char* text, ...);
+int ProblemSaveLayout(void);
+
+#endif // !HAVE_PROBLEMREP_H
+
diff --git a/app/bin/include/stringxtc.h b/app/bin/include/stringxtc.h
index cbadd0e..dc054d7 100644
--- a/app/bin/include/stringxtc.h
+++ b/app/bin/include/stringxtc.h
@@ -1,8 +1,9 @@
#include <stddef.h>
#ifndef HAVE_STRINGXTC_H
- #define HAVE_STRINGXTC_H
- size_t strscpy(char *dest, const char *src, size_t count);
- char *XtcStrlwr(char *str);
- int XtcStricmp(const char *a, const char *b);
+#define HAVE_STRINGXTC_H
+size_t strscat(char *dest, const char *src, size_t count);
+size_t strscpy(char *dest, const char *src, size_t count);
+char *XtcStrlwr(char *str);
+int XtcStricmp(const char *a, const char *b);
#endif
diff --git a/app/bin/include/svgformat.h b/app/bin/include/svgformat.h
index 7cf5c85..075bbe1 100644
--- a/app/bin/include/svgformat.h
+++ b/app/bin/include/svgformat.h
@@ -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
*/
#ifndef HAVE_SVGFORMAT_H
@@ -25,7 +25,7 @@
#include <stdbool.h>
#include <mxml.h>
-#define MININMUMLINEWIDTH 3.0
+#define MINIMUMLINEWIDTH 4.0
typedef mxml_node_t SVGParent;
typedef mxml_node_t SVGDocument;
diff --git a/app/bin/include/utf8convert.h b/app/bin/include/utf8convert.h
index 6a3e678..f6d8fb6 100644
--- a/app/bin/include/utf8convert.h
+++ b/app/bin/include/utf8convert.h
@@ -13,7 +13,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
*/
#ifndef HAVE_UTF8CONVERT_H
diff --git a/app/bin/layout.c b/app/bin/layout.c
index 4bf1936..c61c23f 100644
--- a/app/bin/layout.c
+++ b/app/bin/layout.c
@@ -17,52 +17,70 @@
*
* 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 <dynstring.h>
#include "custom.h"
#include "layout.h"
-#include "misc2.h"
#include "param.h"
#include "paths.h"
#include "track.h"
#include "fileio.h"
+#include "cselect.h"
#define MINTRACKRADIUSPREFS "minTrackRadius"
+#define MAXTRACKGRADEPREFS "maxTrackGrade"
+#define TEXT_FIELD_LEN 40
+
+/**
+ * @brief Layout properties in Dialog
+*/
struct sLayoutProps {
- char title1[TITLEMAXLEN];
- char title2[TITLEMAXLEN];
- SCALEINX_T curScaleInx;
- SCALEDESCINX_T curScaleDescInx;
- GAUGEINX_T curGaugeInx;
- DIST_T minTrackRadius;
- DIST_T maxTrackGrade;
- coOrd roomSize;
- DynString backgroundFileName;
- coOrd backgroundPos;
- ANGLE_T backgroundAngle;
- int backgroundScreen;
- double backgroundSize;
+ char title1[TITLEMAXLEN];
+ char title2[TITLEMAXLEN];
+ SCALEINX_T curScaleInx;
+ SCALEDESCINX_T curScaleDescInx;
+ GAUGEINX_T curGaugeInx;
+ DIST_T minTrackRadius;
+ DIST_T maxTrackGrade;
+ coOrd roomSize;
+ char backgroundTextBox[TEXT_FIELD_LEN+1];
+ coOrd backgroundPos;
+ ANGLE_T backgroundAngle;
+ int backgroundScreen;
+ double backgroundSize;
};
+
+/**
+ * @brief Layout properties not in dialog, and save values for Cancel
+*/
struct sDataLayout {
- struct sLayoutProps props;
- DynString fullFileName;
- struct sLayoutProps *copyOfLayoutProps;
+ struct sLayoutProps props;
+ DynString fullFileName;
+ DynString
+ backgroundFileName; /** This is used to hold the entire path string */
+ struct sLayoutProps
+ *copyOfLayoutProps; /** Copy of props used to restore initial values in the event of Cancel */
+ DynString
+ copyBackgroundFileName; /** Copy of Background Path used to restore initial value in the event of Cancel */
};
static struct sDataLayout thisLayout = {
- { "", "", -1, 0, 0, 0.0, 5.0, {0.0, 0.0}, NaS, {0.0, 0.0}, 0.0, 0, 0.0 },
- NaS,
- NULL,
+ { "", "", 0, 0, 0, 0.0, 0.0, {0.0, 0.0}, "", {0.0, 0.0}, 0.0, 0, 0.0},
+ NaS,
+ NaS,
+ NULL,
+ NaS
};
EXPORT wIndex_t changed = 0;
static paramFloatRange_t r0_90 = { 0, 90 };
+// static paramFloatRange_t r0o05_100 = { 0.05, 100 };
static paramFloatRange_t r0_10000 = { 0, 10000 };
static paramFloatRange_t r0_9999999 = { 0, 9999999 };
static paramFloatRange_t r1_9999999 = { 1, 9999999 };
@@ -84,19 +102,19 @@ static void LayoutDlgUpdate(paramGroup_p pg, int inx, void * valueP);
void
SetLayoutFullPath(const char *fileName)
{
- if (fileName && fileName[0]) {
- if (DynStringSize(&thisLayout.fullFileName)) {
- if (strcmp(DynStringToCStr(&thisLayout.fullFileName),fileName)==0) {
- return;
- }
- DynStringClear(&thisLayout.fullFileName);
- }
- DynStringMalloc(&thisLayout.fullFileName, strlen(fileName) + 1);
- DynStringCatCStr(&thisLayout.fullFileName, fileName);
- } else {
- DynStringMalloc(&thisLayout.fullFileName, 2);
- DynStringCatCStr(&thisLayout.fullFileName, "");
- }
+ if (fileName && fileName[0]) {
+ if (DynStringSize(&thisLayout.fullFileName)) {
+ if (strcmp(DynStringToCStr(&thisLayout.fullFileName),fileName)==0) {
+ return;
+ }
+ DynStringClear(&thisLayout.fullFileName);
+ }
+ DynStringMalloc(&thisLayout.fullFileName, strlen(fileName) + 1);
+ DynStringCatCStr(&thisLayout.fullFileName, fileName);
+ } else {
+ DynStringMalloc(&thisLayout.fullFileName, 2);
+ DynStringCatCStr(&thisLayout.fullFileName, "");
+ }
}
/**
@@ -105,23 +123,44 @@ SetLayoutFullPath(const char *fileName)
* \param scaleName IN name of the scale/gauge eg. HOn3
* \param defaltValue IN default value will be used if no preference is set
*/
-
void
LoadLayoutMinRadiusPref(char *scaleName, double defaultValue)
{
- DynString prefString = { NULL };
+ DynString prefString = { NULL };
- DynStringPrintf(&prefString, MINTRACKRADIUSPREFS "-%s", scaleName);
- wPrefGetFloat("misc", DynStringToCStr(&prefString),
- &thisLayout.props.minTrackRadius, defaultValue);
- DynStringFree(&prefString);
+ DynStringPrintf(&prefString, MINTRACKRADIUSPREFS "-%s", scaleName);
+ wPrefGetFloat("misc", DynStringToCStr(&prefString),
+ &thisLayout.props.minTrackRadius, defaultValue);
+ DynStringFree(&prefString);
}
+/**
+* Set the maximum grade for the selected scale/gauge into the dialog
+*
+* \param scaleName IN name of the scale/gauge eg. HOn3
+* \param defaltValue IN default value will be used if no preference is set
+*/
+void
+LoadLayoutMaxGradePref(char* scaleName, double defaultValue)
+{
+ DynString prefString = { NULL };
+
+ DynStringPrintf(&prefString, MAXTRACKGRADEPREFS "-%s", scaleName);
+ wPrefGetFloat("misc", DynStringToCStr(&prefString),
+ &thisLayout.props.maxTrackGrade, defaultValue);
+ DynStringFree(&prefString);
+}
+
+/**
+ * @brief Copy Layout title making sure there is a null at the end
+ * @param dest The destination to copy to
+ * @param src The source of the copy
+*/
static void
CopyLayoutTitle(char* dest, char *src)
{
- strncpy(dest, src, TITLEMAXLEN);
- *(dest + TITLEMAXLEN - 1) = '\0';
+ strncpy(dest, src, TITLEMAXLEN);
+ *(dest + TITLEMAXLEN - 1) = '\0';
}
@@ -136,91 +175,161 @@ SetFileChanged(void)
SetWindowTitle();
}
+/**
+ * @brief Set the Layout title
+ * @param title The Layout title
+*/
void
SetLayoutTitle(char *title)
{
- CopyLayoutTitle(thisLayout.props.title1, title);
+ CopyLayoutTitle(thisLayout.props.title1, title);
}
+/**
+ * @brief Set the layout Subtitle
+ * @param title The Layout subtitle
+*/
void
SetLayoutSubtitle(char *title)
{
- CopyLayoutTitle(thisLayout.props.title2, title);
+ CopyLayoutTitle(thisLayout.props.title2, title);
}
+/**
+ * @brief Set the Layout minimum track radius.
+ * @param radius
+*/
void
SetLayoutMinTrackRadius(DIST_T radius)
{
- thisLayout.props.minTrackRadius = radius;
+ thisLayout.props.minTrackRadius = radius;
}
+/**
+ * @brief Set the Layout maximum track grade.
+ * @param angle The maximum track grade.
+*/
void
SetLayoutMaxTrackGrade(ANGLE_T angle)
{
- thisLayout.props.maxTrackGrade = angle;
+ thisLayout.props.maxTrackGrade = angle;
}
-
+/**
+ * @brief Set the layout room size
+ * @param size The room size (coOrd)
+*/
void
SetLayoutRoomSize(coOrd size)
{
- thisLayout.props.roomSize = size;
+ thisLayout.props.roomSize = size;
}
+/**
+ * @brief Set the Layout scale (index). Also set the default Tie Data.
+ * @param scale The Layout scale index.
+*/
void
SetLayoutCurScale(SCALEINX_T scale)
{
- thisLayout.props.curScaleInx = scale;
+ thisLayout.props.curScaleInx = scale;
}
+/**
+ * @brief Set the Layout scale description (index)
+ * @param desc The Layout scale description index.
+*/
void
SetLayoutCurScaleDesc(SCALEDESCINX_T desc)
{
- thisLayout.props.curScaleDescInx = desc;
+ thisLayout.props.curScaleDescInx = desc;
}
+/**
+ * @brief Set the Layout current gauge (index)
+ * @param gauge The Layout gauge index.
+*/
void
SetLayoutCurGauge(GAUGEINX_T gauge)
{
- thisLayout.props.curGaugeInx = gauge;
+ thisLayout.props.curGaugeInx = gauge;
}
-void SetLayoutBackGroundFullPath(const char *fileName) {
+/**
+ * @brief Set the Layout background full path.
+ * @param fileName The Layout background full path string.
+*/
+void SetLayoutBackGroundFullPath(const char *fileName)
+{
if (fileName && fileName[0]) {
- if (DynStringSize(&thisLayout.props.backgroundFileName)) {
- if (strcmp(DynStringToCStr(&thisLayout.props.backgroundFileName),fileName)==0) {
+ if (DynStringSize(&thisLayout.backgroundFileName)) {
+ if (strcmp(DynStringToCStr(&thisLayout.backgroundFileName),fileName)==0) {
return;
}
- DynStringClear(&thisLayout.props.backgroundFileName);
+ DynStringClear(&thisLayout.backgroundFileName);
}
- DynStringMalloc(&thisLayout.props.backgroundFileName, strlen(fileName) + 1);
- DynStringCatCStr(&thisLayout.props.backgroundFileName, fileName);
+ DynStringMalloc(&thisLayout.backgroundFileName, strlen(fileName) + 1);
+ DynStringCatCStr(&thisLayout.backgroundFileName, fileName);
} else {
- DynStringClear(&thisLayout.props.backgroundFileName);
- DynStringCatCStr(&thisLayout.props.backgroundFileName, "");
+ DynStringClear(&thisLayout.backgroundFileName);
+ DynStringMalloc(&thisLayout.backgroundFileName, 1);
+ DynStringCatCStr(&thisLayout.backgroundFileName, "");
}
}
-void SetLayoutBackGroundSize(double size) {
- thisLayout.props.backgroundSize = size;
+/**
+ * @brief Set the Layout background size (relative to the layout width)
+ * @param size The Layout background size.
+*/
+void SetLayoutBackGroundSize(double size)
+{
+ thisLayout.props.backgroundSize = size;
}
-void SetLayoutBackGroundPos(coOrd pos) {
+/**
+ * @brief Set the Layout background position (origin).
+ * @param pos The Layout background origin (coOrd).
+*/
+void SetLayoutBackGroundPos(coOrd pos)
+{
thisLayout.props.backgroundPos = pos;
}
-void SetLayoutBackGroundAngle(ANGLE_T angle) {
+/**
+ * @brief Set the Layout Background angle.
+ * @param angle The Layout Background angle (ANGLE_T).
+*/
+void SetLayoutBackGroundAngle(ANGLE_T angle)
+{
thisLayout.props.backgroundAngle = angle;
}
-void SetLayoutBackGroundScreen(int screen) {
+/**
+ * @brief Set the Layout Background screen (percent of transparency)
+ * @param screen The Screen value (0-100)
+*/
+void SetLayoutBackGroundScreen(int screen)
+{
thisLayout.props.backgroundScreen = screen;
}
/**
+ * Get changed-State of layout.
+ *
+ * \return true if changed
+ */
+
+BOOL_T
+GetLayoutChanged(void)
+{
+ return(changed > 0);
+}
+
+
+/**
* Return the full filename.
*
* \return pointer to the full filename, should not be modified or freed
@@ -230,7 +339,7 @@ char *
GetLayoutFullPath()
{
char * s = DynStringToCStr(&thisLayout.fullFileName);
- return s;
+ return s;
}
/**
@@ -242,58 +351,90 @@ GetLayoutFullPath()
char *
GetLayoutFilename()
{
- char *string = DynStringToCStr(&thisLayout.fullFileName);
+ char *string = DynStringToCStr(&thisLayout.fullFileName);
- if (string) {
- return FindFilename(string);
- } else {
- return (NULL);
- }
+ if (string) {
+ return FindFilename(string);
+ } else {
+ return (NULL);
+ }
}
+/**
+ * @brief Return the layout title
+ * @return The title string
+*/
char *
GetLayoutTitle()
{
- return (thisLayout.props.title1);
+ return (thisLayout.props.title1);
}
+/**
+ * @brief Return the layout subtitle
+ * @return The subtitle string
+*/
char *
GetLayoutSubtitle()
{
- return (thisLayout.props.title2);
+ return (thisLayout.props.title2);
}
+/**
+ * @brief Returns the layout minimum radius
+ * @return The minimum radius (DIST_T)
+*/
DIST_T
GetLayoutMinTrackRadius()
{
- return (thisLayout.props.minTrackRadius);
+ return (thisLayout.props.minTrackRadius);
}
+/**
+ * @brief Returns the layout maximum track grade
+ * @return The Maximum grade (ANGLE_T)
+*/
ANGLE_T
GetLayoutMaxTrackGrade()
{
- return (thisLayout.props.maxTrackGrade);
+ return (thisLayout.props.maxTrackGrade);
}
+/**
+ * @brief Returns the scale index of layout scale description
+ * @return The Scale Description index
+*/
SCALEDESCINX_T
GetLayoutCurScaleDesc()
{
- return (thisLayout.props.curScaleDescInx);
+ return (thisLayout.props.curScaleDescInx);
}
+/**
+* @brief Returns the scale index of layout scale setting
+* @return The Scale Index
+*/
SCALEINX_T
GetLayoutCurScale()
{
- return (thisLayout.props.curScaleInx);
+ return (thisLayout.props.curScaleInx);
}
+/**
+ * @brief Returns the Layout Background full path
+ * @return The Background full path
+*/
char *
GetLayoutBackGroundFullPath()
{
- char * s = DynStringToCStr(&thisLayout.props.backgroundFileName);
+ char * s = DynStringToCStr(&thisLayout.backgroundFileName);
return s;
}
+/**
+ * @brief Returns the layout background size.
+ * @return The background size, or room size if zero
+*/
double
GetLayoutBackGroundSize()
{
@@ -304,18 +445,30 @@ GetLayoutBackGroundSize()
}
}
+/**
+ * @brief Returns the background position (origin)
+ * @return The background position (coOrd)
+*/
coOrd
GetLayoutBackGroundPos()
{
return (thisLayout.props.backgroundPos);
}
+/**
+ * @brief Returns the background angle
+ * @return The background angle (ANGLE_T)
+*/
ANGLE_T
GetLayoutBackGroundAngle()
{
return (thisLayout.props.backgroundAngle);
}
+/**
+ * @brief Returns the background screen percent (the amount of transparency)
+ * @return The background Screen value (0-100)
+*/
int GetLayoutBackGroundScreen()
{
return (thisLayout.props.backgroundScreen);
@@ -338,29 +491,23 @@ GetLayoutRoomSize(coOrd *roomSize)
* Layout Dialog
*
*/
-static char backgroundFileName[STR_LONG_SIZE];
-
-#define TEXT_FIELD_LEN 40
static wWin_p layoutW;
+static void LayoutChange(long changes);
-/**************************************************************************************
-* Show only the end of the background file path including the filename in the Dialog
+/**
+* Show only the filename in the Dialog
*/
-void SetName() {
- char * name = GetLayoutBackGroundFullPath();
+void SetName()
+{
+ char *name = GetLayoutBackGroundFullPath();
if (name && name[0]) { //Ignore ""
- if (name && (strlen(name)<=TEXT_FIELD_LEN)) {
- for (unsigned int i=0; i<=strlen(name);i++) {
- backgroundFileName[i] = name[i];
- }
- backgroundFileName[strlen(name)] = '\0';
+ char *f = FindFilename(name);
+ if ( f ) {
+ strncpy( thisLayout.props.backgroundTextBox,f,TEXT_FIELD_LEN );
} else {
- for (int i=TEXT_FIELD_LEN;i>=0; i--) {
- backgroundFileName[i] = name[strlen(name)-(TEXT_FIELD_LEN-i)];
- }
- backgroundFileName[TEXT_FIELD_LEN] = '\0'; //Insurance
+ thisLayout.props.backgroundTextBox[0] = '\0';
}
- } else backgroundFileName[0] = '\0';
+ } else { thisLayout.props.backgroundTextBox[0] = '\0'; }
}
static struct wFilSel_t * imageFile_fs;
@@ -374,6 +521,12 @@ BOOL_T backgroundVisible = TRUE;
char * noname = "";
+EXPORT wButton_p backgroundB;
+
+/**
+ * @brief Enable background visibility toggle from Menu or Button
+ * @param unused
+*/
void
BackgroundToggleShow( void * unused )
{
@@ -382,18 +535,27 @@ BackgroundToggleShow( void * unused )
MainRedraw();
}
+/**
+ * @brief Returns status of backgroundVisible
+ * @return backgroundVisible
+*/
int GetLayoutBackGroundVisible()
{
return(backgroundVisible);
}
+/**
+ * @brief Returns status of layout background.
+ * @return true if a background is defined, false otherwise
+*/
bool HasBackGround()
{
return(haveBackground);
}
-/*****************************************
-* Try to load the background image file
+/**
+* Try to load the background image file. Display notice if failed to load.
+* @return TRUE if successful, FALSE if not.
*/
wBool_t
LoadBackGroundImage(void)
@@ -410,72 +572,84 @@ LoadBackGroundImage(void)
return TRUE;
}
-/*******************************************************
+#define BACKGROUNDFILEENTRY (8)
+
+/**
* Callback from File Select for Background Image File
-*
+*
* \param files number of files selected (only first file is used)
* \param fileName array of pointers to filenames
* \param data unused
* \return FALSE
*/
EXPORT int LoadImageFile(
- int files,
- char ** fileName,
- void * data )
+ int files,
+ char ** fileName,
+ void * data )
{
- if (files >0) {
- SetLayoutBackGroundFullPath( strdup(fileName[0]));
+ if (files >0) {
+ SetLayoutBackGroundFullPath( strdup(fileName[0]) );
- if (!LoadBackGroundImage()) {
- SetLayoutBackGroundFullPath(noname);
- backgroundVisible = FALSE;
- }
- else {
- backgroundVisible = TRUE;
- SetCurrentPath(BACKGROUNDPATHKEY, fileName[0]);
- }
- } else {
+ if (!LoadBackGroundImage()) {
SetLayoutBackGroundFullPath(noname);
backgroundVisible = FALSE;
+ } else {
+ backgroundVisible = TRUE;
+ SetCurrentPath(BACKGROUNDPATHKEY, fileName[0]);
+
+ file_changed = TRUE;
+ haveBackground = TRUE;
+ ParamLoadControl(layout_pg_p, BACKGROUNDFILEENTRY);
+
+ MainRedraw();
}
- wControlActive((wControl_p)backgroundB, backgroundVisible);
- wButtonSetBusy(backgroundB, backgroundVisible);
+ } else {
+ SetLayoutBackGroundFullPath(noname);
+ backgroundVisible = FALSE;
+ }
+ wControlActive((wControl_p)backgroundB, backgroundVisible);
+ wButtonSetBusy(backgroundB, backgroundVisible);
- SetName();
- file_changed = TRUE;
- ParamLoadControl(layout_pg_p, 8);
- return FALSE;
+ SetName();
+ file_changed = TRUE;
+ ParamLoadControl(layout_pg_p, BACKGROUNDFILEENTRY);
+ LayoutChange( CHANGE_BACKGROUND );
+
+ return FALSE;
}
-/**********************************************************
- * Save the Background Parms - forcing a write
- */
-void LayoutBackGroundSave(void) {
- char * background = GetLayoutBackGroundFullPath();
+/**
+ * Save the Layout Background Parms in section [layout]. Force a write.
+*/
+void LayoutBackGroundSave(void)
+{
+ char * background = GetLayoutBackGroundFullPath();
wPrefSetString("layout", "BackgroundPath", background);
- wPrefSetFloat("layout", "BackgroundPosX", thisLayout.props.backgroundPos.x);
- wPrefSetFloat("layout", "BackgroundPosY", thisLayout.props.backgroundPos.y);
- wPrefSetFloat("layout", "BackgroundAngle", thisLayout.props.backgroundAngle);
- wPrefSetInteger("layout", "BackgroundScreen", thisLayout.props.backgroundScreen);
- wPrefSetFloat("layout", "BackgroundSize", thisLayout.props.backgroundSize);
-
- wPrefFlush("");
+ wPrefSetFloat("layout", "BackgroundPosX", thisLayout.props.backgroundPos.x);
+ wPrefSetFloat("layout", "BackgroundPosY", thisLayout.props.backgroundPos.y);
+ wPrefSetFloat("layout", "BackgroundAngle", thisLayout.props.backgroundAngle);
+ wPrefSetInteger("layout", "BackgroundScreen",
+ thisLayout.props.backgroundScreen);
+ wPrefSetFloat("layout", "BackgroundSize", thisLayout.props.backgroundSize);
+
+ wPrefFlush("");
}
-/************************************************************
+/**
* Run File Select for the Background Image File
- */
+*/
static void ImageFileBrowse( void * unused )
{
- imageFile_fs = wFilSelCreate( mainW, FS_LOAD, FS_PICTURES, _("Load Background"), sImageFilePattern, LoadImageFile, NULL );
+ imageFile_fs = wFilSelCreate( mainW, FS_LOAD, FS_PICTURES, _("Load Background"),
+ sImageFilePattern, LoadImageFile, NULL );
wFilSelect( imageFile_fs, GetCurrentPath( BACKGROUNDPATHKEY ) );
return;
}
-/************************************************************
+/**
* Remove the background Image File
- */
+*/
static void ImageFileClear( void * unused)
{
char * noname = "";
@@ -485,24 +659,27 @@ static void ImageFileClear( void * unused)
wControlActive((wControl_p)backgroundB, FALSE);
file_changed = TRUE;
haveBackground = false;
- ParamLoadControl(layout_pg_p, 8);
+ ParamLoadControl(layout_pg_p, BACKGROUNDFILEENTRY);
+
+ LayoutChange( CHANGE_BACKGROUND );
+
MainRedraw();
}
static paramData_t layoutPLs[] = {
- { PD_FLOAT, &thisLayout.props.roomSize.x, "roomsizeX", PDO_NOPREF | PDO_DIM | PDO_NOPSHUPD | PDO_DRAW, &r1_9999999, N_("Room Width"), 0, I2VP(CHANGE_MAIN | CHANGE_MAP) },
- { PD_FLOAT, &thisLayout.props.roomSize.y, "roomsizeY", PDO_NOPREF | PDO_DIM | PDO_NOPSHUPD | PDO_DRAW | PDO_DLGHORZ, &r1_9999999, N_(" Height"), 0, I2VP(CHANGE_MAIN | CHANGE_MAP) },
- { PD_STRING, &thisLayout.props.title1, "title1", PDO_NOPSHUPD | PDO_STRINGLIMITLENGTH, NULL, N_("Layout Title"), 0, 0, sizeof(thisLayout.props.title1)},
- { PD_STRING, &thisLayout.props.title2, "title2", PDO_NOPSHUPD | PDO_STRINGLIMITLENGTH, NULL, N_("Subtitle"), 0, 0, sizeof(thisLayout.props.title2)},
+ { PD_FLOAT, &thisLayout.props.roomSize.x, "roomsizeX", PDO_NOPREF | PDO_DIM | PDO_NOPSHUPD | PDO_DRAW, &r1_9999999, N_("Room Width"), 0, I2VP(CHANGE_MAIN | CHANGE_MAP) },
+ { PD_FLOAT, &thisLayout.props.roomSize.y, "roomsizeY", PDO_NOPREF | PDO_DIM | PDO_NOPSHUPD | PDO_DRAW | PDO_DLGHORZ, &r1_9999999, N_(" Height"), 0, I2VP(CHANGE_MAIN | CHANGE_MAP) },
+ { PD_STRING, &thisLayout.props.title1, "title1", PDO_NOPSHUPD | PDO_STRINGLIMITLENGTH, NULL, N_("Layout Title"), 0, 0, sizeof(thisLayout.props.title1)},
+ { PD_STRING, &thisLayout.props.title2, "title2", PDO_NOPSHUPD | PDO_STRINGLIMITLENGTH, NULL, N_("Subtitle"), 0, 0, sizeof(thisLayout.props.title2)},
#define SCALEINX (4)
- { PD_DROPLIST, &thisLayout.props.curScaleDescInx, "scale", PDO_NOPREF | PDO_NOPSHUPD | PDO_NORECORD | PDO_NOUPDACT, I2VP(180), N_("Scale"), 0, I2VP(CHANGE_SCALE) },
+ { PD_DROPLIST, &thisLayout.props.curScaleDescInx, "scale", PDO_NOPREF | PDO_NOPSHUPD | PDO_NORECORD | PDO_NOUPDACT, I2VP(180), N_("Scale"), 0, I2VP(CHANGE_SCALE) },
#define GAUGEINX (5)
- { PD_DROPLIST, &thisLayout.props.curGaugeInx, "gauge", PDO_NOPREF | PDO_NOPSHUPD | PDO_NORECORD | PDO_NOUPDACT | PDO_DLGHORZ, I2VP(180), N_(" Gauge"), 0, I2VP(CHANGE_SCALE) },
+ { PD_DROPLIST, &thisLayout.props.curGaugeInx, "gauge", PDO_NOPREF | PDO_NOPSHUPD | PDO_NORECORD | PDO_NOUPDACT | PDO_DLGHORZ, I2VP(180), N_(" Gauge"), 0, I2VP(CHANGE_SCALE) },
#define MINRADIUSENTRY (6)
- { PD_FLOAT, &thisLayout.props.minTrackRadius, "mintrackradius", PDO_DIM | PDO_NOPSHUPD | PDO_NOPREF, &r0_10000, N_("Min Track Radius"), 0, I2VP(CHANGE_MAIN | CHANGE_LIMITS) },
- { PD_FLOAT, &thisLayout.props.maxTrackGrade, "maxtrackgrade", PDO_NOPSHUPD | PDO_DLGHORZ, &r0_90, N_(" Max Track Grade (%)"), 0, I2VP(CHANGE_MAIN) },
-#define BACKGROUNDFILEENTRY (8) //Note this value used in the file section routines above - if it chnages, they will need to change
- { PD_STRING, &backgroundFileName, "backgroundfile", PDO_NOPSHUPD | PDO_NORECORD|PDO_STRINGLIMITLENGTH, NULL, N_("Background File Path"), 0, I2VP(CHANGE_BACKGROUND),sizeof(backgroundFileName) },
+ { PD_FLOAT, &thisLayout.props.minTrackRadius, "mintrackradius", PDO_DIM | PDO_NOPSHUPD | PDO_NOPREF, &r0_10000, N_("Min Track Radius"), 0, I2VP(CHANGE_MAIN | CHANGE_LIMITS) },
+ { PD_FLOAT, &thisLayout.props.maxTrackGrade, "maxtrackgrade", PDO_NOPSHUPD | PDO_DLGHORZ, &r0_90, N_(" Max Track Grade (%)"), 0, I2VP(CHANGE_MAIN) },
+#define BACKGROUNDFILECHECK (8) //Note this value used in the file section routines above - if it changes, they will need to change
+ { PD_STRING, &thisLayout.props.backgroundTextBox, "backgroundfile", PDO_NOPSHUPD|PDO_NOPREF|PDO_NORECORD|PDO_STRINGLIMITLENGTH, NULL, N_("Background File Path"), 0, I2VP(CHANGE_BACKGROUND), TEXT_FIELD_LEN },
{ PD_BUTTON, ImageFileBrowse, "browse", PDO_DLGHORZ, NULL, N_("Browse ...") },
{ PD_BUTTON, ImageFileClear, "clear", PDO_DLGHORZ, NULL, N_("Clear") },
#define BACKGROUNDPOSX (11)
@@ -518,46 +695,48 @@ static paramData_t layoutPLs[] = {
{ PD_MESSAGE, N_("Named Settings File"), NULL, PDO_DLGRESETMARGIN, I2VP(180) },
{ PD_BUTTON, SettingsWrite, "write", PDO_DLGHORZ, 0, N_("Write"), 0, I2VP(0) },
{ PD_BUTTON, SettingsRead, "read", PDO_DLGHORZ | PDO_DLGBOXEND, 0, N_("Read"), 0, I2VP(0) }
-
};
static paramGroup_t layoutPG = { "layout", PGO_RECORD | PGO_PREFMISC, layoutPLs, COUNT( layoutPLs ) };
+/**
+ * @brief Handle the Layout changes, setting the values of changed items from dialog.
+*/
+static void ChangeLayout()
+{
-static void ChangeLayout() {
-
- long changes;
+ long changes;
- changes = GetChanges(&layoutPG);
+ changes = GetChanges(&layoutPG);
- /* [mf Nov. 15, 2005] Get the gauge/scale settings */
- if (changes & CHANGE_SCALE) {
- SetScaleGauge(thisLayout.props.curScaleDescInx, thisLayout.props.curGaugeInx);
+ /* [mf Nov. 15, 2005] Get the gauge/scale settings */
+ if (changes & CHANGE_SCALE) {
+ SetScaleGauge(thisLayout.props.curScaleDescInx, thisLayout.props.curGaugeInx);
file_changed = TRUE;
}
- /* [mf Nov. 15, 2005] end */
+ /* [mf Nov. 15, 2005] end */
- if (changes & CHANGE_MAP) {
- SetRoomSize(thisLayout.props.roomSize);
+ if (changes & CHANGE_MAP) {
+ SetRoomSize(thisLayout.props.roomSize);
file_changed = TRUE;
}
- DoChangeNotification(changes);
+ DoChangeNotification(changes);
- if (changes & CHANGE_LIMITS) {
- char prefString[30];
- // now set the minimum track radius
- sprintf(prefString, "minTrackRadius-%s", curScaleName);
- wPrefSetFloat("misc", prefString, thisLayout.props.minTrackRadius);
+ if (changes & CHANGE_LIMITS) {
+ char prefString[30];
+ // now set the minimum track radius
+ sprintf(prefString, "minTrackRadius-%s", curScaleName);
+ wPrefSetFloat("misc", prefString, thisLayout.props.minTrackRadius);
file_changed = TRUE;
}
- if (changes & CHANGE_BACKGROUND) {
+ if (changes & CHANGE_BACKGROUND) {
- LayoutBackGroundSave();
- file_changed = TRUE;
- }
+ LayoutBackGroundSave();
+ file_changed = TRUE;
+ }
}
/**
@@ -569,15 +748,18 @@ static void ChangeLayout() {
static void LayoutOk(void * unused)
{
ChangeLayout();
- if(file_changed){
+ if(file_changed) {
+ LayoutBackGroundSave();
SetFileChanged();
file_changed = FALSE;
}
- free(thisLayout.copyOfLayoutProps);
- wHide(layoutW);
+ free(thisLayout.copyOfLayoutProps);
+ DynStringFree(&thisLayout.copyBackgroundFileName);
+
+ wHide(layoutW);
- MainLayout( TRUE, TRUE );
+ MainLayout( TRUE, TRUE );
}
@@ -590,52 +772,102 @@ static void LayoutOk(void * unused)
static void LayoutCancel(struct wWin_t *unused)
{
- thisLayout.props = *(thisLayout.copyOfLayoutProps);
- ParamLoadControls(&layoutPG);
- LayoutOk(unused);
+ // thisLayout.props = *(thisLayout.copyOfLayoutProps);
+ char* curr = DynStringToCStr(&thisLayout.backgroundFileName);
+ char* prev = DynStringToCStr(&thisLayout.copyBackgroundFileName);
+ if ((curr == NULL && prev != NULL) || (curr != NULL && prev == NULL)
+ || (strcmp(curr, prev) != 0) ) {
+ if (DynStringSize(&thisLayout.backgroundFileName)) {
+ DynStringClear(&thisLayout.backgroundFileName);
+ }
+ size_t bgSize = DynStringSize(&thisLayout.copyBackgroundFileName);
+ if ( bgSize ) {
+ DynStringMalloc(&thisLayout.backgroundFileName, bgSize + 1);
+ char* fileName = DynStringToCStr(&thisLayout.copyBackgroundFileName);
+ DynStringCatCStr(&thisLayout.backgroundFileName, fileName);
+ haveBackground = TRUE;
+ wDrawSetBackground( mainD.d, fileName, NULL);
+ } else {
+ haveBackground = FALSE;
+ wDrawSetBackground( mainD.d, NULL, NULL);
+ }
+ SetName();
+ // ChangeLayout();
+ }
+
+ ParamLoadControls(&layoutPG);
+
+ free(thisLayout.copyOfLayoutProps);
+ DynStringFree(&thisLayout.copyBackgroundFileName);
+
+ wHide(layoutW);
+
+ MainLayout( TRUE, TRUE );
}
+/**
+ * @brief Reload Layout parameters if changes
+ * @param changes
+*/
static void LayoutChange(long changes)
{
- if (changes & (CHANGE_SCALE | CHANGE_UNITS | CHANGE_BACKGROUND))
- if (layoutW != NULL && wWinIsVisible(layoutW)) {
- ParamLoadControls(&layoutPG);
- }
+ if (changes & (CHANGE_SCALE | CHANGE_UNITS | CHANGE_BACKGROUND))
+ if (layoutW != NULL && wWinIsVisible(layoutW)) {
+ ParamLoadControls(&layoutPG);
+ }
}
+/**
+ * @brief Initialize Layout dialog
+ * @param unused
+*/
void DoLayout(void * unused)
{
- SetLayoutRoomSize(mapD.size);
+ CHECK(BACKGROUNDFILEENTRY == BACKGROUNDFILECHECK);
+
+ SetLayoutRoomSize(mapD.size);
+
+ if (layoutW == NULL) {
+ layoutW = ParamCreateDialog(&layoutPG, MakeWindowTitle(_("Layout Options")),
+ _("Ok"), LayoutOk, LayoutCancel, TRUE, NULL, 0, LayoutDlgUpdate);
+ LoadScaleList((wList_p)layoutPLs[4].control);
+ }
- if (layoutW == NULL) {
- layoutW = ParamCreateDialog(&layoutPG, MakeWindowTitle(_("Layout Options")),
- _("Ok"), LayoutOk, LayoutCancel, TRUE, NULL, 0, LayoutDlgUpdate);
- LoadScaleList((wList_p)layoutPLs[4].control);
- }
+ ParamControlActive(&layoutPG, BACKGROUNDFILEENTRY, FALSE);
- ParamControlActive(&layoutPG, BACKGROUNDFILEENTRY, FALSE);
+ LoadGaugeList((wList_p)layoutPLs[5].control,
+ thisLayout.props.curScaleDescInx); /* set correct gauge list here */
+ thisLayout.copyOfLayoutProps = malloc(sizeof(struct sLayoutProps));
- LoadGaugeList((wList_p)layoutPLs[5].control,
- thisLayout.props.curScaleDescInx); /* set correct gauge list here */
- thisLayout.copyOfLayoutProps = malloc(sizeof(struct sLayoutProps));
+ if (!thisLayout.copyOfLayoutProps) {
+ exit(1);
+ }
+ SetName();
+ *(thisLayout.copyOfLayoutProps) = thisLayout.props;
- if (!thisLayout.copyOfLayoutProps) {
- exit(1);
- }
- SetName();
- *(thisLayout.copyOfLayoutProps) = thisLayout.props;
+ char* curr = DynStringToCStr(&thisLayout.backgroundFileName);
+ size_t bgSize = DynStringSize(&thisLayout.backgroundFileName);
+ if ( bgSize ) {
+ DynStringMalloc(&thisLayout.copyBackgroundFileName, bgSize + 1);
+ DynStringCatCStr(&thisLayout.copyBackgroundFileName, curr);
+ }
- ParamLoadControls(&layoutPG);
- wShow(layoutW);
+ ParamLoadControls(&layoutPG);
+ wShow(layoutW);
}
+/**
+ * @brief Callback for Menu and Shortcut key to open Layout Dialog.
+ * @param void
+ * @return Address of layout dialog (DoLayout)
+*/
EXPORT addButtonCallBack_t LayoutInit(void)
{
- ParamRegister(&layoutPG);
- RegisterChangeNotification(LayoutChange);
- layout_p = layoutPLs;
- layout_pg_p = &layoutPG;
- return &DoLayout;
+ ParamRegister(&layoutPG);
+ RegisterChangeNotification(LayoutChange);
+ layout_p = layoutPLs;
+ layout_pg_p = &layoutPG;
+ return &DoLayout;
}
/**
@@ -650,86 +882,98 @@ EXPORT addButtonCallBack_t LayoutInit(void)
static void
LayoutDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP)
-{
- /* did the scale change ? */
- if (inx == SCALEINX) {
- char prefString[100];
- char scaleDesc[100];
-
- LoadGaugeList((wList_p)layoutPLs[GAUGEINX].control, *((int *)valueP));
- // set the first entry as default, usually the standard gauge for a scale
- wListSetIndex((wList_p)layoutPLs[GAUGEINX].control, 0);
-
- // get the minimum radius
- // get the selected scale first
- wListGetValues((wList_p)layoutPLs[SCALEINX].control, scaleDesc, 99, NULL, NULL);
- strtok(scaleDesc, " ");
-
- // now get the minimum track radius
- sprintf(prefString, "minTrackRadius-%s", scaleDesc);
- wPrefGetFloat("misc", prefString, &thisLayout.props.minTrackRadius, 0.0);
-
- // put the scale's minimum value into the dialog
- wStringSetValue((wString_p)layoutPLs[MINRADIUSENTRY].control,
- FormatDistance(thisLayout.props.minTrackRadius));
- }
- if (inx == BACKGROUNDPOSX) {
- coOrd pos;
- pos.x = *(double *)valueP;
- pos.y = GetLayoutBackGroundPos().y;
- SetLayoutBackGroundPos(pos);
- MainRedraw();
- }
- if (inx == BACKGROUNDPOSY) {
- coOrd pos;
+ paramGroup_p pg,
+ int inx,
+ void * valueP)
+{
+ /* did the scale change ? */
+ if (inx == SCALEINX) {
+ char prefString[130];
+ char scaleDesc[100];
+
+ LoadGaugeList((wList_p)layoutPLs[GAUGEINX].control, *((int *)valueP));
+ // set the first entry as default, usually the standard gauge for a scale
+ wListSetIndex((wList_p)layoutPLs[GAUGEINX].control, 0);
+
+ // get the minimum radius
+ // get the selected scale first
+ wListGetValues((wList_p)layoutPLs[SCALEINX].control, scaleDesc, 99, NULL, NULL);
+ strtok(scaleDesc, " ");
+
+ // now get the minimum track radius
+ sprintf(prefString, "minTrackRadius-%s", scaleDesc);
+ wPrefGetFloat("misc", prefString, &thisLayout.props.minTrackRadius, 0.0);
+
+ // put the scale's minimum value into the dialog
+ wStringSetValue((wString_p)layoutPLs[MINRADIUSENTRY].control,
+ FormatDistance(thisLayout.props.minTrackRadius));
+ }
+ if (inx == BACKGROUNDFILEENTRY) {
+ SetName();
+ MainRedraw();
+ }
+ if (inx == BACKGROUNDPOSX) {
+ coOrd pos;
+ pos.x = *(double *)valueP;
+ pos.y = GetLayoutBackGroundPos().y;
+ SetLayoutBackGroundPos(pos);
+ MainRedraw();
+ }
+ if (inx == BACKGROUNDPOSY) {
+ coOrd pos;
pos.y = *(double *)valueP;
pos.x = GetLayoutBackGroundPos().x;
SetLayoutBackGroundPos(pos);
- MainRedraw();
- }
- if (inx == BACKGROUNDWIDTH) {
- SetLayoutBackGroundSize(*(double *)valueP);
- MainRedraw();
- }
- if (inx == BACKGROUNDSCREEN) {
- SetLayoutBackGroundScreen(*(int *)valueP);
- MainRedraw();
- }
- if (inx == BACKGROUNDANGLE) {
-
- ANGLE_T angle = NormalizeAngle(*(double *)valueP);
- wStringSetValue((wString_p)layoutPLs[BACKGROUNDANGLE].control,FormatFloat(angle));
- SetLayoutBackGroundAngle(angle);
- MainRedraw();
- }
-
-}
-/***************************************************************************************
- * Load Background Options from Saved Parms
- ***************************************************************************************/
+ MainRedraw();
+ }
+ if (inx == BACKGROUNDWIDTH) {
+ SetLayoutBackGroundSize(*(double *)valueP);
+ MainRedraw();
+ }
+ if (inx == BACKGROUNDSCREEN) {
+ SetLayoutBackGroundScreen(*(int *)valueP);
+ MainRedraw();
+ }
+ if (inx == BACKGROUNDANGLE) {
+
+ ANGLE_T angle = NormalizeAngle(*(double *)valueP);
+ wStringSetValue((wString_p)layoutPLs[BACKGROUNDANGLE].control,
+ FormatFloat(angle));
+ SetLayoutBackGroundAngle(angle);
+ MainRedraw();
+ }
+
+}
+/**
+ * Load Background Options from Saved Parms section [layout]
+*/
void
-LayoutBackGroundLoad(void) {
+LayoutBackGroundLoad(void)
+{
SetLayoutBackGroundFullPath(wPrefGetString("layout", "BackgroundPath"));
- wPrefGetFloat("layout", "BackgroundPosX", &thisLayout.props.backgroundPos.x, 0.0);
- wPrefGetFloat("layout", "BackgroundPosY", &thisLayout.props.backgroundPos.y, 0.0);
- wPrefGetFloat("layout", "BackgroundAngle", &thisLayout.props.backgroundAngle, 0.0);
+ wPrefGetFloat("layout", "BackgroundPosX", &thisLayout.props.backgroundPos.x,
+ 0.0);
+ wPrefGetFloat("layout", "BackgroundPosY", &thisLayout.props.backgroundPos.y,
+ 0.0);
+ wPrefGetFloat("layout", "BackgroundAngle", &thisLayout.props.backgroundAngle,
+ 0.0);
long screen_long;
wPrefGetInteger("layout", "BackgroundScreen", &screen_long, 0L);
thisLayout.props.backgroundScreen = screen_long;
- wPrefGetFloat("layout", "BackgroundSize", &thisLayout.props.backgroundSize, 0.0);
+ wPrefGetFloat("layout", "BackgroundSize", &thisLayout.props.backgroundSize,
+ 0.0);
}
static wBool_t inited;
-/**************************************************************************************
- * Either Clear Background Parms or (if the first time called) Load from Saved Parms
- **************************************************************************************/
+/**
+ * @brief Either Clear Background Parms or (if the first time called) Load from Saved Parms
+ * @param clear TRUE: Background is cleared, FALSE: Background is loaded (if defined)
+*/
void
-LayoutBackGroundInit(BOOL_T clear) {
+LayoutBackGroundInit(BOOL_T clear)
+{
if (clear) {
SetLayoutBackGroundFullPath(noname);
SetLayoutBackGroundPos(zero);
@@ -743,31 +987,48 @@ LayoutBackGroundInit(BOOL_T clear) {
}
char * str = GetLayoutBackGroundFullPath();
if (str && str[0]) {
- haveBackground = true;
- if (!LoadBackGroundImage()) { //Failed -> Wipe Out
+ haveBackground = true;
+ if (!LoadBackGroundImage()) { //Failed -> Wipe Out
SetLayoutBackGroundFullPath(noname);
SetLayoutBackGroundPos(zero);
SetLayoutBackGroundAngle(0.0);
SetLayoutBackGroundScreen(0);
SetLayoutBackGroundSize(0.0);
LayoutBackGroundSave();
- haveBackground = false;
+ haveBackground = false;
}
} else {
haveBackground = false;
+ }
+
+ if ( haveBackground ) {
+ char *error;
+ if (wDrawSetBackground( mainD.d, str, &error) == -1) {
+ NoticeMessage(_("Unable to load Image File - %s"),_("Ok"),NULL,error);
+ haveBackground = false;
+ }
+ } else {
wDrawSetBackground( mainD.d, NULL, NULL);
}
+ SetName();
}
+/**
+ * Read the settings defined in the file from sections [misc] and [DialogItem]
+ * @param files Number of files chosen
+ * @param fileName Filename(s) shosen. Only the first is used
+ * @param data Not used
+ * @return TRUE (always)
+*/
EXPORT int DoSettingsRead(
- int files,
- char ** fileName,
- void * data )
+ int files,
+ char ** fileName,
+ void * data )
{
char * pref;
- assert( files == 1 );
- if (fileName == NULL) wPrefsLoad(NULL);
- else wPrefsLoad(fileName[0]);
+ CHECK( files == 1 );
+ if (fileName == NULL) { wPrefsLoad(NULL); }
+ else { wPrefsLoad(fileName[0]); }
// get the preferred scale from the new configuration file
pref = wPrefGetString("misc", "scale");
if (pref) {
@@ -777,13 +1038,16 @@ EXPORT int DoSettingsRead(
}
//Get command options
wPrefGetInteger("DialogItem","cmdopt-preselect",&preSelect,preSelect);
- wPrefGetInteger("DialogItem","cmdopt-rightclickmode",&rightClickMode,rightClickMode);
+ wPrefGetInteger("DialogItem","cmdopt-rightclickmode",&rightClickMode,
+ rightClickMode);
wPrefGetInteger("DialogItem","cmdopt-selectmode",&selectMode,selectMode);
wPrefGetInteger("DialogItem","cmdopt-selectzero",&selectZero,selectZero);
//Get Toolbar showing
wPrefGetInteger( "misc", "toolbarset",&toolbarSet,toolbarSet);
+ LayoutBackGroundInit( FALSE );
+
//Redraw the screen to reflect changes
MainProc( mainW, wResize_e, NULL, NULL );
return TRUE;
@@ -791,34 +1055,49 @@ EXPORT int DoSettingsRead(
static struct wFilSel_t * settingsRead_fs;
+/**
+ * @brief Read button in Layout. File Open dialog to read a Settings file (*.xset)
+ * @param void
+ */
static void SettingsRead( void )
{
if (settingsRead_fs == NULL)
settingsRead_fs = wFilSelCreate( mainW, FS_LOAD, 0, _("Read Settings"),
- _("Settings File (*.xset)|*.xset"), DoSettingsRead, NULL );
+ _("Settings File (*.xset)|*.xset"), DoSettingsRead, NULL );
bExample = FALSE;
wFilSelect( settingsRead_fs, wGetAppWorkDir());
}
+/**
+ * @brief Write the settings file (after Dialog)
+ * @param files Number of Files selected (must be 1)
+ * @param fileName The selected Filename
+ * @param data Not used
+ * @return TRUE (always)
+*/
static int DoSettingsWrite(
- int files,
- char ** fileName,
- void * data )
+ int files,
+ char ** fileName,
+ void * data )
{
- assert( fileName != NULL );
- assert( files == 1 );
+ CHECK( fileName != NULL );
+ CHECK( files == 1 );
wPrefFlush(fileName[0]);
return TRUE;
}
static struct wFilSel_t * settingsWrite_fs;
+/**
+ * @brief Write button in Layout. File Save dialog for a settings file (*.xset)
+ * @param void
+*/
static void SettingsWrite( void )
{
ChangeLayout();
if ( settingsWrite_fs == NULL )
settingsWrite_fs = wFilSelCreate( mainW, FS_UPDATE, 0, _("Write Settings"),
- _("Settings File (*.xset)|*.xset"), DoSettingsWrite, NULL );
+ _("Settings File (*.xset)|*.xset"), DoSettingsWrite, NULL );
wFilSelect( settingsWrite_fs, wGetAppWorkDir());
}
diff --git a/app/bin/layout.h b/app/bin/layout.h
index 6e9496d..1d6c694 100644
--- a/app/bin/layout.h
+++ b/app/bin/layout.h
@@ -1,9 +1,9 @@
/** \file layout.h
- * Layout data
+ * Layout data
*/
/* XTrkCad - Model Railroad CAD
- * Copyright (C) 2017 Martin Fischer
+ * Copyright (C) 2017 Martin Fischer
*
* 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
@@ -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
*/
#ifndef HAVE_LAYOUT_H
@@ -25,9 +25,10 @@
#include "common.h"
-
+extern wButton_p backgroundB; /** background visibility control */
void SetLayoutFullPath(const char *fileName);
void LoadLayoutMinRadiusPref(char *scaleName, double defaultValue);
+void LoadLayoutMaxGradePref(char *scaleName, double defaultValue);
void SetLayoutTitle(char *title);
void SetLayoutSubtitle(char *title);
void SetLayoutMinTrackRadius(DIST_T radius);
@@ -36,7 +37,6 @@ void SetLayoutRoomSize(coOrd size);
void SetLayoutCurScale(SCALEINX_T scale);
void SetLayoutCurScaleDesc(SCALEDESCINX_T desc);
void SetLayoutCurGauge(GAUGEINX_T gauge);
-void SetLayoutScaleGauge(SCALEDESCINX_T desc, GAUGEINX_T gauge);
void SetLayoutBackGroundFullPath(const char *fileName);
void SetLayoutBackGroundSize(double size);
void SetLayoutBackGroundPos(coOrd pos);
@@ -45,17 +45,17 @@ void SetLayoutBackGroundScreen(int screen);
int DoSettingsRead(int files, char ** fileName, void * data );
+BOOL_T GetLayoutChanged(void);
char *GetLayoutFullPath(void);
char *GetLayoutFilename(void);
char *GetLayoutTitle(void);
char *GetLayoutSubtitle(void);
DIST_T GetLayoutMinTrackRadius(void);
+ANGLE_T GetLayoutMaxTrackGrade(void);
SCALEINX_T GetLayoutCurScale(void );
SCALEDESCINX_T GetLayoutCurScaleDesc(void);
-//GAUGEINX_T GetLayoutCurGauge(void);
void GetLayoutRoomSize(coOrd *roomSize);
-ANGLE_T GetLayoutMaxTrackGrade(void);
SCALEDESCINX_T GetLayoutCurScaleDesc(void);
char *GetLayoutBackGroundFullPath(void);
double GetLayoutBackGroundSize(void);
diff --git a/app/bin/levenshtein.c b/app/bin/levenshtein.c
index 8dc56aa..d51af01 100644
--- a/app/bin/levenshtein.c
+++ b/app/bin/levenshtein.c
@@ -10,63 +10,66 @@
// Returns a size_t, depicting the difference between `a` and `b`.
// See <https://en.wikipedia.org/wiki/Levenshtein_distance> for more information.
size_t
-levenshtein_n(const char *a, const size_t length, const char *b, const size_t bLength) {
- // Shortcut optimizations / degenerate cases.
- if (a == b) {
- return 0;
- }
+levenshtein_n(const char *a, const size_t length, const char *b,
+ const size_t bLength)
+{
+ // Shortcut optimizations / degenerate cases.
+ if (a == b) {
+ return 0;
+ }
- if (length == 0) {
- return bLength;
- }
+ if (length == 0) {
+ return bLength;
+ }
- if (bLength == 0) {
- return length;
- }
+ if (bLength == 0) {
+ return length;
+ }
- size_t *cache = calloc(length, sizeof(size_t));
- size_t index = 0;
- size_t bIndex = 0;
- size_t distance;
- size_t bDistance;
- size_t result;
- char code;
+ size_t *cache = calloc(length, sizeof(size_t));
+ size_t index = 0;
+ size_t bIndex = 0;
+ size_t distance;
+ size_t bDistance;
+ size_t result;
+ char code;
- // initialize the vector.
- while (index < length) {
- cache[index] = index + 1;
- index++;
- }
+ // initialize the vector.
+ while (index < length) {
+ cache[index] = index + 1;
+ index++;
+ }
- // Loop.
- while (bIndex < bLength) {
- code = b[bIndex];
- result = distance = bIndex++;
- index = SIZE_MAX;
+ // Loop.
+ while (bIndex < bLength) {
+ code = b[bIndex];
+ result = distance = bIndex++;
+ index = SIZE_MAX;
- while (++index < length) {
- bDistance = code == a[index] ? distance : distance + 1;
- distance = cache[index];
+ while (++index < length) {
+ bDistance = code == a[index] ? distance : distance + 1;
+ distance = cache[index];
- cache[index] = result = distance > result
- ? bDistance > result
- ? result + 1
- : bDistance
- : bDistance > distance
- ? distance + 1
- : bDistance;
- }
- }
+ cache[index] = result = distance > result
+ ? bDistance > result
+ ? result + 1
+ : bDistance
+ : bDistance > distance
+ ? distance + 1
+ : bDistance;
+ }
+ }
- free(cache);
+ free(cache);
- return result;
+ return result;
}
size_t
-levenshtein(const char *a, const char *b) {
- const size_t length = strlen(a);
- const size_t bLength = strlen(b);
+levenshtein(const char *a, const char *b)
+{
+ const size_t length = strlen(a);
+ const size_t bLength = strlen(b);
- return levenshtein_n(a, length, b, bLength);
+ return levenshtein_n(a, length, b, bLength);
}
diff --git a/app/bin/linknoteui.c b/app/bin/linknoteui.c
index cb98686..a47bb58 100644
--- a/app/bin/linknoteui.c
+++ b/app/bin/linknoteui.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 "custom.h"
@@ -29,39 +29,42 @@
#include "track.h"
#include "validator.h"
-extern BOOL_T inDescribeCmd;
-
#define DEFAULTLINKURL "http://www.xtrkcad.org/"
#define DEFAULTLINKTITLE "The XTrackCAD Homepage"
-
-static struct extraDataNote_t noteDataInUI;
+struct {
+ coOrd pos;
+ int layer;
+ track_p trk;
+ char title[TITLEMAXIMUMLENGTH];
+ char url[URLMAXIMUMLENGTH];
+} linkNoteData;
static void NoteLinkBrowse(void *junk);
static void NoteLinkOpen(char *url );
-static paramFloatRange_t r_1000_1000 = { -1000.0, 1000.0, 80 };
-static paramData_t linkEditPLs[] = {
+static paramFloatRange_t noRangeCheck = { 0.0, 0.0, 80, PDO_NORANGECHECK_HIGH | PDO_NORANGECHECK_LOW };
+static paramData_t linkNotePLs[] = {
#define I_ORIGX (0)
- /*0*/ { PD_FLOAT, &noteDataInUI.pos.x, "origx", PDO_DIM, &r_1000_1000, N_("Position X") },
+ /*0*/ { PD_FLOAT, &linkNoteData.pos.x, "origx", PDO_DIM|PDO_NOPREF, &noRangeCheck, N_("Position X") },
#define I_ORIGY (1)
- /*1*/ { PD_FLOAT, &noteDataInUI.pos.y, "origy", PDO_DIM, &r_1000_1000, N_("Position Y") },
+ /*1*/ { PD_FLOAT, &linkNoteData.pos.y, "origy", PDO_DIM|PDO_NOPREF, &noRangeCheck, N_("Position Y") },
#define I_LAYER (2)
- /*2*/ { PD_DROPLIST, &noteDataInUI.layer, "layer", 0, I2VP(150), "Layer", 0 },
+ /*2*/ { PD_DROPLIST, &linkNoteData.layer, "layer", PDO_NOPREF, I2VP(150), "Layer", 0 },
#define I_TITLE (3)
- /*3*/ { PD_STRING, NULL, "title", PDO_NOPREF | PDO_STRINGLIMITLENGTH, I2VP(200), N_("Title"), 0, 0, TITLEMAXIMUMLENGTH-1 },
+ /*3*/ { PD_STRING, &linkNoteData.title, "title", PDO_NOPREF | PDO_NOTBLANK, I2VP(200), N_("Title"), 0, 0, sizeof(linkNoteData.title ) },
#define I_URL (4)
- /*4*/ { PD_STRING, NULL, "name", PDO_NOPREF | PDO_STRINGLIMITLENGTH, I2VP(200), N_("URL"), 0, 0, URLMAXIMUMLENGTH-1 },
+ /*4*/ { PD_STRING, &linkNoteData.url, "name", PDO_NOPREF | PDO_NOTBLANK, I2VP(200), N_("URL"), 0, 0, sizeof(linkNoteData.url ) },
#define I_OPEN (5)
/*5*/{ PD_BUTTON, NoteLinkBrowse, "openlink", PDO_DLGHORZ, NULL, N_("Open...") },
};
-static paramGroup_t linkEditPG = { "linkEdit", 0, linkEditPLs, COUNT( linkEditPLs ) };
-static wWin_p linkEditW;
+static paramGroup_t linkNotePG = { "linkNote", 0, linkNotePLs, COUNT( linkNotePLs ) };
+static wWin_p linkNoteW;
BOOL_T
IsLinkNote(track_p trk)
{
- struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
+ struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
return(xx->op == OP_NOTELINK);
}
@@ -74,7 +77,7 @@ IsLinkNote(track_p trk)
*/
static void NoteLinkBrowse(void *junk)
{
- NoteLinkOpen(noteDataInUI.noteData.linkData.url);
+ NoteLinkOpen(linkNoteData.url);
}
/**
@@ -84,49 +87,33 @@ static void NoteLinkBrowse(void *junk)
*/
static void NoteLinkOpen(char *url)
{
- wOpenFileExternal(url);
+ wOpenFileExternal(url);
}
static void
LinkDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP)
+ paramGroup_p pg,
+ int inx,
+ void * valueP)
{
- switch (inx) {
- case I_URL:
- if (strlen(noteDataInUI.noteData.linkData.url) > URLMAXIMUMLENGTH) {
- DynString message;
-
- DynStringMalloc(&message, 80);
- DynStringPrintf(&message, _("The entered URL is too long. The maximum allowed length is %d. Please edit the entered value."), URLMAXIMUMLENGTH);
- wNoticeEx(NT_ERROR,
- DynStringToCStr(&message),
- _("Re-edit"),
- NULL);
- DynStringFree(&message);
+ switch (inx) {
+ case I_URL:
+ if ( ! IsValidURL( linkNoteData.url ) ) {
+ printf( "URL %s is invalid\n", linkNoteData.url );
+ paramData_p p = &linkNotePLs[I_URL];
+ p->bInvalid = TRUE;
+ wWinPix_t h = wControlGetHeight(p->control);
+ wControlSetBalloon( p->control, 0, -h*3/4, "URL is invalid" );
+ ParamHilite( p->group->win, p->control, TRUE );
}
-
- if (IsValidURL(noteDataInUI.noteData.linkData.url) &&
- (strlen(noteDataInUI.noteData.linkData.url) <= URLMAXIMUMLENGTH))
- {
- wControlActive(linkEditPLs[I_OPEN].control, TRUE);
- ParamDialogOkActive(&linkEditPG, TRUE);
- } else {
- wControlActive(linkEditPLs[I_OPEN].control, FALSE);
- ParamDialogOkActive(&linkEditPG, FALSE);
- }
- break;
+ break;
case I_ORIGX:
case I_ORIGY:
- UpdateLink(&noteDataInUI, OR_NOTE, FALSE);
- break;
- case I_LAYER:
- UpdateLink(&noteDataInUI, LY_NOTE, FALSE);
+ // TODO: Redraw bitmap at new location
break;
default:
break;
- }
+ }
}
/**
@@ -136,11 +123,8 @@ LinkDlgUpdate(
static void
LinkEditCancel( wWin_p junk)
{
- if (inDescribeCmd) {
- UpdateFile(&noteDataInUI, CANCEL_NOTE, FALSE);
- }
ResetIfNotSticky();
- wHide(linkEditW);
+ wHide(linkNoteW);
}
/**
@@ -153,48 +137,48 @@ LinkEditCancel( wWin_p junk)
static void
LinkEditOK(void *junk)
{
- UpdateLink(&noteDataInUI, OK_LINK, FALSE);
- wHide(linkEditW);
+ track_p trk = linkNoteData.trk;
+ if ( trk == NULL ) {
+ // new note
+ trk = NewNote( -1, linkNoteData.pos, OP_NOTELINK );
+ }
+ struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
+ xx->pos = linkNoteData.pos;
+ SetTrkLayer( trk, linkNoteData.layer );
+ MyFree( xx->noteData.linkData.title );
+ xx->noteData.linkData.title = MyStrdup( linkNoteData.title );
+ MyFree( xx->noteData.linkData.url );
+ xx->noteData.linkData.url = MyStrdup( linkNoteData.url );
+ SetBoundingBox( trk, xx->pos, xx->pos );
+ DrawNewTrack( trk );
+ wHide(linkNoteW);
ResetIfNotSticky();
SetFileChanged();
}
-static void
-CreateEditLinkDialog(track_p trk, char *title)
+static void
+CreateEditLinkDialog(char *title)
{
// create the dialog if necessary
- if (!linkEditW) {
- noteDataInUI.base.trkType = T_NOTE;
- noteDataInUI.noteData.linkData.url = MyMalloc(URLMAXIMUMLENGTH);
- noteDataInUI.noteData.linkData.title = MyMalloc(TITLEMAXIMUMLENGTH);
- linkEditPLs[I_TITLE].valueP = noteDataInUI.noteData.linkData.title;
- linkEditPLs[I_URL].valueP = noteDataInUI.noteData.linkData.url;
- ParamRegister(&linkEditPG);
- linkEditW = ParamCreateDialog(&linkEditPG,
- "",
- _("Done"), LinkEditOK,
- LinkEditCancel, TRUE, NULL,
- F_BLOCK,
- LinkDlgUpdate);
- }
-
- wWinSetTitle(linkEditPG.win, MakeWindowTitle(title));
-
- // initialize the dialog fields
- struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
- noteDataInUI.pos = xx->pos;
- noteDataInUI.layer = xx->layer;
- noteDataInUI.trk = trk;
- strscpy(noteDataInUI.noteData.linkData.url, xx->noteData.linkData.url,URLMAXIMUMLENGTH );
- strscpy(noteDataInUI.noteData.linkData.title, xx->noteData.linkData.title, TITLEMAXIMUMLENGTH );
-
- FillLayerList((wList_p)linkEditPLs[I_LAYER].control);
- ParamLoadControls(&linkEditPG);
-
+ if (!linkNoteW) {
+ ParamRegister(&linkNotePG);
+ linkNoteW = ParamCreateDialog(&linkNotePG,
+ "",
+ _("Done"), LinkEditOK,
+ LinkEditCancel, TRUE, NULL,
+ F_BLOCK,
+ LinkDlgUpdate);
+ }
+
+ wWinSetTitle(linkNotePG.win, MakeWindowTitle(title));
+
+ FillLayerList((wList_p)linkNotePLs[I_LAYER].control);
+ ParamLoadControls(&linkNotePG);
+
// and show the dialog
- wShow(linkEditW);
+ wShow(linkNoteW);
}
/**
@@ -204,7 +188,7 @@ CreateEditLinkDialog(track_p trk, char *title)
void ActivateLinkNote(track_p trk)
{
- struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
NoteLinkOpen(xx->noteData.linkData.url);
}
@@ -219,23 +203,31 @@ void ActivateLinkNote(track_p trk)
void DescribeLinkNote(track_p trk, char * str, CSIZE_T len)
{
- struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
- DynString statusLine;
-
- DynStringMalloc(&statusLine, 80);
- DynStringPrintf(&statusLine,
- "Link: Layer=%d %-.80s (%s)",
- GetTrkLayer(trk)+1,
- xx->noteData.linkData.title,
- xx->noteData.linkData.url);
- strcpy(str, DynStringToCStr(&statusLine));
- DynStringFree(&statusLine);
-
- if (inDescribeCmd) {
- NoteStateSave(trk);
-
- CreateEditLinkDialog(trk, _("Update link"));
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
+ DynString statusLine;
+
+ DynStringMalloc(&statusLine, 80);
+ DynStringPrintf(&statusLine,
+ "Weblink (%d) Layer=%d %-.80s (%s)",
+ GetTrkIndex(trk),
+ GetTrkLayer(trk)+1,
+ xx->noteData.linkData.title,
+ xx->noteData.linkData.url);
+ strncpy(str, DynStringToCStr(&statusLine), len-1);
+ str[len-1] = '\0';
+ DynStringFree(&statusLine);
+ if ( ! inDescribeCmd ) {
+ return;
}
+
+ linkNoteData.pos = xx->pos;
+ linkNoteData.layer = GetTrkLayer( trk );
+ linkNoteData.trk = trk;
+ strscpy( linkNoteData.url, xx->noteData.linkData.url, sizeof linkNoteData.url );
+ strscpy( linkNoteData.title, xx->noteData.linkData.title,
+ sizeof linkNoteData.title );
+
+ CreateEditLinkDialog(_("Update Weblink"));
}
/**
@@ -245,12 +237,13 @@ void DescribeLinkNote(track_p trk, char * str, CSIZE_T len)
* \param the newly created trk
*/
-void NewLinkNoteUI(track_p trk)
+void NewLinkNoteUI( coOrd pos )
{
- struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
-
- xx->noteData.linkData.url = MyStrdup( DEFAULTLINKURL );
- xx->noteData.linkData.title = MyStrdup( DEFAULTLINKTITLE );
+ linkNoteData.pos = pos;
+ linkNoteData.layer = curLayer;
+ linkNoteData.trk = NULL;
+ strscpy( linkNoteData.url, DEFAULTLINKURL, sizeof( linkNoteData.url ) );
+ strscpy( linkNoteData.title, DEFAULTLINKTITLE, sizeof( linkNoteData.title ) );
- CreateEditLinkDialog(trk, _("Create link"));
+ CreateEditLinkDialog(_("Create Weblink"));
}
diff --git a/app/bin/lprintf.c b/app/bin/lprintf.c
index 802fa24..0989ec9 100644
--- a/app/bin/lprintf.c
+++ b/app/bin/lprintf.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 "custom.h"
@@ -46,8 +46,9 @@ static void LogInit( void )
{
int inx=0;
- if ( logTable_da.cnt != 0 )
+ if ( logTable_da.cnt != 0 ) {
return;
+ }
DYNARR_APPEND( logTable_t, logTable_da,10);
logTable(inx).name = "";
logTable(inx).level = 0;
@@ -74,14 +75,17 @@ static void LogDoOpen( void )
if ( logFileName ) {
logFile = fopen( logFileName, "a" );
if ( logFile == NULL ) {
- NoticeMessage( MSG_OPEN_FAIL, "Continue", NULL, "Log", logFileName, strerror(errno) );
+ NoticeMessage( MSG_OPEN_FAIL, "Continue", NULL, "Log", logFileName,
+ strerror(errno) );
perror( logFileName );
return;
}
}
- fprintf( logFile, "# %s Version: %s, Date: %s\n", sProdName, sVersion, ctime(&logClock) );
- if ( recordF )
+ fprintf( logFile, "# %s Version: %s, Date: %s\n", sProdName, sVersion,
+ ctime(&logClock) );
+ if ( recordF ) {
fprintf( recordF, "# LOG CLOCK %s\n", ctime(&logClock) );
+ }
}
EXPORT void LogClose( void )
@@ -90,10 +94,11 @@ EXPORT void LogClose( void )
if ( logFile ) {
time(&clock);
fprintf( logFile, "LOG END %s\n", ctime(&clock) );
- if ( logFile != stdout )
+ if ( logFile != stdout ) {
fclose( logFile );
- }
- logFile = NULL;
+ }
+ }
+ logFile = NULL;
}
EXPORT void LogSet( char * name, int level )
@@ -109,22 +114,24 @@ EXPORT int LogFindIndex( const char * name )
{
int inx;
for ( inx=0; inx<logTable_da.cnt; inx++ )
- if ( strcasecmp( logTable(inx).name, name ) == 0 )
+ if ( strcasecmp( logTable(inx).name, name ) == 0 ) {
return inx;
+ }
return 0;
}
EXPORT void LogPrintf(
- const char * format,
- ... )
+ const char * format,
+ ... )
{
va_list ap;
if (!logInitted) {
LogDoOpen();
logInitted = TRUE;
}
- if ( logFile == NULL )
+ if ( logFile == NULL ) {
return;
+ }
logLineNumber++;
if ( logLineNumber % 100 == 0 ) {
if ( recordF ) {
diff --git a/app/bin/macro.c b/app/bin/macro.c
index 1c38dd2..7105e98 100644
--- a/app/bin/macro.c
+++ b/app/bin/macro.c
@@ -1,5 +1,5 @@
/** \file macro.c
-
+ *
* Macros
*/
@@ -18,7 +18,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 "common.h"
@@ -28,13 +28,16 @@
#include "draw.h"
#include "fileio.h"
#include "misc.h"
-#include "param.h"
+#include "param.h"
#include "paths.h"
#include "track.h"
-#include "trackx.h"
#include "version.h"
#include "common-ui.h"
+#ifdef UTFCONVERT
+#include "include/utf8convert.h"
+#endif // UTFCONVERT
+
EXPORT long adjTimer;
static void DemoInitValues( void );
@@ -67,7 +70,8 @@ static paramData_t recordPLs[] = {
{ PD_BUTTON, DoRecordButton, "end", PDO_NORECORD|PDO_DLGHORZ, NULL, N_("End"), BO_DISABLED, I2VP(4) },
#define I_RECTEXT (3)
#define recordT ((wText_p)recordPLs[I_RECTEXT].control)
- { PD_TEXT, NULL, "text", PDO_NORECORD|PDO_DLGRESIZE, &recordTextData, NULL, BT_CHARUNITS|BO_READONLY} };
+ { PD_TEXT, NULL, "text", PDO_NORECORD|PDO_DLGRESIZE, &recordTextData, NULL, BT_CHARUNITS|BO_READONLY}
+};
static paramGroup_t recordPG = { "record", 0, recordPLs, COUNT( recordPLs ) };
@@ -82,37 +86,45 @@ static void ComputePause( void )
long msecs;
gettimeofday( &tim, NULL );
secs = tim.tv_sec-lastTim.tv_sec;
- if (secs > 10 || secs < 0)
+ if (secs > 10 || secs < 0) {
return;
+ }
msecs = secs * 1000 + (tim.tv_usec - lastTim.tv_usec)/1000;
- if (msecs > 5000)
+ if (msecs > 5000) {
msecs = 5000;
- if (msecs > 1)
+ }
+ if (msecs > 1) {
fprintf( recordF, "PAUSE %ld\n", msecs );
+ }
lastTim = tim;
}
#else
+#include <sys/types.h>
#include <sys/timeb.h>
+#include <time.h>
-static struct _timeb lastTim;
+static struct __timeb64 lastTim;
static void ComputePause( void )
{
- struct _timeb tim;
+ struct __timeb64 tim;
long secs, msecs;
_ftime( &tim );
secs = (long)(tim.time - lastTim.time);
- if (secs > 10 || secs < 0)
+ if (secs > 10 || secs < 0) {
return;
+ }
msecs = secs * 1000;
if (tim.millitm >= lastTim.millitm) {
msecs += (tim.millitm - lastTim.millitm);
} else {
msecs -= (lastTim.millitm - tim.millitm);
}
- if (msecs > 5000)
+ if (msecs > 5000) {
msecs = 5000;
- if (msecs > 1)
+ }
+ if (msecs > 1) {
fprintf( recordF, "PAUSE %ld\n", msecs );
+ }
lastTim = tim;
}
#endif
@@ -121,19 +133,21 @@ static void ComputePause( void )
EXPORT void RecordMouse( char * name, wAction_t action, POS_T px, POS_T py )
{
int keyState;
- if ( action == C_MOVE || action == C_RMOVE || (action&0xFF) == C_TEXT )
+ if ( action == C_MOVE || action == C_RMOVE || (action&0xFF) == C_TEXT ) {
ComputePause();
- else if ( action == C_DOWN || action == C_RDOWN )
+ } else if ( action == C_DOWN || action == C_RDOWN )
#ifndef WINDOWS
gettimeofday( &lastTim, NULL );
#else
_ftime( &lastTim );
#endif
- if (action == wActionMove && !recordMouseMoves)
+ if (action == wActionMove && !recordMouseMoves) {
return;
+ }
keyState = wGetKeyState();
- if (keyState)
+ if (keyState) {
fprintf( recordF, "KEYSTATE %d\n", keyState );
+ }
fprintf( recordF, "%s %d %0.3f %0.3f\n", name, (int)action, px, py );
fflush( recordF );
}
@@ -143,25 +157,30 @@ static int StartRecord( int cnt, char ** pathName, void * context )
{
time_t clock;
- assert( pathName != NULL );
- assert( cnt == 1 );
+ CHECK( pathName != NULL );
+ CHECK( cnt == 1 );
SetCurrentPath( MACROPATHKEY, pathName[0] );
recordF = fopen(pathName[0], "w");
if (recordF==NULL) {
- NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Recording"), pathName[0], strerror(errno) );
+ NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Recording"), pathName[0],
+ strerror(errno) );
return FALSE;
}
time(&clock);
- fprintf(recordF, "# %s Version: %s, Date: %s\n", sProdName, sVersion, ctime(&clock) );
+ fprintf(recordF, "# %s Version: %s, Date: %s\n", sProdName, sVersion,
+ ctime(&clock) );
fprintf(recordF, "VERSION %d\n", iParamVersion );
fprintf(recordF, "ROOMSIZE %0.1f x %0.1f\n", mapD.size.x, mapD.size.y );
fprintf(recordF, "SCALE %s\n", curScaleName );
- fprintf(recordF, "ORIG %0.3f %0.3f %0.3f\n", mainD.scale, mainD.orig.x, mainD.orig.y );
- if ( logClock != 0 )
+ fprintf(recordF, "ORIG %0.3f %0.3f %0.3f\n", mainD.scale, mainD.orig.x,
+ mainD.orig.y );
+ if ( logClock != 0 ) {
fprintf( recordF, "# LOG CLOCK %s\n", ctime(&logClock) );
- if ( logTable_da.cnt > 11 )
+ }
+ if ( logTable_da.cnt > 11 ) {
lprintf( "StartRecord( %s ) @ %s\n", pathName, ctime(&clock) );
+ }
ParamStartRecord();
WriteTracks( recordF, TRUE );
WriteLayers( recordF );
@@ -181,7 +200,7 @@ static void DoRecordButton( void * context )
char * cp;
int len;
- switch( (int)VP2L(context) ){
+ switch( (int)VP2L(context) ) {
case 0: /* Stop */
fprintf( recordF, "CLEAR\nMESSAGE\n");
fprintf( recordF, N_("End of Playback. Hit Step to exit\n"));
@@ -198,11 +217,12 @@ static void DoRecordButton( void * context )
case 4: /* End */
if (recordingMessage) {
len = wTextGetSize( recordT );
- if (len == 0)
+ if (len == 0) {
break;
+ }
cp = (char*)MyMalloc( len+2 );
wTextGetText( recordT, cp, len );
- if ( cp[len-1] == '\n' ) len--;
+ if ( cp[len-1] == '\n' ) { len--; }
cp[len] = '\0';
fprintf( recordF, "%s\n%s\nSTEP\n", cp, END_MESSAGE );
MyFree( cp );
@@ -249,8 +269,10 @@ EXPORT void DoRecord( void * context )
{
if (recordW == NULL) {
char * title = MakeWindowTitle(_("Record"));
- recordW = ParamCreateDialog( &recordPG, title, NULL, NULL, NULL, FALSE, NULL, F_RESIZE, NULL );
- recordFile_fs = wFilSelCreate( mainW, FS_SAVE, 0, title, sRecordFilePattern, StartRecord, NULL );
+ recordW = ParamCreateDialog( &recordPG, title, NULL, NULL, NULL, FALSE, NULL,
+ F_RESIZE, NULL );
+ recordFile_fs = wFilSelCreate( mainW, FS_SAVE, 0, title, sRecordFilePattern,
+ StartRecord, NULL );
}
wTextClear( recordT );
wFilSelect( recordFile_fs, GetCurrentPath(MACROPATHKEY ));
@@ -308,7 +330,8 @@ int DBMCount=0;
#define DRAWALL
typedef enum { FLASH_PLUS, FLASH_MINUS, REDRAW, CLEAR, DRAW, RESET, ORIG, MOVE_PLYBCK1, MOVE_PLYBCK2, MOVE_PLYBCK3, MOVE_PLYBCK4, QUIT } DrawBitMap_e;
-char * DrawBitMapToString(DrawBitMap_e dbm) {
+char * DrawBitMapToString(DrawBitMap_e dbm)
+{
switch(dbm) {
case FLASH_PLUS:
return "Flsh+";
@@ -340,15 +363,16 @@ char * DrawBitMapToString(DrawBitMap_e dbm) {
}
static void MacroDrawBitMap(
- DrawBitMap_e dbm,
- wDrawBitMap_p bm,
- coOrd pos,
- wDrawColor color )
+ DrawBitMap_e dbm,
+ wDrawBitMap_p bm,
+ coOrd pos,
+ wDrawColor color )
{
DrawBitMap( playbackD, pos, bm, color );
// wFlush();
- LOG( log_playbackCursor, 2, ("%s %d DrawBitMap( %p %p [%0.3f %0.3f] %d )\n", DrawBitMapToString(dbm), DBMCount++, playbackD->d, bm, pos, color ) );
+ LOG( log_playbackCursor, 2, ("%s %d DrawBitMap( %p %p [%0.3f %0.3f] %d )\n",
+ DrawBitMapToString(dbm), DBMCount++, playbackD->d, bm, pos, color ) );
}
@@ -363,7 +387,7 @@ EXPORT long playbackDelay = 100;
static long playbackSpeed = 2;
static void SetPlaybackSpeed(
- wIndex_t inx )
+ wIndex_t inx )
{
switch (inx) {
case 0: playbackDelay = 500; break;
@@ -378,7 +402,8 @@ static void SetPlaybackSpeed(
}
-EXPORT void RedrawPlaybackCursor() {
+EXPORT void RedrawPlaybackCursor()
+{
if ( playbackD && playbackBm && inPlayback) {
unsigned long options = playbackD->options;
playbackD->options |= DC_TEMP;
@@ -404,26 +429,29 @@ EXPORT void RedrawPlaybackCursor() {
}
static void MoveCursor(
- drawCmd_p d,
- playbackProc proc,
- wAction_t action,
- coOrd pos,
- wDrawBitMap_p bm,
- wDrawColor color )
+ drawCmd_p d,
+ playbackProc proc,
+ wAction_t action,
+ coOrd pos,
+ wDrawBitMap_p bm,
+ wDrawColor color )
{
DIST_T dist;
- coOrd dpos;
+ coOrd dpos;
int i, steps;
- if (d == NULL)
+ if (d == NULL) {
return;
+ }
if (playbackTimer == 0 /*&& !didPause*/) {
playbackBm = bm;
playbackColor = color;
dist = FindDistance( playbackPos, pos );
steps = (int)(dist / (PixelsPerStep*d->scale/d->dpi)) + 1;
- LOG( log_playbackCursor, 1, ( "PBC: [%0.3f %0.3f] - [%0.3f %0.3f] Dist:%0.3f Steps:%d\n", playbackPos.x, playbackPos.y, pos.x, pos.y, dist, steps ) );
+ LOG( log_playbackCursor, 1,
+ ( "PBC: [%0.3f %0.3f] - [%0.3f %0.3f] Dist:%0.3f Steps:%d\n", playbackPos.x,
+ playbackPos.y, pos.x, pos.y, dist, steps ) );
dpos.x = (pos.x-playbackPos.x)/steps;
dpos.y = (pos.y-playbackPos.y)/steps;
@@ -454,11 +482,11 @@ static void MoveCursor(
static void PlaybackCursor(
- drawCmd_p d,
- playbackProc proc,
- wAction_t action,
- coOrd pos,
- wDrawColor color )
+ drawCmd_p d,
+ playbackProc proc,
+ wAction_t action,
+ coOrd pos,
+ wDrawColor color )
{
wDrawBitMap_p bm = playbackBm;
playbackD = d;
@@ -469,51 +497,62 @@ static void PlaybackCursor(
switch( action&0xFF ) {
case wActionMove:
- bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow0_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrow0_ctl_bm:arrow0_bm); //0 is normal, shift, ctrl
+ bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow0_shift_bm:(MyGetKeyState()&WKEY_CTRL)
+ ?arrow0_ctl_bm:arrow0_bm); //0 is normal, shift, ctrl
MoveCursor( d, proc, wActionMove, pos, bm, wDrawColorBlack );
break;
case C_DOWN:
- bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow0_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrow0_ctl_bm:arrow0_bm);
+ bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow0_shift_bm:(MyGetKeyState()&WKEY_CTRL)
+ ?arrow0_ctl_bm:arrow0_bm);
MoveCursor( d, proc, wActionMove, pos, bm, wDrawColorBlack ); //Go to spot
- bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow3_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrow3_ctl_bm:arrow3_bm);
+ bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow3_shift_bm:(MyGetKeyState()&WKEY_CTRL)
+ ?arrow3_ctl_bm:arrow3_bm);
Flash( playbackColor=rightDragColor );
proc( action, pos );
- /* no break */
+ /* no break */
case C_MOVE:
- bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow3_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrow3_ctl_bm:arrow3_bm);
+ bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow3_shift_bm:(MyGetKeyState()&WKEY_CTRL)
+ ?arrow3_ctl_bm:arrow3_bm);
MoveCursor( d, proc, C_MOVE, pos, bm, rightDragColor );
break;
case C_UP:
- bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow3_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrow3_ctl_bm:arrow0_bm);
+ bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow3_shift_bm:(MyGetKeyState()&WKEY_CTRL)
+ ?arrow3_ctl_bm:arrow0_bm);
MoveCursor( d, proc, C_MOVE, pos, bm, rightDragColor );
Flash( rightDragColor );
proc( action, pos );
- bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow0_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrow0_ctl_bm:arrow0_bm);
+ bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow0_shift_bm:(MyGetKeyState()&WKEY_CTRL)
+ ?arrow0_ctl_bm:arrow0_bm);
MoveCursor( d, NULL, 0, pos, bm, wDrawColorBlack );
break;
case C_RDOWN:
- bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow0_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrow0_ctl_bm:arrow0_bm);
+ bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow0_shift_bm:(MyGetKeyState()&WKEY_CTRL)
+ ?arrow0_ctl_bm:arrow0_bm);
MoveCursor( d, proc, wActionMove, pos, bm, wDrawColorBlack ); //Go to spot
- bm = ((MyGetKeyState()&WKEY_SHIFT)?arrowr3_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrowr3_ctl_bm:arrowr3_bm);
+ bm = ((MyGetKeyState()&WKEY_SHIFT)?arrowr3_shift_bm:(MyGetKeyState()&WKEY_CTRL)
+ ?arrowr3_ctl_bm:arrowr3_bm);
Flash( playbackColor=leftDragColor );
proc( action, pos );
- /* no break */
+ /* no break */
case C_RMOVE:
- bm = ((MyGetKeyState()&WKEY_SHIFT)?arrowr3_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrowr3_ctl_bm:arrowr3_bm);
+ bm = ((MyGetKeyState()&WKEY_SHIFT)?arrowr3_shift_bm:(MyGetKeyState()&WKEY_CTRL)
+ ?arrowr3_ctl_bm:arrowr3_bm);
MoveCursor( d, proc, C_RMOVE, pos, bm, leftDragColor );
break;
case C_RUP:
- bm = ((MyGetKeyState()&WKEY_SHIFT)?arrowr3_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrowr3_ctl_bm:arrowr3_bm);
+ bm = ((MyGetKeyState()&WKEY_SHIFT)?arrowr3_shift_bm:(MyGetKeyState()&WKEY_CTRL)
+ ?arrowr3_ctl_bm:arrowr3_bm);
MoveCursor( d, proc, C_RMOVE, pos, bm, leftDragColor );
Flash( leftDragColor );
proc( action, pos );
- bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow0_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrow0_ctl_bm:arrow0_bm);
+ bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow0_shift_bm:(MyGetKeyState()&WKEY_CTRL)
+ ?arrow0_ctl_bm:arrow0_bm);
MoveCursor( d, NULL, 0, pos, bm, wDrawColorBlack );
break;
@@ -526,7 +565,7 @@ static void PlaybackCursor(
case C_TEXT:
proc( action, pos);
- char c = action>>8;
+// char c = action>>8;
bm = playbackBm;
break;
@@ -542,11 +581,11 @@ static void PlaybackCursor(
EXPORT void PlaybackMouse(
- playbackProc proc,
- drawCmd_p d,
- wAction_t action,
- coOrd pos,
- wDrawColor color )
+ playbackProc proc,
+ drawCmd_p d,
+ wAction_t action,
+ coOrd pos,
+ wDrawColor color )
{
PlaybackCursor( d, proc, action, pos, wDrawColorBlack );
didPause = FALSE;
@@ -554,16 +593,17 @@ EXPORT void PlaybackMouse(
EXPORT void MovePlaybackCursor(
- drawCmd_p d,
- coOrd pos,
- wBool_t direct, wControl_p control)
+ drawCmd_p d,
+ coOrd pos,
+ wBool_t direct, wControl_p control)
{
#ifdef MOVECURSORTOCOMMANDBUTTON
// Show the cursor clicking on the command button
// Not possile with current structure
playbackD = &tempD;
- if (!direct)
+ if (!direct) {
MoveCursor( d, NULL, wActionMove, pos, arrow0_bm, wDrawColorBlack );
+ }
unsigned long options = d->options;
d->options |= DC_TEMP;
wBool_t bTemp = wDrawSetTempMode( d->d, TRUE );
@@ -605,18 +645,18 @@ EXPORT wWin_p demoW;
EXPORT int curDemo = -1;
typedef struct {
- char * title;
- char * fileName;
- } demoList_t;
+ char * title;
+ char * fileName;
+} demoList_t;
static dynArr_t demoList_da;
#define demoList(N) DYNARR_N( demoList_t, demoList_da, N )
static struct wFilSel_t * playbackFile_fs;
typedef struct {
- char * label;
- playbackProc_p proc;
- void * data;
- } playbackProc_t;
+ char * label;
+ playbackProc_p proc;
+ void * data;
+} playbackProc_t;
static dynArr_t playbackProc_da;
#define playbackProc(N) DYNARR_N( playbackProc_t, playbackProc_da, N )
@@ -655,15 +695,17 @@ static paramData_t demoPLs[] = {
{ PD_DROPLIST, &playbackSpeed, "speed", PDO_NORECORD|PDO_LISTINDEX|PDO_DLGHORZ, I2VP(80), N_("Speed") },
#define I_DEMOTEXT (4)
#define demoT ((wText_p)demoPLs[I_DEMOTEXT].control)
- { PD_TEXT, NULL, "text", PDO_NORECORD|PDO_DLGRESIZE, &demoTextData, NULL, BT_CHARUNITS|BO_READONLY} };
+ { PD_TEXT, NULL, "text", PDO_NORECORD|PDO_DLGRESIZE, &demoTextData, NULL, BT_CHARUNITS|BO_READONLY}
+};
static paramGroup_t demoPG = { "demo", 0, demoPLs, COUNT( demoPLs ) };
EXPORT int MyGetKeyState( void )
{
- if (inPlayback)
+ if (inPlayback) {
return playbackKeyState;
- else
+ } else {
return wGetKeyState();
+ }
}
@@ -679,8 +721,9 @@ EXPORT void AddPlaybackProc( char * label, playbackProc_p proc, void * data )
static void PlaybackQuit( void )
{
long playbackSpeed1 = playbackSpeed;
- if (paramFile)
+ if (paramFile) {
fclose( paramFile );
+ }
paramFile = NULL;
inPlaybackQuit = TRUE;
wPrefReset();
@@ -702,8 +745,8 @@ static void PlaybackQuit( void )
ClearTracks();
checkPtMark = changed = 0;
RestoreTrackState();
- inPlaybackQuit = FALSE;
DoSetScale( oldScaleName );
+ inPlaybackQuit = FALSE;
DoChangeNotification( CHANGE_ALL );
CloseDemoWindows();
curDemo = -1;
@@ -719,13 +762,14 @@ static int documentEnable = 0;
static int documentAutoSnapshot = 0;
static drawCmd_t snapshot_d = {
- NULL,
- &screenDrawFuncs,
- 0,
- 16.0,
- 0,
- {0.0, 0.0}, {1.0, 1.0},
- Pix2CoOrd, CoOrd2Pix };
+ NULL,
+ &screenDrawFuncs,
+ 0,
+ 16.0,
+ 0,
+ {0.0, 0.0}, {1.0, 1.0},
+ Pix2CoOrd, CoOrd2Pix
+};
static int documentSnapshotNum = 1;
static int documentCopy = 0;
static FILE * documentFile;
@@ -735,14 +779,18 @@ EXPORT void TakeSnapshot( drawCmd_t * d )
{
char * cp;
wWinPix_t ix, iy;
- if (d->dpi < 0)
+ if (d->dpi < 0) {
d->dpi = mainD.dpi;
- if (d->scale < 0)
+ }
+ if (d->scale < 0) {
d->scale = mainD.scale;
- if (d->orig.x < 0 || d->orig.y < 0)
+ }
+ if (d->orig.x < 0 || d->orig.y < 0) {
d->orig = mainD.orig;
- if (d->size.x < 0 || d->size.y < 0)
+ }
+ if (d->size.x < 0 || d->size.y < 0) {
d->size = mainD.size;
+ }
ix = (wWinPix_t)(d->dpi*d->size.x/d->scale);
iy = (wWinPix_t)(d->dpi*d->size.y/d->scale);
d->d = wBitMapCreate( ix, iy, 8 );
@@ -777,7 +825,7 @@ EXPORT void TakeSnapshot( drawCmd_t * d )
* Regression test
*/
static int log_regression = 0;
-wBool_t bWriteEndPtDirectIndex;
+static int nRegressionFail = 0;
static BOOL_T DoRegression( char * sFileName )
{
@@ -787,115 +835,56 @@ static BOOL_T DoRegression( char * sFileName )
long regressVersion;
FILE * fRegression;
char * sRegressionFile = NULL;
- wBool_t bWroteActualTracks;
+// wBool_t bWroteActualTracks;
eRegression = log_regression > 0 ? logTable(log_regression).level : 0;
char * cp;
regressVersion = strtol( paramLine+16, &cp, 10 );
- if (cp == paramLine+16 )
+ if (cp == paramLine+16 ) {
regressVersion = PARAMVERSION;
+ }
LOG( log_regression, 1, ("REGRESSION %s %d %s:%d %s\n",
- eRegression==REGRESSION_SAVE?"SAVE":"CHECK",
- regressVersion,
- sFileName, paramLineNum,
- cp ) );
+ eRegression==REGRESSION_SAVE?"SAVE":"CHECK",
+ regressVersion,
+ sFileName, paramLineNum,
+ cp ) );
MakeFullpath( &sRegressionFile, workingDir, "xtrkcad.regress", NULL );
- switch ( eRegression ){
+ switch ( eRegression ) {
case REGRESSION_SAVE:
fRegression = fopen( sRegressionFile, "a" );
if ( fRegression == NULL ) {
- NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Regression"), sFileName, strerror(errno) );
+ NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Regression"), sFileName,
+ strerror(errno) );
} else {
fprintf( fRegression, "REGRESSION START %d %s\n",
- PARAMVERSION, cp );
+ PARAMVERSION, cp );
fprintf( fRegression, "# %s - %d\n", sFileName, paramLineNum );
WriteTracks( fRegression, FALSE );
fprintf( fRegression, "REGRESSION END\n" );
fclose( fRegression );
}
while ( fgets(paramLine, STR_LONG_SIZE, paramFile) != NULL ) {
- if ( strncmp( paramLine, "REGRESSION END", 14 ) == 0)
+ if ( strncmp( paramLine, "REGRESSION END", 14 ) == 0) {
break;
+ }
}
break;
case REGRESSION_CHECK:
case REGRESSION_QUIET:
oldParamVersion = paramVersion;
- paramVersion = regressVersion;
- bWroteActualTracks = FALSE;
- track_p to_first_save = to_first;
- track_p* to_last_save = to_last;
- while ( GetNextLine() ) {
- if ( paramLine[0] == '#' )
- continue;
- // Read Expected track
- to_first = NULL;
- to_last = &to_first;
- paramVersion = regressVersion;
- if ( !ReadTrack( paramLine ) ) {
- if ( paramFile == NULL )
- return FALSE;
- break;
- }
- if ( to_first == NULL ) {
- // Something bad happened
- break;
- }
- track_cp tExpected = to_first;
- to_first = to_first_save;
- // Find corresponding Actual track
- track_cp tActual = FindTrack( GetTrkIndex( tExpected ) );
- strcat( message, "Regression " );
- if ( ! CompareTrack( tActual, tExpected ) ) {
- // Actual doesn't match Expected
- LOG( log_regression, 1, (" FAIL: %s", message) );
- fRegression = fopen( sRegressionFile, "a" );
- if ( fRegression == NULL ) {
- NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Regression"), sRegressionFile, strerror(errno) );
- break;
- }
- fprintf( fRegression, "REGRESSION FAIL %d\n",
- PARAMVERSION );
- fprintf( fRegression, "# %s - %d\n", sFileName, paramLineNum );
- fprintf( fRegression, "# %s", message );
- if ( !bWroteActualTracks ) {
- // Print Actual tracks
- fprintf( fRegression, "Actual Tracks\n" );
- paramVersion = PARAMVERSION;
- WriteTracks( fRegression, FALSE );
- bWroteActualTracks = TRUE;
- }
- // Print Expected track
- to_first = tExpected;
- fprintf( fRegression, "Expected Track\n" );
- WriteTracks( fRegression, FALSE );
- fclose( fRegression );
- strcat( message, "Continue test?" );
- if ( eRegression == REGRESSION_CHECK ) {
- int rc = wNoticeEx( NT_ERROR, message, _("Stop"), _("Continue") );
- if ( !rc ) {
- while ( GetNextLine() &&
- strncmp( paramLine, "REGRESSION END", 14 ) != 0 )
- ;
- break;
- }
- }
- }
- // Delete Expected track
- to_first = tExpected;
- to_last = &to_first;
- FreeTrack( tExpected );
- }
- to_first = to_first_save;
- to_last = to_last_save;
- if ( strncmp( paramLine, "REGRESSION END", 14 ) != 0 )
- InputError( "Expected REGRESSION END", TRUE );
+ int nFail = CheckRegressionResult( regressVersion, sFileName,
+ eRegression == REGRESSION_QUIET );
paramVersion = oldParamVersion;
+ if ( nFail < 0 ) {
+ return FALSE;
+ }
+ nRegressionFail += nFail;
break;
case REGRESSION_NONE:
default:
while ( GetNextLine() ) {
- if ( strncmp( paramLine, "REGRESSION END", 14 ) == 0 )
+ if ( strncmp( paramLine, "REGRESSION END", 14 ) == 0 ) {
break;
+ }
}
break;
}
@@ -905,7 +894,7 @@ static BOOL_T DoRegression( char * sFileName )
}
static void EnableButtons(
- BOOL_T enable )
+ BOOL_T enable )
{
wButtonSetBusy( demoStep, !enable );
wButtonSetBusy( demoNext, !enable );
@@ -917,7 +906,7 @@ static void EnableButtons(
}
EXPORT void PlaybackMessage(
- char * line )
+ char * line )
{
char * cp;
wTextAppend( demoT, _(line) );
@@ -966,6 +955,7 @@ static void PlaybackSetup( void )
paramTogglePlaybackHilite = FALSE;
CompoundClearDemoDefns();
SaveLayers();
+ nRegressionFail = 0;
}
@@ -975,7 +965,7 @@ static void Playback( void )
POS_T zoom;
wIndex_t inx;
long timeout;
- static enum { pauseCmd, mouseCmd, otherCmd } thisCmd, lastCmd;
+ static enum { pauseCmd, mouseCmd, otherCmd } thisCmd/*, lastCmd*/;
size_t len;
static wBool_t demoWinOnTop = FALSE;
coOrd roomSize;
@@ -985,7 +975,7 @@ static void Playback( void )
useCurrentLayer = FALSE;
inPlayback = TRUE;
EnableButtons( FALSE );
- lastCmd = otherCmd;
+// lastCmd = otherCmd;
playbackTimer = 0;
if (demoWinOnTop) {
wWinTop( mainW );
@@ -995,9 +985,11 @@ static void Playback( void )
while (TRUE) {
if ( ! inPlayback )
// User pressed Quit
+ {
break;
+ }
if ( paramFile == NULL ||
- fgets(paramLine, STR_LONG_SIZE, paramFile) == NULL ) {
+ fgets(paramLine, STR_LONG_SIZE, paramFile) == NULL ) {
paramTogglePlaybackHilite = FALSE;
CloseDemoWindows();
if (paramFile) {
@@ -1009,17 +1001,19 @@ static void Playback( void )
documentFile = NULL;
}
Reset();
- if (curDemo < 0 || curDemo >= demoList_da.cnt)
+ if (curDemo < 0 || curDemo >= demoList_da.cnt) {
break;
+ }
demoFileName = strdup(demoList(curDemo).fileName );
paramFile = fopen( demoFileName, "r" );
if ( paramFile == NULL ) {
- NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Demo"), demoFileName, strerror(errno) );
+ NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Demo"), demoFileName,
+ strerror(errno) );
inPlayback = FALSE;
SetUserLocale();
return;
}
-
+
paramFileName = strdup( demoFileName );
playbackColor=wDrawColorBlack;
paramLineNum = 0;
@@ -1032,7 +1026,8 @@ static void Playback( void )
DoChangeNotification( CHANGE_ALL );
CompoundClearDemoDefns();
if ( fgets(paramLine, STR_LONG_SIZE, paramFile) == NULL ) {
- NoticeMessage( MSG_CANT_READ_DEMO, _("Continue"), NULL, sProdName, demoFileName );
+ NoticeMessage( MSG_CANT_READ_DEMO, _("Continue"), NULL, sProdName,
+ demoFileName );
fclose( paramFile );
paramFile = NULL;
inPlayback = FALSE;
@@ -1054,8 +1049,9 @@ static void Playback( void )
}
thisCmd = otherCmd;
paramLineNum++;
- if (showParamLineNum)
+ if (showParamLineNum) {
InfoCount( paramLineNum );
+ }
Stripcr( paramLine );
if (paramLine[0] == '#') {
/* comment */
@@ -1077,7 +1073,8 @@ static void Playback( void )
demoWinOnTop = TRUE;
}
if ( documentAutoSnapshot ) {
- snapshot_d.dpi=snapshot_d.scale=snapshot_d.orig.x=snapshot_d.orig.y=snapshot_d.size.x=snapshot_d.size.y=-1;
+ snapshot_d.dpi=snapshot_d.scale=snapshot_d.orig.x=snapshot_d.orig.y=
+ snapshot_d.size.x=snapshot_d.size.y=-1;
TakeSnapshot(&snapshot_d);
}
if (playbackNonStop) {
@@ -1096,8 +1093,12 @@ static void Playback( void )
demoWinOnTop = TRUE;
while ( ( fgets( paramLine, STR_LONG_SIZE, paramFile ) ) != NULL ) {
paramLineNum++;
- if ( IsEND( END_MESSAGE ) )
+#ifdef UTFCONVERT
+ ConvertUTF8ToSystem(paramLine);
+#endif
+ if ( IsEND( END_MESSAGE ) ) {
break;
+ }
if ( strncmp(paramLine, "STEP", 3) == 0 ) {
wWinTop( demoW );
demoWinOnTop = TRUE;
@@ -1109,8 +1110,9 @@ static void Playback( void )
PlaybackMessage( paramLine );
}
} else if (strncmp( paramLine, "ROOMSIZE ", 9 ) == 0) {
- if (ParseRoomSize( paramLine+9, &roomSize ))
+ if (ParseRoomSize( paramLine+9, &roomSize )) {
SetRoomSize( roomSize );
+ }
} else if (strncmp( paramLine, "SCALE ", 6 ) == 0) {
DoSetScale( paramLine+6 );
} else if (strncmp( paramLine, "REDRAW", 6 ) == 0) {
@@ -1128,24 +1130,28 @@ static void Playback( void )
} else if (strncmp( paramLine, "VERSION", 7 ) == 0) {
paramVersion = atol( paramLine+8 );
if ( paramVersion > iParamVersion ) {
- NoticeMessage( MSG_PLAYBACK_VERSION_UPGRADE, _("Ok"), NULL, paramVersion, iParamVersion, sProdName );
+ NoticeMessage( MSG_PLAYBACK_VERSION_UPGRADE, _("Ok"), NULL, paramVersion,
+ iParamVersion, sProdName );
break;
}
if ( paramVersion < iMinParamVersion ) {
- NoticeMessage( MSG_PLAYBACK_VERSION_DOWNGRADE, _("Ok"), NULL, paramVersion, iMinParamVersion, sProdName );
+ NoticeMessage( MSG_PLAYBACK_VERSION_DOWNGRADE, _("Ok"), NULL, paramVersion,
+ iMinParamVersion, sProdName );
break;
}
} else if (strncmp( paramLine, "ORIG ", 5 ) == 0) {
- if ( !GetArgs( paramLine+5, "fff", &zoom, &x, &y ) )
+ if ( !GetArgs( paramLine+5, "fff", &zoom, &x, &y ) ) {
continue;
+ }
if (zoom == 0.0) {
double scale_x = mapD.size.x/(mainD.size.x/mainD.scale);
double scale_y = mapD.size.y/(mainD.size.y/mainD.scale);
- if (scale_x<scale_y)
+ if (scale_x<scale_y) {
scale_x = scale_y;
+ }
scale_x = ceil(scale_x);
- if (scale_x < 1) scale_x = 1;
- if (scale_x > MAX_MAIN_SCALE) scale_x = MAX_MAIN_SCALE;
+ if (scale_x < 1) { scale_x = 1; }
+ if (scale_x > MAX_MAIN_SCALE) { scale_x = MAX_MAIN_SCALE; }
zoom = scale_x;
}
mainD.scale = zoom;
@@ -1163,12 +1169,15 @@ static void Playback( void )
paramTogglePlaybackHilite = TRUE;
didPause = TRUE;
- if ( !GetArgs( paramLine+6, "l", &timeout ) )
+ if ( !GetArgs( paramLine+6, "l", &timeout ) ) {
continue;
- if (timeout > 10000)
+ }
+ if (timeout > 10000) {
timeout = 1000;
- if (playbackTimer == 0)
+ }
+ if (playbackTimer == 0) {
wPause( timeout*playbackDelay/100 );
+ }
wFlush();
if (demoWinOnTop) {
wWinTop( mainW );
@@ -1180,8 +1189,9 @@ static void Playback( void )
if (playbackTimer == 0) {
timeout = bigPause*playbackDelay/100;
- if (timeout <= dragTimeout)
+ if (timeout <= dragTimeout) {
timeout = dragTimeout+1;
+ }
wPause( timeout );
}
} else if (strncmp( paramLine, "KEYSTATE ", 9 ) == 0 ) {
@@ -1189,12 +1199,15 @@ static void Playback( void )
playbackKeyState = atoi( paramLine+9 );
} else {
playbackKeyState = 0;
- if ( strchr( paramLine+9, 'S' ) )
+ if ( strchr( paramLine+9, 'S' ) ) {
playbackKeyState |= WKEY_SHIFT;
- if ( strchr( paramLine+9, 'C' ) )
+ }
+ if ( strchr( paramLine+9, 'C' ) ) {
playbackKeyState |= WKEY_CTRL;
- if ( strchr( paramLine+9, 'A' ) )
+ }
+ if ( strchr( paramLine+9, 'A' ) ) {
playbackKeyState |= WKEY_ALT;
+ }
}
} else if (strncmp( paramLine, "TIMESTART", 9 ) == 0 ) {
playbackTimer = wGetTimer();
@@ -1211,23 +1224,26 @@ static void Playback( void )
wTextAppend( demoT, wMemStats() );
wTextAppend( demoT, "\n" );
} else if (strncmp( paramLine, "SNAPSHOT", 8 ) == 0 ) {
- if ( !documentEnable )
+ if ( !documentEnable ) {
continue;
- snapshot_d.dpi=snapshot_d.scale=snapshot_d.orig.x=snapshot_d.orig.y=snapshot_d.size.x=snapshot_d.size.y=-1;
+ }
+ snapshot_d.dpi=snapshot_d.scale=snapshot_d.orig.x=snapshot_d.orig.y=
+ snapshot_d.size.x=snapshot_d.size.y=-1;
cp = paramLine+8;
- while (*cp && isspace((unsigned char)*cp)) cp++;
- if (snapshot_d.dpi = strtod( cp, &cq ), cp == cq)
+ while (*cp && isspace((unsigned char)*cp)) { cp++; }
+ if (snapshot_d.dpi = strtod( cp, &cq ), cp == cq) {
snapshot_d.dpi = -1;
- else if (snapshot_d.scale = strtod( cq, &cp ), cp == cq)
+ } else if (snapshot_d.scale = strtod( cq, &cp ), cp == cq) {
snapshot_d.scale = -1;
- else if (snapshot_d.orig.x = strtod( cp, &cq ), cp == cq)
+ } else if (snapshot_d.orig.x = strtod( cp, &cq ), cp == cq) {
snapshot_d.orig.x = -1;
- else if (snapshot_d.orig.y = strtod( cq, &cp ), cp == cq)
+ } else if (snapshot_d.orig.y = strtod( cq, &cp ), cp == cq) {
snapshot_d.orig.y = -1;
- else if (snapshot_d.size.x = strtod( cp, &cq ), cp == cq)
+ } else if (snapshot_d.size.x = strtod( cp, &cq ), cp == cq) {
snapshot_d.size.x = -1;
- else if (snapshot_d.size.y = strtod( cq, &cp ), cp == cq)
+ } else if (snapshot_d.size.y = strtod( cq, &cp ), cp == cq) {
snapshot_d.size.y = -1;
+ }
TakeSnapshot(&snapshot_d);
} else if (strncmp( paramLine, "DOCUMENT ON", 11 ) == 0 ) {
documentCopy = documentEnable;
@@ -1236,16 +1252,18 @@ static void Playback( void )
} else if (strncmp( paramLine, "DOCUMENT COPY", 13 ) == 0 ) {
while ( ( fgets( paramLine, STR_LONG_SIZE, paramFile ) ) != NULL ) {
paramLineNum++;
- if ( IsEND( END_MESSAGE ) )
+ if ( IsEND( END_MESSAGE ) ) {
break;
- if ( documentCopy && documentFile )
+ }
+ if ( documentCopy && documentFile ) {
fprintf( documentFile, "%s", paramLine );
+ }
}
} else if ( strncmp( paramLine, "DEMOINIT", 8 ) == 0 ) {
DemoInitValues();
} else if ( strncmp( paramLine, "REGRESSION START", 16 ) == 0 ) {
DoRegression( curDemo < 1 ? paramFileName :
- demoList(curDemo-1).fileName );
+ demoList(curDemo-1).fileName );
} else {
if (strncmp( paramLine, "MOUSE ", 6 ) == 0) {
thisCmd = mouseCmd;
@@ -1253,14 +1271,18 @@ static void Playback( void )
if (strncmp( paramLine, "MAP ", 6 ) == 0) {
thisCmd = mouseCmd;
}
+#ifdef UTFCONVERT
+ ConvertUTF8ToSystem(paramLine);
+#endif
for ( inx=0; inx<playbackProc_da.cnt; inx++ ) {
len = strlen(playbackProc(inx).label);
if (strncmp( paramLine, playbackProc(inx).label, len ) == 0) {
if (playbackProc(inx).data == NULL) {
- while (paramLine[len] == ' ') len++;
+ while (paramLine[len] == ' ') { len++; }
playbackProc(inx).proc( paramLine+len );
- } else
+ } else {
playbackProc(inx).proc( (char*)playbackProc(inx).data );
+ }
break;
}
}
@@ -1272,7 +1294,7 @@ static void Playback( void )
NoticeMessage( MSG_PLAYBACK_UNK_CMD, _("Ok"), NULL, paramLineNum, paramLine );
}
}
- lastCmd = thisCmd;
+// lastCmd = thisCmd;
wFlush();
if (pauseDemo) {
EnableButtons( TRUE );
@@ -1298,13 +1320,14 @@ static void Playback( void )
static int StartPlayback( int cnt, char **pathName, void * context )
{
- assert( pathName != NULL );
- assert( cnt ==1 );
+ CHECK( pathName != NULL );
+ CHECK( cnt ==1 );
SetCurrentPath( MACROPATHKEY, pathName[0] );
paramFile = fopen( pathName[0], "r" );
if ( paramFile == NULL ) {
- NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Playback"), pathName[0], strerror(errno) );
+ NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Playback"), pathName[0],
+ strerror(errno) );
return FALSE;
}
@@ -1328,7 +1351,6 @@ static void DoDemoButton( void * command )
case 0:
/* step */
playbackNonStop = (wGetKeyState() & WKEY_SHIFT) != 0;
- paramHiliteFast = (wGetKeyState() & WKEY_CTRL) != 0;
Playback();
break;
case 1:
@@ -1336,15 +1358,17 @@ static void DoDemoButton( void * command )
DoSaveAs( NULL );
} else {
/* next */
- if (paramFile)
+ if (paramFile) {
fclose(paramFile);
+ }
paramFile = NULL;
wTextClear( demoT );
if ( (wGetKeyState()&WKEY_SHIFT)!=0 ) {
- if ( curDemo >= 2 )
+ if ( curDemo >= 2 ) {
curDemo -= 2;
- else
+ } else {
curDemo = 0;
+ }
}
Playback();
}
@@ -1372,11 +1396,11 @@ static void DoDemoButton( void * command )
static void DemoDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
- if ( inx != I_DEMOSPEED ) return;
+ if ( inx != I_DEMOSPEED ) { return; }
SetPlaybackSpeed( (wIndex_t)*(long*)valueP );
}
@@ -1384,7 +1408,8 @@ static void DemoDlgUpdate(
static void CreateDemoW( void )
{
char * title = MakeWindowTitle(_("Demo"));
- demoW = ParamCreateDialog( &demoPG, title, NULL, NULL, NULL, FALSE, NULL, F_RESIZE, DemoDlgUpdate );
+ demoW = ParamCreateDialog( &demoPG, title, NULL, NULL, NULL, FALSE, NULL,
+ F_RESIZE, DemoDlgUpdate );
wListAddValue( demoSpeedL, _("Slowest"), NULL, I2VP(0) );
wListAddValue( demoSpeedL, _("Slow"), NULL, I2VP(1) );
@@ -1393,14 +1418,16 @@ static void CreateDemoW( void )
wListAddValue( demoSpeedL, _("Faster"), NULL, I2VP(4) );
wListAddValue( demoSpeedL, _("Fastest"), NULL, I2VP(5) );
wListSetIndex( demoSpeedL, (wIndex_t)playbackSpeed );
- playbackFile_fs = wFilSelCreate( mainW, FS_LOAD, 0, title, sRecordFilePattern, StartPlayback, NULL );
+ playbackFile_fs = wFilSelCreate( mainW, FS_LOAD, 0, title, sRecordFilePattern,
+ StartPlayback, NULL );
}
EXPORT void DoPlayBack( void * context )
{
- if (demoW == NULL)
+ if (demoW == NULL) {
CreateDemoW();
+ }
wButtonSetLabel( demoNext, _("Save") );
wFilSelect( playbackFile_fs, GetCurrentPath(MACROPATHKEY));
}
@@ -1414,82 +1441,84 @@ EXPORT void DoPlayBack( void * context )
*/
static char * demoInitParams[] = {
- "layout title1 XTrackCAD",
- "layout title2 Demo",
- "GROUP layout",
- "display tunnels 1",
- "display endpt 2",
- "display labelenable 0",
- "display description-fontsize 48",
- "display labelscale 8",
- "display layoutlabels 6",
- "display tworailscale 16",
- "display tiedraw 0",
- "pref mingridspacing 5",
- "pref balloonhelp 1",
- "display hotbarlabels 1",
- "display mapscale 64",
- "display livemap 0",
- "display carhotbarlabels 1",
- "display hideTrainsInTunnels 0",
- "GROUP display",
- "pref turntable-angle 15.00",
- "cmdopt preselect 1",
- "pref coupling-speed-max 100",
- "cmdopt rightclickmode 0",
- "GROUP cmdopt",
- "pref checkpoint 0",
- "pref units 0",
- "pref dstfmt 1",
- "pref anglesystem 0",
- "pref minlength 0.100",
- "pref connectdistance 0.100",
- "pref connectangle 1.000",
- "pref dragpixels 20",
- "pref dragtimeout 500",
- "display autoPan 0",
- "display listlabels 7",
- "layout mintrackradius 1.000",
- "layout maxtrackgrade 5.000",
- "display trainpause 300",
- "GROUP pref",
- "rgbcolor snapgrid 65280",
- "rgbcolor marker 16711680",
- "rgbcolor border 0",
- "rgbcolor crossmajor 16711680",
- "rgbcolor crossminor 255",
- "rgbcolor normal 0",
- "rgbcolor selected 16711680",
- "rgbcolor profile 16711935",
- "rgbcolor exception 16711808",
- "rgbcolor tie 16744448",
- "GROUP rgbcolor",
- "easement val 0.000",
- "easement r 0.000",
- "easement x 0.000",
- "easement l 0.000",
- "GROUP easement",
- "grid horzspacing 12.000",
- "grid horzdivision 12",
- "grid horzenable 0",
- "grid vertspacing 12.000",
- "grid vertdivision 12",
- "grid vertenable 0",
- "grid origx 0.000",
- "grid origy 0.000",
- "grid origa 0.000",
- "grid show 0",
- "GROUP grid",
- "misc toolbarset 65535",
- "misc cur-turnout-ep 0",
- "GROUP misc",
- "sticky set 67108479", /* 0x3fffe7f - all but Helix and Turntable */
- "GROUP sticky",
- "turnout hide 0",
- "layer button-count 10",
- "cmdopt selectmode 0",
- "cmdopt selectzero 1",
- NULL };
+ "layout title1 XTrackCAD",
+ "layout title2 Demo",
+ "GROUP layout",
+ "display tunnels 1",
+ "display endpt 2",
+ "display labelenable 0",
+ "display description-fontsize 48",
+ "display labelscale 8",
+ "display layoutlabels 6",
+ "display tworailscale 16",
+ "display tiedraw 0",
+ "pref mingridspacing 5",
+ "pref balloonhelp 1",
+ "display hotbarlabels 1",
+ "display mapscale 64",
+ "display livemap 0",
+ "display carhotbarlabels 1",
+ "display hideTrainsInTunnels 0",
+ "GROUP display",
+ "pref turntable-angle 15.00",
+ "cmdopt preselect 1",
+ "pref coupling-speed-max 100",
+ "cmdopt rightclickmode 0",
+ "GROUP cmdopt",
+ "pref checkpoint 0",
+ "pref units 0",
+ "pref dstfmt 1",
+ "pref anglesystem 0",
+ "pref minlength 0.100",
+ "pref connectdistance 0.100",
+ "pref connectangle 1.000",
+ "pref dragpixels 20",
+ "pref dragtimeout 500",
+ "display autoPan 0",
+ "display listlabels 7",
+ "layout mintrackradius 1.000",
+ "layout maxtrackgrade 5.000",
+ "display trainpause 300",
+ "GROUP pref",
+ "rgbcolor snapgrid 65280",
+ "rgbcolor marker 16711680",
+ "rgbcolor border 0",
+ "rgbcolor crossmajor 16711680",
+ "rgbcolor crossminor 255",
+ "rgbcolor normal 0",
+ "rgbcolor selected 16711680",
+ "rgbcolor profile 16711935",
+ "rgbcolor exception 16711808",
+ "rgbcolor tie 16744448",
+ "GROUP rgbcolor",
+ "easement val 0.000",
+ "easement r 0.000",
+ "easement x 0.000",
+ "easement l 0.000",
+ "GROUP easement",
+ "grid horzspacing 12.000",
+ "grid horzdivision 12",
+ "grid horzenable 0",
+ "grid vertspacing 12.000",
+ "grid vertdivision 12",
+ "grid vertenable 0",
+ "grid origx 0.000",
+ "grid origy 0.000",
+ "grid origa 0.000",
+ "grid show 0",
+ "GROUP grid",
+ "misc toolbarset 65535",
+ "misc cur-turnout-ep 0",
+ "GROUP misc",
+ "sticky set 67108479", /* 0x3fffe7f - all but Helix and Turntable */
+ "GROUP sticky",
+ "newFixedTrack hide 0",
+ "layer button-count 10",
+ "cmdopt selectmode 0",
+ "cmdopt selectzero 1",
+ "rescale change-dim 0",
+ NULL
+};
static void DemoInitValues( void )
{
@@ -1510,13 +1539,13 @@ static void DemoInitValues( void )
strcpy( scaleName, "DEMO" );
DoSetScale( scaleName );
if ( paramPlaybackProc == NULL ) {
- wNoticeEx( NT_INFORMATION, _("Can not find PARAMETER playback proc"), _("Ok"), NULL );
+ wNoticeEx( NT_INFORMATION, _("Can not find PARAMETER playback proc"), _("Ok"),
+ NULL );
return;
}
- paramHiliteFast = TRUE;
- for ( cpp = demoInitParams; *cpp; cpp++ )
+ for ( cpp = demoInitParams; *cpp; cpp++ ) {
paramPlaybackProc( *cpp );
- paramHiliteFast = FALSE;
+ }
// Have to do this manually
oldMagneticSnap = MagneticSnap( TRUE );
}
@@ -1525,8 +1554,9 @@ static void DemoInitValues( void )
static void DoDemo( void * demoNumber )
{
- if (demoW == NULL)
+ if (demoW == NULL) {
CreateDemoW();
+ }
wButtonSetLabel( demoNext, _("Next") );
curDemo = (int)VP2L(demoNumber);
if ( curDemo < 0 || curDemo >= demoList_da.cnt ) {
@@ -1541,39 +1571,43 @@ static void DoDemo( void * demoNumber )
static BOOL_T ReadDemo(
- char * line )
+ char * line )
{
- static wMenu_p m;
- char * cp;
- char *path;
-
- if ( m == NULL )
- m = demoM;
-
- if ( strncmp( line, "DEMOGROUP ", 10 ) == 0 ) {
- m = wMenuMenuCreate( demoM, NULL, _(line+10) );
-
- } else if ( strncmp( line, "DEMO ", 5 ) == 0 ) {
- if (line[5] != '"')
- goto error;
- cp = line+6;
- while (*cp && *cp != '"') cp++;
- if ( !*cp )
- goto error;
- *cp++ = '\0';
- while (*cp && *cp == ' ') cp++;
- if ( strlen(cp)==0 )
- goto error;
- DYNARR_APPEND( demoList_t, demoList_da, 10 );
- demoList( demoList_da.cnt-1 ).title = MyStrdup( _(line+6) );
- MakeFullpath(&path, libDir, "demos", cp, NULL);
- demoList(demoList_da.cnt - 1).fileName = path;
- wMenuPushCreate( m, NULL, _(line+6), 0, DoDemo, I2VP(demoList_da.cnt-1) );
+ static wMenu_p m = NULL;
+ char * cp;
+ char *path;
+
+ if ( m == NULL ) {
+ m = demoM;
+ }
+
+ if ( strncmp( line, "DEMOGROUP ", 10 ) == 0 ) {
+ m = wMenuMenuCreate( demoM, NULL, _(line+10) );
+
+ } else if ( strncmp( line, "DEMO ", 5 ) == 0 ) {
+ if (line[5] != '"') {
+ goto error;
+ }
+ cp = line+6;
+ while (*cp && *cp != '"') { cp++; }
+ if ( !*cp ) {
+ goto error;
+ }
+ *cp++ = '\0';
+ while (*cp && *cp == ' ') { cp++; }
+ if ( strlen(cp)==0 ) {
+ goto error;
}
- return TRUE;
+ DYNARR_APPEND( demoList_t, demoList_da, 10 );
+ demoList( demoList_da.cnt-1 ).title = MyStrdup( _(line+6) );
+ MakeFullpath(&path, libDir, "demos", cp, NULL);
+ demoList(demoList_da.cnt - 1).fileName = path;
+ wMenuPushCreate( m, NULL, _(line+6), 0, DoDemo, I2VP(demoList_da.cnt-1) );
+ }
+ return TRUE;
error:
- InputError( "Expected 'DEMO \"<Demo Name>\" <File Name>'", TRUE );
- return FALSE;
+ InputError( "Expected 'DEMO \"<Demo Name>\" <File Name>'", TRUE );
+ return FALSE;
}
@@ -1588,17 +1622,28 @@ EXPORT BOOL_T MacroInit( void )
rightDragColor = drawColorRed;
leftDragColor = drawColorBlue;
- arrow0_bm = wDrawBitMapCreate( mainD.d, arrow0_width, arrow0_height, 12, 12, arrow0_bits );
- arrow0_shift_bm = wDrawBitMapCreate( mainD.d, arrow0_shift_width, arrow0_shift_height, 12, 12, arrow0_shift_bits );
- arrow0_ctl_bm = wDrawBitMapCreate( mainD.d, arrow0_ctl_width, arrow0_ctl_height, 12, 12, arrow0_ctl_bits );
- arrow3_bm = wDrawBitMapCreate( mainD.d, arrow3_width, arrow3_height, 12, 12, arrow3_bits );
- arrow3_shift_bm = wDrawBitMapCreate( mainD.d, arrow3_shift_width, arrow3_shift_height, 12, 12, arrow3_shift_bits );
- arrow3_ctl_bm = wDrawBitMapCreate( mainD.d, arrow3_ctl_width, arrow3_ctl_height, 12, 12, arrow3_ctl_bits );
- arrowr3_bm = wDrawBitMapCreate( mainD.d, arrowr3_width, arrowr3_height, 12, 12, arrowr3_bits );
- arrowr3_shift_bm = wDrawBitMapCreate( mainD.d, arrowr3_shift_width, arrowr3_shift_height, 12, 12, arrowr3_shift_bits );
- arrowr3_ctl_bm = wDrawBitMapCreate( mainD.d, arrowr3_ctl_width, arrowr3_ctl_height, 12, 12, arrowr3_ctl_bits );
- arrows_bm = wDrawBitMapCreate( mainD.d, arrows_width, arrows_height, 12, 12, arrows_bits );
- flash_bm = wDrawBitMapCreate( mainD.d, flash_width, flash_height, 12, 12, flash_bits );
+ arrow0_bm = wDrawBitMapCreate( mainD.d, arrow0_width, arrow0_height, 12, 12,
+ arrow0_bits );
+ arrow0_shift_bm = wDrawBitMapCreate( mainD.d, arrow0_shift_width,
+ arrow0_shift_height, 12, 12, arrow0_shift_bits );
+ arrow0_ctl_bm = wDrawBitMapCreate( mainD.d, arrow0_ctl_width, arrow0_ctl_height,
+ 12, 12, arrow0_ctl_bits );
+ arrow3_bm = wDrawBitMapCreate( mainD.d, arrow3_width, arrow3_height, 12, 12,
+ arrow3_bits );
+ arrow3_shift_bm = wDrawBitMapCreate( mainD.d, arrow3_shift_width,
+ arrow3_shift_height, 12, 12, arrow3_shift_bits );
+ arrow3_ctl_bm = wDrawBitMapCreate( mainD.d, arrow3_ctl_width, arrow3_ctl_height,
+ 12, 12, arrow3_ctl_bits );
+ arrowr3_bm = wDrawBitMapCreate( mainD.d, arrowr3_width, arrowr3_height, 12, 12,
+ arrowr3_bits );
+ arrowr3_shift_bm = wDrawBitMapCreate( mainD.d, arrowr3_shift_width,
+ arrowr3_shift_height, 12, 12, arrowr3_shift_bits );
+ arrowr3_ctl_bm = wDrawBitMapCreate( mainD.d, arrowr3_ctl_width,
+ arrowr3_ctl_height, 12, 12, arrowr3_ctl_bits );
+ arrows_bm = wDrawBitMapCreate( mainD.d, arrows_width, arrows_height, 12, 12,
+ arrows_bits );
+ flash_bm = wDrawBitMapCreate( mainD.d, flash_width, flash_height, 12, 12,
+ flash_bits );
ParamRegister( &recordPG );
ParamRegister( &demoPG );
@@ -1608,3 +1653,20 @@ EXPORT BOOL_T MacroInit( void )
return TRUE;
}
+
+
+/**
+ * Run all regression tests
+ *
+ * return number of failed tests
+ */
+EXPORT int RegressionTestAll()
+{
+ playbackNonStop = TRUE;
+ playbackSpeed = 5;
+ CreateDemoW();
+ curDemo = 0;
+ PlaybackSetup();
+ Playback();
+ return nRegressionFail;
+}
diff --git a/app/bin/manifest.c b/app/bin/manifest.c
index 5fd9b5a..8adf0b1 100644
--- a/app/bin/manifest.c
+++ b/app/bin/manifest.c
@@ -1,55 +1,53 @@
/** \file manifest.c
* JSON routines
*/
- /* XTrkCad - Model Railroad CAD
- * Copyright (C) 2018 Adam Richards and Martin Fischer
- *
- * 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.
- */
-
+/* XTrkCad - Model Railroad CAD
+ * Copyright (C) 2018 Adam Richards and Martin Fischer
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
#include <string.h>
#include "cJSON.h"
#include "fileio.h"
#include "layout.h"
-#include "misc2.h"
#include "paths.h"
#include "include/utf8convert.h"
extern int log_zip;
- /**********************************************************
- * Build JSON Manifest - manifest.json
- * There are only two objects in the root -
- * - The layout object defines the correct filename for the layout
- * - The dependencies object is an arraylist of included elements
- *
- * Each element has a name, a filename and an arch-path (where in the archive it is located)
- * It may have other values - a common one the copy-path is where it was copied from the originators machine (info only)
- *
- * There is one reserved name - "background" which is for the image file that is used as a layout background
- *
- *\param IN nameOfLayout - the layout this is a manifest for
- *\param IN background - the full filepath to the background image (or NULL) -> TODO this will become an array with a count
- *\param IN DependencyDir - the relative path in the archive to the directory in which the included object(s) will be stored
- *
- *\returns a String containing the JSON object
- */
+/**********************************************************
+ * Build JSON Manifest - manifest.json
+ * There are only two objects in the root -
+ * - The layout object defines the correct filename for the layout
+ * - The dependencies object is an arraylist of included elements
+ *
+ * Each element has a name, a filename and an arch-path (where in the archive it is located)
+ *
+ * There is one reserved name - "background" which is for the image file that is used as a layout background
+ *
+ *\param IN nameOfLayout - the layout this is a manifest for
+ *\param IN background - the full filepath to the background image (or NULL) -> TODO this will become an array with a count
+ *\param IN DependencyDir - the relative path in the archive to the directory in which the included object(s) will be stored
+ *
+ *\returns a String containing the JSON object
+ */
char* CreateManifest(char* nameOfLayout, char* background,
- char* dependencyDir)
+ char* dependencyDir)
{
cJSON* manifest = cJSON_CreateObject();
if (manifest != NULL) {
@@ -75,13 +73,7 @@ char* CreateManifest(char* nameOfLayout, char* background,
cJSON_AddStringToObject(b_object, "filename", backg);
MyFree(backg);
backg = MyStrdup(background);
-#ifdef UTFCONVERT
- backg = Convert2UTF8(backg);
- ConvertPathForward(backg);
-#endif // UTFCONVERT
- cJSON_AddStringToObject(b_object, "copy-path", backg);
cJSON_AddStringToObject(b_object, "arch-path", dependencyDir);
- MyFree(backg);
cJSON_AddNumberToObject(b_object, "size", GetLayoutBackGroundSize());
cJSON_AddNumberToObject(b_object, "pos-x", GetLayoutBackGroundPos().x);
cJSON_AddNumberToObject(b_object, "pos-y", GetLayoutBackGroundPos().y);
@@ -121,11 +113,11 @@ char* ParseManifest(char* manifest, char* zip_directory)
LOG(log_zip, 1, ("Zip-Manifest %s \n", layoutname))
#if DEBUG
- fprintf(stderr, "Layout name %s \n", layoutname);
+ fprintf(stderr, "Layout name %s \n", layoutname);
#endif
cJSON* dependencies = cJSON_GetObjectItemCaseSensitive(json_manifest,
- "dependencies");
+ "dependencies");
cJSON* dependency;
cJSON_ArrayForEach(dependency, dependencies) {
cJSON* name = cJSON_GetObjectItemCaseSensitive(dependency, "name");
@@ -141,7 +133,7 @@ char* ParseManifest(char* manifest, char* zip_directory)
ConvertUTF8ToSystem(path);
#endif
MakeFullpath(&background_file[0], zip_directory, path,
- file, NULL);
+ file, NULL);
MyFree(file);
MyFree(path);
#if DEBUG
diff --git a/app/bin/manifest.h b/app/bin/manifest.h
index 8e751f0..20de6b3 100644
--- a/app/bin/manifest.h
+++ b/app/bin/manifest.h
@@ -1,6 +1,6 @@
#ifndef HAVE_MANIFEST_H
#define HAVE_MANIFEST_H
- char* CreateManifest(char* nameOfLayout, char* background,
- char* DependencyDir);
- char* ParseManifest(char* manifest, char* zip_directory);
-#endif
+char* CreateManifest(char* nameOfLayout, char* background,
+ char* DependencyDir);
+char* ParseManifest(char* manifest, char* zip_directory);
+#endif
diff --git a/app/bin/menu.c b/app/bin/menu.c
new file mode 100644
index 0000000..ae2cfe2
--- /dev/null
+++ b/app/bin/menu.c
@@ -0,0 +1,1486 @@
+/* file misc.c
+ * Main routine and initialization for the application
+ */
+
+/* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+
+
+#include "menu.h"
+#include "common.h"
+#include "compound.h"
+#include "cselect.h"
+#include "cundo.h"
+#include "custom.h"
+#include "fileio.h"
+#include "layout.h"
+#include "param.h"
+#include "include/problemrep.h"
+#include "smalldlg.h"
+#include "common-ui.h"
+#include "ctrain.h"
+
+static paramData_t menuPLs[101] = { { PD_LONG, &toolbarSet, "toolbarset" }, {
+ PD_LONG, &curTurnoutEp, "cur-turnout-ep"
+ }
+};
+static paramGroup_t menuPG = { "misc", PGO_RECORD, menuPLs, 2 };
+
+static void InitCmdExport( void );
+
+EXPORT wMenu_p demoM;
+EXPORT wMenu_p popup1M, popup2M;
+static wMenu_p popup1aM, popup2aM;
+static wMenu_p popup1mM, popup2mM;
+EXPORT wButton_p undoB;
+EXPORT wButton_p redoB;
+EXPORT wButton_p zoomUpB;
+EXPORT wButton_p zoomDownB;
+EXPORT wButton_p zoomExtentsB;
+EXPORT wButton_p mapShowB;
+static wButton_p magnetsB;
+EXPORT wMenuToggle_p mapShowMI;
+static wMenuToggle_p magnetsMI;
+EXPORT wMenuList_p winList_mi;
+EXPORT wMenuList_p fileList_ml;
+EXPORT wMenuToggle_p snapGridEnableMI;
+EXPORT wMenuToggle_p snapGridShowMI;
+
+
+/*--------------------------------------------------------------------*/
+typedef struct {
+ char * label;
+ wMenu_p menu;
+} menuTrace_t, *menuTrace_p;
+static dynArr_t menuTrace_da;
+#define menuTrace(N) DYNARR_N( menuTrace_t, menuTrace_da, N )
+
+static void DoMenuTrace(wMenu_p menu, const char * label, void * data)
+{
+ /*printf( "MENUTRACE: %s/%s\n", (char*)data, label );*/
+ if (recordF) {
+ fprintf(recordF, "MOUSE 1 %0.3f %0.3f\n", oldMarker.x, oldMarker.y);
+ fprintf(recordF, "MENU %0.3f %0.3f \"%s\" \"%s\"\n", oldMarker.x,
+ oldMarker.y, (char*) data, label);
+ }
+}
+
+EXPORT wMenu_p MenuRegister(const char * label)
+{
+ wMenu_p m;
+ menuTrace_p mt;
+ m = wMenuPopupCreate(mainW, label);
+ DYNARR_APPEND(menuTrace_t, menuTrace_da, 10);
+ mt = &menuTrace(menuTrace_da.cnt - 1);
+ mt->label = strdup(label);
+ mt->menu = m;
+ wMenuSetTraceCallBack(m, DoMenuTrace, mt->label);
+ return m;
+}
+
+static void MenuPlayback(char * line)
+{
+ char * menuName, *itemName;
+ coOrd pos;
+ menuTrace_p mt;
+
+ if (!GetArgs(line, "pqq", &pos, &menuName, &itemName)) {
+ return;
+ }
+ for (mt = &menuTrace(0); mt < &menuTrace(menuTrace_da.cnt); mt++) {
+ if (strcmp(mt->label, menuName) == 0) {
+ MovePlaybackCursor(&mainD, pos, FALSE, NULL);
+ oldMarker = cmdMenuPos = pos;
+ wMenuAction(mt->menu, _(itemName));
+ return;
+ }
+ }
+ CHECKMSG( FALSE, ("menuPlayback: %s not found", menuName) );
+}
+
+
+/*****************************************************************************
+ *
+ * TOOLBAR
+ *
+ */
+
+
+/*
+ * These array control the choices available in the Toolbar setup.
+ * For each choice, the text is given and the respective mask is
+ * specified in the following array.
+ * Note: text and choices must be given in the same order.
+ */
+static char *AllToolbarLabels[] = { N_("File Buttons"), N_("Print Buttons"), N_("Import/Export Buttons"),
+ N_("Zoom Buttons"), N_("Undo Buttons"), N_("Easement Button"), N_("SnapGrid Buttons"),
+ N_("Create Track Buttons"), N_("Layout Control Elements"),
+ N_("Modify Track Buttons"), N_("Properties/Select"),
+ N_("Track Group Buttons"), N_("Train Group Buttons"),
+ N_("Create Misc Buttons"), N_("Ruler Button"),
+ N_("Layer Buttons"), N_("Hot Bar"),
+ NULL
+ };
+static long AllToolbarMasks[] = { 1 << BG_FILE, 1<< BG_PRINT, 1<< BG_EXPORTIMPORT,
+ 1<< BG_ZOOM, 1<< BG_UNDO, 1<< BG_EASE, 1 << BG_SNAP, 1 << BG_TRKCRT,
+ 1<< BG_CONTROL, 1<< BG_TRKMOD, 1 << BG_SELECT, 1 << BG_TRKGRP, 1 << BG_TRAIN,
+ 1<< BG_MISCCRT, 1<< BG_RULER, 1 << BG_LAYER, 1 << BG_HOTBAR
+ };
+
+static wMenuToggle_p AllToolbarMI[ COUNT( AllToolbarMasks ) ];
+
+static void ToolbarAction(void * data)
+{
+ int inx = (int)VP2L(data);
+ CHECK( inx >=0 && inx < COUNT( AllToolbarMasks ) );
+ wBool_t set = wMenuToggleGet( AllToolbarMI[inx] );
+ long mask = AllToolbarMasks[inx];
+ if (set) {
+ toolbarSet |= mask;
+ } else {
+ toolbarSet &= ~mask;
+ }
+ wPrefSetInteger( "misc", "toolbarset", toolbarSet );
+ MainProc( mainW, wResize_e, NULL, NULL );
+ if (recordF)
+ fprintf(recordF, "PARAMETER %s %s %ld", "misc", "toolbarset",
+ toolbarSet);
+}
+
+/**
+ * Create the Toolbar configuration submenu. Based on two arrays of descriptions and
+ * masks, the toolbar submenu is created dynamically.
+ *
+ * \param toolbarM IN menu to which the toogles will be added
+ */
+
+static void CreateToolbarM(wMenu_p toolbarM)
+{
+ int inx, cnt;
+ long *masks;
+ char **labels;
+ wBool_t set;
+
+ cnt = COUNT(AllToolbarMasks);
+ masks = AllToolbarMasks;
+ labels = AllToolbarLabels;
+ for (inx = 0; inx < cnt; inx++, masks++, labels++) {
+ set = (toolbarSet & *masks) != 0;
+ AllToolbarMI[inx] = wMenuToggleCreate(toolbarM, "toolbarM", _(*labels), 0, set,
+ ToolbarAction, I2VP(inx));
+ }
+}
+
+
+/*****************************************************************************
+ *
+ * ELEVATION HELPERS
+ *
+ */
+
+
+static wWin_p addElevW;
+#define addElevF (wFloat_p)addElevPD.control
+static DIST_T addElevValueV;
+static void DoAddElev(void * unused);
+
+static paramFloatRange_t rn1000_1000 = { -1000.0, 1000.0 };
+static paramData_t addElevPLs[] = { {
+ PD_FLOAT, &addElevValueV, "value",
+ PDO_NOPREF|PDO_DIM, &rn1000_1000, NULL, 0
+ }
+};
+static paramGroup_t addElevPG = { "addElev", 0, addElevPLs, COUNT( addElevPLs ) };
+
+static void DoAddElev(void * unused)
+{
+ ParamLoadData(&addElevPG);
+ AddElevations(addElevValueV);
+ wHide(addElevW);
+}
+
+static void ShowAddElevations(void * unused)
+{
+ if (selectedTrackCount <= 0) {
+ ErrorMessage(MSG_NO_SELECTED_TRK);
+ return;
+ }
+ if (addElevW == NULL)
+ addElevW = ParamCreateDialog(&addElevPG,
+ MakeWindowTitle(_("Change Elevations")), _("Change"), DoAddElev,
+ wHide, FALSE, NULL, 0, NULL);
+ wShow(addElevW);
+}
+
+/*****************************************************************************
+ *
+ * MOVE/ROTATE/INDEX HELPERS
+ *
+ */
+
+
+static wWin_p rotateW;
+static wWin_p indexW;
+static wWin_p moveW;
+static double rotateValue;
+static char trackIndex[STR_LONG_SIZE];
+static coOrd moveValue;
+static rotateDialogCallBack_t rotateDialogCallBack;
+static indexDialogCallBack_t indexDialogCallBack;
+static moveDialogCallBack_t moveDialogCallBack;
+
+static void RotateEnterOk(void * unused);
+
+static paramFloatRange_t rn360_360 = { -360.0, 360.0, 80 };
+static paramData_t rotatePLs[] = { { PD_FLOAT, &rotateValue, "rotate", PDO_NOPREF|PDO_ANGLE|PDO_NORECORD, &rn360_360, N_("Angle:") } };
+static paramGroup_t rotatePG = { "rotate", 0, rotatePLs, COUNT( rotatePLs ) };
+
+static void IndexEnterOk(void * unused);
+static paramData_t indexPLs[] = {
+ { PD_STRING, &trackIndex, "select", PDO_NOPREF|PDO_NORECORD|PDO_STRINGLIMITLENGTH, I2VP(STR_SIZE-1), N_("Indexes:"), 0, 0, sizeof(trackIndex) }
+};
+static paramGroup_t indexPG = { "index", 0, indexPLs, COUNT( indexPLs ) };
+
+static paramFloatRange_t r_1000_1000 = { -1000.0, 1000.0, 80 };
+static void MoveEnterOk(void * unused);
+static paramData_t movePLs[] = {
+ { PD_FLOAT, &moveValue.x, "moveX", PDO_NOPREF|PDO_DIM|PDO_NORECORD, &r_1000_1000, N_("Move X:") },
+ { PD_FLOAT, &moveValue.y, "moveY", PDO_NOPREF|PDO_DIM|PDO_NORECORD, &r_1000_1000, N_("Move Y:") }
+};
+static paramGroup_t movePG = { "move", 0, movePLs, COUNT( movePLs ) };
+
+static void StartRotateDialog(void * funcVP)
+{
+ rotateDialogCallBack_t func = funcVP;
+ if (rotateW == NULL)
+ rotateW = ParamCreateDialog(&rotatePG, MakeWindowTitle(_("Rotate")),
+ _("Ok"), RotateEnterOk, wHide, FALSE, NULL, 0, NULL);
+ ParamLoadControls(&rotatePG);
+ rotateDialogCallBack = func;
+ wShow(rotateW);
+}
+
+static void StartIndexDialog(void * funcVP)
+{
+ indexDialogCallBack_t func = funcVP;
+ if (indexW == NULL)
+ indexW = ParamCreateDialog(&indexPG, MakeWindowTitle(_("Select Index")),
+ _("Ok"), IndexEnterOk, wHide, FALSE, NULL, 0, NULL);
+ ParamLoadControls(&indexPG);
+ indexDialogCallBack = func;
+ trackIndex[0] = '\0';
+ wShow(indexW);
+}
+
+static void StartMoveDialog(void * funcVP)
+{
+ moveDialogCallBack_t func = funcVP;
+ if (moveW == NULL)
+ moveW = ParamCreateDialog(&movePG, MakeWindowTitle(_("Move")), _("Ok"),
+ MoveEnterOk, wHide, FALSE, NULL, 0, NULL);
+ ParamLoadControls(&movePG);
+ moveDialogCallBack = func;
+ moveValue = zero;
+ wShow(moveW);
+}
+
+static void MoveEnterOk(void * unused)
+{
+ ParamLoadData(&movePG);
+ moveDialogCallBack(&moveValue);
+ wHide(moveW);
+}
+
+static void IndexEnterOk(void * unused)
+{
+ ParamLoadData(&indexPG);
+ indexDialogCallBack(trackIndex);
+ wHide(indexW);
+}
+
+static void RotateEnterOk(void * unused)
+{
+ ParamLoadData(&rotatePG);
+ if (angleSystem == ANGLE_POLAR) {
+ rotateDialogCallBack(I2VP(rotateValue * 1000));
+ } else {
+ rotateDialogCallBack(I2VP(rotateValue * 1000));
+ }
+ wHide(rotateW);
+}
+
+
+EXPORT void AddMoveMenu(wMenu_p m, moveDialogCallBack_t func)
+{
+ wMenuPushCreate(m, "", _("Enter Move ..."), 0,
+ StartMoveDialog, func);
+}
+
+EXPORT void AddIndexMenu(wMenu_p m, indexDialogCallBack_t func)
+{
+ wMenuPushCreate(m, "cmdSelectIndex", _("Select Track Index ..."), 0,
+ StartIndexDialog, func);
+}
+
+//All values multipled by 100 to support decimal points from PD_FLOAT
+EXPORT void AddRotateMenu(wMenu_p m, rotateDialogCallBack_t func)
+{
+ wMenuPushCreate(m, "", _("180 "), 0, func, I2VP(180000));
+ wMenuPushCreate(m, "", _("90 CW"), 0, func, I2VP(90000));
+ wMenuPushCreate(m, "", _("45 CW"), 0, func, I2VP(45000));
+ wMenuPushCreate(m, "", _("30 CW"), 0, func, I2VP(30000));
+ wMenuPushCreate(m, "", _("15 CW"), 0, func, I2VP(15000));
+ wMenuPushCreate(m, "", _("15 CCW"), 0, func, I2VP(360000 - 15000));
+ wMenuPushCreate(m, "", _("30 CCW"), 0, func, I2VP(360000 - 30000));
+ wMenuPushCreate(m, "", _("45 CCW"), 0, func, I2VP(360000 - 45000));
+ wMenuPushCreate(m, "", _("90 CCW"), 0, func, I2VP(360000 - 90000));
+ wMenuPushCreate(m, "", _("Enter Angle ..."), 0,
+ StartRotateDialog, func);
+}
+
+/*****************************************************************************
+ *
+ * MISC HELPERS
+ *
+ */
+
+static void ChkLoad(void * unused)
+{
+ Confirm(_("Load"), DoLoad);
+}
+
+static void ChkExamples( void * unused )
+{
+ Confirm(_("examples"), DoExamples);
+}
+
+static void ChkRevert(void * unused)
+{
+ int rc;
+
+ if (changed) {
+ rc = wNoticeEx(NT_WARNING,
+ _("Do you want to return to the last saved state?\n\n"
+ "Revert will cause all changes done since last save to be lost."),
+ _("&Revert"), _("&Cancel"));
+ if (rc) {
+ /* load the file */
+ char *filename = GetLayoutFullPath();
+ LoadTracks(1, &filename, I2VP(1)); //Keep background
+ }
+ }
+}
+
+static char * fileListPathName;
+static void AfterFileList(void)
+{
+ DoFileList(0, NULL, fileListPathName);
+}
+
+static void ChkFileList(int index, const char * label, void * data)
+{
+ fileListPathName = (char*) data;
+ Confirm(_("Load"), AfterFileList);
+}
+
+
+static void DoCommandBIndirect(void * cmdInxP)
+{
+ wIndex_t cmdInx;
+ cmdInx = *(wIndex_t*) cmdInxP;
+ DoCommandB(I2VP(cmdInx));
+}
+
+/**
+ * Set magnets state
+ */
+EXPORT int MagneticSnap(int state)
+{
+ int oldState = magneticSnap;
+ magneticSnap = state;
+ wPrefSetInteger("misc", "magnets", magneticSnap);
+ wMenuToggleSet(magnetsMI, magneticSnap);
+ wButtonSetBusy(magnetsB, (wBool_t) magneticSnap);
+ return oldState;
+}
+
+/**
+ * Toggle magnets on/off
+ */
+static void MagneticSnapToggle(void * unused)
+{
+ MagneticSnap(!magneticSnap);
+}
+
+
+EXPORT void SelectFont(void * unused)
+{
+ wSelectFont(_("XTrackCAD Font"));
+}
+
+
+EXPORT long stickySet = 0;
+static wWin_p stickyW;
+static const char * stickyLabels[33];
+static paramData_t stickyPLs[] = { {
+ PD_TOGGLE, &stickySet, "set", 0,
+ stickyLabels
+ }
+};
+static paramGroup_t stickyPG = { "sticky", PGO_RECORD, stickyPLs,
+ COUNT( stickyPLs )
+ };
+
+static void StickyOk(void * unused)
+{
+ wHide(stickyW);
+}
+
+
+EXPORT void DoSticky(void * unused)
+{
+ if (!stickyW)
+ stickyW = ParamCreateDialog(&stickyPG,
+ MakeWindowTitle(_("Sticky Commands")), _("Ok"), StickyOk, wHide,
+ TRUE, NULL, 0, NULL);
+ ParamLoadControls(&stickyPG);
+ wShow(stickyW);
+}
+
+/*****************************************************************************
+ *
+ * DEBUG DIALOG
+ *
+ */
+
+static wWin_p debugW;
+
+static int debugCnt = 0;
+static paramIntegerRange_t r0_100 = { 0, 100, 80 };
+static void DebugOk(void * unused);
+static paramData_t debugPLs[30];
+static paramData_t p0[] = {
+ { PD_BUTTON, TestMallocs, "test", PDO_DLGHORZ, NULL, N_("Test Mallocs") }
+};
+static long debug_values[30];
+static int debug_index[30];
+
+static paramGroup_t debugPG = { "debug", 0, debugPLs, 0 };
+
+static void DebugOk(void * unused)
+{
+ for (int i = 0; i<debugCnt; i++) {
+ logTable(debug_index[i]).level = debug_values[i];
+ }
+ wHide(debugW);
+}
+
+static void CreateDebugW(void)
+{
+ debugPG.paramCnt = debugCnt+1;
+ ParamRegister(&debugPG);
+ debugW = ParamCreateDialog(&debugPG, MakeWindowTitle(_("Debug")), _("Ok"),
+ DebugOk, wHide, FALSE, NULL, 0, NULL);
+ wHide(debugW);
+}
+
+static void InitDebug(const char * label, long * valueP)
+{
+ CHECK( debugCnt+1 < COUNT( debugPLs ) );
+ memset(&debugPLs[debugCnt+1], 0, sizeof debugPLs[debugCnt]);
+ debugPLs[debugCnt+1].type = PD_LONG;
+ debugPLs[debugCnt+1].valueP = valueP;
+ debugPLs[debugCnt+1].nameStr = label;
+ debugPLs[debugCnt+1].winData = &r0_100;
+ debugPLs[debugCnt+1].winLabel = label;
+ debugCnt++;
+}
+
+static void DebugInit(void * unused)
+{
+
+ if (!debugW) {
+ debugPLs[0] = p0[0];
+ BOOL_T default_line = FALSE;
+ debugCnt = 0; //Reset to start building the dynamic dialog over again
+ int i = 0;
+ for ( int inx=0; inx<logTable_da.cnt; inx++ ) {
+ if (logTable(inx).name[0]) {
+ debug_values[i] = logTable(inx).level;
+ debug_index[i] = inx;
+ InitDebug(logTable(inx).name,&debug_values[i]);
+ i++;
+ } else {
+ if (!default_line) {
+ debug_values[i] = logTable(inx).level;
+ debug_index[i] = inx;
+ InitDebug("Default Trace",&debug_values[i]);
+ i++;
+ default_line = TRUE;
+ }
+ }
+ }
+
+ //ParamCreateControls( &debugPG, NULL );
+ CreateDebugW();
+ }
+ ParamLoadControls( &debugPG );
+ wShow(debugW);
+}
+
+
+/*****************************************************************************
+ *
+ * ENABLE MENUS
+ *
+ */
+
+EXPORT void EnableMenus( void )
+{
+ int inx;
+ BOOL_T enable;
+ for (inx = 0; inx < menuPG.paramCnt; inx++) {
+ if (menuPG.paramPtr[inx].control == NULL) {
+ continue;
+ }
+ if ((menuPG.paramPtr[inx].option & IC_SELECTED) && selectedTrackCount <= 0) {
+ enable = FALSE;
+ } else if ((programMode == MODE_TRAIN
+ && (menuPG.paramPtr[inx].option & (IC_MODETRAIN_TOO | IC_MODETRAIN_ONLY))
+ == 0)
+ || (programMode != MODE_TRAIN
+ && (menuPG.paramPtr[inx].option & IC_MODETRAIN_ONLY) != 0)) {
+ enable = FALSE;
+ } else {
+ enable = TRUE;
+ }
+ wMenuPushEnable((wMenuPush_p) menuPG.paramPtr[inx].control, enable);
+ }
+}
+/*****************************************************************************
+ *
+ * RECENT MESSAGES LIST
+ *
+ */
+
+static wMenuList_p messageList_ml;
+#define MESSAGE_LIST_EMPTY N_("No Messages")
+
+EXPORT void MessageListAppend(
+ char * cp1,
+ const char * msgSrc )
+{
+ static wBool_t messageListIsEmpty = TRUE;
+ if ( messageListIsEmpty ) {
+ wMenuListDelete(messageList_ml, _(MESSAGE_LIST_EMPTY));
+ messageListIsEmpty = FALSE;
+ }
+ wMenuListAdd(messageList_ml, 0, cp1, _(msgSrc));
+}
+
+
+static void ShowMessageHelp(int index, const char * label, void * data)
+{
+ char msgKey[STR_SIZE], *cp, *msgSrc;
+ msgSrc = (char*) data;
+ if (!msgSrc) {
+ return;
+ }
+ cp = strchr(msgSrc, '\t');
+ if (cp == NULL) {
+ sprintf(msgKey, _("No help for %s"), msgSrc);
+ wNoticeEx( NT_INFORMATION, msgKey, _("Ok"), NULL);
+ return;
+ }
+ memcpy(msgKey, msgSrc, cp - msgSrc);
+ msgKey[cp - msgSrc] = 0;
+ wHelp(msgKey);
+}
+
+/*****************************************************************************
+ *
+ * Balloon Help
+ *
+ */
+
+// defined in ${BUILDIR}/app/bin/bllnhlp.c
+extern wBalloonHelp_t balloonHelp[];
+
+#ifdef DEBUG
+#define CHECK_BALLOONHELP
+/*#define CHECK_UNUSED_BALLOONHELP*/
+#endif
+#ifdef CHECK_UNUSED_BALLOONHELP
+static void ShowUnusedBalloonHelp(void);
+#endif
+
+
+#ifdef CHECK_UNUSED_BALLOONHELP
+int * balloonHelpCnts;
+#endif
+
+EXPORT const char * GetBalloonHelpStr(const char * helpKey)
+{
+ wBalloonHelp_t * bh;
+#ifdef CHECK_UNUSED_BALLOONHELP
+ if ( balloonHelpCnts == NULL ) {
+ for ( bh=balloonHelp; bh->name; bh++ );
+ balloonHelpCnts = (int*)malloc( (sizeof *(int*)0) * (bh-balloonHelp) );
+ memset( balloonHelpCnts, 0, (sizeof *(int*)0) * (bh-balloonHelp) );
+ }
+#endif
+ for (bh = balloonHelp; bh->name; bh++) {
+ if (strcmp(bh->name, helpKey) == 0) {
+#ifdef CHECK_UNUSED_BALLOONHELP
+ balloonHelpCnts[(bh-balloonHelp)]++;
+#endif
+ return _(bh->value);
+ }
+ }
+#ifdef CHECK_BALLOONHELP
+ fprintf( stderr, _("No balloon help for %s\n"), helpKey );
+#endif
+ return _("No Help");
+}
+
+#ifdef CHECK_UNUSED_BALLOONHELP
+static void ShowUnusedBalloonHelp( void )
+{
+ int cnt;
+ for ( cnt=0; balloonHelp[cnt].name; cnt++ )
+ if ( balloonHelpCnts[cnt] == 0 ) {
+ fprintf( stderr, "unused BH %s\n", balloonHelp[cnt].name );
+ }
+}
+#endif
+
+/*****************************************************************************
+ *
+ * CREATE MENUS
+ *
+ */
+
+
+EXPORT wButton_p AddToolbarButton(const char * helpStr, wIcon_p icon,
+ long options,
+ wButtonCallBack_p action, void * context)
+{
+ wButton_p bb;
+ wIndex_t inx;
+
+ GetBalloonHelpStr(helpStr);
+ if (context == NULL) {
+ for (inx = 0; inx < menuPG.paramCnt; inx++) {
+ if (action != DoCommandB && menuPG.paramPtr[inx].valueP == I2VP(action)) {
+ context = &menuPG.paramPtr[inx];
+ action = ParamMenuPush;
+ menuPG.paramPtr[inx].context = I2VP(buttonCnt);
+ menuPG.paramPtr[inx].option |= IC_PLAYBACK_PUSH;
+ break;
+ }
+ }
+ }
+ bb = wButtonCreate(mainW, 0, 0, helpStr, (char*) icon,
+ BO_ICON/*|((options&IC_CANCEL)?BB_CANCEL:0)*/, 0, action, context);
+ AddToolbarControl((wControl_p) bb, options);
+ return bb;
+}
+
+#include "bitmaps/down.xpm3"
+static const char * buttonGroupMenuTitle;
+static const char * buttonGroupHelpKey;
+static const char * buttonGroupStickyLabel;
+static wMenu_p buttonGroupPopupM;
+static int stickyCnt = 0;
+
+EXPORT void ButtonGroupBegin(const char * menuTitle, const char * helpKey,
+ const char * stickyLabel)
+{
+ buttonGroupMenuTitle = menuTitle;
+ buttonGroupHelpKey = helpKey;
+ buttonGroupStickyLabel = stickyLabel;
+ buttonGroupPopupM = NULL;
+}
+
+EXPORT void ButtonGroupEnd(void)
+{
+ buttonGroupMenuTitle = NULL;
+ buttonGroupHelpKey = NULL;
+ buttonGroupPopupM = NULL;
+}
+
+EXPORT wIndex_t AddMenuButton(wMenu_p menu, procCommand_t command,
+ const char * helpKey, const char * nameStr, wIcon_p icon, int reqLevel,
+ long options, long acclKey, void * context)
+{
+ wIndex_t buttInx = -1;
+ wIndex_t cmdInx;
+ wBool_t newButtonGroup = FALSE;
+ wMenu_p tm, p1m, p2m;
+ static wIcon_p openbuttIcon = NULL;
+ static wMenu_p commandsSubmenu;
+ static wMenu_p popup1Submenu;
+ static wMenu_p popup2Submenu;
+
+ if (icon) {
+ if (buttonGroupPopupM != NULL) {
+ buttInx = buttonCnt - 2;
+ } else {
+ buttInx = buttonCnt;
+ AddToolbarButton(helpKey, icon, options,
+ DoCommandB,
+ I2VP(commandCnt));
+ }
+ if (buttonGroupMenuTitle != NULL && buttonGroupPopupM == NULL) {
+ if (openbuttIcon == NULL) {
+ openbuttIcon = wIconCreatePixMap(down_xpm3[iconSize]);
+ }
+ buttonGroupPopupM = wMenuPopupCreate(mainW, buttonGroupMenuTitle);
+ AddToolbarButton(buttonGroupHelpKey, openbuttIcon, IC_ABUT,
+ (wButtonCallBack_p) wMenuPopupShow,
+ buttonGroupPopupM);
+ newButtonGroup = TRUE;
+ commandsSubmenu = wMenuMenuCreate(menu, "", buttonGroupMenuTitle);
+ if (options & IC_POPUP2) {
+ popup1Submenu = wMenuMenuCreate(popup1aM, "", buttonGroupMenuTitle);
+ popup2Submenu = wMenuMenuCreate(popup2aM, "", buttonGroupMenuTitle);
+ } else if (options & IC_POPUP3) {
+ popup1Submenu= wMenuMenuCreate(popup1mM, "", buttonGroupMenuTitle);
+ popup2Submenu = wMenuMenuCreate(popup2mM, "", buttonGroupMenuTitle);
+
+ } else {
+ popup1Submenu = wMenuMenuCreate(popup1M, "", buttonGroupMenuTitle);
+ popup2Submenu = wMenuMenuCreate(popup2M, "", buttonGroupMenuTitle);
+ }
+ }
+ }
+ long stickyMask = 0;
+ wMenuPush_p cmdMenus[NUM_CMDMENUS] = { NULL, NULL, NULL, NULL };
+ if (nameStr[0] != '\0') {
+ if (options & IC_STICKY) {
+ if (buttonGroupPopupM == NULL || newButtonGroup) {
+ CHECK( stickyCnt <= 32 );
+ stickyCnt++;
+ }
+ if (buttonGroupPopupM == NULL) {
+ stickyLabels[stickyCnt - 1] = nameStr;
+ } else {
+ stickyLabels[stickyCnt - 1] = buttonGroupStickyLabel;
+ }
+ stickyLabels[stickyCnt] = NULL;
+ stickyMask = 1L<<(stickyCnt-1);
+ if ( ( options & IC_INITNOTSTICKY ) == 0 ) {
+ stickySet |= stickyMask;
+ }
+ }
+ if (buttonGroupPopupM) {
+ cmdMenus[0] = wMenuPushCreate(buttonGroupPopupM,
+ helpKey, GetBalloonHelpStr(helpKey), 0, DoCommandB,
+ I2VP(commandCnt));
+ tm = commandsSubmenu;
+ p1m = popup1Submenu;
+ p2m = popup2Submenu;
+ } else {
+ tm = menu;
+ p1m = (options & IC_POPUP2) ? popup1aM : (options & IC_POPUP3) ? popup1mM :
+ popup1M;
+ p2m = (options & IC_POPUP2) ? popup2aM : (options & IC_POPUP3) ? popup2mM :
+ popup2M;
+ }
+ cmdMenus[1] = wMenuPushCreate(tm, helpKey, nameStr, acclKey,
+ DoCommandB, I2VP(commandCnt));
+ if ((options & (IC_POPUP | IC_POPUP2 | IC_POPUP3))) {
+ if (!(options & IC_SELECTED)) {
+ cmdMenus[2] = wMenuPushCreate(p1m, helpKey, nameStr,
+ 0, DoCommandB, I2VP(commandCnt));
+ }
+ cmdMenus[3] = wMenuPushCreate(p2m, helpKey, nameStr, 0,
+ DoCommandB, I2VP(commandCnt));
+ }
+ }
+
+ cmdInx = AddCommand(command, helpKey, nameStr, icon, reqLevel, options,
+ acclKey, buttInx, stickyMask, cmdMenus, context);
+ return cmdInx;
+}
+
+
+static void MiscMenuItemCreate(wMenu_p m1, wMenu_p m2, const char * name,
+ const char * label, long acclKey, void * func, long option, void * context)
+{
+ wMenuPush_p mp;
+ mp = wMenuPushCreate(m1, name, label, acclKey, ParamMenuPush,
+ &menuPLs[menuPG.paramCnt]);
+ if (m2)
+ wMenuPushCreate(m2, name, label, acclKey, ParamMenuPush,
+ &menuPLs[menuPG.paramCnt]);
+ menuPLs[menuPG.paramCnt].control = (wControl_p) mp;
+ menuPLs[menuPG.paramCnt].type = PD_MENUITEM;
+ menuPLs[menuPG.paramCnt].valueP = func;
+ menuPLs[menuPG.paramCnt].nameStr = name;
+ menuPLs[menuPG.paramCnt].option = option;
+ menuPLs[menuPG.paramCnt].context = context;
+
+ if (name) {
+ GetBalloonHelpStr(name);
+ }
+ menuPG.paramCnt++;
+}
+
+
+#include "bitmaps/zoom-in.xpm3"
+#include "bitmaps/zoom-choose.xpm3"
+#include "bitmaps/zoom-out.xpm3"
+#include "bitmaps/zoom-extent.xpm3"
+#include "bitmaps/undo.xpm3"
+#include "bitmaps/redo.xpm3"
+// #include "bitmaps/partlist.xpm" // unused
+#include "bitmaps/doc-export.xpm3"
+#include "bitmaps/doc-export-bmap.xpm3"
+#include "bitmaps/doc-export-dxf.xpm3"
+#if XTRKCAD_CREATE_SVG
+#include "bitmaps/doc-export-svg.xpm3"
+#endif
+#include "bitmaps/doc-import.xpm3"
+#include "bitmaps/doc-import-mod.xpm3"
+#include "bitmaps/doc-new.xpm3"
+#include "bitmaps/doc-save.xpm3"
+#include "bitmaps/doc-open.xpm3"
+// #include "bitmaps/doc-print.xpm"
+#include "bitmaps/doc-setup.xpm3"
+#include "bitmaps/parameter.xpm3"
+#include "bitmaps/map.xpm3"
+#include "bitmaps/magnet.xpm3"
+
+//static wMenu_p toolbarM;
+static addButtonCallBack_t paramFilesCallback;
+
+EXPORT void CreateMenus(void)
+{
+ wMenu_p fileM, editM, viewM, optionM, windowM, macroM, helpM, toolbarM,
+ manageM, addM, changeM, drawM;
+ wMenu_p zoomM, zoomSubM;
+
+ wMenuPush_p zoomInM, zoomOutM, zoomExtentsM;
+
+ wPrefGetInteger("DialogItem", "pref-iconsize", (long *) &iconSize, 0);
+
+ wSetBalloonHelp( balloonHelp );
+ fileM = wMenuBarAdd(mainW, "menuFile", _("&File"));
+ editM = wMenuBarAdd(mainW, "menuEdit", _("&Edit"));
+ viewM = wMenuBarAdd(mainW, "menuView", _("&View"));
+ addM = wMenuBarAdd(mainW, "menuAdd", _("&Add"));
+ changeM = wMenuBarAdd(mainW, "menuChange", _("&Change"));
+ drawM = wMenuBarAdd(mainW, "menuDraw", _("&Draw"));
+ manageM = wMenuBarAdd(mainW, "menuManage", _("&Manage"));
+ optionM = wMenuBarAdd(mainW, "menuOption", _("&Options"));
+ macroM = wMenuBarAdd(mainW, "menuMacro", _("&Macro"));
+ windowM = wMenuBarAdd(mainW, "menuWindow", _("&Window"));
+ helpM = wMenuBarAdd(mainW, "menuHelp", _("&Help"));
+
+ /*
+ * POPUP MENUS
+ */
+ /* Select Commands */
+ /* Select All */
+ /* Select All Current */
+
+ /* Common View Commands Menu */
+ /* Zoom In/Out */
+ /* Snap Grid Menu */
+ /* Show/Hide Map */
+ /* Show/Hide Background */
+
+ /* Selected Commands */
+ /*--------------*/
+ /* DeSelect All */
+ /* Select All */
+ /* Select All Current */
+ /*--------------*/
+ /* Quick Move */
+ /* Quick Rotate */
+ /* Quick Align */
+ /*--------------*/
+ /* Move To Current Layer */
+ /* Move/Rotate Cmds */
+ /* Cut/Paste/Delete */
+ /* Group/Un-group Selected */
+ /*----------*/
+ /* Thick/Thin */
+ /* Bridge/Roadbed/Tunnel */
+ /* Ties/NoTies */
+ /*-----------*/
+ /* More Commands */
+
+ popup1M = wMenuPopupCreate(mainW, _("Context Commands"));
+ popup2M = wMenuPopupCreate(mainW, _("Shift Context Commands"));
+ MiscMenuItemCreate(popup1M, popup2M, "cmdUndo", _("Undo"), 0,
+ UndoUndo, 0, NULL);
+ MiscMenuItemCreate(popup1M, popup2M, "cmdRedo", _("Redo"), 0,
+ UndoRedo, 0, NULL);
+ /* Zoom */
+ wMenuPushCreate(popup1M, "cmdZoomIn", _("Zoom In"), 0,
+ DoZoomUp, I2VP(1));
+ wMenuPushCreate(popup2M, "cmdZoomIn", _("Zoom In"), 0,
+ DoZoomUp, I2VP(1));
+ wMenuPushCreate(popup1M, "cmdZoomOut", _("Zoom Out"), 0,
+ DoZoomDown, I2VP(1));
+ wMenuPushCreate(popup2M, "cmdZoomOut", _("Zoom Out"), 0,
+ DoZoomDown, I2VP(1));
+ wMenuPushCreate(popup1M, "cmdZoomExtents", _("Zoom Extents"), 0,
+ DoZoomExtents, I2VP(1));
+ wMenuPushCreate(popup2M, "cmdZoomExtents", _("Zoom Extents"), 0,
+ DoZoomExtents, I2VP(1));
+ /* Display */
+ MiscMenuItemCreate(popup1M, popup2M, "cmdGridEnable", _("Enable SnapGrid"),
+ 0, SnapGridEnable, 0, NULL);
+ MiscMenuItemCreate(popup1M, popup2M, "cmdGridShow", _("SnapGrid Show"), 0,
+ SnapGridShow, 0, NULL);
+ MiscMenuItemCreate(popup1M, popup2M, "cmdMagneticSnap",
+ _(" Enable Magnetic Snap"), 0,
+ MagneticSnapToggle, 0, NULL);
+ MiscMenuItemCreate(popup1M, popup2M, "cmdMapShow", _("Show/Hide Map"), 0,
+ MapWindowToggleShow, 0, NULL);
+ MiscMenuItemCreate(popup1M, popup2M, "cmdBackgroundShow",
+ _("Show/Hide Background"), 0,
+ BackgroundToggleShow, 0, NULL);
+ wMenuSeparatorCreate(popup1M);
+ wMenuSeparatorCreate(popup2M);
+ /* Copy/Paste */
+ MiscMenuItemCreate(popup2M, NULL, "cmdCut", _("Cut"), 0,
+ EditCut, 0, NULL);
+ MiscMenuItemCreate(popup2M, NULL, "cmdCopy", _("Copy"), 0,
+ EditCopy, 0, NULL);
+ MiscMenuItemCreate(popup1M, popup2M, "cmdPaste", _("Paste"), 0,
+ EditPaste, 0, NULL);
+ MiscMenuItemCreate(popup2M, NULL, "cmdClone", _("Clone"), 0,
+ EditClone, 0, NULL);
+ /*Select*/
+ MiscMenuItemCreate(popup1M, popup2M, "cmdSelectAll", _("Select All"), 0,
+ (wMenuCallBack_p) SetAllTrackSelect, 0, I2VP(1));
+ MiscMenuItemCreate(popup1M, popup2M, "cmdSelectCurrentLayer",
+ _("Select Current Layer"), 0,
+ SelectCurrentLayer, 0, NULL);
+ MiscMenuItemCreate(popup2M, NULL, "cmdDeselectAll", _("Deselect All"), 0,
+ (wMenuCallBack_p) SetAllTrackSelect, 0, I2VP(FALSE));
+ wMenuPushCreate(popup1M, "cmdSelectIndex", _("Select Track Index..."), 0,
+ StartIndexDialog, &SelectByIndex);
+ wMenuPushCreate(popup2M, "cmdSelectIndex", _("Select Track Index..."), 0,
+ StartIndexDialog, &SelectByIndex);
+ /* Modify */
+ wMenuPushCreate(popup2M, "cmdMove", _("Move"), 0,
+ DoCommandBIndirect, &moveCmdInx);
+ wMenuPushCreate(popup2M, "cmdRotate", _("Rotate"), 0,
+ DoCommandBIndirect, &rotateCmdInx);
+ wMenuSeparatorCreate(popup1M);
+ wMenuSeparatorCreate(popup2M);
+ MiscMenuItemCreate(popup2M, NULL, "cmdDelete", _("Delete"), 0,
+ (wMenuCallBack_p) SelectDelete, 0, NULL);
+ wMenuSeparatorCreate(popup2M);
+ popup1aM = wMenuMenuCreate(popup1M, "", _("Add..."));
+ popup2aM = wMenuMenuCreate(popup2M, "", _("Add..."));
+ wMenuSeparatorCreate(popup2M);
+ wMenuSeparatorCreate(popup1M);
+ popup1mM = wMenuMenuCreate(popup1M, "", _("More..."));
+ popup2mM = wMenuMenuCreate(popup2M, "", _("More..."));
+
+ /*
+ * FILE MENU
+ */
+ MiscMenuItemCreate(fileM, NULL, "menuFile-clear", _("&New ..."), ACCL_NEW,
+ DoClear, 0, NULL);
+ wMenuPushCreate(fileM, "menuFile-load", _("&Open ..."), ACCL_OPEN,
+ ChkLoad, NULL);
+ wMenuSeparatorCreate(fileM);
+
+ wMenuPushCreate(fileM, "menuFile-save", _("&Save"), ACCL_SAVE,
+ DoSave, NULL);
+ wMenuPushCreate(fileM, "menuFile-saveAs", _("Save &As ..."), ACCL_SAVEAS,
+ DoSaveAs, NULL);
+ wMenuPushCreate(fileM, "menuFile-revert", _("Revert"), ACCL_REVERT,
+ ChkRevert, NULL);
+ wMenuSeparatorCreate(fileM);
+
+ cmdGroup = BG_FILE;
+ AddToolbarButton("menuFile-clear", wIconCreatePixMap(doc_new_xpm3[iconSize]),
+ IC_MODETRAIN_TOO, DoClear, NULL);
+ AddToolbarButton("menuFile-load", wIconCreatePixMap(doc_open_xpm3[iconSize]),
+ IC_MODETRAIN_TOO, ChkLoad, NULL);
+ AddToolbarButton("menuFile-save", wIconCreatePixMap(doc_save_xpm3[iconSize]),
+ IC_MODETRAIN_TOO, DoSave, NULL);
+
+ cmdGroup = BG_PRINT;
+ MiscMenuItemCreate(fileM, NULL, "printSetup", _("P&rint Setup ..."),
+ ACCL_PRINTSETUP, (wMenuCallBack_p) wPrintSetup, 0,
+ I2VP(0));
+ InitCmdPrint(fileM);
+ AddToolbarButton("menuFile-setup", wIconCreatePixMap(doc_setup_xpm3[iconSize]),
+ IC_MODETRAIN_TOO, (wMenuCallBack_p) wPrintSetup, I2VP(0));
+
+ wMenuSeparatorCreate(fileM);
+ MiscMenuItemCreate(fileM, NULL, "cmdImport", _("&Import"), ACCL_IMPORT,
+ DoImport, 0, I2VP(0));
+ MiscMenuItemCreate(fileM, NULL, "cmdImportModule", _("Import &Module"),
+ ACCL_IMPORT_MOD,
+ DoImport, 0, I2VP(1));
+ MiscMenuItemCreate(fileM, NULL, "cmdOutputbitmap", _("Export to &Bitmap"),
+ ACCL_PRINTBM, OutputBitMapInit(), 0,
+ NULL);
+ MiscMenuItemCreate(fileM, NULL, "cmdExport", _("E&xport"), ACCL_EXPORT,
+ DoExport, IC_SELECTED, NULL);
+ MiscMenuItemCreate(fileM, NULL, "cmdExportDXF", _("Export D&XF"),
+ ACCL_EXPORTDXF, DoExportDXF, IC_SELECTED,
+ NULL);
+#if XTRKCAD_CREATE_SVG
+ MiscMenuItemCreate( fileM, NULL, "cmdExportSVG", _("Export S&VG"),
+ ACCL_EXPORTSVG, DoExportSVG, IC_SELECTED, NULL);
+#endif
+ wMenuSeparatorCreate(fileM);
+
+ paramFilesCallback = ParamFilesInit();
+ MiscMenuItemCreate(fileM, NULL, "cmdPrmfile", _("Parameter &Files ..."),
+ ACCL_PARAMFILES, paramFilesCallback, 0, NULL);
+ MiscMenuItemCreate(fileM, NULL, "cmdFileNote", _("No&tes ..."), ACCL_NOTES,
+ DoNote, 0, NULL);
+
+ wMenuSeparatorCreate(fileM);
+ fileList_ml = wMenuListCreate(fileM, "menuFileList", NUM_FILELIST,
+ ChkFileList);
+ wMenuSeparatorCreate(fileM);
+ wMenuPushCreate(fileM, "menuFile-quit", _("E&xit"), 0,
+ DoQuit, NULL);
+
+ InitCmdExport();
+
+ AddToolbarButton("menuFile-parameter",
+ wIconCreatePixMap(parameter_xpm3[iconSize]),
+ IC_MODETRAIN_TOO, paramFilesCallback, NULL);
+
+ cmdGroup = BG_ZOOM;
+ zoomUpB = AddToolbarButton("cmdZoomIn",
+ wIconCreatePixMap(zoom_in_xpm3[iconSize]),
+ IC_MODETRAIN_TOO, DoZoomUp, NULL);
+ zoomM = wMenuPopupCreate(mainW, "");
+ AddToolbarButton("cmdZoom", wIconCreatePixMap(zoom_choose_xpm3[iconSize]),
+ IC_MODETRAIN_TOO,
+ (wButtonCallBack_p) wMenuPopupShow, zoomM);
+ zoomDownB = AddToolbarButton("cmdZoomOut",
+ wIconCreatePixMap(zoom_out_xpm3[iconSize]),
+ IC_MODETRAIN_TOO, DoZoomDown, NULL);
+ zoomExtentsB = AddToolbarButton("cmdZoomExtent",
+ wIconCreatePixMap(zoom_extent_xpm3[iconSize]),
+ IC_MODETRAIN_TOO, DoZoomExtents, NULL);
+
+ cmdGroup = BG_UNDO;
+ undoB = AddToolbarButton("cmdUndo", wIconCreatePixMap(undo_xpm3[iconSize]), 0,
+ UndoUndo, NULL);
+ redoB = AddToolbarButton("cmdRedo", wIconCreatePixMap(redo_xpm3[iconSize]), 0,
+ UndoRedo, NULL);
+
+ wControlActive((wControl_p) undoB, FALSE);
+ wControlActive((wControl_p) redoB, FALSE);
+ InitCmdUndo();
+
+ /*
+ * EDIT MENU
+ */
+ MiscMenuItemCreate(editM, NULL, "cmdUndo", _("&Undo"), ACCL_UNDO,
+ UndoUndo, 0, NULL);
+ MiscMenuItemCreate(editM, NULL, "cmdRedo", _("R&edo"), ACCL_REDO,
+ UndoRedo, 0, NULL);
+ wMenuSeparatorCreate(editM);
+ MiscMenuItemCreate(editM, NULL, "cmdCut", _("Cu&t"), ACCL_CUT,
+ EditCut, IC_SELECTED, NULL);
+ MiscMenuItemCreate(editM, NULL, "cmdCopy", _("&Copy"), ACCL_COPY,
+ EditCopy, IC_SELECTED, NULL);
+ MiscMenuItemCreate(editM, NULL, "cmdPaste", _("&Paste"), ACCL_PASTE,
+ EditPaste, 0, NULL);
+ MiscMenuItemCreate(editM, NULL, "cmdClone", _("C&lone"), ACCL_CLONE,
+ EditClone, 0, NULL);
+ MiscMenuItemCreate(editM, NULL, "cmdDelete", _("De&lete"), ACCL_DELETE,
+ (wMenuCallBack_p) SelectDelete, IC_SELECTED, NULL);
+ MiscMenuItemCreate(editM, NULL, "cmdMoveToCurrentLayer",
+ _("Move To Current Layer"), ACCL_MOVCURLAYER,
+ MoveSelectedTracksToCurrentLayer,
+ IC_SELECTED, NULL);
+ wMenuSeparatorCreate( editM );
+ menuPLs[menuPG.paramCnt].context = I2VP(1);
+ MiscMenuItemCreate( editM, NULL, "cmdSelectAll", _("Select &All"),
+ ACCL_SELECTALL, (wMenuCallBack_p)SetAllTrackSelect, 0, I2VP(TRUE) );
+ MiscMenuItemCreate( editM, NULL, "cmdSelectCurrentLayer",
+ _("Select Current Layer"), ACCL_SETCURLAYER, SelectCurrentLayer, 0, NULL);
+ MiscMenuItemCreate( editM, NULL, "cmdSelectByIndex", _("Select By Index"), 0L,
+ StartIndexDialog, 0, &SelectByIndex );
+ MiscMenuItemCreate( editM, NULL, "cmdDeselectAll", _("&Deselect All"),
+ ACCL_DESELECTALL, (wMenuCallBack_p)SetAllTrackSelect, 0, I2VP(FALSE) );
+ MiscMenuItemCreate( editM, NULL, "cmdSelectInvert", _("&Invert Selection"), 0L,
+ InvertTrackSelect, 0, NULL);
+ MiscMenuItemCreate( editM, NULL, "cmdSelectOrphaned",
+ _("Select Stranded Track"), 0L, OrphanedTrackSelect, 0, NULL);
+ wMenuSeparatorCreate( editM );
+ MiscMenuItemCreate( editM, NULL, "cmdTunnel", _("Tu&nnel"), ACCL_TUNNEL,
+ SelectTunnel, IC_SELECTED, NULL);
+ MiscMenuItemCreate( editM, NULL, "cmdBridge", _("B&ridge"), ACCL_BRIDGE,
+ SelectBridge, IC_SELECTED, NULL);
+ MiscMenuItemCreate( editM, NULL, "cmdRoadbed", _("&Roadbed"), ACCL_ROADBED,
+ SelectRoadbed, IC_SELECTED, NULL);
+ MiscMenuItemCreate( editM, NULL, "cmdTies", _("Ties/NoTies"), ACCL_TIES,
+ SelectTies, IC_SELECTED, NULL);
+ MiscMenuItemCreate( editM, NULL, "cmdAbove", _("Move to &Front"), ACCL_ABOVE,
+ SelectAbove, IC_SELECTED, NULL);
+ MiscMenuItemCreate( editM, NULL, "cmdBelow", _("Move to &Back"), ACCL_BELOW,
+ SelectBelow, IC_SELECTED, NULL);
+
+ wMenuSeparatorCreate( editM );
+ MiscMenuItemCreate( editM, NULL, "cmdWidth0", _("Thin Tracks"), ACCL_THIN,
+ SelectTrackWidth, IC_SELECTED, I2VP(0) );
+ MiscMenuItemCreate( editM, NULL, "cmdWidth2", _("Medium Tracks"), ACCL_MEDIUM,
+ SelectTrackWidth, IC_SELECTED, I2VP(2) );
+ MiscMenuItemCreate( editM, NULL, "cmdWidth3", _("Thick Tracks"), ACCL_THICK,
+ SelectTrackWidth, IC_SELECTED, I2VP(3) );
+
+ /*
+ * VIEW MENU
+ */
+
+ zoomInM = wMenuPushCreate(viewM, "menuEdit-zoomIn", _("Zoom &In"),
+ ACCL_ZOOMIN, DoZoomUp, I2VP(1));
+ zoomSubM = wMenuMenuCreate(viewM, "menuEdit-zoomTo", _("&Zoom"));
+ zoomOutM = wMenuPushCreate(viewM, "menuEdit-zoomOut", _("Zoom &Out"),
+ ACCL_ZOOMOUT, DoZoomDown, I2VP(1));
+ zoomExtentsM = wMenuPushCreate(viewM, "menuEdit-zoomExtents",
+ _("Zoom &Extents"),
+ 0, DoZoomExtents, I2VP(0));
+ wMenuSeparatorCreate(viewM);
+
+ InitCmdZoom(zoomM, zoomSubM, NULL, NULL);
+
+ /* these menu choices and toolbar buttons are synonymous and should be treated as such */
+ wControlLinkedSet((wControl_p) zoomInM, (wControl_p) zoomUpB);
+ wControlLinkedSet((wControl_p) zoomOutM, (wControl_p) zoomDownB);
+ wControlLinkedSet((wControl_p) zoomExtentsM, (wControl_p) zoomExtentsB);
+
+ wMenuPushCreate(viewM, "menuEdit-redraw", _("&Redraw"), ACCL_REDRAW,
+ (wMenuCallBack_p) MainRedraw, NULL);
+ wMenuPushCreate(viewM, "menuEdit-redraw", _("Redraw All"), ACCL_REDRAWALL,
+ (wMenuCallBack_p) DoRedraw, NULL);
+ wMenuSeparatorCreate(viewM);
+
+ snapGridEnableMI = wMenuToggleCreate(viewM, "cmdGridEnable",
+ _("Enable SnapGrid"), ACCL_SNAPENABLE, 0,
+ SnapGridEnable, NULL);
+ snapGridShowMI = wMenuToggleCreate(viewM, "cmdGridShow", _("Show SnapGrid"),
+ ACCL_SNAPSHOW,
+ FALSE, SnapGridShow, NULL);
+ InitGrid(viewM);
+
+ // visibility toggle for anchors
+ // get the start value
+ long anchors_long;
+ wPrefGetInteger("misc", "anchors", &anchors_long, 1);
+ magneticSnap = anchors_long ? TRUE : FALSE;
+ magnetsMI = wMenuToggleCreate(viewM, "cmdMagneticSnap",
+ _("Enable Magnetic Snap"),
+ 0, magneticSnap,
+ MagneticSnapToggle, NULL);
+
+ // visibility toggle for map window
+ // get the start value
+ long mapVisible_long;
+ wPrefGetInteger("misc", "mapVisible", (long *) &mapVisible_long, 1);
+ mapVisible = mapVisible_long ? TRUE : FALSE;
+ mapShowMI = wMenuToggleCreate(viewM, "cmdMapShow", _("Show/Hide Map"),
+ ACCL_MAPSHOW, mapVisible,
+ MapWindowToggleShow, NULL);
+
+ wMenuSeparatorCreate(viewM);
+
+ toolbarM = wMenuMenuCreate(viewM, "toolbarM", _("&Tool Bar"));
+ CreateToolbarM(toolbarM);
+
+ cmdGroup = BG_EASE;
+ InitCmdEasement();
+
+ cmdGroup = BG_SNAP;
+ InitSnapGridButtons();
+ magnetsB = AddToolbarButton("cmdMagneticSnap",
+ wIconCreatePixMap(magnet_xpm3[iconSize]),
+ IC_MODETRAIN_TOO, MagneticSnapToggle, NULL);
+ wControlLinkedSet((wControl_p) magnetsMI, (wControl_p) magnetsB);
+ wButtonSetBusy(magnetsB, (wBool_t) magneticSnap);
+
+ mapShowB = AddToolbarButton("cmdMapShow", wIconCreatePixMap(map_xpm3[iconSize]),
+ IC_MODETRAIN_TOO, MapWindowToggleShow, NULL);
+ wControlLinkedSet((wControl_p) mapShowMI, (wControl_p) mapShowB);
+ wButtonSetBusy(mapShowB, (wBool_t) mapVisible);
+
+ /*
+ * ADD MENU
+ */
+
+ cmdGroup = BG_TRKCRT | BG_BIGGAP;
+ InitCmdStraight(addM);
+ InitCmdCurve(addM);
+ InitCmdParallel(addM);
+ InitCmdTurnout(addM);
+ InitCmdHandLaidTurnout(addM);
+ InitCmdStruct(addM);
+ InitCmdHelix(addM);
+ InitCmdTurntable(addM);
+
+ cmdGroup = BG_CONTROL;
+ ButtonGroupBegin( _("Control Element"), "cmdControlElements",
+ _("Control Element") );
+ InitCmdBlock(addM);
+ InitCmdSwitchMotor(addM);
+ InitCmdSignal(addM);
+ InitCmdControl(addM);
+ InitCmdSensor(addM);
+ ButtonGroupEnd();
+
+ /*
+ * CHANGE MENU
+ */
+ cmdGroup = BG_SELECT;
+ InitCmdDescribe(changeM);
+ InitCmdSelect(changeM);
+ InitCmdPan(viewM);
+
+ wMenuSeparatorCreate(changeM);
+
+ cmdGroup = BG_TRKGRP;
+ InitCmdMove(changeM);
+ InitCmdMoveDescription(changeM);
+ InitCmdDelete();
+ InitCmdTunnel();
+ InitCmdTies();
+ InitCmdBridge();
+ InitCmdRoadbed();
+ InitCmdAboveBelow();
+
+ cmdGroup = BG_TRKMOD;
+ InitCmdModify(changeM);
+ InitCmdCornu(changeM);
+
+ MiscMenuItemCreate(changeM, NULL, "cmdRescale", _("Change Scale"), 0,
+ DoRescale, IC_SELECTED, NULL);
+
+
+ wMenuSeparatorCreate(changeM);
+
+ InitCmdJoin(changeM);
+ InitCmdSplit(changeM);
+
+ wMenuSeparatorCreate(changeM);
+
+ InitCmdPull(changeM);
+
+ wMenuSeparatorCreate(changeM);
+
+ MiscMenuItemCreate(changeM, NULL, "cmdAddElevations",
+ _("Raise/Lower Elevations"), ACCL_CHGELEV,
+ ShowAddElevations, IC_SELECTED,
+ NULL);
+ InitCmdElevation(changeM);
+ InitCmdProfile(changeM);
+
+ MiscMenuItemCreate(changeM, NULL, "cmdClearElevations",
+ _("Clear Elevations"), ACCL_CLRELEV,
+ ClearElevations, IC_SELECTED, NULL);
+ MiscMenuItemCreate(changeM, NULL, "cmdElevation", _("Recompute Elevations"),
+ 0, RecomputeElevations, 0, NULL);
+ ParamRegister(&addElevPG);
+
+ /*
+ * DRAW MENU
+ */
+ cmdGroup = BG_MISCCRT;
+ InitCmdDraw(drawM);
+ InitCmdText(drawM);
+ InitTrkNote(drawM);
+
+ cmdGroup = BG_RULER;
+ InitCmdRuler(drawM);
+
+ /*
+ * OPTION MENU
+ */
+ MiscMenuItemCreate(optionM, NULL, "cmdLayout", _("L&ayout ..."),
+ ACCL_LAYOUTW, LayoutInit(), IC_MODETRAIN_TOO, NULL);
+ MiscMenuItemCreate(optionM, NULL, "cmdDisplay", _("&Display ..."),
+ ACCL_DISPLAYW, DisplayInit(), IC_MODETRAIN_TOO, NULL);
+ MiscMenuItemCreate(optionM, NULL, "cmdCmdopt", _("Co&mmand ..."),
+ ACCL_CMDOPTW, CmdoptInit(), IC_MODETRAIN_TOO, NULL);
+ MiscMenuItemCreate(optionM, NULL, "cmdEasement", _("&Easements ..."),
+ ACCL_EASEW, DoEasementRedir,
+ IC_MODETRAIN_TOO, NULL);
+ MiscMenuItemCreate(optionM, NULL, "fontSelW", _("&Fonts ..."), ACCL_FONTW,
+ SelectFont, IC_MODETRAIN_TOO, NULL);
+ MiscMenuItemCreate(optionM, NULL, "cmdSticky", _("Stic&ky ..."),
+ ACCL_STICKY, DoSticky, IC_MODETRAIN_TOO,
+ NULL);
+ if (extraButtons) {
+ menuPLs[menuPG.paramCnt].context = debugW;
+ MiscMenuItemCreate(optionM, NULL, "cmdDebug", _("&Debug ..."), 0,
+ DebugInit, IC_MODETRAIN_TOO, NULL);
+ }
+ MiscMenuItemCreate(optionM, NULL, "cmdPref", _("&Preferences ..."),
+ ACCL_PREFERENCES, PrefInit(), IC_MODETRAIN_TOO, NULL);
+ MiscMenuItemCreate(optionM, NULL, "cmdColor", _("&Colors ..."), ACCL_COLORW,
+ ColorInit(), IC_MODETRAIN_TOO, NULL);
+
+ /*
+ * MACRO MENU
+ */
+ wMenuPushCreate(macroM, "cmdRecord", _("&Record ..."), ACCL_RECORD,
+ DoRecord, NULL);
+ wMenuPushCreate(macroM, "cmdDemo", _("&Play Back ..."), ACCL_PLAYBACK,
+ DoPlayBack, NULL);
+
+ /*
+ * WINDOW MENU
+ */
+ wMenuPushCreate(windowM, "menuWindow", _("Main window"), 0,
+ (wMenuCallBack_p) wShow, mainW);
+ winList_mi = wMenuListCreate(windowM, "menuWindow", -1, DoShowWindow);
+
+ /*
+ * HELP MENU
+ */
+
+ /* main help window */
+ wMenuAddHelp(helpM);
+
+ /* help on recent messages */
+ wMenuSeparatorCreate(helpM);
+ wMenu_p messageListM = wMenuMenuCreate(helpM, "menuHelpRecentMessages",
+ _("Recent Messages"));
+ messageList_ml = wMenuListCreate(messageListM, "messageListM", 10,
+ ShowMessageHelp);
+ wMenuListAdd(messageList_ml, 0, _(MESSAGE_LIST_EMPTY), NULL);
+ wMenuPushCreate(helpM, "menuHelpProblemrep", _("Collect Problem Info"), 0,
+ DoProblemCollect, NULL);
+
+ /* tip of the day */
+ wMenuSeparatorCreate( helpM );
+ wMenuPushCreate( helpM, "cmdTip", _("Tip of the Day..."), 0, ShowTip,
+ I2VP(SHOWTIP_FORCESHOW | SHOWTIP_NEXTTIP));
+ demoM = wMenuMenuCreate( helpM, "cmdDemo", _("&Demos") );
+ wMenuPushCreate( helpM, "cmdExamples", _("Examples..."), 0, ChkExamples, NULL);
+
+ /* about window */
+ wMenuSeparatorCreate(helpM);
+ wMenuPushCreate(helpM, "about", _("About"), 0,
+ CreateAboutW, NULL);
+
+ /*
+ * MANAGE MENU
+ */
+
+ cmdGroup = BG_TRAIN | BG_BIGGAP;
+ InitCmdTrain(manageM);
+ wMenuSeparatorCreate(manageM);
+
+ InitNewTurn(
+ wMenuMenuCreate(manageM, "cmdTurnoutNew",
+ _("Tur&nout Designer...")));
+
+ MiscMenuItemCreate(manageM, NULL, "cmdContmgm",
+ _("Layout &Control Elements"), ACCL_CONTMGM,
+ ControlMgrInit(), 0, NULL);
+ MiscMenuItemCreate(manageM, NULL, "cmdGroup", _("&Group"), ACCL_GROUP,
+ DoGroup, IC_SELECTED, NULL);
+ MiscMenuItemCreate(manageM, NULL, "cmdUngroup", _("&Ungroup"), ACCL_UNGROUP,
+ DoUngroup, IC_SELECTED, NULL);
+
+ MiscMenuItemCreate(manageM, NULL, "cmdCustmgm",
+ _("Custom defined parts..."), ACCL_CUSTMGM, CustomMgrInit(),
+ 0, NULL);
+ MiscMenuItemCreate(manageM, NULL, "cmdRefreshCompound",
+ _("Update Turnouts and Structures"), 0,
+ DoRefreshCompound, 0, NULL);
+
+ MiscMenuItemCreate(manageM, NULL, "cmdCarInventory", _("Car Inventory"),
+ ACCL_CARINV, DoCarDlg, IC_MODETRAIN_TOO,
+ NULL);
+
+ wMenuSeparatorCreate(manageM);
+
+ MiscMenuItemCreate(manageM, NULL, "cmdLayer", _("Layers ..."), ACCL_LAYERS,
+ InitLayersDialog(), 0, NULL);
+ wMenuSeparatorCreate(manageM);
+
+ MiscMenuItemCreate(manageM, NULL, "cmdEnumerate", _("Parts &List ..."),
+ ACCL_PARTSLIST, EnumerateTracks, 0,
+ NULL);
+ MiscMenuItemCreate(manageM, NULL, "cmdPricelist", _("Price List..."),
+ ACCL_PRICELIST, PriceListInit(), 0, NULL);
+
+ cmdGroup = BG_LAYER | BG_BIGGAP;
+
+ InitCmdSelect2(changeM);
+ InitCmdDescribe2(changeM);
+ InitCmdPan2(changeM);
+
+ InitLayers();
+
+ cmdGroup = BG_HOTBAR;
+ InitHotBar();
+
+ InitBenchDialog();
+
+ ParamRegister(&rotatePG);
+ ParamRegister(&movePG);
+ ParamRegister(&indexPG);
+
+ // stickySet is initialized by AddMenuButton based on IC_STICKY flag
+ // Now check to see if there is saved value
+ wPrefGetInteger( "DialogItem", "sticky-set", &stickySet, stickySet );
+ ParamRegister(&stickyPG);
+}
+
+
+static void InitCmdExport(void)
+{
+ ButtonGroupBegin( _("Import/Export"), "cmdExportImportSetCmd",
+ _("Import/Export") );
+ cmdGroup = BG_EXPORTIMPORT;
+ AddToolbarButton("cmdExport", wIconCreatePixMap(doc_export_xpm3[iconSize]),
+ IC_SELECTED | IC_ACCLKEY, DoExport, NULL);
+ AddToolbarButton("cmdExportDXF",
+ wIconCreatePixMap(doc_export_dxf_xpm3[iconSize]),
+ IC_SELECTED | IC_ACCLKEY, DoExportDXF, I2VP(1));
+ AddToolbarButton("cmdExportBmap",
+ wIconCreatePixMap(doc_export_bmap_xpm3[iconSize]), IC_ACCLKEY,
+ OutputBitMapInit(), NULL);
+#if XTRKCAD_CREATE_SVG
+ AddToolbarButton("cmdExportSVG",
+ wIconCreatePixMap(doc_export_svg_xpm3[iconSize]),
+ IC_ACCLKEY, DoExportSVG, NULL); // IC_SELECTED |
+#endif
+ AddToolbarButton("cmdImport", wIconCreatePixMap(doc_import_xpm3[iconSize]),
+ IC_ACCLKEY,
+ DoImport, I2VP(0));
+ AddToolbarButton("cmdImportModule",
+ wIconCreatePixMap(doc_import_mod_xpm3[iconSize]), IC_ACCLKEY,
+ DoImport, I2VP(1));
+ ButtonGroupEnd();
+ ParamRegister( &menuPG );
+ AddPlaybackProc( "MENU", MenuPlayback, NULL );
+}
diff --git a/app/bin/menu.h b/app/bin/menu.h
new file mode 100644
index 0000000..eb95f90
--- /dev/null
+++ b/app/bin/menu.h
@@ -0,0 +1,69 @@
+/** \file menu.h
+ * Application wide declarations and defines
+ */
+
+/* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef MENU_H
+#define MENU_H
+
+#include "common.h"
+
+extern wMenu_p demoM;
+extern wMenu_p popup1M, popup2M;
+extern wButton_p undoB;
+extern wButton_p redoB;
+extern wButton_p zoomUpB;
+extern wButton_p zoomDownB;
+extern wButton_p zoomExtentsB;
+extern wButton_p mapShowB;
+extern wMenuToggle_p mapShowMI;
+extern wMenuList_p winList_mi;
+extern wMenuList_p fileList_ml;
+extern wMenuToggle_p snapGridEnableMI;
+extern wMenuToggle_p snapGridShowMI;
+
+extern long stickySet;
+
+extern wMenu_p MenuRegister( const char * label );
+typedef void (*rotateDialogCallBack_t) ( void * );
+typedef void (*indexDialogCallBack_t) (void * );
+typedef void (*moveDialogCallBack_t) (void *);
+extern void AddMoveMenu(wMenu_p m, moveDialogCallBack_t func);
+extern void AddIndexMenu(wMenu_p m, indexDialogCallBack_t func);
+extern void AddRotateMenu(wMenu_p m, rotateDialogCallBack_t func);
+extern int MagneticSnap( int state );
+extern void SelectFont(void * unused);
+extern void DoSticky(void * unused);
+
+extern void EnableMenus( void );
+extern void MessageListAppend( char *, const char * );
+extern const char * GetBalloonHelpStr(const char * helpKey);
+extern wButton_p AddToolbarButton(const char * helpStr, wIcon_p icon,
+ long options,
+ wButtonCallBack_p action, void * context);
+extern void ButtonGroupBegin(const char * menuTitle, const char * helpKey,
+ const char * stickyLabel);
+extern void ButtonGroupEnd(void);
+extern wIndex_t AddMenuButton(wMenu_p menu, procCommand_t command,
+ const char * helpKey, const char * nameStr, wIcon_p icon, int reqLevel,
+ long options, long acclKey, void * context);
+extern void CreateMenus(void);
+
+#endif
diff --git a/app/bin/misc.c b/app/bin/misc.c
index e976481..901b684 100644
--- a/app/bin/misc.c
+++ b/app/bin/misc.c
@@ -17,49 +17,30 @@
*
* 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 "cjoin.h"
-#include "common.h"
-#include "compound.h"
+#include "misc.h"
#include "cselect.h"
#include "cundo.h"
#include "custom.h"
#include "draw.h"
#include "fileio.h"
#include "layout.h"
-#include "misc.h"
#include "param.h"
#include "include/paramfilelist.h"
#include "paths.h"
#include "smalldlg.h"
#include "track.h"
#include "common-ui.h"
-#include "ctrain.h"
#include <inttypes.h>
-#include <stdint.h>
-
#define DEFAULT_SCALE ("N")
-extern wBalloonHelp_t balloonHelp[];
-
-static wMenuToggle_p mapShowMI;
-static wMenuToggle_p magnetsMI;
-
-#ifdef DEBUG
-#define CHECK_BALLOONHELP
-/*#define CHECK_UNUSED_BALLOONHELP*/
-#endif
-#ifdef CHECK_UNUSED_BALLOONHELP
-static void ShowUnusedBalloonHelp(void);
-#endif
-
/****************************************************************************
*
EXPORTED VARIABLES
@@ -68,108 +49,51 @@ static void ShowUnusedBalloonHelp(void);
EXPORT int iconSize = 0;
-EXPORT int foobar = 0;
-
-EXPORT int log_error;
-static int log_command;
-
+EXPORT wWinPix_t displayWidth;
+EXPORT wWinPix_t displayHeight;
EXPORT wWin_p mainW;
EXPORT char message[STR_HUGE_SIZE];
static char message2[STR_LONG_SIZE];
-EXPORT REGION_T curRegion = 0;
-
EXPORT long paramVersion = -1;
EXPORT coOrd zero = { 0.0, 0.0 };
EXPORT wBool_t extraButtons = FALSE;
-EXPORT long onStartup; /**< controls behaviour after startup: load last layout if zero, else start with blank canvas */
-
-EXPORT wButton_p undoB;
-EXPORT wButton_p redoB;
-
-EXPORT wButton_p zoomUpB;
-EXPORT wButton_p zoomDownB;
-EXPORT wButton_p zoomExtentsB;
-wButton_p mapShowB;
-wButton_p magnetsB;
-wButton_p backgroundB;
-
-EXPORT wIndex_t checkPtMark = 0;
-
-EXPORT wMenu_p demoM;
-EXPORT wMenu_p popup1M, popup2M;
-EXPORT wMenu_p popup1aM, popup2aM;
-EXPORT wMenu_p popup1mM, popup2mM;
-
-static wIndex_t curCommand = 0;
-EXPORT void * commandContext;
-EXPORT wIndex_t cmdGroup;
-EXPORT wIndex_t joinCmdInx;
-EXPORT wIndex_t modifyCmdInx;
-EXPORT long rightClickMode = 0;
-EXPORT long selectMode = 0;
-EXPORT long selectZero = 1;
-EXPORT DIST_T easementVal = 0.0;
-EXPORT DIST_T easeR = 0.0;
-EXPORT DIST_T easeL = 0.0;
-EXPORT coOrd cmdMenuPos;
-
-EXPORT wWinPix_t DlgSepLeft = 12;
-EXPORT wWinPix_t DlgSepMid = 18;
-EXPORT wWinPix_t DlgSepRight = 12;
-EXPORT wWinPix_t DlgSepTop = 12;
-EXPORT wWinPix_t DlgSepBottom = 12;
-EXPORT wWinPix_t DlgSepNarrow = 6;
-EXPORT wWinPix_t DlgSepWide = 12;
-EXPORT wWinPix_t DlgSepFrmLeft = 4;
-EXPORT wWinPix_t DlgSepFrmRight = 4;
-EXPORT wWinPix_t DlgSepFrmTop = 4;
-EXPORT wWinPix_t DlgSepFrmBottom = 4;
+EXPORT long
+onStartup; /**< controls behaviour after startup: load last layout if zero, else start with blank canvas */
static int verbose = 0;
-static wMenuList_p winList_mi;
static BOOL_T inMainW = TRUE;
-static long stickySet = 0;
-static long stickyCnt = 0;
-static const char * stickyLabels[33];
-#define TOOLBARSET_INIT (0xFFFF)
-EXPORT long toolbarSet = TOOLBARSET_INIT;
-EXPORT wWinPix_t toolbarHeight = 0;
-static wWinPix_t toolbarWidth = 0;
-
-static wMenuList_p messageList_ml;
-static BOOL_T messageListEmpty = TRUE;
-#define MESSAGE_LIST_EMPTY N_("No Messages")
+EXPORT long units = 0; /**< measurement units: 0 = English, 1 = metric */
-#define NUM_FILELIST (5)
+EXPORT long labelScale = 8;
+EXPORT long labelEnable = (LABELENABLE_ENDPT_ELEV|LABELENABLE_CARS);
+/** @prefs [draw] label-when=2 Unknown */
+EXPORT long labelWhen = 2;
-extern long curTurnoutEp;
-static wIndex_t printCmdInx;
-static wIndex_t gridCmdInx;
-static paramData_t menuPLs[101] = { { PD_LONG, &toolbarSet, "toolbarset" }, {
- PD_LONG, &curTurnoutEp, "cur-turnout-ep" } };
-static paramGroup_t menuPG = { "misc", PGO_RECORD, menuPLs, 2 };
+EXPORT long dontHideCursor = 0;
+#ifdef HIDESELECTIONWINDOW
+EXPORT long hideSelectionWindow = 0;
+#endif
-extern wBool_t wDrawDoTempDraw;
/****************************************************************************
*
- * LOCAL UTILITIES
+ * MEMORY ALLOCATION
*
*/
-EXPORT size_t totalMallocs = 0;
-EXPORT size_t totalMalloced = 0;
-EXPORT size_t totalRealloced = 0;
-EXPORT size_t totalReallocs = 0;
-EXPORT size_t totalFreeed = 0;
-EXPORT size_t totalFrees = 0;
+static size_t totalMallocs = 0;
+static size_t totalMalloced = 0;
+static size_t totalRealloced = 0;
+static size_t totalReallocs = 0;
+static size_t totalFreeed = 0;
+static size_t totalFrees = 0;
static void * StorageLog;
@@ -189,10 +113,11 @@ static unsigned long guard0 = 0xDEADBEEF;
static unsigned long guard1 = 0xAF00BA8A;
static int log_malloc;
-static void RecordMalloc(void * p, size_t size) {
+static void RecordMalloc(void * p, size_t size)
+{
- if (!StorageLog) StorageLog = malloc(sizeof(slog_t)*LOG_SIZE);
+ if (!StorageLog) { StorageLog = malloc(sizeof(slog_t)*LOG_SIZE); }
slog_p log_p = StorageLog;
if (StorageLogCurrent<LOG_SIZE) {
log_p[StorageLogCurrent].storage_p = p;
@@ -206,10 +131,11 @@ static void RecordMalloc(void * p, size_t size) {
}
}
-static void RecordMyFree(void *p) {
+static void RecordMyFree(void *p)
+{
slog_p log_p = StorageLog;
if (log_p) {
- for (int i=0;i<StorageLogCurrent;i++) {
+ for (int i=0; i<StorageLogCurrent; i++) {
if (!log_p[i].freed && log_p[i].storage_p == p) {
log_p[i].freed = TRUE;
}
@@ -219,20 +145,21 @@ static void RecordMyFree(void *p) {
#define SLOG_FMT "0x%.12" PRIxPTR
-EXPORT BOOL_T TestMallocs() {
+EXPORT BOOL_T TestMallocs()
+{
size_t oldSize;
size_t testedMallocs = 0;
void * old;
slog_p log_p = StorageLog;
BOOL_T rc = TRUE;
if (log_p) {
- for (int i=0;i<StorageLogCurrent;i++) {
- if (log_p[i].freed) continue;
+ for (int i=0; i<StorageLogCurrent; i++) {
+ if (log_p[i].freed) { continue; }
old = log_p[i].storage_p;
oldSize = log_p[i].storage_size;
if (*(unsigned long*) ((char*) old - sizeof(unsigned long)) != guard0) {
LogPrintf("Guard 0 hosed, " SLOG_FMT " size: %llu \n", (uintptr_t)old, oldSize);
- rc = FALSE;
+ rc = FALSE;
}
if (*(unsigned long*) ((char*) old + oldSize) != guard1) {
LogPrintf("Guard 1 hosed, " SLOG_FMT " size: %llu \n", (uintptr_t)old, oldSize);
@@ -242,24 +169,38 @@ EXPORT BOOL_T TestMallocs() {
}
}
LogPrintf("Tested: %llu Mallocs: %llu Total Malloced: %llu Freed: %llu Total Freed: %llu \n",
- testedMallocs, totalMallocs, totalMalloced, totalFrees, totalFreeed);
+ testedMallocs, totalMallocs, totalMalloced, totalFrees, totalFreeed);
return rc;
}
+/**
+ * Allocate memory
+ *
+ * Allocated memory has 'guard' values, before and after to detect overruns.
+ * Aborts on allocation failure.
+ *
+ * \param size IN amount of memory to allocate
+ *
+ * \return Pointer to allocated memory - never NULL
+ */
-EXPORT void * MyMalloc(size_t size) {
+EXPORT void * MyMalloc(size_t size)
+{
void * p;
totalMallocs++;
totalMalloced += size;
p = malloc((size_t) size + sizeof(size_t) + 2 * sizeof(unsigned long));
- if (p == NULL)
- AbortProg("No memory");
+ if ( p == NULL ) {
+ // We're hosed, get out of town
+ lprintf( "malloc(%ld) failed\n", size );
+ abort();
+ }
LOG1(log_malloc,
- ( " Malloc(%ld) = " SLOG_FMT " (" SLOG_FMT "-" SLOG_FMT ")\n",
- size, (size_t)((char*)p+sizeof (size_t) + sizeof (unsigned long)),
- (size_t)p,
- (size_t)((char*)p+size+sizeof (size_t) + 2 * sizeof(unsigned long))));
+ ( " Malloc(%ld) = " SLOG_FMT " (" SLOG_FMT "-" SLOG_FMT ")\n",
+ size, (size_t)((char*)p+sizeof (size_t) + sizeof (unsigned long)),
+ (size_t)p,
+ (size_t)((char*)p+size+sizeof (size_t) + 2 * sizeof(unsigned long))));
*(size_t*) p = (size_t) size;
p = (char*) p + sizeof(size_t);
@@ -267,86 +208,101 @@ EXPORT void * MyMalloc(size_t size) {
p = (char*) p + sizeof(unsigned long);
*(unsigned long*) ((char*) p + size) = guard1;
memset(p, 0, (size_t )size);
- if (extraButtons)
+ if (extraButtons) {
RecordMalloc(p,size);
+ }
return p;
}
-EXPORT void * MyRealloc(void * old, size_t size) {
+/**
+ * Reallocate memory
+ *
+ * Allocated memory has 'guard' values, before and after to detect overruns.
+ * Aborts on allocation failure.
+ *
+ * \param old IN existing pointer to allocated memory
+ * \param size IN amount of memory to allocate
+ *
+ * \return Pointer to reallocated memory - never NULL
+ */
+
+EXPORT void * MyRealloc(void * old, size_t size)
+{
size_t oldSize;
void * new;
- if (old == NULL)
+ if (old == NULL) {
return MyMalloc(size);
+ }
totalReallocs++;
totalRealloced += size;
- if (*(unsigned long*) ((char*) old - sizeof(unsigned long)) != guard0) {
- AbortProg("Guard0 is hosed");
- }
+ CHECKMSG( (*(unsigned long*) ((char*) old - sizeof(unsigned long)) == guard0),
+ ("Guard0 is hosed") );
oldSize = *(size_t*) ((char*) old - sizeof(unsigned long) - sizeof(size_t));
- if (*(unsigned long*) ((char*) old + oldSize) != guard1) {
- AbortProg("Guard1 is hosed");
- }
+ CHECKMSG( (*(unsigned long*) ((char*) old + oldSize) == guard1),
+ ( "Guard1 is hosed" ) );
- LOG1(log_malloc, (" Realloc (" SLOG_FMT ",%ld) was %d\n", (size_t)old, size, oldSize ))
+ LOG1(log_malloc, (" Realloc (" SLOG_FMT ",%ld) was %d\n", (size_t)old, size,
+ oldSize ))
if ((long) oldSize == size) {
return old;
}
- if (size == 0) {
- free((char*) old - sizeof *(long*) 0 - sizeof *(size_t*) 0);
- return NULL;
- }
new = MyMalloc(size);
- if (new == NULL && size)
- AbortProg("No memory");
memcpy(new, old, min((size_t )size, oldSize));
MyFree(old);
return new;
}
-EXPORT void MyFree(void * ptr) {
+EXPORT void MyFree(void * ptr)
+{
size_t oldSize;
totalFrees++;
- if (ptr) {
- if (*(unsigned long*) ((char*) ptr - sizeof(unsigned long)) != guard0) {
- AbortProg("Guard0 is hosed");
- }
- oldSize = *(size_t*) ((char*) ptr - sizeof(unsigned long)
- - sizeof(size_t));
- if (*(unsigned long*) ((char*) ptr + oldSize) != guard1) {
- AbortProg("Guard1 is hosed");
- }
+ if (ptr==NULL) {
+ return;
+ }
+ CHECKMSG( (*(unsigned long*) ((char*) ptr - sizeof(unsigned long)) == guard0),
+ ( "Guard0 is hosed") );
+ oldSize = *(size_t*) ((char*) ptr - sizeof(unsigned long)
+ - sizeof(size_t));
+ CHECKMSG( (*(unsigned long*) ((char*) ptr + oldSize) == guard1),
+ ( "Guard1 is hosed" ) );
- LOG1(log_malloc,
- (" Free %d at " SLOG_FMT " (" SLOG_FMT "-" SLOG_FMT ")\n",
- oldSize,
- (size_t)ptr,
- (size_t)((char*)ptr-sizeof *(size_t*)0-sizeof *(long*)0),
- (size_t)((char*)ptr+oldSize+sizeof *(long*)0)));
-
- totalFreeed += oldSize;
- free((char*) ptr - sizeof *(long*) 0 - sizeof *(size_t*) 0);
- if (extraButtons)
- RecordMyFree(ptr);
+ LOG1(log_malloc,
+ (" Free %ld at " SLOG_FMT " (" SLOG_FMT "-" SLOG_FMT ")\n",
+ oldSize,
+ (size_t)ptr,
+ (size_t)((char*)ptr-sizeof *(size_t*)0-sizeof *(long*)0),
+ (size_t)((char*)ptr+oldSize+sizeof *(long*)0)));
+
+ totalFreeed += oldSize;
+ free((char*) ptr - sizeof *(long*) 0 - sizeof *(size_t*) 0);
+ if (extraButtons) {
+ RecordMyFree(ptr);
}
}
-EXPORT void * memdup(void * src, size_t size) {
+EXPORT void * memdup(void * src, size_t size)
+{
void * p;
p = MyMalloc(size);
- if (p == NULL)
- AbortProg("No memory");
memcpy(p, src, size);
return p;
}
-EXPORT char * MyStrdup(const char * str) {
+EXPORT char * MyStrdup(const char * str)
+{
char * ret;
ret = (char*) MyMalloc(strlen(str) + 1);
strcpy(ret, str);
return ret;
}
+
+/****************************************************************************
+ *
+ * CHARACTER CONVERSION
+ *
+ */
/*
* Convert Text into the equivalent form that can be written to a file or put in a text box by adding escape characters
*
@@ -356,7 +312,8 @@ EXPORT char * MyStrdup(const char * str) {
* "" for " This is so that a CSV conformant type program can interpret the file output
*
*/
-EXPORT char * ConvertToEscapedText(const char * text) {
+EXPORT char * ConvertToEscapedText(const char * text)
+{
int text_i = 0;
int add = 0; //extra chars for escape
while (text[text_i]) {
@@ -417,9 +374,6 @@ EXPORT char * ConvertToEscapedText(const char * text) {
text_i++;
}
cout[cout_i] = '\0';
-#ifdef UTFCONVERT
- wSystemToUTF8(cout, cout, (unsigned int)cnt);
-#endif // UTFCONVERT
return cout;
}
@@ -433,7 +387,8 @@ EXPORT char * ConvertToEscapedText(const char * text) {
* \\ = \ The way to still produce backslash
*
*/
-EXPORT char * ConvertFromEscapedText(const char * text) {
+EXPORT char * ConvertFromEscapedText(const char * text)
+{
enum {
CHARACTER, ESCAPE
} state = CHARACTER;
@@ -477,18 +432,65 @@ EXPORT char * ConvertFromEscapedText(const char * text) {
return cout;
}
-EXPORT void AbortProg(const char * msg, ...) {
- static BOOL_T abort2 = FALSE;
- int rc;
+
+/****************************************************************************
+ *
+ * MESSAGES
+ *
+ */
+/**
+ * Print the message into internal buffer
+ *
+ * Called from CHECKMSG define
+ * \param sFormat IN printf-type format string
+ * \param ... IN vargs printf-type operands
+ *
+ * \return address of internal buffer containing formatted message
+ */
+EXPORT const char * AbortMessage(
+ const char * sFormat,
+ ... )
+{
+ static char sMessage[STR_SIZE];
+ if ( sFormat == NULL ) {
+ return "";
+ }
va_list ap;
- va_start(ap, msg);
- vsprintf(message, msg, ap);
+ va_start(ap, sFormat);
+ vsnprintf(sMessage, sizeof sMessage, sFormat, ap);
va_end(ap);
+ return sMessage;
+}
+
+/**
+ * Display error notice box
+ * Offer chance to save layout
+ * Abort the program
+ *
+ * Called from CHECK/CHECKMSG defines
+ *
+ * \param sCond IN string-ized error condition
+ * \param sFileName IN file name of fault
+ * \param iLineNumber IN line number of fault
+ * \param sMsg IN extra message with additional info
+ *
+ * \return No return
+ */
+EXPORT void AbortProg(
+ const char * sCond,
+ const char * sFileName,
+ int iLineNumber,
+ const char * sMsg )
+{
+ static BOOL_T abort2 = FALSE;
+ snprintf( message, sizeof message, "%s: %s:%d %s", sCond, sFileName,
+ iLineNumber, sMsg?sMsg:"" );
if (abort2) {
wNoticeEx( NT_ERROR, message, _("ABORT"), NULL);
} else {
+ abort2 = TRUE; // no 2nd chance
strcat(message, _("\nDo you want to save your layout?"));
- rc = wNoticeEx( NT_ERROR, message, _("Ok"), _("ABORT"));
+ int rc = wNoticeEx( NT_ERROR, message, _("Ok"), _("ABORT"));
if (rc) {
DoSaveAs(abort);
} else {
@@ -497,88 +499,69 @@ EXPORT void AbortProg(const char * msg, ...) {
}
}
-EXPORT char * Strcpytrimed(char * dst, const char * src, BOOL_T double_quotes) {
+EXPORT char * Strcpytrimed(char * dst, const char * src, BOOL_T double_quotes)
+{
const char * cp;
- while (*src && isspace((unsigned char) *src))
+ while (*src && isspace((unsigned char) *src)) {
src++;
- if (!*src)
+ }
+ if (!*src) {
return dst;
+ }
cp = src + strlen(src) - 1;
- while (cp > src && isspace((unsigned char) *cp))
+ while (cp > src && isspace((unsigned char) *cp)) {
cp--;
+ }
while (src <= cp) {
- if (*src == '"' && double_quotes)
+ if (*src == '"' && double_quotes) {
*dst++ = '"';
+ }
*dst++ = *src++;
}
*dst = '\0';
return dst;
}
+// ??? Referenced from gtklib.browserhelp.c ???
static char * directory;
-EXPORT wBool_t CheckHelpTopicExists(const char * topic) {
+EXPORT wBool_t CheckHelpTopicExists(const char * topic)
+{
char * htmlFile;
- // Check the file exits in the distro
+ // Check the file exits in the distro
- if (!directory)
+ if (!directory) {
directory = malloc(BUFSIZ);
+ }
- if (directory == NULL) return 0;
-
- sprintf(directory, "%s/html/", wGetAppLibDir());
-
- htmlFile = malloc(strlen(directory)+strlen(topic) + 6);
+ if (directory == NULL) { return 0; }
- sprintf(htmlFile, "%s%s.html", directory, topic);
+ sprintf(directory, "%s/html/", wGetAppLibDir());
- if( access( htmlFile, F_OK ) == -1 ) {
+ htmlFile = malloc(strlen(directory)+strlen(topic) + 6);
- printf("Missing help topic %s\n",topic);
+ sprintf(htmlFile, "%s%s.html", directory, topic);
- free(htmlFile);
+ if( access( htmlFile, F_OK ) == -1 ) {
- return 0;
+ printf("Missing help topic %s\n",topic);
- }
+ free(htmlFile);
- free(htmlFile);
+ return 0;
- return 1;
+ }
-}
+ free(htmlFile);
-EXPORT char * BuildTrimedTitle(char * cp, const char * sep, const char * mfg, const char * desc,
- const char * partno) {
- cp = Strcpytrimed(cp, mfg, FALSE);
- strcpy(cp, sep);
- cp += strlen(cp);
- cp = Strcpytrimed(cp, desc, FALSE);
- strcpy(cp, sep);
- cp += strlen(cp);
- cp = Strcpytrimed(cp, partno, FALSE);
- return cp;
-}
+ return 1;
-static void ShowMessageHelp(int index, const char * label, void * data) {
- char msgKey[STR_SIZE], *cp, *msgSrc;
- msgSrc = (char*) data;
- if (!msgSrc)
- return;
- cp = strchr(msgSrc, '\t');
- if (cp == NULL) {
- sprintf(msgKey, _("No help for %s"), msgSrc);
- wNoticeEx( NT_INFORMATION, msgKey, _("Ok"), NULL);
- return;
- }
- memcpy(msgKey, msgSrc, cp - msgSrc);
- msgKey[cp - msgSrc] = 0;
- wHelp(msgKey);
}
-static const char * ParseMessage(const char *msgSrc) {
+static const char * ParseMessage(const char *msgSrc)
+{
char *cp1 = NULL, *cp2 = NULL;
static char shortMsg[STR_SIZE];
cp1 = strchr(_(msgSrc), '\t');
@@ -594,30 +577,29 @@ static const char * ParseMessage(const char *msgSrc) {
cp1++;
cp2 = cp1;
}
- if (messageListEmpty) {
- wMenuListDelete(messageList_ml, _(MESSAGE_LIST_EMPTY));
- messageListEmpty = FALSE;
- }
- wMenuListAdd(messageList_ml, 0, cp1, _(msgSrc));
+ MessageListAppend( cp1, _(msgSrc) );
return cp2;
} else {
return _(msgSrc);
}
}
-EXPORT void InfoMessage(const char * format, ...) {
+EXPORT void InfoMessage(const char * format, ...)
+{
va_list ap;
va_start(ap, format);
format = ParseMessage(format);
vsnprintf(message2, 1020, format, ap);
va_end(ap);
/*InfoSubstituteControl( NULL, NULL );*/
- if (inError)
+ if (inError) {
return;
+ }
SetMessage(message2);
}
-EXPORT void ErrorMessage(const char * format, ...) {
+EXPORT void ErrorMessage(const char * format, ...)
+{
va_list ap;
va_start(ap, format);
format = ParseMessage(format);
@@ -629,7 +611,9 @@ EXPORT void ErrorMessage(const char * format, ...) {
inError = TRUE;
}
-EXPORT int NoticeMessage(const char * format, const char * yes, const char * no, ...) {
+EXPORT int NoticeMessage(const char * format, const char * yes, const char * no,
+ ...)
+{
va_list ap;
va_start(ap, no);
format = ParseMessage(format);
@@ -638,11 +622,14 @@ EXPORT int NoticeMessage(const char * format, const char * yes, const char * no,
return wNotice(message2, yes, no);
}
-EXPORT int NoticeMessage2(int playbackRC, const char * format, const char * yes, const char * no,
- ...) {
+EXPORT int NoticeMessage2(int playbackRC, const char * format, const char * yes,
+ const char * no,
+ ...)
+{
va_list ap;
- if (inPlayback)
+ if (inPlayback) {
return playbackRC;
+ }
va_start(ap, no);
format = ParseMessage(format);
vsnprintf(message2, 1020, format, ap);
@@ -656,24 +643,23 @@ EXPORT int NoticeMessage2(int playbackRC, const char * format, const char * yes,
* MAIN BUTTON HANDLERS
*
*/
- /**
- * Confirm a requested operation in case of possible loss of changes.
- *
- * \param label2 IN operation to be cancelled, unused at the moment
- * \param after IN function to be executed on positive confirmation
- * \return true if proceed, false if cancel operation
- */
+/**
+ * Confirm a requested operation in case of possible loss of changes.
+ *
+ * \param label2 IN operation to be cancelled, unused at the moment
+ * \param after IN function to be executed on positive confirmation
+ * \return true if proceed, false if cancel operation
+ */
/** TODO: make sensible messages when requesting confirmation */
-bool
-Confirm(char * label2, doSaveCallBack_p after)
+EXPORT bool Confirm(char * label2, doSaveCallBack_p after)
{
int rc = -1;
if (changed) {
rc = wNotice3(_("Save changes to the layout design before closing?\n\n"
- "If you don't save now, your unsaved changes will be discarded."),
- _("&Save"), _("&Cancel"), _("&Don't Save"));
+ "If you don't save now, your unsaved changes will be discarded."),
+ _("&Save"), _("&Cancel"), _("&Don't Save"));
}
switch (rc) {
@@ -683,91 +669,23 @@ Confirm(char * label2, doSaveCallBack_p after)
case 0: /* cancel operation */
break;
case 1: /* save */
- LayoutBackGroundInit(FALSE);
- LayoutBackGroundSave();
+ //LayoutBackGroundInit(FALSE);
+ //LayoutBackGroundSave();
DoSave(after);
break;
}
return(rc != 0);
}
-static void ChkLoad(void * unused) {
- Confirm(_("Load"), DoLoad);
-}
-
-static void ChkExamples( void * unused )
-{
- Confirm(_("examples"), DoExamples);
-}
-
-static void ChkRevert(void * unused)
-{
- int rc;
-
- if (changed) {
- rc = wNoticeEx(NT_WARNING,
- _("Do you want to return to the last saved state?\n\n"
- "Revert will cause all changes done since last save to be lost."),
- _("&Revert"), _("&Cancel"));
- if (rc) {
- /* load the file */
- char *filename = GetLayoutFullPath();
- LoadTracks(1, &filename, I2VP(1)); //Keep background
- }
- }
-}
-
-static char * fileListPathName;
-static void AfterFileList(void) {
- DoFileList(0, NULL, fileListPathName);
-}
-
-static void ChkFileList(int index, const char * label, void * data) {
- fileListPathName = (char*) data;
- Confirm(_("Load"), AfterFileList);
-}
-
-/**
- * Save information about current files and some settings to preferences file.
- */
-
-EXPORT void SaveState(void) {
- wWinPix_t width, height;
- const char * fileName;
- void * pathName;
- char file[6];
- int inx;
-
- wWinGetSize(mainW, &width, &height);
- wPrefSetInteger("draw", "mainwidth", (int)width);
- wPrefSetInteger("draw", "mainheight", (int)height);
- SaveParamFileList();
- ParamUpdatePrefs();
-
- wPrefSetString( "misc", "lastlayout", GetLayoutFullPath());
- wPrefSetInteger( "misc", "lastlayoutexample", bExample );
-
- if (fileList_ml) {
- strcpy(file, "file");
- file[5] = 0;
- for (inx = 0; inx < NUM_FILELIST; inx++) {
- fileName = wMenuListGet(fileList_ml, inx, &pathName);
- if (fileName) {
- file[4] = '0' + inx;
- sprintf(message, "%s", (char* )pathName);
- wPrefSetString("filelist", file, message);
- }
- }
- }
- wPrefFlush("");
-}
/*
* Clean up before quitting
*/
-static void DoQuitAfter(void) {
+static void DoQuitAfter(void)
+{
changed = 0;
- CleanupFiles(); //Get rid of checkpoint if we quit.
+ CleanupCheckpointFiles(); //Get rid of checkpoint if we quit.
+ CleanupTempArchive(); // removefiels used for archive handling
SaveState();
}
/**
@@ -775,7 +693,8 @@ static void DoQuitAfter(void) {
* to close the application. Before shutting down confirmation is gotten to
* prevent data loss.
*/
-void DoQuit(void * unused) {
+EXPORT void DoQuit(void * unused)
+{
if (Confirm(_("Quit"), DoQuitAfter)) {
#ifdef CHECK_UNUSED_BALLOONHELP
@@ -786,12 +705,13 @@ void DoQuit(void * unused) {
}
}
-static void DoClearAfter(void) {
+static void DoClearAfter(void)
+{
Reset();
ClearTracks();
+ ResetLayers(); // set all layers to their default properties and set current layer to 0
- /* set all layers to their default properties and set current layer to 0 */
DoLayout(NULL);
checkPtMark = changed = 0;
DoChangeNotification( CHANGE_MAIN|CHANGE_MAP );
@@ -802,7 +722,8 @@ static void DoClearAfter(void) {
LayoutBackGroundInit(TRUE);
}
-static void DoClear(void * unused) {
+EXPORT void DoClear(void * unused)
+{
Confirm(_("Clear"), DoClearAfter);
}
@@ -810,7 +731,8 @@ static void DoClear(void * unused) {
* Toggle visibility state of map window.
*/
-void MapWindowToggleShow(void * unused) {
+EXPORT void MapWindowToggleShow(void * unused)
+{
MapWindowShow(!mapVisible);
}
@@ -820,7 +742,8 @@ void MapWindowToggleShow(void * unused) {
* \param state IN TRUE if visible, FALSE if hidden
*/
-void MapWindowShow(int state) {
+EXPORT void MapWindowShow(int state)
+{
mapVisible = state;
wPrefSetInteger("misc", "mapVisible", mapVisible);
wMenuToggleSet(mapShowMI, mapVisible);
@@ -833,28 +756,9 @@ void MapWindowShow(int state) {
wButtonSetBusy(mapShowB, (wBool_t) mapVisible);
}
-/**
- * Set magnets state
- */
-int MagneticSnap(int state)
-{
- int oldState = magneticSnap;
- magneticSnap = state;
- wPrefSetInteger("misc", "magnets", magneticSnap);
- wMenuToggleSet(magnetsMI, magneticSnap);
- wButtonSetBusy(magnetsB, (wBool_t) magneticSnap);
- return oldState;
-}
-/**
- * Toggle magnets on/off
- */
-void MagneticSnapToggle(void * unused) {
- MagneticSnap(!magneticSnap);
-}
-
-
-static void DoShowWindow(int index, const char * name, void * data) {
+EXPORT void DoShowWindow(int index, const char * name, void * data)
+{
if (data == mapW) {
if (mapVisible == FALSE) {
MapWindowShow( TRUE);
@@ -867,17 +771,20 @@ static void DoShowWindow(int index, const char * name, void * data) {
static dynArr_t demoWindows_da;
#define demoWindows(N) DYNARR_N( wWin_p, demoWindows_da, N )
-EXPORT void wShow(wWin_p win) {
+EXPORT void wShow(wWin_p win)
+{
int inx;
if (inPlayback && win != demoW) {
wWinSetBusy(win, TRUE);
for (inx = 0; inx < demoWindows_da.cnt; inx++)
- if ( demoWindows(inx) == win)
+ if ( demoWindows(inx) == win) {
break;
+ }
if (inx >= demoWindows_da.cnt) {
for (inx = 0; inx < demoWindows_da.cnt; inx++)
- if ( demoWindows(inx) == NULL)
+ if ( demoWindows(inx) == NULL) {
break;
+ }
if (inx >= demoWindows_da.cnt) {
DYNARR_APPEND(wWin_p, demoWindows_da, 10);
inx = demoWindows_da.cnt - 1;
@@ -885,39 +792,47 @@ EXPORT void wShow(wWin_p win) {
demoWindows(inx) = win;
}
}
- if (win != mainW)
+ if (win != mainW) {
wMenuListAdd(winList_mi, -1, wWinGetTitle(win), win);
+ }
wWinShow(win, TRUE);
}
-EXPORT void wHide(wWin_p win) {
+EXPORT void wHide(wWin_p win)
+{
int inx;
wWinShow(win, FALSE);
wWinSetBusy(win, FALSE);
- if (inMainW && win == aboutW)
+ if (inMainW && win == aboutW) {
return;
+ }
wMenuListDelete(winList_mi, wWinGetTitle(win));
ParamResetInvalid( win );
if (inPlayback)
for (inx = 0; inx < demoWindows_da.cnt; inx++)
- if ( demoWindows(inx) == win)
+ if ( demoWindows(inx) == win) {
demoWindows(inx) = NULL;
+ }
}
-EXPORT void CloseDemoWindows(void) {
+EXPORT void CloseDemoWindows(void)
+{
int inx;
for (inx = 0; inx < demoWindows_da.cnt; inx++)
- if ( demoWindows(inx) != NULL)
+ if ( demoWindows(inx) != NULL) {
wHide(demoWindows(inx));
- demoWindows_da.cnt = 0;
+ }
+ DYNARR_RESET( wWin_p, demoWindows_da );
}
-EXPORT void DefaultProc(wWin_p win, winProcEvent e, void * data) {
+EXPORT void DefaultProc(wWin_p win, winProcEvent e, void * data)
+{
switch (e) {
case wClose_e:
wMenuListDelete(winList_mi, wWinGetTitle(win));
- if (data != NULL)
+ if (data != NULL) {
ConfirmReset( FALSE);
+ }
wWinDoCancel(win);
break;
default:
@@ -925,1321 +840,15 @@ EXPORT void DefaultProc(wWin_p win, winProcEvent e, void * data) {
}
}
-static void NextWindow(void) {
-}
-
-EXPORT void SelectFont(void * unused) {
- wSelectFont(_("XTrackCAD Font"));
-}
-
-/*****************************************************************************
- *
- * COMMAND
- *
- */
-
-#define COMMAND_MAX (180)
-#define BUTTON_MAX (180)
-#define NUM_CMDMENUS (4)
-
-static struct {
- wControl_p control;
- wBool_t enabled;
- wWinPix_t x, y;
- long options;
- int group;
- wIndex_t cmdInx;
-} buttonList[BUTTON_MAX];
-static int buttonCnt = 0;
-
-static struct {
- procCommand_t cmdProc;
- char * helpKey;
- wIndex_t buttInx;
- char * labelStr;
- wIcon_p icon;
- int reqLevel;
- wBool_t enabled;
- long options;
- long stickyMask;
- long acclKey;
- wMenuPush_p menu[NUM_CMDMENUS];
- void * context;
-} commandList[COMMAND_MAX];
-static int commandCnt = 0;
-
-#ifdef CHECK_UNUSED_BALLOONHELP
-int * balloonHelpCnts;
-#endif
-
-EXPORT const char * GetBalloonHelpStr(const char * helpKey) {
- wBalloonHelp_t * bh;
-#ifdef CHECK_UNUSED_BALLOONHELP
- if ( balloonHelpCnts == NULL ) {
- for ( bh=balloonHelp; bh->name; bh++ );
- balloonHelpCnts = (int*)malloc( (sizeof *(int*)0) * (bh-balloonHelp) );
- memset( balloonHelpCnts, 0, (sizeof *(int*)0) * (bh-balloonHelp) );
- }
-#endif
- for (bh = balloonHelp; bh->name; bh++) {
- if (strcmp(bh->name, helpKey) == 0) {
-#ifdef CHECK_UNUSED_BALLOONHELP
- balloonHelpCnts[(bh-balloonHelp)]++;
-#endif
- return _(bh->value);
- }
- }
-#ifdef CHECK_BALLOONHELP
- fprintf( stderr, _("No balloon help for %s\n"), helpKey );
-#endif
- return _("No Help");
-}
-
-#ifdef CHECK_UNUSED_BALLOONHELP
-static void ShowUnusedBalloonHelp( void )
+static void NextWindow(void)
{
- int cnt;
- for ( cnt=0; balloonHelp[cnt].name; cnt++ )
- if ( balloonHelpCnts[cnt] == 0 )
- fprintf( stderr, "unused BH %s\n", balloonHelp[cnt].name );
-}
-#endif
-
-EXPORT const char* GetCurCommandName() {
- return commandList[curCommand].helpKey;
-}
-
-EXPORT void EnableCommands(void) {
- int inx, minx;
- wBool_t enable;
-
- LOG(log_command, 5,
- ( "COMMAND enable S%d M%d\n", selectedTrackCount, programMode ))
- for (inx = 0; inx < commandCnt; inx++) {
- if (commandList[inx].buttInx) {
- if ((commandList[inx].options & IC_SELECTED)
- && selectedTrackCount <= 0)
- enable = FALSE;
- else if ((programMode == MODE_TRAIN
- && (commandList[inx].options
- & (IC_MODETRAIN_TOO | IC_MODETRAIN_ONLY)) == 0)
- || (programMode != MODE_TRAIN
- && (commandList[inx].options & IC_MODETRAIN_ONLY)
- != 0))
- enable = FALSE;
- else
- enable = TRUE;
- if (commandList[inx].enabled != enable) {
- if (commandList[inx].buttInx >= 0)
- wControlActive(buttonList[commandList[inx].buttInx].control,
- enable);
- for (minx = 0; minx < NUM_CMDMENUS; minx++)
- if (commandList[inx].menu[minx])
- wMenuPushEnable(commandList[inx].menu[minx], enable);
- commandList[inx].enabled = enable;
- }
- }
- }
-
- for (inx = 0; inx < menuPG.paramCnt; inx++) {
- if (menuPLs[inx].control == NULL)
- continue;
- if ((menuPLs[inx].option & IC_SELECTED) && selectedTrackCount <= 0)
- enable = FALSE;
- else if ((programMode == MODE_TRAIN
- && (menuPLs[inx].option & (IC_MODETRAIN_TOO | IC_MODETRAIN_ONLY))
- == 0)
- || (programMode != MODE_TRAIN
- && (menuPLs[inx].option & IC_MODETRAIN_ONLY) != 0))
- enable = FALSE;
- else
- enable = TRUE;
- wMenuPushEnable((wMenuPush_p) menuPLs[inx].control, enable);
- }
-
- for (inx = 0; inx < buttonCnt; inx++) {
- if (buttonList[inx].cmdInx < 0
- && (buttonList[inx].options & IC_SELECTED))
- wControlActive(buttonList[inx].control, selectedTrackCount > 0);
- }
-}
-
-EXPORT wIndex_t GetCurrentCommand() {
- return curCommand;
-}
-
-static wIndex_t autosave_count = 0;
-
-EXPORT void TryCheckPoint() {
- if (checkPtInterval > 0
- && changed >= checkPtMark + (wIndex_t) checkPtInterval
- && !inPlayback) {
- DoCheckPoint();
- checkPtMark = changed;
-
- autosave_count++;
-
- if ((autosaveChkPoints>0) && (autosave_count>=autosaveChkPoints)) {
- if ( bReadOnly || *(GetLayoutFilename()) == '\0') {
- SetAutoSave();
- } else
- DoSave(NULL);
- InfoMessage(_("File AutoSaved"));
- autosave_count = 0;
- }
- }
-}
-
-EXPORT void Reset(void) {
- if (recordF) {
- fprintf(recordF, "RESET\n");
- fflush(recordF);
- }
- LOG(log_command, 2,
- ( "COMMAND CANCEL %s\n", commandList[curCommand].helpKey ))
- commandList[curCommand].cmdProc( C_CANCEL, zero);
- if (commandList[curCommand].buttInx >= 0)
- wButtonSetBusy(
- (wButton_p) buttonList[commandList[curCommand].buttInx].control,
- FALSE);
- curCommand = (preSelect ? selectCmdInx : describeCmdInx);
- wSetCursor(mainD.d, preSelect ? defaultCursor : wCursorQuestion);
- commandContext = commandList[curCommand].context;
- if (commandList[curCommand].buttInx >= 0)
- wButtonSetBusy(
- (wButton_p) buttonList[commandList[curCommand].buttInx].control,
- TRUE);
- tempSegs_da.cnt = 0;
-
- TryCheckPoint();
-
- ClrAllTrkBits( TB_UNDRAWN );
- DoRedraw(); // Reset
- EnableCommands();
- ResetMouseState();
- LOG(log_command, 1,
- ( "COMMAND RESET %s\n", commandList[curCommand].helpKey ))
- (void) commandList[curCommand].cmdProc( C_START, zero);
-}
-
-static BOOL_T CheckClick(wAction_t *action, coOrd *pos, BOOL_T checkLeft,
- BOOL_T checkRight) {
- static long time0;
- static coOrd pos0;
- long time1;
- long timeDelta;
- DIST_T distDelta;
-
- switch (*action) {
- case C_LDOUBLE:
- if (!checkLeft)
- return TRUE;
- time0 = 0;
- break;
- case C_DOWN:
- if (!checkLeft)
- return TRUE;
- time0 = wGetTimer() - adjTimer;
- pos0 = *pos;
- return FALSE;
- case C_MOVE:
- if (!checkLeft)
- return TRUE;
- if (time0 != 0) {
- time1 = wGetTimer() - adjTimer;
- timeDelta = time1 - time0;
- distDelta = FindDistance(*pos, pos0);
- if (timeDelta > dragTimeout || distDelta > dragDistance) {
- time0 = 0;
- *pos = pos0;
- *action = C_DOWN;
- } else {
- return FALSE;
- }
- }
- break;
- case C_UP:
- if (!checkLeft)
- return TRUE;
- if (time0 != 0) {
- time1 = wGetTimer() - adjTimer;
- timeDelta = time1 - time0;
- distDelta = FindDistance(*pos, pos0);
- time0 = 0;
- *action = C_LCLICK;
- }
- break;
- case C_RDOWN:
- if (!checkRight)
- return TRUE;
- time0 = wGetTimer() - adjTimer;
- pos0 = *pos;
- return FALSE;
- case C_RMOVE:
- if (!checkRight)
- return TRUE;
- if (time0 != 0) {
- time1 = wGetTimer() - adjTimer;
- timeDelta = time1 - time0;
- distDelta = FindDistance(*pos, pos0);
- if (timeDelta > dragTimeout || distDelta > dragDistance) {
- time0 = 0;
- *pos = pos0;
- *action = C_RDOWN;
- } else {
- return FALSE;
- }
- }
- break;
- case C_RUP:
- if (!checkRight)
- return TRUE;
- if (time0 != 0) {
- time0 = 0;
- *action = C_RCLICK;
- }
- break;
- }
- return TRUE;
}
-EXPORT wBool_t DoCurCommand(wAction_t action, coOrd pos) {
- wAction_t rc;
- int mode;
- wBool_t bExit = FALSE;
-
- if (action == wActionMove) {
- if ((commandList[curCommand].options & IC_WANT_MOVE) == 0) {
- bExit = TRUE;
- }
- } else if ((action&0xFF) == wActionModKey) {
- if ((commandList[curCommand].options & IC_WANT_MODKEYS) == 0) {
- bExit = TRUE;
- }
- } else if (!CheckClick(&action, &pos,
- (int) (commandList[curCommand].options & IC_LCLICK), TRUE)) {
- bExit = TRUE;
- } else if (action == C_RCLICK
- && (commandList[curCommand].options & IC_RCLICK) == 0) {
- if (!inPlayback) {
- mode = MyGetKeyState();
- if ((mode & (~WKEY_SHIFT)) != 0) {
- wBeep();
- bExit = TRUE;
- } else if (((mode & WKEY_SHIFT) == 0) == (rightClickMode == 0)) {
- if (selectedTrackCount > 0) {
- if (commandList[curCommand].options & IC_CMDMENU) {
- }
- wMenuPopupShow(popup2M);
- } else {
- wMenuPopupShow(popup1M);
- }
- bExit = TRUE;
- } else if ((commandList[curCommand].options & IC_CMDMENU)) {
- cmdMenuPos = pos;
- action = C_CMDMENU;
- } else {
- wBeep();
- bExit = TRUE;
- }
- } else {
- bExit = TRUE;
- }
- }
- if ( bExit ) {
- TempRedraw(); // DoCurCommand: precommand
- return C_CONTINUE;
- }
-
- LOG(log_command, 2,
- ( "COMMAND MOUSE %s %d @ %0.3f %0.3f\n", commandList[curCommand].helpKey, (int)action, pos.x, pos.y ))
- rc = commandList[curCommand].cmdProc(action, pos);
- LOG(log_command, 4, ( " COMMAND returns %d\n", rc ))
- switch ( action & 0xFF ) {
- case wActionMove:
- case wActionModKey:
- case C_DOWN:
- case C_MOVE:
- case C_UP:
- case C_RDOWN:
- case C_RMOVE:
- case C_RUP:
- case C_LCLICK:
- case C_RCLICK:
- case C_TEXT:
- case C_OK:
- if (rc== C_TERMINATE) MainRedraw();
- else TempRedraw(); // DoCurCommand: postcommand
- break;
- default:
- break;
- }
- if ((rc == C_TERMINATE || rc == C_INFO)
- && (commandList[curCommand].options & IC_STICKY)
- && (commandList[curCommand].stickyMask & stickySet)) {
- tempSegs_da.cnt = 0;
- UpdateAllElevations();
- if (commandList[curCommand].options & IC_NORESTART) {
- return C_CONTINUE;
- }
- //Make sure we checkpoint even sticky commands
- TryCheckPoint();
- LOG(log_command, 1,
- ( "COMMAND START %s\n", commandList[curCommand].helpKey ))
- wSetCursor(mainD.d,defaultCursor);
- rc = commandList[curCommand].cmdProc( C_START, pos);
- LOG(log_command, 4, ( " COMMAND returns %d\n", rc ))
- switch (rc) {
- case C_CONTINUE:
- break;
- case C_ERROR:
- Reset();
-#ifdef VERBOSE
- lprintf( "Start returns Error");
-#endif
- break;
- case C_TERMINATE:
- InfoMessage("");
- case C_INFO:
- Reset();
- break;
- }
- }
- return rc;
-}
-
-/*
- * \parm reset says if the user used Esc rather than undo/redo
- */
-EXPORT int ConfirmReset(BOOL_T retry) {
- wAction_t rc;
- if (curCommand != describeCmdInx) {
- LOG(log_command, 3,
- ( "COMMAND CONFIRM %s\n", commandList[curCommand].helpKey ))
- rc = commandList[curCommand].cmdProc( C_CONFIRM, zero);
- LOG(log_command, 4, ( " COMMAND returns %d\n", rc ))
- if (rc == C_ERROR) {
- if (retry)
- rc =
- wNotice3(
- _(
- "Cancelling the current command will undo the changes\n"
- "you are currently making. Do you want to do the update instead?"),
- _("Yes"), _("No"), _("Cancel"));
- else
- rc =
- wNoticeEx( NT_WARNING,
- _(
- "Cancelling the current command will undo the changes\n"
- "you are currently making. Do you want to do the update instead?"),
- _("Yes"), _("No"));
- if (rc == 1) {
- LOG(log_command, 3,
- ( "COMMAND OK %s\n", commandList[curCommand].helpKey ))
- commandList[curCommand].cmdProc( C_OK, zero);
- return C_OK;
- } else if (rc == -1) {
- return C_CANCEL;
- }
- } else if (rc == C_TERMINATE) {
- return C_TERMINATE;
- }
- }
- if (retry) {
- /* because user pressed esc */
- SetAllTrackSelect( FALSE);
- }
- Reset();
- LOG(log_command, 1,
- ( "COMMAND RESET %s\n", commandList[curCommand].helpKey ))
- commandList[curCommand].cmdProc( C_START, zero);
- return C_CONTINUE;
-}
-
-EXPORT BOOL_T IsCurCommandSticky(void) {
- if ((commandList[curCommand].options & IC_STICKY) != 0
- && (commandList[curCommand].stickyMask & stickySet) != 0)
- return TRUE;
- return FALSE;
-}
-
-EXPORT void ResetIfNotSticky(void) {
- if ((commandList[curCommand].options & IC_STICKY) == 0
- || (commandList[curCommand].stickyMask & stickySet) == 0)
- Reset();
-}
-
-EXPORT void DoCommandB(void * data) {
- wIndex_t inx = (wIndex_t)VP2L(data);
- STATUS_T rc;
- static coOrd pos = { 0, 0 };
- static int inDoCommandB = FALSE;
- wIndex_t buttInx;
-
- if (inDoCommandB)
- return;
- inDoCommandB = TRUE;
-
- if (inx < 0 || inx >= commandCnt) {
- ASSERT(FALSE);
- inDoCommandB = FALSE;
- return;
- }
-
- if ((!inPlayback) && (!commandList[inx].enabled)) {
- ErrorMessage(MSG_COMMAND_DISABLED);
- inx = describeCmdInx;
- }
-
- InfoMessage("");
- if (curCommand != selectCmdInx) {
- LOG(log_command, 3,
- ( "COMMAND FINISH %s\n", commandList[curCommand].helpKey ))
- rc = commandList[curCommand].cmdProc( C_FINISH, zero);
- LOG(log_command, 3,
- ( "COMMAND CONFIRM %s\n", commandList[curCommand].helpKey ))
- rc = commandList[curCommand].cmdProc( C_CONFIRM, zero);
- LOG(log_command, 4, ( " COMMAND returns %d\n", rc ))
- if (rc == C_ERROR) {
- rc = wNotice3(
- _("Cancelling the current command will undo the changes\n"
- "you are currently making. Do you want to update?"),
- _("Yes"), _("No"), _("Cancel"));
- if (rc == 1)
- commandList[curCommand].cmdProc( C_OK, zero);
- else if (rc == -1) {
- inDoCommandB = FALSE;
- return;
- }
- }
- LOG(log_command, 3,
- ( "COMMAND CANCEL %s\n", commandList[curCommand].helpKey ))
- commandList[curCommand].cmdProc( C_CANCEL, pos);
- tempSegs_da.cnt = 0;
- } else {
- LOG(log_command, 3,
- ( "COMMAND FINISH %s\n", commandList[curCommand].helpKey ))
- rc = commandList[curCommand].cmdProc( C_FINISH, zero);
- }
- if (commandList[curCommand].buttInx >= 0)
- wButtonSetBusy(
- (wButton_p) buttonList[commandList[curCommand].buttInx].control,
- FALSE);
-
- if (recordF) {
- fprintf(recordF, "COMMAND %s\n", commandList[inx].helpKey + 3);
- fflush(recordF);
- }
-
- curCommand = inx;
- commandContext = commandList[curCommand].context;
- if ((buttInx = commandList[curCommand].buttInx) >= 0) {
- if (buttonList[buttInx].cmdInx != curCommand) {
- wButtonSetLabel((wButton_p) buttonList[buttInx].control,
- (char*) commandList[curCommand].icon);
- wControlSetHelp(buttonList[buttInx].control,
- GetBalloonHelpStr(commandList[curCommand].helpKey));
- wControlSetContext(buttonList[buttInx].control,
- I2VP(curCommand));
- buttonList[buttInx].cmdInx = curCommand;
- }
- wButtonSetBusy(
- (wButton_p) buttonList[commandList[curCommand].buttInx].control,
- TRUE);
- }
- LOG(log_command, 1,
- ( "COMMAND START %s\n", commandList[curCommand].helpKey ))
- wSetCursor(mainD.d,defaultCursor);
- rc = commandList[curCommand].cmdProc( C_START, pos);
- LOG(log_command, 4, ( " COMMAND returns %d\n", rc ))
- TempRedraw(); // DoCommandB
- switch (rc) {
- case C_CONTINUE:
- break;
- case C_ERROR:
- Reset();
-#ifdef VERBOSE
- lprintf( "Start returns Error");
-#endif
- break;
- case C_TERMINATE:
- case C_INFO:
- if (rc == C_TERMINATE)
- InfoMessage("");
- Reset();
- break;
- }
- inDoCommandB = FALSE;
-}
-
-static void DoCommandBIndirect(void * cmdInxP) {
- wIndex_t cmdInx;
- cmdInx = *(wIndex_t*) cmdInxP;
- DoCommandB(I2VP(cmdInx));
-}
-
-EXPORT void LayoutSetPos(wIndex_t inx) {
- wWinPix_t w, h, offset;
- static wWinPix_t toolbarRowHeight = 0;
- static wWinPix_t width;
- static int lastGroup;
- static wWinPix_t gap;
- static int layerButtCnt;
- static int layerButtNumber;
- int currGroup;
-
- if (inx == 0) {
- lastGroup = 0;
- wWinGetSize(mainW, &width, &h);
- gap = 5;
- toolbarWidth = width - 20 + 5;
- layerButtCnt = 0;
- layerButtNumber = 0;
- toolbarHeight = 0;
- }
-
- if (buttonList[inx].control) {
- if (toolbarRowHeight <= 0)
- toolbarRowHeight = wControlGetHeight(buttonList[inx].control);
-
- currGroup = buttonList[inx].group & ~BG_BIGGAP;
- if (currGroup != lastGroup && (buttonList[inx].group & BG_BIGGAP)) {
- gap = 15;
- }
- if ((toolbarSet & (1 << currGroup))
- && (programMode != MODE_TRAIN
- || (buttonList[inx].options
- & (IC_MODETRAIN_TOO | IC_MODETRAIN_ONLY)))
- && (programMode == MODE_TRAIN
- || (buttonList[inx].options & IC_MODETRAIN_ONLY) == 0)
- && ((buttonList[inx].group & ~BG_BIGGAP) != BG_LAYER
- || layerButtCnt < layerCount)) {
- if (currGroup != lastGroup) {
- toolbarWidth += gap;
- lastGroup = currGroup;
- gap = 5;
- }
- w = wControlGetWidth(buttonList[inx].control);
- h = wControlGetHeight(buttonList[inx].control);
- if (h<toolbarRowHeight) {
- offset = (h-toolbarRowHeight)/2;
- h = toolbarRowHeight; //Uniform
- } else offset = 0;
- if (inx < buttonCnt - 1 && (buttonList[inx + 1].options & IC_ABUT))
- w += wControlGetWidth(buttonList[inx + 1].control);
- if (toolbarWidth + w > width - 20) {
- toolbarWidth = 0;
- toolbarHeight += h + 5;
- }
- if ((currGroup == BG_LAYER) && layerButtNumber>1 && GetLayerHidden(layerButtNumber-2) ) {
- wControlShow(buttonList[inx].control, FALSE);
- layerButtNumber++;
- } else {
- if (currGroup == BG_LAYER ) {
- if (layerButtNumber>1) layerButtCnt++; // Ignore List and Background
- layerButtNumber++;
- }
- wControlSetPos(buttonList[inx].control, toolbarWidth,
- toolbarHeight - (h + 5 +offset));
- buttonList[inx].x = toolbarWidth;
- buttonList[inx].y = toolbarHeight - (h + 5 + offset);
- toolbarWidth += wControlGetWidth(buttonList[inx].control);
- wControlShow(buttonList[inx].control, TRUE);
- }
- } else {
- wControlShow(buttonList[inx].control, FALSE);
- }
- }
-}
-
-EXPORT void LayoutToolBar( void * data )
-{
- int inx;
-
- for (inx = 0; inx < buttonCnt; inx++) {
- LayoutSetPos(inx);
- }
- if (toolbarSet&(1<<BG_HOTBAR)) {
- LayoutHotBar(data);
- } else {
- HideHotBar();
- }
-}
-
-static void ToolbarChange(long changes) {
- if ((changes & CHANGE_TOOLBAR)) {
- /*if ( !(changes&CHANGE_MAIN) )*/
- MainProc( mainW, wResize_e, NULL, NULL );
- /*else
- LayoutToolBar();*/
- }
-}
-/***************************************************************************
- *
- *
- *
- */
-
-EXPORT BOOL_T CommandEnabled(wIndex_t cmdInx) {
- return commandList[cmdInx].enabled;
-}
-
-static wIndex_t AddCommand(procCommand_t cmdProc, const char * helpKey,
- const char * nameStr, wIcon_p icon, int reqLevel, long options, long acclKey,
- void * context) {
- if (commandCnt >= COMMAND_MAX - 1) {
- AbortProg("addCommand: too many commands");
- }
- commandList[commandCnt].labelStr = MyStrdup(nameStr);
- commandList[commandCnt].helpKey = MyStrdup(helpKey);
- commandList[commandCnt].cmdProc = cmdProc;
- commandList[commandCnt].icon = icon;
- commandList[commandCnt].reqLevel = reqLevel;
- commandList[commandCnt].enabled = TRUE;
- commandList[commandCnt].options = options;
- commandList[commandCnt].acclKey = acclKey;
- commandList[commandCnt].context = context;
- commandList[commandCnt].buttInx = -1;
- commandList[commandCnt].menu[0] = NULL;
- commandList[commandCnt].menu[1] = NULL;
- commandList[commandCnt].menu[2] = NULL;
- commandList[commandCnt].menu[3] = NULL;
- commandCnt++;
- return commandCnt - 1;
-}
-
-EXPORT void AddToolbarControl(wControl_p control, long options) {
- if (buttonCnt >= COMMAND_MAX - 1) {
- AbortProg("addToolbarControl: too many buttons");
- }
- buttonList[buttonCnt].enabled = TRUE;
- buttonList[buttonCnt].options = options;
- buttonList[buttonCnt].group = cmdGroup;
- buttonList[buttonCnt].x = 0;
- buttonList[buttonCnt].y = 0;
- buttonList[buttonCnt].control = control;
- buttonList[buttonCnt].cmdInx = -1;
- LayoutSetPos(buttonCnt);
- buttonCnt++;
-}
-
-EXPORT wButton_p AddToolbarButton(const char * helpStr, wIcon_p icon, long options,
- wButtonCallBack_p action, void * context) {
- wButton_p bb;
- wIndex_t inx;
-
- GetBalloonHelpStr(helpStr);
- if (context == NULL) {
- for (inx = 0; inx < menuPG.paramCnt; inx++) {
- if (action != DoCommandB && menuPLs[inx].valueP == I2VP(action)) {
- context = &menuPLs[inx];
- action = ParamMenuPush;
- menuPLs[inx].context = I2VP(buttonCnt);
- menuPLs[inx].option |= IC_PLAYBACK_PUSH;
- break;
- }
- }
- }
- bb = wButtonCreate(mainW, 0, 0, helpStr, (char*) icon,
- BO_ICON/*|((options&IC_CANCEL)?BB_CANCEL:0)*/, 0, action, context);
- AddToolbarControl((wControl_p) bb, options);
- return bb;
-}
-
-EXPORT void PlaybackButtonMouse(wIndex_t buttInx) {
- wWinPix_t cmdX, cmdY;
- coOrd pos;
-
- if (buttInx < 0 || buttInx >= buttonCnt)
- return;
- if (buttonList[buttInx].control == NULL)
- return;
- cmdX = buttonList[buttInx].x + 17;
- cmdY = toolbarHeight - (buttonList[buttInx].y + 17)
- + (wWinPix_t) (mainD.size.y / mainD.scale * mainD.dpi) + 30;
-
- mainD.Pix2CoOrd( &mainD, cmdX, cmdY, &pos );
- MovePlaybackCursor(&mainD, pos, TRUE, buttonList[buttInx].control);
- if (playbackTimer == 0) {
- wButtonSetBusy((wButton_p) buttonList[buttInx].control, TRUE);
- wFlush();
- wPause(500);
- wButtonSetBusy((wButton_p) buttonList[buttInx].control, FALSE);
- wFlush();
- }
-}
-
-#include "bitmaps/down.xpm"
-static const char * buttonGroupMenuTitle;
-static const char * buttonGroupHelpKey;
-static const char * buttonGroupStickyLabel;
-static wMenu_p buttonGroupPopupM;
-
-EXPORT void ButtonGroupBegin(const char * menuTitle, const char * helpKey,
- const char * stickyLabel) {
- buttonGroupMenuTitle = menuTitle;
- buttonGroupHelpKey = helpKey;
- buttonGroupStickyLabel = stickyLabel;
- buttonGroupPopupM = NULL;
-}
-
-EXPORT void ButtonGroupEnd(void) {
- buttonGroupMenuTitle = NULL;
- buttonGroupHelpKey = NULL;
- buttonGroupPopupM = NULL;
-}
-
-EXPORT wIndex_t AddMenuButton(wMenu_p menu, procCommand_t command,
- const char * helpKey, const char * nameStr, wIcon_p icon, int reqLevel,
- long options, long acclKey, void * context) {
- wIndex_t buttInx = -1;
- wIndex_t cmdInx;
- BOOL_T newButtonGroup = FALSE;
- wMenu_p tm, p1m, p2m;
- static wIcon_p openbuttIcon = NULL;
- static wMenu_p commandsSubmenu;
- static wMenu_p popup1Submenu;
- static wMenu_p popup2Submenu;
-
- if (icon) {
- if (buttonGroupPopupM != NULL) {
- buttInx = buttonCnt - 2;
- } else {
- buttInx = buttonCnt;
- AddToolbarButton(helpKey, icon, options,
- DoCommandB,
- I2VP(commandCnt));
- buttonList[buttInx].cmdInx = commandCnt;
- }
- if (buttonGroupMenuTitle != NULL && buttonGroupPopupM == NULL) {
- if (openbuttIcon == NULL)
- openbuttIcon = wIconCreatePixMap(down_xpm[iconSize]);
- buttonGroupPopupM = wMenuPopupCreate(mainW, buttonGroupMenuTitle);
- AddToolbarButton(buttonGroupHelpKey, openbuttIcon, IC_ABUT,
- (wButtonCallBack_p) wMenuPopupShow,
- buttonGroupPopupM);
- newButtonGroup = TRUE;
- commandsSubmenu = wMenuMenuCreate(menu, "", buttonGroupMenuTitle);
- if (options & IC_POPUP2) {
- popup1Submenu = wMenuMenuCreate(popup1aM, "", buttonGroupMenuTitle);
- popup2Submenu = wMenuMenuCreate(popup2aM, "", buttonGroupMenuTitle);
- } else if (options & IC_POPUP3) {
- popup1Submenu= wMenuMenuCreate(popup1mM, "", buttonGroupMenuTitle);
- popup2Submenu = wMenuMenuCreate(popup2mM, "", buttonGroupMenuTitle);
-
- } else {
- popup1Submenu = wMenuMenuCreate(popup1M, "", buttonGroupMenuTitle);
- popup2Submenu = wMenuMenuCreate(popup2M, "", buttonGroupMenuTitle);
- }
- }
- }
- cmdInx = AddCommand(command, helpKey, nameStr, icon, reqLevel, options,
- acclKey, context);
- commandList[cmdInx].buttInx = buttInx;
- if (nameStr[0] == '\0')
- return cmdInx;
- if (commandList[cmdInx].options & IC_STICKY) {
- if (buttonGroupPopupM == NULL || newButtonGroup) {
- if (stickyCnt > 32)
- AbortProg("stickyCnt>32");
- stickyCnt++;
- }
- if (buttonGroupPopupM == NULL) {
- stickyLabels[stickyCnt - 1] = nameStr;
- } else {
- stickyLabels[stickyCnt - 1] = buttonGroupStickyLabel;
- }
- stickyLabels[stickyCnt] = NULL;
- long stickyMask = 1L<<(stickyCnt-1);
- commandList[cmdInx].stickyMask = stickyMask;
- if ( ( commandList[cmdInx].options & IC_INITNOTSTICKY ) == 0 )
- stickySet |= stickyMask;
- }
- if (buttonGroupPopupM) {
- commandList[cmdInx].menu[0] = wMenuPushCreate(buttonGroupPopupM,
- helpKey, GetBalloonHelpStr(helpKey), 0, DoCommandB,
- I2VP(cmdInx));
- tm = commandsSubmenu;
- p1m = popup1Submenu;
- p2m = popup2Submenu;
- } else {
- tm = menu;
- p1m = (options & IC_POPUP2) ? popup1aM : (options & IC_POPUP3) ? popup1mM : popup1M;
- p2m = (options & IC_POPUP2) ? popup2aM : (options & IC_POPUP3) ? popup2mM : popup2M;
- }
- commandList[cmdInx].menu[1] = wMenuPushCreate(tm, helpKey, nameStr, acclKey,
- DoCommandB, I2VP(cmdInx));
- if ((options & (IC_POPUP | IC_POPUP2 | IC_POPUP3))) {
- if (!(options & IC_SELECTED)) {
- commandList[cmdInx].menu[2] = wMenuPushCreate(p1m, helpKey, nameStr,
- 0, DoCommandB, I2VP(cmdInx));
- }
- commandList[cmdInx].menu[3] = wMenuPushCreate(p2m, helpKey, nameStr, 0,
- DoCommandB, I2VP(cmdInx));
- }
-
- return cmdInx;
-}
-
-EXPORT wIndex_t InitCommand(wMenu_p menu, procCommand_t command, const char * nameStr,
- const char * bits, int reqLevel, long options, long acclKey) {
- char helpKey[STR_SHORT_SIZE];
- wIcon_p icon = NULL;
- if (bits)
- icon = wIconCreateBitMap(16, 16, bits, wDrawColorBlack);
- strcpy(helpKey, "cmd");
- strcat(helpKey, nameStr);
- return AddMenuButton(menu, command, helpKey, _(nameStr), icon, reqLevel,
- options, acclKey, NULL);
-}
-
-/*--------------------------------------------------------------------*/
-
-EXPORT void PlaybackCommand(const char * line, wIndex_t lineNum) {
- size_t inx;
- wIndex_t buttInx;
- size_t len1, len2;
- len1 = strlen(line + 8);
- for (inx = 0; inx < commandCnt; inx++) {
- len2 = strlen(commandList[inx].helpKey + 3);
- if (len1 == len2
- && strncmp(line + 8, commandList[inx].helpKey + 3, len2) == 0) {
- break;
- }
- }
- if (inx >= commandCnt) {
- fprintf(stderr, "Unknown playback COMMAND command %d : %s\n", lineNum,
- line);
- } else {
- wWinPix_t cmdX, cmdY;
- coOrd pos;
- if ((buttInx = commandList[inx].buttInx) >= 0) {
- cmdX = buttonList[buttInx].x + 17;
- cmdY = toolbarHeight - (buttonList[buttInx].y + 17)
- + (wWinPix_t) (mainD.size.y / mainD.scale * mainD.dpi) + 30;
- mainD.Pix2CoOrd( &mainD, cmdX, cmdY, &pos );
- MovePlaybackCursor(&mainD, pos,TRUE,buttonList[buttInx].control);
- }
- if (strcmp(line + 8, "Undo") == 0) {
- if (buttInx > 0 && playbackTimer == 0) {
- wButtonSetBusy((wButton_p) buttonList[buttInx].control, TRUE);
- wFlush();
- wPause(500);
- wButtonSetBusy((wButton_p) buttonList[buttInx].control, FALSE);
- wFlush();
- }
- UndoUndo(NULL);
- } else if (strcmp(line + 8, "Redo") == 0) {
- if (buttInx >= 0 && playbackTimer == 0) {
- wButtonSetBusy((wButton_p) buttonList[buttInx].control, TRUE);
- wFlush();
- wPause(500);
- wButtonSetBusy((wButton_p) buttonList[buttInx].control, FALSE);
- wFlush();
- }
- UndoRedo(NULL);
- } else {
- if (buttInx >= 0 && playbackTimer == 0) {
- wButtonSetBusy((wButton_p) buttonList[buttInx].control, TRUE);
- wFlush();
- wPause(500);
- wButtonSetBusy((wButton_p) buttonList[buttInx].control, FALSE);
- wFlush();
- }
- DoCommandB(I2VP(inx));
- }
- }
-}
-
-/*--------------------------------------------------------------------*/
-typedef struct {
- char * label;
- wMenu_p menu;
-} menuTrace_t, *menuTrace_p;
-static dynArr_t menuTrace_da;
-#define menuTrace(N) DYNARR_N( menuTrace_t, menuTrace_da, N )
-
-static void DoMenuTrace(wMenu_p menu, const char * label, void * data) {
- /*printf( "MENUTRACE: %s/%s\n", (char*)data, label );*/
- if (recordF) {
- fprintf(recordF, "MOUSE 1 %0.3f %0.3f\n", oldMarker.x, oldMarker.y);
- fprintf(recordF, "MENU %0.3f %0.3f \"%s\" \"%s\"\n", oldMarker.x,
- oldMarker.y, (char*) data, label);
- }
-}
-
-EXPORT wMenu_p MenuRegister(const char * label) {
- wMenu_p m;
- menuTrace_p mt;
- m = wMenuPopupCreate(mainW, label);
- DYNARR_APPEND(menuTrace_t, menuTrace_da, 10);
- mt = &menuTrace(menuTrace_da.cnt - 1);
- mt->label = strdup(label);
- mt->menu = m;
- wMenuSetTraceCallBack(m, DoMenuTrace, mt->label);
- return m;
-}
-
-void MenuPlayback(char * line) {
- char * menuName, *itemName;
- coOrd pos;
- menuTrace_p mt;
-
- if (!GetArgs(line, "pqq", &pos, &menuName, &itemName))
- return;
- for (mt = &menuTrace(0); mt < &menuTrace(menuTrace_da.cnt); mt++) {
- if (strcmp(mt->label, menuName) == 0) {
- MovePlaybackCursor(&mainD, pos, FALSE, NULL);
- oldMarker = cmdMenuPos = pos;
- wMenuAction(mt->menu, _(itemName));
- return;
- }
- }
- AbortProg("menuPlayback: %s not found", menuName);
-}
-/*--------------------------------------------------------------------*/
-
-static wWin_p stickyW;
-
-static void StickyOk(void * unused);
-static paramData_t stickyPLs[] = { { PD_TOGGLE, &stickySet, "set", 0,
- stickyLabels } };
-static paramGroup_t stickyPG = { "sticky", PGO_RECORD, stickyPLs,
- COUNT( stickyPLs ) };
-
-static void StickyOk(void * unused) {
- wHide(stickyW);
-}
-
-static void DoSticky(void * unused) {
- if (!stickyW)
- stickyW = ParamCreateDialog(&stickyPG,
- MakeWindowTitle(_("Sticky Commands")), _("Ok"), StickyOk, wHide,
- TRUE, NULL, 0, NULL);
- ParamLoadControls(&stickyPG);
- wShow(stickyW);
-}
-/*--------------------------------------------------------------------*/
-
-/*
- * These array control the choices available in the Toolbar setup.
- * For each choice, the text is given and the respective mask is
- * specified in the following array.
- * Note: text and choices must be given in the same order.
- */
-static char *AllToolbarLabels[] = { N_("File Buttons"), N_("Print Buttons"), N_("Import/Export Buttons"),
- N_("Zoom Buttons"), N_("Undo Buttons"), N_("Easement Button"), N_("SnapGrid Buttons"),
- N_("Create Track Buttons"), N_("Layout Control Elements"),
- N_("Modify Track Buttons"), N_("Properties/Select"),
- N_("Track Group Buttons"), N_("Train Group Buttons"),
- N_("Create Misc Buttons"), N_("Ruler Button"),
- N_("Layer Buttons"), N_("Hot Bar"),
-NULL };
-static long AllToolbarMasks[] = { 1 << BG_FILE, 1<< BG_PRINT, 1<< BG_EXPORTIMPORT,
- 1<< BG_ZOOM, 1<< BG_UNDO, 1<< BG_EASE, 1 << BG_SNAP, 1 << BG_TRKCRT,
- 1<< BG_CONTROL, 1<< BG_TRKMOD, 1 << BG_SELECT, 1 << BG_TRKGRP, 1 << BG_TRAIN,
- 1<< BG_MISCCRT, 1<< BG_RULER, 1 << BG_LAYER, 1 << BG_HOTBAR };
-
-static wMenuToggle_p AllToolbarMI[ COUNT( AllToolbarMasks ) ];
-
-static void ToolbarAction(void * data) {
- int inx = (int)VP2L(data);
- ASSERT( inx >=0 && inx < COUNT( AllToolbarMasks ) );
- wBool_t set = wMenuToggleGet( AllToolbarMI[inx] );
- long mask = AllToolbarMasks[inx];
- if (set)
- toolbarSet |= mask;
- else
- toolbarSet &= ~mask;
- wPrefSetInteger( "misc", "toolbarset", toolbarSet );
- MainProc( mainW, wResize_e, NULL, NULL );
- if (recordF)
- fprintf(recordF, "PARAMETER %s %s %ld", "misc", "toolbarset",
- toolbarSet);
-}
-
-/**
- * Create the Toolbar configuration submenu. Based on two arrays of descriptions and
- * masks, the toolbar submenu is created dynamically.
- *
- * \param toolbarM IN menu to which the toogles will be added
- */
-
-static void CreateToolbarM(wMenu_p toolbarM) {
- int inx, cnt;
- long *masks;
- char **labels;
- wBool_t set;
-
- cnt = COUNT(AllToolbarMasks);
- masks = AllToolbarMasks;
- labels = AllToolbarLabels;
- for (inx = 0; inx < cnt; inx++, masks++, labels++) {
- set = (toolbarSet & *masks) != 0;
- AllToolbarMI[inx] = wMenuToggleCreate(toolbarM, "toolbarM", _(*labels), 0, set,
- ToolbarAction, I2VP(inx));
- }
-}
-
-/*--------------------------------------------------------------------*/
-
-static wWin_p addElevW;
-#define addElevF (wFloat_p)addElevPD.control
-EXPORT DIST_T addElevValueV;
-static void DoAddElev(void * unused);
-
-static paramFloatRange_t rn1000_1000 = { -1000.0, 1000.0 };
-static paramData_t addElevPLs[] = { { PD_FLOAT, &addElevValueV, "value",
- PDO_NOPREF|PDO_DIM, &rn1000_1000, NULL, 0 } };
-static paramGroup_t addElevPG = { "addElev", 0, addElevPLs, COUNT( addElevPLs ) };
-
-static void DoAddElev(void * unused) {
- ParamLoadData(&addElevPG);
- AddElevations(addElevValueV);
- wHide(addElevW);
-}
-
-static void ShowAddElevations(void * unused) {
- if (selectedTrackCount <= 0) {
- ErrorMessage(MSG_NO_SELECTED_TRK);
- return;
- }
- if (addElevW == NULL)
- addElevW = ParamCreateDialog(&addElevPG,
- MakeWindowTitle(_("Change Elevations")), _("Change"), DoAddElev,
- wHide, FALSE, NULL, 0, NULL);
- wShow(addElevW);
-}
-
-/*--------------------------------------------------------------------*/
-
-static wWin_p rotateW;
-static wWin_p indexW;
-static wWin_p moveW;
-static double rotateValue;
-static char trackIndex[STR_LONG_SIZE];
-static coOrd moveValue;
-static rotateDialogCallBack_t rotateDialogCallBack;
-static indexDialogCallBack_t indexDialogCallBack;
-static moveDialogCallBack_t moveDialogCallBack;
-
-static void RotateEnterOk(void * unused);
-
-static paramFloatRange_t rn360_360 = { -360.0, 360.0, 80 };
-static paramData_t rotatePLs[] = { { PD_FLOAT, &rotateValue, "rotate", PDO_NOPREF|PDO_ANGLE|PDO_NORECORD, &rn360_360, N_("Angle:") } };
-static paramGroup_t rotatePG = { "rotate", 0, rotatePLs, COUNT( rotatePLs ) };
-
-static void IndexEnterOk(void * unused);
-static paramData_t indexPLs[] = {
- { PD_STRING, &trackIndex, "select", PDO_NOPREF|PDO_NORECORD|PDO_STRINGLIMITLENGTH, I2VP(STR_SIZE-1), N_("Indexes:"), 0, 0, sizeof(trackIndex) } };
-static paramGroup_t indexPG = { "index", 0, indexPLs, COUNT( indexPLs ) };
-
-static paramFloatRange_t r_1000_1000 = { -1000.0, 1000.0, 80 };
-static void MoveEnterOk(void * unused);
-static paramData_t movePLs[] = {
- { PD_FLOAT, &moveValue.x, "moveX", PDO_NOPREF|PDO_DIM|PDO_NORECORD, &r_1000_1000, N_("Move X:") },
- { PD_FLOAT, &moveValue.y, "moveY", PDO_NOPREF|PDO_DIM|PDO_NORECORD, &r_1000_1000, N_("Move Y:") } };
-static paramGroup_t movePG = { "move", 0, movePLs, COUNT( movePLs ) };
-
-static void StartRotateDialog(void * funcVP)
-{
- rotateDialogCallBack_t func = funcVP;
- if (rotateW == NULL)
- rotateW = ParamCreateDialog(&rotatePG, MakeWindowTitle(_("Rotate")),
- _("Ok"), RotateEnterOk, wHide, FALSE, NULL, 0, NULL);
- ParamLoadControls(&rotatePG);
- rotateDialogCallBack = func;
- wShow(rotateW);
-}
-
-static void StartIndexDialog(void * funcVP)
-{
- indexDialogCallBack_t func = funcVP;
- if (indexW == NULL)
- indexW = ParamCreateDialog(&indexPG, MakeWindowTitle(_("Select Index")),
- _("Ok"), IndexEnterOk, wHide, FALSE, NULL, 0, NULL);
- ParamLoadControls(&indexPG);
- indexDialogCallBack = func;
- trackIndex[0] = '\0';
- wShow(indexW);
-}
-
-static void StartMoveDialog(void * funcVP)
-{
- moveDialogCallBack_t func = funcVP;
- if (moveW == NULL)
- moveW = ParamCreateDialog(&movePG, MakeWindowTitle(_("Move")), _("Ok"),
- MoveEnterOk, wHide, FALSE, NULL, 0, NULL);
- ParamLoadControls(&movePG);
- moveDialogCallBack = func;
- moveValue = zero;
- wShow(moveW);
-}
-
-static void MoveEnterOk(void * unused) {
- ParamLoadData(&movePG);
- moveDialogCallBack(&moveValue);
- wHide(moveW);
-}
-
-static void IndexEnterOk(void * unused) {
- ParamLoadData(&indexPG);
- indexDialogCallBack(trackIndex);
- wHide(indexW);
-}
-
-static void RotateEnterOk(void * unused) {
- ParamLoadData(&rotatePG);
- if (angleSystem == ANGLE_POLAR)
- rotateDialogCallBack(I2VP(rotateValue * 1000));
- else
- rotateDialogCallBack(I2VP(rotateValue * 1000));
- wHide(rotateW);
-}
-
-static void RotateDialogInit(void) {
- ParamRegister(&rotatePG);
-}
-
-static void MoveDialogInit(void) {
- ParamRegister(&movePG);
-}
-
-static void IndexDialogInit(void) {
- ParamRegister(&indexPG);
-}
-
-EXPORT void AddMoveMenu(wMenu_p m, moveDialogCallBack_t func) {
- wMenuPushCreate(m, "", _("Enter Move ..."), 0,
- StartMoveDialog, func);
-}
-
-EXPORT void AddIndexMenu(wMenu_p m, indexDialogCallBack_t func) {
- wMenuPushCreate(m, "cmdSelectIndex", _("Select Track Index ..."), 0,
- StartIndexDialog, func);
-}
-
-//All values multipled by 100 to support decimal points from PD_FLOAT
-EXPORT void AddRotateMenu(wMenu_p m, rotateDialogCallBack_t func) {
- wMenuPushCreate(m, "", _("180 "), 0, func, I2VP(180000));
- wMenuPushCreate(m, "", _("90 CW"), 0, func, I2VP(90000));
- wMenuPushCreate(m, "", _("45 CW"), 0, func, I2VP(45000));
- wMenuPushCreate(m, "", _("30 CW"), 0, func, I2VP(30000));
- wMenuPushCreate(m, "", _("15 CW"), 0, func, I2VP(15000));
- wMenuPushCreate(m, "", _("15 CCW"), 0, func, I2VP(360000 - 15000));
- wMenuPushCreate(m, "", _("30 CCW"), 0, func, I2VP(360000 - 30000));
- wMenuPushCreate(m, "", _("45 CCW"), 0, func, I2VP(360000 - 45000));
- wMenuPushCreate(m, "", _("90 CCW"), 0, func, I2VP(360000 - 90000));
- wMenuPushCreate(m, "", _("Enter Angle ..."), 0,
- StartRotateDialog, func);
-}
/*****************************************************************************
*
- * INITIALIZATON
- *
- */
-
-static wWin_p debugW;
-
-static int debugCnt = 0;
-static paramIntegerRange_t r0_100 = { 0, 100, 80 };
-static void DebugOk(void * unused);
-static paramData_t debugPLs[30];
-static paramData_t p0[] = {
- { PD_BUTTON, TestMallocs, "test", PDO_DLGHORZ, NULL, N_("Test Mallocs") }
- };
-static long debug_values[30];
-static int debug_index[30];
-
-static paramGroup_t debugPG = { "debug", 0, debugPLs, 0 };
-
-static void DebugOk(void * unused) {
- for (int i = 0; i<debugCnt;i++) {
- logTable(debug_index[i]).level = debug_values[i];
- }
- wHide(debugW);
-}
-
-static void CreateDebugW(void) {
- debugPG.paramCnt = debugCnt+1;
- ParamRegister(&debugPG);
- debugW = ParamCreateDialog(&debugPG, MakeWindowTitle(_("Debug")), _("Ok"),
- DebugOk, wHide, FALSE, NULL, 0, NULL);
- wHide(debugW);
-}
-
-EXPORT void DebugInit(void * unused) {
-
- if (!debugW) {
- debugPLs[0] = p0[0];
- BOOL_T default_line = FALSE;
- debugCnt = 0; //Reset to start building the dynamic dialog over again
- int i = 0;
- for ( int inx=0; inx<logTable_da.cnt; inx++ ) {
- if (logTable(inx).name[0]) {
- debug_values[i] = logTable(inx).level;
- debug_index[i] = inx;
- InitDebug(logTable(inx).name,&debug_values[i]);
- i++;
- } else {
- if (!default_line) {
- debug_values[i] = logTable(inx).level;
- debug_index[i] = inx;
- InitDebug("Default Trace",&debug_values[i]);
- i++;
- default_line = TRUE;
- }
- }
- }
-
- //ParamCreateControls( &debugPG, NULL );
- CreateDebugW();
- }
- ParamLoadControls( &debugPG );
- wShow(debugW);
-}
-
-
-EXPORT void InitDebug(const char * label, long * valueP) {
- if (debugCnt+1 >= COUNT( debugPLs ) )
- AbortProg("Too many debug flags");
- memset(&debugPLs[debugCnt+1], 0, sizeof debugPLs[debugCnt]);
- debugPLs[debugCnt+1].type = PD_LONG;
- debugPLs[debugCnt+1].valueP = valueP;
- debugPLs[debugCnt+1].nameStr = label;
- debugPLs[debugCnt+1].winData = &r0_100;
- debugPLs[debugCnt+1].winLabel = label;
- debugCnt++;
-}
-
-void RecomputeElevations(void * unused );
-
-static void MiscMenuItemCreate(wMenu_p m1, wMenu_p m2, const char * name,
- const char * label, long acclKey, void * func, long option, void * context) {
- wMenuPush_p mp;
- mp = wMenuPushCreate(m1, name, label, acclKey, ParamMenuPush,
- &menuPLs[menuPG.paramCnt]);
- if (m2)
- wMenuPushCreate(m2, name, label, acclKey, ParamMenuPush,
- &menuPLs[menuPG.paramCnt]);
- menuPLs[menuPG.paramCnt].control = (wControl_p) mp;
- menuPLs[menuPG.paramCnt].type = PD_MENUITEM;
- menuPLs[menuPG.paramCnt].valueP = func;
- menuPLs[menuPG.paramCnt].nameStr = name;
- menuPLs[menuPG.paramCnt].option = option;
- menuPLs[menuPG.paramCnt].context = context;
-
- if (name)
- GetBalloonHelpStr(name);
- menuPG.paramCnt++;
-}
-
-
-/*****************************************************************************
- *
- * ACCEL KEY
+ * ACCEL KEYS
*
*/
@@ -2249,22 +858,24 @@ struct accelKey_s {
wAccelKey_e eKey;
int iMode;
enum eAccelAction_t iAction;
- int iContext; } aAccelKeys[] = {
- { "zoomUp", wAccelKey_Pgdn, 0, EA_ZOOMUP, 1 },
- { "zoomDown", wAccelKey_Pgup, 0, EA_ZOOMDOWN, 1 },
- { "redraw", wAccelKey_F5, 0, EA_REDRAW, 0 },
+ int iContext;
+} aAccelKeys[] = {
+ { "zoomUp", wAccelKey_Pgdn, 0, EA_ZOOMUP, 1 },
+ { "zoomDown", wAccelKey_Pgup, 0, EA_ZOOMDOWN, 1 },
+ { "redraw", wAccelKey_F5, 0, EA_REDRAW, 0 },
#ifdef WINDOWS
- { "delete", wAccelKey_Del, 0, EA_DELETE, 0 },
+ { "delete", wAccelKey_Del, 0, EA_DELETE, 0 },
#endif
- { "undo", wAccelKey_Back, WKEY_SHIFT, EA_UNDO, 0 },
- { "copy", wAccelKey_Ins, WKEY_CTRL, EA_COPY, 0 },
- { "paste", wAccelKey_Ins, WKEY_SHIFT, EA_PASTE, 0 },
- { "cut", wAccelKey_Del, WKEY_SHIFT, EA_CUT, 0 },
- { "nextWindow", wAccelKey_F6, 0, EA_NEXT, 0 },
- { "zoomUp", wAccelKey_Numpad_Add, WKEY_CTRL, EA_ZOOMUP, 1 },
- { "zoomDown", wAccelKey_Numpad_Subtract, WKEY_CTRL, EA_ZOOMDOWN, 1 },
- { "help", wAccelKey_F1, WKEY_SHIFT, EA_HELP, 1 },
- { "help-context", wAccelKey_F1, 0, EA_HELP, 3 } };
+ { "undo", wAccelKey_Back, WKEY_SHIFT, EA_UNDO, 0 },
+ { "copy", wAccelKey_Ins, WKEY_CTRL, EA_COPY, 0 },
+ { "paste", wAccelKey_Ins, WKEY_SHIFT, EA_PASTE, 0 },
+ { "cut", wAccelKey_Del, WKEY_SHIFT, EA_CUT, 0 },
+ { "nextWindow", wAccelKey_F6, 0, EA_NEXT, 0 },
+ { "zoomUp", wAccelKey_Numpad_Add, WKEY_CTRL, EA_ZOOMUP, 1 },
+ { "zoomDown", wAccelKey_Numpad_Subtract, WKEY_CTRL, EA_ZOOMDOWN, 1 },
+ { "help", wAccelKey_F1, WKEY_SHIFT, EA_HELP, 1 },
+ { "help-context", wAccelKey_F1, 0, EA_HELP, 3 }
+};
static void AccelKeyDispatch( wAccelKey_e key, void * accelKeyIndexVP )
{
@@ -2301,18 +912,18 @@ static void AccelKeyDispatch( wAccelKey_e key, void * accelKeyIndexVP )
wDoAccelHelp(key, I2VP(aAccelKeys[iAccelKeyIndex].iContext));
break;
default:
- abort();
+ CHECK(FALSE);
}
}
static char * accelKeyNames[] = { "Del", "Ins", "Home", "End", "Pgup", "Pgdn",
- "Up", "Down", "Right", "Left", "Back", "F1", "F2", "F3", "F4", "F5",
- "F6", "F7", "F8", "F9", "F10", "F11", "F12", "NumpadAdd", "NumpadSub" };
+ "Up", "Down", "Right", "Left", "Back", "F1", "F2", "F3", "F4", "F5",
+ "F6", "F7", "F8", "F9", "F10", "F11", "F12", "NumpadAdd", "NumpadSub"
+ };
static void SetAccelKeys()
{
- for ( int iAccelKey = 0; iAccelKey < COUNT( aAccelKeys ); iAccelKey++ )
- {
+ for ( int iAccelKey = 0; iAccelKey < COUNT( aAccelKeys ); iAccelKey++ ) {
struct accelKey_s * akP = &aAccelKeys[iAccelKey];
int eKey = akP->eKey;
int iMode = akP->iMode;
@@ -2348,624 +959,20 @@ static void SetAccelKeys()
}
-/*****************************************************************************
+//EXPORT void InitCmdEnumerate(void) {
+// AddToolbarButton("cmdEnumerate", wIconCreatePixMap(partlist_xpm),
+// IC_SELECTED | IC_ACCLKEY, EnumerateTracks,
+// NULL);
+//}
+
+
+
+/****************************************************************************
*
- * MENUS
+ * WMAIN
*
*/
-
-#include "bitmaps/zoom-in.xpm"
-#include "bitmaps/zoom-choose.xpm"
-#include "bitmaps/zoom-out.xpm"
-#include "bitmaps/zoom-extent.xpm"
-#include "bitmaps/undo.xpm"
-#include "bitmaps/redo.xpm"
-#include "bitmaps/partlist.xpm" // unused icon
-#include "bitmaps/doc-export.xpm"
-#include "bitmaps/doc-export-dxf.xpm"
-#include "bitmaps/doc-export-bmap.xpm"
-#include "bitmaps/doc-import.xpm"
-#include "bitmaps/doc-import-xtc.xpm"
-#include "bitmaps/doc-new.xpm"
-#include "bitmaps/doc-save.xpm"
-#include "bitmaps/doc-open.xpm"
-#include "bitmaps/doc-print.xpm"
-#include "bitmaps/doc-setup.xpm"
-#include "bitmaps/parameter.xpm"
-#include "bitmaps/map.xpm"
-#include "bitmaps/magnet.xpm"
-
-static wMenu_p toolbarM;
-static addButtonCallBack_t paramFilesCallback;
-
-static void CreateMenus(void) {
- wMenu_p fileM, editM, viewM, optionM, windowM, macroM, helpM, toolbarM,
- messageListM, manageM, addM, changeM, drawM;
- wMenu_p zoomM, zoomSubM;
-
- wMenuPush_p zoomInM, zoomOutM, zoomExtentsM;
-
- wPrefGetInteger("DialogItem", "pref-iconsize", (long *) &iconSize, 0);
-
- fileM = wMenuBarAdd(mainW, "menuFile", _("&File"));
- editM = wMenuBarAdd(mainW, "menuEdit", _("&Edit"));
- viewM = wMenuBarAdd(mainW, "menuView", _("&View"));
- addM = wMenuBarAdd(mainW, "menuAdd", _("&Add"));
- changeM = wMenuBarAdd(mainW, "menuChange", _("&Change"));
- drawM = wMenuBarAdd(mainW, "menuDraw", _("&Draw"));
- manageM = wMenuBarAdd(mainW, "menuManage", _("&Manage"));
- optionM = wMenuBarAdd(mainW, "menuOption", _("&Options"));
- macroM = wMenuBarAdd(mainW, "menuMacro", _("&Macro"));
- windowM = wMenuBarAdd(mainW, "menuWindow", _("&Window"));
- helpM = wMenuBarAdd(mainW, "menuHelp", _("&Help"));
-
- /*
- * POPUP MENUS
- */
- /* Select Commands */
- /* Select All */
- /* Select All Current */
-
- /* Common View Commands Menu */
- /* Zoom In/Out */
- /* Snap Grid Menu */
- /* Show/Hide Map */
- /* Show/Hide Background */
-
- /* Selected Commands */
- /*--------------*/
- /* DeSelect All */
- /* Select All */
- /* Select All Current */
- /*--------------*/
- /* Quick Move */
- /* Quick Rotate */
- /* Quick Align */
- /*--------------*/
- /* Move To Current Layer */
- /* Move/Rotate Cmds */
- /* Cut/Paste/Delete */
- /* Group/Un-group Selected */
- /*----------*/
- /* Thick/Thin */
- /* Bridge/Tunnel */
- /* Ties/NoTies */
- /*-----------*/
- /* More Commands */
-
- popup1M = wMenuPopupCreate(mainW, _("Context Commands"));
- popup2M = wMenuPopupCreate(mainW, _("Shift Context Commands"));
- MiscMenuItemCreate(popup1M, popup2M, "cmdUndo", _("Undo"), 0,
- UndoUndo, 0, NULL);
- MiscMenuItemCreate(popup1M, popup2M, "cmdRedo", _("Redo"), 0,
- UndoRedo, 0, NULL);
- /* Zoom */
- wMenuPushCreate(popup1M, "cmdZoomIn", _("Zoom In"), 0,
- DoZoomUp, I2VP(1));
- wMenuPushCreate(popup2M, "cmdZoomIn", _("Zoom In"), 0,
- DoZoomUp, I2VP(1));
- wMenuPushCreate(popup1M, "cmdZoomOut", _("Zoom Out"), 0,
- DoZoomDown, I2VP(1));
- wMenuPushCreate(popup2M, "cmdZoomOut", _("Zoom Out"), 0,
- DoZoomDown, I2VP(1));
- wMenuPushCreate(popup1M, "cmdZoomExtents", _("Zoom Extents"), 0,
- DoZoomExtents, I2VP(1));
- wMenuPushCreate(popup2M, "cmdZoomExtents", _("Zoom Extents"), 0,
- DoZoomExtents, I2VP(1));
- /* Display */
- MiscMenuItemCreate(popup1M, popup2M, "cmdGridEnable", _("Enable SnapGrid"),
- 0, SnapGridEnable, 0, NULL);
- MiscMenuItemCreate(popup1M, popup2M, "cmdGridShow", _("SnapGrid Show"), 0,
- SnapGridShow, 0, NULL);
- MiscMenuItemCreate(popup1M, popup2M, "cmdMagneticSnap", _(" Enable Magnetic Snap"), 0,
- MagneticSnapToggle, 0, NULL);
- MiscMenuItemCreate(popup1M, popup2M, "cmdMapShow", _("Show/Hide Map"), 0,
- MapWindowToggleShow, 0, NULL);
- MiscMenuItemCreate(popup1M, popup2M, "cmdBackgroundShow", _("Show/Hide Background"), 0,
- BackgroundToggleShow, 0, NULL);
- wMenuSeparatorCreate(popup1M);
- wMenuSeparatorCreate(popup2M);
- /* Copy/Paste */
- MiscMenuItemCreate(popup2M, NULL, "cmdCut", _("Cut"), 0,
- EditCut, 0, NULL);
- MiscMenuItemCreate(popup2M, NULL, "cmdCopy", _("Copy"), 0,
- EditCopy, 0, NULL);
- MiscMenuItemCreate(popup1M, popup2M, "cmdPaste", _("Paste"), 0,
- EditPaste, 0, NULL);
- MiscMenuItemCreate(popup2M, NULL, "cmdClone", _("Clone"), 0,
- EditClone, 0, NULL);
- /*Select*/
- MiscMenuItemCreate(popup1M, popup2M, "cmdSelectAll", _("Select All"), 0,
- (wMenuCallBack_p) SetAllTrackSelect, 0, I2VP(1));
- MiscMenuItemCreate(popup1M, popup2M, "cmdSelectCurrentLayer",
- _("Select Current Layer"), 0,
- SelectCurrentLayer, 0, NULL);
- MiscMenuItemCreate(popup2M, NULL, "cmdDeselectAll", _("Deselect All"), 0,
- (wMenuCallBack_p) SetAllTrackSelect, 0, I2VP(FALSE));
- wMenuPushCreate(popup1M, "cmdSelectIndex", _("Select Track Index..."), 0,
- StartIndexDialog, &SelectByIndex);
- wMenuPushCreate(popup2M, "cmdSelectIndex", _("Select Track Index..."), 0,
- StartIndexDialog, &SelectByIndex);
- /* Modify */
- wMenuPushCreate(popup2M, "cmdMove", _("Move"), 0,
- DoCommandBIndirect, &moveCmdInx);
- wMenuPushCreate(popup2M, "cmdRotate", _("Rotate"), 0,
- DoCommandBIndirect, &rotateCmdInx);
- wMenuSeparatorCreate(popup1M);
- wMenuSeparatorCreate(popup2M);
- MiscMenuItemCreate(popup2M, NULL, "cmdDelete", _("Delete"), 0,
- (wMenuCallBack_p) SelectDelete, 0, NULL);
- wMenuSeparatorCreate(popup2M);
- popup1aM = wMenuMenuCreate(popup1M, "", _("Add..."));
- popup2aM = wMenuMenuCreate(popup2M, "", _("Add..."));
- wMenuSeparatorCreate(popup2M);
- wMenuSeparatorCreate(popup1M);
- popup1mM = wMenuMenuCreate(popup1M, "", _("More..."));
- popup2mM = wMenuMenuCreate(popup2M, "", _("More..."));
-
- /*
- * FILE MENU
- */
- MiscMenuItemCreate(fileM, NULL, "menuFile-clear", _("&New ..."), ACCL_NEW,
- DoClear, 0, NULL);
- wMenuPushCreate(fileM, "menuFile-load", _("&Open ..."), ACCL_OPEN,
- ChkLoad, NULL);
- wMenuSeparatorCreate(fileM);
-
- wMenuPushCreate(fileM, "menuFile-save", _("&Save"), ACCL_SAVE,
- DoSave, NULL);
- wMenuPushCreate(fileM, "menuFile-saveAs", _("Save &As ..."), ACCL_SAVEAS,
- DoSaveAs, NULL);
- wMenuPushCreate(fileM, "menuFile-revert", _("Revert"), ACCL_REVERT,
- ChkRevert, NULL);
- wMenuSeparatorCreate(fileM);
-
- cmdGroup = BG_FILE;
- AddToolbarButton("menuFile-clear", wIconCreatePixMap(doc_new_xpm[iconSize]),
- IC_MODETRAIN_TOO, DoClear, NULL);
- AddToolbarButton("menuFile-load", wIconCreatePixMap(doc_open_xpm[iconSize]),
- IC_MODETRAIN_TOO, ChkLoad, NULL);
- AddToolbarButton("menuFile-save", wIconCreatePixMap(doc_save_xpm[iconSize]),
- IC_MODETRAIN_TOO, DoSave, NULL);
-
- cmdGroup = BG_PRINT;
- MiscMenuItemCreate(fileM, NULL, "printSetup", _("P&rint Setup ..."),
- ACCL_PRINTSETUP, (wMenuCallBack_p) wPrintSetup, 0,
- I2VP(0));
- printCmdInx = InitCmdPrint(fileM);
- AddToolbarButton("menuFile-setup", wIconCreatePixMap(doc_setup_xpm[iconSize]),
- IC_MODETRAIN_TOO, (wMenuCallBack_p) wPrintSetup, I2VP(0));
-
- wMenuSeparatorCreate(fileM);
- MiscMenuItemCreate(fileM, NULL, "cmdImport", _("&Import"), ACCL_IMPORT,
- DoImport, 0, I2VP(0));
- MiscMenuItemCreate(fileM, NULL, "cmdImportModule", _("Import &Module"), ACCL_IMPORT_MOD,
- DoImport, 0, I2VP(1));
- MiscMenuItemCreate(fileM, NULL, "cmdOutputbitmap", _("Export to &Bitmap"),
- ACCL_PRINTBM, OutputBitMapInit(), 0,
- NULL);
- MiscMenuItemCreate(fileM, NULL, "cmdExport", _("E&xport"), ACCL_EXPORT,
- DoExport, IC_SELECTED, NULL);
- MiscMenuItemCreate(fileM, NULL, "cmdExportDXF", _("Export D&XF"),
- ACCL_EXPORTDXF, DoExportDXF, IC_SELECTED,
- NULL);
-#if XTRKCAD_CREATE_SVG
- MiscMenuItemCreate( fileM, NULL, "cmdExportSVG", _("Export S&VG"), ACCL_EXPORTDXF,
- DoExportSVG, IC_SELECTED, NULL);
-#endif
- wMenuSeparatorCreate(fileM);
-
- paramFilesCallback = ParamFilesInit();
- MiscMenuItemCreate(fileM, NULL, "cmdPrmfile", _("Parameter &Files ..."),
- ACCL_PARAMFILES, paramFilesCallback, 0, NULL);
- MiscMenuItemCreate(fileM, NULL, "cmdFileNote", _("No&tes ..."), ACCL_NOTES,
- DoNote, 0, NULL);
-
- wMenuSeparatorCreate(fileM);
- fileList_ml = wMenuListCreate(fileM, "menuFileList", NUM_FILELIST,
- ChkFileList);
- wMenuSeparatorCreate(fileM);
- wMenuPushCreate(fileM, "menuFile-quit", _("E&xit"), 0,
- DoQuit, NULL);
-
- InitCmdExport();
-
- AddToolbarButton("menuFile-parameter", wIconCreatePixMap(parameter_xpm[iconSize]),
- IC_MODETRAIN_TOO, paramFilesCallback, NULL);
-
- cmdGroup = BG_ZOOM;
- zoomUpB = AddToolbarButton("cmdZoomIn", wIconCreatePixMap(zoom_in_xpm[iconSize]),
- IC_MODETRAIN_TOO, DoZoomUp, NULL);
- zoomM = wMenuPopupCreate(mainW, "");
- AddToolbarButton("cmdZoom", wIconCreatePixMap(zoom_choose_xpm[iconSize]), IC_MODETRAIN_TOO,
- (wButtonCallBack_p) wMenuPopupShow, zoomM);
- zoomDownB = AddToolbarButton("cmdZoomOut", wIconCreatePixMap(zoom_out_xpm[iconSize]),
- IC_MODETRAIN_TOO, DoZoomDown, NULL);
- zoomExtentsB = AddToolbarButton("cmdZoomExtent", wIconCreatePixMap(zoom_extent_xpm[iconSize]),
- IC_MODETRAIN_TOO, DoZoomExtents, NULL);
-
- cmdGroup = BG_UNDO;
- undoB = AddToolbarButton("cmdUndo", wIconCreatePixMap(undo_xpm[iconSize]), 0,
- UndoUndo, NULL);
- redoB = AddToolbarButton("cmdRedo", wIconCreatePixMap(redo_xpm[iconSize]), 0,
- UndoRedo, NULL);
-
- wControlActive((wControl_p) undoB, FALSE);
- wControlActive((wControl_p) redoB, FALSE);
- InitCmdUndo();
-
- /*
- * EDIT MENU
- */
- MiscMenuItemCreate(editM, NULL, "cmdUndo", _("&Undo"), ACCL_UNDO,
- UndoUndo, 0, NULL);
- MiscMenuItemCreate(editM, NULL, "cmdRedo", _("R&edo"), ACCL_REDO,
- UndoRedo, 0, NULL);
- wMenuSeparatorCreate(editM);
- MiscMenuItemCreate(editM, NULL, "cmdCut", _("Cu&t"), ACCL_CUT,
- EditCut, IC_SELECTED, NULL);
- MiscMenuItemCreate(editM, NULL, "cmdCopy", _("&Copy"), ACCL_COPY,
- EditCopy, IC_SELECTED, NULL);
- MiscMenuItemCreate(editM, NULL, "cmdPaste", _("&Paste"), ACCL_PASTE,
- EditPaste, 0, NULL);
- MiscMenuItemCreate(editM, NULL, "cmdClone", _("C&lone"), ACCL_CLONE,
- EditClone, 0, NULL);
- MiscMenuItemCreate(editM, NULL, "cmdDelete", _("De&lete"), ACCL_DELETE,
- (wMenuCallBack_p) SelectDelete, IC_SELECTED, NULL);
- MiscMenuItemCreate(editM, NULL, "cmdMoveToCurrentLayer",
- _("Move To Current Layer"), ACCL_MOVCURLAYER,
- MoveSelectedTracksToCurrentLayer,
- IC_SELECTED, NULL);
- wMenuSeparatorCreate( editM );
- menuPLs[menuPG.paramCnt].context = I2VP(1);
- MiscMenuItemCreate( editM, NULL, "cmdSelectAll", _("Select &All"), ACCL_SELECTALL, (wMenuCallBack_p)SetAllTrackSelect, 0, I2VP(TRUE) );
- MiscMenuItemCreate( editM, NULL, "cmdSelectCurrentLayer", _("Select Current Layer"), ACCL_SETCURLAYER, SelectCurrentLayer, 0, NULL);
- MiscMenuItemCreate( editM, NULL, "cmdSelectByIndex", _("Select By Index"), 0L, StartIndexDialog, 0, &SelectByIndex );
- MiscMenuItemCreate( editM, NULL, "cmdDeselectAll", _("&Deselect All"), ACCL_DESELECTALL, (wMenuCallBack_p)SetAllTrackSelect, 0, I2VP(FALSE) );
- MiscMenuItemCreate( editM, NULL, "cmdSelectInvert", _("&Invert Selection"), 0L, InvertTrackSelect, 0, NULL);
- MiscMenuItemCreate( editM, NULL, "cmdSelectOrphaned", _("Select Stranded Track"), 0L, OrphanedTrackSelect, 0, NULL);
- wMenuSeparatorCreate( editM );
- MiscMenuItemCreate( editM, NULL, "cmdTunnel", _("Tu&nnel"), ACCL_TUNNEL, SelectTunnel, IC_SELECTED, NULL);
- MiscMenuItemCreate( editM, NULL, "cmdBridge", _("B&ridge"), ACCL_BRIDGE, SelectBridge, IC_SELECTED, NULL);
- MiscMenuItemCreate( editM, NULL, "cmdTies", _("Ties/NoTies"), ACCL_TIES, SelectTies, IC_SELECTED, NULL);
- MiscMenuItemCreate( editM, NULL, "cmdAbove", _("Move to &Front"), ACCL_ABOVE, SelectAbove, IC_SELECTED, NULL);
- MiscMenuItemCreate( editM, NULL, "cmdBelow", _("Move to &Back"), ACCL_BELOW, SelectBelow, IC_SELECTED, NULL);
-
- wMenuSeparatorCreate( editM );
- MiscMenuItemCreate( editM, NULL, "cmdWidth0", _("Thin Tracks"), ACCL_THIN, SelectTrackWidth, IC_SELECTED, I2VP(0) );
- MiscMenuItemCreate( editM, NULL, "cmdWidth2", _("Medium Tracks"), ACCL_MEDIUM, SelectTrackWidth, IC_SELECTED, I2VP(2) );
- MiscMenuItemCreate( editM, NULL, "cmdWidth3", _("Thick Tracks"), ACCL_THICK, SelectTrackWidth, IC_SELECTED, I2VP(3) );
-
- /*
- * VIEW MENU
- */
-
- zoomInM = wMenuPushCreate(viewM, "menuEdit-zoomIn", _("Zoom &In"),
- ACCL_ZOOMIN, DoZoomUp, I2VP(1));
- zoomSubM = wMenuMenuCreate(viewM, "menuEdit-zoomTo", _("&Zoom"));
- zoomOutM = wMenuPushCreate(viewM, "menuEdit-zoomOut", _("Zoom &Out"),
- ACCL_ZOOMOUT, DoZoomDown, I2VP(1));
- zoomExtentsM = wMenuPushCreate(viewM, "menuEdit-zoomExtents", _("Zoom &Extents"),
- 0, DoZoomExtents, I2VP(0));
- wMenuSeparatorCreate(viewM);
-
- InitCmdZoom(zoomM, zoomSubM, NULL, NULL);
-
- /* these menu choices and toolbar buttons are synonymous and should be treated as such */
- wControlLinkedSet((wControl_p) zoomInM, (wControl_p) zoomUpB);
- wControlLinkedSet((wControl_p) zoomOutM, (wControl_p) zoomDownB);
- wControlLinkedSet((wControl_p) zoomExtentsM, (wControl_p) zoomExtentsB);
-
- wMenuPushCreate(viewM, "menuEdit-redraw", _("&Redraw"), ACCL_REDRAW,
- (wMenuCallBack_p) MainRedraw, NULL);
- wMenuPushCreate(viewM, "menuEdit-redraw", _("Redraw All"), ACCL_REDRAWALL,
- (wMenuCallBack_p) DoRedraw, NULL);
- wMenuSeparatorCreate(viewM);
-
- snapGridEnableMI = wMenuToggleCreate(viewM, "cmdGridEnable",
- _("Enable SnapGrid"), ACCL_SNAPENABLE, 0,
- SnapGridEnable, NULL);
- snapGridShowMI = wMenuToggleCreate(viewM, "cmdGridShow", _("Show SnapGrid"),
- ACCL_SNAPSHOW,
- FALSE, SnapGridShow, NULL);
- gridCmdInx = InitGrid(viewM);
-
- // visibility toggle for anchors
- // get the start value
- long anchors_long;
- wPrefGetInteger("misc", "anchors", &anchors_long, 1);
- magneticSnap = anchors_long ? TRUE : FALSE;
- magnetsMI = wMenuToggleCreate(viewM, "cmdMagneticSnap", _("Enable Magnetic Snap"),
- 0, magneticSnap,
- MagneticSnapToggle, NULL);
-
- // visibility toggle for map window
- // get the start value
- long mapVisible_long;
- wPrefGetInteger("misc", "mapVisible", (long *) &mapVisible_long, 1);
- mapVisible = mapVisible_long ? TRUE : FALSE;
- mapShowMI = wMenuToggleCreate(viewM, "cmdMapShow", _("Show/Hide Map"),
- ACCL_MAPSHOW, mapVisible,
- MapWindowToggleShow, NULL);
-
- wMenuSeparatorCreate(viewM);
-
- toolbarM = wMenuMenuCreate(viewM, "toolbarM", _("&Tool Bar"));
- CreateToolbarM(toolbarM);
-
- cmdGroup = BG_EASE;
- InitCmdEasement();
-
- cmdGroup = BG_SNAP;
- InitSnapGridButtons();
- magnetsB = AddToolbarButton("cmdMagneticSnap", wIconCreatePixMap(magnet_xpm[iconSize]),
- IC_MODETRAIN_TOO, MagneticSnapToggle, NULL);
- wControlLinkedSet((wControl_p) magnetsMI, (wControl_p) magnetsB);
- wButtonSetBusy(magnetsB, (wBool_t) magneticSnap);
-
- mapShowB = AddToolbarButton("cmdMapShow", wIconCreatePixMap(map_xpm[iconSize]),
- IC_MODETRAIN_TOO, MapWindowToggleShow, NULL);
- wControlLinkedSet((wControl_p) mapShowMI, (wControl_p) mapShowB);
- wButtonSetBusy(mapShowB, (wBool_t) mapVisible);
-
- /*
- * ADD MENU
- */
-
- cmdGroup = BG_TRKCRT | BG_BIGGAP;
- InitCmdStraight(addM);
- InitCmdCurve(addM);
- InitCmdParallel(addM);
- InitCmdTurnout(addM);
- InitCmdHandLaidTurnout(addM);
- InitCmdStruct(addM);
- InitCmdHelix(addM);
- InitCmdTurntable(addM);
-
- cmdGroup = BG_CONTROL;
- ButtonGroupBegin( _("Control Element"), "cmdControlElements", _("Control Element") );
- InitCmdBlock(addM);
- InitCmdSwitchMotor(addM);
- InitCmdSignal(addM);
- InitCmdControl(addM);
- InitCmdSensor(addM);
- ButtonGroupEnd();
-
- /*
- * CHANGE MENU
- */
- cmdGroup = BG_SELECT;
- InitCmdDescribe(changeM);
- InitCmdSelect(changeM);
- InitCmdPan(viewM);
-
- wMenuSeparatorCreate(changeM);
-
- cmdGroup = BG_TRKGRP;
- InitCmdMove(changeM);
- InitCmdMoveDescription(changeM);
- InitCmdDelete();
- InitCmdTunnel();
- InitCmdBridge();
- InitCmdAboveBelow();
-
- cmdGroup = BG_TRKMOD;
- InitCmdModify(changeM);
- InitCmdCornu(changeM);
-
- MiscMenuItemCreate(changeM, NULL, "cmdRescale", _("Change Scale"), 0,
- DoRescale, IC_SELECTED, NULL);
-
-
- wMenuSeparatorCreate(changeM);
-
- InitCmdJoin(changeM);
- InitCmdSplit(changeM);
-
- wMenuSeparatorCreate(changeM);
-
- InitCmdPull(changeM);
- if (extraButtons)
- MiscMenuItemCreate(changeM, NULL, "loosen", _("&Loosen Tracks"),
- ACCL_LOOSEN, LoosenTracks,
- IC_SELECTED, NULL);
-
- wMenuSeparatorCreate(changeM);
-
- MiscMenuItemCreate(changeM, NULL, "cmdAddElevations",
- _("Raise/Lower Elevations"), ACCL_CHGELEV,
- ShowAddElevations, IC_SELECTED,
- NULL);
- InitCmdElevation(changeM);
- InitCmdProfile(changeM);
-
- MiscMenuItemCreate(changeM, NULL, "cmdClearElevations",
- _("Clear Elevations"), ACCL_CLRELEV,
- ClearElevations, IC_SELECTED, NULL);
- MiscMenuItemCreate(changeM, NULL, "cmdElevation", _("Recompute Elevations"),
- 0, RecomputeElevations, 0, NULL);
- ParamRegister(&addElevPG);
-
- /*
- * DRAW MENU
- */
- cmdGroup = BG_MISCCRT;
- InitCmdDraw(drawM);
- InitCmdText(drawM);
- InitTrkNote(drawM);
-
- cmdGroup = BG_RULER;
- InitCmdRuler(drawM);
-
- /*
- * OPTION MENU
- */
- MiscMenuItemCreate(optionM, NULL, "cmdLayout", _("L&ayout ..."),
- ACCL_LAYOUTW, LayoutInit(), IC_MODETRAIN_TOO, NULL);
- MiscMenuItemCreate(optionM, NULL, "cmdDisplay", _("&Display ..."),
- ACCL_DISPLAYW, DisplayInit(), IC_MODETRAIN_TOO, NULL);
- MiscMenuItemCreate(optionM, NULL, "cmdCmdopt", _("Co&mmand ..."),
- ACCL_CMDOPTW, CmdoptInit(), IC_MODETRAIN_TOO, NULL);
- MiscMenuItemCreate(optionM, NULL, "cmdEasement", _("&Easements ..."),
- ACCL_EASEW, DoEasementRedir,
- IC_MODETRAIN_TOO, NULL);
- MiscMenuItemCreate(optionM, NULL, "fontSelW", _("&Fonts ..."), ACCL_FONTW,
- SelectFont, IC_MODETRAIN_TOO, NULL);
- MiscMenuItemCreate(optionM, NULL, "cmdSticky", _("Stic&ky ..."),
- ACCL_STICKY, DoSticky, IC_MODETRAIN_TOO,
- NULL);
- if (extraButtons) {
- menuPLs[menuPG.paramCnt].context = debugW;
- MiscMenuItemCreate(optionM, NULL, "cmdDebug", _("&Debug ..."), 0,
- DebugInit, IC_MODETRAIN_TOO, NULL);
- }
- MiscMenuItemCreate(optionM, NULL, "cmdPref", _("&Preferences ..."),
- ACCL_PREFERENCES, PrefInit(), IC_MODETRAIN_TOO, NULL);
- MiscMenuItemCreate(optionM, NULL, "cmdColor", _("&Colors ..."), ACCL_COLORW,
- ColorInit(), IC_MODETRAIN_TOO, NULL);
-
- /*
- * MACRO MENU
- */
- wMenuPushCreate(macroM, "cmdRecord", _("&Record ..."), ACCL_RECORD,
- DoRecord, NULL);
- wMenuPushCreate(macroM, "cmdDemo", _("&Play Back ..."), ACCL_PLAYBACK,
- DoPlayBack, NULL);
-
- /*
- * WINDOW MENU
- */
- wMenuPushCreate(windowM, "menuWindow", _("Main window"), 0,
- (wMenuCallBack_p) wShow, mainW);
- winList_mi = wMenuListCreate(windowM, "menuWindow", -1, DoShowWindow);
-
- /*
- * HELP MENU
- */
-
- /* main help window */
- wMenuAddHelp(helpM);
-
- /* help on recent messages */
- wMenuSeparatorCreate(helpM);
- messageListM = wMenuMenuCreate(helpM, "menuHelpRecentMessages",
- _("Recent Messages"));
- messageList_ml = wMenuListCreate(messageListM, "messageListM", 10,
- ShowMessageHelp);
- wMenuListAdd(messageList_ml, 0, _(MESSAGE_LIST_EMPTY), NULL);
-
- /* tip of the day */
- wMenuSeparatorCreate( helpM );
- wMenuPushCreate( helpM, "cmdTip", _("Tip of the Day..."), 0, ShowTip, I2VP(SHOWTIP_FORCESHOW | SHOWTIP_NEXTTIP));
- demoM = wMenuMenuCreate( helpM, "cmdDemo", _("&Demos") );
- wMenuPushCreate( helpM, "cmdExamples", _("Examples..."), 0, ChkExamples, NULL);
-
- /* about window */
- wMenuSeparatorCreate(helpM);
- wMenuPushCreate(helpM, "about", _("About"), 0,
- CreateAboutW, NULL);
-
- /*
- * MANAGE MENU
- */
-
- cmdGroup = BG_TRAIN | BG_BIGGAP;
- InitCmdTrain(manageM);
- wMenuSeparatorCreate(manageM);
-
- InitNewTurn(
- wMenuMenuCreate(manageM, "cmdTurnoutNew",
- _("Tur&nout Designer...")));
-
- MiscMenuItemCreate(manageM, NULL, "cmdContmgm",
- _("Layout &Control Elements"), ACCL_CONTMGM,
- ControlMgrInit(), 0, NULL);
- MiscMenuItemCreate(manageM, NULL, "cmdGroup", _("&Group"), ACCL_GROUP,
- DoGroup, IC_SELECTED, NULL);
- MiscMenuItemCreate(manageM, NULL, "cmdUngroup", _("&Ungroup"), ACCL_UNGROUP,
- DoUngroup, IC_SELECTED, NULL);
-
- MiscMenuItemCreate(manageM, NULL, "cmdCustmgm",
- _("Custom defined parts..."), ACCL_CUSTMGM, CustomMgrInit(),
- 0, NULL);
- MiscMenuItemCreate(manageM, NULL, "cmdRefreshCompound",
- _("Update Turnouts and Structures"), 0,
- DoRefreshCompound, 0, NULL);
-
- MiscMenuItemCreate(manageM, NULL, "cmdCarInventory", _("Car Inventory"),
- ACCL_CARINV, DoCarDlg, IC_MODETRAIN_TOO,
- NULL);
-
- wMenuSeparatorCreate(manageM);
-
- MiscMenuItemCreate(manageM, NULL, "cmdLayer", _("Layers ..."), ACCL_LAYERS,
- InitLayersDialog(), 0, NULL);
- wMenuSeparatorCreate(manageM);
-
- MiscMenuItemCreate(manageM, NULL, "cmdEnumerate", _("Parts &List ..."),
- ACCL_PARTSLIST, EnumerateTracks, 0,
- NULL);
- MiscMenuItemCreate(manageM, NULL, "cmdPricelist", _("Price List..."),
- ACCL_PRICELIST, PriceListInit(), 0, NULL);
-
- cmdGroup = BG_LAYER | BG_BIGGAP;
-
- InitCmdSelect2(changeM);
- InitCmdDescribe2(changeM);
- InitCmdPan2(changeM);
-
- InitLayers();
-
- cmdGroup = BG_HOTBAR;
- InitHotBar();
-
- SetAccelKeys();
-
- InitBenchDialog();
- wPrefGetInteger( "DialogItem", "sticky-set", &stickySet, stickySet );
-}
-
-static void LoadFileList(void) {
- char file[6];
- int inx;
- const char * cp;
- const char *fileName, *pathName;
- strcpy(file, "fileX");
- for (inx = NUM_FILELIST - 1; inx >= 0; inx--) {
- file[4] = '0' + inx;
- cp = wPrefGetString("filelist", file);
- if (!cp)
- continue;
- pathName = MyStrdup(cp);
- fileName = FindFilename((char *) pathName);
- if (fileName)
- wMenuListAdd(fileList_ml, 0, fileName, pathName);
- }
-}
-
-EXPORT void InitCmdEnumerate(void) {
- AddToolbarButton("cmdEnumerate", wIconCreatePixMap(partlist_xpm),
- IC_SELECTED | IC_ACCLKEY, EnumerateTracks,
- NULL);
-}
-
-EXPORT void InitCmdExport(void) {
- ButtonGroupBegin( _("Import/Export"), "cmdExportImportSetCmd", _("Import/Export") );
- cmdGroup = BG_EXPORTIMPORT;
- AddToolbarButton("cmdExport", wIconCreatePixMap(doc_export_xpm[iconSize]),
- IC_SELECTED | IC_ACCLKEY, DoExport, NULL);
- AddToolbarButton("cmdExportDXF", wIconCreatePixMap(doc_export_dxf_xpm[iconSize]), IC_SELECTED | IC_ACCLKEY,
- DoExportDXF, I2VP(1));
- AddToolbarButton("cmdExportBmap", wIconCreatePixMap(doc_export_bmap_xpm[iconSize]), IC_ACCLKEY,
- OutputBitMapInit(), NULL);
- AddToolbarButton("cmdImport", wIconCreatePixMap(doc_import_xpm[iconSize]), IC_ACCLKEY,
- DoImport, I2VP(0));
- AddToolbarButton("cmdImportModule", wIconCreatePixMap(doc_import_xtc_xpm[iconSize]), IC_ACCLKEY,
- DoImport, I2VP(1));
- ButtonGroupEnd();
-}
-
/* Give user the option to continue work after crash. This function gives the user
* the option to load the checkpoint file to continue working after a crash.
*
@@ -2981,17 +988,18 @@ static int OfferCheckpoint( void )
/* sProdName */
ret =
- wNotice3(
- _(
- "Program was not terminated properly. Do you want to resume working on the previous trackplan?"),
- _("Resume"), _("Resume with New Name"), _("Ignore Checkpoint"));
+ wNotice3(
+ _(
+ "Program was not terminated properly. Do you want to resume working on the previous trackplan?"),
+ _("Resume"), _("Resume with New Name"), _("Ignore Checkpoint"));
//ret==1 Same, ret==-1 New, ret==0 Ignore
- if (ret == 1)
+ if (ret == 1) {
printf(_("Reload Checkpoint Selected\n"));
- else if (ret == -1)
+ } else if (ret == -1) {
printf(_("Reload Checkpoint With New Name Selected\n"));
- else
+ } else {
printf(_("Ignore Checkpoint Selected\n"));
+ }
if (ret>=0) {
/* load the checkpoint file */
LoadCheckpoint(ret==1);
@@ -3001,7 +1009,8 @@ static int OfferCheckpoint( void )
return (ret>=0);
}
-EXPORT wWin_p wMain(int argc, char * argv[]) {
+EXPORT wWin_p wMain(int argc, char * argv[])
+{
int c;
int resumeWork;
char * logFileName = NULL;
@@ -3015,8 +1024,7 @@ EXPORT wWin_p wMain(int argc, char * argv[]) {
char *cp;
char buffer[STR_SIZE];
unsigned int i;
- wWinPix_t displayWidth;
- wWinPix_t displayHeight;
+ BOOL_T bRunTests = FALSE;
strcpy(buffer, sProdNameLower);
@@ -3037,7 +1045,7 @@ EXPORT wWin_p wMain(int argc, char * argv[]) {
opterr = 0;
LogSet("dummy",0);
- while ((c = getopt(argc, argv, "vl:d:c:mV")) != -1)
+ while ((c = getopt(argc, argv, "vl:d:c:mVT")) != -1)
switch (c) {
case 'c': /* configuration name */
/* test for valid filename */
@@ -3079,25 +1087,28 @@ EXPORT wWin_p wMain(int argc, char * argv[]) {
break;
case ':':
NoticeMessage("Missing parameter for %s", _("Ok"), NULL,
- argv[optind - 1]);
+ argv[optind - 1]);
exit(1);
break;
case 'V': // display version
printf("Version: %s\n",XTRKCAD_VERSION);
exit(0);
break;
+ case 'T': // run tests
+ LogSet( "regression", 2 );
+ bRunTests = TRUE;
+ break;
default:
- abort();
+ CHECK(FALSE);
}
- if (optind < argc)
+ if (optind < argc) {
initialFile = strdup(argv[optind]);
+ }
extraButtons = (getenv(sEnvExtra) != NULL);
LogOpen(logFileName);
log_init = LogFindIndex("init");
log_malloc = LogFindIndex("malloc");
- log_error = LogFindIndex("error");
- log_command = LogFindIndex("command");
LOG1(log_init, ( "initCustom\n" ))
InitCustom();
@@ -3108,52 +1119,19 @@ EXPORT wWin_p wMain(int argc, char * argv[]) {
LOG1(log_init, ( "create main window\n" ))
SetLayoutTitle(sProdName);
sprintf(message, _("Unnamed Trackplan - %s(%s)"), sProdName, sVersion);
- wSetBalloonHelp(balloonHelp);
wGetDisplaySize(&displayWidth, &displayHeight);
mainW = wWinMainCreate(buffer, (displayWidth * 2) / 3,
- (displayHeight * 2) / 3, "xtrkcadW", message, "main",
- F_RESIZE | F_MENUBAR | F_NOTAB | F_RECALLPOS | F_RECALLSIZE | F_HIDE, MainProc,
- NULL);
- if (mainW == NULL)
+ (displayHeight * 2) / 3, "xtrkcadW", message, "main",
+ F_RESIZE | F_MENUBAR | F_NOTAB | F_RECALLPOS | F_RECALLSIZE | F_HIDE, MainProc,
+ NULL);
+ if (mainW == NULL) {
return NULL;
+ }
+ wSetGeometry(mainW, displayWidth/2, displayWidth, displayHeight/2,
+ displayHeight, -1, -1, -1);
InitAppDefaults();
- drawColorBlack = wDrawFindColor( wRGB( 0, 0, 0) );
- drawColorWhite = wDrawFindColor( wRGB(255,255,255) );
- drawColorRed = wDrawFindColor( wRGB(255, 0, 0) );
- drawColorBlue = wDrawFindColor( wRGB( 0, 0,255) );
- drawColorGreen = wDrawFindColor( wRGB( 0,255, 0) );
- drawColorAqua = wDrawFindColor( wRGB( 0,255,255) );
-
- // Last component of spectial color must be > 3
- drawColorPreviewSelected = wDrawFindColor( wRGB ( 6, 6, 255) ); //Special Blue
- drawColorPreviewUnselected = wDrawFindColor( wRGB( 255, 215, 6)); //Special Yellow
-
- drawColorPowderedBlue = wDrawFindColor( wRGB(129, 212, 250) );
- drawColorPurple = wDrawFindColor( wRGB(255, 0,255) );
- drawColorGold = wDrawFindColor( wRGB(255,215, 0) );
- drawColorGrey10 = wDrawFindColor( wRGB(26,26,26) );
- drawColorGrey20 = wDrawFindColor( wRGB(51,51,51) );
- drawColorGrey30 = wDrawFindColor( wRGB(72,72,72) );
- drawColorGrey40 = wDrawFindColor( wRGB(102,102,102) );
- drawColorGrey50 = wDrawFindColor( wRGB(128,128,128) );
- drawColorGrey60 = wDrawFindColor( wRGB(153,153,153) );
- drawColorGrey70 = wDrawFindColor( wRGB(179,179,179) );
- drawColorGrey80 = wDrawFindColor( wRGB(204,204,204) );
- drawColorGrey90 = wDrawFindColor( wRGB(230,230,230) );
- snapGridColor = drawColorGreen;
- markerColor = drawColorRed;
- borderColor = drawColorBlack;
- crossMajorColor = drawColorRed;
- crossMinorColor = drawColorBlue;
- selectedColor = drawColorRed;
- normalColor = drawColorBlack;
- elevColorIgnore = drawColorBlue;
- elevColorDefined = drawColorGold;
- profilePathColor = drawColorPurple;
- exceptionColor = wDrawFindColor(wRGB(255, 89, 0 ));
- tieColor = wDrawFindColor(wRGB(153, 89, 68));
newToolbarMax = (1 << BG_COUNT) - 1;
wPrefGetInteger("misc", "toolbarset", &toolbarSet, newToolbarMax);
@@ -3184,15 +1162,15 @@ EXPORT wWin_p wMain(int argc, char * argv[]) {
/*
* INITIALIZE
*/
+ LOG1(log_init, ( "initColor\n" ))
+ InitColor();
LOG1(log_init, ( "initInfoBar\n" ))
InitInfoBar();
- wSetSplashInfo("Misc2 Init...");
- LOG1(log_init, ( "misc2Init\n" ))
- Misc2Init();
+ wSetSplashInfo("Scale Init...");
+ LOG1(log_init, ( "ScaleInit\n" ))
+ ScaleInit();
+ wPrefGetInteger( "draw", "label-when", &labelWhen, labelWhen );
- RotateDialogInit();
- MoveDialogInit();
- IndexDialogInit();
wSetSplashInfo(_("Initializing commands"));
LOG1(log_init, ( "paramInit\n" ))
@@ -3207,28 +1185,20 @@ EXPORT wWin_p wMain(int argc, char * argv[]) {
LOG1(log_init, ( "createMenus\n" ))
CreateMenus();
+ SetAccelKeys();
+
LOG1(log_init, ( "initialize\n" ))
- if (!Initialize())
+ if (!Initialize()) {
return NULL;
- ParamRegister(&menuPG);
- ParamRegister(&stickyPG);
+ }
- /* initialize the layers */
- DefaultLayerProperties();
LOG1(log_init, ( "loadFileList\n" ))
LoadFileList();
- AddPlaybackProc("MENU", MenuPlayback, NULL);
//CreateDebugW();
/*
* TIDY UP
*/
- curCommand = 0;
- commandContext = commandList[curCommand].context;
-
- /*
- * READ PARAMETERS
- */
if (toolbarSet&(1<<BG_HOTBAR)) {
LayoutHotBar( NULL );
} else {
@@ -3239,16 +1209,27 @@ EXPORT wWin_p wMain(int argc, char * argv[]) {
DrawInit(initialZoom);
MacroInit();
+
+ /*
+ * READ PARAMETERS
+ */
wSetSplashInfo(_("Reading parameter files"));
LOG1(log_init, ( "paramFileInit\n" ))
- SetParamFileDir(GetCurrentPath(LAYOUTPATHKEY)); //Set default for new parms to be the same as the layout
+ SetParamFileDir(GetCurrentPath(
+ LAYOUTPATHKEY)); //Set default for new parms to be the same as the layout
- if (!ParamFileListInit())
+ if (!ParamFileListInit()) {
return NULL;
- // LOG1(log_init, ("!ParamFileListInit()\n"))
+ }
+
+ /* initialize the layers */
+ LOG1(log_init, ("DefaultLayerProperties"));
+ DefaultLayerProperties();
+
+ // LOG1(log_init, ("!ParamFileListInit()\n"))
- curCommand = describeCmdInx;
+ CommandInit();
LOG1(log_init, ( "Reset\n" ))
Reset();
@@ -3257,15 +1238,14 @@ EXPORT wWin_p wMain(int argc, char * argv[]) {
*/
/* Set up the data for scale and gauge description */
- DoSetScaleDesc();
+ DoAllSetScaleDesc();
// get the preferred scale from the configuration file
pref = wPrefGetString("misc", "scale");
- if (!pref)
+ if ( pref == NULL || DoSetScale( pref ) == FALSE ) {
// if preferred scale was not set (eg. during initial run), initialize to a default value
- pref = DEFAULT_SCALE;
- strcpy(buffer, pref);
- DoSetScale(buffer);
+ DoSetScale( DEFAULT_SCALE );
+ }
/* see whether last layout should be reopened on startup */
wPrefGetInteger("DialogItem", "pref-onstartup", &onStartup, 0);
@@ -3278,7 +1258,6 @@ EXPORT wWin_p wMain(int argc, char * argv[]) {
EnableCommands();
LOG1(log_init, ( "Initialization complete\n" ))
wSetSplashInfo(_("Initialization complete"));
- RegisterChangeNotification(ToolbarChange);
DoChangeNotification( CHANGE_MAIN | CHANGE_MAP);
wWinShow(mainW, TRUE);
@@ -3288,22 +1267,19 @@ EXPORT wWin_p wMain(int argc, char * argv[]) {
/* this has to be called before ShowTip() */
InitSmallDlg();
- /* Compare the program version and display Beta warning if appropriate */
- pref = wPrefGetString("misc", "version");
- if((!pref) || (strcmp(pref,XTRKCAD_VERSION) != 0))
- {
- if(strstr(XTRKCAD_VERSION,"Beta") != NULL)
- {
- NoticeMessage(MSG_BETA_NOTICE, _("Ok"),NULL, XTRKCAD_VERSION);
- }
- //else {
- // NoticeMessage(_("New version welcome..."),_("Ok"),NULL);
- //}
- wPrefSetString("misc", "version", XTRKCAD_VERSION);
- }
- else {
- ShowTip(SHOWTIP_NEXTTIP);
- }
+ /* Compare the program version and display Beta warning if appropriate */
+ pref = wPrefGetString("misc", "version");
+ if((!pref) || (strcmp(pref,XTRKCAD_VERSION) != 0)) {
+ if(strstr(XTRKCAD_VERSION,"Beta") != NULL) {
+ NoticeMessage(MSG_BETA_NOTICE, _("Ok"),NULL, XTRKCAD_VERSION);
+ }
+ //else {
+ // NoticeMessage(_("New version welcome..."),_("Ok"),NULL);
+ //}
+ wPrefSetString("misc", "version", XTRKCAD_VERSION);
+ } else {
+ ShowTip(SHOWTIP_NEXTTIP);
+ }
/* check for existing checkpoint file */
resumeWork = FALSE;
@@ -3320,16 +1296,58 @@ EXPORT wWin_p wMain(int argc, char * argv[]) {
bExample = (iExample == 1);
}
if (initialFile && strlen(initialFile)) {
- DoFileList(0, "1", initialFile); //Will load Background values, if archive, leave
- if (onStartup == 1)
- LayoutBackGroundInit(TRUE); //Wipe Out Prior Background
- else
- LayoutBackGroundInit(FALSE); //Get Prior BackGround
- } else
- LayoutBackGroundInit(TRUE); // If onStartup==1 and no initial file - Wipe Out Prior Background
+ DoFileList(0, "1",
+ initialFile); //Will load Background values, if archive, leave
+ if (onStartup == 1) {
+ LayoutBackGroundInit(TRUE); //Wipe Out Prior Background
+ } else {
+ LayoutBackGroundInit(FALSE); //Get Prior BackGround
+ }
+ } else {
+ LayoutBackGroundInit(
+ TRUE); // If onStartup==1 and no initial file - Wipe Out Prior Background
+ }
}
MainRedraw();
inMainW = FALSE;
+ if ( bRunTests ) {
+ int nFail = RegressionTestAll();
+ if ( nFail == 0 ) {
+ lprintf( "Regression Tests Pass\n" );
+ exit( 0 );
+ } else {
+ lprintf( "%d Regression Tests Fail\n", nFail );
+ exit( 1 );
+ }
+ }
return mainW;
}
+
+/****************************************************************************
+ *
+ * CHANGE NOTIFICATION
+ *
+ */
+#define CNCB_COUNT (40)
+
+static changeNotificationCallBack_t changeNotificationCallBacks[CNCB_COUNT];
+static int changeNotificationCallBackCnt = 0;
+
+EXPORT void RegisterChangeNotification(
+ changeNotificationCallBack_t action )
+{
+ CHECK( (changeNotificationCallBackCnt + 1) < CNCB_COUNT );
+ changeNotificationCallBacks[changeNotificationCallBackCnt] = action;
+ changeNotificationCallBackCnt++;
+}
+
+
+EXPORT void DoChangeNotification( long changes )
+{
+ int inx;
+ for (inx=0; inx<changeNotificationCallBackCnt; inx++) {
+ changeNotificationCallBacks[inx](changes);
+ }
+}
+
diff --git a/app/bin/misc.h b/app/bin/misc.h
index 509f2d8..641f47f 100644
--- a/app/bin/misc.h
+++ b/app/bin/misc.h
@@ -17,279 +17,94 @@
*
* 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
*/
#ifndef MISC_H
#define MISC_H
-#define EXPORT
-
-#include "acclkeys.h"
#include "common.h"
-typedef void (*addButtonCallBack_t)(void*);
-
-#define COUNT(A) (sizeof(A)/sizeof(A[0]))
-
-#define STR_SIZE (256)
-#define STR_SHORT_SIZE (80)
-#define STR_LONG_SIZE (1024)
-#define STR_HUGE_SIZE (10240)
-
-#define CAST_AWAY_CONST (char*)
-
-#define TITLEMAXLEN (40)
/*
* Globals
*/
extern int iconSize;
-
-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 colorTrack;
-extern long colorDraw;
-extern long carHotbarModeInx;
-extern DIST_T minLength;
-extern DIST_T connectDistance;
-extern ANGLE_T connectAngle;
-extern long twoRailScale;
-extern long mapScale;
-extern long constrainMain;
-extern long dontHideCursor;
-extern long checkPtInterval;
-extern long autosaveChkPoints;
-extern long liveMap;
-extern long preSelect;
-extern long hideTrainsInTunnels;
-extern long listLabels;
-extern long layoutLabels;
-extern long descriptionFontSize;
-extern long units;
+extern wWinPix_t displayWidth;
+extern wWinPix_t displayHeight;
+extern wWin_p mainW;
+extern char message[STR_HUGE_SIZE];
+extern long paramVersion;
+extern coOrd zero;
+extern wBool_t extraButtons;
extern long onStartup;
-extern long angleSystem;
-extern DIST_T trackGauge;
-extern DIST_T curScaleRatio;
-extern char * curScaleName;
-extern int enumerateMaxDescLen;
-extern long enableBalloonHelp;
-extern long showFlexTrack;
-extern long hotBarLabels;
-extern long rightClickMode;
-extern long selectMode;
-extern long selectZero;
-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)
+extern long units;
+extern long labelScale;
+#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_LDOUBLE wActionLDownDouble
-#define C_MODKEY wActionModKey
-#define C_SCROLLUP wActionScrollUp
-#define C_SCROLLDOWN wActionScrollDown
-#define C_SCROLLLEFT wActionScrollLeft
-#define C_SCROLLRIGHT wActionScrollRight
-#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_UPDATE (wActionLast+11)
-
-#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);
+#define LABELENABLE_CARS (1<<4)
+extern long labelEnable;
+extern long labelWhen;
-/*
- * Windows and buttons
- */
-extern wWinPix_t DlgSepLeft;
-extern wWinPix_t DlgSepMid;
-extern wWinPix_t DlgSepRight;
-extern wWinPix_t DlgSepTop;
-extern wWinPix_t DlgSepBottom;
-extern wWinPix_t DlgSepNarrow;
-extern wWinPix_t DlgSepWide;
-extern wWinPix_t DlgSepFrmLeft;
-extern wWinPix_t DlgSepFrmRight;
-extern wWinPix_t DlgSepFrmTop;
-extern wWinPix_t DlgSepFrmBottom;
+extern long dontHideCursor; // not used
+#ifdef HIDESELECTIONWINDOW
+extern long hideSelectionWindow; // not used
+#endif
-extern wWin_p mainW;
-extern wWinPix_t toolbarHeight;
-extern wIndex_t changed;
-extern char message[STR_HUGE_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 backgroundB; /** background visibility control */
-// extern wButton_p easementB;
-extern wIndex_t checkPtMark;
-extern wMenu_p demoM;
-extern wMenu_p popup1M, popup2M;
+#define GetDim(X) ((units==UNITS_METRIC)?(X)/2.54:(X))
+#define PutDim(X) ((units==UNITS_METRIC)?(X)*2.54:(X))
#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 * );
-typedef void (*indexDialogCallBack_t) (void * );
-typedef void (*moveDialogCallBack_t) (void *);
-extern void AddRotateMenu( wMenu_p, rotateDialogCallBack_t );
-extern void AddMoveMenu( wMenu_p, moveDialogCallBack_t );
-extern void AddIndexMenu(wMenu_p m, indexDialogCallBack_t func);
/*
* Safe Memory etc
*/
-void * MyMalloc( size_t );
-void * MyRealloc( void *, size_t );
-void MyFree( void * );
-void * memdup( void *, size_t );
-char * MyStrdup( const char * );
-void AbortProg( const char *, ... );
-#define ASSERT( X ) if ( !(X) ) AbortProg( "%s: %s:%d", #X, __FILE__, __LINE__ )
-char * Strcpytrimed( char *, const char *, BOOL_T );
-char * BuildTrimedTitle( char *, const char *, const char *, const char *, const char * );
-void ErrorMessage( const char *, ... );
-void InfoMessage( const char *, ... );
-int NoticeMessage( const char *, const char*, const char *, ... );
-int NoticeMessage2( int, const char *, const char*, const char *, ... );
-void DoQuit( void * unused );
-
-void SetFileChanged(void);
-char * ConvertFromEscapedText(const char * text);
-char * ConvertToEscapedText(const char * text);
-
-int MagneticSnap( int state );
-void wShow( wWin_p );
-void wHide( wWin_p );
-void CloseDemoWindows( void );
-void DefaultProc( wWin_p, winProcEvent, void * );
-void SelectFont( void * unused );
-
-void CheckRoomSize( BOOL_T );
-const char * GetBalloonHelpStr( const char* );
-const char * GetCurCommandName( void );
-void EnableCommands( void );
-void Reset( void );
-void TryCheckPoint( void );
-wIndex_t GetCurrentCommand(void);
-BOOL_T IsCurCommandSticky(void);
-void ResetIfNotSticky( void );
-wBool_t DoCurCommand( wAction_t, coOrd );
-int ConfirmReset( BOOL_T );
-void LayoutToolBar( void * );
-#define IC_STICKY (1<<0)
-#define IC_INITNOTSTICKY (1<<1)
-#define IC_CANCEL (1<<2)
-#define IC_MENU (1<<3)
-#define IC_NORESTART (1<<4)
-#define IC_SELECTED (1<<5)
-#define IC_POPUP (1<<6)
-#define IC_LCLICK (1<<7)
-#define IC_RCLICK (1<<8)
-#define IC_CMDMENU (1<<9)
-#define IC_POPUP2 (1<<10)
-#define IC_ABUT (1<<11)
-#define IC_ACCLKEY (1<<12)
-#define IC_MODETRAIN_TOO (1<<13)
-#define IC_MODETRAIN_ONLY (1<<14)
-#define IC_WANT_MOVE (1<<15)
-#define IC_PLAYBACK_PUSH (1<<16)
-#define IC_WANT_MODKEYS (1<<17)
-#define IC_POPUP3 (1<<18)
-wIndex_t InitCommand( wMenu_p, procCommand_t, const char *, const char *, int, long, long );
-void AddToolbarControl( wControl_p, long );
-BOOL_T CommandEnabled( wIndex_t );
-wButton_p AddToolbarButton( const char*, wIcon_p, long, wButtonCallBack_p, void * context );
-// RWS not found: wIndex_t AddCommandButton( procCommand_t, char*, char*, wIcon_p, int, long, long, void* );
-wIndex_t AddMenuButton( wMenu_p, procCommand_t, const char*, const char*, wIcon_p, int, long, long, void* );
-void PlaybackButtonMouse( wIndex_t );
-void ButtonGroupBegin( const char *, const char *, const char * );
-void ButtonGroupEnd( void );
-
-void SaveState( void );
-
-void PlaybackCommand( const char *, wIndex_t );
-wMenu_p MenuRegister( const char * label );
-void DoCommandB( void * );
-
-extern void EnumerateTracks( void * unused );
-void InitDebug( const char *, long * );
+extern BOOL_T TestMallocs( void );
+extern void * MyMalloc( size_t );
+extern void * MyRealloc( void *, size_t );
+extern void MyFree( void * );
+extern void * memdup( void *, size_t );
+extern char * MyStrdup( const char * );
+
+extern char * ConvertFromEscapedText(const char * text);
+extern char * ConvertToEscapedText(const char * text);
+
+extern const char * AbortMessage( const char *, ... );
+extern void AbortProg( const char *, const char *, int, const char * );
+#ifdef LOG_CHECK_COVERAGE
+#define CHECK( X ) lprintf( "CHECK %s:%i\n", __FILE__, __LINE__ ); if ( !(X) ) AbortProg( #X, __FILE__, __LINE__, NULL )
+#define CHECKMSG( X, MSG ) lprintf( "CHECK %s:%i\n", __FILE__, __LINE__ ); if ( !(X) ) AbortProg( #X, __FILE__, __LINE__, AbortMessage MSG )
+#else
+#define CHECK( X ) if ( !(X) ) AbortProg( #X, __FILE__, __LINE__, NULL )
+#define CHECKMSG( X, MSG ) if ( !(X) ) AbortProg( #X, __FILE__, __LINE__, AbortMessage MSG )
+#endif
+extern char * Strcpytrimed( char *, const char *, BOOL_T );
+extern wBool_t CheckHelpTopicExists(const char * topic);
+
+extern void InfoMessage( const char *, ... );
+extern void ErrorMessage( const char *, ... );
+extern int NoticeMessage( const char *, const char*, const char *, ... );
+extern int NoticeMessage2( int, const char *, const char*, const char *, ... );
+
+extern bool Confirm( char *, doSaveCallBack_p );
+extern void DoQuit( void * unused );
+extern void DoClear( void * unused );
+extern void MapWindowToggleShow( void * unused );
+extern void MapWindowShow( int state );
+extern void DoShowWindow(int index, const char * name, void * data);
+
+extern void wShow( wWin_p );
+extern void wHide( wWin_p );
+extern void CloseDemoWindows( void );
+extern void DefaultProc( wWin_p, winProcEvent, void * );
+typedef void (*changeNotificationCallBack_t)( long );
#define CHANGE_SCALE (1<<0)
#define CHANGE_PARAMS (1<<1)
#define CHANGE_MAIN (1<<2)
@@ -301,25 +116,32 @@ void InitDebug( const char *, long * );
#define CHANGE_CMDOPT (1<<9)
#define CHANGE_LIMITS (1<<10)
#define CHANGE_ICONSIZE (1<<11)
-#define CHANGE_ALL (CHANGE_SCALE|CHANGE_PARAMS|CHANGE_MAIN|CHANGE_MAP|CHANGE_UNITS|CHANGE_TOOLBAR|CHANGE_CMDOPT|CHANGE_BACKGROUND)
-typedef void (*changeNotificationCallBack_t)( long );
-void RegisterChangeNotification( changeNotificationCallBack_t );
-void DoChangeNotification( long );
+#define CHANGE_LAYER (1<<3)
+#define CHANGE_ALL (CHANGE_SCALE|CHANGE_PARAMS|CHANGE_MAIN|CHANGE_LAYER|CHANGE_MAP|CHANGE_UNITS|CHANGE_TOOLBAR|CHANGE_CMDOPT|CHANGE_BACKGROUND)
+extern void RegisterChangeNotification( changeNotificationCallBack_t );
+extern void DoChangeNotification( long );
-wBool_t CheckHelpTopicExists(const char * topic);
/* foreign externs */
-extern STATUS_T CmdEnumerate( wAction_t, coOrd );
-extern wIndex_t modifyCmdInx;
-extern wIndex_t joinCmdInx;
-extern wIndex_t tunnelCmdInx;
-
-/* ctodesgn.c */
-void InitNewTurn( wMenu_p m );
+/* Initializers */
+addButtonCallBack_t ColorInit( void );
+addButtonCallBack_t SettingsInit( 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 );
+addButtonCallBack_t ControlMgrInit ( void );
/* cnote.c */
void ClearNote( void );
+void DoNote( void * unused );
+BOOL_T WriteMainNote( FILE * );
+BOOL_T ReadMainNote(char * line);
/* cprintc.c */
coOrd GetPrintOrig();
@@ -331,45 +153,21 @@ void RulerRedraw( BOOL_T );
STATUS_T ModifyRuler( wAction_t, coOrd );
STATUS_T ModifyProtractor( wAction_t, coOrd );
-/* dialogs */
-void OutputBitMap( void );
-
-extern wDrawColor snapGridColor;
-
-addButtonCallBack_t ColorInit( void );
-addButtonCallBack_t SettingsInit( 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 );
-addButtonCallBack_t ControlMgrInit ( void );
-
+/* csnap.c */
wIndex_t InitGrid( wMenu_p menu );
-
BOOL_T SnapPos( coOrd * );
+BOOL_T SnapPosAngle( coOrd *, ANGLE_T * );
void DrawSnapGrid( drawCmd_p, coOrd, BOOL_T );
BOOL_T GridIsVisible( void );
void InitSnapGridButtons( void );
void SnapGridEnable( void * unused );
void SnapGridShow( void * unused );
-void MapWindowShow( int state );
-extern wMenuToggle_p snapGridEnableMI;
-extern wMenuToggle_p snapGridShowMI;
-void ScaleLengthEnd( void );
-void EnumerateList( long, FLOAT_T, char * , char * );
-void EnumerateStart(void);
-void EnumerateEnd(void);
-
-/* cnote.c */
-void DoNote( void * unused );
-BOOL_T WriteMainNote( FILE * );
+/* ctodesgn.c */
+void InitNewTurn( wMenu_p m );
-BOOL_T ReadMainNote(char * line);
+/* cturntbl.c */
+extern ANGLE_T turntableAngle;
/* dbench.c */
long GetBenchData( long, long );
@@ -415,23 +213,21 @@ BOOL_T CarCustomSave(FILE*);
typedef int (*contMgmCallBack_p) (int, void *);
void ContMgmLoad (wIcon_p,contMgmCallBack_p,void *);
-/* dlayer.c */
-void LayerSetCounts();
-int FindUnusedLayer(unsigned int start);
-void DecrementLayerObjects(unsigned int index);
-void IncrementLayerObjects(unsigned int index);
+/* dease.c */
+extern DIST_T easementVal;
+extern DIST_T easeR;
+extern DIST_T easeL;
+
+/* denum.c */
+extern int enumerateMaxDescLen;
+void EnumerateList( long, FLOAT_T, char *, char * );
+void EnumerateStart(void);
+void EnumerateEnd(void);
/* doption.c */
+extern long enableBalloonHelp;
long GetDistanceFormat( void );
-/* ctrain.c */
-BOOL_T WriteCars( FILE * );
-void ClearCars( void );
-void CarDlgAddProto( void );
-void CarDlgAddDesc( void );
-void AttachTrains( void );
-
-
/* cblock.c */
void InitCmdBlock( wMenu_p menu );
void BlockMgmLoad( void );
@@ -447,9 +243,55 @@ void InitCmdControl ( wMenu_p menu );
/* csensor.c */
void SensorMgmLoad ( void );
void InitCmdSensor ( wMenu_p menu );
+
/* cmodify.c */
+extern wIndex_t modifyCmdInx;
STATUS_T CmdModify(wAction_t action,coOrd pos );
-#include "misc2.h"
+/* ctrain.c */
+#define MODE_DESIGN (0)
+#define MODE_TRAIN (1)
+extern long programMode;
+extern long maxCouplingSpeed;
+extern long hideTrainsInTunnels;
+
+/* fileio.c */
+extern long checkPtInterval;
+extern long autosaveChkPoints;
+extern wIndex_t checkPtMark;
+
+/* layout.c */
+extern wIndex_t changed;
+void SetFileChanged(void);
+
+/* macro.c */
+extern long adjTimer;
+int RegressionTestAll();
+
+/* lprintf.c */
+typedef struct {
+ char * name;
+ int level;
+} logTable_t;
+extern dynArr_t logTable_da;
+#define logTable(N) DYNARR_N( logTable_t, logTable_da, N )
+extern time_t logClock;
+void LogOpen( char * );
+void LogClose( void );
+void LogSet( char *, int );
+int LogFindIndex( const char * );
+void LogPrintf( const char *, ... );
+#define LOG( DBINX, DBLVL, DBMSG ) \
+ if ( (DBINX) > 0 && logTable( (DBINX) ).level >= (DBLVL) ) { \
+ LogPrintf DBMSG ; \
+ }
+#define LOG1( DBINX, DBMSG ) LOG( DBINX, 1, DBMSG )
+#define LOGNAME( DBNAME, DBMSG ) LOG( LogFindIndex( DBNAME ), DBMSG )
+
+#define NUM_FILELIST (5)
+#define lprintf LogPrintf
+
+/* track.c */
+extern void EnumerateTracks( void * unused );
#endif
diff --git a/app/bin/misc2.c b/app/bin/misc2.c
deleted file mode 100644
index 6334bf2..0000000
--- a/app/bin/misc2.c
+++ /dev/null
@@ -1,898 +0,0 @@
-/** \file misc2.c
- * Management of information about scales and gauges plus rprintf.
- */
-
-/* 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.
- */
-
-#include "cjoin.h"
-#include "common.h"
-#include "compound.h"
-#include "custom.h"
-#include "draw.h"
-#include "fileio.h"
-#include "layout.h"
-#include "misc.h"
-#include "param.h"
-#include "track.h"
-#include "common-ui.h"
-
-
-EXPORT long units = 0; /**< measurement units: 0 = English, 1 = metric */
-EXPORT long checkPtInterval = 10;
-EXPORT long autosaveChkPoints = 0;
-
-EXPORT DIST_T curScaleRatio;
-EXPORT char * curScaleName;
-EXPORT DIST_T trackGauge;
-EXPORT long labelScale = 8;
-EXPORT long labelEnable = (LABELENABLE_ENDPT_ELEV|LABELENABLE_CARS);
-/** @prefs [draw] label-when=2 Unknown */
-EXPORT long labelWhen = 2;
-EXPORT long colorTrack = 0;
-EXPORT long colorDraw = 0;
-EXPORT long constrainMain = 0;
-EXPORT long dontHideCursor = 0;
-EXPORT long hideSelectionWindow = 0;
-EXPORT long angleSystem = 0;
-EXPORT DIST_T minLength = 0.1;
-EXPORT DIST_T connectDistance = 0.1;
-EXPORT ANGLE_T connectAngle = 1.0;
-EXPORT long twoRailScale = 16;
-EXPORT long mapScale = 64;
-EXPORT long liveMap = 0;
-EXPORT long preSelect = 0; /**< default command 0 = Describe 1 = Select */
-EXPORT long listLabels = 7;
-EXPORT long layoutLabels = 1;
-EXPORT long descriptionFontSize = 72;
-EXPORT long enableListPrices = 1;
-EXPORT void ScaleLengthEnd(void);
-
-static BOOL_T SetScaleDescGauge(SCALEINX_T scaleInx);
-
-
-/****************************************************************************
- *
- * RPRINTF
- *
- */
-
-
-#define RBUFF_SIZE (8192)
-static char rbuff[RBUFF_SIZE+1];
-static int roff;
-static int rbuff_record = 0;
-
-EXPORT void Rdump( FILE * outf )
-{
- fprintf( outf, "Record Buffer:\n" );
- rbuff[RBUFF_SIZE] = '\0';
- fprintf( outf, "%s", rbuff+roff );
- rbuff[roff] = '\0';
- fprintf( outf, "%s", rbuff );
- memset( rbuff, 0, sizeof rbuff );
- roff = 0;
-}
-
-
-EXPORT void Rprintf(
- char * format,
- ... )
-{
- static char buff[STR_SIZE];
- char * cp;
- va_list ap;
- va_start( ap, format );
- vsprintf( buff, format, ap );
- va_end( ap );
- if (rbuff_record >= 1)
- lprintf( buff );
- for ( cp=buff; *cp; cp++ ) {
- rbuff[roff] = *cp;
- roff++;
- if (roff>=RBUFF_SIZE)
- roff=0;
- }
-}
-
-/****************************************************************************
- *
- * CHANGE NOTIFICATION
- *
- */
-
-
-static changeNotificationCallBack_t changeNotificationCallBacks[20];
-static int changeNotificationCallBackCnt = 0;
-
-EXPORT void RegisterChangeNotification(
- changeNotificationCallBack_t action )
-{
- changeNotificationCallBacks[changeNotificationCallBackCnt] = action;
- changeNotificationCallBackCnt++;
-}
-
-
-EXPORT void DoChangeNotification( long changes )
-{
- int inx;
- for (inx=0;inx<changeNotificationCallBackCnt;inx++)
- changeNotificationCallBacks[inx](changes);
-}
-
-
-/****************************************************************************
- *
- * SCALE
- *
- */
-
-typedef struct {
- char * scale;
- DIST_T ratio;
- DIST_T gauge;
- DIST_T R[3];
- DIST_T X[3];
- DIST_T L[3];
- wIndex_t index;
- DIST_T length;
- BOOL_T tieDataValid;
- tieData_t tieData;
- } scaleInfo_t;
-EXPORT typedef scaleInfo_t * scaleInfo_p;
-static dynArr_t scaleInfo_da;
-#define scaleInfo(N) DYNARR_N( scaleInfo_t, scaleInfo_da, N )
-
-typedef struct {
- char *in_scales;
- SCALE_FIT_TYPE_T type;
- char *match_scales;
- SCALE_FIT_T result;
-} scaleComp_t;
-EXPORT typedef scaleComp_t * scaleComp_p;
-static dynArr_t scaleCompatible_da;
-#define scaleComp(N) DYNARR_N( scaleComp_t, scaleCompatible_da, N )
-
-static tieData_t tieData_demo = {
- 96.0/160.0,
- 16.0/160.0,
- 32.0/160.0 };
-
-//EXPORT SCALEINX_T curScaleInx = -1;
-static scaleInfo_p curScale;
-/** @prefs [misc] include same gauge turnouts=1 Unknown */
-EXPORT long includeSameGaugeTurnouts = FALSE;
-static SCALEINX_T demoScaleInx = -1;
-
-
-/** this struct holds a gauge description */
-typedef struct {
- char * gauge; /** ptr to textual description eg. 'n3' */
- SCALEINX_T scale; /** index of complete information in scaleInfo_da */
- wIndex_t index;
- } gaugeInfo_t;
-
-EXPORT typedef gaugeInfo_t * gaugeInfo_p;
-
-/** this struct holds a scale description */
-typedef struct {
- char *scaleDesc; /** ptr to textual description eg. 'HO' */
- SCALEINX_T scale; /** index of complete information (standard gauge) in scaleInfo_da */
- wIndex_t index;
- dynArr_t gauges_da; /** known gauges to this scale */
- } scaleDesc_t;
-
-EXPORT typedef scaleDesc_t *scaleDesc_p;
-static dynArr_t scaleDesc_da;
-#define scaleDesc(N) DYNARR_N( scaleDesc_t, scaleDesc_da, N )
-
-
-/**
- * Get the ratio from a scale description. Each member in the list of scale descriptions is
- * linked to an entry in the simple linear list of all scales/gauges. From there the ratio is
- * fetched and returned. Note that there is no error checking on parameters!
- *
- * \param IN sdi index into list of scale descriptions
- * \return ratio for scale
- */
-
-EXPORT DIST_T GetScaleDescRatio( SCALEDESCINX_T sdi )
-{
- return GetScaleRatio( scaleDesc(sdi).scale );
-}
-
-/**
- * Get the index into the linear list from a scale description and a gauge. All information about a
- * scale/ gauge combination is stored in a linear list. The index in that list for a given scale and the
- * gauge is returned by this function. Note that there is no error checking on parameters!
- *
- * \param IN scaleInx index into list of scale descriptions
- * \param IN gaugeInx index into list of gauges available for this scale
- * \return index into master list of scale/gauge combinations
- */
-
-EXPORT SCALEINX_T GetScaleInx( SCALEDESCINX_T scaleInx, GAUGEINX_T gaugeInx )
-{
- scaleDesc_t s;
- gaugeInfo_p g;
-
- s = scaleDesc(scaleInx);
- g = &(DYNARR_N(gaugeInfo_t, s.gauges_da, gaugeInx));
-
- return g->scale;
-
-}
-EXPORT DIST_T GetScaleTrackGauge( SCALEINX_T si )
-{
- if (si >=0 && si<scaleInfo_da.cnt)
- return scaleInfo(si).gauge;
- else return 1.0;
-}
-
-EXPORT DIST_T GetScaleRatio( SCALEINX_T si )
-{
- if (si >=0 && si<scaleInfo_da.cnt)
- return scaleInfo(si).ratio;
- else return 1.0;
-}
-
-EXPORT char * GetScaleName( SCALEINX_T si )
-{
- if ( si == -1 )
- return "DEMO";
- if ( si == SCALE_ANY )
- return "*";
- else if ( si < 0 || si >= scaleInfo_da.cnt )
- return "Unknown";
- else
- return scaleInfo(si).scale;
-}
-
-EXPORT void GetScaleEasementValues( DIST_T * R, DIST_T * L )
-{
- wIndex_t i;
- for (i=0;i<3;i++) {
- *R++ = curScale->R[i];
- *L++ = curScale->L[i];
- }
-}
-
-
-EXPORT tieData_p GetScaleTieData( SCALEINX_T si )
-{
- scaleInfo_p s;
- DIST_T defLength;
-
- if ( si == -1 )
- return &tieData_demo;
- else if ( si < 0 || si >= scaleInfo_da.cnt )
- return &tieData_demo;
- s = &scaleInfo(si);
- if ( !s->tieDataValid ) {
- sprintf( message, "tiedata-%s", s->scale );
- defLength = (96.0-54.0)/s->ratio+s->gauge;
-
- /** @prefs [tiedata-<SCALE>] length, width, spacing Sets tie drawing data.
- * Example for 6"x8"x6' ties spaced 20" in HOn3 (slash separates 4 lines):
- * [tiedata-HOn3] \ length=0.83 \ width=0.07 \ spacing=0.23
- */
- wPrefGetFloat( message, "length", &s->tieData.length, defLength );
- wPrefGetFloat( message, "width", &s->tieData.width, 16.0/s->ratio );
- wPrefGetFloat( message, "spacing", &s->tieData.spacing, 2*s->tieData.width );
- s->tieDataValid = TRUE;
- }
- return &scaleInfo(si).tieData;
-}
-
-EXPORT char *GetScaleDesc( SCALEDESCINX_T inx )
-{
- return scaleDesc(inx).scaleDesc;
-}
-
-EXPORT char *GetGaugeDesc( SCALEDESCINX_T scaleInx, GAUGEINX_T gaugeInx )
-{
- scaleDesc_t s;
- gaugeInfo_p g;
-
- s = scaleDesc(scaleInx);
- g = &(DYNARR_N(gaugeInfo_t, s.gauges_da, gaugeInx));
-
- return g->gauge;
-}
-
-void
-SetScaleGauge(SCALEDESCINX_T desc, GAUGEINX_T gauge)
-{
- dynArr_t gauges_da;
-
- gauges_da = (scaleDesc(desc)).gauges_da;
- SetLayoutCurScale( DYNARR_N( gaugeInfo_t, gauges_da, gauge).scale);
-}
-
-static BOOL_T
-SetScaleDescGauge(SCALEINX_T scaleInx)
-{
- int i, j;
- char *scaleName = GetScaleName(scaleInx);
- DIST_T scaleRatio = GetScaleRatio(scaleInx);
- dynArr_t gauges_da;
-
- for (i = 0; i < scaleDesc_da.cnt; i++) {
- char *t = strchr(scaleDesc(i).scaleDesc, ' ');
- /* are the first characters (which describe the scale) identical? */
- if (!strncmp(scaleDesc(i).scaleDesc, scaleName, t - scaleDesc(i).scaleDesc)) {
- /* if yes, are we talking about the same ratio */
- if (scaleInfo(scaleDesc(i).scale).ratio == scaleRatio) {
- /* yes, we found the right scale descriptor, so now look for the gauge */
- SetLayoutCurScaleDesc( i );
- gauges_da = scaleDesc(i).gauges_da;
- SetLayoutCurGauge(0);
- for (j = 0; j < gauges_da.cnt; j++) {
- gaugeInfo_p ptr = &(DYNARR_N(gaugeInfo_t, gauges_da, j));
- if (scaleInfo(ptr->scale).gauge == GetScaleTrackGauge(scaleInx)) {
- SetLayoutCurGauge( j );
- break;
- }
- }
- break;
- }
- }
- }
-
- return TRUE;
-}
-
-EXPORT SCALEINX_T LookupScale( const char * name )
-{
- wIndex_t si;
- DIST_T gauge;
- if ( strcmp( name, "*" ) == 0 )
- return SCALE_ANY;
- for ( si=0; si<scaleInfo_da.cnt; si++ ) {
- if (strcmp( scaleInfo(si).scale, name ) == 0)
- return si;
- }
- if ( isdigit((unsigned char)name[0]) ) {
- gauge = atof( name );
- for ( si=0; si<scaleInfo_da.cnt; si++ ) {
- if (scaleInfo(si).gauge == gauge)
- return si;
- }
- }
- NoticeMessage( MSG_BAD_SCALE_NAME, "Ok", NULL, name, sProdNameLower );
- si = scaleInfo_da.cnt;
- DYNARR_APPEND( scaleInfo_t, scaleInfo_da, 10 );
- scaleInfo(si) = scaleInfo(0);
- scaleInfo(si).scale = MyStrdup( name );
- return si;
-}
-
-/*
- * Evaluate the fit of a part scale1 to a definition in scale2 for a type.
- *
- * The rules differ by type of object.
- *
- * Tracks need to be the same gauge to be a fit. If they are the same scale they are exact.
- * If the gauge is the same, but the scale is different they are compatible.
- * There are well known exceptions where the scale is not the same but we call them exact.
- *
- * Structures need to be the same scale to be exact. If they are within 15% they are compatible.
- *
- * Cars need to be the same gauge and scale to be exact.
- * If they are the same gauge, but within 15% of the scale they are compatible.
- *
- *\param type (FIT_TURNOUT,FIT_STRUCTURE,FIT_CAR)
- *\param scale1 the input scale
- *\param scale2 the scale to check against
- *
- *\return FIT_EXACT, FIT_COMPATIBLE, FIT_NONE
- */
-
-EXPORT SCALE_FIT_T CompatibleScale(
- SCALE_FIT_TYPE_T type,
- SCALEINX_T scale1,
- SCALEINX_T scale2 )
-{
- SCALE_FIT_T rc;
- if ( scale1 == scale2 )
- return FIT_EXACT;
- if ( scale1 == SCALE_DEMO || scale2 == SCALE_DEMO )
- return FIT_NONE;
- if ( scale1 == demoScaleInx || scale2 == demoScaleInx )
- return FIT_NONE;
- switch(type) {
- case FIT_TURNOUT:
- if ( scale1 == SCALE_ANY )
- return FIT_EXACT;
- if (scaleInfo(scale1).gauge == scaleInfo(scale2).gauge &&
- scaleInfo(scale1).scale == scaleInfo(scale2).scale)
- return FIT_EXACT;
-
- rc = FindScaleCompatible(FIT_TURNOUT, scaleInfo(scale1).scale, scaleInfo(scale2).scale);
- if (rc != FIT_NONE) return rc;
-
- if ( includeSameGaugeTurnouts &&
- scaleInfo(scale1).gauge == scaleInfo(scale2).gauge )
- return FIT_COMPATIBLE;
- break;
- case FIT_STRUCTURE:
- if ( scale1 == SCALE_ANY )
- return FIT_EXACT;
- if ( scaleInfo(scale1).ratio == scaleInfo(scale2).ratio )
- return FIT_EXACT;
-
- rc = FindScaleCompatible(FIT_STRUCTURE, scaleInfo(scale1).scale, scaleInfo(scale2).scale);
- if (rc != FIT_NONE) return rc;
-
- //15% scale match is compatible for structures
- if (scaleInfo(scale1).ratio/scaleInfo(scale2).ratio>=0.85 &&
- scaleInfo(scale1).ratio/scaleInfo(scale2).ratio<=1.15)
- return FIT_COMPATIBLE;
- break;
- case FIT_CAR:
- if ( scale1 == SCALE_ANY )
- return FIT_EXACT;
- if (scaleInfo(scale1).gauge == scaleInfo(scale2).gauge &&
- scaleInfo(scale1).scale == scaleInfo(scale2).scale)
- return FIT_EXACT;
-
- rc = FindScaleCompatible(FIT_CAR, scaleInfo(scale1).scale, scaleInfo(scale2).scale);
- if (rc != FIT_NONE) return rc;
-
- //Same gauge and 15% scale match is compatible for cars
- if (scaleInfo(scale1).gauge == scaleInfo(scale2).gauge) {
- if (scaleInfo(scale1).ratio/scaleInfo(scale2).ratio>=0.85 &&
- scaleInfo(scale1).ratio/scaleInfo(scale2).ratio<=1.15)
- return FIT_COMPATIBLE;
- }
- break;
-
- default:;
- }
-
- return FIT_NONE;
-
-}
-
-/** Split the scale and the gauge description for a given combination. Eg HOn3 will be
- * split to HO and n3.
- * \param scaleInx IN scale/gauge combination
- * \param scaleDescInx OUT scale part
- * \param gaugeInx OUT gauge part
- * \return TRUE
- */
-
-EXPORT BOOL_T
-GetScaleGauge( SCALEINX_T scaleInx, SCALEDESCINX_T *scaleDescInx, GAUGEINX_T *gaugeInx)
-{
- int i, j;
- char *scaleName = GetScaleName( scaleInx );
- DIST_T scaleRatio = GetScaleRatio( scaleInx );
- dynArr_t gauges_da;
-
- for( i = 0; i < scaleDesc_da.cnt; i++ ) {
- char *t = strchr( scaleDesc(i).scaleDesc, ' ' );
- /* are the first characters (which describe the scale) identical? */
- if( !strncmp( scaleDesc(i).scaleDesc, scaleName, t - scaleDesc(i).scaleDesc )) {
- /* if yes, are we talking about the same ratio */
- if( scaleInfo(scaleDesc(i).scale).ratio == scaleRatio ) {
- /* yes, we found the right scale descriptor, so now look for the gauge */
- *scaleDescInx = i;
- gauges_da = scaleDesc(i).gauges_da;
- *gaugeInx = 0;
- for( j = 0; j < gauges_da.cnt; j++ ) {
- gaugeInfo_p ptr = &(DYNARR_N( gaugeInfo_t, gauges_da, j ));
- if( scaleInfo(ptr->scale).gauge == GetScaleTrackGauge( scaleInx )) {
- *gaugeInx = j;
- break;
- }
- }
- break;
- }
- }
- }
-
- return TRUE;
-}
-
-/**
- * Setup XTrkCad for the newly selected scale/gauge combination.
- *
- * \param newScaleInx IN the index of the selected scale/gauge combination
- */
-
-static void
-SetScale( SCALEINX_T newScaleInx )
-{
- if (newScaleInx < 0 || newScaleInx >= scaleInfo_da.cnt) {
- NoticeMessage( MSG_BAD_SCALE_INDEX, _("Ok"), NULL, (int)newScaleInx );
- return;
- }
- SetLayoutCurScale((SCALEINX_T)newScaleInx );
- curScale = &scaleInfo(newScaleInx);
- trackGauge = curScale->gauge;
- curScaleRatio = curScale->ratio;
- curScaleName = curScale->scale;
-
- SetLayoutCurScaleDesc( 0 );
-
- SetScaleDescGauge((SCALEINX_T)newScaleInx);
-
-
- if (!inPlayback)
- wPrefSetString( "misc", "scale", curScaleName );
-
- // now load the minimum radius for the newly selected scale
- LoadLayoutMinRadiusPref(curScaleName, curScale->R[0]);
-}
-
-/**
- * Check the new scale value and update the program if a valid scale was passed
- *
- * \param newScale IN the name of the new scale
- * \returns TRUE if valid, FALSE otherwise
- */
-
-EXPORT BOOL_T DoSetScale(
- char * newScale )
-{
- SCALEINX_T scale;
- char * cp;
- BOOL_T found = FALSE;
-
- if ( newScale != NULL ) {
- cp = newScale+strlen(newScale)-1;
- while ( *cp=='\n' || *cp==' ' || *cp=='\t' ) cp--;
- cp[1] = '\0';
- while (isspace((unsigned char)*newScale)) newScale++;
- for (scale = 0; scale<scaleInfo_da.cnt; scale++) {
- if (strcasecmp( scaleInfo(scale).scale, newScale ) == 0) {
- SetLayoutCurScale(scale);
- found = TRUE;
- break;
- }
- }
- // was a valid scale given?
- if( found ) {
- DoChangeNotification( CHANGE_SCALE );
- }
- }
-
- return found;
-}
-
-/**
- * Setup the data structures for scale and gauge. XTC reads 'scales' into an dynamic array,
- * but doesn't differentiate between scale and gauge.
- * This da is split into an dynamic array of scales. Each scale holds a dynamic array of gauges,
- * with at least one gauge per scale (ie standard gauge)
- *
- * For usage in the dialogs, a textual description for each scale or gauge is provided
- *
- * \return TRUE
- */
-
-EXPORT BOOL_T DoSetScaleDesc( void )
-{
- SCALEINX_T scaleInx;
- SCALEINX_T work;
- SCALEDESCINX_T descInx;
- scaleDesc_p s = NULL;
- gaugeInfo_p g;
- char *cp;
- DIST_T ratio;
- BOOL_T found;
- char buf[ 80 ];
- size_t len;
-
- for( scaleInx = 0; scaleInx < scaleInfo_da.cnt; scaleInx++ ) {
- ratio = DYNARR_N( scaleInfo_t, scaleInfo_da, scaleInx ).ratio;
-
- /* do we already have a description for this scale? */
- found = 0;
-
- if( scaleDesc_da.cnt > 0 ) {
- for( descInx = 0; descInx < scaleDesc_da.cnt; descInx++ ) {
- work = scaleDesc(descInx).scale;
- if( scaleInfo(work).ratio == scaleInfo(scaleInx).ratio ) {
- if( !strncmp( scaleInfo(work).scale, scaleInfo(scaleInx).scale, strlen(scaleInfo(work).scale)))
- found = TRUE;
- }
- }
- }
-
-
- if( !found ) {
- /* if no, add as new scale */
-
- DYNARR_APPEND( scaleDesc_t, scaleDesc_da, 1 );
-
- s = &(scaleDesc( scaleDesc_da.cnt-1 ));
-
- s->scale = scaleInx;
-
- sprintf( buf, "%s (1/%.1f)", scaleInfo(scaleInx).scale, scaleInfo(scaleInx).ratio );
- s->scaleDesc = MyStrdup( buf );
-
- /* initialize the array with standard gauge */
-
- DYNARR_APPEND( gaugeInfo_t, s->gauges_da, 10 );
-
- g = &(DYNARR_N( gaugeInfo_t, s->gauges_da, (s->gauges_da).cnt - 1 ));
- g->scale = scaleInx;
- sprintf( buf, "Standard (%.1fmm)", scaleInfo(scaleInx).gauge*25.4 );
- g->gauge = MyStrdup( buf );
-
- } else {
- /* if yes, is this a new gauge to the scale? */
- DYNARR_APPEND( gaugeInfo_t, s->gauges_da, 10 );
- g = &(DYNARR_N( gaugeInfo_t, s->gauges_da, (s->gauges_da).cnt - 1 ));
- g->scale = scaleInx;
- cp = strchr( s->scaleDesc, ' ' );
- if( cp )
- len = cp - s->scaleDesc;
- else
- len = strlen(s->scaleDesc);
- sprintf( buf, "%s (%.1fmm)", scaleInfo(scaleInx).scale+len, scaleInfo(scaleInx).gauge*25.4 );
- g->gauge = MyStrdup( buf );
- }
- }
-
- return( TRUE );
-}
-
-static BOOL_T AddScale(
- char * line )
-{
- wIndex_t i;
- BOOL_T rc;
- DIST_T R[3], X[3], L[3];
- DIST_T ratio, gauge;
- char scale[40];
- scaleInfo_p s;
-
- if ( (rc=sscanf( line, "SCALE %[^,]," SCANF_FLOAT_FORMAT "," SCANF_FLOAT_FORMAT "",
- scale, &ratio, &gauge )) != 3) {
- SyntaxError( "SCALE", rc, 3 );
- return FALSE;
- }
- for (i=0;i<3;i++) {
- line = GetNextLine();
- if ( (rc=sscanf( line, "" SCANF_FLOAT_FORMAT "," SCANF_FLOAT_FORMAT "," SCANF_FLOAT_FORMAT "",
- &R[i], &X[i], &L[i] )) != 3 ) {
- SyntaxError( "SCALE easement", rc, 3 );
- return FALSE;
- }
- }
-
- DYNARR_APPEND( scaleInfo_t, scaleInfo_da, 10 );
- s = &scaleInfo(scaleInfo_da.cnt-1);
- s->scale = MyStrdup( scale );
- s->ratio = ratio;
- s->gauge = gauge;
- s->index = -1;
- for (i=0; i<3; i++) {
- s->R[i] = R[i]/ratio;
- s->X[i] = X[i]/ratio;
- s->L[i] = L[i]/ratio;
- }
- s->tieDataValid = FALSE;
- if ( strcmp( scale, "DEMO" ) == 0 )
- demoScaleInx = scaleInfo_da.cnt-1;
- return TRUE;
-}
-
-static BOOL_T AddScaleFit(
- char * line) {
- char scales[STR_SIZE], matches[STR_SIZE], type[20], result[20];
- BOOL_T rc;
- scaleComp_p s;
-
- if ( (rc=sscanf( line, "SCALEFIT %s %s %s %s",
- type, result, scales, matches )) != 4) {
- SyntaxError( "SCALEFIT", rc, 4 );
- return FALSE;
- }
- DYNARR_APPEND( scaleComp_t, scaleCompatible_da, 10 );
- s = &scaleComp(scaleCompatible_da.cnt-1);
- s->in_scales = MyStrdup(scales);
- s->match_scales = MyStrdup(matches);
- if (strcmp(type,"STRUCTURE") == 0) {
- s->type = FIT_STRUCTURE;
- } else if (strcmp(type,"TURNOUT")==0) {
- s->type = FIT_TURNOUT;
- } else if (strcmp(type,"CAR")==0) {
- s->type = FIT_CAR;
- } else {
- InputError( "Invalid SCALEFIT type %s", TRUE, type );
- return FALSE;
- }
- if (strcmp(result,"COMPATIBLE")==0) {
- s->result = FIT_COMPATIBLE;
- } else if (strcmp(result,"EXACT")==0) {
- s->result = FIT_EXACT;
- } else {
- InputError( "Invalid SCALEFIT result %s", TRUE, result );
- return FALSE;
- }
-
- return TRUE;
-}
-
-EXPORT SCALE_FIT_T FindScaleCompatible(SCALE_FIT_TYPE_T type, char * scale1, char * scale2) {
-
- char * cp, * cq;
-
- if (!scale1 || !scale1[0]) return FIT_NONE;
- if (!scale2 || !scale2[0]) return FIT_NONE;
-
- for (int i=0; i<scaleCompatible_da.cnt; i++) {
- scaleComp_p s;
- s = &scaleComp(i);
- if (s->type != type) continue;
- BOOL_T found = FALSE;
- cp = s->in_scales;
- //Match input scale
- while (cp) {
- //Next instance of needle in haystack
- cp = strstr(cp,scale2);
- if (!cp) break;
- //Check that this is start of csv string
- if (cp == s->in_scales || cp[-1] == ',') {
- //Is this end of haystack?
- if (strlen(cp) == strlen(scale2)) {
- found = TRUE;
- break;
- }
- //Is it the same until the next ','
- cq=strstr(cp,",");
- if (cq && (cq-cp == strlen(scale2))) {
- found = TRUE;
- break;
- }
- else cp=cq;
- } else cp=strstr(cp,",");
- }
- if (!found) continue;
- found = FALSE;
- cp = s->match_scales;
- //Match output scale
- while (cp) {
- //Next instance of needle in haystack
- cp = strstr(cp,scale1);
- if (!cp) break;
- //Check that this is start of csv string
- if (cp == s->match_scales || cp[-1] == ',') {
- //Is this end of haystack?
- if (strlen(cp) == strlen(scale1)) {
- found = TRUE;
- break;
- }
- //Is it the same until the next ','
- cq=strstr(cp,",");
- if (cq && (cq-cp == strlen(scale1))) {
- found = TRUE;
- break;
- }
- else cp=cq;
- } else cp=strstr(cp,",");
- }
- if (!found) continue;
- return s->result;
- }
- return FIT_NONE;
-}
-
-EXPORT void ScaleLengthIncrement(
- SCALEINX_T scale,
- DIST_T length )
-{
- char * cp;
- size_t len;
- if (scaleInfo(scale).length == 0.0) {
- if (units == UNITS_METRIC)
- cp = "999.99m SCALE Flex Track";
- else
- cp = "999' 11\" SCALE Flex Track";
- len = strlen( cp )+1;
- if (len > enumerateMaxDescLen)
- enumerateMaxDescLen = (int)len;
- }
- scaleInfo(scale).length += length;
-}
-
-EXPORT void ScaleLengthEnd( void )
-{
- wIndex_t si;
- size_t count;
- DIST_T length;
- char tmp[STR_SIZE];
- FLOAT_T flexLen;
- long flexUnit;
- FLOAT_T flexCost;
- for (si=0; si<scaleInfo_da.cnt; si++) {
- sprintf( tmp, "price list %s", scaleInfo(si).scale );
- wPrefGetFloat( tmp, "flex length", &flexLen, 0.0 );
- wPrefGetInteger( tmp, "flex unit", &flexUnit, 0 );
- wPrefGetFloat( tmp, "flex cost", &flexCost, 0.0 );
- tmp[0] = '\0';
- if ((length=scaleInfo(si).length) != 0) {
- sprintf( tmp, "%s %s Flex Track", FormatDistance(length), scaleInfo(si).scale );
- for (count = strlen(tmp); count<enumerateMaxDescLen; count++)
- tmp[count] = ' ';
- tmp[enumerateMaxDescLen] = '\0';
- count = 0;
- if (flexLen > 0.0) {
- count = (int)ceil( length / (flexLen/(flexUnit?2.54:1.00)));
- }
- EnumerateList( (long)count, flexCost, tmp, NULL );
- }
- scaleInfo(si).length = 0;
- }
-}
-
-
-
-EXPORT void LoadScaleList( wList_p scaleList )
-{
- wIndex_t inx;
- for (inx=0; inx<scaleDesc_da.cnt-(extraButtons?0:1); inx++) {
- scaleDesc(inx).index =
- wListAddValue( scaleList, scaleDesc(inx).scaleDesc, NULL, I2VP(inx) );
- }
-}
-
-EXPORT void LoadGaugeList( wList_p gaugeList, SCALEDESCINX_T scale )
-{
- wIndex_t inx;
- scaleDesc_t s;
- gaugeInfo_p g;
- dynArr_t *gauges_da_p;
-
- s = scaleDesc(scale);
- gauges_da_p = &(s.gauges_da);
- g = gauges_da_p->ptr;
- g = s.gauges_da.ptr;
-
- wListClear( gaugeList ); /* remove old list in case */
- for (inx=0; inx<gauges_da_p->cnt; inx++) {
- (g[inx]).index = wListAddValue( gaugeList, (g[inx]).gauge, NULL, I2VP(g[inx].scale) );
- }
-}
-
-static void ScaleChange( long changes )
-{
- if (changes & CHANGE_SCALE) {
- SetScale( GetLayoutCurScale() );
- }
-}
-
-/*****************************************************************************
- *
- *
- *
- */
-
-EXPORT void Misc2Init( void )
-{
- AddParam( "SCALE ", AddScale );
- AddParam( "SCALEFIT", AddScaleFit);
- wPrefGetInteger( "draw", "label-when", &labelWhen, labelWhen );
- RegisterChangeNotification( ScaleChange );
- wPrefGetInteger( "misc", "include same gauge turnouts", &includeSameGaugeTurnouts, 1 );
-}
diff --git a/app/bin/misc2.h b/app/bin/misc2.h
deleted file mode 100644
index 8020696..0000000
--- a/app/bin/misc2.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/** \file misc2.h
- *
- */
-
-/* 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 MISC2_H
-#define MISC2_H
-
-#include "common.h"
-#include "misc.h"
-
-#define LABEL_MANUF (1<<0)
-#define LABEL_PARTNO (1<<1)
-#define LABEL_DESCR (1<<2)
-#define LABEL_COST (1<<7)
-#define LABEL_FLIPPED (1<<8)
-#define LABEL_TABBED (1<<9)
-#define LABEL_UNGROUPED (1<<10)
-#define LABEL_SPLIT (1<<11)
-
-typedef struct {
- char * name;
- int level;
- } logTable_t;
-extern dynArr_t logTable_da;
-#define logTable(N) DYNARR_N( logTable_t, logTable_da, N )
-extern time_t logClock;
-void LogOpen( char * );
-void LogClose( void );
-void LogSet( char *, int );
-int LogFindIndex( const char * );
-void LogPrintf( const char *, ... );
-#define LOG( DBINX, DBLVL, DBMSG ) \
- if ( DBINX > 0 && logTable( DBINX ).level >= DBLVL ) { \
- LogPrintf DBMSG ; \
- }
-#define LOG1( DBINX, DBMSG ) LOG( DBINX, 1, DBMSG )
-#define LOGNAME( DBNAME, DBMSG ) LOG( LogFindIndex( DBNAME ), DBMSG )
-
-#define lprintf LogPrintf
-void Rdump( FILE * );
-void Rprintf( char *, ... );
-
-typedef struct {
- DIST_T length;
- DIST_T width;
- DIST_T spacing;
- } tieData_t, *tieData_p;
-
-DIST_T GetScaleTrackGauge( SCALEINX_T );
-DIST_T GetScaleRatio( SCALEINX_T );
-DIST_T GetScaleDescRatio( SCALEDESCINX_T sdi );
-char * GetScaleName( SCALEINX_T );
-SCALEINX_T GetScaleInx( SCALEDESCINX_T scaleInx, GAUGEINX_T gaugeInx );
-
-char *GetScaleDesc( SCALEDESCINX_T inx );
-char *GetGaugeDesc( SCALEDESCINX_T scaleInx, GAUGEINX_T gaugeInx );
-void GetScaleEasementValues( DIST_T *, DIST_T * );
-tieData_p GetScaleTieData( SCALEINX_T );
-SCALEINX_T LookupScale( const char * );
-BOOL_T GetScaleGauge( SCALEINX_T scaleInx, SCALEDESCINX_T *scaleDescInx, GAUGEINX_T *gaugeInx);
-void SetScaleGauge(SCALEDESCINX_T desc, GAUGEINX_T gauge);
-BOOL_T DoSetScale( char * );
-
-void ScaleLengthIncrement( SCALEINX_T, DIST_T );
-void LoadScaleList( wList_p );
-void LoadGaugeList( wList_p, SCALEDESCINX_T );
-
-typedef enum {FIT_STRUCTURE, FIT_TURNOUT, FIT_CAR} SCALE_FIT_TYPE_T;
-typedef enum {FIT_NONE, FIT_COMPATIBLE, FIT_EXACT} SCALE_FIT_T;
-SCALE_FIT_T CompatibleScale( SCALE_FIT_TYPE_T, SCALEINX_T, SCALEINX_T );
-
-SCALE_FIT_T FindScaleCompatible(SCALE_FIT_TYPE_T type, char * scale1, char * scale2);
-
-BOOL_T DoSetScaleDesc( void );
-
-extern unsigned int curLayer;
-extern long layerCount;
-void SetCurrLayer(wIndex_t inx, const char * name, wIndex_t op,
- void * listContext, void * arg);
-wDrawColor GetLayerColor( unsigned int );
-BOOL_T GetLayerUseColor( unsigned int);
-BOOL_T GetLayerVisible( unsigned int );
-void FlipLayer( void * layerVP );
-BOOL_T GetLayerFrozen( unsigned int );
-BOOL_T GetLayerOnMap( unsigned int );
-BOOL_T GetLayerModule( unsigned int );
-BOOL_T GetLayerHidden( unsigned int);
-void SetLayerModule(unsigned int, BOOL_T);
-char * GetLayerName( unsigned int );
-void SetLayerName(unsigned int layer, char* name);
-BOOL_T ReadLayers( char * );
-BOOL_T WriteLayers( FILE * );
-char * FormatLayerName(unsigned int layerNumber);
-/* dlayers.c */
-void UpdateLayerLists( void );
-void DefaultLayerProperties(void);
-void UpdateLayerDlg( unsigned int );
-void ResetLayers( void );
-void SaveLayers( void );
-void RestoreLayers( void );
-void LoadLayerLists( void );
-addButtonCallBack_t InitLayersDialog( void );
-void FillLayerList(wList_p layerList);
-void Misc2Init( void );
-
-#endif
diff --git a/app/bin/note.h b/app/bin/note.h
index 2d70176..4e744b2 100644
--- a/app/bin/note.h
+++ b/app/bin/note.h
@@ -2,23 +2,23 @@
* Common definitions for notes
*/
- /* XTrkCad - Model Railroad CAD
- * Copyright (C) 2018 Martin Fischer
- *
- * 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.
- */
+/* XTrkCad - Model Railroad CAD
+ * Copyright (C) 2018 Martin Fischer
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
#ifndef HAVE_NOTE_H
#define HAVE_NOTE_H
@@ -42,7 +42,6 @@ enum noteCommands {
typedef struct extraDataNote_t {
extraDataBase_t base;
coOrd pos; /**< position */
- unsigned int layer;
enum noteCommands op; /**< note type */
track_p trk; /**< track */
union {
@@ -59,53 +58,26 @@ typedef struct extraDataNote_t {
} noteData;
} extraDataNote_t;
-//struct noteTextData {
-// coOrd pos;
-// unsigned int layer;
-// char *text;
-// track_p trk;
-//};
-
-struct noteLinkData {
- coOrd pos;
- unsigned int layer;
- char title[TITLEMAXIMUMLENGTH];
- char url[URLMAXIMUMLENGTH];
- track_p trk;
-};
-
-struct noteFileData {
- coOrd pos;
- unsigned int layer;
- char title[TITLEMAXIMUMLENGTH];
- char path[PATHMAXIMUMLENGTH];
- track_p trk;
- BOOL_T inArchive;
-};
-
-enum { OR_NOTE, LY_NOTE, TX_TEXT, OK_TEXT, TITLE_LINK, TX_LINK, OK_LINK, TITLE_FILE, OK_FILE, CANCEL_NOTE };
/* linknoteui.c */
-void NewLinkNoteUI(track_p trk);
+void NewLinkNoteUI( coOrd );
BOOL_T IsLinkNote(track_p trk);
void DescribeLinkNote(track_p trk, char * str, CSIZE_T len);
void ActivateLinkNote(track_p trk);
/* filenozeui.c */
-void NewFileNoteUI(track_p trk);
+void NewFileNoteUI( coOrd );
BOOL_T IsFileNote(track_p trk);
void DescribeFileNote(track_p trk, char * str, CSIZE_T len);
void ActivateFileNote(track_p trk);
/* textnoteui.c */
-void NewTextNoteUI(track_p trk);
+void NewTextNoteUI( coOrd );
void DescribeTextNote(track_p trk, char * str, CSIZE_T len);
/* trknote.c */
extern TRKTYP_T T_NOTE;
-void NoteStateSave(track_p trk);
+//void NoteStateSave(track_p trk);
+track_p NewNote(wIndex_t index, coOrd p, enum noteCommands command );
-void UpdateFile(struct extraDataNote_t *noteUIData, int inx, BOOL_T needUndoStart);
-void UpdateText(struct extraDataNote_t *noteUIData, int inx, BOOL_T needUndoStart);
-void UpdateLink(struct extraDataNote_t *noteUIData, int inx, BOOL_T needUndoStart);
#endif // !HAVE_NOTE_H
diff --git a/app/bin/param.c b/app/bin/param.c
index 67ff7ac..b6ad8c3 100644
--- a/app/bin/param.c
+++ b/app/bin/param.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 "common.h"
@@ -29,8 +29,6 @@
#include "track.h"
#include "common-ui.h"
-EXPORT int paramHiliteFast = FALSE;
-
/* Bogus reg vars */
EXPORT int paramLevel = 1;
EXPORT int paramLen;
@@ -39,6 +37,7 @@ EXPORT char paramId[100];
EXPORT BOOL_T paramTogglePlaybackHilite;
EXPORT char *PREFSECT = "DialogItem";
+EXPORT long angleSystem = 0;
static int paramCheckErrorCount = 0;
static BOOL_T paramCheckShowErrors = FALSE;
@@ -46,6 +45,18 @@ static BOOL_T paramCheckShowErrors = FALSE;
static int log_paramLayout = 0;
static int log_paraminput = 0;
+EXPORT wWinPix_t DlgSepLeft = 12;
+EXPORT wWinPix_t DlgSepRight = 12;
+EXPORT wWinPix_t DlgSepTop = 12;
+EXPORT wWinPix_t DlgSepBottom = 12;
+static wWinPix_t DlgSepMid = 18;
+static wWinPix_t DlgSepNarrow = 6;
+static wWinPix_t DlgSepWide = 12;
+static wWinPix_t DlgSepFrmLeft = 4;
+static wWinPix_t DlgSepFrmRight = 4;
+static wWinPix_t DlgSepFrmTop = 4;
+static wWinPix_t DlgSepFrmBottom = 4;
+
/*****************************************************************************
*
@@ -65,7 +76,7 @@ static int GetDigitStr( char ** cpp, long * numP, int * lenP )
getNumberError = N_("Unexpected End Of String");
return FALSE;
}
- while ( isspace((unsigned char)*cp) ) cp++;
+ while ( isspace((unsigned char)*cp) ) { cp++; }
*numP = strtol( cp, &cq, 10 );
if ( cp==cq ) {
*cpp = cp;
@@ -73,13 +84,14 @@ static int GetDigitStr( char ** cpp, long * numP, int * lenP )
return FALSE;
}
len = cq-cp;
- if ( lenP )
+ if ( lenP ) {
*lenP = (int)len;
+ }
if ( len > 9 ) {
getNumberError = N_("Overflow");
return FALSE;
}
- while ( isspace((unsigned char)*cq) ) cq++;
+ while ( isspace((unsigned char)*cq) ) { cq++; }
*cpp = cq;
return TRUE;
}
@@ -91,14 +103,15 @@ static int GetNumberStr( char ** cpp, FLOAT_T * numP, BOOL_T * hasFract )
char * cp = NULL;
struct lconv *lc;
- while ( isspace((unsigned char)**cpp) ) (*cpp)++;
+ while ( isspace((unsigned char)**cpp) ) { (*cpp)++; }
/* Find out the decimal separator of the current locale */
lc = localeconv();
if ( **cpp != lc->decimal_point[0]
- && !GetDigitStr( cpp, &n0, NULL ) )
+ && !GetDigitStr( cpp, &n0, NULL ) ) {
return FALSE;
+ }
if ( **cpp == lc->decimal_point[0] ) {
(*cpp)++;
if ( !isdigit((unsigned char)**cpp) ) {
@@ -106,22 +119,22 @@ static int GetNumberStr( char ** cpp, FLOAT_T * numP, BOOL_T * hasFract )
*numP = (FLOAT_T)n0;
return TRUE;
}
- if ( !GetDigitStr( cpp, &f1, &l1 ) ) return FALSE;
- for ( f2=1; l1>0; l1-- ) f2 *= 10;
+ if ( !GetDigitStr( cpp, &f1, &l1 ) ) { return FALSE; }
+ for ( f2=1; l1>0; l1-- ) { f2 *= 10; }
*numP = ((FLOAT_T)n0)+((FLOAT_T)f1)/((FLOAT_T)f2);
*hasFract = TRUE;
return TRUE; /* 999.999 */
}
if ( isdigit( (unsigned char)**cpp ) ) {
cp = *cpp;
- if ( !GetDigitStr( cpp, &f1, NULL ) ) return FALSE;
+ if ( !GetDigitStr( cpp, &f1, NULL ) ) { return FALSE; }
} else {
f1 = n0;
n0 = 0;
}
if ( **cpp == '/' ) {
(*cpp)++;
- if ( !GetDigitStr( cpp, &f2, &l1 ) ) return FALSE;
+ if ( !GetDigitStr( cpp, &f2, &l1 ) ) { return FALSE; }
if ( f2 == 0 ) {
(*cpp) -= l1;
getNumberError = N_("Divide by 0");
@@ -141,133 +154,134 @@ static int GetNumberStr( char ** cpp, FLOAT_T * numP, BOOL_T * hasFract )
}
return TRUE;
}
-//extern wIndex_t distanceFormatInx; // distanceFormatInx
static BOOL_T GetDistance(char ** cpp, FLOAT_T * distP)
{
- FLOAT_T n1, n2;
- BOOL_T neg = FALSE;
- BOOL_T hasFract;
- BOOL_T expectInch = FALSE;
- long distanceFormat;
-
- while (isspace((unsigned char)**cpp)) {
- (*cpp)++;
- }
-
- if ((*cpp)[0] == '\0') {
- *distP = 0.0;
- return TRUE;
- }
-
- if ((*cpp)[0] == '-') {
- neg = TRUE;
- (*cpp)++;
- }
-
- if (!GetNumberStr(cpp, &n1, &hasFract)) {
- return FALSE;
- }
-
- distanceFormat = GetDistanceFormat();
-
- if ((*cpp)[0] == '\0') { /* EOL */
- if (units==UNITS_METRIC) {
- n1 = n1/2.54;
-
- if ((distanceFormat & DISTFMT_FMT) == DISTFMT_FMT_MM) {
- n1 /= 10;
- }
-
- if ((distanceFormat & DISTFMT_FMT) == DISTFMT_FMT_M) {
- n1 *= 100;
- }
- }
-
- if (neg) {
- n1 = -n1;
- }
-
- *distP = n1;
- return TRUE;
- }
-
- if ((*cpp)[0] == '\'') {
- n1 *= 12.0;
- (*cpp) += 1;
- expectInch = !hasFract;
- } else if (tolower((unsigned char)(*cpp)[0]) == 'f' &&
- tolower((unsigned char)(*cpp)[1]) == 't') {
- n1 *= 12.0;
- (*cpp) += 2;
- expectInch = !hasFract;
- } else if (tolower((unsigned char)(*cpp)[0]) == 'c' &&
- tolower((unsigned char)(*cpp)[1]) == 'm') {
- n1 /= 2.54;
- (*cpp) += 2;
- } else if (tolower((unsigned char)(*cpp)[0]) == 'm' &&
- tolower((unsigned char)(*cpp)[1]) == 'm') {
- n1 /= 25.4;
- (*cpp) += 2;
- } else if (tolower((unsigned char)(*cpp)[0]) == 'm') {
- n1 *= 100.0/2.54;
- (*cpp) += 1;
- } else if ((*cpp)[0] == '"') {
- (*cpp) += 1;
- } else if (tolower((unsigned char)(*cpp)[0]) == 'i' &&
- tolower((unsigned char)(*cpp)[1]) == 'n') {
- (*cpp) += 2;
- } else {
- getNumberError = N_("Invalid Units Indicator");
- return FALSE;
- }
-
- while (isspace((unsigned char)**cpp)) {
- (*cpp)++;
- }
-
- if (expectInch && isdigit((unsigned char)**cpp)) {
- if (!GetNumberStr(cpp, &n2, &hasFract)) {
- return FALSE;
- }
-
- n1 += n2;
-
- if ((*cpp)[0] == '"') {
- (*cpp) += 1;
- } else if (tolower((unsigned char)(*cpp)[0]) == 'i' &&
- tolower((unsigned char)(*cpp)[1]) == 'n') {
- (*cpp) += 2;
- }
-
- while (isspace((unsigned char)**cpp)) {
- (*cpp)++;
- }
- }
-
- if (**cpp) {
- getNumberError = N_("Expected End Of String");
- return FALSE;
- }
-
- if (neg) {
- n1 = -n1;
- }
-
- *distP = n1;
- return TRUE;
+ FLOAT_T n1, n2;
+ BOOL_T neg = FALSE;
+ BOOL_T hasFract;
+ BOOL_T expectInch = FALSE;
+ long distanceFormat;
+
+ while (isspace((unsigned char)**cpp)) {
+ (*cpp)++;
+ }
+
+ if ((*cpp)[0] == '\0') {
+ *distP = 0.0;
+ return TRUE;
+ }
+
+ if ((*cpp)[0] == '-') {
+ neg = TRUE;
+ (*cpp)++;
+ }
+
+ if (!GetNumberStr(cpp, &n1, &hasFract)) {
+ return FALSE;
+ }
+
+ distanceFormat = GetDistanceFormat();
+
+ if ((*cpp)[0] == '\0') { /* EOL */
+ if (units==UNITS_METRIC) {
+ n1 = n1/2.54;
+
+ if ((distanceFormat & DISTFMT_FMT) == DISTFMT_FMT_MM) {
+ n1 /= 10;
+ }
+
+ if ((distanceFormat & DISTFMT_FMT) == DISTFMT_FMT_M) {
+ n1 *= 100;
+ }
+ }
+
+ if (neg) {
+ n1 = -n1;
+ }
+
+ *distP = n1;
+ return TRUE;
+ }
+
+ if ((*cpp)[0] == '\'') {
+ n1 *= 12.0;
+ (*cpp) += 1;
+ expectInch = !hasFract;
+ } else if (tolower((unsigned char)(*cpp)[0]) == 'f' &&
+ tolower((unsigned char)(*cpp)[1]) == 't') {
+ n1 *= 12.0;
+ (*cpp) += 2;
+ expectInch = !hasFract;
+ } else if (tolower((unsigned char)(*cpp)[0]) == 'c' &&
+ tolower((unsigned char)(*cpp)[1]) == 'm') {
+ n1 /= 2.54;
+ (*cpp) += 2;
+ } else if (tolower((unsigned char)(*cpp)[0]) == 'm' &&
+ tolower((unsigned char)(*cpp)[1]) == 'm') {
+ n1 /= 25.4;
+ (*cpp) += 2;
+ } else if (tolower((unsigned char)(*cpp)[0]) == 'm') {
+ n1 *= 100.0/2.54;
+ (*cpp) += 1;
+ } else if ((*cpp)[0] == '"') {
+ (*cpp) += 1;
+ } else if (tolower((unsigned char)(*cpp)[0]) == 'i' &&
+ tolower((unsigned char)(*cpp)[1]) == 'n') {
+ (*cpp) += 2;
+ } else {
+ getNumberError = N_("Invalid Units Indicator");
+ return FALSE;
+ }
+
+ while (isspace((unsigned char)**cpp)) {
+ (*cpp)++;
+ }
+
+ if (expectInch && isdigit((unsigned char)**cpp)) {
+ if (!GetNumberStr(cpp, &n2, &hasFract)) {
+ return FALSE;
+ }
+
+ n1 += n2;
+
+ if ((*cpp)[0] == '"') {
+ (*cpp) += 1;
+ } else if (tolower((unsigned char)(*cpp)[0]) == 'i' &&
+ tolower((unsigned char)(*cpp)[1]) == 'n') {
+ (*cpp) += 2;
+ }
+
+ while (isspace((unsigned char)**cpp)) {
+ (*cpp)++;
+ }
+ }
+
+ if (**cpp) {
+ getNumberError = N_("Expected End Of String");
+ return FALSE;
+ }
+
+ if (neg) {
+ n1 = -n1;
+ }
+
+ *distP = n1;
+ return TRUE;
}
EXPORT FLOAT_T DecodeFloat(
- wString_p strCtrl,
- BOOL_T * validP )
+ wString_p strCtrl,
+ BOOL_T * validP )
{
FLOAT_T valF;
- const char *cp0, *cp1;
- char *cp2;
- cp0 = cp1 = wStringGetValue( strCtrl );
- while (isspace((unsigned char)*cp1)) cp1++;
+ const char *cp1;
+// const char *cp0;
+ char *cp2;
+// cp0 = cp1 = wStringGetValue( strCtrl );
+ cp1 = wStringGetValue( strCtrl );
+ while (isspace((unsigned char)*cp1)) { cp1++; }
if ( *cp1 ) {
valF = strtod( cp1, &cp2 );
if ( *cp2 != 0 ) {
@@ -286,57 +300,57 @@ EXPORT FLOAT_T DecodeFloat(
FLOAT_T DecodeDistance(
- wString_p strCtrl,
- BOOL_T * validP)
+ wString_p strCtrl,
+ BOOL_T * validP)
{
- FLOAT_T valF;
- char *cp0, *cp1, *cpN, c1;
- // CAST_AWAY_CONST: we temporarily replace *cpN with a NULL and later restore
- cp0 = cp1 = cpN = CAST_AWAY_CONST wStringGetValue(strCtrl);
- cpN += strlen(cpN)-1;
-
- while (cpN > cp1 && isspace((unsigned char)*cpN)) {
- cpN--;
- }
-
- c1 = *cpN;
-
- switch (c1) {
- case '=':
- case 's':
- case 'S':
- case 'p':
- case 'P':
- *cpN = '\0';
- break;
-
- default:
- cpN = NULL;
- }
-
- *validP = (GetDistance(&cp1, &valF));
-
- if (cpN) {
- *cpN = c1;
- }
-
- if (*validP) {
- if (c1 == 's' || c1 == 'S') {
- valF *= curScaleRatio;
- } else if (c1 == 'p' || c1 == 'P') {
- valF /= curScaleRatio;
- }
-
- if (cpN) {
- wStringSetValue(strCtrl, FormatDistance(valF));
- }
- } else {
- snprintf(decodeErrorStr, sizeof(decodeErrorStr), "%s @ %s", _(getNumberError),
- *cp1?cp1:_("End Of String"));
- valF = 0.0;
- }
-
- return valF;
+ FLOAT_T valF;
+ char *cp1, *cpN, c1;
+ // CAST_AWAY_CONST: we temporarily replace *cpN with a NULL and later restore
+ cp1 = cpN = CAST_AWAY_CONST wStringGetValue(strCtrl);
+ cpN += strlen(cpN)-1;
+
+ while (cpN > cp1 && isspace((unsigned char)*cpN)) {
+ cpN--;
+ }
+
+ c1 = *cpN;
+
+ switch (c1) {
+ case '=':
+ case 's':
+ case 'S':
+ case 'p':
+ case 'P':
+ *cpN = '\0';
+ break;
+
+ default:
+ cpN = NULL;
+ }
+
+ *validP = (GetDistance(&cp1, &valF));
+
+ if (cpN) {
+ *cpN = c1;
+ }
+
+ if (*validP) {
+ if (c1 == 's' || c1 == 'S') {
+ valF *= curScaleRatio;
+ } else if (c1 == 'p' || c1 == 'P') {
+ valF /= curScaleRatio;
+ }
+
+ if (cpN) {
+ wStringSetValue(strCtrl, FormatDistance(valF));
+ }
+ } else {
+ snprintf(decodeErrorStr, sizeof(decodeErrorStr), "%s @ %s", _(getNumberError),
+ *cp1?cp1:_("End Of String"));
+ valF = 0.0;
+ }
+
+ return valF;
}
@@ -346,32 +360,34 @@ static char formatStrings[N_STRING+1][80]; //Add safety
EXPORT char * FormatLong(
- long valL )
+ long valL )
{
- if ( ++formatStringInx >= N_STRING )
+ if ( ++formatStringInx >= N_STRING ) {
formatStringInx = 0;
+ }
sprintf( formatStrings[formatStringInx], "%ld", valL );
return formatStrings[formatStringInx];
}
EXPORT char * FormatFloat(
- FLOAT_T valF )
+ FLOAT_T valF )
{
- if ( ++formatStringInx >= N_STRING )
+ if ( ++formatStringInx >= N_STRING ) {
formatStringInx = 0;
+ }
sprintf( formatStrings[formatStringInx], "%0.3f", valF );
return formatStrings[formatStringInx];
}
static void FormatFraction(
- char ** cpp,
- BOOL_T printZero,
- int digits,
- BOOL_T rational,
- FLOAT_T valF,
- char * unitFmt )
+ char ** cpp,
+ BOOL_T printZero,
+ int digits,
+ BOOL_T rational,
+ FLOAT_T valF,
+ char * unitFmt )
{
char * cp = *cpp;
long integ;
@@ -414,16 +430,17 @@ static void FormatFraction(
EXPORT char * FormatDistanceEx(
- FLOAT_T valF,
- long distanceFormat )
+ FLOAT_T valF,
+ long distanceFormat )
{
char * cp;
int digits;
long feet;
char * metricInd;
- if ( ++formatStringInx >= N_STRING )
+ if ( ++formatStringInx >= N_STRING ) {
formatStringInx = 0;
+ }
cp = formatStrings[formatStringInx];
digits = (int)(distanceFormat&DISTFMT_DECS);
valF = PutDim(valF);
@@ -432,18 +449,21 @@ EXPORT char * FormatDistanceEx(
valF = -valF;
}
if ( (distanceFormat&DISTFMT_FMT) == DISTFMT_FMT_NONE ) {
- FormatFraction( &cp, FALSE, digits, (distanceFormat&DISTFMT_FRACT) == DISTFMT_FRACT_FRC, valF, "" );
+ FormatFraction( &cp, FALSE, digits,
+ (distanceFormat&DISTFMT_FRACT) == DISTFMT_FRACT_FRC, valF, "" );
return formatStrings[formatStringInx];
} else if ( units == UNITS_ENGLISH ) {
feet = (long)(floor)(valF/12.0);
valF -= feet*12.0;
if ( feet != 0 ) {
- sprintf( cp, "%ld%s", feet, (distanceFormat&DISTFMT_FMT)==DISTFMT_FMT_SHRT?"' ":"ft " );
+ sprintf( cp, "%ld%s", feet,
+ (distanceFormat&DISTFMT_FMT)==DISTFMT_FMT_SHRT?"' ":"ft " );
cp += strlen(cp);
}
if ( feet==0 || valF != 0 ) {
- FormatFraction( &cp, feet==0, digits, (distanceFormat&DISTFMT_FRACT) == DISTFMT_FRACT_FRC, valF,
- (distanceFormat&DISTFMT_FMT)==DISTFMT_FMT_SHRT?"\"":"in" );
+ FormatFraction( &cp, feet==0, digits,
+ (distanceFormat&DISTFMT_FRACT) == DISTFMT_FRACT_FRC, valF,
+ (distanceFormat&DISTFMT_FMT)==DISTFMT_FMT_SHRT?"\"":"in" );
}
} else {
if ( (distanceFormat&DISTFMT_FMT)==DISTFMT_FMT_M ) {
@@ -455,20 +475,21 @@ EXPORT char * FormatDistanceEx(
} else {
metricInd = "cm";
}
- FormatFraction( &cp, FALSE, digits, (distanceFormat&DISTFMT_FRACT) == DISTFMT_FRACT_FRC, valF, metricInd );
+ FormatFraction( &cp, FALSE, digits,
+ (distanceFormat&DISTFMT_FRACT) == DISTFMT_FRACT_FRC, valF, metricInd );
}
return formatStrings[formatStringInx];
}
EXPORT char * FormatDistance(
- FLOAT_T valF )
+ FLOAT_T valF )
{
return FormatDistanceEx( valF, GetDistanceFormat() );
}
EXPORT char * FormatSmallDistance(
- FLOAT_T valF )
+ FLOAT_T valF )
{
long format = GetDistanceFormat();
format &= ~(DISTFMT_FRACT_FRC|DISTFMT_DECS);
@@ -486,122 +507,131 @@ static wBool_t ParamIntegerRangeCheck( paramData_p p, long valL );
static wBool_t ParamFloatRangeCheck( paramData_p p, FLOAT_T valF );
EXPORT void ParamControlActive(
- paramGroup_p pg,
- int inx,
- BOOL_T active )
+ paramGroup_p pg,
+ int inx,
+ BOOL_T active )
{
paramData_p p = &pg->paramPtr[inx];
- if ( p->control )
+ if ( p->control ) {
wControlActive( p->control, active );
+ }
}
EXPORT void ParamLoadMessage(
- paramGroup_p pg,
- int inx,
- char * message )
+ paramGroup_p pg,
+ int inx,
+ char * message )
{
paramData_p p = &pg->paramPtr[inx];
if ( p->control ) {
- if ( p->type == PD_MESSAGE )
+ if ( p->type == PD_MESSAGE ) {
wMessageSetValue( (wMessage_p)p->control, message );
- else if ( p->type == PD_STRING )
+ } else if ( p->type == PD_STRING ) {
wStringSetValue( (wString_p)p->control, message );
- else
- AbortProg( "paramLoadMessage: not a PD_MESSAGE or PD_STRING" );
+ } else {
+ CHECKMSG( FALSE, ("p->tytpe %d", (int)p->type) );
+ }
}
}
EXPORT void ParamLoadControl(
- paramGroup_p pg,
- int inx )
+ paramGroup_p pg,
+ int inx )
{
paramData_p p = &pg->paramPtr[inx];
FLOAT_T tmpR;
char * valS;
- if ( (p->option&PDO_DLGIGNORE) != 0 ) {
- p->bInvalid = FALSE;
+ if ( (p->option&PDO_DLGIGNORE) != 0 ) {
+ p->bInvalid = FALSE;
+ return;
+ }
+ if (p->control == NULL || p->valueP == NULL) {
+ return;
+ }
+ switch ( p->type ) {
+ case PD_LONG:
+ wStringSetValue( (wString_p)p->control, FormatLong( *(long*)p->valueP ) );
+ if ( !ParamIntegerRangeCheck( p, *(long*)p->valueP ) ) {
return;
}
- if (p->control == NULL || p->valueP == NULL)
- return;
- switch ( p->type ) {
- case PD_LONG:
- wStringSetValue( (wString_p)p->control, FormatLong( *(long*)p->valueP ) );
- if ( !ParamIntegerRangeCheck( p, *(long*)p->valueP ) )
- return;
- p->oldD.l = *(long*)p->valueP;
- break;
- case PD_RADIO:
- wRadioSetValue( (wChoice_p)p->control, *(long*)p->valueP );
- p->oldD.l = *(long*)p->valueP;
- break;
- case PD_TOGGLE:
- wToggleSetValue( (wChoice_p)p->control, *(long*)p->valueP );
- p->oldD.l = *(long*)p->valueP;
- break;
- case PD_LIST:
- case PD_DROPLIST:
- case PD_COMBOLIST:
- wListSetIndex( (wList_p)p->control, *(wIndex_t*)p->valueP );
- p->oldD.l = *(wIndex_t*)p->valueP;
- break;
- case PD_COLORLIST:
- wColorSelectButtonSetColor( (wButton_p)p->control, *(wDrawColor*)p->valueP );
- p->oldD.dc = *(wDrawColor*)p->valueP;
- break;
- case PD_FLOAT:
- tmpR = *(FLOAT_T*)p->valueP;
- if (p->option&PDO_DIM) {
- if (p->option&PDO_SMALLDIM)
- valS = FormatSmallDistance( tmpR );
- else
- valS = FormatDistance( tmpR );
+ p->oldD.l = *(long*)p->valueP;
+ break;
+ case PD_RADIO:
+ wRadioSetValue( (wChoice_p)p->control, *(long*)p->valueP );
+ p->oldD.l = *(long*)p->valueP;
+ break;
+ case PD_TOGGLE:
+ wToggleSetValue( (wChoice_p)p->control, *(long*)p->valueP );
+ p->oldD.l = *(long*)p->valueP;
+ break;
+ case PD_LIST:
+ case PD_DROPLIST:
+ case PD_COMBOLIST:
+ wListSetIndex( (wList_p)p->control, *(wIndex_t*)p->valueP );
+ p->oldD.l = *(wIndex_t*)p->valueP;
+ break;
+ case PD_COLORLIST:
+ wColorSelectButtonSetColor( (wButton_p)p->control, *(wDrawColor*)p->valueP );
+ p->oldD.dc = *(wDrawColor*)p->valueP;
+ break;
+ case PD_FLOAT:
+ tmpR = *(FLOAT_T*)p->valueP;
+ if (p->option&PDO_DIM) {
+ if (p->option&PDO_SMALLDIM) {
+ valS = FormatSmallDistance( tmpR );
} else {
- if (p->option&PDO_ANGLE)
- tmpR = NormalizeAngle( (angleSystem==ANGLE_POLAR)?tmpR:-tmpR );
- valS = FormatFloat( tmpR );
+ valS = FormatDistance( tmpR );
}
- wStringSetValue( (wString_p)p->control, valS );
- if ( !ParamFloatRangeCheck( p, tmpR ) )
- break;
- p->oldD.f = tmpR;
- break;
- case PD_STRING:
- if (p->oldD.s)
- MyFree( p->oldD.s );
- ASSERT( p->max_string > 0 );
- if (p->max_string) {
- p->oldD.s = MyMalloc(p->max_string);
- strncpy(p->oldD.s, (char*)p->valueP, p->max_string-1);
- *(p->oldD.s + (uint32_t)p->max_string - 1) = '\0';
- wStringSetValue((wString_p)p->control, (char*)p->oldD.s);
- }
- else {
- p->oldD.s = MyStrdup((char *)p->valueP);
- wStringSetValue((wString_p)p->control, (char*)p->valueP);
- }
- if ( (p->option & PDO_NOTBLANK) && strlen( p->oldD.s ) == 0 ) {
- ParamHilite( p->group->win, p->control, TRUE );
- p->bInvalid = TRUE;
+ } else {
+ if (p->option&PDO_ANGLE) {
+ tmpR = NormalizeAngle( (angleSystem==ANGLE_POLAR)?tmpR:-tmpR );
}
+ valS = FormatFloat( tmpR );
+ }
+ wStringSetValue( (wString_p)p->control, valS );
+ if ( !ParamFloatRangeCheck( p, tmpR ) ) {
break;
- case PD_MESSAGE:
- wMessageSetValue( (wMessage_p)p->control, _((char*)p->valueP) );
- break;
- case PD_TEXT:
- wTextClear( (wText_p)p->control );
- wTextAppend( (wText_p)p->control, (char*)p->valueP );
- break;
- case PD_BUTTON:
- case PD_DRAW:
- case PD_MENU:
- case PD_MENUITEM:
- case PD_BITMAP:
- break;
}
+ p->oldD.f = tmpR;
+ break;
+ case PD_STRING:
+ if (p->oldD.s) {
+ MyFree( p->oldD.s );
+ }
+ CHECK( p->max_string > 0 );
+ if (p->max_string) {
+ p->oldD.s = MyMalloc(p->max_string);
+ strncpy(p->oldD.s, (char*)p->valueP, p->max_string-1);
+ *(p->oldD.s + (uint32_t)p->max_string - 1) = '\0';
+ wStringSetValue((wString_p)p->control, (char*)p->oldD.s);
+ } else {
+ p->oldD.s = MyStrdup((char *)p->valueP);
+ wStringSetValue((wString_p)p->control, (char*)p->valueP);
+ }
+ if ( (p->option & PDO_NOTBLANK) && strlen( p->oldD.s ) == 0 ) {
+ ParamHilite( p->group->win, p->control, TRUE );
+ p->bInvalid = TRUE;
+ } else {
+ p->bInvalid = FALSE;
+ }
+ break;
+ case PD_MESSAGE:
+ wMessageSetValue( (wMessage_p)p->control, _((char*)p->valueP) );
+ break;
+ case PD_TEXT:
+ wTextClear( (wText_p)p->control );
+ wTextAppend( (wText_p)p->control, (char*)p->valueP );
+ break;
+ case PD_BUTTON:
+ case PD_DRAW:
+ case PD_MENU:
+ case PD_MENUITEM:
+ case PD_BITMAP:
+ break;
+ }
}
@@ -609,17 +639,18 @@ EXPORT void ParamLoadControl(
* \param IN pointer to parameter group to be loaded
*/
EXPORT void ParamLoadControls(
- paramGroup_p pg )
+ paramGroup_p pg )
{
int inx;
LOG( log_paraminput, 1, ( "ParamLoadControls( %s )\n", pg->nameStr ) );
- for ( inx=0; inx<pg->paramCnt; inx++ )
+ for ( inx=0; inx<pg->paramCnt; inx++ ) {
ParamLoadControl( pg, inx );
+ }
}
EXPORT long ParamUpdate(
- paramGroup_p pg )
+ paramGroup_p pg )
{
long longV;
FLOAT_T floatV;
@@ -631,24 +662,30 @@ EXPORT long ParamUpdate(
BOOL_T valid;
for ( p=pg->paramPtr,inx=0; p<&pg->paramPtr[pg->paramCnt]; p++,inx++ ) {
- if ( (p->option&PDO_DLGIGNORE) != 0 )
+ if ( (p->option&PDO_DLGIGNORE) != 0 ) {
continue;
- if ( p->control == NULL )
+ }
+ if ( p->control == NULL ) {
continue;
- if ( p->bInvalid == TRUE )
+ }
+ if ( p->bInvalid == TRUE ) {
break;
+ }
switch ( p->type ) {
case PD_LONG:
stringV = wStringGetValue( (wString_p)p->control );
longV = atol( stringV );
- if ( ! ParamIntegerRangeCheck( p, longV ) )
+ if ( ! ParamIntegerRangeCheck( p, longV ) ) {
break;
+ }
if (longV != p->oldD.l) {
p->oldD.l = longV;
- if ( p->valueP)
+ if ( p->valueP) {
*(long*)p->valueP = longV;
- if ( (p->option&PDO_NOUPDACT)==0 && pg->changeProc)
- pg->changeProc( pg, inx, &longV );
+ }
+ if ( (p->option&PDO_NOUPDACT)==0 && pg->changeProc) {
+ pg->changeProc( pg, inx, &longV );
+ }
change |= (1L<<inx);
}
break;
@@ -656,10 +693,12 @@ EXPORT long ParamUpdate(
longV = wRadioGetValue( (wChoice_p)p->control );
if (longV != p->oldD.l) {
p->oldD.l = longV;
- if ( p->valueP)
+ if ( p->valueP) {
*(long*)p->valueP = longV;
- if ( (p->option&PDO_NOUPDACT)==0 && pg->changeProc)
- pg->changeProc( pg, inx, &longV );
+ }
+ if ( (p->option&PDO_NOUPDACT)==0 && pg->changeProc) {
+ pg->changeProc( pg, inx, &longV );
+ }
change |= (1L<<inx);
}
break;
@@ -667,10 +706,12 @@ EXPORT long ParamUpdate(
longV = wToggleGetValue( (wChoice_p)p->control );
if (longV != p->oldD.l) {
p->oldD.l = longV;
- if ( p->valueP)
+ if ( p->valueP) {
*(long*)p->valueP = longV;
- if ( (p->option&PDO_NOUPDACT)==0 && pg->changeProc)
- pg->changeProc( pg, inx, &longV );
+ }
+ if ( (p->option&PDO_NOUPDACT)==0 && pg->changeProc) {
+ pg->changeProc( pg, inx, &longV );
+ }
change |= (1L<<inx);
}
break;
@@ -680,10 +721,12 @@ EXPORT long ParamUpdate(
longV = wListGetIndex( (wList_p)p->control );
if (longV != p->oldD.l) {
p->oldD.l = longV;
- if ( p->valueP)
+ if ( p->valueP) {
*(wIndex_t*)p->valueP = (wIndex_t)longV;
- if ( (p->option&PDO_NOUPDACT)==0 && pg->changeProc)
- pg->changeProc( pg, inx, &longV );
+ }
+ if ( (p->option&PDO_NOUPDACT)==0 && pg->changeProc) {
+ pg->changeProc( pg, inx, &longV );
+ }
change |= (1L<<inx);
}
break;
@@ -691,8 +734,9 @@ EXPORT long ParamUpdate(
dc = wColorSelectButtonGetColor( (wButton_p)p->control );
if (dc != p->oldD.dc) {
p->oldD.dc = dc;
- if ( p->valueP)
+ if ( p->valueP) {
*(wDrawColor*)p->valueP = dc;
+ }
if ( (p->option&PDO_NOUPDACT)==0 && pg->changeProc) {
pg->changeProc( pg, inx, &longV ); /* COLORNOP */
}
@@ -704,19 +748,24 @@ EXPORT long ParamUpdate(
floatV = DecodeDistance( (wString_p)p->control, &valid );
} else {
floatV = DecodeFloat( (wString_p)p->control, &valid );
- if (valid && (p->option & PDO_ANGLE) )
+ if (valid && (p->option & PDO_ANGLE) ) {
floatV = NormalizeAngle( (angleSystem==ANGLE_POLAR)?floatV:-floatV );
+ }
}
- if ( !valid )
+ if ( !valid ) {
break;
- if ( ! ParamFloatRangeCheck( p, floatV ) )
+ }
+ if ( ! ParamFloatRangeCheck( p, floatV ) ) {
break;
+ }
if (floatV != p->oldD.f) {
p->oldD.f = floatV;
- if ( p->valueP)
+ if ( p->valueP) {
*(FLOAT_T*)p->valueP = floatV;
- if ( (p->option&PDO_NOUPDACT)==0 && pg->changeProc)
- pg->changeProc( pg, inx, &floatV );
+ }
+ if ( (p->option&PDO_NOUPDACT)==0 && pg->changeProc) {
+ pg->changeProc( pg, inx, &floatV );
+ }
change |= (1L<<inx);
}
break;
@@ -727,8 +776,9 @@ EXPORT long ParamUpdate(
break;
}
if ( strcmp( stringV, p->oldD.s ) != 0 ) {
- if (p->oldD.s)
+ if (p->oldD.s) {
MyFree( p->oldD.s );
+ }
p->oldD.s = MyStrdup( stringV );
if ( p->valueP ) {
strncpy((char*)p->valueP, stringV, p->max_string-1);
@@ -740,7 +790,9 @@ EXPORT long ParamUpdate(
if ( (p->option&PDO_NOUPDACT)==0 && pg->changeProc)
// CAST_AWAY_CONST: param 3 should be const but its a big change
- pg->changeProc( pg, inx, CAST_AWAY_CONST stringV );
+ {
+ pg->changeProc( pg, inx, CAST_AWAY_CONST stringV );
+ }
change |= (1L<<inx);
}
break;
@@ -755,113 +807,114 @@ EXPORT long ParamUpdate(
}
}
#ifdef PGPROC
- if (pg->proc)
+ if (pg->proc) {
pg->proc( PGACT_UPDATE, change );
+ }
#endif
return change;
}
void ParamLoadData(
- paramGroup_p pg)
+ paramGroup_p pg)
{
- FLOAT_T floatV;
- const char * stringV;
- paramData_p p;
- BOOL_T valid;
- BOOL_T inRange;
-
- for (p=pg->paramPtr; p<&pg->paramPtr[pg->paramCnt]; p++) {
- if ((p->option&PDO_DLGIGNORE) != 0) {
- continue;
- }
-
- if (p->control == NULL || p->valueP == NULL) {
- continue;
- }
-
- switch (p->type) {
- long longV;
-
- case PD_LONG:
- longV = atol(wStringGetValue((wString_p)p->control));
-
- if (p->winData) {
- inRange = (longV <= ((paramIntegerRange_t *)p->winData)->high) &&
- (longV >= ((paramIntegerRange_t *)p->winData)->low);
- } else {
- inRange = TRUE;
- }
-
- if (inRange) {
- *(long*)p->valueP = longV;
- }
-
- break;
-
- case PD_RADIO:
- *(long*)p->valueP = wRadioGetValue((wChoice_p)p->control);
- break;
-
- case PD_TOGGLE:
- *(long*)p->valueP = wToggleGetValue((wChoice_p)p->control);
- break;
-
- case PD_LIST:
- case PD_DROPLIST:
- case PD_COMBOLIST:
- *(wIndex_t*)p->valueP = wListGetIndex((wList_p)p->control);
- break;
-
- case PD_COLORLIST:
- *(wDrawColor*)p->valueP = wColorSelectButtonGetColor((wButton_p)p->control);
- break;
-
- case PD_FLOAT:
- if (p->option & PDO_DIM) {
- floatV = DecodeDistance((wString_p)p->control, &valid);
- } else {
- floatV = DecodeFloat((wString_p)p->control, &valid);
-
- if (valid && (p->option & PDO_ANGLE)) {
- floatV = NormalizeAngle((angleSystem==ANGLE_POLAR)?floatV:-floatV);
- }
- }
-
- if (p->winData) {
- inRange = (floatV <= ((paramFloatRange_t *)p->winData)->high) &&
- (floatV >= ((paramFloatRange_t *)p->winData)->low);
- } else {
- inRange = TRUE;
- }
-
- if (valid && inRange) {
- *(FLOAT_T*)p->valueP = floatV;
- }
-
- break;
-
- case PD_STRING:
- stringV = wStringGetValue((wString_p)p->control);
- strcpy((char*)p->valueP, stringV);
- break;
-
- case PD_MESSAGE:
- case PD_BUTTON:
- case PD_DRAW:
- case PD_TEXT:
- case PD_MENU:
- case PD_MENUITEM:
- case PD_BITMAP:
- break;
- }
- }
+ FLOAT_T floatV;
+ const char * stringV;
+ paramData_p p;
+ BOOL_T valid;
+ BOOL_T inRange;
+
+ for (p=pg->paramPtr; p<&pg->paramPtr[pg->paramCnt]; p++) {
+ if ((p->option&PDO_DLGIGNORE) != 0) {
+ continue;
+ }
+
+ if (p->control == NULL || p->valueP == NULL) {
+ continue;
+ }
+
+ switch (p->type) {
+ long longV;
+
+ case PD_LONG:
+ longV = atol(wStringGetValue((wString_p)p->control));
+
+ if (p->winData) {
+ inRange = (longV <= ((paramIntegerRange_t *)p->winData)->high) &&
+ (longV >= ((paramIntegerRange_t *)p->winData)->low);
+ } else {
+ inRange = TRUE;
+ }
+
+ if (inRange) {
+ *(long*)p->valueP = longV;
+ }
+
+ break;
+
+ case PD_RADIO:
+ *(long*)p->valueP = wRadioGetValue((wChoice_p)p->control);
+ break;
+
+ case PD_TOGGLE:
+ *(long*)p->valueP = wToggleGetValue((wChoice_p)p->control);
+ break;
+
+ case PD_LIST:
+ case PD_DROPLIST:
+ case PD_COMBOLIST:
+ *(wIndex_t*)p->valueP = wListGetIndex((wList_p)p->control);
+ break;
+
+ case PD_COLORLIST:
+ *(wDrawColor*)p->valueP = wColorSelectButtonGetColor((wButton_p)p->control);
+ break;
+
+ case PD_FLOAT:
+ if (p->option & PDO_DIM) {
+ floatV = DecodeDistance((wString_p)p->control, &valid);
+ } else {
+ floatV = DecodeFloat((wString_p)p->control, &valid);
+
+ if (valid && (p->option & PDO_ANGLE)) {
+ floatV = NormalizeAngle((angleSystem==ANGLE_POLAR)?floatV:-floatV);
+ }
+ }
+
+ if (p->winData) {
+ inRange = (floatV <= ((paramFloatRange_t *)p->winData)->high) &&
+ (floatV >= ((paramFloatRange_t *)p->winData)->low);
+ } else {
+ inRange = TRUE;
+ }
+
+ if (valid && inRange) {
+ *(FLOAT_T*)p->valueP = floatV;
+ }
+
+ break;
+
+ case PD_STRING:
+ stringV = wStringGetValue((wString_p)p->control);
+ strcpy((char*)p->valueP, stringV);
+ break;
+
+ case PD_MESSAGE:
+ case PD_BUTTON:
+ case PD_DRAW:
+ case PD_TEXT:
+ case PD_MENU:
+ case PD_MENUITEM:
+ case PD_BITMAP:
+ break;
+ }
+ }
}
static long ParamIntRestore(
- paramGroup_p pg,
- int class )
+ paramGroup_p pg,
+ int class )
{
long change = 0;
int inx;
@@ -872,15 +925,17 @@ static long ParamIntRestore(
for ( p=pg->paramPtr,inx=0; p<&pg->paramPtr[pg->paramCnt]; p++,inx++ ) {
oldP = (class==0)?&p->oldD:&p->demoD;
- if ( (p->option&PDO_DLGIGNORE) != 0 )
+ if ( (p->option&PDO_DLGIGNORE) != 0 ) {
continue;
- if (p->valueP == NULL)
+ }
+ if (p->valueP == NULL) {
continue;
+ }
switch ( p->type ) {
case PD_LONG:
if ( *(long*)p->valueP != oldP->l ) {
/*if ((p->option&PDO_NORSTUPD)==0)*/
- *(long*)p->valueP = oldP->l;
+ *(long*)p->valueP = oldP->l;
if (p->control) {
wStringSetValue( (wString_p)p->control, FormatLong( oldP->l ) );
}
@@ -890,18 +945,20 @@ static long ParamIntRestore(
case PD_RADIO:
if ( *(long*)p->valueP != oldP->l ) {
/*if ((p->option&PDO_NORSTUPD)==0)*/
- *(long*)p->valueP = oldP->l;
- if (p->control)
+ *(long*)p->valueP = oldP->l;
+ if (p->control) {
wRadioSetValue( (wChoice_p)p->control, oldP->l );
+ }
change |= (1L<<inx);
}
break;
case PD_TOGGLE:
if ( *(long*)p->valueP != oldP->l ) {
/*if ((p->option&PDO_NORSTUPD)==0)*/
- *(long*)p->valueP = oldP->l;
- if (p->control)
+ *(long*)p->valueP = oldP->l;
+ if (p->control) {
wToggleSetValue( (wChoice_p)p->control, oldP->l );
+ }
change |= (1L<<inx);
}
break;
@@ -910,35 +967,40 @@ static long ParamIntRestore(
case PD_COMBOLIST:
if ( *(wIndex_t*)p->valueP != (wIndex_t)oldP->l ) {
/*if ((p->option&PDO_NORSTUPD)==0)*/
- *(wIndex_t*)p->valueP = (wIndex_t)oldP->l;
- if (p->control)
+ *(wIndex_t*)p->valueP = (wIndex_t)oldP->l;
+ if (p->control) {
wListSetIndex( (wList_p)p->control, (wIndex_t)oldP->l );
+ }
change |= (1L<<inx);
}
break;
case PD_COLORLIST:
if ( *(wDrawColor*)p->valueP != oldP->dc ) {
/*if ((p->option&PDO_NORSTUPD)==0)*/
- *(wDrawColor*)p->valueP = oldP->dc;
- if (p->control)
- wColorSelectButtonSetColor( (wButton_p)p->control, oldP->dc ); /* COLORNOP */
+ *(wDrawColor*)p->valueP = oldP->dc;
+ if (p->control) {
+ wColorSelectButtonSetColor( (wButton_p)p->control,
+ oldP->dc ); /* COLORNOP */
+ }
change |= (1L<<inx);
}
break;
case PD_FLOAT:
if ( *(FLOAT_T*)p->valueP != oldP->f ) {
/*if ((p->option&PDO_NORSTUPD)==0)*/
- *(FLOAT_T*)p->valueP = oldP->f;
+ *(FLOAT_T*)p->valueP = oldP->f;
if (p->control) {
valR = oldP->f;
if (p->option & PDO_DIM) {
- if (p->option & PDO_SMALLDIM)
+ if (p->option & PDO_SMALLDIM) {
valS = FormatSmallDistance( valR );
- else
+ } else {
valS = FormatDistance( valR );
+ }
} else {
- if (p->option & PDO_ANGLE)
+ if (p->option & PDO_ANGLE) {
valR = NormalizeAngle( (angleSystem==ANGLE_POLAR)?valR:-valR );
+ }
valS = FormatFloat( valR );
}
wStringSetValue( (wString_p)p->control, valS );
@@ -950,8 +1012,9 @@ static long ParamIntRestore(
if ( oldP->s && strcmp((char*)p->valueP,oldP->s) != 0 ) {
((char*)p->valueP)[0] = '\0';
strncat((char*)p->valueP,oldP->s,p->max_string-1);
- if (p->control)
+ if (p->control) {
wStringSetValue( (wString_p)p->control, (char*)p->valueP );
+ }
change |= (1L<<inx);
}
break;
@@ -966,16 +1029,17 @@ static long ParamIntRestore(
}
}
#ifdef PGPROC
- if (pg->proc)
+ if (pg->proc) {
pg->proc( PGACT_RESTORE, change );
+ }
#endif
return change;
}
static void ParamIntSave(
- paramGroup_p pg,
- int class )
+ paramGroup_p pg,
+ int class )
{
paramData_p p;
paramOldData_t * oldP;
@@ -1001,8 +1065,9 @@ static void ParamIntSave(
oldP->f = *(FLOAT_T*)p->valueP;
break;
case PD_STRING:
- if (oldP->s)
+ if (oldP->s) {
MyFree(oldP->s);
+ }
oldP->s = MyStrdup( (char*)p->valueP );
break;
case PD_MESSAGE:
@@ -1052,21 +1117,23 @@ EXPORT void ParamRegister( paramGroup_p pg )
char prefName1[STR_SHORT_SIZE];
const char *prefSect2, *prefName2;
- if (!paramGroups_init) ParamInit();
+ if (!paramGroups_init) { ParamInit(); }
DYNARR_APPEND( paramGroup_p, paramGroups_da, 10 );
paramGroups(paramGroups_da.cnt-1) = pg;
int i;
for ( i=0, p=pg->paramPtr; i<(pg->paramCnt); p++, i++ ) {
p->group = pg;
- if ( p->nameStr == NULL )
+ if ( p->nameStr == NULL ) {
continue;
+ }
snprintf( prefName1, sizeof(prefName1), "%s-%s", pg->nameStr, p->nameStr );
if ( p->type != PD_MENUITEM ) {
(void)GetBalloonHelpStr( prefName1 );
}
- if (p->valueP == NULL || (p->option&PDO_NOPREF) != 0)
+ if (p->valueP == NULL || (p->option&PDO_NOPREF) != 0) {
continue;
+ }
prefSect2 = PREFSECT;
prefName2 = prefName1;
if ( (p->option&PDO_MISC) ) {
@@ -1103,48 +1170,58 @@ EXPORT void ParamRegister( paramGroup_p pg )
case PD_LONG:
case PD_RADIO:
case PD_TOGGLE:
- if ( !wPrefGetInteger( PREFSECT, prefName1, p->valueP, *(long*)p->valueP ))
+ if ( !wPrefGetInteger( PREFSECT, prefName1, p->valueP, *(long*)p->valueP )) {
wPrefGetInteger( prefSect2, prefName2, p->valueP, *(long*)p->valueP );
+ }
break;
case PD_LIST:
case PD_DROPLIST:
case PD_COMBOLIST:
if ( (p->option&PDO_LISTINDEX) ) {
- if (!wPrefGetInteger( PREFSECT, prefName1, &valL, *(wIndex_t*)p->valueP ))
+ if (!wPrefGetInteger( PREFSECT, prefName1, &valL, *(wIndex_t*)p->valueP )) {
wPrefGetInteger( prefSect2, prefName2, &valL, valL );
- if ( p->control )
+ }
+ if ( p->control ) {
wListSetIndex( (wList_p)p->control, (wIndex_t)valL );
+ }
*(wIndex_t*)p->valueP = (wIndex_t)valL;
} else {
- if (!p->control)
+ if (!p->control) {
break;
+ }
cp = wPrefGetString( PREFSECT, prefName1 );
- if ( !cp )
+ if ( !cp ) {
cp = wPrefGetString( prefSect2, prefName2 );
- if ( !cp )
+ }
+ if ( !cp ) {
break;
+ }
*(wIndex_t*)p->valueP = wListFindValue( (wList_p)p->control, cp );
}
break;
case PD_COLORLIST:
rgb = wDrawGetRGB( *(wDrawColor*)p->valueP );
- if (!wPrefGetInteger( PREFSECT, prefName1, &rgb, rgb ))
+ if (!wPrefGetInteger( PREFSECT, prefName1, &rgb, rgb )) {
wPrefGetInteger( prefSect2, prefName2, &rgb, rgb );
+ }
*(wDrawColor*)p->valueP = wDrawFindColor( rgb );
break;
case PD_FLOAT:
- if (!wPrefGetFloat( PREFSECT, prefName1, &tmpR, *(FLOAT_T*)p->valueP ))
+ if (!wPrefGetFloat( PREFSECT, prefName1, &tmpR, *(FLOAT_T*)p->valueP )) {
wPrefGetFloat( prefSect2, prefName2, &tmpR, *(FLOAT_T*)p->valueP );
+ }
*(FLOAT_T*)p->valueP = tmpR;
break;
case PD_STRING:
cp = wPrefGetString( PREFSECT, prefName1 );
- if (!cp)
+ if (!cp) {
wPrefGetString( prefSect2, prefName2 );
- if (cp)
+ }
+ if (cp) {
strcpy( p->valueP, cp );
- else
+ } else {
((char*)p->valueP)[0] = '\0';
+ }
break;
case PD_MESSAGE:
case PD_BUTTON:
@@ -1176,114 +1253,127 @@ EXPORT void ParamUpdatePrefs( void )
paramListData_t * listDataP;
for ( inx=0; inx<paramGroups_da.cnt; inx++ ) {
- pg = paramGroups(inx);
- if (pg->nameStr == NULL) continue;
- for ( p=pg->paramPtr; p<&pg->paramPtr[pg->paramCnt]; p++ ) {
- if (p->valueP == NULL || p->nameStr == NULL || (p->option&PDO_NOPREF)!=0 )
- continue;
- if ( (p->option&PDO_DLGIGNORE) != 0 )
- continue;
- snprintf( prefName, sizeof(prefName), "%s-%s", pg->nameStr, p->nameStr );
- switch ( p->type ) {
- case PD_LONG:
- case PD_RADIO:
- case PD_TOGGLE:
- wPrefSetInteger( PREFSECT, prefName, *(long*)p->valueP );
- break;
- case PD_LIST:
- listDataP = (paramListData_t*)p->winData;
- if ( p->control && listDataP->colCnt > 0 ) {
- if ( maxColCnt < listDataP->colCnt ) {
- if ( maxColCnt == 0 )
- colWidths = (wWinPix_t*)MyMalloc( listDataP->colCnt * sizeof * colWidths );
- else
- colWidths = (wWinPix_t*)MyRealloc( colWidths, listDataP->colCnt * sizeof * colWidths );
- maxColCnt = listDataP->colCnt;
- }
- len = wListGetColumnWidths( (wList_p)p->control, listDataP->colCnt, colWidths );
- cp = message;
- for ( col=0; col<len; col++ ) {
- sprintf( cp, "%ld ", colWidths[col] );
- cp += strlen(cp);
- }
- *cp = '\0';
- len = strlen( prefName );
- strcpy( prefName+len, "-columnwidths" );
- wPrefSetString( PREFSECT, prefName, message );
- prefName[len] = '\0';
+ pg = paramGroups(inx);
+ if (pg->nameStr == NULL) { continue; }
+ for ( p=pg->paramPtr; p<&pg->paramPtr[pg->paramCnt]; p++ ) {
+ if (p->valueP == NULL || p->nameStr == NULL || (p->option&PDO_NOPREF)!=0 ) {
+ continue;
}
- case PD_DROPLIST:
- case PD_COMBOLIST:
- if ( (p->option&PDO_LISTINDEX) ) {
- wPrefSetInteger( PREFSECT, prefName, *(wIndex_t*)p->valueP );
- } else {
- if (p->control) {
- wListGetValues( (wList_p)p->control, message, sizeof message, NULL, NULL );
+ if ( (p->option&PDO_DLGIGNORE) != 0 ) {
+ continue;
+ }
+ snprintf( prefName, sizeof(prefName), "%s-%s", pg->nameStr, p->nameStr );
+ switch ( p->type ) {
+ case PD_LONG:
+ case PD_RADIO:
+ case PD_TOGGLE:
+ wPrefSetInteger( PREFSECT, prefName, *(long*)p->valueP );
+ break;
+ case PD_LIST:
+ listDataP = (paramListData_t*)p->winData;
+ if ( p->control && listDataP->colCnt > 0 ) {
+ if ( maxColCnt < listDataP->colCnt ) {
+ if ( maxColCnt == 0 ) {
+ colWidths = (wWinPix_t*)MyMalloc( listDataP->colCnt * sizeof * colWidths );
+ } else {
+ colWidths = (wWinPix_t*)MyRealloc( colWidths,
+ listDataP->colCnt * sizeof * colWidths );
+ }
+ maxColCnt = listDataP->colCnt;
+ }
+ len = wListGetColumnWidths( (wList_p)p->control, listDataP->colCnt, colWidths );
+ cp = message;
+ for ( col=0; col<len; col++ ) {
+ sprintf( cp, "%ld ", colWidths[col] );
+ cp += strlen(cp);
+ }
+ *cp = '\0';
+ len = strlen( prefName );
+ strcpy( prefName+len, "-columnwidths" );
wPrefSetString( PREFSECT, prefName, message );
+ prefName[len] = '\0';
}
+ case PD_DROPLIST:
+ case PD_COMBOLIST:
+ if ( (p->option&PDO_LISTINDEX) ) {
+ wPrefSetInteger( PREFSECT, prefName, *(wIndex_t*)p->valueP );
+ } else {
+ if (p->control) {
+ wListGetValues( (wList_p)p->control, message, sizeof message, NULL, NULL );
+ wPrefSetString( PREFSECT, prefName, message );
+ }
+ }
+ break;
+ case PD_COLORLIST:
+ rgb = wDrawGetRGB( *(wDrawColor*)p->valueP );
+ wPrefSetInteger( PREFSECT, prefName, rgb );
+ break;
+ case PD_FLOAT:
+ wPrefSetFloat( PREFSECT, prefName, *(FLOAT_T*)p->valueP );
+ break;
+ case PD_STRING:
+ wPrefSetString( PREFSECT, prefName, (char*)p->valueP );
+ break;
+ case PD_MESSAGE:
+ case PD_BUTTON:
+ case PD_DRAW:
+ case PD_TEXT:
+ case PD_MENU:
+ case PD_MENUITEM:
+ case PD_BITMAP:
+ break;
}
- break;
- case PD_COLORLIST:
- rgb = wDrawGetRGB( *(wDrawColor*)p->valueP );
- wPrefSetInteger( PREFSECT, prefName, rgb );
- break;
- case PD_FLOAT:
- wPrefSetFloat( PREFSECT, prefName, *(FLOAT_T*)p->valueP );
- break;
- case PD_STRING:
- wPrefSetString( PREFSECT, prefName, (char*)p->valueP );
- break;
- case PD_MESSAGE:
- case PD_BUTTON:
- case PD_DRAW:
- case PD_TEXT:
- case PD_MENU:
- case PD_MENUITEM:
- case PD_BITMAP:
- break;
}
- }
}
}
EXPORT void ParamGroupRecord(
- paramGroup_p pg )
+ paramGroup_p pg )
{
paramData_p p;
long rgb;
- if (recordF == NULL)
+ if (recordF == NULL) {
return;
+ }
for ( p=pg->paramPtr; p<&pg->paramPtr[pg->paramCnt]; p++ ) {
- if ( (p->option&PDO_NORECORD) != 0 || p->valueP == NULL || p->nameStr == NULL )
+ if ( (p->option&PDO_NORECORD) != 0 || p->valueP == NULL
+ || p->nameStr == NULL ) {
continue;
- if ( (p->option&PDO_DLGIGNORE) != 0 )
+ }
+ if ( (p->option&PDO_DLGIGNORE) != 0 ) {
continue;
+ }
switch ( p->type ) {
case PD_LONG:
case PD_RADIO:
case PD_TOGGLE:
- fprintf( recordF, "PARAMETER %s %s %ld\n", pg->nameStr, p->nameStr, *(long*)p->valueP );
+ fprintf( recordF, "PARAMETER %s %s %ld\n", pg->nameStr, p->nameStr,
+ *(long*)p->valueP );
break;
case PD_LIST:
case PD_DROPLIST:
case PD_COMBOLIST:
- if (p->control)
+ if (p->control) {
wListGetValues( (wList_p)p->control, message, sizeof message, NULL, NULL );
- else
+ } else {
message[0] = '\0';
- fprintf( recordF, "PARAMETER %s %s %d %s\n", pg->nameStr, p->nameStr, *(wIndex_t*)p->valueP, message );
+ }
+ fprintf( recordF, "PARAMETER %s %s %d %s\n", pg->nameStr, p->nameStr,
+ *(wIndex_t*)p->valueP, message );
break;
case PD_COLORLIST:
rgb = wDrawGetRGB( *(wDrawColor*)p->valueP );
fprintf( recordF, "PARAMETER %s %s %ld\n",
- pg->nameStr, p->nameStr, rgb );
+ pg->nameStr, p->nameStr, rgb );
break;
case PD_FLOAT:
- fprintf( recordF, "PARAMETER %s %s %0.3f\n", pg->nameStr, p->nameStr, *(FLOAT_T*)p->valueP );
+ fprintf( recordF, "PARAMETER %s %s %0.3f\n", pg->nameStr, p->nameStr,
+ *(FLOAT_T*)p->valueP );
break;
case PD_STRING:
- fprintf( recordF, "PARAMETER %s %s %s\n", pg->nameStr, p->nameStr, (char*)p->valueP );
+ fprintf( recordF, "PARAMETER %s %s %s\n", pg->nameStr, p->nameStr,
+ (char*)p->valueP );
break;
case PD_MESSAGE:
case PD_BUTTON:
@@ -1295,8 +1385,9 @@ EXPORT void ParamGroupRecord(
break;
}
}
- if (pg->nameStr)
+ if (pg->nameStr) {
fprintf( recordF, "PARAMETER GROUP %s\n", pg->nameStr );
+ }
fflush( recordF );
}
@@ -1306,8 +1397,9 @@ EXPORT void ParamStartRecord( void )
int inx;
paramGroup_p pg;
- if (recordF == NULL)
+ if (recordF == NULL) {
return;
+ }
for ( inx=0; inx<paramGroups_da.cnt; inx++ ) {
pg = paramGroups(inx);
if (pg->options&PGO_RECORD) {
@@ -1352,10 +1444,11 @@ static void ParamButtonPush( void * dp )
fflush( recordF );
}
if ( (p->option&PDO_NOPSHACT)==0 ) {
- if ( p->valueP )
+ if ( p->valueP ) {
((wButtonCallBack_p)(p->valueP))( p->context );
- else if ( p->group->changeProc)
- p->group->changeProc( p->group, (int)(p-p->group->paramPtr), NULL);
+ } else if ( p->group->changeProc) {
+ p->group->changeProc( p->group, (int)(p-p->group->paramPtr), NULL);
+ }
}
}
@@ -1365,30 +1458,39 @@ static void ParamChoicePush( long valL, void * dp )
paramData_p p = (paramData_p)dp;
if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr) {
- fprintf( recordF, "PARAMETER %s %s %ld\n", p->group->nameStr, p->nameStr, valL );
+ fprintf( recordF, "PARAMETER %s %s %ld\n", p->group->nameStr, p->nameStr,
+ valL );
fflush( recordF );
}
- if ( (p->option&PDO_NOPSHUPD)==0 && p->valueP)
+ if ( (p->option&PDO_NOPSHUPD)==0 && p->valueP) {
*((long*)(p->valueP)) = valL;
- if ( (p->option&PDO_NOPSHACT)==0 && p->group->changeProc)
+ }
+ if ( (p->option&PDO_NOPSHACT)==0 && p->group->changeProc) {
p->group->changeProc( p->group, (int)(p-p->group->paramPtr), &valL);
+ }
}
static wBool_t ParamIntegerRangeCheck( paramData_p p, long valL )
{
- if ( inPlayback )
+ if ( inPlayback ) {
return TRUE;
+ }
paramIntegerRange_t * irangeP = (paramIntegerRange_t*)p->winData;
- wBool_t bInvalid = p->bInvalid;
- if ( ( (irangeP->rangechecks&PDO_NORANGECHECK_HIGH) == 0 && valL > irangeP->high ) ||
- ( (irangeP->rangechecks&PDO_NORANGECHECK_LOW) == 0 && valL < irangeP->low ) ) {
- if ( (irangeP->rangechecks&(PDO_NORANGECHECK_HIGH|PDO_NORANGECHECK_LOW)) == PDO_NORANGECHECK_HIGH )
+// wBool_t bInvalid = p->bInvalid;
+ if ( ( (irangeP->rangechecks&PDO_NORANGECHECK_HIGH) == 0
+ && valL > irangeP->high ) ||
+ ( (irangeP->rangechecks&PDO_NORANGECHECK_LOW) == 0 && valL < irangeP->low ) ) {
+ if ( (irangeP->rangechecks&(PDO_NORANGECHECK_HIGH|PDO_NORANGECHECK_LOW)) ==
+ PDO_NORANGECHECK_HIGH ) {
sprintf( message, _("Enter a value > %ld"), irangeP->low );
- else if ( (irangeP->rangechecks&(PDO_NORANGECHECK_HIGH|PDO_NORANGECHECK_LOW)) == PDO_NORANGECHECK_LOW )
- sprintf( message, _("Enter a value < %ld"), irangeP->high );
- else
- sprintf( message, _("Enter a value between %ld and %ld"), irangeP->low, irangeP->high );
+ } else if ( (irangeP->rangechecks&(PDO_NORANGECHECK_HIGH|PDO_NORANGECHECK_LOW))
+ == PDO_NORANGECHECK_LOW ) {
+ sprintf( message, _("Enter a value < %ld"), irangeP->high );
+ } else {
+ sprintf( message, _("Enter a value between %ld and %ld"), irangeP->low,
+ irangeP->high );
+ }
wWinPix_t h = wControlGetHeight(p->control);
wControlSetBalloon( p->control, 0, -h*3/4, message );
p->bInvalid = TRUE;
@@ -1408,7 +1510,7 @@ static void ParamIntegerPush( const char * val, void * dp )
char * cp;
const char * value;
- wBool_t bInvalid = p->bInvalid;
+// wBool_t bInvalid = p->bInvalid;
if (strlen(val) == 1 && val[strlen(val)-1] == '\n') {
value = wStringGetValue((wString_p)p->control);
p->enter_pressed = TRUE;
@@ -1416,7 +1518,8 @@ static void ParamIntegerPush( const char * val, void * dp )
value = val;
p->enter_pressed = FALSE;
}
- LOG( log_paraminput, 1, ( "ParamIntegerPush( %s Enter:%d Val:%s )\n", p->nameStr, p->enter_pressed, value ) );
+ LOG( log_paraminput, 1, ( "ParamIntegerPush( %s Enter:%d Val:%s )\n",
+ p->nameStr, p->enter_pressed, value ) );
valL = strtol( value, &cp, 10 );
for ( ; isspace( (unsigned char)*cp); cp++ );
@@ -1428,19 +1531,23 @@ static void ParamIntegerPush( const char * val, void * dp )
ParamHilite( p->group->win, p->control, p->bInvalid );
return;
}
- if ( ! ParamIntegerRangeCheck( p, valL ) )
+ if ( ! ParamIntegerRangeCheck( p, valL ) ) {
return;
+ }
wControlSetBalloon( p->control, 0, 0, NULL );
p->bInvalid = FALSE;
if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr) {
- fprintf( recordF, "PARAMETER %s %s %ld\n", p->group->nameStr, p->nameStr, valL );
+ fprintf( recordF, "PARAMETER %s %s %ld\n", p->group->nameStr, p->nameStr,
+ valL );
fflush( recordF );
}
- if ( (p->option&PDO_NOPSHUPD)==0 && p->valueP)
+ if ( (p->option&PDO_NOPSHUPD)==0 && p->valueP) {
*((long*)(p->valueP)) = valL;
- if ( (p->option&PDO_NOPSHACT)==0 && p->group->changeProc)
+ }
+ if ( (p->option&PDO_NOPSHACT)==0 && p->group->changeProc) {
p->group->changeProc( p->group, (int)(p-p->group->paramPtr), &valL);
+ }
ParamHilite( p->group->win, p->control, p->bInvalid );
LOG( log_paraminput, 1, ( " -> %ld\n", valL ) );
}
@@ -1448,22 +1555,26 @@ static void ParamIntegerPush( const char * val, void * dp )
static wBool_t ParamFloatRangeCheck( paramData_p p, FLOAT_T valF )
{
- if ( inPlayback )
+ if ( inPlayback ) {
return TRUE;
+ }
paramFloatRange_t * frangeP = (paramFloatRange_t*)p->winData;
- wBool_t bInvalid = p->bInvalid;
- if ( ( (frangeP->rangechecks&PDO_NORANGECHECK_HIGH) == 0 && valF > frangeP->high ) ||
- ( (frangeP->rangechecks&PDO_NORANGECHECK_LOW) == 0 && valF < frangeP->low ) ) {
- if ( (frangeP->rangechecks&(PDO_NORANGECHECK_HIGH|PDO_NORANGECHECK_LOW)) == PDO_NORANGECHECK_HIGH )
+// wBool_t bInvalid = p->bInvalid;
+ if ( ( (frangeP->rangechecks&PDO_NORANGECHECK_HIGH) == 0
+ && valF > frangeP->high ) ||
+ ( (frangeP->rangechecks&PDO_NORANGECHECK_LOW) == 0 && valF < frangeP->low ) ) {
+ if ( (frangeP->rangechecks&(PDO_NORANGECHECK_HIGH|PDO_NORANGECHECK_LOW)) ==
+ PDO_NORANGECHECK_HIGH )
sprintf( message, _("Enter a value > %s"),
- (p->option&PDO_DIM)?FormatDistance(frangeP->low):FormatFloat(frangeP->low) );
- else if ( (frangeP->rangechecks&(PDO_NORANGECHECK_HIGH|PDO_NORANGECHECK_LOW)) == PDO_NORANGECHECK_LOW )
- sprintf( message, _("Enter a value < %s"),
- (p->option&PDO_DIM)?FormatDistance(frangeP->high):FormatFloat(frangeP->high) );
+ (p->option&PDO_DIM)?FormatDistance(frangeP->low):FormatFloat(frangeP->low) );
+ else if ( (frangeP->rangechecks&(PDO_NORANGECHECK_HIGH|PDO_NORANGECHECK_LOW)) ==
+ PDO_NORANGECHECK_LOW )
+ sprintf( message, _("Enter a value < %s"),
+ (p->option&PDO_DIM)?FormatDistance(frangeP->high):FormatFloat(frangeP->high) );
else
- sprintf( message, _("Enter a value between %s and %s"),
- (p->option&PDO_DIM)?FormatDistance(frangeP->low):FormatFloat(frangeP->low),
- (p->option&PDO_DIM)?FormatDistance(frangeP->high):FormatFloat(frangeP->high) );
+ sprintf( message, _("Enter a value between %s and %s"),
+ (p->option&PDO_DIM)?FormatDistance(frangeP->low):FormatFloat(frangeP->low),
+ (p->option&PDO_DIM)?FormatDistance(frangeP->high):FormatFloat(frangeP->high) );
wWinPix_t h = wControlGetHeight(p->control);
wControlSetBalloon( p->control, 0, -h*3/4, message );
p->bInvalid = TRUE;
@@ -1491,7 +1602,7 @@ static void ParamFloatPush( const char * val, void * dp )
BOOL_T valid;
const char * value;
- wBool_t bInvalid = p->bInvalid;
+// wBool_t bInvalid = p->bInvalid;
if (strlen(val) == 1 && val[strlen(val)-1] == '\n') {
value = wStringGetValue((wString_p)p->control);
p->enter_pressed = TRUE;
@@ -1499,14 +1610,16 @@ static void ParamFloatPush( const char * val, void * dp )
value = val;
p->enter_pressed = FALSE;
}
- LOG( log_paraminput, 1, ( "ParamFloatPush( %s: Enter:%d Val:%s )\n", p->nameStr, p->enter_pressed, value ) );
+ LOG( log_paraminput, 1, ( "ParamFloatPush( %s: Enter:%d Val:%s )\n", p->nameStr,
+ p->enter_pressed, value ) );
if (p->option & PDO_DIM) {
valF = DecodeDistance( (wString_p)p->control, &valid );
} else {
valF = DecodeFloat( (wString_p)p->control, &valid );
- if (p->option & PDO_ANGLE)
+ if (p->option & PDO_ANGLE) {
valF = NormalizeAngle( (angleSystem==ANGLE_POLAR)?valF:-valF );
+ }
}
if ( !valid ) {
wWinPix_t h = wControlGetHeight(p->control);
@@ -1515,19 +1628,23 @@ static void ParamFloatPush( const char * val, void * dp )
ParamHilite( p->group->win, p->control, p->bInvalid );
return;
}
- if ( !ParamFloatRangeCheck( p, valF ) )
+ if ( !ParamFloatRangeCheck( p, valF ) ) {
return;
+ }
wControlSetBalloon( p->control, 0, 0, NULL );
p->bInvalid = FALSE;
if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr) {
- fprintf( recordF, "PARAMETER %s %s %0.6f\n", p->group->nameStr, p->nameStr, valF );
+ fprintf( recordF, "PARAMETER %s %s %0.6f\n", p->group->nameStr, p->nameStr,
+ valF );
fflush( recordF );
}
- if ( (p->option&PDO_NOPSHUPD)==0 && p->valueP)
+ if ( (p->option&PDO_NOPSHUPD)==0 && p->valueP) {
*((FLOAT_T*)(p->valueP)) = valF;
- if ( (p->option&PDO_NOPSHACT)==0 && p->group->changeProc && strlen( value ))
+ }
+ if ( (p->option&PDO_NOPSHACT)==0 && p->group->changeProc && strlen( value )) {
p->group->changeProc( p->group, (int)(p-p->group->paramPtr), &valF );
+ }
ParamHilite( p->group->win, p->control, p->bInvalid );
}
@@ -1536,7 +1653,7 @@ static void ParamStringPush( const char * val, void * dp )
{
paramData_p p = (paramData_p)dp;
const char * value;
- wBool_t bInvalid = p->bInvalid;
+// wBool_t bInvalid = p->bInvalid;
if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr) {
fprintf( recordF, "PARAMETER %s %s %s\n", p->group->nameStr, p->nameStr, val );
fflush( recordF );
@@ -1548,7 +1665,8 @@ static void ParamStringPush( const char * val, void * dp )
value = val;
p->enter_pressed = FALSE;
}
- LOG( log_paraminput, 1, ( "ParamStringPush( %s: Enter:%d Val:%s )\n", p->nameStr, p->enter_pressed, value ) );
+ LOG( log_paraminput, 1, ( "ParamStringPush( %s: Enter:%d Val:%s )\n",
+ p->nameStr, p->enter_pressed, value ) );
if ( ((!inPlayback) && p->option & PDO_NOTBLANK) && value[0] == '\0' ) {
p->bInvalid = TRUE;
wControlSetBalloon( p->control, 0, 0, NULL );
@@ -1561,15 +1679,29 @@ static void ParamStringPush( const char * val, void * dp )
p->bInvalid = FALSE;
ParamHilite( p->group->win, p->control, FALSE );
- if ( (p->option&PDO_NOPSHUPD)==0 && p->valueP)
- strcpy( (char*)p->valueP, value );
+ if ( (p->option&PDO_NOPSHUPD)==0 && p->valueP) {
+ strncpy((char*)p->valueP, value, p->max_string-1);
+ ((char *)p->valueP)[p->max_string - 1] = '\0';
+ if (strlen(value) > p->max_string-1) {
+ p->bInvalid = TRUE;
+ wControlSetBalloon( p->control, 0, 0, NULL );
+ wWinPix_t h = wControlGetHeight(p->control);
+ sprintf( message, _("String is too long, Max length is %u"), p->max_string-1 );
+ wControlSetBalloon( p->control, 0, -h*3/4, message );
+ ParamHilite( p->group->win, p->control, TRUE );
+ }
+ }
if ( (p->option&PDO_NOPSHACT)==0 && p->group->changeProc)
// CAST_AWAY_CONST: param 3 should be const but its a big change
- p->group->changeProc( p->group, (int)(p-p->group->paramPtr), CAST_AWAY_CONST value );
+ {
+ p->group->changeProc( p->group, (int)(p-p->group->paramPtr),
+ CAST_AWAY_CONST value );
+ }
}
-static void ParamListPush( wIndex_t inx, const char * val, wIndex_t op, void * dp, void * itemContext )
+static void ParamListPush( wIndex_t inx, const char * val, wIndex_t op,
+ void * dp, void * itemContext )
{
paramData_p p = (paramData_p)dp;
long valL;
@@ -1579,11 +1711,13 @@ static void ParamListPush( wIndex_t inx, const char * val, wIndex_t op, void * d
case PD_DROPLIST:
case PD_COMBOLIST:
if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr) {
- fprintf( recordF, "PARAMETER %s %s %d %s\n", p->group->nameStr, p->nameStr, inx, val );
+ fprintf( recordF, "PARAMETER %s %s %d %s\n", p->group->nameStr, p->nameStr, inx,
+ val );
fflush( recordF );
}
- if ( (p->option&PDO_NOPSHUPD)==0 && p->valueP)
+ if ( (p->option&PDO_NOPSHUPD)==0 && p->valueP) {
*(wIndex_t*)(p->valueP) = inx;
+ }
if ( (p->option&PDO_NOPSHACT)==0 && p->group->changeProc ) {
valL = inx;
p->group->changeProc( p->group, (int)(p-p->group->paramPtr), &valL );
@@ -1599,12 +1733,14 @@ static void ParamListPush( wIndex_t inx, const char * val, wIndex_t op, void * d
EXPORT void ParamMenuPush( void * dp )
{
paramData_p p = (paramData_p)dp;
- if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr) {
- fprintf( recordF, "PARAMETER %s %s\n", p->group->nameStr, p->nameStr );
+ const char * groupNameStr = p->group ? p->group->nameStr : "misc";
+ if (recordF && (p->option&PDO_NORECORD)==0 && groupNameStr && p->nameStr) {
+ fprintf( recordF, "PARAMETER %s %s\n", groupNameStr, p->nameStr );
fflush( recordF );
}
- if ( (p->option&PDO_NOPSHACT)==0 && p->valueP )
+ if ( (p->option&PDO_NOPSHACT)==0 && p->valueP ) {
((wMenuCallBack_p)(p->valueP))( p->context );
+ }
}
@@ -1617,17 +1753,22 @@ static void ParamColorSelectPush( void * dp, wDrawColor dc )
rgb -= 1; // Make it very close but different
if ( ( rgb & 0xFF ) == 0 )
// Ran out of room - bail
+ {
break;
+ }
dc = wDrawFindColor( rgb );
}
if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr) {
- fprintf( recordF, "PARAMETER %s %s %ld\n", p->group->nameStr, p->nameStr, wDrawGetRGB(dc) );
+ fprintf( recordF, "PARAMETER %s %s %ld\n", p->group->nameStr, p->nameStr,
+ wDrawGetRGB(dc) );
fflush( recordF );
}
- if ( (p->option&PDO_NOPSHUPD)==0 && p->valueP)
+ if ( (p->option&PDO_NOPSHUPD)==0 && p->valueP) {
*(wDrawColor*)(p->valueP) = dc;
- if ( (p->option&PDO_NOPSHACT)==0 && p->group->changeProc )
+ }
+ if ( (p->option&PDO_NOPSHACT)==0 && p->group->changeProc ) {
p->group->changeProc( p->group, (int)(p-p->group->paramPtr), &dc );
+ }
}
@@ -1635,43 +1776,54 @@ static void ParamDrawRedraw( wDraw_p d, void * dp, wWinPix_t w, wWinPix_t h )
{
paramData_p p = (paramData_p)dp;
paramDrawData_t * ddp = (paramDrawData_t*)p->winData;
- if ( ddp->redraw )
+ if ( ddp->redraw ) {
ddp->redraw( d, p->context, w, h );
+ }
}
-static void ParamDrawAction( wDraw_p d, void * dp, wAction_t a, wDrawPix_t w, wDrawPix_t h )
+static void ParamDrawAction( wDraw_p d, void * dp, wAction_t a, wDrawPix_t w,
+ wDrawPix_t h )
{
paramData_p p = (paramData_p)dp;
paramDrawData_t * ddp = (paramDrawData_t*)p->winData;
coOrd pos;
ddp->d->Pix2CoOrd( ddp->d, w, h, &pos );
- if ( recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr) {
- fprintf( recordF, "PARAMETER %s %s %d %0.3f %0.3f\n", p->group->nameStr, p->nameStr, a, pos.x, pos.y );
+ if ( recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr
+ && p->nameStr) {
+ fprintf( recordF, "PARAMETER %s %s %d %0.3f %0.3f\n", p->group->nameStr,
+ p->nameStr, a, pos.x, pos.y );
fflush( recordF );
}
- if ( (p->option&PDO_NOPSHACT)== 0 && ddp->action )
+ if ( (p->option&PDO_NOPSHACT)== 0 && ddp->action ) {
ddp->action( a, pos );
+ }
}
EXPORT wBool_t ParamCheckInputs(
- paramGroup_p group,
- wControl_p b )
+ paramGroup_p group,
+ wControl_p b )
{
wBool_t bInvalid = FALSE;
// Check for invalid entries
- for ( paramData_p p = group->paramPtr; p < &group->paramPtr[group->paramCnt]; p++ ) {
+ for ( paramData_p p = group->paramPtr; p < &group->paramPtr[group->paramCnt];
+ p++ ) {
ParamHilite( group->win, p->control, p->bInvalid );
- if ( p->bInvalid == FALSE )
+ if ( p->bInvalid == FALSE ) {
continue;
+ }
+ if ( p->bShown == FALSE ) {
+ continue;
+ }
LOG( log_paraminput, 1, ( " %s: Invalid\n", p->nameStr ) );
bInvalid = TRUE;
}
if ( bInvalid ) {
// At least 1 invalid entry
LOG( log_paraminput, 1, ( " Group %s Invalid\n", group->nameStr ) );
- wControlSetBalloon( b, 0, -29, _("Invalid input(s), please correct the hilighted field(s)") );
+ wControlSetBalloon( b, 0, -29,
+ _("Invalid input(s), please correct the hilighted field(s)") );
wFlush();
return FALSE;
}
@@ -1684,15 +1836,17 @@ static void ParamButtonOk( void * groupVP )
paramGroup_p group = groupVP;
wFlush();
LOG( log_paraminput, 1, ( "ParamButtonOk: %s\n", group->nameStr ) );
- if ( ! ParamCheckInputs( group, (wControl_p)group->okB ) )
+ if ( ! ParamCheckInputs( group, (wControl_p)group->okB ) ) {
return;
- if ( recordF && group->nameStr )
- fprintf( recordF, "PARAMETER %s %s\n", group->nameStr, "ok" ); {
+ }
+ if ( recordF && group->nameStr ) {
+ fprintf( recordF, "PARAMETER %s %s\n", group->nameStr, "ok" );
fflush( recordF );
}
- if ( group->okProc )
+ if ( group->okProc ) {
group->okProc( group );
+ }
wControlSetBalloon( (wControl_p)group->okB, 0, 0, NULL );
wFlush();
@@ -1708,8 +1862,9 @@ static void ParamButtonCancel( void * groupVP )
fprintf( recordF, "PARAMETER %s %s\n", group->nameStr, "cancel" );
fflush( recordF );
}
- if ( group->cancelProc )
+ if ( group->cancelProc ) {
group->cancelProc( group->win );
+ }
}
@@ -1718,13 +1873,16 @@ EXPORT void ParamChange( paramData_p p )
{
FLOAT_T tmpR;
- if (p->valueP==NULL)
+ if (p->valueP==NULL) {
return;
+ }
switch (p->type) {
case PD_LONG:
- if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr)
- fprintf( recordF, "PARAMETER %s %s %ld\n", p->group->nameStr, p->nameStr, *(long*)p->valueP );
+ if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr) {
+ fprintf( recordF, "PARAMETER %s %s %ld\n", p->group->nameStr, p->nameStr,
+ *(long*)p->valueP );
+ }
#ifdef LATER
if ( p->control && (p->option&PDO_NOCONTUPD) == 0 ) {
wStringSetValue( (wString_p)p->control, FormatLong( *(long*)p->valueP ) );
@@ -1732,55 +1890,71 @@ EXPORT void ParamChange( paramData_p p )
#endif
break;
case PD_RADIO:
- if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr)
- fprintf( recordF, "PARAMETER %s %s %ld\n", p->group->nameStr, p->nameStr, *(long*)p->valueP );
+ if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr) {
+ fprintf( recordF, "PARAMETER %s %s %ld\n", p->group->nameStr, p->nameStr,
+ *(long*)p->valueP );
+ }
#ifdef LATER
- if ( p->control && (p->option&PDO_NOCONTUPD) == 0 )
+ if ( p->control && (p->option&PDO_NOCONTUPD) == 0 ) {
wRadioSetValue( (wChoice_p)p->control, *(long*)p->valueP );
+ }
#endif
break;
case PD_TOGGLE:
- if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr)
- fprintf( recordF, "PARAMETER %s %s %ld\n", p->group->nameStr, p->nameStr, *(long*)p->valueP );
+ if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr) {
+ fprintf( recordF, "PARAMETER %s %s %ld\n", p->group->nameStr, p->nameStr,
+ *(long*)p->valueP );
+ }
#ifdef LATER
- if ( p->control && (p->option&PDO_NOCONTUPD) == 0 )
+ if ( p->control && (p->option&PDO_NOCONTUPD) == 0 ) {
wToggleSetValue( (wChoice_p)p->control, *(long*)p->valueP );
+ }
#endif
break;
case PD_LIST:
case PD_DROPLIST:
case PD_COMBOLIST:
if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr) {
- fprintf( recordF, "PARAMETER %s %s %d %s\n", p->group->nameStr, p->nameStr, *(wIndex_t*)p->valueP, "???" );
+ fprintf( recordF, "PARAMETER %s %s %d %s\n", p->group->nameStr, p->nameStr,
+ *(wIndex_t*)p->valueP, "???" );
}
#ifdef LATER
- if ( p->control && (p->option&PDO_NOCONTUPD) == 0 )
+ if ( p->control && (p->option&PDO_NOCONTUPD) == 0 ) {
wListSetIndex( (wList_p)p->control, *(wIndex_t*)p->valueP );
+ }
#endif
break;
case PD_COLORLIST:
- if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr)
- fprintf( recordF, "PARAMETER %s %s %ld\n", p->group->nameStr, p->nameStr, rgb );
+ if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr) {
+ fprintf( recordF, "PARAMETER %s %s %ld\n", p->group->nameStr, p->nameStr,
+ rgb );
+ }
break;
case PD_FLOAT:
tmpR = *(FLOAT_T*)p->valueP;
- if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr)
- fprintf( recordF, "PARAMETER %s %s %0.6f\n", p->group->nameStr, p->nameStr, tmpR );
+ if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr) {
+ fprintf( recordF, "PARAMETER %s %s %0.6f\n", p->group->nameStr, p->nameStr,
+ tmpR );
+ }
#ifdef LATER
if ( p->control && (p->option&PDO_NOCONTUPD) == 0 ) {
if (p->option&PDO_DIM)
#endif
- if (p->option&PDO_ANGLE)
- tmpR = NormalizeAngle( (angleSystem==ANGLE_POLAR)?tmpR:-tmpR );
+ if (p->option&PDO_ANGLE) {
+ tmpR = NormalizeAngle( (angleSystem==ANGLE_POLAR)?tmpR:-tmpR );
+ }
wStringSetValue( (wString_p)p->control, tmpR );
}
break;
case PD_STRING:
- if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr)
- fprintf( recordF, "PARAMETER %s %s %s\n", p->group->nameStr, p->nameStr, (char*)p->valueP );
+ if (recordF && (p->option&PDO_NORECORD)==0 && p->group->nameStr && p->nameStr) {
+ fprintf( recordF, "PARAMETER %s %s %s\n", p->group->nameStr, p->nameStr,
+ (char*)p->valueP );
+ }
#ifdef LATER
- if ( p->control && (p->option&PDO_NOCONTUPD) == 0 )
+ if ( p->control && (p->option&PDO_NOCONTUPD) == 0 ) {
wStringSetValue( (wString_p)p->control, (char*)p->valueP );
+ }
#endif
break;
case PD_MESSAGE:
@@ -1796,34 +1970,34 @@ EXPORT void ParamChange( paramData_p p )
EXPORT void ParamHilite(
- wWin_p win,
- wControl_p control,
- BOOL_T hilite )
+ wWin_p win,
+ wControl_p control,
+ BOOL_T hilite )
{
- if ( control == NULL ) return;
+ if ( control == NULL ) { return; }
LOG(log_paraminput, 2, ("ParamHilite %s\n", hilite?"Set":"Clr" ));
if ( hilite ) {
wControlHilite( control, TRUE );
wFlush();
- if ( inPlayback && !paramHiliteFast )
- wPause(500);
+ if ( inPlayback ) {
+ wPause(playbackDelay*4+1);
+ }
} else {
-// if ( inPlayback && !paramHiliteFast )
-// wPause(500);
wControlHilite( control, FALSE );
}
}
EXPORT void ParamResetInvalid(
- wWin_p win )
+ wWin_p win )
{
for ( int inx=0; inx<paramGroups_da.cnt; inx++ ) {
paramGroup_p pg = paramGroups(inx);
if ( pg->win == win ) {
LOG( log_paraminput, 1, ( "Reset Invalid: %s\n", pg->nameStr ) );
for ( paramData_p p = &pg->paramPtr[0]; p < &pg->paramPtr[pg->paramCnt]; p++ ) {
- if ( p->bInvalid )
+ if ( p->bInvalid ) {
LOG( log_paraminput, 1, ( " %s Invalid\n", p->nameStr ) );
+ }
ParamHilite( win, p->control, FALSE );
wControlSetBalloon( p->control, 0, 0, NULL );
p->bInvalid = FALSE;
@@ -1833,6 +2007,15 @@ EXPORT void ParamResetInvalid(
}
}
+
+EXPORT void ParamControlShow( paramGroup_p pg, wIndex_t inx, wBool_t bShow )
+{
+ paramData_p p = &pg->paramPtr[inx];
+ wControlShow( p->control, bShow );
+ p->bShown = bShow;
+}
+
+
static void ParamPlayback( char * line )
{
paramGroup_p pg;
@@ -1866,27 +2049,34 @@ static void ParamPlayback( char * line )
}
for ( inx=0; inx<paramGroups_da.cnt; inx++ ) {
- pg = paramGroups(inx);
- if ( pg->nameStr == NULL )
- continue;
- len1 = strlen( pg->nameStr );
- if ( strncmp( pg->nameStr, line, len1 ) != 0 ||
- line[len1] != ' ' )
- continue;
- for ( p=pg->paramPtr,inx=0; inx<pg->paramCnt; p++,inx++ ) {
- if ( p->nameStr == NULL )
+ pg = paramGroups(inx);
+ if ( pg->nameStr == NULL ) {
continue;
- len2 = strlen( p->nameStr );
- if ( strncmp(p->nameStr, line+len1+1, len2) != 0 ||
- (line[len1+1+len2] != ' ' && line[len1+1+len2] != '\0') )
+ }
+ len1 = strlen( pg->nameStr );
+ if ( strncmp( pg->nameStr, line, len1 ) != 0 ||
+ line[len1] != ' ' ) {
continue;
- len = len1 + 1 + len2 + 1;
- if ( p->type != PD_DRAW && p->type != PD_MESSAGE && p->type != PD_MENU && p->type != PD_MENUITEM )
- ParamHilite( p->group->win, p->control, TRUE );
- switch (p->type) {
+ }
+ for ( p=pg->paramPtr,inx=0; inx<pg->paramCnt; p++,inx++ ) {
+ if ( p->nameStr == NULL ) {
+ continue;
+ }
+ len2 = strlen( p->nameStr );
+ if ( strncmp(p->nameStr, line+len1+1, len2) != 0 ||
+ (line[len1+1+len2] != ' ' && line[len1+1+len2] != '\0') ) {
+ continue;
+ }
+ len = len1 + 1 + len2 + 1;
+ if ( p->type != PD_DRAW && p->type != PD_MESSAGE && p->type != PD_MENU
+ && p->type != PD_MENUITEM ) {
+ ParamHilite( p->group->win, p->control, TRUE );
+ }
+ switch (p->type) {
case PD_BUTTON:
- if (p->valueP)
- ((wButtonCallBack_p)(p->valueP))( p->context );
+ if (p->valueP) {
+ ((wButtonCallBack_p)(p->valueP))( p->context );
+ }
if (playbackTimer == 0 && p->control) {
wButtonSetBusy( (wButton_p)p->control, TRUE );
wFlush();
@@ -1897,46 +2087,53 @@ static void ParamPlayback( char * line )
break;
case PD_LONG:
valL = atol( line+len );
- if (p->valueP)
+ if (p->valueP) {
*(long*)p->valueP = valL;
+ }
if (p->control) {
wStringSetValue( (wString_p)p->control, FormatLong( valL ) );
wFlush();
}
- if (pg->changeProc)
+ if (pg->changeProc) {
pg->changeProc( pg, inx, &valL );
+ }
break;
case PD_RADIO:
valL = atol( line+len );
- if (p->valueP)
+ if (p->valueP) {
*(long*)p->valueP = valL;
+ }
if (p->control) {
wRadioSetValue( (wChoice_p)p->control, valL );
wFlush();
}
- if (pg->changeProc)
+ if (pg->changeProc) {
pg->changeProc( pg, inx, &valL );
+ }
break;
case PD_TOGGLE:
valL = atol( line+len );
- if (p->valueP)
+ if (p->valueP) {
*(long*)p->valueP = valL;
+ }
if (p->control) {
wToggleSetValue( (wChoice_p)p->control, valL );
wFlush();
}
- if (pg->changeProc)
+ if (pg->changeProc) {
pg->changeProc( pg, inx, &valL );
+ }
break;
case PD_LIST:
case PD_DROPLIST:
case PD_COMBOLIST:
line += len;
valL = strtol( line, &valS, 10 );
- if ( valS )
+ if ( valS ) {
valS++;
- else
+ } else {
valS = "";
+ }
if ( p->control != NULL ) {
if ( (p->option&PDO_LISTINDEX) == 0 ) {
if ( valL < 0 ) {
@@ -1953,12 +2150,14 @@ static void ParamPlayback( char * line )
wListSetIndex( (wList_p)p->control, (wIndex_t)valL );
}
wFlush();
- wListGetValues( (wList_p)p->control, message, sizeof message, &listContext, &itemContext );
+ wListGetValues( (wList_p)p->control, message, sizeof message, &listContext,
+ &itemContext );
} else if ( (p->option&PDO_LISTINDEX) == 0 ) {
break;
}
- if (p->valueP)
+ if (p->valueP) {
*(wIndex_t*)p->valueP = (wIndex_t)valL;
+ }
if (pg->changeProc) {
pg->changeProc( pg, inx, &valL );
}
@@ -1967,10 +2166,12 @@ static void ParamPlayback( char * line )
line += len;
rgb = atol( line );
dc = wDrawFindColor( rgb );
- if ( p->control)
+ if ( p->control) {
wColorSelectButtonSetColor( (wButton_p)p->control, dc );
- if (p->valueP)
+ }
+ if (p->valueP) {
*(wDrawColor*)p->valueP = dc;
+ }
if (pg->changeProc) {
/* COLORNOP */
pg->changeProc( pg, inx, &valL );
@@ -1980,48 +2181,58 @@ static void ParamPlayback( char * line )
SetCLocale();
valF = valF1 = atof( line+len );
SetUserLocale();
- if (p->valueP)
+ if (p->valueP) {
*(FLOAT_T*)p->valueP = valF;
+ }
if (p->option&PDO_DIM) {
- if ( p->option&PDO_SMALLDIM )
+ if ( p->option&PDO_SMALLDIM ) {
valS = FormatSmallDistance( valF );
- else
+ } else {
valS = FormatDistance( valF );
+ }
} else {
- if (p->option&PDO_ANGLE)
+ if (p->option&PDO_ANGLE) {
valF1 = NormalizeAngle( (angleSystem==ANGLE_POLAR)?valF1:-valF1 );
+ }
valS = FormatFloat( valF );
}
if (p->control) {
wStringSetValue( (wString_p)p->control, valS );
wFlush();
}
- if (pg->changeProc)
+ if (pg->changeProc) {
pg->changeProc( pg, inx, &valF );
+ }
break;
case PD_STRING:
case PD_TEXT:
line += len;
- while ( *line == ' ' ) line++;
+ while ( *line == ' ' ) { line++; }
Stripcr( line );
- if (p->valueP)
+ if (p->valueP) {
strcpy( (char*)p->valueP, line );
+ }
if (p->control) {
if (p->type == PD_STRING) {
wStringSetValue((wString_p)p->control, line);
+ p->bInvalid =
+ (p->option & PDO_NOTBLANK) &&
+ strlen( line ) == 0;
} else {
wTextClear((wText_p)p->control);
wTextAppend((wText_p)p->control, line);
}
wFlush();
}
- if (pg->changeProc)
+ if (pg->changeProc) {
pg->changeProc( pg, inx, line );
+ }
break;
case PD_DRAW:
ddp = (paramDrawData_t*)p->winData;
- if ( ddp->action == NULL )
+ if ( ddp->action == NULL ) {
break;
+ }
a = (wAction_t)strtol( line+len, &line, 10 );
pos.x = strtod( line, &line );
pos.y = strtod( line, NULL );
@@ -2033,44 +2244,50 @@ static void ParamPlayback( char * line )
break;
case PD_MENUITEM:
if (p->valueP) {
- if ( (p->option&IC_PLAYBACK_PUSH) != 0 )
+ if ( (p->option&IC_PLAYBACK_PUSH) != 0 ) {
PlaybackButtonMouse( (wIndex_t)VP2L(p->context) );
+ }
((wButtonCallBack_p)(p->valueP))( p->context );
}
break;
}
- if ( p->type != PD_DRAW && p->type != PD_MESSAGE && p->type != PD_MENU && p->type != PD_MENUITEM )
- ParamHilite( p->group->win, p->control, FALSE );
+ if ( p->type != PD_DRAW && p->type != PD_MESSAGE && p->type != PD_MENU
+ && p->type != PD_MENUITEM ) {
+ ParamHilite( p->group->win, p->control, FALSE );
+ }
#ifdef HUH
- pg->action |= p->change;
+ pg->action |= p->change;
#endif
+ return;
+ }
+ button = NULL;
+ if ( strcmp("ok", line+len1+1) == 0 ) {
+ ParamHilite( pg->win, (wControl_p)pg->okB, TRUE );
+ if ( pg->okProc ) {
+ pg->okProc( pg );
+ }
+ button = pg->okB;
+ } else if ( strcmp("cancel", line+len1+1) == 0 ) {
+ ParamHilite( pg->win, (wControl_p)pg->cancelB, TRUE );
+ if ( pg->cancelProc ) {
+ pg->cancelProc( pg->win );
+ }
+ button = pg->cancelB;
+ }
+ if ( playbackTimer == 0 && button ) {
+ wButtonSetBusy( button, TRUE );
+ wFlush();
+ wPause( 500 );
+ wButtonSetBusy( button, FALSE );
+ wFlush();
+ }
+ ParamHilite( pg->win, (wControl_p)button, FALSE );
+ if ( !button ) {
+ NoticeMessage( "Unknown PARAM: %s", _("Ok"), NULL, line );
+ }
return;
}
- button = NULL;
- if ( strcmp("ok", line+len1+1) == 0 ) {
- ParamHilite( pg->win, (wControl_p)pg->okB, TRUE );
- if ( pg->okProc )
- pg->okProc( pg );
- button = pg->okB;
- } else if ( strcmp("cancel", line+len1+1) == 0 ) {
- ParamHilite( pg->win, (wControl_p)pg->cancelB, TRUE );
- if ( pg->cancelProc )
- pg->cancelProc( pg->win );
- button = pg->cancelB;
- }
- if ( playbackTimer == 0 && button ) {
- wButtonSetBusy( button, TRUE );
- wFlush();
- wPause( 500 );
- wButtonSetBusy( button, FALSE );
- wFlush();
- }
- ParamHilite( pg->win, (wControl_p)button, FALSE );
- if ( !button )
- NoticeMessage( "Unknown PARAM: %s", _("Ok"), NULL, line );
- return;
- }
- NoticeMessage( "Unknown PARAM: %s", _("Ok"), NULL, line );
+ NoticeMessage( "Unknown PARAM: %s", _("Ok"), NULL, line );
}
@@ -2090,24 +2307,29 @@ static void ParamCheck( char * line )
FILE * f;
for ( inx=0; inx<paramGroups_da.cnt; inx++ ) {
- pg = paramGroups(inx);
- if ( pg->nameStr == NULL )
- continue;
- len1 = strlen( pg->nameStr );
- if ( strncmp( pg->nameStr, line, len1 ) != 0 ||
- line[len1] != ' ' )
- continue;
- for ( p=pg->paramPtr,inx=0; inx<pg->paramCnt; p++,inx++ ) {
- if ( p->nameStr == NULL )
+ pg = paramGroups(inx);
+ if ( pg->nameStr == NULL ) {
continue;
- len2 = strlen( p->nameStr );
- if ( strncmp(p->nameStr, line+len1+1, len2) != 0 ||
- (line[len1+1+len2] != ' ' && line[len1+1+len2] != '\0') )
+ }
+ len1 = strlen( pg->nameStr );
+ if ( strncmp( pg->nameStr, line, len1 ) != 0 ||
+ line[len1] != ' ' ) {
continue;
- if ( p->valueP == NULL )
- return;
- len = len1 + 1 + len2 + 1;
- switch (p->type) {
+ }
+ for ( p=pg->paramPtr,inx=0; inx<pg->paramCnt; p++,inx++ ) {
+ if ( p->nameStr == NULL ) {
+ continue;
+ }
+ len2 = strlen( p->nameStr );
+ if ( strncmp(p->nameStr, line+len1+1, len2) != 0 ||
+ (line[len1+1+len2] != ' ' && line[len1+1+len2] != '\0') ) {
+ continue;
+ }
+ if ( p->valueP == NULL ) {
+ return;
+ }
+ len = len1 + 1 + len2 + 1;
+ switch (p->type) {
case PD_BUTTON:
break;
case PD_LONG:
@@ -2126,12 +2348,14 @@ static void ParamCheck( char * line )
case PD_DROPLIST:
case PD_COMBOLIST:
line += len;
- if ( p->control == NULL )
+ if ( p->control == NULL ) {
break;
+ }
valL = strtol( line, &valS, 10 );
if ( valS ) {
- if ( valS[0] == ' ' )
+ if ( valS[0] == ' ' ) {
valS++;
+ }
} else {
valS = "";
}
@@ -2144,7 +2368,8 @@ static void ParamCheck( char * line )
hasError = TRUE;
}
} else {
- wListGetValues( (wList_p)p->control, message, sizeof message, &listContext, &itemContext );
+ wListGetValues( (wList_p)p->control, message, sizeof message, &listContext,
+ &itemContext );
if ( strcasecmp( message, valS ) != 0 ) {
expVal = valS;
actVal = message;
@@ -2167,7 +2392,7 @@ static void ParamCheck( char * line )
break;
case PD_STRING:
line += len;
- while ( *line == ' ' ) line++;
+ while ( *line == ' ' ) { line++; }
wStringGetValue( (wString_p)p->control );
if ( strcasecmp( line, (char*)p->valueP ) != 0 ) {
expVal = line;
@@ -2182,24 +2407,27 @@ static void ParamCheck( char * line )
case PD_MENUITEM:
case PD_BITMAP:
break;
- }
- if ( hasError ) {
- f = fopen( "error.log", "a" );
- if ( f==NULL ) {
- NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, "PARAMCHECK LOG", "error.log", strerror(errno) );
- } else {
- fprintf( f, "CHECK: %s:%d: %s-%s: exp: %s, act=%s\n",
- paramFileName, paramLineNum, pg->nameStr, p->nameStr, expVal, actVal );
- fclose( f );
}
- if ( paramCheckShowErrors )
- NoticeMessage( "CHECK: %d: %s-%s: exp: %s, act=%s", _("Ok"), NULL, paramLineNum, pg->nameStr, p->nameStr, expVal, actVal );
- paramCheckErrorCount++;
+ if ( hasError ) {
+ f = fopen( "error.log", "a" );
+ if ( f==NULL ) {
+ NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, "PARAMCHECK LOG",
+ "error.log", strerror(errno) );
+ } else {
+ fprintf( f, "CHECK: %s:%d: %s-%s: exp: %s, act=%s\n",
+ paramFileName, paramLineNum, pg->nameStr, p->nameStr, expVal, actVal );
+ fclose( f );
+ }
+ if ( paramCheckShowErrors ) {
+ NoticeMessage( "CHECK: %d: %s-%s: exp: %s, act=%s", _("Ok"), NULL, paramLineNum,
+ pg->nameStr, p->nameStr, expVal, actVal );
+ }
+ paramCheckErrorCount++;
+ }
+ return;
}
- return;
- }
- }
- NoticeMessage( "Unknown PARAMCHECK: %s", _("Ok"), NULL, line );
+ }
+ NoticeMessage( "Unknown PARAMCHECK: %s", _("Ok"), NULL, line );
}
/*
@@ -2209,10 +2437,10 @@ static void ParamCheck( char * line )
static void ParamCreateControl(
- paramData_p pd,
- char * helpStr,
- wWinPix_t xx,
- wWinPix_t yy )
+ paramData_p pd,
+ char * helpStr,
+ wWinPix_t xx,
+ wWinPix_t yy )
{
const paramFloatRange_t * floatRangeP;
const paramIntegerRange_t * integerRangeP;
@@ -2229,139 +2457,162 @@ static void ParamCreateControl(
static wBool_t maxColCnt = 0;
int col;
const char *cp;
- char *cq;
+ char *cq;
static wMenu_p menu = NULL;
- if ( ( win = pd->group->win ) == NULL )
+ if ( ( win = pd->group->win ) == NULL ) {
win = mainW;
+ }
- switch (pd->type) {
- case PD_FLOAT:
- floatRangeP = pd->winData;
- w = floatRangeP->width?floatRangeP->width:100;
- pd->control = (wControl_p)wStringCreate( win, xx, yy, helpStr, _(pd->winLabel), pd->winOption, w, NULL, 0, ParamFloatPush, pd );
- break;
- case PD_LONG:
- integerRangeP = pd->winData;
- w = integerRangeP->width?integerRangeP->width:100;
- pd->control = (wControl_p)wStringCreate( win, xx, yy, helpStr, _(pd->winLabel), pd->winOption, w, NULL, 0, ParamIntegerPush, pd );
- break;
- case PD_STRING:
- w = pd->winData?(wWinPix_t)VP2L(pd->winData):(wWinPix_t)250;
- pd->control = (wControl_p)wStringCreate( win, xx, yy, helpStr, _(pd->winLabel), pd->winOption, w, (pd->option&PDO_NOPSHUPD)?NULL:pd->valueP, 0, ParamStringPush, pd );
- break;
- case PD_RADIO:
- pd->control = (wControl_p)wRadioCreate( win, xx, yy, helpStr, _(pd->winLabel), pd->winOption, pd->winData, NULL, ParamChoicePush, pd );
- break;
- case PD_TOGGLE:
- pd->control = (wControl_p)wToggleCreate( win, xx, yy, helpStr, _(pd->winLabel), pd->winOption, pd->winData, NULL, ParamChoicePush, pd );
- break;
- case PD_LIST:
- listDataP = (paramListData_t*)pd->winData;
- if ( listDataP->colCnt > 1 ) {
- if ( maxColCnt < listDataP->colCnt ) {
- if ( maxColCnt == 0 ) {
- colWidths = (wWinPix_t*)MyMalloc( listDataP->colCnt * sizeof *colWidths );
- colRightJust = (wBool_t*)MyMalloc( listDataP->colCnt * sizeof *colRightJust );
- } else {
- colWidths = (wWinPix_t*)MyRealloc( colWidths, listDataP->colCnt * sizeof *colWidths );
- colRightJust = (wBool_t*)MyRealloc( colRightJust, listDataP->colCnt * sizeof *colRightJust );
- }
- maxColCnt = listDataP->colCnt;
- }
- for ( col=0; col<listDataP->colCnt; col++ ) {
- colRightJust[col] = listDataP->colWidths[col]<0;
- colWidths[col] = labs(listDataP->colWidths[col]);
+ switch (pd->type) {
+ case PD_FLOAT:
+ floatRangeP = pd->winData;
+ w = floatRangeP->width?floatRangeP->width:100;
+ pd->control = (wControl_p)wStringCreate( win, xx, yy, helpStr, _(pd->winLabel),
+ pd->winOption, w, NULL, 0, ParamFloatPush, pd );
+ break;
+ case PD_LONG:
+ integerRangeP = pd->winData;
+ w = integerRangeP->width?integerRangeP->width:100;
+ pd->control = (wControl_p)wStringCreate( win, xx, yy, helpStr, _(pd->winLabel),
+ pd->winOption, w, NULL, 0, ParamIntegerPush, pd );
+ break;
+ case PD_STRING:
+ w = pd->winData?(wWinPix_t)VP2L(pd->winData):(wWinPix_t)250;
+ pd->control = (wControl_p)wStringCreate( win, xx, yy, helpStr, _(pd->winLabel),
+ pd->winOption, w, (pd->option&PDO_NOPSHUPD)?NULL:pd->valueP, 0, ParamStringPush,
+ pd );
+ break;
+ case PD_RADIO:
+ pd->control = (wControl_p)wRadioCreate( win, xx, yy, helpStr, _(pd->winLabel),
+ pd->winOption, pd->winData, NULL, ParamChoicePush, pd );
+ break;
+ case PD_TOGGLE:
+ pd->control = (wControl_p)wToggleCreate( win, xx, yy, helpStr, _(pd->winLabel),
+ pd->winOption, pd->winData, NULL, ParamChoicePush, pd );
+ break;
+ case PD_LIST:
+ listDataP = (paramListData_t*)pd->winData;
+ if ( listDataP->colCnt > 1 ) {
+ if ( maxColCnt < listDataP->colCnt ) {
+ if ( maxColCnt == 0 ) {
+ colWidths = (wWinPix_t*)MyMalloc( listDataP->colCnt * sizeof *colWidths );
+ colRightJust = (wBool_t*)MyMalloc( listDataP->colCnt * sizeof *colRightJust );
+ } else {
+ colWidths = (wWinPix_t*)MyRealloc( colWidths,
+ listDataP->colCnt * sizeof *colWidths );
+ colRightJust = (wBool_t*)MyRealloc( colRightJust,
+ listDataP->colCnt * sizeof *colRightJust );
}
- sprintf( message, "%s-%s-%s", pd->group->nameStr, pd->nameStr, "columnwidths" );
- cp = wPrefGetString( PREFSECT, message );
- if ( cp != NULL ) {
+ maxColCnt = listDataP->colCnt;
+ }
+ for ( col=0; col<listDataP->colCnt; col++ ) {
+ colRightJust[col] = listDataP->colWidths[col]<0;
+ colWidths[col] = labs(listDataP->colWidths[col]);
+ }
+ sprintf( message, "%s-%s-%s", pd->group->nameStr, pd->nameStr, "columnwidths" );
+ cp = wPrefGetString( PREFSECT, message );
+ if ( cp != NULL ) {
for ( col=0; col<listDataP->colCnt; col++ ) {
colWidth = (wWinPix_t)strtol( cp, &cq, 10 );
- if ( cp == cq )
+ if ( cp == cq ) {
break;
+ }
colWidths[col] = colWidth;
cp = cq;
- }
}
}
- pd->control = (wControl_p)wListCreate( win, xx, yy, helpStr, _(pd->winLabel),
- pd->winOption, listDataP->number, listDataP->width, listDataP->colCnt,
- (listDataP->colCnt>1?colWidths:NULL),
- (listDataP->colCnt>1?colRightJust:NULL),
- listDataP->colTitles, NULL, ParamListPush, pd );
- listDataP->height = wControlGetHeight( pd->control );
- break;
- case PD_DROPLIST:
- w = pd->winData?(wWinPix_t)VP2L(pd->winData):(wWinPix_t)100;
- pd->control = (wControl_p)wDropListCreate( win, xx, yy, helpStr, _(pd->winLabel), pd->winOption, 10, w, NULL, ParamListPush, pd );
- break;
- case PD_COMBOLIST:
- listDataP = (paramListData_t*)pd->winData;
- pd->control = (wControl_p)wComboListCreate( win, xx, yy, helpStr, _(pd->winLabel), pd->winOption, listDataP->number, listDataP->width, NULL, ParamListPush, pd );
- listDataP->height = wControlGetHeight( pd->control );
- break;
- case PD_COLORLIST:
- pd->control = (wControl_p)wColorSelectButtonCreate( win, xx, yy, helpStr, _(pd->winLabel), pd->winOption, 0, NULL, ParamColorSelectPush, pd );
- break;
- case PD_MESSAGE:
- if ( pd->winData != 0 )
- w = (wWinPix_t)VP2L(pd->winData);
- else if (pd->valueP)
- w = wLabelWidth( _(pd->valueP) );
- else
- w = 150;
- pd->control = (wControl_p)wMessageCreateEx( win, xx, yy, _(pd->winLabel), w, pd->valueP?_(pd->valueP):" ", pd->winOption );
- break;
- case PD_BUTTON:
- pd->control = (wControl_p)wButtonCreate( win, xx, yy, helpStr, _(pd->winLabel), pd->winOption, 0, ParamButtonPush, pd );
- break;
- case PD_MENU:
- menu = wMenuCreate( win, xx, yy, helpStr, _(pd->winLabel), pd->winOption );
- pd->control = (wControl_p)menu;
- break;
- case PD_MENUITEM:
- pd->control = (wControl_p)wMenuPushCreate( menu, helpStr, _(pd->winLabel), 0, ParamMenuPush, pd );
- break;
- case PD_DRAW:
- drawDataP = pd->winData;
- pd->control = (wControl_p)wDrawCreate( win, xx, yy, helpStr, pd->winOption, drawDataP->width, drawDataP->height, pd, ParamDrawRedraw, ParamDrawAction );
- if ( drawDataP->d ) {
- drawDataP->d->d = (wDraw_p)pd->control;
- drawDataP->d->dpi = wDrawGetDPI( drawDataP->d->d );
- }
- break;
- case PD_TEXT:
- textDataP = pd->winData;
- pd->control = (wControl_p)wTextCreate( win, xx, yy, helpStr, NULL, pd->winOption, textDataP->width, textDataP->height );
- if ( (pd->winOption&BO_READONLY) == 0 )
- wTextSetReadonly( (wText_p)pd->control, FALSE );
- break;
- case PD_BITMAP:
- iconP = pd->winData;
- pd->control = (wControl_p)wBitmapCreate( win, xx, yy, pd->winOption, iconP );
- break;
- default:
- AbortProg( "paramCreatePG" );
}
+ pd->control = (wControl_p)wListCreate( win, xx, yy, helpStr, _(pd->winLabel),
+ pd->winOption, listDataP->number, listDataP->width, listDataP->colCnt,
+ (listDataP->colCnt>1?colWidths:NULL),
+ (listDataP->colCnt>1?colRightJust:NULL),
+ listDataP->colTitles, NULL, ParamListPush, pd );
+ listDataP->height = wControlGetHeight( pd->control );
+ break;
+ case PD_DROPLIST:
+ w = pd->winData?(wWinPix_t)VP2L(pd->winData):(wWinPix_t)100;
+ pd->control = (wControl_p)wDropListCreate( win, xx, yy, helpStr,
+ _(pd->winLabel), pd->winOption, 10, w, NULL, ParamListPush, pd );
+ break;
+ case PD_COMBOLIST:
+ listDataP = (paramListData_t*)pd->winData;
+ pd->control = (wControl_p)wComboListCreate( win, xx, yy, helpStr,
+ _(pd->winLabel), pd->winOption, listDataP->number, listDataP->width, NULL,
+ ParamListPush, pd );
+ listDataP->height = wControlGetHeight( pd->control );
+ break;
+ case PD_COLORLIST:
+ pd->control = (wControl_p)wColorSelectButtonCreate( win, xx, yy, helpStr,
+ _(pd->winLabel), pd->winOption, 0, NULL, ParamColorSelectPush, pd );
+ break;
+ case PD_MESSAGE:
+ if ( pd->winData != 0 ) {
+ w = (wWinPix_t)VP2L(pd->winData);
+ } else if (pd->valueP) {
+ w = wLabelWidth( _(pd->valueP) );
+ } else {
+ w = 150;
+ }
+ pd->control = (wControl_p)wMessageCreateEx( win, xx, yy, _(pd->winLabel), w,
+ pd->valueP?_(pd->valueP):" ", pd->winOption );
+ break;
+ case PD_BUTTON:
+ pd->control = (wControl_p)wButtonCreate( win, xx, yy, helpStr, _(pd->winLabel),
+ pd->winOption, 0, ParamButtonPush, pd );
+ break;
+ case PD_MENU:
+ menu = wMenuCreate( win, xx, yy, helpStr, _(pd->winLabel), pd->winOption );
+ pd->control = (wControl_p)menu;
+ break;
+ case PD_MENUITEM:
+ pd->control = (wControl_p)wMenuPushCreate( menu, helpStr, _(pd->winLabel), 0,
+ ParamMenuPush, pd );
+ break;
+ case PD_DRAW:
+ drawDataP = pd->winData;
+ pd->control = (wControl_p)wDrawCreate( win, xx, yy, helpStr, pd->winOption,
+ drawDataP->width, drawDataP->height, pd, ParamDrawRedraw, ParamDrawAction );
+ if ( drawDataP->d ) {
+ drawDataP->d->d = (wDraw_p)pd->control;
+ drawDataP->d->dpi = wDrawGetDPI( drawDataP->d->d );
+ }
+ break;
+ case PD_TEXT:
+ textDataP = pd->winData;
+ pd->control = (wControl_p)wTextCreate( win, xx, yy, helpStr, NULL,
+ pd->winOption, textDataP->width, textDataP->height );
+ if ( (pd->winOption&BO_READONLY) == 0 ) {
+ wTextSetReadonly( (wText_p)pd->control, FALSE );
+ }
+ break;
+ case PD_BITMAP:
+ iconP = pd->winData;
+ pd->control = (wControl_p)wBitmapCreate( win, xx, yy, pd->winOption, iconP );
+ break;
+ default:
+ CHECK(FALSE);
+ }
+ pd->bShown = TRUE;
}
static void ParamPositionControl(
- paramData_p pd,
- char * helpStr,
- wWinPix_t xx,
- wWinPix_t yy )
+ paramData_p pd,
+ char * helpStr,
+ wWinPix_t xx,
+ wWinPix_t yy )
{
const paramDrawData_t * drawDataP;
const paramTextData_t * textDataP;
const paramListData_t * listDataP;
wWinPix_t winW, winH, ctlW, ctlH;
- if ( pd->type != PD_MENUITEM )
+ if ( pd->type != PD_MENUITEM ) {
wControlSetPos( pd->control, xx, yy );
+ }
if ( pd->option&PDO_DLGRESIZE ) {
wWinGetSize( pd->group->win, &winW, &winH );
switch (pd->type) {
@@ -2376,42 +2627,51 @@ static void ParamPositionControl(
ctlW = listDataP->width;
ctlH = listDataP->height;
}
- if ( (pd->option&PDO_DLGRESIZE) == 0 )
+ if ( (pd->option&PDO_DLGRESIZE) == 0 ) {
break;
- if ( (pd->option&PDO_DLGRESIZEW) != 0 )
+ }
+ if ( (pd->option&PDO_DLGRESIZEW) != 0 ) {
ctlW = winW - (pd->group->origW-ctlW);
- if ( (pd->option&PDO_DLGRESIZEH) != 0 )
+ }
+ if ( (pd->option&PDO_DLGRESIZEH) != 0 ) {
ctlH = winH - (pd->group->origH-ctlH);
+ }
wListSetSize( (wList_p)pd->control, ctlW, ctlH );
break;
case PD_DRAW:
drawDataP = pd->winData;
- if ( (pd->option&PDO_DLGRESIZEW) )
+ if ( (pd->option&PDO_DLGRESIZEW) ) {
ctlW = winW - (pd->group->origW-drawDataP->width);
- else
+ } else {
ctlW = wControlGetWidth( pd->control );
- if ( (pd->option&PDO_DLGRESIZEH) )
+ }
+ if ( (pd->option&PDO_DLGRESIZEH) ) {
ctlH = winH - (pd->group->origH-drawDataP->height);
- else
+ } else {
ctlH = wControlGetHeight( pd->control );
+ }
wDrawSetSize( (wDraw_p)pd->control, ctlW, ctlH, NULL );
- if ( drawDataP->redraw )
+ if ( drawDataP->redraw ) {
drawDataP->redraw( (wDraw_p)pd->control, pd->context, ctlW, ctlH );
+ }
break;
case PD_TEXT:
textDataP = pd->winData;
ctlW = textDataP->width;
ctlH = textDataP->height;
- if ( (pd->winOption&BT_CHARUNITS) )
+ if ( (pd->winOption&BT_CHARUNITS) ) {
wTextComputeSize( (wText_p)pd->control, ctlW, ctlH, &ctlW, &ctlH );
- if ( (pd->option&PDO_DLGRESIZEW) )
+ }
+ if ( (pd->option&PDO_DLGRESIZEW) ) {
ctlW = winW - (pd->group->origW-ctlW);
- else
+ } else {
ctlW = wControlGetWidth( pd->control );
- if ( (pd->option&PDO_DLGRESIZEH) )
+ }
+ if ( (pd->option&PDO_DLGRESIZEH) ) {
ctlH = winH - (pd->group->origH-ctlH);
- else
+ } else {
ctlH = wControlGetHeight( pd->control );
+ }
wTextSetSize( (wText_p)pd->control, ctlW, ctlH );
break;
case PD_STRING:
@@ -2429,7 +2689,7 @@ static void ParamPositionControl(
}
break;
default:
- AbortProg( "paramPositionControl" );
+ CHECK(FALSE);
}
}
}
@@ -2437,10 +2697,10 @@ static void ParamPositionControl(
typedef void (*layoutControlsProc)(paramData_p, char *, wWinPix_t, wWinPix_t );
static void LayoutControls(
- paramGroup_p group,
- layoutControlsProc proc,
- wWinPix_t * retW,
- wWinPix_t * retH )
+ paramGroup_p group,
+ layoutControlsProc proc,
+ wWinPix_t * retW,
+ wWinPix_t * retH )
{
struct {
struct { wWinPix_t x, y; } orig, term;
@@ -2472,33 +2732,41 @@ static void LayoutControls(
memset( labelW, 0, sizeof labelW );
lastLabelPos = 0;
currLabelPos = 0;
- for ( pd=group->paramPtr; pd<&group->paramPtr[group->paramCnt]; pd++,currLabelPos++ ) {
- if ( (pd->option&PDO_DLGIGNORE) != 0 )
+ for ( pd=group->paramPtr; pd<&group->paramPtr[group->paramCnt];
+ pd++,currLabelPos++ ) {
+ if ( (pd->option&PDO_DLGIGNORE) != 0 ) {
continue;
- if ( (pd->option&PDO_DLGBOXEND) )
+ }
+ if ( (pd->option&PDO_DLGBOXEND) ) {
hasBox = TRUE;
+ }
if ( (pd->option&(PDO_DLGRESETMARGIN|PDO_DLGNEWCOLUMN|PDO_DLGCMDBUTTON)) ) {
- for ( inx=lastLabelPos; inx<currLabelPos; inx++ )
+ for ( inx=lastLabelPos; inx<currLabelPos; inx++ ) {
labelW[inx] = controlK.orig.x;
+ }
controlK.orig.x = 0;
lastLabelPos = currLabelPos;
}
if ( pd->winLabel && (pd->option&(PDO_DLGIGNORELABELWIDTH|PDO_DLGHORZ))==0 &&
- pd->type!=PD_BUTTON &&
- pd->type!=PD_MENU &&
- pd->type!=PD_MENUITEM) {
+ pd->type!=PD_BUTTON &&
+ pd->type!=PD_MENU &&
+ pd->type!=PD_MENUITEM) {
w = wLabelWidth( _(pd->winLabel) );
- if ( w > controlK.orig.x )
+ if ( w > controlK.orig.x ) {
controlK.orig.x = w;
+ }
}
}
- for ( inx=lastLabelPos; inx<group->paramCnt; inx++ )
+ for ( inx=lastLabelPos; inx<group->paramCnt; inx++ ) {
labelW[inx] = controlK.orig.x;
+ }
for ( inx=0; inx<group->paramCnt; inx++ )
- if ( (group->paramPtr[inx].option&PDO_DLGNOLABELALIGN) != 0 )
+ if ( (group->paramPtr[inx].option&PDO_DLGNOLABELALIGN) != 0 ) {
labelW[inx] = 0;
+ }
- LOG( log_paramLayout, 1, ("Layout %s B?=%s\n", group->nameStr, hasBox?"T":"F" ) )
+ LOG( log_paramLayout, 2, ("LayoutControls:%s B?=%s\n", group->nameStr,
+ hasBox?"T":"F" ) )
windowK.orig.x = DlgSepLeft + (hasBox?DlgSepFrmLeft:0);
windowK.orig.y = DlgSepTop + (hasBox?DlgSepFrmTop:0);
@@ -2506,12 +2774,15 @@ static void LayoutControls(
controlK = columnK = windowK;
controlK.orig.x += labelW[0];
- for ( pd = group->paramPtr,inx=0; pd<&group->paramPtr[group->paramCnt]; pd++,inx++ ) {
- LOG( log_paramLayout, 1, ("%2d: Col %dx%d..%dx%d Ctl %dx%d..%dx%d\n", inx,
- columnK.orig.x, columnK.orig.y, columnK.term.x, columnK.term.y,
- controlK.orig.x, controlK.orig.y, controlK.term.x, controlK.term.y ) )
- if ( (pd->option&PDO_DLGIGNORE) != 0 )
+ for ( pd = group->paramPtr,inx=0; pd<&group->paramPtr[group->paramCnt];
+ pd++,inx++ ) {
+ if ( (pd->option&PDO_DLGIGNORE) != 0 ) {
goto SkipControl;
+ }
+ LOG( log_paramLayout, 2, ("%2d: Col %dx%d..%dx%d Ctl %dx%d..%dx%d %s\n", inx,
+ columnK.orig.x, columnK.orig.y, columnK.term.x, columnK.term.y,
+ controlK.orig.x, controlK.orig.y, controlK.term.x, controlK.term.y,
+ pd->nameStr ) )
if ( pd->type == PD_MENUITEM ) {
proc( pd, helpStr, 0, 0 );
continue;
@@ -2527,19 +2798,22 @@ static void LayoutControls(
controlK.orig.y = columnK.orig.y;
} else if ( (pd->option&PDO_DLGHORZ) ) {
controlK.orig.x = controlK.term.x;
- if ( (pd->option&PDO_DLGWIDE) )
+ if ( (pd->option&PDO_DLGWIDE) ) {
controlK.orig.x += 10;
- else if ( (pd->option&PDO_DLGNARROW)== 0)
+ } else if ( (pd->option&PDO_DLGNARROW)== 0) {
controlK.orig.x += 3;
- if ( pd->winLabel && ( pd->type!=PD_BUTTON ) )
+ }
+ if ( pd->winLabel && ( pd->type!=PD_BUTTON ) ) {
controlK.orig.x += wLabelWidth( _(pd->winLabel) );
+ }
} else if ( inx != 0 ) {
controlK.orig.x = columnK.orig.x + labelW[inx];
controlK.orig.y = controlK.term.y;
- if ( (pd->option&PDO_DLGWIDE) )
+ if ( (pd->option&PDO_DLGWIDE) ) {
controlK.orig.y += 10;
- else if ( (pd->option&PDO_DLGNARROW)== 0)
+ } else if ( (pd->option&PDO_DLGNARROW)== 0) {
controlK.orig.y += 3;
+ }
}
if ( (pd->option&PDO_DLGSETY) ) {
columnK.term.x = controlK.orig.x;
@@ -2548,10 +2822,13 @@ static void LayoutControls(
/*
* Custom layout and create/postion control
*/
- if (group->layoutProc)
- group->layoutProc( pd, inx, columnK.orig.x+labelW[inx], &controlK.orig.x, &controlK.orig.y );
- if ( pd->nameStr )
+ if (group->layoutProc) {
+ group->layoutProc( pd, inx, columnK.orig.x+labelW[inx], &controlK.orig.x,
+ &controlK.orig.y );
+ }
+ if ( pd->nameStr ) {
strcpy( helpStrP, pd->nameStr );
+ }
proc( pd, helpStr, controlK.orig.x, controlK.orig.y );
/*
* Set control term
@@ -2560,30 +2837,35 @@ static void LayoutControls(
controlSize_y = wControlGetHeight( pd->control );
controlK.term.x = controlK.orig.x+controlSize_x;
if ( (pd->option&PDO_DLGHORZ)==0 ||
- controlK.term.y < controlK.orig.y+controlSize_y )
+ controlK.term.y < controlK.orig.y+controlSize_y ) {
controlK.term.y = controlK.orig.y+controlSize_y;
+ }
if ( retW && pd->nameStr ) {
char * cp;
strcpy( message, pd->nameStr );
- for ( cp=message; *cp; cp++ ) if ( *cp == '-' ) *cp = '_';
+ for ( cp=message; *cp; cp++ ) if ( *cp == '-' ) { *cp = '_'; }
}
/*
* Set column term
*/
if ( (pd->option&PDO_DLGIGNOREX) == 0 ) {
if ( (pd->option&PDO_DLGUNDERCMDBUTT) == 0 ) {
- if ( columnK.term.x < controlK.term.x )
+ if ( columnK.term.x < controlK.term.x ) {
columnK.term.x = controlK.term.x;
+ }
} else {
- if ( columnK.term.x < controlK.term.x-90 )
+ if ( columnK.term.x < controlK.term.x-90 ) {
columnK.term.x = controlK.term.x-90;
+ }
}
}
- if ( columnK.term.y < controlK.term.y )
+ if ( columnK.term.y < controlK.term.y ) {
columnK.term.y = controlK.term.y;
+ }
if ( hasBox )
- if ( boxPos[boxCnt] < columnK.term.y+2 )
+ if ( boxPos[boxCnt] < columnK.term.y+2 ) {
boxPos[boxCnt] = columnK.term.y+2;
+ }
if ( (pd->option&PDO_DLGBOXEND) ) {
columnK.term.y += 8;
boxCnt++;
@@ -2592,22 +2874,26 @@ static void LayoutControls(
/*
* Set window term
*/
- if ( windowK.term.x < columnK.term.x )
+ if ( windowK.term.x < columnK.term.x ) {
windowK.term.x = columnK.term.x;
- if ( windowK.term.y < columnK.term.y )
+ }
+ if ( windowK.term.y < columnK.term.y ) {
windowK.term.y = columnK.term.y;
- if ( (pd[1].option&PDO_DLGCMDBUTTON) )
+ }
+ if ( (pd[1].option&PDO_DLGCMDBUTTON) ) {
areCmdButtons = TRUE;
+ }
SkipControl:
if ( (!inCmdButtons) &&
- (pd==&group->paramPtr[group->paramCnt-1] || (pd[1].option&PDO_DLGCMDBUTTON)) ) {
+ (pd==&group->paramPtr[group->paramCnt-1] || (pd[1].option&PDO_DLGCMDBUTTON)) ) {
columnK.orig.x = columnK.term.x + DlgSepMid;
if ( boxCnt ) {
boxTop = DlgSepTop;
if ( group->boxs == NULL ) {
group->boxs = (wBox_p*)MyMalloc( boxCnt * sizeof *(wBox_p*)0 );
for ( box=0; box<boxCnt; box++ ) {
- group->boxs[box] = wBoxCreate( group->win, DlgSepLeft, boxTop, NULL, wBoxThickW, columnK.term.x, boxPos[box]-boxTop );
+ group->boxs[box] = wBoxCreate( group->win, DlgSepLeft, boxTop, NULL, wBoxThickW,
+ columnK.term.x, boxPos[box]-boxTop );
boxTop = boxPos[box] + 4;
}
} else {
@@ -2622,69 +2908,88 @@ SkipControl:
columnK.orig.y = columnK.term.y = DlgSepTop;
controlK = columnK;
if ( group->okB ) {
- wControlSetPos( (wControl_p)(lastB=group->okB), columnK.orig.x, columnK.orig.y );
+ wControlSetPos( (wControl_p)(lastB=group->okB), columnK.orig.x,
+ columnK.orig.y );
controlK.term.y += wControlGetHeight((wControl_p)group->okB);
columnK.term.y = controlK.term.y + 3;
}
inCmdButtons = TRUE;
}
- LOG( log_paramLayout, 1, (" Col %dx%d..%dx%d Ctl %dx%d..%dx%d\n",
- columnK.orig.x, columnK.orig.y, columnK.term.x, columnK.term.y,
- controlK.orig.x, controlK.orig.y, controlK.term.x, controlK.term.y ) )
- if ( windowK.term.x < columnK.term.x )
+ if ( (pd->option & PDO_DLGIGNORE) == 0 ) {
+ LOG( log_paramLayout, 2, (" Col %dx%d..%dx%d Ctl %dx%d..%dx%d\n",
+ columnK.orig.x, columnK.orig.y, columnK.term.x, columnK.term.y,
+ controlK.orig.x, controlK.orig.y, controlK.term.x, controlK.term.y ) )
+ }
+ if ( windowK.term.x < columnK.term.x ) {
windowK.term.x = columnK.term.x;
- if ( windowK.term.y < columnK.term.y )
+ }
+ if ( windowK.term.y < columnK.term.y ) {
windowK.term.y = columnK.term.y;
+ }
}
if ( group->cancelB ) {
- if ( areCmdButtons )
+ if ( areCmdButtons ) {
columnK.term.y += 10;
- else if ( group->okB )
+ } else if ( group->okB ) {
columnK.term.y += 3;
- wControlSetPos( (wControl_p)(lastB=group->cancelB), columnK.orig.x, columnK.term.y );
+ }
+ wControlSetPos( (wControl_p)(lastB=group->cancelB), columnK.orig.x,
+ columnK.term.y );
columnK.term.y += wControlGetHeight((wControl_p)group->cancelB);
}
if ( group->helpB ) {
columnK.term.y += 10;
- wControlSetPos( (wControl_p)(lastB=group->helpB), columnK.orig.x, columnK.term.y );
+ wControlSetPos( (wControl_p)(lastB=group->helpB), columnK.orig.x,
+ columnK.term.y );
columnK.term.y += wControlGetHeight((wControl_p)group->helpB);
}
if ( lastB ) {
controlK.term.x = controlK.orig.x + wControlGetWidth((wControl_p)lastB);
- if ( columnK.term.x < controlK.term.x )
+ if ( columnK.term.x < controlK.term.x ) {
columnK.term.x = controlK.term.x;
+ }
}
- if ( windowK.term.x < columnK.term.x )
+ if ( windowK.term.x < columnK.term.x ) {
windowK.term.x = columnK.term.x;
- if ( windowK.term.y < columnK.term.y )
+ }
+ if ( windowK.term.y < columnK.term.y ) {
windowK.term.y = columnK.term.y;
+ }
- if ( retW )
+ if ( retW ) {
*retW = windowK.term.x;
- if ( retH )
+ }
+ if ( retH ) {
*retH = windowK.term.y;
+ }
+ LOG( log_paramLayout, 1, ( "LayoutControls:%s orig:%dx%d compute:%dx%d\n",
+ group->nameStr, group->origW, group->origH, windowK.term.x, windowK.term.y ) );
}
static void ParamDlgProc(
- wWin_p win,
- winProcEvent e,
- void * refresh,
- void * data )
+ wWin_p win,
+ winProcEvent e,
+ void * refresh,
+ void * data )
{
paramGroup_p pg = (paramGroup_p)data;
+ static int iResizeCnt = 0;
switch (e) {
case wClose_e:
- if ( pg->changeProc )
+ if ( pg->changeProc ) {
pg->changeProc( pg, -1, NULL );
- if ( (pg->options&PGO_NODEFAULTPROC) == 0 )
+ }
+ if ( (pg->options&PGO_NODEFAULTPROC) == 0 ) {
DefaultProc( win, wClose_e, data );
+ }
break;
case wResize_e:
- if (win == mapW)
- pg->changeProc(pg, wResize_e, NULL);
- else
- LayoutControls( pg, ParamPositionControl, NULL, NULL );
+ if (win == mapW && bInReadTracks ) {
+ break;
+ }
+ LOG( log_paramLayout, 1, ( "ParamDlgProc %d/n", iResizeCnt++ ) );
+ LayoutControls( pg, ParamPositionControl, NULL, NULL );
break;
default:
break;
@@ -2692,7 +2997,7 @@ static void ParamDlgProc(
}
/**
- * Create a dialog box from data definition.
+ * Create a dialog box from data definition.
*
* \param IN group data definition for the dialog
* \param IN title title of the new dialog
@@ -2706,15 +3011,15 @@ static void ParamDlgProc(
*/
wWin_p ParamCreateDialog(
- paramGroup_p group,
- char * title,
- char * okLabel,
- paramActionOkProc okProc,
- paramActionCancelProc cancelProc,
- BOOL_T needHelpButton,
- paramLayoutProc layoutProc,
- long winOption,
- paramChangeProc changeProc )
+ paramGroup_p group,
+ char * title,
+ char * okLabel,
+ paramActionOkProc okProc,
+ paramActionCancelProc cancelProc,
+ BOOL_T needHelpButton,
+ paramLayoutProc layoutProc,
+ long winOption,
+ paramChangeProc changeProc )
{
char helpStr[STR_SHORT_SIZE];
wWinPix_t w0, h0;
@@ -2726,39 +3031,53 @@ wWin_p ParamCreateDialog(
group->layoutProc = layoutProc;
group->changeProc = changeProc;
group->winOption = winOption;
- if ( (winOption&F_CENTER) == 0 )
+ if ( (winOption&F_CENTER) == 0 ) {
winOption |= F_RECALLPOS;
- if ( (winOption&F_RESIZE) != 0 )
+ }
+ if ( (winOption&F_RESIZE) != 0 ) {
winOption |= F_RECALLSIZE;
+ }
- group->win = wWinPopupCreate( mainW, DlgSepRight, DlgSepFrmBottom, helpStr, title, group->nameStr, F_AUTOSIZE|winOption, ParamDlgProc, group );
+ group->win = wWinPopupCreate( mainW, DlgSepRight, DlgSepFrmBottom, helpStr,
+ title, group->nameStr, F_AUTOSIZE|winOption, ParamDlgProc, group );
if ( okLabel && okProc ) {
sprintf( helpStr, "%s-ok", group->nameStr );
- group->okB = wButtonCreate( group->win, 0, 0, helpStr, okLabel, BB_DEFAULT, 0, ParamButtonOk, group );
+ group->okB = wButtonCreate( group->win, 0, 0, helpStr, okLabel, BB_DEFAULT, 0,
+ ParamButtonOk, group );
}
if ( group->cancelProc ) {
- group->cancelB = wButtonCreate( group->win, 0, 0, NULL, cancelLabel, BB_CANCEL, 0, ParamButtonCancel, group );
+ group->cancelB = wButtonCreate( group->win, 0, 0, NULL, cancelLabel, BB_CANCEL,
+ 0, ParamButtonCancel, group );
}
if ( needHelpButton ) {
sprintf( helpStr, "cmd%s", group->nameStr );
helpStr[3] = toupper((unsigned char)helpStr[3]);
- group->helpB = wButtonCreate( group->win, 0, 0, NULL, _("Help"), BB_HELP, 0, (wButtonCallBack_p)wHelp, MyStrdup(helpStr) );
+ group->helpB = wButtonCreate( group->win, 0, 0, NULL, _("Help"), BB_HELP, 0,
+ (wButtonCallBack_p)wHelp, MyStrdup(helpStr) );
}
+ LOG( log_paramLayout, 1, ( "ParamCreateDialog/" ) );
LayoutControls( group, ParamCreateControl, &group->origW, &group->origH );
group->origW += DlgSepRight;
group->origH += DlgSepBottom;
wWinGetSize( group->win, &w0, &h0 );
+ LOG( log_paramLayout, 1, ( " winSize: %dx%d\n", w0, h0 ) );
if ( (winOption&F_RESIZE) ) {
if ( group->origW != w0 ||
- group->origH != h0 ) {
+ group->origH != h0 ) {
+ LOG( log_paramLayout, 1, ( " RESIZE+change/" ) );
LayoutControls( group, ParamPositionControl, NULL, NULL );
}
+ wWinPix_t scr_w, scr_h;
+ wGetDisplaySize(&scr_w, &scr_h);
+ wSetGeometry(group->win, group->origW, scr_w-10, group->origH, scr_h, -1, -1,
+ -1);
} else {
w0 = max(group->origW, w0);
h0 = max(group->origH, h0);
+ LOG( log_paramLayout, 1, ( " wWinSetSize( %dx%d )\n", w0, h0 ) );
wWinSetSize( group->win, w0, h0 );
}
@@ -2771,13 +3090,15 @@ wWin_p ParamCreateDialog(
*
*/
EXPORT void ParamLayoutDialog(
- paramGroup_p pg )
+ paramGroup_p pg )
{
wWinPix_t w, h;
+ LOG( log_paramLayout, 1, ( "ParamLayoutDialog/" ) );
LayoutControls( pg, ParamPositionControl, &w, &h );
w += DlgSepRight;
h += DlgSepBottom;
if ( w != pg->origW || h != pg->origH ) {
+ LOG( log_paramLayout, 1, ( " wWinSetSize( %dx%d )\n", w, h ) );
wWinSetSize( pg->win, w, h );
pg->origW = w;
pg->origH = h;
@@ -2786,17 +3107,18 @@ EXPORT void ParamLayoutDialog(
EXPORT void ParamDialogOkActive(
- paramGroup_p pg,
- int active )
+ paramGroup_p pg,
+ int active )
{
- if ( pg->okB )
+ if ( pg->okB ) {
wControlActive( (wControl_p)pg->okB, active );
+ }
}
EXPORT void ParamCreateControls(
- paramGroup_p pg,
- paramChangeProc changeProc )
+ paramGroup_p pg,
+ paramChangeProc changeProc )
{
paramData_p pd;
char helpStr[STR_SHORT_SIZE], * helpStrP;
@@ -2807,8 +3129,9 @@ EXPORT void ParamCreateControls(
pd->group = pg;
strcpy( helpStrP, pd->nameStr );
ParamCreateControl( pd, helpStr, 0, 0 );
- if ( pd->type != PD_MENUITEM && pd->control )
+ if ( pd->type != PD_MENUITEM && pd->control ) {
wControlShow( pd->control, FALSE );
+ }
}
pg->changeProc = changeProc;
}
@@ -2816,15 +3139,13 @@ EXPORT void ParamCreateControls(
EXPORT void ParamInit( void )
{
- if (paramGroups_init) return;
+ if (paramGroups_init) { return; }
AddPlaybackProc( "PARAMETER", ParamPlayback, NULL );
AddPlaybackProc( "PARAMCHECK", ParamCheck, NULL );
log_paramLayout = LogFindIndex( "paramlayout" );
log_paraminput = LogFindIndex( "paraminput" );
- paramGroups_da.cnt = 0;
- paramGroups_da.max = 0;
- paramGroups_da.ptr = NULL;
+ DYNARR_INIT( paramGroup_p, paramGroups_da );
paramGroups_init = TRUE;
}
diff --git a/app/bin/param.h b/app/bin/param.h
index d72553e..004dcb5 100644
--- a/app/bin/param.h
+++ b/app/bin/param.h
@@ -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
*/
#ifndef PARAM_H
@@ -28,24 +28,29 @@
typedef struct turnoutInfo_t * turnoutInfo_p;
+extern wWinPix_t DlgSepTop;
+extern wWinPix_t DlgSepBottom;
+extern wWinPix_t DlgSepLeft;
+extern wWinPix_t DlgSepRight;
+
typedef enum {
- PD_LONG,
- PD_FLOAT,
- PD_RADIO,
- PD_TOGGLE,
- PD_STRING,
- PD_LIST,
- PD_DROPLIST,
- PD_COMBOLIST,
- PD_BUTTON,
- PD_COLORLIST,
- PD_MESSAGE, /* static text */
- PD_DRAW,
- PD_TEXT,
- PD_MENU,
- PD_MENUITEM,
- PD_BITMAP
- } parameterType;
+ PD_LONG,
+ PD_FLOAT,
+ PD_RADIO,
+ PD_TOGGLE,
+ PD_STRING,
+ PD_LIST,
+ PD_DROPLIST,
+ PD_COMBOLIST,
+ PD_BUTTON,
+ PD_COLORLIST,
+ PD_MESSAGE, /* static text */
+ PD_DRAW,
+ PD_TEXT,
+ PD_MENU,
+ PD_MENUITEM,
+ PD_BITMAP
+} parameterType;
// PD_FLOAT modifiers
#define PDO_DIM (1L<<0)
@@ -102,60 +107,61 @@ typedef struct paramGroup_t *paramGroup_p;
#define PDO_NORANGECHECK_LOW (1<<0)
#define PDO_NORANGECHECK_HIGH (1<<1)
typedef struct {
- long low;
- long high;
- wWinPix_t width;
- int rangechecks;
- } paramIntegerRange_t;
+ long low;
+ long high;
+ wWinPix_t width;
+ int rangechecks;
+} paramIntegerRange_t;
typedef struct {
- FLOAT_T low;
- FLOAT_T high;
- wWinPix_t width;
- int rangechecks;
- } paramFloatRange_t;
+ FLOAT_T low;
+ FLOAT_T high;
+ wWinPix_t width;
+ int rangechecks;
+} paramFloatRange_t;
typedef struct {
- wWinPix_t width;
- wWinPix_t height;
- wDrawRedrawCallBack_p redraw;
- playbackProc action;
- drawCmd_p d;
- } paramDrawData_t;
+ wWinPix_t width;
+ wWinPix_t height;
+ wDrawRedrawCallBack_p redraw;
+ playbackProc action;
+ drawCmd_p d;
+} paramDrawData_t;
typedef struct {
- wIndex_t number;
- wWinPix_t width;
- int colCnt;
- wWinPix_t * colWidths;
- const char * * colTitles;
- wWinPix_t height;
- } paramListData_t;
+ wIndex_t number;
+ wWinPix_t width;
+ int colCnt;
+ wWinPix_t * colWidths;
+ const char * * colTitles;
+ wWinPix_t height;
+} paramListData_t;
typedef struct {
- wWinPix_t width;
- wWinPix_t height;
- } paramTextData_t;
+ wWinPix_t width;
+ wWinPix_t height;
+} paramTextData_t;
typedef union {
- long l;
- FLOAT_T f;
- char * s;
- turnoutInfo_p p;
- wDrawColor dc;
- } paramOldData_t;
+ long l;
+ FLOAT_T f;
+ char * s;
+ turnoutInfo_p p;
+ wDrawColor dc;
+} paramOldData_t;
typedef struct {
- parameterType type;
- void * valueP;
- const char * nameStr;
- long option;
- const void * winData;
- const char * winLabel;
- long winOption;
- void * context;
- unsigned int max_string;
- wControl_p control;
- paramGroup_p group;
- paramOldData_t oldD, demoD;
- wBool_t enter_pressed;
- wBool_t bInvalid;
- } paramData_t, *paramData_p;
+ parameterType type;
+ void * valueP;
+ const char * nameStr;
+ long option;
+ const void * winData;
+ const char * winLabel;
+ long winOption;
+ void * context;
+ unsigned int max_string;
+ wControl_p control;
+ paramGroup_p group;
+ paramOldData_t oldD, demoD;
+ wBool_t enter_pressed;
+ wBool_t bInvalid;
+ wBool_t bShown;
+} paramData_t, *paramData_p;
typedef void (*paramGroupProc_t) ( long, long );
@@ -171,36 +177,56 @@ typedef void (*paramGroupProc_t) ( long, long );
#define PGO_PREFDRAWGROUP (1<<9)
#define PGO_PREFMISC (1<<10)
-typedef void (*paramLayoutProc)( paramData_t *, int, wWinPix_t, wWinPix_t *, wWinPix_t * );
+typedef void (*paramLayoutProc)( paramData_t *, int, wWinPix_t, wWinPix_t *,
+ wWinPix_t * );
typedef void (*paramActionOkProc)( void * );
typedef void (*paramActionCancelProc)( wWin_p );
typedef void (*paramChangeProc)( paramGroup_p, int, void * );
typedef struct paramGroup_t {
- char * nameStr;
- long options;
- paramData_p paramPtr;
- int paramCnt;
- paramActionOkProc okProc;
- paramActionCancelProc cancelProc;
- paramLayoutProc layoutProc;
- long winOption;
- paramChangeProc changeProc;
- long action;
- paramGroupProc_t proc;
- wWin_p win;
- wButton_p okB;
- wButton_p cancelB;
- wButton_p helpB;
- wWinPix_t origW;
- wWinPix_t origH;
- wBox_p * boxs;
- } paramGroup_t;
+ char * nameStr;
+ long options;
+ paramData_p paramPtr;
+ int paramCnt;
+ paramActionOkProc okProc;
+ paramActionCancelProc cancelProc;
+ paramLayoutProc layoutProc;
+ long winOption;
+ paramChangeProc changeProc;
+ long action;
+ paramGroupProc_t proc;
+ wWin_p win;
+ wButton_p okB;
+ wButton_p cancelB;
+ wButton_p helpB;
+ wWinPix_t origW;
+ wWinPix_t origH;
+ wBox_p * boxs;
+} paramGroup_t;
wIndex_t ColorTabLookup( wDrawColor );
extern char * PREFSECT;
// extern char decodeErrorStr[STR_SHORT_SIZE];
+
+
+#define ANGLE_POLAR (0)
+#define ANGLE_CART (1)
+extern long angleSystem;
+#define PutAngle(X) ((angleSystem==ANGLE_POLAR)?(X):NormalizeAngle(90.0-(X)))
+
+#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
+
FLOAT_T DecodeFloat( wString_p, BOOL_T * );
FLOAT_T DecodeDistance( wString_p, BOOL_T * );
char * FormatLong( long );
@@ -224,7 +250,6 @@ void ParamRestoreAll( void );
void ParamSaveAll( void );
void ParamMenuPush( void * );
-extern int paramHiliteFast;
void ParamHilite( wWin_p, wControl_p, BOOL_T );
wBool_t ParamCheckInputs( paramGroup_p pg, wControl_p b );
@@ -244,7 +269,8 @@ long GetChanges(paramGroup_p pg);
if ( HS ) GetBalloonHelpStr(HS);
#define PD_F_ALT_CANCELLABEL (1L<<30) /**<use Close or Cancel for the discard button */
-wWin_p ParamCreateDialog( paramGroup_p, char *, char *, paramActionOkProc, paramActionCancelProc, BOOL_T, paramLayoutProc, long, paramChangeProc );
+wWin_p ParamCreateDialog( paramGroup_p, char *, char *, paramActionOkProc,
+ paramActionCancelProc, BOOL_T, paramLayoutProc, long, paramChangeProc );
void ParamCreateControls( paramGroup_p, paramChangeProc );
void ParamLayoutDialog( paramGroup_p );
@@ -252,6 +278,5 @@ void ParamDialogOkActive( paramGroup_p, int );
void ParamResetInvalid( wWin_p win );
-#define ParamControlShow( PG, INX, SHOW ) \
- wControlShow( ((PG)->paramPtr)[INX].control, SHOW )
+void ParamControlShow( paramGroup_t *, wIndex_t, wBool_t );
#endif
diff --git a/app/bin/paramfile.c b/app/bin/paramfile.c
index f72f405..994a47d 100644
--- a/app/bin/paramfile.c
+++ b/app/bin/paramfile.c
@@ -2,23 +2,23 @@
* Handling of parameter files
*/
- /* XTrackkCad - Model Railroad CAD
- * Copyright (C) 2019 Martin Fischer
- *
- * 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.
- */
+/* XTrackkCad - Model Railroad CAD
+ * Copyright (C) 2019 Martin Fischer
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
#include "common.h"
#include "compound.h"
@@ -26,7 +26,6 @@
#include "custom.h"
#include "fileio.h"
#include "layout.h"
-#include "misc2.h"
#include "paths.h"
#include "include/paramfile.h"
#include "include/paramfilelist.h"
@@ -36,7 +35,7 @@
static long paramCheckSum;
typedef enum paramFileState(*GetCompatibilityFunction)(int index,
- SCALEINX_T scale);
+ SCALEINX_T scale);
GetCompatibilityFunction GetCompatibility[] = {
GetTrackCompatibility,
@@ -55,7 +54,7 @@ GetCompatibilityFunction GetCompatibility[] = {
*/
wBool_t IsParamValid(
- int fileInx)
+ int fileInx)
{
if (fileInx == PARAM_DEMO) {
return (curDemo >= 0);
@@ -82,13 +81,13 @@ SetParamFileDir(char *fullPath)
}
char * GetParamFileName(
- int fileInx)
+ int fileInx)
{
return paramFileInfo(fileInx).name;
}
char * GetParamFileContents(
- int fileInx)
+ int fileInx)
{
return paramFileInfo(fileInx).contents;
}
@@ -137,7 +136,7 @@ void SetParamFileState(int index)
//Set yet?
if (scale>=0) {
for (int i = 0; i < COMPATIBILITYCHECKSCOUNT && state < PARAMFILE_FIT &&
- state != PARAMFILE_UNLOADED; i++) {
+ state != PARAMFILE_UNLOADED; i++) {
newState = (*GetCompatibility[i])(index, scale);
if (newState > state || newState == PARAMFILE_UNLOADED) {
state = newState;
@@ -155,12 +154,12 @@ void SetParamFileState(int index)
*
* \returns True if it succeeds, false if it fails.
*/
-
+
static bool
CheckFileReadable(const char *file)
{
if(!access( file, R_OK )) {
- return TRUE;
+ return TRUE;
} else {
return FALSE;
}
@@ -204,7 +203,8 @@ ReloadDeletedParamFile(int fileindex)
{
curParamFileIndex = fileindex;
paramFileInfo(curParamFileIndex).valid = TRUE;
- paramFileInfo(curParamFileIndex).deleted = !ReadParams(0, NULL, paramFileInfo(curParamFileIndex).name);
+ paramFileInfo(curParamFileIndex).deleted = !ReadParams(0, NULL,
+ paramFileInfo(curParamFileIndex).name);
paramFileInfo(curParamFileIndex).contents = MyStrdup(curContents);
SetParamFileState(curParamFileIndex);
@@ -222,9 +222,9 @@ ReloadDeletedParamFile(int fileindex)
*/
bool ReadParams(
- long key,
- const char * dirName,
- const char * fileName)
+ long key,
+ const char * dirName,
+ const char * fileName)
{
FILE * oldFile;
char *cp;
@@ -233,6 +233,7 @@ bool ReadParams(
long oldCheckSum;
long checkSum = 0;
BOOL_T checkSummed;
+ BOOL_T bFoundContents = FALSE;
paramVersion = -1;
if (dirName) {
@@ -255,7 +256,7 @@ bool ReadParams(
SetUserLocale();
NoticeMessage(MSG_OPEN_FAIL, _("Continue"), NULL, _("Parameter"), paramFileName,
- strerror(errno));
+ strerror(errno));
return FALSE;
}
@@ -288,6 +289,7 @@ bool ReadParams(
/* Close file and reset the locale settings */
if (paramFile) {
fclose(paramFile);
+ paramFile = NULL;
}
SetUserLocale();
return FALSE;
@@ -312,8 +314,12 @@ bool ReadParams(
#ifdef UTFCONVERT
ConvertUTF8ToSystem(paramLine + 9);
#endif
- curContents = MyStrdup(paramLine + 9);
- curSubContents = curContents;
+ if ( bFoundContents == FALSE ) {
+ // Only use the first CONTENTS
+ curContents = MyStrdup(paramLine + 9);
+ curSubContents = curContents;
+ bFoundContents = TRUE;
+ }
skip = FALSE;
} else if (strncmp(paramLine, "SUBCONTENTS ", 12) == 0) {
#ifdef UTFCONVERT
@@ -324,17 +330,20 @@ bool ReadParams(
} else if (strncmp(paramLine, "PARAM ", 6) == 0) {
paramVersion = strtol(paramLine + 6, &cp, 10);
if (cp)
- while (*cp && isspace((unsigned char)*cp)) cp++;
+ while (*cp && isspace((unsigned char)*cp)) { cp++; }
if (paramVersion > iParamVersion) {
if (cp && *cp) {
- NoticeMessage(MSG_PARAM_UPGRADE_VERSION1, _("Ok"), NULL, paramVersion, iParamVersion, sProdName, cp);
+ NoticeMessage(MSG_PARAM_UPGRADE_VERSION1, _("Ok"), NULL, paramVersion,
+ iParamVersion, sProdName, cp);
} else {
- NoticeMessage(MSG_PARAM_UPGRADE_VERSION2, _("Ok"), NULL, paramVersion, iParamVersion, sProdName);
+ NoticeMessage(MSG_PARAM_UPGRADE_VERSION2, _("Ok"), NULL, paramVersion,
+ iParamVersion, sProdName);
}
break;
}
if (paramVersion < iMinParamVersion) {
- NoticeMessage(MSG_PARAM_BAD_FILE_VERSION, _("Ok"), NULL, paramVersion, iMinParamVersion, sProdName);
+ NoticeMessage(MSG_PARAM_BAD_FILE_VERSION, _("Ok"), NULL, paramVersion,
+ iMinParamVersion, sProdName);
break;
}
} else if (skip && (strncmp(paramLine, " ", 1) == 0)) {
@@ -344,21 +353,24 @@ bool ReadParams(
} else {
for (pc = 0; pc < paramProc_da.cnt; pc++) {
if (strncmp(paramLine, paramProc(pc).name,
- strlen(paramProc(pc).name)) == 0) {
+ strlen(paramProc(pc).name)) == 0) {
skip = FALSE; //Stop skip so we re-message
paramProc(pc).proc(paramLine);
goto nextLine;
}
}
if (!skip) {
- if (InputError(_("Unknown param file line - skip until next good object?"), TRUE)) { //OK to carry on
+ if (InputError(_("Unknown param file line - skip until next good object?"),
+ TRUE)) { //OK to carry on
/* SKIP until next main line we recognize */
skip = TRUE;
skipLines++;
goto nextLine;
} else {
- if (skipLines > 0)
- NoticeMessage(MSG_PARAM_LINES_SKIPPED, _("Ok"), NULL, paramFileName, skipLines);
+ if (skipLines > 0) {
+ NoticeMessage(MSG_PARAM_LINES_SKIPPED, _("Ok"), NULL, paramFileName,
+ skipLines);
+ }
if (paramFile) {
fclose(paramFile);
paramFile = NULL;
@@ -373,7 +385,7 @@ bool ReadParams(
}
skipLines++;
}
- nextLine:
+nextLine:
;
}
if (key) {
@@ -381,6 +393,7 @@ bool ReadParams(
/* Close file and reset the locale settings */
if (paramFile) {
fclose(paramFile);
+ paramFile = NULL;
}
SetUserLocale();
@@ -389,10 +402,13 @@ bool ReadParams(
return FALSE;
}
}
- if (skipLines > 0)
- NoticeMessage(MSG_PARAM_LINES_SKIPPED, _("Ok"), NULL, paramFileName, skipLines);
+ if (skipLines > 0) {
+ NoticeMessage(MSG_PARAM_LINES_SKIPPED, _("Ok"), NULL, paramFileName,
+ skipLines);
+ }
if (paramFile) {
fclose(paramFile);
+ paramFile = NULL;
}
free(paramFileName);
paramFileName = NULL;
diff --git a/app/bin/paramfilelist.c b/app/bin/paramfilelist.c
index e922f73..f6703f3 100644
--- a/app/bin/paramfilelist.c
+++ b/app/bin/paramfilelist.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
*/
@@ -28,7 +28,6 @@
#include "dynstring.h"
#include "fileio.h"
#include "layout.h"
-#include "misc2.h"
#include "paths.h"
#include "include/paramfile.h"
#include "include/paramfilelist.h"
@@ -40,6 +39,7 @@ dynArr_t paramFileInfo_da;
int curParamFileIndex = PARAM_DEMO;
static int log_params;
+static int log_paramupdate;
static char * customPath;
static char * customPathBak;
@@ -51,7 +51,7 @@ static char * customPathBak;
int GetParamFileCount()
{
- return (paramFileInfo_da.cnt);
+ return (paramFileInfo_da.cnt);
}
/**
@@ -66,9 +66,9 @@ ReadParamError(char *file)
DynString error_msg;
DynStringMalloc(&error_msg, 100);
DynStringPrintf(&error_msg,
- _("The parameter file: %s could not be found and was probably deleted or moved. "
- "The file is removed from the active parameter file list."),
- file);
+ _("The parameter file: %s could not be found and was probably deleted or moved. "
+ "The file is removed from the active parameter file list."),
+ file);
wNoticeEx(NT_ERROR, DynStringToCStr(&error_msg), "OK", NULL);
DynStringFree(&error_msg);
}
@@ -87,70 +87,108 @@ ReadParamError(char *file)
static BOOL_T UpdateParamFiles(void)
{
- char fileName[STR_LONG_SIZE], *fileNameP;
- const char * cp;
- FILE * updateF;
- long updateTime;
- long lastTime;
-
- MakeFullpath(&fileNameP, libDir, "xtrkcad.upd", NULL);
- updateF = fopen(fileNameP, "r");
- free(fileNameP);
- if (updateF == NULL) {
- return FALSE;
- }
- if (fgets(message, sizeof message, updateF) == NULL) {
- NoticeMessage("short file: xtrkcad.upd", _("Ok"), NULL);
- fclose(updateF);
- return FALSE;
- }
- wPrefGetInteger("file", "updatetime", &lastTime, 0);
- updateTime = atol(message);
- if (lastTime >= updateTime) {
- fclose(updateF);
- return FALSE;
- }
-
- while ((fgets(fileName, STR_LONG_SIZE, updateF)) != NULL) {
- FILE * paramF;
- char * contents;
-
- Stripcr(fileName);
- InfoMessage(_("Updating %s"), fileName);
- MakeFullpath(&fileNameP, libDir, "params", fileName, NULL);
- paramF = fopen(fileNameP, "r");
- if (paramF == NULL) {
- NoticeMessage(MSG_PRMFIL_OPEN_NEW, _("Ok"), NULL, fileNameP);
- free(fileNameP);
- continue;
- }
- contents = NULL;
- while ((fgets(message, sizeof message, paramF)) != NULL) {
- if (strncmp(message, "CONTENTS", 8) == 0) {
- Stripcr(message);
- contents = message + 9;
- break;
- }
- }
- fclose(paramF);
- if (contents == NULL) {
- NoticeMessage(MSG_PRMFIL_NO_CONTENTS, _("Ok"), NULL, fileNameP);
- free(fileNameP);
- continue;
- }
- cp = wPrefGetString("Parameter File Map", contents);
- wPrefSetString("Parameter File Map", contents, fileNameP);
- if (cp != NULL && *cp != '\0') {
- /* been there, done that */
- free(fileNameP);
- continue;
- }
-
- free(fileNameP);
- }
- fclose(updateF);
- wPrefSetInteger("file", "updatetime", updateTime);
- return TRUE;
+ char fileName[STR_LONG_SIZE], *fileNameP;
+// const char * cp;
+ FILE * updateF;
+ long updateTime = -1;
+ long lastTime;
+
+ MakeFullpath(&fileNameP, libDir, "xtrkcad.upd", NULL);
+ updateF = fopen(fileNameP, "r");
+ free(fileNameP);
+ if (updateF == NULL) {
+ return FALSE;
+ }
+ wPrefGetInteger("file", "updatetime", &lastTime, 0);
+
+ while ((fgets(fileName, STR_LONG_SIZE, updateF)) != NULL) {
+ if ( fileName[0] == '#' ) {
+ continue;
+ }
+ if ( updateTime == -1 ) {
+ updateTime = atol(fileName);
+ LOG1( log_paramupdate, ( "UpdateParamFiles Last: %ld, Update: %ld\n", lastTime,
+ updateTime ) );
+ if ( updateTime == 0 ) {
+ NoticeMessage( "xtrkcad.upd : invalid Update Time", _("OK"), NULL );
+ fclose(updateF);
+ return FALSE;
+ }
+ if (lastTime >= updateTime) {
+ fclose(updateF);
+ return FALSE;
+ }
+ continue;
+ }
+ FILE * paramF;
+
+ Stripcr(fileName);
+ InfoMessage(_("Updating %s"), fileName);
+ LOG1( log_paramupdate, ( "Updating %s\n", fileName ) );
+ MakeFullpath(&fileNameP, libDir, "params", fileName, NULL);
+ paramF = fopen(fileNameP, "r");
+ if (paramF == NULL) {
+ NoticeMessage(MSG_PRMFIL_OPEN_NEW, _("Ok"), NULL, fileNameP);
+ free(fileNameP);
+ continue;
+ }
+ char * newContents = NULL;
+ char * oldContents = NULL;
+ while ((fgets(message, sizeof message, paramF)) != NULL) {
+ if (strncmp(message, "CONTENTS ", 9) == 0) {
+ Stripcr(message);
+ if ( newContents == NULL ) {
+ // first CONTENTS
+ newContents = MyStrdup(message + 9);
+ // Get old CONTENTS->FILENAME mapping
+ char * cp = wPrefGetString("Parameter File Map", newContents);
+ if ( cp ) {
+ LOG1( log_paramupdate, ( "ParmUpdate: Upd CONTENTS %s (was %s) -> %s\n",
+ newContents,
+ cp?cp:"<>", fileNameP ) );
+ } else {
+ LOG1( log_paramupdate, ( "ParmUpdate: New CONTENTS %s\n", newContents ) );
+ }
+ // Update CONTENTS->FILENAME mapping
+ wPrefSetString("Parameter File Map", newContents, fileNameP);
+ } else {
+ // Subsequent old CONTENTS
+ oldContents = message + 9;
+ LOG1( log_paramupdate, ( " Old CONTENTS %s\n", oldContents ) );
+ // Check 'Parameter Files Names' map
+ for (int fileNo = 1; ; fileNo++) {
+ char fileNoS[4+9+1];
+ sprintf(fileNoS, "File%d", fileNo);
+ char * prevContents = wPrefGetString("Parameter File Names", fileNoS);
+ if (prevContents == NULL || *prevContents == '\0') {
+ // End of list
+ break;
+ }
+ if ( strcmp( oldContents, prevContents ) == 0 ) {
+ // Update contents index map
+ LOG1( log_paramupdate, ( "ParamUpdate: Found at %s -> %s\n", fileNoS,
+ newContents ) );
+ wPrefSetString( "Parameter File Names", fileNoS, newContents );
+ break;
+ }
+ }
+ }
+ }
+ }
+ if ( newContents ) {
+ MyFree( newContents );
+ }
+ fclose(paramF);
+ if (newContents == NULL) {
+ NoticeMessage(MSG_PRMFIL_NO_CONTENTS, _("Ok"), NULL, fileNameP);
+ }
+
+ free(fileNameP);
+ }
+ fclose(updateF);
+ LOG1( log_paramupdate, ( "Param updatetime -> %d\n", updateTime ) );
+ wPrefSetInteger("file", "updatetime", updateTime);
+ return TRUE;
}
/**
@@ -159,57 +197,67 @@ static BOOL_T UpdateParamFiles(void)
*/
void LoadParamFileList(void)
{
- int fileNo;
- BOOL_T updated = FALSE;
- long *favoriteList = NULL;
- long favorites;
- int nextFavorite = 0;
-
- updated = UpdateParamFiles();
-
- wPrefGetIntegerBasic(FAVORITESECTION, FAVORITETOTALS, &favorites, 0);
- if (favorites) {
- DynString topic;
- favoriteList = MyMalloc(sizeof(long)*favorites);
- if (!favoriteList) {
- AbortProg("Couldn't allocate memory for favorite list!\n");
- }
-
- DynStringMalloc(&topic, 16);
- for (int i = 0; i < favorites; i++) {
- DynStringPrintf(&topic, FAVORITEKEY, i);
- wPrefGetIntegerBasic(FAVORITESECTION, DynStringToCStr(&topic), &favoriteList[i],
- 0);
- }
- DynStringFree(&topic);
- }
-
- for (fileNo = 1; ; fileNo++) {
- char *fileName;
- const char * contents;
- enum paramFileState structState = PARAMFILE_UNLOADED;
-
-
- sprintf(message, "File%d", fileNo);
- contents = wPrefGetString("Parameter File Names", message);
- if (contents == NULL || *contents == '\0') {
- break;
- }
- InfoMessage("Parameters for %s", contents);
- fileName = wPrefGetString("Parameter File Map", contents);
- if (fileName == NULL || *fileName == '\0') {
- NoticeMessage(MSG_PRMFIL_NO_MAP, _("Ok"), NULL, contents);
- continue;
- }
- char * share;
-
- // Rewire to the latest system level
+ int fileNo;
+ BOOL_T updated = FALSE;
+ long *favoriteList = NULL;
+ long favorites;
+ int nextFavorite = 0;
+
+ updated = UpdateParamFiles();
+
+ wPrefGetIntegerBasic(FAVORITESECTION, FAVORITETOTALS, &favorites, 0);
+ if (favorites) {
+ DynString topic;
+ favoriteList = MyMalloc(sizeof(long)*favorites);
+
+ DynStringMalloc(&topic, 16);
+ for (int i = 0; i < favorites; i++) {
+ DynStringPrintf(&topic, FAVORITEKEY, i);
+ wPrefGetIntegerBasic(FAVORITESECTION, DynStringToCStr(&topic), &favoriteList[i],
+ 0);
+ }
+ DynStringFree(&topic);
+ }
+
+ for (fileNo = 1; ; fileNo++) {
+ char *fileName;
+ const char * contents;
+// enum paramFileState structState = PARAMFILE_UNLOADED;
+
+
+ sprintf(message, "File%d", fileNo);
+ contents = wPrefGetString("Parameter File Names", message);
+ if (contents == NULL || *contents == '\0') {
+ break;
+ }
+ InfoMessage("Parameters for %s", contents);
+ fileName = wPrefGetString("Parameter File Map", contents);
+ if (fileName == NULL || *fileName == '\0') {
+ NoticeMessage(MSG_PRMFIL_NO_MAP, _("Ok"), NULL, contents);
+ continue;
+ }
+ char * share;
+
+ // Rewire to the latest system level
#define SHAREPARAMS (PATH_SEPARATOR "share" PATH_SEPARATOR "xtrkcad" PATH_SEPARATOR "params" PATH_SEPARATOR)
- if ((share= strstr(fileName,SHAREPARAMS))) {
- share += strlen(SHAREPARAMS);
- MakeFullpath(&fileName, wGetAppLibDir(), "params", share, NULL);
- wPrefSetString("Parameter File Map", contents, fileName);
- }
+#define SHAREBETAPARAMS (PATH_SEPARATOR "share" PATH_SEPARATOR "xtrkcad-beta" PATH_SEPARATOR "params" PATH_SEPARATOR)
+ if ((share= strstr(fileName,SHAREPARAMS))) {
+ share += strlen(SHAREPARAMS);
+ }
+#ifndef WINDOWS
+#ifndef __APPLE__
+ if ( share == NULL &&
+ (share= strstr(fileName,SHAREBETAPARAMS))) {
+ share += strlen(SHAREBETAPARAMS);
+ }
+#endif
+#endif
+ if ( share ) {
+ MakeFullpath(&fileName, wGetAppLibDir(), "params", share, NULL);
+ LOG1( log_paramupdate, ( "Param LoadParamList: %s -> %s\n", contents,
+ fileName ) );
+ wPrefSetString("Parameter File Map", contents, fileName);
+ }
if (ReadParamFile(fileName) >= 0) {
@@ -234,13 +282,13 @@ void LoadParamFileList(void)
} else {
ReadParamError(fileName);
}
- }
- curParamFileIndex = PARAM_CUSTOM;
- if (updated) {
- SaveParamFileList();
- }
+ }
+ curParamFileIndex = PARAM_CUSTOM;
+ if (updated) {
+ SaveParamFileList();
+ }
- MyFree(favoriteList);
+ MyFree(favoriteList);
}
/**
@@ -251,45 +299,56 @@ void LoadParamFileList(void)
void SaveParamFileList(void)
{
- int fileInx;
- int fileNo;
- int favorites;
- char * contents, *cp;
-
- for (fileInx = 0, fileNo = 1, favorites = 0; fileInx < paramFileInfo_da.cnt;
- fileInx++) {
- if (paramFileInfo(fileInx).valid && (!paramFileInfo(fileInx).deleted ||
- paramFileInfo(fileInx).favorite)) {
- sprintf(message, "File%d", fileNo);
- contents = paramFileInfo(fileInx).contents;
- for (cp = contents; *cp; cp++) {
- if (*cp == '=' || *cp == '\'' || *cp == '"' || *cp == ':' || *cp == '.') {
- *cp = ' ';
- }
- }
- wPrefSetString("Parameter File Names", message, contents);
- wPrefSetString("Parameter File Map", contents, paramFileInfo(fileInx).name);
- if (paramFileInfo(fileInx).favorite) {
- sprintf(message, FAVORITEKEY, favorites);
- wPrefSetInteger(FAVORITESECTION, message, fileNo);
- sprintf(message, FAVORITEDELETED, fileNo);
- wPrefSetInteger(FAVORITESECTION, message, paramFileInfo(fileInx).deleted);
- favorites++;
- }
- fileNo++;
- }
- }
- sprintf(message, "File%d", fileNo);
- wPrefSetString("Parameter File Names", message, "");
- wPrefSetInteger(FAVORITESECTION, FAVORITETOTALS, favorites);
+ int fileInx;
+ int fileNo;
+ int favorites;
+ char * contents, *cp;
+
+ for (fileInx = 0, fileNo = 1, favorites = 0; fileInx < paramFileInfo_da.cnt;
+ fileInx++) {
+ if (paramFileInfo(fileInx).valid && (!paramFileInfo(fileInx).deleted ||
+ paramFileInfo(fileInx).favorite)) {
+ sprintf(message, "File%d", fileNo);
+ contents = paramFileInfo(fileInx).contents;
+ for (cp = contents; *cp; cp++) {
+ if (*cp == '=' || *cp == '\'' || *cp == '"' || *cp == ':' || *cp == '.') {
+ *cp = ' ';
+ }
+ }
+ LOG1( log_paramupdate, ( "Param SaveFileList: %s -> %s\n", message,
+ contents ) );
+ wPrefSetString("Parameter File Names", message, contents);
+ LOG1( log_paramupdate, ( "Param %s -> %s\n", contents,
+ paramFileInfo(fileInx).name ) );
+ wPrefSetString("Parameter File Map", contents, paramFileInfo(fileInx).name);
+ if (paramFileInfo(fileInx).favorite) {
+ sprintf(message, FAVORITEKEY, favorites);
+ LOG1( log_paramupdate, ( "Param Favorite %s -> %d\n", message,
+ fileNo ) );
+ wPrefSetInteger(FAVORITESECTION, message, fileNo);
+ sprintf(message, FAVORITEDELETED, fileNo);
+ LOG1( log_paramupdate, ( "Param %s -> %d\n", message,
+ paramFileInfo(fileInx).deleted ) );
+ wPrefSetInteger(FAVORITESECTION, message, paramFileInfo(fileInx).deleted);
+ favorites++;
+ }
+ fileNo++;
+ }
+ }
+ sprintf(message, "File%d", fileNo);
+ LOG1( log_paramupdate, ( "Param SaveFileList: %s -> <>\n", message ) );
+ wPrefSetString("Parameter File Names", message, "");
+ LOG1( log_paramupdate, ( "Param Favorite %s -> %d\n", FAVORITETOTALS,
+ favorites ) );
+ wPrefSetInteger(FAVORITESECTION, FAVORITETOTALS, favorites);
}
void
UpdateParamFileList(void)
{
- for (size_t i = 0; i < (unsigned)paramFileInfo_da.cnt; i++) {
- SetParamFileState((int)i);
- }
+ for (size_t i = 0; i < (unsigned)paramFileInfo_da.cnt; i++) {
+ SetParamFileState((int)i);
+ }
}
@@ -314,59 +373,68 @@ UpdateParamFileList(void)
*/
int LoadParamFile(
- int files,
- char ** fileName,
- void * data)
+ int files,
+ char ** fileName,
+ void * data)
{
- wIndex_t inx;
- int i = 0;
+ wIndex_t inx;
+ int i = 0;
- assert(fileName != NULL);
- assert(files > 0);
+ CHECK(fileName != NULL);
+ CHECK(files > 0);
- for (i = 0; i < files; i++) {
- enum paramFileState structState = PARAMFILE_UNLOADED;
- int newIndex;
+ for (i = 0; i < files; i++) {
+// enum paramFileState structState = PARAMFILE_UNLOADED;
+ int newIndex;
- curContents = curSubContents = NULL;
+ curContents = curSubContents = NULL;
- newIndex = ReadParamFile(fileName[i]);
+ newIndex = ReadParamFile(fileName[i]);
if (newIndex >= 0) {
// in case the contents is already present, make invalid
for (inx = 0; inx < newIndex; inx++) {
if (paramFileInfo(inx).valid &&
- strcmp(paramFileInfo(inx).contents, curContents) == 0) {
+ strcmp(paramFileInfo(inx).contents, curContents) == 0) {
paramFileInfo(inx).valid = FALSE;
break;
}
}
+ LOG1( log_paramupdate, ( "Param Load: %s -> %s\n", curContents,
+ paramFileInfo(curParamFileIndex).name) );
wPrefSetString("Parameter File Map", curContents,
- paramFileInfo(curParamFileIndex).name);
+ paramFileInfo(curParamFileIndex).name);
} else {
ReadParamError(fileName[i]);
}
- }
- //Only set the ParamFileDir if not the system directory
- if (!strstr(fileName[i-1],SHAREPARAMS))
- SetParamFileDir(fileName[i - 1]);
- curParamFileIndex = PARAM_CUSTOM;
- DoChangeNotification(CHANGE_PARAMS);
- return TRUE;
+ }
+ //Only set the ParamFileDir if not the system directory
+ if ( (!strstr(fileName[i-1],SHAREPARAMS))
+#ifndef WINDOWS
+#ifndef __APPLE__
+ && (!strstr(fileName[i-1],SHAREBETAPARAMS))
+#endif
+#endif
+ ) {
+ SetParamFileDir(fileName[i - 1]);
+ }
+ curParamFileIndex = PARAM_CUSTOM;
+ DoChangeNotification(CHANGE_PARAMS);
+ return TRUE;
}
static void ReadCustom(void)
{
- FILE * f;
- MakeFullpath(&customPath, workingDir, sCustomF, NULL);
- customPathBak = MyStrdup(customPath);
- customPathBak[ strlen(customPathBak)-1 ] = '1';
- f = fopen(customPath, "r");
- if (f != NULL) {
- fclose(f);
- curParamFileIndex = PARAM_CUSTOM;
- ReadParams(0, workingDir, sCustomF);
- }
+ FILE * f;
+ MakeFullpath(&customPath, workingDir, sCustomF, NULL);
+ customPathBak = MyStrdup(customPath);
+ customPathBak[ strlen(customPathBak)-1 ] = '1';
+ f = fopen(customPath, "r");
+ if (f != NULL) {
+ fclose(f);
+ curParamFileIndex = PARAM_CUSTOM;
+ ReadParams(0, workingDir, sCustomF);
+ }
}
@@ -376,23 +444,23 @@ static void ReadCustom(void)
FILE * OpenCustom(char *mode)
{
- FILE * ret = NULL;
-
- if (inPlayback) {
- return NULL;
- }
- if (*mode == 'w') {
- rename(customPath, customPathBak);
- }
- if (customPath) {
- ret = fopen(customPath, mode);
- if (ret == NULL) {
- NoticeMessage(MSG_OPEN_FAIL, _("Continue"), NULL, _("Custom"), customPath,
- strerror(errno));
- }
- }
-
- return ret;
+ FILE * ret = NULL;
+
+ if (inPlayback) {
+ return NULL;
+ }
+ if (*mode == 'w') {
+ rename(customPath, customPathBak);
+ }
+ if (customPath) {
+ ret = fopen(customPath, mode);
+ if (ret == NULL) {
+ NoticeMessage(MSG_OPEN_FAIL, _("Continue"), NULL, _("Custom"), customPath,
+ strerror(errno));
+ }
+ }
+
+ return ret;
}
/**
* Update and open the parameter files dialog box
@@ -402,46 +470,47 @@ FILE * OpenCustom(char *mode)
static void DoParamFileListDialog(void *junk)
{
- DoParamFiles(junk);
- ParamFileListLoad(paramFileInfo_da.cnt, &paramFileInfo_da);
+ DoParamFiles(junk);
+ ParamFileListLoad(paramFileInfo_da.cnt, &paramFileInfo_da);
}
addButtonCallBack_t ParamFilesInit(void)
{
RegisterChangeNotification(ParamFilesChange);
- return &DoParamFileListDialog;
+ return &DoParamFileListDialog;
}
/**
* Get the initial parameter files. The Xtrkcad.xtq file containing scale and
* demo definitions is read.
- *
+ *
* \return FALSE on error, TRUE otherwise
*/
BOOL_T ParamFileListInit(void)
{
- /** @logcmd @showrefby params=n paramfilelist.c Log ReadParams
- * (including scale file (xtq), custom file (*.cus) and other params (xtp))
+ /** @logcmd @showrefby params=n paramfilelist.c Log ReadParams
+ * (including scale file (xtq), custom file (*.cus) and other params (xtp))
*/
- log_params = LogFindIndex("params");
+ log_params = LogFindIndex("params");
+ log_paramupdate = LogFindIndex("paramupdate");
- SetCLocale();
+ SetCLocale();
// get the default definitions
- if (ReadParams(lParamKey, libDir, sParamQF) == FALSE) {
+ if (ReadParams(lParamKey, libDir, sParamQF) == FALSE) {
SetUserLocale();
- return FALSE;
- }
+ return FALSE;
+ }
- curParamFileIndex = PARAM_CUSTOM;
+ curParamFileIndex = PARAM_CUSTOM;
- if (lParamKey == 0) {
- LoadParamFileList();
- ReadCustom();
- }
+ if (lParamKey == 0) {
+ LoadParamFileList();
+ ReadCustom();
+ }
- SetUserLocale();
- return TRUE;
+ SetUserLocale();
+ return TRUE;
}
@@ -464,8 +533,8 @@ DeleteAllParamTypes(int index)
/**
* Unload parameter file: all parameter definitions from this file are deleted
- * from memory. Strings allocated to store the filename and contents
- * description are free'd as well.
+ * from memory. Strings allocated to store the filename and contents
+ * description are free'd as well.
* In order to keep the overall data structures consistent, the file info
* structure is not removed from the array but flagged as garbage
*
@@ -477,21 +546,21 @@ DeleteAllParamTypes(int index)
bool
UnloadParamFile(wIndex_t fileIndex)
{
- paramFileInfo_p paramFileI = &paramFileInfo(fileIndex);
-
+ paramFileInfo_p paramFileI = &paramFileInfo(fileIndex);
+
DeleteAllParamTypes(fileIndex);
-
- MyFree(paramFileI->name);
- MyFree(paramFileI->contents);
- paramFileI->valid = FALSE;
+ MyFree(paramFileI->name);
+ MyFree(paramFileI->contents);
+
+ paramFileI->valid = FALSE;
- for (int i = 0; i < paramFileInfo_da.cnt; i++) {
- LOG1(log_params, ("UnloadParamFiles: = %s: %d\n", paramFileInfo(i).contents,
- paramFileInfo(i).trackState))
- }
+ for (int i = 0; i < paramFileInfo_da.cnt; i++) {
+ LOG1(log_params, ("UnloadParamFiles: = %s: %d\n", paramFileInfo(i).contents,
+ paramFileInfo(i).trackState))
+ }
- return (true);
+ return (true);
}
/**
@@ -506,7 +575,7 @@ bool
ReloadParamFile(wIndex_t index)
{
paramFileInfo_p paramFileI = &paramFileInfo(index);
-
+
DeleteAllParamTypes(index);
MyFree(paramFileI->contents);
diff --git a/app/bin/paramfilesearch_ui.c b/app/bin/paramfilesearch_ui.c
index 15498f8..5050f22 100644
--- a/app/bin/paramfilesearch_ui.c
+++ b/app/bin/paramfilesearch_ui.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 "custom.h"
@@ -29,7 +29,6 @@
#include "include/paramfile.h"
#include "fileio.h"
#include "directory.h"
-#include "misc2.h"
#include "layout.h"
static ParameterLib *trackLibrary; /**< Track Library */
@@ -57,25 +56,25 @@ static char * searchFitLabels[] = { N_("Fit Any"), N_("Fit Compatible"), N_("Fit
static paramData_t searchUiPLs[] = {
#define I_QUERYSTRING (0)
- { PD_STRING, searchUiQuery, "query", PDO_ENTER | PDO_NOPREF | PDO_STRINGLIMITLENGTH | PDO_DLGRESIZE, I2VP(340), "", 0, 0, MAXQUERYLENGTH-1 },
+ { PD_STRING, searchUiQuery, "query", PDO_ENTER | PDO_NOPREF | PDO_STRINGLIMITLENGTH | PDO_DLGRESIZE, I2VP(340), "", 0, 0, MAXQUERYLENGTH-1 },
#define I_SEARCHBUTTON (1)
- { PD_BUTTON, SearchUiDoSearch, "find", PDO_DLGHORZ, 0, NULL, BO_ICON, NULL },
+ { PD_BUTTON, SearchUiDoSearch, "find", PDO_DLGHORZ, 0, NULL, BO_ICON, NULL },
#define I_CLEARBUTTON (2)
- { PD_BUTTON, SearchUiClearFilter, "clearfilter", PDO_DLGHORZ, 0, NULL, BO_ICON, NULL },
+ { PD_BUTTON, SearchUiClearFilter, "clearfilter", PDO_DLGHORZ, 0, NULL, BO_ICON, NULL },
#define I_FITRADIO (3)
- { PD_RADIO, &searchFitMode, "fit", PDO_NOPREF | PDO_DLGBOXEND, searchFitLabels, NULL, BC_HORZ|BC_NOBORDER },
+ { PD_RADIO, &searchFitMode, "fit", PDO_NOPREF | PDO_DLGBOXEND, searchFitLabels, NULL, BC_HORZ|BC_NOBORDER },
#define I_MESSAGE (4)
- { PD_MESSAGE, N_(QUERYPROMPTSTRING), NULL, 0, I2VP(370) },
+ { PD_MESSAGE, N_(QUERYPROMPTSTRING), NULL, 0, I2VP(370) },
#define I_STATISTICS (5)
- { PD_MESSAGE, "", NULL, PDO_DLGBOXEND, I2VP(370) },
+ { PD_MESSAGE, "", NULL, PDO_DLGBOXEND, I2VP(370) },
#define I_RESULTLIST (6)
- { PD_LIST, NULL, "inx", PDO_NOPREF | PDO_DLGRESIZE, &searchUiListData, NULL, BL_DUP|BL_SETSTAY|BL_MANY },
+ { PD_LIST, NULL, "inx", PDO_NOPREF | PDO_DLGRESIZE, &searchUiListData, NULL, BL_DUP|BL_SETSTAY|BL_MANY },
#define I_MODETOGGLE (7)
- { PD_TOGGLE, &searchUiMode, "mode", PDO_DLGBOXEND, searchUiLabels, NULL, BC_HORZ|BC_NOBORDER },
+ { PD_TOGGLE, &searchUiMode, "mode", PDO_DLGBOXEND, searchUiLabels, NULL, BC_HORZ|BC_NOBORDER },
#define I_APPLYBUTTON (8)
- { PD_BUTTON, SearchUiApply, "apply", PDO_DLGCMDBUTTON, NULL, N_("Add") },
+ { PD_BUTTON, SearchUiApply, "apply", PDO_DLGCMDBUTTON, NULL, N_("Add") },
#define I_SELECTALLBUTTON (9)
- { PD_BUTTON, SearchUiSelectAll, "selectall", PDO_DLGCMDBUTTON, NULL, N_("Select all") },
+ { PD_BUTTON, SearchUiSelectAll, "selectall", PDO_DLGCMDBUTTON, NULL, N_("Select all") },
};
#define SEARCHBUTTON ((wButton_p)searchUiPLs[I_SEARCHBUTTON].control)
@@ -95,10 +94,10 @@ static wWin_p searchUiW;
#define PARAMDIRECTORY "paramdir"
-/**
- * Clears the current catalog
+/**
+ * Clears the current catalog
*/
-
+
void
ClearCurrentCatalog(void)
{
@@ -119,60 +118,61 @@ static
int SearchFileListLoad(Catalog *catalog)
{
- CatalogEntry *head = catalog->head;
- CatalogEntry *catalogEntry;
-
- DynString description;
- DynStringMalloc(&description, STR_SHORT_SIZE);
-
- wControlShow((wControl_p)RESULTLIST, FALSE);
- wListClear(RESULTLIST);
-
- DL_FOREACH(head, catalogEntry) {
- for (unsigned int i=0; i<catalogEntry->files; i++) {
- if (catalogEntry->tag && searchFitMode != 0) {
- char * type_copy = MyStrdup(catalogEntry->tag);
- char * cp = type_copy;
- char * type = strtok(cp, " \t");
- SCALE_FIT_TYPE_T fit_type;
- if (strcmp(type,TURNOUTCOMMAND) == 0)
- fit_type = FIT_TURNOUT;
- else if (strcmp(type,STRUCTURECOMMAND)==0)
+ CatalogEntry *head = catalog->head;
+ CatalogEntry *catalogEntry;
+
+ DynString description;
+ DynStringMalloc(&description, STR_SHORT_SIZE);
+
+ wControlShow((wControl_p)RESULTLIST, FALSE);
+ wListClear(RESULTLIST);
+
+ DL_FOREACH(head, catalogEntry) {
+ for (unsigned int i=0; i<catalogEntry->files; i++) {
+ if (catalogEntry->tag && searchFitMode != 0) {
+ char * type_copy = MyStrdup(catalogEntry->tag);
+ char * cp = type_copy;
+ char * type = strtok(cp, " \t");
+ SCALE_FIT_TYPE_T fit_type;
+ if (strcmp(type,TURNOUTCOMMAND) == 0) {
+ fit_type = FIT_TURNOUT;
+ } else if (strcmp(type,STRUCTURECOMMAND)==0) {
fit_type = FIT_STRUCTURE;
- else if ((strcmp(type,CARCOMMAND)==0) || (strcmp(type,CARPROTOCOMMAND)==0))
- fit_type = FIT_CAR;
- char * scale = strtok(NULL, " \t\n");
- if (scale) {
- SCALEINX_T scale1 = LookupScale(scale);
- SCALEINX_T scale2 = GetLayoutCurScale();
- if (searchFitMode == FIT_COMPATIBLE) {
- if (CompatibleScale(fit_type,scale1,scale2)<FIT_COMPATIBLE) continue;
- } else {
- if (CompatibleScale(fit_type,scale1,scale2)<FIT_EXACT) continue;
- }
-
- }
- MyFree(type_copy);
- }
- DynStringClear(&description);
- DynStringCatCStr(&description,
- ((!searchUiMode) && catalogEntry->contents) ?
- catalogEntry->contents :
- catalogEntry->fullFileName[i]);
-
- wListAddValue(RESULTLIST,
- DynStringToCStr(&description),
- NULL,
- catalogEntry->fullFileName[i]);
- }
- }
-
- wControlShow((wControl_p)RESULTLIST, TRUE);
- wControlActive((wControl_p)SELECTALLBUTTON,
- wListGetCount(RESULTLIST));
-
- DynStringFree(&description);
- return wListGetCount(RESULTLIST);
+ } else if ((strcmp(type,CARCOMMAND)==0) || (strcmp(type,CARPROTOCOMMAND)==0)) {
+ fit_type = FIT_CAR;
+ }
+ char * scale = strtok(NULL, " \t\n");
+ if (scale) {
+ SCALEINX_T scale1 = LookupScale(scale);
+ SCALEINX_T scale2 = GetLayoutCurScale();
+ if (searchFitMode == FIT_COMPATIBLE) {
+ if (CompatibleScale(fit_type,scale1,scale2)<FIT_COMPATIBLE) { continue; }
+ } else {
+ if (CompatibleScale(fit_type,scale1,scale2)<FIT_EXACT) { continue; }
+ }
+
+ }
+ MyFree(type_copy);
+ }
+ DynStringClear(&description);
+ DynStringCatCStr(&description,
+ ((!searchUiMode) && catalogEntry->contents) ?
+ catalogEntry->contents :
+ catalogEntry->fullFileName[i]);
+
+ wListAddValue(RESULTLIST,
+ DynStringToCStr(&description),
+ NULL,
+ catalogEntry->fullFileName[i]);
+ }
+ }
+
+ wControlShow((wControl_p)RESULTLIST, TRUE);
+ wControlActive((wControl_p)SELECTALLBUTTON,
+ wListGetCount(RESULTLIST));
+
+ DynStringFree(&description);
+ return wListGetCount(RESULTLIST);
}
/**
@@ -183,12 +183,14 @@ static void SearchUiDefault(void)
{
DynString dsSummary;
- int matches = SearchFileListLoad(trackLibrary->catalog); //Start with system files
+ int matches = SearchFileListLoad(
+ trackLibrary->catalog); //Start with system files
wStringSetValue(QUERYSTRING, "");
wMessageSetValue(MESSAGETEXT, _(QUERYPROMPTSTRING));
DynStringMalloc(&dsSummary, 16);
- DynStringPrintf(&dsSummary, _("%u parameter files in library. %d Fit Scale."), CountCatalogEntries(trackLibrary->catalog), matches);
+ DynStringPrintf(&dsSummary, _("%u parameter files in library. %d Fit Scale."),
+ CountCatalogEntries(trackLibrary->catalog), matches);
wMessageSetValue(SEARCHSTAT, DynStringToCStr(&dsSummary));
DynStringFree(&dsSummary);
@@ -202,27 +204,23 @@ static void SearchUiDefault(void)
void static
SearchUILoadResults(void)
{
- int files = wListGetSelectedCount(RESULTLIST);
-
- if (files) {
- char **fileNames;
- int found = 0;
- fileNames = MyMalloc(sizeof(char *)*files);
- if (!fileNames) {
- AbortProg("Couldn't allocate memory for result list: %s (%d)", __FILE__,
- __LINE__, NULL);
- }
-
- for (int inx = 0; found < files; inx++) {
- if (wListGetItemSelected(RESULTLIST, inx)) {
- fileNames[found++] = (char *)wListGetItemContext(RESULTLIST, inx);
- }
- }
-
- LoadParamFile(files, fileNames, NULL);
- MyFree(fileNames);
- SearchUiOk(NULL);
- }
+ int files = wListGetSelectedCount(RESULTLIST);
+
+ if (files) {
+ char **fileNames;
+ int found = 0;
+ fileNames = MyMalloc(sizeof(char *)*files);
+
+ for (int inx = 0; found < files; inx++) {
+ if (wListGetItemSelected(RESULTLIST, inx)) {
+ fileNames[found++] = (char *)wListGetItemContext(RESULTLIST, inx);
+ }
+ }
+
+ LoadParamFile(files, fileNames, NULL);
+ MyFree(fileNames);
+ SearchUiOk(NULL);
+ }
}
@@ -237,11 +235,11 @@ SearchUILoadResults(void)
static void UpdateSearchUiButton(void)
{
- wIndex_t selCnt = wListGetSelectedCount(RESULTLIST);
- wIndex_t cnt = wListGetCount(RESULTLIST);
+ wIndex_t selCnt = wListGetSelectedCount(RESULTLIST);
+ wIndex_t cnt = wListGetCount(RESULTLIST);
- wControlActive((wControl_p)APPLYBUTTON, selCnt > 0);
- wControlActive((wControl_p)SELECTALLBUTTON, cnt > 0);
+ wControlActive((wControl_p)APPLYBUTTON, selCnt > 0);
+ wControlActive((wControl_p)SELECTALLBUTTON, cnt > 0);
}
/**
@@ -254,23 +252,23 @@ static void UpdateSearchUiButton(void)
char * StringTrim(char *s)
{
- char *original = s;
- size_t len = 0;
-
- while (isspace((unsigned char) *s)) {
- s++;
- }
- if (*s) {
- char *p = s;
- while (*p) {
- p++;
- }
- while (isspace((unsigned char) *(--p)));
- p[1] = '\0';
- len = (size_t)(p - s + 1);
- }
-
- return (s == original) ? s : memmove(original, s, len + 1);
+ char *original = s;
+ size_t len = 0;
+
+ while (isspace((unsigned char) *s)) {
+ s++;
+ }
+ if (*s) {
+ char *p = s;
+ while (*p) {
+ p++;
+ }
+ while (isspace((unsigned char) *(--p)));
+ p[1] = '\0';
+ len = (size_t)(p - s + 1);
+ }
+
+ return (s == original) ? s : memmove(original, s, len + 1);
}
/**
@@ -281,14 +279,15 @@ char * StringTrim(char *s)
static void SearchUiDoSearch(void * ptr)
{
- unsigned result;
- SearchResult *currentResults = MyMalloc(sizeof(SearchResult));
- char * search;
+ unsigned result;
+ SearchResult *currentResults = MyMalloc(sizeof(SearchResult));
+ char * search;
ClearCurrentCatalog();
- strcpy(searchUiQuery, wStringGetValue((wString_p)searchUiPG.paramPtr[I_QUERYSTRING].control));
- search = StringTrim(searchUiQuery);
+ strcpy(searchUiQuery, wStringGetValue((wString_p)
+ searchUiPG.paramPtr[I_QUERYSTRING].control));
+ search = StringTrim(searchUiQuery);
if (search[0]) {
result = SearchLibrary(trackLibrary, search, currentResults);
@@ -305,7 +304,8 @@ static void SearchUiDoSearch(void * ptr)
DynString hitsMessage;
DynStringMalloc(&hitsMessage, 16);
- DynStringPrintf(&hitsMessage, _("%d parameter files found. %d Fit Scale"), result, matches);
+ DynStringPrintf(&hitsMessage, _("%d parameter files found. %d Fit Scale"),
+ result, matches);
wMessageSetValue(MESSAGETEXT, DynStringToCStr(&hitsMessage));
DynStringFree(&hitsMessage);
@@ -344,7 +344,7 @@ SearchUiClearFilter(void *ptr)
static void SearchUiSelectAll(void *junk)
{
- wListSelectAll(RESULTLIST);
+ wListSelectAll(RESULTLIST);
}
/**
@@ -355,9 +355,9 @@ static void SearchUiSelectAll(void *junk)
void SearchUiOk(void * junk)
{
- if (searchUiW) {
- wHide(searchUiW);
- }
+ if (searchUiW) {
+ wHide(searchUiW);
+ }
}
/**
@@ -369,7 +369,7 @@ void SearchUiOk(void * junk)
static void SearchUiApply(wWin_p junk)
{
- SearchUILoadResults();
+ SearchUILoadResults();
}
/**
@@ -382,38 +382,39 @@ static void SearchUiApply(wWin_p junk)
*/
static void SearchUiDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP)
+ paramGroup_p pg,
+ int inx,
+ void * valueP)
{
- switch (inx) {
- case I_QUERYSTRING:
- if (pg->paramPtr[inx].enter_pressed) {
- strcpy( searchUiQuery, wStringGetValue((wString_p)pg->paramPtr[inx].control) );
- SearchUiDoSearch(NULL);
- }
- break;
- case I_RESULTLIST:
- UpdateSearchUiButton();
- break;
- case I_FITRADIO:
- strcpy( searchUiQuery, wStringGetValue((wString_p)pg->paramPtr[I_QUERYSTRING].control) );
- SearchUiDoSearch(NULL);
- break;
- case I_MODETOGGLE:
+ switch (inx) {
+ case I_QUERYSTRING:
+ if (pg->paramPtr[inx].enter_pressed) {
+ strcpy( searchUiQuery, wStringGetValue((wString_p)pg->paramPtr[inx].control) );
+ SearchUiDoSearch(NULL);
+ }
+ break;
+ case I_RESULTLIST:
+ UpdateSearchUiButton();
+ break;
+ case I_FITRADIO:
+ strcpy( searchUiQuery, wStringGetValue((wString_p)
+ pg->paramPtr[I_QUERYSTRING].control) );
+ SearchUiDoSearch(NULL);
+ break;
+ case I_MODETOGGLE:
if (currentCat.head) {
SearchFileListLoad(&currentCat);
} else {
SearchFileListLoad(trackLibrary->catalog);
}
- break;
- case -1:
- SearchUiOk(valueP);
- break;
- }
+ break;
+ case -1:
+ SearchUiOk(valueP);
+ break;
+ }
}
-void
+void
SearchUiCancel(wWin_p window)
{
ClearCurrentCatalog();
@@ -432,16 +433,16 @@ SearchUiCancel(wWin_p window)
static char *
GetParamsPath()
{
- char * params_path;
- char *params_pref;
- params_pref = wPrefGetString(FILESECTION, PARAMDIRECTORY);
-
- if (!params_pref) {
- MakeFullpath(&params_path, wGetAppLibDir(), "params", NULL);
- } else {
- params_path = strdup(params_pref);
- }
- return (params_path);
+ char * params_path;
+ char *params_pref;
+ params_pref = wPrefGetString(FILESECTION, PARAMDIRECTORY);
+
+ if (!params_pref) {
+ MakeFullpath(&params_path, wGetAppLibDir(), "params", NULL);
+ } else {
+ params_path = strdup(params_pref);
+ }
+ return (params_path);
}
#include "bitmaps/funnel.xpm"
@@ -455,48 +456,48 @@ GetParamsPath()
void DoSearchParams(void * junk)
{
- if (searchUiW == NULL) {
+ if (searchUiW == NULL) {
- //Make the Find menu bound to the System Library initially
- char *paramsDir = GetParamsPath();
- trackLibrary = CreateLibrary(paramsDir);
- free(paramsDir);
+ //Make the Find menu bound to the System Library initially
+ char *paramsDir = GetParamsPath();
+ trackLibrary = CreateLibrary(paramsDir);
+ free(paramsDir);
- searchUiPLs[I_SEARCHBUTTON].winLabel = (char *)wIconCreatePixMap(funnel_xpm);
- searchUiPLs[I_CLEARBUTTON].winLabel = (char *)wIconCreatePixMap(
- funnelclear_xpm);
+ searchUiPLs[I_SEARCHBUTTON].winLabel = (char *)wIconCreatePixMap(funnel_xpm);
+ searchUiPLs[I_CLEARBUTTON].winLabel = (char *)wIconCreatePixMap(
+ funnelclear_xpm);
- searchFitMode = FIT_COMPATIBLE; //Default to "Any" after startup
+ searchFitMode = FIT_COMPATIBLE; //Default to "Any" after startup
- ParamRegister(&searchUiPG);
+ ParamRegister(&searchUiPG);
- searchUiW = ParamCreateDialog(&searchUiPG,
- MakeWindowTitle(_("Choose parameter files")), _("Done"), NULL, SearchUiCancel,
- TRUE, NULL, F_RESIZE | F_RECALLSIZE, SearchUiDlgUpdate);
+ searchUiW = ParamCreateDialog(&searchUiPG,
+ MakeWindowTitle(_("Choose parameter files")), _("Done"), NULL, SearchUiCancel,
+ TRUE, NULL, F_RESIZE | F_RECALLSIZE, SearchUiDlgUpdate);
- wControlActive((wControl_p)APPLYBUTTON, FALSE);
- wControlActive((wControl_p)SELECTALLBUTTON, FALSE);
- }
+ wControlActive((wControl_p)APPLYBUTTON, FALSE);
+ wControlActive((wControl_p)SELECTALLBUTTON, FALSE);
+ }
- wControlActive((wControl_p)FITRADIO, TRUE);
+ wControlActive((wControl_p)FITRADIO, TRUE);
- ParamLoadControls(&searchUiPG);
- ParamGroupRecord(&searchUiPG);
+ ParamLoadControls(&searchUiPG);
+ ParamGroupRecord(&searchUiPG);
- if (!trackLibrary) {
- wControlActive((wControl_p)SEARCHBUTTON, FALSE);
- wControlActive((wControl_p)QUERYSTRING, FALSE);
- wMessageSetValue(MESSAGETEXT,
- _("No system parameter files found, search is disabled."));
- } else {
+ if (!trackLibrary) {
+ wControlActive((wControl_p)SEARCHBUTTON, FALSE);
+ wControlActive((wControl_p)QUERYSTRING, FALSE);
+ wMessageSetValue(MESSAGETEXT,
+ _("No system parameter files found, search is disabled."));
+ } else {
SearchUiDefault();
- }
+ }
- wShow(searchUiW);
+ wShow(searchUiW);
}
diff --git a/app/bin/partcatalog.c b/app/bin/partcatalog.c
index 25ae024..205ae50 100644
--- a/app/bin/partcatalog.c
+++ b/app/bin/partcatalog.c
@@ -16,14 +16,13 @@
*
* 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 "dynstring.h"
#include "fileio.h"
#include "include/levenshtein.h"
#include "misc.h"
-#include "misc2.h"
#include "include/paramfile.h"
#include "include/partcatalog.h"
#include "paths.h"
@@ -36,7 +35,7 @@
#define LDISTANCELIMIT (2)
static char *stopwords = {
- "scale",
+ "scale",
};
static int log_params;
@@ -50,11 +49,11 @@ static int log_params;
Catalog *
InitCatalog(void)
{
- Catalog *newCatalog = MyMalloc(sizeof(Catalog));
- if (newCatalog) {
- newCatalog->head = NULL;
- }
- return (newCatalog);
+ Catalog *newCatalog = MyMalloc(sizeof(Catalog));
+ if (newCatalog) {
+ newCatalog->head = NULL;
+ }
+ return (newCatalog);
}
/**
@@ -68,27 +67,28 @@ DestroyCatalog(Catalog *catalog)
{
CatalogEntry *current = catalog->head;
CatalogEntry *entry = NULL;
- CatalogEntry *tmp = NULL, *old = NULL;
- DL_FOREACH_SAFE(current, entry, tmp)
- {
+ CatalogEntry *tmp = NULL;
+// CatalogEntry *old = NULL;
+ DL_FOREACH_SAFE(current, entry, tmp) {
//if (old) MyFree(old);
- old = NULL;
+// old = NULL;
for (unsigned int i = 0; i < entry->files; i++) {
- MyFree(entry->fullFileName[i]);
- entry->fullFileName[i] = NULL;
+ MyFree(entry->fullFileName[i]);
+ entry->fullFileName[i] = NULL;
}
entry->files = 0;
MyFree(entry->contents);
entry->contents = NULL;
MyFree(entry->tag);
entry->tag = NULL;
- old = entry;
+// old = entry;
DL_DELETE(catalog->head,entry);
}
catalog->head = NULL;
}
+#if 0
/**
* Create a new CatalogEntry and add it to the linked list. The newly
* created entry is inserted into the list after the given position
@@ -100,16 +100,17 @@ DestroyCatalog(Catalog *catalog)
static CatalogEntry *
InsertIntoCatalogAfter(CatalogEntry *entry)
{
- CatalogEntry *newEntry = (CatalogEntry *)MyMalloc(sizeof(CatalogEntry));
- newEntry->next = entry->next;
- newEntry->prev = entry;
- entry->next = newEntry;
- newEntry->files = 0;
- newEntry->contents = NULL;
- newEntry->tag = NULL;
-
- return (newEntry);
+ CatalogEntry *newEntry = (CatalogEntry *)MyMalloc(sizeof(CatalogEntry));
+ newEntry->next = entry->next;
+ newEntry->prev = entry;
+ entry->next = newEntry;
+ newEntry->files = 0;
+ newEntry->contents = NULL;
+ newEntry->tag = NULL;
+
+ return (newEntry);
}
+#endif
/**
* Count the elements in the linked list
@@ -121,10 +122,10 @@ InsertIntoCatalogAfter(CatalogEntry *entry)
unsigned
CountCatalogEntries(Catalog *catalog)
{
- CatalogEntry * entry;
- unsigned count = 0;
- DL_COUNT(catalog->head, entry, count);
- return (count);
+ CatalogEntry * entry;
+ unsigned count = 0;
+ DL_COUNT(catalog->head, entry, count);
+ return (count);
}
/**
@@ -136,27 +137,28 @@ CountCatalogEntries(Catalog *catalog)
EXPORT void
CatalogDiscard(Catalog *catalog)
{
- CatalogEntry *current = catalog->head;
- CatalogEntry *element;
- CatalogEntry *tmp,*old = NULL;
-
- DL_FOREACH_SAFE(current, element, tmp) {
- //if (old) MyFree(old);
- old = NULL;
- MyFree(element->contents);
- element->contents = NULL;
- MyFree(element->tag);
- element->tag = NULL;
- for (unsigned int i = 0; i < element->files; i++) {
- MyFree(element->fullFileName[i]);
- element->fullFileName[i] = NULL;
- }
- element->files = 0;
- old = element;
- DL_DELETE(catalog->head,element);
- }
-
- catalog->head = NULL;
+ CatalogEntry *current = catalog->head;
+ CatalogEntry *element;
+ CatalogEntry *tmp;
+// CatalogEntry *old = NULL;
+
+ DL_FOREACH_SAFE(current, element, tmp) {
+ //if (old) MyFree(old);
+// old = NULL;
+ MyFree(element->contents);
+ element->contents = NULL;
+ MyFree(element->tag);
+ element->tag = NULL;
+ for (unsigned int i = 0; i < element->files; i++) {
+ MyFree(element->fullFileName[i]);
+ element->fullFileName[i] = NULL;
+ }
+ element->files = 0;
+// old = element;
+ DL_DELETE(catalog->head,element);
+ }
+
+ catalog->head = NULL;
}
/**
@@ -171,7 +173,7 @@ CatalogDiscard(Catalog *catalog)
static int
CompareEntries(CatalogEntry *a, CatalogEntry *b)
{
- return XtcStricmp(a->contents, b->contents);
+ return XtcStricmp(a->contents, b->contents);
}
/**
@@ -187,17 +189,19 @@ CompareEntries(CatalogEntry *a, CatalogEntry *b)
EXPORT CatalogEntry *
InsertInOrder(Catalog *catalog, const char *contents, const char *tag)
{
- CatalogEntry *newEntry = MyMalloc(sizeof(CatalogEntry));
- newEntry->files = 0;
+ CatalogEntry *newEntry = MyMalloc(sizeof(CatalogEntry));
+ newEntry->files = 0;
- if (contents)
- newEntry->contents = MyStrdup(contents);
- if (tag)
- newEntry->tag = MyStrdup(tag);
+ if (contents) {
+ newEntry->contents = MyStrdup(contents);
+ }
+ if (tag) {
+ newEntry->tag = MyStrdup(tag);
+ }
- DL_INSERT_INORDER(catalog->head, newEntry, CompareEntries);
+ DL_INSERT_INORDER(catalog->head, newEntry, CompareEntries);
- return newEntry;
+ return newEntry;
}
/**
@@ -213,18 +217,18 @@ InsertInOrder(Catalog *catalog, const char *contents, const char *tag)
static CatalogEntry *
IsExistingContents(Catalog *catalog, const char *contents, BOOL_T silent)
{
- CatalogEntry *head = catalog->head;
- CatalogEntry *currentEntry;
-
- DL_FOREACH(head, currentEntry) {
- if (!XtcStricmp(currentEntry->contents, contents)) {
- if (!silent) {
- printf("%s already exists in %s\n", contents, currentEntry->fullFileName[0]);
- }
- return (currentEntry);
- }
- }
- return (NULL);
+ CatalogEntry *head = catalog->head;
+ CatalogEntry *currentEntry;
+
+ DL_FOREACH(head, currentEntry) {
+ if (!XtcStricmp(currentEntry->contents, contents)) {
+ if (!silent) {
+ printf("%s already exists in %s\n", contents, currentEntry->fullFileName[0]);
+ }
+ return (currentEntry);
+ }
+ }
+ return (NULL);
}
/**
@@ -240,25 +244,24 @@ IsExistingContents(Catalog *catalog, const char *contents, BOOL_T silent)
EXPORT void
UpdateCatalogEntry(CatalogEntry *entry, char *path, char *contents, char *tag)
{
- if (!entry->contents) {
- MyFree(entry->contents);
- entry->contents = NULL;
- }
- if (contents)
- entry->contents = MyStrdup(contents);
-
- if (!entry->tag) {
- MyFree(entry->tag);
- entry->tag = NULL;
- }
- if (tag)
- entry->tag = MyStrdup(tag);
-
- if (entry->files < MAXFILESPERCONTENT) {
- entry->fullFileName[entry->files++] = MyStrdup(path);
- } else {
- AbortProg("Number of files with same content too large!", NULL);
- }
+ if (!entry->contents) {
+ MyFree(entry->contents);
+ entry->contents = NULL;
+ }
+ if (contents) {
+ entry->contents = MyStrdup(contents);
+ }
+
+ if (!entry->tag) {
+ MyFree(entry->tag);
+ entry->tag = NULL;
+ }
+ if (tag) {
+ entry->tag = MyStrdup(tag);
+ }
+
+ CHECK( entry->files < MAXFILESPERCONTENT );
+ entry->fullFileName[entry->files++] = MyStrdup(path);
}
/**
@@ -274,40 +277,40 @@ UpdateCatalogEntry(CatalogEntry *entry, char *path, char *contents, char *tag)
static bool
GetNextParameterFile(DIR *dir, const char *dirName, char **fileName)
{
- bool done = false;
- bool res = false;
-
- /*
- * get all files from the directory
- */
- while (!done) {
- struct stat fileState;
- struct dirent *ent;
-
- ent = readdir(dir);
-
- if (ent) {
- if (!XtcStricmp(FindFileExtension(ent->d_name), "xtp")) {
- /* create full file name and get the state for that file */
- MakeFullpath(fileName, dirName, ent->d_name, NULL);
-
- if (stat(*fileName, &fileState) == -1) {
- fprintf(stderr, "Error getting file state for %s\n", *fileName);
- continue;
- }
-
- /* ignore any directories */
- if (!(fileState.st_mode & S_IFDIR)) {
- done = true;
- res = true;
- }
- }
- } else {
- done = true;
- res = false;
- }
- }
- return (res);
+ bool done = false;
+ bool res = false;
+
+ /*
+ * get all files from the directory
+ */
+ while (!done) {
+ struct stat fileState;
+ struct dirent *ent;
+
+ ent = readdir(dir);
+
+ if (ent) {
+ if (!XtcStricmp(FindFileExtension(ent->d_name), "xtp")) {
+ /* create full file name and get the state for that file */
+ MakeFullpath(fileName, dirName, ent->d_name, NULL);
+
+ if (stat(*fileName, &fileState) == -1) {
+ fprintf(stderr, "Error getting file state for %s\n", *fileName);
+ continue;
+ }
+
+ /* ignore any directories */
+ if (!(fileState.st_mode & S_IFDIR)) {
+ done = true;
+ res = true;
+ }
+ }
+ } else {
+ done = true;
+ res = false;
+ }
+ }
+ return (res);
}
/*!
@@ -321,21 +324,21 @@ GetNextParameterFile(DIR *dir, const char *dirName, char **fileName)
bool
FilterKeyword(char *word)
{
- if (strlen(word) == 1 && strpbrk(word, PUNCTUATION)) {
- return (true);
- }
-
- for (int i = 0; i < sizeof(stopwords) / sizeof(char *); i++) {
- if (!XtcStricmp(word, stopwords+i)) {
- return (true);
- }
- }
- return (false);
+ if (strlen(word) == 1 && strpbrk(word, PUNCTUATION)) {
+ return (true);
+ }
+
+ for (int i = 0; i < sizeof(stopwords) / sizeof(char *); i++) {
+ if (!XtcStricmp(word, stopwords+i)) {
+ return (true);
+ }
+ }
+ return (false);
}
int KeyWordCmp(void *a, void *b)
{
- return XtcStricmp(((IndexEntry *)a)->keyWord,((IndexEntry *)b)->keyWord);
+ return XtcStricmp(((IndexEntry *)a)->keyWord,((IndexEntry *)b)->keyWord);
}
@@ -349,25 +352,25 @@ int KeyWordCmp(void *a, void *b)
void
StandardizeSpelling(char *word)
{
- char *p = strchr(word, '-');
- // remove the word 'scale' from combinations like N-scale
- if (p) {
- if (!XtcStricmp(p+1, "scale")) {
- *p = '\0';
- }
- }
-
- if (!strncasecmp(word, "h0", 2)) {
- strncpy(word, "ho", 2);
- }
-
- if (!strncasecmp(word, "00", 2)) {
- strncpy(word, "oo", 2);
- }
-
- if (word[0] == '0') {
- word[0] = 'o';
- }
+ char *p = strchr(word, '-');
+ // remove the word 'scale' from combinations like N-scale
+ if (p) {
+ if (!XtcStricmp(p+1, "scale")) {
+ *p = '\0';
+ }
+ }
+
+ if (!strncasecmp(word, "h0", 2)) {
+ strcpy(word, "ho");
+ }
+
+ if (!strncasecmp(word, "00", 2)) {
+ strcpy(word, "oo");
+ }
+
+ if (word[0] == '0') {
+ word[0] = 'o';
+ }
}
/**
@@ -381,71 +384,71 @@ StandardizeSpelling(char *word)
static unsigned
CreateKeywordIndex(ParameterLib *library)
{
- CatalogEntry *listOfEntries = library->catalog->head;
- CatalogEntry *curParamFile;
- size_t totalMemory = 0;
- size_t wordCount = 0;
- char *wordList;
- char *wordListPtr;
- IndexEntry *index = library->index;
-
- // allocate a buffer for the complete set of keywords
- DL_FOREACH(listOfEntries, curParamFile) {
- totalMemory += strlen(curParamFile->contents) + 1;
- }
- wordList = MyMalloc((totalMemory + 1) * sizeof(char));
-
- wordListPtr = wordList;
-
- DL_FOREACH(listOfEntries, curParamFile) {
- char *word;
- char *content = strdup(curParamFile->contents);
-
- word = strtok(content, SEARCHDELIMITER);
- while (word) {
- strcpy(wordListPtr, word);
-
- XtcStrlwr(wordListPtr);
- if (!FilterKeyword(wordListPtr)) {
- IndexEntry *searchEntry = MyMalloc(sizeof(IndexEntry));
- IndexEntry *existingEntry = NULL;
- searchEntry->keyWord = wordListPtr;
- StandardizeSpelling(wordListPtr);
-
- if (index) {
- DL_SEARCH(index, existingEntry, searchEntry, KeyWordCmp);
- }
- if (existingEntry) {
- DYNARR_APPEND(CatalogEntry *, *(existingEntry->references), 5);
- DYNARR_LAST(CatalogEntry *, *(existingEntry->references)) = curParamFile;
- MyFree(searchEntry);
- } else {
- searchEntry->references = calloc(1, sizeof(dynArr_t));
- DYNARR_APPEND(CatalogEntry *, *(searchEntry->references), 5);
- DYNARR_LAST(CatalogEntry *, *(searchEntry->references)) = curParamFile;
- DL_APPEND(index, searchEntry);
- LOG1(log_params, ("Index Entry: <%s>\n", searchEntry->keyWord))
- }
-
- wordListPtr += strlen(word) + 1;
- wordCount++;
- }
- word = strtok(NULL, SEARCHDELIMITER);
- }
- free(content);
- }
- *wordListPtr = '\0';
+ CatalogEntry *listOfEntries = library->catalog->head;
+ CatalogEntry *curParamFile;
+ size_t totalMemory = 0;
+ size_t wordCount = 0;
+ char *wordList;
+ char *wordListPtr;
+ IndexEntry *index = library->index;
+
+ // allocate a buffer for the complete set of keywords
+ DL_FOREACH(listOfEntries, curParamFile) {
+ totalMemory += strlen(curParamFile->contents) + 1;
+ }
+ wordList = MyMalloc((totalMemory + 1) * sizeof(char));
+
+ wordListPtr = wordList;
+
+ DL_FOREACH(listOfEntries, curParamFile) {
+ char *word;
+ char *content = strdup(curParamFile->contents);
+
+ word = strtok(content, SEARCHDELIMITER);
+ while (word) {
+ strcpy(wordListPtr, word);
+
+ XtcStrlwr(wordListPtr);
+ if (!FilterKeyword(wordListPtr)) {
+ IndexEntry *searchEntry = MyMalloc(sizeof(IndexEntry));
+ IndexEntry *existingEntry = NULL;
+ searchEntry->keyWord = wordListPtr;
+ StandardizeSpelling(wordListPtr);
+
+ if (index) {
+ DL_SEARCH(index, existingEntry, searchEntry, KeyWordCmp);
+ }
+ if (existingEntry) {
+ DYNARR_APPEND(CatalogEntry *, *(existingEntry->references), 5);
+ DYNARR_LAST(CatalogEntry *, *(existingEntry->references)) = curParamFile;
+ MyFree(searchEntry);
+ } else {
+ searchEntry->references = calloc(1, sizeof(dynArr_t));
+ DYNARR_APPEND(CatalogEntry *, *(searchEntry->references), 5);
+ DYNARR_LAST(CatalogEntry *, *(searchEntry->references)) = curParamFile;
+ DL_APPEND(index, searchEntry);
+ LOG1(log_params, ("Index Entry: <%s>\n", searchEntry->keyWord))
+ }
+
+ wordListPtr += strlen(word) + 1;
+ wordCount++;
+ }
+ word = strtok(NULL, SEARCHDELIMITER);
+ }
+ free(content);
+ }
+ *wordListPtr = '\0';
DL_SORT(index, KeyWordCmp);
- library->index = index;
- library->words = wordList;
-
- IndexEntry *existingEntry;
- DL_FOREACH(index, existingEntry) {
- LOG1(log_params, ("Index Entry: <%s> Count: %d\n", existingEntry->keyWord,
- existingEntry->references->cnt));
- }
- return (unsigned)(wordCount);
+ library->index = index;
+ library->words = wordList;
+
+ IndexEntry *existingEntry;
+ DL_FOREACH(index, existingEntry) {
+ LOG1(log_params, ("Index Entry: <%s> Count: %d\n", existingEntry->keyWord,
+ existingEntry->references->cnt));
+ }
+ return (unsigned)(wordCount);
}
/**
@@ -463,24 +466,24 @@ CreateKeywordIndex(ParameterLib *library)
unsigned int
FindWord(IndexEntry *index, int length, char *search, IndexEntry **entries)
{
- IndexEntry *result = NULL;
+ IndexEntry *result = NULL;
- IndexEntry searchWord;
- searchWord.keyWord = search;
+ IndexEntry searchWord;
+ searchWord.keyWord = search;
- *entries = NULL;
+ *entries = NULL;
- DL_SEARCH(index, result, &searchWord, KeyWordCmp);
+ DL_SEARCH(index, result, &searchWord, KeyWordCmp);
if (!result) {
int maxdistance = 1;
while (maxdistance <= LDISTANCELIMIT && !result ) {
IndexEntry *current;
- size_t minDistance = LDISTANCELIMIT + 1;
+// size_t minDistance = LDISTANCELIMIT + 1;
int maxProbability = 0;
- LOG1(log_params, ("Close match for: <%s> maxdistance: %d\n", search, maxdistance));
-
- DL_FOREACH(index, current)
- {
+ LOG1(log_params, ("Close match for: <%s> maxdistance: %d\n", search,
+ maxdistance));
+
+ DL_FOREACH(index, current) {
size_t ldist = levenshtein(search, current->keyWord);
LOG1(log_params, ("Distance of: <%s> is %d\n", current->keyWord, ldist));
if (ldist == maxdistance) {
@@ -497,9 +500,9 @@ FindWord(IndexEntry *index, int length, char *search, IndexEntry **entries)
maxdistance++;
}
}
-
- *entries = result;
- return (result != NULL);
+
+ *entries = result;
+ return (result != NULL);
}
/**
@@ -512,16 +515,16 @@ FindWord(IndexEntry *index, int length, char *search, IndexEntry **entries)
ParameterLib *
InitLibrary(void)
{
- ParameterLib *trackLib = MyMalloc(sizeof(ParameterLib));
+ ParameterLib *trackLib = MyMalloc(sizeof(ParameterLib));
- if (trackLib) {
- trackLib->catalog = InitCatalog();
- trackLib->index = NULL;
- trackLib->wordCount = 0;
- trackLib->parameterFileCount = 0;
- }
+ if (trackLib) {
+ trackLib->catalog = InitCatalog();
+ trackLib->index = NULL;
+ trackLib->wordCount = 0;
+ trackLib->parameterFileCount = 0;
+ }
- return (trackLib);
+ return (trackLib);
}
/**
@@ -533,10 +536,10 @@ InitLibrary(void)
void
DestroyLibrary(ParameterLib *library)
{
- if (library) {
- DestroyCatalog(library->catalog);
- MyFree(library);
- }
+ if (library) {
+ DestroyCatalog(library->catalog);
+ MyFree(library);
+ }
}
/**
@@ -550,37 +553,37 @@ DestroyLibrary(ParameterLib *library)
bool
CreateCatalogFromDir(ParameterLib *paramLib, char *directory)
{
- DIR *d;
- Catalog *catalog = paramLib->catalog;
-
- d = opendir(directory);
- if (d) {
- char *fileName = NULL;
-
- while (GetNextParameterFile(d, directory, &fileName)) {
- CatalogEntry *existingEntry;
-
- char *contents = GetParameterFileContent(fileName);
-
- char *scale = GetParameterFileScale(fileName);
-
-
- if ((existingEntry = IsExistingContents(catalog, contents, FALSE))) {
- UpdateCatalogEntry(existingEntry, fileName, contents, scale);
- } else {
- CatalogEntry *newEntry;
- newEntry = InsertInOrder(catalog, contents, scale);
- UpdateCatalogEntry(newEntry, fileName, contents, scale);
- }
- MyFree(contents);
- MyFree(scale);
- free(fileName);
- fileName = NULL;
- }
- closedir(d);
- }
- paramLib->parameterFileCount = CountCatalogEntries(paramLib->catalog);
- return (paramLib->parameterFileCount);
+ DIR *d;
+ Catalog *catalog = paramLib->catalog;
+
+ d = opendir(directory);
+ if (d) {
+ char *fileName = NULL;
+
+ while (GetNextParameterFile(d, directory, &fileName)) {
+ CatalogEntry *existingEntry;
+
+ char *contents = GetParameterFileContent(fileName);
+
+ char *scale = GetParameterFileScale(fileName);
+
+
+ if ((existingEntry = IsExistingContents(catalog, contents, FALSE))) {
+ UpdateCatalogEntry(existingEntry, fileName, contents, scale);
+ } else {
+ CatalogEntry *newEntry;
+ newEntry = InsertInOrder(catalog, contents, scale);
+ UpdateCatalogEntry(newEntry, fileName, contents, scale);
+ }
+ MyFree(contents);
+ MyFree(scale);
+ free(fileName);
+ fileName = NULL;
+ }
+ closedir(d);
+ }
+ paramLib->parameterFileCount = CountCatalogEntries(paramLib->catalog);
+ return (paramLib->parameterFileCount);
}
/**
@@ -592,18 +595,18 @@ CreateCatalogFromDir(ParameterLib *paramLib, char *directory)
void
DiscardCatalog(ParameterLib *library)
{
- CatalogEntry *entry;
- CatalogEntry *temp;
-
- DL_FOREACH_SAFE(library->catalog->head, entry, temp) {
- MyFree(entry->contents);
- MyFree(entry->tag);
- for (unsigned int i = 0; i < entry->files; i++) {
- MyFree(entry->fullFileName[i]);
- }
- DL_DELETE(library->catalog->head, entry);
- MyFree(entry);
- }
+ CatalogEntry *entry;
+ CatalogEntry *temp;
+
+ DL_FOREACH_SAFE(library->catalog->head, entry, temp) {
+ MyFree(entry->contents);
+ MyFree(entry->tag);
+ for (unsigned int i = 0; i < entry->files; i++) {
+ MyFree(entry->fullFileName[i]);
+ }
+ DL_DELETE(library->catalog->head, entry);
+ MyFree(entry);
+ }
}
@@ -620,11 +623,11 @@ DiscardCatalog(ParameterLib *library)
unsigned
CreateLibraryIndex(ParameterLib *parameterLib)
{
- parameterLib->index = NULL;
+ parameterLib->index = NULL;
- parameterLib->wordCount = CreateKeywordIndex(parameterLib);
+ parameterLib->wordCount = CreateKeywordIndex(parameterLib);
- return (parameterLib->wordCount);
+ return (parameterLib->wordCount);
}
/**
@@ -638,19 +641,19 @@ CreateLibraryIndex(ParameterLib *parameterLib)
void
DiscardLibraryIndex(ParameterLib *trackLib)
{
- IndexEntry *indexEntry;
- IndexEntry *tmp;
-
- DL_FOREACH_SAFE(trackLib->index, indexEntry, tmp) {
- DYNARR_FREE(CatalogEntry *, *(indexEntry->references));
- free(indexEntry->references);
- DL_DELETE(trackLib->index, indexEntry);
- MyFree(indexEntry);
- }
-
- MyFree(trackLib->words);
- trackLib->index = NULL;
- trackLib->wordCount = 0;
+ IndexEntry *indexEntry;
+ IndexEntry *tmp;
+
+ DL_FOREACH_SAFE(trackLib->index, indexEntry, tmp) {
+ DYNARR_FREE(CatalogEntry *, *(indexEntry->references));
+ free(indexEntry->references);
+ DL_DELETE(trackLib->index, indexEntry);
+ MyFree(indexEntry);
+ }
+
+ MyFree(trackLib->words);
+ trackLib->index = NULL;
+ trackLib->wordCount = 0;
}
@@ -664,19 +667,19 @@ DiscardLibraryIndex(ParameterLib *trackLib)
ParameterLib *
CreateLibrary(char *directory)
{
- ParameterLib *library;
+ ParameterLib *library;
- log_params = LogFindIndex("params");
+ log_params = LogFindIndex("params");
- library = InitLibrary();
- if (library) {
- if (!CreateCatalogFromDir(library, directory)) {
- return (NULL);
- }
+ library = InitLibrary();
+ if (library) {
+ if (!CreateCatalogFromDir(library, directory)) {
+ return (NULL);
+ }
- CreateLibraryIndex(library);
- }
- return (library);
+ CreateLibraryIndex(library);
+ }
+ return (library);
}
/**
@@ -688,23 +691,23 @@ CreateLibrary(char *directory)
void
DiscardLibrary(ParameterLib* library)
{
- CatalogEntry *entry = library->catalog->head;
- CatalogEntry *element;
- CatalogEntry *tmp;
-
- DiscardLibraryIndex(library);
-
- DL_FOREACH_SAFE(entry, element, tmp) {
- MyFree(element->contents);
- MyFree(element->tag);
- for (unsigned int i = 0; i < element->files; i++) {
- MyFree(element->fullFileName[i]);
- }
- DL_DELETE(entry, element);
- MyFree(element);
- }
- MyFree(library->words);
- MyFree(library);
+ CatalogEntry *entry = library->catalog->head;
+ CatalogEntry *element;
+ CatalogEntry *tmp;
+
+ DiscardLibraryIndex(library);
+
+ DL_FOREACH_SAFE(entry, element, tmp) {
+ MyFree(element->contents);
+ MyFree(element->tag);
+ for (unsigned int i = 0; i < element->files; i++) {
+ MyFree(element->fullFileName[i]);
+ }
+ DL_DELETE(entry, element);
+ MyFree(element);
+ }
+ MyFree(library->words);
+ MyFree(library);
}
/**
@@ -718,71 +721,71 @@ DiscardLibrary(ParameterLib* library)
char *
SearchStatistics(SearchResult *result)
{
- DynString buffer;
- DynString subStats[STATE_COUNT];
+ DynString buffer;
+ DynString subStats[STATE_COUNT];
- unsigned searched = 0;
- unsigned discarded = 0;
- unsigned notfound = 0;
+ unsigned searched = 0;
+ unsigned discarded = 0;
+ unsigned notfound = 0;
unsigned close = 0;
- char *resStat;
- DynStringMalloc(&buffer, 16);
+ char *resStat;
+ DynStringMalloc(&buffer, 16);
- for (int i = SEARCHED; i < STATE_COUNT; i++) {
- DynStringMalloc(subStats + i, 16);
- }
+ for (int i = SEARCHED; i < STATE_COUNT; i++) {
+ DynStringMalloc(subStats + i, 16);
+ }
- DynStringCatCStr(subStats + SEARCHED, _("Found: "));
+ DynStringCatCStr(subStats + SEARCHED, _("Found: "));
DynStringCatCStr(subStats + CLOSE, _("Similar: "));
- DynStringCatCStr(subStats + DISCARDED, _("Ignored: "));
- DynStringCatCStr(subStats + NOTFOUND, _("Not found: "));
-
- for (unsigned int i = 0; i < result->words; i++) {
- switch (result->kw[i].state) {
- case SEARCHED:
- DynStringPrintf(&buffer, "%s (%d) ", result->kw[i].keyWord,
- result->kw[i].count);
- searched++;
- break;
- case DISCARDED:
- DynStringPrintf(&buffer, "%s ", result->kw[i].keyWord);
- discarded++;
- break;
- case NOTFOUND:
- DynStringPrintf(&buffer, "%s ", result->kw[i].keyWord);
- notfound++;
- break;
+ DynStringCatCStr(subStats + DISCARDED, _("Ignored: "));
+ DynStringCatCStr(subStats + NOTFOUND, _("Not found: "));
+
+ for (unsigned int i = 0; i < result->words; i++) {
+ switch (result->kw[i].state) {
+ case SEARCHED:
+ DynStringPrintf(&buffer, "%s (%d) ", result->kw[i].keyWord,
+ result->kw[i].count);
+ searched++;
+ break;
+ case DISCARDED:
+ DynStringPrintf(&buffer, "%s ", result->kw[i].keyWord);
+ discarded++;
+ break;
+ case NOTFOUND:
+ DynStringPrintf(&buffer, "%s ", result->kw[i].keyWord);
+ notfound++;
+ break;
case CLOSE:
DynStringPrintf(&buffer, "%s ", result->kw[i].keyWord);
close++;
break;
- default:
- break;
- }
- DynStringCatStr(subStats + result->kw[i].state, &buffer);
- }
-
- DynStringReset(&buffer);
- if (searched) {
- DynStringCatStr(&buffer, subStats + SEARCHED);
- }
+ default:
+ break;
+ }
+ DynStringCatStr(subStats + result->kw[i].state, &buffer);
+ }
+
+ DynStringReset(&buffer);
+ if (searched) {
+ DynStringCatStr(&buffer, subStats + SEARCHED);
+ }
if (close) {
DynStringCatStr(&buffer, subStats + CLOSE);
}
- if (notfound) {
- DynStringCatStr(&buffer, subStats + NOTFOUND);
- }
- if (discarded) {
- DynStringCatStr(&buffer, subStats + DISCARDED);
- }
-
- resStat = MyStrdup(DynStringToCStr(&buffer));
- DynStringFree(&buffer);
+ if (notfound) {
+ DynStringCatStr(&buffer, subStats + NOTFOUND);
+ }
+ if (discarded) {
+ DynStringCatStr(&buffer, subStats + DISCARDED);
+ }
+
+ resStat = MyStrdup(DynStringToCStr(&buffer));
+ DynStringFree(&buffer);
for (int i = SEARCHED; i < STATE_COUNT; i++) {
DynStringFree(subStats + i);
}
- return (resStat);
+ return (resStat);
}
/**
@@ -795,30 +798,31 @@ SearchStatistics(SearchResult *result)
unsigned countWords(char *str)
{
- int state = FALSE;
- unsigned wc = 0; // word count
-
- // Scan all characters one by one
- while (*str) {
- // If next character is a separator, set the
- // state as FALSE
- if (*str == ' ' || *str == '\n' || *str == '\t' || *str == '\r' || *str == '/') {
- state = FALSE;
- }
-
- // If next character is not a word separator and
- // state is OUT, then set the state as IN and
- // increment word count
- else if (state == FALSE) {
- state = TRUE;
- ++wc;
- }
-
- // Move to next character
- ++str;
- }
-
- return wc;
+ int state = FALSE;
+ unsigned wc = 0; // word count
+
+ // Scan all characters one by one
+ while (*str) {
+ // If next character is a separator, set the
+ // state as FALSE
+ if (*str == ' ' || *str == '\n' || *str == '\t' || *str == '\r'
+ || *str == '/') {
+ state = FALSE;
+ }
+
+ // If next character is not a word separator and
+ // state is OUT, then set the state as IN and
+ // increment word count
+ else if (state == FALSE) {
+ state = TRUE;
+ ++wc;
+ }
+
+ // Move to next character
+ ++str;
+ }
+
+ return wc;
}
/**
@@ -836,101 +840,101 @@ unsigned
SearchLibrary(ParameterLib *library, char *searchExpression,
SearchResult *results)
{
- CatalogEntry *element;
- IndexEntry *entries;
- unsigned entryCount = 0;
- char *searchWord;
- unsigned words = countWords(searchExpression);
- char *searchExp = MyStrdup(searchExpression);
- unsigned i = 0;
-
- if (library->index == NULL || library->wordCount == 0) {
- return (0);
- }
-
- results->kw = MyMalloc(words * sizeof(struct sSingleResult));
- results->subCatalog.head = NULL;
-
- searchWord = strtok(searchExp, SEARCHDELIMITER);
- while (searchWord) {
- XtcStrlwr(searchWord);
- if (!FilterKeyword(searchWord)) {
- StandardizeSpelling(searchWord);
- results->kw[i].state = SEARCHED;
- } else {
- results->kw[i].state = DISCARDED;
- }
- results->kw[i++].keyWord = MyStrdup(searchWord);
- searchWord = strtok(NULL, SEARCHDELIMITER);
- }
- results->words = words;
-
- i = 0;
- while (i < words) {
- if (results->kw[i].state == DISCARDED) {
- i++;
- continue;
- }
- FindWord(library->index, library->wordCount, results->kw[i].keyWord, &entries);
- if (entries) {
- results->kw[i].count = entries->references->cnt;
+ CatalogEntry *element;
+ IndexEntry *entries;
+// unsigned entryCount = 0;
+ char *searchWord;
+ unsigned words = countWords(searchExpression);
+ char *searchExp = MyStrdup(searchExpression);
+ unsigned i = 0;
+
+ if (library->index == NULL || library->wordCount == 0) {
+ return (0);
+ }
+
+ results->kw = MyMalloc(words * sizeof(struct sSingleResult));
+ results->subCatalog.head = NULL;
+
+ searchWord = strtok(searchExp, SEARCHDELIMITER);
+ while (searchWord) {
+ XtcStrlwr(searchWord);
+ if (!FilterKeyword(searchWord)) {
+ StandardizeSpelling(searchWord);
+ results->kw[i].state = SEARCHED;
+ } else {
+ results->kw[i].state = DISCARDED;
+ }
+ results->kw[i++].keyWord = MyStrdup(searchWord);
+ searchWord = strtok(NULL, SEARCHDELIMITER);
+ }
+ results->words = words;
+
+ i = 0;
+ while (i < words) {
+ if (results->kw[i].state == DISCARDED) {
+ i++;
+ continue;
+ }
+ FindWord(library->index, library->wordCount, results->kw[i].keyWord, &entries);
+ if (entries) {
+ results->kw[i].count = entries->references->cnt;
if (XtcStricmp(results->kw[i].keyWord, entries->keyWord)) {
results->kw[i].state = CLOSE;
MyFree(results->kw[i].keyWord);
results->kw[i].keyWord = MyStrdup(entries->keyWord);
}
- if (results->subCatalog.head == NULL) {
- // if first keyword -> initialize result set
- for (int j = 0; j < entries->references->cnt; j++) {
- CatalogEntry *newEntry = MyMalloc(sizeof(CatalogEntry));
- CatalogEntry *foundEntry = DYNARR_N(CatalogEntry *, *(entries->references), j);
- newEntry->contents = MyStrdup(foundEntry->contents);
- newEntry->tag = MyStrdup(foundEntry->tag);
- newEntry->files = foundEntry->files;
- for (unsigned int i=0;i<newEntry->files;i++) {
- newEntry->fullFileName[i] = MyStrdup(foundEntry->fullFileName[i]);
- }
-
- DL_APPEND(results->subCatalog.head, newEntry);
- }
- } else {
- // follow up keyword, create intersection with current result set
- CatalogEntry *current;
- CatalogEntry *temp;
-
- DL_FOREACH_SAFE(results->subCatalog.head, current, temp) {
- int found = 0;
- for (int j = 0; j < entries->references->cnt; j++) {
- CatalogEntry *foundEntry = DYNARR_N(CatalogEntry *, *(entries->references), j);
-
- if (strcmp(foundEntry->contents,current->contents)==0) {
- found = TRUE;
- break;
- }
- }
- if (!found) {
- DL_DELETE(results->subCatalog.head, current);
- MyFree(current->contents);
- MyFree(current->tag);
- for (unsigned int i=0;i<current->files;i++) {
- MyFree(current->fullFileName[i]);
- }
- MyFree(current);
- }
- }
- }
- } else {
- // Searches that don't yield a result are ignored
- results->kw[i].state = NOTFOUND;
- results->kw[i].count = 0;
- }
- i++;
- }
-
- DL_COUNT(results->subCatalog.head, element, results->totalFound);
- MyFree(searchExp);
- return (results->totalFound);
+ if (results->subCatalog.head == NULL) {
+ // if first keyword -> initialize result set
+ for (int j = 0; j < entries->references->cnt; j++) {
+ CatalogEntry *newEntry = MyMalloc(sizeof(CatalogEntry));
+ CatalogEntry *foundEntry = DYNARR_N(CatalogEntry *, *(entries->references), j);
+ newEntry->contents = MyStrdup(foundEntry->contents);
+ newEntry->tag = MyStrdup(foundEntry->tag);
+ newEntry->files = foundEntry->files;
+ for (unsigned int i=0; i<newEntry->files; i++) {
+ newEntry->fullFileName[i] = MyStrdup(foundEntry->fullFileName[i]);
+ }
+
+ DL_APPEND(results->subCatalog.head, newEntry);
+ }
+ } else {
+ // follow up keyword, create intersection with current result set
+ CatalogEntry *current;
+ CatalogEntry *temp;
+
+ DL_FOREACH_SAFE(results->subCatalog.head, current, temp) {
+ int found = 0;
+ for (int j = 0; j < entries->references->cnt; j++) {
+ CatalogEntry *foundEntry = DYNARR_N(CatalogEntry *, *(entries->references), j);
+
+ if (strcmp(foundEntry->contents,current->contents)==0) {
+ found = TRUE;
+ break;
+ }
+ }
+ if (!found) {
+ DL_DELETE(results->subCatalog.head, current);
+ MyFree(current->contents);
+ MyFree(current->tag);
+ for (unsigned int i=0; i<current->files; i++) {
+ MyFree(current->fullFileName[i]);
+ }
+ MyFree(current);
+ }
+ }
+ }
+ } else {
+ // Searches that don't yield a result are ignored
+ results->kw[i].state = NOTFOUND;
+ results->kw[i].count = 0;
+ }
+ i++;
+ }
+
+ DL_COUNT(results->subCatalog.head, element, results->totalFound);
+ MyFree(searchExp);
+ return (results->totalFound);
}
/**
@@ -942,21 +946,21 @@ SearchLibrary(ParameterLib *library, char *searchExpression,
void
SearchDiscardResult(SearchResult *res)
{
- if (res) {
- CatalogEntry *current = res->subCatalog.head;
- CatalogEntry *element;
- CatalogEntry *tmp;
-
- DL_FOREACH_SAFE(current, element, tmp) {
- DL_DELETE(current, element);
- MyFree(element);
- }
-
- for (unsigned int i = 0; i < res->words; i++) {
- MyFree(res->kw[i].keyWord);
- }
- MyFree(res->kw);
- }
+ if (res) {
+ CatalogEntry *current = res->subCatalog.head;
+ CatalogEntry *element;
+ CatalogEntry *tmp;
+
+ DL_FOREACH_SAFE(current, element, tmp) {
+ DL_DELETE(current, element);
+ MyFree(element);
+ }
+
+ for (unsigned int i = 0; i < res->words; i++) {
+ MyFree(res->kw[i].keyWord);
+ }
+ MyFree(res->kw);
+ }
}
/**
@@ -969,35 +973,35 @@ SearchDiscardResult(SearchResult *res)
char *
GetParameterFileContent(char *file)
{
- FILE *fh;
- char *result = NULL;
-
- fh = fopen(file, "rt");
- if (fh) {
- bool found = false;
-
- while (!found) {
- char buffer[512];
- if (fgets(buffer, sizeof(buffer), fh)) {
- char *ptr = strtok(buffer, " \t");
- if (!XtcStricmp(ptr, CONTENTSCOMMAND)) {
- /* if found, store the rest of the line and the filename */
- ptr = ptr+strlen(CONTENTSCOMMAND)+1;
- ptr = strtok(ptr, "\r\n");
- result = MyStrdup(ptr);
+ FILE *fh;
+ char *result = NULL;
+
+ fh = fopen(file, "rt");
+ if (fh) {
+ bool found = false;
+
+ while (!found) {
+ char buffer[512];
+ if (fgets(buffer, sizeof(buffer), fh)) {
+ char *ptr = strtok(buffer, " \t");
+ if (!XtcStricmp(ptr, CONTENTSCOMMAND)) {
+ /* if found, store the rest of the line and the filename */
+ ptr = ptr+strlen(CONTENTSCOMMAND)+1;
+ ptr = strtok(ptr, "\r\n");
+ result = MyStrdup(ptr);
#ifdef UTFCONVERT
- ConvertUTF8ToSystem(result);
+ ConvertUTF8ToSystem(result);
#endif // UTFCONVERT
- found = true;
- }
- } else {
- fprintf(stderr, "Nothing found in %s\n", file);
- found = true;
- }
- }
- fclose(fh);
- }
- return (result);
+ found = true;
+ }
+ } else {
+ fprintf(stderr, "Nothing found in %s\n", file);
+ found = true;
+ }
+ }
+ fclose(fh);
+ }
+ return (result);
}
/**
@@ -1010,68 +1014,69 @@ GetParameterFileContent(char *file)
char *
GetParameterFileScale(char *file)
{
- FILE *fh;
- char *scale = NULL;
-
-
- fh = fopen(file, "rt");
- if (fh) {
- bool found = FALSE, found_Turnout = FALSE, found_Structure = FALSE, found_Car = FALSE;
-
- while (!found) {
- char buffer[512];
- if (fgets(buffer, sizeof(buffer), fh)) {
- char *ptr = strtok(buffer, " \t");
- if (!found_Turnout && !XtcStricmp(ptr, TURNOUTCOMMAND)) {
- /* if found, store the rest of the line and the filename */
- ptr = ptr+strlen(TURNOUTCOMMAND)+1;
- ptr = strtok(ptr, " \t");
- scale = MyMalloc(strlen(TURNOUTCOMMAND)+2+strlen(ptr));
- strcpy(scale,TURNOUTCOMMAND);
- char * cp = scale + strlen(TURNOUTCOMMAND);
- cp[0] = ' ';
- cp++;
- strcpy(cp,ptr);
- found_Turnout = true;
- } else if (!found_Structure && !XtcStricmp(ptr, STRUCTURECOMMAND)) {
- /* if found, store the rest of the line and the filename */
- ptr = ptr+strlen(STRUCTURECOMMAND)+1;
- ptr = strtok(ptr, " \t");
- scale = MyMalloc(strlen(STRUCTURECOMMAND)+2+strlen(ptr));
- strcpy(scale,STRUCTURECOMMAND);
+ FILE *fh;
+ char *scale = NULL;
+
+
+ fh = fopen(file, "rt");
+ if (fh) {
+ bool found = FALSE, found_Turnout = FALSE, found_Structure = FALSE,
+ found_Car = FALSE;
+
+ while (!found) {
+ char buffer[512];
+ if (fgets(buffer, sizeof(buffer), fh)) {
+ char *ptr = strtok(buffer, " \t");
+ if (!found_Turnout && !XtcStricmp(ptr, TURNOUTCOMMAND)) {
+ /* if found, store the rest of the line and the filename */
+ ptr = ptr+strlen(TURNOUTCOMMAND)+1;
+ ptr = strtok(ptr, " \t");
+ scale = MyMalloc(strlen(TURNOUTCOMMAND)+2+strlen(ptr));
+ strcpy(scale,TURNOUTCOMMAND);
+ char * cp = scale + strlen(TURNOUTCOMMAND);
+ cp[0] = ' ';
+ cp++;
+ strcpy(cp,ptr);
+ found_Turnout = true;
+ } else if (!found_Structure && !XtcStricmp(ptr, STRUCTURECOMMAND)) {
+ /* if found, store the rest of the line and the filename */
+ ptr = ptr+strlen(STRUCTURECOMMAND)+1;
+ ptr = strtok(ptr, " \t");
+ scale = MyMalloc(strlen(STRUCTURECOMMAND)+2+strlen(ptr));
+ strcpy(scale,STRUCTURECOMMAND);
char * cp = scale + strlen(STRUCTURECOMMAND)+1;
cp[-1] = ' ';
strcpy(cp,ptr);
- found_Structure = true;
- } else if (!found_Car && !XtcStricmp(ptr, CARCOMMAND)) {
- /* if found, store the rest of the line and the filename */
- ptr = ptr+strlen(CARCOMMAND)+1;
- ptr = strtok(ptr, " \t");
- scale = MyMalloc(strlen(CARCOMMAND)+2+strlen(ptr));
- strcpy(scale,CARCOMMAND);
+ found_Structure = true;
+ } else if (!found_Car && !XtcStricmp(ptr, CARCOMMAND)) {
+ /* if found, store the rest of the line and the filename */
+ ptr = ptr+strlen(CARCOMMAND)+1;
+ ptr = strtok(ptr, " \t");
+ scale = MyMalloc(strlen(CARCOMMAND)+2+strlen(ptr));
+ strcpy(scale,CARCOMMAND);
char * cp = scale + strlen(CARCOMMAND)+1;
cp[-1] = ' ';
strcpy(cp,ptr);
- found_Car = true;
- } else if (!found_Car && !XtcStricmp(ptr, CARPROTOCOMMAND)) {
- /* if found, store the rest of the line and the filename */
- scale = MyMalloc(strlen(CARPROTOCOMMAND)+3);
- strcpy(scale,CARPROTOCOMMAND);
+ found_Car = true;
+ } else if (!found_Car && !XtcStricmp(ptr, CARPROTOCOMMAND)) {
+ /* if found, store the rest of the line and the filename */
+ scale = MyMalloc(strlen(CARPROTOCOMMAND)+3);
+ strcpy(scale,CARPROTOCOMMAND);
char * cp = scale + strlen(CARPROTOCOMMAND);
strcpy(cp," *");
- found_Car = true;
- }
- } else {
- if (!found_Turnout && !found_Structure && !found_Car) {
- fprintf(stderr, "Nothing found in %s\n", file);
- found = true;
- }
- }
- if (found_Turnout || found_Structure || found_Car) found = TRUE;
- }
- fclose(fh);
- }
- return scale;
+ found_Car = true;
+ }
+ } else {
+ if (!found_Turnout && !found_Structure && !found_Car) {
+ fprintf(stderr, "Nothing found in %s\n", file);
+ found = true;
+ }
+ }
+ if (found_Turnout || found_Structure || found_Car) { found = TRUE; }
+ }
+ fclose(fh);
+ }
+ return scale;
}
@@ -1079,22 +1084,22 @@ GetParameterFileScale(char *file)
/** this is used to test for memory leaks. It should show no leaks from functions in this source file */
RunMemoryTest(char *directory)
{
- ParameterLib *library;
- SearchResult *results;
-
- mwInit();
- library = InitLibrary();
- if (library) {
- CreateCatalogFromDir(library, directory);
- CreateLibraryIndex(library);
- results = MyMalloc(sizeof(SearchResult));
- SearchLibrary(library, "peco", results);
- SearchDiscardResult(results);
- MyFree(results);
- DiscardLibraryIndex(library);
- DiscardCatalog(library);
- }
- DestroyLibrary(library);
- mwTerm();
+ ParameterLib *library;
+ SearchResult *results;
+
+ mwInit();
+ library = InitLibrary();
+ if (library) {
+ CreateCatalogFromDir(library, directory);
+ CreateLibraryIndex(library);
+ results = MyMalloc(sizeof(SearchResult));
+ SearchLibrary(library, "peco", results);
+ SearchDiscardResult(results);
+ MyFree(results);
+ DiscardLibraryIndex(library);
+ DiscardCatalog(library);
+ }
+ DestroyLibrary(library);
+ mwTerm();
}
#endif //MEMWATCH
diff --git a/app/bin/paths.c b/app/bin/paths.c
index 4a95a8e..785ff6f 100644
--- a/app/bin/paths.c
+++ b/app/bin/paths.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 <dynstring.h>
@@ -28,9 +28,9 @@
#include "paths.h"
struct pathTable {
- char type[ PATH_TYPE_SIZE]; /**< type of path */
- DynString path; /**< path */
- UT_hash_handle hh; /**< makes this structure hashable */
+ char type[ PATH_TYPE_SIZE]; /**< type of path */
+ DynString path; /**< path */
+ UT_hash_handle hh; /**< makes this structure hashable */
};
static struct pathTable *paths;
@@ -51,9 +51,9 @@ static struct pathTable *FindPath(const char *type);
static struct pathTable *
FindPath(const char *type)
{
- struct pathTable *entry;
- HASH_FIND_STR(paths, type, entry);
- return (entry);
+ struct pathTable *entry;
+ HASH_FIND_STR(paths, type, entry);
+ return (entry);
}
/**
@@ -65,23 +65,23 @@ FindPath(const char *type)
static void
AddPath(const char *type, char*path)
{
- struct pathTable *tableEntry;
- tableEntry = FindPath(type);
-
- if (tableEntry) {
- DynStringClear(&(tableEntry->path));
- } else {
- tableEntry = malloc(sizeof(struct pathTable));
- DynStringMalloc(&tableEntry->path, 16);
- strcpy(tableEntry->type, type);
+ struct pathTable *tableEntry;
+ tableEntry = FindPath(type);
+
+ if (tableEntry) {
+ DynStringClear(&(tableEntry->path));
+ } else {
+ tableEntry = malloc(sizeof(struct pathTable));
+ DynStringMalloc(&tableEntry->path, 16);
+ strcpy(tableEntry->type, type);
#ifdef WINDOWS
#pragma warning( disable : 4267)
#endif
- // This generates warning C4267 on windows
- HASH_ADD_STR(paths, type, tableEntry);
- }
+ // This generates warning C4267 on windows
+ HASH_ADD_STR(paths, type, tableEntry);
+ }
- DynStringCatCStr(&(tableEntry->path), path);
+ DynStringCatCStr(&(tableEntry->path), path);
}
/**
@@ -96,23 +96,23 @@ AddPath(const char *type, char*path)
*/
void SetCurrentPath(
- const char * pathType,
- const char * fileName)
+ const char * pathType,
+ const char * fileName)
{
- char *path;
- char *copy;
- assert(fileName != NULL);
- assert(pathType != NULL);
- copy = strdup(fileName);
- path = strrchr(copy, FILE_SEP_CHAR[0]);
-
- if (path) {
- *path = '\0';
- AddPath(pathType, copy);
- wPrefSetString(PATHS_SECTION, pathType, copy);
- }
-
- free(copy);
+ char *path;
+ char *copy;
+ CHECK(fileName != NULL);
+ CHECK(pathType != NULL);
+ copy = strdup(fileName);
+ path = strrchr(copy, FILE_SEP_CHAR[0]);
+
+ if (path) {
+ *path = '\0';
+ AddPath(pathType, copy);
+ wPrefSetString(PATHS_SECTION, pathType, copy);
+ }
+
+ free(copy);
}
/**
@@ -128,29 +128,29 @@ void SetCurrentPath(
*/
char *GetCurrentPath(
- const char *pathType)
+ const char *pathType)
{
- struct pathTable *currentPath;
- const char *path;
- assert(pathType != NULL);
- currentPath = FindPath(pathType);
+ struct pathTable *currentPath;
+ const char *path;
+ CHECK(pathType != NULL);
+ currentPath = FindPath(pathType);
- if (currentPath) {
- return (DynStringToCStr(&(currentPath->path)));
- }
+ if (currentPath) {
+ return (DynStringToCStr(&(currentPath->path)));
+ }
- path = wPrefGetString(PATHS_SECTION, pathType);
+ path = wPrefGetString(PATHS_SECTION, pathType);
- if (!path) {
- path = wPrefGetString("file", "directory");
- }
+ if (!path) {
+ path = wPrefGetString("file", "directory");
+ }
- if (!path) {
- path = wGetUserHomeDir();
- }
+ if (!path) {
+ path = wGetUserHomeDir();
+ }
- AddPath(pathType, (char *)path);
- return ((char *)path);
+ AddPath(pathType, (char *)path);
+ return ((char *)path);
}
/**
@@ -177,16 +177,16 @@ void ConvertPathForward(char *string)
char *FindFilename(char *path)
{
- char *name;
- name = strrchr(path, FILE_SEP_CHAR[0]);
+ char *name;
+ name = strrchr(path, FILE_SEP_CHAR[0]);
- if (name) {
- name++;
- } else {
- name = path;
- }
+ if (name) {
+ name++;
+ } else {
+ name = path;
+ }
- return (name);
+ return (name);
}
/**
@@ -196,7 +196,8 @@ char *FindFilename(char *path)
* \return pointer to the file extension part, empty string if no extension present
*/
-char *FindFileExtension(char *path) {
+char *FindFileExtension(char *path)
+{
char *ext;
ext = strrchr(path, '.');
@@ -223,25 +224,25 @@ char *FindFileExtension(char *path) {
void
MakeFullpath(char **str, ...)
{
- va_list valist;
- const char *part;
- char *separator = FILE_SEP_CHAR;
- char lastchar = '\0';
- DynString path;
- DynStringMalloc(&path, 0);
- va_start(valist, str);
-
- while ((part = va_arg(valist, const char *))) {
- if (part[0] !=separator[0] && lastchar && lastchar != separator[0] &&
- lastchar != ':') {
- DynStringNCatCStr(&path, 1, separator);
- }
-
- DynStringCatCStr(&path, part);
- lastchar = part[strlen(part) - 1];
- }
-
- *str = strdup(DynStringToCStr(&path));
- DynStringFree(&path);
+ va_list valist;
+ const char *part;
+ char *separator = FILE_SEP_CHAR;
+ char lastchar = '\0';
+ DynString path;
+ DynStringMalloc(&path, 0);
+ va_start(valist, str);
+
+ while ((part = va_arg(valist, const char *))) {
+ if (part[0] !=separator[0] && lastchar && lastchar != separator[0] &&
+ lastchar != ':') {
+ DynStringNCatCStr(&path, 1, separator);
+ }
+
+ DynStringCatCStr(&path, part);
+ lastchar = part[strlen(part) - 1];
+ }
+
+ *str = strdup(DynStringToCStr(&path));
+ DynStringFree(&path);
va_end(valist);
}
diff --git a/app/bin/paths.h b/app/bin/paths.h
index f3f5f23..c12e325 100644
--- a/app/bin/paths.h
+++ b/app/bin/paths.h
@@ -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
*/
#ifndef HAVE_PATHS_H
diff --git a/app/bin/problemrep.c b/app/bin/problemrep.c
new file mode 100644
index 0000000..6e23984
--- /dev/null
+++ b/app/bin/problemrep.c
@@ -0,0 +1,635 @@
+/** \file problemrep.c
+ * Collect data for a problem report and remove private info
+*/
+
+/* XTrkCad - Model Railroad CAD
+ * Copyright (C) 2024 Martin Fischer
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <time.h>
+
+#ifdef WINDOWS
+#include <Windows.h>
+#include <FreeImage.h>
+#define CONFIG_DELIMITER '='
+#else
+#define strnicmp strncasecmp
+#define stricmp strcasecmp
+#define CONFIG_DELIMITER ':'
+#endif // WINDOWS
+
+#include <wlib.h>
+
+#include "include/problemrep.h"
+#include "archive.h"
+#include "directory.h"
+#include "dynstring.h"
+#include "fileio.h"
+#include "layout.h"
+#include "misc.h"
+#include "include/paramfilelist.h"
+#include "paths.h"
+#include "version.h"
+
+static void SaveSystemInfo(char* dir);
+static void ZipProblemData(const char* src);
+static void ProblemDataCollect();
+
+static dynArr_t configFiles_da;
+#define configFile(N) DYNARR_N(char *,configFiles_da,N)
+
+/**
+ * Create a temporary directory as intermediate space for collected files.
+ * The returned pointer has to be MyFree()'d by the caller.
+ *
+ * \return pointer to directory name, the complete path
+ */
+
+static char *
+CreateTempDirectory()
+{
+ char* dir;
+#ifdef WINDOWS
+ struct _stat fileStatus;
+#else
+ struct stat fileStatus;
+#endif
+
+ dir = wGetTempPath();
+
+ if (!stat(dir, (struct stat *const) &fileStatus)) {
+ if (fileStatus.st_mode & S_IFDIR) {
+ return(dir);
+ }
+ } else {
+ mkdir(dir, 0700);
+ }
+
+ return MyStrdup(dir);
+}
+
+/**
+ * Save version information about the operating environment to a file.
+ *
+ * \param dir destination directory
+ */
+
+void
+SaveSystemInfo(char* dir)
+{
+ FILE* fh;
+ char* fileName=NULL;
+
+ MakeFullpath(&fileName, dir, "versions.txt", NULL);
+
+ if (fileName) {
+ fh = fopen(fileName, "w");
+
+ fprintf(fh, "XTrackCAD: %s\n", VERSION);
+ fprintf(fh, "OS: %s\n", wGetOSVersion());
+#ifdef WINDOWS
+ fprintf(fh, "FreeImage: %s\n", FreeImage_GetVersion());
+#else
+ // get gtk version
+ fprintf(fh, "GTK Version: %s", wGetPlatformVersion() );
+#endif // WINDOWS
+
+ fclose(fh);
+ }
+ free(fileName);
+}
+
+/**
+ * Replace the directory name in a configuration file line. Assumption is that
+ * the name of the directory starts after the '=' (Windows) or ':' (UNIX)
+ *
+ * \para result pointer to DynString for result, DynString is cleared if
+ * directory was not found
+ * \param in line from configuration file
+ * \param dir directory name to look for
+ * \param replace replacement string
+ * \return true if found and replaced, false otherwise
+ */
+
+static bool
+ReplaceDirectoryName(DynString *result, char* in, const char* dir,
+ char* replace)
+{
+ bool rc = false;
+
+ DynStringClear(result);
+
+#ifdef WINDOWS
+ rc = strnicmp(in, dir, strlen(dir));
+#else
+ rc = strncmp(in, dir, strlen(dir));
+#endif // WINDOWS
+
+ if(!rc) {
+ DynStringCatCStrs(result, replace, in + strlen(dir), NULL);
+ }
+ return(!rc);
+}
+
+/**
+ * Find the user id in a string and replace it with a placeholer.
+ *
+ * \param result resulting string DynFree() after use
+ * \param in string to search in
+ * \param replace replacement string
+ * \return true if found and replaced
+ */
+
+static bool
+ReplaceUserID(DynString* result, char* in, char* replace)
+{
+ char* user = strstr(in, wGetUserID());
+ bool rc = false;
+ DynStringClear(result);
+
+ if (user) {
+ DynStringNCatCStr(result, user - in, in);
+ DynStringCatCStrs(result, replace, user + strlen(user), NULL);
+ rc = true;
+ }
+
+ return(rc);
+}
+
+/**
+ * Replace directory names in a configuration value with the appropriate
+ * symbolic name for that directory.
+ * The name of the config value is ignored at the moment, but could be used
+ * for refined logic
+ *
+ * \param result pointer to DynString for modified value
+ * \param name name of configuration value
+ * \param value the value
+ * \return
+ */
+static bool
+FilterConfigLine(DynString *result, char* name, char *value)
+{
+ bool clean;
+
+ DynStringClear(result);
+
+ clean = ReplaceDirectoryName(result, value, wGetAppLibDir(),
+ "<<applibdir>>");
+
+ // NOTE: the order of these calls is important, possible subdirs of a
+ // homedir must be checked first
+ if (!clean) {
+ clean = ReplaceDirectoryName(result, value, wGetAppWorkDir(),
+ "<<workdir>>");
+ if (!clean) {
+ clean = ReplaceDirectoryName(result, value, wGetUserHomeRootDir(),
+ "<<home>>");
+ }
+ }
+
+ // replace any remaining references to the current userid
+ if (!clean) {
+ clean = ReplaceUserID(result, value, "<<user>>");
+ }
+
+ if (!clean) {
+ DynStringCatCStr(result, value);
+ }
+
+ return(clean);
+}
+
+/**
+ * Read a configuration file, replace private information and write result
+ * to a file.
+ *
+ * \param srcfile configuration file to read
+ * \param destdir destination directory
+ * \return true
+ */
+
+#define DELIMITER_COUNT (4) // count of delimiter chars in config line
+
+static bool
+PickupConfigFile(char *srcfile, char* destdir)
+{
+ FILE* fhRead;
+ FILE* fhWrite;
+ DynString configLine;
+ DynString destFile;
+
+ DynStringMalloc(&destFile, FILENAME_MAX);
+ DynStringMalloc(&configLine, FILENAME_MAX);
+
+ DynStringCatCStrs(&destFile, destdir, FILE_SEP_CHAR,
+ FindFilename(srcfile), NULL);
+
+ ProblemrepUpdateW(_("Get settings file %s\n"), srcfile);
+
+ fhRead = fopen(srcfile, "r");
+ fhWrite = fopen(DynStringToCStr(&destFile), "w");
+
+ if (fhRead && fhWrite) {
+ char* lineptr = NULL;
+ size_t linelen = 0;
+
+ while (!feof(fhRead)) {
+ char* section;
+ char* name;
+ char* value;
+ size_t totalLength;
+
+ if(getline(&lineptr, &linelen, fhRead)==-1) {
+ continue;
+ }
+
+ wPrefTokenize(lineptr, &section, &name, &value);
+ if (name && value) {
+ FilterConfigLine(&configLine, name, value);
+
+ // calculate maximum possible length of resulting line
+ totalLength = (section ? strlen(section) : 0) +
+ (name ? strlen(name) : 0) +
+ (value ? strlen(value) : 0) + DELIMITER_COUNT;
+
+ // increase buffer size by 256 byte if too small
+ if (totalLength > linelen) {
+ size_t newLen = ((totalLength + 256) & (~0xff));
+ lineptr = realloc(lineptr, newLen);
+ if (!lineptr) {
+ AbortProg("!lineptr", __FILE__, __LINE__,
+ "Can't realloc memory");
+ }
+ linelen = newLen;
+ }
+ value = DynStringToCStr(&configLine);
+ }
+ wPrefFormatLine(section, name, value, lineptr);
+ fprintf(fhWrite, "%s\n", lineptr);
+ }
+ free(lineptr);
+ fclose(fhRead);
+ fclose(fhWrite);
+ }
+ DynStringFree(&configLine);
+ DynStringFree(&destFile);
+
+ return(true);
+}
+
+/**
+ * Replace the leading part of a directory name with a place holder.
+ *
+ * \param result modified directory name
+ * \param dir original name
+ * \param search path to be replaced is present
+ * \param replace replacement
+ * \return true if found and replaced
+ */
+
+static bool
+FilterDirectoryName(DynString* result, char* dir, const char* search,
+ char* replace)
+{
+ bool rc = false;
+ if (!strnicmp(dir, search, strlen(search))) {
+ DynStringReset(result);
+ DynStringCatCStrs(result, replace, dir + strlen(search), NULL);
+ rc = true;
+ }
+
+ return(rc);
+}
+
+/**
+ * Filter path information from a NOTE subcommand. In case the home directory
+ * is referenced it is changed using a place holder.
+ * In case a NOTE references a file (sub format 2) the home directory
+ * changed using a place holder
+ *
+ * \param out open file handle
+ * \param work subfunction of NOTE without the leading command
+ */
+
+static void
+FilterLayoutNote(FILE* out, char* work)
+{
+ DynString result;
+ bool isDocument = false;
+ char* token;
+
+ DynStringMalloc(&result, FILENAME_MAX);
+
+ fprintf(out, "NOTE ");
+
+ for (int i = 0; i < 8; i++) {
+ token = strtok(NULL, " \t");
+ fprintf(out, "%s ", token);
+ }
+
+ if (token && !strcmp(token, "2")) {
+ isDocument = true;
+ }
+ // filename is next
+ token = strtok(NULL, " \t\"");
+
+ char * filename = ConvertFromEscapedText(token);
+
+ if (isDocument && FilterDirectoryName(&result, filename,
+ wGetUserHomeDir(), "<<home>>")) {
+ MyFree(filename);
+ filename = ConvertToEscapedText(DynStringToCStr(&result));
+ fprintf(out, "\"%s\"", filename);
+ } else {
+ fprintf(out, "\"%s\"", token);
+ }
+
+ MyFree(filename);
+ filename = NULL;
+
+ token = strtok(NULL, "\n");
+ fprintf(out, "%s\n", token);
+
+ DynStringFree(&result);
+}
+
+/**
+ * Filter path information from a SET subcommand. In case the home directory
+ * is referenced it is changed using a place holder
+ *
+ * \param out open file handle
+ * \param work subcommand of LAYERS without the leading command
+ */
+
+static void
+FilterLayers(FILE *out, char* work)
+{
+ DynString result;
+
+ DynStringMalloc(&result, FILENAME_MAX );
+
+ char* token = strtok(NULL, " \t");
+ if (token ) {
+ if (!stricmp(token, "SET")) {
+ char* filename;
+ bool clean;
+
+ fprintf(out, "%s ", token);
+ token = strtok(NULL, " \t");
+ fprintf(out, "%s ",token);
+ token = strtok(NULL, "\"");
+ filename = ConvertFromEscapedText(token);
+
+ DYNARR_APPEND(char*, configFiles_da, 1);
+ configFile(configFiles_da.cnt - 1) = MyStrdup(filename);
+
+ clean = FilterDirectoryName(&result, filename, wGetUserHomeDir(),
+ "<<home>>");
+ if (clean) {
+ MyFree(filename);
+ filename = ConvertToEscapedText(DynStringToCStr(&result));
+ fprintf(out, "\"%s\"\n", filename);
+ } else {
+ fprintf(out, "\"%s\"\n", token);
+ }
+ MyFree(filename);
+
+ } else {
+ const char* remainder = token + strlen(token) + 1;
+ fprintf(out, "%s %s", token, remainder );
+ }
+ }
+ DynStringFree(&result);
+}
+
+/**
+ * Filter privacy information from a single line in xtc format. The result is
+ * saved to a file
+ *
+ * \param out open file handle
+ * \param in valid line from xtc file
+ * \return true
+ */
+
+static bool
+FilterLayoutLine(FILE *out, const char* in)
+{
+ char* workCopy = MyStrdup(in);
+ char* token;
+
+ token = strtok(workCopy, " \t\n");
+ if (token) {
+ bool done = false;
+ if (!stricmp(token, "LAYERS")) {
+ // handle LAYERS
+ fprintf(out, "%s ", token);
+ FilterLayers(out, workCopy);
+ done = true;
+ }
+ if (!stricmp(token, "NOTE")) {
+ // handle NOTE document
+ FilterLayoutNote(out, workCopy);
+ done = true;
+ }
+ if (!done) {
+ fputs(in, out);
+ }
+ }
+
+ MyFree(workCopy);
+ return(true);
+}
+
+/**
+ * Get the currently open layout file, filter privacy information and place
+ * it in an temporary directory.
+ *
+ * \param dir destination directory
+ * \return true
+ */
+
+static bool
+PickupLayoutFile(char* dir)
+{
+ FILE* fhRead;
+ FILE* fhWrite;
+ DynString layoutLine;
+ DynString destFile;
+
+ DynStringMalloc(&destFile, FILENAME_MAX);
+ DynStringMalloc(&layoutLine, STR_SIZE);
+
+ DynStringCatCStrs(&destFile, dir, FILE_SEP_CHAR,
+ GetLayoutFilename(), NULL);
+
+ ProblemrepUpdateW(_("Add layout file %s\n"), GetLayoutFullPath());
+ fhRead = fopen(GetLayoutFullPath(), "r");
+ fhWrite = fopen(DynStringToCStr(&destFile), "w");
+
+ if (fhRead && fhWrite) {
+ char* lineptr = NULL;
+ size_t linelen = 0;
+ while (!feof(fhRead)) {
+ getline(&lineptr, &linelen, fhRead);
+ if (!feof(fhRead)) {
+ FilterLayoutLine(fhWrite, lineptr);
+ }
+ }
+ free(lineptr);
+ fclose(fhRead);
+ fclose(fhWrite);
+ }
+ DynStringFree(&layoutLine);
+ DynStringFree(&destFile);
+ return(true);
+}
+
+/**
+ * Get the custom parameter file.
+ *
+ * \param dest temporary directory
+ * \return true on success
+ */
+
+static bool
+PickupCustomFile(char* dest)
+{
+ char* inFile;
+ char* outFile;
+ bool rc;
+
+ MakeFullpath(&inFile, wGetAppWorkDir(), "xtrkcad.cus", NULL);
+ MakeFullpath(&outFile, dest, "xtrkcad.cus", NULL);
+ ProblemrepUpdateW(_("Add custom parameter definitions\n"));
+
+ rc = Copyfile(inFile, outFile);
+
+ free(inFile);
+ free(outFile);
+
+ return(rc==0);
+}
+
+/**
+ * Create a zip file from the collected information. The zip file is created
+ * in the same directory as the layout design. A unique name is generated from
+ * the current date and time.
+ *
+ * \param src directory with collected information
+ */
+
+static void
+ZipProblemData(const char* src)
+{
+ char* dest = MyStrdup(GetLayoutFullPath());
+ char* out;
+ char *filename = strrchr(dest, PATH_SEPARATOR[0]) + 1;
+ struct tm* currentTime;
+ time_t clock;
+ char timestamp[80];
+
+ time(&clock);
+ currentTime = gmtime(&clock);
+ strftime(timestamp, 80, "pd-%y%m%dT%H%M%S.zip", currentTime);
+
+ *filename = '\0';
+
+ MakeFullpath(&out, dest, timestamp, NULL);
+ ProblemrepUpdateW(_("Create zip archive %s\n"), out);
+
+ CreateArchive(src, out);
+ free(out);
+}
+
+void
+ProblemDataCollect()
+{
+ char* tempDirectory;
+ char* subdirectory = NULL;
+ bool ret;
+ char *filename = GetLayoutFullPath();
+
+ if(*filename == '\0') {
+ ProblemrepUpdateW(_("No layout design loaded! Operation is cancelled.\n"));
+ return;
+ }
+
+ if (!ProblemSaveLayout()) {
+ return;
+ }
+
+ tempDirectory = CreateTempDirectory();
+ SaveSystemInfo(tempDirectory);
+
+ DYNARR_APPEND(char *, configFiles_da, 1);
+ configFile(configFiles_da.cnt - 1) = MyStrdup(wGetProfileFilename());
+
+ ret = PickupLayoutFile(tempDirectory);
+
+ MakeFullpath(&subdirectory, tempDirectory, "workdir", NULL);
+ mkdir(subdirectory, 0700);
+ if (ret) {
+ ret = PickupCustomFile(subdirectory);
+ }
+
+ for (int i = 0; i < configFiles_da.cnt; i++) {
+ char *file = configFile(i);
+ PickupConfigFile(file, subdirectory);
+ MyFree(file);
+ }
+ free(subdirectory);
+ subdirectory = NULL;
+
+ MakeFullpath(&subdirectory, tempDirectory, "params", NULL);
+ mkdir(subdirectory, 0700);
+
+ for (int i = 0; i < GetParamFileCount(); i++) {
+ char* file = GetParamFileName(i);
+
+ if (strncmp(file, wGetAppLibDir(), strlen(wGetAppLibDir()))) {
+ char* destfile;
+ ProblemrepUpdateW(_("Get local parameter file %s\n"), file);
+
+ MakeFullpath(&destfile, subdirectory, FindFilename(file), NULL);
+ Copyfile(file, destfile);
+ free(destfile);
+ }
+ }
+ free(subdirectory);
+ subdirectory = NULL;
+
+ if (ret) {
+ ZipProblemData(tempDirectory);
+
+ DeleteDirectory(tempDirectory);
+ }
+
+ DYNARR_FREE(char*, configFiles_da);
+}
+
+void
+DoProblemCollect(void* unused)
+{
+ ProblemrepCreateW(NULL);
+
+ ProblemDataCollect();
+}
diff --git a/app/bin/problemrepui.c b/app/bin/problemrepui.c
new file mode 100644
index 0000000..22610e3
--- /dev/null
+++ b/app/bin/problemrepui.c
@@ -0,0 +1,109 @@
+/** \file problemrepui.c
+ * UI for the problem report function
+*/
+
+/* XTrkCad - Model Railroad CAD
+ * Copyright (C) 2024 Martin Fischer
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <wlib.h>
+
+#include "custom.h"
+#include "fileio.h"
+#include "layout.h"
+#include "param.h"
+#include "include/problemrep.h"
+
+static wWin_p problemrepW;
+
+#define DESCRIPTION N_("This function puts together information that can " \
+ "be helpful to analyze a problem. Private information " \
+ "like userids is removed\n\n")
+
+static paramTextData_t textData = { 60, 10 };
+
+static paramData_t problemrepPLs[] = {
+#define I_PROBLEMREPPROGRESS (0)
+#define PROBLEMREP_T ((wText_p)problemrepPLs[I_PROBLEMREPPROGRESS].control)
+ { PD_TEXT, NULL, NULL, PDO_DLGRESIZE, &textData, NULL, BO_READONLY | BT_TOP | BT_CHARUNITS }
+};
+static paramGroup_t problemrepPG = { "problemdata", 0, problemrepPLs, COUNT(problemrepPLs) };
+
+/**
+ * Create and show the problem report window
+ */
+
+void ProblemrepCreateW(void* ptr)
+{
+ if (!problemrepW) {
+ ParamRegister(&problemrepPG);
+
+ problemrepW = ParamCreateDialog(&problemrepPG,
+ MakeWindowTitle(_("Data for Problem Report")),
+ NULL, NULL, wHide, TRUE, NULL,
+ F_TOP | F_CENTER | PD_F_ALT_CANCELLABEL, NULL);
+ } else {
+ wTextClear(PROBLEMREP_T);
+ }
+ wTextAppend(PROBLEMREP_T, DESCRIPTION);
+ wShow(problemrepW);
+}
+
+void ProblemrepUpdateW(char* fmt, ...)
+{
+ int length;
+ char* buffer;
+ va_list args;
+ va_list argsc;
+ va_start(args, fmt);
+ va_copy(argsc, args);
+
+ length = vsnprintf(NULL, 0, fmt, args);
+ buffer = MyMalloc(length + sizeof(NULL));
+ va_end(args);
+
+ if (buffer) {
+ memset(buffer, 0, length +sizeof(NULL));
+
+ vsnprintf(buffer, length+sizeof(NULL), fmt, argsc);
+ wTextAppend(PROBLEMREP_T, buffer);
+
+ }
+ va_end(argsc);
+ MyFree(buffer);
+}
+
+BOOL_T
+ProblemSaveLayout(void)
+{
+ int rc = TRUE;
+ if (GetLayoutChanged()) {
+
+ rc = wNoticeEx( NT_WARNING,
+ _("Trackplan has to be saved first. " \
+ "Do you want to do so now ? "),
+ N_("Save Now..."),
+ N_("Cancel"));
+
+ if (rc) {
+ DoSave(NULL);
+ } else {
+ ProblemrepUpdateW(_("Operation cancelled\n"));
+ }
+ }
+ return(rc);
+}
diff --git a/app/bin/scale.c b/app/bin/scale.c
new file mode 100644
index 0000000..bfc4edd
--- /dev/null
+++ b/app/bin/scale.c
@@ -0,0 +1,1154 @@
+/** \file scale.c
+ * Management of information about scales and gauges plus rprintf.
+ */
+
+/* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "common.h"
+#include "cundo.h"
+#include "cjoin.h"
+#include "compound.h"
+#include "custom.h"
+#include "draw.h"
+#include "fileio.h"
+#include "layout.h"
+#include "param.h"
+#include "track.h"
+#include "cselect.h"
+#include "common-ui.h"
+
+/****************************************************************************
+ *
+ * SCALE
+ *
+ */
+
+#define SCALE_DEMO (-1)
+#define SCALE_ANY (-2)
+#define SCALE_MULTI (-3)
+#define SCALE_UNKNOWN (-4)
+#define SCALE_ERROR (-5)
+
+typedef struct {
+ char * scale;
+ DIST_T ratio;
+ DIST_T gauge;
+ DIST_T R[3];
+ DIST_T X[3];
+ DIST_T L[3];
+ DIST_T length;
+ BOOL_T tieDataValid;
+ tieData_t tieData;
+} scaleInfo_t;
+typedef scaleInfo_t * scaleInfo_p;
+static dynArr_t scaleInfo_da;
+#define scaleInfo(N) DYNARR_N( scaleInfo_t, scaleInfo_da, N )
+static SCALEINX_T scaleInfo_cnt=0;
+
+typedef struct {
+ char *in_scales;
+ SCALE_FIT_TYPE_T type;
+ char *match_scales;
+ SCALE_FIT_T result;
+} scaleComp_t;
+typedef scaleComp_t * scaleComp_p;
+static dynArr_t scaleCompatible_da;
+#define scaleComp(N) DYNARR_N( scaleComp_t, scaleCompatible_da, N )
+
+static tieData_t tieData_demo = {
+ TRUE,
+ 96.0/160.0,
+ 16.0/160.0,
+ 32.0/160.0
+};
+
+EXPORT DIST_T curScaleRatio;
+EXPORT char * curScaleName;
+static scaleInfo_p curScale;
+/** @prefs [misc] include same gauge turnouts=1 Unknown */
+EXPORT long includeSameGaugeTurnouts = FALSE;
+static SCALEINX_T demoScaleInx = -1;
+
+
+/** this struct holds a gauge description */
+typedef struct {
+ char * gaugeStr; /** ptr to textual description eg. 'n3' */
+ SCALEINX_T scaleInx; /** index of complete information in scaleInfo_da */
+} gaugeInfo_t;
+
+EXPORT typedef gaugeInfo_t * gaugeInfo_p;
+
+/** this struct holds a scale description */
+typedef struct {
+ char *scaleDescStr; /** ptr to textual description eg. 'HO' */
+ dynArr_t gauges_da; /** known gauges to this scale */
+} scaleDesc_t;
+
+EXPORT typedef scaleDesc_t *scaleDesc_p;
+static dynArr_t scaleDesc_da;
+#define scaleDesc(N) DYNARR_N( scaleDesc_t, scaleDesc_da, N )
+
+
+static BOOL_T DoSetScaleDesc( SCALEINX_T scaleInx );
+
+static int log_scale = 0;
+
+/**
+ * Get the scale info for index
+ *
+ * This is over-engineered but we somehow end up with
+ * out of range inx
+ */
+// Substitute layout scale if scaleInx is invalid
+static SCALEINX_T altScaleInx = -1;
+static scaleInfo_p GetScaleInfo( SCALEINX_T scaleInx )
+{
+ if ( scaleInx >= 0 && scaleInx < scaleInfo_da.cnt ) {
+ // Good index
+ LOG( log_scale, 5, ( " GetScaleInfo-1(%d)\n", scaleInx ) );
+ return &scaleInfo( scaleInx );
+ }
+ if ( altScaleInx >= 0 ) {
+ // Previously seen bad index
+ LOG( log_scale, 4, ( " GetScaleInfo-2(%d)\n", scaleInx ) );
+ return &scaleInfo( altScaleInx );
+ }
+ // Bad index
+ altScaleInx = GetLayoutCurScale();
+ int rc = NoticeMessage( MSG_BAD_SCALE_INDEX, curScaleName, "Unknown",
+ scaleInx, curScaleName );
+ if ( rc == 1 ) {
+ // User ok with using layout scale
+ LOG( log_scale, 3, ( " GetScaleInfo-3(%d)\n", scaleInx ) );
+ return &scaleInfo( altScaleInx );
+ }
+ // Clone existing layout scale as 'Unknown'
+ DYNARR_APPEND( scaleInfo_t, scaleInfo_da, 1 );
+ scaleInfo_p si = &DYNARR_LAST( scaleInfo_t, scaleInfo_da );
+ *si = scaleInfo(altScaleInx);
+ altScaleInx = scaleInfo_da.cnt-1;
+ si->scale = MyStrdup( "Unknown" );
+ LOG( log_scale, 3, ( " GetScaleInfo-4(%d)\n", scaleInx ) );
+ //DoSetScaleDesc( scaleInfo_da.cnt-1 );
+ return si;
+}
+
+
+/**
+ * Get the index into the linear list from a scale description and a gauge. All information about a
+ * scale/ gauge combination is stored in a linear list. The index in that list for a given scale and the
+ * gauge is returned by this function. Note that there is no error checking on parameters!
+ *
+ * \param IN scaleInx index into list of scale descriptions
+ * \param IN gaugeInx index into list of gauges available for this scale
+ * \return index into master list of scale/gauge combinations
+ */
+
+EXPORT SCALEINX_T GetScaleInx( SCALEDESCINX_T scaleInx, GAUGEINX_T gaugeInx )
+{
+ scaleDesc_t s;
+ gaugeInfo_p g;
+
+ if ( scaleInx < 0 || scaleInx >= scaleDesc_da.cnt ) {
+ lprintf( "GetScaleInx: bad scaleInx %ld (%d)\n", scaleInx, scaleDesc_da.cnt );
+ return 0;
+ }
+ s = scaleDesc(scaleInx);
+ if ( gaugeInx < 0 || gaugeInx >= s.gauges_da.cnt ) {
+ lprintf( "GetScaleInx: bad gaugeInx %ld (%d)\n", gaugeInx, s.gauges_da.cnt );
+ return 0;
+ }
+ g = &(DYNARR_N(gaugeInfo_t, s.gauges_da, gaugeInx));
+
+ return g->scaleInx;
+
+}
+EXPORT DIST_T GetScaleTrackGauge( SCALEINX_T si )
+{
+ return GetScaleInfo(si)->gauge;
+}
+
+EXPORT DIST_T GetScaleRatio( SCALEINX_T si )
+{
+ return GetScaleInfo(si)->ratio;
+}
+
+EXPORT char * GetScaleName( SCALEINX_T si )
+{
+ if ( si == SCALE_DEMO ) {
+ return "DEMO";
+ }
+ if ( si == SCALE_ANY ) {
+ return "*";
+ }
+ return GetScaleInfo(si)->scale;
+}
+
+EXPORT void GetScaleEasementValues( DIST_T * R, DIST_T * L )
+{
+ wIndex_t i;
+ for (i=0; i<3; i++) {
+ *R++ = curScale->R[i];
+ *L++ = curScale->L[i];
+ }
+}
+
+EXPORT DIST_T GetScaleMinRadius( SCALEINX_T si )
+{
+ return GetScaleInfo(si)->R[0];
+}
+
+
+EXPORT void ValidateTieData( tieData_p td )
+{
+ td->valid = (td->length > 0.05 && td->width > 0.05 && td->spacing > 0.05);
+}
+
+EXPORT tieData_t GetScaleTieData( SCALEINX_T si )
+{
+ scaleInfo_p s;
+ DIST_T defLength;
+
+ if ( si == SCALE_DEMO ) {
+ return tieData_demo;
+ }
+ s = GetScaleInfo(si);
+ if ( !s->tieDataValid ) {
+ sprintf( message, "tiedata-%s", s->scale );
+ defLength = (96.0-54.0)/s->ratio+s->gauge;
+
+ /** @prefs [tiedata-<SCALE>] length, width, spacing Sets tie drawing data.
+ * Example for 6"x8"x6' ties spaced 20" in HOn3 (slash separates 4 lines):
+ * [tiedata-HOn3] \ length=0.83 \ width=0.07 \ spacing=0.23
+ */
+ wPrefGetFloat( message, "length", &s->tieData.length, defLength );
+ wPrefGetFloat( message, "width", &s->tieData.width, 16.0/s->ratio );
+ wPrefGetFloat( message, "spacing", &s->tieData.spacing, 2*s->tieData.width );
+ s->tieData.valid = TRUE;
+ s->tieDataValid = TRUE;
+ }
+ return s->tieData;
+}
+
+void
+SetScaleGauge(SCALEDESCINX_T desc, GAUGEINX_T gauge)
+{
+ SCALEINX_T scaleInx = GetScaleInx( desc, gauge );
+ LOG( log_scale, 1, ( "SetScaleGauge(%d)\n", scaleInx ) );
+ CHECK( 0 <= scaleInx && scaleInx < scaleInfo_cnt );
+ SetLayoutCurScale( scaleInx );
+}
+
+static BOOL_T
+SetScaleDescGauge(SCALEINX_T scaleInx)
+{
+ SCALEDESCINX_T scaleDescInx;
+ GAUGEINX_T gaugeInx;
+ if ( GetScaleGauge( scaleInx, &scaleDescInx, &gaugeInx ) ) {
+ SetLayoutCurScaleDesc( scaleDescInx );
+ SetLayoutCurGauge( gaugeInx );
+ }
+ return TRUE;
+}
+
+EXPORT SCALEINX_T LookupScale( const char * name )
+{
+ wIndex_t scaleInx;
+ DIST_T gauge;
+ LOG( log_scale, 2, ( " LookupScale(%s)", name ) );
+ if ( strcmp( name, "*" ) == 0 ) {
+ LOG( log_scale, 2, ( " .any = %d\n", SCALE_ANY ) );
+ return SCALE_ANY;
+ }
+ for ( scaleInx=0; scaleInx<scaleInfo_da.cnt; scaleInx++ ) {
+ if (strcmp( scaleInfo(scaleInx).scale, name ) == 0) {
+ LOG( log_scale, 2, ( " .name = %d\n", scaleInx ) );
+ if ( scaleInx >= scaleInfo_cnt ) {
+ // Bogus scale
+ return GetLayoutCurScale();
+ } else {
+ return scaleInx;
+ }
+ }
+ }
+ if ( isdigit((unsigned char)name[0]) ) {
+ gauge = atof( name );
+ for ( scaleInx=0; scaleInx<scaleInfo_da.cnt; scaleInx++ ) {
+ if (scaleInfo(scaleInx).gauge == gauge) {
+ LOG( log_scale, 2, ( " .gauge = %d\n", scaleInx ) );
+ return scaleInx;
+ }
+ }
+ }
+ if ( inPlayback ) {
+ // Invalid SCALE in recording/demo: abort
+ InputError( _("Invalid Scale: playback aborted\n SCALE %s"), FALSE, name );
+ return GetLayoutCurScale();
+ }
+ // Bad name - create a dummy scale
+ NoticeMessage( MSG_BAD_SCALE_NAME, _("Ok"), NULL,
+ name, curScaleName );
+ // Clone existing layout scale for dummy
+ DYNARR_APPEND( scaleInfo_t, scaleInfo_da, 1 );
+ scaleInfo_p scaleInfoP = &DYNARR_LAST( scaleInfo_t, scaleInfo_da );
+ *scaleInfoP = scaleInfo(GetLayoutCurScale());
+ scaleInfoP->scale = MyStrdup( name );
+ LOG( log_scale, 2, ( " .new = %d\n", scaleInfo_da.cnt-1 ) );
+ //DoSetScaleDesc( scaleInfo_da.cnt-1 );
+// return scaleInfo_da.cnt-1;
+ return GetLayoutCurScale();
+}
+
+/*
+ * Evaluate the fit of a part scale1 to a definition in scale2 for a type.
+ *
+ * The rules differ by type of object.
+ *
+ * Tracks need to be the same gauge to be a fit. If they are the same scale they are exact.
+ * If the gauge is the same, but the scale is different they are compatible.
+ * There are well known exceptions where the scale is not the same but we call them exact.
+ *
+ * Structures need to be the same scale to be exact. If they are within 15% they are compatible.
+ *
+ * Cars need to be the same gauge and scale to be exact.
+ * If they are the same gauge, but within 15% of the scale they are compatible.
+ *
+ *\param type (FIT_TURNOUT,FIT_STRUCTURE,FIT_CAR)
+ *\param scale1 the input scale
+ *\param scale2 the scale to check against
+ *
+ *\return FIT_EXACT, FIT_COMPATIBLE, FIT_NONE
+ */
+
+EXPORT SCALE_FIT_T CompatibleScale(
+ SCALE_FIT_TYPE_T type,
+ SCALEINX_T scale1,
+ SCALEINX_T scale2 )
+{
+ SCALE_FIT_T rc;
+ if ( scale1 == scale2 ) {
+ return FIT_EXACT;
+ }
+ if ( scale1 == SCALE_DEMO || scale2 == SCALE_DEMO ) {
+ return FIT_NONE;
+ }
+ if ( scale1 == demoScaleInx || scale2 == demoScaleInx ) {
+ return FIT_NONE;
+ }
+ switch(type) {
+ case FIT_TURNOUT:
+ if ( scale1 == SCALE_ANY ) {
+ return FIT_EXACT;
+ }
+ if (scaleInfo(scale1).gauge == scaleInfo(scale2).gauge &&
+ scaleInfo(scale1).scale == scaleInfo(scale2).scale) {
+ return FIT_EXACT;
+ }
+
+ rc = FindScaleCompatible(FIT_TURNOUT, scaleInfo(scale1).scale,
+ scaleInfo(scale2).scale);
+ if (rc != FIT_NONE) { return rc; }
+
+ if ( includeSameGaugeTurnouts &&
+ scaleInfo(scale1).gauge == scaleInfo(scale2).gauge ) {
+ return FIT_COMPATIBLE;
+ }
+ break;
+ case FIT_STRUCTURE:
+ if ( scale1 == SCALE_ANY ) {
+ return FIT_EXACT;
+ }
+ if ( scaleInfo(scale1).ratio == scaleInfo(scale2).ratio ) {
+ return FIT_EXACT;
+ }
+
+ rc = FindScaleCompatible(FIT_STRUCTURE, scaleInfo(scale1).scale,
+ scaleInfo(scale2).scale);
+ if (rc != FIT_NONE) { return rc; }
+
+ //15% scale match is compatible for structures
+ if (scaleInfo(scale1).ratio/scaleInfo(scale2).ratio>=0.85 &&
+ scaleInfo(scale1).ratio/scaleInfo(scale2).ratio<=1.15) {
+ return FIT_COMPATIBLE;
+ }
+ break;
+ case FIT_CAR:
+ if ( scale1 == SCALE_ANY ) {
+ return FIT_EXACT;
+ }
+ if (scaleInfo(scale1).gauge == scaleInfo(scale2).gauge &&
+ scaleInfo(scale1).scale == scaleInfo(scale2).scale) {
+ return FIT_EXACT;
+ }
+
+ rc = FindScaleCompatible(FIT_CAR, scaleInfo(scale1).scale,
+ scaleInfo(scale2).scale);
+ if (rc != FIT_NONE) { return rc; }
+
+ //Same gauge and 15% scale match is compatible for cars
+ if (scaleInfo(scale1).gauge == scaleInfo(scale2).gauge) {
+ if (scaleInfo(scale1).ratio/scaleInfo(scale2).ratio>=0.85 &&
+ scaleInfo(scale1).ratio/scaleInfo(scale2).ratio<=1.15) {
+ return FIT_COMPATIBLE;
+ }
+ }
+ break;
+
+ default:;
+ }
+
+ return FIT_NONE;
+
+}
+
+/** Split the scale and the gauge description for a given combination. Eg HOn3 will be
+ * split to HO and n3.
+ * \param scaleInx IN scale/gauge combination
+ * \param scaleDescInx OUT scale part
+ * \param gaugeInx OUT gauge part
+ * \return TRUE
+ */
+
+EXPORT BOOL_T
+GetScaleGauge( SCALEINX_T scaleInx, SCALEDESCINX_T *scaleDescInx,
+ GAUGEINX_T *gaugeInx)
+{
+
+ if ( scaleInx > scaleInfo_cnt ) {
+ *scaleDescInx = SCALE_UNKNOWN;
+ *gaugeInx = SCALE_UNKNOWN;
+ return FALSE;
+ }
+
+ for( SCALEDESCINX_T sdx = 0; sdx < scaleDesc_da.cnt; sdx++ ) {
+ scaleDesc_p scaleDescP = &DYNARR_N(scaleDesc_t, scaleDesc_da, sdx );
+ dynArr_t* gaugesDAP = &scaleDescP->gauges_da;
+ for( GAUGEINX_T gx = 0; gx < gaugesDAP->cnt; gx++ ) {
+ gaugeInfo_p gp = &(DYNARR_N( gaugeInfo_t, *gaugesDAP, gx ));
+ if ( gp->scaleInx == scaleInx ) {
+ *scaleDescInx = sdx;
+ *gaugeInx = gx;
+ return TRUE;
+ }
+ }
+ }
+ *scaleDescInx = SCALE_UNKNOWN;
+ *gaugeInx = SCALE_UNKNOWN;
+ return FALSE;
+}
+
+/**
+ * Setup XTrkCad for the newly selected scale/gauge combination.
+ *
+ */
+
+static void
+SetScale( void )
+{
+ SCALEINX_T newScaleInx = GetLayoutCurScale();
+ curScale = GetScaleInfo( newScaleInx );
+ trackGauge = curScale->gauge;
+ curScaleRatio = curScale->ratio;
+ curScaleName = curScale->scale;
+
+ SetLayoutCurScaleDesc( 0 );
+
+ SetScaleDescGauge(newScaleInx);
+
+
+ if (!inPlayback) {
+ wPrefSetString( "misc", "scale", curScaleName );
+ }
+
+ // now load the minimum radius and set default max grade for the newly selected scale
+ LoadLayoutMinRadiusPref(curScaleName, curScale->R[0]);
+ LoadLayoutMaxGradePref(curScaleName, 5.0);
+}
+
+/**
+ * Check the new scale value and update the program if a valid scale was passed
+ *
+ * \param newScale IN the name of the new scale
+ * \returns TRUE if valid, FALSE otherwise
+ */
+
+static struct {
+ SCALEINX_T altScaleInx;
+ wIndex_t scaleInfo_cnt;
+} setScaleState;
+
+EXPORT BOOL_T DoSetScale(
+ const char * newScale )
+{
+ SCALEINX_T scaleInx;
+
+ if ( inPlayback ) {
+ // Save old state in case we are in playback
+ setScaleState.altScaleInx = altScaleInx;
+ setScaleState.scaleInfo_cnt = scaleInfo_cnt;
+ // Reset invalid scale check
+ altScaleInx = -1;
+ DYNARR_SET( scaleInfo_t, scaleInfo_da, scaleInfo_cnt );
+ } else if ( inPlaybackQuit ) {
+ // Restore state after playback
+ altScaleInx = setScaleState.altScaleInx;
+ scaleInfo_cnt = setScaleState.scaleInfo_cnt;
+ } else {
+ // Reset invalid scale check
+ altScaleInx = -1;
+ DYNARR_SET( scaleInfo_t, scaleInfo_da, scaleInfo_cnt );
+ }
+
+ scaleInx = LookupScale( newScale );
+ if ( scaleInx == SCALE_ANY ) {
+ // Don't know how this could happen
+ scaleInx = GetLayoutCurScale();
+ }
+ if ( scaleInx >= scaleInfo_cnt ) {
+ // Trying to set to unknown scale
+ scaleInx = GetLayoutCurScale();
+ }
+ LOG( log_scale, 1, ( "DoSetScale(%s) = %d\n", newScale, scaleInx ) );
+ CHECK( 0 <= scaleInx && scaleInx < scaleInfo_cnt );
+ SetLayoutCurScale( scaleInx );
+ DoChangeNotification( CHANGE_SCALE );
+ return TRUE;
+}
+
+/**
+ * Setup the data structures for scale and gauge. XTC reads 'scales' into an dynamic array,
+ * but doesn't differentiate between scale and gauge.
+ * This da is split into an dynamic array of scales. Each scale holds a dynamic array of gauges,
+ * with at least one gauge per scale (ie standard gauge)
+ *
+ * For usage in the dialogs, a textual description for each scale or gauge is provided
+ *
+ * \return TRUE
+ */
+
+static BOOL_T DoSetScaleDesc( SCALEINX_T scaleInx )
+{
+ SCALEINX_T work;
+ SCALEDESCINX_T descInx;
+ scaleDesc_p scaleDescP = NULL;
+ gaugeInfo_p g;
+ char *cp;
+// DIST_T ratio;
+ char buf[ 80 ];
+ size_t len;
+
+
+ for( descInx = 0; descInx < scaleDesc_da.cnt; descInx++ ) {
+ work = GetScaleInx( descInx, 0 );
+ if( scaleInfo(work).ratio == scaleInfo(scaleInx).ratio ) {
+ if( !strncmp( scaleInfo(work).scale, scaleInfo(scaleInx).scale,
+ strlen(scaleInfo(work).scale))) {
+ scaleDescP = &scaleDesc(descInx);
+ }
+ }
+ }
+
+
+ if( scaleDescP == NULL ) {
+ /* if no, add as new scale */
+
+ DYNARR_APPEND( scaleDesc_t, scaleDesc_da, 1 );
+
+ scaleDescP = &(scaleDesc( scaleDesc_da.cnt-1 ));
+
+ sprintf( buf, "%s (1/%.1f)", scaleInfo(scaleInx).scale,
+ scaleInfo(scaleInx).ratio );
+ scaleDescP->scaleDescStr = MyStrdup( buf );
+
+ sprintf( buf, "Standard (%.1fmm)", scaleInfo(scaleInx).gauge*25.4 );
+
+ } else {
+ /* if yes, is this a new gauge to the scale? */
+ cp = strchr( scaleDescP->scaleDescStr, ' ' );
+ if( cp ) {
+ len = cp - scaleDescP->scaleDescStr;
+ } else {
+ len = strlen(scaleDescP->scaleDescStr);
+ }
+ sprintf( buf, "%s (%.1fmm)", scaleInfo(scaleInx).scale+len,
+ scaleInfo(scaleInx).gauge*25.4 );
+ }
+ DYNARR_APPEND( gaugeInfo_t, scaleDescP->gauges_da, 10 );
+ g = &(DYNARR_N( gaugeInfo_t, scaleDescP->gauges_da,
+ (scaleDescP->gauges_da).cnt - 1 ));
+ g->scaleInx = scaleInx;
+ g->gaugeStr = MyStrdup( buf );
+
+ return( TRUE );
+}
+
+
+EXPORT BOOL_T DoAllSetScaleDesc( void )
+{
+ for( SCALEINX_T scaleInx = 0; scaleInx < scaleInfo_da.cnt; scaleInx++ ) {
+ DoSetScaleDesc( scaleInx );
+ }
+ return TRUE;
+}
+
+
+static BOOL_T AddScale(
+ char * line )
+{
+ wIndex_t i;
+ BOOL_T rc;
+ DIST_T R[3], X[3], L[3];
+ DIST_T ratio, gauge;
+ char scale[40];
+ scaleInfo_p s;
+
+ if ( (rc=sscanf( line, "SCALE %[^,]," SCANF_FLOAT_FORMAT "," SCANF_FLOAT_FORMAT
+ "",
+ scale, &ratio, &gauge )) != 3) {
+ SyntaxError( "SCALE", rc, 3 );
+ return FALSE;
+ }
+ for (i=0; i<3; i++) {
+ line = GetNextLine();
+ if ( (rc=sscanf( line, "" SCANF_FLOAT_FORMAT "," SCANF_FLOAT_FORMAT ","
+ SCANF_FLOAT_FORMAT "",
+ &R[i], &X[i], &L[i] )) != 3 ) {
+ SyntaxError( "SCALE easement", rc, 3 );
+ return FALSE;
+ }
+ }
+
+ // The increment size should be > # SCALEs in xtrkcad.xtq
+ DYNARR_APPEND( scaleInfo_t, scaleInfo_da, 100 );
+ s = &scaleInfo(scaleInfo_da.cnt-1);
+ s->scale = MyStrdup( scale );
+ s->ratio = ratio;
+ s->gauge = gauge;
+ // Remember last defined scale
+ scaleInfo_cnt = scaleInfo_da.cnt;
+ for (i=0; i<3; i++) {
+ s->R[i] = R[i]/ratio;
+ s->X[i] = X[i]/ratio;
+ s->L[i] = L[i]/ratio;
+ }
+ s->tieDataValid = FALSE;
+ if ( strcmp( scale, "DEMO" ) == 0 ) {
+ demoScaleInx = scaleInfo_da.cnt-1;
+ }
+ return TRUE;
+}
+
+static BOOL_T AddScaleFit(
+ char * line)
+{
+ char scales[STR_SIZE], matches[STR_SIZE], type[20], result[20];
+ BOOL_T rc;
+ scaleComp_p s;
+
+ if ( (rc=sscanf( line, "SCALEFIT %s %s %s %s",
+ type, result, scales, matches )) != 4) {
+ SyntaxError( "SCALEFIT", rc, 4 );
+ return FALSE;
+ }
+ DYNARR_APPEND( scaleComp_t, scaleCompatible_da, 10 );
+ s = &scaleComp(scaleCompatible_da.cnt-1);
+ s->in_scales = MyStrdup(scales);
+ s->match_scales = MyStrdup(matches);
+ if (strcmp(type,"STRUCTURE") == 0) {
+ s->type = FIT_STRUCTURE;
+ } else if (strcmp(type,"TURNOUT")==0) {
+ s->type = FIT_TURNOUT;
+ } else if (strcmp(type,"CAR")==0) {
+ s->type = FIT_CAR;
+ } else {
+ InputError( "Invalid SCALEFIT type %s", TRUE, type );
+ return FALSE;
+ }
+ if (strcmp(result,"COMPATIBLE")==0) {
+ s->result = FIT_COMPATIBLE;
+ } else if (strcmp(result,"EXACT")==0) {
+ s->result = FIT_EXACT;
+ } else {
+ InputError( "Invalid SCALEFIT result %s", TRUE, result );
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+EXPORT SCALE_FIT_T FindScaleCompatible(SCALE_FIT_TYPE_T type, char * scale1,
+ char * scale2)
+{
+
+ char * cp, * cq;
+
+ if (!scale1 || !scale1[0]) { return FIT_NONE; }
+ if (!scale2 || !scale2[0]) { return FIT_NONE; }
+
+ for (int i=0; i<scaleCompatible_da.cnt; i++) {
+ scaleComp_p s;
+ s = &scaleComp(i);
+ if (s->type != type) { continue; }
+ BOOL_T found = FALSE;
+ cp = s->in_scales;
+ //Match input scale
+ while (cp) {
+ //Next instance of needle in haystack
+ cp = strstr(cp,scale2);
+ if (!cp) { break; }
+ //Check that this is start of csv string
+ if (cp == s->in_scales || cp[-1] == ',') {
+ //Is this end of haystack?
+ if (strlen(cp) == strlen(scale2)) {
+ found = TRUE;
+ break;
+ }
+ //Is it the same until the next ','
+ cq=strstr(cp,",");
+ if (cq && (cq-cp == strlen(scale2))) {
+ found = TRUE;
+ break;
+ } else { cp=cq; }
+ } else { cp=strstr(cp,","); }
+ }
+ if (!found) { continue; }
+ found = FALSE;
+ cp = s->match_scales;
+ //Match output scale
+ while (cp) {
+ //Next instance of needle in haystack
+ cp = strstr(cp,scale1);
+ if (!cp) { break; }
+ //Check that this is start of csv string
+ if (cp == s->match_scales || cp[-1] == ',') {
+ //Is this end of haystack?
+ if (strlen(cp) == strlen(scale1)) {
+ found = TRUE;
+ break;
+ }
+ //Is it the same until the next ','
+ cq=strstr(cp,",");
+ if (cq && (cq-cp == strlen(scale1))) {
+ found = TRUE;
+ break;
+ } else { cp=cq; }
+ } else { cp=strstr(cp,","); }
+ }
+ if (!found) { continue; }
+ return s->result;
+ }
+ return FIT_NONE;
+}
+
+EXPORT void ScaleLengthIncrement(
+ SCALEINX_T scale,
+ DIST_T length )
+{
+ char * cp;
+ size_t len;
+ if (scaleInfo(scale).length == 0.0) {
+ if (units == UNITS_METRIC) {
+ cp = "999.99m SCALE Flex Track";
+ } else {
+ cp = "999' 11\" SCALE Flex Track";
+ }
+ len = strlen( cp )+1;
+ if (len > enumerateMaxDescLen) {
+ enumerateMaxDescLen = (int)len;
+ }
+ }
+ scaleInfo(scale).length += length;
+}
+
+EXPORT void ScaleLengthEnd( void )
+{
+ wIndex_t si;
+ size_t count;
+ DIST_T length;
+ char tmp[STR_SIZE];
+ FLOAT_T flexLen;
+ long flexUnit;
+ FLOAT_T flexCost;
+ for (si=0; si<scaleInfo_da.cnt; si++) {
+ sprintf( tmp, "price list %s", scaleInfo(si).scale );
+ wPrefGetFloat( tmp, "flex length", &flexLen, 0.0 );
+ wPrefGetInteger( tmp, "flex unit", &flexUnit, 0 );
+ wPrefGetFloat( tmp, "flex cost", &flexCost, 0.0 );
+ tmp[0] = '\0';
+ if ((length=scaleInfo(si).length) != 0) {
+ sprintf( tmp, "%s %s Flex Track", FormatDistance(length), scaleInfo(si).scale );
+ for (count = strlen(tmp); count<enumerateMaxDescLen; count++) {
+ tmp[count] = ' ';
+ }
+ tmp[enumerateMaxDescLen] = '\0';
+ count = 0;
+ if (flexLen > 0.0) {
+ count = (int)ceil( length / (flexLen/(flexUnit?2.54:1.00)));
+ }
+ EnumerateList( (long)count, flexCost, tmp, NULL );
+ }
+ scaleInfo(si).length = 0;
+ }
+}
+
+
+
+EXPORT void LoadScaleList( wList_p scaleList )
+{
+ wIndex_t inx;
+ for (inx=0; inx<scaleDesc_da.cnt-(extraButtons?0:1); inx++) {
+ wListAddValue( scaleList, scaleDesc(inx).scaleDescStr, NULL, I2VP(inx) );
+ }
+}
+
+EXPORT void LoadGaugeList( wList_p gaugeList, SCALEDESCINX_T scale )
+{
+ wListClear( gaugeList ); /* remove old list in case */
+ for ( wIndex_t inx=0; inx<scaleDesc(scale).gauges_da.cnt; inx++ ) {
+ gaugeInfo_p g = &DYNARR_N( gaugeInfo_t, scaleDesc(scale).gauges_da, inx );
+ wListAddValue( gaugeList, g->gaugeStr, NULL, I2VP(g->scaleInx) );
+ }
+}
+
+static void ScaleChange( long changes )
+{
+ if (changes & CHANGE_SCALE) {
+ SetScale();
+ }
+}
+
+/*****************************************************************************
+ *
+ * Change Scale Dlg
+ *
+ */
+
+static char rescaleFromScaleStr[20];
+static char rescaleFromGaugeStr[20];
+
+static char * rescaleToggleLabels[] = { N_("Scale"), N_("Ratio"), NULL };
+static long rescaleMode;
+static wIndex_t rescaleFromScaleInx;
+static wIndex_t rescaleFromGaugeInx;
+static SCALEDESCINX_T rescaleToScaleInx;
+static GAUGEINX_T rescaleToGaugeInx;
+static wIndex_t rescaleToInx;
+static long rescaleNoChangeDim = FALSE;
+static FLOAT_T rescalePercent;
+static char * rescaleChangeDimLabels[] = { N_("Do not resize track"), NULL };
+static paramFloatRange_t r0o001_10000 = { 0.001, 10000.0 };
+static paramData_t rescalePLs[] = {
+#define I_RESCALE_MODE (0)
+ { PD_RADIO, &rescaleMode, "toggle", PDO_NOPREF, &rescaleToggleLabels, N_("Rescale by:"), BC_HORZ|BC_NOBORDER },
+#define I_RESCALE_FROM_SCALE (1)
+ { PD_STRING, rescaleFromScaleStr, "fromS", PDO_NOPREF|PDO_STRINGLIMITLENGTH, I2VP(100), N_("From:"),0, 0, sizeof(rescaleFromScaleStr)},
+#define I_RESCALE_FROM_GAUGE (2)
+ { PD_STRING, rescaleFromGaugeStr, "fromG", PDO_NOPREF|PDO_DLGHORZ | PDO_STRINGLIMITLENGTH, I2VP(100), " / ", 0, 0, sizeof(rescaleFromGaugeStr)},
+#define I_RESCALE_TO_SCALE (3)
+ { PD_DROPLIST, &rescaleToScaleInx, "toS", PDO_NOPREF|PDO_LISTINDEX, I2VP(100), N_("To: ") },
+#define I_RESCALE_TO_GAUGE (4)
+ { PD_DROPLIST, &rescaleToGaugeInx, "toG", PDO_NOPREF|PDO_LISTINDEX|PDO_DLGHORZ, NULL, " / " },
+#define I_RESCALE_CHANGE (5)
+ { PD_TOGGLE, &rescaleNoChangeDim, "change-dim", 0, &rescaleChangeDimLabels, "", BC_HORZ|BC_NOBORDER },
+#define I_RESCALE_PERCENT (6)
+ { PD_FLOAT, &rescalePercent, "ratio", 0, &r0o001_10000, N_("Ratio") },
+ { PD_MESSAGE, "%", NULL, PDO_DLGHORZ }
+};
+static paramGroup_t rescalePG = { "rescale", 0, rescalePLs, COUNT( rescalePLs ) };
+
+
+static coOrd rescaleShift;
+static BOOL_T RescaleDoIt( track_p trk, BOOL_T unused )
+{
+ EPINX_T ep, ep1;
+ track_p trk1;
+ UndrawNewTrack( trk );
+ UndoModify(trk);
+ if ( rescalePercent != 100.0 ) {
+ for (ep=0; ep<GetTrkEndPtCnt(trk); ep++) {
+ if ((trk1 = GetTrkEndTrk(trk,ep)) != NULL &&
+ !GetTrkSelected(trk1)) {
+ ep1 = GetEndPtConnectedToMe( trk1, trk );
+ DisconnectTracks( trk, ep, trk1, ep1 );
+ }
+ }
+ /* should the track dimensions ie. length or radius be changed as well? */
+ if( rescaleNoChangeDim == 0 ) {
+ RescaleTrack( trk, rescalePercent/100.0, rescaleShift );
+ }
+ }
+
+ if ( rescaleMode==0 ) {
+ SetTrkScale( trk, rescaleToInx );
+ }
+ DrawNewTrack( trk );
+ return TRUE;
+}
+
+
+static void RescaleDlgOk(
+ void * unused )
+{
+ coOrd center, size;
+ DIST_T d;
+ FLOAT_T ratio = rescalePercent/100.0;
+ coOrd getboundsLo, getboundsHi;
+
+ UndoStart( _("Rescale Tracks"), "Rescale" );
+ GetSelectedBounds( &getboundsLo, &getboundsHi );
+ center.x = (getboundsLo.x+getboundsHi.x)/2.0;
+ center.y = (getboundsLo.y+getboundsHi.y)/2.0;
+ size.x = (getboundsHi.x-getboundsLo.x)/2.0*ratio;
+ size.y = (getboundsHi.y-getboundsLo.y)/2.0*ratio;
+ getboundsLo.x = center.x - size.x;
+ getboundsLo.y = center.y - size.y;
+ getboundsHi.x = center.x + size.x;
+ getboundsHi.y = center.y + size.y;
+ if ( getboundsLo.x < 0 ) {
+ getboundsHi.x -= getboundsLo.x;
+ getboundsLo.x = 0;
+ } else if ( getboundsHi.x > mapD.size.x ) {
+ d = getboundsHi.x - mapD.size.x;
+ if ( getboundsLo.x < d ) {
+ d = getboundsLo.x;
+ }
+ getboundsHi.x -= d;
+ getboundsLo.x -= d;
+ }
+ if ( getboundsLo.y < 0 ) {
+ getboundsHi.y -= getboundsLo.y;
+ getboundsLo.y = 0;
+ } else if ( getboundsHi.y > mapD.size.y ) {
+ d = getboundsHi.y - mapD.size.y;
+ if ( getboundsLo.y < d ) {
+ d = getboundsLo.y;
+ }
+ getboundsHi.y -= d;
+ getboundsLo.y -= d;
+ }
+ if ( rescaleNoChangeDim == 0 &&
+ (getboundsHi.x > mapD.size.x ||
+ getboundsHi.y > mapD.size.y )) {
+ NoticeMessage( MSG_RESCALE_TOO_BIG, _("Ok"), NULL,
+ FormatDistance(getboundsHi.x), FormatDistance(getboundsHi.y) );
+ }
+ rescaleShift.x = (getboundsLo.x+getboundsHi.x)/2.0 - center.x*ratio;
+ rescaleShift.y = (getboundsLo.y+getboundsHi.y)/2.0 - center.y*ratio;
+
+ rescaleToInx = GetScaleInx( rescaleToScaleInx, rescaleToGaugeInx );
+ DoSelectedTracks( RescaleDoIt );
+
+ // rescale the background if it exists and the layout is resized
+ if (HasBackGround() && ratio != 1.0) {
+ coOrd pos = GetLayoutBackGroundPos();
+ double size = GetLayoutBackGroundSize();
+ pos.x = ratio * pos.x + rescaleShift.x;
+ pos.y = ratio * pos.y + rescaleShift.y;
+ SetLayoutBackGroundPos(pos);
+
+ size *= ratio;
+ SetLayoutBackGroundSize(size);
+ }
+ DoRedraw();
+ wHide( rescalePG.win );
+}
+
+
+static void RescaleDlgUpdate(
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
+{
+ switch (inx) {
+ case I_RESCALE_MODE:
+ wControlShow( pg->paramPtr[I_RESCALE_FROM_SCALE].control, rescaleMode==0 );
+ wControlActive( pg->paramPtr[I_RESCALE_FROM_SCALE].control, FALSE );
+ wControlShow( pg->paramPtr[I_RESCALE_TO_SCALE].control, rescaleMode==0 );
+ wControlShow( pg->paramPtr[I_RESCALE_FROM_GAUGE].control, rescaleMode==0 );
+ wControlActive( pg->paramPtr[I_RESCALE_FROM_GAUGE].control, FALSE );
+ wControlShow( pg->paramPtr[I_RESCALE_TO_GAUGE].control, rescaleMode==0 );
+ wControlShow( pg->paramPtr[I_RESCALE_CHANGE].control, rescaleMode==0 );
+ wControlActive( pg->paramPtr[I_RESCALE_PERCENT].control, rescaleMode==1 );
+ if ( rescaleMode!=0 ) {
+ break;
+ }
+ case I_RESCALE_TO_SCALE:
+ LoadGaugeList( (wList_p)rescalePLs[I_RESCALE_TO_GAUGE].control,
+ *((int *)valueP) );
+ rescaleToGaugeInx = 0;
+ ParamLoadControl( pg, I_RESCALE_TO_GAUGE );
+ ParamLoadControl( pg, I_RESCALE_TO_SCALE );
+ if ( rescaleFromScaleInx >= 0 ) {
+ rescalePercent = GetScaleRatio(GetScaleInx(rescaleFromScaleInx,0))/
+ GetScaleRatio(GetScaleInx(rescaleToScaleInx,0))*100.0;
+ } else {
+ rescalePercent = 100.0;
+ }
+ wControlActive( pg->paramPtr[I_RESCALE_CHANGE].control,
+ (rescaleFromScaleInx != rescaleToScaleInx) );
+ ParamLoadControl( pg, I_RESCALE_PERCENT );
+ break;
+ case I_RESCALE_TO_GAUGE:
+ ParamLoadControl( pg, I_RESCALE_TO_GAUGE );
+ break;
+ case I_RESCALE_FROM_SCALE:
+ ParamLoadControl( pg, I_RESCALE_FROM_SCALE );
+ break;
+ case I_RESCALE_FROM_GAUGE:
+ ParamLoadControl( pg, I_RESCALE_FROM_GAUGE );
+ break;
+ case I_RESCALE_CHANGE:
+ ParamLoadControl( pg, I_RESCALE_CHANGE );
+ break;
+ case -1:
+ break;
+ }
+ wBool_t bOkActive = TRUE;
+ if ( rescaleMode == 0 ) {
+ // Scale
+ bOkActive = rescaleFromScaleInx != rescaleToScaleInx ||
+ rescaleFromGaugeInx != rescaleToGaugeInx;
+ } else {
+ // Ratio
+ bOkActive = rescalePercent != 100.0;
+ }
+ ParamDialogOkActive( pg, bOkActive );
+}
+
+/**
+ * Get the scale gauge information for the selected track pieces.
+ * FIXME: special cases like tracks pieces with different gauges or scale need to be handled
+ *
+ * \param IN trk track element
+ * \param IN unused
+ * \return TRUE;
+ */
+
+static BOOL_T SelectedScaleGauge( track_p trk, BOOL_T unused )
+{
+ char *scaleName;
+ SCALEINX_T scale;
+ SCALEDESCINX_T scaleInx;
+ GAUGEINX_T gaugeInx;
+
+ scale = GetTrkScale( trk );
+ scaleName = GetScaleName( scale );
+ if( strcmp( scaleName, "*" )) {
+ GetScaleGauge( scale, &scaleInx, &gaugeInx );
+ // Determine scale
+ if ( SCALE_ANY == rescaleFromScaleInx ) {
+ // First time
+ rescaleFromScaleInx = scaleInx;
+ rescaleFromGaugeInx = gaugeInx;
+ } else if ( SCALE_MULTI == rescaleFromScaleInx ) {
+ // we 've seen Mixed scales
+ } else if ( scaleInx != rescaleFromScaleInx ) {
+ // mixed scales
+ rescaleFromScaleInx = SCALE_MULTI;
+ rescaleFromGaugeInx = SCALE_MULTI;
+ } else if ( gaugeInx != rescaleFromGaugeInx ) {
+ // same scale but different gauge
+ rescaleFromGaugeInx = SCALE_MULTI;
+ }
+ CHECK( SCALE_ANY != rescaleFromScaleInx );
+ }
+
+ return TRUE;
+}
+
+/**
+ * Bring up the rescale dialog. The dialog for rescaling the selected pieces
+ * of track is created if necessary and shown. Handling of user input is done via
+ * RescaleDlgUpdate()
+ */
+
+EXPORT void DoRescale( void * unused )
+{
+ if ( rescalePG.win == NULL ) {
+ ParamCreateDialog( &rescalePG, MakeWindowTitle(_("Rescale")), _("Ok"),
+ RescaleDlgOk, wHide, TRUE, NULL, F_BLOCK, RescaleDlgUpdate );
+ LoadScaleList( (wList_p)rescalePLs[I_RESCALE_TO_SCALE].control );
+ LoadGaugeList( (wList_p)rescalePLs[I_RESCALE_TO_GAUGE].control,
+ GetLayoutCurScaleDesc() ); /* set correct gauge list here */
+ rescaleFromScaleInx = GetLayoutCurScale();
+ rescaleToScaleInx = rescaleFromScaleInx;
+ rescalePercent = 100.0;
+ }
+
+ // Get From scale and gauge
+ rescaleFromScaleInx = SCALE_ANY;
+ rescaleFromGaugeInx = SCALE_ANY;
+ DoSelectedTracks( SelectedScaleGauge );
+ if ( SCALE_ANY == rescaleFromScaleInx ) {
+ strcpy( rescaleFromScaleStr, "*" );
+ strcpy( rescaleFromGaugeStr, "" );
+ } else if ( SCALE_MULTI == rescaleFromScaleInx ) {
+ strcpy( rescaleFromScaleStr, "Multi-Scale" );
+ strcpy( rescaleFromGaugeStr, "" );
+ strcpy( rescaleFromGaugeStr, "" );
+ } else if ( SCALE_UNKNOWN == rescaleFromScaleInx ) {
+ strcpy( rescaleFromScaleStr, "Unknown" );
+ strcpy( rescaleFromGaugeStr, "" );
+ } else {
+ scaleDesc_t* scaleDescP = &scaleDesc(rescaleFromScaleInx);
+ strcpy( rescaleFromScaleStr, scaleDescP->scaleDescStr );
+ CHECK( SCALE_ANY != rescaleFromGaugeInx );
+ if ( SCALE_MULTI == rescaleFromGaugeInx ) {
+ strcpy( rescaleFromGaugeStr, "Multi-Gauge" );
+ } else {
+ gaugeInfo_p gaugeInfoP = &(DYNARR_N(gaugeInfo_t, scaleDescP->gauges_da,
+ rescaleFromGaugeInx));
+ strcpy( rescaleFromGaugeStr, gaugeInfoP->gaugeStr );
+ }
+ }
+
+ // get To scale and gauge (current)
+ GetScaleGauge( GetLayoutCurScale(), &rescaleToScaleInx, &rescaleToGaugeInx );
+
+ RescaleDlgUpdate( &rescalePG, I_RESCALE_MODE, &rescaleMode );
+ RescaleDlgUpdate( &rescalePG, I_RESCALE_CHANGE, &rescaleMode );
+
+ RescaleDlgUpdate( &rescalePG, I_RESCALE_FROM_SCALE, rescaleFromScaleStr );
+ RescaleDlgUpdate( &rescalePG, I_RESCALE_FROM_GAUGE, rescaleFromGaugeStr );
+
+ // TODO: rescale demo shows blank because DEMO scale inx is beyond the drop box entries
+ RescaleDlgUpdate( &rescalePG, I_RESCALE_TO_SCALE, &rescaleToScaleInx );
+ RescaleDlgUpdate( &rescalePG, I_RESCALE_TO_GAUGE, &rescaleToGaugeInx );
+
+ InfoMessage( _("%ld Objects to be rescaled"), selectedTrackCount );
+ wShow( rescalePG.win );
+ InfoMessage( "" );
+}
+
+/*****************************************************************************
+ *
+ *
+ *
+ */
+
+EXPORT void ScaleInit( void )
+{
+ AddParam( "SCALE ", AddScale );
+ AddParam( "SCALEFIT", AddScaleFit);
+ RegisterChangeNotification( ScaleChange );
+ wPrefGetInteger( "misc", "include same gauge turnouts",
+ &includeSameGaugeTurnouts, 1 );
+ ParamRegister( &rescalePG );
+ log_scale = LogFindIndex( "scale" );
+}
diff --git a/app/bin/scale.h b/app/bin/scale.h
new file mode 100644
index 0000000..b0834bb
--- /dev/null
+++ b/app/bin/scale.h
@@ -0,0 +1,63 @@
+/** \file scale.h
+ *
+ */
+
+/* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef SCALE_H
+#define SCALE_H
+
+#include "common.h"
+
+extern DIST_T curScaleRatio;
+extern char * curScaleName;
+DIST_T GetScaleTrackGauge( SCALEINX_T );
+DIST_T GetScaleRatio( SCALEINX_T );
+char * GetScaleName( SCALEINX_T );
+SCALEINX_T GetScaleInx( SCALEDESCINX_T scaleInx, GAUGEINX_T gaugeInx );
+
+void GetScaleEasementValues( DIST_T *, DIST_T * );
+DIST_T GetScaleMinRadius( SCALEINX_T );
+void ValidateTieData( tieData_p );
+tieData_t GetScaleTieData( SCALEINX_T );
+SCALEINX_T LookupScale( const char * );
+BOOL_T GetScaleGauge( SCALEINX_T scaleInx, SCALEDESCINX_T *scaleDescInx,
+ GAUGEINX_T *gaugeInx);
+void SetScaleGauge(SCALEDESCINX_T desc, GAUGEINX_T gauge);
+BOOL_T DoSetScale( const char * );
+
+void ScaleLengthIncrement( SCALEINX_T, DIST_T );
+void ScaleLengthEnd( void );
+void LoadScaleList( wList_p );
+void LoadGaugeList( wList_p, SCALEDESCINX_T );
+
+typedef enum {FIT_STRUCTURE, FIT_TURNOUT, FIT_CAR} SCALE_FIT_TYPE_T;
+typedef enum {FIT_NONE, FIT_COMPATIBLE, FIT_EXACT} SCALE_FIT_T;
+SCALE_FIT_T CompatibleScale( SCALE_FIT_TYPE_T, SCALEINX_T, SCALEINX_T );
+
+SCALE_FIT_T FindScaleCompatible(SCALE_FIT_TYPE_T type, char * scale1,
+ char * scale2);
+
+BOOL_T DoAllSetScaleDesc( void );
+
+void DoRescale( void *unused );
+
+EXPORT void ScaleInit( void );
+
+#endif
diff --git a/app/bin/shortentext.c b/app/bin/shortentext.c
index b1b2202..9994915 100644
--- a/app/bin/shortentext.c
+++ b/app/bin/shortentext.c
@@ -2,24 +2,24 @@
* Some assorted string handling functions
*/
- /* XTrackCAD - Model Railroad CAD
- * Copyright (C) 2019 Martin Fischer
- *
- * 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.
- */
-
+/* XTrackCAD - Model Railroad CAD
+ * Copyright (C) 2019 Martin Fischer
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
#include <string.h>
#include "shortentext.h"
@@ -28,7 +28,7 @@
/**
* Replace all whitespace characters with blanks. Successive occurences are reduced to a single blank.
- *
+ *
* \param source IN string to convert
* \param dest IN buffer for converted string, minimum size is the size of the source string
*/
@@ -64,15 +64,16 @@ EllipsizeString(char *source, char *dest, size_t length)
// trivial case: nothing to do if source is shorter and no inplace
- if( strlen(source) <= length )
- {
- if( dest )
+ if( strlen(source) <= length ) {
+ if( dest ) {
strcpy(dest, source);
+ }
return;
}
- if ( dest )
+ if ( dest ) {
strncpy(resultString, source, length);
+ }
resultString[ length ] = '\0';
@@ -86,9 +87,10 @@ EllipsizeString(char *source, char *dest, size_t length)
}
}
- // no blank in string, replace the last n chars
+ // no blank in string, replace the last n chars
if (!position) {
- strcpy(resultString + (strlen(resultString) - sizeof(ELLIPSIZE) + 1), ELLIPSIZE);
+ strcpy(resultString + (strlen(resultString) - sizeof(ELLIPSIZE) + 1),
+ ELLIPSIZE);
}
return;
}
diff --git a/app/bin/shortentext.h b/app/bin/shortentext.h
index 1b71a08..c43deff 100644
--- a/app/bin/shortentext.h
+++ b/app/bin/shortentext.h
@@ -2,27 +2,27 @@
* String handling utilities
*/
- /* XTrackCAD - Model Railroad CAD
- * Copyright (C) 2019 Martin Fischer
- *
- * 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.
- */
+/* XTrackCAD - Model Railroad CAD
+ * Copyright (C) 2019 Martin Fischer
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
#ifndef HAVE_STRINGUTILS_H
#define HAVE_STRINGUTILS_H
- void RemoveFormatChars(char *source, char *dest);
- void EllipsizeString(char *source, char *dest, size_t length);
+void RemoveFormatChars(char *source, char *dest);
+void EllipsizeString(char *source, char *dest, size_t length);
#endif // !HAVE_STRINGUTIL_H
diff --git a/app/bin/shrtpath.c b/app/bin/shrtpath.c
index da60d0f..f969a12 100644
--- a/app/bin/shrtpath.c
+++ b/app/bin/shrtpath.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 "shrtpath.h"
@@ -34,22 +34,22 @@ static int log_shortPathInitted;
typedef enum { Unknown, Working, Final } pathState_e;
typedef struct {
- pathState_e state;
- DIST_T dist; /* Distance from root to entry */
- track_p contTrk; /* continuation */
- EPINX_T contEP;
- int inxBack; /* Previous node on shortest path */
- int inxTracks; /* List of tracks along this path */
- int numTracks;
- } pathNode_t, *pathNode_p;
+ pathState_e state;
+ DIST_T dist; /* Distance from root to entry */
+ track_p contTrk; /* continuation */
+ EPINX_T contEP;
+ int inxBack; /* Previous node on shortest path */
+ int inxTracks; /* List of tracks along this path */
+ int numTracks;
+} pathNode_t, *pathNode_p;
static dynArr_t pathNode_da;
#define pathNode(N) DYNARR_N( pathNode_t, pathNode_da, N )
typedef struct {
- track_p trk;
- EPINX_T ep1, ep2;
- DIST_T dist;
- } trackep_t, *trackep_p;
+ track_p trk;
+ EPINX_T ep1, ep2;
+ DIST_T dist;
+} trackep_t, *trackep_p;
static dynArr_t trackep_da;
#define trackep(N) DYNARR_N( trackep_t, trackep_da, N )
@@ -57,12 +57,14 @@ static track_p shortPathTrk0, shortPathTrk1;
static EPINX_T shortPathEP0, shortPathEP1;
-static int DoShortPathFunc( shortestPathFunc_p func, char * title, SPTF_CMD cmd, track_p trk, EPINX_T ep1, EPINX_T ep2, DIST_T dist, void * data )
+static int DoShortPathFunc( shortestPathFunc_p func, char * title, SPTF_CMD cmd,
+ track_p trk, EPINX_T ep1, EPINX_T ep2, DIST_T dist, void * data )
{
int rc;
-LOG( log_shortPath, 4, ( " %s: T%d:%d.%d D:%0.3f ", title, trk?GetTrkIndex(trk):-1, ep1, ep2, dist ) )
+ LOG( log_shortPath, 4, ( " %s: T%d:%d.%d D:%0.3f ", title,
+ trk?GetTrkIndex(trk):-1, ep1, ep2, dist ) )
rc = func( cmd, trk, ep1, ep2, dist, data );
-LOG( log_shortPath, 4, ( "-> %d\n", rc ) )
+ LOG( log_shortPath, 4, ( "-> %d\n", rc ) )
return rc;
}
@@ -76,20 +78,21 @@ static void DumpPaths( int pinx )
for (pinx=0; pinx<pathNode_da.cnt; pinx++) {
pPath = &pathNode(pinx);
lprintf( " %3d: S%c T%d:%d D%0.3f T%d:%d",
- pinx,
- pPath->state==Unknown?'U':pPath->state==Working?'W':pPath->state==Final?'F':'?',
- (pPath->contTrk?GetTrkIndex(pPath->contTrk):-1),
- pPath->contEP,
- pPath->dist,
- pPath->inxTracks,
- pPath->numTracks );
+ pinx,
+ pPath->state==Unknown?'U':pPath->state==Working?'W':pPath->state==Final?'F':'?',
+ (pPath->contTrk?GetTrkIndex(pPath->contTrk):-1),
+ pPath->contEP,
+ pPath->dist,
+ pPath->inxTracks,
+ pPath->numTracks );
if (pPath->inxBack>=0) {
- lprintf(" B%d", pPath->inxBack );
+ lprintf(" B%d", pPath->inxBack );
}
lprintf("\n ");
for (tinx=0; tinx<pPath->numTracks; tinx++) {
pTrackep = &trackep(pPath->inxTracks+tinx);
- lprintf( " T%d:%d-%d=%0.1f", GetTrkIndex(pTrackep->trk), pTrackep->ep1, pTrackep->ep2, pTrackep->dist );
+ lprintf( " T%d:%d-%d=%0.1f", GetTrkIndex(pTrackep->trk), pTrackep->ep1,
+ pTrackep->ep2, pTrackep->dist );
}
lprintf("\n");
}
@@ -97,9 +100,9 @@ static void DumpPaths( int pinx )
static void AddTracksToPath(
- int inxCurr,
- shortestPathFunc_p func,
- void * data )
+ int inxCurr,
+ shortestPathFunc_p func,
+ void * data )
{
pathNode_p pPath;
int tinx;
@@ -107,9 +110,10 @@ static void AddTracksToPath(
while (inxCurr>=0) {
pPath = &pathNode(inxCurr);
- for (tinx=pPath->numTracks-1;tinx>=0;tinx--) {
+ for (tinx=pPath->numTracks-1; tinx>=0; tinx--) {
pTrackep = &trackep(pPath->inxTracks+tinx);
- DoShortPathFunc( func, "ADDTRK", SPTC_ADD_TRK, pTrackep->trk, pTrackep->ep1, pTrackep->ep2, pTrackep->dist, data );
+ DoShortPathFunc( func, "ADDTRK", SPTC_ADD_TRK, pTrackep->trk, pTrackep->ep1,
+ pTrackep->ep2, pTrackep->dist, data );
}
inxCurr = pPath->inxBack;
}
@@ -117,10 +121,10 @@ static void AddTracksToPath(
static void AddTrackToNode(
- track_p trk,
- EPINX_T ep1,
- EPINX_T ep2,
- DIST_T dist)
+ track_p trk,
+ EPINX_T ep1,
+ EPINX_T ep2,
+ DIST_T dist)
{
DYNARR_APPEND( trackep_t, trackep_da, 10 );
trackep(trackep_da.cnt-1).trk = trk;
@@ -131,13 +135,13 @@ static void AddTrackToNode(
static BOOL_T AddPath(
- int inxCurr,
- track_p trk0,
- EPINX_T ep1,
- EPINX_T ep2,
- DIST_T dist,
- shortestPathFunc_p func,
- void * data )
+ int inxCurr,
+ track_p trk0,
+ EPINX_T ep1,
+ EPINX_T ep2,
+ DIST_T dist,
+ shortestPathFunc_p func,
+ void * data )
{
EPINX_T epN;
track_p trk=trk0, trkN;
@@ -146,7 +150,8 @@ static BOOL_T AddPath(
int startTrack;
char * msg=NULL;
-LOG( log_shortPath, 2, ( " AddPath( T%d:%d.%d D=%0.3f B%d ) -> \n", GetTrkIndex(trk), ep1, ep2, dist, inxCurr ) )
+ LOG( log_shortPath, 2, ( " AddPath( T%d:%d.%d D=%0.3f B%d ) -> \n",
+ GetTrkIndex(trk), ep1, ep2, dist, inxCurr ) )
startTrack = trackep_da.cnt;
while (1) {
if ( ep2>=0 ) {
@@ -164,13 +169,15 @@ LOG( log_shortPath, 2, ( " AddPath( T%d:%d.%d D=%0.3f B%d ) -> \n", GetTrkIndex
msg = "dead end";
goto skipNode;
}
- if ( DoShortPathFunc( func, "IGNORE", SPTC_IGNNXTTRK, trk, ep2, ep1, dist, data ) ) {
+ if ( DoShortPathFunc( func, "IGNORE", SPTC_IGNNXTTRK, trk, ep2, ep1, dist,
+ data ) ) {
msg = "ignore end";
goto skipNode;
}
ep1 = GetEndPtConnectedToMe( trkN, trk );
trk = trkN;
- if ( (trk==shortPathTrk0 && ep1==shortPathEP0) || (trk==shortPathTrk1 && ep1==shortPathEP1) ) {
+ if ( (trk==shortPathTrk0 && ep1==shortPathEP0) || (trk==shortPathTrk1
+ && ep1==shortPathEP1) ) {
msg = "wrap around";
goto skipNode;
}
@@ -181,7 +188,8 @@ LOG( log_shortPath, 2, ( " AddPath( T%d:%d.%d D=%0.3f B%d ) -> \n", GetTrkIndex
goto skipNode;
}
if ( epCnt > 2 ) {
- if ( (epN=DoShortPathFunc( func, "MATCHANY", SPTC_MATCHANY, trk, ep1, -1, dist, data )) >= 0 ) {
+ if ( (epN=DoShortPathFunc( func, "MATCHANY", SPTC_MATCHANY, trk, ep1, -1, dist,
+ data )) >= 0 ) {
/* special match */
/*dist += GetTrkLength( trk, ep1, epN );*/
AddTrackToNode( trk, ep1, epN, dist );
@@ -195,12 +203,13 @@ LOG( log_shortPath, 2, ( " AddPath( T%d:%d.%d D=%0.3f B%d ) -> \n", GetTrkIndex
}
makeNode:
-if ( trk ) {
-LOG( log_shortPath, 2, ( " -> FORK: [%d] T%d:%d", pathNode_da.cnt, GetTrkIndex(trk), ep1 ) )
-} else {
-LOG( log_shortPath, 2, ( " -> MATCH%s: [%d]", msg, pathNode_da.cnt ) )
-}
-LOG( log_shortPath, 2, ( " t%d D=%0.3f\n", startTrack, dist ) )
+ if ( trk ) {
+ LOG( log_shortPath, 2, ( " -> FORK: [%d] T%d:%d", pathNode_da.cnt,
+ GetTrkIndex(trk), ep1 ) )
+ } else {
+ LOG( log_shortPath, 2, ( " -> MATCH%s: [%d]", msg, pathNode_da.cnt ) )
+ }
+ LOG( log_shortPath, 2, ( " t%d D=%0.3f\n", startTrack, dist ) )
DYNARR_APPEND( pathNode_t, pathNode_da, 10 );
pNode = &pathNode(pathNode_da.cnt-1);
@@ -208,27 +217,29 @@ LOG( log_shortPath, 2, ( " t%d D=%0.3f\n", startTrack, dist ) )
pNode->dist = dist;
pNode->contTrk = trk;
pNode->contEP = ep1;
- pNode->inxBack = inxCurr;
+ pNode->inxBack = inxCurr;
pNode->inxTracks = startTrack;
pNode->numTracks = trackep_da.cnt-startTrack;
- if ( trk )
+ if ( trk ) {
SetTrkBits( trk, TB_SHRTPATH );
+ }
return TRUE;
skipNode:
-LOG( log_shortPath, 2, ( " -> FAIL: %s @ T%d:%d.%d\n", msg, GetTrkIndex(trk), ep1, ep2 ) )
- trackep_da.cnt = startTrack;
+ LOG( log_shortPath, 2, ( " -> FAIL: %s @ T%d:%d.%d\n", msg, GetTrkIndex(trk),
+ ep1, ep2 ) )
+ DYNARR_SET( trackep_t, trackep_da, startTrack );
return FALSE;
}
int FindShortestPath(
- track_p trkN,
- EPINX_T epN,
- BOOL_T bidirectional,
- shortestPathFunc_p func,
- void * data )
+ track_p trkN,
+ EPINX_T epN,
+ BOOL_T bidirectional,
+ shortestPathFunc_p func,
+ void * data )
{
int inxCurr = 0;
pathNode_p pCurr;
@@ -238,56 +249,66 @@ int FindShortestPath(
int rc = 0;
EPINX_T ep2, epCnt, ep3;
static dynArr_t ep_da;
- #define ep(N) DYNARR_N( pathNode_p, ep_da, N )
+#define ep(N) DYNARR_N( pathNode_p, ep_da, N )
DYNARR_RESET( pathNode_t, pathNode_da );
DYNARR_RESET( trackep_t, trackep_da );
if ( !log_shortPathInitted ) {
log_shortPath = LogFindIndex( "shortPath" );
- log_shortPathInitted = TRUE;
+ log_shortPathInitted = TRUE;
}
-LOG( log_shortPath, 1, ( "FindShortestPath( T%d:%d, %s, ... )\n", GetTrkIndex(trkN), epN, bidirectional?"bidir":"unidir" ) )
+ LOG( log_shortPath, 1, ( "FindShortestPath( T%d:%d, %s, ... )\n",
+ GetTrkIndex(trkN), epN, bidirectional?"bidir":"unidir" ) )
ClrAllTrkBits( TB_SHRTPATH );
/* Note: trkN:epN is not tested for MATCH */
shortPathTrk0 = trkN;
shortPathEP0 = epN;
shortPathTrk1 = GetTrkEndTrk( trkN, epN );
- if ( shortPathTrk1 != NULL )
+ if ( shortPathTrk1 != NULL ) {
shortPathEP1 = GetEndPtConnectedToMe( shortPathTrk1, shortPathTrk0 );
+ }
AddPath( -1, shortPathTrk0, shortPathEP0, -1, 0.0, func, data );
- if ( bidirectional && shortPathTrk1 != NULL )
+ if ( bidirectional && shortPathTrk1 != NULL ) {
AddPath( -1, shortPathTrk1, shortPathEP1, -1, 0.0, func, data );
+ }
while (1) {
/* select next final node */
minDist = 0.0;
inxCurr = -1;
for (pinx=0; pinx<pathNode_da.cnt; pinx++) {
- pNext = &pathNode(pinx);
- if (pNext->state == Working &&
- (inxCurr < 0 || pNext->dist < minDist) ) {
+ pNext = &pathNode(pinx);
+ if (pNext->state == Working &&
+ (inxCurr < 0 || pNext->dist < minDist) ) {
minDist = pathNode(pinx).dist;
inxCurr = pinx;
}
}
- if ( inxCurr < 0 )
+ if ( inxCurr < 0 ) {
break;
-if (log_shortPath>=4) DumpPaths(inxCurr);
+ }
+ if (log_shortPath>=4) { DumpPaths(inxCurr); }
pCurr = &pathNode(inxCurr);
pCurr->state = Final;
if ( pCurr->contTrk == NULL ) {
- if ( !DoShortPathFunc( func, "VALID", SPTC_VALID, trackep(pCurr->inxTracks+pCurr->numTracks-1).trk, trackep(pCurr->inxTracks+pCurr->numTracks-1).ep2, -1, 0.0, data ) )
+ if ( !DoShortPathFunc( func, "VALID", SPTC_VALID,
+ trackep(pCurr->inxTracks+pCurr->numTracks-1).trk,
+ trackep(pCurr->inxTracks+pCurr->numTracks-1).ep2, -1, 0.0, data ) ) {
continue;
+ }
AddTracksToPath( inxCurr, func, data );
rc++;
- if ( DoShortPathFunc( func, "TERMINATE", SPTC_TERMINATE, trackep(pCurr->inxTracks+pCurr->numTracks-1).trk, trackep(pCurr->inxTracks+pCurr->numTracks-1).ep2, -1, 0.0, data ) )
+ if ( DoShortPathFunc( func, "TERMINATE", SPTC_TERMINATE,
+ trackep(pCurr->inxTracks+pCurr->numTracks-1).trk,
+ trackep(pCurr->inxTracks+pCurr->numTracks-1).ep2, -1, 0.0, data ) ) {
break;
+ }
} else {
epCnt = GetTrkEndPtCnt(pCurr->contTrk);
DYNARR_SET( pathNode_p, ep_da, epCnt );
- memset( ep_da.ptr, 0, epCnt * sizeof pNext );
+ memset( &ep(0), 0, epCnt * sizeof pNext );
if ( (GetTrkBits(pCurr->contTrk) & TB_SHRTPATH) ) {
for ( pinx=0; pinx<pathNode_da.cnt; pinx++ ) {
pNext = &pathNode(pinx);
@@ -300,25 +321,27 @@ if (log_shortPath>=4) DumpPaths(inxCurr);
pCurr = &pathNode(inxCurr);
/* don't point back at myself */
- if ( pCurr->contEP == ep2 ) continue;
+ if ( pCurr->contEP == ep2 ) { continue; }
/* no route to ep */
- if ( DoShortPathFunc( func, "IGNORE", SPTC_IGNNXTTRK, pCurr->contTrk, pCurr->contEP, ep2, pCurr->dist, data ) ) continue;
+ if ( DoShortPathFunc( func, "IGNORE", SPTC_IGNNXTTRK, pCurr->contTrk,
+ pCurr->contEP, ep2, pCurr->dist, data ) ) { continue; }
/* somebody got here first */
- if ( ep(ep2) ) continue;
+ if ( ep(ep2) ) { continue; }
/* there is already a path out via ep2 */
for ( ep3=0; ep3<epCnt; ep3++ ) {
- if ( ep3==pCurr->contEP || ep3==ep2 ) continue;
- if ( ep(ep3) == NULL ) continue;
- if ( DoShortPathFunc( func, "IGNORE", SPTC_IGNNXTTRK, pCurr->contTrk, ep2, ep3, pCurr->dist, data ) ) continue;
- if ( ep(ep3)->state == Final ) break;
+ if ( ep3==pCurr->contEP || ep3==ep2 ) { continue; }
+ if ( ep(ep3) == NULL ) { continue; }
+ if ( DoShortPathFunc( func, "IGNORE", SPTC_IGNNXTTRK, pCurr->contTrk, ep2, ep3,
+ pCurr->dist, data ) ) { continue; }
+ if ( ep(ep3)->state == Final ) { break; }
}
- if ( ep3 < epCnt ) continue;
+ if ( ep3 < epCnt ) { continue; }
AddPath( inxCurr, pCurr->contTrk, pCurr->contEP, ep2, pCurr->dist, func, data );
}
}
}
-if (log_shortPath>=1) DumpPaths(inxCurr);
+ if (log_shortPath>=1) { DumpPaths(inxCurr); }
ClrAllTrkBits( TB_SHRTPATH );
return rc;
}
diff --git a/app/bin/shrtpath.h b/app/bin/shrtpath.h
index c7cb57f..b106df6 100644
--- a/app/bin/shrtpath.h
+++ b/app/bin/shrtpath.h
@@ -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
*/
#ifndef HAVE_SHRTPATH_H
#define HAVE_SHRTPATH_H
@@ -25,16 +25,17 @@
#include "common.h"
typedef enum {
- SPTC_MATCH, /* trk:ep is end of path? */
- SPTC_MATCHANY, /* any EP matches? */
- SPTC_IGNNXTTRK, /* don't traverse via trk:ep? */
- SPTC_ADD_TRK, /* trk:ep is next on current path */
- SPTC_TERMINATE, /* stop processing after current path? */
- SPTC_VALID /* trk:ep is still valid? */
- } SPTF_CMD;
+ SPTC_MATCH, /* trk:ep is end of path? */
+ SPTC_MATCHANY, /* any EP matches? */
+ SPTC_IGNNXTTRK, /* don't traverse via trk:ep? */
+ SPTC_ADD_TRK, /* trk:ep is next on current path */
+ SPTC_TERMINATE, /* stop processing after current path? */
+ SPTC_VALID /* trk:ep is still valid? */
+} SPTF_CMD;
-typedef int (*shortestPathFunc_p)( SPTF_CMD cmd, track_p, EPINX_T, EPINX_T, DIST_T, void * );
+typedef int (*shortestPathFunc_p)( SPTF_CMD cmd, track_p, EPINX_T, EPINX_T,
+ DIST_T, void * );
int FindShortestPath( track_p, EPINX_T, BOOL_T, shortestPathFunc_p, void * );
extern int log_shortPath;
-#endif //HAVE_SHRTPATH_H \ No newline at end of file
+#endif //HAVE_SHRTPATH_H
diff --git a/app/bin/smalldlg.c b/app/bin/smalldlg.c
index 3d45809..1dde15e 100644
--- a/app/bin/smalldlg.c
+++ b/app/bin/smalldlg.c
@@ -1,5 +1,5 @@
/** \file smalldlg.c
- * Several simple and smaller dialogs.
+ * Several simple and smaller dialogs.
*/
/* XTrkCad - Model Railroad CAD
@@ -18,7 +18,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 "common.h"
@@ -34,7 +34,6 @@
#include <FreeImage.h>
#endif
-extern char *sTipF;
EXPORT wWin_p aboutW;
static wWin_p tipW; /**< window handle for tip dialog */
@@ -50,16 +49,17 @@ static paramData_t tipPLs[] = {
#define I_TIPTEXT (1)
#define tipT ((wText_p)tipPLs[I_TIPTEXT].control)
{ PD_MESSAGE, N_("Did you know..."), NULL, 0, NULL, NULL, BM_LARGE },
- { PD_TEXT, NULL, "text", 0, &tipTextData, NULL, BO_READONLY|BT_TOP|BT_CHARUNITS },
- { PD_BUTTON, ShowTip, "prev", PDO_DLGRESETMARGIN, NULL, N_("Previous Tip"), 0L, I2VP(SHOWTIP_FORCESHOW | SHOWTIP_PREVTIP) },
+ { PD_TEXT, NULL, "text", PDO_DLGRESIZE, &tipTextData, NULL, BO_READONLY|BT_TOP|BT_CHARUNITS },
+ { PD_BUTTON, ShowTip, "prev", PDO_DLGRESETMARGIN, NULL, N_("Previous Tip"), 0L, I2VP(SHOWTIP_FORCESHOW | SHOWTIP_PREVTIP) },
{ PD_BUTTON, ShowTip, "next", PDO_DLGHORZ, NULL, N_("Next Tip"), 0L, I2VP(SHOWTIP_FORCESHOW | SHOWTIP_NEXTTIP) },
- { PD_TOGGLE, &showTipAtStart, "showatstart", PDO_DLGCMDBUTTON, tipLabels, NULL, BC_NOBORDER }};
+ { PD_TOGGLE, &showTipAtStart, "showatstart", PDO_DLGCMDBUTTON, tipLabels, NULL, BC_NOBORDER }
+};
static paramGroup_t tipPG = { "tip", 0, tipPLs, COUNT( tipPLs ) };
/**
* Create and initialize the tip of the day window. The dialog box is created and the list of tips is loaded
- * into memory.
+ * into memory.
*/
static void CreateTipW( void )
@@ -69,35 +69,38 @@ static void CreateTipW( void )
char *filename;
char * cp;
- tipW = ParamCreateDialog( &tipPG, MakeWindowTitle(_("Tip of the Day")), NULL, NULL, wHide, FALSE, NULL, F_RESIZE|F_CENTER|PD_F_ALT_CANCELLABEL, NULL );
+ tipW = ParamCreateDialog( &tipPG, MakeWindowTitle(_("Tip of the Day")), NULL,
+ NULL, wHide, FALSE, NULL, F_RESIZE|F_CENTER|PD_F_ALT_CANCELLABEL, NULL );
/* open the tip file */
MakeFullpath(&filename, libDir, sTipF, NULL);
tipF = fopen( filename, "r" );
-
+
/* if tip file could not be opened, the only tip is an error message for the situation */
if (tipF == NULL) {
DYNARR_APPEND( char *, tips_da, 1 );
tips(0) = N_("No tips are available");
-/* TODO: enable buttons only if tips are available
- wControlActive( prev, FALSE );
- wControlActive( next, FALSE ); */
+ /* TODO: enable buttons only if tips are available
+ wControlActive( prev, FALSE );
+ wControlActive( next, FALSE ); */
} else {
/* read all the tips from the file */
while (fgets( buff, sizeof buff, tipF )) {
/* lines starting with hash sign are ignored (comments) */
- if (buff[0] == '#')
+ if (buff[0] == '#') {
continue;
-
- /* remove CRs and LFs at end of line */
+ }
+
+ /* remove CRs and LFs at end of line */
cp = buff+strlen(buff)-1;
- if (*cp=='\n') cp--;
- if (*cp=='\r') cp--;
-
+ if (*cp=='\n') { cp--; }
+ if (*cp=='\r') { cp--; }
+
/* get next line if the line was empty */
- if (cp < buff)
+ if (cp < buff) {
continue;
+ }
cp[1] = 0;
@@ -105,23 +108,24 @@ static void CreateTipW( void )
while (*cp=='\\') {
/* put LF at end */
*cp++ = '\n';
-
- /* read a line */
+
+ /* read a line */
if (!fgets( cp, (int)((sizeof buff) - (cp-buff)), tipF )) {
return;
}
-
+
/* lines starting with hash sign are ignored (comments) */
- if (*cp=='#')
+ if (*cp=='#') {
continue;
+ }
- /* remove CRs and LFs at end of line */
+ /* remove CRs and LFs at end of line */
cp += strlen(cp)-1;
- if (*cp=='\n') cp--;
- if (*cp=='\r') cp--;
+ if (*cp=='\n') { cp--; }
+ if (*cp=='\r') { cp--; }
cp[1] = 0;
}
-
+
/* allocate memory for the tip and store pointer in dynamic array */
DYNARR_APPEND( char *, tips_da, 10 );
tips(tips_da.cnt-1) = strdup( buff );
@@ -132,7 +136,7 @@ static void CreateTipW( void )
/**
* Show tip of the day. As far as necessary, the dialog is created. The index of
- * the last tip shown is retrieved from the preferences and the next tip is
+ * the last tip shown is retrieved from the preferences and the next tip is
* selected. At the end, the index of the shown tip is saved into the preferences.
*
* \param IN flags see definitions in smalldlg.h for possible values
@@ -143,9 +147,8 @@ void ShowTip( void * flagsVP )
{
long flags = VP2L(flagsVP);
long tipNum;
-
- if (showTipAtStart || (flags & SHOWTIP_FORCESHOW))
- {
+
+ if (showTipAtStart || (flags & SHOWTIP_FORCESHOW)) {
if (tipW == NULL) {
CreateTipW();
}
@@ -153,24 +156,26 @@ void ShowTip( void * flagsVP )
wTextClear( tipT );
/* initial value is -1 which gets incremented 0 below */
wPrefGetInteger( "misc", "tip-number", &tipNum, -1 );
-
+
if( flags & SHOWTIP_PREVTIP ) {
- if(tipNum == 0 )
+ if(tipNum == 0 ) {
tipNum = tips_da.cnt - 1;
- else
- tipNum--;
+ } else {
+ tipNum--;
+ }
} else {
- if (tipNum >= tips_da.cnt - 1)
+ if (tipNum >= tips_da.cnt - 1) {
tipNum = 0;
- else
- tipNum++;
- }
+ } else {
+ tipNum++;
+ }
+ }
wTextAppend( tipT, _(tips(tipNum)) );
wPrefSetInteger( "misc", "tip-number", tipNum );
wShow( tipW );
- }
+ }
}
/*--------------------------------------------------------------------*/
@@ -191,43 +196,54 @@ static paramData_t aboutPLs[] = {
};
static paramGroup_t aboutPG = { "about", 0, aboutPLs, COUNT( aboutPLs ) };
-/**
+/**
* Create and show the About window.
*/
void CreateAboutW(void *ptr)
{
- char *copyright = sAboutProd;
+// char *copyright = sAboutProd;
if (!aboutW) {
aboutPLs[I_ABOUTDRAW].winData = wIconCreatePixMap(xtc_xpm);
ParamRegister(&aboutPG);
- aboutW = ParamCreateDialog(&aboutPG, MakeWindowTitle(_("About")), NULL, NULL, wHide, FALSE, NULL, F_TOP | F_CENTER| PD_F_ALT_CANCELLABEL, NULL);
+ aboutW = ParamCreateDialog(&aboutPG, MakeWindowTitle(_("About")), NULL, NULL,
+ wHide, FALSE, NULL, F_TOP | F_CENTER| PD_F_ALT_CANCELLABEL, NULL);
ParamLoadMessage(&aboutPG, I_ABOUTVERSION, sAboutProd);
wTextAppend(COPYRIGHT_T, DESCRIPTION);
- wTextAppend(COPYRIGHT_T, "\n\nXTrackCAD is Copyright 2003 by Sillub Technology and 2017 by Bob Blackwell, Martin Fischer and Adam Richards.\n");
- wTextAppend(COPYRIGHT_T, "\nIcons by: Tango Desktop Project (http://tango.freedesktop.org)\n");
- wTextAppend(COPYRIGHT_T, "\nSome icons by Yusuke Kamiyamane. Licensed under a Creative Commons Attribution 3.0 License.\n");
- wTextAppend(COPYRIGHT_T, "\nContributions by: Robert Heller, Mikko Nissinen, Timothy M. Shead, Russell Shilling, Daniel Luis Spagnol");
+ wTextAppend(COPYRIGHT_T,
+ "\n\nXTrackCAD is Copyright 2003 by Sillub Technology and 2017 by Bob Blackwell, Martin Fischer and Adam Richards.\n");
+ wTextAppend(COPYRIGHT_T,
+ "\nIcons by: Tango Desktop Project (http://tango.freedesktop.org)\n");
+ wTextAppend(COPYRIGHT_T,
+ "\nSome icons by Yusuke Kamiyamane. Licensed under a Creative Commons Attribution 3.0 License.\n");
+ wTextAppend(COPYRIGHT_T,
+ "\nContributions by: Robert Heller, Mikko Nissinen, Timothy M. Shead, Russell Shilling, Daniel Luis Spagnol");
wTextAppend(COPYRIGHT_T, "\nParameter Files by: Ralph Boyd, Dwayne Ward\n");
- wTextAppend(COPYRIGHT_T, "\nThe following software is distributed with XTrackCAD\n\n");
+ wTextAppend(COPYRIGHT_T,
+ "\nThe following software is distributed with XTrackCAD\n\n");
#ifdef WINDOWS
wTextAppend(COPYRIGHT_T, FreeImage_GetCopyrightMessage());
wTextAppend(COPYRIGHT_T, "\n\n");
#endif
wTextAppend(COPYRIGHT_T, "Cornu Algorithm and Implementation by: Raph Levien");
wTextAppend(COPYRIGHT_T, "\n\nuthash, utlist Copyright notice:");
- wTextAppend(COPYRIGHT_T, "\nCopyright (c) 2005-2015, Troy D. Hanson http://troydhanson.github.com/uthash/");
+ wTextAppend(COPYRIGHT_T,
+ "\nCopyright (c) 2005-2015, Troy D. Hanson http://troydhanson.github.com/uthash/");
wTextAppend(COPYRIGHT_T, "\nAll rights reserved.");
- wTextAppend(COPYRIGHT_T, "\n\ncJSON: Copyright (c) 2009-2017 Dave Gamble and cJSON contributors");
- wTextAppend(COPYRIGHT_T, "\n\nlibzip: Copyright(C) 1999 - 2019 Dieter Baron and Thomas Klausner\n" \
- "The authors can be contacted at libzip@nih.at");
-
- wTextAppend(COPYRIGHT_T, "\n\nMiniXML: Copyright (c) 2003-2019 by Michael R Sweet.\n" \
- "The Mini - XML library is licensed under the Apache License Version 2.0 with an\n" \
- "exception to allow linking against GPL2 / LGPL2 - only software.");
+ wTextAppend(COPYRIGHT_T,
+ "\n\ncJSON: Copyright (c) 2009-2017 Dave Gamble and cJSON contributors");
+ wTextAppend(COPYRIGHT_T,
+ "\n\nlibzip: Copyright(C) 1999 - 2019 Dieter Baron and Thomas Klausner\n" \
+ "The authors can be contacted at libzip@nih.at");
+
+ wTextAppend(COPYRIGHT_T,
+ "\n\nMiniXML: Copyright (c) 2003-2019 by Michael R Sweet.\n" \
+ "The Mini - XML library is licensed under the Apache License Version 2.0 with an\n"
+ \
+ "exception to allow linking against GPL2 / LGPL2 - only software.");
}
wShow(aboutW);
@@ -238,8 +254,8 @@ void CreateAboutW(void *ptr)
/**
* Initialize the functions for small dialogs.
*/
-
+
void InitSmallDlg( void )
{
- ParamRegister( &tipPG );
-}
+ ParamRegister( &tipPG );
+}
diff --git a/app/bin/smalldlg.h b/app/bin/smalldlg.h
index d3c21a6..47e1def 100644
--- a/app/bin/smalldlg.h
+++ b/app/bin/smalldlg.h
@@ -1,9 +1,9 @@
/** \file smalldlg.h
- * Definitions and declarations for the small dialog box functions.
+ * Definitions and declarations for the small dialog box functions.
*/
/* XTrkCad - Model Railroad CAD
- * Copyright (C)
+ * Copyright (C)
*
* 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
@@ -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
*/
#ifndef SMALLDLG_H
diff --git a/app/bin/stringxtc.c b/app/bin/stringxtc.c
index 483f1a6..e65a97d 100644
--- a/app/bin/stringxtc.c
+++ b/app/bin/stringxtc.c
@@ -1,106 +1,145 @@
-/** \file stringxtc.c
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- */
-
- /*
- * stupid library routines.
- */
-
-#include <ctype.h>
-#include <stddef.h>
-#include <errno.h>
-#include "include/stringxtc.h"
-
-/**
- * strscpy - Copy a C-string into a sized buffer
- * @dest: Where to copy the string to
- * @src: Where to copy the string from
- * @count: Size of destination buffer
- *
- * Copy the string, or as much of it as fits, into the dest buffer. The
- * behavior is undefined if the string buffers overlap. The destination
- * buffer is always NUL terminated, unless it's zero-sized.
- *
- * Preferred to strlcpy() since the API doesn't require reading memory
- * from the src string beyond the specified "count" bytes, and since
- * the return value is easier to error-check than strlcpy()'s.
- * In addition, the implementation is robust to the string changing out
- * from underneath it, unlike the current strlcpy() implementation.
- *
- * Preferred to strncpy() since it always returns a valid string, and
- * doesn't unnecessarily force the tail of the destination buffer to be
- * zeroed. If zeroing is desired please use strscpy_pad().
- *
- * Return: The number of characters copied (not including the trailing
- * %NUL) or -E2BIG if the destination buffer wasn't big enough.
- */
-
-size_t strscpy(char *dest, const char *src, size_t count)
-{
- long res = 0;
-
- if (count == 0)
- return -E2BIG;
-
- while (count) {
- char c;
-
- c = src[res];
- dest[res] = c;
- if (!c)
- return res;
- res++;
- count--;
- }
-
- /* Hit buffer length without finding a NUL; force NUL-termination. */
- if (res)
- dest[res - 1] = '\0';
-
- return -E2BIG;
-}
-
-/**
- * Convert a string to lower case
- * Taken from https://stackoverflow.com/questions/23618316/undefined-reference-to-strlwr
- *
- * \param str IN string to convert
- * \return pointer to converted string
- */
-
-char *
-XtcStrlwr(char *str)
-{
- unsigned char *p = (unsigned char *)str;
-
- while (*p) {
- *p = tolower((unsigned char)*p);
- p++;
- }
-
- return str;
-}
-
-/**
- * Compare two strings case insensitive
- * Taken from https://stackoverflow.com/questions/30733786/c99-remove-stricmp-and-strnicmp
- *
- * \param a, b IN strings to compare
- * \return
- */
-
+/** \file stringxtc.c
+ *
+ * Copyright (C) 1991, 1992 Linus Torvalds
+ */
+
+/*
+ * stupid library routines.
+ */
+
+#include <ctype.h>
+#include <stddef.h>
+#include <errno.h>
+#include <string.h>
+#include "include/stringxtc.h"
+
+/**
+ * strscpy - Copy a C-string into a sized buffer
+ * @dest: Where to copy the string to
+ * @src: Where to copy the string from
+ * @count: Size of destination buffer
+ *
+ * Copy the string, or as much of it as fits, into the dest buffer. The
+ * behavior is undefined if the string buffers overlap. The destination
+ * buffer is always NUL terminated, unless it's zero-sized.
+ *
+ * Preferred to strlcpy() since the API doesn't require reading memory
+ * from the src string beyond the specified "count" bytes, and since
+ * the return value is easier to error-check than strlcpy()'s.
+ * In addition, the implementation is robust to the string changing out
+ * from underneath it, unlike the current strlcpy() implementation.
+ *
+ * Preferred to strncpy() since it always returns a valid string, and
+ * doesn't unnecessarily force the tail of the destination buffer to be
+ * zeroed. If zeroing is desired please use strscpy_pad().
+ *
+ * Return: The number of characters copied (not including the trailing
+ * %NUL) or -E2BIG if the destination buffer wasn't big enough.
+ */
+
+size_t strscpy(char *dest, const char *src, size_t count)
+{
+ long res = 0;
+
+ if (count == 0) {
+ return -E2BIG;
+ }
+
+ while (count) {
+ char c;
+
+ c = src[res];
+ dest[res] = c;
+ if (!c) {
+ return res;
+ }
+ res++;
+ count--;
+ }
+
+ /* Hit buffer length without finding a NUL; force NUL-termination. */
+ if (res) {
+ dest[res - 1] = '\0';
+ }
+
+ return -E2BIG;
+}
+
+/* Safe version of strcat - will not overflow buffer
+ * Return: The number of characters in buffer (not including the trailing
+ * % NUL) or -E2BIG if the destination buffer wasn't big enough.
+ */
+size_t
+strscat(char* dest, const char* src, size_t count)
+{
+ long sptr = 0;
+ long dptr = strlen(dest);
+ count -= dptr;
+
+ if (count <= 0) {
+ return -E2BIG;
+ }
+
+ while (count) {
+ char c;
+
+ c = src[sptr];
+ dest[dptr] = c;
+ if (!c) {
+ return dptr;
+ }
+ sptr++;
+ dptr++;
+ count--;
+ }
+
+ /* Hit buffer length without finding a NUL; force NUL-termination. */
+ if (dptr) {
+ dest[dptr - 1] = '\0';
+ }
+
+ return -E2BIG;
+}
+
+/**
+ * Convert a string to lower case
+ * Taken from https://stackoverflow.com/questions/23618316/undefined-reference-to-strlwr
+ *
+ * \param str IN string to convert
+ * \return pointer to converted string
+ */
+
+char *
+XtcStrlwr(char *str)
+{
+ unsigned char *p = (unsigned char *)str;
+
+ while (*p) {
+ *p = tolower((unsigned char)*p);
+ p++;
+ }
+
+ return str;
+}
+
+/**
+ * Compare two strings case insensitive
+ * Taken from https://stackoverflow.com/questions/30733786/c99-remove-stricmp-and-strnicmp
+ *
+ * \param a, b IN strings to compare
+ * \return
+ */
+
int
XtcStricmp(const char *a, const char *b)
{
- int ca, cb;
- do {
- ca = (unsigned char) *a++;
- cb = (unsigned char) *b++;
- ca = tolower(toupper(ca));
- cb = tolower(toupper(cb));
- } while ((ca == cb) && (ca != '\0'));
- return ca - cb;
+ int ca, cb;
+ do {
+ ca = (unsigned char) *a++;
+ cb = (unsigned char) *b++;
+ ca = tolower(toupper(ca));
+ cb = tolower(toupper(cb));
+ } while ((ca == cb) && (ca != '\0'));
+ return ca - cb;
}
-
diff --git a/app/bin/svgformat.c b/app/bin/svgformat.c
index 2c57da0..3dfa621 100644
--- a/app/bin/svgformat.c
+++ b/app/bin/svgformat.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
*/
#define _USE_MATH_DEFINES
@@ -26,35 +26,32 @@
#include <string.h>
#include <stdio.h>
-#ifdef HAVE_MALLOC_H
- #include <malloc.h>
-#endif
-
#include "dynstring.h"
#include "mxml.h"
#include "include/svgformat.h"
#include "include/utlist.h"
+#include "common.h"
#define SVGDPIFACTOR 90.0 /**< the assumed resolution of the svg, 90 is what Inkscape uses */
#define ROUND2PIXEL( value ) ((int)floor(value * SVGDPIFACTOR + 0.5))
typedef struct sCssStyle {
- DynString name;
- DynString style;
- struct sCssStyle *next;
+ DynString name;
+ DynString style;
+ struct sCssStyle *next;
} sCssStyle;
static sCssStyle *styleCache = NULL;
static unsigned cacheCount;
static char *lineStyleCSS[] = { /**< The css class names for line styles */
- NULL, // no style needed for solid line
- "linedash",
- "linedot",
- "linedashdot",
- "linedashdot",
- "linecenter",
- "linephantom"
+ NULL, // no style needed for solid line
+ "linedash",
+ "linedot",
+ "linedashdot",
+ "linedashdot",
+ "linecenter",
+ "linephantom"
};
#define LINESTYLECLASSES \
@@ -73,23 +70,23 @@ static char *lineStyleCSS[] = { /**< The css class names for line styles */
static void
SvgInitStyleCache(void)
{
- sCssStyle *style;
+ sCssStyle *style;
- style = malloc(sizeof(sCssStyle));
- DynStringMalloc(&(style->name), 2);
- DynStringCatCStr(&(style->name), "*");
+ style = malloc(sizeof(sCssStyle));
+ DynStringMalloc(&(style->name), 2);
+ DynStringCatCStr(&(style->name), "*");
- DynStringMalloc(&(style->style), 16);
- DynStringCatCStr(&(style->style), "stroke-width:1; stroke:#000000; fill:none;");
- LL_APPEND(styleCache, style);
+ DynStringMalloc(&(style->style), 16);
+ DynStringCatCStr(&(style->style), "stroke-width:1; stroke:#000000; fill:none;");
+ LL_APPEND(styleCache, style);
- cacheCount = 1;
+ cacheCount = 1;
}
static int
CompareStyle(sCssStyle *a, sCssStyle *b)
{
- return (strcmp(DynStringToCStr(&(a->style)), DynStringToCStr(&(b->style))));
+ return (strcmp(DynStringToCStr(&(a->style)), DynStringToCStr(&(b->style))));
}
/**
@@ -106,27 +103,27 @@ CompareStyle(sCssStyle *a, sCssStyle *b)
static char *
SvgAddStyleToCache(DynString *styleDef)
{
- sCssStyle *style;
- sCssStyle *result;
-
- style = malloc(sizeof(sCssStyle));
- style->style = *styleDef;
-
- LL_SEARCH(styleCache, result, style, CompareStyle);
- if (result) {
- if (!strcmp(DynStringToCStr(&(result->name)), "*")) {
- return (NULL);
- } else {
- return (DynStringToCStr(&(result->name)) + 1);
- }
- } else {
- DynString className;
- DynStringMalloc(&className, 16);
- DynStringPrintf(&className, ".xtc%u", cacheCount++);
- style->name = className;
- LL_APPEND(styleCache, style);
- return (DynStringToCStr(&className) + 1); //skip leading dot in class name
- }
+ sCssStyle *style;
+ sCssStyle *result;
+
+ style = malloc(sizeof(sCssStyle));
+ style->style = *styleDef;
+
+ LL_SEARCH(styleCache, result, style, CompareStyle);
+ if (result) {
+ if (!strcmp(DynStringToCStr(&(result->name)), "*")) {
+ return (NULL);
+ } else {
+ return (DynStringToCStr(&(result->name)) + 1);
+ }
+ } else {
+ DynString className;
+ DynStringMalloc(&className, 16);
+ DynStringPrintf(&className, ".xtc%u", cacheCount++);
+ style->name = className;
+ LL_APPEND(styleCache, style);
+ return (DynStringToCStr(&className) + 1); //skip leading dot in class name
+ }
}
/**
@@ -136,16 +133,16 @@ SvgAddStyleToCache(DynString *styleDef)
static void
SvgDestroyStyleCache(void)
{
- sCssStyle *style;
- sCssStyle *tmp;
+ sCssStyle *style;
+ sCssStyle *tmp;
- LL_FOREACH_SAFE(styleCache, style, tmp) {
- DynStringFree(&(style->name));
- DynStringFree(&(style->style));
- free(style);
- }
+ LL_FOREACH_SAFE(styleCache, style, tmp) {
+ DynStringFree(&(style->name));
+ DynStringFree(&(style->style));
+ free(style);
+ }
- styleCache = NULL;
+ styleCache = NULL;
}
/**
@@ -161,36 +158,36 @@ static void
SvgCreateStyle(mxml_node_t *element, unsigned long colorRGB, double width,
bool fill, unsigned lineStyle)
{
- DynString style;
- char color[10];
- char *className = NULL;
- char *classLineStyle = NULL;
-
- assert(lineStyle < 7);
-
- sprintf(color, "#%2.2x%2.2x%2.2x", ((unsigned int)colorRGB >> 16) & 0xFF,
- ((unsigned int)colorRGB >> 8) & 0xFF, (unsigned int)colorRGB & 0xFF);
-
- DynStringMalloc(&style, 32);
-
- DynStringPrintf(&style,
- "stroke-width:%d; stroke:%s; fill:%s;",
- (int)(width + 0.5),
- color,
- (fill ? color: "none"));
-
- className = SvgAddStyleToCache(&style);
- classLineStyle = lineStyleCSS[lineStyle];
-
- if (className && classLineStyle) {
- mxmlElementSetAttrf(element, "class", "%s %s", className, classLineStyle);
- } else {
- if (className || classLineStyle) {
- mxmlElementSetAttr(element, "class", (className? className:classLineStyle));
- } else {
- // strict default, nothing to add
- }
- }
+ DynString style;
+ char color[10];
+ char *className = NULL;
+ char *classLineStyle = NULL;
+
+ CHECK(lineStyle < 7);
+
+ sprintf(color, "#%2.2x%2.2x%2.2x", ((unsigned int)colorRGB >> 16) & 0xFF,
+ ((unsigned int)colorRGB >> 8) & 0xFF, (unsigned int)colorRGB & 0xFF);
+
+ DynStringMalloc(&style, 32);
+
+ DynStringPrintf(&style,
+ "stroke-width:%d; stroke:%s; fill:%s;",
+ (int)(width + 0.5),
+ color,
+ (fill ? color: "none"));
+
+ className = SvgAddStyleToCache(&style);
+ classLineStyle = lineStyleCSS[lineStyle];
+
+ if (className && classLineStyle) {
+ mxmlElementSetAttrf(element, "class", "%s %s", className, classLineStyle);
+ } else {
+ if (className || classLineStyle) {
+ mxmlElementSetAttr(element, "class", (className? className:classLineStyle));
+ } else {
+ // strict default, nothing to add
+ }
+ }
}
/**
@@ -204,7 +201,7 @@ SvgCreateStyle(mxml_node_t *element, unsigned long colorRGB, double width,
static void
SvgAddRealUnit(mxml_node_t *node, char *name, double value)
{
- mxmlElementSetAttrf(node, name, "%d", (int)(value+0.5));
+ mxmlElementSetAttrf(node, name, "%d", (int)(value+0.5));
}
/**
@@ -220,7 +217,7 @@ SvgAddRealUnit(mxml_node_t *node, char *name, double value)
static void
SvgAddCoordinate(mxml_node_t *node, char *name, double value)
{
- mxmlElementSetAttrf(node, name, "%d", ROUND2PIXEL(value));
+ mxmlElementSetAttrf(node, name, "%d", ROUND2PIXEL(value));
}
/**
@@ -239,17 +236,17 @@ void
SvgLineCommand(SVGParent *svg, double x0,
double y0, double x1, double y1, double w, long c, unsigned lineStyle)
{
- mxml_node_t *xmlData;
+ mxml_node_t *xmlData;
- xmlData = mxmlNewElement(svg, "line");
+ xmlData = mxmlNewElement(svg, "line");
- // line end points
- SvgAddCoordinate(xmlData, "x1", x0);
- SvgAddCoordinate(xmlData, "y1", y0);
- SvgAddCoordinate(xmlData, "x2", x1);
- SvgAddCoordinate(xmlData, "y2", y1);
+ // line end points
+ SvgAddCoordinate(xmlData, "x1", x0);
+ SvgAddCoordinate(xmlData, "y1", y0);
+ SvgAddCoordinate(xmlData, "x2", x1);
+ SvgAddCoordinate(xmlData, "y2", y1);
- SvgCreateStyle(xmlData, c, w, false, lineStyle);
+ SvgCreateStyle(xmlData, c, w, false, lineStyle);
}
/**
@@ -268,17 +265,17 @@ void
SvgRectCommand(SVGParent *svg, double x0, double y0, double x1, double y1,
int color, unsigned lineStyle)
{
- mxml_node_t *xmlData;
+ mxml_node_t *xmlData;
- xmlData = mxmlNewElement(svg, "rect");
+ xmlData = mxmlNewElement(svg, "rect");
- // line end points
- SvgAddCoordinate(xmlData, "x1", x0);
- SvgAddCoordinate(xmlData, "y1", y0);
- SvgAddCoordinate(xmlData, "x2", x1);
- SvgAddCoordinate(xmlData, "y2", y1);
+ // line end points
+ SvgAddCoordinate(xmlData, "x1", x0);
+ SvgAddCoordinate(xmlData, "y1", y0);
+ SvgAddCoordinate(xmlData, "x2", x1);
+ SvgAddCoordinate(xmlData, "y2", y1);
- SvgCreateStyle(xmlData, color, 1, false, lineStyle);
+ SvgCreateStyle(xmlData, color, 1, false, lineStyle);
}
@@ -298,31 +295,31 @@ void
SvgPolyLineCommand(SVGParent *svg, int cnt, double *points, int color,
double width, bool fill, unsigned lineStyle)
{
- mxml_node_t *xmlData;
- DynString pointList;
- DynString pos;
+ mxml_node_t *xmlData;
+ DynString pointList;
+ DynString pos;
- DynStringMalloc(&pointList, 64);
- DynStringMalloc(&pos, 20);
+ DynStringMalloc(&pointList, 64);
+ DynStringMalloc(&pos, 20);
- for (int i = 0; i < cnt; i++) {
- DynStringPrintf(&pos,
- "%d,%d ",
- (int)floor(points[i * 2] * SVGDPIFACTOR + 0.5),
- (int)floor(points[ i * 2 + 1] * SVGDPIFACTOR + 0.5));
+ for (int i = 0; i < cnt; i++) {
+ DynStringPrintf(&pos,
+ "%d,%d ",
+ (int)floor(points[i * 2] * SVGDPIFACTOR + 0.5),
+ (int)floor(points[ i * 2 + 1] * SVGDPIFACTOR + 0.5));
- DynStringCatStr(&pointList, &pos);
- DynStringClear(&pos);
- }
+ DynStringCatStr(&pointList, &pos);
+ DynStringClear(&pos);
+ }
- xmlData = mxmlNewElement(svg, "polyline");
- mxmlElementSetAttr(xmlData, "points", DynStringToCStr(&pointList));
+ xmlData = mxmlNewElement(svg, "polyline");
+ mxmlElementSetAttr(xmlData, "points", DynStringToCStr(&pointList));
- SvgCreateStyle(xmlData, color, width, fill, lineStyle);
+ SvgCreateStyle(xmlData, color, width, fill, lineStyle);
- DynStringFree(&pos);
- DynStringFree(&pointList);
+ DynStringFree(&pos);
+ DynStringFree(&pointList);
}
/**
@@ -342,17 +339,17 @@ void
SvgCircleCommand(SVGParent *svg, double x,
double y, double r, double w, long c, bool fill, unsigned lineStyle)
{
- mxml_node_t *xmlData;
+ mxml_node_t *xmlData;
- xmlData = mxmlNewElement(svg, "circle");
+ xmlData = mxmlNewElement(svg, "circle");
- // line end points
- SvgAddCoordinate(xmlData, "cx", x);
- SvgAddCoordinate(xmlData, "cy", y);
+ // line end points
+ SvgAddCoordinate(xmlData, "cx", x);
+ SvgAddCoordinate(xmlData, "cy", y);
- SvgAddCoordinate(xmlData, "r", r);
+ SvgAddCoordinate(xmlData, "r", r);
- SvgCreateStyle(xmlData, c, w, fill, lineStyle);
+ SvgCreateStyle(xmlData, c, w, fill, lineStyle);
}
@@ -371,10 +368,10 @@ static void
PolarToCartesian(double cx, double cy, double radius, double angle, double *px,
double *py)
{
- double angleInRadians = ((angle) * M_PI) / 180.0;
+ double angleInRadians = ((angle) * M_PI) / 180.0;
- *px = cx + (radius * cos(angleInRadians));
- *py = cy + (radius * sin(angleInRadians));
+ *px = cx + (radius * cos(angleInRadians));
+ *py = cy + (radius * sin(angleInRadians));
}
/**
@@ -398,35 +395,35 @@ SvgArcCommand(SVGParent *svg, double x, double y,
double r, double a0, double a1, bool center, double w, long c,
unsigned lineStyle)
{
- double startX;
- double startY;
- double endX;
- double endY;
- char largeArcFlag = (a1 - a0 <= 180 ? '0' : '1');
- DynString pathArc;
- mxml_node_t *xmlData;
-
- xmlData = mxmlNewElement(svg, "path");
-
- PolarToCartesian(x, y, r, a0+a1-90, &startX, &startY);
- PolarToCartesian(x, y, r, a0-90, &endX, &endY);
-
- DynStringMalloc(&pathArc, 64);
- DynStringPrintf(&pathArc,
- "M %d %d A %d %d 0 %c 0 %d %d",
- ROUND2PIXEL(startX),
- ROUND2PIXEL(startY),
- ROUND2PIXEL(r),
- ROUND2PIXEL(r),
- largeArcFlag,
- ROUND2PIXEL(endX),
- ROUND2PIXEL(endY));
-
- mxmlElementSetAttr(xmlData, "d", DynStringToCStr(&pathArc));
-
- DynStringFree(&pathArc);
-
- SvgCreateStyle(xmlData, c, w, false, lineStyle);
+ double startX;
+ double startY;
+ double endX;
+ double endY;
+ char largeArcFlag = (a1 - a0 <= 180 ? '0' : '1');
+ DynString pathArc;
+ mxml_node_t *xmlData;
+
+ xmlData = mxmlNewElement(svg, "path");
+
+ PolarToCartesian(x, y, r, a0+a1-90, &startX, &startY);
+ PolarToCartesian(x, y, r, a0-90, &endX, &endY);
+
+ DynStringMalloc(&pathArc, 64);
+ DynStringPrintf(&pathArc,
+ "M %d %d A %d %d 0 %c 0 %d %d",
+ ROUND2PIXEL(startX),
+ ROUND2PIXEL(startY),
+ ROUND2PIXEL(r),
+ ROUND2PIXEL(r),
+ largeArcFlag,
+ ROUND2PIXEL(endX),
+ ROUND2PIXEL(endY));
+
+ mxmlElementSetAttr(xmlData, "d", DynStringToCStr(&pathArc));
+
+ DynStringFree(&pathArc);
+
+ SvgCreateStyle(xmlData, c, w, false, lineStyle);
}
/**
@@ -444,18 +441,18 @@ void
SvgTextCommand(SVGParent *svg, double x,
double y, double size, long c, char *text)
{
- mxml_node_t *xmlData;
+ mxml_node_t *xmlData;
- xmlData = mxmlNewElement(svg, "text");
- // starting point
- SvgAddCoordinate(xmlData, "x", x);
- SvgAddCoordinate(xmlData, "y", y);
+ xmlData = mxmlNewElement(svg, "text");
+ // starting point
+ SvgAddCoordinate(xmlData, "x", x);
+ SvgAddCoordinate(xmlData, "y", y);
- SvgCreateStyle(xmlData, c, 1, 1, 0);
+ SvgCreateStyle(xmlData, c, 1, 1, 0);
- SvgAddRealUnit(xmlData, "font-size", size);
+ SvgAddRealUnit(xmlData, "font-size", size);
- mxmlNewText(xmlData, false, text);
+ mxmlNewText(xmlData, false, text);
}
/**
@@ -468,13 +465,13 @@ SvgTextCommand(SVGParent *svg, double x,
void
SvgAddTitle(SVGParent *svg, char *title)
{
- mxml_node_t *titleNode;
- if (title) {
- titleNode = mxmlNewElement(MXML_NO_PARENT, "title");
- mxmlNewText(titleNode, false, title);
+ mxml_node_t *titleNode;
+ if (title) {
+ titleNode = mxmlNewElement(MXML_NO_PARENT, "title");
+ mxmlNewText(titleNode, false, title);
- mxmlAdd(svg, MXML_ADD_BEFORE, MXML_ADD_TO_PARENT, titleNode);
- }
+ mxmlAdd(svg, MXML_ADD_BEFORE, MXML_ADD_TO_PARENT, titleNode);
+ }
}
/**
@@ -490,30 +487,30 @@ SvgAddTitle(SVGParent *svg, char *title)
void
SvgAddCSSStyle(SVGParent *svg)
{
- mxml_node_t *cssNode;
- DynString cssDefs;
- DynString tmp;
- sCssStyle *style;
-
- cssNode = mxmlNewElement(MXML_NO_PARENT, "style");
- mxmlElementSetAttr(cssNode, "type", "text/css");
-
- DynStringMalloc(&cssDefs, 64);
- DynStringMalloc(&tmp, 64);
- LL_FOREACH(styleCache, style) {
- DynStringPrintf(&tmp, "%s { %s }\n",
- DynStringToCStr(&(style->name)),
- DynStringToCStr(&(style->style)));
-
- DynStringCatStr(&cssDefs, &tmp);
- }
-
- DynStringCatCStr(&cssDefs, LINESTYLECLASSES);
- mxmlNewCDATA(cssNode, DynStringToCStr(&cssDefs));
-
- mxmlAdd(svg, MXML_ADD_BEFORE, MXML_ADD_TO_PARENT, cssNode);
- DynStringFree(&tmp);
- DynStringFree(&cssDefs);
+ mxml_node_t *cssNode;
+ DynString cssDefs;
+ DynString tmp;
+ sCssStyle *style;
+
+ cssNode = mxmlNewElement(MXML_NO_PARENT, "style");
+ mxmlElementSetAttr(cssNode, "type", "text/css");
+
+ DynStringMalloc(&cssDefs, 64);
+ DynStringMalloc(&tmp, 64);
+ LL_FOREACH(styleCache, style) {
+ DynStringPrintf(&tmp, "%s { %s }\n",
+ DynStringToCStr(&(style->name)),
+ DynStringToCStr(&(style->style)));
+
+ DynStringCatStr(&cssDefs, &tmp);
+ }
+
+ DynStringCatCStr(&cssDefs, LINESTYLECLASSES);
+ mxmlNewCDATA(cssNode, DynStringToCStr(&cssDefs));
+
+ mxmlAdd(svg, MXML_ADD_BEFORE, MXML_ADD_TO_PARENT, cssNode);
+ DynStringFree(&tmp);
+ DynStringFree(&cssDefs);
}
/**
@@ -525,9 +522,9 @@ SvgAddCSSStyle(SVGParent *svg)
SVGDocument *
SvgCreateDocument()
{
- SvgInitStyleCache();
+ SvgInitStyleCache();
- return ((SVGDocument *)mxmlNewXML("1.0"));
+ return ((SVGDocument *)mxmlNewXML("1.0"));
}
/**
@@ -539,9 +536,9 @@ SvgCreateDocument()
void
SvgDestroyDocument(SVGDocument *xml)
{
- mxmlDelete((mxml_node_t *)xml);
+ mxmlDelete((mxml_node_t *)xml);
- SvgDestroyStyleCache();
+ SvgDestroyStyleCache();
}
/**
@@ -563,23 +560,23 @@ SvgPrologue(SVGDocument *parent, char *id, int layerCount, double x0, double y0,
double x1,
double y1)
{
- mxml_node_t *xmlData;
-
- xmlData = mxmlNewElement(parent,
- "!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\""
- " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"");
- xmlData = mxmlNewElement(parent, "svg");
- mxmlElementSetAttr(xmlData, "xmlns", "http://www.w3.org/2000/svg");
-
- if (id) {
- mxmlElementSetAttr(xmlData, "id", id);
- }
- SvgAddCoordinate(xmlData, "x", x0);
- SvgAddCoordinate(xmlData, "y", y0);
- SvgAddCoordinate(xmlData, "width", x1);
- SvgAddCoordinate(xmlData, "height", y1);
-
- return ((SVGParent *)xmlData);
+ mxml_node_t *xmlData;
+
+ xmlData = mxmlNewElement(parent,
+ "!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\""
+ " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"");
+ xmlData = mxmlNewElement(parent, "svg");
+ mxmlElementSetAttr(xmlData, "xmlns", "http://www.w3.org/2000/svg");
+
+ if (id) {
+ mxmlElementSetAttr(xmlData, "id", id);
+ }
+ SvgAddCoordinate(xmlData, "x", x0);
+ SvgAddCoordinate(xmlData, "y", y0);
+ SvgAddCoordinate(xmlData, "width", x1);
+ SvgAddCoordinate(xmlData, "height", y1);
+
+ return ((SVGParent *)xmlData);
}
/**
@@ -594,61 +591,61 @@ SvgPrologue(SVGDocument *parent, char *id, int layerCount, double x0, double y0,
const char *
whitespace_cb(mxml_node_t *node, int where)
{
- const char *element;
-
- /*
- * We can conditionally break to a new line before or after
- * any element. These are just common HTML elements...
- */
-
- element = mxmlGetElement(node);
-
- if (!strcmp(element, "svg") ||
- !strncmp(element, "!DOCTYPE", strlen("!DOCTYPE"))) {
- /*
- * Newlines before open and after close...
- */
-
- if (where == MXML_WS_BEFORE_OPEN ||
- where == MXML_WS_BEFORE_CLOSE) {
- return ("\n");
- }
- } else {
- if (!strcmp(element, "line") ||
- !strcmp(element, "circle") ||
- !strcmp(element, "path") ||
- !strcmp(element, "polyline")) {
- if (where == MXML_WS_BEFORE_OPEN ||
- where == MXML_WS_AFTER_CLOSE) {
- return ("\n\t");
- }
- } else {
- if (!strcmp(element, "style") ||
- !strcmp(element, "title") ||
- !strcmp(element, "text")) {
- if (where == MXML_WS_BEFORE_OPEN) {
- return ("\n\t");
- } else {
- if (where == MXML_WS_AFTER_OPEN) {
- return ("\n\t\t");
- } else {
- if (where == MXML_WS_AFTER_CLOSE) {
- return ("");
- } else {
- return ("\n\t");
- }
- }
- }
-
- }
- }
- }
-
- /*
- * Otherwise return NULL for no added whitespace...
- */
-
- return (NULL);
+ const char *element;
+
+ /*
+ * We can conditionally break to a new line before or after
+ * any element. These are just common HTML elements...
+ */
+
+ element = mxmlGetElement(node);
+
+ if (!strcmp(element, "svg") ||
+ !strncmp(element, "!DOCTYPE", strlen("!DOCTYPE"))) {
+ /*
+ * Newlines before open and after close...
+ */
+
+ if (where == MXML_WS_BEFORE_OPEN ||
+ where == MXML_WS_BEFORE_CLOSE) {
+ return ("\n");
+ }
+ } else {
+ if (!strcmp(element, "line") ||
+ !strcmp(element, "circle") ||
+ !strcmp(element, "path") ||
+ !strcmp(element, "polyline")) {
+ if (where == MXML_WS_BEFORE_OPEN ||
+ where == MXML_WS_AFTER_CLOSE) {
+ return ("\n\t");
+ }
+ } else {
+ if (!strcmp(element, "style") ||
+ !strcmp(element, "title") ||
+ !strcmp(element, "text")) {
+ if (where == MXML_WS_BEFORE_OPEN) {
+ return ("\n\t");
+ } else {
+ if (where == MXML_WS_AFTER_OPEN) {
+ return ("\n\t\t");
+ } else {
+ if (where == MXML_WS_AFTER_CLOSE) {
+ return ("");
+ } else {
+ return ("\n\t");
+ }
+ }
+ }
+
+ }
+ }
+ }
+
+ /*
+ * Otherwise return NULL for no added whitespace...
+ */
+
+ return (NULL);
}
/**
@@ -663,15 +660,15 @@ whitespace_cb(mxml_node_t *node, int where)
bool
SvgSaveFile(SVGDocument *svg, char *filename)
{
- FILE *svgF;
+ FILE *svgF;
- svgF = fopen(filename, "w");
- if (svgF) {
- mxmlSetWrapMargin(0);
- mxmlSaveFile(svg, svgF, whitespace_cb);
- fclose(svgF);
+ svgF = fopen(filename, "w");
+ if (svgF) {
+ mxmlSetWrapMargin(0);
+ mxmlSaveFile(svg, svgF, whitespace_cb);
+ fclose(svgF);
- return (true);
- }
- return (false);
+ return (true);
+ }
+ return (false);
}
diff --git a/app/bin/svgoutput.c b/app/bin/svgoutput.c
index a8224be..e4ff66b 100644
--- a/app/bin/svgoutput.c
+++ b/app/bin/svgoutput.c
@@ -17,22 +17,21 @@
*
* 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 <stdio.h>
#include <string.h>
#include <time.h>
#ifdef WINDOWS
- #include <io.h>
- #define UTFCONVERT
+#include <io.h>
+#define UTFCONVERT
#else
- #include <errno.h>
+#include <errno.h>
#endif
#include <xtrkcad-config.h>
#include <locale.h>
-#include <assert.h>
#include <mxml.h>
#include <dynstring.h>
@@ -53,6 +52,8 @@
static struct wFilSel_t * exportSVGFile_fs;
static coOrd roomSize;
+static int svgLineWidth[4] = {10, 10, 20, 30};
+
/**
* get line style for element
*
@@ -64,35 +65,35 @@ static coOrd roomSize;
static unsigned
SvgDrawGetLineStyle(drawCmd_p d)
{
- unsigned long notSolid = DC_NOTSOLIDLINE;
- unsigned long opt = d->options & notSolid;
- unsigned lineOpt;
-
- switch (opt) {
- case DC_DASH:
- lineOpt = wDrawLineDash;
- break;
- case DC_DOT:
- lineOpt = wDrawLineDot;
- break;
- case DC_DASHDOT:
- lineOpt = wDrawLineDashDot;
- break;
- case DC_DASHDOTDOT:
- lineOpt = wDrawLineDashDotDot;
- break;
- case DC_CENTER:
- lineOpt = wDrawLineCenter;
- break;
- case DC_PHANTOM:
- lineOpt = wDrawLinePhantom;
- break;
- default:
- lineOpt = wDrawLineSolid;
- break;
- }
-
- return (lineOpt);
+ unsigned long notSolid = DC_NOTSOLIDLINE;
+ unsigned long opt = d->options & notSolid;
+ unsigned lineOpt;
+
+ switch (opt) {
+ case DC_DASH:
+ lineOpt = wDrawLineDash;
+ break;
+ case DC_DOT:
+ lineOpt = wDrawLineDot;
+ break;
+ case DC_DASHDOT:
+ lineOpt = wDrawLineDashDot;
+ break;
+ case DC_DASHDOTDOT:
+ lineOpt = wDrawLineDashDotDot;
+ break;
+ case DC_CENTER:
+ lineOpt = wDrawLineCenter;
+ break;
+ case DC_PHANTOM:
+ lineOpt = wDrawLinePhantom;
+ break;
+ default:
+ lineOpt = wDrawLineSolid;
+ break;
+ }
+
+ return (lineOpt);
}
/**
@@ -106,22 +107,22 @@ SvgDrawGetLineStyle(drawCmd_p d)
*/
static void SvgDrawLine(
- drawCmd_p d,
- coOrd p0,
- coOrd p1,
- wDrawWidth width,
- wDrawColor color)
+ drawCmd_p d,
+ coOrd p0,
+ coOrd p1,
+ wDrawWidth width,
+ wDrawColor color)
{
- unsigned lineOpt = SvgDrawGetLineStyle(d);
+ unsigned lineOpt = SvgDrawGetLineStyle(d);
- width = (wDrawWidth)(width > MININMUMLINEWIDTH ? width : MININMUMLINEWIDTH);
+ width = (wDrawWidth)(width >= MINIMUMLINEWIDTH ? width : svgLineWidth[width]);
- SvgLineCommand((SVGParent *)(d->d),
- p0.x, roomSize.y - p0.y,
- p1.x, roomSize.y - p1.y,
- (double)width,
- wDrawGetRGB(color),
- lineOpt);
+ SvgLineCommand((SVGParent *)(d->d),
+ p0.x, roomSize.y - p0.y,
+ p1.x, roomSize.y - p1.y,
+ (double)width,
+ wDrawGetRGB(color),
+ lineOpt);
}
/**
@@ -138,38 +139,39 @@ static void SvgDrawLine(
*/
static void SvgDrawArc(
- drawCmd_p d,
- coOrd p,
- DIST_T r,
- ANGLE_T angle0,
- ANGLE_T angle1,
- BOOL_T drawCenter,
- wDrawWidth width,
- wDrawColor color)
+ drawCmd_p d,
+ coOrd p,
+ DIST_T r,
+ ANGLE_T angle0,
+ ANGLE_T angle1,
+ BOOL_T drawCenter,
+ wDrawWidth width,
+ wDrawColor color)
{
- unsigned lineOpt = SvgDrawGetLineStyle(d);
-
- if (angle1 >= 360.0) {
- SvgCircleCommand((SVGParent *)(d->d),
- p.x,
- roomSize.y - p.y,
- r,
- (width > MININMUMLINEWIDTH ? width : MININMUMLINEWIDTH),
- wDrawGetRGB(color),
- false,
- lineOpt);
- } else {
- SvgArcCommand((SVGParent *)(d->d),
- p.x,
- roomSize.y-p.y,
- r,
- angle0,
- angle1,
- drawCenter,
- (width > MININMUMLINEWIDTH ? width: MININMUMLINEWIDTH),
- wDrawGetRGB(color),
- lineOpt);
- }
+ unsigned lineOpt = SvgDrawGetLineStyle(d);
+ wDrawWidth w = (width >= MINIMUMLINEWIDTH ? width : svgLineWidth[width]);
+
+ if (angle1 >= 360.0) {
+ SvgCircleCommand((SVGParent *)(d->d),
+ p.x,
+ roomSize.y - p.y,
+ r,
+ w,
+ wDrawGetRGB(color),
+ false,
+ lineOpt);
+ } else {
+ SvgArcCommand((SVGParent *)(d->d),
+ p.x,
+ roomSize.y-p.y,
+ r,
+ angle0,
+ angle1,
+ drawCenter,
+ w,
+ wDrawGetRGB(color),
+ lineOpt);
+ }
}
@@ -186,28 +188,28 @@ static void SvgDrawArc(
*/
static void SvgDrawString(
- drawCmd_p d,
- coOrd p,
- ANGLE_T a,
- char * s,
- wFont_p fp,
- FONTSIZE_T fontSize,
- wDrawColor color)
+ drawCmd_p d,
+ coOrd p,
+ ANGLE_T a,
+ char * s,
+ wFont_p fp,
+ FONTSIZE_T fontSize,
+ wDrawColor color)
{
- char *text = MyStrdup(s);
+ char *text = MyStrdup(s);
#ifdef UTFCONVERT
- text = Convert2UTF8(text);
+ text = Convert2UTF8(text);
#endif // UTFCONVERT
- SvgTextCommand((SVGParent *)(d->d),
- p.x,
- roomSize.y - p.y,
- fontSize,
- wDrawGetRGB(color),
- text);
+ SvgTextCommand((SVGParent *)(d->d),
+ p.x,
+ roomSize.y - p.y,
+ fontSize,
+ wDrawGetRGB(color),
+ text);
- MyFree(text);
+ MyFree(text);
}
/**
@@ -220,10 +222,10 @@ static void SvgDrawString(
*/
static void SvgDrawBitmap(
- drawCmd_p d,
- coOrd p,
- wDrawBitMap_p bm,
- wDrawColor color)
+ drawCmd_p d,
+ coOrd p,
+ wDrawBitMap_p bm,
+ wDrawColor color)
{
}
@@ -240,37 +242,34 @@ static void SvgDrawBitmap(
*/
static void SvgDrawFillPoly(
- drawCmd_p d,
- int cnt,
- coOrd * pts,
- int * pointer,
- wDrawColor color, wDrawWidth width, drawFill_e fillStyle)
+ drawCmd_p d,
+ int cnt,
+ coOrd * pts,
+ int * pointer,
+ wDrawColor color, wDrawWidth width, drawFill_e fillStyle)
{
- int i;
- double *points = malloc((cnt + 1) * 2 * sizeof(double));
-
- unsigned lineOpt = SvgDrawGetLineStyle(d);
-
- if (!points) {
- puts("memory for poly line coordinates could not be allocated!");
- abort();
- }
- for (i = 0; i < cnt; i++) {
- points[i * 2] = pts[i].x;
- points[i * 2 + 1] = roomSize.y - pts[i].y;
- }
-
- if (fillStyle == DRAW_CLOSED || fillStyle == DRAW_FILL) {
- points[i * 2] = points[0];
- points[i * 2 + 1] = points[1];
- cnt++;
- }
-
- width = (wDrawWidth)(width > MININMUMLINEWIDTH ? width : MININMUMLINEWIDTH);
- SvgPolyLineCommand((SVGParent *)(d->d), cnt, points, wDrawGetRGB(color),
- (double)width, fillStyle == DRAW_FILL, lineOpt);
-
- free(points);
+ int i;
+ double *points = malloc((cnt + 1) * 2 * sizeof(double));
+ CHECK( points );
+
+ unsigned lineOpt = SvgDrawGetLineStyle(d);
+
+ for (i = 0; i < cnt; i++) {
+ points[i * 2] = pts[i].x;
+ points[i * 2 + 1] = roomSize.y - pts[i].y;
+ }
+
+ if (fillStyle == DRAW_CLOSED || fillStyle == DRAW_FILL) {
+ points[i * 2] = points[0];
+ points[i * 2 + 1] = points[1];
+ cnt++;
+ }
+
+ width = (wDrawWidth)(width >= MINIMUMLINEWIDTH ? width : svgLineWidth[width]);
+ SvgPolyLineCommand((SVGParent *)(d->d), cnt, points, wDrawGetRGB(color),
+ (double)width, fillStyle == DRAW_FILL, lineOpt);
+
+ free(points);
}
/**
@@ -285,14 +284,14 @@ static void SvgDrawFillPoly(
static void SvgDrawFillCircle(drawCmd_p d, coOrd center, DIST_T radius,
wDrawColor color)
{
- SvgCircleCommand((SVGParent *)(d->d),
- center.x,
- roomSize.y - center.y,
- radius,
- 0,
- wDrawGetRGB(color),
- true,
- 0);
+ SvgCircleCommand((SVGParent *)(d->d),
+ center.x,
+ roomSize.y - center.y,
+ radius,
+ 0,
+ wDrawGetRGB(color),
+ true,
+ 0);
}
/**
@@ -309,25 +308,25 @@ static void
SvgDrawRectangle(drawCmd_p d, coOrd corner1, coOrd corner2, wDrawColor color,
drawFill_e fillOpt)
{
- SvgRectCommand((SVGParent *)(d->d),
- corner1.x, roomSize.y - corner1.y,
- corner2.x, roomSize.y - corner2.y,
- wDrawGetRGB(color),
- fillOpt);
+ SvgRectCommand((SVGParent *)(d->d),
+ corner1.x, roomSize.y - corner1.y,
+ corner2.x, roomSize.y - corner2.y,
+ wDrawGetRGB(color),
+ fillOpt);
}
static drawFuncs_t svgDrawFuncs = {
- SvgDrawLine,
- SvgDrawArc,
- SvgDrawString,
- SvgDrawBitmap,
- SvgDrawFillPoly,
- SvgDrawFillCircle,
- SvgDrawRectangle
+ SvgDrawLine,
+ SvgDrawArc,
+ SvgDrawString,
+ SvgDrawBitmap,
+ SvgDrawFillPoly,
+ SvgDrawFillCircle,
+ SvgDrawRectangle
};
static drawCmd_t svgD = {
- NULL, &svgDrawFuncs, 0, 1.0, 0.0, {0.0,0.0}, {0.0,0.0}, Pix2CoOrd, CoOrd2Pix, 100.0
+ NULL, &svgDrawFuncs, 0, 1.0, 0.0, {0.0,0.0}, {0.0,0.0}, Pix2CoOrd, CoOrd2Pix, 100.0
};
/**
@@ -344,30 +343,30 @@ static drawCmd_t svgD = {
static char *
CreateValidId(char *base)
{
- const char *idHead = "id";
- char *out = MyMalloc(strlen(idHead) + strlen(base) + 1);
- char *tmp;
- int j;
-
- strcpy(out, idHead);
- j = strlen(out);
-
- for (unsigned int i = 0; i < strlen(base); i++) {
- if (isblank(base[i])) {
- i++;
- } else {
- out[j++] = base[i];
- }
- }
-
- out[j] = '\0';
-
- // strip off the extension
- tmp = strchr(out, '.');
- if (tmp) {
- *tmp = '\0';
- }
- return (out);
+ const char *idHead = "id";
+ char *out = MyMalloc(strlen(idHead) + strlen(base) + 1);
+ char *tmp;
+ int j;
+
+ strcpy(out, idHead);
+ j = strlen(out);
+
+ for (unsigned int i = 0; i < strlen(base); i++) {
+ if (isblank(base[i])) {
+ i++;
+ } else {
+ out[j++] = base[i];
+ }
+ }
+
+ out[j] = '\0';
+
+ // strip off the extension
+ tmp = strchr(out, '.');
+ if (tmp) {
+ *tmp = '\0';
+ }
+ return (out);
}
/**
@@ -378,17 +377,17 @@ CreateValidId(char *base)
static char * SvgGetId(void)
{
- char *fileName = GetLayoutFilename();
- char *id = NULL;
+ char *fileName = GetLayoutFilename();
+ char *id = NULL;
- if (fileName) {
- id = CreateValidId(fileName);
+ if (fileName) {
+ id = CreateValidId(fileName);
#ifdef UTFCONVERT
- id = Convert2UTF8(id);
+ id = Convert2UTF8(id);
#endif
- }
+ }
- return (id);
+ return (id);
}
/**
@@ -400,17 +399,17 @@ static char * SvgGetId(void)
static void SvgSetTitle(drawCmd_p d)
{
- char *tmp = GetLayoutTitle();
- char *title;
+ char *tmp = GetLayoutTitle();
+ char *title;
- if (tmp) {
- title = MyStrdup(tmp);
+ if (tmp) {
+ title = MyStrdup(tmp);
#ifdef UTFCONVERT
- title = Convert2UTF8(title);
+ title = Convert2UTF8(title);
#endif
- SvgAddTitle((SVGParent *)(d->d), title);
- MyFree(title);
- }
+ SvgAddTitle((SVGParent *)(d->d), title);
+ MyFree(title);
+ }
}
@@ -425,66 +424,67 @@ static void SvgSetTitle(drawCmd_p d)
*/
static int DoExportSVGTracks(
- int cnt,
- char ** fileName,
- void * data)
+ int cnt,
+ char ** fileName,
+ void * data)
{
- DynString command = NaS;
- SVGDocument *svg;
- SVGParent *svgData;
- char *id;
+ DynString command = NaS;
+ SVGDocument *svg;
+ SVGParent *svgData;
+ BOOL_T all = (selectedTrackCount == 0);
+ char *id;
- assert(fileName != NULL);
- assert(cnt == 1);
+ CHECK(fileName != NULL);
+ CHECK(cnt == 1);
- SetCLocale();
- GetLayoutRoomSize(&roomSize);
+ SetCLocale();
+ GetLayoutRoomSize(&roomSize);
- SetCurrentPath(SVGPATHKEY, fileName[ 0 ]);
+ SetCurrentPath(SVGPATHKEY, fileName[ 0 ]);
- svg = SvgCreateDocument();
- id = SvgGetId();
- svgData = SvgPrologue(svg, id, 0, 0.0, 0.0, roomSize.x, roomSize.y);
- MyFree(id);
+ svg = SvgCreateDocument();
+ id = SvgGetId();
+ svgData = SvgPrologue(svg, id, 0, 0.0, 0.0, roomSize.x, roomSize.y);
+ MyFree(id);
- wSetCursor(mainD.d, wCursorWait);
+ wSetCursor(mainD.d, wCursorWait);
// time(&clock);
- svgD.d = (wDraw_p)svgData;
-
- DrawSelectedTracks(&svgD);
- SvgAddCSSStyle((SVGParent *)svgD.d);
- SvgSetTitle(&svgD); // make sure this is the last element
-
- if (!SvgSaveFile(svg, fileName[0])) {
- NoticeMessage(MSG_OPEN_FAIL, _("Cancel"), NULL, "SVG", fileName[0],
- strerror(errno));
-
- SvgDestroyDocument(svg);
- wSetCursor(mainD.d, wCursorNormal);
- SetUserLocale();
- return FALSE;
- }
- SvgDestroyDocument(svg);
- Reset(); /**<TODO: was tut das? */
- wSetCursor(mainD.d, wCursorNormal);
- SetUserLocale();
- return TRUE;
+ svgD.d = (wDraw_p)svgData;
+
+ DrawSelectedTracks(&svgD,all);
+ SvgAddCSSStyle((SVGParent *)svgD.d);
+ SvgSetTitle(&svgD); // make sure this is the last element
+
+ if (!SvgSaveFile(svg, fileName[0])) {
+ NoticeMessage(MSG_OPEN_FAIL, _("Cancel"), NULL, "SVG", fileName[0],
+ strerror(errno));
+
+ SvgDestroyDocument(svg);
+ wSetCursor(mainD.d, wCursorNormal);
+ SetUserLocale();
+ return FALSE;
+ }
+ SvgDestroyDocument(svg);
+ Reset(); /**<TODO: was tut das? */
+ wSetCursor(mainD.d, wCursorNormal);
+ SetUserLocale();
+ return TRUE;
}
/**
* Create and show the dialog for selecting the DXF export filename
*/
-void DoExportSVG(void)
+void DoExportSVG(void * unused)
{
- assert(selectedTrackCount > 0);
+ // CHECK(selectedTrackCount > 0);
- if (exportSVGFile_fs == NULL)
- exportSVGFile_fs = wFilSelCreate(mainW, FS_SAVE, 0, _("Export to SVG"),
- sSVGFilePattern, DoExportSVGTracks, NULL);
+ if (exportSVGFile_fs == NULL)
+ exportSVGFile_fs = wFilSelCreate(mainW, FS_SAVE, 0, _("Export to SVG"),
+ sSVGFilePattern, DoExportSVGTracks, NULL);
- wFilSelect(exportSVGFile_fs, GetCurrentPath(SVGPATHKEY));
+ wFilSelect(exportSVGFile_fs, GetCurrentPath(SVGPATHKEY));
}
diff --git a/app/bin/tbezier.c b/app/bin/tbezier.c
index 53b625e..c5cff99 100644
--- a/app/bin/tbezier.c
+++ b/app/bin/tbezier.c
@@ -14,7 +14,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
*
*****************************************************************************
* BEZIER TRACK (and LINE)
@@ -45,7 +45,6 @@
#include "cundo.h"
#include "layout.h"
#include "fileio.h"
-#include "trackx.h"
EXPORT TRKTYP_T T_BEZIER = -1;
EXPORT TRKTYP_T T_BZRLIN = -1;
@@ -53,6 +52,10 @@ EXPORT TRKTYP_T T_BZRLIN = -1;
static int log_bezier = 0;
static DIST_T GetLengthBezier( track_p );
+static DIST_T BezierMathDistance( coOrd * pos, coOrd p[4], int segments,
+ double * t_value);
+static void BezierSplit(coOrd input[4], coOrd left[4], coOrd right[4],
+ double t);
/****************************************
*
@@ -63,32 +66,36 @@ static DIST_T GetLengthBezier( track_p );
/*
* Run after any changes to the Bezier points
*/
-EXPORT void FixUpBezier(coOrd pos[4], struct extraDataBezier_t * xx, BOOL_T track) {
+EXPORT void FixUpBezier(coOrd pos[4], struct extraDataBezier_t * xx,
+ BOOL_T track)
+{
xx->a0 = NormalizeAngle(FindAngle(pos[1], pos[0]));
xx->a1 = NormalizeAngle(FindAngle(pos[2], pos[3]));
ConvertToArcs(pos, &xx->arcSegs, track, xx->segsColor,
- xx->segsWidth);
+ xx->segsLineWidth);
xx->minCurveRadius = BezierMinRadius(pos,
- xx->arcSegs);
+ xx->arcSegs);
xx->length = BezierLength(pos, xx->arcSegs);
}
/*
* Run after any changes to the Bezier points for a Segment
*/
-EXPORT void FixUpBezierSeg(coOrd pos[4], trkSeg_p p, BOOL_T track) {
+EXPORT void FixUpBezierSeg(coOrd pos[4], trkSeg_p p, BOOL_T track)
+{
p->u.b.angle0 = NormalizeAngle(FindAngle(pos[1], pos[0]));
p->u.b.angle3 = NormalizeAngle(FindAngle(pos[2], pos[3]));
ConvertToArcs(pos, &p->bezSegs, track, p->color,
- p->width);
+ p->lineWidth);
p->u.b.minRadius = BezierMinRadius(pos,
- p->bezSegs);
+ p->bezSegs);
p->u.b.length = BezierLength(pos, p->bezSegs);
}
-EXPORT void FixUpBezierSegs(trkSeg_p p,int segCnt) {
- for (int i=0;i<segCnt;i++,p++) {
+EXPORT void FixUpBezierSegs(trkSeg_p p,int segCnt)
+{
+ for (int i=0; i<segCnt; i++,p++) {
if (p->type == SEG_BEZTRK || p->type == SEG_BEZLIN) {
FixUpBezierSeg(p->u.b.pos,p,p->type == SEG_BEZTRK);
}
@@ -96,48 +103,67 @@ EXPORT void FixUpBezierSegs(trkSeg_p p,int segCnt) {
}
+#if 0
static void GetBezierAngles( ANGLE_T *a0, ANGLE_T *a1, track_p trk )
{
- assert( trk != NULL );
-
- *a0 = NormalizeAngle( GetTrkEndAngle(trk,0) );
- *a1 = NormalizeAngle( GetTrkEndAngle(trk,1) );
-
- LOG( log_bezier, 4, ( "getBezierAngles: = %0.3f %0.3f\n", *a0, *a1 ) )
+ CHECK( trk != NULL );
+
+ *a0 = NormalizeAngle( GetTrkEndAngle(trk,0) );
+ *a1 = NormalizeAngle( GetTrkEndAngle(trk,1) );
+
+ LOG( log_bezier, 4, ( "getBezierAngles: = %0.3f %0.3f\n", *a0, *a1 ) )
}
+#endif
-static void ComputeBezierBoundingBox( track_p trk, struct extraDataBezier_t * xx )
+static void ComputeBezierBoundingBox( track_p trk,
+ struct extraDataBezier_t * xx )
{
- coOrd hi, lo;
- hi.x = lo.x = xx->pos[0].x;
- hi.y = lo.y = xx->pos[0].y;
-
- for (int i=1; i<=3;i++) {
- hi.x = hi.x < xx->pos[i].x ? xx->pos[i].x : hi.x;
- hi.y = hi.y < xx->pos[i].y ? xx->pos[i].y : hi.y;
- lo.x = lo.x > xx->pos[i].x ? xx->pos[i].x : lo.x;
- lo.y = lo.y > xx->pos[i].y ? xx->pos[i].y : lo.y;
- }
- SetBoundingBox( trk, hi, lo );
+ coOrd hi, lo;
+ LWIDTH_T lineWidth = xx->segsLineWidth;
+ LWIDTH_T lwidth = 0;
+
+ if (lineWidth < 0) {
+ lwidth = -lineWidth / mainD.scale;
+ } else {
+ lwidth = lineWidth;
+ }
+
+ hi.x = lo.x = xx->pos[0].x;
+ hi.y = lo.y = xx->pos[0].y;
+
+ for (int i=1; i<=3; i++) {
+ hi.x = hi.x < xx->pos[i].x ? xx->pos[i].x : hi.x;
+ hi.y = hi.y < xx->pos[i].y ? xx->pos[i].y : hi.y;
+ lo.x = lo.x > xx->pos[i].x ? xx->pos[i].x : lo.x;
+ lo.y = lo.y > xx->pos[i].y ? xx->pos[i].y : lo.y;
+ }
+ lo.x -= lwidth;
+ lo.y -= lwidth;
+ hi.x += lwidth;
+ hi.y += lwidth;
+
+ SetBoundingBox( trk, hi, lo );
}
static DIST_T DistanceBezier( track_p t, coOrd * p );
DIST_T BezierDescriptionDistance(
- coOrd pos,
- track_p trk,
- coOrd * dpos,
- BOOL_T show_hidden,
- BOOL_T * hidden)
+ coOrd pos,
+ track_p trk,
+ coOrd * dpos,
+ BOOL_T show_hidden,
+ BOOL_T * hidden)
{
coOrd p1;
- if (hidden) *hidden = FALSE;
- if ( GetTrkType( trk ) != T_BEZIER || ((( GetTrkBits( trk ) & TB_HIDEDESC ) != 0 ) && !show_hidden))
+ if (hidden) { *hidden = FALSE; }
+ if ( GetTrkType( trk ) != T_BEZIER
+ || ((( GetTrkBits( trk ) & TB_HIDEDESC ) != 0 ) && !show_hidden)) {
return DIST_INF;
+ }
struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_BEZIER, extraDataBezier_t);
- if (( GetTrkBits( trk ) & TB_HIDEDESC ) != 0 ) xx->descriptionOff = zero;
+ if (( GetTrkBits( trk ) & TB_HIDEDESC ) != 0 ) { xx->descriptionOff = zero; }
coOrd end0, end0off, end1, end1off;
end0 = xx->pos[0];
@@ -150,64 +176,71 @@ DIST_T BezierDescriptionDistance(
p1.x = (end1off.x - end0off.x)*(xx->descriptionOff.x+0.5) + end0off.x;
p1.y = (end1off.y - end0off.y)*(xx->descriptionOff.x+0.5) + end0off.y;
- if (hidden) *hidden = (GetTrkBits( trk ) & TB_HIDEDESC);
+ if (hidden) { *hidden = (GetTrkBits( trk ) & TB_HIDEDESC); }
*dpos = p1;
coOrd tpos = pos;
- if (DistanceBezier(trk,&tpos)<FindDistance( p1, pos ))
+ if (DistanceBezier(trk,&tpos)<FindDistance( p1, pos )) {
return DistanceBezier(trk,&pos);
+ }
return FindDistance( p1, pos );
}
static void DrawBezierDescription(
- track_p trk,
- drawCmd_p d,
- wDrawColor color )
+ track_p trk,
+ drawCmd_p d,
+ wDrawColor color )
{
- struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
- wFont_p fp;
- coOrd epos0,epos1;
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
+// wFont_p fp;
+ coOrd epos0,epos1;
- if (layoutLabels == 0)
+ if (layoutLabels == 0) {
return;
- if ((labelEnable&LABELENABLE_TRKDESC)==0)
+ }
+ if ((labelEnable&LABELENABLE_TRKDESC)==0) {
return;
+ }
- epos0 = xx->pos[0];
- epos1 = xx->pos[3];
- ANGLE_T a = FindAngle(epos0,epos1);
- Translate(&epos0,epos0,a+90,xx->descriptionOff.y);
- Translate(&epos1,epos1,a+90,xx->descriptionOff.y);
- fp = wStandardFont( F_TIMES, FALSE, FALSE );
- sprintf( message, _("Bez: L%s A%0.3f trk_len=%s min_rad=%s"),
- FormatDistance(FindDistance(xx->pos[0],xx->pos[3])),
- FindAngle(xx->pos[0],xx->pos[3]),
- FormatDistance(xx->length), FormatDistance(xx->minCurveRadius>10000?0.0:xx->minCurveRadius));
- DrawLine(d,xx->pos[0],epos0,0,color);
- DrawLine(d,xx->pos[3],epos1,0,color);
- DrawDimLine( d, epos0, epos1, message, (wFontSize_t)descriptionFontSize, xx->descriptionOff.x+0.5, 0, color, 0x00 );
-
- if (GetTrkBits( trk ) & TB_DETAILDESC) {
- coOrd details_pos;
- details_pos.x = (epos1.x - epos0.x)*(xx->descriptionOff.x+0.5) + epos0.x;
- details_pos.y = (epos1.y - epos0.y)*(xx->descriptionOff.x+0.5) + epos0.y -(2*descriptionFontSize/mainD.dpi);
+ epos0 = xx->pos[0];
+ epos1 = xx->pos[3];
+ ANGLE_T a = FindAngle(epos0,epos1);
+ Translate(&epos0,epos0,a+90,xx->descriptionOff.y);
+ Translate(&epos1,epos1,a+90,xx->descriptionOff.y);
+ /*fp = */wStandardFont( F_TIMES, FALSE, FALSE );
+ sprintf( message, _("Bez: L%s A%0.3f trk_len=%s min_rad=%s"),
+ FormatDistance(FindDistance(xx->pos[0],xx->pos[3])),
+ FindAngle(xx->pos[0],xx->pos[3]),
+ FormatDistance(xx->length),
+ FormatDistance(xx->minCurveRadius>10000?0.0:xx->minCurveRadius));
+ DrawLine(d,xx->pos[0],epos0,0,color);
+ DrawLine(d,xx->pos[3],epos1,0,color);
+ DrawDimLine( d, epos0, epos1, message, (wFontSize_t)descriptionFontSize,
+ xx->descriptionOff.x+0.5, 0, color, 0x00 );
+
+ if (GetTrkBits( trk ) & TB_DETAILDESC) {
+ coOrd details_pos;
+ details_pos.x = (epos1.x - epos0.x)*(xx->descriptionOff.x+0.5) + epos0.x;
+ details_pos.y = (epos1.y - epos0.y)*(xx->descriptionOff.x+0.5) + epos0.y -
+ (2*descriptionFontSize/mainD.dpi);
AddTrkDetails(d, trk, details_pos, xx->length, color);
- }
+ }
}
STATUS_T BezierDescriptionMove(
- track_p trk,
- wAction_t action,
- coOrd pos )
+ track_p trk,
+ wAction_t action,
+ coOrd pos )
{
- static coOrd p0,p1;
- static BOOL_T editState = FALSE;
+// static coOrd p0,p1;
+// static BOOL_T editState = FALSE;
- if (GetTrkType(trk) != T_BEZIER) return C_TERMINATE;
+ if (GetTrkType(trk) != T_BEZIER) { return C_TERMINATE; }
struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_BEZIER, extraDataBezier_t);
ANGLE_T ap;
coOrd end0, end1;
@@ -216,9 +249,10 @@ STATUS_T BezierDescriptionMove(
ap = NormalizeAngle(FindAngle(end0,pos)-FindAngle(end0,end1));
xx->descriptionOff.y = FindDistance(end0,pos)*sin(D2R(ap));
- xx->descriptionOff.x = -0.5 + FindDistance(end0,pos)*cos(D2R(ap))/FindDistance(end0,end1);
- if (xx->descriptionOff.x > 0.5) xx->descriptionOff.x = 0.5;
- if (xx->descriptionOff.x < -0.5) xx->descriptionOff.x = -0.5;
+ xx->descriptionOff.x = -0.5 + FindDistance(end0,
+ pos)*cos(D2R(ap))/FindDistance(end0,end1);
+ if (xx->descriptionOff.x > 0.5) { xx->descriptionOff.x = 0.5; }
+ if (xx->descriptionOff.x < -0.5) { xx->descriptionOff.x = -0.5; }
return C_CONTINUE;
}
@@ -230,119 +264,127 @@ STATUS_T BezierDescriptionMove(
*/
static struct {
- coOrd pos[4];
- FLOAT_T elev[2];
- FLOAT_T length;
- DIST_T minRadius;
- FLOAT_T grade;
- unsigned int layerNumber;
- ANGLE_T angle[2];
- DIST_T radius[2];
- coOrd center[2];
- dynArr_t segs;
- long width;
- wDrawColor color;
- long lineType;
- } bezData;
+ coOrd pos[4];
+ FLOAT_T elev[2];
+ FLOAT_T length;
+ DIST_T minRadius;
+ FLOAT_T grade;
+ unsigned int layerNumber;
+ ANGLE_T angle[2];
+ DIST_T radius[2];
+ coOrd center[2];
+ dynArr_t segs;
+ LWIDTH_T lineWidth;
+ wDrawColor color;
+ long lineType;
+} bezData;
typedef enum { P0, A0, R0, C0, Z0, CP1, CP2, P1, A1, R1, C1, Z1, RA, LN, GR, LT, WI, CO, LY} crvDesc_e;
static descData_t bezDesc[] = {
-/*P0*/ { DESC_POS, N_("End Pt 1: X,Y"), &bezData.pos[0] },
-/*A0*/ { DESC_ANGLE, N_("End Angle"), &bezData.angle[0] },
-/*R0*/ { DESC_DIM, N_("Radius"), &bezData.radius[0] },
-/*C0*/ { DESC_POS, N_("Center X,Y"), &bezData.center[0]},
-/*Z0*/ { DESC_DIM, N_("Z1"), &bezData.elev[0] },
-/*CP1*/ { DESC_POS, N_("Ctl Pt 1: X,Y"), &bezData.pos[1] },
-/*CP2*/ { DESC_POS, N_("Ctl Pt 2: X,Y"), &bezData.pos[2] },
-/*P1*/ { DESC_POS, N_("End Pt 2: X,Y"), &bezData.pos[3] },
-/*A1*/ { DESC_ANGLE, N_("End Angle"), &bezData.angle[1] },
-/*R1*/ { DESC_DIM, N_("Radius"), &bezData.radius[1] },
-/*C1*/ { DESC_POS, N_("Center X,Y"), &bezData.center[1]},
-/*Z1*/ { DESC_DIM, N_("Z2"), &bezData.elev[1] },
-/*RA*/ { DESC_DIM, N_("MinRadius"), &bezData.radius },
-/*LN*/ { DESC_DIM, N_("Length"), &bezData.length },
-/*GR*/ { DESC_FLOAT, N_("Grade"), &bezData.grade },
-/*LT*/ { DESC_LIST, N_("Line Type"), &bezData.lineType},
-/*WI*/ { DESC_LONG, N_("Line Width"), &bezData.width},
-/*CO*/ { DESC_COLOR, N_("Line Color"), &bezData.color},
-/*LY*/ { DESC_LAYER, N_("Layer"), &bezData.layerNumber },
- { DESC_NULL } };
-
-static void UpdateBezier( track_p trk, int inx, descData_p descUpd, BOOL_T final )
+ /*P0*/ { DESC_POS, N_("End Pt 1: X,Y"), &bezData.pos[0] },
+ /*A0*/ { DESC_ANGLE, N_("End Angle"), &bezData.angle[0] },
+ /*R0*/ { DESC_DIM, N_("Radius"), &bezData.radius[0] },
+ /*C0*/ { DESC_POS, N_("Center X,Y"), &bezData.center[0]},
+ /*Z0*/ { DESC_DIM, N_("Z1"), &bezData.elev[0] },
+ /*CP1*/ { DESC_POS, N_("Ctl Pt 1: X,Y"), &bezData.pos[1] },
+ /*CP2*/ { DESC_POS, N_("Ctl Pt 2: X,Y"), &bezData.pos[2] },
+ /*P1*/ { DESC_POS, N_("End Pt 2: X,Y"), &bezData.pos[3] },
+ /*A1*/ { DESC_ANGLE, N_("End Angle"), &bezData.angle[1] },
+ /*R1*/ { DESC_DIM, N_("Radius"), &bezData.radius[1] },
+ /*C1*/ { DESC_POS, N_("Center X,Y"), &bezData.center[1]},
+ /*Z1*/ { DESC_DIM, N_("Z2"), &bezData.elev[1] },
+ /*RA*/ { DESC_DIM, N_("MinRadius"), &bezData.radius },
+ /*LN*/ { DESC_DIM, N_("Length"), &bezData.length },
+ /*GR*/ { DESC_FLOAT, N_("Grade"), &bezData.grade },
+ /*LT*/ { DESC_LIST, N_("Line Type"), &bezData.lineType},
+ /*WI*/ { DESC_FLOAT, N_("Line Width"), &bezData.lineWidth},
+ /*CO*/ { DESC_COLOR, N_("Line Color"), &bezData.color},
+ /*LY*/ { DESC_LAYER, N_("Layer"), &bezData.layerNumber },
+ { DESC_NULL }
+};
+
+static void UpdateBezier( track_p trk, int inx, descData_p descUpd,
+ BOOL_T final )
{
- struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
BOOL_T updateEndPts;
EPINX_T ep;
ANGLE_T angle1, angle2;
BOOL_T is_Track = (GetTrkType(trk)==T_BEZIER);
- if ( inx == -1 )
+ if ( inx == -1 ) {
return;
+ }
updateEndPts = FALSE;
UndrawNewTrack( trk );
switch ( inx ) {
- case P0:
- updateEndPts = TRUE;
- xx->pos[0] = bezData.pos[0];
- xx->a0 = bezData.angle[1] = FindAngle(xx->pos[1],xx->pos[0]);
- bezDesc[A0].mode |= DESC_CHANGE;
- bezDesc[P0].mode |= DESC_CHANGE;
- /* no break */
- case P1:
- updateEndPts = TRUE;
- xx->pos[3]= bezData.pos[3];
- xx->a1 = bezData.angle[1] = FindAngle(xx->pos[2],xx->pos[3]);
- bezDesc[A1].mode |= DESC_CHANGE;
- bezDesc[P1].mode |= DESC_CHANGE;
- break;
- case CP1:
- if (is_Track) {
+ case P0:
+ updateEndPts = TRUE;
+ xx->pos[0] = bezData.pos[0];
+ xx->a0 = bezData.angle[1] = FindAngle(xx->pos[1],xx->pos[0]);
+ bezDesc[A0].mode |= DESC_CHANGE;
+ bezDesc[P0].mode |= DESC_CHANGE;
+ /* no break */
+ case P1:
+ updateEndPts = TRUE;
+ xx->pos[3]= bezData.pos[3];
+ xx->a1 = bezData.angle[1] = FindAngle(xx->pos[2],xx->pos[3]);
+ bezDesc[A1].mode |= DESC_CHANGE;
+ bezDesc[P1].mode |= DESC_CHANGE;
+ break;
+ case CP1:
+ if (is_Track) {
if (GetTrkEndTrk(trk,0)) {
angle1 = NormalizeAngle(GetTrkEndAngle(trk,0));
angle2 = DifferenceBetweenAngles(FindAngle(bezData.pos[1], xx->pos[0]),angle1);
- if (fabs(angle2)<90)
- Translate( &bezData.pos[1], xx->pos[0], angle1, -FindDistance( xx->pos[0], bezData.pos[1] )*cos(D2R(angle2)));
- else bezData.pos[1] = xx->pos[1];
+ if (fabs(angle2)<90) {
+ Translate( &bezData.pos[1], xx->pos[0], angle1, -FindDistance( xx->pos[0],
+ bezData.pos[1] )*cos(D2R(angle2)));
+ } else { bezData.pos[1] = xx->pos[1]; }
}
- }
- xx->pos[1] = bezData.pos[1];
- xx->a0 = bezData.angle[0] = FindAngle(xx->pos[1],xx->pos[0]);
- bezDesc[A0].mode |= DESC_CHANGE;
- bezDesc[CP1].mode |= DESC_CHANGE;
- updateEndPts = TRUE;
- break;
- case CP2:
- if (is_Track) {
+ }
+ xx->pos[1] = bezData.pos[1];
+ xx->a0 = bezData.angle[0] = FindAngle(xx->pos[1],xx->pos[0]);
+ bezDesc[A0].mode |= DESC_CHANGE;
+ bezDesc[CP1].mode |= DESC_CHANGE;
+ updateEndPts = TRUE;
+ break;
+ case CP2:
+ if (is_Track) {
if (GetTrkEndTrk(trk,1)) {
angle1 = NormalizeAngle(GetTrkEndAngle(trk,1));
angle2 = DifferenceBetweenAngles(FindAngle(bezData.pos[2], xx->pos[3]),angle1);
- if (fabs(angle2)<90)
- Translate( &bezData.pos[2], xx->pos[3], angle1, -FindDistance( xx->pos[3], bezData.pos[2] )*cos(D2R(angle2)));
- else bezData.pos[2] = xx->pos[2];
+ if (fabs(angle2)<90) {
+ Translate( &bezData.pos[2], xx->pos[3], angle1, -FindDistance( xx->pos[3],
+ bezData.pos[2] )*cos(D2R(angle2)));
+ } else { bezData.pos[2] = xx->pos[2]; }
}
- }
- xx->pos[2] = bezData.pos[2];
- xx->a1 = bezData.angle[1] = FindAngle(xx->pos[2],xx->pos[3]);
- bezDesc[A1].mode |= DESC_CHANGE;
- bezDesc[CP2].mode |= DESC_CHANGE;
- updateEndPts = TRUE;
- break;
- case Z0:
+ }
+ xx->pos[2] = bezData.pos[2];
+ xx->a1 = bezData.angle[1] = FindAngle(xx->pos[2],xx->pos[3]);
+ bezDesc[A1].mode |= DESC_CHANGE;
+ bezDesc[CP2].mode |= DESC_CHANGE;
+ updateEndPts = TRUE;
+ break;
+ case Z0:
case Z1:
ep = (inx==Z0?0:1);
- UpdateTrkEndElev( trk, ep, GetTrkEndElevUnmaskedMode(trk,ep), bezData.elev[ep], NULL );
+ UpdateTrkEndElev( trk, ep, GetTrkEndElevUnmaskedMode(trk,ep), bezData.elev[ep],
+ NULL );
ComputeElev( trk, 1-ep, FALSE, &bezData.elev[1-ep], NULL, TRUE );
- if ( bezData.length > minLength )
+ if ( bezData.length > minLength ) {
bezData.grade = fabs( (bezData.elev[0]-bezData.elev[1])/bezData.length )*100.0;
- else
+ } else {
bezData.grade = 0.0;
+ }
bezDesc[GR].mode |= DESC_CHANGE;
bezDesc[inx==Z0?Z1:Z0].mode |= DESC_CHANGE;
- return;
+ return;
case LY:
SetTrkLayer( trk, bezData.layerNumber);
break;
case WI:
- xx->segsWidth = bezData.width/75.0;
+ xx->segsLineWidth = bezData.lineWidth;
break;
case CO:
xx->segsColor = bezData.color;
@@ -351,32 +393,35 @@ static void UpdateBezier( track_p trk, int inx, descData_p descUpd, BOOL_T final
xx->lineType = bezData.lineType;
break;
default:
- AbortProg( "updateBezier: Bad inx %d", inx );
+ CHECKMSG( FALSE, ( "updateBezier: Bad inx %d", inx ) );
}
- ConvertToArcs(xx->pos, &xx->arcSegs, IsTrack(trk)?TRUE:FALSE, xx->segsColor, xx->segsWidth);
+ ConvertToArcs(xx->pos, &xx->arcSegs, IsTrack(trk)?TRUE:FALSE, xx->segsColor,
+ xx->segsLineWidth);
trackParams_t params;
- for (int i=0;i<2;i++) {
- GetTrackParams(0,trk,xx->pos[i],&params);
- bezData.radius[i] = params.arcR;
- bezData.center[i] = params.arcP;
- }
+ for (int i=0; i<2; i++) {
+ GetTrackParams(0,trk,xx->pos[i],&params);
+ bezData.radius[i] = params.arcR;
+ bezData.center[i] = params.arcP;
+ }
if (updateEndPts && is_Track) {
- if ( GetTrkEndTrk(trk,0) == NULL ) {
- SetTrkEndPoint( trk, 0, bezData.pos[0], NormalizeAngle( FindAngle(bezData.pos[1], bezData.pos[0]) ) );
- bezData.angle[0] = GetTrkEndAngle(trk,0);
- bezDesc[A0].mode |= DESC_CHANGE;
- GetTrackParams(PARAMS_CORNU,trk,xx->pos[0],&params);
- bezData.radius[0] = params.arcR;
- bezData.center[0] = params.arcP;
- }
- if ( GetTrkEndTrk(trk,1) == NULL ) {
- SetTrkEndPoint( trk, 1, bezData.pos[3], NormalizeAngle( FindAngle(bezData.pos[2], bezData.pos[3]) ) );
- bezData.angle[1] = GetTrkEndAngle(trk,1);
- bezDesc[A1].mode |= DESC_CHANGE;
- GetTrackParams(PARAMS_CORNU,trk,xx->pos[1],&params);
- bezData.radius[1] = params.arcR;
- bezData.center[1] = params.arcP;
- }
+ if ( GetTrkEndTrk(trk,0) == NULL ) {
+ SetTrkEndPoint( trk, 0, bezData.pos[0],
+ NormalizeAngle( FindAngle(bezData.pos[1], bezData.pos[0]) ) );
+ bezData.angle[0] = GetTrkEndAngle(trk,0);
+ bezDesc[A0].mode |= DESC_CHANGE;
+ GetTrackParams(PARAMS_CORNU,trk,xx->pos[0],&params);
+ bezData.radius[0] = params.arcR;
+ bezData.center[0] = params.arcP;
+ }
+ if ( GetTrkEndTrk(trk,1) == NULL ) {
+ SetTrkEndPoint( trk, 1, bezData.pos[3],
+ NormalizeAngle( FindAngle(bezData.pos[2], bezData.pos[3]) ) );
+ bezData.angle[1] = GetTrkEndAngle(trk,1);
+ bezDesc[A1].mode |= DESC_CHANGE;
+ GetTrackParams(PARAMS_CORNU,trk,xx->pos[1],&params);
+ bezData.radius[1] = params.arcR;
+ bezData.center[1] = params.arcP;
+ }
}
FixUpBezier(xx->pos, xx, IsTrack(trk));
ComputeBezierBoundingBox(trk, xx);
@@ -385,21 +430,23 @@ static void UpdateBezier( track_p trk, int inx, descData_p descUpd, BOOL_T final
static void DescribeBezier( track_p trk, char * str, CSIZE_T len )
{
- struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
DIST_T d;
int fix0 = 0, fix1 = 0;
-
+
d = xx->length;
- sprintf( str, _("Bezier %s(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,%0.3f] CP1=[%0.3f,%0.3f] CP2=[%0.3f, %0.3f]"),
- GetTrkType(trk)==T_BEZIER?"Track":"Line",
- GetTrkIndex(trk),
- GetTrkLayer(trk)+1,
- FormatDistance(xx->minCurveRadius),
- FormatDistance(d),
- PutDim(xx->pos[0].x),PutDim(xx->pos[0].y),
- PutDim(xx->pos[3].x),PutDim(xx->pos[3].y),
- PutDim(xx->pos[1].x),PutDim(xx->pos[1].y),
- PutDim(xx->pos[2].x),PutDim(xx->pos[2].y));
+ sprintf( str,
+ _("Bezier %s(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,%0.3f] CP1=[%0.3f,%0.3f] CP2=[%0.3f, %0.3f]"),
+ GetTrkType(trk)==T_BEZIER?"Track":"Line",
+ GetTrkIndex(trk),
+ GetTrkLayer(trk)+1,
+ FormatDistance(xx->minCurveRadius),
+ FormatDistance(d),
+ PutDim(xx->pos[0].x),PutDim(xx->pos[0].y),
+ PutDim(xx->pos[3].x),PutDim(xx->pos[3].y),
+ PutDim(xx->pos[1].x),PutDim(xx->pos[1].y),
+ PutDim(xx->pos[2].x),PutDim(xx->pos[2].y));
if (GetTrkType(trk) == T_BEZIER) {
fix0 = GetTrkEndTrk(trk,0)!=NULL;
@@ -408,47 +455,47 @@ static void DescribeBezier( track_p trk, char * str, CSIZE_T len )
bezData.length = GetLengthBezier(trk);
bezData.minRadius = xx->minCurveRadius;
- if (bezData.minRadius >= DIST_INF) bezData.minRadius = 0;
- bezData.layerNumber = GetTrkLayer(trk);
- bezData.pos[0] = xx->pos[0];
- bezData.pos[1] = xx->pos[1];
- bezData.pos[2] = xx->pos[2];
- bezData.pos[3] = xx->pos[3];
- bezData.angle[0] = xx->a0;
- bezData.angle[1] = xx->a1;
- trackParams_t params;
- GetTrackParams(PARAMS_CORNU,trk,xx->pos[0],&params);
- bezData.radius[0] = params.arcR;
- bezData.center[0] = params.arcP;
- GetTrackParams(PARAMS_CORNU,trk,xx->pos[3],&params);
- bezData.radius[1] = params.arcR;
- bezData.center[1] = params.arcP;
-
- if (GetTrkType(trk) == T_BEZIER) {
+ if (bezData.minRadius >= DIST_INF) { bezData.minRadius = 0; }
+ bezData.layerNumber = GetTrkLayer(trk);
+ bezData.pos[0] = xx->pos[0];
+ bezData.pos[1] = xx->pos[1];
+ bezData.pos[2] = xx->pos[2];
+ bezData.pos[3] = xx->pos[3];
+ bezData.angle[0] = xx->a0;
+ bezData.angle[1] = xx->a1;
+ trackParams_t params;
+ GetTrackParams(PARAMS_CORNU,trk,xx->pos[0],&params);
+ bezData.radius[0] = params.arcR;
+ bezData.center[0] = params.arcP;
+ GetTrackParams(PARAMS_CORNU,trk,xx->pos[3],&params);
+ bezData.radius[1] = params.arcR;
+ bezData.center[1] = params.arcP;
+
+ if (GetTrkType(trk) == T_BEZIER) {
ComputeElev( trk, 0, FALSE, &bezData.elev[0], NULL, FALSE );
ComputeElev( trk, 1, FALSE, &bezData.elev[1], NULL, FALSE );
-
- if ( bezData.length > minLength )
+
+ if ( bezData.length > minLength ) {
bezData.grade = fabs( (bezData.elev[0]-bezData.elev[1])/bezData.length )*100.0;
- else
+ } else {
bezData.grade = 0.0;
- }
+ }
+ }
bezDesc[P0].mode = fix0?DESC_RO:0;
bezDesc[P1].mode = fix1?DESC_RO:0;
bezDesc[LN].mode = DESC_RO;
- bezDesc[CP1].mode = 0;
- bezDesc[CP2].mode = 0;
- if (GetTrkType(trk) == T_BEZIER) {
- bezDesc[Z0].mode = EndPtIsDefinedElev(trk,0)?0:DESC_RO;
+ bezDesc[CP1].mode = 0;
+ bezDesc[CP2].mode = 0;
+ if (GetTrkType(trk) == T_BEZIER) {
+ bezDesc[Z0].mode = EndPtIsDefinedElev(trk,0)?0:DESC_RO;
bezDesc[Z1].mode = EndPtIsDefinedElev(trk,1)?0:DESC_RO;
bezDesc[LT].mode = DESC_IGNORE;
- }
- else {
- bezDesc[Z0].mode = bezDesc[Z1].mode = DESC_IGNORE;
- bezDesc[LT].mode = 0;
- bezData.lineType = xx->lineType;
- }
+ } else {
+ bezDesc[Z0].mode = bezDesc[Z1].mode = DESC_IGNORE;
+ bezDesc[LT].mode = 0;
+ bezData.lineType = xx->lineType;
+ }
bezDesc[A0].mode = DESC_RO;
bezDesc[A1].mode = DESC_RO;
bezDesc[C0].mode = DESC_RO;
@@ -456,16 +503,16 @@ static void DescribeBezier( track_p trk, char * str, CSIZE_T len )
bezDesc[R0].mode = DESC_RO;
bezDesc[R1].mode = DESC_RO;
bezDesc[GR].mode = DESC_RO;
- bezDesc[RA].mode = DESC_RO;
+ bezDesc[RA].mode = DESC_RO;
bezDesc[LY].mode = DESC_NOREDRAW;
- bezData.width = (long)floor(xx->segsWidth*75.0+0.5);
+ bezData.lineWidth = xx->segsLineWidth;
bezDesc[WI].mode = GetTrkType(trk) == T_BEZIER?DESC_IGNORE:0;
bezData.color = xx->segsColor;
bezDesc[CO].mode = GetTrkType(trk) == T_BEZIER?DESC_IGNORE:0;
-
- if (GetTrkType(trk) == T_BEZIER)
+
+ if (GetTrkType(trk) == T_BEZIER) {
DoDescribe( _("Bezier Track"), trk, bezDesc, UpdateBezier );
- else {
+ } else {
DoDescribe( _("Bezier Line"), trk, bezDesc, UpdateBezier );
if (bezDesc[LT].control0!=NULL) {
wListClear( (wList_p)bezDesc[LT].control0 );
@@ -482,9 +529,11 @@ static void DescribeBezier( track_p trk, char * str, CSIZE_T len )
}
-EXPORT void SetBezierLineType( track_p trk, int width ) {
+EXPORT void SetBezierLineType( track_p trk, int width )
+{
if (GetTrkType(trk) == T_BZRLIN) {
- struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_BZRLIN, extraDataBezier_t);
+ struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_BZRLIN,
+ extraDataBezier_t);
switch(width) {
case 0:
xx->lineType = DRAWLINESOLID;
@@ -518,7 +567,7 @@ static DIST_T DistanceBezier( track_p t, coOrd * p )
DIST_T d = DIST_INF;
coOrd p2 = xx->pos[0]; //Set initial point
segProcData_t segProcData;
- for (int i = 0;i<xx->arcSegs.cnt;i++) {
+ for (int i = 0; i<xx->arcSegs.cnt; i++) {
segProcData.distance.pos1 = * p;
SegProc(SEGPROC_DISTANCE,&DYNARR_N(trkSeg_t,xx->arcSegs,i),&segProcData);
if (segProcData.distance.dd<d) {
@@ -526,7 +575,7 @@ static DIST_T DistanceBezier( track_p t, coOrd * p )
p2 = segProcData.distance.pos1;
}
}
- * p = p2;
+ * p = p2;
return d;
}
@@ -540,25 +589,24 @@ static void DrawBezier( track_p t, drawCmd_p d, wDrawColor color )
unsigned long NotSolid = ~(DC_NOTSOLIDLINE);
d->options &= NotSolid;
if (xx->lineType == DRAWLINESOLID) {}
- else if (xx->lineType == DRAWLINEDASH) d->options |= DC_DASH;
- else if (xx->lineType == DRAWLINEDOT) d->options |= DC_DOT;
- else if (xx->lineType == DRAWLINEDASHDOT) d->options |= DC_DASHDOT;
- else if (xx->lineType == DRAWLINEDASHDOTDOT) d->options |= DC_DASHDOTDOT;
- else if (xx->lineType == DRAWLINECENTER) d->options |= DC_CENTER;
- else if (xx->lineType == DRAWLINEPHANTOM) d->options |= DC_PHANTOM;
- DrawSegsO(d,t,zero,0.0,xx->arcSegs.ptr,xx->arcSegs.cnt, 0.0, color, 0);
+ else if (xx->lineType == DRAWLINEDASH) { d->options |= DC_DASH; }
+ else if (xx->lineType == DRAWLINEDOT) { d->options |= DC_DOT; }
+ else if (xx->lineType == DRAWLINEDASHDOT) { d->options |= DC_DASHDOT; }
+ else if (xx->lineType == DRAWLINEDASHDOTDOT) { d->options |= DC_DASHDOTDOT; }
+ else if (xx->lineType == DRAWLINECENTER) { d->options |= DC_CENTER; }
+ else if (xx->lineType == DRAWLINEPHANTOM) { d->options |= DC_PHANTOM; }
+ DrawSegsDA(d,t,zero,0.0,&xx->arcSegs, 0.0, color, 0);
d->options &= NotSolid;
return;
}
if ( ((d->options&DC_SIMPLE)==0) &&
- (labelWhen == 2 || (labelWhen == 1 && (d->options&DC_PRINT))) &&
- labelScale >= d->scale &&
- ( GetTrkBits( t ) & TB_HIDEDESC ) == 0 ) {
+ (labelWhen == 2 || (labelWhen == 1 && (d->options&DC_PRINT))) &&
+ labelScale >= d->scale &&
+ ( GetTrkBits( t ) & TB_HIDEDESC ) == 0 ) {
DrawBezierDescription( t, d, color );
}
- DIST_T scale2rail = (d->options&DC_PRINT)?(twoRailScale*2+1):twoRailScale;
- DrawSegsO(d,t,zero,0.0,xx->arcSegs.ptr,xx->arcSegs.cnt, GetTrkGauge(t), color, widthOptions);
+ DrawSegsDA(d,t,zero,0.0,&xx->arcSegs, GetTrkGauge(t), color, widthOptions);
DrawEndPt( d, t, 0, color );
DrawEndPt( d, t, 1, color );
}
@@ -567,44 +615,44 @@ static void DeleteBezier( track_p t )
{
struct extraDataBezier_t *xx = GET_EXTRA_DATA(t, T_NOTRACK, extraDataBezier_t);
- for (int i=0;i<xx->arcSegs.cnt;i++) {
+ // NOTE - should use trkSeg_p so we free seg in orig trk, instead of copy
+ for (int i=0; i<xx->arcSegs.cnt; i++) {
trkSeg_t s = DYNARR_N(trkSeg_t,xx->arcSegs,i);
if (s.type == SEG_BEZTRK || s.type == SEG_BEZLIN) {
- if (s.bezSegs.ptr) MyFree(s.bezSegs.ptr);
- s.bezSegs.max = 0;
- s.bezSegs.cnt = 0;
- s.bezSegs.ptr = NULL;
+ DYNARR_FREE( trkSeg_t, s.bezSegs );
}
}
- if (xx->arcSegs.ptr && !xx->arcSegs.max)
- MyFree(xx->arcSegs.ptr);
- xx->arcSegs.max = 0;
- xx->arcSegs.cnt = 0;
- xx->arcSegs.ptr = NULL;
+ // NOTE orig tests !xx->arcSegs.max ???
+ DYNARR_FREE( trkSeg_t, xx->arcSegs );
}
static BOOL_T WriteBezier( track_p t, FILE * f )
{
struct extraDataBezier_t *xx = GET_EXTRA_DATA(t, T_NOTRACK, extraDataBezier_t);
+ int bits;
long options;
BOOL_T rc = TRUE;
BOOL_T track =(GetTrkType(t)==T_BEZIER);
options = GetTrkWidth(t) & 0x0F;
- if ( ( GetTrkBits(t) & TB_HIDEDESC ) == 0 ) options |= 0x80;
- rc &= fprintf(f, "%s %d %u %ld %ld %0.6f %s %d %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %d %0.6f %0.6f \n",
- track?"BEZIER":"BZRLIN",GetTrkIndex(t), GetTrkLayer(t), (long)options, wDrawGetRGB(xx->segsColor), xx->segsWidth,
- GetTrkScaleName(t), GetTrkVisible(t)|(GetTrkNoTies(t)?1<<2:0)|(GetTrkBridge(t)?1<<3:0),
- xx->pos[0].x, xx->pos[0].y,
- xx->pos[1].x, xx->pos[1].y,
- xx->pos[2].x, xx->pos[2].y,
- xx->pos[3].x, xx->pos[3].y,
- xx->lineType,
- xx->descriptionOff.x, xx->descriptionOff.y )>0;
+ if ( ( GetTrkBits(t) & TB_HIDEDESC ) == 0 ) { options |= 0x80; }
+ bits = GetTrkVisible(t)|(GetTrkNoTies(t)?1<<2:0)|(GetTrkBridge(t)?1<<3:0)|
+ (GetTrkRoadbed(t)?1<<4:0);
+ rc &= fprintf(f,
+ "%s %d %u %ld %ld %0.6f %s %d %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %d %0.6f %0.6f \n",
+ track?"BEZIER":"BZRLIN",GetTrkIndex(t), GetTrkLayer(t), (long)options,
+ wDrawGetRGB(xx->segsColor), xx->segsLineWidth,
+ GetTrkScaleName(t), bits,
+ xx->pos[0].x, xx->pos[0].y,
+ xx->pos[1].x, xx->pos[1].y,
+ xx->pos[2].x, xx->pos[2].y,
+ xx->pos[3].x, xx->pos[3].y,
+ xx->lineType,
+ xx->descriptionOff.x, xx->descriptionOff.y )>0;
if (track) {
- rc &= WriteEndPt( f, t, 0 );
- rc &= WriteEndPt( f, t, 1 );
- }
- rc &= WriteSegs( f, xx->arcSegs.cnt, xx->arcSegs.ptr );
+ rc &= WriteEndPt( f, t, 0 );
+ rc &= WriteEndPt( f, t, 1 );
+ }
+ rc &= WriteSegs( f, xx->arcSegs.cnt, &DYNARR_N(trkSeg_t,xx->arcSegs,0) );
return rc;
}
@@ -619,141 +667,154 @@ static BOOL_T ReadBezier( char * line )
wIndex_t layer;
long options;
int lt;
- char * cp = NULL;
+// char * cp = NULL;
unsigned long rgb;
- DIST_T width;
+ LWIDTH_T lineWidth;
TRKTYP_T trkTyp = strncmp(line,"BEZIER",6)==0?T_BEZIER:T_BZRLIN;
if (!GetArgs( line+6, "dLluwsdppppdp",
- &index, &layer, &options, &rgb, &width, scale, &visible, &p0, &c1, &c2, &p1, &lt, &dp ) ) {
+ &index, &layer, &options, &rgb, &lineWidth, scale, &visible, &p0, &c1, &c2, &p1,
+ &lt, &dp ) ) {
return FALSE;
}
- if ( !ReadSegs() )
+ if ( !ReadSegs() ) {
return FALSE;
+ }
t = NewTrack( index, trkTyp, 0, sizeof *xx );
xx = GET_EXTRA_DATA(t, trkTyp, extraDataBezier_t);
SetTrkVisible(t, visible&2);
SetTrkNoTies(t,visible&4);
SetTrkBridge(t,visible&8);
+ SetTrkRoadbed(t,visible&16);
SetTrkScale(t, LookupScale(scale));
SetTrkLayer(t, layer );
SetTrkWidth(t, (int)(options&0x0F));
- if ( paramVersion < VERSION_DESCRIPTION2 || ( options & 0x80 ) == 0 ) SetTrkBits(t,TB_HIDEDESC);
+ if ( paramVersion < VERSION_DESCRIPTION2 || ( options & 0x80 ) == 0 ) { SetTrkBits(t,TB_HIDEDESC); }
xx->pos[0] = p0;
- xx->pos[1] = c1;
- xx->pos[2] = c2;
- xx->pos[3] = p1;
- xx->lineType = lt;
- xx->descriptionOff = dp;
- xx->segsWidth = width;
- xx->segsColor = wDrawFindColor( rgb );
- FixUpBezier(xx->pos,xx,GetTrkType(t) == T_BEZIER);
- ComputeBezierBoundingBox(t,xx);
- if (GetTrkType(t) == T_BEZIER) {
+ xx->pos[1] = c1;
+ xx->pos[2] = c2;
+ xx->pos[3] = p1;
+ xx->lineType = lt;
+ xx->descriptionOff = dp;
+ xx->segsLineWidth = lineWidth;
+ xx->segsColor = wDrawFindColor( rgb );
+ FixUpBezier(xx->pos,xx,GetTrkType(t) == T_BEZIER);
+ ComputeBezierBoundingBox(t,xx);
+ if (GetTrkType(t) == T_BEZIER) {
SetEndPts(t,2);
}
return TRUE;
}
-static void MoveBezier( track_p trk, coOrd orig )
+EXPORT void MoveBezier( track_p trk, coOrd orig )
{
- struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
- for (int i=0;i<4;i++) {
- xx->pos[i].x += orig.x;
- xx->pos[i].y += orig.y;
- }
- FixUpBezier(xx->pos,xx,IsTrack(trk));
- ComputeBezierBoundingBox(trk,xx);
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
+ for (int i=0; i<4; i++) {
+ xx->pos[i].x += orig.x;
+ xx->pos[i].y += orig.y;
+ }
+ FixUpBezier(xx->pos,xx,IsTrack(trk));
+ ComputeBezierBoundingBox(trk,xx);
}
-static void RotateBezier( track_p trk, coOrd orig, ANGLE_T angle )
+EXPORT void RotateBezier( track_p trk, coOrd orig, ANGLE_T angle )
{
- struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
- for (int i=0;i<COUNT(xx->pos);i++) {
- Rotate( &xx->pos[i], orig, angle );
- }
- FixUpBezier(xx->pos,xx,IsTrack(trk));
- ComputeBezierBoundingBox(trk,xx);
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
+ for (int i=0; i<COUNT(xx->pos); i++) {
+ Rotate( &xx->pos[i], orig, angle );
+ }
+ FixUpBezier(xx->pos,xx,IsTrack(trk));
+ ComputeBezierBoundingBox(trk,xx);
}
static void RescaleBezier( track_p trk, FLOAT_T ratio )
{
- struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
xx->pos[0].x *= ratio;
xx->pos[0].y *= ratio;
- xx->pos[1].x *= ratio;
- xx->pos[1].y *= ratio;
- xx->pos[2].x *= ratio;
- xx->pos[2].y *= ratio;
- xx->pos[3].x *= ratio;
- xx->pos[3].y *= ratio;
- FixUpBezier(xx->pos,xx,IsTrack(trk));
- ComputeBezierBoundingBox(trk,xx);
+ xx->pos[1].x *= ratio;
+ xx->pos[1].y *= ratio;
+ xx->pos[2].x *= ratio;
+ xx->pos[2].y *= ratio;
+ xx->pos[3].x *= ratio;
+ xx->pos[3].y *= ratio;
+ FixUpBezier(xx->pos,xx,IsTrack(trk));
+ ComputeBezierBoundingBox(trk,xx);
}
-EXPORT void AdjustBezierEndPt( track_p trk, EPINX_T inx, coOrd pos ) {
- struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
- UndoModify(trk);
- if (inx ==0 ) {
- xx->pos[1].x += -xx->pos[0].x+pos.x;
- xx->pos[1].y += -xx->pos[0].y+pos.y;
- xx->pos[0] = pos;
- }
- else {
- xx->pos[2].x += -xx->pos[3].x+pos.x;
- xx->pos[2].y += -xx->pos[3].y+pos.y;
- xx->pos[3] = pos;
- }
- FixUpBezier(xx->pos, xx, IsTrack(trk));
- ComputeBezierBoundingBox(trk,xx);
- SetTrkEndPoint( trk, inx, pos, inx==0?xx->a0:xx->a1);
+EXPORT void AdjustBezierEndPt( track_p trk, EPINX_T inx, coOrd pos )
+{
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
+ UndoModify(trk);
+ if (inx ==0 ) {
+ xx->pos[1].x += -xx->pos[0].x+pos.x;
+ xx->pos[1].y += -xx->pos[0].y+pos.y;
+ xx->pos[0] = pos;
+ } else {
+ xx->pos[2].x += -xx->pos[3].x+pos.x;
+ xx->pos[2].y += -xx->pos[3].y+pos.y;
+ xx->pos[3] = pos;
+ }
+ FixUpBezier(xx->pos, xx, IsTrack(trk));
+ ComputeBezierBoundingBox(trk,xx);
+ SetTrkEndPoint( trk, inx, pos, inx==0?xx->a0:xx->a1);
}
/**
* Split the Track at approximately the point pos.
*/
-static BOOL_T SplitBezier( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover, EPINX_T * ep0, EPINX_T * ep1 )
+static BOOL_T SplitBezier( track_p trk, coOrd pos, EPINX_T ep,
+ track_p *leftover, EPINX_T * ep0, EPINX_T * ep1 )
{
- struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
track_p trk1;
- double t;
- BOOL_T track;
- track = IsTrack(trk);
-
- coOrd current[4], newl[4], newr[4];
-
- double dd = DistanceBezier(trk, &pos);
- if (dd>minLength) return FALSE;
-
- BezierMathDistance(&pos, xx->pos, 500, &t); //Find t value
-
- for (int i=0;i<4;i++) {
- current[i] = xx->pos[i];
- }
-
- BezierSplit(current, newl, newr, t);
-
- if (track) {
- trk1 = NewBezierTrack(ep?newr:newl,NULL,0);
- //Move elev data from ep
- } else
- trk1 = NewBezierLine(ep?newr:newl,NULL,0, xx->segsColor,xx->segsWidth);
- DIST_T height;
- int opt;
- GetTrkEndElev(trk,ep,&opt,&height);
- UpdateTrkEndElev( trk1, ep, opt, height, (opt==ELEV_STATION)?GetTrkEndElevStation(trk,ep):NULL );
- UndoModify(trk);
- for (int i=0;i<4;i++) {
- xx->pos[i] = ep?newl[i]:newr[i];
- }
- FixUpBezier(xx->pos,xx,track);
- ComputeBezierBoundingBox(trk,xx);
- SetTrkEndPoint( trk, ep, xx->pos[ep?3:0], ep?xx->a1:xx->a0);
- UpdateTrkEndElev( trk, ep, ELEV_NONE, 0, NULL);
+ double t;
+ BOOL_T track;
+ track = IsTrack(trk);
+
+ coOrd current[4], newl[4], newr[4];
+
+ double dd = DistanceBezier(trk, &pos);
+ if (dd>minLength) { return FALSE; }
+
+ BezierMathDistance(&pos, xx->pos, 500, &t); //Find t value
+
+ for (int i=0; i<4; i++) {
+ current[i] = xx->pos[i];
+ }
+
+ BezierSplit(current, newl, newr, t);
+
+ if (track) {
+ trk1 = NewBezierTrack(ep?newr:newl,NULL,0);
+ //Move elev data from ep
+ DIST_T height;
+ int opt;
+ GetTrkEndElev(trk,ep,&opt,&height);
+ UpdateTrkEndElev( trk1, ep, opt, height,
+ (opt==ELEV_STATION)?GetTrkEndElevStation(trk,ep):NULL );
+ } else {
+ trk1 = NewBezierLine(ep?newr:newl,NULL,0, xx->segsColor,xx->segsLineWidth);
+ }
+ UndoModify(trk);
+ for (int i=0; i<4; i++) {
+ xx->pos[i] = ep?newl[i]:newr[i];
+ }
+ FixUpBezier(xx->pos,xx,track);
+ ComputeBezierBoundingBox(trk,xx);
+ if ( track ) {
+ SetTrkEndPoint( trk, ep, xx->pos[ep?3:0], ep?xx->a1:xx->a0);
+ UpdateTrkEndElev( trk, ep, ELEV_NONE, 0, NULL);
+ }
*leftover = trk1;
*ep0 = 1-ep;
*ep1 = ep;
@@ -782,7 +843,7 @@ static int log_bezierSegments = 0;
*/
static BOOL_T TraverseBezier( traverseTrack_p trvTrk, DIST_T * distR )
{
- track_p trk = trvTrk->trk;
+ track_p trk = trvTrk->trk;
struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_BEZIER, extraDataBezier_t);
DIST_T dist = *distR;
segProcData_t segProcData;
@@ -793,19 +854,22 @@ static BOOL_T TraverseBezier( traverseTrack_p trvTrk, DIST_T * distR )
int inx,segInx = 0;
EPINX_T ep;
BOOL_T back,neg;
- trkSeg_p segPtr = (trkSeg_p)xx->arcSegs.ptr;
+ trkSeg_p segPtr = &DYNARR_N(trkSeg_t,xx->arcSegs,0);
a2 = GetAngleSegs( //Find correct Segment and nearest point in it
- xx->arcSegs.cnt,segPtr,
- &pos2, &segInx, &d , &back, NULL, &neg ); //d = how far pos2 from old pos2 = trvTrk->pos
+ xx->arcSegs.cnt,segPtr,
+ &pos2, &segInx, &d, &back, NULL,
+ &neg ); //d = how far pos2 from old pos2 = trvTrk->pos
if ( d > 10 ) {
- ErrorMessage( "traverseBezier: Position is not near track: %0.3f", d );
- return FALSE; //This means the input pos is not on or close to the track.
+ ErrorMessage( "traverseBezier: Position is not near track: %0.3f", d );
+ return FALSE; //This means the input pos is not on or close to the track.
}
- if (back) a2 = NormalizeAngle(a2+180); //GetAngleSegs has reversed angle for backwards
- a1 = NormalizeAngle(a2-trvTrk->angle); //Establish if we are going fwds or backwards globally
- if (a1 <270 && a1>90) { //Must add 180 if the seg is reversed or inverted (but not both)
+ if (back) { a2 = NormalizeAngle(a2+180); } //GetAngleSegs has reversed angle for backwards
+ a1 = NormalizeAngle(a2
+ -trvTrk->angle); //Establish if we are going fwds or backwards globally
+ if (a1 <270
+ && a1>90) { //Must add 180 if the seg is reversed or inverted (but not both)
segs_backwards = TRUE;
ep = 0;
} else {
@@ -818,25 +882,34 @@ static BOOL_T TraverseBezier( traverseTrack_p trvTrk, DIST_T * distR )
}
segProcData.traverse1.pos = pos2; //actual point on curve
- segProcData.traverse1.angle = trvTrk->angle; //direction car is going for Traverse 1 has to be reversed...
-LOG( log_traverseBezier, 1, ( " TraverseBezier [%0.3f %0.3f] D%0.3f A%0.3f SB%d \n", trvTrk->pos.x, trvTrk->pos.y, dist, trvTrk->angle, segs_backwards ) )
+ segProcData.traverse1.angle =
+ trvTrk->angle; //direction car is going for Traverse 1 has to be reversed...
+ LOG( log_traverseBezier, 1,
+ ( " TraverseBezier [%0.3f %0.3f] D%0.3f A%0.3f SB%d \n", trvTrk->pos.x,
+ trvTrk->pos.y, dist, trvTrk->angle, segs_backwards ) )
inx = segInx;
while (inx >=0 && inx<xx->arcSegs.cnt) {
- segPtr = (trkSeg_p)xx->arcSegs.ptr+inx; //move in to the identified segment
- SegProc( SEGPROC_TRAVERSE1, segPtr, &segProcData ); //Backwards or forwards for THIS segment - note that this can differ from segs_backward!!
+ segPtr = &DYNARR_N(trkSeg_t,xx->arcSegs,
+ inx); //move in to the identified segment
+ SegProc( SEGPROC_TRAVERSE1, segPtr,
+ &segProcData ); //Backwards or forwards for THIS segment - note that this can differ from segs_backward!!
BOOL_T backwards = segProcData.traverse1.backwards; //Are we going to EP0?
- BOOL_T reverse_seg = segProcData.traverse1.reverse_seg; //is it a backwards segment (we don't actually care as Traverse1 takes care of it)
+ BOOL_T reverse_seg =
+ segProcData.traverse1.reverse_seg; //is it a backwards segment (we don't actually care as Traverse1 takes care of it)
dist += segProcData.traverse1.dist;
segProcData.traverse2.dist = dist;
segProcData.traverse2.segDir = backwards;
-LOG( log_traverseBezier, 2, ( " TraverseBezierT1 D%0.3f B%d RS%d \n", dist, backwards, reverse_seg ) )
+ LOG( log_traverseBezier, 2, ( " TraverseBezierT1 D%0.3f B%d RS%d \n", dist,
+ backwards, reverse_seg ) )
SegProc( SEGPROC_TRAVERSE2, segPtr, &segProcData ); //Angle at pos2
- if ( segProcData.traverse2.dist <= 0 ) { //-ve or zero distance left over so stop there
+ if ( segProcData.traverse2.dist <=
+ 0 ) { //-ve or zero distance left over so stop there
*distR = 0;
trvTrk->pos = segProcData.traverse2.pos;
trvTrk->angle = segProcData.traverse2.angle;
-LOG( log_traverseBezier, 1, ( " -> [%0.3f %0.3f] A%0.3f D%0.3f\n", trvTrk->pos.x, trvTrk->pos.y, trvTrk->angle, *distR ) )
+ LOG( log_traverseBezier, 1, ( " -> [%0.3f %0.3f] A%0.3f D%0.3f\n",
+ trvTrk->pos.x, trvTrk->pos.y, trvTrk->angle, *distR ) )
return TRUE;
} //NOTE Traverse1 and Traverse2 are overlays so get all out before storing
dist = segProcData.traverse2.dist; //How far left?
@@ -844,30 +917,34 @@ LOG( log_traverseBezier, 1, ( " -> [%0.3f %0.3f] A%0.3f D%0.3f\n", trvTrk->pos.
ANGLE_T angle = segProcData.traverse2.angle; //Angle of end
segProcData.traverse1.angle = angle; //Reverse to suit Traverse1
segProcData.traverse1.pos = pos;
- inx = segs_backwards?inx-1:inx+1; //Here's where the global segment direction comes in
-LOG( log_traverseBezier, 2, ( " TraverseBezierL D%0.3f A%0.3f\n", dist, angle ) )
+ inx = segs_backwards?inx-1:inx
+ +1; //Here's where the global segment direction comes in
+ LOG( log_traverseBezier, 2, ( " TraverseBezierL D%0.3f A%0.3f\n", dist,
+ angle ) )
}
*distR = dist; //Tell caller what is left
- //Must be at one end or another
+ //Must be at one end or another
trvTrk->pos = GetTrkEndPos(trk,ep);
- trvTrk->angle = NormalizeAngle(GetTrkEndAngle(trk, ep));//+(segs_backwards?180:0))
+ trvTrk->angle = NormalizeAngle(GetTrkEndAngle(trk,
+ ep));//+(segs_backwards?180:0))
trvTrk->trk = GetTrkEndTrk(trk,ep); //go to next track
if (trvTrk->trk==NULL) {
trvTrk->pos = pos2;
- return TRUE;
+ return TRUE;
}
-LOG( log_traverseBezier, 1, ( " -> [%0.3f %0.3f] A%0.3f D%0.3f\n", trvTrk->pos.x, trvTrk->pos.y, trvTrk->angle, *distR ) )
+ LOG( log_traverseBezier, 1, ( " -> [%0.3f %0.3f] A%0.3f D%0.3f\n",
+ trvTrk->pos.x, trvTrk->pos.y, trvTrk->angle, *distR ) )
return TRUE;
}
static BOOL_T MergeBezier(
- track_p trk0,
- EPINX_T ep0,
- track_p trk1,
- EPINX_T ep1 )
+ track_p trk0,
+ EPINX_T ep0,
+ track_p trk1,
+ EPINX_T ep1 )
{
return FALSE;
}
@@ -880,7 +957,7 @@ static BOOL_T EnumerateBezier( track_p trk )
DIST_T d;
struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_BEZIER, extraDataBezier_t);
d = max(BezierOffsetLength(xx->arcSegs,-GetTrkGauge(trk)/2.0),
- BezierOffsetLength(xx->arcSegs,GetTrkGauge(trk)/2.0));
+ BezierOffsetLength(xx->arcSegs,GetTrkGauge(trk)/2.0));
ScaleLengthIncrement( GetTrkScale(trk), d );
return TRUE;
}
@@ -889,21 +966,24 @@ static BOOL_T EnumerateBezier( track_p trk )
static DIST_T GetLengthBezier( track_p trk )
{
- struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
DIST_T length = 0.0;
segProcData_t segProcData;
- for(int i=0;i<xx->arcSegs.cnt;i++) {
+ for(int i=0; i<xx->arcSegs.cnt; i++) {
SegProc(SEGPROC_LENGTH,&(DYNARR_N(trkSeg_t,xx->arcSegs,i)), &segProcData);
length += segProcData.length.length;
}
return length;
}
-EXPORT BOOL_T GetBezierMiddle( track_p trk, coOrd * pos) {
+EXPORT BOOL_T GetBezierMiddle( track_p trk, coOrd * pos)
+{
- if (GetTrkType(trk) != T_BEZIER)
+ if (GetTrkType(trk) != T_BEZIER) {
return FALSE;
- struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_BEZIER, extraDataBezier_t);
+ }
+// struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_BEZIER, extraDataBezier_t);
DIST_T length = GetLengthBezier(trk)/2;
traverseTrack_t tp;
@@ -921,20 +1001,23 @@ EXPORT BOOL_T GetBezierMiddle( track_p trk, coOrd * pos) {
}
-static BOOL_T GetParamsBezier( int inx, track_p trk, coOrd pos, trackParams_t * params )
+static BOOL_T GetParamsBezier( int inx, track_p trk, coOrd pos,
+ trackParams_t * params )
{
int segInx;
BOOL_T back,negative;
DIST_T d;
params->type = curveTypeBezier;
- struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
- for (int i=0;i<4;i++) params->bezierPoints[i] = xx->pos[i];
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
+ for (int i=0; i<4; i++) { params->bezierPoints[i] = xx->pos[i]; }
params->len = xx->length;
- params->track_angle = GetAngleSegs( //Find correct Segment and nearest point in it
- xx->arcSegs.cnt,xx->arcSegs.ptr,
- &pos, &segInx, &d , &back, NULL, &negative );
- if ( negative != back ) params->track_angle = NormalizeAngle(params->track_angle+180); //Bezier is in reverse
+ params->track_angle =
+ GetAngleSegs( //Find correct Segment and nearest point in it
+ xx->arcSegs.cnt,&DYNARR_N(trkSeg_t,xx->arcSegs,0),
+ &pos, &segInx, &d, &back, NULL, &negative );
+ if ( negative != back ) { params->track_angle = NormalizeAngle(params->track_angle+180); } //Bezier is in reverse
trkSeg_p segPtr = &DYNARR_N(trkSeg_t,xx->arcSegs,segInx);
if (segPtr->type == SEG_STRLIN) {
params->arcR = 0.0;
@@ -945,19 +1028,21 @@ static BOOL_T GetParamsBezier( int inx, track_p trk, coOrd pos, trackParams_t *
params->arcA1 = segPtr->u.c.a1;
}
if ( inx == PARAMS_NODES ) {
- if (GetTrkType(trk) == T_BEZIER) return FALSE;
+ if (GetTrkType(trk) == T_BEZIER) { return FALSE; }
//Pos is the place that is the end of the curve (params->ep set to 1 if the curve starts here)
- if (FindDistance(pos,params->bezierPoints[0]) <= FindDistance(pos,params->bezierPoints[3]))
- params->ep = 1;
- else params->ep = 0;
+ if (FindDistance(pos,params->bezierPoints[0]) <= FindDistance(pos,
+ params->bezierPoints[3])) {
+ params->ep = 1;
+ } else { params->ep = 0; }
coOrd curr_pos = params->bezierPoints[0];
BOOL_T first = TRUE;
DYNARR_RESET(coOrd,params->nodes);
// Load out the points in order from bezierPoint[0] to bezierPoint[3]
- for (int i = 0; i<xx->arcSegs.cnt;i++) {
+ for (int i = 0; i<xx->arcSegs.cnt; i++) {
trkSeg_p segPtr = &DYNARR_N(trkSeg_t,xx->arcSegs,i);
if (segPtr->type == SEG_STRLIN) {
- BOOL_T eps = FindDistance(segPtr->u.l.pos[0],curr_pos)>FindDistance(segPtr->u.l.pos[1],curr_pos);
+ BOOL_T eps = FindDistance(segPtr->u.l.pos[0],
+ curr_pos)>FindDistance(segPtr->u.l.pos[1],curr_pos);
if (first) {
first = FALSE;
DYNARR_APPEND(coOrd,params->nodes,1);
@@ -968,23 +1053,27 @@ static BOOL_T GetParamsBezier( int inx, track_p trk, coOrd pos, trackParams_t *
} else {
coOrd start,end;
Translate(&start,segPtr->u.c.center,segPtr->u.c.a0,fabs(segPtr->u.c.radius));
- Translate(&end,segPtr->u.c.center,segPtr->u.c.a0+segPtr->u.c.a1,fabs(segPtr->u.c.radius));
+ Translate(&end,segPtr->u.c.center,segPtr->u.c.a0+segPtr->u.c.a1,
+ fabs(segPtr->u.c.radius));
//Is this segment reversed in the curve?
BOOL_T back = FindDistance(start,curr_pos)>FindDistance(end,curr_pos);
if (segPtr->u.c.radius > 0.5) {
- double min_angle = 360*acos(1.0-(0.1/fabs(segPtr->u.c.radius)))/M_PI; //Error max is 0.1"
+ double min_angle = 360*acos(1.0-(0.1/fabs(
+ segPtr->u.c.radius)))/M_PI; //Error max is 0.1"
double number = ceil(segPtr->u.c.a1/min_angle);
double arc_size = segPtr->u.c.a1/number;
if (back) {
//If back, list sub-points in reverse. If first show first position, else skip
- for (int j=(((int)number)-(1-first));j>=0;j--) {
+ for (int j=(((int)number)-(1-first)); j>=0; j--) {
DYNARR_APPEND(coOrd,params->nodes,((int)number));
- Translate(&DYNARR_LAST(coOrd,params->nodes),segPtr->u.c.center,segPtr->u.c.a0+j*arc_size,fabs(segPtr->u.c.radius) );
+ Translate(&DYNARR_LAST(coOrd,params->nodes),segPtr->u.c.center,
+ segPtr->u.c.a0+j*arc_size,fabs(segPtr->u.c.radius) );
}
} else {
- for (int j=(1-first);j<=number;j++) {
+ for (int j=(1-first); j<=number; j++) {
DYNARR_APPEND(coOrd,params->nodes,((int)number));
- Translate(&DYNARR_LAST(coOrd,params->nodes),segPtr->u.c.center,segPtr->u.c.a0+j*arc_size,fabs(segPtr->u.c.radius) );
+ Translate(&DYNARR_LAST(coOrd,params->nodes),segPtr->u.c.center,
+ segPtr->u.c.a0+j*arc_size,fabs(segPtr->u.c.radius) );
}
}
first = FALSE;
@@ -1003,19 +1092,23 @@ static BOOL_T GetParamsBezier( int inx, track_p trk, coOrd pos, trackParams_t *
params->lineOrig = params->bezierPoints[params->ep?0:3];
params->lineEnd = params->bezierPoints[params->ep?3:0];
return TRUE;
- } else if ((inx == PARAMS_CORNU) || (inx == PARAMS_1ST_JOIN) || (inx == PARAMS_2ND_JOIN)){
+ } else if ((inx == PARAMS_CORNU) || (inx == PARAMS_1ST_JOIN)
+ || (inx == PARAMS_2ND_JOIN)) {
params->ep = PickEndPoint( pos, trk);
} else {
params->ep = PickUnconnectedEndPointSilent( pos, trk);
}
- if (params->ep>=0)
+ if (params->ep>=0) {
params->angle = GetTrkEndAngle(trk, params->ep);
+ }
return TRUE;
}
-static BOOL_T TrimBezier( track_p trk, EPINX_T ep, DIST_T dist, coOrd endpos, ANGLE_T angle, DIST_T radius, coOrd center ) {
+static BOOL_T TrimBezier( track_p trk, EPINX_T ep, DIST_T dist, coOrd endpos,
+ ANGLE_T angle, DIST_T radius, coOrd center )
+{
UndrawNewTrack( trk );
DeleteTrack(trk, TRUE);
return TRUE;
@@ -1025,7 +1118,8 @@ static BOOL_T TrimBezier( track_p trk, EPINX_T ep, DIST_T dist, coOrd endpos, AN
static BOOL_T QueryBezier( track_p trk, int query )
{
- struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
+ struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
switch ( query ) {
case Q_CAN_GROUP:
return FALSE;
@@ -1037,7 +1131,8 @@ static BOOL_T QueryBezier( track_p trk, int query )
return TRUE;
break;
case Q_EXCEPTION:
- return GetTrkType(trk) == T_BEZIER?fabs(xx->minCurveRadius) < (GetLayoutMinTrackRadius()-EPSILON):FALSE;
+ return GetTrkType(trk) == T_BEZIER?fabs(xx->minCurveRadius) <
+ (GetLayoutMinTrackRadius()-EPSILON):FALSE;
break;
case Q_CAN_MODIFY_CONTROL_POINTS:
return TRUE;
@@ -1065,15 +1160,16 @@ static BOOL_T QueryBezier( track_p trk, int query )
static void FlipBezier(
- track_p trk,
- coOrd orig,
- ANGLE_T angle )
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle )
{
- struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
+ struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
FlipPoint( &xx->pos[0], orig, angle );
FlipPoint( &xx->pos[1], orig, angle );
- FlipPoint( &xx->pos[2], orig, angle );
- FlipPoint( &xx->pos[3], orig, angle );
+ FlipPoint( &xx->pos[2], orig, angle );
+ FlipPoint( &xx->pos[3], orig, angle );
// Reverse control point order
coOrd pos = xx->pos[0];
@@ -1083,65 +1179,73 @@ static void FlipBezier(
pos = xx->pos[1];
xx->pos[1] = xx->pos[2];
xx->pos[2] = pos;
-
+
FixUpBezier(xx->pos,xx,IsTrack(trk));
- ComputeBezierBoundingBox(trk,xx);
+ ComputeBezierBoundingBox(trk,xx);
}
static ANGLE_T GetAngleBezier(
- track_p trk,
- coOrd pos,
- EPINX_T * ep0,
- EPINX_T * ep1 )
+ track_p trk,
+ coOrd pos,
+ EPINX_T * ep0,
+ EPINX_T * ep1 )
{
- struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
+ struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
ANGLE_T angle;
BOOL_T back, neg;
int indx;
- angle = GetAngleSegs( xx->arcSegs.cnt, (trkSeg_p)xx->arcSegs.ptr, &pos, &indx, NULL, &back, NULL, &neg );
- if (!back) angle = NormalizeAngle(angle+180); //Make CCW
- if ( ep0 ) *ep0 = neg?1:0;
- if ( ep1 ) *ep1 = neg?0:1;
+ angle = GetAngleSegs( xx->arcSegs.cnt, &DYNARR_N(trkSeg_t,xx->arcSegs,0), &pos,
+ &indx, NULL, &back, NULL, &neg );
+ if (!back) { angle = NormalizeAngle(angle+180); } //Make CCW
+ if ( ep0 ) { *ep0 = neg?1:0; }
+ if ( ep1 ) { *ep1 = neg?0:1; }
return angle;
}
-BOOL_T GetBezierSegmentFromTrack(track_p trk, trkSeg_p seg_p) {
- struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
+BOOL_T GetBezierSegmentFromTrack(track_p trk, trkSeg_p seg_p)
+{
+ struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
seg_p->type = IsTrack(trk)?SEG_BEZTRK:SEG_BEZLIN;
- for (int i=0;i<4;i++) seg_p->u.b.pos[i] = xx->pos[i];
+ for (int i=0; i<4; i++) { seg_p->u.b.pos[i] = xx->pos[i]; }
seg_p->color = xx->segsColor;
- seg_p->bezSegs.cnt = 0;
- if (seg_p->bezSegs.ptr) MyFree(seg_p->bezSegs.ptr);
- seg_p->bezSegs.max = 0;
- seg_p->bezSegs.ptr = NULL;
+ seg_p->lineWidth = xx->segsLineWidth;
+ DYNARR_FREE( trkSeg_t, seg_p->bezSegs );
FixUpBezierSeg(seg_p->u.b.pos,seg_p,seg_p->type == SEG_BEZTRK);
return TRUE;
}
-BOOL_T GetTracksFromBezierSegment(trkSeg_p bezSeg, track_p newTracks[2], track_p trk) {
+BOOL_T GetTracksFromBezierSegment(trkSeg_p bezSeg, track_p newTracks[2],
+ track_p trk)
+{
track_p trk_old = NULL;
newTracks[0] = NULL, newTracks[1] = NULL;
- if (bezSeg->type != SEG_BEZTRK) return FALSE;
- for (int i=0;i<bezSeg->bezSegs.cnt;i++) {
+ if (bezSeg->type != SEG_BEZTRK) { return FALSE; }
+ for (int i=0; i<bezSeg->bezSegs.cnt; i++) {
trkSeg_p seg = &DYNARR_N(trkSeg_t,bezSeg->bezSegs,i);
track_p new_trk;
- if (seg->type == SEG_CRVTRK)
- new_trk = NewCurvedTrack(seg->u.c.center,fabs(seg->u.c.radius),seg->u.c.a0,seg->u.c.a1,0);
- else if (seg->type == SEG_STRTRK)
+ if (seg->type == SEG_CRVTRK) {
+ new_trk = NewCurvedTrack(seg->u.c.center,fabs(seg->u.c.radius),seg->u.c.a0,
+ seg->u.c.a1,0);
+ } else if (seg->type == SEG_STRTRK) {
new_trk = NewStraightTrack(seg->u.l.pos[0],seg->u.l.pos[1]);
- if (newTracks[0] == NULL) newTracks[0] = new_trk;
+ }
+ if (newTracks[0] == NULL) { newTracks[0] = new_trk; }
CopyAttributes( trk, new_trk );
newTracks[1] = new_trk;
if (trk_old) {
- for (int i=0;i<2;i++) {
+ for (int i=0; i<2; i++) {
if (GetTrkEndTrk(trk_old,i)==NULL) {
coOrd pos = GetTrkEndPos(trk_old,i);
EPINX_T ep_n = PickUnconnectedEndPoint(pos,new_trk);
- if ((connectDistance >= FindDistance(GetTrkEndPos(trk_old,i),GetTrkEndPos(new_trk,ep_n))) &&
- (connectAngle >= fabs(DifferenceBetweenAngles(GetTrkEndAngle(trk_old,i),GetTrkEndAngle(new_trk,ep_n)+180))) ) {
+ if ((connectDistance >= FindDistance(GetTrkEndPos(trk_old,i),
+ GetTrkEndPos(new_trk,ep_n))) &&
+ (connectAngle >= fabs(DifferenceBetweenAngles(GetTrkEndAngle(trk_old,i),
+ GetTrkEndAngle(new_trk,ep_n)+180))) ) {
ConnectTracks(trk_old,i,new_trk,ep_n);
break;
}
@@ -1153,92 +1257,86 @@ BOOL_T GetTracksFromBezierSegment(trkSeg_p bezSeg, track_p newTracks[2], track_p
return TRUE;
}
-BOOL_T GetTracksFromBezierTrack(track_p trk, track_p newTracks[2]) {
+BOOL_T GetTracksFromBezierTrack(track_p trk, track_p newTracks[2])
+{
trkSeg_t seg_temp;
+ DYNARR_INIT( trkSeg_t, seg_temp.bezSegs );
newTracks[0] = NULL, newTracks[1] = NULL;
- if (!IsTrack(trk)) return FALSE;
- struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_BEZIER, extraDataBezier_t);
+ if (!IsTrack(trk)) { return FALSE; }
+ struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_BEZIER,
+ extraDataBezier_t);
seg_temp.type = SEG_BEZTRK;
- for (int i=0;i<4;i++) seg_temp.u.b.pos[i] = xx->pos[i];
+ for (int i=0; i<4; i++) { seg_temp.u.b.pos[i] = xx->pos[i]; }
seg_temp.color = xx->segsColor;
- seg_temp.bezSegs.cnt = 0;
- seg_temp.bezSegs.max = 0;
- //if (seg_temp->bezSegs.ptr) MyFree(seg_temp->bezSegs.ptr);
- DYNARR_RESET(trkSeg_t,seg_temp.bezSegs);
FixUpBezierSeg(seg_temp.u.b.pos,&seg_temp,TRUE);
GetTracksFromBezierSegment(&seg_temp, newTracks, trk);
- MyFree(seg_temp.bezSegs.ptr);
- seg_temp.bezSegs.cnt = 0;
- seg_temp.bezSegs.max = 0;
- seg_temp.bezSegs.ptr = NULL;
+ DYNARR_FREE( trkSeg_t, seg_temp.bezSegs );
return TRUE;
}
static BOOL_T MakeParallelBezier(
- track_p trk,
- coOrd pos,
- DIST_T sep,
- DIST_T factor,
- track_p * newTrkR,
- coOrd * p0R,
- coOrd * p1R,
- BOOL_T track)
+ track_p trk,
+ coOrd pos,
+ DIST_T sep,
+ DIST_T factor,
+ track_p * newTrkR,
+ coOrd * p0R,
+ coOrd * p1R,
+ BOOL_T track)
{
- struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
- coOrd np[4], p;
- ANGLE_T a0, a1,a2;
+ struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
+ coOrd np[4], p;
+ ANGLE_T a0, a1,a2;
//Produce bezier that is translated parallel to the existing Bezier
- // - not a precise result if the bezier end angles are not in the same general direction.
- // The expectation is that the user will have to adjust it - unless and until we produce
- // a new algo to adjust the control points to be parallel to the endpoints.
-
- a0 = xx->a0;
- a1 = xx->a1;
- p = pos;
- DistanceBezier(trk, &p);
- a2 = NormalizeAngle(FindAngle(pos,p)-a0);
- a2 = NormalizeAngle(FindAngle(pos,p)-a0);
- //find parallel move x and y for points
- for (int i =0; i<4;i++) {
- np[i] = xx->pos[i];
- }
- sep = sep+factor/xx->minCurveRadius;
- // Adjust sep based on radius and factor
- if ( a2 > 180 ) {
- Translate(&np[0],np[0],a0+90,sep);
- Translate(&np[1],np[1],a0+90,sep);
- Translate(&np[2],np[2],a1-90,sep);
- Translate(&np[3],np[3],a1-90,sep);
- } else {
- Translate(&np[0],np[0],a0-90,sep);
- Translate(&np[1],np[1],a0-90,sep);
- Translate(&np[2],np[2],a1+90,sep);
- Translate(&np[3],np[3],a1+90,sep);
- }
+ // - not a precise result if the bezier end angles are not in the same general direction.
+ // The expectation is that the user will have to adjust it - unless and until we produce
+ // a new algo to adjust the control points to be parallel to the endpoints.
+
+ a0 = xx->a0;
+ a1 = xx->a1;
+ p = pos;
+ DistanceBezier(trk, &p);
+ a2 = NormalizeAngle(FindAngle(pos,p)-a0);
+ a2 = NormalizeAngle(FindAngle(pos,p)-a0);
+ //find parallel move x and y for points
+ for (int i =0; i<4; i++) {
+ np[i] = xx->pos[i];
+ }
+ sep = sep+factor/xx->minCurveRadius;
+ // Adjust sep based on radius and factor
+ if ( a2 > 180 ) {
+ Translate(&np[0],np[0],a0+90,sep);
+ Translate(&np[1],np[1],a0+90,sep);
+ Translate(&np[2],np[2],a1-90,sep);
+ Translate(&np[3],np[3],a1-90,sep);
+ } else {
+ Translate(&np[0],np[0],a0-90,sep);
+ Translate(&np[1],np[1],a0-90,sep);
+ Translate(&np[2],np[2],a1+90,sep);
+ Translate(&np[3],np[3],a1+90,sep);
+ }
if ( newTrkR ) {
- if (track)
+ if (track) {
*newTrkR = NewBezierTrack( np, NULL, 0);
- else
+ } else {
*newTrkR = NewBezierLine( np, NULL, 0, wDrawColorBlack, 0);
+ }
} else {
DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).color = wDrawColorBlack;
- tempSegs(0).width = 0;
- tempSegs_da.cnt = 1;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).type = track?SEG_BEZTRK:SEG_BEZLIN;
- if (tempSegs(0).bezSegs.ptr) MyFree(tempSegs(0).bezSegs.ptr);
- tempSegs(0).bezSegs.ptr = 0;
- tempSegs(0).bezSegs.max = 0;
- tempSegs(0).bezSegs.cnt = 0;
- for (int i=0;i<4;i++) tempSegs(0).u.b.pos[i] = np[i];
+ DYNARR_INIT( trkSeg_t, tempSegs(0).bezSegs );
+ for (int i=0; i<4; i++) { tempSegs(0).u.b.pos[i] = np[i]; }
FixUpBezierSeg(tempSegs(0).u.b.pos,&tempSegs(0),track);
}
- if ( p0R ) *p0R = np[0];
- if ( p1R ) *p1R = np[1];
+ if ( p0R ) { *p0R = np[0]; }
+ if ( p1R ) { *p1R = np[1]; }
return TRUE;
}
@@ -1251,17 +1349,18 @@ static BOOL_T MakeParallelBezier(
*/
BOOL_T RebuildBezier (track_p trk)
{
- ASSERT( trk != NULL && !IsTrackDeleted(trk) );
+ CHECK( trk != NULL && !IsTrackDeleted(trk) );
struct extraDataBezier_t *xx;
xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
- xx->arcSegs.cnt = 0;
+ DYNARR_RESET( trkSeg_t, xx->arcSegs );
FixUpBezier(xx->pos,xx,IsTrack(trk));
ComputeBezierBoundingBox(trk, xx);
return TRUE;
}
-BOOL_T MoveBezierEndPt ( track_p *trk, EPINX_T *ep, coOrd pos, DIST_T d0 ) {
+BOOL_T MoveBezierEndPt ( track_p *trk, EPINX_T *ep, coOrd pos, DIST_T d0 )
+{
track_p trk2;
struct extraDataBezier_t *xx;
if (SplitTrack(*trk,pos,*ep,&trk2,TRUE)) {
@@ -1280,8 +1379,10 @@ BOOL_T MoveBezierEndPt ( track_p *trk, EPINX_T *ep, coOrd pos, DIST_T d0 ) {
static wBool_t CompareBezier( track_cp trk1, track_cp trk2 )
{
- struct extraDataBezier_t *xx1 = GET_EXTRA_DATA( trk1, T_NOTRACK, extraDataBezier_t );
- struct extraDataBezier_t *xx2 = GET_EXTRA_DATA( trk2, T_NOTRACK, extraDataBezier_t );
+ struct extraDataBezier_t *xx1 = GET_EXTRA_DATA( trk1, T_NOTRACK,
+ extraDataBezier_t );
+ struct extraDataBezier_t *xx2 = GET_EXTRA_DATA( trk2, T_NOTRACK,
+ extraDataBezier_t );
char * cp = message + strlen(message);
REGRESS_CHECK_POS( "Pos[0]", xx1, xx2, pos[0] )
REGRESS_CHECK_POS( "Pos[1]", xx1, xx2, pos[1] )
@@ -1293,93 +1394,93 @@ static wBool_t CompareBezier( track_cp trk1, track_cp trk2 )
// Check arcSegs
REGRESS_CHECK_DIST( "Length", xx1, xx2, length )
REGRESS_CHECK_POS( "DescOff", xx1, xx2, descriptionOff )
- REGRESS_CHECK_WIDTH( "SegsWidth", xx1, xx2, segsWidth )
+ REGRESS_CHECK_WIDTH( "SegsLineWidth", xx1, xx2, segsLineWidth )
REGRESS_CHECK_COLOR( "SegsColor", xx1, xx2, segsColor )
REGRESS_CHECK_INT( "LineType", xx1, xx2, lineType )
return TRUE;
}
static trackCmd_t bezlinCmds = {
- "BZRLIN",
- DrawBezier,
- DistanceBezier,
- DescribeBezier,
- DeleteBezier,
- WriteBezier,
- ReadBezier,
- MoveBezier,
- RotateBezier,
- RescaleBezier,
- NULL,
- GetAngleBezier,
- SplitBezier,
- NULL,
- NULL,
- NULL, /* redraw */
- NULL, /* trim */
- MergeBezier,
- NULL, /* modify */
- GetLengthBezier,
- GetParamsBezier,
- NULL, /* Move EndPt */
- QueryBezier,
- NULL, /* ungroup */
- FlipBezier,
- NULL,
- NULL,
- NULL,
- MakeParallelBezier,
- NULL,
- RebuildBezier,
- NULL,
- NULL,
- NULL,
- CompareBezier
- };
+ "BZRLIN",
+ DrawBezier,
+ DistanceBezier,
+ DescribeBezier,
+ DeleteBezier,
+ WriteBezier,
+ ReadBezier,
+ MoveBezier,
+ RotateBezier,
+ RescaleBezier,
+ NULL,
+ GetAngleBezier,
+ SplitBezier,
+ NULL,
+ NULL,
+ NULL, /* redraw */
+ NULL, /* trim */
+ MergeBezier,
+ NULL, /* modify */
+ GetLengthBezier,
+ GetParamsBezier,
+ NULL, /* Move EndPt */
+ QueryBezier,
+ NULL, /* ungroup */
+ FlipBezier,
+ NULL,
+ NULL,
+ NULL,
+ MakeParallelBezier,
+ NULL,
+ RebuildBezier,
+ NULL,
+ NULL,
+ NULL,
+ CompareBezier
+};
static trackCmd_t bezierCmds = {
- "BEZIER",
- DrawBezier,
- DistanceBezier,
- DescribeBezier,
- DeleteBezier,
- WriteBezier,
- ReadBezier,
- MoveBezier,
- RotateBezier,
- RescaleBezier,
- NULL,
- GetAngleBezier,
- SplitBezier,
- TraverseBezier,
- EnumerateBezier,
- NULL, /* redraw */
- TrimBezier, /* trim */
- MergeBezier,
- NULL, /* modify */
- GetLengthBezier,
- GetParamsBezier,
- MoveBezierEndPt, /* Move EndPt */
- QueryBezier,
- NULL, /* ungroup */
- FlipBezier,
- NULL,
- NULL,
- NULL,
- MakeParallelBezier,
- NULL,
- RebuildBezier,
- NULL,
- NULL,
- NULL,
- CompareBezier
- };
+ "BEZIER",
+ DrawBezier,
+ DistanceBezier,
+ DescribeBezier,
+ DeleteBezier,
+ WriteBezier,
+ ReadBezier,
+ MoveBezier,
+ RotateBezier,
+ RescaleBezier,
+ NULL,
+ GetAngleBezier,
+ SplitBezier,
+ TraverseBezier,
+ EnumerateBezier,
+ NULL, /* redraw */
+ TrimBezier, /* trim */
+ MergeBezier,
+ NULL, /* modify */
+ GetLengthBezier,
+ GetParamsBezier,
+ MoveBezierEndPt, /* Move EndPt */
+ QueryBezier,
+ NULL, /* ungroup */
+ FlipBezier,
+ NULL,
+ NULL,
+ NULL,
+ MakeParallelBezier,
+ NULL,
+ RebuildBezier,
+ NULL,
+ NULL,
+ NULL,
+ CompareBezier
+};
EXPORT void BezierSegProc(
- segProc_e cmd,
- trkSeg_p segPtr,
- segProcData_p data )
+ segProc_e cmd,
+ trkSeg_p segPtr,
+ segProcData_p data )
{
ANGLE_T a1, a2;
DIST_T d, dd;
@@ -1391,7 +1492,7 @@ EXPORT void BezierSegProc(
BOOL_T back, segs_backwards, neg;
#define bezSegs(N) DYNARR_N( trkSeg_t, segPtr->bezSegs, N )
- switch (cmd) {
+ switch (cmd) {
case SEGPROC_TRAVERSE1: //Work out how much extra dist and what direction
if (segPtr->type != SEG_BEZTRK) {
@@ -1400,8 +1501,10 @@ EXPORT void BezierSegProc(
}
d = data->traverse1.dist;
p0 = data->traverse1.pos;
-LOG( log_bezierSegments, 1, ( " BezTr1-Enter P[%0.3f %0.3f] A%0.3f\n", p0.x, p0.y, data->traverse1.angle ))
- a2 = GetAngleSegs(segPtr->bezSegs.cnt,segPtr->bezSegs.ptr,&p0,&segInx,&d,&back, NULL, &neg); //Find right seg and pos
+ LOG( log_bezierSegments, 1, ( " BezTr1-Enter P[%0.3f %0.3f] A%0.3f\n", p0.x,
+ p0.y, data->traverse1.angle ))
+ a2 = GetAngleSegs(segPtr->bezSegs.cnt,&DYNARR_N(trkSeg_t,segPtr->bezSegs,0),&p0,
+ &segInx,&d,&back, NULL, &neg); //Find right seg and pos
inx = segInx;
data->traverse1.BezSegInx = segInx;
data->traverse1.reverse_seg = FALSE;
@@ -1411,33 +1514,44 @@ LOG( log_bezierSegments, 1, ( " BezTr1-Enter P[%0.3f %0.3f] A%0.3f\n", p0.x,
return;
}
- if (back) a2 = NormalizeAngle(a2+180);
- a1 = NormalizeAngle(a2-data->traverse1.angle); //Establish if we are going fwds or backwards globally
- if (a1<270 && a1>90) { //Must add 180 if the seg is reversed or inverted (but not both)
+ if (back) { a2 = NormalizeAngle(a2+180); }
+ a1 = NormalizeAngle(a2
+ -data->traverse1.angle); //Establish if we are going fwds or backwards globally
+ if (a1<270
+ && a1>90) { //Must add 180 if the seg is reversed or inverted (but not both)
segs_backwards = TRUE;
- } else {
+ } else {
segs_backwards = FALSE;
- }
+ }
if ( neg ) {
segs_backwards = !segs_backwards; //neg implies all the segs are reversed
}
- segProcData.traverse1.pos = data->traverse1.pos = p0; //actual point on curve
- segProcData.traverse1.angle = data->traverse1.angle; //Angle of car
- LOG( log_bezierSegments, 1, ( " BezTr1-GSA I%d P[%0.3f %0.3f] N%d SB%d\n", segInx, p0.x, p0.y, neg, segs_backwards ))
- subSegsPtr = (trkSeg_p)segPtr->bezSegs.ptr+inx;
+ segProcData.traverse1.pos = data->traverse1.pos = p0; //actual point on curve
+ segProcData.traverse1.angle = data->traverse1.angle; //Angle of car
+ LOG( log_bezierSegments, 1, ( " BezTr1-GSA I%d P[%0.3f %0.3f] N%d SB%d\n",
+ segInx, p0.x, p0.y, neg, segs_backwards ))
+ subSegsPtr = &DYNARR_N(trkSeg_t,segPtr->bezSegs,inx);
SegProc( SEGPROC_TRAVERSE1, subSegsPtr, &segProcData );
- data->traverse1.reverse_seg = segProcData.traverse1.reverse_seg; //which way is curve (info)
- data->traverse1.backwards = segProcData.traverse1.backwards; //Pass through Train direction
- data->traverse1.dist = segProcData.traverse1.dist; //Get last seg partial dist
+ data->traverse1.reverse_seg =
+ segProcData.traverse1.reverse_seg; //which way is curve (info)
+ data->traverse1.backwards =
+ segProcData.traverse1.backwards; //Pass through Train direction
+ data->traverse1.dist =
+ segProcData.traverse1.dist; //Get last seg partial dist
data->traverse1.segs_backwards = segs_backwards; //Get last
- data->traverse1.negative = segProcData.traverse1.negative; //Is curve flipped (info)
+ data->traverse1.negative =
+ segProcData.traverse1.negative; //Is curve flipped (info)
data->traverse1.BezSegInx = inx; //Copy up Index
-LOG( log_bezierSegments, 1, ( " BezTr1-Exit -> A%0.3f B%d R%d N%d D%0.3f\n", a2, segProcData.traverse1.backwards, segProcData.traverse1.reverse_seg, segProcData.traverse1.negative, segProcData.traverse1.dist ))
+ LOG( log_bezierSegments, 1, ( " BezTr1-Exit -> A%0.3f B%d R%d N%d D%0.3f\n",
+ a2, segProcData.traverse1.backwards, segProcData.traverse1.reverse_seg,
+ segProcData.traverse1.negative, segProcData.traverse1.dist ))
break;
case SEGPROC_TRAVERSE2:
- if (segPtr->type != SEG_BEZTRK) return; //Not SEG_BEZLIN
-LOG( log_bezierSegments, 1, ( " BezTr2-Enter D%0.3f SD%d SI%d SB%d\n", data->traverse2.dist, data->traverse2.segDir, data->traverse2.BezSegInx, data->traverse2.segs_backwards))
+ if (segPtr->type != SEG_BEZTRK) { return; } //Not SEG_BEZLIN
+ LOG( log_bezierSegments, 1, ( " BezTr2-Enter D%0.3f SD%d SI%d SB%d\n",
+ data->traverse2.dist, data->traverse2.segDir, data->traverse2.BezSegInx,
+ data->traverse2.segs_backwards))
segProcData.traverse2.pos = data->traverse2.pos;
DIST_T dist = data->traverse2.dist;
segProcData.traverse2.dist = data->traverse2.dist;
@@ -1447,24 +1561,26 @@ LOG( log_bezierSegments, 1, ( " BezTr2-Enter D%0.3f SD%d SI%d SB%d\n", data->
BOOL_T backwards = data->traverse2.segDir;
inx = data->traverse2.BezSegInx; //Special from Traverse1
while (inx>=0 && inx<segPtr->bezSegs.cnt) {
- subSegsPtr = (trkSeg_p)segPtr->bezSegs.ptr+inx;
+ subSegsPtr = &DYNARR_N(trkSeg_t,segPtr->bezSegs,inx);
SegProc(SEGPROC_TRAVERSE2, subSegsPtr, &segProcData);
if (segProcData.traverse2.dist<=0) { //Done
data->traverse2.angle = segProcData.traverse2.angle;
data->traverse2.dist = 0;
data->traverse2.pos = segProcData.traverse2.pos;
-LOG( log_bezierSegments, 1, ( " BezTr2-Exit1 -> A%0.3f P[%0.3f %0.3f] \n", data->traverse2.angle, data->traverse2.pos.x, data->traverse2.pos.y ))
+ LOG( log_bezierSegments, 1, ( " BezTr2-Exit1 -> A%0.3f P[%0.3f %0.3f] \n",
+ data->traverse2.angle, data->traverse2.pos.x, data->traverse2.pos.y ))
return;
- } else dist = segProcData.traverse2.dist;
+ } else { dist = segProcData.traverse2.dist; }
p2 = segProcData.traverse2.pos;
a2 = segProcData.traverse2.angle;
-LOG( log_bezierSegments, 2, ( " BezTr2-Tr2 D%0.3f P[%0.3f %0.3f] A%0.3f\n", dist, p2.x, p2.y, a2 ))
+ LOG( log_bezierSegments, 2, ( " BezTr2-Tr2 D%0.3f P[%0.3f %0.3f] A%0.3f\n",
+ dist, p2.x, p2.y, a2 ))
segProcData.traverse1.pos = p2;
segProcData.traverse1.angle = a2 ;
inx = segs_backwards?inx-1:inx+1;
- if (inx<0 || inx>=segPtr->bezSegs.cnt) break;
- subSegsPtr = (trkSeg_p)segPtr->bezSegs.ptr+inx;
+ if (inx<0 || inx>=segPtr->bezSegs.cnt) { break; }
+ subSegsPtr = &DYNARR_N(trkSeg_t,segPtr->bezSegs,inx);
SegProc(SEGPROC_TRAVERSE1, subSegsPtr, &segProcData);
BOOL_T reverse_seg = segProcData.traverse1.reverse_seg; //For Info only
backwards = segProcData.traverse1.backwards;
@@ -1474,21 +1590,26 @@ LOG( log_bezierSegments, 2, ( " BezTr2-Tr2 D%0.3f P[%0.3f %0.3f] A%0.3f\n", d
segProcData.traverse2.segDir = backwards; //which way
segProcData.traverse2.pos = p2;
segProcData.traverse2.angle = NormalizeAngle(a2 + neg_seg?180:0);
-LOG( log_bezierSegments, 2, ( " BezTr2-Loop A%0.3f P[%0.3f %0.3f] D%0.3f SI%d B%d RS%d\n", a2, p2.x, p2.y, dist, inx, backwards, reverse_seg ))
+ LOG( log_bezierSegments, 2,
+ ( " BezTr2-Loop A%0.3f P[%0.3f %0.3f] D%0.3f SI%d B%d RS%d\n", a2, p2.x,
+ p2.y, dist, inx, backwards, reverse_seg ))
}
data->traverse2.dist = dist;
- if (segs_backwards) {
- data->traverse2.pos = segPtr->u.b.pos[0]; // Backwards so point 0
- data->traverse2.angle = segPtr->u.b.angle0;
- } else {
- data->traverse2.pos = segPtr->u.b.pos[3]; // Forwards so point 3
- data->traverse2.angle = segPtr->u.b.angle3;
- }
-LOG( log_bezierSegments, 1, ( " BezTr-Exit2 --> SI%d A%0.3f P[%0.3f %0.3f] D%0.3f\n", inx, data->traverse2.angle, data->traverse2.pos.x, data->traverse2.pos.y, data->traverse2.dist))
+ if (segs_backwards) {
+ data->traverse2.pos = segPtr->u.b.pos[0]; // Backwards so point 0
+ data->traverse2.angle = segPtr->u.b.angle0;
+ } else {
+ data->traverse2.pos = segPtr->u.b.pos[3]; // Forwards so point 3
+ data->traverse2.angle = segPtr->u.b.angle3;
+ }
+ LOG( log_bezierSegments, 1,
+ ( " BezTr-Exit2 --> SI%d A%0.3f P[%0.3f %0.3f] D%0.3f\n", inx,
+ data->traverse2.angle, data->traverse2.pos.x, data->traverse2.pos.y,
+ data->traverse2.dist))
break;
case SEGPROC_DRAWROADBEDSIDE:
- //TODO - needs parallel bezier problem solved...
+ //TODO - needs parallel bezier problem solved...
break;
case SEGPROC_DISTANCE:
@@ -1496,9 +1617,9 @@ LOG( log_bezierSegments, 1, ( " BezTr-Exit2 --> SI%d A%0.3f P[%0.3f %0.3f] D%
dd = DIST_INF; //Just find one distance
p0 = data->distance.pos1;
- //initialize p2
+ //initialize p2
p2 = segPtr->u.b.pos[0];
- for(int i=0;i<segPtr->bezSegs.cnt;i++) {
+ for(int i=0; i<segPtr->bezSegs.cnt; i++) {
segProcData.distance.pos1 = p0;
SegProc(SEGPROC_DISTANCE,&(DYNARR_N(trkSeg_t,segPtr->bezSegs,i)),&segProcData);
d = segProcData.distance.dd;
@@ -1513,9 +1634,9 @@ LOG( log_bezierSegments, 1, ( " BezTr-Exit2 --> SI%d A%0.3f P[%0.3f %0.3f] D%
case SEGPROC_FLIP:
- temp0 = segPtr->u.b.pos[0];
- temp1 = segPtr->u.b.pos[1];
- temp2 = segPtr->u.b.pos[2];
+ temp0 = segPtr->u.b.pos[0];
+ temp1 = segPtr->u.b.pos[1];
+ temp2 = segPtr->u.b.pos[2];
temp3 = segPtr->u.b.pos[3];
segPtr->u.b.pos[0] = temp3;
segPtr->u.b.pos[1] = temp2;
@@ -1525,45 +1646,47 @@ LOG( log_bezierSegments, 1, ( " BezTr-Exit2 --> SI%d A%0.3f P[%0.3f %0.3f] D%
break;
case SEGPROC_NEWTRACK:
- data->newTrack.trk = NewBezierTrack( segPtr->u.b.pos, (trkSeg_t *)segPtr->bezSegs.ptr, segPtr->bezSegs.cnt);
+ data->newTrack.trk = NewBezierTrack( segPtr->u.b.pos,
+ &DYNARR_N(trkSeg_t,segPtr->bezSegs,0), segPtr->bezSegs.cnt);
data->newTrack.ep[0] = 0;
data->newTrack.ep[1] = 1;
break;
case SEGPROC_LENGTH:
data->length.length = 0;
- for(int i=0;i<segPtr->bezSegs.cnt;i++) {
+ for(int i=0; i<segPtr->bezSegs.cnt; i++) {
SegProc(cmd,&(DYNARR_N(trkSeg_t,segPtr->bezSegs,i)),&segProcData);
data->length.length += segProcData.length.length;
}
break;
case SEGPROC_SPLIT: ;
- wIndex_t subinx;
+// wIndex_t subinx;
double t;
- double dd;
+// double dd;
coOrd split_p = data->split.pos;
- ANGLE_T angle = GetAngleSegs(segPtr->bezSegs.cnt,(trkSeg_p)segPtr->bezSegs.ptr, &split_p, &inx, &dd, &back, &subinx, NULL);
- coOrd current[4];
+// ANGLE_T angle = GetAngleSegs(segPtr->bezSegs.cnt,&DYNARR_N(trkSeg_t,segPtr->bezSegs,0), &split_p, &inx, &dd, &back, &subinx, NULL);
+// coOrd current[4];
BezierMathDistance(&split_p, segPtr->u.b.pos, 500, &t); //Find t value
- for (int i=0;i<4;i++) {
- current[i] = segPtr->u.b.pos[i];
+// for (int i=0;i<4;i++) {
+// current[i] = segPtr->u.b.pos[i];
- }
- for (int i=0;i<2;i++) {
+// }
+ for (int i=0; i<2; i++) {
data->split.newSeg[i].type = segPtr->type;
data->split.newSeg[i].color = segPtr->color;
- data->split.newSeg[i].width = segPtr->width;
- data->split.newSeg[i].bezSegs.ptr = NULL;
- data->split.newSeg[i].bezSegs.cnt = 0;
- data->split.newSeg[i].bezSegs.max = 0;
+ data->split.newSeg[i].lineWidth = segPtr->lineWidth;
+ DYNARR_INIT( trkSeg_t, data->split.newSeg[i].bezSegs );
}
- BezierSplit(segPtr->u.b.pos, data->split.newSeg[0].u.b.pos, data->split.newSeg[1].u.b.pos, t);
+ BezierSplit(segPtr->u.b.pos, data->split.newSeg[0].u.b.pos,
+ data->split.newSeg[1].u.b.pos, t);
- FixUpBezierSeg(data->split.newSeg[0].u.b.pos,&data->split.newSeg[0],segPtr->type == SEG_BEZTRK);
- FixUpBezierSeg(data->split.newSeg[1].u.b.pos,&data->split.newSeg[1],segPtr->type == SEG_BEZTRK);
+ FixUpBezierSeg(data->split.newSeg[0].u.b.pos,&data->split.newSeg[0],
+ segPtr->type == SEG_BEZTRK);
+ FixUpBezierSeg(data->split.newSeg[1].u.b.pos,&data->split.newSeg[1],
+ segPtr->type == SEG_BEZTRK);
data->split.length[0] = data->split.newSeg[0].u.b.length;
data->split.length[1] = data->split.newSeg[1].u.b.length;
@@ -1575,11 +1698,12 @@ LOG( log_bezierSegments, 1, ( " BezTr-Exit2 --> SI%d A%0.3f P[%0.3f %0.3f] D%
case SEGPROC_GETANGLE:
inx = 0;
back = FALSE;
- subSegsPtr = (trkSeg_p) segPtr->bezSegs.ptr;
+ subSegsPtr = &DYNARR_N(trkSeg_t,segPtr->bezSegs,0);
coOrd pos = data->getAngle.pos;
-LOG( log_bezierSegments, 1, ( " BezGA-In P[%0.3f %0.3f] \n", pos.x, pos.y))
- data->getAngle.angle = GetAngleSegs(segPtr->bezSegs.cnt,subSegsPtr, &pos, &inx, NULL, &back, NULL, NULL);
- //Recurse for Bezier sub-segs (only straights and curves)
+ LOG( log_bezierSegments, 1, ( " BezGA-In P[%0.3f %0.3f] \n", pos.x, pos.y))
+ data->getAngle.angle = GetAngleSegs(segPtr->bezSegs.cnt,subSegsPtr, &pos, &inx,
+ NULL, &back, NULL, NULL);
+ //Recurse for Bezier sub-segs (only straights and curves)
data->getAngle.negative_radius = FALSE;
data->getAngle.backwards = back;
@@ -1588,13 +1712,13 @@ LOG( log_bezierSegments, 1, ( " BezGA-In P[%0.3f %0.3f] \n", pos.x, pos.y))
subSegsPtr +=inx;
if (subSegsPtr->type == SEG_CRVTRK || subSegsPtr->type == SEG_CRVLIN ) {
data->getAngle.radius = fabs(subSegsPtr->u.c.radius);
- if (subSegsPtr->u.c.radius<0 ) data->getAngle.negative_radius = TRUE;
+ if (subSegsPtr->u.c.radius<0 ) { data->getAngle.negative_radius = TRUE; }
data->getAngle.center = subSegsPtr->u.c.center;
- }
- else data->getAngle.radius = 0.0;
-LOG( log_bezierSegments, 1, ( " BezGA-Out SI%d A%0.3f P[%0.3f %0.3f] B%d\n", inx, data->getAngle.angle, pos.x, pos.y, back))
+ } else { data->getAngle.radius = 0.0; }
+ LOG( log_bezierSegments, 1, ( " BezGA-Out SI%d A%0.3f P[%0.3f %0.3f] B%d\n",
+ inx, data->getAngle.angle, pos.x, pos.y, back))
break;
-
+
}
}
@@ -1607,7 +1731,8 @@ LOG( log_bezierSegments, 1, ( " BezGA-Out SI%d A%0.3f P[%0.3f %0.3f] B%d\n",
*/
-EXPORT void SetBezierData( track_p p, coOrd pos[4], wDrawColor color, DIST_T width )
+EXPORT void SetBezierData( track_p p, coOrd pos[4], wDrawColor color,
+ LWIDTH_T lineWidth )
{
BOOL_T bTrack = (GetTrkType(p) == T_BEZIER);
struct extraDataBezier_t *xx = GET_EXTRA_DATA(p, T_NOTRACK, extraDataBezier_t);
@@ -1618,15 +1743,12 @@ EXPORT void SetBezierData( track_p p, coOrd pos[4], wDrawColor color, DIST_T wid
xx->a0 = FindAngle(pos[1],pos[0]);
xx->a1 = FindAngle(pos[2],pos[3]);
xx->segsColor = color;
- xx->segsWidth = width;
+ xx->segsLineWidth = lineWidth;
FixUpBezier(pos, xx, bTrack);
ComputeBezierBoundingBox( p, xx );
if ( bTrack ) {
- // Should call SetTrkEndPoint but we may be already connected
- p->endPt[0].pos = pos[0];
- p->endPt[0].angle = xx->a0;
- p->endPt[1].pos = pos[3];
- p->endPt[1].angle = xx->a1;
+ SetTrkEndPointSilent( p, 0, pos[0], xx->a0 );
+ SetTrkEndPointSilent( p, 1, pos[3], xx->a1 );
CheckTrackLength( p );
SetTrkBits( p, TB_HIDEDESC );
}
@@ -1638,17 +1760,25 @@ track_p NewBezierTrack(coOrd pos[4], trkSeg_t * tempsegs, int count)
track_p p;
p = NewTrack( 0, T_BEZIER, 2, sizeof *(extraDataBezier_t*)NULL );
SetBezierData( p, pos, wDrawColorBlack, 0 );
-LOG( log_bezier, 1, ( "NewBezierTrack( EP1 %0.3f, %0.3f, CP1 %0.3f, %0.3f, CP2 %0.3f, %0.3f, EP2 %0.3f, %0.3f ) = %d\n", pos[0].x, pos[0].y, pos[1].x, pos[1].y, pos[2].x, pos[2].y, pos[3].x, pos[3].y, GetTrkIndex(p) ) )
+ LOG( log_bezier, 1,
+ ( "NewBezierTrack( EP1 %0.3f, %0.3f, CP1 %0.3f, %0.3f, CP2 %0.3f, %0.3f, EP2 %0.3f, %0.3f ) = %d\n",
+ pos[0].x, pos[0].y, pos[1].x, pos[1].y, pos[2].x, pos[2].y, pos[3].x, pos[3].y,
+ GetTrkIndex(p) ) )
return p;
}
-EXPORT track_p NewBezierLine( coOrd pos[4], trkSeg_t * tempsegs, int count, wDrawColor color, DIST_T width )
+EXPORT track_p NewBezierLine( coOrd pos[4], trkSeg_t * tempsegs, int count,
+ wDrawColor color, LWIDTH_T lineWidth )
{
track_p p;
- p = NewTrack( 0, T_BZRLIN, 0, sizeof *(extraDataBezier_t*)NULL ); //No endpoints
- SetBezierData( p, pos, color, width );
-LOG( log_bezier, 1, ( "NewBezierLine( EP1 %0.3f, %0.3f, CP1 %0.3f, %0.3f, CP2 %0.3f, %0.3f, EP2 %0.3f, %0.3f) = %d\n", pos[0].x, pos[0].y, pos[1].x, pos[1].y, pos[2].x, pos[2].y, pos[3].x, pos[3].y, GetTrkIndex(p) ) )
+ p = NewTrack( 0, T_BZRLIN, 0,
+ sizeof *(extraDataBezier_t*)NULL ); //No endpoints
+ SetBezierData( p, pos, color, lineWidth );
+ LOG( log_bezier, 1,
+ ( "NewBezierLine( EP1 %0.3f, %0.3f, CP1 %0.3f, %0.3f, CP2 %0.3f, %0.3f, EP2 %0.3f, %0.3f) = %d\n",
+ pos[0].x, pos[0].y, pos[1].x, pos[1].y, pos[2].x, pos[2].y, pos[3].x, pos[3].y,
+ GetTrkIndex(p) ) )
return p;
}
@@ -1673,102 +1803,107 @@ EXPORT void InitTrkBezier( void )
/**
* Return point on Bezier using "t" (from 0 to 1)
*/
-extern coOrd BezierPointByParameter(coOrd p[4], double t)
+static coOrd BezierPointByParameter(coOrd p[4], double t)
{
- double a,b,c,d;
- double mt = 1-t;
- double mt2 = mt*mt;
- double t2 = t*t;
+ double a,b,c,d;
+ double mt = 1-t;
+ double mt2 = mt*mt;
+ double t2 = t*t;
- a = mt2*mt;
- b = mt2*t*3;
- c = mt*t2*3;
- d = t*t2;
+ a = mt2*mt;
+ b = mt2*t*3;
+ c = mt*t2*3;
+ d = t*t2;
- coOrd o;
- o.x = a*p[0].x+b*p[1].x+c*p[2].x+d*p[3].x;
- o.y = a*p[0].y+b*p[1].y+c*p[2].y+d*p[3].y;
+ coOrd o;
+ o.x = a*p[0].x+b*p[1].x+c*p[2].x+d*p[3].x;
+ o.y = a*p[0].y+b*p[1].y+c*p[2].y+d*p[3].y;
- return o;
+ return o;
}
/**
* Find distance from point to Bezier. Return also the "t" value of that closest point.
*/
-extern DIST_T BezierMathDistance( coOrd * pos, coOrd p[4], int segments, double * t_value)
+static DIST_T BezierMathDistance( coOrd * pos, coOrd p[4], int segments,
+ double * t_value)
{
- DIST_T dd = DIST_INF;
- double t = 0.0;
- coOrd pt;
- coOrd save_pt = p[0];
- for (int i=0; i<=segments; i++) {
- pt = BezierPointByParameter(p, (double)i/segments);
- if (FindDistance(*pos,pt) < dd) {
- dd = FindDistance(*pos,pt);
- t = (double)i/segments;
- save_pt = pt;
- }
- }
- if (t_value) *t_value = t;
- * pos = save_pt;
- return dd;
+ DIST_T dd = DIST_INF;
+ double t = 0.0;
+ coOrd pt;
+ coOrd save_pt = p[0];
+ for (int i=0; i<=segments; i++) {
+ pt = BezierPointByParameter(p, (double)i/segments);
+ if (FindDistance(*pos,pt) < dd) {
+ dd = FindDistance(*pos,pt);
+ t = (double)i/segments;
+ save_pt = pt;
+ }
+ }
+ if (t_value) { *t_value = t; }
+ * pos = save_pt;
+ return dd;
}
-extern coOrd BezierMathFindNearestPoint(coOrd *pos, coOrd p[4], int segments) {
- double t = 0.0;
- BezierMathDistance(pos, p, segments, &t);
- return BezierPointByParameter(p, t);
+static coOrd BezierMathFindNearestPoint(coOrd *pos, coOrd p[4], int segments)
+{
+ double t = 0.0;
+ BezierMathDistance(pos, p, segments, &t);
+ return BezierPointByParameter(p, t);
}
-void BezierSlice(coOrd input[], coOrd output[], double t) {
+void BezierSlice(coOrd input[], coOrd output[], double t)
+{
coOrd p1,p12,p2,p23,p3,p34,p4;
coOrd p123, p234, p1234;
- p1 = input[0];
- p2 = input[1];
- p3 = input[2];
- p4 = input[3];
+ p1 = input[0];
+ p2 = input[1];
+ p3 = input[2];
+ p4 = input[3];
- p12.x = (p2.x-p1.x)*t+p1.x;
- p12.y = (p2.y-p1.y)*t+p1.y;
+ p12.x = (p2.x-p1.x)*t+p1.x;
+ p12.y = (p2.y-p1.y)*t+p1.y;
- p23.x = (p3.x-p2.x)*t+p2.x;
- p23.y = (p3.y-p2.y)*t+p2.y;
+ p23.x = (p3.x-p2.x)*t+p2.x;
+ p23.y = (p3.y-p2.y)*t+p2.y;
- p34.x = (p4.x-p3.x)*t+p3.x;
- p34.y = (p4.y-p3.y)*t+p3.y;
+ p34.x = (p4.x-p3.x)*t+p3.x;
+ p34.y = (p4.y-p3.y)*t+p3.y;
- p123.x = (p23.x-p12.x)*t+p12.x;
- p123.y = (p23.y-p12.y)*t+p12.y;
+ p123.x = (p23.x-p12.x)*t+p12.x;
+ p123.y = (p23.y-p12.y)*t+p12.y;
- p234.x = (p34.x-p23.x)*t+p23.x;
- p234.y = (p34.y-p23.y)*t+p23.y;
+ p234.x = (p34.x-p23.x)*t+p23.x;
+ p234.y = (p34.y-p23.y)*t+p23.y;
- p1234.x = (p234.x-p123.x)*t+p123.x;
- p1234.y = (p234.y-p123.y)*t+p123.y;
+ p1234.x = (p234.x-p123.x)*t+p123.x;
+ p1234.y = (p234.y-p123.y)*t+p123.y;
- output[0]= p1;
- output[1] = p12;
- output[2] = p123;
- output[3] = p1234;
+ output[0]= p1;
+ output[1] = p12;
+ output[2] = p123;
+ output[3] = p1234;
};
/**
* Split bezier into two parts
*/
-extern void BezierSplit(coOrd input[], coOrd left[], coOrd right[] , double t) {
+static void BezierSplit(coOrd input[4], coOrd left[4], coOrd right[4],
+ double t)
+{
BezierSlice(input,left,t);
coOrd back[4],backright[4];
- for (int i = 0;i<4;i++) {
+ for (int i = 0; i<4; i++) {
back[i] = input[3-i];
}
BezierSlice(back,backright,1-t);
- for (int i = 0;i<4;i++) {
+ for (int i = 0; i<4; i++) {
right[i] = backright[3-i];
}
@@ -1779,23 +1914,26 @@ extern void BezierSplit(coOrd input[], coOrd left[], coOrd right[] , double t) {
* If close enough (length of control polygon exceeds chord by < error) add length of polygon.
* Else split and recurse
*/
-double BezierAddLengthIfClose(coOrd start[4], double error) {
- coOrd left[4], right[4]; /* bez poly splits */
- double len = 0.0; /* arc length */
- double chord; /* chord length */
- int index; /* misc counter */
-
- for (index = 0; index <= 2; index++)
- len = len + FindDistance(start[index],start[index+1]); //add up control polygon
+double BezierAddLengthIfClose(coOrd start[4], double error)
+{
+ coOrd left[4], right[4]; /* bez poly splits */
+ double len = 0.0; /* arc length */
+ double chord; /* chord length */
+ int index; /* misc counter */
+
+ for (index = 0; index <= 2; index++) {
+ len = len + FindDistance(start[index],
+ start[index+1]); //add up control polygon
+ }
- chord = FindDistance(start[0],start[3]); //find chord length
+ chord = FindDistance(start[0],start[3]); //find chord length
- if((len-chord) > error) { // If error too large -
- BezierSplit(start,left,right,0.5); /* split in two */
- len = BezierAddLengthIfClose(left, error); /* recurse left side */
- len += BezierAddLengthIfClose(right, error); /* recurse right side */
- }
- return len; // Add length of this curve
+ if((len-chord) > error) { // If error too large -
+ BezierSplit(start,left,right,0.5); /* split in two */
+ len = BezierAddLengthIfClose(left, error); /* recurse left side */
+ len += BezierAddLengthIfClose(right, error); /* recurse right side */
+ }
+ return len; // Add length of this curve
}
@@ -1803,30 +1941,30 @@ double BezierAddLengthIfClose(coOrd start[4], double error) {
* Use recursive splitting to get close approximation ot length of bezier
*
*/
-extern double BezierMathLength(coOrd p[4], double error)
+static double BezierMathLength(coOrd p[4], double error)
{
- if (error == 0.0) error = 0.01;
- return BezierAddLengthIfClose(p, error); /* kick off recursion */
+ if (error == 0.0) { error = 0.01; }
+ return BezierAddLengthIfClose(p, error); /* kick off recursion */
}
coOrd BezierFirstDerivative(coOrd p[4], double t)
{
- //checkParameterT(t);
+ //checkParameterT(t);
- double tSquared = t * t;
- double s0 = -3 + 6 * t - 3 * tSquared;
- double s1 = 3 - 12 * t + 9 * tSquared;
- double s2 = 6 * t - 9 * tSquared;
- double s3 = 3 * tSquared;
- double resultX = p[0].x * s0 + p[1].x * s1 + p[2].x * s2 + p[3].x * s3;
- double resultY = p[0].y * s0 + p[1].y * s1 + p[2].y * s2 + p[3].y * s3;
+ double tSquared = t * t;
+ double s0 = -3 + 6 * t - 3 * tSquared;
+ double s1 = 3 - 12 * t + 9 * tSquared;
+ double s2 = 6 * t - 9 * tSquared;
+ double s3 = 3 * tSquared;
+ double resultX = p[0].x * s0 + p[1].x * s1 + p[2].x * s2 + p[3].x * s3;
+ double resultY = p[0].y * s0 + p[1].y * s1 + p[2].y * s2 + p[3].y * s3;
- coOrd v;
+ coOrd v;
- v.x = resultX;
- v.y = resultY;
- return v;
+ v.x = resultX;
+ v.y = resultY;
+ return v;
}
/**
@@ -1835,61 +1973,63 @@ coOrd BezierFirstDerivative(coOrd p[4], double t)
*/
coOrd BezierSecondDerivative(coOrd p[4], double t)
{
- //checkParameterT(t);
-
- double s0 = 6 - 6 * t;
- double s1 = -12 + 18 * t;
- double s2 = 6 - 18 * t;
- double s3 = 6 * t;
- double resultX = p[0].x * s0 + p[1].x * s1 + p[2].x * s2 + p[3].x * s3;
- double resultY = p[0].y * s0 + p[1].y * s1 + p[2].y * s2 + p[3].y * s3;
-
- coOrd v;
- v.x = resultX;
- v.y = resultY;
- return v;
+ //checkParameterT(t);
+
+ double s0 = 6 - 6 * t;
+ double s1 = -12 + 18 * t;
+ double s2 = 6 - 18 * t;
+ double s3 = 6 * t;
+ double resultX = p[0].x * s0 + p[1].x * s1 + p[2].x * s2 + p[3].x * s3;
+ double resultY = p[0].y * s0 + p[1].y * s1 + p[2].y * s2 + p[3].y * s3;
+
+ coOrd v;
+ v.x = resultX;
+ v.y = resultY;
+ return v;
}
/**
* Get curvature of a Bezier at a point
*/
-extern double BezierCurvature(coOrd p[4], double t, coOrd * center)
+static double BezierCurvature(coOrd p[4], double t, coOrd * center)
{
- //checkParameterT(t);
+ //checkParameterT(t);
- coOrd d1 = BezierFirstDerivative(p, t);
- coOrd d2 = BezierSecondDerivative(p, t);
+ coOrd d1 = BezierFirstDerivative(p, t);
+ coOrd d2 = BezierSecondDerivative(p, t);
- if (center) {
- double curvnorm = (d1.x * d1.x + d1.y* d1.y)/(d1.x * d2.y - d2.x * d1.y);
- coOrd p = BezierPointByParameter(&p, t);
- center->x = p.x-d1.y*curvnorm;
- center->y = p.y+d1.x*curvnorm;
- }
+ if (center) {
+ double curvnorm = (d1.x * d1.x + d1.y* d1.y)/(d1.x * d2.y - d2.x * d1.y);
+ coOrd p1 = BezierPointByParameter(p, t);
+ center->x = p1.x-d1.y*curvnorm;
+ center->y = p1.y+d1.x*curvnorm;
+ }
- double r1 = sqrt(pow(d1.x * d1.x + d1.y* d1.y, 3.0));
- double r2 = fabs(d1.x * d2.y - d2.x * d1.y);
- return r2 / r1;
+ double r1 = sqrt(pow(d1.x * d1.x + d1.y* d1.y, 3.0));
+ double r2 = fabs(d1.x * d2.y - d2.x * d1.y);
+ return r2 / r1;
}
/**
* Get Maximum Curvature
*/
-extern double BezierMaxCurve(coOrd p[4]) {
- double max = 0;
- for (int t = 0;t<100;t++) {
- double curv = BezierCurvature(p, t/100, NULL);
- if (max<curv) max = curv;
- }
- return max;
+static double BezierMaxCurve(coOrd p[4])
+{
+ double max = 0;
+ for (int t = 0; t<100; t++) {
+ double curv = BezierCurvature(p, t/100, NULL);
+ if (max<curv) { max = curv; }
+ }
+ return max;
}
/**
* Get Minimum Radius
*/
-extern double BezierMathMinRadius(coOrd p[4]) {
- double curv = BezierMaxCurve(p);
- if (curv >= 1000.0 || curv <= 0.001 ) return 0.0;
- return 1/curv;
+static double BezierMathMinRadius(coOrd p[4])
+{
+ double curv = BezierMaxCurve(p);
+ if (curv >= 1000.0 || curv <= 0.001 ) { return 0.0; }
+ return 1/curv;
}
diff --git a/app/bin/tbezier.h b/app/bin/tbezier.h
index 5699eca..e2f28c5 100644
--- a/app/bin/tbezier.h
+++ b/app/bin/tbezier.h
@@ -17,48 +17,44 @@
*
* 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 "common.h"
#include "track.h" //- drawLineType
typedef struct extraDataBezier_t {
- extraDataBase_t base;
- coOrd pos[4];
- DIST_T minCurveRadius;
- ANGLE_T a0, a1;
- DIST_T length;
- dynArr_t arcSegs;
- coOrd descriptionOff;
- DIST_T segsWidth;
- wDrawColor segsColor;
- drawLineType_e lineType;
- } extraDataBezier_t;
+ extraDataBase_t base;
+ coOrd pos[4];
+ DIST_T minCurveRadius;
+ ANGLE_T a0, a1;
+ DIST_T length;
+ dynArr_t arcSegs;
+ coOrd descriptionOff;
+ LWIDTH_T segsLineWidth;
+ wDrawColor segsColor;
+ drawLineType_e lineType;
+} extraDataBezier_t;
-void BezierSplit(coOrd[4], coOrd[4], coOrd[4] , double );
-coOrd BezierPointByParameter(coOrd[4], double);
-double BezierMathLength(coOrd[4], double);
-coOrd BezierFirstDerivative(coOrd p[4], double);
-coOrd BezierSecondDerivative(coOrd p[4], double);
-double BezierCurvature(coOrd[4], double , coOrd *);
-double BezierMaxCurve(coOrd[4]);
-double BezierMathMinRadius(coOrd[4]);
-coOrd BezierMathFindNearestPoint(coOrd *, coOrd[4] , int );
-void SetBezierData( track_p p, coOrd pos[4], wDrawColor color, DIST_T width );
-track_p NewBezierTrack(coOrd[4], trkSeg_p , int );
-track_p NewBezierLine(coOrd[4], trkSeg_p , int, wDrawColor, DIST_T);
-DIST_T BezierMathDistance( coOrd *, coOrd[4], int , double * );
+void SetBezierData( track_p p, coOrd pos[4], wDrawColor color,
+ LWIDTH_T lineWidth );
+track_p NewBezierTrack(coOrd[4], trkSeg_p, int );
+track_p NewBezierLine(coOrd[4], trkSeg_p, int, wDrawColor, DIST_T);
void FixUpBezier(coOrd[4], struct extraDataBezier_t*, BOOL_T);
-void FixUpBezierSeg(coOrd[4], trkSeg_p , BOOL_T);
+void FixUpBezierSeg(coOrd[4], trkSeg_p, BOOL_T);
void FixUpBezierSegs(trkSeg_p p,int segCnt);
BOOL_T GetBezierSegmentFromTrack(track_p, trkSeg_p);
BOOL_T GetTracksFromBezierTrack(track_p trk, track_p newTracks[2]);
-BOOL_T GetTracksFromBezierSegment(trkSeg_p bezSeg, track_p newTracks[2], track_p old);
+BOOL_T GetTracksFromBezierSegment(trkSeg_p bezSeg, track_p newTracks[2],
+ track_p old);
void SetBezierLineType( track_p trk, int width );
BOOL_T GetBezierMiddle( track_p, coOrd * );
-DIST_T BezierDescriptionDistance(coOrd pos,track_p trk, coOrd *, BOOL_T, BOOL_T * );
+void MoveBezier( track_p trk, coOrd orig );
+void RotateBezier( track_p trk, coOrd orig, ANGLE_T angle );
+
+DIST_T BezierDescriptionDistance(coOrd pos,track_p trk, coOrd *, BOOL_T,
+ BOOL_T * );
STATUS_T BezierDescriptionMove(track_p trk,wAction_t action,coOrd pos );
diff --git a/app/bin/tcornu.c b/app/bin/tcornu.c
index 5119a5e..3e4b772 100644
--- a/app/bin/tcornu.c
+++ b/app/bin/tcornu.c
@@ -32,7 +32,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
*/
@@ -66,7 +66,9 @@ static DIST_T GetLengthCornu( track_p );
/*
* Run after any changes to the Cornu points
*/
-void SetUpCornuParmFromTracks(track_p trk[2],cornuParm_t * cp, struct extraDataCornu_t* xx) {
+void SetUpCornuParmFromTracks(track_p trk[2],cornuParm_t * cp,
+ struct extraDataCornu_t* xx)
+{
if (!trk[0]) {
cp->center[0] = xx->c[0];
cp->angle[0] = xx->a[0];
@@ -79,13 +81,15 @@ void SetUpCornuParmFromTracks(track_p trk[2],cornuParm_t * cp, struct extraDataC
}
}
-EXPORT BOOL_T FixUpCornu(coOrd pos[2], track_p trk[2], EPINX_T ep[2], struct extraDataCornu_t* xx) {
+EXPORT BOOL_T FixUpCornu(coOrd pos[4], track_p trk[2], EPINX_T ep[2],
+ struct extraDataCornu_t* xx)
+{
cornuParm_t cp;
SetUpCornuParmFromTracks(trk,&cp,xx);
- if (!CallCornu(pos, trk, ep, &xx->arcSegs, &cp)) return FALSE;
+ if (!CallCornu(pos, trk, ep, &xx->arcSegs, &cp)) { return FALSE; }
xx->r[0] = cp.radius[0];
if (cp.radius[0]==0) {
@@ -103,34 +107,37 @@ EXPORT BOOL_T FixUpCornu(coOrd pos[2], track_p trk[2], EPINX_T ep[2], struct ext
xx->minCurveRadius = CornuMinRadius(pos,xx->arcSegs);
xx->windingAngle = CornuTotalWindingArc(pos,xx->arcSegs);
DIST_T last_c;
- if (xx->r[0] == 0) last_c = 0;
- else last_c = 1/xx->r[0];
+ if (xx->r[0] == 0) { last_c = 0; }
+ else { last_c = 1/xx->r[0]; }
xx->maxRateofChange = CornuMaxRateofChangeofCurvature(pos,xx->arcSegs,&last_c);
xx->length = CornuLength(pos, xx->arcSegs);
return TRUE;
}
-EXPORT BOOL_T FixUpCornu0(coOrd pos[2],coOrd center[2],ANGLE_T angle[2],DIST_T radius[2],struct extraDataCornu_t* xx) {
+EXPORT BOOL_T FixUpCornu0(coOrd pos[4],coOrd center[2],ANGLE_T angle[2],
+ DIST_T radius[2],struct extraDataCornu_t* xx)
+{
DIST_T last_c;
- if (!CallCornu0(pos, center, angle, radius,&xx->arcSegs,FALSE)) return FALSE;
+ if (!CallCornu0(pos, center, angle, radius,&xx->arcSegs,FALSE)) { return FALSE; }
xx->minCurveRadius = CornuMinRadius(pos,
- xx->arcSegs);
- if (xx->r[0] == 0) last_c = 0;
- else last_c = 1/xx->r[0];
+ xx->arcSegs);
+ if (xx->r[0] == 0) { last_c = 0; }
+ else { last_c = 1/xx->r[0]; }
xx->maxRateofChange = CornuMaxRateofChangeofCurvature(pos,xx->arcSegs,&last_c);
xx->length = CornuLength(pos, xx->arcSegs);
xx->windingAngle = CornuTotalWindingArc(pos,xx->arcSegs);
return TRUE;
}
-EXPORT char * CreateSegPathList(track_p trk) {
+EXPORT char * CreateSegPathList(track_p trk)
+{
char * cp = "\0\0";
- if (GetTrkType(trk) != T_CORNU) return cp;
+ if (GetTrkType(trk) != T_CORNU) { return cp; }
struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
- if (xx->cornuPath) MyFree(xx->cornuPath);
+ if (xx->cornuPath) { MyFree(xx->cornuPath); }
xx->cornuPath = MyMalloc(xx->arcSegs.cnt+2);
int j= 0;
- for (int i = 0;i<xx->arcSegs.cnt;i++,j++) {
+ for (int i = 0; i<xx->arcSegs.cnt; i++,j++) {
xx->cornuPath[j] = i+1;
}
xx->cornuPath[j] = cp[0];
@@ -139,49 +146,54 @@ EXPORT char * CreateSegPathList(track_p trk) {
}
+#if 0
static void GetCornuAngles( ANGLE_T *a0, ANGLE_T *a1, track_p trk )
{
- assert( trk != NULL );
-
- *a0 = NormalizeAngle( GetTrkEndAngle(trk,0) );
- *a1 = NormalizeAngle( GetTrkEndAngle(trk,1) );
-
- LOG( log_cornu, 4, ( "getCornuAngles: = %0.3f %0.3f\n", *a0, *a1 ) )
+ CHECK( trk != NULL );
+
+ *a0 = NormalizeAngle( GetTrkEndAngle(trk,0) );
+ *a1 = NormalizeAngle( GetTrkEndAngle(trk,1) );
+
+ LOG( log_cornu, 4, ( "getCornuAngles: = %0.3f %0.3f\n", *a0, *a1 ) )
}
+#endif
static void ComputeCornuBoundingBox( track_p trk, struct extraDataCornu_t * xx )
{
- coOrd orig, size;
+ coOrd orig, size;
+
+ GetSegBounds(zero,0,xx->arcSegs.cnt,&DYNARR_N(trkSeg_t,xx->arcSegs,0), &orig,
+ &size);
- GetSegBounds(zero,0,xx->arcSegs.cnt,xx->arcSegs.ptr, &orig, &size);
+ coOrd hi, lo;
- coOrd hi, lo;
-
- lo.x = orig.x;
- lo.y = orig.y;
- hi.x = orig.x+size.x;
- hi.y = orig.y+size.y;
+ lo.x = orig.x;
+ lo.y = orig.y;
+ hi.x = orig.x+size.x;
+ hi.y = orig.y+size.y;
- SetBoundingBox( trk, hi, lo );
+ SetBoundingBox( trk, hi, lo );
}
DIST_T CornuDescriptionDistance(
- coOrd pos,
- track_p trk,
- coOrd * dpos,
- BOOL_T show_hidden,
- BOOL_T * hidden)
+ coOrd pos,
+ track_p trk,
+ coOrd * dpos,
+ BOOL_T show_hidden,
+ BOOL_T * hidden)
{
coOrd p1;
- if (hidden) *hidden = FALSE;
- if ( GetTrkType( trk ) != T_CORNU || ((( GetTrkBits( trk ) & TB_HIDEDESC ) != 0) && !show_hidden) )
+ if (hidden) { *hidden = FALSE; }
+ if ( GetTrkType( trk ) != T_CORNU
+ || ((( GetTrkBits( trk ) & TB_HIDEDESC ) != 0) && !show_hidden) ) {
return DIST_INF;
+ }
struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
- if (( GetTrkBits( trk ) & TB_HIDEDESC ) != 0) xx->descriptionOff = zero;
-
+ if (( GetTrkBits( trk ) & TB_HIDEDESC ) != 0) { xx->descriptionOff = zero; }
+
coOrd end0, end0off, end1, end1off;
end0 = xx->pos[0];
end1 = xx->pos[1];
@@ -193,32 +205,34 @@ DIST_T CornuDescriptionDistance(
p1.x = (end1off.x - end0off.x)*(xx->descriptionOff.x+0.5) + end0off.x;
p1.y = (end1off.y - end0off.y)*(xx->descriptionOff.x+0.5) + end0off.y;
- if (hidden) *hidden = (GetTrkBits( trk ) & TB_HIDEDESC);
+ if (hidden) { *hidden = (GetTrkBits( trk ) & TB_HIDEDESC); }
*dpos = p1;
coOrd tpos = pos;
- if (DistanceCornu(trk,&tpos)<FindDistance( p1, pos ))
+ if (DistanceCornu(trk,&tpos)<FindDistance( p1, pos )) {
return DistanceCornu(trk,&pos);
+ }
return FindDistance( p1, pos );
}
typedef struct {
- coOrd pos;
- ANGLE_T angle;
- } pos_angle_t;
+ coOrd pos;
+ ANGLE_T angle;
+} pos_angle_t;
static void DrawCornuDescription(
- track_p trk,
- drawCmd_p d,
- wDrawColor color )
+ track_p trk,
+ drawCmd_p d,
+ wDrawColor color )
{
- wFont_p fp;
- coOrd epos0, epos1, offpos0, offpos1;
+ coOrd epos0, epos1, offpos0, offpos1;
- if (layoutLabels == 0)
+ if (layoutLabels == 0) {
+ return;
+ }
+ if ((labelEnable&LABELENABLE_TRKDESC)==0) {
return;
- if ((labelEnable&LABELENABLE_TRKDESC)==0)
- return;
+ }
struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
epos0 = xx->pos[0];
@@ -227,50 +241,53 @@ static void DrawCornuDescription(
Translate(&offpos0,epos0,a+90,xx->descriptionOff.y);
Translate(&offpos1,epos1,a+90,xx->descriptionOff.y);
- fp = wStandardFont( F_TIMES, FALSE, FALSE );
+ wStandardFont( F_TIMES, FALSE, FALSE );
- sprintf( message, _("Cornu: L %s A %0.3f L %s MinR %s"),
- FormatDistance(FindDistance(xx->pos[0], xx->pos[1])),
- FindAngle(xx->pos[0], xx->pos[1]),
- FormatDistance(xx->length),
- FormatDistance((xx->minCurveRadius>=DIST_INF)?0.0:xx->minCurveRadius));
- DrawLine(d,xx->pos[0],offpos0,0,color);
- DrawLine(d,xx->pos[1],offpos1,0,color);
- DrawDimLine( d, offpos0, offpos1, message, (wFontSize_t)descriptionFontSize, xx->descriptionOff.x+0.5, 0, color, 0x00 );
+ sprintf( message, _("Cornu: L %s A %0.3f L %s MinR %s"),
+ FormatDistance(FindDistance(xx->pos[0], xx->pos[1])),
+ FindAngle(xx->pos[0], xx->pos[1]),
+ FormatDistance(xx->length),
+ FormatDistance((xx->minCurveRadius>=DIST_INF)?0.0:xx->minCurveRadius));
+ DrawLine(d,xx->pos[0],offpos0,0,color);
+ DrawLine(d,xx->pos[1],offpos1,0,color);
+ DrawDimLine( d, offpos0, offpos1, message, (wFontSize_t)descriptionFontSize,
+ xx->descriptionOff.x+0.5, 0, color, 0x00 );
- if (GetTrkBits( trk ) & TB_DETAILDESC) {
+ if (GetTrkBits( trk ) & TB_DETAILDESC) {
coOrd details_pos;
details_pos.x = (offpos1.x - offpos0.x)*(xx->descriptionOff.x+0.5) + offpos0.x;
- details_pos.y = (offpos1.y - offpos0.y)*(xx->descriptionOff.x+0.5) + offpos0.y-(2*descriptionFontSize/mainD.dpi);
+ details_pos.y = (offpos1.y - offpos0.y)*(xx->descriptionOff.x+0.5) + offpos0.y-
+ (2*descriptionFontSize/mainD.dpi);
AddTrkDetails(d, trk, details_pos, xx->length, color);
- }
+ }
}
STATUS_T CornuDescriptionMove(
- track_p trk,
- wAction_t action,
- coOrd pos )
+ track_p trk,
+ wAction_t action,
+ coOrd pos )
{
- static coOrd p0,p1;
- static BOOL_T editState;
+// static coOrd p0,p1;
+// static BOOL_T editState;
- if (GetTrkType(trk) != T_CORNU) return C_CONTINUE;
+ if (GetTrkType(trk) != T_CORNU) { return C_CONTINUE; }
struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
ANGLE_T ap;
- coOrd end0, end1;
- end0 = xx->pos[0];
+ coOrd end0, end1;
+ end0 = xx->pos[0];
end1 = xx->pos[1];
ap = NormalizeAngle(FindAngle(end0,pos)-FindAngle(end0,end1));
xx->descriptionOff.y = FindDistance(end0,pos)*sin(D2R(ap));
- xx->descriptionOff.x = -0.5 + FindDistance(end0,pos)*cos(D2R(ap))/FindDistance(end0,end1);
- if (xx->descriptionOff.x > 0.5) xx->descriptionOff.x = 0.5;
- if (xx->descriptionOff.x < -0.5) xx->descriptionOff.x = -0.5;
-
+ xx->descriptionOff.x = -0.5 + FindDistance(end0,
+ pos)*cos(D2R(ap))/FindDistance(end0,end1);
+ if (xx->descriptionOff.x > 0.5) { xx->descriptionOff.x = 0.5; }
+ if (xx->descriptionOff.x < -0.5) { xx->descriptionOff.x = -0.5; }
+
return C_CONTINUE;
}
@@ -281,66 +298,69 @@ STATUS_T CornuDescriptionMove(
*/
static struct {
- coOrd pos[2];
- ANGLE_T angle[2];
- DIST_T radius[2];
- coOrd center[2];
- FLOAT_T elev[2];
- FLOAT_T length;
- FLOAT_T grade;
- DIST_T minRadius;
- DIST_T maxRateOfChange;
- ANGLE_T windingAngle;
- unsigned int layerNumber;
- dynArr_t segs;
- long width;
- wDrawColor color;
- } cornData;
+ coOrd pos[2];
+ ANGLE_T angle[2];
+ DIST_T radius[2];
+ coOrd center[2];
+ FLOAT_T elev[2];
+ FLOAT_T length;
+ FLOAT_T grade;
+ DIST_T minRadius;
+ DIST_T maxRateOfChange;
+ ANGLE_T windingAngle;
+ unsigned int layerNumber;
+ dynArr_t segs;
+ long lineWidth;
+ wDrawColor color;
+} cornData;
typedef enum { P0, A0, R0, C0, Z0, P1, A1, R1, C1, Z1, RA, RR, WA, LN, GR, LY } cornuDesc_e;
static descData_t cornuDesc[] = {
-/*P0*/ { DESC_POS, N_("End Pt 1: X,Y"), &cornData.pos[0] },
-/*A0*/ { DESC_ANGLE, N_("End Angle"), &cornData.angle[0] },
-/*R0*/ { DESC_DIM, N_("Radius "), &cornData.radius[0] },
-/*C0*/ { DESC_POS, N_("Center X,Y"), &cornData.center[0] },
-/*Z0*/ { DESC_DIM, N_("Z1"), &cornData.elev[0] },
-/*P1*/ { DESC_POS, N_("End Pt 2: X,Y"), &cornData.pos[1] },
-/*A1*/ { DESC_ANGLE, N_("End Angle"), &cornData.angle[1] },
-/*R1*/ { DESC_DIM, N_("Radius"), &cornData.radius[1] },
-/*C1*/ { DESC_POS, N_("Center X,Y"), &cornData.center[1] },
-/*Z1*/ { DESC_DIM, N_("Z2"), &cornData.elev[1] },
-/*RA*/ { DESC_DIM, N_("Minimum Radius"), &cornData.minRadius },
-/*RR*/ { DESC_FLOAT, N_("Max Rate Of Curve Change/Scale"), &cornData.maxRateOfChange },
-/*WA*/ { DESC_ANGLE, N_("Total Winding Angle"), &cornData.windingAngle },
-/*LN*/ { DESC_DIM, N_("Length"), &cornData.length },
-/*GR*/ { DESC_FLOAT, N_("Grade"), &cornData.grade },
-/*LY*/ { DESC_LAYER, N_("Layer"), &cornData.layerNumber },
- { DESC_NULL } };
-
-
-static void UpdateCornu( track_p trk, int inx, descData_p descUpd, BOOL_T final )
+ /*P0*/ { DESC_POS, N_("End Pt 1: X,Y"), &cornData.pos[0] },
+ /*A0*/ { DESC_ANGLE, N_("End Angle"), &cornData.angle[0] },
+ /*R0*/ { DESC_DIM, N_("Radius "), &cornData.radius[0] },
+ /*C0*/ { DESC_POS, N_("Center X,Y"), &cornData.center[0] },
+ /*Z0*/ { DESC_DIM, N_("Z1"), &cornData.elev[0] },
+ /*P1*/ { DESC_POS, N_("End Pt 2: X,Y"), &cornData.pos[1] },
+ /*A1*/ { DESC_ANGLE, N_("End Angle"), &cornData.angle[1] },
+ /*R1*/ { DESC_DIM, N_("Radius"), &cornData.radius[1] },
+ /*C1*/ { DESC_POS, N_("Center X,Y"), &cornData.center[1] },
+ /*Z1*/ { DESC_DIM, N_("Z2"), &cornData.elev[1] },
+ /*RA*/ { DESC_DIM, N_("Minimum Radius"), &cornData.minRadius },
+ /*RR*/ { DESC_FLOAT, N_("Max Rate Of Curve Change/Scale"), &cornData.maxRateOfChange },
+ /*WA*/ { DESC_ANGLE, N_("Total Winding Angle"), &cornData.windingAngle },
+ /*LN*/ { DESC_DIM, N_("Length"), &cornData.length },
+ /*GR*/ { DESC_FLOAT, N_("Grade"), &cornData.grade },
+ /*LY*/ { DESC_LAYER, N_("Layer"), &cornData.layerNumber },
+ { DESC_NULL }
+};
+
+
+static void UpdateCornu( track_p trk, int inx, descData_p descUpd,
+ BOOL_T final )
{
BOOL_T updateEndPts;
EPINX_T ep;
cornuParm_t cp;
- if ( inx == -1 )
+ if ( inx == -1 ) {
return;
+ }
updateEndPts = FALSE;
UndrawNewTrack(trk);
struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
switch ( inx ) {
case P0:
- if (GetTrkEndTrk(trk,0)) break;
+ if (GetTrkEndTrk(trk,0)) { break; }
updateEndPts = TRUE;
xx->pos[0] = cornData.pos[0];
Translate(&xx->c[0],xx->pos[0],xx->a[0]+90,xx->r[0]);
cornData.center[0] = xx->c[0];
cornuDesc[P0].mode |= DESC_CHANGE;
cornuDesc[C0].mode |= DESC_CHANGE;
- /* no break */
+ /* no break */
case P1:
- if (GetTrkEndTrk(trk,1)) break;
+ if (GetTrkEndTrk(trk,1)) { break; }
updateEndPts = TRUE;
xx->pos[1]= cornData.pos[1];
Translate(&xx->c[1],xx->pos[1],xx->a[1]-90,xx->r[1]);
@@ -349,7 +369,7 @@ static void UpdateCornu( track_p trk, int inx, descData_p descUpd, BOOL_T final
cornuDesc[C1].mode |= DESC_CHANGE;
break;
case A0:
- if (GetTrkEndTrk(trk,0)) break;
+ if (GetTrkEndTrk(trk,0)) { break; }
updateEndPts = TRUE;
xx->a[0] = cornData.angle[0];
Translate(&xx->c[0],xx->pos[0],xx->a[0]+90,xx->r[0]);
@@ -358,7 +378,7 @@ static void UpdateCornu( track_p trk, int inx, descData_p descUpd, BOOL_T final
cornuDesc[C0].mode |= DESC_CHANGE;
break;
case A1:
- if (GetTrkEndTrk(trk,1)) break;
+ if (GetTrkEndTrk(trk,1)) { break; }
updateEndPts = TRUE;
xx->a[1]= cornData.angle[1];
Translate(&xx->c[1],xx->pos[1],xx->a[1]-90,xx->r[1]);
@@ -367,19 +387,19 @@ static void UpdateCornu( track_p trk, int inx, descData_p descUpd, BOOL_T final
cornuDesc[C1].mode |= DESC_CHANGE;
break;
case C0:
- if (GetTrkEndTrk(trk,0)) break;
+ if (GetTrkEndTrk(trk,0)) { break; }
//updateEndPts = TRUE;
//xx->c[0] = cornData.center[0];
//cornuDesc[C0].mode |= DESC_CHANGE;
break;
case C1:
- if (GetTrkEndTrk(trk,1)) break;
+ if (GetTrkEndTrk(trk,1)) { break; }
//updateEndPts = TRUE;
//xx->c[1] = cornData.center[1];
//cornuDesc[C1].mode |= DESC_CHANGE;
break;
case R0:
- if (GetTrkEndTrk(trk,0)) break;
+ if (GetTrkEndTrk(trk,0)) { break; }
updateEndPts = TRUE;
xx->r[0] = fabs(cornData.radius[0]);
Translate(&xx->c[0],xx->pos[0],NormalizeAngle(xx->a[0]+90),cornData.radius[0]);
@@ -389,7 +409,7 @@ static void UpdateCornu( track_p trk, int inx, descData_p descUpd, BOOL_T final
cornuDesc[C0].mode |= DESC_CHANGE;
break;
case R1:
- if (GetTrkEndTrk(trk,1)) break;
+ if (GetTrkEndTrk(trk,1)) { break; }
updateEndPts = TRUE;
xx->r[1]= fabs(cornData.radius[1]);
Translate(&xx->c[1],xx->pos[1],NormalizeAngle(xx->a[1]-90),cornData.radius[1]);
@@ -401,12 +421,15 @@ static void UpdateCornu( track_p trk, int inx, descData_p descUpd, BOOL_T final
case Z0:
case Z1:
ep = (inx==Z0?0:1);
- UpdateTrkEndElev( trk, ep, GetTrkEndElevUnmaskedMode(trk,ep), cornData.elev[ep], NULL );
+ UpdateTrkEndElev( trk, ep, GetTrkEndElevUnmaskedMode(trk,ep), cornData.elev[ep],
+ NULL );
ComputeElev( trk, 1-ep, FALSE, &cornData.elev[1-ep], NULL, TRUE );
- if ( cornData.length > minLength )
- cornData.grade = fabs( (cornData.elev[0]-cornData.elev[1])/cornData.length )*100.0;
- else
+ if ( cornData.length > minLength ) {
+ cornData.grade = fabs( (cornData.elev[0]-cornData.elev[1])/cornData.length )
+ *100.0;
+ } else {
cornData.grade = 0.0;
+ }
cornuDesc[GR].mode |= DESC_CHANGE;
cornuDesc[inx==Z0?Z1:Z0].mode |= DESC_CHANGE;
return;
@@ -414,11 +437,11 @@ static void UpdateCornu( track_p trk, int inx, descData_p descUpd, BOOL_T final
SetTrkLayer( trk, cornData.layerNumber);
break;
default:
- AbortProg( "updateCornu: Bad inx %d", inx );
+ CHECKMSG( FALSE, ( "updateCornu: Bad inx %d", inx ) );
}
- track_p tracks[2];
- tracks[0] = GetTrkEndTrk(trk,0);
- tracks[1] = GetTrkEndTrk(trk,1);
+// track_p tracks[2];
+// tracks[0] = GetTrkEndTrk(trk,0);
+// tracks[1] = GetTrkEndTrk(trk,1);
if (updateEndPts) {
if ( GetTrkEndTrk(trk,0) == NULL ) {
@@ -449,45 +472,49 @@ static void DescribeCornu( track_p trk, char * str, CSIZE_T len )
DIST_T d;
d = xx->length;
- sprintf( str, _("Cornu Track(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,%0.3f]"),
- GetTrkIndex(trk),
- GetTrkLayer(trk)+1,
- FormatDistance(xx->minCurveRadius),
- FormatDistance(d),
- PutDim(xx->pos[0].x),PutDim(xx->pos[0].y),
- PutDim(xx->pos[1].x),PutDim(xx->pos[1].y)
- );
+ sprintf( str,
+ _("Cornu Track(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,%0.3f]"),
+ GetTrkIndex(trk),
+ GetTrkLayer(trk)+1,
+ FormatDistance(xx->minCurveRadius),
+ FormatDistance(d),
+ PutDim(xx->pos[0].x),PutDim(xx->pos[0].y),
+ PutDim(xx->pos[1].x),PutDim(xx->pos[1].y)
+ );
cornData.length = xx->length;
cornData.minRadius = xx->minCurveRadius;
- cornData.maxRateOfChange = xx->maxRateofChange*GetScaleRatio(GetLayoutCurScale());
+ cornData.maxRateOfChange = xx->maxRateofChange*GetScaleRatio(
+ GetLayoutCurScale());
cornData.windingAngle = xx->windingAngle;
- cornData.layerNumber = GetTrkLayer(trk);
- cornData.pos[0] = xx->pos[0];
- cornData.pos[1] = xx->pos[1];
- cornData.angle[0] = xx->a[0];
- cornData.angle[1] = xx->a[1];
- cornData.center[0] = xx->c[0];
- cornData.center[1] = xx->c[1];
- cornData.radius[0] = xx->r[0];
- cornData.radius[1] = xx->r[1];
- if (GetTrkType(trk) == T_CORNU) {
+ cornData.layerNumber = GetTrkLayer(trk);
+ cornData.pos[0] = xx->pos[0];
+ cornData.pos[1] = xx->pos[1];
+ cornData.angle[0] = xx->a[0];
+ cornData.angle[1] = xx->a[1];
+ cornData.center[0] = xx->c[0];
+ cornData.center[1] = xx->c[1];
+ cornData.radius[0] = xx->r[0];
+ cornData.radius[1] = xx->r[1];
+ if (GetTrkType(trk) == T_CORNU) {
ComputeElev( trk, 0, FALSE, &cornData.elev[0], NULL, FALSE );
ComputeElev( trk, 1, FALSE, &cornData.elev[1], NULL, FALSE );
- if ( cornData.length > minLength )
- cornData.grade = fabs( (cornData.elev[0]-cornData.elev[1])/cornData.length )*100.0;
- else
+ if ( cornData.length > minLength ) {
+ cornData.grade = fabs( (cornData.elev[0]-cornData.elev[1])/cornData.length )
+ *100.0;
+ } else {
cornData.grade = 0.0;
- }
- BOOL_T trk0 = (GetTrkEndTrk(trk,0)!=NULL);
- BOOL_T trk1 = (GetTrkEndTrk(trk,1)!=NULL);
+ }
+ }
+ BOOL_T trk0 = (GetTrkEndTrk(trk,0)!=NULL);
+ BOOL_T trk1 = (GetTrkEndTrk(trk,1)!=NULL);
cornuDesc[P0].mode = !trk0?0:DESC_RO;
cornuDesc[P1].mode = !trk1?0:DESC_RO;
cornuDesc[LN].mode = DESC_RO;
- cornuDesc[Z0].mode = EndPtIsDefinedElev(trk,0)?0:DESC_RO;
- cornuDesc[Z1].mode = EndPtIsDefinedElev(trk,1)?0:DESC_RO;
+ cornuDesc[Z0].mode = EndPtIsDefinedElev(trk,0)?0:DESC_RO;
+ cornuDesc[Z1].mode = EndPtIsDefinedElev(trk,1)?0:DESC_RO;
cornuDesc[A0].mode = !trk0?0:DESC_RO;
@@ -497,9 +524,9 @@ static void DescribeCornu( track_p trk, char * str, CSIZE_T len )
cornuDesc[R0].mode = !trk0?0:DESC_RO;
cornuDesc[R1].mode = !trk1?0:DESC_RO;
cornuDesc[GR].mode = DESC_RO;
- cornuDesc[RA].mode = DESC_RO;
- cornuDesc[RR].mode = DESC_RO;
- cornuDesc[WA].mode = DESC_RO;
+ cornuDesc[RA].mode = DESC_RO;
+ cornuDesc[RR].mode = DESC_RO;
+ cornuDesc[WA].mode = DESC_RO;
cornuDesc[LY].mode = DESC_NOREDRAW;
DoDescribe( _("Cornu Track"), trk, cornuDesc, UpdateCornu );
@@ -515,9 +542,9 @@ DIST_T DistanceCornu( track_p t, coOrd * p )
DIST_T d = DIST_INF;
coOrd p2 = xx->pos[0]; //Set initial point
segProcData_t segProcData;
- for (int i = 0;i<xx->arcSegs.cnt;i++) {
+ for (int i = 0; i<xx->arcSegs.cnt; i++) {
trkSeg_t seg = DYNARR_N(trkSeg_t,xx->arcSegs,i);
- if (seg.type == SEG_FILCRCL) continue;
+ if (seg.type == SEG_FILCRCL) { continue; }
segProcData.distance.pos1 = * p;
SegProc(SEGPROC_DISTANCE,&seg,&segProcData);
if (segProcData.distance.dd<d) {
@@ -525,7 +552,7 @@ DIST_T DistanceCornu( track_p t, coOrd * p )
p2 = segProcData.distance.pos1;
}
}
- //d = BezierDistance( p, xx->bezierData.pos[0], xx->bezierData.pos[1], xx->bezierData.pos[2], xx->bezierData.pos[1], 100, NULL );
+ //d = BezierDistance( p, xx->bezierData.pos[0], xx->bezierData.pos[1], xx->bezierData.pos[2], xx->bezierData.pos[1], 100, NULL );
* p = p2;
return d;
}
@@ -535,26 +562,21 @@ static void DrawCornu( track_p t, drawCmd_p d, wDrawColor color )
long widthOptions = DTS_LEFT|DTS_RIGHT;
if ( ((d->options&DC_SIMPLE)==0) &&
- (labelWhen == 2 || (labelWhen == 1 && (d->options&DC_PRINT))) &&
- labelScale >= d->scale &&
- ( GetTrkBits( t ) & TB_HIDEDESC ) == 0 ) {
+ (labelWhen == 2 || (labelWhen == 1 && (d->options&DC_PRINT))) &&
+ labelScale >= d->scale &&
+ ( GetTrkBits( t ) & TB_HIDEDESC ) == 0 ) {
DrawCornuDescription( t, d, color );
}
- DIST_T scale2rail = (d->options&DC_PRINT)?(twoRailScale*2+1):twoRailScale;
struct extraDataCornu_t *xx = GET_EXTRA_DATA(t, T_CORNU, extraDataCornu_t);
- DrawSegsO(d,t,zero,0.0,xx->arcSegs.ptr,xx->arcSegs.cnt, GetTrkGauge(t), color, widthOptions);
+ DrawSegsDA(d,t,zero,0.0,&xx->arcSegs, GetTrkGauge(t), color, widthOptions);
DrawEndPt( d, t, 0, color );
DrawEndPt( d, t, 1, color );
}
-void FreeSubSegs(trkSeg_t* s) {
+void FreeSubSegs(trkSeg_t* s)
+{
if (s->type == SEG_BEZTRK || s->type == SEG_BEZLIN) {
- if (s->bezSegs.ptr) {
- MyFree(s->bezSegs.ptr);
- }
- s->bezSegs.max = 0;
- s->bezSegs.cnt = 0;
- s->bezSegs.ptr = NULL;
+ DYNARR_FREE( trkSeg_t, s->bezSegs );
}
}
@@ -562,41 +584,42 @@ static void DeleteCornu( track_p t )
{
struct extraDataCornu_t *xx = GET_EXTRA_DATA(t, T_CORNU, extraDataCornu_t);
- for (int i=0;i<xx->arcSegs.cnt;i++) {
+ for (int i=0; i<xx->arcSegs.cnt; i++) {
trkSeg_t s = DYNARR_N(trkSeg_t,xx->arcSegs,i);
FreeSubSegs(&s);
}
- if (xx->arcSegs.ptr)
- MyFree(xx->arcSegs.ptr);
- xx->arcSegs.max = 0;
- xx->arcSegs.cnt = 0;
- xx->arcSegs.ptr = NULL;
+
+ DYNARR_FREE( trkSeg_t, xx->arcSegs );
}
static BOOL_T WriteCornu( track_p t, FILE * f )
{
+ int bits;
long options;
BOOL_T rc = TRUE;
BOOL_T track =(GetTrkType(t)==T_CORNU);
options = GetTrkWidth(t) & 0x0F;
struct extraDataCornu_t *xx = GET_EXTRA_DATA(t, T_CORNU, extraDataCornu_t);
- if ( ( GetTrkBits(t) & TB_HIDEDESC ) == 0 ) options |= 0x80;
- rc &= fprintf(f, "%s %d %d %ld 0 0 %s %d %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f \n",
- "CORNU",GetTrkIndex(t), GetTrkLayer(t), (long)options,
- GetTrkScaleName(t), GetTrkVisible(t)|(GetTrkNoTies(t)?1<<2:0)|(GetTrkBridge(t)?1<<3:0),
- xx->pos[0].x, xx->pos[0].y,
- xx->a[0],
- xx->r[0],
- xx->c[0].x,xx->c[0].y,
- xx->pos[1].x, xx->pos[1].y,
- xx->a[1],
- xx->r[1],
- xx->c[1].x,xx->c[1].y )>0;
+ if ( ( GetTrkBits(t) & TB_HIDEDESC ) == 0 ) { options |= 0x80; }
+ bits = GetTrkVisible(t)|(GetTrkNoTies(t)?1<<2:0)|(GetTrkBridge(t)?1<<3:0)|
+ (GetTrkRoadbed(t)?1<<4:0);
+ rc &= fprintf(f,
+ "%s %d %d %ld 0 0 %s %d %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f \n",
+ "CORNU",GetTrkIndex(t), GetTrkLayer(t), (long)options,
+ GetTrkScaleName(t), bits,
+ xx->pos[0].x, xx->pos[0].y,
+ xx->a[0],
+ xx->r[0],
+ xx->c[0].x,xx->c[0].y,
+ xx->pos[1].x, xx->pos[1].y,
+ xx->a[1],
+ xx->r[1],
+ xx->c[1].x,xx->c[1].y )>0;
if (track) {
- rc &= WriteEndPt( f, t, 0 );
- rc &= WriteEndPt( f, t, 1 );
- }
- rc &= WriteSegs( f, xx->arcSegs.cnt, xx->arcSegs.ptr );
+ rc &= WriteEndPt( f, t, 0 );
+ rc &= WriteEndPt( f, t, 1 );
+ }
+ rc &= WriteSegs( f, xx->arcSegs.cnt, &DYNARR_N(trkSeg_t,xx->arcSegs,0) );
return rc;
}
@@ -612,35 +635,38 @@ static BOOL_T ReadCornu( char * line )
char scale[10];
wIndex_t layer;
long options;
- char * cp = NULL;
+// char * cp = NULL;
if (!GetArgs( line+6, "dLl00sdpffppffp",
- &index, &layer, &options, scale, &visible, &p0, &a0, &r0, &c0, &p1, &a1, &r1, &c1 ) ) {
+ &index, &layer, &options, scale, &visible, &p0, &a0, &r0, &c0, &p1, &a1, &r1,
+ &c1 ) ) {
return FALSE;
}
- if ( !ReadSegs() )
+ if ( !ReadSegs() ) {
return FALSE;
+ }
t = NewTrack( index, T_CORNU, 0, sizeof *xx );
SetTrkVisible(t, visible&2);
SetTrkNoTies(t, visible&4);
SetTrkBridge(t, visible&8);
+ SetTrkRoadbed(t, visible&16);
SetTrkScale(t, LookupScale(scale));
SetTrkLayer(t, layer );
SetTrkWidth(t, (int)(options&0x0F));
- if ( paramVersion < VERSION_DESCRIPTION2 || ( options & 0x80 ) == 0 ) SetTrkBits(t,TB_HIDEDESC);
+ if ( paramVersion < VERSION_DESCRIPTION2 || ( options & 0x80 ) == 0 ) { SetTrkBits(t,TB_HIDEDESC); }
xx = GET_EXTRA_DATA(t, T_CORNU, extraDataCornu_t);
xx->pos[0] = p0;
- xx->pos[1] = p1;
- xx->a[0] = a0;
- xx->r[0] = r0;
- xx->a[1] = a1;
- xx->c[0] = c0;
- xx->c[1] = c1;
- xx->r[1] = r1;
- xx->descriptionOff.x = xx->descriptionOff.y = 0.0;
- FixUpCornu0(xx->pos,xx->c,xx->a, xx->r, xx);
- ComputeCornuBoundingBox(t,xx);
+ xx->pos[1] = p1;
+ xx->a[0] = a0;
+ xx->r[0] = r0;
+ xx->a[1] = a1;
+ xx->c[0] = c0;
+ xx->c[1] = c1;
+ xx->r[1] = r1;
+ xx->descriptionOff.x = xx->descriptionOff.y = 0.0;
+ FixUpCornu0(xx->pos,xx->c,xx->a, xx->r, xx);
+ ComputeCornuBoundingBox(t,xx);
SetEndPts(t,2);
return TRUE;
}
@@ -648,62 +674,67 @@ static BOOL_T ReadCornu( char * line )
static void MoveCornu( track_p trk, coOrd orig )
{
struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
- for (int i=0;i<2;i++) {
- xx->pos[i].x += orig.x;
- xx->pos[i].y += orig.y;
- xx->c[i].x += orig.x;
- xx->c[i].y += orig.y;
- }
- RebuildCornu(trk);
+ for (int i=0; i<2; i++) {
+ xx->pos[i].x += orig.x;
+ xx->pos[i].y += orig.y;
+ xx->c[i].x += orig.x;
+ xx->c[i].y += orig.y;
+ }
+ RebuildCornu(trk);
}
static void RotateCornu( track_p trk, coOrd orig, ANGLE_T angle )
{
struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
- for (int i=0;i<2;i++) {
- Rotate( &xx->pos[i], orig, angle );
- Rotate( &xx->c[i], orig, angle);
- xx->a[i] = NormalizeAngle(xx->a[i]+angle);
- }
- RebuildCornu(trk);
+ for (int i=0; i<2; i++) {
+ Rotate( &xx->pos[i], orig, angle );
+ Rotate( &xx->c[i], orig, angle);
+ xx->a[i] = NormalizeAngle(xx->a[i]+angle);
+ }
+ RebuildCornu(trk);
}
static void RescaleCornu( track_p trk, FLOAT_T ratio )
{
struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
- for (int i=0;i<2;i++) {
+ for (int i=0; i<2; i++) {
xx->pos[i].x *= ratio;
xx->pos[i].y *= ratio;
xx->c[i].x *= ratio;
xx->c[i].y *= ratio;
xx->r[i] *= ratio;
}
- RebuildCornu(trk);
+ RebuildCornu(trk);
}
-EXPORT BOOL_T SetCornuEndPt(track_p trk, EPINX_T inx, coOrd pos, coOrd center, ANGLE_T angle, DIST_T radius) {
- struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
- xx->pos[inx] = pos;
- xx->c[inx] = center;
- xx->a[inx] = angle;
- xx->r[inx] = radius;
- if (!RebuildCornu(trk)) return FALSE;
- SetTrkEndPoint( trk, inx, xx->pos[inx], xx->a[inx]);
- return TRUE;
+EXPORT BOOL_T SetCornuEndPt(track_p trk, EPINX_T inx, coOrd pos, coOrd center,
+ ANGLE_T angle, DIST_T radius)
+{
+ struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
+ xx->pos[inx] = pos;
+ xx->c[inx] = center;
+ xx->a[inx] = angle;
+ xx->r[inx] = radius;
+ if (!RebuildCornu(trk)) { return FALSE; }
+ SetTrkEndPoint( trk, inx, xx->pos[inx], xx->a[inx]);
+ return TRUE;
}
-void GetCornuParmsNear(track_p t, int sel, coOrd * pos2, coOrd * center, ANGLE_T * angle2, DIST_T * radius ) {
+void GetCornuParmsNear(track_p t, int sel, coOrd * pos2, coOrd * center,
+ ANGLE_T * angle2, DIST_T * radius )
+{
coOrd pos = *pos2;
- double dd = DistanceCornu(t, &pos); //Pos adjusted to be on curve
+// double dd = DistanceCornu(t, &pos); //Pos adjusted to be on curve
int inx;
*radius = 0.0;
*angle2 = 0.0;
*center = zero;
wBool_t back,neg;
struct extraDataCornu_t *xx = GET_EXTRA_DATA(t, T_CORNU, extraDataCornu_t);
- ANGLE_T angle = GetAngleSegs(xx->arcSegs.cnt,(trkSeg_t *)(xx->arcSegs.ptr),&pos,&inx,NULL,&back,NULL,&neg);
+ ANGLE_T angle = GetAngleSegs(xx->arcSegs.cnt,&DYNARR_N(trkSeg_t,xx->arcSegs,0),
+ &pos,&inx,NULL,&back,NULL,&neg);
if (inx == -1) {
return; //Error in GetAngle
@@ -712,8 +743,9 @@ void GetCornuParmsNear(track_p t, int sel, coOrd * pos2, coOrd * center, ANGLE_T
trkSeg_p segPtr = &DYNARR_N(trkSeg_t, xx->arcSegs, inx);
if (segPtr->type == SEG_BEZTRK) {
- GetAngleSegs(segPtr->bezSegs.cnt,(trkSeg_t *)(segPtr->bezSegs.ptr),&pos,&inx,NULL,&back,NULL,&neg);
- if (inx ==-1) return;
+ GetAngleSegs(segPtr->bezSegs.cnt,&DYNARR_N(trkSeg_t,segPtr->bezSegs,0),&pos,
+ &inx,NULL,&back,NULL,&neg);
+ if (inx ==-1) { return; }
segPtr = &DYNARR_N(trkSeg_t, segPtr->bezSegs, inx);
}
@@ -724,15 +756,18 @@ void GetCornuParmsNear(track_p t, int sel, coOrd * pos2, coOrd * center, ANGLE_T
*center = segPtr->u.c.center;
*radius = fabs(segPtr->u.c.radius);
}
- if (sel)
+ if (sel) {
angle = NormalizeAngle(angle+(neg==back?0:180));
- else
+ } else {
angle = NormalizeAngle(angle+(neg==back?180:0));
+ }
*angle2 = angle;
*pos2 = pos;
}
-void GetCornuParmsTemp(dynArr_t * array_p, int sel, coOrd * pos2, coOrd * center, ANGLE_T * angle2, DIST_T * radius ) {
+void GetCornuParmsTemp(dynArr_t * array_p, int sel, coOrd * pos2,
+ coOrd * center, ANGLE_T * angle2, DIST_T * radius )
+{
coOrd pos = *pos2;
int inx;
@@ -741,17 +776,19 @@ void GetCornuParmsTemp(dynArr_t * array_p, int sel, coOrd * pos2, coOrd * center
*center = zero;
*angle2 = 0.0;
- ANGLE_T angle = GetAngleSegs(array_p->cnt,(trkSeg_p)array_p->ptr,&pos,&inx,NULL,&back,NULL,&neg);
+ ANGLE_T angle = GetAngleSegs(array_p->cnt,&DYNARR_N(trkSeg_t,*array_p,0),&pos,
+ &inx,NULL,&back,NULL,&neg);
- if (inx==-1) return;
+ if (inx==-1) { return; }
trkSeg_p segPtr = &DYNARR_N(trkSeg_t, *array_p, inx);
if (segPtr->type == SEG_BEZTRK) {
- GetAngleSegs(segPtr->bezSegs.cnt,(trkSeg_t *)(segPtr->bezSegs.ptr),&pos,&inx,NULL,&back,NULL,&neg);
+ GetAngleSegs(segPtr->bezSegs.cnt,&DYNARR_N(trkSeg_t,segPtr->bezSegs,0),&pos,
+ &inx,NULL,&back,NULL,&neg);
- if (inx ==-1) return;
+ if (inx ==-1) { return; }
segPtr = &DYNARR_N(trkSeg_t, segPtr->bezSegs, inx);
@@ -764,10 +801,11 @@ void GetCornuParmsTemp(dynArr_t * array_p, int sel, coOrd * pos2, coOrd * center
*center = segPtr->u.c.center;
*radius = fabs(segPtr->u.c.radius);
}
- if (sel)
+ if (sel) {
angle = NormalizeAngle(angle+(neg==back?0:180));
- else
+ } else {
angle = NormalizeAngle(angle+(neg==back?180:0));
+ }
*angle2 = angle;
*pos2 = pos;
}
@@ -776,89 +814,93 @@ void GetCornuParmsTemp(dynArr_t * array_p, int sel, coOrd * pos2, coOrd * center
/**
* Split the Track at approximately the point pos.
*/
-static BOOL_T SplitCornu( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover, EPINX_T * ep0, EPINX_T * ep1 )
+static BOOL_T SplitCornu( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover,
+ EPINX_T * ep0, EPINX_T * ep1 )
{
track_p trk1;
- DIST_T radius = 0.0;
- coOrd center;
- int inx,subinx;
- BOOL_T track;
- track = IsTrack(trk);
-
- cornuParm_t new;
-
- double dd = DistanceCornu(trk, &pos);
- if (dd>minLength) return FALSE;
- BOOL_T back, neg;
-
+ DIST_T radius = 0.0;
+ coOrd center;
+ int inx,subinx;
+// BOOL_T track;
+// track = IsTrack(trk);
+
+ cornuParm_t new;
+
+ double dd = DistanceCornu(trk, &pos);
+ if (dd>minLength) { return FALSE; }
+ BOOL_T back, neg;
+
struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
- ANGLE_T angle = GetAngleSegs(xx->arcSegs.cnt,(trkSeg_t *)(xx->arcSegs.ptr),&pos,&inx,NULL,&back,&subinx,&neg);
-
- if (inx == -1) return FALSE;
-
- trkSeg_p segPtr = &DYNARR_N(trkSeg_t, xx->arcSegs, inx);
-
- if (subinx != -1) {
- segPtr = &DYNARR_N(trkSeg_t, segPtr->bezSegs, subinx);
- }
-
- if (segPtr->type == SEG_STRTRK) {
- radius = 0.0;
- center = zero;
- } else if (segPtr->type == SEG_CRVTRK) {
- center = segPtr->u.c.center;
- radius = fabs(segPtr->u.c.radius);
- }
- if (ep) {
- new.pos[0] = pos;
- new.pos[1] = xx->pos[1];
- new.angle[0] = NormalizeAngle(angle+(neg==back?180:0));
- new.angle[1] = xx->a[1];
- new.center[0] = center;
- new.center[1] = xx->c[1];
- new.radius[0] = radius;
- new.radius[1] = xx->r[1];
- } else {
- new.pos[1] = pos;
- new.pos[0] = xx->pos[0];
- new.angle[1] = NormalizeAngle(angle+(neg==back?0:180));
- new.angle[0] = xx->a[0];
- new.center[1] = center;
- new.center[0] = xx->c[0];
- new.radius[1] = radius;
- new.radius[0] = xx->r[0];
- }
-
- trk1 = NewCornuTrack(new.pos,new.center,new.angle,new.radius,NULL,0);
- //Copy elevation details from old ep to new ep 0/1
- if (trk1==NULL) {
- wBeep();
- InfoMessage(_("Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"),
- new.pos[0].x,new.pos[0].y,
- new.pos[1].x,new.pos[1].y,
- new.center[0].x,new.center[0].y,
- new.center[1].x,new.center[1].y,
- new.angle[0],new.angle[1],
- FormatDistance(new.radius[0]),FormatDistance(new.radius[1]));
- UndoEnd();
- return FALSE;
- }
- DIST_T height;
+ ANGLE_T angle = GetAngleSegs(xx->arcSegs.cnt,&DYNARR_N(trkSeg_t,xx->arcSegs,0),
+ &pos, &inx,NULL,&back,&subinx,&neg);
+
+ if (inx == -1) { return FALSE; }
+
+ trkSeg_p segPtr = &DYNARR_N(trkSeg_t, xx->arcSegs, inx);
+
+ if (subinx != -1) {
+ segPtr = &DYNARR_N(trkSeg_t, segPtr->bezSegs, subinx);
+ }
+
+ if (segPtr->type == SEG_STRTRK) {
+ radius = 0.0;
+ center = zero;
+ } else if (segPtr->type == SEG_CRVTRK) {
+ center = segPtr->u.c.center;
+ radius = fabs(segPtr->u.c.radius);
+ }
+ if (ep) {
+ new.pos[0] = pos;
+ new.pos[1] = xx->pos[1];
+ new.angle[0] = NormalizeAngle(angle+(neg==back?180:0));
+ new.angle[1] = xx->a[1];
+ new.center[0] = center;
+ new.center[1] = xx->c[1];
+ new.radius[0] = radius;
+ new.radius[1] = xx->r[1];
+ } else {
+ new.pos[1] = pos;
+ new.pos[0] = xx->pos[0];
+ new.angle[1] = NormalizeAngle(angle+(neg==back?0:180));
+ new.angle[0] = xx->a[0];
+ new.center[1] = center;
+ new.center[0] = xx->c[0];
+ new.radius[1] = radius;
+ new.radius[0] = xx->r[0];
+ }
+
+ trk1 = NewCornuTrack(new.pos,new.center,new.angle,new.radius,NULL,0);
+ //Copy elevation details from old ep to new ep 0/1
+ if (trk1==NULL) {
+ wBeep();
+ InfoMessage(
+ _("Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"),
+ new.pos[0].x,new.pos[0].y,
+ new.pos[1].x,new.pos[1].y,
+ new.center[0].x,new.center[0].y,
+ new.center[1].x,new.center[1].y,
+ new.angle[0],new.angle[1],
+ FormatDistance(new.radius[0]),FormatDistance(new.radius[1]));
+ UndoEnd();
+ return FALSE;
+ }
+ DIST_T height;
int opt;
GetTrkEndElev(trk,ep,&opt,&height);
- UpdateTrkEndElev( trk1, ep, opt, height, (opt==ELEV_STATION)?GetTrkEndElevStation(trk,ep):NULL );
+ UpdateTrkEndElev( trk1, ep, opt, height,
+ (opt==ELEV_STATION)?GetTrkEndElevStation(trk,ep):NULL );
- UndoModify(trk);
- xx->pos[ep] = pos;
- xx->a[ep] = NormalizeAngle(new.angle[1-ep]+180);
- xx->r[ep] = new.radius[1-ep];
- xx->c[ep] = new.center[1-ep];
- //Wipe out old elevation for ep1
+ UndoModify(trk);
+ xx->pos[ep] = pos;
+ xx->a[ep] = NormalizeAngle(new.angle[1-ep]+180);
+ xx->r[ep] = new.radius[1-ep];
+ xx->c[ep] = new.center[1-ep];
+ //Wipe out old elevation for ep1
- RebuildCornu(trk);
+ RebuildCornu(trk);
- SetTrkEndPoint(trk, ep, xx->pos[ep], xx->a[ep]);
- UpdateTrkEndElev( trk, ep, ELEV_NONE, 0, NULL);
+ SetTrkEndPoint(trk, ep, xx->pos[ep], xx->a[ep]);
+ UpdateTrkEndElev( trk, ep, ELEV_NONE, 0, NULL);
*leftover = trk1;
*ep0 = 1-ep; //Which end is for new on pos?
@@ -867,7 +909,8 @@ static BOOL_T SplitCornu( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover,
return TRUE;
}
-BOOL_T MoveCornuEndPt ( track_p *trk, EPINX_T *ep, coOrd pos, DIST_T d0 ) {
+BOOL_T MoveCornuEndPt ( track_p *trk, EPINX_T *ep, coOrd pos, DIST_T d0 )
+{
track_p trk2;
if (SplitTrack(*trk,pos,*ep,&trk2,TRUE)) {
if (trk2) {
@@ -903,7 +946,7 @@ static int log_traverseCornu = 0;
*/
static BOOL_T TraverseCornu( traverseTrack_p trvTrk, DIST_T * distR )
{
- track_p trk = trvTrk->trk;
+ track_p trk = trvTrk->trk;
DIST_T dist = *distR;
segProcData_t segProcData;
BOOL_T cornu_backwards= FALSE;
@@ -914,39 +957,47 @@ static BOOL_T TraverseCornu( traverseTrack_p trvTrk, DIST_T * distR )
int inx, segInx = 0;
EPINX_T ep;
BOOL_T back;
-LOG( log_traverseCornu, 1, ( "TravCornu-In [%0.3f %0.3f] A%0.3f D%0.3f \n", trvTrk->pos.x, trvTrk->pos.y, trvTrk->angle, *distR ))
+ LOG( log_traverseCornu, 1, ( "TravCornu-In [%0.3f %0.3f] A%0.3f D%0.3f \n",
+ trvTrk->pos.x, trvTrk->pos.y, trvTrk->angle, *distR ))
struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
- trkSeg_p segPtr = (trkSeg_p)xx->arcSegs.ptr;
+ trkSeg_p segPtr = &DYNARR_N(trkSeg_t,xx->arcSegs,0);
a2 = GetAngleSegs( //Find correct Segment and nearest point in it
- xx->arcSegs.cnt,segPtr,
- &pos2, &segInx, &d , &back , NULL, &neg); //d = how far pos2 from old pos2 = trvTrk->pos
+ xx->arcSegs.cnt,segPtr,
+ &pos2, &segInx, &d, &back, NULL,
+ &neg); //d = how far pos2 from old pos2 = trvTrk->pos
if ( d > 10 ) {
- ErrorMessage( "traverseCornu: Position is not near track: %0.3f", d );
- return FALSE; //This means the input pos is not on or close to the track.
+ ErrorMessage( "traverseCornu: Position is not near track: %0.3f", d );
+ return FALSE; //This means the input pos is not on or close to the track.
}
- if (back) a2 = NormalizeAngle(a2+180); //If reverse segs - reverse angle
- a1 = NormalizeAngle(a2-trvTrk->angle); //Establish if we are going fwds or backwards globally
- if (a1<270 && a1>90) { //Must add 180 if the seg is reversed or inverted (but not both)
+ if (back) { a2 = NormalizeAngle(a2+180); } //If reverse segs - reverse angle
+ a1 = NormalizeAngle(a2
+ -trvTrk->angle); //Establish if we are going fwds or backwards globally
+ if (a1<270
+ && a1>90) { //Must add 180 if the seg is reversed or inverted (but not both)
cornu_backwards = TRUE;
ep = 0;
} else {
cornu_backwards = FALSE;
ep = 1;
}
- if (neg) {
+ if (neg) {
cornu_backwards = !cornu_backwards; //Reversed direction
ep = 1-ep;
}
segProcData.traverse1.pos = pos2; //actual point on curve
- segProcData.traverse1.angle = trvTrk->angle; //direction car is going for Traverse 1
-LOG( log_traverseCornu, 1, ( " TravCornu-GetSubA A%0.3f I%d N%d B%d CB%d\n", a2, segInx, neg, back, cornu_backwards ))
+ segProcData.traverse1.angle =
+ trvTrk->angle; //direction car is going for Traverse 1
+ LOG( log_traverseCornu, 1, ( " TravCornu-GetSubA A%0.3f I%d N%d B%d CB%d\n",
+ a2, segInx, neg, back, cornu_backwards ))
inx = segInx;
while (inx >=0 && inx<xx->arcSegs.cnt) {
- segPtr = (trkSeg_p)xx->arcSegs.ptr+inx; //move in to the identified Bezier segment
+ segPtr = (trkSeg_p)xx->arcSegs.ptr
+ +inx; //move in to the identified Bezier segment
SegProc( SEGPROC_TRAVERSE1, segPtr, &segProcData );
- BOOL_T backwards = segProcData.traverse1.backwards; //do we process this segment backwards?
+ BOOL_T backwards =
+ segProcData.traverse1.backwards; //do we process this segment backwards?
BOOL_T reverse_seg = segProcData.traverse1.reverse_seg; //Info only
int BezSegInx = segProcData.traverse1.BezSegInx; //Which subSeg was it?
BOOL_T segs_backwards = segProcData.traverse1.segs_backwards;
@@ -957,13 +1008,16 @@ LOG( log_traverseCornu, 1, ( " TravCornu-GetSubA A%0.3f I%d N%d B%d CB%d\n", a2
segProcData.traverse2.segDir = backwards;
segProcData.traverse2.BezSegInx = BezSegInx;
segProcData.traverse2.segs_backwards = segs_backwards;
-LOG( log_traverseCornu, 2, ( " TravCornu-Tr1 SI%d D%0.3f B%d RS%d \n", BezSegInx, dist, backwards, reverse_seg ) )
+ LOG( log_traverseCornu, 2, ( " TravCornu-Tr1 SI%d D%0.3f B%d RS%d \n",
+ BezSegInx, dist, backwards, reverse_seg ) )
SegProc( SEGPROC_TRAVERSE2, segPtr, &segProcData ); //Angle at pos2
- if ( segProcData.traverse2.dist <= 0 ) { //-ve or zero distance left over so stop there
+ if ( segProcData.traverse2.dist <=
+ 0 ) { //-ve or zero distance left over so stop there
*distR = 0;
trvTrk->pos = segProcData.traverse2.pos; //Use finishing pos
trvTrk->angle = segProcData.traverse2.angle; //Use finishing angle
-LOG( log_traverseCornu, 1, ( "TravCornu-Ex1 -> [%0.3f %0.3f] A%0.3f D%0.3f\n", trvTrk->pos.x, trvTrk->pos.y, trvTrk->angle, *distR ) )
+ LOG( log_traverseCornu, 1, ( "TravCornu-Ex1 -> [%0.3f %0.3f] A%0.3f D%0.3f\n",
+ trvTrk->pos.x, trvTrk->pos.y, trvTrk->angle, *distR ) )
return TRUE;
}
dist = segProcData.traverse2.dist; //How far left?
@@ -971,21 +1025,25 @@ LOG( log_traverseCornu, 1, ( "TravCornu-Ex1 -> [%0.3f %0.3f] A%0.3f D%0.3f\n", t
ANGLE_T angle = segProcData.traverse2.angle; //Angle of end therefore
segProcData.traverse1.angle = angle; //Set up Traverse1
segProcData.traverse1.pos = pos;
- inx = cornu_backwards?inx-1:inx+1; //Here's where the global segment direction comes in
-LOG( log_traverseCornu, 2, ( " TravCornu-Loop D%0.3f A%0.3f I%d \n", dist, angle, inx ) )
- }
- //Ran out of Bez-Segs so punt to next Track
+ inx = cornu_backwards?inx-1:inx
+ +1; //Here's where the global segment direction comes in
+ LOG( log_traverseCornu, 2, ( " TravCornu-Loop D%0.3f A%0.3f I%d \n", dist,
+ angle, inx ) )
+ }
+ //Ran out of Bez-Segs so punt to next Track
*distR = dist; //Tell caller what dist is left
trvTrk->pos = GetTrkEndPos(trk,ep); //Which end were we heading for?
- trvTrk->angle = NormalizeAngle(GetTrkEndAngle(trk, ep)); //+(cornu_backwards?180:0));
+ trvTrk->angle = NormalizeAngle(GetTrkEndAngle(trk,
+ ep)); //+(cornu_backwards?180:0));
trvTrk->trk = GetTrkEndTrk(trk,ep); //go onto next track (or NULL)
if (trvTrk->trk==NULL) {
trvTrk->pos = pos1;
- return TRUE;
+ return TRUE;
}
-LOG( log_traverseCornu, 1, ( "TravCornu-Ex2 --> [%0.3f %0.3f] A%0.3f D%0.3f\n", trvTrk->pos.x, trvTrk->pos.y, trvTrk->angle, *distR ) )
+ LOG( log_traverseCornu, 1, ( "TravCornu-Ex2 --> [%0.3f %0.3f] A%0.3f D%0.3f\n",
+ trvTrk->pos.x, trvTrk->pos.y, trvTrk->angle, *distR ) )
return TRUE;
}
@@ -998,7 +1056,7 @@ static BOOL_T EnumerateCornu( track_p trk )
struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
DIST_T d;
d = max(CornuOffsetLength(xx->arcSegs,-GetTrkGauge(trk)/2.0),
- CornuOffsetLength(xx->arcSegs,GetTrkGauge(trk)/2.0));
+ CornuOffsetLength(xx->arcSegs,GetTrkGauge(trk)/2.0));
ScaleLengthIncrement( GetTrkScale(trk), d );
return TRUE;
}
@@ -1006,40 +1064,38 @@ static BOOL_T EnumerateCornu( track_p trk )
}
static BOOL_T MergeCornu(
- track_p trk0,
- EPINX_T ep0,
- track_p trk1,
- EPINX_T ep1 )
+ track_p trk0,
+ EPINX_T ep0,
+ track_p trk1,
+ EPINX_T ep1 )
{
return FALSE;
}
-BOOL_T GetBezierSegmentsFromCornu(track_p trk, dynArr_t * segs, BOOL_T track) {
+BOOL_T GetBezierSegmentsFromCornu(track_p trk, dynArr_t * segs, BOOL_T track)
+{
struct extraDataCornu_t * xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
- for (int i=0;i<xx->arcSegs.cnt;i++) {
- trkSeg_p p = (trkSeg_t *) xx->arcSegs.ptr+i;
+ for (int i=0; i<xx->arcSegs.cnt; i++) {
+ trkSeg_p p = &DYNARR_N(trkSeg_t,xx->arcSegs,i);
if (p->type == SEG_BEZTRK) {
if (track) {
DYNARR_APPEND(trkSeg_t, * segs, 10);
trkSeg_p segPtr = &DYNARR_N(trkSeg_t,* segs,segs->cnt-1);
segPtr->type = SEG_BEZTRK;
segPtr->color = wDrawColorBlack;
- segPtr->width = 0;
- if (segPtr->bezSegs.ptr) MyFree(segPtr->bezSegs.ptr);
- segPtr->bezSegs.cnt = 0;
- segPtr->bezSegs.max = 0;
- segPtr->bezSegs.ptr = NULL;
- for (int j=0;j<4;j++) segPtr->u.b.pos[j] = p->u.b.pos[j];
+ segPtr->lineWidth = 0;
+ DYNARR_FREE( trkSeg_t, segPtr->bezSegs );
+ for (int j=0; j<4; j++) { segPtr->u.b.pos[j] = p->u.b.pos[j]; }
FixUpBezierSeg(segPtr->u.b.pos,segPtr,TRUE);
} else {
- for (int j=0;j<p->bezSegs.cnt;j++) {
+ for (int j=0; j<p->bezSegs.cnt; j++) {
trkSeg_p bez_p = &DYNARR_N(trkSeg_t,p->bezSegs,j);
DYNARR_APPEND(trkSeg_t, * segs, 10);
trkSeg_p segPtr = &DYNARR_LAST(trkSeg_t,* segs);
- if (bez_p->type == SEG_CRVTRK) segPtr->type = SEG_CRVLIN;
- if (bez_p->type == SEG_STRTRK) segPtr->type = SEG_STRLIN;
+ if (bez_p->type == SEG_CRVTRK) { segPtr->type = SEG_CRVLIN; }
+ if (bez_p->type == SEG_STRTRK) { segPtr->type = SEG_STRLIN; }
segPtr->u = bez_p->u;
- segPtr->width = bez_p->width;
+ segPtr->lineWidth = bez_p->lineWidth;
segPtr->color = bez_p->color;
}
}
@@ -1048,8 +1104,8 @@ BOOL_T GetBezierSegmentsFromCornu(track_p trk, dynArr_t * segs, BOOL_T track) {
trkSeg_p segPtr = &DYNARR_N(trkSeg_t,* segs,segs->cnt-1);
segPtr->type = track?SEG_STRTRK:SEG_STRLIN;
segPtr->color = wDrawColorBlack;
- segPtr->width = 0;
- for (int j=0;j<2;j++) segPtr->u.l.pos[i] = p->u.l.pos[i];
+ segPtr->lineWidth = 0;
+ for (int j=0; j<2; j++) { segPtr->u.l.pos[i] = p->u.l.pos[i]; }
segPtr->u.l.angle = p->u.l.angle;
segPtr->u.l.option = 0;
} else if (p->type == SEG_CRVTRK) {
@@ -1057,7 +1113,7 @@ BOOL_T GetBezierSegmentsFromCornu(track_p trk, dynArr_t * segs, BOOL_T track) {
trkSeg_p segPtr = &DYNARR_N(trkSeg_t,* segs,segs->cnt-1);
segPtr->type = track?SEG_CRVTRK:SEG_CRVLIN;
segPtr->color = wDrawColorBlack;
- segPtr->width = 0;
+ segPtr->lineWidth = 0;
segPtr->u.c.a0 = p->u.c.a0;
segPtr->u.c.a1 = p->u.c.a1;
segPtr->u.c.center = p->u.c.center;
@@ -1073,19 +1129,21 @@ static DIST_T GetLengthCornu( track_p trk )
struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
DIST_T length = 0.0;
segProcData_t segProcData;
- for(int i=0;i<xx->arcSegs.cnt;i++) {
+ for(int i=0; i<xx->arcSegs.cnt; i++) {
trkSeg_t seg = DYNARR_N(trkSeg_t,xx->arcSegs,i);
- if (seg.type == SEG_FILCRCL) continue;
+ if (seg.type == SEG_FILCRCL) { continue; }
SegProc(SEGPROC_LENGTH, &seg, &segProcData);
length += segProcData.length.length;
}
return length;
}
-EXPORT BOOL_T GetCornuMiddle( track_p trk, coOrd * pos) {
+EXPORT BOOL_T GetCornuMiddle( track_p trk, coOrd * pos)
+{
- if (GetTrkType(trk) != T_CORNU)
+ if (GetTrkType(trk) != T_CORNU) {
return FALSE;
+ }
DIST_T length = GetLengthCornu(trk)/2;
traverseTrack_t tp;
@@ -1103,19 +1161,21 @@ EXPORT BOOL_T GetCornuMiddle( track_p trk, coOrd * pos) {
}
-static BOOL_T GetParamsCornu( int inx, track_p trk, coOrd pos, trackParams_t * params )
+static BOOL_T GetParamsCornu( int inx, track_p trk, coOrd pos,
+ trackParams_t * params )
{
int segInx, segInx2;
BOOL_T back, negative;
DIST_T d;
struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
params->type = curveTypeCornu;
- params->track_angle = GetAngleSegs( //Find correct Segment and nearest point in it
- xx->arcSegs.cnt,xx->arcSegs.ptr,
- &pos, &segInx, &d , &back, &segInx2, &negative );
- if (segInx ==-1) return FALSE;
+ params->track_angle =
+ GetAngleSegs( //Find correct Segment and nearest point in it
+ xx->arcSegs.cnt,&DYNARR_N(trkSeg_t,xx->arcSegs,0),
+ &pos, &segInx, &d, &back, &segInx2, &negative );
+ if (segInx ==-1) { return FALSE; }
trkSeg_p segPtr = &DYNARR_N(trkSeg_t,xx->arcSegs,segInx);
- if (negative != back) params->track_angle = NormalizeAngle(params->track_angle+180); //Cornu is in reverse
+ if (negative != back) { params->track_angle = NormalizeAngle(params->track_angle+180); } //Cornu is in reverse
if (segPtr->type == SEG_STRTRK) {
params->arcR = 0.0;
} else if (segPtr->type == SEG_CRVTRK) {
@@ -1134,7 +1194,7 @@ static BOOL_T GetParamsCornu( int inx, track_p trk, coOrd pos, trackParams_t * p
params->arcA1 = segPtr2->u.c.a1;
}
}
- for (int i=0;i<2;i++) {
+ for (int i=0; i<2; i++) {
params->cornuEnd[i] = xx->pos[i];
params->cornuAngle[i] = xx->a[i];
params->cornuRadius[i] = xx->r[i];
@@ -1143,13 +1203,14 @@ static BOOL_T GetParamsCornu( int inx, track_p trk, coOrd pos, trackParams_t * p
params->len = xx->length;
if ( inx == PARAMS_NODES ) {
return FALSE;
- } else if ((inx == PARAMS_CORNU) || (inx == PARAMS_1ST_JOIN) || (inx == PARAMS_2ND_JOIN) ) {
+ } else if ((inx == PARAMS_CORNU) || (inx == PARAMS_1ST_JOIN)
+ || (inx == PARAMS_2ND_JOIN) ) {
params->ep = PickEndPoint( pos, trk);
} else {
params->ep = PickUnconnectedEndPointSilent( pos, trk );
}
- if (params->ep == -1) return FALSE;
+ if (params->ep == -1) { return FALSE; }
if (params->ep>=0) {
params->angle = GetTrkEndAngle(trk,params->ep);
@@ -1174,7 +1235,7 @@ static BOOL_T QueryCornu( track_p trk, int query )
case Q_EXCEPTION: {
struct extraDataCornu_t * xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
return fabs(xx->minCurveRadius) < (GetLayoutMinTrackRadius()-EPSILON);
- }
+ }
case Q_IS_CORNU:
return TRUE;
break;
@@ -1189,6 +1250,7 @@ static BOOL_T QueryCornu( track_p trk, int query )
case Q_CANNOT_PLACE_TURNOUT:
return FALSE;
break;
+ case Q_CORNU_CAN_MODIFY:
case Q_IGNORE_EASEMENT_ON_EXTEND:
return TRUE;
break;
@@ -1201,9 +1263,9 @@ static BOOL_T QueryCornu( track_p trk, int query )
static void FlipCornu(
- track_p trk,
- coOrd orig,
- ANGLE_T angle )
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle )
{
struct extraDataCornu_t * xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
FlipPoint( &xx->pos[0], orig, angle );
@@ -1227,155 +1289,161 @@ static void FlipCornu(
xx->r[0] = xx->r[1];
xx->r[1] = rad_save;
- RebuildCornu(trk);
+ RebuildCornu(trk);
}
static ANGLE_T GetAngleCornu(
- track_p trk,
- coOrd pos,
- EPINX_T * ep0,
- EPINX_T * ep1 )
+ track_p trk,
+ coOrd pos,
+ EPINX_T * ep0,
+ EPINX_T * ep1 )
{
struct extraDataCornu_t * xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
ANGLE_T angle;
BOOL_T back, neg;
int indx;
- angle = GetAngleSegs( xx->arcSegs.cnt, (trkSeg_p)xx->arcSegs.ptr, &pos, &indx, NULL, &back, NULL, &neg );
- if (!back) angle = NormalizeAngle(angle+180);
- if ( ep0 ) *ep0 = neg?1:0;
- if ( ep1 ) *ep1 = neg?0:1;
+ angle = GetAngleSegs( xx->arcSegs.cnt, &DYNARR_N(trkSeg_t,xx->arcSegs,0), &pos,
+ &indx, NULL, &back, NULL, &neg );
+ if (!back) { angle = NormalizeAngle(angle+180); }
+ if ( ep0 ) { *ep0 = neg?1:0; }
+ if ( ep1 ) { *ep1 = neg?0:1; }
return angle;
}
-BOOL_T GetCornuSegmentFromTrack(track_p trk, trkSeg_p seg_p) {
+BOOL_T GetCornuSegmentFromTrack(track_p trk, trkSeg_p seg_p)
+{
//TODO If we support Group
return TRUE;
}
-static dynArr_t cornuSegs_da;
+//static dynArr_t cornuSegs_da;
static BOOL_T MakeParallelCornu(
- track_p trk,
- coOrd pos,
- DIST_T sep,
- DIST_T factor,
- track_p * newTrkR,
- coOrd * p0R,
- coOrd * p1R,
- BOOL_T track )
+ track_p trk,
+ coOrd pos,
+ DIST_T sep,
+ DIST_T factor,
+ track_p * newTrkR,
+ coOrd * p0R,
+ coOrd * p1R,
+ BOOL_T track )
{
- coOrd np[4], p, nc[2];
- ANGLE_T atrk, diff_a, na[2];
- DIST_T nr[2];
+ coOrd np[4], p, nc[2];
+ ANGLE_T atrk, diff_a, na[2];
+ DIST_T nr[2];
//Produce cornu that is translated parallel to the existing Cornu
- // - not a precise result if the cornu end angles are not in the same general direction.
- // The expectation is that the user will have to adjust it - unless and until we produce
- // a new algo to adjust the control points to be parallel to the endpoints.
-
- p = pos;
- DistanceCornu(trk, &p); //Find nearest point on curve
+ // - not a precise result if the cornu end angles are not in the same general direction.
+ // The expectation is that the user will have to adjust it - unless and until we produce
+ // a new algo to adjust the control points to be parallel to the endpoints.
+
+ p = pos;
+ DistanceCornu(trk, &p); //Find nearest point on curve
struct extraDataCornu_t * xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
- atrk = GetAngleSegs(xx->arcSegs.cnt,(trkSeg_t *)(xx->arcSegs.ptr),&p,NULL,NULL,NULL,NULL, NULL);
- diff_a = NormalizeAngle(FindAngle(pos,p)-atrk); //we know it will be +/-90...
- //find parallel move x and y for points
- BOOL_T above = FALSE;
- if ( diff_a < 180 ) above = TRUE; //Above track
- if (xx->a[0] <180) above = !above;
- DIST_T sep0 = sep+((xx->r[0]!=0.0)?fabs(factor/xx->r[0]):0);
- DIST_T sep1 = sep+((xx->r[1]!=0.0)?fabs(factor/xx->r[1]):0);
- Translate(&np[0],xx->pos[0],xx->a[0]+(above?90:-90),sep0);
- Translate(&np[1],xx->pos[1],xx->a[1]+(above?-90:90),sep1);
- na[0]=xx->a[0];
- na[1]=xx->a[1];
- if (xx->r[0] != 0.0) {
- //Find angle between center and end angle of track
- ANGLE_T ea0 =
- NormalizeAngle(FindAngle(xx->c[0],xx->pos[0])-xx->a[0]);
- if (ea0>180) sep0 = -sep0;
- nr[0]=xx->r[0]+(above?sep0:-sep0); //Needs adjustment
- nc[0]=xx->c[0];
- } else {
- nr[0] = 0.0;
- nc[0] = zero;
- }
-
- if (xx->r[1] != 0.0) {
- ANGLE_T ea1 =
- NormalizeAngle(FindAngle(xx->c[1],xx->pos[1])-xx->a[1]);
- if (ea1<180) sep1 = -sep1;
- nr[1]=xx->r[1]+(above?sep1:-sep1); //Needs adjustment
- nc[1]=xx->c[1];
- } else {
- nr[1] = 0.0;
- nc[1] = zero;
- }
+ atrk = GetAngleSegs(xx->arcSegs.cnt,&DYNARR_N(trkSeg_t,xx->arcSegs,0),&p,
+ NULL, NULL, NULL,NULL, NULL);
+ diff_a = NormalizeAngle(FindAngle(pos,p)-atrk); //we know it will be +/-90...
+ //find parallel move x and y for points
+ BOOL_T above = FALSE;
+ if ( diff_a < 180 ) { above = TRUE; } //Above track
+ if (xx->a[0] <180) { above = !above; }
+ DIST_T sep0 = sep+((xx->r[0]!=0.0)?fabs(factor/xx->r[0]):0);
+ DIST_T sep1 = sep+((xx->r[1]!=0.0)?fabs(factor/xx->r[1]):0);
+ Translate(&np[0],xx->pos[0],xx->a[0]+(above?90:-90),sep0);
+ Translate(&np[1],xx->pos[1],xx->a[1]+(above?-90:90),sep1);
+ na[0]=xx->a[0];
+ na[1]=xx->a[1];
+ if (xx->r[0] != 0.0) {
+ //Find angle between center and end angle of track
+ ANGLE_T ea0 =
+ NormalizeAngle(FindAngle(xx->c[0],xx->pos[0])-xx->a[0]);
+ if (ea0>180) { sep0 = -sep0; }
+ nr[0]=xx->r[0]+(above?sep0:-sep0); //Needs adjustment
+ nc[0]=xx->c[0];
+ } else {
+ nr[0] = 0.0;
+ nc[0] = zero;
+ }
+
+ if (xx->r[1] != 0.0) {
+ ANGLE_T ea1 =
+ NormalizeAngle(FindAngle(xx->c[1],xx->pos[1])-xx->a[1]);
+ if (ea1<180) { sep1 = -sep1; }
+ nr[1]=xx->r[1]+(above?sep1:-sep1); //Needs adjustment
+ nc[1]=xx->c[1];
+ } else {
+ nr[1] = 0.0;
+ nc[1] = zero;
+ }
if ( newTrkR ) {
if (track) {
*newTrkR = NewCornuTrack( np, nc, na, nr, NULL, 0);
if (*newTrkR==NULL) {
wBeep();
- InfoMessage(_("Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"),
- np[0].x,np[0].y,
- np[1].x,np[1].y,
- nc[0].x,nc[0].y,
- nc[1].x,nc[1].y,
- na[0],na[1],
- FormatDistance(nr[0]),FormatDistance(nr[1]));
+ InfoMessage(
+ _("Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"),
+ np[0].x,np[0].y,
+ np[1].x,np[1].y,
+ nc[0].x,nc[0].y,
+ nc[1].x,nc[1].y,
+ na[0],na[1],
+ FormatDistance(nr[0]),FormatDistance(nr[1]));
return FALSE;
}
} else {
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
CallCornu0(np,nc,na,nr,&tempSegs_da,FALSE);
*newTrkR = MakePolyLineFromSegs( zero, 0.0, &tempSegs_da );
}
} else {
- tempSegs_da.cnt = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
CallCornu0(np,nc,na,nr,&tempSegs_da,FALSE);
if (!track) {
- for (int i=0;i<tempSegs_da.cnt;i++) {
+ for (int i=0; i<tempSegs_da.cnt; i++) {
trkSeg_p seg = &tempSegs(i);
if (seg->type == SEG_STRTRK) {
seg->type = SEG_STRLIN;
seg->color = wDrawColorBlack;
- seg->width = 0;
+ seg->lineWidth = 0;
}
if (seg->type == SEG_CRVTRK) {
seg->type = SEG_CRVLIN;
seg->color = wDrawColorBlack;
- seg->width = 0;
+ seg->lineWidth = 0;
}
if (seg->type == SEG_BEZTRK) {
- for (int j=0;j<seg->bezSegs.cnt;j++) {
- trkSeg_p bseg = &(((trkSeg_t *)seg->bezSegs.ptr)[j]);
+ for (int j=0; j<seg->bezSegs.cnt; j++) {
+ trkSeg_p bseg = &DYNARR_N(trkSeg_t,seg->bezSegs,j);
if (bseg->type == SEG_STRTRK) {
bseg->type = SEG_STRLIN;
bseg->color = wDrawColorBlack;
- bseg->width = 0;
+ bseg->lineWidth = 0;
}
if (bseg->type == SEG_CRVTRK) {
bseg->type = SEG_CRVLIN;
bseg->color = wDrawColorBlack;
- bseg->width = 0;
+ bseg->lineWidth = 0;
}
}
seg->type = SEG_BEZLIN;
seg->color = wDrawColorBlack;
- seg->width = 0;
+ seg->lineWidth = 0;
}
}
}
}
- if ( p0R ) *p0R = np[0];
- if ( p1R ) *p1R = np[1];
+ if ( p0R ) { *p0R = np[0]; }
+ if ( p1R ) { *p1R = np[1]; }
return TRUE;
}
-static BOOL_T TrimCornu( track_p trk, EPINX_T ep, DIST_T dist, coOrd endpos, ANGLE_T angle, DIST_T radius, coOrd center ) {
+static BOOL_T TrimCornu( track_p trk, EPINX_T ep, DIST_T dist, coOrd endpos,
+ ANGLE_T angle, DIST_T radius, coOrd center )
+{
UndoModify(trk);
if (dist>0.0 && dist<minLength) {
UndrawNewTrack( trk );
@@ -1406,11 +1474,9 @@ EXPORT BOOL_T RebuildCornu (track_p trk)
{
struct extraDataCornu_t *xx;
xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
- xx->arcSegs.max = 0;
- xx->arcSegs.cnt = 0;
- //if (xx->arcSegs.ptr) MyFree(xx->arcSegs.ptr);
- xx->arcSegs.ptr = NULL;
- if (!FixUpCornu0(xx->pos,xx->c,xx->a,xx->r, xx)) return FALSE;
+ //NOTE - Original code did not Free .ptr? See CS:c1b85944f448
+ DYNARR_INIT( trkSeg_t, xx->arcSegs );
+ if (!FixUpCornu0(xx->pos,xx->c,xx->a,xx->r, xx)) { return FALSE; }
ComputeCornuBoundingBox(trk, xx);
return TRUE;
}
@@ -1418,8 +1484,10 @@ EXPORT BOOL_T RebuildCornu (track_p trk)
static wBool_t CompareCornu( track_cp trk1, track_cp trk2 )
{
- struct extraDataCornu_t *xx1 = GET_EXTRA_DATA( trk1, T_CORNU, extraDataCornu_t );
- struct extraDataCornu_t *xx2 = GET_EXTRA_DATA( trk2, T_CORNU, extraDataCornu_t );
+ struct extraDataCornu_t *xx1 = GET_EXTRA_DATA( trk1, T_CORNU,
+ extraDataCornu_t );
+ struct extraDataCornu_t *xx2 = GET_EXTRA_DATA( trk2, T_CORNU,
+ extraDataCornu_t );
char * cp = message + strlen(message);
REGRESS_CHECK_POS( "Pos[0]", xx1, xx2, pos[0] )
REGRESS_CHECK_POS( "Pos[1]", xx1, xx2, pos[1] )
@@ -1440,42 +1508,42 @@ static wBool_t CompareCornu( track_cp trk1, track_cp trk2 )
}
static trackCmd_t cornuCmds = {
- "CORNU",
- DrawCornu,
- DistanceCornu,
- DescribeCornu,
- DeleteCornu,
- WriteCornu,
- ReadCornu,
- MoveCornu,
- RotateCornu,
- RescaleCornu,
- NULL,
- GetAngleCornu,
- SplitCornu,
- TraverseCornu,
- EnumerateCornu,
- NULL, /* redraw */
- TrimCornu, /* trim */
- MergeCornu,
- NULL, /* modify */
- GetLengthCornu,
- GetParamsCornu,
- MoveCornuEndPt, /* Move EndPt */
- QueryCornu,
- NULL, /* ungroup */
- FlipCornu,
- NULL,
- NULL,
- NULL,
- MakeParallelCornu,
- NULL,
- RebuildCornu,
- NULL,
- NULL,
- NULL,
- CompareCornu
- };
+ "CORNU",
+ DrawCornu,
+ DistanceCornu,
+ DescribeCornu,
+ DeleteCornu,
+ WriteCornu,
+ ReadCornu,
+ MoveCornu,
+ RotateCornu,
+ RescaleCornu,
+ NULL,
+ GetAngleCornu,
+ SplitCornu,
+ TraverseCornu,
+ EnumerateCornu,
+ NULL, /* redraw */
+ TrimCornu, /* trim */
+ MergeCornu,
+ NULL, /* modify */
+ GetLengthCornu,
+ GetParamsCornu,
+ MoveCornuEndPt, /* Move EndPt */
+ QueryCornu,
+ NULL, /* ungroup */
+ FlipCornu,
+ NULL,
+ NULL,
+ NULL,
+ MakeParallelCornu,
+ NULL,
+ RebuildCornu,
+ NULL,
+ NULL,
+ NULL,
+ CompareCornu
+};
@@ -1490,26 +1558,29 @@ static trackCmd_t cornuCmds = {
-track_p NewCornuTrack(coOrd pos[2], coOrd center[2],ANGLE_T angle[2], DIST_T radius[2], trkSeg_t * tempsegs, int count)
+track_p NewCornuTrack(coOrd pos[2], coOrd center[2],ANGLE_T angle[2],
+ DIST_T radius[2], trkSeg_t * tempsegs, int count)
{
struct extraDataCornu_t *xx;
track_p p;
p = NewTrack( 0, T_CORNU, 2, sizeof *xx );
xx = GET_EXTRA_DATA(p, T_CORNU, extraDataCornu_t);
- xx->pos[0] = pos[0];
- xx->pos[1] = pos[1];
- xx->a[0] = angle[0];
- xx->a[1] = angle[1];
- xx->r[0] = radius[0];
- xx->r[1] = radius[1];
- xx->c[0] = center[0];
- xx->c[1] = center[1];
-
- if (!FixUpCornu0(xx->pos,xx->c,xx->a,xx->r, xx)) {
- ErrorMessage("Create Cornu Failed");
- return NULL;
+ xx->pos[0] = pos[0];
+ xx->pos[1] = pos[1];
+ xx->a[0] = angle[0];
+ xx->a[1] = angle[1];
+ xx->r[0] = radius[0];
+ xx->r[1] = radius[1];
+ xx->c[0] = center[0];
+ xx->c[1] = center[1];
+
+ if (!FixUpCornu0(xx->pos,xx->c,xx->a,xx->r, xx)) {
+ ErrorMessage("Create Cornu Failed");
+ return NULL;
}
-LOG( log_cornu, 1, ( "NewCornuTrack( EP1 %0.3f, %0.3f, EP2 %0.3f, %0.3f ) = %d\n", pos[0].x, pos[0].y, pos[1].x, pos[1].y, GetTrkIndex(p) ) )
+ LOG( log_cornu, 1,
+ ( "NewCornuTrack( EP1 %0.3f, %0.3f, EP2 %0.3f, %0.3f ) = %d\n", pos[0].x,
+ pos[0].y, pos[1].x, pos[1].y, GetTrkIndex(p) ) )
ComputeCornuBoundingBox( p, xx );
SetTrkEndPoint( p, 0, pos[0], xx->a[0]);
SetTrkEndPoint( p, 1, pos[1], xx->a[1]);
diff --git a/app/bin/tcornu.h b/app/bin/tcornu.h
index 7245dfd..cc4ddcf 100644
--- a/app/bin/tcornu.h
+++ b/app/bin/tcornu.h
@@ -16,50 +16,58 @@
*
* 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 "common.h"
typedef struct extraDataCornu_t {
- extraDataBase_t base;
- coOrd pos[2];
- coOrd c[2];
- ANGLE_T a[2];
- DIST_T r[2];
- DIST_T minCurveRadius;
- DIST_T maxRateofChange;
- DIST_T length;
- ANGLE_T windingAngle;
- dynArr_t arcSegs;
- coOrd descriptionOff;
- char * cornuPath;
- } extraDataCornu_t;
+ extraDataBase_t base;
+ coOrd pos[4];
+ coOrd c[2];
+ ANGLE_T a[2];
+ DIST_T r[2];
+ DIST_T minCurveRadius;
+ DIST_T maxRateofChange;
+ DIST_T length;
+ ANGLE_T windingAngle;
+ dynArr_t arcSegs;
+ coOrd descriptionOff;
+ char * cornuPath;
+} extraDataCornu_t;
typedef struct {
- coOrd pos[2]; //All values for end if trk[end] = NULL
- DIST_T radius[2]; //0.0 if straight
- ANGLE_T angle[2]; //Set if straight
- coOrd center[2]; //Set if radius >0
- dynArr_t mids; //If there are G2 points added
- } cornuParm_t;
+ coOrd pos[2]; //All values for end if trk[end] = NULL
+ DIST_T radius[2]; //0.0 if straight
+ ANGLE_T angle[2]; //Set if straight
+ coOrd center[2]; //Set if radius >0
+ dynArr_t mids; //If there are G2 points added
+} cornuParm_t;
double CornuMaxCurve(coOrd[2],ANGLE_T[2],DIST_T[2]);
double BezierMathMinRadius(coOrd[4]);
-coOrd BezierMathFindNearestPoint(coOrd *, coOrd[4] , int );
-track_p NewCornuTrack(coOrd pos[2], coOrd center[2], ANGLE_T angle[2], DIST_T radius[2], trkSeg_p tempsegs, int count);
-DIST_T CornuDistance( coOrd *, coOrd[2], ANGLE_T[2], DIST_T[2], trkSeg_p ,int , double * );
-BOOL_T FixUpCornu(coOrd pos[2], track_p [2], EPINX_T ep[2], struct extraDataCornu_t* xx);
-BOOL_T FixUpCornu0(coOrd pos[2], coOrd center[2], ANGLE_T angle[2], DIST_T radius[2], struct extraDataCornu_t* xx);
+coOrd BezierMathFindNearestPoint(coOrd *, coOrd[4], int );
+track_p NewCornuTrack(coOrd pos[2], coOrd center[2], ANGLE_T angle[2],
+ DIST_T radius[2], trkSeg_p tempsegs, int count);
+DIST_T CornuDistance( coOrd *, coOrd[2], ANGLE_T[2], DIST_T[2], trkSeg_p,int,
+ double * );
+BOOL_T FixUpCornu(coOrd pos[4], track_p [2], EPINX_T ep[2],
+ struct extraDataCornu_t* xx);
+BOOL_T FixUpCornu0(coOrd pos[4], coOrd center[2], ANGLE_T angle[2],
+ DIST_T radius[2], struct extraDataCornu_t* xx);
BOOL_T GetCornuSegmentsFromTrack(track_p, trkSeg_p);
-BOOL_T SetCornuEndPt(track_p trk, EPINX_T inx, coOrd pos, coOrd center, ANGLE_T angle, DIST_T radius);
+BOOL_T SetCornuEndPt(track_p trk, EPINX_T inx, coOrd pos, coOrd center,
+ ANGLE_T angle, DIST_T radius);
BOOL_T RebuildCornu (track_p trk);
DIST_T DistanceCornu( track_p t, coOrd * p );
STATUS_T CornuDescriptionMove(track_p trk,wAction_t action,coOrd pos );
-DIST_T CornuDescriptionDistance(coOrd pos,track_p trk, coOrd *, BOOL_T show_hidden, BOOL_T * hidden );
-void GetCornuParmsNear(track_p t, int sel, coOrd * pos, coOrd * center, ANGLE_T * angle, DIST_T * radius );
-void GetCornuParmsTemp(dynArr_t *, int sel, coOrd * pos2, coOrd * center, ANGLE_T * angle2, DIST_T * radius );
+DIST_T CornuDescriptionDistance(coOrd pos,track_p trk, coOrd *,
+ BOOL_T show_hidden, BOOL_T * hidden );
+void GetCornuParmsNear(track_p t, int sel, coOrd * pos, coOrd * center,
+ ANGLE_T * angle, DIST_T * radius );
+void GetCornuParmsTemp(dynArr_t *, int sel, coOrd * pos2, coOrd * center,
+ ANGLE_T * angle2, DIST_T * radius );
BOOL_T CallCornu(coOrd[2],track_p[2],EPINX_T[2],dynArr_t *,cornuParm_t *);
BOOL_T CallCornu0(coOrd[2], coOrd[2], ANGLE_T[2], DIST_T[2], dynArr_t *,BOOL_T);
diff --git a/app/bin/tcurve.c b/app/bin/tcurve.c
index f133dc7..65b6bcc 100644
--- a/app/bin/tcurve.c
+++ b/app/bin/tcurve.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 "ccurve.h"
@@ -33,13 +33,13 @@
static TRKTYP_T T_CURVE = -1;
typedef struct extraDataCurve_t {
- extraDataBase_t base;
- coOrd pos;
- DIST_T radius;
- BOOL_T circle;
- long helixTurns;
- coOrd descriptionOff;
- } extraDataCurve_t;
+ extraDataBase_t base;
+ coOrd pos;
+ DIST_T radius;
+ BOOL_T circle;
+ long helixTurns;
+ coOrd descriptionOff;
+} extraDataCurve_t;
static int log_curve = 0;
static int log_curveSegs = 0;
@@ -54,20 +54,21 @@ static DIST_T GetLengthCurve( track_p );
static void GetCurveAngles( ANGLE_T *a0, ANGLE_T *a1, track_p trk )
{
- assert( trk != NULL );
+ CHECK( trk != NULL );
struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
if (xx->circle != TRUE) {
*a0 = NormalizeAngle( GetTrkEndAngle(trk,0) + 90 );
*a1 = NormalizeAngle(
- GetTrkEndAngle(trk,1) - GetTrkEndAngle(trk,0) + 180 );
+ GetTrkEndAngle(trk,1) - GetTrkEndAngle(trk,0) + 180 );
} else {
*a0 = 0.0;
*a1 = 360.0;
}
-LOG( log_curve, 4, ( "getCurveAngles: = %0.3f %0.3f\n", *a0, *a1 ) )
+ LOG( log_curve, 4, ( "getCurveAngles: = %0.3f %0.3f\n", *a0, *a1 ) )
}
-static void SetCurveAngles( track_p p, ANGLE_T a0, ANGLE_T a1, struct extraDataCurve_t * xx )
+static void SetCurveAngles( track_p p, ANGLE_T a0, ANGLE_T a1,
+ struct extraDataCurve_t * xx )
{
coOrd pos0, pos1;
xx->circle = (a0 == 0.0 && a1 == 0.0);
@@ -106,14 +107,13 @@ static void AdjustCurveEndPt( track_p t, EPINX_T inx, ANGLE_T a )
{
coOrd pos;
ANGLE_T aa;
- if (GetTrkType(t) != T_CURVE) {
- AbortProg( "AdjustCurveEndPt( %d, %d ) not on CURVE %d",
- GetTrkIndex(t), inx, GetTrkType(t) );
- return;
- }
+ CHECKMSG( GetTrkType(t) == T_CURVE,
+ ( "AdjustCurveEndPt( %d, %d ) not on CURVE %d",
+ GetTrkIndex(t), inx, GetTrkType(t) ) );
struct extraDataCurve_t *xx = GET_EXTRA_DATA(t, T_CURVE, extraDataCurve_t);
UndoModify( t );
-LOG( log_curve, 1, ( "adjustCurveEndPt T%d[%d] a=%0.3f\n", GetTrkIndex(t), inx, a ) )
+ LOG( log_curve, 1, ( "adjustCurveEndPt T%d[%d] a=%0.3f\n", GetTrkIndex(t), inx,
+ a ) )
aa = a = NormalizeAngle(a);
a += inx==0?90.0:-90.0;
(void)PointOnCircle( &pos, xx->pos, xx->radius, a );
@@ -123,9 +123,9 @@ LOG( log_curve, 1, ( "adjustCurveEndPt T%d[%d] a=%0.3f\n", GetTrkIndex(t), inx,
SetTrkEndPoint( t, 1-inx, pos, a );
xx->circle = 0;
}
-LOG( log_curve, 1, ( " E0:[%0.3f %0.3f] A%0.3f, E1:[%0.3f %0.3f] A%0.3f\n",
- GetTrkEndPosXY(t,0), GetTrkEndAngle(t,0),
- GetTrkEndPosXY(t,1), GetTrkEndAngle(t,1) ) )
+ LOG( log_curve, 1, ( " E0:[%0.3f %0.3f] A%0.3f, E1:[%0.3f %0.3f] A%0.3f\n",
+ GetTrkEndPosXY(t,0), GetTrkEndAngle(t,0),
+ GetTrkEndPosXY(t,1), GetTrkEndAngle(t,1) ) )
ComputeCurveBoundingBox( t, xx );
CheckTrackLength( t );
}
@@ -140,8 +140,9 @@ static void GetTrkCurveCenter( track_p t, coOrd *p, DIST_T *r )
BOOL_T IsCurveCircle( track_p t )
{
struct extraDataCurve_t *xx;
- if ( GetTrkType(t) != T_CURVE )
+ if ( GetTrkType(t) != T_CURVE ) {
return FALSE;
+ }
xx = GET_EXTRA_DATA(t, T_CURVE, extraDataCurve_t);
return xx->circle || xx->helixTurns>0;
}
@@ -151,8 +152,9 @@ BOOL_T GetCurveMiddle( track_p trk, coOrd * pos )
{
struct extraDataCurve_t *xx;
ANGLE_T a0, a1;
- if ( GetTrkType(trk) != T_CURVE )
+ if ( GetTrkType(trk) != T_CURVE ) {
return FALSE;
+ }
xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
if (xx->circle || xx->helixTurns>0) {
PointOnCircle( pos, xx->pos, xx->radius, 0 );
@@ -166,54 +168,59 @@ BOOL_T GetCurveMiddle( track_p trk, coOrd * pos )
static DIST_T DistanceCurve( track_p t, coOrd * p );
DIST_T CurveDescriptionDistance(
- coOrd pos,
- track_p trk,
- coOrd * dpos,
- BOOL_T show_hidden,
- BOOL_T * hidden)
+ coOrd pos,
+ track_p trk,
+ coOrd * dpos,
+ BOOL_T show_hidden,
+ BOOL_T * hidden)
{
- coOrd p0,p1,pd;
+ coOrd pd;
+// coOrd p0,p1;
FLOAT_T ratio;
ANGLE_T a, a0, a1;
- if (hidden) *hidden = FALSE;
- if ( (GetTrkType( trk ) != T_CURVE ) || ((( GetTrkBits( trk ) & TB_HIDEDESC ) != 0) && !show_hidden))
+ if (hidden) { *hidden = FALSE; }
+ if ( (GetTrkType( trk ) != T_CURVE )
+ || ((( GetTrkBits( trk ) & TB_HIDEDESC ) != 0) && !show_hidden)) {
return DIST_INF;
+ }
struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
coOrd offset = xx->descriptionOff;
- if (( GetTrkBits( trk ) & TB_HIDEDESC ) != 0) offset = zero;
+ if (( GetTrkBits( trk ) & TB_HIDEDESC ) != 0) { offset = zero; }
if ( xx->helixTurns > 0 ) {
pd.x = xx->pos.x + offset.x;
pd.y = xx->pos.y + offset.y;
- p0 = pd;
- p1 = pd;
+// p0 = pd;
+// p1 = pd;
} else {
GetCurveAngles( &a0, &a1, trk );
ratio = offset.x;
- if (!IsCurveCircle( trk ))
+ if (!IsCurveCircle( trk )) {
a = NormalizeAngle(a0 + a1/2.0 + ratio * a1/ 2.0);
- else
+ } else {
a = NormalizeAngle(360.0*ratio+a0);
+ }
ratio = offset.y+0.5;
- if (ratio<0.0) ratio = 0.0;
- if (ratio>1.0) ratio = 1.0;
+ if (ratio<0.0) { ratio = 0.0; }
+ if (ratio>1.0) { ratio = 1.0; }
Translate( &pd, xx->pos, a, xx->radius * ratio );
}
- if (hidden) *hidden = (GetTrkBits( trk ) & TB_HIDEDESC);
+ if (hidden) { *hidden = (GetTrkBits( trk ) & TB_HIDEDESC); }
*dpos = pd;
coOrd tpos = pos;
- if (DistanceCurve(trk, &tpos)<FindDistance(pd, pos))
+ if (DistanceCurve(trk, &tpos)<FindDistance(pd, pos)) {
return DistanceCurve(trk, &pos);
+ }
return FindDistance( pd, pos );
}
static void DrawCurveDescription(
- track_p trk,
- drawCmd_p d,
- wDrawColor color )
+ track_p trk,
+ drawCmd_p d,
+ wDrawColor color )
{
wFont_p fp;
coOrd pos, p0, p1;
@@ -222,10 +229,12 @@ static void DrawCurveDescription(
ANGLE_T a, a0, a1;
FLOAT_T ratio;
- if (layoutLabels == 0)
+ if (layoutLabels == 0) {
return;
- if ((labelEnable&LABELENABLE_TRKDESC)==0)
+ }
+ if ((labelEnable&LABELENABLE_TRKDESC)==0) {
return;
+ }
struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
if ( xx->helixTurns > 0 ) {
@@ -235,11 +244,11 @@ static void DrawCurveDescription(
dist = GetLengthCurve( trk );
elevValid = FALSE;
if ( (!xx->circle) &&
- ComputeElev( trk, 0, FALSE, &elev0, NULL, FALSE ) &&
- ComputeElev( trk, 1, FALSE, &elev1, NULL, FALSE ) ) {
- if( elev0 == elev1 )
+ ComputeElev( trk, 0, FALSE, &elev0, NULL, FALSE ) &&
+ ComputeElev( trk, 1, FALSE, &elev1, NULL, FALSE ) ) {
+ if( elev0 == elev1 ) {
elevValid = FALSE;
- else {
+ } else {
elevValid = TRUE;
grade = fabs((elev1-elev0)/dist);
sep = grade*(xx->radius*M_PI*2.0);
@@ -248,17 +257,19 @@ static void DrawCurveDescription(
fp = wStandardFont( F_TIMES, FALSE, FALSE );
if (elevValid)
sprintf( message, _("Helix: Turns %ld L %0.2f Grade %0.1f%% Sep %0.2f"),
- xx->helixTurns,
- dist,
- grade*100.0,
- sep );
+ xx->helixTurns,
+ dist,
+ grade*100.0,
+ sep );
else
sprintf( message, _("Helix: Turns %ld L %0.2f"),
- xx->helixTurns,
- dist );
- if (color == drawColorPreviewSelected)
+ xx->helixTurns,
+ dist );
+ if (color == drawColorPreviewSelected) {
DrawLine(d,xx->pos,pos,0,color);
- DrawBoxedString( BOX_BOX, d, pos, message, fp, (wFontSize_t)descriptionFontSize, color, 0.0 );
+ }
+ DrawBoxedString( BOX_BOX, d, pos, message, fp, (wFontSize_t)descriptionFontSize,
+ color, 0.0 );
} else {
dist = trackGauge/2.0;
DrawArc( d, xx->pos, dist, 0.0, 360.0, FALSE, 0, color );
@@ -270,10 +281,11 @@ static void DrawCurveDescription(
DrawLine( d, p0, p1, 0, color );
GetCurveAngles( &a0, &a1, trk );
ratio = xx->descriptionOff.x; // 1.0 to - 1.0
- if (! IsCurveCircle( trk ))
+ if (! IsCurveCircle( trk )) {
a = NormalizeAngle(ratio*a1/2.0 + a0 + a1/2.0);
- else
+ } else {
a = NormalizeAngle(ratio*360.0+a0);
+ }
PointOnCircle( &p0, xx->pos, xx->radius, a );
coOrd end0, end1;
DIST_T off;
@@ -281,19 +293,24 @@ static void DrawCurveDescription(
Translate(&end1,xx->pos,a0+a1,xx->radius);
off = xx->radius-(cos(D2R(a1/2))*xx->radius);
ratio = xx->descriptionOff.y;
- if (ratio < -0.5) ratio = -0.5;
- if (ratio > 0.5) ratio = 0.5;
+ if (ratio < -0.5) { ratio = -0.5; }
+ if (ratio > 0.5) { ratio = 0.5; }
if (! IsCurveCircle(trk))
sprintf( message, "R %s L %s A %0.3f O %s", FormatDistance( xx->radius ),
- FormatDistance(FindDistance(end0,end1)),FindAngle(end1,end0), FormatDistance(off));
- else
- sprintf( message, "R %s L %s A 360.0", FormatDistance( xx->radius ),FormatDistance(xx->radius*2*M_PI));
- DrawDimLine( d, xx->pos, p0, message, (wFontSize_t)descriptionFontSize, ratio+0.5, 0, color, 0x00 );
+ FormatDistance(FindDistance(end0,end1)),FindAngle(end1,end0),
+ FormatDistance(off));
+ else {
+ sprintf( message, "R %s L %s A 360.0", FormatDistance( xx->radius ),
+ FormatDistance(xx->radius*2*M_PI));
+ }
+ DrawDimLine( d, xx->pos, p0, message, (wFontSize_t)descriptionFontSize,
+ ratio+0.5, 0, color, 0x00 );
if (GetTrkBits( trk ) & TB_DETAILDESC) {
coOrd details_pos;
details_pos.x = (p0.x - xx->pos.x)*(ratio+0.5) + xx->pos.x;
- details_pos.y = (p0.y - xx->pos.y)*(ratio+0.5) + xx->pos.y-(2*descriptionFontSize/mainD.dpi);
+ details_pos.y = (p0.y - xx->pos.y)*(ratio+0.5) + xx->pos.y-
+ (2*descriptionFontSize/mainD.dpi);
AddTrkDetails(d, trk, details_pos, a1/180.0*M_PI*xx->radius, color);
}
@@ -303,27 +320,27 @@ static void DrawCurveDescription(
STATUS_T CurveDescriptionMove(
- track_p trk,
- wAction_t action,
- coOrd pos )
+ track_p trk,
+ wAction_t action,
+ coOrd pos )
{
struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
- static coOrd p0,p1;
- wDrawColor color;
+// static coOrd p0,p1;
+// wDrawColor color;
ANGLE_T a, a0, a1;
DIST_T d;
- p0 = xx->pos;
+// p0 = xx->pos;
- color = GetTrkColor( trk, &mainD );
+// color = GetTrkColor( trk, &mainD );
if ( xx->helixTurns > 0 ) {
xx->descriptionOff.x = (pos.x-xx->pos.x);
xx->descriptionOff.y = (pos.y-xx->pos.y);
- p1 = pos;
+// p1 = pos;
} else {
- p1 = pos;
+// p1 = pos;
GetCurveAngles( &a0, &a1, trk );
- if ( a1 < 1 ) a1 = 1.0;
+ if ( a1 < 1 ) { a1 = 1.0; }
a = FindAngle( xx->pos, pos );
if ( ! IsCurveCircle( trk ) ) {
a = NormalizeAngle( a - a0 );
@@ -341,10 +358,12 @@ STATUS_T CurveDescriptionMove(
xx->descriptionOff.x = NormalizeAngle((a - a0)/360.0);
}
d = FindDistance( xx->pos, pos ) / xx->radius;
- if ( d > 1.0 )
+ if ( d > 1.0 ) {
d = 1.0;
- if ( d < 0.0 )
+ }
+ if ( d < 0.0 ) {
d = 0.0;
+ }
xx->descriptionOff.y = d-0.5; // -0.5 to 0.5, 0 in the middle
}
@@ -358,48 +377,51 @@ STATUS_T CurveDescriptionMove(
*/
static struct {
- coOrd endPt[2];
- FLOAT_T elev[2];
- FLOAT_T length;
- coOrd center;
- DIST_T radius;
- long turns;
- DIST_T separation;
- ANGLE_T angle0;
- ANGLE_T angle1;
- ANGLE_T angle;
- FLOAT_T grade;
- descPivot_t pivot;
- unsigned int layerNumber;
- } crvData;
+ coOrd endPt[2];
+ FLOAT_T elev[2];
+ FLOAT_T length;
+ coOrd center;
+ DIST_T radius;
+ long turns;
+ DIST_T separation;
+ ANGLE_T angle0;
+ ANGLE_T angle1;
+ ANGLE_T angle;
+ FLOAT_T grade;
+ descPivot_t pivot;
+ unsigned int layerNumber;
+} crvData;
typedef enum { E0, Z0, E1, Z1, CE, RA, TU, SE, LN, AL, A1, A2, GR, PV, LY } crvDesc_e;
static descData_t crvDesc[] = {
-/*E0*/ { DESC_POS, N_("End Pt 1: X,Y"), &crvData.endPt[0] },
-/*Z0*/ { DESC_DIM, N_("Z"), &crvData.elev[0] },
-/*E1*/ { DESC_POS, N_("End Pt 2: X,Y"), &crvData.endPt[1] },
-/*Z1*/ { DESC_DIM, N_("Z"), &crvData.elev[1] },
-/*CE*/ { DESC_POS, N_("Center: X,Y"), &crvData.center },
-/*RA*/ { DESC_DIM, N_("Radius"), &crvData.radius },
-/*TU*/ { DESC_LONG, N_("Turns"), &crvData.turns },
-/*SE*/ { DESC_DIM, N_("Separation"), &crvData.separation },
-/*LN*/ { DESC_DIM, N_("Length"), &crvData.length },
-/*AL*/ { DESC_FLOAT, N_("Angular Length"), &crvData.angle },
-/*A1*/ { DESC_ANGLE, N_("CCW Angle"), &crvData.angle0 },
-/*A2*/ { DESC_ANGLE, N_("CW Angle"), &crvData.angle1 },
-/*GR*/ { DESC_FLOAT, N_("Grade"), &crvData.grade },
-/*PV*/ { DESC_PIVOT, N_("Lock"), &crvData.pivot },
-/*LY*/ { DESC_LAYER, N_("Layer"), &crvData.layerNumber },
- { DESC_NULL } };
-
-static void UpdateCurve( track_p trk, int inx, descData_p descUpd, BOOL_T final )
+ /*E0*/ { DESC_POS, N_("End Pt 1: X,Y"), &crvData.endPt[0] },
+ /*Z0*/ { DESC_DIM, N_("Z"), &crvData.elev[0] },
+ /*E1*/ { DESC_POS, N_("End Pt 2: X,Y"), &crvData.endPt[1] },
+ /*Z1*/ { DESC_DIM, N_("Z"), &crvData.elev[1] },
+ /*CE*/ { DESC_POS, N_("Center: X,Y"), &crvData.center },
+ /*RA*/ { DESC_DIM, N_("Radius"), &crvData.radius },
+ /*TU*/ { DESC_LONG, N_("Turns"), &crvData.turns },
+ /*SE*/ { DESC_DIM, N_("Separation"), &crvData.separation },
+ /*LN*/ { DESC_DIM, N_("Length"), &crvData.length },
+ /*AL*/ { DESC_FLOAT, N_("Angular Length"), &crvData.angle },
+ /*A1*/ { DESC_ANGLE, N_("CCW Angle"), &crvData.angle0 },
+ /*A2*/ { DESC_ANGLE, N_("CW Angle"), &crvData.angle1 },
+ /*GR*/ { DESC_FLOAT, N_("Grade"), &crvData.grade },
+ /*PV*/ { DESC_PIVOT, N_("Lock"), &crvData.pivot },
+ /*LY*/ { DESC_LAYER, N_("Layer"), &crvData.layerNumber },
+ { DESC_NULL }
+};
+
+static void UpdateCurve( track_p trk, int inx, descData_p descUpd,
+ BOOL_T final )
{
BOOL_T updateEndPts;
ANGLE_T a0, a1;
EPINX_T ep;
FLOAT_T turns;
- if ( inx == -1 )
+ if ( inx == -1 ) {
return;
+ }
struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
struct extraDataCurve_t xx0 = *xx;
updateEndPts = FALSE;
@@ -498,12 +520,14 @@ static void UpdateCurve( track_p trk, int inx, descData_p descUpd, BOOL_T final
case Z0:
case Z1:
ep = (inx==Z0?0:1);
- UpdateTrkEndElev( trk, ep, GetTrkEndElevUnmaskedMode(trk,ep), crvData.elev[ep], NULL );
+ UpdateTrkEndElev( trk, ep, GetTrkEndElevUnmaskedMode(trk,ep), crvData.elev[ep],
+ NULL );
ComputeElev( trk, 1-ep, FALSE, &crvData.elev[1-ep], NULL, TRUE );
- if ( crvData.length > minLength )
+ if ( crvData.length > minLength ) {
crvData.grade = fabs( (crvData.elev[0]-crvData.elev[1])/crvData.length )*100.0;
- else
+ } else {
crvData.grade = 0.0;
+ }
crvDesc[GR].mode |= DESC_CHANGE;
crvDesc[inx==Z0?Z1:Z0].mode |= DESC_CHANGE;
if ( xx->helixTurns > 0 ) {
@@ -516,7 +540,7 @@ static void UpdateCurve( track_p trk, int inx, descData_p descUpd, BOOL_T final
SetTrkLayer( trk, crvData.layerNumber);
break;
default:
- AbortProg( "updateCurve: Bad inx %d", inx );
+ CHECKMSG( FALSE, ( "updateCurve: Bad inx %d", inx ) );
}
UndrawNewTrack( trk );
*xx = xx0;
@@ -539,10 +563,11 @@ static void UpdateCurve( track_p trk, int inx, descData_p descUpd, BOOL_T final
DrawCurveDescription( trk, &mainD, wDrawColorBlack );
turns = crvData.length/(2*M_PI*crvData.radius);
crvData.separation = fabs(crvData.elev[0]-crvData.elev[1])/turns;
- if ( crvData.length > minLength )
+ if ( crvData.length > minLength ) {
crvData.grade = fabs( (crvData.elev[0]-crvData.elev[1])/crvData.length )*100.0;
- else
+ } else {
crvData.grade = 0.0;
+ }
crvDesc[GR].mode |= DESC_CHANGE;
}
@@ -562,24 +587,26 @@ static void DescribeCurve( track_p trk, char * str, CSIZE_T len )
d = xx->radius * 2.0 * M_PI * a1 / 360.0;
if (xx->helixTurns > 0) {
d += (xx->helixTurns-(xx->circle?1:0)) * xx->radius * 2.0 * M_PI;
- sprintf( str, _("Helix Track(%d): Layer=%d Radius=%s Turns=%ld Length=%s Center=[%s,%s] EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"),
- GetTrkIndex(trk),
- GetTrkLayer(trk)+1,
- FormatDistance(xx->radius),
- xx->helixTurns,
- FormatDistance(d),
- FormatDistance(xx->pos.x), FormatDistance(xx->pos.y),
- GetTrkEndPosXY(trk,0), GetTrkEndAngle(trk,0),
- GetTrkEndPosXY(trk,1), GetTrkEndAngle(trk,1) );
+ sprintf( str,
+ _("Helix Track(%d): Layer=%d Radius=%s Turns=%ld Length=%s Center=[%s,%s] EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"),
+ GetTrkIndex(trk),
+ GetTrkLayer(trk)+1,
+ FormatDistance(xx->radius),
+ xx->helixTurns,
+ FormatDistance(d),
+ FormatDistance(xx->pos.x), FormatDistance(xx->pos.y),
+ GetTrkEndPosXY(trk,0), GetTrkEndAngle(trk,0),
+ GetTrkEndPosXY(trk,1), GetTrkEndAngle(trk,1) );
} else {
- sprintf( str, _("Curved Track(%d): Layer=%d Radius=%s Length=%s Center=[%s,%s] EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"),
- GetTrkIndex(trk),
- GetTrkLayer(trk)+1,
- FormatDistance(xx->radius),
- FormatDistance(d),
- FormatDistance(xx->pos.x), FormatDistance(xx->pos.y),
- GetTrkEndPosXY(trk,0), GetTrkEndAngle(trk,0),
- GetTrkEndPosXY(trk,1), GetTrkEndAngle(trk,1) );
+ sprintf( str,
+ _("Curved Track(%d): Layer=%d Radius=%s Length=%s Center=[%s,%s] EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"),
+ GetTrkIndex(trk),
+ GetTrkLayer(trk)+1,
+ FormatDistance(xx->radius),
+ FormatDistance(d),
+ FormatDistance(xx->pos.x), FormatDistance(xx->pos.y),
+ GetTrkEndPosXY(trk,0), GetTrkEndAngle(trk,0),
+ GetTrkEndPosXY(trk,1), GetTrkEndAngle(trk,1) );
}
fix0 = GetTrkEndTrk(trk,0)!=NULL;
@@ -603,10 +630,11 @@ static void DescribeCurve( track_p trk, char * str, CSIZE_T len )
}
ComputeElev( trk, 0, FALSE, &crvData.elev[0], NULL, FALSE );
ComputeElev( trk, 1, FALSE, &crvData.elev[1], NULL, FALSE );
- if ( crvData.length > minLength )
+ if ( crvData.length > minLength ) {
crvData.grade = fabs( (crvData.elev[0]-crvData.elev[1])/crvData.length )*100.0;
- else
+ } else {
crvData.grade = 0.0;
+ }
if ( xx->helixTurns > 0 ) {
turns = crvData.length/(2*M_PI*crvData.radius);
crvData.separation = fabs(crvData.elev[0]-crvData.elev[1])/turns;
@@ -614,25 +642,25 @@ static void DescribeCurve( track_p trk, char * str, CSIZE_T len )
}
crvDesc[E0].mode =
- crvDesc[E1].mode =
- crvDesc[LN].mode =
- DESC_RO;
+ crvDesc[E1].mode =
+ crvDesc[LN].mode =
+ DESC_RO;
crvDesc[Z0].mode = (EndPtIsDefinedElev(trk,0)?0:DESC_RO)|DESC_NOREDRAW;
crvDesc[Z1].mode = (EndPtIsDefinedElev(trk,1)?0:DESC_RO)|DESC_NOREDRAW;
crvDesc[GR].mode = DESC_RO;
crvDesc[CE].mode = (fix0|fix1)?DESC_RO:0;
crvDesc[RA].mode =
- crvDesc[AL].mode =
- (fix0&fix1)?DESC_RO:0;
+ crvDesc[AL].mode =
+ (fix0&fix1)?DESC_RO:0;
crvDesc[TU].mode = DESC_NOREDRAW;
crvDesc[A1].mode = fix0?DESC_RO:0;
crvDesc[A2].mode = fix1?DESC_RO:0;
crvDesc[PV].mode = (fix0|fix1)?DESC_IGNORE:0;
crvDesc[LY].mode = DESC_NOREDRAW;
crvData.pivot = (fix0&fix1)?DESC_PIVOT_NONE:
- fix0?DESC_PIVOT_FIRST:
- fix1?DESC_PIVOT_SECOND:
- DESC_PIVOT_MID;
+ fix0?DESC_PIVOT_FIRST:
+ fix1?DESC_PIVOT_SECOND:
+ DESC_PIVOT_MID;
crvDesc[SE].mode |= DESC_IGNORE;
if ( xx->circle ) {
@@ -645,10 +673,11 @@ static void DescribeCurve( track_p trk, char * str, CSIZE_T len )
crvDesc[A2].mode |= DESC_IGNORE;
crvDesc[PV].mode |= DESC_IGNORE;
}
-
+
if ( xx->helixTurns ) {
- if ( !xx->circle )
+ if ( !xx->circle ) {
crvDesc[SE].mode = DESC_RO;
+ }
DoDescribe( _("Helix Track"), trk, crvDesc, UpdateCurve );
} else if ( xx->circle ) {
crvDesc[TU].mode |= DESC_IGNORE;
@@ -676,31 +705,167 @@ static DIST_T DistanceCurve( track_p t, coOrd * p )
static void DrawCurve( track_p t, drawCmd_p d, wDrawColor color )
{
ANGLE_T a0, a1;
- track_p tt = t;
+// track_p tt = t;
long widthOptions = DTS_LEFT|DTS_RIGHT;
struct extraDataCurve_t *xx = GET_EXTRA_DATA(t, T_CURVE, extraDataCurve_t);
GetCurveAngles( &a0, &a1, t );
- if (xx->circle) {
- tt = NULL;
- }
+// if (xx->circle) {
+// tt = NULL;
+// }
if (xx->helixTurns > 0) {
a0 = 0.0;
a1 = 360.0;
}
if ( ((d->options&(DC_SIMPLE|DC_SEGTRACK))==0) &&
- (labelWhen == 2 || (labelWhen == 1 && (d->options&DC_PRINT))) &&
- labelScale >= d->scale &&
- ( GetTrkBits( t ) & TB_HIDEDESC ) == 0 ) {
+ (labelWhen == 2 || (labelWhen == 1 && (d->options&DC_PRINT))) &&
+ labelScale >= d->scale &&
+ ( GetTrkBits( t ) & TB_HIDEDESC ) == 0 ) {
DrawCurveDescription( t, d, color );
}
DrawCurvedTrack( d, xx->pos, xx->radius, a0, a1,
- t, color, widthOptions );
+ t, color, widthOptions );
DrawEndPt( d, t, 0, color );
DrawEndPt( d, t, 1, color );
}
+static void DrawCurvedTies(
+ drawCmd_p d,
+ tieData_t td,
+ coOrd p,
+ DIST_T r,
+ ANGLE_T a0,
+ ANGLE_T a1,
+ wDrawColor color )
+{
+ DIST_T len;
+ ANGLE_T ang, dang;
+ coOrd pos;
+ int cnt;
+
+ if ( (d->options&DC_SIMPLE) != 0 ) {
+ return;
+ }
+
+ if (color == wDrawColorBlack) {
+ color = tieColor;
+ }
+ len = 2*M_PI*r*a1/360.0;
+ cnt = (int)floor(len/td.spacing + 0.5);
+ if ( len - td.spacing*cnt - (td.width/2) > (td.spacing - td.width)/2 ) {
+ cnt++;
+ }
+ if ( cnt != 0 ) {
+ dang = (360.0*(len)/cnt)/(2*M_PI*r);
+ for ( ang=a0+dang/2; cnt; cnt--,ang+=dang ) {
+ PointOnCircle( &pos, p, r, ang );
+ DrawTie( d, pos, ang+90, td.length, td.width, color,
+ tieDrawMode==TIEDRAWMODE_SOLID );
+ }
+
+ }
+}
+
+EXPORT void DrawCurvedTrack(
+ drawCmd_p d,
+ coOrd p,
+ DIST_T r,
+ ANGLE_T a0,
+ ANGLE_T a1,
+ track_cp trk,
+ wDrawColor color,
+ long options )
+{
+ DIST_T trackGauge = GetTrkGauge(trk);
+ tieData_t td;
+ wDrawWidth width=0;
+ trkSeg_p segPtr;
+ long bridge = 0, roadbed = 0;
+ if(trk) {
+ bridge = GetTrkBridge( trk );
+ roadbed = GetTrkRoadbed( trk );
+ }
+
+ if ( (d->options&DC_SEGTRACK) ) {
+ DYNARR_APPEND( trkSeg_t, tempSegs_da, 10 );
+ segPtr = &tempSegs(tempSegs_da.cnt-1);
+ segPtr->type = SEG_CRVTRK;
+ segPtr->lineWidth = 0;
+ segPtr->color = wDrawColorBlack;
+ segPtr->u.c.center = p;
+ segPtr->u.c.a0 = a0;
+ segPtr->u.c.a1 = a1;
+ segPtr->u.c.radius = r;
+ return;
+ }
+
+ width = trk ? GetTrkWidth( trk ): 0;
+ if ( d->options&DC_THICK ) {
+ width = 3;
+ }
+ if ( color == wDrawColorPreviewSelected
+ || color == wDrawColorPreviewUnselected ) {
+ width = 3;
+ }
+
+ if ((d->options&DC_PRINT) && (d->dpi>2*BASE_DPI)) {
+ width = (wDrawWidth)round(width * d->dpi / 2 / BASE_DPI);
+ }
+
+ LOG(log_curve,4,("DST( (%0.3f %0.3f) R%0.3f A%0.3f..%0.3f)\n",
+ p.x, p.y, r, a0, a1 ) )
+
+ // Draw a solid background
+ if(bridge|roadbed) {
+ wDrawWidth width3 = (wDrawWidth)round(trackGauge * 3 * d->dpi / d->scale);
+ DrawArc( d, p, r, a0, a1, 0, width3, bridge?bridgeColor:roadbedColor );
+ }
+
+ if ( DoDrawTies( d, trk ) ) {
+ td = GetTrkTieData( trk );
+ DrawCurvedTies( d, td, p, r, a0, a1, color );
+ }
+ if (color == wDrawColorBlack) {
+ color = normalColor;
+ }
+ if ( ! DrawTwoRails( d, 1 ) ) {
+ DrawArc( d, p, r, a0, a1, (centerDrawMode
+ && !(options&DTS_NOCENTER)) ? 1 : 0, width, color );
+ } else {
+ if ( hasTrackCenterline(d)) {
+ long options = d->options;
+ d->options |= DC_DASH;
+ DrawArc( d, p, r, a0, a1, 0, 0, color );
+ d->options = options;
+ }
+ DrawArc( d, p, r+trackGauge/2.0, a0, a1, 0, width, color );
+ DrawArc( d, p, r-trackGauge/2.0, a0, a1, (centerDrawMode
+ && !(options&DTS_NOCENTER) ? 1: 0), width, color );
+ if ( (d->options&DC_PRINT) && roadbedWidth > trackGauge
+ && DrawTwoRails( d, 1 ) ) {
+ wDrawWidth rbw = (wDrawWidth)floor(roadbedLineWidth*(d->dpi/d->scale)+0.5);
+ if ( options&DTS_RIGHT ) {
+ DrawArc( d, p, r+roadbedWidth/2.0, a0, a1, 0, rbw, color );
+ }
+ if ( options&DTS_LEFT ) {
+ DrawArc( d, p, r-roadbedWidth/2.0, a0, a1, 0, rbw, color );
+ }
+ }
+ }
+ if (bridge) {
+ wDrawWidth width2 = (wDrawWidth)round((2.0 * d->dpi)/BASE_DPI);
+ if (d->options&DC_PRINT) {
+ width2 = (wDrawWidth)round(d->dpi / BASE_DPI);
+ }
+
+ DrawArc( d, p, r+(trackGauge*1.5), a0, a1, 0, width2, color );
+ DrawArc( d, p, r-(trackGauge*1.5), a0, a1, 0, width2, color );
+ }
+
+}
+
+
static void DeleteCurve( track_p t )
{
}
@@ -708,16 +873,22 @@ static void DeleteCurve( track_p t )
static BOOL_T WriteCurve( track_p t, FILE * f )
{
struct extraDataCurve_t *xx = GET_EXTRA_DATA(t, T_CURVE, extraDataCurve_t);
+ int bits;
long options;
BOOL_T rc = TRUE;
options = GetTrkWidth(t) & 0x0F;
if ( ( GetTrkBits(t) & TB_HIDEDESC ) == 0 )
- // 0x80 means Show Description
- options |= 0x80;
- rc &= fprintf(f, "CURVE %d %d %ld 0 0 %s %d %0.6f %0.6f 0 %0.6f %ld %0.6f %0.6f\n",
- GetTrkIndex(t), GetTrkLayer(t), (long)options,
- GetTrkScaleName(t), GetTrkVisible(t)|(GetTrkNoTies(t)?1<<2:0)|(GetTrkBridge(t)?1<<3:0), xx->pos.x, xx->pos.y, xx->radius,
- xx->helixTurns, xx->descriptionOff.x, xx->descriptionOff.y )>0;
+ // 0x80 means Show Description
+ {
+ options |= 0x80;
+ }
+ bits = GetTrkVisible(t)|(GetTrkNoTies(t)?1<<2:0)|(GetTrkBridge(t)?1<<3:0)|
+ (GetTrkRoadbed(t)?1<<4:0);
+ rc &= fprintf(f,
+ "CURVE %d %d %ld 0 0 %s %d %0.6f %0.6f 0 %0.6f %ld %0.6f %0.6f\n",
+ GetTrkIndex(t), GetTrkLayer(t), (long)options,
+ GetTrkScaleName(t), bits, xx->pos.x, xx->pos.y, xx->radius,
+ xx->helixTurns, xx->descriptionOff.x, xx->descriptionOff.y )>0;
rc &= WriteEndPt( f, t, 0 );
rc &= WriteEndPt( f, t, 1 );
rc &= fprintf(f, "\t%s\n", END_SEGS)>0;
@@ -740,16 +911,19 @@ static BOOL_T ReadCurve( char * line )
long helixTurns = 0;
coOrd descriptionOff = { 0.0, 0.0 };
- if (!GetArgs( line+6, paramVersion<3?"dXZsdpYfc":paramVersion<9?"dLl00sdpYfc":"dLl00sdpffc",
- &index, &layer, &options, scale, &visible, &p, &elev, &r, &cp ) ) {
+ if (!GetArgs( line+6, paramVersion<3?"dXZsdpYfc":paramVersion<9
+ ?"dLl00sdpYfc":"dLl00sdpffc",
+ &index, &layer, &options, scale, &visible, &p, &elev, &r, &cp ) ) {
return FALSE;
}
if (cp) {
- if ( !GetArgs( cp, "lp", &helixTurns, &descriptionOff ) )
+ if ( !GetArgs( cp, "lp", &helixTurns, &descriptionOff ) ) {
return FALSE;
+ }
}
- if ( !ReadSegs() )
+ if ( !ReadSegs() ) {
return FALSE;
+ }
t = NewTrack( index, T_CURVE, 0, sizeof *xx );
xx = GET_EXTRA_DATA(t, T_CURVE, extraDataCurve_t);
xx->helixTurns = helixTurns;
@@ -758,10 +932,12 @@ static BOOL_T ReadCurve( char * line )
SetTrkVisible(t, visible!=0);
SetTrkNoTies(t, FALSE);
SetTrkBridge(t, FALSE);
+ SetTrkRoadbed(t, FALSE);
} else {
SetTrkVisible(t, visible&2);
SetTrkNoTies(t, visible&4);
SetTrkBridge(t, visible&8);
+ SetTrkRoadbed(t, visible&16);
}
SetTrkScale(t, LookupScale(scale));
SetTrkLayer(t, layer );
@@ -774,13 +950,15 @@ static BOOL_T ReadCurve( char * line )
SetTrkBits(t,TB_HIDEDESC);
}
} else {
- if ( paramVersion < VERSION_DESCRIPTION2 || ( ( options & 0x80 ) == 0 ) )
- SetTrkBits(t,TB_HIDEDESC);
+ if ( paramVersion < VERSION_DESCRIPTION2 || ( ( options & 0x80 ) == 0 ) ) {
+ SetTrkBits(t,TB_HIDEDESC);
+ }
}
SetEndPts(t,2);
if (GetTrkEndAngle( t, 0 ) == 270.0 &&
- GetTrkEndAngle( t, 1 ) == 90.0 )
+ GetTrkEndAngle( t, 1 ) == 90.0 ) {
xx->circle = TRUE;
+ }
ComputeCurveBoundingBox( t, xx );
return TRUE;
}
@@ -808,17 +986,19 @@ static void RescaleCurve( track_p trk, FLOAT_T ratio )
xx->radius *= ratio;
}
-static ANGLE_T GetAngleCurve( track_p trk, coOrd pos, EPINX_T *ep0, EPINX_T *ep1 )
+static ANGLE_T GetAngleCurve( track_p trk, coOrd pos, EPINX_T *ep0,
+ EPINX_T *ep1 )
{
coOrd center;
DIST_T radius;
- if ( ep0 ) *ep0 = 0;
- if ( ep1 ) *ep1 = 1;
+ if ( ep0 ) { *ep0 = 0; }
+ if ( ep1 ) { *ep1 = 1; }
GetTrkCurveCenter( trk, &center, &radius );
return FindAngle( center, pos ) - 90.0;
}
-static BOOL_T SplitCurve( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover, EPINX_T * ep0, EPINX_T * ep1 )
+static BOOL_T SplitCurve( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover,
+ EPINX_T * ep0, EPINX_T * ep1 )
{
struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
ANGLE_T a, a0, a1;
@@ -837,9 +1017,9 @@ static BOOL_T SplitCurve( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover,
*leftover = NULL;
return TRUE;
}
- if (ep == 0)
+ if (ep == 0) {
a1 = NormalizeAngle(a-a0);
- else {
+ } else {
a1 = NormalizeAngle(a0+a1-a);
a0 = a;
}
@@ -847,7 +1027,8 @@ static BOOL_T SplitCurve( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover,
DIST_T height;
int opt;
GetTrkEndElev(trk,ep,&opt,&height);
- UpdateTrkEndElev( trk1, 1-ep, opt, height, (opt==ELEV_STATION)?GetTrkEndElevStation(trk,ep):NULL );
+ UpdateTrkEndElev( trk1, 1-ep, opt, height,
+ (opt==ELEV_STATION)?GetTrkEndElevStation(trk,ep):NULL );
AdjustCurveEndPt( trk, ep, a+(ep==0?-90.0:90.0) );
UpdateTrkEndElev( trk, ep, ELEV_NONE, 0, NULL);
*leftover = trk1;
@@ -866,55 +1047,64 @@ static BOOL_T TraverseCurve( traverseTrack_p trvTrk, DIST_T * distR )
DIST_T circum;
DIST_T dist;
long turns;
- if ( xx->circle )
+ if ( xx->circle ) {
return FALSE;
+ }
circum = 2*M_PI*xx->radius;
GetCurveAngles( &a0, &a1, trk );
a2 = FindAngle( xx->pos, trvTrk->pos );
a = NormalizeAngle( (a2-90.0) - trvTrk->angle );
if ( xx->helixTurns <= 0 ) {
if ( NormalizeAngle(a2-a0) > a1 ) {
- if ( NormalizeAngle( a2-(a0+a1/2.0+180.0 ) ) < 180.0 )
+ if ( NormalizeAngle( a2-(a0+a1/2.0+180.0 ) ) < 180.0 ) {
a2 = a0;
- else
+ } else {
a2 = NormalizeAngle(a0+a1);
+ }
}
}
- if ( a>270 || a<90 )
+ if ( a>270 || a<90 ) {
arcDist = NormalizeAngle(a2-a0)/360.0*circum;
- else
+ } else {
arcDist = NormalizeAngle(a0+a1-a2)/360.0*circum;
+ }
if ( xx->helixTurns > 0 ) {
turns = xx->helixTurns;
- if ( NormalizeAngle(a2-a0) > a1 )
+ if ( NormalizeAngle(a2-a0) > a1 ) {
turns -= 1;
+ }
dist = (a1/360.0+xx->helixTurns)*circum;
if ( trvTrk->length < 0 ) {
trvTrk->length = dist;
trvTrk->dist = a1/360.0*circum - arcDist;
while ( trvTrk->dist < 0 ) {
- if ( trvTrk->dist > -0.1 )
+ if ( trvTrk->dist > -0.1 ) {
trvTrk->dist = 0.0;
- else
+ } else {
trvTrk->dist += circum;
+ }
}
} else {
if ( trvTrk->length != dist ) {
- printf( "traverseCurve: trvTrk->length(%0.3f) != Dist(%0.3f)\n", trvTrk->length, dist );
+ printf( "traverseCurve: trvTrk->length(%0.3f) != Dist(%0.3f)\n", trvTrk->length,
+ dist );
trvTrk->length = dist;
}
if ( trvTrk->length < trvTrk->dist ) {
- printf( "traverseCurve: trvTrk->length(%0.3f) < trvTrk->dist(%0.3f)\n", trvTrk->length, trvTrk->dist );
+ printf( "traverseCurve: trvTrk->length(%0.3f) < trvTrk->dist(%0.3f)\n",
+ trvTrk->length, trvTrk->dist );
trvTrk->dist = trvTrk->length;
}
a3 = trvTrk->dist/circum*360.0;
- if ( a>270 || a<90 )
+ if ( a>270 || a<90 ) {
a3 = (a0+a1-a3);
- else
+ } else {
a3 = (a0+a3);
+ }
a3 = NormalizeAngle(a3);
- if ( NormalizeAngle(a2-a3+1.0) > 2.0 )
+ if ( NormalizeAngle(a2-a3+1.0) > 2.0 ) {
printf( "traverseCurve: A2(%0.3f) != A3(%0.3f)\n", a2, a3 );
+ }
turns = (int)((trvTrk->length-trvTrk->dist)/circum);
}
arcDist += turns * circum;
@@ -962,15 +1152,18 @@ static BOOL_T EnumerateCurve( track_p trk )
xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
GetCurveAngles( &a0, &a1, trk );
d = (xx->radius + (GetTrkGauge(trk)/2.0))* 2.0 * M_PI * a1 / 360.0;
- if (xx->helixTurns > 0)
- d += (xx->helixTurns-(xx->circle?1:0)) * (xx->radius+(GetTrkGauge(trk)/2.0)) * 2.0 * M_PI;
+ if (xx->helixTurns > 0) {
+ d += (xx->helixTurns-(xx->circle?1:0)) * (xx->radius+(GetTrkGauge(
+ trk)/2.0)) * 2.0 * M_PI;
+ }
ScaleLengthIncrement( GetTrkScale(trk), d );
return TRUE;
}
return FALSE;
}
-static BOOL_T TrimCurve( track_p trk, EPINX_T ep, DIST_T dist, coOrd endpos, ANGLE_T angle, DIST_T endradius, coOrd endcenter )
+static BOOL_T TrimCurve( track_p trk, EPINX_T ep, DIST_T dist, coOrd endpos,
+ ANGLE_T angle, DIST_T endradius, coOrd endcenter )
{
DIST_T d;
DIST_T radius;
@@ -993,16 +1186,17 @@ static BOOL_T TrimCurve( track_p trk, EPINX_T ep, DIST_T dist, coOrd endpos, ANG
UndrawNewTrack( trk );
AdjustCurveEndPt( trk, ep, a+(ep==0?-90.0:90.0) );
DrawNewTrack( trk );
- } else
+ } else {
DeleteTrack( trk, TRUE );
+ }
return TRUE;
}
static BOOL_T MergeCurve(
- track_p trk0,
- EPINX_T ep0,
- track_p trk1,
- EPINX_T ep1 )
+ track_p trk0,
+ EPINX_T ep0,
+ track_p trk1,
+ EPINX_T ep1 )
{
ANGLE_T a00, a01, a10, a11;
DIST_T d;
@@ -1010,31 +1204,38 @@ static BOOL_T MergeCurve(
EPINX_T ep2=-1;
coOrd pos;
- if (ep0 == ep1)
+ if (ep0 == ep1) {
return FALSE;
+ }
if ( IsCurveCircle(trk0) ||
- IsCurveCircle(trk1) )
+ IsCurveCircle(trk1) ) {
return FALSE;
+ }
struct extraDataCurve_t *xx0 = GET_EXTRA_DATA(trk0, T_CURVE, extraDataCurve_t);
struct extraDataCurve_t *xx1 = GET_EXTRA_DATA(trk1, T_CURVE, extraDataCurve_t);
if ( xx0->helixTurns > 0 ||
- xx1->helixTurns > 0 )
+ xx1->helixTurns > 0 ) {
return FALSE;
- if (GetTrkType(trk0) != GetTrkType(trk1))
+ }
+ if (GetTrkType(trk0) != GetTrkType(trk1)) {
return FALSE;
+ }
d = FindDistance( xx0->pos, xx1->pos );
d += fabs( xx0->radius - xx1->radius );
- if ( d > connectDistance )
+ if ( d > connectDistance ) {
return FALSE;
+ }
GetCurveAngles( &a00, &a01, trk0 );
GetCurveAngles( &a10, &a11, trk1 );
- UndoStart( _("Merge Curves"), "MergeCurve( T%d[%d] T%d[%d] )", GetTrkIndex(trk0), ep0, GetTrkIndex(trk1), ep1 );
+ UndoStart( _("Merge Curves"), "MergeCurve( T%d[%d] T%d[%d] )",
+ GetTrkIndex(trk0), ep0, GetTrkIndex(trk1), ep1 );
UndoModify( trk0 );
UndrawNewTrack( trk0 );
- if (GetTrkEndTrk(trk0,ep0) == trk1)
+ if (GetTrkEndTrk(trk0,ep0) == trk1) {
DisconnectTracks( trk0, ep0, trk1, ep1);
+ }
trk2 = GetTrkEndTrk( trk1, 1-ep1 );
if (trk2) {
ep2 = GetEndPtConnectedToMe( trk2, trk1 );
@@ -1054,7 +1255,8 @@ static BOOL_T MergeCurve(
ConnectTracks( trk0, ep0, trk2, ep2 );
}
DrawNewTrack( trk0 );
- ComputeCurveBoundingBox( trk0, GET_EXTRA_DATA(trk0, T_CURVE, extraDataCurve_t) );
+ ComputeCurveBoundingBox( trk0, GET_EXTRA_DATA(trk0, T_CURVE,
+ extraDataCurve_t) );
return TRUE;
}
@@ -1082,102 +1284,107 @@ static STATUS_T ModifyCurve( track_p trk, wAction_t action, coOrd pos )
case C_DOWN:
arcTangent = FALSE;
GetCurveAngles( &arcA0, &arcA1, trk );
- if ( arcA0 == 0.0 && arcA1 == 360.0 )
+ if ( arcA0 == 0.0 && arcA1 == 360.0 ) {
return C_ERROR;
+ }
if ( xx->helixTurns > 0 ) {
return C_ERROR;
}
ep = PickUnconnectedEndPoint( pos, trk );
- if ( ep == -1 )
+ if ( ep == -1 ) {
return C_ERROR;
+ }
GetTrkCurveCenter( trk, &arcPos, &arcRadius );
UndrawNewTrack( trk );
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).type = SEG_CRVTRK;
- tempSegs(0).width = 0;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).u.c.center = arcPos;
tempSegs(0).u.c.radius = arcRadius;
tempSegs(0).u.c.a0 = arcA0;
tempSegs(0).u.c.a1 = arcA1;
- tempSegs_da.cnt = 1;
InfoMessage( _("Drag to change angle or create tangent") );
case C_MOVE:
- if (xx->helixTurns>0)
+ if (xx->helixTurns>0) {
return C_CONTINUE;
+ }
valid = FALSE;
- a = FindAngle( arcPos, pos );
- r = FindDistance( arcPos, pos );
- if ( r > arcRadius*(arcTangent?1.0:1.10) ) {
- arcTangent = TRUE;
- if ( easeR > 0.0 && arcRadius < easeR ) {
- ErrorMessage( MSG_RADIUS_LSS_EASE_MIN,
- FormatDistance( arcRadius ), FormatDistance( easeR ) );
- return C_CONTINUE;
- }
- aa1 = 90.0-R2D( asin( arcRadius/r ) );
- aa2 = NormalizeAngle( a + (ep==0?aa1:-aa1) );
- PointOnCircle( &tangentOrig, arcPos, arcRadius, aa2 );
- if (ComputeJoint( ep==0?-arcRadius:+arcRadius, 0, &jointD ) == E_ERROR)
- return C_CONTINUE;
- tangentEnd = pos;
- if (jointD.x != 0.0) {
- Translate( &tangentOrig, tangentOrig, aa2, jointD.x );
- Translate( &tangentEnd, tangentEnd, aa2, jointD.x );
- }
- if (ep == 0) {
- tempSegs(0).u.c.a0 = aa2;
- tempSegs(0).u.c.a1 = NormalizeAngle( arcA0+arcA1-aa2 );
- } else {
- tempSegs(0).u.c.a1 = NormalizeAngle(aa2-arcA0);
- }
- d = arcRadius * tempSegs(0).u.c.a1 * 2.0*M_PI/360.0;
- d -= jointD.d0;
- if ( d <= minLength) {
- ErrorMessage( MSG_TRK_TOO_SHORT, _("Curved "), PutDim(fabs(minLength-d)) );
- return C_CONTINUE;
- }
- d = FindDistance( tangentOrig, tangentEnd );
- d -= jointD.d1;
- if ( d <= minLength) {
- ErrorMessage( MSG_TRK_TOO_SHORT, _("Tangent "), PutDim(fabs(minLength-d)) );
- return C_CONTINUE;
- }
- tempSegs(1).type = SEG_STRTRK;
- tempSegs(1).width = 0;
- tempSegs(1).u.l.pos[0] = tangentOrig;
- tempSegs(1).u.l.pos[1] = tangentEnd;
- tempSegs_da.cnt = 2;
- if (action == C_MOVE)
- InfoMessage( _("Tangent track: Length %s Angle %0.3f"),
- FormatDistance( d ),
- PutAngle( FindAngle( tangentOrig, tangentEnd ) ) );
+ a = FindAngle( arcPos, pos );
+ r = FindDistance( arcPos, pos );
+ if ( r > arcRadius*(arcTangent?1.0:1.10) ) {
+ arcTangent = TRUE;
+ if ( easeR > 0.0 && arcRadius < easeR ) {
+ ErrorMessage( MSG_RADIUS_LSS_EASE_MIN,
+ FormatDistance( arcRadius ), FormatDistance( easeR ) );
+ return C_CONTINUE;
+ }
+ aa1 = 90.0-R2D( asin( arcRadius/r ) );
+ aa2 = NormalizeAngle( a + (ep==0?aa1:-aa1) );
+ PointOnCircle( &tangentOrig, arcPos, arcRadius, aa2 );
+ if (ComputeJoint( ep==0?-arcRadius:+arcRadius, 0, &jointD ) == E_ERROR) {
+ return C_CONTINUE;
+ }
+ tangentEnd = pos;
+ if (jointD.x != 0.0) {
+ Translate( &tangentOrig, tangentOrig, aa2, jointD.x );
+ Translate( &tangentEnd, tangentEnd, aa2, jointD.x );
+ }
+ if (ep == 0) {
+ tempSegs(0).u.c.a0 = aa2;
+ tempSegs(0).u.c.a1 = NormalizeAngle( arcA0+arcA1-aa2 );
} else {
- arcTangent = FALSE;
- angle = NormalizeAngle( a +
- ((ep==0)?-90:90));
- PointOnCircle( &pos, arcPos, arcRadius, a );
- if (ep != 0) {
- tempSegs(0).u.c.a0 = NormalizeAngle( GetTrkEndAngle(trk,0)+90.0 );
- tempSegs(0).u.c.a1 = NormalizeAngle( a-tempSegs(0).u.c.a0 );
- } else {
- tempSegs(0).u.c.a0 = a;
- tempSegs(0).u.c.a1 = NormalizeAngle( (GetTrkEndAngle(trk,1)-90.0) - a );
- }
- d = arcRadius*tempSegs(0).u.c.a1*2.0*M_PI/360.0;
- if ( d <= minLength ) {
- ErrorMessage( MSG_TRK_TOO_SHORT, _("Curved "), PutDim( fabs(minLength-d) ) );
- return C_CONTINUE;
- }
- tempSegs_da.cnt = 1;
- if (action == C_MOVE)
- InfoMessage( _("Curved: Radius=%s Length=%s Angle=%0.3f"),
- FormatDistance( arcRadius ), FormatDistance( d ),
- tempSegs(0).u.c.a1 );
+ tempSegs(0).u.c.a1 = NormalizeAngle(aa2-arcA0);
+ }
+ d = arcRadius * tempSegs(0).u.c.a1 * 2.0*M_PI/360.0;
+ d -= jointD.d0;
+ if ( d <= minLength) {
+ ErrorMessage( MSG_TRK_TOO_SHORT, _("Curved "), PutDim(fabs(minLength-d)) );
+ return C_CONTINUE;
+ }
+ d = FindDistance( tangentOrig, tangentEnd );
+ d -= jointD.d1;
+ if ( d <= minLength) {
+ ErrorMessage( MSG_TRK_TOO_SHORT, _("Tangent "), PutDim(fabs(minLength-d)) );
+ return C_CONTINUE;
}
+ DYNARR_SET( trkSeg_t, tempSegs_da, 2 );
+ tempSegs(1).type = SEG_STRTRK;
+ tempSegs(1).lineWidth = 0;
+ tempSegs(1).u.l.pos[0] = tangentOrig;
+ tempSegs(1).u.l.pos[1] = tangentEnd;
+ if (action == C_MOVE)
+ InfoMessage( _("Tangent track: Length %s Angle %0.3f"),
+ FormatDistance( d ),
+ PutAngle( FindAngle( tangentOrig, tangentEnd ) ) );
+ } else {
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
+ arcTangent = FALSE;
+ angle = NormalizeAngle( a +
+ ((ep==0)?-90:90));
+ PointOnCircle( &pos, arcPos, arcRadius, a );
+ if (ep != 0) {
+ tempSegs(0).u.c.a0 = NormalizeAngle( GetTrkEndAngle(trk,0)+90.0 );
+ tempSegs(0).u.c.a1 = NormalizeAngle( a-tempSegs(0).u.c.a0 );
+ } else {
+ tempSegs(0).u.c.a0 = a;
+ tempSegs(0).u.c.a1 = NormalizeAngle( (GetTrkEndAngle(trk,1)-90.0) - a );
+ }
+ d = arcRadius*tempSegs(0).u.c.a1*2.0*M_PI/360.0;
+ if ( d <= minLength ) {
+ ErrorMessage( MSG_TRK_TOO_SHORT, _("Curved "), PutDim( fabs(minLength-d) ) );
+ return C_CONTINUE;
+ }
+ if (action == C_MOVE)
+ InfoMessage( _("Curved: Radius=%s Length=%s Angle=%0.3f"),
+ FormatDistance( arcRadius ), FormatDistance( d ),
+ tempSegs(0).u.c.a1 );
+ }
valid = TRUE;
return C_CONTINUE;
case C_UP:
- if (xx->helixTurns>0)
+ if (xx->helixTurns>0) {
return C_CONTINUE;
+ }
if (valid) {
if (arcTangent) {
trk1 = NewStraightTrack( tangentOrig, tangentEnd );
@@ -1185,7 +1392,7 @@ static STATUS_T ModifyCurve( track_p trk, wAction_t action, coOrd pos )
/*UndrawNewTrack( trk );*/
AdjustCurveEndPt( trk, ep, angle );
JoinTracks( trk, ep, tangentOrig,
- trk1, 0, tangentOrig, &jointD );
+ trk1, 0, tangentOrig, &jointD );
DrawNewTrack( trk1 );
} else {
AdjustCurveEndPt( trk, ep, angle );
@@ -1208,29 +1415,32 @@ static DIST_T GetLengthCurve( track_p trk )
struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
GetTrkCurveCenter( trk, &cen, &rad );
- if (xx->circle)
+ if (xx->circle) {
a1 = 360.0;
- else
+ } else {
GetCurveAngles( &a0, &a1, trk );
+ }
dist = rad*a1*2.0*M_PI/360.0;
- if (xx->helixTurns>0)
+ if (xx->helixTurns>0) {
dist += (xx->helixTurns-(xx->circle?1:0)) * xx->radius * 2.0 * M_PI;
+ }
return dist;
}
-static BOOL_T GetParamsCurve( int inx, track_p trk, coOrd pos, trackParams_t * params )
+static BOOL_T GetParamsCurve( int inx, track_p trk, coOrd pos,
+ trackParams_t * params )
{
params->type = curveTypeCurve;
GetTrkCurveCenter( trk, &params->arcP, &params->arcR);
GetCurveAngles( &params->arcA0, &params->arcA1, trk );
- ANGLE_T angle1 = FindAngle(params->arcP,pos);
+// ANGLE_T angle1 = FindAngle(params->arcP,pos);
params->track_angle = NormalizeAngle(FindAngle(params->arcP,pos)+90);
if ( easeR > 0.0 && params->arcR < easeR ) {
ErrorMessage( MSG_RADIUS_LSS_EASE_MIN,
- FormatDistance( params->arcR ), FormatDistance( easeR ) );
+ FormatDistance( params->arcR ), FormatDistance( easeR ) );
return FALSE;
}
struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
@@ -1238,10 +1448,11 @@ static BOOL_T GetParamsCurve( int inx, track_p trk, coOrd pos, trackParams_t * p
ErrorMessage( MSG_CANT_EXTEND_HELIX );
return FALSE;
}
- if (inx == PARAMS_NODES) return FALSE;
+ if (inx == PARAMS_NODES) { return FALSE; }
params->len = params->arcR * params->arcA1 *2.0*M_PI/360.0;
- if (xx->helixTurns > 0)
+ if (xx->helixTurns > 0) {
params->len += (xx->helixTurns-(xx->circle?1:0)) * xx->radius * 2.0 * M_PI;
+ }
params->helixTurns = xx->helixTurns;
params->circleOrHelix = FALSE;
if ( IsCurveCircle( trk ) ) {
@@ -1249,13 +1460,15 @@ static BOOL_T GetParamsCurve( int inx, track_p trk, coOrd pos, trackParams_t * p
params->angle = params->track_angle;
params->circleOrHelix = TRUE;
return TRUE;
- } else if ((inx == PARAMS_CORNU) || (inx == PARAMS_1ST_JOIN) || (inx == PARAMS_2ND_JOIN) ) {
+ } else if ((inx == PARAMS_CORNU) || (inx == PARAMS_1ST_JOIN)
+ || (inx == PARAMS_2ND_JOIN) ) {
params->ep = PickEndPoint(pos, trk);
} else {
params->ep = PickUnconnectedEndPointSilent( pos, trk );
}
- if (params->ep == -1)
+ if (params->ep == -1) {
return FALSE;
+ }
params->angle = GetTrkEndAngle(trk,params->ep); ;
return TRUE;
}
@@ -1267,14 +1480,15 @@ static BOOL_T MoveEndPtCurve( track_p *trk, EPINX_T *ep, coOrd pos, DIST_T d0 )
DIST_T r;
ANGLE_T angle0;
ANGLE_T aa;
-
+
GetTrkCurveCenter( *trk, &posCen, &r );
angle0 = FindAngle( posCen, pos );
aa = R2D( d0/r );
- if ( *ep==0 )
+ if ( *ep==0 ) {
angle0 += aa - 90.0;
- else
+ } else {
angle0 -= aa - 90.0;
+ }
AdjustCurveEndPt( *trk, *ep, angle0 );
return TRUE;
}
@@ -1296,7 +1510,8 @@ static BOOL_T QueryCurve( track_p trk, int query )
return TRUE;
break;
case Q_EXCEPTION:
- return fabs(xx->radius) < (GetLayoutMinTrackRadius() - EPSILON);
+ return fabs(xx->radius) < (GetLayerMinTrackRadius(GetTrkLayer(
+ trk)) - EPSILON); // *new-layer*
break;
case Q_NOT_PLACE_FROGPOINTS:
return IsCurveCircle( trk );
@@ -1309,7 +1524,7 @@ static BOOL_T QueryCurve( track_p trk, int query )
return (xx->helixTurns > 0);
break;
case Q_HAS_VARIABLE_ENDPOINTS:
- if ((xx->helixTurns >0) || xx->circle) return TRUE;
+ if ((xx->helixTurns >0) || xx->circle) { return TRUE; }
return FALSE;
break;
case Q_NODRAWENDPT:
@@ -1321,9 +1536,9 @@ static BOOL_T QueryCurve( track_p trk, int query )
static void FlipCurve(
- track_p trk,
- coOrd orig,
- ANGLE_T angle )
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle )
{
struct extraDataCurve_t * xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
FlipPoint( &xx->pos, orig, angle );
@@ -1332,14 +1547,14 @@ static void FlipCurve(
static BOOL_T MakeParallelCurve(
- track_p trk,
- coOrd pos,
- DIST_T sep,
- DIST_T factor,
- track_p * newTrkR,
- coOrd * p0R,
- coOrd * p1R,
- BOOL_T track)
+ track_p trk,
+ coOrd pos,
+ DIST_T sep,
+ DIST_T factor,
+ track_p * newTrkR,
+ coOrd * p0R,
+ coOrd * p1R,
+ BOOL_T track)
{
struct extraDataCurve_t * xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
struct extraDataCurve_t * xx1;
@@ -1348,10 +1563,11 @@ static BOOL_T MakeParallelCurve(
rad = FindDistance( pos, xx->pos );
sep = sep+factor/xx->radius;
- if ( rad > xx->radius )
+ if ( rad > xx->radius ) {
rad = xx->radius + sep;
- else
+ } else {
rad = xx->radius - sep;
+ }
GetCurveAngles( &a0, &a1, trk );
if ( newTrkR ) {
if (track) {
@@ -1359,11 +1575,10 @@ static BOOL_T MakeParallelCurve(
xx1 = GET_EXTRA_DATA(*newTrkR, T_CURVE, extraDataCurve_t);
xx1->helixTurns = xx->helixTurns;
xx1->circle = xx->circle;
- }
- else {
+ } else {
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).color = wDrawColorBlack;
- tempSegs(0).width = 0;
- tempSegs_da.cnt = 1;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).type = SEG_CRVLIN;
tempSegs(0).u.c.center = xx->pos;
tempSegs(0).u.c.radius = rad;
@@ -1379,25 +1594,27 @@ static BOOL_T MakeParallelCurve(
a0 = 0;
a1 = 360.0;
}
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).color = wDrawColorBlack;
- tempSegs(0).width = 0;
- tempSegs_da.cnt = 1;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).type = track?SEG_CRVTRK:SEG_CRVLIN;
tempSegs(0).u.c.center = xx->pos;
tempSegs(0).u.c.radius = rad;
tempSegs(0).u.c.a0 = a0;
tempSegs(0).u.c.a1 = a1;
}
- if ( p0R ) PointOnCircle( p0R, xx->pos, rad, a0 );
- if ( p1R ) PointOnCircle( p1R, xx->pos, rad, a0+a1 );
+ if ( p0R ) { PointOnCircle( p0R, xx->pos, rad, a0 ); }
+ if ( p1R ) { PointOnCircle( p1R, xx->pos, rad, a0+a1 ); }
return TRUE;
}
static wBool_t CompareCurve( track_cp trk1, track_cp trk2 )
{
- struct extraDataCurve_t * ed1 = GET_EXTRA_DATA( trk1, T_CURVE, extraDataCurve_t );
- struct extraDataCurve_t * ed2 = GET_EXTRA_DATA( trk2, T_CURVE, extraDataCurve_t );
+ struct extraDataCurve_t * ed1 = GET_EXTRA_DATA( trk1, T_CURVE,
+ extraDataCurve_t );
+ struct extraDataCurve_t * ed2 = GET_EXTRA_DATA( trk2, T_CURVE,
+ extraDataCurve_t );
char * cp = message+strlen(message);
REGRESS_CHECK_POS( "POS", ed1, ed2, pos )
REGRESS_CHECK_DIST( "RADIUS", ed1, ed2, radius )
@@ -1408,47 +1625,48 @@ static wBool_t CompareCurve( track_cp trk1, track_cp trk2 )
}
static trackCmd_t curveCmds = {
- "CURVE",
- DrawCurve,
- DistanceCurve,
- DescribeCurve,
- DeleteCurve,
- WriteCurve,
- ReadCurve,
- MoveCurve,
- RotateCurve,
- RescaleCurve,
- NULL,
- GetAngleCurve,
- SplitCurve,
- TraverseCurve,
- EnumerateCurve,
- NULL, /* redraw */
- TrimCurve,
- MergeCurve,
- ModifyCurve,
- GetLengthCurve,
- GetParamsCurve,
- MoveEndPtCurve,
- QueryCurve,
- NULL, /* ungroup */
- FlipCurve,
- NULL,
- NULL,
- NULL,
- MakeParallelCurve,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- CompareCurve };
+ "CURVE",
+ DrawCurve,
+ DistanceCurve,
+ DescribeCurve,
+ DeleteCurve,
+ WriteCurve,
+ ReadCurve,
+ MoveCurve,
+ RotateCurve,
+ RescaleCurve,
+ NULL,
+ GetAngleCurve,
+ SplitCurve,
+ TraverseCurve,
+ EnumerateCurve,
+ NULL, /* redraw */
+ TrimCurve,
+ MergeCurve,
+ ModifyCurve,
+ GetLengthCurve,
+ GetParamsCurve,
+ MoveEndPtCurve,
+ QueryCurve,
+ NULL, /* ungroup */
+ FlipCurve,
+ NULL,
+ NULL,
+ NULL,
+ MakeParallelCurve,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ CompareCurve
+};
EXPORT void CurveSegProc(
- segProc_e cmd,
- trkSeg_p segPtr,
- segProcData_p data )
+ segProc_e cmd,
+ trkSeg_p segPtr,
+ segProcData_p data )
{
ANGLE_T a0, a1, a2;
DIST_T d, circum, d0;
@@ -1468,10 +1686,12 @@ EXPORT void CurveSegProc(
//A segment may be fractionally too short - limit to angles within segment!
int res = AngleInRange(a2,segPtr->u.c.a0,segPtr->u.c.a1);
if (res == 1 ) {
-LOG( log_curveSegs, 1, ("CrvSegsAngle miss A%0.3f S%0.3f E%0.3f R%d B%d \n",a2,segPtr->u.c.a0,segPtr->u.c.a1,res,data->traverse1.backwards))
+ LOG( log_curveSegs, 1, ("CrvSegsAngle miss A%0.3f S%0.3f E%0.3f R%d B%d \n",a2,
+ segPtr->u.c.a0,segPtr->u.c.a1,res,data->traverse1.backwards))
a2 = segPtr->u.c.a0;
} else if (res == -1) {
-LOG( log_curveSegs, 1, ("CrvSegsAngle miss A%0.3f S%0.3f E%0.3f R%d B%d \n",a2,segPtr->u.c.a0,segPtr->u.c.a1,res,data->traverse1.backwards))
+ LOG( log_curveSegs, 1, ("CrvSegsAngle miss A%0.3f S%0.3f E%0.3f R%d B%d \n",a2,
+ segPtr->u.c.a0,segPtr->u.c.a1,res,data->traverse1.backwards))
a2 = segPtr->u.c.a1+segPtr->u.c.a0;
}
//Fix issue of angles passing through zero -
@@ -1482,19 +1702,22 @@ LOG( log_curveSegs, 1, ("CrvSegsAngle miss A%0.3f S%0.3f E%0.3f R%d B%d \n",a2,s
}
//Make sure backwards means going towards EP0
- if (segPtr->u.c.radius<0) data->traverse1.backwards = !data->traverse1.backwards;
- data->traverse1.dist = a2/360.0*2*M_PI*fabs(segPtr->u.c.radius); //Distance from end in direction of travel
+ if (segPtr->u.c.radius<0) { data->traverse1.backwards = !data->traverse1.backwards; }
+ data->traverse1.dist = a2/360.0*2*M_PI*fabs(
+ segPtr->u.c.radius); //Distance from end in direction of travel
data->traverse1.reverse_seg = ((segPtr->u.c.a0>=90) && (segPtr->u.c.a0<270));
data->traverse1.negative = (segPtr->u.c.radius < 0);
data->traverse1.segs_backwards = FALSE;
data->traverse1.BezSegInx = 0;
-LOG( log_curveSegs, 2, (" CrvSegs D=%0.3f A%0.3f B%d \n",data->traverse1.dist,data->traverse1.backwards))
+ LOG( log_curveSegs, 2, (" CrvSegs D=%0.3f A%0.3f B%d \n",data->traverse1.dist,
+ data->traverse1.backwards))
break;
case SEGPROC_TRAVERSE2:
circum = 2*M_PI*segPtr->u.c.radius;
- if ( circum < 0 )
- circum = - circum;
+ if ( circum < 0 ) {
+ circum = - circum;
+ }
d = (segPtr->u.c.a1*circum)/360;
if ( d > data->traverse2.dist ) {
a2 = (data->traverse2.dist*360.0)/circum;
@@ -1503,7 +1726,7 @@ LOG( log_curveSegs, 2, (" CrvSegs D=%0.3f A%0.3f B%d \n",data->traverse1.dist,d
a2 = segPtr->u.c.a1;
data->traverse2.dist -= d;
}
- if (segPtr->u.c.radius<0) data->traverse2.segDir = !data->traverse2.segDir;
+ if (segPtr->u.c.radius<0) { data->traverse2.segDir = !data->traverse2.segDir; }
if ( !data->traverse2.segDir ) {
a2 = NormalizeAngle( segPtr->u.c.a0+a2 );
a1 = NormalizeAngle(a2+90);
@@ -1511,30 +1734,38 @@ LOG( log_curveSegs, 2, (" CrvSegs D=%0.3f A%0.3f B%d \n",data->traverse1.dist,d
a2 = NormalizeAngle( segPtr->u.c.a0+segPtr->u.c.a1-a2 );
a1 = NormalizeAngle(a2-90);
}
- PointOnCircle( &data->traverse2.pos, segPtr->u.c.center, fabs(segPtr->u.c.radius), a2 );
+ PointOnCircle( &data->traverse2.pos, segPtr->u.c.center,
+ fabs(segPtr->u.c.radius), a2 );
data->traverse2.angle = a1;
break;
case SEGPROC_DRAWROADBEDSIDE:
- REORIGIN( p0, segPtr->u.c.center, data->drawRoadbedSide.angle, data->drawRoadbedSide.orig );
+ REORIGIN( p0, segPtr->u.c.center, data->drawRoadbedSide.angle,
+ data->drawRoadbedSide.orig );
d0 = segPtr->u.c.radius;
if ( d0 > 0 ) {
- a0 = NormalizeAngle( segPtr->u.c.a0 + segPtr->u.c.a1*data->drawRoadbedSide.first/32.0 + data->drawRoadbedSide.angle );
+ a0 = NormalizeAngle( segPtr->u.c.a0 +
+ segPtr->u.c.a1*data->drawRoadbedSide.first/32.0 + data->drawRoadbedSide.angle );
} else {
d0 = -d0;
- a0 = NormalizeAngle( segPtr->u.c.a0 + segPtr->u.c.a1*(32-data->drawRoadbedSide.last)/32.0 + data->drawRoadbedSide.angle );
+ a0 = NormalizeAngle( segPtr->u.c.a0 + segPtr->u.c.a1*(32
+ -data->drawRoadbedSide.last)/32.0 + data->drawRoadbedSide.angle );
}
- a1 = segPtr->u.c.a1*(data->drawRoadbedSide.last-data->drawRoadbedSide.first)/32.0;
- if (data->drawRoadbedSide.side>0)
+ a1 = segPtr->u.c.a1*(data->drawRoadbedSide.last
+ -data->drawRoadbedSide.first)/32.0;
+ if (data->drawRoadbedSide.side>0) {
d0 += data->drawRoadbedSide.roadbedWidth/2.0;
- else
+ } else {
d0 -= data->drawRoadbedSide.roadbedWidth/2.0;
- DrawArc( data->drawRoadbedSide.d, p0, d0, a0, a1, FALSE, data->drawRoadbedSide.rbw, data->drawRoadbedSide.color );
+ }
+ DrawArc( data->drawRoadbedSide.d, p0, d0, a0, a1, FALSE,
+ data->drawRoadbedSide.rbw, data->drawRoadbedSide.color );
break;
case SEGPROC_DISTANCE:
- data->distance.dd = CircleDistance( &data->distance.pos1, segPtr->u.c.center, fabs(segPtr->u.c.radius), segPtr->u.c.a0, segPtr->u.c.a1 );
+ data->distance.dd = CircleDistance( &data->distance.pos1, segPtr->u.c.center,
+ fabs(segPtr->u.c.radius), segPtr->u.c.a0, segPtr->u.c.a1 );
break;
case SEGPROC_FLIP:
@@ -1542,13 +1773,15 @@ LOG( log_curveSegs, 2, (" CrvSegs D=%0.3f A%0.3f B%d \n",data->traverse1.dist,d
break;
case SEGPROC_NEWTRACK:
- data->newTrack.trk = NewCurvedTrack( segPtr->u.c.center, fabs(segPtr->u.c.radius), segPtr->u.c.a0, segPtr->u.c.a1, 0 );
+ data->newTrack.trk = NewCurvedTrack( segPtr->u.c.center,
+ fabs(segPtr->u.c.radius), segPtr->u.c.a0, segPtr->u.c.a1, 0 );
data->newTrack.ep[0] = (segPtr->u.c.radius>0?0:1);
data->newTrack.ep[1] = 1-data->newTrack.ep[0];
break;
case SEGPROC_LENGTH:
- data->length.length = fabs(segPtr->u.c.radius) * segPtr->u.c.a1 * (2.0*M_PI/360.0);
+ data->length.length = fabs(segPtr->u.c.radius) * segPtr->u.c.a1 *
+ (2.0*M_PI/360.0);
break;
case SEGPROC_SPLIT:
@@ -1556,32 +1789,36 @@ LOG( log_curveSegs, 2, (" CrvSegs D=%0.3f A%0.3f B%d \n",data->traverse1.dist,d
a2 = FindAngle( segPtr->u.c.center, data->split.pos );
a2 = NormalizeAngle( a2 - segPtr->u.c.a0 );
if ( a2 > segPtr->u.c.a1 ) {
- if ( a2-segPtr->u.c.a1 < (360-segPtr->u.c.a1)/2.0 )
+ if ( a2-segPtr->u.c.a1 < (360-segPtr->u.c.a1)/2.0 ) {
a2 = segPtr->u.c.a1;
- else
+ } else {
a2 = 0.0;
+ }
}
s0 = 0;
- if ( segPtr->u.c.radius<0 )
+ if ( segPtr->u.c.radius<0 ) {
s0 = 1-s0;
+ }
s1 = 1-s0;
data->split.length[s0] = a2/360.0 * 2*M_PI * fabs(segPtr->u.c.radius);
data->split.length[s1] = d-data->split.length[s0];
data->split.newSeg[0] = *segPtr;
data->split.newSeg[1] = *segPtr;
data->split.newSeg[s0].u.c.a1 = a2;
- data->split.newSeg[s1].u.c.a0 = NormalizeAngle( data->split.newSeg[s1].u.c.a0 + a2 );
+ data->split.newSeg[s1].u.c.a0 = NormalizeAngle( data->split.newSeg[s1].u.c.a0 +
+ a2 );
data->split.newSeg[s1].u.c.a1 -= a2;
break;
case SEGPROC_GETANGLE:
- data->getAngle.angle = NormalizeAngle( FindAngle( segPtr->u.c.center, data->getAngle.pos ) + 90 );
+ data->getAngle.angle = NormalizeAngle( FindAngle( segPtr->u.c.center,
+ data->getAngle.pos ) + 90 );
data->getAngle.negative_radius = segPtr->u.c.radius<0;
data->getAngle.radius = fabs(segPtr->u.c.radius);
data->getAngle.center = segPtr->u.c.center;
data->getAngle.backwards = segPtr->u.c.a0>=90 && segPtr->u.c.a0<270;
- if (data->getAngle.backwards) data->getAngle.angle = NormalizeAngle(data->getAngle.angle+180);
+ if (data->getAngle.backwards) { data->getAngle.angle = NormalizeAngle(data->getAngle.angle+180); }
break;
}
}
@@ -1596,13 +1833,13 @@ LOG( log_curveSegs, 2, (" CrvSegs D=%0.3f A%0.3f B%d \n",data->traverse1.dist,d
EXPORT void PlotCurve(
- long mode,
- coOrd pos0,
- coOrd pos1,
- coOrd pos2,
- curveData_t * curveData,
- BOOL_T constrain, //Make the Radius be in steps of radiusGranularity (1/8)
- DIST_T desired_r) //Target one radius if close
+ long mode,
+ coOrd pos0,
+ coOrd pos1,
+ coOrd pos2,
+ curveData_t * curveData,
+ BOOL_T constrain, //Make the Radius be in steps of radiusGranularity (1/8)
+ DIST_T desired_r) //Target one radius if close
{
DIST_T d0, d2, r;
ANGLE_T angle, a0, a1, a2;
@@ -1610,19 +1847,21 @@ EXPORT void PlotCurve(
switch ( mode ) {
case crvCmdFromCornu:
- /* Already set curveRadius, pos1, and type */
+ /* Already set curveRadius, pos1, and type */
case crvCmdFromEP1:
angle = FindAngle( pos0, pos1 );
d0 = FindDistance( pos0, pos2 )/2.0;
a0 = FindAngle( pos0, pos2 );
a1 = NormalizeAngle( a0 - angle );
-LOG( log_curve, 3, ( "P1 = [%0.3f %0.3f] D=%0.3f A0=%0.3f A1=%0.3f\n", pos2.x, pos2.y, d0, a0, a1 ) )
+ LOG( log_curve, 3, ( "P1 = [%0.3f %0.3f] D=%0.3f A0=%0.3f A1=%0.3f\n", pos2.x,
+ pos2.y, d0, a0, a1 ) )
if ((fabs(d0*sin(D2R(a1))) < (4.0/75.0)*mainD.scale)) {
-LOG( log_curve, 3, ( "Straight: %0.3f < %0.3f\n", d0*sin(D2R(a1)), (4.0/75.0)*mainD.scale ) )
+ LOG( log_curve, 3, ( "Straight: %0.3f < %0.3f\n", d0*sin(D2R(a1)),
+ (4.0/75.0)*mainD.scale ) )
curveData->pos1.x = pos0.x + d0*2.0*sin(D2R(angle));
curveData->pos1.y = pos0.y + d0*2.0*cos(D2R(angle));
curveData->type = curveTypeStraight;
- } else if (a1 >= 179.0 && a1 <= 181.0) {
+ } else if (a1 >= 179.0 && a1 <= 181.0) {
curveData->type = curveTypeNone;
} else {
BOOL_T found = FALSE;
@@ -1635,10 +1874,11 @@ LOG( log_curve, 3, ( "Straight: %0.3f < %0.3f\n", d0*sin(D2R(a1)), (4.0/75.0)*ma
}
}
if (!found) {
- if (constrain)
+ if (constrain) {
curveData->curveRadius = ConstrainR( d0/sin(D2R(a1)) );
- else
+ } else {
curveData->curveRadius = d0/sin(D2R(a1));
+ }
}
} else {
a1 -= 360.0;
@@ -1649,11 +1889,12 @@ LOG( log_curve, 3, ( "Straight: %0.3f < %0.3f\n", d0*sin(D2R(a1)), (4.0/75.0)*ma
found = TRUE;
}
}
- if (!found){
- if (constrain)
+ if (!found) {
+ if (constrain) {
curveData->curveRadius = ConstrainR( d0/sin(D2R(-a1)) );
- else
+ } else {
curveData->curveRadius = d0/sin(D2R(-a1));
+ }
}
}
if (curveData->curveRadius > 1000) {
@@ -1665,7 +1906,7 @@ LOG( log_curve, 3, ( "Straight: %0.3f < %0.3f\n", d0*sin(D2R(a1)), (4.0/75.0)*ma
curveData->curvePos.x = pos0.x + curveData->curveRadius*sin(D2R(a2));
curveData->curvePos.y = pos0.y + curveData->curveRadius*cos(D2R(a2));
LOG( log_curve, 3, ( "Center = [%0.3f %0.3f] A1=%0.3f A2=%0.3f R=%0.3f\n",
- curveData->curvePos.x, curveData->curvePos.y, a1, a2, curveData->curveRadius ) )
+ curveData->curvePos.x, curveData->curvePos.y, a1, a2, curveData->curveRadius ) )
if (a1 > 0.0) {
curveData->a0 = NormalizeAngle( a2-180 );
curveData->a1 = a1 * 2.0;
@@ -1675,7 +1916,8 @@ LOG( log_curve, 3, ( "Straight: %0.3f < %0.3f\n", d0*sin(D2R(a1)), (4.0/75.0)*ma
curveData->a0 = NormalizeAngle( a2-180-curveData->a1 );
curveData->negative = TRUE;
}
- Translate(&curveData->pos2,curveData->curvePos,FindAngle(curveData->curvePos,pos2),curveData->curveRadius);
+ Translate(&curveData->pos2,curveData->curvePos,FindAngle(curveData->curvePos,
+ pos2),curveData->curveRadius);
curveData->type = curveTypeCurve;
}
}
@@ -1699,7 +1941,8 @@ LOG( log_curve, 3, ( "Straight: %0.3f < %0.3f\n", d0*sin(D2R(a1)), (4.0/75.0)*ma
curveData->a0 = a1;
curveData->a1 = NormalizeAngle(a0-a1);
}
- Translate(&curveData->pos2,curveData->curvePos,FindAngle(curveData->curvePos,pos2),curveData->curveRadius);
+ Translate(&curveData->pos2,curveData->curvePos,FindAngle(curveData->curvePos,
+ pos2),curveData->curveRadius);
curveData->type = curveTypeCurve;
break;
case crvCmdFromChord:
@@ -1709,16 +1952,20 @@ LOG( log_curve, 3, ( "Straight: %0.3f < %0.3f\n", d0*sin(D2R(a1)), (4.0/75.0)*ma
d0 = FindDistance( pos0, pos1 )/2.0;
Rotate( &pos2, pos1, -a0 );
pos2.x -= pos1.x;
- if ( fabs(pos2.x) < 0.005 )
+ if ( fabs(pos2.x) < 0.005 ) {
break;
- d2 = sqrt( d0*d0 + pos2.x*pos2.x )/2.0;
+ }
+ d2 = sqrt( d0*d0 + pos2.x*pos2.x )/2.0;
r = d2*d2*2.0/pos2.x;
- if ( r > 1000.0 )
+ if ( r > 1000.0 ) {
break;
+ }
posx.x = (pos1.x+pos0.x)/2.0;
posx.y = (pos1.y+pos0.y)/2.0;
a0 -= 90.0;
- LOG( log_curve, 3, ( "CHORD: [%0.3f %0.3f] [%0.3f %0.3f] [%0.3f %0.3f] A0=%0.3f D0=%0.3f D2=%0.3f R=%0.3f\n", pos0.x, pos0.y, pos1.x, pos1.y, pos2.x, pos2.y, a0, d0, d2, r ) )
+ LOG( log_curve, 3,
+ ( "CHORD: [%0.3f %0.3f] [%0.3f %0.3f] [%0.3f %0.3f] A0=%0.3f D0=%0.3f D2=%0.3f R=%0.3f\n",
+ pos0.x, pos0.y, pos1.x, pos1.y, pos2.x, pos2.y, a0, d0, d2, r ) )
Translate( &curveData->curvePos, posx, a0, r-pos2.x );
curveData->curveRadius = fabs(r);
a0 = FindAngle( curveData->curvePos, pos0 );
@@ -1732,13 +1979,15 @@ LOG( log_curve, 3, ( "Straight: %0.3f < %0.3f\n", d0*sin(D2R(a1)), (4.0/75.0)*ma
curveData->a1 = NormalizeAngle(a0-a1);
curveData->negative = TRUE;
}
- Translate(&curveData->pos2,curveData->curvePos,FindAngle(curveData->curvePos,pos2),curveData->curveRadius);
+ Translate(&curveData->pos2,curveData->curvePos,FindAngle(curveData->curvePos,
+ pos2),curveData->curveRadius);
curveData->type = curveTypeCurve;
break;
}
}
-EXPORT track_p NewCurvedTrack( coOrd pos, DIST_T r, ANGLE_T a0, ANGLE_T a1, long helixTurns )
+EXPORT track_p NewCurvedTrack( coOrd pos, DIST_T r, ANGLE_T a0, ANGLE_T a1,
+ long helixTurns )
{
struct extraDataCurve_t *xx;
track_p p;
@@ -1747,10 +1996,12 @@ EXPORT track_p NewCurvedTrack( coOrd pos, DIST_T r, ANGLE_T a0, ANGLE_T a1, long
xx->pos = pos;
xx->radius = r;
xx->helixTurns = helixTurns;
- if ( helixTurns <= 0 )
+ if ( helixTurns <= 0 ) {
SetTrkBits( p, TB_HIDEDESC );
+ }
SetCurveAngles( p, a0, a1, xx );
-LOG( log_curve, 1, ( "NewCurvedTrack( %0.3f, %0.3f, %0.3f ) = %d\n", pos.x, pos.y, r, GetTrkIndex(p) ) )
+ LOG( log_curve, 1, ( "NewCurvedTrack( %0.3f, %0.3f, %0.3f ) = %d\n", pos.x,
+ pos.y, r, GetTrkIndex(p) ) )
ComputeCurveBoundingBox( p, xx );
CheckTrackLength( p );
return p;
diff --git a/app/bin/tease.c b/app/bin/tease.c
index adfff18..806ab22 100644
--- a/app/bin/tease.c
+++ b/app/bin/tease.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
*/
/*
@@ -29,7 +29,7 @@ L is the length along the tangent of the curve and
R is the radius of an arc at the end of the curve.
At any point (l) along the tangent the arc at that point has radius
r=(R*L)/l.
-The transition curve offset (x) is the closest distance between the arc
+The transition curve offset (x) is the closest distance between the arc
and the tangent.
The center of any arc is at (l/2, r+x).
See 'ComputeJointPos()' for details on this.
@@ -78,16 +78,16 @@ static TRKTYP_T T_EASEMENT = -1;
static ANGLE_T JOINT_ANGLE_INCR = 2.0;
typedef struct extraDataEase_t {
- extraDataBase_t base;
- DIST_T l0, l1; /* curve start and end parameter */
- DIST_T R, L; /* curve control parameters */
- BOOL_T flip; /* T: endPt[1] - is l0 */
- BOOL_T negate; /* T: curves to the left */
- BOOL_T Scurve; /* T: is an S-curve */
- coOrd pos; /* Pos of origin */
- ANGLE_T angle; /* Angle of curve tangent */
- coOrd descriptionOff; /* Offset of description */
- } extraDataEase_t;
+ extraDataBase_t base;
+ DIST_T l0, l1; /* curve start and end parameter */
+ DIST_T R, L; /* curve control parameters */
+ BOOL_T flip; /* T: endPt[1] - is l0 */
+ BOOL_T negate; /* T: curves to the left */
+ BOOL_T Scurve; /* T: is an S-curve */
+ coOrd pos; /* Pos of origin */
+ ANGLE_T angle; /* Angle of curve tangent */
+ coOrd descriptionOff; /* Offset of description */
+} extraDataEase_t;
#define EASE_MIN_X (0.01)
@@ -97,9 +97,9 @@ static int log_traverseJoint;
static DIST_T FindL(
- DIST_T r,
- DIST_T R,
- DIST_T L )
+ DIST_T r,
+ DIST_T R,
+ DIST_T L )
/*
* Given a radius (r) return control value (l).
* This function is it's inverse!
@@ -110,15 +110,15 @@ static DIST_T FindL(
static void GetLandD(
- DIST_T *RL,
- DIST_T *RD,
- coOrd q,
- coOrd p,
- ANGLE_T a,
- DIST_T R,
- DIST_T L,
- BOOL_T negate,
- BOOL_T Scurve )
+ DIST_T *RL,
+ DIST_T *RD,
+ coOrd q,
+ coOrd p,
+ ANGLE_T a,
+ DIST_T R,
+ DIST_T L,
+ BOOL_T negate,
+ BOOL_T Scurve )
{
DIST_T l, d, x;
@@ -132,22 +132,24 @@ static void GetLandD(
} else {
d = q.x + x;
}
- if (RL)
+ if (RL) {
*RL = l;
- if (RD)
+ }
+ if (RD) {
*RD = d;
+ }
}
int OLDEASE = 0;
static void ComputeJoinPos(
- DIST_T l,
- DIST_T R,
- DIST_T L,
- DIST_T *RR,
- ANGLE_T *RA,
- coOrd *P,
- coOrd *PC )
+ DIST_T l,
+ DIST_T R,
+ DIST_T L,
+ DIST_T *RR,
+ ANGLE_T *RA,
+ coOrd *P,
+ coOrd *PC )
/*
* Compute position along transition-curve.
* Also compute angle and position of tangent circle's center.
@@ -156,35 +158,40 @@ static void ComputeJoinPos(
ANGLE_T a;
DIST_T r;
coOrd pp, pc;
- if (l==0.0)
+ if (l==0.0) {
r = DIST_INF;
- else
+ } else {
r = (R*L)/l;
+ }
pp.y = l;
pc.y = l/2.0;
a = asin( l/2.0 / r );
-if (OLDEASE){
- pc.x = l*l / (24*r) + r;
- pp.x = pc.x - r*cos(a);
-}else{
- pp.x = (l*l*l)/(6*R*L);
- pc.x = pp.x + r*cos(a);
-}
-/*lprintf( "A %0.3f %0.3f %0.3f [%0.3f %0.3f]\n", a, aa, aaa, q.x, q.y );*/
- if (P)
+ if (OLDEASE) {
+ pc.x = l*l / (24*r) + r;
+ pp.x = pc.x - r*cos(a);
+ } else {
+ pp.x = (l*l*l)/(6*R*L);
+ pc.x = pp.x + r*cos(a);
+ }
+ /*lprintf( "A %0.3f %0.3f %0.3f [%0.3f %0.3f]\n", a, aa, aaa, q.x, q.y );*/
+ if (P) {
*P = pp;
- if (PC)
+ }
+ if (PC) {
*PC = pc;
- if (RR)
+ }
+ if (RR) {
*RR = r;
- if (RA)
+ }
+ if (RA) {
*RA = R2D(a);
+ }
}
static DIST_T JoinD(
- DIST_T l,
- DIST_T R,
- DIST_T L )
+ DIST_T l,
+ DIST_T R,
+ DIST_T L )
/*
* Compute distance from transition-curve origin to specified point.
* Distance is approximately equal to length of arc from origin
@@ -209,9 +216,9 @@ static DIST_T JoinD(
static DIST_T GetLfromD(
- DIST_T D,
- DIST_T R,
- DIST_T L )
+ DIST_T D,
+ DIST_T R,
+ DIST_T L )
{
DIST_T deltaD, d, l, deltaL;
l = L/2.0;
@@ -223,28 +230,30 @@ static DIST_T GetLfromD(
} else {
deltaD = d-D;
}
- if ( deltaD < 0.000001 )
+ if ( deltaD < 0.000001 ) {
return l;
- if ( d < D )
+ }
+ if ( d < D ) {
l += deltaL;
- else
+ } else {
l -= deltaL;
+ }
deltaL /= 2.0;
}
-/*printf( "GetLfromD( %0.3f %0.3f %0.3f ) = %0.3f\n", D, R, L, l );*/
+ /*printf( "GetLfromD( %0.3f %0.3f %0.3f ) = %0.3f\n", D, R, L, l );*/
return l;
}
#ifdef LATER
static void JoinDistance(
- DIST_T r,
- DIST_T R,
- DIST_T X,
- DIST_T L,
- DIST_T *dr,
- DIST_T *xr,
- DIST_T *lr )
+ DIST_T r,
+ DIST_T R,
+ DIST_T X,
+ DIST_T L,
+ DIST_T *dr,
+ DIST_T *xr,
+ DIST_T *lr )
{
DIST_T l, d, rr;
coOrd p, pc;
@@ -256,7 +265,7 @@ static void JoinDistance(
l = FindL( r, R, L );
d = JoinD( l, R, L );
ComputeJoinPos( l, R, L, NULL, NULL, &p, NULL );
-LOG( log_ease, 2, ( "joinDistance r=%0.3f rr=%0.3f\n", r, rr ) )
+ LOG( log_ease, 2, ( "joinDistance r=%0.3f rr=%0.3f\n", r, rr ) )
*xr = pc.x - rr;
*dr = d;
*lr = pc.y;
@@ -264,10 +273,10 @@ LOG( log_ease, 2, ( "joinDistance r=%0.3f rr=%0.3f\n", r, rr ) )
#endif
EXPORT STATUS_T ComputeJoint(
- DIST_T r0,
- DIST_T r1,
- easementData_t * e )
-/*
+ DIST_T r0,
+ DIST_T r1,
+ easementData_t * e )
+/*
* Compute joint data given radius of the 2 curves being joined.
* Radius is =0 for straight tracks and <0 for left-handed curves.
* S-curves are handled by treating them as 2 transition-curves joined
@@ -278,7 +287,7 @@ EXPORT STATUS_T ComputeJoint(
ANGLE_T a, a0, a1;
coOrd rp0, rpc0, rp1, rpc1;
-LOG( log_ease, 4, ( "ComputeJoint( %0.3f, %0.3f )\n", r0, r1 ) )
+ LOG( log_ease, 4, ( "ComputeJoint( %0.3f, %0.3f )\n", r0, r1 ) )
if (easementVal <= 0.1) {
e->d0 = e->d1 = e->x = 0.0;
@@ -286,17 +295,18 @@ LOG( log_ease, 4, ( "ComputeJoint( %0.3f, %0.3f )\n", r0, r1 ) )
}
if (r0 != 0.0 && fabs(r0) < easeR) {
ErrorMessage( MSG_RADIUS_LSS_EASE_MIN,
- FormatDistance(fabs(r0)), FormatDistance(easeR) );
+ FormatDistance(fabs(r0)), FormatDistance(easeR) );
e->d0 = e->d1 = e->x = 0.0;
return E_ERROR;
}
if (r1 != 0.0 && fabs(r1) < easeR) {
- ErrorMessage( MSG_RADIUS_LSS_EASE_MIN, FormatDistance(fabs(r1)), FormatDistance(easeR) );
+ ErrorMessage( MSG_RADIUS_LSS_EASE_MIN, FormatDistance(fabs(r1)),
+ FormatDistance(easeR) );
e->d0 = e->d1 = e->x = 0.0;
return E_ERROR;
}
if (r0 == 0.0 && r1 == 0.0) {
- /* ASSERT( FALSE ); CHECKME */
+ /* CHECK( FALSE ); CHECKME */
e->d0 = e->d1 = e->x = 0.0;
return E_NOTREQ;
}
@@ -356,8 +366,9 @@ LOG( log_ease, 4, ( "ComputeJoint( %0.3f, %0.3f )\n", r0, r1 ) )
d1 = rr1 * D2R(a1);
}
}
-LOG( log_ease, 2, ( "CJoint(%0.3f %0.3f) l0=%0.3f d0=%0.3f l1=%0.3f d1=%0.3f x=%0.3f S%d F%d N%d\n",
- e->r0, e->r1, l0, d0, l1, d1, xx, e->Scurve, e->flip, e->negate ) )
+ LOG( log_ease, 2,
+ ( "CJoint(%0.3f %0.3f) l0=%0.3f d0=%0.3f l1=%0.3f d1=%0.3f x=%0.3f S%d F%d N%d\n",
+ e->r0, e->r1, l0, d0, l1, d1, xx, e->Scurve, e->flip, e->negate ) )
if (xx < EASE_MIN_X || d0+d1<=minLength) {
e->d0 = e->d1 = e->x = 0.0;
return E_NOTREQ;
@@ -379,14 +390,14 @@ LOG( log_ease, 2, ( "CJoint(%0.3f %0.3f) l0=%0.3f d0=%0.3f l1=%0.3f d1=%0.3f x=%
}
static track_p NewJoint(
- coOrd pos0,
- ANGLE_T angle0,
- coOrd pos1,
- ANGLE_T angle1,
- DIST_T trackGauge,
- DIST_T R,
- DIST_T L,
- easementData_t * e )
+ coOrd pos0,
+ ANGLE_T angle0,
+ coOrd pos1,
+ ANGLE_T angle1,
+ DIST_T trackGauge,
+ DIST_T R,
+ DIST_T L,
+ easementData_t * e )
/*
* Allocate a joint track segment.
* Allocate a track, save relevant data from (*e),
@@ -398,7 +409,8 @@ static track_p NewJoint(
struct extraDataEase_t *xx;
coOrd p, p0, p1, q0, q1;
static coOrd qZero = { 0.0, 0.0 };
- ANGLE_T az0, a01, b, b01, b1, d, d1;
+ ANGLE_T az0, a01, b, b01, d, d1;
+// ANGLE_T b1;
trk = NewTrack( 0, T_EASEMENT, 2, sizeof *xx );
SetTrkBits(trk, TB_HIDEDESC); //Suppress Description for new Joint
SetTrkScale( trk, GetLayoutCurScale() );
@@ -431,7 +443,7 @@ static track_p NewJoint(
if (!e->Scurve) {
az0 = FindAngle( qZero, q0 );
a01 = FindAngle( q0, q1 );
- b1 = NormalizeAngle( b01 - (a01+az0) );
+// b1 = NormalizeAngle( b01 - (a01+az0) );
b = NormalizeAngle( b01 - a01 );
} else {
q1.x = -q1.x;
@@ -449,9 +461,10 @@ static track_p NewJoint(
ComputeBoundingBox( trk );
d = FindDistance( p0, p1 );
d1 = FindDistance( q0, q1 );
-LOG( log_ease, 1, ( "NewJoint( [%0.3f %0.3f] A%0.3f, [%0.3f %0.3f] A%0.3f\n B01=%0.3f AZ0=%0.3f A01=%0.3f B=%0.3f D0=%0.3f D1=%0.3f\n",
- pos0.x, pos0.y, angle0, pos1.x, pos1.y, angle1,
- b01, az0, a01, b, d, d1 ) )
+ LOG( log_ease, 1,
+ ( "NewJoint( [%0.3f %0.3f] A%0.3f, [%0.3f %0.3f] A%0.3f\n B01=%0.3f AZ0=%0.3f A01=%0.3f B=%0.3f D0=%0.3f D1=%0.3f\n",
+ pos0.x, pos0.y, angle0, pos1.x, pos1.y, angle1,
+ b01, az0, a01, b, d, d1 ) )
CheckTrackLength( trk );
return trk;
}
@@ -469,10 +482,11 @@ static DIST_T GetLengthJoint( track_p trk )
xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
d0 = JoinD( xx->l0, xx->R, xx->L );
d1 = JoinD( xx->l1, xx->R, xx->L );
- if (xx->Scurve)
+ if (xx->Scurve) {
return d0+d1;
- else
+ } else {
return fabs( d0-d1 );
+ }
}
static DIST_T GetFlexLengthJoint( track_p trk )
@@ -485,55 +499,61 @@ static DIST_T GetFlexLengthJoint( track_p trk )
d3 = JoinD( xx->l1, xx->R-(GetTrkGauge(trk)/2.0), xx->L );
if (xx->Scurve) {
return d0+d3;
- } else
+ } else {
return fabs( d0-d1 );
+ }
}
static struct {
- coOrd endPt[2];
- DIST_T elev[2];
- FLOAT_T length;
- coOrd orig;
- ANGLE_T angle;
- DIST_T r;
- DIST_T l;
- DIST_T l0;
- DIST_T l1;
- FLOAT_T grade;
- descPivot_t pivot;
- unsigned int layerNumber;
- } jointData;
+ coOrd endPt[2];
+ DIST_T elev[2];
+ FLOAT_T length;
+ coOrd orig;
+ ANGLE_T angle;
+ DIST_T r;
+ DIST_T l;
+ DIST_T l0;
+ DIST_T l1;
+ FLOAT_T grade;
+ descPivot_t pivot;
+ unsigned int layerNumber;
+} jointData;
typedef enum { E0, Z0, E1, Z1, OR, AL, RR, LL, L0, L1, GR, PV, LY } jointDesc_e;
static descData_t jointDesc[] = {
-/*E0*/ { DESC_POS, N_("End Pt 1: X,Y"), &jointData.endPt[0] },
-/*Z0*/ { DESC_DIM, N_("Z"), &jointData.elev[0] },
-/*E1*/ { DESC_POS, N_("End Pt 2: X,Y"), &jointData.endPt[1] },
-/*Z1*/ { DESC_DIM, N_("Z"), &jointData.elev[1] },
-/*OR*/ { DESC_POS, N_("Origin: X,Y"), &jointData.orig },
-/*AL*/ { DESC_ANGLE, N_("Angle"), &jointData.angle },
-/*RR*/ { DESC_DIM, N_("R"), &jointData.r },
-/*LL*/ { DESC_DIM, N_("L"), &jointData.l },
-/*L0*/ { DESC_DIM, N_("l0"), &jointData.l0 },
-/*L1*/ { DESC_DIM, N_("l1"), &jointData.l1 },
-/*GR*/ { DESC_FLOAT, N_("Grade"), &jointData.grade },
-/*PV*/ { DESC_PIVOT, N_("Lock"), &jointData.pivot },
-/*LY*/ { DESC_LAYER, N_("Layer"), &jointData.layerNumber },
- { DESC_NULL } };
-
-static void UpdateJoint( track_p trk, int inx, descData_p descUpd, BOOL_T final )
+ /*E0*/ { DESC_POS, N_("End Pt 1: X,Y"), &jointData.endPt[0] },
+ /*Z0*/ { DESC_DIM, N_("Z"), &jointData.elev[0] },
+ /*E1*/ { DESC_POS, N_("End Pt 2: X,Y"), &jointData.endPt[1] },
+ /*Z1*/ { DESC_DIM, N_("Z"), &jointData.elev[1] },
+ /*OR*/ { DESC_POS, N_("Origin: X,Y"), &jointData.orig },
+ /*AL*/ { DESC_ANGLE, N_("Angle"), &jointData.angle },
+ /*RR*/ { DESC_DIM, N_("R"), &jointData.r },
+ /*LL*/ { DESC_DIM, N_("L"), &jointData.l },
+ /*L0*/ { DESC_DIM, N_("l0"), &jointData.l0 },
+ /*L1*/ { DESC_DIM, N_("l1"), &jointData.l1 },
+ /*GR*/ { DESC_FLOAT, N_("Grade"), &jointData.grade },
+ /*PV*/ { DESC_PIVOT, N_("Lock"), &jointData.pivot },
+ /*LY*/ { DESC_LAYER, N_("Layer"), &jointData.layerNumber },
+ { DESC_NULL }
+};
+
+static void UpdateJoint( track_p trk, int inx, descData_p descUpd,
+ BOOL_T final )
{
EPINX_T ep;
switch (inx) {
case Z0:
case Z1:
ep = (inx==Z0?0:1);
- UpdateTrkEndElev( trk, ep, GetTrkEndElevUnmaskedMode(trk,ep), jointData.elev[ep], NULL );
+ UpdateTrkEndElev( trk, ep, GetTrkEndElevUnmaskedMode(trk,ep),
+ jointData.elev[ep], NULL );
ComputeElev( trk, 1-ep, FALSE, &jointData.elev[1-ep], NULL, TRUE );
- if ( jointData.length > minLength )
- jointData.grade = fabs( (jointData.elev[0]-jointData.elev[1])/jointData.length )*100.0;
- else
+ if ( jointData.length > minLength ) {
+ jointData.grade = fabs( (jointData.elev[0]-jointData.elev[1])/jointData.length )
+ *100.0;
+ } else {
jointData.grade = 0.0;
+ }
jointDesc[GR].mode |= DESC_CHANGE;
jointDesc[inx==Z0?Z1:Z0].mode |= DESC_CHANGE;
return;
@@ -547,9 +567,9 @@ static void UpdateJoint( track_p trk, int inx, descData_p descUpd, BOOL_T final
static void DescribeJoint(
- track_p trk,
- char * str,
- CSIZE_T len )
+ track_p trk,
+ char * str,
+ CSIZE_T len )
/*
* Print some interesting info about the track.
*/
@@ -557,11 +577,13 @@ static void DescribeJoint(
struct extraDataEase_t *xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
int fix0, fix1;
- sprintf( str, _("Joint Track(%d): Layer=%d Length=%0.3f EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"), GetTrkIndex(trk),
- GetTrkLayer(trk)+1,
- GetLengthJoint( trk ),
- GetTrkEndPosXY(trk,0), GetTrkEndAngle(trk,0),
- GetTrkEndPosXY(trk,1), GetTrkEndAngle(trk,1) );
+ sprintf( str,
+ _("Joint Track(%d): Layer=%d Length=%0.3f EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"),
+ GetTrkIndex(trk),
+ GetTrkLayer(trk)+1,
+ GetLengthJoint( trk ),
+ GetTrkEndPosXY(trk,0), GetTrkEndAngle(trk,0),
+ GetTrkEndPosXY(trk,1), GetTrkEndAngle(trk,1) );
fix0 = GetTrkEndTrk(trk,0)!=NULL;
fix1 = GetTrkEndTrk(trk,1)!=NULL;
@@ -578,42 +600,44 @@ static void DescribeJoint(
jointData.layerNumber = GetTrkLayer(trk);
ComputeElev( trk, 0, FALSE, &jointData.elev[0], NULL, FALSE );
ComputeElev( trk, 1, FALSE, &jointData.elev[1], NULL, FALSE );
- if ( jointData.length > minLength )
- jointData.grade = fabs( (jointData.elev[0]-jointData.elev[1])/jointData.length )*100.0;
- else
+ if ( jointData.length > minLength ) {
+ jointData.grade = fabs( (jointData.elev[0]-jointData.elev[1])/jointData.length )
+ *100.0;
+ } else {
jointData.grade = 0.0;
+ }
jointDesc[E0].mode =
- jointDesc[E1].mode =
- jointDesc[OR].mode =
- jointDesc[AL].mode =
- jointDesc[RR].mode =
- jointDesc[LL].mode =
- jointDesc[L0].mode =
- jointDesc[L1].mode =
- DESC_RO;
+ jointDesc[E1].mode =
+ jointDesc[OR].mode =
+ jointDesc[AL].mode =
+ jointDesc[RR].mode =
+ jointDesc[LL].mode =
+ jointDesc[L0].mode =
+ jointDesc[L1].mode =
+ DESC_RO;
jointDesc[Z0].mode = (EndPtIsDefinedElev(trk,0)?0:DESC_RO)|DESC_NOREDRAW;
jointDesc[Z1].mode = (EndPtIsDefinedElev(trk,1)?0:DESC_RO)|DESC_NOREDRAW;
jointDesc[GR].mode = DESC_RO;
jointDesc[PV].mode = (fix0|fix1)?DESC_IGNORE:0;
jointDesc[LY].mode = DESC_NOREDRAW;
jointData.pivot = (fix0&fix1)?DESC_PIVOT_NONE:
- fix0?DESC_PIVOT_FIRST:
- fix1?DESC_PIVOT_SECOND:
- DESC_PIVOT_MID;
+ fix0?DESC_PIVOT_FIRST:
+ fix1?DESC_PIVOT_SECOND:
+ DESC_PIVOT_MID;
DoDescribe( _("Easement Track"), trk, jointDesc, UpdateJoint );
}
static void GetJointPos(
- coOrd * RP,
- ANGLE_T * RA,
- DIST_T l,
- DIST_T R,
- DIST_T L,
- coOrd P,
- ANGLE_T A,
- BOOL_T N )
+ coOrd * RP,
+ ANGLE_T * RA,
+ DIST_T l,
+ DIST_T R,
+ DIST_T L,
+ coOrd P,
+ ANGLE_T A,
+ BOOL_T N )
/*
* Compute position of point on transition-curve.
*/
@@ -621,42 +645,46 @@ static void GetJointPos(
coOrd p1;
static coOrd pZero = {0.0,0.0};
ComputeJoinPos( l, R, L, NULL, RA, &p1, NULL );
- if (N)
+ if (N) {
p1.x = -p1.x;
+ }
Rotate( &p1, pZero, A );
if (RP) {
RP->x = P.x + p1.x;
RP->y = P.y + p1.y;
}
- if (RA)
+ if (RA) {
*RA = NormalizeAngle( A + (N?-*RA:*RA) );
+ }
}
EXPORT DIST_T JointDistance(
- coOrd * q,
- coOrd pos,
- ANGLE_T angle,
- DIST_T l0,
- DIST_T l1,
- DIST_T R,
- DIST_T L,
- BOOL_T negate,
- BOOL_T Scurve )
+ coOrd * q,
+ coOrd pos,
+ ANGLE_T angle,
+ DIST_T l0,
+ DIST_T l1,
+ DIST_T R,
+ DIST_T L,
+ BOOL_T negate,
+ BOOL_T Scurve )
{
DIST_T d, l;
coOrd p0 = *q;
GetLandD( &l, &d, p0, pos, angle, R, L, negate, Scurve );
if (Scurve) {
- if ( l < -l1 )
+ if ( l < -l1 ) {
l = -l1;
- else if ( l > l0 )
+ } else if ( l > l0 ) {
l = l0;
+ }
} else {
- if ( l < l0 )
+ if ( l < l0 ) {
l = l0;
- else if ( l > l1 )
+ } else if ( l > l1 ) {
l = l1;
+ }
}
GetJointPos( q, NULL, l, R, L, pos, angle, negate );
d = FindDistance( p0, *q );
@@ -665,31 +693,32 @@ EXPORT DIST_T JointDistance(
static DIST_T DistanceJoint(
- track_p trk,
- coOrd * p )
+ track_p trk,
+ coOrd * p )
/*
* Determine how close (p) is to (t).
*/
{
struct extraDataEase_t * xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
- return JointDistance( p, xx->pos, xx->angle, xx->l0, xx->l1, xx->R, xx->L, xx->negate, xx->Scurve );
+ return JointDistance( p, xx->pos, xx->angle, xx->l0, xx->l1, xx->R, xx->L,
+ xx->negate, xx->Scurve );
}
static void DrawJointSegment(
- drawCmd_p d,
- wIndex_t cnt,
- DIST_T l0,
- DIST_T l1,
- DIST_T R,
- DIST_T L,
- coOrd P,
- ANGLE_T A,
- BOOL_T N,
- DIST_T trackGauge,
- wDrawColor color,
- long widthOptions,
- track_p trk )
+ drawCmd_p d,
+ wIndex_t cnt,
+ DIST_T l0,
+ DIST_T l1,
+ DIST_T R,
+ DIST_T L,
+ coOrd P,
+ ANGLE_T A,
+ BOOL_T N,
+ DIST_T trackGauge,
+ wDrawColor color,
+ long widthOptions,
+ track_p trk )
/*
* Draw a transition-curve from (l0) to (l1),
* at angle (A) from origin (P).
@@ -718,46 +747,48 @@ static void DrawJointSegment(
DrawLine(d,p0,p1,thick,color);
}
DrawStraightTrack( d, p0, p1, FindAngle( p1, p0 ), trk,
- color, widthOptions );
+ color, widthOptions );
p0 = p1;
}
}
EXPORT coOrd GetJointSegEndPos(
- coOrd pos,
- ANGLE_T angle,
- DIST_T l0,
- DIST_T l1,
- DIST_T R,
- DIST_T L,
- BOOL_T negate,
- BOOL_T flip,
- BOOL_T Scurve,
- EPINX_T ep,
- ANGLE_T * angleR )
+ coOrd pos,
+ ANGLE_T angle,
+ DIST_T l0,
+ DIST_T l1,
+ DIST_T R,
+ DIST_T L,
+ BOOL_T negate,
+ BOOL_T flip,
+ BOOL_T Scurve,
+ EPINX_T ep,
+ ANGLE_T * angleR )
{
coOrd p1;
DIST_T ll;
- if ( flip ) ep = 1-ep;
+ if ( flip ) { ep = 1-ep; }
ll = (ep==0?l0:l1);
if ( Scurve ) {
- if ( ep==1 )
+ if ( ep==1 ) {
angle += 180;
+ }
}
GetJointPos( &p1, &angle, ll, R, L, pos, angle, negate );
if ( angleR ) {
- if ( (!Scurve) && ep==0 )
+ if ( (!Scurve) && ep==0 ) {
angle = NormalizeAngle(angle+180);
+ }
*angleR = angle;
}
return p1;
}
STATUS_T JointDescriptionMove(
- track_p trk,
- wAction_t action,
- coOrd pos )
+ track_p trk,
+ wAction_t action,
+ coOrd pos )
{
struct extraDataEase_t *xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
ANGLE_T ap;
@@ -767,24 +798,27 @@ STATUS_T JointDescriptionMove(
ap = NormalizeAngle(FindAngle(end0,pos)-FindAngle(end0,end1));
xx->descriptionOff.y = FindDistance(end0,pos)*sin(D2R(ap));
- xx->descriptionOff.x = -0.5 + FindDistance(end0,pos)*cos(D2R(ap))/FindDistance(end0,end1);
- if (xx->descriptionOff.x > 0.5) xx->descriptionOff.x = 0.5;
- if (xx->descriptionOff.x < -0.5) xx->descriptionOff.x = -0.5;
+ xx->descriptionOff.x = -0.5 + FindDistance(end0,
+ pos)*cos(D2R(ap))/FindDistance(end0,end1);
+ if (xx->descriptionOff.x > 0.5) { xx->descriptionOff.x = 0.5; }
+ if (xx->descriptionOff.x < -0.5) { xx->descriptionOff.x = -0.5; }
return C_CONTINUE;
}
DIST_T JointDescriptionDistance(
- coOrd pos,
- track_p trk,
- coOrd * dpos,
- BOOL_T show_hidden,
- BOOL_T * hidden)
+ coOrd pos,
+ track_p trk,
+ coOrd * dpos,
+ BOOL_T show_hidden,
+ BOOL_T * hidden)
{
coOrd p1;
- if (hidden) *hidden = FALSE;
- if ( GetTrkType( trk ) != T_EASEMENT || ((( GetTrkBits( trk ) & TB_HIDEDESC ) != 0 ) && !show_hidden))
+ if (hidden) { *hidden = FALSE; }
+ if ( GetTrkType( trk ) != T_EASEMENT
+ || ((( GetTrkBits( trk ) & TB_HIDEDESC ) != 0 ) && !show_hidden)) {
return DIST_INF;
+ }
struct extraDataEase_t *xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
coOrd end0, end0off, end1, end1off;
@@ -797,25 +831,28 @@ DIST_T JointDescriptionDistance(
p1.x = (end1off.x - end0off.x)*(xx->descriptionOff.x+0.5) + end0off.x;
p1.y = (end1off.y - end0off.y)*(xx->descriptionOff.x+0.5) + end0off.y;
- if (hidden) *hidden = (GetTrkBits( trk ) & TB_HIDEDESC);
+ if (hidden) { *hidden = (GetTrkBits( trk ) & TB_HIDEDESC); }
*dpos = p1;
coOrd tpos = pos;
- if (DistanceJoint(trk,&tpos)<FindDistance( p1, pos ))
+ if (DistanceJoint(trk,&tpos)<FindDistance( p1, pos )) {
return DistanceJoint(trk,&pos);
+ }
return FindDistance( p1, pos );
}
static void DrawJointDescription(
- track_p trk,
- drawCmd_p d,
- wDrawColor color )
+ track_p trk,
+ drawCmd_p d,
+ wDrawColor color )
{
- DIST_T grade=0, sep=0;
+// DIST_T grade=0, sep=0;
ANGLE_T a;
- if (layoutLabels == 0)
+ if (layoutLabels == 0) {
return;
- if ((labelEnable&LABELENABLE_TRKDESC)==0 )
+ }
+ if ((labelEnable&LABELENABLE_TRKDESC)==0 ) {
return;
+ }
coOrd end0, end0off, end1, end1off;
end0 = GetTrkEndPos(trk,0);
@@ -826,16 +863,19 @@ static void DrawJointDescription(
Translate(&end1off,end1,a+90,xx->descriptionOff.y);
sprintf( message, "Joint: L %s A %0.3f, l0 %s l1 %s R %s L %s\n",
- FormatDistance(FindDistance(end0,end1)),FindAngle(end0,end1),
- FormatDistance(xx->l0), FormatDistance(xx->l1), FormatDistance(xx->R), FormatDistance(xx->L));
+ FormatDistance(FindDistance(end0,end1)),FindAngle(end0,end1),
+ FormatDistance(xx->l0), FormatDistance(xx->l1), FormatDistance(xx->R),
+ FormatDistance(xx->L));
DrawLine(d,end0,end0off,0,color);
DrawLine(d,end1,end1off,0,color);
- DrawDimLine( d, end0off, end1off, message, (wFontSize_t)descriptionFontSize, xx->descriptionOff.x+0.5, 0, color, 0x00 );
+ DrawDimLine( d, end0off, end1off, message, (wFontSize_t)descriptionFontSize,
+ xx->descriptionOff.x+0.5, 0, color, 0x00 );
if (GetTrkBits( trk ) & TB_DETAILDESC) {
coOrd details_pos;
details_pos.x = (end1off.x - end0off.x)*(xx->descriptionOff.x+0.5) + end0off.x;
- details_pos.y = (end1off.y - end0off.y)*(xx->descriptionOff.x+0.5) + end0off.y - (2*descriptionFontSize/mainD.dpi);
+ details_pos.y = (end1off.y - end0off.y)*(xx->descriptionOff.x+0.5) + end0off.y
+ - (2*descriptionFontSize/mainD.dpi);
AddTrkDetails(d, trk, details_pos, FindDistance(end0,end1), color);
}
@@ -845,22 +885,22 @@ static void DrawJointDescription(
EXPORT void DrawJointTrack(
- drawCmd_p d,
- coOrd pos,
- ANGLE_T angle,
- DIST_T l0,
- DIST_T l1,
- DIST_T R,
- DIST_T L,
- BOOL_T negate,
- BOOL_T flip,
- BOOL_T Scurve,
- track_p trk,
- EPINX_T ep0,
- EPINX_T ep1,
- DIST_T trackGauge,
- wDrawColor color,
- long options )
+ drawCmd_p d,
+ coOrd pos,
+ ANGLE_T angle,
+ DIST_T l0,
+ DIST_T l1,
+ DIST_T R,
+ DIST_T L,
+ BOOL_T negate,
+ BOOL_T flip,
+ BOOL_T Scurve,
+ track_p trk,
+ EPINX_T ep0,
+ EPINX_T ep1,
+ DIST_T trackGauge,
+ wDrawColor color,
+ long options )
{
wIndex_t cnt;
DIST_T len;
@@ -870,7 +910,7 @@ EXPORT void DrawJointTrack(
DYNARR_APPEND( trkSeg_t, tempSegs_da, 10 );
segPtr = &tempSegs(tempSegs_da.cnt-1);
segPtr->type = SEG_JNTTRK;
- segPtr->width = 0;
+ segPtr->lineWidth = 0;
segPtr->color = wDrawColorBlack;
segPtr->u.j.pos = pos;
segPtr->u.j.angle = angle;
@@ -883,43 +923,44 @@ EXPORT void DrawJointTrack(
segPtr->u.j.Scurve = Scurve;
return;
}
-LOG( log_ease, 4, ( "DJT( (X%0.3f Y%0.3f A%0.3f) \n", pos.x, pos.y, angle ) )
- if (color == wDrawColorBlack)
+ LOG( log_ease, 4, ( "DJT( (X%0.3f Y%0.3f A%0.3f) \n", pos.x, pos.y, angle ) )
+ if (color == wDrawColorBlack) {
color = normalColor;
+ }
if (!Scurve) {
/* print segments about 0.20" long */
len = (l0-l1)/(0.20*d->scale);
cnt = (int)ceil(fabs(len));
- if (cnt == 0) cnt = 1;
+ if (cnt == 0) { cnt = 1; }
DrawJointSegment( d, cnt, l0, l1, R, L, pos,
- angle, negate, trackGauge, color, options, trk );
+ angle, negate, trackGauge, color, options, trk );
} else {
/* print segments about 0.20" long */
cnt = (int)ceil((l0)/(0.20*d->scale));
- if (cnt == 0) cnt = 1;
+ if (cnt == 0) { cnt = 1; }
DrawJointSegment( d, cnt, 0, l0, R, L, pos,
- angle, negate, trackGauge, color, options, trk );
+ angle, negate, trackGauge, color, options, trk );
cnt = (int)ceil((l1)/(0.20*d->scale));
- if (cnt == 0) cnt = 1;
+ if (cnt == 0) { cnt = 1; }
DrawJointSegment( d, cnt, 0, l1, R, L, pos,
- angle+180, negate, trackGauge, color, options, trk );
+ angle+180, negate, trackGauge, color, options, trk );
}
DrawEndPt( d, trk, ep0, color );
DrawEndPt( d, trk, ep1, color );
if (((d->options&(DC_SIMPLE|DC_SEGTRACK))==0) &&
- (labelWhen == 2 || (labelWhen == 1 && (d->options&DC_PRINT))) &&
- labelScale >= d->scale &&
- ( GetTrkBits( trk ) & TB_HIDEDESC ) == 0 ) {
- DrawJointDescription( trk, d, color );
+ (labelWhen == 2 || (labelWhen == 1 && (d->options&DC_PRINT))) &&
+ labelScale >= d->scale &&
+ ( GetTrkBits( trk ) & TB_HIDEDESC ) == 0 ) {
+ DrawJointDescription( trk, d, color );
}
}
static void DrawJoint(
- track_p trk,
- drawCmd_p d,
- wDrawColor color )
+ track_p trk,
+ drawCmd_p d,
+ wDrawColor color )
/*
* Draw a transition-curve.
*/
@@ -927,33 +968,41 @@ static void DrawJoint(
struct extraDataEase_t * xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
long widthOptions = 0;
- DrawJointTrack( d, xx->pos, xx->angle, xx->l0, xx->l1, xx->R, xx->L, xx->negate, xx->flip, xx->Scurve, trk, 0, 1, GetTrkGauge(trk), color, widthOptions );
+ DrawJointTrack( d, xx->pos, xx->angle, xx->l0, xx->l1, xx->R, xx->L, xx->negate,
+ xx->flip, xx->Scurve, trk, 0, 1, GetTrkGauge(trk), color, widthOptions );
}
static void DeleteJoint(
- track_p t )
+ track_p t )
/* Delete track - nothing to do */
{
}
static BOOL_T WriteJoint(
- track_p t,
- FILE * f )
+ track_p t,
+ FILE * f )
/*
* Write track data to a file (f).
*/
{
struct extraDataEase_t * xx = GET_EXTRA_DATA(t, T_EASEMENT, extraDataEase_t);
BOOL_T rc = TRUE;
+ int bits;
long options = (long)GetTrkWidth(t);
if ( ( GetTrkBits(t) & TB_HIDEDESC ) == 0 )
- // 0x80 means Show Description
- options |= 0x80;
- rc &= fprintf(f, "JOINT %d %d %ld 0 0 %s %d %0.6f %0.6f %0.6f %0.6f %d %d %d %0.6f %0.6f 0 %0.6f %0.6f %0.6f\n",
- GetTrkIndex(t), GetTrkLayer(t), options,
- GetTrkScaleName(t), GetTrkVisible(t)|(GetTrkNoTies(t)?1<<2:0)|(GetTrkBridge(t)?1<<3:0), xx->l0, xx->l1, xx->R, xx->L,
- xx->flip, xx->negate, xx->Scurve, xx->pos.x, xx->pos.y, xx->angle, xx->descriptionOff.x, xx->descriptionOff.y )>0;
+ // 0x80 means Show Description
+ {
+ options |= 0x80;
+ }
+ bits = GetTrkVisible(t)|(GetTrkNoTies(t)?1<<2:0)|(GetTrkBridge(t)?1<<3:0)|
+ (GetTrkRoadbed(t)?1<<4:0);
+ rc &= fprintf(f,
+ "JOINT %d %d %ld 0 0 %s %d %0.6f %0.6f %0.6f %0.6f %d %d %d %0.6f %0.6f 0 %0.6f %0.6f %0.6f\n",
+ GetTrkIndex(t), GetTrkLayer(t), options,
+ GetTrkScaleName(t), bits, xx->l0, xx->l1, xx->R, xx->L,
+ xx->flip, xx->negate, xx->Scurve, xx->pos.x, xx->pos.y, xx->angle,
+ xx->descriptionOff.x, xx->descriptionOff.y )>0;
rc &= WriteEndPt( f, t, 0 );
rc &= WriteEndPt( f, t, 1 );
rc &= fprintf(f, "\t%s\n", END_SEGS )>0;
@@ -961,7 +1010,7 @@ static BOOL_T WriteJoint(
}
static BOOL_T ReadJoint(
- char * line )
+ char * line )
/*
* Read track data from a file (f).
*/
@@ -977,16 +1026,20 @@ static BOOL_T ReadJoint(
char * cp = NULL;
coOrd descriptionOff = {0.0,0.0};
- if ( !GetArgs( line+6, paramVersion<3?"dXZsdffffdddpYfc":paramVersion<9?"dLl00sdffffdddpYfc":"dLl00sdffffdddpffc",
- &index, &layer, &options, scale, &visible, &e.l0, &e.l1, &e.R, &e.L,
- &e.flip, &e.negate, &e.Scurve, &e.pos, &elev, &e.angle, &cp) )
+ if ( !GetArgs( line+6, paramVersion<3?"dXZsdffffdddpYfc":paramVersion<9
+ ?"dLl00sdffffdddpYfc":"dLl00sdffffdddpffc",
+ &index, &layer, &options, scale, &visible, &e.l0, &e.l1, &e.R, &e.L,
+ &e.flip, &e.negate, &e.Scurve, &e.pos, &elev, &e.angle, &cp) ) {
return FALSE;
+ }
if (cp) {
- if (!GetArgs(cp,"p",&descriptionOff))
+ if (!GetArgs(cp,"p",&descriptionOff)) {
return FALSE;
+ }
}
- if ( !ReadSegs() )
+ if ( !ReadSegs() ) {
return FALSE;
+ }
trk = NewTrack( index, T_EASEMENT, 0, sizeof e );
xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
xx->descriptionOff = descriptionOff;
@@ -994,16 +1047,19 @@ static BOOL_T ReadJoint(
SetTrkVisible(trk, visible!=0);
SetTrkNoTies(trk, FALSE);
SetTrkBridge(trk, FALSE);
+ SetTrkRoadbed(trk, FALSE);
} else {
SetTrkVisible(trk, visible&2);
SetTrkNoTies(trk, visible&4);
SetTrkBridge(trk, visible&8);
+ SetTrkRoadbed(trk, visible&16);
}
SetTrkScale(trk, LookupScale(scale));
SetTrkLayer(trk, layer);
SetTrkWidth(trk, (int)(options&3));
- if ( paramVersion < VERSION_DESCRIPTION2 || ( ( options & 0x80 ) == 0 ) )
+ if ( paramVersion < VERSION_DESCRIPTION2 || ( ( options & 0x80 ) == 0 ) ) {
SetTrkBits(trk,TB_HIDEDESC);
+ }
e.base.trkType = T_EASEMENT;
*xx = e;
SetEndPts( trk, 2 );
@@ -1012,8 +1068,8 @@ static BOOL_T ReadJoint(
}
static void MoveJoint(
- track_p trk,
- coOrd orig )
+ track_p trk,
+ coOrd orig )
/*
* Move a track.
*/
@@ -1025,9 +1081,9 @@ static void MoveJoint(
}
static void RotateJoint(
- track_p trk,
- coOrd orig,
- ANGLE_T angle )
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle )
/*
* Rotate a track.
*/
@@ -1051,7 +1107,8 @@ static void RescaleJoint( track_p trk, FLOAT_T ratio )
}
-static ANGLE_T GetAngleJoint( track_p trk, coOrd pos, EPINX_T * ep0, EPINX_T * ep1 )
+static ANGLE_T GetAngleJoint( track_p trk, coOrd pos, EPINX_T * ep0,
+ EPINX_T * ep1 )
{
DIST_T l;
ANGLE_T a;
@@ -1065,11 +1122,12 @@ static ANGLE_T GetAngleJoint( track_p trk, coOrd pos, EPINX_T * ep0, EPINX_T * e
*ep1 = 1;
}
}
- GetLandD( &l, NULL, pos, xx->pos, xx->angle, xx->R, xx->L, xx->negate, xx->Scurve );
+ GetLandD( &l, NULL, pos, xx->pos, xx->angle, xx->R, xx->L, xx->negate,
+ xx->Scurve );
if (small(l)) {
a = xx->angle;
} else {
-/* if (xx->Scurve && NormalizeAngle(FindAngle(xx->pos,pos)-xx->angle+90.0) > 180.0)*/
+ /* if (xx->Scurve && NormalizeAngle(FindAngle(xx->pos,pos)-xx->angle+90.0) > 180.0)*/
if (xx->Scurve && l < 0.0) {
GetJointPos( NULL, &a, -l, xx->R, xx->L, xx->pos, xx->angle+180.0, xx->negate );
a = NormalizeAngle( a-180.0 );
@@ -1082,11 +1140,11 @@ static ANGLE_T GetAngleJoint( track_p trk, coOrd pos, EPINX_T * ep0, EPINX_T * e
static void SplitJointA(
- coOrd * posR,
- EPINX_T ep,
- struct extraDataEase_t * xx,
- struct extraDataEase_t * xx1,
- ANGLE_T * aR )
+ coOrd * posR,
+ EPINX_T ep,
+ struct extraDataEase_t * xx,
+ struct extraDataEase_t * xx1,
+ ANGLE_T * aR )
{
struct extraDataEase_t * xx0;
BOOL_T flip;
@@ -1101,17 +1159,19 @@ static void SplitJointA(
xx1 = xx;
flip = TRUE;
}
- GetLandD( &l, NULL, *posR, xx->pos, xx->angle, xx->R, xx->L, xx->negate, xx->Scurve );
+ GetLandD( &l, NULL, *posR, xx->pos, xx->angle, xx->R, xx->L, xx->negate,
+ xx->Scurve );
if (!xx->Scurve) {
if (l < xx->l0 || l > xx->l1) {
- NoticeMessage2( 0, "splitJoint: ! %0.3f <= %0.3f <= %0.3f", _("Ok"), NULL, xx->l0, l, xx->l1 );
- if ( l < xx->l0 ) l = xx->l0;
- else if ( l > xx->l1 ) l = xx->l1;
+ NoticeMessage2( 0, "splitJoint: ! %0.3f <= %0.3f <= %0.3f", _("Ok"), NULL,
+ xx->l0, l, xx->l1 );
+ if ( l < xx->l0 ) { l = xx->l0; }
+ else if ( l > xx->l1 ) { l = xx->l1; }
}
GetJointPos( posR, aR, l, xx->R, xx->L, xx->pos, xx->angle, xx->negate );
xx0->l1 = xx1->l0 = l;
- } else if (small(l)){
+ } else if (small(l)) {
xx0->Scurve = xx1->Scurve = 0;
xx0->l1 = xx0->l0;
xx0->flip = !xx0->flip;
@@ -1135,12 +1195,14 @@ static void SplitJointA(
}
*aR = NormalizeAngle( *aR+180.0 );
}
- if (flip)
+ if (flip) {
*aR = NormalizeAngle( *aR + 180.0 );
+ }
}
-static BOOL_T SplitJoint( track_p trk, coOrd pos, EPINX_T ep, track_p * leftover, EPINX_T *ep0, EPINX_T *ep1 )
+static BOOL_T SplitJoint( track_p trk, coOrd pos, EPINX_T ep,
+ track_p * leftover, EPINX_T *ep0, EPINX_T *ep1 )
{
struct extraDataEase_t *xx, *xx1;
track_p trk1;
@@ -1165,34 +1227,36 @@ static BOOL_T SplitJoint( track_p trk, coOrd pos, EPINX_T ep, track_p * leftover
static BOOL_T TraverseJoint(
- coOrd * posR,
- ANGLE_T *angleR,
- DIST_T *distR,
- coOrd pos,
- ANGLE_T angle,
- DIST_T l0,
- DIST_T l1,
- DIST_T R,
- DIST_T L,
- BOOL_T negate,
- BOOL_T flip,
- BOOL_T Scurve )
+ coOrd * posR,
+ ANGLE_T *angleR,
+ DIST_T *distR,
+ coOrd pos,
+ ANGLE_T angle,
+ DIST_T l0,
+ DIST_T l1,
+ DIST_T R,
+ DIST_T L,
+ BOOL_T negate,
+ BOOL_T flip,
+ BOOL_T Scurve )
{
-
+
DIST_T l, lx, d, dx, ll0, ll1, d0, d1;
BOOL_T from_tangent, flip_angle;
GetLandD( &l, &d, *posR, pos, angle, R, L, negate, Scurve );
-LOG( log_traverseJoint, 2, ( "TJ: [%0.3f %0.3f] D%0.3f l0:%0.3f l1:%0.3f [%0.3f %0.3f] A%0.3f N%d F%d S%d = l:%0.3f ",
- posR->x, posR->y, *distR, l0, l1, pos.x, pos.y, angle, negate, flip, Scurve, l ) )
+ LOG( log_traverseJoint, 2,
+ ( "TJ: [%0.3f %0.3f] D%0.3f l0:%0.3f l1:%0.3f [%0.3f %0.3f] A%0.3f N%d F%d S%d = l:%0.3f ",
+ posR->x, posR->y, *distR, l0, l1, pos.x, pos.y, angle, negate, flip, Scurve,
+ l ) )
if ( (!Scurve) ) {
- if ( l < l0 ) l = l0;
- else if ( l > l1 ) l = l1;
+ if ( l < l0 ) { l = l0; }
+ else if ( l > l1 ) { l = l1; }
} else {
- if ( l > l0 ) l = l0;
- else if ( l < -l1 ) l = -l1;
+ if ( l > l0 ) { l = l0; }
+ else if ( l < -l1 ) { l = -l1; }
}
lx = l;
@@ -1213,10 +1277,11 @@ LOG( log_traverseJoint, 2, ( "TJ: [%0.3f %0.3f] D%0.3f l0:%0.3f l1:%0.3f [%0.3f
dx = JoinD( lx, R, L );
d0 = JoinD( ll0, R, L );
d1 = JoinD( ll1, R, L );
- if ( from_tangent )
+ if ( from_tangent ) {
d = d1 - dx;
- else
+ } else {
d = dx - d0;
+ }
if ( *distR < d ) {
if ( from_tangent ) {
d = dx + *distR;
@@ -1224,43 +1289,49 @@ LOG( log_traverseJoint, 2, ( "TJ: [%0.3f %0.3f] D%0.3f l0:%0.3f l1:%0.3f [%0.3f
d = dx - *distR;
}
lx = GetLfromD( d, R, L );
- if ( l < 0 )
+ if ( l < 0 ) {
lx = - lx;
+ }
/* compute posR and angleR */
GetJointPos( posR, angleR, lx, R, L, pos, angle, negate );
- if ( ! flip_angle )
+ if ( ! flip_angle ) {
*angleR = NormalizeAngle( *angleR + 180.0 );
+ }
*distR = 0;
goto doreturn;
}
*distR -= d;
if ( Scurve && (!from_tangent) ) {
/* skip over midpoint */
- if ( l > 0 )
+ if ( l > 0 ) {
d = JoinD( l1, R, L );
- else
+ } else {
d = JoinD( l0, R, L );
+ }
if ( *distR < d ) {
lx = GetLfromD( *distR, R, L );
- if ( l > 0 )
+ if ( l > 0 ) {
lx = - lx;
+ }
GetJointPos( posR, angleR, lx, R, L, pos, angle, negate );
- if ( ! flip_angle )
+ if ( ! flip_angle ) {
*angleR = NormalizeAngle( *angleR + 180.0 );
+ }
*distR = 0;
goto doreturn;
}
*distR -= d;
}
doreturn:
-LOG( log_traverseJoint, 2, ( " [%0.3f %0.3f] A%0.3f D%0.3f\n", posR->x, posR->y, *angleR, *distR ) )
+ LOG( log_traverseJoint, 2, ( " [%0.3f %0.3f] A%0.3f D%0.3f\n", posR->x, posR->y,
+ *angleR, *distR ) )
return TRUE;
}
static BOOL_T TraverseJointTrack(
- traverseTrack_p trvTrk,
- DIST_T * distR )
+ traverseTrack_p trvTrk,
+ DIST_T * distR )
{
track_p trk = trvTrk->trk;
struct extraDataEase_t * xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
@@ -1271,13 +1342,16 @@ static BOOL_T TraverseJointTrack(
angle = NormalizeAngle( xx->angle-trvTrk->angle );
flip = ( angle < 270 && angle > 90 );
- rc = TraverseJoint( &trvTrk->pos, &trvTrk->angle, distR, xx->pos, xx->angle, xx->l0, xx->l1, xx->R, xx->L, xx->negate, flip, xx->Scurve );
+ rc = TraverseJoint( &trvTrk->pos, &trvTrk->angle, distR, xx->pos, xx->angle,
+ xx->l0, xx->l1, xx->R, xx->L, xx->negate, flip, xx->Scurve );
if ( *distR > 0 ) {
ep = (flip?0:1);
- if ( xx->flip )
+ if ( xx->flip ) {
ep = 1-ep;
- if ( xx->Scurve )
+ }
+ if ( xx->Scurve ) {
ep = 1-ep;
+ }
trvTrk->pos = GetTrkEndPos( trk, ep );
trvTrk->angle = GetTrkEndAngle( trk, ep );
trvTrk->trk = GetTrkEndTrk( trk, ep );
@@ -1295,7 +1369,8 @@ static BOOL_T EnumerateJoint( track_p trk )
return FALSE;
}
-static BOOL_T TrimJoint( track_p trk, EPINX_T ep, DIST_T maxX, coOrd endpos, ANGLE_T angle, DIST_T radius, coOrd center )
+static BOOL_T TrimJoint( track_p trk, EPINX_T ep, DIST_T maxX, coOrd endpos,
+ ANGLE_T angle, DIST_T radius, coOrd center )
{
DeleteTrack( trk, FALSE );
return TRUE;
@@ -1303,10 +1378,10 @@ static BOOL_T TrimJoint( track_p trk, EPINX_T ep, DIST_T maxX, coOrd endpos, ANG
static BOOL_T MergeJoint(
- track_p trk0,
- EPINX_T ep0,
- track_p trk1,
- EPINX_T ep1 )
+ track_p trk0,
+ EPINX_T ep0,
+ track_p trk1,
+ EPINX_T ep1 )
{
track_p trk2;
EPINX_T ep2=-1;
@@ -1315,19 +1390,22 @@ static BOOL_T MergeJoint(
struct extraDataEase_t *xx0 = GET_EXTRA_DATA(trk0, T_EASEMENT, extraDataEase_t);
struct extraDataEase_t *xx1 = GET_EXTRA_DATA(trk1, T_EASEMENT, extraDataEase_t);
- if ( ep0 == ep1 )
+ if ( ep0 == ep1 ) {
return FALSE;
+ }
if ( xx0->R != xx1->R ||
- xx0->L != xx1->L ||
- xx0->flip != xx1->flip ||
- xx0->negate != xx1->negate ||
- xx0->angle != xx1->angle ||
- xx0->Scurve ||
- xx1->Scurve ||
- FindDistance( xx0->pos, xx1->pos ) > connectDistance )
+ xx0->L != xx1->L ||
+ xx0->flip != xx1->flip ||
+ xx0->negate != xx1->negate ||
+ xx0->angle != xx1->angle ||
+ xx0->Scurve ||
+ xx1->Scurve ||
+ FindDistance( xx0->pos, xx1->pos ) > connectDistance ) {
return FALSE;
+ }
- UndoStart( _("Merge Easements"), "MergeJoint( T%d[%d] T%d[%d] )", GetTrkIndex(trk0), ep0, GetTrkIndex(trk1), ep1 );
+ UndoStart( _("Merge Easements"), "MergeJoint( T%d[%d] T%d[%d] )",
+ GetTrkIndex(trk0), ep0, GetTrkIndex(trk1), ep1 );
UndoModify( trk0 );
UndrawNewTrack( trk0 );
trk2 = GetTrkEndTrk( trk1, 1-ep1 );
@@ -1356,15 +1434,19 @@ static BOOL_T MergeJoint(
}
-static BOOL_T GetParamsJoint( int inx, track_p trk, coOrd pos, trackParams_t * params )
+static BOOL_T GetParamsJoint( int inx, track_p trk, coOrd pos,
+ trackParams_t * params )
{
params->type = curveTypeStraight;
- if ((inx == PARAMS_CORNU) || (inx == PARAMS_1ST_JOIN) || (inx == PARAMS_2ND_JOIN))\
+ if ((inx == PARAMS_CORNU) || (inx == PARAMS_1ST_JOIN)
+ || (inx == PARAMS_2ND_JOIN))\
params->ep = PickEndPoint(pos, trk);
- else
+ else {
params->ep = PickUnconnectedEndPointSilent( pos, trk );
- if (params->ep == -1)
- return FALSE;
+ }
+ if (params->ep == -1) {
+ return FALSE;
+ }
params->lineOrig = GetTrkEndPos(trk,params->ep);
params->lineEnd = params->lineOrig;
params->angle = GetTrkEndAngle(trk,params->ep);
@@ -1393,9 +1475,11 @@ static BOOL_T QueryJoint( track_p trk, int query )
case Q_CAN_PARALLEL:
if ( xx->Scurve ) {
if ( FindDistance( xx->pos, GetTrkEndPos(trk,0) ) <= minLength ||
- FindDistance( xx->pos, GetTrkEndPos(trk,1) ) <= minLength )
+ FindDistance( xx->pos, GetTrkEndPos(trk,1) ) <= minLength ) {
return FALSE;
- UndoStart( _("Split Easement Curve"), "queryJoint T%d Scurve", GetTrkIndex(trk) );
+ }
+ UndoStart( _("Split Easement Curve"), "queryJoint T%d Scurve",
+ GetTrkIndex(trk) );
SplitTrack( trk, xx->pos, 0, &trk1, FALSE );
}
return TRUE;
@@ -1408,9 +1492,9 @@ static BOOL_T QueryJoint( track_p trk, int query )
static void FlipJoint(
- track_p trk,
- coOrd orig,
- ANGLE_T angle )
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle )
{
struct extraDataEase_t * xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
FlipPoint( &xx->pos, orig, angle );
@@ -1421,32 +1505,37 @@ static void FlipJoint(
static BOOL_T MakeParallelJoint(
- track_p trk,
- coOrd pos,
- DIST_T sep,
- DIST_T factor,
- track_p * newTrkR,
- coOrd * p0R,
- coOrd * p1R,
- BOOL_T track)
+ track_p trk,
+ coOrd pos,
+ DIST_T sep,
+ DIST_T factor,
+ track_p * newTrkR,
+ coOrd * p0R,
+ coOrd * p1R,
+ BOOL_T track)
{
- struct extraDataEase_t * xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t), *xx1;
+ struct extraDataEase_t * xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t),
+ *xx1;
ANGLE_T angle, A;
coOrd p0, p1, P, q1, r1;
DIST_T d, d0;
DIST_T R, L, l0, l1, len, dl;
int cnt, inx;
- if ( xx->Scurve )
+ if ( xx->Scurve ) {
return FALSE;
+ }
GetLandD( NULL, &d, pos, xx->pos, xx->angle, xx->R, xx->L, xx->negate, FALSE );
angle = 90.0;
- if ( (d < 0) == xx->negate )
+ if ( (d < 0) == xx->negate ) {
sep = -sep;
- if ( xx->negate )
+ }
+ if ( xx->negate ) {
angle = -90.0;
- if ( xx->flip )
+ }
+ if ( xx->flip ) {
angle = -angle;
+ }
p0 = GetTrkEndPos(trk,0);
p1 = GetTrkEndPos(trk,1);
d0 = FindDistance( p0, p1 );
@@ -1458,25 +1547,26 @@ static BOOL_T MakeParallelJoint(
A = xx->angle;
R = xx->R + sep*sin(D2R(angle));
dl = JoinD( xx->l1, xx->R, xx->L ) - JoinD( xx->l0, xx->R, xx->L );
-/*printf( "D = %0.3f %0.3f\n", d, dl );*/
+ /*printf( "D = %0.3f %0.3f\n", d, dl );*/
d /= d0;
R = xx->R * d;
L = xx->L * d;
l0 = xx->l0 * d;
l1 = xx->l1 * d;
-/*printf( " R=%0.3f, L=%0.3f, l0=%0.3f, l1=%0.3f\n", R, L, l0, l1 );*/
+ /*printf( " R=%0.3f, L=%0.3f, l0=%0.3f, l1=%0.3f\n", R, L, l0, l1 );*/
Translate( &P, xx->pos, xx->angle+(xx->negate?90:-90), sep );
ComputeJoinPos( l1, R, L, NULL, NULL, &q1, NULL );
r1 = (xx->flip?p0:p1);
r1.x -= P.x;
r1.y -= P.y;
Rotate( &r1, zero, -A );
- if ( xx->negate )
+ if ( xx->negate ) {
r1.x = -r1.x;
+ }
if ( r1.x > 0 && q1.x > 0 ) {
-/*printf( " %0.3f %0.3f, R=%0.3f ", q1.x, r1.x, R );*/
+ /*printf( " %0.3f %0.3f, R=%0.3f ", q1.x, r1.x, R );*/
R *= q1.x/r1.x;
-/*printf( " %0.3f\n", R );*/
+ /*printf( " %0.3f\n", R );*/
}
if ( newTrkR ) {
@@ -1497,12 +1587,12 @@ static BOOL_T MakeParallelJoint(
dl = fabs(l0-l1);
len = dl/(0.20*mainD.scale);
cnt = (int)ceil(len);
- if (cnt == 0) cnt = 1;
+ if (cnt == 0) { cnt = 1; }
dl /= cnt;
DYNARR_SET( trkSeg_t, tempSegs_da, cnt );
for ( inx=0; inx<cnt; inx++ ) {
tempSegs(inx).color = wDrawColorBlack;
- tempSegs(inx).width = 0;
+ tempSegs(inx).lineWidth = 0;
tempSegs(inx).type = track?SEG_STRTRK:SEG_STRLIN;
if ( inx == 0 ) {
GetJointPos( &tempSegs(inx).u.l.pos[0], NULL, l0, R, L, P, A, xx->negate );
@@ -1513,19 +1603,18 @@ static BOOL_T MakeParallelJoint(
GetJointPos( &tempSegs(inx).u.l.pos[1], NULL, l0, R, L, P, A, xx->negate );
*newTrkR = MakeDrawFromSeg( zero, 0.0, &tempSegs(inx) );
}
- tempSegs_da.cnt = cnt;
}
} else {
/* print segments about 0.20" long */
dl = fabs(l0-l1);
len = dl/(0.20*mainD.scale);
cnt = (int)ceil(len);
- if (cnt == 0) cnt = 1;
+ if (cnt == 0) { cnt = 1; }
dl /= cnt;
DYNARR_SET( trkSeg_t, tempSegs_da, cnt );
for ( inx=0; inx<cnt; inx++ ) {
tempSegs(inx).color = wDrawColorBlack;
- tempSegs(inx).width = 0;
+ tempSegs(inx).lineWidth = 0;
tempSegs(inx).type = track?SEG_STRTRK:SEG_STRLIN;
if ( inx == 0 ) {
GetJointPos( &tempSegs(inx).u.l.pos[0], NULL, l0, R, L, P, A, xx->negate );
@@ -1535,17 +1624,18 @@ static BOOL_T MakeParallelJoint(
l0 += dl;
GetJointPos( &tempSegs(inx).u.l.pos[1], NULL, l0, R, L, P, A, xx->negate );
}
- tempSegs_da.cnt = cnt;
}
- if ( p0R ) *p0R = p0;
- if ( p1R ) *p1R = p1;
+ if ( p0R ) { *p0R = p0; }
+ if ( p1R ) { *p1R = p1; }
return TRUE;
}
static wBool_t CompareJoint( track_cp trk1, track_cp trk2 )
{
- struct extraDataEase_t *xx1 = GET_EXTRA_DATA( trk1, T_EASEMENT, extraDataEase_t );
- struct extraDataEase_t *xx2 = GET_EXTRA_DATA( trk2, T_EASEMENT, extraDataEase_t );
+ struct extraDataEase_t *xx1 = GET_EXTRA_DATA( trk1, T_EASEMENT,
+ extraDataEase_t );
+ struct extraDataEase_t *xx2 = GET_EXTRA_DATA( trk2, T_EASEMENT,
+ extraDataEase_t );
char * cp = message + strlen(message);
REGRESS_CHECK_DIST( "L0", xx1, xx2, l0 );
REGRESS_CHECK_DIST( "L1", xx1, xx2, l1 );
@@ -1559,47 +1649,48 @@ static wBool_t CompareJoint( track_cp trk1, track_cp trk2 )
static trackCmd_t easementCmds = {
- "JOINT",
- DrawJoint,
- DistanceJoint,
- DescribeJoint,
- DeleteJoint,
- WriteJoint,
- ReadJoint,
- MoveJoint,
- RotateJoint,
- RescaleJoint,
- NULL, /* audit */
- GetAngleJoint,
- SplitJoint,
- TraverseJointTrack,
- EnumerateJoint,
- NULL, /* redraw */
- TrimJoint,
- MergeJoint,
- ExtendStraightFromOrig,
- GetLengthJoint,
- GetParamsJoint,
- MoveEndPtJoint,
- QueryJoint,
- NULL, /* ungroup */
- FlipJoint,
- NULL,
- NULL,
- NULL,
- MakeParallelJoint,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- CompareJoint };
+ "JOINT",
+ DrawJoint,
+ DistanceJoint,
+ DescribeJoint,
+ DeleteJoint,
+ WriteJoint,
+ ReadJoint,
+ MoveJoint,
+ RotateJoint,
+ RescaleJoint,
+ NULL, /* audit */
+ GetAngleJoint,
+ SplitJoint,
+ TraverseJointTrack,
+ EnumerateJoint,
+ NULL, /* redraw */
+ TrimJoint,
+ MergeJoint,
+ ExtendStraightFromOrig,
+ GetLengthJoint,
+ GetParamsJoint,
+ MoveEndPtJoint,
+ QueryJoint,
+ NULL, /* ungroup */
+ FlipJoint,
+ NULL,
+ NULL,
+ NULL,
+ MakeParallelJoint,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ CompareJoint
+};
EXPORT void JointSegProc(
- segProc_e cmd,
- trkSeg_p segPtr,
- segProcData_p data )
+ segProc_e cmd,
+ trkSeg_p segPtr,
+ segProcData_p data )
{
DIST_T l;
ANGLE_T a;
@@ -1612,43 +1703,53 @@ EXPORT void JointSegProc(
switch (cmd) {
case SEGPROC_TRAVERSE1:
- GetLandD( &l, NULL, data->traverse1.pos, segPtr->u.j.pos, segPtr->u.j.angle, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.negate, segPtr->u.j.Scurve );
+ GetLandD( &l, NULL, data->traverse1.pos, segPtr->u.j.pos, segPtr->u.j.angle,
+ segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.negate, segPtr->u.j.Scurve );
if (small(l)) {
a = segPtr->u.j.angle;
} else {
if (segPtr->u.j.Scurve && l < 0.0) {
- GetJointPos( NULL, &a, -l, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.pos, segPtr->u.j.angle+180.0, segPtr->u.j.negate );
+ GetJointPos( NULL, &a, -l, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.pos,
+ segPtr->u.j.angle+180.0, segPtr->u.j.negate );
a = NormalizeAngle( a-180.0 );
} else {
- GetJointPos( NULL, &a, l, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.pos, segPtr->u.j.angle, segPtr->u.j.negate );
+ GetJointPos( NULL, &a, l, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.pos,
+ segPtr->u.j.angle, segPtr->u.j.negate );
}
}
a = NormalizeAngle( data->traverse1.angle+a );
data->traverse1.backwards = (a < 270 && a > 90 );
if ( !segPtr->u.j.Scurve ) {
- if ( data->traverse1.backwards==0 )
- data->traverse1.dist = JoinD( l, segPtr->u.j.R, segPtr->u.j.L ) - JoinD( segPtr->u.j.l0, segPtr->u.j.R, segPtr->u.j.L );
- else
- data->traverse1.dist = JoinD( segPtr->u.j.l1, segPtr->u.j.R, segPtr->u.j.L ) - JoinD( l, segPtr->u.j.R, segPtr->u.j.L );
+ if ( data->traverse1.backwards==0 ) {
+ data->traverse1.dist = JoinD( l, segPtr->u.j.R,
+ segPtr->u.j.L ) - JoinD( segPtr->u.j.l0, segPtr->u.j.R, segPtr->u.j.L );
+ } else {
+ data->traverse1.dist = JoinD( segPtr->u.j.l1, segPtr->u.j.R,
+ segPtr->u.j.L ) - JoinD( l, segPtr->u.j.R, segPtr->u.j.L );
+ }
} else {
data->traverse1.backwards = !data->traverse1.backwards;
- if ( data->traverse1.backwards==0 )
- data->traverse1.dist = JoinD( segPtr->u.j.l0, segPtr->u.j.R, segPtr->u.j.L ) - JoinD( l, segPtr->u.j.R, segPtr->u.j.L );
- else
- data->traverse1.dist = JoinD( segPtr->u.j.l1, segPtr->u.j.R, segPtr->u.j.L ) + JoinD( l, segPtr->u.j.R, segPtr->u.j.L );
+ if ( data->traverse1.backwards==0 ) {
+ data->traverse1.dist = JoinD( segPtr->u.j.l0, segPtr->u.j.R,
+ segPtr->u.j.L ) - JoinD( l, segPtr->u.j.R, segPtr->u.j.L );
+ } else {
+ data->traverse1.dist = JoinD( segPtr->u.j.l1, segPtr->u.j.R,
+ segPtr->u.j.L ) + JoinD( l, segPtr->u.j.R, segPtr->u.j.L );
+ }
}
data->traverse1.reverse_seg = FALSE;
if ( segPtr->u.j.flip ) {
data->traverse1.backwards = !data->traverse1.backwards;
data->traverse1.reverse_seg = TRUE;
}
-LOG( log_traverseJoint, 1, ( "TJ0: ?[%0.3f %0.3f] A=%0.3f l=%0.3f J[%0.3f %0.3f] A=%0.3f l0=%0.3f l1=%0.3f R=%0.3f L=%0.3f N:%d F:%d S:%d = a=%0.3f D=%0.3f B=%d\n",
- data->traverse1.pos.x, data->traverse1.pos.y, data->traverse1.angle,
- l,
- segPtr->u.j.pos.x, segPtr->u.j.pos.y, segPtr->u.j.angle,
- segPtr->u.j.l0, segPtr->u.j.l1, segPtr->u.j.R, segPtr->u.j.L,
- segPtr->u.j.negate, segPtr->u.j.flip, segPtr->u.j.Scurve,
- a, data->traverse1.dist, data->traverse1.backwards ) );
+ LOG( log_traverseJoint, 1,
+ ( "TJ0: ?[%0.3f %0.3f] A=%0.3f l=%0.3f J[%0.3f %0.3f] A=%0.3f l0=%0.3f l1=%0.3f R=%0.3f L=%0.3f N:%d F:%d S:%d = a=%0.3f D=%0.3f B=%d\n",
+ data->traverse1.pos.x, data->traverse1.pos.y, data->traverse1.angle,
+ l,
+ segPtr->u.j.pos.x, segPtr->u.j.pos.y, segPtr->u.j.angle,
+ segPtr->u.j.l0, segPtr->u.j.l1, segPtr->u.j.R, segPtr->u.j.L,
+ segPtr->u.j.negate, segPtr->u.j.flip, segPtr->u.j.Scurve,
+ a, data->traverse1.dist, data->traverse1.backwards ) );
data->traverse1.negative = FALSE;
data->traverse1.BezSegInx = 0;
data->traverse1.segs_backwards = FALSE;
@@ -1656,12 +1757,18 @@ LOG( log_traverseJoint, 1, ( "TJ0: ?[%0.3f %0.3f] A=%0.3f l=%0.3f J[%0.3f %0.3f]
case SEGPROC_TRAVERSE2:
flip = segPtr->u.j.flip;
- if (data->traverse2.segDir!=0)
+ if (data->traverse2.segDir!=0) {
flip = !flip;
- if (segPtr->u.j.Scurve)
+ }
+ if (segPtr->u.j.Scurve) {
flip = !flip;
- data->traverse2.pos = GetSegEndPt( segPtr, data->traverse2.segDir, FALSE, NULL );
- TraverseJoint( &data->traverse2.pos, &data->traverse2.angle, &data->traverse2.dist, segPtr->u.j.pos, segPtr->u.j.angle, segPtr->u.j.l0, segPtr->u.j.l1, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.negate, flip, segPtr->u.j.Scurve );
+ }
+ data->traverse2.pos = GetSegEndPt( segPtr, data->traverse2.segDir, FALSE,
+ NULL );
+ TraverseJoint( &data->traverse2.pos, &data->traverse2.angle,
+ &data->traverse2.dist, segPtr->u.j.pos, segPtr->u.j.angle, segPtr->u.j.l0,
+ segPtr->u.j.l1, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.negate, flip,
+ segPtr->u.j.Scurve );
break;
case SEGPROC_DRAWROADBEDSIDE:
@@ -1669,7 +1776,9 @@ LOG( log_traverseJoint, 1, ( "TJ0: ?[%0.3f %0.3f] A=%0.3f l=%0.3f J[%0.3f %0.3f]
break;
case SEGPROC_DISTANCE:
- data->distance.dd = JointDistance( &data->distance.pos1, segPtr->u.j.pos, segPtr->u.j.angle, segPtr->u.j.l0, segPtr->u.j.l1, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.negate, segPtr->u.j.Scurve );
+ data->distance.dd = JointDistance( &data->distance.pos1, segPtr->u.j.pos,
+ segPtr->u.j.angle, segPtr->u.j.l0, segPtr->u.j.l1, segPtr->u.j.R, segPtr->u.j.L,
+ segPtr->u.j.negate, segPtr->u.j.Scurve );
break;
case SEGPROC_FLIP:
@@ -1689,20 +1798,25 @@ LOG( log_traverseJoint, 1, ( "TJ0: ?[%0.3f %0.3f] A=%0.3f l=%0.3f J[%0.3f %0.3f]
xx->flip = segPtr->u.j.flip;
xx->Scurve = segPtr->u.j.Scurve;
ep0 = 0;
- if ( xx->flip )
+ if ( xx->flip ) {
ep0 = 1-ep0;
- if ( xx->Scurve )
+ }
+ if ( xx->Scurve ) {
ep0 = 1-ep0;
+ }
GetJointPos( &p, &a, xx->l0, xx->R, xx->L, xx->pos, xx->angle, xx->negate );
- if ( !xx->Scurve )
+ if ( !xx->Scurve ) {
a = NormalizeAngle(a+180.0);
+ }
SetTrkEndPoint( data->newTrack.trk, ep0, p, a );
a = xx->angle;
- if ( xx->Scurve )
+ if ( xx->Scurve ) {
a = NormalizeAngle(a+180.0);
+ }
GetJointPos( &p, &a, xx->l1, xx->R, xx->L, xx->pos, a, xx->negate );
- if ( xx->Scurve )
+ if ( xx->Scurve ) {
a = NormalizeAngle(a+180.0);
+ }
SetTrkEndPoint( data->newTrack.trk, 1-ep0, p, a );
ComputeBoundingBox( data->newTrack.trk );
data->newTrack.ep[0] = 0;
@@ -1710,10 +1824,13 @@ LOG( log_traverseJoint, 1, ( "TJ0: ?[%0.3f %0.3f] A=%0.3f l=%0.3f J[%0.3f %0.3f]
break;
case SEGPROC_LENGTH:
- if ( !segPtr->u.j.Scurve )
- data->length.length = JoinD( segPtr->u.j.l1, segPtr->u.j.R, segPtr->u.j.L ) - JoinD( segPtr->u.j.l0, segPtr->u.j.R, segPtr->u.j.L );
- else
- data->length.length = JoinD( segPtr->u.j.l1, segPtr->u.j.R, segPtr->u.j.L ) + JoinD( segPtr->u.j.l0, segPtr->u.j.R, segPtr->u.j.L );
+ if ( !segPtr->u.j.Scurve ) {
+ data->length.length = JoinD( segPtr->u.j.l1, segPtr->u.j.R,
+ segPtr->u.j.L ) - JoinD( segPtr->u.j.l0, segPtr->u.j.R, segPtr->u.j.L );
+ } else {
+ data->length.length = JoinD( segPtr->u.j.l1, segPtr->u.j.R,
+ segPtr->u.j.L ) + JoinD( segPtr->u.j.l0, segPtr->u.j.R, segPtr->u.j.L );
+ }
break;
case SEGPROC_SPLIT:
@@ -1741,23 +1858,29 @@ LOG( log_traverseJoint, 1, ( "TJ0: ?[%0.3f %0.3f] A=%0.3f l=%0.3f J[%0.3f %0.3f]
data->split.newSeg[inx].u.j.negate = xx->negate;
data->split.newSeg[inx].u.j.flip = xx->flip;
data->split.newSeg[inx].u.j.Scurve = xx->Scurve;
- if ( !xx->Scurve )
- data->split.length[inx] = JoinD( xx->l1, xx->R, xx->L ) - JoinD( xx->l0, xx->R, xx->L );
- else
- data->split.length[inx] = JoinD( xx->l1, xx->R, xx->L ) + JoinD( xx->l0, xx->R, xx->L );
+ if ( !xx->Scurve ) {
+ data->split.length[inx] = JoinD( xx->l1, xx->R, xx->L ) - JoinD( xx->l0, xx->R,
+ xx->L );
+ } else {
+ data->split.length[inx] = JoinD( xx->l1, xx->R, xx->L ) + JoinD( xx->l0, xx->R,
+ xx->L );
+ }
}
break;
case SEGPROC_GETANGLE:
- GetLandD( &l, NULL, data->getAngle.pos, segPtr->u.j.pos, segPtr->u.j.angle, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.negate, segPtr->u.j.Scurve );
+ GetLandD( &l, NULL, data->getAngle.pos, segPtr->u.j.pos, segPtr->u.j.angle,
+ segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.negate, segPtr->u.j.Scurve );
if (small(l)) {
a = segPtr->u.j.angle;
} else {
if (segPtr->u.j.Scurve && l < 0.0) {
- GetJointPos( NULL, &a, -l, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.pos, segPtr->u.j.angle+180.0, segPtr->u.j.negate );
+ GetJointPos( NULL, &a, -l, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.pos,
+ segPtr->u.j.angle+180.0, segPtr->u.j.negate );
a = NormalizeAngle( a-180.0 );
} else {
- GetJointPos( NULL, &a, l, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.pos, segPtr->u.j.angle, segPtr->u.j.negate );
+ GetJointPos( NULL, &a, l, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.pos,
+ segPtr->u.j.angle, segPtr->u.j.negate );
}
}
data->getAngle.angle = a;
@@ -1770,13 +1893,13 @@ LOG( log_traverseJoint, 1, ( "TJ0: ?[%0.3f %0.3f] A=%0.3f l=%0.3f J[%0.3f %0.3f]
#ifndef TEST
BOOL_T JoinTracks(
- track_p trk0,
- EPINX_T ep0,
- coOrd pos0,
- track_p trk1,
- EPINX_T ep1,
- coOrd pos1,
- easementData_t * e )
+ track_p trk0,
+ EPINX_T ep0,
+ coOrd pos0,
+ track_p trk1,
+ EPINX_T ep1,
+ coOrd pos1,
+ easementData_t * e )
/*
* Join 2 tracks with joint described in (e).
* (pos0) and (pos1) are points that would be connected if there was no
@@ -1790,14 +1913,16 @@ BOOL_T JoinTracks(
{
track_p joint;
-LOG( log_ease, 1, ( "join T%d[%d] @[%0.3f %0.3f], T%d[%d] @[%0.3f %0.3f]\n",
- GetTrkIndex(trk0), ep0, pos0.x, pos0.y, GetTrkIndex(trk1), ep1, pos1.x, pos1.y ) )
+ LOG( log_ease, 1, ( "join T%d[%d] @[%0.3f %0.3f], T%d[%d] @[%0.3f %0.3f]\n",
+ GetTrkIndex(trk0), ep0, pos0.x, pos0.y, GetTrkIndex(trk1), ep1, pos1.x,
+ pos1.y ) )
if ( GetTrkType(trk0) == T_EASEMENT ) {
DIST_T d;
ANGLE_T aa;
d = FindDistance( GetTrkEndPos(trk0,ep0), GetTrkEndPos(trk1,ep1) );
- aa = NormalizeAngle( GetTrkEndAngle(trk0,ep0) - GetTrkEndAngle(trk1,ep1) + 180.0 + connectAngle/2.0 );
+ aa = NormalizeAngle( GetTrkEndAngle(trk0,ep0) - GetTrkEndAngle(trk1,
+ ep1) + 180.0 + connectAngle/2.0 );
if ( d <= connectDistance && aa <= connectAngle ) {
ConnectTracks( trk0, ep0, trk1, ep1 );
}
@@ -1805,15 +1930,17 @@ LOG( log_ease, 1, ( "join T%d[%d] @[%0.3f %0.3f], T%d[%d] @[%0.3f %0.3f]\n",
}
/* Move the endPoint for (trk0) */
- if (!MoveEndPt( &trk0, &ep0, pos0, e->d0 ))
+ if (!MoveEndPt( &trk0, &ep0, pos0, e->d0 )) {
return FALSE;
+ }
/* Move the endPoint for (trk1) */
- if (!MoveEndPt( &trk1, &ep1, pos1, e->d1 ))
+ if (!MoveEndPt( &trk1, &ep1, pos1, e->d1 )) {
return FALSE;
+ }
-LOG( log_ease, 1, ( " EASE R%0.3f..%0.3f L%0.3f..%0.3f\n",
- e->r0, e->r1, e->d0, e->d1 ) )
+ LOG( log_ease, 1, ( " EASE R%0.3f..%0.3f L%0.3f..%0.3f\n",
+ e->r0, e->r1, e->d0, e->d1 ) )
/* Connect the tracks */
if (e->x == 0.0) {
@@ -1840,8 +1967,8 @@ LOG( log_ease, 1, ( " EASE R%0.3f..%0.3f L%0.3f..%0.3f\n",
joint = NewCornuTrack(pos,center,angle,radius, NULL, 0);
} else {
joint = NewJoint( GetTrkEndPos(trk0,ep0), GetTrkEndAngle(trk0,ep0),
- GetTrkEndPos(trk1,ep1), GetTrkEndAngle(trk1,ep1),
- GetTrkGauge(trk0), easeR, easeL, e );
+ GetTrkEndPos(trk1,ep1), GetTrkEndAngle(trk1,ep1),
+ GetTrkGauge(trk0), easeR, easeL, e );
}
CopyAttributes( trk0, joint );
ConnectTracks( trk1, ep1, joint, 1 );
@@ -1853,23 +1980,26 @@ LOG( log_ease, 1, ( " EASE R%0.3f..%0.3f L%0.3f..%0.3f\n",
EXPORT void UndoJoint(
- track_p trk,
- EPINX_T ep,
- track_p trk1,
- EPINX_T ep1 )
+ track_p trk,
+ EPINX_T ep,
+ track_p trk1,
+ EPINX_T ep1 )
{
struct extraDataEase_t * xx;
DIST_T d;
- if ( GetTrkType(trk1) != T_EASEMENT )
+ if ( GetTrkType(trk1) != T_EASEMENT ) {
return;
+ }
xx = GET_EXTRA_DATA(trk1, T_EASEMENT, extraDataEase_t);
- if ( ep1 == 0 )
+ if ( ep1 == 0 ) {
d = xx->L/2.0 - xx->l0;
- else
+ } else {
d = xx->l1 - xx->L/2.0;
- if ( d < 0.01 )
+ }
+ if ( d < 0.01 ) {
return;
+ }
UndrawNewTrack( trk );
MoveEndPt( &trk, &ep, GetTrkEndPos(trk,ep), -d );
DrawNewTrack( trk );
@@ -1919,7 +2049,7 @@ track_p NewTrack( TRKINX_T a, TRKTYP_T b, EPINX_T c, TRKTYP_T d )
}
void DrawStraightTrack( drawCmd_p a, coOrd b, coOrd c, ANGLE_T d,
- track_p trk, wDrawColor color, int opts )
+ track_p trk, wDrawColor color, int opts )
{
}
@@ -1928,9 +2058,9 @@ void DrawNewTrack( track_p t )
}
static DIST_T JoinDalt(
- DIST_T x,
- DIST_T R,
- DIST_T L )
+ DIST_T x,
+ DIST_T R,
+ DIST_T L )
/*
* Alternative distance computation, integrate over the curve.
*/
@@ -1941,7 +2071,7 @@ static DIST_T JoinDalt(
coOrd p0, p1;
d = 0.0;
p0.x = p0.y = 0.0;
- for ( i=1;i<=DCNT; i++) {
+ for ( i=1; i<=DCNT; i++) {
ComputeJoinPos( x*((DIST_T)i)/((DIST_T)DCNT), R, L, NULL, NULL, &p1, NULL );
d += FindDistance( p0, p1 );
p0 = p1;
@@ -1965,14 +2095,14 @@ test_plot( INT_T argc, char * argv[] )
C = atol( *argv++ );
X = L*L/(24*R);
lprintf("R=%0.3f X=%0.3f L=%0.3f\n", R, X, L );
-
- for (i=0;i<=C;i++) {
+
+ for (i=0; i<=C; i++) {
l = L*((DIST_T)i)/((DIST_T)C);
d = JoinD( l, R, L );
d1 = JoinDalt( l, R, L );
ComputeJoinPos( l, R, L, &rr, &ra, &p, &pc );
lprintf("d: [%0.3f %0.3f] [%0.3f %03f] R=%0.3f A=%0.3f D=%0.3f D1=%0.3f X=%0.4f\n",
- i, p.x, p.y, pc.x, pc.y, rr, ra, d, d1, pc.x-rr );
+ i, p.x, p.y, pc.x, pc.y, rr, ra, d, d1, pc.x-rr );
}
}
@@ -1991,25 +2121,26 @@ test_psplot( INT_T argc, char * argv[] )
C = atol( *argv++ );
S = atof( *argv++ );
X = L*L/(24*R);
-
-lprintf("%%! kvjfv\nsave\n0 setlinewidth\n");
-lprintf("/Times-BoldItalic findfont 16 scalefont setfont\n");
-lprintf("36 36 moveto (R=%0.3f X=%0.3f L=%0.3f S=%0.3f) show\n", easeR, X, L, S );
-/*lprintf("24 768 translate -90 rotate\n");*/
-lprintf("gsave\n72 72 translate\n");
-lprintf("%0.3f %0.3f scale\n", 72.0/S, 72.0/S );
-lprintf("%0.3f %0.3f moveto %0.3f %0.3f lineto stroke\n", 0.0, 0.0, L, 0.0 );
-lprintf("%0.3f %0.3f %0.3f 270.0 90.0 arc stroke\n", L/2.0, easeR+X, easeR );
-lprintf("%0.3f %0.3f %0.3f 0.0 360.0 arc stroke\n", 0.0, 0.0, 0.25 );
+
+ lprintf("%%! kvjfv\nsave\n0 setlinewidth\n");
+ lprintf("/Times-BoldItalic findfont 16 scalefont setfont\n");
+ lprintf("36 36 moveto (R=%0.3f X=%0.3f L=%0.3f S=%0.3f) show\n", easeR, X, L,
+ S );
+ /*lprintf("24 768 translate -90 rotate\n");*/
+ lprintf("gsave\n72 72 translate\n");
+ lprintf("%0.3f %0.3f scale\n", 72.0/S, 72.0/S );
+ lprintf("%0.3f %0.3f moveto %0.3f %0.3f lineto stroke\n", 0.0, 0.0, L, 0.0 );
+ lprintf("%0.3f %0.3f %0.3f 270.0 90.0 arc stroke\n", L/2.0, easeR+X, easeR );
+ lprintf("%0.3f %0.3f %0.3f 0.0 360.0 arc stroke\n", 0.0, 0.0, 0.25 );
q.x = q.y = 0.0;
- for (i=0;i<=C;i++) {
+ for (i=0; i<=C; i++) {
l = L*((DIST_T)i)/((DIST_T)C);
ComputeJoinPos( l, R, L, &rr, &ra, &p, &pc );
-lprintf("%0.3f %0.3f moveto %0.3f %0.3f lineto stroke\n", q.x, q.y, p.x, p.y );
+ lprintf("%0.3f %0.3f moveto %0.3f %0.3f lineto stroke\n", q.x, q.y, p.x, p.y );
q = p;
}
-lprintf("%0.3f %0.3f %0.3f 0.0 360.0 arc stroke\n", p.x, p.y, 0.25 );
-lprintf("grestore\nrestore\nshowpage\n%%Trailer\n%%Pages: 1\n");
+ lprintf("%0.3f %0.3f %0.3f 0.0 360.0 arc stroke\n", p.x, p.y, 0.25 );
+ lprintf("grestore\nrestore\nshowpage\n%%Trailer\n%%Pages: 1\n");
}
void Test_compute( INT_T argc, char * argv[] )
@@ -2039,7 +2170,7 @@ void Test_compute( INT_T argc, char * argv[] )
lprintf("ENDPT [%0.3f %0.3f] [%0.3f %0.3f]\n", q0.x, q0.y, q1.x, q1.y );
lprintf("CENTER [%0.3f %0.3f] [%0.3f %0.3f]\n", qc0.x, qc0.y, qc1.x, qc1.y );
lprintf("ComputeJoint( %0.3f %0.3f) { %0.3f %0.3f %0.3f } D0=%0.5f D1=%0.5f, D=%0.3f\n",
- r0, r1, easeR, easeL, e.x, e.d0, e.d1, d );
+ r0, r1, easeR, easeL, e.x, e.d0, e.d1, d );
}
void Test_findL( INT_T argc, char * argv[] )
@@ -2061,8 +2192,8 @@ void Test_findL( INT_T argc, char * argv[] )
main( INT_T argc, char * argv[] )
{
-INT_T flagX = 0;
-INT_T flagV = 0;
+ INT_T flagX = 0;
+ INT_T flagV = 0;
if (argc<1) {
lprintf("plot|compute\n");
Exit(1);
@@ -2072,15 +2203,15 @@ INT_T flagV = 0;
switch (argv[0][1]) {
case 'x':
flagX++;
- argc--;argv++;
+ argc--; argv++;
break;
case 'v':
flagV++;
- argc--;argv++;
+ argc--; argv++;
break;
default:
lprintf("Huh: %s\n", *argv );
- argc--;argv++;
+ argc--; argv++;
break;
}
}
diff --git a/app/bin/textnoteui.c b/app/bin/textnoteui.c
index ba255ea..40390bf 100644
--- a/app/bin/textnoteui.c
+++ b/app/bin/textnoteui.c
@@ -2,81 +2,55 @@
* View for the text note
*/
- /* XTrkCad - Model Railroad CAD
- * Copyright (C) 2018 Martin Fischer
- *
- * 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.
- */
-
+/* XTrkCad - Model Railroad CAD
+ * Copyright (C) 2018 Martin Fischer
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
#include "custom.h"
#include "dynstring.h"
#include "misc.h"
#include "note.h"
#include "param.h"
#include "shortentext.h"
-#include "track.h"
+#include "track.h"
-static struct extraDataNote_t noteDataInUI;
+struct {
+ coOrd pos;
+ int layer;
+ track_p trk;
+} textNoteData;
static paramTextData_t noteTextData = { 300, 150 };
-static paramFloatRange_t r_1000_1000 = { -1000.0, 1000.0, 80 };
-static paramData_t textEditPLs[] = {
+static paramFloatRange_t noRangeCheck = { 0.0, 0.0, 80, PDO_NORANGECHECK_HIGH | PDO_NORANGECHECK_LOW };
+static paramData_t textNotePLs[] = {
#define I_ORIGX (0)
- /*0*/ { PD_FLOAT, &noteDataInUI.pos.x, "origx", PDO_DIM, &r_1000_1000, N_("Position X") },
+ /*0*/ { PD_FLOAT, &textNoteData.pos.x, "origx", PDO_DIM|PDO_NOPREF, &noRangeCheck, N_("Position X") },
#define I_ORIGY (1)
- /*1*/ { PD_FLOAT, &noteDataInUI.pos.y, "origy", PDO_DIM, &r_1000_1000, N_("Position Y") },
+ /*1*/ { PD_FLOAT, &textNoteData.pos.y, "origy", PDO_DIM|PDO_NOPREF, &noRangeCheck, N_("Position Y") },
#define I_LAYER (2)
- /*2*/ { PD_DROPLIST, &noteDataInUI.layer, "layer", 0, I2VP(150), "Layer", 0 },
+ /*2*/ { PD_DROPLIST, &textNoteData.layer, "layer", PDO_NOPREF, I2VP(150), "Layer", 0 },
#define I_TEXT (3)
/*3*/ { PD_TEXT, NULL, "text", PDO_NOPREF, &noteTextData, N_("Note") }
};
-static paramGroup_t textEditPG = { "textEdit", 0, textEditPLs, COUNT( textEditPLs ) };
-static wWin_p textEditW;
+static paramGroup_t textNotePG = { "textNote", 0, textNotePLs, COUNT( textNotePLs ) };
+static wWin_p textNoteW;
-#define textEntry ((wText_p)textEditPLs[I_TEXT].control)
-
-extern BOOL_T inDescribeCmd;
-
-/**
- * Return the current text
- *
- */
-static void GetNoteTextData()
-{
- int len;
-
- if (noteDataInUI.noteData.text ) {
- MyFree(noteDataInUI.noteData.text);
- }
- len = wTextGetSize(textEntry);
- noteDataInUI.noteData.text = (char*)MyMalloc(len + 2);
- wTextGetText(textEntry, noteDataInUI.noteData.text, len);
- return;
-}
-
-/**
- * Check validity of entered text
- *
- * \return always TRUE for testing
- */
-BOOL_T
-IsValidText(char * text)
-{
- return(TRUE);
-}
+#define textEntry ((wText_p)textNotePLs[I_TEXT].control)
/**
@@ -88,26 +62,14 @@ IsValidText(char * text)
*/
static void
TextDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP)
+ paramGroup_p pg,
+ int inx,
+ void * valueP)
{
switch (inx) {
case I_ORIGX:
case I_ORIGY:
- UpdateText(&noteDataInUI, OR_NOTE, FALSE);
- break;
- case I_LAYER:
- UpdateText(&noteDataInUI, LY_NOTE, FALSE);
- break;
- case I_TEXT:
- /** TODO: this is never called, why doesn't text update trigger this callback? */
- GetNoteTextData();
- if (IsValidText(noteDataInUI.noteData.text)) {
- ParamDialogOkActive(&textEditPG, TRUE);
- } else {
- ParamDialogOkActive(&textEditPG, FALSE);
- }
+ // TODO: Redraw bitmap at new location
break;
default:
break;
@@ -121,11 +83,8 @@ TextDlgUpdate(
static void
TextEditCancel( wWin_p junk )
{
- if (inDescribeCmd) {
- UpdateText(&noteDataInUI, CANCEL_NOTE, FALSE);
- }
ResetIfNotSticky();
- wHide(textEditW);
+ wHide(textNoteW);
}
/**
@@ -138,9 +97,23 @@ TextEditCancel( wWin_p junk )
static void
TextEditOK(void *junk)
{
- GetNoteTextData();
- UpdateText(&noteDataInUI, OK_TEXT, FALSE);
- wHide(textEditW);
+ track_p trk = textNoteData.trk;
+ if ( trk == NULL ) {
+ // new note
+ trk = NewNote( -1, textNoteData.pos, OP_NOTETEXT );
+ }
+ struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
+ xx->pos = textNoteData.pos;
+ SetTrkLayer( trk, textNoteData.layer );
+
+ int len = wTextGetSize(textEntry);
+ MyFree( xx->noteData.text );
+ xx->noteData.text = (char*)MyMalloc(len + 2);
+ wTextGetText(textEntry, xx->noteData.text, len);
+
+ SetBoundingBox( trk, xx->pos, xx->pos );
+ DrawNewTrack( trk );
+ wHide(textNoteW);
ResetIfNotSticky();
SetFileChanged();
}
@@ -149,41 +122,34 @@ TextEditOK(void *junk)
/**
* Create the edit dialog for text notes.
- *
+ *
* \param trk IN selected note
* \param title IN dialog title
*/
static void
-CreateEditTextNote(track_p trk, char *title)
+CreateEditTextNote(char *title, char * textData )
{
- struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
-
// create the dialog if necessary
- if (!textEditW) {
- ParamRegister(&textEditPG);
- textEditW = ParamCreateDialog(&textEditPG,
- "",
- _("Done"), TextEditOK,
- TextEditCancel, TRUE, NULL,
- F_BLOCK,
- TextDlgUpdate);
+ if (!textNoteW) {
+ ParamRegister(&textNotePG);
+ textNoteW = ParamCreateDialog(&textNotePG,
+ "",
+ _("Done"), TextEditOK,
+ TextEditCancel, TRUE, NULL,
+ F_BLOCK,
+ TextDlgUpdate);
}
- wWinSetTitle(textEditPG.win, MakeWindowTitle(title));
-
- // initialize the dialog fields
- noteDataInUI.pos = xx->pos;
- noteDataInUI.layer = xx->layer;
- noteDataInUI.trk = trk;
+ wWinSetTitle(textNotePG.win, MakeWindowTitle(title));
wTextClear(textEntry);
- wTextAppend(textEntry, xx->noteData.text );
+ wTextAppend(textEntry, textData );
wTextSetReadonly(textEntry, FALSE);
- FillLayerList((wList_p)textEditPLs[I_LAYER].control);
- ParamLoadControls(&textEditPG);
-
+ FillLayerList((wList_p)textNotePLs[I_LAYER].control);
+ ParamLoadControls(&textNotePG);
+
// and show the dialog
- wShow(textEditW);
+ wShow(textNoteW);
}
/**
@@ -204,35 +170,39 @@ void DescribeTextNote(track_p trk, char * str, CSIZE_T len)
RemoveFormatChars(xx->noteData.text, noteText);
EllipsizeString(noteText, NULL, 80);
DynStringMalloc(&statusLine, 100);
-
- DynStringPrintf(&statusLine,
- _("Note: Layer=%d %-.80s"),
- GetTrkLayer(trk)+1,
- noteText );
+
+ DynStringPrintf(&statusLine,
+ _("Text Note(%d) Layer=%d %-.80s"),
+ GetTrkIndex(trk),
+ GetTrkLayer(trk)+1,
+ noteText );
strcpy(str, DynStringToCStr(&statusLine));
DynStringFree(&statusLine);
- MyFree(noteText);
-
- if (inDescribeCmd) {
- NoteStateSave(trk);
-
- CreateEditTextNote(trk, _("Update comment"));
+ if ( ! inDescribeCmd ) {
+ return;
}
+ textNoteData.pos = xx->pos;
+ textNoteData.layer = GetTrkLayer( trk );
+ textNoteData.trk = trk;
+
+ CreateEditTextNote(_("Update Text Note"), xx->noteData.text );
}
/**
* Show the UI for entering new text notes
- *
+ *
* \param xx Note object data
*/
-void NewTextNoteUI(track_p trk) {
- struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
+void NewTextNoteUI(coOrd pos )
+{
char *tmpPtrText = _("Replace this text with your note");
- xx->noteData.text = MyStrdup(tmpPtrText);
+ textNoteData.pos = pos;
+ textNoteData.layer = curLayer;
+ textNoteData.trk = NULL;
- CreateEditTextNote(trk, _("Create Text Note"));
+ CreateEditTextNote(_("Create Text Note"), tmpPtrText );
}
diff --git a/app/bin/track.c b/app/bin/track.c
index 7a69160..951eec3 100644
--- a/app/bin/track.c
+++ b/app/bin/track.c
@@ -1,5 +1,5 @@
/** \file track.c
- * Track
+ * Track
*/
/* XTrkCad - Model Railroad CAD
@@ -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 "ccurve.h"
@@ -33,15 +33,12 @@
#include "param.h"
#include "paths.h"
#include "track.h"
+#include "trackx.h"
+#include "trkendpt.h"
#include "misc.h"
#include "ctrain.h"
#include "common-ui.h"
-
-#ifndef TRACKDEP
-#ifndef FASTTRACK
-#include "trackx.h"
-#endif
-#endif
+#include "version.h"
#include <inttypes.h>
@@ -73,14 +70,20 @@ static int log_timedrawtracks = 0;
#define CLOSETOTHEEDGE (10) /**< minimum distance between paste position and edge of window */
+EXPORT DIST_T trackGauge;
+EXPORT DIST_T minLength = 0.1;
+EXPORT DIST_T connectDistance = 0.1;
+EXPORT ANGLE_T connectAngle = 1.0;
+EXPORT long twoRailScale = 16;
+
EXPORT wIndex_t trackCount;
EXPORT long drawEndPtV = 2;
EXPORT long drawUnconnectedEndPt = 0; /**< How do we draw Unconnected EndPts */
-EXPORT long centerDrawMode = FALSE; /**< flag to control drawing of circle centers */
+EXPORT long centerDrawMode =
+ FALSE; /**< flag to control drawing of circle centers */
-static BOOL_T exportingTracks = FALSE;
EXPORT signed char * pathPtr;
EXPORT int pathCnt = 0;
@@ -98,9 +101,6 @@ EXPORT coOrd descriptionOff;
EXPORT DIST_T roadbedWidth = 0.0;
EXPORT DIST_T roadbedLineWidth = 3.0/BASE_DPI;
-//EXPORT DIST_T minTrackRadius;
-//EXPORT DIST_T maxTrackGrade = 5.0;
-
static int suspendElevUpdates = FALSE;
static track_p * importTrack;
@@ -109,21 +109,23 @@ EXPORT BOOL_T onTrackInSplit = FALSE;
static BOOL_T inDrawTracks;
-static wBool_t bWriteEndPtDirectIndex = FALSE;
-
EXPORT wBool_t bFreeTrack = FALSE;
-#ifndef TRACKDEP
+EXPORT long colorTrack = 0;
+EXPORT long colorDraw = 0;
+
/*****************************************************************************
*
- *
+ *
*
*/
-EXPORT void ActivateTrack( track_cp trk) {
+EXPORT void ActivateTrack( track_cp trk)
+{
int inx = GetTrkType(trk);
- if (trackCmds( inx )->activate != NULL)
+ if (trackCmds( inx )->activate != NULL) {
trackCmds( inx )->activate (trk);
+ }
}
@@ -147,20 +149,21 @@ EXPORT DIST_T GetTrkDistance( track_cp trk, coOrd * pos )
/**
* Check whether the track passed as parameter is close to an existing piece. Track
* pieces that aren't visible (in a tunnel or on an invisble layer) can be ignored,
- * depending on flag. If there is a track closeby, the passed track is moved to that
+ * depending on flag. If there is a track closeby, the passed track is moved to that
* position. This implements the snap feature.
*
* \param fp IN/OUT the old and the new position
* \param complain IN show error message if there is no other piece of track
- * \param track IN
+ * \param track IN
* \param ignoreHidden IN decide whether hidden track is ignored or not
- * \return NULL if there is no track, pointer to track otherwise
+ * \return NULL if there is no track, pointer to track otherwise
*/
-EXPORT track_p OnTrack2( coOrd * fp, BOOL_T complain, BOOL_T track, BOOL_T ignoreHidden, track_p t )
+EXPORT track_p OnTrack2( coOrd * fp, BOOL_T complain, BOOL_T track,
+ BOOL_T ignoreHidden, track_p t )
{
track_p trk;
- DIST_T distance, closestDistance = 1000000;
+ DIST_T distance, closestDistance = DIST_INF;
track_p closestTrack = NULL;
coOrd p, closestPos, q0, q1;
@@ -170,30 +173,38 @@ EXPORT track_p OnTrack2( coOrd * fp, BOOL_T complain, BOOL_T track, BOOL_T ignor
q0.y -= 1.0;
q1.y += 1.0;
TRK_ITERATE( trk ) {
- if ( track && !IsTrack(trk) )
+ if ( track && !IsTrack(trk) ) {
continue;
- if (trk == t) continue;
+ }
+ if (trk == t) { continue; }
+ // Bounding box check
if (trk->hi.x < q0.x ||
- trk->lo.x > q1.x ||
- trk->hi.y < q0.y ||
- trk->lo.y > q1.y )
+ trk->lo.x > q1.x ||
+ trk->hi.y < q0.y ||
+ trk->lo.y > q1.y ) {
continue;
+ }
if ( ignoreHidden ) {
- if ( (!GetTrkVisible(trk)) && drawTunnel == DRAW_TUNNEL_NONE)
+ if ( (!GetTrkVisible(trk)) && drawTunnel == DRAW_TUNNEL_NONE) {
continue;
- if ( !GetLayerVisible( GetTrkLayer( trk ) ) )
+ }
+ if ( !GetLayerVisible( GetTrkLayer( trk ) ) ) {
continue;
+ }
}
+
p = *fp;
distance = trackCmds( GetTrkType(trk) )->distance( trk, &p );
- if (fabs(distance) <= fabs(closestDistance)) { //Make the last (highest) preferred
+ if (fabs(distance) <= fabs(
+ closestDistance)) { //Make the last (highest) preferred
closestDistance = distance;
closestTrack = trk;
closestPos = p;
}
}
- if (closestTrack && closestDistance <0 ) closestDistance = 0.0; //Turntable was closest - inside well
- if (closestTrack && ((closestDistance <= mainD.scale*0.25) || (closestDistance <= trackGauge*2.0) )) {
+ if (closestTrack && closestDistance <0 ) { closestDistance = 0.0; } //Turntable was closest - inside well
+ if (closestTrack && ((closestDistance <= mainD.scale*0.25)
+ || (closestDistance <= trackGauge*2.0) )) {
*fp = closestPos;
return closestTrack;
}
@@ -215,7 +226,9 @@ EXPORT track_p OnTrack( coOrd * fp, BOOL_T complain, BOOL_T track )
return OnTrack2( fp, complain, track, TRUE, NULL );
}
-EXPORT track_p OnTrackIgnore (coOrd * fp, BOOL_T complain, BOOL_T track, track_p t ) {
+EXPORT track_p OnTrackIgnore (coOrd * fp, BOOL_T complain, BOOL_T track,
+ track_p t )
+{
return OnTrack2(fp, complain, track, TRUE, t);
}
@@ -228,8 +241,9 @@ EXPORT BOOL_T CheckTrackLayer( track_p trk )
} else if (GetLayerModule( GetTrkLayer( trk ) ) ) {
ErrorMessage( MSG_CANT_MODIFY_MODULE_TRK );
return FALSE;
- } else
+ } else {
return TRUE;
+ }
}
EXPORT BOOL_T CheckTrackLayerSilent( track_p trk )
@@ -238,8 +252,9 @@ EXPORT BOOL_T CheckTrackLayerSilent( track_p trk )
return FALSE;
} else if (GetLayerModule( GetTrkLayer( trk ) ) ) {
return FALSE;
- } else
+ } else {
return TRUE;
+ }
}
/******************************************************************************
@@ -259,29 +274,32 @@ EXPORT void EnumerateTracks( void * unused )
BOOL_T content = FALSE;
TRK_ITERATE( trk ) {
- /*
+ /*
* process track piece if none are selected (list all) or if it is one of the
* selected pieces (list only selected )
*/
- if ((!selectedTrackCount || GetTrkSelected(trk)) && trackCmds(trk->type)->enumerate != NULL) {
- if (trackCmds(trk->type)->enumerate( trk )==TRUE) content = TRUE;
+ if ((!selectedTrackCount || GetTrkSelected(trk))
+ && trackCmds(trk->type)->enumerate != NULL) {
+ if (trackCmds(trk->type)->enumerate( trk )==TRUE) { content = TRUE; }
}
}
if (content == FALSE) {
wBeep();
- if (selectedTrackCount == 0)
+ if (selectedTrackCount == 0) {
InfoMessage(_("No track or structure pieces are present in layout"));
- else
+ } else {
InfoMessage(_("No track or structure pieces are selected"));
+ }
return;
}
EnumerateStart();
for (inx=1; inx<trackCmds_da.cnt; inx++)
- if (trackCmds(inx)->enumerate != NULL)
+ if (trackCmds(inx)->enumerate != NULL) {
trackCmds(inx)->enumerate( NULL );
+ }
EnumerateEnd();
}
@@ -294,32 +312,33 @@ EXPORT void EnumerateTracks( void * unused )
static void AbortNoTrack( void )
{
- AbortProg( "No Track Op called" );
+ CHECKMSG( FALSE, ( "No Track Op called" ) );
}
static trackCmd_t notrackCmds = {
- "NOTRACK",
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack,
- (void*)AbortNoTrack };
+ "NOTRACK",
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack,
+ (void*)AbortNoTrack
+};
EXPORT TRKTYP_T InitObject( trackCmd_t * cmds )
{
@@ -347,7 +366,6 @@ EXPORT void InitTrkTrack( void )
*/
-#ifndef FASTTRACK
EXPORT TRKINX_T GetTrkIndex( track_p trk )
{
@@ -356,14 +374,15 @@ EXPORT TRKINX_T GetTrkIndex( track_p trk )
EXPORT TRKTYP_T GetTrkType( track_p trk )
{
- ASSERT( trk->type != T_NOTRACK && !IsTrackDeleted(trk) );
+ CHECK( trk->type != T_NOTRACK && !IsTrackDeleted(trk) );
return trk->type;
}
EXPORT SCALEINX_T GetTrkScale( track_p trk )
{
- if ( trk )
+ if ( trk ) {
return (SCALEINX_T)trk->scale;
+ }
return 0;
}
@@ -377,6 +396,14 @@ EXPORT unsigned int GetTrkLayer( track_p trk )
return trk->layer;
}
+EXPORT tieData_t GetTrkTieData( track_p trk )
+{
+ if (!GetLayerUseDefault(GetTrkLayer(trk))) {
+ return GetLayerTieData(GetTrkLayer(trk));
+ }
+ return GetScaleTieData(GetTrkScale(trk));
+}
+
EXPORT void SetBoundingBox( track_p trk, coOrd hi, coOrd lo )
{
trk->hi.x = (float)hi.x;
@@ -399,7 +426,16 @@ EXPORT EPINX_T GetTrkEndPtCnt( track_cp trk )
return trk->endCnt;
}
-EXPORT struct extraDataBase_t * GetTrkExtraData( track_cp trk, TRKTYP_T trkType )
+
+EXPORT trkEndPt_p GetTrkEndPt(track_cp trk, EPINX_T ep )
+{
+ CHECK( ep < GetTrkEndPtCnt(trk) );
+ return EndPtIndex( trk->endPt, ep );
+}
+
+
+EXPORT struct extraDataBase_t * GetTrkExtraData( track_cp trk,
+ TRKTYP_T trkType )
{
//printf( "GTXD T%d TY%d\n", GetTrkIndex(trk), trkType );
if ( IsTrackDeleted(trk) ) {
@@ -408,65 +444,35 @@ EXPORT struct extraDataBase_t * GetTrkExtraData( track_cp trk, TRKTYP_T trkType
// - DoRegression to remove expected track
// - UndoStart / UndoDelete
// Anywhere else: needs investigation
- if ( bFreeTrack == FALSE )
+ if ( bFreeTrack == FALSE ) {
printf( "GetExtraData T%d is deleted!\n", trk->index );
+ }
return trk->extraData;
}
#ifdef CHECK_EXTRA_DATA
- ASSERT( trk->extraData );
- ASSERT( trk->type == trk->extraData->trkType );
- ASSERT( trkType == T_NOTRACK || trk->type == trkType );
+ CHECK( trk->extraData );
+ CHECK( trk->type == trk->extraData->trkType );
+ CHECK( trkType == T_NOTRACK || trk->type == trkType );
#endif
return trk->extraData;
}
-EXPORT void SetTrkEndPoint( track_p trk, EPINX_T ep, coOrd pos, ANGLE_T angle )
-{
- ASSERT( ep < trk->endCnt );
- if (trk->endPt[ep].track != NULL) {
- AbortProg( "setTrkEndPoint: endPt is connected" );
- }
- trk->endPt[ep].pos = pos;
- trk->endPt[ep].angle = angle;
-}
-
-EXPORT coOrd GetTrkEndPos( track_p trk, EPINX_T e )
-{
- ASSERT( e < trk->endCnt );
- return trk->endPt[e].pos;
-}
-
-EXPORT ANGLE_T GetTrkEndAngle( track_p trk, EPINX_T e )
-{
- ASSERT( e < trk->endCnt );
- return trk->endPt[e].angle;
-}
-EXPORT track_p GetTrkEndTrk( track_p trk, EPINX_T e )
+EXPORT void ResizeExtraData( track_p trk, CSIZE_T newSize )
{
- ASSERT( e < trk->endCnt );
- return trk->endPt[e].track;
+ trk->extraData = MyRealloc( trk->extraData, newSize );
+ trk->extraSize = newSize;
}
-EXPORT long GetTrkEndOption( track_p trk, EPINX_T e )
-{
- ASSERT( e < trk->endCnt );
- return trk->endPt[e].option;
-}
-
-EXPORT long SetTrkEndOption( track_p trk, EPINX_T e, long option )
-{
- ASSERT( e < trk->endCnt );
- return trk->endPt[e].option = option;
-}
EXPORT DIST_T GetTrkGauge(
- track_cp trk )
+ track_cp trk )
{
- if (trk)
+ if (trk) {
return GetScaleTrackGauge( GetTrkScale( trk ) );
- else
+ } else {
return trackGauge;
+ }
}
EXPORT int GetTrkWidth( track_p trk )
@@ -481,10 +487,11 @@ EXPORT void SetTrkWidth( track_p trk, int width )
EXPORT int GetTrkBits( track_p trk )
{
- if (trk)
+ if (trk) {
return trk->bits;
- else
+ } else {
return 0;
+ }
}
EXPORT int SetTrkBits( track_p trk, int bits )
@@ -505,105 +512,25 @@ EXPORT BOOL_T IsTrackDeleted( track_p trk )
{
return trk->deleted;
}
-#endif
-
-EXPORT void SetTrkEndElev( track_p trk, EPINX_T ep, int option, DIST_T height, char * station )
-{
- track_p trk1;
- EPINX_T ep1;
- trk->endPt[ep].elev.option = option;
- trk->endPt[ep].elev.cacheSet = FALSE;
- if (EndPtIsDefinedElev(trk,ep)) {
- trk->endPt[ep].elev.u.height = height;
- } else if (EndPtIsStationElev(trk,ep)) {
- if (station == NULL)
- station = "";
- trk->endPt[ep].elev.u.name = MyStrdup(station);
- }
- if ( (trk1=GetTrkEndTrk(trk, ep)) != NULL ) {
- ep1 = GetEndPtConnectedToMe( trk1, trk );
- if (ep1 >= 0) {
- trk1->endPt[ep1].elev.option = option;
- trk1->endPt[ep1].elev.u.height = height;
- if (EndPtIsDefinedElev(trk1,ep1))
- trk1->endPt[ep1].elev.u.height = height;
- else if (EndPtIsStationElev(trk,ep))
- trk1->endPt[ep1].elev.u.name = MyStrdup(station);
- }
- }
-}
-
-
-EXPORT void GetTrkEndElev( track_p trk, EPINX_T e, int *option, DIST_T *height )
-{
- *option = trk->endPt[e].elev.option;
- *height = trk->endPt[e].elev.u.height;
-}
-
-
-EXPORT int GetTrkEndElevUnmaskedMode( track_p trk, EPINX_T e )
-{
- return trk->endPt[e].elev.option;
-}
-
-
-EXPORT int GetTrkEndElevMode( track_p trk, EPINX_T e )
-{
- return trk->endPt[e].elev.option&ELEV_MASK;
-}
-
-
-EXPORT DIST_T GetTrkEndElevHeight( track_p trk, EPINX_T e )
-{
- ASSERT( EndPtIsDefinedElev(trk,e) );
- return trk->endPt[e].elev.u.height;
-}
-
-BOOL_T bCacheElev = TRUE;
-
-EXPORT BOOL_T GetTrkEndElevCachedHeight (track_p trk, EPINX_T e, DIST_T * height, DIST_T * grade)
-{
- if ( ! bCacheElev )
- return FALSE;
- if (trk->endPt[e].elev.cacheSet) {
- *height = trk->endPt[e].elev.cachedElev;
- *grade = trk->endPt[e].elev.cachedGrade;
- return TRUE;
- }
- return FALSE;
-}
-
-EXPORT void SetTrkEndElevCachedHeight ( track_p trk, EPINX_T e, DIST_T height, DIST_T grade)
-{
- trk->endPt[e].elev.cachedElev = height;
- trk->endPt[e].elev.cachedGrade = grade;
- trk->endPt[e].elev.cacheSet = TRUE;
-}
-
-
-EXPORT char * GetTrkEndElevStation( track_p trk, EPINX_T e )
-{
- ASSERT( EndPtIsStationElev(trk,e) );
- if ( trk->endPt[e].elev.u.name == NULL )
- return "";
- else
- return trk->endPt[e].elev.u.name;
-}
EXPORT void SetTrkEndPtCnt( track_p trk, EPINX_T cnt )
{
EPINX_T oldCnt = trk->endCnt;
trk->endCnt = cnt;
- if ((trk->endPt = MyRealloc( trk->endPt, trk->endCnt * sizeof trk->endPt[0] )) == NULL) {
- AbortProg("setTrkEndPtCnt: No memory" );
+ trk->endPt = MyRealloc( trk->endPt, EndPtSize(trk->endCnt) );
+ if (oldCnt < cnt) {
+ memset( GetTrkEndPt( trk, oldCnt ), 0, EndPtSize(cnt-oldCnt) );
+ for ( EPINX_T ep = oldCnt; ep<cnt; ep++ ) {
+ // Set .index to -1
+ SetEndPtTrack( GetTrkEndPt( trk, ep ), NULL );
+ }
}
- if (oldCnt < cnt)
- memset( &trk->endPt[oldCnt], 0, (cnt-oldCnt) * sizeof *trk->endPt );
}
+
/**
- * Set the layer for a track.
+ * Set the layer for a track.
*
* \param trk IN the layer to change the layer for
* \param layer IN the new layer for the track
@@ -612,10 +539,11 @@ void SetTrkLayer( track_p trk, int layer )
{
DecrementLayerObjects(trk->layer);
- if (useCurrentLayer)
+ if (useCurrentLayer) {
trk->layer = (unsigned int)curLayer;
- else
+ } else {
trk->layer = (unsigned int)layer;
+ }
IncrementLayerObjects(trk->layer);
}
@@ -636,8 +564,9 @@ EXPORT int ClrAllTrkBitsRedraw( int bits, wBool_t bRedraw )
if (trk->bits&bits) {
cnt++;
trk->bits &= ~bits;
- if ( bRedraw )
+ if ( bRedraw ) {
DrawNewTrack( trk );
+ }
}
}
return cnt;
@@ -650,9 +579,7 @@ EXPORT void SetTrkElev( track_p trk, int mode, DIST_T elev )
SetTrkBits( trk, TB_ELEVPATH );
trk->elev = elev;
trk->elevMode = mode;
- for (int i=0;i<trk->endCnt;i++) {
- trk->endPt[i].elev.cacheSet = FALSE;
- }
+ ClrEndPtElevCache( trk->endCnt, trk->endPt );
}
@@ -680,7 +607,7 @@ EXPORT void ClearElevPath( void )
EXPORT BOOL_T GetTrkOnElevPath( track_p trk, DIST_T * elev )
{
if (trk->bits&TB_ELEVPATH) {
- if ( elev ) *elev = trk->elev;
+ if ( elev ) { *elev = trk->elev; }
return TRUE;
} else {
return FALSE;
@@ -703,67 +630,23 @@ EXPORT void CopyAttributes( track_p src, track_p dst )
*/
-EXPORT BOOL_T WriteEndPt( FILE * f, track_cp trk, EPINX_T ep )
-{
- trkEndPt_p endPt = &trk->endPt[ep];
- BOOL_T rc = TRUE;
- long option;
-
- assert ( endPt != NULL );
- if (bWriteEndPtDirectIndex && endPt->index > 0) {
- rc &= fprintf( f, "\tT4 %d ", endPt->index )>0;
- } else if (endPt->track == NULL ||
- ( exportingTracks && !GetTrkSelected(endPt->track) ) ) {
- rc &= fprintf( f, "\tE4 " )>0;
- } else {
- rc &= fprintf( f, "\tT4 %d ", endPt->track->index )>0;
- }
- rc &= fprintf( f, "%0.6f %0.6f %0.6f", endPt->pos.x, endPt->pos.y, endPt->angle )>0;
- option = (endPt->option<<8) | (endPt->elev.option&0xFF);
- if ( option != 0 ) {
- rc &= fprintf( f, " %ld %0.6f %0.6f", option, endPt->elev.doff.x, endPt->elev.doff.y )>0;
- switch ( endPt->elev.option&ELEV_MASK ) {
- case ELEV_DEF:
- rc &= fprintf( f, " %0.6f ", endPt->elev.u.height )>0;
- break;
- case ELEV_STATION:
- rc &= fprintf( f, " \"%s\" ", PutTitle( endPt->elev.u.name ) )>0;
- break;
- default:
- rc &= fprintf( f, " 0.0 ")>0;
- }
- } else {
- rc &= fprintf( f, " 0 0.0 0.0 0.0 ")>0;
- }
- if ((endPt->elev.option&ELEV_MASK) == ELEV_DEF)
- rc &= fprintf( f, "%0.6f ",endPt->elev.u.height)>0;
- else
- rc &= fprintf( f, "0.0 ")>0;
- long elevVisible = (endPt->elev.option&ELEV_VISIBLE)?1:0;
- long elevType = endPt->elev.option&ELEV_MASK;
- long gapType = endPt->option;
- rc &= fprintf( f, "%ld %ld %ld ", elevVisible, elevType, gapType)>0;
- rc &= fprintf( f, "%0.6f ", trk->elev)>0;
- rc &= fprintf( f, "\n" )>0;
- return rc;
-}
-
-
EXPORT EPINX_T PickEndPoint( coOrd p, track_cp trk )
{
EPINX_T inx, i;
DIST_T d, dd;
coOrd pos;
- if (trk->endCnt <= 0)
+ if (trk->endCnt <= 0) {
return -1;
+ }
if ( onTrackInSplit && trk->endCnt > 2 ) {
- if (GetTrkType(trk) == T_TURNOUT)
+ if (GetTrkType(trk) == T_TURNOUT) {
return TurnoutPickEndPt( p, trk );
+ }
}
- d = FindDistance( p, trk->endPt[0].pos );
+ d = FindDistance( p, GetEndPtPos( trk->endPt ) );
inx = 0;
for ( i=1; i<trk->endCnt; i++ ) {
- pos = trk->endPt[i].pos;
+ pos = GetEndPtPos( EndPtIndex( trk->endPt, i ) );
dd=FindDistance(p, pos);
if (dd < d) {
d = dd;
@@ -774,29 +657,27 @@ EXPORT EPINX_T PickEndPoint( coOrd p, track_cp trk )
}
+/**
+ * Find an endpoint of trk that is close to coOrd p.
+ * Returns index of endpoint or displays a message
+ * and returns -1 if none found.
+ */
EXPORT EPINX_T PickUnconnectedEndPoint( coOrd p, track_cp trk )
{
- EPINX_T inx, i;
- DIST_T d=0, dd;
- coOrd pos;
- inx = -1;
+ EPINX_T inx;
- for ( i=0; i<trk->endCnt; i++ ) {
- if (trk->endPt[i].track == NULL) {
- pos = trk->endPt[i].pos;
- dd=FindDistance(p, pos);
- if (inx == -1 || dd <= d) {
- d = dd;
- inx = i;
- }
- }
- }
+ inx = PickUnconnectedEndPointSilent( p, trk );
- if (inx == -1)
+ if (inx == -1) {
ErrorMessage( MSG_NO_UNCONN_EP );
+ }
return inx;
}
+/**
+ * Find an endpoint of trk that is close to coOrd p.
+ * Returns index of endpoint or -1 if none found.
+ */
EXPORT EPINX_T PickUnconnectedEndPointSilent( coOrd p, track_cp trk )
{
EPINX_T inx, i;
@@ -805,8 +686,9 @@ EXPORT EPINX_T PickUnconnectedEndPointSilent( coOrd p, track_cp trk )
inx = -1;
for ( i=0; i<trk->endCnt; i++ ) {
- if (trk->endPt[i].track == NULL) {
- pos = trk->endPt[i].pos;
+ trkEndPt_p epp = EndPtIndex( trk->endPt, i );
+ if (GetEndPtTrack( epp ) == NULL) {
+ pos = GetEndPtPos( epp );
dd=FindDistance(p, pos);
if (inx == -1 || dd <= d) {
d = dd;
@@ -819,55 +701,85 @@ EXPORT EPINX_T PickUnconnectedEndPointSilent( coOrd p, track_cp trk )
}
+/**
+ * Connect all the end points to this track (trk0) that are close enough
+ * (distance and angle) to another track's unconnected endpoint.
+ */
+EXPORT void ConnectAllEndPts(track_p trk0)
+{
+ for (EPINX_T ep0 = 0; ep0 < GetTrkEndPtCnt(trk0); ep0++) {
+ // Skip if already connected
+ if (GetTrkEndTrk(trk0, ep0) != NULL) { continue; }
+
+ coOrd pos0 = GetTrkEndPos(trk0, ep0);
+ track_p trk2 = OnTrack2(&pos0, FALSE, TRUE, TRUE, trk0);
+
+ // Not near another track?
+ if (trk2 == NULL) { continue; }
+ EPINX_T ep2 = PickUnconnectedEndPointSilent(pos0, trk2);
+
+ // Close enough?
+ coOrd pos2 = GetTrkEndPos(trk2, ep2);
+ DIST_T distance = FindDistance(pos0, pos2);
+ if (distance > connectDistance) { continue; }
+
+ // Aligned?
+ ANGLE_T a = fabs(DifferenceBetweenAngles(
+ GetTrkEndAngle(trk0, ep0),
+ GetTrkEndAngle(trk2, ep2) + 180.0));
+ if (a > connectAngle) { continue; }
+
+ // Make the connection
+ ConnectTracks(trk0, ep0, trk2, ep2);
+ DrawNewTrack(trk2);
+ }
+}
EXPORT EPINX_T GetEndPtConnectedToMe( track_p trk, track_p me )
{
EPINX_T ep;
for (ep=0; ep<trk->endCnt; ep++)
- if (trk->endPt[ep].track == me)
+ if (GetEndPtTrack( EndPtIndex( trk->endPt, ep ) ) == me) {
return ep;
+ }
return -1;
}
-EXPORT EPINX_T GetNearestEndPtConnectedToMe( track_p trk, track_p me, coOrd pos) {
+EXPORT EPINX_T GetNearestEndPtConnectedToMe( track_p trk, track_p me,
+ coOrd pos)
+{
EPINX_T ep, found = -1;
DIST_T d = DIST_INF;
DIST_T dd;
- for (ep=0; ep<trk->endCnt; ep++) {
- if (trk->endPt[ep].track == me) {
- dd = FindDistance(pos,trk->endPt[ep].pos);
- if (dd<d) {
- found = ep;
- d = dd;
- }
+ for (ep=0; ep<trk->endCnt; ep++) {
+ trkEndPt_p epp = EndPtIndex( trk->endPt, ep );
+ if (GetEndPtTrack( epp ) == me) {
+ coOrd pos1 = GetEndPtPos( epp );
+ dd = FindDistance(pos, pos1 );
+ if (dd<d) {
+ found = ep;
+ d = dd;
}
}
- return found;
+ }
+ return found;
}
EXPORT void SetEndPts( track_p trk, EPINX_T cnt )
{
- EPINX_T inx;
-
-LOG1( log_readTracks, ( "SetEndPts( T%d, %d )\n", trk->index, cnt ) )
- if (cnt > 0 && tempEndPts_da.cnt != cnt) {
- InputError( "Incorrect number of End Points for track, read %d, expected %d.\n", FALSE, tempEndPts_da.cnt, cnt );
+ LOG1( log_readTracks, ( "SetEndPts( T%d, %d )\n", trk->index, cnt ) )
+ if (cnt > 0 && TempEndPtsCount() != cnt) {
+ InputError( "Incorrect number of End Points for track, read %d, expected %d.\n",
+ FALSE, TempEndPtsCount(), cnt );
return;
}
- if (tempEndPts_da.cnt) {
- trk->endPt = (trkEndPt_p)MyMalloc( tempEndPts_da.cnt * sizeof *trk->endPt );
- } else {
+ trk->endCnt = TempEndPtsCount();
+ if ( trk->endCnt <= 0 ) {
trk->endPt = NULL;
+ } else {
+ trk->endPt = (trkEndPt_p)memdup( TempEndPt(0), EndPtSize( trk->endCnt ) );
}
- for ( inx=0; inx<tempEndPts_da.cnt; inx++ ) {
- trk->endPt[inx].index = tempEndPts(inx).index;
- trk->endPt[inx].pos = tempEndPts(inx).pos;
- trk->endPt[inx].angle = tempEndPts(inx).angle;
- trk->endPt[inx].elev = tempEndPts(inx).elev;
- trk->endPt[inx].option = tempEndPts(inx).option;
- }
- trk->endCnt = tempEndPts_da.cnt;
}
@@ -875,8 +787,11 @@ EXPORT void MoveTrack( track_p trk, coOrd orig )
{
EPINX_T ep;
for (ep=0; ep<trk->endCnt; ep++) {
- trk->endPt[ep].pos.x += orig.x;
- trk->endPt[ep].pos.y += orig.y;
+ trkEndPt_p epp = EndPtIndex( trk->endPt, ep );
+ coOrd pos = GetEndPtPos( epp );
+ pos.x += orig.x;
+ pos.y += orig.y;
+ SetEndPt( epp, pos, GetEndPtAngle( epp ) );
}
trackCmds( trk->type )->move( trk, orig );
}
@@ -885,11 +800,14 @@ EXPORT void MoveTrack( track_p trk, coOrd orig )
EXPORT void RotateTrack( track_p trk, coOrd orig, ANGLE_T angle )
{
EPINX_T ep;
- if ( trackCmds( trk->type )->rotate == NULL )
- return;
+ if ( trackCmds( trk->type )->rotate == NULL ) {
+ return;
+ }
for (ep=0; ep<trk->endCnt; ep++) {
- Rotate( &trk->endPt[ep].pos, orig, angle );
- trk->endPt[ep].angle = NormalizeAngle( trk->endPt[ep].angle + angle );
+ trkEndPt_p epp = EndPtIndex( trk->endPt, ep );
+ coOrd pos = GetEndPtPos( epp );
+ Rotate( &pos, orig, angle );
+ SetEndPt( epp, pos, NormalizeAngle( GetEndPtAngle(epp) + angle ) );
}
trackCmds( trk->type )->rotate( trk, orig, angle );
}
@@ -898,11 +816,15 @@ EXPORT void RotateTrack( track_p trk, coOrd orig, ANGLE_T angle )
EXPORT void RescaleTrack( track_p trk, FLOAT_T ratio, coOrd shift )
{
EPINX_T ep;
- if ( trackCmds( trk->type )->rescale == NULL )
+ if ( trackCmds( trk->type )->rescale == NULL ) {
return;
+ }
for (ep=0; ep<trk->endCnt; ep++) {
- trk->endPt[ep].pos.x *= ratio;
- trk->endPt[ep].pos.y *= ratio;
+ trkEndPt_p epp = EndPtIndex( trk->endPt, ep );
+ coOrd pos = GetEndPtPos( epp );
+ pos.x *= ratio;
+ pos.y *= ratio;
+ SetEndPt( epp, pos, GetEndPtAngle(epp) );
}
trackCmds( trk->type )->rescale( trk, ratio );
MoveTrack( trk, shift );
@@ -910,9 +832,9 @@ EXPORT void RescaleTrack( track_p trk, FLOAT_T ratio, coOrd shift )
EXPORT void FlipPoint(
- coOrd * pos,
- coOrd orig,
- ANGLE_T angle )
+ coOrd * pos,
+ coOrd orig,
+ ANGLE_T angle )
{
Rotate( pos, orig, -angle );
pos->x = 2*orig.x - pos->x;
@@ -921,33 +843,35 @@ EXPORT void FlipPoint(
EXPORT void FlipTrack(
- track_p trk,
- coOrd orig,
- ANGLE_T angle )
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle )
{
EPINX_T ep;
- trkEndPt_t endPt;
for ( ep=0; ep<trk->endCnt; ep++ ) {
- FlipPoint( &trk->endPt[ep].pos, orig, angle );
- trk->endPt[ep].angle = NormalizeAngle( 2*angle - trk->endPt[ep].angle );
- }
- if ( trackCmds(trk->type)->flip )
+ trkEndPt_p epp = EndPtIndex( trk->endPt, ep );
+ coOrd pos1 = GetEndPtPos( epp );
+ FlipPoint( &pos1, orig, angle );
+ ANGLE_T angle1 = GetEndPtAngle( epp );
+ angle1 = NormalizeAngle( 2*angle - angle1 );
+ SetEndPt( epp, pos1, angle1 );
+ }
+ if ( trackCmds(trk->type)->flip ) {
trackCmds(trk->type)->flip( trk, orig, angle );
+ }
if ( QueryTrack( trk, Q_FLIP_ENDPTS ) ) {
- endPt = trk->endPt[0];
- trk->endPt[0] = trk->endPt[1];
- trk->endPt[1] = endPt;
+ SwapEndPts( trk->endPt, 0, 1 );
}
}
-EXPORT EPINX_T GetNextTrk(
- track_p trk1,
- EPINX_T ep1,
- track_p *Rtrk,
- EPINX_T *Rep,
- int mode )
+EXPORT EPINX_T GetNextTrk(
+ track_p trk1,
+ EPINX_T ep1,
+ track_p *Rtrk,
+ EPINX_T *Rep,
+ int mode )
{
EPINX_T ep, epCnt = GetTrkEndPtCnt(trk1), epRet=-1;
track_p trk;
@@ -955,21 +879,25 @@ EXPORT EPINX_T GetNextTrk(
*Rtrk = NULL;
*Rep = 0;
for (ep=0; ep<epCnt; ep++) {
- if (ep==ep1)
+ if (ep==ep1) {
continue;
+ }
trk = GetTrkEndTrk( trk1, ep );
if (trk==NULL) {
#ifdef LATER
- if (isElev)
+ if (isElev) {
epRet = ep;
+ }
#endif
continue;
}
if ( (mode&GNTignoreIgnore) &&
- ((trk1->endPt[ep].elev.option&ELEV_MASK)==ELEV_IGNORE))
+ ((GetTrkEndElevMode(trk1,ep) == ELEV_IGNORE)) ) {
continue;
- if (*Rtrk != NULL)
+ }
+ if (*Rtrk != NULL) {
return -1;
+ }
*Rtrk = trk;
*Rep = GetEndPtConnectedToMe( trk, trk1 );
epRet = ep;
@@ -978,46 +906,51 @@ EXPORT EPINX_T GetNextTrk(
}
EXPORT BOOL_T MakeParallelTrack(
- track_p trk,
- coOrd pos,
- DIST_T dist,
- DIST_T factor,
- track_p * newTrkR,
- coOrd * p0R,
- coOrd * p1R,
- BOOL_T track)
-{
- if ( trackCmds(trk->type)->makeParallel )
- return trackCmds(trk->type)->makeParallel( trk, pos, dist, factor, newTrkR, p0R, p1R, track);
+ track_p trk,
+ coOrd pos,
+ DIST_T dist,
+ DIST_T factor,
+ track_p * newTrkR,
+ coOrd * p0R,
+ coOrd * p1R,
+ BOOL_T track)
+{
+ if ( trackCmds(trk->type)->makeParallel ) {
+ return trackCmds(trk->type)->makeParallel( trk, pos, dist, factor, newTrkR, p0R,
+ p1R, track);
+ }
return FALSE;
}
EXPORT BOOL_T RebuildTrackSegs(
- track_p trk)
+ track_p trk)
{
- if (trackCmds(trk->type)->rebuildSegs)
+ if (trackCmds(trk->type)->rebuildSegs) {
return trackCmds(trk->type)->rebuildSegs(trk);
+ }
return FALSE;
}
EXPORT BOOL_T ReplayTrackData(
- track_p trk,
- void * data,
- long length)
+ track_p trk,
+ void * data,
+ long length)
{
- if (trackCmds(trk->type)->replayData)
- return trackCmds(trk->type)->replayData(trk,data,length);
- return FALSE;
+ if (trackCmds(trk->type)->replayData) {
+ return trackCmds(trk->type)->replayData(trk,data,length);
+ }
+ return FALSE;
}
EXPORT BOOL_T StoreTrackData(
- track_p trk,
- void ** data,
- long * length)
+ track_p trk,
+ void ** data,
+ long * length)
{
- if (trackCmds(trk->type)->storeData)
+ if (trackCmds(trk->type)->storeData) {
return trackCmds(trk->type)->storeData(trk,data,length);
- return FALSE;
+ }
+ return FALSE;
}
@@ -1029,19 +962,29 @@ EXPORT BOOL_T StoreTrackData(
*/
-
EXPORT track_p to_first = NULL;
-
EXPORT TRKINX_T max_index = 0;
EXPORT track_p * to_last = &to_first;
+EXPORT track_p GetFirstTrack()
+{
+ return to_first;
+}
+
+EXPORT track_p GetNextTrack( track_p trk )
+{
+ return trk->next;
+}
+
+
+
static struct {
- track_p first;
- track_p *last;
- wIndex_t count;
- wIndex_t changed;
- TRKINX_T max_index;
- } savedTrackState;
+ track_p first;
+ track_p *last;
+ wIndex_t count;
+ wIndex_t changed;
+ TRKINX_T max_index;
+} savedTrackState;
EXPORT void RenumberTracks( void )
@@ -1054,10 +997,10 @@ EXPORT void RenumberTracks( void )
}
-EXPORT track_p NewTrack( TRKINX_T index, TRKTYP_T type, EPINX_T endCnt, CSIZE_T extraSize )
+EXPORT track_p NewTrack( TRKINX_T index, TRKTYP_T type, EPINX_T endCnt,
+ CSIZE_T extraSize )
{
track_p trk;
- EPINX_T ep;
trk = (track_p ) MyMalloc( sizeof *trk );
*to_last = trk;
to_last = &trk->next;
@@ -1067,27 +1010,31 @@ EXPORT track_p NewTrack( TRKINX_T index, TRKTYP_T type, EPINX_T endCnt, CSIZE_T
} else if (max_index < index) {
max_index = index;
}
-LOG( log_track, 1, ( "NewTrack( T%d, t%d, E%d, X%ld)\n", index, type, endCnt, extraSize ) )
+ LOG( log_track, 1, ( "NewTrack( T%d, t%d, E%d, X%ld)\n", index, type, endCnt,
+ extraSize ) )
trk->index = index;
trk->type = type;
trk->layer = curLayer;
- trk->scale = (char)GetLayoutCurScale();
+ trk->scale = (char)GetLayerScale(curLayer); // (char)GetLayoutCurScale();
trk->bits = TB_VISIBLE;
trk->elevMode = ELEV_ALONE;
trk->elev = 0;
- trk->endCnt = endCnt;
trk->hi.x = trk->hi.y = trk->lo.x = trk->lo.y = (float)0.0;
+ trk->endCnt = endCnt;
if (endCnt) {
- trk->endPt = (trkEndPt_p)MyMalloc( endCnt * sizeof *trk->endPt );
- for ( ep = 0; ep < endCnt; ep++ )
- trk->endPt[ep].index = -1;
- } else
+ trk->endPt = (trkEndPt_p)MyMalloc( EndPtSize(endCnt) );
+ for ( EPINX_T ep = 0; ep<endCnt; ep++ ) {
+ SetEndPtTrack( GetTrkEndPt( trk, ep ), NULL );
+ }
+ } else {
trk->endPt = NULL;
+ }
if (extraSize) {
trk->extraData = (struct extraDataBase_t*)MyMalloc( extraSize );
trk->extraData->trkType = type;
- } else
+ } else {
trk->extraData = NULL;
+ }
trk->extraSize = extraSize;
UndoNew( trk );
trackCount++;
@@ -1101,10 +1048,12 @@ EXPORT void FreeTrack( track_p trk )
{
bFreeTrack = TRUE;
trackCmds(trk->type)->deleteTrk( trk );
- if (trk->endPt)
+ if (trk->endPt) {
MyFree(trk->endPt);
- if (trk->extraData)
+ }
+ if (trk->extraData) {
MyFree(trk->extraData);
+ }
MyFree(trk);
bFreeTrack = FALSE;
}
@@ -1133,7 +1082,7 @@ EXPORT track_p FindTrack( TRKINX_T index )
{
track_p trk;
TRK_ITERATE(trk) {
- if (trk->index == index) return trk;
+ if (trk->index == index) { return trk; }
}
return NULL;
}
@@ -1144,19 +1093,26 @@ EXPORT void ResolveIndex( void )
track_p trk;
EPINX_T ep;
TRK_ITERATE(trk) {
- LOG (log_track, 1, ( "ResNextTrack( T%d, t%d, E%d, X%ld)\n", trk->index, trk->type, trk->endCnt, trk->extraSize ));
- for (ep=0; ep<trk->endCnt; ep++)
- if (trk->endPt[ep].index >= 0) {
- trk->endPt[ep].track = FindTrack( trk->endPt[ep].index );
- if (trk->endPt[ep].track == NULL) {
- int rc = NoticeMessage( MSG_RESOLV_INDEX_BAD_TRK, _("Continue"), _("Quit"), trk->index, ep, trk->endPt[ep].index );
- if ( rc != 1 )
+ LOG (log_track, 1, ( "ResNextTrack( T%d, t%d, E%d, X%ld)\n", trk->index,
+ trk->type, trk->endCnt, trk->extraSize ));
+ for (ep=0; ep<trk->endCnt; ep++) {
+ trkEndPt_p epp = GetTrkEndPt( trk, ep );
+ TRKINX_T index = GetEndPtIndex( epp );
+ if (index >= 0) {
+ track_p track = FindTrack( index );
+ if (track == NULL) {
+ int rc = NoticeMessage( MSG_RESOLV_INDEX_BAD_TRK, _("Continue"), _("Quit"),
+ trk->index, ep, index );
+ if ( rc != 1 ) {
return;
+ }
}
+ SetEndPtTrack( epp, track );
}
- ResolveBlockTrack (trk);
- ResolveSwitchmotorTurnout (trk);
- }
+ }
+ ResolveBlockTrack (trk);
+ ResolveSwitchmotorTurnout (trk);
+ }
AuditTracks( "readTracks" );
}
@@ -1165,11 +1121,13 @@ EXPORT BOOL_T DeleteTrack( track_p trk, BOOL_T all )
{
EPINX_T i, ep2;
track_p trk2;
-LOG( log_track, 4, ( "DeleteTrack(T%d)\n", GetTrkIndex(trk) ) )
+ LOG( log_track, 4, ( "DeleteTrack(T%d)\n", GetTrkIndex(trk) ) )
if (all) {
if (!QueryTrack(trk,Q_CANNOT_BE_ON_END)) {
- for (i=0;i<trk->endCnt;i++) {
- if ((trk2=trk->endPt[i].track) != NULL) {
+ for (i=0; i<trk->endCnt; i++) {
+ trkEndPt_p epp = EndPtIndex( trk->endPt, i );
+ trk2 = GetEndPtTrack(epp);
+ if (trk2 != NULL) {
if (QueryTrack(trk2,Q_CANNOT_BE_ON_END)) {
DeleteTrack( trk2, FALSE );
}
@@ -1179,30 +1137,25 @@ LOG( log_track, 4, ( "DeleteTrack(T%d)\n", GetTrkIndex(trk) ) )
}
/* If Car, simulate Remove Car -> uncouple and mark deleted (no Undo) */
if (QueryTrack(trk,Q_ISTRAIN)) {
+ UncoupleCars( trk, 0 );
+ UncoupleCars( trk, 1 );
trk->deleted = TRUE;
- int dir;
- for (dir=0; dir<2; dir++) {
- if (GetTrkEndTrk(trk,dir)) {
- track_p car = GetTrkEndTrk(trk,dir);
- for (int dir2=0;dir2<2; dir2++) {
- if (car->endPt[dir2].track == trk) car->endPt[dir2].track = NULL;
- }
- trk->endPt[dir].track = NULL;
- }
- }
+ ClrTrkBits( trk, TB_SELECTED ); // Make sure we don't select a deleted car
return TRUE;
}
- for (i=0;i<trk->endCnt;i++) {
- if ((trk2=trk->endPt[i].track) != NULL) {
+ for (i=0; i<trk->endCnt; i++) {
+ trkEndPt_p epp = EndPtIndex( trk->endPt, i );
+ if ((trk2=GetEndPtTrack(epp)) != NULL) {
ep2 = GetEndPtConnectedToMe( trk2, trk );
DisconnectTracks( trk2, ep2, trk, i );
- if ( QueryTrack(trk,Q_CANNOT_BE_ON_END) )
+ if ( QueryTrack(trk,Q_CANNOT_BE_ON_END) ) {
UndoJoint( trk2, ep2, trk, i );
+ }
}
}
- CheckDeleteSwitchmotor( trk );
- CheckDeleteBlock( trk );
- CheckCarTraverse( trk );
+ CheckDeleteSwitchmotor( trk );
+ CheckDeleteBlock( trk );
+ CheckCarTraverse( trk );
DecrementLayerObjects(trk->layer);
trackCount--;
AuditTracks( "deleteTrack T%d", trk->index);
@@ -1242,18 +1195,27 @@ EXPORT void RestoreTrackState( void )
BOOL_T TrackIterate( track_p * trk )
{
track_p trk1;
- if (!*trk)
+ if (!*trk) {
trk1 = to_first;
- else
+ } else {
trk1 = (*trk)->next;
- while (trk1 && IsTrackDeleted(trk1))
+ }
+ while (trk1 && IsTrackDeleted(trk1)) {
trk1 = trk1->next;
+ }
*trk = trk1;
return trk1 != NULL;
}
-wBool_t IsPosClose( coOrd pos1, coOrd pos2 ) {
+/*****************************************************************************
+*
+* REGRESSION
+*
+*/
+
+wBool_t IsPosClose( coOrd pos1, coOrd pos2 )
+{
DIST_T d = FindDistance( pos1, pos2 );
return d < 0.1;
}
@@ -1262,8 +1224,9 @@ wBool_t IsPosClose( coOrd pos1, coOrd pos2 ) {
wBool_t IsAngleClose( ANGLE_T angle1, ANGLE_T angle2 )
{
ANGLE_T angle = NormalizeAngle( angle1 - angle2 );
- if (angle > 180)
+ if (angle > 180) {
angle = 360-angle;
+ }
return angle < 0.01;
}
@@ -1279,14 +1242,19 @@ wBool_t IsWidthClose( DIST_T dist1, DIST_T dist2 )
// width is computed by pixels/dpi
// problem is when widths are computed on platforms with differing dpi
DIST_T dist = fabs( dist1 - dist2 );
- if ( dist < 0.05 )
+ if ( dist < 0.05 ) {
return TRUE;
-// TODO: This assumes the demo file was written with DPI=72
-// Note: BASE_DPI is 75 so we fudge on dist (was < 0.01)
- dist1 *= mainD.dpi/BASE_DPI;
+ }
+// This was using BASE_DPI(=75.0) based on ancient monitors.
+// 96 DPI is more reasonable today
+// TODO: review BASE_DPI with a plan to change it to 96.0
+// printf( "WidthClose %s:%d D2:%0.3f D1:%0.3f", paramFileName, paramLineNum, dist2, dist1 );
+ dist1 *= mainD.dpi/96.0;
dist = fabs( dist1 - dist2 );
- if ( dist < 0.05 )
+// printf( " -> %0.3f D:%0.3f\n", dist1, dist );
+ if ( dist < 0.05 ) {
return TRUE;
+ }
return FALSE;
}
@@ -1304,17 +1272,17 @@ wBool_t IsColorClose( wDrawColor color1, wDrawColor color2 )
return (diff < 7);
}
-wBool_t CompareTrack( track_cp trk1, track_cp trk2 )
+static wBool_t CompareTrack( track_cp trk1, track_cp trk2 )
{
- wBool_t rc = FALSE;
+// wBool_t rc = FALSE;
if ( trk1 == NULL ) {
sprintf( message, "Compare: T%d not found\n", trk2->index );
return FALSE;
}
sprintf( message, "Compare T:%d - ", GetTrkIndex(trk1) );
char * cp = message+strlen(message);
- REGRESS_CHECK_INT( "Type", trk1, trk2, type )
- REGRESS_CHECK_INT( "Index", trk1, trk2, index )
+ REGRESS_CHECK_INT( "Type", trk1, trk2, type )
+ REGRESS_CHECK_INT( "Index", trk1, trk2, index )
REGRESS_CHECK_INT( "Layer", trk1, trk2, layer )
REGRESS_CHECK_INT( "Scale", trk1, trk2, scale )
REGRESS_CHECK_INT( "EndPtCnt", trk1, trk2, endCnt )
@@ -1323,25 +1291,139 @@ wBool_t CompareTrack( track_cp trk1, track_cp trk2 )
cp = cq;
sprintf( cp, "EP:%d - ", inx );
cp += strlen(cp);
- REGRESS_CHECK_POS( "Pos", trk1, trk2, endPt[inx].pos )
- REGRESS_CHECK_ANGLE( "Angle", trk1, trk2, endPt[inx].angle )
- int inx1 = trk1->endPt[inx].index;
- track_cp trk1x = GetTrkEndTrk( trk1, inx );
- if ( trk1x )
- inx1 = GetTrkIndex( trk1x );
- int inx2 = trk2->endPt[inx].index;
- if ( inx1 != inx2 ) {
- sprintf( cp, "Index: Actual` %d, Expected %d\n", inx1, inx2 );
+ if ( ! CompareEndPt( cp, trk1, trk2, inx ) ) {
return FALSE;
}
- REGRESS_CHECK_INT( "Option", trk1, trk2, endPt[inx].option )
}
- if ( trackCmds( GetTrkType( trk1 ) )->compare == NULL )
+ if ( trackCmds( GetTrkType( trk1 ) )->compare == NULL ) {
return TRUE;
+ }
return trackCmds( GetTrkType( trk1 ) )->compare( trk1, trk2 );
}
-
+EXPORT int CheckRegressionResult( long regressVersion,char * sFileName,
+ wBool_t bQuiet )
+{
+ wBool_t bWroteActualTracks = FALSE;
+ int nFail = 0;
+ FILE * fRegression = NULL;
+ char * sRegressionFile = NULL;
+ track_p to_first_save = to_first;
+ track_p* to_last_save = to_last;
+ MakeFullpath( &sRegressionFile, workingDir, "xtrkcad.regress", NULL );
+
+ while ( GetNextLine() ) {
+ if ( paramLine[0] == '#' ) {
+ continue;
+ }
+ // Read Expected track
+ to_first = NULL;
+ to_last = &to_first;
+ paramVersion = regressVersion;
+ if ( !ReadTrack( paramLine ) ) {
+ if ( paramFile == NULL ) {
+ return -1;
+ }
+ break;
+ }
+ if ( to_first == NULL ) {
+ // Something bad happened
+ break;
+ }
+ track_cp tExpected = to_first;
+ to_first = to_first_save;
+ // Find corresponding Actual track
+ track_cp tActual = FindTrack( GetTrkIndex( tExpected ) );
+ strcat( message, "Regression " );
+ if ( ! CompareTrack( tActual, tExpected ) ) {
+ nFail++;
+ // Actual doesn't match Expected
+ lprintf( " FAIL: %s\n", message);
+ fRegression = fopen( sRegressionFile, "a" );
+ if ( fRegression == NULL ) {
+ NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Regression"),
+ sRegressionFile, strerror(errno) );
+ break;
+ }
+ fprintf( fRegression, "REGRESSION FAIL %d\n",
+ PARAMVERSION );
+ fprintf( fRegression, "# %s - %d\n", sFileName, paramLineNum );
+ fprintf( fRegression, "# %s", message );
+ if ( !bWroteActualTracks ) {
+ // Print Actual tracks
+ fprintf( fRegression, "Actual Tracks\n" );
+ paramVersion = PARAMVERSION;
+ WriteTracks( fRegression, FALSE );
+ bWroteActualTracks = TRUE;
+ }
+ // Print Expected track
+ to_first = tExpected;
+ fprintf( fRegression, "Expected Track\n" );
+ WriteTracks( fRegression, FALSE );
+ fclose( fRegression );
+ strcat( message, "Continue test?" );
+ if ( ! bQuiet ) {
+ int rc = wNoticeEx( NT_ERROR, message, _("Stop"), _("Continue") );
+ if ( !rc ) {
+ while ( GetNextLine() &&
+ strncmp( paramLine, "REGRESSION END", 14 ) != 0 )
+ ;
+ break;
+ }
+ }
+ }
+ // Delete Expected track
+ to_first = tExpected;
+ to_last = &to_first;
+ FreeTrack( tExpected );
+ }
+ to_first = to_first_save;
+ to_last = to_last_save;
+ if ( strncmp( paramLine, "REGRESSION END", 14 ) != 0 ) {
+ InputError( "Expected REGRESSION END", TRUE );
+ }
+ return nFail;
+}
+
+
+/*****************************************************************************
+*
+* LAYER
+*
+*/
+
+/**
+ * @brief Add 1 to track layer numbers that are greater than or equal to New Layer
+ * @param newLayer
+*/
+EXPORT void TrackInsertLayer( int newLayer )
+{
+ track_p trk;
+
+ TRK_ITERATE( trk ) {
+ int layer = GetTrkLayer(trk);
+ if (layer >= newLayer) {
+ SetTrkLayer(trk, layer + 1);
+ }
+ }
+}
+
+/**
+* @brief Subtract 1 from track layer numbers that are greater than Removed Layer
+* @param removeLayer
+*/
+EXPORT void TrackDeleteLayer( int removeLayer )
+{
+ track_p trk;
+
+ TRK_ITERATE( trk ) {
+ int layer = GetTrkLayer(trk);
+ if (layer > removeLayer) {
+ SetTrkLayer(trk, layer - 1);
+ }
+ }
+}
+
/*****************************************************************************
*
* ABOVE / BELOW
@@ -1357,7 +1439,7 @@ static void ExciseSelectedTracks( track_p * pxtrk, track_p * pltrk )
ptrk = &(*ptrk)->next;
continue;
}
- ASSERT( !IsTrackDeleted(trk) );
+ CHECK( !IsTrackDeleted(trk) );
UndoModify( *ptrk );
UndoModify( trk );
*ptrk = trk->next;
@@ -1384,7 +1466,7 @@ EXPORT void SelectAbove( void * unused )
to_last = &ltrk->next;
}
UndoEnd();
- DrawSelectedTracks( &mainD );
+ DrawSelectedTracks( &mainD, false );
}
@@ -1405,14 +1487,18 @@ EXPORT void SelectBelow( void * unused )
GetBoundingBox( trk, &highest, &lowest );
} else {
GetBoundingBox( trk, &hi, &lo );
- if (highest.x < hi.x)
+ if (highest.x < hi.x) {
highest.x = hi.x;
- if (highest.y < hi.y)
+ }
+ if (highest.y < hi.y) {
highest.y = hi.y;
- if (lowest.x > lo.x)
+ }
+ if (lowest.x > lo.x) {
lowest.x = lo.x;
- if (lowest.y > lo.y)
+ }
+ if (lowest.y > lo.y) {
lowest.y = lo.y;
+ }
}
ClrTrkBits( trk, TB_SELECTED );
}
@@ -1426,15 +1512,15 @@ EXPORT void SelectBelow( void * unused )
}
-#include "bitmaps/top.xpm"
-#include "bitmaps/bottom.xpm"
+#include "bitmaps/top.xpm3"
+#include "bitmaps/bottom.xpm3"
EXPORT void InitCmdAboveBelow( void )
{
wIcon_p bm_p;
- bm_p = wIconCreatePixMap( top_xpm[iconSize] );
+ bm_p = wIconCreatePixMap( top_xpm3[iconSize] );
AddToolbarButton( "cmdAbove", bm_p, IC_SELECTED|IC_POPUP, SelectAbove, NULL );
- bm_p = wIconCreatePixMap( bottom_xpm[iconSize] );
+ bm_p = wIconCreatePixMap( bottom_xpm3[iconSize] );
AddToolbarButton( "cmdBelow", bm_p, IC_SELECTED|IC_POPUP, SelectBelow, NULL );
}
@@ -1465,38 +1551,40 @@ EXPORT BOOL_T ReadTrack( char * line )
return TRUE;
}
-if (bsearchRead) {
- if (sortedCmds == NULL) {
- sortedCmds = (trackCmd_t**)MyMalloc( (trackCmds_da.cnt-1) * sizeof *(trackCmd_t*)0 );
- for (inx=1; inx<trackCmds_da.cnt; inx++)
- sortedCmds[inx-1] = trackCmds(inx);
- qsort( sortedCmds, trackCmds_da.cnt-1, sizeof *(trackCmd_t**)0, CompareCmds );
- }
-
- lo = 0;
- hi = trackCmds_da.cnt-2;
- do {
- inx = (lo+hi)/2;
- cmp = strncmp( line, sortedCmds[inx]->name, strlen(sortedCmds[inx]->name) );
- if (cmp == 0) {
- return sortedCmds[inx]->read(line);
- } else if (cmp < 0) {
- hi = inx-1;
- } else {
- lo = inx+1;
- }
- } while ( lo <= hi );
-} else {
- for (inx=1; inx<trackCmds_da.cnt; inx++) {
- if (strncmp( line, trackCmds(inx)->name, strlen(trackCmds(inx)->name) ) == 0 ) {
- trackCmds(inx)->read( line );
- // Return TRUE means we found the object type and processed it
- // Any errors will be handled by the callee's:
- // Either skip the definition (ReadSegs) or skip the remainder of the file (InputError)
- return TRUE;
- }
+ if (bsearchRead) {
+ if (sortedCmds == NULL) {
+ sortedCmds = (trackCmd_t**)MyMalloc( (trackCmds_da.cnt-1) * sizeof *
+ (trackCmd_t*)0 );
+ for (inx=1; inx<trackCmds_da.cnt; inx++) {
+ sortedCmds[inx-1] = trackCmds(inx);
+ }
+ qsort( sortedCmds, trackCmds_da.cnt-1, sizeof *(trackCmd_t**)0, CompareCmds );
+ }
+
+ lo = 0;
+ hi = trackCmds_da.cnt-2;
+ do {
+ inx = (lo+hi)/2;
+ cmp = strncmp( line, sortedCmds[inx]->name, strlen(sortedCmds[inx]->name) );
+ if (cmp == 0) {
+ return sortedCmds[inx]->read(line);
+ } else if (cmp < 0) {
+ hi = inx-1;
+ } else {
+ lo = inx+1;
+ }
+ } while ( lo <= hi );
+ } else {
+ for (inx=1; inx<trackCmds_da.cnt; inx++) {
+ if (strncmp( line, trackCmds(inx)->name, strlen(trackCmds(inx)->name) ) == 0 ) {
+ trackCmds(inx)->read( line );
+ // Return TRUE means we found the object type and processed it
+ // Any errors will be handled by the callee's:
+ // Either skip the definition (ReadSegs) or skip the remainder of the file (InputError)
+ return TRUE;
+ }
+ }
}
-}
// Object type not found
return FALSE;
}
@@ -1506,16 +1594,19 @@ EXPORT BOOL_T WriteTracks( FILE * f, wBool_t bFull )
{
track_p trk;
BOOL_T rc = TRUE;
- if ( bFull )
+ if ( bFull ) {
RenumberTracks();
- if ( !bFull )
+ }
+ if ( !bFull ) {
bWriteEndPtDirectIndex = TRUE;
+ }
TRK_ITERATE( trk ) {
rc &= trackCmds(GetTrkType(trk))->write( trk, f );
}
bWriteEndPtDirectIndex = FALSE;
- if ( bFull )
+ if ( bFull ) {
rc &= WriteCars( f );
+ }
return rc;
}
@@ -1547,7 +1638,7 @@ EXPORT void ImportEnd( coOrd offset, wBool_t import, wBool_t inPlace )
// get the current mouse position
GetMousePosition( &x, &y );
mainD.Pix2CoOrd( &mainD, x, y, &pos );
-
+
// get the size of the drawing area
wDrawGetSize( mainD.d, &ww, &hh );
@@ -1562,11 +1653,11 @@ EXPORT void ImportEnd( coOrd offset, wBool_t import, wBool_t inPlace )
for ( trk=*importTrack; trk; trk=trk->next ) {
- ASSERT(!IsTrackDeleted(trk)); // Export ignores deleted tracks
- if (trk->hi.y > ymax ) ymax = trk->hi.y;
- if (trk->lo.y < ymin ) ymin = trk->lo.y;
- if (trk->hi.x > xmax ) xmax = trk->hi.x;
- if (trk->lo.x < xmin ) xmin = trk->lo.x;
+ CHECK(!IsTrackDeleted(trk)); // Export ignores deleted tracks
+ if (trk->hi.y > ymax ) { ymax = trk->hi.y; }
+ if (trk->lo.y < ymin ) { ymin = trk->lo.y; }
+ if (trk->hi.x > xmax ) { xmax = trk->hi.x; }
+ if (trk->lo.x < xmin ) { xmin = trk->lo.x; }
}
coOrd size = {xmax-xmin,ymax-ymin};
@@ -1593,7 +1684,7 @@ EXPORT void ImportEnd( coOrd offset, wBool_t import, wBool_t inPlace )
wDrawPix_t ox,oy;
mainD.CoOrd2Pix( &mainD, middle_object, &ox, &oy );
- if ((ox<0) || (ox>ww) || (oy<0) || (oy>hh) ) offscreen = TRUE;
+ if ((ox<0) || (ox>ww) || (oy<0) || (oy>hh) ) { offscreen = TRUE; }
to_firstOld = to_first;
to_first = *importTrack;
@@ -1604,7 +1695,7 @@ EXPORT void ImportEnd( coOrd offset, wBool_t import, wBool_t inPlace )
// move the imported track into place
for ( trk=*importTrack; trk; trk=trk->next ) {
- ASSERT( !IsTrackDeleted(trk) );
+ CHECK( !IsTrackDeleted(trk) );
coOrd move;
move.x = offset.x;
move.y = offset.y;
@@ -1612,7 +1703,7 @@ EXPORT void ImportEnd( coOrd offset, wBool_t import, wBool_t inPlace )
trk->bits |= TB_SELECTED;
DrawTrack( trk, &mainD, wDrawColorBlack );
}
- importTrack = NULL;
+ importTrack = NULL;
trackCount = trackCountOld;
InfoCount( trackCount );
// Pan screen if needed to center of new
@@ -1625,21 +1716,23 @@ EXPORT void ImportEnd( coOrd offset, wBool_t import, wBool_t inPlace )
/*******
* Move Selected Tracks to origin zero and write out
*******/
-EXPORT BOOL_T ExportTracks( FILE * f, coOrd * offset)
+EXPORT BOOL_T ExportTracks( FILE * f, coOrd * offset )
{
track_p trk;
coOrd xlat,orig;
-
- exportingTracks = TRUE;
+
+ bWriteEndPtExporting = TRUE;
orig = mapD.size;
max_index = 0;
TRK_ITERATE(trk) {
if ( GetTrkSelected(trk) ) {
- if (QueryTrack(trk,Q_ISTRAIN)) continue; //Don't bother with CARs
- if (trk->lo.x < orig.x)
+ if (QueryTrack(trk,Q_ISTRAIN)) { continue; } //Don't bother with CARs
+ if (trk->lo.x < orig.x) {
orig.x = trk->lo.x;
- if (trk->lo.y < orig.y)
+ }
+ if (trk->lo.y < orig.y) {
orig.y = trk->lo.y;
+ }
trk->index = ++max_index;
}
}
@@ -1650,14 +1743,14 @@ EXPORT BOOL_T ExportTracks( FILE * f, coOrd * offset)
xlat.y = - orig.y;
TRK_ITERATE( trk ) {
if ( GetTrkSelected(trk) ) {
- if (QueryTrack(trk,Q_ISTRAIN)) continue; //Don't bother with CARs
+ if (QueryTrack(trk,Q_ISTRAIN)) { continue; } //Don't bother with CARs
MoveTrack( trk, xlat );
trackCmds(GetTrkType(trk))->write( trk, f );
MoveTrack( trk, orig );
}
}
RenumberTracks();
- exportingTracks = FALSE;
+ bWriteEndPtExporting = FALSE;
return TRUE;
}
@@ -1689,7 +1782,8 @@ static void AuditPrint( char * msg )
auditFile = fopen( path, "a+" );
free(path);
if (auditFile == NULL) {
- NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Audit"), message, strerror(errno) );
+ NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Audit"), message,
+ strerror(errno) );
auditIgnore = TRUE;
return;
}
@@ -1701,12 +1795,14 @@ static void AuditPrint( char * msg )
}
fprintf(auditFile, "# " );
fprintf(auditFile, "%s", msg );
- if (auditIgnore)
+ if (auditIgnore) {
return;
+ }
NoticeMessage( MSG_AUDIT_PRINT_MSG, _("Ok"), NULL, msg );
if (++auditCount>10) {
- if (NoticeMessage( MSG_AUDIT_PRINT_IGNORE, _("Yes"), _("No") ) )
+ if (NoticeMessage( MSG_AUDIT_PRINT_IGNORE, _("Yes"), _("No") ) ) {
auditIgnore = TRUE;
+ }
auditCount = 0;
}
}
@@ -1715,7 +1811,7 @@ static void AuditPrint( char * msg )
EXPORT void CheckTrackLength( track_cp trk )
{
DIST_T dist;
-
+
if (trackCmds(trk->type)->getLength) {
dist = trackCmds(trk->type)->getLength( trk );
} else {
@@ -1745,7 +1841,7 @@ EXPORT void AuditTracks( char * event, ... )
*msgp++ = '\n';
trackCount = 0;
- for (i=0;i<sizeof used;i++) {
+ for (i=0; i<sizeof used; i++) {
used[i] = 0;
}
if (*to_last) {
@@ -1764,8 +1860,9 @@ EXPORT void AuditTracks( char * event, ... )
AuditPrint( msg );
}
if ((auditCmd = trackCmds( trk->type )->audit) != NULL) {
- if (!auditCmd( trk, msgp ))
+ if (!auditCmd( trk, msgp )) {
AuditPrint( msg );
+ }
}
if (trk->index < 8*sizeof used) {
if (BIT_SET(used,trk->index)) {
@@ -1775,18 +1872,21 @@ EXPORT void AuditTracks( char * event, ... )
SET_BIT(used, trk->index);
}
for (i=0; i<trk->endCnt; i++) {
- if ( (tn = trk->endPt[i].track) != NULL ) {
+ trkEndPt_p epp = EndPtIndex( trk->endPt, i );
+ if ( (tn = GetEndPtTrack(epp)) != NULL ) {
if (IsTrackDeleted(tn)) {
sprintf( msgp, "T%d[%d]: T%d is deleted\n", trk->index, i, tn->index );
AuditPrint( msg );
- trk->endPt[i].track = NULL;
+ SetEndPtTrack( epp, NULL );
} else {
- for (j=0;j<tn->endCnt;j++)
- if (tn->endPt[j].track == trk)
+ for (j=0; j<tn->endCnt; j++) {
+ if (GetEndPtTrack( EndPtIndex( tn->endPt, j ) ) == trk) {
goto nextEndPt;
+ }
+ }
sprintf( msgp, "T%d[%d]: T%d doesn\'t point back\n", trk->index, i, tn->index );
AuditPrint( msg );
- trk->endPt[i].track = NULL;
+ SetEndPtTrack( epp, NULL );
}
}
nextEndPt:;
@@ -1794,28 +1894,29 @@ nextEndPt:;
if (!trk->next) {
if (to_last != &trk->next) {
sprintf( msgp, "last track (T%d @ "SLOG_FMT") is not to_last ("SLOG_FMT")\n",
- trk->index, (uintptr_t)trk, (uintptr_t)to_last );
+ trk->index, (uintptr_t)trk, (uintptr_t)to_last );
AuditPrint( msg );
}
}
}
InfoCount( trackCount );
if (auditFile != NULL) {
- if (auditStop)
- if (NoticeMessage( MSG_AUDIT_WRITE_FILE, _("Yes"), _("No"))) {
- fprintf( auditFile, "# before undo\n" );
- WriteTracks(auditFile, TRUE);
- Rdump( auditFile );
- if (strcmp("undoUndo",event)==0) {
- fprintf( auditFile, "# failure in undo\n" );
- } else {
- UndoUndo( NULL );
- if ( undoStatus ) {
- fprintf( auditFile, "# after undo\n" );
- WriteTracks(auditFile, TRUE);
- Rdump( auditFile );
+ if (auditStop) {
+ if (NoticeMessage( MSG_AUDIT_WRITE_FILE, _("Yes"), _("No"))) {
+ fprintf( auditFile, "# before undo\n" );
+ WriteTracks(auditFile, TRUE);
+ Rdump( auditFile );
+ if (strcmp("undoUndo",event)==0) {
+ fprintf( auditFile, "# failure in undo\n" );
} else {
- fprintf( auditFile, "# undo stack is empty\n" );
+ UndoUndo( NULL );
+ if ( undoStatus ) {
+ fprintf( auditFile, "# after undo\n" );
+ WriteTracks(auditFile, TRUE);
+ Rdump( auditFile );
+ } else {
+ fprintf( auditFile, "# undo stack is empty\n" );
+ }
}
}
}
@@ -1842,100 +1943,26 @@ EXPORT void ComputeBoundingBox( track_p trk )
{
EPINX_T i;
- if (trk->endCnt <= 0)
- AbortProg("computeBoundingBox - endCnt<=0");
+ CHECK( trk->endCnt > 0 );
- trk->hi.x = trk->lo.x = (float)trk->endPt[0].pos.x;
- trk->hi.y = trk->lo.y = (float)trk->endPt[0].pos.y;
+ coOrd pos = GetEndPtPos( trk->endPt );
+ trk->hi.x = trk->lo.x = (float)pos.x;
+ trk->hi.y = trk->lo.y = (float)pos.y;
for ( i=1; i<trk->endCnt; i++ ) {
- if (trk->endPt[i].pos.x > trk->hi.x)
- trk->hi.x = (float)trk->endPt[i].pos.x;
- if (trk->endPt[i].pos.y > trk->hi.y)
- trk->hi.y = (float)trk->endPt[i].pos.y;
- if (trk->endPt[i].pos.x < trk->lo.x)
- trk->lo.x = (float)trk->endPt[i].pos.x;
- if (trk->endPt[i].pos.y < trk->lo.y)
- trk->lo.y = (float)trk->endPt[i].pos.y;
- }
-}
-
-
-
-EXPORT DIST_T EndPtDescriptionDistance(
- coOrd pos,
- track_p trk,
- EPINX_T ep,
- coOrd *dpos,
- BOOL_T show_hidden,
- BOOL_T * hidden)
-{
- elev_t *e;
- coOrd pos1;
- track_p trk1;
- *dpos = pos;
- if (hidden) *hidden = FALSE;
- e = &trk->endPt[ep].elev;
- if ((e->option&ELEV_MASK)==ELEV_NONE)
- return DIST_INF;
- if (((e->option&ELEV_VISIBLE)==0) && !show_hidden)
- return DIST_INF;
- if ((trk1=GetTrkEndTrk(trk,ep)) && GetTrkIndex(trk1)<GetTrkIndex(trk))
- return DIST_INF;
- if ((e->option&ELEV_VISIBLE)==0) { //Hidden - disregard offset
- if (hidden) *hidden = TRUE;
- return FindDistance( GetTrkEndPos(trk,ep), pos );
- }
- /*REORIGIN( pos1, e->doff, GetTrkEndPos(trk,ep), GetTrkEndAngle(trk,ep) );*/
- pos1 = GetTrkEndPos(trk,ep);
- coOrd tpos = pos1;
- pos1.x += e->doff.x;
- pos1.y += e->doff.y;
- *dpos = pos1;
- if (hidden) *hidden = !(e->option&ELEV_VISIBLE);
- if (FindDistance(tpos,pos)<FindDistance( pos1, pos ))
- return FindDistance(tpos,pos);
- return FindDistance( pos1, pos );
-}
-
-
-EXPORT STATUS_T EndPtDescriptionMove(
- track_p trk,
- EPINX_T ep,
- wAction_t action,
- coOrd pos )
-{
- static coOrd p0, p1;
- elev_t *e, *e1;
- track_p trk1;
-
- e = &trk->endPt[ep].elev;
- switch (action) {
- case C_DOWN:
- p0 = GetTrkEndPos(trk,ep);
- p1 = pos;
- e->option |= ELEV_VISIBLE; //Make sure we make visible
- DrawEndElev( &mainD, trk, ep, wDrawColorWhite );
- /*no break*/
- case C_MOVE:
- case C_UP:
- p1 = pos;
- e->doff.x = (pos.x-p0.x);
- e->doff.y = (pos.y-p0.y);
- if ((trk1=GetTrkEndTrk(trk,ep))) {
- e1 = &trk1->endPt[GetEndPtConnectedToMe(trk1,trk)].elev;
- e1->doff = e->doff;
+ pos = GetEndPtPos( EndPtIndex( trk->endPt, i ) );
+ if (pos.x > trk->hi.x) {
+ trk->hi.x = (float)pos.x;
}
- if ( action == C_UP ) {
- wDrawColor color = GetTrkColor( trk, &mainD );
- DrawEndElev( &mainD, trk, ep, color );
+ if (pos.y > trk->hi.y) {
+ trk->hi.y = (float)pos.y;
+ }
+ if (pos.x < trk->lo.x) {
+ trk->lo.x = (float)pos.x;
+ }
+ if (pos.y < trk->lo.y) {
+ trk->lo.y = (float)pos.y;
}
- return action==C_UP?C_TERMINATE:C_CONTINUE;
-
- case C_REDRAW:
- DrawEndElev( &tempD, trk, ep, drawColorPreviewSelected );
- break;
}
- return C_CONTINUE;
}
@@ -1946,119 +1973,118 @@ EXPORT STATUS_T EndPtDescriptionMove(
*/
-static DIST_T distanceEpsilon = 0.0;
-static ANGLE_T angleEpsilon = 0.0;
+//static DIST_T distanceEpsilon = 0.0;
+//static ANGLE_T angleEpsilon = 0.0;
-EXPORT void LoosenTracks( void * unused )
+EXPORT int ConnectTracks( track_p trk0, EPINX_T inx0, track_p trk1,
+ EPINX_T inx1 )
{
- track_p trk, trk1;
- EPINX_T ep0, ep1;
- ANGLE_T angle0, angle1;
- coOrd pos0, pos1;
DIST_T d;
ANGLE_T a;
- int count;
+ coOrd pos0, pos1;
+ trkEndPt_p epp0 = EndPtIndex( trk0->endPt, inx0 );
+ trkEndPt_p epp1 = EndPtIndex( trk1->endPt, inx1 );
- count = 0;
- TRK_ITERATE(trk) {
- for (ep0=0; ep0<trk->endCnt; ep0++) {
- trk1 = GetTrkEndTrk( trk, ep0 );
- if (trk1 == NULL)
- continue;
- ASSERT( !IsTrackDeleted(trk1) );
- ep1 = GetEndPtConnectedToMe( trk1, trk );
- if (ep1 < 0)
- continue;
- pos0 = GetTrkEndPos( trk, ep0 );
- pos1 = GetTrkEndPos( trk1, ep1 );
- angle0 = GetTrkEndAngle( trk, ep0 );
- angle1 = GetTrkEndAngle( trk1, ep1 );
- d = FindDistance( pos0, pos1 );
- a = NormalizeAngle( 180+angle0-angle1+angleEpsilon );
- if (d > distanceEpsilon || a > angleEpsilon*2.0) {
- DisconnectTracks( trk, ep0, trk1, ep1 );
- count++;
- InfoMessage( _("%d Track(s) loosened"), count );
- }
+ if (QueryTrack(trk0,Q_ISTRAIN)) {
+ if (!QueryTrack(trk1,Q_ISTRAIN)) {
+ NoticeMessage( _("Connecting a car to a non-car T%d T%d"), _("Continue"), NULL,
+ GetTrkIndex(trk0), GetTrkIndex(trk1) );
+ return -1;
}
+ SetEndPtTrack( epp0, trk1 );
+ SetEndPtTrack( epp1, trk0 );
+ return 0;
}
- if (count)
- MainRedraw(); // LoosenTracks
- else
- InfoMessage(_("No tracks loosened"));
-}
-
-EXPORT int ConnectTracks( track_p trk0, EPINX_T inx0, track_p trk1, EPINX_T inx1 )
-{
- DIST_T d;
- ANGLE_T a;
- coOrd pos0, pos1;
if ( !IsTrack(trk0) ) {
- NoticeMessage( _("Connecting a non-track(%d) to (%d)"), _("Continue"), NULL, GetTrkIndex(trk0), GetTrkIndex(trk1) );
+ NoticeMessage( _("Connecting a non-track(%d) to (%d)"), _("Continue"), NULL,
+ GetTrkIndex(trk0), GetTrkIndex(trk1) );
return -1;
}
if ( !IsTrack(trk1) ) {
- NoticeMessage( _("Connecting a non-track(%d) to (%d)"), _("Continue"), NULL, GetTrkIndex(trk1), GetTrkIndex(trk0) );
+ NoticeMessage( _("Connecting a non-track(%d) to (%d)"), _("Continue"), NULL,
+ GetTrkIndex(trk1), GetTrkIndex(trk0) );
return -1;
}
- pos0 = trk0->endPt[inx0].pos;
- pos1 = trk1->endPt[inx1].pos;
-LOG( log_track, 3, ( "ConnectTracks( T%d[%d] @ [%0.3f, %0.3f] = T%d[%d] @ [%0.3f %0.3f]\n", trk0->index, inx0, pos0.x, pos0.y, trk1->index, inx1, pos1.x, pos1.y ) )
+ pos0 = GetEndPtPos( epp0 );
+ pos1 = GetEndPtPos( epp1 );
+ LOG( log_track, 3,
+ ( "ConnectTracks( T%d[%d] @ [%0.3f, %0.3f] = T%d[%d] @ [%0.3f %0.3f]\n",
+ trk0->index, inx0, pos0.x, pos0.y, trk1->index, inx1, pos1.x, pos1.y ) )
d = FindDistance( pos0, pos1 );
- a = fabs(DifferenceBetweenAngles( trk0->endPt[inx0].angle,
- trk1->endPt[inx1].angle + 180.0 ));
+ a = fabs(DifferenceBetweenAngles( GetEndPtAngle(epp0),
+ GetEndPtAngle(epp1) + 180.0 ));
if (d > connectDistance || (a > connectAngle ) ) {
LOG( log_endPt, 1, ( "connectTracks: T%d[%d] T%d[%d] d=%0.3f a=%0.3f\n",
- trk0->index, inx0, trk1->index, inx1, d, a ) );
- NoticeMessage( MSG_CONNECT_TRK, _("Continue"), NULL, trk0->index, inx0, trk1->index, inx1, d, a );
+ trk0->index, inx0, trk1->index, inx1, d, a ) );
+ NoticeMessage( MSG_CONNECT_TRK, _("Continue"), NULL, trk0->index, inx0,
+ trk1->index, inx1, d, a );
return -1; /* Stop connecting out of alignment tracks! */
}
UndoModify( trk0 );
UndoModify( trk1 );
- if (!suspendElevUpdates)
+ if (!suspendElevUpdates) {
SetTrkElevModes( TRUE, trk0, inx0, trk1, inx1 );
- trk0->endPt[inx0].track = trk1;
- trk1->endPt[inx1].track = trk0;
- AuditTracks( "connectTracks T%d[%d], T%d[%d]", trk0->index, inx0, trk1->index, inx1 );
+ }
+ SetEndPtTrack( epp0, trk1 );
+ SetEndPtTrack( epp1, trk0 );
+ AuditTracks( "connectTracks T%d[%d], T%d[%d]", trk0->index, inx0, trk1->index,
+ inx1 );
return 0;
}
-EXPORT void DisconnectTracks( track_p trk1, EPINX_T ep1, track_p trk2, EPINX_T ep2 )
+EXPORT void DisconnectTracks( track_p trk1, EPINX_T ep1, track_p trk2,
+ EPINX_T ep2 )
{
- if (trk1->endPt[ep1].track != trk2 ||
- trk2->endPt[ep2].track != trk1 )
- AbortProg("disconnectTracks: tracks not connected" );
+ trkEndPt_p epp1 = EndPtIndex( trk1->endPt, ep1 );
+ trkEndPt_p epp2 = EndPtIndex( trk2->endPt, ep2 );
+ // Check tracks are connected
+ CHECK( GetEndPtTrack(epp1) == trk2 );
+ CHECK( GetEndPtTrack(epp2) == trk1 );
+ if (QueryTrack(trk1,Q_ISTRAIN)) {
+ if (!QueryTrack(trk2,Q_ISTRAIN)) {
+ NoticeMessage( _("Disconnecting a car from a non-car T%d T%d"), _("Continue"),
+ NULL, GetTrkIndex(trk1), GetTrkIndex(trk2) );
+ return;
+ }
+ SetEndPtTrack( epp1, NULL );
+ SetEndPtTrack( epp2, NULL );
+ return;
+ }
+
UndoModify( trk1 );
UndoModify( trk2 );
- trk1->endPt[ep1].track = NULL;
- trk2->endPt[ep2].track = NULL;
- if (!suspendElevUpdates)
+ SetEndPtTrack( epp1, NULL );
+ SetEndPtTrack( epp2, NULL );
+ if (!suspendElevUpdates) {
SetTrkElevModes( FALSE, trk1, ep1, trk2, ep2 );
+ }
}
EXPORT BOOL_T ConnectAbuttingTracks(
- track_p trk0,
- EPINX_T ep0,
- track_p trk1,
- EPINX_T ep1 )
+ track_p trk0,
+ EPINX_T ep0,
+ track_p trk1,
+ EPINX_T ep1 )
{
DIST_T d;
ANGLE_T a;
d = FindDistance( GetTrkEndPos(trk0,ep0),
- GetTrkEndPos(trk1,ep1 ) );
+ GetTrkEndPos(trk1,ep1 ) );
a = NormalizeAngle( GetTrkEndAngle(trk0,ep0) -
- GetTrkEndAngle(trk1,ep1) +
- (180.0+connectAngle/2.0) );
- if ( a < connectAngle &&
- d < connectDistance ) {
- UndoStart( _("Join Abutting Tracks"), "ConnectAbuttingTracks( T%d[%d] T%d[%d] )", GetTrkIndex(trk0), ep0, GetTrkIndex(trk1), ep1 );
+ GetTrkEndAngle(trk1,ep1) +
+ (180.0+connectAngle/2.0) );
+ if ( a < connectAngle &&
+ d < connectDistance ) {
+ UndoStart( _("Join Abutting Tracks"),
+ "ConnectAbuttingTracks( T%d[%d] T%d[%d] )", GetTrkIndex(trk0), ep0,
+ GetTrkIndex(trk1), ep1 );
DrawEndPt( &mainD, trk0, ep0, wDrawColorWhite );
DrawEndPt( &mainD, trk1, ep1, wDrawColorWhite );
ConnectTracks( trk0, ep0,
- trk1, ep1 );
+ trk1, ep1 );
DrawEndPt( &mainD, trk0, ep0, wDrawColorBlack );
DrawEndPt( &mainD, trk1, ep1, wDrawColorBlack );
UndoEnd();
@@ -2068,20 +2094,22 @@ EXPORT BOOL_T ConnectAbuttingTracks(
}
-EXPORT ANGLE_T GetAngleAtPoint( track_p trk, coOrd pos, EPINX_T *ep0, EPINX_T *ep1 )
+EXPORT ANGLE_T GetAngleAtPoint( track_p trk, coOrd pos, EPINX_T *ep0,
+ EPINX_T *ep1 )
{
ANGLE_T (*getAngleCmd)( track_p, coOrd, EPINX_T *, EPINX_T * );
- if ((getAngleCmd = trackCmds(trk->type)->getAngle) != NULL)
+ if ((getAngleCmd = trackCmds(trk->type)->getAngle) != NULL) {
return getAngleCmd( trk, pos, ep0, ep1 );
- else {
+ } else {
NoticeMessage( MSG_GAAP_BAD_TYPE, _("Continue"), NULL, trk->type, trk->index );
return 0;
}
}
-EXPORT BOOL_T SplitTrack( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover, BOOL_T disconnect )
+EXPORT BOOL_T SplitTrack( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover,
+ BOOL_T disconnect )
{
DIST_T d;
track_p trk0, trk2, trkl;
@@ -2091,9 +2119,9 @@ EXPORT BOOL_T SplitTrack( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover,
coOrd pos0;
if (!IsTrack(trk)) {
- if ((splitCmd = trackCmds(trk->type)->split) == NULL) return FALSE;
+ if ((splitCmd = trackCmds(trk->type)->split) == NULL) { return FALSE; }
UndrawNewTrack( trk );
- UndoModify( trk );
+ UndoModify( trk );
rc = splitCmd( trk, pos, ep, leftover, &epl, &ep1 );
if (*leftover) {
SetTrkLayer(*leftover,GetTrkLayer( trk ));
@@ -2107,24 +2135,28 @@ EXPORT BOOL_T SplitTrack( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover,
epl = ep;
epCnt = GetTrkEndPtCnt(trk);
*leftover = NULL;
-LOG( log_track, 2, ( "SplitTrack( T%d[%d], (%0.3f %0.3f)\n", trk->index, ep, pos.x, pos.y ) )
+ LOG( log_track, 2, ( "SplitTrack( T%d[%d], (%0.3f %0.3f)\n", trk->index, ep,
+ pos.x, pos.y ) )
+ trkEndPt_p epp = EndPtIndex( trk->endPt, ep );
+ pos0 = GetEndPtPos( epp );
if (((splitCmd = trackCmds(trk->type)->split) == NULL)) {
- if (!(FindDistance( trk->endPt[ep].pos, pos) <= minLength)) {
- ErrorMessage( MSG_CANT_SPLIT_TRK, trackCmds(trk->type)->name );
+ if (!(FindDistance( pos0, pos) <= minLength)) {
+ ErrorMessage(MSG_SPLITTED_OBJECT_TOO_SHORT, PutDim(fabs(minLength)));
return FALSE;
}
}
UndrawNewTrack( trk );
UndoModify( trk );
- pos0 = trk->endPt[ep].pos;
if ((d = FindDistance( pos0, pos )) <= minLength) {
/* easy: just disconnect */
- if ((trk2=trk->endPt[ep].track) != NULL) {
+ trk2 = GetEndPtTrack(epp);
+ if (trk2 != NULL) {
UndrawNewTrack( trk2 );
ep2 = GetEndPtConnectedToMe( trk2, trk );
- if (ep2 < 0)
+ if (ep2 < 0) {
return FALSE;
+ }
DisconnectTracks( trk, ep, trk2, ep2 );
LOG( log_track, 2, ( " at endPt with T%d[%d]\n", trk2->index, ep2 ) )
DrawNewTrack( trk2 );
@@ -2135,13 +2167,15 @@ LOG( log_track, 2, ( "SplitTrack( T%d[%d], (%0.3f %0.3f)\n", trk->index, ep, pos
} else if ( epCnt == 2 &&
- (d = FindDistance( trk->endPt[1-ep].pos, pos )) <= minLength) {
+ (d = FindDistance( GetEndPtPos(EndPtIndex(trk->endPt,1-ep)),
+ pos )) <= minLength) {
/* easy: just disconnect */
- if ((trk2=trk->endPt[1-ep].track) != NULL) {
+ if ((trk2=GetEndPtTrack(EndPtIndex(trk->endPt,1-ep))) != NULL) {
UndrawNewTrack( trk2 );
ep2 = GetEndPtConnectedToMe( trk2, trk );
- if (ep2 < 0)
+ if (ep2 < 0) {
return FALSE;
+ }
DisconnectTracks( trk, 1-ep, trk2, ep2 );
LOG( log_track, 2, ( " at endPt with T%d[%d]\n", trk2->index, ep2 ) )
DrawNewTrack( trk2 );
@@ -2154,16 +2188,18 @@ LOG( log_track, 2, ( "SplitTrack( T%d[%d], (%0.3f %0.3f)\n", trk->index, ep, pos
} else {
/* TODO circle's don't have ep's */
trk2 = GetTrkEndTrk( trk, ep );
- if ( !disconnect )
+ if ( !disconnect ) {
suspendElevUpdates = TRUE;
+ }
if (trk2 != NULL) {
ep2 = GetEndPtConnectedToMe( trk2, trk );
DisconnectTracks( trk, ep, trk2, ep2 );
}
rc = splitCmd( trk, pos, ep, leftover, &epl, &ep1 );
if (!rc) {
- if ( trk2 != NULL )
+ if ( trk2 != NULL ) {
ConnectTracks( trk, ep, trk2, ep2 );
+ }
suspendElevUpdates = FALSE;
DrawNewTrack( trk );
return FALSE;
@@ -2172,20 +2208,23 @@ LOG( log_track, 2, ( "SplitTrack( T%d[%d], (%0.3f %0.3f)\n", trk->index, ep, pos
if (*leftover) {
trkl = *leftover;
ep0 = epl;
- if ( !disconnect )
+ if ( !disconnect ) {
ConnectTracks( trk, ep, trkl, epl );
+ }
ep0 = 1-epl;
while ( 1 ) {
CopyAttributes( trk, trkl );
ClrTrkElev( trkl );
trk0 = GetTrkEndTrk(trkl,ep0);
- if ( trk0 == NULL || trk0->type == T_TURNOUT )
+ if ( trk0 == NULL || trk0->type == T_TURNOUT ) {
break;
+ }
ep0 = 1-GetEndPtConnectedToMe(trk0,trkl);
trkl = trk0;
}
- if (trk2)
+ if (trk2) {
ConnectTracks( trkl, ep0, trk2, ep2 );
+ }
LOG( log_track, 2, ( " midTrack (leftover = T%d)\n", (trkl)->index ) )
}
suspendElevUpdates = FALSE;
@@ -2196,8 +2235,9 @@ LOG( log_track, 2, ( "SplitTrack( T%d[%d], (%0.3f %0.3f)\n", trk->index, ep, pos
while ( 1 ) {
DrawNewTrack( trkl );
trk0 = GetTrkEndTrk(trkl,ep0);
- if ( trk0 == NULL || trk0 == trk2 || trk0->type == T_TURNOUT)
+ if ( trk0 == NULL || trk0 == trk2 || trk0->type == T_TURNOUT) {
break;
+ }
ep0 = 1-GetEndPtConnectedToMe(trk0,trkl);
trkl = trk0;
}
@@ -2208,30 +2248,35 @@ LOG( log_track, 2, ( "SplitTrack( T%d[%d], (%0.3f %0.3f)\n", trk->index, ep, pos
EXPORT BOOL_T TraverseTrack(
- traverseTrack_p trvTrk,
- DIST_T * distR )
+ traverseTrack_p trvTrk,
+ DIST_T * distR )
{
track_p oldTrk;
EPINX_T ep;
while ( *distR > 0.0 && trvTrk->trk ) {
- if ( trackCmds((trvTrk->trk)->type)->traverse == NULL )
+ if ( trackCmds((trvTrk->trk)->type)->traverse == NULL ) {
return FALSE;
+ }
oldTrk = trvTrk->trk;
- if ( !trackCmds((trvTrk->trk)->type)->traverse( trvTrk, distR ) )
+ if ( !trackCmds((trvTrk->trk)->type)->traverse( trvTrk, distR ) ) {
return FALSE;
- if ( *distR <= 0.0 )
+ }
+ if ( *distR <= 0.0 ) {
return TRUE;
- if ( !trvTrk->trk )
+ }
+ if ( !trvTrk->trk ) {
return FALSE;
+ }
ep = GetNearestEndPtConnectedToMe( trvTrk->trk, oldTrk, trvTrk->pos );
if ( ep != -1 ) {
trvTrk->pos = GetTrkEndPos( trvTrk->trk, ep );
trvTrk->angle = NormalizeAngle( GetTrkEndAngle( trvTrk->trk, ep ) + 180.0 );
}
if ( trackCmds((trvTrk->trk)->type)->checkTraverse &&
- !trackCmds((trvTrk->trk)->type)->checkTraverse( trvTrk->trk, trvTrk->pos ) )
+ !trackCmds((trvTrk->trk)->type)->checkTraverse( trvTrk->trk, trvTrk->pos ) ) {
return FALSE;
+ }
trvTrk->length = -1;
trvTrk->dist = 0.0;
@@ -2246,20 +2291,25 @@ EXPORT BOOL_T RemoveTrack( track_p * trk, EPINX_T * ep, DIST_T *dist )
track_p trk1;
EPINX_T ep1=-1;
while ( *dist > 0.0 ) {
- if (trackCmds((*trk)->type)->getLength == NULL)
+ if (trackCmds((*trk)->type)->getLength == NULL) {
return FALSE;
- if (GetTrkEndPtCnt(*trk) != 2)
+ }
+ if (GetTrkEndPtCnt(*trk) != 2) {
return FALSE;
+ }
dist1 = trackCmds((*trk)->type)->getLength(*trk);
- if ( dist1 > *dist )
+ if ( dist1 > *dist ) {
break;
+ }
*dist -= dist1;
trk1 = GetTrkEndTrk( *trk, 1-*ep );
- if (trk1)
+ if (trk1) {
ep1 = GetEndPtConnectedToMe( trk1, *trk );
+ }
DeleteTrack( *trk, FALSE );
- if (!trk1)
+ if (!trk1) {
return FALSE;
+ }
*trk = trk1;
*ep = ep1;
}
@@ -2269,22 +2319,26 @@ EXPORT BOOL_T RemoveTrack( track_p * trk, EPINX_T * ep, DIST_T *dist )
}
-EXPORT BOOL_T TrimTrack( track_p trk, EPINX_T ep, DIST_T dist, coOrd pos, ANGLE_T angle, DIST_T radius, coOrd center )
+EXPORT BOOL_T TrimTrack( track_p trk, EPINX_T ep, DIST_T dist, coOrd pos,
+ ANGLE_T angle, DIST_T radius, coOrd center )
{
- if (trackCmds(trk->type)->trim)
+ if (trackCmds(trk->type)->trim) {
return trackCmds(trk->type)->trim( trk, ep, dist, pos, angle, radius, center );
- else
+ } else {
return FALSE;
+ }
}
-EXPORT BOOL_T MergeTracks( track_p trk0, EPINX_T ep0, track_p trk1, EPINX_T ep1 )
+EXPORT BOOL_T MergeTracks( track_p trk0, EPINX_T ep0, track_p trk1,
+ EPINX_T ep1 )
{
if (trk0->type == trk1->type &&
- trackCmds(trk0->type)->merge)
+ trackCmds(trk0->type)->merge) {
return trackCmds(trk0->type)->merge( trk0, ep0, trk1, ep1 );
- else
+ } else {
return FALSE;
+ }
}
EXPORT STATUS_T ExtendTrackFromOrig( track_p trk, wAction_t action, coOrd pos )
@@ -2301,15 +2355,17 @@ EXPORT STATUS_T ExtendTrackFromOrig( track_p trk, wAction_t action, coOrd pos )
switch ( action ) {
case C_DOWN:
ep = PickUnconnectedEndPoint( pos, trk );
- if ( ep == -1 )
+ if ( ep == -1 ) {
return C_ERROR;
+ }
pos = GetTrkEndPos(trk,ep);
- if (!GetTrackParams(PARAMS_CORNU,trk,pos,&params)) return C_ERROR;
+ if (!GetTrackParams(PARAMS_CORNU,trk,pos,&params)) { return C_ERROR; }
end_pos = pos;
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
if (params.type == curveTypeCurve) {
curved = TRUE;
tempSegs(0).type = SEG_CRVTRK;
- tempSegs(0).width = 0;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).u.c.radius = params.arcR;
tempSegs(0).u.c.center = params.arcP;
tempSegs(0).u.c.a0 = FindAngle(params.arcP,GetTrkEndPos(trk,ep));
@@ -2317,23 +2373,29 @@ EXPORT STATUS_T ExtendTrackFromOrig( track_p trk, wAction_t action, coOrd pos )
} else {
curved = FALSE;
tempSegs(0).type = SEG_STRTRK;
- tempSegs(0).width = 0;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).u.l.pos[0] = tempSegs(0).u.l.pos[1] = GetTrkEndPos( trk, ep );
}
valid = FALSE;
InfoMessage( _("Drag to change track length") );
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
return C_CONTINUE;
- /*no break*/
+
case C_MOVE:
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
if (curved) {
//Normalize pos
- PointOnCircle( &pos, tempSegs(0).u.c.center, tempSegs(0).u.c.radius, FindAngle(tempSegs(0).u.c.center,pos) );
- ANGLE_T a = FindAngle(tempSegs(0).u.c.center,pos)-FindAngle(tempSegs(0).u.c.center,end_pos);
+ PointOnCircle( &pos, tempSegs(0).u.c.center, tempSegs(0).u.c.radius,
+ FindAngle(tempSegs(0).u.c.center,pos) );
+ ANGLE_T a = FindAngle(tempSegs(0).u.c.center,
+ pos)-FindAngle(tempSegs(0).u.c.center,end_pos);
d = fabs(a)*2*M_PI/360*tempSegs(0).u.c.radius;
if ( d <= minLength ) {
- if (action == C_MOVE)
+ if (action == C_MOVE) {
ErrorMessage( MSG_TRK_TOO_SHORT, _("Connecting "), PutDim(fabs(minLength-d)) );
+ }
valid = FALSE;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
return C_CONTINUE;
}
//Restrict to outside track
@@ -2343,6 +2405,7 @@ EXPORT STATUS_T ExtendTrackFromOrig( track_p trk, wAction_t action, coOrd pos )
tempSegs(0).u.c.a1 = 0;
tempSegs(0).u.c.a0 = end_angle;
InfoMessage( _("Inside turnout track"));
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
return C_CONTINUE;
}
end_angle = GetTrkEndAngle( trk, ep );
@@ -2350,51 +2413,57 @@ EXPORT STATUS_T ExtendTrackFromOrig( track_p trk, wAction_t action, coOrd pos )
PointOnCircle( &pos, tempSegs(0).u.c.center, tempSegs(0).u.c.radius, a );
ANGLE_T a2 = FindAngle(tempSegs(0).u.c.center,end_pos);
if ((end_angle > 180 && (a2>90 && a2 <270)) ||
- (end_angle < 180 && (a2<90 || a2 >270))) {
+ (end_angle < 180 && (a2<90 || a2 >270))) {
tempSegs(0).u.c.a0 = a2;
tempSegs(0).u.c.a1 = NormalizeAngle(a-a2);
} else {
tempSegs(0).u.c.a0 = a;
tempSegs(0).u.c.a1 = NormalizeAngle(a2-a);
}
- tempSegs_da.cnt = 1;
valid = TRUE;
if (action == C_MOVE)
InfoMessage( _("Curve: Length=%s Radius=%0.3f Arc=%0.3f"),
- FormatDistance( d ), FormatDistance(tempSegs(0).u.c.radius), PutAngle( tempSegs(0).u.c.a1 ));
+ FormatDistance( d ), FormatDistance(tempSegs(0).u.c.radius),
+ PutAngle( tempSegs(0).u.c.a1 ));
return C_CONTINUE;
} else {
d = FindDistance( end_pos, pos );
valid = TRUE;
if ( d <= minLength ) {
- if (action == C_MOVE)
+ if (action == C_MOVE) {
ErrorMessage( MSG_TRK_TOO_SHORT, _("Connecting "), PutDim(fabs(minLength-d)) );
+ }
valid = FALSE;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
return C_CONTINUE;
}
- ANGLE_T diff = NormalizeAngle(GetTrkEndAngle( trk, ep )-FindAngle(end_pos, pos));
+ ANGLE_T diff = NormalizeAngle(GetTrkEndAngle( trk, ep )-FindAngle(end_pos,
+ pos));
if (diff>=90.0 && diff<=270.0) {
valid = FALSE;
- tempSegs(0).u.c.a1 = 0;
- tempSegs(0).u.c.a0 = end_angle;
InfoMessage( _("Inside turnout track"));
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
return C_CONTINUE;
}
- Translate( &tempSegs(0).u.l.pos[1], tempSegs(0).u.l.pos[0], GetTrkEndAngle( trk, ep ), d );
- tempSegs_da.cnt = 1;
+
+ Translate( &tempSegs(0).u.l.pos[1], tempSegs(0).u.l.pos[0], GetTrkEndAngle( trk,
+ ep ), d );
if (action == C_MOVE)
InfoMessage( _("Straight: Length=%s Angle=%0.3f"),
- FormatDistance( d ), PutAngle( GetTrkEndAngle( trk, ep ) ) );
+ FormatDistance( d ), PutAngle( GetTrkEndAngle( trk, ep ) ) );
}
return C_CONTINUE;
case C_UP:
- if (!valid)
+ if (!valid) {
return C_TERMINATE;
+ }
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
UndrawNewTrack( trk );
EPINX_T jp;
if (curved) {
- trk1 = NewCurvedTrack(tempSegs(0).u.c.center, tempSegs(0).u.c.radius, tempSegs(0).u.c.a0, tempSegs(0).u.c.a1, 0);
+ trk1 = NewCurvedTrack(tempSegs(0).u.c.center, tempSegs(0).u.c.radius,
+ tempSegs(0).u.c.a0, tempSegs(0).u.c.a1, 0);
jp = PickUnconnectedEndPoint(end_pos,trk1);
} else {
trk1 = NewStraightTrack( tempSegs(0).u.l.pos[0], tempSegs(0).u.l.pos[1] );
@@ -2412,7 +2481,8 @@ EXPORT STATUS_T ExtendTrackFromOrig( track_p trk, wAction_t action, coOrd pos )
return C_ERROR;
}
-EXPORT STATUS_T ExtendStraightFromOrig( track_p trk, wAction_t action, coOrd pos )
+EXPORT STATUS_T ExtendStraightFromOrig( track_p trk, wAction_t action,
+ coOrd pos )
{
static EPINX_T ep;
static BOOL_T valid;
@@ -2422,10 +2492,12 @@ EXPORT STATUS_T ExtendStraightFromOrig( track_p trk, wAction_t action, coOrd pos
switch ( action ) {
case C_DOWN:
ep = PickUnconnectedEndPoint( pos, trk );
- if ( ep == -1 )
+ if ( ep == -1 ) {
return C_ERROR;
+ }
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).type = SEG_STRTRK;
- tempSegs(0).width = 0;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).u.l.pos[0] = GetTrkEndPos( trk, ep );
InfoMessage( _("Drag to change track length") );
@@ -2433,21 +2505,23 @@ EXPORT STATUS_T ExtendStraightFromOrig( track_p trk, wAction_t action, coOrd pos
d = FindDistance( tempSegs(0).u.l.pos[0], pos );
valid = TRUE;
if ( d <= minLength ) {
- if (action == C_MOVE)
+ if (action == C_MOVE) {
ErrorMessage( MSG_TRK_TOO_SHORT, _("Connecting "), PutDim(fabs(minLength-d)) );
+ }
valid = FALSE;
return C_CONTINUE;
}
- Translate( &tempSegs(0).u.l.pos[1], tempSegs(0).u.l.pos[0], GetTrkEndAngle( trk, ep ), d );
- tempSegs_da.cnt = 1;
+ Translate( &tempSegs(0).u.l.pos[1], tempSegs(0).u.l.pos[0], GetTrkEndAngle( trk,
+ ep ), d );
if (action == C_MOVE)
InfoMessage( _("Straight: Length=%s Angle=%0.3f"),
- FormatDistance( d ), PutAngle( GetTrkEndAngle( trk, ep ) ) );
+ FormatDistance( d ), PutAngle( GetTrkEndAngle( trk, ep ) ) );
return C_CONTINUE;
case C_UP:
- if (!valid)
+ if (!valid) {
return C_TERMINATE;
+ }
UndrawNewTrack( trk );
trk1 = NewStraightTrack( tempSegs(0).u.l.pos[0], tempSegs(0).u.l.pos[1] );
CopyAttributes( trk, trk1 );
@@ -2474,12 +2548,13 @@ EXPORT STATUS_T ModifyTrack( track_p trk, wAction_t action, coOrd pos )
}
-EXPORT BOOL_T GetTrackParams( int inx, track_p trk, coOrd pos, trackParams_t * params )
+EXPORT BOOL_T GetTrackParams( int inx, track_p trk, coOrd pos,
+ trackParams_t * params )
{
if ( trackCmds(trk->type)->getTrackParams ) {
return trackCmds(trk->type)->getTrackParams( inx, trk, pos, params );
} else {
- ASSERT( FALSE ); /* CHECKME */
+ CHECK( FALSE ); /* CHECKME */
return FALSE;
}
}
@@ -2538,23 +2613,29 @@ EXPORT DIST_T GetFlexLength( track_p trk0, EPINX_T ep, coOrd * pos )
d = 0.0;
while(1) {
trk1 = GetTrkEndTrk( trk, ep );
- if (trk1 == NULL)
+ if (trk1 == NULL) {
break;
- if (trk1 == trk0)
+ }
+ if (trk1 == trk0) {
break;
+ }
ep1 = GetEndPtConnectedToMe( trk1, trk );
- if (ep1 < 0 || ep1 > 1)
+ if (ep1 < 0 || ep1 > 1) {
break;
- if (trackCmds(trk1->type)->getLength == NULL)
+ }
+ if (trackCmds(trk1->type)->getLength == NULL) {
break;
+ }
dd = trackCmds(trk1->type)->getLength(trk1);
- if (dd <= 0.0)
+ if (dd <= 0.0) {
break;
+ }
d += dd;
trk = trk1;
ep = 1-ep1;
- if (d>DIST_INF)
+ if (d>DIST_INF) {
break;
+ }
}
*pos = GetTrkEndPos( trk, ep );
return d;
@@ -2565,12 +2646,13 @@ EXPORT DIST_T GetTrkLength( track_p trk, EPINX_T ep0, EPINX_T ep1 )
{
coOrd pos0, pos1;
DIST_T d;
- if (ep0 == ep1)
+ if (ep0 == ep1) {
return 0.0;
- else if (trackCmds(trk->type)->getLength != NULL) {
+ } else if (trackCmds(trk->type)->getLength != NULL) {
d = trackCmds(trk->type)->getLength(trk);
- if (ep1==-1)
+ if (ep1==-1) {
d = d/2.0;
+ }
return d;
} else {
pos0 = GetTrkEndPos(trk,ep0);
@@ -2610,7 +2692,6 @@ EXPORT DIST_T GetTrkLength( track_p trk, EPINX_T ep0, EPINX_T ep1 )
return fabs(pos1.y);
}
}
-#endif
/*#define DRAW_TUNNEL_NONE (0)*/
#define DRAW_TUNNEL_DASH (1)
#define DRAW_TUNNEL_SOLID (2)
@@ -2624,24 +2705,39 @@ EXPORT long drawTunnel = DRAW_TUNNEL_DASH;
EXPORT long tieDrawMode = TIEDRAWMODE_SOLID;
EXPORT wDrawColor tieColor;
+EXPORT wDrawColor bridgeColor;
+EXPORT wDrawColor roadbedColor;
+
+/**
+ * Draw tracks with 2 rails when zoomed in
+ *
+ * \param d drawing context
+ * \return true is we draw tracks with 2 rails
+ */
+EXPORT BOOL_T DrawTwoRails( drawCmd_p d, DIST_T factor )
+{
+ DIST_T scale = twoRailScale;
+ if ( d->options&DC_PRINT ) {
+ scale = scale*2+1;
+ }
+ scale /= factor;
+ return d->scale <= scale;
+}
+
/**
* Centerline drawing test
- *
+ *
* \param d drawing context
* \return true for centerline, false if no centerline to draw
*/
-static bool
-HasTrackCenterline( drawCmd_p d )
+EXPORT BOOL_T
+hasTrackCenterline( drawCmd_p d )
{
// for printing, drawing of center line depends on the scale
if( d->options & DC_CENTERLINE && d->options & DC_PRINT ) {
- if( d->scale <= ( twoRailScale * 2.0 + 1.0 ) / 2.0 ) {
- return true;
- } else {
- return false;
- }
+ return DrawTwoRails(d,1);
}
// all other cases of explicit centerline option (ie. bitmap)
@@ -2657,32 +2753,38 @@ HasTrackCenterline( drawCmd_p d )
return false;
}
-EXPORT wBool_t DoDrawTies( drawCmd_p d, track_cp trk )
+EXPORT wBool_t
+DoDrawTies( drawCmd_p d, track_cp trk )
{
- DIST_T scale2rail = (d->options&DC_PRINT)?(twoRailScale*2+1):twoRailScale;
- if ( !trk )
+ if ( !trk ) {
return FALSE;
- if (GetTrkNoTies(trk))
- return FALSE; //No Ties for this Track
- if ( tieDrawMode == TIEDRAWMODE_NONE )
+ }
+ if (GetTrkNoTies(trk)) {
+ return FALSE; //No Ties for this Track
+ }
+ if ( tieDrawMode == TIEDRAWMODE_NONE ) {
return FALSE;
- if ( d == &mapD )
+ }
+ if ( d == &mapD ) {
return FALSE;
- if ( d->scale >= scale2rail )
+ }
+ if ( !DrawTwoRails(d,1) ) {
return FALSE;
- if ( !(GetTrkVisible(trk) || drawTunnel==DRAW_TUNNEL_SOLID) )
+ }
+ if ( !(GetTrkVisible(trk) || drawTunnel==DRAW_TUNNEL_SOLID) ) {
return FALSE;
+ }
return TRUE;
}
EXPORT void DrawTie(
- drawCmd_p d,
- coOrd pos,
- ANGLE_T angle,
- DIST_T length,
- DIST_T width,
- wDrawColor color,
- BOOL_T solid )
+ drawCmd_p d,
+ coOrd pos,
+ ANGLE_T angle,
+ DIST_T length,
+ DIST_T width,
+ wDrawColor color,
+ BOOL_T solid )
{
coOrd lo, hi;
coOrd p[4];
@@ -2704,7 +2806,7 @@ EXPORT void DrawTie(
Translate( &p[3], p[2], angle-90, width );
Translate( &p[2], p[2], angle+90, width );
- for (int i=0;i<4;i++) {
+ for (int i=0; i<4; i++) {
t[i] = 0;
}
@@ -2713,8 +2815,9 @@ EXPORT void DrawTie(
lo.y -= TBORDER/mainD.dpi*mainD.scale;
hi.x += LBORDER/mainD.dpi*mainD.scale;
hi.y += BBORDER/mainD.dpi*mainD.scale;
- if ( OFF_D( d->orig, d->size, lo, hi ) )
+ if ( OFF_D( d->orig, d->size, lo, hi ) ) {
return;
+ }
}
if ( solid ) {
DrawPoly( d, 4, p, t, color, 0, DRAW_FILL );
@@ -2724,277 +2827,6 @@ EXPORT void DrawTie(
}
-static void DrawCurvedTies(
- drawCmd_p d,
- SCALEINX_T scaleInx,
- coOrd p,
- DIST_T r,
- ANGLE_T a0,
- ANGLE_T a1,
- wDrawColor color )
-{
- tieData_p td;
- DIST_T len;
- ANGLE_T ang, dang;
- coOrd pos;
- int cnt;
-
- if ( (d->options&DC_SIMPLE) != 0 )
- return;
-
- if ( scaleInx < 0 )
- return;
- td = GetScaleTieData( scaleInx );
-
- if (color == wDrawColorBlack)
- color = tieColor;
- len = 2*M_PI*r*a1/360.0;
- cnt = (int)floor(len/td->spacing+0.5);
- if ( len-td->spacing*cnt-(td->width/2) > (td->spacing-td->width)/2 ) {
- cnt++;
- }
- if ( cnt != 0 ) {
- dang = (360.0*(len)/cnt)/(2*M_PI*r);
- for ( ang=a0+dang/2; cnt; cnt--,ang+=dang ) {
- PointOnCircle( &pos, p, r, ang );
- DrawTie( d, pos, ang+90, td->length, td->width, color, tieDrawMode==TIEDRAWMODE_SOLID );
- }
-
- }
-}
-
-EXPORT void DrawCurvedTrack(
- drawCmd_p d,
- coOrd p,
- DIST_T r,
- ANGLE_T a0,
- ANGLE_T a1,
- track_p trk,
- wDrawColor color,
- long options )
-{
- DIST_T scale2rail;
- DIST_T trackGauge = GetTrkGauge(trk);
- wDrawWidth width=0;
- trkSeg_p segPtr;
- long bridge = 0;
- if(trk)
- bridge = GetTrkBridge( trk );
-
- if ( (d->options&DC_SEGTRACK) ) {
- DYNARR_APPEND( trkSeg_t, tempSegs_da, 10 );
- segPtr = &tempSegs(tempSegs_da.cnt-1);
- segPtr->type = SEG_CRVTRK;
- segPtr->width = 0;
- segPtr->color = wDrawColorBlack;
- segPtr->u.c.center = p;
- segPtr->u.c.a0 = a0;
- segPtr->u.c.a1 = a1;
- segPtr->u.c.radius = r;
- return;
- }
-
- scale2rail = (d->options&DC_PRINT)?(twoRailScale*2+1):twoRailScale;
- width = trk ? GetTrkWidth( trk ): 0;
- if ( d->options&DC_THICK )
- width = 3;
- if ( color == wDrawColorPreviewSelected || color == wDrawColorPreviewUnselected )
- width = 3;
-
- if ((d->options&DC_PRINT) && (d->dpi>2*BASE_DPI))
- width = (wDrawWidth)round(width * d->dpi / 2 / BASE_DPI);
-
- LOG(log_track,4,("DST( (%0.3f %0.3f) R%0.3f A%0.3f..%0.3f)\n",
- p.x, p.y, r, a0, a1 ) )
-
- // Draw a solid background
- if(bridge) {
- wDrawWidth width3 = (wDrawWidth)round(trackGauge * 3 * d->dpi/d->scale); // / BASE_DPI);
- DrawArc( d, p, r, a0, a1, 0, width3, drawColorGrey90 );
- }
-
- if ( DoDrawTies( d, trk ) )
- DrawCurvedTies( d, GetTrkScale(trk), p, r, a0, a1, color );
- if (color == wDrawColorBlack)
- color = normalColor;
- if ( d->scale >= scale2rail ) {
- DrawArc( d, p, r, a0, a1, (centerDrawMode && !(options&DTS_NOCENTER)) ? 1 : 0, width, color );
- } else {
- if ( HasTrackCenterline(d)) {
- long options = d->options;
- d->options |= DC_DASH;
- DrawArc( d, p, r, a0, a1, 0, 0, color );
- d->options = options;
- }
- DrawArc( d, p, r+trackGauge/2.0, a0, a1, 0, width, color );
- DrawArc( d, p, r-trackGauge/2.0, a0, a1, (centerDrawMode && !(options&DTS_NOCENTER) ? 1: 0), width, color );
- if ( (d->options&DC_PRINT) && roadbedWidth > trackGauge && d->scale <= scale2rail/2 ) {
- wDrawWidth rbw = (wDrawWidth)floor(roadbedLineWidth*(d->dpi/d->scale)+0.5);
- if ( options&DTS_RIGHT ) {
- DrawArc( d, p, r+roadbedWidth/2.0, a0, a1, 0, rbw, color );
- }
- if ( options&DTS_LEFT ) {
- DrawArc( d, p, r-roadbedWidth/2.0, a0, a1, 0, rbw, color );
- }
- }
- }
- if (bridge) {
- wDrawWidth width2 = (wDrawWidth)round((2.0 * d->dpi)/BASE_DPI);
- if (d->options&DC_PRINT)
- width2 = (wDrawWidth)round(d->dpi / BASE_DPI);
-
- DrawArc( d, p, r+(trackGauge*1.5), a0, a1, 0, width2, color );
- DrawArc( d, p, r-(trackGauge*1.5), a0, a1, 0, width2, color );
- }
-
-}
-
-
-EXPORT void DrawStraightTies(
- drawCmd_p d,
- SCALEINX_T scaleInx,
- coOrd p0,
- coOrd p1,
- wDrawColor color )
-{
- tieData_p td;
- DIST_T tieOff0=0.0, tieOff1=0.0;
- DIST_T len, dlen;
- coOrd pos;
- int cnt;
- ANGLE_T angle;
-
- if ( (d->options&DC_SIMPLE) != 0 )
- return;
-
- if ( color == wDrawColorBlack )
- color = tieColor;
- if ( scaleInx < 0 )
- return;
- td = GetScaleTieData( scaleInx );
- len = FindDistance( p0, p1 );
- len -= tieOff0+tieOff1;
- angle = FindAngle( p0, p1 );
- cnt = (int)floor(len/td->spacing+0.5);
- if ( len-td->spacing*cnt-td->width > (td->spacing-td->width)/2 ) {
- cnt++;
- }
- if ( cnt != 0 ) {
- dlen = FindDistance( p0, p1 )/cnt;
- double endsize = FindDistance( p0, p1 )-cnt*dlen-td->width;
- for ( len=dlen/2; cnt; cnt--,len+=dlen ) {
- Translate( &pos, p0, angle, len );
- DrawTie( d, pos, angle, td->length, td->width, color, tieDrawMode==TIEDRAWMODE_SOLID );
- }
- }
-}
-
-
-
-EXPORT void DrawStraightTrack(
- drawCmd_p d,
- coOrd p0,
- coOrd p1,
- ANGLE_T angle,
- track_cp trk,
- wDrawColor color,
- long options )
-{
- coOrd pp0, pp1;
- DIST_T scale2rail;
- DIST_T trackGauge = GetTrkGauge(trk);
- long bridge = 0;
- if ( trk )
- bridge = GetTrkBridge(trk);
- wDrawWidth width=0;
- trkSeg_p segPtr;
-
- if ( (d->options&DC_SEGTRACK) ) {
- DYNARR_APPEND( trkSeg_t, tempSegs_da, 10 );
- segPtr = &tempSegs(tempSegs_da.cnt-1);
- segPtr->type = SEG_STRTRK;
- segPtr->width = 0;
- segPtr->color = wDrawColorBlack;
- segPtr->u.l.pos[0] = p0;
- segPtr->u.l.pos[1] = p1;
- segPtr->u.l.angle = angle;
- segPtr->u.l.option = 0;
- return;
- }
-
- scale2rail = (d->options&DC_PRINT)?(twoRailScale*2+1):twoRailScale;
-
- width = trk ? GetTrkWidth( trk ): 0;
- if ((d->options&DC_PRINT) && (d->dpi>2*BASE_DPI))
- width = (wDrawWidth)round(width * d->dpi / 2 / BASE_DPI);
-
- if ( d->options&DC_THICK )
- width = 3;
- if ( color == wDrawColorPreviewSelected || color == wDrawColorPreviewUnselected )
- width = 3;
-
-
- LOG(log_track,4,("DST( (%0.3f %0.3f) .. (%0.3f..%0.3f)\n",
- p0.x, p0.y, p1.x, p1.y ) )
-
- // Draw solid background
- if(bridge) {
- wDrawWidth width3 = (wDrawWidth)round(trackGauge * 3 * d->dpi/d->scale);
- DrawLine(d,p0,p1,width3,wDrawColorGrey90);
- }
-
- if ( DoDrawTies( d, trk ) )
- DrawStraightTies( d, GetTrkScale(trk), p0, p1, color );
- if (color == wDrawColorBlack)
- color = normalColor;
- if ( d->scale >= scale2rail ) {
- DrawLine( d, p0, p1, width, color );
- } else {
- if ( HasTrackCenterline(d)) {
- long options = d->options;
- d->options |= DC_DASH;
- DrawLine( d, p0, p1, 0, color );
- d->options = options;
- }
- Translate( &pp0, p0, angle+90, trackGauge/2.0 );
- Translate( &pp1, p1, angle+90, trackGauge/2.0 );
- DrawLine( d, pp0, pp1, width, color );
-
- Translate( &pp0, p0, angle-90, trackGauge/2.0 );
- Translate( &pp1, p1, angle-90, trackGauge/2.0 );
- DrawLine( d, pp0, pp1, width, color );
-
- if ( (d->options&DC_PRINT) && roadbedWidth > trackGauge && d->scale <= scale2rail/2.0) {
- wDrawWidth rbw = (wDrawWidth)floor(roadbedLineWidth*(d->dpi/d->scale)+0.5);
- if ( options&DTS_RIGHT ) {
- Translate( &pp0, p0, angle+90, roadbedWidth/2.0 );
- Translate( &pp1, p1, angle+90, roadbedWidth/2.0 );
- DrawLine( d, pp0, pp1, rbw, color );
- }
- if ( options&DTS_LEFT ) {
- Translate( &pp0, p0, angle-90, roadbedWidth/2.0 );
- Translate( &pp1, p1, angle-90, roadbedWidth/2.0 );
- DrawLine( d, pp0, pp1, rbw, color );
- }
- }
- }
-
- if (bridge) {
- wDrawWidth width2 = (wDrawWidth)round((2.0 * d->dpi)/BASE_DPI);
- if (d->options&DC_PRINT)
- width2 = (wDrawWidth)round(d->dpi / BASE_DPI);
-
- Translate( &pp0, p0, angle-90, trackGauge*1.5 );
- Translate( &pp1, p1, angle-90, trackGauge*1.5 );
- DrawLine( d, pp0, pp1, width2, color );
-
- Translate( &pp0, p0, angle+90, trackGauge*1.5 );
- Translate( &pp1, p1, angle+90, trackGauge*1.5 );
- DrawLine( d, pp0, pp1, width2, color);
- }
-}
-
-
EXPORT wDrawColor GetTrkColor( track_p trk, drawCmd_p d )
{
DIST_T len, elev0, elev1;
@@ -3004,25 +2836,32 @@ EXPORT wDrawColor GetTrkColor( track_p trk, drawCmd_p d )
ComputeElev( trk, 0, FALSE, &elev0, NULL, FALSE );
len = GetTrkLength( trk, 0, 1 );
ComputeElev( trk, 1, FALSE, &elev1, NULL, FALSE );
- if (len>0.1)
+ if (len>0.1) {
grade = fabs( (elev1-elev0)/len)*100.0;
+ }
}
- if ( (d->options&(DC_SIMPLE|DC_SEGTRACK)) != 0 )
+ if ( (d->options&(DC_SIMPLE|DC_SEGTRACK)) != 0 ) {
return wDrawColorBlack;
- if ( grade > GetLayoutMaxTrackGrade())
+ }
+ if ( grade > GetLayerMaxTrackGrade(GetTrkLayer(trk))) {
return exceptionColor;
- if ( QueryTrack( trk, Q_EXCEPTION ) )
+ }
+ if ( QueryTrack( trk, Q_EXCEPTION ) ) {
return exceptionColor;
+ }
if ( (d->options&(DC_PRINT)) == 0 ) {
- if (GetTrkBits(trk)&TB_PROFILEPATH)
+ if (GetTrkBits(trk)&TB_PROFILEPATH) {
return profilePathColor;
- if ((d->options&DC_PRINT)==0 && GetTrkSelected(trk) && d == &tempD)
+ }
+ if ((d->options&DC_PRINT)==0 && GetTrkSelected(trk) && d == &tempD) {
return selectedColor;
+ }
}
if ( (IsTrack(trk)?(colorTrack):(colorDraw)) ) {
unsigned int iLayer = GetTrkLayer( trk );
- if (GetLayerUseColor( iLayer ) )
+ if (GetLayerUseColor( iLayer ) ) {
return GetLayerColor( iLayer );
+ }
}
return wDrawColorBlack;
}
@@ -3033,31 +2872,37 @@ EXPORT void DrawTrack( track_cp trk, drawCmd_p d, wDrawColor color )
TRKTYP_T trkTyp;
// Hack for WINDOWS
- if ( trk->bits & TB_UNDRAWN )
+ if ( trk->bits & TB_UNDRAWN ) {
return;
+ }
trkTyp = GetTrkType(trk);
curTrackLayer = GetTrkLayer(trk);
if (d != &mapD ) {
if ( (!GetTrkVisible(trk)) ) {
- if ( drawTunnel==DRAW_TUNNEL_NONE )
+ if ( drawTunnel==DRAW_TUNNEL_NONE ) {
return;
- if ( drawTunnel==DRAW_TUNNEL_DASH )
+ }
+ if ( drawTunnel==DRAW_TUNNEL_DASH ) {
d->options |= DC_DASH;
+ }
}
if (color == wDrawColorBlack) {
color = GetTrkColor( trk, d );
}
- if (color == wDrawColorPreviewSelected || color == wDrawColorPreviewUnselected ) {
+ if (color == wDrawColorPreviewSelected
+ || color == wDrawColorPreviewUnselected ) {
d->options |= DC_THICK;
}
}
- if (d == &mapD && !GetLayerOnMap(curTrackLayer))
+ if (d == &mapD && !GetLayerOnMap(curTrackLayer)) {
return;
+ }
if ( (IsTrack(trk)?(colorTrack):(colorDraw)) &&
- (d != &mapD) && (color == wDrawColorBlack) )
- if (GetLayerUseColor((unsigned int)curTrackLayer))
+ (d != &mapD) && (color == wDrawColorBlack) )
+ if (GetLayerUseColor((unsigned int)curTrackLayer)) {
color = GetLayerColor((unsigned int)curTrackLayer);
+ }
trackCmds(trkTyp)->draw( trk, d, color );
d->options &= ~DC_DASH;
@@ -3091,17 +2936,21 @@ EXPORT void DrawPositionIndicators( void )
{
track_p trk;
coOrd hi, lo;
- if ( !doDrawPositionIndicator )
+ if ( !doDrawPositionIndicator ) {
return;
+ }
TRK_ITERATE( trk ) {
if ( trackCmds(trk->type)->drawPositionIndicator ) {
- if ( drawTunnel==DRAW_TUNNEL_NONE && (!GetTrkVisible(trk)) )
+ if ( drawTunnel==DRAW_TUNNEL_NONE && (!GetTrkVisible(trk)) ) {
continue;
+ }
GetBoundingBox( trk, &hi, &lo );
- if ( OFF_MAIND( lo, hi ) )
+ if ( OFF_MAIND( lo, hi ) ) {
continue;
- if (!GetLayerVisible( GetTrkLayer(trk) ) )
+ }
+ if (!GetLayerVisible( GetTrkLayer(trk) ) ) {
continue;
+ }
trackCmds(trk->type)->drawPositionIndicator( trk, selectedColor );
}
}
@@ -3109,13 +2958,14 @@ EXPORT void DrawPositionIndicators( void )
EXPORT void AdvancePositionIndicator(
- track_p trk,
- coOrd pos,
- coOrd * posR,
- ANGLE_T * angleR )
+ track_p trk,
+ coOrd pos,
+ coOrd * posR,
+ ANGLE_T * angleR )
{
- if ( trackCmds(trk->type)->advancePositionIndicator )
+ if ( trackCmds(trk->type)->advancePositionIndicator ) {
trackCmds(trk->type)->advancePositionIndicator( trk, pos, posR, angleR );
+ }
}
/*****************************************************************************
*
@@ -3123,90 +2973,23 @@ EXPORT void AdvancePositionIndicator(
*
*/
-static void DrawUnconnectedEndPt( drawCmd_p d, coOrd p, ANGLE_T a, DIST_T trackGauge, wDrawColor color )
+static void DrawUnconnectedEndPt( drawCmd_p d, coOrd p, ANGLE_T a,
+ DIST_T trackGauge, wDrawColor color )
{
coOrd p0, p1;
+ Translate( &p0, p, a, trackGauge );
+ Translate( &p1, p, a-180.0, trackGauge );
+ DrawLine( d, p0, p1, 0, color );
+ if (d->scale < 8 || drawUnconnectedEndPt > 0) {
+ Translate( &p, p, a+90.0, 0.2 );
Translate( &p0, p, a, trackGauge );
Translate( &p1, p, a-180.0, trackGauge );
- DrawLine( d, p0, p1, 0, color );
- if (d->scale < 8 || drawUnconnectedEndPt > 0) {
- Translate( &p, p, a+90.0, 0.2 );
- Translate( &p0, p, a, trackGauge );
- Translate( &p1, p, a-180.0, trackGauge );
- DrawLine( d, p0, p1, (drawUnconnectedEndPt>0)?4:0, (color==wDrawColorWhite)?color:(drawUnconnectedEndPt>1)?exceptionColor:color );
- }
-}
-
-
-EXPORT void DrawEndElev( drawCmd_p d, track_p trk, EPINX_T ep, wDrawColor color )
-{
- coOrd pp;
- wFont_p fp;
- elev_t * elev;
- track_p trk1;
- DIST_T elev0, grade;
- ANGLE_T a=0;
- int style = BOX_BOX;
- BOOL_T gradeOk = TRUE;
- char *elevStr;
-
- if ((labelEnable&LABELENABLE_ENDPT_ELEV)==0)
- return;
- elev = &trk->endPt[ep].elev; /* TRACKDEP */
- if ( (elev->option&ELEV_MASK)==ELEV_NONE ||
- (elev->option&ELEV_VISIBLE)==0 )
- return;
- if ( (trk1=GetTrkEndTrk(trk,ep)) && GetTrkIndex(trk1)<GetTrkIndex(trk) )
- return;
-
- fp = wStandardFont( F_HELV, FALSE, FALSE );
- pp = GetTrkEndPos( trk, ep );
- switch ((elev->option&ELEV_MASK)) {
- case ELEV_COMP:
- case ELEV_GRADE:
- if ( color == wDrawColorWhite ) {
- elev0 = grade = elev->u.height;
- } else if ( !ComputeElev( trk, ep, FALSE, &elev0, &grade, FALSE ) ) {
- elev0 = grade = 0;
- gradeOk = FALSE;
- }
- if ((elev->option&ELEV_MASK)==ELEV_COMP) {
- elevStr = FormatDistance(elev0);
- elev->u.height = elev0;
- } else if (gradeOk) {
- sprintf( message, "%0.1f%%", round(fabs(grade*100.0)*10)/10 );
- elevStr = message;
- a = GetTrkEndAngle( trk, ep );
- style = BOX_ARROW_BACKGROUND;
- if (grade <= -0.001)
- a = NormalizeAngle( a+180.0 );
- else if ( grade < 0.001 )
- style = BOX_BOX_BACKGROUND;
- elev->u.height = grade;
- } else {
- elevStr = "????%%";
- }
- break;
- case ELEV_DEF:
- elevStr = FormatDistance( elev->u.height);
- break;
- case ELEV_STATION:
- elevStr = elev->u.name;
- break;
- default:
- return;
+ DrawLine( d, p0, p1, (drawUnconnectedEndPt>0)?4:0,
+ (color==wDrawColorWhite)?color:(drawUnconnectedEndPt>1)?exceptionColor:color );
}
- coOrd startLine = pp, endLine = pp;
- pp.x += elev->doff.x;
- pp.y += elev->doff.y;
- if (color==drawColorPreviewSelected) {
- Translate(&endLine,pp,FindAngle(pp,startLine),descriptionFontSize/d->dpi);
- DrawLine( d, startLine, endLine, 0, color );
- }
- DrawBoxedString( style, d, pp, elevStr, fp, (wFontSize_t)descriptionFontSize, color, a );
-
}
+
/**
* Draw track endpoints. The correct track endpoint (connected, unconnected etc.)
* is drawn to the track. In case the endpoint is on the transition into a
@@ -3219,10 +3002,10 @@ EXPORT void DrawEndElev( drawCmd_p d, track_p trk, EPINX_T ep, wDrawColor color
*/
EXPORT void DrawEndPt(
- drawCmd_p d,
- track_p trk,
- EPINX_T ep,
- wDrawColor color)
+ drawCmd_p d,
+ track_p trk,
+ EPINX_T ep,
+ wDrawColor color)
{
coOrd p;
ANGLE_T a;
@@ -3234,24 +3017,30 @@ EXPORT void DrawEndPt(
wDrawWidth width;
wDrawWidth width2;
- if((d->options & (DC_SIMPLE | DC_SEGTRACK)) != 0)
+ if((d->options & (DC_SIMPLE | DC_SEGTRACK)) != 0) {
return;
- if(trk && QueryTrack(trk,Q_NODRAWENDPT))
+ }
+ if(trk && QueryTrack(trk,Q_NODRAWENDPT)) {
return;
- if(trk == NULL || ep < 0)
+ }
+ if(trk == NULL || ep < 0) {
return;
+ }
// line width for the tunnel portal and bridge parapets, make sure it is rounded correctly
width2 = (wDrawWidth)round((2.0 * d->dpi) / BASE_DPI);
- if ((d->options&DC_PRINT) && (d->dpi>2*BASE_DPI))
+ if ((d->options&DC_PRINT) && (d->dpi>2*BASE_DPI)) {
width2 = (wDrawWidth)round(d->dpi / BASE_DPI);
+ }
- if(color == wDrawColorBlack)
+ if(color == wDrawColorBlack) {
color = normalColor;
+ }
- if(((d->options & DC_PRINT) ? (labelScale * 2 + 1) : labelScale) >= d->scale)
+ if(((d->options & DC_PRINT) ? (labelScale * 2 + 1) : labelScale) >= d->scale) {
DrawEndElev(d,trk,ep,color);
+ }
trk1 = GetTrkEndTrk(trk,ep);
p = GetTrkEndPos(trk,ep);
@@ -3264,15 +3053,14 @@ EXPORT void DrawEndPt(
}
sepBoundary = FALSE;
- if(d->scale < ((d->options & DC_PRINT) ? (twoRailScale * 2 + 1) : twoRailScale))
- {
- // return;
-
- if(inDrawTracks && (d->options & DC_PRINT) == 0 && importTrack == NULL && GetTrkSelected(trk) && (!GetTrkSelected(trk1))) {
+ if ( DrawTwoRails(d,1) ) {
+ if(inDrawTracks && (d->options & DC_PRINT) == 0 && importTrack == NULL
+ && GetTrkSelected(trk) && (!GetTrkSelected(trk1))) {
DIST_T len;
len = trackGauge * 2.0;
- if(len < 0.10 * d->scale)
+ if(len < 0.10 * d->scale) {
len = 0.10 * d->scale;
+ }
long oldOptions = d->options;
d->options &= ~DC_NOTSOLIDLINE;
Translate(&p0,p,a + 45,len);
@@ -3283,8 +3071,8 @@ EXPORT void DrawEndPt(
DrawLine(d,p0,p1,2,selectedColor);
d->options = oldOptions;
sepBoundary = TRUE;
- }
- else if((d->options & DC_PRINT) == 0 && importTrack == NULL && (!GetTrkSelected(trk)) && GetTrkSelected(trk1)) {
+ } else if((d->options & DC_PRINT) == 0 && importTrack == NULL
+ && (!GetTrkSelected(trk)) && GetTrkSelected(trk1)) {
sepBoundary = TRUE;
}
}
@@ -3317,11 +3105,10 @@ EXPORT void DrawEndPt(
}
showBridge = 0;
}
- }
- else if((!GetTrkVisible(trk)) && GetTrkVisible(trk1)) {
+ } else if((!GetTrkVisible(trk)) && GetTrkVisible(trk1)) {
showBridge = 0;
- }
- else if(GetLayerVisible(GetTrkLayer(trk)) && !GetLayerVisible(GetTrkLayer(trk1))) {
+ } else if(GetLayerVisible(GetTrkLayer(trk))
+ && !GetLayerVisible(GetTrkLayer(trk1))) {
a -= 90.0;
Translate(&p,p,a,trackGauge / 2.0);
Translate(&p0,p,a - 135.0,trackGauge * 2.0);
@@ -3330,21 +3117,20 @@ EXPORT void DrawEndPt(
DrawLine(d,p0,p,width2,color);
showBridge = 0;
- }
- else if(!GetLayerVisible(GetTrkLayer(trk)) && GetLayerVisible(GetTrkLayer(trk1))) {
+ } else if(!GetLayerVisible(GetTrkLayer(trk))
+ && GetLayerVisible(GetTrkLayer(trk1))) {
showBridge = 0;
- }
- else if(sepBoundary) {
+ } else if(sepBoundary) {
;
- }
- else if((drawEndPtV == 1 && (QueryTrack(trk,Q_DRAWENDPTV_1) || QueryTrack(trk1,Q_DRAWENDPTV_1))) || (drawEndPtV == 2)) {
+ } else if((drawEndPtV == 1 && (QueryTrack(trk,Q_DRAWENDPTV_1)
+ || QueryTrack(trk1,Q_DRAWENDPTV_1))) || (drawEndPtV == 2)) {
Translate(&p0,p,a,trackGauge);
width = 0;
- if(d != &mapD && d != &tempD && (GetTrkEndOption(trk,ep) & EPOPT_GAPPED) != 0)
+ if(d != &mapD && d != &tempD && (GetTrkEndOption(trk,ep) & EPOPT_GAPPED) != 0) {
width = (wDrawWidth)ceil(trackGauge * d->dpi / 2.0 / d->scale);
+ }
DrawLine(d,p0,p,width,color);
- }
- else {
+ } else {
;
}
@@ -3360,10 +3146,10 @@ EXPORT void DrawEndPt(
EXPORT void DrawEndPt2(
- drawCmd_p d,
- track_p trk,
- EPINX_T ep,
- wDrawColor color )
+ drawCmd_p d,
+ track_p trk,
+ EPINX_T ep,
+ wDrawColor color )
{
track_p trk1;
EPINX_T ep1;
@@ -3371,8 +3157,9 @@ EXPORT void DrawEndPt2(
trk1 = GetTrkEndTrk( trk, ep );
if (trk1) {
ep1 = GetEndPtConnectedToMe( trk1, trk );
- if (ep1>=0)
+ if (ep1>=0) {
DrawEndPt( d, trk1, ep1, color );
+ }
}
}
@@ -3384,47 +3171,52 @@ EXPORT void DrawTracks( drawCmd_p d, DIST_T scale, coOrd orig, coOrd size )
coOrd lo, hi;
BOOL_T doSelectRecount = FALSE;
unsigned long time0 = wGetTimer();
-
+
inDrawTracks = TRUE;
InfoCount( 0 );
TRK_ITERATE( trk ) {
if ( (d->options&DC_PRINT) != 0 &&
- wPrintQuit() ) {
+ wPrintQuit() ) {
inDrawTracks = FALSE;
return;
}
- if ( GetTrkSelected(trk) &&
- ( (!GetLayerVisible(GetTrkLayer(trk))) ||
- (drawTunnel==0 && !GetTrkVisible(trk)) ) ) {
+ if ( GetTrkSelected(trk) &&
+ ( (!GetLayerVisible(GetTrkLayer(trk))) ||
+ (drawTunnel==0 && !GetTrkVisible(trk)) ) ) {
ClrTrkBits( trk, TB_SELECTED );
doSelectRecount = TRUE;
}
GetBoundingBox( trk, &hi, &lo );
if ( OFF_D( orig, size, lo, hi ) ||
- (d != &mapD && !GetLayerVisible( GetTrkLayer(trk) ) ) ||
- (d == &mapD && !GetLayerOnMap( GetTrkLayer(trk) ) ) )
+ (d != &mapD && !GetLayerVisible( GetTrkLayer(trk) ) ) ||
+ (d == &mapD && !GetLayerOnMap( GetTrkLayer(trk) ) ) ) {
continue;
+ }
DrawTrack( trk, d, wDrawColorBlack );
count++;
- if (count%10 == 0)
+ if (count%10 == 0) {
InfoCount( count );
+ }
}
if (d == &mainD) {
for (inx=1; inx<trackCmds_da.cnt; inx++)
- if (trackCmds(inx)->redraw != NULL)
+ if (trackCmds(inx)->redraw != NULL) {
trackCmds(inx)->redraw();
- LOG( log_timedrawtracks, 1, ( "DrawTracks time = %lu mS\n", wGetTimer()-time0 ) );
+ }
+ LOG( log_timedrawtracks, 1, ( "DrawTracks time = %lu mS\n",
+ wGetTimer()-time0 ) );
}
InfoCount( trackCount );
inDrawTracks = FALSE;
- if ( doSelectRecount )
+ if ( doSelectRecount ) {
SelectRecount();
+ }
}
-EXPORT void DrawSelectedTracks( drawCmd_p d )
+EXPORT void DrawSelectedTracks( drawCmd_p d, BOOL_T all )
{
track_cp trk;
wIndex_t count;
@@ -3433,11 +3225,12 @@ EXPORT void DrawSelectedTracks( drawCmd_p d )
InfoCount( 0 );
TRK_ITERATE( trk ) {
- if ( GetTrkSelected( trk ) ) {
+ if ( (all && GetLayerVisible(GetTrkLayer(trk))) || GetTrkSelected( trk ) ) {
DrawTrack( trk, d, wDrawColorBlack );
count++;
- if (count%10 == 0)
+ if (count%10 == 0) {
InfoCount( count );
+ }
}
}
InfoCount( trackCount );
@@ -3455,24 +3248,29 @@ EXPORT void HilightElevations( BOOL_T hilight )
DIST_T radius;
radius = 0.05*mainD.scale;
- if ( radius < trackGauge/2.0 )
+ if ( radius < trackGauge/2.0 ) {
radius = trackGauge/2.0;
+ }
TRK_ITERATE( trk ) {
- for (ep=0;ep<GetTrkEndPtCnt(trk);ep++) {
- GetTrkEndElev( trk, ep, &mode, &elev ); /* TRACKDEP */
+ for (ep=0; ep<GetTrkEndPtCnt(trk); ep++) {
+ GetTrkEndElev( trk, ep, &mode, &elev );
if ((mode&ELEV_MASK)==ELEV_DEF || (mode&ELEV_MASK)==ELEV_IGNORE) {
if ((trk1=GetTrkEndTrk(trk,ep)) != NULL &&
- GetTrkIndex(trk1) < GetTrkIndex(trk))
+ GetTrkIndex(trk1) < GetTrkIndex(trk)) {
continue;
- if (drawTunnel == DRAW_TUNNEL_NONE && (!GetTrkVisible(trk)) && (trk1==NULL||!GetTrkVisible(trk1)) )
+ }
+ if (drawTunnel == DRAW_TUNNEL_NONE && (!GetTrkVisible(trk)) && (trk1==NULL
+ ||!GetTrkVisible(trk1)) ) {
continue;
+ }
if ((!GetLayerVisible(GetTrkLayer(trk))) &&
- (trk1==NULL||!GetLayerVisible(GetTrkLayer(trk1))))
+ (trk1==NULL||!GetLayerVisible(GetTrkLayer(trk1)))) {
continue;
+ }
pos = GetTrkEndPos(trk,ep);
if ( !OFF_MAIND( pos, pos ) ) {
DrawFillCircle( &tempD, pos, radius,
- ((mode&ELEV_MASK)==ELEV_DEF?elevColorDefined:elevColorIgnore) );
+ ((mode&ELEV_MASK)==ELEV_DEF?elevColorDefined:elevColorIgnore) );
}
}
}
@@ -3483,7 +3281,7 @@ EXPORT void HilightElevations( BOOL_T hilight )
EXPORT void HilightSelectedEndPt( BOOL_T show, track_p trk, EPINX_T ep )
{
coOrd pos;
- if (!trk || (ep==-1)) return;
+ if (!trk || (ep==-1)) { return; }
pos = GetTrkEndPos( trk, ep );
if ( show == TRUE ) {
pos = GetTrkEndPos( trk, ep );
@@ -3505,15 +3303,17 @@ EXPORT void LabelLengths( drawCmd_p d, track_p trk, wDrawColor color )
char * msg;
coOrd textsize;
- if ((labelEnable&LABELENABLE_LENGTHS)==0)
+ if ((labelEnable&LABELENABLE_LENGTHS)==0) {
return;
+ }
fp = wStandardFont( F_HELV, FALSE, FALSE );
fs = (float)descriptionFontSize/d->scale;
for (i=0; i<GetTrkEndPtCnt(trk); i++) {
p0 = GetTrkEndPos( trk, i );
dist = GetFlexLength( trk, i, &p1 );
- if (dist < 0.1)
+ if (dist < 0.1) {
continue;
+ }
if (dist < 3.0) {
p0.x = (p0.x+p1.x)/2.0;
p0.y = (p0.y+p1.y)/2.0;
@@ -3528,8 +3328,10 @@ EXPORT void LabelLengths( drawCmd_p d, track_p trk, wDrawColor color )
}
}
-EXPORT void AddTrkDetails(drawCmd_p d,track_p trk,coOrd pos, DIST_T length, wDrawColor color) {
- #define DESC_LENGTH 6.0;
+EXPORT void AddTrkDetails(drawCmd_p d,track_p trk,coOrd pos, DIST_T length,
+ wDrawColor color)
+{
+#define DESC_LENGTH 6.0;
double division;
division = length/DESC_LENGTH;
division = ceil(division);
@@ -3540,44 +3342,47 @@ EXPORT void AddTrkDetails(drawCmd_p d,track_p trk,coOrd pos, DIST_T length, wDra
tt.pos = GetTrkEndPos(trk,0);
dynArr_t pos_array;
- pos_array.max = 0;
- pos_array.cnt = 0;
- pos_array.ptr = NULL;
+ DYNARR_INIT( pos_angle_t, pos_array );
typedef struct {
- coOrd pos;
- ANGLE_T angle;
- } pos_angle_t;
+ coOrd pos;
+ ANGLE_T angle;
+ } pos_angle_t;
DYNARR_SET(pos_angle_t,pos_array,(int)division+1);
DYNARR_N(pos_angle_t,pos_array,0).pos = GetTrkEndPos(trk,0);
- DYNARR_N(pos_angle_t,pos_array,0).angle = NormalizeAngle(GetTrkEndAngle(trk,0)+180.0);
- for (int i=1;i<pos_array.cnt;i++) {
+ DYNARR_N(pos_angle_t,pos_array,0).angle = NormalizeAngle(GetTrkEndAngle(trk,
+ 0)+180.0);
+ for (int i=1; i<pos_array.cnt; i++) {
tt.dist = dist;
dist1 = dist;
TraverseTrack(&tt,&dist1);
- if (dist1 > 0 || tt.trk != trk || IsClose(FindDistance(tt.pos,GetTrkEndPos(trk,1)))) {
+ if (dist1 > 0 || tt.trk != trk
+ || IsClose(FindDistance(tt.pos,GetTrkEndPos(trk,1)))) {
DYNARR_N(pos_angle_t,pos_array,i).pos = GetTrkEndPos(trk,1);
DYNARR_N(pos_angle_t,pos_array,i).angle = GetTrkEndAngle(trk,1);
- pos_array.cnt = i;
+ // Truncate pos_array
+ DYNARR_SET( pos_angle_t, pos_array, i+1 );
break;
}
DYNARR_N(pos_angle_t,pos_array,i).pos = tt.pos;
DYNARR_N(pos_angle_t,pos_array,i).angle = tt.angle;
}
message[0]='\0';
- for (int i=0;i<pos_array.cnt;i++) {
- if (i==pos_array.cnt-1)
- sprintf( message, _("%s[%0.2f,%0.2f] A%0.2f"),message,PutDim(DYNARR_N(pos_angle_t,pos_array,i).pos.x),PutDim(DYNARR_N(pos_angle_t,pos_array,i).pos.y),DYNARR_N(pos_angle_t,pos_array,i).angle );
- else
- sprintf( message, _("%s[%0.2f,%0.2f] A%0.2f\n"),message,PutDim(DYNARR_N(pos_angle_t,pos_array,i).pos.x),PutDim(DYNARR_N(pos_angle_t,pos_array,i).pos.y),DYNARR_N(pos_angle_t,pos_array,i).angle);
+ for (int i=0; i<pos_array.cnt; i++) {
+ if (i==pos_array.cnt-1) {
+ sprintf( &message[strlen(message)], _("[%0.2f,%0.2f] A%0.2f"),
+ PutDim(DYNARR_N(pos_angle_t,pos_array,i).pos.x),PutDim(DYNARR_N(pos_angle_t,
+ pos_array,i).pos.y),DYNARR_N(pos_angle_t,pos_array,i).angle );
+ } else {
+ sprintf( &message[strlen(message)], _("[%0.2f,%0.2f] A%0.2f\n"),
+ PutDim(DYNARR_N(pos_angle_t,pos_array,i).pos.x),PutDim(DYNARR_N(pos_angle_t,
+ pos_array,i).pos.y),DYNARR_N(pos_angle_t,pos_array,i).angle);
+ }
}
wFont_p fp = wStandardFont( F_TIMES, FALSE, FALSE );
- DrawBoxedString(BOX_BOX,d,pos,message,fp,(wFontSize_t)descriptionFontSize,color,0.0);
- if (pos_array.ptr)
- MyFree(pos_array.ptr);
- pos_array.ptr = 0;
- pos_array.max = 0;
- pos_array.cnt = 0;
+ DrawBoxedString(BOX_BOX,d,pos,message,fp,(wFontSize_t)descriptionFontSize,color,
+ 0.0);
+ DYNARR_FREE( pos_angle_t, pos_array );
}
diff --git a/app/bin/track.h b/app/bin/track.h
index 32626c5..fdc7909 100644
--- a/app/bin/track.h
+++ b/app/bin/track.h
@@ -1,5 +1,5 @@
/** \file track.h
- *
+ *
*/
/* XTrkCad - Model Railroad CAD
@@ -17,24 +17,36 @@
*
* 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
*/
#ifndef TRACK_H
#define TRACK_H
#include "common.h"
+#include "trkseg.h"
+
extern TRKTYP_T T_NOTRACK;
+extern TRKTYP_T T_TURNOUT;
+extern TRKTYP_T T_STRUCTURE;
+extern TRKTYP_T T_BEZIER;
+extern TRKTYP_T T_BZRLIN;
+extern TRKTYP_T T_CORNU;
struct track_t ;
typedef struct track_t * track_p;
typedef struct track_t * track_cp;
-extern track_p tempTrack;
extern wIndex_t trackCount;
+extern DIST_T trackGauge;
+extern DIST_T minLength;
+extern DIST_T connectDistance;
+extern ANGLE_T connectAngle;
+extern long twoRailScale;
extern wBool_t bFreeTrack;
extern long colorTrack;
extern long colorDraw;
+
extern long drawTunnel;
extern long drawEndPtV;
extern long drawUnconnectedEndPt;
@@ -55,8 +67,8 @@ extern wDrawColor exceptionColor;
#define TIEDRAWMODE_SOLID (2)
extern long tieDrawMode;
extern wDrawColor tieColor;
-
-
+extern wDrawColor bridgeColor;
+extern wDrawColor roadbedColor;
extern TRKINX_T max_index;
typedef signed char * PATHPTR_T;
@@ -78,29 +90,29 @@ typedef enum { curveTypeNone, curveTypeCurve, curveTypeStraight, curveTypeBezier
#define PARAMS_LINE (7) //Called on Lines
typedef struct {
- curveType_e type; //Straight, Curve, Bezier, Cornu
- EPINX_T ep; //End point that is nearby pos
- dynArr_t nodes; //Array of nodes -> PARAMS_PARALLEL only
- DIST_T len; //Length of track
- ANGLE_T angle; //Angle at end of track
- coOrd lineOrig; //Start of straight
- coOrd lineEnd; //End of Straight (or zero for Turnout)
- coOrd arcP; //center or zero
- DIST_T arcR; //radius or zero
- ANGLE_T arcA0, arcA1; //Start angle and angular length (clockwise)
- long helixTurns;
- ANGLE_T track_angle;
- BOOL_T circleOrHelix; //Track is circle or Helix
- coOrd bezierPoints[4]; //Bezier Ends and CPs
- coOrd cornuEnd[2]; //Cornu Ends
- ANGLE_T cornuAngle[2]; //Angle at Cornu Ends
- DIST_T cornuRadius[2]; //Radius at Cornu Ends
- coOrd cornuCenter[2]; //Center at Cornu Ends
- coOrd ttcenter; //Turntable
- DIST_T ttradius; //Turntable
- coOrd centroid; //Turnout
-
- } trackParams_t;
+ curveType_e type; //Straight, Curve, Bezier, Cornu
+ EPINX_T ep; //End point that is nearby pos
+ dynArr_t nodes; //Array of nodes -> PARAMS_PARALLEL only
+ DIST_T len; //Length of track
+ ANGLE_T angle; //Angle at end of track
+ coOrd lineOrig; //Start of straight
+ coOrd lineEnd; //End of Straight (or zero for Turnout)
+ coOrd arcP; //center or zero
+ DIST_T arcR; //radius or zero
+ ANGLE_T arcA0, arcA1; //Start angle and angular length (clockwise)
+ long helixTurns;
+ ANGLE_T track_angle;
+ BOOL_T circleOrHelix; //Track is circle or Helix
+ coOrd bezierPoints[4]; //Bezier Ends and CPs
+ coOrd cornuEnd[2]; //Cornu Ends
+ ANGLE_T cornuAngle[2]; //Angle at Cornu Ends
+ DIST_T cornuRadius[2]; //Radius at Cornu Ends
+ coOrd cornuCenter[2]; //Center at Cornu Ends
+ coOrd ttcenter; //Turntable
+ DIST_T ttradius; //Turntable
+ coOrd centroid; //Turnout
+
+} trackParams_t;
#define Q_CANNOT_BE_ON_END (1)
#define Q_IGNORE_EASEMENT_ON_EXTEND (2)
@@ -135,293 +147,65 @@ typedef struct {
#define Q_GET_NODES (32)
typedef struct traverseTrack_t {
- track_p trk; // IN Current Track OUT Next Track
- DIST_T length; // IN How far to go
- DIST_T dist; // OUT how far left = 0 if found
- coOrd pos; // IN/OUT - where we are, where we will be // IN/OUT - where we are now
- ANGLE_T angle; // IN/OUT - angle now
- } traverseTrack_t;
+ track_p trk; // IN Current Track OUT Next Track
+ DIST_T length; // IN How far to go
+ DIST_T dist; // OUT how far left = 0 if found
+ coOrd pos; // IN/OUT - where we are, where we will be // IN/OUT - where we are now
+ ANGLE_T angle; // IN/OUT - angle now
+} traverseTrack_t;
typedef struct traverseTrack_t *traverseTrack_p;
typedef struct {
- char * name;
- void (*draw)( track_p, drawCmd_p, wDrawColor );
- DIST_T (*distance)( track_p, coOrd * );
- void (*describe)( track_p, char * line, CSIZE_T len );
- void (*deleteTrk)( track_p );
- BOOL_T (*write)( track_p, FILE * );
- BOOL_T (*read)( char * );
- void (*move)( track_p, coOrd );
- void (*rotate)( track_p, coOrd, ANGLE_T );
- void (*rescale)( track_p, FLOAT_T );
- BOOL_T (*audit)( track_p, char * );
- ANGLE_T (*getAngle)( track_p, coOrd, EPINX_T *, EPINX_T * );
- BOOL_T (*split)( track_p, coOrd, EPINX_T, track_p *, EPINX_T *, EPINX_T * );
- BOOL_T (*traverse)( traverseTrack_p, DIST_T * );
- BOOL_T (*enumerate)( track_p );
- void (*redraw)( void );
- BOOL_T (*trim)( track_p, EPINX_T, DIST_T, coOrd endpos, ANGLE_T angle, DIST_T endradius, coOrd endcenter );
- BOOL_T (*merge)( track_p, EPINX_T, track_p, EPINX_T );
- STATUS_T (*modify)( track_p, wAction_t, coOrd );
- DIST_T (*getLength)( track_p );
- BOOL_T (*getTrackParams)( int, track_p, coOrd pos, trackParams_t * );
- BOOL_T (*moveEndPt)( track_p *, EPINX_T *, coOrd, DIST_T );
- BOOL_T (*query)( track_p, int );
- void (*ungroup)( track_p );
- void (*flip)( track_p, coOrd, ANGLE_T );
- void (*drawPositionIndicator)( track_p, wDrawColor );
- void (*advancePositionIndicator)( track_p, coOrd, coOrd *, ANGLE_T * );
- BOOL_T (*checkTraverse)( track_p, coOrd );
- BOOL_T (*makeParallel)( track_p, coOrd, DIST_T, DIST_T, track_p *, coOrd *, coOrd *, BOOL_T );
- void (*drawDesc)( track_p, drawCmd_p, wDrawColor );
- BOOL_T (*rebuildSegs)(track_p);
- BOOL_T (*replayData)(track_p, void *,long );
- BOOL_T (*storeData)(track_p, void **,long *);
- void (*activate)(track_p);
- wBool_t (*compare)( track_cp, track_cp );
- } trackCmd_t;
+ char * name;
+ void (*draw)( track_p, drawCmd_p, wDrawColor );
+ DIST_T (*distance)( track_p, coOrd * );
+ void (*describe)( track_p, char * line, CSIZE_T len );
+ void (*deleteTrk)( track_p );
+ BOOL_T (*write)( track_p, FILE * );
+ BOOL_T (*read)( char * );
+ void (*move)( track_p, coOrd );
+ void (*rotate)( track_p, coOrd, ANGLE_T );
+ void (*rescale)( track_p, FLOAT_T );
+ BOOL_T (*audit)( track_p, char * );
+ ANGLE_T (*getAngle)( track_p, coOrd, EPINX_T *, EPINX_T * );
+ BOOL_T (*split)( track_p, coOrd, EPINX_T, track_p *, EPINX_T *, EPINX_T * );
+ BOOL_T (*traverse)( traverseTrack_p, DIST_T * );
+ BOOL_T (*enumerate)( track_p );
+ void (*redraw)( void );
+ BOOL_T (*trim)( track_p, EPINX_T, DIST_T, coOrd endpos, ANGLE_T angle,
+ DIST_T endradius, coOrd endcenter );
+ BOOL_T (*merge)( track_p, EPINX_T, track_p, EPINX_T );
+ STATUS_T (*modify)( track_p, wAction_t, coOrd );
+ DIST_T (*getLength)( track_p );
+ BOOL_T (*getTrackParams)( int, track_p, coOrd pos, trackParams_t * );
+ BOOL_T (*moveEndPt)( track_p *, EPINX_T *, coOrd, DIST_T );
+ BOOL_T (*query)( track_p, int );
+ void (*ungroup)( track_p );
+ void (*flip)( track_p, coOrd, ANGLE_T );
+ void (*drawPositionIndicator)( track_p, wDrawColor );
+ void (*advancePositionIndicator)( track_p, coOrd, coOrd *, ANGLE_T * );
+ BOOL_T (*checkTraverse)( track_p, coOrd );
+ BOOL_T (*makeParallel)( track_p, coOrd, DIST_T, DIST_T, track_p *, coOrd *,
+ coOrd *, BOOL_T );
+ void (*drawDesc)( track_p, drawCmd_p, wDrawColor );
+ BOOL_T (*rebuildSegs)(track_p);
+ BOOL_T (*replayData)(track_p, void *,long );
+ BOOL_T (*storeData)(track_p, void **,long *);
+ void (*activate)(track_p);
+ wBool_t (*compare)( track_cp, track_cp );
+} trackCmd_t;
#define NOELEV (-10000.0)
typedef enum { ELEV_NONE, ELEV_DEF, ELEV_COMP, ELEV_GRADE, ELEV_IGNORE, ELEV_STATION } elevMode_e;
#define ELEV_MASK 0x07
#define ELEV_VISIBLE 0x08
-typedef struct {
- int option;
- coOrd doff;
- union {
- DIST_T height;
- char * name;
- } u;
- BOOL_T cacheSet;
- double cachedElev;
- double cachedGrade;
- } elev_t;
#define EPOPT_GAPPED (1L<<0)
-typedef struct trkEndPt_t {
- coOrd pos;
- ANGLE_T angle;
- TRKINX_T index;
- track_p track;
- elev_t elev;
- long option;
- } trkEndPt_t;
+
+struct trkEndPt_t;
typedef struct trkEndPt_t * trkEndPt_p;
-extern dynArr_t tempEndPts_da;
-#define tempEndPts(N) DYNARR_N( trkEndPt_t, tempEndPts_da, N )
-
-typedef enum { FREEFORM, RECTANGLE, POLYLINE
-} PolyType_e;
-
-
-typedef struct trkSeg_t {
- char type;
- wDrawColor color;
- DIST_T width;
- dynArr_t bezSegs; //placed here to avoid overwrites
- union {
- struct {
- coOrd pos[4];
- ANGLE_T angle;
- long option;
- } l;
- struct {
- coOrd pos[4];
- ANGLE_T angle0;
- ANGLE_T angle3;
- DIST_T minRadius;
- DIST_T radius0;
- DIST_T radius3;
- DIST_T length;
- } b;
- struct {
- coOrd center;
- ANGLE_T a0, a1;
- DIST_T radius;
- } c;
- struct {
- coOrd pos;
- ANGLE_T angle;
- DIST_T R, L;
- DIST_T l0, l1;
- unsigned int flip:1;
- unsigned int negate:1;
- unsigned int Scurve:1;
- } j;
- struct {
- coOrd pos;
- ANGLE_T angle;
- wFont_p fontP;
- FONTSIZE_T fontSize;
- BOOL_T boxed;
- char * string;
- } t;
- struct {
- int cnt;
- pts_t * pts;
- coOrd orig;
- ANGLE_T angle;
- PolyType_e polyType;
- } p;
- } u;
- } trkSeg_t;
-typedef struct trkSeg_t * trkSeg_p;
-
-#define SEG_STRTRK ('S')
-#define SEG_CRVTRK ('C')
-#define SEG_BEZTRK ('W')
-#define SEG_STRLIN ('L')
-#define SEG_CRVLIN ('A')
-#define SEG_BEZLIN ('H')
-#define SEG_JNTTRK ('J')
-#define SEG_FILCRCL ('G')
-#define SEG_POLY ('Y')
-#define SEG_FILPOLY ('F')
-#define SEG_TEXT ('Z')
-#define SEG_UNCEP ('E')
-#define SEG_CONEP ('T')
-#define SEG_PATH ('P')
-#define SEG_SPEC ('X')
-#define SEG_CUST ('U')
-#define SEG_DOFF ('D')
-#define SEG_BENCH ('B')
-#define SEG_DIMLIN ('M')
-#define SEG_TBLEDGE ('Q')
-
-#define IsSegTrack( S ) ( (S)->type == SEG_STRTRK || (S)->type == SEG_CRVTRK || (S)->type == SEG_JNTTRK || (S)->type == SEG_BEZTRK)
-
-extern dynArr_t tempSegs_da;
-
-#define tempSegs(N) DYNARR_N( trkSeg_t, tempSegs_da, N )
-
-extern char tempSpecial[4096];
-extern char tempCustom[4096];
-
-void ComputeCurvedSeg(
- trkSeg_p s,
- DIST_T radius,
- coOrd p0,
- coOrd p1 );
-
-coOrd GetSegEndPt(
- trkSeg_p segPtr,
- EPINX_T ep,
- BOOL_T bounds,
- ANGLE_T * );
-
-void GetTextBounds( coOrd, ANGLE_T, char *, FONTSIZE_T, coOrd *, coOrd * );
-void GetSegBounds( coOrd, ANGLE_T, wIndex_t, trkSeg_p, coOrd *, coOrd * );
-void MoveSegs( wIndex_t, trkSeg_p, coOrd );
-void RotateSegs( wIndex_t, trkSeg_p, coOrd, ANGLE_T );
-void FlipSegs( wIndex_t, trkSeg_p, coOrd, ANGLE_T );
-void RescaleSegs( wIndex_t, trkSeg_p, DIST_T, DIST_T, DIST_T );
-void CloneFilledDraw( wIndex_t, trkSeg_p, BOOL_T );
-void FreeFilledDraw( wIndex_t, trkSeg_p );
-DIST_T DistanceSegs( coOrd, ANGLE_T, wIndex_t, trkSeg_p, coOrd *, wIndex_t * );
-void DrawDimLine( drawCmd_p, coOrd, coOrd, char *, wFontSize_t, FLOAT_T, wDrawWidth, wDrawColor, long );
-void DrawSegs(
- drawCmd_p d,
- coOrd orig,
- ANGLE_T angle,
- trkSeg_p segPtr,
- wIndex_t segCnt,
- DIST_T trackGauge,
- wDrawColor color );
-void DrawSegsO(
- drawCmd_p d,
- track_p trk,
- coOrd orig,
- ANGLE_T angle,
- trkSeg_p segPtr,
- wIndex_t segCnt,
- DIST_T trackGauge,
- wDrawColor color,
- long options );
-ANGLE_T GetAngleSegs( wIndex_t, trkSeg_p, coOrd *, wIndex_t *, DIST_T *, BOOL_T *, wIndex_t *, BOOL_T * );
-void RecolorSegs( wIndex_t, trkSeg_p, wDrawColor );
-
-BOOL_T ReadSegs( void );
-BOOL_T WriteSegs( FILE * f, wIndex_t segCnt, trkSeg_p segs );
-BOOL_T WriteSegsEnd(FILE * f, wIndex_t segCnt, trkSeg_p segs, BOOL_T writeEnd);
-typedef union {
- struct {
- coOrd pos; /* IN the point to get to */
- ANGLE_T angle; /* IN is the angle that the object starts at (-ve for forwards) */
- DIST_T dist; /* OUT is how far it is along the track to get to pos*/
- BOOL_T backwards; /* OUT which way are we going? */
- BOOL_T reverse_seg; /* OUT the seg is backwards curve */
- BOOL_T negative; /* OUT the curve is negative */
- int BezSegInx; /* OUT for Bezier Seg - the segment we are on in Bezier */
- BOOL_T segs_backwards; /* OUT for Bezier Seg - the direction of the overall Bezier */
- } traverse1; // Find dist between pos and end of track that starts with angle set backwards
- struct {
- BOOL_T segDir; /* IN Direction to go in this seg*/
- int BezSegInx; /* IN for Bezier Seg which element to start with*/
- BOOL_T segs_backwards; /* IN for Bezier Seg which way to go down the array*/
- DIST_T dist; /* IN/OUT In = distance to go, Out = distance left */
- coOrd pos; /* OUT = point reached if dist = 0 */
- ANGLE_T angle; /* OUT = angle at point */
- } traverse2; //Return distance left (or 0) and angle and pos when going dist from segDir end
- struct {
- int first, last; /* IN */
- ANGLE_T side;
- DIST_T roadbedWidth;
- wDrawWidth rbw;
- coOrd orig;
- ANGLE_T angle;
- wDrawColor color;
- drawCmd_p d;
- } drawRoadbedSide;
- struct {
- coOrd pos1; /* IN pos to find */
- DIST_T dd; /* OUT distance from nearest point in seg to input pos */
- } distance;
- struct {
- track_p trk; /* OUT */
- EPINX_T ep[2];
- } newTrack;
- struct {
- DIST_T length; /* OUT */
- } length;
- struct {
- coOrd pos; /* IN */
- DIST_T length[2]; /* OUT */
- trkSeg_t newSeg[2];
- } split;
- struct {
- coOrd pos; /* IN Pos to find nearest to - OUT found pos on curve*/
- ANGLE_T angle; /* OUT angle at pos - (-ve if backwards)*/
- BOOL_T negative_radius; /* OUT Radius <0? */
- BOOL_T backwards; /* OUT Seg is backwards */
- DIST_T radius; /* OUT radius at pos */
- coOrd center; /* OUT center of curvature at pos (0 = straight)*/
- int bezSegInx; /* OUT if a bezier proc, the index of the sub segment */
- } getAngle; // Get pos on seg nearest, angle at that (-ve for forwards)
- } segProcData_t, *segProcData_p;
-typedef enum {
- SEGPROC_TRAVERSE1,
- SEGPROC_TRAVERSE2,
- SEGPROC_DRAWROADBEDSIDE,
- SEGPROC_DISTANCE,
- SEGPROC_FLIP,
- SEGPROC_NEWTRACK,
- SEGPROC_LENGTH,
- SEGPROC_SPLIT,
- SEGPROC_GETANGLE
- } segProc_e;
-void SegProc( segProc_e, trkSeg_p, segProcData_p );
-void StraightSegProc( segProc_e, trkSeg_p, segProcData_p );
-void CurveSegProc( segProc_e, trkSeg_p, segProcData_p );
-void JointSegProc( segProc_e, trkSeg_p, segProcData_p );
-void BezierSegProc( segProc_e, trkSeg_p, segProcData_p ); //Used in Cornu join
-void CleanSegs( dynArr_t *);
-void CopyPoly(trkSeg_p seg_p, wIndex_t segCnt);
-wBool_t CompareSegs( trkSeg_p, int, trkSeg_p, int );
-
-/* debug.c */
-void SetDebug( char * );
/*Remember to add bits to trackx.h if adding here */
@@ -435,46 +219,14 @@ void SetDebug( char * );
#define TB_CARATTACHED (1<<7)
#define TB_NOTIES (1<<8)
#define TB_BRIDGE (1<<9)
-#define TB_SELREDRAW (1<<10)
+#define TB_ROADBED (1<<10)
+#define TB_SELREDRAW (1<<11)
// Track has been undrawn, don't draw it on Redraw
-#define TB_UNDRAWN (1<<11)
-#define TB_DETAILDESC (1<<12)
+#define TB_UNDRAWN (1<<12)
+#define TB_DETAILDESC (1<<13)
#define TB_TEMPBITS (TB_PROFILEPATH|TB_PROCESSED|TB_UNDRAWN)
/* track.c */
-#ifdef FASTTRACK
-#include "trackx.h"
-#define GetTrkIndex( T ) ((T)->index)
-#define GetTrkType( T ) ((T)->type)
-#define GetTrkScale( T ) ((T)->scale)
-#define SetTrkScale( T, S ) (T)->scale = ((char)(S))
-/*#define GetTrkSelected( T ) ((T)->bits&TB_SELECTED)*/
-/*#define GetTrkVisible( T ) ((T)->bits&TB_VISIBLE)*/
-/*#define SetTrkVisible( T, V ) ((V) ? (T)->bits |= TB_VISIBLE : (T)->bits &= !TB_VISIBLE)*/
-#define GetTrkLayer( T ) ((T)->layer)
-#define SetBoundingBox( T, HI, LO ) \
- (T)->hi.x = (float)(HI).x; (T)->hi.y = (float)(HI).y; (T)->lo.x = (float)(LO).x; (T)->lo.x; (T)->lo.x = (float)(LO).y = (float)(LO).y
-#define GetBoundingBox( T, HI, LO ) \
- (HI)->x = (POS_T)(T)->hi.x; (HI)->y = (POS_T)(T)->hi.y; (LO)->x = (POS_T)(T)->lo.x; (LO)->y = (POS_T)(T)->lo.y;
-#define GetTrkEndPtCnt( T ) ((T)->endCnt)
-#define SetTrkEndPoint( T, I, PP, AA ) \
- Assert((T)->endPt[I].track); \
- (T)->endPt[I].pos = PP; \
- (T)->endPt[I].angle = AA
-#define GetTrkEndTrk( T, I ) ((T)->endPt[I].track)
-#define GetTrkEndPos( T, I ) ((T)->endPt[I].pos)
-#define GetTrkEndPosXY( T, I ) PutDim((T)->endPt[I].pos.x), PutDim((T)->endPt[I].pos.y)
-#define GetTrkEndAngle( T, I ) ((T)->endPt[I].angle)
-#define GetTrkEndOption( T, I ) ((T)->endPt[I].option)
-#define SetTrkEndOption( T, I, O ) ((T)->endPt[I].option=O)
-#define GetTrkExtraData( T, TT ) ((T)->extraData)
-#define GetTrkWidth( T ) (int)((T)->width)
-#define SetTrkWidth( T, W ) (T)->width = (unsigned int)(W)
-#define GetTrkBits(T) ((T)?((T)->bits):0)
-#define SetTrkBits(T,V) ((T)->bits|=(V))
-#define ClrTrkBits(T,V) ((T)->bits&=~(V))
-#define IsTrackDeleted(T) ((T)->deleted)
-#else
TRKINX_T GetTrkIndex( track_p );
TRKTYP_T GetTrkType( track_p );
SCALEINX_T GetTrkScale( track_p );
@@ -483,46 +235,40 @@ BOOL_T GetTrkSelected( track_p );
BOOL_T GetTrkVisible( track_p );
void SetTrkVisible( track_p, BOOL_T );
unsigned int GetTrkLayer( track_p );
+tieData_t GetTrkTieData(track_p);
void SetBoundingBox( track_p, coOrd, coOrd );
void GetBoundingBox( track_p, coOrd*, coOrd* );
EPINX_T GetTrkEndPtCnt( track_p );
-void SetTrkEndPoint( track_p, EPINX_T, coOrd, ANGLE_T );
-track_p GetTrkEndTrk( track_p, EPINX_T );
-coOrd GetTrkEndPos( track_p, EPINX_T );
-#define GetTrkEndPosXY( trk, ep ) PutDim(GetTrkEndPos(trk,ep).x), PutDim(GetTrkEndPos(trk,ep).y)
-ANGLE_T GetTrkEndAngle( track_p, EPINX_T );
-long GetTrkEndOption( track_p, EPINX_T );
-long SetTrkEndOption( track_p, EPINX_T, long );
+trkEndPt_p GetTrkEndPt( track_cp, EPINX_T );
struct extraDataBase_t * GetTrkExtraData( track_p, TRKTYP_T );
+void ResizeExtraData( track_p trk, CSIZE_T newSize );
int GetTrkWidth( track_p );
void SetTrkWidth( track_p, int );
int GetTrkBits( track_p );
int SetTrkBits( track_p, int );
int ClrTrkBits( track_p, int );
BOOL_T IsTrackDeleted( track_p );
-#endif
+void TrackInsertLayer( int );
+void TrackDeleteLayer( int );
+
+track_p GetFirstTrack();
+track_p GetNextTrack( track_p );
+
+#define TRK_ITERATE(TRK) for (TRK=GetFirstTrack(); TRK!=NULL; TRK=GetNextTrack(TRK) ) if (!IsTrackDeleted(TRK))
+
#define GetTrkSelected(T) (GetTrkBits(T)&TB_SELECTED)
#define GetTrkVisible(T) (GetTrkBits(T)&TB_VISIBLE)
#define GetTrkNoTies(T) (GetTrkBits(T)&TB_NOTIES)
#define GetTrkBridge(T) ((T)?GetTrkBits(T)&TB_BRIDGE:0)
+#define GetTrkRoadbed(T) ((T)?GetTrkBits(T)&TB_ROADBED:0)
#define SetTrkVisible(T,V) ((V)?SetTrkBits(T,TB_VISIBLE):ClrTrkBits(T,TB_VISIBLE))
#define SetTrkNoTies(T,V) ((V)?SetTrkBits(T,TB_NOTIES):ClrTrkBits(T,TB_NOTIES))
#define SetTrkBridge(T,V) ((V)?SetTrkBits(T,TB_BRIDGE):ClrTrkBits(T,TB_BRIDGE))
+#define SetTrkRoadbed(T,V) ((V)?SetTrkBits(T,TB_ROADBED):ClrTrkBits(T,TB_ROADBED))
int ClrAllTrkBits( int );
int ClrAllTrkBitsRedraw( int, wBool_t );
-void GetTrkEndElev( track_p trk, EPINX_T e, int *option, DIST_T *height );
-void SetTrkEndElev( track_p, EPINX_T, int, DIST_T, char * );
-int GetTrkEndElevMode( track_p, EPINX_T );
-int GetTrkEndElevUnmaskedMode( track_p, EPINX_T );
-DIST_T GetTrkEndElevHeight( track_p, EPINX_T );
-BOOL_T GetTrkEndElevCachedHeight (track_p trk, EPINX_T e, DIST_T *height, DIST_T *grade);
-void SetTrkEndElevCachedHeight ( track_p trk, EPINX_T e, DIST_T height, DIST_T grade);
-char * GetTrkEndElevStation( track_p, EPINX_T );
-#define EndPtIsDefinedElev( T, E ) (GetTrkEndElevMode(T,E)==ELEV_DEF)
-#define EndPtIsIgnoredElev( T, E ) (GetTrkEndElevMode(T,E)==ELEV_IGNORE)
-#define EndPtIsStationElev( T, E ) (GetTrkEndElevMode(T,E)==ELEV_STATION)
void SetTrkElev( track_p, int, DIST_T );
int GetTrkElevMode( track_p );
DIST_T GetTrkElev( track_p trk );
@@ -536,7 +282,6 @@ void CopyAttributes( track_p, track_p );
DIST_T GetTrkGauge( track_cp );
#define GetTrkScaleName( T ) GetScaleName(GetTrkScale(T))
void SetTrkEndPtCnt( track_p, EPINX_T );
-BOOL_T WriteEndPt( FILE *, track_cp, EPINX_T );
EPINX_T PickEndPoint( coOrd, track_cp );
EPINX_T PickUnconnectedEndPoint( coOrd, track_cp );
EPINX_T PickUnconnectedEndPointSilent( coOrd, track_cp );
@@ -593,7 +338,8 @@ wBool_t IsAngleClose( ANGLE_T, ANGLE_T );
wBool_t IsDistClose( DIST_T, DIST_T );
wBool_t IsWidthClose( DIST_T, DIST_T );
wBool_t IsColorClose( wDrawColor, wDrawColor );
-wBool_t CompareTrack( track_cp, track_cp );
+wBool_t CheckRegressionResult( long regressionVersion, char * sFileName,
+ wBool_t bQuiet );
void MoveTrack( track_p, coOrd );
void RotateTrack( track_p, coOrd, ANGLE_T );
@@ -607,7 +353,8 @@ EPINX_T GetNextTrkOnPath( track_p, EPINX_T );
#define FDE_UDF 1
#define FDE_END 2
int FindDefinedElev( track_p, EPINX_T, int, BOOL_T, DIST_T *, DIST_T *);
-BOOL_T ComputeElev( track_p trk, EPINX_T ep, BOOL_T on_path, DIST_T * elev, DIST_T * grade, BOOL_T force);
+BOOL_T ComputeElev( track_p trk, EPINX_T ep, BOOL_T on_path, DIST_T * elev,
+ DIST_T * grade, BOOL_T force);
#define DTS_LEFT (1<<0)
#define DTS_RIGHT (1<<1)
@@ -618,49 +365,52 @@ BOOL_T ComputeElev( track_p trk, EPINX_T ep, BOOL_T on_path, DIST_T * elev, DIST
#define DTS_DASHDOTDOT (1<<10)
#define DTS_CENTERONLY (1<<11)
-void DrawCurvedTrack( drawCmd_p, coOrd, DIST_T, ANGLE_T, ANGLE_T, track_cp, wDrawColor, long );
-void DrawStraightTrack( drawCmd_p, coOrd, coOrd, ANGLE_T, track_cp, wDrawColor, long );
+BOOL_T DrawTwoRails( drawCmd_p d, DIST_T factor );
+BOOL_T hasTrackCenterline( drawCmd_p d );
+void DrawCurvedTrack( drawCmd_p, coOrd, DIST_T, ANGLE_T, ANGLE_T, track_cp,
+ wDrawColor, long );
+void DrawStraightTrack( drawCmd_p, coOrd, coOrd, ANGLE_T, track_cp, wDrawColor,
+ long );
-void DrawStraightTies( drawCmd_p d, SCALEINX_T scaleInx, coOrd p0, coOrd p1, wDrawColor color );
+void DrawStraightTies( drawCmd_p d, tieData_t td, coOrd p0, coOrd p1,
+ wDrawColor color );
wBool_t DoDrawTies(drawCmd_p d, track_cp trk);
-void DrawTie(drawCmd_p d, coOrd pos, ANGLE_T angle, DIST_T length, DIST_T width, wDrawColor color, BOOL_T solid);
+void DrawTie(drawCmd_p d, coOrd pos, ANGLE_T angle, DIST_T length, DIST_T width,
+ wDrawColor color, BOOL_T solid);
ANGLE_T GetAngleAtPoint( track_p, coOrd, EPINX_T *, EPINX_T * );
DIST_T GetTrkDistance( track_cp, coOrd *);
track_p OnTrack( coOrd *, INT_T, BOOL_T );
-track_p OnTrackIgnore(coOrd *, INT_T, BOOL_T , track_p );
+track_p OnTrackIgnore(coOrd *, INT_T, BOOL_T, track_p );
track_p OnTrack2( coOrd *, INT_T, BOOL_T, BOOL_T, track_p );
void ComputeRectBoundingBox( track_p, coOrd, coOrd );
void ComputeBoundingBox( track_p );
-void DrawEndPt( drawCmd_p, track_p, EPINX_T, wDrawColor );
-void DrawEndPt2( drawCmd_p, track_p, EPINX_T, wDrawColor );
-void DrawEndElev( drawCmd_p, track_p, EPINX_T, wDrawColor );
+void DrawEndPt( drawCmd_p, track_p, EPINX_T, wDrawColor );
+void DrawEndPt2( drawCmd_p, track_p, EPINX_T, wDrawColor );
wDrawColor GetTrkColor( track_p, drawCmd_p );
void DrawTrack( track_cp, drawCmd_p, wDrawColor );
void DrawTracks( drawCmd_p, DIST_T, coOrd, coOrd );
void DrawNewTrack( track_cp );
void DrawOneTrack( track_cp, drawCmd_p );
void UndrawNewTrack( track_cp );
-void DrawSelectedTracks( drawCmd_p );
+void DrawSelectedTracks( drawCmd_p, BOOL_T );
void HilightElevations( BOOL_T );
void HilightSelectedEndPt( BOOL_T, track_p, EPINX_T );
-DIST_T EndPtDescriptionDistance( coOrd, track_p, EPINX_T, coOrd *, BOOL_T show_hidden, BOOL_T * hidden );
-STATUS_T EndPtDescriptionMove( track_p, EPINX_T, wAction_t, coOrd );
track_p FindTrack( TRKINX_T );
void ResolveIndex( void );
void RenumberTracks( void );
BOOL_T ReadTrack( char * );
BOOL_T WriteTracks( FILE *, wBool_t );
-BOOL_T ExportTracks( FILE * , coOrd *);
+BOOL_T ExportTracks( FILE *, coOrd * );
void ImportStart( void );
-void ImportEnd( coOrd , wBool_t, wBool_t);
+void ImportEnd( coOrd, wBool_t, wBool_t);
void FreeTrack( track_p );
void ClearTracks( void );
BOOL_T TrackIterate( track_p * );
-void LoosenTracks( void * unused );
+void LoosenTracks( void * );
void SaveTrackState( void );
void RestoreTrackState( void );
@@ -669,6 +419,7 @@ void RestoreCarState( void );
TRKTYP_T InitObject( trackCmd_t* );
int ConnectTracks( track_p, EPINX_T, track_p, EPINX_T );
+void ConnectAllEndPts(track_p);
BOOL_T ReconnectTrack( track_p, EPINX_T, track_p, EPINX_T );
void DisconnectTracks( track_p, EPINX_T, track_p, EPINX_T );
BOOL_T ConnectAbuttingTracks( track_p, EPINX_T, track_p, EPINX_T );
@@ -676,7 +427,8 @@ BOOL_T ConnectTurntableTracks(track_p, EPINX_T, track_p, EPINX_T );
BOOL_T SplitTrack( track_p, coOrd, EPINX_T, track_p *leftover, BOOL_T );
BOOL_T TraverseTrack( traverseTrack_p, DIST_T * );
BOOL_T RemoveTrack( track_p*, EPINX_T*, DIST_T* );
-BOOL_T TrimTrack( track_p, EPINX_T, DIST_T, coOrd pos, ANGLE_T angle, DIST_T radius, coOrd center);
+BOOL_T TrimTrack( track_p, EPINX_T, DIST_T, coOrd pos, ANGLE_T angle,
+ DIST_T radius, coOrd center);
BOOL_T MergeTracks( track_p, EPINX_T, track_p, EPINX_T );
STATUS_T ExtendStraightFromOrig( track_p, wAction_t, coOrd );
STATUS_T ExtendTrackFromOrig( track_p, wAction_t, coOrd );
@@ -694,7 +446,8 @@ BOOL_T ReplayTrackData(track_p, void *, long);
DIST_T GetFlexLength( track_p, EPINX_T, coOrd * );
void LabelLengths( drawCmd_p, track_p, wDrawColor );
DIST_T GetTrkLength( track_p, EPINX_T, EPINX_T );
-void AddTrkDetails(drawCmd_p d, track_p trk, coOrd pos, DIST_T length, wDrawColor color);
+void AddTrkDetails(drawCmd_p d, track_p trk, coOrd pos, DIST_T length,
+ wDrawColor color);
void SelectAbove( void * unused );
void SelectBelow( void * unused );
@@ -702,21 +455,55 @@ void SelectBelow( void * unused );
void FlipPoint( coOrd*, coOrd, ANGLE_T );
void FlipTrack( track_p, coOrd, ANGLE_T );
+void DrawTurnout(track_p, drawCmd_p, wDrawColor);
void DrawPositionIndicators( void );
void AdvancePositionIndicator( track_p, coOrd, coOrd *, ANGLE_T * );
-BOOL_T MakeParallelTrack( track_p, coOrd, DIST_T, DIST_T, track_p *, coOrd *, coOrd * , BOOL_T);
+BOOL_T MakeParallelTrack( track_p, coOrd, DIST_T, DIST_T, track_p *, coOrd *,
+ coOrd *, BOOL_T);
+
+/*trkendpt.c*/
+coOrd GetTrkEndPos( track_p, EPINX_T );
+#define GetTrkEndPosXY( trk, ep ) PutDim(GetTrkEndPos(trk,ep).x), PutDim(GetTrkEndPos(trk,ep).y)
+ANGLE_T GetTrkEndAngle( track_p, EPINX_T );
+long GetTrkEndOption( track_p, EPINX_T );
+long SetTrkEndOption( track_p, EPINX_T, long );
+void SetTrkEndPoint( track_p, EPINX_T, coOrd, ANGLE_T );
+void SetTrkEndPointSilent( track_p, EPINX_T, coOrd, ANGLE_T );
+track_p GetTrkEndTrk( track_p, EPINX_T );
+BOOL_T WriteEndPt( FILE *, track_cp, EPINX_T );
+void DrawEndElev( drawCmd_p, track_p, EPINX_T, wDrawColor );
+DIST_T EndPtDescriptionDistance( coOrd, track_p, EPINX_T, coOrd *,
+ BOOL_T show_hidden, BOOL_T * hidden );
+STATUS_T EndPtDescriptionMove( track_p, EPINX_T, wAction_t, coOrd );
+void SetTrkEndElev( track_p, EPINX_T, int, DIST_T, char * );
+void GetTrkEndElev( track_p trk, EPINX_T e, int *option, DIST_T *height );
+int GetTrkEndElevMode( track_p, EPINX_T );
+int GetTrkEndElevUnmaskedMode( track_p, EPINX_T );
+DIST_T GetTrkEndElevHeight( track_p, EPINX_T );
+BOOL_T GetTrkEndElevCachedHeight (track_p trk, EPINX_T e, DIST_T *height,
+ DIST_T *grade);
+void SetTrkEndElevCachedHeight ( track_p trk, EPINX_T e, DIST_T height,
+ DIST_T grade);
+char * GetTrkEndElevStation( track_p, EPINX_T );
+#define EndPtIsDefinedElev( T, E ) (GetTrkEndElevMode(T,E)==ELEV_DEF)
+#define EndPtIsIgnoredElev( T, E ) (GetTrkEndElevMode(T,E)==ELEV_IGNORE)
+#define EndPtIsStationElev( T, E ) (GetTrkEndElevMode(T,E)==ELEV_STATION)
/*tstraight.c*/
-DIST_T StraightDescriptionDistance(coOrd pos, track_p trk, coOrd * dpos, BOOL_T show_hidden, BOOL_T * hidden);
+DIST_T StraightDescriptionDistance(coOrd pos, track_p trk, coOrd * dpos,
+ BOOL_T show_hidden, BOOL_T * hidden);
STATUS_T StraightDescriptionMove(track_p trk,wAction_t action,coOrd pos );
/*tease.c*/
-DIST_T JointDescriptionDistance(coOrd pos,track_p trk,coOrd * dpos,BOOL_T show_hidden,BOOL_T * hidden);
+DIST_T JointDescriptionDistance(coOrd pos,track_p trk,coOrd * dpos,
+ BOOL_T show_hidden,BOOL_T * hidden);
STATUS_T JointDescriptionMove(track_p trk,wAction_t action,coOrd pos );
/* cmisc.c */
extern wIndex_t describeCmdInx;
+extern BOOL_T inDescribeCmd;
+extern BOOL_T descUndoStarted;
typedef enum { DESC_NULL, DESC_POS, DESC_FLOAT, DESC_ANGLE, DESC_LONG, DESC_COLOR, DESC_DIM, DESC_PIVOT, DESC_LAYER, DESC_STRING, DESC_TEXT, DESC_LIST, DESC_EDITABLELIST, DESC_BOXED } descType;
#define DESC_RO (1<<0)
#define DESC_IGNORE (1<<1)
@@ -726,27 +513,37 @@ typedef enum { DESC_NULL, DESC_POS, DESC_FLOAT, DESC_ANGLE, DESC_LONG, DESC_COLO
typedef enum { DESC_PIVOT_FIRST, DESC_PIVOT_MID, DESC_PIVOT_SECOND, DESC_PIVOT_NONE } descPivot_t;
#define DESC_PIVOT_1
typedef struct {
- coOrd pos;
- POS_T ang;
- } descEndPt_t;
+ coOrd pos;
+ POS_T ang;
+} descEndPt_t;
typedef struct {
- descType type;
- char * label;
- void * valueP;
- unsigned int max_string;
- int mode;
- wControl_p control0;
- wControl_p control1;
- wWinPix_t posy;
- } descData_t, * descData_p;
+ descType type;
+ char * label;
+ void * valueP;
+ unsigned int max_string;
+ int mode;
+ wControl_p control0;
+ wControl_p control1;
+ wWinPix_t posy;
+} descData_t, * descData_p;
typedef void (*descUpdate_t)( track_p, int, descData_p, BOOL_T );
void DoDescribe( char *, track_p, descData_p, descUpdate_t );
void DescribeCancel( void );
BOOL_T UpdateDescStraight( int, int, int, int, int, descData_p, long );
STATUS_T CmdDescribe(wAction_t,coOrd);
-
+
/* compound.c */
+#define LABEL_MANUF (1<<0)
+#define LABEL_PARTNO (1<<1)
+#define LABEL_DESCR (1<<2)
+#define LABEL_COST (1<<7)
+#define LABEL_FLIPPED (1<<8)
+#define LABEL_TABBED (1<<9)
+#define LABEL_UNGROUPED (1<<10)
+#define LABEL_SPLIT (1<<11)
+extern long listLabels;
+extern long layoutLabels;
DIST_T CompoundDescriptionDistance( coOrd, track_p, coOrd *, BOOL_T, BOOL_T * );
STATUS_T CompoundDescriptionMove( track_p, wAction_t, coOrd );
@@ -770,12 +567,13 @@ void DrawTrackElev( track_p, drawCmd_p, BOOL_T );
/* cdraw.c */
typedef enum {DRAWLINESOLID,
- DRAWLINEDASH,
- DRAWLINEDOT,
- DRAWLINEDASHDOT,
- DRAWLINEDASHDOTDOT,
- DRAWLINECENTER,
- DRAWLINEPHANTOM } drawLineType_e;
+ DRAWLINEDASH,
+ DRAWLINEDOT,
+ DRAWLINEDASHDOT,
+ DRAWLINEDASHDOTDOT,
+ DRAWLINECENTER,
+ DRAWLINEPHANTOM
+ } drawLineType_e;
track_p MakeDrawFromSeg( coOrd, ANGLE_T, trkSeg_p );
track_p MakePolyLineFromSegs( coOrd, ANGLE_T, dynArr_t * );
void DrawOriginAnchor(track_p);
@@ -787,13 +585,17 @@ void SetLineType( track_p trk, int width );
void MenuMode( void * moveVP );
/* chotbar.c */
+extern long showFlexTrack;
+extern long hotBarLabels;
+extern long carHotbarModeInx;
extern DIST_T curBarScale;
void InitHotBar( void );
void HideHotBar( void );
void LayoutHotBar ( void *);
typedef enum { HB_SELECT, HB_DRAW, HB_LISTTITLE, HB_BARTITLE, HB_FULLTITLE } hotBarProc_e;
typedef char * (*hotBarProc_t)( hotBarProc_e, void *, drawCmd_p, coOrd * );
-void AddHotBarElement( char *, coOrd, coOrd, BOOL_T, BOOL_T, DIST_T, void *, hotBarProc_t );
+void AddHotBarElement( char *, coOrd, coOrd, BOOL_T, BOOL_T, DIST_T, void *,
+ hotBarProc_t );
void HotBarCancel( void );
void AddHotBarTurnouts( void );
void AddHotBarStructures( void );
diff --git a/app/bin/trackx.h b/app/bin/trackx.h
index e572011..5e1bc88 100644
--- a/app/bin/trackx.h
+++ b/app/bin/trackx.h
@@ -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
*/
@@ -28,26 +28,25 @@
#include "track.h"
typedef struct track_t {
- struct track_t *next;
- TRKINX_T index;
- TRKTYP_T type;
- unsigned int layer;
- signed char scale;
- BOOL_T modified:1;
- BOOL_T deleted:1;
- BOOL_T new:1;
- unsigned int width:2;
- unsigned int elevMode:2;
- unsigned int bits:13;
- EPINX_T endCnt;
- trkEndPt_p endPt;
- struct { float x; float y; } lo, hi;
- struct extraDataBase_t * extraData;
- CSIZE_T extraSize;
- DIST_T elev;
- } track_t;
+ struct track_t *next;
+ TRKINX_T index;
+ TRKTYP_T type;
+ unsigned int layer;
+ signed char scale;
+ BOOL_T modified:1;
+ BOOL_T deleted:1;
+ BOOL_T new:1;
+ unsigned int width:2;
+ unsigned int elevMode:2;
+ unsigned int bits:14; // Make sure all TB_ flags can fit
+ EPINX_T endCnt;
+ trkEndPt_p endPt;
+ struct { float x; float y; } lo, hi;
+ struct extraDataBase_t * extraData;
+ CSIZE_T extraSize;
+ DIST_T elev;
+} track_t;
extern track_p to_first;
extern track_p * to_last;
-#define TRK_ITERATE(TRK) for (TRK=to_first; TRK!=NULL; TRK=TRK->next) if (!(TRK->deleted))
#endif
diff --git a/app/bin/trkendpt.c b/app/bin/trkendpt.c
new file mode 100644
index 0000000..a9ca40b
--- /dev/null
+++ b/app/bin/trkendpt.c
@@ -0,0 +1,648 @@
+/*
+ * $Header: $
+ */
+
+/* XTrkCad - Model Railroad CAD
+ * Copyright (C) 2022 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "common.h"
+#include "common.h"
+#include "common-ui.h"
+#include "fileio.h"
+#include "param.h"
+#include "track.h"
+#include "trkendpt.h"
+#include "trkendptx.h"
+#include "draw.h"
+
+
+/************************************************************************
+ * Basic Access
+ */
+
+EXPORT CSIZE_T EndPtSize(
+ EPINX_T epCnt )
+{
+ return epCnt * sizeof *(trkEndPt_p)NULL;
+}
+
+
+EXPORT coOrd GetEndPtPos( trkEndPt_p epp )
+{
+ return epp->pos;
+}
+
+
+EXPORT ANGLE_T GetEndPtAngle( trkEndPt_p epp )
+{
+ return epp->angle;
+}
+
+
+EXPORT track_p GetEndPtTrack( trkEndPt_p epp )
+{
+ return epp->track;
+}
+
+
+EXPORT void SetEndPt( trkEndPt_p epp, coOrd pos, ANGLE_T angle )
+{
+ epp->pos = pos;
+ epp->angle = angle;
+}
+
+
+EXPORT EPINX_T GetEndPtEndPt( trkEndPt_p epp )
+{
+ return (EPINX_T)(epp->index);
+}
+
+
+EXPORT TRKINX_T GetEndPtIndex( trkEndPt_p epp )
+{
+ return (TRKINX_T)(epp->index);
+}
+
+
+EXPORT void SetEndPtTrack( trkEndPt_p epp, track_p trk )
+{
+ epp->track = trk;
+ epp->index = -1;
+}
+
+
+EXPORT void SetEndPtEndPt( trkEndPt_p epp, EPINX_T ep )
+{
+ epp->index = ep;
+}
+
+
+EXPORT trkEndPt_p EndPtIndex( trkEndPt_p epp, EPINX_T ep )
+{
+ return epp+ep;
+}
+
+
+/************************************************************************
+ * Temp End Points
+ */
+
+static dynArr_t tempEndPts_da;
+
+EXPORT void TempEndPtsReset( void )
+{
+ DYNARR_RESET( trkEndPt_t, tempEndPts_da );
+}
+
+
+EXPORT void TempEndPtsSet( EPINX_T ep )
+{
+ DYNARR_SET( trkEndPt_t, tempEndPts_da, ep );
+ memset( &DYNARR_N(trkEndPt_t,tempEndPts_da,0), 0,
+ ep * sizeof *(trkEndPt_p)NULL );
+}
+
+
+EXPORT EPINX_T TempEndPtsCount( void )
+{
+ return tempEndPts_da.cnt;
+}
+
+
+EXPORT trkEndPt_p TempEndPt( EPINX_T ep )
+{
+ CHECK( ep < tempEndPts_da.cnt );
+ return &DYNARR_N( trkEndPt_t, tempEndPts_da, ep );
+}
+
+
+#ifndef MKTURNOUT
+
+EXPORT trkEndPt_p TempEndPtsAppend( void )
+{
+ DYNARR_APPEND( trkEndPt_t, tempEndPts_da, 10 );
+ trkEndPt_p epp = &DYNARR_LAST( trkEndPt_t, tempEndPts_da );
+ memset( epp, 0, sizeof *epp );
+ return epp;
+}
+
+
+EXPORT void SwapEndPts(
+ trkEndPt_p epp,
+ EPINX_T ep0,
+ EPINX_T ep1 )
+{
+ trkEndPt_t tempEP;
+ tempEP = epp[ep0];
+ epp[ep0] = epp[ep1];
+ epp[ep1] = tempEP;
+}
+
+
+/************************************************************************
+ * Track level access
+ */
+
+EXPORT void SetTrkEndPoint( track_p trk, EPINX_T ep, coOrd pos, ANGLE_T angle )
+{
+ CHECK( ep < GetTrkEndPtCnt(trk) );
+ // check setTrkEndPoint: endPt is not connected
+ CHECK( GetEndPtTrack( GetTrkEndPt( trk, ep ) ) == NULL );
+ SetEndPt( GetTrkEndPt( trk, ep ), pos, angle );
+}
+
+
+EXPORT void SetTrkEndPointSilent( track_p trk, EPINX_T ep, coOrd pos,
+ ANGLE_T angle )
+{
+ CHECK( ep < GetTrkEndPtCnt(trk) );
+ SetEndPt( GetTrkEndPt( trk, ep ), pos, angle );
+}
+
+
+EXPORT coOrd GetTrkEndPos( track_p trk, EPINX_T ep )
+{
+ CHECK( ep < GetTrkEndPtCnt(trk) );
+ return GetTrkEndPt(trk,ep)->pos;
+}
+
+
+EXPORT ANGLE_T GetTrkEndAngle( track_p trk, EPINX_T ep )
+{
+ CHECK( ep < GetTrkEndPtCnt(trk) );
+ return GetTrkEndPt(trk,ep)->angle;
+}
+
+
+EXPORT track_p GetTrkEndTrk( track_p trk, EPINX_T ep )
+{
+ CHECK( ep < GetTrkEndPtCnt(trk) );
+ return GetTrkEndPt(trk,ep)->track;
+}
+
+
+EXPORT long GetTrkEndOption( track_p trk, EPINX_T ep )
+{
+ CHECK( ep < GetTrkEndPtCnt(trk) );
+ return GetTrkEndPt(trk,ep)->option;
+}
+
+
+EXPORT long SetTrkEndOption( track_p trk, EPINX_T ep, long option )
+{
+ CHECK( ep < GetTrkEndPtCnt(trk) );
+ return GetTrkEndPt(trk,ep)->option = option;
+}
+
+
+/************************************************************************
+ * Elevations
+ */
+
+EXPORT void SetTrkEndElev( track_p trk, EPINX_T ep, int option, DIST_T height,
+ char * station )
+{
+ track_p trk1;
+ EPINX_T ep1;
+ trkEndPt_p epp = GetTrkEndPt( trk, ep );
+ epp->elev.option = option;
+ epp->elev.cacheSet = FALSE;
+ if (EndPtIsDefinedElev(trk,ep)) {
+ epp->elev.u.height = height;
+ } else if (EndPtIsStationElev(trk,ep)) {
+ if (station == NULL) {
+ station = "";
+ }
+ epp->elev.u.name = MyStrdup(station);
+ }
+ if ( (trk1=GetTrkEndTrk(trk, ep)) != NULL ) {
+ ep1 = GetEndPtConnectedToMe( trk1, trk );
+ if (ep1 >= 0) {
+ trkEndPt_p epp1 = GetTrkEndPt( trk1, ep1 );
+ epp1->elev.option = option;
+ epp1->elev.u.height = height;
+ if (EndPtIsDefinedElev(trk1,ep1)) {
+ epp1->elev.u.height = height;
+ } else if (EndPtIsStationElev(trk,ep)) {
+ epp1->elev.u.name = MyStrdup(station);
+ }
+ }
+ }
+}
+
+
+EXPORT void GetTrkEndElev( track_p trk, EPINX_T e, int *option, DIST_T *height )
+{
+ trkEndPt_p epp = GetTrkEndPt( trk, e );
+ *option = epp->elev.option;
+ *height = epp->elev.u.height;
+}
+
+
+EXPORT int GetTrkEndElevUnmaskedMode( track_p trk, EPINX_T e )
+{
+ trkEndPt_p epp = GetTrkEndPt( trk, e );
+ return epp->elev.option;
+}
+
+
+EXPORT int GetTrkEndElevMode( track_p trk, EPINX_T e )
+{
+ trkEndPt_p epp = GetTrkEndPt( trk, e );
+ return epp->elev.option&ELEV_MASK;
+}
+
+
+EXPORT DIST_T GetTrkEndElevHeight( track_p trk, EPINX_T e )
+{
+ CHECK( EndPtIsDefinedElev(trk,e) );
+ trkEndPt_p epp = GetTrkEndPt( trk, e );
+ return epp->elev.u.height;
+}
+
+
+EXPORT void ClrEndPtElevCache(
+ EPINX_T epCnt,
+ trkEndPt_p epPts )
+{
+ for ( EPINX_T ep = 0; ep < epCnt; ep++ ) {
+ epPts[ep].elev.cacheSet = FALSE;
+ }
+}
+
+
+static BOOL_T bCacheElev = TRUE;
+
+EXPORT BOOL_T GetTrkEndElevCachedHeight (track_p trk, EPINX_T e,
+ DIST_T * height, DIST_T * grade)
+{
+ if ( ! bCacheElev ) {
+ return FALSE;
+ }
+ trkEndPt_p epp = GetTrkEndPt( trk, e );
+ if (epp->elev.cacheSet) {
+ *height = epp->elev.cachedElev;
+ *grade = epp->elev.cachedGrade;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+EXPORT void SetTrkEndElevCachedHeight ( track_p trk, EPINX_T e, DIST_T height,
+ DIST_T grade)
+{
+ trkEndPt_p epp = GetTrkEndPt( trk, e );
+ epp->elev.cachedElev = height;
+ epp->elev.cachedGrade = grade;
+ epp->elev.cacheSet = TRUE;
+}
+
+
+EXPORT char * GetTrkEndElevStation( track_p trk, EPINX_T e )
+{
+ CHECK( EndPtIsStationElev(trk,e) );
+ trkEndPt_p epp = GetTrkEndPt( trk, e );
+ if ( epp->elev.u.name == NULL ) {
+ return "";
+ } else {
+ return epp->elev.u.name;
+ }
+}
+
+
+EXPORT void DrawEndElev( drawCmd_p d, track_p trk, EPINX_T ep,
+ wDrawColor color )
+{
+ coOrd pp;
+ wFont_p fp;
+ elev_t * elev;
+ track_p trk1;
+ DIST_T elev0, grade;
+ ANGLE_T a=0;
+ int style = BOX_BOX_BACKGROUND;
+ BOOL_T gradeOk = TRUE;
+ char *elevStr;
+
+ if ((labelEnable&LABELENABLE_ENDPT_ELEV)==0) {
+ return;
+ }
+ elev = &GetTrkEndPt(trk,ep)->elev;
+ if ( (elev->option&ELEV_MASK)==ELEV_NONE ||
+ (elev->option&ELEV_VISIBLE)==0 ) {
+ return;
+ }
+ if ( (trk1=GetTrkEndTrk(trk,ep)) && GetTrkIndex(trk1)<GetTrkIndex(trk) ) {
+ return;
+ }
+
+ fp = wStandardFont( F_HELV, FALSE, FALSE );
+ pp = GetTrkEndPos( trk, ep );
+ switch ((elev->option&ELEV_MASK)) {
+ case ELEV_COMP:
+ case ELEV_GRADE:
+ if ( color == wDrawColorWhite ) {
+ elev0 = grade = elev->u.height;
+ } else if ( !ComputeElev( trk, ep, FALSE, &elev0, &grade, FALSE ) ) {
+ elev0 = grade = 0;
+ gradeOk = FALSE;
+ }
+ if ((elev->option&ELEV_MASK)==ELEV_COMP) {
+ elevStr = FormatDistance(elev0);
+ elev->u.height = elev0;
+ } else if (gradeOk) {
+ sprintf( message, "%0.1f%%", round(fabs(grade*100.0)*10)/10 );
+ elevStr = message;
+ a = GetTrkEndAngle( trk, ep );
+ style = BOX_ARROW_BACKGROUND;
+ if (grade <= -0.001) {
+ a = NormalizeAngle( a+180.0 );
+ } else if ( grade < 0.001 ) {
+ style = BOX_BOX_BACKGROUND;
+ }
+ elev->u.height = grade;
+ } else {
+ elevStr = "????%%";
+ }
+ break;
+ case ELEV_DEF:
+ elevStr = FormatDistance( elev->u.height);
+ break;
+ case ELEV_STATION:
+ elevStr = elev->u.name;
+ break;
+ default:
+ return;
+ }
+ coOrd startLine = pp, endLine = pp;
+ pp.x += elev->doff.x;
+ pp.y += elev->doff.y;
+ if (color==drawColorPreviewSelected) {
+ Translate(&endLine,pp,FindAngle(pp,startLine),descriptionFontSize/d->dpi);
+ DrawLine( d, startLine, endLine, 0, color );
+ }
+ DrawBoxedString( style, d, pp, elevStr, fp, (wFontSize_t)descriptionFontSize,
+ color, a );
+
+}
+
+
+/************************************************************************
+ * Descriptions
+ */
+
+EXPORT DIST_T EndPtDescriptionDistance(
+ coOrd pos,
+ track_p trk,
+ EPINX_T ep,
+ coOrd *dpos,
+ BOOL_T show_hidden,
+ BOOL_T * hidden)
+{
+ elev_t *e;
+ coOrd pos1;
+ track_p trk1;
+ *dpos = pos;
+ if (hidden) { *hidden = FALSE; }
+ e = &GetTrkEndPt(trk,ep)->elev;
+ if ((e->option&ELEV_MASK)==ELEV_NONE) {
+ return DIST_INF;
+ }
+ if (((e->option&ELEV_VISIBLE)==0) && !show_hidden) {
+ return DIST_INF;
+ }
+ if ((trk1=GetTrkEndTrk(trk,ep)) && GetTrkIndex(trk1)<GetTrkIndex(trk)) {
+ return DIST_INF;
+ }
+ if ((e->option&ELEV_VISIBLE)==0) { //Hidden - disregard offset
+ if (hidden) { *hidden = TRUE; }
+ return FindDistance( GetTrkEndPos(trk,ep), pos );
+ }
+ /*REORIGIN( pos1, e->doff, GetTrkEndPos(trk,ep), GetTrkEndAngle(trk,ep) );*/
+ pos1 = GetTrkEndPos(trk,ep);
+ coOrd tpos = pos1;
+ pos1.x += e->doff.x;
+ pos1.y += e->doff.y;
+ *dpos = pos1;
+ if (hidden) { *hidden = !(e->option&ELEV_VISIBLE); }
+ if (FindDistance(tpos,pos)<FindDistance( pos1, pos )) {
+ return FindDistance(tpos,pos);
+ }
+ return FindDistance( pos1, pos );
+}
+
+
+EXPORT STATUS_T EndPtDescriptionMove(
+ track_p trk,
+ EPINX_T ep,
+ wAction_t action,
+ coOrd pos )
+{
+ static coOrd p0;
+// static coOrd p1;
+ elev_t *e;
+ track_p trk1;
+
+ e = &GetTrkEndPt(trk,ep)->elev;
+ switch (action) {
+ case C_DOWN:
+ p0 = GetTrkEndPos(trk,ep);
+// p1 = pos;
+ e->option |= ELEV_VISIBLE; //Make sure we make visible
+ DrawEndElev( &mainD, trk, ep, wDrawColorWhite );
+ /*no break*/
+ case C_MOVE:
+ case C_UP:
+// p1 = pos;
+ e->doff.x = (pos.x-p0.x);
+ e->doff.y = (pos.y-p0.y);
+ if ((trk1=GetTrkEndTrk(trk,ep))) {
+ EPINX_T ep1 = GetEndPtConnectedToMe(trk1,trk);
+ trkEndPt_p epp = GetTrkEndPt( trk1, ep1 );
+// e1 = &trk1->endPt[GetEndPtConnectedToMe(trk1,trk)].elev;
+ epp->elev.doff = e->doff;
+ }
+ if ( action == C_UP ) {
+ wDrawColor color = GetTrkColor( trk, &mainD );
+ DrawEndElev( &mainD, trk, ep, color );
+ }
+ return action==C_UP?C_TERMINATE:C_CONTINUE;
+
+ case C_REDRAW:
+ DrawEndElev( &tempD, trk, ep, drawColorPreviewSelected );
+ break;
+ }
+ return C_CONTINUE;
+}
+
+
+/************************************************************************
+ * Read/Write End Points
+ */
+
+EXPORT BOOL_T GetEndPtArg(
+ char * cp,
+ char type,
+ BOOL_T bImprovedEnds )
+{
+ long option;
+ long option2;
+ trkEndPt_p e = TempEndPtsAppend();
+ FLOAT_T ignoreFloat;
+
+ if (type == SEG_CONEP) {
+ if ( !GetArgs( cp, "dc", &e->index, &cp ) ) {
+ /*??*/return FALSE;
+ }
+ } else {
+ e->index = -1;
+ }
+ if ( !GetArgs( cp, "pfc",
+ &e->pos, &e->angle, &cp) ) {
+ /*??*/return FALSE;
+ }
+ e->elev.option = 0;
+ e->elev.u.height = 0.0;
+ e->elev.doff = zero;
+ e->option = 0;
+ if (bImprovedEnds) { //E4 and T4
+ if (!GetArgs( cp, "lpc", &option, &e->elev.doff, &cp )) {
+ /*??*/return FALSE;
+ }
+ switch (option&ELEV_MASK) {
+ case ELEV_STATION:
+ GetArgs( cp, "qc", &e->elev.u.name, &cp);
+ break;
+ default:
+ GetArgs( cp, "fc", &e->elev.u.height, &cp); //First height
+ }
+ DIST_T height2;
+ if (!GetArgs( cp, "flLlc", &height2, &option2, &e->elev.option, &e->option,
+ &cp ) ) {
+ return FALSE;
+ }
+ if (option2) { e->elev.option |= ELEV_VISIBLE; }
+ GetArgs(cp, "fc", &ignoreFloat, &cp);
+ return TRUE;
+ }
+ if ( cp != NULL ) {
+ if (paramVersion < 7) {
+ GetArgs( cp, "dfp", &e->elev.option, &e->elev.u.height, &e->elev.doff, &cp );
+ /*??*/return TRUE;
+ }
+ GetArgs( cp, "lpc", &option, &e->elev.doff, &cp );
+ e->option = option >> 8;
+ e->elev.option = (int)(option&0xFF);
+ if ( (e->elev.option&ELEV_MASK) != ELEV_NONE ) {
+ switch (e->elev.option&ELEV_MASK) {
+ case ELEV_DEF:
+ GetArgs( cp, "fc", &e->elev.u.height, &cp );
+ break;
+ case ELEV_STATION:
+ GetArgs( cp, "qc", &e->elev.u.name, &cp );
+ /*??*/break;
+ default:
+ ;
+ }
+ }
+ }
+ return TRUE;
+}
+
+
+EXPORT BOOL_T bWriteEndPtDirectIndex = FALSE;
+EXPORT BOOL_T bWriteEndPtExporting = FALSE;
+
+
+EXPORT BOOL_T WriteEndPt( FILE * f, track_cp trk, EPINX_T ep )
+{
+ trkEndPt_p endPt = GetTrkEndPt(trk,ep);
+ BOOL_T rc = TRUE;
+ long option;
+
+ CHECK ( endPt );
+ if (bWriteEndPtDirectIndex && endPt->index > 0) {
+ rc &= fprintf( f, "\tT4 %ld ", endPt->index )>0;
+ } else if (endPt->track == NULL ||
+ ( bWriteEndPtExporting && !GetTrkSelected(endPt->track) ) ) {
+ rc &= fprintf( f, "\tE4 " )>0;
+ } else {
+ rc &= fprintf( f, "\tT4 %d ", GetTrkIndex(endPt->track) )>0;
+ }
+ rc &= fprintf( f, "%0.6f %0.6f %0.6f", endPt->pos.x, endPt->pos.y,
+ endPt->angle )>0;
+ option = (endPt->option<<8) | (endPt->elev.option&0xFF);
+ if ( option != 0 ) {
+ rc &= fprintf( f, " %ld %0.6f %0.6f", option, endPt->elev.doff.x,
+ endPt->elev.doff.y )>0;
+ switch ( endPt->elev.option&ELEV_MASK ) {
+ case ELEV_DEF:
+ rc &= fprintf( f, " %0.6f ", endPt->elev.u.height )>0;
+ break;
+ case ELEV_STATION:
+ rc &= fprintf( f, " \"%s\" ", PutTitle( endPt->elev.u.name ) )>0;
+ break;
+ default:
+ rc &= fprintf( f, " 0.0 ")>0;
+ }
+ } else {
+ rc &= fprintf( f, " 0 0.0 0.0 0.0 ")>0;
+ }
+ if ((endPt->elev.option&ELEV_MASK) == ELEV_DEF) {
+ rc &= fprintf( f, "%0.6f ",endPt->elev.u.height)>0;
+ } else {
+ rc &= fprintf( f, "0.0 ")>0;
+ }
+ long elevVisible = (endPt->elev.option&ELEV_VISIBLE)?1:0;
+ long elevType = endPt->elev.option&ELEV_MASK;
+ long gapType = endPt->option;
+ rc &= fprintf( f, "%ld %ld %ld ", elevVisible, elevType, gapType)>0;
+ rc &= fprintf( f, "%0.6f ", GetTrkElev( trk ) )>0;
+ rc &= fprintf( f, "\n" )>0;
+ return rc;
+}
+
+
+/************************************************************************
+* Read/Write End Points
+*/
+
+wBool_t CompareEndPt(
+ char * cp,
+ track_p trk1,
+ track_p trk2,
+ EPINX_T ep )
+{
+ trkEndPt_p epp1 = GetTrkEndPt( trk1, ep );
+ trkEndPt_p epp2 = GetTrkEndPt( trk2, ep );
+ REGRESS_CHECK_POS( "Pos", epp1, epp2, pos )
+ REGRESS_CHECK_ANGLE( "Angle", epp1, epp2, angle )
+ // Actual EP connection
+ int inx1 = -1;
+ if ( epp1->track ) {
+ inx1 = GetTrkIndex( epp1->track );
+ }
+ // Expected EP connection. endPt[inx].track is not resolved
+ int inx2 = epp2->index;
+ if ( inx1 != inx2 ) {
+ sprintf( cp, "Index: Actual` %d, Expected %d\n", inx1, inx2 );
+ return FALSE;
+ }
+ REGRESS_CHECK_INT( "Option", epp1, epp2, option )
+ return TRUE;
+}
+#endif
diff --git a/app/bin/trkendpt.h b/app/bin/trkendpt.h
new file mode 100644
index 0000000..dc04bfb
--- /dev/null
+++ b/app/bin/trkendpt.h
@@ -0,0 +1,54 @@
+/** \file trkendpt.h
+ *
+ */
+
+/* XTrkCad - Model Railroad CAD
+ * Copyright (C) 2022 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+
+#ifndef TRKENDPT_H
+#define TRKENDPT_H
+
+#include "common.h"
+
+void TempEndPtsReset( void );
+void TempEndPtsSet( EPINX_T );
+EPINX_T TempEndPtsCount( void );
+trkEndPt_p TempEndPt( EPINX_T );
+trkEndPt_p TempEndPtsAppend( void );
+
+CSIZE_T EndPtSize( EPINX_T );
+coOrd GetEndPtPos( trkEndPt_p );
+ANGLE_T GetEndPtAngle( trkEndPt_p );
+void SetEndPt( trkEndPt_p, coOrd, ANGLE_T );
+track_p GetEndPtTrack( trkEndPt_p );
+EPINX_T GetEndPtEndPt( trkEndPt_p );
+TRKINX_T GetEndPtIndex( trkEndPt_p );
+void SetEndPtTrack( trkEndPt_p, track_p);
+void SetEndPtEndPt( trkEndPt_p, EPINX_T );
+trkEndPt_p EndPtIndex( trkEndPt_p, EPINX_T );
+
+void SwapEndPts( trkEndPt_p, EPINX_T, EPINX_T );
+BOOL_T GetEndPtArg( char *, char, BOOL_T );
+void ClrEndPtElevCache( EPINX_T, trkEndPt_p );
+
+extern BOOL_T bWriteEndPtDirectIndex;
+extern BOOL_T bWriteEndPtExporting;
+
+wBool_t CompareEndPt( char * cp, track_p trk1, track_p trk2, EPINX_T ep );
+#endif
diff --git a/app/bin/cmisc2.c b/app/bin/trkendptx.h
index 128e52b..184076a 100644
--- a/app/bin/cmisc2.c
+++ b/app/bin/trkendptx.h
@@ -1,9 +1,9 @@
-/*
- * $Header: /home/dmarkle/xtrkcad-fork-cvs/xtrkcad/app/bin/cmisc2.c,v 1.4 2008-03-10 18:59:53 m_fischer Exp $
+/** \file trkendpt.h
+ *
*/
/* XTrkCad - Model Railroad CAD
- * Copyright (C) 2005 Dave Bullis
+ * Copyright (C) 2022 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
@@ -17,38 +17,35 @@
*
* 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.
- */
-
-#include "common.h"
-#include "track.h"
-
-/*****************************************************************************
- *
- * MISC2
- *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-static STATUS_T CmdBridge( wAction_t action, coOrd pos )
-{
- switch (action) {
- case C_DOWN:
- return C_INFO;
- break;
- }
- return C_INFO;
-}
-
-
-
+#ifndef TRKENDPTX_H
+#define TRKENDPTX_H
+#include "common.h"
+#include "track.h"
-#include "bitmaps/bridge.xbm"
-
-void InitCmdMisc2( wMenu_p menu )
-{
- if (extraButtons) {
- InitCommand( menu, CmdBridge, N_("Bridge"), bridge_bits, LEVEL2, IC_STICKY, ACCL_BRIDGE );
- }
-}
+typedef struct {
+ int option;
+ coOrd doff;
+ union {
+ DIST_T height;
+ char * name;
+ } u;
+ BOOL_T cacheSet;
+ double cachedElev;
+ double cachedGrade;
+} elev_t;
+
+typedef struct trkEndPt_t {
+ coOrd pos;
+ ANGLE_T angle;
+ track_p track;
+ long index;
+ elev_t elev;
+ long option;
+} trkEndPt_t;
+
+#endif
diff --git a/app/bin/trknote.c b/app/bin/trknote.c
index f2462ba..a62c22d 100644
--- a/app/bin/trknote.c
+++ b/app/bin/trknote.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 "common.h"
@@ -31,9 +31,6 @@
#include "track.h"
#include "include/utf8convert.h"
-extern BOOL_T inDescribeCmd;
-extern descData_t noteDesc[];
-
EXPORT TRKTYP_T T_NOTE = -1;
static wDrawBitMap_p note_bm, link_bm, document_bm;
@@ -47,14 +44,14 @@ typedef struct {
long acclKey;
} trknoteData_t;
-#include "bitmaps/sticky-note.xpm"
-#include "bitmaps/sticky-link.xpm"
-#include "bitmaps/sticky-doc.xpm"
+#include "bitmaps/sticky-note.xpm3"
+#include "bitmaps/sticky-link.xpm3"
+#include "bitmaps/sticky-doc.xpm3"
static trknoteData_t noteTypes[] = {
- { sticky_note_xpm, OP_NOTETEXT, N_("Note"), N_("Comment"), "cmdTextNote", 0L },
- { sticky_link_xpm, OP_NOTELINK, N_("Link"), N_("Weblink"), "cmdLinkNote", 0L },
- { sticky_doc_xpm, OP_NOTEFILE, N_("Document"), N_("Document"), "cmdFileNote", 0L },
+ { sticky_note_xpm3, OP_NOTETEXT, N_("Note"), N_("Text Note"), "cmdTextNote", ACCL_NOTE },
+ { sticky_link_xpm3, OP_NOTELINK, N_("Link"), N_("Weblink"), "cmdLinkNote", 0L },
+ { sticky_doc_xpm3, OP_NOTEFILE, N_("Document"), N_("Document"), "cmdFileNote", 0L },
};
static long curNoteType;
@@ -69,16 +66,16 @@ static coOrd posSave;
* NOTE OBJECT
*/
-static track_p NewNote(wIndex_t index, coOrd p, enum noteCommands command )
+EXPORT track_p NewNote(wIndex_t index, coOrd p, enum noteCommands command )
{
- track_p t;
- struct extraDataNote_t * xx;
- t = NewTrack(index, T_NOTE, 0, sizeof *xx);
- xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
- xx->pos = p;
+ track_p t;
+ struct extraDataNote_t * xx;
+ t = NewTrack(index, T_NOTE, 0, sizeof *xx);
+ xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
+ xx->pos = p;
xx->op = command;
- SetBoundingBox(t, p, p);
- return t;
+ SetBoundingBox(t, p, p);
+ return t;
}
/**
@@ -91,9 +88,9 @@ static track_p NewNote(wIndex_t index, coOrd p, enum noteCommands command )
static void DrawNote(track_p t, drawCmd_p d, wDrawColor color)
{
- struct extraDataNote_t *xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
- coOrd p[5];
- int type[5];
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
+ coOrd p[5];
+ int type[5];
if ((d->options & DC_SIMPLE) || mainD.scale >= 16) {
@@ -109,7 +106,7 @@ static void DrawNote(track_p t, drawCmd_p d, wDrawColor color)
p[3].y = p[3].y - (dist/2);
p[4].x = p[4].x - (dist/2);
- for (int i=0;i<5;i++) {
+ for (int i=0; i<5; i++) {
type[i] = 0;
}
DrawPoly(d, 5, p, type, color, 0, DRAW_CLOSED);
@@ -127,21 +124,21 @@ static void DrawNote(track_p t, drawCmd_p d, wDrawColor color)
bm = note_bm;
}
}
- DrawBitMap(d, xx->pos, bm, color);
- }
+ DrawBitMap(d, xx->pos, bm, color);
+ }
}
static DIST_T DistanceNote(track_p t, coOrd * p)
{
- struct extraDataNote_t *xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
- DIST_T d;
- d = FindDistance(*p, xx->pos);
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
+ DIST_T d;
+ d = FindDistance(*p, xx->pos);
- if (d < 3.0*(mainD.scale/12.0)) {
- return d;
- }
+ if (d < 3.0*(mainD.scale/12.0)) {
+ return d;
+ }
- return DIST_INF;
+ return DIST_INF;
}
static void DeleteNote(track_p t)
@@ -175,126 +172,8 @@ static void DeleteNote(track_p t)
}
}
-void
-NoteStateSave(track_p trk)
-{
- struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
- layerSave = GetTrkLayer(trk);
- posSave = xx->pos;
-}
-
-/**
-* Handle Cancel button: restore old values for layer and position
-*/
-
-void
-CommonCancelNote(track_p trk)
-{
- if (inDescribeCmd) {
- struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
- xx->layer = layerSave;
- xx->pos = posSave;
- SetBoundingBox(trk, xx->pos, xx->pos);
- }
-}
-
-static void
-CommonUpdateNote(track_p trk, int inx, struct extraDataNote_t *noteData )
-{
- struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
-
- switch (inx) {
- case OR_NOTE:
- xx->pos = noteData->pos;
- SetBoundingBox(trk, xx->pos, xx->pos);
- break;
- case LY_NOTE:
- SetTrkLayer(trk, noteData->layer);
- break;
- case CANCEL_NOTE:
- CommonCancelNote(trk);
- break;
- }
-}
-
-
-void UpdateFile(struct extraDataNote_t *noteUIData, int inx, BOOL_T needUndoStart)
-{
- track_p trk = noteUIData->trk;
- struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
-
- switch (inx) {
- case OR_NOTE:
- case LY_NOTE:
- case CANCEL_NOTE:
- CommonUpdateNote(trk, inx, noteUIData);
- break;
- case OK_FILE:
- {
- DeleteNote(trk);
- xx->noteData.fileData.path = MyStrdup(noteUIData->noteData.fileData.path);
- xx->noteData.fileData.title = MyStrdup(noteUIData->noteData.fileData.title);
- //result = malloc( maximumSize );
- //resultSize = File2URI(noteFileData->path, maximumSize, result);
- //xx->text = (char*)MyMalloc(resultSize + strlen(noteFileData->title) + 2);
- //sprintf(xx->text, "%s %s", result, noteFileData->title);
- //if (noteFileData->inArchive) {
- // CopyFile(noteFileData->path, archiveDirectory);
-
- //}
- //free(result);
- }
- break;
-
- default:
- break;
- }
-}
-
-void UpdateLink(struct extraDataNote_t *noteUIData, int inx, BOOL_T needUndoStart)
-{
- track_p trk = noteUIData->trk;
- struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
-
- switch (inx) {
- case OR_NOTE:
- case LY_NOTE:
- case CANCEL_NOTE:
- CommonUpdateNote(trk, inx, noteUIData);
- break;
-
- case OK_LINK:
- DeleteNote(trk);
- xx->noteData.linkData.title = MyStrdup(noteUIData->noteData.linkData.title);
- xx->noteData.linkData.url = MyStrdup(noteUIData->noteData.linkData.url);
- break;
- default:
- break;
- }
-}
-
-void UpdateText(struct extraDataNote_t *noteUIData, int inx, BOOL_T needUndoStart)
-{
- track_p trk = noteUIData->trk;
- struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
-
- switch (inx) {
- case OR_NOTE:
- case LY_NOTE:
- case CANCEL_NOTE:
- CommonUpdateNote(trk, inx, noteUIData);
- break;
-
- case OK_TEXT:
- DeleteNote(trk);
- xx->noteData.text = MyStrdup(noteUIData->noteData.text);
- break;
- default:
- break;
- }
- changed++;
-}
+#if 0
/**
* Get the delimited marker for the current note. Markers start and end with
* a delimiter. The marker itself is a single digit number. For plain text notes
@@ -321,6 +200,7 @@ GetNoteMarker(enum noteCommands command )
}
return(marker);
}
+#endif
/**
* Write the note to file. Handles the complete syntax for a note statement
@@ -332,13 +212,15 @@ GetNoteMarker(enum noteCommands command )
static BOOL_T WriteNote(track_p t, FILE * f)
{
- struct extraDataNote_t *xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
- BOOL_T rc = TRUE;
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
+ BOOL_T rc = TRUE;
+#ifdef UTFCONVERT
unsigned strings2convert = 1;
+#endif
rc &= fprintf(f, "NOTE %d %u 0 0 %0.6f %0.6f 0 %d", GetTrkIndex(t),
- GetTrkLayer(t),
- xx->pos.x, xx->pos.y, xx->op )>0;
+ GetTrkLayer(t),
+ xx->pos.x, xx->pos.y, xx->op )>0;
char *s[2] = { NULL, NULL };
switch (xx->op) {
@@ -348,15 +230,19 @@ static BOOL_T WriteNote(track_p t, FILE * f)
case OP_NOTELINK:
s[0]=ConvertToEscapedText( xx->noteData.linkData.url );
s[1]=ConvertToEscapedText( xx->noteData.linkData.title );
+#ifdef UTFCONVERT
strings2convert = 2;
+#endif
break;
case OP_NOTEFILE:
s[0]=ConvertToEscapedText( xx->noteData.fileData.path );
s[1]=ConvertToEscapedText( xx->noteData.fileData.title );
+#ifdef UTFCONVERT
strings2convert = 2;
+#endif
break;
default:
- AbortProg( "WriteNote: %d", xx->op );
+ CHECKMSG( FALSE, ( "WriteNote: %d", xx->op ) );
}
#ifdef UTFCONVERT
for ( unsigned int inx = 0; inx < strings2convert; inx++ ) {
@@ -374,7 +260,7 @@ static BOOL_T WriteNote(track_p t, FILE * f)
MyFree( s[1] );
}
rc &= fprintf( f, "\n" )>0;
-
+
return rc;
}
@@ -387,62 +273,67 @@ static BOOL_T WriteNote(track_p t, FILE * f)
static BOOL_T
ReadTrackNote(char *line)
{
- track_p t;
- int size;
- char * cp;
- struct extraDataNote_t *xx;
- wIndex_t index;
- wIndex_t layer;
- coOrd pos;
- DIST_T elev;
+ track_p t;
+ int size;
+ char * cp;
+ struct extraDataNote_t *xx;
+ wIndex_t index;
+ wIndex_t layer;
+ coOrd pos;
+ DIST_T elev;
char *noteText;
enum noteCommands noteType;
char * sText;
- if (!GetArgs(line + 5, paramVersion < 3 ? "XXpYdc" : paramVersion < 9 ?
- "dL00pYdc" : "dL00pfdc",
- &index, &layer, &pos, &elev, &size, &cp)) {
- return FALSE;
- }
+ if (!GetArgs(line + 5, paramVersion < 3 ? "XXpYdc" : paramVersion < 9 ?
+ "dL00pYdc" : "dL00pfdc",
+ &index, &layer, &pos, &elev, &size, &cp)) {
+ return FALSE;
+ }
if ( paramVersion >= VERSION_INLINENOTE ) {
noteType = size;
t = NewNote(index, pos, noteType);
- SetTrkLayer(t, layer);
-
- xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
+ SetTrkLayer(t, layer);
+
+ xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
switch (noteType) {
case OP_NOTETEXT:
- if ( !GetArgs( cp, "qc", &sText, &cp ) )
+ if ( !GetArgs( cp, "qc", &sText, &cp ) ) {
return FALSE;
+ }
#ifdef UTFCONVERT
ConvertUTF8ToSystem( sText );
#endif
xx->noteData.text = sText;
break;
case OP_NOTELINK:
- if ( !GetArgs( cp, "qc", &sText, &cp ) )
+ if ( !GetArgs( cp, "qc", &sText, &cp ) ) {
return FALSE;
+ }
#ifdef UTFCONVERT
ConvertUTF8ToSystem( sText );
#endif
xx->noteData.linkData.url = sText;
- if ( !GetArgs( cp, "qc", &sText, &cp ) )
+ if ( !GetArgs( cp, "qc", &sText, &cp ) ) {
return FALSE;
+ }
#ifdef UTFCONVERT
ConvertUTF8ToSystem( sText );
#endif
xx->noteData.linkData.title = sText;
break;
case OP_NOTEFILE:
- if ( !GetArgs( cp, "qc", &sText, &cp ) )
+ if ( !GetArgs( cp, "qc", &sText, &cp ) ) {
return FALSE;
+ }
#ifdef UTFCONVERT
ConvertUTF8ToSystem( sText );
#endif
xx->noteData.fileData.path = sText;
- if ( !GetArgs( cp, "qc", &sText, &cp ) )
+ if ( !GetArgs( cp, "qc", &sText, &cp ) ) {
return FALSE;
+ }
#ifdef UTFCONVERT
ConvertUTF8ToSystem( sText );
#endif
@@ -450,51 +341,48 @@ ReadTrackNote(char *line)
xx->noteData.fileData.inArchive = FALSE;
break;
default:
- AbortProg( "ReadNote: %d", noteType );
+ CHECKMSG( FALSE, ( "ReadNote: %d", noteType ) );
}
} else {
- noteText = ReadMultilineText();
+ noteText = ReadMultilineText();
- noteType = OP_NOTETEXT;
+ noteType = OP_NOTETEXT;
- if( !strncmp(noteText, DELIMITER, strlen( DELIMITER )) &&
- !strncmp(noteText + strlen(DELIMITER) + 1, DELIMITER, strlen(DELIMITER)) &&
- noteText[strlen(DELIMITER)] - '0' > 0 &&
- noteText[strlen(DELIMITER)] - '0' <= OP_NOTEFILE)
- {
- noteType = noteText[strlen(DELIMITER)] - '0';
- }
+ if( !strncmp(noteText, DELIMITER, strlen( DELIMITER )) &&
+ !strncmp(noteText + strlen(DELIMITER) + 1, DELIMITER, strlen(DELIMITER)) &&
+ noteText[strlen(DELIMITER)] - '0' > 0 &&
+ noteText[strlen(DELIMITER)] - '0' <= OP_NOTEFILE) {
+ noteType = noteText[strlen(DELIMITER)] - '0';
+ }
- t = NewNote(index, pos, noteType);
- SetTrkLayer(t, layer);
-
- xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
+ t = NewNote(index, pos, noteType);
+ SetTrkLayer(t, layer);
- switch (noteType) {
- case OP_NOTETEXT:
- xx->noteData.text = MyStrdup(noteText);
- break;
- case OP_NOTELINK:
- {
- char *ptr;
- ptr = strtok(noteText, " ");
- xx->noteData.linkData.url = MyStrdup(ptr + 2 * strlen(DELIMITER) + 1);
- xx->noteData.linkData.title = MyStrdup(noteText + strlen(ptr) + 1);
- break;
- }
- case OP_NOTEFILE:
- {
- char *ptr;
- ptr = strtok(noteText + 2 * strlen(DELIMITER) + 1, "\"");
- xx->noteData.fileData.path = MyStrdup(ptr);
- xx->noteData.fileData.title = MyStrdup(ptr + strlen(ptr) + 2 );
- xx->noteData.fileData.inArchive = FALSE;
- break;
- }
+ xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
+ switch (noteType) {
+ case OP_NOTETEXT:
+ xx->noteData.text = MyStrdup(noteText);
+ break;
+ case OP_NOTELINK: {
+ char *ptr;
+ ptr = strtok(noteText, " ");
+ xx->noteData.linkData.url = MyStrdup(ptr + 2 * strlen(DELIMITER) + 1);
+ xx->noteData.linkData.title = MyStrdup(noteText + strlen(ptr) + 1);
+ break;
+ }
+ case OP_NOTEFILE: {
+ char *ptr;
+ ptr = strtok(noteText + 2 * strlen(DELIMITER) + 1, "\"");
+ xx->noteData.fileData.path = MyStrdup(ptr);
+ xx->noteData.fileData.title = MyStrdup(ptr + strlen(ptr) + 2 );
+ xx->noteData.fileData.inArchive = FALSE;
+ break;
+ }
+
+ }
+ MyFree(noteText);
}
- MyFree(noteText);
- }
return TRUE;
}
@@ -507,42 +395,41 @@ ReadTrackNote(char *line)
static BOOL_T
ReadNote(char * line)
{
- if (strncmp(line, "NOTE MAIN", 9) == 0) {
- return ReadMainNote(line);
- } else {
- return ReadTrackNote(line);
- }
+ if (strncmp(line, "NOTE MAIN", 9) == 0) {
+ return ReadMainNote(line);
+ } else {
+ return ReadTrackNote(line);
+ }
}
static void MoveNote(track_p trk, coOrd orig)
{
- struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
- xx->pos.x += orig.x;
- xx->pos.y += orig.y;
- SetBoundingBox(trk, xx->pos, xx->pos);
+ struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
+ xx->pos.x += orig.x;
+ xx->pos.y += orig.y;
+ SetBoundingBox(trk, xx->pos, xx->pos);
}
static void RotateNote(track_p trk, coOrd orig, ANGLE_T angle)
{
- struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
- Rotate(&xx->pos, orig, angle);
- SetBoundingBox(trk, xx->pos, xx->pos);
+ struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
+ Rotate(&xx->pos, orig, angle);
+ SetBoundingBox(trk, xx->pos, xx->pos);
}
static void RescaleNote(track_p trk, FLOAT_T ratio)
{
- struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
- xx->pos.x *= ratio;
- xx->pos.y *= ratio;
+ struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
+ xx->pos.x *= ratio;
+ xx->pos.y *= ratio;
}
static void DescribeNote(track_p trk, char * str, CSIZE_T len)
{
if (IsLinkNote(trk)) {
DescribeLinkNote(trk, str, len);
- }
- else {
+ } else {
if (IsFileNote(trk)) {
DescribeFileNote(trk, str, len);
} else {
@@ -551,7 +438,8 @@ static void DescribeNote(track_p trk, char * str, CSIZE_T len)
}
}
-static void ActivateNote(track_p trk) {
+static void ActivateNote(track_p trk)
+{
if (IsLinkNote(trk) ) {
ActivateLinkNote(trk);
}
@@ -564,8 +452,8 @@ static BOOL_T QueryNote( track_p trk, int query )
{
switch ( query ) {
case Q_IS_ACTIVATEABLE:;
- if (IsFileNote(trk)) return TRUE;
- if (IsLinkNote(trk)) return TRUE;
+ if (IsFileNote(trk)) { return TRUE; }
+ if (IsLinkNote(trk)) { return TRUE; }
break;
default:
return FALSE;
@@ -579,28 +467,27 @@ static wBool_t CompareNote( track_cp trk1, track_cp trk2 )
struct extraDataNote_t *xx2 = GET_EXTRA_DATA( trk2, T_NOTE, extraDataNote_t );
char * cp = message + strlen(message);
REGRESS_CHECK_POS( "Pos", xx1, xx2, pos )
- REGRESS_CHECK_INT( "Layer", xx1, xx2, layer )
REGRESS_CHECK_INT( "Op", xx1, xx2, op )
return TRUE;
}
static trackCmd_t noteCmds = {
- "NOTE",
- DrawNote,
- DistanceNote,
- DescribeNote,
- DeleteNote,
- WriteNote,
- ReadNote,
- MoveNote,
- RotateNote,
- RescaleNote,
- NULL, /* audit */
- NULL, /* getAngle */
- NULL, /* split */
- NULL, /* traverse */
- NULL, /* enumerate */
- NULL, /* redraw */
+ "NOTE",
+ DrawNote,
+ DistanceNote,
+ DescribeNote,
+ DeleteNote,
+ WriteNote,
+ ReadNote,
+ MoveNote,
+ RotateNote,
+ RescaleNote,
+ NULL, /* audit */
+ NULL, /* getAngle */
+ NULL, /* split */
+ NULL, /* traverse */
+ NULL, /* enumerate */
+ NULL, /* redraw */
NULL, /*trim*/
NULL, /*merge*/
NULL, /*modify*/
@@ -630,51 +517,45 @@ static trackCmd_t noteCmds = {
static STATUS_T CmdNote(wAction_t action, coOrd pos)
{
- static coOrd oldPos;
- static int state_on = FALSE;
- track_p trk;
+ static coOrd oldPos;
+ static int state_on = FALSE;
+ track_p trk;
- switch (action) {
- case C_START:
- InfoMessage(_("Place a note on the layout"));
+ switch (action) {
+ case C_START:
+ InfoMessage(_("Place a note on the layout"));
curNoteType = VP2L(commandContext);
- return C_CONTINUE;
-
- case C_DOWN:
- state_on = TRUE;
- oldPos = pos;
- return C_CONTINUE;
-
- case C_MOVE:
- oldPos = pos;
- return C_CONTINUE;
-
- case C_UP:
- UndoStart(_("New Note"), "New Note");
- state_on = FALSE;
- trk = NewNote(-1, pos, curNoteType );
- inDescribeCmd = TRUE;
- DrawNewTrack(trk);
-
- switch (curNoteType)
- {
+ return C_CONTINUE;
+
+ case C_DOWN:
+ state_on = TRUE;
+ oldPos = pos;
+ return C_CONTINUE;
+
+ case C_MOVE:
+ oldPos = pos;
+ return C_CONTINUE;
+
+ case C_UP:
+ UndoStart(_("New Note"), "New Note");
+ state_on = FALSE;
+
+ switch (curNoteType) {
case OP_NOTETEXT:
- NewTextNoteUI(trk);
+ NewTextNoteUI(pos);
break;
case OP_NOTELINK:
- NewLinkNoteUI(trk);
+ NewLinkNoteUI(pos);
break;
case OP_NOTEFILE:
- NewFileNoteUI(trk);
+ NewFileNoteUI(pos);
break;
}
- inDescribeCmd = FALSE;
-
return C_CONTINUE;
- case C_REDRAW:
- if (state_on) {
+ case C_REDRAW:
+ if (state_on) {
switch (curNoteType) {
case OP_NOTETEXT:
DrawBitMap(&tempD, oldPos, note_bm, normalColor);
@@ -682,17 +563,20 @@ static STATUS_T CmdNote(wAction_t action, coOrd pos)
case OP_NOTELINK:
DrawBitMap(&tempD, oldPos, link_bm, normalColor);
break;
+ case OP_NOTEFILE:
+ DrawBitMap(&tempD, oldPos, document_bm, normalColor);
+ break;
}
- }
- return C_CONTINUE;
+ }
+ return C_CONTINUE;
- case C_CANCEL:
- DescribeCancel();
- state_on = FALSE;
- return C_CONTINUE;
- }
+ case C_CANCEL:
+ DescribeCancel();
+ state_on = FALSE;
+ return C_CONTINUE;
+ }
- return C_INFO;
+ return C_INFO;
}
#include "bitmaps/note.xbm"
@@ -702,9 +586,10 @@ static STATUS_T CmdNote(wAction_t action, coOrd pos)
void InitTrkNote(wMenu_p menu)
{
- note_bm = wDrawBitMapCreate(mainD.d, note_width, note_width, 8, 8, note_bits);
- link_bm = wDrawBitMapCreate(mainD.d, note_width, note_width, 8, 8, link_bits);
- document_bm = wDrawBitMapCreate(mainD.d, note_width, note_width, 8, 8, clip_bits);
+ note_bm = wDrawBitMapCreate(mainD.d, note_width, note_width, 8, 8, note_bits);
+ link_bm = wDrawBitMapCreate(mainD.d, note_width, note_width, 8, 8, link_bits);
+ document_bm = wDrawBitMapCreate(mainD.d, note_width, note_width, 8, 8,
+ clip_bits);
ButtonGroupBegin(_("Notes"), "cmdNoteCmd", _("Add notes"));
for (int i = 0; i < NOTETYPESCOUNT; i++) {
@@ -713,7 +598,8 @@ void InitTrkNote(wMenu_p menu)
nt = noteTypes + i;
icon = wIconCreatePixMap(nt->xpm[iconSize]);
- AddMenuButton(menu, CmdNote, nt->helpKey, _(nt->cmdName), icon, LEVEL0_50, IC_STICKY | IC_POPUP2, nt->acclKey, I2VP(nt->OP));
+ AddMenuButton(menu, CmdNote, nt->helpKey, _(nt->cmdName), icon, LEVEL0_50,
+ IC_STICKY | IC_POPUP2, nt->acclKey, I2VP(nt->OP));
}
ButtonGroupEnd();
diff --git a/app/bin/trkseg.c b/app/bin/trkseg.c
index ebe1916..82396a2 100644
--- a/app/bin/trkseg.c
+++ b/app/bin/trkseg.c
@@ -17,13 +17,14 @@
*
* 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 "common.h"
#include "fileio.h"
#include "param.h"
#include "track.h"
+#include "trkendpt.h"
#include "misc.h"
#include "cbezier.h"
#include "tbezier.h"
@@ -49,10 +50,10 @@
* that the center of curve is always on an orthogonal line through the bisection of a chord.
*/
EXPORT void ComputeCurvedSeg(
- trkSeg_p s,
- DIST_T radius,
- coOrd p0,
- coOrd p1 )
+ trkSeg_p s,
+ DIST_T radius,
+ coOrd p0,
+ coOrd p1 )
{
DIST_T d;
ANGLE_T a, aa, aaa;
@@ -76,10 +77,10 @@ EXPORT void ComputeCurvedSeg(
EXPORT coOrd GetSegEndPt(
- trkSeg_p segPtr,
- EPINX_T ep,
- BOOL_T bounds,
- ANGLE_T * angleR )
+ trkSeg_p segPtr,
+ EPINX_T ep,
+ BOOL_T bounds,
+ ANGLE_T * angleR )
{
coOrd pos;
ANGLE_T angle, a, a0, a1 = 0.0;
@@ -114,38 +115,41 @@ EXPORT coOrd GetSegEndPt(
y1 = r * cos(D2R(a0+a1));
if (ep == 0) {
pos.x = segPtr->u.c.center.x + (((a0<=270.0)&&(a0+a1>=270.0)) ?
- (-r) : min(x0,x1));
+ (-r) : min(x0,x1));
pos.y = segPtr->u.c.center.y + (((a0<=180.0)&&(a0+a1>=180.0)) ?
- (-r) : min(y0,y1));
+ (-r) : min(y0,y1));
} else {
pos.x = segPtr->u.c.center.x + (((a0<= 90.0)&&(a0+a1>= 90.0)) ?
- (r) : max(x0,x1));
+ (r) : max(x0,x1));
pos.y = segPtr->u.c.center.y + ((a0+a1>=360.0) ?
- (r) : max(y0,y1));
+ (r) : max(y0,y1));
}
} else {
PointOnCircle( &pos, segPtr->u.c.center, fabs(segPtr->u.c.radius), a );
}
break;
case SEG_JNTTRK:
- pos = GetJointSegEndPos( segPtr->u.j.pos, segPtr->u.j.angle, segPtr->u.j.l0, segPtr->u.j.l1, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.negate, segPtr->u.j.flip, segPtr->u.j.Scurve, ep, &angle );
+ pos = GetJointSegEndPos( segPtr->u.j.pos, segPtr->u.j.angle, segPtr->u.j.l0,
+ segPtr->u.j.l1, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.negate,
+ segPtr->u.j.flip, segPtr->u.j.Scurve, ep, &angle );
break;
- case SEG_BEZTRK:
- case SEG_BEZLIN:
- if (ep ==1) {
- pos = segPtr->u.b.pos[3]; //For Bezier, use the End Points of the overall curve
- angle = FindAngle(segPtr->u.b.pos[2],segPtr->u.b.pos[3]);
- } else {
- pos = segPtr->u.b.pos[0];
- angle = FindAngle(segPtr->u.b.pos[1],segPtr->u.b.pos[0]);
- }
-
- break;
- default:
- AbortProg("GetSegCntPt(%c)", segPtr->type );
+ case SEG_BEZTRK:
+ case SEG_BEZLIN:
+ if (ep ==1) {
+ pos = segPtr->u.b.pos[3]; //For Bezier, use the End Points of the overall curve
+ angle = FindAngle(segPtr->u.b.pos[2],segPtr->u.b.pos[3]);
+ } else {
+ pos = segPtr->u.b.pos[0];
+ angle = FindAngle(segPtr->u.b.pos[1],segPtr->u.b.pos[0]);
+ }
+
+ break;
+ default:
+ CHECKMSG( FALSE, ("GetSegCntPt(%c)", segPtr->type ) );
}
- if ( angleR )
+ if ( angleR ) {
*angleR = angle;
+ }
return pos;
}
@@ -160,12 +164,12 @@ EXPORT coOrd GetSegEndPt(
* \param hiR OUT top right corner
*/
EXPORT void GetTextBounds(
- coOrd pos,
- ANGLE_T angle,
- char * str,
- FONTSIZE_T fs,
- coOrd * loR,
- coOrd * hiR )
+ coOrd pos,
+ ANGLE_T angle,
+ char * str,
+ FONTSIZE_T fs,
+ coOrd * loR,
+ coOrd * hiR )
{
coOrd size, size2;
@@ -186,25 +190,24 @@ EXPORT void GetTextBounds(
lo = hi = zero;
// rotate each point
- for (i=0; i<4; i++)
- {
- Rotate(&p[i], zero, angle);
+ for (i=0; i<4; i++) {
+ Rotate(&p[i], zero, angle);
- if (p[i].x < lo.x) {
- lo.x = p[i].x;
- }
+ if (p[i].x < lo.x) {
+ lo.x = p[i].x;
+ }
- if (p[i].y < lo.y) {
- lo.y = p[i].y;
- }
+ if (p[i].y < lo.y) {
+ lo.y = p[i].y;
+ }
- if (p[i].x > hi.x) {
- hi.x = p[i].x;
- }
+ if (p[i].x > hi.x) {
+ hi.x = p[i].x;
+ }
- if (p[i].y > hi.y) {
- hi.y = p[i].y;
- }
+ if (p[i].y > hi.y) {
+ hi.y = p[i].y;
+ }
}
// now recaclulate the corners
@@ -215,15 +218,25 @@ EXPORT void GetTextBounds(
}
-static void Get1SegBounds( trkSeg_p segPtr, coOrd xlat, ANGLE_T angle, coOrd *lo, coOrd *hi )
+static void Get1SegBounds( trkSeg_p segPtr, coOrd xlat, ANGLE_T angle,
+ coOrd *lo, coOrd *hi )
{
int inx;
- coOrd p0, p1, pBez[4], pc;
+ coOrd p0, p1, pBez, pc;
ANGLE_T a0, a1;
coOrd width;
DIST_T radius;
+ LWIDTH_T lwidth;
width = zero;
+ if (segPtr->lineWidth < 0) {
+ // TO DO: Using scale is correct, but the correct context may not be mainD
+ // For now, we're assuming it will be close enough to zero
+ lwidth = 0; // -(DIST_T)segPtr->lineWidth / mainD.scale;
+ } else {
+ lwidth = (LWIDTH_T)segPtr->lineWidth;
+ }
+
switch ( segPtr->type ) {
case ' ':
return;
@@ -235,78 +248,91 @@ static void Get1SegBounds( trkSeg_p segPtr, coOrd xlat, ANGLE_T angle, coOrd *lo
case SEG_TBLEDGE:
case SEG_CRVLIN:
case SEG_JNTTRK:
- REORIGIN( p0, GetSegEndPt( segPtr, 0, FALSE, NULL ), angle, xlat )
- REORIGIN( p1, GetSegEndPt( segPtr, 1, FALSE, NULL ), angle, xlat )
- if (p0.x < p1.x) {
- lo->x = p0.x;
- hi->x = p1.x;
- } else {
- lo->x = p1.x;
- hi->x = p0.x;
- }
- if (p0.y < p1.y) {
- lo->y = p0.y;
- hi->y = p1.y;
- } else {
- lo->y = p1.y;
- hi->y = p0.y;
+ REORIGIN( p0, GetSegEndPt( segPtr, 0, FALSE, NULL ), angle, xlat )
+ REORIGIN( p1, GetSegEndPt( segPtr, 1, FALSE, NULL ), angle, xlat )
+ if (p0.x < p1.x) {
+ lo->x = p0.x;
+ hi->x = p1.x;
+ } else {
+ lo->x = p1.x;
+ hi->x = p0.x;
+ }
+ if (p0.y < p1.y) {
+ lo->y = p0.y;
+ hi->y = p1.y;
+ } else {
+ lo->y = p1.y;
+ hi->y = p0.y;
+ }
+ if ( (segPtr->type == SEG_CRVTRK) ||
+ (segPtr->type == SEG_CRVLIN) ) {
+ /* TODO: be more precise about curved line width */
+ width.x = width.y = lwidth;
+ REORIGIN( pc, segPtr->u.c.center, angle, xlat );
+ a0 = NormalizeAngle( segPtr->u.c.a0 + angle );
+ a1 = segPtr->u.c.a1;
+ radius = fabs(segPtr->u.c.radius);
+ if ( a1 >= 360.0 ) {
+ lo->x = pc.x - radius;
+ lo->y = pc.y - radius;
+ hi->x = pc.x + radius;
+ hi->y = pc.y + radius;
+ break;
}
- if ( (segPtr->type == SEG_CRVTRK) ||
- (segPtr->type == SEG_CRVLIN) ) {
- /* TODO: be more precise about curved line width */
- width.x = width.y = fabs(segPtr->width)/2.0;
- REORIGIN( pc, segPtr->u.c.center, angle, xlat );
- a0 = NormalizeAngle( segPtr->u.c.a0 + angle );
- a1 = segPtr->u.c.a1;
- radius = fabs(segPtr->u.c.radius);
- if ( a1 >= 360.0 ) {
- lo->x = pc.x - radius;
- lo->y = pc.y - radius;
- hi->x = pc.x + radius;
- hi->y = pc.y + radius;
- break;
- }
- if ( a0 + a1 >= 360.0 )
- hi->y = pc.y + radius;
- if ( a0 < 90.0 && a0+a1 >= 90.0 )
- hi->x = pc.x + radius;
- if ( a0 > 90.0 && a0+a1 >= 450.0 )
- hi->x = pc.x + radius;
- if ( a0 < 180.0 && a0+a1 >= 180.0 )
- lo->y = pc.y - radius;
- if (a0 > 180.0 && a0+a1 >= 540.0 )
- lo->y = pc.y - radius;
- if ( a0 < 270.0 && a0+a1 >= 270.0 )
- lo->x = pc.x - radius;
- if ( a0 > 270.0 && a0+a1 >= 630.0 )
- lo->x = pc.x - radius;
+ if ( a0 + a1 >= 360.0 ) {
+ hi->y = pc.y + radius;
+ }
+ if ( a0 < 90.0 && a0+a1 >= 90.0 ) {
+ hi->x = pc.x + radius;
+ }
+ if ( a0 > 90.0 && a0+a1 >= 450.0 ) {
+ hi->x = pc.x + radius;
+ }
+ if ( a0 < 180.0 && a0+a1 >= 180.0 ) {
+ lo->y = pc.y - radius;
+ }
+ if (a0 > 180.0 && a0+a1 >= 540.0 ) {
+ lo->y = pc.y - radius;
+ }
+ if ( a0 < 270.0 && a0+a1 >= 270.0 ) {
+ lo->x = pc.x - radius;
}
- if ( segPtr->type == SEG_STRLIN ) {
- width.x = fabs(segPtr->width) * fabs(cos( D2R( FindAngle(p0, p1) ) ) ) / 2.0;
- width.y = fabs(segPtr->width) * fabs(sin( D2R( FindAngle(p0, p1) ) ) ) / 2.0;
- } else if ( segPtr->type == SEG_BENCH ) {
- width.x = BenchGetWidth( segPtr->u.l.option ) * fabs(cos( D2R( FindAngle(p0, p1) ) ) ) / 2.0;
- width.y = BenchGetWidth( segPtr->u.l.option ) * fabs(sin( D2R( FindAngle(p0, p1) ) ) ) / 2.0;
+ if ( a0 > 270.0 && a0+a1 >= 630.0 ) {
+ lo->x = pc.x - radius;
}
+ }
+ if ( segPtr->type == SEG_STRLIN ) {
+ width.x = lwidth * fabs(cos(D2R(FindAngle(p0, p1))));
+ width.y = lwidth * fabs(sin(D2R(FindAngle(p0, p1))));
+ } else if ( segPtr->type == SEG_BENCH ) {
+ width.x = BenchGetWidth( segPtr->u.l.option ) * fabs(cos( D2R( FindAngle(p0,
+ p1) ) ) ) / 2.0;
+ width.y = BenchGetWidth( segPtr->u.l.option ) * fabs(sin( D2R( FindAngle(p0,
+ p1) ) ) ) / 2.0;
+ }
break;
case SEG_POLY:
/* TODO: be more precise about poly line width */
- width.x = width.y = fabs(segPtr->width)/2.0;
+ width.x = width.y = lwidth;
case SEG_FILPOLY:
for (inx=0; inx<segPtr->u.p.cnt; inx++ ) {
REORIGIN( p0, segPtr->u.p.pts[inx].pt, angle, xlat )
if (inx==0) {
*lo = *hi = p0;
} else {
- if (p0.x < lo->x)
+ if (p0.x < lo->x) {
lo->x = p0.x;
- if (p0.y < lo->y)
+ }
+ if (p0.y < lo->y) {
lo->y = p0.y;
- if (p0.x > hi->x)
+ }
+ if (p0.x > hi->x) {
hi->x = p0.x;
- if (p0.y > hi->y)
+ }
+ if (p0.y > hi->y) {
hi->y = p0.y;
+ }
}
}
break;
@@ -319,23 +345,23 @@ static void Get1SegBounds( trkSeg_p segPtr, coOrd xlat, ANGLE_T angle, coOrd *lo
break;
case SEG_TEXT:
REORIGIN( p0, segPtr->u.t.pos, angle, xlat )
- GetTextBounds( p0, angle+segPtr->u.t.angle, segPtr->u.t.string, segPtr->u.t.fontSize, lo, hi );
+ GetTextBounds( p0, angle+segPtr->u.t.angle, segPtr->u.t.string,
+ segPtr->u.t.fontSize, lo, hi );
break;
+ /* The following code is executed only for Cornu track */
case SEG_BEZLIN:
case SEG_BEZTRK: //Bezier control arms form a "tent" around the curve
- REORIGIN( pBez[0], segPtr->u.b.pos[0], angle, xlat )
- REORIGIN( pBez[1], segPtr->u.b.pos[1], angle, xlat )
- REORIGIN( pBez[2], segPtr->u.b.pos[2], angle, xlat )
- REORIGIN( pBez[3], segPtr->u.b.pos[3], angle, xlat )
- lo->x = hi->x = pBez[0].x;
- lo->y = hi->y = pBez[0].y;
- for (int i=1;i<4;i++) {
- lo->x = lo->x>pBez[i].x?pBez[i].x:lo->x;
- lo->y = lo->y>pBez[i].y?pBez[i].y:lo->y;
- hi->x = hi->x<pBez[i].x?pBez[i].x:hi->x;
- hi->y = hi->y<pBez[i].y?pBez[i].y:hi->y;
+ REORIGIN( pBez, segPtr->u.b.pos[0], angle, xlat )
+ lo->x = hi->x = pBez.x;
+ lo->y = hi->y = pBez.y;
+ for (int i=1; i<4; i++) {
+ REORIGIN(pBez, segPtr->u.b.pos[i], angle, xlat)
+ lo->x = lo->x>pBez.x?pBez.x:lo->x;
+ lo->y = lo->y>pBez.y?pBez.y:lo->y;
+ hi->x = hi->x<pBez.x?pBez.x:hi->x;
+ hi->y = hi->y<pBez.y?pBez.y:hi->y;
}
- width.x = width.y = fabs(segPtr->width)/2.0;
+ width.x = width.y = lwidth;
break;
default:
;
@@ -348,12 +374,12 @@ static void Get1SegBounds( trkSeg_p segPtr, coOrd xlat, ANGLE_T angle, coOrd *lo
EXPORT void GetSegBounds(
- coOrd xlat,
- ANGLE_T angle,
- wIndex_t segCnt,
- trkSeg_p segs,
- coOrd * orig_ret,
- coOrd * size_ret )
+ coOrd xlat,
+ ANGLE_T angle,
+ wIndex_t segCnt,
+ trkSeg_p segs,
+ coOrd * orig_ret,
+ coOrd * size_ret )
{
trkSeg_p s;
coOrd lo, hi, tmpLo, tmpHi;
@@ -361,21 +387,27 @@ EXPORT void GetSegBounds(
first = TRUE;
for (s=segs; s<&segs[segCnt]; s++) {
- if (s->type == ' ')
+ if (s->type == ' ') {
continue;
+ }
+
if (first) {
Get1SegBounds( s, xlat, angle, &lo, &hi );
first = FALSE;
} else {
Get1SegBounds( s, xlat, angle, &tmpLo, &tmpHi );
- if (tmpLo.x < lo.x)
+ if (tmpLo.x < lo.x) {
lo.x = tmpLo.x;
- if (tmpLo.y < lo.y)
+ }
+ if (tmpLo.y < lo.y) {
lo.y = tmpLo.y;
- if (tmpHi.x > hi.x)
+ }
+ if (tmpHi.x > hi.x) {
hi.x = tmpHi.x;
- if (tmpHi.y > hi.y)
+ }
+ if (tmpHi.y > hi.y) {
hi.y = tmpHi.y;
+ }
}
}
if (first) {
@@ -401,9 +433,9 @@ EXPORT void GetSegBounds(
EXPORT void MoveSegs(
- wIndex_t segCnt,
- trkSeg_p segs,
- coOrd orig )
+ wIndex_t segCnt,
+ trkSeg_p segs,
+ coOrd orig )
{
trkSeg_p s;
int inx;
@@ -441,24 +473,24 @@ EXPORT void MoveSegs(
s->u.j.pos.x += orig.x;
s->u.j.pos.y += orig.y;
break;
- case SEG_BEZTRK:
- case SEG_BEZLIN:
- for (inx=0;inx<4;inx++) {
- s->u.b.pos[inx].x +=orig.x;
- s->u.b.pos[inx].y +=orig.y;
- }
- FixUpBezierSeg(s->u.b.pos,s,s->type == SEG_BEZTRK);
- break;
+ case SEG_BEZTRK:
+ case SEG_BEZLIN:
+ for (inx=0; inx<4; inx++) {
+ s->u.b.pos[inx].x +=orig.x;
+ s->u.b.pos[inx].y +=orig.y;
+ }
+ FixUpBezierSeg(s->u.b.pos,s,s->type == SEG_BEZTRK);
+ break;
}
}
}
EXPORT void RotateSegs(
- wIndex_t segCnt,
- trkSeg_p segs,
- coOrd orig,
- ANGLE_T angle )
+ wIndex_t segCnt,
+ trkSeg_p segs,
+ coOrd orig,
+ ANGLE_T angle )
{
trkSeg_p s;
int inx;
@@ -493,23 +525,23 @@ EXPORT void RotateSegs(
Rotate( &s->u.j.pos, orig, angle );
s->u.j.angle = NormalizeAngle( s->u.j.angle+angle );
break;
- case SEG_BEZLIN:
- case SEG_BEZTRK:
- Rotate( &s->u.b.pos[0], orig, angle );
- Rotate( &s->u.b.pos[1], orig, angle );
- Rotate( &s->u.b.pos[2], orig, angle );
- Rotate( &s->u.b.pos[3], orig, angle );
- FixUpBezierSeg(s->u.b.pos,s,s->type == SEG_BEZTRK);
- break;
- }
+ case SEG_BEZLIN:
+ case SEG_BEZTRK:
+ Rotate( &s->u.b.pos[0], orig, angle );
+ Rotate( &s->u.b.pos[1], orig, angle );
+ Rotate( &s->u.b.pos[2], orig, angle );
+ Rotate( &s->u.b.pos[3], orig, angle );
+ FixUpBezierSeg(s->u.b.pos,s,s->type == SEG_BEZTRK);
+ break;
+ }
}
}
EXPORT void FlipSegs(
- wIndex_t segCnt,
- trkSeg_p segs,
- coOrd orig,
- ANGLE_T angle )
+ wIndex_t segCnt,
+ trkSeg_p segs,
+ coOrd orig,
+ ANGLE_T angle )
{
trkSeg_p s;
int inx;
@@ -530,12 +562,13 @@ EXPORT void FlipSegs(
case SEG_CRVLIN:
case SEG_FILCRCL:
s->u.c.center.y = -s->u.c.center.y;
- if ( s->u.c.a1 < 360.0 )
+ if ( s->u.c.a1 < 360.0 ) {
s->u.c.a0 = NormalizeAngle( 180.0 - s->u.c.a0 - s->u.c.a1 );
+ }
break;
case SEG_TEXT:
s->u.t.pos.y = -s->u.t.pos.y;
-/* TODO flip text angle */
+ /* TODO flip text angle */
break;
case SEG_POLY:
case SEG_FILPOLY:
@@ -553,32 +586,33 @@ EXPORT void FlipSegs(
s->u.j.angle = NormalizeAngle( 180.0 - s->u.j.angle );
s->u.j.negate = ! s->u.j.negate;
break;
- case SEG_BEZTRK:
- case SEG_BEZLIN:
- s->u.b.pos[0].y = -s->u.b.pos[0].y;
- s->u.b.pos[1].y = -s->u.b.pos[1].y;
- s->u.b.pos[2].y = -s->u.b.pos[2].y;
- s->u.b.pos[3].y = -s->u.b.pos[3].y;
- FixUpBezierSeg(s->u.b.pos,s,s->type == SEG_BEZTRK);
- break;
+ case SEG_BEZTRK:
+ case SEG_BEZLIN:
+ s->u.b.pos[0].y = -s->u.b.pos[0].y;
+ s->u.b.pos[1].y = -s->u.b.pos[1].y;
+ s->u.b.pos[2].y = -s->u.b.pos[2].y;
+ s->u.b.pos[3].y = -s->u.b.pos[3].y;
+ FixUpBezierSeg(s->u.b.pos,s,s->type == SEG_BEZTRK);
+ break;
}
}
}
EXPORT void RescaleSegs(
- wIndex_t segCnt,
- trkSeg_p segs,
- DIST_T scale_x,
- DIST_T scale_y,
- DIST_T scale_w )
+ wIndex_t segCnt,
+ trkSeg_p segs,
+ DIST_T scale_x,
+ DIST_T scale_y,
+ DIST_T scale_w )
{
trkSeg_p s;
int inx;
for (s=segs; s<&segs[segCnt]; s++) {
- if (s->width>0)
- s->width *= scale_w;
+ if (s->lineWidth>0) {
+ s->lineWidth *= scale_w;
+ }
switch (s->type) {
case SEG_STRLIN:
case SEG_DIMLIN:
@@ -617,19 +651,19 @@ EXPORT void RescaleSegs(
s->u.j.l0 *= scale_w;
s->u.j.l1 *= scale_w;
break;
- case SEG_BEZTRK:
- case SEG_BEZLIN:
- s->u.b.pos[0].y *= scale_y;
- s->u.b.pos[0].x *= scale_x;
- s->u.b.pos[1].x *= scale_x;
- s->u.b.pos[1].y *= scale_y;
- s->u.b.pos[2].y *= scale_y;
- s->u.b.pos[2].x *= scale_x;
- s->u.b.pos[3].x *= scale_x;
- s->u.b.pos[3].y *= scale_y;
- FixUpBezierSeg(s->u.b.pos,s,s->type == SEG_BEZTRK);
+ case SEG_BEZTRK:
+ case SEG_BEZLIN:
+ s->u.b.pos[0].y *= scale_y;
+ s->u.b.pos[0].x *= scale_x;
+ s->u.b.pos[1].x *= scale_x;
+ s->u.b.pos[1].y *= scale_y;
+ s->u.b.pos[2].y *= scale_y;
+ s->u.b.pos[2].x *= scale_x;
+ s->u.b.pos[3].x *= scale_x;
+ s->u.b.pos[3].y *= scale_y;
+ FixUpBezierSeg(s->u.b.pos,s,s->type == SEG_BEZTRK);
- break;
+ break;
}
}
@@ -637,9 +671,9 @@ EXPORT void RescaleSegs(
EXPORT void CloneFilledDraw(
- int segCnt,
- trkSeg_p segs,
- BOOL_T reorigin )
+ int segCnt,
+ trkSeg_p segs,
+ BOOL_T reorigin )
{
pts_t * newPts;
trkSeg_p sp;
@@ -652,8 +686,9 @@ EXPORT void CloneFilledDraw(
newPts = (pts_t*)MyMalloc( sp->u.p.cnt * sizeof (pts_t) );
memcpy( newPts, sp->u.p.pts, sp->u.p.cnt * sizeof (pts_t) );
if ( reorigin ) {
- for ( inx = 0; inx<sp->u.p.cnt; inx++ )
+ for ( inx = 0; inx<sp->u.p.cnt; inx++ ) {
REORIGIN( newPts[inx].pt, sp->u.p.pts[inx].pt, sp->u.p.angle, sp->u.p.orig );
+ }
sp->u.p.angle = 0;
sp->u.p.orig = zero;
}
@@ -666,10 +701,8 @@ EXPORT void CloneFilledDraw(
break;
case SEG_BEZTRK:
case SEG_BEZLIN:
- sp->bezSegs.cnt = 0;
- //if (sp->bezSegs.ptr) MyFree(sp->bezSegs.ptr); Make sure no update to static
- sp->bezSegs.ptr = NULL;
- sp->bezSegs.max = 0;
+ // NOTE Don't free storage See CS:036e709b4ca9
+ DYNARR_INIT( trkSeg_t, sp->bezSegs );
FixUpBezierSeg(sp->u.b.pos,sp,sp->type == SEG_BEZTRK);
break;
default:
@@ -680,8 +713,8 @@ EXPORT void CloneFilledDraw(
EXPORT void FreeFilledDraw(
- int segCnt,
- trkSeg_p segs )
+ int segCnt,
+ trkSeg_p segs )
{
trkSeg_p sp;
@@ -689,13 +722,15 @@ EXPORT void FreeFilledDraw(
switch (sp->type) {
case SEG_POLY:
case SEG_FILPOLY:
- if ( sp->u.p.pts )
+ if ( sp->u.p.pts ) {
MyFree( sp->u.p.pts );
+ }
sp->u.p.pts = NULL;
break;
case SEG_TEXT:
- if (sp->u.t.string)
+ if (sp->u.t.string) {
MyFree(sp->u.t.string);
+ }
sp->u.t.string = NULL;
break;
default:
@@ -713,12 +748,12 @@ EXPORT void FreeFilledDraw(
*/
EXPORT DIST_T DistanceSegs(
- coOrd orig,
- ANGLE_T angle,
- wIndex_t segCnt,
- trkSeg_p segPtr,
- coOrd * pos,
- wIndex_t * inx_ret )
+ coOrd orig,
+ ANGLE_T angle,
+ wIndex_t segCnt,
+ trkSeg_p segPtr,
+ coOrd * pos,
+ wIndex_t * inx_ret )
{
DIST_T d, dd = DIST_INF, ddd;
coOrd p0, p1, p2, pt, lo, hi;
@@ -740,76 +775,85 @@ EXPORT DIST_T DistanceSegs(
case SEG_TBLEDGE:
dd = LineDistance( &p1, segPtr->u.l.pos[0], segPtr->u.l.pos[1] );
if ( segPtr->type == SEG_BENCH ) {
- if ( dd < BenchGetWidth( segPtr->u.l.option )/2.0 )
+ if ( dd < BenchGetWidth( segPtr->u.l.option )/2.0 ) {
dd = 0.0;
+ }
}
break;
case SEG_CRVTRK:
case SEG_CRVLIN:
case SEG_FILCRCL:
- dd = CircleDistance( &p1, segPtr->u.c.center, fabs(segPtr->u.c.radius), segPtr->u.c.a0, segPtr->u.c.a1 );
+ dd = CircleDistance( &p1, segPtr->u.c.center, fabs(segPtr->u.c.radius),
+ segPtr->u.c.a0, segPtr->u.c.a1 );
break;
case SEG_POLY:
case SEG_FILPOLY:
ddd = DIST_INF;
- for (lin=0;lin<segPtr->u.p.cnt;lin++) {
+ for (lin=0; lin<segPtr->u.p.cnt; lin++) {
pt = p0;
- if (lin < segPtr->u.p.cnt-1 )
+ if (lin < segPtr->u.p.cnt-1 ) {
ddd = LineDistance( &pt, segPtr->u.p.pts[lin].pt, segPtr->u.p.pts[lin+1].pt );
- else if (segPtr->u.p.polyType != POLYLINE)
+ } else if (segPtr->u.p.polyType != POLYLINE) {
ddd = LineDistance( &pt, segPtr->u.p.pts[lin].pt, segPtr->u.p.pts[0].pt );
+ }
if ( ddd < dd ) {
dd = ddd;
p1 = pt;
}
}
break;
- case SEG_BEZTRK:
- case SEG_BEZLIN:
- dd = DIST_INF;
- pt = p0;
- for (int i = 0;i<segPtr->bezSegs.cnt;i++) {
- segProcData2.distance.pos1 = pt;
- SegProc(SEGPROC_DISTANCE,&DYNARR_N(trkSeg_t,segPtr->bezSegs,i),&segProcData2);
- if (segProcData2.distance.dd<dd) {
- dd = segProcData2.distance.dd;
- p1 = segProcData2.distance.pos1;
- }
- }
- break;
+ case SEG_BEZTRK:
+ case SEG_BEZLIN:
+ dd = DIST_INF;
+ pt = p0;
+ for (int i = 0; i<segPtr->bezSegs.cnt; i++) {
+ segProcData2.distance.pos1 = pt;
+ SegProc(SEGPROC_DISTANCE,&DYNARR_N(trkSeg_t,segPtr->bezSegs,i),&segProcData2);
+ if (segProcData2.distance.dd<dd) {
+ dd = segProcData2.distance.dd;
+ p1 = segProcData2.distance.pos1;
+ }
+ }
+ break;
case SEG_TEXT:
/*GetTextBounds( segPtr->u.t.pos, angle+segPtr->u.t.angle, segPtr->u.t.string, segPtr->u.t.fontSize, &lo, &hi );*/
- GetTextBounds( zero, 0, segPtr->u.t.string, segPtr->u.t.fontSize, &lo, &hi ); //lo and hi are relative to seg origin
- p0.x -= segPtr->u.t.pos.x;
- p0.y -= segPtr->u.t.pos.y;
- Rotate( &p0, zero, -segPtr->u.t.angle );
- if (p0.x > lo.x && p0.x < hi.x && p0.y >lo.y && p0.y < hi.y) { //Within rectangle - therefore small dist
+ GetTextBounds( zero, 0, segPtr->u.t.string, segPtr->u.t.fontSize, &lo,
+ &hi ); //lo and hi are relative to seg origin
+ p1.x -= segPtr->u.t.pos.x;
+ p1.y -= segPtr->u.t.pos.y;
+ Rotate( &p1, zero, -segPtr->u.t.angle );
+ if (p1.x > lo.x && p1.x < hi.x && p1.y >lo.y
+ && p1.y < hi.y) { //Within rectangle - therefore small dist
hi.x /= 2.0;
hi.y /= 2.0;
- dd = 0.1*FindDistance(hi, p0)/FindDistance(lo,hi); // Proportion to mean that the closer we to the center or the smaller the target in overlapping cases, the more likely we pick it
+ dd = 0.1*FindDistance(hi, p1)/FindDistance(lo,
+ hi); // Proportion to mean that the closer we to the center or the smaller the target in overlapping cases, the more likely we pick it
break;
}
hi.x /= 2.0; // rough center of rectangle
hi.y /= 2.0;
- if (fabs((p0.x-hi.x)/hi.x)<fabs((p0.y-hi.y)/hi.y)) { // Proportionally closer to x
- if (p0.x > hi.x) dd = (p0.x - hi.x);
- else dd = fabs(p0.x-hi.x);
+ if (fabs((p1.x-hi.x)/hi.x)<fabs((p1.y
+ -hi.y)/hi.y)) { // Proportionally closer to x
+ if (p1.x > hi.x) { dd = (p1.x - hi.x); }
+ else { dd = fabs(p1.x-hi.x); }
} else { // Closer to y
- if (p0.y > hi.y) dd = (p0.y - hi.y);
- else dd = fabs(p0.y-hi.y);
+ if (p1.y > hi.y) { dd = (p1.y - hi.y); }
+ else { dd = fabs(p1.y-hi.y); }
}
/*printf( "dx=%0.4f dy=%0.4f dd=%0.3f\n", dx, dy, dd );*/
-/*
- if ( p0.x >= lo.x && p0.x <= hi.x &&
- p0.y >= lo.y && p0.y <= hi.y ) {
- p1.x = (lo.x+hi.x)/2.0;
- p1.y = (lo.y+hi.y)/2.0;
- dd = FindDistance( p0, p1 );
- }
-*/
+ /*
+ if ( p1.x >= lo.x && p1.x <= hi.x &&
+ p1.y >= lo.y && p1.y <= hi.y ) {
+ p1.x = (lo.x+hi.x)/2.0;
+ p1.y = (lo.y+hi.y)/2.0;
+ dd = FindDistance( p1, p1 );
+ }
+ */
break;
case SEG_JNTTRK:
- dd = JointDistance( &p1, segPtr->u.j.pos, segPtr->u.j.angle, segPtr->u.j.l0, segPtr->u.j.l1, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.negate, segPtr->u.j.Scurve );
+ dd = JointDistance( &p1, segPtr->u.j.pos, segPtr->u.j.angle, segPtr->u.j.l0,
+ segPtr->u.j.l1, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.negate,
+ segPtr->u.j.Scurve );
break;
default:
dd = DIST_INF;
@@ -817,8 +861,9 @@ EXPORT DIST_T DistanceSegs(
if (dd < d) {
d = dd;
p2 = p1;
- if (inx_ret)
+ if (inx_ret) {
*inx_ret = inx;
+ }
found = TRUE;
}
}
@@ -837,14 +882,14 @@ EXPORT DIST_T DistanceSegs(
*
*/
EXPORT ANGLE_T GetAngleSegs(
- wIndex_t segCnt,
- trkSeg_p segPtr,
- coOrd * pos1, // Now IN/OUT OUT =
- wIndex_t * segInxR,
- DIST_T * dist,
- BOOL_T * seg_backwards,
- wIndex_t * subSegInxR,
- BOOL_T * negative_radius)
+ wIndex_t segCnt,
+ trkSeg_p segPtr,
+ coOrd * pos1, // Now IN/OUT OUT =
+ wIndex_t * segInxR,
+ DIST_T * dist,
+ BOOL_T * seg_backwards,
+ wIndex_t * subSegInxR,
+ BOOL_T * negative_radius)
{
wIndex_t inx;
ANGLE_T angle = 0.0;
@@ -854,10 +899,10 @@ EXPORT ANGLE_T GetAngleSegs(
coOrd pos2 = * pos1;
BOOL_T negative = FALSE;
BOOL_T backwards = FALSE;
- if (subSegInxR) *subSegInxR = -1;
+ if (subSegInxR) { *subSegInxR = -1; }
d = DistanceSegs( zero, 0.0, segCnt, segPtr, &pos2, &inx ); //
- if (dist) * dist = d;
+ if (dist) { * dist = d; }
segPtr += inx;
segProcData.getAngle.pos = pos2;
switch ( segPtr->type ) {
@@ -881,26 +926,28 @@ EXPORT ANGLE_T GetAngleSegs(
JointSegProc( SEGPROC_GETANGLE, segPtr, &segProcData );
angle = segProcData.getAngle.angle;
break;
- case SEG_BEZTRK:
- case SEG_BEZLIN:
- BezierSegProc( SEGPROC_GETANGLE, segPtr, &segProcData );
- angle = segProcData.getAngle.angle;
- negative = segProcData.getAngle.negative_radius;
- backwards = segProcData.getAngle.backwards;
- if (subSegInxR) *subSegInxR = segProcData.getAngle.bezSegInx;
- break;
+ case SEG_BEZTRK:
+ case SEG_BEZLIN:
+ BezierSegProc( SEGPROC_GETANGLE, segPtr, &segProcData );
+ angle = segProcData.getAngle.angle;
+ negative = segProcData.getAngle.negative_radius;
+ backwards = segProcData.getAngle.backwards;
+ if (subSegInxR) { *subSegInxR = segProcData.getAngle.bezSegInx; }
+ break;
case SEG_POLY:
case SEG_FILPOLY:
p0 = p1 = pos2;
- dd = LineDistance( &p0, segPtr->u.p.pts[segPtr->u.p.cnt-1].pt, segPtr->u.p.pts[0].pt );
- angle = FindAngle( segPtr->u.p.pts[segPtr->u.p.cnt-1].pt, segPtr->u.p.pts[0].pt );
+ dd = LineDistance( &p0, segPtr->u.p.pts[segPtr->u.p.cnt-1].pt,
+ segPtr->u.p.pts[0].pt );
+ angle = FindAngle( segPtr->u.p.pts[segPtr->u.p.cnt-1].pt,
+ segPtr->u.p.pts[0].pt );
for ( inx=0; inx<segPtr->u.p.cnt-1; inx++ ) {
p0 = p1;
d = LineDistance( &p0, segPtr->u.p.pts[inx].pt, segPtr->u.p.pts[inx+1].pt );
if ( d < dd ) {
dd = d;
angle = FindAngle( segPtr->u.p.pts[inx].pt, segPtr->u.p.pts[inx+1].pt );
- if (subSegInxR) *subSegInxR = inx;
+ if (subSegInxR) { *subSegInxR = inx; }
pos2 = p0;
}
}
@@ -909,11 +956,11 @@ EXPORT ANGLE_T GetAngleSegs(
angle = segPtr->u.t.angle;
break;
default:
- AbortProg( "GetAngleSegs(%d)", segPtr->type );
+ CHECKMSG( FALSE, ( "GetAngleSegs(%d)", segPtr->type ) );
}
- if ( segInxR ) *segInxR = inx;
- if (seg_backwards) *seg_backwards = backwards;
- if (negative_radius) *negative_radius = negative;
+ if ( segInxR ) { *segInxR = inx; }
+ if (seg_backwards) { *seg_backwards = backwards; }
+ if (negative_radius) { *negative_radius = negative; }
* pos1 = pos2;
return angle;
@@ -926,72 +973,70 @@ EXPORT ANGLE_T GetAngleSegs(
****************************************************************************/
typedef struct {
- FLOAT_T h, s, v;
- } hsv_t;
+ FLOAT_T h, s, v;
+} hsv_t;
static FLOAT_T max_s;
static FLOAT_T max_v;
static dynArr_t hsv_da;
#define hsv(N) DYNARR_N( hsv_t, hsv_da, N )
static void Hsv2rgb(
- hsv_t hsv,
- long *rgb )
+ hsv_t hsv,
+ long *rgb )
{
- int i;
- FLOAT_T f, w, q, t, r=0, g=0, b=0;
-
- if (hsv.s == 0.0)
- hsv.s = 0.000001;
+ int i;
+ FLOAT_T f, w, q, t, r=0, g=0, b=0;
- if (hsv.h == -1.0)
- {
- r = hsv.v;
- g = hsv.v;
- b = hsv.v;
+ if (hsv.s == 0.0) {
+ hsv.s = 0.000001;
}
- else
- {
- if (hsv.h == 360.0)
- hsv.h = 0.0;
- hsv.h = hsv.h / 60.0;
- i = (int) hsv.h;
- f = hsv.h - i;
- w = hsv.v * (1.0 - hsv.s);
- q = hsv.v * (1.0 - (hsv.s * f));
- t = hsv.v * (1.0 - (hsv.s * (1.0 - f)));
-
- switch (i)
- {
+
+ if (hsv.h == -1.0) {
+ r = hsv.v;
+ g = hsv.v;
+ b = hsv.v;
+ } else {
+ if (hsv.h == 360.0) {
+ hsv.h = 0.0;
+ }
+ hsv.h = hsv.h / 60.0;
+ i = (int) hsv.h;
+ f = hsv.h - i;
+ w = hsv.v * (1.0 - hsv.s);
+ q = hsv.v * (1.0 - (hsv.s * f));
+ t = hsv.v * (1.0 - (hsv.s * (1.0 - f)));
+
+ switch (i) {
case 0:
- r = hsv.v;
- g = t;
- b = w;
- break;
+ r = hsv.v;
+ g = t;
+ b = w;
+ break;
case 1:
- r = q;
- g = hsv.v;
- b = w;
- break;
+ r = q;
+ g = hsv.v;
+ b = w;
+ break;
case 2:
- r = w;
- g = hsv.v;
- b = t;
- break;
+ r = w;
+ g = hsv.v;
+ b = t;
+ break;
case 3:
- r = w;
- g = q;
- b = hsv.v;
- break;
+ r = w;
+ g = q;
+ b = hsv.v;
+ break;
case 4:
- r = t;
- g = w;
- b = hsv.v;
- break;
+ r = t;
+ g = w;
+ b = hsv.v;
+ break;
case 5:
- r = hsv.v;
- g = w;
- b = q;
- break;
+ r = hsv.v;
+ g = w;
+ b = q;
+ break;
}
}
*rgb = wRGB( (int)(r*255), (int)(g*255), (int)(b*255) );
@@ -999,60 +1044,66 @@ static void Hsv2rgb(
static void Rgb2hsv(
- long rgb,
- hsv_t *hsv )
+ long rgb,
+ hsv_t *hsv )
{
- FLOAT_T r, g, b;
- FLOAT_T max, min, delta;
-
- r = ((rgb>>16)&0xFF)/255.0;
- g = ((rgb>>8)&0xFF)/255.0;
- b = ((rgb)&0xFF)/255.0;
-
- max = r;
- if (g > max)
- max = g;
- if (b > max)
- max = b;
-
- min = r;
- if (g < min)
- min = g;
- if (b < min)
- min = b;
-
- hsv->v = max;
-
- if (max != 0.0)
- hsv->s = (max - min) / max;
- else
- hsv->s = 0.0;
-
- if (hsv->s == 0.0)
- hsv->h = -1.0;
- else
- {
- delta = max - min;
-
- if (r == max)
- hsv->h = (g - b) / delta;
- else if (g == max)
- hsv->h = 2.0 + (b - r) / delta;
- else if (b == max)
- hsv->h = 4.0 + (r - g) / delta;
-
- hsv->h = hsv->h * 60.0;
-
- if (hsv->h < 0.0)
- hsv->h = hsv->h + 360;
+ FLOAT_T r, g, b;
+ FLOAT_T max, min, delta;
+
+ r = ((rgb>>16)&0xFF)/255.0;
+ g = ((rgb>>8)&0xFF)/255.0;
+ b = ((rgb)&0xFF)/255.0;
+
+ max = r;
+ if (g > max) {
+ max = g;
+ }
+ if (b > max) {
+ max = b;
+ }
+
+ min = r;
+ if (g < min) {
+ min = g;
+ }
+ if (b < min) {
+ min = b;
+ }
+
+ hsv->v = max;
+
+ if (max != 0.0) {
+ hsv->s = (max - min) / max;
+ } else {
+ hsv->s = 0.0;
+ }
+
+ if (hsv->s == 0.0) {
+ hsv->h = -1.0;
+ } else {
+ delta = max - min;
+
+ if (r == max) {
+ hsv->h = (g - b) / delta;
+ } else if (g == max) {
+ hsv->h = 2.0 + (b - r) / delta;
+ } else if (b == max) {
+ hsv->h = 4.0 + (r - g) / delta;
+ }
+
+ hsv->h = hsv->h * 60.0;
+
+ if (hsv->h < 0.0) {
+ hsv->h = hsv->h + 360;
+ }
}
}
static void Fill_hsv(
- wIndex_t segCnt,
- trkSeg_p segPtr,
- hsv_t * hsvP )
+ wIndex_t segCnt,
+ trkSeg_p segPtr,
+ hsv_t * hsvP )
{
int inx;
@@ -1061,18 +1112,20 @@ static void Fill_hsv(
for ( inx=0; inx<segCnt; inx++ ) {
Rgb2hsv( wDrawGetRGB(segPtr[inx].color), &hsvP[inx] );
if ( hsvP[inx].h >= 0 ) {
- if ( max_s < hsvP[inx].s )
+ if ( max_s < hsvP[inx].s ) {
max_s = hsvP[inx].s;
- if ( max_v < hsvP[inx].v )
+ }
+ if ( max_v < hsvP[inx].v ) {
max_v = hsvP[inx].v;
+ }
}
}
}
EXPORT void RecolorSegs(
- wIndex_t cnt,
- trkSeg_p segs,
- wDrawColor color )
+ wIndex_t cnt,
+ trkSeg_p segs,
+ wDrawColor color )
{
long rgb;
wIndex_t inx;
@@ -1084,18 +1137,21 @@ EXPORT void RecolorSegs(
rgb = wDrawGetRGB( color );
Rgb2hsv( rgb, &hsv0 );
h = hsv0.h;
- if ( max_s > 0.25 )
+ if ( max_s > 0.25 ) {
s = hsv0.s/max_s;
- else
+ } else {
s = 1.0;
- if ( max_v > 0.25 )
+ }
+ if ( max_v > 0.25 ) {
v = hsv0.v/max_v;
- else
+ } else {
v = 1.0;
+ }
for ( inx=0; inx<cnt; inx++,segs++ ) {
hsv0 = hsv(inx);
- if ( hsv0.h < 0 ) /* ignore black */
+ if ( hsv0.h < 0 ) { /* ignore black */
continue;
+ }
hsv0.h = h;
hsv0.s *= s;
hsv0.v *= v;
@@ -1131,28 +1187,26 @@ EXPORT BOOL_T ReadSegs( void )
char *cp, *cpp;
BOOL_T rc=TRUE;
trkSeg_p s;
- trkEndPt_p e;
long rgb;
int i;
DIST_T elev0, elev1;
BOOL_T hasElev;
BOOL_T isPolyV1, isPolyV2;
BOOL_T improvedEnds;
- FLOAT_T ignoreFloat;
char type;
char * plain_text;
- long option, option2;
+ long option;
BOOL_T subsegs = FALSE;
descriptionOff = zero;
tempSpecial[0] = '\0';
tempCustom[0] = '\0';
DYNARR_RESET( trkSeg_t, tempSegs_da );
- DYNARR_RESET( trkEndPt_t, tempEndPts_da );
+ TempEndPtsReset();
pathCnt = 0;
AppendPath(0); // End of all paths
while ( rc && ((cp = GetNextLine()) != NULL) ) {
- while (isspace(*cp)) cp++;
+ while (isspace(*cp)) { cp++; }
hasElev = FALSE;
improvedEnds = FALSE;
if ( IsEND( END_SEGS ) ) {
@@ -1169,15 +1223,17 @@ EXPORT BOOL_T ReadSegs( void )
if ( *cp == '\0' || *cp == '\n' || *cp == '#' ) {
continue;
}
- if (subsegs) continue;
+ if (subsegs) { continue; }
type = *cp++;
improvedEnds = isPolyV2 = hasElev = isPolyV1 = FALSE;
if ( isdigit( *cp ) ) {
long iVersion = strtol( cp, &cp, 10 );
- if ( iVersion >= 3 )
+ if ( iVersion >= 3 ) {
hasElev = isPolyV1 = TRUE;
- if ( iVersion >= 4 )
+ }
+ if ( iVersion >= 4 ) {
improvedEnds = isPolyV2 = TRUE;
+ }
if ( iVersion > 4 ) {
InputError( "Invalid segment version number, maximum is %d", TRUE, 4 );
break;
@@ -1190,7 +1246,7 @@ EXPORT BOOL_T ReadSegs( void )
s = &tempSegs(tempSegs_da.cnt-1);
s->type = type;
if ( !GetArgs( cp, hasElev?"lwpfpf":"lwpYpY",
- &rgb, &s->width, &s->u.l.pos[0], &elev0, &s->u.l.pos[1], &elev1 ) ) {
+ &rgb, &s->lineWidth, &s->u.l.pos[0], &elev0, &s->u.l.pos[1], &elev1 ) ) {
rc = FALSE;
break;
}
@@ -1203,14 +1259,16 @@ EXPORT BOOL_T ReadSegs( void )
s = &tempSegs(tempSegs_da.cnt-1);
s->type = type;
if ( !GetArgs( cp, hasElev?"lwpfpfl":"lwpYpYZ",
- &rgb, &s->width, &s->u.l.pos[0], &elev0, &s->u.l.pos[1], &elev1, &option ) ) {
+ &rgb, &s->lineWidth, &s->u.l.pos[0], &elev0, &s->u.l.pos[1], &elev1,
+ &option ) ) {
rc = FALSE;
break;
}
- if ( type == SEG_DIMLIN )
+ if ( type == SEG_DIMLIN ) {
s->u.l.option = option;
- else
+ } else {
s->u.l.option = BenchInputOption(option);
+ }
s->color = wDrawFindColor( rgb );
break;
case SEG_CRVLIN:
@@ -1218,11 +1276,11 @@ EXPORT BOOL_T ReadSegs( void )
s = &tempSegs(tempSegs_da.cnt-1);
s->type = SEG_CRVLIN;
if ( !GetArgs( cp, hasElev?"lwfpfff":"lwfpYff",
- &rgb, &s->width,
- &s->u.c.radius,
- &s->u.c.center,
- &elev0,
- &s->u.c.a0, &s->u.c.a1 ) ) {
+ &rgb, &s->lineWidth,
+ &s->u.c.radius,
+ &s->u.c.center,
+ &elev0,
+ &s->u.c.a0, &s->u.c.a1 ) ) {
rc = FALSE;
break;
}
@@ -1232,13 +1290,11 @@ EXPORT BOOL_T ReadSegs( void )
DYNARR_APPEND( trkSeg_t, tempSegs_da, 10 );
s = &tempSegs(tempSegs_da.cnt-1);
s->type = SEG_STRTRK;
- s->bezSegs.max = 0;
- s->bezSegs.cnt = 0;
- s->bezSegs.ptr = NULL;
+ DYNARR_INIT( trkSeg_t, s->bezSegs );
if ( !GetArgs( cp, hasElev?"lwpfpf":"lwpYpY",
- &rgb, &s->width,
- &s->u.l.pos[0], &elev0,
- &s->u.l.pos[1], &elev1 ) ) {
+ &rgb, &s->lineWidth,
+ &s->u.l.pos[0], &elev0,
+ &s->u.l.pos[1], &elev1 ) ) {
rc = FALSE;
break;
}
@@ -1248,15 +1304,13 @@ EXPORT BOOL_T ReadSegs( void )
DYNARR_APPEND( trkSeg_t, tempSegs_da, 10 );
s = &tempSegs(tempSegs_da.cnt-1);
s->type = SEG_CRVTRK;
- s->bezSegs.max = 0;
- s->bezSegs.cnt = 0;
- s->bezSegs.ptr = NULL;
+ DYNARR_INIT( trkSeg_t, s->bezSegs );
if ( !GetArgs( cp, hasElev?"lwfpfff":"lwfpYff",
- &rgb, &s->width,
- &s->u.c.radius,
- &s->u.c.center,
- &elev0,
- &s->u.c.a0, &s->u.c.a1 ) ) {
+ &rgb, &s->lineWidth,
+ &s->u.c.radius,
+ &s->u.c.center,
+ &elev0,
+ &s->u.c.a0, &s->u.c.a1 ) ) {
rc = FALSE;
break;
}
@@ -1267,15 +1321,15 @@ EXPORT BOOL_T ReadSegs( void )
s = &tempSegs(tempSegs_da.cnt-1);
s->type = SEG_JNTTRK;
if ( !GetArgs( cp, hasElev?"lwpffffffl":"lwpYfffffl",
- &rgb, &s->width,
- &s->u.j.pos,
- &elev0,
- &s->u.j.angle,
- &s->u.j.l0,
- &s->u.j.l1,
- &s->u.j.R,
- &s->u.j.L,
- &option ) ) {
+ &rgb, &s->lineWidth,
+ &s->u.j.pos,
+ &elev0,
+ &s->u.j.angle,
+ &s->u.j.l0,
+ &s->u.j.l1,
+ &s->u.j.R,
+ &s->u.j.L,
+ &option ) ) {
rc = FALSE;
break;
}
@@ -1284,51 +1338,47 @@ EXPORT BOOL_T ReadSegs( void )
s->u.j.Scurve = ( option&4 )!=0;
s->color = wDrawFindColor( rgb );
break;
- case SEG_BEZTRK:
- DYNARR_APPEND( trkSeg_t, tempSegs_da, 10);
- s = &tempSegs(tempSegs_da.cnt-1);
- s->type=SEG_BEZTRK;
- s->bezSegs.max=0;
- s->bezSegs.ptr= NULL;
- s->bezSegs.cnt=0;
- if ( !GetArgs( cp, "lwpppp",
- &rgb, &s->width,
- &s->u.b.pos[0],
- &s->u.b.pos[1],
- &s->u.b.pos[2],
- &s->u.b.pos[3])) {
- rc = FALSE;
- break;
- }
- s->color = wDrawFindColor( rgb );
- break;
- case SEG_BEZLIN:
- DYNARR_APPEND( trkSeg_t, tempSegs_da, 10);
- s = &tempSegs(tempSegs_da.cnt-1);
- s->type=SEG_BEZLIN;
- s->bezSegs.max=0;
- s->bezSegs.ptr= NULL;
- s->bezSegs.cnt=0;
- if ( !GetArgs( cp, "lwpppp",
- &rgb, &s->width,
- &s->u.b.pos[0],
- &s->u.b.pos[1],
- &s->u.b.pos[2],
- &s->u.b.pos[3])) {
- rc = FALSE;
- break;
- }
- s->color = wDrawFindColor( rgb );
- break;
+ case SEG_BEZTRK:
+ DYNARR_APPEND( trkSeg_t, tempSegs_da, 10);
+ s = &tempSegs(tempSegs_da.cnt-1);
+ s->type=SEG_BEZTRK;
+ DYNARR_INIT( trkSet_t, s->bezSegs );
+ if ( !GetArgs( cp, "lwpppp",
+ &rgb, &s->lineWidth,
+ &s->u.b.pos[0],
+ &s->u.b.pos[1],
+ &s->u.b.pos[2],
+ &s->u.b.pos[3])) {
+ rc = FALSE;
+ break;
+ }
+ s->color = wDrawFindColor( rgb );
+ break;
+ case SEG_BEZLIN:
+ DYNARR_APPEND( trkSeg_t, tempSegs_da, 10);
+ s = &tempSegs(tempSegs_da.cnt-1);
+ s->type=SEG_BEZLIN;
+ DYNARR_INIT( trkSet_t, s->bezSegs );
+ if ( !GetArgs( cp, "lwpppp",
+ &rgb, &s->lineWidth,
+ &s->u.b.pos[0],
+ &s->u.b.pos[1],
+ &s->u.b.pos[2],
+ &s->u.b.pos[3])) {
+ rc = FALSE;
+ break;
+ }
+ s->color = wDrawFindColor( rgb );
+ break;
case SEG_FILCRCL:
DYNARR_APPEND( trkSeg_t, tempSegs_da, 10 );
s = &tempSegs(tempSegs_da.cnt-1);
s->type = SEG_FILCRCL;
if ( !GetArgs( cp, hasElev?"lwfpf":"lwfpY",
- &rgb, &s->width,
- &s->u.c.radius,
- &s->u.c.center,
- &elev0 ) ) {
+ &rgb, &s->lineWidth,
+ &s->u.c.radius,
+ &s->u.c.center,
+ &elev0 ) ) {
rc = FALSE;
/*??*/break;
}
@@ -1343,15 +1393,14 @@ EXPORT BOOL_T ReadSegs( void )
s->type = type;
s->u.p.polyType = FREEFORM;
if ( !GetArgs( cp,
- isPolyV2?"lwdd":"lwdX",
- &rgb,
- &s->width,
- &s->u.p.cnt,
- &s->u.p.polyType) ) {
+ isPolyV2?"lwdd":"lwdX",
+ &rgb,
+ &s->lineWidth,
+ &s->u.p.cnt,
+ &s->u.p.polyType) ) {
rc = FALSE;
/*??*/break;
}
- if (s->type == SEG_FILPOLY) s->u.p.polyType = FREEFORM; //Ensure closed if filled
s->color = wDrawFindColor( rgb );
s->u.p.pts = (pts_t*)MyMalloc( s->u.p.cnt * sizeof (pts_t) );
for ( i=0; i<s->u.p.cnt; i++ ) {
@@ -1359,10 +1408,10 @@ EXPORT BOOL_T ReadSegs( void )
if (cp == NULL ||
!GetArgs( cp,
// TODO: does elev belong here instead of the seg header?
- isPolyV2?"pdY":isPolyV1?"pXf":"pXY",
- &s->u.p.pts[i].pt,
- &s->u.p.pts[i].pt_type,
- &elev0 )) {
+ isPolyV2?"pdY":isPolyV1?"pXf":"pXY",
+ &s->u.p.pts[i].pt,
+ &s->u.p.pts[i].pt_type,
+ &elev0 )) {
rc = FALSE;
}
}
@@ -1374,7 +1423,8 @@ EXPORT BOOL_T ReadSegs( void )
s = &tempSegs(tempSegs_da.cnt-1);
s->type = type;
s->u.t.fontP = NULL;
- if ( !GetArgs( cp, "lpfdfq", &rgb, &s->u.t.pos, &s->u.t.angle, &s->u.t.boxed, &s->u.t.fontSize, &plain_text ) ) {
+ if ( !GetArgs( cp, "lpfdfq", &rgb, &s->u.t.pos, &s->u.t.angle, &s->u.t.boxed,
+ &s->u.t.fontSize, &plain_text ) ) {
rc = FALSE;
/*??*/break;
}
@@ -1383,79 +1433,19 @@ EXPORT BOOL_T ReadSegs( void )
break;
case SEG_UNCEP:
case SEG_CONEP:
- DYNARR_APPEND( trkEndPt_t, tempEndPts_da, 10 );
- e = &tempEndPts(tempEndPts_da.cnt-1);
- if (type == SEG_CONEP) {
- if ( !GetArgs( cp, "dc", &e->index, &cp ) ) {
- rc = FALSE;
- /*??*/break;
- }
- } else {
- e->index = -1;
- }
- if ( !GetArgs( cp, "pfc",
- &e->pos, &e->angle, &cp) ) {
- rc = FALSE;
- /*??*/break;
- }
- e->elev.option = 0;
- e->elev.u.height = 0.0;
- e->elev.doff = zero;
- e->option = 0;
- if (improvedEnds) { //E4 and T4
- if (!GetArgs( cp, "lpc", &option, &e->elev.doff, &cp )) {
- rc = FALSE;
- /*??*/break;
- }
- switch (option&ELEV_MASK) {
- case ELEV_STATION:
- GetArgs( cp, "qc", &e->elev.u.name, &cp);
- break;
- default:
- GetArgs( cp, "fc", &e->elev.u.height, &cp); //First height
- }
- DIST_T height2;
- if (!GetArgs( cp, "flLlc", &height2, &option2, &e->elev.option, &e->option, &cp ) ) {
- rc = FALSE;
- break;
- }
- if (option2) e->elev.option |= ELEV_VISIBLE;
- GetArgs(cp, "fc", &ignoreFloat, &cp);
- break;
- }
- if ( cp != NULL ) {
- if (paramVersion < 7) {
- GetArgs( cp, "dfp", &e->elev.option, &e->elev.u.height, &e->elev.doff, &cp );
- /*??*/break;
- }
- GetArgs( cp, "lpc", &option, &e->elev.doff, &cp );
- e->option = option >> 8;
- e->elev.option = (int)(option&0xFF);
- if ( (e->elev.option&ELEV_MASK) != ELEV_NONE ) {
- switch (e->elev.option&ELEV_MASK) {
- case ELEV_DEF:
- GetArgs( cp, "fc", &e->elev.u.height, &cp );
- break;
- case ELEV_STATION:
- GetArgs( cp, "qc", &e->elev.u.name, &cp );
- /*??*/break;
- default:
- ;
- }
- }
- }
+ rc = GetEndPtArg( cp, type, improvedEnds );
break;
case SEG_PATH:
- while (isspace(*cp)) cp++;
- if (*cp == '\"') cp++;
+ while (isspace(*cp)) { cp++; }
+ if (*cp == '\"') { cp++; }
pathCnt--; // Overwrite previous terminator
- while ( *cp != '\"') AppendPath((signed char)*cp++); // Name of path
+ while ( *cp != '\"') { AppendPath((signed char)*cp++); } // Name of path
AppendPath(0); // End of name
cp++;
while (1) {
i = (int)strtol(cp, &cpp, 10);
if (cp == cpp)
- /*??*/break;
+ /*??*/{ break; }
cp = cpp;
AppendPath( (signed char)i ); // Segment # of path component
}
@@ -1491,130 +1481,152 @@ EXPORT BOOL_T ReadSegs( void )
}
EXPORT BOOL_T WriteSegs(
- FILE * f,
- wIndex_t segCnt,
- trkSeg_p segs )
+ FILE * f,
+ wIndex_t segCnt,
+ trkSeg_p segs )
{
- return WriteSegsEnd(f,segCnt,segs,TRUE);
+ return WriteSegsEnd(f,segCnt,segs,TRUE);
}
EXPORT BOOL_T WriteSegsEnd(
- FILE * f,
- wIndex_t segCnt,
- trkSeg_p segs, BOOL_T writeEnd)
+ FILE * f,
+ wIndex_t segCnt,
+ trkSeg_p segs, BOOL_T writeEnd)
{
int i, j;
BOOL_T rc = TRUE;
long option;
char * escaped_text;
+ char* trackText;
+#ifdef UTFCONVERT
+ char* out = NULL;
+#endif
for ( i=0; i<segCnt; i++ ) {
switch ( segs[i].type ) {
case SEG_STRTRK:
rc &= fprintf( f, "\t%c %ld %0.6f %0.6f %0.6f %0.6f %0.6f\n",
- segs[i].type, wDrawGetRGB(segs[i].color), segs[i].width,
- segs[i].u.l.pos[0].x, segs[i].u.l.pos[0].y,
- segs[i].u.l.pos[1].x, segs[i].u.l.pos[1].y ) > 0;
+ segs[i].type, wDrawGetRGB(segs[i].color), segs[i].lineWidth,
+ segs[i].u.l.pos[0].x, segs[i].u.l.pos[0].y,
+ segs[i].u.l.pos[1].x, segs[i].u.l.pos[1].y ) > 0;
break;
case SEG_STRLIN:
case SEG_TBLEDGE:
rc &= fprintf( f, "\t%c3 %ld %0.6f %0.6f %0.6f 0 %0.6f %0.6f 0\n",
- segs[i].type, wDrawGetRGB(segs[i].color), segs[i].width,
- segs[i].u.l.pos[0].x, segs[i].u.l.pos[0].y,
- segs[i].u.l.pos[1].x, segs[i].u.l.pos[1].y ) > 0;
+ segs[i].type, wDrawGetRGB(segs[i].color), segs[i].lineWidth,
+ segs[i].u.l.pos[0].x, segs[i].u.l.pos[0].y,
+ segs[i].u.l.pos[1].x, segs[i].u.l.pos[1].y ) > 0;
break;
case SEG_DIMLIN:
rc &= fprintf( f, "\t%c3 %ld %0.6f %0.6f %0.6f 0 %0.6f %0.6f 0 %ld\n",
- segs[i].type, wDrawGetRGB(segs[i].color), segs[i].width,
- segs[i].u.l.pos[0].x, segs[i].u.l.pos[0].y,
- segs[i].u.l.pos[1].x, segs[i].u.l.pos[1].y,
- segs[i].u.l.option ) > 0;
+ segs[i].type, wDrawGetRGB(segs[i].color), segs[i].lineWidth,
+ segs[i].u.l.pos[0].x, segs[i].u.l.pos[0].y,
+ segs[i].u.l.pos[1].x, segs[i].u.l.pos[1].y,
+ segs[i].u.l.option ) > 0;
break;
case SEG_BENCH:
rc &= fprintf( f, "\t%c3 %ld %0.6f %0.6f %0.6f 0 %0.6f %0.6f 0 %ld\n",
- segs[i].type, wDrawGetRGB(segs[i].color), segs[i].width,
- segs[i].u.l.pos[0].x, segs[i].u.l.pos[0].y,
- segs[i].u.l.pos[1].x, segs[i].u.l.pos[1].y,
- BenchOutputOption(segs[i].u.l.option) ) > 0;
+ segs[i].type, wDrawGetRGB(segs[i].color), segs[i].lineWidth,
+ segs[i].u.l.pos[0].x, segs[i].u.l.pos[0].y,
+ segs[i].u.l.pos[1].x, segs[i].u.l.pos[1].y,
+ BenchOutputOption(segs[i].u.l.option) ) > 0;
break;
case SEG_CRVTRK:
rc &= fprintf( f, "\t%c %ld %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f\n",
- segs[i].type, wDrawGetRGB(segs[i].color), segs[i].width,
- segs[i].u.c.radius,
- segs[i].u.c.center.x, segs[i].u.c.center.y,
- segs[i].u.c.a0, segs[i].u.c.a1 ) > 0;
+ segs[i].type, wDrawGetRGB(segs[i].color), segs[i].lineWidth,
+ segs[i].u.c.radius,
+ segs[i].u.c.center.x, segs[i].u.c.center.y,
+ segs[i].u.c.a0, segs[i].u.c.a1 ) > 0;
break;
case SEG_JNTTRK:
- option = (segs[i].u.j.negate?1:0) + (segs[i].u.j.flip?2:0) + (segs[i].u.j.Scurve?4:0);
- rc &= fprintf( f, "\t%c %ld %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %ld\n",
- segs[i].type, wDrawGetRGB(segs[i].color), segs[i].width,
- segs[i].u.j.pos.x, segs[i].u.j.pos.y,
- segs[i].u.j.angle,
- segs[i].u.j.l0,
- segs[i].u.j.l1,
- segs[i].u.j.R,
- segs[i].u.j.L,
- option )>0;
- break;
- case SEG_BEZTRK:
- case SEG_BEZLIN:
- rc &= fprintf( f, "\t%c3 %ld %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f\n",
- segs[i].type, wDrawGetRGB(segs[i].color),
- segs[i].width,
- segs[i].u.l.pos[0].x, segs[i].u.l.pos[0].y,
- segs[i].u.l.pos[1].x, segs[i].u.l.pos[1].y,
- segs[i].u.l.pos[2].x, segs[i].u.l.pos[2].y,
- segs[i].u.l.pos[3].x, segs[i].u.l.pos[3].y ) > 0;
- rc &= fprintf(f,"\tSUBSEGS\n");
- rc &= WriteSegsEnd(f,segs[i].bezSegs.cnt,segs[i].bezSegs.ptr,FALSE);
- rc &= fprintf(f,"\tSUBSEND\n");
- break;
+ option = (segs[i].u.j.negate?1:0) + (segs[i].u.j.flip?2:0) +
+ (segs[i].u.j.Scurve?4:0);
+ rc &= fprintf( f,
+ "\t%c %ld %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %ld\n",
+ segs[i].type, wDrawGetRGB(segs[i].color), segs[i].lineWidth,
+ segs[i].u.j.pos.x, segs[i].u.j.pos.y,
+ segs[i].u.j.angle,
+ segs[i].u.j.l0,
+ segs[i].u.j.l1,
+ segs[i].u.j.R,
+ segs[i].u.j.L,
+ option )>0;
+ break;
+ case SEG_BEZTRK:
+ case SEG_BEZLIN:
+ rc &= fprintf( f,
+ "\t%c3 %ld %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f %0.6f\n",
+ segs[i].type, wDrawGetRGB(segs[i].color),
+ segs[i].lineWidth,
+ segs[i].u.l.pos[0].x, segs[i].u.l.pos[0].y,
+ segs[i].u.l.pos[1].x, segs[i].u.l.pos[1].y,
+ segs[i].u.l.pos[2].x, segs[i].u.l.pos[2].y,
+ segs[i].u.l.pos[3].x, segs[i].u.l.pos[3].y ) > 0;
+ rc &= fprintf(f,"\tSUBSEGS\n");
+ rc &= WriteSegsEnd(f,segs[i].bezSegs.cnt,
+ &DYNARR_N(trkSeg_t,segs[i].bezSegs,0), FALSE);
+ rc &= fprintf(f,"\tSUBSEND\n");
+ break;
case SEG_CRVLIN:
rc &= fprintf( f, "\t%c3 %ld %0.6f %0.6f %0.6f %0.6f 0 %0.6f %0.6f\n",
- segs[i].type, wDrawGetRGB(segs[i].color), segs[i].width,
- segs[i].u.c.radius,
- segs[i].u.c.center.x, segs[i].u.c.center.y,
- segs[i].u.c.a0, segs[i].u.c.a1 ) > 0;
+ segs[i].type, wDrawGetRGB(segs[i].color), segs[i].lineWidth,
+ segs[i].u.c.radius,
+ segs[i].u.c.center.x, segs[i].u.c.center.y,
+ segs[i].u.c.a0, segs[i].u.c.a1 ) > 0;
break;
case SEG_FILCRCL:
rc &= fprintf( f, "\t%c3 %ld %0.6f %0.6f %0.6f %0.6f 0\n",
- segs[i].type, wDrawGetRGB(segs[i].color), segs[i].width,
- segs[i].u.c.radius,
- segs[i].u.c.center.x, segs[i].u.c.center.y ) > 0;
+ segs[i].type, wDrawGetRGB(segs[i].color), segs[i].lineWidth,
+ segs[i].u.c.radius,
+ segs[i].u.c.center.x, segs[i].u.c.center.y ) > 0;
break;
case SEG_POLY:
case SEG_FILPOLY:
// TODO: to be consistent, we should add a dummy 0 for elev. See ReadSegs/SEG_POLY
rc &= fprintf( f, "\t%c4 %ld %0.6f %d %d \n",
- segs[i].type, wDrawGetRGB(segs[i].color), segs[i].width,
- segs[i].u.p.cnt, segs[i].u.p.polyType ) > 0;
+ segs[i].type, wDrawGetRGB(segs[i].color), segs[i].lineWidth,
+ segs[i].u.p.cnt, segs[i].u.p.polyType ) > 0;
for ( j=0; j<segs[i].u.p.cnt; j++ )
rc &= fprintf( f, "\t\t%0.6f %0.6f %d\n",
- segs[i].u.p.pts[j].pt.x, segs[i].u.p.pts[j].pt.y, segs[i].u.p.pts[j].pt_type ) > 0;
+ segs[i].u.p.pts[j].pt.x, segs[i].u.p.pts[j].pt.y,
+ segs[i].u.p.pts[j].pt_type ) > 0;
break;
case SEG_TEXT: /* 0pf0fq */
- escaped_text = ConvertToEscapedText(segs[i].u.t.string);
+#ifdef UTFCONVERT
+ if (RequiresConvToUTF8(segs[i].u.t.string)) {
+ size_t cnt = strlen(segs[i].u.t.string) * 2 + 1;
+ out = MyMalloc(cnt);
+ wSystemToUTF8(segs[i].u.t.string, out, (unsigned int)cnt);
+ trackText = out;
+ }
+#else
+ trackText = segs[i].u.t.string;
+#endif // UTFCONVERT
+ escaped_text = ConvertToEscapedText(trackText);
rc &= fprintf( f, "\t%c %ld %0.6f %0.6f %0.6f %d %0.6f \"%s\"\n",
- segs[i].type, wDrawGetRGB(segs[i].color),
- segs[i].u.t.pos.x, segs[i].u.t.pos.y, segs[i].u.t.angle,
- segs[i].u.t.boxed,
- segs[i].u.t.fontSize, escaped_text ) > 0;
+ segs[i].type, wDrawGetRGB(segs[i].color),
+ segs[i].u.t.pos.x, segs[i].u.t.pos.y, segs[i].u.t.angle,
+ segs[i].u.t.boxed,
+ segs[i].u.t.fontSize, escaped_text ) > 0;
MyFree(escaped_text);
+#ifdef UTFCONVERT
+ MyFree(out);
+#endif
break;
}
}
- if (writeEnd) rc &= fprintf( f, "\t%s\n", END_SEGS )>0;
+ if (writeEnd) { rc &= fprintf( f, "\t%s\n", END_SEGS )>0; }
return rc;
}
EXPORT void SegProc(
- segProc_e cmd,
- trkSeg_p segPtr,
- segProcData_p data )
+ segProc_e cmd,
+ trkSeg_p segPtr,
+ segProcData_p data )
{
switch (segPtr->type) {
case SEG_STRTRK:
@@ -1628,12 +1640,12 @@ EXPORT void SegProc(
case SEG_JNTTRK:
JointSegProc( cmd, segPtr, data );
break;
- case SEG_BEZTRK:
- case SEG_BEZLIN:
- BezierSegProc( cmd, segPtr, data);
- break;
- default:
- AbortProg( "SegProg( %d )", segPtr->type );
+ case SEG_BEZTRK:
+ case SEG_BEZLIN:
+ BezierSegProc( cmd, segPtr, data);
+ break;
+ default:
+ CHECKMSG( FALSE, ( "SegProg( %d )", segPtr->type ) );
break;
}
}
@@ -1645,15 +1657,15 @@ EXPORT void SegProc(
*/
EXPORT void DrawDimLine(
- drawCmd_p d,
- coOrd p0,
- coOrd p1,
- char * dimP,
- wFontSize_t fs,
- FLOAT_T middle,
- wDrawWidth width,
- wDrawColor color,
- long option )
+ drawCmd_p d,
+ coOrd p0,
+ coOrd p1,
+ char * dimP,
+ wFontSize_t fs,
+ FLOAT_T middle,
+ wDrawWidth width,
+ wDrawColor color,
+ long option )
{
ANGLE_T a0, a1;
wFont_p fp;
@@ -1662,8 +1674,8 @@ EXPORT void DrawDimLine(
POS_T x, y;
coOrd textsize;
- if ( middle < 0.0 ) middle = 0.0;
- if ( middle > 1.0 ) middle = 1.0;
+ if ( middle < 0.0 ) { middle = 0.0; }
+ if ( middle > 1.0 ) { middle = 1.0; }
a0 = FindAngle( p0, p1 );
dist = fs/144.0;
@@ -1700,37 +1712,37 @@ EXPORT void DrawDimLine(
DrawString( d, s_pos, 0.0, dimP, fp, fs, color );
return;
}
- a1 = FindAngle( zero, size );
- p.x = p0.x+(p1.x-p0.x)*middle;
- p.y = p0.y+(p1.y-p0.y)*middle;
- pc = p;
- p.x -= size.x;
- p.y -= size.y;
- fx = fy = 1;
- if (a0>180) {
- a0 = a0-180;
- fx = fy = -1;
- }
- if (a0>90) {
- a0 = 180-a0;
- fy *= -1;
- }
- if (a0>a1) {
- x = size.x;
- y = x * tan(D2R(90-a0));
- } else {
- y = size.y;
- x = y * tan(D2R(a0));
- }
- DrawString( d, p, 0.0, dimP, fp, fs, color );
- p = pc;
- p.x -= fx*x;
- p.y -= fy*y;
- DrawLine( d, p0, p, width, color );
- p = pc;
- p.x += fx*x;
- p.y += fy*y;
- DrawLine( d, p, p1, width, color );
+ a1 = FindAngle( zero, size );
+ p.x = p0.x+(p1.x-p0.x)*middle;
+ p.y = p0.y+(p1.y-p0.y)*middle;
+ pc = p;
+ p.x -= size.x;
+ p.y -= size.y;
+ fx = fy = 1;
+ if (a0>180) {
+ a0 = a0-180;
+ fx = fy = -1;
+ }
+ if (a0>90) {
+ a0 = 180-a0;
+ fy *= -1;
+ }
+ if (a0>a1) {
+ x = size.x;
+ y = x * tan(D2R(90-a0));
+ } else {
+ y = size.y;
+ x = y * tan(D2R(a0));
+ }
+ DrawString( d, p, 0.0, dimP, fp, fs, color );
+ p = pc;
+ p.x -= fx*x;
+ p.y -= fy*y;
+ DrawLine( d, p0, p, width, color );
+ p = pc;
+ p.x += fx*x;
+ p.y += fy*y;
+ DrawLine( d, p, p1, width, color );
}
/*
@@ -1738,15 +1750,15 @@ EXPORT void DrawDimLine(
* Note that Bezier segments in particular contain sub-arrays of Curve and Straight segments.
*/
EXPORT void DrawSegsO(
- drawCmd_p d,
- track_p trk,
- coOrd orig,
- ANGLE_T angle,
- trkSeg_p segPtr,
- wIndex_t segCnt,
- DIST_T trackGauge,
- wDrawColor color,
- long options )
+ drawCmd_p d,
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle,
+ trkSeg_p segPtr,
+ wIndex_t segCnt,
+ DIST_T trackGauge,
+ wDrawColor color,
+ long options )
{
wIndex_t i, j;
coOrd p0, p1, p2, p3, c;
@@ -1755,7 +1767,7 @@ EXPORT void DrawSegsO(
DIST_T factor = d->dpi/d->scale;
trkSeg_p tempPtr;
- long option;
+ long option;
wFontSize_t fs;
wBool_t bFill,bThick;
@@ -1768,9 +1780,9 @@ EXPORT void DrawSegsO(
color1 = color2 = color;
}
wDrawWidth thick = 3;
-#ifdef WINDOWS
- thick *= (wDrawWidth)(d->dpi/75.0);
-#endif
+//#ifdef WINDOWS
+// thick *= (LWIDTH_T)(d->dpi/BASE_DPI);
+//#endif
switch (segPtr->type) {
case SEG_STRLIN:
case SEG_DIMLIN:
@@ -1781,25 +1793,26 @@ EXPORT void DrawSegsO(
REORIGIN( p1, segPtr->u.l.pos[1], angle, orig )
switch (segPtr->type) {
case SEG_STRTRK:
- if (color1 == wDrawColorBlack)
+ if (color1 == wDrawColorBlack) {
color1 = normalColor;
- if ( segPtr->color == wDrawColorWhite )
- break;
+ }
if (options&DTS_CENTERONLY) {
DrawLine( d, p0, p1, thick, color1 );
break;
}
+ if ( segPtr->color == wDrawColorWhite ) { break; }
DrawStraightTrack( d,
- p0, p1,
- FindAngle(p1, p0 ),
- trk, color1, options );
+ p0, p1,
+ FindAngle(p1, p0 ),
+ trk, color1, options );
break;
case SEG_STRLIN:;
wDrawWidth w;
- if (segPtr->width <0)
- w = (int)floor(fabs(segPtr->width)+0.5);
- else
- w = (int)floor(fabs(segPtr->width*factor)+0.5);
+ if (segPtr->lineWidth < 0) {
+ w = (int)floor(-segPtr->lineWidth + 0.5);
+ } else {
+ w = (int)floor(segPtr->lineWidth * factor + 0.5);
+ }
DrawLine( d, p0, p1, (d->options&DC_THICK)?thick:w, color1 );
break;
case SEG_DIMLIN:
@@ -1817,15 +1830,18 @@ EXPORT void DrawSegsO(
fs = descriptionFontSize*4;
option = segPtr->u.l.option;
fs /= (option==0?8:option==1?4:option==2?2:1);
- if ( fs < 2 )
+ if ( fs < 2 ) {
fs = 2;
- DrawDimLine( d, p0, p1, FormatDistance(FindDistance(p0,p1)), fs, 0.5, (d->options&DC_THICK)?thick:0, color, option & 0x00 );
+ }
+ DrawDimLine( d, p0, p1, FormatDistance(FindDistance(p0,p1)), fs, 0.5,
+ (d->options&DC_THICK)?thick:0, color, option & 0x00 );
break;
case SEG_BENCH:
DrawBench( d, p0, p1, color1, color2, options, segPtr->u.l.option );
break;
case SEG_TBLEDGE:
- DrawLine( d, p0, p1, (wDrawWidth)floor(3.0/BASE_DPI*d->dpi+0.5) , color );
+ // DrawLine( d, p0, p1, (wDrawWidth)floor(3.0/BASE_DPI*d->dpi+0.5), color );
+ DrawLine(d, p0, p1, 3, color);
break;
}
}
@@ -1837,110 +1853,120 @@ EXPORT void DrawSegsO(
a0 = NormalizeAngle(segPtr->u.c.a0 + angle);
REORIGIN( c, segPtr->u.c.center, angle, orig );
if (segPtr->type == SEG_CRVTRK) {
- if (color1 == wDrawColorBlack)
+ if (color1 == wDrawColorBlack) {
color1 = normalColor;
- if ( segPtr->color == wDrawColorWhite )
- break;
+ }
p0.x = p0.y = p1.x = p1.y = 0;
if (options&DTS_CENTERONLY) {
DrawArc( d, c, fabs(segPtr->u.c.radius), a0, segPtr->u.c.a1,
- FALSE, thick, color1 );
+ FALSE, thick, color1 );
break;
}
+ if ( segPtr->color == wDrawColorWhite ) { break; }
DrawCurvedTrack( d,
- c,
- fabs(segPtr->u.c.radius),
- a0, segPtr->u.c.a1,
- trk, color1, options );
+ c,
+ fabs(segPtr->u.c.radius),
+ a0, segPtr->u.c.a1,
+ trk, color1, options );
} else {
wDrawWidth w;
- if (segPtr->width <0)
- w = (int)floor(fabs(segPtr->width)+0.5);
- else
- w = (int)floor(segPtr->width*factor+0.5);
+ if (segPtr->lineWidth < 0) {
+ w = (int)floor(-segPtr->lineWidth + 0.5);
+ } else {
+ w = (int)floor(segPtr->lineWidth * factor + 0.5);
+ }
DrawArc( d, c, fabs(segPtr->u.c.radius), a0, segPtr->u.c.a1,
- FALSE, (d->options&DC_THICK)?thick:w, color1 );
+ FALSE, (d->options&DC_THICK)?thick:w, color1 );
}
break;
- case SEG_BEZTRK:
- case SEG_BEZLIN:
- if (segPtr->type == SEG_BEZTRK) {
- if (color1 == wDrawColorBlack)
- color1 = normalColor;
- if ( segPtr->color == wDrawColorWhite )
- break;
- }
+ case SEG_BEZTRK:
+ case SEG_BEZLIN:
+ if (segPtr->type == SEG_BEZTRK) {
+ if (color1 == wDrawColorBlack) {
+ color1 = normalColor;
+ }
+ if ( segPtr->color == wDrawColorWhite ) {
+ break;
+ }
+ }
//else {
- REORIGIN(p0,segPtr->u.b.pos[0],angle,orig);
- REORIGIN(p1,segPtr->u.b.pos[1],angle,orig);
- REORIGIN(p2,segPtr->u.b.pos[2],angle,orig);
- REORIGIN(p3,segPtr->u.b.pos[3],angle,orig);
+ REORIGIN(p0,segPtr->u.b.pos[0],angle,orig);
+ REORIGIN(p1,segPtr->u.b.pos[1],angle,orig);
+ REORIGIN(p2,segPtr->u.b.pos[2],angle,orig);
+ REORIGIN(p3,segPtr->u.b.pos[3],angle,orig);
//}
- for(int j=0;j<segPtr->bezSegs.cnt;j++) { //Loop through sub Segs
- tempPtr = &DYNARR_N(trkSeg_t,segPtr->bezSegs,j);
- switch (tempPtr->type) {
- case SEG_CRVTRK:
- case SEG_CRVLIN:
- a0 = NormalizeAngle(tempPtr->u.c.a0 + angle);
- REORIGIN( c, tempPtr->u.c.center, angle, orig );
- if (tempPtr->type == SEG_CRVTRK) {
- if (color1 == wDrawColorBlack) color1 = normalColor;
- if ( tempPtr->color == wDrawColorWhite ) break;
- p0.x = p0.y = p1.x = p1.y = 0;
- if (options&DTS_CENTERONLY) {
- DrawArc( d, c, fabs(segPtr->u.c.radius), a0, segPtr->u.c.a1,
- FALSE, thick, color1 );
- break;
- }
- DrawCurvedTrack( d,
- c,
- fabs(tempPtr->u.c.radius),
- a0, tempPtr->u.c.a1,
- trk, color1, options );
- } else if (tempPtr->type == SEG_CRVLIN) {
- wDrawWidth w;
- if (tempPtr->width <0)
- w = (int)floor(fabs(tempPtr->width)+0.5);
- else
- w = (int)floor(tempPtr->width*factor+0.5);
- DrawArc( d, c, fabs(tempPtr->u.c.radius), a0, tempPtr->u.c.a1,
- FALSE, (d->options&DC_THICK)?thick:w, color1 );
- }
- break;
- case SEG_STRTRK:
- if (color1 == wDrawColorBlack) color1 = normalColor;
- if ( tempPtr->color == wDrawColorWhite ) break;
- REORIGIN(p0,tempPtr->u.l.pos[0], angle, orig);
- REORIGIN(p1,tempPtr->u.l.pos[1], angle, orig);
- if (options&DTS_CENTERONLY) {
- DrawLine( d, p0, p1, thick, color1 );
+ for(int j=0; j<segPtr->bezSegs.cnt; j++) { //Loop through sub Segs
+ tempPtr = &DYNARR_N(trkSeg_t,segPtr->bezSegs,j);
+ switch (tempPtr->type) {
+ case SEG_CRVTRK:
+ case SEG_CRVLIN:
+ a0 = NormalizeAngle(tempPtr->u.c.a0 + angle);
+ REORIGIN( c, tempPtr->u.c.center, angle, orig );
+ if (tempPtr->type == SEG_CRVTRK) {
+ if (color1 == wDrawColorBlack) { color1 = normalColor; }
+ p0.x = p0.y = p1.x = p1.y = 0;
+ if (options&DTS_CENTERONLY) {
+ DrawArc( d, c, fabs(segPtr->u.c.radius), a0, segPtr->u.c.a1,
+ FALSE, thick, color1 );
break;
}
- DrawStraightTrack( d, p0, p1,
- FindAngle(p1,p0),
- trk,color1,options);
- break;
- case SEG_STRLIN:
- REORIGIN(p0,tempPtr->u.l.pos[0], angle, orig);
- REORIGIN(p1,tempPtr->u.l.pos[1], angle, orig);
- wDrawWidth w;
- if (tempPtr->width <0)
- w = (int)floor(fabs(tempPtr->width)+0.5);
- else
- w = (int)floor(tempPtr->width*factor+0.5);
- DrawLine( d, p0, p1, (d->options&DC_THICK)?thick:w, color1 );
- break;
- }
- }
- break;
+ if ( tempPtr->color == wDrawColorWhite ) { break; }
+ DrawCurvedTrack( d,
+ c,
+ fabs(tempPtr->u.c.radius),
+ a0, tempPtr->u.c.a1,
+ trk, color1, options );
+ } else if (tempPtr->type == SEG_CRVLIN) {
+ wDrawWidth w;
+ if (tempPtr->lineWidth < 0) {
+ w = (int)floor(-tempPtr->lineWidth + 0.5);
+ } else {
+ w = (int)floor(tempPtr->lineWidth*factor+0.5);
+ }
+ DrawArc( d, c, fabs(tempPtr->u.c.radius), a0, tempPtr->u.c.a1,
+ FALSE, (d->options&DC_THICK)?thick:w, color1 );
+ }
+ break;
+ case SEG_STRTRK:
+ if (color1 == wDrawColorBlack) { color1 = normalColor; }
+ REORIGIN(p0,tempPtr->u.l.pos[0], angle, orig);
+ REORIGIN(p1,tempPtr->u.l.pos[1], angle, orig);
+ if (options&DTS_CENTERONLY) {
+ DrawLine( d, p0, p1, thick, color1 );
+ break;
+ }
+ if ( tempPtr->color == wDrawColorWhite ) { break; }
+ DrawStraightTrack( d, p0, p1,
+ FindAngle(p1,p0),
+ trk,color1,options);
+ break;
+ case SEG_STRLIN:
+ REORIGIN(p0,tempPtr->u.l.pos[0], angle, orig);
+ REORIGIN(p1,tempPtr->u.l.pos[1], angle, orig);
+ wDrawWidth w;
+ if (tempPtr->lineWidth < 0) {
+ w = (int)floor(-tempPtr->lineWidth+0.5);
+ } else {
+ w = (int)floor(tempPtr->lineWidth*factor+0.5);
+ }
+ DrawLine( d, p0, p1, (d->options&DC_THICK)?thick:w, color1 );
+ break;
+ }
+ }
+ break;
case SEG_JNTTRK:
REORIGIN( p0, segPtr->u.j.pos, angle, orig );
- DrawJointTrack( d, p0, NormalizeAngle(segPtr->u.j.angle+angle), segPtr->u.j.l0, segPtr->u.j.l1, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.negate, segPtr->u.j.flip, segPtr->u.j.Scurve, NULL, -1, -1, trackGauge, color1, options );
+ DrawJointTrack( d, p0, NormalizeAngle(segPtr->u.j.angle+angle), segPtr->u.j.l0,
+ segPtr->u.j.l1, segPtr->u.j.R, segPtr->u.j.L, segPtr->u.j.negate,
+ segPtr->u.j.flip, segPtr->u.j.Scurve, NULL, -1, -1, trackGauge, color1,
+ options );
break;
case SEG_TEXT:
REORIGIN( p0, segPtr->u.t.pos, angle, orig )
- DrawMultiString( d, p0, segPtr->u.t.string, segPtr->u.t.fontP, segPtr->u.t.fontSize, color1, NormalizeAngle(angle + segPtr->u.t.angle), NULL, NULL, segPtr->u.t.boxed );
+ DrawMultiString( d, p0, segPtr->u.t.string, segPtr->u.t.fontP,
+ segPtr->u.t.fontSize, color1, NormalizeAngle(angle + segPtr->u.t.angle), NULL,
+ NULL, segPtr->u.t.boxed );
break;
case SEG_FILPOLY:
case SEG_POLY:
@@ -1950,34 +1976,39 @@ EXPORT void DrawSegsO(
coOrd *tempPts = malloc(sizeof(coOrd)*segPtr->u.p.cnt);
int *tempTypes = malloc(sizeof(int)*segPtr->u.p.cnt);
// coOrd tempPts[segPtr->u.p.cnt];
- for (j=0;j<segPtr->u.p.cnt;j++) {
+ for (j=0; j<segPtr->u.p.cnt; j++) {
REORIGIN( tempPts[j], segPtr->u.p.pts[j].pt, angle, orig );
tempTypes[j] = segPtr->u.p.pts[j].pt_type;
}
bFill = (segPtr->type == SEG_FILPOLY);
- if ( (d->options&DC_SIMPLE) && programMode != MODE_TRAIN )
+ if ( (d->options&DC_SIMPLE) && programMode != MODE_TRAIN ) {
bFill = FALSE;
+ }
// If we are drawing highlights for Select, don't fill just edges
bThick = d->options&DC_THICK;
- if (&tempD == d && ( color == wDrawColorPreviewSelected || color == wDrawColorPreviewUnselected || color == selectedColor)) {
+ if (&tempD == d && ( color == wDrawColorPreviewSelected
+ || color == wDrawColorPreviewUnselected || color == selectedColor)) {
bFill = FALSE;
bThick = TRUE;
}
wDrawWidth w;
- if (segPtr->width <0)
- w = (int)floor(fabs(segPtr->width)+0.5);
- else
- w = (int)floor(segPtr->width*factor+0.5);
+ if (segPtr->lineWidth < 0) {
+ w = (int)floor(-segPtr->lineWidth + 0.5);
+ } else {
+ w = (int)floor(segPtr->lineWidth * factor + 0.5);
+ }
drawFill_e eOptFill;
- if ( bFill )
+ if ( bFill ) {
eOptFill = DRAW_FILL;
- else if ( segPtr->u.p.polyType == POLYLINE )
+ } else if ( segPtr->u.p.polyType == POLYLINE ) {
eOptFill = DRAW_OPEN;
- else
+ } else {
eOptFill = DRAW_CLOSED;
- DrawPoly( d, segPtr->u.p.cnt, tempPts, tempTypes, color1, bThick?thick:w, eOptFill );
+ }
+ DrawPoly( d, segPtr->u.p.cnt, tempPts, tempTypes, color1, bThick?thick:w,
+ eOptFill );
free(tempPts);
free(tempTypes);
@@ -1985,12 +2016,14 @@ EXPORT void DrawSegsO(
case SEG_FILCRCL:
REORIGIN( c, segPtr->u.c.center, angle, orig )
bFill = TRUE;
- if ( (d->options&DC_SIMPLE) && programMode != MODE_TRAIN )
+ if ( (d->options&DC_SIMPLE) && programMode != MODE_TRAIN ) {
bFill = FALSE;
+ }
// If we are drawing highlights for Select, don't fill just edges
bThick = d->options&DC_THICK;
- if (&tempD == d && (color == wDrawColorPreviewSelected || color == wDrawColorPreviewUnselected || color == selectedColor)) {
+ if (&tempD == d && (color == wDrawColorPreviewSelected
+ || color == wDrawColorPreviewUnselected || color == selectedColor)) {
bFill = FALSE;
bThick = TRUE;
}
@@ -1998,7 +2031,7 @@ EXPORT void DrawSegsO(
DrawFillCircle( d, c, fabs(segPtr->u.c.radius), color1 );
} else {
DrawArc( d, c, fabs(segPtr->u.c.radius), 0, 360,
- FALSE, bThick?thick:(wDrawWidth)0, color1 );
+ FALSE, bThick?thick:(wDrawWidth)0, color1 );
}
break;
}
@@ -2011,96 +2044,70 @@ EXPORT void DrawSegsO(
*/
EXPORT void DrawSegs(
- drawCmd_p d,
- coOrd orig,
- ANGLE_T angle,
- trkSeg_p segPtr,
- wIndex_t segCnt,
- DIST_T trackGauge,
- wDrawColor color )
+ drawCmd_p d,
+ coOrd orig,
+ ANGLE_T angle,
+ trkSeg_p segPtr,
+ wIndex_t segCnt,
+ DIST_T trackGauge,
+ wDrawColor color )
+{
+
+ DrawSegsO( d, NULL, orig, angle, segPtr, segCnt, trackGauge, color,
+ DTS_LEFT|DTS_RIGHT );
+}
+
+/*
+ * Draw Segments from a DynArr
+ */
+
+EXPORT void DrawSegsDA(
+ drawCmd_p d,
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle,
+ dynArr_t *da,
+ DIST_T trackGauge,
+ wDrawColor color,
+ long options )
{
- DrawSegsO( d, NULL, orig, angle, segPtr, segCnt, trackGauge, color, DTS_LEFT|DTS_RIGHT );
+ if ( da->cnt > 0 ) {
+ DrawSegsO( d, trk, orig, angle, &DYNARR_N(trkSeg_t,*da,0), da->cnt,
+ trackGauge, color, options );
+ }
}
/*
* Free dynamic storage added to each of an array of Track Segments.
*/
-EXPORT void CleanSegs(dynArr_t * seg_p) {
- if (seg_p->cnt ==0) return;
- for (int i=0;i<seg_p->cnt;i++) {
+EXPORT void CleanSegs(dynArr_t * seg_p)
+{
+ if (seg_p->cnt ==0) { return; }
+ for (int i=0; i<seg_p->cnt; i++) {
trkSeg_t t = DYNARR_N(trkSeg_t,* seg_p,i);
if (t.type == SEG_BEZLIN || t.type == SEG_BEZTRK) {
- if (t.bezSegs.ptr) MyFree(t.bezSegs.ptr);
- t.bezSegs.cnt = 0;
- t.bezSegs.max = 0;
- t.bezSegs.ptr = NULL;
+ DYNARR_FREE( trkSeg_t, t.bezSegs );
}
if (t.type == SEG_POLY || t.type == SEG_FILPOLY) {
- if (t.u.p.pts) MyFree(t.u.p.pts);
+ if (t.u.p.pts) { MyFree(t.u.p.pts); }
t.u.p.cnt = 0;
t.u.p.pts = NULL;
}
}
- seg_p->cnt = 0;
- if (seg_p->ptr) MyFree(seg_p->ptr);
- seg_p->ptr = NULL;
- seg_p->max = 0;
-}
-/*
- * Copy Segs from one array to another
- */
-EXPORT void AppendSegsToArray(dynArr_t * seg_to, dynArr_t * seg_from) {
- if (seg_from->cnt ==0) return;
- int j = 0;
- DYNARR_APPEND(trkSeg_t, * seg_to, seg_from->cnt);
- for (int i=0; i<seg_from->cnt;i++,j++) {
- trkSeg_p from_p = &DYNARR_N(trkSeg_t, * seg_from,j);
- trkSeg_p to_p = &DYNARR_N(trkSeg_t, * seg_to,i);
- memcpy(to_p,from_p,sizeof( trkSeg_t));
- if (from_p->type == SEG_BEZLIN || from_p->type == SEG_BEZTRK) {
- if (from_p->bezSegs.ptr) {
- to_p->bezSegs.ptr = memdup(from_p->bezSegs.ptr,from_p->bezSegs.cnt*sizeof(trkSeg_t));
- }
- }
- if (from_p->type == SEG_POLY || from_p->type == SEG_FILPOLY) {
- if (from_p->u.p.pts) {
- to_p->u.p.pts = memdup(from_p->u.p.pts,from_p->u.p.cnt*sizeof(pts_t));
- }
- }
+ if ( seg_p == &tempSegs_da ) {
+ DYNARR_RESET( trkSeg_t, *seg_p );
+ } else {
+ DYNARR_FREE( trkSeg_t, *seg_p );
}
}
-EXPORT void AppendTransformedSegs(dynArr_t * seg_to, dynArr_t * seg_from, coOrd orig, coOrd rotateOrig, ANGLE_T angle) {
- if (seg_from->cnt ==0) return;
- int j = 0;
- DYNARR_APPEND(trkSeg_t, * seg_to, seg_from->cnt);
- for (int i=0; i<seg_from->cnt;i++,j++) {
- trkSeg_p from_p = &DYNARR_N(trkSeg_t, * seg_from,j);
- trkSeg_p to_p = &DYNARR_N(trkSeg_t, * seg_to,i);
- memcpy(to_p,from_p,sizeof( trkSeg_t));
- if (from_p->type == SEG_BEZLIN || from_p->type == SEG_BEZTRK) {
- if (from_p->bezSegs.ptr) {
- to_p->bezSegs.ptr = memdup(from_p->bezSegs.ptr,from_p->bezSegs.cnt*sizeof(trkSeg_t));
- }
- }
- if (from_p->type == SEG_POLY || from_p->type == SEG_FILPOLY) {
- if (from_p->u.p.pts) {
- to_p->u.p.pts = memdup(from_p->u.p.pts,from_p->u.p.cnt*sizeof(pts_t));
- }
- }
- RotateSegs(1,to_p,rotateOrig,angle);
- coOrd move;
- move.x = orig.x - rotateOrig.x;
- move.y = orig.y - rotateOrig.y;
- MoveSegs(1,to_p,move);
- }
-}
-EXPORT void CopyPoly(trkSeg_p p, wIndex_t segCnt) {
+EXPORT void CopyPoly(trkSeg_p p, wIndex_t segCnt)
+{
pts_t * newPts;
- for (int i=0;i<segCnt;i++,p++) {
+ for (int i=0; i<segCnt; i++,p++) {
if ((p->type == SEG_POLY) || (p->type == SEG_FILPOLY)) {
newPts = memdup( p->u.p.pts, p->u.p.cnt*sizeof (pts_t) );
p->u.p.pts = newPts;
@@ -2113,10 +2120,10 @@ EXPORT void CopyPoly(trkSeg_p p, wIndex_t segCnt) {
EXPORT wBool_t CompareSegs(
- trkSeg_p segPtr1,
- int segCnt1,
- trkSeg_p segPtr2,
- int segCnt2 )
+ trkSeg_p segPtr1,
+ int segCnt1,
+ trkSeg_p segPtr2,
+ int segCnt2 )
{
char * cp = message+strlen(message);
if ( segCnt1 != segCnt2 ) {
@@ -2139,7 +2146,7 @@ EXPORT wBool_t CompareSegs(
// These don't have widths
break;
default:
- REGRESS_CHECK_WIDTH( "Width", segP1, segP2, width );
+ REGRESS_CHECK_WIDTH( "Width", segP1, segP2, lineWidth );
}
switch( segP1->type ) {
case SEG_DIMLIN:
diff --git a/app/bin/trkseg.h b/app/bin/trkseg.h
new file mode 100644
index 0000000..8a39097
--- /dev/null
+++ b/app/bin/trkseg.h
@@ -0,0 +1,252 @@
+/** \file trkseg.h
+ *
+ */
+
+/* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef TRKSEG_H
+#define TRKSEG_H
+
+#include "common.h"
+
+#define MAX_PATH_SEGS (127)
+
+typedef enum { FREEFORM, RECTANGLE, POLYLINE
+ } PolyType_e;
+
+
+typedef struct trkSeg_t {
+ char type;
+ wDrawColor color;
+ LWIDTH_T lineWidth;
+ dynArr_t bezSegs; //placed here to avoid overwrites
+ union {
+ struct {
+ coOrd pos[4];
+ ANGLE_T angle;
+ long option;
+ } l;
+ struct {
+ coOrd pos[4];
+ ANGLE_T angle0;
+ ANGLE_T angle3;
+ DIST_T minRadius;
+ DIST_T radius0;
+ DIST_T radius3;
+ DIST_T length;
+ } b;
+ struct {
+ coOrd center;
+ ANGLE_T a0, a1;
+ DIST_T radius;
+ } c;
+ struct {
+ coOrd pos;
+ ANGLE_T angle;
+ DIST_T R, L;
+ DIST_T l0, l1;
+ unsigned int flip:1;
+ unsigned int negate:1;
+ unsigned int Scurve:1;
+ } j;
+ struct {
+ coOrd pos;
+ ANGLE_T angle;
+ wFont_p fontP;
+ FONTSIZE_T fontSize;
+ BOOL_T boxed;
+ char * string;
+ } t;
+ struct {
+ int cnt;
+ pts_t * pts;
+ coOrd orig;
+ ANGLE_T angle;
+ PolyType_e polyType;
+ } p;
+ } u;
+} trkSeg_t;
+typedef struct trkSeg_t * trkSeg_p;
+
+#define SEG_STRTRK ('S')
+#define SEG_CRVTRK ('C')
+#define SEG_BEZTRK ('W')
+#define SEG_STRLIN ('L')
+#define SEG_CRVLIN ('A')
+#define SEG_BEZLIN ('H')
+#define SEG_JNTTRK ('J')
+#define SEG_FILCRCL ('G')
+#define SEG_POLY ('Y')
+#define SEG_FILPOLY ('F')
+#define SEG_TEXT ('Z')
+#define SEG_UNCEP ('E')
+#define SEG_CONEP ('T')
+#define SEG_PATH ('P')
+#define SEG_SPEC ('X')
+#define SEG_CUST ('U')
+#define SEG_DOFF ('D')
+#define SEG_BENCH ('B')
+#define SEG_DIMLIN ('M')
+#define SEG_TBLEDGE ('Q')
+
+#define IsSegTrack( S ) ( (S)->type == SEG_STRTRK || (S)->type == SEG_CRVTRK || (S)->type == SEG_JNTTRK || (S)->type == SEG_BEZTRK)
+
+extern dynArr_t tempSegs_da;
+
+#define tempSegs(N) DYNARR_N( trkSeg_t, tempSegs_da, N )
+
+extern char tempSpecial[4096];
+extern char tempCustom[4096];
+
+void ComputeCurvedSeg(
+ trkSeg_p s,
+ DIST_T radius,
+ coOrd p0,
+ coOrd p1 );
+
+coOrd GetSegEndPt(
+ trkSeg_p segPtr,
+ EPINX_T ep,
+ BOOL_T bounds,
+ ANGLE_T * );
+
+void GetTextBounds( coOrd, ANGLE_T, char *, FONTSIZE_T, coOrd *, coOrd * );
+void GetSegBounds( coOrd, ANGLE_T, wIndex_t, trkSeg_p, coOrd *, coOrd * );
+void MoveSegs( wIndex_t, trkSeg_p, coOrd );
+void RotateSegs( wIndex_t, trkSeg_p, coOrd, ANGLE_T );
+void FlipSegs( wIndex_t, trkSeg_p, coOrd, ANGLE_T );
+void RescaleSegs( wIndex_t, trkSeg_p, DIST_T, DIST_T, DIST_T );
+void CloneFilledDraw( wIndex_t, trkSeg_p, BOOL_T );
+void FreeFilledDraw( wIndex_t, trkSeg_p );
+DIST_T DistanceSegs( coOrd, ANGLE_T, wIndex_t, trkSeg_p, coOrd *, wIndex_t * );
+ANGLE_T GetAngleSegs( wIndex_t, trkSeg_p, coOrd *, wIndex_t *, DIST_T *,
+ BOOL_T *, wIndex_t *, BOOL_T * );
+void RecolorSegs( wIndex_t, trkSeg_p, wDrawColor );
+BOOL_T ReadSegs( void );
+BOOL_T WriteSegs( FILE * f, wIndex_t segCnt, trkSeg_p segs );
+BOOL_T WriteSegsEnd(FILE * f, wIndex_t segCnt, trkSeg_p segs, BOOL_T writeEnd);
+
+
+typedef union {
+ struct {
+ coOrd pos; /* IN the point to get to */
+ ANGLE_T angle; /* IN is the angle that the object starts at (-ve for forwards) */
+ DIST_T dist; /* OUT is how far it is along the track to get to pos*/
+ BOOL_T backwards; /* OUT which way are we going? */
+ BOOL_T reverse_seg; /* OUT the seg is backwards curve */
+ BOOL_T negative; /* OUT the curve is negative */
+ int BezSegInx; /* OUT for Bezier Seg - the segment we are on in Bezier */
+ BOOL_T segs_backwards; /* OUT for Bezier Seg - the direction of the overall Bezier */
+ } traverse1; // Find dist between pos and end of track that starts with angle set backwards
+ struct {
+ BOOL_T segDir; /* IN Direction to go in this seg*/
+ int BezSegInx; /* IN for Bezier Seg which element to start with*/
+ BOOL_T segs_backwards; /* IN for Bezier Seg which way to go down the array*/
+ DIST_T dist; /* IN/OUT In = distance to go, Out = distance left */
+ coOrd pos; /* OUT = point reached if dist = 0 */
+ ANGLE_T angle; /* OUT = angle at point */
+ } traverse2; //Return distance left (or 0) and angle and pos when going dist from segDir end
+ struct {
+ int first, last; /* IN */
+ ANGLE_T side;
+ DIST_T roadbedWidth;
+ wDrawWidth rbw;
+ coOrd orig;
+ ANGLE_T angle;
+ wDrawColor color;
+ drawCmd_p d;
+ } drawRoadbedSide;
+ struct {
+ coOrd pos1; /* IN pos to find */
+ DIST_T dd; /* OUT distance from nearest point in seg to input pos */
+ } distance;
+ struct {
+ track_p trk; /* OUT */
+ EPINX_T ep[2];
+ } newTrack;
+ struct {
+ DIST_T length; /* OUT */
+ } length;
+ struct {
+ coOrd pos; /* IN */
+ DIST_T length[2]; /* OUT */
+ trkSeg_t newSeg[2];
+ } split;
+ struct {
+ coOrd pos; /* IN Pos to find nearest to - OUT found pos on curve*/
+ ANGLE_T angle; /* OUT angle at pos - (-ve if backwards)*/
+ BOOL_T negative_radius; /* OUT Radius <0? */
+ BOOL_T backwards; /* OUT Seg is backwards */
+ DIST_T radius; /* OUT radius at pos */
+ coOrd center; /* OUT center of curvature at pos (0 = straight)*/
+ int bezSegInx; /* OUT if a bezier proc, the index of the sub segment */
+ } getAngle; // Get pos on seg nearest, angle at that (-ve for forwards)
+} segProcData_t, *segProcData_p;
+typedef enum {
+ SEGPROC_TRAVERSE1,
+ SEGPROC_TRAVERSE2,
+ SEGPROC_DRAWROADBEDSIDE,
+ SEGPROC_DISTANCE,
+ SEGPROC_FLIP,
+ SEGPROC_NEWTRACK,
+ SEGPROC_LENGTH,
+ SEGPROC_SPLIT,
+ SEGPROC_GETANGLE
+} segProc_e;
+
+void SegProc( segProc_e, trkSeg_p, segProcData_p );
+void DrawDimLine( drawCmd_p, coOrd, coOrd, char *, wFontSize_t, FLOAT_T,
+ wDrawWidth, wDrawColor, long );
+void DrawSegs(
+ drawCmd_p d,
+ coOrd orig,
+ ANGLE_T angle,
+ trkSeg_p segPtr,
+ wIndex_t segCnt,
+ DIST_T trackGauge,
+ wDrawColor color );
+void DrawSegsDA(
+ drawCmd_p d,
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle,
+ dynArr_t * da,
+ DIST_T trackGauge,
+ wDrawColor color,
+ long options );
+void DrawSegsO(
+ drawCmd_p d,
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle,
+ trkSeg_p segPtr,
+ wIndex_t segCnt,
+ DIST_T trackGauge,
+ wDrawColor color,
+ long options );
+
+
+void StraightSegProc( segProc_e, trkSeg_p, segProcData_p );
+void CurveSegProc( segProc_e, trkSeg_p, segProcData_p );
+void JointSegProc( segProc_e, trkSeg_p, segProcData_p );
+void BezierSegProc( segProc_e, trkSeg_p, segProcData_p ); //Used in Cornu join
+void CleanSegs( dynArr_t *);
+void CopyPoly(trkSeg_p seg_p, wIndex_t segCnt);
+wBool_t CompareSegs( trkSeg_p, int, trkSeg_p, int );
+#endif
diff --git a/app/bin/tstraigh.c b/app/bin/tstraigh.c
index 4408023..1a3fa51 100644
--- a/app/bin/tstraigh.c
+++ b/app/bin/tstraigh.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 "cstraigh.h"
@@ -37,11 +37,14 @@
static TRKTYP_T T_STRAIGHT = -1;
typedef struct extraDataStraight_t {
- extraDataBase_t base;
- coOrd descriptionOff;
- } extraDataStraight_t;
+ extraDataBase_t base;
+ coOrd descriptionOff;
+} extraDataStraight_t;
+/** @logcmd @showrefby straight=n tstraigh.c */
+static int log_straight = 0;
+
/****************************************
*
* UTILITIES
@@ -51,15 +54,13 @@ typedef struct extraDataStraight_t {
void AdjustStraightEndPt( track_p t, EPINX_T inx, coOrd pos )
{
- if (GetTrkType(t) != T_STRAIGHT) {
- AbortProg( "AdjustLIneEndPt( %d, %d ) not on STRAIGHT %d\n",
- GetTrkIndex(t), inx, GetTrkType(t) );
- return;
- }
+ CHECKMSG( GetTrkType(t) == T_STRAIGHT,
+ ("AdjustLIneEndPt( %d, %d ) not on STRAIGHT %d\n",
+ GetTrkIndex(t), inx, GetTrkType(t) ) );
UndoModify( t );
#ifdef VERBOSE
-lprintf("adjustStraightEndPt T%d[%d] p=[%0.3f %0.3f]\n",
- GetTrkIndex(t), inx, pos.x, pos.y );
+ lprintf("adjustStraightEndPt T%d[%d] p=[%0.3f %0.3f]\n",
+ GetTrkIndex(t), inx, pos.x, pos.y );
#endif
SetTrkEndPoint( t, inx, pos, GetTrkEndAngle(t,inx));
ComputeBoundingBox( t );
@@ -73,69 +74,78 @@ lprintf("adjustStraightEndPt T%d[%d] p=[%0.3f %0.3f]\n",
*/
static struct {
- coOrd endPt[2];
- DIST_T elev[2];
- FLOAT_T length;
- ANGLE_T angle;
- FLOAT_T grade;
- descPivot_t pivot;
- unsigned int layerNumber;
- } strData;
+ coOrd endPt[2];
+ DIST_T elev[2];
+ FLOAT_T length;
+ ANGLE_T angle;
+ FLOAT_T grade;
+ descPivot_t pivot;
+ unsigned int layerNumber;
+} strData;
typedef enum { E0, Z0, E1, Z1, LN, AN, GR, PV, LY } strDesc_e;
static descData_t strDesc[] = {
-/*E0*/ { DESC_POS, N_("End Pt 1: X,Y"), &strData.endPt[0] },
-/*Z0*/ { DESC_DIM, N_("Z"), &strData.elev[0] },
-/*E1*/ { DESC_POS, N_("End Pt 2: X,Y"), &strData.endPt[1] },
-/*Z1*/ { DESC_DIM, N_("Z"), &strData.elev[1] },
-/*LN*/ { DESC_DIM, N_("Length"), &strData.length },
-/*AN*/ { DESC_ANGLE, N_("Track Angle"), &strData.angle },
-/*GR*/ { DESC_FLOAT, N_("Grade"), &strData.grade },
-/*PV*/ { DESC_PIVOT, N_("Pivot"), &strData.pivot },
-/*LY*/ { DESC_LAYER, N_("Layer"), &strData.layerNumber },
- { DESC_NULL } };
+ /*E0*/ { DESC_POS, N_("End Pt 1: X,Y"), &strData.endPt[0] },
+ /*Z0*/ { DESC_DIM, N_("Z"), &strData.elev[0] },
+ /*E1*/ { DESC_POS, N_("End Pt 2: X,Y"), &strData.endPt[1] },
+ /*Z1*/ { DESC_DIM, N_("Z"), &strData.elev[1] },
+ /*LN*/ { DESC_DIM, N_("Length"), &strData.length },
+ /*AN*/ { DESC_ANGLE, N_("Track Angle"), &strData.angle },
+ /*GR*/ { DESC_FLOAT, N_("Grade"), &strData.grade },
+ /*PV*/ { DESC_PIVOT, N_("Pivot"), &strData.pivot },
+ /*LY*/ { DESC_LAYER, N_("Layer"), &strData.layerNumber },
+ { DESC_NULL }
+};
EXPORT BOOL_T UpdateDescStraight(
- int inx,
- int e0,
- int e1,
- int ln,
- int an,
- descData_p desc,
- long pivot )
+ int inx,
+ int e0,
+ int e1,
+ int ln,
+ int an,
+ descData_p desc,
+ long pivot )
{
coOrd mid;
if ( inx == e0 || inx == e1 ) {
- *(DIST_T*)desc[ln].valueP = FindDistance( *(coOrd*)desc[e0].valueP, *(coOrd*)desc[e1].valueP );
- *(ANGLE_T*)desc[an].valueP = FindAngle( *(coOrd*)desc[e0].valueP, *(coOrd*)desc[e1].valueP );
- if ( inx == e0 )
+ *(DIST_T*)desc[ln].valueP = FindDistance( *(coOrd*)desc[e0].valueP,
+ *(coOrd*)desc[e1].valueP );
+ *(ANGLE_T*)desc[an].valueP = FindAngle( *(coOrd*)desc[e0].valueP,
+ *(coOrd*)desc[e1].valueP );
+ if ( inx == e0 ) {
desc[e1].mode |= DESC_CHANGE;
- else
+ } else {
desc[e0].mode |= DESC_CHANGE;
+ }
desc[ln].mode |= DESC_CHANGE;
desc[an].mode |= DESC_CHANGE;
} else if ( inx == ln || inx == an ) {
if ( inx == ln && *(DIST_T*)desc[ln].valueP <= minLength ) {
ErrorMessage( MSG_OBJECT_TOO_SHORT );
- *(DIST_T*)desc[ln].valueP = FindDistance( *(coOrd*)desc[e0].valueP, *(coOrd*)desc[e1].valueP );
+ *(DIST_T*)desc[ln].valueP = FindDistance( *(coOrd*)desc[e0].valueP,
+ *(coOrd*)desc[e1].valueP );
desc[ln].mode |= DESC_CHANGE;
return FALSE;
}
switch (pivot) {
case DESC_PIVOT_FIRST:
- Translate( (coOrd*)desc[e1].valueP, *(coOrd*)desc[e0].valueP, *(ANGLE_T*)desc[an].valueP, *(DIST_T*)desc[ln].valueP );
+ Translate( (coOrd*)desc[e1].valueP, *(coOrd*)desc[e0].valueP,
+ *(ANGLE_T*)desc[an].valueP, *(DIST_T*)desc[ln].valueP );
desc[e1].mode |= DESC_CHANGE;
break;
case DESC_PIVOT_SECOND:
- Translate( (coOrd*)desc[e0].valueP, *(coOrd*)desc[e1].valueP, *(ANGLE_T*)desc[an].valueP+180.0, *(DIST_T*)desc[ln].valueP );
+ Translate( (coOrd*)desc[e0].valueP, *(coOrd*)desc[e1].valueP,
+ *(ANGLE_T*)desc[an].valueP+180.0, *(DIST_T*)desc[ln].valueP );
desc[e0].mode |= DESC_CHANGE;
break;
case DESC_PIVOT_MID:
mid.x = (((coOrd*)desc[e0].valueP)->x+((coOrd*)desc[e1].valueP)->x)/2.0;
mid.y = (((coOrd*)desc[e0].valueP)->y+((coOrd*)desc[e1].valueP)->y)/2.0;
- Translate( (coOrd*)desc[e0].valueP, mid, *(ANGLE_T*)desc[an].valueP+180.0, *(DIST_T*)desc[ln].valueP/2.0 );
- Translate( (coOrd*)desc[e1].valueP, mid, *(ANGLE_T*)desc[an].valueP, *(DIST_T*)desc[ln].valueP/2.0 );
+ Translate( (coOrd*)desc[e0].valueP, mid, *(ANGLE_T*)desc[an].valueP+180.0,
+ *(DIST_T*)desc[ln].valueP/2.0 );
+ Translate( (coOrd*)desc[e1].valueP, mid, *(ANGLE_T*)desc[an].valueP,
+ *(DIST_T*)desc[ln].valueP/2.0 );
desc[e0].mode |= DESC_CHANGE;
desc[e1].mode |= DESC_CHANGE;
break;
@@ -149,7 +159,8 @@ EXPORT BOOL_T UpdateDescStraight(
}
-static void UpdateStraight( track_p trk, int inx, descData_p descUpd, BOOL_T final )
+static void UpdateStraight( track_p trk, int inx, descData_p descUpd,
+ BOOL_T final )
{
EPINX_T ep;
switch ( inx ) {
@@ -157,18 +168,21 @@ static void UpdateStraight( track_p trk, int inx, descData_p descUpd, BOOL_T fin
case E1:
case LN:
case AN:
- if ( ! UpdateDescStraight( inx, E0, E1, LN, AN, strDesc, strData.pivot ) )
+ if ( ! UpdateDescStraight( inx, E0, E1, LN, AN, strDesc, strData.pivot ) ) {
return;
+ }
break;
case Z0:
case Z1:
ep = (inx==Z0?0:1);
- UpdateTrkEndElev( trk, ep, GetTrkEndElevUnmaskedMode(trk,ep), strData.elev[ep], NULL );
+ UpdateTrkEndElev( trk, ep, GetTrkEndElevUnmaskedMode(trk,ep), strData.elev[ep],
+ NULL );
ComputeElev( trk, 1-ep, FALSE, &strData.elev[1-ep], NULL, TRUE );
- if ( strData.length > minLength )
+ if ( strData.length > minLength ) {
strData.grade = fabs( (strData.elev[0]-strData.elev[1])/strData.length )*100.0;
- else
+ } else {
strData.grade = 0.0;
+ }
strDesc[GR].mode |= DESC_CHANGE;
strDesc[inx==Z0?Z1:Z0].mode |= DESC_CHANGE;
/*return;*/
@@ -180,22 +194,27 @@ static void UpdateStraight( track_p trk, int inx, descData_p descUpd, BOOL_T fin
return;
}
UndrawNewTrack( trk );
- if ( GetTrkEndTrk(trk,0) == NULL )
- SetTrkEndPoint( trk, 0, strData.endPt[0], NormalizeAngle(strData.angle+180.0) );
- if ( GetTrkEndTrk(trk,1) == NULL )
+ if ( GetTrkEndTrk(trk,0) == NULL ) {
+ SetTrkEndPoint( trk, 0, strData.endPt[0],
+ NormalizeAngle(strData.angle+180.0) );
+ }
+ if ( GetTrkEndTrk(trk,1) == NULL ) {
SetTrkEndPoint( trk, 1, strData.endPt[1], strData.angle );
+ }
ComputeBoundingBox( trk );
- DrawNewTrack( trk );
+ DrawNewTrack( trk );
}
static void DescribeStraight( track_p trk, char * str, CSIZE_T len )
{
int fix0, fix1;
- sprintf( str, _("Straight Track(%d): Layer=%d Length=%s EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"), GetTrkIndex(trk),
- GetTrkLayer(trk)+1,
- FormatDistance(FindDistance( GetTrkEndPos(trk,0), GetTrkEndPos(trk,1) )),
- GetTrkEndPosXY(trk,0), GetTrkEndAngle(trk,0),
- GetTrkEndPosXY(trk,1), GetTrkEndAngle(trk,1) );
+ sprintf( str,
+ _("Straight Track(%d): Layer=%d Length=%s EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"),
+ GetTrkIndex(trk),
+ GetTrkLayer(trk)+1,
+ FormatDistance(FindDistance( GetTrkEndPos(trk,0), GetTrkEndPos(trk,1) )),
+ GetTrkEndPosXY(trk,0), GetTrkEndAngle(trk,0),
+ GetTrkEndPosXY(trk,1), GetTrkEndAngle(trk,1) );
fix0 = GetTrkEndTrk(trk,0)!=NULL;
fix1 = GetTrkEndTrk(trk,1)!=NULL;
strData.endPt[0] = GetTrkEndPos(trk,0);
@@ -204,13 +223,14 @@ static void DescribeStraight( track_p trk, char * str, CSIZE_T len )
ComputeElev( trk, 1, FALSE, &strData.elev[1], NULL, FALSE );
strData.length = FindDistance( strData.endPt[0], strData.endPt[1] );
strData.layerNumber = GetTrkLayer(trk);
- if ( strData.length > minLength )
+ if ( strData.length > minLength ) {
strData.grade = fabs( (strData.elev[0]-strData.elev[1])/strData.length )*100.0;
- else
+ } else {
strData.grade = 0.0;
+ }
strData.angle = FindAngle( strData.endPt[0], strData.endPt[1] );
strDesc[E0].mode =
- strDesc[E1].mode = (fix0|fix1)?DESC_RO:0;
+ strDesc[E1].mode = (fix0|fix1)?DESC_RO:0;
strDesc[Z0].mode = (EndPtIsDefinedElev(trk,0)?0:DESC_RO)|DESC_NOREDRAW;
strDesc[Z1].mode = (EndPtIsDefinedElev(trk,1)?0:DESC_RO)|DESC_NOREDRAW;
strDesc[GR].mode = DESC_RO;
@@ -219,9 +239,9 @@ static void DescribeStraight( track_p trk, char * str, CSIZE_T len )
strDesc[PV].mode = (fix0|fix1)?DESC_IGNORE:0;
strDesc[LY].mode = DESC_NOREDRAW;
strData.pivot = (fix0&fix1)?DESC_PIVOT_NONE:
- fix0?DESC_PIVOT_FIRST:
- fix1?DESC_PIVOT_SECOND:
- DESC_PIVOT_MID;
+ fix0?DESC_PIVOT_FIRST:
+ fix1?DESC_PIVOT_SECOND:
+ DESC_PIVOT_MID;
DoDescribe( _("Straight Track"), trk, strDesc, UpdateStraight );
}
@@ -231,22 +251,24 @@ static DIST_T DistanceStraight( track_p t, coOrd * p )
}
STATUS_T StraightDescriptionMove(
- track_p trk,
- wAction_t action,
- coOrd pos )
+ track_p trk,
+ wAction_t action,
+ coOrd pos )
{
extraDataStraight_t *xx = GET_EXTRA_DATA(trk, T_STRAIGHT, extraDataStraight_t);
- ANGLE_T a,ap;
+ ANGLE_T ap;
+// ANGLE_T a;
coOrd end0, end1;
- end0 = GetTrkEndPos(trk,0);
- end1 = GetTrkEndPos(trk,1);
- a = FindAngle(end0,end1);
- ap = NormalizeAngle(FindAngle(end0,pos)-FindAngle(end0,end1));
+ end0 = GetTrkEndPos(trk,0);
+ end1 = GetTrkEndPos(trk,1);
+// a = FindAngle(end0,end1);
+ ap = NormalizeAngle(FindAngle(end0,pos)-FindAngle(end0,end1));
- xx->descriptionOff.y = FindDistance(end0,pos)*sin(D2R(ap))-2*GetTrkGauge(trk);
- xx->descriptionOff.x = -0.5 + FindDistance(end0,pos)*cos(D2R(ap))/FindDistance(end0,end1);
- if (xx->descriptionOff.x > 0.5) xx->descriptionOff.x = 0.5;
- if (xx->descriptionOff.x < -0.5) xx->descriptionOff.x = -0.5;
+ xx->descriptionOff.y = FindDistance(end0,pos)*sin(D2R(ap))-2*GetTrkGauge(trk);
+ xx->descriptionOff.x = -0.5 + FindDistance(end0,
+ pos)*cos(D2R(ap))/FindDistance(end0,end1);
+ if (xx->descriptionOff.x > 0.5) { xx->descriptionOff.x = 0.5; }
+ if (xx->descriptionOff.x < -0.5) { xx->descriptionOff.x = -0.5; }
return C_CONTINUE;
@@ -254,18 +276,21 @@ STATUS_T StraightDescriptionMove(
}
DIST_T StraightDescriptionDistance(
- coOrd pos,
- track_p trk,
- coOrd * dpos,
- BOOL_T show_hidden,
- BOOL_T * hidden)
+ coOrd pos,
+ track_p trk,
+ coOrd * dpos,
+ BOOL_T show_hidden,
+ BOOL_T * hidden)
{
coOrd p1;
- if (hidden) *hidden = FALSE;
- if ( GetTrkType( trk ) != T_STRAIGHT || ((( GetTrkBits( trk ) & TB_HIDEDESC ) != 0 ) && !show_hidden))
+ if (hidden) { *hidden = FALSE; }
+ if ( GetTrkType( trk ) != T_STRAIGHT
+ || ((( GetTrkBits( trk ) & TB_HIDEDESC ) != 0 ) && !show_hidden)) {
return DIST_INF;
+ }
- struct extraDataStraight_t *xx = GET_EXTRA_DATA(trk, T_STRAIGHT, extraDataStraight_t);
+ struct extraDataStraight_t *xx = GET_EXTRA_DATA(trk, T_STRAIGHT,
+ extraDataStraight_t);
ANGLE_T a;
coOrd end0, end0off, end1, end1off;
end0 = GetTrkEndPos(trk,0);
@@ -277,27 +302,31 @@ DIST_T StraightDescriptionDistance(
p1.x = (end1off.x - end0off.x)*(xx->descriptionOff.x+0.5) + end0off.x;
p1.y = (end1off.y - end0off.y)*(xx->descriptionOff.x+0.5) + end0off.y;
- if (hidden) *hidden = (GetTrkBits( trk ) & TB_HIDEDESC);
+ if (hidden) { *hidden = (GetTrkBits( trk ) & TB_HIDEDESC); }
*dpos = p1;
coOrd tpos = pos;
- if (LineDistance(&tpos,end0,end1)<FindDistance( p1, pos ))
+ if (LineDistance(&tpos,end0,end1)<FindDistance( p1, pos )) {
return LineDistance(&pos,end0,end1);
+ }
return FindDistance( p1, pos );
}
static void DrawStraightDescription(
- track_p trk,
- drawCmd_p d,
- wDrawColor color )
+ track_p trk,
+ drawCmd_p d,
+ wDrawColor color )
{
ANGLE_T a;
- struct extraDataStraight_t *xx = GET_EXTRA_DATA(trk, T_STRAIGHT, extraDataStraight_t);
+ struct extraDataStraight_t *xx = GET_EXTRA_DATA(trk, T_STRAIGHT,
+ extraDataStraight_t);
- if (layoutLabels == 0)
+ if (layoutLabels == 0) {
return;
- if ((labelEnable&LABELENABLE_TRKDESC)==0)
+ }
+ if ((labelEnable&LABELENABLE_TRKDESC)==0) {
return;
+ }
coOrd end0, end0off, end1, end1off;
end0 = GetTrkEndPos(trk,0);
@@ -308,16 +337,18 @@ static void DrawStraightDescription(
Translate(&end1off,end1,a+90,2*GetTrkGauge(trk)+xx->descriptionOff.y);
DrawLine(d,end1,end1off,0,color);
sprintf( message, "L%s A%0.3f",
- FormatDistance(FindDistance(end0,end1)),FindAngle(end0,end1));
+ FormatDistance(FindDistance(end0,end1)),FindAngle(end0,end1));
- DrawDimLine( d, end0off, end1off, message, (wFontSize_t)descriptionFontSize, xx->descriptionOff.x+0.5, 0, color, 0x00 );
+ DrawDimLine( d, end0off, end1off, message, (wFontSize_t)descriptionFontSize,
+ xx->descriptionOff.x+0.5, 0, color, 0x00 );
- if ( !(GetTrkBits( trk ) & TB_DETAILDESC) ) return;
+ if ( !(GetTrkBits( trk ) & TB_DETAILDESC) ) { return; }
if ( GetTrkBits( trk ) & TB_DETAILDESC ) {
coOrd details_pos;
details_pos.x = (end1off.x - end0off.x)*(xx->descriptionOff.x+0.5) + end0off.x;
- details_pos.y = (end1off.y - end0off.y)*(xx->descriptionOff.x+0.5) + end0off.y-(2*descriptionFontSize/mainD.dpi);
+ details_pos.y = (end1off.y - end0off.y)*(xx->descriptionOff.x+0.5) + end0off.y-
+ (2*descriptionFontSize/mainD.dpi);
AddTrkDetails(d, trk, details_pos, FindDistance(end0,end1), color);
}
@@ -327,37 +358,195 @@ static void DrawStraightDescription(
static void DrawStraight( track_p t, drawCmd_p d, wDrawColor color )
{
if (((d->options&(DC_SIMPLE|DC_SEGTRACK))==0) &&
- (labelWhen == 2 || (labelWhen == 1 && (d->options&DC_PRINT))) &&
- labelScale >= d->scale &&
- ( GetTrkBits( t ) & TB_HIDEDESC ) == 0 ) {
- DrawStraightDescription( t, d, color );
+ (labelWhen == 2 || (labelWhen == 1 && (d->options&DC_PRINT))) &&
+ labelScale >= d->scale &&
+ ( GetTrkBits( t ) & TB_HIDEDESC ) == 0 ) {
+ DrawStraightDescription( t, d, color );
}
- long bridge = GetTrkBridge( t );
+ // long bridge = GetTrkBridge( t );
long widthOptions = DTS_LEFT|DTS_RIGHT;
DrawStraightTrack( d, GetTrkEndPos(t,0), GetTrkEndPos(t,1),
- GetTrkEndAngle(t,0),
- t, color, widthOptions );
+ GetTrkEndAngle(t,0),
+ t, color, widthOptions );
DrawEndPt( d, t, 0, color );
DrawEndPt( d, t, 1, color );
}
+EXPORT void DrawStraightTies(
+ drawCmd_p d,
+ tieData_t td,
+ coOrd p0,
+ coOrd p1,
+ wDrawColor color )
+{
+ DIST_T tieOff0=0.0, tieOff1=0.0;
+ DIST_T len, dlen;
+ coOrd pos;
+ int cnt;
+ ANGLE_T angle;
+
+ if ( (d->options&DC_SIMPLE) != 0 ) {
+ return;
+ }
+
+ if ( color == wDrawColorBlack ) {
+ color = tieColor;
+ }
+ len = FindDistance( p0, p1 );
+ len -= tieOff0+tieOff1;
+ angle = FindAngle( p0, p1 );
+ cnt = (int)floor(len / td.spacing+0.5);
+ if ( len - td.spacing*cnt - td.width > (td.spacing - td.width)/2 ) {
+ cnt++;
+ }
+ if ( cnt != 0 ) {
+ dlen = FindDistance( p0, p1 )/cnt;
+// double endsize = FindDistance( p0, p1 )-cnt*dlen-td->width;
+ for ( len=dlen/2; cnt; cnt--,len+=dlen ) {
+ Translate( &pos, p0, angle, len );
+ DrawTie( d, pos, angle, td.length, td.width, color,
+ tieDrawMode==TIEDRAWMODE_SOLID );
+ }
+ }
+}
+
+
+
+EXPORT void DrawStraightTrack(
+ drawCmd_p d,
+ coOrd p0,
+ coOrd p1,
+ ANGLE_T angle,
+ track_cp trk,
+ wDrawColor color,
+ long options )
+{
+ coOrd pp0, pp1;
+ DIST_T trackGauge = GetTrkGauge(trk);
+ tieData_t td;
+ long bridge = 0, roadbed = 0;
+ if ( trk ) {
+ bridge = GetTrkBridge(trk);
+ roadbed = GetTrkRoadbed(trk);
+ }
+ wDrawWidth width=0;
+ trkSeg_p segPtr;
+
+ if ( (d->options&DC_SEGTRACK) ) {
+ DYNARR_APPEND( trkSeg_t, tempSegs_da, 10 );
+ segPtr = &tempSegs(tempSegs_da.cnt-1);
+ segPtr->type = SEG_STRTRK;
+ segPtr->lineWidth = 0;
+ segPtr->color = wDrawColorBlack;
+ segPtr->u.l.pos[0] = p0;
+ segPtr->u.l.pos[1] = p1;
+ segPtr->u.l.angle = angle;
+ segPtr->u.l.option = 0;
+ return;
+ }
+
+ width = trk ? GetTrkWidth( trk ): 0;
+ if ((d->options&DC_PRINT) && (d->dpi>2*BASE_DPI)) {
+ width = (wDrawWidth)round(width * d->dpi / 2 / BASE_DPI);
+ }
+
+ if ( d->options&DC_THICK ) {
+ width = 3;
+ }
+ if ( color == wDrawColorPreviewSelected
+ || color == wDrawColorPreviewUnselected ) {
+ width = 3;
+ }
+
+
+ LOG(log_straight,4,("DST( (%0.3f %0.3f) .. (%0.3f..%0.3f)\n",
+ p0.x, p0.y, p1.x, p1.y ) )
+
+ // Draw solid background
+ if(bridge|roadbed) {
+ wDrawWidth width3 = (wDrawWidth)round(trackGauge * 3 * d->dpi / d->scale);
+ DrawLine(d,p0,p1,width3,bridge?bridgeColor:roadbedColor);
+ }
+
+ if ( DoDrawTies( d, trk ) ) {
+ td = GetTrkTieData( trk );
+ DrawStraightTies( d, td, p0, p1, color );
+ }
+ if (color == wDrawColorBlack) {
+ color = normalColor;
+ }
+ if ( ! DrawTwoRails( d, 1 ) ) {
+ DrawLine( d, p0, p1, width, color );
+ } else {
+ if ( hasTrackCenterline(d)) {
+ long options = d->options;
+ d->options |= DC_DASH;
+ DrawLine( d, p0, p1, 0, color );
+ d->options = options;
+ }
+ Translate( &pp0, p0, angle+90, trackGauge/2.0 );
+ Translate( &pp1, p1, angle+90, trackGauge/2.0 );
+ DrawLine( d, pp0, pp1, width, color );
+
+ Translate( &pp0, p0, angle-90, trackGauge/2.0 );
+ Translate( &pp1, p1, angle-90, trackGauge/2.0 );
+ DrawLine( d, pp0, pp1, width, color );
+
+ if ( (d->options&DC_PRINT) && roadbedWidth > trackGauge && DrawTwoRails(d,1) ) {
+ wDrawWidth rbw = (wDrawWidth)floor(roadbedLineWidth*(d->dpi/d->scale)+0.5);
+ if ( options&DTS_RIGHT ) {
+ Translate( &pp0, p0, angle+90, roadbedWidth/2.0 );
+ Translate( &pp1, p1, angle+90, roadbedWidth/2.0 );
+ DrawLine( d, pp0, pp1, rbw, color );
+ }
+ if ( options&DTS_LEFT ) {
+ Translate( &pp0, p0, angle-90, roadbedWidth/2.0 );
+ Translate( &pp1, p1, angle-90, roadbedWidth/2.0 );
+ DrawLine( d, pp0, pp1, rbw, color );
+ }
+ }
+ }
+
+ if (bridge) {
+ wDrawWidth width2 = (wDrawWidth)round((2.0 * d->dpi)/BASE_DPI);
+ if (d->options&DC_PRINT) {
+ width2 = (wDrawWidth)round(d->dpi / BASE_DPI);
+ }
+
+ Translate( &pp0, p0, angle-90, trackGauge*1.5 );
+ Translate( &pp1, p1, angle-90, trackGauge*1.5 );
+ DrawLine( d, pp0, pp1, width2, color );
+
+ Translate( &pp0, p0, angle+90, trackGauge*1.5 );
+ Translate( &pp1, p1, angle+90, trackGauge*1.5 );
+ DrawLine( d, pp0, pp1, width2, color);
+ }
+}
+
+
static void DeleteStraight( track_p t )
{
}
static BOOL_T WriteStraight( track_p t, FILE * f )
{
+ int bits;
long options;
- struct extraDataStraight_t *xx = GET_EXTRA_DATA(t, T_STRAIGHT, extraDataStraight_t);
+ struct extraDataStraight_t *xx = GET_EXTRA_DATA(t, T_STRAIGHT,
+ extraDataStraight_t);
BOOL_T rc = TRUE;
options = GetTrkWidth(t) & 0x0F;
if ( ( GetTrkBits(t) & TB_HIDEDESC ) == 0 )
// 0x80 means Show Description
+ {
options |= 0x80;
+ }
+ bits = GetTrkVisible(t)|(GetTrkNoTies(t)?1<<2:0)|(GetTrkBridge(t)?1<<3:0)|
+ (GetTrkRoadbed(t)?1<<4:0);
rc &= fprintf(f, "STRAIGHT %d %d %ld 0 0 %s %d %0.6f %0.6f\n",
- GetTrkIndex(t), GetTrkLayer(t), options,
- GetTrkScaleName(t), GetTrkVisible(t)|(GetTrkNoTies(t)?1<<2:0)|(GetTrkBridge(t)?1<<3:0), xx->descriptionOff.x, xx->descriptionOff.y )>0;
+ GetTrkIndex(t), GetTrkLayer(t), options,
+ GetTrkScaleName(t), bits, xx->descriptionOff.x, xx->descriptionOff.y )>0;
rc &= WriteEndPt( f, t, 0 );
rc &= WriteEndPt( f, t, 1 );
rc &= fprintf(f, "\t%s\n", END_SEGS)>0;
@@ -376,14 +565,18 @@ static BOOL_T ReadStraight( char * line )
char * cp = NULL;
coOrd descriptionOff = { 0.0, 0.0 };
- if ( !GetArgs( line+8, paramVersion<3?"dXZsdc":"dLl00sdc", &index, &layer, &options, scale, &visible, &cp ) )
+ if ( !GetArgs( line+8, paramVersion<3?"dXZsdc":"dLl00sdc", &index, &layer,
+ &options, scale, &visible, &cp ) ) {
return FALSE;
+ }
if (cp) {
- if (!GetArgs(cp,"p",&descriptionOff))
+ if (!GetArgs(cp,"p",&descriptionOff)) {
return FALSE;
+ }
}
- if ( !ReadSegs() )
+ if ( !ReadSegs() ) {
return FALSE;
+ }
trk = NewTrack( index, T_STRAIGHT, 0, sizeof *xx );
xx = GET_EXTRA_DATA(trk, T_STRAIGHT, extraDataStraight_t);
xx->descriptionOff = descriptionOff;
@@ -392,17 +585,20 @@ static BOOL_T ReadStraight( char * line )
SetTrkVisible(trk, visible!=0);
SetTrkNoTies(trk, FALSE);
SetTrkBridge(trk, FALSE);
+ SetTrkRoadbed(trk, FALSE);
} else {
SetTrkVisible(trk, visible&2);
SetTrkNoTies(trk, visible&4);
SetTrkBridge(trk, visible&8);
+ SetTrkRoadbed(trk, visible&16);
}
SetTrkLayer(trk, layer);
SetTrkWidth( trk, (int)(options & 0x0F) );
SetEndPts( trk, 2 );
ComputeBoundingBox( trk );
- if ( paramVersion < VERSION_DESCRIPTION2 || ( ( options & 0x80 ) == 0 ) )
+ if ( paramVersion < VERSION_DESCRIPTION2 || ( ( options & 0x80 ) == 0 ) ) {
SetTrkBits(trk,TB_HIDEDESC);
+ }
return TRUE;
}
@@ -431,23 +627,27 @@ static int AuditStraight( track_p trk, char * msg )
}
-static ANGLE_T GetAngleStraight( track_p trk, coOrd pos, EPINX_T *ep0, EPINX_T *ep1 )
+static ANGLE_T GetAngleStraight( track_p trk, coOrd pos, EPINX_T *ep0,
+ EPINX_T *ep1 )
{
- if ( ep0 ) *ep0 = 0;
- if ( ep1 ) *ep1 = 1;
+ if ( ep0 ) { *ep0 = 0; }
+ if ( ep1 ) { *ep1 = 1; }
return GetTrkEndAngle( trk, 0 );
}
-static BOOL_T SplitStraight( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover, EPINX_T * ep0, EPINX_T * ep1 )
+static BOOL_T SplitStraight( track_p trk, coOrd pos, EPINX_T ep,
+ track_p *leftover, EPINX_T * ep0, EPINX_T * ep1 )
{
track_p trk1;
- trk1 = NewStraightTrack( 1-ep?GetTrkEndPos(trk,ep):pos, 1-ep?pos:GetTrkEndPos(trk,ep) );
+ trk1 = NewStraightTrack( 1-ep?GetTrkEndPos(trk,ep):pos,
+ 1-ep?pos:GetTrkEndPos(trk,ep) );
DIST_T height;
int opt;
GetTrkEndElev(trk,ep,&opt,&height);
- UpdateTrkEndElev( trk1, ep, opt, height, (opt==ELEV_STATION)?GetTrkEndElevStation(trk,ep):NULL );
+ UpdateTrkEndElev( trk1, ep, opt, height,
+ (opt==ELEV_STATION)?GetTrkEndElevStation(trk,ep):NULL );
AdjustStraightEndPt( trk, ep, pos );
UpdateTrkEndElev( trk, ep, ELEV_NONE, 0, NULL);
*leftover = trk1;
@@ -478,7 +678,8 @@ static BOOL_T TraverseStraight( traverseTrack_p trvTrk, DIST_T * distR )
}
dist = FindDistance( trvTrk->pos, pos[ep] );
if ( dist > *distR ) {
- Translate( &trvTrk->pos, pos[ep], NormalizeAngle(trvTrk->angle+180.0), dist-*distR );
+ Translate( &trvTrk->pos, pos[ep], NormalizeAngle(trvTrk->angle+180.0),
+ dist-*distR );
*distR = 0;
} else {
trvTrk->pos = pos[ep];
@@ -500,7 +701,8 @@ static BOOL_T EnumerateStraight( track_p trk )
return FALSE;
}
-static BOOL_T TrimStraight( track_p trk, EPINX_T ep, DIST_T dist, coOrd endpos, ANGLE_T angle, DIST_T radius, coOrd center )
+static BOOL_T TrimStraight( track_p trk, EPINX_T ep, DIST_T dist, coOrd endpos,
+ ANGLE_T angle, DIST_T radius, coOrd center )
{
DIST_T d;
ANGLE_T a;
@@ -510,10 +712,10 @@ static BOOL_T TrimStraight( track_p trk, EPINX_T ep, DIST_T dist, coOrd endpos,
p1 = GetTrkEndPos( trk, 1-ep );
d = FindDistance( pos, p1 );
if (dist < FindDistance( GetTrkEndPos(trk,0), GetTrkEndPos(trk,1) ) &&
- d > minLength ) {
- UndrawNewTrack( trk );
- AdjustStraightEndPt( trk, ep, pos );
- DrawNewTrack( trk );
+ d > minLength ) {
+ UndrawNewTrack( trk );
+ AdjustStraightEndPt( trk, ep, pos );
+ DrawNewTrack( trk );
} else {
UndrawNewTrack( trk );
DeleteTrack( trk, TRUE );
@@ -523,10 +725,10 @@ static BOOL_T TrimStraight( track_p trk, EPINX_T ep, DIST_T dist, coOrd endpos,
BOOL_T ExtendStraightToJoin(
- track_p trk0,
- EPINX_T ep0,
- track_p trk1,
- EPINX_T ep1 )
+ track_p trk0,
+ EPINX_T ep0,
+ track_p trk1,
+ EPINX_T ep1 )
{
coOrd off;
ANGLE_T a;
@@ -543,20 +745,23 @@ BOOL_T ExtendStraightToJoin(
Rotate( &off, pos0, -a0 );
off.x -= pos0.x;
- if ( a >= connectAngle ||
- !IsClose( fabs(off.x) ) ||
- off.y-pos0.y <= connectDistance ) {
+ if ( a >= connectAngle ||
+ !IsClose( fabs(off.x) ) ||
+ off.y-pos0.y <= connectDistance ) {
return FALSE;
}
if ( GetTrkType(trk0) != T_STRAIGHT &&
- GetTrkType(trk1) != T_STRAIGHT ) {
+ GetTrkType(trk1) != T_STRAIGHT ) {
aa = FindAngle( pos0, pos1 );
aa = NormalizeAngle( aa-a0+connectAngle/2.0);
- if (aa > connectAngle)
+ if (aa > connectAngle) {
return FALSE;
+ }
}
- UndoStart( _("Extending Straight Track"), "ExtendStraightToJoin( T%d[%d] T%d[%d] )", GetTrkIndex(trk0), ep0, GetTrkIndex(trk1), ep1 );
+ UndoStart( _("Extending Straight Track"),
+ "ExtendStraightToJoin( T%d[%d] T%d[%d] )", GetTrkIndex(trk0), ep0,
+ GetTrkIndex(trk1), ep1 );
UndoModify( trk0 );
UndoModify( trk1 );
trk2 = trk0x = trk1x = NULL;
@@ -622,36 +827,39 @@ static STATUS_T ModifyStraight( track_p trk, wAction_t action, coOrd pos )
switch ( action ) {
case C_DOWN:
ep = PickUnconnectedEndPoint( pos, trk );
- if (ep == -1)
+ if (ep == -1) {
return C_ERROR;
+ }
UndrawNewTrack( trk );
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).type = SEG_STRTRK;
- tempSegs(0).width = 0;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).u.l.pos[0] = GetTrkEndPos( trk, 1-ep );
- tempSegs_da.cnt = 1;
InfoMessage( _("Drag to change track length") );
case C_MOVE:
d = FindDistance( tempSegs(0).u.l.pos[0], pos );
valid = TRUE;
if ( d <= minLength ) {
- if (action == C_MOVE)
+ if (action == C_MOVE) {
ErrorMessage( MSG_TRK_TOO_SHORT, _("Straight "), PutDim(fabs(minLength-d)) );
+ }
valid = FALSE;
return C_CONTINUE;
}
- Translate( &tempSegs(0).u.l.pos[1], tempSegs(0).u.l.pos[0], GetTrkEndAngle( trk, ep ), d );
- tempSegs_da.cnt = 1;
+ Translate( &tempSegs(0).u.l.pos[1], tempSegs(0).u.l.pos[0], GetTrkEndAngle( trk,
+ ep ), d );
if (action == C_MOVE)
InfoMessage( _("Straight: Length=%s Angle=%0.3f"),
- FormatDistance( d ), PutAngle( GetTrkEndAngle( trk, ep ) ) );
+ FormatDistance( d ), PutAngle( GetTrkEndAngle( trk, ep ) ) );
return C_CONTINUE;
case C_UP:
- if (valid)
+ if (valid) {
AdjustStraightEndPt( trk, ep, tempSegs(0).u.l.pos[1] );
- tempSegs_da.cnt = 0;
- DrawNewTrack( trk );
+ }
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ DrawNewTrack( trk );
return C_TERMINATE;
default:
@@ -667,19 +875,22 @@ static DIST_T GetLengthStraight( track_p trk )
}
-static BOOL_T GetParamsStraight( int inx, track_p trk, coOrd pos, trackParams_t * params )
+static BOOL_T GetParamsStraight( int inx, track_p trk, coOrd pos,
+ trackParams_t * params )
{
params->type = curveTypeStraight;
- if ( inx == PARAMS_NODES ) return FALSE;
- if ((inx == PARAMS_CORNU) || (inx == PARAMS_1ST_JOIN) || (inx == PARAMS_2ND_JOIN) ){
+ if ( inx == PARAMS_NODES ) { return FALSE; }
+ if ((inx == PARAMS_CORNU) || (inx == PARAMS_1ST_JOIN)
+ || (inx == PARAMS_2ND_JOIN) ) {
params->ep = PickEndPoint( pos, trk);
params->arcP = zero;
params->arcR = 0.0;
} else {
params->ep = PickUnconnectedEndPointSilent( pos, trk );
}
- if (params->ep == -1)
- return FALSE;
+ if (params->ep == -1) {
+ return FALSE;
+ }
params->lineOrig = GetTrkEndPos(trk,1-params->ep);
params->lineEnd = GetTrkEndPos(trk,params->ep);
params->len = FindDistance( params->lineOrig, params->lineEnd );
@@ -690,12 +901,13 @@ static BOOL_T GetParamsStraight( int inx, track_p trk, coOrd pos, trackParams_t
}
-static BOOL_T MoveEndPtStraight( track_p *trk, EPINX_T *ep, coOrd pos, DIST_T d0 )
+static BOOL_T MoveEndPtStraight( track_p *trk, EPINX_T *ep, coOrd pos,
+ DIST_T d0 )
{
if ( NormalizeAngle( FindAngle( GetTrkEndPos(*trk,1-*ep), pos ) -
- GetTrkEndAngle(*trk,*ep) + 0.5 ) > 1.0 ) {
- ErrorMessage( MSG_MOVED_BEYOND_END_TRK );
- return FALSE;
+ GetTrkEndAngle(*trk,*ep) + 0.5 ) > 1.0 ) {
+ ErrorMessage( MSG_MOVED_BEYOND_END_TRK );
+ return FALSE;
}
Translate( &pos, pos, GetTrkEndAngle(*trk,*ep)+180, d0 );
AdjustStraightEndPt( *trk, *ep, pos );
@@ -722,39 +934,41 @@ static BOOL_T QueryStraight( track_p trk, int query )
static void FlipStraight(
- track_p trk,
- coOrd orig,
- ANGLE_T angle )
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle )
{
ComputeBoundingBox( trk );
}
static BOOL_T MakeParallelStraight(
- track_p trk,
- coOrd pos,
- DIST_T sep,
- DIST_T factor,
- track_p * newTrkR,
- coOrd * p0R,
- coOrd * p1R,
- BOOL_T track)
+ track_p trk,
+ coOrd pos,
+ DIST_T sep,
+ DIST_T factor,
+ track_p * newTrkR,
+ coOrd * p0R,
+ coOrd * p1R,
+ BOOL_T track)
{
ANGLE_T angle = GetTrkEndAngle(trk,1);
coOrd p0, p1;
- if ( NormalizeAngle( FindAngle( GetTrkEndPos(trk,0), pos ) - GetTrkEndAngle(trk,1) ) < 180.0 )
+ if ( NormalizeAngle( FindAngle( GetTrkEndPos(trk,0), pos ) - GetTrkEndAngle(trk,
+ 1) ) < 180.0 ) {
angle += 90;
- else
+ } else {
angle -= 90;
+ }
Translate( &p0, GetTrkEndPos(trk,0), angle, sep );
Translate( &p1, GetTrkEndPos(trk,1), angle, sep );
if ( newTrkR ) {
- if (track)
+ if (track) {
*newTrkR = NewStraightTrack( p0, p1 );
- else {
+ } else {
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).color = wDrawColorBlack;
- tempSegs(0).width = 0;
- tempSegs_da.cnt = 1;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).type = SEG_STRLIN;
tempSegs(0).u.l.pos[0] = p0;
tempSegs(0).u.l.pos[1] = p1;
@@ -763,15 +977,15 @@ static BOOL_T MakeParallelStraight(
}
} else {
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).color = wDrawColorBlack;
- tempSegs(0).width = 0;
- tempSegs_da.cnt = 1;
+ tempSegs(0).lineWidth = 0;
tempSegs(0).type = track?SEG_STRTRK:SEG_STRLIN;
tempSegs(0).u.l.pos[0] = p0;
tempSegs(0).u.l.pos[1] = p1;
}
- if ( p0R ) *p0R = p0;
- if ( p1R ) *p1R = p1;
+ if ( p0R ) { *p0R = p0; }
+ if ( p1R ) { *p1R = p1; }
return TRUE;
}
@@ -783,46 +997,47 @@ static wBool_t CompareStraight( track_cp trk1, track_cp trk2 )
static trackCmd_t straightCmds = {
- "STRAIGHT",
- DrawStraight,
- DistanceStraight,
- DescribeStraight,
- DeleteStraight,
- WriteStraight,
- ReadStraight,
- MoveStraight,
- RotateStraight,
- RescaleStraight,
- AuditStraight,
- GetAngleStraight,
- SplitStraight,
- TraverseStraight,
- EnumerateStraight,
- NULL, /* redraw */
- TrimStraight,
- ExtendStraightToJoin,
- ModifyStraight,
- GetLengthStraight,
- GetParamsStraight,
- MoveEndPtStraight,
- QueryStraight,
- NULL, /* ungroup */
- FlipStraight,
- NULL,
- NULL,
- NULL,
- MakeParallelStraight,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- CompareStraight };
+ "STRAIGHT",
+ DrawStraight,
+ DistanceStraight,
+ DescribeStraight,
+ DeleteStraight,
+ WriteStraight,
+ ReadStraight,
+ MoveStraight,
+ RotateStraight,
+ RescaleStraight,
+ AuditStraight,
+ GetAngleStraight,
+ SplitStraight,
+ TraverseStraight,
+ EnumerateStraight,
+ NULL, /* redraw */
+ TrimStraight,
+ ExtendStraightToJoin,
+ ModifyStraight,
+ GetLengthStraight,
+ GetParamsStraight,
+ MoveEndPtStraight,
+ QueryStraight,
+ NULL, /* ungroup */
+ FlipStraight,
+ NULL,
+ NULL,
+ NULL,
+ MakeParallelStraight,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ CompareStraight
+};
EXPORT void StraightSegProc(
- segProc_e cmd,
- trkSeg_p segPtr,
- segProcData_p data )
+ segProc_e cmd,
+ trkSeg_p segPtr,
+ segProcData_p data )
{
ANGLE_T a0, a1, a2;
DIST_T d, d0, d1;
@@ -834,7 +1049,8 @@ EXPORT void StraightSegProc(
a1 = FindAngle( segPtr->u.l.pos[0], segPtr->u.l.pos[1] );
a2 = NormalizeAngle( a1-data->traverse1.angle );
data->traverse1.backwards = ((a2 < 270) && (a2 > 90));
- data->traverse1.dist = FindDistance( segPtr->u.l.pos[data->traverse1.backwards?1:0], data->traverse1.pos );
+ data->traverse1.dist = FindDistance( segPtr->u.l.pos[data->traverse1.backwards
+ ?1:0], data->traverse1.pos );
data->traverse1.reverse_seg = FALSE;
data->traverse1.negative = FALSE;
data->traverse1.segs_backwards = FALSE;
@@ -844,13 +1060,17 @@ EXPORT void StraightSegProc(
case SEGPROC_TRAVERSE2:
d = FindDistance( segPtr->u.l.pos[0], segPtr->u.l.pos[1] );
if ( d >= data->traverse2.dist ) {
- a1 = FindAngle( segPtr->u.l.pos[data->traverse2.segDir], segPtr->u.l.pos[1-data->traverse2.segDir] );
- Translate( &data->traverse2.pos, segPtr->u.l.pos[data->traverse2.segDir], a1, data->traverse2.dist );
+ a1 = FindAngle( segPtr->u.l.pos[data->traverse2.segDir],
+ segPtr->u.l.pos[1-data->traverse2.segDir] );
+ Translate( &data->traverse2.pos, segPtr->u.l.pos[data->traverse2.segDir], a1,
+ data->traverse2.dist );
data->traverse2.dist = 0;
data->traverse2.angle = a1;
} else {
- a1 = FindAngle( segPtr->u.l.pos[data->traverse2.segDir], segPtr->u.l.pos[1-data->traverse2.segDir] );
- Translate( &data->traverse2.pos, segPtr->u.l.pos[data->traverse2.segDir], a1, d );
+ a1 = FindAngle( segPtr->u.l.pos[data->traverse2.segDir],
+ segPtr->u.l.pos[1-data->traverse2.segDir] );
+ Translate( &data->traverse2.pos, segPtr->u.l.pos[data->traverse2.segDir], a1,
+ d );
data->traverse2.dist -= d;
data->traverse2.angle = a1;
}
@@ -861,17 +1081,21 @@ EXPORT void StraightSegProc(
a0 = FindAngle( segPtr->u.l.pos[0], segPtr->u.l.pos[1] );
d1 = d0*data->drawRoadbedSide.first/32.0;
Translate( &p0, segPtr->u.l.pos[0], a0, d1 );
- Translate( &p0, p0, a0+data->drawRoadbedSide.side, data->drawRoadbedSide.roadbedWidth/2.0 );
+ Translate( &p0, p0, a0+data->drawRoadbedSide.side,
+ data->drawRoadbedSide.roadbedWidth/2.0 );
d1 = d0*data->drawRoadbedSide.last/32.0;
Translate( &p1, segPtr->u.l.pos[0], a0, d1 );
- Translate( &p1, p1, a0+data->drawRoadbedSide.side, data->drawRoadbedSide.roadbedWidth/2.0 );
+ Translate( &p1, p1, a0+data->drawRoadbedSide.side,
+ data->drawRoadbedSide.roadbedWidth/2.0 );
REORIGIN1( p0, data->drawRoadbedSide.angle, data->drawRoadbedSide.orig );
REORIGIN1( p1, data->drawRoadbedSide.angle, data->drawRoadbedSide.orig );
- DrawLine( data->drawRoadbedSide.d, p0, p1, data->drawRoadbedSide.rbw, data->drawRoadbedSide.color );
+ DrawLine( data->drawRoadbedSide.d, p0, p1, data->drawRoadbedSide.rbw,
+ data->drawRoadbedSide.color );
break;
case SEGPROC_DISTANCE:
- data->distance.dd = LineDistance( &data->distance.pos1, segPtr->u.l.pos[0], segPtr->u.l.pos[1] );
+ data->distance.dd = LineDistance( &data->distance.pos1, segPtr->u.l.pos[0],
+ segPtr->u.l.pos[1] );
break;
case SEGPROC_FLIP:
@@ -899,7 +1123,8 @@ EXPORT void StraightSegProc(
data->split.length[0] = d;
data->split.length[1] = 0.0;
}
- Translate( &p0, segPtr->u.l.pos[0], FindAngle( segPtr->u.l.pos[0], segPtr->u.l.pos[1] ), data->split.length[0] );
+ Translate( &p0, segPtr->u.l.pos[0], FindAngle( segPtr->u.l.pos[0],
+ segPtr->u.l.pos[1] ), data->split.length[0] );
data->split.newSeg[0] = *segPtr;
data->split.newSeg[1] = *segPtr;
data->split.newSeg[0].u.l.pos[1] = data->split.newSeg[1].u.l.pos[0] = p0;
@@ -929,7 +1154,7 @@ track_p NewStraightTrack( coOrd p0, coOrd p1 )
track_p t;
ANGLE_T a;
t = NewTrack( 0, T_STRAIGHT, 2, sizeof (struct extraDataStraight_t) );
- SetTrkScale( t, GetLayoutCurScale() );
+ // *new-layer* SetTrkScale( t, GetLayoutCurScale() );
a = FindAngle( p1, p0 );
SetTrkEndPoint( t, 0, p0, a );
SetTrkEndPoint( t, 1, p1, NormalizeAngle( a+180.0 ) );
diff --git a/app/bin/turnout.c b/app/bin/turnout.c
new file mode 100644
index 0000000..57c398b
--- /dev/null
+++ b/app/bin/turnout.c
@@ -0,0 +1,2157 @@
+/** \file turnout.c
+ * Turnout drawing
+ */
+
+/* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "common.h"
+#include "common-ui.h"
+#include "compound.h"
+#include "custom.h"
+#include "draw.h"
+#include "track.h"
+
+/* Draw turnout data */
+
+/**
+ * The types of turnouts that get enhanced drawing methods
+ */
+enum dtoType {
+ DTO_INVALID,
+ DTO_NORMAL,
+ DTO_THREE,
+ DTO_WYE,
+
+ DTO_CURVED,
+
+ DTO_XING,
+ DTO_XNG9,
+ DTO_SSLIP,
+ DTO_DSLIP,
+
+ DTO_LCROSS,
+ DTO_RCROSS,
+ DTO_DCROSS
+};
+
+// Define to plot control points (DTO_NORMAL, DTO_CURVED, DTO_XING, DTO_LCROSS)
+// #define DTO_DEBUG DTO_XING
+
+#define DTO_DIM 4 // Maximum number of paths
+#define DTO_SEGS 24 // Maximum number of control points
+
+static struct DrawToData_t {
+ TRKINX_T index;
+ enum dtoType toType;
+ track_p trk;
+ tieData_t td;
+ int bridge;
+ int roadbed;
+ int endCnt;
+ int pathCnt;
+ int routeCnt;
+ int strCnt;
+ int crvCnt;
+ int rgtCnt;
+ int lftCnt;
+ int strPath;
+ int str2Path;
+ int crvPath;
+ int crv2Path;
+ int origCnt;
+ int origins[DTO_DIM];
+ coOrd midPt;
+ struct extraDataCompound_t* xx;
+} dtod;
+
+struct DrawTo_t {
+ int n;
+ trkSeg_p trkSeg[DTO_SEGS];
+ coOrd base[DTO_SEGS];
+ coOrd baseLast;
+ DIST_T dy[DTO_SEGS];
+ ANGLE_T angle;
+ ANGLE_T crvAngle;
+ coOrd pts[DTO_SEGS];
+ coOrd ptsLast;
+ char type;
+};
+
+static struct DrawTo_t dto[DTO_DIM];
+
+
+
+/****************************************
+ *
+ * Draw Turnout Roadbed
+ *
+ */
+
+int roadbedOnScreen = 0;
+
+
+void DrawTurnoutRoadbedSide(drawCmd_p d, wDrawColor color, coOrd orig,
+ ANGLE_T angle, trkSeg_p sp, ANGLE_T side, int first, int last)
+{
+ segProcData_t data;
+ if (last <= first) {
+ return;
+ }
+ data.drawRoadbedSide.first = first;
+ data.drawRoadbedSide.last = last;
+ data.drawRoadbedSide.side = side;
+ data.drawRoadbedSide.roadbedWidth = roadbedWidth;
+ data.drawRoadbedSide.rbw = (wDrawWidth)floor(roadbedLineWidth *
+ (d->dpi / d->scale) + 0.5);
+ data.drawRoadbedSide.orig = orig;
+ data.drawRoadbedSide.angle = angle;
+ data.drawRoadbedSide.color = color;
+ data.drawRoadbedSide.d = d;
+ SegProc(SEGPROC_DRAWROADBEDSIDE, sp, &data);
+}
+
+
+static void ComputeAndDrawTurnoutRoadbedSide(
+ drawCmd_p d,
+ wDrawColor color,
+ coOrd orig,
+ ANGLE_T angle,
+ trkSeg_p segPtr,
+ int segCnt,
+ int segInx,
+ ANGLE_T side)
+{
+ unsigned long res, res1;
+ int b0, b1;
+ res = ComputeTurnoutRoadbedSide(segPtr, segCnt, segInx, side, roadbedWidth);
+ if (res == 0L) {
+ } else if (res == 0xFFFFFFFF) {
+ DrawTurnoutRoadbedSide(d, color, orig, angle, &segPtr[segInx], side, 0, 32);
+ } else {
+ for (b0 = 0, res1 = 0x00000001; res1 && (res1 & res); b0++, res1 <<= 1);
+ for (b1 = 32, res1 = 0x80000000; res1 && (res1 & res); b1--, res1 >>= 1);
+ DrawTurnoutRoadbedSide(d, color, orig, angle, &segPtr[segInx], side, 0, b0);
+ DrawTurnoutRoadbedSide(d, color, orig, angle, &segPtr[segInx], side, b1, 32);
+ }
+}
+
+
+static void DrawTurnoutRoadbed(
+ drawCmd_p d,
+ wDrawColor color,
+ coOrd orig,
+ ANGLE_T angle,
+ trkSeg_p segPtr,
+ int segCnt)
+{
+ int inx, trkCnt = 0, segInx = 0;
+ for (inx = 0; inx < segCnt; inx++) {
+ if (IsSegTrack(&segPtr[inx])) {
+ segInx = inx;
+ trkCnt++;
+ if (trkCnt > 1) {
+ break;
+ }
+ }
+ }
+ if (trkCnt == 0) {
+ return;
+ }
+ if (trkCnt == 1) {
+ DrawTurnoutRoadbedSide(d, color, orig, angle, &segPtr[segInx], +90, 0, 32);
+ DrawTurnoutRoadbedSide(d, color, orig, angle, &segPtr[segInx], -90, 0, 32);
+ } else {
+ for (inx = 0; inx < segCnt; inx++) {
+ if (IsSegTrack(&segPtr[inx])) {
+ ComputeAndDrawTurnoutRoadbedSide(d, color, orig, angle, segPtr, segCnt, inx,
+ +90);
+ ComputeAndDrawTurnoutRoadbedSide(d, color, orig, angle, segPtr, segCnt, inx,
+ -90);
+ }
+ }
+ }
+}
+
+
+/****************************************
+ *
+ * TURNOUT DRAWING
+ *
+ */
+
+/**
+* Get the paths from the turnout definition. Puts the results into static dto structure.
+* Curved segments are broken up into short sections of the lesser of 5 degrees or 5 * tie spacing.
+*
+* \param trk track_p pointer to a track
+* \param xx pointer to the extraDataCompound struct
+*
+* \returns the number of paths
+*/
+int GetTurnoutPaths(track_p trk, struct extraDataCompound_t* xx)
+{
+ wIndex_t segInx;
+ wIndex_t segEP;
+
+ int i;
+ ANGLE_T a0, a1, aa0, aa1;
+ DIST_T r, len;
+ coOrd p0, p1;
+
+ PATHPTR_T pp;
+
+ dtod.trk = trk;
+ dtod.index = GetTrkIndex( trk );
+ dtod.xx = xx;
+
+ dtod.td = GetTrkTieData( trk );
+
+ int pathCnt = 0, routeCnt = 0;
+
+ for (i = 0; i < DTO_DIM; i++) {
+ dto[i].n = 0;
+ }
+
+ // Validate that the first segment starts at (0, 0)
+ // and if STR p1.y == 0, if CRV angle == 0 or angle == 180
+ GetSegInxEP(1, &segInx, &segEP);
+ trkSeg_p segPtr = &xx->segs[segInx];
+ switch (segPtr->type) {
+ case SEG_STRTRK:
+ p0 = segPtr->u.l.pos[0];
+ p1 = segPtr->u.l.pos[1];
+ if ((FindDistance(p0, zero) > EPSILON) || (fabs(p1.y) > EPSILON)) {
+ return -1;
+ }
+ break;
+ case SEG_CRVTRK:
+ r = fabs(segPtr->u.c.radius);
+ a0 = segPtr->u.c.a0;
+ a1 = segPtr->u.c.a1;
+
+ if (segPtr->u.c.radius > 0) {
+ aa0 = a0;
+ } else {
+ aa0 = a0 + a1;
+ }
+ PointOnCircle(&p0, segPtr->u.c.center, r, aa0);
+ if ((FindDistance(p0, zero) > EPSILON)
+ || ((fabs(aa0 - 180) > EPSILON) && (fabs(aa0) > EPSILON))) {
+ return -1;
+ }
+ break;
+ }
+
+ pp = GetPaths(trk);
+ while (pp[0]) {
+ pp += strlen((char*)pp) + 1;
+
+ ANGLE_T angle = 0;
+ while (pp[0]) {
+ if (pathCnt < DTO_DIM) {
+ dto[pathCnt].type = 'S';
+ while (pp[0]) {
+ GetSegInxEP(pp[0], &segInx, &segEP);
+ // trkSeg_p
+ segPtr = &xx->segs[segInx];
+ switch (segPtr->type) {
+ case SEG_STRTRK:
+ p0 = segPtr->u.l.pos[0];
+ p1 = segPtr->u.l.pos[1];
+
+ wIndex_t n = dto[pathCnt].n;
+ dto[pathCnt].trkSeg[n] = segPtr;
+ dto[pathCnt].base[n] = p0;
+ n++;
+ dto[pathCnt].trkSeg[n] = segPtr;
+ dto[pathCnt].base[n] = p1;
+ // n++;
+ dto[pathCnt].n = n;
+
+ if (n >= DTO_SEGS - 1) { return -1; }
+
+ break;
+ case SEG_CRVTRK:
+ r = fabs(segPtr->u.c.radius);
+
+ dto[pathCnt].type = segPtr->u.c.center.y < 0 ? 'R' : 'L';
+
+ a0 = segPtr->u.c.a0;
+ a1 = segPtr->u.c.a1;
+
+ angle += a1;
+
+ len = D2R(a1) * r;
+ // Every 5 degrees or 5 * tie spacing
+ int cnt = (int)floor(a1 / 5.0);
+ int cnt2 = (int)floor(len / 5 / dtod.td.spacing);
+ if (cnt2 > cnt) { cnt = cnt2; }
+ if (cnt <= 0) { cnt = 1; }
+
+ aa1 = a1 / cnt;
+ if (dto[pathCnt].type == 'R') {
+ aa0 = a0;
+ } else {
+ aa0 = a0 + a1;
+ aa1 = -aa1;
+ }
+ PointOnCircle(&p0, segPtr->u.c.center, r, aa0);
+ n = dto[pathCnt].n;
+ dto[pathCnt].trkSeg[n] = segPtr;
+ dto[pathCnt].base[n] = p0;
+ n++;
+ dto[pathCnt].n = n;
+
+ while (cnt > 0) {
+ aa0 += aa1;
+ PointOnCircle(&p0, segPtr->u.c.center, r, aa0);
+
+ // n = dto[pathCnt].n;
+ dto[pathCnt].trkSeg[n] = segPtr;
+ dto[pathCnt].base[n] = p0;
+ n++;
+
+ if (n >= DTO_SEGS - 1) { return -1; }
+
+ cnt--;
+ }
+ n--; // remove that last point count
+ dto[pathCnt].n = n;
+ }
+ pp++;
+ }
+ // Include the last point
+ dto[pathCnt].crvAngle = angle;
+ dto[pathCnt].n++;
+ }
+
+ pathCnt++;
+ if (pathCnt > DTO_DIM) { return -1; }
+ pp++;
+ }
+ routeCnt++;
+ pp++;
+ }
+ dtod.pathCnt = pathCnt;
+ dtod.routeCnt = routeCnt;
+ dtod.endCnt = GetTrkEndPtCnt( trk );
+
+ // Guard value: n < DTO_SEGS - 2
+ for (i = 0; i < pathCnt; i++) {
+ dto[i].pts[dto[i].n].x = DIST_INF;
+ }
+
+ return pathCnt;
+}
+
+/**
+* Sets the turnout type if compatible with enhanced drawing methods. The data is
+* from the path data saved in dtod and dto by GetTurnoutPaths. The turnout type is
+* stored in the dtod.toType. DTO_INVALID (0) if the enhanced methods cannot handle
+* it.
+*/
+void GetTurnoutType()
+{
+ dtod.strPath = -1;
+ dtod.str2Path = -1;
+ dtod.crvPath = -1;
+ dtod.crv2Path = -1;
+
+ dtod.toType = DTO_INVALID;
+
+ int strCnt = 0, crvCnt = 0, lftCnt = 0, rgtCnt = 0;
+// enum dtoType toType = DTO_INVALID;
+ int i, j;
+
+ // Count path origins
+ dtod.origCnt = 1;
+ dtod.origins[0] = 0;
+
+ for (i = 1; i < dtod.pathCnt; i++) {
+ int eq = 0;
+ for (j = 0; j < i; j++) {
+ if (CoOrdEqual(dto[dtod.origins[j]].base[0], dto[i].base[0])) {
+ eq++;
+ break;
+ }
+ }
+ if (eq == 0) {
+ if (dtod.origCnt < DTO_DIM) {
+ dtod.origins[dtod.origCnt] = i;
+ }
+ dtod.origCnt++;
+ }
+
+ if (dtod.origCnt >= DTO_DIM) {
+ return;
+ }
+ }
+
+ // Determine the path type
+ for (i = 0; i < dtod.pathCnt; i++) {
+ switch (dto[i].type) {
+ case 'S':
+ strCnt++;
+ if (strCnt == 1) {
+ dtod.strPath = i;
+ } else {
+ dtod.str2Path = i;
+ }
+ break;
+ case 'L':
+ lftCnt++;
+ crvCnt++;
+ if (crvCnt == 1) {
+ dtod.crvPath = i;
+ } else {
+ dtod.crv2Path = i;
+ }
+ break;
+ case 'R':
+ rgtCnt++;
+ crvCnt++;
+ if (crvCnt == 1) {
+ dtod.crvPath = i;
+ } else {
+ dtod.crv2Path = i;
+ }
+ break;
+ }
+ }
+
+ dtod.strCnt = strCnt;
+ dtod.crvCnt = crvCnt;
+ dtod.lftCnt = lftCnt;
+ dtod.rgtCnt = rgtCnt;
+
+ // Normal two- or three-way turnout, or a curved turnout
+ if (dtod.origCnt == 1) {
+ if (dtod.pathCnt == 2) {
+ if (strCnt == 1 && crvCnt == 1) {
+ dtod.toType = DTO_NORMAL;
+ } else if ((strCnt == 0) && ((lftCnt == 2) || (rgtCnt == 2))) {
+ // Assumes outer curve is [0] and inner is [1]
+ if ((dto[0].crvAngle <= 20) && (dto[1].crvAngle - dto[0].crvAngle <= 15)) {
+ dtod.toType = DTO_CURVED;
+ }
+ } else if (lftCnt == 1 && rgtCnt == 1) {
+ dtod.toType = DTO_WYE;
+ }
+ } else if ((dtod.pathCnt == 3) && (strCnt == 1)
+ && (lftCnt == 1) && (rgtCnt == 1)) {
+ dtod.toType = DTO_THREE;
+ }
+ } else
+ // Crossing, single- and double-slip
+ if ((dtod.origCnt == 2) && (dtod.endCnt == 4)
+ && strCnt == 2) {
+
+ ANGLE_T a0, a1, a2;
+ a1 = FindAngle(dto[dtod.strPath].base[0], dto[dtod.strPath].base[1]);
+ a2 = FindAngle(dto[dtod.str2Path].base[0], dto[dtod.str2Path].base[1]);
+ // Swap the ends of the strPath if large angle
+ if((a1 > 180.0) && (dto[dtod.strPath].n == 2)) {
+ coOrd tmp = dto[dtod.strPath].base[0];
+ dto[dtod.strPath].base[0] = dto[dtod.strPath].base[1];
+ dto[dtod.strPath].base[1] = tmp;
+
+ i = dto[dtod.strPath].n - 1;
+ tmp = dto[dtod.strPath].pts[0];
+ dto[dtod.strPath].pts[0] = dto[dtod.strPath].pts[i];
+ dto[dtod.strPath].pts[i] = tmp;
+
+ a1 = a1 - 180.0;
+ dto[dtod.strPath].angle = a1;
+ }
+ // Swap the ends of the str2Path if large angle
+ if((a2 > 180.0) && (dto[dtod.str2Path].n == 2)) {
+ coOrd tmp = dto[dtod.str2Path].base[0];
+ dto[dtod.str2Path].base[0] = dto[dtod.str2Path].base[1];
+ dto[dtod.str2Path].base[1] = tmp;
+
+ i = dto[dtod.str2Path].n - 1;
+ tmp = dto[dtod.str2Path].pts[0];
+ dto[dtod.str2Path].pts[0] = dto[dtod.str2Path].pts[i];
+ dto[dtod.str2Path].pts[i] = tmp;
+
+ a2 = a2 - 180.0;
+ dto[dtod.str2Path].angle = a2;
+ }
+ a0 = DifferenceBetweenAngles(a1, a2);
+ if(a0 < 0) {
+ int tmp = dtod.strPath;
+ dtod.strPath = dtod.str2Path;
+ dtod.str2Path = tmp;
+ a0 = NormalizeAngle(-a0);
+ }
+ if ((a0 > 90.0) || (a0 < 0.0)) {
+ return;
+ }
+
+ coOrd p1 = dto[dtod.strPath].base[0];
+ coOrd p2 = dto[dtod.str2Path].base[0];
+ coOrd pos = zero;
+ int intersect = FindIntersection(&pos, p1, a1, p2, a2);
+
+ if (intersect) {
+ if(strCnt == 2 && dtod.pathCnt == 2) {
+ if((a0 <= 61) && (a0 >= -61)) {
+ dtod.toType = DTO_XING;
+ } else {
+ dtod.toType = DTO_XNG9;
+ }
+ } else if(dtod.pathCnt == 3 && (lftCnt == 1 || rgtCnt == 1)) {
+ dtod.toType = DTO_SSLIP;
+ } else if(dtod.pathCnt == 4 && lftCnt == 1 && rgtCnt == 1) {
+ dtod.toType = DTO_DSLIP;
+ }
+ }
+ // No intersect, it could be a crossover
+ else if (strCnt == 2) {
+ if (dtod.pathCnt == 4 && lftCnt == 1 && rgtCnt == 1) {
+ dtod.toType = DTO_DCROSS;
+ } else if(dtod.pathCnt == 3) {
+ // Perverse test because the cross paths go Left then Right, for example
+ if(lftCnt == 1) {
+ dtod.toType = DTO_RCROSS;
+ } else if(rgtCnt == 1) {
+ dtod.toType = DTO_LCROSS;
+ } else {
+ dtod.toType = DTO_INVALID;
+ }
+ }
+ }
+ }
+}
+
+#if 0
+/**
+ * Draw Layout lines and points
+ *
+ * \param d The drawing object
+ * \param scaleInx The layout/track scale index
+ */
+static void DrawDtoLayout(
+ drawCmd_p d,
+ SCALEINX_T scaleInx
+)
+{
+#ifdef DTO_DEBUG
+ // Draw the points and lines from dto
+ double r = dtod.td->width / 2;
+ // if (r < 1) r = 1;
+
+ int i, j;
+ for (i = 0; i < DTO_DIM; i++) {
+ for (j = 0; j < dto[i].n; j++) {
+ DrawFillCircle(d, dto[i].pts[j], r, drawColorPurple);
+ if (j < dto[i].n - 1) {
+ DrawLine(d, dto[i].pts[j], dto[i].pts[j + 1], 0, drawColorPurple);
+ }
+ }
+ }
+#endif
+}
+#endif
+
+/**
+* Use the coOrds to build a polygon and draw the bridge fill. Note that the coordinates are
+* passed as pairs, and rearranged into a polygon with the 1,2,4,3 order.
+*
+* \param d The drawing object
+* \param c The color
+* \param b1 The first coordinate
+* \param b2 The second coordinate
+* \param b3 The third coordinate
+* \param b4 The fourth coordinate
+*/
+static void DrawFill(
+ drawCmd_p d,
+ wDrawColor c,
+ coOrd b1,
+ coOrd b2,
+ coOrd b3,
+ coOrd b4
+)
+{
+ coOrd p[4] = {b1, b2, b4, b3};
+ DrawPoly(d,4,p,NULL,c,0,DRAW_FILL );
+}
+
+/**
+* Draw Bridge parapets and background or Roadbed for a turnout
+*
+* \param d The drawing object
+* \param fillType 0 for bridge, 1 for roadbed
+* \param path1 The first path
+* \param path2 The second path
+*/
+static void DrawTurnoutFill(
+ drawCmd_p d,
+ int fillType,
+ int path1,
+ int path2
+)
+{
+ DIST_T trackGauge = GetTrkGauge(dtod.trk);
+ wDrawWidth width2 = (wDrawWidth)round((2.0 * d->dpi) / BASE_DPI);
+ if (d->options&DC_PRINT) {
+ width2 = (wDrawWidth)round(d->dpi / BASE_DPI);
+ }
+
+ wDrawColor color = (fillType==0?bridgeColor:roadbedColor);
+ double fillWidth = 1.5;
+ coOrd b1,b2,b3,b4,b5,b6;
+ ANGLE_T angle = dtod.xx->angle,a = 0.0;
+ int i,j,i1,i2;
+ i1 = path1;
+ i2 = path2;
+ if(dto[i1].base[dto[i1].n - 1].y < dto[i2].base[dto[i2].n - 1].y) {
+ i1 = path2;
+ i2 = path1;
+ // a = -a;
+ }
+
+ if(dtod.toType == DTO_THREE) {
+ i = dtod.strPath;
+ DIST_T dy = fabs(dto[i].dy[0]) + trackGauge * fillWidth;
+ b1 = dto[i].pts[0];
+ Translate(&b3,b1,(angle + a),dy);
+ b1 = dto[i].pts[dto[i].n - 1];
+ Translate(&b4,b1,(angle + a),dy);
+ b2 = dto[i].pts[0];
+ Translate(&b5,b2,(angle + a),-dy);
+ b2 = dto[i].pts[dto[i].n - 1];
+ Translate(&b6,b2,(angle + a),-dy);
+
+ // Draw the background
+ DrawFill(d,color,b3,b4,b5,b6);
+ }
+
+ for(i = i1; 1; i = i2,a = 180.0) {
+ DIST_T dy = fabs(dto[i].dy[0]) + trackGauge * fillWidth;
+ b1 = dto[i].pts[0];
+ Translate(&b3,b1,(angle + a),dy);
+ Translate(&b5,b1,(angle + a),-(dy * 0.75));
+ for(j = 1; j < dto[i].n; j++) {
+ dy = fabs(dto[i].dy[j]) + trackGauge * fillWidth;
+ b2 = dto[i].pts[j];
+ Translate(&b4,b2,(angle + a),dy);
+ Translate(&b6,b2,(angle + a),-(dy * 0.75));
+
+ // Draw the background
+ DrawFill(d,color,b3,b4,b5,b6);
+
+ // Draw the bridge edge
+ if(fillType==0) {
+ DrawLine( d,b3,b4,width2,drawColorBlack );
+ }
+
+ b1 = b2;
+ b3 = b4;
+ b5 = b6;
+ }
+
+ if(i == i2) {
+ break;
+ }
+ }
+
+ EPINX_T ep;
+ coOrd p;
+ track_p trk1;
+ coOrd p0,p1;
+
+ // Bridge parapet ends
+ if(fillType==0) {
+ for(ep = 0; ep < 3; ep++) {
+ trk1 = GetTrkEndTrk(dtod.trk,ep);
+
+ if((trk1) && (!GetTrkBridge(trk1))) {
+
+ p = GetTrkEndPos(dtod.trk,ep);
+ a = GetTrkEndAngle(dtod.trk,ep) + 90.0;
+
+ int i = (dtod.lftCnt > 0) && (dtod.rgtCnt == 0) ? 2 : 1;
+ if(ep != i) {
+ Translate(&p0,p,a,trackGauge * 1.5);
+ Translate(&p1,p0,a - 45.0,trackGauge * 1.5);
+ DrawLine(d,p0,p1,width2,drawColorBlack);
+ }
+ if(ep != (3 - i)) {
+ Translate(&p0,p,a,-trackGauge * 1.5);
+ Translate(&p1,p0,a + 45.0,-trackGauge * 1.5);
+ DrawLine(d,p0,p1,width2,drawColorBlack);
+ }
+ }
+ }
+ }
+}
+
+/**
+* Draw Bridge parapets and background or Roadbed for a cross-over
+*
+* \param d The drawing object
+* \param fillType 0 for bridge, 1 for roadbed
+* \param path1 The first path, straight
+* \param path2 The second path, straight
+*/
+static void DrawCrossFill(
+ drawCmd_p d,
+ int fillType,
+ int path1,
+ int path2
+)
+{
+ DIST_T trackGauge = GetTrkGauge(dtod.trk);
+ wDrawWidth width2 = (wDrawWidth)round((2.0 * d->dpi)/BASE_DPI);
+ if (d->options&DC_PRINT) {
+ width2 = (wDrawWidth)round(d->dpi / BASE_DPI);
+ }
+
+ wDrawColor color = (fillType==0?bridgeColor:roadbedColor);
+ double fillWidth = 1.5;
+ coOrd b1, b2, b3, b4, b5, b6;
+ ANGLE_T angle = dtod.xx->angle, a = 0.0;
+ int i1, i2;
+ i1 = path1;
+ i2 = path2;
+ if(dto[i1].base[dto[i1].n - 1].y < dto[i2].base[dto[i2].n - 1].y) {
+ i1 = path2;
+ i2 = path1;
+ // a = -a;
+ }
+
+ DIST_T dy = fabs(dto[i1].dy[0]) + trackGauge * fillWidth;
+ b1 = dto[i1].pts[0];
+ Translate(&b3,b1,(angle + a),dy);
+ b1 = dto[i1].pts[dto[i1].n-1];
+ Translate(&b4,b1,(angle + a),dy);
+ b2 = dto[i2].pts[0];
+ Translate(&b5,b2,(angle + a),-dy);
+ b2 = dto[i2].pts[dto[i2].n-1];
+ Translate(&b6,b2,(angle + a),-dy);
+
+ // Draw the background
+ DrawFill(d, color, b3, b4, b5, b6);
+
+ // Draw the bridge edges
+ if(fillType == 0) {
+ DrawLine(d,b3,b4,width2,drawColorBlack);
+ DrawLine(d,b5,b6,width2,drawColorBlack);
+ }
+
+ EPINX_T ep;
+ coOrd p;
+ track_p trk1;
+ coOrd p0,p1;
+
+ // Bridge parapet ends
+ if(fillType==0) {
+ for(ep = 0; ep < 4; ep++) {
+ trk1 = GetTrkEndTrk(dtod.trk,ep);
+
+ if((trk1) && (!GetTrkBridge(trk1))) {
+ p = GetTrkEndPos(dtod.trk,ep);
+ a = GetTrkEndAngle(dtod.trk,ep) + 90.0;
+
+ if((ep == 1) || (ep == 2)) {
+ Translate(&p0,p,a,trackGauge * 1.5);
+ Translate(&p1,p0,a - 45.0,trackGauge * 1.5);
+ DrawLine(d,p0,p1,width2,drawColorBlack);
+ }
+ if((ep == 0) || (ep == 3)) {
+ Translate(&p0,p,a,-trackGauge * 1.5);
+ Translate(&p1,p0,a + 45.0,-trackGauge * 1.5);
+ DrawLine(d,p0,p1,width2,drawColorBlack);
+ }
+ }
+ }
+ }
+}
+
+/**
+* Draw Bridge parapets and background or Roadbed for a crossing
+*
+* \param d The drawing object
+* \param fillType 0 for bridge, 1 for roadbed
+* \param path1 The first path
+* \param path2 The second path
+*/
+static void DrawXingFill(
+ drawCmd_p d,
+ int fillType,
+ int path1,
+ int path2
+)
+{
+ DIST_T trackGauge = GetTrkGauge(dtod.trk);
+ wDrawWidth width2 = (wDrawWidth)round((2.0 * d->dpi)/BASE_DPI);
+ if (d->options&DC_PRINT) {
+ width2 = (wDrawWidth)round(d->dpi / BASE_DPI);
+ }
+
+ double fillWidth = 1.5;
+ coOrd b0, b1, b2, b3, b4, b5, b6;
+ int i, j, i1, i2;
+ i1 = dtod.strPath;
+ i2 = dtod.str2Path;
+
+ // Fill both straight sections
+ wDrawWidth width3 = (wDrawWidth)round(trackGauge * 2 * fillWidth * d->dpi /
+ d->scale);
+ wDrawColor color = (fillType==0?bridgeColor:roadbedColor);
+ b1 = dto[i1].pts[0];
+ b2 = dto[i1].pts[dto[i1].n-1];
+ DrawLine(d,b1,b2,width3,color);
+ b1 = dto[i2].pts[0];
+ b2 = dto[i2].pts[dto[i1].n-1];
+ DrawLine(d,b1,b2,width3,color);
+
+ i1 = path1;
+ i2 = path2;
+ if(dto[i1].base[dto[i1].n - 1].y < dto[i2].base[dto[i2].n - 1].y) {
+ i1 = path2;
+ i2 = path1;
+ }
+
+ // Handle curved sections for slips
+ BOOL_T hasLeft = 0, hasRgt = 0;
+ ANGLE_T angle = dtod.xx->angle, a = 0.0;
+ for(i = i1; 1; i = i2,a = 180.0) {
+ DIST_T dy = fabs(dto[i].dy[0]) + trackGauge * fillWidth;
+ b1 = dto[i].pts[0];
+ Translate(&b3,b1,(angle + a),dy);
+ Translate(&b5,b1,(angle + a),-(dy * 0.75));
+ if(dto[i].type != 'S') {
+ if(dto[i].type == 'L') {
+ hasLeft = 1;
+ } else if(dto[i].type == 'R') {
+ hasRgt = 1;
+ }
+ for(j = 1; j < dto[i].n; j++) {
+ dy = fabs(dto[i].dy[j]) + trackGauge * fillWidth;
+ b2 = dto[i].pts[j];
+ Translate(&b4,b2,(angle + a),dy);
+ Translate(&b6,b2,(angle + a),-(dy * 0.75));
+
+ // Draw the background
+ DrawFill(d,color,b3,b4,b5,b6);
+
+ // Draw the bridge edge
+ if(fillType==0) {
+ DrawLine( d,b3,b4,width2,drawColorBlack );
+ }
+ b1 = b2;
+ b3 = b4;
+ b5 = b6;
+ }
+ }
+ if(i == i2) {
+ break;
+ }
+ }
+
+ if(dtod.strPath >= 0 && dtod.str2Path >= 0) {
+ i1 = dtod.strPath;
+ i2 = dtod.str2Path;
+ if(!hasRgt&&fillType==0) {
+ DIST_T dy = trackGauge * 1.5;
+ ANGLE_T a1, a2;
+ b1 = dto[i1].pts[0];
+ a1 = dto[i1].angle + 90;
+ Translate(&b3,b1,a1,dy);
+
+ b2 = dto[i2].pts[dto[i2].n - 1];
+ a2 = dto[i2].angle + 90;
+ Translate(&b4,b2,a2,dy);
+
+ FindIntersection(&b0, b3, a1-90.0, b4, a2-90.0);
+
+ // Draw the bridge edge
+ DrawLine(d,b3,b0,width2,drawColorBlack);
+ DrawLine(d,b0,b4,width2,drawColorBlack);
+ }
+
+ if(!hasLeft&&fillType==0) {
+ DIST_T dy = trackGauge * 1.5;
+ ANGLE_T a1, a2;
+ b1 = dto[i2].pts[0];
+ a1 = dto[i2].angle - 90;
+ Translate(&b3,b1,a1,dy);
+
+ b2 = dto[i1].pts[dto[i1].n - 1];
+ a2 = dto[i1].angle - 90;
+ Translate(&b4,b2,a2,dy);
+
+ FindIntersection(&b0, b3, a1+90.0, b4, a2+90.0);
+
+ // Draw the bridge edge
+ DrawLine(d,b3,b0,width2,drawColorBlack);
+ DrawLine(d,b0,b4,width2,drawColorBlack);
+ }
+
+ if(dtod.toType == DTO_XNG9 && fillType==0) {
+ DIST_T dy = trackGauge * 1.5;
+ ANGLE_T a1, a2;
+ b1 = dto[i1].pts[dto[i1].n - 1];
+ a1 = dto[i1].angle + 90;
+ Translate(&b3,b1,a1,dy);
+
+ b2 = dto[i2].pts[dto[i2].n - 1];
+ a2 = dto[i2].angle - 90;
+ Translate(&b4,b2,a2,dy);
+
+ FindIntersection(&b0, b3, a1-90.0, b4, a2+90.0);
+
+ // Draw the bridge edge
+ DrawLine(d,b3,b0,width2,drawColorBlack);
+ DrawLine(d,b0,b4,width2,drawColorBlack);
+
+ b1 = dto[i1].pts[0];
+ a1 = dto[i1].angle - 90;
+ Translate(&b3,b1,a1,dy);
+
+ b2 = dto[i2].pts[0];
+ a2 = dto[i2].angle + 90;
+ Translate(&b4,b2,a2,dy);
+
+ FindIntersection(&b0, b3, a1+90.0, b4, a2-90.0);
+
+ // Draw the bridge edge
+ DrawLine(d,b3,b0,width2,drawColorBlack);
+ DrawLine(d,b0,b4,width2,drawColorBlack);
+ }
+ }
+
+ // Bridge wings
+ EPINX_T ep;
+ coOrd p;
+ track_p trk1;
+ coOrd p0,p1;
+
+ if(fillType==0) {
+ for(ep = 0; ep < 4; ep++) {
+ trk1 = GetTrkEndTrk(dtod.trk,ep);
+
+ if((trk1) && (!GetTrkBridge(trk1))) {
+ p = GetTrkEndPos(dtod.trk,ep);
+ a = GetTrkEndAngle(dtod.trk,ep) + 90.0;
+
+ if((dtod.toType == DTO_XNG9) || (ep == 2) || (ep == 3)) {
+ Translate(&p0,p,a,trackGauge * 1.5);
+ Translate(&p1,p0,a - 45.0,trackGauge * 1.5);
+ DrawLine(d,p0,p1,width2,drawColorBlack);
+ }
+ if((dtod.toType == DTO_XNG9) || (ep == 0) || (ep == 1)) {
+ Translate(&p0,p,a,-trackGauge * 1.5);
+ Translate(&p1,p0,a + 45.0,-trackGauge * 1.5);
+ DrawLine(d,p0,p1,width2,drawColorBlack);
+ }
+ }
+ }
+ }
+}
+
+/**
+ * Init Normal Turnout data structure
+ * Calculates the dy value of each segment
+ * Sets pts values REORIGIN base to actual position and angle
+ * Save often used last base and last point coOrd
+ */
+static void DrawDtoInit()
+{
+ struct extraDataCompound_t* xx = dtod.xx;
+ coOrd p1;
+ int i, j;
+
+ for(i = 0; i < DTO_DIM; i++) {
+ int n = dto[i].n;
+ for(j = 0; j < n; j++) {
+ REORIGIN(p1,dto[i].base[j],xx->angle,xx->orig);
+ dto[i].pts[j] = p1;
+ if(j < n - 1) {
+ dto[i].dy[j] = (dto[i].base[j + 1].y - dto[i].base[j].y) /
+ (dto[i].base[j + 1].x - dto[i].base[j].x);
+ }
+ }
+ dto[i].ptsLast = dto[i].pts[n - 1];
+ dto[i].baseLast = dto[i].base[n - 1];
+ }
+}
+
+/**
+ * Draw Normal (Single Origin) Turnout Bridge and Ties. Uses the static dto and dtod structures.
+ *
+ * \param d The drawing object
+ * \param scaleInx The layout/track scale index
+ * \param color The tie color. If black the color is read from the global tieColor.
+ */
+static void DrawNormalTurnout(
+ drawCmd_p d,
+ SCALEINX_T scaleInx,
+ BOOL_T omitTies,
+ wDrawColor color)
+{
+ DIST_T len;
+ coOrd pos;
+ int cnt;
+ ANGLE_T angle;
+ coOrd s1, s2, p1, p2, q1, q2;
+ int p0, q0;
+// int s0;
+ ANGLE_T a0;
+
+ if (color == wDrawColorBlack) {
+ color = tieColor;
+ }
+
+// DIST_T trackGauge = GetTrkGauge(dtod.trk);
+
+ DrawDtoInit();
+
+ // draw the points
+#ifdef DTO_DEBUG
+ if (DTO_DEBUG == DTO_NORMAL) { DrawDtoLayout(d, scaleInx); }
+#endif
+
+ int strPath = dtod.strPath, othPath = 0, secPath = 1;
+ int toType = dtod.toType;
+// int first = 1;
+
+ switch (toType) {
+ case DTO_NORMAL:
+ othPath = 1 - strPath;
+ secPath = strPath;
+ break;
+ case DTO_WYE:
+ // strPath = 2;
+ othPath = 0; secPath = 1;
+ break;
+ case DTO_THREE:
+ switch (strPath) {
+ case 0:
+ othPath = 1; secPath = 2;
+ break;
+ case 1:
+ othPath = 0; secPath = 2;
+ break;
+ case 2:
+ othPath = 0; secPath = 1;
+ break;
+ }
+ break;
+ }
+
+ if(dtod.bridge) {
+ DrawTurnoutFill(d,0,othPath,secPath);
+ } else if(dtod.roadbed) {
+ DrawTurnoutFill( d,1,othPath,secPath );
+ }
+ if (omitTies) {
+ return;
+ }
+
+ // Straight vector for tie angle
+ if (toType == DTO_WYE) {
+ s1 = dto[othPath].pts[0];
+ s2 = MidPtCoOrd(dto[othPath].ptsLast, dto[secPath].ptsLast);
+ } else {
+ s1 = dto[strPath].pts[0];
+ s2 = dto[strPath].ptsLast;
+ }
+ // Diverging vector(s)
+ p1 = dto[othPath].pts[0];
+ p2 = dto[othPath].ptsLast;
+ q1 = dto[secPath].pts[0];
+ q2 = dto[secPath].ptsLast;
+
+ len = FindDistance(s1, s2);
+ angle = FindAngle(s1, s2); // The straight segment
+
+ cnt = (int)floor(len / dtod.td.spacing + 0.5);
+ if (cnt > 0) {
+ int pn = dto[othPath].n;
+ int qn = dto[secPath].n;
+ DIST_T dx = len / cnt;
+ /*s0 =*/ p0 = q0 = 0;
+ DIST_T tdlen = dtod.td.length;
+ DIST_T tdmax = (toType == DTO_WYE) ? 2.0 * tdlen : 2.5 * tdlen;
+ DIST_T tdwid = dtod.td.width;
+ DIST_T px = len, dlenx = dx / 2;
+
+ cnt = cnt > 1 ? cnt - 1 : 1;
+ for (px = dlenx; cnt; cnt--, px += dx) {
+ if (px >= dto[othPath].base[p0 + 1].x) { p0++; }
+ if (px >= dto[secPath].base[q0 + 1].x) { q0++; }
+ if (p0 >= pn || q0 >= qn) {
+ break;
+ }
+
+ if ((px + dx >= dto[othPath].baseLast.x)
+ || (px + dx >= dto[secPath].baseLast.x)) {
+ break;
+ }
+
+ DIST_T dy1 = dto[othPath].base[p0].y + (px - dto[othPath].base[p0].x) *
+ dto[othPath].dy[p0];
+ DIST_T dy2 = dto[secPath].base[q0].y + (px - dto[secPath].base[q0].x) *
+ dto[secPath].dy[q0];
+ tdlen = dtod.td.length + fabs(dy1) + fabs(dy2);
+ if (tdlen > tdmax) {
+ break;
+ }
+
+ DIST_T dy = dy1 + dy2;
+ Translate(&pos, s1, angle, px);
+ Translate(&pos, pos, (angle - 90.0), dy / 2);
+
+ DrawTie(d, pos, angle, tdlen, tdwid, color, tieDrawMode == TIEDRAWMODE_SOLID);
+ }
+
+ // Asymmetric? Use longer ties for remaining two tracks (strPath, othPath)
+ DIST_T sx = px; // Save these values for second code block
+ int s0 = p0;
+ if((dtod.toType == DTO_THREE) && (px + dx >= dto[secPath].baseLast.x)) {
+ for ( ; cnt; cnt--, px += dx) {
+ if (px >= dto[othPath].base[p0 + 1].x) { p0++; }
+ // if (px >= dto[secPath].base[q0 + 1].x) q0++;
+ if (p0 >= pn) {
+ break;
+ }
+
+ if (px + dx >= dto[othPath].baseLast.x) {
+ break;
+ }
+
+ DIST_T dy1 = dto[othPath].base[p0].y + (px - dto[othPath].base[p0].x) *
+ dto[othPath].dy[p0];
+ tdlen = dtod.td.length + fabs(dy1);
+ if (tdlen > tdmax) {
+ break;
+ }
+
+ DIST_T dy = dy1;
+ Translate(&pos, s1, angle, px);
+ Translate(&pos, pos, (angle - 90.0), dy / 2);
+
+ DrawTie(d, pos, angle, tdlen, tdwid, color, tieDrawMode == TIEDRAWMODE_SOLID);
+ }
+ }
+
+ // Draw remaining ties, if any
+ if (px + dx < dto[othPath].baseLast.x) {
+ p1 = dto[othPath].pts[p0];
+ p2 = dto[othPath].ptsLast;
+ angle = FindAngle(p1, p2);
+ a0 = FindAngle(dto[othPath].base[p0], dto[othPath].baseLast);
+ DIST_T lenr = (dto[othPath].baseLast.x - px + dlenx) / cos(D2R(90.0 - a0));
+ Translate(&p1, p2, angle, -lenr);
+ DrawStraightTies(d, dtod.td, p1, p2, color);
+ } else {
+ p1 = dto[othPath].pts[pn - 2];
+ a0 = FindAngle(p1, p2);
+ Translate(&pos, p2, a0, -dx / 2);
+ DrawTie(d, pos, a0, dtod.td.length, tdwid, color,
+ tieDrawMode == TIEDRAWMODE_SOLID);
+ }
+ // Restore saved values
+ if(dtod.toType == DTO_THREE) {
+ px = sx;
+ p0 = s0;
+ }
+
+ // Asymmetric? Use longer ties for remaining two tracks (strPath, secPath)
+ if((dtod.toType == DTO_THREE) && (px + dx >= dto[othPath].baseLast.x)) {
+ for ( ; cnt; cnt--, px += dx) {
+ // if (px >= dto[othPath].base[p0 + 1].x) p0++;
+ if (px >= dto[secPath].base[q0 + 1].x) { q0++; }
+ if (q0 >= qn) {
+ break;
+ }
+
+ if (px + dx >= dto[secPath].baseLast.x) {
+ break;
+ }
+
+ DIST_T dy1 = dto[secPath].base[q0].y + (px - dto[secPath].base[q0].x) *
+ dto[secPath].dy[q0];
+ tdlen = dtod.td.length + fabs(dy1);
+ if (tdlen > tdmax) {
+ break;
+ }
+
+ DIST_T dy = dy1;
+ Translate(&pos, s1, angle, px);
+ Translate(&pos, pos, (angle - 90.0), dy / 2);
+
+ DrawTie(d, pos, angle, tdlen, tdwid, color, tieDrawMode == TIEDRAWMODE_SOLID);
+ }
+ }
+ if (px + dx < dto[secPath].baseLast.x) {
+ q1 = dto[secPath].pts[q0];
+ q2 = dto[secPath].ptsLast;
+ angle = FindAngle(q1, q2);
+ a0 = FindAngle(dto[secPath].base[q0], dto[secPath].baseLast);
+ DIST_T lenr = (dto[secPath].baseLast.x - px + dlenx) / cos(D2R(90.0 - a0));
+ Translate(&q1, q2, angle, -lenr);
+ DrawStraightTies(d, dtod.td, q1, q2, color);
+ } else {
+ q1 = dto[secPath].pts[qn - 2];
+ a0 = FindAngle(q1, q2);
+ Translate(&pos, q2, a0, -dx / 2);
+ DrawTie(d, pos, a0, dtod.td.length, tdwid, color,
+ tieDrawMode == TIEDRAWMODE_SOLID);
+ }
+
+ // Final ties at end
+ if (dtod.toType == DTO_THREE) {
+
+ int n = (int)(dto[strPath].baseLast.x);
+ if (px + dx < len) {
+ angle = FindAngle(s1, s2);
+ DIST_T lenr = len - px + dlenx;
+ Translate(&s1, s2, angle, -lenr);
+ DrawStraightTies(d, dtod.td, s1, s2, color);
+ } else {
+ n = dto[strPath].n;
+ s1 = dto[strPath].pts[n - 2];
+ a0 = FindAngle(s1, s2);
+ Translate(&pos, s2, a0, -dx / 2);
+ DrawTie(d, pos, a0, dtod.td.length, tdwid, color,
+ tieDrawMode == TIEDRAWMODE_SOLID);
+ }
+ }
+ }
+}
+
+/**
+ * Draw Curved (Single Origin) Turnout Bridge and Ties. Uses the static dto and dtod structures.
+ *
+ * \param d The drawing object
+ * \param scaleInx The layout/track scale index
+ * \param color The tie color. If black the color is read from the global tieColor.
+ */
+static void DrawCurvedTurnout(
+ drawCmd_p d,
+ SCALEINX_T scaleInx,
+ BOOL_T omitTies,
+ wDrawColor color)
+{
+ DIST_T len, r;
+ coOrd pos;
+ int cnt;
+ ANGLE_T angle, dang;
+ coOrd center;
+ coOrd p1, p2, q1, q2;
+ ANGLE_T a0, a1, a2;
+ struct extraDataCompound_t* xx = dtod.xx;
+
+ if (color == wDrawColorBlack) {
+ color = tieColor;
+ }
+
+ DrawDtoInit();
+
+ // draw the points
+#ifdef DTO_DEBUG
+ if (DTO_DEBUG == DTO_CURVED) { DrawDtoLayout(d, scaleInx); }
+#endif
+
+ int othPath = 0, secPath = 1;
+// int toType = dtod.toType;
+
+ if(dtod.bridge) {
+ DrawTurnoutFill(d,0,othPath,secPath);
+ } else if(dtod.roadbed) {
+ DrawTurnoutFill(d,1,othPath,secPath);
+ }
+ if (omitTies) {
+ return;
+ }
+
+ // Save the ending coordinates
+ coOrd othEnd = zero, secEnd = zero;
+
+ trkSeg_p trk;
+ DIST_T tdlen = dtod.td.length, tdmax = tdlen * 2.5;
+ DIST_T tdspc = dtod.td.spacing, tdspc2 = tdspc / 2.0;
+ DIST_T tdwid = dtod.td.width;
+// double rdot = tdwid / 2;
+
+ int pn = dto[othPath].n;
+ int qn = dto[secPath].n;
+ int p0 = 0, q0 = 0;
+ DIST_T px = 0, qx = 0, dy = 0, dy1 = 0, dy2 = 0;
+
+ double cosAdj = 1.0;
+
+ angle = 0;
+ px = tdspc2;
+ qx = tdspc2;
+ int segs = max(dto[othPath].n, dto[secPath].n);
+ for (; segs > 0; segs--) {
+
+ if (px >= dto[othPath].base[p0 + 1].x) {
+ p0++;
+ }
+ if (qx >= dto[secPath].base[q0 + 1].x) {
+ q0++;
+ }
+ if ((p0 >= pn - 1) || (q0 >= qn - 1)) {
+ break;
+ }
+
+ trk = dto[othPath].trkSeg[p0];
+ if (trk->type == SEG_CRVTRK) {
+
+ center = trk->u.c.center;
+ r = fabs(trk->u.c.radius);
+ a0 = NormalizeAngle(trk->u.c.a0 + dtod.xx->angle);
+ a1 = trk->u.c.a1;
+
+ pos = center;
+ REORIGIN(center, pos, xx->angle, xx->orig);
+
+ len = r * D2R(a1);
+ cnt = (int)floor(len / tdspc + 0.5);
+ if (len - tdspc * cnt >= tdspc2) {
+ cnt++;
+ }
+ DIST_T tdlen = dtod.td.length;
+// DIST_T dx = len / cnt, dx2 = dx / 2;
+
+ if (cnt != 0) {
+ dang = (len / cnt) * 360 / (2 * M_PI * r);
+ DIST_T dx = len / cnt, dx2 = dx / 2;
+
+ if (dto[othPath].type == 'R') {
+ a2 = a0 + dang / 2;
+ } else {
+ a2 = a0 + a1 - dang / 2;
+ dang = -dang;
+ }
+ angle += fabs(dang / 2);
+
+ cosAdj = fabs(cos(D2R(angle)));
+ px += dx2 * cosAdj;
+ qx += dx2 * cosAdj;
+
+ for (; cnt; cnt--, a2 += dang, angle += dang) {
+ if (px >= dto[othPath].base[p0 + 1].x) {
+ p0++;
+ }
+ if (qx >= dto[secPath].base[q0 + 1].x) {
+ q0++;
+ }
+ if ((p0 >= pn - 1) || (q0 >= qn - 1)) {
+ break;
+ }
+
+ coOrd e1, e2;
+ PointOnCircle(&e1, center, r, a2);
+
+ q1 = dto[secPath].pts[q0];
+ q2 = dto[secPath].pts[q0 + 1];
+ FindIntersection(&e2, e1, a2, q1, FindAngle(q1, q2));
+
+ dy = FindDistance(e1, e2);
+ DIST_T tlen = tdlen + dy;
+
+ if (tlen > tdmax) {
+ break;
+ }
+
+ Translate(&pos, e1, a2, -dy / 2);
+ DrawTie(d, pos, angle + xx->angle + 90, tlen, tdwid, color,
+ tieDrawMode == TIEDRAWMODE_SOLID);
+
+ // Assures that these ends are the last point drawn before break
+ othEnd = e1;
+ secEnd = e2;
+
+ cosAdj = fabs(cos(D2R(angle)));
+ if (cnt > 1) {
+ px += dx * cosAdj;
+ qx += dx * cosAdj;
+ } else {
+ px += dx2 * cosAdj;
+ qx += dx2 * cosAdj;
+ }
+ }
+ }
+ } else {
+ cosAdj = fabs(cos(D2R(angle)));
+
+ p1 = dto[othPath].base[p0];
+ p2 = dto[othPath].base[p0 + 1];
+ len = FindDistance(p1, p2);
+ cnt = (int)floor(len / tdspc + 0.6);
+ if (cnt > 0) {
+ DIST_T dx = len / cnt/*, dx2 = dx / 2*/;
+
+ for (; cnt; cnt--) {
+ if (px >= dto[othPath].base[p0 + 1].x) {
+ p0++;
+ }
+ if (qx >= dto[secPath].base[q0 + 1].x) {
+ q0++;
+ }
+ if ((p0 >= pn - 1) || (q0 >= qn - 1)) {
+ break;
+ }
+
+ p1 = dto[othPath].base[p0];
+ p2 = dto[othPath].base[p0 + 1];
+
+ if ((px >= dto[othPath].baseLast.x)
+ || (qx >= dto[secPath].baseLast.x)) {
+ break;
+ }
+
+ dy1 = dto[secPath].base[q0].y + (qx - dto[secPath].base[q0].x) *
+ dto[secPath].dy[q0];
+ dy2 = dto[othPath].base[p0].y + (px - dto[othPath].base[p0].x) *
+ dto[othPath].dy[p0];
+ dy = dy1 - dy2;
+ DIST_T tlen = tdlen + fabs(cosAdj * dy);
+ if (tlen > tdmax) {
+ break;
+ }
+
+ q1 = dto[secPath].pts[q0];
+ q2 = dto[secPath].pts[q0 + 1];
+ a1 = FindAngle(q1, q2);
+ DIST_T xlen = qx - dto[secPath].base[q0].x;
+ Translate(&pos, q1, a1, xlen);
+ secEnd = pos;
+
+ q1 = dto[othPath].pts[p0];
+ q2 = dto[othPath].pts[p0 + 1];
+ a1 = FindAngle(q1, q2);
+ xlen = px - dto[othPath].base[p0].x;
+ Translate(&pos, q1, a1, xlen);
+ othEnd = pos;
+
+ Translate(&pos, pos, (a1 - 90.0), dy / 2);
+ DrawTie(d, pos, a1, tlen, tdwid, color, tieDrawMode == TIEDRAWMODE_SOLID);
+
+ cosAdj = fabs(cos(D2R(angle)));
+ px += dx * cosAdj;
+ qx += dx * cosAdj;
+ }
+ } else {
+ break;
+ }
+ }
+ }
+
+#ifdef DTO_DEBUG
+ if (DTO_DEBUG == DTO_CURVED) {
+ DrawFillCircle(d, othEnd, rdot, drawColorGreen);
+ DrawFillCircle(d, secEnd, rdot, drawColorGreen);
+
+ DrawFillCircle(d, dto[othPath].pts[p0], rdot, drawColorBlue);
+ DrawFillCircle(d, dto[secPath].pts[q0], rdot, drawColorBlue);
+ }
+#endif
+
+ // Draw remaining ties, if any
+ p1 = othEnd;
+ p2 = dto[othPath].ptsLast;
+ a0 = FindAngle(p1, p2);
+ len = FindDistance(p1, p2);
+ if (len >= 2 * tdspc) {
+ Translate(&p1, p1, a0, tdspc2);
+ DrawStraightTies(d, dtod.td, p1, p2, color);
+ } else if (len > tdspc2) {
+ Translate(&p2, p2, a0, -tdspc2);
+ DrawTie(d, p2, a0, dtod.td.length, tdwid, color,
+ tieDrawMode == TIEDRAWMODE_SOLID);
+ }
+
+ q1 = secEnd;
+ q2 = dto[secPath].ptsLast;
+ a0 = FindAngle(q1, q2);
+ len = FindDistance(q1, q2);
+ if (len >= 2 * tdspc) {
+ Translate(&q1, q1, a0, tdspc2);
+ DrawStraightTies(d, dtod.td, q1, q2, color);
+ } else if (len > tdspc2) {
+ Translate(&q2, q2, a0, -tdspc2);
+ DrawTie(d, q2, a0, dtod.td.length, tdwid, color,
+ tieDrawMode == TIEDRAWMODE_SOLID);
+ }
+}
+
+/**
+ * Draw Crossing and Slip Turnout Bridge and Ties - Uses the static dto and dtod structures.
+ *
+ * \param d The drawing object
+ * \param scaleInx The layout/track scale index
+ * \param color The tie color. If black the color is read from the global tieColor.
+ */
+static void DrawXingTurnout(
+ drawCmd_p d,
+ SCALEINX_T scaleInx,
+ BOOL_T omitTies,
+ wDrawColor color)
+{
+ DIST_T len;
+ coOrd pos;
+ int cnt;
+ ANGLE_T cAngle;
+
+ if (color == wDrawColorBlack) {
+ color = tieColor;
+ }
+
+ coOrd c1, c2, s1, s2, p1, p2, q1;
+ int p0, q0;
+ ANGLE_T a0, a1, a2;
+ int strPath = dtod.strPath, str2Path = dtod.str2Path;
+
+ struct extraDataCompound_t* xx = dtod.xx;
+
+ DrawDtoInit();
+
+ dto[strPath].angle = FindAngle(dto[strPath].pts[0], dto[strPath].ptsLast);
+ dto[str2Path].angle = FindAngle(dto[str2Path].pts[0], dto[str2Path].ptsLast);
+
+ int othPath = strPath, secPath = str2Path;
+ int toType = dtod.toType;
+
+ int i, j;
+ switch (toType) {
+ case DTO_XING:
+ case DTO_XNG9:
+ break;
+ case DTO_SSLIP:
+ for (i = 0; i < dtod.pathCnt; i++) {
+ if (dto[i].type == 'L' || dto[i].type == 'R') {
+ secPath = i;
+ break;
+ }
+ }
+ break;
+ case DTO_DSLIP:
+ for (i = 0; i < dtod.pathCnt; i++) {
+ if (dto[i].type == 'L') {
+ othPath = i;
+ } else if (dto[i].type == 'R') {
+ secPath = i;
+ }
+ }
+ break;
+ }
+
+ if(dtod.bridge) {
+ DrawXingFill(d,0,othPath,secPath);
+ } else if(dtod.roadbed) {
+ DrawXingFill(d,1,othPath,secPath);
+ }
+
+ // draw the points
+#ifdef DTO_DEBUG
+ if (DTO_DEBUG == DTO_XING) { DrawDtoLayout(d, scaleInx); }
+#endif
+
+ if (omitTies) {
+ return;
+ }
+
+ DIST_T tdlen = dtod.td.length, tdmax = 2.0 * tdlen;
+ DIST_T tdwid = dtod.td.width;
+ DIST_T tdspc = dtod.td.spacing, tdspc2 = tdspc / 2;
+
+ // Midpoint
+ p1 = dto[strPath].pts[0];
+ a1 = dto[strPath].angle;
+
+ q1 = dto[str2Path].pts[0];
+ a2 = dto[str2Path].angle;
+
+ FindIntersection(&pos, p1, a1, q1, a2);
+ dtod.midPt = pos;
+
+#ifdef DTO_DEBUG
+ if(DTO_DEBUG == DTO_XING) {
+ double r = td->width / 2;
+ DrawFillCircle(d,p1,r,drawColorPurple);
+ DrawFillCircle(d,q1,r,drawColorPurple);
+ DrawFillCircle(d,dtod.midPt,r,drawColorPurple);
+ }
+#endif
+
+ // Tie length adjust
+ double dAngle = fabs(DifferenceBetweenAngles(a1, a2));
+ double magic = 1.0;
+
+ // Short circuit the complex code for this simple case
+ if (toType == DTO_XNG9) {
+ p1 = dto[strPath].pts[0];
+ p2 = dto[strPath].ptsLast;
+ DrawStraightTies(d, dtod.td, p1, p2, color);
+
+ p1 = dto[str2Path].pts[0];
+ p2 = dto[str2Path].ptsLast;
+
+ // Omit the center ties
+ magic = 1 / cos(D2R(90 - dAngle));
+ DIST_T tdadj = (tdlen / 2) * magic;
+ DIST_T tdadj2 = tdspc2 * magic;
+
+ dAngle = (dAngle - 90) / 2;
+ Translate(&pos, dtod.midPt, a2, -tdadj - tdadj2);
+ DrawTie(d, pos, a2 - dAngle, tdlen, tdwid, color,
+ tieDrawMode == TIEDRAWMODE_SOLID);
+
+ Translate(&pos, dtod.midPt, a2, -tdadj - tdspc);
+ DrawStraightTies(d, dtod.td, p1, pos, color);
+
+ Translate(&pos, dtod.midPt, a2, tdadj + tdadj2);
+ DrawTie(d, pos, a2 - dAngle, tdlen, tdwid, color,
+ tieDrawMode == TIEDRAWMODE_SOLID);
+
+ Translate(&pos, dtod.midPt, a2, tdadj + tdspc);
+ DrawStraightTies(d, dtod.td, pos, p2, color);
+ return;
+ }
+
+ // Straight vector for tie angle
+ s1 = MidPtCoOrd(dto[strPath].base[0], dto[str2Path].base[0]);
+ s2 = MidPtCoOrd(dto[strPath].baseLast, dto[str2Path].baseLast);
+
+ // Rotate base coordinates so that the tie line is aligned with x-axis and origin is at zero
+ cAngle = FindAngle(s1, s2);
+ for (i = 0; i < DTO_DIM; i++)
+ for (j = 0; j < dto[i].n; j++) {
+ dto[i].base[j].x -= s1.x;
+ dto[i].base[j].y -= s1.y;
+ Rotate(&dto[i].base[j], zero, (90.0 - cAngle));
+ }
+
+ for (i = 0; i < DTO_DIM; i++) {
+ for (j = 0; j < dto[i].n - 1; j++) {
+ dto[i].dy[j] = (dto[i].base[j + 1].y - dto[i].base[j].y) /
+ (dto[i].base[j + 1].x - dto[i].base[j].x);
+ }
+ if (dto[i].type == 'S') {
+ dto[i].angle = FindAngle(dto[i].pts[0], dto[i].ptsLast);
+ }
+ }
+
+ // Tie center line in drawing coordinates
+ REORIGIN(c1, s1, xx->angle, xx->orig);
+ REORIGIN(c2, s2, xx->angle, xx->orig);
+ cAngle = FindAngle(c1, c2);
+
+ int pn = dto[othPath].n;
+ int qn = dto[secPath].n;
+
+ // Tie length adjust
+ magic = 1 / cos(0.5 * D2R(dAngle));
+ // Extra ties length adjust
+ double magic2 = 1.0 / cos(0.5 * D2R(dAngle));
+
+ // Draw right half
+ len = FindDistance(dtod.midPt, c2);
+ cnt = (int)floor(len / dtod.td.spacing + 0.5);
+ if (cnt <= 0) {
+ return;
+ }
+
+ DIST_T dx = len / cnt;
+ p0 = q0 = 0;
+ DIST_T dx2 = dx / 2;
+ DIST_T px = len + dx2;
+ DIST_T lenx = 0;
+
+ while (p0 < pn && px > dto[othPath].base[p0 + 1].x) { p0++; }
+ while (q0 < qn && px > dto[secPath].base[q0 + 1].x) { q0++; }
+ while (p0 < pn && q0 < qn) {
+ if (px > dto[othPath].base[p0 + 1].x) { p0++; }
+ if (px > dto[secPath].base[q0 + 1].x) { q0++; }
+ if (p0 >= pn || q0 >= qn) {
+ break;
+ }
+ // Dont use baseLast, as base coOrds have been rotated
+ if ((px + dx >= dto[othPath].base[pn - 1].x)
+ || (px + dx >= dto[secPath].base[qn - 1].x)) {
+ break;
+ }
+
+ DIST_T dy1 = dto[othPath].base[p0].y + (px - dto[othPath].base[p0].x) *
+ dto[othPath].dy[p0];
+ DIST_T dy2 = dto[secPath].base[q0].y + (px - dto[secPath].base[q0].x) *
+ dto[secPath].dy[q0];
+ tdlen = (dtod.td.length + fabs(dy1) + fabs(dy2)) * magic;
+ if(tdlen > tdmax) {
+ if(dAngle >= 30) {
+ DIST_T dy = (dy1 + dy2) / 2;
+ Translate(&pos,dtod.midPt,cAngle,px - len);
+ Translate(&pos,pos,(cAngle - 90.0),dy);
+ DrawTie(d,pos,cAngle,tdlen - dtod.td.length * magic,tdwid,color,
+ tieDrawMode == TIEDRAWMODE_SOLID);
+ lenx += dx2 * magic2;
+ }
+ break;
+ }
+
+ DIST_T dy = (dy1 + dy2) / 2;
+ Translate(&pos, dtod.midPt, cAngle, px - len);
+ Translate(&pos, pos, (cAngle - 90.0), dy);
+ DrawTie(d, pos, cAngle, tdlen, tdwid, color, tieDrawMode == TIEDRAWMODE_SOLID);
+
+ px += dx;
+ lenx += dx;
+ }
+
+ p1 = dtod.midPt;
+ p2 = dto[strPath].ptsLast;
+ DIST_T lenr = FindDistance(p1, p2) - lenx * magic2;
+ a0 = dto[strPath].angle;
+ if (lenr > dx) {
+ Translate(&pos, p2, a0, -lenr);
+ DrawStraightTies(d, dtod.td, pos, p2, color);
+ } else {
+ Translate(&pos, p2, a0, -dx2);
+ DrawTie(d, pos, a0, dtod.td.length, tdwid, color,
+ tieDrawMode == TIEDRAWMODE_SOLID);
+ }
+
+ // p1 = dtod.midPt;
+ p2 = dto[str2Path].ptsLast;
+ lenr = FindDistance(p1, p2) - lenx * magic2;
+ a0 = dto[str2Path].angle;
+ if (lenr > dx) {
+ Translate(&pos, p2, a0, -lenr);
+ DrawStraightTies(d, dtod.td, pos, p2, color);
+ } else {
+ Translate(&pos, p2, a0, -dx2);
+ DrawTie(d, pos, a0, dtod.td.length, tdwid, color,
+ tieDrawMode == TIEDRAWMODE_SOLID);
+ }
+
+ // Draw left half
+ // Change the straight path used
+ if (dtod.toType == DTO_SSLIP) {
+ othPath = str2Path;
+ }
+
+ len = FindDistance(c1, dtod.midPt);
+ cnt = (int)floor(len / dtod.td.spacing + 0.5);
+ if (cnt <= 0) {
+ return;
+ }
+
+ p0 = q0 = 0;
+ tdlen = dtod.td.length;
+
+ dx = len / cnt;
+ dx2 = dx / 2;
+ px = len - dx2;
+ lenx = 0;
+
+ while (p0 < pn && px > dto[othPath].base[p0 + 1].x) { p0++; }
+ while (q0 < qn && px > dto[secPath].base[q0 + 1].x) { q0++; }
+ while (p0 >= 0 && q0 >= 0) {
+ if (px < dto[othPath].base[p0].x) { p0--; }
+ if (px < dto[secPath].base[q0].x) { q0--; }
+ if (p0 < 0 || q0 < 0) {
+ break;
+ }
+
+ if ((px - dx < dto[othPath].base[0].x)
+ || (px - dx < dto[secPath].base[0].x)) {
+ break;
+ }
+
+ DIST_T dy1 = dto[othPath].base[p0].y + (px - dto[othPath].base[p0].x) *
+ dto[othPath].dy[p0];
+ DIST_T dy2 = dto[secPath].base[q0].y + (px - dto[secPath].base[q0].x) *
+ dto[secPath].dy[q0];
+ tdlen = (dtod.td.length + fabs(dy1) + fabs(dy2)) * magic;
+ if(tdlen > tdmax) {
+ if(dAngle >= 30) {
+ DIST_T dy = (dy1 + dy2) / 2;
+ Translate(&pos,dtod.midPt,cAngle,px - len);
+ Translate(&pos,pos,(cAngle - 90.0),dy);
+ DrawTie(d,pos,cAngle,tdlen - dtod.td.length * magic,tdwid,color,
+ tieDrawMode == TIEDRAWMODE_SOLID);
+ lenx += dx2 * magic2;
+ }
+ break;
+ }
+
+ DIST_T dy = (dy1 + dy2) / 2;
+ Translate(&pos, dtod.midPt, cAngle, px - len);
+ Translate(&pos, pos, (cAngle - 90.0), dy);
+ DrawTie(d, pos, cAngle, tdlen, tdwid, color, tieDrawMode == TIEDRAWMODE_SOLID);
+
+ px -= dx;
+ lenx += dx;
+ }
+
+ p1 = dto[strPath].pts[0];
+ p2 = dtod.midPt;
+ a0 = dto[strPath].angle;
+ lenr = FindDistance(p1, p2) - lenx * magic2;
+ if (lenr > dx) {
+ Translate(&pos, p1, a0, lenr);
+ DrawStraightTies(d, dtod.td, p1, pos, color);
+ } else {
+ Translate(&pos, p1, a0, dx2);
+ DrawTie(d, pos, a0, dtod.td.length, tdwid, color,
+ tieDrawMode == TIEDRAWMODE_SOLID);
+ }
+ p1 = dto[str2Path].pts[0];
+ // p2 = dtod.midPt;
+ a0 = dto[str2Path].angle;
+ lenr = FindDistance(p1, p2) - lenx * magic2;
+ if (lenr > dx) {
+ Translate(&pos, p1, a0, lenr);
+ DrawStraightTies(d, dtod.td, p1, pos, color);
+ } else {
+ Translate(&pos, p1, a0, dx2);
+ DrawTie(d, pos, a0, dtod.td.length, tdwid, color,
+ tieDrawMode == TIEDRAWMODE_SOLID);
+ }
+}
+
+/**
+ * Draw Crossover (Two Origin) Turnout Bridge and Ties. Uses the static dto and dtod structures.
+ *
+ * \param d The drawing object
+ * \param scaleInx The layout/track scale index
+ * \param color The tie color. If black the color is read from the global tieColor.
+ */
+static void DrawCrossTurnout(
+ drawCmd_p d,
+ SCALEINX_T scaleInx,
+ BOOL_T omitTies,
+ wDrawColor color)
+{
+ DIST_T len, dx;
+ coOrd pos;
+ int cnt;
+ ANGLE_T angle;
+
+ if (color == wDrawColorBlack) {
+ color = tieColor;
+ }
+
+// struct extraDataCompound_t* xx = dtod.xx;
+
+ DrawDtoInit();
+
+ // draw the points
+#ifdef DTO_DEBUG
+ if (DTO_DEBUG == DTO_LCROSS) { DrawDtoLayout(d, scaleInx); }
+#endif
+
+ int strPath = dtod.strPath, str2Path = dtod.str2Path;
+ // Bad assumption
+ int othPath = 2, secPath = 2;
+ if (dtod.pathCnt == 4) { secPath = 3; }
+
+ dto[strPath].angle = FindAngle(dto[strPath].pts[0], dto[strPath].ptsLast);
+ dto[str2Path].angle = FindAngle(dto[str2Path].pts[0], dto[str2Path].ptsLast);
+
+ if(dtod.bridge) {
+ DrawCrossFill(d,0,strPath,str2Path);
+ } else if(dtod.roadbed) {
+ DrawCrossFill(d,1,strPath,str2Path);
+ }
+ if (omitTies) {
+ return;
+ }
+
+ coOrd s1, s2, t1;
+// coOrd t2, p1, p2, q1, q2;
+ int s0, t0, p0, q0;
+
+ int sn = dto[strPath].n;
+ int tn = dto[str2Path].n;
+ int pn = dto[othPath].n;
+ int qn = dto[secPath].n;
+
+ s1 = dto[strPath].pts[0];
+ s2 = dto[strPath].ptsLast;
+ t1 = dto[str2Path].pts[0];
+// t2 = dto[str2Path].ptsLast;
+ angle = dto[strPath].angle;
+
+// p1 = dto[othPath].base[0];
+// p2 = dto[othPath].baseLast;
+// q1 = dto[secPath].base[0];
+// q2 = dto[secPath].baseLast;
+
+ len = FindDistance(s1, s2);
+ angle = dto[strPath].angle;
+
+ cnt = (int)floor(len / dtod.td.spacing + 0.5);
+ if (cnt > 0) {
+ DIST_T px = 0;
+ DIST_T dy, dy1, dy2;
+ int cflag = 0;
+ dy = dto[str2Path].base[0].y - dto[strPath].base[0].y;
+
+ dx = len / cnt;
+ s0 = t0 = p0 = q0 = 0;
+ DIST_T tdlen = dtod.td.length;
+ DIST_T tdwid = dtod.td.width;
+ DIST_T dlenx = dx / 2;
+
+ DIST_T px1 = len / 2 - dlenx * 5,
+ px2 = len / 2 + dlenx * 4;
+
+ for (px = dlenx; cnt; cnt--, px += dx) {
+ if (px >= dto[strPath].base[s0 + 1].x) { s0++; }
+ if (px >= dto[str2Path].base[t0 + 1].x) { t0++; }
+ if (px >= dto[othPath].base[p0 + 1].x) { p0++; }
+ if (px >= dto[secPath].base[q0 + 1].x) { q0++; }
+ if (s0 >= sn || t0 >= tn || p0 >= pn || q0 >= qn) {
+ break;
+ }
+
+ if ((px >= dto[strPath].baseLast.x)
+ || (px >= dto[str2Path].baseLast.x)) {
+ break;
+ }
+
+ dy1 = dy2 = 0;
+ cflag = 0;
+ if (px < px1) {
+ switch (dtod.toType) {
+ case DTO_DCROSS:
+ dy1 = dto[othPath].base[p0].y + (px - dto[othPath].base[p0].x) *
+ dto[othPath].dy[p0];
+ dy2 = dy - dto[secPath].base[q0].y - (px - dto[secPath].base[q0].x) *
+ dto[secPath].dy[q0];
+ break;
+ case DTO_LCROSS:
+ dy1 = dto[othPath].base[p0].y + (px - dto[othPath].base[p0].x) *
+ dto[othPath].dy[p0];
+ dy2 = 0;
+ break;
+ case DTO_RCROSS:
+ dy1 = 0;
+ dy2 = dy - dto[secPath].base[q0].y - (px - dto[secPath].base[q0].x) *
+ dto[secPath].dy[q0];
+ break;
+ default:
+ break;
+ }
+ } else if (px < px2) {
+ dy1 = (dto[str2Path].base[s0].y - dto[strPath].base[t0].y);
+ dy2 = 0;
+ cflag = 1;
+ } else {
+ switch (dtod.toType) {
+ case DTO_DCROSS:
+ dy1 = dto[secPath].base[q0].y + (px - dto[secPath].base[q0].x) *
+ dto[secPath].dy[q0];
+ dy2 = dy - dto[othPath].base[p0].y - (px - dto[othPath].base[p0].x) *
+ dto[othPath].dy[p0];
+ break;
+ case DTO_LCROSS:
+ dy1 = 0;
+ dy2 = dy - dto[secPath].base[q0].y - (px - dto[secPath].base[q0].x) *
+ dto[secPath].dy[q0];
+ break;
+ case DTO_RCROSS:
+ dy1 = dto[othPath].base[p0].y + (px - dto[othPath].base[p0].x) *
+ dto[othPath].dy[p0];
+ dy2 = 0;
+ break;
+ default:
+ break;
+ }
+ }
+
+ if (fabs(dy1) + fabs(dy2) >= dy) {
+ dy1 = (dto[str2Path].base[s0].y - dto[strPath].base[t0].y);
+ dy2 = 0;
+ cflag = 1;
+ }
+
+ tdlen = dtod.td.length + fabs(dy1);
+ Translate(&pos, s1, angle, px);
+ Translate(&pos, pos, (angle - 90.0), dy1 / 2);
+ DrawTie(d, pos, angle, tdlen, tdwid, color, tieDrawMode == TIEDRAWMODE_SOLID);
+
+ if (!cflag) {
+ tdlen = dtod.td.length + fabs(dy2);
+ Translate(&pos, t1, angle, px);
+ Translate(&pos, pos, (angle - 90.0), -dy2 / 2);
+ DrawTie(d, pos, angle, tdlen, tdwid, color, tieDrawMode == TIEDRAWMODE_SOLID);
+ }
+ }
+ return;
+
+ // Draw remaining ties, if any
+ // Currently by definition, there won't be any
+ /*
+ if (px + dx < dto[strPath].baseLast.x) {
+ p1 = dto[strPath].pts[p0];
+ p2 = dto[strPath].ptsLast;
+ angle = FindAngle(p1, p2);
+ a0 = FindAngle(dto[strPath].base[p0], dto[strPath].baseLast);
+ DIST_T lenr = (dto[strPath].baseLast.x - px + dlenx) / cos(D2R(90.0 - a0));
+ Translate(&p1, p2, angle, -lenr);
+ DrawStraightTies(d, dtod.td, p1, p2, color);
+ }
+ else {
+ p1 = dto[strPath].pts[pn - 2];
+ a0 = FindAngle(p1, p2);
+ Translate(&pos, p2, a0, -dx / 2);
+ DrawTie(d, pos, a0, td->length, tdwid, color, tieDrawMode == TIEDRAWMODE_SOLID);
+ }
+
+ if (px + dx < dto[str2Path].baseLast.x) {
+ q1 = dto[str2Path].pts[q0];
+ q2 = dto[str2Path].ptsLast;
+ angle = FindAngle(q1, q2);
+ a0 = FindAngle(dto[str2Path].base[q0], dto[str2Path].baseLast);
+ DIST_T lenr = (dto[str2Path].baseLast.x - px + dlenx) / cos(D2R(90.0 - a0));
+ Translate(&q1, q2, angle, -lenr);
+ DrawStraightTies(d, dtod.td, q1, q2, color);
+ }
+ else {
+ q1 = dto[str2Path].pts[qn - 2];
+ a0 = FindAngle(q1, q2);
+ Translate(&pos, q2, a0, -dx / 2);
+ DrawTie(d, pos, a0, td->length, tdwid, color, tieDrawMode == TIEDRAWMODE_SOLID);
+ }
+ */
+ }
+}
+
+/**
+ * Draw all turnout components: ties, rail, roadbed, etc.
+ *
+ * The turnout is checked to see if the enhanced methods can be used.
+ * If so the ties are drawn and the TB_NOTIES bit is set so that the
+ * rails and such are drawn on top of the ties. Similarly the bridge
+ * and roadbed bits are cleared so the enhanced method can be used.
+ * Those bits are restored to the previous state before return.
+ *
+ * \param trk Pointer to the track object
+ * \param d The drawing object
+ * \param color The turnout color.
+ */
+EXPORT void DrawTurnout(
+ track_p trk,
+ drawCmd_p d,
+ wDrawColor color)
+{
+ struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
+ wIndex_t i;
+ long widthOptions = 0;
+ SCALEINX_T scaleInx = GetTrkScale(trk);
+ BOOL_T omitTies = !DoDrawTies(d, trk) || !DrawTwoRails(d,1)
+ || ((d->options & DC_SIMPLE) != 0); // || (scaleInx == 0);
+
+ widthOptions = DTS_LEFT | DTS_RIGHT;
+
+ // Save these values
+ int noTies = GetTrkNoTies(trk);
+ int bridge = GetTrkBridge(trk);
+ int roadbed = GetTrkRoadbed(trk);
+
+ long skip = 0;
+ /** @prefs [Preference] NormalTurnoutDraw=1 to skip enhanced drawing methods */
+ wPrefGetInteger("Preference", "NormalTurnoutDraw", (long *) &skip, 0);
+
+ int pathCnt = (skip == 0 ? GetTurnoutPaths(trk, xx) : 0);
+
+ if ( (pathCnt > 1) && (pathCnt <= DTO_DIM)
+ && ( GetTrkEndPtCnt( trk ) <= 4)
+ && (xx->special == TOnormal) ) {
+
+ dtod.bridge = bridge;
+ dtod.roadbed = roadbed;
+
+// int strPath = -1;
+ GetTurnoutType();
+
+ if (dtod.toType != DTO_INVALID) {
+
+ switch (dtod.toType) {
+ case DTO_NORMAL:
+ case DTO_THREE:
+ case DTO_WYE:
+ DrawNormalTurnout(d, scaleInx, omitTies, color);
+ break;
+ case DTO_CURVED:
+ DrawCurvedTurnout(d, scaleInx, omitTies, color);
+ break;
+ case DTO_XING:
+ case DTO_XNG9:
+ case DTO_SSLIP:
+ case DTO_DSLIP:
+ DrawXingTurnout(d, scaleInx, omitTies, color);
+ break;
+ case DTO_LCROSS:
+ case DTO_RCROSS:
+ case DTO_DCROSS:
+ DrawCrossTurnout(d, scaleInx, omitTies, color);
+ break;
+ default:
+ break;
+ }
+ // Ignore these settings
+ SetTrkNoTies(trk, 1);
+ ClrTrkBits( trk,TB_BRIDGE );
+ ClrTrkBits(trk, TB_ROADBED);
+ }
+ }
+
+ // Begin standard DrawTurnout code to draw rails or centerline
+ // no curve center for turnouts, leave centerline for sectional curved
+ long opts = widthOptions | (xx->segCnt > 1 ? DTS_NOCENTER : 0);
+ DrawSegsO(d, trk, xx->orig, xx->angle, xx->segs, xx->segCnt, GetTrkGauge(trk),
+ color, opts);
+
+
+ for (i = 0; i < GetTrkEndPtCnt(trk); i++) {
+ DrawEndPt(d, trk, i, color);
+ }
+ if ((d->options & DC_SIMPLE) == 0 &&
+ (labelWhen == 2 || (labelWhen == 1 && (d->options & DC_PRINT))) &&
+ labelScale >= d->scale &&
+ (GetTrkBits(trk) & TB_HIDEDESC) == 0) {
+ DrawCompoundDescription(trk, d, color);
+ if (!xx->handlaid) {
+ LabelLengths(d, trk, color);
+ }
+ }
+ if (roadbedWidth > GetTrkGauge(trk) &&
+ DrawTwoRails( d, 1 ) &&
+ ( (d->options & DC_PRINT) || roadbedOnScreen ) ) {
+ DrawTurnoutRoadbed(d, color, xx->orig, xx->angle, xx->segs, xx->segCnt);
+ }
+
+ // Restore these settings
+ if (noTies == 0) { ClrTrkBits(trk, TB_NOTIES); }
+ if (bridge) { SetTrkBits(trk, TB_BRIDGE); }
+ if (roadbed) { SetTrkBits(trk, TB_ROADBED); }
+}
diff --git a/app/bin/unittest/CMakeLists.txt b/app/bin/unittest/CMakeLists.txt
index d4e237f..ce5f2f4 100644
--- a/app/bin/unittest/CMakeLists.txt
+++ b/app/bin/unittest/CMakeLists.txt
@@ -1,4 +1,7 @@
# build unit tests for the xtrkcad library
+#
+
+# dxf formatting
add_executable(dxfformattest
dxfformattest.c
@@ -11,25 +14,33 @@ target_link_libraries(dxfformattest
add_test(DXFOutputTest dxfformattest)
+# path manipulation
+
add_executable( pathstest
pathstest.c
)
target_link_libraries(pathstest
dynstring
- ${LIBS})
+ xtrkcad-wlib
+ ${LIBS})
add_test(PathsTest pathstest)
+# handling of default settings
+
add_executable( defaultstest
defaultstest.c
)
target_link_libraries(defaultstest
- ${LIBS})
+ xtrkcad-wlib
+ ${LIBS})
add_test(DefaultsTest defaultstest)
+#
+
add_executable(shortentest
shortentest.c
../shortentext.c
@@ -40,25 +51,44 @@ target_link_libraries(shortentest
add_test(ShortenTest shortentest)
-add_test(CatalogTest catalogtest)
-
-set (TESTXTP
- "atl83ho.xtp" "atlasn.xtp" "HO-Peco-Code83.xtp"
- )
-
-foreach(testfile IN LISTS TESTXTP )
- configure_file ( ${CMAKE_CURRENT_SOURCE_DIR}/testfiles/${testfile}
- ${CMAKE_CURRENT_BINARY_DIR}
- COPYONLY )
-endforeach()
-
-add_executable(catalogtest
- catalogtest.c
- ../partcatalog.c
- ../paths.c
- ../stringxtc.c
- )
-
-target_link_libraries(catalogtest
- dynstring
- ${LIBS}) \ No newline at end of file
+# parts catalog
+# disabled because it pulls in too many dependencies
+
+# add_test(CatalogTest catalogtest)
+
+# # parameter files for test cases:
+# # - two manufacturers
+# # - two scales from same manufacturer
+
+# set (TESTXTP
+# "atl83ho.xtp" "atlasn.xtp" "HO-Peco-Code83.xtp"
+# )
+
+# foreach(testfile IN LISTS TESTXTP )
+# configure_file ( ${CMAKE_CURRENT_SOURCE_DIR}/testfiles/${testfile}
+# ${CMAKE_CURRENT_BINARY_DIR}
+# COPYONLY )
+# endforeach()
+
+# add_executable(catalogtest
+# catalogtest.c
+# ../partcatalog.c
+# ../paths.c
+# ../stringxtc.c
+# ../levenshtein.c
+# )
+
+# target_link_libraries(catalogtest
+# dynstring
+# ${CMOCKA_LIBRARIES}
+# )
+
+
+set_target_properties(
+ dxfformattest
+# catalogtest
+ shortentest
+ defaultstest
+ pathstest
+ PROPERTIES FOLDER UnitTests
+ ) \ No newline at end of file
diff --git a/app/bin/unittest/catalogtest.c b/app/bin/unittest/catalogtest.c
index 6025990..70eeb22 100644
--- a/app/bin/unittest/catalogtest.c
+++ b/app/bin/unittest/catalogtest.c
@@ -10,31 +10,58 @@
#include <setjmp.h>
#include <cmocka.h>
+//#include "../common.h"
#include "../include/partcatalog.h"
-TrackLibrary *trackLib;
-CatalogEntry *catalog;
+ParameterLib *trackLib;
+Catalog *catalog;
+SearchResult* result;
// some dummy functions to suppress linking problems
+const char *
wGetUserHomeDir()
{
+ return("");
+}
+
+void wPrefSetString(const char* a, const char* b, const char* c)
+{
+
+}
+char* wPrefGetString(const char* section, const char* name)
+{
+ return("");
}
-wPrefSetString()
+void AbortProg(const char* a, const char* b, int c, const char*d)
{
}
-wPrefGetString()
+void *
+MyMalloc(size_t size)
{
+ return(malloc(size));
+}
+void
+MyFree(void* memory)
+{
+ free(memory);
}
-AbortProg()
+char *
+MyStrdup(const char* string)
{
+ return(strdup(string));
+}
+void *
+MyRealloc(void *memory, size_t size)
+{
+ return(realloc(memory, size));
}
static void
@@ -49,8 +76,8 @@ static void ScanEmptyDir(void **state)
{
(void)state;
bool success;
- EmptyCatalog(trackLib->catalog);
- success = GetTrackFiles(trackLib, "//");
+ DestroyCatalog(trackLib->catalog);
+ success = CreateCatalogFromDir(trackLib, "//");
assert_false(success);
}
@@ -58,8 +85,8 @@ static void ScanTestFiles(void **state)
{
(void)state;
bool success;
- EmptyCatalog(trackLib->catalog);
- success = GetTrackFiles(trackLib, ".");
+ DestroyCatalog(trackLib->catalog);
+ success = CreateCatalogFromDir(trackLib, ".");
assert_true(success);
}
@@ -73,25 +100,25 @@ static void CreateIndex(void **state)
static void SearchNothing(void **state)
{
(void)state;
- unsigned int files = SearchLibrary(trackLib, "djfhdkljhf", catalog);
+ unsigned int files = SearchLibrary(trackLib, "djfhdkljhf", result);
assert_true(files == 0);
- EmptyCatalog(catalog);
+ SearchDiscardResult(result);
}
static void SearchSingle(void **state)
{
(void)state;
- int files = SearchLibrary(trackLib, "peco", catalog );
+ int files = SearchLibrary(trackLib, "peco", result );
assert_true(files==1);
- EmptyCatalog(catalog);
+ SearchDiscardResult(result);
}
static void SearchMultiple(void **state)
{
(void)state;
- int files = SearchLibrary(trackLib, "atlas", catalog);
+ int files = SearchLibrary(trackLib, "atlas", result);
assert_true(files == 2);
- EmptyCatalog(catalog);
+ SearchDiscardResult(result);
}
static void FilterTest(void **state)
@@ -107,7 +134,7 @@ static void FilterTest(void **state)
int main(void)
{
- const struct CMUnitTest tests[] = {
+ const struct CMUnitTest tests[] = {
cmocka_unit_test(CreateLib),
cmocka_unit_test(ScanEmptyDir),
cmocka_unit_test(ScanTestFiles),
@@ -116,9 +143,9 @@ int main(void)
cmocka_unit_test(SearchSingle),
cmocka_unit_test(SearchMultiple),
cmocka_unit_test(FilterTest),
- };
+ };
catalog = InitCatalog();
- return cmocka_run_group_tests(tests, NULL, NULL);
+ return cmocka_run_group_tests(tests, NULL, NULL);
} \ No newline at end of file
diff --git a/app/bin/unittest/defaultstest.c b/app/bin/unittest/defaultstest.c
index e930468..06ae304 100644
--- a/app/bin/unittest/defaultstest.c
+++ b/app/bin/unittest/defaultstest.c
@@ -24,13 +24,13 @@ struct appDefault tests[] = {
const char *libDir ="Parameter/directory/";
/**
- * A dummy for the real MakePath function
+ * A dummy for the real MakePath function
*/
void
MakeFullpath( char **result, ...)
{
- *result = libDir;
+ *result = libDir;
}
#define TESTARRAYSIZE (sizeof(tests) / sizeof(tests[0]) )
@@ -43,14 +43,16 @@ struct appDefault test1[] = {
int
-wPrefGetIntegerBasic(const char *section, const char *name, long *result, long defaultValue)
+wPrefGetIntegerBasic(const char *section, const char *name, long *result,
+ long defaultValue)
{
*result = defaultValue;
return(TRUE);
}
int
-wPrefGetFloatBasic(const char *section, const char *name, double *result, double defaultValue)
+wPrefGetFloatBasic(const char *section, const char *name, double *result,
+ double defaultValue)
{
*result = defaultValue;
return(TRUE);
@@ -62,7 +64,7 @@ char * wPrefGetStringBasic(const char *section, const char *name)
}
/* dummy to make the linker happy */
-void
+void
wPrefSetInteger(const char *section, const char *name, long value)
{
return;
@@ -108,9 +110,9 @@ static void GetDefaults(void **state)
int main(void)
{
- const struct CMUnitTest tests[] = {
+ const struct CMUnitTest tests[] = {
cmocka_unit_test(BinarySearch),
cmocka_unit_test(GetDefaults)
- };
- return cmocka_run_group_tests(tests, NULL, NULL);
+ };
+ return cmocka_run_group_tests(tests, NULL, NULL);
}
diff --git a/app/bin/unittest/dxfformattest.c b/app/bin/unittest/dxfformattest.c
index b797ad9..3c5474a 100644
--- a/app/bin/unittest/dxfformattest.c
+++ b/app/bin/unittest/dxfformattest.c
@@ -45,9 +45,10 @@ static void LineCommand(void **state)
DynStringMalloc(&string, 0);
- DxfLineCommand( &string, 0, 1.0, 2.0, 1.1, 2.2, 1);
+ DxfLineCommand( &string, 0, 1.0, 2.0, 1.1, 2.2, 1, 1);
assert_string_equal(DynStringToCStr(&string),
- DXF_INDENT "0\nLINE\n 8\nXTRKCAD0\n 10\n1.000000\n 20\n2.000000\n 11\n1.100000\n 21\n2.200000\n 6\nDASHED\n");
+ DXF_INDENT "0\nLINE\n 8\nXTRKCAD0\n 10\n1.000000\n 20\n2.000000"
+ "\n 11\n1.100000\n 21\n2.200000\n 6\nDASHEDTINY\n 420\n1\n");
DynStringFree(&string);
}
@@ -60,9 +61,10 @@ static void CircleCommand(void **state)
DynStringMalloc(&string, 0);
- DxfCircleCommand(&string, 0, 1.0, 2.0, 1.1, 1);
+ DxfCircleCommand(&string, 0, 1.0, 2.0, 1.1, 1, 1);
assert_string_equal(DynStringToCStr(&string),
- DXF_INDENT "0\nCIRCLE\n 10\n1.000000\n 20\n2.000000\n 40\n1.100000\n 8\nXTRKCAD0\n 6\nDASHED\n");
+ DXF_INDENT "0\nCIRCLE\n 10\n1.000000\n 20\n2.000000\n"
+ " 40\n1.100000\n 8\nXTRKCAD0\n 6\nDASHEDTINY\n 420\n1\n");
DynStringFree(&string);
}
@@ -75,9 +77,10 @@ static void ArcCommand(void **state)
DynStringMalloc(&string, 0);
- DxfArcCommand(&string, 0, 1.0, 2.0, 1.1, 10.0, 180.0, 1);
+ DxfArcCommand(&string, 0, 1.0, 2.0, 1.1, 10.0, 180.0, 1, 1);
assert_string_equal(DynStringToCStr(&string),
- DXF_INDENT "0\nARC\n 10\n1.000000\n 20\n2.000000\n 40\n1.100000\n 50\n10.000000\n 51\n190.000000\n 8\nXTRKCAD0\n 6\nDASHED\n");
+ DXF_INDENT "0\nARC\n 10\n1.000000\n 20\n2.000000\n 40\n1.100000\n"
+ " 50\n10.000000\n 51\n190.000000\n 8\nXTRKCAD0\n 6\nDASHEDTINY\n 420\n1\n");
DynStringFree(&string);
}
@@ -91,10 +94,11 @@ static void TextCommand(void **state)
DynStringMalloc(&string, 0);
- DxfTextCommand(&string, 0, 10.0, 12.0, 144.0, TESTSTRING);
+ DxfTextCommand(&string, 0, 10.0, 12.0, 144.0, TESTSTRING, 1);
assert_string_equal(DynStringToCStr(&string),
- DXF_INDENT "0\nTEXT\n 1\n" TESTSTRING "\n 10\n10.000000\n 20\n12.000000\n 40\n2.000000\n 8\nXTRKCAD0\n");
+ DXF_INDENT "0\nTEXT\n 1\n" TESTSTRING "\n 10\n10.000000\n 20\n12.000000\n"
+ " 40\n2.000000\n 8\nXTRKCAD0\n 420\n1\n");
DynStringFree(&string);
}
@@ -109,36 +113,40 @@ static void Units(void **state)
/* test English units */
units = 0;
DxfUnits(&string);
- assert_string_equal(DynStringToCStr(&string), DXF_INDENT "9\n$MEASUREMENT\n 70\n0\n" DXF_INDENT "9\n$INSUNITS\n 70\n1\n");
+ assert_string_equal(DynStringToCStr(&string),
+ DXF_INDENT "9\n$MEASUREMENT\n 70\n0\n" DXF_INDENT "9\n$INSUNITS\n 70\n1\n");
DxfFormatPosition(&string, 20, 1.23456789);
assert_string_equal(DynStringToCStr(&string), DXF_INDENT "20\n1.234568\n");
-
+
DynStringClear(&string);
DxfDimensionSize(&string, DXF_DIMTEXTSIZE);
- assert_string_equal(DynStringToCStr(&string), DXF_INDENT "9\n$DIMTXT\n 40\n1.0\n");
+ assert_string_equal(DynStringToCStr(&string),
+ DXF_INDENT "9\n$DIMTXT\n 40\n1.0\n");
/* test metric units */
units = 1;
DynStringClear(&string);
DxfUnits(&string);
- assert_string_equal(DynStringToCStr(&string), DXF_INDENT "9\n$MEASUREMENT\n 70\n1\n" DXF_INDENT "9\n$INSUNITS\n 70\n4\n");
+ assert_string_equal(DynStringToCStr(&string),
+ DXF_INDENT "9\n$MEASUREMENT\n 70\n1\n" DXF_INDENT "9\n$INSUNITS\n 70\n4\n");
DxfFormatPosition(&string, 20, 1.23456789);
assert_string_equal(DynStringToCStr(&string), DXF_INDENT "20\n31.358024\n");
DynStringClear(&string);
DxfDimensionSize(&string, DXF_DIMTEXTSIZE);
- assert_string_equal(DynStringToCStr(&string), DXF_INDENT "9\n$DIMTXT\n 40\n25.0\n");
+ assert_string_equal(DynStringToCStr(&string),
+ DXF_INDENT "9\n$DIMTXT\n 40\n25.0\n");
}
int main(void)
{
- const struct CMUnitTest tests[] = {
+ const struct CMUnitTest tests[] = {
cmocka_unit_test(BasicFormatting),
cmocka_unit_test(LineCommand),
cmocka_unit_test(CircleCommand),
cmocka_unit_test(ArcCommand),
cmocka_unit_test(TextCommand),
cmocka_unit_test(Units)
- };
- return cmocka_run_group_tests(tests, NULL, NULL);
+ };
+ return cmocka_run_group_tests(tests, NULL, NULL);
} \ No newline at end of file
diff --git a/app/bin/unittest/pathstest.c b/app/bin/unittest/pathstest.c
index 3ee830e..eccba24 100644
--- a/app/bin/unittest/pathstest.c
+++ b/app/bin/unittest/pathstest.c
@@ -32,6 +32,9 @@
#define DEFAULTPATH "/Default/Path"
#endif //WINDOWS
+
+// Dummy functions to satisfy the linker
+
void
wPrefSetString(const char *section, const char *key, const char *value)
{}
@@ -51,6 +54,11 @@ const char *wGetUserHomeDir(void)
return(DEFAULTPATH);
}
+void AbortProg(const char *a, const char *b, int d, const char *c)
+{
+ return;
+}
+
#include "../paths.c"
static void SetGetPath(void **state)
@@ -67,7 +75,7 @@ static void SetGetPath(void **state)
SetCurrentPath("Test", TESTFILE2);
string = GetCurrentPath("Test");
- assert_string_equal(string, TESTPATH2);
+ assert_string_equal(string, TESTPATH2);
}
static void Makepath(void **state)
@@ -76,38 +84,38 @@ static void Makepath(void **state)
char *path;
#ifdef WINDOWS
- MakeFullpath(&path,
- "C:",
- TESTRELATIVEPATH,
- TESTFILENAME,
- NULL);
+ MakeFullpath(&path,
+ "C:",
+ TESTRELATIVEPATH,
+ TESTFILENAME,
+ NULL);
- assert_string_equal(path, "C:" TESTRELATIVEPATH "\\" TESTFILENAME);
+ assert_string_equal(path, "C:" TESTRELATIVEPATH "\\" TESTFILENAME);
#else
- MakeFullpath(&path,
- TESTRELATIVEPATH,
- TESTFILENAME,
- NULL);
+ MakeFullpath(&path,
+ TESTRELATIVEPATH,
+ TESTFILENAME,
+ NULL);
- assert_string_equal(path, TESTRELATIVEPATH "/" TESTFILENAME);
+ assert_string_equal(path, TESTRELATIVEPATH "/" TESTFILENAME);
#endif // WINDOWS
free(path);
#ifdef WINDOWS
MakeFullpath(&path,
- "C:",
- "test",
- "\\subdir",
- TESTFILENAME,
- NULL);
+ "C:",
+ "test",
+ "\\subdir",
+ TESTFILENAME,
+ NULL);
assert_string_equal(path, "C:test\\subdir\\" TESTFILENAME);
#else
MakeFullpath(&path,
- "test",
- "/subdir",
- TESTFILENAME,
- NULL);
+ "test",
+ "/subdir",
+ TESTFILENAME,
+ NULL);
assert_string_equal(path, "test/subdir/" TESTFILENAME);
#endif // WINDOWS
@@ -118,9 +126,9 @@ static void Makepath(void **state)
int main(void)
{
- const struct CMUnitTest tests[] = {
+ const struct CMUnitTest tests[] = {
cmocka_unit_test(SetGetPath),
cmocka_unit_test(Makepath),
- };
- return cmocka_run_group_tests(tests, NULL, NULL);
+ };
+ return cmocka_run_group_tests(tests, NULL, NULL);
}
diff --git a/app/bin/unittest/shortentest.c b/app/bin/unittest/shortentest.c
index 4d24b84..9288017 100644
--- a/app/bin/unittest/shortentest.c
+++ b/app/bin/unittest/shortentest.c
@@ -111,7 +111,7 @@ static void EllipsizeText(void **state)
EllipsizeString(LONGSTRING, result, strlen(LONGSTRING));
assert_string_equal(result, LONGSTRING);
- EllipsizeString(LONGSTRING, result, 40);
+ EllipsizeString(LONGSTRING, result, 40);
assert_string_equal(result, "The strrchr() function in C/C++...");
EllipsizeString(LONGSTRING, result, 23);
@@ -138,7 +138,7 @@ static void LongText(void **state)
int main(void)
{
- const struct CMUnitTest tests[] = {
+ const struct CMUnitTest tests[] = {
cmocka_unit_test(NoRemoveBlanks),
cmocka_unit_test(RemoveMultipleBlanks),
cmocka_unit_test(RemoveTabs),
@@ -147,6 +147,6 @@ int main(void)
cmocka_unit_test(NoEllipsizeText),
cmocka_unit_test(EllipsizeText),
cmocka_unit_test(LongText),
- };
- return cmocka_run_group_tests(tests, NULL, NULL);
+ };
+ return cmocka_run_group_tests(tests, NULL, NULL);
} \ No newline at end of file
diff --git a/app/bin/utf8convert.c b/app/bin/utf8convert.c
index 977a62c..666ac80 100644
--- a/app/bin/utf8convert.c
+++ b/app/bin/utf8convert.c
@@ -3,30 +3,30 @@
*
* UTF8 conversion functions
*/
-
- /* XTrackCad - Model Railroad CAD
- * Copyright (C) 2020 Martin Fischer
- *
- * 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.
- */
-#include "misc.h"
+/* XTrackCad - Model Railroad CAD
+ * Copyright (C) 2020 Martin Fischer
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "common.h"
#include "include/utf8convert.h"
/**
- * Convert to UTF-8. The string must by a dynamically allocated storage block
+ * Convert to UTF-8. The string must by a dynamically allocated storage block
* allocated with MyMalloc(). The functions returns a pointer to the converted
* string. If no conversion was necessary the returned string is identical to
* the parameter. Otherwise a new buffer is allocated and returned.
diff --git a/app/bin/uthash.h b/app/bin/uthash.h
index 39fd891..bf74f7b 100644
--- a/app/bin/uthash.h
+++ b/app/bin/uthash.h
@@ -890,22 +890,22 @@ for((el)=(head),(tmp)=DECLTYPE(el)((head)?(head)->hh.next:NULL);
#define HASH_CNT(hh,head) ((head)?((head)->hh.tbl->num_items):0)
typedef struct UT_hash_bucket {
- struct UT_hash_handle *hh_head;
- unsigned count;
-
- /* expand_mult is normally set to 0. In this situation, the max chain length
- * threshold is enforced at its default value, HASH_BKT_CAPACITY_THRESH. (If
- * the bucket's chain exceeds this length, bucket expansion is triggered).
- * However, setting expand_mult to a non-zero value delays bucket expansion
- * (that would be triggered by additions to this particular bucket)
- * until its chain length reaches a *multiple* of HASH_BKT_CAPACITY_THRESH.
- * (The multiplier is simply expand_mult+1). The whole idea of this
- * multiplier is to reduce bucket expansions, since they are expensive, in
- * situations where we know that a particular bucket tends to be overused.
- * It is better to let its chain length grow to a longer yet-still-bounded
- * value, than to do an O(n) bucket expansion too often.
- */
- unsigned expand_mult;
+ struct UT_hash_handle *hh_head;
+ unsigned count;
+
+ /* expand_mult is normally set to 0. In this situation, the max chain length
+ * threshold is enforced at its default value, HASH_BKT_CAPACITY_THRESH. (If
+ * the bucket's chain exceeds this length, bucket expansion is triggered).
+ * However, setting expand_mult to a non-zero value delays bucket expansion
+ * (that would be triggered by additions to this particular bucket)
+ * until its chain length reaches a *multiple* of HASH_BKT_CAPACITY_THRESH.
+ * (The multiplier is simply expand_mult+1). The whole idea of this
+ * multiplier is to reduce bucket expansions, since they are expensive, in
+ * situations where we know that a particular bucket tends to be overused.
+ * It is better to let its chain length grow to a longer yet-still-bounded
+ * value, than to do an O(n) bucket expansion too often.
+ */
+ unsigned expand_mult;
} UT_hash_bucket;
@@ -914,47 +914,47 @@ typedef struct UT_hash_bucket {
#define HASH_BLOOM_SIGNATURE 0xb12220f2
typedef struct UT_hash_table {
- UT_hash_bucket *buckets;
- unsigned num_buckets, log2_num_buckets;
- unsigned num_items;
- struct UT_hash_handle *tail; /* tail hh in app order, for fast append */
- ptrdiff_t hho; /* hash handle offset (byte pos of hash handle in element */
-
- /* in an ideal situation (all buckets used equally), no bucket would have
- * more than ceil(#items/#buckets) items. that's the ideal chain length. */
- unsigned ideal_chain_maxlen;
-
- /* nonideal_items is the number of items in the hash whose chain position
- * exceeds the ideal chain maxlen. these items pay the penalty for an uneven
- * hash distribution; reaching them in a chain traversal takes >ideal steps */
- unsigned nonideal_items;
-
- /* ineffective expands occur when a bucket doubling was performed, but
- * afterward, more than half the items in the hash had nonideal chain
- * positions. If this happens on two consecutive expansions we inhibit any
- * further expansion, as it's not helping; this happens when the hash
- * function isn't a good fit for the key domain. When expansion is inhibited
- * the hash will still work, albeit no longer in constant time. */
- unsigned ineff_expands, noexpand;
-
- uint32_t signature; /* used only to find hash tables in external analysis */
+ UT_hash_bucket *buckets;
+ unsigned num_buckets, log2_num_buckets;
+ unsigned num_items;
+ struct UT_hash_handle *tail; /* tail hh in app order, for fast append */
+ ptrdiff_t hho; /* hash handle offset (byte pos of hash handle in element */
+
+ /* in an ideal situation (all buckets used equally), no bucket would have
+ * more than ceil(#items/#buckets) items. that's the ideal chain length. */
+ unsigned ideal_chain_maxlen;
+
+ /* nonideal_items is the number of items in the hash whose chain position
+ * exceeds the ideal chain maxlen. these items pay the penalty for an uneven
+ * hash distribution; reaching them in a chain traversal takes >ideal steps */
+ unsigned nonideal_items;
+
+ /* ineffective expands occur when a bucket doubling was performed, but
+ * afterward, more than half the items in the hash had nonideal chain
+ * positions. If this happens on two consecutive expansions we inhibit any
+ * further expansion, as it's not helping; this happens when the hash
+ * function isn't a good fit for the key domain. When expansion is inhibited
+ * the hash will still work, albeit no longer in constant time. */
+ unsigned ineff_expands, noexpand;
+
+ uint32_t signature; /* used only to find hash tables in external analysis */
#ifdef HASH_BLOOM
- uint32_t bloom_sig; /* used only to test bloom exists in external analysis */
- uint8_t *bloom_bv;
- char bloom_nbits;
+ uint32_t bloom_sig; /* used only to test bloom exists in external analysis */
+ uint8_t *bloom_bv;
+ char bloom_nbits;
#endif
} UT_hash_table;
typedef struct UT_hash_handle {
- struct UT_hash_table *tbl;
- void *prev; /* prev element in app order */
- void *next; /* next element in app order */
- struct UT_hash_handle *hh_prev; /* previous hh in bucket order */
- struct UT_hash_handle *hh_next; /* next hh in bucket order */
- void *key; /* ptr to enclosing struct's key */
- unsigned keylen; /* enclosing struct's key len */
- unsigned hashv; /* result of hash-fcn(key) */
+ struct UT_hash_table *tbl;
+ void *prev; /* prev element in app order */
+ void *next; /* next element in app order */
+ struct UT_hash_handle *hh_prev; /* previous hh in bucket order */
+ struct UT_hash_handle *hh_next; /* next hh in bucket order */
+ void *key; /* ptr to enclosing struct's key */
+ unsigned keylen; /* enclosing struct's key len */
+ unsigned hashv; /* result of hash-fcn(key) */
} UT_hash_handle;
#endif /* UTHASH_H */
diff --git a/app/bin/utility.c b/app/bin/utility.c
index 93e2ff4..ff457d9 100644
--- a/app/bin/utility.c
+++ b/app/bin/utility.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 "utility.h"
@@ -44,7 +44,7 @@ DEBUGF_T debugIntersection = 0;
#ifndef min
double max( double a, double b )
{
- if (a>b) return a;
+ if (a>b) { return a; }
return b;
}
@@ -52,7 +52,7 @@ double max( double a, double b )
double min( double a, double b )
{
- if (a<b) return a;
+ if (a<b) { return a; }
return b;
}
#endif
@@ -77,23 +77,25 @@ double FindDistance( coOrd p0, coOrd p1 )
double NormalizeAngle( double a )
{
- while (a<0.0) a += 360.0;
- while (a>=360.0) a -= 360.0;
+ while (a<0.0) { a += 360.0; }
+ while (a>=360.0) { a -= 360.0; }
return a;
}
-double DifferenceBetweenAngles(double a, double b) {
- double difference = b - a;
- while (difference < -180) difference += 360;
- while (difference > 180) difference -= 360;
- return difference;
+double DifferenceBetweenAngles(double a, double b)
+{
+ double difference = b - a;
+ while (difference < -180) { difference += 360; }
+ while (difference > 180) { difference -= 360; }
+ return difference;
}
-int AngleInRange(double a, double start, double size) {
+int AngleInRange(double a, double start, double size)
+{
if (DifferenceBetweenAngles(start+size,a)<=0.0) {
- if (DifferenceBetweenAngles(start,a)>=0.0)
+ if (DifferenceBetweenAngles(start,a)>=0.0) {
return 0;
- else return 1;
+ } else { return 1; }
}
return -1;
}
@@ -110,7 +112,7 @@ int IsAligned( double a1, double a2 )
double D2R( double D )
{
D = NormalizeAngle(D);
- if (D >= 180.0) D = D - 360.0;
+ if (D >= 180.0) { D = D - 360.0; }
return D * (M_PI*2) / 360.0;
}
@@ -157,7 +159,9 @@ double FindAngle( coOrd p0, coOrd p1 )
double dx = p1.x-p0.x, dy = p1.y-p0.y;
if ( dx == 0.0 && dy == 0.0 )
// Avoid implementation defined behavior
+ {
return 0.0;
+ }
return R2D(atan2( dx,dy ));
}
@@ -187,7 +191,8 @@ double ConstrainR( double r )
-void FindPos( coOrd * res, double * beyond, coOrd pos, coOrd orig, double angle, double length )
+void FindPos( coOrd * res, double * beyond, coOrd pos, coOrd orig, double angle,
+ double length )
{
double a0, a1;
double d;
@@ -207,7 +212,7 @@ void FindPos( coOrd * res, double * beyond, coOrd pos, coOrd orig, double angle,
} else {
res->x = (POS_T)x;
}
- if (beyond) *beyond = x - res->x;
+ if (beyond) { *beyond = x - res->x; }
res->y = (POS_T)(d * sin( D2R( a1 )) );
}
@@ -216,15 +221,18 @@ void FindPos( coOrd * res, double * beyond, coOrd pos, coOrd orig, double angle,
* Given two circles described by centers and radius (C1, R1) (C2, R2) Find the zero, one or two intersection points
*
*/
-BOOL_T FindArcIntersections ( coOrd *Pc, coOrd *Pc2, coOrd center1, DIST_T radius1, coOrd center2, DIST_T radius2) {
+BOOL_T FindArcIntersections ( coOrd *Pc, coOrd *Pc2, coOrd center1,
+ DIST_T radius1, coOrd center2, DIST_T radius2)
+{
double d,a,h;
- d = sqrt((center2.x-center1.x)*(center2.x-center1.x)+(center2.y-center1.y)*(center2.y-center1.y));
- if (d >(radius1+radius2)) return FALSE; //Too far apart
- if (d<fabs(radius1-radius2)) return FALSE; //Inside each other
- if ((d == 0) && (radius1 == radius2)) return FALSE; // Coincident and the same
+ d = sqrt((center2.x-center1.x)*(center2.x-center1.x)+(center2.y-center1.y)*
+ (center2.y-center1.y));
+ if (d >(radius1+radius2)) { return FALSE; } //Too far apart
+ if (d<fabs(radius1-radius2)) { return FALSE; } //Inside each other
+ if ((d == 0) && (radius1 == radius2)) { return FALSE; } // Coincident and the same
a=((radius1*radius1)-(radius2*radius2)+(d*d))/(2*d);
- if ((radius1*radius1)<(a*a)) return FALSE;
+ if ((radius1*radius1)<(a*a)) { return FALSE; }
h = sqrt((radius1*radius1)-(a*a));
coOrd center_c;
@@ -249,36 +257,38 @@ BOOL_T FindArcIntersections ( coOrd *Pc, coOrd *Pc2, coOrd center1, DIST_T radiu
* Find two intersect points on secant by triangle formed between middle, center and arc point
*
*/
-BOOL_T FindArcAndLineIntersections(coOrd *intersection1, coOrd *intersection2, coOrd c, DIST_T radius,
- coOrd point1, coOrd point2 )
+BOOL_T FindArcAndLineIntersections(coOrd *intersection1, coOrd *intersection2,
+ coOrd c, DIST_T radius,
+ coOrd point1, coOrd point2 )
{
double la, lb, lc; //Line equation
- la = point1.y - point2.y;
- lb = point2.x - point1.x;
- lc = (point1.x-c.x)*(point2.y-c.y) - (point2.x-c.x)*(point1.y-c.y); //Move by c(x,y)
+ la = point1.y - point2.y;
+ lb = point2.x - point1.x;
+ lc = (point1.x-c.x)*(point2.y-c.y) - (point2.x-c.x)*(point1.y
+ -c.y); //Move by c(x,y)
- double x0 = -la*lc/(la*la+lb*lb), y0 = -lb*lc/(la*la+lb*lb);
+ double x0 = -la*lc/(la*la+lb*lb), y0 = -lb*lc/(la*la+lb*lb);
- double dis = radius*radius*(la*la+lb*lb);
+ double dis = radius*radius*(la*la+lb*lb);
- if (lc*lc > dis) {
- return FALSE;
- } else if (fabs(lc*lc - dis) < EPSILON) {
- (*intersection1).x = x0+c.x;
- (*intersection1).y = y0+c.y;
- *intersection2 = *intersection1;
- return TRUE;
- } else {
- double d = radius*radius - lc*lc/(la*la+lb*lb);
- double mult = sqrt(d/(la*la+lb*lb));
- (*intersection1).x = x0+lb*mult+c.x;
- (*intersection2).x = x0-lb*mult+c.x;
- (*intersection1).y = y0-la*mult+c.y;
- (*intersection2).y = y0+la*mult+c.y;
- return TRUE;
- }
+ if (lc*lc > dis) {
+ return FALSE;
+ } else if (fabs(lc*lc - dis) < EPSILON) {
+ (*intersection1).x = x0+c.x;
+ (*intersection1).y = y0+c.y;
+ *intersection2 = *intersection1;
+ return TRUE;
+ } else {
+ double d = radius*radius - lc*lc/(la*la+lb*lb);
+ double mult = sqrt(d/(la*la+lb*lb));
+ (*intersection1).x = x0+lb*mult+c.x;
+ (*intersection2).x = x0-lb*mult+c.x;
+ (*intersection1).y = y0-la*mult+c.y;
+ (*intersection2).y = y0+la*mult+c.y;
+ return TRUE;
+ }
}
/* Find intersection:
@@ -368,7 +378,7 @@ BOOL_T FindArcAndLineIntersections(coOrd *intersection1, coOrd *intersection2, c
d1x*d0y - d1y*d0x
if (d1x*d0y - d1y*d0x) = 0 then lines are parallel
-*/
+*/
BOOL_T FindIntersection( coOrd *Pc, coOrd P0, double A0, coOrd P1, double A1 )
{
@@ -378,7 +388,7 @@ BOOL_T FindIntersection( coOrd *Pc, coOrd P0, double A0, coOrd P1, double A1 )
#ifndef WINDOWS
if (debugIntersection >= 3)
printf("FindIntersection( [%0.3f %0.3f] A%0.3f [%0.3f %0.3f] A%0.3f\n",
- P0.x, P0.y, A0, P1.x, P1.y, A1 );
+ P0.x, P0.y, A0, P1.x, P1.y, A1 );
#endif
dx0 = sin( D2R( A0 ) );
@@ -388,21 +398,21 @@ BOOL_T FindIntersection( coOrd *Pc, coOrd P0, double A0, coOrd P1, double A1 )
d = dx1 * dy0 - dx0 * dy1;
if (d < EPSILON && d > -EPSILON) {
#ifndef WINDOWS
- if (debugIntersection >=3 ) printf("dx1 * dy0 - dx0 * dy1 = %0.3f\n", d );
+ if (debugIntersection >=3 ) { printf("dx1 * dy0 - dx0 * dy1 = %0.3f\n", d ); }
#endif
return FALSE;
}
-/*
- * (P0.x - P1.x) * d0y + (P1.y - P0.y) * d0x
- * N1 = =============================================
- * d1x*d0y - d1y*d0x
- */
+ /*
+ * (P0.x - P1.x) * d0y + (P1.y - P0.y) * d0x
+ * N1 = =============================================
+ * d1x*d0y - d1y*d0x
+ */
N1 = dy0 * (P0.x - P1.x) + dx0 * (P1.y - P0.y );
N1 = N1 / d;
Pc->x = P1.x + (POS_T)(N1*dx1);
Pc->y = P1.y + (POS_T)(N1*dy1);
#ifndef WINDOWS
- if (debugIntersection >=3 ) printf( " [%0.3f,%0.3f]\n", Pc->x, Pc->y );
+ if (debugIntersection >=3 ) { printf( " [%0.3f,%0.3f]\n", Pc->x, Pc->y ); }
#endif
return TRUE;
}
@@ -412,20 +422,22 @@ EPINX_T PickArcEndPt( coOrd pc, coOrd p0, coOrd p1 )
{
double a;
a = NormalizeAngle( FindAngle( pc, p1 ) - FindAngle( pc, p0 ) );
- if (a > 180.0)
+ if (a > 180.0) {
return 0;
- else
+ } else {
return 1;
+ }
}
EPINX_T PickLineEndPt( coOrd p0, double a0, coOrd p1 )
{
double a;
a = NormalizeAngle( FindAngle( p0, p1 ) - a0 );
- if (a < 90.0 || a > 270 )
+ if (a < 90.0 || a > 270 ) {
return 0;
- else
+ } else {
return 1;
+ }
}
double LineDistance( coOrd *p, coOrd p0, coOrd p1 )
@@ -500,31 +512,34 @@ coOrd AddCoOrd( coOrd p0, coOrd p1, double a )
BOOL_T InRect( coOrd pos, coOrd rect )
{
- if (pos.x >= 0.0 && pos.x <= rect.x && pos.y >= 0.0 && pos.y <= rect.y)
+ if (pos.x >= 0.0 && pos.x <= rect.x && pos.y >= 0.0 && pos.y <= rect.y) {
return 1;
- else
+ } else {
return 0;
+ }
}
-static BOOL_T IntersectLine( POS_T *fx0, POS_T *fy0, POS_T x1, POS_T y1, POS_T x, POS_T y )
+static BOOL_T IntersectLine( POS_T *fx0, POS_T *fy0, POS_T x1, POS_T y1,
+ POS_T x, POS_T y )
{
POS_T x0=*fx0, y0=*fy0, dx, dy;
BOOL_T rc;
#ifdef TEST
printf(" IntersectLine( P0=[%0.2f %0.2f] P1=[%0.2f %0.2f] X=%0.2f Y=%0.2f\n",
- x0, y0, x1, y1, x, y );
+ x0, y0, x1, y1, x, y );
#endif
dx = x1-x0;
dy = y1-y0;
if (dy==0.0) {
- if (y0 == y)
+ if (y0 == y) {
rc = TRUE;
- else
+ } else {
rc = FALSE;
+ }
} else {
x0 += (y-y0) * dx/dy;
- if (x0 < -EPSILON || x0 > x) {
+ if (x0 < -EPSILON || x0 > (x+EPSILON)) {
rc = FALSE;
} else {
*fx0 = x0;
@@ -533,10 +548,11 @@ static BOOL_T IntersectLine( POS_T *fx0, POS_T *fy0, POS_T x1, POS_T y1, POS_T x
}
}
#ifdef TEST
- if (rc)
+ if (rc) {
printf(" = TRUE [%0.2f %0.2f]\n", *fx0, *fy0 );
- else
+ } else {
printf(" = FALSE\n");
+ }
#endif
return rc;
}
@@ -549,19 +565,18 @@ static void IntersectBox( coOrd *p1, coOrd p0, coOrd size, int x1, int y1 )
{
#ifdef TEST
printf(" IntersectBox( P1=[%0.2f %0.2f] P0=[%0.2f %0.2f] S=[%0.2f %0.2f] X1=%d Y1=%d\n",
- p1->x, p1->y, p0.x, p0.y, size.x, size.y, x1, y1 );
+ p1->x, p1->y, p0.x, p0.y, size.x, size.y, x1, y1 );
#endif
if ( y1!=0 &&
- IntersectLine( &p1->x, &p1->y, p0.x, p0.y, size.x, (y1==-1?(POS_T)0.0:size.y) ))
+ IntersectLine( &p1->x, &p1->y, p0.x, p0.y, size.x,
+ (y1==-1?(POS_T)0.0:size.y) )) {
return;
- else if ( x1!=0 &&
- IntersectLine( &p1->y, &p1->x, p0.y, p0.x, size.y, (x1==-1?(POS_T)0.0:size.x) ))
+ } else if ( x1!=0 &&
+ IntersectLine( &p1->y, &p1->x, p0.y, p0.x, size.y,
+ (x1==-1?(POS_T)0.0:size.x) )) {
return;
-#ifndef WINDOWS
- else
- fprintf(stderr, "intersectBox bogus\n" );
- getchar();
-#endif
+ }
+ printf(" intersectBox bogus\n" );
}
BOOL_T ClipLine( coOrd *fp0, coOrd *fp1, coOrd orig, double angle, coOrd size )
@@ -571,7 +586,7 @@ BOOL_T ClipLine( coOrd *fp0, coOrd *fp1, coOrd orig, double angle, coOrd size )
#ifdef TEST
printf("ClipLine( P0=[%0.2f %0.2f] P1=[%0.2f %0.2f] O=[%0.2f %0.2f] A=%0.2f S=[%0.2f %0.2f]\n",
- p0.x, p0.y, p1.x, p1.y, orig.x, orig.y, angle, size.x, size.y );
+ p0.x, p0.y, p1.x, p1.y, orig.x, orig.y, angle, size.x, size.y );
#endif
Rotate( &p0, orig, -angle );
@@ -586,18 +601,18 @@ BOOL_T ClipLine( coOrd *fp0, coOrd *fp1, coOrd orig, double angle, coOrd size )
------------O-------------+----------
-1,-1 | 0,-1 + 1,-1
*/
- if ( p0.x < 0.0-EPSILON ) x0 = -1;
- else if ( p0.x > size.x+EPSILON ) x0 = 1;
- else x0 = 0;
- if ( p0.y < 0.0-EPSILON ) y0 = -1;
- else if ( p0.y > size.y+EPSILON ) y0 = 1;
- else y0 = 0;
- if ( p1.x < 0.0-EPSILON ) x1 = -1;
- else if ( p1.x > size.x+EPSILON ) x1 = 1;
- else x1 = 0;
- if ( p1.y < 0.0-EPSILON ) y1 = -1;
- else if ( p1.y > size.y+EPSILON ) y1 = 1;
- else y1 = 0;
+ if ( p0.x < 0.0-EPSILON ) { x0 = -1; }
+ else if ( p0.x > size.x+EPSILON ) { x0 = 1; }
+ else { x0 = 0; }
+ if ( p0.y < 0.0-EPSILON ) { y0 = -1; }
+ else if ( p0.y > size.y+EPSILON ) { y0 = 1; }
+ else { y0 = 0; }
+ if ( p1.x < 0.0-EPSILON ) { x1 = -1; }
+ else if ( p1.x > size.x+EPSILON ) { x1 = 1; }
+ else { x1 = 0; }
+ if ( p1.y < 0.0-EPSILON ) { y1 = -1; }
+ else if ( p1.y > size.y+EPSILON ) { y1 = 1; }
+ else { y1 = 0; }
#ifdef TEST
printf(" X0=%d Y0=%d X1=%d Y1=%d\n", x0, y0, x1, y1 );
@@ -627,10 +642,12 @@ BOOL_T ClipLine( coOrd *fp0, coOrd *fp1, coOrd orig, double angle, coOrd size )
}
/* both points without box and cannot intersect */
- if ( (x0==x1 && y0==y1 && x0!=0 && y0!=0) || /* within same sector (but not the middle one) */
- (x0!=0 && x0==x1) || /* both right or left */
- (y0!=0 && y0==y1) ) /* both above or below */
+ if ( (x0==x1 && y0==y1 && x0!=0 && y0!=0)
+ || /* within same sector (but not the middle one) */
+ (x0!=0 && x0==x1) || /* both right or left */
+ (y0!=0 && y0==y1) ) { /* both above or below */
return 0;
+ }
#ifdef TEST
printf(" complex intersection\n");
@@ -638,18 +655,18 @@ BOOL_T ClipLine( coOrd *fp0, coOrd *fp1, coOrd orig, double angle, coOrd size )
/* possible intersection */
if ( y0!=0 &&
- IntersectLine( &p0.x, &p0.y, p1.x, p1.y, size.x, (y0==-1?(POS_T)0.0:size.y) ))
+ IntersectLine( &p0.x, &p0.y, p1.x, p1.y, size.x, (y0==-1?(POS_T)0.0:size.y) )) {
IntersectBox( &p1, p0, size, x1, y1 );
- else if ( y1!=0 &&
- IntersectLine( &p1.x, &p1.y, p0.x, p0.y, size.x, (y1==-1?(POS_T)0.0:size.y) ))
+ } else if ( y1!=0 &&
+ IntersectLine( &p1.x, &p1.y, p0.x, p0.y, size.x, (y1==-1?(POS_T)0.0:size.y) )) {
IntersectBox( &p0, p1, size, x0, y0 );
- else if ( x0!=0 &&
- IntersectLine( &p0.y, &p0.x, p1.y, p1.x, size.y, (x0==-1?(POS_T)0.0:size.x) ))
+ } else if ( x0!=0 &&
+ IntersectLine( &p0.y, &p0.x, p1.y, p1.x, size.y, (x0==-1?(POS_T)0.0:size.x) )) {
IntersectBox( &p1, p0, size, x1, y1 );
- else if ( x1!=0 &&
- IntersectLine( &p1.y, &p1.x, p0.y, p0.x, size.y, (x1==-1?(POS_T)0.0:size.x) ))
+ } else if ( x1!=0 &&
+ IntersectLine( &p1.y, &p1.x, p0.y, p0.x, size.y, (x1==-1?(POS_T)0.0:size.x) )) {
IntersectBox( &p0, p1, size, x0, y0 );
- else {
+ } else {
return 0;
}
p0.x += orig.x; p0.y += orig.y;
@@ -663,59 +680,59 @@ BOOL_T ClipLine( coOrd *fp0, coOrd *fp1, coOrd orig, double angle, coOrd size )
coOrd FindCentroid(int vertexCount, pts_t vertices[] )
{
- coOrd centroid = {0, 0};
- double signedArea = 0.0;
- double x0 = 0.0; // Current vertex X
- double y0 = 0.0; // Current vertex Y
- double x1 = 0.0; // Next vertex X
- double y1 = 0.0; // Next vertex Y
- double a = 0.0; // Partial signed area
-
- // For all vertices except last
- int i=0;
- for (i=0; i<vertexCount-1; ++i)
- {
- x0 = vertices[i].pt.x;
- y0 = vertices[i].pt.y;
- x1 = vertices[i+1].pt.x;
- y1 = vertices[i+1].pt.y;
- a = x0*y1 - x1*y0;
- signedArea += a;
- centroid.x += (x0 + x1)*a;
- centroid.y += (y0 + y1)*a;
- }
-
- // Do last vertex separately to avoid performing an expensive
- // modulus operation in each iteration.
- x0 = vertices[i].pt.x;
- y0 = vertices[i].pt.y;
- x1 = vertices[0].pt.x;
- y1 = vertices[0].pt.y;
- a = x0*y1 - x1*y0;
- signedArea += a;
- centroid.x += (x0 + x1)*a;
- centroid.y += (y0 + y1)*a;
-
- signedArea *= 0.5;
- centroid.x /= (6.0*signedArea);
- centroid.y /= (6.0*signedArea);
-
- return centroid;
+ coOrd centroid = {0, 0};
+ double signedArea = 0.0;
+ double x0 = 0.0; // Current vertex X
+ double y0 = 0.0; // Current vertex Y
+ double x1 = 0.0; // Next vertex X
+ double y1 = 0.0; // Next vertex Y
+ double a = 0.0; // Partial signed area
+
+ // For all vertices except last
+ int i=0;
+ for (i=0; i<vertexCount-1; ++i) {
+ x0 = vertices[i].pt.x;
+ y0 = vertices[i].pt.y;
+ x1 = vertices[i+1].pt.x;
+ y1 = vertices[i+1].pt.y;
+ a = x0*y1 - x1*y0;
+ signedArea += a;
+ centroid.x += (x0 + x1)*a;
+ centroid.y += (y0 + y1)*a;
+ }
+
+ // Do last vertex separately to avoid performing an expensive
+ // modulus operation in each iteration.
+ x0 = vertices[i].pt.x;
+ y0 = vertices[i].pt.y;
+ x1 = vertices[0].pt.x;
+ y1 = vertices[0].pt.y;
+ a = x0*y1 - x1*y0;
+ signedArea += a;
+ centroid.x += (x0 + x1)*a;
+ centroid.y += (y0 + y1)*a;
+
+ signedArea *= 0.5;
+ centroid.x /= (6.0*signedArea);
+ centroid.y /= (6.0*signedArea);
+
+ return centroid;
}
double FindArcCenter(
- coOrd * pos,
- coOrd p0,
- coOrd p1,
- double radius )
+ coOrd * pos,
+ coOrd p0,
+ coOrd p1,
+ double radius )
{
double d;
double a0, a1;
d = FindDistance( p0, p1 )/2.0;
a0 = FindAngle( p0, p1 );
a1 = NormalizeAngle(R2D(asin( d/radius )));
- if (a1 > 180)
+ if (a1 > 180) {
a1 -= 360;
+ }
a0 = NormalizeAngle( a0 + (90.0-a1) );
Translate( pos, p0, a0, radius );
return a1*2.0;
@@ -723,21 +740,24 @@ double FindArcCenter(
#ifdef LATER
-BOOL_T ClipArc( double a0, double a1, coOrd pos, double radius, coOrd orig, double angle, double size )
+BOOL_T ClipArc( double a0, double a1, coOrd pos, double radius, coOrd orig,
+ double angle, double size )
{
i = -1;
state = unknown;
if (pos.y + radius < 0.0 ||
- pos.y - radius > size.y ||
- pos.x + radius < 0.0 ||
- pos.x - radius > size.x )
+ pos.y - radius > size.y ||
+ pos.x + radius < 0.0 ||
+ pos.x - radius > size.x ) {
return 0;
+ }
if (pos.y + radius <= size.y ||
- pos.y - radius >= 0.0 ||
- pos.x + radius <= size.x ||
- pos.x - radius >= 0.0 )
+ pos.y - radius >= 0.0 ||
+ pos.x + radius <= size.x ||
+ pos.x - radius >= 0.0 ) {
return 1;
+ }
if (pos.y + radius > size.y) {
a = R2D(acos( (size.y-pos.y) / radius ) ));
@@ -757,7 +777,8 @@ BOOL_T ClipArc( double a0, double a1, coOrd pos, double radius, coOrd orig, doub
#endif
#ifdef TEST
-void Test( double p0x, double p0y, double p1x, double p1y, double origx, double origy, double angle, double sizex, double sizey )
+void Test( double p0x, double p0y, double p1x, double p1y, double origx,
+ double origy, double angle, double sizex, double sizey )
{
coOrd p0, p1, orig, size, p0a, p1a;
@@ -768,7 +789,7 @@ void Test( double p0x, double p0y, double p1x, double p1y, double origx, double
p0a = p0; p1a = p1;
rc = ClipLine( &p0, &p1, orig, angle, size );
printf("clipLine=%d P0=[%0.3f %0.3f] P1=[%0.3f %0.3f]\n", rc,
- p0.x, p0.y, p1.x, p1.y );
+ p0.x, p0.y, p1.x, p1.y );
}
INT_T Main( INT_T argc, char *argv[] )
@@ -780,8 +801,9 @@ INT_T Main( INT_T argc, char *argv[] )
Exit(1);
}
argv++;
- for (i=0;i<9;i++)
+ for (i=0; i<9; i++) {
a[i] = atof( *argv++ );
+ }
Test( a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8] );
}
diff --git a/app/bin/utility.h b/app/bin/utility.h
index 3686ae8..8e8cf17 100644
--- a/app/bin/utility.h
+++ b/app/bin/utility.h
@@ -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
*/
#ifndef UTILITY_H
@@ -56,10 +56,13 @@ void Translate( coOrd *res, coOrd orig, double a, double d );
double FindAngle( coOrd p0, coOrd p1 );
int PointOnCircle( coOrd * resP, coOrd center, double radius, double angle );
double ConstrainR( double r );
-void FindPos( coOrd * res, double * beyond, coOrd pos, coOrd orig, double angle, double length );
+void FindPos( coOrd * res, double * beyond, coOrd pos, coOrd orig, double angle,
+ double length );
int FindIntersection( coOrd *Pc, coOrd P00, double A0, coOrd P10, double A1 );
-BOOL_T FindArcAndLineIntersections (coOrd *Pc1, coOrd *Pc2, coOrd c, DIST_T r, coOrd p0, coOrd p1);
-BOOL_T FindArcIntersections ( coOrd *Pc, coOrd *Pc2, coOrd center1, DIST_T radius1, coOrd center2, DIST_T radius2);
+BOOL_T FindArcAndLineIntersections (coOrd *Pc1, coOrd *Pc2, coOrd c, DIST_T r,
+ coOrd p0, coOrd p1);
+BOOL_T FindArcIntersections ( coOrd *Pc, coOrd *Pc2, coOrd center1,
+ DIST_T radius1, coOrd center2, DIST_T radius2);
double LineDistance( coOrd *p, coOrd p0, coOrd p1 );
double CircleDistance( coOrd *p, coOrd c, double r, double a0, double a1 );
int PickArcEndPt( coOrd, coOrd, coOrd );
diff --git a/app/bin/validator.c b/app/bin/validator.c
index bd481a5..88b41fe 100644
--- a/app/bin/validator.c
+++ b/app/bin/validator.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 "validator.h"
@@ -36,10 +36,10 @@ enum URLSCANSTATE { STATE_SCHEME, STATE_ENDOFSCHEME, STATE_HIER, STATE_PATH, STA
#define MINURLLENGTH 5 /* 2 chars domain name, dot, 2 chars TLD */
bool
-IsValidURL(char *testString)
+IsValidURL(const char *testString)
{
- char *result = testString;
- char *hostname = testString;
+ const char *result = testString;
+ const char *hostname = testString;
enum URLSCANSTATE state = STATE_SCHEME;
if (!*result) {
diff --git a/app/bin/validator.h b/app/bin/validator.h
index 3706f0f..a49536c 100644
--- a/app/bin/validator.h
+++ b/app/bin/validator.h
@@ -1,4 +1,4 @@
-/** \file validator.h
+/** \file validator.h
* Validators for misc textformats
*/
@@ -17,13 +17,13 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
-*/
-
-#ifndef HAVE_VALIDATOR_H
-#define HAVE_VALIDATOR_H
-
-#include <stdbool.h>
-bool IsValidURL(char *testString);
-
-#endif // !HAVE_VALIDATOR_H
-
+*/
+
+#ifndef HAVE_VALIDATOR_H
+#define HAVE_VALIDATOR_H
+
+#include <stdbool.h>
+bool IsValidURL(const char *testString);
+
+#endif // !HAVE_VALIDATOR_H
+
diff --git a/app/bin/version.h b/app/bin/version.h
index 2b2e6ff..b5fda54 100644
--- a/app/bin/version.h
+++ b/app/bin/version.h
@@ -17,26 +17,26 @@
*
* 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
*/
#ifndef HAVE_VERSION_H
#define HAVE_VERSION_H
#ifdef XTRKCAD_CMAKE_BUILD
- #include "xtrkcad-config.h"
+#include "xtrkcad-config.h"
- #define VERSION XTRKCAD_VERSION
- #define PARAMVERSION XTRKCAD_PARAMVERSION
- #define PARAMVERSIONVERSION XTRKCAD_PARAMVERSIONVERSION
- #define MINPARAMVERSION XTRKCAD_MINPARAMVERSION
+#define VERSION XTRKCAD_VERSION
+#define PARAMVERSION XTRKCAD_PARAMVERSION
+#define PARAMVERSIONVERSION XTRKCAD_PARAMVERSIONVERSION
+#define MINPARAMVERSION XTRKCAD_MINPARAMVERSION
#else
- #define VERSION "4.1.0b1"
- #define PARAMVERSION (10)
- #define PARAMVERSIONVERSION "3.0.0"
- #define MINPARAMVERSION (1)
+#define VERSION "4.1.0b1"
+#define PARAMVERSION (10)
+#define PARAMVERSIONVERSION "3.0.0"
+#define MINPARAMVERSION (1)
#endif
#endif //HAVE_VERSION_H
diff --git a/app/bin/xtrkcad.ico b/app/bin/xtrkcad.ico
index da224a4..457422f 100644
--- a/app/bin/xtrkcad.ico
+++ b/app/bin/xtrkcad.ico
Binary files differ
diff --git a/app/bin/xtrkcad.rc b/app/bin/xtrkcad.rc
index 3fd5784..010c2f2 100644
--- a/app/bin/xtrkcad.rc
+++ b/app/bin/xtrkcad.rc
@@ -1,4 +1,10 @@
-#include <windows.h>
-#include "mswlib.h"
-
-0 ICON xtrkcad.ico
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+101 ICON "xtrkcad.ico"
+
+////////////////////////////////////////////////////////////////////////////
diff --git a/app/cJSON/CMakeLists.txt b/app/cJSON/CMakeLists.txt
new file mode 100644
index 0000000..d4abca3
--- /dev/null
+++ b/app/cJSON/CMakeLists.txt
@@ -0,0 +1,13 @@
+#
+# build the cJSON object library
+
+add_library( cJSON "")
+
+target_sources(cJSON
+ PRIVATE
+ cJSON.c
+ PUBLIC
+ cJSON.h
+)
+
+target_include_directories(cJSON PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) \ No newline at end of file
diff --git a/app/cJSON/LICENSE b/app/cJSON/LICENSE
new file mode 100644
index 0000000..78deb04
--- /dev/null
+++ b/app/cJSON/LICENSE
@@ -0,0 +1,20 @@
+Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/app/help/cJSON.c b/app/cJSON/cJSON.c
index 1733811..3063f74 100644
--- a/app/help/cJSON.c
+++ b/app/cJSON/cJSON.c
@@ -43,6 +43,7 @@
#include <stdlib.h>
#include <limits.h>
#include <ctype.h>
+#include <float.h>
#ifdef ENABLE_LOCALES
#include <locale.h>
@@ -58,9 +59,32 @@
#include "cJSON.h"
/* define our own boolean type */
+#ifdef true
+#undef true
+#endif
#define true ((cJSON_bool)1)
+
+#ifdef false
+#undef false
+#endif
#define false ((cJSON_bool)0)
+/* define isnan and isinf for ANSI C, if in C99 or above, isnan and isinf has been defined in math.h */
+#ifndef isinf
+#define isinf(d) (isnan((d - d)) && !isnan(d))
+#endif
+#ifndef isnan
+#define isnan(d) (d != d)
+#endif
+
+#ifndef NAN
+#ifdef _WIN32
+#define NAN sqrt(-1.0)
+#else
+#define NAN 0.0/0.0
+#endif
+#endif
+
typedef struct {
const unsigned char *json;
size_t position;
@@ -72,16 +96,28 @@ CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void)
return (const char*) (global_error.json + global_error.position);
}
-CJSON_PUBLIC(char *) cJSON_GetStringValue(cJSON *item) {
- if (!cJSON_IsString(item)) {
+CJSON_PUBLIC(char *) cJSON_GetStringValue(const cJSON * const item)
+{
+ if (!cJSON_IsString(item))
+ {
return NULL;
}
return item->valuestring;
}
+CJSON_PUBLIC(double) cJSON_GetNumberValue(const cJSON * const item)
+{
+ if (!cJSON_IsNumber(item))
+ {
+ return (double) NAN;
+ }
+
+ return item->valuedouble;
+}
+
/* This is a safeguard to prevent copy-pasters from using incompatible C and header files */
-#if (CJSON_VERSION_MAJOR != 1) || (CJSON_VERSION_MINOR != 7) || (CJSON_VERSION_PATCH != 8)
+#if (CJSON_VERSION_MAJOR != 1) || (CJSON_VERSION_MINOR != 7) || (CJSON_VERSION_PATCH != 15)
#error cJSON.h and cJSON.c have different versions. Make sure that both have the same.
#endif
@@ -125,7 +161,7 @@ typedef struct internal_hooks
} internal_hooks;
#if defined(_MSC_VER)
-/* work around MSVC error C2322: '...' address of dillimport '...' is not static */
+/* work around MSVC error C2322: '...' address of dllimport '...' is not static */
static void * CJSON_CDECL internal_malloc(size_t size)
{
return malloc(size);
@@ -144,6 +180,9 @@ static void * CJSON_CDECL internal_realloc(void *pointer, size_t size)
#define internal_realloc realloc
#endif
+/* strlen of character literals resolved at compile time */
+#define static_strlen(string_literal) (sizeof(string_literal) - sizeof(""))
+
static internal_hooks global_hooks = { internal_malloc, internal_free, internal_realloc };
static unsigned char* cJSON_strdup(const unsigned char* string, const internal_hooks * const hooks)
@@ -358,6 +397,33 @@ CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number)
return object->valuedouble = number;
}
+CJSON_PUBLIC(char*) cJSON_SetValuestring(cJSON *object, const char *valuestring)
+{
+ char *copy = NULL;
+ /* if object's type is not cJSON_String or is cJSON_IsReference, it should not set valuestring */
+ if (!(object->type & cJSON_String) || (object->type & cJSON_IsReference))
+ {
+ return NULL;
+ }
+ if (strlen(valuestring) <= strlen(object->valuestring))
+ {
+ strcpy(object->valuestring, valuestring);
+ return object->valuestring;
+ }
+ copy = (char*) cJSON_strdup((const unsigned char*)valuestring, &global_hooks);
+ if (copy == NULL)
+ {
+ return NULL;
+ }
+ if (object->valuestring != NULL)
+ {
+ cJSON_free(object->valuestring);
+ }
+ object->valuestring = copy;
+
+ return copy;
+}
+
typedef struct
{
unsigned char *buffer;
@@ -445,10 +511,8 @@ static unsigned char* ensure(printbuffer * const p, size_t needed)
return NULL;
}
- if (newbuffer)
- {
- memcpy(newbuffer, p->buffer, p->offset + 1);
- }
+
+ memcpy(newbuffer, p->buffer, p->offset + 1);
p->hooks.deallocate(p->buffer);
}
p->length = newsize;
@@ -470,6 +534,13 @@ static void update_offset(printbuffer * const buffer)
buffer->offset += strlen((const char*)buffer_pointer);
}
+/* securely comparison of floating-point variables */
+static cJSON_bool compare_double(double a, double b)
+{
+ double maxVal = fabs(a) > fabs(b) ? fabs(a) : fabs(b);
+ return (fabs(a - b) <= maxVal * DBL_EPSILON);
+}
+
/* Render the number nicely from the given item into a string. */
static cJSON_bool print_number(const cJSON * const item, printbuffer * const output_buffer)
{
@@ -477,9 +548,9 @@ static cJSON_bool print_number(const cJSON * const item, printbuffer * const out
double d = item->valuedouble;
int length = 0;
size_t i = 0;
- unsigned char number_buffer[26]; /* temporary buffer to print the number into */
+ unsigned char number_buffer[26] = {0}; /* temporary buffer to print the number into */
unsigned char decimal_point = get_decimal_point();
- double test;
+ double test = 0.0;
if (output_buffer == NULL)
{
@@ -487,7 +558,7 @@ static cJSON_bool print_number(const cJSON * const item, printbuffer * const out
}
/* This checks for NaN and Infinity */
- if ((d * 0) != 0)
+ if (isnan(d) || isinf(d))
{
length = sprintf((char*)number_buffer, "null");
}
@@ -497,14 +568,14 @@ static cJSON_bool print_number(const cJSON * const item, printbuffer * const out
length = sprintf((char*)number_buffer, "%1.15g", d);
/* Check whether the original double can be recovered */
- if ((sscanf((char*)number_buffer, "%lg", &test) != 1) || ((double)test != d))
+ if ((sscanf((char*)number_buffer, "%lg", &test) != 1) || !compare_double((double)test, d))
{
/* If not, print with 17 decimal places of precision */
length = sprintf((char*)number_buffer, "%1.17g", d);
}
}
- /* sprintf failed or buffer overrun occured */
+ /* sprintf failed or buffer overrun occurred */
if ((length < 0) || (length > (int)(sizeof(number_buffer) - 1)))
{
return false;
@@ -967,6 +1038,11 @@ static parse_buffer *buffer_skip_whitespace(parse_buffer * const buffer)
return NULL;
}
+ if (cannot_access_at_index(buffer, 0))
+ {
+ return buffer;
+ }
+
while (can_access_at_index(buffer, 0) && (buffer_at_offset(buffer)[0] <= 32))
{
buffer->offset++;
@@ -996,9 +1072,24 @@ static parse_buffer *skip_utf8_bom(parse_buffer * const buffer)
return buffer;
}
-/* Parse an object - create a new root, and populate. */
CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated)
{
+ size_t buffer_length;
+
+ if (NULL == value)
+ {
+ return NULL;
+ }
+
+ /* Adding null character size due to require_null_terminated. */
+ buffer_length = strlen(value) + sizeof("");
+
+ return cJSON_ParseWithLengthOpts(value, buffer_length, return_parse_end, require_null_terminated);
+}
+
+/* Parse an object - create a new root, and populate. */
+CJSON_PUBLIC(cJSON *) cJSON_ParseWithLengthOpts(const char *value, size_t buffer_length, const char **return_parse_end, cJSON_bool require_null_terminated)
+{
parse_buffer buffer = { 0, 0, 0, 0, { 0, 0, 0 } };
cJSON *item = NULL;
@@ -1006,13 +1097,13 @@ CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return
global_error.json = NULL;
global_error.position = 0;
- if (value == NULL)
+ if (value == NULL || 0 == buffer_length)
{
goto fail;
}
buffer.content = (const unsigned char*)value;
- buffer.length = strlen((const char*)value) + sizeof("");
+ buffer.length = buffer_length;
buffer.offset = 0;
buffer.hooks = global_hooks;
@@ -1082,7 +1173,12 @@ CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value)
return cJSON_ParseWithOpts(value, 0, 0);
}
-#define cjson_min(a, b) ((a < b) ? a : b)
+CJSON_PUBLIC(cJSON *) cJSON_ParseWithLength(const char *value, size_t buffer_length)
+{
+ return cJSON_ParseWithLengthOpts(value, buffer_length, 0, 0);
+}
+
+#define cjson_min(a, b) (((a) < (b)) ? (a) : (b))
static unsigned char *print(const cJSON * const item, cJSON_bool format, const internal_hooks * const hooks)
{
@@ -1189,20 +1285,20 @@ CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON
return (char*)p.buffer;
}
-CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buf, const int len, const cJSON_bool fmt)
+CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format)
{
printbuffer p = { 0, 0, 0, 0, 0, 0, { 0, 0, 0 } };
- if ((len < 0) || (buf == NULL))
+ if ((length < 0) || (buffer == NULL))
{
return false;
}
- p.buffer = (unsigned char*)buf;
- p.length = (size_t)len;
+ p.buffer = (unsigned char*)buffer;
+ p.length = (size_t)length;
p.offset = 0;
p.noalloc = true;
- p.format = fmt;
+ p.format = format;
p.hooks = global_hooks;
return print_value(item, &p);
@@ -1415,6 +1511,10 @@ static cJSON_bool parse_array(cJSON * const item, parse_buffer * const input_buf
success:
input_buffer->depth--;
+ if (head != NULL) {
+ head->prev = current_item;
+ }
+
item->type = cJSON_Array;
item->child = head;
@@ -1555,7 +1655,7 @@ static cJSON_bool parse_object(cJSON * const item, parse_buffer * const input_bu
buffer_skip_whitespace(input_buffer);
if (!parse_string(current_item, input_buffer))
{
- goto fail; /* faile to parse name */
+ goto fail; /* failed to parse name */
}
buffer_skip_whitespace(input_buffer);
@@ -1587,6 +1687,10 @@ static cJSON_bool parse_object(cJSON * const item, parse_buffer * const input_bu
success:
input_buffer->depth--;
+ if (head != NULL) {
+ head->prev = current_item;
+ }
+
item->type = cJSON_Object;
item->child = head;
@@ -1781,7 +1885,7 @@ static cJSON *get_object_item(const cJSON * const object, const char * const nam
current_element = object->child;
if (case_sensitive)
{
- while ((current_element != NULL) && (strcmp(name, current_element->string) != 0))
+ while ((current_element != NULL) && (current_element->string != NULL) && (strcmp(name, current_element->string) != 0))
{
current_element = current_element->next;
}
@@ -1794,6 +1898,10 @@ static cJSON *get_object_item(const cJSON * const object, const char * const nam
}
}
+ if ((current_element == NULL) || (current_element->string == NULL)) {
+ return NULL;
+ }
+
return current_element;
}
@@ -1845,35 +1953,39 @@ static cJSON_bool add_item_to_array(cJSON *array, cJSON *item)
{
cJSON *child = NULL;
- if ((item == NULL) || (array == NULL))
+ if ((item == NULL) || (array == NULL) || (array == item))
{
return false;
}
child = array->child;
-
+ /*
+ * To find the last item in array quickly, we use prev in array
+ */
if (child == NULL)
{
/* list is empty, start new one */
array->child = item;
+ item->prev = item;
+ item->next = NULL;
}
else
{
/* append to the end */
- while (child->next)
+ if (child->prev)
{
- child = child->next;
+ suffix_object(child->prev, item);
+ array->child->prev = item;
}
- suffix_object(child, item);
}
return true;
}
/* Add item to array/object. */
-CJSON_PUBLIC(void) cJSON_AddItemToArray(cJSON *array, cJSON *item)
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToArray(cJSON *array, cJSON *item)
{
- add_item_to_array(array, item);
+ return add_item_to_array(array, item);
}
#if defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 5))))
@@ -1897,7 +2009,7 @@ static cJSON_bool add_item_to_object(cJSON * const object, const char * const st
char *new_key = NULL;
int new_type = cJSON_Invalid;
- if ((object == NULL) || (string == NULL) || (item == NULL))
+ if ((object == NULL) || (string == NULL) || (item == NULL) || (object == item))
{
return false;
}
@@ -1929,35 +2041,35 @@ static cJSON_bool add_item_to_object(cJSON * const object, const char * const st
return add_item_to_array(object, item);
}
-CJSON_PUBLIC(void) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item)
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item)
{
- add_item_to_object(object, string, item, &global_hooks, false);
+ return add_item_to_object(object, string, item, &global_hooks, false);
}
/* Add an item to an object with constant string as key */
-CJSON_PUBLIC(void) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item)
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item)
{
- add_item_to_object(object, string, item, &global_hooks, true);
+ return add_item_to_object(object, string, item, &global_hooks, true);
}
-CJSON_PUBLIC(void) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item)
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item)
{
if (array == NULL)
{
- return;
+ return false;
}
- add_item_to_array(array, create_reference(item, &global_hooks));
+ return add_item_to_array(array, create_reference(item, &global_hooks));
}
-CJSON_PUBLIC(void) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item)
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item)
{
if ((object == NULL) || (string == NULL))
{
- return;
+ return false;
}
- add_item_to_object(object, string, create_reference(item, &global_hooks), &global_hooks, false);
+ return add_item_to_object(object, string, create_reference(item, &global_hooks), &global_hooks, false);
}
CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name)
@@ -2075,7 +2187,7 @@ CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const it
return NULL;
}
- if (item->prev != NULL)
+ if (item != parent->child)
{
/* not the first element */
item->prev->next = item->next;
@@ -2091,6 +2203,12 @@ CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const it
/* first element */
parent->child = item->next;
}
+ else if (item->next == NULL)
+ {
+ /* last element */
+ parent->child->prev = item->prev;
+ }
+
/* make sure the detached item doesn't point anywhere anymore */
item->prev = NULL;
item->next = NULL;
@@ -2138,20 +2256,19 @@ CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const
}
/* Replace array/object items with new ones. */
-CJSON_PUBLIC(void) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem)
+CJSON_PUBLIC(cJSON_bool) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem)
{
cJSON *after_inserted = NULL;
if (which < 0)
{
- return;
+ return false;
}
after_inserted = get_array_item(array, (size_t)which);
if (after_inserted == NULL)
{
- add_item_to_array(array, newitem);
- return;
+ return add_item_to_array(array, newitem);
}
newitem->next = after_inserted;
@@ -2165,6 +2282,7 @@ CJSON_PUBLIC(void) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newit
{
newitem->prev->next = newitem;
}
+ return true;
}
CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement)
@@ -2186,14 +2304,28 @@ CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON
{
replacement->next->prev = replacement;
}
- if (replacement->prev != NULL)
- {
- replacement->prev->next = replacement;
- }
if (parent->child == item)
{
+ if (parent->child->prev == parent->child)
+ {
+ replacement->prev = replacement;
+ }
parent->child = replacement;
}
+ else
+ { /*
+ * To find the last item in array quickly, we use prev in array.
+ * We can't modify the last item's next pointer where this item was the parent's child
+ */
+ if (replacement->prev != NULL)
+ {
+ replacement->prev->next = replacement;
+ }
+ if (replacement->next == NULL)
+ {
+ parent->child->prev = replacement;
+ }
+ }
item->next = NULL;
item->prev = NULL;
@@ -2202,14 +2334,14 @@ CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON
return true;
}
-CJSON_PUBLIC(void) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem)
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem)
{
if (which < 0)
{
- return;
+ return false;
}
- cJSON_ReplaceItemViaPointer(array, get_array_item(array, (size_t)which), newitem);
+ return cJSON_ReplaceItemViaPointer(array, get_array_item(array, (size_t)which), newitem);
}
static cJSON_bool replace_item_in_object(cJSON *object, const char *string, cJSON *replacement, cJSON_bool case_sensitive)
@@ -2227,19 +2359,17 @@ static cJSON_bool replace_item_in_object(cJSON *object, const char *string, cJSO
replacement->string = (char*)cJSON_strdup((const unsigned char*)string, &global_hooks);
replacement->type &= ~cJSON_StringIsConst;
- cJSON_ReplaceItemViaPointer(object, get_object_item(object, string, case_sensitive), replacement);
-
- return true;
+ return cJSON_ReplaceItemViaPointer(object, get_object_item(object, string, case_sensitive), replacement);
}
-CJSON_PUBLIC(void) cJSON_ReplaceItemInObject(cJSON *object, const char *string, cJSON *newitem)
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObject(cJSON *object, const char *string, cJSON *newitem)
{
- replace_item_in_object(object, string, newitem, false);
+ return replace_item_in_object(object, string, newitem, false);
}
-CJSON_PUBLIC(void) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object, const char *string, cJSON *newitem)
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object, const char *string, cJSON *newitem)
{
- replace_item_in_object(object, string, newitem, true);
+ return replace_item_in_object(object, string, newitem, true);
}
/* Create basic types: */
@@ -2276,12 +2406,12 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void)
return item;
}
-CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool b)
+CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool boolean)
{
cJSON *item = cJSON_New_Item(&global_hooks);
if(item)
{
- item->type = b ? cJSON_True : cJSON_False;
+ item->type = boolean ? cJSON_True : cJSON_False;
}
return item;
@@ -2416,6 +2546,7 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count)
}
a = cJSON_CreateArray();
+
for(i = 0; a && (i < (size_t)count); i++)
{
n = cJSON_CreateNumber(numbers[i]);
@@ -2435,6 +2566,10 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count)
p = n;
}
+ if (a && a->child) {
+ a->child->prev = n;
+ }
+
return a;
}
@@ -2471,6 +2606,10 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count)
p = n;
}
+ if (a && a->child) {
+ a->child->prev = n;
+ }
+
return a;
}
@@ -2488,7 +2627,7 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count)
a = cJSON_CreateArray();
- for(i = 0;a && (i < (size_t)count); i++)
+ for(i = 0; a && (i < (size_t)count); i++)
{
n = cJSON_CreateNumber(numbers[i]);
if(!n)
@@ -2507,10 +2646,14 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count)
p = n;
}
+ if (a && a->child) {
+ a->child->prev = n;
+ }
+
return a;
}
-CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char **strings, int count)
+CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char *const *strings, int count)
{
size_t i = 0;
cJSON *n = NULL;
@@ -2543,6 +2686,10 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char **strings, int count)
p = n;
}
+ if (a && a->child) {
+ a->child->prev = n;
+ }
+
return a;
}
@@ -2614,6 +2761,10 @@ CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse)
}
child = child->next;
}
+ if (newitem && newitem->child)
+ {
+ newitem->child->prev = newchild;
+ }
return newitem;
@@ -2626,69 +2777,96 @@ fail:
return NULL;
}
-CJSON_PUBLIC(void) cJSON_Minify(char *json)
+static void skip_oneline_comment(char **input)
{
- unsigned char *into = (unsigned char*)json;
+ *input += static_strlen("//");
- if (json == NULL)
+ for (; (*input)[0] != '\0'; ++(*input))
{
- return;
+ if ((*input)[0] == '\n') {
+ *input += static_strlen("\n");
+ return;
+ }
}
+}
- while (*json)
+static void skip_multiline_comment(char **input)
+{
+ *input += static_strlen("/*");
+
+ for (; (*input)[0] != '\0'; ++(*input))
{
- if (*json == ' ')
- {
- json++;
- }
- else if (*json == '\t')
- {
- /* Whitespace characters. */
- json++;
- }
- else if (*json == '\r')
- {
- json++;
- }
- else if (*json=='\n')
+ if (((*input)[0] == '*') && ((*input)[1] == '/'))
{
- json++;
+ *input += static_strlen("*/");
+ return;
}
- else if ((*json == '/') && (json[1] == '/'))
- {
- /* double-slash comments, to end of line. */
- while (*json && (*json != '\n'))
- {
- json++;
- }
+ }
+}
+
+static void minify_string(char **input, char **output) {
+ (*output)[0] = (*input)[0];
+ *input += static_strlen("\"");
+ *output += static_strlen("\"");
+
+
+ for (; (*input)[0] != '\0'; (void)++(*input), ++(*output)) {
+ (*output)[0] = (*input)[0];
+
+ if ((*input)[0] == '\"') {
+ (*output)[0] = '\"';
+ *input += static_strlen("\"");
+ *output += static_strlen("\"");
+ return;
+ } else if (((*input)[0] == '\\') && ((*input)[1] == '\"')) {
+ (*output)[1] = (*input)[1];
+ *input += static_strlen("\"");
+ *output += static_strlen("\"");
}
- else if ((*json == '/') && (json[1] == '*'))
+ }
+}
+
+CJSON_PUBLIC(void) cJSON_Minify(char *json)
+{
+ char *into = json;
+
+ if (json == NULL)
+ {
+ return;
+ }
+
+ while (json[0] != '\0')
+ {
+ switch (json[0])
{
- /* multiline comments. */
- while (*json && !((*json == '*') && (json[1] == '/')))
- {
+ case ' ':
+ case '\t':
+ case '\r':
+ case '\n':
json++;
- }
- json += 2;
- }
- else if (*json == '\"')
- {
- /* string literals, which are \" sensitive. */
- *into++ = (unsigned char)*json++;
- while (*json && (*json != '\"'))
- {
- if (*json == '\\')
+ break;
+
+ case '/':
+ if (json[1] == '/')
{
- *into++ = (unsigned char)*json++;
+ skip_oneline_comment(&json);
}
- *into++ = (unsigned char)*json++;
- }
- *into++ = (unsigned char)*json++;
- }
- else
- {
- /* All other characters. */
- *into++ = (unsigned char)*json++;
+ else if (json[1] == '*')
+ {
+ skip_multiline_comment(&json);
+ } else {
+ json++;
+ }
+ break;
+
+ case '\"':
+ minify_string(&json, (char**)&into);
+ break;
+
+ default:
+ into[0] = json[0];
+ json++;
+ into++;
}
}
@@ -2798,7 +2976,7 @@ CJSON_PUBLIC(cJSON_bool) cJSON_IsRaw(const cJSON * const item)
CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive)
{
- if ((a == NULL) || (b == NULL) || ((a->type & 0xFF) != (b->type & 0xFF)) || cJSON_IsInvalid(a))
+ if ((a == NULL) || (b == NULL) || ((a->type & 0xFF) != (b->type & 0xFF)))
{
return false;
}
@@ -2835,7 +3013,7 @@ CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * cons
return true;
case cJSON_Number:
- if (a->valuedouble == b->valuedouble)
+ if (compare_double(a->valuedouble, b->valuedouble))
{
return true;
}
diff --git a/app/help/cJSON.h b/app/cJSON/cJSON.h
index 8d45390..92907a2 100644
--- a/app/help/cJSON.h
+++ b/app/cJSON/cJSON.h
@@ -81,7 +81,7 @@ then using the CJSON_API_VISIBILITY flag to "export" the same symbols the way CJ
/* project version */
#define CJSON_VERSION_MAJOR 1
#define CJSON_VERSION_MINOR 7
-#define CJSON_VERSION_PATCH 8
+#define CJSON_VERSION_PATCH 15
#include <stddef.h>
@@ -146,9 +146,11 @@ CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks* hooks);
/* Memory Management: the caller is always responsible to free the results from all variants of cJSON_Parse (with cJSON_Delete) and cJSON_Print (with stdlib free, cJSON_Hooks.free_fn, or cJSON_free as appropriate). The exception is cJSON_PrintPreallocated, where the caller has full responsibility of the buffer. */
/* Supply a block of JSON, and this returns a cJSON object you can interrogate. */
CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value);
+CJSON_PUBLIC(cJSON *) cJSON_ParseWithLength(const char *value, size_t buffer_length);
/* ParseWithOpts allows you to require (and check) that the JSON is null terminated, and to retrieve the pointer to the final byte parsed. */
/* If you supply a ptr in return_parse_end and parsing fails, then return_parse_end will contain a pointer to the error so will match cJSON_GetErrorPtr(). */
CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated);
+CJSON_PUBLIC(cJSON *) cJSON_ParseWithLengthOpts(const char *value, size_t buffer_length, const char **return_parse_end, cJSON_bool require_null_terminated);
/* Render a cJSON entity to text for transfer/storage. */
CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item);
@@ -160,7 +162,7 @@ CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON
/* NOTE: cJSON is not always 100% accurate in estimating how much memory it will use, so to be safe allocate 5 bytes more than you actually need */
CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format);
/* Delete a cJSON entity and all subentities. */
-CJSON_PUBLIC(void) cJSON_Delete(cJSON *c);
+CJSON_PUBLIC(void) cJSON_Delete(cJSON *item);
/* Returns the number of items in an array (or object). */
CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array);
@@ -173,8 +175,9 @@ CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *st
/* For analysing failed parses. This returns a pointer to the parse error. You'll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */
CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void);
-/* Check if the item is a string and return its valuestring */
-CJSON_PUBLIC(char *) cJSON_GetStringValue(cJSON *item);
+/* Check item type and return its value */
+CJSON_PUBLIC(char *) cJSON_GetStringValue(const cJSON * const item);
+CJSON_PUBLIC(double) cJSON_GetNumberValue(const cJSON * const item);
/* These functions check the type of an item */
CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item);
@@ -203,29 +206,30 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void);
/* Create a string where valuestring references a string so
* it will not be freed by cJSON_Delete */
CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string);
-/* Create an object/arrray that only references it's elements so
+/* Create an object/array that only references it's elements so
* they will not be freed by cJSON_Delete */
CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child);
CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child);
-/* These utilities create an Array of count items. */
+/* These utilities create an Array of count items.
+ * The parameter count cannot be greater than the number of elements in the number array, otherwise array access will be out of bounds.*/
CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count);
CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count);
CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count);
-CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char **strings, int count);
+CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char *const *strings, int count);
/* Append item to the specified array/object. */
-CJSON_PUBLIC(void) cJSON_AddItemToArray(cJSON *array, cJSON *item);
-CJSON_PUBLIC(void) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToArray(cJSON *array, cJSON *item);
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);
/* Use this when string is definitely const (i.e. a literal, or as good as), and will definitely survive the cJSON object.
* WARNING: When this function was used, make sure to always check that (item->type & cJSON_StringIsConst) is zero before
* writing to `item->string` */
-CJSON_PUBLIC(void) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item);
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item);
/* Append reference to item to the specified array/object. Use this when you want to add an existing cJSON to a new cJSON, but don't want to corrupt your existing cJSON. */
-CJSON_PUBLIC(void) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
-CJSON_PUBLIC(void) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item);
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item);
-/* Remove/Detatch items from Arrays/Objects. */
+/* Remove/Detach items from Arrays/Objects. */
CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item);
CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which);
CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which);
@@ -235,22 +239,24 @@ CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string)
CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string);
/* Update array items. */
-CJSON_PUBLIC(void) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem); /* Shifts pre-existing items to the right. */
+CJSON_PUBLIC(cJSON_bool) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem); /* Shifts pre-existing items to the right. */
CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement);
-CJSON_PUBLIC(void) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem);
-CJSON_PUBLIC(void) cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);
-CJSON_PUBLIC(void) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object,const char *string,cJSON *newitem);
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem);
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object,const char *string,cJSON *newitem);
/* Duplicate a cJSON item */
CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse);
/* Duplicate will create a new, identical cJSON item to the one you pass, in new memory that will
-need to be released. With recurse!=0, it will duplicate any children connected to the item.
-The item->next and ->prev pointers are always zero on return from Duplicate. */
+ * need to be released. With recurse!=0, it will duplicate any children connected to the item.
+ * The item->next and ->prev pointers are always zero on return from Duplicate. */
/* Recursively compare two cJSON items for equality. If either a or b is NULL or invalid, they will be considered unequal.
* case_sensitive determines if object keys are treated case sensitive (1) or case insensitive (0) */
CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive);
-
+/* Minify a strings, remove blank characters(such as ' ', '\t', '\r', '\n') from strings.
+ * The input pointer json cannot point to a read-only address area, such as a string constant,
+ * but should point to a readable and writable address area. */
CJSON_PUBLIC(void) cJSON_Minify(char *json);
/* Helper functions for creating and adding items to an object at the same time.
@@ -270,6 +276,8 @@ CJSON_PUBLIC(cJSON*) cJSON_AddArrayToObject(cJSON * const object, const char * c
/* helper for the cJSON_SetNumberValue macro */
CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number);
#define cJSON_SetNumberValue(object, number) ((object != NULL) ? cJSON_SetNumberHelper(object, (double)number) : (number))
+/* Change the valuestring of a cJSON_String object, only takes effect when type of object is cJSON_String */
+CJSON_PUBLIC(char*) cJSON_SetValuestring(cJSON *object, const char *valuestring);
/* Macro for iterating over an array or object */
#define cJSON_ArrayForEach(element, array) for(element = (array != NULL) ? (array)->child : NULL; element != NULL; element = element->next)
diff --git a/app/cornu/CMakeLists.txt b/app/cornu/CMakeLists.txt
index b54fc80..4e7e7d3 100644
--- a/app/cornu/CMakeLists.txt
+++ b/app/cornu/CMakeLists.txt
@@ -1,27 +1,29 @@
-PROJECT(cornu)
-
-FILE(GLOB HEADERS *.h)
-
-SET(SOURCES
- bezctx.c
- bezctx_xtrkcad.c
- spiroentrypoints.c
- spiro.c
- )
+project(cornu)
-SET(HEADERS
- spiro.h
- )
-
-
-INCLUDE_DIRECTORIES(${XTrkCAD_BINARY_DIR})
-INCLUDE_DIRECTORIES(${XTrkCAD_SOURCE_DIR})
-INCLUDE_DIRECTORIES(${wlib_SOURCE_DIR}/include)
-INCLUDE_DIRECTORIES(${help_BINARY_DIR})
-
-ADD_LIBRARY(xtrkcad-cornu ${HEADERS} ${SOURCES})
-
-
-
-
-
+add_library(xtrkcad-cornu "")
+
+target_sources(xtrkcad-cornu
+ PRIVATE
+ bezctx.c
+ bezctx_xtrkcad.c
+ spiroentrypoints.c
+ spiro.c
+ bezctx.h
+ bezctx_intf.h
+ zmisc.h
+)
+
+target_sources(xtrkcad-cornu
+ PUBLIC
+ bezctx_xtrkcad.h
+ spiroentrypoints.h
+ spiro.h
+)
+
+target_link_libraries(xtrkcad-cornu
+ PRIVATE
+ xtrkcad-wlib
+ xtrkcad-lib
+)
+
+target_include_directories(xtrkcad-cornu PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
diff --git a/app/cornu/bezctx_xtrkcad.c b/app/cornu/bezctx_xtrkcad.c
index 778e7dd..2e0d8f4 100644
--- a/app/cornu/bezctx_xtrkcad.c
+++ b/app/cornu/bezctx_xtrkcad.c
@@ -72,19 +72,16 @@ bezctx_xtrkcad_lineto(bezctx *z, double x, double y) {
return;
}
DYNARR_APPEND(trkSeg_t,* bc->segsArray,10);
- trkSeg_p seg = &trkSeg(bc->segsArray->cnt-1);
+ trkSeg_p seg = &DYNARR_LAST( trkSeg_t, *bc->segsArray);
seg->u.l.pos[0].x = bc->last_pos.x;
seg->u.l.pos[0].y = bc->last_pos.y;
seg->u.l.pos[1].x = x;
seg->u.l.pos[1].y = y;
seg->u.l.option = 0;
- seg->width = 0.0;
+ seg->lineWidth = 0.0;
seg->color = wDrawColorBlack;
seg->type = SEG_STRTRK;
- if (seg->bezSegs.ptr) MyFree(seg->bezSegs.ptr);
- seg->bezSegs.max =0;
- seg->bezSegs.cnt = 0;
- seg->bezSegs.ptr = NULL;
+ DYNARR_FREE( trkSeg_t, seg->bezSegs );
seg->u.l.angle = FindAngle(seg->u.l.pos[0],seg->u.l.pos[1]);
bc->last_pos.x = x;
bc->last_pos.y = y;
@@ -106,7 +103,7 @@ bezctx_xtrkcad_quadto(bezctx *z, double x1, double y1, double x2, double y2)
return;
}
DYNARR_APPEND(trkSeg_t,* bc->segsArray,10);
- trkSeg_p seg = &trkSeg(bc->segsArray->cnt-1);
+ trkSeg_p seg = &DYNARR_LAST( trkSeg_t, *bc->segsArray);
seg->u.b.pos[0] = bc->last_pos;
seg->u.b.pos[1].x = x1;
seg->u.b.pos[1].y = y1;
@@ -114,13 +111,10 @@ bezctx_xtrkcad_quadto(bezctx *z, double x1, double y1, double x2, double y2)
seg->u.b.pos[2].y = y1;
seg->u.b.pos[3].x = x2;
seg->u.b.pos[3].y = y2;
- seg->width = 0.0;
+ seg->lineWidth = 0.0;
seg->color = wDrawColorBlack;
seg->type = SEG_BEZTRK;
- if (seg->bezSegs.ptr) MyFree(seg->bezSegs.ptr);
- seg->bezSegs.max =0;
- seg->bezSegs.cnt = 0;
- seg->bezSegs.ptr = NULL;
+ DYNARR_FREE( trkSeg_t, seg->bezSegs );
bc->last_pos.x = x2;
bc->last_pos.y = y2;
@@ -143,7 +137,7 @@ static void
return;
}
DYNARR_APPEND(trkSeg_t,* bc->segsArray,10);
- trkSeg_p seg = &trkSeg(bc->segsArray->cnt-1);
+ trkSeg_p seg = &DYNARR_LAST(trkSeg_t, *bc->segsArray);
seg->u.b.pos[0].x = bc->last_pos.x;
seg->u.b.pos[0].y = bc->last_pos.y;
seg->u.b.pos[1].x = x1;
@@ -152,13 +146,10 @@ static void
seg->u.b.pos[2].y = y2;
seg->u.b.pos[3].x = x3;
seg->u.b.pos[3].y = y3;
- seg->width = 0.0;
+ seg->lineWidth = 0.0;
seg->color = wDrawColorBlack;
seg->type = SEG_BEZTRK;
- if (seg->bezSegs.ptr) MyFree(seg->bezSegs.ptr);
- seg->bezSegs.max = 0;
- seg->bezSegs.cnt = 0;
- seg->bezSegs.ptr = NULL;
+ DYNARR_FREE( trkSegs_t, seg->bezSegs );
bc->last_pos.x = x3;
bc->last_pos.y = y3;
@@ -166,12 +157,12 @@ static void
if (bc->draw_spots) {
DYNARR_APPEND(trkSeg_t,* bc->segsArray,10);
- seg = &trkSeg(bc->segsArray->cnt-1);
+ seg = &DYNARR_LAST( trkSeg_t, *bc->segsArray );
seg->type=SEG_FILCRCL;
seg->u.c.center.x = bc->last_pos.x;
seg->u.c.center.y = bc->last_pos.y;
seg->u.c.radius = bc->spot_size;
- seg->width = 0.0;
+ seg->lineWidth = 0.0;
seg->color = wDrawColorGrey40;
}
@@ -208,9 +199,7 @@ new_bezctx_xtrkcad(dynArr_t * segArray, int ends[2], BOOL_T spots, DIST_T spot_s
result->spot_size = spot_size;
result->track = TRUE;
- result->segsArray->cnt =0;
- result->segsArray->ptr =0;
- result->segsArray->max =0;
+ DYNARR_INIT( trkSeg_t, *result->segsArray );
return &result->base;
diff --git a/app/doc/CMakeLists.txt b/app/doc/CMakeLists.txt
index adc21b3..65f5b70 100644
--- a/app/doc/CMakeLists.txt
+++ b/app/doc/CMakeLists.txt
@@ -1,12 +1,21 @@
-PROJECT(doc)
+project(doc)
-CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/intro.but.in ${CMAKE_CURRENT_BINARY_DIR}/intro.but)
-CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/clean-html.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/clean-html.cmake @ONLY)
-CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/hhc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/hhc.cmake @ONLY)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/intro.but.in ${CMAKE_CURRENT_BINARY_DIR}/intro.but)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/hhc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/hhc.cmake @ONLY)
-FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html)
+#
+# Create directory for the html stage
-SET(HALIBUT_SOURCES
+file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html)
+
+add_custom_target(helpsystem)
+set_target_properties(
+ helpsystem
+ PROPERTIES FOLDER HelpDocs
+)
+
+target_sources(helpsystem
+ PRIVATE
${CMAKE_CURRENT_BINARY_DIR}/intro.but
${CMAKE_CURRENT_SOURCE_DIR}/addm.but
${CMAKE_CURRENT_SOURCE_DIR}/changem.but
@@ -22,97 +31,137 @@ SET(HALIBUT_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/view_winm.but
${CMAKE_CURRENT_SOURCE_DIR}/navigation.but
${CMAKE_CURRENT_SOURCE_DIR}/appendix.but
- ${help_BINARY_DIR}/messages.but
+ ${messagefile_BINARY_DIR}/messages.but
${CMAKE_CURRENT_SOURCE_DIR}/upgrade.but
${CMAKE_CURRENT_SOURCE_DIR}/warranty.but
- )
+)
+
+#
+# messages.but is generated in a different directory scope, CMake must not check for existance
+set_source_files_properties(${messagefile_BINARY_DIR}/messages.but
+ PROPERTIES
+ GENERATED True)
# Add a custom command for cleaning the HTML staging directory
-ADD_CUSTOM_TARGET(clean-html
+add_custom_target(clean-html
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
- COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/clean-html.cmake
- )
+ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/clean-html.cmake
+)
# If we're using the GTK back-end, just generate "vanilla" HTML help files for use with gtkhtml
-IF(XTRKCAD_USE_GTK)
+if(XTRKCAD_USE_GTK)
+
+ if (APPLE)
+ target_sources(helpsystem
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}/osxconf.but)
+ else()
+ target_sources(helpsystem
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}/linconf.but)
+ endif()
- IF (APPLE)
- SET(HALIBUT_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/osxconf.but ${HALIBUT_SOURCES})
- ELSE(APPLE)
- SET(HALIBUT_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/linconf.but ${HALIBUT_SOURCES})
- ENDIF(APPLE)
+ get_target_property(halibut_sources helpsystem SOURCES)
- ADD_CUSTOM_COMMAND(
+ add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/html/index.html
- DEPENDS halibut ${HALIBUT_SOURCES}
+ DEPENDS halibut ${halibut_sources}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
- COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/clean-html.cmake
- COMMAND halibut ${HALIBUT_SOURCES}
+ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/clean-html.cmake
+ COMMAND halibut ${halibut_sources}
)
- ADD_CUSTOM_TARGET(help-html ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/html/index.html)
+ add_custom_target(help-html ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/html/index.html msgfiles)
- INSTALL(
+ install(
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}
)
- INSTALL(
+ install(
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/png.d
DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}/html
)
- INSTALL(
+ install(
FILES xtrkcad_lin.css
DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}/html
)
# Copy the help files to the Help bundle if Apple
- IF (APPLE)
- ADD_CUSTOM_COMMAND(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/html/XTrackCAD.helpindex
- DEPENDS help-html ${HALIBUT_SOURCES}
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
- COMMAND hiutil -Cf XTrackCAD.helpindex -gva -e "IndexPage.html" -e "toc.html" ${CMAKE_CURRENT_BINARY_DIR}/html
+ if (APPLE)
+ add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/html/XTrackCAD.helpindex
+ DEPENDS help-html ${halibut_sources}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
+ COMMAND hiutil -Cf XTrackCAD.helpindex -gva -e "IndexPage.html" -e "toc.html" ${CMAKE_CURRENT_BINARY_DIR}/html
)
- ADD_CUSTOM_TARGET(help-index ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/html/XTrackCAD.helpindex)
+ add_custom_target(help-index ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/html/XTrackCAD.helpindex)
- INSTALL(
+ install(
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/
DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}/XTrackCAD.help/Contents/Resources/en.lproj
)
- INSTALL(
+ install(
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/png.d
DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}/XTrackCAD.help/Contents/Resources/en.lproj
)
- INSTALL(
+ install(
FILES xtrkcad_osx.css
DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}/XTrackCAD.help/Contents/Resources/en.lproj/sty
)
- ENDIF(APPLE)
+ endif()
# Otherwise, we're using the Win32 back-end, so generate a compiled HTML help file
-ELSE(XTRKCAD_USE_GTK)
+else()
+ find_package(HTMLHelp)
- SET(HALIBUT_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/chmconf.but ${HALIBUT_SOURCES})
- FILE(GLOB IMAGE_SOURCES png.d/*)
-
- ADD_CUSTOM_COMMAND(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/html/xtrkcad.chm
- DEPENDS halibut ${HALIBUT_SOURCES} ${IMAGE_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/xtrkcad_win.css
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
- COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/clean-html.cmake
- COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/png.d ${CMAKE_CURRENT_BINARY_DIR}/html/png.d
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/xtrkcad_win.css ${CMAKE_CURRENT_BINARY_DIR}/html
- COMMAND halibut ${HALIBUT_SOURCES}
- COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/hhc.cmake
+ if("${HTML_HELP_COMPILER}" STRGREATER "")
+ target_sources(helpsystem
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}/chmconf.but
+ )
+ file(GLOB IMAGE_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/png.d/*)
+
+ #
+ # Use the Microsoft HTML Help Workshop to create a chm file
+ #
+ # Clean the working directory
+ # Copy the image files and the CSS
+ # Create the sources for the Help Workshop using halibut
+ # Build the chm file
+ # Add the chm file to the installation
+
+ add_custom_target(help-chm ALL DEPENDS ${halibut_sources})
+ set_target_properties(
+ help-chm
+ PROPERTIES FOLDER HelpDocs
)
-
- ADD_CUSTOM_TARGET(help-chm ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/html/xtrkcad.chm)
-
- INSTALL(
- FILES ${CMAKE_CURRENT_BINARY_DIR}/html/xtrkcad.chm
- DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}
+ get_target_property(halibut_sources helpsystem SOURCES)
+
+ # hhc exits with non-zero code even on success
+ # workaround is to create an external cmake script that
+ # invokes hhc and handle its specific exit code
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/hhc.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/hhc.cmake"
+ @ONLY)
+
+ add_custom_command(
+ TARGET help-chm
+ DEPENDS halibut helpsystem ${IMAGE_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/xtrkcad_win.css
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
+ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/clean-html.cmake
+ COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/png.d ${CMAKE_CURRENT_BINARY_DIR}/html/png.d
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/xtrkcad_win.css ${CMAKE_CURRENT_BINARY_DIR}/html
+ COMMAND halibut ${halibut_sources}
+ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/hhc.cmake
)
-ENDIF(XTRKCAD_USE_GTK)
+ install(
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/html/xtrkcad.chm
+ DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}
+ )
+ else()
+ message(STATUS "HTML Help Workshop not found! CHM Help will not be created.")
+ endif()
+endif()
diff --git a/app/doc/addm.but b/app/doc/addm.but
index 3ab07ec..a705a26 100644
--- a/app/doc/addm.but
+++ b/app/doc/addm.but
@@ -16,74 +16,74 @@
The \f{Add Menu} has all the actions related to adding track pieces to the layout.
-\dd \i\f{Straight Track} \c{Ctrl+G} - lay straight track pieces of arbitrary lengths
+\dd \i{Straight Track} \c{Ctrl+G} - lay straight track pieces of arbitrary lengths
\u000
-\dd \i\f{Curve Track} - lay curved track pieces using different modes for selecting start and endpoints and radius (\K{cmdCurve}).
+\dd \i{Curve Track} - lay curved track pieces using different modes for selecting start and endpoints and radius (\K{cmdCurve}).
\dd \G{png.d/maddcurve.png}
\u000
-\dd \i\f{Circle Track} \I{Track, Circle} - place a circle of track by selecting radius, tangent and or center (\K{cmdCircle}).
+\dd \i{Circle Track} \I{Track, Circle} - place a circle of track by selecting radius, tangent and or center (\K{cmdCircle}).
\dd \G{png.d/maddcircle.png}
\u000
-\dd \i\f{Parallel} - \I{Parallel Track} \I{Track, Parallel} \I{Parallel Line} \I{Line, Parallel}
+\dd \i{Parallel} - \I{Parallel Track} \I{Track, Parallel} \I{Parallel Line} \I{Line, Parallel}
create parallel track or line to existing flex-track, straight or curved track. (\K{cmdParallel})
\dd \G{png.d/maddparallel.png}
\u000
-\dd \i\f{Predefined Track} \I{Track, Predefined} \c{Ctrl+T} - select a turnout or a piece of fixed track and place on layout.
+\dd \i{Fixed-track} \I{Track, Fixed} \c{Ctrl+T} - select a piece of \f{Fixed-track} and place on layout.
\u000
-\dd \i\f{Hand-laid Turnout} \I{Turnout, Hand-laid} \c{Ctrl+Shift+I} - lay a turnout in place on the layout. (\K{cmdHandLaidTurnout})
+\dd \i{Hand-laid Turnout} \I{Turnout, Hand-laid} \c{Ctrl+Shift+I} - lay a turnout in place on the layout. (\K{cmdHandLaidTurnout})
\u000
-\dd \i\f{Structure} \c{Ctrl+Shift+C} - Add a predefined structure to the layout.
+\dd \i{Structure} \c{Ctrl+Shift+C} - Add a predefined structure to the layout.
\u000
-\dd \i\f{Helix} \c{Ctrl+Shift+H} - Add a helix. (\K{cmdHelix})
+\dd \i{Helix} \c{Ctrl+Shift+H} - Add a helix. (\K{cmdHelix})
\u000
-\dd \i\f{Custom Turntable} \I{Turntable, Custom} \c{Ctrl+Shift+N} - Place a turntable. (\K{cmdTurntable})
+\dd \i{Custom Turntable} \I{Turntable, Custom} \c{Ctrl+Shift+N} - Place a turntable. (\K{cmdTurntable})
\u000
-\dd \i\f{Control Element} - Create a control element.
+\dd \i{Control Element} - Create a control element.
\u000
-\dd \i\f{Block} \I{Control Element, Block} - Create a block. (\K{cmdBlock})
+\dd \i{Block} \I{Control Element, Block} - Create a block. (\K{cmdBlock})
\u000
-\dd \i\f{Switchmotor} \I{Control Element, Switchmotor} - Create a switchmotor. (\K{cmdSwitchmotor})
+\dd \i{Switchmotor} \I{Control Element, Switchmotor} - Create a switchmotor. (\K{cmdSwitchmotor})
\u000
-\dd \i\f{Signal} \I{Control Element, Signal} - Create a signal. (\K{cmdSignal})
+\dd \i{Signal} \I{Control Element, Signal} - Create a signal. (\K{cmdSignal})
\u000
-\dd \i\f{Control} \I{Control Element, Control} - Create a control. (\K{cmdControl})
+\dd \i{Control} \I{Control Element, Control} - Create a control. (\K{cmdControl})
\u000
-\dd \i\f{Sensor} \I{Control Element, Sensor} - Create a sensor. (\K{cmdSensor})
+\dd \i{Sensor} \I{Control Element, Sensor} - Create a sensor. (\K{cmdSensor})
\rule
-\S{cmdCircle} Circle Track
+\S{cmdCircle} \i{Circle Track}
\G{png.d/maddcircle.png}
@@ -122,7 +122,7 @@ You can join to and from circles, after which they become curved tracks.
\rule
-\S2{cmdCircleFixedRadius} Circle Fixed Radius
+\S2{cmdCircleFixedRadius} \i{Circle Fixed Radius}
\G{png.d/bcircl1.png}
@@ -131,7 +131,7 @@ You can join to and from circles, after which they become curved tracks.
\rule
-\S2{cmdCircleTangent} Circle Fixed Tangent
+\S2{cmdCircleTangent} \i{Circle Fixed Tangent}
\G{png.d/bcircl2.png}
@@ -139,7 +139,7 @@ You can join to and from circles, after which they become curved tracks.
\rule
-\S2{cmdCircleCenter} Circle From Center
+\S2{cmdCircleCenter} \i{Circle From Center}
\G{png.d/bcircl3.png}
@@ -147,7 +147,7 @@ You can join to and from circles, after which they become curved tracks.
\rule
-\S{cmdCurve} Curved Track
+\S{cmdCurve} \i{Curved Track}
\G{png.d/maddcurve.png}
@@ -210,7 +210,7 @@ For Beziers and Cornus, the active control point will be drawn in red and the av
\rule
-\S2{cmdCurveEndPt} Curved Track from End Point
+\S2{cmdCurveEndPt} \i{Curved Track from End Point}
\G{png.d/bcurve1.png}
@@ -226,7 +226,7 @@ If Magnetic Snap does not find a end, if \f{SnapGrid} is enabled, the ends will
\rule
-\S2{cmdCurveTangent} Curved track from Tangent
+\S2{cmdCurveTangent} \i{Curved track from Tangent}
\G{png.d/bcurve2.png}
@@ -240,7 +240,7 @@ If Magnetic Snap does not find a end, if \f{SnapGrid} is enabled, the end will s
\rule
-\S2{cmdCurveCenter} Curved Track From Center
+\S2{cmdCurveCenter} \i{Curved Track From Center}
\G{png.d/bcurve3.png}
@@ -253,9 +253,11 @@ If Magnetic Snap does not find a end, if \f{SnapGrid} is enabled, the end will s
\rule
-\S2{cmdCurveChord} Curved Track from Chord
+\S2{cmdCurveChord} \i{Curved Track from Chord}
-\G{png.d/bcurve4.png} (\c{Ctrl+7}) Drag from one endpoint to the other endpoint to form the Chord of the Curve and release. \c{Left-Click} on the center of the track and Drag to form the Curve.
+\G{png.d/bcurve4.png}
+
+(\c{Ctrl+7}) Drag from one endpoint to the other endpoint to form the Chord of the Curve and release. \c{Left-Click} on the center of the track and Drag to form the Curve.
The first end point acts like "CurvedTrack From End". If an exitsing track end is selected, the Chord will only move along line orthogonal to the track.
While the endpoints are being placed, if \f{MagneticSnap} (\K{cmdMagneticSnap}) is enabled, unless \c{Alt} is held down, they will "Snap" to an open track endpoint of the tracks underneath the cursor and you can only drag out the control point aligned to the end of those tracks.
@@ -265,7 +267,7 @@ If Magnetic Snap does not find a end, if \f{SnapGrid} is enabled, the end will s
\rule
-\S2{cmdBezier} Curved Bezier Track
+\S2{cmdBezier} \i{Curved Bezier Track}
\G{png.d/bezier.png}
@@ -280,9 +282,11 @@ If Magnetic Snap does not find a end, if \f{SnapGrid} is enabled, the end will s
\rule
-\S2{cmdCornu} Create Cornu Track
+\S2{cmdCornu} \i{Create Cornu Track}
+
+\G{png.d/bcornu.png}
-\dd \G{png.d/bcornu.png} \c{Left-Click} to place each endpoint on an open track end or just on the layout.
+\dd \c{Left-Click} to place each endpoint on an open track end or just on the layout.
During the move to the click, if \f{MagneticSnap} (\K{cmdMagneticSnap}) is enabled, an anchor will show when the cursor is near an open end point. This can be inhibited with \e{Alt}.
If \f{MagneticSnap} is disabled this will only happen if \e{Alt} is held.
If Magnetic Snap does not find a end, if \f{SnapGrid} is enabled, the end will snap to the nearest grid point unless \f{Alt} is held.
@@ -310,7 +314,7 @@ If the end is not connected, an anchor will enable the end-angle and radius to b
\u000
-\S{cmdHandLaidTurnout} Hand-laid Turnouts
+\S{cmdHandLaidTurnout} \i{Hand-laid Turnouts}
\G{png.d/bhndldto.png}
@@ -335,7 +339,9 @@ Note: the drawing is an approximation to show the location of the \e{Points} and
\rule
-\S{cmdHelix} Helix Track
+\S{cmdHelix} \i{Helix Track}
+
+\G{png.d/bhelix.png}
A helix track is used to change the elevation of track in a restricted space. A helix is drawn as a circle of track, but in 3 dimensions it would resemble a cork screw or the pattern of threads on a bolt.
@@ -359,11 +365,12 @@ You can join to a helix in the same way you join to a circle. However, once joi
A label for the helix is drawn at it's the center. If the elevations are set (either by a Defined Elevation point or connecting to a Defined Elevation point) for the two ends of the helix then the label contains the computed grade and vertical separation between layers as well as the number of turns and total length. The label can be moved or turned off by the Move Label (\K{cmdMoveLabel}) command.
-\rule
+
+\S{cmdParallel} \i{Parallel Track or Line}
\dd \G{png.d/maddparallel.png}
-\S{cmdParallel} Parallel Track or Line
+\rule
You can pick between two Parallel Commands:
@@ -377,7 +384,7 @@ You can pick between two Parallel Commands:
\rule
-\S2{cmdParallelTrack} Parallel Track
+\S2{cmdParallelTrack} \i{Parallel Track}
\G{png.d/bparallel.png}
@@ -405,7 +412,7 @@ These endpoints will be automatically connected.
\rule
-\S2{cmdParallelLine} Parallel Lines
+\S2{cmdParallelLine} \i{Parallel Lines}
\G{png.d/bparalleline.png}
@@ -415,7 +422,7 @@ Select the Track or Line you want to parallel with \c{Left-Click}, and the new p
\rule
-\S{cmdStraight} Straight Track
+\S{cmdStraight} \i{Straight Track}
\G{png.d/bstraigh.png}
@@ -427,11 +434,11 @@ If the Snap Grid (\K{cmdGrid}) is enabled then the endpoints will be constrained
\rule
-\S{cmdStructure} Structure
+\S{cmdStructure} \i{Structure}
\G{png.d/bstruct.png}
-The \f{Structure} command places diagrams of structures (buildings, bridges and other scenic elements) on the layout. The operation is similar to the Turnout (\K{cmdTurnout}) command.
+The \f{Structure} command places diagrams of structures (buildings, bridges and other scenic elements) on the layout. The operation is similar to the Fixed-track (\K{cmdNewFixedTrack}) command.
\G{png.d/strsel.png}
@@ -441,33 +448,33 @@ The \f{Structure Selection} dialog will disappear while dragging on the layout i
See the Hot Bar (\K{cmdHotBar}) command for details on placing Structures on the layout.
-\f{Structures} are placed on the layout in same way as \f{turnouts} except that there is no \e{Active endpoint} and structures do not align with existing tracks.
+\f{Structures} are placed on the layout in same way as \f{Fixed-tracks} except that there is no \e{Active endpoint} and structures do not align with existing tracks.
\rule
-\S{cmdTurnout} Turnouts
+\S{cmdNewFixedTrack} \i{Fixed-track}
\G{png.d/bturnout.png}
-Turnouts (and sectional track) are created by the \f{Turnout} command \I{Created by Turnout Command}. When you select the turnout command, the \f{Turnout Selection} dialog is displayed which contains a list of available turnouts and sectional track for the current scale (\K{cmdLayout}) and a diagram of the selected turnout.
+Fixed-track objects (Turnouts, Sectional Tracks and Grouped Object) are added by the \f{Fixed-track} command, and the \f{Selection} dialog is displayed which contains a list of available turnouts, sectional tracks and grouped objects for the current scale (\K{cmdLayout}) and a diagram of the selected turnout.
You can use the Parameter File Dialog (\K{cmdPrmfile}) to control what turnouts are available.
\G{png.d/turnsel.png}
-Select a turnout from the scrolling list by \c{Left-Click}ing on it. Move to the Layout and \c{Left-Click} where the turnout should be placed. The Turnout will snap to nearby flextracks or open endpoints. By \c{Left-Drag}ing you can move the turnout around. Additional \c{Left-Click}s change the way the turnout is placed.
+Select a turnout from the scrolling list by \c{Left-Click}ing on it. Move to the Layout and \c{Left-Click} where the turnout should be placed. The Turnout will snap to nearby flex-tracks or open endpoints. By \c{Left-Drag}ing you can move the turnout around. Additional \c{Left-Click}s change the way the turnout is placed.
The \f{New} button invokes the Turnout Designer (\K{cmdTurnoutNew}) dialog. This button displays a pop-up-menu list of various types of turnouts and sectional track.
The \f{Turnout Selection} window will disappear while dragging on the layout if the \f{Hide} Check Box on the dialog is set. This is useful if you have a small screen.
-See the Hot Bar (\K{cmdHotBar}) command for details on placing Turnouts on the layout.
+See the Hot Bar (\K{cmdHotBar}) command for details on placing Fixed-tracks on the layout.
\rule
-\S{cmdTurntable} Turntables
+\S{cmdTurntable} \i{Turntables}
\G{png.d/bturntbl.png}
@@ -483,7 +490,7 @@ The \f{Turntable Angle} control on the Preferences (\K{cmdPref}) dialog controls
\rule
-\S{cmdBlock} Block
+\S{cmdBlock} \i{Block}
\G{png.d/bblock.png}
@@ -506,7 +513,7 @@ information, etc.
\rule
-\S{cmdSwitchmotor} Switchmotor
+\S{cmdSwitchmotor} \i{Switchmotor}
\G{png.d/bswitchmotor.png}
@@ -530,7 +537,7 @@ could be code snippets or I/O device address information, etc.
\rule
-\S{cmdSignal} Signal
+\S{cmdSignal} \i{Signal}
\G{png.d/bsignal.png}
@@ -554,9 +561,9 @@ causes the aspect to be displayed.
\rule
-\S{cmdControl} Control
+\S{cmdControl} \i{Control}
-\G{png.d/bControl.png}
+\G{png.d/bcontrol.png}
A control is created by selecting \f{Create Control} from either the Add menu \K{cmdAdd} or
from the hotbar. Use the mouse to select a location (left button) and then
@@ -574,9 +581,9 @@ software to actually effect the state on the control (on or off).
\rule
-\S{cmdSensor} Sensor
+\S{cmdSensor} \i{Sensor}
-\G{png.d/bSensor.png}
+\G{png.d/bsensor.png}
A sensor is created by selecting \f{Create Sensor} from either the Add menu \K{cmdAdd} or
from the hotbar. Use the mouse to select a location (left button) and then
diff --git a/app/doc/appendix.but b/app/doc/appendix.but
index 7c45c4a..ef4d583 100644
--- a/app/doc/appendix.but
+++ b/app/doc/appendix.but
@@ -107,8 +107,6 @@ Menu and sub-menu items are indicated by \e{File>Open}, which means select the \
\f{Edit Box} - an area where you can enter a String, Integer or Floating Point value.
-\f{FlexTrack} - an automatic object on the ToolBar that creates a Cornu Track element
-
\f{Highlighted} - an area on the Canvas which is in inverse-video.
\f{Left-Click} - same as \e{Click}, used in contexts where \e{Right-Click} is also used.
@@ -166,7 +164,21 @@ curves were variously called easements, Talbot or Euler spirals.
\f{Error Message} - an error message displayed in the Status Bar (\K{mainW}) accompanied by a beep.
-\f{Flex-track} - Prefabricated flexible sections of track used on a layout. It usually comes in straight, three-foot-long sections which can be bent or shaped as needed. This term is also used for hand-laid track.
+\#{TODO}
+
+\I{Fixed-track}\f{Fixed-track} -
+These include Turnouts, Sectional tracks and Grouped objects.
+They are defined in Parameter Files (\K{cmdPrmfile}), or created using the \f{Turnout Designer} (\K{cmdTurnoutNew}) or the \f{Group} (\K{cmdGroup}) command.
+They are selected for placement on the layout using the \f{Hot Bar} (\K{cmdHotBar}) or the \f{Fixed-Track} (\K{cmdNewFixedTrack}) dialog.
+They can not be directly altered, but can be decomposed with the \f{Ungroup} (\K{cmdUngroup}) command and some cases trimed (\K{splitDivide}).
+
+\I{Flex-track}\f{Flex-track} -
+Flexible sections of track used on a layout.
+It usually comes in straight, three-foot-long sections which can be bent or shaped as needed.
+These include Straight, Curved, Easements, Cornu and Bezier tracks.
+This term is also used for hand-laid track.
+They are created by invoking the corresponding command and dragging on the layout.
+\f{Easements} (\K{cmdEasement}) are created automatically when joining tracks.
\f{Frog} - the place on a turnout track where one rail crosses the other.
@@ -182,11 +194,10 @@ curves were variously called easements, Talbot or Euler spirals.
\f{Points} - the part of the Turnout that moves to select a path.
-\f{Reverse Curve} - a piece of track which curves in one direction then changes direction without any appreciable length of straight track between the two curves.
-
-\f{S-Curve} - a curve which bends in one direction and then the other, forming an S-like shape.
+\f{S-Curve} - (aka \f{Reverse Curve}) a curve which bends in one direction and then the other, forming an S-like shape, without any appreciable length of straight track between the two curves
\f{Sectional Track} - prefabricated track which cannot be bent, split or changed.
+A type of \f{Fixed-Track}.
\f{Selected Endpoint} - when selecting track for various reasons the selected endpoint is the one closest to the selection point.
@@ -196,6 +207,8 @@ curves were variously called easements, Talbot or Euler spirals.
\f{Turnout} - A piece of track that allows a train to go from one track to another. Called a switch on a real railroad. Referred to by number. For example, a no. 6 turnout spreads one unit for each six units of travel measured from the frog (the point at which two rails join to form a V).
+Turnouts are a type of 'Fixed-track' which includes Sectional Tracks and Grouped Objects.
+
\b In \e{XTrackCAD}, \e{Turnouts} also include sectional Tracks, crossings and forms of prefabricated (non-flex) track.
\f{Turnout Frog} - the place on the turnout track where one rail crosses the other.
@@ -247,7 +260,7 @@ or virtual track circuit in a Tower-LCC or similar device.
\rule
-\A{} Messages and Explanations
+\A{messages} Messages and Explanations
\H{messageType} \i{Message Types}
@@ -265,7 +278,7 @@ or virtual track circuit in a Tower-LCC or similar device.
\u000
-\dd \e{Notices} and \e{Error messages} that might be encounter are listed here with a explanation. The \f{Recent Messages} menu item on the \f{Help} (\K{helpM}) menu contains a list of the most recent messages. Selecting one of the entries presents information on the particular message.
+\dd \e{Notices} and \e{Error messages} that might be encountered are listed here with a explanation. The \f{Recent Messages} menu item on the \f{Help} (\K{helpM}) menu contains a list of the most recent messages. Selecting one of the entries presents information on the particular message.
\u000
diff --git a/app/doc/changem.but b/app/doc/changem.but
index 0e1fc8a..bf8485a 100644
--- a/app/doc/changem.but
+++ b/app/doc/changem.but
@@ -12,31 +12,31 @@
The \f{Change Menu} has all functions related to modifying objects that exist on the layout drawing.
-\dd \i\f{Properties} - sets \e{XTrackCAD} into \e{Describe} mode. Whenever an object is clicked on while in this mode, the \f{Properties} dialog is opened. This dialog allows direct manipulation of settings such as the objects length, position or orientation. (\K{cmdDescribe}).
+\dd \i{Properties} - sets \e{XTrackCAD} into \e{Describe} mode. Whenever an object is clicked on while in this mode, the \f{Properties} dialog is opened. This dialog allows direct manipulation of settings such as the objects length, position or orientation. (\K{cmdDescribe}).
\u000
-\dd \i\f{Select} - sets \e{XTrackCAD} into \e{Select} mode. Whenever an object is clicked on while in this mode, this selection state of this object is reversed. If an object was unselected it becomes selected, and vice versa. To unselect all objects press the ESC key, use \f{Deselect All} from the \f{Edit} (\K{editM}) menu or \f{Deselect All} from the \f{Pop-up} menu (\K{mouseBcmd}). (\K{cmdSelect}).
+\dd \i{Select} - sets \e{XTrackCAD} into \e{Select} mode. Whenever an object is clicked on while in this mode, this selection state of this object is reversed. If an object was unselected it becomes selected, and vice versa. To unselect all objects press the ESC key, use \f{Deselect All} from the \f{Edit} (\K{editM}) menu or \f{Deselect All} from the \f{Pop-up} menu (\K{mouseBcmd}). (\K{cmdSelect}).
\rule
-\dd \i\f{Move} - move selected object(s). (\K{cmdMove}).
+\dd \i{Move} - move selected object(s). (\K{cmdMove}).
\u000
-\dd \i\f{Rotate} - rotate selected object(s). (\K{cmdRotate}).
+\dd \i{Rotate} - rotate selected object(s). (\K{cmdRotate}).
\u000
-\dd \i\f{Flip} - turn selected object(s) over or around. (\K{cmdFlip}).
+\dd \i{Flip} - turn selected object(s) over or around. (\K{cmdFlip}).
\u000
-\dd \i\f{Loosen Tracks} \I{Track, Loosen} - this command reverses the effect of Connect Two Tracks as applied to sectional track.
+\dd \i{Loosen Tracks} \I{Track, Loosen} - this command reverses the effect of Connect Two Tracks as applied to sectional track.
\u000
-\dd \i\f{Modify} - modify an existing track, or lines. (\K{cmdModify}).
+\dd \i{Modify} - modify an existing track, or lines. (\K{cmdModify}).
\u000
@@ -46,13 +46,13 @@ The \f{Change Menu} has all functions related to modifying objects that exist on
\u000
-\dd \i\f{Connect Two Tracks} \I{Track, Connect} - creates a connection between track pieces with an option to slightly move the select piece(s) and the pieces they connect to. (\K{cmdConnect}).
+\dd \i{Connect Two Tracks} \I{Track, Connect} - creates a connection between track pieces with an option to slightly move the select piece(s) and the pieces they connect to. (\K{cmdConnect}).
\u000
\dd \G{png.d/msplit.png}
-\dd \i\f{Split} - the \f{Split} commands are used to divide up tracks (\K{cmdSplitTrack}) or split draw objects (\K{cmdSplitDraw}) or use a second Object to Trim (\K{cmdTrimDraw}).
+\dd \i{Split} - the \f{Split} commands are used to divide up tracks (\K{cmdSplitTrack}) or split draw objects (\K{cmdSplitDraw}) or use a second Object to Trim (\K{cmdTrimDraw}).
The (\K{cmdSplitTrack}) command can be used in one of two ways;
\lcont{
@@ -65,37 +65,37 @@ The (\K{cmdSplitTrack}) command can be used in one of two ways;
}
-\dd \i\f{Move Description} - move the endpoint description of a track piece to another location. (\K{cmdMoveLabel}).
+\dd \i{Move Description} - move the endpoint description of a track piece to another location. (\K{cmdMoveLabel}).
\rule
-\dd \i\f{Raise/Lower Elevations} - raise or lower elevation of selected tracks. (\K{cmdRaiseElev}).
+\dd \i{Raise/Lower Elevations} - raise or lower elevation of selected tracks. (\K{cmdRaiseElev}).
\u000
-\dd \i\f{Elevation} - define an elevation at specified track location (\K{cmdElevation}).
+\dd \i{Elevation} - define an elevation at specified track location (\K{cmdElevation}).
\u000
-\dd \i\f{Profile} - display the elevation profile of a definable stretch of track (\K{cmdProfile}).
+\dd \i{Profile} - display the elevation profile of a definable stretch of track (\K{cmdProfile}).
\u000
-\dd \i\f{Clear Elevations} - remove elevation parameters from selected track(s).
+\dd \i{Clear Elevations} - remove elevation parameters from selected track(s).
\u000
-\dd \i\f{Recompute Elevations} - performs a global re-computation of dynamic elevations. It should not be necessary to issue this command as elevations are recomputed as required.
+\dd \i{Recompute Elevations} - performs a global re-computation of dynamic elevations. It should not be necessary to issue this command as elevations are recomputed as required.
\rule
-\dd \i\f{Change Scale} - change model scale and/or gauge of layout design. (\K{cmdRescale})
+\dd \i{Change Scale} - change model scale and/or gauge of layout design. (\K{cmdRescale})
\rule
\dd \G{png.d/mconvert.png}
-\dd \i\f{Convert} - chnages fixed tracks (Straight, Curve, Joint, Bezier) into a Smooth Cornu or vice versa. (\K{cmdConvert}).
+\dd \i{Convert} - changes flex-tracks (Straight, Curve, Joint, Bezier) into a Smooth Cornu or vice versa. (\K{cmdConvert}).
\rule
@@ -114,6 +114,9 @@ The (\K{cmdSplitTrack}) command can be used in one of two ways;
\b by ratio (by 181.5%).
+If the selected objects have multiple Scales then the 1st From box will display "Multi-Scale".
+If the selected objects are all of one Scale and but have different Gauges then the 2nd From box will display "Multi-Gauge".
+
If resizing by modeling scale then track dimensions, e.g., lengths and radii, will be changed as well. An option is available to disable the resizing of the selected objects.
\rule
@@ -167,11 +170,11 @@ Dependent upon previous selection, the Convert Track button will look like \G{pn
\rule
-\S2{cmdConvertTo} Convert Fixed Track(s) to Cornu(s)
+\S2{cmdConvertTo} Convert flex-track(s) to Cornu(s)
\G{png.d/convertto.png}
-This command will take a pre-selected set of fixed track elements (Straights, Curves, Joint or Bezier) and convert them into a set of Cornu Tracks.
+This command will take a pre-selected set of flex-track elements (Straights, Curves, Joint or Bezier) and convert them into a set of Cornu Tracks.
If there are no selected Tracks, the user can click on a single track.
The Cornu(s) will smoothly pass through all the end points of the selected tracks and smoothly join to the end-points (if any).
@@ -182,7 +185,7 @@ This command is intended to help conversion of track designs that were made befo
\rule
-\S2{cmdConvertFrom} Convert Cornu(s) and Bezier(s) to Fixed Track(s)
+\S2{cmdConvertFrom} Convert Cornu(s) and Bezier(s) to flex-track(s)
\G{png.d/convertfrom.png}
@@ -348,7 +351,7 @@ For detail about;
\u000
\dd Using Normal Easements where tracks are either joined with a straight or a 'simple curve' \k{joinNormalEasment},
-e.g. one which uses a curve in a single direction as opposed to using reverse curves (\K{generalTerms})
+e.g. one which uses a curve in a single direction as opposed to using a S-Curve (\K{generalTerms})
\u000
@@ -1083,7 +1086,7 @@ Move An Object Using Fixed or Specified amounts of X and Y Translation.
A pop-up menu with additional menu items allows you to \f{Move} the selected object(s) through through any amount you specify.
-\G{png.d/mmovevariable.png}
+\G{png.d/mentermove.png}
The \f{Move} command is executed as follows;
@@ -1093,17 +1096,16 @@ The \f{Move} command is executed as follows;
\n \e{Shift+Right-Click} to raise the Move/Rotate menu.
-\lcont{\u000
+\lcont{\u000}
Any amount of precise transalation may be entered by \e{Left-Click}ing the \f{Enter Move...} menu item then entering a desired amount of translation in X and Y in the dialog window that appears.
\u000
-\G{png.d/dmovetranslate.png}
+\G{png.d/dentermove.png}
\u000
-}
\rule
@@ -1141,7 +1143,7 @@ There is a \f{Context Menu} invoked with \e{Right-Click} or \e{Shift plus Right-
Labels can be moved by hovering the "hot spots" or over the attached track object. \e{Left-Drag} will reposition it. Elevation labels can be selected by hovering of thier centers or the end point they refer to.
Note that end points with elevation mode "None" are not selectable.
-\b Cornu, Bezier, Straight, Curve and Joint (Easement) Labels can be moved along the line between the end-points and also laterally.
+\b Cornu, Bezier, Straight, Curve and Joint (Easement) Labels can be moved along the line between the end-points and also laterally.
\lcont{\u000
@@ -1518,7 +1520,7 @@ It gives an idea of the "sharpness" of the curve.
\dd The number of degrees that the curve executes - this number will rise if there are loops in the curve.
-\S3{trackDescribeBezier} Cornu Track Describe Fields
+\S3{trackDescribeBezier} Bezier Track Describe Fields
\dt Ctl Pt
@@ -1954,7 +1956,7 @@ For detail about;
\u000
-\dd Dividing a section of flex track into two connected pieces or trimming a turnout see \K{splitDivide}.
+\dd Dividing a section of flex-track into two connected pieces or trimming a turnout see \K{splitDivide}.
\u000
@@ -2006,7 +2008,7 @@ For detail about;
\S3{splitDivide} Divide Track
-Dividing a section of flex track into two connected pieces;
+Dividing a section of flex-track into two connected pieces;
\n Click the \f{Split Track} button (\G{png.d/bsplit.png}) to activate the \f{Split Track} command.
diff --git a/app/doc/clean-html.cmake b/app/doc/clean-html.cmake
new file mode 100644
index 0000000..3b0c500
--- /dev/null
+++ b/app/doc/clean-html.cmake
@@ -0,0 +1,6 @@
+file(GLOB_RECURSE all_files *)
+
+if(all_files)
+ file(REMOVE ${all_files})
+endif(all_files)
+
diff --git a/app/doc/clean-html.cmake.in b/app/doc/clean-html.cmake.in
deleted file mode 100644
index d3b6908..0000000
--- a/app/doc/clean-html.cmake.in
+++ /dev/null
@@ -1,6 +0,0 @@
-FILE(GLOB_RECURSE ALL_FILES *)
-
-IF(ALL_FILES)
- FILE(REMOVE ${ALL_FILES})
-ENDIF(ALL_FILES)
-
diff --git a/app/doc/drawm.but b/app/doc/drawm.but
index a9555b2..5e27011 100644
--- a/app/doc/drawm.but
+++ b/app/doc/drawm.but
@@ -50,7 +50,7 @@ Some commands display controls on the Status Line (\K{mainW}) to change line wid
\rule
-\S{cmdDrawCircles} Circles and Filled Circles
+\S{cmdDrawCircles} \i{Circles and Filled Circles}
\G{png.d/mdrawcircles.png}
@@ -75,7 +75,7 @@ The \f{Circle Line Width} field is a scaled dimension in inches if >0. If 0 it i
\rule
-\S2{cmdDrawCircleTangent} Draw Circle from Tangent
+\S2{cmdDrawCircleTangent} \i{Draw Circle from Tangent}
\G{png.d/dcircle3.png}
@@ -83,7 +83,7 @@ The \f{Circle Line Width} field is a scaled dimension in inches if >0. If 0 it i
\rule
-\S2{cmdDrawCircleCenter} Draw Circle from Center
+\S2{cmdDrawCircleCenter} \i{Draw Circle from Center}
\G{png.d/dcircle2.png}
@@ -91,7 +91,7 @@ The \f{Circle Line Width} field is a scaled dimension in inches if >0. If 0 it i
\rule
-\S2{cmdDrawFilledCircleTangent} Draw Filled Circle from Tangent
+\S2{cmdDrawFilledCircleTangent} \i{Draw Filled Circle from Tangent}
\G{png.d/dflcrcl3.png}
@@ -99,7 +99,7 @@ The \f{Circle Line Width} field is a scaled dimension in inches if >0. If 0 it i
\rule
-\S2{cmdDrawFilledCircleCenter} Draw Filled Circle from Center
+\S2{cmdDrawFilledCircleCenter} \i{Draw Filled Circle from Center}
\G{png.d/dflcrcl2.png}
@@ -107,7 +107,7 @@ The \f{Circle Line Width} field is a scaled dimension in inches if >0. If 0 it i
\rule
-\S{cmdDrawCurves} Curved Lines
+\S{cmdDrawCurves} \i{Curved Lines}
\G{png.d/mdrawcurve.png}
@@ -148,7 +148,7 @@ To adjust the curve with the mouse, \e{Left-Click} and \e{Left-Drag} an end or a
\rule
-\S2{cmdDrawCurveEndPt} Draw Curve from End Point
+\S2{cmdDrawCurveEndPt} \i{Draw Curve from End Point}
\G{png.d/dcurve1.png}
@@ -161,7 +161,7 @@ suppressed if \f{Alt} is held. The second end will act similarly.
\rule
-\S2{cmdDrawCurveTangent} Draw Curve from Tangent
+\S2{cmdDrawCurveTangent} \i{Draw Curve from Tangent}
\G{png.d/dcurve2.png}
@@ -176,7 +176,7 @@ To complete the command, drag on the red arrows to adjust the curve from the ini
\rule
-\S2{cmdDrawCurveCenter} Draw Curve from Center
+\S2{cmdDrawCurveCenter} \i{Draw Curve from Center}
\G{png.d/dcurve3.png}
@@ -185,7 +185,7 @@ suppressed if \f{Alt} is held.
\rule
-\S2{cmdDrawCurveChord} Draw Curve from Chord
+\S2{cmdDrawCurveChord} \i{Draw Curve from Chord}
\G{png.d/dcurve4.png}
@@ -199,7 +199,7 @@ To complete the command, drag on the red arrows to adjust the curve.
\rule
-\S2{cmdDrawBezierCurve} Draw Bezier Curve
+\S2{cmdDrawBezierCurve} \i{Draw Bezier Curve}
\G{png.d/dbezier.png}
@@ -210,7 +210,7 @@ The first and second ends will act like \K{cmdDrawCurveEndPt} with \f{MagneticSn
\rule
-\S{cmdNote} Note Variants
+\S{cmdNote} \i{Note Variants}
\G{png.d/mnote.png}
@@ -228,7 +228,7 @@ The \f{Note} command allows you to
\rule
-\S2{cmdTextNote} Plain Text
+\S2{cmdTextNote} \i{Text Note}
\G{png.d/bnote.png} \G{png.d/iconnote.png} Click and drag on the Main Canvas (\K{mainW}) to place the note.
@@ -241,7 +241,7 @@ When in \f{Properties} (\K{cmdDescribe}) mode, clicking on a \e{Note} will displ
\rule
-\S2{cmdLinkNote} Weblink
+\S2{cmdLinkNote} \i{Weblink}
\G{png.d/blink.png} \G{png.d/iconlink.png} Similar to text notes you can place a weblink on the layout.
@@ -261,7 +261,7 @@ Double clicking on a weblink icon opens the website in your default browser.
\rule
-\S2{cmdFileNote} Document
+\S2{cmdFileNote} \i{Document}
\G{png.d/bfile.png} \G{png.d/iconfile.png} Similar to text notes you can place a reference to a file on the layout.
@@ -279,7 +279,7 @@ Double clicking on a document reference icon opens the document in the default
\rule
-\S{cmdRuler} Ruler
+\S{cmdRuler} \i{Ruler}
\G{png.d/bruler.png}
@@ -291,7 +291,7 @@ Subsequent clicks on the \f{Ruler} button will hide or display the ruler.
\rule
-\S{cmdAngle} Protractor
+\S{cmdAngle} \i{Protractor}
\G{png.d/bangle.png}
@@ -306,7 +306,7 @@ The points of the \e{Protractor} can be modified using the \f{Modify} (\K{cmdMod
\rule
-\S{cmdDrawShapes} Shapes
+\S{cmdDrawShapes} \i{Draw Shapes}
\G{png.d/mdrawshapes.png}
@@ -342,7 +342,7 @@ Note that \K{cmdModify} can be used on a Polygon or a Polyline after it has been
\rule
-\S2{cmdDrawBox} Draw Box
+\S2{cmdDrawBox} \i{Draw Box}
\G{png.d/dbox.png}
@@ -355,7 +355,7 @@ The \f{Box Line Width} field is a scaled dimension in inches if >0. If 0 it is a
\rule
-\S2{cmdDrawFilledBox} Draw Filled Box
+\S2{cmdDrawFilledBox} \i{Draw Filled Box}
\G{png.d/dfilbox.png}
@@ -365,7 +365,7 @@ The \f{Box Line Width} field is a scaled dimension in inches if >0. If 0 it is a
\rule
-\S2{cmdDrawPolygon} Draw Polygon
+\S2{cmdDrawPolygon} \i{Draw Polygon}
\G{png.d/dpoly.png}
@@ -392,7 +392,7 @@ On the first polygon side this will be at a multiple of 90 degrees to the axes.
\rule
-\S2{cmdDrawFilledPolygon} Draw Filled Polygon
+\S2{cmdDrawFilledPolygon} \i{Draw Filled Polygon}
\G{png.d/dfilbox.png}
@@ -422,9 +422,9 @@ On the first polygon side this will be at a multiple of 90 degrees to the axes.
\rule
-\S2{cmdDrawPolyline} Draw PolyLine
+\S2{cmdDrawPolyline} \i{Draw PolyLine}
-\G{png.d/dpolyline}
+\G{png.d/dpolylin.png}
Before the polygon is started the line width and color can be set.
The \f{Polyline Line Width} field is a scaled dimension in inches if >0. If 0 it is a 1 pixel wide line at all zooms. If the value is negative, it is a scale-independent number of pixels wide.
@@ -459,7 +459,7 @@ On the first polyline segemnt this will be at a multiple of 90 degrees to the ax
\rule
-\S{cmdDrawStraights} Straight Objects
+\S{cmdDrawStraights} \i{Straight Objects}
\G{png.d/mdrawstraight.png}
@@ -473,13 +473,13 @@ Straight Objects are created by a \e{Left+Drag} (\K{windowTerms}) on the layout.
\u000
-\dd (\K{cmdDrawBench}). Creates \i\f{Bench-work} using different types and orientation of lumber.
+\dd (\K{cmdDrawBench}). Creates \i{Bench-work} using different types and orientation of lumber.
\u000
\dd (\K{cmdDrawTableEdge}). Creates a \f{Table Edge}
-\S2{cmdDrawLine} Draw Straight Line
+\S2{cmdDrawLine} \i{Draw Straight Line}
\G{png.d/dline.png}
@@ -500,7 +500,7 @@ Even if \c{Esc} is pressed, the line will already exist, it can be removed with
\rule
-\S2{cmdDrawDimLine} Draw Dimension Line
+\S2{cmdDrawDimLine} \i{Draw Dimension Line}
\G{png.d/ddimlin.png}
@@ -512,11 +512,11 @@ suppressed if \f{Alt} is held.
If \c{Ctrl} is held down during \c{Left+Drag} the line will snap the angle of the new side to a multiple of 90 degrees.
-\S2{cmdDrawBench} Draw Benchwork.
+\S2{cmdDrawBench} \i{Draw Benchwork}
\G{png.d/dbench.png}
-Creates \i\f{Bench-work} using different types and orientation of lumber.
+Creates \i{Bench-work} using different types and orientation of lumber.
\i{Bench-work Notes}
@@ -541,7 +541,7 @@ Pressing \c{Enter} or \c{Tab} with the cursor in these boxes will apply the valu
Pressing \c{Shift+Tab} on the drawing surface will remove the current object and allow a new one to be drawn.
Even if \c{Esc} is pressed, the benchwork will already exist, it can be removed with \f{Undo}.
-\S2{cmdDrawTableEdge} Draw Table Edge
+\S2{cmdDrawTableEdge} \i{Draw Table Edge}
\G{png.d/dtbledge.png}
@@ -560,7 +560,7 @@ Even if \c{Esc} is pressed, the edge will already exist, it can be removed with
\rule
-\S{DrawOrigin} Draw Objects Origin
+\S{DrawOrigin} \i{Draw Objects Origin}
Some objects will a natural rotation point within them. By setting the object origin to this point, subsequent rotation will be about that point and not the layout origin.
This is referred to as a \e{Relative} origin and will be present if the origin is non-zero.
@@ -584,7 +584,7 @@ In Origin Mode (entered using \c{'o'} or the Context Menu, there are certain sho
\dd \c{'m'} Move the Relative Origin to the middle of the shape (centeroid).
-\S{cmdText} Text
+\S{cmdText} \i{Text}
\G{png.d/btext.png}
diff --git a/app/doc/editm.but b/app/doc/editm.but
index 1e1e572..5702321 100644
--- a/app/doc/editm.but
+++ b/app/doc/editm.but
@@ -10,82 +10,86 @@
The \f{Edit Menu} shows commands affecting the \f{Main Canvas} (\K{mainW}).
-\dd \i\f{Undo} - Reverses the last command. Up to the last ten commands can be undone. If there are no commands that can be undone the \f{Undo} item is disabled. The \f{Undo} command can also be invoked by the \f{Undo} button (\K{cmdUndo}).
+\dd \i{Undo} - Reverses the last command. Up to the last ten commands can be undone. If there are no commands that can be undone the \f{Undo} item is disabled. The \f{Undo} command can also be invoked by the \f{Undo} button (\K{cmdUndo}).
\u000
-\dd \i\f{Redo} - Undoes the last Undo command. The \f{Redo} command can also be invoked by the \f{Redo} button (\K{cmdUndo}).
+\dd \i{Redo} - Undoes the last Undo command. The \f{Redo} command can also be invoked by the \f{Redo} button (\K{cmdUndo}).
\u000
-\dd \i\f{Cut} - Moves the selected objects to the clipboard.
+\dd \i{Cut} - Moves the selected objects to the clipboard.
\u000
-\dd \i\f{Copy} - Copies the selected objects to the clipboard.
+\dd \i{Copy} - Copies the selected objects to the clipboard.
\u000
-\dd \i\f{Paste} - Copies the contents of the clipboard to the layout. Using the paste Menu command it will be placed at the center of the screen.
+\dd \i{Paste} - Copies the contents of the clipboard to the layout. Using the paste Menu command it will be placed at the center of the screen.
If the context menu paste is used or the short-cuts \e{Ctrl+v} or \e{Shift+Insert}, the parts will be placed at the cursor position.
Repeated Pastes without moving the cursor result in overlaid copies.
The newly pasted parts are in \f{Selected} state and can easily be moved into place. Any previously selected objects are unselected.
\u000
-\dd \i\f{Delete} - Deletes the selected objects.
+\dd \i{Delete} - Deletes the selected objects.
\u000
-\dd \i\f{Move To Current Layer} - move all selected objects to the current Layer (\K{cmdLayer}).
+\dd \i{Move To Current Layer} - move all selected objects to the current Layer (\K{cmdLayer}).
\u000
-\dd \i\f{Select All} - Selects all objects on the layout.
+\dd \i{Select All} - Selects all objects on the layout.
\u000
-\dd \i\f{Select Current Layer} - selects all objects in the current Layer (\K{cmdLayer}).
+\dd \i{Select Current Layer} - selects all objects in the current Layer (\K{cmdLayer}).
\u000
-\dd \i\f{Select By Index} - selects object by index number (\K{cmdSelectIndex}).
+\dd \i{Select By Index} - selects object by index number (\K{cmdSelectIndex}).
\u000
-\dd \i\f{Deselect All} - unselects all objects on the layout. The same action can be achieved by pressing the ESC key.
+\dd \i{Deselect All} - unselects all objects on the layout. The same action can be achieved by pressing the ESC key.
\u000
-\dd \i\f{Invert Selection} - selects all unselected objects and unselects all previously selected objects.
+\dd \i{Invert Selection} - selects all unselected objects and unselects all previously selected objects.
\u000
-\dd \i\f{Select Stranded Track} - selects all track pieces that are not connected to any other objects. This helps cleaning up a drawing after many changes have been made.
+\dd \i{Select Stranded Track} - selects all track pieces that are not connected to any other objects. This helps cleaning up a drawing after many changes have been made.
\u000
-\dd \i\f{Tunnel}\I{Track, Tunnel} - Hides or reveals selected tracks and adds a tunnel portal symbol where the track passes from one to the other.
+\dd \i{Tunnel}\I{Track, Tunnel} - Hides or reveals selected tracks and adds a tunnel portal symbol where the track passes from one to the other.
\u000
-\dd \i\f{Bridge}\I{Track, Bridge} - Adds parapet symbols to the sides of the track.
+\dd \i{Bridge}\I{Track, Bridge} - Adds or removes parapet symbols and a solid base to the track. The color is selectable (\K{cmdRgbcolor}).
\u000
-\dd \i\f{Ties/No Ties}\I{Track Ties}\I{Track No Ties} - Hides or reveals the ties on selected tracks.
+\dd \i{Roadbed}\I{Track, Roadbed} - Adds or removes solid roadbed under the track. The color is selectable (\K{cmdRgbcolor}).
\u000
-\dd \i\f{Move to Front} - Moves selected object to foreground.
+\dd \i{Ties/No Ties}\I{Track Ties}\I{Track No Ties} - Hides or reveals the ties on selected tracks.
\u000
-\dd \i\f{Move to Back} - Moves selected object to background.
+\dd \i{Move To Front} - Moves selected object to foreground.
\u000
-\dd \i\f{Thin, Medium and Thick Tracks} \I{Thin Tracks}\I{Medium Tracks}
+\dd \i{Move To Back} - Moves selected object to background.
+
+\u000
+
+\dd \i{Thin, Medium and Thick Tracks} \I{Thin Tracks}\I{Medium Tracks}
\I{Thick Tracks}\I{Tracks, Thin}\I{Tracks, Medium}\I{Tracks, Thick}
\I{Track Width}
- set displayed rail width of selected tracks.
@@ -96,7 +100,7 @@ For more information on working with selected objects, see the Select (\K{cmdSel
\rule
-\S{cmdSelectIndex} Select By Index
+\S{cmdSelectIndex} \i{Select By Index}
An input window allows one or more index numbers to be entered. Multiple indexes are seperated by commas.
@@ -108,7 +112,7 @@ If the object is a tunnel object, and the Display Tunnel option is None, it will
When an individual object is selected, its index number is displayed in the Info Message area, another source is the List Parts (\K{cmdEnum}) command with the \f{List Indexes} option.
-\S{cmdAboveBelow} "Move To Front" and "Move to Back"
+\S{cmdAboveBelow} "Move To Front" and "Move to Back" \I{Move To Front} \I{Move To Back}
\G{png.d/btop_bottom.png}
@@ -129,6 +133,10 @@ Additional Shortcut keys perform the following:
\u000
+\dd \c{Ctrl+R} - Redo
+
+\u000
+
\dd \c{Ctrl+C} - Copy
\u000
@@ -146,7 +154,7 @@ Additional Shortcut keys perform the following:
\rule
-\S{cmdDelete} Delete
+\S{cmdDelete} \i{Delete}
\G{png.d/bdelete.png}
@@ -159,7 +167,7 @@ The \e{Delete} key invokes the Delete command.
\rule
-\S{cmdTunnel} Tunnel (Hide Tracks)
+\S{cmdTunnel} \i{Tunnel (Hide Tracks)}
\G{png.d/btunnel.png}
@@ -171,32 +179,50 @@ A tunnel portal is drawn where a hidden track connects with an 'unhidden' track.
The \f{Draw Tunnels} Radio button group on the \f{Options>Display} dialog (\K{cmdDisplay}) controls whether hidden tracks are not drawn, drawn as dashed lines or drawn as normal lines.
+
\rule
+\S{cmdTies} \i{Ties (Draw or Hide Ties)}
-\S{cmdBridge} Bridge (Draw Abutments)
+\G{png.d/bties.png}
-The \f{Bridge} command is used to add abutments to a track (as on an underbridge).
+The \f{Ties} command is used to hide Ties (or reshow them). This may be useful for overlapping track, like dual gauge, or in areas like docks or yards where the track is covered.
-Select the tracks you want to be a bridge. Bridge abutments are drawn alongside the track. You can split (\K{cmdSplitTrack}) a track to shorten the length of the bridge, or to add an extra pier to the drawing.
+Select the tracks you want to hide or show ties for.
-If you perform this action (or use Tunnel) the bridge is removed.
\rule
-\S{cmdTies} Ties (Draw or Hide Ties)
+\S{cmdBridge} \i{Bridge (Draw or Hide Abutments)}
-The \f{Ties} command is used to hide Ties (or reshow them). This may be useful for overlapping track, like dual gauge, or in areas like docks or yards where the track is covered.
+\G{png.d/bbridge.png}
+
+The \f{Bridge} command is used to add abutments to a track (as on an underbridge).
+
+Select the tracks you want to be a bridge. Bridge abutments are drawn alongside the track and a solid layer is added under the ties. You can split (\K{cmdSplitTrack}) a track to shorten the length of the bridge, or to add an extra pier to the drawing.
+
+If you perform this action on an existing bridge (or use Tunnel) the bridge is removed.
-Select the tracks you want to hide or show ties for.
\rule
+\S{cmdRoadbed} \i{Roadbed (Draw or Hide Base)}
+
+\G{png.d/broadbed.png}
+
+The \f{Roadbed} command is used to add a solid color under a track (as roadbed).
-\S{cmdUndo} Undo and Redo
+Select the tracks you want to have roadbed. A solid roadbed layer is drawn under the track.
+
+If you perform this action on existing roadbed (or use Tunnel) the roadbed is removed. The bridge option takes precedence over roadbed.
+
+
+\rule
+
+\S{cmdUndo} Undo and Redo \I{Undo} \I{Redo}
\G{png.d/bgundo.png}
The \f{Undo} and \f{Redo} buttons invoke the same actions as the \f{Edit} menu items. The name of last command will be displayed as the Balloon Help (\K{windowTerms}) for the \e{Undo} button. The name of last undone command will be displayed as the Balloon Help for the \e{Redo} button.
-\rule \ No newline at end of file
+\rule
diff --git a/app/doc/filem.but b/app/doc/filem.but
index 2fa4dba..31d40d3 100644
--- a/app/doc/filem.but
+++ b/app/doc/filem.but
@@ -25,19 +25,19 @@ The \f{File Menu} shows file oriented commands for loading and saving layout fil
\u000
-\dd \f{Export} - Exports the selected objects to a file in \e{XTrackCAD} (*.xti) format. The exported file can then be imported into another layout design. Refer to the Import command listed below.
+\dd \G{png.d/bexport.png} \f{Export} - Exports objects to a file in \e{XTrackCAD} (*.xti) format. If no objects are selected, all objects in visible layers are exported. If objects are selected they are exported. The exported file can then be imported into another layout design. Refer to the Import command listed below.
\u000
-\dd \f{Export to Bitmap} - Creates a bitmap file (\K{cmdOutputbitmap}) of the layout. The bitmap can be saved in either JPEG or PNG format.
+\dd \G{png.d/bexportbmap.png}\f{Export to Bitmap} - Creates a bitmap file (\K{cmdOutputbitmap}) of the layout. The bitmap can be saved in either JPEG or PNG format.
\u000
-\dd \f{Export to DXF} - Exports the selected objects to a file in DXF format (\K{generalTerms}). The exported file can then be imported into other CAD programs.
+\dd \G{png.d/bexportdxf.png}\f{Export to DXF} - Exports objects to a file in DXF format (\K{generalTerms}). If no objects are selected, all objects in visible layers are exported. If objects are selected they are exported. The exported file can then be imported into other CAD programs.
\u000
-\dd \f{Export to SVG} - Exports the selected objects to a file in SVG format. The exported file can then be imported into a vector drawing program like Inkscape
+\dd \G{png.d/bexportsvg.png} \f{Export to SVG} - Exports objects to a file in SVG format. If no objects are selected, all objects in visible layers are exported. If objects are selected they are exported. The exported file can then be imported into a vector drawing program like Inkscape
or used for publishing on the web.
\u000
@@ -46,11 +46,11 @@ or used for publishing on the web.
\u000
-\dd \f{Import} - Displays the file selection dialog which allows selection of an existing \e{XTrackCAD} Import (\K{cmdExport} *.xti) files. This function can be used to transfer parts like a yard design from one layout design to another.
+\dd \G{png.d/bimport.png} \f{Import} - Displays the file selection dialog which allows selection of an existing \e{XTrackCAD} Import (\K{cmdExport} *.xti) files. This function can be used to transfer parts like a yard design from one layout design to another.
\u000
-\dd \f{Import Module} - Displays the file selection dialog which allows selection of an existing \e{XTrackCAD} Import (\K{cmdExport} *.xti) file. The imported parts are put into a empty layer, sets the layer name to the imported filename and sets the layer to be a module - see (\K{cmdLayer}).
+\dd \G{png.d/bimportmod.png} \f{Import Module} - Displays the file selection dialog which allows selection of an existing \e{XTrackCAD} Import (\K{cmdExport} *.xti) file. The imported parts are put into a empty layer, sets the layer name to the imported filename and sets the layer to be a module - see (\K{cmdLayer}).
\u000
\dd \G{png.d/bnew.png} \f{New} - Clears the current layout. In case there are any unsaved changes on the current plan, a warning pop-up will be displayed and you'll have the option to cancel the operation. After that the Layout Options (\K{cmdLayout}) dialog will be opened.
@@ -65,19 +65,19 @@ or used for publishing on the web.
\u000
-\dd \f{Parameter Files} - Displays the \f{Parameter Files} dialog (\K{cmdPrmfile}) to choose parameter files.
+\dd \G{png.d/bparam.png} \f{Parameter Files} - Displays the \f{Parameter Files} dialog (\K{cmdPrmfile}) to choose parameter files.
\u000
-\dd \f{Print Setup} - Shows the Printer Setup Dialog (\K{printSetup}).
+\dd \G{png.d/bsetup.png} \f{Print Setup} - Shows the Printer Setup Dialog (\K{printSetup}).
\u000
-\dd \f{Print} - Invokes the Print command (\K{cmdPrint}).
+\dd \G{png.d/bprint.png} \f{Print} - Invokes the Print command (\K{cmdPrint}).
\u000
-\dd \f{Revert} - Undoes all changes and returns to the last saved layout plan.
+\dd \G{png.d/brevert.png} \f{Revert} - Undoes all changes and returns to the last saved layout plan.
\u000
@@ -85,12 +85,14 @@ or used for publishing on the web.
\u000
-\dd \f{Save As} - This command lets you make a copy of the track plan you are currently working on as an file (.xtc) or an archive (.xtce). It differs from the regular Save command. Save stores your data back into the folder (directory) it originally came from in the same filetype. "Save As" lets you give your plan a different name and/or put it in a different folder on your hard disk and chnage its filetype using the selection box at the bottom of the list of files or by hardcoding the extensions .xtc or .xtce (for an archive).
+\dd \G{png.d/bsaveas.png} \f{Save As} - This command lets you make a copy of the track plan you are currently working on as an file (.xtc) or an archive (.xtce). It differs from the regular Save command. Save stores your data back into the folder (directory) it originally came from in the same filetype. "Save As" lets you give your plan a different name and/or put it in a different folder on your hard disk and chnage its filetype using the selection box at the bottom of the list of files or by hardcoding the extensions .xtc or .xtce (for an archive).
\rule
\S{cmdExport} \i{Export}
+\G{png.d/bexport.png}
+
This menu item displays a file selection dialog where a file name for exported objects can be entered. All selected (\K{cmdSelect}) objects are exported to the file. The export file will have an \c{xti} extension.
\G{png.d/exportfile.png}
@@ -101,14 +103,16 @@ Using the Import command (\k{cmdImport}), an exported file can be imported into
\S{cmdOutputbitmap} \i{Export to Bitmap}
+\G{png.d/bexportbmap.png}
+
This menu item creates a bitmap file of the layout.
\G{png.d/bitmap.png}
The \f{Bitmap} dialog specifies the style and size of the bitmap. The check-boxes (\f{Layout Titles}, \f{Borders}, \f{Centerline of Track} and
-\f{Background Image}) control
+\f{Background Image}) control
whether the Layout Title (\K{cmdLayout}), the borders or the track centerlines are printed on the bitmap. If a background image is used it will be
-printed if the option is set.
+printed if the option is set.
The size of the bitmap is smaller if these are disabled.
@@ -117,9 +121,9 @@ full size for laying out track.
If the Snap Grid (\K{cmdGrid}) is visible then it will be printed on the bitmap.
-The \f{DPI} control specifies the number of pixels per inch in the bitmap. Bitmaps must be less than 32,000 pixels in height or width.
+The \f{DPI} control specifies the number of pixels per inch in the bitmap. Bitmaps must be less than 32,000 pixels in height or width.
The upper value you can enter depends on the size of your trackplan. It is made sure that your bitmap does not exceed these limits.
-Larger values will result in a larger bitmap file.
+Larger values will result in a larger bitmap file.
The bitmap width, height and approximate file size is indicated.
@@ -127,13 +131,15 @@ Note: This command can create a very large file and consume a lot of memory and
Pressing the \f{OK} button invokes a \f{File Save} dialog so you can choose the file name for the Bitmap.
-You can select to create JPEG or PNG files. As a rule of thumb JPEG results in smaller files when you use a backgound image, PNG
+You can select to create JPEG or PNG files. As a rule of thumb JPEG results in smaller files when you use a backgound image, PNG
does so for trackplans without an image background.
\rule
\S{ExportDXF} \i{Export to DXF}
+\G{png.d/bexportdxf.png}
+
This menu item displays a file selection dialog where a file name for exported objects can be entered. All selected (\K{cmdSelect}) objects are exported to the file. The export file will have an \c{xti} extension.
\G{png.d/exportfiledxf.png}
@@ -144,21 +150,27 @@ Exported files can then be imported into other CAD programs.
\S{ExportSVG} \i{Export to SVG}
+\G{png.d/bexportsvg.png}
+
This menu item displays a file selection dialog where a file name for exported objects can be entered. All selected (\K{cmdSelect}) objects are exported to the file. The export file will have an \c{svg} extension.
-Files in SVG format can be used for different purposes.
+\G{png.d/exportfilesvg.png}
+
+Files in SVG format can be used for different purposes.
-\b SVG files can be loaded into many drawing programs. This makes it possible to enhance and resize the image. Vector images have the advantage of
+\b SVG files can be loaded into many drawing programs. This makes it possible to enhance and resize the image. Vector images have the advantage of
allowing lossless resizing.
-\b Most modern browsers support SVG as an image format. So the resulting file can directly be used to publish your plan on the web. By adding a bit of
-Javascript, zooming and panning can be enabled. Appropiate scripts can easily be found using your favorite search engine.
-The generated SVG uses the layout description as a title that is shown by some browser. Also the drawing has an 'id' for manipulation by Javascript.
+\b Most modern browsers support SVG as an image format. So the resulting file can directly be used to publish your plan on the web. By adding a bit of
+Javascript, zooming and panning can be enabled. Appropiate scripts can easily be found using your favorite search engine.
+The generated SVG uses the layout description as a title that is shown by some browser. Also the drawing has an 'id' for manipulation by Javascript.
This id is derived from the filename by removing all spaces and sticking the word 'id' in front. Eg exporting \c{stonega.xtc} the resulting id will be \c{idstonega}.
\rule
-\S{cmdImport} Import
+\S{cmdImport} \i{Import}
+
+\G{png.d/bimport.png}
Importing displays a file selection dialog to specify the file to import.
@@ -168,8 +180,22 @@ After importing the objects from the file, the imported objects are in selected
\rule
+\S{cmdImportM} \i{Import as Module}
+
+\G{png.d/bimportxtc.png}
+
+Importing displays a file selection dialog to specify the file to import as a module.
+
+\G{png.d/importmod.png}
+
+After importing the objects from the file, the imported objects are in selected state and therefore are drawn in red. This allows you to easily move and rotate the imported objects to their final position.
+
+\rule
+
\S{cmdPrmfile} \i{Parameter Files}
+\G{png.d/bparam.png}
+
\e{Parameter Files} contain turnout, sectional track and structure definitions. Loaded Parameter Files are managed with the \f{Parameter Files} dialog.
\G{png.d/dprmfile.png}
@@ -178,11 +204,11 @@ The dialog contains a list of parameter files. Each file is preceded by a color
are usable in the current scale and gauge.
\G{png.d/greendot.png} \G{png.d/greenstar.png} Definitions from this file are a perfect fit for the current layout options. The file has been loaded and will be visible in the \f{HotBar}. For track this means that gauge and scale of the track elements
-are identical to the layout settings. Prototype definitions (Scale "*") are always a perfect fit. Turnouts and Sectional Track must have the same gauge and usually the same scale unless the scale/gauge combination has been defined to fit.
+are identical to the layout settings. Prototype definitions (Scale "*") are always a perfect fit. Turnouts and Sectional Track must have the same gauge and usually the same scale unless the scale/gauge combination has been defined to fit.
OO layouts use HO track as an example.
\G{png.d/yellowdot.png} \G{png.d/yellowstar.png} Definitions from this file can be used with this layout but do not fit perfectly. A typical example is On30 where HO scale track can be used because the
-gauge is the same. But differences in scale may make the track look out of scale. Structures are considered compatible if the scale is within +/-20%. Cars are compatible if the gauge is the same, but the scale can be +/-20%.
+gauge is the same. But differences in scale may make the track look out of scale. Structures are considered compatible if the scale is within +/-20%. Cars are compatible if the gauge is the same, but the scale can be +/-20%.
Exceptions to this can be defined in the scale definitions.
\G{png.d/reddot.png} \G{png.d/redstar.png} This parameter file doesn't contain any usable definitions with current settings. You may want to change the layout options if you want to use elements from
@@ -190,32 +216,32 @@ this file (for example altering the Layout Scale).
\G{png.d/greydot.png} \G{png.d/greystar.png} This file is loaded but hidden.
If it is marked as favorite it will be kept on the
-list between runs.
+list between runs.
Parameter files can be marked as \e{favorite}. The indicator for favorites is a star.
The meaning of the colors isn't changed.
-Loaded definition files that are marked with a yellow or a green indicator appear on the \f{Hot Bar} (\K{cmdHotBar}).
+Loaded definition files that are marked with a yellow or a green indicator appear on the \f{Hot Bar} (\K{cmdHotBar}).
-If you \e{unload} a file the definitions are removed from the selection lists and the \f{Hot Bar}.
+If you \e{unload} a file the definitions are removed from the selection lists and the \f{Hot Bar}.
If the unloaded file was marked as a favorite it can be \e{reloaded} by selecting the \f{Reload} button.
-Files that are still loaded can be \e{reloaded} as well. In that case the old definitions are refreshed and extended by the
-rereading the file. This can be useful if you want to check changes you made by hand-editing a parameter file.
+Files that are still loaded can be \e{reloaded} as well. In that case the old definitions are refreshed and extended by the
+rereading the file. This can be useful if you want to check changes you made by hand-editing a parameter file.
Note that loading a file does not change the existing definitions in the layout. To do that after loading, use \K{cmdRefreshSpecial}.
It is possible to change the state of several files at once. The \f{Select All} button allows you to select all parameter files for the next operation.
-In case unloaded files are marked as favorite, their state will be preserved
+In case unloaded files are marked as favorite, their state will be preserved
between runs of the program.
This makes it possible to keep a list of preferred parameter sets between
runs of XTrackCAD but hide temporary unused files from the hotbar. That
way the hotbar contents can be kept short containing only the currently needed elements.
In order to update the defintion of an already loaded file from disk, you can use the \e{Reload} button. This will reload the file contents - with any changes made.
-It is the equivalent of using \f{Browse} and selecting the file again.
-
+It is the equivalent of using \f{Browse} and selecting the file again.
+
Files can be listed by either their file name or by their contents description.
This is controlled by the \f{Show File Names} check box.
@@ -244,10 +270,10 @@ Using the Search function you can find and select parameter files that are
part of the XTrackCAD installation.
Enter a set of one or more words and select the Search button. Search results are
shown in the list box. Pressing the \i{Clear Filter} button shows the complete
-list again.
+list again.
-You can subset the search to only search for parameter files who start with contents that fit the current Layout Scale using the \f{Fit} Mode.
-The options are "Fit All", "Fit Compatible" and "Fit Exact". Fit Compatible means that structures with
+You can subset the search to only search for parameter files who start with contents that fit the current Layout Scale using the \f{Fit} Mode.
+The options are "Fit All", "Fit Compatible" and "Fit Exact". Fit Compatible means that structures with
Note that the code only looks at the first Turnout, Structure or Car entry to decide on the scale for the entire file.
They will correspond to the color icons on the Parameter Files menu once they are loaded \K{cmdPrmfile} when the same Layout scale is in use.
@@ -258,8 +284,14 @@ parameter list.
\S{cmdPrint} \i{Printing}
+\G{png.d/bprint.png}
+
The \f{Print} command (\f{File>Print}) is used to print all or a portion of the layout.
+\G{png.d/bsetup.png}
+
+The \f{Print Setup} command (\f{File>Print Setup}) is used to set up the printer properties.
+
When the \f{Print} command is selected a grid, which represents each printed page, is drawn on the layout. Pages can be selected or unselected for printing by placing the mouse over a grid section and clicking the left mouse button.
\G{png.d/print.png}
@@ -314,7 +346,7 @@ Whether tracks are printed with one or two lines (representing the center line a
\u000
-\dd \f{Page Numbers} - to help positioning the individual pages the page number is printed in the center of the page in the format (x/y).
+\dd \f{Page Numbers} - to help positioning the individual pages the page number is printed in the center of the page in the format (x/y).
x is the page position from left to right, y in from bottom to top, So (1/1) is the page at the bottom left.
As an additional aid, the numbers of the next pages are printed on each edge.
@@ -385,7 +417,7 @@ If you make printouts in strips at different angles at 1:1 (to follow tracks aro
\rule
-\S{printSetup} Printer Setup
+\S{printSetup} \i{Printer Setup}
\S2{Linux} \i{Linux}
@@ -415,19 +447,19 @@ The \f{Printer Setup} window contains:
\u000
-\e{Note} -
-Printing uses a default of 600ppi. It scales the print and text from a default size of 72dpi.
+\e{Note} -
+Printing uses a default of 600ppi. It scales the print and text from a default size of 72dpi.
This is often the expected value for a standard printer driver to work correctly, but will not work if the driver is not accurately setting the ppi available.
-To override the printer ppi you can use either the configuration file settings for print or environmental variables.
+To override the printer ppi you can use either the configuration file settings for print or environmental variables.
These values are set in the Preferences section.
\u000
-\n Preferences.PrintScale - The floating point ratio of the real printer dpi to 72.
+\n Preferences.PrintScale - The floating point ratio of the real printer dpi to 72.
\n Preferences.PrintTextScale - The floating point ratio of the real printer text support to a dpi of 72. This value has no effect unless PrintScale is set to > 0.0.
\u000
-These values can also be set using environmental variables if the configuration preference values are not set or they are set to <=0.0.
+These values can also be set using environmental variables if the configuration preference values are not set or they are set to <=0.0.
\u000
\n XTRKCADPRINTSCALE
@@ -482,7 +514,7 @@ The \f{Printer Setup} window contains:
\G{png.d/printmargin.png}
-The \f{Printer Margins} dialog allows you to configure the selected printer's margins.
+The \f{Printer Margins} dialog allows you to configure the selected printer's margins.
The margins for the four edges of the printed page are displayed.
The default values are fetched from the Operating System.
@@ -500,7 +532,7 @@ To check your printer's margin:
\u000
-\dd Enable \f{Registration Marks} this prints crosshairs every 6" at scale 1:1.
+\dd Enable \f{Registration Marks} this prints crosshairs every 3" or 10cm at scale 1:1.
\u000
@@ -522,4 +554,8 @@ To check your printer's margin:
Margins values are stored for each printer.
+\u000
+
+You can also load \f{PrinterMarginTest-A4.xtc} or \f{PrinterMarginTest-Letter.xtc} from \f{Help|Examples}. These files have registration lines in the corners to help determine your printer's margins.
+
\rule
diff --git a/app/doc/helpm.but b/app/doc/helpm.but
index b1e3666..38911f3 100644
--- a/app/doc/helpm.but
+++ b/app/doc/helpm.but
@@ -20,6 +20,15 @@ The \f{Help Menu} displays information on various topics. The contents of the me
The \f{Recent Messages} command opens a cascading menu containing recent error messages and notices you have received. Selecting one of them displays additional information about the message (\K{messageList}).
+The \f{Collect Problem Info} command helps you to put together the information and files that might help the developers to analyze and fix possible bugs.
+
+\dd \G{png.d/problemdata.png}
+
+\dd \e{Collect Problem Info}
+
+The command removes userids and other private information from the files. The results are stored in a compressed (zip-) file and placed in the same
+directory as the affected layout file.
+
\dd \G{png.d/dtipofday.png}
\dd \e{Tip of The Day}
@@ -36,7 +45,7 @@ The \f{Examples} command displays the list of included example programs which yo
\rule
-\S{cmdDemo} Demo Mode
+\S{cmdDemo} \i{Demo Mode}
The \f{Demos} menu item, under the \f{Help} (\K{helpM}) menu, shows a cascading menu
of choices to demonstrate various features and commands.
diff --git a/app/doc/hhc.cmake.in b/app/doc/hhc.cmake.in
index e9f0656..947b1da 100644
--- a/app/doc/hhc.cmake.in
+++ b/app/doc/hhc.cmake.in
@@ -1,9 +1,9 @@
-EXECUTE_PROCESS(
+execute_process(
COMMAND "@HTML_HELP_COMPILER@" xtrkcad.hhp
- RESULT_VARIABLE RESULTS
- OUTPUT_VARIABLE OUTPUT
- ERROR_VARIABLE ERROR
+ RESULT_VARIABLE results
+ ERROR_VARIABLE error
)
-MESSAGE("${OUTPUT}")
-MESSAGE("${ERROR}")
+if(NOT "${results}" STREQUAL "1")
+ message(FATAL_ERROR "Creating chm failed! ${error}")
+endif()
diff --git a/app/doc/hotbar.but b/app/doc/hotbar.but
index d6b9cc7..eb4ca76 100644
--- a/app/doc/hotbar.but
+++ b/app/doc/hotbar.but
@@ -8,9 +8,9 @@
\G{png.d/hotbar.png}
-The \e{Hot Bar} starts with a flextrack of the current gauge, and then a scrolling list of all the turnouts, sectional track and structures available through the Turnout (\K{cmdTurnout}) and Structure (\K{cmdStructure}) commands. The Description and/or Part Number under each object can be displayed by enabling the \e{Hot Bar Labels} radio button on the Display (\K{cmdDisplay}) dialog.
+The \e{Hot Bar} starts with a flex-track of the current gauge, and then a scrolling list of all the turnouts, sectional track and structures available through the Turnout (\K{cmdNewFixedTrack}) and Structure (\K{cmdStructure}) commands. The Description and/or Part Number under each object can be displayed by enabling the \e{Hot Bar Labels} radio button on the Display (\K{cmdDisplay}) dialog.
-Only those items taken from files which are in the current scale/gauge are displayed in the HotBar. They are shown in order - A FlexTrack - then the Contents of Files in the File->Parameter Files... List in listed order - and then any Custom objects created in this Layout as listed in the Manage->Custom Defined Parts dialog.
+Only those items taken from files which are in the current scale/gauge are displayed in the HotBar. They are shown in order - A Flex-track - then the Contents of Files in the File->Parameter Files... List in listed order - and then any Custom objects created in this Layout as listed in the Manage->Custom Defined Parts dialog.
The arrow buttons on either side of the \e{Hot bar} move the list one object to the right or left. Holding down the Shift key will move the list by greater amounts. About eight \c{Shift+Click}s are required to move the list through the entire range of objects. Also, pressing the keys \c{1} through \c{9} and \c{0} will cause the \e{Hot Bar} to jump relative spots on the list.
@@ -22,24 +22,24 @@ For \e{Turnouts}, see below for additional details on the \e{Active EndPoint}.
\rule
-\S{Flextrack} FlexTrack
+\S{Flex-track} \i{Flex-track}
-A FlexTrack unit can be placed for convienience on the left-hand side of the HotBar.
+A Flex-track unit can be placed for convienience on the left-hand side of the HotBar.
This is can be hidden by an option in \K{cmdPref}. It can be recognised because it is the only diagonally facing track element and has a label "FLEX".
It is used by \c{Left-Click} selecting it, and \c{Left-Click} clicking on the layout where the first end should be placed, and then \c{Left-Click} for the second end.
-If either end is over an unconnected end and \f{Shift} was not held, the flextrack will be connected to the track and the end angle and radius will be set from the track.
+If either end is over an unconnected end and \f{Shift} was not held, the flex-track will be connected to the track and the end angle and radius will be set from the track.
If an end was not over an unconnected end, it can be manipulated by left dragging out the end angle before releasing.
If the second end is not on a track end, differing end angles will produce a smooth curve, if both ends are unconnected, simply \c{Left-Click} without dragging produces a straight track.
-Once both ends have been defined, the track can then be manipulated like a \k{chgCornu} Cornu Curved Track, by selecting and moving ends, adding and removing "pins" and altering the end anchor angle and radius if the flextrack is not connected at that end.
+Once both ends have been defined, the track can then be manipulated like a \k{chgCornu} Cornu Curved Track, by selecting and moving ends, adding and removing "pins" and altering the end anchor angle and radius if the flex-track is not connected at that end.
If the disconnected end is dragged and the button released while over an open end of another track, it will be connected to it in the manner of a Join with a Cornu easement.
-A FlexTrack will form a Straight Track if the ends have zero radius and are in a line with opposed end angles.
+A Flex-track will form a Straight Track if the ends have zero radius and are in a line with opposed end angles.
If the ends are not aligned but the end angles are opposed it will be a simple S-curve.
It will be a smooth monotonic curve if the ends are not in a line and the end angle lines and chord form a triangle. Otherwise it will be a complex S-curve. .
\rule
-\S{hbStructures} Structures
+\S{hbStructures} \i{Structures}
\e{Structures} are placed on the layout in the same way as turnouts (\K{hbTurnouts}) except no Active EndPoint exists and they do not align with existing track.
@@ -48,7 +48,7 @@ Refer to \K{cmdStructure} for information pertaining to use of the \e{Structure}
\rule
-\S{hbTurnouts} Turnouts
+\S{hbTurnouts} \i{Turnouts}
\e{Turnouts} have an \e{Active EndPoint} (\K{generalTerms}) which is the handle used to position the \e{Turnout}. You can change the \e{Active EndPoint} by a \c{Shift+Left-Click} which causes the next endpoint to become Active.
@@ -58,12 +58,12 @@ If you \c{Left+Drag} a turnout onto a track, the Active EndPoint (\K{generalTerm
\c{Right+Drag} or \c{Ctrl+Left+Drag} (\K{windowTerms}) can be used to rotate the turnout on the layout. \c{Shift+Right-Click} (\K{cmdAcclKeys}) displays a pop-up menu allowing you to rotate the turnout by various angles.
-When you press the \c{Space} key, the turnout is positioned on the layout. Any tracks that are aligned with any of the turnout's endpoints will be connected to the turnout automatically. If you are using the Turnout (\K{cmdTurnout}) command then you can also click the \e{OK} button on the dialog.
+When you press the \c{Space} key, the turnout is positioned on the layout. Any tracks that are aligned with any of the turnout's endpoints will be connected to the turnout automatically. If you are using the Turnout (\K{cmdNewFixedTrack}) command then you can also click the \e{OK} button on the dialog.
If you choose another turnout or change commands after beginning to place a turnout on the layout, the turnout will be created as if it is attached to another track. Otherwise it will be removed.
If the Drawing Scale is smaller or equal to the Label Scale (\K{cmdDisplay}) then Turnouts will be labeled with their description when drawn. The individual labels can be can be turned off by the Move Description(\K{cmdMoveLabel}) command, or all Turnout labels can be disabled by using the Display (\K{cmdDisplay}) dialog. As well, the length of any connected Flex-track will be indicated at each endpoint.
-Refer to \K{cmdTurnout} for information pertaining to use of the \e{Turnout} dialog.
+Refer to \K{cmdNewFixedTrack} for information pertaining to use of the \e{Turnout} dialog.
\rule
diff --git a/app/doc/intro.but.in b/app/doc/intro.but.in
index 90109cc..2a64c51 100644
--- a/app/doc/intro.but.in
+++ b/app/doc/intro.but.in
@@ -27,14 +27,10 @@ Copyright 2020, Martin Fischer, Adam Richards and Dave Bullis
\IM{Easements}{Easements and Sectional Track} Easements
-\IM{Export}{Export to Bitmap}{Export to DXF} Export
-
\IM{Window Terms}{XTrackCAD Terms} Glossary
\IM{Install directory}{Linux Installation}{Microsoft Windows Installation} Installation
-\IM{Copying and Distribution}{GNU General Public License} License
-
\IM{Add Menu}{File Menu}{Edit Menu}{View Menu}{Change Menu}{Draw Menu}{Manage Menu}{Options Menu} Menus
\IM{Entering Values}{Keyboard Shortcuts}{Main Window Overview}{Map Window}{Mouse Actions}{Shortcut Keys}{Typographic Conventions} Navigation
@@ -43,8 +39,6 @@ Copyright 2020, Martin Fischer, Adam Richards and Dave Bullis
\IM{Additional Shortcut Keys}{Hot Bar}{Keyboard Shortcuts}{Main Drawing Canvas}{Mouse Actions}{Shortcut Keys} Shortcut Keys
-\IM{Created by Turnout Command}{Easements and Sectional Track} Sectional Track
-
\# >>>>>>>>>> Manual Begin's Here <<<<<<<<<<
\title \e{XTrackCAD} User's Manual
@@ -112,7 +106,7 @@ Be sure to visit the project web page for latest news and updates: \W{http://www
\e{XTrackCAD} was designed to operate in a similar way to pencil and paper: You can draw tracks by dragging the mouse, you select and place turnout "templates" anywhere on existing tracks, and you can use fixed radii for initial design.
-But extra capabilities have been added that give more power by using FlexTracks (Cornu) you have tracks that automatically redraw as you drag turnouts around, creating smooth curves, you can zoom in and out, and of course, undo and deleting tracks are easier!
+But extra capabilities have been added that give more power by using Flex-tracks (Cornu) you have tracks that automatically redraw as you drag turnouts around, creating smooth curves, you can zoom in and out, and of course, undo and deleting tracks are easier!
You don't have to be an expert CAD user to make the most of \e{XTrackCAD} but the program will ensure that dimensions, radii and angles are accurate.
@@ -160,7 +154,7 @@ On-line demonstrations show the actual operation of many of the program's featur
\u000
-\dd The Cornu flextrack features create dynamically variable tracks that optimise the curvature of tracks to ensure a protypical appearance. They alter as the other tracks are moved just as flextrack will in the 12 inches to the foot world!
+\dd The Cornu flex-track features create dynamically variable tracks that optimise the curvature of tracks to ensure a protypical appearance. They alter as the other tracks are moved just as flex-track will in the 12 inches to the foot world!
\u000
@@ -694,6 +688,15 @@ Defaults are no modules are logged and loglevel is 1 if omitted from logonctrol
\dd set logfile, only needed in conjunction with the debug option.
+\u000
+
+\dt \c{T}
+
+\dd Runs all Regression tests (Demos) and exits with 0 if all are successful or with 1 if there any failures.
+Regression progress and failures are logged to stdout (Linux and Mac OSX) or xtclog.txt (Windows).
+
+\u000
+
\dt \c{V}
\dd Display the xtrkcad version and exit(0).
diff --git a/app/doc/managem.but b/app/doc/managem.but
index 2a835c3..080a81e 100644
--- a/app/doc/managem.but
+++ b/app/doc/managem.but
@@ -55,7 +55,7 @@ The \f{Manage Menu} shows commands affecting the \f{Main Canvas} (\K{mainW}).
\rule
-\S{cmdCarinv} Car Inventory
+\S{cmdCarinv} \i{Car Inventory}
This dialog is used to manage your list of cars and locomotives.
@@ -65,13 +65,16 @@ The main part of this dialog contains a detailed list of each car and locomotive
Cars are placed on the layout by using the \f{Train Simulation} (\K{cmdTrain}) command.
-The \f{Find} button will center the \f{Main Window} (\K{mainW}) on the selected car. This button is only enabled for cars which are on the Layout (indicated by \f{Layout} in the Location column). If the car on a track that is hidden and \f{Trains on Hidden Track} (\K{cmdDisplay}) is set to \f{Hide}, then the car (and any attached cars) will be made visible.
+The \f{Find} button will center the \f{Main Window} (\K{mainW}) on the selected car. This button is only enabled for cars which are on the Layout (indicated by co-ordinates in the Location column). If the car on a track that is hidden and \f{Trains on Hidden Track} (\K{cmdDisplay}) is set to \f{Hide}, then the car (and any attached cars) will be made visible.
The \f{Edit} button invokes the \f{Car} dialog (\K{cmdCarpart}) to modify the selected car. This button is disabled if more than one (or no) car is selected or if the selected car is on the Layout.
The \f{Add} button is to add a new Car. Refer to \K{faqsPrototype} if an error occurs when attempting to add inventory to this list.
-The \f{Delete} button removes the selected cars from your inventory. This button is disabled if any of the selected cars are on the layout.
+The \f{Delete|Shelve} button serves two functions:
+If all selected cars are on the layout then this button shows \f{Shelve} and it moves them from the layout and returns them to the \f{Shelf}.
+If all selected cars are on the \f{Shelf} then this button shows \f{Delete} and they will be deleted from the Inventory.
+Otherwise, the button is blank and disabled.
The \f{Import} and \f{Export} buttons read and write a \e{Comma-Separated-Value (CSV)} file. This file format can be read and written by many applications. It can be used to transfer car inventory data between different applications. This file contains the following columns (the first four are required when Importing):
@@ -117,7 +120,17 @@ The \f{Import} and \f{Export} buttons read and write a \e{Comma-Separated-Value
\u000
-\dd \e{Options} - 2 (Locomotives), 4 (Body Mounted Couplers)
+\dd \e{Options} - bit map of
+
+\lcont{
+
+\b 0x0001 - Body Mounted Couplers
+
+\b 0x0002 - Locomotive
+
+\b Other bits can be ignored
+
+}
\u000
@@ -125,7 +138,7 @@ The \f{Import} and \f{Export} buttons read and write a \e{Comma-Separated-Value
\u000
-\dd \e{Color} - encoded as (Red * 65535 + Green * 256 + Blue)
+\dd \e{Color} - encoded as (Red * 65536 + Green * 256 + Blue)
\u000
@@ -159,7 +172,7 @@ The \f{List} button creates a text file listing your inventory.
\rule
-\S2{cmdCarpart} Car Item Dialog
+\S2{cmdCarpart} \i{Car Item Dialog}
This dialog is invoked from the \f{Car Inventory} (\K{cmdCarinv}) and the \f{Custom Management} (\K{cmdCustmgm}) dialogs.
@@ -207,7 +220,7 @@ The dialog contains:
\rule
-\S2{carpart} \f{Car Part Dialog}
+\S2{carpart} \i{Car Part Dialog}
This dialog is similar the the \f{Car Item} dialog except that the \f{Car Item Information} section is not displayed. The \f{Manufacturer} Drop Down List is editable so you can enter a new manufacturer, and you must enter a \f{Part Number}. If you are adding a new car part, the \f{Part Number} field will be incremented (if it is a numeric value) so you can enter a number of car parts.
@@ -254,7 +267,7 @@ See NMRA TN-7 Curved Track Centerline and Obstacle Clearance Calculation Methodo
\rule
-\S2{carprototype} \f{Car Prototype Dialog}
+\S2{carprototype} \i{Car Prototype Dialog}
This dialog is used to create or edit prototype definitions.
@@ -278,7 +291,7 @@ Unlike the other dialogs, dimensions in this dialog are in prototype units. Whe
\rule
-\S{cmdCustmgm} Custom Management
+\S{cmdCustmgm} \i{Custom Management}
The \f{Custom Management} dialog allows you change the properties of turnouts, sectional track, structures, car parts and prototypes you have designed with the \f{Turnout Designer} (\K{cmdTurnoutNew}), \f{Group} (\K{cmdGroup}) or \f{Car} (\K{cmdCarpart}) commands. You can also move selected objects to a \f{Parameter File} (\K{cmdPrmfile}).
@@ -304,7 +317,7 @@ The \f{New} buttons invokes the Car (\K{cmdCarpart}) dialog to create a new \f{C
\rule
-\S{cmdContmgm} Layout Control Elements Dialog
+\S{cmdContmgm} \i{Layout Control Elements Dialog}
This dialog is used to manage layout control elements (blocks, switchmotors, and signals).
@@ -334,7 +347,7 @@ either from their Hotbar menus or from the Add menu.
The \f{Edit} button allows for editing a control element. And the \f{Delete} button
deletes the selected element(s).
-\S{cmdGroup} Group Dialog
+\S{cmdGroup} \i{Group Dialog}
The \f{Group} command combines the selected (\K{cmdSelect}) Lines and Shapes (\K{cmdDraw}) to create structures (\K{cmdHotBar}). You can give the structure (\K{cmdHotBar}) a title consisting of Manufacturer, Description and Part Number on the \f{Group} dialog.
@@ -342,21 +355,51 @@ The \f{Group} command combines the selected (\K{cmdSelect}) Lines and Shapes (\K
The title will be pre-populated with the title of the last \f{Structure} you \f{ungrouped} (\K{manageM}).
-You can include \f{Turnouts}, \f{Sectional}, \f{Straight} or \f{Curved} tracks in the selected objects which allows you to add cosmetic details to a \f{Turnout} definitions, or create a new \f{Turnout} definition. This can also be used to if there are fixed track locations on a structure, like on an engine shed.
+You can include \f{Turnouts}, \f{Sectional}, \f{Straight} or \f{Curved} tracks in the selected objects which allows you to add cosmetic details to a \f{Turnout} definitions, or create a new \f{Turnout} definition. This can also be used to if there are fixed-track locations on a structure, like on an engine shed.
+
+\f{Group} is intended to operate on simple groups of track segments. If you intend to group a large number of track segments, you should consider using \f{Import Module} (see \K{cmdLayer}),
To modify a \f{Structure} or \f{Turnout} definition, first place the object on the layout, select and then \f{Ungroup} the object. Now the parts of the object can be edited using the \f{Modify} (\K{cmdModify}), \f{Draw} (\K{cmdDraw}) or other commands. Once completed, select the object parts and use the \f{Group} command to update the definition (or create a new one by changing the title).
-The \f{Group} dialog shows the Manufacturer, Description and part number (Title) of the new definition. Initial values are based on selected turnouts and structures or on the last \f{Ungroup}ed object (\K{cmdUngroup}). The dialog also contains a toggle button (\f{Replace with new group}?), which is used if you want to replace the selected objects with the new definition. All fields listed in this dialog window must contain data.
+The \f{Group} dialog shows the Manufacturer, Description and part number (Title) of the new definition. Initial values are based on selected turnouts and structures or on the last \f{Ungroup}ed object (\K{cmdUngroup}).
+The \f{Turntable/TransferTable/DblSlipSwitch}? toggle button controls whether non-conflicting \f{Paths} should be combined or keep separate, see \f{Paths} below.
+The \f{Replace with new group}? toggle button is used if you want to replace the selected objects with the new definition.
+All fields listed in this dialog window must contain data.
The definition data will be added to the \c{xtrkcad.cus} (\K{directories}) file for later use. Please consider contributing this information for others to use.
If you modify a definition from a \e{XTrackCAD} Library parameter file, the new definition will replace the existing definition on the \f{Hot Bar} (\K{cmdHotBar}), otherwise it will be added to the end of the \f{Hot Bar}. You can use the \f{Custom Management} (\K{cmdCustmgm}) dialog to change the title or delete custom definitions.
-\f{Note:} There is a limit of 128 track segments in a group.
+\f{Note:}
+The selected tracks are decomposed into segments, which are simple tracks and drawing object (lines, curves, polygons ... ).
+Any track segments must appear in the first 127 segments.
+This implies a limit of 127 track segments.
+
+\dd You can re-order the segment list by
+
+\lcont{
+
+\b Ungroup the selected tracks
+
+\b Unselect all, and select the tracks you want to group
+
+\b \f{Move selected objects to bottom}
+
+\b Add the non-tracks object to the selected track segments
+
+\b Retry the \f{Group} command
+
+}
+
+\f{Paths} define which segments are followed by a train in Train mode.
+Normally, if two paths follow paths of separate segments, then the paths are combined.
+For example a simple turnout would have two paths, but since the paths share some common segments, the paths are not combined.
+A Crossing has two paths but since they don't have any segments in common, the two paths are combined into one.
+A Turntable can have many distinct paths but only one would be valid at any time. In this case we don't want to combine paths and the toggle would be checked.
\rule
-\S{cmdLayer} Layers Dialog
+\S{cmdLayer} \i{Layers Dialog}
Each object is contained in a layer - which is a custom group of objects that do not have a particular visual order, but can be treated as a set for certain commands.
Objects which are created independently of other objects (such as straight tracks (\K{cmdStraight}) or text (\K{cmdText})) are created in the current layer.
@@ -422,7 +465,7 @@ Objects are drawn on the map window, if the Layer they are on has \f{On Map} che
\rule
-\S{cmdEnum} Parts List
+\S{cmdEnum} \i{Parts List} \I{Enumerate}
The \f{Parts List} command produces a list of all selected (\K{cmdSelect}) turnouts, sectional track and bench-work. It also computes total length of selected flex-track.
@@ -444,7 +487,7 @@ Hint: you can use the \f{Parts List} command to measure the length of selected f
\rule
-\S{cmdPricelist} Price List
+\S{cmdPricelist} \i{Price List}
The \f{Price List} dialog allows entry of prices for Turnouts, Sectional Track and Structures. Only those objects from loaded Parameter Files (\K{cmdPrmfile}) or \e{Custom Designs} for the current Scale (\K{cmdLayout}) are listed.
@@ -452,17 +495,18 @@ The \f{Price List} dialog allows entry of prices for Turnouts, Sectional Track a
The price of a selected object can be changed in the \e{Cost} edit box that's located above the "Price" column.
-The price of a length of \e{Flex Track} for the current Scale (\K{cmdLayout}) is listed at the bottom of the dialog. You can specify the \e{Length} in \e{Inches} or \e{Centimeters}. To specify the price for other \e{Scales} change Scale (\K{cmdLayout}) on the Layout (\K{cmdLayout}) window.
+The price of a length of \e{Flex-Track} for the current Scale (\K{cmdLayout}) is listed at the bottom of the dialog. You can specify the \e{Length} in \e{Inches} or \e{Centimeters}. To specify the price for other \e{Scales} change Scale (\K{cmdLayout}) on the Layout (\K{cmdLayout}) window.
The Parts List (\K{cmdEnum}) dialog lists prices for selected objects if the \e{Prices} check box on the dialog window is selected.
\rule
-\S{cmdTrain} Train
+\S{cmdTrain} \i{Train Mode} \I{Simulation}
\G{png.d/btrain.png} The \f{Train} command lets you place and run Trains on the layout.
\I{Run Trains}During this command, the Tool Bar and Hot Bar are changed. Most of the Tool Bar buttons are replaced by the \e{Go/Stop} and \e{Exit} buttons. The \e{Go/Stop} button toggles between Pausing all Trains and allowing Trains to Run. The \e{Exit} button terminates the Train Simulation and returns to Layout Design mode.
+The Hot Bar becomes the \f{Shelf}.
\G{png.d/trainbar.png}
@@ -470,19 +514,19 @@ The Parts List (\K{cmdEnum}) dialog lists prices for selected objects if the \e{
\dt \e{Selecting New Cars}
-\dd The Hot Bar contains the Cars and Locomotives which are have not been placed on the Layout. Cars are created and managed using the Car Inventory (\K{cmdCarinv}) dialog.
+\dd The \f{Shelf} contains the Cars and Locomotives which have not been placed on the Layout. Cars are created and managed using the Car Inventory (\K{cmdCarinv}) dialog.
\u000
-\dd Each item on the Hot Bar can represent a group of Cars. Cars can be grouped by Prototype, Manufacturer and/or Part Number. They can also be listed as individual Car Items. This grouping is controlled by \e{Car Labels} Drop Down List on the Display (\K{cmdDisplay}) dialog.
+\dd Each item on the \f{Shelf} can represent a group of Cars. Cars can be grouped by Prototype, Manufacturer and/or Part Number. They can also be listed as individual Car Items. This grouping is controlled by \e{Car Labels} Drop Down List on the Display (\K{cmdDisplay}) dialog.
\u000
-\dd To place a Car, select it from the Hot Bar. If the Hot Bar is displaying Cars in groups (and not as individual Car Items) then a Drop Down List is displayed on the Status Bar (\K{mainW}) containing the individual Car Items in that group.
+\dd To place a Car, select it from the \f{Shelf}. If the \f{Shelf} is displaying Cars in groups (and not as individual Car Items) then a Drop Down List is displayed on the Status Bar (\K{mainW}) containing the individual Car Items in that group.
\u000
-\dd If you are not displaying the Hot Bar, then the \e{New Car} button (\G{png.d/bnewcar.png}) will be shown on the Tool Bar. Pressing this button will display the Drop Down List on the Status Bar (\K{mainW}) containing all of your Car Items that have not yet been placed on the layout.
+\dd If you are not displaying the \f{Shelf}, then the \e{New Car} button (\G{png.d/bnewcar.png}) will be shown on the Tool Bar. Pressing this button will display the Drop Down List on the Status Bar (\K{mainW}) containing all of your Car Items that have not yet been placed on the layout.
\u000
@@ -536,6 +580,12 @@ The Parts List (\K{cmdEnum}) dialog lists prices for selected objects if the \e{
\u000
+\dt \e{Change Reporting number of Car on Layout}
+
+\dd To change the reporting number, Right-Click over the Car and then select \e{Describe} and update the field. This value will be shown in the car if Labels are shown and in the \e{Train Control} Window.
+
+\u000
+
\dt \e{Trains}
\dd A Train consists of one or more Locomotives coupled to other Cars. One Locomotive will be the \e{MU Master} for the Train. The \e{MU Master} can be changed by Right-Clicking on a Locomotive and selecting \e{MU Master} from the pop-up menu. The \e{MU Master} is drawn with a solid Yellow head light indicating the direction is moving. If a Train is split by uncoupling between Locomotives, then two Trains will be created, each with their own \e{MU Master}.
@@ -548,7 +598,7 @@ The Parts List (\K{cmdEnum}) dialog lists prices for selected objects if the \e{
\u000
-\dd The \e{Train Control} dialog is used to set the speed and direction of Trains. The dialog contains a list of Trains (listed by their \e{MU Master} Locomotive). Before each Train on the list is either a Red circle (indicating the Train is stopped) or a Green circle (indicating the Train is moving).
+\dd The \e{Train Control} dialog is used to set the speed and direction of Trains. The dialog contains a list of Trains (listed by their \e{MU Master} Locomotive reporting number). Before each Train on the list is either a Red circle (indicating the Train is stopped) or a Green circle (indicating the Train is moving).
\u000
@@ -622,13 +672,13 @@ The Parts List (\K{cmdEnum}) dialog lists prices for selected objects if the \e{
\rule
-\S{cmdTurnoutNew} Turnout Designer
+\S{cmdTurnoutNew} \i{Turnout Designer}
The \f{Turnout Designer} allows you to define new turnouts and sectional track pieces.
\G{png.d/mmanageturnoutdesign.png}
-The Turnout Designer sub-menu is pictured above. As demonstrated by the sub-menu a number of different dialogs are available for creation of custom turnout and sectional track components. New turnouts and sectional track is added to Custom Management (\K{cmdCustmgm}) and Turnout Manager (\K{cmdTurnout}) using the \f{Turnout Designer}.
+The Turnout Designer sub-menu is pictured above. As demonstrated by the sub-menu a number of different dialogs are available for creation of custom turnout and sectional track components. New turnouts and sectional track is added to Custom Management (\K{cmdCustmgm}) and Turnout Manager (\K{cmdNewFixedTrack}) using the \f{Turnout Designer}.
The follow dialog is for a regular turnout.
@@ -676,7 +726,7 @@ The rail height (\e{Code}) can be added to the \f{Manufacturer}, e.g., Peco-55,
The scale is the current scale from the \f{Scale Drop Down List} on the \f{Layout} dialog (\K{cmdLayout}).
-\f{Manufacturer}, \f{Description} and \f{Part Number (#)} comprise the title of the turnout. These values are used in the \f{Turnout Selection dialog} (\K{cmdTurnout}) and the \f{Parts List} (\K{cmdEnum}). For regular and curved turnouts there are separate \f{Descriptions} and \f{Part Numbers} for the right and left hand turnouts.
+\f{Manufacturer}, \f{Description} and \f{Part Number (#)} comprise the title of the turnout. These values are used in the \f{Turnout Selection dialog} (\K{cmdNewFixedTrack}) and the \f{Parts List} (\K{cmdEnum}). For regular and curved turnouts there are separate \f{Descriptions} and \f{Part Numbers} for the right and left hand turnouts.
The \f{Print} button prints a full size diagram of the turnout. You can use this to check your dimensions and make any required changes. You should expect to make several printouts as you refine your dimensions.
@@ -684,7 +734,7 @@ The \f{OK} button completes the design. The new turnout is added to the list in
The \f{Cancel} button removes the \f{Turnout Designer} dialog.
-\e{Creating \i{Turnout Designs}}
+\e{Creating Turnout Designs}
\b It is best to start by marking the endpoints of the turnout on a piece of paper. Extend the curved leg of the turnout (try attaching a straight sectional track) and measure the angle. Frog numbers are easiest to calculate.
@@ -704,7 +754,7 @@ The \f{Cancel} button removes the \f{Turnout Designer} dialog.
\rule
-\S{cmdRefreshSpecial} Update Turnouts and Structures
+\S{cmdRefreshSpecial} \i{Update Turnouts and Structures}
This command updates (or refreshes) selected turnouts, sectional tracks and structures on your layout with the current definitions from the loaded parameter files (\K{cmdPrmfile}). Each selected object that is found in a parameter file is updated with the current definition.
@@ -716,8 +766,11 @@ If an object has been updated then it is unselected, otherwise it will remain se
\rule
-\S{cmdUngroup} Ungroup
+\S{cmdUngroup} \i{Ungroup}
\f{Ungroup} allows existing definitions to be modified and the resulting objects recombined with the \f{Group} (\K{cmdGroup}) command to update the definition. Turnouts are composed of individual straight and curved segments. Segments that form the points (\K{generalTerms}) of the turnout remain combined as an \e{Ungrouped Turnout}, and the other segments are replaced by straight and curved tracks.
-\rule \ No newline at end of file
+One-ended Turnouts (AKA Bumpers) are converted to Staight tracks by \f{Ungroup}.
+These can be converted back to a Bumper by manually editting the \f{Grouped} definition and removing the unwanted End-Point by deleting the correspnding \f{E} line.
+
+\rule
diff --git a/app/doc/mk-xtrkcad-manual-html b/app/doc/mk-xtrkcad-manual-html
new file mode 100755
index 0000000..9340b1d
--- /dev/null
+++ b/app/doc/mk-xtrkcad-manual-html
@@ -0,0 +1,93 @@
+#!/bin/sh
+
+if [ $# -ne 3 ] ; then
+ echo mk-xtrkcad-manual-html SRCDIR BINDIR OUTFILE
+ echo SRCDIR contains .but files
+ echo BINDIR contains .html files
+ echo OUTFILE is the output .html file
+ echo Open OUTFILE in Chrome and print as pdf
+ echo from a directory which contains png.d
+ exit 1
+fi
+
+SRCDIR=$1
+BINDIR=$2
+OUTFILE=$3
+OUTDIR=`pwd`
+
+if [ ! -d ${SRCDIR} ] ; then
+ echo $SRCDIR does not exist
+ exit 1
+fi
+
+if [ ! -f ${SRCDIR}/addm.but ] ; then
+ echo $SRCDIR does not contain .but files
+ exit 1
+fi
+
+if [ ! -d ${SRCDIR}/png.d ] ; then
+ echo $SRCDIR does not contain png.d directory
+ exit 1
+fi
+
+if [ ! -d ${BINDIR} ] ; then
+ echo $BINDIR does not exist
+ exit 1
+fi
+
+if [ ! -f ${BINDIR}/addM.html ] ; then
+ echo $BINDIR does not contain .html files
+ exit 1
+fi
+
+
+extract() {
+ grep '^\\[ACHS]' $1 |\
+ sed \
+ -e 's/^\\[ACHS][0-9]*{//' \
+ -e 's/}.*//' \
+ -e '/^$/d' \
+ -e 's/$/.html/' ;
+}
+
+cd $SRCDIR
+# extract .html refs
+FILES="\
+contents.html \
+`extract intro.but.in` \
+`extract addm.but` \
+`extract changem.but` \
+`extract drawm.but` \
+`extract editm.but` \
+`extract filem.but` \
+`extract helpm.but` \
+`extract hotbar.but` \
+`extract macrom.but` \
+`extract managem.but` \
+`extract optionm.but` \
+`extract statusbar.but` \
+`extract view_winm.but` \
+`extract navigation.but` \
+`extract appendix.but` \
+`extract ${BINDIR}/../../help/messages.but` \
+`extract upgrade.but` \
+`extract warranty.but` \
+IndexPage.html"
+
+cd $OUTDIR
+(
+cd $BINDIR
+# clean up html: remove nav line, fix case file names
+cat $FILES |\
+ grep -v 'Previous.*Next' |\
+ sed \
+ -e 's/bSensor.png/bsensor.png/'\
+ -e 's/bControl.png/bcontrol.png/'\
+ -e 's/iconlink.PNG/iconlink.png/'\
+ ) > ${OUTFILE}
+
+echo "Combined .html files are in ${OUTFILE}"
+echo "Make sure ${OUTFILE} is in a directory which contains a link to"
+echo " $SRCDIR/png.d/"
+echo "Open with Chrome and Print to File as a PDF"
+echo "You should specify a custom scale of at least 150%"
diff --git a/app/doc/navigation.but b/app/doc/navigation.but
index f648a70..ff20b41 100644
--- a/app/doc/navigation.but
+++ b/app/doc/navigation.but
@@ -138,12 +138,13 @@ Eg. in Germany, where the comma is used, the correct value would be\c{LargeIcon
\b "@" key in \f{Select}, \f{Modify} and \f{Pan/Zoom}.
-\b Mouse Wheel - adding \e{Shift} key or the \e{Mouse Middle Button} will Pan the screen. adding \e{Ctrl} as well makes up Pan left and down Pan right.
+\b Mouse Wheel - adding \e{Shift} key will Pan the screen up and down. Adding \e{Ctrl} as well Pans left and right.
-\b Horizontal Mouse Wheel - adding \e{Shift} or the \e{Mouse Middle Button} will Pan the screen left and Right (if available)
+\b Horizontal Mouse Wheel - adding \e{Shift} key will Pan the screen left and Right (if available)
\b Scroll Left and Right - if the scroll left and right guestures are mapped to the trackpad by the operating system, with \e{Shift} depressed the screen will Pan.
+\b On mice and systems that support Three Button Mice, holding the \e{Middle Mouse Button} while dragging, will Pan the canvas.
}
\dd The \f{Main Canvas} can be panned so that the area beyond the room boundaries is shown (the \f{grey} area). The \f{Constrain Drawing Area to Room Boundaries} option on the \f{Display} (\K{cmdDisplay}) dialog under the \f{Options} (\K{optionM}) menu forces the \f{Main Canvas} stop panning once the room boundary is reached.
@@ -420,7 +421,7 @@ Several Shortcut key commands are used in conjunction with the mouse. These comm
\u000
-\dd Split flex track - \e{Ctrl+Shift+S}
+\dd Split flex-track - \e{Ctrl+Shift+S}
\u000
@@ -756,6 +757,8 @@ Note Dialog
}
}
+\dd On some systems support Three Button Mice, holding down the \e{Middle Mouse Button} and dragging will pan the Canvas. Note: not all system support this operation, even with a Three Button Mouse.
+
\rule
\S{cmdManage} Manage Commands
@@ -938,7 +941,7 @@ Some other commands use the \c{Shift} or \c{Ctrl} key to modify the meaning of b
\rule
-\S{mouseBcmd} Context Sensitive Menus
+\S{mouseBcmd} \i{Context Sensitive Menus}
For all commands listed below, a \e{Right-Click} will display a context sensitive pop-up command list menu. For some commands (noted below), a \e{Shift+Right-Click} will display a context sensitive pop-up command options menu. The operation of \e{Right-Click} and \e{Shift+Right-Click} can be reversed by an item on the Command Options (\K{cmdCmdopt}) dialog.
@@ -1236,7 +1239,7 @@ The Shortcut key for each command is listed after the command name.
\u000
-\dt Turnout Command (\K{cmdTurnout}) - \e{Ctrl+T}
+\dt Turnout Command (\K{cmdNewFixedTrack}) - \e{Ctrl+T}
\dd Choose next Active endpoint when placing Turnouts - \e{Shift+Left-Click}
diff --git a/app/doc/optionm.but b/app/doc/optionm.but
index 7e3a69f..1398ad9 100644
--- a/app/doc/optionm.but
+++ b/app/doc/optionm.but
@@ -44,7 +44,7 @@ The \f{Options Menu} shows commands to change configuration options.
\rule
-\S{cmdRgbcolor} Colors Dialog
+\S{cmdRgbcolor} \i{Colors Dialog}
The \f{Colors} dialog is invoked from the Options (\K{optionM}) menu
@@ -90,10 +90,18 @@ The \f{Colors} dialog controls the color that various objects are drawn.
\dd \f{Track Ties} - color of ties (if drawn).
+\u000
+
+\dd \f{Bridge Base} - color of Bridge fill between the parapets.
+
+\u000
+
+\dd \f{Track Roadbed} - color of Roadbed fill under the track.
+
\rule
-\S{cmdCmdopt} Command Option Dialog
+\S{cmdCmdopt} \i{Command Option Dialog}
The \f{Command Option} dialog is invoked from the Options (\K{optionM}) menu
@@ -109,7 +117,7 @@ The \f{Command Option} dialog contains items which control the behavior of some
\u000
-\dd \e{Select-Mode} - will either (a) only select the current item unless Ctrl is added or (b) will add the current item to the selection unless Ctrl is added in which case it will only select this item.
+\dd \e{Select-Mode} - will either (a) only select the current item unless Ctrl is added or (b) will add the current item to the selection unless Ctrl is added in which case it will only select this item.
\u000
@@ -118,7 +126,7 @@ The \f{Command Option} dialog contains items which control the behavior of some
\rule
-\S{cmdDisplay} Display Dialog
+\S{cmdDisplay} \i{Display Dialog}
The \f{Display} dialog is invoked from the Options (\K{optionM}) menu
@@ -325,7 +333,7 @@ Easements require the possibility of creating track with arbitrary radii. Theref
\rule
-\S{fontSelW} Font Selection
+\S{fontSelW} \i{Font Selection}
The font selection dialog allows selection of the font used by the text (\K{cmdText}) command. This command is valid only on UNIX based systems.
@@ -334,7 +342,7 @@ The font selection dialog allows selection of the font used by the text (\K{cmdT
\rule
-\S{cmdLayout} Layout Dialog
+\S{cmdLayout} \i{Layout Dialog}
The \f{Layout Options} dialog, displayed by the Options (\K{optionM}) or the File (\K{fileM} menu, contains items controlling the current layout.
@@ -395,7 +403,7 @@ It can be changed to a new local file and the next \f{Save} will rebuild the pac
\rule
-\S{cmdPref} Preferences Dialog
+\S{cmdPref} \i{Preferences Dialog}
This dialog controls some parameters which likely will not be changed frequently.
@@ -407,7 +415,7 @@ This dialog controls some parameters which likely will not be changed frequently
\u000
-\dd \f{AutoSave} \i{AutoSave} - specifies the number of Check Points taken before an AutoSave. The same number of checkpoints are retained in a circular archive set in the (\K{workDir}) named for the layout file. Setting this value to 0 disables AutoSave.
+\dd \f{AutoSave} \i{AutoSave} - specifies the number of Check Points taken before an AutoSave. The same number of checkpoints are retained in a circular archive set in the (\K{workDir}) named for the layout file. Setting this value to 0 disables AutoSave.
\u000
@@ -415,7 +423,7 @@ This dialog controls some parameters which likely will not be changed frequently
\u000
-\dd \f{Show FlexTrack} - disables the display or \f{FlexTrack} (\K{generalTerms}) which is shown on the left of the Toolbar.
+\dd \f{Show Flex-track} - disables the display or \f{Flex-track} (\K{generalTerms}) which is shown on the left of the Toolbar.
\u000
@@ -476,7 +484,7 @@ This dialog controls some parameters which likely will not be changed frequently
\rule
-\S{cmdSticky} Sticky Dialog
+\S{cmdSticky} \i{Sticky Dialog}
By default, when commands complete, the defined \f{Default Command} (\K{cmdCmdopt}) becomes active. If a command is \f{sticky}, the defined \f{Default Command} is ignored and the current command remains active after completion.
diff --git a/app/doc/png.d/bangle.png b/app/doc/png.d/bangle.png
index ee50dc6..c7977f5 100644
--- a/app/doc/png.d/bangle.png
+++ b/app/doc/png.d/bangle.png
Binary files differ
diff --git a/app/doc/png.d/bblock.png b/app/doc/png.d/bblock.png
index f5d3593..50b2e09 100644
--- a/app/doc/png.d/bblock.png
+++ b/app/doc/png.d/bblock.png
Binary files differ
diff --git a/app/doc/png.d/bbridge.png b/app/doc/png.d/bbridge.png
new file mode 100644
index 0000000..438afe3
--- /dev/null
+++ b/app/doc/png.d/bbridge.png
Binary files differ
diff --git a/app/doc/png.d/bcircl1.png b/app/doc/png.d/bcircl1.png
index af861ee..a6177f2 100644
--- a/app/doc/png.d/bcircl1.png
+++ b/app/doc/png.d/bcircl1.png
Binary files differ
diff --git a/app/doc/png.d/bcircl2.png b/app/doc/png.d/bcircl2.png
index 41c6087..3632d10 100644
--- a/app/doc/png.d/bcircl2.png
+++ b/app/doc/png.d/bcircl2.png
Binary files differ
diff --git a/app/doc/png.d/bcircl3.png b/app/doc/png.d/bcircl3.png
index 7736f53..020111d 100644
--- a/app/doc/png.d/bcircl3.png
+++ b/app/doc/png.d/bcircl3.png
Binary files differ
diff --git a/app/doc/png.d/bcircle.png b/app/doc/png.d/bcircle.png
index 327a837..db00f4e 100644
--- a/app/doc/png.d/bcircle.png
+++ b/app/doc/png.d/bcircle.png
Binary files differ
diff --git a/app/doc/png.d/bconnect.png b/app/doc/png.d/bconnect.png
index 602dc60..77766e1 100644
--- a/app/doc/png.d/bconnect.png
+++ b/app/doc/png.d/bconnect.png
Binary files differ
diff --git a/app/doc/png.d/bcontrol.png b/app/doc/png.d/bcontrol.png
index 4b35f1e..2b67c52 100644
--- a/app/doc/png.d/bcontrol.png
+++ b/app/doc/png.d/bcontrol.png
Binary files differ
diff --git a/app/doc/png.d/bcornu.png b/app/doc/png.d/bcornu.png
index 60c632e..dd21a5b 100644
--- a/app/doc/png.d/bcornu.png
+++ b/app/doc/png.d/bcornu.png
Binary files differ
diff --git a/app/doc/png.d/bcurve.png b/app/doc/png.d/bcurve.png
index 72b852c..25d2f1c 100644
--- a/app/doc/png.d/bcurve.png
+++ b/app/doc/png.d/bcurve.png
Binary files differ
diff --git a/app/doc/png.d/bcurve1.png b/app/doc/png.d/bcurve1.png
index c5bebb3..12a35b6 100644
--- a/app/doc/png.d/bcurve1.png
+++ b/app/doc/png.d/bcurve1.png
Binary files differ
diff --git a/app/doc/png.d/bcurve2.png b/app/doc/png.d/bcurve2.png
index e165b7e..3d0266d 100644
--- a/app/doc/png.d/bcurve2.png
+++ b/app/doc/png.d/bcurve2.png
Binary files differ
diff --git a/app/doc/png.d/bcurve3.png b/app/doc/png.d/bcurve3.png
index 766758c..4989626 100644
--- a/app/doc/png.d/bcurve3.png
+++ b/app/doc/png.d/bcurve3.png
Binary files differ
diff --git a/app/doc/png.d/bcurve4.png b/app/doc/png.d/bcurve4.png
index 81e9856..e1479fd 100644
--- a/app/doc/png.d/bcurve4.png
+++ b/app/doc/png.d/bcurve4.png
Binary files differ
diff --git a/app/doc/png.d/bcurvelin.png b/app/doc/png.d/bcurvelin.png
new file mode 100644
index 0000000..349c1a9
--- /dev/null
+++ b/app/doc/png.d/bcurvelin.png
Binary files differ
diff --git a/app/doc/png.d/bdelete.png b/app/doc/png.d/bdelete.png
index 245596a..6e46e43 100644
--- a/app/doc/png.d/bdelete.png
+++ b/app/doc/png.d/bdelete.png
Binary files differ
diff --git a/app/doc/png.d/bdescrib.png b/app/doc/png.d/bdescrib.png
index 29e011c..3525e0c 100644
--- a/app/doc/png.d/bdescrib.png
+++ b/app/doc/png.d/bdescrib.png
Binary files differ
diff --git a/app/doc/png.d/bdraw.png b/app/doc/png.d/bdraw.png
index 0d282c1..c22006b 100644
--- a/app/doc/png.d/bdraw.png
+++ b/app/doc/png.d/bdraw.png
Binary files differ
diff --git a/app/doc/png.d/bdrawsplit.png b/app/doc/png.d/bdrawsplit.png
new file mode 100644
index 0000000..5174bec
--- /dev/null
+++ b/app/doc/png.d/bdrawsplit.png
Binary files differ
diff --git a/app/doc/png.d/belev.png b/app/doc/png.d/belev.png
index 9a73e90..eb16a12 100644
--- a/app/doc/png.d/belev.png
+++ b/app/doc/png.d/belev.png
Binary files differ
diff --git a/app/doc/png.d/bexport.png b/app/doc/png.d/bexport.png
new file mode 100644
index 0000000..dd3b90e
--- /dev/null
+++ b/app/doc/png.d/bexport.png
Binary files differ
diff --git a/app/doc/png.d/bexportbmap.png b/app/doc/png.d/bexportbmap.png
new file mode 100644
index 0000000..1f749e7
--- /dev/null
+++ b/app/doc/png.d/bexportbmap.png
Binary files differ
diff --git a/app/doc/png.d/bexportdxf.png b/app/doc/png.d/bexportdxf.png
new file mode 100644
index 0000000..e593c52
--- /dev/null
+++ b/app/doc/png.d/bexportdxf.png
Binary files differ
diff --git a/app/doc/png.d/bexportsvg.png b/app/doc/png.d/bexportsvg.png
new file mode 100644
index 0000000..8dea55c
--- /dev/null
+++ b/app/doc/png.d/bexportsvg.png
Binary files differ
diff --git a/app/doc/png.d/bezier.png b/app/doc/png.d/bezier.png
index e03458e..796b7f2 100644
--- a/app/doc/png.d/bezier.png
+++ b/app/doc/png.d/bezier.png
Binary files differ
diff --git a/app/doc/png.d/bfile.png b/app/doc/png.d/bfile.png
index 6c140fb..8d7be9d 100644
--- a/app/doc/png.d/bfile.png
+++ b/app/doc/png.d/bfile.png
Binary files differ
diff --git a/app/doc/png.d/bflip.png b/app/doc/png.d/bflip.png
index 6ec7a00..462cd43 100644
--- a/app/doc/png.d/bflip.png
+++ b/app/doc/png.d/bflip.png
Binary files differ
diff --git a/app/doc/png.d/bgsnap.png b/app/doc/png.d/bgsnap.png
index 4aebf61..c3a69e6 100644
--- a/app/doc/png.d/bgsnap.png
+++ b/app/doc/png.d/bgsnap.png
Binary files differ
diff --git a/app/doc/png.d/bgundo.png b/app/doc/png.d/bgundo.png
index 42d0bce..0af47ef 100644
--- a/app/doc/png.d/bgundo.png
+++ b/app/doc/png.d/bgundo.png
Binary files differ
diff --git a/app/doc/png.d/bgzoom.png b/app/doc/png.d/bgzoom.png
index ce244bd..0e3e2af 100644
--- a/app/doc/png.d/bgzoom.png
+++ b/app/doc/png.d/bgzoom.png
Binary files differ
diff --git a/app/doc/png.d/bhelix.png b/app/doc/png.d/bhelix.png
index c7ce099..f6896fb 100644
--- a/app/doc/png.d/bhelix.png
+++ b/app/doc/png.d/bhelix.png
Binary files differ
diff --git a/app/doc/png.d/bhndldto.png b/app/doc/png.d/bhndldto.png
index 6e13542..bb89eec 100644
--- a/app/doc/png.d/bhndldto.png
+++ b/app/doc/png.d/bhndldto.png
Binary files differ
diff --git a/app/doc/png.d/bimport.png b/app/doc/png.d/bimport.png
new file mode 100644
index 0000000..66488b9
--- /dev/null
+++ b/app/doc/png.d/bimport.png
Binary files differ
diff --git a/app/doc/png.d/bimportmod.png b/app/doc/png.d/bimportmod.png
new file mode 100644
index 0000000..ee4f375
--- /dev/null
+++ b/app/doc/png.d/bimportmod.png
Binary files differ
diff --git a/app/doc/png.d/bitmap.png.orig b/app/doc/png.d/bitmap.png.orig
new file mode 100644
index 0000000..1f749e7
--- /dev/null
+++ b/app/doc/png.d/bitmap.png.orig
Binary files differ
diff --git a/app/doc/png.d/bjoin.png b/app/doc/png.d/bjoin.png
index 673793e..e3d91d1 100644
--- a/app/doc/png.d/bjoin.png
+++ b/app/doc/png.d/bjoin.png
Binary files differ
diff --git a/app/doc/png.d/bjoinline.png b/app/doc/png.d/bjoinline.png
index 0d88a58..28ea14d 100644
--- a/app/doc/png.d/bjoinline.png
+++ b/app/doc/png.d/bjoinline.png
Binary files differ
diff --git a/app/doc/png.d/blayer.png b/app/doc/png.d/blayer.png
index 8b2fe72..2817ea9 100644
--- a/app/doc/png.d/blayer.png
+++ b/app/doc/png.d/blayer.png
Binary files differ
diff --git a/app/doc/png.d/blink.png b/app/doc/png.d/blink.png
index 4dfbbe7..70479c1 100644
--- a/app/doc/png.d/blink.png
+++ b/app/doc/png.d/blink.png
Binary files differ
diff --git a/app/doc/png.d/bmenu.png b/app/doc/png.d/bmenu.png
index 34ef253..79dd813 100644
--- a/app/doc/png.d/bmenu.png
+++ b/app/doc/png.d/bmenu.png
Binary files differ
diff --git a/app/doc/png.d/bmodify.png b/app/doc/png.d/bmodify.png
index 9a534a9..8a5a77c 100644
--- a/app/doc/png.d/bmodify.png
+++ b/app/doc/png.d/bmodify.png
Binary files differ
diff --git a/app/doc/png.d/bmove.png b/app/doc/png.d/bmove.png
index 54dc628..ab3639f 100644
--- a/app/doc/png.d/bmove.png
+++ b/app/doc/png.d/bmove.png
Binary files differ
diff --git a/app/doc/png.d/bmovedes.png b/app/doc/png.d/bmovedes.png
index b76b878..cdda765 100644
--- a/app/doc/png.d/bmovedes.png
+++ b/app/doc/png.d/bmovedes.png
Binary files differ
diff --git a/app/doc/png.d/bnew.png b/app/doc/png.d/bnew.png
index 7ffeb65..e02cfa6 100644
--- a/app/doc/png.d/bnew.png
+++ b/app/doc/png.d/bnew.png
Binary files differ
diff --git a/app/doc/png.d/bnewcar.png b/app/doc/png.d/bnewcar.png
index 61b8ff9..c7773dc 100644
--- a/app/doc/png.d/bnewcar.png
+++ b/app/doc/png.d/bnewcar.png
Binary files differ
diff --git a/app/doc/png.d/bnote.png b/app/doc/png.d/bnote.png
index b91518b..ade9df5 100644
--- a/app/doc/png.d/bnote.png
+++ b/app/doc/png.d/bnote.png
Binary files differ
diff --git a/app/doc/png.d/bopen.png b/app/doc/png.d/bopen.png
index 247fe38..89e08cb 100644
--- a/app/doc/png.d/bopen.png
+++ b/app/doc/png.d/bopen.png
Binary files differ
diff --git a/app/doc/png.d/bparallel.png b/app/doc/png.d/bparallel.png
index 5f92b6d..47b7631 100644
--- a/app/doc/png.d/bparallel.png
+++ b/app/doc/png.d/bparallel.png
Binary files differ
diff --git a/app/doc/png.d/bparalleline.png b/app/doc/png.d/bparalleline.png
index 43a6223..9e2f4dd 100644
--- a/app/doc/png.d/bparalleline.png
+++ b/app/doc/png.d/bparalleline.png
Binary files differ
diff --git a/app/doc/png.d/bparam.png b/app/doc/png.d/bparam.png
new file mode 100644
index 0000000..7e49dfc
--- /dev/null
+++ b/app/doc/png.d/bparam.png
Binary files differ
diff --git a/app/doc/png.d/bprint.png b/app/doc/png.d/bprint.png
new file mode 100644
index 0000000..43a7c45
--- /dev/null
+++ b/app/doc/png.d/bprint.png
Binary files differ
diff --git a/app/doc/png.d/brevert.png b/app/doc/png.d/brevert.png
new file mode 100644
index 0000000..57f6d72
--- /dev/null
+++ b/app/doc/png.d/brevert.png
Binary files differ
diff --git a/app/doc/png.d/broadbed.png b/app/doc/png.d/broadbed.png
new file mode 100644
index 0000000..86325a0
--- /dev/null
+++ b/app/doc/png.d/broadbed.png
Binary files differ
diff --git a/app/doc/png.d/brotate.png b/app/doc/png.d/brotate.png
index db7b615..731b943 100644
--- a/app/doc/png.d/brotate.png
+++ b/app/doc/png.d/brotate.png
Binary files differ
diff --git a/app/doc/png.d/bruler.png b/app/doc/png.d/bruler.png
index a44a0c3..2d68473 100644
--- a/app/doc/png.d/bruler.png
+++ b/app/doc/png.d/bruler.png
Binary files differ
diff --git a/app/doc/png.d/bsave.png b/app/doc/png.d/bsave.png
index deb9d7c..8f3fca8 100644
--- a/app/doc/png.d/bsave.png
+++ b/app/doc/png.d/bsave.png
Binary files differ
diff --git a/app/doc/png.d/bsaveas.png b/app/doc/png.d/bsaveas.png
new file mode 100644
index 0000000..534babd
--- /dev/null
+++ b/app/doc/png.d/bsaveas.png
Binary files differ
diff --git a/app/doc/png.d/bselect.png b/app/doc/png.d/bselect.png
index f980d62..1768915 100644
--- a/app/doc/png.d/bselect.png
+++ b/app/doc/png.d/bselect.png
Binary files differ
diff --git a/app/doc/png.d/bsensor.png b/app/doc/png.d/bsensor.png
index c573757..deeed57 100644
--- a/app/doc/png.d/bsensor.png
+++ b/app/doc/png.d/bsensor.png
Binary files differ
diff --git a/app/doc/png.d/bsetup.png b/app/doc/png.d/bsetup.png
new file mode 100644
index 0000000..7aa4289
--- /dev/null
+++ b/app/doc/png.d/bsetup.png
Binary files differ
diff --git a/app/doc/png.d/bsignal.png b/app/doc/png.d/bsignal.png
index a1c1ab0..ae853fc 100644
--- a/app/doc/png.d/bsignal.png
+++ b/app/doc/png.d/bsignal.png
Binary files differ
diff --git a/app/doc/png.d/bsplit.png b/app/doc/png.d/bsplit.png
index 7185efe..831596a 100644
--- a/app/doc/png.d/bsplit.png
+++ b/app/doc/png.d/bsplit.png
Binary files differ
diff --git a/app/doc/png.d/bstraigh.png b/app/doc/png.d/bstraigh.png
index 4c8aac6..2efe34d 100644
--- a/app/doc/png.d/bstraigh.png
+++ b/app/doc/png.d/bstraigh.png
Binary files differ
diff --git a/app/doc/png.d/bstruct.png b/app/doc/png.d/bstruct.png
index b361450..4930b4d 100644
--- a/app/doc/png.d/bstruct.png
+++ b/app/doc/png.d/bstruct.png
Binary files differ
diff --git a/app/doc/png.d/bswitchmotor.png b/app/doc/png.d/bswitchmotor.png
index 93333ae..169b2d2 100644
--- a/app/doc/png.d/bswitchmotor.png
+++ b/app/doc/png.d/bswitchmotor.png
Binary files differ
diff --git a/app/doc/png.d/btext.png b/app/doc/png.d/btext.png
index 530a18e..d4115d0 100644
--- a/app/doc/png.d/btext.png
+++ b/app/doc/png.d/btext.png
Binary files differ
diff --git a/app/doc/png.d/bties.png b/app/doc/png.d/bties.png
new file mode 100644
index 0000000..c2b50a2
--- /dev/null
+++ b/app/doc/png.d/bties.png
Binary files differ
diff --git a/app/doc/png.d/btop_bottom.png b/app/doc/png.d/btop_bottom.png
index d2fb217..ae8b2c6 100644
--- a/app/doc/png.d/btop_bottom.png
+++ b/app/doc/png.d/btop_bottom.png
Binary files differ
diff --git a/app/doc/png.d/btrain.png b/app/doc/png.d/btrain.png
index 2cdba2d..f84b19c 100644
--- a/app/doc/png.d/btrain.png
+++ b/app/doc/png.d/btrain.png
Binary files differ
diff --git a/app/doc/png.d/btunnel.png b/app/doc/png.d/btunnel.png
index d861dde..815663a 100644
--- a/app/doc/png.d/btunnel.png
+++ b/app/doc/png.d/btunnel.png
Binary files differ
diff --git a/app/doc/png.d/bturnout.png b/app/doc/png.d/bturnout.png
index f25a568..9789e5a 100644
--- a/app/doc/png.d/bturnout.png
+++ b/app/doc/png.d/bturnout.png
Binary files differ
diff --git a/app/doc/png.d/bturntbl.png b/app/doc/png.d/bturntbl.png
index 9f13800..d261bbb 100644
--- a/app/doc/png.d/bturntbl.png
+++ b/app/doc/png.d/bturntbl.png
Binary files differ
diff --git a/app/doc/png.d/cgroup.png b/app/doc/png.d/cgroup.png
index c42df49..7b7bffb 100644
--- a/app/doc/png.d/cgroup.png
+++ b/app/doc/png.d/cgroup.png
Binary files differ
diff --git a/app/doc/png.d/colorw.png b/app/doc/png.d/colorw.png
index 4d7fa91..a0acc32 100644
--- a/app/doc/png.d/colorw.png
+++ b/app/doc/png.d/colorw.png
Binary files differ
diff --git a/app/doc/png.d/convertfrom.png b/app/doc/png.d/convertfrom.png
index 9c16665..53b55e4 100644
--- a/app/doc/png.d/convertfrom.png
+++ b/app/doc/png.d/convertfrom.png
Binary files differ
diff --git a/app/doc/png.d/convertto.png b/app/doc/png.d/convertto.png
index bd70934..260bc1d 100644
--- a/app/doc/png.d/convertto.png
+++ b/app/doc/png.d/convertto.png
Binary files differ
diff --git a/app/doc/png.d/dbench.png b/app/doc/png.d/dbench.png
index 862f162..594bb16 100644
--- a/app/doc/png.d/dbench.png
+++ b/app/doc/png.d/dbench.png
Binary files differ
diff --git a/app/doc/png.d/dbezier.png b/app/doc/png.d/dbezier.png
index 0a81063..ca40ccb 100644
--- a/app/doc/png.d/dbezier.png
+++ b/app/doc/png.d/dbezier.png
Binary files differ
diff --git a/app/doc/png.d/dbox.png b/app/doc/png.d/dbox.png
index 7f11d4c..e03fb33 100644
--- a/app/doc/png.d/dbox.png
+++ b/app/doc/png.d/dbox.png
Binary files differ
diff --git a/app/doc/png.d/dcircle1.png b/app/doc/png.d/dcircle1.png
new file mode 100644
index 0000000..745e044
--- /dev/null
+++ b/app/doc/png.d/dcircle1.png
Binary files differ
diff --git a/app/doc/png.d/dcircle2.png b/app/doc/png.d/dcircle2.png
index 9080eaf..d39c2e3 100644
--- a/app/doc/png.d/dcircle2.png
+++ b/app/doc/png.d/dcircle2.png
Binary files differ
diff --git a/app/doc/png.d/dcircle3.png b/app/doc/png.d/dcircle3.png
index 70a2d30..0676c52 100644
--- a/app/doc/png.d/dcircle3.png
+++ b/app/doc/png.d/dcircle3.png
Binary files differ
diff --git a/app/doc/png.d/dcurve1.png b/app/doc/png.d/dcurve1.png
index c0ca63b..66361ba 100644
--- a/app/doc/png.d/dcurve1.png
+++ b/app/doc/png.d/dcurve1.png
Binary files differ
diff --git a/app/doc/png.d/dcurve2.png b/app/doc/png.d/dcurve2.png
index 7a4f75d..9c6a21d 100644
--- a/app/doc/png.d/dcurve2.png
+++ b/app/doc/png.d/dcurve2.png
Binary files differ
diff --git a/app/doc/png.d/dcurve3.png b/app/doc/png.d/dcurve3.png
index a68aebf..fea2ba3 100644
--- a/app/doc/png.d/dcurve3.png
+++ b/app/doc/png.d/dcurve3.png
Binary files differ
diff --git a/app/doc/png.d/dcurve4.png b/app/doc/png.d/dcurve4.png
index d337fa1..408a308 100644
--- a/app/doc/png.d/dcurve4.png
+++ b/app/doc/png.d/dcurve4.png
Binary files differ
diff --git a/app/doc/png.d/ddimlin.png b/app/doc/png.d/ddimlin.png
index adc471d..49d9488 100644
--- a/app/doc/png.d/ddimlin.png
+++ b/app/doc/png.d/ddimlin.png
Binary files differ
diff --git a/app/doc/png.d/dentermove.png b/app/doc/png.d/dentermove.png
new file mode 100644
index 0000000..1ec8b34
--- /dev/null
+++ b/app/doc/png.d/dentermove.png
Binary files differ
diff --git a/app/doc/png.d/dfilbox.png b/app/doc/png.d/dfilbox.png
index 4e75f0b..d20421c 100644
--- a/app/doc/png.d/dfilbox.png
+++ b/app/doc/png.d/dfilbox.png
Binary files differ
diff --git a/app/doc/png.d/dfilpoly.png b/app/doc/png.d/dfilpoly.png
index 36893ad..d714dab 100644
--- a/app/doc/png.d/dfilpoly.png
+++ b/app/doc/png.d/dfilpoly.png
Binary files differ
diff --git a/app/doc/png.d/dflcrcl2.png b/app/doc/png.d/dflcrcl2.png
index cd57434..0e9e1f7 100644
--- a/app/doc/png.d/dflcrcl2.png
+++ b/app/doc/png.d/dflcrcl2.png
Binary files differ
diff --git a/app/doc/png.d/dflcrcl3.png b/app/doc/png.d/dflcrcl3.png
index 34942cd..c702428 100644
--- a/app/doc/png.d/dflcrcl3.png
+++ b/app/doc/png.d/dflcrcl3.png
Binary files differ
diff --git a/app/doc/png.d/dlayer.png b/app/doc/png.d/dlayer.png
deleted file mode 100644
index ebb5be7..0000000
--- a/app/doc/png.d/dlayer.png
+++ /dev/null
Binary files differ
diff --git a/app/doc/png.d/dlayers.png b/app/doc/png.d/dlayers.png
index 923787c..200ef81 100644
--- a/app/doc/png.d/dlayers.png
+++ b/app/doc/png.d/dlayers.png
Binary files differ
diff --git a/app/doc/png.d/dline.png b/app/doc/png.d/dline.png
index 11ad69f..2f4c996 100644
--- a/app/doc/png.d/dline.png
+++ b/app/doc/png.d/dline.png
Binary files differ
diff --git a/app/doc/png.d/dpoly.png b/app/doc/png.d/dpoly.png
index 7998634..577983e 100644
--- a/app/doc/png.d/dpoly.png
+++ b/app/doc/png.d/dpoly.png
Binary files differ
diff --git a/app/doc/png.d/dpolylin.png b/app/doc/png.d/dpolylin.png
new file mode 100644
index 0000000..d66cd2b
--- /dev/null
+++ b/app/doc/png.d/dpolylin.png
Binary files differ
diff --git a/app/doc/png.d/dtbledge.png b/app/doc/png.d/dtbledge.png
index 52eb1ed..3f8e019 100644
--- a/app/doc/png.d/dtbledge.png
+++ b/app/doc/png.d/dtbledge.png
Binary files differ
diff --git a/app/doc/png.d/exportfile.png b/app/doc/png.d/exportfile.png
index 0608fba..a6132a8 100644
--- a/app/doc/png.d/exportfile.png
+++ b/app/doc/png.d/exportfile.png
Binary files differ
diff --git a/app/doc/png.d/exportfiledxf.png b/app/doc/png.d/exportfiledxf.png
index 7612fba..9b6dbf0 100644
--- a/app/doc/png.d/exportfiledxf.png
+++ b/app/doc/png.d/exportfiledxf.png
Binary files differ
diff --git a/app/doc/png.d/exportfilesvg.png b/app/doc/png.d/exportfilesvg.png
new file mode 100644
index 0000000..89d3919
--- /dev/null
+++ b/app/doc/png.d/exportfilesvg.png
Binary files differ
diff --git a/app/doc/png.d/iconlink.PNG b/app/doc/png.d/iconlink.png
index 0f189e2..0f189e2 100644
--- a/app/doc/png.d/iconlink.PNG
+++ b/app/doc/png.d/iconlink.png
Binary files differ
diff --git a/app/doc/png.d/import.png b/app/doc/png.d/import.png
index e68363e..3dfeb4b 100644
--- a/app/doc/png.d/import.png
+++ b/app/doc/png.d/import.png
Binary files differ
diff --git a/app/doc/png.d/importmod.png b/app/doc/png.d/importmod.png
new file mode 100644
index 0000000..64b2807
--- /dev/null
+++ b/app/doc/png.d/importmod.png
Binary files differ
diff --git a/app/doc/png.d/map.png b/app/doc/png.d/map.png
index 6400bf1..e784dfa 100644
--- a/app/doc/png.d/map.png
+++ b/app/doc/png.d/map.png
Binary files differ
diff --git a/app/doc/png.d/medit.png b/app/doc/png.d/medit.png
index 2ffa681..ccb7858 100644
--- a/app/doc/png.d/medit.png
+++ b/app/doc/png.d/medit.png
Binary files differ
diff --git a/app/doc/png.d/mentermove.png b/app/doc/png.d/mentermove.png
new file mode 100644
index 0000000..42dcb54
--- /dev/null
+++ b/app/doc/png.d/mentermove.png
Binary files differ
diff --git a/app/doc/png.d/mhelp.png b/app/doc/png.d/mhelp.png
index 158657e..512677b 100644
--- a/app/doc/png.d/mhelp.png
+++ b/app/doc/png.d/mhelp.png
Binary files differ
diff --git a/app/doc/png.d/pan.png b/app/doc/png.d/pan.png
index 653ee4d..d4ebd72 100644
--- a/app/doc/png.d/pan.png
+++ b/app/doc/png.d/pan.png
Binary files differ
diff --git a/app/doc/png.d/paramsearch.png b/app/doc/png.d/paramsearch.png
index 2aca111..67db04b 100644
--- a/app/doc/png.d/paramsearch.png
+++ b/app/doc/png.d/paramsearch.png
Binary files differ
diff --git a/app/doc/png.d/problemdata.png b/app/doc/png.d/problemdata.png
new file mode 100644
index 0000000..fccde93
--- /dev/null
+++ b/app/doc/png.d/problemdata.png
Binary files differ
diff --git a/app/doc/png.d/statusbarparallel.png b/app/doc/png.d/statusbarparallel.png
index 0ab73a5..f55e596 100644
--- a/app/doc/png.d/statusbarparallel.png
+++ b/app/doc/png.d/statusbarparallel.png
Binary files differ
diff --git a/app/doc/png.d/statustext.png b/app/doc/png.d/statustext.png
index ac9fc02..dfa20ae 100644
--- a/app/doc/png.d/statustext.png
+++ b/app/doc/png.d/statustext.png
Binary files differ
diff --git a/app/doc/png.d/turnsel.png b/app/doc/png.d/turnsel.png
index b2e1b6d..60d8ff3 100644
--- a/app/doc/png.d/turnsel.png
+++ b/app/doc/png.d/turnsel.png
Binary files differ
diff --git a/app/doc/view_winm.but b/app/doc/view_winm.but
index f814c3f..ac853e4 100644
--- a/app/doc/view_winm.but
+++ b/app/doc/view_winm.but
@@ -26,15 +26,15 @@ The \f{View Menu} shows commands affecting the display of the \f{Main Canvas} (\
\u000
-\dd \f{Show Snap-Grid} - Toggles display of the \f{Snap Grid} on and off.
+\dd \f{Show Snap-Grid} - \I{Snap Grid} Toggles display of the \f{Snap Grid} on and off.
\u000
-\dd \f{Magnetic Snap On/Off} - Toggles Magnets (\K{cmdMagneticSnap}) for Add Operations on and off. The magnets make tracks auto-align and shapes touch when the cursor or object is close. They can be defeated on each operation by holding down \e{Alt}. If the Magnets are off, holding down \e{Alt} will enable them.
+\dd \f{Magnetic Snap On/Off} - Toggles \i{Magnetic Snap} (\K{cmdMagneticSnap}) for Add Operations on and off. The magnets make tracks auto-align and shapes touch when the cursor or object is close. They can be defeated on each operation by holding down \e{Alt}. If the Magnets are off, holding down \e{Alt} will enable them.
\u000
-\dd \G{png.d/bmap.png} \f{ Show/Hide Map} - Toggles display of the \f{Map Window} on and off.
+\dd \G{png.d/bmap.png} \f{ Show/Hide Map} - Toggles display of the \f{Map Window} \I{Map Window} on and off.
\u000
@@ -84,7 +84,7 @@ This enables snapping to be inhibited for a single part of an operation (or conv
\rule
-\S{cmdGrid} Grid Dialog
+\S{cmdGrid} \i{Grid Dialog}
The \f{Grid} dialog, displayed by \f{Change Grid} on the View (\K{viewM}) menu, specifies the origin, angle and other parameters of the Snap Grid.
The Snap Grid can sbe used to snap the position of the cursor during the \f{Curve} (\K{cmdCurve}), \f{Circle} (\K{cmdCircle}), \f{Cornu} (\K{cmdCornu}), \f{Modify} (\K{cmdModify}), \f{Straight} (\K{cmdStraight}), \f{Draw} (\K{cmdDraw}) and \f{Turntable} (\K{cmdTurntable}) commands.
@@ -125,7 +125,7 @@ Whether the Snap Grid is drawn is controlled by the \f{Show} check-box. Also, i
\rule
-\S{toolbarM}Tool-bar Configuration
+\S{toolbarM} \I{Tool-bar Configuration}
\G{png.d/mtoolbar.png}
@@ -177,8 +177,7 @@ Pressing the middle Zoom button on the Tool Bar pop-ups a list of Zoom factors t
\u000
-\dd The Pan function can be accessed using the Mouse Wheel with \e{Shift} of the \e{Mouse Middle Button}. Adding \e{Ctrl} as well as \e{Shift} chnages Up to Left and Down to Right.
-Pan Left and Right can also be driven by the Horizontal Mouse Wheel (if available) or the Scroll Left/Right Guestures (if mapped by the Operating System).
+\dd See \f{Main Window Overview} (\K{mainW}) for details on how to \f{Pan} the \f{Main Canvas}.
\rule
@@ -199,4 +198,4 @@ The \f{Window Menu} typically contains selections for bringing any open window i
\dd Apart from bringing the \f{Map Window} (\K{cmdMap}) to the foreground, the \f{Map} menu item can also be used to re-opened a closed \f{Map Window}.
-\rule \ No newline at end of file
+\rule
diff --git a/app/doc/warranty.but b/app/doc/warranty.but
index d52b7fa..7502c38 100644
--- a/app/doc/warranty.but
+++ b/app/doc/warranty.but
@@ -10,7 +10,7 @@ covered by the Creative Commons Attribution-ShareAlike 2.5 License Agreement.
\rule
-\H{warranty} Warranty
+\H{warranty} \i{Warranty}
\e{XTrackCAD} is provided "as is" without warranty of any kind, either express or implied, including, but not limited to warranties of merchantability or fitness for a particular purpose. In no event will Sillub Technology be liable for any damages, including incidental or consequential damages, arising out of the use of the program, even if advised of the possibility of such damages.
@@ -24,14 +24,14 @@ covered by the Creative Commons Attribution-ShareAlike 2.5 License Agreement.
\e{XTrackCAD} is \XTCCopyRight and licensed as 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.
-You should have received a copy of the GNU General Public License along with this program; see the file named COPYING or refer to \K{GNUGPLicense}. If not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+You should have received a copy of the GNU General Public License along with this program; see the file named COPYING or refer to \K{GNUGPLicense}. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
\e{XTrackCAD} Fork is a project for further development of the original \e{XTrackCAD} software. Refer to the project homepage at http://www.xtrkcad.org/ for news and current releases.
\rule
-\H{GNUGPLicense} \ii{GNU General Public License}
+\H{GNUGPLicense} \ii{GNU General Public License} \i{License}
\dd GNU GENERAL PUBLIC LICENSE
@@ -41,13 +41,13 @@ You should have received a copy of the GNU General Public License along with thi
\dd Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-\dd 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+\dd 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
\e{Preamble}
-The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to
+The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it
@@ -149,6 +149,64 @@ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
\f{END OF TERMS AND CONDITIONS}
+\f{How to Apply These Terms to Your New Programs}
+
+If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+\dd <one line to give the program's name and a brief idea of what it does.> Copyright (C) <year> <name of author>
+
+\u000
+
+\dd 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.
+
+\u000
+
+\dd 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.
+
+\u000
+
+\dd 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+\dd Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+\dd Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+\u000
+
+\dd <signature of Ty Coon>, 1 April 1989
+
+\u000
+
+\dd Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
+
\rule
\H{Contributions} \ii{Contributions}
diff --git a/app/doc/xtrkcad-manual-5.3.0.html b/app/doc/xtrkcad-manual-5.3.0.html
new file mode 100644
index 0000000..da1d2cf
--- /dev/null
+++ b/app/doc/xtrkcad-manual-5.3.0.html
@@ -0,0 +1,19625 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>XTrackCAD User's Manual</title>
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="index.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><em>XTrackCAD</em> User's Manual</h1>
+<p>
+<img src="png.d/xtrkcad_logo.gif">
+</p>
+<p>
+<em>Version 5.3.0GA</em>
+</p>
+<p>
+Copyright 2003, Sillub Technology and Copyright 2007, Bob Blackwell and Martin Fischer and Copyright 2020, Martin Fischer, Adam Richards and Dave Bullis
+</p>
+<hr>
+<ul>
+<li><a href="index.html#index">Chapter 1: Introduction To <em>XTrackCAD</em></a></li>
+<ul>
+<li><a href="whyXTrackCAD.html#whyXTrackCAD">1.1 Why Choose <em>XTrackCAD</em></a></li>
+<li><a href="keyFeatures.html#keyFeatures">1.2 Key <em>XTrackCAD</em> Features</a></li>
+<li><a href="addFeatures.html#addFeatures">1.3 Additional <em>XTrackCAD</em> Features</a></li>
+<li><a href="aboutmanual.html#aboutmanual">1.4 About This Manual</a></li>
+<li><a href="installSoftware.html#installSoftware">1.5 Installation</a></li>
+<li><a href="startSoftware.html#startSoftware">1.6 Start the Program</a></li>
+<li><a href="introQT.html#introQT">1.7 Quick Tour</a></li>
+<li><a href="performance.html#performance">1.8 Performance Issues</a></li>
+<li><a href="directories.html#directories">1.9 Files and Directories</a></li>
+<li><a href="uninstall.html#uninstall">1.10 Removing <em>XTrackCAD</em></a></li>
+<li><a href="bugs_enhancements.html#bugs_enhancements">1.11 Bugs and Enhancements</a></li>
+</ul>
+<li><a href="commandMenus.html#commandMenus">Chapter 2: Command Menus</a></li>
+<ul>
+<li><a href="addM.html#addM">2.1 Add Menu</a></li>
+<li><a href="changeM.html#changeM">2.2 Change Menu</a></li>
+<li><a href="cmdDraw.html#cmdDraw">2.3 Draw Menu</a></li>
+<li><a href="editM.html#editM">2.4 Edit Menu</a></li>
+<li><a href="fileM.html#fileM">2.5 File Menu</a></li>
+<li><a href="helpM.html#helpM">2.6 Help Menu</a></li>
+<li><a href="cmdHotBar.html#cmdHotBar">2.7 Hot Bar</a></li>
+<li><a href="macroM.html#macroM">2.8 Macro Menu</a></li>
+<li><a href="manageM.html#manageM">2.9 Manage Menu</a></li>
+<li><a href="optionM.html#optionM">2.10 Options Menu</a></li>
+<li><a href="cmdStatusbar.html#cmdStatusbar">2.11 Status Bar</a></li>
+<li><a href="viewM.html#viewM">2.12 View Menu</a></li>
+<li><a href="windowM.html#windowM">2.13 Window Menu</a></li>
+</ul>
+<li><a href="navigation.html#navigation">Chapter 3: Navigation</a></li>
+<ul>
+<li><a href="mainW.html#mainW">3.1 Main Window Overview</a></li>
+<li><a href="generaloperation.html#generaloperation">3.2 General Operation </a></li>
+<li><a href="kbshortcuts.html#kbshortcuts">3.3 Keyboard Shortcuts </a></li>
+<li><a href="cmdAcclKeys.html#cmdAcclKeys">3.4 Mouse Actions</a></li>
+</ul>
+<li><a href="faqs.html#faqs">Appendix A: Frequently Asked Questions</a></li>
+<ul>
+<li><a href="faqsTransfer.html#faqsTransfer">A.1 Moving from Design to Roadbed </a></li>
+<li><a href="faqsHotBar.html#faqsHotBar">A.2 Hot Bar Items Missing!</a></li>
+<li><a href="faqsPrototype.html#faqsPrototype">A.3 Unable to Add Cars to Inventory!</a></li>
+<li><a href="faqsJoin.html#faqsJoin">A.4 How Do I Place and Join Tracks</a></li>
+</ul>
+<li><a href="glossary.html#glossary">Appendix B: Glossary</a></li>
+<ul>
+<li><a href="windowTerms.html#windowTerms">B.1 Window Terms</a></li>
+<li><a href="generalTerms.html#generalTerms">B.2 XTrackCAD Terms</a></li>
+<li><a href="controlElementScripts.html#controlElementScripts">B.3 Control Element Scripts and the Model RR System's Dispatcher</a></li>
+</ul>
+<li><a href="messages.html#messages">Appendix C: Messages and Explanations</a></li>
+<ul>
+<li><a href="messageType.html#messageType">C.1 Message Types</a></li>
+<li><a href="messageList.html#messageList">C.2 Message Explanations</a></li>
+</ul>
+<li><a href="upgrades.html#upgrades">Appendix D: Upgrade From Earlier <em>XTrackCAD</em> Version</a></li>
+<ul>
+<li><a href="v5.html#v5">D.1 Version 5.x</a></li>
+<li><a href="cmdUpdatetitle.html#cmdUpdatetitle">D.2 Version 2.x</a></li>
+<li><a href="v4.0.3_revisions.html#v4.0.3_revisions">D.3 Version 4.0.3</a></li>
+<li><a href="v4.0.x_revisions.html#v4.0.x_revisions">D.4 Version 4.0.x</a></li>
+</ul>
+<li><a href="warrantyLicenseCopy.html#warrantyLicenseCopy">Appendix E: Warranty, License and Copying</a></li>
+<ul>
+<li><a href="warranty.html#warranty">E.1 Warranty</a></li>
+<li><a href="copydist.html#copydist">E.2 Copying and Distribution</a></li>
+<li><a href="GNUGPLicense.html#GNUGPLicense">E.3 GNU General Public License License</a></li>
+<li><a href="Contributions.html#Contributions">E.4 Contributions</a></li>
+</ul>
+<li><a href="IndexPage.html#Index">Index</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Introduction To XTrackCAD</title>
+<link rel="previous" href="contents.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="whyXTrackCAD.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"><meta name="AppleTitle" content="org.xtrkcad.help" />
+</head>
+<body>
+<h1><a name="index"></a>Chapter 1: Introduction To <em>XTrackCAD</em></h1>
+<p>
+<em>XTrackCAD</em> is a CAD (computer-aided design) program for designing Model Railroad layouts. <em>XTrackCAD</em> supports any scale, has libraries of popular brands of turnouts and sectional track (plus you add your own easily), can automatically use spiral transition curves when joining track and has extensive on-line help and demonstrations. <em>XTrackCAD</em> lets you manipulate track much like you would with actual flex-track to modify, extend and join tracks and turnouts. Additional features include tunnels, 'post-it' notes, on-screen ruler, parts list, 99 drawing layers, undo/redo commands, bench-work, 'Print to Bitmap', elevations, train simulation and car inventory.
+</p>
+<p>
+Using it, you can
+</p>
+<ul><li>
+Design layouts in any scale and gauge,
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Use predefined libraries for many popular brands of turnouts to help you get started easily,
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Add your own favorite components,
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Manipulate track much like you would with actual flex-track to modify, extend and join tracks and turnouts,
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Automatically generated Cornu <em>transition curves</em> (easements) whenever the track radius changes.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Test your design by running trains, including picking them up and moving them with the mouse.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Trace tracks and other objects over a background image of a real-world location map, a scanned trackplan, or other image.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Print the design in a scale of your choice. When printed in 1:1 scale the printout can be used as a template for laying the track to build your dream layout.
+</li>
+</ul>
+<p>
+
+</p>
+<p>
+New users should run the demonstrations (via the <strong>Help&gt;Demos</strong> menu) to get an overview of the many features of the program. A number of example layout designs are also available.
+</p>
+<p>
+Be sure to visit the project web page for latest news and updates: <a href="http://www.xtrkcad.org/" target="_blank"><em>XTrackCAD</em> Fork Website</a>
+</p>
+<hr>
+<ul>
+<li><a href="whyXTrackCAD.html#whyXTrackCAD">1.1 Why Choose <em>XTrackCAD</em></a></li>
+<li><a href="keyFeatures.html#keyFeatures">1.2 Key <em>XTrackCAD</em> Features</a></li>
+<li><a href="addFeatures.html#addFeatures">1.3 Additional <em>XTrackCAD</em> Features</a></li>
+<li><a href="aboutmanual.html#aboutmanual">1.4 About This Manual</a></li>
+<li><a href="installSoftware.html#installSoftware">1.5 Installation</a></li>
+<ul>
+<li><a href="MSWinInstall.html#MSWinInstall">1.5.1 Microsoft Windows Installation</a></li>
+<li><a href="OSXInstall.html#OSXInstall">1.5.2 OSX Installation Mac Installation</a></li>
+<li><a href="LinuxInstall.html#LinuxInstall">1.5.3 Linux Installation</a></li>
+</ul>
+<li><a href="startSoftware.html#startSoftware">1.6 Start the Program</a></li>
+<li><a href="introQT.html#introQT">1.7 Quick Tour</a></li>
+<li><a href="performance.html#performance">1.8 Performance Issues</a></li>
+<li><a href="directories.html#directories">1.9 Files and Directories</a></li>
+<ul>
+<li><a href="dirOverview.html#dirOverview">1.9.1 Directories Overview</a></li>
+<li><a href="installDir.html#installDir">1.9.2 Install Directory</a></li>
+<li><a href="workDir.html#workDir">1.9.3 Working Directory</a></li>
+</ul>
+<li><a href="uninstall.html#uninstall">1.10 Removing <em>XTrackCAD</em></a></li>
+<li><a href="bugs_enhancements.html#bugs_enhancements">1.11 Bugs and Enhancements</a></li>
+<ul>
+<li><a href="bugs.html#bugs">1.11.1 Reporting Bugs</a></li>
+<li><a href="enhancements.html#enhancements">1.11.2 Enhancement Requests</a></li>
+<li><a href="support.html#support">1.11.3 User Support</a></li>
+</ul>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Why Choose XTrackCAD</title>
+<link rel="previous" href="index.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="keyFeatures.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="whyXTrackCAD"></a>1.1 Why Choose <em>XTrackCAD</em></h1>
+<p>
+<strong>Why Choose XTrackCAD</strong>
+</p>
+<p>
+<strong>Easy to use</strong>
+</p>
+<p>
+<em>XTrackCAD</em> was designed to operate in a similar way to pencil and paper: You can draw tracks by dragging the mouse, you select and place turnout "templates" anywhere on existing tracks, and you can use fixed radii for initial design.
+</p>
+<p>
+But extra capabilities have been added that give more power by using Flex-tracks (Cornu) you have tracks that automatically redraw as you drag turnouts around, creating smooth curves, you can zoom in and out, and of course, undo and deleting tracks are easier!
+</p>
+<p>
+You don't have to be an expert CAD user to make the most of <em>XTrackCAD</em> but the program will ensure that dimensions, radii and angles are accurate.
+</p>
+<p>
+You don't have to specify line lengths or angles and just draw. But if you want to be more precise, you can enter precise dimensions both in real-world and scale sizes.
+</p>
+<p>
+<em>XTrackCAD</em> is a specialized CAD for railway modelling, it deals with tracks as tracks, not as line segments. Tracks are connected correctly to each other and with endpoints of turnouts and other components.
+</p>
+<p>
+As you zoom in, the two rails are drawn and then ties are added.
+</p>
+<p>
+<strong>Free</strong>
+</p>
+<p>
+Thanks to the generosity of Dave Bullis, who wrote the progam, and the active help of open-source volunteers, XTrackCAD is free to own and use. You can even take up the cudgels and help!
+</p>
+<p>
+<strong>Available Help</strong>
+</p>
+<p>
+On-line demonstrations show the actual operation of many of the program's features. Extensive help is available for all commands and operations. There are communities of users and developers who can answer quaestions.
+</p>
+<p>
+<strong>Packed with features</strong>
+</p>
+<p>
+<em>XTrackCAD</em> is designed from the ground up to be a complete tool for many aspects of Model Railroad layout design.
+</p>
+<dl><dt>
+<em>Active UI Prompting</em>
+</dt>
+<dd>
+As the mouse moves over the layout objects, a set of different anchors are shown to indicate what is possible in each command with each modifier key if clicked or double clicked at that location.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Train Simulation and Car Inventory</em>
+</dt>
+<dd>
+Any number of Cars and Locomotives can be placed on your layout to check clearances, siding capacities and track layout. Trains can be animated to simulate operations and switching on your layout.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The Car Inventory dialog records your cars and locomotives and these can be exported and imported from spreadsheets.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Track Manipulation</em>
+</dt>
+<dd>
+Track segments can be lengthened or shortened by simple click and drag. Tangents to a curve are created by dragging away from the curve. Tracks are extended by dragging from an Endpoint, creating new straight or curved segments. New tracks can be snapped into place or precisely placed and then Joined.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Track circles are especially handy for determining overall designs and seeing what will fit in a given area.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The Cornu flex-track features create dynamically variable tracks that optimise the curvature of tracks to ensure a protypical appearance. They alter as the other tracks are moved just as flex-track will in the 12 inches to the foot world!
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The Parallel command easily creates new straight or curved tracks, laying out yards and sidings in a few easy steps. Accurate platforms can be created with the Parallel Lines command followed by the Join Lines command.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The Join command links any two tracks (Straights, Curves, Turnouts or Turntables) with accurate aligned connecting track segments which can be easements including Cornu easements. The connected tracks are trimmed or extended as required.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The Helix Track command computes the number of turns, radius, grade and vertical separation based on your criteria.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Turntables can be constructed with any radius and can either have fixed or dynamic bay tracks
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Turnout Select and Placement</em>
+</dt>
+<dd>
+The Turnout Hot Bar contains a scrolling list of Turnouts, Sectional Tracks and Structures available in the current Scale. Simply click on one and click again drop it onto the layout.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+As Turnouts are dragged over existing tracks they are automatically aligned. <em>XTrackCAD</em> searches for any other tracks that align with each of the Turnout's Endpoints, and shows you the number of connections that will be made and the maximum offset as you position the Turnout. Just adjust the Turnout's position to minimize the offset to ensure the best fit.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+When a turnout is placed, each Endpoint is examined to see if it aligned to an existing track. If so, the track is split to create a perfect connection to the turnout. Placing Turnouts is a 'snap'.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Layers</em>
+</dt>
+<dd>
+Layers are an important feature for manageing the design for layouts of any complexity. Use one layer for the main-line and others for staging tracks, Bench-work or scenery. Multilevel designs can have groups of layers for each level.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>XTrackCAD</em> allows up to 99 layers layers can have their own button to control visibility. Each layer can have a name which is displayed as the balloon help for the layer button.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Modular Layout assembly is supported with Modular Layers which ensure thier contents are moved as a set.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Tracks and other objects can be colored according to which layer they are in. Also, each layer can be frozen to prevent accidental changes to parts of the layout that are finalized.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Elevations and Profile</em>
+</dt>
+<dd>
+Elevations are one of the most powerful features of <em>XTrackCAD</em> they are dynamically recalulated as the layout changes.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Traditional layout designs (such as published in magazines) show elevations at selected spots on the layout. They may also show grades between elevations. These can be input into XtrkCAD.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>XTrackCAD</em> lets you define the elevation of any Endpoint on the layout. You can also have <em>XTrackCAD</em> automatically compute the elevation and grade between defined elevation points. You can define the elevation at the bottom and top of a sloped track, then have <em>XTrackCAD</em> compute the elevation at each riser position between.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Once you have defined a few elevations, you can display the Elevation Profile for the layout along a path of connected track segments. The Profile display shows the length of the track, the elevation of each defined elevation point and the grades between them. You can even adjust the elevations directly on the Profile display.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Easements (Cornu Transition Curves)</em>
+</dt>
+<dd>
+Easements are special sections of gradually curving track used to connect straight and curved tracks (or two curved tracks). Easements reduce the effects of sudden changes in track curves which can cause derailments. They also look great!
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>XTrackCAD</em> can use Easements anytime the radius of the track changes. The Modify and Join commands will automatically insert Easement Track segments whenever needed. Each Easement is computed based on the radius of the neighboring tracks. You don't even have to think about it!
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Flexible and Powerful Printing</em>
+</dt>
+<dd>
+Printing is an important part of a layout design program, and <em>XTrackCAD</em> has a flexible Print command to get your design onto the layout.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Printing is used for many purposes:
+<ul><li>
+A snapshot of the whole layout.
+</li>
+<li>
+Detailed closeups to examine areas of complicated track work.
+</li>
+<li>
+Full 1:1 for direct transfer to the layout.
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The Print command lets you scale the printout from a one page overall view (with the handy Snap-Shot button) right up to full size 1:1.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Multiple page printouts are easy to do. A gird representing each page is drawn over the layout and you can click on the pages you want to print. The gird can be moved and rotated to any position so the orientation of the printout matches your layout. Pages can be printed in Portrait or Landscape format.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+At 1:1, registration marks can be printed every 3" (or 10cm) to help align different sets of printouts. Also, the roadbed outline can be drawn at a user-specified width to assist cutting the roadbed from sheet material.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Turnout and Structure Creation</em>
+</dt>
+<dd>
+<em>XTrackCAD</em> comes with Turnout, Sectional Track and Structure Parameter Files for many brands of tracks and accessories. However, your brand may not supplied. The Turnout Designer dialogs and the Group command make it easy to add your own custom definitions.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The Turnout Editor has separate screens for designing Turnouts (Regular, Curved, Wye and 3-way), Crossings, Slip-switch, Crossovers and Sectional Track. In each dialog a few measurements are required to create a new definition. Full size printouts can be made directly from the dialog to check your design.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The Group command can create Structure definitions from selected tracks, lines and shapes. You can make structures as simple as a rectangle or highly detailed. You can also modify existing designs to add details or make adjustments.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Lines, Shapes, Table Edges, Text and Notes</em>
+</dt>
+<dd>
+Layout designs are more than track!
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <em>XTrackCAD</em> Draw command is used to draw lines (straight, curved and circles) and shapes (filled boxes, circles, polylines and polygons). These can be different colors and lines can have different widths. The Polylines and Polygons can have curved sides. These are useful for drawing scenic features (rivers, bridges, mountains).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+You can add Bench-work and dimension lines too.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Special types of lines are drawn by the Table Edge command are used to represent the boundary at the edge of the layout.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Text can be added to the layout.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Notes can be attached to particular spots on the layout. When selected they can display special information about that part of the layout, such as prototype features, construction details or operation notes. This includes URL links to files on the Internet.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Parts and Price Lists</em>
+</dt>
+<dd>
+The Parts List command generates a list of the number of the different types of Turnouts, Sectional Track and Structures selected on the layout. You can select everything or just the areas you are working on. As well, the total length of flex-track (for each track scale/gauge used on the layout) is listed.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+You can enter the price of each type of Turnout, Sectional Track and Structure, plus the length and price of flex-track. <em>XTrackCAD</em> will compute the price of each types and the grand total. The total number of flex-track sections is also listed.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Support for Sectional Track</em>
+</dt>
+<dd>
+Numerous Sectional Track Parameter Files are included with <em>XTrackCAD</em> (Atlas, Marklin, Peco, ...). The Hot Bar allows easy selection.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The automatic alignment feature of Turnout and Sectional Track placements makes track pieces just 'snap' together.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The Connect Track command adjusts Sectional Track to smooth out the slight gaps that can arise when working with Sectional Track.
+</dd>
+</dl>
+<p>
+
+</p>
+<p>
+Refer to <a href="keyFeatures.html#keyFeatures">Section 1.2</a> and <a href="addFeatures.html#addFeatures">Section 1.3</a> for a listing of <em>XTrackCAD</em> features.
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Key XTrackCAD Features</title>
+<link rel="previous" href="whyXTrackCAD.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="addFeatures.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="keyFeatures"></a>1.2 Key <em>XTrackCAD</em> Features</h1>
+<ul><li>
+Annotate with text and notes
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Automatic easement calculation
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Create Custom Designed Turnouts and Structures
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Create parallel straight and curved tracks
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Delete objects
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Describe objects
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Draw lines, arcs, polylines and polygons and filled polygons or circular shapes (for showing river edges etc.)
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Draw table edges, Bench-work and dimension lines
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Elevations, grades and profiles
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Extend (or shrink) a segment by dragging its Endpoint
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Extend a segment with a curve (or straight)
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Generate parts list for all or selected areas of the layout
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Hand-laid Turnouts
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Helix track
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Hot Bar for Turnout and Structure selection
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Join any two tracks
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Move and rotate any group of objects
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Ninety-nine drawing Layers
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+On-line demonstrations, extensive help, tips and error message explanations
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+On-screen ruler for measurements
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Panning and zooming via a map window and also in Pan/Zoom Mode
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Price lists can be entered to allow the layout to be priced
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Printing in any scale (up to 1:1) at any position and angle
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Straight and curved flex-track segments
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Supports any scale
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Track circles and tangent tracks
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Train Simulation
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Tunnels (hidden tracks)
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Turnouts, crossings (and sectional track such as Atlas Snap-track)
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Turntables (user defined diameter)
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Undo the last ten commands
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Zoom in and zoom out of the drawing area
+</li>
+</ul>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Additional XTrackCAD Features</title>
+<link rel="previous" href="keyFeatures.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="aboutmanual.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="addFeatures"></a>1.3 Additional <em>XTrackCAD</em> Features</h1>
+<p>
+<em>XTrackCAD</em> has many other carefully selected features:
+</p>
+<ul><li>
+Sections of track can be hidden, which can be drawn as dashed lines, or completely hidden. A Tunnel Portal is drawn when a hidden track connects with normal track.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Sections of track can be tagged as bridge tracks which draws a bridge parapet on each side.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Drawing Turntable stall tracks is easy, just drag from the Turntable with the Modify command. The minimum angle between tracks can be set to ensure accurate, evenly spaced tracks.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Connections to non-visible layers are marked to an arrow head to show you the track continues on another layer.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The Group command can be used to decorate custom designed Turnouts and Sectional Track with details to indicate switch machines, ground throws and power connections.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Custom designed Turnouts can be modified, renamed or deleted with the Custom Management dialog.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Flex-track connected to Turnouts is labeled with the total length to aid cutting flex-track to length.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+An on-screen ruler can be user to measure arbitrary distances.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+At 1:1 drawing (and printing) scale the track center line is drawn to make it easy to position roadbed and track.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The balloon help for the Undo and Redo buttons shows the command that would be Undone or Redone.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The Snap Grid can positioned at any origin and any angle. It can also be printed to help when transferring coordinates to the layout.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The Map window is used to position the Main window on the layout. It can also be used to change the drawing scale.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+You can rescale and flip objects, trim turnouts and create block gaps.
+</li>
+</ul>
+<p>
+
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>About This Manual</title>
+<link rel="previous" href="addFeatures.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="installSoftware.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="aboutmanual"></a>1.4 About This Manual</h1>
+<p>
+<a name="i0"></a><strong>Typographic Conventions</strong>
+</p>
+<p>
+Throughout this manual the following typographic conventions are used to make finding information easier:
+</p>
+<dl><dd>
+<strong>Bold</strong> - Shows menu, file or dialog item titles.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<code>Mono-spaced</code> - Shows commands or text entries by user. On entry fields the spelling given has to be followed exactly.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Italic</em> - Marks a new expression, usually followed by a short description
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<code>Capital Key</code> - Usually used in a sequence of key strokes or in combination with <em>Shift, Alt or Ctrl</em> key.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<code>Key+Key</code> - Combination of keys, e.g., <code>Ctrl+S</code>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<code>Key, Key, Key</code> - Sequence of key strokes, e.g., <code>Alt, F, S</code>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Selection&gt;Selection</strong> - Sequence of selections from menu, e.g., <strong>File&gt;Save</strong>
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Installation</title>
+<link rel="previous" href="aboutmanual.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSWinInstall.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="installSoftware"></a>1.5 Installation</h1>
+<p>
+<em>XTrackCAD</em> is designed to operate under Linux, Apple MacOS or Microsoft Windows. Information within this section of the manual pertains to installation of the application in either of these environments.
+</p>
+<hr>
+<ul>
+<li><a href="MSWinInstall.html#MSWinInstall">1.5.1 Microsoft Windows Installation</a></li>
+<li><a href="OSXInstall.html#OSXInstall">1.5.2 OSX Installation Mac Installation</a></li>
+<li><a href="LinuxInstall.html#LinuxInstall">1.5.3 Linux Installation</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Microsoft Windows Installation</title>
+<link rel="previous" href="installSoftware.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="OSXInstall.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSWinInstall"></a>1.5.1 <a name="i0"></a>Microsoft Windows Installation</h1>
+<p>
+<em>XTrackCAD</em> is shipped as a self-installing self-expanding program (executable).
+</p>
+<ol><li>
+Using Windows Explorer, locate the directory in which you downloaded or copied your new version of <em>XTrackCAD</em>.
+<p>
+
+</p>
+
+</li>
+<li>
+Start the installation program by double clicking on the <strong>xtrkcad-setup-5.3.0GA.exe</strong> file icon.
+<p>
+
+</p>
+
+</li>
+<li>
+Follow the steps in the installation program.
+<p>
+
+</p>
+
+</li>
+<li>
+The installation lets you define the directory in which <em>XTrackCAD</em> is installed. The directory is created automatically if it doesn't already exist.
+<p>
+
+</p>
+
+</li>
+<li>
+A program folder named <code>XTrkCad</code> will be created during the installation process. The folder contains the program, documentation, parameter and example files.
+</li>
+</ol>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>OSX Installation Mac Installation</title>
+<link rel="previous" href="MSWinInstall.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="LinuxInstall.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="OSXInstall"></a>1.5.2 <a name="i0"></a>OSX Installation <a name="i1"></a>Mac Installation</h1>
+<p>
+<em>XTrackCAD</em> for OSX is shipped as a package containing an application.
+</p>
+<ol><li>
+Start the installation by opening the package and dragging the contained application into the <em>Applications</em> folder using the shortcut in the package. The application includes the program, documentation, parameter and example files within it.
+<p>
+
+</p>
+
+</li>
+<li>
+To run on Apple MacOS, the <em>XQuartz</em> package must first have been installed - see <a href="http://www.xquartz.org" target="_blank">http://www.xquartz.org</a>. XQuartz will need to be upgraded after each OS version upgrade.
+<p>
+
+</p>
+
+</li>
+<li>
+<a name="i2"></a>OSX Run Security When the application is first run, it will need to be authorized by OSX. There will be a OSX prompt that asks if it should be opened. And then it will still fail to run. After opening it for the first time, go to <em>System Preferences&gt;Security &amp; Privacy</em> and you will see that the app is named as having been blocked. Hit the <em>Run Anyway</em> button and the program should start. This sequence may be necessary after each OS upgrade.
+</li>
+<li>
+On Mac OS Catalina, the program will need to be started by right-clicking it and selecting <strong>Open</strong>.
+</li>
+</ol>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Linux Installation</title>
+<link rel="previous" href="OSXInstall.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="startSoftware.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="LinuxInstall"></a>1.5.3 <a name="i0"></a>Linux Installation</h1>
+<p>
+<em>XTrackCAD</em> for LINUX is shipped as a self-extracting archive (executable).
+</p>
+<ol><li>
+Installing from the self-extracting archive.
+<dl><dd>
+After downloading open a command line then
+</dd>
+<dd>
+<code>./xtrkcad-setup-5.3.0GA.i386.sh --prefix=/usr/local --exclude-subdir</code>
+</dd>
+<dd>
+This will install the executable in /usr/local/bin. A directory named <code>xtrkcad</code> will be created in /usr/local/share and all files will be unpacked into it.
+</dd>
+</dl>
+
+</li>
+</ol>
+<p>
+If you install <em>XTrackCAD</em> into another directory, set the <code>XTRKCADLIB</code> environment variable to point to that directory.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Start the Program</title>
+<link rel="previous" href="LinuxInstall.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="introQT.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="startSoftware"></a>1.6 <a name="i0"></a>Start the Program</h1>
+<p>
+The <em>XTrackCAD</em> executable is named xtrkcad.exe on Windows and xtrkcad on Linux and OSX.
+</p>
+<p>
+It is usually started by clicking on its icon, or right-click and <strong>Open</strong> in OSX Catalina, but there are command line options as well.
+</p>
+<p>
+<strong>Command Line</strong>
+</p>
+<p>
+On Windows:
+</p>
+<pre><code>xtrkcad [/c config] [/v] [/l logfile] [/d logcontrol] layoutfile
+</code></pre>
+<p>
+On Mac OSX:
+</p>
+<pre><code>cd /Applications
+./open xtrkcad --args [-c config] [-v] [-l logfile] [-d logcontrol] layoutfile
+</code></pre>
+<p>
+On Linux:
+</p>
+<pre><code>xtrkcad [-c config] [-v] [-l logfile] [-d logcontrol] layoutfile
+</code></pre>
+<p>
+<strong>Command line parameters</strong>
+</p>
+<dl><dt>
+<code>c config</code>
+</dt>
+<dd>
+configuration to use. This allows you to have several distinct configurations (eg. parameter files, display options).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<code>layoutfile</code>
+</dt>
+<dd>
+filename for the layout to load. This parameter takes precedence over the option to resume with the last layout (<a href="cmdPref.html#cmdPref">Section 2.10.7</a>).
+</dd>
+</dl>
+<p>
+<strong>Debugging Parameters</strong>
+</p>
+<p>
+The following parameters are for debugging purposes and are mainly of interest to the developers.
+</p>
+<dl><dt>
+<code>v</code>
+</dt>
+<dd>
+verbose mode.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<code>d logcontrol</code>
+</dt>
+<dd>
+specifies the amount of logging. The argument logcontrol has the format <code>logmodule[=level]</code>. logmodule defines the functionality that should be logged, the optional level specifies the loglevel. Zero means no logging. Defaults are no modules are logged and loglevel is 1 if omitted from logonctrol parameter.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<code>l logfile</code>
+</dt>
+<dd>
+set logfile, only needed in conjunction with the debug option.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<code>T</code>
+</dt>
+<dd>
+Runs all Regression tests (Demos) and exits with 0 if all are successful or with 1 if there any failures. Regression progress and failures are logged to stdout (Linux and Mac OSX) or xtclog.txt (Windows).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<code>V</code>
+</dt>
+<dd>
+Display the xtrkcad version and exit(0).
+</dd>
+</dl>
+<p>
+
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Quick Tour</title>
+<link rel="previous" href="startSoftware.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="performance.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="introQT"></a>1.7 Quick Tour</h1>
+<p>
+<img src="png.d/main.png">
+</p>
+<p>
+When <em>XTrackCAD</em> starts, it displays the <strong>Main</strong> (<a href="mainW.html#mainW">Section 3.1</a>) and <strong>Map</strong> (<a href="cmdMap.html#cmdMap">Section 3.2.2</a>) windows. The <strong>Map</strong> window is used to change the origin of the <strong>Main</strong> window when the entire layout cannot be displayed at one time.
+</p>
+<p>
+<img src="png.d/maintagged.png">
+</p>
+<p>
+The Menu Bar across the top of the <strong>Main</strong> window contains standard Windows menus. Some of these are particularly useful to the new user:
+</p>
+<ul><li>
+The <strong>File&gt;Exit</strong> menu exits <em>XTrackCAD</em>. You can also exit by selecting the System menu in the upper left corner of the Window.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The <strong>File&gt;Open</strong> menu opens existing layout files and archives. When first installed, the default directory contains some example programs you can look at.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The <strong>Help</strong> menu can be used to read the <em>XTrackCAD</em> Help file. Also, the <strong>Help&gt;Demos</strong> menu selects a number of demonstrations which illustrate various features of <em>XTrackCAD</em>.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The <strong>Options&gt;Layout</strong> menu specifies the working scale and overall room size.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The <strong>Options&gt;Preferences</strong> menu specifies some less frequently changed items. You can use this menu to choose Metric units (<a href="cmdPref.html#cmdPref">Section 2.10.7</a>).
+</li>
+</ul>
+<p>
+
+</p>
+<hr>
+<p>
+The Tool Bar contains icons for each of the commands in the Menus. The icons shown can be customized using the <strong>View-&gt;ToolBar</strong> submenu.
+</p>
+<ul><li>
+The main drawing Mode command is <strong>Select</strong> - which is shown with the red arrow icon. From this mode, selected objects can be <strong>Modified</strong> as well. A close second is the <strong>Describe</strong> mode which allows properties of Objects to be seen and Changed.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+A different mode is <strong>Train</strong> which allows trains to be simulated on the Layout.
+</li>
+</ul>
+<p>
+
+</p>
+<p>
+Under the Tool Bar is the Hot Bar. This contains defined track and drawing objects taken from parameter files. To use a template you select it and then click on the Drawing Area.
+</p>
+<hr>
+<p>
+The main part of the window is the Drawing Area, this is where the Layout is shown in 2D. The view can be zoomed or panned. The <strong>Pan-Zoom</strong> command whise symbol is the crossed arrows allows easiest control, but in <strong>Select</strong> command you can pan with the arrow keys and zoom with the trackpad or mousewheel or <strong>Ctrl</strong>+"+" or "-" can affect the zoom level.
+</p>
+<hr>
+<p>
+At the bottom on the screen are two more areas. The Status Bar contains messages about commands as they are being used, and the Info Bar shows the zoom level and the position of the cursor.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Performance Issues</title>
+<link rel="previous" href="introQT.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="directories.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="performance"></a>1.8 Performance Issues</h1>
+<p>
+This section lists some things that can improve the performance of <em>XTrackCAD</em>.
+</p>
+<ul><li>
+On the <strong>View</strong> dialog (<a href="cmdView.html#cmdView">Section 3.3.11</a>) turn off <strong>Show Snap Grid</strong> or <strong>Change Grid...</strong> to have fewer grid points.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+To speed up initialization, remove unused parameter files (See <strong>Parameter Files</strong> dialog - <a href="cmdPrmfile.html#cmdPrmfile">Section 2.5.7</a>).
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Close the <strong>Map</strong> window if you don't need it to move about the layout. The <strong>Window</strong> (<a href="windowM.html#windowM">Section 2.13</a>) menu can be used reopen the Map window.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+On the <strong>Display</strong> dialog (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>) turn off drawing <strong>Endpoints</strong>, decrease the <strong>Two Rail Scale</strong>, increase <strong>Min Grid Spacing</strong>, set <strong>Draw Ties</strong> to <strong>None</strong> and turn off <strong>Live Map</strong>.
+</li>
+</ul>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Files and Directories</title>
+<link rel="previous" href="performance.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="dirOverview.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="directories"></a>1.9 Files and Directories</h1>
+<p>
+Information within this section of the manual identifies installation directory names, file names and directory and file locations.
+</p>
+<hr>
+<ul>
+<li><a href="dirOverview.html#dirOverview">1.9.1 Directories Overview</a></li>
+<li><a href="installDir.html#installDir">1.9.2 Install Directory</a></li>
+<li><a href="workDir.html#workDir">1.9.3 Working Directory</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Directories Overview</title>
+<link rel="previous" href="directories.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="installDir.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="dirOverview"></a>1.9.1 <a name="i0"></a>Directories Overview</h1>
+<p>
+<em>XTrackCAD</em> uses two directories on your system:
+</p>
+<ul><li>
+The <em>XTrackCAD Install</em> directory, which contains the data and parameter files used by <em>XTrackCAD</em>.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The <em>XTrackCAD Working</em> directory, which contains configuration and Check Point files.
+</li>
+</ul>
+<p>
+On MS Windows, the <em>Install</em> directory is set when you install <em>XTrackCAD</em>. All data files (parameters, demos, examples) can be found in the <code>share/xtrkcad</code> subdirectory underneath the <em>Install</em> directory. The <em>Working</em> directory is in your personal profile.
+</p>
+<p>
+On Linux, the <em>Install</em> directory is usually <code>/usr/local/lib/xtrkcad/</code>, but you can change this by defining the <code>XTRKCADLIB</code> environment variable before starting <em>XTrackCAD</em>. The working directory is <code>{HOME}/.xtrkcad/</code>.
+</p>
+<p>
+On Mac OSX, the <em>Install</em> directory is the application package, usually located in the <code>/Applications</code> directory. All the included parameters, demos and examples can be found inside the package under the <code>/Applications/xtrkcad/Contents/Resources/xtrkcad</code> directory. The <em>Working</em> directory is created as <code>.xtrkcad</code> - a hidden directory - under the active user's directory in <code>/Users</code>
+</p>
+<p>
+Layout files (<code>*.xtc</code>) and export (<a href="cmdExport.html#cmdExport">Section 2.5.1</a>) files (<code>*.xti</code>) can be saved anywhere you wish, as specified in the <strong>Save File</strong> and <strong>Open File</strong> dialogs.
+</p>
+<p>
+In MacOS Catalina, the program has no access to certain directories - the Documents and Download directories in particular.
+</p>
+<p>
+Example layouts can be found in the <code>example</code> directory under the <em>XTrackCAD</em> install directory.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Install Directory</title>
+<link rel="previous" href="dirOverview.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="workDir.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="installDir"></a>1.9.2 <a name="i0"></a>Install Directory</h1>
+<ul><li>
+<code>xtrkcad.xtq</code> is the main parameter file which contains definitions for each scale. It also includes turnout definitions for the demos and lists the playback (<em>.xtr</em>) files for the demos.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+<code>params</code> directory contains <code>*.xtp</code> files which are the <em>XTrackCAD</em> Library parameter files. These files (<code>atlasn.xtp, pecon55.xtp, ...</code>) contain definitions for turnouts, sectional track pieces and structures. These files to be used are selected in the <strong>Parameter Files (</strong><a href="cmdPrmfile.html#cmdPrmfile">Section 2.5.7</a><strong>)</strong> dialog.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+<code>xtrkcad.chm</code> (on MS-Windows) is the <em>XTrackCAD</em> help file.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+<code>xtrkcad.exe</code> (MS-Windows) or <code>xtrkcad</code> (Linux or Mac OSX) is the <em>XTrackCAD</em> program.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+<code>xtrkcad.tip</code> contains the Tip of the Day information accessible from the <strong>Help</strong> menu or shown during startup.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+<code>xtrkcad0.ini</code> specifies the location of the <em>XTrackCAD</em> working directory (MS-Windows only).
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+<code>demos</code> directory contains <code>*.xtr</code> which are the <em>XTrackCAD</em> demonstration files which can be run via the <strong>Help&gt;Demos</strong> menu item.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+<code>examples</code> directory contain some example <code>.xtc</code> files
+</li>
+</ul>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Working Directory</title>
+<link rel="previous" href="installDir.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="uninstall.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="workDir"></a>1.9.3 <a name="i0"></a>Working Directory</h1>
+<ul><li>
+<code>xtrkcad.ckp</code> are the <em>check-point</em> files created periodically while running <em>XTrackCAD</em>. If your system <em>XTrackCAD</em> hangs or crashes you get the choice of loading the checkpoint file and so recover (most of) your work by saving it to your current layout file.
+<p>
+The check-point frequency is set by the <em>Check Point</em> field found in the <strong>Preferences</strong> dialog (<strong>Options&gt;Preferences</strong>).
+</p>
+
+</li>
+<li>
+The <code>xtrkcad.cus</code> file contains parameter information. This is mostly information created by the <strong>Turnout Designer</strong> dialogs (<a href="cmdTurnoutNew.html#cmdTurnoutNew">Section 2.9.9</a>) and <strong>Group</strong> (<a href="cmdGroup.html#cmdGroup">Section 2.9.4</a>) command. You can use the <strong>Edit&gt;Custom Management</strong> dialog to manipulate these parameters.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The <code>xtrkcad.ini</code> (on MS-Windows) or the <code>xtrkcad.rc</code> (on Linux or Mac OSX) file contains various parameter settings from each use of <em>XTrackCAD</em>. Most changes you make (such as scale, room size, window position) are saved in this file for the next time you use <em>XTrackCAD</em>.
+</li>
+</ul>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Removing XTrackCAD</title>
+<link rel="previous" href="workDir.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="bugs_enhancements.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="uninstall"></a>1.10 <a name="i0"></a>Removing <em>XTrackCAD</em></h1>
+<p>
+Remove <em>XTrackCAD</em> by deleting the <em>XTrackCAD Install</em> directory, or application (on Mac OSX), deleting any <code>xtrkcad.*</code> files from the <em>Working</em> directory, and deleting any <em>*.xtc</em> and <em>*.xti</em> files.
+</p>
+<p>
+On MS-Windows only, you can also use the <strong>Uninstall</strong> icon in the <em>XTrackCAD</em> program group.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Bugs and Enhancements</title>
+<link rel="previous" href="uninstall.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="bugs.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="bugs_enhancements"></a>1.11 Bugs and Enhancements</h1>
+<p>
+This section of the manual describes how and where to report a bug or seek an enhancement.
+</p>
+<hr>
+<ul>
+<li><a href="bugs.html#bugs">1.11.1 Reporting Bugs</a></li>
+<li><a href="enhancements.html#enhancements">1.11.2 Enhancement Requests</a></li>
+<li><a href="support.html#support">1.11.3 User Support</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Reporting Bugs</title>
+<link rel="previous" href="bugs_enhancements.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="enhancements.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="bugs"></a>1.11.1 Reporting <a name="i0"></a>Bugs</h1>
+<p>
+If you encounter an unreported bug please submit detail regarding such to the <strong>Bug Tracker</strong> located at the <a href="https://sourceforge.net/p/xtrkcad-fork/bugs/" target="_blank"><em>XTrackCAD</em> Fork Project Site</a>.
+</p>
+<p>
+<strong>Be sure to provide the three basic elements of a bug report:</strong> What you were doing at the time the bug occurred, what you expected to happen and what actually happened. This detail will help developers replicate the error, find and correct the offending code.
+</p>
+<dl><dt>
+<strong>A Sample Bug Report Follows;</strong>
+</dt>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+After completing installation of <em>XTrackCAD</em> on a Dell PC with 1024 MB of memory running Windows 7, the following error occurred when attempting to edit a Text Label;
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<code>Notice: allocateButt: Can't find 13. Do you want to save the layout?</code>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Selecting either "Yes" or "No" results in a Windows error and <em>XTrackCAD</em> closes.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The error can be replicated by opening the file named cascade.xtc. Set the magnification at 4:1. Attempting to move the text label named "Granville Island" located at the approximate grid coordinates of x=8", y=4' 5". Selecting the label causes the error to occur.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The error is repeatable with other files contain text labels.
+</dd>
+</dl>
+<p>
+<strong>Always search the bug database first.</strong> Advice so good, we'll repeat it twice. Always search the bug database first. The odds are good that if you've found a problem, someone else found it too. If you spend a few minutes of your time making sure that you're not filing a duplicate bug, that's a few more minutes someone can spend helping to fix that bug rather than sorting out duplicate bug reports.
+</p>
+<p>
+<strong>If you don't understand an error message, ask for help.</strong> Don't report an error message you don't understand as a bug. There are a lot of places you can ask for help in understanding what is going on before you can claim that an error message you do not understand is a bug. (Once you've understood the error message and have a good suggestion for a way to make the error message clearer, you might consider reporting it as a <a href="https://sourceforge.net/p/xtrkcad-fork/feature-requests/" target="_blank"><em>XTrackCAD</em> Feature Request</a>).
+</p>
+<p>
+<strong>Please be brief, but don't leave any important details out.</strong> This is a fine line to walk. But there are some general guidelines:
+</p>
+<p>
+Remember the three basics: what you were doing, what you expected to happen, and what happened.
+</p>
+<p>
+If you can recreate the problem the <strong>Macro&gt;Record</strong> command can be used to record what happened. Try to isolate the problem by creating a minimal layout and recording as few commands as possible.
+</p>
+<p>
+<strong>Don't report bugs about old versions.</strong> Every time a new version of <em>XTrackCAD</em> is released, many enhancements are added and known bugs are fixed. If you're using a version of <em>XTrackCAD</em> that's more than two revisions older than the latest version, you should upgrade to the latest version to make sure the bug you are experiencing still exists. (It's not a bad idea to upgrade even if your version is only a version behind the most current one.)
+</p>
+<p>
+<strong>Only report one problem in each bug report.</strong> If you encounter two or more bugs that don't appear to be related create a separate bug report for each one. This makes the task of managing work assignments easier and may result in a quicker fix for the problem.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Enhancement Requests</title>
+<link rel="previous" href="bugs.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="support.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="enhancements"></a>1.11.2 <a name="i0"></a>Enhancement Requests</h1>
+<p>
+Suggestions for improvements are encouraged and welcome. Submit your suggestion to the <em>XTrackCAD</em> <strong>Feature Tracker</strong> located at the <a href="https://sourceforge.net/p/xtrkcad-fork/feature-requests/" target="_blank"><em>XTrackCAD</em> Fork Project Site</a>.
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>User Support</title>
+<link rel="previous" href="enhancements.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="commandMenus.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="support"></a>1.11.3 <a name="i0"></a>User Support</h1>
+<p>
+The developers maintain a forum <a href="https://xtrackcad.groups.io/g/main" target="_blank"><em>XtrackCAD</em> User Forum</a> a Wiki at <a href="http://www.xtrkcad.org/Wikka/HomePage" target="_blank"><em>XTrackCAD</em> Wiki</a>
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Command Menus</title>
+<link rel="previous" href="support.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="addM.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"><meta name="AppleTitle" content="Command Menus" />
+</head>
+<body>
+<h1><a name="commandMenus"></a>Chapter 2: Command Menus</h1>
+<hr>
+<ul>
+<li><a href="addM.html#addM">2.1 Add Menu</a></li>
+<ul>
+<li><a href="cmdCircle.html#cmdCircle">2.1.1 Circle Track</a></li>
+<li><a href="cmdCurve.html#cmdCurve">2.1.2 Curved Track</a></li>
+<li><a href="cmdHandLaidTurnout.html#cmdHandLaidTurnout">2.1.3 Hand-laid Turnouts</a></li>
+<li><a href="cmdHelix.html#cmdHelix">2.1.4 Helix Track</a></li>
+<li><a href="cmdParallel.html#cmdParallel">2.1.5 Parallel Track or Line</a></li>
+<li><a href="cmdStraight.html#cmdStraight">2.1.6 Straight Track</a></li>
+<li><a href="cmdStructure.html#cmdStructure">2.1.7 Structure</a></li>
+<li><a href="cmdNewFixedTrack.html#cmdNewFixedTrack">2.1.8 Fixed-track</a></li>
+<li><a href="cmdTurntable.html#cmdTurntable">2.1.9 Turntables</a></li>
+<li><a href="cmdBlock.html#cmdBlock">2.1.10 Block</a></li>
+<li><a href="cmdSwitchmotor.html#cmdSwitchmotor">2.1.11 Switchmotor</a></li>
+<li><a href="cmdSignal.html#cmdSignal">2.1.12 Signal</a></li>
+<li><a href="cmdControl.html#cmdControl">2.1.13 Control</a></li>
+<li><a href="cmdSensor.html#cmdSensor">2.1.14 Sensor</a></li>
+</ul>
+<li><a href="changeM.html#changeM">2.2 Change Menu</a></li>
+<ul>
+<li><a href="cmdRescale.html#cmdRescale">2.2.1 Change Scale</a></li>
+<li><a href="clrElev.html#clrElev">2.2.2 Clear Elevations</a></li>
+<li><a href="cmdConnect.html#cmdConnect">2.2.3 Connect Tracks</a></li>
+<li><a href="cmdConvert.html#cmdConvert">2.2.4 Convert Tracks</a></li>
+<li><a href="cmdElevation.html#cmdElevation">2.2.5 Elevation</a></li>
+<li><a href="cmdFlip.html#cmdFlip">2.2.6 Flip</a></li>
+<li><a href="cmdJoin.html#cmdJoin">2.2.7 Join Tracks and Lines</a></li>
+<li><a href="cmdModify.html#cmdModify">2.2.8 Modify</a></li>
+<li><a href="cmdMove.html#cmdMove">2.2.9 Move</a></li>
+<li><a href="cmdMoveLabel.html#cmdMoveLabel">2.2.10 Move Description</a></li>
+<li><a href="cmdPan.html#cmdPan">2.2.11 Pan/Zoom</a></li>
+<li><a href="cmdProfile.html#cmdProfile">2.2.12 Profile</a></li>
+<li><a href="cmdDescribe.html#cmdDescribe">2.2.13 Properties</a></li>
+<li><a href="cmdRaiseElev.html#cmdRaiseElev">2.2.14 Raise or Lower Elevation</a></li>
+<li><a href="cmdRotate.html#cmdRotate">2.2.15 Rotate</a></li>
+<li><a href="cmdSelect.html#cmdSelect">2.2.16 Select</a></li>
+<li><a href="cmdSplit.html#cmdSplit">2.2.17 Split Commands</a></li>
+</ul>
+<li><a href="cmdDraw.html#cmdDraw">2.3 Draw Menu</a></li>
+<ul>
+<li><a href="cmdDrawCircles.html#cmdDrawCircles">2.3.1 Circles and Filled Circles</a></li>
+<li><a href="cmdDrawCurves.html#cmdDrawCurves">2.3.2 Curved Lines</a></li>
+<li><a href="cmdNote.html#cmdNote">2.3.3 Note Variants</a></li>
+<li><a href="cmdRuler.html#cmdRuler">2.3.4 Ruler</a></li>
+<li><a href="cmdAngle.html#cmdAngle">2.3.5 Protractor</a></li>
+<li><a href="cmdDrawShapes.html#cmdDrawShapes">2.3.6 Draw Shapes</a></li>
+<li><a href="cmdDrawStraights.html#cmdDrawStraights">2.3.7 Straight Objects</a></li>
+<li><a href="DrawOrigin.html#DrawOrigin">2.3.8 Draw Objects Origin</a></li>
+<li><a href="cmdText.html#cmdText">2.3.9 Text</a></li>
+</ul>
+<li><a href="editM.html#editM">2.4 Edit Menu</a></li>
+<ul>
+<li><a href="cmdSelectIndex.html#cmdSelectIndex">2.4.1 Select By Index</a></li>
+<li><a href="cmdAboveBelow.html#cmdAboveBelow">2.4.2 "Move To Front" and "Move to Back" </a></li>
+<li><a href="addshortcutkeys.html#addshortcutkeys">2.4.3 Additional Shortcut Keys</a></li>
+<li><a href="cmdDelete.html#cmdDelete">2.4.4 Delete</a></li>
+<li><a href="cmdTunnel.html#cmdTunnel">2.4.5 Tunnel (Hide Tracks)</a></li>
+<li><a href="cmdTies.html#cmdTies">2.4.6 Ties (Draw or Hide Ties)</a></li>
+<li><a href="cmdBridge.html#cmdBridge">2.4.7 Bridge (Draw or Hide Abutments)</a></li>
+<li><a href="cmdRoadbed.html#cmdRoadbed">2.4.8 Roadbed (Draw or Hide Base)</a></li>
+<li><a href="cmdUndo.html#cmdUndo">2.4.9 Undo and Redo </a></li>
+</ul>
+<li><a href="fileM.html#fileM">2.5 File Menu</a></li>
+<ul>
+<li><a href="cmdExport.html#cmdExport">2.5.1 Export</a></li>
+<li><a href="cmdOutputbitmap.html#cmdOutputbitmap">2.5.2 Export to Bitmap</a></li>
+<li><a href="ExportDXF.html#ExportDXF">2.5.3 Export to DXF</a></li>
+<li><a href="ExportSVG.html#ExportSVG">2.5.4 Export to SVG</a></li>
+<li><a href="cmdImport.html#cmdImport">2.5.5 Import</a></li>
+<li><a href="cmdImportM.html#cmdImportM">2.5.6 Import as Module</a></li>
+<li><a href="cmdPrmfile.html#cmdPrmfile">2.5.7 Parameter Files</a></li>
+<li><a href="cmdSearchgui.html#cmdSearchgui">2.5.8 Choose Parameter Files</a></li>
+<li><a href="cmdPrint.html#cmdPrint">2.5.9 Printing</a></li>
+<li><a href="printSetup.html#printSetup">2.5.10 Printer Setup</a></li>
+<li><a href="cmdPrintMargin.html#cmdPrintMargin">2.5.11 Printer Margin</a></li>
+</ul>
+<li><a href="helpM.html#helpM">2.6 Help Menu</a></li>
+<ul>
+<li><a href="cmdDemo.html#cmdDemo">2.6.1 Demo Mode</a></li>
+</ul>
+<li><a href="cmdHotBar.html#cmdHotBar">2.7 Hot Bar</a></li>
+<ul>
+<li><a href="Flex-track.html#Flex-track">2.7.1 Flex-track</a></li>
+<li><a href="hbStructures.html#hbStructures">2.7.2 Structures</a></li>
+<li><a href="hbTurnouts.html#hbTurnouts">2.7.3 Turnouts</a></li>
+</ul>
+<li><a href="macroM.html#macroM">2.8 Macro Menu</a></li>
+<li><a href="manageM.html#manageM">2.9 Manage Menu</a></li>
+<ul>
+<li><a href="cmdCarinv.html#cmdCarinv">2.9.1 Car Inventory</a></li>
+<li><a href="cmdCustmgm.html#cmdCustmgm">2.9.2 Custom Management</a></li>
+<li><a href="cmdContmgm.html#cmdContmgm">2.9.3 Layout Control Elements Dialog</a></li>
+<li><a href="cmdGroup.html#cmdGroup">2.9.4 Group Dialog</a></li>
+<li><a href="cmdLayer.html#cmdLayer">2.9.5 Layers Dialog</a></li>
+<li><a href="cmdEnum.html#cmdEnum">2.9.6 Parts List </a></li>
+<li><a href="cmdPricelist.html#cmdPricelist">2.9.7 Price List</a></li>
+<li><a href="cmdTrain.html#cmdTrain">2.9.8 Train Mode </a></li>
+<li><a href="cmdTurnoutNew.html#cmdTurnoutNew">2.9.9 Turnout Designer</a></li>
+<li><a href="cmdRefreshSpecial.html#cmdRefreshSpecial">2.9.10 Update Turnouts and Structures</a></li>
+<li><a href="cmdUngroup.html#cmdUngroup">2.9.11 Ungroup</a></li>
+</ul>
+<li><a href="optionM.html#optionM">2.10 Options Menu</a></li>
+<ul>
+<li><a href="cmdRgbcolor.html#cmdRgbcolor">2.10.1 Colors Dialog</a></li>
+<li><a href="cmdCmdopt.html#cmdCmdopt">2.10.2 Command Option Dialog</a></li>
+<li><a href="cmdDisplay.html#cmdDisplay">2.10.3 Display Dialog</a></li>
+<li><a href="cmdEasement.html#cmdEasement">2.10.4 Easements</a></li>
+<li><a href="fontSelW.html#fontSelW">2.10.5 Font Selection</a></li>
+<li><a href="cmdLayout.html#cmdLayout">2.10.6 Layout Dialog</a></li>
+<li><a href="cmdPref.html#cmdPref">2.10.7 Preferences Dialog</a></li>
+<li><a href="cmdSticky.html#cmdSticky">2.10.8 Sticky Dialog</a></li>
+</ul>
+<li><a href="cmdStatusbar.html#cmdStatusbar">2.11 Status Bar</a></li>
+<li><a href="viewM.html#viewM">2.12 View Menu</a></li>
+<ul>
+<li><a href="cmdMagneticSnap.html#cmdMagneticSnap">2.12.1 Magnetic Snap</a></li>
+<li><a href="cmdGrid.html#cmdGrid">2.12.2 Grid Dialog</a></li>
+<li><a href="toolbarM.html#toolbarM">2.12.3 </a></li>
+<li><a href="cmdZoom.html#cmdZoom">2.12.4 Zoom</a></li>
+</ul>
+<li><a href="windowM.html#windowM">2.13 Window Menu</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Add Menu</title>
+<link rel="previous" href="commandMenus.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdCircle.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="addM"></a>2.1 <a name="i0"></a>Add Menu</h1>
+<p>
+<img src="png.d/madd.png">
+</p>
+<p>
+The <strong>Add Menu</strong> has all the actions related to adding track pieces to the layout.
+</p>
+<dl><dd>
+<a name="i1"></a>Straight Track <code>Ctrl+G</code> - lay straight track pieces of arbitrary lengths
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i2"></a>Curve Track - lay curved track pieces using different modes for selecting start and endpoints and radius (<a href="cmdCurve.html#cmdCurve">Section 2.1.2</a>).
+</dd>
+<dd>
+<img src="png.d/maddcurve.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i3"></a>Circle Track <a name="i4"></a> - place a circle of track by selecting radius, tangent and or center (<a href="cmdCircle.html#cmdCircle">Section 2.1.1</a>).
+</dd>
+<dd>
+<img src="png.d/maddcircle.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i5"></a>Parallel - <a name="i6"></a> <a name="i7"></a> <a name="i8"></a> <a name="i9"></a> create parallel track or line to existing flex-track, straight or curved track. (<a href="cmdParallel.html#cmdParallel">Section 2.1.5</a>)
+</dd>
+<dd>
+<img src="png.d/maddparallel.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i10"></a>Fixed-track <a name="i11"></a> <code>Ctrl+T</code> - select a piece of <strong>Fixed-track</strong> and place on layout.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i12"></a>Hand-laid Turnout <a name="i13"></a> <code>Ctrl+Shift+I</code> - lay a turnout in place on the layout. (<a href="cmdHandLaidTurnout.html#cmdHandLaidTurnout">Section 2.1.3</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i14"></a>Structure <code>Ctrl+Shift+C</code> - Add a predefined structure to the layout.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i15"></a>Helix <code>Ctrl+Shift+H</code> - Add a helix. (<a href="cmdHelix.html#cmdHelix">Section 2.1.4</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i16"></a>Custom Turntable <a name="i17"></a> <code>Ctrl+Shift+N</code> - Place a turntable. (<a href="cmdTurntable.html#cmdTurntable">Section 2.1.9</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i18"></a>Control Element - Create a control element.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i19"></a>Block <a name="i20"></a> - Create a block. (<a href="cmdBlock.html#cmdBlock">Section 2.1.10</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i21"></a>Switchmotor <a name="i22"></a> - Create a switchmotor. (<a href="cmdSwitchmotor.html#cmdSwitchmotor">Section 2.1.11</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i23"></a>Signal <a name="i24"></a> - Create a signal. (<a href="cmdSignal.html#cmdSignal">Section 2.1.12</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i25"></a>Control <a name="i26"></a> - Create a control. (<a href="cmdControl.html#cmdControl">Section 2.1.13</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i27"></a>Sensor <a name="i28"></a> - Create a sensor. (<a href="cmdSensor.html#cmdSensor">Section 2.1.14</a>)
+</dd>
+</dl>
+<hr>
+<ul>
+<li><a href="cmdCircle.html#cmdCircle">2.1.1 Circle Track</a></li>
+<ul>
+<li><a href="cmdCircleFixedRadius.html#cmdCircleFixedRadius">2.1.1.1 Circle Fixed Radius</a></li>
+<li><a href="cmdCircleTangent.html#cmdCircleTangent">2.1.1.2 Circle Fixed Tangent</a></li>
+<li><a href="cmdCircleCenter.html#cmdCircleCenter">2.1.1.3 Circle From Center</a></li>
+</ul>
+<li><a href="cmdCurve.html#cmdCurve">2.1.2 Curved Track</a></li>
+<ul>
+<li><a href="cmdCurveEndPt.html#cmdCurveEndPt">2.1.2.1 Curved Track from End Point</a></li>
+<li><a href="cmdCurveTangent.html#cmdCurveTangent">2.1.2.2 Curved track from Tangent</a></li>
+<li><a href="cmdCurveCenter.html#cmdCurveCenter">2.1.2.3 Curved Track From Center</a></li>
+<li><a href="cmdCurveChord.html#cmdCurveChord">2.1.2.4 Curved Track from Chord</a></li>
+<li><a href="cmdBezier.html#cmdBezier">2.1.2.5 Curved Bezier Track</a></li>
+<li><a href="cmdCornu.html#cmdCornu">2.1.2.6 Create Cornu Track</a></li>
+</ul>
+<li><a href="cmdHandLaidTurnout.html#cmdHandLaidTurnout">2.1.3 Hand-laid Turnouts</a></li>
+<li><a href="cmdHelix.html#cmdHelix">2.1.4 Helix Track</a></li>
+<li><a href="cmdParallel.html#cmdParallel">2.1.5 Parallel Track or Line</a></li>
+<ul>
+<li><a href="cmdParallelTrack.html#cmdParallelTrack">2.1.5.1 Parallel Track</a></li>
+<li><a href="cmdParallelLine.html#cmdParallelLine">2.1.5.2 Parallel Lines</a></li>
+</ul>
+<li><a href="cmdStraight.html#cmdStraight">2.1.6 Straight Track</a></li>
+<li><a href="cmdStructure.html#cmdStructure">2.1.7 Structure</a></li>
+<li><a href="cmdNewFixedTrack.html#cmdNewFixedTrack">2.1.8 Fixed-track</a></li>
+<li><a href="cmdTurntable.html#cmdTurntable">2.1.9 Turntables</a></li>
+<li><a href="cmdBlock.html#cmdBlock">2.1.10 Block</a></li>
+<li><a href="cmdSwitchmotor.html#cmdSwitchmotor">2.1.11 Switchmotor</a></li>
+<li><a href="cmdSignal.html#cmdSignal">2.1.12 Signal</a></li>
+<li><a href="cmdControl.html#cmdControl">2.1.13 Control</a></li>
+<li><a href="cmdSensor.html#cmdSensor">2.1.14 Sensor</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Circle Track</title>
+<link rel="previous" href="addM.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdCircleFixedRadius.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdCircle"></a>2.1.1 <a name="i0"></a>Circle Track</h1>
+<p>
+<img src="png.d/maddcircle.png">
+</p>
+<p>
+A circle track <a name="i1"></a> <a name="i2"></a> is a special form of a curved track that extends 360&#176; and has no endpoints. The drop down menu, which allows selection of the Circle Track creation method, is invoked from the down arrow button located on the right side the Circle track button.
+</p>
+<dl><dd>
+<img src="png.d/bcircle.png">
+</dd>
+<dd>
+<img src="png.d/bmcircle.png">
+</dd>
+<dd>
+<em>Circle Track Button Menu</em>
+</dd>
+</dl>
+<p>
+The three methods (with their Icons and Shortcut keys) used to create a Circle Track are:
+</p>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bcircl1.png"> (<a href="cmdCircleFixedRadius.html#cmdCircleFixedRadius">Section 2.1.1.1</a>) <code>Control+8</code> - Use the Fixed Radius specified on the <a name="i3"></a><em>Circle Radius</em> control displayed on the Status Bar (<a href="mainW.html#mainW">Section 3.1</a>). <code>Left-Drag</code> the Circle track into position.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bcircl2.png"> (<a href="cmdCircleTangent.html#cmdCircleTangent">Section 2.1.1.2</a>) <code>Control+9</code> - <code>Left-Drag</code> from tangent point (Edge) of the Circle track to the Center.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bcircl3.png"> (<a href="cmdCircleCenter.html#cmdCircleCenter">Section 2.1.1.3</a>) <code>Control+0</code> - <code>Left-Drag</code> from the Center of the Circle track to the edge.
+</dd>
+</dl>
+<p>
+
+</p>
+<p>
+If Snap Grid (<a href="cmdGrid.html#cmdGrid">Section 2.12.2</a>) is enabled then circle centers will be constrained to the grid.
+</p>
+<p>
+Circle tracks are useful for fitting curves into corners and other tight places. They're also handy when establishing an initial layout and finding out "what will fit".
+</p>
+<p>
+You can join to and from circles, after which they become curved tracks.
+</p>
+<hr>
+<ul>
+<li><a href="cmdCircleFixedRadius.html#cmdCircleFixedRadius">2.1.1.1 Circle Fixed Radius</a></li>
+<li><a href="cmdCircleTangent.html#cmdCircleTangent">2.1.1.2 Circle Fixed Tangent</a></li>
+<li><a href="cmdCircleCenter.html#cmdCircleCenter">2.1.1.3 Circle From Center</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Circle Fixed Radius</title>
+<link rel="previous" href="cmdCircle.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdCircleTangent.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdCircleFixedRadius"></a>2.1.1.1 <a name="i0"></a>Circle Fixed Radius</h1>
+<p>
+<img src="png.d/bcircl1.png">
+</p>
+<p>
+(<code>Ctrl+8</code>) Use the Fixed Radius specified on the <a name="i1"></a><em>Circle Radius</em> control displayed on the Status Bar (<a href="mainW.html#mainW">Section 3.1</a>). <code>Left-Drag</code> the Circle track into position.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Circle Fixed Tangent</title>
+<link rel="previous" href="cmdCircleFixedRadius.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdCircleCenter.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdCircleTangent"></a>2.1.1.2 <a name="i0"></a>Circle Fixed Tangent</h1>
+<p>
+<img src="png.d/bcircl2.png">
+</p>
+<p>
+(<code>Ctrl+9</code>) <code>Left-Drag</code> from tangent point (Edge) of the Circle track to the Center.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Circle From Center</title>
+<link rel="previous" href="cmdCircleTangent.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdCurve.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdCircleCenter"></a>2.1.1.3 <a name="i0"></a>Circle From Center</h1>
+<p>
+<img src="png.d/bcircl3.png">
+</p>
+<p>
+(<code>Ctrl+0</code>) <code>Left-Drag</code> from the Center of the Circle track to the edge.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Curved Track</title>
+<link rel="previous" href="cmdCircleCenter.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdCurveEndPt.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdCurve"></a>2.1.2 <a name="i0"></a>Curved Track</h1>
+<p>
+<img src="png.d/maddcurve.png">
+</p>
+<p>
+Creating a curve is a two step operation. You will select a point and then <code>Left-Drag</code> to specify the control point depending on the drawing method.
+</p>
+<p>
+A drop-down menu, which allows selection of the Curved Track creation method, is invoked from the down arrow button located on the right side the Curved track button.
+</p>
+<dl><dd>
+<img src="png.d/bcurve.png">
+</dd>
+<dd>
+<img src="png.d/bmcurved.png">
+</dd>
+<dd>
+<em>Curved Track Button Menu</em>
+</dd>
+</dl>
+<p>
+The six methods (with their Shortcut keys) used to create a Curved Track are:
+</p>
+<dl><dd>
+<img src="png.d/bcurve1.png"> <a href="cmdCurveEndPt.html#cmdCurveEndPt">Section 2.1.2.1</a> <code>Control+4</code> - <a name="i1"></a> <a name="i2"></a> Drag out the end and then set its radius by dragging the endpoint.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bcurve2.png"> <a href="cmdCurveTangent.html#cmdCurveTangent">Section 2.1.2.2</a> <code>Control+5</code> - <a name="i3"></a> <a name="i4"></a> Drag from the an endpoint to the center and then drag the second enpoint around that center.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bcurve3.png"> <a href="cmdCurveCenter.html#cmdCurveCenter">Section 2.1.2.3</a> <code>Control+6</code> - <a name="i5"></a> <a name="i6"></a> Drag from the Center of the Curved track to one of the endpoints. Position the second endpoint around the center.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bcurve4.png"> <a href="cmdCurveChord.html#cmdCurveChord">Section 2.1.2.4</a> <code>Control+7</code> - <a name="i7"></a> <a name="i8"></a> Drag from one endpoint to the other endpoint to form the Chord of the Curve. Drag the arc out to form the Curve.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bezier.png"> <a href="cmdBezier.html#cmdBezier">Section 2.1.2.5</a> - Construct a <a name="i9"></a>Bezier Track <a name="i10"></a> by placing its four control points.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bcornu.png"> <a href="cmdCornu.html#cmdCornu">Section 2.1.2.6</a> - Construct a <a name="i11"></a>Cornu Track <a name="i12"></a> curve by selecting the end points and dragging to set the curve values.
+</dd>
+</dl>
+<p>
+
+</p>
+<p>
+For the first four curve mthods, two Red arrow heads will be drawn after the first step to indicate where you can <code>Left-Drag</code> to complete the second step.
+</p>
+<p>
+A straight track will be created if the second endpoint is lined up with the first endpoint except for Bezier and Cornu tracks.
+</p>
+<p>
+The radius of the curve is designed to be in 1/8" increments unless the <em>desired radius</em> field is set non-zero and the radius drawn is close to that value, in which case the radius will snap to that value.
+</p>
+<p>
+If the Snap Grid (<a href="cmdGrid.html#cmdGrid">Section 2.12.2</a>) is enabled then the endpoints will be constrained to the grid if they are not snapped to another object. <code>Shift</code> ensures that other objects will be ignored.
+</p>
+<p>
+Optionally, the curve center point and radius can be displayed for the Curve. This is enabled by the Move Label (<a href="cmdMoveLabel.html#cmdMoveLabel">Section 2.2.10</a>) command.
+</p>
+<p>
+For Beziers and Cornus, the active control point will be drawn in red and the available endpoints are shown with circles.
+</p>
+<p>
+<strong>Note:</strong> You can also create Straight and Curved tracks using <a href="cmdModify.html#cmdModify">section 2.2.8</a> by <code>Left-Drag</code>ging out extra track from an open end-point.
+</p>
+<hr>
+<ul>
+<li><a href="cmdCurveEndPt.html#cmdCurveEndPt">2.1.2.1 Curved Track from End Point</a></li>
+<li><a href="cmdCurveTangent.html#cmdCurveTangent">2.1.2.2 Curved track from Tangent</a></li>
+<li><a href="cmdCurveCenter.html#cmdCurveCenter">2.1.2.3 Curved Track From Center</a></li>
+<li><a href="cmdCurveChord.html#cmdCurveChord">2.1.2.4 Curved Track from Chord</a></li>
+<li><a href="cmdBezier.html#cmdBezier">2.1.2.5 Curved Bezier Track</a></li>
+<li><a href="cmdCornu.html#cmdCornu">2.1.2.6 Create Cornu Track</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Curved Track from End Point</title>
+<link rel="previous" href="cmdCurve.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdCurveTangent.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdCurveEndPt"></a>2.1.2.1 <a name="i0"></a>Curved Track from End Point</h1>
+<p>
+<img src="png.d/bcurve1.png">
+</p>
+<p>
+(<code>Ctrl+4</code>) Drag from one endpoint in the direction of the Curve at that point and release. <code>Left-Drag</code> the red arrows to position the second endpoint.
+</p>
+<p>
+While the first endpoint is being placed, and <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) is enabled, unless <em>Alt</em> is held, if the cursor is on a track, the new curve end will "Snap" to the nearest open track endpoint and you will drag out the second end in aligned to that track, once you are dragging the second end it will be restricted to an arc that has the same end angle as the first endpoint. After a track is competed, the new track will be connected to this first track. This will also happen with <strong>MagneticSnap</strong> set off - if <em>Alt</em> is held.
+</p>
+<p>
+If Magnetic Snap does not find a end, if <strong>SnapGrid</strong> is enabled, the ends will snap to the nearest grid point unless <strong>Alt</strong> is held.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Curved track from Tangent</title>
+<link rel="previous" href="cmdCurveEndPt.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdCurveCenter.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdCurveTangent"></a>2.1.2.2 <a name="i0"></a>Curved track from Tangent</h1>
+<p>
+<img src="png.d/bcurve2.png">
+</p>
+<p>
+(<code>Ctrl+5</code>) Drag from one of the endpoints (which will behave like the first point in "CurvedTrack From End" to the Center of the Curved track and release. <code>Left-Drag</code> on the arrows to position the second endpoint.
+</p>
+<p>
+While the endpoints are being placed, if <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) is enabled, unless <code>Alt</code> is held down, they will "Snap" to an open track endpoint of the tracks underneath the cursor and you can only drag out the control point aligned to the end of those tracks. After the new track is completed, it will be connected to these existing track. If <strong>MagneticSnap</strong> is disabled, the snap will only happen if <em>Alt</em> is held. If Magnetic Snap does not find a end, if <strong>SnapGrid</strong> is enabled, the end will snap to the nearest grid point unless <strong>Alt</strong> is held.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Curved Track From Center</title>
+<link rel="previous" href="cmdCurveTangent.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdCurveChord.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdCurveCenter"></a>2.1.2.3 <a name="i0"></a>Curved Track From Center</h1>
+<p>
+<img src="png.d/bcurve3.png">
+</p>
+<p>
+(<code>Ctrl+6</code>) Drag from the Center of the Curved track to one of the endpoints and release. <code>Left-Drag</code> to position the second endpoint.
+</p>
+<p>
+While the endpoints are being placed, if <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) is enabled, unless <code>Alt</code> is held down, they will "Snap" to an open track endpoint of the tracks underneath the cursor and you can only drag out the control point aligned to the end of those tracks. After the new track is completed, it will be connected to these existing track. If <strong>MagneticSnap</strong> is disabled, the snap will only happen if <em>Alt</em> is held. If Magnetic Snap does not find a end, if <strong>SnapGrid</strong> is enabled, the end will snap to the nearest grid point unless <strong>Alt</strong> is held.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Curved Track from Chord</title>
+<link rel="previous" href="cmdCurveCenter.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdBezier.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdCurveChord"></a>2.1.2.4 <a name="i0"></a>Curved Track from Chord</h1>
+<p>
+<img src="png.d/bcurve4.png">
+</p>
+<p>
+(<code>Ctrl+7</code>) Drag from one endpoint to the other endpoint to form the Chord of the Curve and release. <code>Left-Click</code> on the center of the track and Drag to form the Curve. The first end point acts like "CurvedTrack From End". If an exitsing track end is selected, the Chord will only move along line orthogonal to the track.
+</p>
+<p>
+While the endpoints are being placed, if <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) is enabled, unless <code>Alt</code> is held down, they will "Snap" to an open track endpoint of the tracks underneath the cursor and you can only drag out the control point aligned to the end of those tracks. After the new track is completed, it will be connected to these existing track. If <strong>MagneticSnap</strong> is disabled, the snap will only happen if <em>Alt</em> is held. If Magnetic Snap does not find a end, if <strong>SnapGrid</strong> is enabled, the end will snap to the nearest grid point unless <strong>Alt</strong> is held.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Curved Bezier Track</title>
+<link rel="previous" href="cmdCurveChord.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdCornu.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdBezier"></a>2.1.2.5 <a name="i0"></a>Curved Bezier Track</h1>
+<p>
+<img src="png.d/bezier.png">
+</p>
+<p>
+<code>Left-Click</code> to place one endpoint and <code>Left-Drag</code> out the first control point and release, <code>Left-Click</code> to place the second Endpoint and <code>Left-Drag</code> out the second control point and release. Once all 4 points are placed, you can pick one at a time and drag it to move it. Complete the Curve by pressing <code>Enter|, or Reject it with c{Esc</code>.
+</p>
+<p>
+While the endpoints are being placed, if <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) is enabled, unless <code>Alt</code> is held down, they will "Snap" to an open track endpoint of the tracks underneath the cursor and you can only drag out the control point aligned to the end of those tracks. After the new track is completed, it will be connected to these existing track. If <strong>MagneticSnap</strong> is disabled, the snap will only happen if <em>Alt</em> is held. If Magnetic Snap does not find a end, if <strong>SnapGrid</strong> is enabled, the end will snap to the nearest grid point unless <strong>Alt</strong> is held.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Create Cornu Track</title>
+<link rel="previous" href="cmdBezier.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdHandLaidTurnout.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdCornu"></a>2.1.2.6 <a name="i0"></a>Create Cornu Track</h1>
+<p>
+<img src="png.d/bcornu.png">
+</p>
+<dl><dd>
+<code>Left-Click</code> to place each endpoint on an open track end or just on the layout. During the move to the click, if <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) is enabled, an anchor will show when the cursor is near an open end point. This can be inhibited with <em>Alt</em>. If <strong>MagneticSnap</strong> is disabled this will only happen if <em>Alt</em> is held. If Magnetic Snap does not find a end, if <strong>SnapGrid</strong> is enabled, the end will snap to the nearest grid point unless <strong>Alt</strong> is held.
+</dd>
+</dl>
+<p>
+<code>Left-Drag</code> if the endpoint not on an existing track drags out the end angle of the new track. This is shown by the Cornu endanchor.
+</p>
+<p>
+<img src="png.d/cornuendanchor.png">
+</p>
+<p>
+The anchor is only drawn for Cornu ends that are not joined to existing tracks and it shows the position, direction and radius of the track, and has anchors for altering these properties. When the Cornu is joined to a track, it uses the properties of the end of that track instead. Anchor point handles are drawn outside the end of the Cornu track to allow track-pins to be edited on the track itself. <code>Left-Click</code> to place the second Endpoint either on a track endpoint or not. <code>Left-Drag</code> sets the second end angle like the first for unconnected end-points.
+</p>
+<p>
+Complete the Curve by pressing <code>Enter</code>, or Reject it with <code>Esc</code>.
+</p>
+<p>
+The radius and angle of the selected open Cornu end can also be set with text entry boxes in the Status Bar.
+</p>
+<p>
+When either endpoint is being moved it will "Snap" to an open track endpoint of the tracks underneath the cursor unless <code>Shift</code> is held. You can then only move the endpoint along that track if it is splitable, or in an extension of it. After the new track is completed, it will be connected to these existing tracks.
+</p>
+<p>
+Cornu Track Pins are further explained in <a href="joinCornu.html#joinCornu">Section 2.2.7.4</a> - they constrain the Cornu curve to smoothly pass through thier position as well as satisfying the end conditions. You can place them by clicking on the Cornu and select, <em>Drag</em> to move them around or hit <em>Delete</em> to remove them.
+</p>
+<p>
+If the end is not connected, an anchor will enable the end-angle and radius to be set by dragging. Initially the end radius is set to be zero and the angle will be picked to create a smooth curve given the end angle. Altering the end angle with the anchor resets the radius to zero.
+</p>
+<p>
+
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Hand-laid Turnouts</title>
+<link rel="previous" href="cmdCornu.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdHelix.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdHandLaidTurnout"></a>2.1.3 <a name="i0"></a>Hand-laid Turnouts</h1>
+<p>
+<img src="png.d/bhndldto.png">
+</p>
+<p>
+Hand-laid turnouts are created by specifying 3 values:
+</p>
+<ul><li>
+Position of <em>Frog</em>
+</li>
+<li>
+Angle of <em>Frog</em> (the frog number)
+</li>
+<li>
+Position of <em>Points</em>
+</li>
+</ul>
+<p>
+First select the position for the Frog (<a href="generalTerms.html#generalTerms">Section B.2</a>) on an existing track and then <em>Drag</em> away to specify the angle of the <em>Frog</em>. The angle in degrees and equivalent frog number is displayed on the status bar. When you release, the line indicating the angle jumps to one side of the track to show you the center line of the new leg of the turnout.
+</p>
+<p>
+Next <code>Left-Click</code> and <code>Left-Drag</code> to position the Points (<a href="generalTerms.html#generalTerms">Section B.2</a>) for the turnout. As you <code>Left-Drag</code>, tracks will be drawn showing the turnout. When you release the turnout is created.
+</p>
+<p>
+You cannot place the <em>Frog</em> or <em>Points</em> on a turnout, circle or helix. However, you can create overlapping Hand-laid Turnouts.
+</p>
+<p>
+There are constraints on where you can place the <em>Points</em> in relation to the <em>Frog</em>. You cannot place the <em>Points</em> too close the <em>Frog</em>. When placing Hand-laid Turnout on a curved track you may get unexpected results, especially when placing the <em>Points</em> a long way from the <em>Frog</em>. Try changing the <em>Frog</em> angle to get different results.
+</p>
+<p>
+Note: the drawing is an approximation to show the location of the <em>Points</em> and <em>Frog</em>. The piece of track considered (by <em>XTrackCAD</em>) to be a Hand-laid Turnout is a short section of track located at the <em>Points</em> and extending toward the <em>Frogs</em>. Other track segments are created between the <em>Points</em> and <em>Frog</em> and a short straight segment is drawn after the <em>Frog</em>. These other segments are independent of the turnout and can be removed or modified, although this is probably not a good idea.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Helix Track</title>
+<link rel="previous" href="cmdHandLaidTurnout.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdParallel.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdHelix"></a>2.1.4 <a name="i0"></a>Helix Track</h1>
+<p>
+<img src="png.d/bhelix.png">
+</p>
+<p>
+A helix track is used to change the elevation of track in a restricted space. A helix is drawn as a circle of track, but in 3 dimensions it would resemble a cork screw or the pattern of threads on a bolt.
+</p>
+<p>
+<img src="png.d/ahelix.png">
+</p>
+<p>
+A helix is defined by the number of <em>Turns</em> and <em>Radius</em>.
+</p>
+<p>
+The helix dialog allows you to calculate these values based other parameters such as the <em>Elevation Difference</em>, <em>Grade</em>, <em>Vertical Angular Separation</em>. <em>Angular Separation</em> is the difference in degrees between tracks entering and exiting the helix. Changing any of these values effects the other values. For example, increasing the <em>Radius</em> decreases the <em>Grade</em>. Changing the number of <em>Turns</em> affects the <em>Vertical Separation</em> and either the <em>Radius</em> or <em>Grade</em>.
+</p>
+<p>
+In the case where different parameters could be affected (for instance changing <em>Elevation Difference</em> can affect <em>Radius</em> or <em>Grade</em>) the last parameter you changed will be preserved. If you set the <em>Grade</em> and then <em>Elevation Difference</em> then the <em>Radius</em> will be adjusted.
+</p>
+<p>
+Changing <em>Vertical Separation</em> affects <em>Turns</em> which must be an integer value (no fractions), and this in turn affects the <em>Vertical Separation</em>. When you set <em>Vertical Separation</em> you are specifying the minimum separation which is adjusted upwards to the actual value.
+</p>
+<p>
+The separation is rail-head to rail-head and you need to ensure this is enough to provide clearance when track, sleepers, ballast, baseboard/benchwork is included.
+</p>
+<p>
+Note: only the <em>Radius</em> and <em>Turns</em> are used when creating the helix. After joining the helix to other tracks, you will want to establish the heights of the endpoints at each end of the helix. You can use the Elevation (<a href="cmdElevation.html#cmdElevation">Section 2.2.5</a>) command to do this.
+</p>
+<p>
+A helix is placed the same way as a Circle Track (<a href="cmdCircle.html#cmdCircle">Section 2.1.1</a>) with the addition that you specify the number of turns as well the as the radius of the helix. Then the helix is dragged into position on the layout.
+</p>
+<p>
+You can join to a helix in the same way you join to a circle. However, once joined the helix is still drawn as a circle of track.
+</p>
+<p>
+A label for the helix is drawn at it's the center. If the elevations are set (either by a Defined Elevation point or connecting to a Defined Elevation point) for the two ends of the helix then the label contains the computed grade and vertical separation between layers as well as the number of turns and total length. The label can be moved or turned off by the Move Label (<a href="cmdMoveLabel.html#cmdMoveLabel">Section 2.2.10</a>) command.
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Parallel Track or Line</title>
+<link rel="previous" href="cmdHelix.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdParallelTrack.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdParallel"></a>2.1.5 <a name="i0"></a>Parallel Track or Line</h1>
+<dl><dd>
+<img src="png.d/maddparallel.png">
+</dd>
+</dl>
+<hr>
+<p>
+You can pick between two Parallel Commands:
+</p>
+<p>
+
+</p>
+<dl><dd>
+<a href="cmdParallelTrack.html#cmdParallelTrack">Section 2.1.5.1</a>. You can create a new track parallel to any straight, curved, bezier, cornu or easement track.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a href="cmdParallelLine.html#cmdParallelLine">Section 2.1.5.2</a>. You can create a line parallel to any straight, curved, bezier, cornu or easement track or straight lines, curved lines and PolyLines.
+</dd>
+</dl>
+<hr>
+<ul>
+<li><a href="cmdParallelTrack.html#cmdParallelTrack">2.1.5.1 Parallel Track</a></li>
+<li><a href="cmdParallelLine.html#cmdParallelLine">2.1.5.2 Parallel Lines</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Parallel Track</title>
+<link rel="previous" href="cmdParallel.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdParallelLine.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdParallelTrack"></a>2.1.5.1 <a name="i0"></a>Parallel Track</h1>
+<p>
+<img src="png.d/bparallel.png">
+</p>
+<p>
+Select the Track you want to parallel with <code>Left-Click</code>, and the new parallel track will appear beside it. You control which side the new track will be on by <code>Left-Drag</code>ging the cursor from one side to the other of the selected track before releasing it.
+</p>
+<p>
+<img src="png.d/statusbarparallel.png">
+</p>
+<p>
+The <strong>Parallel Separation</strong> control (Visible in the Status Bar) displays the intended separation between parallel tracks/line. This value can be changed before selecting a track. The value must be greater than 0.0 if the gauges are equal.
+</p>
+<ul><li>
+If the gauges are equal, a value of 0.0 means that the rail of the second track is overlaid on the first to simulate dual guage track. The railside that the new track "shares" is set by which side of center the cursor is on when released. The new track will have NoTies set on.
+</li>
+<li>
+The seperation can be automatically increased using the <strong>Radius Factor</strong> value. If this is set to 0.0 (default) the seperation value will be used regardless of radius. If the value is set to 1.0, the seperation will be increased by a scaled 2864 inches per inch of curvature of the paralled track - this is in accordance with North American prototype practice. Other values of Radius Factor will alter by an equivalent percentage. For example, 0.5 would use 50% of this increase.
+</li>
+</ul>
+<p>
+
+</p>
+<p>
+This command is very useful for creating sidings and yards as well as dual track.
+</p>
+<ul><li>
+No parallel to a turnouts or a non-straight piece of sectional track is created.
+</li>
+<li>
+It is possible to create tracks that abut (the endpoints are very close and aligned). These endpoints will be automatically connected.
+</li>
+</ul>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Parallel Lines</title>
+<link rel="previous" href="cmdParallelTrack.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdStraight.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdParallelLine"></a>2.1.5.2 <a name="i0"></a>Parallel Lines</h1>
+<p>
+<img src="png.d/bparalleline.png">
+</p>
+<p>
+Select the Track or Line you want to parallel with <code>Left-Click</code>, and the new parallel line will appear beside it.
+</p>
+<ul><li>
+Note that Lines are not joined - if you wish you can select a series of Lines and turn them into a PolyLine using <a href="cmdJoinLine.html#cmdJoinLine">Section 2.2.7.1</a>.
+</li>
+</ul>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Straight Track</title>
+<link rel="previous" href="cmdParallelLine.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdStructure.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdStraight"></a>2.1.6 <a name="i0"></a>Straight Track</h1>
+<p>
+<img src="png.d/bstraigh.png">
+</p>
+<p>
+Straight track is a created by <code>Left-Click</code> to select the first endpoint then <code>Left-Drag</code>ing the cursor to the point where you want the second endpoint to be. Unless <code>Shift</code> is held down when the first endpoint is being placed and the cursor is on a track, the new straight end will "Snap" to the nearest open track endpoint and you can drag out the second end aligned to that track. After a track is competed, the new track will be connected to the existing track.
+</p>
+<p>
+If the Snap Grid (<a href="cmdGrid.html#cmdGrid">Section 2.12.2</a>) is enabled then the endpoints will be constrained to the grid.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Structure</title>
+<link rel="previous" href="cmdStraight.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdNewFixedTrack.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdStructure"></a>2.1.7 <a name="i0"></a>Structure</h1>
+<p>
+<img src="png.d/bstruct.png">
+</p>
+<p>
+The <strong>Structure</strong> command places diagrams of structures (buildings, bridges and other scenic elements) on the layout. The operation is similar to the Fixed-track (<a href="cmdNewFixedTrack.html#cmdNewFixedTrack">Section 2.1.8</a>) command.
+</p>
+<p>
+<img src="png.d/strsel.png">
+</p>
+<p>
+When you select a structure from the list, its diagram is drawn in the diagram canvas. The dimensions are also listed on the dialog.
+</p>
+<p>
+The <strong>Structure Selection</strong> dialog will disappear while dragging on the layout if the <strong>Hide</strong> Check Box on the dialog is set. This is useful if you have a small screen.
+</p>
+<p>
+See the Hot Bar (<a href="cmdHotBar.html#cmdHotBar">Section 2.7</a>) command for details on placing Structures on the layout.
+</p>
+<p>
+<strong>Structures</strong> are placed on the layout in same way as <strong>Fixed-tracks</strong> except that there is no <em>Active endpoint</em> and structures do not align with existing tracks.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Fixed-track</title>
+<link rel="previous" href="cmdStructure.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdTurntable.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdNewFixedTrack"></a>2.1.8 <a name="i0"></a>Fixed-track</h1>
+<p>
+<img src="png.d/bturnout.png">
+</p>
+<p>
+Fixed-track objects (Turnouts, Sectional Tracks and Grouped Object) are added by the <strong>Fixed-track</strong> command, and the <strong>Selection</strong> dialog is displayed which contains a list of available turnouts, sectional tracks and grouped objects for the current scale (<a href="cmdLayout.html#cmdLayout">Section 2.10.6</a>) and a diagram of the selected turnout.
+</p>
+<p>
+You can use the Parameter File Dialog (<a href="cmdPrmfile.html#cmdPrmfile">Section 2.5.7</a>) to control what turnouts are available.
+</p>
+<p>
+<img src="png.d/turnsel.png">
+</p>
+<p>
+Select a turnout from the scrolling list by <code>Left-Click</code>ing on it. Move to the Layout and <code>Left-Click</code> where the turnout should be placed. The Turnout will snap to nearby flex-tracks or open endpoints. By <code>Left-Drag</code>ing you can move the turnout around. Additional <code>Left-Click</code>s change the way the turnout is placed.
+</p>
+<p>
+The <strong>New</strong> button invokes the Turnout Designer (<a href="cmdTurnoutNew.html#cmdTurnoutNew">Section 2.9.9</a>) dialog. This button displays a pop-up-menu list of various types of turnouts and sectional track.
+</p>
+<p>
+The <strong>Turnout Selection</strong> window will disappear while dragging on the layout if the <strong>Hide</strong> Check Box on the dialog is set. This is useful if you have a small screen.
+</p>
+<p>
+See the Hot Bar (<a href="cmdHotBar.html#cmdHotBar">Section 2.7</a>) command for details on placing Fixed-tracks on the layout.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Turntables</title>
+<link rel="previous" href="cmdNewFixedTrack.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdBlock.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdTurntable"></a>2.1.9 <a name="i0"></a>Turntables</h1>
+<p>
+<img src="png.d/bturntbl.png">
+</p>
+<p>
+Turntables of specified diameter are created with the <strong>Turntable</strong> command.
+</p>
+<p>
+<img src="png.d/statusbarturntable.png">
+</p>
+<p>
+The <em>Turntable Diameter</em> control (Visible in the Status Bar) displays the current diameter of the turntable. This value can be changed before dragging the turntable into position. The value must be greater than 0.0.
+</p>
+<p>
+The <strong>Modify command</strong> (<a href="cmdModify.html#cmdModify">Section 2.2.8</a>) can be used to create turntable stall tracks. Select the turntable and drag the stall track to the proper angle and length. You can also connect to a turntable with the <strong>Join command</strong> (<a href="cmdJoin.html#cmdJoin">Section 2.2.7</a>).
+</p>
+<p>
+The <strong>Turntable Angle</strong> control on the Preferences (<a href="cmdPref.html#cmdPref">Section 2.10.7</a>) dialog controls how closely you can place tracks connected to a turntable. If you want to create stall tracks every 7.5&#176;, set the <strong>Turntable Angle</strong> control to 7.5 and place the track as close to each other as allowed. <em>XTrackCAD</em> makes sure they will be separated by the correct angle.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Block</title>
+<link rel="previous" href="cmdTurntable.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdSwitchmotor.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdBlock"></a>2.1.10 <a name="i0"></a>Block</h1>
+<p>
+<img src="png.d/bblock.png">
+</p>
+<p>
+A block is created by first selecting the track segments in the block and then selecting <strong>Create Block</strong> from either the Add menu <a href="cmdAdd.html#cmdAdd">Section 3.3.1</a> or from the block menu on the hotbar. A block gets a name and a script. The name is only used for identification and the script is used by the layout control software. The script should provide whatever information is needed by the layout control software to determine block occupancy. This could be a code snippet to retrieve the state of the block occupancy or it could be the address of the sensor, etc.
+</p>
+<p>
+<img src="png.d/block.png">
+</p>
+<p>
+The create block dialog has spaces for two text strings. One is the name and the other is a block occupancy script. The name identifies the block and the script is information used by the layout control software to detect block occupancy. The script could be a code snippet or I/O device address information, etc.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Switchmotor</title>
+<link rel="previous" href="cmdBlock.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdSignal.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdSwitchmotor"></a>2.1.11 <a name="i0"></a>Switchmotor</h1>
+<p>
+<img src="png.d/bswitchmotor.png">
+</p>
+<p>
+A switchmotor is created by selecting <strong>Create SwitchMotor</strong> from either the Add menu <a href="cmdAdd.html#cmdAdd">Section 3.3.1</a> or from the switchmotor menu on the hotbar and then clicking on a turnout. A switchmotor gets a name and three scripts. The name is only used for identification and the three scripts are used by the layout control software. The three scripts are for throwing the turnout to its "normal" position, throwing the turnout to its "reverse" position, and a script to read a point position sensor. These scripts could be code snippets or they could be addresses of I/O devices, etc.
+</p>
+<p>
+<img src="png.d/switchmotor.png">
+</p>
+<p>
+The create switchmotor dialog has spaces for four text strings. One is the name and the other three are scripts for Normal, Reverse, and Point Sense. The name identifies the switchmotor and the scripts are information used by the layout control software to throw the turnout to the normal position, throw the turnout to the reverse position, and sense the point position. The scripts could be code snippets or I/O device address information, etc.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Signal</title>
+<link rel="previous" href="cmdSwitchmotor.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdControl.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdSignal"></a>2.1.12 <a name="i0"></a>Signal</h1>
+<p>
+<img src="png.d/bsignal.png">
+</p>
+<p>
+A signal is created by selecting <strong>Create Signal</strong> from either the Add menu <a href="cmdAdd.html#cmdAdd">Section 3.3.1</a> or from the hotbar. Use the mouse to select a location (left button) and then dragging (left button down) the signal to set its orientation. Once the left button is released, a Create/Edit Signal dialog box is displayed, and you can fill in the signal's properties: name, fine tune the location and orientation, number of heads, and the aspects.
+</p>
+<p>
+<img src="png.d/signal.png">
+</p>
+<p>
+The create/edit signal dialog has spaces for the name of the signal, its location and orientation, the number of heads (1, 2, or 3), and a list of aspects. Each aspect has a name and a script. The name could be a rule book name (Clear, Aproach, Stop, etc.) or the actual color(s) displayed (green, yellow, red, etc.). The script is just some information for the layout control software to actually effect the display of the aspect -- this could be the LCC event id to trigger the aspect or it could be a code snippet that causes the aspect to be displayed.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Control</title>
+<link rel="previous" href="cmdSignal.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdSensor.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdControl"></a>2.1.13 <a name="i0"></a>Control</h1>
+<p>
+<img src="png.d/bcontrol.png">
+</p>
+<p>
+A control is created by selecting <strong>Create Control</strong> from either the Add menu <a href="cmdAdd.html#cmdAdd">Section 3.3.1</a> or from the hotbar. Use the mouse to select a location (left button) and then dragging (left button down) the control to where you want it. Once the left button is released, a Create/Edit Control dialog box is displayed, and you can fill in the control's properties: name, fine tune the location, and the on and off scripts.
+</p>
+<p>
+<img src="png.d/control.png">
+</p>
+<p>
+The create/edit control dialog has entry fields for the name of the control, its location, and a pair of scripts, one to turn the control on and one to turn the control off. The scripts are just some information for the layout control software to actually effect the state on the control (on or off).
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Sensor</title>
+<link rel="previous" href="cmdControl.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="changeM.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"><meta name="AppleTitle" content="Change Menu" />
+</head>
+<body>
+<h1><a name="cmdSensor"></a>2.1.14 <a name="i0"></a>Sensor</h1>
+<p>
+<img src="png.d/bsensor.png">
+</p>
+<p>
+A sensor is created by selecting <strong>Create Sensor</strong> from either the Add menu <a href="cmdAdd.html#cmdAdd">Section 3.3.1</a> or from the hotbar. Use the mouse to select a location (left button) and then dragging (left button down) the sensor to where you want it. Once the left button is released, a Create/Edit Sensor dialog box is displayed, and you can fill in the sensor's properties: name, fine tune the location, and the script.
+</p>
+<p>
+<img src="png.d/sensor.png">
+</p>
+<p>
+The create/edit sensor dialog has spaces for the name of the sensor, its location, and a script. The script is just some information for the layout control software to actually return the state of the sensor (on or off).
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Change Menu</title>
+<link rel="previous" href="cmdSensor.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdRescale.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="changeM"></a>2.2 <a name="i0"></a>Change Menu</h1>
+<p>
+<img src="png.d/mchange.png">
+</p>
+<p>
+The <strong>Change Menu</strong> has all functions related to modifying objects that exist on the layout drawing.
+</p>
+<dl><dd>
+<a name="i1"></a>Properties - sets <em>XTrackCAD</em> into <em>Describe</em> mode. Whenever an object is clicked on while in this mode, the <strong>Properties</strong> dialog is opened. This dialog allows direct manipulation of settings such as the objects length, position or orientation. (<a href="cmdDescribe.html#cmdDescribe">Section 2.2.13</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i2"></a>Select - sets <em>XTrackCAD</em> into <em>Select</em> mode. Whenever an object is clicked on while in this mode, this selection state of this object is reversed. If an object was unselected it becomes selected, and vice versa. To unselect all objects press the ESC key, use <strong>Deselect All</strong> from the <strong>Edit</strong> (<a href="editM.html#editM">Section 2.4</a>) menu or <strong>Deselect All</strong> from the <strong>Pop-up</strong> menu (<a href="mouseBcmd.html#mouseBcmd">Section 3.4.1</a>). (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>).
+</dd>
+</dl>
+<hr>
+<dl><dd>
+<a name="i3"></a>Move - move selected object(s). (<a href="cmdMove.html#cmdMove">Section 2.2.9</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i4"></a>Rotate - rotate selected object(s). (<a href="cmdRotate.html#cmdRotate">Section 2.2.15</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i5"></a>Flip - turn selected object(s) over or around. (<a href="cmdFlip.html#cmdFlip">Section 2.2.6</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i6"></a>Loosen Tracks <a name="i7"></a> - this command reverses the effect of Connect Two Tracks as applied to sectional track.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i8"></a>Modify - modify an existing track, or lines. (<a href="cmdModify.html#cmdModify">Section 2.2.8</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/mjoin.png">
+</dd>
+<dd>
+<strong>Join</strong> <a name="i9"></a> <a name="i10"></a> <a name="i11"></a> - connect two separate pieces of track or two lines. This command can be used to move one of the pieces of track to the endpoint of the other or to create a connection by laying a stretch of flex-track. (<a href="cmdJoin.html#cmdJoin">Section 2.2.7</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i12"></a>Connect Two Tracks <a name="i13"></a> - creates a connection between track pieces with an option to slightly move the select piece(s) and the pieces they connect to. (<a href="cmdConnect.html#cmdConnect">Section 2.2.3</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/msplit.png">
+</dd>
+<dd>
+<a name="i14"></a>Split - the <strong>Split</strong> commands are used to divide up tracks (<a href="cmdSplitTrack.html#cmdSplitTrack">Section 2.2.17.1</a>) or split draw objects (<a href="cmdSplitDraw.html#cmdSplitDraw">Section 2.2.17.3</a>) or use a second Object to Trim (<a href="cmdTrimDraw.html#cmdTrimDraw">Section 2.2.17.4</a>). The (<a href="cmdSplitTrack.html#cmdSplitTrack">Section 2.2.17.1</a>) command can be used in one of two ways;
+<p>
+
+</p>
+<ul><li>
+split a section of flex-track into two connected pieces at the point where a <em>Left-Click</em> is invoked or;
+</li>
+<li>
+disconnect turnouts or sectional track pieces at their point of connection.
+</li>
+</ul>
+
+</dd>
+<dd>
+<a name="i15"></a>Move Description - move the endpoint description of a track piece to another location. (<a href="cmdMoveLabel.html#cmdMoveLabel">Section 2.2.10</a>).
+</dd>
+</dl>
+<hr>
+<dl><dd>
+<a name="i16"></a>Raise/Lower Elevations - raise or lower elevation of selected tracks. (<a href="cmdRaiseElev.html#cmdRaiseElev">Section 2.2.14</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i17"></a>Elevation - define an elevation at specified track location (<a href="cmdElevation.html#cmdElevation">Section 2.2.5</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i18"></a>Profile - display the elevation profile of a definable stretch of track (<a href="cmdProfile.html#cmdProfile">Section 2.2.12</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i19"></a>Clear Elevations - remove elevation parameters from selected track(s).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i20"></a>Recompute Elevations - performs a global re-computation of dynamic elevations. It should not be necessary to issue this command as elevations are recomputed as required.
+</dd>
+</dl>
+<hr>
+<dl><dd>
+<a name="i21"></a>Change Scale - change model scale and/or gauge of layout design. (<a href="cmdRescale.html#cmdRescale">Section 2.2.1</a>)
+</dd>
+</dl>
+<hr>
+<dl><dd>
+<img src="png.d/mconvert.png">
+</dd>
+<dd>
+<a name="i22"></a>Convert - changes flex-tracks (Straight, Curve, Joint, Bezier) into a Smooth Cornu or vice versa. (<a href="cmdConvert.html#cmdConvert">Section 2.2.4</a>).
+</dd>
+</dl>
+<hr>
+<ul>
+<li><a href="cmdRescale.html#cmdRescale">2.2.1 Change Scale</a></li>
+<li><a href="clrElev.html#clrElev">2.2.2 Clear Elevations</a></li>
+<li><a href="cmdConnect.html#cmdConnect">2.2.3 Connect Tracks</a></li>
+<li><a href="cmdConvert.html#cmdConvert">2.2.4 Convert Tracks</a></li>
+<ul>
+<li><a href="cmdConvertTo.html#cmdConvertTo">2.2.4.1 Convert flex-track(s) to Cornu(s)</a></li>
+<li><a href="cmdConvertFrom.html#cmdConvertFrom">2.2.4.2 Convert Cornu(s) and Bezier(s) to flex-track(s)</a></li>
+</ul>
+<li><a href="cmdElevation.html#cmdElevation">2.2.5 Elevation</a></li>
+<ul>
+<li><a href="computeElevations.html#computeElevations">2.2.5.1 Computing Dynamic Elevations</a></li>
+</ul>
+<li><a href="cmdFlip.html#cmdFlip">2.2.6 Flip</a></li>
+<li><a href="cmdJoin.html#cmdJoin">2.2.7 Join Tracks and Lines</a></li>
+<ul>
+<li><a href="cmdJoinLine.html#cmdJoinLine">2.2.7.1 Join Lines</a></li>
+<li><a href="cmdJoinTrack.html#cmdJoinTrack">2.2.7.2 Join Tracks</a></li>
+<li><a href="joinNormalEasment.html#joinNormalEasment">2.2.7.3 Join with Normal Easement</a></li>
+<li><a href="joinCornu.html#joinCornu">2.2.7.4 Join with Cornu Easement</a></li>
+<li><a href="cornuTrackPins.html#cornuTrackPins">2.2.7.5 Cornu Track Pins</a></li>
+<li><a href="joinTrackStraight.html#joinTrackStraight">2.2.7.6 Using Straight Flex-Track</a></li>
+<li><a href="joinTrackMove.html#joinTrackMove">2.2.7.7 By Moving Track</a></li>
+</ul>
+<li><a href="cmdModify.html#cmdModify">2.2.8 Modify</a></li>
+<ul>
+<li><a href="extendModify.html#extendModify">2.2.8.1 Extending Track</a></li>
+<li><a href="objectModify.html#objectModify">2.2.8.2 Modifying Objects</a></li>
+<li><a href="chgTrackLength.html#chgTrackLength">2.2.8.3 Changing Track Length</a></li>
+<li><a href="createTangent.html#createTangent">2.2.8.4 Creating a Tangent to a Curve</a></li>
+<li><a href="chgTrackRadius.html#chgTrackRadius">2.2.8.5 Changing Track Radius</a></li>
+<li><a href="extendTrack.html#extendTrack">2.2.8.6 Extending Track Length</a></li>
+<li><a href="chgDraw.html#chgDraw">2.2.8.7 Modifying Draw Elements</a></li>
+<li><a href="chgCornu.html#chgCornu">2.2.8.8 Cornu Easements Modifying a Cornu Track</a></li>
+<li><a href="chgBezier.html#chgBezier">2.2.8.9 Modifying a Bezier</a></li>
+</ul>
+<li><a href="cmdMove.html#cmdMove">2.2.9 Move</a></li>
+<ul>
+<li><a href="moveByMouse.html#moveByMouse">2.2.9.1 Using Mouse</a></li>
+<li><a href="moveByMenu.html#moveByMenu">2.2.9.2 Using Values of X and Y Translation</a></li>
+</ul>
+<li><a href="cmdMoveLabel.html#cmdMoveLabel">2.2.10 Move Description</a></li>
+<li><a href="cmdPan.html#cmdPan">2.2.11 Pan/Zoom</a></li>
+<li><a href="cmdProfile.html#cmdProfile">2.2.12 Profile</a></li>
+<li><a href="cmdDescribe.html#cmdDescribe">2.2.13 Properties</a></li>
+<ul>
+<li><a href="drawDescribe.html#drawDescribe">2.2.13.1 Draw Object Describe Fields</a></li>
+<li><a href="DescribeCompound.html#DescribeCompound">2.2.13.2 Structures, Sectional Track and Turnouts Describe Fields</a></li>
+<li><a href="DescribeTrack.html#DescribeTrack">2.2.13.3 Describe Track Fields</a></li>
+</ul>
+<li><a href="cmdRaiseElev.html#cmdRaiseElev">2.2.14 Raise or Lower Elevation</a></li>
+<li><a href="cmdRotate.html#cmdRotate">2.2.15 Rotate</a></li>
+<ul>
+<li><a href="rotateByMouse.html#rotateByMouse">2.2.15.1 Using Mouse</a></li>
+<li><a href="rotateByMenu.html#rotateByMenu">2.2.15.2 Using Degree's of Rotation</a></li>
+<li><a href="rotateByAlign.html#rotateByAlign">2.2.15.3 Aligned With Another Object</a></li>
+</ul>
+<li><a href="cmdSelect.html#cmdSelect">2.2.16 Select</a></li>
+<li><a href="cmdSplit.html#cmdSplit">2.2.17 Split Commands</a></li>
+<ul>
+<li><a href="cmdSplitTrack.html#cmdSplitTrack">2.2.17.1 Split Track</a></li>
+<li><a href="splitDisconnect.html#splitDisconnect">2.2.17.2 Disconnect Joint</a></li>
+<li><a href="cmdSplitDraw.html#cmdSplitDraw">2.2.17.3 Split a Draw Object</a></li>
+<li><a href="cmdTrimDraw.html#cmdTrimDraw">2.2.17.4 Trim a Draw Object using another Draw object</a></li>
+</ul>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Change Scale</title>
+<link rel="previous" href="changeM.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="clrElev.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdRescale"></a>2.2.1 Change Scale</h1>
+<p>
+<img src="png.d/rescale.png">
+</p>
+<p>
+<strong>Change Scale</strong> is used to change the size and gauge of selected (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) objects. The amount to resize can be specified
+</p>
+<p>
+
+</p>
+<ul><li>
+by the modeling scale, e.g., convert from HO to O scale
+</li>
+<li>
+by the modeled gauge, e.g., convert from standard gauge to narrow gauge, or
+</li>
+<li>
+by ratio (by 181.5%).
+</li>
+</ul>
+<p>
+If the selected objects have multiple Scales then the 1st From box will display "Multi-Scale". If the selected objects are all of one Scale and but have different Gauges then the 2nd From box will display "Multi-Gauge".
+</p>
+<p>
+If resizing by modeling scale then track dimensions, e.g., lengths and radii, will be changed as well. An option is available to disable the resizing of the selected objects.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Clear Elevations</title>
+<link rel="previous" href="cmdRescale.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdConnect.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="clrElev"></a>2.2.2 Clear Elevations</h1>
+<p>
+The <strong>Clear Elevations</strong> command is used to remove elevation points from selected track on the layout.
+</p>
+<p>
+Using the <strong>Select</strong> command, select the track that is to have its elevation settings cleared then select <strong>Change&gt;Clear Elevations</strong> from the menu bar to clear elevations of selected track.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Connect Tracks</title>
+<link rel="previous" href="clrElev.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdConvert.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdConnect"></a>2.2.3 Connect Tracks</h1>
+<p>
+<img src="png.d/bconnect.png">
+</p>
+<p>
+This command is frequently used with <a name="i0"></a><em>Sectional Track</em>. But it can be useful to reattach ordinary track which has become disconected or split.
+</p>
+<p>
+When in this connect, ends of tracks that can be selected are highlighted with a blue arrow. With <em>Shift</em> added, ends that can be tighten are highlighted with a blue "X".
+</p>
+<p>
+There are three modes,
+</p>
+<p>
+
+</p>
+<ul><li>
+a <strong>Left</strong> click on a track near a disconnected end-point followed by a second on a close-by disconnected end-point on another track will try to join two tracks
+</li>
+<li>
+a <strong>Shift-Left</strong> click on a connected track will "Tighten Tracks" moving other tracks connected to this track to reduce any small distance or angle differences
+</li>
+<li>
+Selecting a set of tracks followed by a <em>"S" key</em> or using the Context menu will prompt for confirmation that all selected tracks with unconnected endpoints should be joined to nearby selected track at an unconnected end point. This mode allows for an entire layout to be reconnected after a Select-All.
+</li>
+</ul>
+<p>
+<strong>Notes for two track mode:</strong> Occasionally pieces of sectional track do not line up exactly, especially when creating figure-8's or passing sidings. When laying out the actual track you can compensate for this by adjusting the individual tracks to provide a bit of slack. This command simulates that process.
+</p>
+<p>
+Click on the endpoint of each track you're trying to connect. XtrkCAD will move the tracks slightly in an attempt to overcome the gap. If the gap is too large, the connection will fail. If this occurs, try using other track pieces in your layout.
+</p>
+<p>
+<em>XTrackCAD</em> adjusts the positions of tracks connected to the tracks up to a track with more than two connections. See the Demo for details.
+</p>
+<p>
+If one (or both) the selected tracks is an adjustable section (such as Kato's Adjustable Track #20-050) then the length of the track is changed to fill the gap.
+</p>
+<p>
+You can undo the effect of the <strong>Connect</strong> command by splitting (<a href="splitDisconnect.html#splitDisconnect">Section 2.2.17.2</a>) the track to disconnect it then using the <em>Shift+Left-Click</em> <strong>Connect</strong> command on the unconnected endpoints to tighten connections between the tracks.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Convert Tracks</title>
+<link rel="previous" href="cmdConnect.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdConvertTo.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdConvert"></a>2.2.4 Convert Tracks</h1>
+<dl><dd>
+(<a href="cmdConvertTo.html#cmdConvertTo">Section 2.2.4.1</a>). Convert Fixed to Cornu
+</dd>
+<dd>
+(<a href="cmdConvertFrom.html#cmdConvertFrom">Section 2.2.4.2</a>). Convert Cornu to Fixed.
+</dd>
+</dl>
+<p>
+A drop down menu, which allows selection of the Convert Mode, is invoked from the down arrow button (<img src="png.d/bmenu.png">) located on the right side the Convert Tracks button. Dependent upon previous selection, the Convert Track button will look like <img src="png.d/convertto.png"> or <img src="png.d/convertfrom.png">.
+</p>
+<hr>
+<ul>
+<li><a href="cmdConvertTo.html#cmdConvertTo">2.2.4.1 Convert flex-track(s) to Cornu(s)</a></li>
+<li><a href="cmdConvertFrom.html#cmdConvertFrom">2.2.4.2 Convert Cornu(s) and Bezier(s) to flex-track(s)</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Convert flex-track(s) to Cornu(s)</title>
+<link rel="previous" href="cmdConvert.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdConvertFrom.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdConvertTo"></a>2.2.4.1 Convert flex-track(s) to Cornu(s)</h1>
+<p>
+<img src="png.d/convertto.png">
+</p>
+<p>
+This command will take a pre-selected set of flex-track elements (Straights, Curves, Joint or Bezier) and convert them into a set of Cornu Tracks. If there are no selected Tracks, the user can click on a single track.
+</p>
+<p>
+The Cornu(s) will smoothly pass through all the end points of the selected tracks and smoothly join to the end-points (if any). This may change the internal shape of the resulting track(s) due to smoothing. A subsequent <a href="cmdModify.html#cmdModify">section 2.2.8</a> can be used to fine tune the Cornu(s) by moving, adding and deleting "pins" in the combined shape.
+</p>
+<p>
+This command is intended to help conversion of track designs that were made before Cornu Track existed to Cornu.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Convert Cornu(s) and Bezier(s) to flex-track(s)</title>
+<link rel="previous" href="cmdConvertTo.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdElevation.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdConvertFrom"></a>2.2.4.2 Convert Cornu(s) and Bezier(s) to flex-track(s)</h1>
+<p>
+<img src="png.d/convertfrom.png">
+</p>
+<p>
+This command will take a pre-selected set of Cornu and Bezier Tracks and convert them into a set of equivalent Straights or Curves,
+</p>
+<p>
+The resulting track(s) will mimic the shape of the Cornu/Bezier(s) exactly. This command is intended to allow easier layout of smoothed shapes.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Elevation</title>
+<link rel="previous" href="cmdConvertFrom.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="computeElevations.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdElevation"></a>2.2.5 Elevation</h1>
+<p>
+<img src="png.d/belev.png">
+</p>
+<p>
+The <strong>Elevation</strong> command changes the elevation of track endpoints. After opening this dialog, The Message Bar will show the computed elevation at the cursor. There will be an open blue circle if an endpoint will be selected with <strong>Left-Click</strong>. You click on the respective endpoint to set its elevation properties.
+</p>
+<p>
+The endpoint which you are working on is indicated with a big red dot. Note that when an endpoint is selected, the Elevation Window will have focus. To select a different endpoint without closing this window, two clicks (or a double click) will be needed. The first click restores focus to the main window, the second selects the point.
+</p>
+<p>
+If you add <strong>Shift</strong> as you move the cursor before clicking you will see a blue bar when it is over a track if a <strong>Shift+Left-Click</strong> will split the Track at that point (which will give you the opportunity to specify an elevation).
+</p>
+<p>
+Adding <strong>Ctrl</strong> allows you to <strong>Ctrl+Left-Click</strong> to Select and <strong>Left-Drag</strong> to move existing Elevation Labels if the option is set for them to be displayed and the Zoom level is adequate, Only "Defined" and "Station" endpoint labels can be moved.
+</p>
+<p>
+If you add <strong>Alt</strong>, while moving around the layout close to tracks will show you the elevation at the point indicated by a blue closed dot.
+</p>
+<p>
+With <strong>Alt</strong> held, if you hover over a point close to where two unconnected tracks pass over one another, a blue square will be drawn and the Message Bar will show the two elevations and the Clearance between them.
+</p>
+<p>
+Clicking with <strong>Shift</strong> at this point will split the track, allowing the elevation to be adjusted to provide adequate clearance.
+</p>
+<p>
+<img src="png.d/celev.png">
+</p>
+<p>
+An endpoint can have one of several elevation types:
+</p>
+<p>
+
+</p>
+<ul><li>
+<strong>None</strong> - no elevation control defined. This is the default state and the elevation will be computed. It will be shown if the Display Option <a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a> <strong>EndPt Elevations</strong> setting is on.
+</li>
+<li>
+<strong>Defined</strong> - the defined elevation is set to a specified height. The elevation will be shown.
+</li>
+<li>
+<strong>Hidden</strong> - a defined elevation like <strong>Defined</strong> but not displayed on the layout.
+</li>
+<li>
+<strong>Computed</strong> - height is calculated and displayed even if the Display Option <a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a> <em>EndPt Elevations</em> is on.
+</li>
+<li>
+<strong>Grade</strong> - grade is based on height of closest neighbors and displayed.
+</li>
+<li>
+<strong>Ignored</strong> - endpoint is not considered in computations. This breaks the flow of the elevation influence from one side to the other, resulting in an elevation that is not dependent on the connected track but on the other connected tracks. A common use would be to ensure a mainline dictates the elevation of the start of a branch.
+</li>
+<li>
+<strong>Station</strong> - assigns a name to the endpoint.
+</li>
+</ul>
+<p>
+<strong>Note:</strong> Only one of these attributes can be assigned to an endpoint at a time. For example, an endpoint can not be defined as a Grade and a Station at the same time.
+</p>
+<p>
+When an endpoint is selected on the layout by <em>Left-Click</em>, it is highlighted by a large red dot and its elevation type and values are displayed in the dialog.
+</p>
+<p>
+Additionally, <strong>Defined Elevation</strong> endpoints are indicated on the layout by gold colored dots. <strong>Ignored Elevation</strong> endpoints are indicated by blue colored dots.
+</p>
+<p>
+The grade at the specified endpoint is displayed next to the <strong>Grade</strong> radio button. For <em>Defined Elevation</em> endpoints, the grade on each side of the endpoint is displayed.
+</p>
+<p>
+<strong>Defined Elevation</strong> endpoints are used to specify fixed heights of track endpoints. Typically, this would be where a grade changes or where clearances must be maintained. <strong>Computed</strong> Elevations and <strong>Grade</strong> markers can place between <strong>Defined Elevation</strong> endpoints. These values are not entered directly but are computed dynamically based on <strong>Defined Elevations</strong> of connected tracks. This allows labeling of elevations at intermediate endpoints without having the enter specific values. <strong>Computed</strong> markers can also placed between a <strong>Defined Elevation</strong> point and the end of a track.
+</p>
+<p>
+<strong>Stations</strong> are used to provide information for the Profile (<a href="cmdProfile.html#cmdProfile">Section 2.2.12</a>) command.
+</p>
+<p>
+All <strong>Elevation</strong> labels (including <strong>Grade</strong> and <strong>Station</strong>) are drawn on the layout in outlined boxes. These may be moved by the <strong>Move Description</strong> (<a href="cmdMoveLabel.html#cmdMoveLabel">Section 2.2.10</a>) command. In addition, <strong>Grade</strong> labels have an arrow indicating the upwards direction.
+</p>
+<hr>
+<ul>
+<li><a href="computeElevations.html#computeElevations">2.2.5.1 Computing Dynamic Elevations</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Computing Dynamic Elevations</title>
+<link rel="previous" href="cmdElevation.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdFlip.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="computeElevations"></a>2.2.5.1 Computing Dynamic Elevations</h1>
+<p>
+Elevations of Tracks are computed in following steps. The colors listed in each step are used as the background color of the Track Elevation Markers (if they are enabled (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>)).
+</p>
+<ul><li>
+The Shortest Paths between all <em>Defined Elevations</em> are computed. A Path stops at <strong>Ignored</strong> or <em>Defined</em> endpoints. The Elevation of any Turnouts on these Paths with more than two connections are computed as the average Elevation inversely weighted by distance along the tracks to the <em>Defined Elevation</em> points (<em>Blue</em>).
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The Elevation of any other tracks on the Shortest Paths are computed based on the distance along the tracks from the Turnouts computed in the first step and/or the <em>Defined Elevation</em> points (<em>Purple</em>).
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The Elevation of any remaining tracks is computed based on the average Elevation of the tracks found in the first two steps that they are (directly or indirectly) connected to, inversely weighted by geometric distance (<em>Gold</em>).
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Any remaining tracks are not connected to a <em>Defined Elevation</em> and do not have an Elevation.
+</li>
+</ul>
+<p>
+The elevation computation is performed incrementally every time the layout is changed to keep all elevations in sync. The performance of the computation is affected by the placement of the <em>Defined Elevation</em> endpoints and the number of Paths between them. Place the <em>Defined Elevations</em> at points where tracks begin to branch (such as the throat of a yard or at the ends of a siding). Also, use <em>Defined Elevations</em> or <em>Ignore Elevations</em> to break the layout into areas so recomputation has fewer tracks and Paths to deal with.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Flip</title>
+<link rel="previous" href="computeElevations.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdJoin.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdFlip"></a>2.2.6 Flip</h1>
+<p>
+<img src="png.d/bflip.png">
+</p>
+<p>
+This command turns selected objects over or around, effectively mirroring the object .
+</p>
+<ol><li>
+Prior to invoking this command visualize how the selected object(s) will be flipped and determine where to draw a reference line that will act as an axis or anchor point for the flipped object(s).
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/flip1.png"> <img src="png.d/flip2.png">
+</dd>
+</dl>
+<p>
+
+</p>
+
+</li>
+<li>
+Invoked the <strong>Flip</strong> command then <em>Left-Click</em> on one end of the reference line visualized in the proceeding step. Holding the <em>Left</em> mouse button, <em>Drag</em> the cursor across the layout to form the line visualized earlier.
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/flip3.png"> <img src="png.d/flip4.png">
+</dd>
+</dl>
+<p>
+
+</p>
+
+</li>
+<li>
+Once a line of desired length and orientation appears, release the mouse button. The selected object(s) will then flip around the line as if it were a mirror.
+</li>
+</ol>
+<p>
+Since flipped objects are mirrored, turnout titles may be modified during the flip process. Right hand turnouts will become left hand turnouts and vice versa. Such is the case in this example.
+</p>
+<p>
+Certain turnouts, such as a Wye's, Three-Way or Crossings are symmetrical and thus titles for this type of objects are not changed. If a title change is necessary the currently loaded <strong>Parameter Files</strong> (<a href="cmdPrmfile.html#cmdPrmfile">Section 2.5.7</a>) are searched for a turnout that matches the flipped turnout. If a match is not found, the turnout's title is prefixed with <strong>Flipped</strong>. The <strong>Properties</strong> (<a href="cmdDescribe.html#cmdDescribe">Section 2.2.13</a>) command be used to change the title of such turnouts.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Join Tracks and Lines</title>
+<link rel="previous" href="cmdFlip.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdJoinLine.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdJoin"></a>2.2.7 Join Tracks and Lines</h1>
+<p>
+The <strong>Join</strong> command has two variatons,
+</p>
+<dl><dd>
+(<a href="cmdJoinTrack.html#cmdJoinTrack">Section 2.2.7.2</a>). Join Tracks by connecting them.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+(<a href="cmdJoinLine.html#cmdJoinLine">Section 2.2.7.1</a>). Create a PolyLine from two Draw Objects or Close a PolyLine as a Polygon.
+</dd>
+</dl>
+<hr>
+<ul>
+<li><a href="cmdJoinLine.html#cmdJoinLine">2.2.7.1 Join Lines</a></li>
+<li><a href="cmdJoinTrack.html#cmdJoinTrack">2.2.7.2 Join Tracks</a></li>
+<li><a href="joinNormalEasment.html#joinNormalEasment">2.2.7.3 Join with Normal Easement</a></li>
+<li><a href="joinCornu.html#joinCornu">2.2.7.4 Join with Cornu Easement</a></li>
+<li><a href="cornuTrackPins.html#cornuTrackPins">2.2.7.5 Cornu Track Pins</a></li>
+<li><a href="joinTrackStraight.html#joinTrackStraight">2.2.7.6 Using Straight Flex-Track</a></li>
+<li><a href="joinTrackMove.html#joinTrackMove">2.2.7.7 By Moving Track</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Join Lines</title>
+<link rel="previous" href="cmdJoin.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdJoinTrack.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdJoinLine"></a>2.2.7.1 Join Lines</h1>
+<p>
+<img src="png.d/bjoinline.png">
+</p>
+<p>
+The <strong>Join Line</strong> command produces a PolyLine from two Draw objects (Straight Line, Curved Line, Bezier Line or PolyLine). You select the two ends to join and the new Polyline will replace the two Draw objects, filling in any gap with a straight line segment. If the two ends are of the same PolyLine, an unfilled Polygon will be created.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Join Tracks</title>
+<link rel="previous" href="cmdJoinLine.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="joinNormalEasment.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdJoinTrack"></a>2.2.7.2 Join Tracks</h1>
+<p>
+<img src="png.d/bjoin.png">
+</p>
+<p>
+The <strong>Join Track</strong> command is used to bring together and connect any two segments of track. During the join process, <em>XTrackCAD</em> ensures the connecting tracks are properly aligned.
+</p>
+<p>
+See <strong>Help&gt;Demo</strong> (<a href="cmdDemo.html#cmdDemo">Section 2.6.1</a>) for examples of how to join tracks.
+</p>
+<p>
+For detail about;
+</p>
+<dl><dd>
+Using complex curves if Easement is set to Cornu <a href="joinCornu.html#joinCornu">Section 2.2.7.4</a>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Using Normal Easements where tracks are either joined with a straight or a 'simple curve' <a href="joinNormalEasment.html#joinNormalEasment">section 2.2.7.3</a>, e.g. one which uses a curve in a single direction as opposed to using a S-Curve (<a href="generalTerms.html#generalTerms">Section B.2</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Using straight flex-track to join track segments refer to <a href="joinTrackStraight.html#joinTrackStraight">Section 2.2.7.6</a>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Moving one segment of track to join with another refer to <a href="joinTrackMove.html#joinTrackMove">Section 2.2.7.7</a>.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Join with Normal Easement</title>
+<link rel="previous" href="cmdJoinTrack.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="joinCornu.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="joinNormalEasment"></a>2.2.7.3 Join with Normal Easement</h1>
+<p>
+This type of join does not work for Bezier or Cornu tracks, use Cornu Easements (<a href="joinCornu.html#joinCornu">Section 2.2.7.4</a>) for these tracks instead.
+</p>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/joincrv1.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<ol><li>
+Start the join process by clicking on the Join button (<img src="png.d/bjoin.png">).
+<p>
+
+</p>
+<p>
+<img src="png.d/joincrv2.png">
+</p>
+<p>
+
+</p>
+
+</li>
+<li>
+<em>Left-Click</em> the endpoint of one of the two tracks being joined. A red dot will appear as a reminder of which track has been selected.
+<p>
+
+</p>
+<p>
+<img src="png.d/joincrv4.png">
+</p>
+<p>
+
+</p>
+
+</li>
+</ol>
+<p>
+After the first track is selected, an entry field for prefered radius will be shown. A non-zero value will enable the snap anchor for the join radius.
+</p>
+<ol><li>
+Move the mouse pointer over the endpoint of the other track then <em>Left-Click</em> and hold the mouse button down. A track connecting the two endpoints will appear.
+<p>
+If the track appears in black (and you are happy with the curve as its drawn), release the mouse button.
+</p>
+<p>
+If the radius snap-anchor is active, and the position of the cursor is close to a position where the Join is exactly the desired radius, a blue circle will be shown. Releasing the button while it shows will snap the Join to the desired radius. If Easements are enabled as well, this fixed radius Join track will be joined to by easements.
+</p>
+<p>
+
+</p>
+<p>
+<img src="png.d/joincrv3.png">
+</p>
+<p>
+
+</p>
+
+</li>
+<li>
+If the track appears in red, it means <em>XTrackCAD</em> can't determine how to connect the first track with the second. If this occurs, while holding the left mouse button, drag the mouse back toward the first track until the connecting track appears in black. If the connecting track remains red, drag the mouse in the opposite direction until the connecting track turns black. Once the connecting track turns black, release the mouse button to finalize the <em>Join</em> command.
+<p>
+
+</p>
+<p>
+<img src="png.d/joincrv5.png">
+</p>
+<p>
+
+</p>
+
+</li>
+</ol>
+<p>
+Throughout the above, the exact shape of the curve can be adjust by dragging the mouse around while keeping the left mouse button held down.
+</p>
+<p>
+Sometimes, no matter where you drag the mouse, the curve stays red and the tracks cannot be connected. This means the resulting curve is tighter than the minimum track radius set in the <em>Preferences dialog</em> (<a href="cmdPref.html#cmdPref">Section 2.10.7</a>). If desired, this setting can be adjusted from the <em>Preferences dialog</em> using the <strong>Options&gt;Preferences</strong> menu selection to raise the dialog. If changing the minimum track radius is not a desired option then it will be necessary to relocate one of the tracks that you're attempting to join.
+</p>
+<p>
+You may also find that <em>XTrackCAD</em> will not create the connecting curve in the exact shape you want. If this happens it may be necessary to either move one of the end points or draw a partial curve (or straight) and try again.
+</p>
+<p>
+If enabled, Easements (<a href="cmdEasement.html#cmdEasement">Section 2.10.4</a>) will be automatically generated between tracks of differing radii. When using easements, there is a minimum radius as specified in the <em>Easement</em> dialog. It's not possible to join tracks with less then this radius and the connecting track's radius must be greater than the minimum radius.
+</p>
+<p>
+If any errors occur while joining tracks (such as moving beyond the end of a track or using a curve with a radius smaller than the Easement radius), then the joint track will be drawn in Red (The default colour of Exception Track errors. See <a href="cmdRgbcolor.html#cmdRgbcolor">Section 2.10.1</a> for detail). This colouring serves as visual indication for a connecting track that doesn't meet minimum specified parameters (<a href="cmdPref.html#cmdPref">Section 2.10.7</a>).
+</p>
+<p>
+Any tracks created during the <strong>Join</strong> command will have the following properties inherited from the first track: selected state, hidden state, scale, track gauge and Layer.
+</p>
+<p>
+A join can be made to or from a circle (<a href="cmdCircle.html#cmdCircle">Section 2.1.1</a>) of track. Joining a track with a circle will cause the circle to be converted into a curved track.
+</p>
+<p>
+For detail about;
+</p>
+<dl><dd>
+Using straight flex-track to join track segments refer to <a href="joinTrackStraight.html#joinTrackStraight">Section 2.2.7.6</a>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Moving one segment of track to join with another refer to <a href="joinTrackMove.html#joinTrackMove">Section 2.2.7.7</a>.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Join with Cornu Easement</title>
+<link rel="previous" href="joinNormalEasment.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cornuTrackPins.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="joinCornu"></a>2.2.7.4 Join with Cornu Easement</h1>
+<p>
+<a name="i0"></a>Creating a Cornu <a name="i1"></a>Modifying a Cornu <a name="i2"></a>Cornu Easements
+</p>
+<p>
+A Cornu is a form of curve that uses a mathematical approach to creating a curve between two sets of end conditions.
+</p>
+<p>
+The curve is designed to change curvature linearly along its length - which is the characteristic of a railway easement because it minimizes sudden changes in acceleration towards the center of curvature.
+</p>
+<p>
+The conditions used at each end are the radius, angle and position.
+</p>
+<p>
+Cornus can have added constraints in the form of track "pins" that force the curve to smoothly pass through that point while still respecting the end conditions.
+</p>
+<p>
+Cornus can be used in XtrackCAD to both Join tracks smoothly and form smooth curves that are not joined to other tracks.
+</p>
+<p>
+Because Cornu are mathematically generated, they can also be regenerated at will and so Cornu Joins have the unique characteristic in XTrackCAD that they remain connected even if the tracks at the ends are moved or even change shape.
+</p>
+<p>
+Cornu Joins will use whatever space is available - that is their "tightness" (rate of change of curvature) is variable and dynamic. The minimum radius is calculated and will show as an exception, but the acceptable rate of change of curvature is the choice of the designer.
+</p>
+<p>
+It is not always the case that the Cornu will be the most efficient way to get from A to B - because of its shape it will be the smoothest. If you want to bias the result, you can add TrackPins (<a href="cornuTrackPins.html#cornuTrackPins">Section 2.2.7.5</a>).
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cornu Track Pins</title>
+<link rel="previous" href="joinCornu.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="joinTrackStraight.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cornuTrackPins"></a>2.2.7.5 Cornu Track Pins</h1>
+<p>
+XTrackCAD Cornu can have "track pins" added that constrain the track to pass through those points in addition to meeting the end-conditions. This allows the track to be skewed or slewed around obstacles, or to suit some other constraint.
+</p>
+<p>
+The pins can be added when Cornus are created <a href="cmdCornu.html#cmdCornu">Section 2.1.2.6</a> or during <a href="cmdModify.html#cmdModify">Section 2.2.8</a> after clicking on the track. They can be selected and then <code>Left-Drag</code> dragged to alter the curve shape or deleted with <code>Delete</code>.
+</p>
+<p>
+When a Cornu Track with pins is saved, it is split into two Cornu joined at the pin. If a Cornu that is joined to another Cornu is Modified with <a href="cmdModify.html#cmdModify">Section 2.2.8</a>, the joints are rendered as Pins and the Modify is done for one continuous Cornu.
+</p>
+<p>
+
+</p>
+<ol><li>
+First, ensure that the Easement type option is set to Cornu - see <a href="cmdEasement.html#cmdEasement">section 2.10.4</a>
+</li>
+<li>
+Start the Join Track process by clicking on the Join Track button (<img src="png.d/bjoin.png">).
+</li>
+</ol>
+<p>
+As you move over tracks a blue roundel will indicate the end that will be chosen with <em>Left-Click</em>.
+</p>
+<p>
+<img src="png.d/joincornu1.png">
+</p>
+<dl><dd>
+<code>Left-Click</code> the open endpoint of one of the two tracks being joined. A red dot within a red circle will appear at the end of the join.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<code>Left-Drag</code> the endpoint to where you want it and release the button. The point will only move along the piece of track with the open endpoint (if this track type can be split) as far as the opposite end, or as an extension of that track at the selected end with the same curvature (if this track can be extended). Note that you will be able to fine-tune the end positions later.
+<p>
+
+</p>
+<p>
+<img src="png.d/joincornu2.png">
+</p>
+<p>
+
+</p>
+
+</dd>
+<dd>
+<code>Left-Click</code> the endpoint of the other track being joined. Another red dot within a circle will appear at that end of the join.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<code>Left-Drag</code> the endpoint to where you want it and release the button. The second endpoint can only be moved along the second track as far as the other end (if it can be split) or as an extension beyond the end of this track (if it can be extended). The initial curve will be drawn - it will be red if the minimum radius is smaller than the minimum radius option.
+<p>
+
+</p>
+<p>
+<img src="png.d/joincornu3.png">
+</p>
+<p>
+
+</p>
+
+</dd>
+<dd>
+You are now in "Select Points" mode.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+You can select one end point at a time with <code>Left-Click</code> and move it with <code>Left-Drag</code>. If you drag the end point off the original track it will extend.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+You can select a pin by <code>Left-Click</code>ing on it and move it with <code>Left-Drag</code>. <code>Delete</code> will remove the last selected Pin.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+You can add a Pin by <code>Left-Click</code>ing on an area of the track with no Pin or end.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Once you are happy, hit <em>Enter</em> or the <em>SpaceBar</em> to finish editing the easement. Or hit <em>Esc</em> to cancel.
+</dd>
+<dd>
+If you want to modify the Cornu later (even if it is joined at both ends) see <a href="chgCornu.html#chgCornu">section 2.2.8.8</a>
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Using Straight Flex-Track</title>
+<link rel="previous" href="cornuTrackPins.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="joinTrackMove.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="joinTrackStraight"></a>2.2.7.6 Using Straight Flex-Track</h1>
+<p>
+This method of joining track may be used where the endpoints of the two tracks to be joined are on the same horizontal (<code>X</code>) or vertical (<code>Y</code>) axis.
+</p>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/joinstrt1.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<ol><li>
+Start the join process by clicking on the Join button (<img src="png.d/bjoin.png">).
+<p>
+
+</p>
+<p>
+<img src="png.d/joinstrt2.png">
+</p>
+<p>
+
+</p>
+
+</li>
+<li>
+<em>Left-Click</em> the endpoint of one of the two tracks being joined. A red dot will appear as a reminder of which track has been selected.
+<p>
+
+</p>
+<p>
+<img src="png.d/joinstrt3.png">
+</p>
+<p>
+
+</p>
+
+</li>
+<li>
+Move the mouse pointer over the endpoint of the other track then <em>Left-Click</em>. A track connecting the two endpoints will appear.
+</li>
+</ol>
+<p>
+When this command is used to join;
+</p>
+<ul><li>
+two flex-track endpoints, one long section of flex-track without joints will result.
+</li>
+<li>
+two sectional track endpoints, a section of flex-track will be created between and used to join the two sectional track endpoints.
+</li>
+<li>
+one flex-track endpoint with one sectional track endpoint, the section of flex-track will be extended and joined with the sectional track endpoint.
+</li>
+</ul>
+<p>
+Any tracks created during the <strong>Join</strong> command will have the following properties inherited from the first track: selected state, hidden state, scale, track gauge and Layer.
+</p>
+<p>
+Turnouts and Sectional (<a href="cmdHotBar.html#cmdHotBar">Section 2.7</a>) tracks can be joined to other tracks. <em>XTrackCAD</em> extends the selected endpoint with a straight track when making the connection.
+</p>
+<p>
+A Turntable (<a href="cmdTurntable.html#cmdTurntable">Section 2.1.9</a>) can be joined however it must be used as the second endpoint for normal easements but can be connected to either end with Cornu.
+</p>
+<p>
+For detail about;
+</p>
+<dl><dd>
+Using curved flex-track to join track segments refer to <a href="joinCornu.html#joinCornu">Section 2.2.7.4</a>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Moving one segment of track to join with another refer to <a href="joinTrackMove.html#joinTrackMove">Section 2.2.7.7</a>.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>By Moving Track</title>
+<link rel="previous" href="joinTrackStraight.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdModify.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="joinTrackMove"></a>2.2.7.7 By Moving Track</h1>
+<p>
+This method of joining track may be used to move, align and join one section of track with another.
+</p>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/joinmove1.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<ol><li>
+Before initiating the <strong>Join</strong> command, the track that will be moved, aligned and then joined must be selected using the <strong>Select</strong> command (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>).
+<p>
+
+</p>
+<p>
+<img src="png.d/joinmove2.png">
+</p>
+<p>
+
+</p>
+
+</li>
+<li>
+Once the track to be moved is selected, start the join process by clicking on the Join button (<img src="png.d/bjoin.png">).
+<p>
+
+</p>
+<p>
+<img src="png.d/joinmove3.png">
+</p>
+<p>
+
+</p>
+
+</li>
+<li>
+<em>Shift+Left-Click</em> the endpoint of one of the two tracks being joined. A red dot will appear as a reminder of which track has been selected.
+<p>
+
+</p>
+<p>
+<img src="png.d/joinmove4.png">
+</p>
+<p>
+
+</p>
+
+</li>
+<li>
+Then move the mouse pointer over the endpoint of the other (unselected and stationary) track with <em>Shift+Left-Click</em>. The selected track will be moved, aligned then joined to the stationary section of track.
+</li>
+</ol>
+<p>
+For detail about;
+</p>
+<dl><dd>
+Using curved flex-track to join track segments refer to <a href="joinCornu.html#joinCornu">Section 2.2.7.4</a>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Using straight flex-track to join track segments refer to <a href="joinTrackStraight.html#joinTrackStraight">Section 2.2.7.6</a>.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Modify</title>
+<link rel="previous" href="joinTrackMove.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="extendModify.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdModify"></a>2.2.8 Modify</h1>
+<p>
+<img src="png.d/bmodify.png">
+</p>
+<p>
+The <strong>Modify</strong> command is used to change characteristics of tracks or draw elements or extend existing track by adding new track. The extend type of Modify command works with any unconnected track endpoint, or with <em>Turntables</em>. <em>Cornu(s)</em> or <em>Bezier</em> track can be modified even if connected. Selecting one Cornu which is connected to other Cornu(s) results in a single modification curve with control "Pins" at the connections.
+</p>
+<p>
+The <strong>Modify</strong> command can be invoked using the <strong>Change&gt;Modify</strong> menu item, the <strong>Modify</strong> button, by <em>Double-Click</em> in Select when hovering over a selected item or the menu raised by a <em>Right-Click</em> over the <strong>Main Canvas</strong>.
+</p>
+<p>
+Before a track is selected for Modify, a dynamic blue anchor will show which track the command will take effect on if the cursor is close enough to a modifyable track or object. Arrows are shown to indicate if the track can be extended or trimmed and also if its radius can be modified if Shift is depressed as the cursor is moved over the track.
+</p>
+<ul>
+<li><a href="extendModify.html#extendModify">2.2.8.1 Extending Track</a></li>
+<li><a href="objectModify.html#objectModify">2.2.8.2 Modifying Objects</a></li>
+<li><a href="chgTrackLength.html#chgTrackLength">2.2.8.3 Changing Track Length</a></li>
+<li><a href="createTangent.html#createTangent">2.2.8.4 Creating a Tangent to a Curve</a></li>
+<li><a href="chgTrackRadius.html#chgTrackRadius">2.2.8.5 Changing Track Radius</a></li>
+<li><a href="extendTrack.html#extendTrack">2.2.8.6 Extending Track Length</a></li>
+<li><a href="chgDraw.html#chgDraw">2.2.8.7 Modifying Draw Elements</a></li>
+<ul>
+<li><a href="polyModify.html#polyModify">2.2.8.7.1 Modifying PolyLines and Polygons</a></li>
+</ul>
+<li><a href="chgCornu.html#chgCornu">2.2.8.8 Cornu Easements Modifying a Cornu Track</a></li>
+<li><a href="chgBezier.html#chgBezier">2.2.8.9 Modifying a Bezier</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Extending Track</title>
+<link rel="previous" href="cmdModify.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="objectModify.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="extendModify"></a>2.2.8.1 Extending Track</h1>
+<p>
+Either the left mouse button (for changing length or creating a tangent track) or the right mouse button (for extending with a new track) is used to modify an unconnected endpoint.
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Modifying Objects</title>
+<link rel="previous" href="extendModify.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="chgTrackLength.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="objectModify"></a>2.2.8.2 Modifying Objects</h1>
+<ol><li>
+The endpoints of a <em>Line</em>, <em>Dimension Line</em>, <em>Table Edge</em> or <em>Benchwork</em> can be dragged to new positions.
+</li>
+<li>
+The ends of a <em>Ruler</em> or the ends and origin of a <em>Protractor</em> can be dragged to new positions
+</li>
+<li>
+A <em>Box</em> or a <em>FilledBox</em> can be modified by selecting a corner and dragging in two dimensions, or a side and dragging it orthogonally. This modifications preserve a 4-sided rectangle.
+</li>
+<li>
+The controlpoints of a <em>Cornu Track</em>, <em>Bezier Track</em> or <em>Bezier Line</em> can be changed. Control "Pins" can be added, moved or selected and removed from <em>Cornus</em>.
+</li>
+<li>
+<em>Curved Lines</em> are modified by dragging the end points and dragging the amount of central deflection (radius).
+</li>
+</ol>
+<p>
+Any tracks created during the <strong>Modify</strong> command will have the following properties inherited from the first track: selected state, hidden state, scale, track gauge and Layer.
+</p>
+<p>
+For more detail about;
+</p>
+<dl><dd>
+Changing track length refer to <a href="chgTrackLength.html#chgTrackLength">Section 2.2.8.3</a>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Creating a tangent to a curve refer to <a href="createTangent.html#createTangent">Section 2.2.8.4</a>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Changing track radius refer to <a href="chgTrackRadius.html#chgTrackRadius">Section 2.2.8.5</a>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Extending track length refer to <a href="extendTrack.html#extendTrack">Section 2.2.8.6</a>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Modifying Draw elements refer to <a href="chgDraw.html#chgDraw">Section 2.2.8.7</a>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Modifying Polygons and PolyLines refer to <a href="polyModify.html#polyModify">Section 2.2.8.7.1</a>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Modifying a Cornu refer to <a href="chgCornu.html#chgCornu">Section 2.2.8.8</a>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Modifying a Bezier refer to <a href="chgBezier.html#chgBezier">Section 2.2.8.9</a>
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Changing Track Length</title>
+<link rel="previous" href="objectModify.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="createTangent.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="chgTrackLength"></a>2.2.8.3 Changing Track Length</h1>
+<ol><li>
+Click the <strong>Modify</strong> button (<img src="png.d/bmodify.png">) to activate the <strong>Modify</strong> function.
+<p>
+
+</p>
+
+</li>
+<li>
+With the mouse pointer hovering over the endpoint of the object to be modified, <em>Left+Drag</em> (<a href="windowTerms.html#windowTerms">Section B.1</a>) to change the length of the track segment, table edge, bench-work, dimension line or line. If <strong>MagneticSnap</strong> is enabled, the end will snap to any close draw object. <code>Alt</code> inverts the MagneticSnap setting. If there is no nearby object and <strong>SnapGrid</strong> is enabled, the end will snap to a grid point unless <strong>Alt</strong> is added.
+<p>
+
+</p>
+
+</li>
+</ol>
+<p>
+<em>Left+Drag</em>ging the endpoint of a turnout (or other sectional track) causes a straight length of flex-track to be created from the selected endpoint to the cursor.
+</p>
+<p>
+<em>Left+Drag</em>ging the endpoint of a <strong>Table Edge</strong> (<a href="cmdDraw.html#cmdDraw">Section 2.3</a>) allows the endpoint to be moved to a new position. If <code>Ctrl</code> is added and the endpoint is moved close to another <strong>Table Edge</strong> then the endpoint will be moved to it if not, the line will be a multiple of 90 degrees.
+</p>
+<p>
+The length of a curved track can be changed to form an almost complete circle by selecting one endpoint of the curved track then dragging the cursor to the other endpoint. Going past the other endpoint creates a very small curve. Curves greater than 360&#176; cannot be created.
+</p>
+<p>
+For detail about;
+</p>
+<dl><dd>
+Creating a tangent to a curve refer to <a href="createTangent.html#createTangent">Section 2.2.8.4</a>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Changing track radius refer to <a href="chgTrackRadius.html#chgTrackRadius">Section 2.2.8.5</a>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Extending track length refer to <a href="extendTrack.html#extendTrack">Section 2.2.8.6</a>
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Creating a Tangent to a Curve</title>
+<link rel="previous" href="chgTrackLength.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="chgTrackRadius.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="createTangent"></a>2.2.8.4 Creating a Tangent to a Curve</h1>
+<ol><li>
+Click the <strong>Modify</strong> button (<img src="png.d/bmodify.png">) to activate the <strong>Modify</strong> function.
+<p>
+
+</p>
+
+</li>
+<li>
+With the mouse pointer hovering over the endpoint of the object to be modified, <em>Left+Drag</em> (<a href="windowTerms.html#windowTerms">Section B.1</a>) to change the length of the track segment.
+</li>
+</ol>
+<p>
+If a <em>Left+Drag</em> is continued beyond the radius of a curved track (<a href="cmdCurve.html#cmdCurve">Section 2.1.2</a>) (not a Circle) a tangent to the curve will be created.
+</p>
+<p>
+Creation of the tangent begins when the distance from the curved track center to the cursor is greater than 110% of the radius. If the cursor is moved within the radius of the curve then the current command exits and the <em>Changing Track Length</em> (<a href="chgTrackLength.html#chgTrackLength">Section 2.2.8.3</a>) command is executed instead.
+</p>
+<p>
+If <strong>Easements</strong> (<a href="cmdEasement.html#cmdEasement">Section 2.10.4</a>) are enabled then an easement curve will be generated (if required) to connect the old and new tracks.
+</p>
+<p>
+For detail about;
+</p>
+<dl><dd>
+Changing track length refer to <a href="chgTrackLength.html#chgTrackLength">Section 2.2.8.3</a>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Changing track radius refer to <a href="chgTrackRadius.html#chgTrackRadius">Section 2.2.8.5</a>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Extending track length refer to <a href="extendTrack.html#extendTrack">Section 2.2.8.6</a>
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Changing Track Radius</title>
+<link rel="previous" href="createTangent.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="extendTrack.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="chgTrackRadius"></a>2.2.8.5 Changing Track Radius</h1>
+<p>
+This command is used to change the radius of a curved track or to curve a section of straight track.
+</p>
+<ol><li>
+Click the <strong>Modify</strong> button (<img src="png.d/bmodify.png">) to activate the <strong>Modify</strong> function.
+<p>
+
+</p>
+
+</li>
+<li>
+<em>Shift+Left+Drag</em> the unconnected endpoint of a curved track to change the radius of track segment. Alternately, <em>Shift+Left+Drag</em> the unconnected endpoint of a straight track to add a radius to the track segment.
+<p>
+
+</p>
+<ul><li>
+For this command to work, the endpoint opposite that being manipulated must be connected to another track.
+</li>
+</ul>
+<p>
+
+</p>
+
+</li>
+</ol>
+<p>
+This command can be used to change straight tracks into curved track and vice versa.
+</p>
+<p>
+For detail about;
+</p>
+<dl><dd>
+Changing track length refer to <a href="chgTrackLength.html#chgTrackLength">Section 2.2.8.3</a>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Creating a tangent to a curve refer to <a href="createTangent.html#createTangent">Section 2.2.8.4</a>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Extending track length refer to <a href="extendTrack.html#extendTrack">Section 2.2.8.6</a>
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Extending Track Length</title>
+<link rel="previous" href="chgTrackRadius.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="chgDraw.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="extendTrack"></a>2.2.8.6 Extending Track Length</h1>
+<p>
+This command is used to extend the length of a straight or curved section of track.
+</p>
+<ol><li>
+Click the <strong>Modify</strong> button (<img src="png.d/bmodify.png">) to activate the <strong>Modify</strong> function.
+<p>
+
+</p>
+
+</li>
+<li>
+With the mouse pointer hovering over the endpoint of the object to be modified, <em>Right+Drag</em> (<a href="windowTerms.html#windowTerms">Section B.1</a>) to extend the length of the track segment.
+<p>
+
+</p>
+
+</li>
+</ol>
+<p>
+The selected endpoint determines the position and angle of the first endpoint of the new track. The cursor is dragged to set the second endpoint. A curved or straight track will be created, depending on the position of the second endpoint.
+</p>
+<p>
+If <strong>easements</strong> (<a href="cmdEasement.html#cmdEasement">Section 2.10.4</a>) are enabled then an easement curve will be generated (if required) to connect the old and new tracks.
+</p>
+<p>
+For detail about;
+</p>
+<dl><dd>
+Changing track length refer to <a href="chgTrackLength.html#chgTrackLength">Section 2.2.8.3</a>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Creating a tangent to a curve refer to <a href="createTangent.html#createTangent">Section 2.2.8.4</a>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Changing track radius refer to <a href="chgTrackRadius.html#chgTrackRadius">Section 2.2.8.5</a>
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Modifying Draw Elements</title>
+<link rel="previous" href="extendTrack.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="polyModify.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="chgDraw"></a>2.2.8.7 Modifying Draw Elements</h1>
+<p>
+Draw elements have blue handles that show how they can be modified. They also have text entry boxes that allow precise entry of parameters. These values become active when a <em>Tab</em> is entered, or the cursor is moved out of the text box.
+</p>
+<p>
+There is a context menu accessed via <em>Right-Click</em> for Draw Objects that can change the edit mode from the initial "Points Mode" to "Origin Mode" where <em>Click</em> sets the position of the drawn object's origin - which will cause subsequent rotations using <a href="cmdModify.html#cmdModify">Section 2.2.8</a> or <a href="cmdDescribe.html#cmdDescribe">Section 2.2.13</a> to be centered about that point.
+</p>
+<p>
+The context menu can be used to go back to Points Mode, or to set the origin to one of a number of defined points. There are text shortcuts - "o" for Origin Mode and "p" for Points Mode.
+</p>
+<p>
+In Origin Mode, the context menu allows the origin to be set to be -
+</p>
+<dl><dd>
+<em>Absolute</em> (shortcut "0") with the origin at the layout origin or
+</dd>
+<dd>
+<em>Relative</em> by dragging the origin to a point, or snapping to the position of the first 4 corner points (shortcut "1" through "4"), or to the middle/centroid of the shape (shortcut "m"). For a Polygon or Polyline the <em>Relative</em> origin can be snapped to a last selected node (shortcut "l").
+</dd>
+</dl>
+<p>
+
+</p>
+<p>
+In Points Mode,
+</p>
+<p>
+
+</p>
+<dl><dd>
+Lines have end points that can be dragged. <em>Shift-Drag</em> will snap the end to the end of a nearby Draw object, while <em>Ctrl+Drag</em> will snap to any point on a nearby Draw object. They have text entry boxes for length and angle.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Curves have end points that work like Lines but also have a middle anchor that can be used to alter the curve radius. They have text box entry for Arc Length (in degrees) and Radius.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Boxes have anchors for all corners and the middle of all sides. They have text entry boxes for width and height.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Bezier Lines - see <a href="chgBezier.html#chgBezier">Section 2.2.8.9</a>
+</dd>
+</dl>
+<ul>
+<li><a href="polyModify.html#polyModify">2.2.8.7.1 Modifying PolyLines and Polygons</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Modifying PolyLines and Polygons</title>
+<link rel="previous" href="chgDraw.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="chgCornu.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="polyModify"></a>2.2.8.7.1 Modifying PolyLines and Polygons</h1>
+<p>
+When a Polygon or a PolyLine is modified, open blue circle anchors show the position of its "nodes", these are selected with <strong>Left-Click</strong> and are shown as filled circles.
+</p>
+<ul><li>
+<strong>Left-Drag</strong> of a selected node of a <em>PolyLine</em> or <em>Polygon</em> moves that node to a new position, and if moved close enough to a neighboring node will merge the two nodes and delete the edge between them.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+<strong>Delete</strong> or <strong>Backspace</strong> will remove a selected node.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+<strong>Left-Clicking</strong> on an edge will create a new node that can be dragged to position it.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Multiple points can be selected using <strong>Shift+Left-Click</strong>. If these are then <strong>Left-Drag</strong>ed all the selected points move together, preserving relative position.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+There is a context menu that has controls for a selected point. It has options to alter the node into a rounded node (shortcut "r") or a smooth node (shortcut "s"). To turn it back into a sharp (vertex) node (shortcut "v").
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+If <em>Shift</em> is held down while dragging, the relative angle for the first selected point to its predecessor point will be locked to a multiple of 90 degrees.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+When a node or nodes is/are selected, text entry boxes for length and relative angle (the deviation angle from the direction of preceeding side) can be used to fine-tune the position of the first node in the sequence. A arc indicator identifies the angle in question.
+</li>
+</ul>
+<p>
+
+</p>
+<p>
+If no nodes are selected,
+</p>
+<p>
+
+</p>
+<ul><li>
+A context menu can be used to close a polyline into a polygon (shortcut "g") or open it (shortcut "l") into a non-filled polygon between its last and first nodes.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+A unfilled polygon can also be filled (shortcut "f") or a filled one emptied (shortcut "u").
+</li>
+</ul>
+<p>
+
+</p>
+<p>
+Notes
+</p>
+<p>
+
+</p>
+<dl><dd>
+A selected Polygon or Polyline node can only be deleted if there are at least three nodes left. It can only be round or smooth if long as it isn't an end node of a Polyline.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Smoothed nodes implement a short Bezier curve that goes from halfway along the line of to the next node and which has a control arm that ends at the node. These are typically of most use to fine-tune a series of nodes that simulate a complex curve.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Rounded nodes start at a distance that is half the shorter of the lines from the last node and to the next node and has control arms that extend to the half-way point to the node. This produces an arc whose radius is determined by the distance of the closet node. By manipulating the nearest node (for example, by adding a point) the radius at the node can be controlled.
+</dd>
+</dl>
+<p>
+
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cornu Easements Modifying a Cornu Track</title>
+<link rel="previous" href="polyModify.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="chgBezier.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="chgCornu"></a>2.2.8.8 <a name="i0"></a>Cornu Easements Modifying a Cornu Track</h1>
+<p>
+Because a Cornu Track is defined by its end points position, angle and radius - it can only be directly modified by dragging an end point along a track, or altering its end conditions if it is not joined to another track. It can also have added "Pins" which constrain the curve to smoothly pass through a point.
+</p>
+<ol><li>
+Click the <strong>Modify</strong> button (<img src="png.d/bmodify.png">) to activate the <strong>Modify</strong> function.
+<p>
+
+</p>
+
+</li>
+<li>
+Click on the Cornu track. The track ends will turn into roundels. If any other Cornus are connected at either end, the entire connected set will be modifyable as one Cornu with intermediate "Pins" at the connections.
+<p>
+
+</p>
+
+</li>
+<li>
+<em>Left-Click</em> an endpoint and <em>Left-Drag</em> it to move the endpoint along a connected track, or beyond it if you want that track extended. If there is no track the endpoint is free to move.
+<p>
+
+</p>
+
+</li>
+<li>
+For an unconnected end point, <em>Left-Click</em> on the Radius or Angle anchors and <em>Left-Drag</em> it to adjust them.
+<p>
+
+</p>
+
+</li>
+<li>
+<em>Left-Click</em> an Pin and <em>Left-Drag</em> it to move the pin and make the curve to pass through it.
+<p>
+
+</p>
+
+</li>
+<li>
+<em>Left-Click</em> the track where a Pin doesn't exist to add a Pin and <em>Left-Drag</em> it to alter the curve to pass through a defined point.
+<p>
+
+</p>
+
+</li>
+<li>
+<em>Delete</em> to delete the last seelcted Pin, the curve will change to meet the end conditions and pass through any remaining Pins.
+<p>
+
+</p>
+
+</li>
+<li>
+Repeat with the other end-point or Pins if desired
+<p>
+
+</p>
+
+</li>
+<li>
+Once you are happy, hit the <em>spacebar</em> or <em>Enter</em>, or to cancel hit <em>Escape</em>.
+</li>
+</ol>
+<p>
+<strong>Note:</strong> If the Modify command contained Pins, <em>spacebar</em> or <em>Enter</em> it will output a set of connected Cornu(s) joined at the Pin points.
+</p>
+<p>
+<strong>Note:</strong> A Cornu can also be modified by moving or rotating a connected track.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Modifying a Bezier</title>
+<link rel="previous" href="chgCornu.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdMove.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="chgBezier"></a>2.2.8.9 Modifying a Bezier</h1>
+<p>
+Because a Bezier is defined by its control points position - its shape can only be modified by dragging an control point.
+</p>
+<ol><li>
+Click the <strong>Modify</strong> button (<img src="png.d/bmodify.png">) to activate the <strong>Modify</strong> function.
+<p>
+
+</p>
+
+</li>
+<li>
+Click on the track. The control points will appear
+<p>
+
+</p>
+
+</li>
+<li>
+<em>Left-Click</em> a control point and <em>Left-Drag</em> it to move it.
+<p>
+
+</p>
+
+</li>
+<li>
+Repeat for another end point if desired
+<p>
+
+</p>
+
+</li>
+<li>
+Once you are happy, hit the <em>spacebar</em> or <em>Enter</em>, or to cancel hit <em>Escape</em>.
+</li>
+</ol>
+<p>
+<strong>Note: </strong> A Bezier's end point will only be modifyable if it is not connected. Both internal control points can be modified even if the track is connected.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Move</title>
+<link rel="previous" href="chgBezier.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="moveByMouse.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdMove"></a>2.2.9 Move</h1>
+<p>
+<img src="png.d/bmove.png">
+</p>
+<p>
+This command is used to move selected (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) objects around the layout.
+</p>
+<p>
+The <strong>Move</strong> command can be invoked using the <strong>Change&gt;Move</strong> menu item or the <strong>Move</strong> button and from the menu that's raised by a <em>Right-Click</em> over the <strong>Main Canvas</strong> or by the <em>Shift+Left+Drag</em> command when in <strong>Select</strong> mode.
+</p>
+<p>
+Successful use of this command requires selection of the object(s) to be moved before attempting to move it. An object is selected by using the <em>Left-Click</em> command. A group of connected objects can be selected using the <em>Shift+Left-Click</em> command.
+</p>
+<p>
+A move can be achieved using one of the following methods;
+</p>
+<p>
+
+</p>
+<dl><dd>
+<em>Left+Drag</em> using the mouse. See <a href="moveByMouse.html#moveByMouse">Section 2.2.9.1</a> for detail.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Selecting fixed or specified amounts of translation in the X and Y directions using a <em>Right-Click</em> menu. See <a href="moveByMenu.html#moveByMenu">Section 2.2.9.2</a> for detail.
+</dd>
+</dl>
+<p>
+
+</p>
+<p>
+During a Move of tracks, and <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) is enabled, if one of the end-points of the selected objects is close to an open end of a unselected point, two anchors (an open an closed blue ball) will appear. This indicates that the two points will auto-join and that all the moved tracks will align to the unselected point if the Move is stopped. This behaviour can be suppressed with <em>Alt</em>. If <strong>MagneticSnap</strong> is disabled, the alignment will only occur if <em>Alt</em> is pressed.
+</p>
+<hr>
+<p>
+<strong>Note:</strong> If the moved track is connected but the track it is connect to is not moved, it will be disconnected, unless that track or the last selected track is a Cornu, in which case the Cornu concenred will be modified (if possible) to remain connected.
+</p>
+<p>
+<strong>Note:</strong> Cornu tracks connected to a turntable will be modified if it is moved or rotated. They remain connected at the point on the radius where they started, so it may be desireable to delete and redraw them if the rotation is large.
+</p>
+<hr>
+<ul>
+<li><a href="moveByMouse.html#moveByMouse">2.2.9.1 Using Mouse</a></li>
+<li><a href="moveByMenu.html#moveByMenu">2.2.9.2 Using Values of X and Y Translation</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Using Mouse</title>
+<link rel="previous" href="cmdMove.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="moveByMenu.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="moveByMouse"></a>2.2.9.1 Using Mouse</h1>
+<p>
+Once object(s) are selected, <em>Left+Drag</em> is used to move them around the layout using the mouse.
+</p>
+<p>
+Alternatively, <em>Shift+Ctrl+Arrow</em> can be used to micro-move the selected object(s). The amount micro-moved is dependent on the zoom in use. To move by smaller increments, zoom in further. My moving to macro-zoom modes extremely fine adjustments can be made.
+</p>
+<p>
+Remember that unattached objects can also be moved to exact positions using the <a href="cmdDescribe.html#cmdDescribe">Section 2.2.13</a> Command or by the <a href="moveByMenu.html#moveByMenu">Section 2.2.9.2</a>.
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Using Values of X and Y Translation</title>
+<link rel="previous" href="moveByMouse.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdMoveLabel.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="moveByMenu"></a>2.2.9.2 Using Values of X and Y Translation</h1>
+<p>
+Move An Object Using Fixed or Specified amounts of X and Y Translation.
+</p>
+<p>
+A pop-up menu with additional menu items allows you to <strong>Move</strong> the selected object(s) through through any amount you specify.
+</p>
+<p>
+<img src="png.d/mentermove.png">
+</p>
+<p>
+The <strong>Move</strong> command is executed as follows;
+</p>
+<ol><li>
+<strong>Select</strong> the object(s) to be moved.
+<p>
+
+</p>
+
+</li>
+<li>
+<em>Shift+Right-Click</em> to raise the Move/Rotate menu.
+<p>
+
+</p>
+
+</li>
+</ol>
+<p>
+Any amount of precise transalation may be entered by <em>Left-Click</em>ing the <strong>Enter Move...</strong> menu item then entering a desired amount of translation in X and Y in the dialog window that appears.
+</p>
+<p>
+
+</p>
+<p>
+<img src="png.d/dentermove.png">
+</p>
+<p>
+
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Move Description</title>
+<link rel="previous" href="moveByMenu.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdPan.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdMoveLabel"></a>2.2.10 Move Description</h1>
+<p>
+<img src="png.d/bmovedes.png">
+</p>
+<p>
+This command is used to move Elevation, Grade, or Station (<a href="cmdElevation.html#cmdElevation">Section 2.2.5</a>), and to enable/disable and move Straight Track (<a href="cmdStraight.html#cmdStraight">Section 2.1.6</a>), Curved Track (<a href="cmdCurve.html#cmdCurve">Section 2.1.2</a>), Bezier (<a href="cmdBezier.html#cmdBezier">Section 2.1.2.5</a>, Cornu (<a href="cmdCornu.html#cmdCornu">Section 2.1.2.6</a>), Joint (<a href="cmdJoin.html#cmdJoin">Section 2.2.7</a>), Helix (<a href="cmdHelix.html#cmdHelix">Section 2.1.4</a>) and Structure or Turnout (<a href="cmdHotBar.html#cmdHotBar">Section 2.7</a>) Labels.
+</p>
+<p>
+The <strong>Move Description</strong> command can be invoked using the <strong>Change&gt;Move Description</strong> menu item or the <strong>Move Description</strong> button.
+</p>
+<p>
+Click the <strong>Move Description</strong> button to activate the <strong>Move Description</strong> command. As the cursor passes close to an object that can display a label it will be highlighted. A dark blue indicates a label that has "Show Description" set on, a teal color means it is set to hide.
+</p>
+<p>
+Use <em>Left+Drag</em> to move the label to a new position and unhide if hidden. Once moved, the label becomes fixed in a position relative to the object. Subsequent moves of that object will cause the label to move as well.
+</p>
+<p>
+This operation can also be invoked by <em>Ctrl+Left+Drag</em> when in Select command (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>).
+</p>
+<p>
+Note that labels need to be visible in the Display menu and the layout needs to be zoomed in enough to show labels for them to be moved.
+</p>
+<p>
+There are keys that control the display of description when hovering over a description or a track.
+</p>
+<ul><li>
+The letter "<strong>s</strong>" when hovering over a track will show the hidden description - the teal highlight will show which tracks can have descriptions.
+</li>
+<li>
+The letter "<strong>h</strong>", when hovering over the track or description, can be used to hide display of individual Curved Track, Bezier Track, Cornu, Helix, Joint or Turnout Labels.
+</li>
+<li>
+The letter "<strong>d</strong>" will enable and disable a detailed description which is intended for tracklaying - it is a table of points and track angles that lie along the track path.
+</li>
+</ul>
+<p>
+Using these detailed values a curve can be constructed even for complex objects such as Bezier or Cornu.
+</p>
+<p>
+There is a <strong>Context Menu</strong> invoked with <em>Right-Click</em> or <em>Shift plus Right-Click</em> to Show/Hide individual descriptions as well as set the description to detailed.
+</p>
+<p>
+Labels can be moved by hovering the "hot spots" or over the attached track object. <em>Left-Drag</em> will reposition it. Elevation labels can be selected by hovering of thier centers or the end point they refer to. Note that end points with elevation mode "None" are not selectable.
+</p>
+<ul><li>
+Cornu, Bezier, Straight, Curve and Joint (Easement) Labels can be moved along the line between the end-points and also laterally.
+<p>
+
+</p>
+<ul><li>
+Cornu and Bezier Tracks show the "chord" length, its absolute angle, and the length of the track and the minimum radius. To help lay these variable radius curves out, the detailed description information about track centers and angles selected by <strong>'d'</strong> is suggested.
+</li>
+<li>
+Joint/Easement Tracks show the "chord" length and abslute angle and easement curve constructing values of Radius and Lengths. For laying out larger easmements, the detailed position and angle description selected by <strong>'d'</strong> may be useful.
+</li>
+<li>
+Straight Tracks show the length and the absolute angle. For laying out long straights, the detailed track center position and angle descriptions selected by <strong>'d'</strong> may be useful.
+</li>
+<li>
+Curved Tracks show the radius, chord length, deflection at the center from the chord and the angular length. For laying out curves, the detailed track center position and angle descriptions selected by <strong>'d'</strong> may be useful.
+</li>
+</ul>
+
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Curve Track Labels can be moved so that the label is somewhere on a radial line from the center to a position within the arc. A Curve label shows the absolute angle of the chord, its length, the Curve Radius and the deflection from the chord at the center of it. This enables the curve to be laid out even if the center point of the arc is inaccesible. Note that the detailed description may also be helpful in this case.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Compound (Structure and Turnout) Labels can be moved without restriction. They show the Object's Title information.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Elevation points labels can be moved without restriction - they show the Grade, Elevation, or Station Name as appropriate.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The detailed description setting is not preserved in the saved layout. It is designed for use when transferring a complex part of the plan to a real layout.
+</li>
+</ul>
+<p>
+Note - existing defined elevation labels can be moved, but controlling thier visbility is done with the <a href="cmdElevation.html#cmdElevation">Section 2.2.5</a> command.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Pan/Zoom</title>
+<link rel="previous" href="cmdMoveLabel.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdProfile.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdPan"></a>2.2.11 Pan/Zoom</h1>
+<p>
+<img src="png.d/pan.png">
+</p>
+<p>
+This command is used to move or resize the viewport using the mouse or keyboard. <em>Left+Drag</em> Pans the viewport up and down, left and right keping it within the boundaries of the layout. <em>Ctrl+Left-Drag</em> selects an area of the screen to zoom into. The <strong>"0"</strong> or <strong>"o"</strong> - key resets the display to the origin but leaves the zoom as is. Keys between <strong>1</strong> and <strong>9</strong> set the zoom to that zoom level. The <strong>"e"</strong> - key resets the origin to zero and the zooms to show the whole layout.
+</p>
+<p>
+There is a context menu that contains these text based items as well.
+</p>
+<dl><dd>
+<a name="i0"></a><em>Zoom/Pan Shortcut Keys</em>
+<p>
+
+</p>
+<ul><li>
+Keys '1'-'9' set the zoom to between 1::1 and 1::9.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Key 'e' sets the zoom to a value that allows all the room to be shown and moves the origin of the bottomm left of the window to 0,0
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Key '0' or 'o' keeps the zoom as is, but moves the origin of the bottom left of the window to 0,0
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Key 'c' moves the center of the window to the cursor position but leaves the zoom alone
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+As the window is Zoomed in and out, the setting of <strong>Constrain Drawing Area to Room Boundaries</strong> setting in the <strong>Display</strong> <a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a> dialog determines where the zoom is about. If it is not set, the center of the Drawing Area will stay fixed as the zoom changes. Otherwise, position of the Drawing Area will be constraned so any <strong>grey</strong> area will be to the right or above the room boundaries.
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Profile</title>
+<link rel="previous" href="cmdPan.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDescribe.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdProfile"></a>2.2.12 Profile</h1>
+<p>
+The <strong>Profile</strong> dialog draws a profile showing elevations, distances and grades for a path on the layout.
+</p>
+<p>
+<img src="png.d/dcprofile.png">
+</p>
+<p>
+Choose a path by using <em>Left-Click</em> on endpoints. As each endpoint is chosen, the path is extended via the shortest route. Selecting the end of the path trims the path back to a last <strong>Defined Elevation</strong> point (if any, otherwise the path is cleared).
+</p>
+<p>
+If no route is possible an error message is displayed. There are several reasons why this might happen:
+</p>
+<ul><li>
+The tracks are not connected. You can see this more easily if you turn on Display-&gt;Option-&gt;"Display Unconnected End Points" as Exception. You can also check this by using <em>Shift+Left-Click</em> on one track using the <strong>Select</strong> command (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>). This selects all tracks connected (directly or indirectly). See if the other track is selected.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+One of the endpoints on the route is <strong>Ignored</strong> (<a href="cmdElevation.html#cmdElevation">Section 2.2.5</a>). Look for blue dots on the expected path when using the Profile or <strong>Elevation</strong> (<a href="cmdElevation.html#cmdElevation">Section 2.2.5</a>) commands.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The only route connects to a section of track that is already on the path and is not the end of the path. Remove the end of the path until the connected track is not on the path.
+</li>
+</ul>
+<p>
+The path is drawn in the Profile Color (<a href="cmdRgbcolor.html#cmdRgbcolor">Section 2.10.1</a>) (default Purple) on the layout.
+</p>
+<p>
+If the shortest path is not what you want, you can choose endpoints that are closer to the end of the path. Also, you can <strong>Ignore</strong> (<a href="cmdElevation.html#cmdElevation">Section 2.2.5</a>) endpoints to prevent the path from choosing a route through that endpoint. Shift+Right-Click (<a href="cmdAcclKeys.html#cmdAcclKeys">Section 3.4</a>) displays a pop-up menu that allows you to change the specified endpoint to be a <strong>Defined</strong>, <strong>Ignored</strong> or <strong>None</strong> Elevation endpoint.
+</p>
+<p>
+Each <strong>Defined Elevation</strong> endpoint on the path is drawn as a Vertical bar, labeled with its height and distance from the beginning of the path.
+</p>
+<p>
+The <strong>Grade</strong> between points is displayed between the vertical bars. The <strong>Grade</strong> line is drawn in Blue if that portion of the path does not contain more than one Shortest Path between Defined Elevation endpoints. Otherwise it is drawn in Red, to indicate the grade is an average and the actual grade may vary for any particular track segment. See Computing Dynamic Elevation (<a href="computeElevations.html#computeElevations">Section 2.2.5.1</a>) for more details.
+</p>
+<p>
+<strong>Stations</strong> on the path are displayed along the bottom of the <strong>Profile</strong>.
+</p>
+<p>
+The heights of <strong>Defined Elevations</strong> can be changed by using <em>Left+Drag</em> on the profile window. As you <strong>Drag</strong>, the new elevation and grades to each side are displayed at the bottom of the profile dialog.
+</p>
+<p>
+The <strong>Change</strong> button makes the changes in the Profile dialog permanent.
+</p>
+<p>
+The <strong>Reset</strong> button deletes all changes since the last press of <strong>Change</strong> or the start of the dialog.
+</p>
+<p>
+The <strong>Clear</strong> button preserves elevation settings established along the current profile path, removes all profile points and leaves the <strong>Profile</strong> dialog open for selection of the next set of profile points. This function is useful when there's a need to view elevations along multiple profile paths.
+</p>
+<p>
+The <strong>Print</strong> button prints the dialog. The aspect ratio is preserved on the print-out. You will probably want to print in landscape format.
+</p>
+<p>
+The dialog can be closed with the 'X' button in the window's titlebar.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Properties</title>
+<link rel="previous" href="cmdProfile.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="drawDescribe.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDescribe"></a>2.2.13 Properties</h1>
+<p>
+<img src="png.d/bdescrib.png">
+</p>
+<p>
+Clicking on the <strong>Properties</strong> (Describe Mode) button cancels all active commands, closes any open dialog windows and places focus on the main window.
+</p>
+<p>
+Until an object is selected, the object under the cursor that will be selected with <em>Left-Click</em> is highlighted in blue. Objects in Frozen Layers will only be highlighted and selected if <strong>Shift</strong> is added.
+</p>
+<p>
+A <em>Left-Click</em> on an object while in <strong>Properties</strong> mode causes a properties dialog window to appear. The properties dialog contains information pertaining to the selected objects size, position, size, color and layer as appropriate for each type of object. Certain values can be changed to modify the object. Some values, e.g., endpoint positions, can not be changed if, for example, a Track is joined to another Track. The values will take effect when <strong>Enter</strong>, <strong>Tab</strong> is pressed or the cursor leaves the entry field.
+</p>
+<p>
+<img src="png.d/dproperties.png">
+</p>
+<p>
+The selected object is highlighted by a grey area.
+</p>
+<p>
+<img src="png.d/dpropertieshighlight.png">
+</p>
+<ul>
+<li><a href="drawDescribe.html#drawDescribe">2.2.13.1 Draw Object Describe Fields</a></li>
+<ul>
+<li><a href="drawDescribeCommon.html#drawDescribeCommon">2.2.13.1.1 Common Draw Object Fields</a></li>
+<li><a href="drawDescribeStr.html#drawDescribeStr">2.2.13.1.2 Straight Line Objects Describe Fields</a></li>
+<li><a href="drawDescribeDim.html#drawDescribeDim">2.2.13.1.3 Dimension Line Objects</a></li>
+<li><a href="drawDescribeBench.html#drawDescribeBench">2.2.13.1.4 BenchWork Objects Describe Fields</a></li>
+<li><a href="drawDescribeCurve.html#drawDescribeCurve">2.2.13.1.5 Curved and Circle Objects Describe Fields</a></li>
+<li><a href="drawDescribePoly.html#drawDescribePoly">2.2.13.1.6 Polygon Objects Describe Fields</a></li>
+<li><a href="drawDescribeText.html#drawDescribeText">2.2.13.1.7 Text Objects Describe Fields</a></li>
+</ul>
+<li><a href="DescribeCompound.html#DescribeCompound">2.2.13.2 Structures, Sectional Track and Turnouts Describe Fields</a></li>
+<li><a href="DescribeTrack.html#DescribeTrack">2.2.13.3 Describe Track Fields</a></li>
+<ul>
+<li><a href="trackDescribeCommon.html#trackDescribeCommon">2.2.13.3.1 Common Track Object Fields</a></li>
+<li><a href="trackDescribeStr.html#trackDescribeStr">2.2.13.3.2 Straight Track Describe Fields</a></li>
+<li><a href="trackDescribeCurve.html#trackDescribeCurve">2.2.13.3.3 Curved Track Describe Fields</a></li>
+<li><a href="trackDescribeCornu.html#trackDescribeCornu">2.2.13.3.4 Cornu Track Describe Fields</a></li>
+<li><a href="trackDescribeBezier.html#trackDescribeBezier">2.2.13.3.5 Bezier Track Describe Fields</a></li>
+</ul>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Object Describe Fields</title>
+<link rel="previous" href="cmdDescribe.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="drawDescribeCommon.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="drawDescribe"></a>2.2.13.1 Draw Object Describe Fields</h1>
+<ul>
+<li><a href="drawDescribeCommon.html#drawDescribeCommon">2.2.13.1.1 Common Draw Object Fields</a></li>
+<li><a href="drawDescribeStr.html#drawDescribeStr">2.2.13.1.2 Straight Line Objects Describe Fields</a></li>
+<li><a href="drawDescribeDim.html#drawDescribeDim">2.2.13.1.3 Dimension Line Objects</a></li>
+<li><a href="drawDescribeBench.html#drawDescribeBench">2.2.13.1.4 BenchWork Objects Describe Fields</a></li>
+<li><a href="drawDescribeCurve.html#drawDescribeCurve">2.2.13.1.5 Curved and Circle Objects Describe Fields</a></li>
+<li><a href="drawDescribePoly.html#drawDescribePoly">2.2.13.1.6 Polygon Objects Describe Fields</a></li>
+<li><a href="drawDescribeText.html#drawDescribeText">2.2.13.1.7 Text Objects Describe Fields</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Common Draw Object Fields</title>
+<link rel="previous" href="drawDescribe.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="drawDescribeStr.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="drawDescribeCommon"></a>2.2.13.1.1 Common Draw Object Fields</h1>
+<p>
+If the Object is a Line, Curve, Circle or Polygon object, and the rotation origin is non-zero, a large blue cross will show its position. If it is zero, the command starts with the <strong>Lock Origin</strong> field unticked and the <strong>Rotate By</strong> field greyed out.
+</p>
+<p>
+Some fields are used by multiple types of objects - these are listed below
+</p>
+<dl><dt>
+Line Width
+</dt>
+<dd>
+The width of the line for a line, curve or unfilled object can be set. 0 means a pixel width at all scales. Other values are the width of the line in scale units. If the value is negative, it is the absolute value of pixels wide at all scales.
+</dd>
+<dt>
+Pivot
+</dt>
+<dd>
+The Pivot control can be set to fix in place the start, or the middle or the end, and it applies to the Length, Line Angle and Angular Length controls. When these are changed the new dimensions are applied so as to keep the locked position in place.
+</dd>
+<dt>
+Rotation Origin
+</dt>
+<dd>
+By default the rotation origin is the Layout origin {0,0}. If the origin is not at the Layout origin, it will be displayed with a blue cross. When the origin is changed with the <strong>Lock</strong> off, the object is not moved. But if the origin is changed with the <strong>Lock</strong> on, the object will be moved as well. Enabling the <strong>Lock To Origin</strong> allows subsequent Rotations to be about the origin. This may be especially useful when using creating larger groups of Draw objects.
+</dd>
+<dt>
+Lock To Origin
+</dt>
+<dd>
+Locking to the rotation origin makes the distance between the First Point and the origin fixed. If this is set on, altering either the First Point or the Rotation Origin will move the both values. This value is initially set to locked if the Draw origin is non-zero when the <a href="cmdDescribe.html#cmdDescribe">Section 2.2.13</a> command is started but can be unset to allow repositioning of the Rotate Origin without moving the object in the layout. If the Rotate Origin is set to {0,0}, the Object has an <em>Absolute</em> origin.
+</dd>
+<dt>
+Rotate By
+</dt>
+<dd>
+Some Draw objects (Polygon, Polyline, Lines, Curves, Circles, Text) can be rotated about their rotation origin in Describe. In order to rotate them, the <strong>Lock To Origin</strong> must be enabled. After the rotation completes, the rotation angle will be set back to zero and all the points of the object will be adjusted to their absolute position in the layout. Negative values of rotation are counter-clockwise. Note that for Text objects, the Rotation also changes the <strong>Text Angle</strong>.
+</dd>
+<dt>
+Layer
+</dt>
+<dd>
+The layer of the object. The object can be moved between layers if the layer is not frozen. Only non-frozen layers are listed as options.
+</dd>
+<dt>
+Color
+</dt>
+<dd>
+The color of the line or the fill can be set
+</dd>
+</dl>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Straight Line Objects Describe Fields</title>
+<link rel="previous" href="drawDescribeCommon.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="drawDescribeDim.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="drawDescribeStr"></a>2.2.13.1.2 Straight Line Objects Describe Fields</h1>
+<dl><dt>
+End Pt 1
+</dt>
+<dd>
+For Straight Lines the object has a starting position (or first point) - altering this value causes the whole object to move relative to the layout origin.
+</dd>
+<dt>
+End Pt 2
+</dt>
+<dd>
+Straight Lines have a second point, altering this, moves just that end of the line, altering its length as needed.
+</dd>
+<dt>
+Line Angle
+</dt>
+<dd>
+Straight Lines have an angle - this is the angle between the two points, altering this moves the ends so as to respect the <strong>Pivot</strong> control setting.
+</dd>
+<dt>
+Length
+</dt>
+<dd>
+The Length control can add to the start or end or both of a Line object depending on the setting of the <strong>Pivot</strong> control setting.
+</dd>
+</dl>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Dimension Line Objects</title>
+<link rel="previous" href="drawDescribeStr.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="drawDescribeBench.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="drawDescribeDim"></a>2.2.13.1.3 Dimension Line Objects</h1>
+<dl><dt>
+Size
+</dt>
+<dd>
+The size of the arrows and text can be set to Tine, Small, Medium or Large.
+</dd>
+</dl>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>BenchWork Objects Describe Fields</title>
+<link rel="previous" href="drawDescribeDim.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="drawDescribeCurve.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="drawDescribeBench"></a>2.2.13.1.4 BenchWork Objects Describe Fields</h1>
+<dl><dt>
+Lumber
+</dt>
+<dd>
+A set of standard dimensions of timber sizes that are often used to construct benchwork. They are specified in "nominal" dimensions but drawn in "actual" dimensions.
+</dd>
+<dt>
+Orientation
+</dt>
+<dd>
+The timber can be orientated "On Edge" which will draw the smaller dimension or "Flat".
+</dd>
+</dl>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Curved and Circle Objects Describe Fields</title>
+<link rel="previous" href="drawDescribeBench.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="drawDescribePoly.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="drawDescribeCurve"></a>2.2.13.1.5 Curved and Circle Objects Describe Fields</h1>
+<dl><dt>
+Center
+</dt>
+<dd>
+Curved Lines and Circles have a center. Moving this moves the object.
+</dd>
+<dt>
+CW Angle and CCW Angle
+</dt>
+<dd>
+Curved Lines have an angle relative to the center that the arc starts and and one where it ends.
+</dd>
+<dt>
+Angular Length
+</dt>
+<dd>
+For Curved Lines this is the length of the arc in degrees. If altered it will move the arc to respect the <strong>Pivot</strong> control setting.
+</dd>
+</dl>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Polygon Objects Describe Fields</title>
+<link rel="previous" href="drawDescribeCurve.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="drawDescribeText.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="drawDescribePoly"></a>2.2.13.1.6 Polygon Objects Describe Fields</h1>
+<dl><dt>
+Fill
+</dt>
+<dd>
+Some draw objects (Circles, Polygons) can be filled or emptied - note that Polylines can not be filled - they have to be closed first.
+</dd>
+<dt>
+Open
+</dt>
+<dd>
+Unfilled Polygons can be opened to become Polylines or Polylines closed to become Polygons. Note that PolyLines can't be filled, they have to be closed first.
+</dd>
+<dt>
+Point Count
+</dt>
+<dd>
+Polygons and PolyLines have a count of nodes - this is read-only.
+</dd>
+<dt>
+Height and Width
+</dt>
+<dd>
+Rectangular Polygons have two properties that can alter the Height and Width of the Polygon
+</dd>
+<dt>
+Line Type
+</dt>
+<dd>
+Straight and Curved Lines, PolyLines, Polygons and Structures can be drawn with dotted, dashed, dash-dotted and dash-dot-dotted lines.
+</dd>
+</dl>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Text Objects Describe Fields</title>
+<link rel="previous" href="drawDescribePoly.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="DescribeCompound.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="drawDescribeText"></a>2.2.13.1.7 Text Objects Describe Fields</h1>
+<dl><dt>
+Text Angle
+</dt>
+<dd>
+For Text objects, the Text Angle determines the absolute angle the text is rendered at.
+</dd>
+</dl>
+<p>
+This will be set by itself or by rotation of the starting position about the Rotation Origin with <strong>Lock to Origin</strong> set.
+</p>
+<dl><dt>
+Boxed
+</dt>
+<dd>
+For Text objects, whether a line is drawn around the text.
+</dd>
+</dl>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Structures, Sectional Track and Turnouts Describe Fields</title>
+<link rel="previous" href="drawDescribeText.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="DescribeTrack.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="DescribeCompound"></a>2.2.13.2 Structures, Sectional Track and Turnouts Describe Fields</h1>
+<dl><dt>
+Pivot
+</dt>
+<dd>
+The Pivot fixes the point about which the Angle of Rotation will occur to be the Start (Bottom Left) Point, the middle of the object, or End (Top Right) of the object. These relative positions are calculated as though the object was rotated by zero degrees.
+</dd>
+<dt>
+Angle
+</dt>
+<dd>
+The Angle rotates the object about the Pivot point.
+</dd>
+</dl>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Describe Track Fields</title>
+<link rel="previous" href="DescribeCompound.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="trackDescribeCommon.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="DescribeTrack"></a>2.2.13.3 Describe Track Fields</h1>
+<ul>
+<li><a href="trackDescribeCommon.html#trackDescribeCommon">2.2.13.3.1 Common Track Object Fields</a></li>
+<li><a href="trackDescribeStr.html#trackDescribeStr">2.2.13.3.2 Straight Track Describe Fields</a></li>
+<li><a href="trackDescribeCurve.html#trackDescribeCurve">2.2.13.3.3 Curved Track Describe Fields</a></li>
+<li><a href="trackDescribeCornu.html#trackDescribeCornu">2.2.13.3.4 Cornu Track Describe Fields</a></li>
+<li><a href="trackDescribeBezier.html#trackDescribeBezier">2.2.13.3.5 Bezier Track Describe Fields</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Common Track Object Fields</title>
+<link rel="previous" href="DescribeTrack.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="trackDescribeStr.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="trackDescribeCommon"></a>2.2.13.3.1 Common Track Object Fields</h1>
+<dl><dt>
+End Pt 1
+</dt>
+<dd>
+For the starting position (or first point) - altering this value causes the whole object to move relative to the layout origin. This can only be changed if the track is unconnected at that end. The elevation is shown beneath the X,Y as a read-only Z value.
+</dd>
+<dt>
+End Pt 2
+</dt>
+<dd>
+The end position (or second point), altering this, moves just that end of the line, altering its length as needed. This can only be changed if the track is unconnected at that end. The elevation is shown beneath the X,Y as a read-only Z value.
+</dd>
+<dt>
+Grade
+</dt>
+<dd>
+The calculated grade between the two end-points
+</dd>
+<dt>
+Layer
+</dt>
+<dd>
+The layer of the object. The object can be moved between layers if the layer is not frozen. Only non-frozen layers are listed as options.
+</dd>
+<dt>
+Length
+</dt>
+<dd>
+The length of the track object. This can be set for a Straight Track if it is not connected, and will respect the value of the <strong>Pivot</strong> field.
+</dd>
+<dt>
+Pivot
+</dt>
+<dd>
+The Pivot control can be set to fix in place the start, or the middle or the end, and it applies to the Length, Track Angle and Angular Length controls. When these are changed the new dimensions are applied so as to keep the locked position in place.
+</dd>
+</dl>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Straight Track Describe Fields</title>
+<link rel="previous" href="trackDescribeCommon.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="trackDescribeCurve.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="trackDescribeStr"></a>2.2.13.3.2 Straight Track Describe Fields</h1>
+<dl><dt>
+Track Angle
+</dt>
+<dd>
+The angle of the Track object. This can be set if the track is not connected. It respects the value of the <strong>Pivot</strong> field
+</dd>
+</dl>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Curved Track Describe Fields</title>
+<link rel="previous" href="trackDescribeStr.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="trackDescribeCornu.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="trackDescribeCurve"></a>2.2.13.3.3 Curved Track Describe Fields</h1>
+<dl><dt>
+Center
+</dt>
+<dd>
+The center point of the curve. The center can only be modified if both ends are unconnected.
+</dd>
+<dt>
+Radius
+</dt>
+<dd>
+The radius of the curve. The radius can only be modified if one end is not connected.
+</dd>
+<dt>
+Angular Length
+</dt>
+<dd>
+The length of the curve in degrees. Modifications respect the <strong>Pivot</strong> value and are only available if at least one end is disconnected.
+</dd>
+<dt>
+CCW Angle
+</dt>
+<dd>
+The Counter-Clockwise Angle (the angle from the center to the first position). Can only be modified if the first end of the curve is not connected.
+</dd>
+<dt>
+CW Angle
+</dt>
+<dd>
+The ClockWise Angle (the angle from the center to the end position). Can only be modified if the second end of the curve is not connected.
+</dd>
+</dl>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cornu Track Describe Fields</title>
+<link rel="previous" href="trackDescribeCurve.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="trackDescribeBezier.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="trackDescribeCornu"></a>2.2.13.3.4 Cornu Track Describe Fields</h1>
+<dl><dt>
+End Angle
+</dt>
+<dd>
+Each end has an angle which helps determine the curve shape. It can only be set if the Track is not joined at that end.
+</dd>
+<dt>
+End Radius
+</dt>
+<dd>
+Each end has an radius which helps determine the curve shape. It can only be set if the Track is not joined at that end.
+</dd>
+<dt>
+End Pt
+</dt>
+<dd>
+Each End Point has a position. It can only be set if the Track is not joined at that end.
+</dd>
+<dt>
+Center
+</dt>
+<dd>
+Each End shows the center of the curve of the end segment - this is a read-only field. If the radius is zero, the field will show {0,0}.
+</dd>
+<dt>
+Minimum Radius
+</dt>
+<dd>
+This is the approximate smallest radius along the curve based on curve fitting to the Cornu.
+</dd>
+<dt>
+Maximum Rate of Curvature
+</dt>
+<dd>
+The maximum rate that the radius is changing over its length based on curve fitting. It gives an idea of the "sharpness" of the curve.
+</dd>
+<dt>
+Total Winding Angle
+</dt>
+<dd>
+The number of degrees that the curve executes - this number will rise if there are loops in the curve.
+</dd>
+</dl>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Bezier Track Describe Fields</title>
+<link rel="previous" href="trackDescribeCornu.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdRaiseElev.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="trackDescribeBezier"></a>2.2.13.3.5 Bezier Track Describe Fields</h1>
+<dl><dt>
+Ctl Pt
+</dt>
+<dd>
+The positions of the two Bezier control points. These will only be adjustable if the end they control is not attached to another track.
+</dd>
+<dt>
+End Angle
+</dt>
+<dd>
+Each end has an angle which is set by the control arm at that end - this is a read-only field
+</dd>
+<dt>
+End Radius
+</dt>
+<dd>
+Each end has an radius which is driven by the curve shape - this is a read-only field
+</dd>
+<dt>
+End Pt
+</dt>
+<dd>
+Each End Point has a position. It can only be set if the Track is not joined at that end.
+</dd>
+<dt>
+Center
+</dt>
+<dd>
+Each End shows the center of the curve of the end segment - this is a read-only field. If the radius is zero, the field will show {0,0}.
+</dd>
+<dt>
+Minimum Radius
+</dt>
+<dd>
+This is the approximate smallest radius along the curve based on curve fitting to the Bezier.
+</dd>
+</dl>
+<hr>
+<p>
+Most commands return to <strong>Properties</strong> mode then they terminate unless the command is sticky (<a href="cmdSticky.html#cmdSticky">Section 2.10.8</a>).
+</p>
+<p>
+Note: the Default Command radio button on the <strong>Command Options</strong> (<a href="cmdCmdopt.html#cmdCmdopt">Section 2.10.2</a>) dialog controls whether the <strong>Properties</strong> or the <strong>Select</strong> (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) command is used as the default command.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Raise or Lower Elevation</title>
+<link rel="previous" href="trackDescribeBezier.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdRotate.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdRaiseElev"></a>2.2.14 Raise or Lower Elevation</h1>
+<p>
+This command allows you to raise or lower the elevation of all selected tracks.
+</p>
+<p>
+<img src="png.d/dchgelev.png">
+</p>
+<p>
+The entered value is added to all Defined Elevations on the Selected tracks. A negative value will lower the Elevations.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Rotate</title>
+<link rel="previous" href="cmdRaiseElev.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="rotateByMouse.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdRotate"></a>2.2.15 Rotate</h1>
+<p>
+<img src="png.d/brotate.png">
+</p>
+<p>
+This command is used to rotate selected (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) objects.
+</p>
+<p>
+The <strong>Rotate</strong> command can be invoked using the <strong>Change&gt;Rotate</strong> menu item, the <strong>Rotate</strong> button, the menu raised by a <em>Right-Click</em> over the <strong>Main Canvas</strong> or by the <em>Ctrl+Right-Drag</em> command when over a selected trak in <strong>Select</strong> mode.
+</p>
+<p>
+Successful use of this command requires selection of the object(s) to be rotated before attempting to rotate it. An object is selected by using the <em>Left-Click</em> command. A group of connected objects can be selected using the <em>Shift+Left-Click</em> command, or indivdual tracks added with <em>Ctrl+Left-Click</em>.
+</p>
+<p>
+A pop-up menu with commands controlling how objects move during the <strong>Rotate</strong> function can be activated by entering a <em>Shift+Right-Click</em> command while hovering over the <strong>Main Canvas</strong>.
+</p>
+<p>
+Note that a Rotate command for a Draw object does not use the Rotation Origin of that Object, even if has been defined as non-zero, instead it uses the position defined by the mouse or context command, and does not rotate the rotation origin.
+</p>
+<p>
+<img src="png.d/mrotatemove.png">
+</p>
+<p>
+Rotation can be achieved using one of the following methods;
+</p>
+<p>
+
+</p>
+<dl><dd>
+<em>Left+Drag</em> using the mouse. See <a href="rotateByMouse.html#rotateByMouse">Section 2.2.15.1</a> for detail.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Selecting fixed or specified degrees of rotation using a <em>Right-Click</em> menu. See <a href="rotateByMenu.html#rotateByMenu">Section 2.2.15.2</a> for detail.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Aligning the selected object with another object on the layout. See <a href="rotateByAlign.html#rotateByAlign">Section 2.2.15.3</a> for detail.
+</dd>
+</dl>
+<p>
+During Rotation of a track, if <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) is enabled, if one of the end-points of the selected objects is close to an open end of a unselected point, two anchors (an open an closed blue ball) will appear. This indicates that the two points will auto-snap and the moved track will align to the unselected point if the Rotation is stopped. This does not happen if <em>Alt</em> is used. If <strong>MagneticSnap</strong> is disabled, the snap will only occur if <em>Alt</em> is held. Note that this also applies to <a href="cmdMove.html#cmdMove">Section 2.2.9</a>.
+</p>
+<hr>
+<ul>
+<li><a href="rotateByMouse.html#rotateByMouse">2.2.15.1 Using Mouse</a></li>
+<li><a href="rotateByMenu.html#rotateByMenu">2.2.15.2 Using Degree's of Rotation</a></li>
+<li><a href="rotateByAlign.html#rotateByAlign">2.2.15.3 Aligned With Another Object</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Using Mouse</title>
+<link rel="previous" href="cmdRotate.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="rotateByMenu.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="rotateByMouse"></a>2.2.15.1 Using Mouse</h1>
+<p>
+Rotate An Object Using the Mouse
+</p>
+<ol><li>
+<strong>Select</strong> the object(s) to be rotated.
+<p>
+
+</p>
+
+</li>
+<li>
+Click the <strong>Rotate</strong> button (<img src="png.d/brotate.png">) to activate the <strong>Rotate</strong> function.
+<p>
+
+</p>
+
+</li>
+<li>
+Visualize an axis point on the object that's to be rotated then place the mouse pointer over that point. If the track is a turntable, the point will be snapped to the turntable center if the mouse is within a quarter of the radius length of it.
+<p>
+
+</p>
+
+</li>
+<li>
+Click and hold the left mouse button then drag (<em>Left+Drag</em>) the mouse away from the axis point to create a "handle". This handle will be used to rotate the object. While continuing to hold the left mouse button, drag (<em>Left+Drag</em>) the handle in the desired direction of rotation. <strong>Note:</strong> If the <em>Shift+Ctrl</em> key is pressed in conjunction with <em>Left+Drag</em>, the object will rotate in increments of 15&#176;.
+<p>
+
+</p>
+
+</li>
+<li>
+Release the mouse key once desired rotation is obtained.
+</li>
+</ol>
+<p>
+
+</p>
+<ol><li>
+If <strong>Magnetic Snap</strong> is enabled and the <em>Alt</em> button is not pressed, or ifthe <em>Alt</em> button is pressed when it is disabled, a magnetic anchor will be displayed if an end of the rotated tracks is near an open end. If the anchor shows and the rotate is completed, the tracks will Snap to Alignment and Join.
+</li>
+</ol>
+<p>
+
+</p>
+<p>
+Rotation can also be achieved through use of one of these alternate methods;
+</p>
+<p>
+
+</p>
+<dl><dd>
+Selecting fixed or specified degrees of rotation using a <em>Right-Click</em> menu. See <a href="rotateByMenu.html#rotateByMenu">Section 2.2.15.2</a> for detail.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Aligning the selected object with another object on the layout. See <a href="rotateByAlign.html#rotateByAlign">Section 2.2.15.3</a> for detail.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Using Degree's of Rotation</title>
+<link rel="previous" href="rotateByMouse.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="rotateByAlign.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="rotateByMenu"></a>2.2.15.2 Using Degree's of Rotation</h1>
+<p>
+Rotate An Object Using Fixed or Specified Degree's of Rotation
+</p>
+<p>
+A pop-up menu with additional menu items allows you to <strong>Rotate</strong> the selected object(s) through various predefined angles or through any angle you specify.
+</p>
+<p>
+<img src="png.d/mrotatemove.png">
+</p>
+<p>
+The <strong>Rotate</strong> command is executed as follows;
+</p>
+<ol><li>
+<strong>Select</strong> the object(s) to be rotated.
+<p>
+
+</p>
+
+</li>
+<li>
+Click the <strong>Rotate</strong> button (<img src="png.d/brotate.png">) to activate the <strong>Rotate</strong> function.
+<p>
+
+</p>
+
+</li>
+<li>
+With the mouse pointer hovering over the point about which the object(s) are to be rotated, <em>Shift+Right-Click</em> to raise the Rotate menu then select the desired degree and direction of rotation from the list of predefined angles (180&#176;, 90&#176; CW, 45&#176; CW, 30&#176; CW, 15&#176; CW, 15&#176; CCW, 30&#176; CCW, 45&#176; CCW, 90&#176; CCW).
+<p>
+
+</p>
+
+</li>
+</ol>
+<p>
+<img src="png.d/mrotatefixed.png">
+</p>
+<p>
+
+</p>
+<hr>
+<p>
+Alternately, any angle may be entered by <em>Left-Click</em>ing the <strong>Enter Angle...</strong> menu item
+</p>
+<ol><li>
+<strong>Select</strong> the object(s) to be rotated.
+<p>
+
+</p>
+
+</li>
+<li>
+With the mouse pointer hovering over the point about which the object(s) are to be rotated, <em>Shift+Right-Click</em> to raise the Rotate menu and then select the <em>Enter Angle...</em> option.
+<p>
+
+</p>
+
+</li>
+</ol>
+<p>
+<img src="png.d/mrotatevariable.png">
+</p>
+<p>
+And then entering a desired angle in the Rotate dialog window that appears.
+</p>
+<p>
+<img src="png.d/drotateangle.png">
+</p>
+<p>
+
+</p>
+<p>
+Rotation can also be achieved through use of one of these alternate methods;
+</p>
+<p>
+
+</p>
+<dl><dd>
+<em>Left+Drag</em> using the mouse. See <a href="rotateByMouse.html#rotateByMouse">Section 2.2.15.1</a> for detail.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Aligning the selected object with another object on the layout. See <a href="rotateByAlign.html#rotateByAlign">Section 2.2.15.3</a> for detail.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Aligned With Another Object</title>
+<link rel="previous" href="rotateByMenu.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdSelect.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="rotateByAlign"></a>2.2.15.3 Aligned With Another Object</h1>
+<p>
+Rotate and Align An Object With Another Object
+</p>
+<p>
+A pop-up menu with additional menu items allows you to <strong>Align</strong> the selected object(s) with any other object on the layout. The <strong>Align</strong> command is executed as follows;
+</p>
+<ol><li>
+<strong>Select</strong> the object(s) to be rotated.
+<p>
+
+</p>
+
+</li>
+<li>
+Click the <strong>Rotate</strong> button (<img src="png.d/brotate.png">) to activate the <strong>Rotate</strong> function.
+<p>
+
+</p>
+
+</li>
+<li>
+With the mouse pointer hovering over the point about which the object(s) are to be rotated, <em>Shift+Right-Click</em> to raise the Rotate menu then select <strong>Align</strong>.
+<p>
+
+</p>
+<p>
+<img src="png.d/mrotatealign.png">
+</p>
+<p>
+
+</p>
+
+</li>
+<li>
+<em>Left-Click</em> on the (selected) object that is to be rotated.
+<p>
+
+</p>
+
+</li>
+<li>
+<em>Left-Click</em> on the object with which you want the selected object aligned. The selected object will rotate to align with the reference object.
+</li>
+</ol>
+<p>
+
+</p>
+<p>
+Rotation can also be achieved through use of one of these alternate methods;
+</p>
+<p>
+
+</p>
+<dl><dd>
+<em>Left+Drag</em> using the mouse. See <a href="rotateByMouse.html#rotateByMouse">Section 2.2.15.1</a> for detail.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Selecting fixed or specified degrees of rotation using a <em>Right-Click</em> menu. See <a href="rotateByMenu.html#rotateByMenu">Section 2.2.15.2</a> for detail.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Select</title>
+<link rel="previous" href="rotateByAlign.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdSplit.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdSelect"></a>2.2.16 Select</h1>
+<p>
+<img src="png.d/bselect.png">
+</p>
+<p>
+Clicking on the <strong>Select</strong> button cancels all active commands, closes any open dialog windows and places focus on the main window.
+</p>
+<p>
+In combination with the mouse, the <strong>Select</strong> command can be used as follows;
+</p>
+<dl><dd>
+Unselected Objects that will be added to the selected set with a <em>Left-Click</em> are highlighted in Blue as the mouse moves over them. Items that will be deselected are highlighted in Gold.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Objects that are part of a <strong>Module Layer</strong> are selected or deselected together.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Left-Click</em> - if the <strong>SelectMode</strong> in <a href="cmdCmdopt.html#cmdCmdopt">Section 2.10.2</a> is set to Single Item Mode it selects just an object near the cursor. If it is set to Add Item Mode, it will add the nearby object or remove it if is already selected. Already selected objects appear in red (unless changed in the <strong>Color</strong> (<a href="cmdRgbcolor.html#cmdRgbcolor">Section 2.10.1</a>) dialog) and a blue selection box surrounds all currently selected objects. If <strong>SelectZero</strong> is selected in <a href="cmdCmdopt.html#cmdCmdopt">Section 2.10.2</a> and an point that is not near to any object is selected, all objects are deselected.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Ctrl+Left-Click</em> - if <strong>SelectMode</strong> in <a href="cmdCmdopt.html#cmdCmdopt">Section 2.10.2</a> is set to Single Item Mode it adds an object near to the cursor to the selected objects, or removes if it is already selected. If set to Add Item Mode, it will select only the nearby object and delselect all the others. Already selected objects appear in red (unless changed in the <strong>Color</strong> (<a href="cmdRgbcolor.html#cmdRgbcolor">Section 2.10.1</a>) dialog) and a blue selection box surrounds all currently selected objects. If <strong>SelectZero</strong> is selected in <a href="cmdCmdopt.html#cmdCmdopt">Section 2.10.2</a> and an point that is not near to any objects is selected, all objects are deselected.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Shift+Left-Click</em> - selects all unselected tracks connected to a track you select. Selection stops at already selected tracks. Caution: This can select all tracks on the layout.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Left+Drag</em> - highlights an area, and all the objects within the area are selected, if <strong>SelectMode</strong> is in <a href="cmdCmdopt.html#cmdCmdopt">Section 2.10.2</a> is set to "Add", already selected objects outside the area remain selected, otherwise "Only", they are deselected.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Right-Drag</em> - highlights an area, and all the objects within the area are unselected regardless of <strong>SelectMode</strong>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Right-Click</em> and <em>Shift-Right-Click</em> - either display a pop-up menu of commands or a set of context commands for the item under the cursor depending on the setting of "Right-Click" in <a href="cmdCmdopt.html#cmdCmdopt">Section 2.10.2</a>.
+<p>
+
+</p>
+<p>
+<img src="png.d/mselectcmd.png"> or <img src="png.d/mselectcontext.png">
+</p>
+<p>
+
+</p>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Double-Click</em> - invokes <a href="cmdModify.html#cmdModify">Section 2.2.8</a> on the object after selecting it for eligible objects. Otherwise it acts as <em>Left-Click</em>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>"?"</em> - displays the Property menu for the object hovered over
+</dd>
+</dl>
+<p>
+
+</p>
+<ul><li>
+<em>"e"</em> sets the zoom to a value that allows all the room to be shown and moves the origin of bottom left of the window to be 0,0
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+<em>"s"</em> sets the zoom to show the selected set of objects and pans the window to center the highlit area.
+</li>
+</ul>
+<p>
+
+</p>
+<dl><dd>
+<em>"c"</em> - moves the center of the window (i.e., Pans) to be at the cursor position
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Hovering over a selected object (inside the blue highlight area) displays an anchor. The Anchor shows the actions available -
+<ul><li>
+If the <em>Shift</em> key is depressed, a "cross-arrows" anchor shows that a <a href="cmdMove.html#cmdMove">Section 2.2.9</a> will occur with <em>Left-Click</em>.
+</li>
+<li>
+If the <em>Ctrl</em> key is depresesed, a "rotation-circle" anchor shows that a <a href="cmdRotate.html#cmdRotate">Section 2.2.15</a> will occur with <em>Left-Click</em>.
+</li>
+<li>
+With neither depressed a "target" anchor shows that a <em>Double-Click</em> will invoke <a href="cmdModify.html#cmdModify">Section 2.2.8</a> within Select for the object hovered over.
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Shift+Ctrl</em> plus the <em>Arrow Keys</em> will move the selected items a pixel at a time at the current zoom level. No autosnap will occur to permit fine tuning.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Shift+Right-Click</em> or <em>Right-Click</em> (depending on the setting of <strong>Right-Click</strong> in <a href="cmdCmdopt.html#cmdCmdopt">Section 2.10.2</a>) - Shows context menu items that allow you to perform actions on the selected item(s) including rotating them by various angles and moving them fixed amounts.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Shift+Left-Click+Drag</em> - on a selected object moves the selected objects (the Move (<a href="cmdMove.html#cmdMove">Section 2.2.9</a>) command).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Ctrl+Left-Click+Drag</em> - on a selected object rotates the selected objects (the <strong>Rotate</strong> (<a href="cmdRotate.html#cmdRotate">Section 2.2.15</a>) command).
+<ul><li>
+If the <em>Shift</em> key is pressed while dragging in rotation then rotation will occur in 15&#176; increments.
+</li>
+<li>
+If the selected items(s) are moved or rotated using the cursor, and an open end of unselected tracks is close to an end of the selected tracks that will be open after the move, a pair ot anchors shows that an autosnap with alignment will occur. Upon release of the button, all the selected tracks will be moved and aligned and the tracks joined.
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Double-Click</em> - on a eligible object such as a Link Object will Activate it, and on a Modifyable object will go into Modify Mode (<a href="cmdModify.html#cmdModify">Section 2.2.8</a>) within Select.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Right-Click</em> and <em>Shift-Right-Click</em> - either display a pop-up menu of commands or a set of context commands for the items selected depending on the setting of "Right-Click" in <a href="cmdCmdopt.html#cmdCmdopt">Section 2.10.2</a>. The options effects depend on the type of object(s) selected and hovered over.
+<p>
+
+</p>
+<p>
+<img src="png.d/mselectcmd.png"> or <img src="png.d/mselectedcontext.png">
+</p>
+<p>
+
+</p>
+
+</dd>
+</dl>
+<p>
+Once Objects are
+</p>
+<p>
+Once objects are selected, the following commands operate on them:
+</p>
+<ul><li>
+<strong>Move</strong> (<a href="cmdMove.html#cmdMove">Section 2.2.9</a>) the selected objects.
+</li>
+<li>
+<strong>Rotate</strong> (<a href="cmdRotate.html#cmdRotate">Section 2.2.15</a>) the selected objects.
+</li>
+<li>
+<strong>Flip</strong> (<a href="cmdFlip.html#cmdFlip">Section 2.2.6</a>) (mirrors) the selected objects.
+</li>
+<li>
+<strong>Delete</strong> (<a href="cmdDelete.html#cmdDelete">Section 2.4.4</a>) selected objects.
+</li>
+<li>
+<strong>Hide</strong> (or unhide) in a Tunnel (<a href="cmdTunnel.html#cmdTunnel">Section 2.4.5</a>).
+</li>
+<li>
+<strong>Move</strong> Above or Below (<a href="cmdAboveBelow.html#cmdAboveBelow">Section 2.4.2</a>).
+</li>
+<li>
+<strong>Parts List</strong> (<a href="cmdEnum.html#cmdEnum">Section 2.9.6</a>) of the selected objects.
+</li>
+<li>
+<strong>Change</strong> the width of the tracks' rails.
+</li>
+<li>
+<strong>Export</strong> (<a href="cmdExport.html#cmdExport">Section 2.5.1</a>) the selected objects.
+</li>
+<li>
+<strong>Group</strong> Creates a structure or turnout definition (<a href="cmdGroup.html#cmdGroup">Section 2.9.4</a>) from the objects.
+</li>
+<li>
+<strong>Rescale</strong> (<a href="cmdRescale.html#cmdRescale">Section 2.2.1</a>) the selected objects.
+</li>
+</ul>
+<p>
+The <strong>Cut</strong>, <strong>Copy</strong>, <strong>Clone</strong> and <strong>Paste</strong> commands found on the <strong>Edit</strong> (<a href="editM.html#editM">Section 2.4</a>) menu will also operate on selected objects.
+</p>
+<p>
+Notes:
+</p>
+<ul><li>
+Connections between selected and unselected tracks will be broken when selected tracks are moved. If the Drawing Scale is 8:1 or smaller, these about-to-be broken connections are marked with a red X.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+During Move or Rotate operations, if an track end that will be disconnected during the operation comes close to a disconnected end of track that isn't selected, a pair of blue circles (one empty and one filled) will turn on. This shows that if the drag is stopped, those two points will be joined and the other selected tracks aligned. This represents a faster alternative to the <a href="joinTrackMove.html#joinTrackMove">Section 2.2.7.7</a> command.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The <strong>Select All</strong> item on the Edit (<a href="editM.html#editM">Section 2.4</a>) menu can be used to select all objects on the layout.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The Default Command radio button on the Command Options (<a href="cmdCmdopt.html#cmdCmdopt">Section 2.10.2</a>) dialog controls whether the <em>Properties</em> (<a href="cmdDescribe.html#cmdDescribe">Section 2.2.13</a>) or <em>Select</em> command is used as the default command.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Pressing the <em>Escape</em> key will deselect all selected tracks. Alternatively left-clicking on an empty area will also work.
+</li>
+</ul>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Split Commands</title>
+<link rel="previous" href="cmdSelect.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdSplitTrack.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdSplit"></a>2.2.17 Split Commands</h1>
+<p>
+There are two split commands, <a href="cmdSplitTrack.html#cmdSplitTrack">Section 2.2.17.1</a> and <a href="cmdSplitDraw.html#cmdSplitDraw">Section 2.2.17.3</a>.
+</p>
+<ul>
+<li><a href="cmdSplitTrack.html#cmdSplitTrack">2.2.17.1 Split Track</a></li>
+<li><a href="splitDisconnect.html#splitDisconnect">2.2.17.2 Disconnect Joint</a></li>
+<ul>
+<li><a href="splitDivide.html#splitDivide">2.2.17.2.1 Divide Track</a></li>
+<li><a href="splitBlockGap.html#splitBlockGap">2.2.17.2.2 Adding Block Gaps</a></li>
+</ul>
+<li><a href="cmdSplitDraw.html#cmdSplitDraw">2.2.17.3 Split a Draw Object</a></li>
+<li><a href="cmdTrimDraw.html#cmdTrimDraw">2.2.17.4 Trim a Draw Object using another Draw object</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Split Track</title>
+<link rel="previous" href="cmdSplit.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="splitDisconnect.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdSplitTrack"></a>2.2.17.1 Split Track</h1>
+<p>
+<img src="png.d/bsplit.png">
+</p>
+<p>
+The <strong>Split Track</strong> command provides several functions. It can be used to disconnect the joint between two sections of connected track, to divide a section of track into two pieces at a selected point or to place block gaps at an existing joint.
+</p>
+<p>
+Until a split point is selected, the split point under the cursor will have a blue marker and if it is near a connected end a blue "X" will indicate that a split will occur.
+</p>
+<p>
+For detail about;
+</p>
+<p>
+
+</p>
+<dl><dd>
+Disconnecting the joint between two sections of track see <a href="splitDisconnect.html#splitDisconnect">Section 2.2.17.2</a>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Dividing a section of flex-track into two connected pieces or trimming a turnout see <a href="splitDivide.html#splitDivide">Section 2.2.17.2.1</a>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Creating block gaps at an existing joint see <a href="splitBlockGap.html#splitBlockGap">Section 2.2.17.2.2</a>.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Disconnect Joint</title>
+<link rel="previous" href="cmdSplitTrack.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="splitDivide.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="splitDisconnect"></a>2.2.17.2 Disconnect Joint</h1>
+<p>
+Disconnecting a joint between two pieces of connected track;
+</p>
+<ol><li>
+Click the <strong>Split</strong> button (<img src="png.d/bsplit.png">) to activate the <strong>Split</strong> command.
+</li>
+<li>
+Place the mouse pointer right over the joint between the two track endpoints (so the "X" is shown) then <em>Left-Click</em>.
+</li>
+<li>
+A blue marker will show where a split will occur, but if the cursor is a near connected joint, it will show a blue "X".
+<p>
+
+</p>
+
+</li>
+</ol>
+<dl><dd>
+When the <strong>Split</strong> command completes, the joint at the two track endpoints will show three lines rather than one. The three lines represent abutted, disconnected track endpoints.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/splitConnect.png">
+</dd>
+<dd>
+<em>Joint prior to split</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/splitDisconnect.png">
+</dd>
+<dd>
+<em>Joint following split</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<p>
+For detail about;
+</p>
+<p>
+
+</p>
+<dl><dd>
+Dividing a section of track into two connected pieces see <a href="splitDivide.html#splitDivide">Section 2.2.17.2.1</a>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Creating block gaps at an existing joint see <a href="splitBlockGap.html#splitBlockGap">Section 2.2.17.2.2</a>.
+</dd>
+</dl>
+<hr>
+<ul>
+<li><a href="splitDivide.html#splitDivide">2.2.17.2.1 Divide Track</a></li>
+<li><a href="splitBlockGap.html#splitBlockGap">2.2.17.2.2 Adding Block Gaps</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Divide Track</title>
+<link rel="previous" href="splitDisconnect.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="splitBlockGap.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="splitDivide"></a>2.2.17.2.1 Divide Track</h1>
+<p>
+Dividing a section of flex-track into two connected pieces;
+</p>
+<ol><li>
+Click the <strong>Split Track</strong> button (<img src="png.d/bsplit.png">) to activate the <strong>Split Track</strong> command.
+</li>
+<li>
+Place the mouse pointer over the point on the track where the it should be divided. A blue anchor bar across the track under the cursor will indicate the current split point. Then <em>Left-Click</em>.
+</li>
+<li>
+To divide a Turnout, <em>Shift</em> must be held. The result will be a shorter Turnout with plain track replacing the rest of it. Note that the program will not stop division of the turnout between the switch blades and the frog - which would not be desireable in the real world.
+<p>
+
+</p>
+
+</li>
+</ol>
+<dl><dd>
+When the <strong>Split Track</strong> command completes, a connected joint will appear in the track at the point of selection. To split and disconnect at a point, execute the <strong>Split</strong> track command twice. The first command will split the track, the second command will disconnect it.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/splitNotYet.png">
+</dd>
+<dd>
+<em>Track prior to split</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/splitConnect.png">
+</dd>
+<dd>
+<em>Track following split</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<p>
+It's not possible to create a track shorter than the <em>Minimum Track Length</em> (<a href="cmdPref.html#cmdPref">Section 2.10.7</a>).
+</p>
+<p>
+This command is useful for placing tunnel portals or elevation points (<a href="cmdElevation.html#cmdElevation">Section 2.2.5</a>) at specific track locations.
+</p>
+<p>
+Normally a turnout cannot be split however, if the <em>Shift</em> key is held when executing this command then the turnout can be <em>trim</em>med. <em>Trim</em>ming replaces the portion of track between the split point and the turnouts endpoint with flex-track. For turnouts with more than one set of points (<a href="generalTerms.html#generalTerms">Section B.2</a>), such as a slip switch or scissors crossover, a <em>trim</em> point cannot be selected between the <em>points</em> of the turnout.
+</p>
+<p>
+For detail about;
+</p>
+<p>
+
+</p>
+<dl><dd>
+Disconnecting the joint between two sections of track see <a href="splitDisconnect.html#splitDisconnect">Section 2.2.17.2</a>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Creating block gaps at an existing joint see <a href="splitBlockGap.html#splitBlockGap">Section 2.2.17.2.2</a>.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Adding Block Gaps</title>
+<link rel="previous" href="splitDivide.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdSplitDraw.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="splitBlockGap"></a>2.2.17.2.2 Adding <a name="i0"></a>Block Gaps</h1>
+<p>
+The <strong>Split</strong> command can be used to add block gaps (<a href="generalTerms.html#generalTerms">Section B.2</a>) at the point where two track endpoints join. Block gaps are drawn as a thick line and can be placed in either of the rails or both if total isolation is required.
+</p>
+<dl><dd>
+<img src="png.d/blockNone.png">
+</dd>
+<dd>
+<em>No Block Gaps</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/blockTop.png">
+</dd>
+<dd>
+<em>Block Gap in top rail</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/blockBottom.png">
+</dd>
+<dd>
+<em>Block Gap in bottom rail</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/blockBoth.png">
+</dd>
+<dd>
+<em>Block Gaps in both rails</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<p>
+After starting the <strong>Split</strong> command use the <em>Shift+Right-Click</em> over a joint (with the blue "X" anchor showing) to display one of two pop-up menus which can be used to add, change or remove <em>block gaps</em> for the selected endpoint.
+</p>
+<dl><dd>
+<img src="png.d/msplitblock.png">
+</dd>
+<dd>
+<em>This menu appears if track runs in a horizontal direction.</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/msplitblockLR.png">
+</dd>
+<dd>
+<em>This menu appears if track runs in a vertical direction.</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<p>
+For detail about;
+</p>
+<p>
+
+</p>
+<dl><dd>
+Disconnecting the joint between two sections of track see <a href="splitDisconnect.html#splitDisconnect">Section 2.2.17.2</a>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Dividing a section of track into two connected pieces see <a href="splitDivide.html#splitDivide">Section 2.2.17.2.1</a>.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Split a Draw Object</title>
+<link rel="previous" href="splitBlockGap.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdTrimDraw.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdSplitDraw"></a>2.2.17.3 Split a Draw Object</h1>
+<p>
+The <strong>Split Draw</strong> command can be used to split many draw object (Straight Lines, Curved Lines, Circles, Polygons, PolyLines).
+</p>
+<p>
+Until a split point is selected, the split point under the cursor will have a blue marker.
+</p>
+<ol><li>
+If the object being split is a Polyline, the split will either result in a Straight Line and a PolyLine or two PolyLines depending on where the split is along the line. (PolyLines must always have at least 2 segments).
+</li>
+<li>
+Filled Circles and Polygons will be unfilled after the split.
+</li>
+<li>
+If the split object is a Circle, the result is an circular arc split at the point with a small (5 degree) gap.
+</li>
+<li>
+If the split object is a Polygon, a PolyLine with two end points at the split results.
+</li>
+</ol>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Trim a Draw Object using another Draw object</title>
+<link rel="previous" href="cmdSplitDraw.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDraw.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdTrimDraw"></a>2.2.17.4 Trim a Draw Object using another Draw object</h1>
+<p>
+The <strong>Trim Draw</strong> command can be used to trim many draw objects (Straight Lines, Curved Lines, Circles, Polygons, PolyLines). Polygons and Circles are split into PolyLines and Curves.
+</p>
+<ol><li>
+First a Trimming object (draw object) is selected with <strong>Left-Click</strong>. Until the trim draw object is selected, a draw object under the cursor will be highlit in blue. Once it is selected it will be highlit in the current Select Color.
+</li>
+<li>
+Next the point of intersection between the trim object and an object to be trimmed is selected. Until a split point is selected, a suitable split point under the cursor will have a blue trim anchor that is a T shape aligned with the trimming object.
+</li>
+</ol>
+<p>
+The trim anchor base has an arm that indicates which side of the trimmed object will be deleted. A <strong>Left-Click</strong> will trim the object.
+</p>
+<p>
+
+</p>
+<p>
+If the trimmed object is a circle or a polygon, the result will be the same as a Split (<a href="cmdSplitDraw.html#cmdSplitDraw">Section 2.2.17.3</a>), a 355 degree circle and an open polyline with ends at the split will result.
+</p>
+<p>
+Once a trim has occured, the trimming object remains selected for another trim.
+</p>
+<p>
+To leave the command use the spacebar. If <em>Sticky</em> (<a href="cmdSticky.html#cmdSticky">Section 2.10.8</a>) is set for Split commands you will be able to select another trim object.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Menu</title>
+<link rel="previous" href="cmdTrimDraw.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawCircles.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDraw"></a>2.3 <a name="i0"></a>Draw Menu</h1>
+<p>
+<em>Draw</em> commands are used to draw lines, arcs and other shapes. These can be used to represent water edges, bridges and other scenic features.
+</p>
+<p>
+<img src="png.d/bdraw.png">
+</p>
+<p>
+There are 4 command buttons on the tool-bar used to draw Straight Objects, Curved Lines, Circles and other Shapes. Each command button is followed by a button that changes the action (and Icon) on the command button.
+</p>
+<p>
+<img src="png.d/mdraw.png">
+</p>
+<p>
+Functions for drawing basic shapes and objects like lines and curves can be accessed from this menu.
+</p>
+<dl><dd>
+<strong>Circle Lines</strong> - draw empty or filled circles. (<a href="cmdDrawCircles.html#cmdDrawCircles">Section 2.3.1</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Curved Lines</strong> - are created in the same manner as curved tracks. (<a href="cmdDrawCurves.html#cmdDrawCurves">Section 2.3.2</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Note</strong> - attach a note icon to a specific location on the layout. (<a href="cmdNote.html#cmdNote">Section 2.3.3</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Ruler</strong> - create ruler and set visibility (<a href="cmdRuler.html#cmdRuler">Section 2.3.4</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Protractor</strong> - create protractor and set visibility (<a href="cmdAngle.html#cmdAngle">Section 2.3.5</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Shapes</strong> - draw boxes, polygons and poly-lines. (<a href="cmdDrawShapes.html#cmdDrawShapes">Section 2.3.6</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Straight Objects</strong> - draw straight objects. (<a href="cmdDrawStraight.html#cmdDrawStraight">Section 3.3.3.5</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Text</strong> - allows entry of text directly onto the layout. (<a href="cmdText.html#cmdText">Section 2.3.9</a>)
+</dd>
+</dl>
+<p>
+Some commands display controls on the Status Line (<a href="mainW.html#mainW">Section 3.1</a>) to change line width, color or other attributes of the object.
+</p>
+<hr>
+<ul>
+<li><a href="cmdDrawCircles.html#cmdDrawCircles">2.3.1 Circles and Filled Circles</a></li>
+<ul>
+<li><a href="cmdDrawCircleTangent.html#cmdDrawCircleTangent">2.3.1.1 Draw Circle from Tangent</a></li>
+<li><a href="cmdDrawCircleCenter.html#cmdDrawCircleCenter">2.3.1.2 Draw Circle from Center</a></li>
+<li><a href="cmdDrawFilledCircleTangent.html#cmdDrawFilledCircleTangent">2.3.1.3 Draw Filled Circle from Tangent</a></li>
+<li><a href="cmdDrawFilledCircleCenter.html#cmdDrawFilledCircleCenter">2.3.1.4 Draw Filled Circle from Center</a></li>
+</ul>
+<li><a href="cmdDrawCurves.html#cmdDrawCurves">2.3.2 Curved Lines</a></li>
+<ul>
+<li><a href="cmdDrawCurveEndPt.html#cmdDrawCurveEndPt">2.3.2.1 Draw Curve from End Point</a></li>
+<li><a href="cmdDrawCurveTangent.html#cmdDrawCurveTangent">2.3.2.2 Draw Curve from Tangent</a></li>
+<li><a href="cmdDrawCurveCenter.html#cmdDrawCurveCenter">2.3.2.3 Draw Curve from Center</a></li>
+<li><a href="cmdDrawCurveChord.html#cmdDrawCurveChord">2.3.2.4 Draw Curve from Chord</a></li>
+<li><a href="cmdDrawBezierCurve.html#cmdDrawBezierCurve">2.3.2.5 Draw Bezier Curve</a></li>
+</ul>
+<li><a href="cmdNote.html#cmdNote">2.3.3 Note Variants</a></li>
+<ul>
+<li><a href="cmdTextNote.html#cmdTextNote">2.3.3.1 Text Note</a></li>
+<li><a href="cmdLinkNote.html#cmdLinkNote">2.3.3.2 Weblink</a></li>
+<li><a href="cmdFileNote.html#cmdFileNote">2.3.3.3 Document</a></li>
+</ul>
+<li><a href="cmdRuler.html#cmdRuler">2.3.4 Ruler</a></li>
+<li><a href="cmdAngle.html#cmdAngle">2.3.5 Protractor</a></li>
+<li><a href="cmdDrawShapes.html#cmdDrawShapes">2.3.6 Draw Shapes</a></li>
+<ul>
+<li><a href="cmdDrawBox.html#cmdDrawBox">2.3.6.1 Draw Box</a></li>
+<li><a href="cmdDrawFilledBox.html#cmdDrawFilledBox">2.3.6.2 Draw Filled Box</a></li>
+<li><a href="cmdDrawPolygon.html#cmdDrawPolygon">2.3.6.3 Draw Polygon</a></li>
+<li><a href="cmdDrawFilledPolygon.html#cmdDrawFilledPolygon">2.3.6.4 Draw Filled Polygon</a></li>
+<li><a href="cmdDrawPolyline.html#cmdDrawPolyline">2.3.6.5 Draw PolyLine</a></li>
+</ul>
+<li><a href="cmdDrawStraights.html#cmdDrawStraights">2.3.7 Straight Objects</a></li>
+<ul>
+<li><a href="cmdDrawLine.html#cmdDrawLine">2.3.7.1 Draw Straight Line</a></li>
+<li><a href="cmdDrawDimLine.html#cmdDrawDimLine">2.3.7.2 Draw Dimension Line</a></li>
+<li><a href="cmdDrawBench.html#cmdDrawBench">2.3.7.3 Draw Benchwork</a></li>
+<li><a href="cmdDrawTableEdge.html#cmdDrawTableEdge">2.3.7.4 Draw Table Edge</a></li>
+</ul>
+<li><a href="DrawOrigin.html#DrawOrigin">2.3.8 Draw Objects Origin</a></li>
+<li><a href="cmdText.html#cmdText">2.3.9 Text</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Circles and Filled Circles</title>
+<link rel="previous" href="cmdDraw.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawCircleTangent.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawCircles"></a>2.3.1 <a name="i0"></a>Circles and Filled Circles</h1>
+<p>
+<img src="png.d/mdrawcircles.png">
+</p>
+<p>
+Before a Circle is drawn its line width and color can be set. For Filled Circles, the color can be set. The <strong>Circle Line Width</strong> field is a scaled dimension in inches if &gt;0. If 0 it is a 1 pixel wide line at all zooms. If the value is negative, it is a scale-independent number of pixels wide.
+</p>
+<p>
+<strong>Circles</strong> and <strong>Filled Circles</strong> are created by selecting either the center position or a point on the edge of the circle and dragging to specify the radius.
+</p>
+<dl><dd>
+<a href="cmdDrawCircleTangent.html#cmdDrawCircleTangent">Section 2.3.1.1</a>. Draw a Circle from the Edge.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a href="cmdDrawCircleCenter.html#cmdDrawCircleCenter">Section 2.3.1.2</a>. Draw a Circle from the Center.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a href="cmdDrawFilledCircleTangent.html#cmdDrawFilledCircleTangent">Section 2.3.1.3</a>. Draw a Filled Circle from the Edge.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a href="cmdDrawFilledCircleCenter.html#cmdDrawFilledCircleCenter">Section 2.3.1.4</a>. Draw a Filled Circle from the Center.
+</dd>
+</dl>
+<hr>
+<ul>
+<li><a href="cmdDrawCircleTangent.html#cmdDrawCircleTangent">2.3.1.1 Draw Circle from Tangent</a></li>
+<li><a href="cmdDrawCircleCenter.html#cmdDrawCircleCenter">2.3.1.2 Draw Circle from Center</a></li>
+<li><a href="cmdDrawFilledCircleTangent.html#cmdDrawFilledCircleTangent">2.3.1.3 Draw Filled Circle from Tangent</a></li>
+<li><a href="cmdDrawFilledCircleCenter.html#cmdDrawFilledCircleCenter">2.3.1.4 Draw Filled Circle from Center</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Circle from Tangent</title>
+<link rel="previous" href="cmdDrawCircles.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawCircleCenter.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawCircleTangent"></a>2.3.1.1 <a name="i0"></a>Draw Circle from Tangent</h1>
+<p>
+<img src="png.d/dcircle3.png">
+</p>
+<p>
+<code>Left-Drag</code> a point from the edge of the circle to the center to specify the radius.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Circle from Center</title>
+<link rel="previous" href="cmdDrawCircleTangent.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawFilledCircleTangent.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawCircleCenter"></a>2.3.1.2 <a name="i0"></a>Draw Circle from Center</h1>
+<p>
+<img src="png.d/dcircle2.png">
+</p>
+<p>
+<code>Left-Drag</code> from the center of the circle to the edge to specify the radius.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Filled Circle from Tangent</title>
+<link rel="previous" href="cmdDrawCircleCenter.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawFilledCircleCenter.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawFilledCircleTangent"></a>2.3.1.3 <a name="i0"></a>Draw Filled Circle from Tangent</h1>
+<p>
+<img src="png.d/dflcrcl3.png">
+</p>
+<p>
+<code>Left-Drag</code> from the edge of the circle to the center to specify the radius.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Filled Circle from Center</title>
+<link rel="previous" href="cmdDrawFilledCircleTangent.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawCurves.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawFilledCircleCenter"></a>2.3.1.4 <a name="i0"></a>Draw Filled Circle from Center</h1>
+<p>
+<img src="png.d/dflcrcl2.png">
+</p>
+<p>
+<code>Left-Drag</code> a point from the center to the edge of the circle to specify the radius.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Curved Lines</title>
+<link rel="previous" href="cmdDrawFilledCircleCenter.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawCurveEndPt.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawCurves"></a>2.3.2 <a name="i0"></a>Curved Lines</h1>
+<p>
+<img src="png.d/mdrawcurve.png">
+</p>
+<p>
+Before a Curved Line is created, its width and color can be set. The <strong>Curved Line Width</strong> or <strong>Bezier Line Width</strong> field is a scaled dimension in inches if &gt;0. If 0 it is a 1 pixel wide line at all zooms. If the value is negative, it is a scale-independent number of pixels wide.
+</p>
+<p>
+<strong>Curved Lines</strong> are created in the same manner as curved tracks.
+</p>
+<dl><dd>
+(<a href="cmdDrawCurveEndPt.html#cmdDrawCurveEndPt">Section 2.3.2.1</a>). Drag out the end point and then curve it.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+(<a href="cmdDrawCurveCenter.html#cmdDrawCurveCenter">Section 2.3.2.3</a>). Select the center and then an endpoint and drag out the curve.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+(<a href="cmdDrawCurveTangent.html#cmdDrawCurveTangent">Section 2.3.2.2</a>). Select the end and drag out the center.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+(<a href="cmdDrawCurveChord.html#cmdDrawCurveChord">Section 2.3.2.4</a>). Drag from one end of the curve to the other to form the chord of the curve.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+(<a href="cmdDrawBezierCurve.html#cmdDrawBezierCurve">Section 2.3.2.5</a> <img src="png.d/dbezier.png"> <em>Left-Drag</em> out control point from one end of the curve and then <em>Left-Drag</em> out the second control point from the other end.
+</dd>
+</dl>
+<p>
+If <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) is enabled, the curve ends will snap to the nearest part of nearby Draw objects unless <em>Alt</em> is held. If Magnetic Snap is disabled, snapping to objects will only occur if <em>Alt</em> is held.
+</p>
+<p>
+If <strong>Grid Snap</strong> is on and magnetic snap does not find a draw object, the curve ends will snap to the grid. <em>Alt</em> suppresses this snap.
+</p>
+<p>
+If <em>Sticky</em> is set for curved line objects, after the curve is drawn there will be two text fields on the bottom rail, to allow fine-tuning of the radius and the arc angle. Pressing <code>Enter</code> or <code>Tab</code> with the cursor in these boxes will apply the new values to the curve. Pressing <code>Space</code> or <code>Enter</code> or <code>Tab</code> on the drawing surface will move to drawing a new curve. Pressing <code>Shift+Tab</code> with the cursor on the drawing surface will remove the current curve, but allow a new curve to be drawn. Even if <code>Esc</code> is pressed, the curve will already exist, it can be removed with <strong>Undo</strong>.
+</p>
+<p>
+To adjust the curve with the mouse, <em>Left-Click</em> and <em>Left-Drag</em> an end or a the radius. Hit <em>Enter</em> or <em>Space</em> to accept, <em>Esc</em> to reject.
+</p>
+<hr>
+<ul>
+<li><a href="cmdDrawCurveEndPt.html#cmdDrawCurveEndPt">2.3.2.1 Draw Curve from End Point</a></li>
+<li><a href="cmdDrawCurveTangent.html#cmdDrawCurveTangent">2.3.2.2 Draw Curve from Tangent</a></li>
+<li><a href="cmdDrawCurveCenter.html#cmdDrawCurveCenter">2.3.2.3 Draw Curve from Center</a></li>
+<li><a href="cmdDrawCurveChord.html#cmdDrawCurveChord">2.3.2.4 Draw Curve from Chord</a></li>
+<li><a href="cmdDrawBezierCurve.html#cmdDrawBezierCurve">2.3.2.5 Draw Bezier Curve</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Curve from End Point</title>
+<link rel="previous" href="cmdDrawCurves.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawCurveTangent.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawCurveEndPt"></a>2.3.2.1 <a name="i0"></a>Draw Curve from End Point</h1>
+<p>
+<img src="png.d/dcurve1.png">
+</p>
+<p>
+<code>Left-drag</code> from the start of the curve and drag in the direction of the curve. Then <code>left-drag</code> to form the curve.
+</p>
+<p>
+If the cursor is over a Draw object and <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) is on, the first position will snap to the nearest part of that object. If <em>Alt</em> is held the snap will be suppressed. If <strong>MagneticSnap</strong> is disabled, the snap will happen if <em>Alt</em> is held. If <strong>GridSnap</strong> is enabled and MagneticSnap does not find a postion, the first position will snap to the Grid. This is suppressed if <strong>Alt</strong> is held. The second end will act similarly.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Curve from Tangent</title>
+<link rel="previous" href="cmdDrawCurveEndPt.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawCurveCenter.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawCurveTangent"></a>2.3.2.2 <a name="i0"></a>Draw Curve from Tangent</h1>
+<p>
+<img src="png.d/dcurve2.png">
+</p>
+<p>
+Select one end of the curve and <code>left-drag</code> to the center. Then <code>left-drag</code> the curve around the center.
+</p>
+<p>
+The first and second ends will act like <a href="cmdDrawCurveEndPt.html#cmdDrawCurveEndPt">Section 2.3.2.1</a> with <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) unless <em>Alt</em> is held. If <strong>GridSnap</strong> is enabled and MagneticSnap does not find a postion, the first position will snap to the Grid. This is suppressed if <strong>Alt</strong> is held.
+</p>
+<p>
+To complete the command, drag on the red arrows to adjust the curve from the initial end.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Curve from Center</title>
+<link rel="previous" href="cmdDrawCurveTangent.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawCurveChord.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawCurveCenter"></a>2.3.2.3 <a name="i0"></a>Draw Curve from Center</h1>
+<p>
+<img src="png.d/dcurve3.png">
+</p>
+<p>
+Select the center of the curve and <code>left-drag</code> to one end. If <strong>GridSnap</strong> is enabled, the first position will snap to the Grid. This is suppressed if <strong>Alt</strong> is held.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Curve from Chord</title>
+<link rel="previous" href="cmdDrawCurveCenter.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawBezierCurve.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawCurveChord"></a>2.3.2.4 <a name="i0"></a>Draw Curve from Chord</h1>
+<p>
+<img src="png.d/dcurve4.png">
+</p>
+<p>
+<code>Left-drag</code> from one end of the curve to the other to form the chord of the curve.
+</p>
+<p>
+The first and second ends will act like <a href="cmdDrawCurveEndPt.html#cmdDrawCurveEndPt">Section 2.3.2.1</a> with <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) and <strong>SnapGrid</strong> unless <em>Alt</em> is held.
+</p>
+<p>
+If the mouse is over a draw object the second position will snap to the nearst part of that object. If <em>Shift</em> is held the snap will be suppressed.
+</p>
+<p>
+To complete the command, drag on the red arrows to adjust the curve.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Bezier Curve</title>
+<link rel="previous" href="cmdDrawCurveChord.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdNote.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawBezierCurve"></a>2.3.2.5 <a name="i0"></a>Draw Bezier Curve</h1>
+<p>
+<img src="png.d/dbezier.png">
+</p>
+<p>
+<em>Left-Drag</em> out control point from one end of the curve and then <em>Left-Drag</em> out the second control point from the other end. Repeat for the other end and control point.
+</p>
+<p>
+The first and second ends will act like <a href="cmdDrawCurveEndPt.html#cmdDrawCurveEndPt">Section 2.3.2.1</a> with <strong>MagneticSnap</strong> and <strong>SnapGrid</strong> unless <em>Alt</em> is held.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Note Variants</title>
+<link rel="previous" href="cmdDrawBezierCurve.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdTextNote.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdNote"></a>2.3.3 <a name="i0"></a>Note Variants</h1>
+<p>
+<img src="png.d/mnote.png">
+</p>
+<p>
+The <strong>Note</strong> command allows you to
+</p>
+<dl><dd>
+Attach <strong>plain text notes</strong> (<a href="cmdTextNote.html#cmdTextNote">Section 2.3.3.1</a>),
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Attach <strong>weblinks</strong> (<a href="cmdLinkNote.html#cmdLinkNote">Section 2.3.3.2</a>) or
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Attach <strong>document references</strong> (<a href="cmdFileNote.html#cmdFileNote">Section 2.3.3.3</a>) to selected places on the layout.
+</dd>
+</dl>
+<hr>
+<ul>
+<li><a href="cmdTextNote.html#cmdTextNote">2.3.3.1 Text Note</a></li>
+<li><a href="cmdLinkNote.html#cmdLinkNote">2.3.3.2 Weblink</a></li>
+<li><a href="cmdFileNote.html#cmdFileNote">2.3.3.3 Document</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Text Note</title>
+<link rel="previous" href="cmdNote.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdLinkNote.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdTextNote"></a>2.3.3.1 <a name="i0"></a>Text Note</h1>
+<p>
+<img src="png.d/bnote.png"> <img src="png.d/iconnote.png"> Click and drag on the Main Canvas (<a href="mainW.html#mainW">Section 3.1</a>) to place the note.
+</p>
+<p>
+When you release, the <em>Note Editor</em> dialog is displayed. You can enter the note in the text area. Text is limited to about 10 thousand characters.
+</p>
+<p>
+<img src="png.d/notetext.png">
+</p>
+<p>
+When in <strong>Properties</strong> (<a href="cmdDescribe.html#cmdDescribe">Section 2.2.13</a>) mode, clicking on a <em>Note</em> will display the <em>Property Sheet</em> to let you read or modify the note.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Weblink</title>
+<link rel="previous" href="cmdTextNote.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdFileNote.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdLinkNote"></a>2.3.3.2 <a name="i0"></a>Weblink</h1>
+<p>
+<img src="png.d/blink.png"> <img src="png.d/iconlink.png"> Similar to text notes you can place a weblink on the layout.
+</p>
+<p>
+After releasing the mouse button, the <em>Link Editor</em> dialog is displayed.
+</p>
+<p>
+<img src="png.d/notelink.png">
+</p>
+<p>
+You can enter the URL of the website and a short description. When clicking on the Open button, your default browser is used to display the website.
+</p>
+<p>
+When in <strong>Properties</strong> (<a href="cmdDescribe.html#cmdDescribe">Section 2.2.13</a>) mode, clicking on a <em>Weblink Note</em> will display the <em>Property Sheet</em> to let you read or modify the URL or the description.
+</p>
+<p>
+Double clicking on a weblink icon opens the website in your default browser.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Document</title>
+<link rel="previous" href="cmdLinkNote.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdRuler.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdFileNote"></a>2.3.3.3 <a name="i0"></a>Document</h1>
+<p>
+<img src="png.d/bfile.png"> <img src="png.d/iconfile.png"> Similar to text notes you can place a reference to a file on the layout.
+</p>
+<p>
+After releasing the mouse button, the <em>Document Editor</em> dialog is displayed.
+</p>
+<p>
+<img src="png.d/notefile.png">
+</p>
+<p>
+You can select the file and a enter a short description. When clicking on the Open button the file is opened with the default program for that file type.
+</p>
+<p>
+When in <strong>Properties</strong> (<a href="cmdDescribe.html#cmdDescribe">Section 2.2.13</a>) mode, clicking on a <em>Document Note</em> will display the <em>Property Sheet</em> to let you read or modify the filename or the description.
+</p>
+<p>
+Double clicking on a document reference icon opens the document in the default program.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Ruler</title>
+<link rel="previous" href="cmdFileNote.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdAngle.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdRuler"></a>2.3.4 <a name="i0"></a>Ruler</h1>
+<p>
+<img src="png.d/bruler.png">
+</p>
+<p>
+The <strong>Ruler</strong> command displays a ruler on the layout. Click where you want the ruler to begin and drag the cursor to measure distances from the origin. The measured length is displayed in the <strong>Status-bar</strong> (<a href="mainW.html#mainW">Section 3.1</a>).
+</p>
+<p>
+You can use the <strong>Modify</strong> (<a href="cmdModify.html#cmdModify">Section 2.2.8</a>) command to change the length of the <strong>Ruler</strong>.
+</p>
+<p>
+Subsequent clicks on the <strong>Ruler</strong> button will hide or display the ruler.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Protractor</title>
+<link rel="previous" href="cmdRuler.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawShapes.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdAngle"></a>2.3.5 <a name="i0"></a>Protractor</h1>
+<p>
+<img src="png.d/bangle.png">
+</p>
+<p>
+The <strong>Angle</strong> command displays a <em>Protractor</em> on the layout. Click for the protractor origin and <code>left-drag</code> the cursor to set the base angle. Adding <code>Ctrl</code> will snap the angle to a multiple of 90 degrees.
+</p>
+<p>
+Then {Left-Drag the second line. Adding <code>Ctrl</code> will snap the angle to 90 degree relative to the base line. The angle between the lines is displayed.
+</p>
+<p>
+Sunsequent clicks on the <strong>Angle</strong> button will hide or display the <em>Protractor</em>.
+</p>
+<p>
+The points of the <em>Protractor</em> can be modified using the <strong>Modify</strong> (<a href="cmdModify.html#cmdModify">Section 2.2.8</a>) command.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Shapes</title>
+<link rel="previous" href="cmdAngle.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawBox.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawShapes"></a>2.3.6 <a name="i0"></a>Draw Shapes</h1>
+<p>
+<img src="png.d/mdrawshapes.png">
+</p>
+<p>
+Shapes are drawn by:
+</p>
+<dl><dd>
+(<a href="cmdDrawBox.html#cmdDrawBox">Section 2.3.6.1</a>). Boxes
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+(<a href="cmdDrawFilledBox.html#cmdDrawFilledBox">Section 2.3.6.2</a>. Filled Boxes
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+(<a href="cmdDrawPolygon.html#cmdDrawPolygon">Section 2.3.6.3</a>. Polygons
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+(<a href="cmdDrawFilledPolygon.html#cmdDrawFilledPolygon">Section 2.3.6.4</a>. Filled Polygons
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+(<a href="cmdDrawPolyline.html#cmdDrawPolyline">Section 2.3.6.5</a>. PolyLines
+</dd>
+</dl>
+<p>
+
+</p>
+<p>
+If <em>Sticky</em> is set for many draw line and curve objects, after the object is created, precise dimensions can be entered to alter the new object, before it is completed either with a <code>Space</code> or <code>Return</code> or <code>Tab</code> or by selecting a new operation.
+</p>
+<p>
+The <strong>Polygon</strong> and <strong>PolyLine</strong> shapes are finished by pressing the <code>Space</code> or <code>Return</code> <code>Tab</code> key or by selecting another operation. Before they are finished, precise dimensions can be entered for the last side drawn. All Polylines and Polygons must have more than 2 corners to be created successfully.
+</p>
+<p>
+Note that <a href="cmdModify.html#cmdModify">Section 2.2.8</a> can be used on a Polygon or a Polyline after it has been finished to alter individual points and to make them curved or rounded points.
+</p>
+<hr>
+<ul>
+<li><a href="cmdDrawBox.html#cmdDrawBox">2.3.6.1 Draw Box</a></li>
+<li><a href="cmdDrawFilledBox.html#cmdDrawFilledBox">2.3.6.2 Draw Filled Box</a></li>
+<li><a href="cmdDrawPolygon.html#cmdDrawPolygon">2.3.6.3 Draw Polygon</a></li>
+<li><a href="cmdDrawFilledPolygon.html#cmdDrawFilledPolygon">2.3.6.4 Draw Filled Polygon</a></li>
+<li><a href="cmdDrawPolyline.html#cmdDrawPolyline">2.3.6.5 Draw PolyLine</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Box</title>
+<link rel="previous" href="cmdDrawShapes.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawFilledBox.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawBox"></a>2.3.6.1 <a name="i0"></a>Draw Box</h1>
+<p>
+<img src="png.d/dbox.png">
+</p>
+<p>
+Before the box is drawn, the line width and color can be specified. The <strong>Box Line Width</strong> field is a scaled dimension in inches if &gt;0. If 0 it is a 1 pixel wide line at all zooms. If the value is negative, it is a scale-independent number of pixels wide.
+</p>
+<p>
+<strong>Boxes</strong> are created by selecting one corner and dragging the opposite corner.
+</p>
+<p>
+
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Filled Box</title>
+<link rel="previous" href="cmdDrawBox.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawPolygon.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawFilledBox"></a>2.3.6.2 <a name="i0"></a>Draw Filled Box</h1>
+<p>
+<img src="png.d/dfilbox.png">
+</p>
+<p>
+<strong>Filled Boxes</strong> are created by selecting one corner and dragging the opposite corner.
+</p>
+<p>
+
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Polygon</title>
+<link rel="previous" href="cmdDrawFilledBox.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawFilledPolygon.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawPolygon"></a>2.3.6.3 <a name="i0"></a>Draw Polygon</h1>
+<p>
+<img src="png.d/dpoly.png">
+</p>
+<p>
+Before the polygon is started the line width and color can be set. The <strong>PolyGon Line Width</strong> field is a scaled dimension in inches if &gt;0. If 0 it is a 1 pixel wide line at all zooms. If the value is negative, it is a scale-independent number of pixels wide.
+</p>
+<p>
+<strong>Polygons</strong> are created by either a series for <code>Left-Click</code>s or <code>Left+Drag</code>s, and a new "node" is placed for each. When using <code>Left-drag</code>, the node will be positioned when you release the button.
+</p>
+<dl><dd>
+If <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) is enabled, An anchor point will be shown on nearby draw objects that the next point will be snapped to unless <code>Alt</code> is held.
+</dd>
+<dd>
+If it is disabled, the snap will only occur if <em>Alt</em> is held.
+</dd>
+<dd>
+If <code>Ctrl</code> is held down when a new point is placed, it will snap the relative angle of the new side to a multiple of 90 degrees from the previous side. On the first polygon side this will be at a multiple of 90 degrees to the axes. The line from the previous point will be highlighted in Blue.
+</dd>
+<dd>
+A special blue square anchor will show when the cursor is in a position such that it is 90 degrees away from both the last point and the first point of the Polygon.
+</dd>
+<dd>
+The last polygon segment dimensions can be altered using the text boxes that appear showing the segment length and the relative angle to the previous segment.
+</dd>
+<dd>
+A polygon is closed if the next node is place over the start of the polygon
+</dd>
+<dd>
+The polygon is ended using <code>Enter</code> or <code>Space</code>. The polygon will be auto-closed.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Filled Polygon</title>
+<link rel="previous" href="cmdDrawPolygon.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawPolyline.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawFilledPolygon"></a>2.3.6.4 <a name="i0"></a>Draw Filled Polygon</h1>
+<p>
+<img src="png.d/dfilbox.png">
+</p>
+<p>
+Before the Polygon is started, the fill color can be set.
+</p>
+<p>
+<strong>Filled Polygons</strong> are created by either a series for <code>Left-Click</code>s or <code>Left+Drag</code>s, and a new "node" is placed for each. When using <code>Left-drag</code>, the node will be positioned when you release the button.
+</p>
+<dl><dd>
+The fill color can be adjusted using the color control at the bottom of the window
+</dd>
+<dd>
+If <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) is enabled, An anchor point will be shown on nearby draw objects that the next point will be snapped to unless <code>Alt</code> is held.
+</dd>
+<dd>
+If it is disabled, the snap will only occur if <em>Alt</em> is held.
+</dd>
+<dd>
+If <code>Ctrl</code> is held down when a new point is placed, it will snap the relative angle of the new side to a multiple of 90 degrees from the previous side.
+</dd>
+</dl>
+<p>
+On the first polygon side this will be at a multiple of 90 degrees to the axes. The line from the previous point will be highlighted in Blue.
+</p>
+<dl><dd>
+A special blue square anchor will show when the cursor is in a position such that it is 90 degrees away from both the last point and the first point of the Polygon.
+</dd>
+<dd>
+The last polygon segment dimensions can be altered using the text boxes that appear showing the segment length and the relative angle to the previous segment.
+</dd>
+<dd>
+The polygon is closed if the next node is place over the start of the polygon
+</dd>
+<dd>
+The Filled Polygon is ended using <code>Enter</code> or <code>Space</code>. The polygon will be auto-closed.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw PolyLine</title>
+<link rel="previous" href="cmdDrawFilledPolygon.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawStraights.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawPolyline"></a>2.3.6.5 <a name="i0"></a>Draw PolyLine</h1>
+<p>
+<img src="png.d/dpolylin.png">
+</p>
+<p>
+Before the polygon is started the line width and color can be set. The <strong>Polyline Line Width</strong> field is a scaled dimension in inches if &gt;0. If 0 it is a 1 pixel wide line at all zooms. If the value is negative, it is a scale-independent number of pixels wide.
+</p>
+<p>
+<strong>PolyLines</strong> are created by either a series for <code>Left-Click</code>s or <code>Left+Drag</code>s, and a new "node" is placed for each. When using <code>left-drag</code>, the node will be positioned when you release the button.
+</p>
+<dl><dd>
+If <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) is enabled, An anchor point will be shown on nearby draw objects that the next point will be snapped to unless <code>Alt</code> is held.
+</dd>
+<dd>
+If it is disabled, the snap will only occur if <em>Alt</em> is held.
+</dd>
+<dd>
+If <code>Ctrl</code> is held down when a new point is placed, it will snap the relative angle of the new side to a multiple of 90 degrees from the previous side. On the first polyline segemnt this will be at a multiple of 90 degrees to the axes. The line from the previous point will be highlighted in Blue.
+</dd>
+<dd>
+A special blue square anchor will show when the cursor is in a position such that it is 90 degrees away from both the last point and the first point of the Polyline.
+</dd>
+<dd>
+The last drawn polyline segment dimensions can be altered using the text boxes that appear showing the segment length and the relative angle to the previous segment.
+</dd>
+<dd>
+The polyline is ended using <code>Enter</code> or <code>Space</code>.
+</dd>
+<dd>
+While drawing the Polyline certain short cuts are available by keystroke and via the Context Menu:
+</dd>
+<dd>
+<code>'p'</code> - to cover to a Polygon
+</dd>
+<dd>
+<code>'s'</code> - to smooth the last selected point
+</dd>
+<dd>
+<code>'r'</code> - to make the last selected point round
+</dd>
+<dd>
+<code>'v'</code> - to make the last selected point sharp (a vertex)
+</dd>
+<dd>
+<code>'o'</code> - to change to <a href="DrawOrigin.html#DrawOrigin">Section 2.3.8</a> mode
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Straight Objects</title>
+<link rel="previous" href="cmdDrawPolyline.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawLine.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawStraights"></a>2.3.7 <a name="i0"></a>Straight Objects</h1>
+<p>
+<img src="png.d/mdrawstraight.png">
+</p>
+<p>
+Straight Objects are created by a <em>Left+Drag</em> (<a href="windowTerms.html#windowTerms">Section B.1</a>) on the layout.
+</p>
+<dl><dd>
+(<a href="cmdDrawLine.html#cmdDrawLine">Section 2.3.7.1</a>). Creates a Straight Line
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+(<a href="cmdDrawDimLine.html#cmdDrawDimLine">Section 2.3.7.2</a>). Creates a <strong>Dimension Line</strong> of various sizes.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+(<a href="cmdDrawBench.html#cmdDrawBench">Section 2.3.7.3</a>). Creates <a name="i1"></a>Bench-work using different types and orientation of lumber.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+(<a href="cmdDrawTableEdge.html#cmdDrawTableEdge">Section 2.3.7.4</a>). Creates a <strong>Table Edge</strong>
+</dd>
+</dl>
+<ul>
+<li><a href="cmdDrawLine.html#cmdDrawLine">2.3.7.1 Draw Straight Line</a></li>
+<li><a href="cmdDrawDimLine.html#cmdDrawDimLine">2.3.7.2 Draw Dimension Line</a></li>
+<li><a href="cmdDrawBench.html#cmdDrawBench">2.3.7.3 Draw Benchwork</a></li>
+<li><a href="cmdDrawTableEdge.html#cmdDrawTableEdge">2.3.7.4 Draw Table Edge</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Straight Line</title>
+<link rel="previous" href="cmdDrawStraights.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawDimLine.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawLine"></a>2.3.7.1 <a name="i0"></a>Draw Straight Line</h1>
+<p>
+<img src="png.d/dline.png">
+</p>
+<p>
+Creates a <strong>Straight Line</strong> of specified color and width. The <strong>Straight Line Width</strong> field is a scaled dimension in 75ths of an inch if &gt;0. If 0 it is a 1 pixel wide line at all zooms. If the value is negative, it is a scale-independent number of pixels wide.
+</p>
+<p>
+If <code>Ctrl</code> is held down during <code>Left+Drag</code> the line will snap the angle of the new side to a multiple of 90 degrees.
+</p>
+<p>
+With <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) enabled, the new line start position will snap to the nearest draw object, as shown by the anchor. If <code>Alt</code> is held down, the magnetic Snap is reversed. If <strong>GridSnap</strong> is enabled and MagneticSnap does not find a postion, the first position will snap to the Grid. This is suppressed if <strong>Alt</strong> is held.
+</p>
+<p>
+The <strong>Width</strong> field is a scaled dimension in inches if &gt;0. If 0 it is a 1 pixel wide line at all zooms. If the value is negative, it is a scale-independent number of pixels wide.
+</p>
+<p>
+If <em>Sticky</em> is set for straight draw, after the line is drawn there will be two text fields on the bottom rail, to allow fine-tuning of the angle and the length. Pressing <code>Enter</code> or <code>Tab</code> with the cursor in these boxes will apply the value to the line. Pressing <code>Space</code> or <code>Enter</code> on the drawing surface will move to drawing a new line. Pressing <code>Shift+Tab</code> will remove the current object and allow a new one to drawn. Even if <code>Esc</code> is pressed, the line will already exist, it can be removed with <strong>Undo</strong>.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Dimension Line</title>
+<link rel="previous" href="cmdDrawLine.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawBench.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawDimLine"></a>2.3.7.2 <a name="i0"></a>Draw Dimension Line</h1>
+<p>
+<img src="png.d/ddimlin.png">
+</p>
+<p>
+Creates a <strong>Dimension Line</strong> of various sizes.
+</p>
+<p>
+With <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) enabled, the new line start position will snap to the nearest draw object, as shown by the anchor unless <code>Alt</code> is held down. If it is disabled, it will only snap if <em>Alt</em> is held. If <strong>GridSnap</strong> is enabled and MagneticSnap does not find a postion, the first position will snap to the Grid. This is suppressed if <strong>Alt</strong> is held.
+</p>
+<p>
+If <code>Ctrl</code> is held down during <code>Left+Drag</code> the line will snap the angle of the new side to a multiple of 90 degrees.
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Benchwork</title>
+<link rel="previous" href="cmdDrawDimLine.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawTableEdge.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawBench"></a>2.3.7.3 <a name="i0"></a>Draw Benchwork</h1>
+<p>
+<img src="png.d/dbench.png">
+</p>
+<p>
+Creates <a name="i1"></a>Bench-work using different types and orientation of lumber.
+</p>
+<p>
+<a name="i2"></a>Bench-work Notes
+</p>
+<dl><dd>
+Lumber is drawn using the Dressed size which is 0.25" smaller than the indicated size: a 1" x 2" actually measures 0.75" x 1.75". The drawn height of <em>Girders</em> is 0.5" smaller.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Girders</em> can be drawn in a variety of orientations: normal, inverted or rotated. <em>L-Girders</em> can be drawn with the flange to the Left or Right.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+When using metric units (<a href="cmdPref.html#cmdPref">Section 2.10.7</a>), a 1" x 2" is labeled 50mm x 25mm
+</dd>
+</dl>
+<p>
+With <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) enabled, the new line start position will snap to the nearest draw object, as shown by the anchor unless <code>Alt</code> is held down. If it is disabled, it will only snap if <em>Alt</em> is held. If <strong>GridSnap</strong> is enabled and MagneticSnap does not find a postion, the first position will snap to the Grid. This is suppressed if <strong>Alt</strong> is held.
+</p>
+<p>
+If <code>Ctrl</code> is held down during <code>Left+Drag</code> the line will snap the angle of the new side to a multiple of 90 degrees.
+</p>
+<p>
+If <em>Sticky</em> is set for straight draw, after the benchwork is drawn there will be two text fields on the bottom rail, to allow fine-tuning of the angle and the length. Pressing <code>Enter</code> or <code>Tab</code> with the cursor in these boxes will apply the value to the benchwork. Pressing <code>Space</code> or <code>Enter</code> or <code>Tab</code> on the drawing surface will move to drawing a new benchwork line. Pressing <code>Shift+Tab</code> on the drawing surface will remove the current object and allow a new one to be drawn. Even if <code>Esc</code> is pressed, the benchwork will already exist, it can be removed with <strong>Undo</strong>.
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Table Edge</title>
+<link rel="previous" href="cmdDrawBench.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="DrawOrigin.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawTableEdge"></a>2.3.7.4 <a name="i0"></a>Draw Table Edge</h1>
+<p>
+<img src="png.d/dtbledge.png">
+</p>
+<p>
+Creates a <strong>Table Edge</strong>
+</p>
+<p>
+With <strong>MagneticSnap</strong> (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) enabled, the new line start position will snap to the nearest draw object, as shown by the anchor unless <code>Alt</code> is held down. If it is disabled, it will only snap if <em>Alt</em> is held. If <strong>GridSnap</strong> is enabled and MagneticSnap does not find a postion, the first position will snap to the Grid. This is suppressed if <strong>Alt</strong> is held.
+</p>
+<p>
+If <code>Ctrl</code> is held down during <code>Left+Drag</code> the edge will to a end point of another table edge or to a multiple of 90 degrees if that isn't available.
+</p>
+<p>
+If <em>Sticky</em> is set for straight draw, after the edge is drawn there will be two text fields on the bottom rail, to allow fine-tuning of the angle and the length. Pressing <code>Enter</code> or <code>Tab</code> with the cursor in these boxes will apply the value to the edge. Pressing <code>Space</code> or <code>Enter</code> or <code>Tab</code> on the drawing surface will move to drawing a new edge. Pressing <code>Shift+Tab</code> on the drawing surface will remove the current object and allow a new one to be drawn. Even if <code>Esc</code> is pressed, the edge will already exist, it can be removed with <strong>Undo</strong>.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Objects Origin</title>
+<link rel="previous" href="cmdDrawTableEdge.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdText.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="DrawOrigin"></a>2.3.8 <a name="i0"></a>Draw Objects Origin</h1>
+<p>
+Some objects will a natural rotation point within them. By setting the object origin to this point, subsequent rotation will be about that point and not the layout origin. This is referred to as a <em>Relative</em> origin and will be present if the origin is non-zero. When an object with a Relative is moved or rotated, the origin and angle are adjusted but the relative draw point values remain the same. If an object has a zero origin, it is called Absolute. If it is moved or rotated, the origin and angle remain zero, but all the obect point(s) are adjusted.
+</p>
+<p>
+You can choose to set the origin to make it Relative or put it back to Absolute (origin zero) during <a href="cmdDrawShapes.html#cmdDrawShapes">Section 2.3.6</a> or <a href="cmdModify.html#cmdModify">Section 2.2.8</a> or by using the <a href="cmdDescribe.html#cmdDescribe">Section 2.2.13</a> settings.
+</p>
+<p>
+As a practical matter, the object will appear identical until a subsequent rotation value is entered in the <a href="cmdDescribe.html#cmdDescribe">Section 2.2.13</a> window in both cases.
+</p>
+<p>
+In Origin Mode (entered using <code>'o'</code> or the Context Menu, there are certain shortcuts available -
+</p>
+<dl><dd>
+<code>'p'</code> Go to Points Mode
+</dd>
+<dd>
+<code>'0'</code> Move to Absolute (Origin to 0,0)
+</dd>
+<dd>
+<code>'1-4'</code> Move the Relative Origin to the shape point 1 to 4
+</dd>
+<dd>
+<code>'l'</code> Move the Relative Origin to the last selected point
+</dd>
+<dd>
+<code>'m'</code> Move the Relative Origin to the middle of the shape (centeroid).
+</dd>
+</dl>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Text</title>
+<link rel="previous" href="DrawOrigin.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="editM.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdText"></a>2.3.9 <a name="i0"></a>Text</h1>
+<p>
+<img src="png.d/btext.png">
+</p>
+<p>
+The <strong>Text</strong> command lets you enter a Text Draw object on the layout at the selected position. You can use the Tab key to format the text to fixed tab positions and CTRL+Enter to enter a newLine character.
+</p>
+<p>
+<img src="png.d/statustext.png">
+</p>
+<p>
+The font size can be changed by the Font Size drop list on the <strong>Status-bar</strong> (<a href="mainW.html#mainW">Section 3.1</a>). The font size is scaled along with everything else on the layout so text is always the same relative size as other layout objects.
+</p>
+<p>
+The color used can be selected by the Color icon on the <strong>Status-bar</strong> (<a href="mainW.html#mainW">Section 3.1</a>).
+</p>
+<p>
+The new text object can be "boxed" by having a line drawn around it using the Boxed tick-mark on the <strong>Status-bar</strong> (<a href="mainW.html#mainW">Section 3.1</a>).
+</p>
+<p>
+The position where text is to be placed on the layout is selected prior to text entry by <code>Left-Click</code>ing on the layout at the point where the text is to appear. Desired text is input after the position is selected. If necessary, the location can be changed once text entry begins by <code>Left-Click+Drag</code>ing the text to any desired postion on the layout.
+</p>
+<p>
+The <strong>Properties</strong> (<a href="cmdDescribe.html#cmdDescribe">Section 2.2.13</a>) command can be used to modify the contents, color and fontsize of existing <strong>Text</strong> objects and to set the boxes property.
+</p>
+<p>
+The new Text object is committed when another command is entered (or <em>Enter</em> is used if the Text command is Sticky).
+</p>
+<p>
+The font used for all Text objects can be selected by the <strong>Font Selection</strong> (<a href="fontSelW.html#fontSelW">Section 2.10.5</a>) dialog invoked by the <strong>Options&gt;Fonts</strong> menu item or by <code>Shift+Right-Click</code> (<a href="cmdAcclKeys.html#cmdAcclKeys">Section 3.4</a>).
+</p>
+<p>
+Note: loading fonts (or changing sizes) can take a noticeable amount of time.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Edit Menu</title>
+<link rel="previous" href="cmdText.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdSelectIndex.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="editM"></a>2.4 <a name="i0"></a>Edit Menu</h1>
+<p>
+<img src="png.d/medit.png">
+</p>
+<p>
+The <strong>Edit Menu</strong> shows commands affecting the <strong>Main Canvas</strong> (<a href="mainW.html#mainW">Section 3.1</a>).
+</p>
+<dl><dd>
+<a name="i1"></a>Undo - Reverses the last command. Up to the last ten commands can be undone. If there are no commands that can be undone the <strong>Undo</strong> item is disabled. The <strong>Undo</strong> command can also be invoked by the <strong>Undo</strong> button (<a href="cmdUndo.html#cmdUndo">Section 2.4.9</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i2"></a>Redo - Undoes the last Undo command. The <strong>Redo</strong> command can also be invoked by the <strong>Redo</strong> button (<a href="cmdUndo.html#cmdUndo">Section 2.4.9</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i3"></a>Cut - Moves the selected objects to the clipboard.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i4"></a>Copy - Copies the selected objects to the clipboard.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i5"></a>Paste - Copies the contents of the clipboard to the layout. Using the paste Menu command it will be placed at the center of the screen. If the context menu paste is used or the short-cuts <em>Ctrl+v</em> or <em>Shift+Insert</em>, the parts will be placed at the cursor position. Repeated Pastes without moving the cursor result in overlaid copies. The newly pasted parts are in <strong>Selected</strong> state and can easily be moved into place. Any previously selected objects are unselected.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i6"></a>Delete - Deletes the selected objects.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i7"></a>Move To Current Layer - move all selected objects to the current Layer (<a href="cmdLayer.html#cmdLayer">Section 2.9.5</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i8"></a>Select All - Selects all objects on the layout.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i9"></a>Select Current Layer - selects all objects in the current Layer (<a href="cmdLayer.html#cmdLayer">Section 2.9.5</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i10"></a>Select By Index - selects object by index number (<a href="cmdSelectIndex.html#cmdSelectIndex">Section 2.4.1</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i11"></a>Deselect All - unselects all objects on the layout. The same action can be achieved by pressing the ESC key.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i12"></a>Invert Selection - selects all unselected objects and unselects all previously selected objects.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i13"></a>Select Stranded Track - selects all track pieces that are not connected to any other objects. This helps cleaning up a drawing after many changes have been made.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i14"></a>Tunnel<a name="i15"></a> - Hides or reveals selected tracks and adds a tunnel portal symbol where the track passes from one to the other.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i16"></a>Bridge<a name="i17"></a> - Adds or removes parapet symbols and a solid base to the track. The color is selectable (<a href="cmdRgbcolor.html#cmdRgbcolor">Section 2.10.1</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i18"></a>Roadbed<a name="i19"></a> - Adds or removes solid roadbed under the track. The color is selectable (<a href="cmdRgbcolor.html#cmdRgbcolor">Section 2.10.1</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i20"></a>Ties/No Ties<a name="i21"></a><a name="i22"></a> - Hides or reveals the ties on selected tracks.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i23"></a>Move To Front - Moves selected object to foreground.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i24"></a>Move To Back - Moves selected object to background.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<a name="i25"></a>Thin, Medium and Thick Tracks <a name="i26"></a><a name="i27"></a> <a name="i28"></a><a name="i29"></a><a name="i30"></a><a name="i31"></a> <a name="i32"></a> - set displayed rail width of selected tracks.
+</dd>
+</dl>
+<p>
+
+</p>
+<p>
+For more information on working with selected objects, see the Select (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) command.
+</p>
+<hr>
+<ul>
+<li><a href="cmdSelectIndex.html#cmdSelectIndex">2.4.1 Select By Index</a></li>
+<li><a href="cmdAboveBelow.html#cmdAboveBelow">2.4.2 "Move To Front" and "Move to Back" </a></li>
+<li><a href="addshortcutkeys.html#addshortcutkeys">2.4.3 Additional Shortcut Keys</a></li>
+<li><a href="cmdDelete.html#cmdDelete">2.4.4 Delete</a></li>
+<li><a href="cmdTunnel.html#cmdTunnel">2.4.5 Tunnel (Hide Tracks)</a></li>
+<li><a href="cmdTies.html#cmdTies">2.4.6 Ties (Draw or Hide Ties)</a></li>
+<li><a href="cmdBridge.html#cmdBridge">2.4.7 Bridge (Draw or Hide Abutments)</a></li>
+<li><a href="cmdRoadbed.html#cmdRoadbed">2.4.8 Roadbed (Draw or Hide Base)</a></li>
+<li><a href="cmdUndo.html#cmdUndo">2.4.9 Undo and Redo </a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Select By Index</title>
+<link rel="previous" href="editM.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdAboveBelow.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdSelectIndex"></a>2.4.1 <a name="i0"></a>Select By Index</h1>
+<p>
+An input window allows one or more index numbers to be entered. Multiple indexes are seperated by commas.
+</p>
+<p>
+The object can not be selected if its Layer is frozen.
+</p>
+<p>
+If the object is part of a module layer, all objects in the layer will be selected.
+</p>
+<p>
+If the object is a tunnel object, and the Display Tunnel option is None, it will be set to Dashed. See Display options (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>).
+</p>
+<p>
+When an individual object is selected, its index number is displayed in the Info Message area, another source is the List Parts (<a href="cmdEnum.html#cmdEnum">Section 2.9.6</a>) command with the <strong>List Indexes</strong> option.
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>"Move To Front" and "Move to Back" </title>
+<link rel="previous" href="cmdSelectIndex.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="addshortcutkeys.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdAboveBelow"></a>2.4.2 "Move To Front" and "Move to Back" <a name="i0"></a> <a name="i1"></a></h1>
+<p>
+<img src="png.d/btop_bottom.png">
+</p>
+<p>
+The Move to Front and Move To Back commands move the selected objects (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) to the top of the drawing list - the <strong>Foreground</strong> or to the bottom of the list - the <strong>Background</strong> making them more or less visible or prominent.
+</p>
+<p>
+The effect is to make the objects move to be in front of all or behind all other objects. This command is useful when dealing with filled shapes (<a href="cmdDraw.html#cmdDraw">Section 2.3</a>).
+</p>
+<p>
+Selected objects moved to the <strong>Background</strong> become unselected.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Additional Shortcut Keys</title>
+<link rel="previous" href="cmdAboveBelow.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDelete.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="addshortcutkeys"></a>2.4.3 <a name="i0"></a>Additional Shortcut Keys</h1>
+<p>
+Additional Shortcut keys perform the following:
+</p>
+<dl><dd>
+<code>Ctrl+Z</code> - Undo
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<code>Ctrl+R</code> - Redo
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<code>Ctrl+C</code> - Copy
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<code>Ctrl+V</code> - Paste
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<code>Ctrl+X</code> - Cut
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<code>Esc</code> - Deselect All
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Delete</title>
+<link rel="previous" href="addshortcutkeys.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdTunnel.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDelete"></a>2.4.4 <a name="i0"></a>Delete</h1>
+<p>
+<img src="png.d/bdelete.png">
+</p>
+<p>
+The <strong>Delete</strong> button is used to delete selected objects. Remember, the <strong>Undo</strong> (<a href="editM.html#editM">Section 2.4</a> or <a href="cmdUndo.html#cmdUndo">Section 2.4.9</a>) command can be used to restore a delete object.
+</p>
+<p>
+Deleting a track that is connected to an easement (<a href="cmdEasement.html#cmdEasement">Section 2.10.4</a>) causes the easement to be deleted as well.
+</p>
+<p>
+The <em>Delete</em> key invokes the Delete command.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Tunnel (Hide Tracks)</title>
+<link rel="previous" href="cmdDelete.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdTies.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdTunnel"></a>2.4.5 <a name="i0"></a>Tunnel (Hide Tracks)</h1>
+<p>
+<img src="png.d/btunnel.png">
+</p>
+<p>
+The <strong>Tunnel</strong> command is used to hide selected (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) tracks (as in a tunnel).
+</p>
+<p>
+Select the tracks you want to hide in a tunnel. Selecting a hidden track 'reveals' it.
+</p>
+<p>
+A tunnel portal is drawn where a hidden track connects with an 'unhidden' track. You can split (<a href="cmdSplitTrack.html#cmdSplitTrack">Section 2.2.17.1</a>) a track to place a tunnel portal at a particular spot.
+</p>
+<p>
+The <strong>Draw Tunnels</strong> Radio button group on the <strong>Options&gt;Display</strong> dialog (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>) controls whether hidden tracks are not drawn, drawn as dashed lines or drawn as normal lines.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Ties (Draw or Hide Ties)</title>
+<link rel="previous" href="cmdTunnel.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdBridge.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdTies"></a>2.4.6 <a name="i0"></a>Ties (Draw or Hide Ties)</h1>
+<p>
+<img src="png.d/bties.png">
+</p>
+<p>
+The <strong>Ties</strong> command is used to hide Ties (or reshow them). This may be useful for overlapping track, like dual gauge, or in areas like docks or yards where the track is covered.
+</p>
+<p>
+Select the tracks you want to hide or show ties for.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Bridge (Draw or Hide Abutments)</title>
+<link rel="previous" href="cmdTies.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdRoadbed.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdBridge"></a>2.4.7 <a name="i0"></a>Bridge (Draw or Hide Abutments)</h1>
+<p>
+<img src="png.d/bbridge.png">
+</p>
+<p>
+The <strong>Bridge</strong> command is used to add abutments to a track (as on an underbridge).
+</p>
+<p>
+Select the tracks you want to be a bridge. Bridge abutments are drawn alongside the track and a solid layer is added under the ties. You can split (<a href="cmdSplitTrack.html#cmdSplitTrack">Section 2.2.17.1</a>) a track to shorten the length of the bridge, or to add an extra pier to the drawing.
+</p>
+<p>
+If you perform this action on an existing bridge (or use Tunnel) the bridge is removed.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Roadbed (Draw or Hide Base)</title>
+<link rel="previous" href="cmdBridge.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdUndo.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdRoadbed"></a>2.4.8 <a name="i0"></a>Roadbed (Draw or Hide Base)</h1>
+<p>
+<img src="png.d/broadbed.png">
+</p>
+<p>
+The <strong>Roadbed</strong> command is used to add a solid color under a track (as roadbed).
+</p>
+<p>
+Select the tracks you want to have roadbed. A solid roadbed layer is drawn under the track.
+</p>
+<p>
+If you perform this action on existing roadbed (or use Tunnel) the roadbed is removed. The bridge option takes precedence over roadbed.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Undo and Redo </title>
+<link rel="previous" href="cmdRoadbed.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="fileM.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdUndo"></a>2.4.9 Undo and Redo <a name="i0"></a> <a name="i1"></a></h1>
+<p>
+<img src="png.d/bgundo.png">
+</p>
+<p>
+The <strong>Undo</strong> and <strong>Redo</strong> buttons invoke the same actions as the <strong>Edit</strong> menu items. The name of last command will be displayed as the Balloon Help (<a href="windowTerms.html#windowTerms">Section B.1</a>) for the <em>Undo</em> button. The name of last undone command will be displayed as the Balloon Help for the <em>Redo</em> button.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>File Menu</title>
+<link rel="previous" href="cmdUndo.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdExport.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="fileM"></a>2.5 <a name="i0"></a>File Menu</h1>
+<p>
+<img src="png.d/mfile.png">
+</p>
+<p>
+The <strong>File Menu</strong> shows file oriented commands for loading and saving layout files. <a name="i1"></a>File Types The main two filetypes that XTrackCAD uses are normal Layout Files (*.xtc) and Archive Files (*.xtce). The internals of both formats are described in the XtrkCAD Wiki at <a href="http://www.xtrkcad.org/Wikka/FileFormats" target="_blank">Wiki FileFormats</a>.
+</p>
+<p>
+<a name="i2"></a>Layout File The layout file is named with a <em>*.xtc</em> extenstion and is a text-based description file of all the objects used in the layout plus some information about the options currently in use. <a name="i3"></a>Archive An archive is named with a <em>*.xtce</em> extension, is a zipped collection of -
+</p>
+<ul><li>
+a <em>manifest</em> JSON file that lists the contents,
+</li>
+<li>
+the .xtc layout file, and
+</li>
+<li>
+any other content listed in the manifest -&gt; such as referenced image files. Initially the only such content is the background image which is added to the archive if it is present.
+</li>
+</ul>
+<dl><dd>
+<strong>Exit</strong> - Exits <em>XTrackCAD</em>. You will be asked to confirm your choice if there are unsaved changes.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bexport.png"> <strong>Export</strong> - Exports objects to a file in <em>XTrackCAD</em> (*.xti) format. If no objects are selected, all objects in visible layers are exported. If objects are selected they are exported. The exported file can then be imported into another layout design. Refer to the Import command listed below.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bexportbmap.png"><strong>Export to Bitmap</strong> - Creates a bitmap file (<a href="cmdOutputbitmap.html#cmdOutputbitmap">Section 2.5.2</a>) of the layout. The bitmap can be saved in either JPEG or PNG format.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bexportdxf.png"><strong>Export to DXF</strong> - Exports objects to a file in DXF format (<a href="generalTerms.html#generalTerms">Section B.2</a>). If no objects are selected, all objects in visible layers are exported. If objects are selected they are exported. The exported file can then be imported into other CAD programs.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bexportsvg.png"> <strong>Export to SVG</strong> - Exports objects to a file in SVG format. If no objects are selected, all objects in visible layers are exported. If objects are selected they are exported. The exported file can then be imported into a vector drawing program like Inkscape or used for publishing on the web.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>File List</strong> - List of the five most recently used <em>XTrackCAD</em> files or archives.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bimport.png"> <strong>Import</strong> - Displays the file selection dialog which allows selection of an existing <em>XTrackCAD</em> Import (<a href="cmdExport.html#cmdExport">Section 2.5.1</a> *.xti) files. This function can be used to transfer parts like a yard design from one layout design to another.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bimportmod.png"> <strong>Import Module</strong> - Displays the file selection dialog which allows selection of an existing <em>XTrackCAD</em> Import (<a href="cmdExport.html#cmdExport">Section 2.5.1</a> *.xti) file. The imported parts are put into a empty layer, sets the layer name to the imported filename and sets the layer to be a module - see (<a href="cmdLayer.html#cmdLayer">Section 2.9.5</a>).
+</dd>
+<dd>
+<img src="png.d/bnew.png"> <strong>New</strong> - Clears the current layout. In case there are any unsaved changes on the current plan, a warning pop-up will be displayed and you'll have the option to cancel the operation. After that the Layout Options (<a href="cmdLayout.html#cmdLayout">Section 2.10.6</a>) dialog will be opened.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Notes</strong> - Displays a simple notepad editor which you can use to enter information about the layout. Typically this could include prototype, period, theme, layout style, height, construction, type of track and turnouts used, control system and anything else of interest. (There is also a <strong>Note</strong> command (<a href="cmdNote.html#cmdNote">Section 2.3.3</a>) which allows attaching notes to particular parts of the layout.)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bopen.png"> <strong>Open</strong> - Displays the <strong>File Open</strong> dialog which allows an existing <em>XTrackCAD</em> file or archive to be selected and opened. In case there are any unsaved changes on the current plan, a warning pop-up will be displayed and you'll have the option to cancel the operation.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bparam.png"> <strong>Parameter Files</strong> - Displays the <strong>Parameter Files</strong> dialog (<a href="cmdPrmfile.html#cmdPrmfile">Section 2.5.7</a>) to choose parameter files.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bsetup.png"> <strong>Print Setup</strong> - Shows the Printer Setup Dialog (<a href="printSetup.html#printSetup">Section 2.5.10</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bprint.png"> <strong>Print</strong> - Invokes the Print command (<a href="cmdPrint.html#cmdPrint">Section 2.5.9</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/brevert.png"> <strong>Revert</strong> - Undoes all changes and returns to the last saved layout plan.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bsave.png"> <strong>Save</strong> - Saves the layout under the current file name and with the same file type as was opened. If a filename has not yet been assigned then the <strong>File Save</strong> dialog is shown so you enter a file (.xtc) or archive name (.xtce).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bsaveas.png"> <strong>Save As</strong> - This command lets you make a copy of the track plan you are currently working on as an file (.xtc) or an archive (.xtce). It differs from the regular Save command. Save stores your data back into the folder (directory) it originally came from in the same filetype. "Save As" lets you give your plan a different name and/or put it in a different folder on your hard disk and chnage its filetype using the selection box at the bottom of the list of files or by hardcoding the extensions .xtc or .xtce (for an archive).
+</dd>
+</dl>
+<hr>
+<ul>
+<li><a href="cmdExport.html#cmdExport">2.5.1 Export</a></li>
+<li><a href="cmdOutputbitmap.html#cmdOutputbitmap">2.5.2 Export to Bitmap</a></li>
+<li><a href="ExportDXF.html#ExportDXF">2.5.3 Export to DXF</a></li>
+<li><a href="ExportSVG.html#ExportSVG">2.5.4 Export to SVG</a></li>
+<li><a href="cmdImport.html#cmdImport">2.5.5 Import</a></li>
+<li><a href="cmdImportM.html#cmdImportM">2.5.6 Import as Module</a></li>
+<li><a href="cmdPrmfile.html#cmdPrmfile">2.5.7 Parameter Files</a></li>
+<li><a href="cmdSearchgui.html#cmdSearchgui">2.5.8 Choose Parameter Files</a></li>
+<li><a href="cmdPrint.html#cmdPrint">2.5.9 Printing</a></li>
+<li><a href="printSetup.html#printSetup">2.5.10 Printer Setup</a></li>
+<ul>
+<li><a href="Linux.html#Linux">2.5.10.1 Linux</a></li>
+<li><a href="MS-Windows.html#MS-Windows">2.5.10.2 Microsoft Windows</a></li>
+</ul>
+<li><a href="cmdPrintMargin.html#cmdPrintMargin">2.5.11 Printer Margin</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Export</title>
+<link rel="previous" href="fileM.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdOutputbitmap.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdExport"></a>2.5.1 <a name="i0"></a>Export</h1>
+<p>
+<img src="png.d/bexport.png">
+</p>
+<p>
+This menu item displays a file selection dialog where a file name for exported objects can be entered. All selected (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) objects are exported to the file. The export file will have an <code>xti</code> extension.
+</p>
+<p>
+<img src="png.d/exportfile.png">
+</p>
+<p>
+Using the Import command (<a href="cmdImport.html#cmdImport">section 2.5.5</a>), an exported file can be imported into another layout design.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Export to Bitmap</title>
+<link rel="previous" href="cmdExport.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="ExportDXF.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdOutputbitmap"></a>2.5.2 <a name="i0"></a>Export to Bitmap</h1>
+<p>
+<img src="png.d/bexportbmap.png">
+</p>
+<p>
+This menu item creates a bitmap file of the layout.
+</p>
+<p>
+<img src="png.d/bitmap.png">
+</p>
+<p>
+The <strong>Bitmap</strong> dialog specifies the style and size of the bitmap. The check-boxes (<strong>Layout Titles</strong>, <strong>Borders</strong>, <strong>Centerline of Track</strong> and <strong>Background Image</strong>) control whether the Layout Title (<a href="cmdLayout.html#cmdLayout">Section 2.10.6</a>), the borders or the track centerlines are printed on the bitmap. If a background image is used it will be printed if the option is set.
+</p>
+<p>
+The size of the bitmap is smaller if these are disabled.
+</p>
+<p>
+Printing the track centerlines (also seen when zoomed in 1:1) is useful when you later print the bitmap full size for laying out track.
+</p>
+<p>
+If the Snap Grid (<a href="cmdGrid.html#cmdGrid">Section 2.12.2</a>) is visible then it will be printed on the bitmap.
+</p>
+<p>
+The <strong>DPI</strong> control specifies the number of pixels per inch in the bitmap. Bitmaps must be less than 32,000 pixels in height or width. The upper value you can enter depends on the size of your trackplan. It is made sure that your bitmap does not exceed these limits. Larger values will result in a larger bitmap file.
+</p>
+<p>
+The bitmap width, height and approximate file size is indicated.
+</p>
+<p>
+Note: This command can create a very large file and consume a lot of memory and time.
+</p>
+<p>
+Pressing the <strong>OK</strong> button invokes a <strong>File Save</strong> dialog so you can choose the file name for the Bitmap.
+</p>
+<p>
+You can select to create JPEG or PNG files. As a rule of thumb JPEG results in smaller files when you use a backgound image, PNG does so for trackplans without an image background.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Export to DXF</title>
+<link rel="previous" href="cmdOutputbitmap.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="ExportSVG.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="ExportDXF"></a>2.5.3 <a name="i0"></a>Export to DXF</h1>
+<p>
+<img src="png.d/bexportdxf.png">
+</p>
+<p>
+This menu item displays a file selection dialog where a file name for exported objects can be entered. All selected (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) objects are exported to the file. The export file will have an <code>xti</code> extension.
+</p>
+<p>
+<img src="png.d/exportfiledxf.png">
+</p>
+<p>
+Exported files can then be imported into other CAD programs.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Export to SVG</title>
+<link rel="previous" href="ExportDXF.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdImport.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="ExportSVG"></a>2.5.4 <a name="i0"></a>Export to SVG</h1>
+<p>
+<img src="png.d/bexportsvg.png">
+</p>
+<p>
+This menu item displays a file selection dialog where a file name for exported objects can be entered. All selected (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) objects are exported to the file. The export file will have an <code>svg</code> extension.
+</p>
+<p>
+<img src="png.d/exportfilesvg.png">
+</p>
+<p>
+Files in SVG format can be used for different purposes.
+</p>
+<ul><li>
+SVG files can be loaded into many drawing programs. This makes it possible to enhance and resize the image. Vector images have the advantage of allowing lossless resizing.
+</li>
+<li>
+Most modern browsers support SVG as an image format. So the resulting file can directly be used to publish your plan on the web. By adding a bit of Javascript, zooming and panning can be enabled. Appropiate scripts can easily be found using your favorite search engine. The generated SVG uses the layout description as a title that is shown by some browser. Also the drawing has an 'id' for manipulation by Javascript. This id is derived from the filename by removing all spaces and sticking the word 'id' in front. Eg exporting <code>stonega.xtc</code> the resulting id will be <code>idstonega</code>.
+</li>
+</ul>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Import</title>
+<link rel="previous" href="ExportSVG.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdImportM.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdImport"></a>2.5.5 <a name="i0"></a>Import</h1>
+<p>
+<img src="png.d/bimport.png">
+</p>
+<p>
+Importing displays a file selection dialog to specify the file to import.
+</p>
+<p>
+<img src="png.d/import.png">
+</p>
+<p>
+After importing the objects from the file, the imported objects are in selected state and therefore are drawn in red. This allows you to easily move and rotate the imported objects to their final position.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Import as Module</title>
+<link rel="previous" href="cmdImport.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdPrmfile.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdImportM"></a>2.5.6 <a name="i0"></a>Import as Module</h1>
+<p>
+<img src="png.d/bimportxtc.png">
+</p>
+<p>
+Importing displays a file selection dialog to specify the file to import as a module.
+</p>
+<p>
+<img src="png.d/importmod.png">
+</p>
+<p>
+After importing the objects from the file, the imported objects are in selected state and therefore are drawn in red. This allows you to easily move and rotate the imported objects to their final position.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Parameter Files</title>
+<link rel="previous" href="cmdImportM.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdSearchgui.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdPrmfile"></a>2.5.7 <a name="i0"></a>Parameter Files</h1>
+<p>
+<img src="png.d/bparam.png">
+</p>
+<p>
+<em>Parameter Files</em> contain turnout, sectional track and structure definitions. Loaded Parameter Files are managed with the <strong>Parameter Files</strong> dialog.
+</p>
+<p>
+<img src="png.d/dprmfile.png">
+</p>
+<p>
+The dialog contains a list of parameter files. Each file is preceded by a color indicator. These indicators show whether a parameter file contains definitions that are usable in the current scale and gauge.
+</p>
+<p>
+<img src="png.d/greendot.png"> <img src="png.d/greenstar.png"> Definitions from this file are a perfect fit for the current layout options. The file has been loaded and will be visible in the <strong>HotBar</strong>. For track this means that gauge and scale of the track elements are identical to the layout settings. Prototype definitions (Scale "*") are always a perfect fit. Turnouts and Sectional Track must have the same gauge and usually the same scale unless the scale/gauge combination has been defined to fit. OO layouts use HO track as an example.
+</p>
+<p>
+<img src="png.d/yellowdot.png"> <img src="png.d/yellowstar.png"> Definitions from this file can be used with this layout but do not fit perfectly. A typical example is On30 where HO scale track can be used because the gauge is the same. But differences in scale may make the track look out of scale. Structures are considered compatible if the scale is within +/-20%. Cars are compatible if the gauge is the same, but the scale can be +/-20%. Exceptions to this can be defined in the scale definitions.
+</p>
+<p>
+<img src="png.d/reddot.png"> <img src="png.d/redstar.png"> This parameter file doesn't contain any usable definitions with current settings. You may want to change the layout options if you want to use elements from this file (for example altering the Layout Scale).
+</p>
+<p>
+<img src="png.d/greydot.png"> <img src="png.d/greystar.png"> This file is loaded but hidden. If it is marked as favorite it will be kept on the list between runs.
+</p>
+<p>
+Parameter files can be marked as <em>favorite</em>. The indicator for favorites is a star. The meaning of the colors isn't changed.
+</p>
+<p>
+Loaded definition files that are marked with a yellow or a green indicator appear on the <strong>Hot Bar</strong> (<a href="cmdHotBar.html#cmdHotBar">Section 2.7</a>).
+</p>
+<p>
+If you <em>unload</em> a file the definitions are removed from the selection lists and the <strong>Hot Bar</strong>. If the unloaded file was marked as a favorite it can be <em>reloaded</em> by selecting the <strong>Reload</strong> button.
+</p>
+<p>
+Files that are still loaded can be <em>reloaded</em> as well. In that case the old definitions are refreshed and extended by the rereading the file. This can be useful if you want to check changes you made by hand-editing a parameter file.
+</p>
+<p>
+Note that loading a file does not change the existing definitions in the layout. To do that after loading, use <a href="cmdRefreshSpecial.html#cmdRefreshSpecial">Section 2.9.10</a>.
+</p>
+<p>
+It is possible to change the state of several files at once. The <strong>Select All</strong> button allows you to select all parameter files for the next operation.
+</p>
+<p>
+In case unloaded files are marked as favorite, their state will be preserved between runs of the program. This makes it possible to keep a list of preferred parameter sets between runs of XTrackCAD but hide temporary unused files from the hotbar. That way the hotbar contents can be kept short containing only the currently needed elements.
+</p>
+<p>
+In order to update the defintion of an already loaded file from disk, you can use the <em>Reload</em> button. This will reload the file contents - with any changes made. It is the equivalent of using <strong>Browse</strong> and selecting the file again.
+</p>
+<p>
+Files can be listed by either their file name or by their contents description. This is controlled by the <strong>Show File Names</strong> check box.
+</p>
+<p>
+The <strong>Library</strong> button opens the <em>Choose Parameter File</em> dialog (<a href="cmdSearchgui.html#cmdSearchgui">Section 2.5.8</a>) this shows the all files included the system library so they can be added.
+</p>
+<p>
+The <strong>Browse</strong> button opens a file window that allows the user to add additional files to directly load other non-system <em>parameter files</em> such as provided by other users or downloaded from the Internet.
+</p>
+<p>
+When first installed, parameter files for all common scales are loaded. You can unload parameter files you don't use to speed up <em>XTrackCAD</em> startup time.
+</p>
+<p>
+The order in this list controls the order of turnouts and structures on the <strong>Hot Bar</strong> (<a href="cmdHotBar.html#cmdHotBar">Section 2.7</a>). You can move a parameter file to the end of the list by <em>Unloading</em> it, and then loading it via the <strong>Browse</strong> button.
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Choose Parameter Files</title>
+<link rel="previous" href="cmdPrmfile.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdPrint.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdSearchgui"></a>2.5.8 <a name="i0"></a>Choose Parameter Files</h1>
+<p>
+Selecting and loading additional parameter files from the System Library is done in the <strong>Choose Parameter Files</strong> dialog.
+</p>
+<p>
+<img src="png.d/paramsearch.png">
+</p>
+<p>
+Using the Search function you can find and select parameter files that are part of the XTrackCAD installation. Enter a set of one or more words and select the Search button. Search results are shown in the list box. Pressing the <a name="i1"></a>Clear Filter button shows the complete list again.
+</p>
+<p>
+You can subset the search to only search for parameter files who start with contents that fit the current Layout Scale using the <strong>Fit</strong> Mode. The options are "Fit All", "Fit Compatible" and "Fit Exact". Fit Compatible means that structures with Note that the code only looks at the first Turnout, Structure or Car entry to decide on the scale for the entire file. They will correspond to the color icons on the Parameter Files menu once they are loaded <a href="cmdPrmfile.html#cmdPrmfile">Section 2.5.7</a> when the same Layout scale is in use.
+</p>
+<p>
+Select the files you're interested in and press the <strong>Add</strong> button to add them to your parameter list.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Printing</title>
+<link rel="previous" href="cmdSearchgui.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="printSetup.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdPrint"></a>2.5.9 <a name="i0"></a>Printing</h1>
+<p>
+<img src="png.d/bprint.png">
+</p>
+<p>
+The <strong>Print</strong> command (<strong>File&gt;Print</strong>) is used to print all or a portion of the layout.
+</p>
+<p>
+<img src="png.d/bsetup.png">
+</p>
+<p>
+The <strong>Print Setup</strong> command (<strong>File&gt;Print Setup</strong>) is used to set up the printer properties.
+</p>
+<p>
+When the <strong>Print</strong> command is selected a grid, which represents each printed page, is drawn on the layout. Pages can be selected or unselected for printing by placing the mouse over a grid section and clicking the left mouse button.
+</p>
+<p>
+<img src="png.d/print.png">
+</p>
+<p>
+The <strong>Print</strong> dialog contains a number of control areas:
+</p>
+<dl><dt>
+The size of each page is controlled by:
+</dt>
+<dd>
+<strong>Scale</strong> - up to 1:1.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Width, Height</strong> - scaled size of each page. Values for <strong>Width</strong> and <strong>Height</strong> can be manually entered, overriding the maximum values. Values larger than the page size times the <em>Scale</em> cannot be entered.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Max</strong> - sets Width and Height to the maximum for the print <em>Scale</em>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Snap Shot</strong> - adjusts the <em>Scale</em>, <em>Origin</em> and <em>Angle</em> to produce a one-page snap shot of the layout.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Format</strong> - Portrait or Landscape.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Page printing order is controlled by the <strong>Print Order</strong> option.
+</dt>
+<dd>
+Relative to the Print Grid:
+<dl><dd>
+<strong>Normal</strong> order is Columns first, Top to Bottom, Left to Right.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Reverse</strong> order is Rows first, Left to Right, Bottom to Top.
+</dd>
+</dl>
+
+</dd>
+</dl>
+<p>
+Whether tracks are printed with one or two lines (representing the center line and rails) depends on the <strong>Print Scale</strong>. If this value is smaller than or equal to twice the Two Rail Scale on the Display (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>) dialog then tracks are drawn with two lines. This corresponds to the way tracks are drawn on the main window, adjusted to account for the greater resolution of most printers. At 1:1 tracks are also drawn with a center line.
+</p>
+<dl><dt>
+Other options:
+</dt>
+<dd>
+<strong>Engineering Data</strong> - show title, user, date and other information in a box at the bottom of the printout.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Registration Marks</strong> - at 1:1 scale, print location markers every 3" (or 10cm). This option is only enabled at 1:1. This is useful for aligning multiple pages printed at different angles.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Page Numbers</strong> - to help positioning the individual pages the page number is printed in the center of the page in the format (x/y). x is the page position from left to right, y in from bottom to top, So (1/1) is the page at the bottom left. As an additional aid, the numbers of the next pages are printed on each edge.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Snap Grid</strong> - if the Snap Grid (<a href="cmdGrid.html#cmdGrid">Section 2.12.2</a>) is visible then it may be drawn on the printout. This option is only enabled if the <em>Snap Grid</em> is visible.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Rulers</strong> - choose to print rulers at the layout edge, or on all edges of the page, an option is only enabled if the <strong>Angle</strong> is <em>0.000</em>, or None - which means print no rulers.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Centerline below Scale 1:1</strong> - dotted line down the center of the Track/Roadbed. This line will always be printed at Scale 1:1, but selecting this option will print it at smaller scales. This option is disabled if tracks would be drawn with only one line (instead of two).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Roadbed Outline</strong> - lines representing the edge of the Roadbed. The Roadbed will be printed if the <em>Width</em> is greater than the track gauge. Note: this option is most useful at 1:1. This option is disabled if tracks would be drawn with only one line (instead of two).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Ignore Page Margins</strong> - use the physical page size. This allows the printouts to abut without trimming.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Margins</strong> - examine and update the printer margins for the current printer. (<a href="cmdPrintMargin.html#cmdPrintMargin">Section 2.5.11</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+The orientation of the print grid is controlled by:
+</dt>
+<dd>
+<strong>X</strong> - X co-ordinate.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Y</strong> - Y co-ordinate.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Angle</strong> - of the grid.
+</dd>
+</dl>
+<p>
+These values can be set directly or by dragging on the layout. <code>Shift+Left+Drag</code> moves the grid and <code>Shift+Right+Drag</code> rotates the grid. The <strong>Reset</strong> button resets the values to 0.
+</p>
+<p>
+The <strong>Print</strong> button prints the selected pages and closes the <strong>Print</strong> dialog. It is not enabled until you have selected some pages to print.
+</p>
+<p>
+The <strong>Setup</strong> button invokes the Printer Setup (<a href="printSetup.html#printSetup">Section 2.5.10</a>) dialog.
+</p>
+<p>
+The <strong>Select All</strong> button selects all pages for printing.
+</p>
+<p>
+The <strong>Clear</strong> button unselects all selected pages, so no pages will be printed.
+</p>
+<p>
+<em>Suggested Uses:</em>
+</p>
+<p>
+Use the <strong>Snapshot</strong> button to set the scale and orientation for a one-page printout of the layout. Also set <strong>Engineering Data</strong> to add the Layout Title, Scale and other data for a summary.
+</p>
+<p>
+Use <strong>Layers</strong> (<a href="cmdLayer.html#cmdLayer">Section 2.9.5</a>) to control which tracks are visible (and printed). Put bench-work, scenery or different tracks levels in separate layers and hide the layers you are not working with.
+</p>
+<p>
+To transfer the drawing to the layout without printing at 1:1, make the Snap Grid (<a href="cmdGrid.html#cmdGrid">Section 2.12.2</a>) visible and orient it to match your room or layout table.
+</p>
+<p>
+Check the <strong>Print Snap Grid</strong> toggle and use the printed grid to transfer measurements to your layout space. You may want to change the color (<a href="cmdRgbcolor.html#cmdRgbcolor">Section 2.10.1</a>) of the <strong>Snap Grid</strong> to make it more visible on the printout.
+</p>
+<p>
+When you print multiple pages you can check <strong>Ignore Page Margins</strong> so pages can be placed next to each other. The tracks will line up correctly without trimming or overlapping the pages. Note: depending on your printer there will be an unprintable margin around the edge of the page.
+</p>
+<p>
+If you print at 1:1 for direct transfer to the sub-roadbed, check <strong>Print Roadbed Outline</strong> and set <strong>Width</strong> to show lines for making cuts.
+</p>
+<p>
+If you make printouts in strips at different angles at 1:1 (to follow tracks around a curve), check <em>Print Registration Marks</em> to be able to align the separate strips.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Printer Setup</title>
+<link rel="previous" href="cmdPrint.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="Linux.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="printSetup"></a>2.5.10 <a name="i0"></a>Printer Setup</h1>
+<ul>
+<li><a href="Linux.html#Linux">2.5.10.1 Linux</a></li>
+<li><a href="MS-Windows.html#MS-Windows">2.5.10.2 Microsoft Windows</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Linux</title>
+<link rel="previous" href="printSetup.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MS-Windows.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="Linux"></a>2.5.10.1 <a name="i0"></a>Linux</h1>
+<p>
+<img src="png.d/printset.png">
+</p>
+<p>
+The <strong>Printer Setup</strong> dialog allows you to configure the application's use of the printer.
+</p>
+<p>
+The <strong>Printer Setup</strong> window contains:
+</p>
+<dl><dd>
+<strong>Format for</strong> - a list to select a particular printer. The entries on this list are defined by <code>printer</code> lines in the <code>~/.xtrkcad/xtrkcad.rc</code> file. The first entry, 'File', causes printouts to be sent to a file. You will be prompted for a file name when doing a print.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Paper Size</strong> - a list of various supported paper sizes.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Orientation</strong> - a Radio button to select various Landscape or Portrait formats. This setting is ignored, use the <strong>Page Format</strong> entry on the <strong>Print</strong> dialog.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Apply</strong> - updates the data and ends the dialog.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Cancel</strong> - ends the dialog without update.
+</dd>
+</dl>
+<p>
+
+</p>
+<p>
+<em>Note</em> - Printing uses a default of 600ppi. It scales the print and text from a default size of 72dpi. This is often the expected value for a standard printer driver to work correctly, but will not work if the driver is not accurately setting the ppi available. To override the printer ppi you can use either the configuration file settings for print or environmental variables. These values are set in the Preferences section.
+</p>
+<ol><li>
+Preferences.PrintScale - The floating point ratio of the real printer dpi to 72.
+</li>
+<li>
+Preferences.PrintTextScale - The floating point ratio of the real printer text support to a dpi of 72. This value has no effect unless PrintScale is set to &gt; 0.0.
+</li>
+</ol>
+<p>
+ These values can also be set using environmental variables if the configuration preference values are not set or they are set to &lt;=0.0.
+</p>
+<ol><li>
+XTRKCADPRINTSCALE
+</li>
+<li>
+XTRKCADPRINTTEXTSCALE
+</li>
+</ol>
+<p>
+
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Microsoft Windows</title>
+<link rel="previous" href="Linux.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdPrintMargin.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MS-Windows"></a>2.5.10.2 <a name="i0"></a>Microsoft Windows</h1>
+<p>
+<img src="png.d/printset_win.png">
+</p>
+<p>
+The Windows <strong>Printer Setup</strong> dialog allows you to configure the application's use of the printer.
+</p>
+<p>
+The <strong>Printer Setup</strong> window contains:
+</p>
+<dl><dd>
+<strong>Name</strong> - a drop down list for selection of a particular printer. Entries in this list are defined by <code>Windows</code>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Status</strong> - the current status of the selected printer.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Type</strong> - the type and model of printer selected.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Where</strong> - The location of the printer if it's defined in the printers properties.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Comment</strong> - Any comments defined that are defined in the printers properties.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Paper Size</strong> - a list of various North American and European paper sizes.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Paper Source</strong> - a list of various paper tray locations associated with the selected printer.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Orientation</strong> - a Radio button to select either Landscape or Portrait format. This setting is ignored, use the <strong>Page Format</strong> entry on the <strong>Print</strong> dialog.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Printer Margin</title>
+<link rel="previous" href="MS-Windows.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="helpM.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdPrintMargin"></a>2.5.11 <a name="i0"></a>Printer Margin</h1>
+<p>
+<img src="png.d/printmargin.png">
+</p>
+<p>
+The <strong>Printer Margins</strong> dialog allows you to configure the selected printer's margins.
+</p>
+<p>
+The margins for the four edges of the printed page are displayed. The default values are fetched from the Operating System. You can enter updated values if the System values don't match your actual printer.
+</p>
+<p>
+The <strong>Reset</strong> is enabled if the displayed values don't match the System values and will reload the System's values.
+</p>
+<p>
+To check your printer's margin:
+</p>
+<dl><dd>
+Set <strong>Scale</strong> to 1
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Set <strong>Origin</strong> and <strong>Angle</strong> to 0.000 by clicking the <strong>Reset</strong> button
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Enable <strong>Registration Marks</strong> this prints crosshairs every 3" or 10cm at scale 1:1.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Enable <strong>Ignore Page Margins</strong>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Select and <strong>Print</strong> the lower left page of you layout
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Measure the distance from the left and bottom edges to the Registration Mark at (3",3") or (10cm,10cm).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Update the <strong>Printer Margin</strong> values for the left and bottom edges. You can also update the top and right edges.
+</dd>
+</dl>
+<p>
+
+</p>
+<p>
+Margins values are stored for each printer.
+</p>
+<p>
+
+</p>
+<p>
+You can also load <strong>PrinterMarginTest-A4.xtc</strong> or <strong>PrinterMarginTest-Letter.xtc</strong> from <strong>Help|Examples</strong>. These files have registration lines in the corners to help determine your printer's margins.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Help Menu</title>
+<link rel="previous" href="cmdPrintMargin.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDemo.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="helpM"></a>2.6 Help Menu</h1>
+<p>
+<img src="png.d/mhelp.png">
+</p>
+<p>
+The <strong>Help Menu</strong> displays information on various topics. The contents of the menu vary depending on the operating system.
+</p>
+<dl><dd>
+The <strong>Help</strong> command opens the Help Window at the Contents Page.
+</dd>
+<dd>
+The <strong>Help Command Context</strong> command opens the Help Window at the page for the current Command.
+</dd>
+<dd>
+<img src="png.d/mhelprecent.png">
+</dd>
+<dd>
+<em>Recent Messages</em>
+</dd>
+</dl>
+<p>
+The <strong>Recent Messages</strong> command opens a cascading menu containing recent error messages and notices you have received. Selecting one of them displays additional information about the message (<a href="messageList.html#messageList">Section C.2</a>).
+</p>
+<p>
+The <strong>Collect Problem Info</strong> command helps you to put together the information and files that might help the developers to analyze and fix possible bugs.
+</p>
+<dl><dd>
+<img src="png.d/problemdata.png">
+</dd>
+<dd>
+<em>Collect Problem Info</em>
+</dd>
+</dl>
+<p>
+The command removes userids and other private information from the files. The results are stored in a compressed (zip-) file and placed in the same directory as the affected layout file.
+</p>
+<dl><dd>
+<img src="png.d/dtipofday.png">
+</dd>
+<dd>
+<em>Tip of The Day</em>
+</dd>
+</dl>
+<p>
+The <strong>Tip of the Day</strong> item displays a useful tip about the operation of <em>XTrackCAD</em>. By default, a new tip is displayed each time you start the program.
+</p>
+<dl><dd>
+<img src="png.d/mhelpdemos.png">
+</dd>
+<dd>
+<em>Demo Menu</em>
+</dd>
+</dl>
+<p>
+The <strong>Demos</strong> command (<a href="cmdDemo.html#cmdDemo">Section 2.6.1</a>) opens a cascading menu which invokes various demonstrations of <em>XTrackCAD</em> features.
+</p>
+<p>
+The <strong>Examples</strong> command displays the list of included example programs which you can examine.
+</p>
+<hr>
+<ul>
+<li><a href="cmdDemo.html#cmdDemo">2.6.1 Demo Mode</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Demo Mode</title>
+<link rel="previous" href="helpM.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdHotBar.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDemo"></a>2.6.1 <a name="i0"></a>Demo Mode</h1>
+<p>
+The <strong>Demos</strong> menu item, under the <strong>Help</strong> (<a href="helpM.html#helpM">Section 2.6</a>) menu, shows a cascading menu of choices to demonstrate various features and commands.
+</p>
+<p>
+<img src="png.d/mhelpdemos.png">
+</p>
+<p>
+In demonstration mode <em>XTrackCAD</em> is driven by a script file (such as created by the <strong>Record</strong> (<a href="macroM.html#macroM">Section 2.8</a>) command). The cursor is simulated on the Main Window (<a href="mainW.html#mainW">Section 3.1</a>) and the <em>XTrackCAD</em> windows (except the <strong>Demo</strong> window) are inactive. Also, simulated input on dialogs is indicated by a border momentarily drawn around the control.
+</p>
+<p>
+The <strong>Demo</strong> dialog is displayed which contains a number of control buttons and a text area that shows comments on the demonstration being run.
+</p>
+<dl><dd>
+<img src="png.d/demo.png">
+</dd>
+</dl>
+<ul><li>
+<strong>Next</strong> - skip to the next demonstration. If you hold down the <em>Shift</em> key then you will jump back to the previous demonstration.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+<strong>Quit</strong> - quit demonstration mode.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+<strong>Speed</strong> - controls the speed of the demonstration.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+<strong>Step</strong> - advance to the next step of the current demonstration.
+</li>
+</ul>
+<p>
+The state of the layout is saved when running demonstrations.
+</p>
+<p>
+A number of options and controls (such as scale) are changed while running demonstrations. These will be restored when the demonstration is finished.
+</p>
+<p>
+You can adjust Window sizes and positions while the demonstration is running to better see what is happening.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Hot Bar</title>
+<link rel="previous" href="cmdDemo.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="Flex-track.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdHotBar"></a>2.7 Hot Bar</h1>
+<p>
+<img src="png.d/hotbar.png">
+</p>
+<p>
+The <em>Hot Bar</em> starts with a flex-track of the current gauge, and then a scrolling list of all the turnouts, sectional track and structures available through the Turnout (<a href="cmdNewFixedTrack.html#cmdNewFixedTrack">Section 2.1.8</a>) and Structure (<a href="cmdStructure.html#cmdStructure">Section 2.1.7</a>) commands. The Description and/or Part Number under each object can be displayed by enabling the <em>Hot Bar Labels</em> radio button on the Display (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>) dialog.
+</p>
+<p>
+Only those items taken from files which are in the current scale/gauge are displayed in the HotBar. They are shown in order - A Flex-track - then the Contents of Files in the File-&gt;Parameter Files... List in listed order - and then any Custom objects created in this Layout as listed in the Manage-&gt;Custom Defined Parts dialog.
+</p>
+<p>
+The arrow buttons on either side of the <em>Hot bar</em> move the list one object to the right or left. Holding down the Shift key will move the list by greater amounts. About eight <code>Shift+Click</code>s are required to move the list through the entire range of objects. Also, pressing the keys <code>1</code> through <code>9</code> and <code>0</code> will cause the <em>Hot Bar</em> to jump relative spots on the list.
+</p>
+<p>
+A <code>Right-Click</code> over the <em>Hot Bar</em> will display a pop-up menu listing the files with contents on the <em>Hot Bar</em>. Selecting an item from this list causes the <em>Hot Bar</em> to jump to the relative spot on the whole list.
+</p>
+<p>
+Objects on the <em>Hot Bar</em> are placed on the drawing canvas by first selecting an object by <em>Cicking</em> it on the <em>Hot Bar</em>. Then <em>Click</em> and <em>Drag</em> on the Main window, rotating it with <code>Right-Drag</code> to position it, and then pressing the <code>Space</code> key to set it in place.
+</p>
+<p>
+For <em>Turnouts</em>, see below for additional details on the <em>Active EndPoint</em>.
+</p>
+<hr>
+<ul>
+<li><a href="Flex-track.html#Flex-track">2.7.1 Flex-track</a></li>
+<li><a href="hbStructures.html#hbStructures">2.7.2 Structures</a></li>
+<li><a href="hbTurnouts.html#hbTurnouts">2.7.3 Turnouts</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Flex-track</title>
+<link rel="previous" href="cmdHotBar.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="hbStructures.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="Flex-track"></a>2.7.1 <a name="i0"></a>Flex-track</h1>
+<p>
+A Flex-track unit can be placed for convienience on the left-hand side of the HotBar. This is can be hidden by an option in <a href="cmdPref.html#cmdPref">Section 2.10.7</a>. It can be recognised because it is the only diagonally facing track element and has a label "FLEX". It is used by <code>Left-Click</code> selecting it, and <code>Left-Click</code> clicking on the layout where the first end should be placed, and then <code>Left-Click</code> for the second end. If either end is over an unconnected end and <strong>Shift</strong> was not held, the flex-track will be connected to the track and the end angle and radius will be set from the track. If an end was not over an unconnected end, it can be manipulated by left dragging out the end angle before releasing. If the second end is not on a track end, differing end angles will produce a smooth curve, if both ends are unconnected, simply <code>Left-Click</code> without dragging produces a straight track. Once both ends have been defined, the track can then be manipulated like a <a href="chgCornu.html#chgCornu">section 2.2.8.8</a> Cornu Curved Track, by selecting and moving ends, adding and removing "pins" and altering the end anchor angle and radius if the flex-track is not connected at that end. If the disconnected end is dragged and the button released while over an open end of another track, it will be connected to it in the manner of a Join with a Cornu easement.
+</p>
+<p>
+A Flex-track will form a Straight Track if the ends have zero radius and are in a line with opposed end angles. If the ends are not aligned but the end angles are opposed it will be a simple S-curve. It will be a smooth monotonic curve if the ends are not in a line and the end angle lines and chord form a triangle. Otherwise it will be a complex S-curve. .
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Structures</title>
+<link rel="previous" href="Flex-track.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="hbTurnouts.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="hbStructures"></a>2.7.2 <a name="i0"></a>Structures</h1>
+<p>
+<em>Structures</em> are placed on the layout in the same way as turnouts (<a href="hbTurnouts.html#hbTurnouts">Section 2.7.3</a>) except no Active EndPoint exists and they do not align with existing track.
+</p>
+<p>
+Refer to <a href="cmdStructure.html#cmdStructure">Section 2.1.7</a> for information pertaining to use of the <em>Structure</em> dialog.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Turnouts</title>
+<link rel="previous" href="hbStructures.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="macroM.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="hbTurnouts"></a>2.7.3 <a name="i0"></a>Turnouts</h1>
+<p>
+<em>Turnouts</em> have an <em>Active EndPoint</em> (<a href="generalTerms.html#generalTerms">Section B.2</a>) which is the handle used to position the <em>Turnout</em>. You can change the <em>Active EndPoint</em> by a <code>Shift+Left-Click</code> which causes the next endpoint to become Active.
+</p>
+<p>
+If you <code>Left+Drag</code> a turnout onto a track, the Active EndPoint (<a href="generalTerms.html#generalTerms">Section B.2</a>) is aligned with the selected track. On flex-track, you can flip the turnout by moving the cursor from one side of the track centerline to the other. On another turnout, the new turnout will be placed at the endpoint closest to the cursor.
+</p>
+<p>
+<em>XTrackCAD</em> will automatically connect the turnout's endpoints to any other tracks they are aligned with. The number of endpoints that will be connected is displayed on the Status Bar, as well as the Maximum displacement between these endpoints and the tracks they will be connected to. <em>XTrackCAD</em> will adjust the position of the Turnout to give you the best fit for locating the turnout. You can override this adjustment by holding down the <em>Shift</em> key while <em>Dragging</em>.
+</p>
+<p>
+<code>Right+Drag</code> or <code>Ctrl+Left+Drag</code> (<a href="windowTerms.html#windowTerms">Section B.1</a>) can be used to rotate the turnout on the layout. <code>Shift+Right-Click</code> (<a href="cmdAcclKeys.html#cmdAcclKeys">Section 3.4</a>) displays a pop-up menu allowing you to rotate the turnout by various angles.
+</p>
+<p>
+When you press the <code>Space</code> key, the turnout is positioned on the layout. Any tracks that are aligned with any of the turnout's endpoints will be connected to the turnout automatically. If you are using the Turnout (<a href="cmdNewFixedTrack.html#cmdNewFixedTrack">Section 2.1.8</a>) command then you can also click the <em>OK</em> button on the dialog.
+</p>
+<p>
+If you choose another turnout or change commands after beginning to place a turnout on the layout, the turnout will be created as if it is attached to another track. Otherwise it will be removed.
+</p>
+<p>
+If the Drawing Scale is smaller or equal to the Label Scale (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>) then Turnouts will be labeled with their description when drawn. The individual labels can be can be turned off by the Move Description(<a href="cmdMoveLabel.html#cmdMoveLabel">Section 2.2.10</a>) command, or all Turnout labels can be disabled by using the Display (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>) dialog. As well, the length of any connected Flex-track will be indicated at each endpoint.
+</p>
+<p>
+Refer to <a href="cmdNewFixedTrack.html#cmdNewFixedTrack">Section 2.1.8</a> for information pertaining to use of the <em>Turnout</em> dialog.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Macro Menu</title>
+<link rel="previous" href="hbTurnouts.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="manageM.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="macroM"></a>2.8 Macro Menu</h1>
+<p>
+<img src="png.d/mmacro.png">
+</p>
+<p>
+The <strong>Macro Menu</strong> shows commands that can be used to <strong>Record</strong> and <strong>Playback</strong> commands.
+</p>
+<dl><dd>
+<strong>Record</strong> - Displays the <strong>Record</strong> dialog (after prompting for a file name). The current layout state and most subsequent actions will be saved in the recording file.
+<p>
+
+</p>
+<ul><li>
+Messages can be inserted into the recording file by pressing the <strong>Message</strong> button on the <strong>Record</strong> dialog then entering a message in the text display.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Press the <strong>End</strong> button to end entry of the message and resume recording.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Press the <strong>Stop</strong> button to stop recording.
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Playback</strong> - Displays the <strong>Playback</strong> dialog (after prompting for a file name). This is used to playback previously recorded sessions. <strong>Note:</strong> the layout state will be saved during playbacks and restored after.
+</dd>
+</dl>
+<p>
+The <strong>Record</strong> command is useful if it becomes necessary to report a bug in <em>XTrackCAD</em>.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Manage Menu</title>
+<link rel="previous" href="macroM.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdCarinv.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="manageM"></a>2.9 <a name="i0"></a>Manage Menu</h1>
+<p>
+<img src="png.d/mmanage.png">
+</p>
+<p>
+The <strong>Manage Menu</strong> shows commands affecting the <strong>Main Canvas</strong> (<a href="mainW.html#mainW">Section 3.1</a>).
+</p>
+<dl><dd>
+<strong>Car Inventory</strong> - displays the dialog (<a href="cmdCarinv.html#cmdCarinv">Section 2.9.1</a>) to update your list of cars and locomotives.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Custom Management</strong> - displays the <strong>Custom Management</strong> (<a href="cmdCustmgm.html#cmdCustmgm">Section 2.9.2</a>) dialog to manipulate custom turnout, structure and rolling stock designs.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Layout Control Elements</strong> - display the <strong>Layout Control Elements</strong> (<a href="cmdContmgm.html#cmdContmgm">Section 2.9.3</a>) dialog to manipulate blocks, turnout motors and signals.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Group</strong> - creates a <strong>Structure</strong> or <strong>Turnout</strong> definition from the selected (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) objects. See the <strong>Group</strong> command (<a href="cmdGroup.html#cmdGroup">Section 2.9.4</a>) for details.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Layers</strong> - displays the Layer (<a href="cmdLayer.html#cmdLayer">Section 2.9.5</a>) dialog.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Parts List</strong> - Invokes the Parts List (<a href="cmdEnum.html#cmdEnum">Section 2.9.6</a>) command. This command produces a list of all selected turnouts and sectional tracks and the total length of flex-track.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Price List</strong> - Displays the <strong>Price List</strong> (<a href="cmdPricelist.html#cmdPricelist">Section 2.9.7</a>) dialog to specify prices for tracks and structures.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Train</strong> - Run trains on the designed layout
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Turnout Designer</strong> - displays a menu list of Turnout Designer (<a href="cmdTurnoutNew.html#cmdTurnoutNew">Section 2.9.9</a>) dialogs.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Ungroup</strong> - breaks apart any selected (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) turnouts and structures into their basic lines (<a href="cmdDraw.html#cmdDraw">Section 2.3</a>) and track segments.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Update Turnout and Structures</strong> - replaces (<a href="cmdRefreshSpecial.html#cmdRefreshSpecial">Section 2.9.10</a>) any selected (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) <strong>Turnouts</strong> and <strong>Structures</strong> with the definitions from updated <strong>parameter files</strong> (<a href="cmdPrmfile.html#cmdPrmfile">Section 2.5.7</a>).
+</dd>
+</dl>
+<hr>
+<ul>
+<li><a href="cmdCarinv.html#cmdCarinv">2.9.1 Car Inventory</a></li>
+<ul>
+<li><a href="cmdCarpart.html#cmdCarpart">2.9.1.1 Car Item Dialog</a></li>
+<li><a href="carpart.html#carpart">2.9.1.2 Car Part Dialog</a></li>
+<li><a href="carprototype.html#carprototype">2.9.1.3 Car Prototype Dialog</a></li>
+</ul>
+<li><a href="cmdCustmgm.html#cmdCustmgm">2.9.2 Custom Management</a></li>
+<li><a href="cmdContmgm.html#cmdContmgm">2.9.3 Layout Control Elements Dialog</a></li>
+<li><a href="cmdGroup.html#cmdGroup">2.9.4 Group Dialog</a></li>
+<li><a href="cmdLayer.html#cmdLayer">2.9.5 Layers Dialog</a></li>
+<li><a href="cmdEnum.html#cmdEnum">2.9.6 Parts List </a></li>
+<li><a href="cmdPricelist.html#cmdPricelist">2.9.7 Price List</a></li>
+<li><a href="cmdTrain.html#cmdTrain">2.9.8 Train Mode </a></li>
+<li><a href="cmdTurnoutNew.html#cmdTurnoutNew">2.9.9 Turnout Designer</a></li>
+<li><a href="cmdRefreshSpecial.html#cmdRefreshSpecial">2.9.10 Update Turnouts and Structures</a></li>
+<li><a href="cmdUngroup.html#cmdUngroup">2.9.11 Ungroup</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Car Inventory</title>
+<link rel="previous" href="manageM.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdCarpart.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdCarinv"></a>2.9.1 <a name="i0"></a>Car Inventory</h1>
+<p>
+This dialog is used to manage your list of cars and locomotives.
+</p>
+<p>
+<img src="png.d/carinv.png">
+</p>
+<p>
+The main part of this dialog contains a detailed list of each car and locomotive in your inventory. The list can be sorted on different columns by selecting column names in the <strong>Sort Drop Down Lists</strong> along the top of the dialog. The width of the columns can be adjusted by <em>Left+Drag</em> on the lines between the column titles.
+</p>
+<p>
+Cars are placed on the layout by using the <strong>Train Simulation</strong> (<a href="cmdTrain.html#cmdTrain">Section 2.9.8</a>) command.
+</p>
+<p>
+The <strong>Find</strong> button will center the <strong>Main Window</strong> (<a href="mainW.html#mainW">Section 3.1</a>) on the selected car. This button is only enabled for cars which are on the Layout (indicated by co-ordinates in the Location column). If the car on a track that is hidden and <strong>Trains on Hidden Track</strong> (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>) is set to <strong>Hide</strong>, then the car (and any attached cars) will be made visible.
+</p>
+<p>
+The <strong>Edit</strong> button invokes the <strong>Car</strong> dialog (<a href="cmdCarpart.html#cmdCarpart">Section 2.9.1.1</a>) to modify the selected car. This button is disabled if more than one (or no) car is selected or if the selected car is on the Layout.
+</p>
+<p>
+The <strong>Add</strong> button is to add a new Car. Refer to <a href="faqsPrototype.html#faqsPrototype">Section A.3</a> if an error occurs when attempting to add inventory to this list.
+</p>
+<p>
+The <strong>Delete|Shelve</strong> button serves two functions: If all selected cars are on the layout then this button shows <strong>Shelve</strong> and it moves them from the layout and returns them to the <strong>Shelf</strong>. If all selected cars are on the <strong>Shelf</strong> then this button shows <strong>Delete</strong> and they will be deleted from the Inventory. Otherwise, the button is blank and disabled.
+</p>
+<p>
+The <strong>Import</strong> and <strong>Export</strong> buttons read and write a <em>Comma-Separated-Value (CSV)</em> file. This file format can be read and written by many applications. It can be used to transfer car inventory data between different applications. This file contains the following columns (the first four are required when Importing):
+</p>
+<dl><dd>
+<em>Scale</em> - example: HO, HOn3, N, O etc
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Manufacturer</em> and <em>Partno</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Prototype</em> - example: GP40
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Index</em> - an unique numeric identifier (optional)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Roadname</em>, <em>Repmark</em> and <em>Number</em> - example: Burlington Northern, BN, 1234
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Type</em> - enter one of the following:
+<ul><li>
+10101(Diesel),
+</li>
+<li>
+10201(Steam),
+</li>
+<li>
+10301(Electric),
+</li>
+<li>
+30100(Freight),
+</li>
+<li>
+50100(Passenger),
+</li>
+<li>
+70100(M-O-W) or;
+</li>
+<li>
+90100(Other)
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Options</em> - bit map of
+<ul><li>
+0x0001 - Body Mounted Couplers
+</li>
+<li>
+0x0002 - Locomotive
+</li>
+<li>
+Other bits can be ignored
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>CarLength</em>, <em>CarWidth</em>, <em>CoupledLength</em>, <em>Truch Center Offset</em> and <em>TruckCenter</em> - car dimensions in inches
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Color</em> - encoded as (Red * 65536 + Green * 256 + Blue)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>PurchPrice</em>, <em>CurrPrice</em>, <em>PurchDate</em> and <em>ServiceDate</em> - numeric values - dates are in the form yyyymmdd, where yyyy is the year, mm the month, dd the day
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Condition</em> - enter one of the following:
+<ul><li>
+100(Mint),
+</li>
+<li>
+80(Excellent),
+</li>
+<li>
+60(Good),
+</li>
+<li>
+40(Fair),
+</li>
+<li>
+20(Poor) or;
+</li>
+<li>
+0(N/A)
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Notes</em> - free form text
+</dd>
+</dl>
+<p>
+The <strong>List</strong> button creates a text file listing your inventory.
+</p>
+<hr>
+<ul>
+<li><a href="cmdCarpart.html#cmdCarpart">2.9.1.1 Car Item Dialog</a></li>
+<li><a href="carpart.html#carpart">2.9.1.2 Car Part Dialog</a></li>
+<li><a href="carprototype.html#carprototype">2.9.1.3 Car Prototype Dialog</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Car Item Dialog</title>
+<link rel="previous" href="cmdCarinv.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="carpart.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdCarpart"></a>2.9.1.1 <a name="i0"></a>Car Item Dialog</h1>
+<p>
+This dialog is invoked from the <strong>Car Inventory</strong> (<a href="cmdCarinv.html#cmdCarinv">Section 2.9.1</a>) and the <strong>Custom Management</strong> (<a href="cmdCustmgm.html#cmdCustmgm">Section 2.9.2</a>) dialogs.
+</p>
+<p>
+The dialog can be displayed in three different ways and is used to create or edit <strong>Car Items</strong>, <strong>Car Part</strong> definitions or <strong>Prototype</strong> definitions.
+</p>
+<p>
+The <strong>Add</strong> button creates a new definition. The dialog remains open so you can enter multiple definitions. You can <strong>Close</strong> the dialog when you are finished. If you are editing an existing definition then the <strong>Add</strong> button will be replaced by the <strong>Update</strong> button which updates the selected definition and closes the dialog.
+</p>
+<p>
+The <strong>New</strong> button on the <strong>Car Item</strong> dialog invokes the <strong>Car Part</strong> or <strong>Car Prototype</strong> dialog which you can use to create new part or prototype definitions for your cars. The <strong>New</strong> button on the <strong>Car Part</strong> dialog invokes the <strong>Car Prototype</strong> dialog.
+</p>
+<p>
+<strong>Car Item Dialog</strong>
+</p>
+<p>
+<img src="png.d/caritem.png">
+</p>
+<p>
+The dialog contains:
+</p>
+<dl><dd>
+<strong>Car Description</strong> which contains lists of <strong>Manufacturer</strong>, <strong>Prototype</strong> and <strong>Part Number</strong> which are used to select the Car Part. The <strong>Manufacturer</strong> list contains the entries <strong>Custom</strong> and <strong>Unknown</strong> for special Car Parts. For these entries you can enter the <strong>Part Number</strong> and <strong>Description</strong> fields.
+<p>
+
+</p>
+<ul><li>
+If the manufacturer of your car is not listed in the <strong>Manufacturer</strong> list you can type in the new name. Also, if the <strong>Part</strong> is not listed you can enter a new part number. The new part will be added to the list of Custom Car Parts (<a href="cmdCustmgm.html#cmdCustmgm">Section 2.9.2</a>).
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <strong>Mode</strong> Radio button group lets you choose between the <strong>Information</strong> controls described here or the <strong>Customize</strong> controls described in the next section. You would use the <strong>Customize</strong> option to change Road name, Number or Color if you have repainted the car or to adjust the dimensions.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Details about the individual car item such as <strong>Index</strong>, <strong>Price</strong> and <strong>Condition</strong>, <strong>Dates</strong> and <strong>Notes</strong>. The <strong>Index</strong> value must be unique for all car items.
+<p>
+
+</p>
+<ul><li>
+To enter multiple <strong>New Cars</strong> you can set the <strong>Quantity</strong> field to a value greater than one. The <strong>Numbers</strong> Radio button group specifies whether the new car's numbers will be sequential (such as 1234, 1235, ...) or repeated.
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Message Line</strong> which will contain instructions if there any fields that need to be completed.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Car Part Dialog</title>
+<link rel="previous" href="cmdCarpart.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="carprototype.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="carpart"></a>2.9.1.2 <a name="i0"></a>Car Part Dialog</h1>
+<p>
+This dialog is similar the the <strong>Car Item</strong> dialog except that the <strong>Car Item Information</strong> section is not displayed. The <strong>Manufacturer</strong> Drop Down List is editable so you can enter a new manufacturer, and you must enter a <strong>Part Number</strong>. If you are adding a new car part, the <strong>Part Number</strong> field will be incremented (if it is a numeric value) so you can enter a number of car parts.
+</p>
+<p>
+<img src="png.d/carpart.png">
+</p>
+<p>
+The middle section contains:
+</p>
+<dl><dd>
+The <strong>Road</strong>, <strong>Reporting Mark</strong>, <strong>Number</strong> and <strong>Color</strong>. You can choose a <strong>Road name</strong> from the list of known road names or enter a new value. If known, the <em>reporting mark</em> (road name abbreviation) is filled in. These values control what label content is shown for Cars. If a reporting number is present the rep mark and the rep number will be used if the Cars Label Option is on in <a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Car Dimensions</strong> which contain the major dimensions of the car and how the coupler is mounted on the car. The <strong>Coupler Length</strong> is measured from the edge of the car body to the pulling face of the coupler. It is equivalent to half the separation between two coupled cars.
+<p>
+
+</p>
+<ul><li>
+When entering values, the <code>p</code> key will convert a prototype measurement to a scale measurement.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The length dimension has the following relationship, so changing one value will affect the others:
+<p>
+
+</p>
+<dl><dd>
+<strong>Coupled Length = Car Length + 2 * Coupler Length</strong>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <em>Center Offset</em> moves the center of the two trucks from the center of the Car. This is a common feature of steam locomotives and means the envelope of the engine requires greater seperation between tracks on small radius curves. The minimum clearance needed can be seen by placing the car with the greatest distance from the center of the trucks to the corner on the inner radius and the car with the greatest distance between the trucks on the outer radius. See NMRA TN-7 Curved Track Centerline and Obstacle Clearance Calculation Methodology.
+</dd>
+</dl>
+
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+A diagram showing the position of the trucks and couplers.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Car Prototype Dialog</title>
+<link rel="previous" href="carpart.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdCustmgm.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="carprototype"></a>2.9.1.3 <a name="i0"></a>Car Prototype Dialog</h1>
+<p>
+This dialog is used to create or edit prototype definitions.
+</p>
+<p>
+<img src="png.d/carproto.png">
+</p>
+<p>
+The first section contains the name of the <strong>Prototype</strong> and its <strong>Type</strong>.
+</p>
+<p>
+If this dialog was invoked from the <strong>Car Item</strong> or <strong>Car Part</strong> dialog then the prototype diagram will be copied from the selected part. Otherwise, the prototype is drawn as the default image which is a simple blue rectangle or, if it is a locomotive, with one end angled.
+</p>
+<p>
+The <strong>Import</strong> button creates a prototype definition from the selected (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) lines and shapes. To use this, first create a set of shapes (<strong>Filled Rectangles, Polygons, Circles, Lines</strong> etc) using the Draw (<a href="cmdDraw.html#cmdDraw">Section 2.3</a>) commands on the main canvas. <strong>Select</strong> the shapes and use the <strong>Import</strong> button.
+</p>
+<p>
+The <strong>Reset</strong> button will reset the figure to the default image.
+</p>
+<p>
+If this dialog is invoked by the <strong>New</strong> button on the <strong>Car</strong> or <strong>Car Part</strong> dialog then the initial image will be copied from the prototype displayed on those dialogs. You can use this to make variations of existing prototypes.
+</p>
+<p>
+The <strong>Color</strong> control on the <strong>Car Part</strong> dialog will replace any color of the <strong>Imported</strong> shapes which is not Black or a shade of gray with the selected hue.
+</p>
+<p>
+The <strong>Flip</strong> button flips the diagram horizontally. For locomotives, the forward direction is to the right.
+</p>
+<p>
+Unlike the other dialogs, dimensions in this dialog are in prototype units. When entering values, the <code>s</code> key will convert a scale measurement to a prototype measurement.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Custom Management</title>
+<link rel="previous" href="carprototype.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdContmgm.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdCustmgm"></a>2.9.2 <a name="i0"></a>Custom Management</h1>
+<p>
+The <strong>Custom Management</strong> dialog allows you change the properties of turnouts, sectional track, structures, car parts and prototypes you have designed with the <strong>Turnout Designer</strong> (<a href="cmdTurnoutNew.html#cmdTurnoutNew">Section 2.9.9</a>), <strong>Group</strong> (<a href="cmdGroup.html#cmdGroup">Section 2.9.4</a>) or <strong>Car</strong> (<a href="cmdCarpart.html#cmdCarpart">Section 2.9.1.1</a>) commands. You can also move selected objects to a <strong>Parameter File</strong> (<a href="cmdPrmfile.html#cmdPrmfile">Section 2.5.7</a>).
+</p>
+<p>
+<img src="png.d/custmgm.png">
+</p>
+<p>
+The <strong>Edit</strong> button invokes the appropriate designer or editor dialog for the selected item. This button is disabled if more than one (or no) object is selected.
+</p>
+<dl><dd>
+The <strong>Turnout Designer</strong> (<a href="cmdTurnoutNew.html#cmdTurnoutNew">Section 2.9.9</a>) is used to modify the selected turnout design. If you wish to modify cosmetic details on a turnout or sectional track use the <strong>Group</strong> (<a href="cmdGroup.html#cmdGroup">Section 2.9.4</a>) command to add them to an existing definition.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Structures</strong> and old <strong>Turnout Designs</strong> use the <strong>Rename Dialog</strong> to change the Manufacturer, Description or Part Number values. For these objects the <strong>Edit</strong> button's label changes to <strong>Rename</strong>. <strong>Structures</strong> are not edited using this dialog but by using the <strong>Ungroup</strong> (<a href="cmdUngroup.html#cmdUngroup">Section 2.9.11</a>) and <strong>Group</strong> (<a href="cmdGroup.html#cmdGroup">Section 2.9.4</a>) commands.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <strong>Car</strong> (<a href="cmdCarpart.html#cmdCarpart">Section 2.9.1.1</a>) dialog is used to modify <strong>Car Prototype</strong> and <strong>Car Parts</strong>.
+</dd>
+</dl>
+<p>
+The <strong>Delete</strong> button removes the selected entries from the <code>xtrkcad.cus</code> (<a href="directories.html#directories">Section 1.9</a>) file when you exit the dialog.
+</p>
+<p>
+The <strong>Move To</strong> button moves the selected entries to a <strong>Parameter File</strong> (<a href="cmdPrmfile.html#cmdPrmfile">Section 2.5.7</a>). If the <strong>Parameter File</strong> does not currently exist than you will be prompted to supply a contents description line for the file. In case the parameter file already exists, the selected entries are appended to this file.
+</p>
+<p>
+The <strong>New</strong> buttons invokes the Car (<a href="cmdCarpart.html#cmdCarpart">Section 2.9.1.1</a>) dialog to create a new <strong>Car Prototype</strong> or <strong>Car Part</strong>.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Layout Control Elements Dialog</title>
+<link rel="previous" href="cmdCustmgm.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdGroup.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdContmgm"></a>2.9.3 <a name="i0"></a>Layout Control Elements Dialog</h1>
+<p>
+This dialog is used to manage layout control elements (blocks, switchmotors, and signals).
+</p>
+<p>
+Control Elements are elements related to layout control: blocks (occupancy detection), switchmotors (actuators to "throw" turnouts), signals, controls (other actuator or output devices), and sensors (other sensor or input devices). These elements don't relate to directly "physical" items on the layout, but instead refer to the elements used by the layout control software. These elements contain "scripts", which are really just textual items that provide information for the layout control software and provide a bridge between physical layout elements (like tracks or turnouts) and the layout control software. These textual items could be actual software code or could be LCC Events (for I/O device elements on a LCC network) or DCC addresses for stationary decoders, etc. XTrackCAD does not impose any sort of syntax or format -- that is left up to other software that might load and parse the XTrkCAD layout file. All that XTrackCAD does is provide a unified place for this information to be stored and to provide a mapping (association) between this control information and the layout itself.
+</p>
+<p>
+<img src="png.d/lcemanager.png">
+</p>
+<p>
+The main part of this dialog contains a list of the currently defined layout control elements (blocks, switchmotors, signals, controls, and sensors), along with the tracks they relate to. These elements are added to the layout either from their Hotbar menus or from the Add menu.
+</p>
+<p>
+The <strong>Edit</strong> button allows for editing a control element. And the <strong>Delete</strong> button deletes the selected element(s).
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Group Dialog</title>
+<link rel="previous" href="cmdContmgm.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdLayer.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdGroup"></a>2.9.4 <a name="i0"></a>Group Dialog</h1>
+<p>
+The <strong>Group</strong> command combines the selected (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) Lines and Shapes (<a href="cmdDraw.html#cmdDraw">Section 2.3</a>) to create structures (<a href="cmdHotBar.html#cmdHotBar">Section 2.7</a>). You can give the structure (<a href="cmdHotBar.html#cmdHotBar">Section 2.7</a>) a title consisting of Manufacturer, Description and Part Number on the <strong>Group</strong> dialog.
+</p>
+<p>
+<img src="png.d/cgroup.png">
+</p>
+<p>
+The title will be pre-populated with the title of the last <strong>Structure</strong> you <strong>ungrouped</strong> (<a href="manageM.html#manageM">Section 2.9</a>).
+</p>
+<p>
+You can include <strong>Turnouts</strong>, <strong>Sectional</strong>, <strong>Straight</strong> or <strong>Curved</strong> tracks in the selected objects which allows you to add cosmetic details to a <strong>Turnout</strong> definitions, or create a new <strong>Turnout</strong> definition. This can also be used to if there are fixed-track locations on a structure, like on an engine shed.
+</p>
+<p>
+<strong>Group</strong> is intended to operate on simple groups of track segments. If you intend to group a large number of track segments, you should consider using <strong>Import Module</strong> (see <a href="cmdLayer.html#cmdLayer">Section 2.9.5</a>),
+</p>
+<p>
+To modify a <strong>Structure</strong> or <strong>Turnout</strong> definition, first place the object on the layout, select and then <strong>Ungroup</strong> the object. Now the parts of the object can be edited using the <strong>Modify</strong> (<a href="cmdModify.html#cmdModify">Section 2.2.8</a>), <strong>Draw</strong> (<a href="cmdDraw.html#cmdDraw">Section 2.3</a>) or other commands. Once completed, select the object parts and use the <strong>Group</strong> command to update the definition (or create a new one by changing the title).
+</p>
+<p>
+The <strong>Group</strong> dialog shows the Manufacturer, Description and part number (Title) of the new definition. Initial values are based on selected turnouts and structures or on the last <strong>Ungroup</strong>ed object (<a href="cmdUngroup.html#cmdUngroup">Section 2.9.11</a>). The <strong>Turntable/TransferTable/DblSlipSwitch</strong>? toggle button controls whether non-conflicting <strong>Paths</strong> should be combined or keep separate, see <strong>Paths</strong> below. The <strong>Replace with new group</strong>? toggle button is used if you want to replace the selected objects with the new definition. All fields listed in this dialog window must contain data.
+</p>
+<p>
+The definition data will be added to the <code>xtrkcad.cus</code> (<a href="directories.html#directories">Section 1.9</a>) file for later use. Please consider contributing this information for others to use.
+</p>
+<p>
+If you modify a definition from a <em>XTrackCAD</em> Library parameter file, the new definition will replace the existing definition on the <strong>Hot Bar</strong> (<a href="cmdHotBar.html#cmdHotBar">Section 2.7</a>), otherwise it will be added to the end of the <strong>Hot Bar</strong>. You can use the <strong>Custom Management</strong> (<a href="cmdCustmgm.html#cmdCustmgm">Section 2.9.2</a>) dialog to change the title or delete custom definitions.
+</p>
+<p>
+<strong>Note:</strong> The selected tracks are decomposed into segments, which are simple tracks and drawing object (lines, curves, polygons ... ). Any track segments must appear in the first 127 segments. This implies a limit of 127 track segments.
+</p>
+<dl><dd>
+You can re-order the segment list by
+<ul><li>
+Ungroup the selected tracks
+</li>
+<li>
+Unselect all, and select the tracks you want to group
+</li>
+<li>
+<strong>Move selected objects to bottom</strong>
+</li>
+<li>
+Add the non-tracks object to the selected track segments
+</li>
+<li>
+Retry the <strong>Group</strong> command
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+<strong>Paths</strong> define which segments are followed by a train in Train mode. Normally, if two paths follow paths of separate segments, then the paths are combined. For example a simple turnout would have two paths, but since the paths share some common segments, the paths are not combined. A Crossing has two paths but since they don't have any segments in common, the two paths are combined into one. A Turntable can have many distinct paths but only one would be valid at any time. In this case we don't want to combine paths and the toggle would be checked.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Layers Dialog</title>
+<link rel="previous" href="cmdGroup.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdEnum.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdLayer"></a>2.9.5 <a name="i0"></a>Layers Dialog</h1>
+<p>
+Each object is contained in a layer - which is a custom group of objects that do not have a particular visual order, but can be treated as a set for certain commands. Objects which are created independently of other objects (such as straight tracks (<a href="cmdStraight.html#cmdStraight">Section 2.1.6</a>) or text (<a href="cmdText.html#cmdText">Section 2.3.9</a>)) are created in the current layer. Objects which are associated with other objects (such as tracks created by the <strong>Modify</strong> (<a href="cmdModify.html#cmdModify">Section 2.2.8</a>) or <strong>Join</strong> (<a href="cmdJoin.html#cmdJoin">Section 2.2.7</a>) commands) are created in the same layer as the associated object(s).
+</p>
+<p>
+The <strong>Layers</strong> dialog allows you to change various attributes of each of the 99 possible <strong>layers</strong>.
+</p>
+<p>
+Attributes associated with a layout are stored within the associated layout file and apply only to the layout that's open at the time of a change. It is possible to apply attributes from one layout file to another using the <strong>Load</strong> and <strong>Save</strong> buttons.
+</p>
+<p>
+<img src="png.d/dlayers.png">
+</p>
+<p>
+The drop down list at the top of the dialog selects the <strong>Layer</strong> you are interested in. Frozen layers are preceeded by a <code>*</code>, Module layers are proceeded by a <code>m</code>, non-empty layers are preceded by a <code>+</code> and empty layers by a <code>-</code>.
+</p>
+<p>
+The <strong>Name</strong> edit box contains the name of the <strong>Layer</strong>. This name is listed in the <strong>Current Layer</strong> drop down list on the <strong>Tool-bar</strong> (<a href="mainW.html#mainW">Section 3.1</a>). Also the <strong>Name</strong> is displayed as the balloon help for the corresponding <strong>Layer Button</strong>.
+</p>
+<p>
+The <strong>Color</strong> button specifies the color of tracks if either of the two <strong>Color Layers</strong> (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>) radio buttons on the <strong>Display</strong> dialog is checked and the <strong>Use Color</strong> button for this layer is checked.
+</p>
+<p>
+The <strong>Visible</strong> check-box controls whether the <strong>Layer</strong> is drawn on the Main (<a href="mainW.html#mainW">Section 3.1</a>) window.
+</p>
+<p>
+The <strong>Frozen</strong> check-box indicates that tracks in that <strong>Layer</strong> can not be modified or deleted.
+</p>
+<p>
+The <strong>On Map</strong> check-box controls whether the <strong>Layer</strong> is drawn on the Map (<a href="cmdMap.html#cmdMap">Section 3.2.2</a>) window.
+</p>
+<p>
+The <strong>Module</strong> check-box controls whether the <strong>Layer</strong> is selected/deselected and so moved or rotated as a group - this can be used to denote a track module in a modular layout - allowing the modules to be positioned as units. Objects in a Module Layer can not be individually modified. One way of getting a modules in is to build a library with <strong>Export</strong> and then <strong>Import As Module</strong> - this creates one layer per module, names it and sets the <strong>Module</strong> check-box.
+</p>
+<p>
+The <strong>No Button</strong> check-box selects if the <strong>Layer</strong> has a button to hide/show it. You may choose not to have a button if the layer is empty or if it is a sub-layer controlled by another layer.
+</p>
+<p>
+The <strong>Linked Layers</strong> text box can contain a semi-colon-delimited set of layer numbers that will be shown and hidden along with this layer when its show/hidden state is changed. A blank means no layers are linked. The layers can have buttons or not.
+</p>
+<p>
+You cannot uncheck <strong>Visible</strong> or check <strong>Frozen</strong> for the <strong>Current Layer</strong>.
+</p>
+<p>
+The <strong>Load Settings</strong> specifies a settings (.xset) filename in the XTrackCAD working directory that is loaded when this layer is made current. Only the values contained in the file will be set. If this name is blank the default values (all those in use when any layer that has no Load Settings file value was last used) will be reloaded (or retained). The dropbox contains all the names of files in that directory.
+</p>
+<p>
+The <strong>Count</strong> field displays the number of objects in the selected Layer.
+</p>
+<p>
+The <strong>Save</strong> button stores layer attributes in the <code>xtrkcad.ini</code> file so they may be loaded into an existing or new file. Once saved and unless reset to <em>XTrackCAD</em> <strong>Default</strong>, modified layer information is applied to each new file.
+</p>
+<p>
+The <strong>Load</strong> button reads layer attributes from the <code>xtrkcad.ini</code> file then applies it to each layer of the current layout file.
+</p>
+<p>
+The <strong>Defaults</strong> button restores layer attributes to default <em>XTrackCAD</em> settings.
+</p>
+<p>
+The bottom of the dialog contains the <strong>Number of Layer Buttons</strong> integer edit box. This controls the number of <strong>Layer Buttons</strong> displayed on the <strong>Tool-bar</strong> (<a href="mainW.html#mainW">Section 3.1</a>). These buttons make it easy to switch between layers. The maximum number of <strong>Layer Buttons</strong> that can be displayed is 99. Layers with "no-button" set do not count towards the Number of Layer Buttons.
+</p>
+<p>
+<img src="png.d/blayer.png">
+</p>
+<p>
+The <strong>Layer Buttons</strong> on the Tool-bar (<a href="mainW.html#mainW">Section 3.1</a>) control which layer is the <strong>current Layer</strong> and which <strong>Layers</strong> are displayed on the Main Canvas. These buttons are a short cut for the <strong>Visible</strong> check-box on the <strong>Layers</strong> dialog for the corresponding layer.
+</p>
+<p>
+The current layer is selected by picking a value from the drop down layer list. If the Layer you've selected was not visible, it will be shown.
+</p>
+<p>
+You can hide (or show if not visible) the different layers by pushing one of the <strong>Layer Buttons</strong> on the Tool-bar (if you have configured the tool-bar (<a href="toolbarM.html#toolbarM">Section 2.12.3</a>) to show the Layer buttons). If a layer is not visible then the corresponding layer button will be raised. The active or current layer cannot be hidden.
+</p>
+<p>
+The color of each layer button shows the color that will be used to draw tracks or draw objects in that layer, if you have selected the <strong>Color Layers</strong> (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>) on the <strong>Display</strong> dialog. The <strong>Use Color</strong> button allows this layer to opt in or out - which can be usefu if you want to color other layers but a layer contains pre-colored objects (like Structures or Scenery).
+</p>
+<p>
+Any selected objects are unselected when the Layer is set to not visible. If a layer is not visible, you cannot select objects in the Layer. It is as if the objects do not exist until you show the layer again.
+</p>
+<p>
+The <strong>Move To Current Layer</strong> command on Edit menu (<a href="editM.html#editM">Section 2.4</a>) will move all selected (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) tracks to the current Layer.
+</p>
+<p>
+Objects are drawn on the map window, if the Layer they are on has <strong>On Map</strong> checked.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Parts List </title>
+<link rel="previous" href="cmdLayer.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdPricelist.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdEnum"></a>2.9.6 <a name="i0"></a>Parts List <a name="i1"></a></h1>
+<p>
+The <strong>Parts List</strong> command produces a list of all selected (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) turnouts, sectional track and bench-work. It also computes total length of selected flex-track.
+</p>
+<p>
+If no objects are selected, all objects are enumerated.
+</p>
+<p>
+<img src="png.d/partslist.png">
+</p>
+<p>
+The <strong>Save As...</strong> button opens a <em>File Save</em> dialog window that's used to name and save the parts list to a file.
+</p>
+<p>
+The <strong>Print</strong> button opens the <em>Print</em> dialog which is used to facilitate printing of the parts list.
+</p>
+<p>
+The <strong>Close</strong> button terminates the <strong>Parts List</strong> command.
+</p>
+<p>
+The <strong>Parts List</strong> dialog will list pricing for selected objects if the <em>Prices</em> check box is checked. Prices are set using the Price List (<a href="cmdPricelist.html#cmdPricelist">Section 2.9.7</a>) dialog.
+</p>
+<p>
+The <strong>Parts List</strong> dialog will list the index numbers of each type of named track in a comma delimited list on a new line if the <em>Indexes</em> check box is checked. This list can be used in the Select By Index (<a href="cmdSelectIndex.html#cmdSelectIndex">Section 2.4.1</a>) command.
+</p>
+<p>
+Hint: you can use the <strong>Parts List</strong> command to measure the length of selected flex-track.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Price List</title>
+<link rel="previous" href="cmdEnum.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdTrain.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdPricelist"></a>2.9.7 <a name="i0"></a>Price List</h1>
+<p>
+The <strong>Price List</strong> dialog allows entry of prices for Turnouts, Sectional Track and Structures. Only those objects from loaded Parameter Files (<a href="cmdPrmfile.html#cmdPrmfile">Section 2.5.7</a>) or <em>Custom Designs</em> for the current Scale (<a href="cmdLayout.html#cmdLayout">Section 2.10.6</a>) are listed.
+</p>
+<p>
+<img src="png.d/pricelist.png">
+</p>
+<p>
+The price of a selected object can be changed in the <em>Cost</em> edit box that's located above the "Price" column.
+</p>
+<p>
+The price of a length of <em>Flex-Track</em> for the current Scale (<a href="cmdLayout.html#cmdLayout">Section 2.10.6</a>) is listed at the bottom of the dialog. You can specify the <em>Length</em> in <em>Inches</em> or <em>Centimeters</em>. To specify the price for other <em>Scales</em> change Scale (<a href="cmdLayout.html#cmdLayout">Section 2.10.6</a>) on the Layout (<a href="cmdLayout.html#cmdLayout">Section 2.10.6</a>) window.
+</p>
+<p>
+The Parts List (<a href="cmdEnum.html#cmdEnum">Section 2.9.6</a>) dialog lists prices for selected objects if the <em>Prices</em> check box on the dialog window is selected.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Train Mode </title>
+<link rel="previous" href="cmdPricelist.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdTurnoutNew.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdTrain"></a>2.9.8 <a name="i0"></a>Train Mode <a name="i1"></a></h1>
+<p>
+<img src="png.d/btrain.png"> The <strong>Train</strong> command lets you place and run Trains on the layout.
+</p>
+<p>
+<a name="i2"></a>During this command, the Tool Bar and Hot Bar are changed. Most of the Tool Bar buttons are replaced by the <em>Go/Stop</em> and <em>Exit</em> buttons. The <em>Go/Stop</em> button toggles between Pausing all Trains and allowing Trains to Run. The <em>Exit</em> button terminates the Train Simulation and returns to Layout Design mode. The Hot Bar becomes the <strong>Shelf</strong>.
+</p>
+<p>
+<img src="png.d/trainbar.png">
+</p>
+<p>
+
+</p>
+<dl><dt>
+<em>Selecting New Cars</em>
+</dt>
+<dd>
+The <strong>Shelf</strong> contains the Cars and Locomotives which have not been placed on the Layout. Cars are created and managed using the Car Inventory (<a href="cmdCarinv.html#cmdCarinv">Section 2.9.1</a>) dialog.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Each item on the <strong>Shelf</strong> can represent a group of Cars. Cars can be grouped by Prototype, Manufacturer and/or Part Number. They can also be listed as individual Car Items. This grouping is controlled by <em>Car Labels</em> Drop Down List on the Display (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>) dialog.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+To place a Car, select it from the <strong>Shelf</strong>. If the <strong>Shelf</strong> is displaying Cars in groups (and not as individual Car Items) then a Drop Down List is displayed on the Status Bar (<a href="mainW.html#mainW">Section 3.1</a>) containing the individual Car Items in that group.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+If you are not displaying the <strong>Shelf</strong>, then the <em>New Car</em> button (<img src="png.d/bnewcar.png">) will be shown on the Tool Bar. Pressing this button will display the Drop Down List on the Status Bar (<a href="mainW.html#mainW">Section 3.1</a>) containing all of your Car Items that have not yet been placed on the layout.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/trainsimulator.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/statusbartrain.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/carlist.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Placing Cars</em>
+</dt>
+<dd>
+Once you have selected a new Car, or have selected an existing Car on the Layout, you can position it by using the mouse to drag it around the Layout. If the Car is coupled to other Cars then the whole set of Cars is moved. If you place the Car on a Track, that Car (and the other coupled Cars) will be aligned along the track.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Note:</strong> If you move the tracks but not the cars (or vice-versa) using the Move (<a href="cmdMove.html#cmdMove">Section 2.2.9</a>) or Rotate (<a href="cmdRotate.html#cmdRotate">Section 2.2.15</a>) commands the cars will not remain attached to the tracks. If the cars are moved close to a track, then they will be aligned when the <em>Train Simulation</em> command is next invoked.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Coupling Cars</em>
+</dt>
+<dd>
+If a Car is moved along a track to another Car then the Cars will be coupled together.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Uncoupling Cars</em>
+</dt>
+<dd>
+To uncouple Cars, Right-Click between the Cars then select <em>Uncouple</em> from the pop-up menu.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/mtrainmanagement.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Change Train or Car Orientation</em>
+</dt>
+<dd>
+The orientation of a Train or Car can be reversed by Right-Click over the appropriate object then selecting either <em>Flip Train</em> or <em>Flip Car</em> from the pop-up menu.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Remove Train or Car From Layout</em>
+</dt>
+<dd>
+To remove a Train or Car from the layout, Right-Click over the appropriate object then select either <em>Remove Train</em> or <em>Remove Car</em> from the pop-up menu.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Change Reporting number of Car on Layout</em>
+</dt>
+<dd>
+To change the reporting number, Right-Click over the Car and then select <em>Describe</em> and update the field. This value will be shown in the car if Labels are shown and in the <em>Train Control</em> Window.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Trains</em>
+</dt>
+<dd>
+A Train consists of one or more Locomotives coupled to other Cars. One Locomotive will be the <em>MU Master</em> for the Train. The <em>MU Master</em> can be changed by Right-Clicking on a Locomotive and selecting <em>MU Master</em> from the pop-up menu. The <em>MU Master</em> is drawn with a solid Yellow head light indicating the direction is moving. If a Train is split by uncoupling between Locomotives, then two Trains will be created, each with their own <em>MU Master</em>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Train Control</em>
+</dt>
+<dd>
+<img src="png.d/trainctrl.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <em>Train Control</em> dialog is used to set the speed and direction of Trains. The dialog contains a list of Trains (listed by their <em>MU Master</em> Locomotive reporting number). Before each Train on the list is either a Red circle (indicating the Train is stopped) or a Green circle (indicating the Train is moving).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Any number of Trains can be running, although it might be difficult to keep track of more than a few.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+For the selected Train, the Train Control dialog lists
+<dl><dd>
+Train status: indicating that the Train is moving, is paused or the reason if the Train is stopped.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The position of the Train
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+A slider which controls the speed of the Train in Scale Miles-Per-Hour or Kilometers-Per-Hour.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The Odometer which measures the total distance travelled by the train, which can be reset by pressing the <em>0</em> button.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <em>Find</em> button which positions the Main Window (<a href="mainW.html#mainW">Section 3.1</a>) to show the Train. If the Trains on a track that's hidden and Hide Trains on Hidden Track (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>) is <em>Enabled</em> then the Train will be made visible until the next time it moves.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <em>Follow</em> toggle button which causes the Main Window (<a href="mainW.html#mainW">Section 3.1</a>) to follow the Train as it moves. The <em>Follow</em> toggle can only be set on one Train at a time, and it is cleared if you press the <em>Find</em> button or otherwise manually move the main canvas.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <em>Auto Reverse</em> toggle button which causes the Train to change direction when it hits the end of a track.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The Direction radio button group which controls the direction (<em>Forward</em> or <em>Reverse</em>) of the Train.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <em>Stop</em> button which sets the Trains speed to 0.
+</dd>
+</dl>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Train Operation</em>
+</dt>
+<dd>
+Once a Train is moving, it will continue to move until it is Stopped manually, hits the end of track or an open Turnout. If the Train 'runs into' other Cars, those Cars will be coupled to the Train. If Trains speed is faster than the Max Coupling Speed (<a href="cmdPref.html#cmdPref">Section 2.10.7</a>) then the Train will crash and must be manually moved back onto the track.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+If two Trains are coupled, one of the two <em>MU Masters</em> will be chosen as the <em>MU Master</em> for the combined Train.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The motion of all Trains can be Paused by clicking the <em>Go/Stop</em> button on the Main Window Tool Bar. Pressing the <em>Escape</em> key has the same effect as clicking on the <em>Stop</em> button. This allows you set Turnout positions or make other changes. When Train command starts, the <em>Go/Stop</em> button is in the <em>Stop</em> position and must be clicked before Trains move.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Turnouts and Turntables</em>
+</dt>
+<dd>
+Turnout positions are indicated by Red lines connecting the endpoints on the route through the Turnout. Trains will follow this route through the Turnout. If you <em>Shift+Left-Click</em> on the Turnout, the next position will used and Red line changed to indicate the new position.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Turntables can be turned by using <em>Shift+Left-Click</em> on the endpoint you want the Turntable bridge to move to. If you click on the Turntable where there is no endpoint, the Turntable will turn to the next endpoint beyond that point in the direction of the click relative to the nearest end of the turntable bridge. To turn the Turntable 180&#176;, <em>Shift+Left-Click</em> on the current endpoint again.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Turnout Designer</title>
+<link rel="previous" href="cmdTrain.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdRefreshSpecial.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdTurnoutNew"></a>2.9.9 <a name="i0"></a>Turnout Designer</h1>
+<p>
+The <strong>Turnout Designer</strong> allows you to define new turnouts and sectional track pieces.
+</p>
+<p>
+<img src="png.d/mmanageturnoutdesign.png">
+</p>
+<p>
+The Turnout Designer sub-menu is pictured above. As demonstrated by the sub-menu a number of different dialogs are available for creation of custom turnout and sectional track components. New turnouts and sectional track is added to Custom Management (<a href="cmdCustmgm.html#cmdCustmgm">Section 2.9.2</a>) and Turnout Manager (<a href="cmdNewFixedTrack.html#cmdNewFixedTrack">Section 2.1.8</a>) using the <strong>Turnout Designer</strong>.
+</p>
+<p>
+The follow dialog is for a regular turnout.
+</p>
+<p>
+<img src="png.d/turndes.png">
+</p>
+<p>
+Each dialog shows a diagram of the turnout and has fields to enter dimensions. The dimensions should be as accurate as possible. The various types of dimensions are:
+</p>
+<dl><dd>
+<strong>Length</strong> - measured from the base of the turnout to the centerline at the end of the turnout. Length is measured parallel to the centerline of the straight leg of the turnout. For track that ends on a curve (such as the curved leg of a regular turnout) measure the distance from the base to each rail and average the values.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Offset</strong> - measured from the centerline of the straight leg of the turnout to the centerline of the track at the end of the turnout.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Angle</strong> - angle at the end of turnout to the centerline of the straight leg of the turnout. This angle may not be the same as the <em>Frog</em> angle of the turnout if the rails curve past the <em>Frog</em>. The <strong>Frog Number|Degrees</strong> Radio button group controls whether the value is expressed in Frog Number or Degrees.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Manufacturer</strong> - name of the Manufacturer
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Description</strong> - description of the turnout including size and rail code number, e.g., 'Left Hand #4'. This information is shown when a place the mouse pointer over the respective symbol on th <strong>Tool-bar</strong>. Therefor it should be made sure that the data entered here are helpful in finding the correct turnout.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>#</strong> - part number, e.g., '999-123'.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Roadbed Width</strong> - if greater than the track gauge then lines are drawn along the edges of the turnout to represent the attached roadbed available on some types of sectional track and turnouts.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Line Width</strong> - the width of the roadbed lines, measured in pixels when the layout drawing scale (<a href="viewM.html#viewM">Section 2.12</a>) is 1:1.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Color</strong> - color of the roadbed lines.
+</dd>
+</dl>
+<p>
+
+</p>
+<p>
+The rail height (<em>Code</em>) can be added to the <strong>Manufacturer</strong>, e.g., Peco-55, or the <strong>Description</strong>, e.g., Medium Right, Code 55.
+</p>
+<p>
+The scale is the current scale from the <strong>Scale Drop Down List</strong> on the <strong>Layout</strong> dialog (<a href="cmdLayout.html#cmdLayout">Section 2.10.6</a>).
+</p>
+<p>
+<strong>Manufacturer</strong>, <strong>Description</strong> and <strong>Part Number (#)</strong> comprise the title of the turnout. These values are used in the <strong>Turnout Selection dialog</strong> (<a href="cmdNewFixedTrack.html#cmdNewFixedTrack">Section 2.1.8</a>) and the <strong>Parts List</strong> (<a href="cmdEnum.html#cmdEnum">Section 2.9.6</a>). For regular and curved turnouts there are separate <strong>Descriptions</strong> and <strong>Part Numbers</strong> for the right and left hand turnouts.
+</p>
+<p>
+The <strong>Print</strong> button prints a full size diagram of the turnout. You can use this to check your dimensions and make any required changes. You should expect to make several printouts as you refine your dimensions.
+</p>
+<p>
+The <strong>OK</strong> button completes the design. The new turnout is added to the list in the <strong>Turnout Selection</strong> dialog. The turnout data is saved in the <code>xtrkcad.cus</code> (<a href="directories.html#directories">Section 1.9</a>) file for the next time you use <em>XTrackCAD</em>. Please consider contributing this information for others to use via the on-line addresses. You can change the Parameters or Title of existing designs by using the <strong>Custom Management</strong> (<a href="cmdCustmgm.html#cmdCustmgm">Section 2.9.2</a>) dialog.
+</p>
+<p>
+The <strong>Cancel</strong> button removes the <strong>Turnout Designer</strong> dialog.
+</p>
+<p>
+<em>Creating Turnout Designs</em>
+</p>
+<ul><li>
+It is best to start by marking the endpoints of the turnout on a piece of paper. Extend the curved leg of the turnout (try attaching a straight sectional track) and measure the angle. Frog numbers are easiest to calculate.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Enter your data and press <strong>Print</strong>, if you have an accurate printer. Check the dimensions of the turnout against the printout and make adjustments as necessary. Concentrate on the lengths and offsets first, then adjust the angles.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The resulting turnout is an approximation. In particular the curves will not be correct, but this is not important for placing turnouts.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+The new <a name="i1"></a>Cornu Turnouts allow you to build turnouts that have curved ends. The dialogs include radius information that can be set to zero for a straight end. The turnouts will be composed of simple curves and tracks and when extended the end radius will be used.
+</li>
+<li>
+The Group (<a href="cmdGroup.html#cmdGroup">Section 2.9.4</a>) command can be used to add cosmetic details to <strong>Turnout</strong> definitions.
+</li>
+</ul>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Update Turnouts and Structures</title>
+<link rel="previous" href="cmdTurnoutNew.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdUngroup.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdRefreshSpecial"></a>2.9.10 <a name="i0"></a>Update Turnouts and Structures</h1>
+<p>
+This command updates (or refreshes) selected turnouts, sectional tracks and structures on your layout with the current definitions from the loaded parameter files (<a href="cmdPrmfile.html#cmdPrmfile">Section 2.5.7</a>). Each selected object that is found in a parameter file is updated with the current definition.
+</p>
+<p>
+If an object can be found and if a new track definition fits in the same footprint, (i.e., has the same number of endpoints and all the endpoints have the same position and angle) then a dialog is displayed which contains suitable definitions that you can choose from. You can <strong>Skip</strong> the current object or <strong>Cancel</strong> to skip all the remaining objects.
+</p>
+<p>
+Otherwise the update fails and must be done manually using <strong>Delete</strong> and <strong>Add</strong>.
+</p>
+<p>
+If an object has been updated then it is unselected, otherwise it will remain selected at the end of this command.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Ungroup</title>
+<link rel="previous" href="cmdRefreshSpecial.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="optionM.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdUngroup"></a>2.9.11 <a name="i0"></a>Ungroup</h1>
+<p>
+<strong>Ungroup</strong> allows existing definitions to be modified and the resulting objects recombined with the <strong>Group</strong> (<a href="cmdGroup.html#cmdGroup">Section 2.9.4</a>) command to update the definition. Turnouts are composed of individual straight and curved segments. Segments that form the points (<a href="generalTerms.html#generalTerms">Section B.2</a>) of the turnout remain combined as an <em>Ungrouped Turnout</em>, and the other segments are replaced by straight and curved tracks.
+</p>
+<p>
+One-ended Turnouts (AKA Bumpers) are converted to Staight tracks by <strong>Ungroup</strong>. These can be converted back to a Bumper by manually editting the <strong>Grouped</strong> definition and removing the unwanted End-Point by deleting the correspnding <strong>E</strong> line.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Options Menu</title>
+<link rel="previous" href="cmdUngroup.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdRgbcolor.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="optionM"></a>2.10 <a name="i0"></a>Options Menu</h1>
+<p>
+<img src="png.d/moptions.png">
+</p>
+<p>
+The <strong>Options Menu</strong> shows commands to change configuration options.
+</p>
+<dl><dd>
+<strong>Colors</strong> - Displays the Colors (<a href="cmdRgbcolor.html#cmdRgbcolor">Section 2.10.1</a>) dialog.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Command</strong> - Displays the Command Options (<a href="cmdCmdopt.html#cmdCmdopt">Section 2.10.2</a>) dialog.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Display</strong> - Displays the Display (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>) dialog.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Easement</strong> - Displays the easement (<a href="cmdEasement.html#cmdEasement">Section 2.10.4</a>) dialog which controls how easements (spiral transition curves) are used to join tracks.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Fonts</strong> - Displays the font selection (<a href="fontSelW.html#fontSelW">Section 2.10.5</a>) dialog which selects the font used by the text (<a href="cmdText.html#cmdText">Section 2.3.9</a>) command. This command is only available on UNIX based systems.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Layout</strong> - Displays the layout (<a href="cmdLayout.html#cmdLayout">Section 2.10.6</a>) dialog.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Preferences</strong> - Displays the Preferences (<a href="cmdPref.html#cmdPref">Section 2.10.7</a>) dialog.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Sticky</strong> - Displays the Sticky Commands (<a href="cmdSticky.html#cmdSticky">Section 2.10.8</a>) dialog.
+</dd>
+</dl>
+<hr>
+<ul>
+<li><a href="cmdRgbcolor.html#cmdRgbcolor">2.10.1 Colors Dialog</a></li>
+<li><a href="cmdCmdopt.html#cmdCmdopt">2.10.2 Command Option Dialog</a></li>
+<li><a href="cmdDisplay.html#cmdDisplay">2.10.3 Display Dialog</a></li>
+<li><a href="cmdEasement.html#cmdEasement">2.10.4 Easements</a></li>
+<ul>
+<li><a href="EasementsCornu.html#EasementsCornu">2.10.4.1 Cornu Easements</a></li>
+<li><a href="EasementsTraditional.html#EasementsTraditional">2.10.4.2 Easements with Fixed Sharpness</a></li>
+<li><a href="EasementsSectional.html#EasementsSectional">2.10.4.3 Easements and Sectional Track</a></li>
+</ul>
+<li><a href="fontSelW.html#fontSelW">2.10.5 Font Selection</a></li>
+<li><a href="cmdLayout.html#cmdLayout">2.10.6 Layout Dialog</a></li>
+<li><a href="cmdPref.html#cmdPref">2.10.7 Preferences Dialog</a></li>
+<li><a href="cmdSticky.html#cmdSticky">2.10.8 Sticky Dialog</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Colors Dialog</title>
+<link rel="previous" href="optionM.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdCmdopt.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdRgbcolor"></a>2.10.1 <a name="i0"></a>Colors Dialog</h1>
+<p>
+The <strong>Colors</strong> dialog is invoked from the Options (<a href="optionM.html#optionM">Section 2.10</a>) menu
+</p>
+<p>
+<img src="png.d/colorw.png">
+</p>
+<p>
+The <strong>Colors</strong> dialog controls the color that various objects are drawn.
+</p>
+<dl><dd>
+<strong>Border</strong> - Sets color of Rulers, Room Boundaries and Table Edges.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Exception Track</strong> - Sets color of <em>Exceptional Tracks</em> (<a href="cmdLayout.html#cmdLayout">Section 2.10.6</a>). Those which exceed the specified grade or are have a radius smaller than the minimum set.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Marker</strong> - Sets color of short lines drawn on the Ruler of the Main (<a href="mainW.html#mainW">Section 3.1</a>) window to indicate cursor position.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Normal Tracks</strong> - Sets color of normal track.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Primary Axis</strong> - Sets color of the large cross displayed when positioning the <strong>Snap Grid</strong> (<a href="cmdGrid.html#cmdGrid">Section 2.12.2</a>) or the <strong>Print Grid</strong> (<a href="cmdPrint.html#cmdPrint">Section 2.5.9</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Profile Path</strong> - color of the path when using the <strong>Profile</strong> (<a href="cmdProfile.html#cmdProfile">Section 2.2.12</a>) command.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Secondary Axis</strong> - Sets color of the large cross displayed when positioning the <strong>Snap Grid</strong> (<a href="cmdGrid.html#cmdGrid">Section 2.12.2</a>) or the <strong>Print Grid</strong> (<a href="cmdPrint.html#cmdPrint">Section 2.5.9</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Selected Tracks</strong> - Sets color of Selected track.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Snap Grid</strong> - the Grid displayed by the <strong>Snap Grid</strong> (<a href="cmdGrid.html#cmdGrid">Section 2.12.2</a>) dialog.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Track Ties</strong> - color of ties (if drawn).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Bridge Base</strong> - color of Bridge fill between the parapets.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Track Roadbed</strong> - color of Roadbed fill under the track.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Command Option Dialog</title>
+<link rel="previous" href="cmdRgbcolor.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDisplay.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdCmdopt"></a>2.10.2 <a name="i0"></a>Command Option Dialog</h1>
+<p>
+The <strong>Command Option</strong> dialog is invoked from the Options (<a href="optionM.html#optionM">Section 2.10</a>) menu
+</p>
+<p>
+<img src="png.d/cmdopt.png">
+</p>
+<p>
+The <strong>Command Option</strong> dialog contains items which control the behavior of some commands.
+</p>
+<dl><dd>
+<strong>Default Command</strong> - selects the <strong>Properties</strong> (<a href="cmdDescribe.html#cmdDescribe">Section 2.2.13</a>) or <strong>Select</strong> (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) as the default command which is invoked when any other command (if not <strong>Sticky</strong> (<a href="cmdSticky.html#cmdSticky">Section 2.10.8</a>)) is canceled or completed.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Right-Click</em> - will either display a pop-up menu of available commands or command-specific options depending on whether the <em>Shift</em> key is being held down or not. This option allows you to choose which operation occurs.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Select-Mode</em> - will either (a) only select the current item unless Ctrl is added or (b) will add the current item to the selection unless Ctrl is added in which case it will only select this item.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Select-Zero</em> - if selected will perform <strong>Deselect All</strong> if the selection is not on an object.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Display Dialog</title>
+<link rel="previous" href="cmdCmdopt.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdEasement.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDisplay"></a>2.10.3 <a name="i0"></a>Display Dialog</h1>
+<p>
+The <strong>Display</strong> dialog is invoked from the Options (<a href="optionM.html#optionM">Section 2.10</a>) menu
+</p>
+<p>
+<img src="png.d/displayopt.png">
+</p>
+<p>
+The <strong>Display</strong> dialog contains items which control the display of objects on the Main window.
+</p>
+<dl><dd>
+<strong>Auto Pan</strong> - if enabled, dragging near the edge of the Main Canvas (<a href="mainW.html#mainW">Section 3.1</a>) will cause the canvas to move to follow the mouse.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Car Labels</strong> - controls the grouping and display of <strong>Cars</strong> on the <strong>Hot Bar</strong> (<a href="cmdHotBar.html#cmdHotBar">Section 2.7</a>) during the <strong>Train</strong> (<a href="cmdTrain.html#cmdTrain">Section 2.9.8</a>) command. This can be a combination of <strong>Prototype</strong>, <strong>Manufacturer</strong>, <strong>Part Number</strong> and <strong>Item</strong>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Color Tracks</strong> - when set to layers, tracks are drawn with color of the layer (<a href="cmdLayer.html#cmdLayer">Section 2.9.5</a>) they belong to and not the normal track color. This can be disabled in the Layer dialog for each Layer by unchecking the <strong>Use Color</strong> checkbox.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Color Draws</strong> - when set to layers, non-tracks (lines, table edges and structures) are drawn with color of the layer (<a href="cmdLayer.html#cmdLayer">Section 2.9.5</a>) they belong to rather than based on thier own object setting. This can be disabled in the Layer dialog for each Layer by unchecking the <strong>Use Color</strong> checkbox.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Constrain Drawing Area to Room Boundaries</strong> - when Zooming and moving the Main Canvas (<a href="mainW.html#mainW">Section 3.1</a>) may show areas beyond the boundaries of the room. Setting this option constrains the Main Canvas to minimize these areas (the <strong>grey</strong> area).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Dont Hide System Cursor</strong> - when XTrackCAD substitutes a specialized cursor to show actions that will occur (or are occuring) it will normallly hide the System Cursor. This option suppresses this behaviour and leaves the system cursor in place.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Draw EndPts</strong> - when to draw endpoints between connected track: never, only for turnouts or for all tracks.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Draw Unconnected EndPts</strong> - how to draw unconnected endpoints; normally, with a thick line or with a thick line in the exception color.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Draw Ties</strong> - how to draw ties under the rails when the drawing Scale is smaller than half of the <strong>Two Rail Scale</strong>. Note that <a href="cmdTies.html#cmdTies">Section 2.4.6</a> can be used to hide ties for selected tracks.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Draw Centers</strong> - enable or disable drawing of center markings (ie. crosshairs) for curved track.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Draw Tunnel</strong> - how to draw hidden tracks (<a href="cmdTunnel.html#cmdTunnel">Section 2.4.5</a>), either not at all, as dashed lines or as normal solid lines (which might be faster).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Hide Trains On Hidden Track</strong> - controls whether trains (<a href="cmdTrain.html#cmdTrain">Section 2.9.8</a>) on invisible layers (<a href="cmdLayer.html#cmdLayer">Section 2.9.5</a>) or hidden tracks (<a href="cmdTunnel.html#cmdTunnel">Section 2.4.5</a>) (if hidden tracks are not drawn) are displayed.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Hot Bar Labels</strong> - controls the format of titles for objects on the <strong>Hot Bar</strong> (<a href="cmdHotBar.html#cmdHotBar">Section 2.7</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Label Enable</strong> - individual control over whether to display various types of labels. You may want to turn some of these off if your layout is too cluttered.
+<p>
+
+</p>
+<ul><li>
+<em>Cars</em> - Reporting mark labels on cars - the content shown on the Cars label is either the Repmarks (if the Rep Number is set), or the car index number (with a "#" before it). See the Car Part dialog <a href="carpart.html#carpart">Section 2.9.1.2</a>.
+</li>
+<li>
+<em>EndPt Elevations</em> - Elevation markers attached to endpoints.
+</li>
+<li>
+<em>Lengths</em> - Length of flex-track attached to ends of turnouts all the way to the next turnout.
+</li>
+<li>
+<em>Track Descriptions</em> - Title of each turnout and sectional track, optional details of each piece of Flexible Track. These can be shown or hidden using the Move Description <a href="cmdMoveLabel.html#cmdMoveLabel">Section 2.2.10</a> command.
+</li>
+<li>
+<em>Track Elevations</em> - Computed elevations at the center of each track.
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Label Font Size</strong> - controls font size for Labels on layout.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Layout Labels</strong> - controls the format of titles for Turnouts and Structures displayed on the Layout.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Label Scale</strong> - the program will draw labels only when the drawing Scale is smaller or equal to this value.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>List Labels</strong> - controls the format of titles for turnouts and structures displayed in lists (such as the <strong>Parts List</strong> (<a href="cmdEnum.html#cmdEnum">Section 2.9.6</a>)).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Live Map</strong> - if checked then the Main Window (<a href="mainW.html#mainW">Section 3.1</a>) will be updated as you drag on the <strong>Map Window</strong> (<a href="cmdMap.html#cmdMap">Section 3.2.2</a>). Note that this can be slow.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Map Scale</strong> - scale of the Map (<a href="cmdMap.html#cmdMap">Section 3.2.2</a>) window. Increase this value to make the <strong>Map</strong> window smaller when working with large layouts. <strong>Note:</strong> you cannot make the <strong>Map</strong> window larger than the screen.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Train Update Delay</strong> - number of milliseconds between updates in the <strong>Train Simulation</strong> (<a href="cmdTrain.html#cmdTrain">Section 2.9.8</a>) mode. A lower value will generate a smoother display but reduces system responsiveness.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Two Rail Scale</strong> - draw tracks using two lines when the drawing Scale is smaller than this value.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Easements</title>
+<link rel="previous" href="cmdDisplay.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="EasementsCornu.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdEasement"></a>2.10.4 <a name="i0"></a>Easements</h1>
+<p>
+Easements are special sections of gradually curving track used to connect straight and curved tracks (or two curved tracks). Easements reduce the effects of sudden changes in track curves which can cause jerky motion and derailments.
+</p>
+<p>
+Easements can be created every time you <strong>Join</strong> (<a href="cmdJoin.html#cmdJoin">Section 2.2.7</a>) tracks, <strong>Extend</strong> (<a href="extendTrack.html#extendTrack">Section 2.2.8.6</a>) a track or create a <strong>Tangent</strong> (<a href="createTangent.html#createTangent">Section 2.2.8.4</a>) track.
+</p>
+<p>
+When using easements, an error message will be generated if tracks have a radius that is too small or are too short for the transition curve.
+</p>
+<p>
+The <strong>Easement</strong> dialog is invoked from the Options (<a href="optionM.html#optionM">Section 2.10</a>) menu.
+</p>
+<dl><dd>
+<img src="png.d/easew.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Value</strong> - allows fine tuning of the easement parameters (restricted to values &gt;= 0.5).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>R</strong> - minimum radius of the curved track.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>X</strong> - offset between a straight and curved track.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>L</strong> - length of the transition track.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Radio button group with <strong>None</strong>, <strong>Sharp</strong>, <strong>Normal</strong>, <strong>Broad</strong> and <strong>Cornu</strong>. Corresponding <strong>Value</strong>s for these buttons are 0, 0.5, 1.0, 2.0 and -1.0. Select <strong>None</strong> to turn easements off.
+</dd>
+</dl>
+<p>
+For traditional fixed sharpness easements see <a href="EasementsTraditional.html#EasementsTraditional">section 2.10.4.2</a>, for Cornu Easements see <a href="EasementsCornu.html#EasementsCornu">section 2.10.4.1</a>.
+</p>
+<ul>
+<li><a href="EasementsCornu.html#EasementsCornu">2.10.4.1 Cornu Easements</a></li>
+<li><a href="EasementsTraditional.html#EasementsTraditional">2.10.4.2 Easements with Fixed Sharpness</a></li>
+<li><a href="EasementsSectional.html#EasementsSectional">2.10.4.3 Easements and Sectional Track</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cornu Easements</title>
+<link rel="previous" href="cmdEasement.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="EasementsTraditional.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="EasementsCornu"></a>2.10.4.1 <a name="i0"></a>Cornu Easements</h1>
+<p>
+The Cornu Easements work in a different way to the other easements. They use all the space available to minimize sharpness, so you can control the sharpness for each curve you draw by the distance apart, radius and angle of the two end points.
+</p>
+<p>
+The Cornu is a mathematical curve that has the property that the curvature (inverse of the radius) varies linearly along its length. Using an open-source Cornu library written by Dr Raph Levin, we can calculate an Cornu easment to suit the end conditions of radius, curve center, angle and position. A Cornu easement can be constructed between two tracks by using the values of these parameters.
+</p>
+<p>
+To draw an cornu easement see <a href="joinCornu.html#joinCornu">section 2.2.7.4</a>, to Modify it afterwards see <a href="chgCornu.html#chgCornu">section 2.2.8.8</a>.
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Easements with Fixed Sharpness</title>
+<link rel="previous" href="EasementsCornu.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="EasementsSectional.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="EasementsTraditional"></a>2.10.4.2 <a name="i0"></a>Easements with Fixed Sharpness</h1>
+<p>
+The values <strong>R</strong>, <strong>X</strong> and <strong>L</strong> are read-only. They are set using the radio buttons or the <strong>Value</strong> field which can be set to 0 (No Easment) or between 0.21 (sharpest Easement) 100 (broadest Easment).
+</p>
+<p>
+These values indicate the worst case of joining a straight track with a curve of radius <strong>R</strong>. The two tracks are separated by the offset <strong>X</strong> while the easement curve extends for <strong>L/2</strong> inches or centimeters to each side of the endpoints.
+</p>
+<p>
+The formula used to draw non-Cornu easements is:
+</p>
+<pre><code> x = l * l * l / (6 * <b>R</b> * <b>L</b>)
+ r = <b>L</b> * <b>R</b>/l
+</code></pre>
+<p>
+where
+</p>
+<ul><li>
+<strong>l</strong> is the distance along the tangent to the easement.
+</li>
+<li>
+<strong>R</strong> is the final radius of the easement.
+</li>
+<li>
+<strong>L</strong> is the total length of the easement along the tangent.
+</li>
+<li>
+<strong>x</strong> is the offset from the tangent at <strong>l</strong>.
+</li>
+<li>
+<strong>r</strong> is the radius of easement curve at <strong>l</strong>.
+</li>
+</ul>
+<p>
+The Easement Button (<img src="png.d/beasement.png">) on the Main Window (<a href="mainW.html#mainW">Section 3.1</a>) changes its label to indicate the current easement value.
+</p>
+<p>
+The following diagrams illustrates the <strong>R</strong>, <strong>X</strong> and <strong>L</strong> values and the resulting easement curve.
+</p>
+<p>
+<img src="png.d/easeex1.png">
+</p>
+<p>
+<img src="png.d/easeex2.png">
+</p>
+<p>
+If curves with a radius larger than <strong>R</strong> or two curves (that bend in the same direction) are being connecting then the easement curve will be shorter and the offset smaller. If the computed offset is small then no easement is generated.
+</p>
+<p>
+A curved track that bends in one direction and then bends in the opposite direction is an <em>S-curve</em>. This will generate the worst case easement which is two easement curves placed end to end.
+</p>
+<p>
+Refer to instruction in <a href="EasementsSectional.html#EasementsSectional">section 2.10.4.3</a> when using sectional track.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Easements and Sectional Track</title>
+<link rel="previous" href="EasementsTraditional.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="fontSelW.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="EasementsSectional"></a>2.10.4.3 <a name="i0"></a>Easements and Sectional Track</h1>
+<p>
+Easements require the possibility of creating track with arbitrary radii. Therefore easements are not possible if sectional track is used. It is best to turn <strong>Easements</strong> off when using sectional track.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Font Selection</title>
+<link rel="previous" href="EasementsSectional.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdLayout.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="fontSelW"></a>2.10.5 <a name="i0"></a>Font Selection</h1>
+<p>
+The font selection dialog allows selection of the font used by the text (<a href="cmdText.html#cmdText">Section 2.3.9</a>) command. This command is valid only on UNIX based systems.
+</p>
+<p>
+<img src="png.d/fonts.png">
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Layout Dialog</title>
+<link rel="previous" href="fontSelW.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdPref.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdLayout"></a>2.10.6 <a name="i0"></a>Layout Dialog</h1>
+<p>
+The <strong>Layout Options</strong> dialog, displayed by the Options (<a href="optionM.html#optionM">Section 2.10</a>) or the File (<a href="fileM.html#fileM">Section 2.5</a> menu, contains items controlling the current layout.
+</p>
+<dl><dd>
+<img src="png.d/layout.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Gauge</strong> - Drop down menu used to select track gauge.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Height</strong> - Height of layout drawing which, depending on the <strong>Unit</strong> setting (English or Metric) established in the <strong>Preferences</strong> dialog (<a href="cmdPref.html#cmdPref">Section 2.10.7</a>), is measured in inches or centimeters.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Room Width</strong> - Width of layout drawing which, depending on the <strong>Unit</strong> setting (English or Metric) established in the <strong>Preferences</strong> dialog (<a href="cmdPref.html#cmdPref">Section 2.10.7</a>), is measured in inches or centimeters.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Scale</strong> - Drop down menu used to select track scale.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Title</strong> - Two lines that can be used to enter title and subtitle descriptions for the layout. Information entered in these fields will be shown on any printout of your layout design.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Maximum Track Grade</strong> - Specifies maximum track elevation expressed as a percent (%). Tracks with a larger elevation are considered exceptional and drawn in the exception (<a href="cmdRgbcolor.html#cmdRgbcolor">Section 2.10.1</a>) color.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Minimum Track Radius</strong> - Specifies minimum track radius (in inches or centimeters). Curved tracks with a smaller radius are considered exceptional and drawn in the exception (<a href="cmdRgbcolor.html#cmdRgbcolor">Section 2.10.1</a>) color.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Background File Name</strong> - The last 40 characters of the full file pathname for the image used for a temporary background behind all the drawn objects. It is set using the <strong>Browse</strong> and reset with the <strong>Clear</strong> buttons. It is also cleared along with all the other background values after a <strong>Open</strong> or <strong>New</strong> command. The file is initally specified to be in the local file system. In order to send it along with the layout, use <strong>Save As</strong> command and specify the <a name="i1"></a>Archive Archive format (*.xtce). This will create a single zipped package file containing the layout and the image file which can be sent and will open on a different system. If this has been done, after <strong>Open</strong> of the archive, the image file path will point into the extracted archive file directory. It can be changed to a new local file and the next <strong>Save</strong> will rebuild the package using the new image file instead of the old one.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Background Pos X, Y</strong> - The offset of the bottom left corner of the background image from the origin (in inches or centimeters) after rotation.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Background Size</strong> - The model size (in inches or cm) to scale the base of the background image to (measured from bottom left to bottom right as displayed after any rotation has been applied). Note - A value of 0.0 means that no scaling is applied and the image is shown at its current size in pixels regardless of scale or zoom.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Background Screen</strong> - The amount of screening (from 0 to 100%) to apply to the background image. Screening allows objects drawn over the image to be seen more clearly. 0 means no screening, while 100% means noting will be shown.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Background Angle</strong> - The rotation angle to apply to the background image (in degrees) about its center before it is moved so that its bottom left corner is offset by the <strong>Background Pos</strong> setting.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Preferences Dialog</title>
+<link rel="previous" href="cmdLayout.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdSticky.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdPref"></a>2.10.7 <a name="i0"></a>Preferences Dialog</h1>
+<p>
+This dialog controls some parameters which likely will not be changed frequently.
+</p>
+<dl><dd>
+<img src="png.d/pref.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Angles</strong> - controls the angle system. <strong>Polar</strong>: 0&#176; is up and angles are measured clockwise, or <strong>Cartesian</strong>: 0&#176; is to the right and angles are measured counter-clockwise.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>AutoSave</strong> <a name="i1"></a>AutoSave - specifies the number of Check Points taken before an AutoSave. The same number of checkpoints are retained in a circular archive set in the (<a href="workDir.html#workDir">Section 1.9.3</a>) named for the layout file. Setting this value to 0 disables AutoSave.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Balloon Help</strong> - disables the display of <strong>Balloon Help</strong> (<a href="windowTerms.html#windowTerms">Section B.1</a>) which usually is shown when the cursor is placed over a control.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Show Flex-track</strong> - disables the display or <strong>Flex-track</strong> (<a href="generalTerms.html#generalTerms">Section B.2</a>) which is shown on the left of the Toolbar.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Check Point</strong> <a name="i2"></a>AutoSave - specifies the Check Point frequency; the number of modifications made to the layout since the last save. The layout is automatically saved to the Check Point file (<a href="workDir.html#workDir">Section 1.9.3</a>) when the Check Point frequency is reached. Setting this value to 0 disables use of the Checkpoint file <em>and AutoSave</em>. Upon restart, if the program was not saved normally, the user will be prompted to see if they want to resume at the last checkpoint.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Connection Angle</strong> - as below for Connection Distance for the angle between endpoints.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Connection Distance</strong> - the maximum distance between endpoints that can be connected. This affects the <strong>Join</strong> (<a href="cmdJoin.html#cmdJoin">Section 2.2.7</a>) command and auto-connection during <strong>Parallel</strong> (<a href="cmdParallel.html#cmdParallel">Section 2.1.5</a>) commands and placing <strong>Turnouts</strong> (<a href="cmdHotBar.html#cmdHotBar">Section 2.7</a>). The default value for this field is 0.100 inches or 0.254 CM. Changing this value is not recommended.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Drag Distance</strong> - controls how far you can move the cursor (in pixels) before <em>XTrackCAD</em> considers the action to be a drag instead of a click.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Drag Timeout</strong> - controls how long you can hold a mouse button down (in milliseconds) before <em>XTrackCAD</em> considers the action to be a drag instead of a click.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Length Format</strong> - controls how lengths are displayed. Combinations of feet and inches (or meters, centimeters and millimeters) with support for decimal or fractional measures. <strong>Note:</strong> lengths can be entered in any format and are converted on entry.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Max Coupling Speed</strong> - trains (<a href="cmdTrain.html#cmdTrain">Section 2.9.8</a>) moving faster than this speed will crash when running into other trains or hitting the end of a track or an open turnout. Crashed trains must be manually moved back onto the track.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Min Grid Spacing</strong> - minimum distance between <strong>Grid</strong> (<a href="cmdGrid.html#cmdGrid">Section 2.12.2</a>) lines (in pixels). If the grid lines are closer then drawing them is suppressed.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Min Track Length</strong> - specifies the minimum length of a track. Shorter tracks will not be created.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>On Program Startup</strong> - if set to &#8216;Load Last Layout&#8217;, <em>XTrackCAD</em> will automatically re-open the layout file that was open when <em>XTrackCAD</em> last closed. Selecting &#8216;Start New Layout&#8217; opens a blank layout canvas.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Turntable Angle</strong> - minimum angle between adjacent tracks connected to a <strong>Turntable</strong> (<a href="cmdTurntable.html#cmdTurntable">Section 2.1.9</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Units</strong> - choose between English (inches) or Metric (centimeters) measurements.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Write Settings</strong> - Save the current settings to a named settings file
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Read Settings</strong> - Load settings from a named settings file
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Sticky Dialog</title>
+<link rel="previous" href="cmdPref.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdStatusbar.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdSticky"></a>2.10.8 <a name="i0"></a>Sticky Dialog</h1>
+<p>
+By default, when commands complete, the defined <strong>Default Command</strong> (<a href="cmdCmdopt.html#cmdCmdopt">Section 2.10.2</a>) becomes active. If a command is <strong>sticky</strong>, the defined <strong>Default Command</strong> is ignored and the current command remains active after completion.
+</p>
+<p>
+The <strong>Sticky</strong> dialog controls which commands remain active after completion.
+</p>
+<p>
+<img src="png.d/sticky.png">
+</p>
+<p>
+Selecting a command makes it <strong>sticky</strong>. Un-selecting a command causes the defined <strong>Default Command</strong> to become active after command completion.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Status Bar</title>
+<link rel="previous" href="cmdSticky.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="viewM.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdStatusbar"></a>2.11 Status Bar</h1>
+<p>
+The <em>Status Bar</em> contains fields that can be modified depending on command:
+</p>
+<dl><dd>
+The Line Width and Color for <em>Straight Line</em>, <em>Curved Line</em>, <em>Circle</em>, <em>Polygon</em>, <em>Box</em> or <em>PolyLine</em> objects. The Line Width is specified in pixels for the current Drawing Scale. Zooming (<a href="viewM.html#viewM">Section 2.12</a>) in or out causes the lines to be drawn wider or narrower.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The Color for <em>Filled Circles</em> or <em>Polygons</em>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The size of a <em>Dimension Line</em> (<em>Tiny</em>, <em>Small</em>, <em>Medium</em> or <em>Large</em>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The type, size and orientation of lumber used for <em>Bench-work</em> (regular rectangular, L-Girder or T-Girder).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The seperation and radius factor for Parallel commands
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The diameter of a Turntable
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+After and add or during a Modify of a Draw object or segment, length, radius and/or relative angles are shown in modifiable fields. These will change the dimensions of the last object when <strong>Enter</strong> or <strong>Tab</strong> is pressed or the cursor leaves the entry field.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>View Menu</title>
+<link rel="previous" href="cmdStatusbar.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdMagneticSnap.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="viewM"></a>2.12 <a name="i0"></a>View Menu</h1>
+<p>
+<img src="png.d/mview.png">
+</p>
+<p>
+The <strong>View Menu</strong> shows commands affecting the display of the <strong>Main Canvas</strong> (<a href="mainW.html#mainW">Section 3.1</a>).
+</p>
+<dl><dd>
+<strong>Change Grid</strong> - Displays the <strong>Snap Grid</strong> dialog. The <strong>Snap Grid</strong> forces the cursor (for some commands) to be on a grid to control track placement.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Enable SnapGrid</strong> - Enables (or disables) the <strong>Snap Grid</strong> (<a href="cmdGrid.html#cmdGrid">Section 2.12.2</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Redraw</strong> - Redraws the <strong>Main Canvas</strong>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Redraw All</strong> - Redraws the <strong>Main Canvas</strong> and the <strong>Map Window</strong> (<a href="cmdMap.html#cmdMap">Section 3.2.2</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Show Snap-Grid</strong> - <a name="i1"></a> Toggles display of the <strong>Snap Grid</strong> on and off.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Magnetic Snap On/Off</strong> - Toggles <a name="i2"></a>Magnetic Snap (<a href="cmdMagneticSnap.html#cmdMagneticSnap">Section 2.12.1</a>) for Add Operations on and off. The magnets make tracks auto-align and shapes touch when the cursor or object is close. They can be defeated on each operation by holding down <em>Alt</em>. If the Magnets are off, holding down <em>Alt</em> will enable them.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/bmap.png"> <strong> Show/Hide Map</strong> - Toggles display of the <strong>Map Window</strong> <a name="i3"></a> on and off.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Tool-bar</strong> - Command button groups displayed on the <strong>Tool-bar</strong> are selected using the Tool-bar Configuration Menu (<a href="toolbarM.html#toolbarM">Section 2.12.3</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Pan/Zoom</strong> - move or resize the viewport using the mouse (<a href="cmdPan.html#cmdPan">Section 2.2.11</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/mzoomscale.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Zoom</strong> - This sub-menu is used to select a specific drawing scale ratio for the <strong>Main Canvas</strong>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Zoom In</strong> - Increases magnification of the <strong>Main Canvas</strong>.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Zoom Out</strong> - Decreases magnification of the <strong>Main Canvas</strong>.
+</dd>
+</dl>
+<p>
+
+</p>
+<p>
+When zooming in or out, the corresponding highlighted area of the <strong>Map Window</strong> (<a href="cmdMap.html#cmdMap">Section 3.2.2</a>) changes size to match that which appears on the <strong>Main Canvas</strong> (<a href="mainW.html#mainW">Section 3.1</a>).
+</p>
+<hr>
+<ul>
+<li><a href="cmdMagneticSnap.html#cmdMagneticSnap">2.12.1 Magnetic Snap</a></li>
+<li><a href="cmdGrid.html#cmdGrid">2.12.2 Grid Dialog</a></li>
+<li><a href="toolbarM.html#toolbarM">2.12.3 </a></li>
+<li><a href="cmdZoom.html#cmdZoom">2.12.4 Zoom</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Magnetic Snap</title>
+<link rel="previous" href="viewM.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdGrid.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdMagneticSnap"></a>2.12.1 Magnetic Snap</h1>
+<p>
+The <strong>MagneticSnap</strong> feature eases constructing and assembling Tracks and Draw objects by "snapping" the end of new objects to existing objects. For existing track objects the point snapped to is always an open end point. The snap operates when "close" to the object (a few pixels distant) and an anchor point (a blue circle) is displayed when this will occur if the mouse is clicked.
+</p>
+<p>
+ When Adding Draw line objects, the snap point is the nearest point on the existing object. A snap to the end of a line object can be selected by positioning the cursor close to the end of the line but off it, in the direction of the line. This will ensure the closest point is the end.
+</p>
+<p>
+ The <strong>MagneticSnap</strong> feature is enabled and disabled using either the magnet icon which is part of the <strong>SnapGrid</strong> Toolbar button set, or using the View (<a href="viewM.html#viewM">Section 2.12</a>) menu.
+</p>
+<p>
+For each part of an Add or Move or Rotate operation, the current state of <strong>MagneticSnap</strong> can be temporarily inverted using the <strong>Alt</strong> key. This enables snapping to be inhibited for a single part of an operation (or conversely enabled for just one part).
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Grid Dialog</title>
+<link rel="previous" href="cmdMagneticSnap.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="toolbarM.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdGrid"></a>2.12.2 <a name="i0"></a>Grid Dialog</h1>
+<p>
+The <strong>Grid</strong> dialog, displayed by <strong>Change Grid</strong> on the View (<a href="viewM.html#viewM">Section 2.12</a>) menu, specifies the origin, angle and other parameters of the Snap Grid. The Snap Grid can sbe used to snap the position of the cursor during the <strong>Curve</strong> (<a href="cmdCurve.html#cmdCurve">Section 2.1.2</a>), <strong>Circle</strong> (<a href="cmdCircle.html#cmdCircle">Section 2.1.1</a>), <strong>Cornu</strong> (<a href="cmdCornu.html#cmdCornu">Section 2.1.2.6</a>), <strong>Modify</strong> (<a href="cmdModify.html#cmdModify">Section 2.2.8</a>), <strong>Straight</strong> (<a href="cmdStraight.html#cmdStraight">Section 2.1.6</a>), <strong>Draw</strong> (<a href="cmdDraw.html#cmdDraw">Section 2.3</a>) and <strong>Turntable</strong> (<a href="cmdTurntable.html#cmdTurntable">Section 2.1.9</a>) commands.
+</p>
+<p>
+<img src="png.d/grid.png">
+</p>
+<p>
+The <strong>Grid</strong> dialog contains controls affecting the horizontal and vertical snap grid lines. Each dimension can be independently controlled.
+</p>
+<dl><dd>
+The <strong>Spacing</strong> value specifies the distance between major grid lines, which are drawn as solid lines on the layout. The value of the distance is entered in either inches or centimeters depending on the value of the <strong>Units</strong> setting in Options-&gt;Preferencecs (<a href="cmdPref.html#cmdPref">Section 2.10.7</a>) menu.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <strong>Divisions</strong> value adds the minor Grid lines between the major Grid lines, which are drawn as a series of dots on the layout. Specifying a value of 0 or 1 as the division value removes the minor grid lines.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The Grid can be enabled or disabled in each dimension via the <strong>Enable</strong> check box. The action of snapping is secondary to <strong>Magnetic Snap</strong> if enabled, and is suppressed if <strong>Alt</strong> is held.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <strong>X</strong> and <strong>Y</strong> coordinates relate to the anchor point of the X and Y Axis. Default values for <strong>X</strong> and <strong>Y</strong> are zero (0). Entering a value of one for <strong>X</strong> causes the Main grid line on the Drawing Canvas to shift left one unit. Entering a value of two causes the Main grid line to shift by two units and so on. The <strong>Y</strong> axis is affected in the similar manner except the grid moves down rather than left.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Negative values can be used for X and Y values. Using such cause the Main Grid to shift right for the X Axis and up for the Y Axis.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The A coordinate relates to the Angle of grid rotation. The default value for this coordinate is zero. Entering a value greater than 0 and less than 90 will cause the Main Grid to rotate clockwise by the number of degrees entered. Entering a negative value causes the grid to rotate counter-clockwise.
+</dd>
+</dl>
+<p>
+The origin and angle of the Grid can be adjusted directly or by dragging on the layout. <em>Left+Drag</em> moves the origin of the Grid, and <em>Right+Drag</em> rotates the grid. <em>Shift+Right-Click</em> (<a href="cmdAcclKeys.html#cmdAcclKeys">Section 3.4</a>) displays a pop-up menu allowing rotation of the grid by various predefined angles.
+</p>
+<p>
+Whether the Snap Grid is drawn is controlled by the <strong>Show</strong> check-box. Also, if the layout is Zoomed Out (<a href="cmdZoom.html#cmdZoom">Section 2.12.4</a>) the minor and major grid lines may be too close together to be drawn. The minimum pixel distance between grid lines is controlled by the <strong>Min Grid Spacing</strong> value on the <strong>Preferences</strong> (<a href="cmdPref.html#cmdPref">Section 2.10.7</a>) dialog.
+</p>
+<p>
+<strong>Note:</strong> on slow machines drawing the Grid can take noticeable time. Performance can be improved by selecting a larger value for <strong>Min Grid Spacing</strong>.
+</p>
+<p>
+<img src="png.d/bgsnap.png"> <strong>Grid Buttons</strong> on the Tool-bar (<a href="mainW.html#mainW">Section 3.1</a>) can be used to Enable/Disable and to Show/Hide the Snap Grid.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title></title>
+<link rel="previous" href="cmdGrid.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdZoom.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="toolbarM"></a>2.12.3 <a name="i0"></a></h1>
+<p>
+<img src="png.d/mtoolbar.png">
+</p>
+<p>
+Command button groups displayed on the <strong>Tool-bar</strong> are selected using the Tool-bar Configuration Menu (<a href="#toolbarM">Section 2.12.3</a>). If none of the command button groups are selected, the <strong>Tool-bar</strong> is not shown.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Zoom</title>
+<link rel="previous" href="toolbarM.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="windowM.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdZoom"></a>2.12.4 <a name="i0"></a>Zoom</h1>
+<p>
+<img src="png.d/bgzoom.png">
+</p>
+<p>
+The <strong>Zoom In</strong> and <strong>Zoom Out</strong> actions can also be accessed using buttons on the Tool Bar or usig the <strong>Pan/Zoom</strong> Mode button. The Mouse Wheel, PAGE DOWN and PAGE UP keys can also be used to zoom in and out.
+</p>
+<p>
+Holding down the Shift key while clicking the <strong>Zoom In</strong> or <strong>Zoom Out</strong> buttons sets the Drawing Scale to a <em>Programmed Zoom</em> value.
+</p>
+<dl><dd>
+<a name="i1"></a><em>Zoom/Pan Shortcut Keys</em>
+<p>
+
+</p>
+<ul><li>
+Keys '1'-'9' set the zoom to between 1::1 and 1::9.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Key 'e' sets the zoom to a value that allows all the room to be shown and moves the origin of bottom left of the window to be 0,0
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Key 's' sets the zoom to show the selected set of objects and pans the window to center the highlit area.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Key '0' or 'o' keeps the zoom as is, but moves the origin of the bottom left of the window to 0,0
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Key 'c' moves the center of the window to the cursor position
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+Normally a zoom in more of more than 1:1 is not possible, however if the Ctrl key is held down while the <strong>Zoom In</strong> button is pressed a zoom less that 1:1 can be achieved. This function is useful when working on detail.
+</p>
+<p>
+Pressing the middle Zoom button on the Tool Bar pop-ups a list of Zoom factors that can be select from.
+</p>
+<p>
+
+</p>
+<p>
+<em>Note</em> - The value of Zoom 1:1 will be set using 96 dpi as a default, it can be overriden using a Configuration Value in the Preferences section of ScreenDPI.
+</p>
+<p>
+
+</p>
+<dl><dd>
+See <strong>Main Window Overview</strong> (<a href="mainW.html#mainW">Section 3.1</a>) for details on how to <strong>Pan</strong> the <strong>Main Canvas</strong>.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Window Menu</title>
+<link rel="previous" href="cmdZoom.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="navigation.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="windowM"></a>2.13 Window Menu</h1>
+<p>
+<img src="png.d/mwindow.png">
+</p>
+<p>
+The <strong>Window Menu</strong> typically contains selections for bringing any open window into view. It's used as follows;
+</p>
+<dl><dd>
+<em>XTrackCAD</em> permits multiple dialog windows to be open at any one time. When a large number of windows are open it can become difficult to locate and bring a specific window into focus. Use the <strong>Window Menu</strong> function to select and bring the desired window to the top of the screen.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/openwindows.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Apart from bringing the <strong>Map Window</strong> (<a href="cmdMap.html#cmdMap">Section 3.2.2</a>) to the foreground, the <strong>Map</strong> menu item can also be used to re-opened a closed <strong>Map Window</strong>.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Navigation</title>
+<link rel="previous" href="windowM.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="mainW.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="navigation"></a>Chapter 3: Navigation</h1>
+<p>
+The Main Window includes a title bar along the top that describes the contents of the window, followed by a tool bar that contains user interface buttons. Most of the window's remaining area is used to display the layout. A footer border contains information including system messages.
+</p>
+<p>
+Most windows can be opened, closed, resized, minimized, and moved around the screen. The close, minimize, and zoom buttons are located on the right side of the title bar. Minimizing a window will close the contents of the window, but store a reference to it in the Task bar. Closing a window will make it disappear completely (so you may be asked to save your changes first). To move a window, click on the title bar and drag the window where you want it.
+</p>
+<ul>
+<li><a href="mainW.html#mainW">3.1 Main Window Overview</a></li>
+<li><a href="generaloperation.html#generaloperation">3.2 General Operation </a></li>
+<ul>
+<li><a href="enterValue.html#enterValue">3.2.1 Entering Values</a></li>
+<li><a href="cmdMap.html#cmdMap">3.2.2 Map Window</a></li>
+</ul>
+<li><a href="kbshortcuts.html#kbshortcuts">3.3 Keyboard Shortcuts </a></li>
+<ul>
+<li><a href="cmdAdd.html#cmdAdd">3.3.1 Add Commands</a></li>
+<li><a href="cmdChange.html#cmdChange">3.3.2 Change Commands</a></li>
+<li><a href="kbshortcutdraw.html#kbshortcutdraw">3.3.3 Draw Commands</a></li>
+<li><a href="cmdEdit.html#cmdEdit">3.3.4 Edit Commands</a></li>
+<li><a href="cmdFile.html#cmdFile">3.3.5 File Commands</a></li>
+<li><a href="kbshortcutHotBar.html#kbshortcutHotBar">3.3.6 Hot Bar</a></li>
+<li><a href="cmdMacro.html#cmdMacro">3.3.7 Macro Commands</a></li>
+<li><a href="kbshortcutMainCanvas.html#kbshortcutMainCanvas">3.3.8 Main Drawing Canvas</a></li>
+<li><a href="cmdManage.html#cmdManage">3.3.9 Manage Commands</a></li>
+<li><a href="cmdOption.html#cmdOption">3.3.10 Option Commands</a></li>
+<li><a href="cmdView.html#cmdView">3.3.11 View Commands</a></li>
+</ul>
+<li><a href="cmdAcclKeys.html#cmdAcclKeys">3.4 Mouse Actions</a></li>
+<ul>
+<li><a href="mouseBcmd.html#mouseBcmd">3.4.1 Context Sensitive Menus</a></li>
+</ul>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Main Window Overview</title>
+<link rel="previous" href="navigation.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="generaloperation.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="mainW"></a>3.1 <a name="i0"></a>Main Window Overview</h1>
+<dl><dt>
+Main Window Overview
+</dt>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<img src="png.d/maintagged.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The size of the main window can be changed by dragging on the resizing borders.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Minimizing the <em>Main Window</em> will minimize all <em>XTrackCAD</em> windows.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+The <strong>Main Window</strong> contains (from the top down):
+</dt>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Title bar</em>
+</dt>
+<dd>
+<img src="png.d/title.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Current filename, <em>XTrackCAD</em> version number, and window manager buttons. An asterisk (*) after the filename indicates that there are unsaved changes.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Menu Bar</em>
+</dt>
+<dd>
+<img src="png.d/menu.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Contains from left to right;
+<ul><li>
+File (<a href="fileM.html#fileM">Section 2.5</a>)
+</li>
+<li>
+Edit (<a href="editM.html#editM">Section 2.4</a>)
+</li>
+<li>
+View (<a href="viewM.html#viewM">Section 2.12</a>)
+</li>
+<li>
+Add (<a href="addM.html#addM">Section 2.1</a>)
+</li>
+<li>
+Change (<a href="changeM.html#changeM">Section 2.2</a>)
+</li>
+<li>
+Draw (<a href="cmdDraw.html#cmdDraw">Section 2.3</a>)
+</li>
+<li>
+Manage (<a href="manageM.html#manageM">Section 2.9</a>)
+</li>
+<li>
+Options (<a href="optionM.html#optionM">Section 2.10</a>)
+</li>
+<li>
+Macro (<a href="macroM.html#macroM">Section 2.8</a>)
+</li>
+<li>
+Window (<a href="windowM.html#windowM">Section 2.13</a>) and;
+</li>
+<li>
+Help (<a href="helpM.html#helpM">Section 2.6</a>) menu buttons.
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Tool Bar</em>
+</dt>
+<dd>
+<img src="png.d/toolbar.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Manipulate track and other objects The toolbar buttons size can be adjusted using a User Preference in the .ini or .rc file (on Windows or Mac/Linux) in the xtrkcad directory. If running Linux or Mac a line <code>"Preference.LargeIcons: 1.5"</code> can be added. The scale value can be from 1.0 to 2.0 only. The corresponding configuration Windows would be
+</dd>
+</dl>
+<pre><code> [Preference]
+ LargeIcons=1.5
+</code></pre>
+<p>
+<em>Note</em> The configuration file uses the language specific definitions for the decimal separator. Eg. in Germany, where the comma is used, the correct value would be<code>LargeIcons=1,5</code>.
+</p>
+<p>
+
+</p>
+<dl><dt>
+<em>Hot Bar</em> (<a href="cmdHotBar.html#cmdHotBar">Section 2.7</a>)
+</dt>
+<dd>
+<img src="png.d/hotbar.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Scrolling list of Turnouts and Structures
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Main Canvas</em>
+</dt>
+<dd>
+<img src="png.d/maincanvas.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Main drawing area with rulers along each side.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <strong>Main Canvas</strong> is where all tracks and objects (and optional background image) are drawn.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <strong>Background Image</strong> is drawn on the main canvas if specified in the <a href="cmdLayout.html#cmdLayout">Section 2.10.6</a> menu.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The center of the <strong>Main Canvas</strong> can be moved (Panned) using the;
+<ul><li>
+ARROW Keys
+</li>
+<li>
+Left-Click and drag in <a href="cmdZoom.html#cmdZoom">Section 2.12.4</a>
+</li>
+<li>
+"@" key in <strong>Select</strong>, <strong>Modify</strong> and <strong>Pan/Zoom</strong>.
+</li>
+<li>
+Mouse Wheel - adding <em>Shift</em> key will Pan the screen up and down. Adding <em>Ctrl</em> as well Pans left and right.
+</li>
+<li>
+Horizontal Mouse Wheel - adding <em>Shift</em> key will Pan the screen left and Right (if available)
+</li>
+<li>
+Scroll Left and Right - if the scroll left and right guestures are mapped to the trackpad by the operating system, with <em>Shift</em> depressed the screen will Pan.
+</li>
+<li>
+On mice and systems that support Three Button Mice, holding the <em>Middle Mouse Button</em> while dragging, will Pan the canvas.
+</li>
+</ul>
+
+</dd>
+<dd>
+The <strong>Main Canvas</strong> can be panned so that the area beyond the room boundaries is shown (the <strong>grey</strong> area). The <strong>Constrain Drawing Area to Room Boundaries</strong> option on the <strong>Display</strong> (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>) dialog under the <strong>Options</strong> (<a href="optionM.html#optionM">Section 2.10</a>) menu forces the <strong>Main Canvas</strong> stop panning once the room boundary is reached. Holding the <em>Control</em> key while panning will invert the value of this setting.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The scale of the <strong>Main Canvas</strong> can be changed using the;
+<ul><li>
+<strong>Zoom</strong> selections (<a href="cmdZoom.html#cmdZoom">Section 2.12.4</a>) under the <strong>View</strong> (<a href="viewM.html#viewM">Section 2.12</a>) menu
+</li>
+<li>
+<strong>Zoom</strong> buttons on the <strong>Tool-bar</strong>
+</li>
+<li>
+Mouse Wheel
+</li>
+<li>
+PAGE UP and PAGE DOWN keys
+</li>
+<li>
+<strong>Pan/Zoom</strong> <a href="cmdPan.html#cmdPan">Section 2.2.11</a> button on the <strong>Tool-bar</strong>
+</li>
+</ul>
+<p>
+<strong>Note:</strong> If The scale 1:1 is reached, "Macro Zoom" mode can be entered using CTRL+PageDown - with repeated presses a scale of 10::1 is possible.
+</p>
+
+</dd>
+<dd>
+When <strong>Zooming</strong>, the Main Canvas will retain the center of the display if <strong>Constrain Drawing Area to Room Boundaries</strong> is not set. Otherwise, as much of the room as possible is displayed, and any <strong>grey</strong> area will be to the right and above the room.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Tracks will be drawn with two lines and ties if you zoom in. When the drawing scale is 1:1 a dashed centerline is also drawn for each track.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The ARROW keys move the <strong>Canvas</strong> left, right, up or down by half a screen. If Shift is used together with the arrow keys, the movement will be 1/20th of screen in the selected direction.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+In many commands, the result that will result from clicking the mouse is shown by <em>anchors</em> which highlight the track object or feature in blue that will be affected as the mouse is dragged over the canvas and becomes close enough to select it.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Map Window</em>
+</dt>
+<dd>
+<img src="png.d/map.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+You can change which portion of the layout is displayed by using the <strong>Map Window</strong> (<a href="cmdMap.html#cmdMap">Section 3.2.2</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<em>Status Bar</em>
+</dt>
+<dd>
+<img src="png.d/statusbar.png">
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Contains from left to right;
+<ul><li>
+Drawing scale of the Main Canvas,
+</li>
+<li>
+X position of the cursor,
+</li>
+<li>
+Y position of the cursor,
+</li>
+<li>
+Status and informational messages
+</li>
+</ul>
+
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>General Operation </title>
+<link rel="previous" href="mainW.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="enterValue.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="generaloperation"></a>3.2 General Operation <a name="i0"></a></h1>
+<p>
+Most Windows open with three standard dialog buttons:
+</p>
+<dl><dd>
+<strong>Cancel</strong> - Cancels dialog. Layout reverts back to its previous state.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>Help</strong> - Invokes on-line help for current command or dialog.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<strong>OK</strong> - Completes the dialog action. Layout is updated with current changes.
+</dd>
+</dl>
+<hr>
+<ul>
+<li><a href="enterValue.html#enterValue">3.2.1 Entering Values</a></li>
+<li><a href="cmdMap.html#cmdMap">3.2.2 Map Window</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Entering Values</title>
+<link rel="previous" href="generaloperation.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdMap.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="enterValue"></a>3.2.1 <a name="i0"></a>Entering Values</h1>
+<p>
+Lengths and Distances can be entered in a variety of formats;
+</p>
+<dl><dd>
+<em>12ft 4 1/2in, 12' 4.5", 148.500, 1.234m, 123.4cm or 1234mm</em> are all valid values.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Adding the Equal Sign (<code>=</code>) key after an entry will reformat the value entered to your preferred length format (<a href="cmdPref.html#cmdPref">Section 2.10.7</a>).
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Adding the "<code>p</code>" key after an entry will convert a prototype measurement to a scale measurement by dividing the value entered by the ratio for the current scale.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Adding the "<code>s</code>" key after an entry will convert a scale measurement to a prototype measurement.
+</dd>
+</dl>
+<p>
+The conversion will happen when the <em>Tab</em> key is used, or the cursor is moved to a different entry box.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Map Window</title>
+<link rel="previous" href="enterValue.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="kbshortcuts.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdMap"></a>3.2.2 <a name="i0"></a>Map Window</h1>
+<p>
+<img src="png.d/map.png">
+</p>
+<p>
+The <em>Map Window</em> area shows the complete layout at a reduced scale. A highlighted (reverse video) area shows what portion is visible in the Main Window (<a href="mainW.html#mainW">Section 3.1</a>). The highlighted area can be Left+Dragged (<a href="windowTerms.html#windowTerms">Section B.1</a>) around the layout to change the origin of the Main Canvas. The highlighted area changes size as Zoom In (<a href="viewM.html#viewM">Section 2.12</a>) and Zoom Out (<a href="viewM.html#viewM">Section 2.12</a>) are selected.
+</p>
+<p>
+You can also Right+Drag (<a href="windowTerms.html#windowTerms">Section B.1</a>) on the Map window to set the origin and scale of the Main Canvas.
+</p>
+<p>
+The size of the <em>Map Window</em> changes when you change the Room Size (see <a href="cmdLayout.html#cmdLayout">Section 2.10.6</a>). You can also change the Map Scale (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>) on the Display (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>) dialog to change the size of the <em>Map Window</em>.
+</p>
+<p>
+If you close the <em>Map Window</em>, you can reopen it by the <em>Window</em> menu.
+</p>
+<p>
+Visibility of the <em>Map Window</em> can be toggled by pressing <em>Ctrl+Space</em>
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Keyboard Shortcuts </title>
+<link rel="previous" href="cmdMap.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdAdd.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="kbshortcuts"></a>3.3 <a name="i0"></a>Keyboard Shortcuts <a name="i1"></a></h1>
+<p>
+The term Shortcut key refers to specific key combinations which are used to accomplish an action which otherwise would be accomplished by moving a MOUSE and /or selecting from a Menu. Shortcut keys are often key combinations consisting of the letter key pressed along with the Alt or Ctrl key.
+</p>
+<p>
+Instead of using the menus or the buttons on the <strong>Tool-bar</strong> (<a href="mainW.html#mainW">Section 3.1</a>), most <em>XTrackCAD</em> commands may be invoked through use of Shortcut keys.
+</p>
+<dl><dd>
+The <code>RETURN</code> key has the same effect as pressing the <strong>OK</strong> button on the current dialog.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <code>ESCAPE</code> key cancels the current command. All selected tracks are unselected. The <strong>Properties</strong> (<a href="cmdDescribe.html#cmdDescribe">Section 2.2.13</a>) or <strong>Select</strong> (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) command becomes the current command.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <code>F1</code> key opens the Help page for the currently selected command. <code>Shift+F1</code> opens the Contents Help Page.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <code>PAGE UP</code> and <code>PAGE DOWN</code> keys will zoom out or zoom in.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <code>ARROWS</code> key will pan the canvas right, left, up and down.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The <code>DELETE</code> or the <code>BackSpace</code> key invokes the <strong>Delete</strong> (<a href="cmdDelete.html#cmdDelete">Section 2.4.4</a>) command.
+</dd>
+</dl>
+<p>
+Several Shortcut key commands are used in conjunction with the mouse. These commands are listed in <a href="cmdAcclKeys.html#cmdAcclKeys">Section 3.4</a>.
+</p>
+<hr>
+<ul>
+<li><a href="cmdAdd.html#cmdAdd">3.3.1 Add Commands</a></li>
+<li><a href="cmdChange.html#cmdChange">3.3.2 Change Commands</a></li>
+<li><a href="kbshortcutdraw.html#kbshortcutdraw">3.3.3 Draw Commands</a></li>
+<ul>
+<li><a href="addText.html#addText">3.3.3.1 Add Text</a></li>
+<li><a href="cmdDrawCircle.html#cmdDrawCircle">3.3.3.2 Draw Circles</a></li>
+<li><a href="cmdDrawCurve.html#cmdDrawCurve">3.3.3.3 Draw Curved Lines</a></li>
+<li><a href="cmdDrawShape.html#cmdDrawShape">3.3.3.4 Draw Shapes</a></li>
+<li><a href="cmdDrawStraight.html#cmdDrawStraight">3.3.3.5 Draw Straight Objects</a></li>
+<li><a href="NoteDialog.html#NoteDialog">3.3.3.6 Note Dialog</a></li>
+</ul>
+<li><a href="cmdEdit.html#cmdEdit">3.3.4 Edit Commands</a></li>
+<li><a href="cmdFile.html#cmdFile">3.3.5 File Commands</a></li>
+<li><a href="kbshortcutHotBar.html#kbshortcutHotBar">3.3.6 Hot Bar</a></li>
+<li><a href="cmdMacro.html#cmdMacro">3.3.7 Macro Commands</a></li>
+<li><a href="kbshortcutMainCanvas.html#kbshortcutMainCanvas">3.3.8 Main Drawing Canvas</a></li>
+<li><a href="cmdManage.html#cmdManage">3.3.9 Manage Commands</a></li>
+<li><a href="cmdOption.html#cmdOption">3.3.10 Option Commands</a></li>
+<li><a href="cmdView.html#cmdView">3.3.11 View Commands</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Add Commands</title>
+<link rel="previous" href="kbshortcuts.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdChange.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdAdd"></a>3.3.1 Add Commands</h1>
+<dl><dt>
+Add Commands
+</dt>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Create
+<ul><li>
+Circle track from
+<ul><li>
+center - <em>Ctrl+0</em>
+</li>
+<li>
+fixed radius circle - <em>Ctrl+8</em>
+</li>
+<li>
+tangent - <em>Ctrl+9</em>
+</li>
+</ul>
+
+</li>
+<li>
+Curve track from
+<ul><li>
+center - <em>Ctrl+6</em>
+</li>
+<li>
+chord - <em>Ctrl+7</em>
+</li>
+<li>
+endpoint - <em>Ctrl+4</em>
+</li>
+<li>
+tangent - <em>Ctrl+5</em>
+</li>
+</ul>
+
+</li>
+<li>
+Hand laid turnout - <em>Ctrl+Shift+I</em>
+</li>
+<li>
+Straight track - <em>Ctrl+G</em>
+</li>
+<li>
+Turntable - <em>Ctrl+Shift+N</em>
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Helix dialog and construction tool - <em>Ctrl+Shift+H</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Structure dialog - <em>Ctrl+Shift+C</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Turnout dialog - <em>Ctrl+T</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Change Commands</title>
+<link rel="previous" href="cmdAdd.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="kbshortcutdraw.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdChange"></a>3.3.2 Change Commands</h1>
+<dl><dt>
+Change Commands
+</dt>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Connect two sectional tracks - <em>Ctrl+Shift+J</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Elevation dialog - <em>Ctrl+Shift+E</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Join two tracks - <em>Ctrl+J</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Properties dialog - <em>Ctrl+?</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Modify or extend track - <em>Ctrl+M</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Move
+<ul><li>
+description - <em>Ctrl+Shift+Z</em>
+</li>
+<li>
+selected object - <em>Ctrl+Shift+M</em>
+</li>
+</ul>
+<p>
+
+</p>
+
+</dd>
+<dd>
+Profile dialog - <em>Ctrl+Shift+F</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Rotate selected object - <em>Ctrl+Shift+R</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Select tool - <em>Ctrl+E</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Split flex-track - <em>Ctrl+Shift+S</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Commands</title>
+<link rel="previous" href="cmdChange.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="addText.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="kbshortcutdraw"></a>3.3.3 Draw Commands</h1>
+<ul>
+<li><a href="addText.html#addText">3.3.3.1 Add Text</a></li>
+<li><a href="cmdDrawCircle.html#cmdDrawCircle">3.3.3.2 Draw Circles</a></li>
+<li><a href="cmdDrawCurve.html#cmdDrawCurve">3.3.3.3 Draw Curved Lines</a></li>
+<li><a href="cmdDrawShape.html#cmdDrawShape">3.3.3.4 Draw Shapes</a></li>
+<li><a href="cmdDrawStraight.html#cmdDrawStraight">3.3.3.5 Draw Straight Objects</a></li>
+<li><a href="NoteDialog.html#NoteDialog">3.3.3.6 Note Dialog</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Add Text</title>
+<link rel="previous" href="kbshortcutdraw.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawCircle.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="addText"></a>3.3.3.1 Add Text</h1>
+<p>
+Add Text
+</p>
+<dl><dd>
+Add Text to drawing area - <em>Ctrl+Shift+X</em>
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Circles</title>
+<link rel="previous" href="addText.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawCurve.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawCircle"></a>3.3.3.2 Draw Circles</h1>
+<p>
+Draw Circles
+</p>
+<dl><dd>
+Draw circle outline from
+<ul><li>
+center to tangent point (Edge) - <em>Ctrl+Shift+0</em>
+</li>
+<li>
+tangent point (Edge) to center - <em>Ctrl+Shift+9</em>
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Draw circle filled from
+<ul><li>
+center to tangent point (Edge) - <em>Ctrl+Alt+0</em>
+</li>
+<li>
+tangent point (Edge) to center - <em>Ctrl+Alt+9</em>
+</li>
+</ul>
+
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Curved Lines</title>
+<link rel="previous" href="cmdDrawCircle.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawShape.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawCurve"></a>3.3.3.3 Draw Curved Lines</h1>
+<p>
+Draw Curved Lines
+</p>
+<dl><dd>
+Draw curved lines from;
+<ul><li>
+center to endpoint - <em>Ctrl+Shift+6</em>
+</li>
+<li>
+chord - <em>Ctrl+Shift+7</em>
+</li>
+<li>
+endpoint in direction of curve - <em>Ctrl+Shift+4</em>
+</li>
+<li>
+endpoint to center - <em>Ctrl+Shift+5</em>
+</li>
+</ul>
+
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Shapes</title>
+<link rel="previous" href="cmdDrawCurve.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdDrawStraight.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawShape"></a>3.3.3.4 Draw Shapes</h1>
+<p>
+Draw Shapes
+</p>
+<dl><dd>
+Draw shape
+<ul><li>
+Box outline - <em>Ctrl+Shift+[</em>
+</li>
+<li>
+Filled Box - <em>Ctrl+Alt+[</em>
+</li>
+<li>
+Filled Polygon - <em>Ctrl+Alt+2</em>
+</li>
+<li>
+Poly-line - <em>Ctrl+Shift+2</em>
+</li>
+</ul>
+
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Draw Straight Objects</title>
+<link rel="previous" href="cmdDrawShape.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="NoteDialog.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdDrawStraight"></a>3.3.3.5 Draw Straight Objects</h1>
+<p>
+Draw Straight Objects
+</p>
+<dl><dd>
+Draw straight object
+<ul><li>
+<a name="i0"></a>Bench-work - <em>Ctrl+B</em>
+</li>
+<li>
+Dimension Line - <em>Ctrl+Shift+D</em>
+</li>
+<li>
+Straight Line - <em>Ctrl+Shift+1</em>
+</li>
+<li>
+Table Edge - <em>Ctrl+Shift+)</em>
+</li>
+</ul>
+
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Note Dialog</title>
+<link rel="previous" href="cmdDrawStraight.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdEdit.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="NoteDialog"></a>3.3.3.6 Note Dialog</h1>
+<p>
+Note Dialog
+</p>
+<dl><dd>
+Note dialog (<a href="cmdNote.html#cmdNote">Section 2.3.3</a>) - <em>Ctrl+Alt+N</em>
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Edit Commands</title>
+<link rel="previous" href="NoteDialog.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdFile.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdEdit"></a>3.3.4 Edit Commands</h1>
+<dl><dt>
+Edit Commands
+</dt>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Copy select objects to the clipboard - <em>Ctrl+C</em> or <em>Ctrl+Insert</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Cut select objects - <em>Ctrl+X</em> or <em>Shift+Delete</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Draw selected tracks with
+<ul><li>
+thin lines - <em>Ctrl+1</em>
+</li>
+<li>
+medium lines - <em>Ctrl+2</em>
+</li>
+<li>
+thick lines - <em>Ctrl+3</em>
+</li>
+</ul>
+<p>
+
+</p>
+
+</dd>
+<dd>
+Delete selected object(s) - <em>Delete</em> or <em>Ctrl+D</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Deselect all objects - <em>Alt+Shift+A</em> or <em>Esc</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Hide selected tracks in a Tunnel - <em>Ctrl+Shift+T</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Move Selected tracks
+<ul><li>
+above others - <em>Ctrl+Shift+B</em>
+</li>
+<li>
+below others - <em>Ctrl+Shift+W</em>
+</li>
+</ul>
+<p>
+
+</p>
+
+</dd>
+<dd>
+Paste from clipboard to layout - <em>Ctrl+V</em> or <em>Shift+Insert</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Redo last undone command - <em>Ctrl+R</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Select all objects - <em>Ctrl+Shift+A</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Undo last command - <em>Ctrl+Z</em> or <em>Shift+Backspace</em>
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>File Commands</title>
+<link rel="previous" href="cmdEdit.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="kbshortcutHotBar.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdFile"></a>3.3.5 File Commands</h1>
+<dl><dt>
+File Commands
+</dt>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Create a new layout - <em>Ctrl+N</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Edit layout description Note (<a href="cmdNote.html#cmdNote">Section 2.3.3</a>) - <em>Ctrl+Alt+T</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Export
+<ul><li>
+Selected objects to a <em>.xti</em> file - <em>Ctrl+Alt+X</em>
+</li>
+<li>
+To Bitmap (<a href="cmdOutputbitmap.html#cmdOutputbitmap">Section 2.5.2</a>) - <em>Ctrl+Shift+Q</em>
+</li>
+</ul>
+<p>
+
+</p>
+
+</dd>
+<dd>
+Import from a <em>.xti</em> file - <em>Ctrl+Alt+I</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Manipulate Parameter Files (<a href="cmdPrmfile.html#cmdPrmfile">Section 2.5.7</a>) - <em>Ctrl+Alt+S</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Open layout file - <em>Ctrl+O</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Print Command (<a href="cmdPrint.html#cmdPrint">Section 2.5.9</a>) - <em>Ctrl+P</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Save As another file - <em>Ctrl+A</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Save the current layout - <em>Ctrl+S</em>
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Hot Bar</title>
+<link rel="previous" href="cmdFile.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdMacro.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="kbshortcutHotBar"></a>3.3.6 <a name="i0"></a>Hot Bar</h1>
+<dl><dt>
+Hot Bar
+</dt>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+These actions take effect if the Hot Bar has keyboard focus.
+<ul><li>
+Move Hot Bar multiple entries
+<ul><li>
+left - <em>Shift+Left Arrow</em>
+</li>
+<li>
+right - <em>Shift+Right Arrow</em>
+</li>
+</ul>
+<p>
+
+</p>
+
+</li>
+<li>
+Move Hot Bar one entry
+<ul><li>
+left - <em>Left Arrow</em>
+</li>
+<li>
+right - <em>Right Arrow</em>
+</li>
+</ul>
+<p>
+
+</p>
+
+</li>
+<li>
+Pop-up menu of Hot Bar categories - <em>Right-Click</em>
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Set relative position of Hot Bar - <em>1, 2 ... 9, 0</em>
+</li>
+</ul>
+
+</dd>
+</dl>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Macro Commands</title>
+<link rel="previous" href="kbshortcutHotBar.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="kbshortcutMainCanvas.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdMacro"></a>3.3.7 Macro Commands</h1>
+<dl><dt>
+Macro Commands
+</dt>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Play Back a macro file (<a href="macroM.html#macroM">Section 2.8</a>) - <em>Ctrl+Alt+B</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Record a macro file (<a href="macroM.html#macroM">Section 2.8</a>) - <em>Ctrl+Alt+R</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Main Drawing Canvas</title>
+<link rel="previous" href="cmdMacro.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdManage.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="kbshortcutMainCanvas"></a>3.3.8 <a name="i0"></a>Main Drawing Canvas</h1>
+<dl><dt>
+Main Drawing Canvas
+</dt>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+These actions take effect if the Main Drawing Canvas has keyboard focus.
+<p>
+
+</p>
+<dl><dd>
+Move Canvas:
+<ul><li>
+Down - <em>Down Arrow</em>
+</li>
+<li>
+Left - <em>Left Arrow</em>
+</li>
+<li>
+Right - <em>Right Arrow</em>
+</li>
+<li>
+Up - <em>Up Arrow</em>
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Map Window:
+<ul><li>
+On / Off - <em>Ctrl+Space</em>
+</li>
+</ul>
+
+</dd>
+</dl>
+
+</dd>
+<dd>
+On some systems support Three Button Mice, holding down the <em>Middle Mouse Button</em> and dragging will pan the Canvas. Note: not all system support this operation, even with a Three Button Mouse.
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Manage Commands</title>
+<link rel="previous" href="kbshortcutMainCanvas.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdOption.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdManage"></a>3.3.9 Manage Commands</h1>
+<dl><dt>
+Manage Commands
+</dt>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Car Inventory dialog - <em>Ctrl+Alt+V</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Custom Management dialog (<a href="cmdCustmgm.html#cmdCustmgm">Section 2.9.2</a>) - <em>Ctrl+Alt+U</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Generate a Parts List (<a href="cmdEnum.html#cmdEnum">Section 2.9.6</a>) - <em>Ctrl+Alt+L</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Group objects (<a href="cmdGroup.html#cmdGroup">Section 2.9.4</a>) - <em>Ctrl+Shift+G</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Layers dialog (<a href="cmdLayer.html#cmdLayer">Section 2.9.5</a>) - <em>Ctrl+Alt+Y</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Ungroup objects (<a href="cmdGroup.html#cmdGroup">Section 2.9.4</a>) - <em>Ctrl+Shift+U</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Update Prices (<a href="cmdPricelist.html#cmdPricelist">Section 2.9.7</a>) - <em>Ctrl+Alt+Q</em>
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Option Commands</title>
+<link rel="previous" href="cmdManage.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdView.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdOption"></a>3.3.10 Option Commands</h1>
+<dl><dt>
+Options Commands
+</dt>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Colors dialog (<a href="cmdRgbcolor.html#cmdRgbcolor">Section 2.10.1</a>) - <em>Ctrl+Alt+C</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Command Options dialog (<a href="cmdCmdopt.html#cmdCmdopt">Section 2.10.2</a>) - <em>Ctrl+Alt+M</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Display dialog (<a href="cmdDisplay.html#cmdDisplay">Section 2.10.3</a>) - <em>Ctrl+Alt+D</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Easement Options dialog - <em>Ctrl+Alt+E</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Font dialog (<a href="fontSelW.html#fontSelW">Section 2.10.5</a>) - <em>Ctrl+Alt+F</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Layout dialog (<a href="cmdLayout.html#cmdLayout">Section 2.10.6</a>) - <em>Ctrl+Alt+A</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Preferences dialog (<a href="cmdPref.html#cmdPref">Section 2.10.7</a>) - <em>Ctrl+Alt+P</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Sticky commands dialog (<a href="cmdSticky.html#cmdSticky">Section 2.10.8</a>) - <em>Ctrl+Alt+K</em>
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>View Commands</title>
+<link rel="previous" href="cmdOption.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdAcclKeys.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdView"></a>3.3.11 View Commands</h1>
+<dl><dt>
+View Commands
+</dt>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Redraw
+<ul><li>
+all - <em>Ctrl+Shift+L</em>
+</li>
+<li>
+main window - <em>Ctrl+L</em>
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Snap Grid dialog (<a href="cmdGrid.html#cmdGrid">Section 2.12.2</a>) - <em>Ctrl+Alt+G</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Zoom
+<ul><li>
+in - <em>Ctrl++, Page Down</em>
+</li>
+<li>
+out - <em>Ctrl+-, Page Up</em>
+</li>
+</ul>
+
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Mouse Actions</title>
+<link rel="previous" href="cmdView.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="mouseBcmd.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdAcclKeys"></a>3.4 <a name="i0"></a>Mouse Actions</h1>
+<p>
+<em>XTrackCAD</em> uses the left and right mouse buttons when manipulating tracks and other objects on the layout. Their meaning depends on the particular command:
+</p>
+<p>
+<em>Select Command</em>
+</p>
+<p>
+The <em>Select</em> command actions are affected by the mode selected in <strong>Options-&gt;Command-&gt;Select</strong>. Note - Objects in a Module Layer are selected and deselected as a group.
+</p>
+<dl><dt>
+<em>Left-Click</em>
+</dt>
+<dd>
+Single Item Mode -&gt; Selects one object at a time, deselects other objects. Add Item Mode -&gt; Adds unselected objects, deselects if the object is already selected. If the click is on an area without objects and <strong>SelectZero</strong> is set, all objects are deselected.
+</dd>
+<dt>
+<em>Shift-Left-Click</em>
+</dt>
+<dd>
+Selects all connected tracks from the one clicked up to the next selected item in each direction.
+</dd>
+<dt>
+<em>Ctrl+Left-Click</em>
+</dt>
+<dd>
+Single Item Mode -&gt; Adds an object to the selection, deselects if the object is already selected. Add Item Mode -&gt; Selects just this item and deselects other objects. If the click is on an area without objects and <strong>SelectZero</strong> is set, all objects are deselected.
+</dd>
+<dt>
+<em>Double-Left-Click</em>
+</dt>
+<dd>
+Opens Modify for Cornu and Draw Objects other than Text, Activates Link and Document Notes, otherwise opens Describe.
+</dd>
+<dt>
+<em>Left+Drag</em>
+</dt>
+<dd>
+Single Item Mode -&gt; Selects all objects in an rubber-banded area and deselects all others. Add Item Mode -&gt; Adds items in the rubber-banded area.
+</dd>
+<dt>
+<em>Shift+Left-Drag</em>
+</dt>
+<dd>
+Moves selected objects if in a selected area, if off selected objects, like Left-Drag.
+</dd>
+<dt>
+<em>Ctrl+Left-Drag</em>
+</dt>
+<dd>
+Rotates selected objects if in a selected area, if off selected objects, like Left-Drag.
+</dd>
+<dt>
+<em>Right-Click</em>
+</dt>
+<dd>
+Displays a pop-up menu of context commands (in Select, Move, Modify and Rotate commands). If some track is selected, the menu has operations to perform on it, if not, it will have a command context menu.
+</dd>
+<dt>
+<em>Shift+Right-Click</em>
+</dt>
+<dd>
+Displays a pop-up menu of commands. Displays the other context menu than Right-Click.
+</dd>
+<dt>
+<em>Right+Drag</em>
+</dt>
+<dd>
+Deselects all objects in an rubber-banded area from the current set.
+</dd>
+<dt>
+<em>Rotate Wheel</em>
+</dt>
+<dd>
+Zooms drawing area in and out. Modern computers with Trackpads often map this guesture to two-finger drag.
+</dd>
+</dl>
+<p>
+<em>When Moving and Rotating</em> ( Placing Turnouts and Structures, Moving the Print and Snap Grids, ... ):
+</p>
+<dl><dt>
+<em>(Shift+Left+Drag)</em>
+</dt>
+<dd>
+Moves the objects or grid.
+</dd>
+<dt>
+<em>(Ctrl+Left+Drag)</em>
+</dt>
+<dd>
+Rotates the objects or grid about the pivot point, which is the point you started the drag operation.
+</dd>
+</dl>
+<p>
+Some other commands use the <code>Shift</code> or <code>Ctrl</code> key to modify the meaning of button presses.
+</p>
+<hr>
+<ul>
+<li><a href="mouseBcmd.html#mouseBcmd">3.4.1 Context Sensitive Menus</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Context Sensitive Menus</title>
+<link rel="previous" href="cmdAcclKeys.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="faqs.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="mouseBcmd"></a>3.4.1 <a name="i0"></a>Context Sensitive Menus</h1>
+<p>
+For all commands listed below, a <em>Right-Click</em> will display a context sensitive pop-up command list menu. For some commands (noted below), a <em>Shift+Right-Click</em> will display a context sensitive pop-up command options menu. The operation of <em>Right-Click</em> and <em>Shift+Right-Click</em> can be reversed by an item on the Command Options (<a href="cmdCmdopt.html#cmdCmdopt">Section 2.10.2</a>) dialog.
+</p>
+<p>
+The Shortcut key for each command is listed after the command name.
+</p>
+<dl><dt>
+Circle Track Command (<a href="cmdCircle.html#cmdCircle">Section 2.1.1</a>)
+</dt>
+<dd>
+Drag from
+<ul><li>
+center to circle tangent point (Edge) - <em>Ctrl+0</em>
+</li>
+<li>
+circle tangent point (Edge) to center - <em>Ctrl+9</em>
+</li>
+</ul>
+
+</dd>
+<dd>
+Position fixed radius circle - <em>Ctrl+8</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Connect Command (<a href="cmdConnect.html#cmdConnect">Section 2.2.3</a>) - <em>Ctrl+Shift+J</em>
+</dt>
+<dd>
+Remove adjustments starting from an unconnected endpoint - <em>Shift+Left-Click</em>
+</dd>
+<dd>
+Select endpoints to connect - <em>Left-Click</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Curved Track Commands (<a href="cmdCurve.html#cmdCurve">Section 2.1.2</a>)
+</dt>
+<dd>
+Drag from 1st endpoint
+<ul><li>
+in curve direction - <em>Ctrl+4</em>
+</li>
+<li>
+to Center - <em>Ctrl+5</em>
+</li>
+<li>
+to 2nd endpoint (Chord) - <em>Ctrl+7</em>
+</li>
+</ul>
+
+</dd>
+<dd>
+Drag from Center to 1st endpoint - <em>Ctrl+6</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Properties Command (<a href="cmdDescribe.html#cmdDescribe">Section 2.2.13</a>) - <em>Ctrl+?</em>
+</dt>
+<dd>
+Display property sheet for the object - <em>Left-Click</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Elevation Command (<a href="cmdElevation.html#cmdElevation">Section 2.2.5</a>) - <em>Ctrl+Shift+E</em>
+</dt>
+<dd>
+Choose endpoint - <em>Left-Click</em>
+</dd>
+<dd>
+Move Elevation Marker - <em>Right+Drag</em>
+</dd>
+<dd>
+Split track and choose endpoint - <em>Shift+Left-Click</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Flip Command (<a href="cmdFlip.html#cmdFlip">Section 2.2.6</a>)
+</dt>
+<dd>
+Draw Mirror line - <em>Left+Drag</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Hand-laid Turnout Command (<a href="cmdHandLaidTurnout.html#cmdHandLaidTurnout">Section 2.1.3</a>) - <em>Ctrl+Shift+I</em>
+</dt>
+<dd>
+Define
+<ul><li>
+frog position and angle - <em>(1st Left+Drag)</em>
+</li>
+<li>
+points position - <em>(2nd Left+Drag)</em>
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Helix Track Command (<a href="cmdHelix.html#cmdHelix">Section 2.1.4</a>) - <em>Ctrl+Shift+H</em>
+</dt>
+<dd>
+Position Helix - <em>(Left+Drag)</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Join Command (<a href="cmdJoin.html#cmdJoin">Section 2.2.7</a>) - <em>Ctrl+J</em>
+</dt>
+<dd>
+Join tracks - <em>(Left+Drag)</em>
+</dd>
+<dd>
+Move selected tracks to join with unselected endpoint - <em>Shift+Left-Click</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Modify Command (<a href="cmdModify.html#cmdModify">Section 2.2.8</a>) - <em>Ctrl+M</em>
+</dt>
+<dd>
+Change
+<ul><li>
+length or make tangent to curve - <em>Left+Drag</em>
+</li>
+<li>
+radius - <em>Shift+Left+Drag</em>
+</li>
+</ul>
+
+</dd>
+<dd>
+Extend track - <em>Right+Drag</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Move Command (<a href="cmdMove.html#cmdMove">Section 2.2.9</a>) - <em>Ctrl+Shift+M</em>
+</dt>
+<dd>
+Command Options: how to draw moving objects (<a href="cmdAcclKeys.html#cmdAcclKeys">Section 3.4</a>) - <em>Shift+Right-Click</em>
+</dd>
+<dd>
+Move Selected objects - <em>Left+Drag</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Move Description Command (<a href="cmdMoveLabel.html#cmdMoveLabel">Section 2.2.10</a>) - <em>Ctrl+Shift+Z</em>
+</dt>
+<dd>
+Move Description - <em>Left+Drag</em>
+</dd>
+<dd>
+Toggle Label display for Curved, Helix and Turnout tracks (<a href="cmdAcclKeys.html#cmdAcclKeys">Section 3.4</a>). - <em>Shift+Right-Click</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Note Command (<a href="cmdNote.html#cmdNote">Section 2.3.3</a>) - <em>Ctrl+Alt+N</em>
+</dt>
+<dd>
+Position Note - <em>Left+Drag</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Parallel Command (<a href="cmdParallel.html#cmdParallel">Section 2.1.5</a>) - <em>Ctrl+Shift+P</em>
+</dt>
+<dd>
+Position Parallel track relative to selected track - <em>(Left+Drag)</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Print Command (<a href="cmdPrint.html#cmdPrint">Section 2.5.9</a>) - <em>Ctrl+P</em>
+</dt>
+<dd>
+Command Options: rotate by specified amount (<a href="cmdAcclKeys.html#cmdAcclKeys">Section 3.4</a>) - <em>(Shift+Right-Click)</em>
+</dd>
+<dd>
+Move Print grid - <em>Shift+Left+Drag</em>
+</dd>
+<dd>
+Rotate Print grid - <em>Shift+Right+Drag</em>
+</dd>
+<dd>
+Select or unselect pages - <em>Left-Click</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Profile Command (<a href="cmdProfile.html#cmdProfile">Section 2.2.12</a>) - <em>Ctrl+Shift+F</em>
+</dt>
+<dd>
+Add tracks to path from path end to chosen endpoint - <em>(Left-Click)</em>
+</dd>
+<dd>
+Command Options: change Elevation type - <em>(Shift+Right-Click)</em> (<a href="cmdAcclKeys.html#cmdAcclKeys">Section 3.4</a>)
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Rotate Command (<a href="cmdRotate.html#cmdRotate">Section 2.2.15</a>) - <em>Ctrl+Shift+R</em>
+</dt>
+<dd>
+Command Options: how to draw moving objects and rotate by specified amount (<a href="cmdAcclKeys.html#cmdAcclKeys">Section 3.4</a>) - <em>Shift+Right-Click</em>
+</dd>
+<dd>
+Rotate Selected objects - <em>Left+Drag</em>
+<ul><li>
+in increments of 15&#176; - <em>Ctrl+Left+Drag</em>
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Ruler Command (<a href="cmdRuler.html#cmdRuler">Section 2.3.4</a>)
+</dt>
+<dd>
+Position Ruler - <em>Left+Drag</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Angle Command (<a href="cmdAngle.html#cmdAngle">Section 2.3.5</a>)
+</dt>
+<dd>
+Position Protractor - <em>Left-Drag</em>
+</dd>
+<dt>
+Select Command (<a href="cmdSelect.html#cmdSelect">Section 2.2.16</a>) - <em>Ctrl+E</em>
+</dt>
+<dd>
+Command Options: how to draw moving objects and rotate by specified amount (<a href="cmdAcclKeys.html#cmdAcclKeys">Section 3.4</a>) - <em>Shift+Right-Click</em>
+</dd>
+<dd>
+Move
+<ul><li>
+selected objects - <em>Shift+Left+Drag</em>
+</li>
+<li>
+labels - <em>Ctrl+Left+Drag</em>
+</li>
+</ul>
+
+</dd>
+<dd>
+Rotate selected objects - <em>Ctrl+Left-Drag</em>
+<ul><li>
+in increments of 15&#176; - <em>Ctrl+Shift+Left+Drag</em>
+</li>
+</ul>
+
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Snap Grid Command (<a href="cmdGrid.html#cmdGrid">Section 2.12.2</a>) - <em>Ctrl+Alt+G</em>
+</dt>
+<dd>
+Command Options: rotate by specified amount (<a href="cmdAcclKeys.html#cmdAcclKeys">Section 3.4</a>) - <em>Shift+Right-Click</em>
+</dd>
+<dd>
+Move Snap Grid - <em>Left+Drag</em>
+</dd>
+<dd>
+Rotate Snap Grid - <em>Right+Drag</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Split Track Command (<a href="cmdSplitTrack.html#cmdSplitTrack">Section 2.2.17.1</a>) - <em>Ctrl+Shift+S</em>
+</dt>
+<dd>
+As above, plus trim turnouts - <em>Shift+Left-Click</em>
+</dd>
+<dd>
+Change block gaps (<a href="cmdAcclKeys.html#cmdAcclKeys">Section 3.4</a>) - <em>Shift+Right-Click</em>
+</dd>
+<dd>
+If at endpoint: disconnect track, otherwise: split track - <em>Left-Click</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+<a name="i1"></a>Straight Track Command (<a href="cmdStraight.html#cmdStraight">Section 2.1.6</a>) - <em>Ctrl+G</em>
+</dt>
+<dd>
+Place 1st and 2nd endpoints - <em>Left+Drag</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Structure Command (<a href="cmdStructure.html#cmdStructure">Section 2.1.7</a>) - <em>Ctrl+Shift+C</em>
+</dt>
+<dd>
+Command Options: rotate by specified amount (<a href="cmdAcclKeys.html#cmdAcclKeys">Section 3.4</a>) - <em>Shift+Right-Click</em>
+</dd>
+<dd>
+Place Structure - <em>Left+Drag</em>
+</dd>
+<dd>
+Rotate - <em>Right+Drag</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Text Command (<a href="cmdText.html#cmdText">Section 2.3.9</a>) - <em>Ctrl+Shift+X</em>
+</dt>
+<dd>
+Command Options: change Font (<a href="cmdAcclKeys.html#cmdAcclKeys">Section 3.4</a>) - <em>Shift+Right-Click</em>
+</dd>
+<dd>
+Position text - <em>Left+Drag</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Train Simulation Command (<a href="cmdTrain.html#cmdTrain">Section 2.9.8</a>)
+</dt>
+<dd>
+Command Options: uncouple car, flip or remove cars or Trains, set MU Master - <em>Right-Click</em>
+</dd>
+<dd>
+Move a Car or Train - <em>Left+Drag</em>
+</dd>
+<dd>
+Switch a <em>Turnout</em> or rotate a <em>Turntable</em> - <em>Shift+Left-Click</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Turntable Command (<a href="cmdTurntable.html#cmdTurntable">Section 2.1.9</a>) - <em>Ctrl+Shift+N</em>
+</dt>
+<dd>
+Position Turntable - <em>Left+Drag</em>
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dt>
+Turnout Command (<a href="cmdNewFixedTrack.html#cmdNewFixedTrack">Section 2.1.8</a>) - <em>Ctrl+T</em>
+</dt>
+<dd>
+Choose next Active endpoint when placing Turnouts - <em>Shift+Left-Click</em>
+</dd>
+<dd>
+Command Options: rotate by specified amount (<a href="cmdAcclKeys.html#cmdAcclKeys">Section 3.4</a>) - <em>Shift+Right-Click</em>
+</dd>
+<dd>
+Place Turnout - <em>Left+Drag</em>
+</dd>
+<dd>
+Rotate - <em>Right+Drag</em>
+</dd>
+<dd>
+Suppress auto-adjustment positioning when placing Turnouts - <em>Shift+Left+Drag</em>
+</dd>
+</dl>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Frequently Asked Questions</title>
+<link rel="previous" href="mouseBcmd.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="faqsTransfer.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="faqs"></a>Appendix A: Frequently Asked Questions</h1>
+<ul>
+<li><a href="faqsTransfer.html#faqsTransfer">A.1 Moving from Design to Roadbed </a></li>
+<li><a href="faqsHotBar.html#faqsHotBar">A.2 Hot Bar Items Missing!</a></li>
+<li><a href="faqsPrototype.html#faqsPrototype">A.3 Unable to Add Cars to Inventory!</a></li>
+<li><a href="faqsJoin.html#faqsJoin">A.4 How Do I Place and Join Tracks</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Moving from Design to Roadbed </title>
+<link rel="previous" href="faqs.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="faqsHotBar.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="faqsTransfer"></a>A.1 Moving from Design to Roadbed <a name="i0"></a></h1>
+<p>
+<strong>Your design is complete and your now ready to lay track. How do you go from the computer screen to the roadbed?</strong>
+</p>
+<p>
+The best way to move your design from computer to roadbed is to print out a full scale copy (or portions) of the layout. During the print process the orientation of the print grid can be adjusted so the printout will line up with the tracks.
+</p>
+<p>
+If you have cut-sheet printer (like a laser or ink-jet) set the Ignore Page Margins toggle on the print dialog. Normally there is an unprintable margin around the edge of the page and <em>XTrackCAD</em> only prints on the printable area, which means you would have to trim or overlay the pages. Setting the Ignore Page Margins toggle makes <em>XTrackCAD</em> ignore this margin so you can just abut the paper. Also, turn on Print Roadbed Outline and set your roadbed width.
+</p>
+<p>
+For large scale printouts, the ability of many platforms to print as PDF is very helpful. Commercial printers can oftem print very large strips of paper.
+</p>
+<p>
+Once you have a full scale print-out of your layout (or portion, if you have a larger layout you don't want to do it all at once) you need to transfer this to the roadbed. Here's two methods that can be used:
+</p>
+<ul><li>
+Use a spray adhesive (such as 3M Super 77) to glue the print-out to the roadbed. This is very messy, takes more glue than expected and is very unforgiving of mistakes. You may want to use this method only for small sections of very complicated track-work.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Tape the print-out to the roadbed then using a tracing wheel (available at Sewing shops), trace the center-line of the track and roadbed outline. At this point consider places when you'll want to widen the roadbed to support signals, switch machines, joints etc.
+</li>
+<li>
+Some users have reported that they successfully used the DXF export to get a file into Computer Controlled Machines that can cut out trackbed.
+</li>
+</ul>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Hot Bar Items Missing!</title>
+<link rel="previous" href="faqsTransfer.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="faqsPrototype.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="faqsHotBar"></a>A.2 Hot Bar Items Missing!</h1>
+<p>
+<strong>After installing XTrackCAD the Hot Bar is not active; the arrows to the left and the right of the Hot Bar are a grey colour instead of black, the Hot Bar is blank and also does not scroll.</strong>
+</p>
+<p>
+There's nothing wrong, you just need to load a track or structure Parameter file. Open the <strong>Parameter dialog</strong> window (<strong>File&gt;Parameter</strong>) then click on Browse. A list of <code>*.xtp</code> files with names like <code>atlasn55.xtp</code> should appear. Select whichever file or files are appropriate for your needs then click the OK button. Click OK on the Parameter File dialog and you should now have objects displayed on the Hot Bar.
+</p>
+<p>
+Notes:
+</p>
+<ol><li>
+Only elements that fit the selected scale are available in the Hot Bar. Thus if you're sure the parameter file has been loaded via the <strong>File&gt;Parameter</strong> dialog, make sure the correct scale has been selected for the layout (<strong>Options&gt;Layout</strong>).
+<p>
+
+</p>
+
+</li>
+<li>
+If a long list of parameter files is selected, movement within the Hot Bar can be slow. If you right-click on the Hot Bar, a list of available parameter sets is shown. By <em>Left-Click</em>ing the desired parameter set, the Hot Bar is immediately scrolled to the first element in that parameter set.
+<p>
+
+</p>
+
+</li>
+<li>
+When a new layout is created or when <em>XTrackCAD</em> is started for the first time, the scale of the layout defaults to N scale. Do not forget to change the scale in order to see tracks from other scales in the Hot Bar!
+</li>
+</ol>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Unable to Add Cars to Inventory!</title>
+<link rel="previous" href="faqsHotBar.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="faqsJoin.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="faqsPrototype"></a>A.3 Unable to Add Cars to Inventory!</h1>
+<p>
+<strong>After installing</strong> <em>XTrackCAD</em> <strong>you're unable to add cars to the Car Inventory list; a message stating "No Car Prototypes are defined...." appears when you attempt to add cars to the Car Inventory list.</strong>
+</p>
+<p>
+There's nothing wrong, you just need to load a Prototype definition file.
+</p>
+<p>
+<em>XTrackCAD</em> includes a parameter file which defines many common North American Prototypes. The file is named <code>protoam.xtp</code>. It's loaded into <em>XTrackCAD</em> in the same way that a track, structure or car Parameter file would be loaded.
+</p>
+<ul><li>
+Open the <strong>Parameter dialog</strong> window (<strong>File&gt;Parameter</strong>) then click on Browse. Scroll through the list of <code>*.xtp</code> files to locate the file named <code>protoam.xtp</code>. Select this file then click the OK button. Click OK on the Parameter File dialog to complete installation of the prototype file. You should now be able to add cars to the Car Inventory list.
+</li>
+</ul>
+<p>
+Other prototype definitions can be created using the Car Prototype dialog. Refer to <a href="carprototype.html#carprototype">Section 2.9.1.3</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>How Do I Place and Join Tracks</title>
+<link rel="previous" href="faqsPrototype.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="glossary.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="faqsJoin"></a>A.4 How Do I Place and Join Tracks</h1>
+<p>
+<strong>How do I join tracks, place turnouts, build a yard etc?</strong>
+</p>
+<p>
+First take a look at the help file. Then try the demos (<strong>Help&gt;Demos</strong> menu). This should answer a lot of questions on how to use <em>XTrackCAD</em>. Please visit <a href="http://www.xtrkcad.org/Wikka/HomePage" target="_blank">The XTrackCAD Wiki</a> if you need help, especially if you find the documentation unclear or think some area needs improvement.
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Glossary</title>
+<link rel="previous" href="faqsJoin.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="windowTerms.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="glossary"></a>Appendix B: Glossary</h1>
+<p>
+This section contains a helpful listing of Window and <em>XTrackCAD</em> terminology.
+</p>
+<hr>
+<ul>
+<li><a href="windowTerms.html#windowTerms">B.1 Window Terms</a></li>
+<li><a href="generalTerms.html#generalTerms">B.2 XTrackCAD Terms</a></li>
+<li><a href="controlElementScripts.html#controlElementScripts">B.3 Control Element Scripts and the Model RR System's Dispatcher</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Window Terms</title>
+<link rel="previous" href="glossary.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="generalTerms.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="windowTerms"></a>B.1 <a name="i0"></a>Window Terms</h1>
+<p>
+Menu and sub-menu items are indicated by <em>File&gt;Open</em>, which means select the <em>File</em> menu and then select the <em>Open</em> menu item.
+</p>
+<p>
+<strong>Balloon Help</strong> - short help message which is displayed as you move the mouse pointer over a control.
+</p>
+<p>
+<strong>Canvas</strong> - an area within a window where objects are drawn.
+</p>
+<p>
+<strong>Check Box</strong> - a button with a small square indicator to the left of its text. A check mark appears in the indicator when the button is selected.
+</p>
+<p>
+<strong>Click</strong> - press and then release the left mouse button.
+</p>
+<p>
+<strong>Drag</strong> - press and hold down the left mouse button and move the mouse to 'drag' the cursor on the screen.
+</p>
+<p>
+<strong>Dialog</strong> - a type of window in which you input information.
+</p>
+<p>
+<strong>Drop Down List</strong> - a list-box which is only displayed when you click on the 'drop-down' button.
+</p>
+<p>
+<strong>Edit Box</strong> - an area where you can enter a String, Integer or Floating Point value.
+</p>
+<p>
+<strong>Highlighted</strong> - an area on the Canvas which is in inverse-video.
+</p>
+<p>
+<strong>Left-Click</strong> - same as <em>Click</em>, used in contexts where <em>Right-Click</em> is also used.
+</p>
+<p>
+<strong>Left+Drag</strong> - same as <em>Drag</em>, used in contexts where <em>Right+Drag</em> is also used.
+</p>
+<p>
+<strong>Mouse Pointer</strong> - is most often an arrow that is you can use to point at different objects on your screen. When the pointer is over an object, you can <em>Click</em> a mouse button to perform an action on that object (such as selecting the object).
+</p>
+<p>
+<strong>Press</strong> - click on a button.
+</p>
+<p>
+<strong>Radio Button</strong> - a button with a small round indicator to the left of its text. The indicator is filled when the button is selected.
+</p>
+<p>
+<strong>Radio Button Group</strong> - a group of radio buttons which indicate mutually exclusive choices.
+</p>
+<p>
+<strong>Resizing Border</strong> - a thick border around re-sizable windows that you can use to change the window size.
+</p>
+<p>
+<strong>Right-Click</strong> - press and then release the right mouse button.
+</p>
+<p>
+<strong>Right Drag</strong> - press and hold down the right mouse button and move the mouse to 'drag' the cursor on the screen.
+</p>
+<p>
+<strong>Select</strong> - click on an object to indicate you want to do something with it.
+</p>
+<p>
+<strong>Shift+Left-Click</strong> - <em>Left-Click</em> while holding down the <em>Shift</em> key.
+</p>
+<p>
+<strong>Shift+Right-Click</strong> - <em>Right-Click</em> while holding down the <em>Shift</em> key.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>XTrackCAD Terms</title>
+<link rel="previous" href="windowTerms.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="controlElementScripts.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="generalTerms"></a>B.2 <a name="i0"></a>XTrackCAD Terms</h1>
+<p>
+<strong>Active Endpoint</strong> - when placing a turnout, the endpoint which is used as a 'handle' when moved along other tracks.
+</p>
+<p>
+<strong>Auto-connect</strong> - when placing turnouts (<a href="cmdHotBar.html#cmdHotBar">Section 2.7</a>) and creating parallel (<a href="cmdParallel.html#cmdParallel">Section 2.1.5</a>) tracks, the new track will automatically be connected to other tracks if the tracks are aligned properly.
+</p>
+<p>
+<strong>Block Gap</strong> - provides control by dividing the layout into electrically isolated blocks, where trains can be slowed or stopped by lowering or cutting the power to a block. Dividing a layout into blocks also permits operators to run more than one train on a layout with much less risk of a fast train catching up with and hitting a slow train. Blocks can also trigger signals or other animated accessories on the layout, adding more realism (or whimsy) to the layout. Three-rail systems will often insulate one of the common rails on a section of track, and use a passing train to complete the circuit and activate an accessory.
+</p>
+<p>
+<strong>Cornu</strong> - * Cornu curves are a family of mathematically defined curves that define spirals that Euler spirals and elastica come from. They have the useful property for us that curvature increases linearly along the curve which means the acceleration towards the center of the curve also increases evenly. Railways have long understood that smoothly changing the radius is key to passenger comfort and reduced derailments. The railway versions of these curves were variously called easements, Talbot or Euler spirals.
+</p>
+<p>
+<strong>DXF Format</strong> - Abbreviation of <strong>D</strong>ata <strong>E</strong>xchange <strong>F</strong>ile, a two-dimensional graphics file format supported by virtually all PC-based CAD products. It was created by AutoDesk for the AutoCAD system.
+</p>
+<p>
+<strong>Easement</strong> - special sections of gradually curving track used to connect straight and curved tracks (or two curved tracks). Easements reduce the effects of sudden changes in track curves which can cause derailments. They also look great!
+</p>
+<p>
+<strong>Endpoint</strong> - One of the most important concepts in <em>XTrackCAD</em> is the endpoint. A piece of flex-track has an endpoint at each end. An endpoint has a position and an angle and it can be connected to other endpoints. The endpoints control where the track is placed and how it is connected.
+</p>
+<ul><li>
+Turnouts have several endpoints (normally 3).
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Turntables have a varying number.
+</li>
+</ul>
+<p>
+<strong>Error Message</strong> - an error message displayed in the Status Bar (<a href="mainW.html#mainW">Section 3.1</a>) accompanied by a beep.
+</p>
+<p>
+<a name="i1"></a><strong>Fixed-track</strong> - These include Turnouts, Sectional tracks and Grouped objects. They are defined in Parameter Files (<a href="cmdPrmfile.html#cmdPrmfile">Section 2.5.7</a>), or created using the <strong>Turnout Designer</strong> (<a href="cmdTurnoutNew.html#cmdTurnoutNew">Section 2.9.9</a>) or the <strong>Group</strong> (<a href="cmdGroup.html#cmdGroup">Section 2.9.4</a>) command. They are selected for placement on the layout using the <strong>Hot Bar</strong> (<a href="cmdHotBar.html#cmdHotBar">Section 2.7</a>) or the <strong>Fixed-Track</strong> (<a href="cmdNewFixedTrack.html#cmdNewFixedTrack">Section 2.1.8</a>) dialog. They can not be directly altered, but can be decomposed with the <strong>Ungroup</strong> (<a href="cmdUngroup.html#cmdUngroup">Section 2.9.11</a>) command and some cases trimed (<a href="splitDivide.html#splitDivide">Section 2.2.17.2.1</a>).
+</p>
+<p>
+<a name="i2"></a><strong>Flex-track</strong> - Flexible sections of track used on a layout. It usually comes in straight, three-foot-long sections which can be bent or shaped as needed. These include Straight, Curved, Easements, Cornu and Bezier tracks. This term is also used for hand-laid track. They are created by invoking the corresponding command and dragging on the layout. <strong>Easements</strong> (<a href="cmdEasement.html#cmdEasement">Section 2.10.4</a>) are created automatically when joining tracks.
+</p>
+<p>
+<strong>Frog</strong> - the place on a turnout track where one rail crosses the other.
+</p>
+<p>
+<strong>Gauge</strong> - The distance between the inside of the heads of track rails. Most real railroads in North America and Europe are built to a standard gauge of 4'-8 1/2". Narrow gauge means rails with a width less than standard gauge. For example, On3 means O scale trains with three scale feet between the rails.
+</p>
+<p>
+<strong>Handlaid</strong> - Track that's built with handmade ties, rail, and spikes.
+</p>
+<p>
+<strong>Helix</strong> - A rising curve which turns around an axis like a corkscrew. Used on multilevel layouts to allow trains to go from one level to another.
+</p>
+<p>
+<strong>Info Message</strong> - an informational message displayed in the Status Bar (<a href="mainW.html#mainW">Section 3.1</a>).
+</p>
+<p>
+<strong>Object</strong> - an item on the layout, such as a track segment, table edge, line, note or text.
+</p>
+<p>
+<strong>Points</strong> - the part of the Turnout that moves to select a path.
+</p>
+<p>
+<strong>S-Curve</strong> - (aka <strong>Reverse Curve</strong>) a curve which bends in one direction and then the other, forming an S-like shape, without any appreciable length of straight track between the two curves
+</p>
+<p>
+<strong>Sectional Track</strong> - prefabricated track which cannot be bent, split or changed. A type of <strong>Fixed-Track</strong>.
+</p>
+<p>
+<strong>Selected Endpoint</strong> - when selecting track for various reasons the selected endpoint is the one closest to the selection point.
+</p>
+<p>
+<strong>Tangent</strong> - A line, curve, or surface meeting another line, curve, or surface at a common point.
+</p>
+<p>
+<strong>Track Segment</strong> - any piece of flex-track, turnout or sectional track.
+</p>
+<p>
+<strong>Turnout</strong> - A piece of track that allows a train to go from one track to another. Called a switch on a real railroad. Referred to by number. For example, a no. 6 turnout spreads one unit for each six units of travel measured from the frog (the point at which two rails join to form a V).
+</p>
+<p>
+Turnouts are a type of 'Fixed-track' which includes Sectional Tracks and Grouped Objects.
+</p>
+<ul><li>
+In <em>XTrackCAD</em>, <em>Turnouts</em> also include sectional Tracks, crossings and forms of prefabricated (non-flex) track.
+</li>
+</ul>
+<p>
+<strong>Turnout Frog</strong> - the place on the turnout track where one rail crosses the other.
+</p>
+<p>
+<strong>Turnout Number</strong> - the ratio of the number of units along the center line of a switch frog traversed for each unit the frog spreads to the sides. A No. 4 frog diverges 1 unit for every 4 it moves ahead; a No. 6, 1 for every 6 units. Although we usually refer to a turnout or switch number, in reality the measurement is for the frog.
+</p>
+<p>
+<strong>Turnout Points</strong> - the part of the Turnout that moves to select a path.
+</p>
+<p>
+<strong>Unconnected Endpoint</strong> - an endpoint which is not connected to another.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Control Element Scripts and the Model RR System's Dispatcher</title>
+<link rel="previous" href="generalTerms.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="messages.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="controlElementScripts"></a>B.3 Control Element Scripts and the Model RR System's Dispatcher</h1>
+<p>
+Notes about control element scripts and the Model RR System's Dispatcher program in OpenLCB mode:
+</p>
+<p>
+When using the Model RR System's Dispatcher program in OpenLCB mode to create CTC panels, the panel elements can have their LCC event IDs automatically populated from the information in the XTrackCAD file, if the proper syntax is observed.
+</p>
+<p>
+A LCC event id is a 64-bit number, represented as eight pairs of hexadevimal digits (0-9, a-f/A-F) separated by periods (.). Each pair represents one 8-bit byte of the event id. This event id is either produced by a sensor or logic element or is consumed by a control/device or a logic element.
+</p>
+<p>
+For blocks the occupency script contains a pair of LCC event ids, separated by a colon (:). The first LCC event id is produced by the occupency detector when the train enters the block and the second LCC event id is produced by the occupency detector when the train leaves the block.
+</p>
+<p>
+For switchmotors the point sense script contains a pair of LCC event ids, separated by a colon (:). The first LCC event id is produced by the point sensor when the points are aligned in the "normal" position (typically aligned to the main) and the second LCC event id is produced by the point sensor when the points are aligned in the "reverse" position (typically aligned to the spur). The normal and reverse script each contain a signal LCC event id. These events are produced by the CTC Panel when the control point Code button is pressed (clicked) and are consumed by the switch motor.
+</p>
+<p>
+For signals, the aspect name is a space separated list of the color(s) of the signal heads from top to bottom and the aspect script is a LCC event id that is consumed to produce that aspect. Presumably, the LCC event id is produced by a logic element (presumably a mast group in a Tower-LCC or similar device) or virtual track circuit in a Tower-LCC or similar device.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Messages and Explanations</title>
+<link rel="previous" href="controlElementScripts.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="messageType.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="messages"></a>Appendix C: Messages and Explanations</h1>
+<ul>
+<li><a href="messageType.html#messageType">C.1 Message Types</a></li>
+<li><a href="messageList.html#messageList">C.2 Message Explanations</a></li>
+<ul>
+<li><a href="MSG_HELIX_TURNS_GTR_0.html#MSG_HELIX_TURNS_GTR_0">C.2.1 A Helix must have one or more loops of track.</a></li>
+<li><a href="MSG_SEL_TRK_FROZEN.html#MSG_SEL_TRK_FROZEN">C.2.2 A frozen layer contains selected track. Command cannot be executed.</a></li>
+<li><a href="MSG_LARGE_FONT.html#MSG_LARGE_FONT">C.2.3 A large font has been selected....</a></li>
+<li><a href="MSG_TODSGN_DESC_NONBLANK.html#MSG_TODSGN_DESC_NONBLANK">C.2.4 All description fields present in the Turnout...</a></li>
+<li><a href="MSG_GROUP_NONBLANK.html#MSG_GROUP_NONBLANK">C.2.5 All fields listed in the Group dialog must contain data....</a></li>
+<li><a href="MSG_TODSGN_VALUES_GTR_0.html#MSG_TODSGN_VALUES_GTR_0">C.2.6 All values specified in the Turnout Designer must be...</a></li>
+<li><a href="MSG_CURVE_OUT_OF_RANGE.html#MSG_CURVE_OUT_OF_RANGE">C.2.7 Angle must be between 0&#176; and 360&#176;.</a></li>
+<li><a href="MSG_CUSTMGM_DELETE_CONFIRM.html#MSG_CUSTMGM_DELETE_CONFIRM">C.2.8 Are you sure you want to delete the NNN definition(s)?</a></li>
+<li><a href="MSG_WBITMAP_FAILED.html#MSG_WBITMAP_FAILED">C.2.9 Bitmap create or write function failed.</a></li>
+<li><a href="MSG_BITMAP_TOO_LARGE.html#MSG_BITMAP_TOO_LARGE">C.2.10 Bitmap is too large.</a></li>
+<li><a href="MSG_POLY_MULTIPLE_SELECTED.html#MSG_POLY_MULTIPLE_SELECTED">C.2.11 Can't delete multiple points at once</a></li>
+<li><a href="MSG_GRID_ENABLE_SPACE_GTR_0.html#MSG_GRID_ENABLE_SPACE_GTR_0">C.2.12 Cannot Enable Grid; spacing must be greater than 0</a></li>
+<li><a href="MSG_CANT_GROUP_BUMPER1.html#MSG_CANT_GROUP_BUMPER1">C.2.13 Cannot Group Bumper Track. The track has been unselected.</a></li>
+<li><a href="MSG_CANNOT_GROUP_TRACK.html#MSG_CANNOT_GROUP_TRACK">C.2.14 Cannot Group selected track type %s.</a></li>
+<li><a href="MSG_JOIN_NOTBEZIERORCORNU.html#MSG_JOIN_NOTBEZIERORCORNU">C.2.15 Cannot Join Bezier or Cornu track if Easement is not Cornu</a></li>
+<li><a href="MSG_JOIN_EASEMENTS.html#MSG_JOIN_EASEMENTS">C.2.16 Cannot Join; Easements do not align or abut.</a></li>
+<li><a href="MSG_JOIN_CORNU_SAME.html#MSG_JOIN_CORNU_SAME">C.2.17 Cannot Join; Selected endpoints are on same track.</a></li>
+<li><a href="MSG_JOIN_SAME.html#MSG_JOIN_SAME">C.2.18 Cannot Join; Selected endpoints are on same track.</a></li>
+<li><a href="MSG_SELECTED_TRACKS_PARALLEL.html#MSG_SELECTED_TRACKS_PARALLEL">C.2.19 Cannot Join; Selected tracks are parallel.</a></li>
+<li><a href="MSG_GRID_SHOW_SPACE_GTR_0.html#MSG_GRID_SHOW_SPACE_GTR_0">C.2.20 Cannot Show Grid; spacing must be greater than 0</a></li>
+<li><a href="MSG_CHANGE_ELEV_MODE.html#MSG_CHANGE_ELEV_MODE">C.2.21 Cannot change elevation mode.</a></li>
+<li><a href="MSG_LAYER_FREEZE.html#MSG_LAYER_FREEZE">C.2.22 Cannot freeze current layer</a></li>
+<li><a href="MSG_LAYER_HIDE.html#MSG_LAYER_HIDE">C.2.23 Cannot hide current layer</a></li>
+<li><a href="MSG_JOIN_TURNTABLE.html#MSG_JOIN_TURNTABLE">C.2.24 Cannot join from a turntable, try to a turntable</a></li>
+<li><a href="MSG_PRMFIL_OPEN_NEW.html#MSG_PRMFIL_OPEN_NEW">C.2.25 Cannot open New Parameter File: FILENAME</a></li>
+<li><a href="MSG_LAYER_SEL_FROZEN.html#MSG_LAYER_SEL_FROZEN">C.2.26 Cannot select a frozen layer</a></li>
+<li><a href="MSG_CANT_SPLIT_TRK.html#MSG_CANT_SPLIT_TRK">C.2.27 Cannot split TYPE track</a></li>
+<li><a href="MSG_LAYER_MODULE.html#MSG_LAYER_MODULE">C.2.28 Cannot turn current layer into a Module</a></li>
+<li><a href="MSG_CUSTMGM_CANT_WRITE.html#MSG_CUSTMGM_CANT_WRITE">C.2.29 Cannot write to parameter file: FILENAME</a></li>
+<li><a href="MSG_CARIMP_DUP_INDEX.html#MSG_CARIMP_DUP_INDEX">C.2.30 Car Index number duplicated.</a></li>
+<li><a href="MSG_CONN_PARAMS_TOO_BIG.html#MSG_CONN_PARAMS_TOO_BIG">C.2.31 Connection parameters reset to maximum values.</a></li>
+<li><a href="MSG_CONN_PARAMS_TOO_SMALL.html#MSG_CONN_PARAMS_TOO_SMALL">C.2.32 Connection parameters reset to minimum values.</a></li>
+<li><a href="MSG_CANT_PASTE.html#MSG_CANT_PASTE">C.2.33 Copy/Paste buffer is empty. There is nothing to Paste.</a></li>
+<li><a href="MSG_PROG_CORRUPTED.html#MSG_PROG_CORRUPTED">C.2.34 Critical file damaged!...</a></li>
+<li><a href="MSG_TODSGN_CROSSOVER_TOO_SHORT.html#MSG_TODSGN_CROSSOVER_TOO_SHORT">C.2.35 Crossover length is too short. Correct...</a></li>
+<li><a href="MSG_CURVE_TOO_LARGE.html#MSG_CURVE_TOO_LARGE">C.2.36 Curved track is too large.</a></li>
+<li><a href="MSG_TODSGN_REPLACE.html#MSG_TODSGN_REPLACE">C.2.37 Definition name is already in use. Saving this...</a></li>
+<li><a href="MSG_SAVE_CHANGES.html#MSG_SAVE_CHANGES">C.2.38 Do you want to save the changes made to your Layout?</a></li>
+<li><a href="MSG_CARIMP_DUP_COLUMNS.html#MSG_CARIMP_DUP_COLUMNS">C.2.39 Duplicate column headers found in Car Import file.</a></li>
+<li><a href="MSG_EP_ON_PATH.html#MSG_EP_ON_PATH">C.2.40 Endpoint already on Path.</a></li>
+<li><a href="MSG_UPGRADE_VERSION1.html#MSG_UPGRADE_VERSION1">C.2.41 File version %ld is greater than supported...</a></li>
+<li><a href="MSG_UPGRADE_VERSION2.html#MSG_UPGRADE_VERSION2">C.2.42 File version %ld is greater than supported...</a></li>
+<li><a href="MSG_PARAM_UPGRADE_VERSION1.html#MSG_PARAM_UPGRADE_VERSION1">C.2.43 File version %ld is greater than supported...</a></li>
+<li><a href="MSG_PARAM_UPGRADE_VERSION2.html#MSG_PARAM_UPGRADE_VERSION2">C.2.44 File version %ld is greater than supported...</a></li>
+<li><a href="MSG_TRK_ALREADY_CONN.html#MSG_TRK_ALREADY_CONN">C.2.45 First|Second track is already connected.</a></li>
+<li><a href="MSG_MOVE_POINTS_OTHER_SIDE.html#MSG_MOVE_POINTS_OTHER_SIDE">C.2.46 Frog angle prevents placement of points. Move points to opposite side of frog.</a></li>
+<li><a href="MSG_CANT_PLACE_FROGPOINTS.html#MSG_CANT_PLACE_FROGPOINTS">C.2.47 Frog|Points cannot be placed on a turnout, circle or helix.</a></li>
+<li><a href="MSG_NO_ROOM_BTW_TRKS.html#MSG_NO_ROOM_BTW_TRKS">C.2.48 Insufficient space between existing stall tracks.</a></li>
+<li><a href="MSG_JOIN_DIFFER_ELEV.html#MSG_JOIN_DIFFER_ELEV">C.2.49 Joining tracks with differing elevations (N.NNN)</a></li>
+<li><a href="MSG_TRK_DESC_NOT_VISIBLE.html#MSG_TRK_DESC_NOT_VISIBLE">C.2.50 Label description is hidden</a></li>
+<li><a href="MSG_DESC_NOT_VISIBLE.html#MSG_DESC_NOT_VISIBLE">C.2.51 Label descriptions not visible</a></li>
+<li><a href="MSG_OBJECT_TOO_SHORT.html#MSG_OBJECT_TOO_SHORT">C.2.52 Length of object is too short.</a></li>
+<li><a href="MSG_PRINT_MAX_SIZE.html#MSG_PRINT_MAX_SIZE">C.2.53 Maximum allowed page size is W x H</a></li>
+<li><a href="MSG_PRMFIL_NO_CONTENTS.html#MSG_PRMFIL_NO_CONTENTS">C.2.54 New Parameter File has no CONTENTS line: FILENAME.</a></li>
+<li><a href="MSG_NO_CARPROTO.html#MSG_NO_CARPROTO">C.2.55 No Car Prototypes are defined....</a></li>
+<li><a href="MSG_NO_CARS.html#MSG_NO_CARS">C.2.56 No Cars are defined for the current scale....</a></li>
+<li><a href="MSG_PRMFIL_NO_MAP.html#MSG_PRMFIL_NO_MAP">C.2.57 No Parameter File Map for CONTENTS</a></li>
+<li><a href="MSG_GROUP_NO_PATHS.html#MSG_GROUP_NO_PATHS">C.2.58 No Paths were detected when grouping selected Tracks.</a></li>
+<li><a href="MSG_POLY_NOTHING_SELECTED.html#MSG_POLY_NOTHING_SELECTED">C.2.59 No Point on a Poly shape selected.</a></li>
+<li><a href="MSG_NO_TURNOUTS_AVAILABLE.html#MSG_NO_TURNOUTS_AVAILABLE">C.2.60 No Turnouts|Structures are available.</a></li>
+<li><a href="MSG_CARIMP_NO_DATA.html#MSG_CARIMP_NO_DATA">C.2.61 No data present in Car Import file.</a></li>
+<li><a href="MSG_NO_EMPTY_LAYER.html#MSG_NO_EMPTY_LAYER">C.2.62 No layer was found that has no contents, so the module can not be imported</a></li>
+<li><a href="MSG_NO_UNFROZEN_LAYER.html#MSG_NO_UNFROZEN_LAYER">C.2.63 No layer was found that wasn't frozen. Layer 0 is unfrozen.</a></li>
+<li><a href="MSG_PRINT_NO_PAGES.html#MSG_PRINT_NO_PAGES">C.2.64 No pages selected for printing.</a></li>
+<li><a href="MSG_NO_PATH_TO_EP.html#MSG_NO_PATH_TO_EP">C.2.65 No path between Profile and selected endpoint.</a></li>
+<li><a href="MSG_NO_SELECTED_TRK.html#MSG_NO_SELECTED_TRK">C.2.66 No track(s) selected!</a></li>
+<li><a href="MSG_CARDESC_VALUE_ZERO.html#MSG_CARDESC_VALUE_ZERO">C.2.67 Numeric values on the Car Description...</a></li>
+<li><a href="MSG_MOVE_OUT_OF_BOUNDS.html#MSG_MOVE_OUT_OF_BOUNDS">C.2.68 Object has moved beyond room boundaries.</a></li>
+<li><a href="MSG_PARALLEL_SEP_GTR_0.html#MSG_PARALLEL_SEP_GTR_0">C.2.69 Parallel separation must be greater than 0, or the new guage must be different than the old.</a></li>
+<li><a href="MSG_CARPART_DUPNAME.html#MSG_CARPART_DUPNAME">C.2.70 Part Number for this Manufacturer already exists....</a></li>
+<li><a href="MSG_PLAYBACK_VERSION_UPGRADE.html#MSG_PLAYBACK_VERSION_UPGRADE">C.2.71 Playback file version %ld is...</a></li>
+<li><a href="MSG_PLAYBACK_LISTENTRY.html#MSG_PLAYBACK_LISTENTRY">C.2.72 Playback: Cannot find list entry: NAME</a></li>
+<li><a href="MSG_DOMOUSE_BAD_OP.html#MSG_DOMOUSE_BAD_OP">C.2.73 Playback: unknown action NNN</a></li>
+<li><a href="MSG_NO_PRINTER_SELECTED.html#MSG_NO_PRINTER_SELECTED">C.2.74 Please select a printer from the Print Setup dialog.</a></li>
+<li><a href="MSG_MOVE_POINTS_AWAY_CLOSE.html#MSG_MOVE_POINTS_AWAY_CLOSE">C.2.75 Points are to close to frog; move away.</a></li>
+<li><a href="MSG_POLY_SHAPES_3_SIDES.html#MSG_POLY_SHAPES_3_SIDES">C.2.76 Polygons must have at least 3 nodes.</a></li>
+<li><a href="MSG_CARPROTO_DUPNAME.html#MSG_CARPROTO_DUPNAME">C.2.77 Prototype name already exists....</a></li>
+<li><a href="MSG_RADIUS_GTR_0.html#MSG_RADIUS_GTR_0">C.2.78 Radius must be greater than 0.</a></li>
+<li><a href="MSG_RADIUS_GTR_10000.html#MSG_RADIUS_GTR_10000">C.2.79 Radius must be less than 10000.</a></li>
+<li><a href="MSG_CARIMP_MISSING_COLUMNS.html#MSG_CARIMP_MISSING_COLUMNS">C.2.80 Required column headers missing from Car Import file.</a></li>
+<li><a href="MSG_RESCALE_TOO_BIG.html#MSG_RESCALE_TOO_BIG">C.2.81 Rescaled tracks do not fit within layouts room parameters...</a></li>
+<li><a href="MSG_BAD_SCALE_NAME.html#MSG_BAD_SCALE_NAME">C.2.82 Scale "SCALE1" is not valid. We will substitute a dummy scale based on "SCALE2". See 'Help|Recent Messages' for details.</a></li>
+<li><a href="MSG_BAD_SCALE_INDEX.html#MSG_BAD_SCALE_INDEX">C.2.83 Scale index (NNN) is not valid. Do you want use the current layout scale (SCALE)? Or create an "Unknown" scale? See 'Help|Recent Messages' for details.</a></li>
+<li><a href="MSG_2ND_TRK_NOT_SEL_UNSEL.html#MSG_2ND_TRK_NOT_SEL_UNSEL">C.2.84 Second track must be selected|unselected</a></li>
+<li><a href="MSG_SEL_POS_FIRST.html#MSG_SEL_POS_FIRST">C.2.85 Select position prior to entering Text.</a></li>
+<li><a href="MSG_OUT_OF_BOUNDS.html#MSG_OUT_OF_BOUNDS">C.2.86 Selected page is out of bounds.</a></li>
+<li><a href="MSG_CARPROTO_BADSEGS.html#MSG_CARPROTO_BADSEGS">C.2.87 Selected shapes must define a rectangular area ...</a></li>
+<li><a href="MSG_TOO_FAR_APART_DIVERGE.html#MSG_TOO_FAR_APART_DIVERGE">C.2.88 Selected tracks deviate too much or are too far apart from each other.</a></li>
+<li><a href="MSG_COMMAND_DISABLED.html#MSG_COMMAND_DISABLED">C.2.89 Specified command disabled.</a></li>
+<li><a href="MSG_SPLIT_POS_BTW_MERGEPTS.html#MSG_SPLIT_POS_BTW_MERGEPTS">C.2.90 Split position between Turnout Points</a></li>
+<li><a href="MSG_SPLIT_PATH_NOT_UNIQUE.html#MSG_SPLIT_PATH_NOT_UNIQUE">C.2.91 Split position not on unique path</a></li>
+<li><a href="MSG_RADIUS_TOO_BIG.html#MSG_RADIUS_TOO_BIG">C.2.92 The Circle or Helix will not fit within the layouts room parameters (Height and Width).</a></li>
+<li><a href="MSG_NOT_UNFROZEN_LAYER.html#MSG_NOT_UNFROZEN_LAYER">C.2.93 The current layer was defined as frozen. It is now unfrozen.</a></li>
+<li><a href="MSG_TODSGN_CORNU_TOO_COMPLEX.html#MSG_TODSGN_CORNU_TOO_COMPLEX">C.2.94 The curves created by the Turnout Designer for a cornu curve have more than 128 segments....</a></li>
+<li><a href="MSG_ENTERED_STRING_TRUNCATED.html#MSG_ENTERED_STRING_TRUNCATED">C.2.95 The entered text is too long. Maximum length is %d.</a></li>
+<li><a href="MSG_TEXT_TOO_LONG.html#MSG_TEXT_TOO_LONG">C.2.96 The entered text was too long for the text object. It was truncated.</a></li>
+<li><a href="MSG_CARIMP_MISSING_PARTNO.html#MSG_CARIMP_MISSING_PARTNO">C.2.97 The following car has no Part Number...</a></li>
+<li><a href="MSG_CARIMP_MISSING_DIMS.html#MSG_CARIMP_MISSING_DIMS">C.2.98 The following car has no dimensions and a...</a></li>
+<li><a href="MSG_CARIMP_IGNORED_COLUMN.html#MSG_CARIMP_IGNORED_COLUMN">C.2.99 The following column in the Car Import file will be ignored:...</a></li>
+<li><a href="MSG_CANT_MOVE_UNDER_TRAIN.html#MSG_CANT_MOVE_UNDER_TRAIN">C.2.100 The position of a turnout or turntable cannot be changed while occupied by a train.</a></li>
+<li><a href="MSG_SPLITTED_OBJECT_TOO_SHORT.html#MSG_SPLITTED_OBJECT_TOO_SHORT">C.2.101 The resulting length of one track piece is shorter than the minimum length of %d.</a></li>
+<li><a href="MSG_STRUCT_NO_STRUCTS.html#MSG_STRUCT_NO_STRUCTS">C.2.102 There are no structures to choose from in the structure...</a></li>
+<li><a href="MSG_TURNOUT_NO_TURNOUT.html#MSG_TURNOUT_NO_TURNOUT">C.2.103 There are no turnouts to choose from in the turnout...</a></li>
+<li><a href="MSG_NO_UNCONN_EP.html#MSG_NO_UNCONN_EP">C.2.104 There are no unconnected end points for this track</a></li>
+<li><a href="MSG_PULL_FEW_SECTIONS.html#MSG_PULL_FEW_SECTIONS">C.2.105 There are too few sections in this loop.</a></li>
+<li><a href="MSG_NO_REDO.html#MSG_NO_REDO">C.2.106 There is nothing to redo!</a></li>
+<li><a href="MSG_NO_UNDO.html#MSG_NO_UNDO">C.2.107 There is nothing to undo!</a></li>
+<li><a href="MSG_TOOMANYSEGSINGROUP.html#MSG_TOOMANYSEGSINGROUP">C.2.108 Too many track segments in Group.</a></li>
+<li><a href="MSG_CANNOT_CHANGE.html#MSG_CANNOT_CHANGE">C.2.109 Track cannot be changed.</a></li>
+<li><a href="MSG_POINT_INSIDE_TURNTABLE.html#MSG_POINT_INSIDE_TURNTABLE">C.2.110 Track endpoint is within turntable radius.</a></li>
+<li><a href="MSG_MOVE_POINTS_AWAY_NO_INTERSECTION.html#MSG_MOVE_POINTS_AWAY_NO_INTERSECTION">C.2.111 Track intersection not possible; move points away from frog.</a></li>
+<li><a href="MSG_TRK_TOO_SHORT.html#MSG_TRK_TOO_SHORT">C.2.112 Track is too short by N.NNN</a></li>
+<li><a href="MSG_RADIUS_LSS_EASE_MIN.html#MSG_RADIUS_LSS_EASE_MIN">C.2.113 Track radius (N.NNN) is smaller than easement minimum (N.NNN).</a></li>
+<li><a href="MSG_SEGMENT_NOT_ON_PATH.html#MSG_SEGMENT_NOT_ON_PATH">C.2.114 Track segment N not on Path for Turnout</a></li>
+<li><a href="MSG_TOOMANYSEGSINGROUP2.html#MSG_TOOMANYSEGSINGROUP2">C.2.115 Track segments appear too late in Group segment list.</a></li>
+<li><a href="MSG_CANT_MODIFY_FROZEN_TRK.html#MSG_CANT_MODIFY_FROZEN_TRK">C.2.116 Tracks in a frozen layer cannot be modified.</a></li>
+<li><a href="MSG_CANT_MODIFY_MODULE_TRK.html#MSG_CANT_MODIFY_MODULE_TRK">C.2.117 Tracks in a module cannot be modified.</a></li>
+<li><a href="MSG_SEGMENTS_DIFFER.html#MSG_SEGMENTS_DIFFER">C.2.118 Turnout definition contains non-track segments....</a></li>
+<li><a href="MSG_TURNTABLE_DIAM_GTR_0.html#MSG_TURNTABLE_DIAM_GTR_0">C.2.119 Turntable diameter must greater than 0.</a></li>
+<li><a href="MSG_UNDO_ASSERT.html#MSG_UNDO_ASSERT">C.2.120 Undo assertion failure %s:%d...</a></li>
+<li><a href="MSG_LAYOUT_LINES_SKIPPED.html#MSG_LAYOUT_LINES_SKIPPED">C.2.121 While processing Layout file %s, %d lines were skipped because they were not recognized.</a></li>
+<li><a href="MSG_PARAM_LINES_SKIPPED.html#MSG_PARAM_LINES_SKIPPED">C.2.122 While processing Parameter file %s, %d lines were skipped because they were not recognized.</a></li>
+<li><a href="MSG_BETA_NOTICE.html#MSG_BETA_NOTICE">C.2.123 XTrackCAD Version %s: Please note that this Beta Version of XTrackCAD is still undergoing final testing before its official release. The sole purpose of this Beta Version is to conduct testing and obtain feedback. Should you encounter any bugs, glitches, lack of functionality or other problems, please let us know immediately so we can rectify these accordingly. Your help in this regard is greatly appreciated!</a></li>
+<li><a href="MSG_BITMAP_SIZE_WARNING.html#MSG_BITMAP_SIZE_WARNING">C.2.124 You have specified a large bitmap....</a></li>
+<li><a href="MSG_PT_IS_NOT_TRK.html#MSG_PT_IS_NOT_TRK">C.2.125 [X Y] is not a track</a></li>
+</ul>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Message Types</title>
+<link rel="previous" href="messages.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="messageList.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="messageType"></a>C.1 <a name="i0"></a>Message Types</h1>
+<p>
+<em>XTrackCAD</em> generates three types of messages:
+</p>
+<dl><dd>
+<em>Notices</em>, which appear in their own window and require you to press a button to make a choice or dismiss them.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Error messages</em>, which appear in the <strong>Status-bar</strong> (<a href="mainW.html#mainW">Section 3.1</a>) and are accompanied by a beep.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Information messages</em>, which appear in the <strong>Status-bar</strong> (<a href="mainW.html#mainW">Section 3.1</a>) without a beep.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+<em>Notices</em> and <em>Error messages</em> that might be encountered are listed here with a explanation. The <strong>Recent Messages</strong> menu item on the <strong>Help</strong> (<a href="helpM.html#helpM">Section 2.6</a>) menu contains a list of the most recent messages. Selecting one of the entries presents information on the particular message.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+The notation <em>abc|xyx</em> indicates the message can appear with either of the values (<em>abc</em> or <em>xyz</em>). Items in <em>UPPERCASE</em> indicate numeric (such as lengths) or string (such as filenames) values.
+</dd>
+</dl>
+<p>
+<a href="messageList.html#messageList">Section C.2</a> provides detail explanation of each information or error message.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Message Explanations</title>
+<link rel="previous" href="messageType.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_HELIX_TURNS_GTR_0.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="messageList"></a>C.2 Message Explanations</h1>
+<ul>
+<li><a href="MSG_HELIX_TURNS_GTR_0.html#MSG_HELIX_TURNS_GTR_0">C.2.1 A Helix must have one or more loops of track.</a></li>
+<li><a href="MSG_SEL_TRK_FROZEN.html#MSG_SEL_TRK_FROZEN">C.2.2 A frozen layer contains selected track. Command cannot be executed.</a></li>
+<li><a href="MSG_LARGE_FONT.html#MSG_LARGE_FONT">C.2.3 A large font has been selected....</a></li>
+<li><a href="MSG_TODSGN_DESC_NONBLANK.html#MSG_TODSGN_DESC_NONBLANK">C.2.4 All description fields present in the Turnout...</a></li>
+<li><a href="MSG_GROUP_NONBLANK.html#MSG_GROUP_NONBLANK">C.2.5 All fields listed in the Group dialog must contain data....</a></li>
+<li><a href="MSG_TODSGN_VALUES_GTR_0.html#MSG_TODSGN_VALUES_GTR_0">C.2.6 All values specified in the Turnout Designer must be...</a></li>
+<li><a href="MSG_CURVE_OUT_OF_RANGE.html#MSG_CURVE_OUT_OF_RANGE">C.2.7 Angle must be between 0&#176; and 360&#176;.</a></li>
+<li><a href="MSG_CUSTMGM_DELETE_CONFIRM.html#MSG_CUSTMGM_DELETE_CONFIRM">C.2.8 Are you sure you want to delete the NNN definition(s)?</a></li>
+<li><a href="MSG_WBITMAP_FAILED.html#MSG_WBITMAP_FAILED">C.2.9 Bitmap create or write function failed.</a></li>
+<li><a href="MSG_BITMAP_TOO_LARGE.html#MSG_BITMAP_TOO_LARGE">C.2.10 Bitmap is too large.</a></li>
+<li><a href="MSG_POLY_MULTIPLE_SELECTED.html#MSG_POLY_MULTIPLE_SELECTED">C.2.11 Can't delete multiple points at once</a></li>
+<li><a href="MSG_GRID_ENABLE_SPACE_GTR_0.html#MSG_GRID_ENABLE_SPACE_GTR_0">C.2.12 Cannot Enable Grid; spacing must be greater than 0</a></li>
+<li><a href="MSG_CANT_GROUP_BUMPER1.html#MSG_CANT_GROUP_BUMPER1">C.2.13 Cannot Group Bumper Track. The track has been unselected.</a></li>
+<li><a href="MSG_CANNOT_GROUP_TRACK.html#MSG_CANNOT_GROUP_TRACK">C.2.14 Cannot Group selected track type %s.</a></li>
+<li><a href="MSG_JOIN_NOTBEZIERORCORNU.html#MSG_JOIN_NOTBEZIERORCORNU">C.2.15 Cannot Join Bezier or Cornu track if Easement is not Cornu</a></li>
+<li><a href="MSG_JOIN_EASEMENTS.html#MSG_JOIN_EASEMENTS">C.2.16 Cannot Join; Easements do not align or abut.</a></li>
+<li><a href="MSG_JOIN_CORNU_SAME.html#MSG_JOIN_CORNU_SAME">C.2.17 Cannot Join; Selected endpoints are on same track.</a></li>
+<li><a href="MSG_JOIN_SAME.html#MSG_JOIN_SAME">C.2.18 Cannot Join; Selected endpoints are on same track.</a></li>
+<li><a href="MSG_SELECTED_TRACKS_PARALLEL.html#MSG_SELECTED_TRACKS_PARALLEL">C.2.19 Cannot Join; Selected tracks are parallel.</a></li>
+<li><a href="MSG_GRID_SHOW_SPACE_GTR_0.html#MSG_GRID_SHOW_SPACE_GTR_0">C.2.20 Cannot Show Grid; spacing must be greater than 0</a></li>
+<li><a href="MSG_CHANGE_ELEV_MODE.html#MSG_CHANGE_ELEV_MODE">C.2.21 Cannot change elevation mode.</a></li>
+<li><a href="MSG_LAYER_FREEZE.html#MSG_LAYER_FREEZE">C.2.22 Cannot freeze current layer</a></li>
+<li><a href="MSG_LAYER_HIDE.html#MSG_LAYER_HIDE">C.2.23 Cannot hide current layer</a></li>
+<li><a href="MSG_JOIN_TURNTABLE.html#MSG_JOIN_TURNTABLE">C.2.24 Cannot join from a turntable, try to a turntable</a></li>
+<li><a href="MSG_PRMFIL_OPEN_NEW.html#MSG_PRMFIL_OPEN_NEW">C.2.25 Cannot open New Parameter File: FILENAME</a></li>
+<li><a href="MSG_LAYER_SEL_FROZEN.html#MSG_LAYER_SEL_FROZEN">C.2.26 Cannot select a frozen layer</a></li>
+<li><a href="MSG_CANT_SPLIT_TRK.html#MSG_CANT_SPLIT_TRK">C.2.27 Cannot split TYPE track</a></li>
+<li><a href="MSG_LAYER_MODULE.html#MSG_LAYER_MODULE">C.2.28 Cannot turn current layer into a Module</a></li>
+<li><a href="MSG_CUSTMGM_CANT_WRITE.html#MSG_CUSTMGM_CANT_WRITE">C.2.29 Cannot write to parameter file: FILENAME</a></li>
+<li><a href="MSG_CARIMP_DUP_INDEX.html#MSG_CARIMP_DUP_INDEX">C.2.30 Car Index number duplicated.</a></li>
+<li><a href="MSG_CONN_PARAMS_TOO_BIG.html#MSG_CONN_PARAMS_TOO_BIG">C.2.31 Connection parameters reset to maximum values.</a></li>
+<li><a href="MSG_CONN_PARAMS_TOO_SMALL.html#MSG_CONN_PARAMS_TOO_SMALL">C.2.32 Connection parameters reset to minimum values.</a></li>
+<li><a href="MSG_CANT_PASTE.html#MSG_CANT_PASTE">C.2.33 Copy/Paste buffer is empty. There is nothing to Paste.</a></li>
+<li><a href="MSG_PROG_CORRUPTED.html#MSG_PROG_CORRUPTED">C.2.34 Critical file damaged!...</a></li>
+<li><a href="MSG_TODSGN_CROSSOVER_TOO_SHORT.html#MSG_TODSGN_CROSSOVER_TOO_SHORT">C.2.35 Crossover length is too short. Correct...</a></li>
+<li><a href="MSG_CURVE_TOO_LARGE.html#MSG_CURVE_TOO_LARGE">C.2.36 Curved track is too large.</a></li>
+<li><a href="MSG_TODSGN_REPLACE.html#MSG_TODSGN_REPLACE">C.2.37 Definition name is already in use. Saving this...</a></li>
+<li><a href="MSG_SAVE_CHANGES.html#MSG_SAVE_CHANGES">C.2.38 Do you want to save the changes made to your Layout?</a></li>
+<li><a href="MSG_CARIMP_DUP_COLUMNS.html#MSG_CARIMP_DUP_COLUMNS">C.2.39 Duplicate column headers found in Car Import file.</a></li>
+<li><a href="MSG_EP_ON_PATH.html#MSG_EP_ON_PATH">C.2.40 Endpoint already on Path.</a></li>
+<li><a href="MSG_UPGRADE_VERSION1.html#MSG_UPGRADE_VERSION1">C.2.41 File version %ld is greater than supported...</a></li>
+<li><a href="MSG_UPGRADE_VERSION2.html#MSG_UPGRADE_VERSION2">C.2.42 File version %ld is greater than supported...</a></li>
+<li><a href="MSG_PARAM_UPGRADE_VERSION1.html#MSG_PARAM_UPGRADE_VERSION1">C.2.43 File version %ld is greater than supported...</a></li>
+<li><a href="MSG_PARAM_UPGRADE_VERSION2.html#MSG_PARAM_UPGRADE_VERSION2">C.2.44 File version %ld is greater than supported...</a></li>
+<li><a href="MSG_TRK_ALREADY_CONN.html#MSG_TRK_ALREADY_CONN">C.2.45 First|Second track is already connected.</a></li>
+<li><a href="MSG_MOVE_POINTS_OTHER_SIDE.html#MSG_MOVE_POINTS_OTHER_SIDE">C.2.46 Frog angle prevents placement of points. Move points to opposite side of frog.</a></li>
+<li><a href="MSG_CANT_PLACE_FROGPOINTS.html#MSG_CANT_PLACE_FROGPOINTS">C.2.47 Frog|Points cannot be placed on a turnout, circle or helix.</a></li>
+<li><a href="MSG_NO_ROOM_BTW_TRKS.html#MSG_NO_ROOM_BTW_TRKS">C.2.48 Insufficient space between existing stall tracks.</a></li>
+<li><a href="MSG_JOIN_DIFFER_ELEV.html#MSG_JOIN_DIFFER_ELEV">C.2.49 Joining tracks with differing elevations (N.NNN)</a></li>
+<li><a href="MSG_TRK_DESC_NOT_VISIBLE.html#MSG_TRK_DESC_NOT_VISIBLE">C.2.50 Label description is hidden</a></li>
+<li><a href="MSG_DESC_NOT_VISIBLE.html#MSG_DESC_NOT_VISIBLE">C.2.51 Label descriptions not visible</a></li>
+<li><a href="MSG_OBJECT_TOO_SHORT.html#MSG_OBJECT_TOO_SHORT">C.2.52 Length of object is too short.</a></li>
+<li><a href="MSG_PRINT_MAX_SIZE.html#MSG_PRINT_MAX_SIZE">C.2.53 Maximum allowed page size is W x H</a></li>
+<li><a href="MSG_PRMFIL_NO_CONTENTS.html#MSG_PRMFIL_NO_CONTENTS">C.2.54 New Parameter File has no CONTENTS line: FILENAME.</a></li>
+<li><a href="MSG_NO_CARPROTO.html#MSG_NO_CARPROTO">C.2.55 No Car Prototypes are defined....</a></li>
+<li><a href="MSG_NO_CARS.html#MSG_NO_CARS">C.2.56 No Cars are defined for the current scale....</a></li>
+<li><a href="MSG_PRMFIL_NO_MAP.html#MSG_PRMFIL_NO_MAP">C.2.57 No Parameter File Map for CONTENTS</a></li>
+<li><a href="MSG_GROUP_NO_PATHS.html#MSG_GROUP_NO_PATHS">C.2.58 No Paths were detected when grouping selected Tracks.</a></li>
+<li><a href="MSG_POLY_NOTHING_SELECTED.html#MSG_POLY_NOTHING_SELECTED">C.2.59 No Point on a Poly shape selected.</a></li>
+<li><a href="MSG_NO_TURNOUTS_AVAILABLE.html#MSG_NO_TURNOUTS_AVAILABLE">C.2.60 No Turnouts|Structures are available.</a></li>
+<li><a href="MSG_CARIMP_NO_DATA.html#MSG_CARIMP_NO_DATA">C.2.61 No data present in Car Import file.</a></li>
+<li><a href="MSG_NO_EMPTY_LAYER.html#MSG_NO_EMPTY_LAYER">C.2.62 No layer was found that has no contents, so the module can not be imported</a></li>
+<li><a href="MSG_NO_UNFROZEN_LAYER.html#MSG_NO_UNFROZEN_LAYER">C.2.63 No layer was found that wasn't frozen. Layer 0 is unfrozen.</a></li>
+<li><a href="MSG_PRINT_NO_PAGES.html#MSG_PRINT_NO_PAGES">C.2.64 No pages selected for printing.</a></li>
+<li><a href="MSG_NO_PATH_TO_EP.html#MSG_NO_PATH_TO_EP">C.2.65 No path between Profile and selected endpoint.</a></li>
+<li><a href="MSG_NO_SELECTED_TRK.html#MSG_NO_SELECTED_TRK">C.2.66 No track(s) selected!</a></li>
+<li><a href="MSG_CARDESC_VALUE_ZERO.html#MSG_CARDESC_VALUE_ZERO">C.2.67 Numeric values on the Car Description...</a></li>
+<li><a href="MSG_MOVE_OUT_OF_BOUNDS.html#MSG_MOVE_OUT_OF_BOUNDS">C.2.68 Object has moved beyond room boundaries.</a></li>
+<li><a href="MSG_PARALLEL_SEP_GTR_0.html#MSG_PARALLEL_SEP_GTR_0">C.2.69 Parallel separation must be greater than 0, or the new guage must be different than the old.</a></li>
+<li><a href="MSG_CARPART_DUPNAME.html#MSG_CARPART_DUPNAME">C.2.70 Part Number for this Manufacturer already exists....</a></li>
+<li><a href="MSG_PLAYBACK_VERSION_UPGRADE.html#MSG_PLAYBACK_VERSION_UPGRADE">C.2.71 Playback file version %ld is...</a></li>
+<li><a href="MSG_PLAYBACK_LISTENTRY.html#MSG_PLAYBACK_LISTENTRY">C.2.72 Playback: Cannot find list entry: NAME</a></li>
+<li><a href="MSG_DOMOUSE_BAD_OP.html#MSG_DOMOUSE_BAD_OP">C.2.73 Playback: unknown action NNN</a></li>
+<li><a href="MSG_NO_PRINTER_SELECTED.html#MSG_NO_PRINTER_SELECTED">C.2.74 Please select a printer from the Print Setup dialog.</a></li>
+<li><a href="MSG_MOVE_POINTS_AWAY_CLOSE.html#MSG_MOVE_POINTS_AWAY_CLOSE">C.2.75 Points are to close to frog; move away.</a></li>
+<li><a href="MSG_POLY_SHAPES_3_SIDES.html#MSG_POLY_SHAPES_3_SIDES">C.2.76 Polygons must have at least 3 nodes.</a></li>
+<li><a href="MSG_CARPROTO_DUPNAME.html#MSG_CARPROTO_DUPNAME">C.2.77 Prototype name already exists....</a></li>
+<li><a href="MSG_RADIUS_GTR_0.html#MSG_RADIUS_GTR_0">C.2.78 Radius must be greater than 0.</a></li>
+<li><a href="MSG_RADIUS_GTR_10000.html#MSG_RADIUS_GTR_10000">C.2.79 Radius must be less than 10000.</a></li>
+<li><a href="MSG_CARIMP_MISSING_COLUMNS.html#MSG_CARIMP_MISSING_COLUMNS">C.2.80 Required column headers missing from Car Import file.</a></li>
+<li><a href="MSG_RESCALE_TOO_BIG.html#MSG_RESCALE_TOO_BIG">C.2.81 Rescaled tracks do not fit within layouts room parameters...</a></li>
+<li><a href="MSG_BAD_SCALE_NAME.html#MSG_BAD_SCALE_NAME">C.2.82 Scale "SCALE1" is not valid. We will substitute a dummy scale based on "SCALE2". See 'Help|Recent Messages' for details.</a></li>
+<li><a href="MSG_BAD_SCALE_INDEX.html#MSG_BAD_SCALE_INDEX">C.2.83 Scale index (NNN) is not valid. Do you want use the current layout scale (SCALE)? Or create an "Unknown" scale? See 'Help|Recent Messages' for details.</a></li>
+<li><a href="MSG_2ND_TRK_NOT_SEL_UNSEL.html#MSG_2ND_TRK_NOT_SEL_UNSEL">C.2.84 Second track must be selected|unselected</a></li>
+<li><a href="MSG_SEL_POS_FIRST.html#MSG_SEL_POS_FIRST">C.2.85 Select position prior to entering Text.</a></li>
+<li><a href="MSG_OUT_OF_BOUNDS.html#MSG_OUT_OF_BOUNDS">C.2.86 Selected page is out of bounds.</a></li>
+<li><a href="MSG_CARPROTO_BADSEGS.html#MSG_CARPROTO_BADSEGS">C.2.87 Selected shapes must define a rectangular area ...</a></li>
+<li><a href="MSG_TOO_FAR_APART_DIVERGE.html#MSG_TOO_FAR_APART_DIVERGE">C.2.88 Selected tracks deviate too much or are too far apart from each other.</a></li>
+<li><a href="MSG_COMMAND_DISABLED.html#MSG_COMMAND_DISABLED">C.2.89 Specified command disabled.</a></li>
+<li><a href="MSG_SPLIT_POS_BTW_MERGEPTS.html#MSG_SPLIT_POS_BTW_MERGEPTS">C.2.90 Split position between Turnout Points</a></li>
+<li><a href="MSG_SPLIT_PATH_NOT_UNIQUE.html#MSG_SPLIT_PATH_NOT_UNIQUE">C.2.91 Split position not on unique path</a></li>
+<li><a href="MSG_RADIUS_TOO_BIG.html#MSG_RADIUS_TOO_BIG">C.2.92 The Circle or Helix will not fit within the layouts room parameters (Height and Width).</a></li>
+<li><a href="MSG_NOT_UNFROZEN_LAYER.html#MSG_NOT_UNFROZEN_LAYER">C.2.93 The current layer was defined as frozen. It is now unfrozen.</a></li>
+<li><a href="MSG_TODSGN_CORNU_TOO_COMPLEX.html#MSG_TODSGN_CORNU_TOO_COMPLEX">C.2.94 The curves created by the Turnout Designer for a cornu curve have more than 128 segments....</a></li>
+<li><a href="MSG_ENTERED_STRING_TRUNCATED.html#MSG_ENTERED_STRING_TRUNCATED">C.2.95 The entered text is too long. Maximum length is %d.</a></li>
+<li><a href="MSG_TEXT_TOO_LONG.html#MSG_TEXT_TOO_LONG">C.2.96 The entered text was too long for the text object. It was truncated.</a></li>
+<li><a href="MSG_CARIMP_MISSING_PARTNO.html#MSG_CARIMP_MISSING_PARTNO">C.2.97 The following car has no Part Number...</a></li>
+<li><a href="MSG_CARIMP_MISSING_DIMS.html#MSG_CARIMP_MISSING_DIMS">C.2.98 The following car has no dimensions and a...</a></li>
+<li><a href="MSG_CARIMP_IGNORED_COLUMN.html#MSG_CARIMP_IGNORED_COLUMN">C.2.99 The following column in the Car Import file will be ignored:...</a></li>
+<li><a href="MSG_CANT_MOVE_UNDER_TRAIN.html#MSG_CANT_MOVE_UNDER_TRAIN">C.2.100 The position of a turnout or turntable cannot be changed while occupied by a train.</a></li>
+<li><a href="MSG_SPLITTED_OBJECT_TOO_SHORT.html#MSG_SPLITTED_OBJECT_TOO_SHORT">C.2.101 The resulting length of one track piece is shorter than the minimum length of %d.</a></li>
+<li><a href="MSG_STRUCT_NO_STRUCTS.html#MSG_STRUCT_NO_STRUCTS">C.2.102 There are no structures to choose from in the structure...</a></li>
+<li><a href="MSG_TURNOUT_NO_TURNOUT.html#MSG_TURNOUT_NO_TURNOUT">C.2.103 There are no turnouts to choose from in the turnout...</a></li>
+<li><a href="MSG_NO_UNCONN_EP.html#MSG_NO_UNCONN_EP">C.2.104 There are no unconnected end points for this track</a></li>
+<li><a href="MSG_PULL_FEW_SECTIONS.html#MSG_PULL_FEW_SECTIONS">C.2.105 There are too few sections in this loop.</a></li>
+<li><a href="MSG_NO_REDO.html#MSG_NO_REDO">C.2.106 There is nothing to redo!</a></li>
+<li><a href="MSG_NO_UNDO.html#MSG_NO_UNDO">C.2.107 There is nothing to undo!</a></li>
+<li><a href="MSG_TOOMANYSEGSINGROUP.html#MSG_TOOMANYSEGSINGROUP">C.2.108 Too many track segments in Group.</a></li>
+<li><a href="MSG_CANNOT_CHANGE.html#MSG_CANNOT_CHANGE">C.2.109 Track cannot be changed.</a></li>
+<li><a href="MSG_POINT_INSIDE_TURNTABLE.html#MSG_POINT_INSIDE_TURNTABLE">C.2.110 Track endpoint is within turntable radius.</a></li>
+<li><a href="MSG_MOVE_POINTS_AWAY_NO_INTERSECTION.html#MSG_MOVE_POINTS_AWAY_NO_INTERSECTION">C.2.111 Track intersection not possible; move points away from frog.</a></li>
+<li><a href="MSG_TRK_TOO_SHORT.html#MSG_TRK_TOO_SHORT">C.2.112 Track is too short by N.NNN</a></li>
+<li><a href="MSG_RADIUS_LSS_EASE_MIN.html#MSG_RADIUS_LSS_EASE_MIN">C.2.113 Track radius (N.NNN) is smaller than easement minimum (N.NNN).</a></li>
+<li><a href="MSG_SEGMENT_NOT_ON_PATH.html#MSG_SEGMENT_NOT_ON_PATH">C.2.114 Track segment N not on Path for Turnout</a></li>
+<li><a href="MSG_TOOMANYSEGSINGROUP2.html#MSG_TOOMANYSEGSINGROUP2">C.2.115 Track segments appear too late in Group segment list.</a></li>
+<li><a href="MSG_CANT_MODIFY_FROZEN_TRK.html#MSG_CANT_MODIFY_FROZEN_TRK">C.2.116 Tracks in a frozen layer cannot be modified.</a></li>
+<li><a href="MSG_CANT_MODIFY_MODULE_TRK.html#MSG_CANT_MODIFY_MODULE_TRK">C.2.117 Tracks in a module cannot be modified.</a></li>
+<li><a href="MSG_SEGMENTS_DIFFER.html#MSG_SEGMENTS_DIFFER">C.2.118 Turnout definition contains non-track segments....</a></li>
+<li><a href="MSG_TURNTABLE_DIAM_GTR_0.html#MSG_TURNTABLE_DIAM_GTR_0">C.2.119 Turntable diameter must greater than 0.</a></li>
+<li><a href="MSG_UNDO_ASSERT.html#MSG_UNDO_ASSERT">C.2.120 Undo assertion failure %s:%d...</a></li>
+<li><a href="MSG_LAYOUT_LINES_SKIPPED.html#MSG_LAYOUT_LINES_SKIPPED">C.2.121 While processing Layout file %s, %d lines were skipped because they were not recognized.</a></li>
+<li><a href="MSG_PARAM_LINES_SKIPPED.html#MSG_PARAM_LINES_SKIPPED">C.2.122 While processing Parameter file %s, %d lines were skipped because they were not recognized.</a></li>
+<li><a href="MSG_BETA_NOTICE.html#MSG_BETA_NOTICE">C.2.123 XTrackCAD Version %s: Please note that this Beta Version of XTrackCAD is still undergoing final testing before its official release. The sole purpose of this Beta Version is to conduct testing and obtain feedback. Should you encounter any bugs, glitches, lack of functionality or other problems, please let us know immediately so we can rectify these accordingly. Your help in this regard is greatly appreciated!</a></li>
+<li><a href="MSG_BITMAP_SIZE_WARNING.html#MSG_BITMAP_SIZE_WARNING">C.2.124 You have specified a large bitmap....</a></li>
+<li><a href="MSG_PT_IS_NOT_TRK.html#MSG_PT_IS_NOT_TRK">C.2.125 [X Y] is not a track</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>A Helix must have one or more loops of track.</title>
+<link rel="previous" href="messageList.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_SEL_TRK_FROZEN.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_HELIX_TURNS_GTR_0"></a>C.2.1 A Helix must have one or more loops of track.</h1>
+<p>
+A Helix cannot be created with less than one complete loop of track. Anything less than one loop is considered a section of curved track.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>A frozen layer contains selected track. Command cannot be executed.</title>
+<link rel="previous" href="MSG_HELIX_TURNS_GTR_0.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_LARGE_FONT.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_SEL_TRK_FROZEN"></a>C.2.2 A frozen layer contains selected track. Command cannot be executed.</h1>
+<p>
+This operation cannot be executed as segments of Selected track are present on a frozen layer. Track changes or deletions may be performed only on unfrozen layers. Deselect objects that appear on frozen layers or unfreeze the layers.
+</p>
+<p>
+Refer to <a href="cmdLayer.html#cmdLayer">section 2.9.5</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>A large font has been selected....</title>
+<link rel="previous" href="MSG_SEL_TRK_FROZEN.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_TODSGN_DESC_NONBLANK.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_LARGE_FONT"></a>C.2.3 A large font has been selected....</h1>
+<p>
+A large font has been selected. Large fonts (or changing fonts sizes) may take a noticeable amount of time to load.
+</p>
+<p>
+Refer to <a href="cmdText.html#cmdText">section 2.3.9</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>All description fields present in the Turnout...</title>
+<link rel="previous" href="MSG_LARGE_FONT.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_GROUP_NONBLANK.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_TODSGN_DESC_NONBLANK"></a>C.2.4 All description fields present in the Turnout...</h1>
+<p>
+Turnout descriptions should be as accurate as possible. All description fields listed in the <strong>Turnout Designer</strong> must contain appropriate information.
+</p>
+<p>
+Refer to <a href="cmdTurnoutNew.html#cmdTurnoutNew">section 2.9.9</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>All fields listed in the Group dialog must contain data....</title>
+<link rel="previous" href="MSG_TODSGN_DESC_NONBLANK.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_TODSGN_VALUES_GTR_0.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_GROUP_NONBLANK"></a>C.2.5 All fields listed in the Group dialog must contain data....</h1>
+<p>
+The <strong>Group</strong> dialog shows the Manufacturer, Description and part number (Title) of the new definition. Initial values are based on selected turnouts and structures or on the last <strong>Ungroup</strong>ed object. The dialog also contains a toggle button (<strong>Replace with new group</strong>?), which is used if you want to replace the selected objects with the new definition. All fields listed in this dialog window must contain data.
+</p>
+<p>
+Refer to <a href="cmdGroup.html#cmdGroup">section 2.9.4</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>All values specified in the Turnout Designer must be...</title>
+<link rel="previous" href="MSG_GROUP_NONBLANK.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CURVE_OUT_OF_RANGE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_TODSGN_VALUES_GTR_0"></a>C.2.6 All values specified in the Turnout Designer must be...</h1>
+<p>
+Turnout dimensions should be as accurate as possible. All values specified in the <strong>Turnout Designer</strong> must be greater than 0.
+</p>
+<p>
+Refer to <a href="cmdTurnoutNew.html#cmdTurnoutNew">section 2.9.9</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Angle must be between 0&#176; and 360&#176;.</title>
+<link rel="previous" href="MSG_TODSGN_VALUES_GTR_0.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CUSTMGM_DELETE_CONFIRM.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CURVE_OUT_OF_RANGE"></a>C.2.7 Angle must be between 0&#176; and 360&#176;.</h1>
+<p>
+The angle specified for a curve must be between 0&#176; and 360&#176;.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Are you sure you want to delete the NNN definition(s)?</title>
+<link rel="previous" href="MSG_CURVE_OUT_OF_RANGE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_WBITMAP_FAILED.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CUSTMGM_DELETE_CONFIRM"></a>C.2.8 Are you sure you want to delete the NNN definition(s)?</h1>
+<p>
+You are about to delete a custom turnout or structure design from the <strong>Custom Design</strong> file (<code>xtrkcad.cus</code>) file. This action cannot be undone.
+</p>
+<p>
+Refer to <a href="installDir.html#installDir">section 1.9.2</a> and <a href="workDir.html#workDir">section 1.9.3</a> for an explanation of the files used by <em>XTrackCAD</em>.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Bitmap create or write function failed.</title>
+<link rel="previous" href="MSG_CUSTMGM_DELETE_CONFIRM.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_BITMAP_TOO_LARGE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_WBITMAP_FAILED"></a>C.2.9 Bitmap create or write function failed.</h1>
+<p>
+Your attempt to create or write a bitmap file failed. This could be due to the bitmap being too large or a lack of system resources. Try creating a smaller Bitmap or freeing system resources by closing other applications and dialog windows.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Bitmap is too large.</title>
+<link rel="previous" href="MSG_WBITMAP_FAILED.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_POLY_MULTIPLE_SELECTED.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_BITMAP_TOO_LARGE"></a>C.2.10 Bitmap is too large.</h1>
+<p>
+A Bitmap must be less than 32000 pixels in height or width. Try increasing the DPI (or DPCM) value.
+</p>
+<p>
+Refer to <a href="cmdOutputbitmap.html#cmdOutputbitmap">section 2.5.2</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Can't delete multiple points at once</title>
+<link rel="previous" href="MSG_BITMAP_TOO_LARGE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_GRID_ENABLE_SPACE_GTR_0.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_POLY_MULTIPLE_SELECTED"></a>C.2.11 Can't delete multiple points at once</h1>
+<p>
+Polygons and Poly Lines points can only be deleted one at a time.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot Enable Grid; spacing must be greater than 0</title>
+<link rel="previous" href="MSG_POLY_MULTIPLE_SELECTED.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CANT_GROUP_BUMPER1.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_GRID_ENABLE_SPACE_GTR_0"></a>C.2.12 Cannot Enable Grid; spacing must be greater than 0</h1>
+<p>
+Before the horizontal or vertical <strong>Snap Grid</strong> can be <strong>Enable</strong>d, the corresponding <em>Spacing</em> value(s) on the <strong>Grid</strong> dialog must be set to a value greater than 0.
+</p>
+<p>
+Refer to <a href="cmdGrid.html#cmdGrid">section 2.12.2</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot Group Bumper Track. The track has been unselected.</title>
+<link rel="previous" href="MSG_GRID_ENABLE_SPACE_GTR_0.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CANNOT_GROUP_TRACK.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CANT_GROUP_BUMPER1"></a>C.2.13 Cannot Group Bumper Track. The track has been unselected.</h1>
+<p>
+Bumper tracks (tracks with 1 endpoint) are not supported by the Group command. Convert the Bumper track to a Straight track by Ungrouping <a href="cmdUngroup.html#cmdUngroup">section 2.9.11</a> it first.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot Group selected track type %s.</title>
+<link rel="previous" href="MSG_CANT_GROUP_BUMPER1.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_JOIN_NOTBEZIERORCORNU.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CANNOT_GROUP_TRACK"></a>C.2.14 Cannot Group selected track type %s.</h1>
+<p>
+Group objects are formed from Straight, Curved, Turnout or Sectional track or Structures or Draw elements. The selected objects include an object which is not one of these. Reselect the objects, including only elements of these types.
+</p>
+<p>
+Refer to <a href="cmdGroup.html#cmdGroup">section 2.9.4</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot Join Bezier or Cornu track if Easement is not Cornu</title>
+<link rel="previous" href="MSG_CANNOT_GROUP_TRACK.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_JOIN_EASEMENTS.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_JOIN_NOTBEZIERORCORNU"></a>C.2.15 Cannot Join Bezier or Cornu track if Easement is not Cornu</h1>
+<p>
+You must change the Easement value to Cornu in order to join Bezier or Cornu Tracks
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot Join; Easements do not align or abut.</title>
+<link rel="previous" href="MSG_JOIN_NOTBEZIERORCORNU.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_JOIN_CORNU_SAME.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_JOIN_EASEMENTS"></a>C.2.16 Cannot Join; Easements do not align or abut.</h1>
+<p>
+You are trying to <strong>Join</strong> two <em>easement</em> curves. This can be achieved only if the two curves abut and are aligned. Otherwise, you can delete the <em>easement</em> curves and try to <strong>Join</strong> to connected tracks.
+</p>
+<p>
+Refer to <a href="cmdJoin.html#cmdJoin">section 2.2.7</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot Join; Selected endpoints are on same track.</title>
+<link rel="previous" href="MSG_JOIN_EASEMENTS.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_JOIN_SAME.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_JOIN_CORNU_SAME"></a>C.2.17 Cannot Join; Selected endpoints are on same track.</h1>
+<p>
+You are trying to <strong>Join</strong> a section of track with itself. Different tracks must selected when using the <strong>Join</strong> command.
+</p>
+<p>
+Refer to <a href="cmdJoin.html#cmdJoin">section 2.2.7</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot Join; Selected endpoints are on same track.</title>
+<link rel="previous" href="MSG_JOIN_CORNU_SAME.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_SELECTED_TRACKS_PARALLEL.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_JOIN_SAME"></a>C.2.18 Cannot Join; Selected endpoints are on same track.</h1>
+<p>
+You are trying to <strong>Join</strong> a section of track with itself. Different tracks must selected when using the <strong>Join</strong> command.
+</p>
+<p>
+Refer to <a href="cmdJoin.html#cmdJoin">section 2.2.7</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot Join; Selected tracks are parallel.</title>
+<link rel="previous" href="MSG_JOIN_SAME.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_GRID_SHOW_SPACE_GTR_0.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_SELECTED_TRACKS_PARALLEL"></a>C.2.19 Cannot Join; Selected tracks are parallel.</h1>
+<p>
+These tracks cannot be joined as they are parallel to each other and the selected <em>endpoints</em>, point in opposite directions. To <strong>Join</strong> these two tracks, pick <em>endpoints</em> that point in the same direction.
+</p>
+<p>
+Refer to <a href="cmdJoin.html#cmdJoin">section 2.2.7</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot Show Grid; spacing must be greater than 0</title>
+<link rel="previous" href="MSG_SELECTED_TRACKS_PARALLEL.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CHANGE_ELEV_MODE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_GRID_SHOW_SPACE_GTR_0"></a>C.2.20 Cannot Show Grid; spacing must be greater than 0</h1>
+<p>
+Before the <strong>Snap Grid</strong> can be <strong>Show</strong>n, corresponding horizontal or vertical <em>Spacing</em> value(s) on the <strong>Grid</strong> dialog must be set to a value greater than 0.
+</p>
+<p>
+Refer to <a href="cmdGrid.html#cmdGrid">section 2.12.2</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot change elevation mode.</title>
+<link rel="previous" href="MSG_GRID_SHOW_SPACE_GTR_0.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_LAYER_FREEZE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CHANGE_ELEV_MODE"></a>C.2.21 Cannot change elevation mode.</h1>
+<p>
+In the <strong>Profile</strong> command, the <strong>Elevation</strong> mode for this <em>endpoint</em> can be change only if it is <strong>Defined</strong>, <strong>Ignored</strong> or <strong>None</strong>. The <strong>Elevation</strong> command can be used to change this <em>endpoint</em>.
+</p>
+<p>
+Refer to <a href="cmdElevation.html#cmdElevation">section 2.2.5</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot freeze current layer</title>
+<link rel="previous" href="MSG_CHANGE_ELEV_MODE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_LAYER_HIDE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_LAYER_FREEZE"></a>C.2.22 Cannot freeze current layer</h1>
+<p>
+The current <strong>Layer</strong> is where most new objects are created. It's not possible to freeze this layer, since it would not be able to create objects. Change the current <strong>Layer</strong> to some other <strong>Layer</strong> before trying to freeze this Layer.
+</p>
+<p>
+Refer to <a href="cmdLayer.html#cmdLayer">section 2.9.5</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot hide current layer</title>
+<link rel="previous" href="MSG_LAYER_FREEZE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_JOIN_TURNTABLE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_LAYER_HIDE"></a>C.2.23 Cannot hide current layer</h1>
+<p>
+The current <strong>Layer</strong> is where most new objects are created. It's not possible to hide this layer, since it would not be possible to see the objects. Change the current <strong>Layer</strong> to some other <strong>Layer</strong> before trying to hide this Layer.
+</p>
+<p>
+Refer to <a href="cmdLayer.html#cmdLayer">section 2.9.5</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot join from a turntable, try to a turntable</title>
+<link rel="previous" href="MSG_LAYER_HIDE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_PRMFIL_OPEN_NEW.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_JOIN_TURNTABLE"></a>C.2.24 Cannot join from a turntable, try to a turntable</h1>
+<p>
+You cannot select a <strong>Turntable</strong> as the second track in <strong>Join</strong> command. If you wish to <strong>Join</strong> to a <strong>Turntable</strong> then select the <strong>Turntable</strong> as the first track in the <strong>Join</strong> command.
+</p>
+<p>
+Refer to <a href="cmdJoin.html#cmdJoin">section 2.2.7</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot open New Parameter File: FILENAME</title>
+<link rel="previous" href="MSG_JOIN_TURNTABLE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_LAYER_SEL_FROZEN.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_PRMFIL_OPEN_NEW"></a>C.2.25 Cannot open New Parameter File: FILENAME</h1>
+<p>
+During the processing of <strong>Parameter Files</strong> after updating to a new version of <em>XTrackCAD</em>, one of updated <strong>Parameter Files</strong> could not be found. Check that the installation had no errors. You can use the <strong>Parameter Files</strong> dialog to locate the parameter file.
+</p>
+<p>
+Refer to <a href="cmdPrmfile.html#cmdPrmfile">section 2.5.7</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot select a frozen layer</title>
+<link rel="previous" href="MSG_PRMFIL_OPEN_NEW.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CANT_SPLIT_TRK.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_LAYER_SEL_FROZEN"></a>C.2.26 Cannot select a frozen layer</h1>
+<p>
+The current <strong>Layer</strong> is where most new objects are created. It's not possible to select a frozen <strong>Layer</strong>, since it would not be possible to create objects. Unfreeze this <strong>Layer</strong> before trying to make this the current <strong>Layer</strong>.
+</p>
+<p>
+Refer to <a href="cmdLayer.html#cmdLayer">section 2.9.5</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot split TYPE track</title>
+<link rel="previous" href="MSG_LAYER_SEL_FROZEN.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_LAYER_MODULE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CANT_SPLIT_TRK"></a>C.2.27 Cannot split TYPE track</h1>
+<p>
+This fixed track like turnouts or or other sectional track cannot be <strong>Split</strong>. Only flexible, Cornu, straight and curved tracks can be <strong>Split</strong>. To <strong>Split</strong> a Turnout, hold down the Shift key then <em>Left-Click</em> on the position where the track should be <strong>Split</strong>.
+</p>
+<p>
+Refer to <a href="cmdSplitTrack.html#cmdSplitTrack">section 2.2.17.1</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot turn current layer into a Module</title>
+<link rel="previous" href="MSG_CANT_SPLIT_TRK.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CUSTMGM_CANT_WRITE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_LAYER_MODULE"></a>C.2.28 Cannot turn current layer into a Module</h1>
+<p>
+The current <strong>Layer</strong> is where new objects are created. It's not possible to turn this layer into a module, since then the objects can't be chnaged or added. Change the current <strong>Layer</strong> to some other <strong>Layer</strong> before trying to make this Layer into a module.
+</p>
+<p>
+Refer to <a href="cmdLayer.html#cmdLayer">section 2.9.5</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Cannot write to parameter file: FILENAME</title>
+<link rel="previous" href="MSG_LAYER_MODULE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CARIMP_DUP_INDEX.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CUSTMGM_CANT_WRITE"></a>C.2.29 Cannot write to parameter file: FILENAME</h1>
+<p>
+The specified parameter file can not be written to. Make sure the file and or directory is not marked as read only.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Car Index number duplicated.</title>
+<link rel="previous" href="MSG_CUSTMGM_CANT_WRITE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CONN_PARAMS_TOO_BIG.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CARIMP_DUP_INDEX"></a>C.2.30 Car Index number duplicated.</h1>
+<p>
+Each Car in your inventory must have a unique index value. If a duplicate index number is found during the <strong>Import</strong> process it will be replaced with a new, unused value.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Connection parameters reset to maximum values.</title>
+<link rel="previous" href="MSG_CARIMP_DUP_INDEX.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CONN_PARAMS_TOO_SMALL.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CONN_PARAMS_TOO_BIG"></a>C.2.31 Connection parameters reset to maximum values.</h1>
+<p>
+The parameters <em>Minimum Track Length</em>, <em>Connection Angle</em> and <em>Connection Distance</em> have maximum values that cannot be set to bigger values. The maximum values are 1.0"/2.54cm, 10&#176; and 1.0"/2.54cm respectively.
+</p>
+<p>
+Refer to <a href="cmdPref.html#cmdPref">section 2.10.7</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Connection parameters reset to minimum values.</title>
+<link rel="previous" href="MSG_CONN_PARAMS_TOO_BIG.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CANT_PASTE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CONN_PARAMS_TOO_SMALL"></a>C.2.32 Connection parameters reset to minimum values.</h1>
+<p>
+The parameters <em>Minimum Track Length</em>, <em>Connection Angle</em> and <em>Connection Distance</em> have minimum values that cannot be set to smaller values. The minimum values are 0.1"/0.254cm, 1&#176; and 0.1"/0.254cm respectively.
+</p>
+<p>
+Refer to <a href="cmdPref.html#cmdPref">section 2.10.7</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Copy/Paste buffer is empty. There is nothing to Paste.</title>
+<link rel="previous" href="MSG_CONN_PARAMS_TOO_SMALL.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_PROG_CORRUPTED.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CANT_PASTE"></a>C.2.33 Copy/Paste buffer is empty. There is nothing to Paste.</h1>
+<p>
+An attempt was made to <strong>Paste</strong> an object onto the layout however the Copy/Paste buffer was empty. This error generally occurs when the <strong>Paste</strong> command is executed without first executing the <strong>Copy</strong> command.
+</p>
+<p>
+Refer to <a href="editM.html#editM">section 2.4</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Critical file damaged!...</title>
+<link rel="previous" href="MSG_CANT_PASTE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_TODSGN_CROSSOVER_TOO_SHORT.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_PROG_CORRUPTED"></a>C.2.34 Critical file damaged!...</h1>
+<p>
+A critical file is corrupt. Unfortunately it will be necessary to reinstall the software or contact the XTrackCAD project development team at SourceForge in order to overcome this error.
+</p>
+<p>
+Please report this error to the <em>XTrackCAD</em> project development team at SourceForge. The process for reporting errors is outlined in <a href="bugs.html#bugs">section 1.11.1</a>.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Crossover length is too short. Correct...</title>
+<link rel="previous" href="MSG_PROG_CORRUPTED.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CURVE_TOO_LARGE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_TODSGN_CROSSOVER_TOO_SHORT"></a>C.2.35 Crossover length is too short. Correct...</h1>
+<p>
+The length of crossover segments must be greater than the track gauge.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Curved track is too large.</title>
+<link rel="previous" href="MSG_TODSGN_CROSSOVER_TOO_SHORT.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_TODSGN_REPLACE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CURVE_TOO_LARGE"></a>C.2.36 Curved track is too large.</h1>
+<p>
+The length of the curved track is limited to sum of the room dimensions. This limitation prevents creation of curves that are unreasonably large. Adjust the mouse position to create a smaller Curve.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Definition name is already in use. Saving this...</title>
+<link rel="previous" href="MSG_CURVE_TOO_LARGE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_SAVE_CHANGES.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_TODSGN_REPLACE"></a>C.2.37 Definition name is already in use. Saving this...</h1>
+<p>
+The definition you're attempting to create uses the same name as an existing definition. Saving the definition with the same name will cause <em>XTrackCAD</em> to replace the existing definition, making the existing definition inaccessible. If the previous definition must be preserved, then choose a different name for the new definition. If necessary, the <strong>Custom Management</strong> dialog can be used to change definition names.
+</p>
+<p>
+Refer to <a href="cmdCustmgm.html#cmdCustmgm">section 2.9.2</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Do you want to save the changes made to your Layout?</title>
+<link rel="previous" href="MSG_TODSGN_REPLACE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CARIMP_DUP_COLUMNS.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_SAVE_CHANGES"></a>C.2.38 Do you want to save the changes made to your Layout?</h1>
+<p>
+The <strong>Exit</strong> command was selected without first saving changes that have been made to the layout. This notice gives you the chance to save your changes before the program ends.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Duplicate column headers found in Car Import file.</title>
+<link rel="previous" href="MSG_SAVE_CHANGES.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_EP_ON_PATH.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CARIMP_DUP_COLUMNS"></a>C.2.39 Duplicate column headers found in Car Import file.</h1>
+<p>
+The <strong>Car Import</strong> function reads car values from a Comma-Separated-Value (CSV) file. The import file must contain headers for at least the <em>Scale</em>, <em>Prototype</em>, <em>Manufacturer</em> and <em>Partno</em> columns. In addition, the following column headers may also be included: <em>Index</em>, <em>Type</em>, <em>Description</em>, <em>Roadname</em>, <em>Repmark</em>, <em>Number</em>, <em>Options</em>, <em>CarLength</em>, <em>CarWidth</em>, <em>CoupledLength</em>, <em>TruckCenter</em>, <em>Color</em>, <em>PurchPrice</em>, <em>CurrPrice</em>, <em>Condition</em>, <em>PurchDate</em>, <em>ServiceDate</em> and <em>Notes</em>.
+</p>
+<p>
+It appears the CSV file that you're attempting to <strong>Import</strong> contains more than one row of column headers. Review the CSV files content and ensure only one row of header data exists.
+</p>
+<p>
+Refer to <a href="cmdCarinv.html#cmdCarinv">section 2.9.1</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Endpoint already on Path.</title>
+<link rel="previous" href="MSG_CARIMP_DUP_COLUMNS.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_UPGRADE_VERSION1.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_EP_ON_PATH"></a>C.2.40 Endpoint already on Path.</h1>
+<p>
+An <em>endpoint</em> that is already on the <strong>Profile Path</strong> has been selected. Select a different <em>endpoint</em>; one that is on a track that is not drawn in Purple.
+</p>
+<p>
+Refer to <a href="cmdProfile.html#cmdProfile">section 2.2.12</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>File version %ld is greater than supported...</title>
+<link rel="previous" href="MSG_EP_ON_PATH.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_UPGRADE_VERSION2.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_UPGRADE_VERSION1"></a>C.2.41 File version %ld is greater than supported...</h1>
+<p>
+The layout file that you're attempting to load was created using a newer version of <em>XTrackCAD</em>. In order to load this file it will be necessary to upgrade your version of <em>XTrackCAD</em> to at least the version identified within the error message.
+</p>
+<p>
+Take full advantage of the latest features within <em>XTrackCAD</em> by visiting the <a href="http://www.xtrkcad.org/" target="_blank"><em>XTrackCAD</em> Website</a> and downloading the latest release.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>File version %ld is greater than supported...</title>
+<link rel="previous" href="MSG_UPGRADE_VERSION1.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_PARAM_UPGRADE_VERSION1.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_UPGRADE_VERSION2"></a>C.2.42 File version %ld is greater than supported...</h1>
+<p>
+The layout file that you're attempting to load was created using a newer version of <em>XTrackCAD</em>. In order to load this file it will be necessary to upgrade your version of <em>XTrackCAD</em> to at least the version identified within the error message.
+</p>
+<p>
+Take full advantage of the latest features within <em>XTrackCAD</em> by visiting the <a href="http://www.xtrkcad.org/" target="_blank"><em>XTrackCAD</em> Fork Website</a> and downloading the latest release.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>File version %ld is greater than supported...</title>
+<link rel="previous" href="MSG_UPGRADE_VERSION2.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_PARAM_UPGRADE_VERSION2.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_PARAM_UPGRADE_VERSION1"></a>C.2.43 File version %ld is greater than supported...</h1>
+<p>
+The parameter file that you're attempting to load was designed for a newer version of <em>XTrackCAD</em>. In order to load this file it will be necessary to upgrade your version of <em>XTrackCAD</em> to at least the version identified within the error message.
+</p>
+<p>
+Take full advantage of the latest features within <em>XTrackCAD</em> by visiting the <a href="http://www.xtrkcad.org/" target="_blank"><em>XTrackCAD</em> Website</a> and downloading the latest release.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>File version %ld is greater than supported...</title>
+<link rel="previous" href="MSG_PARAM_UPGRADE_VERSION1.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_TRK_ALREADY_CONN.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_PARAM_UPGRADE_VERSION2"></a>C.2.44 File version %ld is greater than supported...</h1>
+<p>
+The parameter file that you're attempting to load was designed for a newer version of <em>XTrackCAD</em>. In order to load this file it will be necessary to upgrade your version of <em>XTrackCAD</em> to at least the version identified within the error message.
+</p>
+<p>
+Take full advantage of the latest features within <em>XTrackCAD</em> by visiting the <a href="http://www.xtrkcad.org/" target="_blank"><em>XTrackCAD</em> Fork Website</a> and downloading the latest release.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>First|Second track is already connected.</title>
+<link rel="previous" href="MSG_PARAM_UPGRADE_VERSION2.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_MOVE_POINTS_OTHER_SIDE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_TRK_ALREADY_CONN"></a>C.2.45 First|Second track is already connected.</h1>
+<p>
+To <strong>Join</strong> one track with another, the <em>endpoints</em> selected for connection cannot be connected with any other track. Pick another track with an unconnected <em>endpoint</em> or disconnect one of the <em>endpoints</em> using the <strong>Split</strong> command.
+</p>
+<p>
+Refer to <a href="cmdJoin.html#cmdJoin">section 2.2.7</a> for detail regarding the <strong>Join</strong> command or <a href="cmdSplitTrack.html#cmdSplitTrack">section 2.2.17.1</a> for detail regarding the <strong>Split</strong> command.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Frog angle prevents placement of points. Move points to opposite side of frog.</title>
+<link rel="previous" href="MSG_TRK_ALREADY_CONN.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CANT_PLACE_FROGPOINTS.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_MOVE_POINTS_OTHER_SIDE"></a>C.2.46 Frog angle prevents placement of points. Move points to opposite side of frog.</h1>
+<p>
+The frog angle prevents points from being placed on this side of the frog. Place points on opposite side of frog or retry this command and create the frog in the opposite direction.
+</p>
+<p>
+Refer to <a href="cmdHandLaidTurnout.html#cmdHandLaidTurnout">section 2.1.3</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Frog|Points cannot be placed on a turnout, circle or helix.</title>
+<link rel="previous" href="MSG_MOVE_POINTS_OTHER_SIDE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_NO_ROOM_BTW_TRKS.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CANT_PLACE_FROGPOINTS"></a>C.2.47 Frog|Points cannot be placed on a turnout, circle or helix.</h1>
+<p>
+The frog or points of a hand-laid turnout cannot be placed on a turnout, circle or helix track. Choose a straight or curved section of track or use the <strong>Split</strong> command to create a curve from the circle track.
+</p>
+<p>
+Refer to <a href="cmdHandLaidTurnout.html#cmdHandLaidTurnout">section 2.1.3</a> for detail regarding hand laid turnouts or <a href="cmdSplitTrack.html#cmdSplitTrack">section 2.2.17.1</a> for detail regarding the <strong>Split</strong> command.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Insufficient space between existing stall tracks.</title>
+<link rel="previous" href="MSG_CANT_PLACE_FROGPOINTS.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_JOIN_DIFFER_ELEV.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_NO_ROOM_BTW_TRKS"></a>C.2.48 Insufficient space between existing stall tracks.</h1>
+<p>
+There is insufficient space between the two existing turntable stall tracks to place a new stall track. Either place the new stall track on a different part of the turntable or decrease the <em>Turntable Angle</em> using the <strong>Command Options</strong> dialog.
+</p>
+<p>
+Refer to <a href="cmdTurntable.html#cmdTurntable">section 2.1.9</a> for detail regarding turntables or <a href="cmdCmdopt.html#cmdCmdopt">section 2.10.2</a> for detail regarding the <strong>Command Options</strong> dialog and <em>Turntable Angle</em>s.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Joining tracks with differing elevations (N.NNN)</title>
+<link rel="previous" href="MSG_NO_ROOM_BTW_TRKS.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_TRK_DESC_NOT_VISIBLE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_JOIN_DIFFER_ELEV"></a>C.2.49 Joining tracks with differing elevations (N.NNN)</h1>
+<p>
+You are connecting two <em>endpoints</em> which differ in heights by N.NNN. The elevation of the connection will be the average of the two heights. You should check if this is a problem.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Label description is hidden</title>
+<link rel="previous" href="MSG_JOIN_DIFFER_ELEV.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_DESC_NOT_VISIBLE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_TRK_DESC_NOT_VISIBLE"></a>C.2.50 Label description is hidden</h1>
+<p>
+The <strong>Move Description</strong> command can only be used when labels are visible on the layout. Labels can be hidden using the Context Menu.
+</p>
+<p>
+Use the Context Menu to toggle a track's visbility on and off.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Label descriptions not visible</title>
+<link rel="previous" href="MSG_TRK_DESC_NOT_VISIBLE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_OBJECT_TOO_SHORT.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_DESC_NOT_VISIBLE"></a>C.2.51 Label descriptions not visible</h1>
+<p>
+The <strong>Move Description</strong> command can only be used when labels are visible on the layout. Labels will not be visible when the <strong>Label Scale</strong> is set to a smaller value than the current drawing scale or when no items are enabled in the <strong>Label Enable</strong> section of the <strong>Display Options</strong> dialog.
+</p>
+<p>
+Check the <strong>Display Options</strong> dialog (<strong>Options&gt;Display</strong>) to determine if;
+</p>
+<p>
+
+</p>
+<ul><li>
+the <strong>Label Scale</strong> is set to a value smaller than or equal to the current drawing scale.
+</li>
+<li>
+at least one attribute within the <strong>Label Enable</strong> section is selected. You will of course want to ensure the type of label you wish to move is selected.
+</li>
+</ul>
+<p>
+
+</p>
+<p>
+Refer to <a href="cmdMoveLabel.html#cmdMoveLabel">section 2.2.10</a> for detail regarding <strong>Description</strong> movement or <a href="cmdDisplay.html#cmdDisplay">section 2.10.3</a> for detail regarding <strong>Display</strong> attributes.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Length of object is too short.</title>
+<link rel="previous" href="MSG_DESC_NOT_VISIBLE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_PRINT_MAX_SIZE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_OBJECT_TOO_SHORT"></a>C.2.52 Length of object is too short.</h1>
+<p>
+The specified length for the object being modified is too short. Increase the objects length.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Maximum allowed page size is W x H</title>
+<link rel="previous" href="MSG_OBJECT_TOO_SHORT.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_PRMFIL_NO_CONTENTS.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_PRINT_MAX_SIZE"></a>C.2.53 Maximum allowed page size is W x H</h1>
+<p>
+Values for <strong>Page Width</strong> and <strong>Height</strong> can be manually entered thus overriding maximum values. For example, smaller values could be specified if each printed page is to contain an integral number of feet. Values larger than the selected paper size multiplied by the <em>Scale</em> cannot be entered.
+</p>
+<p>
+Refer to <a href="cmdPrint.html#cmdPrint">section 2.5.9</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>New Parameter File has no CONTENTS line: FILENAME.</title>
+<link rel="previous" href="MSG_PRINT_MAX_SIZE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_NO_CARPROTO.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_PRMFIL_NO_CONTENTS"></a>C.2.54 New Parameter File has no CONTENTS line: FILENAME.</h1>
+<p>
+Each <strong>Parameter Files</strong> contains a line which identifies the contents. The specified file is missing this line.
+</p>
+<p>
+Please report this error to the <em>XTrackCAD</em> project development team at SourceForge. The process for reporting errors is outlined in <a href="bugs.html#bugs">section 1.11.1</a>.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>No Car Prototypes are defined....</title>
+<link rel="previous" href="MSG_PRMFIL_NO_CONTENTS.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_NO_CARS.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_NO_CARPROTO"></a>C.2.55 No Car Prototypes are defined....</h1>
+<p>
+No <strong>Car Prototypes</strong> are defined. Load a car prototype definition file (such as protoam.xtp) using the <strong>Parameter Files</strong> dialog or create a prototype definition using the <strong>Car Prototype</strong> dialog.
+</p>
+<p>
+Refer to <a href="cmdPrmfile.html#cmdPrmfile">section 2.5.7</a> for detail regarding the <strong>Parameter Files</strong> or <a href="carprototype.html#carprototype">section 2.9.1.3</a> for detail regarding the <strong>Car Prototype</strong> dialog.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>No Cars are defined for the current scale....</title>
+<link rel="previous" href="MSG_NO_CARPROTO.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_PRMFIL_NO_MAP.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_NO_CARS"></a>C.2.56 No Cars are defined for the current scale....</h1>
+<p>
+No Cars are defined for the current layout scale. Either set the scale to the value of already defined cars, or use the dialog to select cars of the current scale and add them to the <strong>Car Inventory</strong>.
+</p>
+<p>
+Refer to <a href="cmdCarinv.html#cmdCarinv">section 2.9.1</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>No Parameter File Map for CONTENTS</title>
+<link rel="previous" href="MSG_NO_CARS.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_GROUP_NO_PATHS.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_PRMFIL_NO_MAP"></a>C.2.57 No Parameter File Map for CONTENTS</h1>
+<p>
+The parameter file for <strong>CONTENTS</strong> has been moved or deleted. Use the <strong>Parameter Files</strong> dialog to locate the <strong>Parameter Files</strong>.
+</p>
+<p>
+Refer to <a href="cmdPrmfile.html#cmdPrmfile">section 2.5.7</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>No Paths were detected when grouping selected Tracks.</title>
+<link rel="previous" href="MSG_PRMFIL_NO_MAP.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_POLY_NOTHING_SELECTED.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_GROUP_NO_PATHS"></a>C.2.58 No Paths were detected when grouping selected Tracks.</h1>
+<p>
+Please contact development
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>No Point on a Poly shape selected.</title>
+<link rel="previous" href="MSG_GROUP_NO_PATHS.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_NO_TURNOUTS_AVAILABLE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_POLY_NOTHING_SELECTED"></a>C.2.59 No Point on a Poly shape selected.</h1>
+<p>
+Select a Poly shape and a single point in order to be able to delete it.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>No Turnouts|Structures are available.</title>
+<link rel="previous" href="MSG_POLY_NOTHING_SELECTED.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CARIMP_NO_DATA.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_NO_TURNOUTS_AVAILABLE"></a>C.2.60 No Turnouts|Structures are available.</h1>
+<p>
+The <strong>Update Turnouts and Structures</strong> command updates (or refreshes) selected turnouts, sectional tracks and structures on your layout with the current definitions from the loaded parameter files (<a href="cmdPrmfile.html#cmdPrmfile">Section 2.5.7</a>). Each selected object that is found in a parameter file is updated with the current definition.
+</p>
+<p>
+If an object can not be found or if the new definition does not fit (same number of endpoints and all the endpoints have the same position and angle) then a dialog is displayed which contains suitable definitions that you can choose from. In the case of turnouts, this list is populated with turnouts having the same number of endpoints as the selected turnout. If turnouts with the same number of endpoints exist then this message is displayed.
+</p>
+<p>
+Refer to <a href="cmdRefreshSpecial.html#cmdRefreshSpecial">section 2.9.10</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>No data present in Car Import file.</title>
+<link rel="previous" href="MSG_NO_TURNOUTS_AVAILABLE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_NO_EMPTY_LAYER.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CARIMP_NO_DATA"></a>C.2.61 No data present in Car Import file.</h1>
+<p>
+The <strong>Car Import</strong> function reads car values from a Comma-Separated-Value (CSV) file. The import file must contain headers for at least the <em>Scale</em>, <em>Prototype</em>, <em>Manufacturer</em> and <em>Partno</em> columns. In addition, information relative to at least one car must be included in the file otherwise this error occurs.
+</p>
+<p>
+Refer to <a href="cmdCarinv.html#cmdCarinv">section 2.9.1</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>No layer was found that has no contents, so the module can not be imported</title>
+<link rel="previous" href="MSG_CARIMP_NO_DATA.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_NO_UNFROZEN_LAYER.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_NO_EMPTY_LAYER"></a>C.2.62 No layer was found that has no contents, so the module can not be imported</h1>
+<p>
+The import module function needs an empty layer to work with, but none could be found. Clear a layer and retry.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>No layer was found that wasn't frozen. Layer 0 is unfrozen.</title>
+<link rel="previous" href="MSG_NO_EMPTY_LAYER.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_PRINT_NO_PAGES.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_NO_UNFROZEN_LAYER"></a>C.2.63 No layer was found that wasn't frozen. Layer 0 is unfrozen.</h1>
+<p>
+There has to be one layer that isn't frozen, Layer 0 will be unfrozen
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>No pages selected for printing.</title>
+<link rel="previous" href="MSG_NO_UNFROZEN_LAYER.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_NO_PATH_TO_EP.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_PRINT_NO_PAGES"></a>C.2.64 No pages selected for printing.</h1>
+<p>
+Pages are selected for printing by clicking on the print grid on the layout. Use the <strong>Zoom Out</strong> command to bring more of the layout into view (<a href="cmdZoom.html#cmdZoom">Section 2.12.4</a>). The print grid can be moved using the <em>Shift+Left+Drag</em> command or rotated using the <em>Shift+Right+Drag</em> command.
+</p>
+<p>
+Refer to <a href="cmdPrint.html#cmdPrint">section 2.5.9</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>No path between Profile and selected endpoint.</title>
+<link rel="previous" href="MSG_PRINT_NO_PAGES.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_NO_SELECTED_TRK.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_NO_PATH_TO_EP"></a>C.2.65 No path between Profile and selected endpoint.</h1>
+<p>
+There is no path of track between the end of the <strong>Profile</strong> and the <em>endpoint</em> you have clicked on.
+</p>
+<p>
+Refer to the <a href="cmdProfile.html#cmdProfile">section 2.2.12</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>No track(s) selected!</title>
+<link rel="previous" href="MSG_NO_PATH_TO_EP.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CARDESC_VALUE_ZERO.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_NO_SELECTED_TRK"></a>C.2.66 No track(s) selected!</h1>
+<p>
+The current command operates on <strong>Select</strong>ed tracks of which there are none. <strong>Select</strong> the desired track and try the command again.
+</p>
+<p>
+Refer to <a href="cmdSelect.html#cmdSelect">section 2.2.16</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Numeric values on the Car Description...</title>
+<link rel="previous" href="MSG_NO_SELECTED_TRK.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_MOVE_OUT_OF_BOUNDS.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CARDESC_VALUE_ZERO"></a>C.2.67 Numeric values on the Car Description...</h1>
+<p>
+Numeric values on the <strong>Car Description</strong> dialog (Car Length, Car Width, Truck Centers, Coupled Length and Coupler Length) must be greater than zero.
+</p>
+<p>
+Refer to <a href="cmdTrain.html#cmdTrain">section 2.9.8</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Object has moved beyond room boundaries.</title>
+<link rel="previous" href="MSG_CARDESC_VALUE_ZERO.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_PARALLEL_SEP_GTR_0.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_MOVE_OUT_OF_BOUNDS"></a>C.2.68 Object has moved beyond room boundaries.</h1>
+<p>
+The last operation moved the object outside of room boundaries; room width and height. The <strong>Undo</strong> command can be used to move the object back.
+</p>
+<p>
+Refer to <a href="cmdLayout.html#cmdLayout">section 2.10.6</a> for detail regarding room boundaries and <a href="cmdUndo.html#cmdUndo">section 2.4.9</a> for detail regarding the <strong>Undo</strong> command.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Parallel separation must be greater than 0, or the new guage must be different than the old.</title>
+<link rel="previous" href="MSG_MOVE_OUT_OF_BOUNDS.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CARPART_DUPNAME.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_PARALLEL_SEP_GTR_0"></a>C.2.69 Parallel separation must be greater than 0, or the new guage must be different than the old.</h1>
+<p>
+A parallel track with an identical gauge and separation of 0 or less cannot be created. Specify a positive value in the <strong>Separation</strong> field that appears in the Status Bar, or select a track with a different guage.
+</p>
+<p>
+Refer to <a href="cmdParallel.html#cmdParallel">section 2.1.5</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Part Number for this Manufacturer already exists....</title>
+<link rel="previous" href="MSG_PARALLEL_SEP_GTR_0.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_PLAYBACK_VERSION_UPGRADE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CARPART_DUPNAME"></a>C.2.70 Part Number for this Manufacturer already exists....</h1>
+<p>
+The <em>Part</em> definition you're attempting to create uses the same Manufacturer and Part Number as an existing definition. Saving the definition with the same Manufacturer and Part Number will cause <em>XTrakCAD</em> to update the existing definition. If the previous definition must be preserved, then choose a different Part Number for the new definition.
+</p>
+<p>
+Refer to <a href="carpart.html#carpart">section 2.9.1.2</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Playback file version %ld is...</title>
+<link rel="previous" href="MSG_CARPART_DUPNAME.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_PLAYBACK_LISTENTRY.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_PLAYBACK_VERSION_UPGRADE"></a>C.2.71 Playback file version %ld is...</h1>
+<p>
+The layout file that you're attempting to load was created using a newer version of <em>XTrackCAD</em>. In order to load this file it will be necessary to upgrade your version of <em>XTrackCAD</em> to at least the version identified within the error message.
+</p>
+<p>
+Take full advantage of the latest features within <em>XTrackCAD</em> by visiting the <a href="http://www.xtrkcad.org/" target="_blank"><em>XTrackCAD</em> Fork Website</a> and downloading the latest release.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Playback: Cannot find list entry: NAME</title>
+<link rel="previous" href="MSG_PLAYBACK_VERSION_UPGRADE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_DOMOUSE_BAD_OP.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_PLAYBACK_LISTENTRY"></a>C.2.72 Playback: Cannot find list entry: NAME</h1>
+<p>
+This error is most likely caused by trying to <strong>Playback</strong> an incompatible <em>XTrackCAD</em> recording or demo file.
+</p>
+<p>
+Refer to <a href="macroM.html#macroM">section 2.8</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Playback: unknown action NNN</title>
+<link rel="previous" href="MSG_PLAYBACK_LISTENTRY.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_NO_PRINTER_SELECTED.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_DOMOUSE_BAD_OP"></a>C.2.73 Playback: unknown action NNN</h1>
+<p>
+This error is most likely caused by trying to <strong>Playback</strong> an incompatible <em>XTrackCAD</em> recording or demo file.
+</p>
+<p>
+Refer to <a href="macroM.html#macroM">section 2.8</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Please select a printer from the Print Setup dialog.</title>
+<link rel="previous" href="MSG_DOMOUSE_BAD_OP.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_MOVE_POINTS_AWAY_CLOSE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_NO_PRINTER_SELECTED"></a>C.2.74 Please select a printer from the Print Setup dialog.</h1>
+<p>
+Printer Margins are specific to the selected printer, but no selected printer is chosen. You can select a printer from the Print Setup dialog.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Points are to close to frog; move away.</title>
+<link rel="previous" href="MSG_NO_PRINTER_SELECTED.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_POLY_SHAPES_3_SIDES.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_MOVE_POINTS_AWAY_CLOSE"></a>C.2.75 Points are to close to frog; move away.</h1>
+<p>
+The points are being placed too close to the frog. Move the points away from the frog and try again.
+</p>
+<p>
+Refer to <a href="cmdHandLaidTurnout.html#cmdHandLaidTurnout">section 2.1.3</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Polygons must have at least 3 nodes.</title>
+<link rel="previous" href="MSG_MOVE_POINTS_AWAY_CLOSE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CARPROTO_DUPNAME.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_POLY_SHAPES_3_SIDES"></a>C.2.76 Polygons must have at least 3 nodes.</h1>
+<p>
+Polygons and Poly Lines must have at least 3 nodes. You're attempting to create a Polygon with only 2 sides or a PolyLine with one line segment.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Prototype name already exists....</title>
+<link rel="previous" href="MSG_POLY_SHAPES_3_SIDES.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_RADIUS_GTR_0.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CARPROTO_DUPNAME"></a>C.2.77 Prototype name already exists....</h1>
+<p>
+The <em>Prototype</em> definition you're attempting to create uses the same name as an existing definition. Saving the definition with the same name will cause <em>XTrackCAD</em> to update the existing definition. If the previous definition must be preserved, then choose a different Part Number for the new definition.
+</p>
+<p>
+Refer to <a href="carprototype.html#carprototype">section 2.9.1.3</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Radius must be greater than 0.</title>
+<link rel="previous" href="MSG_CARPROTO_DUPNAME.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_RADIUS_GTR_10000.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_RADIUS_GTR_0"></a>C.2.78 Radius must be greater than 0.</h1>
+<p>
+It's not possible to create a Circle or Helix with a radius of 0&#176; or less. Specify a positive value in the <strong>Radius</strong> field that appears in the Status Bar.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Radius must be less than 10000.</title>
+<link rel="previous" href="MSG_RADIUS_GTR_0.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CARIMP_MISSING_COLUMNS.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_RADIUS_GTR_10000"></a>C.2.79 Radius must be less than 10000.</h1>
+<p>
+It's not possible to create a Circle or Helix with a radius of 10000&#176; or more. Specify a smaller value in the <strong>Radius</strong> field.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Required column headers missing from Car Import file.</title>
+<link rel="previous" href="MSG_RADIUS_GTR_10000.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_RESCALE_TOO_BIG.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CARIMP_MISSING_COLUMNS"></a>C.2.80 Required column headers missing from Car Import file.</h1>
+<p>
+The <strong>Car Import</strong> function reads car values from a Comma-Separated-Value (CSV) file. The import file must contain headers for at least the <em>Scale</em>, <em>Prototype</em>, <em>Manufacturer</em> and <em>Partno</em> columns. In addition, the following column headers may also be included: <em>Index</em>, <em>Type</em>, <em>Description</em>, <em>Roadname</em>, <em>Repmark</em>, <em>Number</em>, <em>Options</em>, <em>CarLength</em>, <em>CarWidth</em>, <em>CoupledLength</em>, <em>TruckCenter</em>, <em>Color</em>, <em>PurchPrice</em>, <em>CurrPrice</em>, <em>Condition</em>, <em>PurchDate</em>, <em>ServiceDate</em> and <em>Notes</em>.
+</p>
+<p>
+Refer to <a href="cmdCarinv.html#cmdCarinv">section 2.9.1</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Rescaled tracks do not fit within layouts room parameters...</title>
+<link rel="previous" href="MSG_CARIMP_MISSING_COLUMNS.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_BAD_SCALE_NAME.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_RESCALE_TOO_BIG"></a>C.2.81 Rescaled tracks do not fit within layouts room parameters...</h1>
+<p>
+While using the <strong>Change Scale</strong> command to enlarge the layout, <em>XTrackCAD</em> determined that rescaled tracks do not fit within the layout rooms parameters. Using the <strong>Layout</strong> dialog, the rooms parameters (Height and width) should be set so as to accommodate the rescaled track.
+</p>
+<p>
+Refer to <a href="cmdLayout.html#cmdLayout">section 2.10.6</a> for detail regarding <strong>Layout</strong> options or <a href="cmdRescale.html#cmdRescale">section 2.2.1</a> for detail regarding the <strong>Change Scale</strong> command.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Scale "SCALE1" is not valid. We will substitute a dummy scale based on "SCALE2". See 'Help|Recent Messages' for details.</title>
+<link rel="previous" href="MSG_RESCALE_TOO_BIG.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_BAD_SCALE_INDEX.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_BAD_SCALE_NAME"></a>C.2.82 Scale "SCALE1" is not valid. We will substitute a dummy scale based on "SCALE2". See 'Help|Recent Messages' for details.</h1>
+<p>
+SCALE1 is not one of known scales defined in "xtrkcad.xtq". We will substitute the layout scale info from SCALE2.
+</p>
+<p>
+If the current scale is not correct, then select it on 'Options|Layout' and reload your layout.
+</p>
+<p>
+You can also correct this by selecting the affected tracks, and using the 'Change|Change Scale' <a href="cmdRescale.html#cmdRescale">section 2.2.1</a> command.
+</p>
+<p>
+Please report this error to the <em>XTrackCAD</em> project development team at SourceForge. The process for reporting errors is outlined in <a href="bugs.html#bugs">section 1.11.1</a>.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Scale index (NNN) is not valid. Do you want use the current layout scale (SCALE)? Or create an "Unknown" scale? See 'Help|Recent Messages' for details.</title>
+<link rel="previous" href="MSG_BAD_SCALE_NAME.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_2ND_TRK_NOT_SEL_UNSEL.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_BAD_SCALE_INDEX"></a>C.2.83 Scale index (NNN) is not valid. Do you want use the current layout scale (SCALE)? Or create an "Unknown" scale? See 'Help|Recent Messages' for details.</h1>
+<p>
+Internal error: an invalid scale index has been generated. You can substitute the layout's current scale (recommended).
+</p>
+<p>
+If you do not want to use the currrent scale:
+</p>
+<ul><li>
+Choose "Unknown".
+</li>
+<li>
+Save your file
+</li>
+<li>
+Choose the correct scale from 'Options|Layout'
+</li>
+<li>
+Reload your file
+</li>
+<li>
+You will see a notice that "Scale Unknown is invalid"
+</li>
+<li>
+Choose the layout scale
+</li>
+</ul>
+<p>
+You can also correct this by selecting the affected tracks, and using the 'Change|Change Scale' <a href="cmdRescale.html#cmdRescale">section 2.2.1</a> command.
+</p>
+<p>
+Please report this error to the <em>XTrackCAD</em> project development team at SourceForge. The process for reporting errors is outlined in <a href="bugs.html#bugs">section 1.11.1</a>.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Second track must be selected|unselected</title>
+<link rel="previous" href="MSG_BAD_SCALE_INDEX.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_SEL_POS_FIRST.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_2ND_TRK_NOT_SEL_UNSEL"></a>C.2.84 Second track must be selected|unselected</h1>
+<p>
+The <strong>Move To Join</strong> command moves the selected tracks so an <em>endpoint</em> is joined with the <em>endpoint</em> of an unselected track. If you choose the selected <em>endpoint</em> first then you must choose an unselected <em>endpoint</em> second, and vice versa.
+</p>
+<p>
+Refer to <a href="joinTrackMove.html#joinTrackMove">section 2.2.7.7</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Select position prior to entering Text.</title>
+<link rel="previous" href="MSG_2ND_TRK_NOT_SEL_UNSEL.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_OUT_OF_BOUNDS.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_SEL_POS_FIRST"></a>C.2.85 Select position prior to entering Text.</h1>
+<p>
+The position where text is to be placed on the layout must be selected prior to text entry. The position is select by <em>Left-Click</em>ing on the layout at the point where the text is to appear. Desired text is entered after the position is selected. If necessary, the location can be changed once text entry begins by <em>Left-Click+Drag</em>ing the text to any desired position on the layout.
+</p>
+<p>
+Refer to <a href="cmdText.html#cmdText">section 2.3.9</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Selected page is out of bounds.</title>
+<link rel="previous" href="MSG_SEL_POS_FIRST.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CARPROTO_BADSEGS.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_OUT_OF_BOUNDS"></a>C.2.86 Selected page is out of bounds.</h1>
+<p>
+During execution of the <strong>Print</strong> command an attempted was made to select a page that's outside the layouts boundaries.
+</p>
+<p>
+Refer to <a href="cmdLayout.html#cmdLayout">section 2.10.6</a> for detail regarding layout boundaries or <a href="cmdPrint.html#cmdPrint">section 2.5.9</a> for detail regarding the <strong>Print</strong> command.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Selected shapes must define a rectangular area ...</title>
+<link rel="previous" href="MSG_OUT_OF_BOUNDS.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_TOO_FAR_APART_DIVERGE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CARPROTO_BADSEGS"></a>C.2.87 Selected shapes must define a rectangular area ...</h1>
+<p>
+The <strong>Import</strong> command (Button) on the <strong>Car Prototype</strong> dialog is used to create the image of an car from the shapes selected on the layout prior to opening the <strong>Car Prototype</strong> dialog. The car is assumed to be oriented horizontally so its length must be greater than its height. The selected shapes do not meet this requirement.
+</p>
+<p>
+Refer to <a href="carprototype.html#carprototype">section 2.9.1.3</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Selected tracks deviate too much or are too far apart from each other.</title>
+<link rel="previous" href="MSG_CARPROTO_BADSEGS.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_COMMAND_DISABLED.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_TOO_FAR_APART_DIVERGE"></a>C.2.88 Selected tracks deviate too much or are too far apart from each other.</h1>
+<p>
+The <strong>Connect</strong> command is used to remove small gaps that may result when using sectional track. The chosen sectional track <em>endpoints</em> must be close together and nearly aligned. The selected tracks deviate too much or are too far apart from each other.
+</p>
+<p>
+Refer to <a href="cmdConnect.html#cmdConnect">section 2.2.3</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Specified command disabled.</title>
+<link rel="previous" href="MSG_TOO_FAR_APART_DIVERGE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_SPLIT_POS_BTW_MERGEPTS.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_COMMAND_DISABLED"></a>C.2.89 Specified command disabled.</h1>
+<p>
+The specified command has been disabled in error.
+</p>
+<p>
+Please report this error to the <em>XTrackCAD</em> project development team at SourceForge. The process for reporting errors is outlined in <a href="bugs.html#bugs">section 1.11.1</a>.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Split position between Turnout Points</title>
+<link rel="previous" href="MSG_COMMAND_DISABLED.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_SPLIT_PATH_NOT_UNIQUE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_SPLIT_POS_BTW_MERGEPTS"></a>C.2.90 Split position between Turnout Points</h1>
+<p>
+The <strong>Split</strong> position must be between an endpoint and the position where the turnout's track segments diverge (the turnout points). Select a position closer to the endpoint.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Split position not on unique path</title>
+<link rel="previous" href="MSG_SPLIT_POS_BTW_MERGEPTS.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_RADIUS_TOO_BIG.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_SPLIT_PATH_NOT_UNIQUE"></a>C.2.91 Split position not on unique path</h1>
+<p>
+The <strong>Split</strong> position must be between an endpoint and the position where the turnout's track segments diverge (the turnout points). Select a position closer to the endpoint.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>The Circle or Helix will not fit within the layouts room parameters (Height and Width).</title>
+<link rel="previous" href="MSG_SPLIT_PATH_NOT_UNIQUE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_NOT_UNFROZEN_LAYER.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_RADIUS_TOO_BIG"></a>C.2.92 The Circle or Helix will not fit within the layouts room parameters (Height and Width).</h1>
+<p>
+The defined circle can not fit within the defined layout parameters. Either specify a smaller value in the <strong>Radius</strong> field, or increase the room parameters in the <strong>Layout</strong> dialog.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>The current layer was defined as frozen. It is now unfrozen.</title>
+<link rel="previous" href="MSG_RADIUS_TOO_BIG.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_TODSGN_CORNU_TOO_COMPLEX.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_NOT_UNFROZEN_LAYER"></a>C.2.93 The current layer was defined as frozen. It is now unfrozen.</h1>
+<p>
+The current layer has to be unfrozen
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>The curves created by the Turnout Designer for a cornu curve have more than 128 segments....</title>
+<link rel="previous" href="MSG_NOT_UNFROZEN_LAYER.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_ENTERED_STRING_TRUNCATED.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_TODSGN_CORNU_TOO_COMPLEX"></a>C.2.94 The curves created by the Turnout Designer for a cornu curve have more than 128 segments....</h1>
+<p>
+Too complex a curve set to be used. Respecify <strong>Turnout Designer</strong> values.
+</p>
+<p>
+Refer to <a href="cmdTurnoutNew.html#cmdTurnoutNew">section 2.9.9</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>The entered text is too long. Maximum length is %d.</title>
+<link rel="previous" href="MSG_TODSGN_CORNU_TOO_COMPLEX.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_TEXT_TOO_LONG.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_ENTERED_STRING_TRUNCATED"></a>C.2.95 The entered text is too long. Maximum length is %d.</h1>
+<p>
+The text entered into a field is longer than the maximum allowed length and was truncated. Please check the shortened text and edit as necessary.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>The entered text was too long for the text object. It was truncated.</title>
+<link rel="previous" href="MSG_ENTERED_STRING_TRUNCATED.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CARIMP_MISSING_PARTNO.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_TEXT_TOO_LONG"></a>C.2.96 The entered text was too long for the text object. It was truncated.</h1>
+<p>
+Text objects are limited to about 10k characters.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>The following car has no Part Number...</title>
+<link rel="previous" href="MSG_TEXT_TOO_LONG.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CARIMP_MISSING_DIMS.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CARIMP_MISSING_PARTNO"></a>C.2.97 The following car has no Part Number...</h1>
+<p>
+The car import file must contain headers for at least the <em>Scale</em>, <em>Prototype</em>, <em>Manufacturer</em> and <em>Partno</em> columns. In addition, car information relative to these columns must be included in each line of the file otherwise this error will occur.
+</p>
+<p>
+Refer to <a href="cmdCarinv.html#cmdCarinv">section 2.9.1</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>The following car has no dimensions and a...</title>
+<link rel="previous" href="MSG_CARIMP_MISSING_PARTNO.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CARIMP_IGNORED_COLUMN.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CARIMP_MISSING_DIMS"></a>C.2.98 The following car has no dimensions and a...</h1>
+<p>
+The car import file does not specify car dimensions and the specified <em>Partno</em> can not be found. Edit the import file and either add car dimensions or add/update the <em>Partno</em>. This will allow <em>XTrackCAD</em> to locate information for the car being imported.
+</p>
+<p>
+Refer to <a href="cmdCarinv.html#cmdCarinv">section 2.9.1</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>The following column in the Car Import file will be ignored:...</title>
+<link rel="previous" href="MSG_CARIMP_MISSING_DIMS.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CANT_MOVE_UNDER_TRAIN.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CARIMP_IGNORED_COLUMN"></a>C.2.99 The following column in the Car Import file will be ignored:...</h1>
+<p>
+An invalid column in the Car Import file will be ignored. Valid column names are:
+</p>
+<p>
+<em>Index</em>, <em>Scale</em>, <em>Manufacturer</em>, <em>Type</em>, <em>Partno</em>, <em>Prototype</em>, <em>Description</em>, <em>Roadname</em>, <em>Repmark</em>, <em>Number</em>, <em>Options</em>, <em>CarLength</em>, <em>CarWidth</em>, <em>CoupledLength</em>, <em>TruckCenter</em>, <em>Color</em>, <em>PurchPrice</em>, <em>CurrPrice</em>, <em>Condition</em>, <em>PurchDate</em>, <em>ServiceDate</em> and <em>Notes</em>.
+</p>
+<p>
+Refer to <a href="cmdCarinv.html#cmdCarinv">section 2.9.1</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>The position of a turnout or turntable cannot be changed while occupied by a train.</title>
+<link rel="previous" href="MSG_CARIMP_IGNORED_COLUMN.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_SPLITTED_OBJECT_TOO_SHORT.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CANT_MOVE_UNDER_TRAIN"></a>C.2.100 The position of a turnout or turntable cannot be changed while occupied by a train.</h1>
+<p>
+The position of a turnout or turntable cannot be changed while occupied by a train.
+</p>
+<p>
+Refer to <a href="cmdTrain.html#cmdTrain">section 2.9.8</a>, <em>Turnouts and Turntables</em> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>The resulting length of one track piece is shorter than the minimum length of %d.</title>
+<link rel="previous" href="MSG_CANT_MOVE_UNDER_TRAIN.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_STRUCT_NO_STRUCTS.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_SPLITTED_OBJECT_TOO_SHORT"></a>C.2.101 The resulting length of one track piece is shorter than the minimum length of %d.</h1>
+<p>
+After the split one of the track segments will be shorter than the minimum length. Select a different position for splitting.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>There are no structures to choose from in the structure...</title>
+<link rel="previous" href="MSG_SPLITTED_OBJECT_TOO_SHORT.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_TURNOUT_NO_TURNOUT.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_STRUCT_NO_STRUCTS"></a>C.2.102 There are no structures to choose from in the structure...</h1>
+<p>
+This error occurs when;
+</p>
+<ul><li>
+no structures are available in the structure selection list or;
+</li>
+<li>
+the scale setting of the layout and <strong>Parameter File</strong>s does not match.
+</li>
+</ul>
+<p>
+Using the <strong>File&gt;Parameter Files</strong> menu, check which Parameter files are loaded. Ensure the scale of the loaded files match that of the layout. Alternately a new Structure could be created using the <strong>Group</strong> command.
+</p>
+<p>
+Refer to <a href="cmdPrmfile.html#cmdPrmfile">section 2.5.7</a> for detail regarding <strong>Parameter File</strong>s or <a href="cmdGroup.html#cmdGroup">section 2.9.4</a> for detail regarding the <strong>Group</strong> command.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>There are no turnouts to choose from in the turnout...</title>
+<link rel="previous" href="MSG_STRUCT_NO_STRUCTS.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_NO_UNCONN_EP.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_TURNOUT_NO_TURNOUT"></a>C.2.103 There are no turnouts to choose from in the turnout...</h1>
+<p>
+This error occurs when;
+</p>
+<ul><li>
+no turnouts are available in the turnouts selection list or;
+</li>
+<li>
+the scale setting of the layout and <strong>Parameter File</strong>s does not match.
+</li>
+</ul>
+<p>
+Using the <strong>File&gt;Parameter Files</strong> menu, check which Parameter files are loaded. Ensure the scale of the loaded files match that of the layout. Alternately a new turnout could be created using the <strong>Turnout Designer</strong> command.
+</p>
+<p>
+Refer to <a href="cmdPrmfile.html#cmdPrmfile">section 2.5.7</a> for detail regarding <strong>Parameter File</strong>s or <a href="cmdTurnoutNew.html#cmdTurnoutNew">section 2.9.9</a> for detail regarding the <strong>Turnout Designer</strong> command.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>There are no unconnected end points for this track</title>
+<link rel="previous" href="MSG_TURNOUT_NO_TURNOUT.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_PULL_FEW_SECTIONS.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_NO_UNCONN_EP"></a>C.2.104 There are no unconnected end points for this track</h1>
+<p>
+The current command operates on the unconnected <em>endpoint</em> of a track, but the <em>endpoints</em> of the chosen track are all connected to other tracks. Use the <strong>Split</strong> command to disconnect the desired <em>endpoint</em> of this track or choose another track.
+</p>
+<p>
+Refer to <a href="cmdSplitTrack.html#cmdSplitTrack">section 2.2.17.1</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>There are too few sections in this loop.</title>
+<link rel="previous" href="MSG_NO_UNCONN_EP.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_NO_REDO.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_PULL_FEW_SECTIONS"></a>C.2.105 There are too few sections in this loop.</h1>
+<p>
+The <strong>Connect</strong> command operates by adding small gaps between other track to make up for the larger gap between the tracks you have selected. In this case you are attempting to close a loop of track with to few sections. Try creating a loop with more sectional track pieces.
+</p>
+<p>
+Refer to <a href="cmdConnect.html#cmdConnect">section 2.2.3</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>There is nothing to redo!</title>
+<link rel="previous" href="MSG_PULL_FEW_SECTIONS.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_NO_UNDO.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_NO_REDO"></a>C.2.106 There is nothing to redo!</h1>
+<p>
+Either the <strong>Undo</strong> command has not been used or another command has been used since, thus no Undo operations are available to be undone.
+</p>
+<p>
+Refer to <a href="cmdUndo.html#cmdUndo">section 2.4.9</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>There is nothing to undo!</title>
+<link rel="previous" href="MSG_NO_REDO.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_TOOMANYSEGSINGROUP.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_NO_UNDO"></a>C.2.107 There is nothing to undo!</h1>
+<p>
+Either no operations have been performed since the current file was opened or all previous operations (up to 10) have been undone.
+</p>
+<p>
+Refer to <a href="cmdUndo.html#cmdUndo">section 2.4.9</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Too many track segments in Group.</title>
+<link rel="previous" href="MSG_NO_UNDO.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CANNOT_CHANGE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_TOOMANYSEGSINGROUP"></a>C.2.108 Too many track segments in Group.</h1>
+<p>
+A group is limited to a maximum of 127 track segments. The number of track segments within the selected group of tracks exceed this number. Select a smaller number of tracks then try again.
+</p>
+<p>
+Refer to <a href="cmdGroup.html#cmdGroup">section 2.9.4</a> for details.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Track cannot be changed.</title>
+<link rel="previous" href="MSG_TOOMANYSEGSINGROUP.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_POINT_INSIDE_TURNTABLE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CANNOT_CHANGE"></a>C.2.109 Track cannot be changed.</h1>
+<p>
+Modifications can only be made to straight or curved tracks.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Track endpoint is within turntable radius.</title>
+<link rel="previous" href="MSG_CANNOT_CHANGE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_MOVE_POINTS_AWAY_NO_INTERSECTION.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_POINT_INSIDE_TURNTABLE"></a>C.2.110 Track endpoint is within turntable radius.</h1>
+<p>
+An attempt has been made to create the <em>endpoint</em> of a track within the radius of the <strong>Turntable</strong>. Move the <em>endpoint</em> of the track (mouse pointer) outside of the radius of the <strong>Turntable</strong>.
+</p>
+<p>
+Refer to <a href="cmdTurntable.html#cmdTurntable">section 2.1.9</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Track intersection not possible; move points away from frog.</title>
+<link rel="previous" href="MSG_POINT_INSIDE_TURNTABLE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_TRK_TOO_SHORT.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_MOVE_POINTS_AWAY_NO_INTERSECTION"></a>C.2.111 Track intersection not possible; move points away from frog.</h1>
+<p>
+The track angle at the current point position does not intersect with the angle of the diverging leg of the new turnout. The points need to be relocated to a position that will allow the angle of the track to intersect the angle of the diverging leg of the new turnout.
+</p>
+<p>
+Refer to <a href="cmdHandLaidTurnout.html#cmdHandLaidTurnout">section 2.1.3</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Track is too short by N.NNN</title>
+<link rel="previous" href="MSG_MOVE_POINTS_AWAY_NO_INTERSECTION.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_RADIUS_LSS_EASE_MIN.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_TRK_TOO_SHORT"></a>C.2.112 Track is too short by N.NNN</h1>
+<p>
+The operation will create a track that is shorter than the minimum length specified on the <strong>Preferences</strong> dialog. Adjust the position of the mouse to increase the length of the track by moving away from the <em>endpoint</em>.
+</p>
+<p>
+Refer to <a href="cmdPref.html#cmdPref">section 2.10.7</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Track radius (N.NNN) is smaller than easement minimum (N.NNN).</title>
+<link rel="previous" href="MSG_TRK_TOO_SHORT.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_SEGMENT_NOT_ON_PATH.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_RADIUS_LSS_EASE_MIN"></a>C.2.113 Track radius (N.NNN) is smaller than easement minimum (N.NNN).</h1>
+<p>
+An attempt was made to create a curved track with a radius smaller than the minimum specified in the <strong>Easement</strong> dialog. Try moving the mouse to different position, creating a curve with a larger radius.
+</p>
+<p>
+Refer to <a href="cmdEasement.html#cmdEasement">section 2.10.4</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Track segment N not on Path for Turnout</title>
+<link rel="previous" href="MSG_RADIUS_LSS_EASE_MIN.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_TOOMANYSEGSINGROUP2.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_SEGMENT_NOT_ON_PATH"></a>C.2.114 Track segment N not on Path for Turnout</h1>
+<p>
+A Path (a sequence of track segments) defines a route through a Turnout from one End Point to another. Each segment should be be present in a least one Path.
+</p>
+<p>
+This can happen when Grouping complex track objects, or when there is more than one path between End Points, for example a siding.
+</p>
+<p>
+Try simplifying the segments or removing any loops in the connected segments.
+</p>
+<p>
+This message can be suppressed by passing the command line option
+</p>
+<ul><li>
+/d suppresscheckpaths (Windows) or
+</li>
+<li>
+-d suppresscheckpaths (Linux/MAC)
+</li>
+</ul>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Track segments appear too late in Group segment list.</title>
+<link rel="previous" href="MSG_SEGMENT_NOT_ON_PATH.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CANT_MODIFY_FROZEN_TRK.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_TOOMANYSEGSINGROUP2"></a>C.2.115 Track segments appear too late in Group segment list.</h1>
+<p>
+A Group's track segments must be in the first 127 segments. You can move the track segments to the start of the segment list.
+</p>
+<p>
+Refer to <a href="cmdGroup.html#cmdGroup">section 2.9.4</a> for details.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Tracks in a frozen layer cannot be modified.</title>
+<link rel="previous" href="MSG_TOOMANYSEGSINGROUP2.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_CANT_MODIFY_MODULE_TRK.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CANT_MODIFY_FROZEN_TRK"></a>C.2.116 Tracks in a frozen layer cannot be modified.</h1>
+<p>
+This operation cannot be executed as the selected track is present on a frozen layer. Track modifications may be performed only on unfrozen layers. Move the object to a <strong>Layer</strong> that's not frozen or unfreeze the layer.
+</p>
+<p>
+Refer to <a href="cmdLayer.html#cmdLayer">section 2.9.5</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Tracks in a module cannot be modified.</title>
+<link rel="previous" href="MSG_CANT_MODIFY_FROZEN_TRK.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_SEGMENTS_DIFFER.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_CANT_MODIFY_MODULE_TRK"></a>C.2.117 Tracks in a module cannot be modified.</h1>
+<p>
+This operation cannot be executed as the selected track is present in a module layer. Track modifications may be performed only on unfrozen, non-module layers.
+</p>
+<p>
+Refer to <a href="cmdLayer.html#cmdLayer">section 2.9.5</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Turnout definition contains non-track segments....</title>
+<link rel="previous" href="MSG_CANT_MODIFY_MODULE_TRK.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_TURNTABLE_DIAM_GTR_0.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_SEGMENTS_DIFFER"></a>C.2.118 Turnout definition contains non-track segments....</h1>
+<p>
+Turnout definitions can include lines and other shapes that represent switch machines, switch stands, roadbed or other objects. Such items can be include when editing Turnout definitions. These same items can also be removed if there's a need to start over again.
+</p>
+<p>
+Refer to <a href="cmdCustmgm.html#cmdCustmgm">section 2.9.2</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Turntable diameter must greater than 0.</title>
+<link rel="previous" href="MSG_SEGMENTS_DIFFER.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_UNDO_ASSERT.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_TURNTABLE_DIAM_GTR_0"></a>C.2.119 Turntable diameter must greater than 0.</h1>
+<p>
+It's not possible to create a turntable with a diameter of less than or equal to 0. Specify a positive value in the <strong>Diameter</strong> field that appears in the Status Bar.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Undo assertion failure %s:%d...</title>
+<link rel="previous" href="MSG_TURNTABLE_DIAM_GTR_0.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_LAYOUT_LINES_SKIPPED.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_UNDO_ASSERT"></a>C.2.120 Undo assertion failure %s:%d...</h1>
+<p>
+Please report this error to the <em>XTrackCAD</em> project development team at SourceForge. The process for reporting errors is outlined in <a href="bugs.html#bugs">section 1.11.1</a>.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>While processing Layout file %s, %d lines were skipped because they were not recognized.</title>
+<link rel="previous" href="MSG_UNDO_ASSERT.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_PARAM_LINES_SKIPPED.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_LAYOUT_LINES_SKIPPED"></a>C.2.121 While processing Layout file %s, %d lines were skipped because they were not recognized.</h1>
+<p>
+The layout file that you loaded contained records that were not recognized. This could be because the file was written by a higher level of <em>XTrackCAD</em> or because it was corrupted.
+</p>
+<p>
+Take full advantage of the latest features within <em>XTrackCAD</em> by visiting the <a href="http://www.xtrkcad.org/" target="_blank"><em>XTrackCAD</em> Fork Website</a> and downloading the latest release.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>While processing Parameter file %s, %d lines were skipped because they were not recognized.</title>
+<link rel="previous" href="MSG_LAYOUT_LINES_SKIPPED.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_BETA_NOTICE.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_PARAM_LINES_SKIPPED"></a>C.2.122 While processing Parameter file %s, %d lines were skipped because they were not recognized.</h1>
+<p>
+The parameter file that you loaded contained records that were not recognized. This could be because the file was designed for a higher level of <em>XTrackCAD</em> or because it was corrupted.
+</p>
+<p>
+Take full advantage of the latest features within <em>XTrackCAD</em> by visiting the <a href="http://www.xtrkcad.org/" target="_blank"><em>XTrackCAD</em> Fork Website</a> and downloading the latest release.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>XTrackCAD Version %s: Please note that this Beta Version of XTrackCAD is still undergoing final testing before its official release. The sole purpose of this Beta Version is to conduct testing and obtain feedback. Should you encounter any bugs, glitches, lack of functionality or other problems, please let us know immediately so we can rectify these accordingly. Your help in this regard is greatly appreciated!</title>
+<link rel="previous" href="MSG_PARAM_LINES_SKIPPED.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_BITMAP_SIZE_WARNING.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_BETA_NOTICE"></a>C.2.123 XTrackCAD Version %s: Please note that this Beta Version of XTrackCAD is still undergoing final testing before its official release. The sole purpose of this Beta Version is to conduct testing and obtain feedback. Should you encounter any bugs, glitches, lack of functionality or other problems, please let us know immediately so we can rectify these accordingly. Your help in this regard is greatly appreciated!</h1>
+<p>
+XTrackCAD Version %s: Please note that this Beta Version of XTrackCAD is still undergoing final testing before its official release. The sole purpose of this Beta Version is to conduct testing and obtain feedback. Should you encounter any bugs, glitches, lack of functionality or other problems, please let us know immediately so we can rectify these accordingly. Your help in this regard is greatly appreciated!
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>You have specified a large bitmap....</title>
+<link rel="previous" href="MSG_BETA_NOTICE.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="MSG_PT_IS_NOT_TRK.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_BITMAP_SIZE_WARNING"></a>C.2.124 You have specified a large bitmap....</h1>
+<p>
+Bitmaps can use a large amount of system resources. They may also take a long time to generate and create a large file.
+</p>
+<p>
+Refer to <a href="cmdOutputbitmap.html#cmdOutputbitmap">section 2.5.2</a> for detail.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>[X Y] is not a track</title>
+<link rel="previous" href="MSG_BITMAP_SIZE_WARNING.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="upgrades.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="MSG_PT_IS_NOT_TRK"></a>C.2.125 [X Y] is not a track</h1>
+<p>
+The current command operates on a track object and a track was not found at the current location (given as X and Y).
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Upgrade From Earlier XTrackCAD Version</title>
+<link rel="previous" href="MSG_PT_IS_NOT_TRK.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="v5.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="upgrades"></a>Appendix D: Upgrade From Earlier <em>XTrackCAD</em> Version</h1>
+<p>
+This section contains helpful information regarding program changes and the effects such may have with respect to layout files made with previous versions of <em>XTrackCAD</em>.
+</p>
+<hr>
+<ul>
+<li><a href="v5.html#v5">D.1 Version 5.x</a></li>
+<li><a href="cmdUpdatetitle.html#cmdUpdatetitle">D.2 Version 2.x</a></li>
+<li><a href="v4.0.3_revisions.html#v4.0.3_revisions">D.3 Version 4.0.3</a></li>
+<li><a href="v4.0.x_revisions.html#v4.0.x_revisions">D.4 Version 4.0.x</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Version 5.x</title>
+<link rel="previous" href="upgrades.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="cmdUpdatetitle.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="v5"></a>D.1 Version 5.x</h1>
+<p>
+Version 5.x.x of XTrackCAD introduced many enhancements an additions including Layout Control Objects, Cornu Tracks and Bezier Tracks and Lines. It is upward compatible from earlier versions but if the new objects are included in layouts, the files will not be readable by earlier versions.
+</p>
+<p>
+Users should take a backup of thier Layout files if they will want to use the previous level of code before opening them.
+</p>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Version 2.x</title>
+<link rel="previous" href="v5.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="v4.0.3_revisions.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="cmdUpdatetitle"></a>D.2 Version 2.x</h1>
+<p>
+<strong>Updated Titles</strong>
+</p>
+<p>
+<img src="png.d/updttl.png">
+</p>
+<p>
+Version 2.0.0 of <em>XTrkCad</em> introduced a change in the way Turnouts and Structures are named. The new method splits the title into 3 parts: Manufacturer, Description and Part Number.
+</p>
+<p>
+To help you when upgrading to the new version, when loading an old <em>XTrkCad</em> layout file, <em>XTrackCAD</em> detects if the layout uses Turnouts and Structures that have titles in the old format. If so this dialog is displayed which allows you to change the titles in your layout to the new format.
+</p>
+<p>
+The title of each different type of Turnout is collected and presented in this dialog. Simply select the Turnout on the list that matches the one displayed and click 'Update'. Repeat for each type of Turnout in your layout.
+</p>
+<p>
+If there is no matching Turnout, click on Ignore. The Turnout will retain the old name as the Description, with a blank Manufacturer and Part Number.
+</p>
+<p>
+Click Cancel to continue loading the file without updating the titles.
+</p>
+<p>
+If you Save your file without updating all the titles you will not be able to update the titles later.
+</p>
+<p>
+If you are looking at old files without making changes then Click on Cancel to load the file without Updates.
+</p>
+<p>
+Not updating the titles prevents the customization of the way titles are presented in various lists and on the layout. Basic operation of <em>XTrackCAD</em> is not affected.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Version 4.0.3</title>
+<link rel="previous" href="cmdUpdatetitle.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="v4.0.x_revisions.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="v4.0.3_revisions"></a>D.3 Version 4.0.3</h1>
+<p>
+<strong>Internationalization</strong>
+</p>
+<p>
+Internationalization or the ability to localize <em>XTrackCAD</em> for use with various languages was adopted during this version upgrade. <em>XTrackCAD</em> is now available with balloon help and daily tips written in US English, Finnish and German. The <em>XTrackCAD</em> development team welcomes anyone who wishes to volunteer with translation of various support files. Let them know by submitting an offer to assist to the <em>XTrackCAD</em> <strong>Feature Tracker</strong> located at the <a href="http://sourceforge.net/tracker/?group_id=151737&amp;atid=781981" target="_blank"><em>XTrackCAD</em> Fork Project Site</a> or the <em>XTrackCAD</em> <strong>Wikka Wish List</strong> located at the <a href="http://www.xtrkcad.org/Wikka/WishList" target="_blank"><em>XTrackCAD</em> Wiki: WishList</a>.
+</p>
+<p>
+<strong>Minor Fixes and Enhancements</strong>
+</p>
+<ul><li>
+Thanks to Martin Fischer, the Button Bar has a much cleaner and sharper look.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Several selections within various Option Menus (Layout, Display, Command and Preferences) have been re-arranged. In some case the order or grouping of menu items changed. In other cases menu items were move to a different menu; still within the sub-set of Option Menus. Our hope is that we've made it easier to locate parameter settings that in past were difficult to locate.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+An new option that allows <em>XTrackCAD</em> to automatically re-open the last layout file has been added to the <strong>Options&gt;Preferences</strong> menu. For detail refer to the &#8216;On Program Startup&#8217; item found in <a href="cmdPref.html#cmdPref">Section 2.10.7</a>.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Significant updates were made to the Atlas N and HO scale parameter files. Diesel engine and freight car information is now contained in four separate parameter files; Atlas HO Scale Cars (<em>atlascho.xtp</em>), Atlas HO Scale Diesel Engines (<em>atlaseho.xtp</em>), Atlas N Scale Cars (<em>atlascn.xtp</em>) and Atlas N Scale Diesel Engines (<em>atlasen.xtp</em>).
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Twenty-one prototypes were added to the American Prototype parameter file (<em>protoam.xtp</em>). The additional prototypes are;
+<p>
+
+</p>
+<ul><li>
+Diesel Engines
+<ul><li>
+Dash 8-32BWH, Dash 8-40B, Dash 8-40BW, Dash 8-40C
+</li>
+<li>
+FP7A
+</li>
+<li>
+H15-44, H16-44, H15/16-44
+</li>
+<li>
+RS4/5
+</li>
+<li>
+RSD12
+</li>
+<li>
+S1, S2, S3, S4
+</li>
+<li>
+SD35, SDP35
+</li>
+</ul>
+
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Freight Cars
+<ul><li>
+Caboose, NE-6
+</li>
+<li>
+Flat, 42'
+</li>
+<li>
+Tank, 55' and Tank, 65'
+</li>
+<li>
+Reefer, 36'
+</li>
+</ul>
+
+</li>
+</ul>
+
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+<em>XTrackCAD</em> users reported difficulty when attempting to activate grid lines in version 4.02. The problem was noticeable only on new installations. A default grid size of zero was found to be the cause of the problem. The default grid size has been changed to 1 thus eliminating the problem.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+A small bug preventing Zooms of less than 1:1 (Refer to <a href="cmdZoom.html#cmdZoom">Section 2.12.4</a> for detail.) was accidentally introduced in version 4.0.1. This problem has been corrected in version 4.0.3.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+When new scale definitions were added to XTrkCad 4.0.2, a small bug broke the file format for some scales (eg., N UK). This problem has been corrected in version 4.0.3.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+Some users of the Linux based application reported the <em>Sticky Commands</em> menu would exceed screen length. Spacing between <em>Sticky Commands</em> options has been improved in order to prevent this problem.
+</li>
+</ul>
+<p>
+
+</p>
+<ul><li>
+We've no idea when certain demo's broke however thanks to the work of Mikko Nissinen, many broken demos are now fixed.
+</li>
+</ul>
+<p>
+
+</p>
+<p>
+<strong>Name Change</strong>
+</p>
+<p>
+With release of this version of <em>XTrackCAD</em> there's been a subtle change in the spelling and punctuation of the applications name. From this version forward, the application will be know as <em>XTrackCAD</em>. Please note the spelling and capitalization of the name.
+</p>
+<p>
+Why was the name changed? This release gives <em>XTrackCAD</em> developers an opportunity to included a much sought after feature; Internationalization (Through i18n). On the surface this doesn't sound that big however having the ability to internationalize or localize the product has great advantages for all users. Not only is there great potential for the application to become available to a larger audience, our hope it that the developer pool will expand which should result in more features being added to the application.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Version 4.0.x</title>
+<link rel="previous" href="v4.0.3_revisions.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="warrantyLicenseCopy.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"><meta name="AppleTitle" content="Warranty" />
+</head>
+<body>
+<h1><a name="v4.0.x_revisions"></a>D.4 Version 4.0.x</h1>
+<p>
+<strong>Check-point Files</strong>
+</p>
+<p>
+Version 4 of <em>XTrkCad</em> introduces a new way of handling check-point files. This will allow resuming your work after a system crash much easier than before.
+</p>
+<p>
+If you start <em>XTrkCad</em> V.4.0.x the first time after an upgrade from a earlier version, a pop-up with the question: "Program was not terminated properly. Do you want to resume working on the previous track plan?"
+</p>
+<p>
+Select "Ignore" only if you're sure that the work from your last session has been correctly saved. If uncertain or restarting after an earlier failure select "Resume".
+</p>
+<p>
+
+</p>
+<p>
+<strong>Help System</strong>
+</p>
+<p>
+The built in help system has been converted to a much more flexible and widely used HTML format. With many new graphics and extensively rewritten text the help information is now up-to-date with recent development.
+</p>
+<p>
+<strong>Layer Colour Settings</strong>
+</p>
+<p>
+Your personal layer color settings are now stored in your preferences. This allows you to apply the same settings to other layouts you design.
+</p>
+<p>
+<strong>Parameter Files Updated</strong>
+</p>
+<p>
+Thanks to Ralph Boyd, Dwayne Ward, Casey Sterbenz and others, many new and updated parameter files were added to this release.
+</p>
+<p>
+<strong>Wheel mouse</strong>
+</p>
+<p>
+The wheel on a wheel mouse can now be used to zoom in and out on a layout design.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Warranty, License and Copying</title>
+<link rel="previous" href="v4.0.x_revisions.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="warranty.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="warrantyLicenseCopy"></a>Appendix E: Warranty, License and Copying</h1>
+<p>
+<em>XTrackCAD</em> is Copyright 2003, Sillub Technology and Copyright 2007, Bob Blackwell and Martin Fischer and Copyright 2020, Martin Fischer, Adam Richards and Dave Bullis.
+</p>
+<p>
+Some icons are taken from the <a href="http://tango.freedesktop.org/" target="_blank">Tango Free Desktop</a> project and are covered by the Creative Commons Attribution-ShareAlike 2.5 License Agreement.
+</p>
+<hr>
+<ul>
+<li><a href="warranty.html#warranty">E.1 Warranty</a></li>
+<li><a href="copydist.html#copydist">E.2 Copying and Distribution</a></li>
+<li><a href="GNUGPLicense.html#GNUGPLicense">E.3 GNU General Public License License</a></li>
+<li><a href="Contributions.html#Contributions">E.4 Contributions</a></li>
+</ul>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Warranty</title>
+<link rel="previous" href="warrantyLicenseCopy.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="copydist.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="warranty"></a>E.1 <a name="i0"></a>Warranty</h1>
+<p>
+<em>XTrackCAD</em> is provided "as is" without warranty of any kind, either express or implied, including, but not limited to warranties of merchantability or fitness for a particular purpose. In no event will Sillub Technology be liable for any damages, including incidental or consequential damages, arising out of the use of the program, even if advised of the possibility of such damages.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Copying and Distribution</title>
+<link rel="previous" href="warranty.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="GNUGPLicense.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="copydist"></a>E.2 <a name="i0"></a>Copying and Distribution</h1>
+<p>
+<em>XTrackCAD</em> is a powerful CAD program for designing Model Railroad layouts.
+</p>
+<p>
+<em>XTrackCAD</em> is Copyright 2003, Sillub Technology and Copyright 2007, Bob Blackwell and Martin Fischer and Copyright 2020, Martin Fischer, Adam Richards and Dave Bullis and licensed as 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.
+</p>
+<p>
+You should have received a copy of the GNU General Public License along with this program; see the file named COPYING or refer to <a href="GNUGPLicense.html#GNUGPLicense">Section E.3</a>. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+</p>
+<p>
+<em>XTrackCAD</em> Fork is a project for further development of the original <em>XTrackCAD</em> software. Refer to the project homepage at http://www.xtrkcad.org/ for news and current releases.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>GNU General Public License License</title>
+<link rel="previous" href="copydist.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="Contributions.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="GNUGPLicense"></a>E.3 <a name="i0"></a>GNU General Public License <a name="i1"></a>License</h1>
+<dl><dd>
+GNU GENERAL PUBLIC LICENSE
+</dd>
+<dd>
+Version 2, June 1991
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+</dd>
+<dd>
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+</dd>
+</dl>
+<p>
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+</p>
+<p>
+<em>Preamble</em>
+</p>
+<p>
+The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too.
+</p>
+<p>
+When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
+</p>
+<p>
+To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
+</p>
+<p>
+For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
+</p>
+<p>
+We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
+</p>
+<p>
+Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
+</p>
+<p>
+Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
+</p>
+<p>
+The precise terms and conditions for copying, distribution and modification follow.
+</p>
+<p>
+GNU GENERAL PUBLIC LICENSE
+</p>
+<p>
+<strong>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</strong>
+</p>
+<p>
+0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
+</p>
+<p>
+Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
+</p>
+<p>
+1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
+</p>
+<p>
+You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
+</p>
+<p>
+2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
+</p>
+<dl><dd>
+a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
+</dd>
+</dl>
+<p>
+These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
+</p>
+<p>
+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
+</p>
+<p>
+In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
+</p>
+<p>
+3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
+</p>
+<dl><dd>
+a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
+</dd>
+</dl>
+<p>
+The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
+</p>
+<p>
+If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
+</p>
+<p>
+4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+</p>
+<p>
+5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
+</p>
+<p>
+6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
+</p>
+<p>
+7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
+</p>
+<p>
+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
+</p>
+<p>
+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
+</p>
+<p>
+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
+</p>
+<p>
+8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
+</p>
+<p>
+9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
+</p>
+<p>
+Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
+</p>
+<p>
+10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
+</p>
+<p>
+NO WARRANTY
+</p>
+<p>
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+</p>
+<p>
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+</p>
+<p>
+<strong>END OF TERMS AND CONDITIONS</strong>
+</p>
+<p>
+<strong>How to Apply These Terms to Your New Programs</strong>
+</p>
+<p>
+If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
+</p>
+<p>
+To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
+</p>
+<dl><dd>
+&lt;one line to give the program's name and a brief idea of what it does.&gt; Copyright (C) &lt;year&gt; &lt;name of author&gt;
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+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.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+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.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+</dd>
+</dl>
+<p>
+Also add information on how to contact you by electronic and paper mail.
+</p>
+<p>
+If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
+</p>
+<dl><dd>
+Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
+</dd>
+</dl>
+<p>
+The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
+</p>
+<p>
+You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
+</p>
+<dl><dd>
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker.
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+&lt;signature of Ty Coon&gt;, 1 April 1989
+</dd>
+</dl>
+<p>
+
+</p>
+<dl><dd>
+Ty Coon, President of Vice
+</dd>
+</dl>
+<p>
+This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License.
+</p>
+<hr>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title>Contributions</title>
+<link rel="previous" href="GNUGPLicense.html">
+<link rel="ToC" href="contents.html">
+<link rel="index" href="IndexPage.html">
+<link rel="next" href="IndexPage.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="Contributions"></a>E.4 <a name="i0"></a>Contributions</h1>
+<p>
+XTrackCAD incorporates the following software:
+</p>
+<pre><code>This program uses <b>FreeImage</b>, a free, open source image library supporting all common bitmap formats.
+See http://freeimage.sourceforge.net for details
+</code></pre>
+<p>
+
+</p>
+<pre><code><b>uthash</b>, <b>utlist</b>
+Copyright (c) 2005-2015, Troy D. Hanson http://troydhanson.github.com/uthash/
+All rights reserved.
+</code></pre>
+<p>
+
+</p>
+<pre><code><b>CJson</b> - https://github.com/DaveGamble/cJSON/blob/master/README.md#license
+Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
+</code></pre>
+<p>
+
+</p>
+<pre><code><b>zlib</b> - https://opensource.org/licenses/zlib-license.php
+</code></pre>
+<p>
+
+</p>
+<pre><code><b>libzip</b> - https://libzip.org/license/
+Copyright (C) 1999-2019 Dieter Baron and Thomas Klausner
+</code></pre>
+<pre><code>The authors can be contacted at &lt;libzip@nih.at&gt;
+</code></pre>
+<pre><code>Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+</code></pre>
+<pre><code>1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+</code></pre>
+<pre><code>2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+</code></pre>
+<pre><code>3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+</code></pre>
+<pre><code>THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</code></pre>
+<p>
+
+</p>
+<pre><code><b>minixml</b> - https://github.com/michaelrsweet/mxml/commit/f166ad1977f2f13295689772a5d9e442f73d46f1
+</code></pre>
+<pre><code>Copyright (C) 2003-2019 by Michael R Sweet.
+The Mini-XML library is licensed under the Apache License Version 2.0 with an
+exception to allow linking against GPL2/LGPL2-only software.
+</code></pre>
+
+<hr><address></address></body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=US-ASCII">
+<title></title>
+<link rel="previous" href="Contributions.html">
+<link rel="ToC" href="contents.html">
+<link rel="stylesheet" type="text/css" href="xtrkcad_lin.css"></head>
+<body>
+<h1><a name="Index"></a>Index</h1><p>
+Archive: <a href="fileM.html#i3">Section 2.5</a>, <a href="cmdLayout.html#i1">Section 2.10.6</a><br>
+AutoSave: <a href="cmdPref.html#i1">Section 2.10.7</a>, <a href="cmdPref.html#i2">Section 2.10.7</a><br>
+Bench-work: <a href="cmdDrawStraights.html#i1">Section 2.3.7</a>, <a href="cmdDrawBench.html#i1">Section 2.3.7.3</a>, <a href="cmdDrawBench.html#i2">Section 2.3.7.3</a>, <a href="cmdDrawStraight.html#i0">Section 3.3.3.5</a><br>
+Bezier Track: <a href="cmdCurve.html#i9">Section 2.1.2</a><br>
+Block: <a href="addM.html#i19">Section 2.1</a>, <a href="cmdBlock.html#i0">Section 2.1.10</a><br>
+Block Gaps: <a href="splitBlockGap.html#i0">Section 2.2.17.2.2</a><br>
+Bridge: <a href="editM.html#i16">Section 2.4</a><br>
+Bridge (Draw or Hide Abutments): <a href="cmdBridge.html#i0">Section 2.4.7</a><br>
+Bugs: <a href="bugs.html#i0">Section 1.11.1</a><br>
+Car Inventory: <a href="cmdCarinv.html#i0">Section 2.9.1</a><br>
+Car Item Dialog: <a href="cmdCarpart.html#i0">Section 2.9.1.1</a><br>
+Car Part Dialog: <a href="carpart.html#i0">Section 2.9.1.2</a><br>
+Car Prototype Dialog: <a href="carprototype.html#i0">Section 2.9.1.3</a><br>
+Center, Curved Track: <a href="cmdCurve.html#i5">Section 2.1.2</a><br>
+Change Scale: <a href="changeM.html#i21">Section 2.2</a><br>
+Choose Parameter Files: <a href="cmdSearchgui.html#i0">Section 2.5.8</a><br>
+Chord, Curved Track: <a href="cmdCurve.html#i7">Section 2.1.2</a><br>
+Circle Fixed Radius: <a href="cmdCircleFixedRadius.html#i0">Section 2.1.1.1</a><br>
+Circle Fixed Tangent: <a href="cmdCircleTangent.html#i0">Section 2.1.1.2</a><br>
+Circle From Center: <a href="cmdCircleCenter.html#i0">Section 2.1.1.3</a><br>
+Circle Radius: <a href="cmdCircle.html#i3">Section 2.1.1</a>, <a href="cmdCircleFixedRadius.html#i1">Section 2.1.1.1</a><br>
+Circles and Filled Circles: <a href="cmdDrawCircles.html#i0">Section 2.3.1</a><br>
+Circle Track: <a href="addM.html#i3">Section 2.1</a>, <a href="cmdCircle.html#i0">Section 2.1.1</a>, <a href="cmdCircle.html#i1">Section 2.1.1</a><br>
+Clear Elevations: <a href="changeM.html#i19">Section 2.2</a><br>
+Clear Filter: <a href="cmdSearchgui.html#i1">Section 2.5.8</a><br>
+Colors Dialog: <a href="cmdRgbcolor.html#i0">Section 2.10.1</a><br>
+Command Option Dialog: <a href="cmdCmdopt.html#i0">Section 2.10.2</a><br>
+Connect Two Tracks: <a href="changeM.html#i12">Section 2.2</a><br>
+Context Sensitive Menus: <a href="mouseBcmd.html#i0">Section 3.4.1</a><br>
+contributions: <a href="Contributions.html#i0">Section E.4</a><br>
+Control: <a href="addM.html#i25">Section 2.1</a>, <a href="cmdControl.html#i0">Section 2.1.13</a><br>
+Control Element: <a href="addM.html#i18">Section 2.1</a><br>
+Control Element, Block: <a href="addM.html#i20">Section 2.1</a><br>
+Control Element, Control: <a href="addM.html#i26">Section 2.1</a><br>
+Control Element, Sensor: <a href="addM.html#i28">Section 2.1</a><br>
+Control Element, Signal: <a href="addM.html#i24">Section 2.1</a><br>
+Control Element, Switchmotor: <a href="addM.html#i22">Section 2.1</a><br>
+Convert: <a href="changeM.html#i22">Section 2.2</a><br>
+Copy: <a href="editM.html#i4">Section 2.4</a><br>
+copying and distribution: <a href="copydist.html#i0">Section E.2</a><br>
+Cornu Easements: <a href="joinCornu.html#i2">Section 2.2.7.4</a>, <a href="chgCornu.html#i0">Section 2.2.8.8</a>, <a href="EasementsCornu.html#i0">Section 2.10.4.1</a><br>
+Cornu Track: <a href="cmdCurve.html#i11">Section 2.1.2</a><br>
+Cornu Turnouts: <a href="cmdTurnoutNew.html#i1">Section 2.9.9</a><br>
+Create Cornu Track: <a href="cmdCornu.html#i0">Section 2.1.2.6</a><br>
+Creating a Cornu: <a href="joinCornu.html#i0">Section 2.2.7.4</a><br>
+Curved Bezier Track: <a href="cmdBezier.html#i0">Section 2.1.2.5</a><br>
+Curved Lines: <a href="cmdDrawCurves.html#i0">Section 2.3.2</a><br>
+Curved Track: <a href="cmdCurve.html#i0">Section 2.1.2</a><br>
+Curved Track, Center: <a href="cmdCurve.html#i6">Section 2.1.2</a><br>
+Curved Track, Chord: <a href="cmdCurve.html#i8">Section 2.1.2</a><br>
+Curved Track, End Point: <a href="cmdCurve.html#i2">Section 2.1.2</a><br>
+Curved Track From Center: <a href="cmdCurveCenter.html#i0">Section 2.1.2.3</a><br>
+Curved Track from Chord: <a href="cmdCurveChord.html#i0">Section 2.1.2.4</a><br>
+Curved Track from End Point: <a href="cmdCurveEndPt.html#i0">Section 2.1.2.1</a><br>
+Curved track from Tangent: <a href="cmdCurveTangent.html#i0">Section 2.1.2.2</a><br>
+Curved Track, Tangent: <a href="cmdCurve.html#i4">Section 2.1.2</a><br>
+Curve Track: <a href="addM.html#i2">Section 2.1</a><br>
+Custom Management: <a href="cmdCustmgm.html#i0">Section 2.9.2</a><br>
+Custom Turntable: <a href="addM.html#i16">Section 2.1</a><br>
+Cut: <a href="editM.html#i3">Section 2.4</a><br>
+Delete: <a href="editM.html#i6">Section 2.4</a>, <a href="cmdDelete.html#i0">Section 2.4.4</a><br>
+Demo Mode: <a href="cmdDemo.html#i0">Section 2.6.1</a><br>
+Deselect All: <a href="editM.html#i11">Section 2.4</a><br>
+Dialogs: <a href="generaloperation.html#i0">Section 3.2</a><br>
+Directories: <a href="dirOverview.html#i0">Section 1.9.1</a>, <a href="installDir.html#i0">Section 1.9.2</a>, <a href="workDir.html#i0">Section 1.9.3</a><br>
+Display Dialog: <a href="cmdDisplay.html#i0">Section 2.10.3</a><br>
+Document: <a href="cmdFileNote.html#i0">Section 2.3.3.3</a><br>
+Draw Benchwork: <a href="cmdDrawBench.html#i0">Section 2.3.7.3</a><br>
+Draw Bezier Curve: <a href="cmdDrawBezierCurve.html#i0">Section 2.3.2.5</a><br>
+Draw Box: <a href="cmdDrawBox.html#i0">Section 2.3.6.1</a><br>
+Draw Circle from Center: <a href="cmdDrawCircleCenter.html#i0">Section 2.3.1.2</a><br>
+Draw Circle from Tangent: <a href="cmdDrawCircleTangent.html#i0">Section 2.3.1.1</a><br>
+Draw Curve from Center: <a href="cmdDrawCurveCenter.html#i0">Section 2.3.2.3</a><br>
+Draw Curve from Chord: <a href="cmdDrawCurveChord.html#i0">Section 2.3.2.4</a><br>
+Draw Curve from End Point: <a href="cmdDrawCurveEndPt.html#i0">Section 2.3.2.1</a><br>
+Draw Curve from Tangent: <a href="cmdDrawCurveTangent.html#i0">Section 2.3.2.2</a><br>
+Draw Dimension Line: <a href="cmdDrawDimLine.html#i0">Section 2.3.7.2</a><br>
+Draw Filled Box: <a href="cmdDrawFilledBox.html#i0">Section 2.3.6.2</a><br>
+Draw Filled Circle from Center: <a href="cmdDrawFilledCircleCenter.html#i0">Section 2.3.1.4</a><br>
+Draw Filled Circle from Tangent: <a href="cmdDrawFilledCircleTangent.html#i0">Section 2.3.1.3</a><br>
+Draw Filled Polygon: <a href="cmdDrawFilledPolygon.html#i0">Section 2.3.6.4</a><br>
+Draw Objects Origin: <a href="DrawOrigin.html#i0">Section 2.3.8</a><br>
+Draw Polygon: <a href="cmdDrawPolygon.html#i0">Section 2.3.6.3</a><br>
+Draw PolyLine: <a href="cmdDrawPolyline.html#i0">Section 2.3.6.5</a><br>
+Draw Shapes: <a href="cmdDrawShapes.html#i0">Section 2.3.6</a><br>
+Draw Straight Line: <a href="cmdDrawLine.html#i0">Section 2.3.7.1</a><br>
+Draw Table Edge: <a href="cmdDrawTableEdge.html#i0">Section 2.3.7.4</a><br>
+Easements: <a href="cmdEasement.html#i0">Section 2.10.4</a>, <a href="EasementsSectional.html#i0">Section 2.10.4.3</a><br>
+Easements with Fixed Sharpness: <a href="EasementsTraditional.html#i0">Section 2.10.4.2</a><br>
+Elevation: <a href="changeM.html#i17">Section 2.2</a><br>
+End Point, Curved Track: <a href="cmdCurve.html#i1">Section 2.1.2</a><br>
+Enhancement Requests: <a href="enhancements.html#i0">Section 1.11.2</a><br>
+Enumerate: <a href="cmdEnum.html#i1">Section 2.9.6</a><br>
+Export: <a href="cmdExport.html#i0">Section 2.5.1</a><br>
+Export to Bitmap: <a href="cmdOutputbitmap.html#i0">Section 2.5.2</a><br>
+Export to DXF: <a href="ExportDXF.html#i0">Section 2.5.3</a><br>
+Export to SVG: <a href="ExportSVG.html#i0">Section 2.5.4</a><br>
+File Types: <a href="fileM.html#i1">Section 2.5</a><br>
+Fixed-track: <a href="addM.html#i10">Section 2.1</a>, <a href="cmdNewFixedTrack.html#i0">Section 2.1.8</a>, <a href="generalTerms.html#i1">Section B.2</a><br>
+Flex-track: <a href="Flex-track.html#i0">Section 2.7.1</a>, <a href="generalTerms.html#i2">Section B.2</a><br>
+Flip: <a href="changeM.html#i5">Section 2.2</a><br>
+Font Selection: <a href="fontSelW.html#i0">Section 2.10.5</a><br>
+Glossary: <a href="windowTerms.html#i0">Section B.1</a>, <a href="generalTerms.html#i0">Section B.2</a><br>
+gnu general public license: <a href="GNUGPLicense.html#i0">Section E.3</a><br>
+Grid Dialog: <a href="cmdGrid.html#i0">Section 2.12.2</a><br>
+Group Dialog: <a href="cmdGroup.html#i0">Section 2.9.4</a><br>
+Hand-laid Turnout: <a href="addM.html#i12">Section 2.1</a><br>
+Hand-laid Turnouts: <a href="cmdHandLaidTurnout.html#i0">Section 2.1.3</a><br>
+Helix: <a href="addM.html#i15">Section 2.1</a><br>
+Helix Track: <a href="cmdHelix.html#i0">Section 2.1.4</a><br>
+Import: <a href="cmdImport.html#i0">Section 2.5.5</a><br>
+Import as Module: <a href="cmdImportM.html#i0">Section 2.5.6</a><br>
+Installation: <a href="MSWinInstall.html#i0">Section 1.5.1</a>, <a href="LinuxInstall.html#i0">Section 1.5.3</a>, <a href="installDir.html#i0">Section 1.9.2</a><br>
+Invert Selection: <a href="editM.html#i12">Section 2.4</a><br>
+Join Lines: <a href="changeM.html#i9">Section 2.2</a><br>
+Join Track: <a href="changeM.html#i10">Section 2.2</a><br>
+Layers Dialog: <a href="cmdLayer.html#i0">Section 2.9.5</a><br>
+Layout Control Elements Dialog: <a href="cmdContmgm.html#i0">Section 2.9.3</a><br>
+Layout Dialog: <a href="cmdLayout.html#i0">Section 2.10.6</a><br>
+Layout File: <a href="fileM.html#i2">Section 2.5</a><br>
+License: <a href="GNUGPLicense.html#i1">Section E.3</a><br>
+Line, Parallel: <a href="addM.html#i9">Section 2.1</a><br>
+Loosen Tracks: <a href="changeM.html#i6">Section 2.2</a><br>
+Mac Installation: <a href="OSXInstall.html#i1">Section 1.5.2</a><br>
+Magnetic Snap: <a href="viewM.html#i2">Section 2.12</a><br>
+Medium Tracks: <a href="editM.html#i27">Section 2.4</a><br>
+Menus: <a href="addM.html#i0">Section 2.1</a>, <a href="changeM.html#i0">Section 2.2</a>, <a href="cmdDraw.html#i0">Section 2.3</a>, <a href="editM.html#i0">Section 2.4</a>, <a href="fileM.html#i0">Section 2.5</a>, <a href="manageM.html#i0">Section 2.9</a>, <a href="optionM.html#i0">Section 2.10</a>, <a href="viewM.html#i0">Section 2.12</a><br>
+Message Types: <a href="messageType.html#i0">Section C.1</a><br>
+Modify: <a href="changeM.html#i8">Section 2.2</a><br>
+Modifying a Cornu: <a href="joinCornu.html#i1">Section 2.2.7.4</a><br>
+Move: <a href="changeM.html#i3">Section 2.2</a><br>
+Move Description: <a href="changeM.html#i15">Section 2.2</a><br>
+Move To Back: <a href="editM.html#i24">Section 2.4</a>, <a href="cmdAboveBelow.html#i1">Section 2.4.2</a><br>
+Move To Current Layer: <a href="editM.html#i7">Section 2.4</a><br>
+Move To Front: <a href="editM.html#i23">Section 2.4</a>, <a href="cmdAboveBelow.html#i0">Section 2.4.2</a><br>
+Navigation: <a href="aboutmanual.html#i0">Section 1.4</a>, <a href="viewM.html#i3">Section 2.12</a>, <a href="mainW.html#i0">Section 3.1</a>, <a href="enterValue.html#i0">Section 3.2.1</a>, <a href="cmdMap.html#i0">Section 3.2.2</a>, <a href="kbshortcuts.html#i0">Section 3.3</a>, <a href="kbshortcuts.html#i1">Section 3.3</a>, <a href="cmdAcclKeys.html#i0">Section 3.4</a><br>
+Note Variants: <a href="cmdNote.html#i0">Section 2.3.3</a><br>
+OSX Installation: <a href="OSXInstall.html#i0">Section 1.5.2</a><br>
+OSX Run Security: <a href="OSXInstall.html#i2">Section 1.5.2</a><br>
+Parallel: <a href="addM.html#i5">Section 2.1</a><br>
+Parallel Line: <a href="addM.html#i8">Section 2.1</a><br>
+Parallel Lines: <a href="cmdParallelLine.html#i0">Section 2.1.5.2</a><br>
+Parallel Track: <a href="addM.html#i6">Section 2.1</a>, <a href="cmdParallelTrack.html#i0">Section 2.1.5.1</a><br>
+Parallel Track or Line: <a href="cmdParallel.html#i0">Section 2.1.5</a><br>
+Parameter Files: <a href="cmdPrmfile.html#i0">Section 2.5.7</a><br>
+Parts List: <a href="cmdEnum.html#i0">Section 2.9.6</a><br>
+Paste: <a href="editM.html#i5">Section 2.4</a><br>
+Preferences Dialog: <a href="cmdPref.html#i0">Section 2.10.7</a><br>
+Price List: <a href="cmdPricelist.html#i0">Section 2.9.7</a><br>
+Printer Margin: <a href="cmdPrintMargin.html#i0">Section 2.5.11</a><br>
+Printer Setup: <a href="printSetup.html#i0">Section 2.5.10</a><br>
+Printing: <a href="cmdPrint.html#i0">Section 2.5.9</a>, <a href="Linux.html#i0">Section 2.5.10.1</a>, <a href="MS-Windows.html#i0">Section 2.5.10.2</a>, <a href="faqsTransfer.html#i0">Section A.1</a><br>
+Profile: <a href="changeM.html#i18">Section 2.2</a><br>
+Properties: <a href="changeM.html#i1">Section 2.2</a><br>
+Protractor: <a href="cmdAngle.html#i0">Section 2.3.5</a><br>
+Raise/Lower Elevations: <a href="changeM.html#i16">Section 2.2</a><br>
+Recompute Elevations: <a href="changeM.html#i20">Section 2.2</a><br>
+Redo: <a href="editM.html#i2">Section 2.4</a>, <a href="cmdUndo.html#i1">Section 2.4.9</a><br>
+Removing XTrackCAD: <a href="uninstall.html#i0">Section 1.10</a><br>
+Roadbed: <a href="editM.html#i18">Section 2.4</a><br>
+Roadbed (Draw or Hide Base): <a href="cmdRoadbed.html#i0">Section 2.4.8</a><br>
+Rotate: <a href="changeM.html#i4">Section 2.2</a><br>
+Ruler: <a href="cmdRuler.html#i0">Section 2.3.4</a><br>
+Run Trains: <a href="cmdTrain.html#i2">Section 2.9.8</a><br>
+Sectional Track: <a href="cmdConnect.html#i0">Section 2.2.3</a><br>
+Select: <a href="changeM.html#i2">Section 2.2</a><br>
+Select All: <a href="editM.html#i8">Section 2.4</a><br>
+Select By Index: <a href="editM.html#i10">Section 2.4</a>, <a href="cmdSelectIndex.html#i0">Section 2.4.1</a><br>
+Select Current Layer: <a href="editM.html#i9">Section 2.4</a><br>
+Select Stranded Track: <a href="editM.html#i13">Section 2.4</a><br>
+Sensor: <a href="addM.html#i27">Section 2.1</a>, <a href="cmdSensor.html#i0">Section 2.1.14</a><br>
+Shortcut Keys: <a href="addshortcutkeys.html#i0">Section 2.4.3</a>, <a href="kbshortcuts.html#i0">Section 3.3</a>, <a href="kbshortcuts.html#i1">Section 3.3</a>, <a href="kbshortcutHotBar.html#i0">Section 3.3.6</a>, <a href="kbshortcutMainCanvas.html#i0">Section 3.3.8</a>, <a href="cmdAcclKeys.html#i0">Section 3.4</a><br>
+Signal: <a href="addM.html#i23">Section 2.1</a>, <a href="cmdSignal.html#i0">Section 2.1.12</a><br>
+Simulation: <a href="cmdTrain.html#i1">Section 2.9.8</a><br>
+Snap Grid: <a href="viewM.html#i1">Section 2.12</a><br>
+Split: <a href="changeM.html#i14">Section 2.2</a><br>
+Start the Program: <a href="startSoftware.html#i0">Section 1.6</a><br>
+Sticky Dialog: <a href="cmdSticky.html#i0">Section 2.10.8</a><br>
+Straight Objects: <a href="cmdDrawStraights.html#i0">Section 2.3.7</a><br>
+Straight Track: <a href="addM.html#i1">Section 2.1</a>, <a href="cmdStraight.html#i0">Section 2.1.6</a>, <a href="mouseBcmd.html#i1">Section 3.4.1</a><br>
+Structure: <a href="addM.html#i14">Section 2.1</a>, <a href="cmdStructure.html#i0">Section 2.1.7</a><br>
+Structures: <a href="hbStructures.html#i0">Section 2.7.2</a><br>
+Switchmotor: <a href="addM.html#i21">Section 2.1</a>, <a href="cmdSwitchmotor.html#i0">Section 2.1.11</a><br>
+Tangent, Curved Track: <a href="cmdCurve.html#i3">Section 2.1.2</a><br>
+Text: <a href="cmdText.html#i0">Section 2.3.9</a><br>
+Text Note: <a href="cmdTextNote.html#i0">Section 2.3.3.1</a><br>
+Thick Tracks: <a href="editM.html#i28">Section 2.4</a><br>
+Thin, Medium and Thick Tracks: <a href="editM.html#i25">Section 2.4</a><br>
+Thin Tracks: <a href="editM.html#i26">Section 2.4</a><br>
+Ties (Draw or Hide Ties): <a href="cmdTies.html#i0">Section 2.4.6</a><br>
+Ties/No Ties: <a href="editM.html#i20">Section 2.4</a><br>
+Tool-bar Configuration: <a href="toolbarM.html#i0">Section 2.12.3</a><br>
+Track, Bezier: <a href="cmdCurve.html#i10">Section 2.1.2</a><br>
+Track, Bridge: <a href="editM.html#i17">Section 2.4</a><br>
+Track, Circle: <a href="addM.html#i4">Section 2.1</a>, <a href="cmdCircle.html#i2">Section 2.1.1</a><br>
+Track, Connect: <a href="changeM.html#i13">Section 2.2</a><br>
+Track, Cornu: <a href="cmdCurve.html#i12">Section 2.1.2</a><br>
+Track, Fixed: <a href="addM.html#i11">Section 2.1</a><br>
+Track, Join: <a href="changeM.html#i11">Section 2.2</a><br>
+Track, Loosen: <a href="changeM.html#i7">Section 2.2</a><br>
+Track No Ties: <a href="editM.html#i22">Section 2.4</a><br>
+Track, Parallel: <a href="addM.html#i7">Section 2.1</a><br>
+Track, Roadbed: <a href="editM.html#i19">Section 2.4</a><br>
+Tracks, Medium: <a href="editM.html#i30">Section 2.4</a><br>
+Tracks, Thick: <a href="editM.html#i31">Section 2.4</a><br>
+Tracks, Thin: <a href="editM.html#i29">Section 2.4</a><br>
+Track Ties: <a href="editM.html#i21">Section 2.4</a><br>
+Track, Tunnel: <a href="editM.html#i15">Section 2.4</a><br>
+Track Width: <a href="editM.html#i32">Section 2.4</a><br>
+Train Mode: <a href="cmdTrain.html#i0">Section 2.9.8</a><br>
+Tunnel: <a href="editM.html#i14">Section 2.4</a><br>
+Tunnel (Hide Tracks): <a href="cmdTunnel.html#i0">Section 2.4.5</a><br>
+Turnout Designer: <a href="cmdTurnoutNew.html#i0">Section 2.9.9</a><br>
+Turnout, Hand-laid: <a href="addM.html#i13">Section 2.1</a><br>
+Turnouts: <a href="hbTurnouts.html#i0">Section 2.7.3</a><br>
+Turntable, Custom: <a href="addM.html#i17">Section 2.1</a><br>
+Turntables: <a href="cmdTurntable.html#i0">Section 2.1.9</a><br>
+Undo: <a href="editM.html#i1">Section 2.4</a>, <a href="cmdUndo.html#i0">Section 2.4.9</a><br>
+Ungroup: <a href="cmdUngroup.html#i0">Section 2.9.11</a><br>
+Update Turnouts and Structures: <a href="cmdRefreshSpecial.html#i0">Section 2.9.10</a><br>
+User Support: <a href="support.html#i0">Section 1.11.3</a><br>
+Warranty: <a href="warranty.html#i0">Section E.1</a><br>
+Weblink: <a href="cmdLinkNote.html#i0">Section 2.3.3.2</a><br>
+Zoom: <a href="cmdZoom.html#i0">Section 2.12.4</a><br>
+Zoom/Pan Shortcut Keys: <a href="cmdPan.html#i0">Section 2.2.11</a>, <a href="cmdZoom.html#i1">Section 2.12.4</a></p>
+<hr><address></address></body>
+</html>
diff --git a/app/dynstring/CMakeLists.txt b/app/dynstring/CMakeLists.txt
index b407805..01aa2b2 100644
--- a/app/dynstring/CMakeLists.txt
+++ b/app/dynstring/CMakeLists.txt
@@ -1,11 +1,17 @@
# compile the dynstring library
-set( SOURCES
- dynstring.c )
-
add_library(dynstring
- ${SOURCES})
+ "")
+
+target_sources(dynstring
+ PRIVATE
+ dynstring.c
+ PUBLIC
+ dynstring.h
+)
if(XTRKCAD_TESTING)
- add_subdirectory( unittest )
-endif(XTRKCAD_TESTING) \ No newline at end of file
+ add_subdirectory(unittest)
+endif()
+
+target_include_directories(dynstring PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") \ No newline at end of file
diff --git a/app/dynstring/dynstring.c b/app/dynstring/dynstring.c
index fd50a0b..ab30f5f 100644
--- a/app/dynstring/dynstring.c
+++ b/app/dynstring/dynstring.c
@@ -2,9 +2,6 @@
* Library for dynamic string functions
*/
-#ifdef HAVE_MALLOC_H
-#include <malloc.h>
-#endif
#include <stdarg.h>
#include <memory.h>
#include <string.h>
@@ -240,7 +237,7 @@ void DynStringFree(DynString *s)
/* Create a new string as a copy of an old one */
DynString *DynStringDupStr(DynString *s2, DynString *s)
{
- DynString nas = NaS;
+// DynString nas = NaS;
/* Not a string? */
if (isnas(s)) {
@@ -445,7 +442,7 @@ void DynStringPrintf(DynString *s, const char *fmt, ...)
{
va_list v;
size_t len;
- DynString nas = NaS;
+// DynString nas = NaS;
/* Are we not a string? */
if (isnas(s)) {
diff --git a/app/dynstring/dynstring.h b/app/dynstring/dynstring.h
index 0a5b972..6a2eb76 100644
--- a/app/dynstring/dynstring.h
+++ b/app/dynstring/dynstring.h
@@ -18,7 +18,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
*/
#ifndef HAVE_DYNSTRING_H
diff --git a/app/dynstring/unittest/CMakeLists.txt b/app/dynstring/unittest/CMakeLists.txt
index 7aad7c1..53b18e1 100644
--- a/app/dynstring/unittest/CMakeLists.txt
+++ b/app/dynstring/unittest/CMakeLists.txt
@@ -2,7 +2,14 @@
add_executable(dynstringtest DynStringTest.c)
target_link_libraries(dynstringtest
- dynstring
- ${LIBS})
+ PRIVATE
+ dynstring
+ ${CMOCKA_LIBRARIES}
+)
-add_test(DynStringTest dynstringtest) \ No newline at end of file
+add_test(DynStringTest dynstringtest)
+
+set_target_properties(
+ dynstringtest
+ PROPERTIES FOLDER UnitTests
+ ) \ No newline at end of file
diff --git a/app/help/CMakeLists.txt b/app/help/CMakeLists.txt
index 34c8d33..efc7b23 100644
--- a/app/help/CMakeLists.txt
+++ b/app/help/CMakeLists.txt
@@ -1,26 +1,72 @@
-PROJECT(help)
+project(messagefile)
-ADD_EXECUTABLE(genhelp genhelp.c cJSON.c cJSON.h)
+#
+# genhelp is used in ..\bin to generate the tooltip texts
-ADD_EXECUTABLE(genmessages genmessages.c)
+add_executable(genhelp "")
+target_sources(genhelp
+ PRIVATE
+ genhelp.c)
-IF(XTRKCAD_USE_GETTEXT)
- SET(GENMESSAGES_OPTS "-i18n")
-ELSE(XTRKCAD_USE_GETTEXT)
- SET(GENMESSAGES_OPTS "")
-ENDIF(XTRKCAD_USE_GETTEXT)
+target_link_libraries(genhelp
+ PUBLIC
+ cJSON
+)
-ADD_CUSTOM_COMMAND(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/messages.h ${CMAKE_CURRENT_BINARY_DIR}/messages.but
+#
+# interpreter for message source file
+
+add_executable(genmessages "")
+
+target_sources(genmessages PUBLIC
+ genmessages.c
+)
+
+set_source_files_properties(
+ genhelp.json messages.in xtrkcad.tip
+ PROPERTIES HEADER_FILE_ONLY TRUE
+)
+
+#
+# Generate message include file and the input file for the help system
+
+if(XTRKCAD_USE_GETTEXT)
+ set(GENHELP_OPTS "-bhi" )
+ set(GENMESSAGES_OPTS "-i18n")
+else()
+ set(GENHELP_OPTS "-bh" )
+ set(GENMESSAGES_OPTS "")
+endif()
+
+add_custom_command(
+ OUTPUT bllnhlp.c
+ DEPENDS genhelp genhelp.json
+ COMMAND genhelp ${GENHELP_OPTS} ${CMAKE_CURRENT_SOURCE_DIR}/genhelp.json ${CMAKE_CURRENT_BINARY_DIR}/bllnhlp.c
+)
+
+add_custom_target(balloonhelp ALL
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/bllnhlp.c
+)
+
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/messages.h ${CMAKE_CURRENT_BINARY_DIR}/messages.but
DEPENDS genmessages ${CMAKE_CURRENT_SOURCE_DIR}/messages.in
- COMMAND genmessages ${GENMESSAGES_OPTS} ${CMAKE_CURRENT_SOURCE_DIR}/messages.in ${CMAKE_CURRENT_BINARY_DIR}/messages.but
- )
+ COMMAND genmessages ${GENMESSAGES_OPTS} ${CMAKE_CURRENT_SOURCE_DIR}/messages.in ${CMAKE_CURRENT_BINARY_DIR}/messages.but
+)
-ADD_CUSTOM_TARGET(Help ALL
+add_custom_target(msgfiles ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/messages.h ${CMAKE_CURRENT_BINARY_DIR}/messages.but
- )
+)
-INSTALL(
+install(
FILES xtrkcad.tip
DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}
- )
+)
+
+set_target_properties(
+ msgfiles
+ balloonhelp
+ genmessages
+ genhelp
+ PROPERTIES FOLDER HelpDocs
+) \ No newline at end of file
diff --git a/app/help/genhelp.c b/app/help/genhelp.c
index be20ff4..2732874 100644
--- a/app/help/genhelp.c
+++ b/app/help/genhelp.c
@@ -14,7 +14,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 <stdlib.h>
@@ -42,7 +42,7 @@ int process(mode_e mode, char * json, FILE * outFile)
goto end;
}
- fputs("/*\n * DO NOT EDIT! This file has been automatically created by genhelp.\n * Changes to this file will be overwritten.\n */\n",
+ fputs("/*\n * DO NOT EDIT! This file has been automatically created by genhelp.\n * Changes to this file will be overwritten. Edit this: genhelp.json\n */\n",
outFile);
fprintf(outFile, "#include <stdio.h>\n");
fprintf(outFile, "#include \"wlib.h\"\n");
diff --git a/app/help/genhelp.json b/app/help/genhelp.json
index 8d75c94..29e275d 100644
--- a/app/help/genhelp.json
+++ b/app/help/genhelp.json
@@ -76,9 +76,10 @@
{"line": "cmdElevation", "contents": "Change Elevations" },
{"line": "cmdEnumerate", "contents": "Generate a Parts List of selected objects" },
{"line": "cmdExportImportSetCmd", "contents": "Set Import/Export mode" },
- {"line": "cmdExport", "contents": "Export a .xti file" },
+ {"line": "cmdExport", "contents": "Export an .xti file" },
{"line": "cmdExportBmap", "contents": "Export a Bitmap image" },
{"line": "cmdExportDXF", "contents": "Export a DXF file" },
+ {"line": "cmdExportSVG", "contents": "Export an SVG file" },
{"line": "cmdFileNote", "contents": "Document" },
{"line": "cmdFlip", "contents": "Flip selected objects" },
{"line": "cmdGrid", "contents": "Adjust snap grid" },
@@ -87,7 +88,7 @@
{"line": "cmdGroup", "contents": "Create a structure from a Group of objects" },
{"line": "cmdHandLaidTurnout", "contents": "Create a hand-laid turnout" },
{"line": "cmdHelix", "contents": "Create a track helix" },
- {"line": "cmdImport", "contents": "Import a .xti file" },
+ {"line": "cmdImport", "contents": "Import an .xti file" },
{"line": "cmdImportModule", "contents": "Import an .xti file as a Module" },
{"line": "cmdJoinTrack", "contents": "Join two tracks" },
{"line": "cmdJoinLine", "contents": "Join two lines or polylines" },
@@ -144,7 +145,7 @@
{"line": "cmdSwitchMotorEdit", "contents": "Edit a switchmotor definition" },
{"line": "cmdText", "contents": "Enter text on the layout" },
{"line": "cmdTextSize", "contents": "Controls the size of the entered text" },
- {"line": "cmdTextNote", "contents": "Plain Text"},
+ {"line": "cmdTextNote", "contents": "Text Note"},
{"line": "cmdTip", "contents": "Tip of the Day window" },
{"line": "cmdTrain", "contents": "Run Trains" },
{"line": "cmdTrainMode", "contents": "Change To Run Trains Mode" },
@@ -164,6 +165,7 @@
{"line": "cmdWidth2", "contents": "Draw tracks with medium lines" },
{"line": "cmdWidth3", "contents": "Draw tracks with thick lines" },
{"line": "cmdZoom", "contents": "Change drawing scale" },
+ {"line": "cmdZoomExtent", "contents": "Zoom to Fit" },
{"line": "cmdZoomIn", "contents": "Zoom in" },
{"line": "cmdZoomOut", "contents": "Zoom out" },
{"line": "cornuMod", "contents": "Modify Cornu" },
@@ -206,6 +208,7 @@
{"line": "menuWindow", "contents": "Window menu" },
{"line": "menuHelp", "contents": "Help menu" },
{"line": "menuHelpRecentMessages", "contents": "Recent error messages and explanations" },
+ {"line": "menuHelpProblemrep", "contents": "Create ZIP file with problem data"},
{"line": "hotBarLeft", "contents": "Move Hot Bar left" },
{"line": "hotBarRight", "contents": "Move Hot Bar right" },
{"line": "infoBarCount", "contents": "Total track count" },
@@ -218,7 +221,7 @@
{"line": "main-canvas", "contents": "Main drawing canvas" },
{"line": "main-commandbar", "contents": "Command buttons" },
{"line": "main-menubar", "contents": "Menus" },
- {"line": "main-titlebar", "contents": "Tile, Filename and Window Manager buttons" },
+ {"line": "main-titlebar", "contents": "Title, Filename and Window Manager buttons" },
{"line": "main-hotbar", "contents": "Turnout and Structure Hot Bar" },
{"line": "main-layers", "contents": "Active layer list and layer buttons" },
{"line": "map-draw", "contents": "Map window" },
@@ -272,7 +275,7 @@
{"line": "carinv-list", "contents": "" },
{"line": "carinv-edit", "contents": "Edit the selected Car Item" },
{"line": "carinv-add", "contents": "Add a new Car Item" },
- {"line": "carinv-delete", "contents": "Delete the selected Car Items" },
+ {"line": "carinv-delete", "contents": "Delete from Inventory or return to Shelf" },
{"line": "carinv-import", "contents": "Import a Car Item .csv file" },
{"line": "carinv-export", "contents": "Export a Car Item .csv file" },
{"line": "carinv-savetext", "contents": "Create a text list of the Car Items" },
@@ -288,10 +291,11 @@
{"line": "contents-label", "contents": "Contents Label for new Parameter file" },
{"line": "curved-fixed-radius", "contents": "Desired curve radius for new track" },
{"line": "custmgm-inx", "contents": "List of custom designed turnouts and structures" },
- {"line": "custmgm-edit", "contents": "Invoke designer editor" },
+ {"line": "custmgm-edit", "contents": "Change description, manufacturer or part number." },
{"line": "custmgm-delete", "contents": "Remove selected entries" },
- {"line": "custmgm-export", "contents": "Copy selected entries to Parameter File" },
- {"line": "custmgm-new", "contents": "Create a New part or prototype" },
+ {"line": "custmgm-export", "contents": "Copy selected entries to parameter file" },
+ {"line": "custmgm-newcar", "contents": "Create the selected type" },
+ {"line": "custmgm-newtype", "contents": "Create a new part or prototype?" },
{"line": "custmgm-ok", "contents": "Update custom file and close" },
{"line": "demo-step", "contents": "Executes the next step of the demo" },
{"line": "demo-next", "contents": "Skip to next demo" },
@@ -386,6 +390,14 @@
{"line": "enum-text", "contents": "This is the list of parts for the layout" },
{"line": "enum-list-prices", "contents": "Enable prices on the Parts List" },
{"line": "enum-list-indexes", "contents": "Enable index listing on the Parts List" },
+ {"line": "fileNote-ok", "contents": "Save the note and close window"},
+ {"line": "fileNote-origx", "contents": "Set the position for the note"},
+ {"line": "fileNote-origy", "contents": "Set the position for the note"},
+ {"line": "fileNote-layer", "contents": "Set the layer for the note"},
+ {"line": "fileNote-title", "contents": "Enter the title of the file" },
+ {"line": "fileNote-filename", "contents": "Enter the path and name of the file"},
+ {"line": "fileNote-openfile", "contents": "Open the document in the default application"},
+ {"line": "fileNote-browse", "contents": "Select the file from your system"},
{"line": "grid-horzspacing", "contents": "Spacing between major grid lines" },
{"line": "grid-horzdivision", "contents": "Allows the spacing to be subdivided" },
{"line": "grid-horzenable", "contents": "Specifies if positions are snaped in this direction" },
@@ -406,24 +418,35 @@
{"line": "helix-elev", "contents": "Elevation difference of Helix End-Points" },
{"line": "helix-radius", "contents": "Helix Radius" },
{"line": "helix-turns", "contents": "Number of turns in the helix" },
- {"line": "helix-angSep", "contents": "Angle betweek helix entrance and exit" },
+ {"line": "helix-angSep", "contents": "Angle between helix entrance and exit" },
{"line": "helix-grade", "contents": "Grade in helix" },
{"line": "helix-vertSep", "contents": "Separation between helix layers including baseboard, track, etc" },
{"line": "index-select", "contents": "Index numbers of objects, separated by commas" },
{"line": "joinfixed-radius", "contents": "Desired curve radius between straight tracks" },
{"line": "layer-layer", "contents": "Layer list" },
{"line": "layer-name", "contents": "Layer Name" },
- {"line": "layer-button", "contents": "Hide Layer Button on MenuBar" },
+ {"line": "layer-button", "contents": "Hide Layer Button on MenuBar" },
{"line": "layer-color", "contents": "Color of layer" },
{"line": "layer-visible", "contents": "Layer is drawn on Main window" },
{"line": "layer-frozen", "contents": "Layer cannot be changed" },
- {"line": "layer-layercolor", "contents": "Use color for this Layer if color-by-layer is set" },
- {"line": "layer-layerlist", "contents": "Other Layers this Layer also shows/hides" },
- {"line": "layer-module", "contents": "Layer is a Module" },
+ {"line": "layer-layercolor", "contents": "Use color for this Layer if color-by-layer is set" },
+ {"line": "layer-layerlist", "contents": "Other Layers this Layer also shows/hides" },
+ {"line": "layer-module", "contents": "Layer is a Module" },
{"line": "layer-onmap", "contents": "Layer is drawn on Map window" },
+ {"line": "layer-inherit", "contents": "Layer inherits settings from Layout" },
+ {"line": "layer-scale", "contents": "Specifies the Modelling Scale for this Layer" },
+ {"line": "layer-gauge", "contents": "Specifies the rail gauge for this Layer" },
+ {"line": "layer-mintrackradius", "contents": "Specifies minimum track radius for this layer. Tracks with a smaller radius are considered exceptional." },
+ {"line": "layer-maxtrackgrade", "contents": "Specifies maximum track grade percent (%) for this layer. Tracks with a larger grade are considered exceptional." },
+ {"line": "layer-tielength", "contents": "Specifies the tie length for this layer." },
+ {"line": "layer-tiewidth", "contents": "Specifies the tie width for this layer." },
+ {"line": "layer-tiespacing", "contents": "Specifies the tie spacing for this layer." },
+ {"line": "layer-add", "contents": "Add a new layer after the selected layer" },
+ {"line": "layer-delete", "contents": "Delete the selected layer. There must be no objects in it." },
+ {"line": "layer-default", "contents": "Reset the layer to layout defaults" },
{"line": "layer-button-count", "contents": "Number of layer buttons to show" },
{"line": "layer-object-count", "contents": "Number of objects in this layer" },
- {"line": "layer-settings", "contents": "Settings File to load when this layer is made current" },
+ {"line": "layer-settings", "contents": "Settings File to load when this layer is made current" },
{"line": "layer-ok", "contents": "" },
{"line": "layer-reset", "contents": "Load layer configuration from default" },
{"line": "layer-save", "contents": "Save current layer configuration as default" },
@@ -435,7 +458,10 @@
{"line": "layout-scale", "contents": "Specifies the Modelling Scale" },
{"line": "layout-gauge", "contents": "Specifies the rail gauge, ie. the distance between the rails" },
{"line": "layout-mintrackradius", "contents": "Specifies minimum track radius (in inches or centimeters). Tracks with a smaller radius are considered exceptional." },
- {"line": "layout-maxtrackgrade", "contents": "Specifies maximum track elevation expressed as a percent (%). Tracks with a larger elevation are considered exceptional." },
+ {"line": "layout-maxtrackgrade", "contents": "Specifies maximum track grade expressed as a percent (%). Tracks with a larger grade are considered exceptional." },
+ {"line": "layout-tielength", "contents": "Specifies the tie length for the layout." },
+ {"line": "layout-tiewidth", "contents": "Specifies the tie width for the layout." },
+ {"line": "layout-tiespacing", "contents": "Specifies the tie spacing for the layout." },
{"line": "layout-browse", "contents": "Select the background image" },
{"line": "layout-clear", "contents": "Remove the background image" },
{"line": "layout-backgroundposX", "contents": "Specifies the x offset of the bottom left of the background image" },
@@ -443,11 +469,18 @@
{"line": "layout-backgroundWidth", "contents": "Specifies how large the bottom edge of the background image should be in model units" },
{"line": "layout-backgroundScreen", "contents": "Specifies the screening of the background image from 0 (none) to 100% (vanishes)" },
{"line": "layout-backgroundAngle", "contents": "Specifies the rotation angle of the background image in degrees" },
- {"line": "layout-write", "contents": "Write a copy of current settings to a named file" },
- {"line": "layout-read", "contents": "Override current settings from a named file" },
- {"line": "move-MoveX", "contents": "Move by X" },
- {"line": "move-MoveY", "contents": "Move by Y" },
- {"line": "newcar-road", "contents": "Roadname" },
+ {"line": "layout-write", "contents": "Write a copy of current settings to a named file" },
+ {"line": "layout-read", "contents": "Override current settings from a named file" },
+ {"line": "linkNote-ok", "contents": "Save the link and close window"},
+ {"line": "linkNote-origx", "contents": "Set the position for the note"},
+ {"line": "linkNote-origy", "contents": "Set the position for the note"},
+ {"line": "linkNote-layer", "contents": "Set the layer for the note"},
+ {"line": "linkNote-title", "contents": "Enter the title of the linked webpage" },
+ {"line": "linkNote-name", "contents": "Enter the URL for the webpage"},
+ {"line": "linkNote-openlink", "contents": "Open the webpage in your browser"},
+ {"line": "move-MoveX", "contents": "Move by X" },
+ {"line": "move-MoveY", "contents": "Move by Y" },
+ {"line": "newcar-road", "contents": "Roadname" },
{"line": "newcar-number", "contents": "Car Number" },
{"line": "note-text", "contents": "This is the body of the Note. To change this select Modify from the File Menu" },
{"line": "note-ok", "contents": "" },
@@ -479,8 +512,7 @@
{"line": "pricelist-cost", "contents": "Updated cost of current selected item" },
{"line": "pricelist-entry", "contents": "Item" },
{"line": "pricelist-inx", "contents": "Selection list for prices" },
- {"line": "pricelist-flexlen", "contents": "Price of specified length of flex-track" },
- {"line": "pricelist-flexunit", "contents": "Price of specified length of flex-track" },
+ {"line": "pricelist-flexlen", "contents": "Length of a piece of flex-track" },
{"line": "pricelist-flexcost", "contents": "Price of specified length of flex-track" },
{"line": "pricelist-ok", "contents": "" },
{"line": "print-centerLine", "contents": "Controls the printing of a centerline of track cmdPrint" },
@@ -508,11 +540,13 @@
{"line": "prmfile-inx", "contents": "List of loaded, shown or hidden parameter files" },
{"line": "prmfile-mode", "contents": "Show parameter files by names or descriptions" },
{"line": "prmfile-action", "contents": "Toggle the shown status of the selected parameter file" },
- {"line": "prmfile-browse", "contents": "Find extra parameter files from the filesystem" },
+ {"line": "prmfile-browse", "contents": "Find extra parameter files from the filesystem" },
+ {"line": "prmfile-favorite","contents": "Bookmark parameter files" },
{"line": "prmfile-find", "contents": "Find parameter files from the system library" },
{"line": "prmfile-ok", "contents": "Update parameter file list" },
- {"line": "prmfile-reload", "contents": "Reload parameter file from list" },
+ {"line": "prmfile-refresh", "contents": "Reload parameter file from list" },
{"line": "prmfile-selectall", "contents": "Select all parameter files shown" },
+ {"line": "prmfile-unload","contents": "Remove parameter files from active list" },
{"line": "profile-canvas", "contents": "Profile of specified path" },
{"line": "profile-clear", "contents": "Clear the profile" },
{"line": "profile-print", "contents": "Print the profile" },
@@ -573,12 +607,20 @@
{"line": "text-fontsize", "contents": "Controls the size of the entered text" },
{"line": "text-color", "contents": "Controls the color of the entered text" },
{"line": "text-boxed", "contents": "If the text is boxed" },
+ {"line": "textNote-ok", "contents": "Save and close editor dialog"},
+ {"line": "textNote-layer", "contents": "Set layer for the note"},
+ {"line": "textNote-origx", "contents": "Set the position for the note"},
+ {"line": "textNote-origy", "contents": "Set the position for the note"},
+ {"line": "textNote-text", "contents": "Enter your additional information here" },
{"line": "tip-text", "contents": "Useful information about the program" },
{"line": "tip-showatstart", "contents": "Show Tip of the Day every time the program starts" },
{"line": "tip-next", "contents": "Show the next Tip of the Day" },
{"line": "tip-prev", "contents": "Show the previous Tip of the Day" },
{"line": "tip-ok", "contents": "" },
- {"line": "toolbarM", "contents": "Controls which Command Buttons are displayed" },
+ {"line": "toolbar-toolbarset", "contents": "List of button groups and their state in the toolbar" },
+ {"line": "toolbar-selectall", "contents": "Set all button groups visible in toolbar" },
+ {"line": "toolbar-invert", "contents": "Invert the visibility of button groups" },
+ {"line": "toolbar-ok", "contents": "Close dialog and configure the toolbar" },
{"line": "train-newcar-index", "contents": "List of Cars" },
{"line": "train-list", "contents": "List of active trains" },
{"line": "train-speed", "contents": "Speed" },
@@ -600,8 +642,8 @@
{"line": "turnoutNew-angle1", "contents": "Angle of the specified track to the center line of the turnout" },
{"line": "turnoutNew-angle2", "contents": "Angle of the specified track to the center line of the turnout" },
{"line": "turnoutNew-angleMode", "contents": "Specifies if angles are entered as Frog Numbers or in degrees" },
- {"line": "turnoutNew-desc1", "contents": "Desciption" },
- {"line": "turnoutNew-desc2", "contents": "Desciption" },
+ {"line": "turnoutNew-desc1", "contents": "Description" },
+ {"line": "turnoutNew-desc2", "contents": "Description" },
{"line": "turnoutNew-label", "contents": "Turnout description (Manuf., Size, Part Number, etc)" },
{"line": "turnoutNew-len0", "contents": "Length from the base to the end of the specified track" },
{"line": "turnoutNew-len1", "contents": "Length from the base to the end of the specified track" },
diff --git a/app/help/genmessages.c b/app/help/genmessages.c
index 6ae121e..ae78f20 100644
--- a/app/help/genmessages.c
+++ b/app/help/genmessages.c
@@ -14,7 +14,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 <stdio.h>
@@ -171,7 +171,7 @@ int main(int argc, char * argv[])
FILE *outF;
char buff[ 4096 ];
char * cp;
- int inFileIdx;
+ int inFileIdx = 1;
enum {m_init, m_title, m_alt, m_help } mode = m_init;
char msgName[256];
char msgAlt[256];
diff --git a/app/help/messages.in b/app/help/messages.in
index 8834dcb..b4c4559 100644
--- a/app/help/messages.in
+++ b/app/help/messages.in
@@ -159,11 +159,19 @@ The current \f{Layer} is where most new objects are created. It's not possible t
Refer to \k{cmdLayer} for detail.
END
+# cgroup.c:GroupOk
+MESSAGE MSG_GROUP_NO_PATHS
+No Paths were detected when grouping selected Tracks.
+HELP
+Please contact development
+END
+
# cgroup.c:doGroup
MESSAGE MSG_CANT_GROUP_BUMPER1
Cannot Group Bumper Track. The track has been unselected.
HELP
Bumper tracks (tracks with 1 endpoint) are not supported by the Group command.
+Convert the Bumper track to a Straight track by Ungrouping \k{cmdUngroup} it first.
END
# cgroup.c:doGroup
@@ -288,11 +296,11 @@ END
# track.c
MESSAGE MSG_CANT_SPLIT_TRK
-Cannot split %s track
+Cannot split track of type %s
ALT
Cannot split TYPE track
HELP
-This type of track cannot be \f{Split}. Only Straight, Curved, Circle and Easement tracks can be \f{Split}. To \f{Split} a Turnout, hold down the Shift key then \e{Left-Click} on the position where the track should be \f{Split}.
+This fixed track like turnouts or or other sectional track cannot be \f{Split}. Only flexible, Cornu, straight and curved tracks can be \f{Split}. To \f{Split} a Turnout, hold down the Shift key then \e{Left-Click} on the position where the track should be \f{Split}.
Refer to \k{cmdSplitTrack} for detail.
END
@@ -863,6 +871,26 @@ The specified command has been disabled in error.
Please report this error to the \e{XTrackCAD} project development team at SourceForge. The process for reporting errors is outlined in \k{bugs}.
END
+# cturnout.c:CheckPaths
+MESSAGE MSG_SEGMENT_NOT_ON_PATH
+Track segment %d not on any Path for %s
+ALT
+Track segment N not on Path for Turnout
+HELP
+A Path (a sequence of track segments) defines a route through a Turnout from one End Point to another.
+Each segment should be be present in a least one Path.
+
+This can happen when Grouping complex track objects, or when there is more than one path between End Points, for example a siding.
+
+Try simplifying the segments or removing any loops in the connected segments.
+
+This message can be suppressed by passing the command line option
+
+\b /d suppresscheckpaths (Windows) or
+
+\b -d suppresscheckpaths (Linux/MAC)
+END
+
# cturnout.c:splitTurnout
MESSAGE MSG_SPLIT_POS_BTW_MERGEPTS
Split position between Turnout Points
@@ -970,6 +998,12 @@ The current command operates on the unconnected \e{endpoint} of a track, but the
Refer to \k{cmdSplitTrack} for detail.
END
+MESSAGE MSG_SPLITTED_OBJECT_TOO_SHORT
+The resulting length of one track piece is shorter than the minimum length of %d.
+HELP
+After the split one of the track segments will be shorter than the minimum length. Select a different position for splitting.
+END
+
# cpull.c
MESSAGE MSG_PULL_FEW_SECTIONS
There are too few sections in this loop.
@@ -999,11 +1033,20 @@ END
# cgroup.c:groupOk
MESSAGE MSG_TOOMANYSEGSINGROUP
-Too many segments in Group.
+Too many track segments in Group.
HELP
-A group is limited to a maximum of 128 track segments. The number of segments within the selected group of tracks exceed this number. Select a smaller number of tracks then try again.
+A group is limited to a maximum of 127 track segments. The number of track segments within the selected group of tracks exceed this number. Select a smaller number of tracks then try again.
-Refer to \k{cmdGroup} for detail.
+Refer to \k{cmdGroup} for details.
+END
+
+# cgroup.c:groupOk
+MESSAGE MSG_TOOMANYSEGSINGROUP2
+Track segments appear too late in Group segment list.
+HELP
+A Group's track segments must be in the first 127 segments. You can move the track segments to the start of the segment list.
+
+Refer to \k{cmdGroup} for details.
END
# cmodify.c
@@ -1151,7 +1194,7 @@ END
# various
MESSAGE MSG_CARINV_DELETE_CONFIRM
-Are you sure you want to delete these %d car(s)?
+Are you sure you want to delete these %d car(s) from your inventory?
#NOHELP
END
@@ -1525,15 +1568,54 @@ END
# misc2.c
MESSAGE MSG_BAD_SCALE_INDEX
-Scale index (%d) is not valid
-#NOHELP
+Scale index (%d) is not valid.
+Do you want use the current layout scale (%s)?
+Or create an "Unknown" scale?
+See 'Help|Recent Messages' for details.
+ALT
+Scale index (NNN) is not valid.
+Do you want use the current layout scale (SCALE)?
+Or create an "Unknown" scale?
+See 'Help|Recent Messages' for details.
+HELP
+Internal error: an invalid scale index has been generated.
+You can substitute the layout's current scale (recommended).
+
+If you do not want to use the currrent scale:
+
+\b Choose "Unknown".
+
+\b Save your file
+
+\b Choose the correct scale from 'Options|Layout'
+
+\b Reload your file
+
+\b You will see a notice that "Scale Unknown is invalid"
+
+\b Choose the layout scale
+
+You can also correct this by selecting the affected tracks, and using the 'Change|Change Scale' \k{cmdRescale} command.
+
+Please report this error to the \e{XTrackCAD} project development team at SourceForge. The process for reporting errors is outlined in \k{bugs}.
END
# misc2.c
MESSAGE MSG_BAD_SCALE_NAME
-Scale %s is not valid
-Please check your %s.xtq file
-#NOHELP
+Scale "%s" is not valid. We will substitute a dummy scale based on "%s".
+See 'Help|Recent Messages' for details.
+ALT
+Scale "SCALE1" is not valid. We will substitute a dummy scale based on "SCALE2".
+See 'Help|Recent Messages' for details.
+HELP
+SCALE1 is not one of known scales defined in "xtrkcad.xtq".
+We will substitute the layout scale info from SCALE2.
+
+If the current scale is not correct, then select it on 'Options|Layout' and reload your layout.
+
+You can also correct this by selecting the affected tracks, and using the 'Change|Change Scale' \k{cmdRescale} command.
+
+Please report this error to the \e{XTrackCAD} project development team at SourceForge. The process for reporting errors is outlined in \k{bugs}.
END
diff --git a/app/i18n/CMakeLists.txt b/app/i18n/CMakeLists.txt
index 6527af8..7e245c5 100644
--- a/app/i18n/CMakeLists.txt
+++ b/app/i18n/CMakeLists.txt
@@ -1,7 +1,10 @@
-PROJECT(i18n)
+#
+# handle translation using gettext
+#
+project(i18n)
# List of the supported locales.
-SET(XTRKCAD_LOCALE_IDS
+set(xtrkcad_locale_ids
cy_GB
de_DE
fi
@@ -11,121 +14,182 @@ SET(XTRKCAD_LOCALE_IDS
)
# Misc variables
-SET(XTC_LOCALE_TARGETS )
-SET(POTFILE "${i18n_BINARY_DIR}/${XTRKCAD_PACKAGE}.pot")
-SET(XGTKEYWORDS
+set(xtc_locale_targets)
+set(potfile "${i18n_BINARY_DIR}/${XTRKCAD_PACKAGE}.pot")
+set(xgtkeywords
--keyword=_
--keyword=p_
- --keyword=N_)
+ --keyword=N_
+)
+
+#
+# Find programs, registry is used on Windows to find the installation path
+
+find_program(xtc_xgettext xgettext PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\;InstallPath]/bin )
+find_program(xtc_msginit msginit PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\;InstallPath]/bin )
+find_program(xtc_msgmerge msgmerge PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\;InstallPath]/bin )
+find_program(xtc_msgfmt msgfmt PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\;InstallPath]/bin )
+set(xtc_translator "" CACHE FILEPATH "Translator program for editing the .po files.")
+mark_as_advanced(xtc_xgettext xtc_msginit xtc_msgmerge
+ xtc_msgfmt xtc_translator)
+
+#
+# Extract the translatable strings from text files
+#
+# Custom string extractor utility
+add_executable(stripmsg stripmsg.c)
-# Programs
-FIND_PROGRAM(XTC_XGETTEXT xgettext PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\;InstallPath]/bin )
-FIND_PROGRAM(XTC_MSGINIT msginit PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\;InstallPath]/bin )
-FIND_PROGRAM(XTC_MSGMERGE msgmerge PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\;InstallPath]/bin )
-FIND_PROGRAM(XTC_MSGFMT msgfmt PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\;InstallPath]/bin )
-SET(XTC_TRANSLATOR "" CACHE FILEPATH "Translator program for editing the .po files.")
-MARK_AS_ADVANCED(XTC_XGETTEXT XTC_MSGINIT XTC_MSGMERGE
- XTC_MSGFMT XTC_TRANSLATOR)
+# Create custom message files list
+file(GLOB_RECURSE xtc_custom_msg_files
+ ${XTrkCAD_SOURCE_DIR}/*.xtq
+ ${XTrkCAD_SOURCE_DIR}/*.xtr
+ ${XTrkCAD_SOURCE_DIR}/*.tip)
+# Extract translatable strings from custom message files to one temporary file
+add_custom_target(
+ custmsg
+ COMMAND stripmsg ${xtc_custom_msg_files} > ${CMAKE_CURRENT_BINARY_DIR}/custmsg.h
+ DEPENDS stripmsg ${xtc_custom_msg_files}
+)
+
+set_target_properties(
+ stripmsg custmsg
+ PROPERTIES FOLDER i18n
+)
+
+#
# Create the list of the original source files.
-FILE(GLOB_RECURSE XGT_SOURCE_FILES
- RELATIVE ${i18n_SOURCE_DIR}
- ${XTrkCAD_SOURCE_DIR}/*.c
- ${XTrkCAD_SOURCE_DIR}/*.h)
-
-# add wlib files that have translatable strings
-FILE(RELATIVE_PATH TEMP_FILENAME ${i18n_SOURCE_DIR} "${wlib_SOURCE_DIR}/mswlib/mswmisc.c")
-LIST(APPEND XGT_SOURCE_FILES ${TEMP_FILENAME})
-
-# Dynamically generated files, such as messages.h and bllnhlp.c, must be added
-# to the list manually to make sure that everything works properly.
-# "FILE(RELATIVE_PATH ..." is used to get rid of the absolute paths like
-# "/home/my_funny_username/very_long_path_to_my_projects/source_file.c"
-# in the .pot and .po files.
-FILE(RELATIVE_PATH TEMP_FILENAME ${i18n_SOURCE_DIR} "${help_BINARY_DIR}/messages.h")
-LIST(APPEND XGT_SOURCE_FILES ${TEMP_FILENAME})
-FILE(RELATIVE_PATH TEMP_FILENAME ${i18n_SOURCE_DIR} "${XTrkCAD_BINARY_DIR}/app/bin/bllnhlp.c")
-LIST(APPEND XGT_SOURCE_FILES ${TEMP_FILENAME})
-FILE(RELATIVE_PATH TEMP_FILENAME ${i18n_SOURCE_DIR} "${CMAKE_CURRENT_BINARY_DIR}/custmsg.h")
-LIST(APPEND XGT_SOURCE_FILES ${TEMP_FILENAME})
+
+get_target_property(sourcefiles xtrkcad-lib SOURCES)
+foreach( file ${sourcefiles})
+ #
+ # do not scan dependent objects / libraries for translatable strings
+ string(FIND "${file}" "TARGET_OBJECTS:" result)
+ if(result EQUAL -1)
+ #
+ # bllnhlp is generated in the build directory and has to be special cased
+ string(COMPARE NOTEQUAL ${file} "bllnhlp.c" RESULT)
+ if(RESULT)
+ cmake_path(ABSOLUTE_PATH file BASE_DIRECTORY ${xtrkcad-lib_SOURCE_DIR} )
+ cmake_path(RELATIVE_PATH file BASE_DIRECTORY ${i18n_SOURCE_DIR})
+ list(APPEND xgt_source_files ${file})
+ endif()
+ endif()
+endforeach()
+
+#
+# add file with translatable strings
+set(SOURCEFILES
+ "${xtrkcad-lib_SOURCE_DIR}/misc.c"
+ "${wlib_SOURCE_DIR}/mswlib/mswmisc.c"
+ "${messagefile_BINARY_DIR}/messages.h"
+ "${CMAKE_CURRENT_BINARY_DIR}/custmsg.h"
+ "${XTrkCAD_BINARY_DIR}/app/help/bllnhlp.c"
+)
+
+foreach( file ${SOURCEFILES})
+ cmake_path(RELATIVE_PATH
+ file
+ BASE_DIRECTORY ${i18n_SOURCE_DIR}
+ )
+ list(APPEND xgt_source_files ${file})
+endforeach()
# Extract strings and create xtrkcad.pot
-ADD_CUSTOM_COMMAND(
- OUTPUT ${POTFILE}
- COMMAND ${XTC_XGETTEXT} ${XGTKEYWORDS} --add-comments=i18n -d ${GETTEXT_PACKAGE} -F -o ${POTFILE} --from-code=ISO-8859-15 ${XGT_SOURCE_FILES}
- DEPENDS xtrkcad ${CMAKE_CURRENT_BINARY_DIR}/custmsg.h
+add_custom_command(
+ OUTPUT ${potfile}
+ COMMAND ${xtc_xgettext}
+ ${xgtkeywords}
+ --add-comments=i18n
+ -d ${GETTEXT_PACKAGE}
+ -F
+ -o ${potfile}
+ --from-code=ISO-8859-15 ${xgt_source_files}
+ DEPENDS custmsg
WORKING_DIRECTORY ${i18n_SOURCE_DIR}
- )
+)
-# Loop through the list of the supported locales
-FOREACH(localeid ${XTRKCAD_LOCALE_IDS})
- SET(POFILE ${i18n_SOURCE_DIR}/${localeid}.po)
- SET(MOFILE_DIR ${i18n_BINARY_DIR}/${localeid}/LC_MESSAGES)
- SET(MOFILE ${MOFILE_DIR}/${XTRKCAD_PACKAGE}.mo)
+
+#
+# function to create and update the po-file for a locale
+
+function(updatepofile locale)
+ set(pofile ${i18n_SOURCE_DIR}/${locale}.po)
+ set(mofile_dir ${i18n_BINARY_DIR}/${locale}/LC_MESSAGES)
+ set(mofile ${mofile_dir}/${XTRKCAD_PACKAGE}.mo)
# Merge .pot file changes to .po file
- ADD_CUSTOM_TARGET(msgmerge-${localeid}
- COMMAND ${XTC_MSGMERGE} -U --backup=none ${POFILE} ${POTFILE}
- DEPENDS ${POTFILE} ${POFILE}
- )
+ add_custom_target(msgmerge-${locale}
+ COMMAND ${xtc_msgmerge} -U --backup=none ${pofile} ${potfile}
+ COMMAND ${xtc_msgfmt} -c -v -o ${mofile} ${pofile}
+ DEPENDS messages ${pofile}
+ )
# If new locale id was added, add .po file creation routine
- IF(NOT EXISTS ${POFILE})
- ADD_CUSTOM_COMMAND(
- OUTPUT ${POFILE}
- COMMAND ${XTC_MSGINIT} -l ${localeid} -o ${POFILE} -i ${POTFILE}
- DEPENDS ${POTFILE}
+ if(NOT EXISTS ${pofile})
+ add_custom_command(
+ OUTPUT ${pofile}
+ COMMAND ${xtc_msginit} -l ${locale} -o ${pofile} -i ${potfile}
+ DEPENDS ${potfile}
)
- ENDIF(NOT EXISTS ${POFILE})
-
- FILE(MAKE_DIRECTORY ${MOFILE_DIR})
+ endif()
- # Compile .po file to binary format .mo file
- ADD_CUSTOM_COMMAND(
- OUTPUT ${MOFILE}
- COMMAND ${XTC_MSGFMT} -c -v -o ${MOFILE} ${POFILE}
- DEPENDS ${POFILE}
- )
+ file(MAKE_DIRECTORY ${mofile_dir})
# If translator program was given, add target to edit .po files with it
- IF(XTC_TRANSLATOR)
- ADD_CUSTOM_TARGET(msgtranslate-${localeid}
- COMMAND ${XTC_TRANSLATOR} ${POFILE}
- )
- ENDIF(XTC_TRANSLATOR)
+ if(xtc_translator)
+ add_custom_target(msgtranslate-${locale}
+ COMMAND ${xtc_translator} ${pofile}
+ )
+ endif()
+
+ # Compile .po file to binary format .mo file
+ add_custom_command(
+ OUTPUT ${mofile}
+ COMMAND ${xtc_msgfmt} -c -v -o ${mofile} ${pofile}
+ DEPENDS ${pofile}
+ )
# Install all .mo files
- INSTALL(
- FILES ${MOFILE}
- DESTINATION ${XTRKCAD_LOCALE_INSTALL_DIR}/${localeid}/LC_MESSAGES
+ install(
+ FILES ${mofile}
+ DESTINATION ${XTRKCAD_LOCALE_INSTALL_DIR}/${locale}/LC_MESSAGES
)
- SET(XTC_LOCALE_TARGETS
- ${XTC_LOCALE_TARGETS}
+ set_target_properties(
+ msgmerge-${locale}
+ PROPERTIES FOLDER i18n
+ )
+
+ set(xtc_locale_targets
+ ${xtc_locale_targets}
${i18n_BINARY_DIR}/${localeid}/LC_MESSAGES/xtrkcad.mo
- )
+ PARENT_SCOPE
+ )
+endfunction()
+
+#
+# Loop through the list of the supported locales
-ENDFOREACH(localeid)
+foreach(localeid ${xtrkcad_locale_ids})
+ updatepofile(${localeid})
+endforeach(localeid)
-# Target to be executed with "make all". Xtrkcad must be built before this to
+
+# xTrackCAD must be built before this to
# make sure that the dynamically generated files messages.h and bllnhlp.c are
# up to date.
-ADD_CUSTOM_TARGET(messages ALL
- DEPENDS xtrkcad ${POTFILE} ${XTC_LOCALE_TARGETS}
- )
+add_custom_target(messages
+ DEPENDS xtrkcad ${potfile}
+)
-# Custom message files list
-FILE(GLOB_RECURSE XTC_CUSTOM_MSG_FILES
- ${XTrkCAD_SOURCE_DIR}/*.xtq
- ${XTrkCAD_SOURCE_DIR}/*.xtr
- ${XTrkCAD_SOURCE_DIR}/*.tip)
+set_target_properties(
+ messages
+ PROPERTIES FOLDER i18n
+)
-# Custom string extractor utility
-ADD_EXECUTABLE(stripmsg stripmsg.c)
+# Utility target for building all translations
+add_custom_target(alltranslations ALL
+ DEPENDS ${xtc_locale_targets}
+)
-# Extract translatable strings from custom message files to one temporary file
-ADD_CUSTOM_COMMAND(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/custmsg.h
- COMMAND stripmsg ${XTC_CUSTOM_MSG_FILES} > ${CMAKE_CURRENT_BINARY_DIR}/custmsg.h
- DEPENDS stripmsg ${XTC_CUSTOM_MSG_FILES}
- )
diff --git a/app/i18n/cy_GB.po b/app/i18n/cy_GB.po
index 7d5f2b4..dbe8a4e 100644
--- a/app/i18n/cy_GB.po
+++ b/app/i18n/cy_GB.po
@@ -2,534 +2,485 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
+#
# Translators:
# Adam J M Richards <adamjmrichards@gmail.com>, 2021
-#
-#, fuzzy
+#
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-11-14 06:45-0800\n"
-"PO-Revision-Date: 2020-08-27 16:39+0000\n"
-"Last-Translator: Adam J M Richards <adamjmrichards@gmail.com>, 2021\n"
+"POT-Creation-Date: 2023-12-27 10:09+0100\n"
+"PO-Revision-Date: 2023-12-27 11:19+0100\n"
+"Last-Translator: Martin Fischer <m_fischer@users.sf.net>\n"
"Language-Team: Welsh (https://www.transifex.com/xtrackcad/teams/112853/cy/)\n"
+"Language: cy\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\n"
+"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
+"11) ? 2 : 3;\n"
+"X-Generator: Poedit 3.4\n"
#: ../bin/archive.c:154 ../bin/archive.c:161 ../bin/archive.c:190
-#: ../bin/archive.c:215 ../bin/archive.c:270 ../bin/archive.c:283
-#: ../bin/archive.c:291 ../bin/archive.c:341 ../bin/archive.c:376
-#: ../bin/archive.c:392 ../bin/archive.c:402 ../bin/archive.c:425
-#: ../bin/cblock.c:490 ../bin/cswitchmotor.c:472 ../bin/dbench.c:143
-#: ../bin/dbitmap.c:426 ../bin/dcar.c:4525 ../bin/dcar.c:4711
-#: ../bin/dcar.c:4721 ../bin/dcar.c:4768 ../bin/dcar.c:4775 ../bin/dcar.c:4793
-#: ../bin/dcar.c:4806 ../bin/dcar.c:4811 ../bin/dcar.c:4840 ../bin/dcar.c:5003
+#: ../bin/archive.c:215 ../bin/archive.c:270 ../bin/archive.c:284
+#: ../bin/archive.c:294 ../bin/archive.c:348 ../bin/archive.c:384
+#: ../bin/archive.c:400 ../bin/archive.c:410 ../bin/archive.c:433
+#: ../bin/cblock.c:505 ../bin/cswitchmotor.c:500 ../bin/dbench.c:147
+#: ../bin/dbitmap.c:427 ../bin/dcar.c:4894 ../bin/dcar.c:5093
+#: ../bin/dcar.c:5103 ../bin/dcar.c:5150 ../bin/dcar.c:5158 ../bin/dcar.c:5176
+#: ../bin/dcar.c:5191 ../bin/dcar.c:5196 ../bin/dcar.c:5225 ../bin/dcar.c:5395
#: ../bin/directory.c:44 ../bin/directory.c:79 ../bin/directory.c:86
-#: ../bin/directory.c:117 ../bin/directory.c:133 ../bin/dxfoutput.c:191
-#: ../bin/fileio.c:215 ../bin/fileio.c:660 ../bin/fileio.c:803
-#: ../bin/fileio.c:863 ../bin/fileio.c:987 ../bin/fileio.c:1053
-#: ../bin/fileio.c:1059 ../bin/fileio.c:1135 ../bin/fileio.c:1145
-#: ../bin/fileio.c:1490 ../bin/fileio.c:1542 ../bin/fileio.c:1594
-#: ../bin/macro.c:152 ../bin/macro.c:806 ../bin/macro.c:853 ../bin/macro.c:874
-#: ../bin/macro.c:1017 ../bin/macro.c:1035 ../bin/macro.c:1307
-#: ../bin/param.c:2189 ../bin/paramfile.c:257 ../bin/paramfilelist.c:390
-#: ../bin/track.c:1152 ../bin/track.c:1692 ../bin/track.c:1998
-#: ../bin/track.c:2002 ../bin/track.c:2014 ../bin/track.c:2078
-#: ../wlib/gtklib/wpref.c:260 ../wlib/gtklib/wpref.c:267
+#: ../bin/directory.c:117 ../bin/directory.c:133 ../bin/dxfoutput.c:205
+#: ../bin/fileio.c:224 ../bin/fileio.c:677 ../bin/fileio.c:835
+#: ../bin/fileio.c:897 ../bin/fileio.c:1022 ../bin/fileio.c:1091
+#: ../bin/fileio.c:1097 ../bin/fileio.c:1189 ../bin/fileio.c:1202
+#: ../bin/fileio.c:1631 ../bin/fileio.c:1680 ../bin/fileio.c:1733
+#: ../bin/macro.c:166 ../bin/macro.c:855 ../bin/macro.c:1010
+#: ../bin/macro.c:1029 ../bin/macro.c:1329 ../bin/param.c:2402
+#: ../bin/paramfile.c:258 ../bin/paramfilelist.c:458 ../bin/track.c:1104
+#: ../bin/track.c:1344 ../bin/track.c:1366 ../bin/track.c:1785
+#: ../bin/track.c:1990 ../bin/track.c:2000 ../bin/track.c:2005
+#: ../bin/track.c:2020 ../bin/track.c:2047 ../bin/track.c:2105
msgid "Continue"
msgstr "Parhewch"
-#: ../bin/cbezier.c:598
+#: ../bin/cbezier.c:631
msgid "Select End-Point - Ctrl unlocks end-point"
msgstr "Dewiswch ddiweddbwynt; +\"ctrl\" yn datgloi pwynt diwedd"
-#: ../bin/cbezier.c:600
+#: ../bin/cbezier.c:633
msgid "Select End-Point"
msgstr "Dewiswch ddiweddbwynt"
-#: ../bin/cbezier.c:632
+#: ../bin/cbezier.c:666
msgid "Not close enough to any valid, selectable point, reselect"
msgstr "Ddim yn ddigon agos at unrhyw bwynt dilys i ddewis, ail-ddewis"
-#: ../bin/cbezier.c:638
+#: ../bin/cbezier.c:672
#, c-format
msgid "Drag point %d to new location and release it"
msgstr "Pwynt llusgo%di leoliad newydd a'i ryddhau"
-#: ../bin/cbezier.c:647 ../bin/cbezier.c:738 ../bin/cbezier.c:740
+#: ../bin/cbezier.c:682 ../bin/cbezier.c:785 ../bin/cbezier.c:788
msgid "Pick any circle to adjust it - Enter to confirm, ESC to abort"
msgstr "Dewiswch unrhyw gylch i'w addasu - ENTER i gadarnhau, ESC i erthylu."
-#: ../bin/cbezier.c:671
+#: ../bin/cbezier.c:707
msgid "Bezier Curve Invalid has identical end points Change End Point"
msgstr ""
"Mae gan gromlin Bezier annilys bwyntiau gorffen union yr un fath. Newid "
"pwynt diwedd"
-#: ../bin/cbezier.c:674
+#: ../bin/cbezier.c:711
#, c-format
msgid "Bezier Curve Invalid has %s Change End Point"
msgstr "Mae gan gromlin Bezier Annilys %s Newid pwynt diwedd"
-#: ../bin/cbezier.c:677
+#: ../bin/cbezier.c:715
msgid "Bezier Curve Invalid has three co-incident points"
msgstr "Mae gan gromlin Bezier Annilys dri phwynt cyd-ddigwyddiad"
-#: ../bin/cbezier.c:679
+#: ../bin/cbezier.c:718
msgid "Bezier is Straight Line"
msgstr "Mae cromlin Bezier yn llinell syth"
-#: ../bin/cbezier.c:681
+#: ../bin/cbezier.c:721
#, c-format
msgid "Bezier %s : Min Radius=%s Length=%s fx=%0.3f fy=%0.3f cusp=%0.3f"
msgstr "Bezier %s : Radiws lleiaf=%s Hyd=%s fx=%0.3f fy=%0.3f cusp=%0.3f"
-#: ../bin/cbezier.c:685
+#: ../bin/cbezier.c:726
#, c-format
msgid "Bezier %s : Min Radius=%s Length=%s"
msgstr "Bezier %s : Radiws lleiaf=%s Hyd=%s"
-#: ../bin/cbezier.c:710
+#: ../bin/cbezier.c:752
msgid "No unconnected End Point to lock to"
msgstr "Dim pwynt terfyn digyswllt i gloi iddo"
-#: ../bin/cbezier.c:728
+#: ../bin/cbezier.c:772
msgid "Bezier curve invalid has identical end points Change End Point"
msgstr ""
-"Mae gan gromlin Bezier annilys bwyntiau terfyn union yr un fath. Newid pwynt"
-" diwedd."
+"Mae gan gromlin Bezier annilys bwyntiau terfyn union yr un fath. Newid pwynt "
+"diwedd."
-#: ../bin/cbezier.c:731
+#: ../bin/cbezier.c:776
#, c-format
msgid "Bezier curve invalid has %s Change End Point"
msgstr "Mae gan gromlin Bezier annilys. Wedi %s. Newid pwynt diwedd."
-#: ../bin/cbezier.c:734
+#: ../bin/cbezier.c:780
msgid "Bezier curve invalid has three co-incident points"
msgstr "Mae cromlin Bezier yn annilys, mae ganddo dri phwynt cyd-ddigwyddiad."
-#: ../bin/cbezier.c:736
+#: ../bin/cbezier.c:783
msgid "Bezier curve is straight line"
msgstr "Mae cromlin Bezier yn llinell syth."
-#: ../bin/cbezier.c:750 ../bin/cbezier.c:764
+#: ../bin/cbezier.c:799 ../bin/cbezier.c:813
msgid "Invalid Bezier Track - end points are identical"
msgstr "Trac Bezier annilys. Mae'r pwyntiau gorffen yn union yr un fath."
-#: ../bin/cbezier.c:757
+#: ../bin/cbezier.c:806
#, c-format
msgid "Invalid Bezier Curve has a %s - Adjust"
msgstr "Mae gan gromlin Bezier annilys %s - Addasu"
-#: ../bin/cbezier.c:761
+#: ../bin/cbezier.c:810
msgid "Invalid Bezier Curve has three coincident points - Adjust"
msgstr "Mae gan gromlin Bezier annilys dri phwynt cyd-ddigwyddiad. Addasu."
-#: ../bin/cbezier.c:769
+#: ../bin/cbezier.c:818
msgid "Create Bezier"
msgstr "Creu Bezier"
-#: ../bin/cbezier.c:852
+#: ../bin/cbezier.c:900
#, c-format
msgid "%s picked - now select a Point"
msgstr "%s wedi'i ddewis - nawr dewis Pwynt"
-#: ../bin/cbezier.c:882 ../bin/ccornu.c:1946
+#: ../bin/cbezier.c:939 ../bin/ccornu.c:2085
msgid "No changes made"
msgstr "Ni wnaed unrhyw newidiadau"
-#: ../bin/cbezier.c:886
+#: ../bin/cbezier.c:943
msgid "Modify Bezier"
msgstr "Addasu Bezier"
-#: ../bin/cbezier.c:900
+#: ../bin/cbezier.c:957
msgid "Modify Bezier Complete"
msgstr "Addasu Bezier yn gyflawn"
-#: ../bin/cbezier.c:904
+#: ../bin/cbezier.c:961
msgid "Modify Bezier Cancelled"
msgstr "Addasu Bezier wedi'i ganslo"
-#: ../bin/cbezier.c:1030 ../bin/cbezier.c:1124
+#: ../bin/cbezier.c:1089 ../bin/cbezier.c:1189
#, c-format
msgid "Place 1st endpoint of Bezier - snap to %s"
msgstr "Rhowch ddiweddbwynt 1af Bezier - Cadwch at %s"
-#: ../bin/cbezier.c:1049 ../bin/ccornu.c:2286 ../bin/ccurve.c:199
-#: ../bin/cstraigh.c:90
+#: ../bin/cbezier.c:1109 ../bin/ccornu.c:2444 ../bin/ccurve.c:205
+#: ../bin/cstraigh.c:92
msgid "Track is different gauge"
msgstr "Mae trac yn fesurydd gwahanol"
-#: ../bin/cbezier.c:1070
+#: ../bin/cbezier.c:1131
msgid "Drag end of first control arm"
msgstr "Llusgwch ddiwedd y fraich reoli gyntaf"
-#: ../bin/cbezier.c:1077
+#: ../bin/cbezier.c:1139
msgid "Drag end of second control arm"
msgstr "Llusgwch ddiwedd yr ail fraich reoli"
-#: ../bin/cbezier.c:1128 ../bin/cbezier.c:1165
+#: ../bin/cbezier.c:1194 ../bin/cbezier.c:1236
#, c-format
msgid "Select other end of Bezier - snap to %s end"
msgstr "Dewiswch ben arall Bezier - cadwch at %s pen"
-#: ../bin/cbezier.c:1160
+#: ../bin/cbezier.c:1231
msgid "Control Arm 1 is too short, try again"
msgstr "Mae braich reoli 1 yn rhy fyr. Ceisio eto."
-#: ../bin/cblock.c:107 ../bin/cblock.c:119 ../bin/cblock.c:166
-#: ../bin/ccontrol.c:168 ../bin/ccontrol.c:422 ../bin/compound.c:708
-#: ../bin/csensor.c:160 ../bin/csensor.c:386 ../bin/csignal.c:235
-#: ../bin/csignal.c:495 ../bin/csignal.c:506 ../bin/csignal.c:532
-#: ../bin/cswitchmotor.c:89 ../bin/cswitchmotor.c:108
-#: ../bin/cswitchmotor.c:221 ../bin/dcontmgm.c:79 ../bin/dlayer.c:578
+#: ../bin/cblock.c:110 ../bin/cblock.c:122 ../bin/cblock.c:169
+#: ../bin/ccontrol.c:168 ../bin/ccontrol.c:425 ../bin/compound.c:745
+#: ../bin/csensor.c:160 ../bin/csensor.c:389 ../bin/csignal.c:236
+#: ../bin/csignal.c:499 ../bin/csignal.c:510 ../bin/csignal.c:536
+#: ../bin/cswitchmotor.c:89 ../bin/cswitchmotor.c:108 ../bin/cswitchmotor.c:228
+#: ../bin/dcontmgm.c:79 ../bin/dlayer.c:543
msgid "Name"
msgstr "Enw"
-#: ../bin/cblock.c:108 ../bin/cblock.c:120 ../bin/cblock.c:167
-#: ../bin/csensor.c:162 ../bin/csensor.c:392 ../bin/csignal.c:495
-#: ../bin/csignal.c:534
+#: ../bin/cblock.c:111 ../bin/cblock.c:123 ../bin/cblock.c:170
+#: ../bin/csensor.c:162 ../bin/csensor.c:395 ../bin/csignal.c:499
+#: ../bin/csignal.c:538
msgid "Script"
msgstr "Sgript"
-#: ../bin/cblock.c:121
+#: ../bin/cblock.c:124
msgid "Segments"
msgstr "Segmentau"
-#: ../bin/cblock.c:168 ../bin/cdraw.c:520 ../bin/cdraw.c:1502
-#: ../bin/cdraw.c:1648 ../bin/cdraw.c:2705 ../bin/cdraw.c:2927
-#: ../bin/cdraw.c:2964 ../bin/ctodesgn.c:169 ../bin/ctodesgn.c:170
-#: ../bin/ctodesgn.c:171 ../bin/ctodesgn.c:172 ../bin/ctodesgn.c:184
-#: ../bin/ctodesgn.c:185 ../bin/ctodesgn.c:235 ../bin/ctodesgn.c:238
-#: ../bin/ctodesgn.c:258 ../bin/ctodesgn.c:263 ../bin/ctodesgn.c:295
-#: ../bin/ctodesgn.c:302 ../bin/ctodesgn.c:304 ../bin/ctodesgn.c:324
-#: ../bin/ctodesgn.c:329 ../bin/ctodesgn.c:361 ../bin/ctodesgn.c:368
-#: ../bin/ctodesgn.c:369 ../bin/ctodesgn.c:390 ../bin/ctodesgn.c:393
-#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:431 ../bin/ctodesgn.c:435
-#: ../bin/ctodesgn.c:442 ../bin/ctodesgn.c:443 ../bin/ctodesgn.c:444
-#: ../bin/ctodesgn.c:466 ../bin/ctodesgn.c:468 ../bin/ctodesgn.c:486
-#: ../bin/ctodesgn.c:488 ../bin/ctodesgn.c:507 ../bin/ctodesgn.c:509
-#: ../bin/ctodesgn.c:536 ../bin/ctodesgn.c:556 ../bin/ctodesgn.c:576
-#: ../bin/ctodesgn.c:596 ../bin/ctodesgn.c:634 ../bin/ctodesgn.c:653
-#: ../bin/ctodesgn.c:654 ../bin/ctrain.c:186 ../bin/tbezier.c:262
-#: ../bin/tcornu.c:315 ../bin/tcurve.c:385 ../bin/tstraigh.c:90
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:184
+#: ../bin/cblock.c:171 ../bin/cdraw.c:560 ../bin/cdraw.c:1573
+#: ../bin/cdraw.c:1720 ../bin/cdraw.c:2843 ../bin/cdraw.c:3070
+#: ../bin/cdraw.c:3109 ../bin/ctodesgn.c:177 ../bin/ctodesgn.c:178
+#: ../bin/ctodesgn.c:179 ../bin/ctodesgn.c:180 ../bin/ctodesgn.c:192
+#: ../bin/ctodesgn.c:193 ../bin/ctodesgn.c:242 ../bin/ctodesgn.c:245
+#: ../bin/ctodesgn.c:268 ../bin/ctodesgn.c:273 ../bin/ctodesgn.c:314
+#: ../bin/ctodesgn.c:321 ../bin/ctodesgn.c:323 ../bin/ctodesgn.c:348
+#: ../bin/ctodesgn.c:353 ../bin/ctodesgn.c:393 ../bin/ctodesgn.c:400
+#: ../bin/ctodesgn.c:401 ../bin/ctodesgn.c:426 ../bin/ctodesgn.c:429
+#: ../bin/ctodesgn.c:432 ../bin/ctodesgn.c:475 ../bin/ctodesgn.c:479
+#: ../bin/ctodesgn.c:486 ../bin/ctodesgn.c:487 ../bin/ctodesgn.c:488
+#: ../bin/ctodesgn.c:514 ../bin/ctodesgn.c:516 ../bin/ctodesgn.c:538
+#: ../bin/ctodesgn.c:540 ../bin/ctodesgn.c:563 ../bin/ctodesgn.c:565
+#: ../bin/ctodesgn.c:599 ../bin/ctodesgn.c:625 ../bin/ctodesgn.c:650
+#: ../bin/ctodesgn.c:674 ../bin/ctodesgn.c:720 ../bin/ctodesgn.c:743
+#: ../bin/ctodesgn.c:744 ../bin/ctrain.c:182 ../bin/tbezier.c:296
+#: ../bin/tcornu.c:332 ../bin/tcurve.c:404 ../bin/tstraigh.c:91
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:186
msgid "Length"
msgstr "Hyd"
-#: ../bin/cblock.c:169 ../bin/cdraw.c:511 ../bin/compound.c:683
-#: ../bin/tbezier.c:249 ../bin/tcornu.c:302 ../bin/tcurve.c:377
-#: ../bin/tease.c:509 ../bin/tstraigh.c:86
+#: ../bin/cblock.c:172 ../bin/cdraw.c:551 ../bin/compound.c:720
+#: ../bin/tbezier.c:283 ../bin/tcornu.c:319 ../bin/tcurve.c:396
+#: ../bin/tease.c:524 ../bin/tstraigh.c:87
msgid "End Pt 1: X,Y"
msgstr "Diwedd Rhan 1: X,Y"
-#: ../bin/cblock.c:170 ../bin/cdraw.c:512 ../bin/compound.c:688
-#: ../bin/tbezier.c:256 ../bin/tcornu.c:307 ../bin/tcurve.c:379
-#: ../bin/tease.c:511 ../bin/tstraigh.c:88
+#: ../bin/cblock.c:173 ../bin/cdraw.c:552 ../bin/compound.c:725
+#: ../bin/tbezier.c:290 ../bin/tcornu.c:324 ../bin/tcurve.c:398
+#: ../bin/tease.c:526 ../bin/tstraigh.c:89
msgid "End Pt 2: X,Y"
msgstr "Diwedd Rhan 2: X,Y"
-#: ../bin/cblock.c:193 ../bin/cblock.c:205 ../bin/cblock.c:574
-#: ../bin/cblock.c:595 ../bin/cblock.c:603 ../bin/cblock.c:673
-#: ../bin/cblock.c:794 ../bin/cblock.c:806 ../bin/cblock.c:844
-#: ../bin/ccontrol.c:202 ../bin/ccontrol.c:215 ../bin/ccontrol.c:227
-#: ../bin/ccontrol.c:483 ../bin/cdraw.c:125 ../bin/cdraw.c:2764
-#: ../bin/cgroup.c:1071 ../bin/cgroup.c:1138 ../bin/cgroup.c:1166
-#: ../bin/cgroup.c:1216 ../bin/cgroup.c:1238 ../bin/cgroup.c:1326
-#: ../bin/cgroup.c:1715 ../bin/cnote.c:67 ../bin/compound.c:744
-#: ../bin/compound.c:759 ../bin/compound.c:792 ../bin/cprint.c:712
-#: ../bin/cprint.c:719 ../bin/cprint.c:1263 ../bin/cpull.c:508
-#: ../bin/cpull.c:523 ../bin/cpull.c:525 ../bin/cpull.c:527 ../bin/cpull.c:688
-#: ../bin/cselect.c:1143 ../bin/cselect.c:1252 ../bin/cselect.c:2131
-#: ../bin/csensor.c:191 ../bin/csensor.c:203 ../bin/csensor.c:441
-#: ../bin/csignal.c:264 ../bin/csignal.c:663 ../bin/csignal.c:731
-#: ../bin/csnap.c:549 ../bin/csnap.c:675 ../bin/cstruct.c:962
-#: ../bin/cstruct.c:1092 ../bin/cswitchmotor.c:247 ../bin/cswitchmotor.c:259
-#: ../bin/cswitchmotor.c:271 ../bin/cswitchmotor.c:283
-#: ../bin/cswitchmotor.c:541 ../bin/cswitchmotor.c:577
-#: ../bin/cswitchmotor.c:712 ../bin/cswitchmotor.c:743 ../bin/ctext.c:172
-#: ../bin/ctodesgn.c:203 ../bin/ctodesgn.c:1198 ../bin/ctodesgn.c:1969
-#: ../bin/ctodesgn.c:2084 ../bin/ctodesgn.c:2383 ../bin/ctrain.c:206
-#: ../bin/cturnout.c:4845 ../bin/cturnout.c:4984 ../bin/cundo.c:205
-#: ../bin/cundo.c:210 ../bin/dbitmap.c:156 ../bin/dbitmap.c:231
-#: ../bin/dbitmap.c:472 ../bin/dcar.c:3850 ../bin/dcar.c:4015
-#: ../bin/dcar.c:4020 ../bin/dcar.c:4024 ../bin/dcar.c:4029 ../bin/dcar.c:4342
-#: ../bin/dcar.c:4450 ../bin/dcar.c:4830 ../bin/dcmpnd.c:392
-#: ../bin/dcmpnd.c:403 ../bin/dcmpnd.c:536 ../bin/dcustmgm.c:205
-#: ../bin/dcustmgm.c:211 ../bin/dcustmgm.c:220 ../bin/dcustmgm.c:245
-#: ../bin/dease.c:240 ../bin/dlayer.c:257 ../bin/dlayer.c:292
-#: ../bin/dlayer.c:1152 ../bin/dlayer.c:1158 ../bin/dlayer.c:1164
-#: ../bin/doption.c:200 ../bin/doption.c:276 ../bin/doption.c:479
-#: ../bin/doption.c:482 ../bin/doption.c:486 ../bin/doption.c:497
-#: ../bin/doption.c:563 ../bin/dprmfile.c:427 ../bin/draw.c:2726
-#: ../bin/fileio.c:171 ../bin/fileio.c:580 ../bin/fileio.c:705
-#: ../bin/fileio.c:707 ../bin/fileio.c:712 ../bin/fileio.c:775
-#: ../bin/fileio.c:1007 ../bin/layout.c:404 ../bin/layout.c:612
-#: ../bin/macro.c:1131 ../bin/macro.c:1135 ../bin/macro.c:1203
-#: ../bin/macro.c:1272 ../bin/macro.c:1513 ../bin/macro.c:1533
-#: ../bin/misc.c:491 ../bin/misc.c:573 ../bin/misc.c:1918 ../bin/misc.c:2050
-#: ../bin/misc.c:2061 ../bin/misc.c:2072 ../bin/misc.c:2168 ../bin/misc.c:3046
-#: ../bin/misc.c:3055 ../bin/misc.c:3075 ../bin/misc.c:3081 ../bin/misc.c:3293
-#: ../bin/misc2.c:523 ../bin/param.c:737 ../bin/param.c:1947
-#: ../bin/param.c:2070 ../bin/param.c:2073 ../bin/param.c:2196
-#: ../bin/param.c:2202 ../bin/paramfile.c:330 ../bin/paramfile.c:332
-#: ../bin/paramfile.c:337 ../bin/paramfile.c:361 ../bin/paramfile.c:387
-#: ../bin/paramfile.c:393 ../bin/paramfilelist.c:103
-#: ../bin/paramfilelist.c:123 ../bin/paramfilelist.c:137
-#: ../bin/paramfilelist.c:201 ../bin/tease.c:1108 ../bin/track.c:1706
-#: ../wlib/gtklib/wpref.c:131
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:636
+#: ../bin/cblock.c:198 ../bin/cblock.c:210 ../bin/cblock.c:592
+#: ../bin/cblock.c:613 ../bin/cblock.c:621 ../bin/cblock.c:693
+#: ../bin/cblock.c:814 ../bin/cblock.c:826 ../bin/cblock.c:864
+#: ../bin/ccontrol.c:203 ../bin/ccontrol.c:216 ../bin/ccontrol.c:228
+#: ../bin/ccontrol.c:489 ../bin/cdraw.c:125 ../bin/cdraw.c:2903
+#: ../bin/cgroup.c:1156 ../bin/cgroup.c:1260 ../bin/cgroup.c:1267
+#: ../bin/cgroup.c:1320 ../bin/cgroup.c:1343 ../bin/cgroup.c:1437
+#: ../bin/cgroup.c:1642 ../bin/cgroup.c:1867 ../bin/cnote.c:67
+#: ../bin/compound.c:785 ../bin/compound.c:801 ../bin/compound.c:835
+#: ../bin/cprint.c:746 ../bin/cprint.c:1312 ../bin/cprint.c:1445
+#: ../bin/cpull.c:531 ../bin/cpull.c:546 ../bin/cpull.c:548 ../bin/cpull.c:550
+#: ../bin/cpull.c:721 ../bin/cselect.c:2029 ../bin/csensor.c:192
+#: ../bin/csensor.c:204 ../bin/csensor.c:446 ../bin/csnap.c:591
+#: ../bin/csnap.c:733 ../bin/csignal.c:266 ../bin/csignal.c:678
+#: ../bin/csignal.c:748 ../bin/cstruct.c:1041 ../bin/cstruct.c:1180
+#: ../bin/cswitchmotor.c:257 ../bin/cswitchmotor.c:269
+#: ../bin/cswitchmotor.c:281 ../bin/cswitchmotor.c:293
+#: ../bin/cswitchmotor.c:570 ../bin/cswitchmotor.c:608
+#: ../bin/cswitchmotor.c:746 ../bin/cswitchmotor.c:777 ../bin/ctext.c:172
+#: ../bin/ctodesgn.c:211 ../bin/ctodesgn.c:1309 ../bin/ctodesgn.c:2138
+#: ../bin/ctodesgn.c:2255 ../bin/ctodesgn.c:2578 ../bin/ctrain.c:205
+#: ../bin/cturnout.c:2973 ../bin/cturnout.c:3123 ../bin/cundo.c:260
+#: ../bin/cundo.c:266 ../bin/dbitmap.c:157 ../bin/dbitmap.c:232
+#: ../bin/dbitmap.c:473 ../bin/dcar.c:4125 ../bin/dcar.c:4297
+#: ../bin/dcar.c:4302 ../bin/dcar.c:4306 ../bin/dcar.c:4312 ../bin/dcar.c:4662
+#: ../bin/dcar.c:4778 ../bin/dcar.c:5215 ../bin/dcmpnd.c:419
+#: ../bin/dcmpnd.c:435 ../bin/dcmpnd.c:582 ../bin/dcustmgm.c:219
+#: ../bin/dcustmgm.c:226 ../bin/dcustmgm.c:236 ../bin/dcustmgm.c:261
+#: ../bin/dease.c:251 ../bin/dlayer.c:336 ../bin/dlayer.c:373
+#: ../bin/dlayer.c:842 ../bin/dlayer.c:1392 ../bin/dlayer.c:1398
+#: ../bin/dlayer.c:1404 ../bin/doption.c:202 ../bin/doption.c:287
+#: ../bin/doption.c:497 ../bin/doption.c:500 ../bin/doption.c:504
+#: ../bin/doption.c:516 ../bin/doption.c:591 ../bin/dprmfile.c:431
+#: ../bin/draw.c:2986 ../bin/fileio.c:180 ../bin/fileio.c:595
+#: ../bin/fileio.c:727 ../bin/fileio.c:730 ../bin/fileio.c:736
+#: ../bin/fileio.c:806 ../bin/fileio.c:1044 ../bin/layout.c:553
+#: ../bin/layout.c:819 ../bin/layout.c:994 ../bin/macro.c:1133
+#: ../bin/macro.c:1138 ../bin/macro.c:1216 ../bin/macro.c:1294
+#: ../bin/macro.c:1542 ../bin/macro.c:1563 ../bin/menu.c:272 ../bin/menu.c:283
+#: ../bin/menu.c:294 ../bin/menu.c:459 ../bin/menu.c:497 ../bin/menu.c:607
+#: ../bin/misc.c:491 ../bin/misc.c:1054 ../bin/misc.c:1063 ../bin/misc.c:1083
+#: ../bin/misc.c:1089 ../bin/misc.c:1274 ../bin/param.c:787 ../bin/param.c:2132
+#: ../bin/param.c:2274 ../bin/param.c:2278 ../bin/param.c:2410
+#: ../bin/param.c:2418 ../bin/paramfile.c:336 ../bin/paramfile.c:339
+#: ../bin/paramfile.c:345 ../bin/paramfile.c:371 ../bin/paramfile.c:400
+#: ../bin/paramfile.c:406 ../bin/paramfilelist.c:131 ../bin/paramfilelist.c:183
+#: ../bin/paramfilelist.c:236 ../bin/scale.c:305 ../bin/scale.c:948
+#: ../bin/scale.c:1084 ../bin/tease.c:1167 ../bin/track.c:1801
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:677
msgid "Ok"
msgstr "Iawn"
-#: ../bin/cblock.c:210
+#: ../bin/cblock.c:215
msgid "Change block"
msgstr "Newid Bloc"
-#: ../bin/cblock.c:262 ../bin/cswitchmotor.c:339
+#: ../bin/cblock.c:269 ../bin/cswitchmotor.c:352
#, c-format
msgid "(%d): Layer=%u %s"
msgstr "(%d): Haen=%u %s"
-#: ../bin/cblock.c:286 ../bin/cblock.c:996
+#: ../bin/cblock.c:293 ../bin/cblock.c:1027
msgid "Block"
msgstr "Bloc"
-#: ../bin/cblock.c:490
+#: ../bin/cblock.c:504
#, c-format
msgid "resolveBlockTrack: T%d[%d]: T%d doesn't exist"
msgstr "resolveBlockTrack: T%d[%d]: T%d ddim yn bodoli"
-#: ../bin/cblock.c:574 ../bin/cblock.c:806
+#: ../bin/cblock.c:592 ../bin/cblock.c:826
msgid "Block must have a name!"
msgstr "rhaid bod enw ar bloc"
-#: ../bin/cblock.c:603
-msgid "Block is discontigious!"
+#: ../bin/cblock.c:621
+#, fuzzy
+msgid "Block is discontiguous!"
msgstr "bloc yn amharchus"
-#: ../bin/cblock.c:608
+#: ../bin/cblock.c:626
msgid "Create block"
msgstr "Creu bloc"
-#: ../bin/cblock.c:655
+#: ../bin/cblock.c:674
msgid "Non track object skipped!"
msgstr "Gwrthrych heb fod yn drac"
-#: ../bin/cblock.c:659
+#: ../bin/cblock.c:678
msgid "Selected track is already in a block, skipped!"
msgstr "Trac dethol eisoes mewn bloc - wedi'i hepgor"
-#: ../bin/cblock.c:673
+#: ../bin/cblock.c:692
msgid "Create Block"
msgstr "Creu Bloc"
-#: ../bin/cblock.c:703 ../bin/cblock.c:735
+#: ../bin/cblock.c:722 ../bin/cblock.c:754
msgid "Select a track"
msgstr "Dewiswch drac"
-#: ../bin/cblock.c:712 ../bin/cblock.c:743
+#: ../bin/cblock.c:731 ../bin/cblock.c:762
msgid "Not a block!"
msgstr "Ddim yn floc!"
-#: ../bin/cblock.c:748
+#: ../bin/cblock.c:767
#, c-format
msgid "Really delete block %s?"
msgstr "Mewn gwirionedd dileu bloc %s?"
-#: ../bin/cblock.c:748 ../bin/ccornu.c:2753 ../bin/ccornu.c:2966
-#: ../bin/cdraw.c:129 ../bin/cgroup.c:1077 ../bin/cpull.c:646
-#: ../bin/csignal.c:709 ../bin/cswitchmotor.c:668 ../bin/ctodesgn.c:2659
-#: ../bin/ctodesgn.c:3213 ../bin/ctrain.c:2512 ../bin/dcar.c:3965
-#: ../bin/dcar.c:4054 ../bin/dcar.c:4137 ../bin/dcar.c:4156 ../bin/dcar.c:4475
-#: ../bin/dcar.c:4895 ../bin/dcontmgm.c:161 ../bin/dcustmgm.c:153
-#: ../bin/misc.c:1328 ../bin/misc.c:1335 ../bin/misc.c:1407
-#: ../bin/track.c:1708 ../bin/track.c:1805 ../bin/track.c:1822
+#: ../bin/cblock.c:767 ../bin/ccornu.c:2952 ../bin/ccornu.c:3176
+#: ../bin/cdraw.c:130 ../bin/cgroup.c:1162 ../bin/command.c:390
+#: ../bin/command.c:397 ../bin/command.c:458 ../bin/cpull.c:673
+#: ../bin/csignal.c:725 ../bin/cswitchmotor.c:700 ../bin/ctodesgn.c:2891
+#: ../bin/ctodesgn.c:3505 ../bin/ctrain.c:2606 ../bin/dcar.c:4245
+#: ../bin/dcar.c:4343 ../bin/dcar.c:4433 ../bin/dcar.c:4459 ../bin/dcar.c:4843
+#: ../bin/dcar.c:5284 ../bin/dcustmgm.c:162 ../bin/dcontmgm.c:167
+#: ../bin/track.c:1803 ../bin/track.c:1905 ../bin/track.c:1923
msgid "Yes"
msgstr "ie"
-#: ../bin/cblock.c:748 ../bin/ccornu.c:2753 ../bin/ccornu.c:2966
-#: ../bin/cdraw.c:129 ../bin/cgroup.c:1077 ../bin/cpull.c:646
-#: ../bin/csignal.c:709 ../bin/cswitchmotor.c:668 ../bin/ctodesgn.c:2659
-#: ../bin/ctodesgn.c:3213 ../bin/ctrain.c:2512 ../bin/dcar.c:3965
-#: ../bin/dcar.c:4054 ../bin/dcar.c:4137 ../bin/dcar.c:4156 ../bin/dcar.c:4475
-#: ../bin/dcar.c:4895 ../bin/dcontmgm.c:161 ../bin/dcustmgm.c:153
-#: ../bin/misc.c:1328 ../bin/misc.c:1335 ../bin/misc.c:1407
-#: ../bin/track.c:1708 ../bin/track.c:1805 ../bin/track.c:1822
+#: ../bin/cblock.c:767 ../bin/ccornu.c:2953 ../bin/ccornu.c:3177
+#: ../bin/cdraw.c:130 ../bin/cgroup.c:1162 ../bin/command.c:390
+#: ../bin/command.c:397 ../bin/command.c:458 ../bin/cpull.c:674
+#: ../bin/csignal.c:725 ../bin/cswitchmotor.c:700 ../bin/ctodesgn.c:2891
+#: ../bin/ctodesgn.c:3505 ../bin/ctrain.c:2606 ../bin/dcar.c:4245
+#: ../bin/dcar.c:4343 ../bin/dcar.c:4433 ../bin/dcar.c:4459 ../bin/dcar.c:4843
+#: ../bin/dcar.c:5284 ../bin/dcustmgm.c:162 ../bin/dcontmgm.c:168
+#: ../bin/track.c:1803 ../bin/track.c:1905 ../bin/track.c:1923
msgid "No"
msgstr "na"
-#: ../bin/cblock.c:749
+#: ../bin/cblock.c:769
msgid "Delete Block"
msgstr "Dileu bloc"
-#: ../bin/cblock.c:794
+#: ../bin/cblock.c:814
#, c-format
msgid "Deleting block %s"
msgstr "Dileu bloc %s nawr"
-#: ../bin/cblock.c:810
+#: ../bin/cblock.c:830
msgid "Modify Block"
msgstr "Addasu bloc"
-#: ../bin/cblock.c:843
+#: ../bin/cblock.c:863
msgid "Edit block"
msgstr "Golygu bloc"
-#: ../bin/cblock.c:849
+#: ../bin/cblock.c:869
#, c-format
msgid "Edit block %d"
msgstr "Golygu bloc %d"
-#: ../bin/ccontrol.c:169 ../bin/csensor.c:161 ../bin/csignal.c:236
-#: ../bin/ctrain.c:184
-msgid "Position"
-msgstr "Swydd"
-
-#: ../bin/ccontrol.c:170 ../bin/ccontrol.c:428
-msgid "On Script"
-msgstr "Ar sgript"
-
-#: ../bin/ccontrol.c:171 ../bin/ccontrol.c:430
-msgid "Off Script"
-msgstr "Oddi ar y sgript"
-
-#: ../bin/ccontrol.c:237
-msgid "Change Control"
-msgstr "Rheoli Newid"
-
-#: ../bin/ccontrol.c:279 ../bin/csensor.c:249
-#, c-format
-msgid "(%d [%s]): Layer=%u, at %0.3f,%0.3f"
-msgstr "(%d [%s]): Hean=%u, yn %0.3f,%0.3f"
-
-#: ../bin/ccontrol.c:292 ../bin/ccontrol.c:634
-msgid "Control"
-msgstr "Rheoli"
-
-#: ../bin/ccontrol.c:424 ../bin/csensor.c:388 ../bin/csignal.c:508
-msgid "Origin X"
-msgstr "Tarddiad X"
-
-#: ../bin/ccontrol.c:426 ../bin/csensor.c:390 ../bin/csignal.c:510
-msgid "Origin Y"
-msgstr "Tarddiad Y"
-
-#: ../bin/ccontrol.c:442
-msgid "Create Control"
-msgstr "Creu Rheolaeth"
-
-#: ../bin/ccontrol.c:445
-msgid "Modify Control"
-msgstr "Addasu Rheolaeth"
-
-#: ../bin/ccontrol.c:482
-msgid "Edit control"
-msgstr "Golygu Rheolaeth"
-
-#: ../bin/ccontrol.c:523
-msgid "Place control"
-msgstr "Rhowch Reolaeth"
-
-#: ../bin/ccornu.c:195 ../bin/ccornu.c:198 ../bin/ccornu.c:201
-#: ../bin/ccornu.c:255
+#: ../bin/ccornu.c:193 ../bin/ccornu.c:196 ../bin/ccornu.c:199
+#: ../bin/ccornu.c:253
#, c-format
msgid "%s FlexTrack"
msgstr "%s Trac Hyblyg"
-#: ../bin/ccornu.c:249
+#: ../bin/ccornu.c:247
msgid " FLEX "
msgstr "FLEX"
-#: ../bin/ccornu.c:897 ../bin/cjoin.c:962 ../bin/cmisc.c:57
+#: ../bin/ccornu.c:964 ../bin/cjoin.c:1063 ../bin/cmisc.c:55
msgid "First"
msgstr "Yn gyntaf"
-#: ../bin/ccornu.c:904 ../bin/cjoin.c:970
+#: ../bin/ccornu.c:971 ../bin/cjoin.c:1071
msgid "Second"
msgstr "Ail"
-#: ../bin/ccornu.c:975 ../bin/ccornu.c:1998 ../bin/ccornu.c:2028
-#: ../bin/tcornu.c:836 ../bin/tcornu.c:1321
+#: ../bin/ccornu.c:1047 ../bin/ccornu.c:2141 ../bin/ccornu.c:2172
+#: ../bin/tcornu.c:877 ../bin/tcornu.c:1387
#, c-format
msgid ""
"Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] "
"c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"
msgstr ""
-"Methodd creu Cornu p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] "
-"c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"
+"Methodd creu Cornu p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] c2[%0.3f,"
+"%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"
-#: ../bin/ccornu.c:1011 ../bin/ccornu.c:1633 ../bin/ccornu.c:1652
-#: ../bin/tbezier.c:250 ../bin/tbezier.c:257 ../bin/tcornu.c:303
-#: ../bin/tcornu.c:308 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:176
+#: ../bin/ccornu.c:1084 ../bin/ccornu.c:1757 ../bin/ccornu.c:1778
+#: ../bin/tbezier.c:284 ../bin/tbezier.c:291 ../bin/tcornu.c:320
+#: ../bin/tcornu.c:325 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:178
msgid "End Angle"
msgstr "Ongl ddiwedd"
-#: ../bin/ccornu.c:1014 ../bin/ccornu.c:1632 ../bin/ccornu.c:1651
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:177
+#: ../bin/ccornu.c:1087 ../bin/ccornu.c:1756 ../bin/ccornu.c:1777
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:179
msgid "End Radius"
msgstr "Diwedd radiws"
-#: ../bin/ccornu.c:1067
+#: ../bin/ccornu.c:1142
msgid "Select Point, or Add Point"
msgstr "Dewis pwynt neu ychwanegu pwynt"
-#: ../bin/ccornu.c:1242
+#: ../bin/ccornu.c:1330
msgid "Not close enough to track or point, reselect"
msgstr "Ddim yn ddigon agos i dracio na phwyntio, ail-ddewis"
-#: ../bin/ccornu.c:1248
+#: ../bin/ccornu.c:1336
msgid "Drag out end of Cornu"
msgstr "Llusgwch ddiwedd Cornu"
-#: ../bin/ccornu.c:1250
+#: ../bin/ccornu.c:1338
msgid "Drag along end of track"
msgstr "Llusgwch ar hyd diwedd y trac"
-#: ../bin/ccornu.c:1252
+#: ../bin/ccornu.c:1340
msgid "Drag to move"
msgstr "Llusgwch i symud"
-#: ../bin/ccornu.c:1255
+#: ../bin/ccornu.c:1344
msgid "Drag point to new location, Delete to remove"
msgstr "Llusgwch i leoliad newydd, Dileu i gael gwared"
-#: ../bin/ccornu.c:1259
+#: ../bin/ccornu.c:1348
msgid "Drag to change end radius"
msgstr "Llusgwch i newid radiws diwedd"
-#: ../bin/ccornu.c:1262
+#: ../bin/ccornu.c:1351
msgid "Drag to change end angle"
msgstr "Llusgwch i newid ongl ddiwedd"
-#: ../bin/ccornu.c:1277
+#: ../bin/ccornu.c:1368
msgid "Pick any circle to adjust or add - Enter to accept, Esc to cancel"
msgstr ""
"Dewiswch unrhyw gylch i'w addasu neu ei ychwanegu - Rhowch i dderbyn, Esc i "
"ganslo"
-#: ../bin/ccornu.c:1289
+#: ../bin/ccornu.c:1380
msgid "Track can't be split"
msgstr "Ni ellir rhannu trac"
-#: ../bin/ccornu.c:1351
+#: ../bin/ccornu.c:1450
msgid "Too close to other end of selected Track"
msgstr "Yn rhy agos at ben arall y trac a ddewiswyd"
-#: ../bin/ccornu.c:1359
+#: ../bin/ccornu.c:1460
msgid "Can't move end inside a turnout"
msgstr "Can not move end within railway point"
-#: ../bin/ccornu.c:1500
+#: ../bin/ccornu.c:1609
msgid "Can't extend connected Bezier or Cornu"
msgstr "Ni all ymestyn Bezier neu Cornu cysylltiedig"
-#: ../bin/ccornu.c:1572
+#: ../bin/ccornu.c:1690
#, c-format
msgid ""
"Cornu : Min Radius=%s MaxRateofCurveChange/Scale=%s Length=%s Winding Arc=%s"
@@ -537,1033 +488,1086 @@ msgstr ""
"Cornu : Radiws lleiaf=%s CyfraddNewidUchafCrymedd/Graddfa=%s Hyd=%s Arc "
"Troellog=%s"
-#: ../bin/ccornu.c:1594 ../bin/ccornu.c:2267
+#: ../bin/ccornu.c:1714 ../bin/ccornu.c:2423
msgid "Helix Already Connected"
msgstr "Helix eisoes wedi'i gysylltu"
-#: ../bin/ccornu.c:1608
+#: ../bin/ccornu.c:1730
msgid "No Valid end point on that track"
msgstr "Dim pwynt gorffen dilys ar y trac hwnnw"
-#: ../bin/ccornu.c:1613
+#: ../bin/ccornu.c:1735
msgid "Track is different scale"
msgstr "Mae trac ar raddfa wahanol"
-#: ../bin/ccornu.c:1666
+#: ../bin/ccornu.c:1794
msgid ""
-"Pick on point to adjust it along track - Delete to remove, Enter to confirm,"
-" ESC to abort"
+"Pick on point to adjust it along track - Delete to remove, Enter to confirm, "
+"ESC to abort"
msgstr ""
"Dewis pwynt i'w addasu ar hyd y trac. Dileu i dynnu. Rhowch i mewn i "
"gadarnhau. ESC i erthylu"
-#: ../bin/ccornu.c:1696
+#: ../bin/ccornu.c:1825
msgid "Cornu has too complex shape - adjust end pts"
msgstr "Mae gan Cornu siâp rhy gymhleth - newid pwyntiau gorffen"
-#: ../bin/ccornu.c:1707
+#: ../bin/ccornu.c:1838
#, c-format
msgid "Cornu point %d too close to other end of connect track - reposition it"
msgstr "Pwynt Cornu%d yn rhy agos at ben arall y trac cysylltu - ei ail-leoli"
-#: ../bin/ccornu.c:1712
+#: ../bin/ccornu.c:1844
msgid "Create Cornu"
msgstr "Creu Cornu"
-#: ../bin/ccornu.c:1901
+#: ../bin/ccornu.c:2037
msgid "Now Select or Add (+Shift) a Point"
msgstr "Nawr Dewiswch neu Ychwanegu (+ Shift) Pwynt"
-#: ../bin/ccornu.c:1960
+#: ../bin/ccornu.c:2100
#, c-format
msgid "Cornu end %d too close to other end of connect track - reposition it"
msgstr "Pen Cornu %d yn rhy agos at ben arall y trac cysylltu - ei ail-leoli"
-#: ../bin/ccornu.c:1965 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:175
+#: ../bin/ccornu.c:2105 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:177
msgid "Modify Cornu"
msgstr "Addasu Cornu"
-#: ../bin/ccornu.c:1980
+#: ../bin/ccornu.c:2122
#, c-format
msgid "Cornu Extension Create Failed for end %d"
msgstr "Estyniad Cornu creu methwyd ar gyfer diwedd %d"
-#: ../bin/ccornu.c:2072
+#: ../bin/ccornu.c:2219
#, c-format
msgid "Connected Track End Adjust for end %d failed"
msgstr "Methodd addasiad trac cysylltiedig ar gyfer diwedd %d "
-#: ../bin/ccornu.c:2083
+#: ../bin/ccornu.c:2230
msgid "Modify Cornu Cancelled"
msgstr "Addasu Cornu wedi'i ganslo"
-#: ../bin/ccornu.c:2243
+#: ../bin/ccornu.c:2396
msgid "Left click - Start Cornu track"
msgstr "Cliciwch ar y chwith - dechreuwch Trac Cornu"
-#: ../bin/ccornu.c:2245
+#: ../bin/ccornu.c:2398
msgid "Left click - Place Flextrack"
msgstr "Cliciwch ar y chwith - rhowch drac hyblyg"
-#: ../bin/ccornu.c:2248
+#: ../bin/ccornu.c:2401
msgid "Left click - join with Cornu track"
msgstr "Cliciwch ar y chwith - ymunwch â thrac Cornu"
-#: ../bin/ccornu.c:2250
+#: ../bin/ccornu.c:2404
msgid "Left click - join with Cornu track, Shift Left click - move to join"
msgstr ""
"Cliciwch ar y chwith - ymunwch â thrac Cornu, Shift Chwith cliciwch - "
"symudwch i ymuno"
-#: ../bin/ccornu.c:2281
+#: ../bin/ccornu.c:2439
msgid "No valid open endpoint on that track"
msgstr "Dim pwynt gorffen agored dilys ar y trac hwnnw"
-#: ../bin/ccornu.c:2309 ../bin/ccornu.c:2321
+#: ../bin/ccornu.c:2469 ../bin/ccornu.c:2482
msgid "Drag arm in the direction of track"
msgstr "Llusgwch fraich i gyfeiriad y trac"
-#: ../bin/ccornu.c:2325
+#: ../bin/ccornu.c:2487
msgid "No Unconnected Track End there"
msgstr "Nid oes pen trac digyswllt yno"
-#: ../bin/ccornu.c:2336 ../bin/ccornu.c:2360
+#: ../bin/ccornu.c:2498 ../bin/ccornu.c:2523
msgid "No Valid Track End there"
msgstr "Dim diwedd trac dilys yno"
-#: ../bin/ccornu.c:2348
+#: ../bin/ccornu.c:2511
msgid "Locked - Move 1st end point of Cornu track along track 1"
msgstr "Wedi'i gloi. Symud pwynt diwedd 1af trac Cornu ar hyd trac 1"
-#: ../bin/ccornu.c:2372
+#: ../bin/ccornu.c:2535
msgid "Locked - Move 2nd end point of Cornu track along track 2"
msgstr "Wedi'i gloi. Symud 2il bwynt diwedd trac Cornu ar hyd trac 2"
-#: ../bin/ccornu.c:2450
+#: ../bin/ccornu.c:2623
msgid "Track can't be split - so locked to endpoint"
msgstr "Ni ellir rhannu'r trac - felly wedi'i gloi i'r pwynt olaf"
-#: ../bin/ccornu.c:2455
+#: ../bin/ccornu.c:2628
msgid "Point not on track 1"
msgstr "Pwyntiwch ddim ar drac 1"
-#: ../bin/ccornu.c:2493
+#: ../bin/ccornu.c:2670
msgid "Pick other end of Cornu"
msgstr "Dewiswch ben arall Cornu"
-#: ../bin/ccornu.c:2495
+#: ../bin/ccornu.c:2673
msgid ""
"Select flextrack ends or anchors and drag, Enter to approve, Esc to Cancel"
msgstr ""
"Dewiswch draciau neu angorau trac hyblyg a'u llusgo. Rhowch i mewn i "
"gymeradwyo. Esc i Ganslo"
-#: ../bin/ccornu.c:2499
+#: ../bin/ccornu.c:2680
msgid "Put other end of Cornu on a track with an unconnected end point"
msgstr "Rhowch ben arall Cornu ar drac gyda man gorffen digyswllt"
-#: ../bin/ccornu.c:2741 ../bin/ccornu.c:2955
+#: ../bin/ccornu.c:2941 ../bin/ccornu.c:3166
msgid "Not on a Track"
msgstr "Ddim ar drac"
-#: ../bin/ccornu.c:2749
+#: ../bin/ccornu.c:2949
msgid "Select a Track To Convert"
msgstr "Dewiswch drac i'w drosi"
-#: ../bin/ccornu.c:2753
+#: ../bin/ccornu.c:2952
msgid "Convert all Selected Tracks to Cornu Tracks?"
msgstr "Trosi pob trac a ddewiswyd yn draciau Cornu?"
-#: ../bin/ccornu.c:2758
+#: ../bin/ccornu.c:2958
msgid "Convert Cornu"
msgstr "Trosi Cornu"
-#: ../bin/ccornu.c:2910
+#: ../bin/ccornu.c:3118
#, c-format
msgid "Tracks Counts: %d converted %d unconvertible %d created %d deleted"
msgstr ""
"Traciau'n Cyfrif: %d wedi'i drosi %d yn anghildroadwy%d wedi'i greu %d "
"wedi'i ddileu"
-#: ../bin/ccornu.c:2910 ../bin/ccornu.c:3027
+#: ../bin/ccornu.c:3118 ../bin/ccornu.c:3241 ../bin/cturnout.c:352
+#: ../bin/paramfilelist.c:113
msgid "OK"
msgstr "Iawn"
-#: ../bin/ccornu.c:2962
+#: ../bin/ccornu.c:3173
msgid "Select a Cornu or Bezier Track To Convert to Fixed"
msgstr "Dewiswch drac Cornu neu Bezier i'w drawsnewid yn sefydlog"
-#: ../bin/ccornu.c:2966
+#: ../bin/ccornu.c:3176
msgid "Convert all Selected Tracks to Fixed Tracks?"
msgstr "Trosi'r holl draciau a ddewiswyd yn draciau sefydlog?"
-#: ../bin/ccornu.c:2976
+#: ../bin/ccornu.c:3187
msgid "Convert Bezier and Cornu"
msgstr "Trosi Bezier a Cornu"
-#: ../bin/ccornu.c:3027
+#: ../bin/ccornu.c:3240
#, c-format
msgid "Tracks Counts: %d converted %d unconvertible %d deleted"
-msgstr ""
-"Traciau'n Cyfrif: %d wedi'i drosi %d yn anghildroadwy %d wedi'i ddileu"
+msgstr "Traciau'n Cyfrif: %d wedi'i drosi %d yn anghildroadwy %d wedi'i ddileu"
-#: ../bin/ccornu.c:3055
+#: ../bin/ccornu.c:3269
msgid "Convert"
msgstr "Trosi"
-#: ../bin/ccornu.c:3056
+#: ../bin/ccornu.c:3270
msgid "Convert To Cornu"
msgstr "Trosi i Cornu"
-#: ../bin/ccornu.c:3057
+#: ../bin/ccornu.c:3273
msgid "Convert From Cornu"
msgstr "Trosi o Cornu"
-#: ../bin/ccurve.c:163
+#: ../bin/ccurve.c:165
msgid "Drag from endpoint in direction of curve - lock to track open endpoint"
msgstr ""
"Llusgwch o'r man terfyn i gyfeiriad y gromlin - cloi i olrhain pwynt terfyn "
"agored."
-#: ../bin/ccurve.c:165
+#: ../bin/ccurve.c:167
msgid "Drag from endpoint in direction of curve"
msgstr "Llusgwch o'r man terfyn i gyfeiriad y gromlin"
-#: ../bin/ccurve.c:169
+#: ../bin/ccurve.c:172
msgid "Drag from endpoint to center - lock to track open endpoint"
msgstr ""
"Llusgwch o'r pwynt terfyn i'r canol - cloi i olrhain pwynt terfyn agored"
-#: ../bin/ccurve.c:171
+#: ../bin/ccurve.c:174
msgid "Drag from endpoint to center"
msgstr "Llusgwch o'r pwynt terfyn i'r canol"
-#: ../bin/ccurve.c:174
+#: ../bin/ccurve.c:178
msgid "Drag from center to endpoint"
msgstr "Llusgwch o'r canol i'r diweddbwynt"
-#: ../bin/ccurve.c:177
+#: ../bin/ccurve.c:181
msgid "Drag from one to other end of chord"
msgstr "Llusgwch o un pen i'r llall o gord"
-#: ../bin/ccurve.c:236
+#: ../bin/ccurve.c:243
msgid "End locked: Drag out curve start"
msgstr "Diwedd wedi'i gloi. Llusgwch gychwyn cromlin"
-#: ../bin/ccurve.c:237 ../bin/ccurve.c:247 ../bin/ccurve.c:265
+#: ../bin/ccurve.c:244 ../bin/ccurve.c:254 ../bin/ccurve.c:272
msgid "End Position locked: Drag out curve start with Shift"
msgstr "Safle diwedd wedi'i gloi: Llusgwch y gromlin gan ddechrau gyda Shift"
-#: ../bin/ccurve.c:238
+#: ../bin/ccurve.c:245
msgid "Drag along curve start"
msgstr "Llusgwch ar hyd cychwyn cromlin"
-#: ../bin/ccurve.c:246
+#: ../bin/ccurve.c:253
msgid "End locked: Drag out curve center"
msgstr "Diwedd wedi'i gloi: Llusgwch y ganolfan gromlin"
-#: ../bin/ccurve.c:248
+#: ../bin/ccurve.c:255
msgid "Drag out curve center"
msgstr "Llusgwch y ganolfan gromlin"
-#: ../bin/ccurve.c:255
+#: ../bin/ccurve.c:262
msgid "Drag out from center to endpoint"
msgstr "Llusgwch allan o'r canol i'r diweddbwynt"
-#: ../bin/ccurve.c:264
+#: ../bin/ccurve.c:271
msgid "End locked: Drag to other end of chord"
msgstr "Diwedd wedi'i gloi: Llusgwch i ben arall y cord"
-#: ../bin/ccurve.c:267
+#: ../bin/ccurve.c:274
msgid "Drag to other end of chord"
msgstr "Llusgwch i ben arall y cord"
-#: ../bin/ccurve.c:322
+#: ../bin/ccurve.c:332
#, c-format
msgid "Start Locked: Drag out curve start - Angle=%0.3f"
msgstr "Cychwyn dan glo: Llusgwch gychwyn cromlin - Ongl=%0.3f"
-#: ../bin/ccurve.c:323
+#: ../bin/ccurve.c:333
#, c-format
msgid "Drag out curve start - Angle=%0.3f"
msgstr "Llusgwch gychwyn cromlin - Ongl=%0.3f"
-#: ../bin/ccurve.c:329
+#: ../bin/ccurve.c:340
#, c-format
msgid "Tangent locked: Drag out center - Radius=%s Angle=%0.3f"
msgstr "Tangent wedi'i gloi: Canol llusgo allan - Radiws=%s Ongl=%0.3f"
-#: ../bin/ccurve.c:330
+#: ../bin/ccurve.c:341
#, c-format
msgid "Drag out center - Radius=%s Angle=%0.3f"
msgstr "Canol llusgo allan - Radiws=%s Ongl=%0.3f"
-#: ../bin/ccurve.c:336
+#: ../bin/ccurve.c:348
#, c-format
msgid "Drag to Edge: Radius=%s Angle=%0.3f"
msgstr "Llusgwch i'r Ymyl: Radiws=%s Ongl=%0.3f"
-#: ../bin/ccurve.c:342
+#: ../bin/ccurve.c:356
#, c-format
msgid "Start locked: Drag out chord length=%s angle=%0.3f"
msgstr "Dechreuwch dan glo: Llusgwch hyd cord=%s ongl=%0.3f"
-#: ../bin/ccurve.c:343
+#: ../bin/ccurve.c:357
#, c-format
msgid "Drag out chord length=%s angle=%0.3f"
msgstr "Llusgwch hyd cord=%s ongl=%0.3f"
-#: ../bin/ccurve.c:414 ../bin/ccurve.c:582 ../bin/cjoin.c:669
-#: ../bin/cjoin.c:924
+#: ../bin/ccurve.c:433 ../bin/ccurve.c:615 ../bin/cjoin.c:714
+#: ../bin/cjoin.c:1017
msgid "Desired Radius"
msgstr "Radiws Dymunol"
-#: ../bin/ccurve.c:512 ../bin/cjoin.c:208 ../bin/cmodify.c:600
-#: ../bin/cturntbl.c:625
+#: ../bin/ccurve.c:534 ../bin/cjoin.c:216 ../bin/cmodify.c:639
+#: ../bin/cturntbl.c:687
#, c-format
msgid "Straight Track: Length=%s Angle=%0.3f"
msgstr "Trac Syth: Hyd=%s Ongle=%0.3f"
-#: ../bin/ccurve.c:519 ../bin/cmodify.c:605 ../bin/drawgeom.c:663
-#: ../wlib/gtklib/ixhelp.c:235
+#: ../bin/ccurve.c:542 ../bin/cmodify.c:644 ../bin/drawgeom.c:718
msgid "Back"
msgstr "Yn ôl"
-#: ../bin/ccurve.c:539
+#: ../bin/ccurve.c:563
#, c-format
msgid "Curved Track: Radius=%s Angle=%0.3f Length=%s"
msgstr "Trac Crwm: Radiws=%s Ongl=%0.3f Hyd=%s"
-#: ../bin/ccurve.c:608 ../bin/cstraigh.c:171
+#: ../bin/ccurve.c:642 ../bin/cstraigh.c:173
msgid "Create Straight Track"
msgstr "Creu trac syth"
-#: ../bin/ccurve.c:621
+#: ../bin/ccurve.c:656
msgid "Create Curved Track"
msgstr "Creu trac crwm"
-#: ../bin/ccurve.c:691
+#: ../bin/ccurve.c:726
msgid "Elevation Difference"
msgstr "Gwahaniaeth drychiad"
-#: ../bin/ccurve.c:692 ../bin/cdraw.c:519 ../bin/cdraw.c:1514
-#: ../bin/cdraw.c:1660 ../bin/cdraw.c:2712 ../bin/cdraw.c:2907
-#: ../bin/cdraw.c:2921 ../bin/compound.c:686 ../bin/compound.c:691
-#: ../bin/compound.c:696 ../bin/compound.c:701 ../bin/ctodesgn.c:179
-#: ../bin/ctodesgn.c:180 ../bin/ctodesgn.c:181 ../bin/ctodesgn.c:182
-#: ../bin/ctodesgn.c:298 ../bin/ctodesgn.c:301 ../bin/ctodesgn.c:303
-#: ../bin/ctodesgn.c:364 ../bin/ctodesgn.c:365 ../bin/ctodesgn.c:370
-#: ../bin/ctodesgn.c:434 ../bin/ctodesgn.c:438 ../bin/ctodesgn.c:439
-#: ../bin/ctodesgn.c:445 ../bin/ctodesgn.c:614 ../bin/tbezier.c:251
-#: ../bin/tbezier.c:258 ../bin/tcornu.c:309 ../bin/tcurve.c:382
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:185
+#: ../bin/ccurve.c:727 ../bin/cdraw.c:559 ../bin/cdraw.c:1585
+#: ../bin/cdraw.c:1732 ../bin/cdraw.c:2850 ../bin/cdraw.c:3050
+#: ../bin/cdraw.c:3064 ../bin/compound.c:723 ../bin/compound.c:728
+#: ../bin/compound.c:733 ../bin/compound.c:738 ../bin/ctodesgn.c:187
+#: ../bin/ctodesgn.c:188 ../bin/ctodesgn.c:189 ../bin/ctodesgn.c:190
+#: ../bin/ctodesgn.c:317 ../bin/ctodesgn.c:320 ../bin/ctodesgn.c:322
+#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:397 ../bin/ctodesgn.c:402
+#: ../bin/ctodesgn.c:478 ../bin/ctodesgn.c:482 ../bin/ctodesgn.c:483
+#: ../bin/ctodesgn.c:489 ../bin/ctodesgn.c:696 ../bin/tbezier.c:285
+#: ../bin/tbezier.c:292 ../bin/tcornu.c:326 ../bin/tcurve.c:401
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:187
msgid "Radius"
msgstr "Radiws"
-#: ../bin/ccurve.c:693 ../bin/tcurve.c:383
+#: ../bin/ccurve.c:728 ../bin/tcurve.c:402
msgid "Turns"
msgstr "Troi"
-#: ../bin/ccurve.c:694
+#: ../bin/ccurve.c:729
msgid "Angular Separation"
msgstr "Gwahaniad Ongl"
-#: ../bin/ccurve.c:695 ../bin/celev.c:43 ../bin/compound.c:703
-#: ../bin/tbezier.c:263 ../bin/tcornu.c:316 ../bin/tcurve.c:389
-#: ../bin/tease.c:519 ../bin/tstraigh.c:92
+#: ../bin/ccurve.c:730 ../bin/celev.c:43 ../bin/compound.c:740
+#: ../bin/tbezier.c:297 ../bin/tcornu.c:333 ../bin/tcurve.c:408
+#: ../bin/tease.c:534 ../bin/tstraigh.c:93
msgid "Grade"
msgstr "Llethr"
-#: ../bin/ccurve.c:696
+#: ../bin/ccurve.c:731
msgid "Vertical Separation"
msgstr "Atafaeliad fertigol"
-#: ../bin/ccurve.c:698
+#: ../bin/ccurve.c:733
msgid "Total Length"
msgstr "Cyfanswm Hyd"
-#: ../bin/ccurve.c:774
+#: ../bin/ccurve.c:813
#, c-format
msgid "Total Length %s"
msgstr "Cyfanswm Hyd %s"
-#: ../bin/ccurve.c:812 ../bin/ccurve.c:1016 ../bin/tcurve.c:828
+#: ../bin/ccurve.c:852 ../bin/ccurve.c:1079 ../bin/tcurve.c:1008
msgid "Helix"
msgstr "Helix"
-#: ../bin/ccurve.c:826
+#: ../bin/ccurve.c:868
msgid "Circle Radius"
msgstr "Radiws Cylch"
-#: ../bin/ccurve.c:831
+#: ../bin/ccurve.c:873
msgid "Click on Circle Edge"
msgstr "Cliciwch ar ymyl cylch"
-#: ../bin/ccurve.c:835
+#: ../bin/ccurve.c:877
msgid "Click on Circle Center"
msgstr "Cliciwch ar y ganolfan gylch"
-#: ../bin/ccurve.c:867
+#: ../bin/ccurve.c:907
msgid "Drag to Center"
msgstr "Llusgwch i'r canol"
-#: ../bin/ccurve.c:871
+#: ../bin/ccurve.c:911
msgid "Drag to Edge"
msgstr "Llusgwch i'r ymyl"
-#: ../bin/ccurve.c:891 ../bin/ccurve.c:895
+#: ../bin/ccurve.c:932 ../bin/ccurve.c:936
#, c-format
msgid "Radius=%s"
msgstr "Radiws=%s"
-#: ../bin/ccurve.c:916
+#: ../bin/ccurve.c:957
msgid "Create Helix Track"
msgstr "Creu trac helix"
-#: ../bin/ccurve.c:931
+#: ../bin/ccurve.c:972
msgid "Create Circle Track"
msgstr "Creu trac cylch"
-#: ../bin/ccurve.c:986
+#: ../bin/ccurve.c:1031
msgid "Curve Track"
msgstr "Trac cromlin"
-#: ../bin/ccurve.c:986
+#: ../bin/ccurve.c:1031
msgid "Curve Tracks"
msgstr "Traciau cromlin"
-#: ../bin/ccurve.c:987
+#: ../bin/ccurve.c:1032
msgid "Curve from End-Pt"
msgstr "Cromlin o'r pwynt olaf"
-#: ../bin/ccurve.c:988
+#: ../bin/ccurve.c:1035
msgid "Curve from Tangent"
msgstr "Cromlin o tangiad"
-#: ../bin/ccurve.c:989
+#: ../bin/ccurve.c:1038
msgid "Curve from Center"
msgstr "Cromlin o'r canol"
-#: ../bin/ccurve.c:990
+#: ../bin/ccurve.c:1041
msgid "Curve from Chord"
msgstr "Cromlin o'r cord"
-#: ../bin/ccurve.c:991 ../bin/cdraw.c:3053
+#: ../bin/ccurve.c:1044 ../bin/cdraw.c:3199
msgid "Bezier Curve"
msgstr "Cromlin Bezier"
-#: ../bin/ccurve.c:992
+#: ../bin/ccurve.c:1047
msgid "Cornu Curve"
msgstr "Cromlin Cornu"
-#: ../bin/ccurve.c:995 ../bin/tcurve.c:655
+#: ../bin/ccurve.c:1052 ../bin/tcurve.c:684
msgid "Circle Track"
msgstr "Trac cylch"
-#: ../bin/ccurve.c:995
+#: ../bin/ccurve.c:1052
msgid "Circle Tracks"
msgstr "Traciau cylch"
-#: ../bin/ccurve.c:996
+#: ../bin/ccurve.c:1054
msgid "Fixed Radius Circle"
msgstr "Cylch Radiws sefydlog"
-#: ../bin/ccurve.c:997
+#: ../bin/ccurve.c:1056
msgid "Circle from Tangent"
msgstr "Cylch o tangiad"
-#: ../bin/ccurve.c:998
+#: ../bin/ccurve.c:1059
msgid "Circle from Center"
msgstr "Cylch o canol"
+#: ../bin/ccontrol.c:169 ../bin/csensor.c:161 ../bin/csignal.c:237
+#: ../bin/ctrain.c:180
+msgid "Position"
+msgstr "Swydd"
+
+#: ../bin/ccontrol.c:170 ../bin/ccontrol.c:431
+msgid "On Script"
+msgstr "Ar sgript"
+
+#: ../bin/ccontrol.c:171 ../bin/ccontrol.c:433
+msgid "Off Script"
+msgstr "Oddi ar y sgript"
+
+#: ../bin/ccontrol.c:238
+msgid "Change Control"
+msgstr "Rheoli Newid"
+
+#: ../bin/ccontrol.c:281 ../bin/csensor.c:251
+#, c-format
+msgid "(%d [%s]): Layer=%u, at %0.3f,%0.3f"
+msgstr "(%d [%s]): Hean=%u, yn %0.3f,%0.3f"
+
+#: ../bin/ccontrol.c:294 ../bin/ccontrol.c:644
+msgid "Control"
+msgstr "Rheoli"
+
+#: ../bin/ccontrol.c:427 ../bin/csensor.c:391 ../bin/csignal.c:512
+msgid "Origin X"
+msgstr "Tarddiad X"
+
+#: ../bin/ccontrol.c:429 ../bin/csensor.c:393 ../bin/csignal.c:514
+msgid "Origin Y"
+msgstr "Tarddiad Y"
+
+#: ../bin/ccontrol.c:445
+msgid "Create Control"
+msgstr "Creu Rheolaeth"
+
+#: ../bin/ccontrol.c:448
+msgid "Modify Control"
+msgstr "Addasu Rheolaeth"
+
+#: ../bin/ccontrol.c:488
+msgid "Edit control"
+msgstr "Golygu Rheolaeth"
+
+#: ../bin/ccontrol.c:529
+msgid "Place control"
+msgstr "Rhowch Reolaeth"
+
#: ../bin/cdraw.c:125
msgid "Font Size must be > 0"
msgstr "Rhaid i faint y ffont fod > 0"
-#: ../bin/cdraw.c:513
+#: ../bin/cdraw.c:553
msgid "First Point: X,Y"
msgstr "Pwynt cyntaf: X,Y"
-#: ../bin/cdraw.c:514 ../bin/tcurve.c:381
+#: ../bin/cdraw.c:554 ../bin/tcurve.c:400
msgid "Center: X,Y"
msgstr "Canol: X,Y"
-#: ../bin/cdraw.c:515 ../bin/tcurve.c:386
+#: ../bin/cdraw.c:555 ../bin/tcurve.c:405
msgid "Angular Length"
msgstr "Hyd Ongl"
-#: ../bin/cdraw.c:516
+#: ../bin/cdraw.c:556
msgid "Line Angle"
msgstr "Ongl Llinell"
-#: ../bin/cdraw.c:517 ../bin/tcurve.c:387
+#: ../bin/cdraw.c:557 ../bin/tcurve.c:406
msgid "CCW Angle"
msgstr "CCW Ongle"
-#: ../bin/cdraw.c:518 ../bin/tcurve.c:388
+#: ../bin/cdraw.c:558 ../bin/tcurve.c:407
msgid "CW Angle"
msgstr "CW Ongle"
-#: ../bin/cdraw.c:521 ../bin/cdraw.c:1511 ../bin/cdraw.c:1633
-#: ../bin/cprint.c:129 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:183
+#: ../bin/cdraw.c:561 ../bin/cdraw.c:1582 ../bin/cdraw.c:1705
+#: ../bin/cprint.c:131 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:185
msgid "Height"
msgstr "Uchder"
-#: ../bin/cdraw.c:522 ../bin/cdraw.c:1509 ../bin/cdraw.c:1632
-#: ../bin/cdraw.c:2707 ../bin/cdraw.c:2965 ../bin/ctrain.c:187
-#: ../bin/dcar.c:2225 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:190
+#: ../bin/cdraw.c:562 ../bin/cdraw.c:1580 ../bin/cdraw.c:1704
+#: ../bin/cdraw.c:2845 ../bin/cdraw.c:3110 ../bin/ctrain.c:183
+#: ../bin/dcar.c:2344 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:192
msgid "Width"
msgstr "Lled"
-#: ../bin/cdraw.c:523 ../bin/compound.c:706 ../bin/tstraigh.c:93
+#: ../bin/cdraw.c:563 ../bin/compound.c:743 ../bin/tstraigh.c:94
msgid "Pivot"
msgstr "Phwysbwynt"
-#: ../bin/cdraw.c:524
+#: ../bin/cdraw.c:564
msgid "Point Count"
msgstr "Cyfrif Pwynt"
-#: ../bin/cdraw.c:525 ../bin/cdraw.c:2685 ../bin/ctodesgn.c:201
-#: ../bin/tbezier.c:265
+#: ../bin/cdraw.c:565 ../bin/cdraw.c:2823 ../bin/ctodesgn.c:209
+#: ../bin/tbezier.c:299
msgid "Line Width"
msgstr "Lled y llinell"
-#: ../bin/cdraw.c:526 ../bin/cdraw.c:2714 ../bin/tbezier.c:264
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:376
+#: ../bin/cdraw.c:566 ../bin/cdraw.c:2852 ../bin/tbezier.c:298
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:379
msgid "Line Type"
msgstr "Math o linell"
-#: ../bin/cdraw.c:527 ../bin/cdraw.c:2687 ../bin/cdraw.c:2689
-#: ../bin/cdraw.c:2788 ../bin/cdraw.c:2821 ../bin/cmisc.c:123
-#: ../bin/ctext.c:66 ../bin/ctext.c:146 ../bin/ctodesgn.c:202
-#: ../bin/dcar.c:2221 ../bin/dlayer.c:580 ../bin/doption.c:563
+#: ../bin/cdraw.c:567 ../bin/cdraw.c:2825 ../bin/cdraw.c:2827
+#: ../bin/cdraw.c:2927 ../bin/cdraw.c:2960 ../bin/cmisc.c:121 ../bin/ctext.c:67
+#: ../bin/ctext.c:145 ../bin/ctodesgn.c:210 ../bin/dcar.c:2340
+#: ../bin/dlayer.c:545 ../bin/doption.c:591
msgid "Color"
msgstr "Lliw"
-#: ../bin/cdraw.c:528
+#: ../bin/cdraw.c:568
msgid "Filled"
msgstr "Wedi'i lenwi"
-#: ../bin/cdraw.c:529
+#: ../bin/cdraw.c:569
msgid "Open End"
msgstr "Diwedd Agored"
-#: ../bin/cdraw.c:530 ../bin/cmisc.c:146 ../bin/cmisc.c:147 ../bin/cmisc.c:148
-#: ../bin/cmisc.c:149 ../bin/ctext.c:68 ../bin/ctext.c:147
+#: ../bin/cdraw.c:570 ../bin/cmisc.c:144 ../bin/cmisc.c:145 ../bin/cmisc.c:146
+#: ../bin/cmisc.c:147 ../bin/ctext.c:69 ../bin/ctext.c:146
msgid "Boxed"
msgstr "Bocsio"
-#: ../bin/cdraw.c:531 ../bin/cdraw.c:1120 ../bin/cdraw.c:2721
+#: ../bin/cdraw.c:571 ../bin/cdraw.c:1177 ../bin/cdraw.c:2859
msgid "Lumber"
msgstr "Pren"
-#: ../bin/cdraw.c:532
+#: ../bin/cdraw.c:572
msgid "Orientation"
msgstr "Cyfeiriadedd"
-#: ../bin/cdraw.c:533 ../bin/cdraw.c:2703
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:638
+#: ../bin/cdraw.c:573 ../bin/cdraw.c:2841
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:679
msgid "Size"
msgstr "Maint"
-#: ../bin/cdraw.c:534
+#: ../bin/cdraw.c:574
msgid "Text Origin: X,Y"
msgstr "Tarddiad Testun: X,Y"
-#: ../bin/cdraw.c:535
+#: ../bin/cdraw.c:575
msgid "Text Angle"
msgstr "Ongl y Testun"
-#: ../bin/cdraw.c:536 ../bin/ctext.c:64 ../bin/ctext.c:145
+#: ../bin/cdraw.c:576 ../bin/ctext.c:65 ../bin/ctext.c:144
msgid "Font Size"
msgstr "Maint y Ffont"
-#: ../bin/cdraw.c:537 ../bin/cdraw.c:1267 ../bin/ctext.c:268
+#: ../bin/cdraw.c:577 ../bin/cdraw.c:1324 ../bin/ctext.c:273
msgid "Text"
msgstr "Testun"
-#: ../bin/cdraw.c:538
+#: ../bin/cdraw.c:578
msgid "Lock To Origin"
msgstr "Cloi i Darddiad"
-#: ../bin/cdraw.c:539
+#: ../bin/cdraw.c:579
msgid "Rot Origin: X,Y"
msgstr "Tarddiad cylchdro: X,Y"
-#: ../bin/cdraw.c:540
+#: ../bin/cdraw.c:580
msgid "Rotate By"
msgstr "Cylchdroi Erbyn"
-#: ../bin/cdraw.c:541 ../bin/compound.c:712 ../bin/cturntbl.c:250
-#: ../bin/doption.c:99 ../bin/doption.c:100 ../bin/tbezier.c:267
-#: ../bin/tcornu.c:317 ../bin/tcurve.c:391 ../bin/tease.c:521
-#: ../bin/tstraigh.c:94 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:716
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:717
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:718
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:719
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:720
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:721
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:722
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:723
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:724
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:725
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:726
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:727
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:728
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:729
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:730
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:731
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:732
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:733
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:734
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:735
+#: ../bin/cdraw.c:581 ../bin/compound.c:749 ../bin/cturntbl.c:277
+#: ../bin/doption.c:101 ../bin/doption.c:102 ../bin/tbezier.c:301
+#: ../bin/tcornu.c:334 ../bin/tcurve.c:410 ../bin/tease.c:536
+#: ../bin/tstraigh.c:95 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:757
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:758
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:759
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:760
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:761
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:762
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:763
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:764
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:765
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:766
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:767
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:768
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:769
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:770
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:771
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:772
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:773
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:774
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:775
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:776
msgid "Layer"
msgstr "Haen"
-#: ../bin/cdraw.c:1105
+#: ../bin/cdraw.c:1057 ../bin/cmisc.c:233 ../bin/cmodify.c:379
+#: ../bin/compound.c:848 ../bin/ctrain.c:218
+msgid "Change Track"
+msgstr "Newid trac"
+
+#: ../bin/cdraw.c:1162
msgid "Straight Line"
msgstr "Llinell syth"
-#: ../bin/cdraw.c:1110 ../bin/cdraw.c:3045
+#: ../bin/cdraw.c:1167 ../bin/cdraw.c:3190
msgid "Dimension Line"
msgstr "Llinell Dimensiwn"
-#: ../bin/cdraw.c:1131 ../bin/cdraw.c:2722 ../bin/cdraw.c:3047
+#: ../bin/cdraw.c:1188 ../bin/cdraw.c:2860 ../bin/cdraw.c:3192
msgid "Table Edge"
msgstr "Ymyl bwrdd"
-#: ../bin/cdraw.c:1155 ../bin/cdraw.c:2727 ../bin/cdraw.c:2728
-#: ../bin/cdraw.c:2729
+#: ../bin/cdraw.c:1212 ../bin/cdraw.c:2865 ../bin/cdraw.c:2866
+#: ../bin/cdraw.c:2867
msgid "Circle"
msgstr "Cylch"
-#: ../bin/cdraw.c:1170
+#: ../bin/cdraw.c:1227
msgid "Curved Line"
msgstr "Llinell Grom"
-#: ../bin/cdraw.c:1192 ../bin/cdraw.c:2732 ../bin/cdraw.c:2733
-#: ../bin/cdraw.c:2734
+#: ../bin/cdraw.c:1249 ../bin/cdraw.c:2870 ../bin/cdraw.c:2871
+#: ../bin/cdraw.c:2872
msgid "Filled Circle"
msgstr "Cylch wedi'i Llenwi"
-#: ../bin/cdraw.c:1222
+#: ../bin/cdraw.c:1279
msgid "Filled Rectangle"
msgstr "Petryal wedi'i lenwi"
-#: ../bin/cdraw.c:1222
+#: ../bin/cdraw.c:1279
msgid "Rectangle"
msgstr "Petryal"
-#: ../bin/cdraw.c:1236 ../bin/cdraw.c:2738
+#: ../bin/cdraw.c:1293 ../bin/cdraw.c:2876
msgid "Polyline"
msgstr "Polyline"
-#: ../bin/cdraw.c:1243 ../bin/cdraw.c:2736 ../bin/cdraw.c:3065
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2874 ../bin/cdraw.c:3213
msgid "Filled Polygon"
msgstr "Polygon wedi'i Llenwi"
-#: ../bin/cdraw.c:1243 ../bin/cdraw.c:2731 ../bin/cdraw.c:3064
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2869 ../bin/cdraw.c:3212
msgid "Polygon"
msgstr "Polygon"
-#: ../bin/cdraw.c:1273
+#: ../bin/cdraw.c:1330
#, c-format
msgid "%s(%d) Layer=%d"
msgstr "%s(%d) Haen=%d"
-#: ../bin/cdraw.c:1293 ../bin/cdraw.c:2791 ../bin/compound.c:1097
-#: ../bin/doption.c:94 ../bin/tbezier.c:472
+#: ../bin/cdraw.c:1355 ../bin/cdraw.c:2930 ../bin/compound.c:1156
+#: ../bin/doption.c:96 ../bin/tbezier.c:519
msgid "Solid"
msgstr "Solet"
-#: ../bin/cdraw.c:1294 ../bin/cdraw.c:2793 ../bin/compound.c:1098
-#: ../bin/doption.c:91 ../bin/tbezier.c:473
+#: ../bin/cdraw.c:1356 ../bin/cdraw.c:2932 ../bin/compound.c:1157
+#: ../bin/doption.c:93 ../bin/tbezier.c:520
msgid "Dash"
msgstr "Dash"
-#: ../bin/cdraw.c:1295 ../bin/cdraw.c:2792 ../bin/compound.c:1099
-#: ../bin/tbezier.c:474
+#: ../bin/cdraw.c:1357 ../bin/cdraw.c:2931 ../bin/compound.c:1158
+#: ../bin/tbezier.c:521
msgid "Dot"
msgstr "Dot"
-#: ../bin/cdraw.c:1296 ../bin/compound.c:1100 ../bin/tbezier.c:475
+#: ../bin/cdraw.c:1358 ../bin/compound.c:1159 ../bin/tbezier.c:522
msgid "DashDot"
msgstr "DashDot"
-#: ../bin/cdraw.c:1297 ../bin/compound.c:1101 ../bin/tbezier.c:476
+#: ../bin/cdraw.c:1359 ../bin/compound.c:1161 ../bin/tbezier.c:523
msgid "DashDotDot"
msgstr "DashDotDot"
-#: ../bin/cdraw.c:1298 ../bin/compound.c:1102 ../bin/tbezier.c:477
+#: ../bin/cdraw.c:1360 ../bin/compound.c:1163 ../bin/tbezier.c:524
msgid "CenterDot"
msgstr "CenterDot"
-#: ../bin/cdraw.c:1299 ../bin/compound.c:1103 ../bin/tbezier.c:478
+#: ../bin/cdraw.c:1361 ../bin/compound.c:1165 ../bin/tbezier.c:525
msgid "PhantomDot"
msgstr "PhantomDot"
-#: ../bin/cdraw.c:1304 ../bin/cdraw.c:2839
+#: ../bin/cdraw.c:1366 ../bin/cdraw.c:2981
msgid "Tiny"
msgstr "Tiny"
-#: ../bin/cdraw.c:1305 ../bin/cdraw.c:2840
+#: ../bin/cdraw.c:1367 ../bin/cdraw.c:2982
msgid "Small"
msgstr "Bach"
-#: ../bin/cdraw.c:1306 ../bin/cdraw.c:2841
+#: ../bin/cdraw.c:1368 ../bin/cdraw.c:2983
msgid "Medium"
msgstr "Canolig"
-#: ../bin/cdraw.c:1307 ../bin/cdraw.c:2842
+#: ../bin/cdraw.c:1369 ../bin/cdraw.c:2984
msgid "Large"
msgstr "Mawr"
-#: ../bin/cdraw.c:1504 ../bin/cdraw.c:1649 ../bin/cdraw.c:2710
-#: ../bin/cdraw.c:2928 ../bin/cdraw.c:2948 ../bin/cdraw.c:2952
-#: ../bin/compound.c:684 ../bin/compound.c:689 ../bin/compound.c:694
-#: ../bin/compound.c:699 ../bin/compound.c:705 ../bin/cprint.c:154
-#: ../bin/csignal.c:237 ../bin/csignal.c:512 ../bin/ctodesgn.c:187
-#: ../bin/ctodesgn.c:188 ../bin/ctodesgn.c:189 ../bin/ctodesgn.c:191
-#: ../bin/ctodesgn.c:236 ../bin/ctodesgn.c:259 ../bin/ctodesgn.c:261
-#: ../bin/ctodesgn.c:296 ../bin/ctodesgn.c:299 ../bin/ctodesgn.c:325
-#: ../bin/ctodesgn.c:328 ../bin/ctodesgn.c:362 ../bin/ctodesgn.c:367
-#: ../bin/ctodesgn.c:391 ../bin/ctodesgn.c:395 ../bin/ctodesgn.c:432
-#: ../bin/ctodesgn.c:436 ../bin/ctodesgn.c:441 ../bin/ctodesgn.c:467
-#: ../bin/ctodesgn.c:487 ../bin/ctodesgn.c:508 ../bin/ctodesgn.c:615
-#: ../bin/ctrain.c:185 ../bin/tease.c:514
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:181
+#: ../bin/cdraw.c:1575 ../bin/cdraw.c:1721 ../bin/cdraw.c:2848
+#: ../bin/cdraw.c:3071 ../bin/cdraw.c:3092 ../bin/cdraw.c:3096
+#: ../bin/compound.c:721 ../bin/compound.c:726 ../bin/compound.c:731
+#: ../bin/compound.c:736 ../bin/compound.c:742 ../bin/cprint.c:156
+#: ../bin/csignal.c:238 ../bin/csignal.c:516 ../bin/ctodesgn.c:195
+#: ../bin/ctodesgn.c:196 ../bin/ctodesgn.c:197 ../bin/ctodesgn.c:199
+#: ../bin/ctodesgn.c:243 ../bin/ctodesgn.c:269 ../bin/ctodesgn.c:271
+#: ../bin/ctodesgn.c:315 ../bin/ctodesgn.c:318 ../bin/ctodesgn.c:349
+#: ../bin/ctodesgn.c:352 ../bin/ctodesgn.c:394 ../bin/ctodesgn.c:399
+#: ../bin/ctodesgn.c:427 ../bin/ctodesgn.c:431 ../bin/ctodesgn.c:476
+#: ../bin/ctodesgn.c:480 ../bin/ctodesgn.c:485 ../bin/ctodesgn.c:515
+#: ../bin/ctodesgn.c:539 ../bin/ctodesgn.c:564 ../bin/ctodesgn.c:697
+#: ../bin/ctrain.c:181 ../bin/tease.c:529
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:183
msgid "Angle"
msgstr "Ongl"
-#: ../bin/cdraw.c:1507 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:186
+#: ../bin/cdraw.c:1578 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:188
msgid "Relative Angle"
msgstr "Ongl gymharol"
-#: ../bin/cdraw.c:1516 ../bin/cdraw.c:1664 ../bin/cdraw.c:2922
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:182
+#: ../bin/cdraw.c:1587 ../bin/cdraw.c:1737 ../bin/cdraw.c:3065
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:184
msgid "Arc Angle"
msgstr "Ongl arc"
-#: ../bin/cdraw.c:1518
+#: ../bin/cdraw.c:1589
msgid "Rotate Angle"
msgstr "Cylchdroi ongl"
-#: ../bin/cdraw.c:1521
+#: ../bin/cdraw.c:1592
msgid "Rot Center X,Y"
msgstr "Canolfan Rot X,Y"
-#: ../bin/cdraw.c:1620
+#: ../bin/cdraw.c:1692
msgid "Seg Lth"
msgstr "Hyd Seg"
-#: ../bin/cdraw.c:1621
+#: ../bin/cdraw.c:1693
msgid "Rel Ang"
msgstr "Ongl Rel"
-#: ../bin/cdraw.c:2692 ../bin/cdraw.c:2694 ../bin/cdraw.c:2819
+#: ../bin/cdraw.c:2830 ../bin/cdraw.c:2832 ../bin/cdraw.c:2958
msgid "Lumber Type"
msgstr "Math o bren"
-#: ../bin/cdraw.c:2719
+#: ../bin/cdraw.c:2857
msgid "Straight"
msgstr "Syth"
-#: ../bin/cdraw.c:2720
+#: ../bin/cdraw.c:2858
msgid "Dimension"
msgstr "Dimension"
-#: ../bin/cdraw.c:2723 ../bin/cdraw.c:2724 ../bin/cdraw.c:2725
-#: ../bin/cdraw.c:2726
+#: ../bin/cdraw.c:2861 ../bin/cdraw.c:2862 ../bin/cdraw.c:2863
+#: ../bin/cdraw.c:2864
msgid "Curved"
msgstr "Grom"
-#: ../bin/cdraw.c:2730 ../bin/cdraw.c:3062
+#: ../bin/cdraw.c:2868 ../bin/cdraw.c:3210
msgid "Box"
msgstr "Blwch"
-#: ../bin/cdraw.c:2735 ../bin/cdraw.c:3063
+#: ../bin/cdraw.c:2873 ../bin/cdraw.c:3211
msgid "Filled Box"
msgstr "Blwch wedi'i Llenwi"
-#: ../bin/cdraw.c:2737 ../bin/tbezier.c:469
+#: ../bin/cdraw.c:2875 ../bin/tbezier.c:516
msgid "Bezier Line"
msgstr "Llinell Bezier"
-#: ../bin/cdraw.c:2786
+#: ../bin/cdraw.c:2925
#, c-format
msgid "%s Line Width"
msgstr "%s Lled Llinell"
-#: ../bin/cdraw.c:2789 ../bin/dcar.c:2194 ../bin/dcar.c:4373
-#: ../bin/dcar.c:4378
+#: ../bin/cdraw.c:2928 ../bin/dcar.c:2313 ../bin/dcar.c:4694 ../bin/dcar.c:4700
msgid "Type"
msgstr "Math"
-#: ../bin/cdraw.c:2794
+#: ../bin/cdraw.c:2933
msgid "Dash-Dot"
msgstr "Dash-Dot"
-#: ../bin/cdraw.c:2795
+#: ../bin/cdraw.c:2934
msgid "Dash-Dot-Dot"
msgstr "Dash-Dot-Dot"
-#: ../bin/cdraw.c:2808
+#: ../bin/cdraw.c:2947
#, c-format
msgid "%s Color"
msgstr "%s Lliw"
-#: ../bin/cdraw.c:2837
+#: ../bin/cdraw.c:2979
msgid "Dimension Line Size"
msgstr "Maint Llinell Dimensiwn"
-#: ../bin/cdraw.c:2849
+#: ../bin/cdraw.c:2991
msgid "Drag to create Table Edge"
msgstr "Llusgwch i greu ymyl bwrdd"
-#: ../bin/cdraw.c:2946
+#: ../bin/cdraw.c:3089
msgid "Seg Length"
msgstr "Hyd seg"
-#: ../bin/cdraw.c:2950
+#: ../bin/cdraw.c:3094
msgid "Rel Angle"
msgstr "Ongl Rel"
-#: ../bin/cdraw.c:3044
+#: ../bin/cdraw.c:3189
msgid "Line"
msgstr "Linell"
-#: ../bin/cdraw.c:3044
+#: ../bin/cdraw.c:3189
msgid "Draw Line"
msgstr "Tynnu Llinell"
-#: ../bin/cdraw.c:3045
+#: ../bin/cdraw.c:3190
msgid "Draw Dimension Line"
msgstr "Tynnu Llinell Dimensiwn"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:479
-#: ../bin/cdraw.c:3046 ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1251
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:479
+#: ../bin/cdraw.c:3191 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1270
msgid "Benchwork"
msgstr "Sylfaen"
-#: ../bin/cdraw.c:3046
+#: ../bin/cdraw.c:3191
msgid "Draw Benchwork"
msgstr "Tynnu Baseboard"
-#: ../bin/cdraw.c:3047
+#: ../bin/cdraw.c:3192
msgid "Draw Table Edge"
msgstr "Tynnwch ymyl bwrdd"
-#: ../bin/cdraw.c:3049
+#: ../bin/cdraw.c:3195
msgid "Curve End"
msgstr "Diwedd cromlin"
-#: ../bin/cdraw.c:3049
+#: ../bin/cdraw.c:3195
msgid "Draw Curve from End"
msgstr "Tynnwch y gromlin o'r diwedd"
-#: ../bin/cdraw.c:3050
+#: ../bin/cdraw.c:3196
msgid "Curve Tangent"
msgstr "Cyffyrddiad cromlin"
-#: ../bin/cdraw.c:3050
+#: ../bin/cdraw.c:3196
msgid "Draw Curve from Tangent"
msgstr "Tynnwch y gromlin o'r tangiad"
-#: ../bin/cdraw.c:3051
+#: ../bin/cdraw.c:3197
msgid "Curve Center"
msgstr "Canolfan gromlin"
-#: ../bin/cdraw.c:3051
+#: ../bin/cdraw.c:3197
msgid "Draw Curve from Center"
msgstr "Tynnwch y gromlin o'r canol"
-#: ../bin/cdraw.c:3052
+#: ../bin/cdraw.c:3198
msgid "Curve Chord"
msgstr "Cord cromlin"
-#: ../bin/cdraw.c:3052
+#: ../bin/cdraw.c:3198
msgid "Draw Curve from Chord"
msgstr "Tynnwch gromlin o'r cord"
-#: ../bin/cdraw.c:3053
+#: ../bin/cdraw.c:3199
msgid "Draw Bezier"
msgstr "Tynnwch gromlin Bezier"
-#: ../bin/cdraw.c:3056
+#: ../bin/cdraw.c:3203
msgid "Circle Center"
msgstr "Canolfan Gylch"
-#: ../bin/cdraw.c:3056
+#: ../bin/cdraw.c:3203
msgid "Draw Circle from Center"
msgstr "Tynnwch gylch o'r canol"
-#: ../bin/cdraw.c:3057
+#: ../bin/cdraw.c:3204
msgid "Circle Tangent"
msgstr "Tangent Cylch"
-#: ../bin/cdraw.c:3057
+#: ../bin/cdraw.c:3204
msgid "Draw Circle from Tangent"
msgstr "Tynnwch gylch o Tangent"
-#: ../bin/cdraw.c:3059
+#: ../bin/cdraw.c:3206
msgid "Circle Filled Center"
msgstr "Canolfan wedi'i llenwi â chylch"
-#: ../bin/cdraw.c:3059
+#: ../bin/cdraw.c:3206
msgid "Draw Filled Circle from Center"
msgstr "Tynnwch gylch wedi'i lenwi o'r canol"
-#: ../bin/cdraw.c:3060
+#: ../bin/cdraw.c:3207
msgid "Circle Filled Tangent"
msgstr "Tangent Llenwi Cylch"
-#: ../bin/cdraw.c:3060
+#: ../bin/cdraw.c:3207
msgid "Draw Filled Circle from Tangent"
msgstr "Tynnwch gylch wedi'i lenwi o tangiad"
-#: ../bin/cdraw.c:3062
+#: ../bin/cdraw.c:3210
msgid "Draw Box"
msgstr "Blwch tynnu llun"
-#: ../bin/cdraw.c:3063
+#: ../bin/cdraw.c:3211
msgid "Draw Filled Box"
msgstr "Tynnu blwch wedi'i lenwi"
-#: ../bin/cdraw.c:3064
+#: ../bin/cdraw.c:3212
msgid "Draw Polygon"
msgstr "Tynnu polygon"
-#: ../bin/cdraw.c:3065
+#: ../bin/cdraw.c:3213
msgid "Draw Filled Polygon"
msgstr "Tynnu polygon wedi'i lenwi"
-#: ../bin/cdraw.c:3066
+#: ../bin/cdraw.c:3214
msgid "PolyLine"
msgstr "PolyLine"
-#: ../bin/cdraw.c:3066
+#: ../bin/cdraw.c:3214
msgid "Draw PolyLine"
msgstr "Tynnu polyline"
-#: ../bin/cdraw.c:3083
+#: ../bin/cdraw.c:3231
msgid "Straight Objects"
msgstr "Gwrthrychau syth"
-#: ../bin/cdraw.c:3083
+#: ../bin/cdraw.c:3231
msgid "Draw Straight Objects"
msgstr "Tynnwch luniau syth"
-#: ../bin/cdraw.c:3084
+#: ../bin/cdraw.c:3232
msgid "Curved Lines"
msgstr "Llinellau Crwm"
-#: ../bin/cdraw.c:3084
+#: ../bin/cdraw.c:3232
msgid "Draw Curved Lines"
msgstr "Tynnwch linellau crwm"
-#: ../bin/cdraw.c:3085
+#: ../bin/cdraw.c:3233
msgid "Circle Lines"
msgstr "Llinellau Cylch"
-#: ../bin/cdraw.c:3085
+#: ../bin/cdraw.c:3233
msgid "Draw Circles"
msgstr "Tynnu cylchoedd"
-#: ../bin/cdraw.c:3086
+#: ../bin/cdraw.c:3234
msgid "Shapes"
msgstr "Siapiau"
-#: ../bin/cdraw.c:3086
+#: ../bin/cdraw.c:3234
msgid "Draw Shapes"
msgstr "Tynnu siapiau"
-#: ../bin/cdraw.c:3380
+#: ../bin/cdraw.c:3536
msgid "Close Polygon - 'g'"
msgstr "Polygon agos - 'g'"
-#: ../bin/cdraw.c:3381
+#: ../bin/cdraw.c:3538
msgid "Make PolyLine - 'l'"
msgstr "Gwneud polyline - 'l'"
-#: ../bin/cdraw.c:3382
+#: ../bin/cdraw.c:3540
msgid "Fill Polygon - 'f'"
msgstr "Llenwch polyline - 'f'"
-#: ../bin/cdraw.c:3383
+#: ../bin/cdraw.c:3542
msgid "Empty Polygon - 'u'"
msgstr "Polyline gwag - 'u'"
-#: ../bin/cdraw.c:3385
+#: ../bin/cdraw.c:3545
msgid "Points Mode - 'p'"
msgstr "modd pwyntiau - 'p'"
-#: ../bin/cdraw.c:3386
+#: ../bin/cdraw.c:3548
msgid "Delete Selected Point - 'Del'"
msgstr "Dileu pwynt a ddewiswyd - 'Del'"
-#: ../bin/cdraw.c:3387
+#: ../bin/cdraw.c:3549
msgid "Vertex Point - 'v'"
msgstr "pwynt fertig - 'v'"
-#: ../bin/cdraw.c:3388
+#: ../bin/cdraw.c:3551
msgid "Round Corner - 'r'"
msgstr "Cornel gron - 'r'"
-#: ../bin/cdraw.c:3389
+#: ../bin/cdraw.c:3553
msgid "Smooth Corner - 's'"
msgstr "Cornel esmwyth - 's'"
-#: ../bin/cdraw.c:3391 ../bin/cselect.c:3701
+#: ../bin/cdraw.c:3556 ../bin/cselect.c:3734
msgid "LineType..."
msgstr "Math o linell ..."
-#: ../bin/cdraw.c:3392 ../bin/cselect.c:3702
+#: ../bin/cdraw.c:3557 ../bin/cselect.c:3735
msgid "Solid Line"
msgstr "Llinell solet"
-#: ../bin/cdraw.c:3393 ../bin/cselect.c:3703
+#: ../bin/cdraw.c:3559 ../bin/cselect.c:3737
msgid "Dashed Line"
msgstr "Llinell wedi'i chwalu"
-#: ../bin/cdraw.c:3394 ../bin/cselect.c:3704
+#: ../bin/cdraw.c:3561 ../bin/cselect.c:3739
msgid "Dotted Line"
msgstr "Llinell doredig"
-#: ../bin/cdraw.c:3395
+#: ../bin/cdraw.c:3563
msgid "Dash-Dot Line"
msgstr "Llinell Dash-Dot"
-#: ../bin/cdraw.c:3396
+#: ../bin/cdraw.c:3565
msgid "Dash-Dot-Dot Line"
msgstr "Llinell Dash-Dot-Dot"
-#: ../bin/cdraw.c:3397
+#: ../bin/cdraw.c:3567
msgid "Center-Dot Line"
msgstr "Llinell Center-Dot"
-#: ../bin/cdraw.c:3398
+#: ../bin/cdraw.c:3569
msgid "Phantom-Dot Line"
msgstr "Llinell ffantasi"
-#: ../bin/cdraw.c:3400
+#: ../bin/cdraw.c:3572
msgid "Origin Mode - 'o'"
msgstr "Modd Tarddiad - 'o'"
-#: ../bin/cdraw.c:3401
+#: ../bin/cdraw.c:3574
msgid "Reset Origin - '0'"
msgstr "Ailosod tarddiad - '0'"
-#: ../bin/cdraw.c:3402
+#: ../bin/cdraw.c:3576
msgid "Origin to Selected - 'l'"
msgstr "Tarddiad wedi'i ddewis - 'l'"
-#: ../bin/cdraw.c:3403
+#: ../bin/cdraw.c:3578
msgid "Origin to Middle - 'm'"
msgstr "Tarddiad i'r canol - 'm'"
-#: ../bin/celev.c:42 ../bin/cprint.c:115 ../bin/cprofile.c:1532
-#: ../bin/csplit.c:193 ../bin/csplit.c:198 ../bin/dease.c:64
-#: ../bin/doption.c:92 ../bin/doption.c:94
+#: ../bin/celev.c:42 ../bin/cprint.c:117 ../bin/cprofile.c:1531
+#: ../bin/csplit.c:201 ../bin/csplit.c:210 ../bin/dease.c:68
+#: ../bin/doption.c:94 ../bin/doption.c:96
msgid "None"
msgstr "Dim"
@@ -1583,31 +1587,31 @@ msgstr "Wedi'i gyfrifo"
msgid "Station"
msgstr "Gorsaf"
-#: ../bin/celev.c:43 ../bin/cprofile.c:1530 ../bin/dcmpnd.c:70
+#: ../bin/celev.c:43 ../bin/cprofile.c:1529 ../bin/dcmpnd.c:71
msgid "Ignore"
msgstr "Anwybyddu"
-#: ../bin/celev.c:215
+#: ../bin/celev.c:233
msgid "Set Elevation"
msgstr "Drychiad gosod"
-#: ../bin/celev.c:305 ../bin/celev.c:312 ../bin/celev.c:315
+#: ../bin/celev.c:325 ../bin/celev.c:334 ../bin/celev.c:338
#, c-format
msgid "Undefined"
msgstr "Heb ei ddiffinio"
-#: ../bin/celev.c:359 ../bin/celev.c:502
+#: ../bin/celev.c:384 ../bin/celev.c:541
msgid "Elevation"
msgstr "Drychiad"
-#: ../bin/celev.c:359 ../bin/cmisc.c:459 ../bin/dcontmgm.c:287
-#: ../bin/dcustmgm.c:378 ../bin/dlayer.c:1546 ../bin/dpricels.c:151
-#: ../bin/filenoteui.c:238 ../bin/linknoteui.c:177
-#: ../bin/paramfilesearch_ui.c:476 ../bin/textnoteui.c:166
+#: ../bin/celev.c:385 ../bin/cmisc.c:467 ../bin/dcustmgm.c:407
+#: ../bin/dcontmgm.c:308 ../bin/dlayer.c:2071 ../bin/dpricels.c:167
+#: ../bin/filenoteui.c:253 ../bin/linknoteui.c:169
+#: ../bin/paramfilesearch_ui.c:477 ../bin/textnoteui.c:137
msgid "Done"
msgstr "Wedi'i wneud"
-#: ../bin/celev.c:371
+#: ../bin/celev.c:399
msgid ""
"Click on end, +Shift to split, +Ctrl to move description, +Alt to show "
"elevation"
@@ -1615,40 +1619,40 @@ msgstr ""
"Cliciwch ar y diwedd, + Shift i hollti, + Ctrl i symud disgrifiad, + Alt i "
"ddangos drychiad"
-#: ../bin/celev.c:391
+#: ../bin/celev.c:420
msgid "Move to end or track crossing +Shift to split"
msgstr "Symud i ben neu olrhain croesfan + Shift i hollti"
-#: ../bin/celev.c:395
+#: ../bin/celev.c:424
msgid "Move to end or track crossing"
msgstr "Symud i'r diwedd neu groesi trac"
-#: ../bin/celev.c:405
+#: ../bin/celev.c:436
#, c-format
msgid "Crossing - First %0.3f, Second %0.3f, Clearance %0.3f - Click to Split"
msgstr "Croesi - Cyntaf %0.3f, Ail%0.3f, Clirio %0.3f - Cliciwch i Hollti"
-#: ../bin/celev.c:407
+#: ../bin/celev.c:439
#, c-format
msgid "Crossing - First %0.3f, Second %0.3f, Clearance %0.3f"
msgstr "Croesi - Cyntaf %0.3f, Ail %0.3f, Clirio %0.3f"
-#: ../bin/celev.c:419
+#: ../bin/celev.c:453
#, c-format
msgid "Click to split here - elevation %0.3f"
msgstr "Cliciwch i rannu yma - drychiad %0.3f"
-#: ../bin/celev.c:424
+#: ../bin/celev.c:458
#, c-format
msgid "Track End elevation %0.3f - snap End Pt"
msgstr "Drychiad Diwedd y Trac %0.3f - snap Diwedd Pt"
-#: ../bin/celev.c:427
+#: ../bin/celev.c:461
#, c-format
msgid "Track End elevation %0.3f"
msgstr "Drychiad diwedd trac %0.3f"
-#: ../bin/celev.c:429 ../bin/celev.c:431
+#: ../bin/celev.c:463 ../bin/celev.c:466
msgid ""
"Click on End Pt, +Shift to split, +Ctrl to move description, +Alt show "
"Elevation"
@@ -1656,323 +1660,315 @@ msgstr ""
"Cliciwch ar End Pt, + Shift i hollti, + Ctrl i symud disgrifiad, + Alt yn "
"dangos Drychiad"
-#: ../bin/celev.c:450
+#: ../bin/celev.c:486
msgid "Click on end, +Shift to split, +Ctrl to move description"
msgstr "Cliciwch ar y diwedd. + Shift i hollti. + Ctrl i symud disgrifiad"
-#: ../bin/celev.c:454
+#: ../bin/celev.c:490
msgid "Split track"
msgstr "Trac Hollt"
-#: ../bin/celev.c:459
+#: ../bin/celev.c:496
msgid "Track split!"
msgstr "Hollt Trac!"
-#: ../bin/celev.c:465
+#: ../bin/celev.c:503
msgid "Point selected!"
msgstr "Pwynt wedi'i ddewis!"
-#: ../bin/cgroup.c:611
+#: ../bin/cgroup.c:664
msgid "Ungroup Object"
msgstr "Gwrthrych grwp"
-#: ../bin/cgroup.c:623
+#: ../bin/cgroup.c:677
#, c-format
msgid "%d objects ungrouped"
msgstr "%d gwrthrychau heb eu grwpio"
-#: ../bin/cgroup.c:625
+#: ../bin/cgroup.c:679
msgid "No objects ungrouped"
msgstr "Dim gwrthrychau heb eu grwpio"
-#: ../bin/cgroup.c:637
+#: ../bin/cgroup.c:693
msgid "Replace with new group?"
msgstr "Amnewid gyda grŵp newydd?"
-#: ../bin/cgroup.c:643 ../bin/compound.c:707 ../bin/cstruct.c:62
-#: ../bin/ctodesgn.c:193 ../bin/ctodesgn.c:2939 ../bin/cturnout.c:82
-#: ../bin/dcar.c:2186 ../bin/dcar.c:4373 ../bin/dcar.c:4378
-#: ../bin/dcmpnd.c:449 ../bin/dcustmgm.c:44
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:406
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:615
+#: ../bin/cgroup.c:694
+msgid "Turntable/TransferTable/DblSlipSwith?"
+msgstr ""
+
+#: ../bin/cgroup.c:700 ../bin/compound.c:744 ../bin/cstruct.c:65
+#: ../bin/ctodesgn.c:201 ../bin/ctodesgn.c:3209 ../bin/cturnout.c:84
+#: ../bin/dcar.c:2305 ../bin/dcar.c:4694 ../bin/dcar.c:4700 ../bin/dcmpnd.c:483
+#: ../bin/dcustmgm.c:45 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:417
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:656
msgid "Manufacturer"
msgstr "Gwneuthurwr"
-#: ../bin/cgroup.c:644 ../bin/cmisc.c:459 ../bin/cstruct.c:62
-#: ../bin/ctodesgn.c:2940 ../bin/ctodesgn.c:2941 ../bin/ctrain.c:188
-#: ../bin/cturnout.c:82 ../bin/dcar.c:2202 ../bin/dcar.c:4374
-#: ../bin/dcar.c:4379 ../bin/dcmpnd.c:450 ../bin/dcustmgm.c:45
-#: ../bin/denum.c:184 ../bin/denum.c:185 ../bin/denum.c:188
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:407
+#: ../bin/cgroup.c:701 ../bin/cmisc.c:467 ../bin/cstruct.c:65
+#: ../bin/ctodesgn.c:3210 ../bin/ctodesgn.c:3211 ../bin/ctrain.c:184
+#: ../bin/cturnout.c:84 ../bin/dcar.c:2321 ../bin/dcar.c:4695
+#: ../bin/dcar.c:4701 ../bin/dcmpnd.c:484 ../bin/dcustmgm.c:46
+#: ../bin/denum.c:188 ../bin/denum.c:189 ../bin/denum.c:194
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:418
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:650
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:651
msgid "Description"
msgstr "Disgrifiad"
-#: ../bin/cgroup.c:645 ../bin/dcmpnd.c:451
+#: ../bin/cgroup.c:702 ../bin/dcmpnd.c:485
msgid "#"
msgstr "#"
-#: ../bin/cgroup.c:646 ../bin/compound.c:711
+#: ../bin/cgroup.c:703 ../bin/compound.c:748
msgid "# Segments"
msgstr "# Segmentau"
-#: ../bin/cgroup.c:648
+#: ../bin/cgroup.c:705
msgid "Offset X,Y:"
msgstr "Gwrthbwyso: X,Y"
-#: ../bin/cgroup.c:1216
+#: ../bin/cgroup.c:1320
msgid "No endpts"
msgstr "Dim pwyntiau diwedd"
-#: ../bin/cgroup.c:1326
-msgid "No paths"
-msgstr "Dim llwybrau"
-
-#: ../bin/cgroup.c:1597 ../bin/cgroup.c:1652
+#: ../bin/cgroup.c:1732 ../bin/cgroup.c:1798
msgid "Group Tracks"
msgstr "Traciau grŵp"
-#: ../bin/cgroup.c:1715
+#: ../bin/cgroup.c:1866
msgid "Group Objects"
msgstr "Gwrthrychau grŵp"
-#: ../bin/chndldto.c:67
+#: ../bin/chndldto.c:68
msgid "Place frog and drag angle"
msgstr "Rhowch ongl broga a llusgo"
-#: ../bin/chndldto.c:84
+#: ../bin/chndldto.c:85
msgid "frog"
msgstr "Broga"
-#: ../bin/chndldto.c:90
+#: ../bin/chndldto.c:91
msgid "Drag to set angle"
msgstr "Llusgwch i ongl osod"
-#: ../bin/chndldto.c:129
+#: ../bin/chndldto.c:132
#, c-format
msgid "Angle = %0.2f Frog# = %0.2f"
msgstr "Ongl = %0.2f Broga# = %0.2f"
-#: ../bin/chndldto.c:131
+#: ../bin/chndldto.c:134
msgid "Frog angle is too close to 0"
msgstr "Mae ongl broga yn rhy agos at 0"
-#: ../bin/chndldto.c:134
+#: ../bin/chndldto.c:137
msgid "Select point position"
msgstr "Dewiswch safle pwynt rheilffordd"
-#: ../bin/chndldto.c:146 ../bin/chndldto.c:171
+#: ../bin/chndldto.c:152 ../bin/chndldto.c:178
msgid "points"
msgstr "Pwyntiau rheilffordd"
-#: ../bin/chndldto.c:268
+#: ../bin/chndldto.c:282
#, c-format
msgid "Length = %0.2f Angle = %0.2f Frog# = %0.2f"
msgstr "Hyd = %0.2f Ongl = %0.2f Broga# = %0.2f"
-#: ../bin/chndldto.c:271
+#: ../bin/chndldto.c:286
msgid "Create Hand Laid Turnout"
msgstr "Creu pwyntiau rheilffordd wedi'u gosod â llaw"
-#: ../bin/chndldto.c:355
+#: ../bin/chndldto.c:381
msgid "HandLaidTurnout"
msgstr "Pwyntiau rheilffordd wedi'u gosod â llaw"
-#: ../bin/cjoin.c:164
+#: ../bin/cjoin.c:170
#, c-format
msgid "Curved Track: Radius=%s Length=%s"
msgstr "Trac Crwm: Radiws=%s Hyd=%s"
-#: ../bin/cjoin.c:250
+#: ../bin/cjoin.c:261
#, c-format
msgid "Curved Track: Radius=%s Length=%s Angle=%0.3f"
msgstr "Trac Crwm: Radiws=%s Hyd=%s Ongl=%0.3f"
-#: ../bin/cjoin.c:346
+#: ../bin/cjoin.c:363
#, c-format
msgid "Track (%d) is too short for transition-curve by %0.3f"
msgstr "Trac (%d) yn rhy fyr ar gyfer cromlin trosglwyddo gan %0.3f"
-#: ../bin/cjoin.c:364
+#: ../bin/cjoin.c:381
#, c-format
msgid "Connecting track is too short by %0.3f"
msgstr "Mae'r trac cysylltu'n rhy fyr erbyn %0.3f"
-#: ../bin/cjoin.c:408
+#: ../bin/cjoin.c:431
msgid "Click on an unselected End-Point"
msgstr "Cliciwch ar ddiweddbwynt heb ei ddewis"
-#: ../bin/cjoin.c:409
+#: ../bin/cjoin.c:432
msgid "Click on a selected End-Point"
msgstr "Cliciwch ar ddiweddbwynt dethol"
-#: ../bin/cjoin.c:415
+#: ../bin/cjoin.c:438
msgid "unselected"
msgstr "Heb ei ddewis"
-#: ../bin/cjoin.c:415 ../bin/cprint.c:160
+#: ../bin/cjoin.c:438 ../bin/cprint.c:162
msgid "selected"
msgstr "Wedi'i ddewis"
-#: ../bin/cjoin.c:472
+#: ../bin/cjoin.c:499
msgid "Left click - Select first draw object end"
msgstr "Cliciwch ar y chwith - Dewiswch ddiwedd y gwrthrych tynnu cyntaf"
-#: ../bin/cjoin.c:512 ../bin/cjoin.c:546
+#: ../bin/cjoin.c:539 ../bin/cjoin.c:576
msgid "Not a line - Try again"
msgstr "Ddim yn llinell - ceisiwch eto"
-#: ../bin/cjoin.c:542
+#: ../bin/cjoin.c:572
msgid "Left click - Select second object end"
msgstr "Cliciwch ar y chwith - Dewiswch ddiwedd yr ail wrthrych"
-#: ../bin/cjoin.c:554
+#: ../bin/cjoin.c:584
msgid "Same draw object and same endpoint - Try again"
msgstr "Yr un gwrthrych tynnu a'r un pwynt terfyn - Rhowch gynnig arall arni"
-#: ../bin/cjoin.c:596
+#: ../bin/cjoin.c:632
msgid "Create PolyLine"
msgstr "Creu polyline"
-#: ../bin/cjoin.c:838
+#: ../bin/cjoin.c:913
msgid "Left click - join with track"
msgstr "Cliciwch ar y chwith - ymunwch â'r trac"
-#: ../bin/cjoin.c:840
+#: ../bin/cjoin.c:916
msgid "Left click - join with track, Shift Left click - move to join"
msgstr ""
"Cliciwch ar y chwith - ymunwch â'r trac, Shift Chwith cliciwch - symudwch i "
"ymuno"
-#: ../bin/cjoin.c:918 ../bin/cjoin.c:1337 ../bin/cjoin.c:1344
+#: ../bin/cjoin.c:1011 ../bin/cjoin.c:1469 ../bin/cjoin.c:1476
msgid "Select 2nd track"
msgstr "Dewiswch 2il drac"
-#: ../bin/cjoin.c:1147
+#: ../bin/cjoin.c:1266
msgid "Beyond end of 2nd track"
msgstr "Y tu hwnt i ddiwedd yr 2il drac"
-#: ../bin/cjoin.c:1182
+#: ../bin/cjoin.c:1302
msgid "Beyond end of 1st track"
msgstr "Y tu hwnt i ddiwedd y trac 1af"
-#: ../bin/cjoin.c:1204
+#: ../bin/cjoin.c:1325
msgid "First Track Type not supported for non-Cornu Join"
msgstr "Math o drac cyntaf heb ei gefnogi ar gyfer Ymuno nad yw'n Cornu"
-#: ../bin/cjoin.c:1211
+#: ../bin/cjoin.c:1333
msgid "First "
msgstr "Yn gyntaf"
-#: ../bin/cjoin.c:1236
+#: ../bin/cjoin.c:1359
msgid "Second Track Type not supported for non-Cornu Join"
msgstr "Ail fath o drac heb ei gefnogi ar gyfer ymuno nad yw'n Cornu"
-#: ../bin/cjoin.c:1243
+#: ../bin/cjoin.c:1366
msgid "Second "
msgstr "Ail"
-#: ../bin/cjoin.c:1257 ../bin/track.c:2335 ../bin/track.c:2371
-#: ../bin/track.c:2437
+#: ../bin/cjoin.c:1380 ../bin/track.c:2395 ../bin/track.c:2434
+#: ../bin/track.c:2509
msgid "Connecting "
msgstr "Cysylltu"
-#: ../bin/cjoin.c:1347
+#: ../bin/cjoin.c:1479
msgid "Join Tracks"
msgstr "Ymunwch â thraciau"
-#: ../bin/cjoin.c:1435
+#: ../bin/cjoin.c:1575
msgid "Join"
msgstr "Ymunwch"
-#: ../bin/cjoin.c:1436
+#: ../bin/cjoin.c:1576
msgid "Join Track"
msgstr "Ymunwch â'r trac"
-#: ../bin/cjoin.c:1437
+#: ../bin/cjoin.c:1579
msgid "Join Lines"
msgstr "Ymunwch â llinellau"
-#: ../bin/cmisc.c:57
+#: ../bin/cmisc.c:55
msgid "Middle"
msgstr "Canol"
-#: ../bin/cmisc.c:57 ../bin/macro.c:67
+#: ../bin/cmisc.c:55 ../bin/macro.c:70
msgid "End"
msgstr "Diwedd"
-#: ../bin/cmisc.c:142 ../bin/tcurve.c:390 ../bin/tease.c:520
+#: ../bin/cmisc.c:140 ../bin/tcurve.c:409 ../bin/tease.c:535
msgid "Lock"
msgstr "Clo"
-#: ../bin/cmisc.c:234 ../bin/cmodify.c:364 ../bin/compound.c:805
-#: ../bin/ctrain.c:219
-msgid "Change Track"
-msgstr "Newid trac"
-
-#: ../bin/cmisc.c:585
+#: ../bin/cmisc.c:593
msgid "Select track to describe +Shift for Frozen"
msgstr "Dewiswch drac i'w ddisgrifio +Shift ar gyfer rhewi"
-#: ../bin/cmisc.c:686 ../bin/doption.c:236
+#: ../bin/cmisc.c:691 ../bin/doption.c:245
msgid "Properties"
msgstr "Priodweddau"
-#: ../bin/cmisc2.c:52
-msgid "Bridge"
-msgstr "Pont"
-
-#: ../bin/cmodify.c:266
+#: ../bin/cmodify.c:276
msgid ""
"Select a track to modify, Left-Click change length, Right-Click to add "
"flextrack"
msgstr ""
-"Dewiswch drac i'w addasu, Chwith-gliciwch hyd newid, De-gliciwch i ychwanegu"
-" trac hyblyg"
+"Dewiswch drac i'w addasu, Chwith-gliciwch hyd newid, De-gliciwch i ychwanegu "
+"trac hyblyg"
-#: ../bin/cmodify.c:490
+#: ../bin/cmodify.c:520
msgid "Modify Track"
msgstr "Addasu trac"
-#: ../bin/cmodify.c:532
+#: ../bin/cmodify.c:564
msgid "Drag to add flex track"
msgstr "Llusgwch i ychwanegu trac hyblyg"
-#: ../bin/cmodify.c:537
+#: ../bin/cmodify.c:569
msgid "No track to extend"
msgstr "Dim trac i ymestyn"
-#: ../bin/cmodify.c:542
+#: ../bin/cmodify.c:574
msgid "No track selected"
msgstr "Dim trac wedi'i ddewis"
-#: ../bin/cmodify.c:675
+#: ../bin/cmodify.c:724
#, c-format
msgid "Curve Track: Radius=%s Length=%s Angle=%0.3f"
msgstr "Trac cromlin: Radiws=%s Hyd=%s Ongl=%0.3f"
-#: ../bin/cmodify.c:690
+#: ../bin/cmodify.c:740
msgid "Extend Track"
msgstr "Ymestyn trac"
-#: ../bin/cmodify.c:822
+#: ../bin/cmodify.c:882
msgid "Modify"
msgstr "Addasu"
-#: ../bin/cmodify.c:830 ../bin/cselect.c:3654 ../bin/cselect.c:3671
-#: ../bin/misc.c:2444 ../bin/misc.c:2446
+#: ../bin/cmodify.c:895 ../bin/cselect.c:3664 ../bin/cselect.c:3686
+#: ../bin/menu.c:937 ../bin/menu.c:939
msgid "Zoom In"
msgstr "Chwyddo Mewn"
-#: ../bin/cmodify.c:831 ../bin/cselect.c:3658 ../bin/cselect.c:3672
-#: ../bin/misc.c:2448 ../bin/misc.c:2450
+#: ../bin/cmodify.c:896 ../bin/cselect.c:3669 ../bin/cselect.c:3687
+#: ../bin/menu.c:941 ../bin/menu.c:943
msgid "Zoom Out"
msgstr "Chwyddo allan"
-#: ../bin/cmodify.c:832
+#: ../bin/cmodify.c:897
msgid "Pan center - 'c'"
msgstr "Canolfan sosban - 'c'"
-#: ../bin/cnote.c:67 ../bin/textnoteui.c:43 ../bin/trknote.c:55
+#: ../bin/cnote.c:67 ../bin/textnoteui.c:47 ../bin/trknote.c:52
msgid "Note"
msgstr "Nodyn"
@@ -1980,356 +1976,372 @@ msgstr "Nodyn"
msgid "Replace this text with your layout notes"
msgstr "Amnewid y testun hwn gyda'ch nodiadau cynllun"
-#: ../bin/compound.c:685 ../bin/compound.c:690 ../bin/compound.c:695
-#: ../bin/compound.c:700 ../bin/tbezier.c:252 ../bin/tbezier.c:259
-#: ../bin/tcornu.c:305 ../bin/tcornu.c:310
+#: ../bin/command.c:388 ../bin/command.c:395
+msgid ""
+"Cancelling the current command will undo the changes\n"
+"you are currently making. Do you want to do the update instead?"
+msgstr ""
+"Bydd canslo'r gorchymyn cyfredol yn dadwneud y newidiadau\n"
+"rydych chi'n ei wneud ar hyn o bryd. Ydych chi am wneud y diweddariad yn lle?"
+
+#: ../bin/command.c:390 ../bin/command.c:458 ../bin/cprint.c:1445
+#: ../bin/dbitmap.c:428 ../bin/filenoteui.c:157 ../bin/param.c:3013
+#: ../bin/svgoutput.c:460
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:675
+msgid "Cancel"
+msgstr "Canslo"
+
+#: ../bin/command.c:456
+msgid ""
+"Cancelling the current command will undo the changes\n"
+"you are currently making. Do you want to update?"
+msgstr ""
+"Bydd canslo'r gorchymyn cyfredol yn dadwneud y newidiadau\n"
+"rydych chi'n ei wneud ar hyn o bryd. Ydych chi am ddiweddaru?"
+
+#: ../bin/compound.c:722 ../bin/compound.c:727 ../bin/compound.c:732
+#: ../bin/compound.c:737 ../bin/tbezier.c:286 ../bin/tbezier.c:293
+#: ../bin/tcornu.c:322 ../bin/tcornu.c:327
msgid "Center X,Y"
msgstr "Canolfan X,Y"
-#: ../bin/compound.c:687 ../bin/tbezier.c:253 ../bin/tcornu.c:306
+#: ../bin/compound.c:724 ../bin/tbezier.c:287 ../bin/tcornu.c:323
msgid "Z1"
msgstr "Z1"
-#: ../bin/compound.c:692 ../bin/tbezier.c:260 ../bin/tcornu.c:311
+#: ../bin/compound.c:729 ../bin/tbezier.c:294 ../bin/tcornu.c:328
msgid "Z2"
msgstr "Z2"
-#: ../bin/compound.c:693
+#: ../bin/compound.c:730
msgid "End Pt 3: X,Y"
msgstr "Pwynt Diwedd 3: X,Y"
-#: ../bin/compound.c:697
+#: ../bin/compound.c:734
msgid "Z3"
msgstr "Z3"
-#: ../bin/compound.c:698
+#: ../bin/compound.c:735
msgid "End Pt 4: X,Y"
msgstr "Pwynt Diwedd 4: X,Y"
-#: ../bin/compound.c:702
+#: ../bin/compound.c:739
msgid "Z4"
msgstr "Z4"
-#: ../bin/compound.c:704 ../bin/tease.c:513
+#: ../bin/compound.c:741 ../bin/tease.c:528
msgid "Origin: X,Y"
msgstr "Tarddiad"
-#: ../bin/compound.c:709 ../bin/cstruct.c:62 ../bin/cturnout.c:82
-#: ../bin/dcar.c:4373 ../bin/dcar.c:4378 ../bin/dcustmgm.c:45
-#: ../bin/doption.c:97 ../bin/doption.c:98
+#: ../bin/compound.c:746 ../bin/cstruct.c:65 ../bin/cturnout.c:84
+#: ../bin/dcar.c:4694 ../bin/dcar.c:4700 ../bin/dcustmgm.c:46
+#: ../bin/doption.c:99 ../bin/doption.c:100
msgid "Part No"
msgstr "Rhif Rhan"
-#: ../bin/compound.c:710
+#: ../bin/compound.c:747
msgid "LineType"
msgstr "Math o linell"
-#: ../bin/compound.c:971 ../bin/cstruct.c:953 ../bin/cstruct.c:1149
+#: ../bin/compound.c:1025 ../bin/cstruct.c:1030 ../bin/cstruct.c:1246
msgid "Structure"
msgstr "Strwythur"
-#: ../bin/compound.c:973 ../bin/cswitchmotor.c:225 ../bin/cturnout.c:2949
-#: ../bin/cturnout.c:4836
+#: ../bin/compound.c:1027 ../bin/cswitchmotor.c:232 ../bin/cturnout.c:988
msgid "Turnout"
msgstr "Pwynt rheilffordd"
-#: ../bin/compound.c:973
+#: ../bin/compound.c:1027
msgid "Sectional Track"
msgstr "Trac Adrannol"
-#: ../bin/compound.c:977
+#: ../bin/compound.c:1031
#, c-format
msgid "%s (%d) Layer= %d %s"
msgstr "%s (%d) Haen= %d %s"
-#: ../bin/cparalle.c:49 ../bin/cparalle.c:97 ../bin/cparalle.c:138
-#: ../bin/ctodesgn.c:537 ../bin/ctodesgn.c:557 ../bin/ctodesgn.c:577
-#: ../bin/tcurve.c:384
+#: ../bin/cparalle.c:49 ../bin/cparalle.c:98 ../bin/cparalle.c:140
+#: ../bin/ctodesgn.c:600 ../bin/ctodesgn.c:626 ../bin/ctodesgn.c:651
+#: ../bin/tcurve.c:403
msgid "Separation"
msgstr "Gwahanu"
-#: ../bin/cparalle.c:52 ../bin/cparalle.c:98
+#: ../bin/cparalle.c:52 ../bin/cparalle.c:99
msgid "Radius Factor"
msgstr "Ffactor Radiws"
-#: ../bin/cparalle.c:139
+#: ../bin/cparalle.c:141
msgid "Radius factor"
msgstr "Ffactor Radiws"
-#: ../bin/cparalle.c:152
+#: ../bin/cparalle.c:155
msgid " Track/Line doesn't support parallel"
msgstr "Nid yw Track / Line yn cefnogi'n gyfochrog"
-#: ../bin/cparalle.c:226
+#: ../bin/cparalle.c:230
msgid "Create Parallel Track"
msgstr "Creu trac cyfochrog"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:470
-#: ../bin/cparalle.c:296 ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1233
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:470
+#: ../bin/cparalle.c:299
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1252
msgid "Parallel"
msgstr "Cyfochrog"
-#: ../bin/cparalle.c:297
+#: ../bin/cparalle.c:300
msgid "Parallel Track"
msgstr "Trac cyfochrog"
-#: ../bin/cparalle.c:298
+#: ../bin/cparalle.c:303
msgid "Parallel Line"
msgstr "Llinell gyfochrog"
-#: ../bin/cprint.c:108
+#: ../bin/cprint.c:110
msgid "Portrait"
msgstr "Portread"
-#: ../bin/cprint.c:108
+#: ../bin/cprint.c:110
msgid "Landscape"
msgstr "Tirwedd"
-#: ../bin/cprint.c:109 ../bin/cswitchmotor.c:90 ../bin/cswitchmotor.c:109
-#: ../bin/cswitchmotor.c:222 ../bin/dbench.c:73 ../bin/dease.c:64
-#: ../bin/doption.c:91 ../bin/doption.c:93 ../bin/macro.c:1391
+#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:90 ../bin/cswitchmotor.c:109
+#: ../bin/cswitchmotor.c:229 ../bin/dbench.c:75 ../bin/dease.c:68
+#: ../bin/doption.c:93 ../bin/doption.c:95 ../bin/macro.c:1416
msgid "Normal"
msgstr "Arferol"
-#: ../bin/cprint.c:109 ../bin/cswitchmotor.c:91 ../bin/cswitchmotor.c:110
-#: ../bin/cswitchmotor.c:223 ../bin/ctrain.c:942 ../bin/ctrain.c:1251
+#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:91 ../bin/cswitchmotor.c:110
+#: ../bin/cswitchmotor.c:230 ../bin/ctrain.c:1011 ../bin/ctrain.c:1324
msgid "Reverse"
msgstr "Gwrthdroi"
-#: ../bin/cprint.c:110
+#: ../bin/cprint.c:112
msgid "Engineering Data"
msgstr "Data Peirianneg"
-#: ../bin/cprint.c:111
+#: ../bin/cprint.c:113
msgid "Registration Marks (in 1:1 scale only)"
msgstr "Marciau Cofrestru (ar raddfa 1:1 yn unig)"
-#: ../bin/cprint.c:112
+#: ../bin/cprint.c:114
msgid "Page Numbers"
msgstr "Rhif Tudalen"
-#: ../bin/cprint.c:113
+#: ../bin/cprint.c:115
msgid "Ignore Page Margins"
msgstr "Anwybyddu Ymylon Tudalennau"
-#: ../bin/cprint.c:114 ../bin/csnap.c:675 ../bin/doption.c:535
+#: ../bin/cprint.c:116 ../bin/csnap.c:733 ../bin/doption.c:559
msgid "Snap Grid"
msgstr "Grid ffon"
-#: ../bin/cprint.c:115
+#: ../bin/cprint.c:117
msgid "Layout Edge"
msgstr "Cynllun Ymyl"
-#: ../bin/cprint.c:115
+#: ../bin/cprint.c:117
msgid "Every Page"
msgstr "Pob Tudalen"
-#: ../bin/cprint.c:116
+#: ../bin/cprint.c:118
msgid "Roadbed Outline"
msgstr "Amlinelliad gwely ffordd"
-#: ../bin/cprint.c:117
+#: ../bin/cprint.c:119
msgid "Centerline below Scale 1:1"
msgstr "Llinell ganol islaw graddfa 1:1"
-#: ../bin/cprint.c:126
+#: ../bin/cprint.c:128
msgid "Print Scale"
msgstr "Graddfa Argraffu"
-#: ../bin/cprint.c:127
+#: ../bin/cprint.c:129
msgid "Page Width"
msgstr "Lled y dudalen"
-#: ../bin/cprint.c:128
+#: ../bin/cprint.c:130
msgid "Max"
msgstr "Mwyafswm"
-#: ../bin/cprint.c:130
+#: ../bin/cprint.c:132
msgid "Snap Shot"
msgstr "Ciplun"
-#: ../bin/cprint.c:131
+#: ../bin/cprint.c:133
msgid "Page Format"
msgstr "Fformat tudalen"
-#: ../bin/cprint.c:132
+#: ../bin/cprint.c:134
msgid "Print Order"
msgstr "Archeb argraffu"
-#: ../bin/cprint.c:133
+#: ../bin/cprint.c:135
msgid "Print "
msgstr "Argraffu"
-#: ../bin/cprint.c:142
+#: ../bin/cprint.c:144
msgid "Rulers:"
msgstr "Rheolwyr:"
-#: ../bin/cprint.c:148
+#: ../bin/cprint.c:150
msgid " Width"
msgstr "Lled"
-#: ../bin/cprint.c:150
+#: ../bin/cprint.c:152
msgid "Margins"
msgstr "Ymylon"
-#: ../bin/cprint.c:151 ../bin/cturntbl.c:247
+#: ../bin/cprint.c:153 ../bin/cturntbl.c:274
msgid "Origin: X"
msgstr "Tarddiad: X"
-#: ../bin/cprint.c:152 ../bin/csnap.c:508
+#: ../bin/cprint.c:154 ../bin/csnap.c:549
msgid "Y"
msgstr "Y"
-#: ../bin/cprint.c:153 ../bin/cprint.c:616 ../bin/cprofile.c:708
-#: ../bin/dcar.c:2206
+#: ../bin/cprint.c:155 ../bin/cprint.c:631 ../bin/cprofile.c:706
+#: ../bin/dcar.c:2325
msgid "Reset"
msgstr "Ail gychwyn"
-#: ../bin/cprint.c:155
+#: ../bin/cprint.c:157
msgid "Setup"
msgstr "Sefydlu"
-#: ../bin/cprint.c:156 ../bin/cselect.c:3662 ../bin/misc.c:2479
+#: ../bin/cprint.c:158 ../bin/cselect.c:3675 ../bin/menu.c:974
msgid "Select All"
msgstr "Dewiswch y cyfan"
-#: ../bin/cprint.c:157 ../bin/cprofile.c:710 ../bin/layout.c:507
-#: ../bin/misc.c:806
+#: ../bin/cprint.c:159 ../bin/cprofile.c:708 ../bin/layout.c:671
+#: ../bin/misc.c:725
msgid "Clear"
msgstr "Clir"
-#: ../bin/cprint.c:159
+#: ../bin/cprint.c:161
msgid "0 pages"
msgstr "0 Tudalennau"
-#: ../bin/cprint.c:186
+#: ../bin/cprint.c:190
#, c-format
msgid "%d page"
msgstr "%d tudalen"
-#: ../bin/cprint.c:186
+#: ../bin/cprint.c:190
#, c-format
msgid "%d pages"
msgstr "%d tudalennau"
-#: ../bin/cprint.c:407
+#: ../bin/cprint.c:419
#, c-format
msgid "PrintScale 1:%ld Room %s x %s Model Scale %s File %s"
msgstr ""
"Graddfa Argraffu 1:%ld Ystafell %s x %s Graddfa Enghreifftiol %s Ffeil "
"%s"
-#: ../bin/cprint.c:712 ../bin/dbitmap.c:427 ../bin/filenoteui.c:147
-#: ../bin/misc.c:1328 ../bin/misc.c:1407 ../bin/param.c:2721
-#: ../bin/svgoutput.c:460 ../wlib/gtklib/browserhelp.c:96
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:634
-msgid "Cancel"
-msgstr "Canslo"
-
-#: ../bin/cprint.c:719
+#: ../bin/cprint.c:746
msgid "Print Margins"
msgstr "Argraffu Ymylon"
-#: ../bin/cprint.c:1383 ../bin/cprofile.c:712 ../bin/ctodesgn.c:2887
+#: ../bin/cprint.c:1440 ../bin/cprofile.c:710 ../bin/ctodesgn.c:3147
#: ../bin/denum.c:51
msgid "Print"
msgstr "Argraffu"
-#: ../bin/cprint.c:1404
+#: ../bin/cprint.c:1472
msgid "Select pages to print, or drag to move print grid"
msgstr ""
"Dewiswch dudalennau i'w hargraffu, neu eu llusgo i symud y grid argraffu"
-#: ../bin/cprint.c:1505
+#: ../bin/cprint.c:1574
msgid "Print..."
msgstr "Argraffu..."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:466
-#: ../bin/cprofile.c:610 ../bin/cprofile.c:1444 ../bin/cprofile.c:1524
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:126
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1225
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:466
+#: ../bin/cprofile.c:608 ../bin/cprofile.c:1442 ../bin/cprofile.c:1522
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1244
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:127
msgid "Profile"
msgstr "Proffil"
-#: ../bin/cprofile.c:628
+#: ../bin/cprofile.c:626
#, c-format
msgid "%s Profile: %s"
msgstr "%s Proffil: %s"
-#: ../bin/cprofile.c:706 ../bin/misc.c:2010
+#: ../bin/cprofile.c:704 ../bin/menu.c:225
msgid "Change"
msgstr "Newid"
-#: ../bin/cprofile.c:753 ../bin/cprofile.c:763
+#: ../bin/cprofile.c:751 ../bin/cprofile.c:761
#, c-format
msgid "Elev = %0.1f"
msgstr "Drychiad = %0.1f"
-#: ../bin/cprofile.c:765
+#: ../bin/cprofile.c:763
#, c-format
msgid "Elev=%0.2f %0.1f%%"
msgstr "Drychiad=%0.2f %0.1f%%"
-#: ../bin/cprofile.c:770
+#: ../bin/cprofile.c:768
#, c-format
msgid "%0.1f%% Elev = %0.2f"
msgstr "%0.1f%% Drychiad = %0.2f"
-#: ../bin/cprofile.c:775
+#: ../bin/cprofile.c:773
#, c-format
msgid "%0.1f%% Elev = %0.2f %0.1f%%"
msgstr "%0.1f%% Drychiad = %0.2f %0.1f%%"
-#: ../bin/cprofile.c:790 ../bin/cprofile.c:860 ../bin/cprofile.c:1396
+#: ../bin/cprofile.c:788 ../bin/cprofile.c:858 ../bin/cprofile.c:1394
msgid "Profile Command"
msgstr "Gorchymyn Proffil"
-#: ../bin/cprofile.c:799 ../bin/cprofile.c:1450
+#: ../bin/cprofile.c:797 ../bin/cprofile.c:1448
msgid "Drag to change Elevation"
msgstr "Llusgwch i newid drychiad"
-#: ../bin/cprofile.c:901
+#: ../bin/cprofile.c:899
msgid "Select a Defined Elevation to start Profile"
msgstr "Dewiswch ddrychiad diffiniedig i gychwyn proffil"
-#: ../bin/cprofile.c:903
+#: ../bin/cprofile.c:901
msgid "Select a Defined Elevation to extend Profile"
msgstr "Dewiswch ddrychiad diffiniedig i ymestyn proffil"
-#: ../bin/cprofile.c:1458
+#: ../bin/cprofile.c:1456
msgid "Select a Defined Elevation to start profile"
msgstr "Dewiswch ddrychiad diffiniedig i gychwyn proffil"
-#: ../bin/cprofile.c:1528
+#: ../bin/cprofile.c:1527
msgid "Define"
msgstr "Diffinio"
-#: ../bin/cpull.c:436 ../bin/cpull.c:592
+#: ../bin/cpull.c:454 ../bin/cpull.c:616
#, c-format
msgid "%d tracks moved"
msgstr "%d traciau wedi'u symud"
-#: ../bin/cpull.c:482
+#: ../bin/cpull.c:503
msgid "Pull Tracks"
msgstr "Tynnu traciau"
-#: ../bin/cpull.c:556
+#: ../bin/cpull.c:579
msgid "Tighten Tracks"
msgstr "Tynhau traciau"
-#: ../bin/cpull.c:643
+#: ../bin/cpull.c:670
msgid "Connect Multiple Tracks - Select multiple tracks to join first"
msgstr "Cysylltu traciau lluosog. Dewiswch draciau lluosog i ymuno yn gyntaf"
-#: ../bin/cpull.c:646
+#: ../bin/cpull.c:673
msgid "Try to Connect all Selected Tracks?"
msgstr "Ceisiwch gysylltu pob Trac a ddewiswyd?"
-#: ../bin/cpull.c:652
+#: ../bin/cpull.c:680
msgid "ReConnect"
msgstr "Ailgysylltu"
-#: ../bin/cpull.c:688
+#: ../bin/cpull.c:720
#, c-format
msgid ""
"Round 1 %d and Round 2 %d tracks connected, %d close pairs of end Points "
@@ -2338,539 +2350,451 @@ msgstr ""
"Rownd 1 %d and Rownd 2 %d traciau wedi'u cysylltu, %d nid oedd parau agos o "
"bwyntiau gorffen wedi'u cysylltu"
-#: ../bin/cpull.c:713
+#: ../bin/cpull.c:747
msgid "Select first endpoint or turntable to connect, +Shift to tighten"
-msgstr ""
-"Dewiswch ddiweddbwynt cyntaf neu drofwrdd i gysylltu, + Shift i dynhau"
+msgstr "Dewiswch ddiweddbwynt cyntaf neu drofwrdd i gysylltu, + Shift i dynhau"
-#: ../bin/cpull.c:715
+#: ../bin/cpull.c:750
msgid ""
"Select first endpoint to connect, or Right-Click for connecting selected "
"tracks (not turntable)"
msgstr ""
-"Dewiswch ddiweddbwynt cyntaf i'w gysylltu, neu De-gliciwch ar gyfer cysylltu"
-" traciau dethol (nid trofwrdd)"
+"Dewiswch ddiweddbwynt cyntaf i'w gysylltu, neu De-gliciwch ar gyfer cysylltu "
+"traciau dethol (nid trofwrdd)"
-#: ../bin/cpull.c:774
+#: ../bin/cpull.c:814
msgid "Select second endpoint or turntable to connect"
msgstr "Dewiswch ail ddiweddbwynt neu drofwrdd i gysylltu"
-#: ../bin/cpull.c:781
+#: ../bin/cpull.c:821
msgid "Same Track! - please select another"
msgstr "Yr un trac! - dewiswch un arall"
-#: ../bin/cpull.c:873
+#: ../bin/cpull.c:918
msgid "Connect Two Tracks"
msgstr "Cysylltu dau drac"
-#: ../bin/cpull.c:875
+#: ../bin/cpull.c:924
msgid "Connect All Selected - 'S'"
msgstr "Cysylltu Pob Dewis - 'S'"
-#: ../bin/cruler.c:372
+#: ../bin/cruler.c:390
msgid "Measurement"
msgstr "Mesur"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:477
-#: ../bin/cruler.c:373 ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1247
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:477
+#: ../bin/cruler.c:391 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1266
msgid "Ruler"
msgstr "Phren mesur"
-#: ../bin/cruler.c:374
+#: ../bin/cruler.c:394
msgid "Protractor"
msgstr "Gwrthdystiwr"
-#: ../bin/cselect.c:654
+#: ../bin/cselect.c:688
msgid "Change Track Width"
msgstr "Newid lled y trac"
-#: ../bin/cselect.c:679
+#: ../bin/cselect.c:714
msgid "Change Line Type"
msgstr "Newid math llinell"
-#: ../bin/cselect.c:704
+#: ../bin/cselect.c:739
msgid "Delete only works in Select Mode"
msgstr "Dileu dim ond gweithio yn y Modd Dewis"
-#: ../bin/cselect.c:718
+#: ../bin/cselect.c:755
msgid "Delete Tracks"
msgstr "Dileu traciau"
-#: ../bin/cselect.c:808
+#: ../bin/cselect.c:862
msgid "Hide Tracks (Tunnel)"
msgstr "Cuddio Traciau (Twnnel)"
-#: ../bin/cselect.c:826
+#: ../bin/cselect.c:882
msgid "Bridge Tracks "
msgstr "Traciau pont"
-#: ../bin/cselect.c:843
+#: ../bin/cselect.c:900
+#, fuzzy
+msgid "Roadbed Tracks "
+msgstr "Cylchdroi Traciau"
+
+#: ../bin/cselect.c:918
msgid "Ties Tracks "
msgstr "Traciau cysgwyr"
-#: ../bin/cselect.c:880 ../bin/misc.c:2617
+#: ../bin/cselect.c:956 ../bin/menu.c:1118
msgid "Move To Current Layer"
msgstr "Symud i'r Haen Bresennol"
-#: ../bin/cselect.c:932 ../bin/misc.c:2784
+#: ../bin/cselect.c:1010 ../bin/menu.c:1303
msgid "Clear Elevations"
msgstr "Drychiadau Clir"
-#: ../bin/cselect.c:976
+#: ../bin/cselect.c:1056
msgid "Add Elevations"
msgstr "Ychwanegu Drychiadau"
-#: ../bin/cselect.c:991
+#: ../bin/cselect.c:1072
msgid "Refresh Compound"
msgstr "Adnewyddu Cyfansawdd"
-#: ../bin/cselect.c:1023 ../bin/dcar.c:4373 ../bin/dcar.c:4378
-#: ../bin/dcustmgm.c:45 ../bin/layout.c:498
-msgid "Scale"
-msgstr "Graddfa"
-
-#: ../bin/cselect.c:1023 ../bin/cselect.c:1048
-msgid "Ratio"
-msgstr "Cymhareb"
-
-#: ../bin/cselect.c:1032
-msgid "Do not resize track"
-msgstr "Peidiwch â newid maint y trac"
-
-#: ../bin/cselect.c:1036
-msgid "Rescale by:"
-msgstr "Ail-lunio gan:"
-
-#: ../bin/cselect.c:1038
-msgid "From:"
-msgstr "O:"
-
-#: ../bin/cselect.c:1042
-msgid "To: "
-msgstr "I:"
-
-#: ../bin/cselect.c:1109
-msgid "Rescale Tracks"
-msgstr "Traciau Ail-lunio"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:473
-#: ../bin/cselect.c:1252 ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1239
-msgid "Rescale"
-msgstr "Ail-lunio"
-
-#: ../bin/cselect.c:1597
+#: ../bin/cselect.c:1471
msgid "Cornu too tight - it was deleted"
msgstr "Cornu yn rhy dynn, cafodd ei ddileu"
-#: ../bin/cselect.c:1652
+#: ../bin/cselect.c:1526
msgid "Move To Join"
msgstr "Symud i Ymuno"
-#: ../bin/cselect.c:1844
+#: ../bin/cselect.c:1735
msgid "Drag to move selected tracks - Shift+Ctrl+Arrow micro-steps the move"
msgstr ""
"Llusgwch i symud traciau dethol - mae Shift + Ctrl + Arrow yn cam-symud y "
"symud"
-#: ../bin/cselect.c:1865 ../bin/cselect.c:1994 ../bin/cselect.c:2370
+#: ../bin/cselect.c:1756 ../bin/cselect.c:1890 ../bin/cselect.c:2295
msgid "Move Tracks"
msgstr "Symud Traciau"
-#: ../bin/cselect.c:2043
+#: ../bin/cselect.c:1939
msgid "Align: Click on a selected object to be aligned"
msgstr "Alinio: Cliciwch ar wrthrych a ddewiswyd i'w alinio"
-#: ../bin/cselect.c:2081
+#: ../bin/cselect.c:1978
msgid "Drag to rotate selected tracks, Shift+RightClick for QuickRotate Menu"
msgstr ""
"Llusgwch i gylchdroi traciau dethol, Shift + De-gliciwch ar gyfer Dewislen "
"Cylchdroi Cyflym"
-#: ../bin/cselect.c:2097 ../bin/cselect.c:2441
+#: ../bin/cselect.c:1994 ../bin/cselect.c:2370
msgid "Rotate Tracks"
msgstr "Cylchdroi Traciau"
-#: ../bin/cselect.c:2111
+#: ../bin/cselect.c:2009
msgid "Center of Rotation snapped to Turntable center"
msgstr "Canolfan Cylchdroi yn sownd i ganolfan Turntable"
-#: ../bin/cselect.c:2153 ../bin/cselect.c:2184
+#: ../bin/cselect.c:2055 ../bin/cselect.c:2090
#, c-format
msgid "Angle %0.3f"
msgstr "Ongle %0.3f"
-#: ../bin/cselect.c:2240
+#: ../bin/cselect.c:2154
#, c-format
msgid "Angle %0.3f #%ld"
msgstr "Ongle %0.3f #%ld"
-#: ../bin/cselect.c:2242
+#: ../bin/cselect.c:2156
#, c-format
msgid "Angle %0.3f %s"
msgstr "Ongle %0.3f %s"
-#: ../bin/cselect.c:2247
+#: ../bin/cselect.c:2162
msgid "Origin Set. Drag away to set start angle"
msgstr "Tarddiad wedi'i osod. Llusgwch i ffwrdd i osod ongl gychwyn"
-#: ../bin/cselect.c:2261
+#: ../bin/cselect.c:2177
msgid "Align: Click on the 2nd unselected object"
msgstr "Alinio: Cliciwch ar yr 2il wrthrych nas dewiswyd"
-#: ../bin/cselect.c:2381
+#: ../bin/cselect.c:2307
msgid "In module layer:"
msgstr "Yn haen y modiwl:"
-#: ../bin/cselect.c:2388
+#: ../bin/cselect.c:2315
msgid "Frozen Layer:"
msgstr "Haen wedi'i rewi"
-#: ../bin/cselect.c:2392
+#: ../bin/cselect.c:2319
msgid "Not found"
msgstr "Heb ei ddarganfod"
-#: ../bin/cselect.c:2428
+#: ../bin/cselect.c:2356
msgid "Multiple Selected"
msgstr "Dewis Lluosog"
-#: ../bin/cselect.c:2454
+#: ../bin/cselect.c:2383
msgid "Toggle Detail"
msgstr "Toglo Manylion"
-#: ../bin/cselect.c:2469
+#: ../bin/cselect.c:2399
msgid "Toggle Label"
msgstr "Label Ymlaen / Diffodd"
-#: ../bin/cselect.c:2632
+#: ../bin/cselect.c:2572
msgid "Elevation description"
msgstr "Disgrifiad drychiad"
-#: ../bin/cselect.c:2639
+#: ../bin/cselect.c:2579
msgid "Hidden description - 's' to Show, 'd' Details"
msgstr "Disgrifiad cudd - 's' i'w Ddangos, 'd' Manylion"
-#: ../bin/cselect.c:2642
+#: ../bin/cselect.c:2582
msgid "Shown description - 'h' to Hide"
msgstr "Disgrifiad wedi'i ddangos - 'h' i'w Cuddio"
-#: ../bin/cselect.c:2650
+#: ../bin/cselect.c:2590
msgid "Select and drag a description"
msgstr "Dewis a llusgo disgrifiad"
-#: ../bin/cselect.c:2689
+#: ../bin/cselect.c:2632
msgid "Hidden Label - Drag to reveal"
msgstr "Label Cudd - Llusgwch i ddatgelu"
-#: ../bin/cselect.c:2691
+#: ../bin/cselect.c:2634
msgid "Drag label"
msgstr "Llusgwch label"
-#: ../bin/cselect.c:2699
+#: ../bin/cselect.c:2644
msgid "Move Label"
msgstr "Symud label"
-#: ../bin/cselect.c:2736
+#: ../bin/cselect.c:2683
msgid "To Hide, use Context Menu"
msgstr "I Guddio, defnyddiwch Ddewislen Cyd-destun"
-#: ../bin/cselect.c:2769 ../bin/cselect.c:3692
+#: ../bin/cselect.c:2717 ../bin/cselect.c:3715
msgid "Show/Hide Description"
msgstr "Dangos / Cuddio Disgrifiad"
-#: ../bin/cselect.c:2770
+#: ../bin/cselect.c:2720
msgid "Toggle Detailed Description"
msgstr "Toglo disgrifiad manwl"
-#: ../bin/cselect.c:2851
+#: ../bin/cselect.c:2804
msgid "Drag to mark mirror line"
msgstr "Llusgwch i dynnu llinell ddrych"
-#: ../bin/cselect.c:2862
+#: ../bin/cselect.c:2815
#, c-format
msgid "Angle %0.2f"
msgstr "Ongle %0.2f"
-#: ../bin/cselect.c:2865
+#: ../bin/cselect.c:2818
msgid "Flip Tracks"
msgstr "Cefn Traciau"
-#: ../bin/cselect.c:3056 ../bin/cselect.c:3243
+#: ../bin/cselect.c:3014 ../bin/cselect.c:3215
msgid "Track is in Frozen Layer"
msgstr "Mae'r trac mewn haen wedi'i rewi"
-#: ../bin/cselect.c:3216
+#: ../bin/cselect.c:3188
msgid "Select track"
msgstr "Dewiswch Trac"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:439
-#: ../bin/cselect.c:3628 ../bin/dcar.c:1663 ../bin/doption.c:236
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1171
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:439
+#: ../bin/cselect.c:3627 ../bin/dcar.c:1765 ../bin/doption.c:245
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1190
msgid "Select"
msgstr "Dewiswch"
-#: ../bin/cselect.c:3647 ../bin/cselect.c:3668 ../bin/misc.c:2439
+#: ../bin/cselect.c:3654 ../bin/cselect.c:3683 ../bin/menu.c:932
msgid "Undo"
msgstr "Dadwneud"
-#: ../bin/cselect.c:3648 ../bin/cselect.c:3669 ../bin/misc.c:2441
+#: ../bin/cselect.c:3655 ../bin/cselect.c:3684 ../bin/menu.c:934
msgid "Redo"
msgstr "Ail-wneud"
-#: ../bin/cselect.c:3655 ../bin/cselect.c:3673 ../bin/draw.c:3206
+#: ../bin/cselect.c:3665 ../bin/cselect.c:3688 ../bin/draw.c:3500
msgid "Zoom to extents - 'e'"
msgstr "Chwyddo i raddau - 'e'"
-#: ../bin/cselect.c:3656 ../bin/draw.c:3217 ../bin/misc.c:2646
+#: ../bin/cselect.c:3667 ../bin/draw.c:3522 ../bin/menu.c:1163
msgid "&Zoom"
msgstr "&Chwyddo"
-#: ../bin/cselect.c:3659 ../bin/draw.c:3216
+#: ../bin/cselect.c:3670 ../bin/draw.c:3520
msgid "Pan to Origin - 'o'/'0'"
msgstr "Wedi'i osod i darddiad - 'o'/'0'"
-#: ../bin/cselect.c:3660 ../bin/cselect.c:3675
+#: ../bin/cselect.c:3672 ../bin/cselect.c:3692
msgid "Pan Center Here - 'c'"
msgstr "Gosod canol yma - 'c'"
-#: ../bin/cselect.c:3663 ../bin/misc.c:2482 ../bin/misc.c:2623
+#: ../bin/cselect.c:3677 ../bin/menu.c:977 ../bin/menu.c:1126
msgid "Select Current Layer"
msgstr "Dewiswch haen gyfredol"
-#: ../bin/cselect.c:3674
+#: ../bin/cselect.c:3690
msgid "Zoom to selected - 's'"
msgstr "Chwyddo i ddethol - 's'"
-#: ../bin/cselect.c:3678 ../bin/misc.c:2484
+#: ../bin/cselect.c:3696 ../bin/menu.c:979
msgid "Deselect All"
msgstr "Dad-ddewiswch bawb"
-#: ../bin/cselect.c:3680
+#: ../bin/cselect.c:3699
msgid "Properties -'?'"
msgstr "Priodweddau -'?'"
-#: ../bin/cselect.c:3681
+#: ../bin/cselect.c:3701
msgid "Modify/Activate Track"
msgstr "Addasu / Ysgogi trac"
-#: ../bin/cselect.c:3683 ../bin/misc.c:2470
+#: ../bin/cselect.c:3704 ../bin/menu.c:965
msgid "Cut"
msgstr "Torri"
-#: ../bin/cselect.c:3684 ../bin/misc.c:2472
+#: ../bin/cselect.c:3705 ../bin/menu.c:967
msgid "Copy"
msgstr "Copi"
-#: ../bin/cselect.c:3685 ../bin/fileio.c:1591 ../bin/misc.c:2474
+#: ../bin/cselect.c:3706 ../bin/fileio.c:1730 ../bin/menu.c:969
msgid "Paste"
msgstr "Gludo"
-#: ../bin/cselect.c:3686 ../bin/misc.c:2476
+#: ../bin/cselect.c:3707 ../bin/menu.c:971
msgid "Clone"
msgstr "Clôn"
-#: ../bin/cselect.c:3688
+#: ../bin/cselect.c:3709
msgid "Rotate..."
msgstr "Cylchdroi .."
-#: ../bin/cselect.c:3690
+#: ../bin/cselect.c:3711
msgid "Align"
msgstr "Alinio"
-#: ../bin/cselect.c:3694
+#: ../bin/cselect.c:3717 ../bin/menu.c:1142
+msgid "Ties/NoTies"
+msgstr "Cwsgwyr / Dim Cysgu"
+
+#: ../bin/cselect.c:3719
msgid "Hide/NoHide"
msgstr "Cuddio / Sioe"
-#: ../bin/cselect.c:3695
+#: ../bin/cselect.c:3721
msgid "Bridge/NoBridge"
msgstr "Pont / Dim Pont"
-#: ../bin/cselect.c:3696
+#: ../bin/cselect.c:3723
+msgid "Roadbed/NoRoadbed"
+msgstr ""
+
+#: ../bin/cselect.c:3725
msgid "NoTies/Ties"
msgstr "Cwsgwyr / Dim Cysgu"
-#: ../bin/cselect.c:3697
+#: ../bin/cselect.c:3727
msgid "Thickness..."
msgstr "Trwch..."
-#: ../bin/cselect.c:3698 ../bin/misc.c:2636
+#: ../bin/cselect.c:3728 ../bin/menu.c:1150
msgid "Thin Tracks"
msgstr "Traciau tenau"
-#: ../bin/cselect.c:3699 ../bin/misc.c:2637
+#: ../bin/cselect.c:3730 ../bin/menu.c:1152
msgid "Medium Tracks"
msgstr "Traciau canolig"
-#: ../bin/cselect.c:3700 ../bin/misc.c:2638
+#: ../bin/cselect.c:3732 ../bin/menu.c:1154
msgid "Thick Tracks"
msgstr "Traciau trwchus"
-#: ../bin/cselect.c:3705
+#: ../bin/cselect.c:3741
msgid "Dash-Dotted Line"
msgstr "Llinell doredig dot"
-#: ../bin/cselect.c:3706
+#: ../bin/cselect.c:3743
msgid "Dash-Dot-Dotted Line"
msgstr "Llinell doredig Dash-Dot"
-#: ../bin/cselect.c:3708
+#: ../bin/cselect.c:3746
msgid "Move To Front"
msgstr "Symud i'r blaen"
-#: ../bin/cselect.c:3709
+#: ../bin/cselect.c:3747
msgid "Move To Back"
msgstr "Symud yn ôl"
-#: ../bin/cselect.c:3711
+#: ../bin/cselect.c:3749
msgid "Group"
msgstr "Grŵp"
-#: ../bin/cselect.c:3712
+#: ../bin/cselect.c:3750
msgid "UnGroup"
msgstr "Di-grŵp"
-#: ../bin/cselect.c:3744
+#: ../bin/cselect.c:3796
msgid "Move Description"
msgstr "Symud Disgrifiad"
-#: ../bin/cselect.c:3751 ../bin/misc.c:2072 ../bin/misc.c:2491
+#: ../bin/cselect.c:3804 ../bin/menu.c:294 ../bin/menu.c:986
msgid "Move"
msgstr "Symud"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:484
-#: ../bin/cselect.c:3753 ../bin/misc.c:2049 ../bin/misc.c:2493
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1261
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:484
+#: ../bin/cselect.c:3807 ../bin/menu.c:271 ../bin/menu.c:988
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1280
msgid "Rotate"
msgstr "Cylchdroi"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:485
-#: ../bin/cselect.c:3755 ../bin/dcar.c:2208
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1263
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:485
+#: ../bin/cselect.c:3810 ../bin/dcar.c:2327
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1282
msgid "Flip"
msgstr "Gwrthdroi"
-#: ../bin/csensor.c:213
+#: ../bin/csensor.c:214
msgid "Change Sensor"
msgstr "Newid Synhwyrydd"
-#: ../bin/csensor.c:259 ../bin/csensor.c:590
+#: ../bin/csensor.c:261 ../bin/csensor.c:599
msgid "Sensor"
msgstr "Synhwyrydd"
-#: ../bin/csensor.c:404
+#: ../bin/csensor.c:407
msgid "Create Sensor"
msgstr "Creu Synhwyrydd"
-#: ../bin/csensor.c:407
+#: ../bin/csensor.c:410
msgid "Modify Sensor"
msgstr "Addasu Synhwyrydd"
-#: ../bin/csensor.c:440
+#: ../bin/csensor.c:445
msgid "Edit sensor"
msgstr "Golygu Synhwyrydd"
-#: ../bin/csensor.c:478
+#: ../bin/csensor.c:483
msgid "Place sensor"
msgstr "Rhowch Synhwyrydd"
-#: ../bin/csignal.c:238
-msgid "Number Of Heads"
-msgstr "Nifer y Penaethiaid"
-
-#: ../bin/csignal.c:277
-msgid "Change Signal"
-msgstr "Newid Arwydd"
-
-#: ../bin/csignal.c:311
-#, c-format
-msgid "(%d [%s]): Layer=%u, %d heads at %0.3f,%0.3f A%0.3f"
-msgstr "(%d [%s]): Haen=%u, %d pennau yn %0.3f,%0.3f A%0.3f"
-
-#: ../bin/csignal.c:322 ../bin/csignal.c:908
-msgid "Signal"
-msgstr "Arwydd"
-
-#: ../bin/csignal.c:514
-msgid "Number of Heads"
-msgstr "Nifer y Penaethiaid"
-
-#: ../bin/csignal.c:519
-msgid "Edit Aspect"
-msgstr "Golygu Agwedd"
-
-#: ../bin/csignal.c:521
-msgid "Add Aspect"
-msgstr "Ychwanegu Agwedd"
-
-#: ../bin/csignal.c:523
-msgid "Delete Aspect"
-msgstr "Dileu Agwedd"
-
-#: ../bin/csignal.c:536
-msgid "Aspect Index"
-msgstr "Mynegai Agweddau"
-
-#: ../bin/csignal.c:551
-msgid "Create Signal"
-msgstr "Creu Arwydd"
-
-#: ../bin/csignal.c:555
-msgid "Modify Signal"
-msgstr "Addasu Arwydd"
-
-#: ../bin/csignal.c:662
-msgid "Edit aspect"
-msgstr "Golygu Agwedd"
-
-#: ../bin/csignal.c:709
-#, c-format
-msgid "Are you sure you want to delete the %d aspect(s)"
-msgstr "Ydych chi'n siŵr eich bod chi am ddileu'r %d agwedd(au) "
-
-#: ../bin/csignal.c:730
-msgid "Edit signal"
-msgstr "Golygu Arwydd"
-
-#: ../bin/csignal.c:792
-msgid "Place base of signal"
-msgstr "Rhowch sylfaen y signal"
-
-#: ../bin/csignal.c:800
-msgid "Drag to orient signal"
-msgstr "Llusgwch i gyfeiriadu signal"
-
-#: ../bin/csnap.c:489
+#: ../bin/csnap.c:530
msgid "Horz"
msgstr "Llor"
-#: ../bin/csnap.c:491
+#: ../bin/csnap.c:532
msgid "Spacing"
msgstr "Bylchau"
-#: ../bin/csnap.c:493
+#: ../bin/csnap.c:534
msgid "Divisions"
msgstr "Rhaniadau"
-#: ../bin/csnap.c:496
+#: ../bin/csnap.c:537
msgid "Enable"
msgstr "Galluogi"
-#: ../bin/csnap.c:497
+#: ../bin/csnap.c:538
msgid "Vert"
msgstr "Fertigol"
-#: ../bin/csnap.c:506 ../bin/dease.c:74
+#: ../bin/csnap.c:547 ../bin/dease.c:78
msgid "X"
msgstr "X"
-#: ../bin/csnap.c:510
+#: ../bin/csnap.c:551
msgid "A"
msgstr "A"
-#: ../bin/csnap.c:513
+#: ../bin/csnap.c:554
msgid "Show"
msgstr "Ddangos"
-#: ../bin/csnap.c:752
+#: ../bin/csnap.c:815
msgid "Change Grid..."
msgstr "Newid grid ..."
@@ -2878,150 +2802,220 @@ msgstr "Newid grid ..."
msgid "Set Block Gaps"
msgstr "Gosod bylchau bloc"
-#: ../bin/csplit.c:132
-msgid "Select track to split"
+#: ../bin/csplit.c:137
+#, fuzzy
+msgid "Select track and position for split"
msgstr "Dewiswch drac i'w hollti"
-#: ../bin/csplit.c:155
+#: ../bin/csplit.c:161
msgid "Can't Split that Track Object"
msgstr "Methu rhannu'r trac hwnnw"
-#: ../bin/csplit.c:163 ../bin/csplit.c:175 ../bin/csplit.c:474
+#: ../bin/csplit.c:169 ../bin/csplit.c:182 ../bin/csplit.c:505
msgid "Split Track"
msgstr "Trac hollt"
-#: ../bin/csplit.c:171 ../bin/csplit.c:294 ../bin/csplit.c:381
+#: ../bin/csplit.c:178 ../bin/csplit.c:322 ../bin/csplit.c:410
msgid "Can't Split that Draw Object"
msgstr "Methu rhannu'r gwrthrych tynnu hwnnw"
-#: ../bin/csplit.c:181
+#: ../bin/csplit.c:188
msgid "No Track to Split"
msgstr "Dim Trac i'w Hollti"
-#: ../bin/csplit.c:194 ../bin/dbench.c:64 ../bin/dbench.c:75
+#: ../bin/csplit.c:203 ../bin/dbench.c:65 ../bin/dbench.c:77
msgid "Left"
msgstr "Chwith"
-#: ../bin/csplit.c:195 ../bin/dbench.c:65 ../bin/dbench.c:74
+#: ../bin/csplit.c:205 ../bin/dbench.c:66 ../bin/dbench.c:76
msgid "Right"
msgstr "Reit"
-#: ../bin/csplit.c:196 ../bin/csplit.c:201
+#: ../bin/csplit.c:207 ../bin/csplit.c:216
msgid "Both"
msgstr "Y ddau"
-#: ../bin/csplit.c:199
+#: ../bin/csplit.c:212
msgid "Top"
msgstr "Uchaf"
-#: ../bin/csplit.c:200
+#: ../bin/csplit.c:214
msgid "Bottom"
msgstr "Gwaelod"
-#: ../bin/csplit.c:280
+#: ../bin/csplit.c:307
msgid "Select draw to split"
msgstr "Dewiswch dynnu i'w rannu"
-#: ../bin/csplit.c:298 ../bin/csplit.c:475
+#: ../bin/csplit.c:326 ../bin/csplit.c:508
msgid "Split Draw"
msgstr "Tynnu Hollt"
-#: ../bin/csplit.c:304
+#: ../bin/csplit.c:332
msgid "No Draw to Split"
msgstr "Dim Tynnu i'w Hollti"
-#: ../bin/csplit.c:342
+#: ../bin/csplit.c:371
msgid "Select the draw object to Trim to"
msgstr "Dewiswch y gwrthrych tynnu i Trimio ag ef"
-#: ../bin/csplit.c:357
+#: ../bin/csplit.c:387
msgid "Can't Trim with a Track"
msgstr "Methu Trimio gyda thrac"
-#: ../bin/csplit.c:362
+#: ../bin/csplit.c:392
msgid "Select an intersecting draw object to Trim"
msgstr "Dewiswch wrthrych tynnu croestoriadol i Trim"
-#: ../bin/csplit.c:368
+#: ../bin/csplit.c:397
msgid "No Draw to Trim with"
msgstr "Dim Tynnu i Drimio gyda"
-#: ../bin/csplit.c:375
+#: ../bin/csplit.c:404
msgid "Can't Split a track object"
msgstr "Methu Rhannu gwrthrych trac"
-#: ../bin/csplit.c:403 ../bin/csplit.c:476
+#: ../bin/csplit.c:432 ../bin/csplit.c:511
msgid "Trim Draw"
msgstr "Tynnu trim"
-#: ../bin/csplit.c:408
+#: ../bin/csplit.c:437
msgid "Select another draw object to Trim, or Space to Deselect"
msgstr "Dewiswch wrthrych tynnu arall i Trim, neu Space to Deselect"
-#: ../bin/csplit.c:473
+#: ../bin/csplit.c:504
msgid "Split"
msgstr "Hollti"
-#: ../bin/cstraigh.c:75
+#: ../bin/csignal.c:239
+msgid "Number Of Heads"
+msgstr "Nifer y Penaethiaid"
+
+#: ../bin/csignal.c:279
+msgid "Change Signal"
+msgstr "Newid Arwydd"
+
+#: ../bin/csignal.c:314
+#, c-format
+msgid "(%d [%s]): Layer=%u, %d heads at %0.3f,%0.3f A%0.3f"
+msgstr "(%d [%s]): Haen=%u, %d pennau yn %0.3f,%0.3f A%0.3f"
+
+#: ../bin/csignal.c:325 ../bin/csignal.c:931
+msgid "Signal"
+msgstr "Arwydd"
+
+#: ../bin/csignal.c:518
+msgid "Number of Heads"
+msgstr "Nifer y Penaethiaid"
+
+#: ../bin/csignal.c:523
+msgid "Edit Aspect"
+msgstr "Golygu Agwedd"
+
+#: ../bin/csignal.c:525
+msgid "Add Aspect"
+msgstr "Ychwanegu Agwedd"
+
+#: ../bin/csignal.c:527
+msgid "Delete Aspect"
+msgstr "Dileu Agwedd"
+
+#: ../bin/csignal.c:540
+msgid "Aspect Index"
+msgstr "Mynegai Agweddau"
+
+#: ../bin/csignal.c:555
+msgid "Create Signal"
+msgstr "Creu Arwydd"
+
+#: ../bin/csignal.c:560
+msgid "Modify Signal"
+msgstr "Addasu Arwydd"
+
+#: ../bin/csignal.c:677
+msgid "Edit aspect"
+msgstr "Golygu Agwedd"
+
+#: ../bin/csignal.c:724
+#, c-format
+msgid "Are you sure you want to delete the %d aspect(s)"
+msgstr "Ydych chi'n siŵr eich bod chi am ddileu'r %d agwedd(au) "
+
+#: ../bin/csignal.c:747
+msgid "Edit signal"
+msgstr "Golygu Arwydd"
+
+#: ../bin/csignal.c:811
+msgid "Place base of signal"
+msgstr "Rhowch sylfaen y signal"
+
+#: ../bin/csignal.c:819
+msgid "Drag to orient signal"
+msgstr "Llusgwch i gyfeiriadu signal"
+
+#: ../bin/cstraigh.c:77
msgid "Place 1st endpoint of straight track, snap to unconnected endpoint"
msgstr "Rhowch ddiweddbwynt 1af y trac syth, snap i'r pwynt terfyn digyswllt"
-#: ../bin/cstraigh.c:103
+#: ../bin/cstraigh.c:105
msgid "Drag to place 2nd end point"
msgstr "Llusgwch i osod 2il bwynt gorffen"
-#: ../bin/cstraigh.c:149
+#: ../bin/cstraigh.c:151
#, c-format
msgid "Straight Track Length=%s Angle=%0.3f"
msgstr "Hyd Trac Syth=%s Ongle=%0.3f"
-#: ../bin/cstraigh.c:200 ../bin/tstraigh.c:225
+#: ../bin/cstraigh.c:204 ../bin/tstraigh.c:245
msgid "Straight Track"
msgstr "Trac Syth"
-#: ../bin/cstruct.c:64 ../bin/cturnout.c:84 ../bin/doption.c:91
-#: ../bin/doption.c:241
+#: ../bin/cstruct.c:67 ../bin/cturnout.c:86 ../bin/doption.c:93
+#: ../bin/doption.c:250
msgid "Hide"
msgstr "Cuddio"
-#: ../bin/cstruct.c:479 ../bin/cstruct.c:506
+#: ../bin/cstruct.c:505 ../bin/cstruct.c:535
msgid "Pier Number"
msgstr "Rhif y Pier"
-#: ../bin/cstruct.c:591
+#: ../bin/cstruct.c:627
#, c-format
msgid "Scale %d:1"
msgstr "Graddfa %d:1"
-#: ../bin/cstruct.c:593
+#: ../bin/cstruct.c:629
#, c-format
msgid "Width %s"
msgstr "Lled %s"
-#: ../bin/cstruct.c:595
+#: ../bin/cstruct.c:631
#, c-format
msgid "Height %s"
msgstr "Uchder %s"
-#: ../bin/cstruct.c:735
+#: ../bin/cstruct.c:779
msgid "Place Structure"
msgstr "Strwythur Lle"
-#: ../bin/cstruct.c:828
+#: ../bin/cstruct.c:851 ../bin/cstruct.c:904 ../bin/drawgeom.c:304
+msgid "+Alt for Magnetic Snap"
+msgstr "+Alt ar gyfer Snap Magnetig"
+
+#: ../bin/cstruct.c:853 ../bin/cstruct.c:906 ../bin/drawgeom.c:306
+msgid "+Alt to inhibit Magnetic Snap"
+msgstr "+Alt i atal Snap Magnetig"
+
+#: ../bin/cstruct.c:888
msgid "Drag to place"
msgstr "Llusgwch i'w le"
-#: ../bin/cstruct.c:850
+#: ../bin/cstruct.c:921
msgid "Drag to rotate"
msgstr "Llusgwch i gylchdroi"
-#: ../bin/cstruct.c:870
-#, c-format
-msgid "Angle = %0.3f"
-msgstr "Ongle = %0.3f"
-
-#: ../bin/cstruct.c:880 ../bin/cstruct.c:1126 ../bin/cturnout.c:4699
-#: ../bin/cturnout.c:4751 ../bin/cturnout.c:4882 ../bin/cturnout.c:5021
+#: ../bin/cstruct.c:952 ../bin/cstruct.c:1222 ../bin/cturnout.c:2812
+#: ../bin/cturnout.c:2871 ../bin/cturnout.c:3015 ../bin/cturnout.c:3162
msgid ""
"Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter "
"to accept, Esc to Cancel"
@@ -3029,15 +3023,15 @@ msgstr ""
"Llusg-Chwith i'w gosod, Ctrl + Llusg Chwith neu Llusgwch Dde i Gylchdroi, "
"Gofod neu Fynd i dderbyn, Esc i Ganslo"
-#: ../bin/cstruct.c:953 ../bin/cturnout.c:4836 ../bin/param.c:2721
+#: ../bin/cstruct.c:1031 ../bin/cturnout.c:2963 ../bin/param.c:3013
msgid "Close"
msgstr "Caewch"
-#: ../bin/cstruct.c:970
+#: ../bin/cstruct.c:1049
msgid "Select Structure and then drag to place"
msgstr "Dewiswch Strwythur ac yna llusgwch i'w le"
-#: ../bin/cstruct.c:1009
+#: ../bin/cstruct.c:1091
msgid ""
"Left drag to move, right drag to rotate, or press Return or click Ok to "
"finalize"
@@ -3045,13 +3039,12 @@ msgstr ""
"Llusgwch chwith i symud, llusgwch y dde i gylchdroi, neu pwyswch Return neu "
"cliciwch Ok i gwblhau"
-#: ../bin/cstruct.c:1096 ../bin/cturnout.c:4988
+#: ../bin/cstruct.c:1184 ../bin/cturnout.c:3127
#, c-format
msgid "Place %s and draw into position"
msgstr "LLe %s a thynnu i'w safle"
-#: ../bin/cswitchmotor.c:92 ../bin/cswitchmotor.c:111
-#: ../bin/cswitchmotor.c:224
+#: ../bin/cswitchmotor.c:92 ../bin/cswitchmotor.c:111 ../bin/cswitchmotor.c:231
msgid "Point Sense"
msgstr "Synnwyr Pwynt"
@@ -3059,616 +3052,624 @@ msgstr "Synnwyr Pwynt"
msgid "Turnout Number"
msgstr "Rhif Pwynt Rheilffordd"
-#: ../bin/cswitchmotor.c:289
+#: ../bin/cswitchmotor.c:299
msgid "Change Switch Motor"
msgstr "Newid modur pwynt"
-#: ../bin/cswitchmotor.c:356
+#: ../bin/cswitchmotor.c:369
msgid "Switch motor"
msgstr "Modur pwynt"
-#: ../bin/cswitchmotor.c:472
+#: ../bin/cswitchmotor.c:499
#, c-format
msgid "ResolveSwitchmotor: Turnout T%d: T%d doesn't exist"
msgstr "ResolveSwitchmotor: Pwynt T%d: T%dddim yn bodoli"
-#: ../bin/cswitchmotor.c:541 ../bin/cswitchmotor.c:712
+#: ../bin/cswitchmotor.c:570 ../bin/cswitchmotor.c:746
msgid "Switch motor must have a name!"
msgstr "Rhaid bod enw i fodur pwynt!"
-#: ../bin/cswitchmotor.c:545
+#: ../bin/cswitchmotor.c:574
msgid "Create Switch Motor"
msgstr "Creu modur Point"
-#: ../bin/cswitchmotor.c:577
+#: ../bin/cswitchmotor.c:608
msgid "Create switch motor"
msgstr "Creu modur Point"
-#: ../bin/cswitchmotor.c:591 ../bin/cswitchmotor.c:623
-#: ../bin/cswitchmotor.c:655
+#: ../bin/cswitchmotor.c:624 ../bin/cswitchmotor.c:655
+#: ../bin/cswitchmotor.c:687
msgid "Select a turnout"
msgstr "Dewiswch bwynt"
-#: ../bin/cswitchmotor.c:599
+#: ../bin/cswitchmotor.c:632
msgid "Not a turnout!"
msgstr "Ddim yn bwynt!"
-#: ../bin/cswitchmotor.c:632 ../bin/cswitchmotor.c:663
+#: ../bin/cswitchmotor.c:664 ../bin/cswitchmotor.c:695
msgid "Not a switch motor!"
msgstr "Ddim yn fodur pwynt!"
-#: ../bin/cswitchmotor.c:668
+#: ../bin/cswitchmotor.c:700
#, c-format
msgid "Really delete switch motor %s?"
msgstr "Dileu modur switsh mewn gwirionedd %s?"
-#: ../bin/cswitchmotor.c:669
+#: ../bin/cswitchmotor.c:702
msgid "Delete Switch Motor"
msgstr "Dileu modur pwynt"
-#: ../bin/cswitchmotor.c:716
+#: ../bin/cswitchmotor.c:750
msgid "Modify Switch Motor"
msgstr "Addasu modur pwynt"
-#: ../bin/cswitchmotor.c:742
+#: ../bin/cswitchmotor.c:776
msgid "Edit switch motor"
msgstr "Golygu modur pwynt"
-#: ../bin/cswitchmotor.c:748
+#: ../bin/cswitchmotor.c:782
#, c-format
msgid "Edit switch motor %d"
msgstr "Golygu modur pwynt %d"
-#: ../bin/cswitchmotor.c:852
+#: ../bin/cswitchmotor.c:889
msgid "Switch Motor"
msgstr "Modur pwynt"
-#: ../bin/cswitchmotor.c:865
+#: ../bin/cswitchmotor.c:903
#, c-format
msgid "Deleting Switch Motor %s"
msgstr "Dileu modur pwynt %s"
-#: ../bin/ctext.c:194 ../bin/ctext.c:239
+#: ../bin/ctext.c:194 ../bin/ctext.c:242
msgid "Create Text"
msgstr "Creu Testun"
-#: ../bin/ctext.c:270
+#: ../bin/ctext.c:277
msgid "Fonts..."
msgstr "Ffontiau..."
-#: ../bin/ctodesgn.c:135
+#: ../bin/ctodesgn.c:139
msgid "Frog #"
msgstr "Broga #"
-#: ../bin/ctodesgn.c:135
+#: ../bin/ctodesgn.c:139
msgid "Degrees"
msgstr "Graddau"
-#: ../bin/ctodesgn.c:136
+#: ../bin/ctodesgn.c:140
msgid "Dual Path"
msgstr "Llwybr deuol"
-#: ../bin/ctodesgn.c:136
+#: ../bin/ctodesgn.c:140
msgid "Quad Path"
msgstr "Llwybr cwad"
-#: ../bin/ctodesgn.c:174 ../bin/ctodesgn.c:175 ../bin/ctodesgn.c:176
-#: ../bin/ctodesgn.c:177 ../bin/ctodesgn.c:237 ../bin/ctodesgn.c:260
-#: ../bin/ctodesgn.c:262 ../bin/ctodesgn.c:297 ../bin/ctodesgn.c:300
-#: ../bin/ctodesgn.c:326 ../bin/ctodesgn.c:327 ../bin/ctodesgn.c:363
-#: ../bin/ctodesgn.c:366 ../bin/ctodesgn.c:392 ../bin/ctodesgn.c:394
-#: ../bin/ctodesgn.c:433 ../bin/ctodesgn.c:437 ../bin/ctodesgn.c:440
-#: ../bin/ctodesgn.c:652
+#: ../bin/ctodesgn.c:182 ../bin/ctodesgn.c:183 ../bin/ctodesgn.c:184
+#: ../bin/ctodesgn.c:185 ../bin/ctodesgn.c:244 ../bin/ctodesgn.c:270
+#: ../bin/ctodesgn.c:272 ../bin/ctodesgn.c:316 ../bin/ctodesgn.c:319
+#: ../bin/ctodesgn.c:350 ../bin/ctodesgn.c:351 ../bin/ctodesgn.c:395
+#: ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:428 ../bin/ctodesgn.c:430
+#: ../bin/ctodesgn.c:477 ../bin/ctodesgn.c:481 ../bin/ctodesgn.c:484
+#: ../bin/ctodesgn.c:742
msgid "Offset"
msgstr "Gwrthbwyso"
-#: ../bin/ctodesgn.c:195 ../bin/ctodesgn.c:2934 ../bin/ctodesgn.c:2935
+#: ../bin/ctodesgn.c:203 ../bin/ctodesgn.c:3204 ../bin/ctodesgn.c:3205
msgid "Left Description"
msgstr "Disgrifiad Chwith"
-#: ../bin/ctodesgn.c:196 ../bin/ctodesgn.c:199
+#: ../bin/ctodesgn.c:204 ../bin/ctodesgn.c:207
msgid " #"
msgstr " #"
-#: ../bin/ctodesgn.c:198 ../bin/ctodesgn.c:2933
+#: ../bin/ctodesgn.c:206 ../bin/ctodesgn.c:3203
msgid "Right Description"
msgstr "Disgrifiad Cywir"
-#: ../bin/ctodesgn.c:200
+#: ../bin/ctodesgn.c:208
msgid "Roadbed Width"
msgstr "Lled gwely ffordd"
-#: ../bin/ctodesgn.c:204 ../bin/denum.c:52
+#: ../bin/ctodesgn.c:212 ../bin/denum.c:52
msgid "Print Setup"
msgstr "Gosodiadau Argraffu"
-#: ../bin/ctodesgn.c:235
+#: ../bin/ctodesgn.c:242
msgid "Diverging Length"
msgstr "Hyd Amrywiol"
-#: ../bin/ctodesgn.c:236
+#: ../bin/ctodesgn.c:243
msgid "Diverging Angle"
msgstr "Ongl Plymio"
-#: ../bin/ctodesgn.c:237
+#: ../bin/ctodesgn.c:244
msgid "Diverging Offset"
msgstr "Gwrthbwyso Amrywiol"
-#: ../bin/ctodesgn.c:238
+#: ../bin/ctodesgn.c:245
msgid "Overall Length"
msgstr "Hyd Cyffredinol"
-#: ../bin/ctodesgn.c:248
+#: ../bin/ctodesgn.c:257
msgid "Regular Turnout"
msgstr "Pwynt Rheolaidd"
-#: ../bin/ctodesgn.c:258 ../bin/ctodesgn.c:295
+#: ../bin/ctodesgn.c:268 ../bin/ctodesgn.c:314
msgid "Inner Length"
msgstr "Hyd Mewnol"
-#: ../bin/ctodesgn.c:259 ../bin/ctodesgn.c:296
+#: ../bin/ctodesgn.c:269 ../bin/ctodesgn.c:315
msgid "Inner Angle"
msgstr "Ongl Fewnol"
-#: ../bin/ctodesgn.c:260 ../bin/ctodesgn.c:297
+#: ../bin/ctodesgn.c:270 ../bin/ctodesgn.c:316
msgid "Inner Offset"
msgstr "Gwrthbwyso Mewnol"
-#: ../bin/ctodesgn.c:261 ../bin/ctodesgn.c:299
+#: ../bin/ctodesgn.c:271 ../bin/ctodesgn.c:318
msgid "Outer Angle"
msgstr "Ongl Allanol"
-#: ../bin/ctodesgn.c:262 ../bin/ctodesgn.c:300
+#: ../bin/ctodesgn.c:272 ../bin/ctodesgn.c:319
msgid "Outer Offset"
msgstr "Gwrthbwyso Allanol"
-#: ../bin/ctodesgn.c:263 ../bin/ctodesgn.c:302
+#: ../bin/ctodesgn.c:273 ../bin/ctodesgn.c:321
msgid "Outer Length"
msgstr "Hyd Allanol"
-#: ../bin/ctodesgn.c:285
+#: ../bin/ctodesgn.c:302
msgid "Curved Turnout"
msgstr "Pwynt Crwm"
-#: ../bin/ctodesgn.c:298
+#: ../bin/ctodesgn.c:317
msgid "Inner Radius"
msgstr "Radiws Mewnol"
-#: ../bin/ctodesgn.c:301
+#: ../bin/ctodesgn.c:320
msgid "Outer Radius"
msgstr "Radiws Allanol"
-#: ../bin/ctodesgn.c:303 ../bin/ctodesgn.c:370 ../bin/ctodesgn.c:445
+#: ../bin/ctodesgn.c:322 ../bin/ctodesgn.c:402 ../bin/ctodesgn.c:489
msgid "Toe Radius"
msgstr "Radiws bysedd traed"
-#: ../bin/ctodesgn.c:304 ../bin/ctodesgn.c:369
+#: ../bin/ctodesgn.c:323 ../bin/ctodesgn.c:401
msgid "Toe Length"
msgstr "Hyd bysedd traed"
-#: ../bin/ctodesgn.c:314
+#: ../bin/ctodesgn.c:336
msgid "Cornu Curved Turnout"
msgstr "Pwynt crwm Cornu"
-#: ../bin/ctodesgn.c:324 ../bin/ctodesgn.c:361 ../bin/ctodesgn.c:390
-#: ../bin/ctodesgn.c:431
+#: ../bin/ctodesgn.c:348 ../bin/ctodesgn.c:393 ../bin/ctodesgn.c:426
+#: ../bin/ctodesgn.c:475
msgid "Left Length"
msgstr "Hyd Chwith"
-#: ../bin/ctodesgn.c:325 ../bin/ctodesgn.c:362 ../bin/ctodesgn.c:391
-#: ../bin/ctodesgn.c:432
+#: ../bin/ctodesgn.c:349 ../bin/ctodesgn.c:394 ../bin/ctodesgn.c:427
+#: ../bin/ctodesgn.c:476
msgid "Left Angle"
msgstr "Ongle Chwith"
-#: ../bin/ctodesgn.c:326 ../bin/ctodesgn.c:363 ../bin/ctodesgn.c:392
-#: ../bin/ctodesgn.c:433
+#: ../bin/ctodesgn.c:350 ../bin/ctodesgn.c:395 ../bin/ctodesgn.c:428
+#: ../bin/ctodesgn.c:477
msgid "Left Offset"
msgstr "Gwrthbwyso Chwith"
-#: ../bin/ctodesgn.c:327 ../bin/ctodesgn.c:366 ../bin/ctodesgn.c:394
-#: ../bin/ctodesgn.c:440
+#: ../bin/ctodesgn.c:351 ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:430
+#: ../bin/ctodesgn.c:484
msgid "Right Offset"
msgstr "Gwrthbwyso Iawn"
-#: ../bin/ctodesgn.c:328 ../bin/ctodesgn.c:367 ../bin/ctodesgn.c:395
-#: ../bin/ctodesgn.c:441
+#: ../bin/ctodesgn.c:352 ../bin/ctodesgn.c:399 ../bin/ctodesgn.c:431
+#: ../bin/ctodesgn.c:485
msgid "Right Angle"
msgstr "Ongl Dde"
-#: ../bin/ctodesgn.c:329 ../bin/ctodesgn.c:368 ../bin/ctodesgn.c:396
-#: ../bin/ctodesgn.c:442
+#: ../bin/ctodesgn.c:353 ../bin/ctodesgn.c:400 ../bin/ctodesgn.c:432
+#: ../bin/ctodesgn.c:486
msgid "Right Length"
msgstr "Hyd Iawn"
-#: ../bin/ctodesgn.c:351
+#: ../bin/ctodesgn.c:381
msgid "Wye Turnout"
msgstr "Pwynt Gwy"
-#: ../bin/ctodesgn.c:364 ../bin/ctodesgn.c:434
+#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:478
msgid "Left Radius"
msgstr "Radiws Chwith"
-#: ../bin/ctodesgn.c:365 ../bin/ctodesgn.c:439
+#: ../bin/ctodesgn.c:397 ../bin/ctodesgn.c:483
msgid "Right Radius"
msgstr "Radiws Cywir"
-#: ../bin/ctodesgn.c:380
+#: ../bin/ctodesgn.c:414
msgid "Cornu Wye Turnout"
msgstr "Pwynt Gwy Cornu"
-#: ../bin/ctodesgn.c:421
+#: ../bin/ctodesgn.c:463
msgid "3-way Turnout"
msgstr "Pwynt 3-ffordd"
-#: ../bin/ctodesgn.c:435
+#: ../bin/ctodesgn.c:479
msgid "Center Length"
msgstr "Hyd y Ganolfan"
-#: ../bin/ctodesgn.c:436
+#: ../bin/ctodesgn.c:480
msgid "Center Angle"
msgstr "Ongl y Ganolfan"
-#: ../bin/ctodesgn.c:437 ../bin/dcar.c:2229
+#: ../bin/ctodesgn.c:481 ../bin/dcar.c:2348
msgid "Center Offset"
msgstr "Gwrthbwyso'r Ganolfan"
-#: ../bin/ctodesgn.c:438
+#: ../bin/ctodesgn.c:482
msgid "Center Radius"
msgstr "Radiws y Ganolfan"
-#: ../bin/ctodesgn.c:443
+#: ../bin/ctodesgn.c:487
msgid "Toe Length Left"
msgstr "Hyd y Toe Chwith"
-#: ../bin/ctodesgn.c:444
+#: ../bin/ctodesgn.c:488
msgid "Toe Length Right"
msgstr "Hyd y Toe yn iawn"
-#: ../bin/ctodesgn.c:456
+#: ../bin/ctodesgn.c:502
msgid "Cornu 3-way Turnout"
msgstr "Pwynt 3-ffordd Cornu"
-#: ../bin/ctodesgn.c:476
+#: ../bin/ctodesgn.c:527
msgid "Crossing"
msgstr "Groesfan"
-#: ../bin/ctodesgn.c:497
+#: ../bin/ctodesgn.c:552
msgid "Single Slipswitch"
msgstr "Pwynt Llithro Sengl"
-#: ../bin/ctodesgn.c:526
+#: ../bin/ctodesgn.c:587
msgid "Double Slipswitch"
msgstr "Pwynt Llithro Dwbl"
-#: ../bin/ctodesgn.c:546
+#: ../bin/ctodesgn.c:612
msgid "Right Crossover"
msgstr "Croesfan dde"
-#: ../bin/ctodesgn.c:566
+#: ../bin/ctodesgn.c:638
msgid "Left Crossover"
msgstr "Croesfan chwith"
-#: ../bin/ctodesgn.c:586
+#: ../bin/ctodesgn.c:663
msgid "Double Crossover"
msgstr "Croesfan ddwbl"
-#: ../bin/ctodesgn.c:604
+#: ../bin/ctodesgn.c:685
msgid "Straight Section"
msgstr "Adran Syth"
-#: ../bin/ctodesgn.c:615
+#: ../bin/ctodesgn.c:697
msgid "Angle (Degrees)"
msgstr "Ongl (Graddau)"
-#: ../bin/ctodesgn.c:623
+#: ../bin/ctodesgn.c:708
msgid "Curved Section"
msgstr "Adran Grom"
-#: ../bin/ctodesgn.c:642
+#: ../bin/ctodesgn.c:731
msgid "Bumper Section"
msgstr "Adran Clustogi"
-#: ../bin/ctodesgn.c:652 ../bin/denum.c:123 ../bin/denum.c:188
-#: ../bin/denum.c:220 ../bin/denum.c:221
+#: ../bin/ctodesgn.c:742 ../bin/denum.c:124 ../bin/denum.c:193
+#: ../bin/denum.c:230 ../bin/denum.c:231
msgid "Count"
msgstr "Cyfrif"
-#: ../bin/ctodesgn.c:653
+#: ../bin/ctodesgn.c:743
msgid "Radius1"
msgstr "Radiws1"
-#: ../bin/ctodesgn.c:654
+#: ../bin/ctodesgn.c:744
msgid "Radius2"
msgstr "Radiws2"
-#: ../bin/ctodesgn.c:734
+#: ../bin/ctodesgn.c:827
msgid "Turntable Section"
msgstr "Adran Trofwrdd "
-#: ../bin/ctodesgn.c:2571
+#: ../bin/ctodesgn.c:2777
#, c-format
msgid "%s Designer"
msgstr "%s Dylunydd"
-#: ../bin/ctodesgn.c:2574
+#: ../bin/ctodesgn.c:2780
#, c-format
msgid "%s %d x %d (of %d x %d)"
msgstr "%s %d x %d (o %d x %d)"
-#: ../bin/ctodesgn.c:2574
+#: ../bin/ctodesgn.c:2780
msgid "Page"
msgstr "Tudalen"
-#: ../bin/ctodesgn.c:2581
+#: ../bin/ctodesgn.c:2788
msgid "Frog Number"
msgstr "Rhif broga"
-#: ../bin/ctodesgn.c:2887
+#: ../bin/ctodesgn.c:3147
msgid "Turnout Designer"
msgstr "Dylunydd Pwynt"
-#: ../bin/ctodesgn.c:2897
+#: ../bin/ctodesgn.c:3160
#, c-format
msgid "%s %s Designer"
msgstr "%s %s Dylunydd"
-#: ../bin/ctrain.c:183 ../bin/dcar.c:2241 ../bin/dcar.c:4373
-#: ../bin/dcar.c:4378
+#: ../bin/ctrain.c:179 ../bin/dcar.c:2360 ../bin/dcar.c:4694 ../bin/dcar.c:4700
msgid "Index"
msgstr "Mynegai"
-#: ../bin/ctrain.c:189 ../bin/dcar.c:4374
-msgid "Rep Marks"
+#: ../bin/ctrain.c:185
+#, fuzzy
+msgid "Report Marks"
msgstr "Marciau Cynrychiolwyr"
#: ../bin/ctrain.c:273
msgid "Car"
msgstr "Car"
-#: ../bin/ctrain.c:659
+#: ../bin/ctrain.c:728
msgid "Follow"
msgstr "Dilynwch"
-#: ../bin/ctrain.c:660
+#: ../bin/ctrain.c:729
msgid "Auto Reverse"
msgstr "Gwrthdroi Awtomatig"
-#: ../bin/ctrain.c:679 ../bin/dcar.c:5260
+#: ../bin/ctrain.c:748 ../bin/dcar.c:5686
msgid "Find"
msgstr "Chwilio"
-#: ../bin/ctrain.c:685 ../bin/ctrain.c:942 ../bin/ctrain.c:1251
-#: ../wlib/gtklib/ixhelp.c:239
+#: ../bin/ctrain.c:754 ../bin/ctrain.c:1011 ../bin/ctrain.c:1324
msgid "Forward"
msgstr "Ymlaen"
-#: ../bin/ctrain.c:687 ../bin/ctrain.c:3133 ../bin/dcar.c:4711
-#: ../bin/dcar.c:4721 ../bin/dcar.c:4840 ../bin/fileio.c:215 ../bin/macro.c:61
-#: ../bin/macro.c:874
+#: ../bin/ctrain.c:756 ../bin/ctrain.c:3235 ../bin/dcar.c:5093
+#: ../bin/dcar.c:5103 ../bin/dcar.c:5225 ../bin/fileio.c:224 ../bin/macro.c:64
+#: ../bin/track.c:1366
msgid "Stop"
msgstr "Stopiaf"
-#: ../bin/ctrain.c:883 ../bin/ctrain.c:912
+#: ../bin/ctrain.c:952 ../bin/ctrain.c:981
msgid "Crashed"
msgstr "Damwain"
-#: ../bin/ctrain.c:885
+#: ../bin/ctrain.c:954
msgid "Not on Track"
msgstr "Ddim ar y trywydd iawn"
-#: ../bin/ctrain.c:889
+#: ../bin/ctrain.c:958
msgid "Trains Paused"
msgstr "Trenau wedi oedi"
-#: ../bin/ctrain.c:891
+#: ../bin/ctrain.c:960
msgid "Running"
msgstr "Rhedeg"
-#: ../bin/ctrain.c:896
+#: ../bin/ctrain.c:965
msgid "End of Track"
msgstr "Diwedd y Trac"
-#: ../bin/ctrain.c:900
+#: ../bin/ctrain.c:969
msgid "Open Turnout"
msgstr "Pwynt Agored"
-#: ../bin/ctrain.c:904
+#: ../bin/ctrain.c:973
msgid "Manual Stop"
msgstr "Stop â Llaw"
-#: ../bin/ctrain.c:908
+#: ../bin/ctrain.c:977
msgid "No Room"
msgstr "Dim Lle"
-#: ../bin/ctrain.c:916
+#: ../bin/ctrain.c:985
msgid "Unknown Status"
msgstr "Statws Anhysbys"
-#: ../bin/ctrain.c:926
+#: ../bin/ctrain.c:995
msgid "No trains"
msgstr "Dim Trenau"
-#: ../bin/ctrain.c:1302
+#: ../bin/ctrain.c:1375
msgid "Train Control XXX"
msgstr "Rheoli Trên XXX"
-#: ../bin/ctrain.c:1303
+#: ../bin/ctrain.c:1376
#, c-format
msgid "Train Control %d"
msgstr "Rheoli Trên %d"
-#: ../bin/ctrain.c:1305
+#: ../bin/ctrain.c:1378
msgid "Train Control"
msgstr "Rheoli Trên"
-#: ../bin/ctrain.c:3103 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:155
+#: ../bin/ctrain.c:3198 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:156
msgid "Run Trains"
msgstr "Rhedeg Trenau"
-#: ../bin/ctrain.c:3119
+#: ../bin/ctrain.c:3217
msgid "Uncouple"
msgstr "Ddadfachwyf"
-#: ../bin/ctrain.c:3121
+#: ../bin/ctrain.c:3219
msgid "Flip Car"
msgstr "Gwrthdroi Car"
-#: ../bin/ctrain.c:3123
+#: ../bin/ctrain.c:3222
msgid "Clearance Lines On"
msgstr "Llinellau Clirio Ymlaen"
-#: ../bin/ctrain.c:3125
+#: ../bin/ctrain.c:3225
msgid "Clearance Lines Off"
msgstr "Llinellau Clirio i ffwrdd"
-#: ../bin/ctrain.c:3127
+#: ../bin/ctrain.c:3227
msgid "Flip Train"
msgstr "Trên Gwrthdroi"
-#: ../bin/ctrain.c:3129
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:438
+#: ../bin/ctrain.c:3229 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1188
+msgid "Describe"
+msgstr "Disgrifiwch"
+
+#: ../bin/ctrain.c:3231
msgid "MU Master"
msgstr "MU Meistr"
-#: ../bin/ctrain.c:3132
+#: ../bin/ctrain.c:3234
msgid "Change Direction"
msgstr "Newid Cyfeiriad"
-#: ../bin/ctrain.c:3136
+#: ../bin/ctrain.c:3238
msgid "Remove Car"
msgstr "Tynnwch y Car"
-#: ../bin/ctrain.c:3139
+#: ../bin/ctrain.c:3241
msgid "Remove Train"
msgstr "Tynnwch y Trên"
-#: ../bin/cturnout.c:95 ../bin/dcar.c:2263 ../bin/dcar.c:2267
+#: ../bin/cturnout.c:97 ../bin/dcar.c:2382 ../bin/dcar.c:2386
msgid "New"
msgstr "Newydd"
-#: ../bin/cturnout.c:415 ../bin/cturnout.c:420
+#: ../bin/cturnout.c:371 ../bin/cturnout.c:376
#, c-format
msgid "CheckPath: Turnout path[%d] %d is not a track segment"
msgstr "Llwybr Talu: Llwybr pwynt[%d] %d nid yw'n segment trac"
-#: ../bin/cturnout.c:428
+#: ../bin/cturnout.c:385
#, c-format
msgid ""
"CheckPath: Turnout path[%d] %d-%d not connected: %0.3f P0(%f,%f) P1(%f,%f)"
msgstr ""
-"Llwybr Talu: Llwybr pwynt[%d] %d-%d heb gysylltiad: %0.3f P0(%f,%f) "
-"P1(%f,%f)"
+"Llwybr Talu: Llwybr pwynt[%d] %d-%d heb gysylltiad: %0.3f P0(%f,%f) P1(%f,%f)"
-#: ../bin/cturnout.c:475
+#: ../bin/cturnout.c:437
msgid "Unknown special case"
msgstr "Achos arbennig anhysbys"
-#: ../bin/cturnout.c:592
+#: ../bin/cturnout.c:564
msgid "Connect Adjustable Tracks"
msgstr "Cysylltu traciau addasadwy"
-#: ../bin/cturnout.c:2984
+#: ../bin/cturnout.c:1030
msgid "splitTurnout: can't find segment"
msgstr "Methu dod o hyd i segment"
-#: ../bin/cturnout.c:3443 ../bin/track.c:2324 ../bin/track.c:2430
-#: ../bin/tstraigh.c:632
+#: ../bin/cturnout.c:1511 ../bin/track.c:2380 ../bin/track.c:2502
+#: ../bin/tstraigh.c:838
msgid "Drag to change track length"
msgstr "Llusgwch i newid hyd trac"
-#: ../bin/cturnout.c:3454
+#: ../bin/cturnout.c:1524
#, c-format
msgid "Length=%s"
msgstr "Hyd=%s"
-#: ../bin/cturnout.c:3737
+#: ../bin/cturnout.c:1815
#, c-format
msgid "Turnout %d Path: %s"
msgstr "Pwynt %d Llwybr: %s"
-#: ../bin/cturnout.c:4288
+#: ../bin/cturnout.c:2389
#, c-format
msgid "%d connections, max distance %0.3f (%s)"
msgstr "%d cysylltiadau, pellter mwyaf %0.3f (%s)"
-#: ../bin/cturnout.c:4294
+#: ../bin/cturnout.c:2394
#, c-format
msgid "0 connections (%s)"
msgstr "0 cysylltiadau (%s)"
-#: ../bin/cturnout.c:4333
+#: ../bin/cturnout.c:2433
msgid "Place New Turnout"
msgstr "Rhowch bwynt newydd"
-#: ../bin/cturnout.c:4743
+#: ../bin/cturnout.c:2861
#, c-format
msgid "Angle = %0.3f (%s)"
msgstr "Ongle = %0.3f (%s)"
-#: ../bin/cturnout.c:4853
+#: ../bin/cturnout.c:2962
+msgid "Add Fixed-Track"
+msgstr ""
+
+#: ../bin/cturnout.c:2981
msgid "Pick turnout and active End Point, then place on the layout"
msgstr "Dewis pwynt a diweddbwynt gweithredol, yna ei roi ar y cynllun"
-#: ../bin/cturnout.c:5048
-msgid "Predefined Track"
-msgstr "Trac Rhagddiffiniedig"
+#: ../bin/cturnout.c:3190
+#, fuzzy
+msgid "Fixed-Track"
+msgstr "Ymestyn trac"
-#: ../bin/cturntbl.c:49 ../bin/cturntbl.c:248 ../bin/cturntbl.c:946
-#: ../bin/cturntbl.c:961
+#: ../bin/cturntbl.c:49 ../bin/cturntbl.c:275 ../bin/cturntbl.c:1029
+#: ../bin/cturntbl.c:1044
msgid "Diameter"
msgstr "Diamedr"
-#: ../bin/cturntbl.c:249
+#: ../bin/cturntbl.c:276
msgid "# EndPt"
msgstr "# Diweddbwynt"
-#: ../bin/cturntbl.c:283
+#: ../bin/cturntbl.c:316
#, c-format
msgid "Turntable(%d): Layer=%d Center=[%s %s] Diameter=%s #EP=%d"
msgstr "Trofwrdd(%d): Haen=%d Canol=[%s %s] Diamedr=%s #EP=%d"
-#: ../bin/cturntbl.c:302
+#: ../bin/cturntbl.c:335 ../bin/cturntbl.c:454
msgid "Turntable"
msgstr "Trofwrdd"
-#: ../bin/cturntbl.c:610
+#: ../bin/cturntbl.c:670
msgid "Drag to create stall track"
msgstr "Llusgwch i greu trac stondinau"
-#: ../bin/cturntbl.c:663
+#: ../bin/cturntbl.c:728
msgid "Connect Turntable Tracks"
msgstr "Cysylltu traciau trofwrdd"
-#: ../bin/cturntbl.c:975
+#: ../bin/cturntbl.c:1058
msgid "Create Turntable"
msgstr "Creu Trofwrdd"
-#: ../bin/cturntbl.c:1006
+#: ../bin/cturntbl.c:1090
msgid "Custom Turntable"
msgstr "Pwrpasol Trofwrdd"
-#: ../bin/cundo.c:210
+#: ../bin/cundo.c:266
msgid "Undo Trace"
msgstr "Dadwneud Olrhain"
-#: ../bin/cundo.c:628
+#: ../bin/cundo.c:741
#, c-format
msgid "Undo: %s"
msgstr "Dadwneud: %s"
-#: ../bin/cundo.c:631 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:167
+#: ../bin/cundo.c:744 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:168
msgid "Undo last command"
msgstr "Dadwneud y gorchymyn olaf"
-#: ../bin/cundo.c:636
+#: ../bin/cundo.c:749
#, c-format
msgid "Redo: %s"
msgstr "Ail-wneud: %s"
-#: ../bin/cundo.c:639 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:128
+#: ../bin/cundo.c:752 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:129
msgid "Redo last undo"
msgstr "Ail-wneud olaf dadwneud"
-#: ../bin/custom.c:147
+#: ../bin/custom.c:148
#, c-format
msgid "%s Turnout Designer"
msgstr "%s Dylunydd Pwynt"
@@ -3678,16 +3679,16 @@ msgstr "%s Dylunydd Pwynt"
msgid "%s Version %s"
msgstr "%s Fersiwn %s"
-#: ../bin/custom.c:157
+#: ../bin/custom.c:156
#, c-format
msgid ""
"All %s Files (*.xtc,*.xtce)|*.xtc;*.xtce|%s Trackplan (*.xtc)|*.xtc|%s "
"Extended Trackplan (*.xtce)|*.xtce|All Files (*)|*"
msgstr ""
-"I gyd %s Ffeiliau (*.xtc,*.xtce)|*.xtc;*.xtce|%s Cynllun trac "
-"(*.xtc)|*.xtc|%s Cynllun Trac Estynedig (*.xtce)|*.xtce|I gyd Ffeiliau (*)|*"
+"I gyd %s Ffeiliau (*.xtc,*.xtce)|*.xtc;*.xtce|%s Cynllun trac (*.xtc)|*.xtc|"
+"%s Cynllun Trac Estynedig (*.xtce)|*.xtce|I gyd Ffeiliau (*)|*"
-#: ../bin/custom.c:168
+#: ../bin/custom.c:166
#, c-format
msgid ""
"%s Trackplan (*.xtc)|*.xtc|%s Extended Trackplan (*.xtce)|*.xtce|All Files "
@@ -3696,40 +3697,40 @@ msgstr ""
"%s Cynllun trac (*.xtc)|*.xtc|%s Cynllun Trac Estynedig (*.xtce)|*.xtce|I "
"gyd Ffeiliau (*)|*"
-#: ../bin/custom.c:177
+#: ../bin/custom.c:174
#, c-format
msgid "All Files (*)|*"
msgstr "I gyd Ffeiliau (*)|*"
-#: ../bin/custom.c:182
+#: ../bin/custom.c:178
#, c-format
msgid "%s Import Files (*.xti)|*.xti"
msgstr "%s Mewnforio ffeiliau (*.xti)|*.xti"
-#: ../bin/custom.c:187
+#: ../bin/custom.c:182
msgid "Data Exchange Format Files (*.dxf)|*.dxf"
msgstr "Ffeiliau Fformat Cyfnewid Data (*.dxf)|*.dxf"
-#: ../bin/custom.c:191
+#: ../bin/custom.c:186
msgid "Scalable Vector Graphics Format Files (*.svg)|*.svg"
msgstr "Ffeiliau Fformat Graffeg Fector Scalable (*.svg)|*.svg"
-#: ../bin/custom.c:196
+#: ../bin/custom.c:190
#, c-format
msgid "%s Record Files (*.xtr)|*.xtr"
msgstr "%s Ffeiliau Cofnodi (*.xtr)|*.xtr"
-#: ../bin/custom.c:201
+#: ../bin/custom.c:194
#, c-format
msgid "%s Note Files (*.not)|*.not"
msgstr "%s Nodwch Ffeiliau (*.not)|*.not"
-#: ../bin/custom.c:206
+#: ../bin/custom.c:198
#, c-format
msgid "%s Log Files (*.log)|*.log"
msgstr "%s Ffeiliau Log (*.log)|*.log"
-#: ../bin/custom.c:211
+#: ../bin/custom.c:202
#, c-format
msgid "%s PartsList Files (*.txt)|*.txt"
msgstr "%s Ffeiliau Rhestr Rhannau (*.txt)|*.txt"
@@ -3750,35 +3751,35 @@ msgstr "Ar yr ymyl"
msgid "Flat"
msgstr "Gwastad"
-#: ../bin/dbench.c:66
+#: ../bin/dbench.c:67
msgid "Left-Down"
msgstr "Wedi'i adael i lawr"
-#: ../bin/dbench.c:67
+#: ../bin/dbench.c:68
msgid "Right-Down"
msgstr "I lawr"
-#: ../bin/dbench.c:68
+#: ../bin/dbench.c:69
msgid "Left-Up"
msgstr "Chwith i fyny"
-#: ../bin/dbench.c:69
+#: ../bin/dbench.c:70
msgid "Right-Up"
msgstr "I fyny"
-#: ../bin/dbench.c:70
+#: ../bin/dbench.c:71
msgid "Left-Inverted"
msgstr "Chwith Gwrthdro"
-#: ../bin/dbench.c:71
+#: ../bin/dbench.c:72
msgid "Right-Inverted"
msgstr "Gwrthdroi i'r dde"
-#: ../bin/dbench.c:76
+#: ../bin/dbench.c:78
msgid "Inverted"
msgstr "Gwrthdro"
-#: ../bin/dbench.c:143
+#: ../bin/dbench.c:147
#, c-format
msgid ""
"Bad BenchType for %s:\n"
@@ -3787,98 +3788,98 @@ msgstr ""
"Math Mainc Drwg ar gyfer %s:\n"
"%s"
-#: ../bin/dbitmap.c:149
+#: ../bin/dbitmap.c:150
msgid "Drawing tracks to bitmap"
msgstr "Tynnu traciau i BitMap"
-#: ../bin/dbitmap.c:186
+#: ../bin/dbitmap.c:187
msgid "Drawn with "
msgstr "Wedi'i dynnu gyda"
-#: ../bin/dbitmap.c:228
+#: ../bin/dbitmap.c:229
msgid "Writing bitmap to file"
msgstr "Ysgrifennu BitMap i'w ffeilio"
-#: ../bin/dbitmap.c:251
+#: ../bin/dbitmap.c:252
msgid "Layout Titles"
msgstr "Teitlau Cynllun"
-#: ../bin/dbitmap.c:252
+#: ../bin/dbitmap.c:253
msgid "Borders"
msgstr "Ffiniau"
-#: ../bin/dbitmap.c:253
+#: ../bin/dbitmap.c:254
msgid "Centerline of Track"
msgstr "Canolbwynt y Trac"
-#: ../bin/dbitmap.c:254
+#: ../bin/dbitmap.c:255
msgid "Background Image"
msgstr "Delwedd Cefndir"
-#: ../bin/dbitmap.c:261
+#: ../bin/dbitmap.c:262
msgid "Include "
msgstr "Gynnwys"
-#: ../bin/dbitmap.c:263
+#: ../bin/dbitmap.c:264
msgid "Resolution "
msgstr "Graddfa Datrysiad"
-#: ../bin/dbitmap.c:264
+#: ../bin/dbitmap.c:265
msgid "dpi"
msgstr "Dotiau y fodfedd"
-#: ../bin/dbitmap.c:265
+#: ../bin/dbitmap.c:266
msgid "Bitmap Size "
msgstr "Maint didfap"
-#: ../bin/dbitmap.c:267
+#: ../bin/dbitmap.c:268
msgid "99999 by 99999 pixels"
msgstr "99999 gan 99999 picsel"
-#: ../bin/dbitmap.c:268
+#: ../bin/dbitmap.c:269
msgid "Approximate File Size "
msgstr "Bras ffeilliau"
-#: ../bin/dbitmap.c:270
+#: ../bin/dbitmap.c:271
msgid "999.9Mb"
msgstr "999.9Mb"
-#: ../bin/dbitmap.c:316
+#: ../bin/dbitmap.c:317
#, c-format
msgid "%ld by %ld pixels"
msgstr "%ld gan %ld picsel"
-#: ../bin/dbitmap.c:338
+#: ../bin/dbitmap.c:339
#, c-format
msgid "%0.0f"
msgstr "%0.0f"
-#: ../bin/dbitmap.c:340
+#: ../bin/dbitmap.c:341
#, c-format
msgid "%0.1fKb"
msgstr "%0.1f Kb"
-#: ../bin/dbitmap.c:342
+#: ../bin/dbitmap.c:343
#, c-format
msgid "%0.1fMb"
msgstr "%0.1fMb"
-#: ../bin/dbitmap.c:344
+#: ../bin/dbitmap.c:345
#, c-format
msgid "%0.1fGb"
msgstr "%0.1fGb"
-#: ../bin/dbitmap.c:435
+#: ../bin/dbitmap.c:436
msgid "Save Bitmap"
msgstr "Arbedwch BitMap"
-#: ../bin/dbitmap.c:436
+#: ../bin/dbitmap.c:437
msgid ""
"Portable Network Graphics format (*.png)|*.png|JPEG format (*.jpg)|*.jpg"
msgstr ""
"Fformat Graffeg Rhwydwaith Cludadwy (*.png)|*.png|Fformat JPEG (*.jpg)|*.jpg"
-#: ../bin/dbitmap.c:471
+#: ../bin/dbitmap.c:472
msgid "Export to bitmap"
msgstr "Allforio i BitMap"
@@ -3890,539 +3891,548 @@ msgstr "Tryc"
msgid "Body"
msgstr "Corff"
-#: ../bin/dcar.c:147 ../bin/dcar.c:2694 ../bin/dcar.c:2698
+#: ../bin/dcar.c:148 ../bin/dcar.c:2860 ../bin/dcar.c:2867
msgid "Unknown"
msgstr "Anhysbys"
-#: ../bin/dcar.c:469
+#: ../bin/dcar.c:481
msgid "Diesel Loco"
msgstr "Locomotif Diesel"
-#: ../bin/dcar.c:470
+#: ../bin/dcar.c:482
msgid "Steam Loco"
msgstr "Locomotif Stêm"
-#: ../bin/dcar.c:471
+#: ../bin/dcar.c:483
msgid "Elect Loco"
msgstr "Locomotif Trydan"
-#: ../bin/dcar.c:472
+#: ../bin/dcar.c:484
msgid "Freight Car"
msgstr "Wagen cludo nwyddau"
-#: ../bin/dcar.c:473
+#: ../bin/dcar.c:485
msgid "Psngr Car"
msgstr "Cerbyd Teithwyr"
-#: ../bin/dcar.c:474
+#: ../bin/dcar.c:486
msgid "M-O-W"
msgstr "Cerbyd Lluosog"
-#: ../bin/dcar.c:475
+#: ../bin/dcar.c:487
msgid "Other"
msgstr "Arall"
-#: ../bin/dcar.c:1173 ../bin/dcar.c:5081
+#: ../bin/dcar.c:1237 ../bin/dcar.c:5478
msgid "N/A"
msgstr "Amherthnasol"
-#: ../bin/dcar.c:1174 ../bin/dcar.c:5086
+#: ../bin/dcar.c:1238 ../bin/dcar.c:5483
msgid "Mint"
msgstr "Cyflwr mintys"
-#: ../bin/dcar.c:1175 ../bin/dcar.c:5085
+#: ../bin/dcar.c:1239 ../bin/dcar.c:5482
msgid "Excellent"
msgstr "Cyflwr rhagorol"
-#: ../bin/dcar.c:1176 ../bin/dcar.c:5084
+#: ../bin/dcar.c:1240 ../bin/dcar.c:5481
msgid "Good"
msgstr "Cyflwr da"
-#: ../bin/dcar.c:1177 ../bin/dcar.c:5083
+#: ../bin/dcar.c:1241 ../bin/dcar.c:5480
msgid "Fair"
msgstr "Cyflwr teg"
-#: ../bin/dcar.c:1178 ../bin/dcar.c:5082
+#: ../bin/dcar.c:1242 ../bin/dcar.c:5479
msgid "Poor"
msgstr "Cyflwr gwael"
-#: ../bin/dcar.c:1492 ../bin/dpricels.c:42
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:486
+#: ../bin/dcar.c:1580 ../bin/dpricels.c:42
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:518
msgid "Item"
msgstr "Eitem"
-#: ../bin/dcar.c:2164 ../wlib/gtklib/notice.c:96 ../wlib/mswlib/mswmisc.c:2129
+#: ../bin/dcar.c:2282 ../wlib/mswlib/mswmisc.c:2057
msgid "Information"
msgstr "Gwybodaeth"
-#: ../bin/dcar.c:2164
+#: ../bin/dcar.c:2282
msgid "Customize"
msgstr "Addasu"
-#: ../bin/dcar.c:2177
+#: ../bin/dcar.c:2296
msgid "Sequential"
msgstr "Dilyniannol"
-#: ../bin/dcar.c:2177
+#: ../bin/dcar.c:2296
msgid "Repeated"
msgstr "Ailadroddwyd"
-#: ../bin/dcar.c:2188 ../bin/dcar.c:2190 ../bin/dcar.c:5411
+#: ../bin/dcar.c:2307 ../bin/dcar.c:2309 ../bin/dcar.c:5838
msgid "Prototype"
msgstr "Prototeip"
-#: ../bin/dcar.c:2196
+#: ../bin/dcar.c:2315
msgid "Part"
msgstr "Rhan"
-#: ../bin/dcar.c:2198 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:408
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:618
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:619
+#: ../bin/dcar.c:2317 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:419
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:659
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:660
msgid "Part Number"
msgstr "Rhan rhif"
-#: ../bin/dcar.c:2200
+#: ../bin/dcar.c:2319
msgid "Loco?"
msgstr "Loco?"
-#: ../bin/dcar.c:2204 ../bin/dcar.c:4411
+#: ../bin/dcar.c:2323 ../bin/dcar.c:4734
msgid "Import"
msgstr "mewnforio"
-#: ../bin/dcar.c:2211
+#: ../bin/dcar.c:2330
msgid "Mode"
msgstr "Modd"
-#: ../bin/dcar.c:2215
+#: ../bin/dcar.c:2334
msgid "Road"
msgstr "Ffordd"
-#: ../bin/dcar.c:2217
+#: ../bin/dcar.c:2336
msgid "Reporting Mark"
msgstr "Marc Adrodd"
-#: ../bin/dcar.c:2219
+#: ../bin/dcar.c:2338
msgid "Number"
msgstr "Rhif"
-#: ../bin/dcar.c:2223
+#: ../bin/dcar.c:2342
msgid "Car Length"
msgstr "Hyd Car"
-#: ../bin/dcar.c:2227
+#: ../bin/dcar.c:2346
msgid "Truck Centers"
msgstr "Canolfannau Tryciau"
-#: ../bin/dcar.c:2231
+#: ../bin/dcar.c:2350
msgid "Coupler Mount"
msgstr "Ymlyniad Cwplwr"
-#: ../bin/dcar.c:2233
+#: ../bin/dcar.c:2352
msgid "Coupled Length"
msgstr "Hyd Cypledig"
-#: ../bin/dcar.c:2235 ../bin/dcar.c:4256
+#: ../bin/dcar.c:2354 ../bin/dcar.c:4564
msgid "Coupler Length"
msgstr "Hyd y Cwplwr"
-#: ../bin/dcar.c:2243
+#: ../bin/dcar.c:2362
msgid "Purchase Price"
msgstr "Pris Prynu"
-#: ../bin/dcar.c:2245 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:264
+#: ../bin/dcar.c:2364 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:266
msgid "Current Price"
msgstr "Pris Cyfredol"
-#: ../bin/dcar.c:2247 ../bin/dcar.c:4375 ../bin/dcar.c:4380
+#: ../bin/dcar.c:2366 ../bin/dcar.c:4696 ../bin/dcar.c:4702
msgid "Condition"
msgstr "Cyflwr"
-#: ../bin/dcar.c:2249
+#: ../bin/dcar.c:2368
msgid "Purchase Date"
msgstr "Dyddiad Prynu"
-#: ../bin/dcar.c:2251 ../bin/dcar.c:4380
+#: ../bin/dcar.c:2370 ../bin/dcar.c:4702
msgid "Service Date"
msgstr "Dyddiad Gwasanaeth"
-#: ../bin/dcar.c:2253
+#: ../bin/dcar.c:2372
msgid "Quantity"
msgstr "Nifer"
-#: ../bin/dcar.c:2255
+#: ../bin/dcar.c:2374
msgid "Numbers"
msgstr "Rhifau"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:487
-#: ../bin/dcar.c:2257 ../bin/dcar.c:4376 ../bin/trknote.c:709
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1267
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:487
+#: ../bin/dcar.c:2376 ../bin/dcar.c:4697 ../bin/trknote.c:594
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1286
msgid "Notes"
msgstr "Nodiadau"
-#: ../bin/dcar.c:2264
+#: ../bin/dcar.c:2383
msgid "Car Part"
msgstr "Rhan Car"
-#: ../bin/dcar.c:2265 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:238
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:239
+#: ../bin/dcar.c:2384 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:240
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:241
msgid "Car Prototype"
msgstr "Prototeip Car"
-#: ../bin/dcar.c:2628 ../bin/dcar.c:2945
+#: ../bin/dcar.c:2776 ../bin/dcar.c:3143
msgid "Undecorated"
msgstr "Heb addurn"
-#: ../bin/dcar.c:2686 ../bin/dcar.c:2690 ../bin/paramfilelist.c:390
+#: ../bin/dcar.c:2849 ../bin/dcar.c:2855 ../bin/paramfilelist.c:458
msgid "Custom"
msgstr "Wedi'i addasu"
-#: ../bin/dcar.c:2855
+#: ../bin/dcar.c:3049
msgid "Undecorated "
msgstr "Heb addurn"
-#: ../bin/dcar.c:3077
+#: ../bin/dcar.c:3298
#, c-format
msgid "New %s Scale Car"
msgstr "Newydd %s Car Graddfa"
-#: ../bin/dcar.c:3078 ../bin/dcar.c:3087 ../bin/dcar.c:3096 ../bin/dcar.c:4289
-#: ../bin/dcar.c:4407 ../bin/paramfilesearch_ui.c:76
+#: ../bin/dcar.c:3299 ../bin/dcar.c:3308 ../bin/dcar.c:3318 ../bin/dcar.c:4598
+#: ../bin/dcar.c:4730 ../bin/paramfilesearch_ui.c:75
msgid "Add"
msgstr "Ychwanegu"
-#: ../bin/dcar.c:3080
+#: ../bin/dcar.c:3301
#, c-format
msgid "Update %s Scale Car"
msgstr "Diweddariad %s Car Graddfa"
-#: ../bin/dcar.c:3081 ../bin/dcar.c:3090 ../bin/dcar.c:3099
-#: ../bin/dcmpnd.c:168
+#: ../bin/dcar.c:3302 ../bin/dcar.c:3312 ../bin/dcar.c:3321 ../bin/dcmpnd.c:178
msgid "Update"
msgstr "Diweddariad"
-#: ../bin/dcar.c:3086
+#: ../bin/dcar.c:3307
#, c-format
msgid "New %s Scale Car Part"
msgstr "Newydd %s Rhan Car Graddfa"
-#: ../bin/dcar.c:3089
+#: ../bin/dcar.c:3310
#, c-format
msgid "Update %s Scale Car Part"
msgstr "Diweddariad %s Rhan Car Graddfa"
-#: ../bin/dcar.c:3095
+#: ../bin/dcar.c:3317
msgid "New Prototype"
msgstr "Newydd Prototeip"
-#: ../bin/dcar.c:3098
+#: ../bin/dcar.c:3320
msgid "Update Prototype"
msgstr "Diweddariad Prototeip"
-#: ../bin/dcar.c:3739
+#: ../bin/dcar.c:4009
msgid "Truck Center Offset plus Truck Centers must be less than Car Length"
msgstr ""
"Rhaid i Wrthbwyso Canolfan Truck ynghyd â Chanolfannau Tryciau fod yn llai "
"na Hyd Car"
-#: ../bin/dcar.c:3796 ../bin/dcar.c:3800
+#: ../bin/dcar.c:4070 ../bin/dcar.c:4074
msgid "Enter a 8 digit numeric date (yyyymmdd)"
msgstr "Rhowch ddyddiad rhifol 8 digid (yyyymmdd)"
-#: ../bin/dcar.c:3803
+#: ../bin/dcar.c:4077
msgid "Enter a date between 19000101 and 21991231"
msgstr "Rhowch ddyddiad rhwng 19000101 a 21991231"
-#: ../bin/dcar.c:3809
+#: ../bin/dcar.c:4083
msgid "Invalid month"
msgstr "Mis Annilys"
-#: ../bin/dcar.c:3812
+#: ../bin/dcar.c:4086
msgid "Invalid day"
msgstr "Diwrnod Annilys"
-#: ../bin/dcar.c:3907
+#: ../bin/dcar.c:4184
msgid "Select or Enter a Manufacturer"
msgstr "Dewiswch neu Rhowch wneuthurwr"
-#: ../bin/dcar.c:3910
+#: ../bin/dcar.c:4188
#, c-format
msgid "Item Index %ld duplicated an existing item: updated to new value"
msgstr ""
"Mynegai Eitem %ld dyblygu eitem sy'n bodoli eisoes: wedi'i ddiweddaru i "
"werth newydd"
-#: ../bin/dcar.c:4115
+#: ../bin/dcar.c:4410
#, c-format
msgid "Added %ld new Cars"
msgstr "Wedi adio %ld ceir newydd"
-#: ../bin/dcar.c:4117
+#: ../bin/dcar.c:4412
msgid "Added new Car"
msgstr "Ychwanegwyd car newydd"
-#: ../bin/dcar.c:4120
+#: ../bin/dcar.c:4415
msgid "Updated Car"
msgstr "Car wedi'i ddiweddaru"
-#: ../bin/dcar.c:4123
+#: ../bin/dcar.c:4418
msgid " and Part"
msgstr "A rhan"
-#: ../bin/dcar.c:4150
+#: ../bin/dcar.c:4450
#, c-format
msgid "%s Part: %s %s %s %s %s %s"
msgstr "%s Rhan: %s %s %s %s %s %s"
-#: ../bin/dcar.c:4150 ../bin/dcar.c:4167
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
msgid "Added new"
msgstr "Ychwanegwyd newydd"
-#: ../bin/dcar.c:4150 ../bin/dcar.c:4167
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
msgid "Updated"
msgstr "Wedi'i ddiweddaru"
-#: ../bin/dcar.c:4166
+#: ../bin/dcar.c:4472
#, c-format
msgid "%s Prototype: %s%s."
msgstr "%s Prototeip: %s%s."
-#: ../bin/dcar.c:4168
+#: ../bin/dcar.c:4474
msgid ". Enter new values or press Close"
msgstr ". Rhowch werthoedd newydd neu pwyswch Close"
-#: ../bin/dcar.c:4289
+#: ../bin/dcar.c:4598
msgid "New Car Part"
msgstr "Rhan Car Newydd"
-#: ../bin/dcar.c:4374 ../bin/dcar.c:4379
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:456
+#: ../bin/dcar.c:4694 ../bin/dcar.c:4700 ../bin/dcustmgm.c:46
+#: ../bin/dlayer.c:561 ../bin/layout.c:662 ../bin/scale.c:845
+msgid "Scale"
+msgstr "Graddfa"
+
+#: ../bin/dcar.c:4695 ../bin/dcar.c:4701
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:488
msgid "Roadname"
msgstr "Enw'r Ffordd"
-#: ../bin/dcar.c:4374
+#: ../bin/dcar.c:4695
+msgid "Rep Marks"
+msgstr "Marciau Cynrychiolwyr"
+
+#: ../bin/dcar.c:4695
msgid "Purc Price"
msgstr "Pris Prynu"
-#: ../bin/dcar.c:4375 ../bin/dcar.c:4380
+#: ../bin/dcar.c:4696 ../bin/dcar.c:4702
msgid "Curr Price"
msgstr "Pris Cyfredol"
-#: ../bin/dcar.c:4375
+#: ../bin/dcar.c:4696
msgid "Purc Date"
msgstr "Dyddiad Prynu"
-#: ../bin/dcar.c:4375
+#: ../bin/dcar.c:4696
msgid "Srvc Date"
msgstr "Dyddiad Gwasanaeth"
-#: ../bin/dcar.c:4376
+#: ../bin/dcar.c:4697
msgid "Locat'n"
msgstr "Lleoliad"
-#: ../bin/dcar.c:4379
+#: ../bin/dcar.c:4701
msgid "RepMarks"
msgstr "Marciau Adrodd"
-#: ../bin/dcar.c:4379
+#: ../bin/dcar.c:4701
msgid "Purch Price"
msgstr "Pris prynu"
-#: ../bin/dcar.c:4380
+#: ../bin/dcar.c:4702
msgid "Purch Date"
msgstr "Dyddiad prynu"
-#: ../bin/dcar.c:4397
+#: ../bin/dcar.c:4720
msgid "Sort By"
msgstr "Trefnu yn ôl"
-#: ../bin/dcar.c:4405 ../bin/dcontmgm.c:87 ../bin/dcustmgm.c:56
-#: ../bin/dcustmgm.c:93
+#: ../bin/dcar.c:4728 ../bin/dcustmgm.c:58 ../bin/dcustmgm.c:98
+#: ../bin/dcontmgm.c:88
msgid "Edit"
msgstr "Golygu"
-#: ../bin/dcar.c:4409 ../bin/dcontmgm.c:89 ../bin/dcustmgm.c:58
-#: ../bin/misc.c:2497
+#: ../bin/dcar.c:4732 ../bin/dcar.c:5654 ../bin/dcustmgm.c:60
+#: ../bin/dcontmgm.c:90 ../bin/menu.c:992
msgid "Delete"
msgstr "Dileu"
-#: ../bin/dcar.c:4413 ../bin/fileio.c:1490
+#: ../bin/dcar.c:4736 ../bin/fileio.c:1631
msgid "Export"
msgstr "Allforio"
-#: ../bin/dcar.c:4415 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:635
+#: ../bin/dcar.c:4738 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:676
msgid "List"
msgstr "Rhestr"
-#: ../bin/dcar.c:4525 ../bin/dcar.c:5260 ../bin/misc.c:2896
+#: ../bin/dcar.c:4894 ../bin/dcar.c:5686 ../bin/menu.c:1416
msgid "Car Inventory"
msgstr "Rhestr Car"
-#: ../bin/dcar.c:4645
+#: ../bin/dcar.c:5026
msgid "List Cars"
msgstr "Rhestrwch geir"
-#: ../bin/dcar.c:4768 ../bin/dcar.c:4933
+#: ../bin/dcar.c:5150 ../bin/dcar.c:5322
msgid "Import Cars"
msgstr "Mewnforio Ceir"
-#: ../bin/dcar.c:4934 ../bin/dcar.c:5056
+#: ../bin/dcar.c:5323 ../bin/dcar.c:5453
msgid "Comma-Separated-Values (*.csv)|*.csv"
msgstr "Gwerthoedd ar wahân coma (*.csv)|*.csv"
-#: ../bin/dcar.c:5003 ../bin/dcar.c:5055
+#: ../bin/dcar.c:5395 ../bin/dcar.c:5452
msgid "Export Cars"
msgstr "Allforio ceir"
-#: ../bin/dcar.c:5089
-msgid "Layout"
-msgstr "Cynllun"
-
-#: ../bin/dcar.c:5091
+#: ../bin/dcar.c:5494
msgid "Shelf"
msgstr "Silff"
-#: ../bin/dcmpnd.c:72 ../bin/dlayer.c:600 ../bin/misc.c:695 ../bin/misc.c:727
+#: ../bin/dcar.c:5653
+#, fuzzy
+msgid "Shelve"
+msgstr "Silff"
+
+#: ../bin/dcmpnd.c:73 ../bin/dlayer.c:590 ../bin/menu.c:364 ../bin/menu.c:398
msgid "Load"
msgstr "Llwyth"
-#: ../bin/dcmpnd.c:105
+#: ../bin/dcmpnd.c:111
msgid "Updating definitions, please wait"
msgstr "Diweddaru diffiniadau, arhoswch"
-#: ../bin/dcmpnd.c:168
+#: ../bin/dcmpnd.c:178
msgid "Update Title"
msgstr "Diweddariad Teitl"
-#: ../bin/dcmpnd.c:228
+#: ../bin/dcmpnd.c:244
#, c-format
msgid "End-Point #%d of the selected and actual turnouts are not close"
msgstr ""
"Diweddbwynt #%d nid yw'r pwyntiau a ddewiswyd a rhai gwirioneddol yn agos"
-#: ../bin/dcmpnd.c:237
+#: ../bin/dcmpnd.c:255
#, c-format
msgid "End-Point #%d of the selected and actual turnouts are not aligned"
msgstr ""
"Diweddbwynt #%d nid yw'r pwyntiau a ddewiswyd a rhai gwirioneddol wedi'u "
"halinio"
-#: ../bin/dcmpnd.c:255
+#: ../bin/dcmpnd.c:274
msgid "The selected Turnout had a differing number of End-Points"
msgstr "Roedd gan y Pwynt a ddewiswyd nifer wahanol o Bwyntiau Diwedd"
-#: ../bin/dcmpnd.c:320
+#: ../bin/dcmpnd.c:341
msgid "Skip"
msgstr "Neidio"
-#: ../bin/dcmpnd.c:352
+#: ../bin/dcmpnd.c:374
#, c-format
msgid "%d Track(s) refreshed"
msgstr "%d Trac(iau) adnewyddu"
-#: ../bin/dcmpnd.c:392
+#: ../bin/dcmpnd.c:419
msgid "Refresh Turnout/Structure"
msgstr "Adnewyddu Pwynt / Strwythur"
-#: ../bin/dcmpnd.c:394
+#: ../bin/dcmpnd.c:423
msgid "Choose a Turnout/Structure to replace:"
msgstr "Dewiswch Bwynt / Strwythur i'w ddisodli"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:457
-#: ../bin/dcmpnd.c:404 ../bin/doption.c:92
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1207
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:457
+#: ../bin/dcmpnd.c:436 ../bin/doption.c:94
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1226
msgid "Turnouts"
msgstr "Pwyntiau"
-#: ../bin/dcmpnd.c:404
+#: ../bin/dcmpnd.c:436
msgid "Structures"
msgstr "Strwythurau"
-#: ../bin/dcmpnd.c:433
+#: ../bin/dcmpnd.c:467
msgid "Choose another Turnout/Structure to replace:"
msgstr "Dewiswch Bwynt / Strwythur arall yn lle:"
-#: ../bin/dcmpnd.c:536
+#: ../bin/dcmpnd.c:582
msgid "Rename Object"
msgstr "Ail-enwi Gwrthrych"
-#: ../bin/dcontmgm.c:80
-msgid "Tracks"
-msgstr "Traciau"
-
-#: ../bin/dcontmgm.c:161
-#, c-format
-msgid "Are you sure you want to delete the %d control element(s)"
-msgstr "Ydych chi'n siŵr eich bod chi am ddileu'r se%d elfen(nau) rheoli?"
-
-#: ../bin/dcontmgm.c:164
-msgid "Control Elements"
-msgstr "Elfennau Rheoli"
-
-#: ../bin/dcontmgm.c:287
-msgid "Manage Layout Control Elements"
-msgstr "Rheoli elfennau rheoli cynllun"
-
-#: ../bin/dcustmgm.c:52
+#: ../bin/dcustmgm.c:54
msgid "Create a new "
msgstr "Creu newydd"
-#: ../bin/dcustmgm.c:54
+#: ../bin/dcustmgm.c:56
msgid "Go"
msgstr "Ewch"
-#: ../bin/dcustmgm.c:60
+#: ../bin/dcustmgm.c:62
msgid "Move To"
msgstr "Symud i"
-#: ../bin/dcustmgm.c:93
+#: ../bin/dcustmgm.c:98
msgid "Rename"
msgstr "Ail-enwi"
-#: ../bin/dcustmgm.c:174
+#: ../bin/dcustmgm.c:186
msgid "Label"
msgstr "Label"
-#: ../bin/dcustmgm.c:211
+#: ../bin/dcustmgm.c:225
msgid "Contents Label"
msgstr "Label Cynnwys"
-#: ../bin/dcustmgm.c:267
+#: ../bin/dcustmgm.c:284
msgid "Move To XTP"
msgstr "Symud i XTP"
-#: ../bin/dcustmgm.c:268
+#: ../bin/dcustmgm.c:285
msgid "Parameter File (*.xtp)|*.xtp"
msgstr "Ffeil Paramedr (*.xtp)|*.xtp"
-#: ../bin/dcustmgm.c:378
+#: ../bin/dcustmgm.c:407
msgid "Manage custom designed parts"
msgstr "Rheoli rhannau wedi'u cynllunio'n benodol"
-#: ../bin/dease.c:64
+#: ../bin/dcontmgm.c:80
+msgid "Tracks"
+msgstr "Traciau"
+
+#: ../bin/dcontmgm.c:167
+#, c-format
+msgid "Are you sure you want to delete the %d control element(s)"
+msgstr "Ydych chi'n siŵr eich bod chi am ddileu'r se%d elfen(nau) rheoli?"
+
+#: ../bin/dcontmgm.c:172
+msgid "Control Elements"
+msgstr "Elfennau Rheoli"
+
+#: ../bin/dcontmgm.c:308
+msgid "Manage Layout Control Elements"
+msgstr "Rheoli elfennau rheoli cynllun"
+
+#: ../bin/dease.c:68
msgid "Sharp"
msgstr "Miniog"
-#: ../bin/dease.c:64
+#: ../bin/dease.c:68
msgid "Broad"
msgstr "Eang"
-#: ../bin/dease.c:64
+#: ../bin/dease.c:68
msgid "Cornu"
msgstr "Cornu"
-#: ../bin/dease.c:72
+#: ../bin/dease.c:76
msgid "Value"
msgstr "Gwerth"
-#: ../bin/dease.c:73 ../bin/tease.c:515
+#: ../bin/dease.c:77 ../bin/tease.c:530
msgid "R"
msgstr "R"
-#: ../bin/dease.c:75 ../bin/tease.c:516
+#: ../bin/dease.c:79 ../bin/tease.c:531
msgid "L"
msgstr "L"
-#: ../bin/dease.c:240
+#: ../bin/dease.c:250
msgid "Easement"
msgstr "Hawddfraint"
@@ -4430,7 +4440,7 @@ msgstr "Hawddfraint"
msgid "Prices"
msgstr "Prisiau"
-#: ../bin/denum.c:45 ../bin/denum.c:138
+#: ../bin/denum.c:45 ../bin/denum.c:139
msgid "Indexes"
msgstr "Mynegeion"
@@ -4438,15 +4448,15 @@ msgstr "Mynegeion"
msgid "Save As ..."
msgstr "Arbed fel"
-#: ../bin/denum.c:134 ../bin/denum.c:191 ../bin/denum.c:226
+#: ../bin/denum.c:135 ../bin/denum.c:198 ../bin/denum.c:236
msgid "Each"
msgstr "yr un"
-#: ../bin/denum.c:150 ../bin/denum.c:151
+#: ../bin/denum.c:152 ../bin/denum.c:154
msgid "Parts List"
msgstr "Rhestr Rhannau"
-#: ../bin/denum.c:156
+#: ../bin/denum.c:160
#, c-format
msgid ""
"%s Parts List\n"
@@ -4455,230 +4465,287 @@ msgstr ""
"%s Rhestr Rhannau\n"
"\n"
-#: ../bin/denum.c:191 ../bin/denum.c:228 ../bin/denum.c:237
+#: ../bin/denum.c:199 ../bin/denum.c:238 ../bin/denum.c:248
msgid "Extended"
msgstr "Estynedig"
-#: ../bin/denum.c:237 ../bin/denum.c:240
+#: ../bin/denum.c:247 ../bin/denum.c:251
msgid "Total"
msgstr "Cyfanswm"
-#: ../bin/dlayer.c:576
+#: ../bin/dlayer.c:541
msgid "Select Layer:"
msgstr "Dewiswch Haen:"
-#: ../bin/dlayer.c:582
+#: ../bin/dlayer.c:547
msgid "Use Color"
msgstr "Defnyddiwch Lliw"
-#: ../bin/dlayer.c:584
+#: ../bin/dlayer.c:549
msgid "Visible"
msgstr "Gweladwy"
-#: ../bin/dlayer.c:586
+#: ../bin/dlayer.c:551
msgid "Frozen"
msgstr "Rhewedig"
-#: ../bin/dlayer.c:588
+#: ../bin/dlayer.c:553
msgid "On Map"
msgstr "Ar y Map"
-#: ../bin/dlayer.c:590
+#: ../bin/dlayer.c:555
msgid "Module"
msgstr "Modiwl"
-#: ../bin/dlayer.c:592
+#: ../bin/dlayer.c:557
msgid "No Button"
msgstr "Dim Botwm"
-#: ../bin/dlayer.c:594
+#: ../bin/dlayer.c:559
+#, fuzzy
+msgid "Inherit"
+msgstr "Gwrthdro"
+
+#: ../bin/dlayer.c:563 ../bin/layout.c:664
+msgid " Gauge"
+msgstr " Medrydd"
+
+#: ../bin/dlayer.c:565 ../bin/layout.c:666
+msgid "Min Track Radius"
+msgstr "Radiws Trac Lleiaf"
+
+#: ../bin/dlayer.c:567 ../bin/layout.c:667
+#, fuzzy
+msgid " Max Track Grade (%)"
+msgstr " Gradd Trac Uchaf (%)"
+
+#: ../bin/dlayer.c:569
+#, fuzzy
+msgid "Tie Length"
+msgstr "Hyd bysedd traed"
+
+#: ../bin/dlayer.c:571
+#, fuzzy
+msgid " Width"
+msgstr "Lled"
+
+#: ../bin/dlayer.c:573
+#, fuzzy
+msgid " Spacing"
+msgstr "Bylchau"
+
+#: ../bin/dlayer.c:575
+#, fuzzy
+msgid "Layer Actions"
+msgstr "Botymau Haen"
+
+#: ../bin/dlayer.c:577
+#, fuzzy
+msgid "Add Layer"
+msgstr "Haen"
+
+#: ../bin/dlayer.c:579
+#, fuzzy
+msgid "Delete Layer"
+msgstr "Dewiswch Haen:"
+
+#: ../bin/dlayer.c:581
+#, fuzzy
+msgid "Default Values"
+msgstr "Diffygion"
+
+#: ../bin/dlayer.c:582
+msgid "Number of Layer Buttons"
+msgstr "Nifer y Botymau Haen"
+
+#: ../bin/dlayer.c:584
msgid "Linked Layers"
msgstr "Haenau Cysylltiedig"
-#: ../bin/dlayer.c:596
+#: ../bin/dlayer.c:586
msgid "Settings when Current"
msgstr "Gosodiadau pan fyddant yn Gyfredol"
-#: ../bin/dlayer.c:598
+#: ../bin/dlayer.c:588
msgid "Object Count:"
msgstr "Cyfrif Gwrthrychau"
-#: ../bin/dlayer.c:599
+#: ../bin/dlayer.c:589
msgid "All Layer Preferences"
msgstr "Pob Dewis Haen"
-#: ../bin/dlayer.c:601 ../bin/macro.c:1404
+#: ../bin/dlayer.c:591 ../bin/macro.c:1431
msgid "Save"
msgstr "Arbed"
-#: ../bin/dlayer.c:602
+#: ../bin/dlayer.c:592
msgid "Defaults"
msgstr "Diffygion"
-#: ../bin/dlayer.c:603
-msgid "Number of Layer Buttons"
-msgstr "Nifer y Botymau Haen"
-
-#: ../bin/dlayer.c:711 ../bin/dlayer.c:1286 ../bin/dlayer.c:1303
-#: ../bin/dlayer.c:1374
+#: ../bin/dlayer.c:710 ../bin/dlayer.c:1563 ../bin/dlayer.c:1581
+#: ../bin/dlayer.c:1651
msgid "Main"
msgstr "Prif"
-#: ../bin/dlayer.c:842 ../bin/dlayer.c:1203 ../bin/dlayer.c:1306
-#: ../bin/dlayer.c:1376 ../bin/dlayer.c:1778
+#: ../bin/dlayer.c:842
+msgid "Layer must not have any objects in it."
+msgstr ""
+
+#: ../bin/dlayer.c:1007 ../bin/dlayer.c:1452 ../bin/dlayer.c:1584
+#: ../bin/dlayer.c:1653
msgid "Show/Hide Layer"
msgstr "Dangos / Cuddio Haen"
-#: ../bin/dlayer.c:1546
+#: ../bin/dlayer.c:2071
msgid "Layers"
msgstr "Haenau"
-#: ../bin/dlayer.c:1765 ../bin/misc.c:2465
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:17
+#: ../bin/dlayer.c:2334 ../bin/menu.c:960
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:17
msgid "Show/Hide Background"
msgstr "Dangos / Cuddio Cefndir"
-#: ../bin/doption.c:90
+#: ../bin/doption.c:92
msgid "Auto Pan"
msgstr "Padell Auto"
-#: ../bin/doption.c:92
+#: ../bin/doption.c:94
msgid "All"
msgstr "I gyd"
-#: ../bin/doption.c:93
+#: ../bin/doption.c:95
msgid "Thick"
msgstr "Trwchus"
-#: ../bin/doption.c:93
+#: ../bin/doption.c:95
msgid "Exception"
msgstr "Eithriad"
-#: ../bin/doption.c:94
+#: ../bin/doption.c:96
msgid "Outline"
msgstr "Amlinelliad"
-#: ../bin/doption.c:95
+#: ../bin/doption.c:97
msgid "Off"
msgstr "Bant"
-#: ../bin/doption.c:95
+#: ../bin/doption.c:97
msgid "On"
msgstr "Ymlaen"
-#: ../bin/doption.c:96
+#: ../bin/doption.c:98
msgid "Track Descriptions"
msgstr "Disgrifiadau trac"
-#: ../bin/doption.c:96
+#: ../bin/doption.c:98
msgid "Lengths"
msgstr "Hyd"
-#: ../bin/doption.c:96
+#: ../bin/doption.c:98
msgid "EndPt Elevations"
msgstr "Drychiadau pwynt diwedd"
-#: ../bin/doption.c:96
+#: ../bin/doption.c:98
msgid "Track Elevations"
msgstr "Drychiadau trac"
-#: ../bin/doption.c:96
+#: ../bin/doption.c:98
msgid "Cars"
msgstr "Ceir"
-#: ../bin/doption.c:97 ../bin/doption.c:98
+#: ../bin/doption.c:99 ../bin/doption.c:100
msgid "Descr"
msgstr "Disgrifiad"
-#: ../bin/doption.c:98
+#: ../bin/doption.c:100
msgid "Manuf"
msgstr "Gwneuthurwr"
-#: ../bin/doption.c:99 ../bin/doption.c:100
+#: ../bin/doption.c:101 ../bin/doption.c:102
msgid "Object"
msgstr "Gwrthrych"
-#: ../bin/doption.c:101
+#: ../bin/doption.c:103
msgid "Live Map"
msgstr "Map Byw"
-#: ../bin/doption.c:102
+#: ../bin/doption.c:104
msgid "Hide Trains On Hidden Track"
msgstr "Cuddio Trenau ar Drac Cudd"
-#: ../bin/doption.c:103
+#: ../bin/doption.c:105
msgid "Constrain Drawing Area to Room boundaries"
msgstr "Cyfyngu Ardal Arlunio i ffiniau Ystafelloedd"
-#: ../bin/doption.c:104
+#: ../bin/doption.c:106
msgid "Don't Hide System Cursor when program cursor is active"
msgstr "Peidiwch â Chuddio Cyrchwr System"
-#: ../bin/doption.c:111
+#: ../bin/doption.c:110
msgid "Color Track"
msgstr "Trac Lliw"
-#: ../bin/doption.c:112
+#: ../bin/doption.c:111
msgid "Color Draw"
msgstr "Llun Lliw"
-#: ../bin/doption.c:113
+#: ../bin/doption.c:112
msgid "Draw Tunnel"
msgstr "Twnnel Tynnu"
-#: ../bin/doption.c:114
+#: ../bin/doption.c:113
msgid "Draw EndPts"
msgstr "Tynnu Pwyntiau Diwedd"
-#: ../bin/doption.c:115
+#: ../bin/doption.c:114
msgid "Draw Unconnected EndPts"
msgstr "Tynnu Pwyntiau Diwedd Heb eu Cysylltu"
-#: ../bin/doption.c:116
+#: ../bin/doption.c:115
msgid "Draw Ties"
msgstr "Tynnu Clymiadau"
-#: ../bin/doption.c:117
+#: ../bin/doption.c:116
msgid "Draw Centers"
msgstr "Canolfannau Lluniadu"
-#: ../bin/doption.c:118
+#: ../bin/doption.c:117
msgid "Two Rail Scale"
msgstr "Graddfa Dwy Reilffordd"
-#: ../bin/doption.c:119
+#: ../bin/doption.c:118
msgid "Map Scale"
msgstr "Graddfa Map"
-#: ../bin/doption.c:125
+#: ../bin/doption.c:124
msgid "Label Enable"
msgstr "Galluogi Label"
-#: ../bin/doption.c:126
+#: ../bin/doption.c:125
msgid "Label Scale"
msgstr "Graddfa Label"
-#: ../bin/doption.c:127
+#: ../bin/doption.c:126
msgid "Label Font Size"
msgstr "Maint Ffont Label"
-#: ../bin/doption.c:128
+#: ../bin/doption.c:127
msgid "Hot Bar Labels"
msgstr "Label Bar Poeth"
-#: ../bin/doption.c:129
+#: ../bin/doption.c:128
msgid "Layout Labels"
msgstr "Labeli Cynllun"
-#: ../bin/doption.c:130
+#: ../bin/doption.c:129
msgid "List Labels"
msgstr "Labeli Rhestr"
-#: ../bin/doption.c:133
+#: ../bin/doption.c:132
msgid "Car Labels"
msgstr "Labeli Ceir"
-#: ../bin/doption.c:134
+#: ../bin/doption.c:133
msgid "Train Update Delay"
msgstr "Oedi Diweddaru Trên"
@@ -4686,334 +4753,344 @@ msgstr "Oedi Diweddaru Trên"
msgid "Turning off AutoSave"
msgstr "Diffodd Auto-Save"
-#: ../bin/doption.c:186
+#: ../bin/doption.c:187
msgid "Turning on CheckPointing"
msgstr "Troi ar Checkpointing"
-#: ../bin/doption.c:200
+#: ../bin/doption.c:201
msgid "Display Options"
msgstr "Dewisiadau Arddangos"
-#: ../bin/doption.c:201
+#: ../bin/doption.c:203
msgid "Proto"
msgstr "Prototeip"
-#: ../bin/doption.c:202
+#: ../bin/doption.c:205
msgid "Proto/Manuf"
msgstr "Prototeip / Gwneuthurwr "
-#: ../bin/doption.c:203
+#: ../bin/doption.c:208
msgid "Proto/Manuf/Part Number"
msgstr "Prototeip / Gwneuthurwr / Rhif Rhan"
-#: ../bin/doption.c:204
+#: ../bin/doption.c:210
msgid "Proto/Manuf/Partno/Item"
msgstr "Prototeip / Gwneuthurwr / Rhif Rhan / Eitem"
-#: ../bin/doption.c:205
+#: ../bin/doption.c:211
msgid "Manuf/Proto"
msgstr "Gwneuthurwr / Prototeip "
-#: ../bin/doption.c:206
+#: ../bin/doption.c:214
msgid "Manuf/Proto/Part Number"
msgstr "Gwneuthurwr / Prototeip / Rhif Rhan"
-#: ../bin/doption.c:207
+#: ../bin/doption.c:216
msgid "Manuf/Proto/Partno/Item"
msgstr "Gwneuthurwr / Prototeip / Rhif Rhan / Eitem"
-#: ../bin/doption.c:237
+#: ../bin/doption.c:246
msgid "Single item selected, +Ctrl Add to selection"
msgstr "Eitem sengl wedi'i dewis, + Ctrl Ychwanegu at y dewis"
-#: ../bin/doption.c:237
+#: ../bin/doption.c:246
msgid "Add to selection, +Ctrl Single item selected"
msgstr "Ychwanegu at y dewis, + Ctrl Eitem sengl wedi'i dewis"
-#: ../bin/doption.c:238
+#: ../bin/doption.c:247
msgid "Deselect all on select nothing"
msgstr "Dad-ddewiswch bawb wrth ddewis dim"
-#: ../bin/doption.c:243
+#: ../bin/doption.c:252
msgid "Normal: Command List, Shift: Command Options"
msgstr "Arferol: Rhestr Reoli, Shift: Dewisiadau Gorchymyn"
-#: ../bin/doption.c:243
+#: ../bin/doption.c:252
msgid "Normal: Command Options, Shift: Command List"
msgstr "Arferol: Dewisiadau Gorchymyn, Sifft: Rhestr Reoli"
-#: ../bin/doption.c:246
+#: ../bin/doption.c:255
msgid "Default Command"
msgstr "Gorchymyn Diofyn"
-#: ../bin/doption.c:248
+#: ../bin/doption.c:257
msgid "Hide Selection Window"
msgstr "Cuddio Ffenestr Dewis"
-#: ../bin/doption.c:250
+#: ../bin/doption.c:259
msgid "Right Click"
msgstr "Cliciwch ar y dde"
-#: ../bin/doption.c:251
+#: ../bin/doption.c:260
msgid "Select Mode"
msgstr "Dewiswch Modd"
-#: ../bin/doption.c:276
+#: ../bin/doption.c:286
msgid "Command Options"
msgstr "Dewisiadau Gorchymyn"
-#: ../bin/doption.c:299
+#: ../bin/doption.c:310
msgid "16 px"
msgstr "16 px"
-#: ../bin/doption.c:299
+#: ../bin/doption.c:310
msgid "24 px"
msgstr "24 px"
-#: ../bin/doption.c:299
+#: ../bin/doption.c:310
msgid "32 px"
msgstr "32 px"
-#: ../bin/doption.c:300
+#: ../bin/doption.c:311
msgid "English"
msgstr "Ymerodrol"
-#: ../bin/doption.c:300
+#: ../bin/doption.c:311
msgid "Metric"
msgstr "Metrig"
-#: ../bin/doption.c:301
+#: ../bin/doption.c:312
msgid "Polar"
msgstr "Pegynol"
-#: ../bin/doption.c:301
+#: ../bin/doption.c:312
msgid "Cartesian"
msgstr "Cartesaidd"
-#: ../bin/doption.c:302
+#: ../bin/doption.c:313
msgid "Balloon Help"
msgstr "Cymorth Balŵn"
-#: ../bin/doption.c:303
+#: ../bin/doption.c:314
msgid "Show FlexTrack in HotBar"
msgstr "Dangos Trac Hyblyg yn HotBar"
-#: ../bin/doption.c:304
+#: ../bin/doption.c:315
msgid "Load Last Layout"
msgstr "Llwythwch y Cynllun Diwethaf"
-#: ../bin/doption.c:304
+#: ../bin/doption.c:315
msgid "Start New Layout"
msgstr "Dechreuwch Gynllun Newydd"
-#: ../bin/doption.c:307
+#: ../bin/doption.c:318
msgid "Icon Size"
msgstr "Maint eicon"
-#: ../bin/doption.c:308
+#: ../bin/doption.c:319
msgid "Angles"
msgstr "Onglau"
-#: ../bin/doption.c:309
+#: ../bin/doption.c:321
msgid "Units"
msgstr "Unedau mesur"
-#: ../bin/doption.c:311
+#: ../bin/doption.c:323
msgid "Length Format"
msgstr "Fformat Hyd"
-#: ../bin/doption.c:312
+#: ../bin/doption.c:324
msgid "Min Track Length"
msgstr "Hyd Trac Lleiaf"
-#: ../bin/doption.c:313
+#: ../bin/doption.c:325
msgid "Connection Distance"
msgstr "Pellter Cysylltiad"
-#: ../bin/doption.c:314
+#: ../bin/doption.c:326
msgid "Connection Angle"
msgstr "Ongl Cysylltiad"
-#: ../bin/doption.c:315
+#: ../bin/doption.c:327
msgid "Turntable Angle"
msgstr "Ongl Trofwrdd"
-#: ../bin/doption.c:316
+#: ../bin/doption.c:328
msgid "Max Coupling Speed"
msgstr "Cyflymder Cyplu Uchaf"
-#: ../bin/doption.c:319
+#: ../bin/doption.c:331
msgid "Drag Distance"
msgstr "Pellter Llusgo"
-#: ../bin/doption.c:320
+#: ../bin/doption.c:332
msgid "Drag Timeout"
msgstr "Llusgwch Amserlen"
-#: ../bin/doption.c:321
+#: ../bin/doption.c:333
msgid "Min Grid Spacing"
msgstr "Lleiafswm Grid"
-#: ../bin/doption.c:323
+#: ../bin/doption.c:335
msgid "Check Point Frequency"
msgstr "Amledd Checkpoint"
-#: ../bin/doption.c:325
+#: ../bin/doption.c:337
msgid "Autosave Checkpoint Frequency"
msgstr "Amledd pwynt gwirio autosave"
-#: ../bin/doption.c:326
+#: ../bin/doption.c:338
msgid "On Program Startup"
msgstr "Ar gychwyn rhaglen"
-#: ../bin/doption.c:336 ../bin/doption.c:340 ../bin/doption.c:357
+#: ../bin/doption.c:348 ../bin/doption.c:352 ../bin/doption.c:370
msgid "999.999"
msgstr "999.999"
-#: ../bin/doption.c:337
+#: ../bin/doption.c:349
msgid "999.999999"
msgstr "999.999999"
-#: ../bin/doption.c:338
+#: ../bin/doption.c:350
msgid "999.99999"
msgstr "999.99999"
-#: ../bin/doption.c:339
+#: ../bin/doption.c:351
msgid "999.9999"
msgstr "999.9999"
-#: ../bin/doption.c:341 ../bin/doption.c:358
+#: ../bin/doption.c:353 ../bin/doption.c:371
msgid "999.99"
msgstr "999.99"
-#: ../bin/doption.c:342 ../bin/doption.c:359
+#: ../bin/doption.c:354 ../bin/doption.c:372
msgid "999.9"
msgstr "999.9"
-#: ../bin/doption.c:343
+#: ../bin/doption.c:355
msgid "999 7/8"
msgstr "999 7/8"
-#: ../bin/doption.c:344
+#: ../bin/doption.c:356
msgid "999 63/64"
msgstr "999 63/64"
-#: ../bin/doption.c:345
+#: ../bin/doption.c:357
msgid "999' 11.999\""
msgstr "999' 11.999\""
-#: ../bin/doption.c:346
+#: ../bin/doption.c:358
msgid "999' 11.99\""
msgstr "999' 11.99\""
-#: ../bin/doption.c:347
+#: ../bin/doption.c:359
msgid "999' 11.9\""
msgstr "999' 11.9\""
-#: ../bin/doption.c:348
+#: ../bin/doption.c:360
msgid "999' 11 7/8\""
msgstr "999' 11 7/8\""
-#: ../bin/doption.c:349
+#: ../bin/doption.c:361
msgid "999' 11 63/64\""
msgstr "999' 11 63/64\""
-#: ../bin/doption.c:350
+#: ../bin/doption.c:362
msgid "999ft 11.999in"
msgstr "999ft 11.999in"
-#: ../bin/doption.c:351
+#: ../bin/doption.c:363
msgid "999ft 11.99in"
msgstr "999ft 11.99in"
-#: ../bin/doption.c:352
+#: ../bin/doption.c:364
msgid "999ft 11.9in"
msgstr "999ft 11.9in"
-#: ../bin/doption.c:353
+#: ../bin/doption.c:365
msgid "999ft 11 7/8in"
msgstr "999ft 11 7/8in"
-#: ../bin/doption.c:354
+#: ../bin/doption.c:366
msgid "999ft 11 63/64in"
msgstr "999ft 11 63/64in"
-#: ../bin/doption.c:360
+#: ../bin/doption.c:373
msgid "999.999mm"
msgstr "999.999mm"
-#: ../bin/doption.c:361
+#: ../bin/doption.c:374
msgid "999.99mm"
msgstr "999.99mm"
-#: ../bin/doption.c:362
+#: ../bin/doption.c:375
msgid "999.9mm"
msgstr "999.9mm"
-#: ../bin/doption.c:363
+#: ../bin/doption.c:376
msgid "999.999cm"
msgstr "999.999cm"
-#: ../bin/doption.c:364
+#: ../bin/doption.c:377
msgid "999.99cm"
msgstr "999.99cm"
-#: ../bin/doption.c:365
+#: ../bin/doption.c:378
msgid "999.9cm"
msgstr "999.9cm"
-#: ../bin/doption.c:366
+#: ../bin/doption.c:379
msgid "999.999m"
msgstr "999.999m"
-#: ../bin/doption.c:367
+#: ../bin/doption.c:380
msgid "999.99m"
msgstr "999.99m"
-#: ../bin/doption.c:368
+#: ../bin/doption.c:381
msgid "999.9m"
msgstr "999.9m"
-#: ../bin/doption.c:497
+#: ../bin/doption.c:516
msgid "Preferences"
msgstr "Dewisiadau"
-#: ../bin/doption.c:536
+#: ../bin/doption.c:560
msgid "Marker"
msgstr "Marciwr"
-#: ../bin/doption.c:537
+#: ../bin/doption.c:561
msgid "Border"
msgstr "Ffin"
-#: ../bin/doption.c:538
+#: ../bin/doption.c:562
msgid "Primary Axis"
msgstr "Echel Cynradd"
-#: ../bin/doption.c:539
+#: ../bin/doption.c:563
msgid "Secondary Axis"
msgstr "Echel Eilaidd"
-#: ../bin/doption.c:540
+#: ../bin/doption.c:564
msgid "Normal Track"
msgstr "Trac Arferol"
-#: ../bin/doption.c:541
+#: ../bin/doption.c:565
msgid "Selected Track"
msgstr "Trac Dethol"
-#: ../bin/doption.c:542
+#: ../bin/doption.c:566
msgid "Profile Path"
msgstr "Llwybr Proffil"
-#: ../bin/doption.c:543
+#: ../bin/doption.c:567
msgid "Exception Track"
msgstr "Trac Eithriad"
-#: ../bin/doption.c:544
+#: ../bin/doption.c:568
msgid "Track Ties"
msgstr "Cysgwyr rheilffordd"
+#: ../bin/doption.c:569
+#, fuzzy
+msgid "Bridge Base"
+msgstr "Traciau pont"
+
+#: ../bin/doption.c:570
+#, fuzzy
+msgid "Track Roadbed"
+msgstr "Radiws Trac Lleiaf"
+
#: ../bin/dpricels.c:42
msgid "Price"
msgstr "Pris"
@@ -5026,15 +5103,15 @@ msgstr "Trac Hyblyg"
msgid "costs"
msgstr "costau"
-#: ../bin/dpricels.c:151
+#: ../bin/dpricels.c:166
msgid "Price List"
msgstr "Rhestr pris"
-#: ../bin/dprmfile.c:66 ../bin/paramfilesearch_ui.c:51
+#: ../bin/dprmfile.c:66 ../bin/paramfilesearch_ui.c:50
msgid "Show File Names"
msgstr "Dangos Enwau Ffeil"
-#: ../bin/dprmfile.c:75 ../bin/paramfilesearch_ui.c:78
+#: ../bin/dprmfile.c:75 ../bin/paramfilesearch_ui.c:77
msgid "Select all"
msgstr "Dewiswch Bawb"
@@ -5050,64 +5127,64 @@ msgstr "Llyfrgell ..."
msgid "Browse..."
msgstr "Porwch ..."
-#: ../bin/dprmfile.c:324
+#: ../bin/dprmfile.c:328
#, c-format
msgid "%d parameter files reloaded."
msgstr "%d ffeiliau paramedr wedi'u hail-lwytho."
-#: ../bin/dprmfile.c:326
+#: ../bin/dprmfile.c:330
msgid "One parameter file reloaded."
msgstr "ail-lwythwyd un ffeil baramedr."
-#: ../bin/dprmfile.c:427
+#: ../bin/dprmfile.c:431
msgid "Parameter Files"
msgstr "Ffeiliau paramedr"
-#: ../bin/dprmfile.c:430
+#: ../bin/dprmfile.c:434
msgid "Load Parameters"
msgstr "Paramedrau llwyth"
-#: ../bin/dprmfile.c:430
+#: ../bin/dprmfile.c:434
msgid "Parameter files (*.xtp)|*.xtp"
msgstr "Ffeiliau paramedr (*.xtp)|*.xtp"
-#: ../bin/draw.c:2182
+#: ../bin/draw.c:2352
msgid "Macro Zoom Mode"
msgstr "Modd Chwyddo Macro"
-#: ../bin/draw.c:2189
+#: ../bin/draw.c:2360
msgid "Scale 1:1 - Use Ctrl+ to go to Macro Zoom Mode"
msgstr "Graddfa 1: 1 - Defnyddiwch Ctrl + i fynd i'r Modd Chwyddo Macro"
-#: ../bin/draw.c:2193
+#: ../bin/draw.c:2365
msgid "Preset Zoom In Value selected. Shift+Ctrl+PageDwn to reset value"
msgstr "Dewis Chwyddo Rhagosodedig. Shift + Ctrl + PageDwn i ailosod gwerth"
-#: ../bin/draw.c:2197
+#: ../bin/draw.c:2369
#, c-format
msgid "Zoom In Program Value %ld:1, Shift+PageDwn to use"
msgstr "Chwyddo Mewn Gwerth Rhaglen %ld: 1, Shift+PageDwn i'w ddefnyddio"
-#: ../bin/draw.c:2273
+#: ../bin/draw.c:2450
msgid "At Maximum Zoom Out"
msgstr "Ar y Chwyddo Uchaf Uchaf"
-#: ../bin/draw.c:2278
+#: ../bin/draw.c:2457
msgid "Preset Zoom Out Value selected. Shift+Ctrl+PageUp to reset value"
msgstr ""
-"Gwerth Chwyddo Allan Rhagosodedig wedi'i ddewis. Shift+Ctrl+PageUp i ailosod"
-" gwerth"
+"Gwerth Chwyddo Allan Rhagosodedig wedi'i ddewis. Shift+Ctrl+PageUp i ailosod "
+"gwerth"
-#: ../bin/draw.c:2282
+#: ../bin/draw.c:2461
#, c-format
msgid "Zoom Out Program Value %ld:1 set, Shift+PageUp to use"
msgstr "Gwerth Rhaglen Chwyddo Allan %ld: 1 set, Shift+PageUp i'w ddefnyddio"
-#: ../bin/draw.c:2993
+#: ../bin/draw.c:3281
msgid "Map"
msgstr "Map"
-#: ../bin/draw.c:3039
+#: ../bin/draw.c:3323
msgid ""
"Left-Drag to pan, Ctrl+Left-Drag to zoom, 0 to set origin to zero, 1-9 to "
"zoom#, e to set to extents"
@@ -5115,26 +5192,25 @@ msgstr ""
"Chwith-Llusgwch i badell, Ctrl+Chwith-Llusgwch i chwyddo, '0' i osod "
"tarddiad i sero, '1-9' i chwyddo#, 'e' i'w osod i raddau"
-#: ../bin/draw.c:3046
+#: ../bin/draw.c:3330
msgid "Pan Mode - drag point to new position"
msgstr "Modd Pan - pwynt llusgo i'w safle newydd"
-#: ../bin/draw.c:3053
+#: ../bin/draw.c:3337
msgid "Zoom Mode - drag area to zoom"
msgstr "Modd Chwyddo - llusgo ardal i chwyddo"
-#: ../bin/draw.c:3079
+#: ../bin/draw.c:3365
msgid "Can't move any further in that direction"
msgstr "Methu symud ymhellach i'r cyfeiriad hwnnw"
-#: ../bin/draw.c:3081
-msgid ""
-"Left click to pan, right click to zoom, 'o' for origin, 'e' for extents"
+#: ../bin/draw.c:3368
+msgid "Left click to pan, right click to zoom, 'o' for origin, 'e' for extents"
msgstr ""
-"Cliciwch ar y chwith i badell, cliciwch ar y dde i chwyddo, 'o' am darddiad,"
-" 'e' am raddau"
+"Cliciwch ar y chwith i badell, cliciwch ar y dde i chwyddo, 'o' am darddiad, "
+"'e' am raddau"
-#: ../bin/draw.c:3118
+#: ../bin/draw.c:3407
msgid ""
"Left Drag to Pan, +CTRL to Zoom, 0 to set Origin to 0,0, 1-9 to Zoom#, e to "
"set to Extent"
@@ -5142,159 +5218,150 @@ msgstr ""
"Llusgwch i'r chwith i Pan, +CTRL i Zoom, '0' i osod Origin i 0,0, '1-9' i "
"Zoom#, 'e' i'w osod i Faint"
-#: ../bin/draw.c:3196
+#: ../bin/draw.c:3486
msgid "Pan/Zoom"
msgstr "Pan / Chwyddo "
-#: ../bin/draw.c:3207
+#: ../bin/draw.c:3502
msgid "Zoom to 1:1 - '1'"
msgstr "Chwyddo i 1:1 - '1'"
-#: ../bin/draw.c:3208
+#: ../bin/draw.c:3504
msgid "Zoom to 1:2 - '2'"
msgstr "Chwyddo i 1:2 - '2'"
-#: ../bin/draw.c:3209
+#: ../bin/draw.c:3506
msgid "Zoom to 1:3 - '3'"
msgstr "Chwyddo i 1:3 - '3'"
-#: ../bin/draw.c:3210
+#: ../bin/draw.c:3508
msgid "Zoom to 1:4 - '4'"
msgstr "Chwyddo i 1:4 - '4'"
-#: ../bin/draw.c:3211
+#: ../bin/draw.c:3510
msgid "Zoom to 1:5 - '5'"
msgstr "Chwyddo i 1:5 - '5'"
-#: ../bin/draw.c:3212
+#: ../bin/draw.c:3512
msgid "Zoom to 1:6 - '6'"
msgstr "Chwyddo i 1:6 - '6'"
-#: ../bin/draw.c:3213
+#: ../bin/draw.c:3514
msgid "Zoom to 1:7 - '7'"
msgstr "Chwyddo i 1:7 - '7'"
-#: ../bin/draw.c:3214
+#: ../bin/draw.c:3516
msgid "Zoom to 1:8 - '8'"
msgstr "Chwyddo i 1:8 - '8'"
-#: ../bin/draw.c:3215
+#: ../bin/draw.c:3518
msgid "Zoom to 1:9 - '9'"
msgstr "Chwyddo i 1:9 - '9'"
-#: ../bin/draw.c:3219
+#: ../bin/draw.c:3524
msgid "Pan center here - 'c'"
msgstr "Canolfan sosban yma - 'c'"
-#: ../bin/drawgeom.c:70 ../bin/drawgeom.c:86
+#: ../bin/drawgeom.c:72 ../bin/drawgeom.c:89
msgid "Create Lines"
msgstr "Creu Llinellau"
-#: ../bin/drawgeom.c:287
-msgid "+Alt for Magnetic Snap"
-msgstr "+Alt ar gyfer Snap Magnetig"
-
-#: ../bin/drawgeom.c:289
-msgid "+Alt to inhibit Magnetic Snap"
-msgstr "+Alt i atal Snap Magnetig"
-
-#: ../bin/drawgeom.c:412
+#: ../bin/drawgeom.c:443
msgid "Drag next point, +Alt reverse Magnetic Snap or +Ctrl lock to 90 deg"
msgstr ""
-"Llusgwch y pwynt nesaf, +Alt gwrthdroi Snap Magnetig neu +Ctrl clo i 90 "
-"gradd"
+"Llusgwch y pwynt nesaf, +Alt gwrthdroi Snap Magnetig neu +Ctrl clo i 90 gradd"
-#: ../bin/drawgeom.c:423
+#: ../bin/drawgeom.c:454
msgid ""
"Drag next point, +Alt reverse Magnetic Snap, or +Ctrl to lock to 90 degrees"
msgstr ""
-"Llusgwch y pwynt nesaf, + Alt gwrthdroi Snap Magnetig, neu +Ctrl i gloi i 90"
-" gradd"
+"Llusgwch y pwynt nesaf, + Alt gwrthdroi Snap Magnetig, neu +Ctrl i gloi i 90 "
+"gradd"
-#: ../bin/drawgeom.c:454
+#: ../bin/drawgeom.c:487
msgid "Drag to set radius"
msgstr "Llusgwch i osod radiws"
-#: ../bin/drawgeom.c:468
+#: ../bin/drawgeom.c:501
msgid "Drag set box size"
msgstr "Llusgwch faint blwch gosod"
-#: ../bin/drawgeom.c:509
+#: ../bin/drawgeom.c:543
msgid "+Alt - reverse Magnetic Snap or +Ctrl - lock to 90 deg"
msgstr "+Alt - Snap Magnetig gwrthdroi neu +Ctrl - cloi i 90 gradd"
-#: ../bin/drawgeom.c:580 ../bin/drawgeom.c:637
+#: ../bin/drawgeom.c:625 ../bin/drawgeom.c:691
#, c-format
msgid "Length = %s, Angle = %0.2f"
msgstr "Hyd = %s, Ongle = %0.2f"
-#: ../bin/drawgeom.c:658
+#: ../bin/drawgeom.c:713
#, c-format
msgid "Straight Line: Length=%s Angle=%0.3f"
msgstr "Llinell syth: Hyd=%s Ongle=%0.3f"
-#: ../bin/drawgeom.c:680
+#: ../bin/drawgeom.c:735
#, c-format
msgid "Curved Line: Radius=%s Angle=%0.3f Length=%s"
msgstr "Llinell Grom: Radiws=%s Ongle=%0.3f Hyd=%s"
-#: ../bin/drawgeom.c:703 ../bin/drawgeom.c:711
+#: ../bin/drawgeom.c:761 ../bin/drawgeom.c:769
#, c-format
msgid "Radius = %s"
msgstr "Radiws = %s"
-#: ../bin/drawgeom.c:722
+#: ../bin/drawgeom.c:780
#, c-format
msgid "Width = %s, Height = %s"
msgstr "Lled = %s, Uchder = %s"
-#: ../bin/drawgeom.c:783
+#: ../bin/drawgeom.c:841
msgid "Drag on Red arrows to adjust curve"
msgstr "Llusgwch saethau coch i addasu'r gromlin"
-#: ../bin/drawgeom.c:1207
+#: ../bin/drawgeom.c:1298
msgid "Select points or use context menu"
msgstr "Dewis pwyntiau neu ddefnyddio dewislen cyd-destun"
-#: ../bin/drawgeom.c:1463
+#: ../bin/drawgeom.c:1567
#, c-format
msgid "Length = %s, Last angle = %0.2f"
msgstr "Hyd = %s, Ongl olaf = %0.2f"
-#: ../bin/drawgeom.c:1623
+#: ../bin/drawgeom.c:1736
msgid "Point Deleted"
msgstr "Pwynt wedi'i ddileu"
-#: ../bin/drawgeom.c:2048
+#: ../bin/drawgeom.c:2194
msgid "Not close to end of line"
msgstr "Ddim yn agos at ddiwedd y llinell"
-#: ../bin/drawgeom.c:2104
+#: ../bin/drawgeom.c:2252
msgid "Not close to ends or middle of mine, reselect"
msgstr "Not close to ends or middle of line, reselect"
-#: ../bin/drawgeom.c:2153 ../bin/drawgeom.c:2389
+#: ../bin/drawgeom.c:2303 ../bin/drawgeom.c:2550
msgid "Drag to Move Corner Point"
msgstr "Llusgwch i Symud Pwynt Cornel"
-#: ../bin/drawgeom.c:2160
+#: ../bin/drawgeom.c:2311
msgid "Drag to Move Edge "
msgstr "Llusgwch i Symud Ymyl"
-#: ../bin/drawgeom.c:2234
+#: ../bin/drawgeom.c:2383
#, c-format
msgid "Length = %0.3f Angle = %0.3f"
msgstr "Hyd = %0.3f Ongle = %0.3f"
-#: ../bin/drawgeom.c:2384
+#: ../bin/drawgeom.c:2544
msgid "Drag to Move Edge"
msgstr "Llusgwch i Symud Ymyl"
-#: ../bin/dxfoutput.c:230
+#: ../bin/dxfoutput.c:244
msgid "Export to DXF"
msgstr "Allforio i DXF"
-#: ../bin/fileio.c:214
+#: ../bin/fileio.c:223
msgid ""
"\n"
"Do you want to continue?"
@@ -5302,116 +5369,127 @@ msgstr ""
"\n"
"Ydych chi am barhau?"
-#: ../bin/fileio.c:580
+#: ../bin/fileio.c:595
#, c-format
msgid "putTitle: title too long: %s"
msgstr "putTitle: teitl yn rhy hir: %s"
-#: ../bin/fileio.c:610
+#: ../bin/fileio.c:627
msgid "Unnamed Trackplan"
msgstr "Cynllun Trac Dienw"
-#: ../bin/fileio.c:611
+#: ../bin/fileio.c:628
msgid " (R/O)"
msgstr " (R/O)"
-#: ../bin/fileio.c:751
+#: ../bin/fileio.c:779
msgid "Unknown layout file object - skip until next good object?"
msgstr "Gwrthrych ffeil cynllun anhysbys - sgipiwch tan y gwrthrych da nesaf?"
-#: ../bin/fileio.c:803 ../bin/fileio.c:987
+#: ../bin/fileio.c:835 ../bin/fileio.c:1022
msgid "Track"
msgstr "Trac"
-#: ../bin/fileio.c:803
+#: ../bin/fileio.c:836
msgid "Not Found"
msgstr "Heb ei ddarganfod"
-#: ../bin/fileio.c:1168
+#: ../bin/fileio.c:1265
msgid "AutoSave Tracks As"
msgstr "Traciau AutoSave Fel"
-#: ../bin/fileio.c:1183
+#: ../bin/fileio.c:1280
msgid "Save Tracks"
msgstr "Arbed Traciau"
-#: ../bin/fileio.c:1200
+#: ../bin/fileio.c:1297
msgid "Save Tracks As"
msgstr "Arbed Traciau Fel"
-#: ../bin/fileio.c:1212
+#: ../bin/fileio.c:1309
msgid "Open Tracks"
msgstr "Traciau Agored"
-#: ../bin/fileio.c:1227
+#: ../bin/fileio.c:1323
msgid "Example Tracks"
msgstr "Traciau Enghreifftiol"
-#: ../bin/fileio.c:1435
+#: ../bin/fileio.c:1400
+msgid "File AutoSaved"
+msgstr "Ffeil Auto-Saved"
+
+#: ../bin/fileio.c:1575
#, c-format
msgid "Module - %s"
msgstr "Modiwl - %s"
-#: ../bin/fileio.c:1440 ../bin/fileio.c:1460
+#: ../bin/fileio.c:1580 ../bin/fileio.c:1601
msgid "Import Tracks"
msgstr "Traciau Mewnforio"
-#: ../bin/fileio.c:1521
+#: ../bin/fileio.c:1601
+#, fuzzy
+msgid "Import Module"
+msgstr "Modiwl Mewnforio"
+
+#: ../bin/fileio.c:1659
msgid "Export Tracks"
msgstr "Traciau Allforio"
-#: ../bin/fileio.c:1542
+#: ../bin/fileio.c:1680
msgid "Clipboard"
msgstr "Clipfwrdd"
-#: ../bin/filenoteui.c:51 ../bin/linknoteui.c:45 ../bin/textnoteui.c:37
+#: ../bin/filenoteui.c:60 ../bin/linknoteui.c:48 ../bin/textnoteui.c:41
msgid "Position X"
msgstr "Swydd X"
-#: ../bin/filenoteui.c:53 ../bin/linknoteui.c:47 ../bin/textnoteui.c:39
+#: ../bin/filenoteui.c:62 ../bin/linknoteui.c:50 ../bin/textnoteui.c:43
msgid "Position Y"
msgstr "Swydd Y"
-#: ../bin/filenoteui.c:57 ../bin/linknoteui.c:51
+#: ../bin/filenoteui.c:66 ../bin/linknoteui.c:54
msgid "Title"
msgstr "Teitl"
-#: ../bin/filenoteui.c:59 ../bin/trknote.c:57
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:88
+#: ../bin/filenoteui.c:68 ../bin/trknote.c:54
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:89
msgid "Document"
msgstr "Dogfen"
-#: ../bin/filenoteui.c:61
+#: ../bin/filenoteui.c:70
msgid "Select..."
msgstr "Dewiswch ..."
-#: ../bin/filenoteui.c:63 ../bin/linknoteui.c:55
+#: ../bin/filenoteui.c:72 ../bin/linknoteui.c:58
msgid "Open..."
msgstr "Ar agor .."
-#: ../bin/filenoteui.c:125
+#: ../bin/filenoteui.c:134
msgid "Add Document"
msgstr "Ychwanegu Dogfen"
-#: ../bin/filenoteui.c:147
+#: ../bin/filenoteui.c:157
msgid "The file doesn't exist or cannot be read!"
msgstr "Nid yw'r ffeil yn bodoli neu ni ellir ei darllen!"
-#: ../bin/filenoteui.c:287
+#: ../bin/filenoteui.c:297
#, c-format
msgid "Document(%d) Layer=%d %-.80s [%s]"
msgstr "Dogfen(%d) Haed=%d %-.80s [%s]"
-#: ../bin/filenoteui.c:299
-msgid "Update document"
+#: ../bin/filenoteui.c:318
+#, fuzzy
+msgid "Update Document"
msgstr "Dogfen Ddiweddaru"
-#: ../bin/filenoteui.c:313
+#: ../bin/filenoteui.c:330
msgid "Describe the file"
msgstr "Disgrifiwch y ffeil"
-#: ../bin/filenoteui.c:319
-msgid "Attach document"
+#: ../bin/filenoteui.c:338
+#, fuzzy
+msgid "Attach Document"
msgstr "Atodwch y ddogfen"
#: ../bin/i18n.c:57
@@ -5419,868 +5497,822 @@ msgstr "Atodwch y ddogfen"
msgid "Gettext initialized (PACKAGE=%s, LOCALEDIR=%s, LC_ALL=%s).\n"
msgstr "Gettext ymgychwyn (PACKAGE=%s, LOCALEDIR=%s, LC_ALL=%s).\n"
-#: ../bin/layout.c:404
+#: ../bin/layout.c:553 ../bin/layout.c:994
#, c-format
msgid "Unable to load Image File - %s"
msgstr "Methu llwytho Ffeil Delwedd - %s"
-#: ../bin/layout.c:470
+#: ../bin/layout.c:630
msgid "Load Background"
msgstr "Cefndir Llwyth"
-#: ../bin/layout.c:493
+#: ../bin/layout.c:657
msgid "Room Width"
msgstr "Lled Ystafell"
-#: ../bin/layout.c:494
+#: ../bin/layout.c:658
msgid " Height"
msgstr " Uchder"
-#: ../bin/layout.c:495
+#: ../bin/layout.c:659
msgid "Layout Title"
msgstr "Teitl y Cynllun"
-#: ../bin/layout.c:496
+#: ../bin/layout.c:660
msgid "Subtitle"
msgstr "Is-deitl"
-#: ../bin/layout.c:500
-msgid " Gauge"
-msgstr " Medrydd"
-
-#: ../bin/layout.c:502
-msgid "Min Track Radius"
-msgstr "Radiws Trac Lleiaf"
-
-#: ../bin/layout.c:503
-msgid " Max Track Grade (%)"
-msgstr " Gradd Trac Uchaf (%)"
-
-#: ../bin/layout.c:505
+#: ../bin/layout.c:669
msgid "Background File Path"
msgstr "Llwybr Ffeil Cefndir"
-#: ../bin/layout.c:506
+#: ../bin/layout.c:670
msgid "Browse ..."
msgstr "Porwch ..."
-#: ../bin/layout.c:509
+#: ../bin/layout.c:673
msgid "Background PosX,Y"
msgstr "Sefyllfa Gefndir X,Y"
-#: ../bin/layout.c:513
+#: ../bin/layout.c:677
msgid "Background Size"
msgstr "Maint Cefndir"
-#: ../bin/layout.c:515
+#: ../bin/layout.c:679
msgid "Background Screen %"
msgstr "Sgrin Cefndir %"
-#: ../bin/layout.c:517
+#: ../bin/layout.c:681
msgid "Background Angle"
msgstr "Ongle Cefndir"
-#: ../bin/layout.c:518
+#: ../bin/layout.c:682
msgid "Named Settings File"
msgstr "Ffeil Gosodiadau a Enwyd"
-#: ../bin/layout.c:519
+#: ../bin/layout.c:683
msgid "Write"
msgstr "Ysgrifennu"
-#: ../bin/layout.c:520
+#: ../bin/layout.c:684
msgid "Read"
msgstr "Darllenwch"
-#: ../bin/layout.c:611
+#: ../bin/layout.c:818
msgid "Layout Options"
msgstr "Opsiynau Cynllun"
-#: ../bin/layout.c:797
+#: ../bin/layout.c:1052
msgid "Read Settings"
msgstr "Darllenwch Gosodiadau"
-#: ../bin/layout.c:798 ../bin/layout.c:821
+#: ../bin/layout.c:1053 ../bin/layout.c:1087
msgid "Settings File (*.xset)|*.xset"
msgstr "Ffeil Gosodiadau (*.xset)|*.xset"
-#: ../bin/layout.c:820
+#: ../bin/layout.c:1086
msgid "Write Settings"
msgstr "Ysgrifennwch Gosodiadau"
-#: ../bin/linknoteui.c:53
+#: ../bin/linknoteui.c:56
msgid "URL"
msgstr "URL"
-#: ../bin/linknoteui.c:102
-#, c-format
-msgid ""
-"The entered URL is too long. The maximum allowed length is %d. Please edit "
-"the entered value."
-msgstr ""
-"Mae'r URL a gofnodwyd yn rhy hir. Yr hyd mwyaf a ganiateir yw %d. Golygwch y"
-" gwerth a gofnodwyd."
-
-#: ../bin/linknoteui.c:105
-msgid "Re-edit"
-msgstr "Ail-olygu"
-
-#: ../bin/linknoteui.c:237
-msgid "Update link"
+#: ../bin/linknoteui.c:230
+#, fuzzy
+msgid "Update Webink"
msgstr "Diweddariad Dolen"
-#: ../bin/linknoteui.c:255
-msgid "Create link"
+#: ../bin/linknoteui.c:248
+#, fuzzy
+msgid "Create Weblink"
msgstr "Creu Cyswllt"
-#: ../bin/macro.c:64
+#: ../bin/macro.c:67
msgid "Message"
msgstr "Neges"
-#: ../bin/macro.c:152
+#: ../bin/macro.c:166
msgid "Recording"
msgstr "Recordio"
-#: ../bin/macro.c:187
-#, c-format
+#: ../bin/macro.c:206 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1309
msgid "End of Playback. Hit Step to exit\n"
msgstr "Diwedd y Chwarae. Taro Cam i adael\n"
-#: ../bin/macro.c:251
+#: ../bin/macro.c:271
msgid "Record"
msgstr "Cofnod"
-#: ../bin/macro.c:646
+#: ../bin/macro.c:686
msgid "Step"
msgstr "Cam"
-#: ../bin/macro.c:649 ../bin/macro.c:1530
+#: ../bin/macro.c:689 ../bin/macro.c:1560
msgid "Next"
msgstr "Nesaf"
-#: ../bin/macro.c:652 ../bin/misc.c:779 ../bin/track.c:1152
+#: ../bin/macro.c:692 ../bin/misc.c:696 ../bin/track.c:1104
msgid "Quit"
msgstr "Adael"
-#: ../bin/macro.c:655 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:590
+#: ../bin/macro.c:695 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:631
msgid "Speed"
msgstr "Cyflymder"
-#: ../bin/macro.c:806 ../bin/macro.c:853
+#: ../bin/macro.c:855 ../bin/track.c:1344
msgid "Regression"
msgstr "Atchweliad"
-#: ../bin/macro.c:1017 ../bin/macro.c:1386
+#: ../bin/macro.c:1010 ../bin/macro.c:1410
msgid "Demo"
msgstr "Arddangos"
-#: ../bin/macro.c:1206
+#: ../bin/macro.c:1219
#, c-format
msgid "Elapsed time %lu\n"
msgstr "Amser a aeth heibio %lu\n"
-#: ../bin/macro.c:1307
+#: ../bin/macro.c:1329
msgid "Playback"
msgstr "Chwarae"
-#: ../bin/macro.c:1389
+#: ../bin/macro.c:1414
msgid "Slowest"
msgstr "Mwyaf Araf"
-#: ../bin/macro.c:1390
+#: ../bin/macro.c:1415
msgid "Slow"
msgstr "Araf"
-#: ../bin/macro.c:1392
+#: ../bin/macro.c:1417
msgid "Fast"
msgstr "Cyflym"
-#: ../bin/macro.c:1393
+#: ../bin/macro.c:1418
msgid "Faster"
msgstr "Cyflymach"
-#: ../bin/macro.c:1394
+#: ../bin/macro.c:1419
msgid "Fastest"
msgstr "Cyflymaf"
-#: ../bin/macro.c:1513
+#: ../bin/macro.c:1542
msgid "Can not find PARAMETER playback proc"
msgstr "Methu dod o hyd i proc chwarae PARAMETER"
-#: ../bin/misc.c:148
-msgid "No Messages"
-msgstr "Dim Negeseuon"
-
-#: ../bin/misc.c:488 ../bin/misc.c:491
-msgid "ABORT"
-msgstr "Erthyliad"
-
-#: ../bin/misc.c:490
-msgid ""
-"\n"
-"Do you want to save your layout?"
-msgstr ""
-"\n"
-"Ydych chi am arbed eich cynllun?"
-
-#: ../bin/misc.c:572
-#, c-format
-msgid "No help for %s"
-msgstr "Dim help ar gyfer %s"
-
-#: ../bin/misc.c:674
-msgid ""
-"Save changes to the layout design before closing?\n"
-"\n"
-"If you don't save now, your unsaved changes will be discarded."
-msgstr ""
-"Arbedwch newidiadau i ddyluniad y cynllun cyn cau?\n"
-"\n"
-"Os na arbedwch nawr, bydd eich newidiadau heb eu cadw yn cael eu taflu."
-
-#: ../bin/misc.c:676 ../bin/misc.c:2516
-msgid "&Save"
-msgstr "&Arbedwch"
-
-#: ../bin/misc.c:676 ../bin/misc.c:711
-msgid "&Cancel"
-msgstr "&Canslo"
-
-#: ../bin/misc.c:676
-msgid "&Don't Save"
-msgstr "&Peidiwch ag Arbed"
-
-#: ../bin/misc.c:700
-msgid "examples"
-msgstr "Enghreifftiau"
-
-#: ../bin/misc.c:709
-msgid ""
-"Do you want to return to the last saved state?\n"
-"\n"
-"Revert will cause all changes done since last save to be lost."
-msgstr ""
-"Ydych chi eisiau dychwelyd i'r wladwriaeth ddiwethaf a arbedwyd?\n"
-"\n"
-"Bydd dychwelyd yn achosi i'r holl newidiadau a wnaed ers yr arbediad diwethaf gael eu colli. "
-
-#: ../bin/misc.c:711
-msgid "&Revert"
-msgstr "&Dychwelwch"
-
-#: ../bin/misc.c:932
-msgid "XTrackCAD Font"
-msgstr "XTrackCAD Ffont"
-
-#: ../bin/misc.c:993
-#, c-format
-msgid "No balloon help for %s\n"
-msgstr "Dim help balŵn ar gyfer %s\n"
-
-#: ../bin/misc.c:995 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:653
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:654
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:656
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:657
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:659
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:660
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:661
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:662
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:663
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:664
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:665
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:666
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:667
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:668
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:669
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:670
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:671
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:672
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:673
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:674
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:675
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:676
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:677
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:678
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:679
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:680
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:681
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:682
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:683
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:684
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:685
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:686
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:687
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:688
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:689
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:690
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:691
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:692
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:693
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:694
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:695
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:696
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:697
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:698
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:699
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:700
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:701
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:702
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:703
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:704
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:705
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:706
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:707
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:708
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:709
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:710
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:711
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:712
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:713
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:715
-msgid "No Help"
-msgstr "Dim Cymorth"
-
-#: ../bin/misc.c:1087
-msgid "File AutoSaved"
-msgstr "Ffeil Auto-Saved"
-
-#: ../bin/misc.c:1326 ../bin/misc.c:1333
-msgid ""
-"Cancelling the current command will undo the changes\n"
-"you are currently making. Do you want to do the update instead?"
-msgstr ""
-"Bydd canslo'r gorchymyn cyfredol yn dadwneud y newidiadau\n"
-"rydych chi'n ei wneud ar hyn o bryd. Ydych chi am wneud y diweddariad yn lle?"
-
-#: ../bin/misc.c:1405
-msgid ""
-"Cancelling the current command will undo the changes\n"
-"you are currently making. Do you want to update?"
-msgstr ""
-"Bydd canslo'r gorchymyn cyfredol yn dadwneud y newidiadau\n"
-"rydych chi'n ei wneud ar hyn o bryd. Ydych chi am ddiweddaru?"
-
-#: ../bin/misc.c:1918
-msgid "Sticky Commands"
-msgstr "Gorchmynion gludiog"
-
-#: ../bin/misc.c:1931
+#: ../bin/menu.c:130
msgid "File Buttons"
msgstr "Botymau ffeil"
-#: ../bin/misc.c:1931
+#: ../bin/menu.c:130
msgid "Print Buttons"
msgstr "Botymau Argraffu"
-#: ../bin/misc.c:1931
+#: ../bin/menu.c:130
msgid "Import/Export Buttons"
msgstr "Botymau Mewnforio / Allforio"
-#: ../bin/misc.c:1932
+#: ../bin/menu.c:131
msgid "Zoom Buttons"
msgstr "Botymau Chwyddo"
-#: ../bin/misc.c:1932
+#: ../bin/menu.c:131
msgid "Undo Buttons"
msgstr "Dadwneud Botymau"
-#: ../bin/misc.c:1932
+#: ../bin/menu.c:131
msgid "Easement Button"
msgstr "Botwm Rhwyddineb"
-#: ../bin/misc.c:1932
+#: ../bin/menu.c:131
msgid "SnapGrid Buttons"
msgstr "Botwm Snap-Grid"
-#: ../bin/misc.c:1933
+#: ../bin/menu.c:132
msgid "Create Track Buttons"
msgstr "Creu Botymau Trac"
-#: ../bin/misc.c:1933
+#: ../bin/menu.c:132
msgid "Layout Control Elements"
msgstr "Elfennau Rheoli Cynllun"
-#: ../bin/misc.c:1934
+#: ../bin/menu.c:133
msgid "Modify Track Buttons"
msgstr "Addasu Botymau Trac"
-#: ../bin/misc.c:1934
+#: ../bin/menu.c:133
msgid "Properties/Select"
msgstr "Priodweddau / Dewis"
-#: ../bin/misc.c:1935
+#: ../bin/menu.c:134
msgid "Track Group Buttons"
msgstr "Botymau Grŵp Trac "
-#: ../bin/misc.c:1935
+#: ../bin/menu.c:134
msgid "Train Group Buttons"
msgstr "Botymau Grŵp Trên"
-#: ../bin/misc.c:1936
+#: ../bin/menu.c:135
msgid "Create Misc Buttons"
msgstr "Creu Botymau Amrywiol"
-#: ../bin/misc.c:1936
+#: ../bin/menu.c:135
msgid "Ruler Button"
msgstr "Creu Botymau Amrywiol"
-#: ../bin/misc.c:1937
+#: ../bin/menu.c:136
msgid "Layer Buttons"
msgstr "Botymau Haen"
-#: ../bin/misc.c:1937
+#: ../bin/menu.c:136
msgid "Hot Bar"
msgstr "Bar Poeth"
-#: ../bin/misc.c:2010 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:82
+#: ../bin/menu.c:225 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:82
msgid "Change Elevations"
msgstr "Newid Drychiadau"
-#: ../bin/misc.c:2030
+#: ../bin/menu.c:250
msgid "Angle:"
msgstr "Ongle:"
-#: ../bin/misc.c:2035
+#: ../bin/menu.c:255
msgid "Indexes:"
msgstr "Mynegeion:"
-#: ../bin/misc.c:2041
+#: ../bin/menu.c:262
msgid "Move X:"
msgstr "Symud X:"
-#: ../bin/misc.c:2042
+#: ../bin/menu.c:263
msgid "Move Y:"
msgstr "Symud Y:"
-#: ../bin/misc.c:2060
+#: ../bin/menu.c:282
msgid "Select Index"
msgstr "Dewis Mynegai"
-#: ../bin/misc.c:2114
+#: ../bin/menu.c:330
msgid "Enter Move ..."
msgstr "Rhowch Symud ..."
-#: ../bin/misc.c:2119
+#: ../bin/menu.c:336
msgid "Select Track Index ..."
msgstr "Dewiswch Mynegai Trac"
-#: ../bin/misc.c:2125
+#: ../bin/menu.c:343
msgid "180 "
msgstr "180 "
-#: ../bin/misc.c:2126
+#: ../bin/menu.c:344
msgid "90 CW"
msgstr "90 CW"
-#: ../bin/misc.c:2127
+#: ../bin/menu.c:345
msgid "45 CW"
msgstr "45 CW"
-#: ../bin/misc.c:2128
+#: ../bin/menu.c:346
msgid "30 CW"
msgstr "30 CW"
-#: ../bin/misc.c:2129
+#: ../bin/menu.c:347
msgid "15 CW"
msgstr "15 CW"
-#: ../bin/misc.c:2130
+#: ../bin/menu.c:348
msgid "15 CCW"
msgstr "15 CCW"
-#: ../bin/misc.c:2131
+#: ../bin/menu.c:349
msgid "30 CCW"
msgstr "30 CCW"
-#: ../bin/misc.c:2132
+#: ../bin/menu.c:350
msgid "45 CCW"
msgstr "45 CCW"
-#: ../bin/misc.c:2133
+#: ../bin/menu.c:351
msgid "90 CCW"
msgstr "90 CCW"
-#: ../bin/misc.c:2134
+#: ../bin/menu.c:352
msgid "Enter Angle ..."
msgstr "Rhowch Ongle ..."
-#: ../bin/misc.c:2151
+#: ../bin/menu.c:369
+msgid "examples"
+msgstr "Enghreifftiau"
+
+#: ../bin/menu.c:378
+msgid ""
+"Do you want to return to the last saved state?\n"
+"\n"
+"Revert will cause all changes done since last save to be lost."
+msgstr ""
+"Ydych chi eisiau dychwelyd i'r wladwriaeth ddiwethaf a arbedwyd?\n"
+"\n"
+"Bydd dychwelyd yn achosi i'r holl newidiadau a wnaed ers yr arbediad "
+"diwethaf gael eu colli. "
+
+#: ../bin/menu.c:380
+msgid "&Revert"
+msgstr "&Dychwelwch"
+
+#: ../bin/menu.c:380 ../bin/misc.c:660
+msgid "&Cancel"
+msgstr "&Canslo"
+
+#: ../bin/menu.c:433
+msgid "XTrackCAD Font"
+msgstr "XTrackCAD Ffont"
+
+#: ../bin/menu.c:459
+msgid "Sticky Commands"
+msgstr "Gorchmynion gludiog"
+
+#: ../bin/menu.c:478
msgid "Test Mallocs"
msgstr "Prawf Mallocs"
-#: ../bin/misc.c:2168
+#: ../bin/menu.c:497
msgid "Debug"
msgstr "Debug"
-#: ../bin/misc.c:2391
+#: ../bin/menu.c:582
+msgid "No Messages"
+msgstr "Dim Negeseuon"
+
+#: ../bin/menu.c:606
+#, c-format
+msgid "No help for %s"
+msgstr "Dim help ar gyfer %s"
+
+#: ../bin/menu.c:656
+#, c-format
+msgid "No balloon help for %s\n"
+msgstr "Dim help balŵn ar gyfer %s\n"
+
+#: ../bin/menu.c:658 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:694
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:695
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:697
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:698
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:700
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:701
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:702
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:703
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:704
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:705
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:706
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:707
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:708
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:709
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:710
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:711
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:712
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:713
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:714
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:715
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:716
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:717
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:718
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:719
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:720
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:721
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:722
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:723
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:724
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:725
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:726
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:727
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:728
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:729
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:730
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:731
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:732
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:733
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:734
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:735
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:736
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:737
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:738
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:739
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:740
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:741
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:742
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:743
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:744
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:745
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:746
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:747
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:748
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:749
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:750
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:751
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:752
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:753
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:754
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:756
+msgid "No Help"
+msgstr "Dim Cymorth"
+
+#: ../bin/menu.c:884
msgid "&File"
msgstr "&Ffile"
-#: ../bin/misc.c:2392
+#: ../bin/menu.c:885
msgid "&Edit"
msgstr "&Golygu"
-#: ../bin/misc.c:2393
+#: ../bin/menu.c:886
msgid "&View"
msgstr "G&weld"
-#: ../bin/misc.c:2394
+#: ../bin/menu.c:887
msgid "&Add"
msgstr "&Ychwanegu"
-#: ../bin/misc.c:2395
+#: ../bin/menu.c:888
msgid "&Change"
msgstr "&Newid"
-#: ../bin/misc.c:2396
+#: ../bin/menu.c:889
msgid "&Draw"
msgstr "&Tynnu"
-#: ../bin/misc.c:2397
+#: ../bin/menu.c:890
msgid "&Manage"
msgstr "&Rheoli"
-#: ../bin/misc.c:2398
+#: ../bin/menu.c:891
msgid "&Options"
msgstr "&Opsiynau"
-#: ../bin/misc.c:2399
+#: ../bin/menu.c:892
msgid "&Macro"
msgstr "&Macro"
-#: ../bin/misc.c:2400
+#: ../bin/menu.c:893
msgid "&Window"
msgstr "Ff&enestr"
-#: ../bin/misc.c:2401
+#: ../bin/menu.c:894
msgid "&Help"
msgstr "&Helpu"
-#: ../bin/misc.c:2437
+#: ../bin/menu.c:930
msgid "Context Commands"
msgstr "Gorchmynion Cyd-destun"
-#: ../bin/misc.c:2438
+#: ../bin/menu.c:931
msgid "Shift Context Commands"
msgstr "Gorchmynion Cyd-destun Sifft"
-#: ../bin/misc.c:2452 ../bin/misc.c:2454
+#: ../bin/menu.c:945 ../bin/menu.c:947
msgid "Zoom Extents"
msgstr "Maint Chwyddo"
-#: ../bin/misc.c:2457 ../bin/misc.c:2667
+#: ../bin/menu.c:950 ../bin/menu.c:1185
msgid "Enable SnapGrid"
msgstr "Galluogi Snap-Grid"
-#: ../bin/misc.c:2459
+#: ../bin/menu.c:952
msgid "SnapGrid Show"
msgstr "Dangos Snap-Grid"
-#: ../bin/misc.c:2461
+#: ../bin/menu.c:955
msgid " Enable Magnetic Snap"
msgstr "Galluogi Snap Magnetig"
-#: ../bin/misc.c:2463 ../bin/misc.c:2688
+#: ../bin/menu.c:957 ../bin/menu.c:1207
msgid "Show/Hide Map"
msgstr "Dangos / Cuddio Map"
-#: ../bin/misc.c:2486 ../bin/misc.c:2488
+#: ../bin/menu.c:981 ../bin/menu.c:983
msgid "Select Track Index..."
msgstr "Dewiswch Mynegai Trac..."
-#: ../bin/misc.c:2500 ../bin/misc.c:2501
+#: ../bin/menu.c:995 ../bin/menu.c:996
msgid "Add..."
msgstr "Ychwanegu ..."
-#: ../bin/misc.c:2504 ../bin/misc.c:2505
+#: ../bin/menu.c:999 ../bin/menu.c:1000
msgid "More..."
msgstr "Mwy ..."
-#: ../bin/misc.c:2510
+#: ../bin/menu.c:1005
msgid "&New ..."
msgstr "&Newydd"
-#: ../bin/misc.c:2512
+#: ../bin/menu.c:1007
msgid "&Open ..."
msgstr "&Agor"
-#: ../bin/misc.c:2518
+#: ../bin/menu.c:1011 ../bin/misc.c:660
+msgid "&Save"
+msgstr "&Arbedwch"
+
+#: ../bin/menu.c:1013
msgid "Save &As ..."
msgstr "Arbed &Fel"
-#: ../bin/misc.c:2520
+#: ../bin/menu.c:1015
msgid "Revert"
msgstr "Dychwelwch"
-#: ../bin/misc.c:2533
+#: ../bin/menu.c:1028
msgid "P&rint Setup ..."
msgstr "&Gosodiad Argraffu"
-#: ../bin/misc.c:2541
+#: ../bin/menu.c:1036
msgid "&Import"
msgstr "&Mewnforio"
-#: ../bin/misc.c:2543
+#: ../bin/menu.c:1038
msgid "Import &Module"
msgstr "Modiwl Mewnforio"
-#: ../bin/misc.c:2545
+#: ../bin/menu.c:1041
msgid "Export to &Bitmap"
msgstr "Export to &Bitmap"
-#: ../bin/misc.c:2548
+#: ../bin/menu.c:1044
msgid "E&xport"
msgstr "Allforio"
-#: ../bin/misc.c:2550
+#: ../bin/menu.c:1046
msgid "Export D&XF"
msgstr "Allforio DXF"
-#: ../bin/misc.c:2554
+#: ../bin/menu.c:1050
msgid "Export S&VG"
msgstr "Allforio S&VG"
-#: ../bin/misc.c:2560
+#: ../bin/menu.c:1056
msgid "Parameter &Files ..."
msgstr "&Ffeiliau Paramedr ..."
-#: ../bin/misc.c:2562
+#: ../bin/menu.c:1058
msgid "No&tes ..."
msgstr "Nodiadau"
-#: ../bin/misc.c:2569
+#: ../bin/menu.c:1065
msgid "E&xit"
msgstr "Allanfa"
-#: ../bin/misc.c:2601
+#: ../bin/menu.c:1102
msgid "&Undo"
msgstr "Dadwneud"
-#: ../bin/misc.c:2603
+#: ../bin/menu.c:1104
msgid "R&edo"
msgstr "Ail-wneud"
-#: ../bin/misc.c:2606
+#: ../bin/menu.c:1107
msgid "Cu&t"
msgstr "Torri"
-#: ../bin/misc.c:2608
+#: ../bin/menu.c:1109
msgid "&Copy"
msgstr "Copi"
-#: ../bin/misc.c:2610
+#: ../bin/menu.c:1111
msgid "&Paste"
msgstr "Gludo"
-#: ../bin/misc.c:2612
+#: ../bin/menu.c:1113
msgid "C&lone"
msgstr "Clôn"
-#: ../bin/misc.c:2614
+#: ../bin/menu.c:1115
msgid "De&lete"
msgstr "Dileu"
-#: ../bin/misc.c:2622
+#: ../bin/menu.c:1123
msgid "Select &All"
msgstr "Dewiswch Bawb"
-#: ../bin/misc.c:2624
+#: ../bin/menu.c:1127
msgid "Select By Index"
msgstr "Dewiswch yn ôl Mynegai"
-#: ../bin/misc.c:2625
+#: ../bin/menu.c:1129
msgid "&Deselect All"
msgstr "Dad-ddewis Pawb"
-#: ../bin/misc.c:2626
+#: ../bin/menu.c:1131
msgid "&Invert Selection"
msgstr "Dewis Gwrthdro"
-#: ../bin/misc.c:2627
+#: ../bin/menu.c:1134
msgid "Select Stranded Track"
msgstr "Dewiswch Trac sownd"
-#: ../bin/misc.c:2629
+#: ../bin/menu.c:1136
msgid "Tu&nnel"
msgstr "Twnnel"
-#: ../bin/misc.c:2630
+#: ../bin/menu.c:1138
msgid "B&ridge"
msgstr "Pont"
-#: ../bin/misc.c:2631
-msgid "Ties/NoTies"
-msgstr "Cwsgwyr / Dim Cysgu"
+#: ../bin/menu.c:1140
+#, fuzzy
+msgid "&Roadbed"
+msgstr "Ffordd"
-#: ../bin/misc.c:2632
+#: ../bin/menu.c:1144
msgid "Move to &Front"
msgstr "Symud i'r Blaen"
-#: ../bin/misc.c:2633
+#: ../bin/menu.c:1146
msgid "Move to &Back"
msgstr "Symud Yn Ôl"
-#: ../bin/misc.c:2644
+#: ../bin/menu.c:1161
msgid "Zoom &In"
msgstr "Chwyddo i mewn"
-#: ../bin/misc.c:2647
+#: ../bin/menu.c:1164
msgid "Zoom &Out"
msgstr "Chwyddo allan"
-#: ../bin/misc.c:2649
+#: ../bin/menu.c:1167
msgid "Zoom &Extents"
msgstr "Maint Chwyddo"
-#: ../bin/misc.c:2660
+#: ../bin/menu.c:1178
msgid "&Redraw"
msgstr "Ail-lunio"
-#: ../bin/misc.c:2662
+#: ../bin/menu.c:1180
msgid "Redraw All"
msgstr "Ail-lunio Pawb"
-#: ../bin/misc.c:2669
+#: ../bin/menu.c:1187
msgid "Show SnapGrid"
msgstr "Dangos SnapGrid"
-#: ../bin/misc.c:2679
+#: ../bin/menu.c:1198
msgid "Enable Magnetic Snap"
msgstr "Enable Magnetic Snap"
-#: ../bin/misc.c:2694
+#: ../bin/menu.c:1213
msgid "&Tool Bar"
msgstr "Bar offer"
-#: ../bin/misc.c:2727
+#: ../bin/menu.c:1247 ../bin/menu.c:1248
msgid "Control Element"
msgstr "Elfen Reoli"
-#: ../bin/misc.c:2757
+#: ../bin/menu.c:1280
msgid "Change Scale"
msgstr "Graddfa Newid"
-#: ../bin/misc.c:2770
-msgid "&Loosen Tracks"
-msgstr "Traciau Llaciedig"
-
-#: ../bin/misc.c:2777
+#: ../bin/menu.c:1296
msgid "Raise/Lower Elevations"
msgstr "Codi / Drychiadau Is"
-#: ../bin/misc.c:2786
+#: ../bin/menu.c:1305
msgid "Recompute Elevations"
msgstr "Ailgyfrifo Drychiadau"
-#: ../bin/misc.c:2804
+#: ../bin/menu.c:1323
msgid "L&ayout ..."
msgstr "Cynllun ..."
-#: ../bin/misc.c:2806
+#: ../bin/menu.c:1325
msgid "&Display ..."
msgstr "Arddangos ..."
-#: ../bin/misc.c:2808
+#: ../bin/menu.c:1327
msgid "Co&mmand ..."
msgstr "Gorchymyn ..."
-#: ../bin/misc.c:2810
+#: ../bin/menu.c:1329
msgid "&Easements ..."
msgstr "Rhwyddinebau ..."
-#: ../bin/misc.c:2813
+#: ../bin/menu.c:1332
msgid "&Fonts ..."
msgstr "Ffontiau ..."
-#: ../bin/misc.c:2815
+#: ../bin/menu.c:1334
msgid "Stic&ky ..."
msgstr "Gludiog ..."
-#: ../bin/misc.c:2820
+#: ../bin/menu.c:1339
msgid "&Debug ..."
msgstr "Debug"
-#: ../bin/misc.c:2823
+#: ../bin/menu.c:1342
msgid "&Preferences ..."
msgstr "Dewisiadau ..."
-#: ../bin/misc.c:2825
+#: ../bin/menu.c:1344
msgid "&Colors ..."
msgstr "Lliwiau ..."
-#: ../bin/misc.c:2831
+#: ../bin/menu.c:1350
msgid "&Record ..."
msgstr "Cofnod ..."
-#: ../bin/misc.c:2833
+#: ../bin/menu.c:1352
msgid "&Play Back ..."
msgstr "Ailchwarae ..."
-#: ../bin/misc.c:2839
+#: ../bin/menu.c:1358
msgid "Main window"
msgstr "Prif Ffenestr"
-#: ../bin/misc.c:2853
+#: ../bin/menu.c:1372
msgid "Recent Messages"
msgstr "Negeseuon Diweddar"
-#: ../bin/misc.c:2860
+#: ../bin/menu.c:1379
msgid "Tip of the Day..."
msgstr "Blaen y Dydd ..."
-#: ../bin/misc.c:2861
+#: ../bin/menu.c:1381
msgid "&Demos"
msgstr "Demos"
-#: ../bin/misc.c:2862
+#: ../bin/menu.c:1382
msgid "Examples..."
msgstr "Enghreifftiau ..."
-#: ../bin/misc.c:2866 ../bin/smalldlg.c:205
+#: ../bin/menu.c:1386 ../bin/smalldlg.c:210
msgid "About"
msgstr "Ynghylch"
-#: ../bin/misc.c:2879
+#: ../bin/menu.c:1399
msgid "Tur&nout Designer..."
msgstr "Dylunydd Pwynt"
-#: ../bin/misc.c:2882
+#: ../bin/menu.c:1402
msgid "Layout &Control Elements"
msgstr "Elfennau Rheoli Cynllun"
-#: ../bin/misc.c:2884
+#: ../bin/menu.c:1404
msgid "&Group"
msgstr "Grŵp"
-#: ../bin/misc.c:2886
+#: ../bin/menu.c:1406
msgid "&Ungroup"
msgstr "Di-grŵp"
-#: ../bin/misc.c:2890
+#: ../bin/menu.c:1410
msgid "Custom defined parts..."
msgstr "Rhannau wedi'u diffinio'n benodol"
-#: ../bin/misc.c:2893
+#: ../bin/menu.c:1413
msgid "Update Turnouts and Structures"
msgstr "Diweddaru pwyntiau a strwythurau"
-#: ../bin/misc.c:2902
+#: ../bin/menu.c:1422
msgid "Layers ..."
msgstr "Haenau ..."
-#: ../bin/misc.c:2906
+#: ../bin/menu.c:1426
msgid "Parts &List ..."
msgstr "Rhestr Rhannau ..."
-#: ../bin/misc.c:2909
+#: ../bin/menu.c:1429
msgid "Price List..."
msgstr "Rhestr pris ..."
-#: ../bin/misc.c:2954
+#: ../bin/menu.c:1458 ../bin/menu.c:1459
msgid "Import/Export"
msgstr "Mewnforio / Allforio"
-#: ../bin/misc.c:2986
+#: ../bin/misc.c:487 ../bin/misc.c:491
+msgid "ABORT"
+msgstr "Erthyliad"
+
+#: ../bin/misc.c:490
+msgid ""
+"\n"
+"Do you want to save your layout?"
+msgstr ""
+"\n"
+"Ydych chi am arbed eich cynllun?"
+
+#: ../bin/misc.c:658
+msgid ""
+"Save changes to the layout design before closing?\n"
+"\n"
+"If you don't save now, your unsaved changes will be discarded."
+msgstr ""
+"Arbedwch newidiadau i ddyluniad y cynllun cyn cau?\n"
+"\n"
+"Os na arbedwch nawr, bydd eich newidiadau heb eu cadw yn cael eu taflu."
+
+#: ../bin/misc.c:660
+msgid "&Don't Save"
+msgstr "&Peidiwch ag Arbed"
+
+#: ../bin/misc.c:991
msgid ""
"Program was not terminated properly. Do you want to resume working on the "
"previous trackplan?"
@@ -6288,174 +6320,179 @@ msgstr ""
"Ni ddaeth y rhaglen i ben yn iawn. Ydych chi am ailddechrau gweithio ar y "
"cynllun blaenorol?"
-#: ../bin/misc.c:2987
+#: ../bin/misc.c:992
msgid "Resume"
msgstr "Ail-ddechrau"
-#: ../bin/misc.c:2987
+#: ../bin/misc.c:992
msgid "Resume with New Name"
msgstr "Ail-ddechrau gydag enw newydd"
-#: ../bin/misc.c:2987
+#: ../bin/misc.c:992
msgid "Ignore Checkpoint"
msgstr "Anwybyddu pwynt gwirio"
-#: ../bin/misc.c:2990
+#: ../bin/misc.c:995
#, c-format
msgid "Reload Checkpoint Selected\n"
msgstr "Pwynt Gwirio Ail-lwytho wedi'i Ddethol\n"
-#: ../bin/misc.c:2992
+#: ../bin/misc.c:997
#, c-format
msgid "Reload Checkpoint With New Name Selected\n"
msgstr "Pwynt Gwirio Ail-lwytho gyda'r Enw Newydd wedi'i Ddethol\n"
-#: ../bin/misc.c:2994
+#: ../bin/misc.c:999
#, c-format
msgid "Ignore Checkpoint Selected\n"
msgstr "Anwybyddu Checkpoint a ddewiswyd\n"
-#: ../bin/misc.c:3106
+#: ../bin/misc.c:1121
#, c-format
msgid "Unnamed Trackplan - %s(%s)"
msgstr "Cynllun dienw - %s(%s)"
-#: ../bin/misc.c:3193
+#: ../bin/misc.c:1175
msgid "Initializing commands"
msgstr "Cychwyn Gorchmynion"
-#: ../bin/misc.c:3202
+#: ../bin/misc.c:1184
msgid "Initializing menus"
msgstr "Cychwyn Bwydlenni"
-#: ../bin/misc.c:3238
+#: ../bin/misc.c:1216
msgid "Reading parameter files"
msgstr "Darllen Ffeiliau Paramedr"
-#: ../bin/misc.c:3276
+#: ../bin/misc.c:1260
msgid "Initialization complete"
msgstr "Daeth y Cychwyn i ben"
-#: ../bin/param.c:65
+#: ../bin/param.c:76
msgid "Unexpected End Of String"
msgstr "Diwedd annisgwyl y llinyn"
-#: ../bin/param.c:72
+#: ../bin/param.c:83
msgid "Expected digit"
msgstr "Nifer disgwyliedig"
-#: ../bin/param.c:79
+#: ../bin/param.c:91
msgid "Overflow"
msgstr "Gorlif"
-#: ../bin/param.c:127
+#: ../bin/param.c:140
msgid "Divide by 0"
msgstr "Rhannwch â 0"
-#: ../bin/param.c:135
+#: ../bin/param.c:148
msgid "Expected /"
msgstr "Disgwyliedig /"
-#: ../bin/param.c:221
+#: ../bin/param.c:233
msgid "Invalid Units Indicator"
msgstr "Dangosydd Unedau Annilys"
-#: ../bin/param.c:249
+#: ../bin/param.c:261
msgid "Expected End Of String"
msgstr "Diwedd disgwyliedig y Llinyn"
-#: ../bin/param.c:275 ../bin/param.c:1425
+#: ../bin/param.c:289 ../bin/param.c:1528
#, c-format
msgid "Invalid Number"
msgstr "Rhif Annilys"
-#: ../bin/param.c:335
+#: ../bin/param.c:349
msgid "End Of String"
msgstr "Diwedd y Llinyn"
-#: ../bin/param.c:1387
+#: ../bin/param.c:1486
#, c-format
msgid "Enter a value > %ld"
msgstr "Rhowch werth > %ld"
-#: ../bin/param.c:1389
+#: ../bin/param.c:1489
#, c-format
msgid "Enter a value < %ld"
msgstr "Rhowch werth < %ld"
-#: ../bin/param.c:1391
+#: ../bin/param.c:1491
#, c-format
msgid "Enter a value between %ld and %ld"
msgstr "Rhowch werth rhwng %ld a %ld"
-#: ../bin/param.c:1458
+#: ../bin/param.c:1568
#, c-format
msgid "Enter a value > %s"
msgstr "Rhowch werth > %s"
-#: ../bin/param.c:1461
+#: ../bin/param.c:1572
#, c-format
msgid "Enter a value < %s"
msgstr "Rhowch werth < %s"
-#: ../bin/param.c:1464
+#: ../bin/param.c:1575
#, c-format
msgid "Enter a value between %s and %s"
msgstr "Rhowch werth rhwng %s a %s"
-#: ../bin/param.c:1556
+#: ../bin/param.c:1674
msgid "String cannot be blank"
msgstr "Ni all llinyn fod yn wag"
-#: ../bin/param.c:1674
+#: ../bin/param.c:1689
+#, c-format
+msgid "String is too long, Max length is %u"
+msgstr ""
+
+#: ../bin/param.c:1823
msgid "Invalid input(s), please correct the hilighted field(s)"
msgstr "Mewnbwn (au) annilys, cywirwch y maes (meysydd) hilighted"
-#: ../bin/param.c:2746
+#: ../bin/param.c:3043
msgid "Help"
msgstr "Help"
-#: ../bin/paramfile.c:257
+#: ../bin/paramfile.c:258
msgid "Parameter"
msgstr "Paramedr"
-#: ../bin/paramfile.c:354
+#: ../bin/paramfile.c:363
msgid "Unknown param file line - skip until next good object?"
msgstr "Llinell ffeiliau param anhysbys - sgipiwch tan y gwrthrych da nesaf?"
#: ../bin/paramfilelist.c:69
#, c-format
msgid ""
-"The parameter file: %s could not be found and was probably deleted or moved."
-" The file is removed from the active parameter file list."
+"The parameter file: %s could not be found and was probably deleted or moved. "
+"The file is removed from the active parameter file list."
msgstr ""
"Y ffeil baramedr: %s ni ellid dod o hyd iddo ac mae'n debyg iddo gael ei "
"ddileu neu ei symud. Mae'r ffeil yn cael ei thynnu o'r rhestr ffeiliau "
"paramedr gweithredol."
-#: ../bin/paramfilelist.c:119
+#: ../bin/paramfilelist.c:126
#, c-format
msgid "Updating %s"
msgstr "Diweddaru %s"
-#: ../bin/paramfilesearch_ui.c:53
+#: ../bin/paramfilesearch_ui.c:52
msgid "Fit Any"
msgstr "Ffitiwch Unrhyw"
-#: ../bin/paramfilesearch_ui.c:53
+#: ../bin/paramfilesearch_ui.c:52
msgid "Fit Compatible"
msgstr "Ffit Cydnaws"
-#: ../bin/paramfilesearch_ui.c:53
+#: ../bin/paramfilesearch_ui.c:52
msgid "Fit Exact"
msgstr "Ffit Union"
-#: ../bin/paramfilesearch_ui.c:191
+#: ../bin/paramfilesearch_ui.c:192
#, c-format
msgid "%u parameter files in library. %d Fit Scale."
msgstr "%u ffeiliau paramedr yn y llyfrgell. %d Graddfa Ffit."
-#: ../bin/paramfilesearch_ui.c:308
+#: ../bin/paramfilesearch_ui.c:307
#, c-format
msgid "%d parameter files found. %d Fit Scale"
msgstr "%d ffeiliau paramedr wedi'u darganfod. %d Graddfa Ffit"
@@ -6464,44 +6501,85 @@ msgstr "%d ffeiliau paramedr wedi'u darganfod. %d Graddfa Ffit"
msgid "No matches found."
msgstr "Ni ddarganfuwyd gemau."
-#: ../bin/paramfilesearch_ui.c:476
+#: ../bin/paramfilesearch_ui.c:477
msgid "Choose parameter files"
msgstr "Dewiswch ffeiliau paramedr"
-#: ../bin/paramfilesearch_ui.c:494
+#: ../bin/paramfilesearch_ui.c:495
msgid "No system parameter files found, search is disabled."
msgstr ""
"Ni ddarganfuwyd ffeiliau paramedr system, mae'r chwiliad wedi'i anablu."
-#: ../bin/partcatalog.c:736
+#: ../bin/partcatalog.c:739
msgid "Found: "
msgstr "Wedi'i ddarganfod:"
-#: ../bin/partcatalog.c:737
+#: ../bin/partcatalog.c:740
msgid "Similar: "
msgstr "Tebyg:"
-#: ../bin/partcatalog.c:738
+#: ../bin/partcatalog.c:741
msgid "Ignored: "
msgstr "Anwybyddwyd:"
-#: ../bin/partcatalog.c:739
+#: ../bin/partcatalog.c:742
msgid "Not found: "
msgstr "Heb ei ddarganfod:"
-#: ../bin/smalldlg.c:46
+#: ../bin/scale.c:301
+#, c-format
+msgid ""
+"Invalid Scale: playback aborted\n"
+" SCALE %s"
+msgstr ""
+
+#: ../bin/scale.c:845 ../bin/scale.c:870
+msgid "Ratio"
+msgstr "Cymhareb"
+
+#: ../bin/scale.c:854
+msgid "Do not resize track"
+msgstr "Peidiwch â newid maint y trac"
+
+#: ../bin/scale.c:858
+msgid "Rescale by:"
+msgstr "Ail-lunio gan:"
+
+#: ../bin/scale.c:860
+msgid "From:"
+msgstr "O:"
+
+#: ../bin/scale.c:864
+msgid "To: "
+msgstr "I:"
+
+#: ../bin/scale.c:913
+msgid "Rescale Tracks"
+msgstr "Traciau Ail-lunio"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:473
+#: ../bin/scale.c:1084 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1258
+msgid "Rescale"
+msgstr "Ail-lunio"
+
+#: ../bin/scale.c:1134
+#, c-format
+msgid "%ld Objects to be rescaled"
+msgstr ""
+
+#: ../bin/smalldlg.c:45
msgid "Show tips at start"
msgstr "Dangos awgrymiadau ar y dechrau"
-#: ../bin/smalldlg.c:52
+#: ../bin/smalldlg.c:51
msgid "Did you know..."
msgstr "Oeddet ti'n gwybod..."
-#: ../bin/smalldlg.c:54
+#: ../bin/smalldlg.c:53
msgid "Previous Tip"
msgstr "Awgrym Blaenorol"
-#: ../bin/smalldlg.c:55
+#: ../bin/smalldlg.c:54
msgid "Next Tip"
msgstr "Awgrym Nesaf"
@@ -6509,11 +6587,11 @@ msgstr "Awgrym Nesaf"
msgid "Tip of the Day"
msgstr "Blaen y Dydd"
-#: ../bin/smalldlg.c:81
+#: ../bin/smalldlg.c:82
msgid "No tips are available"
msgstr "Nid oes unrhyw awgrymiadau ar gael"
-#: ../bin/smalldlg.c:182
+#: ../bin/smalldlg.c:187
msgid ""
"XTrackCAD is a CAD (computer-aided design) program for designing model "
"railroad layouts."
@@ -6521,153 +6599,149 @@ msgstr ""
"Rhaglen CAD (dylunio gyda chymorth cyfrifiadur) yw XTrackCAD ar gyfer "
"dylunio cynlluniau model rheilffyrdd."
-#: ../bin/svgoutput.c:484
-msgid "Export to SVG"
-msgstr "Allforio i SVG"
-
-#: ../bin/tbezier.c:184
+#: ../bin/tbezier.c:214
#, c-format
msgid "Bez: L%s A%0.3f trk_len=%s min_rad=%s"
msgstr "Bez: H%s O%0.3f trk_hyd=%s mun_rad=%s"
-#: ../bin/tbezier.c:254
+#: ../bin/tbezier.c:288
msgid "Ctl Pt 1: X,Y"
msgstr "Ctl Pt 1: X,Y"
-#: ../bin/tbezier.c:255
+#: ../bin/tbezier.c:289
msgid "Ctl Pt 2: X,Y"
msgstr "Ctl Pt 2: X,Y"
-#: ../bin/tbezier.c:261
+#: ../bin/tbezier.c:295
msgid "MinRadius"
msgstr "Radiws Min"
-#: ../bin/tbezier.c:266
+#: ../bin/tbezier.c:300
msgid "Line Color"
msgstr "Lliw Llinell"
-#: ../bin/tbezier.c:393
+#: ../bin/tbezier.c:440
#, c-format
msgid ""
-"Bezier %s(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] "
-"[%0.3f,%0.3f] CP1=[%0.3f,%0.3f] CP2=[%0.3f, %0.3f]"
+"Bezier %s(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,"
+"%0.3f] CP1=[%0.3f,%0.3f] CP2=[%0.3f, %0.3f]"
msgstr ""
"Bezier %s(%d): Hean=%u MinRadiws=%s Hyd=%s EP=[%0.3f,%0.3f] [%0.3f,%0.3f] "
"CP1=[%0.3f,%0.3f] CP2=[%0.3f, %0.3f]"
-#: ../bin/tbezier.c:467
+#: ../bin/tbezier.c:514
msgid "Bezier Track"
msgstr "Bezier Trac"
-#: ../bin/tcornu.c:232
+#: ../bin/tcornu.c:246
#, c-format
msgid "Cornu: L %s A %0.3f L %s MinR %s"
msgstr "Cornu: L %s A %0.3f L %s MinR %s"
-#: ../bin/tcornu.c:304
+#: ../bin/tcornu.c:321
msgid "Radius "
msgstr "Radiws "
-#: ../bin/tcornu.c:312
+#: ../bin/tcornu.c:329
msgid "Minimum Radius"
msgstr "Radiws Lleiaf"
-#: ../bin/tcornu.c:313
+#: ../bin/tcornu.c:330
msgid "Max Rate Of Curve Change/Scale"
msgstr "Cyfradd Uchaf Newid/Graddfa Cromlin"
-#: ../bin/tcornu.c:314
+#: ../bin/tcornu.c:331
msgid "Total Winding Angle"
msgstr "Cyfanswm Ongl Dirwyn"
-#: ../bin/tcornu.c:452
+#: ../bin/tcornu.c:476
#, c-format
msgid ""
-"Cornu Track(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] "
-"[%0.3f,%0.3f]"
+"Cornu Track(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,"
+"%0.3f]"
msgstr ""
"Cornu Trac(%d): Hean=%u MinRadiws=%s Hyd=%s EP=[%0.3f,%0.3f] [%0.3f,%0.3f]"
-#: ../bin/tcornu.c:505
+#: ../bin/tcornu.c:532
msgid "Cornu Track"
msgstr "Cornu Trac"
-#: ../bin/tcurve.c:250
+#: ../bin/tcurve.c:259
#, c-format
msgid "Helix: Turns %ld L %0.2f Grade %0.1f%% Sep %0.2f"
msgstr "Helix: Troi %ld L %0.2f Gradd %0.1f%% Gwahanu%0.2f"
-#: ../bin/tcurve.c:256
+#: ../bin/tcurve.c:265
#, c-format
msgid "Helix: Turns %ld L %0.2f"
msgstr "Helix: Troi %ld L %0.2f"
-#: ../bin/tcurve.c:378 ../bin/tcurve.c:380 ../bin/tease.c:510
-#: ../bin/tease.c:512 ../bin/tstraigh.c:87 ../bin/tstraigh.c:89
+#: ../bin/tcurve.c:397 ../bin/tcurve.c:399 ../bin/tease.c:525
+#: ../bin/tease.c:527 ../bin/tstraigh.c:88 ../bin/tstraigh.c:90
msgid "Z"
msgstr "Z"
-#: ../bin/tcurve.c:565
+#: ../bin/tcurve.c:591
#, c-format
msgid ""
"Helix Track(%d): Layer=%d Radius=%s Turns=%ld Length=%s Center=[%s,%s] "
"EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
msgstr ""
-"Helix Trac(%d): Haen=%d Radiws=%s Turns=%ld Hyd=%s Canol=[%s,%s] "
-"EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
+"Helix Trac(%d): Haen=%d Radiws=%s Turns=%ld Hyd=%s Canol=[%s,%s] EP=[%0.3f,"
+"%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
-#: ../bin/tcurve.c:575
+#: ../bin/tcurve.c:602
#, c-format
msgid ""
-"Curved Track(%d): Layer=%d Radius=%s Length=%s Center=[%s,%s] "
-"EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
+"Curved Track(%d): Layer=%d Radius=%s Length=%s Center=[%s,%s] EP=[%0.3f,"
+"%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
msgstr ""
"Trac Crwm(%d): Hean=%d Radiws=%s Hyd=%s Canol=[%s,%s] EP=[%0.3f,%0.3f "
"A%0.3f] [%0.3f,%0.3f A%0.3f]"
-#: ../bin/tcurve.c:652
+#: ../bin/tcurve.c:681
msgid "Helix Track"
msgstr "Trac Helix"
-#: ../bin/tcurve.c:658
+#: ../bin/tcurve.c:687
msgid "Curved Track"
msgstr "Trac Crwm"
-#: ../bin/tcurve.c:1033
+#: ../bin/tcurve.c:1232
msgid "Merge Curves"
msgstr "Cyfuno Cromliniau"
-#: ../bin/tcurve.c:1102
+#: ../bin/tcurve.c:1306
msgid "Drag to change angle or create tangent"
msgstr "Llusgwch i newid ongl neu greu tangiad"
-#: ../bin/tcurve.c:1135 ../bin/tcurve.c:1167
+#: ../bin/tcurve.c:1341 ../bin/tcurve.c:1374
msgid "Curved "
msgstr "Yn grwm"
-#: ../bin/tcurve.c:1141
+#: ../bin/tcurve.c:1347
msgid "Tangent "
msgstr "Tangiad"
-#: ../bin/tcurve.c:1150
+#: ../bin/tcurve.c:1356
#, c-format
msgid "Tangent track: Length %s Angle %0.3f"
msgstr "Trac Tangiad: Hyd %s Ongle %0.3f"
-#: ../bin/tcurve.c:1172
+#: ../bin/tcurve.c:1378
#, c-format
msgid "Curved: Radius=%s Length=%s Angle=%0.3f"
msgstr "Yn grwm: Radiws=%s Hyd=%s Ongle=%0.3f"
-#: ../bin/tease.c:517
+#: ../bin/tease.c:532
msgid "l0"
msgstr "l0"
-#: ../bin/tease.c:518
+#: ../bin/tease.c:533
msgid "l1"
msgstr "l1"
-#: ../bin/tease.c:560
+#: ../bin/tease.c:581
#, c-format
msgid ""
"Joint Track(%d): Layer=%d Length=%0.3f EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f "
@@ -6676,126 +6750,129 @@ msgstr ""
"Trac ar y cyd(%d): Haen=%d Hyd=%0.3f EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f "
"A%0.3f]"
-#: ../bin/tease.c:605
+#: ../bin/tease.c:629
msgid "Easement Track"
msgstr "Trac Hawddfraint"
-#: ../bin/tease.c:1330
+#: ../bin/tease.c:1407
msgid "Merge Easements"
msgstr "Uno Rhwyddinebau"
-#: ../bin/tease.c:1398
+#: ../bin/tease.c:1481
msgid "Split Easement Curve"
msgstr "Cromlin Rhwyddineb Hollti"
-#: ../bin/textnoteui.c:209
-#, c-format
-msgid "Note: Layer=%d %-.80s"
+#: ../bin/textnoteui.c:175
+#, fuzzy, c-format
+msgid "Text Note(%d) Layer=%d %-.80s"
msgstr "Dogfen: Haen=%d %-.80s"
-#: ../bin/textnoteui.c:220
-msgid "Update comment"
-msgstr "Diweddariad Sylw"
+#: ../bin/textnoteui.c:189
+#, fuzzy
+msgid "Update Text Note"
+msgstr "Creu nodyn testun"
-#: ../bin/textnoteui.c:232
+#: ../bin/textnoteui.c:200
msgid "Replace this text with your note"
msgstr "Amnewid y testun hwn gyda'ch nodyn"
-#: ../bin/textnoteui.c:236
+#: ../bin/textnoteui.c:206
msgid "Create Text Note"
msgstr "Creu nodyn testun"
-#: ../bin/track.c:274
+#: ../bin/track.c:290
msgid "No track or structure pieces are present in layout"
msgstr "Nid oes unrhyw ddarnau trac na strwythur yn bresennol yn y cynllun"
-#: ../bin/track.c:276
+#: ../bin/track.c:292
msgid "No track or structure pieces are selected"
msgstr "Ni ddewisir unrhyw ddarnau trac na strwythur"
-#: ../bin/track.c:1379
+#: ../bin/track.c:1461
msgid "Move Objects Above"
msgstr "Symud gwrthrychau uwchben"
-#: ../bin/track.c:1399
+#: ../bin/track.c:1481
msgid "Mode Objects Below"
msgstr "Symud gwrthrychau isod"
-#: ../bin/track.c:1692
+#: ../bin/track.c:1785
msgid "Audit"
msgstr "Archwilio"
-#: ../bin/track.c:1981
-#, c-format
-msgid "%d Track(s) loosened"
-msgstr "%d Trac(iau) llacio"
-
-#: ../bin/track.c:1988
-msgid "No tracks loosened"
-msgstr "Dim traciau wedi llacio"
+#: ../bin/track.c:1990
+#, fuzzy, c-format
+msgid "Connecting a car to a non-car T%d T%d"
+msgstr "Cysylltu trac nad yw'n drac(%d) a (%d)"
-#: ../bin/track.c:1998 ../bin/track.c:2002
+#: ../bin/track.c:2000 ../bin/track.c:2005
#, c-format
msgid "Connecting a non-track(%d) to (%d)"
msgstr "Cysylltu trac nad yw'n drac(%d) a (%d)"
-#: ../bin/track.c:2057
+#: ../bin/track.c:2047
+#, c-format
+msgid "Disconnecting a car from a non-car T%d T%d"
+msgstr ""
+
+#: ../bin/track.c:2081
msgid "Join Abutting Tracks"
msgstr "Ymunwch â thraciau cyffiniol"
-#: ../bin/track.c:2345 ../bin/track.c:2380
+#: ../bin/track.c:2407 ../bin/track.c:2444
msgid "Inside turnout track"
msgstr "Trac pwynt y tu mewn"
-#: ../bin/track.c:2363
+#: ../bin/track.c:2425
#, c-format
msgid "Curve: Length=%s Radius=%0.3f Arc=%0.3f"
msgstr "Cromlin: Hyd=%s Radiws=%0.3f Arc=%0.3f"
-#: ../bin/track.c:2386 ../bin/track.c:2444 ../bin/tstraigh.c:646
+#: ../bin/track.c:2452 ../bin/track.c:2517 ../bin/tstraigh.c:853
#, c-format
msgid "Straight: Length=%s Angle=%0.3f"
msgstr "Syth: Hyd=%s Ongle=%0.3f"
-#: ../bin/track.c:3571
-#, c-format
-msgid "%s[%0.2f,%0.2f] A%0.2f"
+#: ../bin/track.c:3374
+#, fuzzy, c-format
+msgid "[%0.2f,%0.2f] A%0.2f"
msgstr "%s[%0.2f,%0.2f] O%0.2f"
-#: ../bin/track.c:3573
-#, c-format
-msgid "%s[%0.2f,%0.2f] A%0.2f\n"
+#: ../bin/track.c:3378
+#, fuzzy, c-format
+msgid "[%0.2f,%0.2f] A%0.2f\n"
msgstr "%s[%0.2f,%0.2f] O%0.2f\n"
-#: ../bin/trknote.c:55
-msgid "Comment"
-msgstr "Sylw"
+#: ../bin/trknote.c:52 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:154
+#, fuzzy
+msgid "Text Note"
+msgstr "Creu nodyn testun"
-#: ../bin/trknote.c:56
+#: ../bin/trknote.c:53
msgid "Link"
msgstr "Dolen"
-#: ../bin/trknote.c:56 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:104
+#: ../bin/trknote.c:53 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:105
msgid "Weblink"
msgstr "Dolen we"
-#: ../bin/trknote.c:639 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:112
+#: ../bin/trknote.c:526 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:113
msgid "Place a note on the layout"
msgstr "Rhowch nodyn ar y cynllun"
-#: ../bin/trknote.c:653
+#: ../bin/trknote.c:540
msgid "New Note"
msgstr "Nodyn newydd"
-#: ../bin/trknote.c:709
+#: ../bin/trknote.c:594
msgid "Add notes"
msgstr "Ychwanegu nodiadau"
-#: ../bin/tstraigh.c:91
+#: ../bin/tstraigh.c:92
msgid "Track Angle"
msgstr "Ongl y Trac"
-#: ../bin/tstraigh.c:194
+#: ../bin/tstraigh.c:212
#, c-format
msgid ""
"Straight Track(%d): Layer=%d Length=%s EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f "
@@ -6803,172 +6880,89 @@ msgid ""
msgstr ""
"Trac Syth(%d): Haen=%d Hyd=%s EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
-#: ../bin/tstraigh.c:559
+#: ../bin/tstraigh.c:762
msgid "Extending Straight Track"
msgstr "Ymestyn Trac Syth"
-#: ../bin/tstraigh.c:639
+#: ../bin/tstraigh.c:845
msgid "Straight "
msgstr "Syth"
-#: ../wlib/gtklib/filesel.c:94
-msgid "Save format:"
-msgstr "Arbed fformat:"
-
-#: ../wlib/gtklib/filesel.c:187
-msgid "Image files"
-msgstr "Ffeiliau delwedd"
-
-#: ../wlib/gtklib/font.c:282
-msgid "Font Select"
-msgstr "Ffont dewis"
-
-#: ../wlib/gtklib/help.c:84 ../wlib/mswlib/mswmisc.c:2274
-msgid "&Contents"
-msgstr "Cynnwys"
-
-#: ../wlib/gtklib/help.c:85
-msgid "Co&mmand Context help"
-msgstr "Cymorth Cyd-destun Gorchymyn"
-
-#: ../wlib/gtklib/ixhelp.c:243
-msgid "Home"
-msgstr "Hafan"
-
-#: ../wlib/gtklib/ixhelp.c:247
-msgid "Contents"
-msgstr "Cynnwys"
-
-#: ../wlib/gtklib/menu.c:541
-msgid "<Empty List>"
-msgstr "<Empty List>"
-
-#: ../wlib/gtklib/notice.c:101 ../wlib/mswlib/mswmisc.c:2134
-#: ../wlib/mswlib/mswmisc.c:2177
-msgid "Warning"
-msgstr "Rhybudd"
-
-#: ../wlib/gtklib/notice.c:106 ../wlib/mswlib/mswmisc.c:2139
-msgid "Error"
-msgstr "Gwall"
-
-#: ../wlib/gtklib/text.c:300
-#, c-format
-msgid "%d of %d"
-msgstr "%d i %d"
-
-#: ../wlib/gtklib/wpref.c:123
-#, c-format
-msgid ""
-"The required configuration files could not be located in the expected location.\n"
-"\n"
-"Usually this is an installation problem. Make sure that these files are installed in either \n"
-" ../share/xtrkcad or\n"
-" /usr/share/%s or\n"
-" /usr/local/share/%s\n"
-"If this is not possible, the environment variable %s must contain the name of the correct directory."
-msgstr ""
-"Ni ellid lleoli'r ffeiliau cyfluniad gofynnol yn y lleoliad disgwyliedig.\n"
-"\n"
-"Fel arfer mae hon yn broblem gosod. Sicrhewch fod y ffeiliau hyn wedi'u gosod yn y naill neu'r llall \n"
-" ../share/xtrkcad neu\n"
-" /usr/share/%s neu\n"
-" /usr/local/share/%s\n"
-"Os nad yw hyn yn bosibl, bydd yr amgylchedd yn newid %s rhaid iddo gynnwys enw'r cyfeiriadur cywir."
-
-#: ../wlib/gtklib/wpref.c:157 ../wlib/gtklib/wpref.c:202
-msgid "HOME is not set"
-msgstr "nid yw HOME wedi'i osod"
-
-#: ../wlib/gtklib/wpref.c:157 ../wlib/gtklib/wpref.c:166
-#: ../wlib/gtklib/wpref.c:202
-msgid "Exit"
-msgstr "Allanfa"
-
-#: ../wlib/gtklib/wpref.c:165
-#, c-format
-msgid "Cannot create %s"
-msgstr "Methu creu %s"
-
-#: ../wlib/mswlib/backgnd.c:104
-msgid "Image file is invalid or cannot be read."
-msgstr "Mae'r ffeil ddelwedd yn annilys neu ni ellir ei darllen."
-
-#: ../wlib/mswlib/mswmenu.c:888
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
-#: ../wlib/mswlib/mswmenu.c:893
-msgid "Alt+"
-msgstr "Alt+"
-
-#: ../wlib/mswlib/mswmenu.c:898
-msgid "Shift+"
-msgstr "Shift+"
-
-#: ../wlib/mswlib/mswmenu.c:904
-msgid "Space"
-msgstr "Gofod"
+#: ../bin/svgoutput.c:484
+msgid "Export to SVG"
+msgstr "Allforio i SVG"
-#: ../wlib/mswlib/mswmisc.c:195
+#: ../wlib/mswlib/mswmisc.c:188
msgid "All image files"
msgstr "Pob ffeil ddelwedd"
-#: ../wlib/mswlib/mswmisc.c:197
+#: ../wlib/mswlib/mswmisc.c:190
msgid "GIF files (*.gif)"
msgstr "GIF ffeiliau (*.gif)"
-#: ../wlib/mswlib/mswmisc.c:199
+#: ../wlib/mswlib/mswmisc.c:192
msgid "JPEG files (*.jpeg,*.jpg)"
msgstr "JPEG ffeiliau (*.jpeg,*.jpg)"
-#: ../wlib/mswlib/mswmisc.c:201
+#: ../wlib/mswlib/mswmisc.c:194
msgid "PNG files (*.png)"
msgstr "PNG ffeiliau (*.png)"
-#: ../wlib/mswlib/mswmisc.c:203
+#: ../wlib/mswlib/mswmisc.c:196
msgid "TIFF files (*.tiff, *.tif)"
msgstr "TIFF ffeiliau (*.tiff, *.tif)"
-#: ../wlib/mswlib/mswmisc.c:205
+#: ../wlib/mswlib/mswmisc.c:198
msgid "All files (*)"
msgstr "Pob Ffeil (*)"
-#: ../wlib/mswlib/mswmisc.c:2275
+#: ../wlib/mswlib/mswmisc.c:2062 ../wlib/mswlib/mswmisc.c:2105
+msgid "Warning"
+msgstr "Rhybudd"
+
+#: ../wlib/mswlib/mswmisc.c:2067
+msgid "Error"
+msgstr "Gwall"
+
+#: ../wlib/mswlib/mswmisc.c:2203
+msgid "&Contents"
+msgstr "Cynnwys"
+
+#: ../wlib/mswlib/mswmisc.c:2204
msgid "&Search for Help on..."
msgstr "Chwilio am help ar ..."
-#: ../wlib/mswlib/mswmisc.c:2276
+#: ../wlib/mswlib/mswmisc.c:2205
msgid "Co&mmand Context Help"
msgstr "Cymorth Cyd-destun Gorchymyn"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:9
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:9
#, c-format
msgid ""
-"MSG_BETA_NOTICE\tXTrackCAD Version %s: Please note that this Beta Version of"
-" XTrackCAD is still undergoing final testing before its official release. "
-"The sole purpose of this Beta Version is to conduct testing and obtain "
-"feedback. Should you encounter any bugs, glitches, lack of functionality or "
-"other problems, please let us know immediately so we can rectify these "
+"MSG_BETA_NOTICE\tXTrackCAD Version %s: Please note that this Beta Version of "
+"XTrackCAD is still undergoing final testing before its official release. The "
+"sole purpose of this Beta Version is to conduct testing and obtain feedback. "
+"Should you encounter any bugs, glitches, lack of functionality or other "
+"problems, please let us know immediately so we can rectify these "
"accordingly. Your help in this regard is greatly appreciated!"
msgstr ""
"MSG_BETA_NOTICE\tXTrackCAD Version %s: Sylwch fod y Fersiwn Beta hon o "
"XTrackCAD yn dal i gael ei phrofi'n derfynol cyn ei rhyddhau'n swyddogol. "
-"Unig bwrpas y Fersiwn Beta hon yw cynnal profion a chael adborth. Os byddwch"
-" chi'n dod ar draws unrhyw chwilod, bylchau, diffyg ymarferoldeb neu "
+"Unig bwrpas y Fersiwn Beta hon yw cynnal profion a chael adborth. Os byddwch "
+"chi'n dod ar draws unrhyw chwilod, bylchau, diffyg ymarferoldeb neu "
"broblemau eraill, rhowch wybod i ni ar unwaith er mwyn i ni allu cywiro'r "
"rhain yn unol â hynny. Gwerthfawrogir eich help yn hyn o beth yn fawr!"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:10
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:10
#, c-format
msgid ""
-"MSG_CANT_PLACE_FROGPOINTS\tFrog|Points cannot be placed on a turnout, circle"
-" or helix.\tA %s cannot be placed on a turnout, circle or helix."
+"MSG_CANT_PLACE_FROGPOINTS\tFrog|Points cannot be placed on a turnout, circle "
+"or helix.\tA %s cannot be placed on a turnout, circle or helix."
msgstr ""
"MSG_CANT_PLACE_FROGPOINTS\tNi ellir gosod FrogPoints ar bwynt, cylch na "
"helics\tNi ellir gosod %s ar y nifer sy'n pleidleisio, cylch na helics."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:11
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:11
msgid ""
"MSG_SEL_TRK_FROZEN\tA frozen layer contains selected track. Command cannot "
"be executed."
@@ -6976,90 +6970,106 @@ msgstr ""
"MSG_SEL_TRK_FROZEN\tMae haen wedi'i rewi yn cynnwys trac dethol. Ni ellir "
"gweithredu gorchymyn."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:12
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:12
msgid "MSG_HELIX_TURNS_GTR_0\tA Helix must have one or more loops of track."
msgstr "MSG_HELIX_TURNS_GTR_0\tRhaid bod gan Helix un dolen neu fwy o drac."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:13
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:13
msgid ""
-"MSG_LARGE_FONT\tA large font has been selected....\tA large font has been selected.\n"
+"MSG_LARGE_FONT\tA large font has been selected....\tA large font has been "
+"selected.\n"
"Large fonts may a take a while to load.\n"
"\n"
"Do you wish to continue?"
msgstr ""
-"MSG_LARGE_FONT\tMae ffont fawr wedi'i dewis ....\tMae ffont fawr wedi'i dewis..\n"
+"MSG_LARGE_FONT\tMae ffont fawr wedi'i dewis ....\tMae ffont fawr wedi'i "
+"dewis..\n"
"Gall ffontiau mawr gymryd amser i'w llwytho.\n"
"\n"
"Ydych chi am barhau?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:14
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:14
msgid ""
-"MSG_TEXT_TOO_LONG\tThe entered text was too long for the text object. It was"
-" truncated."
+"MSG_TEXT_TOO_LONG\tThe entered text was too long for the text object. It was "
+"truncated."
msgstr ""
"MSG_TEXT_TOO_LONG\tRoedd y testun a gofnodwyd yn rhy hir ar gyfer gwrthrych "
"y testun. Cafodd ei gwtogi."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:15
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:15
msgid ""
-"MSG_TODSGN_DESC_NONBLANK\tAll description fields present in the Turnout...\tAll description fields present in the Turnout\n"
+"MSG_TODSGN_DESC_NONBLANK\tAll description fields present in the Turnout..."
+"\tAll description fields present in the Turnout\n"
"Designer must contain appropriate information.\n"
"Correct inappropriate values and try again."
msgstr ""
-"MSG_TODSGN_DESC_NONBLANK\tPob maes disgrifio sy'n bresennol yn y Pwynt ...\tPob maes disgrifio sy'n bresennol yn y Pwynt\n"
+"MSG_TODSGN_DESC_NONBLANK\tPob maes disgrifio sy'n bresennol yn y Pwynt ..."
+"\tPob maes disgrifio sy'n bresennol yn y Pwynt\n"
"Rhaid i'r dylunydd gynnwys gwybodaeth briodol.\n"
"Cywiro gwerthoedd amhriodol a rhoi cynnig arall arni."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:16
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:16
msgid ""
-"MSG_GROUP_NONBLANK\tAll fields listed in the Group dialog must contain data....\tAll fields listed in the Group dialog must contain data.\n"
+"MSG_GROUP_NONBLANK\tAll fields listed in the Group dialog must contain "
+"data....\tAll fields listed in the Group dialog must contain data.\n"
"Please enter missing values and try again."
msgstr ""
-"MSG_GROUP_NONBLANK\tRhaid i'r holl feysydd a restrir yn y dialog Grŵp gynnwys data\tRhaid i'r holl feysydd a restrir yn y dialog Grŵp gynnwys data.\n"
+"MSG_GROUP_NONBLANK\tRhaid i'r holl feysydd a restrir yn y dialog Grŵp "
+"gynnwys data\tRhaid i'r holl feysydd a restrir yn y dialog Grŵp gynnwys "
+"data.\n"
"Rhowch werthoedd coll a rhoi cynnig arall arni."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:17
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:17
msgid ""
-"MSG_TODSGN_VALUES_GTR_0\tAll values specified in the Turnout Designer must be...\tAll values specified in the Turnout Designer must be\n"
+"MSG_TODSGN_VALUES_GTR_0\tAll values specified in the Turnout Designer must "
+"be...\tAll values specified in the Turnout Designer must be\n"
"greater than 0. Correct inappropriate values and try again."
msgstr ""
-"MSG_TODSGN_VALUES_GTR_0\tRhaid i'r holl werthoedd a bennir yn y Dylunydd Pwynt fod yn ...\tRhaid i'r holl werthoedd a bennir yn y Dylunydd Pwynt fod\n"
+"MSG_TODSGN_VALUES_GTR_0\tRhaid i'r holl werthoedd a bennir yn y Dylunydd "
+"Pwynt fod yn ...\tRhaid i'r holl werthoedd a bennir yn y Dylunydd Pwynt fod\n"
"yn fwy na 0. Cywiro gwerthoedd amhriodol a rhoi cynnig arall arni."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:18
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:18
msgid "MSG_CURVE_OUT_OF_RANGE\tAngle must be between 0\\u00B0 and 360\\u00B0."
msgstr "MSG_CURVE_OUT_OF_RANGE\tRhaid i ongl fod rhwng 0\\u00B0 a 360\\u00B0."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:19
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:19
msgid ""
-"MSG_TODSGN_CORNU_TOO_COMPLEX\tThe curves created by the Turnout Designer for a cornu curve have more than 128 segments....\tThe curves created by the Turnout Designer for a cornu curve have more than 128 segments.\n"
+"MSG_TODSGN_CORNU_TOO_COMPLEX\tThe curves created by the Turnout Designer for "
+"a cornu curve have more than 128 segments....\tThe curves created by the "
+"Turnout Designer for a cornu curve have more than 128 segments.\n"
"Try adjusting the end angles and radii to be closer in values."
msgstr ""
-"MSG_TODSGN_CORNU_TOO_COMPLEX\tMae gan y cromliniau a grëwyd gan y Dylunydd Pwynt ar gyfer cromlin Cornu fwy na 128 segment ....\tMae gan y cromliniau a grëwyd gan y Dylunydd Pwynt ar gyfer cromlin Cornu fwy na 128 segment.\n"
+"MSG_TODSGN_CORNU_TOO_COMPLEX\tMae gan y cromliniau a grëwyd gan y Dylunydd "
+"Pwynt ar gyfer cromlin Cornu fwy na 128 segment ....\tMae gan y cromliniau a "
+"grëwyd gan y Dylunydd Pwynt ar gyfer cromlin Cornu fwy na 128 segment.\n"
"Ceisiwch addasu'r onglau diwedd a'r radiws i fod yn agosach o ran gwerthoedd."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:20
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:20
#, c-format
msgid ""
-"MSG_CUSTMGM_DELETE_CONFIRM\tAre you sure you want to delete the NNN definition(s)?\tAre you sure you want to delete the\n"
+"MSG_CUSTMGM_DELETE_CONFIRM\tAre you sure you want to delete the NNN "
+"definition(s)?\tAre you sure you want to delete the\n"
"%d definition(s)?"
msgstr ""
-"MSG_CUSTMGM_DELETE_CONFIRM\tYdych chi'n siŵr eich bod chi am ddileu'r diffiniad (au) NNN?\tYdych chi'n siŵr eich bod chi am ddileu'r diffiniad(au)\n"
+"MSG_CUSTMGM_DELETE_CONFIRM\tYdych chi'n siŵr eich bod chi am ddileu'r "
+"diffiniad (au) NNN?\tYdych chi'n siŵr eich bod chi am ddileu'r "
+"diffiniad(au)\n"
"%d?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:21
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:21
msgid "MSG_WBITMAP_FAILED\tBitmap create or write function failed."
msgstr "MSG_WBITMAP_FAILED\tMethodd swyddogaeth creu neu ysgrifennu didfap."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:22
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:22
msgid "MSG_BITMAP_TOO_LARGE\tBitmap is too large."
msgstr "Mae didfap yn rhy fawr"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:23
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:23
msgid "MSG_CHANGE_ELEV_MODE\tCannot change elevation mode."
msgstr "MSG_CHANGE_ELEV_MODE\tMethu newid modd drychiad."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:24
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:24
msgid ""
"MSG_GRID_ENABLE_SPACE_GTR_0\tCannot Enable Grid; spacing must be greater "
"than 0"
@@ -7067,58 +7077,62 @@ msgstr ""
"MSG_GRID_ENABLE_SPACE_GTR_0\tCannot Enable Grid; spacing must be greater "
"than 0"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:25
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:25
msgid "MSG_LAYER_FREEZE\tCannot freeze current layer"
msgstr "MSG_LAYER_FREEZE\tNi all rewi'r haen gyfredol"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:26
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:26
+msgid ""
+"MSG_GROUP_NO_PATHS\tNo Paths were detected when grouping selected Tracks."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:27
msgid ""
"MSG_CANT_GROUP_BUMPER1\tCannot Group Bumper Track. The track has been "
"unselected."
msgstr ""
"MSG_CANT_GROUP_BUMPER1\tMethu Trac Bumper Grŵp. Mae'r trac wedi'i ddewis."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:27
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:28
#, c-format
msgid "MSG_CANNOT_GROUP_TRACK\tCannot Group selected track type %s."
msgstr "MSG_CANNOT_GROUP_TRACK\tMethu Grŵp dewis math o drac %s."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:28
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:29
msgid "MSG_LAYER_HIDE\tCannot hide current layer"
msgstr "MSG_LAYER_HIDE\tNi all guddio'r haen gyfredol"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:29
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:30
msgid "MSG_LAYER_MODULE\tCannot turn current layer into a Module"
msgstr "MSG_LAYER_MODULE\tCannot turn current layer into a Module"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:30
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:31
msgid "MSG_JOIN_EASEMENTS\tCannot Join; Easements do not align or abut."
msgstr ""
-"MSG_JOIN_EASEMENTS\tMethu Ymuno; Nid yw rhwyddinebau yn alinio nac yn "
-"ffinio."
+"MSG_JOIN_EASEMENTS\tMethu Ymuno; Nid yw rhwyddinebau yn alinio nac yn ffinio."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:31
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:32
#, c-format
msgid ""
-"MSG_TRK_ALREADY_CONN\tFirst|Second track is already connected.\tCannot Join;"
-" %s track is already connected."
+"MSG_TRK_ALREADY_CONN\tFirst|Second track is already connected.\tCannot Join; "
+"%s track is already connected."
msgstr ""
-"MSG_TRK_ALREADY_CONN\tMae trac cyntaf | Ail drac eisoes wedi'i "
-"gysylltu.\tMethu Ymuno; %s trac eisoes wedi'i gysylltu."
+"MSG_TRK_ALREADY_CONN\tMae trac cyntaf | Ail drac eisoes wedi'i gysylltu."
+"\tMethu Ymuno; %s trac eisoes wedi'i gysylltu."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:32
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:33
msgid "MSG_JOIN_TURNTABLE\tCannot join from a turntable, try to a turntable"
msgstr "MSG_JOIN_TURNTABLE\tNi all ymuno o drofwrdd, ceisiwch drofwrdd"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:33
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:34
msgid "MSG_JOIN_CORNU_SAME\tCannot Join; Selected endpoints are on same track."
msgstr "MSG_JOIN_CORNU_SAME\tMethu Ymuno; Mae endpoints dethol ar yr un trac."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:34
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:35
msgid "MSG_JOIN_SAME\tCannot Join; Selected endpoints are on same track."
msgstr "MSG_JOIN_SAME\tMethu Ymuno; Mae endpoints dethol ar yr un trac."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:35
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:36
msgid ""
"MSG_JOIN_NOTBEZIERORCORNU\tCannot Join Bezier or Cornu track if Easement is "
"not Cornu"
@@ -7126,12 +7140,13 @@ msgstr ""
"MSG_JOIN_NOTBEZIERORCORNU\tMethu Ymuno â thrac Bezier neu Cornu os nad yw "
"Easement yn Cornu"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:36
-msgid "MSG_SELECTED_TRACKS_PARALLEL\tCannot Join; Selected tracks are parallel."
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:37
+msgid ""
+"MSG_SELECTED_TRACKS_PARALLEL\tCannot Join; Selected tracks are parallel."
msgstr ""
"MSG_SELECTED_TRACKS_PARALLEL\tMethu Ymuno; Mae traciau dethol yn gyfochrog."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:37
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:38
#, c-format
msgid ""
"MSG_PRMFIL_OPEN_NEW\tCannot open New Parameter File: FILENAME\tCannot open "
@@ -7140,23 +7155,24 @@ msgstr ""
"MSG_PRMFIL_OPEN_NEW\tMethu agor Ffeil Paramedr Newydd: FILENAME\tMethu agor "
"Ffeil Paramedr Newydd:%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:38
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:39
msgid "MSG_LAYER_SEL_FROZEN\tCannot select a frozen layer"
msgstr "MSG_LAYER_SEL_FROZEN\tMethu dewis haen wedi'i rewi"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:39
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:40
msgid ""
"MSG_GRID_SHOW_SPACE_GTR_0\tCannot Show Grid; spacing must be greater than 0"
msgstr ""
"MSG_GRID_SHOW_SPACE_GTR_0\tMethu Dangos Grid; rhaid i'r bylchau fod yn fwy "
"na 0"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:40
-#, c-format
-msgid "MSG_CANT_SPLIT_TRK\tCannot split TYPE track\tCannot split %s track"
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:41
+#, fuzzy, c-format
+msgid ""
+"MSG_CANT_SPLIT_TRK\tCannot split TYPE track\tCannot split track of type %s"
msgstr "MSG_CANT_SPLIT_TRK\tMethu rhannu trac TYPE \tMethu hollti %s trac"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:41
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:42
#, c-format
msgid ""
"MSG_CUSTMGM_CANT_WRITE\tCannot write to parameter file: FILENAME\tCannot "
@@ -7165,89 +7181,97 @@ msgstr ""
"MSG_CUSTMGM_CANT_WRITE\tMethu ysgrifennu at ffeil paramedr: FILENAME\tMethu "
"ysgrifennu at ffeil paramedr: %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:42
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:43
msgid "MSG_CARIMP_DUP_INDEX\tCar Index number duplicated."
msgstr "MSG_CARIMP_DUP_INDEX\tRhif Mynegai Car wedi'i ddyblygu."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:43
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:44
msgid ""
"MSG_CONN_PARAMS_TOO_SMALL\tConnection parameters reset to minimum values."
msgstr ""
-"MSG_CONN_PARAMS_TOO_SMALL\tMae paramedrau cysylltiad yn cael eu hailosod i'r"
-" gwerthoedd lleiaf."
+"MSG_CONN_PARAMS_TOO_SMALL\tMae paramedrau cysylltiad yn cael eu hailosod i'r "
+"gwerthoedd lleiaf."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:44
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:45
msgid "MSG_CONN_PARAMS_TOO_BIG\tConnection parameters reset to maximum values."
msgstr "Mae paramedrau cysylltiad yn ailosod i'r gwerthoedd uchaf."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:45
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:46
msgid "MSG_CANT_PASTE\tCopy/Paste buffer is empty. There is nothing to Paste."
msgstr ""
"MSG_CANT_PASTE\tMae byffer Copi / Gludo yn wag. Nid oes unrhyw beth i'w "
"Gludo."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:46
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:47
msgid ""
-"MSG_TODSGN_CROSSOVER_TOO_SHORT\tCrossover length is too short. Correct...\tCrossover length is too short. Correct\n"
+"MSG_TODSGN_CROSSOVER_TOO_SHORT\tCrossover length is too short. Correct..."
+"\tCrossover length is too short. Correct\n"
"inappropriate value(s) and try again."
msgstr ""
-"MSG_TODSGN_CROSSOVER_TOO_SHORT\tMae hyd croesi yn rhy fyr. Cywir ... \t Mae hyd y trosglwyddiad yn rhy fyr. Cywir\n"
+"MSG_TODSGN_CROSSOVER_TOO_SHORT\tMae hyd croesi yn rhy fyr. Cywir ... \t Mae "
+"hyd y trosglwyddiad yn rhy fyr. Cywir\n"
"gwerth(au) amhriodol a rhoi cynnig arall arni."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:47
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:48
msgid "MSG_CURVE_TOO_LARGE\tCurved track is too large."
msgstr "MSG_CURVE_TOO_LARGE\tMae'r trac crwm yn rhy fawr."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:48
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:49
msgid ""
-"MSG_TODSGN_REPLACE\tDefinition name is already in use. Saving this...\tDefinition name is already in use. Saving this\n"
+"MSG_TODSGN_REPLACE\tDefinition name is already in use. Saving this..."
+"\tDefinition name is already in use. Saving this\n"
"definition replaces the existing definition.\n"
"\n"
"Do you want to continue?"
msgstr ""
-"MSG_TODSGN_REPLACE\tMae enw'r diffiniad eisoes yn cael ei ddefnyddio. Arbed hwn ... Mae enw'r diffiniad eisoes yn cael ei ddefnyddio. Arbed hyn\n"
+"MSG_TODSGN_REPLACE\tMae enw'r diffiniad eisoes yn cael ei ddefnyddio. Arbed "
+"hwn ... Mae enw'r diffiniad eisoes yn cael ei ddefnyddio. Arbed hyn\n"
"mae'r diffiniad yn disodli'r diffiniad presennol.\n"
"\n"
"Ydych chi am barhau?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:49
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:50
msgid "MSG_SAVE_CHANGES\tDo you want to save the changes made to your Layout?"
-msgstr "MSG_SAVE_CHANGES\tYdych chi am arbed y newidiadau a wnaed i'ch Cynllun?"
+msgstr ""
+"MSG_SAVE_CHANGES\tYdych chi am arbed y newidiadau a wnaed i'ch Cynllun?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:50
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:51
msgid ""
"MSG_CARIMP_DUP_COLUMNS\tDuplicate column headers found in Car Import file."
msgstr ""
-"MSG_CARIMP_DUP_COLUMNS\tPenawdau colofn dyblyg a geir yn ffeil Mewnforio "
-"Car."
+"MSG_CARIMP_DUP_COLUMNS\tPenawdau colofn dyblyg a geir yn ffeil Mewnforio Car."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:51
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:52
msgid "MSG_EP_ON_PATH\tEndpoint already on Path."
msgstr "MSG_EP_ON_PATH\tEndpoint eisoes ar y Llwybr."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:52
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:53
#, c-format
msgid ""
-"MSG_UPGRADE_VERSION1\tFile version %ld is greater than supported...\tFile version %ld is greater than supported\n"
+"MSG_UPGRADE_VERSION1\tFile version %ld is greater than supported...\tFile "
+"version %ld is greater than supported\n"
"version %d. You need to upgrade %s\n"
"to at least version %s."
msgstr ""
-"MSG_UPGRADE_VERSION1\tFersiwn ffeil %ld yn fwy na'r hyn a gefnogir...\tFersiwn ffeil %ld yn fwy na'r hyn a gefnogir\n"
+"MSG_UPGRADE_VERSION1\tFersiwn ffeil %ld yn fwy na'r hyn a gefnogir..."
+"\tFersiwn ffeil %ld yn fwy na'r hyn a gefnogir\n"
"fersiwn %d. Mae angen i chi uwchraddio %s\n"
"i fersiwn o leiaf %s."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:53
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:54
#, c-format
msgid ""
-"MSG_UPGRADE_VERSION2\tFile version %ld is greater than supported...\tFile version %ld is greater than supported\n"
+"MSG_UPGRADE_VERSION2\tFile version %ld is greater than supported...\tFile "
+"version %ld is greater than supported\n"
"version %d. You need to upgrade your\n"
"version of %s"
msgstr ""
-"MSG_UPGRADE_VERSION2\tFersiwn ffeil %ld yn fwy na'r hyn a gefnogir...\tFersiwn ffeil %ld yn fwy na'r hyn a gefnogir.\n"
+"MSG_UPGRADE_VERSION2\tFersiwn ffeil %ld yn fwy na'r hyn a gefnogir..."
+"\tFersiwn ffeil %ld yn fwy na'r hyn a gefnogir.\n"
"fersiwn %d. Mae angen i chi uwchraddio\n"
"fersiwn o %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:54
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:55
#, c-format
msgid ""
"MSG_LAYOUT_LINES_SKIPPED\tWhile processing Layout file %s, %d lines were "
@@ -7256,29 +7280,33 @@ msgstr ""
"MSG_LAYOUT_LINES_SKIPPED\tWrth brosesu'r ffeil Cynllun %s, %d hepgorwyd "
"llinellau oherwydd na chawsant eu cydnabod."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:55
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:56
#, c-format
msgid ""
-"MSG_PARAM_UPGRADE_VERSION1\tFile version %ld is greater than supported...\tFile version %ld is greater than supported\n"
+"MSG_PARAM_UPGRADE_VERSION1\tFile version %ld is greater than supported..."
+"\tFile version %ld is greater than supported\n"
"version %d. You need to upgrade %s\n"
"to at least version %s."
msgstr ""
-"MSG_PARAM_UPGRADE_VERSION1\tFersiwn ffeil %ld yn fwy na'r hyn a gefnogir...\tFersiwn ffeil %ld yn fwy na'r hyn a gefnogir.\n"
+"MSG_PARAM_UPGRADE_VERSION1\tFersiwn ffeil %ld yn fwy na'r hyn a gefnogir..."
+"\tFersiwn ffeil %ld yn fwy na'r hyn a gefnogir.\n"
"fersiwn %d. Mae angen i chi uwchraddio %s\n"
"i fersiwn o leiaf %s."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:56
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:57
#, c-format
msgid ""
-"MSG_PARAM_UPGRADE_VERSION2\tFile version %ld is greater than supported...\tFile version %ld is greater than supported\n"
+"MSG_PARAM_UPGRADE_VERSION2\tFile version %ld is greater than supported..."
+"\tFile version %ld is greater than supported\n"
"version %d. You need to upgrade your\n"
"version of %s"
msgstr ""
-"MSG_PARAM_UPGRADE_VERSION2\tFersiwn ffeil %ld yn fwy na'r hyn a gefnogir...\tFersiwn ffeil %ldyn fwy na'r hyn a gefnogir.\n"
+"MSG_PARAM_UPGRADE_VERSION2\tFersiwn ffeil %ld yn fwy na'r hyn a gefnogir..."
+"\tFersiwn ffeil %ldyn fwy na'r hyn a gefnogir.\n"
"fersiwn %d. Mae angen i chi uwchraddio\n"
"fersiwn o %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:57
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:58
#, c-format
msgid ""
"MSG_PARAM_LINES_SKIPPED\tWhile processing Parameter file %s, %d lines were "
@@ -7287,7 +7315,7 @@ msgstr ""
"MSG_PARAM_LINES_SKIPPED\tWrth brosesu'r ffeil Paramedr %s, %d hepgorwyd "
"llinellau oherwydd na chawsant eu cydnabod."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:58
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:59
msgid ""
"MSG_MOVE_POINTS_OTHER_SIDE\tFrog angle prevents placement of points. Move "
"points to opposite side of frog."
@@ -7295,107 +7323,111 @@ msgstr ""
"MSG_MOVE_POINTS_OTHER_SIDE\tMae ongl broga yn atal gosod pwyntiau. Symud "
"pwyntiau i ochr arall y broga."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:59
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:60
msgid "MSG_NO_ROOM_BTW_TRKS\tInsufficient space between existing stall tracks."
msgstr ""
"MSG_NO_ROOM_BTW_TRKS\tDim digon o le rhwng y traciau stondinau presennol."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:60
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:61
#, c-format
msgid ""
-"MSG_JOIN_DIFFER_ELEV\tJoining tracks with differing elevations "
-"(N.NNN)\tJoining tracks with differing elevations (%0.2f)"
+"MSG_JOIN_DIFFER_ELEV\tJoining tracks with differing elevations (N."
+"NNN)\tJoining tracks with differing elevations (%0.2f)"
msgstr ""
-"MSG_JOIN_DIFFER_ELEV\tYmuno traciau gyda gwahanol ddrychiadau (N.NNN)\tYmuno"
-" traciau gyda gwahanol ddrychiadau (%0.2f)"
+"MSG_JOIN_DIFFER_ELEV\tYmuno traciau gyda gwahanol ddrychiadau (N.NNN)\tYmuno "
+"traciau gyda gwahanol ddrychiadau (%0.2f)"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:61
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:62
msgid "MSG_TRK_DESC_NOT_VISIBLE\tLabel description is hidden"
msgstr "MSG_TRK_DESC_NOT_VISIBLE\tMae disgrifiad label wedi'i guddio"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:62
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:63
msgid "MSG_DESC_NOT_VISIBLE\tLabel descriptions not visible"
msgstr "MSG_DESC_NOT_VISIBLE\tNid yw disgrifiadau label yn weladwy"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:63
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:64
msgid "MSG_OBJECT_TOO_SHORT\tLength of object is too short."
msgstr "MSG_OBJECT_TOO_SHORT\tMae hyd y gwrthrych yn rhy fyr."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:64
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:65
#, c-format
msgid ""
-"MSG_PRINT_MAX_SIZE\tMaximum allowed page size is W x H\tMaximum allowed page"
-" size is %s x %s"
+"MSG_PRINT_MAX_SIZE\tMaximum allowed page size is W x H\tMaximum allowed page "
+"size is %s x %s"
msgstr ""
"MSG_PRINT_MAX_SIZE\tUchafswm maint y dudalen a ganiateir yw W x H\tUchafswm "
"maint y dudalen a ganiateir yw %s x %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:65
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:66
msgid ""
-"MSG_NO_PRINTER_SELECTED\tPlease select a printer from the Print Setup "
-"dialog."
+"MSG_NO_PRINTER_SELECTED\tPlease select a printer from the Print Setup dialog."
msgstr ""
"MSG_NO_PRINTER_SELECTED\tDewiswch argraffydd o'r ymgom Gosod Argraffydd."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:66
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:67
#, c-format
msgid ""
-"MSG_PRMFIL_NO_CONTENTS\tNew Parameter File has no CONTENTS line: "
-"FILENAME.\tNew Parameter File has no CONTENTS line: %s"
+"MSG_PRMFIL_NO_CONTENTS\tNew Parameter File has no CONTENTS line: FILENAME."
+"\tNew Parameter File has no CONTENTS line: %s"
msgstr ""
"MSG_PRMFIL_NO_CONTENTS\tNid oes gan Ffeil Paramedr Newydd CONTENTS llinell: "
"FILENAME.\tNid oes gan Ffeil Paramedr Newydd CONTENTS llinell: %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:67
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:68
msgid ""
-"MSG_NO_CARS\tNo Cars are defined for the current scale....\tNo Cars are defined for the current scale.\n"
+"MSG_NO_CARS\tNo Cars are defined for the current scale....\tNo Cars are "
+"defined for the current scale.\n"
"\n"
"Do you want to use the Car Inventory dialog?"
msgstr ""
-"MSG_NO_CARS\tNid oes unrhyw geir wedi'u diffinio ar gyfer y raddfa gyfredol ....\tNid oes unrhyw geir wedi'u diffinio ar gyfer y raddfa gyfredol.\n"
+"MSG_NO_CARS\tNid oes unrhyw geir wedi'u diffinio ar gyfer y raddfa "
+"gyfredol ....\tNid oes unrhyw geir wedi'u diffinio ar gyfer y raddfa "
+"gyfredol.\n"
"\n"
"Ydych chi am ddefnyddio'r ymgom Rhestr Car?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:68
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:69
msgid ""
-"MSG_NO_CARPROTO\tNo Car Prototypes are defined....\tNo Car Prototypes are defined.\n"
+"MSG_NO_CARPROTO\tNo Car Prototypes are defined....\tNo Car Prototypes are "
+"defined.\n"
"Load a Prototype definition file using the\n"
"Parameter Files dialog or create a Prototype\n"
"definition using the Car Prototype dialog."
msgstr ""
-"MSG_NO_CARPROTO\tNid oes unrhyw Brototeipiau Car wedi'u diffinio ....\tNid oes unrhyw Brototeipiau Car wedi'u diffini.\n"
+"MSG_NO_CARPROTO\tNid oes unrhyw Brototeipiau Car wedi'u diffinio ....\tNid "
+"oes unrhyw Brototeipiau Car wedi'u diffini.\n"
"Llwythwch ffeil diffiniad Prototeip gan ddefnyddio'r\n"
"Deialog Ffeiliau Paramedr neu greu Prototeip\n"
"diffiniad gan ddefnyddio'r ymgom Prototeip Car."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:69
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:70
msgid "MSG_CARIMP_NO_DATA\tNo data present in Car Import file."
msgstr ""
"MSG_CARIMP_NO_DATA\tNid oes unrhyw ddata yn bresennol yn y ffeil Mewnforio "
"Car."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:70
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:71
msgid "MSG_PRINT_NO_PAGES\tNo pages selected for printing."
msgstr "MSG_PRINT_NO_PAGES\tDim tudalennau wedi'u dewis i'w hargraffu."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:71
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:72
msgid "MSG_NO_PATH_TO_EP\tNo path between Profile and selected endpoint."
msgstr "MSG_NO_PATH_TO_EP\tDim llwybr rhwng Proffil a diweddbwynt dethol."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:72
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:73
#, c-format
msgid ""
-"MSG_PRMFIL_NO_MAP\tNo Parameter File Map for CONTENTS\tNo Parameter File Map"
-" for %s"
+"MSG_PRMFIL_NO_MAP\tNo Parameter File Map for CONTENTS\tNo Parameter File Map "
+"for %s"
msgstr ""
"MSG_PRMFIL_NO_MAP\tDim Map Ffeil Paramedr ar gyfer CONTENTS\tDim Map Ffeil "
"Paramedr ar gyfer %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:73
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:74
msgid "MSG_NO_SELECTED_TRK\tNo track(s) selected!"
msgstr "MSG_NO_SELECTED_TRK\tDim trac(au) wedi'u dewis!"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:74
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:75
msgid ""
"MSG_NO_EMPTY_LAYER\tNo layer was found that has no contents, so the module "
"can not be imported"
@@ -7403,7 +7435,7 @@ msgstr ""
"MSG_NO_EMPTY_LAYER\tNi ddarganfuwyd haen nad oes ganddo gynnwys, felly ni "
"ellir mewnforio'r modiwl"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:75
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:76
msgid ""
"MSG_NO_UNFROZEN_LAYER\tNo layer was found that wasn't frozen. Layer 0 is "
"unfrozen."
@@ -7411,7 +7443,7 @@ msgstr ""
"MSG_NO_UNFROZEN_LAYER\tNi ddarganfuwyd haen nad oedd wedi'i rhewi. Mae haen "
"0 heb ei rewi."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:76
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:77
msgid ""
"MSG_NOT_UNFROZEN_LAYER\tThe current layer was defined as frozen. It is now "
"unfrozen."
@@ -7419,7 +7451,7 @@ msgstr ""
"MSG_NOT_UNFROZEN_LAYER\tDiffiniwyd yr haen gyfredol fel un wedi'i rewi. Mae "
"bellach heb ei rewi."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:77
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:78
#, c-format
msgid ""
"MSG_NO_TURNOUTS_AVAILABLE\tNo Turnouts|Structures are available.\tNo %s are "
@@ -7428,21 +7460,23 @@ msgstr ""
"MSG_NO_TURNOUTS_AVAILABLE\tDim Pwyntiau | Mae strwythurau ar gael.\tDim %s "
"ar gael."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:78
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:79
msgid ""
-"MSG_CARDESC_VALUE_ZERO\tNumeric values on the Car Description...\tNumeric values on the Car Description\n"
+"MSG_CARDESC_VALUE_ZERO\tNumeric values on the Car Description...\tNumeric "
+"values on the Car Description\n"
"dialog must be greater than 0."
msgstr ""
-"MSG_CARDESC_VALUE_ZERO\tGwerthoedd rhifol ar y Disgrifiad Car...\tGwerthoedd rhifol ar y Disgrifiad Car\n"
+"MSG_CARDESC_VALUE_ZERO\tGwerthoedd rhifol ar y Disgrifiad Car...\tGwerthoedd "
+"rhifol ar y Disgrifiad Car\n"
"rhaid i'r ymgom fod yn fwy na 0."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:79
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:80
msgid "MSG_MOVE_OUT_OF_BOUNDS\tObject has moved beyond room boundaries."
msgstr ""
"MSG_MOVE_OUT_OF_BOUNDS\tMae'r gwrthrych wedi symud y tu hwnt i ffiniau "
"ystafelloedd."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:80
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:81
msgid ""
"MSG_PARALLEL_SEP_GTR_0\tParallel separation must be greater than 0, or the "
"new guage must be different than the old."
@@ -7450,99 +7484,107 @@ msgstr ""
"MSG_PARALLEL_SEP_GTR_0\tRhaid i wahaniad cyfochrog fod yn fwy na 0, neu "
"rhaid i'r mesurydd newydd fod yn wahanol na'r hen."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:81
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:82
msgid ""
-"MSG_CARPART_DUPNAME\tPart Number for this Manufacturer already exists....\tPart Number for this Manufacturer already exists.\n"
+"MSG_CARPART_DUPNAME\tPart Number for this Manufacturer already exists...."
+"\tPart Number for this Manufacturer already exists.\n"
"\n"
"Do you want to update it?"
msgstr ""
-"MSG_CARPART_DUPNAME\tMae Rhan Rhan ar gyfer y Gwneuthurwr hwn eisoes yn bodoli ....\tMae Rhan Rhan ar gyfer y Gwneuthurwr hwn eisoes yn bodoli.\n"
+"MSG_CARPART_DUPNAME\tMae Rhan Rhan ar gyfer y Gwneuthurwr hwn eisoes yn "
+"bodoli ....\tMae Rhan Rhan ar gyfer y Gwneuthurwr hwn eisoes yn bodoli.\n"
"Ydych chi am ei ddiweddaru?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:82
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:83
#, c-format
msgid ""
"MSG_PLAYBACK_LISTENTRY\tPlayback: Cannot find list entry: NAME\tPlayback: "
"Cannot find list entry: %s"
msgstr ""
-"MSG_PLAYBACK_LISTENTRY\tChwarae: Methu dod o hyd i gofnod "
-"rhestr:NAME\tChwarae: Methu dod o hyd i gofnod rhestr: %s"
+"MSG_PLAYBACK_LISTENTRY\tChwarae: Methu dod o hyd i gofnod rhestr:"
+"NAME\tChwarae: Methu dod o hyd i gofnod rhestr: %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:83
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:84
#, c-format
msgid ""
-"MSG_PLAYBACK_VERSION_UPGRADE\tPlayback file version %ld is...\tPlayback file version %ld is\n"
+"MSG_PLAYBACK_VERSION_UPGRADE\tPlayback file version %ld is...\tPlayback file "
+"version %ld is\n"
"greater than supported version %d\n"
"You need to upgrade your version of %s"
msgstr ""
-"MSG_PLAYBACK_VERSION_UPGRADE\tFersiwn ffeil chwarae %ld yw ...\tFersiwn ffeil chwarae %ld yw\n"
+"MSG_PLAYBACK_VERSION_UPGRADE\tFersiwn ffeil chwarae %ld yw ...\tFersiwn "
+"ffeil chwarae %ld yw\n"
"yn fwy na'r fersiwn a gefnogir %d\n"
"Mae angen i chi uwchraddio'ch fersiwn o %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:84
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:85
#, c-format
msgid ""
-"MSG_DOMOUSE_BAD_OP\tPlayback: unknown action NNN\tPlayback: unknown action "
-"%d"
+"MSG_DOMOUSE_BAD_OP\tPlayback: unknown action NNN\tPlayback: unknown action %d"
msgstr ""
"MSG_DOMOUSE_BAD_OP\tChwarae: gweithredu anhysbys NNN\tChwarae: gweithredu "
"anhysbys %d"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:85
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:86
msgid "MSG_MOVE_POINTS_AWAY_CLOSE\tPoints are to close to frog; move away."
msgstr ""
"MSG_MOVE_POINTS_AWAY_CLOSE\tMae'r pwyntiau i gau at y broga; symud i ffwrdd."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:86
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:87
msgid "MSG_POLY_SHAPES_3_SIDES\tPolygons must have at least 3 nodes."
msgstr "MSG_POLY_SHAPES_3_SIDES\tRhaid i bolygonau fod ag o leiaf 3 nod."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:87
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:88
msgid "MSG_POLY_MULTIPLE_SELECTED\tCan't delete multiple points at once"
msgstr "MSG_POLY_MULTIPLE_SELECTED\tMethu dileu pwyntiau lluosog ar unwaith"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:88
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:89
msgid "MSG_POLY_NOTHING_SELECTED\tNo Point on a Poly shape selected."
msgstr "MSG_POLY_NOTHING_SELECTED\tDim Pwynt ar siâp Poly wedi'i ddewis."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:89
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:90
msgid ""
-"MSG_CARPROTO_DUPNAME\tPrototype name already exists....\tPrototype name already exists.\n"
+"MSG_CARPROTO_DUPNAME\tPrototype name already exists....\tPrototype name "
+"already exists.\n"
"\n"
"Do you want to update it?"
msgstr ""
-"MSG_CARPROTO_DUPNAME\tMae enw prototeip yn bodoli eisoes ....\tMae enw prototeip yn bodoli eisoes.\n"
+"MSG_CARPROTO_DUPNAME\tMae enw prototeip yn bodoli eisoes ....\tMae enw "
+"prototeip yn bodoli eisoes.\n"
"\n"
"Ydych chi am ei ddiweddaru?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:90
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:91
msgid "MSG_RADIUS_GTR_0\tRadius must be greater than 0."
msgstr "MSG_RADIUS_GTR_0\tRhaid i radiws fod yn fwy na 0."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:91
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:92
msgid "MSG_RADIUS_GTR_10000\tRadius must be less than 10000."
msgstr "MSG_RADIUS_GTR_10000\tRhaid i radiws fod yn llai na 10000."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:92
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:93
msgid ""
-"MSG_RADIUS_TOO_BIG\tThe Circle or Helix will not fit within the layouts room"
-" parameters (Height and Width)."
+"MSG_RADIUS_TOO_BIG\tThe Circle or Helix will not fit within the layouts room "
+"parameters (Height and Width)."
msgstr ""
"MSG_RADIUS_TOO_BIG\tNi fydd y Cylch neu'r Helix yn ffitio o fewn "
"paramedrau'r ystafell gynlluniau (Uchder a Lled)."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:93
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:94
#, c-format
msgid ""
-"MSG_RESCALE_TOO_BIG\tRescaled tracks do not fit within layouts room parameters...\tRescaled tracks do not fit within layouts room parameters\n"
+"MSG_RESCALE_TOO_BIG\tRescaled tracks do not fit within layouts room "
+"parameters...\tRescaled tracks do not fit within layouts room parameters\n"
"(Height and width). The layouts room parameters should be\n"
"set to at least %s by %s."
msgstr ""
-"MSG_RESCALE_TOO_BIG\tNid yw traciau wedi'u hail-lunio yn ffitio o fewn paramedrau ystafelloedd cynllun ...\tNid yw traciau wedi'u hail-lunio yn ffitio o fewn paramedrau ystafelloedd cynllun\n"
+"MSG_RESCALE_TOO_BIG\tNid yw traciau wedi'u hail-lunio yn ffitio o fewn "
+"paramedrau ystafelloedd cynllun ...\tNid yw traciau wedi'u hail-lunio yn "
+"ffitio o fewn paramedrau ystafelloedd cynllun\n"
"(Uchder a lled). Dylai paramedrau'r ystafell osod fod\n"
"gosod i o leiaf %s gan %s."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:94
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:95
msgid ""
"MSG_CARIMP_MISSING_COLUMNS\tRequired column headers missing from Car Import "
"file."
@@ -7550,7 +7592,7 @@ msgstr ""
"MSG_CARIMP_MISSING_COLUMNS\tPenawdau colofn gofynnol ar goll o'r ffeil "
"Mewnforio Car."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:95
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:96
#, c-format
msgid ""
"MSG_2ND_TRK_NOT_SEL_UNSEL\tSecond track must be selected|unselected\tSecond "
@@ -7559,86 +7601,102 @@ msgstr ""
"MSG_2ND_TRK_NOT_SEL_UNSEL\tRhaid dewis ail drac | heb ei ddewis\t Rhaid i "
"drac arbennig fod %s."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:96
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:97
msgid "MSG_OUT_OF_BOUNDS\tSelected page is out of bounds."
msgstr "MSG_OUT_OF_BOUNDS\tMae'r dudalen a ddewiswyd allan o ffiniau."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:97
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:98
msgid "MSG_SEL_POS_FIRST\tSelect position prior to entering Text."
msgstr "MSG_SEL_POS_FIRST\tDewiswch y safle cyn nodi'r Testun."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:98
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:99
msgid ""
-"MSG_CARPROTO_BADSEGS\tSelected shapes must define a rectangular area ...\tSelected shapes must define a rectangular\n"
+"MSG_CARPROTO_BADSEGS\tSelected shapes must define a rectangular area ..."
+"\tSelected shapes must define a rectangular\n"
"area with length greater than height."
msgstr ""
-"MSG_CARPROTO_BADSEGS\tRhaid i siapiau dethol ddiffinio ardal hirsgwar ... must Rhaid i siapiau dethol ddewis petryal\n"
+"MSG_CARPROTO_BADSEGS\tRhaid i siapiau dethol ddiffinio ardal hirsgwar ... "
+"must Rhaid i siapiau dethol ddewis petryal\n"
"arwynebedd â hyd yn fwy na'r uchder."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:99
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:100
msgid ""
"MSG_TOO_FAR_APART_DIVERGE\tSelected tracks deviate too much or are too far "
"apart from each other."
msgstr ""
-"MSG_TOO_FAR_APART_DIVERGE\tMae traciau dethol yn gwyro gormod neu'n rhy bell"
-" oddi wrth ei gilydd."
+"MSG_TOO_FAR_APART_DIVERGE\tMae traciau dethol yn gwyro gormod neu'n rhy bell "
+"oddi wrth ei gilydd."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:100
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:101
msgid "MSG_COMMAND_DISABLED\tSpecified command disabled."
msgstr "MSG_COMMAND_DISABLED\tGorchymyn penodedig yn anabl."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:101
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:102
+#, c-format
+msgid ""
+"MSG_SEGMENT_NOT_ON_PATH\tTrack segment N not on Path for Turnout\tTrack "
+"segment %d not on any Path for %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:103
msgid "MSG_SPLIT_POS_BTW_MERGEPTS\tSplit position between Turnout Points"
msgstr "MSG_SPLIT_POS_BTW_MERGEPTS\tSafle wedi'i rannu rhwng Pwyntiau Pwynt"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:102
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:104
msgid "MSG_SPLIT_PATH_NOT_UNIQUE\tSplit position not on unique path"
msgstr "MSG_SPLIT_PATH_NOT_UNIQUE\tSafle hollt ddim ar lwybr unigryw"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:103
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:105
#, c-format
msgid ""
-"MSG_CARIMP_MISSING_DIMS\tThe following car has no dimensions and a...\tThe following car has no dimensions and a\n"
+"MSG_CARIMP_MISSING_DIMS\tThe following car has no dimensions and a...\tThe "
+"following car has no dimensions and a\n"
"Car Part description can not be found.\n"
"\n"
"%s\n"
"\n"
"Do you wish to continue importing other Cars?"
msgstr ""
-"MSG_CARIMP_MISSING_DIMS\tNid oes gan y car canlynol unrhyw ddimensiynau ac ... \t Nid oes gan y car canlynol ddim dimensiynau ac a\n"
+"MSG_CARIMP_MISSING_DIMS\tNid oes gan y car canlynol unrhyw ddimensiynau "
+"ac ... \t Nid oes gan y car canlynol ddim dimensiynau ac a\n"
"Ni ellir dod o hyd i ddisgrifiad Rhan Car.\n"
"\n"
"%s\n"
"\n"
"Ydych chi am barhau i fewnforio Ceir eraill?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:104
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:106
#, c-format
msgid ""
-"MSG_CARIMP_MISSING_PARTNO\tThe following car has no Part Number...\tThe following car has no Part Number\n"
+"MSG_CARIMP_MISSING_PARTNO\tThe following car has no Part Number...\tThe "
+"following car has no Part Number\n"
"\n"
"%s\n"
"\n"
"Do you wish to continue importing other Cars?"
msgstr ""
-"MSG_CARIMP_MISSING_PARTNO\tNid oes Rhif Rhan ar y car canlynol ...\tNid oes Rhif Rhan ar y car canlynol\n"
+"MSG_CARIMP_MISSING_PARTNO\tNid oes Rhif Rhan ar y car canlynol ...\tNid oes "
+"Rhif Rhan ar y car canlynol\n"
"\n"
"%s\n"
"\n"
"Ydych chi am barhau i fewnforio Ceir eraill?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:105
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:107
#, c-format
msgid ""
-"MSG_CARIMP_IGNORED_COLUMN\tThe following column in the Car Import file will be ignored:...\tThe following column in the Car Import file will be ignored:\n"
+"MSG_CARIMP_IGNORED_COLUMN\tThe following column in the Car Import file will "
+"be ignored:...\tThe following column in the Car Import file will be "
+"ignored:\n"
"\n"
"%s"
msgstr ""
-"MSG_CARIMP_IGNORED_COLUMN\tAnwybyddir y golofn ganlynol yn y ffeil Mewnforio Car: ...\tAnwybyddir y golofn ganlynol yn y ffeil Mewnforio Car:\n"
+"MSG_CARIMP_IGNORED_COLUMN\tAnwybyddir y golofn ganlynol yn y ffeil Mewnforio "
+"Car: ...\tAnwybyddir y golofn ganlynol yn y ffeil Mewnforio Car:\n"
"\n"
"%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:106
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:108
msgid ""
"MSG_CANT_MOVE_UNDER_TRAIN\tThe position of a turnout or turntable cannot be "
"changed while occupied by a train."
@@ -7646,64 +7704,84 @@ msgstr ""
"MSG_CANT_MOVE_UNDER_TRAIN\tNi ellir newid lleoliad y nifer sy'n pleidleisio "
"na throfwrdd wrth i drên feddiannu."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:107
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:109
msgid ""
-"MSG_STRUCT_NO_STRUCTS\tThere are no structures to choose from in the structure...\tThere are no structures to choose from in the structure\n"
+"MSG_STRUCT_NO_STRUCTS\tThere are no structures to choose from in the "
+"structure...\tThere are no structures to choose from in the structure\n"
"selection list. Please check your SCALE, select the\n"
"<File|Parameter Files> menu to load a Parameter File or\n"
"create a new Structure with the Group command."
msgstr ""
-"MSG_STRUCT_NO_STRUCTS\tNid oes unrhyw strwythurau i ddewis ohonynt yn y strwythur ... \t Nid oes unrhyw strwythurau i ddewis ohonynt yn y strwythur\n"
+"MSG_STRUCT_NO_STRUCTS\tNid oes unrhyw strwythurau i ddewis ohonynt yn y "
+"strwythur ... \t Nid oes unrhyw strwythurau i ddewis ohonynt yn y strwythur\n"
"rhestr ddethol. Gwiriwch eich SCALE, dewiswch y\n"
"Dewislen <File | Ffeiliau Paramedr> i lwytho Ffeil Paramedr neu\n"
"creu Strwythur newydd gyda'r gorchymyn Grŵp."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:108
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:110
msgid ""
-"MSG_TURNOUT_NO_TURNOUT\tThere are no turnouts to choose from in the turnout...\tThere are no turnouts to choose from in the turnout\n"
+"MSG_TURNOUT_NO_TURNOUT\tThere are no turnouts to choose from in the "
+"turnout...\tThere are no turnouts to choose from in the turnout\n"
"selection list. Please check your SCALE, select the\n"
"<Manage|Turnout Designer> menu to enter a new turnout\n"
"or select the <File|Parameter Files> menu to load a\n"
"Parameter File"
msgstr ""
-"MSG_TURNOUT_NO_TURNOUT\tNid oes unrhyw bwyntiau i ddewis ohonynt yn y pwynt ... \t Nid oes unrhyw bwyntiau i ddewis ohonynt yn y pwynt\n"
+"MSG_TURNOUT_NO_TURNOUT\tNid oes unrhyw bwyntiau i ddewis ohonynt yn y "
+"pwynt ... \t Nid oes unrhyw bwyntiau i ddewis ohonynt yn y pwynt\n"
"rhestr ddethol. Gwiriwch eich Graddfa, dewiswch y\n"
-"Dewislen < Rheoli | Dylunydd Pwynt > i fynd i mewn i'r nifer sy'n pleidleisio\n"
+"Dewislen < Rheoli | Dylunydd Pwynt > i fynd i mewn i'r nifer sy'n "
+"pleidleisio\n"
"neu dewiswch y ddewislen < Ffile | Paramedr Ffiles > i lwytho a\n"
"Ffeil Paramedr"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:109
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:111
msgid "MSG_NO_UNCONN_EP\tThere are no unconnected end points for this track"
msgstr ""
"MSG_NO_UNCONN_EP\tNid oes unrhyw bwyntiau gorffen digyswllt ar gyfer y trac "
"hwn"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:110
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:112
+#, c-format
+msgid ""
+"MSG_SPLITTED_OBJECT_TOO_SHORT\tThe resulting length of one track piece is "
+"shorter than the minimum length of %d."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:113
msgid "MSG_PULL_FEW_SECTIONS\tThere are too few sections in this loop."
msgstr "MSG_PULL_FEW_SECTIONS\tMae rhy ychydig o adrannau yn y ddolen hon."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:111
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:114
msgid "MSG_NO_REDO\tThere is nothing to redo!"
msgstr "MSG_NO_REDO\tNid oes unrhyw beth i'w ail-wneud!"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:112
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:115
msgid "MSG_NO_UNDO\tThere is nothing to undo!"
msgstr "MSG_NO_UNDO\tNid oes unrhyw beth i'w ddadwneud!"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:113
-msgid "MSG_TOOMANYSEGSINGROUP\tToo many segments in Group."
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:116
+#, fuzzy
+msgid "MSG_TOOMANYSEGSINGROUP\tToo many track segments in Group."
msgstr "MSG_TOOMANYSEGSINGROUP\tGormod o segmentau yn y Grŵp."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:114
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:117
+#, fuzzy
+msgid ""
+"MSG_TOOMANYSEGSINGROUP2\tTrack segments appear too late in Group segment "
+"list."
+msgstr "MSG_TOOMANYSEGSINGROUP\tGormod o segmentau yn y Grŵp."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:118
msgid "MSG_CANNOT_CHANGE\tTrack cannot be changed."
msgstr "MSG_CANNOT_CHANGE\tNi ellir newid trac .."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:115
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:119
msgid "MSG_POINT_INSIDE_TURNTABLE\tTrack endpoint is within turntable radius."
msgstr ""
"MSG_POINT_INSIDE_TURNTABLE\tMae pwynt terfyn y trac o fewn radiws trofwrdd."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:116
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:120
msgid ""
"MSG_MOVE_POINTS_AWAY_NO_INTERSECTION\tTrack intersection not possible; move "
"points away from frog."
@@ -7711,62 +7789,66 @@ msgstr ""
"MSG_MOVE_POINTS_AWAY_NO_INTERSECTION\tNid yw croestoriad trac yn bosibl; "
"symud pwyntiau i ffwrdd o'r broga."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:117
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:121
#, c-format
msgid ""
-"MSG_TRK_TOO_SHORT\tTrack is too short by N.NNN\t%strack is too short by "
-"%0.3f"
+"MSG_TRK_TOO_SHORT\tTrack is too short by N.NNN\t%strack is too short by %0.3f"
msgstr ""
"MSG_TRK_TOO_SHORT\tMae'r trac yn rhy fyr erbyn N.NNN\t%sMae'r trac yn rhy "
"fyr erbyn %0.3f"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:118
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:122
#, c-format
msgid ""
"MSG_RADIUS_LSS_EASE_MIN\tTrack radius (N.NNN) is smaller than easement "
"minimum (N.NNN).\tTrack radius (%s) is smaller than easement minimum (%s)."
msgstr ""
"MSG_RADIUS_LSS_EASE_MIN\tRadiws trac (N.NNN) yn llai na'r isafswm "
-"hawddfraint(N.NNN).\tRadiws trac (%s) yn llai na'r isafswm hawddfraint "
-"(%s)."
+"hawddfraint(N.NNN).\tRadiws trac (%s) yn llai na'r isafswm hawddfraint (%s)."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:119
-msgid "MSG_CANT_MODIFY_FROZEN_TRK\tTracks in a frozen layer cannot be modified."
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:123
+msgid ""
+"MSG_CANT_MODIFY_FROZEN_TRK\tTracks in a frozen layer cannot be modified."
msgstr ""
"MSG_CANT_MODIFY_FROZEN_TRK\tNi ellir addasu traciau mewn haen wedi'i rewi."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:120
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:124
msgid "MSG_CANT_MODIFY_MODULE_TRK\tTracks in a module cannot be modified."
msgstr "MSG_CANT_MODIFY_MODULE_TRK\tNi ellir addasu traciau mewn modiwl."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:121
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:125
msgid ""
-"MSG_SEGMENTS_DIFFER\tTurnout definition contains non-track segments....\tTurnout definition contains non-track segments.\n"
+"MSG_SEGMENTS_DIFFER\tTurnout definition contains non-track segments...."
+"\tTurnout definition contains non-track segments.\n"
"\n"
"Do you want to include them in this update?"
msgstr ""
-"MSG_SEGMENTS_DIFFER\tMae diffiniad pwynt yn cynnwys segmentau heblaw trac ....\tMae diffiniad pwynt yn cynnwys segmentau heblaw trac.\n"
+"MSG_SEGMENTS_DIFFER\tMae diffiniad pwynt yn cynnwys segmentau heblaw "
+"trac ....\tMae diffiniad pwynt yn cynnwys segmentau heblaw trac.\n"
"\n"
"Ydych chi am eu cynnwys yn y diweddariad hwn?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:122
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:126
msgid "MSG_TURNTABLE_DIAM_GTR_0\tTurntable diameter must greater than 0."
msgstr "MSG_TURNTABLE_DIAM_GTR_0\tRhaid i ddiamedr trofwrdd fod yn fwy na 0."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:123
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:127
#, c-format
msgid ""
-"MSG_UNDO_ASSERT\tUndo assertion failure %s:%d...\tUndo assertion failure %s:%d\n"
+"MSG_UNDO_ASSERT\tUndo assertion failure %s:%d...\tUndo assertion failure %s:"
+"%d\n"
"Val = %ld(%lx)\n"
"%s\n"
-"Please report this error to the XTrackCAD project development team at SourceForge."
+"Please report this error to the XTrackCAD project development team at "
+"SourceForge."
msgstr ""
-"MSG_UNDO_ASSERT\tDadwneud methiant haeriad %s:%d...\tDadwneud methiant haeriad %s:%d\n"
+"MSG_UNDO_ASSERT\tDadwneud methiant haeriad %s:%d...\tDadwneud methiant "
+"haeriad %s:%d\n"
"Val = %ld(%lx)\n"
"%s\n"
"Rhowch wybod i'r tîm datblygu prosiect XTrackCAD yn SourceForge."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:124
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:128
#, c-format
msgid ""
"MSG_PROG_CORRUPTED\tCritical file damaged!...\tCritical file damaged!\n"
@@ -7775,12 +7857,13 @@ msgid ""
"\n"
"Please reinstall software."
msgstr ""
-"MSG_PROG_CORRUPTED\tFfeil feirniadol wedi'i difrodi! ...\tFfeil feirniadol wedi'i difrodi! ...\n"
+"MSG_PROG_CORRUPTED\tFfeil feirniadol wedi'i difrodi! ...\tFfeil feirniadol "
+"wedi'i difrodi! ...\n"
"%s yn llygredig.\n"
"\n"
"Ailosod meddalwedd os gwelwch yn dda."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:125
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:129
#, c-format
msgid ""
"MSG_ENTERED_STRING_TRUNCATED\tThe entered text is too long. Maximum length "
@@ -7789,31 +7872,33 @@ msgstr ""
"MSG_ENTERED_STRING_TRUNCATED\tMae'r testun a gofnodwyd yn rhy hir. Uchafswm "
"hyd%d."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:126
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:130
#, c-format
msgid "MSG_PT_IS_NOT_TRK\t[X Y] is not a track\t[%s %s] is not a track."
msgstr "MSG_PT_IS_NOT_TRK\t[X Y] ddim yn drac\t[%s %s] ddim yn drac."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:127
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:131
msgid ""
-"MSG_BITMAP_SIZE_WARNING\tYou have specified a large bitmap....\tYou have specified a large bitmap.\n"
+"MSG_BITMAP_SIZE_WARNING\tYou have specified a large bitmap....\tYou have "
+"specified a large bitmap.\n"
"\n"
"Are you sure you want to continue?"
msgstr ""
-"MSG_BITMAP_SIZE_WARNING\tRydych chi wedi nodi Bitmap mawr ....\tRydych chi wedi nodi Bitmap mawr.\n"
+"MSG_BITMAP_SIZE_WARNING\tRydych chi wedi nodi Bitmap mawr ....\tRydych chi "
+"wedi nodi Bitmap mawr.\n"
"\n"
"Ydych chi'n siŵr eich bod chi eisiau parhau?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:128
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:132
msgid "Icon Size change will take effect on next program start."
msgstr "Bydd newid Maint Eicon yn dod i rym ar ddechrau'r rhaglen nesaf."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:129
-#, c-format
-msgid "Are you sure you want to delete these %d car(s)?"
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:133
+#, fuzzy, c-format
+msgid "Are you sure you want to delete these %d car(s) from your inventory?"
msgstr "Ydych chi'n siŵr eich bod chi am ddileu'r rhain %d car(iau)?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:130
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:134
#, c-format
msgid ""
"Cannot open %s file:\n"
@@ -7822,117 +7907,117 @@ msgstr ""
"Ni all agor %s ffile:\n"
"%s:%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:131
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:135
#, c-format
msgid "Cannot create directory: %s - %s"
msgstr "Methu creu cyfeiriadur: %s - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:132
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:136
#, c-format
msgid "Cannot open directory: %s"
msgstr "Methu agor cyfeiriadur:%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:133
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:137
#, c-format
msgid "Path for deletion is not a directory: %s"
msgstr "Nid yw'r llwybr ar gyfer dileu yn gyfeiriadur:%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:134
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:138
#, c-format
msgid "Open failed for directory: %s"
msgstr "Methwyd agored ar gyfer cyfeiriadur: %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:135
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:139
#, c-format
msgid "Can't add directory record %s to zip - %s"
msgstr "Methu ychwanegu cofnod cyfeiriadur%s a zip - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:136
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:140
#, c-format
msgid "Can't add file record %s to zip at %s - %s"
msgstr "Methu ychwanegu cofnod ffeil%s i zip yn %s - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:137
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:141
#, c-format
msgid "Can't create zip %s - %s"
msgstr "Methu creu zip%s - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:138
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:142
#, c-format
msgid "Close failure for zip %s - %s"
msgstr "Methiant agos am zip %s - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:139
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:143
#, c-format
msgid "Rename failure for zip from %s to %s - %s"
msgstr "Ail-enwi methiant am zip o %s i %s - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:140
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:144
#, c-format
msgid "Open failure for zip %s - %s"
msgstr "Methiant agored am zip %s - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:141
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:145
#, c-format
msgid "Index failure for zip %s - %s"
msgstr "Methiant mynegai ar gyferzip %s - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:142
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:146
#, c-format
msgid "Open read file failure %s %s"
msgstr "Methiant ffeil darllen agored %s %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:143
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:147
#, c-format
msgid "Open file in zip failure %s %s"
msgstr "Agor ffeil mewn methiant zip%s %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:144
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:148
#, c-format
msgid "Unlink failed for: %s"
msgstr "Methodd Unlink am: %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:145
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:149
#, c-format
msgid "Remove Directory failed for: %s"
msgstr "Methodd Dileu Cyfeiriadur ar gyfer:%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:146
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:150
#, c-format
msgid "Cannot save archive to %s from directory: %s"
msgstr "Methu arbed archif i %s o'r cyfeiriadur: %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:147
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:151
#, c-format
msgid "Cannot save manifest file to %s"
msgstr "Methu cadw ffeil amlwg i %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:148
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:152
#, c-format
msgid "Cannot open manifest file %s"
msgstr "Methu agor ffeil amlwg%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:149
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:153
#, c-format
msgid "Cannot unpack file: %s for file: %s in directory: %s"
msgstr "Methu dadbacio ffeil: %s ar gyfer ffeil: %s yn y cyfeiriadur:%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:150
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:154
#, c-format
msgid "Cannot open file %s"
msgstr "Methu agor ffeil %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:151
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:155
#, c-format
msgid "Cannot copy file %s into directory %s"
msgstr "Methu copïo ffeil %s i mewn i gyfeiriadur%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:152
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:156
#, c-format
msgid "Unrecognized Option: %s"
msgstr "Opsiwn heb ei gydnabod:%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:153
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:157
#, c-format
msgid ""
"End-Of-Line is unexpected in a quoted field.\n"
@@ -7945,7 +8030,7 @@ msgstr ""
"\n"
"Ydych chi am barhau i ddarllen y ffeil?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:154
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:158
#, c-format
msgid ""
"A comma was expected after this quoted field.\n"
@@ -7958,7 +8043,7 @@ msgstr ""
"\n"
"Ydych chi am barhau i ddarllen y ffeil?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:155
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:159
#, c-format
msgid ""
"Error \\\\\"%s\\\\\" occurred while writing %s.\n"
@@ -7967,7 +8052,7 @@ msgstr ""
"Gwall \\\\\"%s\\\\\" digwydd wrth ysgrifennu %s.\n"
"Gwiriwch ofod disg a statws system."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:156
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:160
#, c-format
msgid ""
"At least one path for the Turnout T%d does not\n"
@@ -7978,28 +8063,28 @@ msgstr ""
"terfynu ar ddiweddbwynt. Ni ellir grwpio trac o'r fath.\n"
"Mae'r trac wedi'i ddewis."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:157
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:161
msgid "inv-pathEndTrk on Path."
msgstr "inv-pathEndTrk ar Lwybr."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:158
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:162
msgid "inv-pathStartTrk on Path"
msgstr "inv-pathStartTrk ar Lwybr"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:159
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:163
#, c-format
msgid "%s:%d- %s"
msgstr "%s:%d- %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:160
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:164
msgid "pathEndTrk not on Path."
msgstr "pathEndTrk nid ar y Llwybr."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:161
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:165
msgid "pathStartTrk not on Path."
msgstr "pathStartTrk nid ar y Llwybr."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:162
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:166
msgid ""
"The tracks cannot be connected together.\n"
"\n"
@@ -8013,7 +8098,7 @@ msgstr ""
"neu gynyddu gwerth Angle Cysylltiad ar\n"
"y dialog Dewisiadau."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:163
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:167
msgid ""
"The tracks cannot be connected together.\n"
"\n"
@@ -8027,7 +8112,7 @@ msgstr ""
"neu gynyddu'r Pellter Cysylltiad a\n"
"Gwerthoedd ongl ar y dialog Dewisiadau"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:164
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:168
msgid ""
"The tracks cannot be connected together.\n"
"\n"
@@ -8039,7 +8124,7 @@ msgstr ""
"Ceisiwch newid rhai traciau i gael ffit agosach\n"
"neu gynyddu'r Pellter Cysylltiad"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:165
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:169
msgid ""
"The first track for the Align\n"
"Rotate command must be Selected."
@@ -8047,7 +8132,7 @@ msgstr ""
"Y trac cyntaf ar gyfer yr Alin\n"
"Rhaid Dewis gorchymyn cylchdroi."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:166
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:170
msgid ""
"The second track for the Align\n"
"Rotate command must be Unselected."
@@ -8055,15 +8140,15 @@ msgstr ""
"Yr ail drac ar gyfer yr Align\n"
"Rhaid i orchymyn cylchdroi fod heb ei ddewis."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:167
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:171
msgid "Too many selected tracks, drawing tracks as End Point."
msgstr "Gormod o draciau dethol, gan dynnu traciau fel diweddbwynt."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:168
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:172
msgid "Select an endpoint between two tracks."
msgstr "Dewiswch ddiweddbwynt rhwng dau drac."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:169
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:173
msgid ""
"According to values that have been entered the diverging\n"
"track does not connect with the tangent track. Please\n"
@@ -8077,11 +8162,11 @@ msgstr ""
"yn cael ei nodi fel rhif broga neu mewn graddau fel y nodir\n"
"gan fotymau radio Ongle Mode."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:170
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:174
msgid "Moved before the end of the turnout"
msgstr "Wedi'i symud cyn diwedd y nifer a bleidleisiodd"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:171
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:175
msgid ""
"The Coupled Length must be greater than the Car Length,\n"
"and the Coupler Length must be greater than 0."
@@ -8089,7 +8174,7 @@ msgstr ""
"Rhaid i'r Hyd Cypledig fod yn fwy na Hyd y Car,\n"
"a rhaid i'r Hyd Coupler fod yn fwy na 0."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:172
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:176
msgid ""
"The Car Length value must be greater\n"
"than the Car Width value."
@@ -8097,7 +8182,7 @@ msgstr ""
"Rhaid i'r gwerth Hyd Car fod yn fwy\n"
"na gwerth Lled Car."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:173
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:177
msgid ""
"The specified Index is already in use.\n"
"The Index will be updated to the next available value."
@@ -8105,7 +8190,7 @@ msgstr ""
"Mae'r Mynegai penodedig eisoes yn cael ei ddefnyddio.\n"
"Bydd y Mynegai yn cael ei ddiweddaru i'r gwerth nesaf sydd ar gael."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:174
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:178
msgid ""
"You have changed values for this object.\n"
"\n"
@@ -8115,7 +8200,7 @@ msgstr ""
"\n"
"Ydych chi'n siŵr eich bod chi am gau?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:175
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:179
#, c-format
msgid ""
"File version %ld is lower than the minimum\n"
@@ -8126,16 +8211,17 @@ msgstr ""
"fersiwn â chymorth %d. Mae angen i chi ddiweddaru eich\n"
"ffeil cynllun gan ddefnyddio fersiwn hÅ·n o %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:176
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:180
#, c-format
msgid ""
"File version %ld is lower than the minimum\n"
-"supported version %d.This parameter file will only work using an older version of %s"
+"supported version %d.This parameter file will only work using an older "
+"version of %s"
msgstr ""
"Fersiwn ffile %ld yn is na'r isafswm\n"
"fersiwn â chymorth %d. Dim ond gan ddefnyddio fersiwn hŷn o %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:177
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:181
#, c-format
msgid ""
"%s cannot read the demo file:\n"
@@ -8144,16 +8230,16 @@ msgstr ""
"%s methu darllen y ffeil demo:\n"
"%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:178
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:182
#, c-format
msgid "doDemo: bad number (%d)"
msgstr "doDemo: rhif drwg (%d)"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:179
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:183
msgid "Playback TIMEEND without TIMESTART"
msgstr "Chwarae TIMEEND heb TIMESTART"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:180
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:184
#, c-format
msgid ""
"Unknown playback command (%d)\n"
@@ -8162,7 +8248,7 @@ msgstr ""
"Gorchymyn chwarae anhysbys (%d)\n"
"%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:181
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:185
#, c-format
msgid ""
"Playback file version %ld is lower than the\n"
@@ -8175,2299 +8261,88 @@ msgstr ""
"Mae angen i chi ddiweddaru'ch ffeil cynllun gan ddefnyddio\n"
"fersiwn hÅ·n o %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:182
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:186
#, c-format
-msgid "Scale index (%d) is not valid"
-msgstr "Mynegai graddfa (%d) ddim yn ddilys"
+msgid ""
+"MSG_BAD_SCALE_INDEX\tScale index (NNN) is not valid. Do you want use the "
+"current layout scale (SCALE)? Or create an \"Unknown\" scale? See 'Help|"
+"Recent Messages' for details.\tScale index (%d) is not valid.\n"
+"Do you want use the current layout scale (%s)?\n"
+"Or create an \"Unknown\" scale?\n"
+"See 'Help|Recent Messages' for details."
+msgstr ""
-#: ../../../../build/xtrkcad-old/app/help/messages.h:183
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:187
#, c-format
msgid ""
-"Scale %s is not valid\n"
-"Please check your %s.xtq file"
+"MSG_BAD_SCALE_NAME\tScale \"SCALE1\" is not valid. We will substitute a "
+"dummy scale based on \"SCALE2\". See 'Help|Recent Messages' for details."
+"\tScale \"%s\" is not valid. We will substitute a dummy scale based on "
+"\"%s\".\n"
+"See 'Help|Recent Messages' for details."
msgstr ""
-"Graddfa %s ddim yn ddilys\n"
-"Gwiriwch eich %s.xtq ffile"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:184
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:188
msgid "Cannot extend a helix"
msgstr "Ni all estyn helics"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:185
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:189
msgid "Cannot trim a helix"
msgstr "Methu trimio helics"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:186
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:190
msgid "Ignore further audit notices?"
msgstr "Anwybyddu hysbysiadau archwilio pellach?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:187
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:191
#, c-format
msgid "%s"
msgstr "%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:188
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:192
msgid "Audit Abort?"
msgstr "Erthyliad Archwilio?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:189
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:193
msgid "Write Audit File?"
msgstr "Ysgrifennu Ffeil Archwilio?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:190
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:194
#, c-format
msgid "checkTrackLength: Short track length = %0.3f"
msgstr "checkTrackLength: Hyd trac byr = %0.3f"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:191
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:195
#, c-format
msgid "checkTrackLength: unknown type: %d"
msgstr "checkTrackLength: math anhysbys: %d"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:192
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:196
#, c-format
msgid "connectTracks: T%d[%d] T%d[%d] d=%0.3f a=%0.3f"
msgstr "connectTracks: T%d[%d] T%d[%d] d=%0.3f a=%0.3f"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:193
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:197
#, c-format
msgid "GetAngleAtPoint: bad type(%d) for T(%d)"
msgstr "GetAngleAtPoint: math drwg (%d) canys T(%d)"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:194
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:198
#, c-format
msgid "joinTracks: invalid track type=%d"
msgstr "joinTracks: math trac annilys=%d"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:195
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:199
#, c-format
msgid "resolveIndex: T%d[%d]: T%d doesn\\\\'t exist"
msgstr "resolveIndex: T%d[%d]: T%d ddim yn bodoli"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:196
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:200
msgid "Moved beyond the end of the track"
msgstr "Wedi symud y tu hwnt i ddiwedd y trac"
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:9
-msgid "Invokes online help for this dialog"
-msgstr "Yn gofyn am gymorth ar-lein ar gyfer y deialog hon"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:10
-msgid "Cancels this command"
-msgstr "Yn canslo'r gorchymyn hwn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:11
-msgid "Closes the dialog"
-msgstr "Yn cau'r ymgom"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:12
-msgid "About program dialog"
-msgstr "Ynglŷn â deialog y rhaglen "
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:13
-msgid "Move selected object to top"
-msgstr "Symudwch wrthrych a ddewiswyd i'r brig"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:14
-msgid "Raise or lower all selected tracks"
-msgstr "Codi neu ostwng yr holl draciau a ddewiswyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:15
-msgid "Show a protractor"
-msgstr "Dangos onglydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:16
-msgid "Turn magnetic snap on or off"
-msgstr "Trowch snap magnetig ymlaen neu i ffwrdd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:18
-msgid "Move selected object to bottom"
-msgstr "Symud gwrthrych a ddewiswyd i'r gwaelod"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:19
-msgid "Create a section of track for automation"
-msgstr "Creu darn o drac ar gyfer awtomeiddio"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:20
-msgid "Edit a block definition "
-msgstr "Golygu diffiniad bloc"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:21
-msgid "Create a new Car/Loco description"
-msgstr "Creu disgrifiad Car / Loco newydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:22
-msgid "Manage your Car and Loco Inventory"
-msgstr "Rheoli eich Rhestr Car a Loco"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:23
-msgid "Create track circle from center"
-msgstr "Creu cylch trac o'r canol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:24
-msgid "Create fixed radius track circle"
-msgstr "Creu cylch trac radiws sefydlog"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:25
-msgid "Set Circle Track creation mode"
-msgstr "Gosod modd creu Trac Cylch"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:26
-msgid "Create track circle from tangent"
-msgstr "Creu cylch trac o tangiad"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:27
-msgid "Removes elevation from Selected tracks"
-msgstr "Yn tynnu drychiad o draciau dethol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:28
-msgid "Copy objects to clipboard and duplicate them in exactly the same place"
-msgstr "Copïwch wrthrychau i'r clipfwrdd a'u dyblygu yn yr un lle yn union"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:29
-msgid "Command Options dialog"
-msgstr "Deialog Opsiynau Gorchymyn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:30
-msgid "Controls colors"
-msgstr "Yn rheoli lliwiau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:31
-msgid "Connect two tracks"
-msgstr "Cysylltu dau drac"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:32
-msgid "Create a control for layout automation"
-msgstr "Creu rheolydd ar gyfer awtomeiddio cynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:33
-msgid "Select control element to create"
-msgstr "Dewiswch elfen reoli i'w chreu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:34
-msgid "Manage control elements"
-msgstr "Rheoli elfennau rheoli"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:35
-msgid "Set Convert mode"
-msgstr "Gosod modd Trosi"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:36
-msgid "Convert from Fixed Track to Cornu"
-msgstr "Trosi o Drac Sefydlog i Cornu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:37
-msgid "Convert from Cornu and Bezier to Fixed Track"
-msgstr "Trosi o Cornu a Bezier i Drac Sefydlog"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:38
-msgid "Copy selected objects to clipboard"
-msgstr "Copïwch wrthrychau dethol i'r clipfwrdd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:39
-msgid "Create Cornu track"
-msgstr "Creu trac Cornu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:40
-msgid "Create curved track from center"
-msgstr "Creu trac crwm o'r canol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:41
-msgid "Create curved track from chord"
-msgstr "Creu trac crwm o'r cord"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:42
-msgid "Create curved track from end-point"
-msgstr "Creu trac crwm o'r pwynt olaf"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:43
-msgid "Create Bezier track"
-msgstr "Creu trac Bezier"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:44
-msgid "Set Curve Track creation mode"
-msgstr "Gosod modd creu Trac Crwm"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:45
-msgid "Create curved track from tangent"
-msgstr "Creu trac crwm o tangiad"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:46
-msgid "Manipulate Custom designer entries"
-msgstr "Trin cofnodion dylunwyr Custom"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:47
-msgid "Moves selected objects to clipboard"
-msgstr "Symud gwrthrychau dethol i glipfwrdd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:48
-msgid "Delete objects"
-msgstr "Dileu gwrthrychau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:49
-msgid "Playback demos"
-msgstr "Demos chwarae"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:50
-msgid "Change Object Properties"
-msgstr "Newid Priodweddau Gwrthrych"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:51
-msgid "Change to properties mode"
-msgstr "Newid i'r modd priodweddau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:52
-msgid "Deselect all selected objects"
-msgstr "Dad-ddewiswch yr holl wrthrychau a ddewiswyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:53
-msgid "Change Display parameters"
-msgstr "Newid paramedrau Arddangos"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:54
-msgid "Create benchwork"
-msgstr "Creu byrddau sylfaen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:55
-msgid "Create a box"
-msgstr "Creu blwch"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:56
-msgid "Set Circle drawing command"
-msgstr "Gosod gorchymyn lluniadu Cylch"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:57
-msgid "Create a circle"
-msgstr "Creu cylch"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:58
-msgid "Draw a circle line from center"
-msgstr "Tynnwch linell gylch o'r canol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:59
-msgid "Draw a fixed radius circle line"
-msgstr "Tynnwch linell gylch radiws sefydlog"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:60
-msgid "Draw a circle line from tangent"
-msgstr "Tynnwch linell gylch o tangiad"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:61
-msgid "Set Curve drawing command"
-msgstr "Gosod gorchymyn lluniadu Curve"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:62
-msgid "Create a curved line"
-msgstr "Creu llinell grom"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:63
-msgid "Create a curved line from End"
-msgstr "Creu llinell grom o End"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:64
-msgid "Create a curved line from center"
-msgstr "Creu llinell grom o'r canol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:65
-msgid "Create a curved line from chord"
-msgstr "Creu llinell grom o'r cord"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:66
-msgid "Create a curved line from tangent"
-msgstr "Creu llinell grom o tangiad"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:67
-msgid "Create a Bezier line"
-msgstr "Creu llinell Bezier"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:68
-msgid "Create a dimension line"
-msgstr "Creu llinell ddimensiwn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:69
-msgid "Create a filled box"
-msgstr "Creu blwch wedi'i lenwi"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:70
-msgid "Create a filled circle"
-msgstr "Creu cylch wedi'i lenwi"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:71
-msgid "Draw a filled circle from center"
-msgstr "Tynnwch gylch wedi'i lenwi o'r canol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:72
-msgid "Draw a fixed radius filled circle"
-msgstr "Lluniwch gylch sefydlog wedi'i lenwi â radiws"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:73
-msgid "Draw a filled circle from tangent"
-msgstr "Tynnwch gylch wedi'i lenwi o tangiad"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:74
-msgid "Create a polygon"
-msgstr "Creu polygon"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:75
-msgid "Create a filled polygon"
-msgstr "Creu polygon wedi'i lenwi"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:76
-msgid "Create a polyline"
-msgstr "Creu polyline"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:77
-msgid "Create a straight line"
-msgstr "Creu llinell syth"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:78
-msgid "Set Line drawing command"
-msgstr "Gosod gorchymyn lluniadu Llinell"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:79
-msgid "Set Shape drawing command"
-msgstr "Gosod gorchymyn lluniadu Siâp"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:80
-msgid "Draw table edge"
-msgstr "Tynnwch ymyl bwrdd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:81
-msgid "Easement menu"
-msgstr "Dewislen rhwyddineb"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:83
-msgid "Generate a Parts List of selected objects"
-msgstr "Cynhyrchu Rhestr Rhannau o wrthrychau dethol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:84
-msgid "Set Import/Export mode"
-msgstr "Gosod modd Mewnforio / Allforio"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:85
-msgid "Export a .xti file"
-msgstr "Allforio a .xti ffile"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:86
-msgid "Export a Bitmap image"
-msgstr "Allforio delwedd Bitmap"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:87
-msgid "Export a DXF file"
-msgstr "Allforio a DXF ffile"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:89
-msgid "Flip selected objects"
-msgstr "Fflipio gwrthrychau dethol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:90
-msgid "Adjust snap grid"
-msgstr "Addasu grid snap"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:91
-msgid "Enable snap grid"
-msgstr "Galluogi grid snap"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:92
-msgid "Show snap grid"
-msgstr "Dangos grid snap"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:93
-msgid "Create a structure from a Group of objects"
-msgstr "Creu strwythur o Grŵp o wrthrychau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:94
-msgid "Create a hand-laid turnout"
-msgstr "Creu pwynt wedi'i osod â llaw"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:95
-msgid "Create a track helix"
-msgstr "Creu helics trac"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:96
-msgid "Import a .xti file"
-msgstr "Mewnforio a .xti ffile"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:97
-msgid "Import an .xti file as a Module"
-msgstr "Mewnforio a .xti ffile fel Modiwl"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:98
-msgid "Join two tracks"
-msgstr "Ymunwch â dau drac"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:99
-msgid "Join two lines or polylines"
-msgstr "Ymunwch â dwy linell neu polylines"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:100
-msgid "Set Join mode"
-msgstr "Modd Ymunwch modd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:101
-msgid "Change Layers"
-msgstr "Newid Haenau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:102
-msgid "Selects the current drawing layer"
-msgstr "Yn dewis yr haen arlunio gyfredol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:103
-msgid "Layout parameters"
-msgstr "Paramedrau cynllun "
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:105
-msgid "Show/Hide Map Window"
-msgstr "Dangos / Cuddio Ffenestr Map"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:106
-msgid "Select Measurement Tool"
-msgstr "Dewiswch Offeryn Mesur"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:107
-msgid "Modify or extend a track"
-msgstr "Addasu neu ymestyn trac"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:108
-msgid "Change To modify mode"
-msgstr "Newid I addasu'r modd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:109
-msgid "Move selected objects"
-msgstr "Symud gwrthrychau dethol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:110
-msgid "Move a label"
-msgstr "Symud label"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:111
-msgid "Move selected objects to current layer"
-msgstr "Symud gwrthrychau dethol i'r haen gyfredol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:113
-msgid "Print a bitmap"
-msgstr "Argraffu Bitmap"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:114
-msgid "Pan or zoom the layout"
-msgstr "Pan neu chwyddo'r cynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:115
-msgid "Change to zoom/pan mode"
-msgstr "Newid i'r modd chwyddo / padell"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:116
-msgid "Create a parallel track"
-msgstr "Creu trac cyfochrog"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:117
-msgid "Create a parallel line"
-msgstr "Creu llinell gyfochrog"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:118
-msgid "Set Parallel mode"
-msgstr "Gosod modd Cyfochrog"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:119
-msgid "Register"
-msgstr "Cofrestrwch"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:120
-msgid "Copy objects from clipboard"
-msgstr "Copïwch wrthrychau o'r clipfwrdd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:121
-msgid "Perferences dialog"
-msgstr "Deialog dewisiadau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:122
-msgid "Display prices of turnouts, sectional tracks and structures"
-msgstr "Arddangos prisiau pwyntiau, traciau adrannol a strwythurau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:123
-msgid "Print the layout"
-msgstr "Argraffwch y cynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:124
-msgid "Loads and unloads parameter files into/from toolbar"
-msgstr "Llwythi a dadlwytho ffeiliau paramedr i mewn / allan o'r bar offer"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:125
-msgid "Elevation Profile Command"
-msgstr "Gorchymyn Proffil Drychiad"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:127
-msgid "Command recorder"
-msgstr "Recordydd gorchymyn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:129
-msgid "Update selected Turnout and Structure definitions"
-msgstr "Diweddarwch y diffiniadau a bleidleisiodd a Strwythur a ddewiswyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:130
-msgid "Rescale selected objects"
-msgstr "Ail-lunio gwrthrychau dethol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:131
-msgid "Rotate selected object(s)"
-msgstr "Cylchdroi gwrthrych(au) dethol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:132
-msgid "Show a ruler"
-msgstr "Dangos pren mesur"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:133
-msgid "Select objects"
-msgstr "Dewiswch wrthrychau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:134
-msgid "Change To Select Mode"
-msgstr "Newid I Ddethol Modd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:135
-msgid "Selects all objects on the layout"
-msgstr "Yn dewis yr holl wrthrychau ar y cynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:136
-msgid "Selects all objects in the current Layer"
-msgstr "Yn dewis yr holl wrthrychau yn yr Haen gyfredol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:137
-msgid "Choose objects by Index number"
-msgstr "Dewiswch wrthrychau yn ôl rhif Mynegai"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:138
-msgid "Invert current selection"
-msgstr "Gwrthdroi dewis cyfredol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:139
-msgid "Configure the Printer"
-msgstr "Ffurfweddwch yr Argraffydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:140
-msgid "Set Split mode"
-msgstr "Gosod modd Hollti"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:141
-msgid "Split a track"
-msgstr "Rhannwch drac"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:142
-msgid "Split a straight, curved, circle, polygon or polyline Draw Object "
-msgstr "Rhannwch Wrthrych Tynnu syth, crwm, cylch, polygon neu polyline"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:143
-msgid "Select stranded (unconnected) track pieces"
-msgstr "Dewiswch ddarnau trac sownd (digyswllt)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:144
-msgid "Create a sensor (ie. a occupancy detector or a toggle switch)"
-msgstr "Creu synhwyrydd (h.y. synhwyrydd deiliadaeth neu switsh togl)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:145
-msgid "Create a signal for train control"
-msgstr "Creu signal ar gyfer rheoli trên"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:146
-msgid "Choose which commands are sticky"
-msgstr "Dewiswch pa orchmynion sy'n ludiog"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:147
-msgid "Create straight track"
-msgstr "Creu trac syth"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:148
-msgid "Place a structure on the layout"
-msgstr "Rhowch strwythur ar y cynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:149
-msgid "Create a switchmotor for turnout control"
-msgstr "Creu pwyntmotor ar gyfer rheoli pwyntiau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:150
-msgid "Edit a switchmotor definition"
-msgstr "Golygu diffiniad pwynt-modur"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:151
-msgid "Enter text on the layout"
-msgstr "Rhowch destun ar y cynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:152
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:579
-msgid "Controls the size of the entered text"
-msgstr "Mae'n rheoli maint y testun a gofnodwyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:153
-msgid "Plain Text"
-msgstr "Testun plaen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:154
-msgid "Tip of the Day window"
-msgstr "ffenestr blaen y dydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:156
-msgid "Change To Run Trains Mode"
-msgstr "Newid I Rhedeg Modd Trenau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:157
-msgid "Pause/Resume Trains"
-msgstr "Trenau Saib / Ail-ddechrau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:158
-msgid "Place a car on the layout"
-msgstr "Rhowch gar ar y cynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:159
-msgid "Exit Trains"
-msgstr "Trenau Ymadael"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:160
-msgid "Trim a line, circle or polyline Draw Object using a second Object"
-msgstr ""
-"Trimiwch linell, cylch neu polyline Gwrthrych Tynnu gan ddefnyddio ail "
-"Wrthrych"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:161
-msgid "Hide/Unhide a track"
-msgstr "Cuddio / Dad-guddio trac"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:162
-msgid "Make/Unmake a track a bridge"
-msgstr "Gwneud / Dad-wneud trac yn bont"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:163
-msgid "Place a turnout or sectional track"
-msgstr "Rhowch bwynt neu drac adrannol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:164
-msgid "Create a new turnout definition"
-msgstr "Creu diffiniad pwynt newydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:165
-msgid "Place a turntable"
-msgstr "Rhowch drofwrdd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:166
-msgid "Updates old source files with 3 part titles"
-msgstr "Yn diweddaru hen ffeiliau ffynhonnell gyda theitlau 3 rhan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:168
-msgid "Ungroup objects"
-msgstr "Gwrthrychau heb grwp"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:169
-msgid "Draw tracks with thin lines"
-msgstr "Tynnwch draciau gyda llinellau tenau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:170
-msgid "Draw tracks with medium lines"
-msgstr "Tynnwch draciau gyda llinellau canolig"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:171
-msgid "Draw tracks with thick lines"
-msgstr "Tynnwch draciau gyda llinellau trwchus"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:172
-msgid "Change drawing scale"
-msgstr "Newid graddfa arlunio"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:173
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:204
-msgid "Zoom in"
-msgstr "Chwyddo i mewn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:174
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:205
-msgid "Zoom out"
-msgstr "Chwyddo allan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:178
-msgid "Curved Fixed"
-msgstr "Crwm Sefydlog"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:179
-msgid "Preferred Radius"
-msgstr "Radiws a Ffefrir"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:180
-msgid "Modify Draw"
-msgstr "Addasu Draw"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:187
-msgid "Rotation Angle"
-msgstr "Ongl Cylchdroi"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:188
-msgid "Rot Center X"
-msgstr "Canolfan cylchdroi X"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:189
-msgid "Rot Center Y"
-msgstr "Canolfan cylchdroi Y"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:191
-msgid "File Menu"
-msgstr "Dewislen Ffeil"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:192
-msgid "Save layout"
-msgstr "Cadw cynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:193
-msgid "Save layout under a new name "
-msgstr "Cadw cynllun o dan enw newydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:194
-msgid "New layout"
-msgstr "Cynllun newydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:195
-msgid "Generate parts list"
-msgstr "Cynhyrchu rhestr rhannau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:196
-msgid "Load a layout"
-msgstr "Llwythwch gynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:197
-msgid "Manage Parameter Files"
-msgstr "Rheoli Ffeiliau Paramedr"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:198
-msgid "Print layout"
-msgstr "Cynllun argraffu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:199
-msgid "Exit the program"
-msgstr "Ymadael â'r rhaglen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:200
-msgid "Revert to last saved state of layout plan"
-msgstr "Dychwelwch i'r cynllun cynllun cyflwr olaf a arbedwyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:201
-msgid "Printer Setup"
-msgstr "Gosod Argraffydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:202
-msgid "Edit menu"
-msgstr "Golygu dewislen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:203
-msgid "Redraw layout"
-msgstr "Cynllun ail-lunio"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:206
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:209
-msgid "Tools menu"
-msgstr "Dewislen offer"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:207
-msgid "View menu"
-msgstr "Gweld y ddewislen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:208
-msgid "Toolbar configuration"
-msgstr "Cyfluniad bar offer"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:210
-msgid "Options menu"
-msgstr "Dewislen opsiynau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:211
-msgid "Playback/Record commands"
-msgstr "Gorchmynion Chwarae / Cofnodi"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:212
-msgid "Window menu"
-msgstr "Dewislen ffenestr"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:213
-msgid "Help menu"
-msgstr "Dewislen help"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:214
-msgid "Recent error messages and explanations"
-msgstr "Negeseuon gwall ac esboniadau diweddar"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:215
-msgid "Move Hot Bar left"
-msgstr "Symudwch Bar Poeth i'r chwith"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:216
-msgid "Move Hot Bar right"
-msgstr "Symudwch Bar Poeth i'r dde"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:217
-msgid "Total track count"
-msgstr "Cyfanswm cyfrif y trac"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:218
-msgid "X Position of cursor"
-msgstr "X Safle cyrchwr"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:219
-msgid "Y Position of cursor"
-msgstr "Y Safle cyrchwr"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:220
-msgid "Drawing scale"
-msgstr "Graddfa arlunio"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:221
-msgid "Message and status line"
-msgstr "Llinell neges a statws"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:222
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:223
-msgid "Main layout canvas"
-msgstr "Cynfas y prif gynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:224
-msgid "Main drawing canvas"
-msgstr "Cynfas prif lun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:225
-msgid "Command buttons"
-msgstr "Botymau gorchymyn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:226
-msgid "Menus"
-msgstr "Bwydlenni"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:227
-msgid "Tile, Filename and Window Manager buttons"
-msgstr "Botymau Rheolwr Teils, Enw Ffeil a Ffenestr"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:228
-msgid "Turnout and Structure Hot Bar"
-msgstr "Bar Poeth Pwynt a Strwythur"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:229
-msgid "Active layer list and layer buttons"
-msgstr "Rhestr haenau gweithredol a botymau haen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:230
-msgid "Map window"
-msgstr "Ffenestr map"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:231
-msgid "This is the portion of the layout shown in the Main Window canvas"
-msgstr "Dyma'r gyfran o'r cynllun a ddangosir yn gynfas y Brif Ffenestr"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:232
-msgid "Raise or Lower all Selected Track"
-msgstr "Codi neu Gostwng yr holl Drac a Ddetholwyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:233
-msgid "Name of block"
-msgstr "Enw'r bloc"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:234
-msgid "Script that the block will run"
-msgstr "Sgript y bydd y bloc yn rhedeg"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:235
-msgid "List of tracks in the Block"
-msgstr "Rhestr o draciau yn y Bloc"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:236
-msgid "Add or Update car object"
-msgstr "Ychwanegu neu Ddiweddaru Gwrthrych Car"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:237
-msgid "Manufacturer name"
-msgstr "Enw'r gwneuthurwr"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:240
-msgid "Is the Car a Locomotive?"
-msgstr "A yw'r Car yn Locomotif?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:241
-msgid "Part Number and Description"
-msgstr "Rhif Rhan a Disgrifiad"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:242
-msgid "Manufacturer Part Number"
-msgstr "Gwneuthurwr Rhan Rhif"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:243
-msgid "Use the Selected figure as the car image"
-msgstr "Defnyddiwch y ffigur Dethol fel delwedd y car"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:244
-msgid "Use the default figure as the car image"
-msgstr "Defnyddiwch y ffigur diofyn fel delwedd y car"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:245
-msgid "Optional description of the Car Part"
-msgstr "Disgrifiad dewisol o'r Rhan Car"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:246
-msgid "Flip car image"
-msgstr "Delwedd car troi"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:247
-msgid "Display Car Item information or reporting marks and dimensions"
-msgstr "Arddangos gwybodaeth Eitem Car neu farciau a dimensiynau adrodd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:248
-msgid "Full Roadname"
-msgstr "Enw Ffordd Llawn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:249
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:250
-msgid "Car Type"
-msgstr "Math o Gar"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:251
-msgid "Reporting Marks (Roadname abbreviation)"
-msgstr "Marciau Adrodd (Talfyriad Enw Ffordd)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:252
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:457
-msgid "Car Number"
-msgstr "Rhif Car"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:253
-msgid "Car body Color"
-msgstr "Lliw corff car"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:254
-msgid "Length of car body"
-msgstr "Hyd corff y car"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:255
-msgid "Width of car body"
-msgstr "Lled corff y car"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:256
-msgid "Distance between Trucks "
-msgstr "Pellter rhwng Tryciau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:257
-msgid "Distance Trucks are displaced along Car"
-msgstr "Mae Tryciau Pellter yn cael eu dadleoli ar hyd Car"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:258
-msgid "Coupler are mounted on body or truck"
-msgstr "Mae cwpller wedi'u gosod ar gorff neu lori"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:259
-msgid "Overall Coupled Length"
-msgstr "Hyd Cypledig Cyffredinol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:260
-msgid "Coupler Length from end of car"
-msgstr "Hyd y cwplwr o ddiwedd y car"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:261
-msgid "Diagram of Car"
-msgstr "Diagram o Gar"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:262
-msgid "Item Index Number"
-msgstr "Rhif Mynegai Eitem"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:263
-msgid "Original Purchase Price"
-msgstr "Pris Prynu Gwreiddiol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:265
-msgid "Condition of car"
-msgstr "Cyflwr y car"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:266
-msgid "Original Purchase Date - yyyymmdd"
-msgstr "Dyddiad Prynu Gwreiddiol - yyyymmdd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:267
-msgid "Last Service Date - yyyymmdd"
-msgstr "Dyddiad Gwasanaeth Olaf - yyyymmdd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:268
-msgid "Number of identical cars to be entered"
-msgstr "Nifer y ceir union yr un fath i'w nodi"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:269
-msgid "Do all the cars have the same Number?"
-msgstr "Oes gan yr holl geir yr un Rhif?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:270
-msgid "Notes about the car"
-msgstr "Nodiadau am y car"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:271
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:272
-msgid "Create a new car Part or Prototype definitions"
-msgstr "Creu diffiniadau Rhan neu Brototeip car newydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:273
-msgid "Finds the selected Car Item on the layout"
-msgstr "Yn dod o hyd i'r Eitem Car a ddewiswyd ar y cynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:274
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:275
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:276
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:277
-msgid "Sort the Item list"
-msgstr "Trefnwch y rhestr Eitem"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:279
-msgid "Edit the selected Car Item"
-msgstr "Golygu'r Eitem Car a ddewiswyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:280
-msgid "Add a new Car Item"
-msgstr "Ychwanegwch Eitem Car newydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:281
-msgid "Delete the selected Car Items"
-msgstr "Dileu'r Eitemau Car a ddewiswyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:282
-msgid "Import a Car Item .csv file"
-msgstr "Mewnforio Eitem Car .csv ffile"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:283
-msgid "Export a Car Item .csv file"
-msgstr "Allforio Eitem Car .csv ffile"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:284
-msgid "Create a text list of the Car Items"
-msgstr "Creu rhestr destun o'r Eitemau Car"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:285
-msgid "Specifies the radius of the circle track"
-msgstr "Yn nodi radiws y trac cylch"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:286
-msgid "Default command is Describe or Select"
-msgstr "Gorchymyn diofyn yw Disgrifio neu Dewis"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:287
-msgid "Action to invoke on Right-Click"
-msgstr "Camau i weithredu ar De-gliciwch"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:288
-msgid ""
-"Replace current selection with clicked object or add clicked object to "
-"selection"
-msgstr ""
-"Amnewid y dewis cyfredol gyda gwrthrych wedi'i glicio neu ychwanegu "
-"gwrthrych wedi'i glicio at y dewis"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:289
-msgid "Clicking into an empty area clears selection if select mode is <add>"
-msgstr ""
-"Mae clicio i mewn i ardal wag yn clirio'r dewis os yw'r modd dethol <add>"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:291
-msgid "The list of control elements"
-msgstr "Y rhestr o elfennau rheoli"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:292
-msgid "Edit the element"
-msgstr "Golygu'r elfen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:293
-msgid "Delete the element"
-msgstr "Golygu'r elfen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:294
-msgid "Contents Label for new Parameter file"
-msgstr "Label Cynnwys ar gyfer ffeil Paramedr newydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:295
-msgid "Desired curve radius for new track"
-msgstr "Radiws cromlin dymunol ar gyfer trac newydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:296
-msgid "List of custom designed turnouts and structures"
-msgstr "Rhestr o bwyntiau a strwythurau wedi'u cynllunio'n benodol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:297
-msgid "Invoke designer editor"
-msgstr "Galw golygydd dylunydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:298
-msgid "Remove selected entries"
-msgstr "Dileu cofnodion dethol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:299
-msgid "Copy selected entries to Parameter File"
-msgstr "Copïwch gofnodion dethol i Ffeil Paramedr"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:300
-msgid "Create a New part or prototype"
-msgstr "Creu rhan neu brototeip newydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:301
-msgid "Update custom file and close"
-msgstr "Diweddarwch y ffeil arfer a'i chau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:302
-msgid "Executes the next step of the demo"
-msgstr "Yn gweithredu cam nesaf y demo"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:303
-msgid "Skip to next demo"
-msgstr "Neidio i'r demo nesaf"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:304
-msgid "Stops the demonstration and returns you to XTrackCAD"
-msgstr "Yn stopio'r arddangosiad ac yn eich dychwelyd iddo XTrackCAD"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:305
-msgid "Select speed of Playback"
-msgstr "Dewiswch gyflymder Chwarae"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:306
-msgid "This is where comments about the demo are displayed"
-msgstr "Dyma lle mae sylwadau am y demo yn cael eu harddangos"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:343
-msgid "Move the Main canvas if you drag near the edge"
-msgstr "Symudwch y Prif gynfas os ydych chi'n llusgo ger yr ymyl"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:344
-msgid "Color tracks by layer or individually"
-msgstr "Llwybrau lliw yn ôl haen neu'n unigol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:345
-msgid "Color draw objects by layer or individually"
-msgstr "Lliwiwch wrthrychau lliw fesul haen neu'n unigol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:346
-msgid "Controls the drawing of hidden tracks"
-msgstr "Yn rheoli lluniadu traciau cudd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:347
-msgid "Controls the drawing of End-Points"
-msgstr "Mae'n rheoli lluniadu pwyntiau diwedd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:348
-msgid "How to draw track ties"
-msgstr "Sut i dynnu llun cysgu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:349
-msgid "Show crosshair at center of curves"
-msgstr "Dangos crosshair yng nghanol y cromliniau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:350
-msgid "Drawing scale when to draw tracks with 2 rails"
-msgstr "Graddfa dynnu pryd i dynnu traciau gyda 2 reilen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:351
-msgid "Drawing scale of the map window"
-msgstr "Graddfa dynnu ffenestr y map"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:352
-msgid "Whether the main layout is updated while dragging on the Map"
-msgstr "P'un a yw'r prif gynllun yn cael ei ddiweddaru wrth lusgo ar y Map"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:353
-msgid "Enable labels for Turnouts, Flextrack Lengths and Elevations"
-msgstr "Galluogi labeli ar gyfer Pwyntiau, Hyd Trac Hyblyg ac Drychiadau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:354
-msgid "When to label Turnout, Flextrack Lengths and Elevations"
-msgstr "Pryd i labelu Pwyntiau, Hyd Trac Flex ac Drychiadau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:355
-msgid "Font size for labels on layout"
-msgstr "Maint y ffont ar gyfer labeli ar y cynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:356
-msgid "Label elements on the Hot Bar"
-msgstr "Labelwch elfennau ar y Bar Poeth"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:357
-msgid "Label elements on layout"
-msgstr "Labelu elfennau ar y cynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:358
-msgid "Label elements for lists"
-msgstr "Labelwch elfennau ar gyfer rhestrau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:359
-msgid "How to group cars on the Train Hot Bar"
-msgstr "Sut i grwpio ceir ar y Bar Poeth Trên"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:360
-msgid "Delay (in mS) between updating train movements"
-msgstr "Oedi (yn msec) rhwng diweddaru symudiadau trenau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:361
-msgid "Don't show trains in tunnels when tunnels are hidden"
-msgstr "Peidiwch â dangos trenau mewn twneli pan fydd twneli wedi'u cuddio"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:362
-msgid "Display unconnected endpoints of track with special marks"
-msgstr "Arddangos pwyntiau terfyn digyswllt â marciau arbennig"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:363
-msgid "Whether the Main Drawing Area shows as much of the room as possible"
-msgstr ""
-"P'un a yw'r Prif Ardal Arlunio yn dangos cymaint o'r ystafell â phosibl"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:364
-msgid "Don't hide system cursor when program cursors are showing"
-msgstr ""
-"Peidiwch â chuddio cyrchwr system pan fydd cyrchwyr rhaglenni'n dangos"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:366
-msgid "Width of the lines"
-msgstr "Lled y llinellau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:367
-msgid "Color of the lines"
-msgstr "Lliw y llinellau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:368
-msgid "List of types of Lumber"
-msgstr "Rhestr o'r mathau o bren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:369
-msgid "Color of Benchwork"
-msgstr "Lliw y Byrddau Sylfaen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:370
-msgid "Orientation of Benchwork"
-msgstr "Cyfeiriadedd y Bwrdd Sylfaen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:371
-msgid "Size of Dimension Arrows"
-msgstr "Maint y Saethau Dimensiwn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:372
-msgid "Width of Box"
-msgstr "Lled y Blwch"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:373
-msgid "Height of Box"
-msgstr "Uchder y Blwch"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:374
-msgid "Angle of Line"
-msgstr "Ongl y Llinell"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:375
-msgid "Radius of Curve"
-msgstr "Radiws y Gromlin"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:377
-msgid "This controls the sharpness of the easement curve"
-msgstr "Mae hyn yn rheoli miniogrwydd cromlin yr hawddfraint"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:378
-msgid "Minimum radius"
-msgstr "Radiws lleiaf"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:379
-msgid "Maximum offset"
-msgstr "Gwrthbwyso uchaf"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:380
-msgid "Easement length"
-msgstr "Hyd rhwyddineb"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:381
-msgid ""
-"These radio buttons are a short-cut for Values of 0.0, 0.5, 1.0 and 2.0. "
-"None turns Easements off"
-msgstr ""
-"Mae'r botymau radio hyn yn llwybr byr ar gyfer Gwerthoedd o 0.0, 0.5, 1.0 a "
-"2.0. Nid oes yr un yn troi Rhwyddinebau i ffwrdd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:382
-msgid "Complete easement selection"
-msgstr "Dewis hawddfraint cyflawn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:383
-msgid "Type of elevation"
-msgstr "Math o ddrychiad"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:384
-msgid "Height of End Point"
-msgstr "Uchder y pwynt gorffen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:385
-msgid "Compute elevation based on neighbors"
-msgstr "Drychiad cyfrifiadurol yn seiliedig ar gymdogion"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:386
-msgid "Compute grade based on neighbors"
-msgstr "Gradd gyfrifiannu yn seiliedig ar gymdogion"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:387
-msgid "Specify a name for an End-Point"
-msgstr "Nodwch enw ar gyfer pwynt gorffen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:389
-msgid "Print parts list"
-msgstr "Argraffu rhestr rhannau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:390
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:512
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:625
-msgid "Invoke the Print Setup dialog"
-msgstr "Galw ar y ddewislen gosod Argraffu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:391
-msgid "Save parts list to file"
-msgstr "Cadw rhestr rhannau i'w ffeilio"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:392
-msgid "This is the list of parts for the layout"
-msgstr "Dyma'r rhestr o rannau ar gyfer y cynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:393
-msgid "Enable prices on the Parts List"
-msgstr "Galluogi prisiau ar y Rhestr Rhannau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:394
-msgid "Enable index listing on the Parts List"
-msgstr "Galluogi rhestru mynegai ar y Rhestr Rhannau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:395
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:398
-msgid "Spacing between major grid lines"
-msgstr "Bylchau rhwng prif linellau grid"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:396
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:399
-msgid "Allows the spacing to be subdivided"
-msgstr "Yn caniatáu i'r bylchau gael eu hisrannu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:397
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:400
-msgid "Specifies if positions are snaped in this direction"
-msgstr "Yn nodi a yw swyddi'n cael eu bachu i'r cyfeiriad hwn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:401
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:402
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:403
-msgid "Shows the origin and angle of the grid"
-msgstr "Yn dangos tarddiad ac ongl y grid"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:404
-msgid "Specifies if the grid is shown"
-msgstr "Yn nodi a yw'r grid yn cael ei ddangos"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:405
-msgid "Completes the grid specification"
-msgstr "Yn cwblhau manyleb y grid"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:409
-msgid "Number of segments in Group"
-msgstr "Nifer y segmentau yn y Grŵp"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:410
-msgid "Replace the Selected object with the new definition?"
-msgstr "Amnewid y gwrthrych Dethol gyda'r diffiniad newydd?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:411
-msgid "Creates a new Structure (or Turnout)"
-msgstr "Yn creu Strwythur (neu Bwynt) newydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:412
-msgid "Elevation difference of Helix End-Points"
-msgstr "Gwahaniaeth drychiad pwyntiau terfyn Helix"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:413
-msgid "Helix Radius"
-msgstr "Radiws Helix"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:414
-msgid "Number of turns in the helix"
-msgstr "Nifer y troadau yn yr helics"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:415
-msgid "Angle betweek helix entrance and exit"
-msgstr "Ongl rhwng mynedfa helix ac allanfa"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:416
-msgid "Grade in helix"
-msgstr "Gradd mewn helics"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:417
-msgid "Separation between helix layers including baseboard, track, etc"
-msgstr "Gwahanu rhwng haenau helics gan gynnwys bwrdd sylfaen, trac, ac ati"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:418
-msgid "Index numbers of objects, separated by commas"
-msgstr "Mynegai niferoedd y gwrthrychau, wedi'u gwahanu gan atalnodau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:419
-msgid "Desired curve radius between straight tracks"
-msgstr "Radiws cromlin dymunol rhwng traciau syth"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:420
-msgid "Layer list"
-msgstr "Rhestr haenau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:421
-msgid "Layer Name"
-msgstr "Enw Haen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:422
-msgid "Hide Layer Button on MenuBar"
-msgstr "Cuddio Botwm Haen ar Bar Dewislen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:423
-msgid "Color of layer"
-msgstr "Lliw haen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:424
-msgid "Layer is drawn on Main window"
-msgstr "Tynnir yr haen ar y Brif ffenestr"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:425
-msgid "Layer cannot be changed"
-msgstr "Ni ellir newid haen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:426
-msgid "Use color for this Layer if color-by-layer is set"
-msgstr "Defnyddiwch liw ar gyfer yr Haen hon os yw lliw-wrth-haen wedi'i osod"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:427
-msgid "Other Layers this Layer also shows/hides"
-msgstr "Haenau Eraill mae'r Haen hon hefyd yn eu dangos / cuddio"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:428
-msgid "Layer is a Module"
-msgstr "Modiwl yw haen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:429
-msgid "Layer is drawn on Map window"
-msgstr "Tynnir yr haen ar ffenestr Map"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:430
-msgid "Number of layer buttons to show"
-msgstr "Nifer y botymau haen i'w dangos"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:431
-msgid "Number of objects in this layer"
-msgstr "Nifer y gwrthrychau yn yr haen hon"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:432
-msgid "Settings File to load when this layer is made current"
-msgstr "Gosodiadau Ffeil i'w lwytho pan fydd yr haen hon yn gyfredol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:434
-msgid "Load layer configuration from default"
-msgstr "Llwythwch ffurfweddiad haen yn ddiofyn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:435
-msgid "Save current layer configuration as default"
-msgstr "Cadw cyfluniad haen cyfredol yn ddiofyn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:436
-msgid "Overwrite layer configuration with system default values"
-msgstr "Gor-ysgrifennu cyfluniad haen gyda gwerthoedd diofyn system"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:437
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:438
-msgid "Specifies the size of the room (in inches or centimeters)"
-msgstr "Yn nodi maint yr ystafell (mewn modfeddi neu centimetrau)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:439
-msgid "Specifies the layout Title that will appear on printouts"
-msgstr "Yn nodi'r Teitl cynllun a fydd yn ymddangos ar allbrintiau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:440
-msgid "Specifies the layout Subtitle that will appear on printouts"
-msgstr "Yn nodi'r cynllun Is-deitl a fydd yn ymddangos ar allbrintiau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:441
-msgid "Specifies the Modelling Scale"
-msgstr "Yn nodi'r Raddfa Modelu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:442
-msgid "Specifies the rail gauge, ie. the distance between the rails"
-msgstr "Yn nodi'r mesurydd rheilffordd, h.y. y pellter rhwng y cledrau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:443
-msgid ""
-"Specifies minimum track radius (in inches or centimeters). Tracks with a "
-"smaller radius are considered exceptional."
-msgstr ""
-"Yn nodi'r radiws trac lleiaf (mewn modfeddi neu centimetrau). Mae traciau â "
-"radiws llai yn cael eu hystyried yn eithriadol."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:444
-msgid ""
-"Specifies maximum track elevation expressed as a percent (%). Tracks with a "
-"larger elevation are considered exceptional."
-msgstr ""
-"Yn nodi'r drychiad trac uchaf a fynegir fel cant (%). Mae traciau â drychiad"
-" mwy yn cael eu hystyried yn eithriadol."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:445
-msgid "Select the background image"
-msgstr "Dewiswch y ddelwedd gefndir"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:446
-msgid "Remove the background image"
-msgstr "Tynnwch y ddelwedd gefndir"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:447
-msgid "Specifies the x offset of the bottom left of the background image"
-msgstr "Yn nodi gwrthbwyso x gwaelod chwith y ddelwedd gefndir"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:448
-msgid "Specifies the y offset of the bottom left of the background image"
-msgstr "Yn nodi gwrthbwyso y chwith isaf y ddelwedd gefndir"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:449
-msgid ""
-"Specifies how large the bottom edge of the background image should be in "
-"model units"
-msgstr ""
-"Yn nodi pa mor fawr y dylai ymyl waelod y ddelwedd gefndir fod mewn unedau "
-"model"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:450
-msgid ""
-"Specifies the screening of the background image from 0 (none) to 100% "
-"(vanishes)"
-msgstr "Yn nodi sgrinio'r ddelwedd gefndir o 0 (dim) i 100% (diflannu)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:451
-msgid "Specifies the rotation angle of the background image in degrees"
-msgstr "Yn nodi ongl cylchdroi'r ddelwedd gefndir mewn graddau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:452
-msgid "Write a copy of current settings to a named file"
-msgstr "Ysgrifennwch gopi o'r gosodiadau cyfredol i ffeil a enwir"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:453
-msgid "Override current settings from a named file"
-msgstr "Diystyru gosodiadau cyfredol o ffeil a enwir"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:454
-msgid "Move by X"
-msgstr "Symud heibio X"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:455
-msgid "Move by Y"
-msgstr "Symud heibio Y"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:458
-msgid ""
-"This is the body of the Note. To change this select Modify from the File "
-"Menu"
-msgstr "Dyma gorff y Nodyn. I newid hyn, dewiswch Addasu o'r Ddewislen Ffeil"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:460
-msgid "Specifies number of pixels per inch (or centimeter)"
-msgstr "Yn nodi nifer y picseli fesul modfedd (neu centimetr)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:462
-msgid ""
-"Specifies whether Layout Titles, Borders or Track Centerlines are printed on"
-" the BitMap"
-msgstr ""
-"Yn nodi a yw Teitlau Cynllun, Ffiniau neu Track Centerlines wedi'u hargraffu"
-" ar y BitMap"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:463
-msgid ""
-"Specifies the separation between the original track and the parallel "
-"track/line"
-msgstr ""
-"Yn nodi'r gwahaniad rhwng y trac gwreiddiol a'r trac / llinell gyfochrog"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:464
-msgid ""
-"Specifies the a factor that increases the seperation as the radius of the "
-"original track reduces. 0.0 means no increase."
-msgstr ""
-"Yn nodi'r ffactor sy'n cynyddu'r trawiad wrth i radiws y trac gwreiddiol "
-"leihau. Mae 0.0 yn golygu dim cynnydd."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:465
-msgid "Enter your name as specified in the XTrackCAD Registration Notice"
-msgstr "Rhowch eich enw fel y nodir yn Hysbysiad Cofrestru XTrackCAD"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:466
-msgid "Enter the key value as specified in the XTrackCAD Registration Notice"
-msgstr ""
-"Rhowch y gwerth allweddol fel y nodir yn Hysbysiad Cofrestru XTrackCAD"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:467
-msgid "Validates the name and key. Terminates the registration command"
-msgstr "Yn dilysu'r enw a'r allwedd. Yn terfynu'r gorchymyn cofrestru"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:468
-msgid "0 degrees is up or to the right"
-msgstr "Mae 0 gradd i fyny ac i'r dde"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:469
-msgid "Choose english (inches) or metric (centimeters)"
-msgstr "Dewiswch saesneg (modfedd) neu fetrig (centimetrau)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:470
-msgid "How to display length measurements"
-msgstr "Sut i arddangos mesuriadau hyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:471
-msgid "Do not create tracks to be shorter than this value"
-msgstr "Peidiwch â chreu traciau i fod yn fyrrach na'r gwerth hwn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:472
-msgid "Maximum distance between connected end points"
-msgstr "Y pellter mwyaf rhwng pwyntiau gorffen cysylltiedig"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:473
-msgid "Minimum angle between connected End-Points"
-msgstr "Ongl leiaf rhwng pwyntiau terfyn cysylltiedig"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:474
-msgid "Specifies the minimum angle between tracks connected to a turntable"
-msgstr "Yn nodi'r ongl leiaf rhwng traciau sydd wedi'u cysylltu â throfwrdd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:475
-msgid "Trains will crash above this speed"
-msgstr "Bydd trenau'n chwalu uwchlaw'r cyflymder hwn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:476
-msgid "Enable/Disable balloon popup help windows"
-msgstr "Galluogi / Analluogi ffenestri cymorth popup balŵn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:477
-msgid "Enable/Disable show of flextrack on hotbar"
-msgstr "Galluogi / Analluogi sioe o rac fflecs ar far poeth"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:478
-msgid "How far you can move the mouse before its considered a drag"
-msgstr ""
-"Pa mor bell y gallwch chi symud y llygoden cyn iddi gael ei hystyried yn "
-"llusgo"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:479
-msgid "How long you can hold a mouse button down before its considered a drag"
-msgstr ""
-"Pa mor hir y gallwch chi ddal botwm llygoden i lawr cyn iddo gael ei "
-"ystyried yn lusgo"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:480
-msgid "Minimum distance (in pixels) between grid lines/ticks"
-msgstr "Y pellter lleiaf (mewn picseli) rhwng llinellau grid / trogod"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:481
-msgid ""
-"Specifies the Check Point frequency; number of modifications made since the "
-"last checkpoint."
-msgstr ""
-"Yn nodi'r amledd Pwynt Gwirio; nifer yr addasiadau a wnaed ers y pwynt "
-"gwirio diwethaf."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:482
-msgid "Specifies the number of checkpoints after save before auto-saving."
-msgstr ""
-"Yn nodi nifer y pwyntiau gwirio ar ôl eu harbed cyn cynilo'n awtomatig."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:483
-msgid "Resume work on last layout or start with new layout"
-msgstr ""
-"Ail-ddechrau gwaith ar y cynllun diwethaf neu ddechrau gyda gosodiad newydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:485
-msgid "Updated cost of current selected item"
-msgstr "Cost wedi'i diweddaru ar gyfer yr eitem a ddewiswyd ar hyn o bryd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:487
-msgid "Selection list for prices"
-msgstr "Rhestr ddethol ar gyfer prisiau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:488
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:489
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:490
-msgid "Price of specified length of flex-track"
-msgstr "Pris hyd penodol y trac fflecs"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:492
-msgid "Controls the printing of a centerline of track cmdPrint"
-msgstr "Mae'n rheoli argraffu llinell ganol trac cmdPrint"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:493
-msgid "Controls the reduction (scale) of the printout"
-msgstr "Mae'n rheoli gostyngiad (graddfa) yr allbrint"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:494
-msgid "Scaled page width (Scale times physical page width)"
-msgstr "Lled tudalen ar raddfa (Graddfa amseroedd lled tudalen gorfforol)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:495
-msgid "Sets page size to the maximum (based on scale and physical page size)"
-msgstr ""
-"Yn gosod maint tudalen i'r eithaf (yn seiliedig ar raddfa a maint tudalen "
-"gorfforol)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:496
-msgid "Scaled page height (Scale times physical page height)"
-msgstr ""
-"Uchder tudalen ar raddfa (Amseroedd graddfa uchder corfforol y dudalen)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:497
-msgid "Sets scale, origin and angle for a one page printout of the layout"
-msgstr ""
-"Yn gosod graddfa, tarddiad ac ongl ar gyfer allbrint un dudalen o'r cynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:498
-msgid "Print page in Portrait or Landscape format"
-msgstr "Argraffu tudalen ar ffurf Portread neu Dirwedd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:499
-msgid "Order of printing pages"
-msgstr "Trefn y tudalennau argraffu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:500
-msgid "Print Title, Date, Author and other information at bottom of page?"
-msgstr ""
-"Argraffu Teitl, Dyddiad, Awdur a gwybodaeth arall ar waelod y dudalen?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:501
-msgid "Ignore unprintable page margins?"
-msgstr "Anwybyddu ymylon tudalennau na ellir eu hargraffu?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:502
-msgid "Print Registration Marks at 1:1?"
-msgstr "Argraffu Marciau Cofrestru yn 1:1?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:503
-msgid "Print Snap Grid?"
-msgstr "Argraffu Grid Snap?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:504
-msgid ""
-"Print Rulers at the layout edge only, or on all page edges, or nowhere?"
-msgstr ""
-"Argraffu Rheolwyr ar ymyl y cynllun yn unig, neu ar bob ymyl tudalen, neu yn"
-" unman?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:505
-msgid "Print Roadbed Outline?"
-msgstr "Argraffu Amlinelliad Gwely Ffordd?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:506
-msgid "Print Roadbed Outline"
-msgstr "Argraffu Amlinelliad Gwely Ffordd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:507
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:508
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:510
-msgid ""
-"Origin of the print grid. This is useful if you want to reprint a set of "
-"pages"
-msgstr ""
-"Tarddiad y grid argraffu. Mae hyn yn ddefnyddiol os ydych chi am ailargraffu"
-" set o dudalennau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:509
-msgid "Resets the origin and angle to 0"
-msgstr "Ailosod y tarddiad a'r ongl i 0"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:511
-msgid "Deselects all pages"
-msgstr "Yn dad-ddewis pob tudalen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:513
-msgid "Print selected pages and terminates the print command"
-msgstr "Argraffu tudalennau a ddewiswyd ac yn terfynu'r gorchymyn argraffu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:514
-msgid "List of loaded, shown or hidden parameter files"
-msgstr "Rhestr o ffeiliau paramedr wedi'u llwytho, eu dangos neu eu cuddio"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:515
-msgid "Show parameter files by names or descriptions"
-msgstr "Dangos ffeiliau paramedr yn ôl enwau neu ddisgrifiadau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:516
-msgid "Toggle the shown status of the selected parameter file"
-msgstr "Toglo statws a ddangosir y ffeil baramedr a ddewiswyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:517
-msgid "Find extra parameter files from the filesystem"
-msgstr "Dewch o hyd i ffeiliau paramedr ychwanegol o'r system ffeiliau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:518
-msgid "Find parameter files from the system library"
-msgstr "Dewch o hyd i ffeiliau paramedr o lyfrgell y system"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:519
-msgid "Update parameter file list"
-msgstr "Diweddaru rhestr ffeiliau paramedr"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:520
-msgid "Reload parameter file from list"
-msgstr "Ail-lwytho ffeil paramedr o'r rhestr"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:521
-msgid "Select all parameter files shown"
-msgstr "Dewiswch yr holl ffeiliau paramedr a ddangosir"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:522
-msgid "Profile of specified path"
-msgstr "Proffil llwybr penodol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:523
-msgid "Clear the profile"
-msgstr "Cliriwch y proffil"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:524
-msgid "Print the profile"
-msgstr "Argraffwch y proffil"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:526
-msgid "Stop recording"
-msgstr "Stopiwch recordio"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:527
-msgid "Insert a message"
-msgstr "Mewnosod neges"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:528
-msgid "End a message"
-msgstr "Gorffennwch neges"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:529
-msgid "Message body"
-msgstr "Corff neges"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:530
-msgid "Possible turnouts"
-msgstr "Pwyntiau posib"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:531
-msgid "Skip this turnout"
-msgstr "Hepgor y pwynt hwn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:533
-msgid "Manufacturer of Object"
-msgstr "Gwneuthurwr Gwrthrych"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:534
-msgid "Description of Object"
-msgstr "Disgrifiad o'r Gwrthrych"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:535
-msgid "Part Nuber of Object"
-msgstr "Rhan Nifer y Gwrthrych"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:537
-msgid "Rescale by Scale Conversion or by Ratio"
-msgstr "Ail-raddfa yn ôl Trosi Graddfa neu yn ôl Cymhareb"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:538
-msgid "Original Scale of the selected objects"
-msgstr "Graddfa Wreiddiol y gwrthrychau a ddewiswyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:539
-msgid "Original Gauge of the selected objects"
-msgstr "Mesurydd gwreiddiol y gwrthrychau a ddewiswyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:540
-msgid "New Scale of the selected objects"
-msgstr "Graddfa Newydd y gwrthrychau a ddewiswyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:541
-msgid "New Gauge of the selected objects"
-msgstr "Mesurydd newydd o'r gwrthrychau a ddewiswyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:542
-msgid "Change track dimensions to new scale"
-msgstr "Newid dimensiynau'r trac i raddfa newydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:543
-msgid "Change size by this amount"
-msgstr "Newid maint yn ôl y swm hwn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:545
-msgid "Snap Grid Line and Division"
-msgstr "Llinell a Rhaniad Grid Snap"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:546
-msgid "X and Y position markers"
-msgstr "X a Y marcwyr safle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:547
-msgid "Border rulers, room boundaries and table edges"
-msgstr "Rheolwyr ffiniau, ffiniau ystafelloedd ac ymylon bwrdd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:548
-msgid "Primary Axis of grid rotation"
-msgstr "Echel Cynradd cylchdroi'r grid"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:549
-msgid "Secondary Axis of grid rotation"
-msgstr "Echel Eilaidd cylchdroi'r grid"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:550
-msgid "Unselected tracks"
-msgstr "Traciau heb eu dethol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:551
-msgid "Selected tracks"
-msgstr "Traciau dethol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:552
-msgid "Color of tracks on the Profile path"
-msgstr "Lliw y traciau ar y llwybr Proffil"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:553
-msgid "Color of Exceptional tracks"
-msgstr "Lliw y traciau eithriadol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:554
-msgid "Color of track ties"
-msgstr "Lliw y rhai sy'n cysgu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:555
-msgid "Updates the colors"
-msgstr "Yn diweddaru'r lliwiau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:556
-msgid "Angle in degrees"
-msgstr "Ongl mewn graddau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:557
-msgid "Rotate object(s) by specified amount"
-msgstr "Cylchdroi gwrthrych (ion) yn ôl swm penodol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:558
-msgid "Enter one or more words as search terms"
-msgstr "Rhowch un neu fwy o eiriau fel termau chwilio"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:559
-msgid "Remove the current filter and show all files"
-msgstr "Tynnwch yr hidlydd cyfredol a dangoswch yr holl ffeiliau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:560
-msgid "Find matching file descriptions"
-msgstr "Dewch o hyd i ddisgrifiadau ffeiliau sy'n cyfateb"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:561
-msgid "Search results"
-msgstr "Canlyniadau chwilio"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:562
-msgid "Show descriptions or filenames in results"
-msgstr "Dangos disgrifiadau neu enwau ffeiliau mewn canlyniadau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:563
-msgid "Select how well the definitions must fit the current layout scale"
-msgstr ""
-"Dewiswch pa mor dda y mae'n rhaid i'r diffiniadau gyd-fynd â'r raddfa "
-"gynllun gyfredol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:564
-msgid "Add selected entries into parameter file list"
-msgstr "Ychwanegwch gofnodion dethol i restr ffeiliau paramedr"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:565
-msgid "Select All found entries"
-msgstr "Dewiswch Pob cofnod a ddarganfuwyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:566
-msgid "Reload the system library contents for finding"
-msgstr "Ail-lwytho cynnwys llyfrgell y system i ddod o hyd iddo"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:567
-msgid "Choose commands to be sticky"
-msgstr "Dewiswch orchmynion i fod yn ludiog"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:568
-msgid "Make the commands sticky"
-msgstr "Make the commands sticky"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:569
-msgid "List of available structure"
-msgstr "Rhestr o'r strwythurau sydd ar gael"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:570
-msgid "Diagram of the selected structure"
-msgstr "Diagram o'r strwythur a ddewiswyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:571
-msgid "Hide Selection window when placing Structure"
-msgstr "Cuddio ffenestr Dewis wrth osod Strwythur"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:572
-msgid "Drawing scale and size"
-msgstr "Graddfa a maint lluniadu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:573
-msgid "Complete structure placement"
-msgstr "Lleoliad strwythur cyflawn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:574
-msgid "Choose a Pier number"
-msgstr "Dewiswch rif Pier"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:575
-msgid "Name of the Motor"
-msgstr "Enw'r Modur"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:576
-msgid "Value when switch is normal"
-msgstr "Gwerth pan fydd y switsh yn normal"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:577
-msgid "Value when the switch is reversed"
-msgstr "Gwerth pan fydd y switsh yn cael ei wrthdroi"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:578
-msgid "Value for a positive comfirmation of switch position"
-msgstr "Gwerth am gadarnhad cadarnhaol o safle'r switsh "
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:580
-msgid "Controls the color of the entered text"
-msgstr "Mae'n rheoli lliw y testun a gofnodwyd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:581
-msgid "If the text is boxed"
-msgstr "Os yw'r testun mewn blwch"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:582
-msgid "Useful information about the program"
-msgstr "Gwybodaeth ddefnyddiol am y rhaglen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:583
-msgid "Show Tip of the Day every time the program starts"
-msgstr "Dangos Tip y Dydd bob tro mae'r rhaglen yn cychwyn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:584
-msgid "Show the next Tip of the Day"
-msgstr "Dangoswch Awgrym nesaf y Dydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:585
-msgid "Show the previous Tip of the Day"
-msgstr "Dangoswch Awgrym blaenorol y Dydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:587
-msgid "Controls which Command Buttons are displayed"
-msgstr "Rheolaethau pa Botymau Gorchymyn sy'n cael eu harddangos"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:588
-msgid "List of Cars"
-msgstr "Rhestr o geir"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:589
-msgid "List of active trains"
-msgstr "Rhestr o drenau actif"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:591
-msgid "Train odometer"
-msgstr "Odomedr trên"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:592
-msgid "Reset odometer to 0"
-msgstr "Ailosod odomedr i 0"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:593
-msgid "Find train on layout"
-msgstr "Dewch o hyd i drên ar y cynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:594
-msgid "Follow train around layout"
-msgstr "Dilynwch y trên o amgylch cynllun"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:595
-msgid "Flip direction at End Of Track"
-msgstr "Cyfeiriad troi ar ddiwedd y Trac"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:596
-msgid "Change direction of train"
-msgstr "Newid cyfeiriad y trên"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:597
-msgid "Stop the train"
-msgstr "Stopiwch y trên"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:598
-msgid "List of available turnouts for the current scale"
-msgstr ""
-"Rhestr o'r nifer a bleidleisiodd sydd ar gael ar gyfer y raddfa gyfredol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:599
-msgid ""
-"Diagram of the currently selected turnout. Click on a End-Point to select "
-"the Active End-Point"
-msgstr ""
-"Diagram o'r nifer a ddewiswyd ar hyn o bryd. Cliciwch ar ddiweddbwynt i "
-"ddewis y pwynt gorffen gweithredol"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:600
-msgid ""
-"A menu list of various type of turnouts and sectional tracks you can define"
-msgstr ""
-"Rhestr ddewislen o wahanol fathau o bwyntiau a thraciau adrannol y gallwch "
-"eu diffinio"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:601
-msgid "Hide Selection window when placing Turnout"
-msgstr "Cuddio ffenestr Dewis wrth osod pwyntiau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:602
-msgid "The selected Active End-Point"
-msgstr "The selected active end-point"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:603
-msgid "Current selected turnout, (displayed in the diagram window)"
-msgstr "Pwynt dethol cyfredol, (wedi'i arddangos yn ffenestr y diagram)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:604
-msgid "One the End-Points that can be selected"
-msgstr "Un y pwyntiau gorffen y gellir eu dewis"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:606
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:607
-msgid "Angle of the specified track to the center line of the turnout"
-msgstr "Ongl y trac penodedig i linell ganol y pwynt"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:608
-msgid "Specifies if angles are entered as Frog Numbers or in degrees"
-msgstr "Yn nodi a yw onglau yn cael eu nodi fel Rhifau Broga neu mewn graddau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:609
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:610
-msgid "Desciption"
-msgstr "Disgrifiad"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:611
-msgid "Turnout description (Manuf., Size, Part Number, etc)"
-msgstr "Disgrifiad pwynt (Manu., Maint, Rhan Rhif, ac ati)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:612
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:613
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:614
-msgid "Length from the base to the end of the specified track"
-msgstr "Hyd o'r sylfaen i ddiwedd y trac penodedig"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:616
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:617
-msgid "Offset of the track End-Point from the center line of the turnout"
-msgstr "Gwrthbwyso pwynt terfyn y trac o linell ganol y pwynt"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:620
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:621
-msgid "Prints a full size diagram of the turnout for checking"
-msgstr "Yn argraffu diagram maint llawn o'r pwynt i'w wirio"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:622
-msgid "Color of Roadbed lines"
-msgstr "Lliw y llinellau gwely ffordd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:623
-msgid "Width of Roadbed lines"
-msgstr "Lled llinellau gwely ffordd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:624
-msgid "Width of Roadbed"
-msgstr "Lled y Ffordd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:626
-msgid "Closes the window and returns to the Turnout Selection window"
-msgstr "Yn cau'r ffenestr ac yn dychwelyd i'r ffenestr Dewis Pwynt"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:627
-msgid "Specifies the diameter of the turntable"
-msgstr "Yn nodi diamedr y trofwrdd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:628
-msgid "Old Turnout title"
-msgstr "Teitl hen bwynt"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:629
-msgid "List of available titles"
-msgstr "Rhestr o'r teitlau sydd ar gael"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:630
-msgid "Leave the Turnouts' title unchanged"
-msgstr "Gadewch deitl y pwyntiau yn ddigyfnewid"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:631
-msgid "Invoke the Parameter Files dialog"
-msgstr "Galw ar y dialog Ffeiliau Paramedr"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:632
-msgid "List of available turnouts"
-msgstr "Rhestr o'r pwyntiau sydd ar gael"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:633
-msgid "Update the Turnouts' title"
-msgstr "Diweddarwch deitl y pwyntiau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:637
-msgid "Sample"
-msgstr "Sampl"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:639
-msgid "Slant"
-msgstr "Llethr"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:640
-msgid "Font selection dialog"
-msgstr "Deialog dewis ffont"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:641
-msgid "Weight"
-msgstr "Pwysau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:642
-msgid "Printer Abort Window"
-msgstr "Ffenestr Erthylu Argraffydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:643
-msgid "Print to filename"
-msgstr "Argraffu i enw ffeil"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:644
-msgid "Specify Postscript font alias mapping"
-msgstr "Nodwch fapio alias ffont Ôl-nodyn"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:645
-msgid ""
-"Displays the Print Setup window to change printers, orientation, paper size,"
-" etc."
-msgstr ""
-"Yn arddangos y ffenestr Gosod Print i newid argraffwyr, cyfeiriadedd, maint "
-"papur, ac ati."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:646
-msgid "Closes this dialog"
-msgstr "Yn cau'r ymgom hon"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:647
-msgid "Page orientation"
-msgstr "Cyfeiriadedd tudalen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:648
-msgid "Unprintable margins"
-msgstr "Ymylon na ellir ei argraffu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:649
-msgid "Updates and closes this dialog"
-msgstr "Yn diweddaru ac yn cau'r ymgom hon"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:650
-msgid "Choose paper size"
-msgstr "Dewiswch faint papur"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:651
-msgid "Choose printer"
-msgstr "Dewiswch argraffydd"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:652
-msgid "Print test page"
-msgstr "Argraffu tudalen prawf"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:1
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:8
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:1
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:8
msgid ""
"XTrackCAD provides demonstrations on most of the program's features. The "
"demos can be run by clicking on the Help menu on the Main window and then "
@@ -10477,49 +8352,53 @@ msgstr ""
"rhaglen. Gellir rhedeg y demos trwy glicio ar y ddewislen Help ar y Brif "
"ffenestr ac yna dewis Demos."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:3
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:10
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:3
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:10
msgid ""
-"The notation \"Menu|Item\" is used in the documentation (and the on-line demos and tips) to indicate the selection of a menu item.\n"
-"For example, \"File|Open\" means to open the menu by clicking on File on the menu bar of the Main window and then selecting the Open item from that menu."
+"The notation \"Menu|Item\" is used in the documentation (and the on-line "
+"demos and tips) to indicate the selection of a menu item.\n"
+"For example, \"File|Open\" means to open the menu by clicking on File on the "
+"menu bar of the Main window and then selecting the Open item from that menu."
msgstr ""
-"Defnyddir y nodiant \"Dewislen | Eitem\" yn y ddogfennaeth (a'r demos a'r awgrymiadau ar-lein) i nodi'r dewis o eitem ar y fwydlen.\n"
-"Er enghraifft, ystyr \"Ffeil | Agored\" yw agor y ddewislen trwy glicio ar Ffeil ar far dewislen y Brif ffenestr ac yna dewis yr eitem Agored o'r ddewislen honno."
+"Defnyddir y nodiant \"Dewislen | Eitem\" yn y ddogfennaeth (a'r demos a'r "
+"awgrymiadau ar-lein) i nodi'r dewis o eitem ar y fwydlen.\n"
+"Er enghraifft, ystyr \"Ffeil | Agored\" yw agor y ddewislen trwy glicio ar "
+"Ffeil ar far dewislen y Brif ffenestr ac yna dewis yr eitem Agored o'r "
+"ddewislen honno."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:12
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:12
msgid ""
-"Set your modeling scale on the \"Options|Layout\" dialog. This controls the"
-" Turnouts and Structures that are available, Easement values and track "
-"gauge."
+"Set your modeling scale on the \"Options|Layout\" dialog. This controls the "
+"Turnouts and Structures that are available, Easement values and track gauge."
msgstr ""
"Gosodwch eich graddfa fodelu ar y dialog \"Options | Layout\". Mae hyn yn "
"rheoli'r Pwyntiau a'r Strwythurau sydd ar gael, gwerthoedd Rhwyddineb a "
"mesurydd trac."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:8
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:14
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:8
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:14
msgid ""
"A number of example layouts are provided. These files can be accessed by "
"\"Help|Examples\"."
msgstr ""
-"Darperir nifer o gynlluniau enghreifftiol. Gellir cyrchu'r ffeiliau hyn trwy"
-" \"Help | Enghreifftiau\"."
+"Darperir nifer o gynlluniau enghreifftiol. Gellir cyrchu'r ffeiliau hyn trwy "
+"\"Help | Enghreifftiau\"."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:10
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:16
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:10
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:16
msgid ""
"When installed, the length units are set based on your contry: inches for "
"United States or Canada and centimeters elsewhere. You can change this on "
"the \"Options|Preferences\" dialog by choosing between Metric and English."
msgstr ""
-"Pan fyddant wedi'u gosod, mae'r unedau hyd wedi'u gosod yn seiliedig ar eich"
-" gwlad: modfedd ar gyfer yr Unol Daleithiau neu Ganada a centimetrau mewn "
-"mannau eraill. Gallwch newid hyn ar y deialog \"Options | Preferences\" trwy"
-" ddewis rhwng Metric a Saesneg."
+"Pan fyddant wedi'u gosod, mae'r unedau hyd wedi'u gosod yn seiliedig ar eich "
+"gwlad: modfedd ar gyfer yr Unol Daleithiau neu Ganada a centimetrau mewn "
+"mannau eraill. Gallwch newid hyn ar y deialog \"Options | Preferences\" trwy "
+"ddewis rhwng Metric a Saesneg."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:12
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:18
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:18
msgid ""
"You can change the overall size of your layout on the \"Options|Layout\" "
"dialog."
@@ -10527,22 +8406,22 @@ msgstr ""
"Gallwch newid maint cyffredinol eich cynllun ar y dialog \"Dewisiadau | "
"Cynllun\"."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:20
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:20
msgid ""
-"When installed, the default command is the Select command. You might want to"
-" change this to the Decribe command. You can do this on the "
-"\"Options|Command Options\" dialog."
+"When installed, the default command is the Select command. You might want to "
+"change this to the Decribe command. You can do this on the \"Options|"
+"Command Options\" dialog."
msgstr ""
"Pan fydd wedi'i osod, y gorchymyn diofyn yw'r gorchymyn Dewis. Efallai yr "
-"hoffech chi newid hyn i'r gorchymyn Disgrifio. Gallwch wneud hyn ar y dialog"
-" \"Options | Command Options\"."
+"hoffech chi newid hyn i'r gorchymyn Disgrifio. Gallwch wneud hyn ar y dialog "
+"\"Options | Command Options\"."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:22
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:22
msgid ""
-"When Selecting tracks, the connection between Selected and Unselected tracks"
-" is marked by a Red X. This indicates points where the connection between "
+"When Selecting tracks, the connection between Selected and Unselected tracks "
+"is marked by a Red X. This indicates points where the connection between "
"tracks will be broken if you Move or Rotate the Selected tracks."
msgstr ""
"Wrth Dewis traciau, mae'r cysylltiad rhwng traciau Dethol a Heb eu Dewis yn "
@@ -10550,28 +8429,34 @@ msgstr ""
"rhwng traciau yn cael ei dorri os byddwch chi'n Symud neu'n Cylchdroi'r "
"traciau Dethol."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:18
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:24
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:18
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:24
msgid ""
-"You can change orientation of the pages on the Print command by moving or rotating the Print Grid.\n"
+"You can change orientation of the pages on the Print command by moving or "
+"rotating the Print Grid.\n"
"Shift-Left-Drag moves the grid and Shift-Right-Drag rotates the grid."
msgstr ""
-"Gallwch newid cyfeiriadedd y tudalennau ar y gorchymyn Argraffu trwy symud neu gylchdroi'r Grid Argraffu.\n"
-"Mae Shift-Left-Drag yn symud y grid ac mae Shift-Right-Drag yn cylchdroi'r grid."
+"Gallwch newid cyfeiriadedd y tudalennau ar y gorchymyn Argraffu trwy symud "
+"neu gylchdroi'r Grid Argraffu.\n"
+"Mae Shift-Left-Drag yn symud y grid ac mae Shift-Right-Drag yn cylchdroi'r "
+"grid."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:21
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:26
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:26
msgid ""
"You can add track to any unconnected End-Point with the Modify command.\n"
-"Hold down the Shift key and click on the End-Point and drag away to create a new track segment attached to the End-Point.\n"
+"Hold down the Shift key and click on the End-Point and drag away to create a "
+"new track segment attached to the End-Point.\n"
"Repeat with the new End-Point to create flowing tracks."
msgstr ""
-"Gallwch ychwanegu trac at unrhyw End-Point digyswllt gyda'r gorchymyn Addasu.\n"
-"Daliwch y fysell Shift i lawr a chlicio ar y End-Point a llusgo i ffwrdd i greu segment trac newydd ynghlwm wrth y End-Point.\n"
+"Gallwch ychwanegu trac at unrhyw End-Point digyswllt gyda'r gorchymyn "
+"Addasu.\n"
+"Daliwch y fysell Shift i lawr a chlicio ar y End-Point a llusgo i ffwrdd i "
+"greu segment trac newydd ynghlwm wrth y End-Point.\n"
"Ailadroddwch gyda'r End-Point newydd i greu traciau sy'n llifo."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:25
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:28
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:28
msgid ""
"You can create curved tracks in four ways by dragging from:\n"
" the 1st endpoint in the direction of the curve\n"
@@ -10580,7 +8465,8 @@ msgid ""
" the 1st to 2nd endpoint\n"
"Then drag on one of the Red arrows to create the final shape of the curve.\n"
"\n"
-"You can click on the small button to the right of the Curve command button to change the method."
+"You can click on the small button to the right of the Curve command button "
+"to change the method."
msgstr ""
"Gallwch greu traciau crwm mewn pedair ffordd trwy lusgo o:\n"
"y pwynt olaf 1af i gyfeiriad y gromlin\n"
@@ -10589,77 +8475,105 @@ msgstr ""
"y pwynt olaf 1af i 2il\n"
"Yna llusgwch ar un o'r saethau Coch i greu siâp terfynol y gromlin.\n"
"\n"
-"Gallwch glicio ar y botwm bach i'r dde o'r botwm gorchymyn Curve i newid y dull."
+"Gallwch glicio ar y botwm bach i'r dde o'r botwm gorchymyn Curve i newid y "
+"dull."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:34
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:30
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:30
msgid ""
-"When creating a straight or a curved track by dragging from the 1st End Point, you can snap the new track to an existing open end point by holding down Shift while you click.\n"
+"When creating a straight or a curved track by dragging from the 1st End "
+"Point, you can snap the new track to an existing open end point by holding "
+"down Shift while you click.\n"
"The new track will be joined to the old when you create it."
msgstr ""
-"Wrth greu trac syth neu grom trwy lusgo o'r Pwynt Diwedd 1af, gallwch chi snapio'r trac newydd i bwynt pen agored sy'n bodoli trwy ddal Shift i lawr wrth i chi glicio.\n"
+"Wrth greu trac syth neu grom trwy lusgo o'r Pwynt Diwedd 1af, gallwch chi "
+"snapio'r trac newydd i bwynt pen agored sy'n bodoli trwy ddal Shift i lawr "
+"wrth i chi glicio.\n"
"Bydd y trac newydd yn cael ei gysylltu â'r hen pan fyddwch chi'n ei greu."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:37
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:32
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:32
msgid ""
-"Track Circles provide a quick way to see what arrangement of tracks will fit in your layout spaces. Create Circles with your typical radius and place them in corners and other locations where your main-line will make changes of direction. This will give you an overall idea of how your layout will look.\n"
+"Track Circles provide a quick way to see what arrangement of tracks will fit "
+"in your layout spaces. Create Circles with your typical radius and place "
+"them in corners and other locations where your main-line will make changes "
+"of direction. This will give you an overall idea of how your layout will "
+"look.\n"
"\n"
"You can create Circles by:\n"
" using a fixed radius\n"
" dragging from the Center to edge\n"
" dragging from an edge to the Center\n"
-"You can click on the small button to the left of the Circle command button to change the method."
-msgstr ""
-"Mae Cylchoedd Trac yn darparu ffordd gyflym o weld pa drefniant o draciau fydd yn ffitio yn eich lleoedd cynllun. Creu Cylchoedd gyda'ch radiws nodweddiadol a'u rhoi mewn corneli a lleoliadau eraill lle bydd eich prif reilffordd yn newid cyfeiriad. Bydd hyn yn rhoi syniad cyffredinol i chi o sut y bydd eich cynllun yn edrych.\n"
+"You can click on the small button to the left of the Circle command button "
+"to change the method."
+msgstr ""
+"Mae Cylchoedd Trac yn darparu ffordd gyflym o weld pa drefniant o draciau "
+"fydd yn ffitio yn eich lleoedd cynllun. Creu Cylchoedd gyda'ch radiws "
+"nodweddiadol a'u rhoi mewn corneli a lleoliadau eraill lle bydd eich prif "
+"reilffordd yn newid cyfeiriad. Bydd hyn yn rhoi syniad cyffredinol i chi o "
+"sut y bydd eich cynllun yn edrych.\n"
"\n"
"Gallwch greu Cylchoedd trwy:\n"
"gan ddefnyddio radiws sefydlog\n"
"llusgo o'r Ganolfan i ymyl\n"
"llusgo o ymyl i'r Ganolfan\n"
-"Gallwch glicio ar y botwm bach i'r chwith o'r botwm gorchymyn Circle i newid y dull."
+"Gallwch glicio ar y botwm bach i'r chwith o'r botwm gorchymyn Circle i newid "
+"y dull."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:45
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:34
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:45
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:34
msgid ""
-"Easements (spiral transition curves) are used when track changes from straight to curved by gradually changing the radius. This improves operation and appearance.\n"
+"Easements (spiral transition curves) are used when track changes from "
+"straight to curved by gradually changing the radius. This improves "
+"operation and appearance.\n"
"Easements are created with Joining or Extending Tracks.\n"
"The Easement dialog is used to control easements."
msgstr ""
-"Defnyddir rhwyddiadau (cromliniau pontio troellog) pan fydd trac yn newid o syth i grwm trwy newid y radiws yn raddol. Mae hyn yn gwella gweithrediad ac ymddangosiad.\n"
+"Defnyddir rhwyddiadau (cromliniau pontio troellog) pan fydd trac yn newid o "
+"syth i grwm trwy newid y radiws yn raddol. Mae hyn yn gwella gweithrediad ac "
+"ymddangosiad.\n"
"Mae rhwyddinebau'n cael eu creu gyda Join neu Ymestyn Traciau.\n"
"Defnyddir y dialog Easement i reoli hawddfreintiau."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:49
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:36
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:36
msgid ""
-"\"Help|Recent Messages\" shows the last error and warning messages that were"
-" generated by the program. Also an explanation of each message is "
-"displayed."
+"\"Help|Recent Messages\" shows the last error and warning messages that were "
+"generated by the program. Also an explanation of each message is displayed."
msgstr ""
"Mae \"Help | Negeseuon Diweddar\" yn dangos y gwall olaf a'r negeseuon "
"rhybuddio a gynhyrchwyd gan y rhaglen. Hefyd dangosir esboniad o bob neges."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:51
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:38
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:38
msgid ""
-"When creating stall tracks for a turntable, you usually want the the stall tracks to be spaced evenly.\n"
-"The \"Turntable Angle\" item on \"Options|Preferences\" dialog can be used specify the minimum angle between stall tracks."
+"When creating stall tracks for a turntable, you usually want the the stall "
+"tracks to be spaced evenly.\n"
+"The \"Turntable Angle\" item on \"Options|Preferences\" dialog can be used "
+"specify the minimum angle between stall tracks."
msgstr ""
-"Wrth greu traciau stondinau ar gyfer trofwrdd, rydych chi fel arfer am i'r traciau stondinau gael eu gosod yn gyfartal.\n"
-"Gellir defnyddio'r eitem \"Ongl Turntable\" ar y dialog \"Options | Preferences\" i nodi'r ongl leiaf rhwng traciau stondinau."
+"Wrth greu traciau stondinau ar gyfer trofwrdd, rydych chi fel arfer am i'r "
+"traciau stondinau gael eu gosod yn gyfartal.\n"
+"Gellir defnyddio'r eitem \"Ongl Turntable\" ar y dialog \"Options | "
+"Preferences\" i nodi'r ongl leiaf rhwng traciau stondinau."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:40
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:40
msgid ""
-"XTrackCAD periodically saves the current layout in a check point file. The 'Check Point' item on the 'Options|Preferences' dialog controls how often the file is saved.\n"
-"You can recover your working file after a system crash by copying the checkpoint file (xtrkcad.ckp in the XTrackCAD Working directory) to file.xtc"
+"XTrackCAD periodically saves the current layout in a check point file. The "
+"'Check Point' item on the 'Options|Preferences' dialog controls how often "
+"the file is saved.\n"
+"You can recover your working file after a system crash by copying the "
+"checkpoint file (xtrkcad.ckp in the XTrackCAD Working directory) to file.xtc"
msgstr ""
-"Mae XTrackCAD o bryd i'w gilydd yn arbed y cynllun cyfredol mewn ffeil pwynt gwirio. Mae'r eitem 'Check Point' ar y dialog 'Options | Preferences' yn rheoli pa mor aml mae'r ffeil yn cael ei chadw.\n"
-"Gallwch adfer eich ffeil weithio ar ôl damwain system trwy gopïo'r ffeil bwynt gwirio (xtrkcad.ckp yng nghyfeiriadur Gweithio XTrackCAD) i file.xtc"
+"Mae XTrackCAD o bryd i'w gilydd yn arbed y cynllun cyfredol mewn ffeil pwynt "
+"gwirio. Mae'r eitem 'Check Point' ar y dialog 'Options | Preferences' yn "
+"rheoli pa mor aml mae'r ffeil yn cael ei chadw.\n"
+"Gallwch adfer eich ffeil weithio ar ôl damwain system trwy gopïo'r ffeil "
+"bwynt gwirio (xtrkcad.ckp yng nghyfeiriadur Gweithio XTrackCAD) i file.xtc"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:57
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:42
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:42
msgid ""
"The Parallel command is helpful to layout yards and sidings. If the "
"Parallel track abuts with an existing track, it is automatically connected."
@@ -10668,19 +8582,22 @@ msgstr ""
"trac Cyfochrog yn ffinio â thrac sy'n bodoli eisoes, caiff ei gysylltu'n "
"awtomatig."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:59
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:44
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:59
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:44
msgid ""
-"You can use Shift-Drag in Select command to move and rotate selected tracks.\n"
+"You can use Shift-Drag in Select command to move and rotate selected "
+"tracks.\n"
"Shift-Left-Drag moves tracks and Shift-Right-Drag rotates them.\n"
"Control-Left-Drag can move labels."
msgstr ""
-"Gallwch ddefnyddio gorchymyn Shift-Drag in Select i symud a chylchdroi traciau dethol.\n"
-"Mae Shift-Left-Drag yn symud traciau ac mae Shift-Right-Drag yn eu cylchdroi.\n"
+"Gallwch ddefnyddio gorchymyn Shift-Drag in Select i symud a chylchdroi "
+"traciau dethol.\n"
+"Mae Shift-Left-Drag yn symud traciau ac mae Shift-Right-Drag yn eu "
+"cylchdroi.\n"
"Gall Control-Left-Drag symud labeli."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:46
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:46
msgid ""
"You can move and rotate the Snap Grid to align with existing track or "
"benchwork."
@@ -10688,51 +8605,67 @@ msgstr ""
"Gallwch symud a chylchdroi'r Grid Snap i alinio â'r trac neu'r gwaith meinc "
"presennol."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:65
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:48
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:48
msgid ""
"Use the Parts List command to measure track length.\n"
-"Select the tracks you want to measure and then click on the Parts List button. The report will list the total of length of the selected flex-track. You will have to add in the length of any Turnouts."
+"Select the tracks you want to measure and then click on the Parts List "
+"button. The report will list the total of length of the selected flex-"
+"track. You will have to add in the length of any Turnouts."
msgstr ""
"Defnyddiwch y gorchymyn Rhestr Rhannau i fesur hyd trac.\n"
-"Dewiswch y traciau rydych chi am eu mesur ac yna cliciwch ar y botwm Rhestr Rhannau. Bydd yr adroddiad yn rhestru cyfanswm hyd y trac fflecs a ddewiswyd. Bydd yn rhaid i chi ychwanegu hyd unrhyw Bwyntiau."
+"Dewiswch y traciau rydych chi am eu mesur ac yna cliciwch ar y botwm Rhestr "
+"Rhannau. Bydd yr adroddiad yn rhestru cyfanswm hyd y trac fflecs a "
+"ddewiswyd. Bydd yn rhaid i chi ychwanegu hyd unrhyw Bwyntiau."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:68
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:50
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:68
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:50
msgid ""
-"The length of flex-track attached to each Turnout is displayed on layout near the end-points of the Turnouts.\n"
-"Make sure 'Lengths' option of the 'Label Enable' toggle button on the Display dialog is selected."
+"The length of flex-track attached to each Turnout is displayed on layout "
+"near the end-points of the Turnouts.\n"
+"Make sure 'Lengths' option of the 'Label Enable' toggle button on the "
+"Display dialog is selected."
msgstr ""
-"Mae hyd y trac fflecs sydd ynghlwm wrth bob un sy'n pleidleisio yn cael ei arddangos ar y cynllun ger pwyntiau diwedd y rhai sy'n pleidleisio.\n"
-"Sicrhewch fod opsiwn 'Hyd' y botwm toglo 'Galluogi Label' ar y dialog Arddangos yn cael ei ddewis."
+"Mae hyd y trac fflecs sydd ynghlwm wrth bob un sy'n pleidleisio yn cael ei "
+"arddangos ar y cynllun ger pwyntiau diwedd y rhai sy'n pleidleisio.\n"
+"Sicrhewch fod opsiwn 'Hyd' y botwm toglo 'Galluogi Label' ar y dialog "
+"Arddangos yn cael ei ddewis."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:71
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:52
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:71
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:52
msgid ""
-"The Profile command can be used to find the length of a continous section of track.\n"
-"Select the track at the beginning and end of the section. The total length of track will be displayed on the Profile window in the lower right corner.\n"
-"Note: the Profile selects the shortest path between the two selected tracks, which might not be the path you are interested in. In this case, select the first track and then select other tracks along the path."
+"The Profile command can be used to find the length of a continous section of "
+"track.\n"
+"Select the track at the beginning and end of the section. The total length "
+"of track will be displayed on the Profile window in the lower right corner.\n"
+"Note: the Profile selects the shortest path between the two selected tracks, "
+"which might not be the path you are interested in. In this case, select the "
+"first track and then select other tracks along the path."
msgstr ""
"Gellir defnyddio'r gorchymyn Proffil i ddarganfod hyd darn parhaus o drac.\n"
-"Dewiswch y trac ar ddechrau a diwedd yr adran. Bydd cyfanswm hyd y trac yn cael ei arddangos ar y ffenestr Proffil yn y gornel dde isaf.\n"
-"Sylwch: mae'r Proffil yn dewis y llwybr byrraf rhwng y ddau drac a ddewiswyd, ac efallai nad dyna'r llwybr y mae gennych ddiddordeb ynddo. Yn yr achos hwn, dewiswch y trac cyntaf ac yna dewiswch draciau eraill ar hyd y llwybr."
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:75
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:54
-msgid ""
-"Layers can be used to contain different groups of tracks or other features."
-" You might use one layer for the main-line, another of staging tracks and "
+"Dewiswch y trac ar ddechrau a diwedd yr adran. Bydd cyfanswm hyd y trac yn "
+"cael ei arddangos ar y ffenestr Proffil yn y gornel dde isaf.\n"
+"Sylwch: mae'r Proffil yn dewis y llwybr byrraf rhwng y ddau drac a "
+"ddewiswyd, ac efallai nad dyna'r llwybr y mae gennych ddiddordeb ynddo. Yn "
+"yr achos hwn, dewiswch y trac cyntaf ac yna dewiswch draciau eraill ar hyd y "
+"llwybr."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:54
+msgid ""
+"Layers can be used to contain different groups of tracks or other features. "
+"You might use one layer for the main-line, another of staging tracks and "
"another of benchwork.\n"
msgstr ""
"Gellir defnyddio haenau i gynnwys gwahanol grwpiau o draciau neu nodweddion "
"eraill. Efallai y byddwch chi'n defnyddio un haen ar gyfer y brif "
"reilffordd, un arall o lwybrau llwyfannu ac un arall o waith meinciau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:77
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:56
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:77
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:56
msgid ""
-"You can give each layer a name (by using the \"Manage|Layer\" dialog). This"
-" name will be displayed as the Balloon Help for the corresponding Layer "
+"You can give each layer a name (by using the \"Manage|Layer\" dialog). This "
+"name will be displayed as the Balloon Help for the corresponding Layer "
"button, if you have Balloon Help enabled on the \"Options|Display\" dialog."
msgstr ""
"Gallwch chi roi enw i bob haen (trwy ddefnyddio'r ymgom \"Rheoli | Haen\"). "
@@ -10740,29 +8673,36 @@ msgstr ""
"Haen cyfatebol, os oes gennych Gymorth Balŵn wedi'i alluogi ar y dialog "
"\"Dewisiadau | Arddangos\"."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:79
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:58
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:79
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:58
msgid ""
-"You can remove groups of buttons or the Hot Bar from the Main window to give"
-" you more room if you are not using some features. Also, the number of "
-"Layer buttons displayed is controlled by the \"Manage|Layers\" dialog."
+"You can remove groups of buttons or the Hot Bar from the Main window to give "
+"you more room if you are not using some features. Also, the number of Layer "
+"buttons displayed is controlled by the \"Manage|Layers\" dialog."
msgstr ""
"Gallwch chi dynnu grwpiau o fotymau neu'r Bar Poeth o'r Brif ffenestr i roi "
"mwy o le i chi os nad ydych chi'n defnyddio rhai nodweddion. Hefyd, rheolir "
"nifer y botymau Haen sy'n cael eu harddangos gan y dialog \"Rheoli | "
"Haenau\"."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:81
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:60
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:60
msgid ""
-"The size of the map window is controlled by the overall size of the room (specified on the layout dialog) and the map scale (on the display dialog). You can make the Map window larger (or smaller) by decreasing (or increasing) the map scale.\n"
+"The size of the map window is controlled by the overall size of the room "
+"(specified on the layout dialog) and the map scale (on the display dialog). "
+"You can make the Map window larger (or smaller) by decreasing (or "
+"increasing) the map scale.\n"
"XTrackCad will prevent you from making the map window too small or too large."
msgstr ""
-"Mae maint ffenestr y map yn cael ei reoli gan faint cyffredinol yr ystafell (a nodir ar y dialog cynllun) a graddfa'r map (ar y dialog arddangos). Gallwch wneud ffenestr y Map yn fwy (neu'n llai) trwy ostwng (neu gynyddu) graddfa'r map.\n"
-"Bydd XTrackCad yn eich atal rhag gwneud ffenestr y map yn rhy fach neu'n rhy fawr."
+"Mae maint ffenestr y map yn cael ei reoli gan faint cyffredinol yr ystafell "
+"(a nodir ar y dialog cynllun) a graddfa'r map (ar y dialog arddangos). "
+"Gallwch wneud ffenestr y Map yn fwy (neu'n llai) trwy ostwng (neu gynyddu) "
+"graddfa'r map.\n"
+"Bydd XTrackCad yn eich atal rhag gwneud ffenestr y map yn rhy fach neu'n rhy "
+"fawr."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:84
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:62
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:62
msgid ""
"You can unload parameter files you are not using by the Parameter Files "
"dialog. This removes unused Turnout and Structure definitions from the Hot "
@@ -10772,8 +8712,8 @@ msgstr ""
"Parameter Files. Mae hyn yn dileu diffiniadau Pwynt a Strwythur nas "
"defnyddiwyd o'r Bar Poeth ac yn gwneud i'r rhaglen gychwyn yn gyflymach."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:86
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:64
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:64
msgid ""
"Right-Click on the Main window displays a menu list of commands as an "
"alternative to pressing the buttons on the tool bar or using the menu "
@@ -10783,8 +8723,8 @@ msgstr ""
"dewis arall yn lle pwyso'r botymau ar y bar offer neu ddefnyddio'r bysellau "
"cyflymydd dewislen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:87
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:66
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:87
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:66
msgid ""
"Holding down the Shift key while you Right-Click will display options for "
"the current command (if any)."
@@ -10792,26 +8732,36 @@ msgstr ""
"Bydd dal y fysell Shift i lawr tra'ch De-gliciwch yn dangos opsiynau ar "
"gyfer y gorchymyn cyfredol (os oes rhai)."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:89
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:68
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:89
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:68
msgid ""
-"Right-Click on the Hot Bar displays a menu of the different groups of objects which you can use to jump to the group you are interested in.\n"
-"Pressing a numeric key (1-9 and 0) moves the Hot Bar to corresponding position (1 is the start, 5 is half way, 0 is the end)."
+"Right-Click on the Hot Bar displays a menu of the different groups of "
+"objects which you can use to jump to the group you are interested in.\n"
+"Pressing a numeric key (1-9 and 0) moves the Hot Bar to corresponding "
+"position (1 is the start, 5 is half way, 0 is the end)."
msgstr ""
-"Mae De-gliciwch ar y Bar Poeth yn dangos bwydlen o'r gwahanol grwpiau o wrthrychau y gallwch eu defnyddio i neidio i'r grŵp y mae gennych ddiddordeb ynddo.\n"
-"Mae gwasgu allwedd rifol (1-9 a 0) yn symud y Bar Poeth i'r safle cyfatebol (1 yw'r dechrau, 5 yn hanner ffordd, 0 yw'r diwedd)."
+"Mae De-gliciwch ar y Bar Poeth yn dangos bwydlen o'r gwahanol grwpiau o "
+"wrthrychau y gallwch eu defnyddio i neidio i'r grŵp y mae gennych ddiddordeb "
+"ynddo.\n"
+"Mae gwasgu allwedd rifol (1-9 a 0) yn symud y Bar Poeth i'r safle cyfatebol "
+"(1 yw'r dechrau, 5 yn hanner ffordd, 0 yw'r diwedd)."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:92
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:70
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:92
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:70
msgid ""
"Right-Drag on the Map window sets the origin and scale of the Main window.\n"
-"The Main window will be centered on the spot where you started the Draw and how far you Drag will control how large an area you can see on the Main window."
+"The Main window will be centered on the spot where you started the Draw and "
+"how far you Drag will control how large an area you can see on the Main "
+"window."
msgstr ""
-"Mae ffenestr Right-Drag on the Map yn gosod tarddiad a graddfa'r Brif ffenestr.\n"
-"Bydd y Brif ffenestr wedi'i chanoli yn y fan a'r lle y gwnaethoch chi ddechrau'r Draw a pha mor bell y byddwch chi'n Llusgo fydd yn rheoli pa mor fawr y gallwch chi weld ardal ar y Brif ffenestr."
+"Mae ffenestr Right-Drag on the Map yn gosod tarddiad a graddfa'r Brif "
+"ffenestr.\n"
+"Bydd y Brif ffenestr wedi'i chanoli yn y fan a'r lle y gwnaethoch chi "
+"ddechrau'r Draw a pha mor bell y byddwch chi'n Llusgo fydd yn rheoli pa mor "
+"fawr y gallwch chi weld ardal ar y Brif ffenestr."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:95
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:72
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:95
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:72
msgid ""
"To refresh the Main window, press Control-L (hold down the 'Ctrl' key and "
"then press the 'l' key)."
@@ -10819,27 +8769,27 @@ msgstr ""
"I adnewyddu'r Brif ffenestr, pwyswch Control-L (daliwch y fysell 'Ctrl' i "
"lawr ac yna pwyswch y fysell 'l')."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:97
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:74
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:97
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:74
msgid ""
"The File menu contains a list of the last 5 layouts you were working on."
msgstr ""
"Mae'r ddewislen Ffeil yn cynnwys rhestr o'r 5 cynllun diwethaf yr oeddech "
"chi'n gweithio arnyn nhw."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:99
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:76
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:76
msgid ""
"The Print command can optionally print lines representing the roadbed for "
"all tracks. This is useful when printing full size (1:1) for cutting "
"roadbed."
msgstr ""
-"Gall y gorchymyn Argraffu argraffu llinellau sy'n cynrychioli'r gwely ffordd"
-" ar gyfer pob trac yn ddewisol. Mae hyn yn ddefnyddiol wrth argraffu maint "
+"Gall y gorchymyn Argraffu argraffu llinellau sy'n cynrychioli'r gwely ffordd "
+"ar gyfer pob trac yn ddewisol. Mae hyn yn ddefnyddiol wrth argraffu maint "
"llawn (1: 1) ar gyfer torri gwely ffordd."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:101
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:78
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:101
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:78
msgid ""
"Pressing the 'Esc' key cancels the current command and invokes the default "
"command, (which is either Describe or Select)."
@@ -10847,204 +8797,242 @@ msgstr ""
"Mae gwasgu'r allwedd 'Esc' yn canslo'r gorchymyn cyfredol ac yn galw'r "
"gorchymyn diofyn, (sydd naill ai'n Disgrifio neu'n Dewis)."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:103
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:80
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:103
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:80
msgid ""
-"When moving or rotating tracks on slow machines or with a large number of tracks, you can improve performance by changing the way tracks are drawn while being moved.\n"
-"Shift-Right click will display a menu containing options to draw tracks normally, as simple lines or just draw end-points."
+"When moving or rotating tracks on slow machines or with a large number of "
+"tracks, you can improve performance by changing the way tracks are drawn "
+"while being moved.\n"
+"Shift-Right click will display a menu containing options to draw tracks "
+"normally, as simple lines or just draw end-points."
msgstr ""
-"Wrth symud neu gylchdroi traciau ar beiriannau araf neu gyda nifer fawr o draciau, gallwch wella perfformiad trwy newid y ffordd y mae traciau'n cael eu tynnu wrth gael eu symud.\n"
-"Bydd Shift-Right click yn dangos bwydlen sy'n cynnwys opsiynau i dynnu traciau fel arfer, fel llinellau syml neu ddim ond tynnu pwyntiau gorffen."
+"Wrth symud neu gylchdroi traciau ar beiriannau araf neu gyda nifer fawr o "
+"draciau, gallwch wella perfformiad trwy newid y ffordd y mae traciau'n cael "
+"eu tynnu wrth gael eu symud.\n"
+"Bydd Shift-Right click yn dangos bwydlen sy'n cynnwys opsiynau i dynnu "
+"traciau fel arfer, fel llinellau syml neu ddim ond tynnu pwyntiau gorffen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:106
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:82
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:106
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:82
msgid ""
"The colors of different parts of the Main window can be changed with the "
-"Colors dialog. In particular, the Snap Grid color can be changed to make it"
-" more visible when printed."
+"Colors dialog. In particular, the Snap Grid color can be changed to make it "
+"more visible when printed."
msgstr ""
-"Gellir newid lliwiau gwahanol rannau o'r Brif ffenestr gyda'r ymgom Lliwiau."
-" Yn benodol, gellir newid lliw Snap Grid i'w wneud yn fwy gweladwy wrth ei "
+"Gellir newid lliwiau gwahanol rannau o'r Brif ffenestr gyda'r ymgom Lliwiau. "
+"Yn benodol, gellir newid lliw Snap Grid i'w wneud yn fwy gweladwy wrth ei "
"argraffu."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:108
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:84
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:108
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:84
msgid ""
-"By default objects are drawn in their normal colors. Tracks will be drawn in Black. Objects can also be drawn in the color according to their Layer. The color of a Layer is displayed on the corresponding Layer button.\n"
-"The Display dialog 'Color Layers' item has separate toggles for Tracks and non-Tracks."
+"By default objects are drawn in their normal colors. Tracks will be drawn "
+"in Black. Objects can also be drawn in the color according to their Layer. "
+"The color of a Layer is displayed on the corresponding Layer button.\n"
+"The Display dialog 'Color Layers' item has separate toggles for Tracks and "
+"non-Tracks."
msgstr ""
-"Yn ddiofyn tynnir gwrthrychau yn eu lliwiau arferol. Bydd traciau'n cael eu tynnu mewn Du. Gellir tynnu gwrthrychau hefyd yn y lliw yn ôl eu Haen. Arddangosir lliw Haen ar y botwm Haen cyfatebol.\n"
-"Mae gan yr eitem deialog Arddangos 'Haenau Lliw' toglau ar wahân ar gyfer Traciau a rhai nad ydynt yn Draciau."
+"Yn ddiofyn tynnir gwrthrychau yn eu lliwiau arferol. Bydd traciau'n cael eu "
+"tynnu mewn Du. Gellir tynnu gwrthrychau hefyd yn y lliw yn ôl eu Haen. "
+"Arddangosir lliw Haen ar y botwm Haen cyfatebol.\n"
+"Mae gan yr eitem deialog Arddangos 'Haenau Lliw' toglau ar wahân ar gyfer "
+"Traciau a rhai nad ydynt yn Draciau."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:111
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:86
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:111
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:86
msgid ""
"Each Layer can be drawn or hidden by the 'Visible' toggle on the Layers "
"dialog."
msgstr ""
"Gellir tynnu neu guddio pob Haen gan y togl 'Gweladwy' ar y dialog Haenau."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:112
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:88
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:88
msgid ""
-"Short cut Layer buttons can also be displayed on the tool bar for up to the first 20 layers.\n"
+"Short cut Layer buttons can also be displayed on the tool bar for up to the "
+"first 20 layers.\n"
"This buttons allow to Show or Hide the layers."
msgstr ""
-"Gellir arddangos botymau Haen wedi'u torri'n fyr hefyd ar y bar offer ar gyfer hyd at yr 20 haen gyntaf.\n"
+"Gellir arddangos botymau Haen wedi'u torri'n fyr hefyd ar y bar offer ar "
+"gyfer hyd at yr 20 haen gyntaf.\n"
"Mae'r botymau hyn yn caniatáu i Ddangos neu Guddio'r haenau."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:115
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:90
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:115
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:90
msgid "The name of the Layer is the Balloon Help for the Layer button."
msgstr "Enw'r Haen yw'r botwm Cymorth Balŵn ar gyfer yr Haen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:117
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:92
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:92
msgid ""
-"The playback speed of the Demos can be changed by using Speed drop down list"
-" on the Demo window."
+"The playback speed of the Demos can be changed by using Speed drop down list "
+"on the Demo window."
msgstr ""
-"Gellir newid cyflymder chwarae'r Demos trwy ddefnyddio rhestr ostwng Speed "
-"​​ar y ffenestr Demo."
+"Gellir newid cyflymder chwarae'r Demos trwy ddefnyddio rhestr ostwng Speed ​​"
+"ar y ffenestr Demo."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:119
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:94
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:119
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:94
msgid ""
"Many of the commands and dialogs can be invoked by special key combinations "
-"called Menu-Accelerators. These are listed on the Menus next to the command"
-" name. For example, Control-P will invoke the Print command."
+"called Menu-Accelerators. These are listed on the Menus next to the command "
+"name. For example, Control-P will invoke the Print command."
msgstr ""
"Gellir defnyddio llawer o'r gorchmynion a'r deialogau gan gyfuniadau "
"allweddol arbennig o'r enw Cyflymyddion Dewislen. Rhestrir y rhain ar y "
"Bwydlenni wrth ymyl yr enw gorchymyn. Er enghraifft, bydd Control-P yn "
"galw'r gorchymyn Argraffu."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:121
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:96
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:121
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:96
msgid ""
-"The Connect command is used to join Sectional track pieces that don't quite fit together.\n"
-"This command works by adding small gaps between other tracks to move the selected End-Points closer together."
+"The Connect command is used to join Sectional track pieces that don't quite "
+"fit together.\n"
+"This command works by adding small gaps between other tracks to move the "
+"selected End-Points closer together."
msgstr ""
-"Defnyddir y gorchymyn Connect i ymuno â darnau trac Adrannol nad ydyn nhw'n cyd-fynd â'i gilydd.\n"
-"Mae'r gorchymyn hwn yn gweithio trwy ychwanegu bylchau bach rhwng traciau eraill i symud y Pwyntiau Diwedd a ddewiswyd yn agosach at ei gilydd."
+"Defnyddir y gorchymyn Connect i ymuno â darnau trac Adrannol nad ydyn nhw'n "
+"cyd-fynd â'i gilydd.\n"
+"Mae'r gorchymyn hwn yn gweithio trwy ychwanegu bylchau bach rhwng traciau "
+"eraill i symud y Pwyntiau Diwedd a ddewiswyd yn agosach at ei gilydd."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:124
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:98
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:124
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:98
msgid ""
-"To copy a group of objects: Select the objects, press Control-c (or select Copy from the Edit menu), press Control-v (or select Paste from the Edit menu).\n"
-"The selected tracks will be copied to the layout and you can Move or Rotate them into position."
+"To copy a group of objects: Select the objects, press Control-c (or select "
+"Copy from the Edit menu), press Control-v (or select Paste from the Edit "
+"menu).\n"
+"The selected tracks will be copied to the layout and you can Move or Rotate "
+"them into position."
msgstr ""
-"I gopïo grŵp o wrthrychau: Dewiswch y gwrthrychau, pwyswch Control-c (neu dewiswch Copi o'r ddewislen Golygu), pwyswch Control-v (neu dewiswch Gludo o'r ddewislen Golygu).\n"
-"Bydd y traciau a ddewiswyd yn cael eu copïo i'r cynllun a gallwch eu Symud neu eu Cylchdroi i'w safle."
+"I gopïo grŵp o wrthrychau: Dewiswch y gwrthrychau, pwyswch Control-c (neu "
+"dewiswch Copi o'r ddewislen Golygu), pwyswch Control-v (neu dewiswch Gludo "
+"o'r ddewislen Golygu).\n"
+"Bydd y traciau a ddewiswyd yn cael eu copïo i'r cynllun a gallwch eu Symud "
+"neu eu Cylchdroi i'w safle."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:127
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:100
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:127
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:100
msgid ""
"In the Rotate (or Select) commands you can press Shift-Right-Click to "
-"display the Rotate menu which allows you to rotate the selected objects by a"
-" specific angle."
+"display the Rotate menu which allows you to rotate the selected objects by a "
+"specific angle."
msgstr ""
"Yn y gorchmynion Cylchdroi (neu Dewis) gallwch bwyso Shift-Right-Click i "
-"arddangos y ddewislen Cylchdroi sy'n eich galluogi i gylchdroi'r gwrthrychau"
-" a ddewiswyd ar ongl benodol."
+"arddangos y ddewislen Cylchdroi sy'n eich galluogi i gylchdroi'r gwrthrychau "
+"a ddewiswyd ar ongl benodol."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:129
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:102
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:129
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:102
msgid ""
-"You can use the Move-To-Join option of the Join command (hold down the Shift"
-" key) to move a group of Selected tracks to attach with some unselected End-"
+"You can use the Move-To-Join option of the Join command (hold down the Shift "
+"key) to move a group of Selected tracks to attach with some unselected End-"
"Point."
msgstr ""
"Gallwch ddefnyddio'r opsiwn Symud-i-Ymuno o'r gorchymyn Ymuno (dal y fysell "
"Shift i lawr) i symud grŵp o draciau Dethol i'w atodi gyda rhywfaint o End-"
"Point heb ei ddewis."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:131
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:104
-msgid ""
-"The Price List dialog (on the File Menu) is used to specify the prices of each type of Turnout, Sectional Track and Structure. Also, the length and price of flex-track pieces can be specified for each scale.\n"
-"This values will be used on the Parts List report to generate total cost of the selected objects."
-msgstr ""
-"Defnyddir deialog y Rhestr Brisiau (ar y Ddewislen Ffeil) i nodi prisiau pob math o Bwynt, Trac Adrannol a Strwythur. Hefyd, gellir nodi hyd a phris darnau trac hyblyg ar gyfer pob graddfa.\n"
-"Defnyddir y gwerthoedd hyn yn yr adroddiad Rhestr Rhannau i gynhyrchu cyfanswm cost y gwrthrychau a ddewiswyd."
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:134
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:106
-msgid ""
-"Areas of water can represented by a Polygon (use the Draw command) of the appropiate color.\n"
-"By using the Modify command, you can move, add or remove corners of the Polygon to fit the shape of the water.\n"
-"You use the Below command to place the Polygon below (or behind) other objects.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:104
+msgid ""
+"The Price List dialog (on the File Menu) is used to specify the prices of "
+"each type of Turnout, Sectional Track and Structure. Also, the length and "
+"price of flex-track pieces can be specified for each scale.\n"
+"This values will be used on the Parts List report to generate total cost of "
+"the selected objects."
+msgstr ""
+"Defnyddir deialog y Rhestr Brisiau (ar y Ddewislen Ffeil) i nodi prisiau pob "
+"math o Bwynt, Trac Adrannol a Strwythur. Hefyd, gellir nodi hyd a phris "
+"darnau trac hyblyg ar gyfer pob graddfa.\n"
+"Defnyddir y gwerthoedd hyn yn yr adroddiad Rhestr Rhannau i gynhyrchu "
+"cyfanswm cost y gwrthrychau a ddewiswyd."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:134
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:106
+msgid ""
+"Areas of water can represented by a Polygon (use the Draw command) of the "
+"appropiate color.\n"
+"By using the Modify command, you can move, add or remove corners of the "
+"Polygon to fit the shape of the water.\n"
+"You use the Below command to place the Polygon below (or behind) other "
+"objects.\n"
"\n"
"You can also use a Polygon to represent aisles."
msgstr ""
-"Gall ardaloedd o ddŵr gael eu cynrychioli gan Polygon (defnyddiwch y gorchymyn Draw) o'r lliw priodol.\n"
-"Trwy ddefnyddio'r gorchymyn Addasu, gallwch symud, ychwanegu neu dynnu corneli o'r Polygon i ffitio siâp y dŵr.\n"
-"Rydych chi'n defnyddio'r gorchymyn Isod i osod y Polygon o dan (neu y tu ôl) gwrthrychau eraill.\n"
+"Gall ardaloedd o ddŵr gael eu cynrychioli gan Polygon (defnyddiwch y "
+"gorchymyn Draw) o'r lliw priodol.\n"
+"Trwy ddefnyddio'r gorchymyn Addasu, gallwch symud, ychwanegu neu dynnu "
+"corneli o'r Polygon i ffitio siâp y dŵr.\n"
+"Rydych chi'n defnyddio'r gorchymyn Isod i osod y Polygon o dan (neu y tu ôl) "
+"gwrthrychau eraill.\n"
"\n"
"Gallwch hefyd ddefnyddio Polygon i gynrychioli eiliau."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:140
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:108
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:140
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:108
msgid ""
-"When you create Benchwork you can move it below other objects by Selecting the Benchwork and use the Below command.\n"
+"When you create Benchwork you can move it below other objects by Selecting "
+"the Benchwork and use the Below command.\n"
"Also, put Benchwork in a separate Layer so you can hide it if desired."
msgstr ""
-"Pan fyddwch chi'n creu Baseboards gallwch ei symud o dan wrthrychau eraill trwy Dewis y Byrddau Sylfaen a defnyddio'r gorchymyn Isod.\n"
-"Hefyd, rhowch Benchwork mewn Haen ar wahân fel y gallwch ei guddio os dymunir."
+"Pan fyddwch chi'n creu Baseboards gallwch ei symud o dan wrthrychau eraill "
+"trwy Dewis y Byrddau Sylfaen a defnyddio'r gorchymyn Isod.\n"
+"Hefyd, rhowch Benchwork mewn Haen ar wahân fel y gallwch ei guddio os "
+"dymunir."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:143
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:110
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:143
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:110
msgid ""
"You can enter Distances and Lengths using any format regardless of the "
"Length Format on the Preferences dialog."
msgstr ""
-"Gallwch nodi Pellteroedd a Hyd gan ddefnyddio unrhyw fformat waeth beth yw'r"
-" Fformat Hyd ar y dialog Dewisiadau."
+"Gallwch nodi Pellteroedd a Hyd gan ddefnyddio unrhyw fformat waeth beth yw'r "
+"Fformat Hyd ar y dialog Dewisiadau."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:144
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:112
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:112
msgid ""
-"You can enter Metric values when English is the default Units and vice "
-"versa."
+"You can enter Metric values when English is the default Units and vice versa."
msgstr ""
"Gallwch nodi gwerthoedd Metric pan mai'r Saesneg yw'r Unedau diofyn ac i'r "
"gwrthwyneb."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:146
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:114
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:146
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:114
msgid ""
"When entering Distances and Lengths you can press the '=' key to redisplay "
"the value in the default format."
msgstr ""
-"Wrth nodi Pellteroedd a Hyd gallwch bwyso'r fysell '=' i ailddangos y gwerth"
-" yn y fformat diofyn."
+"Wrth nodi Pellteroedd a Hyd gallwch bwyso'r fysell '=' i ailddangos y gwerth "
+"yn y fformat diofyn."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:147
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:116
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:147
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:116
msgid ""
-"You can also press the 's' key to convert a Prototype measurement to a Scale"
-" measurement by dividing by the ratio for the current scale."
+"You can also press the 's' key to convert a Prototype measurement to a Scale "
+"measurement by dividing by the ratio for the current scale."
msgstr ""
"Gallwch hefyd wasgu'r allwedd 's' i drosi mesuriad Prototeip i fesuriad "
"Graddfa trwy rannu â'r gymhareb ar gyfer y raddfa gyfredol."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:148
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:118
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:118
msgid ""
"The 'p' key will convert a Scale measurement to a Prototype measurement."
msgstr "Bydd yr allwedd 'p' yn trosi mesuriad Graddfa i fesuriad Prototeip."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:150
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:120
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:150
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:120
msgid ""
-"You can place cars on the layout using the Train Simulation command to check"
-" clearance points, track to track separation and coupling."
+"You can place cars on the layout using the Train Simulation command to check "
+"clearance points, track to track separation and coupling."
msgstr ""
"Gallwch chi osod ceir ar y cynllun gan ddefnyddio'r gorchymyn Efelychu Trên "
"i wirio pwyntiau clirio, olrhain i olrhain gwahanu a chyplu."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:152
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:122
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:152
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:122
msgid ""
"Use the MoveTo button on the Custom Management dialog to move your custom "
"Turnout, Structure and Car definitions to a .XTP parameter file."
@@ -11052,8 +9040,8 @@ msgstr ""
"Defnyddiwch y botwm MoveTo ar y dialog Rheoli Custom i symud eich "
"diffiniadau Pwynt, Strwythur a Char arferol i ffeil paramedr .XTP."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:154
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:124
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:154
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:124
msgid ""
"If you are printing multiple pages on a continuous feed printer (such a Dot "
"Matrix) you can change the Page Order if necessary to print pages out in "
@@ -11063,8 +9051,8 @@ msgstr ""
"Matrix o'r fath) gallwch newid y Gorchymyn Tudalen os oes angen i argraffu "
"tudalennau mewn trefn gywir."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:156
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:126
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:126
msgid ""
"On the Car Item and Car Part dialogs, you can enter custom values for "
"Manufacturer, Part and Road by typing the new value directly into the Drop "
@@ -11074,17 +9062,22 @@ msgstr ""
"Gwneuthurwr, Rhan a Ffordd trwy deipio'r gwerth newydd yn uniongyrchol i'r "
"Rhestr Gostwng."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:158
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:128
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:128
msgid ""
-"On the Car Item dialog, you can change the Road, Number, Color and other values for a Car. This is useful if you repaint or renumber a car. \n"
-"You can also change the Coupler Mounting and Coupler Length if you change the couplers."
+"On the Car Item dialog, you can change the Road, Number, Color and other "
+"values for a Car. This is useful if you repaint or renumber a car. \n"
+"You can also change the Coupler Mounting and Coupler Length if you change "
+"the couplers."
msgstr ""
-"Ar y dialog Eitem Car, gallwch newid y Ffordd, Rhif, Lliw a gwerthoedd eraill ar gyfer Car. Mae hyn yn ddefnyddiol os ydych chi'n ail-baentio neu'n ail-rifo car.\n"
-"Gallwch hefyd newid Hyd y Coupler Mounting and Coupler Hyd os byddwch chi'n newid y cwplwyr."
+"Ar y dialog Eitem Car, gallwch newid y Ffordd, Rhif, Lliw a gwerthoedd "
+"eraill ar gyfer Car. Mae hyn yn ddefnyddiol os ydych chi'n ail-baentio neu'n "
+"ail-rifo car.\n"
+"Gallwch hefyd newid Hyd y Coupler Mounting and Coupler Hyd os byddwch chi'n "
+"newid y cwplwyr."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:161
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:130
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:161
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:130
msgid ""
"You can Export your Car Inventory to a file in Comma-Separated-Value format "
"which can be read by most spread-sheet programs."
@@ -11092,22 +9085,26 @@ msgstr ""
"Gallwch Allforio eich Rhestr Car i ffeil ar ffurf Gwerth Coma-Separated-"
"Value y gellir ei ddarllen gan y mwyafrif o raglenni taenlen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:163
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:132
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:132
msgid "Use the Train Odometer to measure distances along the track."
msgstr "Defnyddiwch yr Odomedr Trên i fesur pellteroedd ar hyd y trac."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:165
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:134
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:134
msgid ""
-"Holding down the Shift key when clicking the Zoom In or Zoom Out button will zoom to a programmed Drawing Scale. \n"
-"Holding down the Shift and Control keys when clicking a Zoom button will set it's program Zoom to the current Drawing Scale."
+"Holding down the Shift key when clicking the Zoom In or Zoom Out button will "
+"zoom to a programmed Drawing Scale. \n"
+"Holding down the Shift and Control keys when clicking a Zoom button will set "
+"it's program Zoom to the current Drawing Scale."
msgstr ""
-"Bydd dal y fysell Shift i lawr wrth glicio ar y botwm Zoom In neu Zoom Out yn chwyddo i Raddfa Lluniadu wedi'i rhaglennu.\n"
-"Bydd dal y bysellau Shift and Control i lawr wrth glicio botwm Zoom yn gosod ei raglen Chwyddo i'r Raddfa Lluniadu gyfredol."
+"Bydd dal y fysell Shift i lawr wrth glicio ar y botwm Zoom In neu Zoom Out "
+"yn chwyddo i Raddfa Lluniadu wedi'i rhaglennu.\n"
+"Bydd dal y bysellau Shift and Control i lawr wrth glicio botwm Zoom yn gosod "
+"ei raglen Chwyddo i'r Raddfa Lluniadu gyfredol."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:168
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:136
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:168
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:136
msgid ""
"You can trim the ends of turnouts by holding down the Shift key when using "
"the Split command."
@@ -11115,28 +9112,34 @@ msgstr ""
"Gallwch docio pennau'r nifer sy'n pleidleisio trwy ddal y fysell Shift i "
"lawr wrth ddefnyddio'r gorchymyn Hollti."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:170
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:138
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:138
msgid ""
-"The Split command can be used to create Block Gaps at end points between two tracks. \n"
+"The Split command can be used to create Block Gaps at end points between two "
+"tracks. \n"
"Either rail or both rails can be gapped, which are drawn as thick lines."
msgstr ""
-"Gellir defnyddio'r gorchymyn Hollti i greu Bylchau Bloc ar bwyntiau diwedd rhwng dau drac.\n"
-"Gellir tapio naill ai rheilen neu'r ddwy reilffordd, sy'n cael eu tynnu fel llinellau trwchus."
+"Gellir defnyddio'r gorchymyn Hollti i greu Bylchau Bloc ar bwyntiau diwedd "
+"rhwng dau drac.\n"
+"Gellir tapio naill ai rheilen neu'r ddwy reilffordd, sy'n cael eu tynnu fel "
+"llinellau trwchus."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:173
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:140
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:173
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:140
msgid ""
-"Trains will 'crash' if they hit another car when travelling faster than the 'Max Coupling Speed' (on the Command Options dialog). \n"
-"They will also 'crash' if they hit the end of the track or an open turnout. \n"
+"Trains will 'crash' if they hit another car when travelling faster than the "
+"'Max Coupling Speed' (on the Command Options dialog). \n"
+"They will also 'crash' if they hit the end of the track or an open "
+"turnout. \n"
"Crashed trains must be manually moved back onto the track."
msgstr ""
-"Bydd trenau'n 'damwain' os ydyn nhw'n taro car arall wrth deithio'n gyflymach na'r 'Max Coupling Speed' (ar y dialog Dewisiadau Gorchymyn).\n"
+"Bydd trenau'n 'damwain' os ydyn nhw'n taro car arall wrth deithio'n "
+"gyflymach na'r 'Max Coupling Speed' (ar y dialog Dewisiadau Gorchymyn).\n"
"Byddant hefyd yn 'damwain' os byddant yn taro pen y trac neu bwynt agored.\n"
"Rhaid symud trenau sydd wedi cwympo yn ôl i'r trac â llaw."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:177
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:142
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:177
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:142
msgid ""
"You can add new track segments to a turnout definition or create a "
"definition from individual tracks using the Group command."
@@ -11144,72 +9147,83 @@ msgstr ""
"Gallwch ychwanegu segmentau trac newydd at ddiffiniad a bleidleisiodd neu "
"greu diffiniad o draciau unigol gan ddefnyddio'r gorchymyn Grŵp."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:179
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:144
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:179
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:144
msgid ""
-"The center point and radius of Curved and Circle tracks can optionally be drawn. \n"
-"This feature is toggled by using the Move Label command and doing a Shift-Left-Click on the track."
+"The center point and radius of Curved and Circle tracks can optionally be "
+"drawn. \n"
+"This feature is toggled by using the Move Label command and doing a Shift-"
+"Left-Click on the track."
msgstr ""
"Gellir dewis canolbwynt a radiws traciau Crwm a Chylch yn ddewisol.\n"
-"Mae'r nodwedd hon wedi'i thynnu trwy ddefnyddio'r gorchymyn Move Label a gwneud Shift-Left-Click ar y trac."
+"Mae'r nodwedd hon wedi'i thynnu trwy ddefnyddio'r gorchymyn Move Label a "
+"gwneud Shift-Left-Click ar y trac."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:182
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:146
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:146
msgid ""
-"Turnout, Curved and Helix track labels can be individually turned on and off"
-" by doing a Shift-Right-Click on the track when using the Move Label "
-"command."
+"Turnout, Curved and Helix track labels can be individually turned on and off "
+"by doing a Shift-Right-Click on the track when using the Move Label command."
msgstr ""
"Gellir troi labeli trac Pwynt, Crwm a Helix ymlaen ac i ffwrdd yn unigol "
"trwy wneud Shift-Right-Click ar y trac wrth ddefnyddio'r gorchymyn Move "
"Label."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:184
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:148
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:148
msgid ""
"You can use the Describe command to change the font size of Text objects."
msgstr ""
"Gallwch ddefnyddio'r gorchymyn Disgrifio i newid maint ffont gwrthrychau "
"Testun."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:186
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:150
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:186
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:150
msgid ""
-"You can use the Describe command to change the size of Dimension Line "
-"labels."
+"You can use the Describe command to change the size of Dimension Line labels."
msgstr ""
"Gallwch ddefnyddio'r gorchymyn Disgrifio i newid maint labeli Llinell "
"Dimensiwn."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:188
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:152
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:188
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:152
msgid ""
-"Normally Right-Click displays a popup menu of commands and Shift-Right-Click displays options for the current command. \n"
-"This can reversed by using the Right Click toggle button on the Command Options dialog."
+"Normally Right-Click displays a popup menu of commands and Shift-Right-Click "
+"displays options for the current command. \n"
+"This can reversed by using the Right Click toggle button on the Command "
+"Options dialog."
msgstr ""
-"Fel rheol mae De-gliciwch yn dangos dewislen naidlen o orchmynion ac opsiynau arddangos Shift-Right-Click ar gyfer y gorchymyn cyfredol.\n"
-"Gellir gwrthdroi hyn trwy ddefnyddio'r botwm tocio Cliciwch ar y Dde ar y dialog Dewisiadau Gorchymyn."
+"Fel rheol mae De-gliciwch yn dangos dewislen naidlen o orchmynion ac "
+"opsiynau arddangos Shift-Right-Click ar gyfer y gorchymyn cyfredol.\n"
+"Gellir gwrthdroi hyn trwy ddefnyddio'r botwm tocio Cliciwch ar y Dde ar y "
+"dialog Dewisiadau Gorchymyn."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:191
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:154
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:191
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:154
msgid ""
-"The Align item on the Rotate command options menu will let you Align selected objects with any unselected object. \n"
-"The selected objects are rotated so the first point is parallel to the second point you selected."
+"The Align item on the Rotate command options menu will let you Align "
+"selected objects with any unselected object. \n"
+"The selected objects are rotated so the first point is parallel to the "
+"second point you selected."
msgstr ""
-"Bydd yr eitem Alinio ar ddewislen opsiynau gorchymyn Cylchdroi yn caniatáu ichi Alinio gwrthrychau dethol gydag unrhyw wrthrych nas dewiswyd.\n"
-"Mae'r gwrthrychau a ddewiswyd yn cylchdroi felly mae'r pwynt cyntaf yn gyfochrog â'r ail bwynt a ddewisoch."
+"Bydd yr eitem Alinio ar ddewislen opsiynau gorchymyn Cylchdroi yn caniatáu "
+"ichi Alinio gwrthrychau dethol gydag unrhyw wrthrych nas dewiswyd.\n"
+"Mae'r gwrthrychau a ddewiswyd yn cylchdroi felly mae'r pwynt cyntaf yn "
+"gyfochrog â'r ail bwynt a ddewisoch."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:194
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:156
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:194
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:156
msgid ""
"Print To Bitmap allows you to print the track center line. \n"
-"This is useful if you later print the bitmap full size as a template when laying track."
+"This is useful if you later print the bitmap full size as a template when "
+"laying track."
msgstr ""
"mae argraffu i Bitmap yn caniatáu ichi argraffu llinell ganol y trac.\n"
-"Mae hyn yn ddefnyddiol os byddwch chi'n argraffu'r map did maint llawn yn ddiweddarach fel templed wrth osod trac."
+"Mae hyn yn ddefnyddiol os byddwch chi'n argraffu'r map did maint llawn yn "
+"ddiweddarach fel templed wrth osod trac."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:197
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:158
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:197
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:158
msgid ""
"You can export the selected tracks to a DXF file which can be read by most "
"CAD programs."
@@ -11217,148 +9231,180 @@ msgstr ""
"Gallwch allforio'r traciau a ddewiswyd i ffeil DXF y gall y mwyafrif o "
"raglenni CAD eu darllen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:199
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:160
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:199
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:160
msgid ""
"Lengths and distances can be displayed in a variety of units and formats "
"such as 1' 10 3/4\", 1ft 10.75in or 22.750. In Metric mode, distances can "
"be displayed as millimeters, centimeters or meters. See the Length Format "
"item on the Preferences dialog."
msgstr ""
-"Gellir arddangos hyd a phellteroedd mewn amrywiaeth o unedau a fformatau fel"
-" 1 '10 3/4 \", 1 troedfedd 10.75in neu 22.750. Yn y modd metrig, gellir "
+"Gellir arddangos hyd a phellteroedd mewn amrywiaeth o unedau a fformatau fel "
+"1 '10 3/4 \", 1 troedfedd 10.75in neu 22.750. Yn y modd metrig, gellir "
"arddangos pellteroedd fel milimetrau, centimetrau neu fetrau. Gweler yr "
"eitem Fformat Hyd ar y dialog Dewisiadau."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:201
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:162
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:201
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:162
msgid ""
-"Tracks that are too steep or curve too tightly are drawn in the Exception color (Yellow by default). \n"
+"Tracks that are too steep or curve too tightly are drawn in the Exception "
+"color (Yellow by default). \n"
"This helps to identify potential problem areas. \n"
"The maximum grade and minimum radius are set on the Preferences dialog."
msgstr ""
-"Mae traciau sy'n rhy serth neu'n gromlin yn rhy dynn yn cael eu tynnu yn y lliw Eithriad (Melyn yn ddiofyn).\n"
+"Mae traciau sy'n rhy serth neu'n gromlin yn rhy dynn yn cael eu tynnu yn y "
+"lliw Eithriad (Melyn yn ddiofyn).\n"
"Mae hyn yn helpu i nodi meysydd problem posibl.\n"
"Mae'r radd uchaf a'r radiws lleiaf wedi'u gosod ar y dialog Dewisiadau."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:205
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:164
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:164
msgid ""
"The Flip command produces a mirror-image of the selected tracks. \n"
-"If possible, right-hand turnouts are relabeled as left-hand turnouts (and vice versa)."
+"If possible, right-hand turnouts are relabeled as left-hand turnouts (and "
+"vice versa)."
msgstr ""
-"Mae'r gorchymyn Fflipio yn cynhyrchu delwedd ddrych o'r traciau a ddewiswyd.\n"
-"Os yn bosibl, mae pleidleiswyr ar y dde yn cael eu hail-labelu fel pleidleiswyr ar y chwith (ac i'r gwrthwyneb)."
+"Mae'r gorchymyn Fflipio yn cynhyrchu delwedd ddrych o'r traciau a "
+"ddewiswyd.\n"
+"Os yn bosibl, mae pleidleiswyr ar y dde yn cael eu hail-labelu fel "
+"pleidleiswyr ar y chwith (ac i'r gwrthwyneb)."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:208
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:166
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:208
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:166
msgid ""
-"Then Ungroup command will break turnouts and structures into individual track, line and shape segments. \n"
+"Then Ungroup command will break turnouts and structures into individual "
+"track, line and shape segments. \n"
"You can modify each segment and add new ones. \n"
"Then use the Group command to update the definition."
msgstr ""
-"Yna bydd gorchymyn Ungroup yn torri'r nifer a bleidleisiodd a strwythurau yn segmentau trac, llinell a siâp unigol.\n"
+"Yna bydd gorchymyn Ungroup yn torri'r nifer a bleidleisiodd a strwythurau yn "
+"segmentau trac, llinell a siâp unigol.\n"
"Gallwch addasu pob segment ac ychwanegu rhai newydd.\n"
"Yna defnyddiwch y gorchymyn Grŵp i ddiweddaru'r diffiniad."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:212
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:168
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:212
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:168
msgid "Dimension lines show the distance between two points."
msgstr "Mae llinellau dimensiwn yn dangos y pellter rhwng dau bwynt."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:214
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:170
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:214
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:170
msgid ""
"A variety of Benchwork (rectangular, L-girder and T-girder) can be drawn. \n"
-"Use the Below command to move the Benchwork below the track for proper display."
+"Use the Below command to move the Benchwork below the track for proper "
+"display."
msgstr ""
"Gellir tynnu amrywiaeth o Baseboard (hirsgwar, L-girder a T-girder).\n"
-"Defnyddiwch y gorchymyn Isod i symud y BaseBoard o dan y trac i'w arddangos yn iawn."
+"Defnyddiwch y gorchymyn Isod i symud y BaseBoard o dan y trac i'w arddangos "
+"yn iawn."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:217
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:172
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:217
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:172
msgid ""
-"The Turnout Designer dialogs allow you to specify the width of any attached roadbed. \n"
-"As well, the color and thickness of the lines used to represent the roadbed can be specified."
+"The Turnout Designer dialogs allow you to specify the width of any attached "
+"roadbed. \n"
+"As well, the color and thickness of the lines used to represent the roadbed "
+"can be specified."
msgstr ""
-"Mae'r deialogau Dylunydd Pwynt yn caniatáu ichi nodi lled unrhyw wely ffordd ynghlwm.\n"
-"Yn ogystal, gellir nodi lliw a thrwch y llinellau a ddefnyddir i gynrychioli'r gwely ffordd."
+"Mae'r deialogau Dylunydd Pwynt yn caniatáu ichi nodi lled unrhyw wely ffordd "
+"ynghlwm.\n"
+"Yn ogystal, gellir nodi lliw a thrwch y llinellau a ddefnyddir i "
+"gynrychioli'r gwely ffordd."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:220
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:174
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:220
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:174
msgid ""
-"The Color dialog (on the Options menu) is used to change the color of different objects on the display. \n"
-"You can change the color of the Snap Grid and Borders, as well as Normal, Selected and Exception tracks."
+"The Color dialog (on the Options menu) is used to change the color of "
+"different objects on the display. \n"
+"You can change the color of the Snap Grid and Borders, as well as Normal, "
+"Selected and Exception tracks."
msgstr ""
-"Defnyddir y dialog Lliw (ar y ddewislen Opsiynau) i newid lliw gwahanol wrthrychau ar yr arddangosfa.\n"
-"Gallwch newid lliw y Grid Snap a'r Ffiniau, yn ogystal â thraciau Arferol, Dethol ac Eithriad."
+"Defnyddir y dialog Lliw (ar y ddewislen Opsiynau) i newid lliw gwahanol "
+"wrthrychau ar yr arddangosfa.\n"
+"Gallwch newid lliw y Grid Snap a'r Ffiniau, yn ogystal â thraciau Arferol, "
+"Dethol ac Eithriad."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:223
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:176
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:223
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:176
msgid ""
"You can set the elevation (height) of track end-points. \n"
-"Elevations of intermediate end points can be computed automatically based on the distance to the nearest end points with defined elevations. \n"
+"Elevations of intermediate end points can be computed automatically based on "
+"the distance to the nearest end points with defined elevations. \n"
"Grades can also be displayed at selected end points. \n"
"Please see the Elevations help and demo."
msgstr ""
"Gallwch chi osod drychiad (uchder) pwyntiau diwedd y trac.\n"
-"Gellir cyfrifo drychiadau pwyntiau diwedd canolradd yn awtomatig yn seiliedig ar y pellter i'r pwyntiau gorffen agosaf gyda drychiadau diffiniedig.\n"
+"Gellir cyfrifo drychiadau pwyntiau diwedd canolradd yn awtomatig yn "
+"seiliedig ar y pellter i'r pwyntiau gorffen agosaf gyda drychiadau "
+"diffiniedig.\n"
"Gellir arddangos graddau hefyd mewn mannau gorffen penodol.\n"
"Os gwelwch yn dda gweler yr help a demo Elevations."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:228
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:178
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:228
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:178
msgid ""
-"Once you have elevations on some endpoints, you can use the Profile command to produce an elevation graph. \n"
+"Once you have elevations on some endpoints, you can use the Profile command "
+"to produce an elevation graph. \n"
"The graph shows the selected elevations, grades and distances. \n"
"Please see the Profile help and demo for details."
msgstr ""
-"Ar ôl i chi gael drychiadau ar rai pwyntiau terfyn, gallwch ddefnyddio'r gorchymyn Proffil i gynhyrchu graff drychiad.\n"
+"Ar ôl i chi gael drychiadau ar rai pwyntiau terfyn, gallwch ddefnyddio'r "
+"gorchymyn Proffil i gynhyrchu graff drychiad.\n"
"Mae'r graff yn dangos y drychiadau, y graddau a'r pellteroedd a ddewiswyd.\n"
"Gweler y cymorth Proffil a'r demo am fanylion."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:232
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:232
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:180
msgid ""
"You can draw tracks with wider lines for rails. \n"
"Select the tracks and use Medium or Thick Tracks on the Edit menu."
msgstr ""
"Gallwch dynnu traciau gyda llinellau ehangach ar gyfer rheiliau.\n"
-"Dewiswch y traciau a defnyddio Traciau Canolig neu Drwchus ar y ddewislen Golygu."
+"Dewiswch y traciau a defnyddio Traciau Canolig neu Drwchus ar y ddewislen "
+"Golygu."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:235
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:182
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:235
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:182
msgid ""
"The Helix command is used to create a Helix track. \n"
-"You specify some parameters: height, radius, number of turns, grade and vertical separation between layers. \n"
+"You specify some parameters: height, radius, number of turns, grade and "
+"vertical separation between layers. \n"
"These values are interrelated so changing one value will affect ohers. \n"
-"Then you can place the Helix and join to other tracks as you would a Circle track."
+"Then you can place the Helix and join to other tracks as you would a Circle "
+"track."
msgstr ""
"Defnyddir y gorchymyn Helix i greu trac Helix.\n"
-"Rydych chi'n nodi rhai paramedrau: uchder, radiws, nifer y troadau, gradd a gwahaniad fertigol rhwng haenau.\n"
-"Mae'r gwerthoedd hyn yn gysylltiedig â'i gilydd felly bydd newid un gwerth yn effeithio ar ohers.\n"
-"Yna gallwch chi osod yr Helix ac ymuno â thraciau eraill fel y byddech chi'n ei wneud ar drac Circle."
+"Rydych chi'n nodi rhai paramedrau: uchder, radiws, nifer y troadau, gradd a "
+"gwahaniad fertigol rhwng haenau.\n"
+"Mae'r gwerthoedd hyn yn gysylltiedig â'i gilydd felly bydd newid un gwerth "
+"yn effeithio ar ohers.\n"
+"Yna gallwch chi osod yr Helix ac ymuno â thraciau eraill fel y byddech chi'n "
+"ei wneud ar drac Circle."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:240
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:184
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:240
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:184
msgid ""
-"Many objects on the layout have labels: Turnouts/Helix/Curved Titles, Track Lenghts, End-Point Elevations, Track Elevations and Cars. \n"
-"You can turn these labels on or off with the Label Enable toggle buttons on the Display options dialog."
+"Many objects on the layout have labels: Turnouts/Helix/Curved Titles, Track "
+"Lenghts, End-Point Elevations, Track Elevations and Cars. \n"
+"You can turn these labels on or off with the Label Enable toggle buttons on "
+"the Display options dialog."
msgstr ""
-"Mae labeli ar lawer o wrthrychau ar y cynllun: Turnouts / Helix / Teitlau Crwm, Lenghts Trac, Drychiadau End-Point, Drychiadau Trac a Cheir.\n"
-"Gallwch droi’r labeli hyn ymlaen neu i ffwrdd gyda’r botymau Label Enable toggle ar y dialog opsiynau Arddangos."
+"Mae labeli ar lawer o wrthrychau ar y cynllun: Turnouts / Helix / Teitlau "
+"Crwm, Lenghts Trac, Drychiadau End-Point, Drychiadau Trac a Cheir.\n"
+"Gallwch droi’r labeli hyn ymlaen neu i ffwrdd gyda’r botymau Label Enable "
+"toggle ar y dialog opsiynau Arddangos."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:243
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:186
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:186
msgid ""
-"If you hold down the Control key when using the Rotate command, the rotation"
-" will be done in increments of 15ᅵ."
+"If you hold down the Control key when using the Rotate command, the rotation "
+"will be done in increments of 15ᅵ."
msgstr ""
"Os ydych chi'n dal y fysell Reoli i lawr wrth ddefnyddio'r gorchymyn "
"Cylchdroi, bydd y cylchdro yn cael ei wneud mewn cynyddrannau o 15 gradd."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:245
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:188
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:245
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:188
msgid ""
"When using the Rotate command, Shift-Right-Click displays a menu allowing "
"you to rotate by specific amounts or to align the selected objects with "
@@ -11368,17 +9414,16 @@ msgstr ""
"dewislen sy'n eich galluogi i gylchdroi yn ôl symiau penodol neu alinio'r "
"gwrthrychau a ddewiswyd â gwrthrych arall."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:247
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:190
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:247
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:190
msgid ""
-"This is last tip. If you have any additions or comments, please let us "
-"know."
+"This is last tip. If you have any additions or comments, please let us know."
msgstr ""
"Dyma'r domen olaf. Os oes gennych unrhyw ychwanegiadau neu sylwadau, rhowch "
"wybod i ni."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:25
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:192
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:192
msgid ""
"The unconnected endpoints of a straight or curved track can be changed with "
"the 'Modify Track' command.\n"
@@ -11386,40 +9431,40 @@ msgstr ""
"Gellir newid pwyntiau terfyn digyswllt trac syth neu grwm gyda'r gorchymyn "
"'Modify Track'..\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:31
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:194
msgid ""
-"The endpoint of a straight track is selected and then Left-Dragged to change"
-" its length. A blue anchor shows that the length can be extended.\n"
+"The endpoint of a straight track is selected and then Left-Dragged to change "
+"its length. A blue anchor shows that the length can be extended.\n"
msgstr ""
"Dewisir pwynt terfyn trac syth ac yna Chwith-Llusgir i newid ei hyd. Mae "
"angor glas yn dangos y gellir ymestyn y hyd..\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:48
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:196
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:196
msgid ""
"If you try to drag the selected endpoint beyond the far endpoint, the track "
"extends in the opposite direction.\n"
msgstr ""
-"Os ceisiwch lusgo'r pwynt terfyn a ddewiswyd y tu hwnt i'r man pellaf, mae'r"
-" trac yn ymestyn i'r cyfeiriad arall.\n"
+"Os ceisiwch lusgo'r pwynt terfyn a ddewiswyd y tu hwnt i'r man pellaf, mae'r "
+"trac yn ymestyn i'r cyfeiriad arall.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:68
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:73
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:199
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:68
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:199
msgid ""
"A curved track is selected and it's new endpoint is determined by the angle "
"to the cursor. \n"
msgstr ""
-"Dewisir trac crwm ac mae ei ddiweddbwynt newydd yn cael ei bennu gan yr ongl"
-" i'r cyrchwr. \n"
+"Dewisir trac crwm ac mae ei ddiweddbwynt newydd yn cael ei bennu gan yr ongl "
+"i'r cyrchwr. \n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:105
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:201
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:105
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:201
msgid "It's possible to almost create a complete circle.\n"
msgstr "Mae'n bosib bron creu cylch cyflawn.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:202
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:202
msgid ""
"If you drag the mouse beyond the start of the curve the track becomes very "
"short.\n"
@@ -11427,73 +9472,78 @@ msgstr ""
"Os llusgwch y llygoden y tu hwnt i ddechrau'r gromlin, bydd y trac yn fyr "
"iawn.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:113
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:204
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:114
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:204
msgid "Here you are warned that the track will be too short.\n"
msgstr "Yma fe'ch rhybuddir y bydd y trac yn rhy fyr..\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:147
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:206
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:121
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:206
msgid ""
-"If you move the cursor away from the curve, you will create a straight track"
-" tangent to the curve.\n"
+"Because the modified track is too short, the modification is abandoned the "
+"original track is restored.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:208
+msgid ""
+"If you move the cursor away from the curve, you will create a straight track "
+"tangent to the curve.\n"
msgstr ""
"Os symudwch y cyrchwr i ffwrdd o'r gromlin, byddwch yn creu tangiad trac "
"syth i'r gromlin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:169
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:174
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:209
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:185
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:211
+#, fuzzy
msgid ""
"If you adjust the endpoint of a turnout or sectional track the track is "
-"extended by a similar track segment. The extension can be \n"
+"extended by a similar track segment. The extension can be a straight or a "
+"curve.\n"
msgstr ""
"Os ydych chi'n addasu pwynt terfyn pwynt neu drac adrannol, mae'r trac yn "
"cael ei estyn gan segment trac tebyg. Gall yr estyniad fod \n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:210
-msgid "a straight or a curve.\n"
-msgstr "cromlin syth neu gromlin.\n"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:190
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:195
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:213
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:200
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:214
msgid ""
-"You can change the radius of a straight or curved track that is connected at"
-" one endpoint by holding down the Shift key while Left-dragging on it.\n"
+"You can change the radius of a straight or curved track that is connected at "
+"one endpoint by holding down the Shift key while Left-dragging on it.\n"
msgstr ""
"Gallwch newid radiws trac syth neu grwm sydd wedi'i gysylltu ar un pwynt "
"trwy ddal y fysell Shift i lawr wrth i'r chwith lusgo arno.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:214
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:215
msgid ""
"The blue cross anchor shows that this is possible when shift is held down "
"with no buttons.\n"
msgstr ""
-"Mae'r angor croes glas yn dangos bod hyn yn bosibl pan fydd sifft yn cael ei"
-" ddal i lawr heb unrhyw fotymau.\n"
+"Mae'r angor croes glas yn dangos bod hyn yn bosibl pan fydd sifft yn cael ei "
+"ddal i lawr heb unrhyw fotymau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:209
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:216
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:219
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:217
msgid ""
"This lets you change a straight track into a curved track (and vice versa) "
"as well as changing the radius of a curved track.\n"
msgstr ""
-"Mae hyn yn caniatáu ichi newid trac syth yn drac crwm (ac i'r gwrthwyneb) yn"
-" ogystal â newid radiws trac crwm.\n"
+"Mae hyn yn caniatáu ichi newid trac syth yn drac crwm (ac i'r gwrthwyneb) yn "
+"ogystal â newid radiws trac crwm.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:252
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:218
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:262
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:219
msgid ""
-"You can form an extension of a straight or curved Track that is connected at"
-" one endpoint using an easement by holding down the Ctrl key while Left-"
+"You can form an extension of a straight or curved Track that is connected at "
+"one endpoint using an easement by holding down the Ctrl key while Left-"
"dragging on it.\n"
msgstr ""
"Gallwch ffurfio estyniad o Drac syth neu grwm sydd wedi'i gysylltu ar un "
"pwynt terfyn gan ddefnyddio hawddfraint trwy ddal y fysell Ctrl i lawr wrth "
"i'r chwith lusgo arno.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:219
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:220
msgid ""
"The blue half cross anchor shows that this is possible when the Ctrl key is "
"held down with no mouse button.\n"
@@ -11501,35 +9551,35 @@ msgstr ""
"Mae'r angor croes glas hanner yn dangos bod hyn yn bosibl pan fydd yr "
"allwedd Ctrl yn cael ei dal i lawr heb unrhyw botwm llygoden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:267
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmbench.xtr:9
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:222
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:277
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:9
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:223
msgid "You can draw a variety of different types of benchwork:\n"
msgstr "Gallwch dynnu llun amrywiaeth o wahanol fathau o waith meinc:\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:223
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:224
msgid "- rectangular (1x2, 2x4 etc)\n"
msgstr "- petryal (1x2, 2x4 ac ati)\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:225
msgid "- L girders\n"
msgstr "- L gwregysau\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:226
msgid "- T girders\n"
msgstr "- T gwregysau\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:226
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:227
msgid "You can also draw them in different orientations.\n"
msgstr "Gallwch hefyd eu tynnu mewn gwahanol gyfeiriadau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmbench.xtr:25
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:228
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:229
msgid "We will draw two 3x6 inch L-girders.\n"
msgstr "Byddwn yn tynnu dau wregys L 3x6 modfedd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmbench.xtr:43
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:230
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:43
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:231
msgid ""
"The flange of the top L-Girders is on the outside edge of the girders. We "
"want to change the girder so both flanges are on the inside.\n"
@@ -11537,35 +9587,35 @@ msgstr ""
"Mae fflans y L-Girders uchaf ar ymyl allanol y gwregysau. Rydyn ni am newid "
"y girder fel bod y ddwy flanges ar y tu mewn.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:231
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:232
msgid "We will use the <Describe> command for this.\n"
msgstr "Byddwn yn defnyddio'r <Describe> gorchymyn ar gyfer hyn.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmbench.xtr:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:233
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:234
msgid "Change the Orientation to Right.\n"
msgstr "Newid y Cyfeiriadedd i'r Dde.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmbench.xtr:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:235
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:236
msgid "Now both flanges are on the inside of the two girders.\n"
msgstr "Nawr mae'r ddwy flanges ar du mewn y ddau wregys.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:34
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:237
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:238
msgid ""
"Pushing the <Describe> button will cancel any other command in progress.\n"
msgstr ""
"Bydd gwthio'r botwm <Describe> yn canslo unrhyw orchymyn arall sydd ar y "
"gweill.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:238
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:239
msgid ""
"Here we will begin to create a curved track which is a two step process.\n"
msgstr "Yma byddwn yn dechrau creu trac crwm sy'n broses dau gam.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:47
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:240
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:241
msgid ""
"When we clicked on the <Describe> button, the current command was "
"cancelled.\n"
@@ -11573,99 +9623,99 @@ msgstr ""
"Pan wnaethon ni glicio ar y botwm <Describe> cafodd y gorchymyn cyfredol ei "
"ganslo.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:241
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:242
msgid ""
"When in <Describe> mode, selecting any object will print a description in "
"the Status Bar and display a dialog showing properties of the clicked-on "
"object.\n"
msgstr ""
-"Pan fydd mewn <Describe> Pan fydd mewn 1 modd, bydd dewis unrhyw wrthrych yn"
-" argraffu disgrifiad yn y Bar Statws ac yn arddangos deialog yn dangos "
+"Pan fydd mewn <Describe> Pan fydd mewn 1 modd, bydd dewis unrhyw wrthrych yn "
+"argraffu disgrifiad yn y Bar Statws ac yn arddangos deialog yn dangos "
"priodweddau'r gwrthrych sydd wedi'i glicio arno.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:57
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:243
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:244
msgid ""
"Certain parameters of the object can be changed. In this case we'll change "
"the length\n"
msgstr ""
-"Gellir newid rhai paramedrau'r gwrthrych. Yn yr achos hwn, byddwn yn newid y"
-" hyd\n"
+"Gellir newid rhai paramedrau'r gwrthrych. Yn yr achos hwn, byddwn yn newid y "
+"hyd\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:65
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:245
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:246
msgid "Let's look at the Turnout...\n"
msgstr "Gadewch i ni edrych ar y Point / Turnout ...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:73
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:247
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:248
msgid "and change the turnout name and part no.\n"
msgstr "a newid enw'r nifer sy'n pleidleisio a rhan rhif.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:84
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:249
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:250
msgid "You can change the contents of text...\n"
msgstr "Gallwch newid cynnwys testun ...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:93
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:251
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:93
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:252
msgid "and its size.\n"
msgstr "a'i faint.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:100
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:253
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:100
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:254
msgid ""
"If you select a note, the Description dialog appears which displays the "
"contents of the note.\n"
msgstr ""
-"Os dewiswch nodyn, mae'r ymgom Disgrifiad yn ymddangos sy'n dangos cynnwys y"
-" nodyn.\n"
+"Os dewiswch nodyn, mae'r ymgom Disgrifiad yn ymddangos sy'n dangos cynnwys y "
+"nodyn.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:112
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcircle.xtr:7
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:256
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:112
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:257
msgid ""
"Like the <Curve> track command, there are several ways to create a Circle "
"track.\n"
msgstr "Fel y gorchymyn <Curve> trac, mae yna sawl ffordd i greu trac Cylch.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:257
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:258
msgid ""
"The first is to specify a fixed radius and simply drag the Circle into "
"position.\n"
msgstr "Y cyntaf yw nodi radiws sefydlog a llusgo'r Cylch i'w safle.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:259
msgid "We will change the Radius before proceeding.\n"
msgstr "Byddwn yn newid y Radiws cyn bwrw ymlaen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcircle.xtr:24
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:260
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:261
msgid "The next method is to drag from the edge of the Circle to the center.\n"
msgstr "Y dull nesaf yw llusgo o ymyl y Cylch i'r canol.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcircle.xtr:37
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:262
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:263
msgid ""
"The last is similar, but you drag from the center of the Circle to the "
"edge.\n"
msgstr ""
"Mae'r olaf yn debyg, ond rydych chi'n llusgo o ganol y Cylch i'r ymyl.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcircle.xtr:50
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:157
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:265
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:50
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:157
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:266
msgid ""
"We have built a siding using Sectional track and have 2 End-Points that "
-"don't line up and are not connected automatically when placing the sectional"
-" track.\n"
+"don't line up and are not connected automatically when placing the sectional "
+"track.\n"
msgstr ""
"Rydym wedi adeiladu seidin gan ddefnyddio trac Adrannol ac mae gennym 2 "
"Bwynt Diwedd nad ydynt yn llinellu ac nad ydynt wedi'u cysylltu'n awtomatig "
"wrth osod y trac adrannol.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:162
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:267
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:162
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:268
msgid ""
"We use the <Connect> command to adjust neighboring tracks so the gap is "
"closed.\n"
@@ -11673,7 +9723,7 @@ msgstr ""
"Rydym yn defnyddio'r <Connect> gorchymyn i addasu traciau cyfagos fel bod y "
"bwlch ar gau.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:268
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:269
msgid ""
"Note: the adjustments are only done on tracks which have only 1 or 2 "
"connections. In this example the Turnouts would not be affected.\n"
@@ -11682,30 +9732,30 @@ msgstr ""
"addasiadau'n cael eu gwneud. Yn yr enghraifft hon, ni fyddai'r Pwyntiau'n "
"cael eu heffeithio.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:175
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:270
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:175
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:271
msgid "And now the gap is closed.\n"
msgstr "Ac yn awr mae'r bwlch ar gau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:181
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:272
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:181
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:273
msgid "Other tracks have been shifted slightly to close the gap.\n"
msgstr "Mae traciau eraill wedi'u symud ychydig i gau'r bwlch.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:188
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:274
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:188
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:275
msgid "You can see these slight mis-alignments.\n"
msgstr "Gallwch weld y cam-aliniadau bach hyn.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:275
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:276
msgid "But they will have no effect when the layout is actually built.\n"
msgstr ""
"Ond ni fyddant yn cael unrhyw effaith pan fydd y cynllun wedi'i adeiladu "
"mewn gwirionedd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:196
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:353
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:278
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:196
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:353
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:279
msgid ""
"After working with Sectional track you might get to point where these mis-"
"alignments have accumulated and you wish to remove them.\n"
@@ -11714,40 +9764,41 @@ msgstr ""
"lle mae'r cam-aliniadau hyn wedi cronni ac rydych chi am gael gwared arnyn "
"nhw.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:279
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:280
msgid ""
-"You can remove these slight mis-alignments by tightening the tracks starting"
-" from a unconnected End-Point. Use Shift-Left-Click with the <Connect> "
+"You can remove these slight mis-alignments by tightening the tracks starting "
+"from a unconnected End-Point. Use Shift-Left-Click with the <Connect> "
"command.\n"
msgstr ""
"Gallwch chi gael gwared ar y cam-aliniadau bach hyn trwy dynhau'r traciau "
-"gan ddechrau o End-Point heb gysylltiad. Defnyddiwch Shift-Left-Click gyda'r"
-" <Connect> gorchymyn.\n"
+"gan ddechrau o End-Point heb gysylltiad. Defnyddiwch Shift-Left-Click gyda'r "
+"<Connect> gorchymyn.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:280
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:281
msgid "First use the <Split> command to disconnect the tracks.\n"
msgstr "Yn gyntaf, defnyddiwch y <Split> gorchymyn i ddatgysylltu'r traciau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:363
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:282
-msgid "Then with the <Connect> command, Shift-Left-Click on the 2 End-Points.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:363
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:283
+msgid ""
+"Then with the <Connect> command, Shift-Left-Click on the 2 End-Points.\n"
msgstr "Yna gyda'r <Connect> gorchymyn, Shift-Left-Click ar y 2 End-Points.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:378
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn2.xtr:199
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:285
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:378
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:199
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:286
msgid "In example shows a simple figure-8 layout using Sectional track.\n"
msgstr ""
"Imae enghraifft yn dangos cynllun ffigur-8 syml gan ddefnyddio trac "
"Adrannol.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:286
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:287
msgid ""
"You will notice that the tracks do not line up exactly in one location.\n"
msgstr "Fe sylwch nad yw'r traciau'n llinellu'n union mewn un lleoliad.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn2.xtr:211
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:288
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:211
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:289
msgid ""
"We can use the <Connect> command to move the connecting tracks slightly and "
"connect the 2 End-Points.\n"
@@ -11755,33 +9806,33 @@ msgstr ""
"Gallwn ddefnyddio'r <Connect>gorchymyn i symud y traciau cysylltu ychydig a "
"chysylltu'r 2 Bwynt Diwedd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn2.xtr:224
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:290
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:291
msgid "The two End-Points are now aligned and connected.\n"
msgstr "Mae'r ddau Bwynt Diwedd bellach wedi'u halinio a'u cysylltu.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn2.xtr:231
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:292
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:231
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:293
msgid "The connection was made by adding small gaps in other tracks.\n"
msgstr "Gwnaed y cysylltiad trwy ychwanegu bylchau bach mewn traciau eraill.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn2.xtr:238
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:7
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:295
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:238
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:296
msgid "There are several ways to create a Curved track.\n"
msgstr "Mae yna sawl ffordd i greu trac Crwm.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:296
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:297
msgid ""
"You can choose which to use by clicking on the small button to the left of "
"<Curve> command button if the current Curve command is not the one you "
"want.\n"
msgstr ""
-"Gallwch ddewis pa un i'w ddefnyddio trwy glicio ar y botwm bach i'r chwith o"
-" <Curve> botwm gorchymyn os nad y gorchymyn Cromlin cyfredol yw'r un rydych "
+"Gallwch ddewis pa un i'w ddefnyddio trwy glicio ar y botwm bach i'r chwith o "
+"<Curve> botwm gorchymyn os nad y gorchymyn Cromlin cyfredol yw'r un rydych "
"chi ei eisiau.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:297
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:298
msgid ""
"The first is by clicking on the first End-Point and dragging in the "
"direction of the Curve.\n"
@@ -11789,25 +9840,25 @@ msgstr ""
"Y cyntaf yw trwy glicio ar y End-Point cyntaf a llusgo i gyfeiriad y "
"Gromlin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:20
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:299
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:20
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:300
msgid ""
"You will see a straight track with a double ended Red arrow at the end.\n"
msgstr "Fe welwch drac syth gyda saeth Goch â dau ben ar y diwedd.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:300
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:301
msgid "Click and drag on one of the Red arrows to complete the Curve.\n"
msgstr "Cliciwch a llusgwch ar un o'r saethau Coch i gwblhau'r Gromlin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:39
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:302
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:303
msgid ""
"The next method is to click at one End-Point and drag to the center of the "
"Curve.\n"
msgstr "Y dull nesaf yw clicio ar un End-Point a llusgo i ganol y Gromlin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:50
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:304
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:305
msgid ""
"Now you will see the double ended Red arrow connected to the center of the "
"Curve marked by a small circle.\n"
@@ -11815,26 +9866,26 @@ msgstr ""
"Nawr fe welwch y saeth Goch â dau ben wedi'i chysylltu â chanol y Gromlin "
"wedi'i nodi gan gylch bach.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:306
msgid "As before, drag on one of the Red arrows to complete the Curve.\n"
msgstr "Fel o'r blaen, llusgwch ar un o'r saethau Coch i gwblhau'r Gromlin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:307
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:308
msgid ""
"The next method is similar to the last except that you drag first from the "
"center of the Curve to one End-Point.\n"
msgstr ""
-"Mae'r dull nesaf yn debyg i'r olaf ac eithrio eich bod chi'n llusgo gyntaf o"
-" ganol y Gromlin i un Pwynt Diwedd.\n"
+"Mae'r dull nesaf yn debyg i'r olaf ac eithrio eich bod chi'n llusgo gyntaf o "
+"ganol y Gromlin i un Pwynt Diwedd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:80
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:309
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:310
msgid "Once again, drag on a Red arrow to complete the Curve.\n"
msgstr "Unwaith eto, llusgwch saeth goch i gwblhau'r Gromlin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:90
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:311
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:90
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:312
msgid ""
"The last method begins by drawing a line between the two End-Points of the "
"Curve. This forms the Chord of the Curve.\n"
@@ -11842,92 +9893,83 @@ msgstr ""
"Mae'r dull olaf yn dechrau trwy dynnu llinell rhwng dau Bwynt Diwedd y "
"Gromlin. Mae hyn yn ffurfio Cord y Gromlin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:108
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:313
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:108
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:314
msgid "Now drag on a Red arrow to complete the Curve.\n"
msgstr "Nawr llusgwch saeth goch i gwblhau'r Gromlin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:118
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:112
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:316
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:118
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:317
msgid "This demo will construct a control panel for part of a bigger layout.\n"
-msgstr "Bydd y demo hwn yn adeiladu panel rheoli ar gyfer rhan o gynllun mwy.\n"
+msgstr ""
+"Bydd y demo hwn yn adeiladu panel rheoli ar gyfer rhan o gynllun mwy.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:117
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:318
-msgid "For our control panel we will use Å’\" lines. \n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:319
+#, fuzzy
+msgid "For our control panel we will use Œ\" lines. \n"
msgstr "Ar gyfer ein panel rheoli byddwn yn defnyddio llinellau 1/2\". \n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:319
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:320
msgid "Also, we will use a 1/8\" grid to lay out our controls.\n"
msgstr "Hefyd, byddwn yn defnyddio grid 1/8\" i osod ein rheolyddion.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:320
-msgid "First, we will set up the Snap Grid for 1\" grid lines and 8 divisions.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:321
+msgid ""
+"First, we will set up the Snap Grid for 1\" grid lines and 8 divisions.\n"
msgstr ""
"Yn gyntaf, byddwn yn sefydlu'r Grid Snap ar gyfer llinellau grid 1 \" ac 8 "
"rhaniad.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:132
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:322
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:323
msgid "Now, clear the layout and turn on the Snap Grid.\n"
msgstr "Nawr, cliriwch y cynllun a throwch y Grid Snap ymlaen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:147
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:324
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:147
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:325
msgid "First step: draw the lines representing the tracks.\n"
msgstr "Cam cyntaf: lluniwch y llinellau sy'n cynrychioli'r traciau.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:325
-msgid "We specify the line width in pixels when at 1:1 zoom.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:326
+#, fuzzy
+msgid "We specify the line width in inches.\n"
msgstr ""
"Rydym yn nodi lled y llinell mewn picseli pan fyddant yn chwyddo 1: 1.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:326
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:327
msgid ""
-"To create a 1/4\" line, divide the dots-per-inch (DPI) of your display by "
-"4.\n"
+"To create a 1/4\" line, enter 0.250 in the \"Straight Line Width\" box at "
+"the bottom of the window.\n"
msgstr ""
-"I greu llinell 1/4\", rhannwch ddotiau-fesul-modfedd (DPI) eich arddangosfa "
-"â 4.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:327
-msgid ""
-"For MS-Windows the DPI is usually 98, so choose: 98/4 = 24 "
-"(approximately).\n"
-msgstr ""
-"Ar gyfer MS-Windows mae'r DPI fel arfer yn 98, felly dewiswch: 98/4 = 24 "
-"(tua).\n"
-
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:328
-msgid "For Linux, the DPI is usually 72, so choose: 72/4 = 18.\n"
-msgstr ""
-"Ar gyfer Mac / Linux, y DPI fel arfer yw 72, felly dewiswch: 72/4 = 18.\n"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:495
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:330
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:492
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:329
+#, fuzzy
msgid ""
"Notice how the Snap Grid keeps the main line and siding track parallel and "
-"the connecting tracks and spur at a 45° angle.\n"
+"the connecting tracks and spur at a 45° angle.\n"
msgstr ""
"Sylwch ar sut mae'r Grid Snap yn cadw'r brif linell a'r trac seidin yn "
"gyfochrog a'r traciau cysylltu a'r sbardun ar ongl 45°.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:503
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:332
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:500
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:331
msgid "Second step: add LEDs for the turnout position indicators.\n"
-msgstr "Ail gam: ychwanegu LEDs ar gyfer y dangosyddion sefyllfa pleidleisio.\n"
+msgstr ""
+"Ail gam: ychwanegu LEDs ar gyfer y dangosyddion sefyllfa pleidleisio.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:333
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:332
msgid "We will use T1 red and green LEDs.\n"
msgstr "We will use T1 red and green LEDs.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:334
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:333
msgid "We will zoom in to show positioning.\n"
msgstr "Byddwn yn chwyddo i mewn i ddangos lleoliad.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:513
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:336
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:510
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:335
msgid ""
"Notice that when we are in the correct position (on the 1/8\" grid), the "
"Marker lines on the bottom and left rulers will high-light the tick marks. "
@@ -11938,57 +9980,61 @@ msgstr ""
"Pan fydd y ddau dic yn goleuo'n uchel, pwyswch y bar gofod i gwblhau. y "
"LED.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:558
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:338
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:555
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:337
msgid "Now we'll add push buttons to control the turnouts.\n"
msgstr ""
"Nawr byddwn yn ychwanegu botymau gwthio i reoli'r nifer sy'n pleidleisio.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:595
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:340
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:592
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:339
msgid "Let's add signals to our siding.\n"
msgstr "Gadewch i ni ychwanegu signalau at ein seidin.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:341
-msgid "The entrance to the siding will be protected by double headed signals.\n"
-msgstr "Bydd y fynedfa i'r seidin yn cael ei amddiffyn gan signalau pen dwbl.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:340
+msgid ""
+"The entrance to the siding will be protected by double headed signals.\n"
+msgstr ""
+"Bydd y fynedfa i'r seidin yn cael ei amddiffyn gan signalau pen dwbl.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:342
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:341
msgid "We'll select a signal from the HotBar and place it into position.\n"
msgstr "Byddwn yn dewis signal o'r HotBar a'i roi yn ei le.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:608
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:344
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:605
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:343
+#, fuzzy
msgid ""
-"We rotate the signals by Shift-Right-Click and select 90° CW on the popup "
+"We rotate the signals by Shift-Right-Click and select 90° CW on the popup "
"menu. We can not show the popup menu in demo mode, but will simulate the "
"effect.\n"
msgstr ""
-"Rydym yn cylchdroi'r signalau trwy Shift-Right-Click ac yn dewis 90° CW ar y"
-" ddewislen naidlen. Ni allwn ddangos y ddewislen naidlen yn y modd demo, ond"
-" byddwn yn efelychu'r effaith.\n"
+"Rydym yn cylchdroi'r signalau trwy Shift-Right-Click ac yn dewis 90° CW ar y "
+"ddewislen naidlen. Ni allwn ddangos y ddewislen naidlen yn y modd demo, ond "
+"byddwn yn efelychu'r effaith.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:657
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:346
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:654
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:345
msgid "The exits from the siding will be protected by single headed signals.\n"
msgstr ""
"Bydd yr allanfeydd o'r seidin yn cael eu gwarchod gan signalau pennawd "
"sengl.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:711
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:348
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:708
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:347
msgid "Now for some touch-ups.\n"
msgstr "Nawr ar gyfer rhai cyffyrddiadau.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:349
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:348
msgid "Notice when the line meet at an angle there is a gap.\n"
msgstr "Sylwch pan fydd y llinell yn cwrdd ar ongl mae yna fwlch.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:350
-msgid "We will fill this gap with the Å’\" dot.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:349
+#, fuzzy
+msgid "We will fill this gap with the Œ\" dot.\n"
msgstr "Byddwn yn llenwi'r bwlch hwn gyda'r dot 1/2\".\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:351
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:350
msgid ""
"Note: Win95/Win98/WinME does not support drawing lines with flat end-caps, "
"but only with round end-caps.\n"
@@ -11996,81 +10042,83 @@ msgstr ""
"Nodyn: Nid yw Win95 / Win98 / WinME yn cefnogi tynnu llinellau gyda chapiau "
"pen gwastad, ond dim ond gyda chapiau pen crwn.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:352
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:351
msgid "Users on those platforms will not see the gap.\n"
msgstr "Ni fydd defnyddwyr ar y llwyfannau hynny yn gweld y bwlch.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:734
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:354
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:731
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:353
msgid ""
"Add an arrow head to indicate the tracks that connect to the rest of the "
"layout.\n"
msgstr ""
"Ychwanegwch ben saeth i nodi'r traciau sy'n cysylltu â gweddill y cynllun.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:355
-msgid "The second arrow will be flipped 180°\"\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:354
+#, fuzzy
+msgid "The second arrow will be flipped 180°\"\n"
msgstr "Bydd yr ail saeth yn cael ei fflipio 180°\"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:772
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:357
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:769
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:356
msgid "And add some labels.\n"
msgstr "Ac ychwanegwch rai labeli.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:833
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:359
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:830
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:358
+#, fuzzy
msgid ""
-"We want to print our control panel onto a 8Å“x11 page, but the control panel "
+"We want to print our control panel onto a 8Âœx11 page, but the control panel "
"is a bit too wide.\n"
msgstr ""
"Rydyn ni eisiau argraffu ein panel rheoli ar dudalen 8 1/2 x 11, ond mae'r "
"panel rheoli ychydig yn rhy eang.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:360
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:359
msgid "Lets tighten it up a bit.\n"
msgstr "Gadewch i ni ei dynhau ychydig.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:361
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:360
msgid ""
"First turn the Snap Grid on again so any moves we make will keep objects on "
"the grid.\n"
msgstr ""
-"Yn gyntaf trowch y Grid Snap ymlaen eto felly bydd unrhyw symudiadau a wnawn"
-" yn cadw gwrthrychau ar y grid.\n"
+"Yn gyntaf trowch y Grid Snap ymlaen eto felly bydd unrhyw symudiadau a wnawn "
+"yn cadw gwrthrychau ar y grid.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:842
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:363
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:839
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:362
msgid "Lets move the spur track to the left 3/4\"\n"
msgstr "Gadewch i ni symud y trac sbardun i'r chwith 3/4\"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:864
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:365
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:861
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:364
msgid "Now move the right side of the siding over.\n"
msgstr "Nawr symudwch ochr dde'r seidin drosodd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:884
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:367
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:881
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:366
msgid "Now, adjust the ends of the mainline and siding tracks.\n"
msgstr "Nawr, addaswch bennau'r brif reilffordd a'r traciau seidin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:904
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:369
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:901
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:368
msgid "And move the title over as well.\n"
msgstr "A symud y teitl drosodd hefyd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:921
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:371
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:918
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:370
msgid "Now you can print it.\n"
msgstr "Nawr gallwch chi ei argraffu.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:372
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:371
msgid "The cross-hairs on the LEDs and switch show the centers for drilling.\n"
msgstr ""
"Mae'r croes-flew ar y LEDs a'r switsh yn dangos y canolfannau ar gyfer "
"drilio.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdelund.xtr:33
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:374
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:33
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:373
msgid ""
"Pressing the <Delete> button lets you delete selected tracks from the "
"layout.\n"
@@ -12078,7 +10126,7 @@ msgstr ""
"Mae pwyso'r botwm <Delete> yn caniatáu ichi ddileu traciau dethol o'r "
"cynllun.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:375
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:374
msgid ""
"First you select the tracks you want to delete, and then press the <Delete> "
"button.\n"
@@ -12086,8 +10134,8 @@ msgstr ""
"Yn gyntaf rydych chi'n dewis y traciau rydych chi am eu dileu, ac yna'n "
"pwyso'r botwm <Delete>.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdelund.xtr:47
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:377
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:376
msgid ""
"If you delete a track connected to an easement curve, then the easement "
"curve is deleted as well.\n"
@@ -12095,20 +10143,20 @@ msgstr ""
"Os ydych chi'n dileu trac sy'n gysylltiedig â chromlin hawddfraint, yna "
"mae'r gromlin hawddfraint yn cael ei dileu hefyd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdelund.xtr:57
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:379
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:378
msgid "You can use the <Undo> command to undelete tracks.\n"
msgstr "Gallwch ddefnyddio'r <Undo> gorchymyn i danseilio traciau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdelund.xtr:67
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:381
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:67
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:380
msgid ""
"If you Left-Drag on the layout you can select all tracks within an area.\n"
msgstr ""
"Os ydych chi'n Chwith-Llusgo ar y cynllun gallwch ddewis pob trac o fewn "
"ardal.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:382
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:381
msgid ""
"Note, only tracks within the selected area are deleted. Since the easement "
"curve is connected to a deleted track, it is deleted as well.\n"
@@ -12117,9 +10165,9 @@ msgstr ""
"cromlin yr hawddfraint wedi'i chysylltu â thrac wedi'i ddileu, caiff ei "
"ddileu hefyd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdelund.xtr:80
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:385
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:80
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:384
msgid ""
"The demo also simulates entering values and selecting options on various "
"dialogs.\n"
@@ -12127,7 +10175,7 @@ msgstr ""
"Mae'r demo hefyd yn efelychu gwerthoedd mewnbynnu a dewis opsiynau ar "
"ddeialogau amrywiol.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:386
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:385
msgid ""
"This is simulated by drawing a rectangle around the control when values are "
"entered or changed.\n"
@@ -12135,8 +10183,8 @@ msgstr ""
"Mae hyn yn cael ei efelychu trwy dynnu petryal o amgylch y rheolaeth pan "
"fydd gwerthoedd yn cael eu nodi neu eu newid.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:13
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:388
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:13
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:387
msgid ""
"Here we are going to make some changes to the Display dialog. Notice how "
"this is simulated.\n"
@@ -12144,44 +10192,44 @@ msgstr ""
"Yma, rydyn ni'n mynd i wneud rhai newidiadau i'r ymgom Arddangos. Sylwch ar "
"sut mae hyn yn cael ei efelychu.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:389
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:388
msgid "First we are setting 'Draw Tunnel' to 'Normal'\n"
msgstr "Yn gyntaf rydyn ni'n gosod 'Twnnel Draw' yn 'Normal'\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:21
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:391
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:390
msgid "Now we're changing 'Label Font Size' to '56'\n"
msgstr "Nawr rydyn ni'n newid 'Maint Ffont Label' i '56'\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:26
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:393
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:392
msgid "We'll change some other options\n"
msgstr "Byddwn yn newid rhai opsiynau eraill\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:38
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:395
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:394
msgid ""
-"This effect is only used in demonstration mode. During normal operation you"
-" will not see this.\n"
+"This effect is only used in demonstration mode. During normal operation you "
+"will not see this.\n"
msgstr ""
"Dim ond yn y modd arddangos y defnyddir yr effaith hon. Yn ystod "
"gweithrediad arferol ni welwch hyn.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:45
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdimlin.xtr:117
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:398
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:45
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:397
msgid "Dimension Lines are used to mark the distances between two points.\n"
msgstr "Defnyddir Llinellau Dimensiwn i nodi'r pellteroedd rhwng dau bwynt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:399
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:398
msgid ""
"Here we will create a Dimension Line to show the separation between two "
"tracks.\n"
msgstr ""
"Yma byddwn yn creu Llinell Dimensiwn i ddangos y gwahaniad rhwng dau drac.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdimlin.xtr:132
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:401
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:400
msgid ""
"We might also want to measure the distance between two structures. In this "
"case we will use a larger dimension line.\n"
@@ -12189,8 +10237,8 @@ msgstr ""
"Efallai y byddem hefyd eisiau mesur y pellter rhwng dau strwythur. Yn yr "
"achos hwn byddwn yn defnyddio llinell ddimensiwn fwy.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdimlin.xtr:144
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:403
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:402
msgid ""
"We can use the <Describe> command to change the position of the Dimension "
"Line and the size of the numbers.\n"
@@ -12198,43 +10246,43 @@ msgstr ""
"Gallwn ddefnyddio'r <Describe> gorchymyn i newid lleoliad y Llinell "
"Dimensiwn a maint y rhifau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdimlin.xtr:162
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:406
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:162
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:405
msgid ""
"This example will show the effect of using easements while joining tracks.\n"
msgstr ""
-"Bydd yr enghraifft hon yn dangos effaith defnyddio hawddfreintiau wrth ymuno"
-" â thraciau.\n"
+"Bydd yr enghraifft hon yn dangos effaith defnyddio hawddfreintiau wrth ymuno "
+"â thraciau.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:407
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:406
msgid "First, we will enable Cornu Easements and select Join\n"
msgstr "Yn gyntaf, byddwn yn galluogi Hawddfreintiau Cornu ac yn dewis Ymuno\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:28
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:409
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:408
msgid "First select one end of the track\n"
msgstr "Yn gyntaf dewiswch un pen o'r trac\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:39
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:411
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:410
msgid "Now the end of different track\n"
msgstr "Nawr diwedd trac gwahanol\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:49
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:413
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:412
msgid "You can reposition the ends by dragging them \n"
msgstr "Gallwch ail-leoli'r pennau trwy eu llusgo \n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:65
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:415
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:414
msgid "When you are happy, Hit Enter or Space, if not use Esc\n"
msgstr ""
"Pan fyddwch chi'n hapus, defnyddiwch Enter neu Space, os na, defnyddiwch "
"Esc\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:73
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:417
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:416
msgid ""
"The Curve is made up of Beziers parts that smooth the shape the best way it "
"can be in the space available\n"
@@ -12242,40 +10290,40 @@ msgstr ""
"Mae'r gromlin yn cynnwys rhannau Beziers sy'n llyfnhau'r siâp y ffordd orau "
"y gall fod yn y gofod sydd ar gael\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:87
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:419
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:87
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:418
msgid "Now, we'll show traditional easements instead.\n"
msgstr "Nawr, byddwn yn dangos hawddfreintiau traddodiadol yn lle.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:142
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:421
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:142
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:420
msgid ""
-"We've selected sharp easements. The minimum radius curve we can use will be"
-" 9.75\"\n"
+"We've selected sharp easements. The minimum radius curve we can use will be "
+"9.75\"\n"
msgstr ""
"Rydyn ni wedi dewis hawddfreintiau miniog. Y gromlin radiws lleiaf y gallwn "
"ei ddefnyddio fydd 9.75\"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:422
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:421
msgid "Notice the label on the Easement button has changed to 'Sharp'.\n"
msgstr "Sylwch fod y label ar y botwm Rhwyddineb wedi newid i 'Sharp'.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:157
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:424
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:157
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:423
msgid ""
-"Note the connecting curve does not quite meet the straight tracks. This the"
-" 'Offset'.\n"
+"Note the connecting curve does not quite meet the straight tracks. This the "
+"'Offset'.\n"
msgstr ""
"Sylwch nad yw'r gromlin gysylltu yn cwrdd â'r traciau syth yn llwyr. Dyma'r "
"'Gwrthbwyso'.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:165
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:426
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:425
msgid "Here the connecting curve is too small.\n"
msgstr "Yma mae'r gromlin gysylltu yn rhy fach.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:175
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:428
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:175
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:427
msgid ""
"The connecting curve is made of three tracks, the curve and two easement "
"segments on each end.\n"
@@ -12283,8 +10331,8 @@ msgstr ""
"Mae'r gromlin gysylltu wedi'i gwneud o dri thrac, y gromlin a dau segment "
"hawddfraint ar bob pen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:112
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:430
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:429
msgid ""
"We have designed part of the layout with a siding, 2 branches and a spiral "
"loop. We want to set elevations.\n"
@@ -12292,63 +10340,63 @@ msgstr ""
"Rydym wedi dylunio rhan o'r cynllun gyda seidin, 2 gangen a dolen troellog. "
"Rydym am osod drychiadau.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:431
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:430
msgid "Note: make sure you set endpoint elevations on the Display dialog.\n"
msgstr ""
"Nodyn: gwnewch yn siŵr eich bod chi'n gosod drychiadau endpoint ar y dialog "
"Arddangos.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:122
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:433
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:122
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:432
msgid "First we will set elevations at the end of the branches.\n"
msgstr "Yn gyntaf byddwn yn gosod drychiadau ar ddiwedd y canghennau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:132
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:435
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:434
msgid "We'll select the end of the top branch and set the Elevation to 4\"\n"
msgstr "Byddwn yn dewis diwedd y gangen uchaf ac yn gosod y Drychiad i 4\"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:436
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:435
msgid "First, click on the End-Point.\n"
msgstr "Yn gyntaf, cliciwch ar y End-Point.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:142
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:438
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:142
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:437
msgid "Next, pick Defined on the Elevation dialog Radio box.\n"
msgstr "Nesaf, dewiswch Diffiniedig ar y blwch deialog Drychiad Drych.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:148
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:440
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:439
msgid "And set the Elevation to 4.\n"
msgstr "A gosod yr Drychiad i 4.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:156
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:442
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:441
msgid "Now, select the other branch and set it's elevation to 2\"\n"
msgstr "Nawr, dewiswch y gangen arall a gosod ei drychiad i 2\"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:170
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:444
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:443
msgid "We can move the Elevation label by using Ctrl-Left-Drag\n"
msgstr "Gallwn symud y label Drychiad trwy ddefnyddio Ctrl-Left-Drag\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:182
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:446
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:445
msgid "Now, we set the Elevation at one end of the Siding.\n"
msgstr "Nawr, rydyn ni'n gosod yr Drychiad ar un pen i'r seidin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:209
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:215
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:449
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:209
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:215
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:448
msgid "We want to find the elevations where the 2 tracks cross.\n"
msgstr "Rydyn ni am ddod o hyd i'r drychiadau lle mae'r 2 drac yn croesi.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:224
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:451
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:450
msgid "We picked an End-Point on the upper track.\n"
msgstr "Fe wnaethon ni ddewis End-Point ar y trac uchaf.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:452
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:451
msgid ""
"XTrackCAD has computed the Elevation (2.33\") at this point based on the "
"Elevation at the siding and a combination of the of the first Elevations.\n"
@@ -12356,7 +10404,7 @@ msgstr ""
"Mae XTrackCAD wedi cyfrifo'r Drychiad (2.33\") ar y pwynt hwn yn seiliedig "
"ar y Drychiad wrth y seidin a chyfuniad o'r Drychiadau cyntaf.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:453
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:452
msgid ""
"We create a Computed Elevation here that will be automatically adjusted "
"whenever the other Elevations are changed.\n"
@@ -12364,29 +10412,29 @@ msgstr ""
"Rydym yn creu Drychiad Cyfrifedig yma a fydd yn cael ei addasu'n awtomatig "
"pryd bynnag y bydd yr Drychiadau eraill yn cael eu newid.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:243
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:455
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:454
msgid ""
-"The Compute Elevation is based on Elevations at end of both of the branches."
-" We may want to base the Elevation on only one branch. For example if one "
-"branch was the mainline we don't want the other branch affecting this "
-"Computed Elevation.\n"
+"The Compute Elevation is based on Elevations at end of both of the "
+"branches. We may want to base the Elevation on only one branch. For "
+"example if one branch was the mainline we don't want the other branch "
+"affecting this Computed Elevation.\n"
msgstr ""
"Mae'r Drychiad Cyfrifiadurol yn seiliedig ar Drychiadau ar ddiwedd y ddwy "
"gangen. Efallai y byddwn am seilio'r Drychiad ar un gangen yn unig. Er "
"enghraifft, os mai un gangen oedd y brif reilffordd nid ydym am i'r gangen "
"arall effeithio ar y Drychiad Cyfrifedig hwn.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:455
msgid "We do this by Ignoring the branch we don't want.\n"
msgstr "Rydyn ni'n gwneud hyn trwy Anwybyddu'r gangen nad ydyn ni ei eisiau.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:457
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:456
msgid "We'll ignore the lower branch.\n"
msgstr "Byddwn yn anwybyddu'r gangen isaf.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:258
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:459
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:458
msgid ""
"Notice at the endpoint where the tracks cross, we see the elevation has "
"changed from 2.33 to 2.64.\n"
@@ -12394,17 +10442,17 @@ msgstr ""
"Sylwch ar y man terfyn lle mae'r traciau'n croesi, gwelwn fod y drychiad "
"wedi newid o 2.33 i 2.64.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:264
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:461
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:264
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:460
msgid "Now we want to know the elevation of the lower track.\n"
msgstr "Nawr rydyn ni eisiau gwybod drychiad y trac isaf.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:274
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:463
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:274
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:462
msgid "There is no endpoint on the lower track here.\n"
msgstr "Nid oes diweddbwynt ar y trac isaf yma.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:463
msgid ""
"Use Shift-Left-Click to Split the track and create an endpoint we can use "
"for an elevation,\n"
@@ -12412,37 +10460,37 @@ msgstr ""
"Defnyddiwch Shift-Left-Click i Rhannu'r trac a chreu pwynt terfyn y gallwn "
"ei ddefnyddio ar gyfer drychiad,\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:287
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:466
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:287
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:465
msgid "and create another Computed Elevation point.\n"
msgstr "a chreu pwynt Drychiad Cyfrifedig arall.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:302
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:468
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:467
msgid "Now we want to label the grade on this section of track.\n"
msgstr "Nawr rydyn ni am labelu'r llethr ar y rhan hon o'r trac.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:311
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:470
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:311
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:469
msgid ""
"Again, since there is no endpoint nearby, we split the track to create an "
"endpoint we can use,\n"
msgstr ""
-"Unwaith eto, gan nad oes pwynt terfyn gerllaw, rydym yn rhannu'r trac i greu"
-" pwynt terfyn y gallwn ei ddefnyddio,\n"
+"Unwaith eto, gan nad oes pwynt terfyn gerllaw, rydym yn rhannu'r trac i greu "
+"pwynt terfyn y gallwn ei ddefnyddio,\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:321
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:472
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:321
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:471
msgid "and create a grade marker.\n"
msgstr "a chreu marciwr llethr.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:335
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:474
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:335
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:473
msgid "Note the marker has an arrow pointing in the upwards direction.\n"
msgstr "Sylwch fod gan y marciwr saeth yn pwyntio i'r cyfeiriad i fyny.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:344
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:476
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:344
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:475
msgid ""
"The last thing we want to do is to create a Station label that we'll use in "
"the <Profile> command.\n"
@@ -12450,46 +10498,48 @@ msgstr ""
"Y peth olaf yr ydym am ei wneud yw creu label Gorsaf y byddwn yn ei "
"defnyddio yn yr <Profile> gorchymyn.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:358
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:478
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:358
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:477
msgid "Now, set the Elevation to Station and enter the its name.\n"
msgstr "Nawr, gosodwch y Drychiad i'r Orsaf a nodi'r enw.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:376
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:31
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:481
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:376
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:480
msgid ""
-"XTrackCAD can help find tracks that are curved too sharply or are too steep."
-" These tracks are Exception tracks and are drawn in the Exception track "
-"color.\n"
+"XTrackCAD can help find tracks that are curved too sharply or are too "
+"steep. These tracks are Exception tracks and are drawn in the Exception "
+"track color.\n"
msgstr ""
"Gall XTrackCAD helpu i ddod o hyd i draciau sy'n grwm yn rhy sydyn neu sy'n "
"rhy serth. Traciau Eithriad yw'r traciau hyn ac fe'u tynnir yn lliw trac "
"Eithriad.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:482
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:481
+#, fuzzy
msgid ""
-"In this example we have a curved track with radius of 9\" and a straight "
-"track with a grade of 3.8%.\n"
+"In this example we have a curved track with radius of 9 inches and a "
+"straight track with a grade of 3.8 percent.\n"
msgstr ""
"Yn yr enghraifft hon mae gennym drac crwm gyda radiws o 9\" a thrac syth "
-"gyda llethr o 3.8%.\n"
+"gyda llethr o 3.8 cant.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:483
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:482
msgid " \n"
msgstr " \n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:39
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:485
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:484
+#, fuzzy
msgid ""
-"The Layout dialog shows the Minimum Track Radius is 9\" and the Maximum "
-"Track Grade is 5%.\n"
+"The Layout dialog shows the Minimum Track Radius is 9 inches and the Maximum "
+"Track Grade is 5 percent.\n"
msgstr ""
"Mae'r ymgom Cynllun yn dangos mai'r Radiws Trac Isaf yw 9\" a'r Llethr Trac "
-"Uchaf yw 5%.\n"
+"Uchaf yw 5 cant.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:48
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:487
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:486
msgid ""
"If we make the curved track sharper it will be drawn in the Exception "
"color.\n"
@@ -12497,90 +10547,90 @@ msgstr ""
"Os gwnawn y trac crwm yn fwy craff bydd yn cael ei dynnu yn y lliw "
"Eithriad.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:61
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:489
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:61
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:488
msgid ""
-"If we make the straight track steeper it will also be drawn in the Exception"
-" color.\n"
+"If we make the straight track steeper it will also be drawn in the Exception "
+"color.\n"
msgstr ""
"Os gwnawn y trac syth yn fwy serth bydd hefyd yn cael ei dynnu yn y lliw "
"Eithriad.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:78
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:491
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:78
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:490
msgid ""
"You can change the Exception color on the Colors dialog from the Options "
"menu.\n"
msgstr ""
"Gallwch newid y lliw Eithriad ar y dialog Lliwiau o'r ddewislen Opsiynau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:85
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:21
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:494
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:85
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:493
msgid ""
-"The unconnected endpoint of any track can also be extended with the <Modify>"
-" command using Right-Drag.\n"
+"The unconnected endpoint of any track can also be extended with the <Modify> "
+"command using Right-Drag.\n"
msgstr ""
"Gellir ymestyn pwynt terfyn digyswllt unrhyw drac hefyd gyda'r <Modify> "
"gorchymyn gan ddefnyddio Lusgo-Dde.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:26
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:496
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:495
msgid "Select the endoint and Right-Drag.\n"
msgstr "Dewiswch y diweddbwynt a'r Lusgo-Dde.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:34
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:498
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:497
msgid "The extending track can be straight...\n"
msgstr "Gall y trac ymestyn fod yn syth...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:44
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:500
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:44
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:499
msgid "... or curved.\n"
msgstr "... neu grwm.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:51
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:502
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:501
msgid ""
"If you extend a straight or curved flex track and enable Easements then an "
"Easement curve will be automatically generated when you extend the track.\n"
msgstr ""
-"Os ydych chi'n ymestyn trac fflecs syth neu grwm ac yn galluogi Rhwyddinebau"
-" yna bydd cromlin Rhwyddineb yn cael ei chynhyrchu'n awtomatig pan fyddwch "
+"Os ydych chi'n ymestyn trac fflecs syth neu grwm ac yn galluogi Rhwyddinebau "
+"yna bydd cromlin Rhwyddineb yn cael ei chynhyrchu'n awtomatig pan fyddwch "
"chi'n ymestyn y trac.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:65
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:124
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:505
-msgid "The <Flip> command will create a mirror image of the selected objects.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:65
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:124
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:504
+msgid ""
+"The <Flip> command will create a mirror image of the selected objects.\n"
msgstr ""
-"Bydd y <Flip> gorchymyn yn creu delwedd ddrych o'r gwrthrychau a "
-"ddewiswyd.\n"
+"Bydd y <Flip> gorchymyn yn creu delwedd ddrych o'r gwrthrychau a ddewiswyd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:131
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:507
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:506
msgid "After selecting the object, drag a line which will form the mirror.\n"
msgstr "Ar ôl dewis y gwrthrych, llusgwch linell a fydd yn ffurfio'r drych.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:140
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:509
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:140
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:508
msgid "The mirror line does not have to be vertical or horizontal.\n"
msgstr "Nid oes rhaid i'r llinell ddrych fod yn fertigol neu'n llorweddol.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:149
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:511
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:149
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:510
msgid "You can also flip any number of objects.\n"
msgstr "Gallwch hefyd fflipio unrhyw nifer o wrthrychau.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:512
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:511
msgid "Watch what happens to the structure and turnout titles.\n"
msgstr "Gwyliwch beth sy'n digwydd i'r strwythur a theitlau pwyntiau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:163
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:514
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:513
msgid ""
-"Note that the turnout title has been changed from the Medium Right to Medium"
-" Left. When turnouts are flipped, XTrackCAD will try to find a matching "
+"Note that the turnout title has been changed from the Medium Right to Medium "
+"Left. When turnouts are flipped, XTrackCAD will try to find a matching "
"turnout and if found will change the name.\n"
msgstr ""
"Sylwch fod teitl y pwynt wedi'i newid o'r Dde Canolig i'r Chwith Ganolig. "
@@ -12588,35 +10638,35 @@ msgstr ""
"ceisio dod o hyd i'r nifer sy'n pleidleisio ac, os canfyddir, bydd yn newid "
"yr enw.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:170
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:516
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:515
msgid ""
-"Structures do not have Right and Left hand versions. Their title is changed"
-" to indicate that they were flipped.\n"
+"Structures do not have Right and Left hand versions. Their title is changed "
+"to indicate that they were flipped.\n"
msgstr ""
-"Nid oes gan strwythurau fersiynau llaw dde a chwith. Mae eu teitl yn cael ei"
-" newid i nodi iddynt gael eu fflipio.\n"
+"Nid oes gan strwythurau fersiynau llaw dde a chwith. Mae eu teitl yn cael ei "
+"newid i nodi iddynt gael eu fflipio.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:517
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:516
msgid "You can use the <Describe> command to change their title.\n"
msgstr "Gallwch ddefnyddio'r <Describe> gorchymyn i newid eu teitl.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:187
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:21
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:520
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:187
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:519
msgid ""
-"The <Group> and <Ungroup> commands (on the Tools menu) are a powerful way to"
-" manipulate Turnout and Structure definitions.\n"
+"The <Group> and <Ungroup> commands (on the Tools menu) are a powerful way to "
+"manipulate Turnout and Structure definitions.\n"
msgstr ""
"Mae'r gorchmynion <Group> a <Ungroup> (ar y ddewislen Offer) yn ffordd "
"bwerus o drin diffiniadau Pwynt a Strwythur.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:521
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:520
msgid "We'll start with a simple turnout and add a switch machine.\n"
msgstr "Byddwn yn dechrau gyda phwynt syml ac yn ychwanegu modur pwynt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:55
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:523
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:55
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:522
msgid ""
"Now that we have drawn a rough outline of a switch machine we will group it "
"with the turnout definition.\n"
@@ -12624,17 +10674,17 @@ msgstr ""
"Nawr ein bod wedi tynnu amlinelliad bras o fodur pwynt byddwn yn ei grwpio "
"gyda'r diffiniad pwynt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:524
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:523
msgid "First we Select the objects in the new definition.\n"
msgstr "Yn gyntaf rydyn ni'n Dewis y gwrthrychau yn y diffiniad newydd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:68
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:526
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:68
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:525
msgid "Now do the <Group> command.\n"
msgstr "Nawr gwnewch y <Group> gorchymyn.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:75
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:528
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:527
msgid ""
"The <Group> command dialog shows the Title (Manufacturer, Description and "
"Part Number) of the new definition. This information is taken from the "
@@ -12644,8 +10694,8 @@ msgstr ""
"Rhan Rhif) y diffiniad newydd. Daw'r wybodaeth hon o'r gwrthrychau Dethol "
"rydych chi'n eu grwpio.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:81
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:530
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:529
msgid ""
"The 'Replace with new group?' toggle will replace the Selected objects with "
"the new definition.\n"
@@ -12653,8 +10703,8 @@ msgstr ""
"Mae'r 'Amnewid gyda grŵp newydd?' bydd toggle yn disodli'r gwrthrychau "
"Dethol gyda'r diffiniad newydd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:88
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:532
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:88
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:531
msgid ""
"If we don't change the Title then the new definition will replace the "
"existing definition.\n"
@@ -12662,22 +10712,22 @@ msgstr ""
"Os na fyddwn yn newid y Teitl yna bydd y diffiniad newydd yn disodli'r "
"diffiniad presennol.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:533
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:532
msgid "We'll give this definition a new Description.\n"
msgstr "Byddwn yn rhoi Disgrifiad newydd i'r diffiniad hwn.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:99
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:535
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:534
msgid "We're done with this definition. Press Ok.\n"
msgstr "Rydym wedi gwneud gyda'r diffiniad hwn. Pwyswch Ok.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:106
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:537
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:106
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:536
msgid "You will see the updated image on the HotBar.\n"
msgstr "Fe welwch y ddelwedd wedi'i diweddaru ar y Bar Poeth.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:113
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:539
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:113
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:538
msgid ""
"The <Ungroup> command replaces any Selected turnouts or structures with "
"their parts.\n"
@@ -12685,17 +10735,17 @@ msgstr ""
"Mae'r <Ungroup> gorchymyn yn disodli unrhyw bwyntiau neu strwythurau Dethol "
"â'u rhannau.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:540
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:539
msgid ""
"Structures and non-track segements of turnouts are composed of Lines, "
"Circles and other shapes. In this turnout these are the two lines and the "
"two squares.\n"
msgstr ""
-"Mae strwythurau a rhaniadau pwyntiau nad ydynt yn drac yn cynnwys Llinellau,"
-" Cylchoedd a siapiau eraill. Yn y pwynt hwn dyma'r ddwy linell a'r ddwy "
+"Mae strwythurau a rhaniadau pwyntiau nad ydynt yn drac yn cynnwys Llinellau, "
+"Cylchoedd a siapiau eraill. Yn y pwynt hwn dyma'r ddwy linell a'r ddwy "
"sgwâr.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:541
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:540
msgid ""
"We will Ungroup this turnout and see how the individual parts can be "
"changed.\n"
@@ -12703,53 +10753,53 @@ msgstr ""
"Byddwn yn Dadgrwpio'r pwynt hwn ac yn gweld sut y gellir newid y rhannau "
"unigol.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:542
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:541
msgid "First Select the turnout and then Ungroup it.\n"
msgstr "Yn gyntaf Dewiswch y pwynt ac yna Dadgrwpiwch ef.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:128
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:544
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:543
msgid "Notice that the Title now indicates the turnout is Ungrouped.\n"
msgstr "Sylwch fod y Teitl bellach yn nodi bod y pwynt heb ei grwpio.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:545
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:544
msgid "Hit Escape to deselect everything.\n"
msgstr "Taro Esc i ddad-ddewis popeth.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:138
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:547
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:138
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:546
msgid "Now Select the lines and squares.\n"
msgstr "Nawr Dewiswch y llinellau a'r sgwariau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:163
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:549
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:548
msgid ""
"We could modify these object or add new ones. For now we'll just delete "
"them.\n"
msgstr ""
-"Gallem addasu'r gwrthrych hwn neu ychwanegu rhai newydd. Am y tro, byddwn yn"
-" eu dileu.\n"
+"Gallem addasu'r gwrthrych hwn neu ychwanegu rhai newydd. Am y tro, byddwn yn "
+"eu dileu.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:170
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:551
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:550
msgid "And move the Label out of the way.\n"
msgstr "A symud y Label allan o'r ffordd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:181
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:553
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:181
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:552
msgid "Notice that the turnout has been broken into three parts.\n"
msgstr "Sylwch fod y pwynt wedi'i rannu'n dair rhan.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:203
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:555
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:203
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:554
msgid ""
"Two ends of the turnout, from the frog to the end of the diverging leg and "
"from the points to the left, are now straight track sections.\n"
msgstr ""
-"Mae dau ben y pwynt, o'r broga hyd at ddiwedd y goes sy'n dargyfeirio ac o'r"
-" pwyntiau i'r chwith, bellach yn adrannau trac syth.\n"
+"Mae dau ben y pwynt, o'r broga hyd at ddiwedd y goes sy'n dargyfeirio ac o'r "
+"pwyntiau i'r chwith, bellach yn adrannau trac syth.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:556
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:555
msgid ""
"The a turnout is made of a number of individual straight and curved track "
"segements. This turnout had four segments:\n"
@@ -12757,35 +10807,36 @@ msgstr ""
"Gwneir y pwynt o nifer o segmentau trac syth a chrom. Roedd pedair segment "
"i'r pwynt hwn:\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:557
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:556
msgid " 1 a short straight segment to the left of the points\n"
msgstr " 1 segment syth byr i'r chwith o'r pwyntiau\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:558
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:557
msgid " 2 a long straight segment to the right of the points\n"
msgstr " 2 segment hir syth i'r dde o'r pwyntiau\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:559
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:558
msgid " 3 a curved segment from the points to the frog\n"
msgstr " 3 segment crwm o'r pwyntiau i'r broga\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:560
-msgid " 4 a straight segment from the frog to the end of the diverging leg.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:559
+msgid ""
+" 4 a straight segment from the frog to the end of the diverging leg.\n"
msgstr " 4 segment syth o'r broga hyd at ddiwedd y goes sy'n dargyfeirio.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:561
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:560
msgid "The first and last segments have be converted to straight tracks.\n"
msgstr "Mae'r segmentau cyntaf a'r olaf wedi'u trosi'n draciau syth.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:562
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:561
msgid ""
"The second and third segments form the the body of the turnout and can not "
"be ungrouped further.\n"
msgstr ""
-"Mae'r ail a'r drydedd segment yn ffurfio corff y pwynt ac ni ellir eu grwpio"
-" ymhellach.\n"
+"Mae'r ail a'r drydedd segment yn ffurfio corff y pwynt ac ni ellir eu grwpio "
+"ymhellach.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:563
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:562
msgid ""
"You can later Group this turnout with the straight segments to recreate the "
"turnout definition. You can also add other track segments to turnout "
@@ -12795,54 +10846,53 @@ msgstr ""
"greu'r diffiniad pwynt. Gallwch hefyd ychwanegu segmentau trac eraill at "
"ddiffiniadau pwynt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:247
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:565
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:247
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:564
msgid "Now, create a track and place the new turnout on it.\n"
msgstr "Nawr, crëwch drac a gosod y pwynt newydd arno.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:265
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:567
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:265
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:566
msgid "Now suppose we want to replace the black squares with green circles.\n"
msgstr ""
"Nawr mae'n debyg ein bod ni eisiau disodli'r sgwariau du gyda chylchoedd "
"gwyrdd.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:568
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:567
msgid "First we Select the turnout.\n"
msgstr "Yn gyntaf rydyn ni'n Dewis y pwynt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:277
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:570
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:277
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:569
msgid "And now Ungroup it (from the Tools Menu)\n"
msgstr "Ac yn awr Dadgrwpiwch ef (o'r Ddewislen Offer)\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:282
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:572
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:282
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:571
msgid ""
"Notice that the name has changed to indicate the turnout was Ungrouped.\n"
msgstr "Sylwch fod yr enw wedi newid i nodi bod y pwynt heb ei grwpio.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:288
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:574
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:288
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:573
msgid ""
"Now, hit escape to deselect everything and then Select the 2 squares and "
"delete them.\n"
msgstr ""
-"Nawr, tarwch Esc i ddad-ddewis popeth ac yna Dewiswch y 2 sgwâr a'u "
-"dileu..\n"
+"Nawr, tarwch Esc i ddad-ddewis popeth ac yna Dewiswch y 2 sgwâr a'u dileu..\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:305
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:576
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:575
msgid "Now draw the green circles...\n"
msgstr "Nawr lluniwch y cylchoedd gwyrdd...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:326
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:578
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:326
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:577
msgid "and Group the new definition.\n"
msgstr "a Grwpio'r diffiniad newydd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:345
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:580
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:345
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:579
msgid ""
"Notice that the turnout in the HotBar is angled the same as the turnout on "
"the layout. Make sure your new definition is rotated the way you want it.\n"
@@ -12851,17 +10901,17 @@ msgstr ""
"ar y cynllun. Sicrhewch fod eich diffiniad newydd yn cylchdroi yn y ffordd "
"rydych chi ei eisiau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:384
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:582
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:384
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:581
msgid "We can also create turnouts from simple straight and curved tracks.\n"
msgstr "Gallwn hefyd greu pwyntiau o draciau syth syth a chrom.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:583
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:582
msgid "We'll create two tracks that have a common endpoint.\n"
msgstr "Byddwn yn creu dau drac sydd â diweddbwynt cyffredin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:395
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:585
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:395
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:584
msgid ""
"When we create the curve from the straight track endpoint we need to hold "
"down the <Shift> key to prevent XTrackCAD from trying to join the two "
@@ -12870,44 +10920,44 @@ msgstr ""
"Pan fyddwn yn creu'r gromlin o ddiweddbwynt y trac syth mae angen i ni ddal "
"i lawr y<Shift> allwedd i atal XTrackCAD rhag ceisio ymuno â'r ddau drac.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:413
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:587
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:413
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:586
msgid "At this point we can modify the tracks if necessary.\n"
msgstr "Ar y pwynt hwn gallwn addasu'r traciau os oes angen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:588
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:587
msgid "We will use the <Describe> command to change the tracks.\n"
msgstr "Byddwn yn defnyddio'r <Describe> gorchymyn i newid y traciau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:425
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:590
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:425
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:589
msgid "We'll make the Length 7.5\".\n"
msgstr "Fe wnawn ni'r Hyd 7.5 \".\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:591
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:590
msgid ""
-"If we change the Length, each End-Point will be moved to shorten the track."
-" We want to just move the Right End-Point. To control this, change the "
-"Lock to First which means the Left End-Point will be unchanged when we "
-"change the length (or angle) of the track.\n"
+"If we change the Length, each End-Point will be moved to shorten the track. "
+"We want to just move the Right End-Point. To control this, change the Lock "
+"to First which means the Left End-Point will be unchanged when we change the "
+"length (or angle) of the track.\n"
msgstr ""
"Os byddwn yn newid y Hyd, bydd pob End-Point yn cael ei symud i fyrhau'r "
"trac. Rydym am symud y End End Point yn unig. I reoli hyn, newidiwch y Lock "
-"to First sy'n golygu na fydd y Pwynt Diwedd Chwith yn ddigyfnewid pan fyddwn"
-" yn newid hyd (neu ongl) y trac.\n"
+"to First sy'n golygu na fydd y Pwynt Diwedd Chwith yn ddigyfnewid pan fyddwn "
+"yn newid hyd (neu ongl) y trac.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:435
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:593
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:435
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:592
msgid "Now when change the Length only the Right End-Point will move.\n"
msgstr "Nawr pan newidiwch y Hyd dim ond y Pwynt Diwedd Iawn fydd yn symud.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:446
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:595
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:446
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:594
msgid "Now let's look at the curved track.\n"
msgstr "Nawr, gadewch i ni edrych ar y trac crwm.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:456
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:597
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:596
msgid ""
"Here the Left End-Point (which we don't want to move) is the Second End-"
"Point, so we'll make that the Lock.\n"
@@ -12915,75 +10965,77 @@ msgstr ""
"Yma y Pwynt Terfyn Chwith (nad ydym am ei symud) yw'r Ail Bwynt Diwedd, "
"felly byddwn yn gwneud y Clo.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:464
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:599
-msgid "We want the curve to have a radius of 20\" and an angle of 17.5ᅵ.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:598
+#, fuzzy
+msgid "We want the curve to have a radius of 20\" and an angle of 17.5°.\n"
msgstr "Rydym am i'r gromlin gael radiws o 20\" ac ongl o 17.5 gradd.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:600
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:599
msgid "First change the Radius...\n"
msgstr "Newid y Radiws yn gyntaf...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:473
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:602
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:473
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:601
msgid "and the the Angular Length.\n"
msgstr "a'r Hyd Ongl.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:481
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:604
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:481
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:603
msgid "Now Select both tracks...\n"
msgstr "Nawr Dewiswch y ddau drac...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:497
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:606
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:497
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:605
msgid "and Group them.\n"
msgstr "a'u Grwpio.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:508
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:608
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:508
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:607
msgid ""
"If the two tracks have a common End-Point then they will form a Turnout and "
"can be switched with the <Train> command. Otherwise they will just be two "
"track segments grouped together.\n"
msgstr ""
-"Os oes gan y ddau drac Bwynt Diwedd cyffredin yna byddant yn ffurfio Pwynt a"
-" gellir eu newid gyda'r <Train> gorchymyn. Fel arall, dim ond dau segment "
+"Os oes gan y ddau drac Bwynt Diwedd cyffredin yna byddant yn ffurfio Pwynt a "
+"gellir eu newid gyda'r <Train> gorchymyn. Fel arall, dim ond dau segment "
"trac fyddan nhw wedi'u grwpio gyda'i gilydd\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:515
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:610
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:515
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:609
msgid ""
"We have created a left hand turnout and we also want a right hand version.\n"
msgstr ""
"Rydym wedi creu nifer sy'n pleidleisio ar y chwith ac rydym hefyd eisiau "
"fersiwn ar y dde.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:611
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:610
msgid "We'll use the <Flip> command.\n"
msgstr "Byddwn yn defnyddio'r <Flip> gorchymyn.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:528
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:613
-msgid "Drag a horizontal line that will be the mirror for the <Flip> command.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:528
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:612
+msgid ""
+"Drag a horizontal line that will be the mirror for the <Flip> command.\n"
msgstr ""
"Llusgwch linell lorweddol a fydd yn ddrych ar gyfer y <Flip> gorchymyn.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:538
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:615
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:538
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:614
msgid "Notice the title has changed to Flipped Left.\n"
msgstr "Sylwch fod y teitl wedi newid i Flipped Left.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:616
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:615
msgid "Now Group the turnout.\n"
msgstr "Nawr Grwpiwch y pwynt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:547
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:618
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:547
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:617
msgid "We'll change the Title and Part No for the new defintion.\n"
msgstr "Byddwn yn newid y Teitl a Rhan Rhif ar gyfer y diffiniad newydd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:560
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:620
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:560
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:619
msgid ""
"To Remove the definitions, use the Custom Management dialog on the Tools "
"menu.\n"
@@ -12991,116 +11043,115 @@ msgstr ""
"I Dileu'r diffiniadau, defnyddiwch y dialog Rheoli Custom ar y ddewislen "
"Offer.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:565
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:622
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:565
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:621
msgid "Select the definitions you added and Delete them.\n"
msgstr "Dewiswch y diffiniadau y gwnaethoch chi eu hychwanegu a'u Dileu.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:578
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:625
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:578
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:624
msgid ""
"Now we will create a helix in the corner of the layout connected to 2 "
"tracks.\n"
msgstr ""
-"Nawr byddwn yn creu helics yng nghornel y cynllun wedi'i gysylltu â 2 "
-"drac.\n"
+"Nawr byddwn yn creu helics yng nghornel y cynllun wedi'i gysylltu â 2 drac.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:28
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:627
-#, c-format
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:626
+#, fuzzy
msgid ""
-"We will be creating a helix with a Elevation Difference of 12\", Grade of "
-"1.5% and limit the Vertical Separation to at least 2\".\n"
+"We will be creating a helix with a Elevation Difference of 12 inches, Grade "
+"of 1.5 percent and limit the Vertical Separation to at least 2 inches.\n"
msgstr ""
-"Byddwn yn creu helics gyda Gwahaniaeth Drychiad o 12\", Llethr o 1.5% ac yn "
-"cyfyngu'r Gwahaniad Fertigol i o leiaf 2\".\n"
+"Byddwn yn creu helics gyda Gwahaniaeth Drychiad o 12\", Llethr o 1.5 cant ac "
+"yn cyfyngu'r Gwahaniad Fertigol i o leiaf 2\".\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:34
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:629
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:628
msgid "First set the Elevation Difference to 12\"\n"
msgstr "Yn gyntaf, gosodwch y Gwahaniaeth Drychiad i 12\"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:43
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:631
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:43
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:630
msgid "Next set the Vertical Separation to 2\"\n"
msgstr "Nesaf, gosodwch y Gwahaniad Fertigol i 2\"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:632
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:631
msgid "Notice how this causes the number of Turns to be set to 6\n"
msgstr "Sylwch ar sut mae hyn yn achosi i nifer y Troi gael eu gosod i 6\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:52
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:634
-msgid "Next set the Grade to 1.5%\n"
-msgstr "Nesaf gosodwch y Llethr i 1.5%\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:52
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:633
+#, fuzzy
+msgid "Next set the Grade to 1.5 percent\n"
+msgstr "Nesaf gosodwch y Llethr i 1.5 cant\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:635
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:634
msgid "Notice how this causes the Radius to change.\n"
msgstr "Sylwch ar sut mae hyn yn achosi i'r Radiws newid.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:60
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:637
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:60
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:636
msgid ""
-"Setting these values changes the Radius to 21.2\" and the number of Turns to"
-" 6.\n"
+"Setting these values changes the Radius to 21.2\" and the number of Turns to "
+"6.\n"
msgstr ""
"Mae gosod y gwerthoedd hyn yn newid y Radiws i 21.2\" a nifer y Troi i 6.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:66
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:639
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:66
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:638
msgid ""
"Now we specify the Angular Separation between the enterance and exit to the "
"helix.\n"
msgstr ""
-"Nawr rydym yn nodi'r Gwahaniad Ongl rhwng y fynedfa a'r allanfa i'r "
-"helics.\n"
+"Nawr rydym yn nodi'r Gwahaniad Ongl rhwng y fynedfa a'r allanfa i'r helics.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:640
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:639
msgid "Note: this will decrease the Radius slightly.\n"
msgstr "Sylwch: bydd hyn yn lleihau'r Radiws ychydig.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:76
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:642
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:76
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:641
msgid "Next we can fine tune the helix by decreasing the Radius to 15\".\n"
msgstr "Nesaf gallwn fireinio’r helics trwy ostwng y Radiws i 15\".\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:643
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:642
msgid "Note the change to the Grade.\n"
msgstr "Sylwch ar y newid i'r Llethr.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:85
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:645
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:85
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:644
+#, fuzzy
msgid ""
-"Lastly change the Vertical Separation to 2.5\". The number of Turns will "
-"change to 4 and the grade increase to almost 3%.\n"
+"Lastly change the Vertical Separation to 2.5 inches. The number of Turns "
+"will change to 4 and the grade increase to almost 3 percent.\n"
msgstr ""
-"Yn olaf, newidiwch y Gwahaniad Fertigol i 2.5 \". Bydd nifer y Troi yn newid"
-" i 4 a bydd y llethr yn cynyddu i bron i 3%.\n"
+"Yn olaf, newidiwch y Gwahaniad Fertigol i 2.5 \". Bydd nifer y Troi yn newid "
+"i 4 a bydd y llethr yn cynyddu i bron i 3 cant.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:646
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:645
msgid ""
"Note: the Vertical Separation will be increased. This value is the "
-"Elevation Difference (12.0) divided by the total number of turns. The total"
-" number of turns is 4.25: 4 whole Turns plus a quarter turn for the Angular "
+"Elevation Difference (12.0) divided by the total number of turns. The total "
+"number of turns is 4.25: 4 whole Turns plus a quarter turn for the Angular "
"Separation.\n"
msgstr ""
"Sylwch: bydd y Gwahaniad Fertigol yn cynyddu. Y gwerth hwn yw'r Gwahaniaeth "
"Drychiad (12.0) wedi'i rannu â chyfanswm y troadau. Cyfanswm y troadau yw "
"4.25: 4 Troi cyfan ynghyd â chwarter tro ar gyfer y Gwahaniad Ongl.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:94
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:99
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:649
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:94
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:648
msgid ""
-"Now that the helix parameters are set we can place the helix on the "
-"layout.\n"
+"Now that the helix parameters are set we can place the helix on the layout.\n"
msgstr ""
"Nawr bod paramedrau'r helics wedi'u gosod gallwn ni osod yr helics ar y "
"cynllun.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:112
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:651
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:650
msgid ""
"Next, join the 2 straight tracks to the helix in the same way we join to a "
"circle.\n"
@@ -13108,17 +11159,17 @@ msgstr ""
"Nesaf, ymunwch â'r 2 drac syth i'r helics yn yr un ffordd ag yr ydym yn "
"ymuno â chylch.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:145
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:653
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:145
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:652
msgid ""
"Notice that the length has increased because we have more than 4 turns in "
"the helix. It is closer to 4.25 turns.\n"
msgstr ""
-"Sylwch fod y hyd wedi cynyddu oherwydd bod gennym fwy na 4 tro yn yr helics."
-" Mae'n agosach at 4.25 tro.\n"
+"Sylwch fod y hyd wedi cynyddu oherwydd bod gennym fwy na 4 tro yn yr helics. "
+"Mae'n agosach at 4.25 tro.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:155
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:655
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:155
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:654
msgid ""
"Next, we assign elevations to the 2 End-Points of the helix. This will "
"determine the grade and separation between the helix coils.\n"
@@ -13126,7 +11177,7 @@ msgstr ""
"Nesaf, rydyn ni'n neilltuo drychiadau i 2 Bwynt Diwedd yr helics. Bydd hyn "
"yn pennu'r llethr a'r gwahaniad rhwng y coiliau helics.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:656
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:655
msgid ""
"Note: we could set the elevations anywhere along the connecting tracks "
"instead. XTrackCAD treats a helix as a single length of track for "
@@ -13135,128 +11186,129 @@ msgstr ""
"Sylwch: gallem osod y drychiadau yn unrhyw le ar hyd y traciau cysylltu yn "
"lle. Mae XTrackCAD yn trin helics fel un darn o drac ar gyfer drychiadau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:176
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:658
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:176
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:657
+#, fuzzy
msgid ""
-"We have set the elevations to 1\" and 13\" to produce a grade of 3.0% with "
-"2.8\" between coils.\n"
+"We have set the elevations to 1 inch and 13 inches to produce a grade of 3.0 "
+"percent with 2.8 inches between coils.\n"
msgstr ""
-"Rydym wedi gosod y drychiadau i 1\" a 13\" i gynhyrchu llethr o 3.0% gyda "
-"2.8\" rhwng coiliau.\n"
+"Rydym wedi gosod y drychiadau i 1\" a 13\" i gynhyrchu llethr o 3.0 cant "
+"gyda 2.8\" rhwng coiliau.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:659
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:658
msgid ""
"You can use the <Describe> command to change the number of Turns or the "
"Elevations at either end of the Helix. This will affect the Grade and "
"Vertical Separation.\n"
msgstr ""
"Gallwch ddefnyddio'r <Describe> gorchymyn i newid nifer y Troi neu'r "
-"Drychiadau ar bob pen i'r Helix. Bydd hyn yn effeithio ar y Llethr a Gwahanu"
-" Fertigol.\n"
+"Drychiadau ar bob pen i'r Helix. Bydd hyn yn effeithio ar y Llethr a Gwahanu "
+"Fertigol.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:184
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:661
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:660
msgid "The helix description can be moved by the <Move Label> command.\n"
msgstr "Gellir symud y disgrifiad helics gan y <Move Label> gorchymyn.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:194
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:664
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:663
msgid ""
"In addition to using the turnout definitions you can create 'Hand Laid "
"Turnout'.\n"
msgstr ""
"Yn ogystal â defnyddio'r diffiniadau pwynt gallwch greu 'Pwynt Laid Llaw'.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:665
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:664
msgid "This is two step process:\n"
msgstr "Mae hon yn broses dau gam:\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:23
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:667
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:666
msgid "1 - click on the frog and drag away to set the frog angle\n"
msgstr "1 - cliciwch ar y broga a llusgwch i osod ongl y broga\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:29
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:669
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:29
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:668
msgid ""
" Hint: the further you drag from the frog, the more accurate the angle.\n"
msgstr ""
" Awgrym: po bellaf y byddwch chi'n llusgo o'r broga, y mwyaf cywir yw'r "
"ongl.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:34
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:671
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:670
msgid "2 - click and drag to set the position of the points\n"
msgstr "2 - cliciwch a llusgwch i osod lleoliad y pwyntiau\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:42
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:673
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:42
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:672
msgid "We can create Hand Laid Turnouts on curved tracks.\n"
msgstr "Gallwn greu Pwyntiau wedi'u Gosod â Llaw ar draciau crwm.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:58
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:675
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:58
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:674
msgid "A Hand Laid Turnout is composed of several parts.\n"
msgstr "Mae Pwynt Laid â Llaw yn cynnwys sawl rhan.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:67
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:677
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:67
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:676
msgid "The actual Turnout is a short portion at the points.\n"
msgstr "Mae'r Pwynt go iawn yn gyfran fer ar y pwyntiau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:77
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:679
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:77
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:678
msgid "The other parts are various straight and curved segments.\n"
msgstr "Mae'r rhannau eraill yn wahanol segmentau syth a chrom.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:81
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:681
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:680
msgid "The new curved turnout is also composed of several segments.\n"
msgstr "Mae'r pwynt crwm newydd hefyd yn cynnwys sawl segment.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:107
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:7
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:684
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:107
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:683
msgid "Welcome to the XTrackCAD demonstration.\n"
msgstr "Croeso i arddangosiad XTrackCAD.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:685
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:684
msgid ""
-"This will show some the features of XTrackCAD in an automated presentation."
-" This window contains a number of controls and a message area (which I hope"
-" you are reading now). \n"
+"This will show some the features of XTrackCAD in an automated presentation. "
+"This window contains a number of controls and a message area (which I hope "
+"you are reading now). \n"
msgstr ""
"Bydd hyn yn dangos rhai o nodweddion XTrackCAD mewn cyflwyniad awtomataidd. "
"Mae'r ffenestr hon yn cynnwys nifer o reolaethau ac ardal neges (yr wyf yn "
"gobeithio eich bod yn eu darllen nawr). \n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:686
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:685
msgid "The controls are:\n"
msgstr "Mae'r rheolaethau yn:\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:687
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:686
msgid "Step - advances to the next step of the demo.\n"
msgstr "Cam - symud ymlaen i gam nesaf y demo.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:688
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:687
msgid "Next - skips ahead to the next demo.\n"
msgstr "Nesaf - sgipiwch ymlaen i'r demo nesaf.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:689
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:688
msgid "Quit - exits the demo and returns to XTrackCAD.\n"
msgstr "Ymadael - yn gadael y demo ac yn dychwelyd i XTrackCAD.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:690
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:689
msgid "Speed - controls the speed of the demo.\n"
msgstr "Cyflymder - mae'n rheoli cyflymder y demo.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:691
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:690
msgid "Click Step now for the next message.\n"
msgstr "Cliciwch Cam nawr am y neges nesaf.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:23
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:693
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:692
msgid ""
"If this is the first time you have used the demo you may want to rearrange "
"the windows so the demo window does not obscure the main window.\n"
@@ -13265,68 +11317,68 @@ msgstr ""
"aildrefnu'r ffenestri fel nad yw'r ffenestr arddangos yn cuddio'r brif "
"ffenestr.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:694
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:693
msgid ""
"You can move the demo window now by dragging on the title bar at the top of "
"the window. I suggest you move it to the top of your screen.\n"
msgstr ""
-"Gallwch chi symud y ffenestr arddangos nawr trwy lusgo ar y bar teitl ar ben"
-" y ffenestr. Rwy'n awgrymu eich bod chi'n ei symud i ben eich sgrin.\n"
+"Gallwch chi symud y ffenestr arddangos nawr trwy lusgo ar y bar teitl ar ben "
+"y ffenestr. Rwy'n awgrymu eich bod chi'n ei symud i ben eich sgrin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:31
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:696
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:695
msgid ""
"The various controls are disabled when it would be inappropiate to click on "
"them. When the demo is running the Step button is disabled. When the demo "
-"is paused the Step button is enabled and you can click it when you are ready"
-" to view the next part of the demo.\n"
+"is paused the Step button is enabled and you can click it when you are ready "
+"to view the next part of the demo.\n"
msgstr ""
"Mae'r rheolyddion amrywiol yn anabl pan fyddai'n amhriodol clicio arnynt. "
"Pan fydd y demo yn rhedeg mae'r botwm Step yn anabl. Pan fydd y demo wedi'i "
"oedi mae'r botwm Step wedi'i alluogi a gallwch ei glicio pan fyddwch chi'n "
"barod i weld rhan nesaf y demo.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:697
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:696
msgid "You can click on Quit to return to XTrackCAD at any time.\n"
msgstr "Gallwch glicio ar Quit i ddychwelyd i XTrackCAD ar unrhyw adeg.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:698
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:697
msgid "You can adjust the speed of the demonstration with the Speed control.\n"
msgstr "Gallwch addasu cyflymder yr arddangosiad gyda'r rheolaeth Cyflymder.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:60
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:700
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:60
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:699
msgid "The demos are designed to fit within a certain sized window.\n"
msgstr ""
"Mae'r demos wedi'u cynllunio i ffitio o fewn ffenestr o faint penodol.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:701
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:700
msgid ""
"For best results, change the size of the main XTrackCAD window so the box "
"shape is completely visible.\n"
msgstr ""
-"I gael y canlyniadau gorau, newid maint prif ffenestr XTrackCAD fel bod siâp"
-" y blwch yn gwbl weladwy.\n"
+"I gael y canlyniadau gorau, newid maint prif ffenestr XTrackCAD fel bod siâp "
+"y blwch yn gwbl weladwy.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:702
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:701
msgid "You can do this by clicking and dragging on a corner of the window.\n"
msgstr "Gallwch wneud hyn trwy glicio a llusgo ar gornel o'r ffenestr.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:67
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:72
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:705
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:67
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:704
msgid "This is the end of the introductory demo.\n"
msgstr "Dyma ddiwedd y demo rhagarweiniol.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:706
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:705
msgid ""
"Please click Step for the next demo or click Quit to return to XTrackCAD.\n"
msgstr ""
"Cliciwch Cam ar gyfer y demo nesaf neu cliciwch ar Quit i ddychwelyd i "
"XTrackCAD.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjcir.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:708
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:707
msgid ""
"You can also join to and from circles. This will change the circles to "
"curves.\n"
@@ -13334,12 +11386,12 @@ msgstr ""
"Gallwch hefyd ymuno â chylchoedd ac oddi yno. Bydd hyn yn newid y cylchoedd "
"i gromliniau.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:709
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:708
msgid "In this example we will join two circles.\n"
msgstr "Yn yr enghraifft hon, byddwn yn ymuno â dau gylch.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjcir.xtr:24
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:711
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:710
msgid ""
"Here we've selected points on the two circles. The direction of the "
"connections (whether clockwise or counter clockwise) is controlled by where "
@@ -13349,14 +11401,14 @@ msgstr ""
"(boed yn glocwedd neu'n wrthglocwedd) yn cael ei reoli gan ble ar y cylch "
"rydych chi'n dewis y pwyntiau cysylltu.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjcir.xtr:133
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjcir.xtr:152
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:714
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:133
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:152
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:713
msgid "Now let's try a cross connection.\n"
msgstr "Nawr, gadewch i ni roi cynnig ar groes-gysylltiad.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjcir.xtr:246
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:716
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:246
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:715
msgid ""
"Note that the connection is from different 'ends' of the circle than in the "
"last example.\n"
@@ -13364,39 +11416,39 @@ msgstr ""
"Sylwch fod y cysylltiad o wahanol 'bennau' y cylch nag yn yr enghraifft "
"ddiwethaf.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnabut.xtr:22
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:718
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:22
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:717
msgid "This examples shows joining tracks whose End-Points are aligned.\n"
msgstr ""
"Mae'r enghreifftiau hyn yn dangos traciau ymuno y mae eu pwyntiau diwedd "
"wedi'u halinio.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:719
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:718
msgid ""
"Note the 2 pairs of tracks have End-Points that are close and aligned but "
"not connected.\n"
msgstr ""
-"Sylwch fod gan y 2 bâr o draciau Bwyntiau Terfyn sy'n agos ac wedi'u halinio"
-" ond heb gysylltiad.\n"
+"Sylwch fod gan y 2 bâr o draciau Bwyntiau Terfyn sy'n agos ac wedi'u halinio "
+"ond heb gysylltiad.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnabut.xtr:30
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:721
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:720
msgid "The first case joins the curve and straight track.\n"
msgstr "Mae'r achos cyntaf yn ymuno â'r gromlin a'r trac syth.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnabut.xtr:40
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:723
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:722
msgid "The second case will join the two straight tracks.\n"
msgstr "Bydd yr ail achos yn ymuno â'r ddau drac syth.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnabut.xtr:50
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:725
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:724
msgid "Note that the two straight tracks were combined to form one track.\n"
msgstr "Sylwch fod y ddau drac syth wedi'u cyfuno i ffurfio un trac.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnabut.xtr:55
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjncs.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:728
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:55
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:727
msgid ""
"The <Join> command can also join straight and curved tracks (in either "
"order).\n"
@@ -13404,17 +11456,17 @@ msgstr ""
"Gall yr <Join> gorchymyn hefyd ymuno â thraciau syth a chrom (yn y naill "
"drefn neu'r llall).\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:729
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:728
msgid "We will enable Cornu easements\n"
msgstr "Byddwn yn galluogi hawddfreintiau Cornu\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjncs.xtr:32
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:731
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:730
msgid "A connecting cornu track is drawn between the two tracks.\n"
msgstr "Tynnir trac cornu cysylltiol rhwng y ddau drac.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjncs.xtr:41
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:733
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:41
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:732
msgid ""
"Notice that the curved track is extended as the connection point moves past "
"the End-Point.\n"
@@ -13422,8 +11474,8 @@ msgstr ""
"Sylwch fod y trac crwm yn cael ei estyn wrth i'r pwynt cysylltu symud "
"heibio'r End-Point.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjncs.xtr:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:735
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:734
msgid ""
"Here the connection makes the curved track wrap around. This is not a "
"useful shape, there is a discontinuity at the end. \n"
@@ -13431,36 +11483,36 @@ msgstr ""
"Yma mae'r cysylltiad yn gwneud i'r trac crwm lapio o gwmpas. Nid yw hwn yn "
"siâp defnyddiol, mae diffyg parhad ar y diwedd. \n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:736
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:735
msgid "Adjusting the end point will fix it. \n"
msgstr "Bydd addasu'r pwynt gorffen yn ei drwsio. \n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjncs.xtr:64
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnmove.xtr:18
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:739
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:64
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:18
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:738
msgid "The <Join> command can move one group of tracks to join with another.\n"
msgstr "Gall y <Join> gorchymyn symud un grŵp o draciau i ymuno ag un arall.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:740
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:739
msgid ""
"First <Select> the tracks you want to move with Ctrl so that they are both "
"selected.\n"
msgstr ""
-"Yn gyntaf <Select> y traciau rydych chi am eu symud gyda Ctrl fel bod y ddau"
-" ohonyn nhw'n cael eu dewis.\n"
+"Yn gyntaf <Select> y traciau rydych chi am eu symud gyda Ctrl fel bod y ddau "
+"ohonyn nhw'n cael eu dewis.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnmove.xtr:36
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:742
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:36
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:741
msgid "Click <Join> and Shift-Left-Click on the two End-Points.\n"
msgstr "Cliciwch <Join> a Shift-Left-Click ar y ddau Bwynt Diwedd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnmove.xtr:51
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:744
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:743
msgid "The selected tracks are moved into position.\n"
msgstr "Mae'r traciau a ddewiswyd yn cael eu symud i'w safle.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:746
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:745
msgid ""
"Two straight tracks can be joined by selecting the two endoints. The "
"selected endpoints will be those closest to the cursor when the track is "
@@ -13469,17 +11521,17 @@ msgstr ""
"Gellir ymuno â dau drac syth trwy ddewis y ddau bwynt terfyn. Y pwyntiau "
"terfyn a ddewisir fydd y rhai agosaf at y cyrchwr pan ddewisir y trac.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:747
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:746
msgid "First, we will select Easements None and then select Join\n"
msgstr "Yn gyntaf, byddwn yn dewis Easements None ac yna'n dewis Ymunwch\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:26
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:749
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:748
msgid "Now we select two points on the tracks\n"
msgstr "Nawr rydyn ni'n dewis dau bwynt ar y cledrau\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:36
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:751
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:36
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:750
msgid ""
"A connecting track is drawn between the two tracks. Notice how it moves as "
"the cursor is dragged along the second track.\n"
@@ -13487,16 +11539,16 @@ msgstr ""
"Tynnir trac cysylltu rhwng y ddau drac. Sylwch ar sut mae'n symud wrth i'r "
"cyrchwr gael ei lusgo ar hyd yr ail drac.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:47
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:753
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:752
msgid ""
"Note that two tracks are extended if you move past the end of the track.\n"
msgstr ""
"Sylwch fod dau drac yn cael eu hymestyn os byddwch chi'n symud heibio i "
"ddiwedd y trac.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:55
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:755
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:55
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:754
msgid ""
"Notice what happens if you drag past the intersection points of the two "
"tracks.\n"
@@ -13504,28 +11556,28 @@ msgstr ""
"Sylwch ar yr hyn sy'n digwydd os llusgwch heibio i bwyntiau croestoriad y "
"ddau drac.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:757
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:756
msgid "This is probably not a very useful thing to do.\n"
msgstr "Mae'n debyg nad yw hyn yn beth defnyddiol iawn i'w wneud.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:70
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:90
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:760
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:70
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:90
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:759
msgid "Now we will do this with Cornu Easements \n"
msgstr "Nawr byddwn yn gwneud hyn gyda Cornu Easements \n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:761
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:760
msgid "First, we will select Easements Cornu and then select Join\n"
msgstr "Yn gyntaf, byddwn yn dewis Easements Cornu ac yna'n dewis Ymunwch\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:102
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:763
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:102
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:762
msgid "Now we again select two points on the tracks\n"
msgstr "Nawr rydyn ni'n dewis dau bwynt ar y cledrau eto\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:112
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:765
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:764
msgid ""
"A connecting cornu is drawn between the two tracks. Notice how it behaves "
"as the cursor is dragged along the second track.\n"
@@ -13533,76 +11585,76 @@ msgstr ""
"Tynnir cornu cysylltiol rhwng y ddau drac. Sylwch ar sut mae'n ymddwyn wrth "
"i'r cyrchwr gael ei lusgo ar hyd yr ail drac.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:123
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:767
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:123
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:766
msgid ""
"Note that either tracks can be extended if you move past the end of it.\n"
msgstr ""
"Sylwch y gellir ymestyn y naill drac neu'r llall os byddwch chi'n symud "
"heibio'r diwedd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:131
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:769
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:768
msgid ""
"Notice this time what happens if you drag past the intersection points of "
"the two tracks.\n"
msgstr ""
-"Sylwch y tro hwn beth sy'n digwydd os llusgwch heibio pwyntiau croestoriad y"
-" ddau drac.\n"
+"Sylwch y tro hwn beth sy'n digwydd os llusgwch heibio pwyntiau croestoriad y "
+"ddau drac.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:139
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:771
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:139
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:770
msgid "This is more useful because you can move the other end as well.\n"
msgstr ""
"Mae hyn yn fwy defnyddiol oherwydd gallwch chi symud y pen arall hefyd..\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:150
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:773
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:150
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:772
msgid "You can add a pin to constrain the Cornu Curve to pass through it.\n"
msgstr "Gallwch ychwanegu pin i gyfyngu ar Gromlin Cornu i basio trwyddo.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:161
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:776
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:161
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:775
msgid "You can connect from any track to a turntable\n"
msgstr "Gallwch gysylltu o unrhyw drac i drofwrdd\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:777
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:776
msgid "With a Cornu Easement you can have a turntable as the first point.\n"
msgstr "Gyda Rhwyddineb Cornu gallwch gael trofwrdd fel y pwynt cyntaf.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:38
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:779
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:778
msgid ""
-"You cannot place the connecting track too close to an existing stall track."
-" How close you can get is controlled by the Turntable Angle on the Setup "
+"You cannot place the connecting track too close to an existing stall track. "
+"How close you can get is controlled by the Turntable Angle on the Setup "
"dialog.\n"
msgstr ""
"Ni allwch osod y trac cysylltu yn rhy agos at drac stondin sy'n bodoli "
"eisoes. Mae pa mor agos y gallwch ei gael yn cael ei reoli gan yr Ongl "
"Turntable ar y dialog Setup.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:780
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:779
msgid "In this example it is set to 15 degrees.\n"
msgstr "Yn yr enghraifft hon mae wedi'i osod i 15 gradd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:782
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:781
msgid "You can drag the connecting point all round the turntable.\n"
msgstr "Gallwch lusgo'r pwynt cysylltu o amgylch y trofwrdd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:103
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:784
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:103
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:783
msgid ""
"As you drag away from the turntable a straight track will be drawn to the "
"cursor postion and a curve will be drawn from the cursor to the connecting "
"track.\n"
msgstr ""
-"Wrth i chi lusgo i ffwrdd o'r trofwrdd tynnir trac syth at ystum y cyrchwr a"
-" thynnir cromlin o'r cyrchwr i'r trac cysylltu.\n"
+"Wrth i chi lusgo i ffwrdd o'r trofwrdd tynnir trac syth at ystum y cyrchwr a "
+"thynnir cromlin o'r cyrchwr i'r trac cysylltu.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:111
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:786
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:111
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:785
msgid ""
"Now the cursor will be moved within the turntable, but the end stays on the "
"edge of the well.\n"
@@ -13610,22 +11662,21 @@ msgstr ""
"Nawr bydd y cyrchwr yn cael ei symud o fewn y trofwrdd, ond mae'r diwedd yn "
"aros ar ymyl y trofwrdd yn dda.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:161
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:788
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:161
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:787
msgid "All done.\n"
msgstr "Pawb wedi ei wneud.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:169
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:38
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:791
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:169
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:790
msgid ""
-"The Draw Commands are used to draw straight and curved lines on the "
-"layout.\n"
+"The Draw Commands are used to draw straight and curved lines on the layout.\n"
msgstr ""
"Defnyddir y Gorchmynion Draw i dynnu llinellau syth a chrom ar y cynllun.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:46
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:793
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:46
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:792
msgid ""
"Lines are drawn by clicking at the starting postion and dragging to the "
"final position.\n"
@@ -13633,25 +11684,26 @@ msgstr ""
"Tynnir llinellau trwy glicio ar y sefyllfa gychwyn a llusgo i'r safle "
"terfynol.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:794
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:793
msgid ""
-"By default, the new line will snap to existing objects. Hold down the <Alt>"
-" keys to prevent this from happening.\n"
+"By default, the new line will snap to existing objects. Hold down the <Alt> "
+"keys to prevent this from happening.\n"
msgstr ""
-"Yn ddiofyn, bydd y llinell newydd yn snapio i wrthrychau sy'n bodoli eisoes."
-" Daliwch i lawr y <Alt> allweddi i atal hyn rhag digwydd.\n"
+"Yn ddiofyn, bydd y llinell newydd yn snapio i wrthrychau sy'n bodoli eisoes. "
+"Daliwch i lawr y <Alt> allweddi i atal hyn rhag digwydd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:91
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:796
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:795
msgid "You also draw in various colors and line widths.\n"
msgstr "Rydych hefyd yn tynnu lliwiau a lledau llinell amrywiol i mewn.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:110
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:798
-msgid "Like Curved Tracks, Curved Lines can be drawn by a variety of methods.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:110
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:797
+msgid ""
+"Like Curved Tracks, Curved Lines can be drawn by a variety of methods.\n"
msgstr "Fel Traciau Crwm, gellir tynnu Llinellau Crwm trwy amryw o ddulliau.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:799
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:798
msgid ""
"Here we will draw a Curve by dragging from one End-Point to the other to "
"define the chord of the Curve. Then we will drag from the center to shape "
@@ -13661,13 +11713,13 @@ msgstr ""
"ddiffinio cord y Gromlin. Yna byddwn yn llusgo o'r canol i siapio'r "
"gromlin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:185
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:801
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:185
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:800
msgid "Boxes are useful for drawing rectangular shapes.\n"
msgstr "Mae blychau yn ddefnyddiol ar gyfer llunio siapiau hirsgwar.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:195
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:803
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:195
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:802
msgid ""
"Circles can be drawn by clicking on the center or edge and dragging to set "
"the radius.\n"
@@ -13675,30 +11727,29 @@ msgstr ""
"Gellir tynnu cylchoedd trwy glicio ar y canol neu'r ymyl a llusgo i osod y "
"radiws.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:804
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:803
msgid "Here we will drag from the edge to the Center.\n"
msgstr "Yma byddwn yn llusgo o'r ymyl i'r Ganolfan.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:205
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:806
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:805
msgid "Lines and Shapes can be deleted by Selecting and Deleting.\n"
msgstr "Gellir dileu Llinellau a Siapiau trwy Dewis a Dileu.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:228
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:91
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:809
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:228
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:808
msgid "We also draw Polylines and filled shapes.\n"
msgstr "Rydym hefyd yn darlunio Polylines a siapiau wedi'u llenwi.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:98
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:811
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:810
msgid ""
-"A Polyline is drawn by dragging to place each of the point in the "
-"Polyline.\n"
+"A Polyline is drawn by dragging to place each of the point in the Polyline.\n"
msgstr "Tynnir Polyline trwy lusgo i osod pob un o'r pwynt yn y Polyline.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:125
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:813
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:125
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:812
msgid ""
"To finish off the Polyline press the <Space> key or choose another drawing "
"type.\n"
@@ -13706,36 +11757,36 @@ msgstr ""
"I orffen y Polyline, pwyswch yr <Space> allwedd neu dewiswch fath llun "
"arall.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:132
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:815
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:814
msgid "A filled Polygon is drawn in the same way.\n"
msgstr "Mae Polygon wedi'i lenwi yn cael ei dynnu yn yr un modd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:158
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:817
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:816
msgid "When you are finished, press the <Space> key to complete the polygon.\n"
msgstr ""
"Pan fyddwch wedi gorffen, pwyswch yr <Space> allwedd i gwblhau'r polygon.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:165
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:819
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:818
msgid ""
"You can use the Above and Below Commands to move lines and shapes to the "
"front or back of the drawing.\n"
msgstr ""
-"Gallwch ddefnyddio'r Gorchmynion Uchod ac Isod i symud llinellau a siapiau i"
-" flaen neu gefn y llun.\n"
+"Gallwch ddefnyddio'r Gorchmynion Uchod ac Isod i symud llinellau a siapiau i "
+"flaen neu gefn y llun.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:182
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:821
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:820
msgid "Filled Boxes and Circles work the same as line Boxes and Circles.\n"
msgstr ""
"Mae Blychau a Chylchoedd wedi'u Llenwi yn gweithio yr un fath â Blychau a "
"Chylchoedd llinell.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:199
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:8
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:824
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:199
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:8
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:823
msgid ""
"In the drawing area of the main window you can see an hollow upwards arrow "
"which represents the mouse cursor. In this demo the mouse will move about "
@@ -13745,7 +11796,7 @@ msgstr ""
"cynrychioli cyrchwr y llygoden. Yn y demo hwn bydd y llygoden yn symud o "
"gwmpas i ddangos gweithredoedd gwahanol orchmynion i chi.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:825
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:824
msgid ""
"The hollow arrow represents the mouse cursor without a mouse button being "
"pressed.\n"
@@ -13753,18 +11804,18 @@ msgstr ""
"Mae'r saeth wag yn cynrychioli cyrchwr y llygoden heb i botwm llygoden gael "
"ei wasgu.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:827
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:826
msgid ""
"When the left mouse button would be pressed, the mouse cursor appears to "
"flash and the hollow arrow is replaced by a solid left-pointing red arrow "
"while the button is pressed.\n"
msgstr ""
"Pan fyddai botwm chwith y llygoden yn cael ei wasgu, mae'n ymddangos bod "
-"cyrchwr y llygoden yn fflachio a saeth goch sy'n pwyntio i'r chwith yn lle'r"
-" saeth wag wrth i'r botwm gael ei wasgu.\n"
+"cyrchwr y llygoden yn fflachio a saeth goch sy'n pwyntio i'r chwith yn lle'r "
+"saeth wag wrth i'r botwm gael ei wasgu.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:828
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:827
msgid ""
"Note: these color changes occur only during the demo to simulate mouse "
"button presses.\n"
@@ -13772,15 +11823,16 @@ msgstr ""
"Sylwch: dim ond yn ystod y demo i efelychu gweisg botwm llygoden y mae'r "
"newidiadau lliw hyn yn digwydd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:24
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:830
-msgid "Moving the mouse while a mouse button is pressed is called 'dragging'.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:829
+msgid ""
+"Moving the mouse while a mouse button is pressed is called 'dragging'.\n"
msgstr ""
"Yr enw ar symud y llygoden tra bod botwm llygoden yn cael ei wasgu yw "
"'llusgo'.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:32
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:832
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:831
msgid ""
"When the left mouse button is released, the mouse cursor flashes and the "
"hollow up black arrow is restored.\n"
@@ -13788,8 +11840,8 @@ msgstr ""
"Pan fydd botwm chwith y llygoden yn cael ei ryddhau, mae cyrchwr y llygoden "
"yn fflachio ac mae'r saeth ddu wag i fyny yn cael ei hadfer.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:40
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:834
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:833
msgid ""
"Dragging with the right button is simulated by a blue right-facing solid "
"cursor.\n"
@@ -13797,41 +11849,41 @@ msgstr ""
"Mae llusgo gyda'r botwm cywir yn cael ei efelychu gan gyrchwr solet glas "
"sy'n wynebu'r dde.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:49
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:836
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:835
msgid "Release Right Click\n"
msgstr "Rhyddhau De-gliciwch\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:57
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:62
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:839
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:57
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:62
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:838
msgid "Sometimes the Shift key is held down while using the mouse \n"
msgstr ""
"Weithiau mae'r allwedd Shift yn cael ei dal i lawr wrth ddefnyddio'r "
"llygoden \n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:840
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:839
msgid ""
"This is indicated by an outlined arrow with the letter S near the arrow.\n"
msgstr "Nodir hyn gan saeth wedi'i amlinellu gyda'r llythyren S ger y saeth.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:71
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:842
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:71
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:841
msgid ""
"The left mouse button is held down with the Shift and dragged for a Left-"
"Shift-Drag. \n"
msgstr ""
-"Mae botwm chwith y llygoden yn cael ei ddal i lawr gyda'r Shift a'i lusgo am"
-" Drag-Shift-Drag. \n"
+"Mae botwm chwith y llygoden yn cael ei ddal i lawr gyda'r Shift a'i lusgo am "
+"Drag-Shift-Drag. \n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:86
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:844
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:843
msgid "Sometimes the Control key is held down while using the mouse. \n"
msgstr ""
"Weithiau mae'r allwedd Rheoli yn cael ei dal i lawr wrth ddefnyddio'r "
"llygoden. \n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:845
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:844
msgid ""
"This is indicated with an upward filled arrow head with the letter C near "
"the arrow \n"
@@ -13839,16 +11891,16 @@ msgstr ""
"Nodir hyn gyda phen saeth wedi'i lenwi ar i fyny gyda'r llythyren C ger y "
"saeth \n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:98
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:847
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:846
msgid ""
-"If while the Control is held the Left mouse button is held down it is a "
-"Ctrl-Move and a Ctrl-Left-Drag. \n"
+"If while the Control is held the Left mouse button is held down it is a Ctrl-"
+"Move and a Ctrl-Left-Drag. \n"
msgstr ""
-"Er bod botwm chwith y llygoden yn cael ei ddal i lawr, mae'n Ctrl-Move ac yn"
-" Ctrl-Left-Drag-Drag. \n"
+"Er bod botwm chwith y llygoden yn cael ei ddal i lawr, mae'n Ctrl-Move ac yn "
+"Ctrl-Left-Drag-Drag. \n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:848
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:847
msgid ""
"This is indicated by an an left-facing open-headed arrow with the letter C "
"near it.\n"
@@ -13856,22 +11908,22 @@ msgstr ""
"Dynodir hyn gan saeth pen agored sy'n wynebu'r chwith gyda'r llythyren C yn "
"agos ati.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:114
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:850
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:114
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:849
msgid "You can also use the Control key with the Right mouse button. \n"
msgstr "Gallwch hefyd ddefnyddio'r allwedd Rheoli gyda botwm De'r llygoden. \n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:851
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:850
msgid ""
"This is indicated with a right-facing filled arrow with an open arrow head "
"and the letter C near the arrow \n"
msgstr ""
-"Nodir hyn gyda saeth wedi'i llenwi ar yr ochr dde gyda phen saeth agored a'r"
-" llythyren C ger y saeth \n"
+"Nodir hyn gyda saeth wedi'i llenwi ar yr ochr dde gyda phen saeth agored a'r "
+"llythyren C ger y saeth \n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:130
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:23
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:854
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:130
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:853
msgid ""
"The main drawing area shows a portion of total layout. You can zoom in or "
"zoom out by choosing 'Zoom In' or 'Zoom Out' in the 'Edit' menu, by using "
@@ -13883,32 +11935,31 @@ msgstr ""
"ddewislen 'Edit', trwy ddefnyddio'r botymau Zoom ar y bar offer neu trwy "
"ddefnyddio'r bysellau 'Page Down' a 'Page Up'.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:855
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:854
msgid "You can see the entire layout in the Map window.\n"
msgstr "Gallwch weld y cynllun cyfan yn ffenestr y Map.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:33
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:857
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:33
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:856
msgid "As you Zoom Out tracks are drawn with one line instead of two.\n"
msgstr ""
-"Wrth i chi Chwyddo Mae traciau'n cael eu tynnu gydag un llinell yn lle "
-"dwy.\n"
+"Wrth i chi Chwyddo Mae traciau'n cael eu tynnu gydag un llinell yn lle dwy.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:49
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:860
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:49
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:859
msgid ""
-"You can change what portion of the layout is shown by using the 'Map' window"
-" which shows a compressed version of the entire layout. A hilighted area of"
-" the 'Map' (in blue highlight) shows what portion of the layout is displayed"
-" in the main drawing area.\n"
+"You can change what portion of the layout is shown by using the 'Map' window "
+"which shows a compressed version of the entire layout. A hilighted area of "
+"the 'Map' (in blue highlight) shows what portion of the layout is displayed "
+"in the main drawing area.\n"
msgstr ""
"Gallwch newid pa ran o'r cynllun a ddangosir trwy ddefnyddio'r ffenestr "
"'Map' sy'n dangos fersiwn gywasgedig o'r cynllun cyfan. Mae rhan hiliol o'r "
"'Map' (mewn uchafbwynt glas) yn dangos pa ran o'r cynllun sy'n cael ei "
"harddangos yn y brif ardal arlunio.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:861
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:860
msgid ""
"You can Left-Drag the hilighted area in the Map window to change the "
"displayed portion of the layout.\n"
@@ -13916,8 +11967,8 @@ msgstr ""
"Gallwch Chwith-Llusgwch yr ardal hilighted yn ffenestr y Map i newid y rhan "
"o'r cynllun sydd wedi'i harddangos.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:863
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:862
msgid ""
"You can also Right-Drag on the Map window to set the scale and position of "
"the Main window.\n"
@@ -13925,53 +11976,82 @@ msgstr ""
"Gallwch hefyd Dde-Llusgo ar ffenestr y Map i osod graddfa a lleoliad y Brif "
"ffenestr.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:72
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmnotes.xtr:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:866
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:72
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:865
+#, fuzzy
msgid ""
-"The <Note> command lets you attach notes to various spots on the layout.\n"
+"The <Text Note> command lets you attach notes to various spots on the "
+"layout.\n"
msgstr ""
"Mae'r <Note> gorchymyn yn caniatáu ichi atodi nodiadau i wahanol smotiau ar "
"y cynllun.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmnotes.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:868
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:867
+#, fuzzy
msgid ""
-"When you place a note, the Note editor window is displayed which lets you "
-"enter the note.\n"
+"When you place a note, the Text Note editor window is displayed which lets "
+"you enter the note.\n"
msgstr ""
"Pan osodwch nodyn, arddangosir ffenestr golygydd y Nodyn sy'n caniatáu ichi "
"nodi'r nodyn.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmnotes.xtr:22
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:870
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:869
+#, fuzzy
+msgid ""
+"If you click on a note in <Describe> mode the Text Note editor displays the "
+"note allowing you to modify the note..\n"
+msgstr ""
+"Os cliciwch ar nodyn mewn <Describe> modd, mae golygydd y Nodyn yn arddangos "
+"y nodyn.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:871
+#, fuzzy
+msgid "You can also create a reference to a file or web link.\n"
+msgstr "Gallwch hefyd eu tynnu mewn gwahanol gyfeiriadau.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:872
+msgid ""
+"Choose the type of link by clicking on the down arrow beside the Note "
+"commmand.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:874
msgid ""
-"If you click on a note in <Describe> mode the Note editor displays the "
-"note.\n"
+"This is a File Note. You can specify the Title of the File and its "
+"location\n"
msgstr ""
-"Os cliciwch ar nodyn mewn <Describe> modd, mae golygydd y Nodyn yn arddangos"
-" y nodyn.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmnotes.xtr:39
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:872
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:64
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:876
+msgid ""
+"This is a Web Link Note. You can specify the Title of the Link and its URL\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:878
msgid "This is the end of the XTrackCAD Demos.\n"
msgstr "Dyma ddiwedd y Demos XTrackCAD.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:873
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:879
msgid "Click Step to return to XTrackCAD.\n"
msgstr "Cliciwch Step i ddychwelyd i XTrackCAD.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:874
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:880
msgid "Thanks for watching.\n"
msgstr "Diolch am wylio.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:32
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:876
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:882
msgid "This example shows how to create parallel tracks.\n"
msgstr "Mae'r enghraifft hon yn dangos sut i greu traciau cyfochrog.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:37
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:878
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:884
msgid ""
"The separation is set in the <Parallel Separation> window. You should set "
"this value before you begin to select tracks.\n"
@@ -13979,8 +12059,8 @@ msgstr ""
"Mae'r gwahaniad wedi'i osod yn yr <Parallel Separation> ffenestr. Dylech "
"osod y gwerth hwn cyn i chi ddechrau dewis traciau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:49
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:880
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:886
msgid ""
"You control which side the parallel track will be on by moving the cursor "
"from one side of the track centerline to the other.\n"
@@ -13988,77 +12068,77 @@ msgstr ""
"Chi sy'n rheoli ar ba ochr y bydd y trac cyfochrog ymlaen trwy symud y "
"cyrchwr o un ochr i linell ganol y trac i'r llall.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:81
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:882
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:888
msgid "When you release the mouse button the new parallel track is created.\n"
msgstr ""
"Pan fyddwch chi'n rhyddhau botwm y llygoden mae'r trac cyfochrog newydd yn "
"cael ei greu.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:883
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:889
msgid ""
-"Note that the <Parallel> command remains active after you created the track."
-" This is controlled by the Sticky dialog in the Options menu.\n"
+"Note that the <Parallel> command remains active after you created the "
+"track. This is controlled by the Sticky dialog in the Options menu.\n"
msgstr ""
"Sylwch fod y <Parallel> gorchymyn yn parhau i fod yn weithredol ar ôl i chi "
"greu'r trac. Rheolir hyn gan y dialog Gludiog yn y ddewislen Opsiynau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:92
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:885
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:92
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:891
msgid "You cannot create a track parallel to a turnout.\n"
msgstr "Ni allwch greu trac yn gyfochrog â'r nifer sy'n pleidleisio.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:172
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:887
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:172
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:893
msgid ""
"Note that the new curved track is automatically connected to the short "
"parallel track.\n"
msgstr ""
-"Sylwch fod y trac crwm newydd wedi'i gysylltu'n awtomatig â'r trac cyfochrog"
-" byr.\n"
+"Sylwch fod y trac crwm newydd wedi'i gysylltu'n awtomatig â'r trac cyfochrog "
+"byr.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:180
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:19
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:890
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:19
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:896
msgid ""
"Polylines and polygons (created with the <Draw> command) can be modified by "
"dragging on their corners or edges.\n"
msgstr ""
-"Gellir addasu polylines a pholygonau (a grëwyd gyda'r <Draw> gorchymyn) trwy"
-" lusgo ar eu corneli neu eu hymylon.\n"
+"Gellir addasu polylines a pholygonau (a grëwyd gyda'r <Draw> gorchymyn) trwy "
+"lusgo ar eu corneli neu eu hymylon.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:891
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:897
msgid "First Left Click on the shape you want to modify.\n"
msgstr "Cliciwch ar y Chwith Gyntaf ar y siâp rydych chi am ei addasu.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:29
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:893
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:29
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:899
msgid "Then drag on the point you want to move\n"
msgstr "Yna llusgwch ar y pwynt rydych chi am ei symud\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:39
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:895
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:901
msgid "And finally press the Space bar to finish the change\n"
msgstr "Ac yn olaf, pwyswch y bar Gofod i orffen y newid\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:897
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:903
msgid "If you select the middle of an Edge a new Corner is created.\n"
msgstr "Os dewiswch ganol Ymyl mae Cornel newydd yn cael ei chreu.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:72
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:899
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:905
msgid "To delete a corner, select and then press Delete or Backspace\n"
msgstr "I ddileu cornel, dewiswch ac yna pwyswch Delete or Backspace\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:98
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:901
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:907
msgid "But you cannot have a Poly-shape with less than 3 sides.\n"
msgstr "Ond ni allwch gael siâp Poly gyda llai na 3 ochr.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:126
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:126
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:904
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:126
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:126
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:910
msgid ""
"To use the <Profile> command you first need to define Elevations on your "
"layout.\n"
@@ -14066,36 +12146,35 @@ msgstr ""
"I ddefnyddio'r <Profile> gorchymyn, yn gyntaf mae angen i chi ddiffinio "
"Drychiadau ar eich cynllun.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:905
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:911
msgid "In this example we'll use the Elevations defined in the last example.\n"
msgstr ""
"Yn yr enghraifft hon, byddwn yn defnyddio'r Drychiadau a ddiffiniwyd yn yr "
"enghraifft ddiwethaf.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:906
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:912
msgid "You can move or resize the Profile dialog now if you want.\n"
msgstr ""
"Gallwch chi symud neu newid maint y dialog Proffil nawr os ydych chi "
"eisiau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:135
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:908
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:135
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:914
msgid ""
-"To show the Profile you need to select a Path on the tracks of your "
-"layout.\n"
+"To show the Profile you need to select a Path on the tracks of your layout.\n"
msgstr ""
"I ddangos y Proffil mae angen i chi ddewis Llwybr ar draciau eich cynllun.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:909
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:915
msgid "Select a Defined Elevation point (marked by Gold dots).\n"
msgstr "Dewiswch bwynt Drychiad Diffiniedig (wedi'i farcio gan ddotiau Aur).\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:910
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:916
msgid "We will start with the right end of the siding.\n"
msgstr "Byddwn yn dechrau gyda phen dde'r seidin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:148
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:912
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:918
msgid ""
"The second Point is at the left end of the siding. The Path will be drawn "
"in Purple on the layout.\n"
@@ -14103,21 +12182,21 @@ msgstr ""
"Mae'r ail Bwynt ar ben chwith y seidin. Bydd y Llwybr yn cael ei dynnu mewn "
"Porffor ar y cynllun.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:160
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:914
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:160
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:920
msgid "Now select the end of one of the Branches\n"
msgstr "Nawr dewiswch ddiwedd un o'r Canghennau\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:169
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:916
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:169
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:922
msgid ""
"The Profile line is drawn in Red. This indicates that there some turnouts "
"on that section of the Path which have more than 2 connections.\n"
msgstr ""
-"Mae'r llinell Proffil wedi'i thynnu mewn Coch. Mae hyn yn dangos bod rhai yn"
-" pleidleisio ar y rhan honno o'r Llwybr sydd â mwy na 2 gysylltiad.\n"
+"Mae'r llinell Proffil wedi'i thynnu mewn Coch. Mae hyn yn dangos bod rhai yn "
+"pleidleisio ar y rhan honno o'r Llwybr sydd â mwy na 2 gysylltiad.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:917
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:923
msgid ""
"The grade on this part of the Path is the average and may be affected by "
"other Elevations, such the end of the lower branch.\n"
@@ -14125,12 +12204,12 @@ msgstr ""
"Y llethr ar y rhan hon o'r Llwybr yw'r cyfartaledd a gall Drychiadau eraill "
"effeithio arno, megis diwedd y gangen isaf.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:178
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:919
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:178
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:925
msgid "Now try to select the End-Point of the other branch.\n"
msgstr "Nawr ceisiwch ddewis End-Point y gangen arall.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:920
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:926
msgid ""
"You will get an error message because there is no route to one of the ends "
"of the existing Path.\n"
@@ -14138,8 +12217,8 @@ msgstr ""
"Fe gewch neges gwall oherwydd nad oes llwybr i un o bennau'r Llwybr "
"presennol.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:187
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:922
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:187
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:928
msgid ""
"In this case remove the last part of the Path by clicking on current end of "
"the Path and reselect the End-Point.\n"
@@ -14147,13 +12226,13 @@ msgstr ""
"Yn yr achos hwn, tynnwch ran olaf y Llwybr trwy glicio ar ben cyfredol y "
"Llwybr ac ail-ddewis y End End.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:198
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:924
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:198
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:930
msgid "Notice that the Grade has changed on the Profile.\n"
msgstr "Sylwch fod y Radd wedi newid ar y Proffil.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:205
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:926
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:932
msgid ""
"You can Ignore End-Points on the Path by using Shift-Right-Click to display "
"the Profile Options popup menu and chosing Ignore.\n"
@@ -14161,7 +12240,7 @@ msgstr ""
"Gallwch Anwybyddu Pwyntiau Terfynol ar y Llwybr trwy ddefnyddio Shift-Right-"
"Click i arddangos y ddewislen naidlen Opsiynau Proffil a dewis Anwybyddu.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:927
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:933
msgid ""
"Note: We can't show the menu in demo mode but we will show the effect of a "
"Shift Right Click and selecting ignore. We will be Ignoring the End-Point "
@@ -14171,12 +12250,12 @@ msgstr ""
"effaith Cliciwch ar y Dde a dewis anwybyddu. Byddwn yn Anwybyddu Pwynt "
"Diwedd y nifer a bleidleisiodd nad yw ar y Llwybr.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:217
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:929
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:217
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:935
msgid "Notice that part of the Profile line is redrawn in Blue.\n"
msgstr "Sylwch fod rhan o'r llinell Proffil wedi'i hail-lunio mewn Glas.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:930
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:936
msgid ""
"Also, the Computed Elevations and Grade marker on the right side of the "
"layout have been updated.\n"
@@ -14184,18 +12263,17 @@ msgstr ""
"Hefyd, mae'r Drychiadau Cyfrifedig a'r marciwr Gradd ar ochr dde'r cynllun "
"wedi'u diweddaru.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:225
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:932
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:938
msgid ""
"You can set additional Defined Elevation points using the Profile Options "
-"popup menu. These points are added to the Profile if they are on the "
-"Path.\n"
+"popup menu. These points are added to the Profile if they are on the Path.\n"
msgstr ""
"Gallwch chi osod pwyntiau Drychiad Diffiniedig ychwanegol gan ddefnyddio'r "
"ddewislen naidlen Opsiynau Proffil. Ychwanegir y pwyntiau hyn at y Proffil "
"os ydynt ar y Llwybr.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:933
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:939
msgid ""
"We do this by Shift Right Click to display the Profile Options popup menu "
"and selecting Define.\n"
@@ -14203,8 +12281,8 @@ msgstr ""
"Rydym yn gwneud hyn trwy Shift Right Click i arddangos y ddewislen naidlen "
"Opsiynau Proffil a dewis Diffinio.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:237
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:935
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:237
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:941
msgid ""
"We've just added a Defined Elevation point to the middle of the lower "
"branch. Notice the addition on the Profile dialog.\n"
@@ -14212,16 +12290,16 @@ msgstr ""
"Rydyn ni newydd ychwanegu pwynt Drychiad Diffiniedig i ganol y gangen isaf. "
"Sylwch ar yr ychwanegiad ar y dialog Proffil.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:246
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:937
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:246
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:943
msgid ""
-"For the siding we defined a Station name but it's not on the Path, since the"
-" Path takes the shortest distance between points.\n"
+"For the siding we defined a Station name but it's not on the Path, since the "
+"Path takes the shortest distance between points.\n"
msgstr ""
"Ar gyfer y seidin, gwnaethom ddiffinio enw Gorsaf ond nid yw ar y Llwybr, "
"gan fod y Llwybr yn cymryd y pellter byrraf rhwng pwyntiau.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:938
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:944
msgid ""
"We can Ignore one of the End-Points on a Turnout to force the Path to take "
"the other route.\n"
@@ -14229,7 +12307,7 @@ msgstr ""
"Gallwn Anwybyddu un o'r Pwyntiau Terfynol ar y nifer sy'n pleidleisio i "
"orfodi'r Llwybr i gymryd y llwybr arall.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:939
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:945
msgid ""
"Again we use Shift-Right-Click to display the Profile Options menu and "
"select ignore.\n"
@@ -14237,18 +12315,18 @@ msgstr ""
"Unwaith eto rydym yn defnyddio Shift-Right-Click i arddangos y ddewislen "
"Opsiynau Proffil a dewis anwybyddu.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:258
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:941
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:947
msgid "Now remove the First section of the Path,\n"
msgstr "Nawr tynnwch ran gyntaf y Llwybr,\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:268
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:943
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:268
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:949
msgid "and reselect it.\n"
msgstr "a'i ail-ddewis.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:277
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:945
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:277
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:951
msgid ""
"Now the Path goes through the Station End-Point and the name appears on the "
"Profile dialog.\n"
@@ -14256,12 +12334,12 @@ msgstr ""
"Nawr mae'r Llwybr yn mynd trwy End-Point yr Orsaf ac mae'r enw'n ymddangos "
"ar y dialog Proffil.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:286
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:947
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:286
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:953
msgid "Now we need to increase the separation where the tracks cross.\n"
msgstr "Nawr mae angen i ni gynyddu'r gwahaniad lle mae'r traciau'n croesi.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:948
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:954
msgid ""
"The two Elevations you see here are Computed Elevations which means "
"XTrackCAD dynamically computes the Elevation based on the Elevations of "
@@ -14271,23 +12349,23 @@ msgstr ""
"XTrackCAD yn cyfrifo'r Drychiad yn ddeinamig yn seiliedig ar Ddrychiadau "
"traciau cysylltu.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:949
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:955
msgid ""
"First make the lower End-Point a Defined Elevation point using Shift-Right-"
"Click and the Profile Options menu. You will see the End-Point marked by a "
"Gold dot and a new line is added to the Profile dialog.\n"
msgstr ""
"Yn gyntaf gwnewch y End-Point isaf yn bwynt Drychiad Diffiniedig gan "
-"ddefnyddio Shift-Right-Click a'r ddewislen Opsiynau Proffil. Fe welwch y "
-"End-Point wedi'i farcio â dot Aur ac ychwanegir llinell newydd at y dialog "
+"ddefnyddio Shift-Right-Click a'r ddewislen Opsiynau Proffil. Fe welwch y End-"
+"Point wedi'i farcio â dot Aur ac ychwanegir llinell newydd at y dialog "
"Proffil.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:297
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:951
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:297
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:957
msgid "Now, drag the point on the Profile Dialog to change the Elevation.\n"
msgstr "Nawr, llusgwch y pwynt ar y Dialog Proffil i newid y Drychiad.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:952
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:958
msgid ""
"Note the grade on each side of the point will be displayed at the bottom of "
"the Profile dialog.\n"
@@ -14295,8 +12373,8 @@ msgstr ""
"Sylwch y bydd y llethr ar bob ochr i'r pwynt yn cael ei arddangos ar waelod "
"y dialog Proffil.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:319
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:954
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:319
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:960
msgid ""
"After we release the Profile is updated to show the new Elevation and "
"Grade.\n"
@@ -14304,53 +12382,60 @@ msgstr ""
"Ar ôl i ni ryddhau mae'r Proffil yn cael ei ddiweddaru i ddangos y Drychiad "
"a'r Llethr newydd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:326
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:119
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:957
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:326
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:119
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:963
msgid "The <Rescale> command will change the size of the selected objects.\n"
msgstr "Bydd y <Rescale> gorchymyn yn newid maint y gwrthrychau a ddewiswyd.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:958
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:964
+msgid ""
+"Note: due to technical reasons, the To Scale drop down list is blank. For "
+"this demo it should show 'DEMO'.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:965
msgid "First we will try rescaling by ratio.\n"
msgstr "Yn gyntaf byddwn yn ceisio ail-raddio yn ôl cymhareb.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:126
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:960
-msgid "We are going to make everything 150% bigger.\n"
-msgstr "Rydyn ni'n mynd i wneud popeth 150% yn fwy.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:967
+#, fuzzy
+msgid "We are going to make everything 150 percent bigger.\n"
+msgstr "Rydyn ni'n mynd i wneud popeth 150 cant yn fwy.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:136
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:962
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:138
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:969
msgid "Note the track gauge did not change.\n"
msgstr "Sylwch na newidiodd mesurydd y trac.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:143
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:964
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:971
msgid "Let's try that again.\n"
msgstr "Gadewch i ni roi cynnig ar hynny eto.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:965
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:972
msgid "Now we are going to convert from one scale to another.\n"
msgstr "Nawr rydyn ni'n mynd i drosi o un raddfa i'r llall.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:154
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:967
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:974
msgid "We will convert everything from N scale to HO scale...\n"
msgstr "Byddwn yn trosi popeth o raddfa N i raddfa HO ...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:161
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:969
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:976
msgid "and change the track gauge as well.\n"
msgstr "a newid mesurydd y trac hefyd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:169
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:971
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:171
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:978
msgid "Note that the Title of the turnout did not change.\n"
msgstr "Sylwch na newidiodd Teitl y nifer a bleidleisiodd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:177
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrotate.xtr:72
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:974
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:179
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:981
msgid ""
"The <Rotate> command will pivot the Selected objects. First Click on the "
"pivot point and then drag to Rotate the objects.\n"
@@ -14358,24 +12443,25 @@ msgstr ""
"Bydd yr <Rotate> gorchymyn yn colynio'r gwrthrychau Dethol. Yn gyntaf "
"Cliciwch ar y pwynt colyn ac yna llusgwch i Gylchdroi'r gwrthrychau.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:975
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:982
msgid ""
"In this example we will rotate the selected structure about it's center.\n"
msgstr ""
"Yn yr enghraifft hon, byddwn yn cylchdroi'r strwythur a ddewiswyd ynghylch "
"ei ganol.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrotate.xtr:135
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:977
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:135
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:984
+#, fuzzy
msgid ""
-"The <Rotate> command will restrict the rotation to increments of 15° if you "
+"The <Rotate> command will restrict the rotation to increments of 15° if you "
"hold down the <Shift> and <Ctrl> keys.\n"
msgstr ""
"Bydd yr <Rotate> gorchymyn yn cyfyngu'r cylchdro i gynyddrannau o 15° os "
"ydych chi'n dal y bysellau <Shift> a <Ctrl> i lawr.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrotate.xtr:316
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:979
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:316
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:986
msgid ""
"There are Rotate options that you can access by Shift-Right-Click command "
"menu and choosing 'Rotate...'.\n"
@@ -14383,7 +12469,7 @@ msgstr ""
"Mae yna opsiynau Cylchdroi y gallwch eu cyrchu trwy ddewislen gorchymyn "
"Shift-Right-Click a dewis 'Rotate ...'.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:980
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:987
msgid ""
"You can rotate the selected object by a fixed rotatation (15, 30, 45, 90, "
"180) either clockwise or counter-clockwise, or by manually entering any "
@@ -14393,22 +12479,22 @@ msgstr ""
"30, 45, 90, 180) naill ai'n glocwedd neu'n wrthglocwedd, neu trwy fynd i "
"mewn i unrhyw ongl â llaw.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:981
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:988
msgid ""
"The other option is 'Align' which allows you align selected objects with an "
"unselected object. This is useful to align railside buildings with track.\n"
msgstr ""
"Y dewis arall yw 'Alinio' sy'n eich galluogi i alinio gwrthrychau dethol â "
-"gwrthrych heb ei ddewis. Mae hyn yn ddefnyddiol i alinio adeiladau ar ochr y"
-" rheilffordd â'r trac.\n"
+"gwrthrych heb ei ddewis. Mae hyn yn ddefnyddiol i alinio adeiladau ar ochr y "
+"rheilffordd â'r trac.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:982
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:989
msgid "Unfortunately, we can not currently demonstrate these features.\n"
msgstr "Yn anffodus, ni allwn arddangos y nodweddion hyn ar hyn o bryd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrotate.xtr:529
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmruler.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:985
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:529
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:992
msgid ""
"The <Ruler> command draws a Ruler on the layout you can use to measure "
"distances.\n"
@@ -14416,46 +12502,83 @@ msgstr ""
"Mae'r <Ruler> gorchymyn yn tynnu Pren mesur ar y cynllun y gallwch ei "
"ddefnyddio i fesur pellteroedd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmruler.xtr:24
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:987
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:994
msgid "If you press the <Ruler> command again the Ruler is removed.\n"
msgstr "Os gwasgwch y <Ruler> gorchymyn eto tynnir y Pren mesur.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmruler.xtr:32
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:989
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:996
msgid "But you can place it somewhere else.\n"
msgstr "Ond gallwch chi ei osod yn rhywle arall.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmruler.xtr:42
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:173
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:992
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:42
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:173
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:999
msgid "The <Select> command is used to select tracks.\n"
msgstr "Defnyddir y <Select> gorchymyn i ddewis trac.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:993
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1000
msgid "Selected tracks can be moved or rotated during the <Select> command.\n"
msgstr ""
"Gellir symud neu gylchdroi traciau dethol yn ystod y <Select> gorchymyn.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:994
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1001
msgid "Selected tracks can also be deleted, hidden, listed and exported.\n"
msgstr "Gellir dileu, cuddio, rhestru ac allforio traciau dethol hefyd.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:995
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1002
+#, fuzzy
msgid ""
"When you move the cursor near a track that could be selected, the track is "
-"drawn with think blue lines.\n"
+"drawn with thick blue lines.\n"
msgstr ""
"Pan symudwch y cyrchwr ger trac y gellid ei ddewis, tynnir y trac gyda "
"llinellau meddwl glas.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:184
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:997
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1004
+msgid ""
+"The Select operates in two modes which are controled by the Options|Command "
+"menu.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:191
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1006
+msgid ""
+"In 'classic' mode, clicking on an object adds it to set of selected "
+"objects.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:197
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1008
+msgid ""
+"In the 'new' mode, clicking on an object deselectes all other objects, "
+"leaving just the newly selected object.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1009
+#, fuzzy
+msgid "Holding down the Ctrl key reverses this behavior.\n"
+msgstr "Daliwch y fysell Shift i lawr a rhoi cynnig arall arni.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1010
+msgid "This demo will use the 'new' mode.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1011
+msgid ""
+"There is also an option to the control the behavior of clicking on empty "
+"space: do nothing or deselecting all objects.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:208
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1013
msgid "A Left-Click selects a track\n"
msgstr "Mae Clic Chwith yn dewis trac\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:192
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:999
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:216
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1015
msgid ""
"The selected track will have red X's drawn where it is connected to "
"unselected tracks. This indicates where the track will be disconnected if "
@@ -14466,23 +12589,23 @@ msgstr ""
"ddatgysylltu os bydd y traciau a ddewiswyd yn cael eu symud, eu cylchdroi "
"neu eu dileu.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1000
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1016
msgid "A Ctrl-Left-Click adds tracks to the selection\n"
msgstr "Mae Ctrl-Chwith-Clic yn ychwanegu traciau at y dewis\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:211
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1002
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:235
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1018
msgid "Selecting a selected track re-selects only it.\n"
msgstr "Mae dewis trac a ddewiswyd yn ei ail-ddewis yn unig.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:219
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1004
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1020
msgid "Selecting off all tracks de-selects them.\n"
msgstr "Mae dewis pob trac yn eu dad-ddewis.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:227
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:232
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1007
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:251
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:256
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1023
msgid ""
"To demonstrate Select Connected, first select two tracks at the end of a "
"part to be selected \n"
@@ -14490,41 +12613,40 @@ msgstr ""
"I arddangos Select Connected, dewiswch ddau drac yn gyntaf ar ddiwedd rhan "
"i'w dewis \n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:248
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1009
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:272
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1025
msgid ""
"Shift-Left-Click on a track will select all unselected tracks connected to "
"the track. Selection stops at a previously selected track.\n"
msgstr ""
"Bydd Shift-Left-Click ar drac yn dewis pob trac heb ei ddewis sy'n "
-"gysylltiedig â'r trac. Mae'r dewis yn stopio ar drac a ddewiswyd o'r "
-"blaen.\n"
+"gysylltiedig â'r trac. Mae'r dewis yn stopio ar drac a ddewiswyd o'r blaen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:260
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1011
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:284
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1027
msgid ""
"Be careful with this because its very easy to select all tracks this way\n"
msgstr ""
"Byddwch yn ofalus gyda hyn oherwydd ei bod yn hawdd iawn dewis pob trac fel "
"hyn\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:274
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1013
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1029
msgid "The <esc> key will deselect all objects.\n"
msgstr "Bydd yr <esc> allwedd yn dad-ddewis pob gwrthrych.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:282
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:287
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1016
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:310
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:315
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1032
msgid "Left-Drag is used to select all objects within an area.\n"
msgstr "Defnyddir Left-Drag i ddewis yr holl wrthrychau o fewn ardal.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:295
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1018
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:323
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1034
msgid "Shift-Left-Drag is used to move selected tracks.\n"
msgstr "Defnyddir Shift-Left-Drag i symud traciau dethol.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1019
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1035
msgid ""
"When you move selected tracks that are connected to unselected tracks, the "
"tracks will be disconnected. These points are marked by a Red cross on the "
@@ -14534,7 +12656,7 @@ msgstr ""
"eu dethol, bydd y traciau'n cael eu datgysylltu. Mae'r pwyntiau hyn wedi'u "
"marcio gan groes Goch ar y layout.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1020
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1036
msgid ""
"If the unconnected end point of a track and one being moved are close "
"enough, two circles are displayed, showing where the tracks will be snapped "
@@ -14544,30 +12666,31 @@ msgstr ""
"arddangosir dau gylch, sy'n dangos lle bydd y traciau'n cael eu cydio yn ei "
"gilydd. \n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:313
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1022
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:341
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1038
msgid "Let's move the Main window to see what's going on next\n"
msgstr "Gadewch i ni symud y Brif ffenestr i weld beth sy'n digwydd nesaf\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:320
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1024
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:348
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1040
msgid ""
"Ctrl-Left-Drag rotates the selected tracks about the pivot point (which is "
"where you started the drag)\n"
msgstr ""
-"Mae Ctrl-Left-Drag yn cylchdroi'r traciau a ddewiswyd am y pwynt colyn (dyna"
-" lle gwnaethoch chi ddechrau'r llusgo)\n"
+"Mae Ctrl-Left-Drag yn cylchdroi'r traciau a ddewiswyd am y pwynt colyn (dyna "
+"lle gwnaethoch chi ddechrau'r llusgo)\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:382
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:387
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1027
-msgid "Next we select the <Join Tracks> command to demonstrate \"Move To Join\" \n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:410
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:415
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1043
+msgid ""
+"Next we select the <Join Tracks> command to demonstrate \"Move To Join\" \n"
msgstr ""
-"Nesaf byddwn yn dewis y <Join Tracks> gorchymyn i ddangos \"Symud i Ymuno\""
-" \n"
+"Nesaf byddwn yn dewis y <Join Tracks> gorchymyn i ddangos \"Symud i "
+"Ymuno\" \n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:392
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1029
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:420
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1045
msgid ""
"You can use Shift-Left-Click to select an open endpoint of a selected track "
"to join with an unselected track. \n"
@@ -14575,12 +12698,12 @@ msgstr ""
"Gallwch ddefnyddio Shift-Left-Click i ddewis pwynt terfyn agored o drac "
"dethol i ymuno â thrac heb ei ddewis. \n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1030
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1046
msgid "We'll move the Main window again.\n"
msgstr "Byddwn yn symud y Brif ffenestr eto.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:415
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1032
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:443
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1048
msgid ""
"You then Left-Click on an endpoint of a unselected track to move the "
"selected tracks to join. \n"
@@ -14588,24 +12711,24 @@ msgstr ""
"Yna byddwch yn Chwith-gliciwch ar ddiweddbwynt trac heb ei ddewis i symud y "
"traciau a ddewiswyd i ymuno. \n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:430
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:30
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1035
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:458
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1051
msgid "The <Split> command is used to split and disconnect tracks.\n"
msgstr "Defnyddir yr<Split> gorchymyn i rannu a datgysylltu traciau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:35
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1037
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:35
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1053
msgid "Simply select the spot on the track you want to split.\n"
msgstr "Dewiswch y fan a'r lle ar y trac rydych chi am ei rannu.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1038
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1054
msgid "You cannot split turnouts (unless you hold down the Shift key).\n"
msgstr ""
"Ni allwch rannu pwyntiau (oni bai eich bod yn dal y fysell Shift i lawr).\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:48
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1040
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1056
msgid ""
"If you split at spot that is already an End-Point between two tracks, or "
"split twice at the same spot, the track is disconnected.\n"
@@ -14613,18 +12736,18 @@ msgstr ""
"Os ydych chi'n hollti yn y fan a'r lle sydd eisoes yn End-Point rhwng dau "
"drac, neu'n rhannu ddwywaith yn yr un fan, mae'r trac wedi'i ddatgysylltu.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:60
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:65
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1043
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:60
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1059
msgid "The <Tunnel> command marks selected tracks as hidden.\n"
msgstr "Mae'r <Tunnel> gorchymyn yn nodi traciau dethol fel rhai cudd.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1044
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1060
msgid ""
"A tunnel portal is drawn at the boundary between hidden and normal track.\n"
msgstr "Tynnir porth twnnel ar y ffin rhwng trac cudd a thrac arferol.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1045
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1061
msgid ""
"How the hidden tracks are drawn (solid, dashed or invisible) is controlled "
"by the Draw EndPts radio button group on the Setup dialog.\n"
@@ -14633,31 +12756,33 @@ msgstr ""
"anweledig) yn cael eu rheoli gan y grŵp botwm radio Draw EndPts ar y dialog "
"Setup.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:86
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1047
-msgid "To 'un-hide' a track just Select it again and click the Tunnel button.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1063
+msgid ""
+"To 'un-hide' a track just Select it again and click the Tunnel button.\n"
msgstr "I 'ddad-guddio' trac, Dewiswch ef eto a chliciwch ar y botwm Twnnel.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:100
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmstrtrk.xtr:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1050
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:100
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1066
msgid ""
"Straight tracks are created by selecting the first End-Point of the track.\n"
-msgstr "Mae traciau syth yn cael eu creu trwy ddewis End-Point cyntaf y trac.\n"
+msgstr ""
+"Mae traciau syth yn cael eu creu trwy ddewis End-Point cyntaf y trac.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmstrtrk.xtr:12
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1052
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1068
msgid "Then the other End-Point is dragged to its final postion.\n"
msgstr "Yna mae'r End-Point arall yn cael ei lusgo i'w safle olaf.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmstrtrk.xtr:20
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1054
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:20
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1070
msgid "The left mouse button is released at the final end postion.\n"
msgstr "Mae botwm chwith y llygoden yn cael ei ryddhau yn y sefyllfa olaf.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmstrtrk.xtr:27
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtbledg.xtr:23
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1057
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:27
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1073
msgid ""
"Table Edges are used to mark the edges of the layout, either for aisles or "
"room walls.\n"
@@ -14665,8 +12790,8 @@ msgstr ""
"Defnyddir Ymylon Tabl i farcio ymylon y cynllun, naill ai ar gyfer eiliau "
"neu waliau ystafell.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtbledg.xtr:47
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1059
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1075
msgid ""
"A Table Edge is attracted to other objects, unless you hold down the Alt "
"key.\n"
@@ -14674,23 +12799,23 @@ msgstr ""
"Mae Edge Table yn cael ei ddenu at wrthrychau eraill, oni bai eich bod yn "
"dal y fysell Alt i lawr.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtbledg.xtr:145
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1061
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:145
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1077
msgid "Table Edges can be modified by dragging on their ends.\n"
msgstr "Gellir addasu Ymylon Tabl trwy lusgo ar eu pennau.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtbledg.xtr:193
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1063
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:193
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1079
msgid ""
"Unless you hold down the Alt key while dragging then the Table Edge will be "
"attracted to other objects.\n"
msgstr ""
-"Oni bai eich bod yn dal y fysell Alt i lawr wrth lusgo yna bydd y Table Edge"
-" yn cael ei ddenu at wrthrychau eraill.\n"
+"Oni bai eich bod yn dal y fysell Alt i lawr wrth lusgo yna bydd y Table Edge "
+"yn cael ei ddenu at wrthrychau eraill.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtbledg.xtr:231
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtodes.xtr:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1066
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:231
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1082
msgid ""
"These examples shows some of the various Turnout Designer windows. Each "
"window defines a different type of turnout.\n"
@@ -14698,7 +12823,7 @@ msgstr ""
"Mae'r enghreifftiau hyn yn dangos rhai o'r ffenestri Dylunydd Pwynt "
"amrywiol. Mae pob ffenestr yn diffinio pwynt gwahanol.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1067
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1083
msgid ""
"In each window there are a number of parameters to fill in and one or two "
"description lines.\n"
@@ -14706,16 +12831,16 @@ msgstr ""
"Ymhob ffenestr mae yna nifer o baramedrau i'w llenwi ac un neu ddwy linell "
"ddisgrifio.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1068
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1084
msgid "You can print the design to check the dimensions before saving them.\n"
msgstr "Gallwch argraffu'r dyluniad i wirio'r dimensiynau cyn eu cadw.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtodes.xtr:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1070
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1086
msgid "This is the regular turnout.\n"
msgstr "Dyma'r pwynt rheolaidd.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1071
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1087
msgid ""
"In addition to the dimensions, you also enter the Title (Manufacturer, "
"Description and Part Number). For Turnouts with Left and Right hand "
@@ -14725,48 +12850,34 @@ msgstr ""
"Disgrifiad a Rhan Rhif). Ar gyfer Pwyntiau gyda fersiynau Chwith a De, mae "
"Disgrifiadau a Rhifau Rhan ar wahân.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1072
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1088
msgid ""
"Some Turnouts and Sectional track are pre-mounted on roadbed. For these "
"parts you can specify the width of the roadbed, the thickness of the lines "
"drawn for the edge of the roadbed and the color.\n"
msgstr ""
"Mae rhai Pwyntiau a thrac Adrannol wedi'u gosod ymlaen llaw ar wely ffordd. "
-"Ar gyfer y rhannau hyn gallwch nodi lled y gwely ffordd, trwch y llinellau a"
-" dynnir ar gyfer ymyl y gwely ffordd a'r lliw.\n"
+"Ar gyfer y rhannau hyn gallwch nodi lled y gwely ffordd, trwch y llinellau a "
+"dynnir ar gyfer ymyl y gwely ffordd a'r lliw.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtodes.xtr:30
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1074
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1090
msgid "The double slip switch is described by only a few parameters.\n"
msgstr "Dim ond ychydig o baramedrau sy'n disgrifio'r switsh slip dwbl.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtodes.xtr:40
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1076
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1092
msgid "The double crossover only needs length and track separation.\n"
msgstr "Dim ond gwahanu hyd a thrac sydd ei angen ar y croesiad dwbl.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtodes.xtr:48
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:30
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1079
-msgid ""
-"Pressing the turnout button displays the Turnout Selection window to let you"
-" choose a turnout to place.\n"
-msgstr ""
-"Mae pwyso'r botwm pwynt yn dangos y ffenestr Dewis Pwynt i adael i chi "
-"ddewis y nifer sy'n pleidleisio i'w gosod.\n"
-
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1080
-msgid ""
-"Note that once you start to place the turnout on the Main window the Turnout"
-" Selection window disappears. This feature is enabled by the Hide toggle "
-"button on the dialog.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:48
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1095
+msgid "We chose the turnout we want to place by clicking on the HotBar.\n"
msgstr ""
-"Sylwch, ar ôl i chi ddechrau gosod y nifer a bleidleisiodd ar y Brif "
-"ffenestr, mae'r ffenestr Dewis Pwynt yn diflannu. Mae'r nodwedd hon wedi'i "
-"galluogi gan y botwm Cuddio toggle ar y dialog.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:38
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1082
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1097
msgid ""
"You can place the turnout on a arbitrary position on the layout. Left-drag "
"the turnout into place...\n"
@@ -14774,21 +12885,44 @@ msgstr ""
"Gallwch chi roi'r pwynt ar safle mympwyol ar y cynllun. Chwith-llusgwch y "
"pwynt i'w le ......\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:85
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1084
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1099
+#, fuzzy
+msgid "We are moving the Turnout by dragging on the 'Active End Point'\n"
+msgstr "Sylwch fod y pwynt wedi'i rannu'n dair rhan.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1100
+msgid "We can change the 'Active End Point' by a Shift-Left-Click\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1102
+#, fuzzy
+msgid "Notice the Turnout has rotated to the next End Point.\n"
+msgstr "Sylwch fod y pwynt wedi'i rannu'n dair rhan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1104
+msgid ""
+"If we continue to Shift-Left-Click 2 more times, we will return to the "
+"original position.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:123
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1106
msgid "Then you can rotate the turnout by Right dragging.\n"
msgstr "Yna gallwch chi gylchdroi'r pwynt trwy lusgo Iawn.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1085
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1107
msgid ""
"You can also use Shift-Right-Click to display a popup menu that lets you "
"rotate the Turnout by specific angles.\n"
msgstr ""
-"Gallwch hefyd ddefnyddio Shift-Right-Click i arddangos dewislen naidlen sy'n"
-" caniatáu ichi gylchdroi'r Pwynt yn ôl onglau penodol.\n"
+"Gallwch hefyd ddefnyddio Shift-Right-Click i arddangos dewislen naidlen sy'n "
+"caniatáu ichi gylchdroi'r Pwynt yn ôl onglau penodol.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:136
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1087
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:174
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1109
msgid ""
"When you are satisfied with the position and orientation of the turnout "
"press Space bar or the Return key on the keyboard to finish placing the "
@@ -14797,17 +12931,9 @@ msgstr ""
"Pan fyddwch chi'n fodlon â lleoliad a chyfeiriadedd y pwynt, pwyswch Bar "
"Gofod neu'r allwedd Dychwelyd ar y bysellfwrdd i orffen gosod y pwynt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1088
-msgid ""
-"Pressing the Close button on the Turnout dialog will end the <Turnout> "
-"command as well as placing the turnout.\n"
-msgstr ""
-"Bydd pwyso'r botwm Close ar y dialog Point yn dod â'r <Turnout> gorchymyn i "
-"ben yn ogystal â gosod y pwynt.\n"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:146
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:189
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1091
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:182
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1112
msgid ""
"If you drag along an existing track the new turnout will be attached to the "
"track.\n"
@@ -14815,7 +12941,7 @@ msgstr ""
"Os llusgwch ar hyd trac sy'n bodoli eisoes bydd y pwynt newydd ynghlwm wrth "
"y trac.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1092
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1113
msgid ""
"Note that the status line tells you the number of End-Points that would be "
"connected and, the maximum displacement of the End-Points. This will be "
@@ -14825,26 +12951,27 @@ msgstr ""
"fyddai wedi'u cysylltu ac uchafswm dadleoliad y Pwyntiau Terfynol. Bydd hyn "
"yn ddefnyddiol wrth adeiladu trac cymhleth, fel y gwelwn yn nes ymlaen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:220
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1094
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:256
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1115
+#, fuzzy
msgid ""
"By moving the cursor from one side to the other of the track centerline you "
-"can flip the turnout 180ᅵ.\n"
+"can flip the turnout 180°.\n"
msgstr ""
"Trwy symud y cyrchwr o un ochr i'r llall o linell ganol y trac gallwch "
"fflipio'r pwynt 180 gradd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:236
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1096
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:272
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1117
msgid ""
-"If you try to drag across another turnout the new turnout will placed at the"
-" nearest End-Point of the existing turnout.\n"
+"If you try to drag across another turnout the new turnout will placed at the "
+"nearest End-Point of the existing turnout.\n"
msgstr ""
"Os ceisiwch lusgo ar draws pwynt arall bydd y pwynt newydd yn cael ei osod "
"yn y Pwynt Diwedd agosaf at y pwynt presennol.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:299
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1098
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:335
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1119
msgid ""
"When you press Space or Return while the turnout is on a track, the track "
"will be split and the new turnout attached automatically.\n"
@@ -14852,34 +12979,29 @@ msgstr ""
"Pan fyddwch yn pwyso Gofod neu Ddychweliad tra bod y pwynt ar drac, bydd y "
"trac yn cael ei rannu a bydd y pwynt newydd yn cael ei atodi'n awtomatig.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:307
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:366
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1101
-msgid "Pressing Close ends the <Turnout> command.\n"
-msgstr "Mae Pressing Close yn dod â'r <Turnout> gorchymyn i ben.\n"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:372
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:21
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1104
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:343
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:408
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1123
msgid "Sometimes it's useful to modify turnouts triming one of the ends.\n"
msgstr "Weithiau mae'n ddefnyddiol addasu pwyntiau gan docio un o'r pennau.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1105
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1124
msgid "We use the <Split> command for this.\n"
msgstr "Rydym yn defnyddio'r <Split> gorchymyn ar gyfer hyn.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:28
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1107
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1126
msgid "Normally, if we try to Split a turnout we get an error message.\n"
msgstr "Fel rheol, os ceisiwn Hollti pwynt rydym yn cael neges gwall.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:37
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1109
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1128
msgid "Hold down the Shift key and try again.\n"
msgstr "Daliwch y fysell Shift i lawr a rhoi cynnig arall arni.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:52
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1111
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:52
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1130
msgid ""
"The end of the turnout has been replaced by a piece of straight flex track "
"which we can modify.\n"
@@ -14887,54 +13009,53 @@ msgstr ""
"Mae diwedd y pwynt wedi'i ddisodli gan ddarn o drac fflecs syth y gallwn ei "
"addasu.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1113
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1132
msgid "We can try splitting the diverging leg.\n"
msgstr "Gallwn geisio rhannu'r goes sy'n dargyfeirio.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:74
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1115
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:74
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1134
msgid ""
"Notice that the tail of the diverging leg has been changed to a curved "
"track...\n"
msgstr ""
"Sylwch fod cynffon y goes sy'n dargyfeirio wedi'i newid i drac crwm...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:84
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1117
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1136
msgid "and a straight track.\n"
msgstr "a thrac syth.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:92
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:12
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1120
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:92
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1139
+#, fuzzy
msgid ""
-"This example show how to layout a yard using the <Turnout> and <Parallel> "
-"commands.\n"
+"This example show how to layout a yard using Turnouts from the HotBar and "
+"the <Parallel> command.\n"
msgstr ""
"Mae'r enghraifft hon yn dangos sut i osod iard gan ddefnyddio'r gorchmynion "
"<Turnout> a<Parallel>.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:17
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1122
-msgid ""
-"You can resize and move the Turnout Selection dialog if it obscures the "
-"other windows.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:19
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1141
+msgid "We'll choose a Turnout from the HotBar\n"
msgstr ""
-"Gallwch newid maint a symud y dialog Dewis Pwynt os yw'n cuddio'r ffenestri "
-"eraill.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1123
-msgid "First we place a turnout on the main line.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1142
+#, fuzzy
+msgid "Then we place the Turnout on the main line.\n"
msgstr "Yn gyntaf rydyn ni'n gosod pwynt ar y brif reilffordd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:35
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1125
-msgid "Next extend the turnout with the <Modify> command.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1144
+#, fuzzy
+msgid "Next extend the Turnout with the <Modify> command.\n"
msgstr "Nesaf, estynnwch y nifer sy'n pleidleisio gyda'r <Modify> gorchymyn.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:46
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1127
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1146
msgid ""
"Now create a track parallel to the main line. Make sure the separation is "
"reasonable for your scale.\n"
@@ -14942,322 +13063,2980 @@ msgstr ""
"Nawr crëwch drac sy'n gyfochrog â'r brif linell. Sicrhewch fod y gwahaniad "
"yn rhesymol ar gyfer eich graddfa.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:62
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1129
-msgid "And place a turnout to connect the new track.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1148
+#, fuzzy
+msgid "And place a Turnout to connect the new track.\n"
msgstr "A gosod pwynt i gysylltu'r trac newydd.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1130
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1149
msgid "We'll zoom in here to see what's going on.\n"
msgstr "Byddwn yn chwyddo i mewn yma i weld beth sy'n digwydd.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:78
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1132
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:83
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1151
+#, fuzzy
msgid ""
-"Notice how we control which way the turnout is facing by moving the mouse "
+"Notice how we control which way the Turnout is facing by moving the mouse "
"across the center line of the track.\n"
msgstr ""
-"Sylwch ar sut rydyn ni'n rheoli pa ffordd mae'r pwynt yn wynebu trwy symud y"
-" llygoden ar draws llinell ganol y trac.\n"
+"Sylwch ar sut rydyn ni'n rheoli pa ffordd mae'r pwynt yn wynebu trwy symud y "
+"llygoden ar draws llinell ganol y trac.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:94
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1134
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1153
+#, fuzzy
msgid ""
-"The Status bar displays the number of auto-connections that will be made and"
-" the maximum offset.\n"
+"The Status bar displays the number of auto-connections that will be made (3) "
+"and the maximum offset (0.000).\n"
msgstr ""
"Mae'r bar Statws yn dangos nifer y cysylltiadau auto a fydd yn cael eu "
"gwneud a'r gwrthbwyso uchaf.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1135
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1154
+#, fuzzy
msgid ""
-"XTrackCAD adjusts the turnout position for the best fit to minimize any "
+"XTrackCAD adjusts the Turnout position for the best fit to minimize any "
"connection offset\n"
msgstr ""
"Mae XTrackCAD yn addasu'r safle pwynt ar gyfer y ffit orau i leihau unrhyw "
"gysylltiadau i ffwrddet\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:106
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1137
-msgid "Note that placing the turnout splits the parallel track.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1156
+#, fuzzy
+msgid "Note that placing the Turnout splits the parallel track.\n"
msgstr "Sylwch fod gosod y pwynt yn hollti'r trac cyfochrog..\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1138
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1157
msgid "We have to delete the leftover piece by Selecting and Deleting it.\n"
msgstr "Mae'n rhaid i ni ddileu'r darn dros ben trwy Ei Ddethol a'i Ddileu..\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:120
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1140
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:126
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1159
msgid "Repeat the process for the other tracks in the yard.\n"
msgstr "Ailadroddwch y broses ar gyfer y traciau eraill yn yr iard.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:149
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1142
-msgid "For the last track we will join with a curve instead of a turnout.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1161
+#, fuzzy
+msgid "For the last track we will join with a curve instead of a Turnout.\n"
msgstr "Ar gyfer y trac olaf byddwn yn ymuno â chromlin yn lle pwynt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:185
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrkwid.xtr:91
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1145
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1164
msgid "We can indicate the mainline by making the rails wider.\n"
msgstr "Gallwn nodi'r brif reilffordd trwy wneud y cledrau'n lletach.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1146
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1165
msgid "First we select the mainline tracks...\n"
msgstr "Yn gyntaf rydyn ni'n dewis y traciau prif reilffordd ...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrkwid.xtr:128
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1148
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1167
msgid "And then select Medium Tracks from the Edit menu.\n"
msgstr "Ac yna dewiswch Traciau Canolig o'r ddewislen Golygu.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1149
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1168
msgid "We can't show the Edit menu, but we can show the effect.\n"
msgstr "Ni allwn ddangos y ddewislen Golygu, ond gallwn ddangos yr effaith..\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrkwid.xtr:137
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1151
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:137
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1170
msgid "We can make the rail thicker by selecting Thick Tracks.\n"
msgstr ""
"Gallwn wneud y rheilffordd yn fwy trwchus trwy ddewis Traciau Trwchus.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrkwid.xtr:148
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrntab.xtr:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1154
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:148
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1173
msgid ""
"Turntables are created by specifying the radius in a dialog box on the "
"Status Bar. The radius in the dialog can be changed before proceeding.\n"
msgstr ""
-"Mae trofyrddau'n cael eu creu trwy nodi'r radiws mewn blwch deialog ar y Bar"
-" Statws. Gellir newid y radiws yn y dialog cyn bwrw ymlaen.\n"
+"Mae trofyrddau'n cael eu creu trwy nodi'r radiws mewn blwch deialog ar y Bar "
+"Statws. Gellir newid y radiws yn y dialog cyn bwrw ymlaen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrntab.xtr:15
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1156
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:15
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1175
msgid "Then the turntable is dragged to its final location.\n"
msgstr "Yna mae'r trofwrdd yn cael ei lusgo i'w leoliad olaf.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrntab.xtr:22
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:433
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1159
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:22
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:433
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1178
msgid "Introduction"
msgstr "Cyflwyniad"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:434
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1161
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:434
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1180
msgid "Mouse Actions"
msgstr "Camau Llygoden"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:435
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1163
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:435
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1182
msgid "Dialogs"
msgstr "Deialogau"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:436
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1165
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:436
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1184
msgid "Moving about"
msgstr "Symud o gwmpas"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:437
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1167
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:437
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1186
msgid "Describe and Select"
msgstr "Disgrifio a Dewis"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:438
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1169
-msgid "Describe"
-msgstr "Disgrifiwch"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:440
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1173
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:440
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1192
msgid "Simple tracks"
msgstr "Traciau syml"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:441
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1175
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:441
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1194
msgid "Straight tracks"
msgstr "Traciau syth"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:442
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1177
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:442
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1196
msgid "Curved tracks"
msgstr "Traciau crwm"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:443
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1179
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:443
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1198
msgid "Circles"
msgstr "Cylchoedd"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:444
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1181
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:444
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1200
msgid "Turntables"
msgstr "Trofyrddau"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:445
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1183
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:445
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1202
msgid "Modifying tracks"
msgstr "Addasu traciau"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:446
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1185
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:446
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1204
msgid "Modifying end points "
msgstr "Addasu pwyntiau gorffen"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:447
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1187
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:447
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1206
msgid "Extending"
msgstr "Ymestyn"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:448
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1189
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:448
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1208
msgid "Medium and Thick Tracks"
msgstr "Traciau Canolig a Thiubh"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:449
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1191
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:449
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1210
msgid "Joining Tracks"
msgstr "Ymuno Traciau"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:450
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1193
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:450
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1212
msgid "Straight to straight"
msgstr "Syth i syth"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:451
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1195
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:451
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1214
msgid "Curve to straight"
msgstr "Cromlin i syth"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:452
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1197
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:452
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1216
msgid "Circle to circle"
msgstr "Cylchwch i gylch"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:453
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1199
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:453
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1218
msgid "Joining to turntables"
msgstr "Ymuno â throfyrddau"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:454
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1201
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:454
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1220
msgid "Easements"
msgstr "Rhwyddinebau"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:455
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1203
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:455
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1222
msgid "Abutting tracks"
msgstr "Traciau cyffiniol"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:456
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1205
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1224
msgid "Move to Join"
msgstr "Symud i Ymuno"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:458
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1209
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:458
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1228
msgid "Select and Placement"
msgstr "Dewis a Lleoli"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:459
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1211
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:459
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1230
msgid "Building a yard throat."
msgstr "Adeiladu gwddf iard.."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:460
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1213
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:460
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1232
msgid "Designing turnouts"
msgstr "Dylunio pwyntiau"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:461
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1215
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:461
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1234
msgid "Group and Ungroup"
msgstr "Grŵp ac Ungroup"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:462
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1217
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:462
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1236
msgid "Triming Turnout Ends"
msgstr "Diwedd Pwynt Trimio"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:463
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1219
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:463
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1238
msgid "Handlaid Turnouts"
msgstr "Pwyntiau wedi'u Llawio"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:464
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1221
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1240
msgid "Elevations and Profile"
msgstr "Drychiadau a Phroffil"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:465
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1223
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:465
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1242
msgid "Elevations"
msgstr "Drychiadau"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:467
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1227
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:467
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1246
msgid "Misc track commands"
msgstr "Gorchmynion trac amrywiol"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:468
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1229
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:468
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1248
msgid "Delete and Undo"
msgstr "Dileu a Dadwneud"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:469
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1231
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:469
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1250
msgid "Splitting and Tunnels"
msgstr "Hollti a Thwneli"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:471
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1235
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:471
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1254
msgid "Helix tracks"
msgstr "Traciau Helix"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:472
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1237
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:472
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1256
msgid "Exception Tracks"
msgstr "Traciau Eithriad"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:474
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1241
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:474
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1260
msgid "Connect and Tighten - a siding"
msgstr "Cysylltu a Thynhau - seidin"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:475
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1243
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:475
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1262
msgid "Connect and Tighten - figure-8"
msgstr "Cysylltu a Thynhau - ffigur-8"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:476
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1245
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:476
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1264
msgid "Other commands"
msgstr "Gorchmynion eraill"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:478
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1249
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:478
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1268
msgid "Table Edges"
msgstr "Ymylon Tabl"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:480
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1253
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:480
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1272
msgid "Dimension Lines"
msgstr "Llinellau Dimensiwn"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:481
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1255
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:481
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1274
msgid "Lines"
msgstr "Llinellau"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:482
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1257
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:482
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1276
msgid "Poly-Shapes"
msgstr "Siapiau Poly"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:483
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1259
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:483
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1278
msgid "Modifying Poly-Shapes"
msgstr "Addasu Siapiau Poly"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:486
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1265
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:486
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1284
msgid "Control Panels"
msgstr "Paneli Rheoli"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:9
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1288
+#, fuzzy
+msgid "Test Turnout Designer\n"
+msgstr "%s Dylunydd Pwynt"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1289
+msgid ""
+"This demo invokes each Turnout Designer and generates the turnout "
+"definition.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1290
+msgid ""
+"Each definition is placed on the layout and Regression checks that each "
+"matches.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1291
+#, fuzzy
+msgid "Instructions:\n"
+msgstr "Cyflwyniad"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1292
+msgid " Run xtrkcad with the regression option set to 2:\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1293
+msgid " xtrkcad -d regression=2\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1294
+msgid ""
+" Select the recording (Macro|Playback) from $(SRCDIR)/app/tools/"
+"TurnoutDesigner.xtr\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1295
+msgid " \n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1296
+msgid ""
+" Playback the demo. You probably want to choose a faster playback Speed.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1297
+msgid "Check the log file (Linux: stdout, Windows: xtclog.txt)\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:497
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:594
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:867
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:913
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1299
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1308
+msgid "-----------------------------------------------------\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1300
+#, fuzzy
+msgid "Create an instance of each turnout\n"
+msgstr "Creu pwynt wedi'i osod â llaw"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1303
+#, fuzzy
+msgid "Run Regression Checks\n"
+msgstr "Atchweliad"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1306
+#, fuzzy
+msgid "Remove the parameter definitions\n"
+msgstr "Dileu cofnodion dethol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:9
+msgid "Invokes online help for this dialog"
+msgstr "Yn gofyn am gymorth ar-lein ar gyfer y deialog hon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:10
+msgid "Cancels this command"
+msgstr "Yn canslo'r gorchymyn hwn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:11
+msgid "Closes the dialog"
+msgstr "Yn cau'r ymgom"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:12
+msgid "About program dialog"
+msgstr "Ynglŷn â deialog y rhaglen "
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:13
+msgid "Move selected object to top"
+msgstr "Symudwch wrthrych a ddewiswyd i'r brig"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:14
+msgid "Raise or lower all selected tracks"
+msgstr "Codi neu ostwng yr holl draciau a ddewiswyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:15
+msgid "Show a protractor"
+msgstr "Dangos onglydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:16
+msgid "Turn magnetic snap on or off"
+msgstr "Trowch snap magnetig ymlaen neu i ffwrdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:18
+msgid "Move selected object to bottom"
+msgstr "Symud gwrthrych a ddewiswyd i'r gwaelod"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:19
+msgid "Create a section of track for automation"
+msgstr "Creu darn o drac ar gyfer awtomeiddio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:20
+msgid "Edit a block definition "
+msgstr "Golygu diffiniad bloc"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:21
+msgid "Create a new Car/Loco description"
+msgstr "Creu disgrifiad Car / Loco newydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:22
+msgid "Manage your Car and Loco Inventory"
+msgstr "Rheoli eich Rhestr Car a Loco"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:23
+msgid "Create track circle from center"
+msgstr "Creu cylch trac o'r canol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:24
+msgid "Create fixed radius track circle"
+msgstr "Creu cylch trac radiws sefydlog"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:25
+msgid "Set Circle Track creation mode"
+msgstr "Gosod modd creu Trac Cylch"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:26
+msgid "Create track circle from tangent"
+msgstr "Creu cylch trac o tangiad"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:27
+msgid "Removes elevation from Selected tracks"
+msgstr "Yn tynnu drychiad o draciau dethol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:28
+msgid "Copy objects to clipboard and duplicate them in exactly the same place"
+msgstr "Copïwch wrthrychau i'r clipfwrdd a'u dyblygu yn yr un lle yn union"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:29
+msgid "Command Options dialog"
+msgstr "Deialog Opsiynau Gorchymyn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:30
+msgid "Controls colors"
+msgstr "Yn rheoli lliwiau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:31
+msgid "Connect two tracks"
+msgstr "Cysylltu dau drac"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:32
+msgid "Create a control for layout automation"
+msgstr "Creu rheolydd ar gyfer awtomeiddio cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:33
+msgid "Select control element to create"
+msgstr "Dewiswch elfen reoli i'w chreu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:34
+msgid "Manage control elements"
+msgstr "Rheoli elfennau rheoli"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:35
+msgid "Set Convert mode"
+msgstr "Gosod modd Trosi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:36
+msgid "Convert from Fixed Track to Cornu"
+msgstr "Trosi o Drac Sefydlog i Cornu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:37
+msgid "Convert from Cornu and Bezier to Fixed Track"
+msgstr "Trosi o Cornu a Bezier i Drac Sefydlog"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:38
+msgid "Copy selected objects to clipboard"
+msgstr "Copïwch wrthrychau dethol i'r clipfwrdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:39
+msgid "Create Cornu track"
+msgstr "Creu trac Cornu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:40
+msgid "Create curved track from center"
+msgstr "Creu trac crwm o'r canol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:41
+msgid "Create curved track from chord"
+msgstr "Creu trac crwm o'r cord"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:42
+msgid "Create curved track from end-point"
+msgstr "Creu trac crwm o'r pwynt olaf"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:43
+msgid "Create Bezier track"
+msgstr "Creu trac Bezier"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:44
+msgid "Set Curve Track creation mode"
+msgstr "Gosod modd creu Trac Crwm"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:45
+msgid "Create curved track from tangent"
+msgstr "Creu trac crwm o tangiad"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:46
+msgid "Manipulate Custom designer entries"
+msgstr "Trin cofnodion dylunwyr Custom"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:47
+msgid "Moves selected objects to clipboard"
+msgstr "Symud gwrthrychau dethol i glipfwrdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:48
+msgid "Delete objects"
+msgstr "Dileu gwrthrychau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:49
+msgid "Playback demos"
+msgstr "Demos chwarae"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:50
+msgid "Change Object Properties"
+msgstr "Newid Priodweddau Gwrthrych"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:51
+msgid "Change to properties mode"
+msgstr "Newid i'r modd priodweddau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:52
+msgid "Deselect all selected objects"
+msgstr "Dad-ddewiswch yr holl wrthrychau a ddewiswyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:53
+msgid "Change Display parameters"
+msgstr "Newid paramedrau Arddangos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:54
+msgid "Create benchwork"
+msgstr "Creu byrddau sylfaen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:55
+msgid "Create a box"
+msgstr "Creu blwch"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:56
+msgid "Set Circle drawing command"
+msgstr "Gosod gorchymyn lluniadu Cylch"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:57
+msgid "Create a circle"
+msgstr "Creu cylch"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:58
+msgid "Draw a circle line from center"
+msgstr "Tynnwch linell gylch o'r canol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:59
+msgid "Draw a fixed radius circle line"
+msgstr "Tynnwch linell gylch radiws sefydlog"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:60
+msgid "Draw a circle line from tangent"
+msgstr "Tynnwch linell gylch o tangiad"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:61
+msgid "Set Curve drawing command"
+msgstr "Gosod gorchymyn lluniadu Curve"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:62
+msgid "Create a curved line"
+msgstr "Creu llinell grom"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:63
+msgid "Create a curved line from End"
+msgstr "Creu llinell grom o End"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:64
+msgid "Create a curved line from center"
+msgstr "Creu llinell grom o'r canol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:65
+msgid "Create a curved line from chord"
+msgstr "Creu llinell grom o'r cord"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:66
+msgid "Create a curved line from tangent"
+msgstr "Creu llinell grom o tangiad"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:67
+msgid "Create a Bezier line"
+msgstr "Creu llinell Bezier"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:68
+msgid "Create a dimension line"
+msgstr "Creu llinell ddimensiwn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:69
+msgid "Create a filled box"
+msgstr "Creu blwch wedi'i lenwi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:70
+msgid "Create a filled circle"
+msgstr "Creu cylch wedi'i lenwi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:71
+msgid "Draw a filled circle from center"
+msgstr "Tynnwch gylch wedi'i lenwi o'r canol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:72
+msgid "Draw a fixed radius filled circle"
+msgstr "Lluniwch gylch sefydlog wedi'i lenwi â radiws"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:73
+msgid "Draw a filled circle from tangent"
+msgstr "Tynnwch gylch wedi'i lenwi o tangiad"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:74
+msgid "Create a polygon"
+msgstr "Creu polygon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:75
+msgid "Create a filled polygon"
+msgstr "Creu polygon wedi'i lenwi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:76
+msgid "Create a polyline"
+msgstr "Creu polyline"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:77
+msgid "Create a straight line"
+msgstr "Creu llinell syth"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:78
+msgid "Set Line drawing command"
+msgstr "Gosod gorchymyn lluniadu Llinell"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:79
+msgid "Set Shape drawing command"
+msgstr "Gosod gorchymyn lluniadu Siâp"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:80
+msgid "Draw table edge"
+msgstr "Tynnwch ymyl bwrdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:81
+msgid "Easement menu"
+msgstr "Dewislen rhwyddineb"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:83
+msgid "Generate a Parts List of selected objects"
+msgstr "Cynhyrchu Rhestr Rhannau o wrthrychau dethol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:84
+msgid "Set Import/Export mode"
+msgstr "Gosod modd Mewnforio / Allforio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:85
+#, fuzzy
+msgid "Export an .xti file"
+msgstr "Allforio a .xti ffile"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:86
+msgid "Export a Bitmap image"
+msgstr "Allforio delwedd Bitmap"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:87
+msgid "Export a DXF file"
+msgstr "Allforio a DXF ffile"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:88
+#, fuzzy
+msgid "Export an SVG file"
+msgstr "Allforio a DXF ffile"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:90
+msgid "Flip selected objects"
+msgstr "Fflipio gwrthrychau dethol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:91
+msgid "Adjust snap grid"
+msgstr "Addasu grid snap"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:92
+msgid "Enable snap grid"
+msgstr "Galluogi grid snap"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:93
+msgid "Show snap grid"
+msgstr "Dangos grid snap"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:94
+msgid "Create a structure from a Group of objects"
+msgstr "Creu strwythur o Grŵp o wrthrychau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:95
+msgid "Create a hand-laid turnout"
+msgstr "Creu pwynt wedi'i osod â llaw"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:96
+msgid "Create a track helix"
+msgstr "Creu helics trac"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:97
+#, fuzzy
+msgid "Import an .xti file"
+msgstr "Mewnforio a .xti ffile"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:98
+msgid "Import an .xti file as a Module"
+msgstr "Mewnforio a .xti ffile fel Modiwl"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:99
+msgid "Join two tracks"
+msgstr "Ymunwch â dau drac"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:100
+msgid "Join two lines or polylines"
+msgstr "Ymunwch â dwy linell neu polylines"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:101
+msgid "Set Join mode"
+msgstr "Modd Ymunwch modd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:102
+msgid "Change Layers"
+msgstr "Newid Haenau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:103
+msgid "Selects the current drawing layer"
+msgstr "Yn dewis yr haen arlunio gyfredol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:104
+msgid "Layout parameters"
+msgstr "Paramedrau cynllun "
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:106
+msgid "Show/Hide Map Window"
+msgstr "Dangos / Cuddio Ffenestr Map"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:107
+msgid "Select Measurement Tool"
+msgstr "Dewiswch Offeryn Mesur"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:108
+msgid "Modify or extend a track"
+msgstr "Addasu neu ymestyn trac"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:109
+msgid "Change To modify mode"
+msgstr "Newid I addasu'r modd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:110
+msgid "Move selected objects"
+msgstr "Symud gwrthrychau dethol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:111
+msgid "Move a label"
+msgstr "Symud label"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:112
+msgid "Move selected objects to current layer"
+msgstr "Symud gwrthrychau dethol i'r haen gyfredol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:114
+msgid "Print a bitmap"
+msgstr "Argraffu Bitmap"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:115
+msgid "Pan or zoom the layout"
+msgstr "Pan neu chwyddo'r cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:116
+msgid "Change to zoom/pan mode"
+msgstr "Newid i'r modd chwyddo / padell"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:117
+msgid "Create a parallel track"
+msgstr "Creu trac cyfochrog"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:118
+msgid "Create a parallel line"
+msgstr "Creu llinell gyfochrog"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:119
+msgid "Set Parallel mode"
+msgstr "Gosod modd Cyfochrog"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:120
+msgid "Register"
+msgstr "Cofrestrwch"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:121
+msgid "Copy objects from clipboard"
+msgstr "Copïwch wrthrychau o'r clipfwrdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:122
+msgid "Perferences dialog"
+msgstr "Deialog dewisiadau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:123
+msgid "Display prices of turnouts, sectional tracks and structures"
+msgstr "Arddangos prisiau pwyntiau, traciau adrannol a strwythurau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:124
+msgid "Print the layout"
+msgstr "Argraffwch y cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:125
+msgid "Loads and unloads parameter files into/from toolbar"
+msgstr "Llwythi a dadlwytho ffeiliau paramedr i mewn / allan o'r bar offer"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:126
+msgid "Elevation Profile Command"
+msgstr "Gorchymyn Proffil Drychiad"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:128
+msgid "Command recorder"
+msgstr "Recordydd gorchymyn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:130
+msgid "Update selected Turnout and Structure definitions"
+msgstr "Diweddarwch y diffiniadau a bleidleisiodd a Strwythur a ddewiswyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:131
+msgid "Rescale selected objects"
+msgstr "Ail-lunio gwrthrychau dethol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:132
+msgid "Rotate selected object(s)"
+msgstr "Cylchdroi gwrthrych(au) dethol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:133
+msgid "Show a ruler"
+msgstr "Dangos pren mesur"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:134
+msgid "Select objects"
+msgstr "Dewiswch wrthrychau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:135
+msgid "Change To Select Mode"
+msgstr "Newid I Ddethol Modd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:136
+msgid "Selects all objects on the layout"
+msgstr "Yn dewis yr holl wrthrychau ar y cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:137
+msgid "Selects all objects in the current Layer"
+msgstr "Yn dewis yr holl wrthrychau yn yr Haen gyfredol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:138
+msgid "Choose objects by Index number"
+msgstr "Dewiswch wrthrychau yn ôl rhif Mynegai"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:139
+msgid "Invert current selection"
+msgstr "Gwrthdroi dewis cyfredol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:140
+msgid "Configure the Printer"
+msgstr "Ffurfweddwch yr Argraffydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:141
+msgid "Set Split mode"
+msgstr "Gosod modd Hollti"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:142
+msgid "Split a track"
+msgstr "Rhannwch drac"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:143
+msgid "Split a straight, curved, circle, polygon or polyline Draw Object "
+msgstr "Rhannwch Wrthrych Tynnu syth, crwm, cylch, polygon neu polyline"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:144
+msgid "Select stranded (unconnected) track pieces"
+msgstr "Dewiswch ddarnau trac sownd (digyswllt)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:145
+msgid "Create a sensor (ie. a occupancy detector or a toggle switch)"
+msgstr "Creu synhwyrydd (h.y. synhwyrydd deiliadaeth neu switsh togl)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:146
+msgid "Create a signal for train control"
+msgstr "Creu signal ar gyfer rheoli trên"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:147
+msgid "Choose which commands are sticky"
+msgstr "Dewiswch pa orchmynion sy'n ludiog"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:148
+msgid "Create straight track"
+msgstr "Creu trac syth"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:149
+msgid "Place a structure on the layout"
+msgstr "Rhowch strwythur ar y cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:150
+msgid "Create a switchmotor for turnout control"
+msgstr "Creu pwyntmotor ar gyfer rheoli pwyntiau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:151
+msgid "Edit a switchmotor definition"
+msgstr "Golygu diffiniad pwynt-modur"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:152
+msgid "Enter text on the layout"
+msgstr "Rhowch destun ar y cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:153
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:612
+msgid "Controls the size of the entered text"
+msgstr "Mae'n rheoli maint y testun a gofnodwyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:155
+msgid "Tip of the Day window"
+msgstr "ffenestr blaen y dydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:157
+msgid "Change To Run Trains Mode"
+msgstr "Newid I Rhedeg Modd Trenau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:158
+msgid "Pause/Resume Trains"
+msgstr "Trenau Saib / Ail-ddechrau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:159
+msgid "Place a car on the layout"
+msgstr "Rhowch gar ar y cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:160
+msgid "Exit Trains"
+msgstr "Trenau Ymadael"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:161
+msgid "Trim a line, circle or polyline Draw Object using a second Object"
+msgstr ""
+"Trimiwch linell, cylch neu polyline Gwrthrych Tynnu gan ddefnyddio ail "
+"Wrthrych"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:162
+msgid "Hide/Unhide a track"
+msgstr "Cuddio / Dad-guddio trac"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:163
+msgid "Make/Unmake a track a bridge"
+msgstr "Gwneud / Dad-wneud trac yn bont"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:164
+msgid "Place a turnout or sectional track"
+msgstr "Rhowch bwynt neu drac adrannol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:165
+msgid "Create a new turnout definition"
+msgstr "Creu diffiniad pwynt newydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:166
+msgid "Place a turntable"
+msgstr "Rhowch drofwrdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:167
+msgid "Updates old source files with 3 part titles"
+msgstr "Yn diweddaru hen ffeiliau ffynhonnell gyda theitlau 3 rhan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:169
+msgid "Ungroup objects"
+msgstr "Gwrthrychau heb grwp"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:170
+msgid "Draw tracks with thin lines"
+msgstr "Tynnwch draciau gyda llinellau tenau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:171
+msgid "Draw tracks with medium lines"
+msgstr "Tynnwch draciau gyda llinellau canolig"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:172
+msgid "Draw tracks with thick lines"
+msgstr "Tynnwch draciau gyda llinellau trwchus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:173
+msgid "Change drawing scale"
+msgstr "Newid graddfa arlunio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:174
+#, fuzzy
+msgid "Zoom to Fit"
+msgstr "Chwyddo allan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:175
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:206
+msgid "Zoom in"
+msgstr "Chwyddo i mewn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:176
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:207
+msgid "Zoom out"
+msgstr "Chwyddo allan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:180
+msgid "Curved Fixed"
+msgstr "Crwm Sefydlog"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:181
+msgid "Preferred Radius"
+msgstr "Radiws a Ffefrir"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:182
+msgid "Modify Draw"
+msgstr "Addasu Draw"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:189
+msgid "Rotation Angle"
+msgstr "Ongl Cylchdroi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:190
+msgid "Rot Center X"
+msgstr "Canolfan cylchdroi X"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:191
+msgid "Rot Center Y"
+msgstr "Canolfan cylchdroi Y"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:193
+msgid "File Menu"
+msgstr "Dewislen Ffeil"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:194
+msgid "Save layout"
+msgstr "Cadw cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:195
+msgid "Save layout under a new name "
+msgstr "Cadw cynllun o dan enw newydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:196
+msgid "New layout"
+msgstr "Cynllun newydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:197
+msgid "Generate parts list"
+msgstr "Cynhyrchu rhestr rhannau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:198
+msgid "Load a layout"
+msgstr "Llwythwch gynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:199
+msgid "Manage Parameter Files"
+msgstr "Rheoli Ffeiliau Paramedr"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:200
+msgid "Print layout"
+msgstr "Cynllun argraffu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:201
+msgid "Exit the program"
+msgstr "Ymadael â'r rhaglen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:202
+msgid "Revert to last saved state of layout plan"
+msgstr "Dychwelwch i'r cynllun cynllun cyflwr olaf a arbedwyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:203
+msgid "Printer Setup"
+msgstr "Gosod Argraffydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:204
+msgid "Edit menu"
+msgstr "Golygu dewislen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:205
+msgid "Redraw layout"
+msgstr "Cynllun ail-lunio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:208
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:211
+msgid "Tools menu"
+msgstr "Dewislen offer"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:209
+msgid "View menu"
+msgstr "Gweld y ddewislen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:210
+msgid "Toolbar configuration"
+msgstr "Cyfluniad bar offer"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:212
+msgid "Options menu"
+msgstr "Dewislen opsiynau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:213
+msgid "Playback/Record commands"
+msgstr "Gorchmynion Chwarae / Cofnodi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:214
+msgid "Window menu"
+msgstr "Dewislen ffenestr"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:215
+msgid "Help menu"
+msgstr "Dewislen help"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:216
+msgid "Recent error messages and explanations"
+msgstr "Negeseuon gwall ac esboniadau diweddar"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:217
+msgid "Move Hot Bar left"
+msgstr "Symudwch Bar Poeth i'r chwith"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:218
+msgid "Move Hot Bar right"
+msgstr "Symudwch Bar Poeth i'r dde"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:219
+msgid "Total track count"
+msgstr "Cyfanswm cyfrif y trac"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:220
+msgid "X Position of cursor"
+msgstr "X Safle cyrchwr"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:221
+msgid "Y Position of cursor"
+msgstr "Y Safle cyrchwr"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:222
+msgid "Drawing scale"
+msgstr "Graddfa arlunio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:223
+msgid "Message and status line"
+msgstr "Llinell neges a statws"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:224
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:225
+msgid "Main layout canvas"
+msgstr "Cynfas y prif gynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:226
+msgid "Main drawing canvas"
+msgstr "Cynfas prif lun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:227
+msgid "Command buttons"
+msgstr "Botymau gorchymyn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:228
+msgid "Menus"
+msgstr "Bwydlenni"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:229
+msgid "Tile, Filename and Window Manager buttons"
+msgstr "Botymau Rheolwr Teils, Enw Ffeil a Ffenestr"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:230
+msgid "Turnout and Structure Hot Bar"
+msgstr "Bar Poeth Pwynt a Strwythur"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:231
+msgid "Active layer list and layer buttons"
+msgstr "Rhestr haenau gweithredol a botymau haen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:232
+msgid "Map window"
+msgstr "Ffenestr map"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:233
+msgid "This is the portion of the layout shown in the Main Window canvas"
+msgstr "Dyma'r gyfran o'r cynllun a ddangosir yn gynfas y Brif Ffenestr"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:234
+msgid "Raise or Lower all Selected Track"
+msgstr "Codi neu Gostwng yr holl Drac a Ddetholwyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:235
+msgid "Name of block"
+msgstr "Enw'r bloc"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:236
+msgid "Script that the block will run"
+msgstr "Sgript y bydd y bloc yn rhedeg"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:237
+msgid "List of tracks in the Block"
+msgstr "Rhestr o draciau yn y Bloc"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:238
+msgid "Add or Update car object"
+msgstr "Ychwanegu neu Ddiweddaru Gwrthrych Car"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:239
+msgid "Manufacturer name"
+msgstr "Enw'r gwneuthurwr"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:242
+msgid "Is the Car a Locomotive?"
+msgstr "A yw'r Car yn Locomotif?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:243
+msgid "Part Number and Description"
+msgstr "Rhif Rhan a Disgrifiad"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:244
+msgid "Manufacturer Part Number"
+msgstr "Gwneuthurwr Rhan Rhif"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:245
+msgid "Use the Selected figure as the car image"
+msgstr "Defnyddiwch y ffigur Dethol fel delwedd y car"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:246
+msgid "Use the default figure as the car image"
+msgstr "Defnyddiwch y ffigur diofyn fel delwedd y car"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:247
+msgid "Optional description of the Car Part"
+msgstr "Disgrifiad dewisol o'r Rhan Car"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:248
+msgid "Flip car image"
+msgstr "Delwedd car troi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:249
+msgid "Display Car Item information or reporting marks and dimensions"
+msgstr "Arddangos gwybodaeth Eitem Car neu farciau a dimensiynau adrodd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:250
+msgid "Full Roadname"
+msgstr "Enw Ffordd Llawn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:251
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:252
+msgid "Car Type"
+msgstr "Math o Gar"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:253
+msgid "Reporting Marks (Roadname abbreviation)"
+msgstr "Marciau Adrodd (Talfyriad Enw Ffordd)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:254
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:489
+msgid "Car Number"
+msgstr "Rhif Car"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:255
+msgid "Car body Color"
+msgstr "Lliw corff car"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:256
+msgid "Length of car body"
+msgstr "Hyd corff y car"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:257
+msgid "Width of car body"
+msgstr "Lled corff y car"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:258
+msgid "Distance between Trucks "
+msgstr "Pellter rhwng Tryciau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:259
+msgid "Distance Trucks are displaced along Car"
+msgstr "Mae Tryciau Pellter yn cael eu dadleoli ar hyd Car"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:260
+msgid "Coupler are mounted on body or truck"
+msgstr "Mae cwpller wedi'u gosod ar gorff neu lori"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:261
+msgid "Overall Coupled Length"
+msgstr "Hyd Cypledig Cyffredinol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:262
+msgid "Coupler Length from end of car"
+msgstr "Hyd y cwplwr o ddiwedd y car"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:263
+msgid "Diagram of Car"
+msgstr "Diagram o Gar"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:264
+msgid "Item Index Number"
+msgstr "Rhif Mynegai Eitem"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:265
+msgid "Original Purchase Price"
+msgstr "Pris Prynu Gwreiddiol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:267
+msgid "Condition of car"
+msgstr "Cyflwr y car"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:268
+msgid "Original Purchase Date - yyyymmdd"
+msgstr "Dyddiad Prynu Gwreiddiol - yyyymmdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:269
+msgid "Last Service Date - yyyymmdd"
+msgstr "Dyddiad Gwasanaeth Olaf - yyyymmdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:270
+msgid "Number of identical cars to be entered"
+msgstr "Nifer y ceir union yr un fath i'w nodi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:271
+msgid "Do all the cars have the same Number?"
+msgstr "Oes gan yr holl geir yr un Rhif?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:272
+msgid "Notes about the car"
+msgstr "Nodiadau am y car"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:273
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:274
+msgid "Create a new car Part or Prototype definitions"
+msgstr "Creu diffiniadau Rhan neu Brototeip car newydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:275
+msgid "Finds the selected Car Item on the layout"
+msgstr "Yn dod o hyd i'r Eitem Car a ddewiswyd ar y cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:276
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:277
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:278
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:279
+msgid "Sort the Item list"
+msgstr "Trefnwch y rhestr Eitem"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:281
+msgid "Edit the selected Car Item"
+msgstr "Golygu'r Eitem Car a ddewiswyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:282
+msgid "Add a new Car Item"
+msgstr "Ychwanegwch Eitem Car newydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:283
+msgid "Delete from Inventory or return to Shelf"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:284
+msgid "Import a Car Item .csv file"
+msgstr "Mewnforio Eitem Car .csv ffile"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:285
+msgid "Export a Car Item .csv file"
+msgstr "Allforio Eitem Car .csv ffile"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:286
+msgid "Create a text list of the Car Items"
+msgstr "Creu rhestr destun o'r Eitemau Car"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:287
+msgid "Specifies the radius of the circle track"
+msgstr "Yn nodi radiws y trac cylch"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:288
+msgid "Default command is Describe or Select"
+msgstr "Gorchymyn diofyn yw Disgrifio neu Dewis"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:289
+msgid "Action to invoke on Right-Click"
+msgstr "Camau i weithredu ar De-gliciwch"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:290
+msgid ""
+"Replace current selection with clicked object or add clicked object to "
+"selection"
+msgstr ""
+"Amnewid y dewis cyfredol gyda gwrthrych wedi'i glicio neu ychwanegu "
+"gwrthrych wedi'i glicio at y dewis"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:291
+msgid "Clicking into an empty area clears selection if select mode is <add>"
+msgstr ""
+"Mae clicio i mewn i ardal wag yn clirio'r dewis os yw'r modd dethol <add>"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:293
+msgid "The list of control elements"
+msgstr "Y rhestr o elfennau rheoli"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:294
+msgid "Edit the element"
+msgstr "Golygu'r elfen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:295
+msgid "Delete the element"
+msgstr "Golygu'r elfen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:296
+msgid "Contents Label for new Parameter file"
+msgstr "Label Cynnwys ar gyfer ffeil Paramedr newydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:297
+msgid "Desired curve radius for new track"
+msgstr "Radiws cromlin dymunol ar gyfer trac newydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:298
+msgid "List of custom designed turnouts and structures"
+msgstr "Rhestr o bwyntiau a strwythurau wedi'u cynllunio'n benodol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:299
+msgid "Change description, manufacturer or part number."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:300
+msgid "Remove selected entries"
+msgstr "Dileu cofnodion dethol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:301
+#, fuzzy
+msgid "Copy selected entries to parameter file"
+msgstr "Copïwch gofnodion dethol i Ffeil Paramedr"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:302
+#, fuzzy
+msgid "Create the selected type"
+msgstr "Dileu'r Eitemau Car a ddewiswyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:303
+#, fuzzy
+msgid "Create a new part or prototype?"
+msgstr "Creu rhan neu brototeip newydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:304
+msgid "Update custom file and close"
+msgstr "Diweddarwch y ffeil arfer a'i chau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:305
+msgid "Executes the next step of the demo"
+msgstr "Yn gweithredu cam nesaf y demo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:306
+msgid "Skip to next demo"
+msgstr "Neidio i'r demo nesaf"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:307
+msgid "Stops the demonstration and returns you to XTrackCAD"
+msgstr "Yn stopio'r arddangosiad ac yn eich dychwelyd iddo XTrackCAD"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:308
+msgid "Select speed of Playback"
+msgstr "Dewiswch gyflymder Chwarae"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:309
+msgid "This is where comments about the demo are displayed"
+msgstr "Dyma lle mae sylwadau am y demo yn cael eu harddangos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:346
+msgid "Move the Main canvas if you drag near the edge"
+msgstr "Symudwch y Prif gynfas os ydych chi'n llusgo ger yr ymyl"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:347
+msgid "Color tracks by layer or individually"
+msgstr "Llwybrau lliw yn ôl haen neu'n unigol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:348
+msgid "Color draw objects by layer or individually"
+msgstr "Lliwiwch wrthrychau lliw fesul haen neu'n unigol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:349
+msgid "Controls the drawing of hidden tracks"
+msgstr "Yn rheoli lluniadu traciau cudd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:350
+msgid "Controls the drawing of End-Points"
+msgstr "Mae'n rheoli lluniadu pwyntiau diwedd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:351
+msgid "How to draw track ties"
+msgstr "Sut i dynnu llun cysgu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:352
+msgid "Show crosshair at center of curves"
+msgstr "Dangos crosshair yng nghanol y cromliniau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:353
+msgid "Drawing scale when to draw tracks with 2 rails"
+msgstr "Graddfa dynnu pryd i dynnu traciau gyda 2 reilen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:354
+msgid "Drawing scale of the map window"
+msgstr "Graddfa dynnu ffenestr y map"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:355
+msgid "Whether the main layout is updated while dragging on the Map"
+msgstr "P'un a yw'r prif gynllun yn cael ei ddiweddaru wrth lusgo ar y Map"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:356
+msgid "Enable labels for Turnouts, Flextrack Lengths and Elevations"
+msgstr "Galluogi labeli ar gyfer Pwyntiau, Hyd Trac Hyblyg ac Drychiadau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:357
+msgid "When to label Turnout, Flextrack Lengths and Elevations"
+msgstr "Pryd i labelu Pwyntiau, Hyd Trac Flex ac Drychiadau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:358
+msgid "Font size for labels on layout"
+msgstr "Maint y ffont ar gyfer labeli ar y cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:359
+msgid "Label elements on the Hot Bar"
+msgstr "Labelwch elfennau ar y Bar Poeth"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:360
+msgid "Label elements on layout"
+msgstr "Labelu elfennau ar y cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:361
+msgid "Label elements for lists"
+msgstr "Labelwch elfennau ar gyfer rhestrau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:362
+msgid "How to group cars on the Train Hot Bar"
+msgstr "Sut i grwpio ceir ar y Bar Poeth Trên"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:363
+msgid "Delay (in mS) between updating train movements"
+msgstr "Oedi (yn msec) rhwng diweddaru symudiadau trenau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:364
+msgid "Don't show trains in tunnels when tunnels are hidden"
+msgstr "Peidiwch â dangos trenau mewn twneli pan fydd twneli wedi'u cuddio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:365
+msgid "Display unconnected endpoints of track with special marks"
+msgstr "Arddangos pwyntiau terfyn digyswllt â marciau arbennig"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:366
+msgid "Whether the Main Drawing Area shows as much of the room as possible"
+msgstr ""
+"P'un a yw'r Prif Ardal Arlunio yn dangos cymaint o'r ystafell â phosibl"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:367
+msgid "Don't hide system cursor when program cursors are showing"
+msgstr "Peidiwch â chuddio cyrchwr system pan fydd cyrchwyr rhaglenni'n dangos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:369
+msgid "Width of the lines"
+msgstr "Lled y llinellau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:370
+msgid "Color of the lines"
+msgstr "Lliw y llinellau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:371
+msgid "List of types of Lumber"
+msgstr "Rhestr o'r mathau o bren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:372
+msgid "Color of Benchwork"
+msgstr "Lliw y Byrddau Sylfaen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:373
+msgid "Orientation of Benchwork"
+msgstr "Cyfeiriadedd y Bwrdd Sylfaen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:374
+msgid "Size of Dimension Arrows"
+msgstr "Maint y Saethau Dimensiwn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:375
+msgid "Width of Box"
+msgstr "Lled y Blwch"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:376
+msgid "Height of Box"
+msgstr "Uchder y Blwch"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:377
+msgid "Angle of Line"
+msgstr "Ongl y Llinell"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:378
+msgid "Radius of Curve"
+msgstr "Radiws y Gromlin"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:380
+msgid "This controls the sharpness of the easement curve"
+msgstr "Mae hyn yn rheoli miniogrwydd cromlin yr hawddfraint"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:381
+msgid "Minimum radius"
+msgstr "Radiws lleiaf"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:382
+msgid "Maximum offset"
+msgstr "Gwrthbwyso uchaf"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:383
+msgid "Easement length"
+msgstr "Hyd rhwyddineb"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:384
+msgid ""
+"These radio buttons are a short-cut for Values of 0.0, 0.5, 1.0 and 2.0. "
+"None turns Easements off"
+msgstr ""
+"Mae'r botymau radio hyn yn llwybr byr ar gyfer Gwerthoedd o 0.0, 0.5, 1.0 a "
+"2.0. Nid oes yr un yn troi Rhwyddinebau i ffwrdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:385
+msgid "Complete easement selection"
+msgstr "Dewis hawddfraint cyflawn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:386
+msgid "Type of elevation"
+msgstr "Math o ddrychiad"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:387
+msgid "Height of End Point"
+msgstr "Uchder y pwynt gorffen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:388
+msgid "Compute elevation based on neighbors"
+msgstr "Drychiad cyfrifiadurol yn seiliedig ar gymdogion"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:389
+msgid "Compute grade based on neighbors"
+msgstr "Gradd gyfrifiannu yn seiliedig ar gymdogion"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:390
+msgid "Specify a name for an End-Point"
+msgstr "Nodwch enw ar gyfer pwynt gorffen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:392
+msgid "Print parts list"
+msgstr "Argraffu rhestr rhannau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:393
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:543
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:666
+msgid "Invoke the Print Setup dialog"
+msgstr "Galw ar y ddewislen gosod Argraffu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:394
+msgid "Save parts list to file"
+msgstr "Cadw rhestr rhannau i'w ffeilio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:395
+msgid "This is the list of parts for the layout"
+msgstr "Dyma'r rhestr o rannau ar gyfer y cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:396
+msgid "Enable prices on the Parts List"
+msgstr "Galluogi prisiau ar y Rhestr Rhannau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:397
+msgid "Enable index listing on the Parts List"
+msgstr "Galluogi rhestru mynegai ar y Rhestr Rhannau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:398
+msgid "Save the note and close window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:399
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:400
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:480
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:481
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:617
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:618
+#, fuzzy
+msgid "Set the position for the note"
+msgstr "Yn nodi diamedr y trofwrdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:401
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:482
+#, fuzzy
+msgid "Set the layer for the note"
+msgstr "Yn nodi diamedr y trofwrdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:402
+#, fuzzy
+msgid "Enter the title of the file"
+msgstr "Rhowch destun ar y cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:403
+msgid "Enter the path and name of the file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:404
+msgid "Open the document in the default application"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:405
+msgid "Select the file from your system"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:406
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:409
+msgid "Spacing between major grid lines"
+msgstr "Bylchau rhwng prif linellau grid"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:407
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:410
+msgid "Allows the spacing to be subdivided"
+msgstr "Yn caniatáu i'r bylchau gael eu hisrannu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:408
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:411
+msgid "Specifies if positions are snaped in this direction"
+msgstr "Yn nodi a yw swyddi'n cael eu bachu i'r cyfeiriad hwn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:412
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:413
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:414
+msgid "Shows the origin and angle of the grid"
+msgstr "Yn dangos tarddiad ac ongl y grid"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:415
+msgid "Specifies if the grid is shown"
+msgstr "Yn nodi a yw'r grid yn cael ei ddangos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:416
+msgid "Completes the grid specification"
+msgstr "Yn cwblhau manyleb y grid"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:420
+msgid "Number of segments in Group"
+msgstr "Nifer y segmentau yn y Grŵp"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:421
+msgid "Replace the Selected object with the new definition?"
+msgstr "Amnewid y gwrthrych Dethol gyda'r diffiniad newydd?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:422
+msgid "Creates a new Structure (or Turnout)"
+msgstr "Yn creu Strwythur (neu Bwynt) newydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:423
+msgid "Elevation difference of Helix End-Points"
+msgstr "Gwahaniaeth drychiad pwyntiau terfyn Helix"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:424
+msgid "Helix Radius"
+msgstr "Radiws Helix"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:425
+msgid "Number of turns in the helix"
+msgstr "Nifer y troadau yn yr helics"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:426
+#, fuzzy
+msgid "Angle between helix entrance and exit"
+msgstr "Ongl rhwng mynedfa helix ac allanfa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:427
+msgid "Grade in helix"
+msgstr "Gradd mewn helics"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:428
+msgid "Separation between helix layers including baseboard, track, etc"
+msgstr "Gwahanu rhwng haenau helics gan gynnwys bwrdd sylfaen, trac, ac ati"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:429
+msgid "Index numbers of objects, separated by commas"
+msgstr "Mynegai niferoedd y gwrthrychau, wedi'u gwahanu gan atalnodau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:430
+msgid "Desired curve radius between straight tracks"
+msgstr "Radiws cromlin dymunol rhwng traciau syth"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:431
+msgid "Layer list"
+msgstr "Rhestr haenau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:432
+msgid "Layer Name"
+msgstr "Enw Haen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:433
+msgid "Hide Layer Button on MenuBar"
+msgstr "Cuddio Botwm Haen ar Bar Dewislen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:434
+msgid "Color of layer"
+msgstr "Lliw haen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:435
+msgid "Layer is drawn on Main window"
+msgstr "Tynnir yr haen ar y Brif ffenestr"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:436
+msgid "Layer cannot be changed"
+msgstr "Ni ellir newid haen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:437
+msgid "Use color for this Layer if color-by-layer is set"
+msgstr "Defnyddiwch liw ar gyfer yr Haen hon os yw lliw-wrth-haen wedi'i osod"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:438
+msgid "Other Layers this Layer also shows/hides"
+msgstr "Haenau Eraill mae'r Haen hon hefyd yn eu dangos / cuddio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:439
+msgid "Layer is a Module"
+msgstr "Modiwl yw haen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:440
+msgid "Layer is drawn on Map window"
+msgstr "Tynnir yr haen ar ffenestr Map"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:441
+msgid "Layer inherits settings from Layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:442
+#, fuzzy
+msgid "Specifies the Modelling Scale for this Layer"
+msgstr "Yn nodi'r Raddfa Modelu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:443
+#, fuzzy
+msgid "Specifies the rail gauge for this Layer"
+msgstr "Yn nodi'r mesurydd rheilffordd, h.y. y pellter rhwng y cledrau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:444
+#, fuzzy
+msgid ""
+"Specifies minimum track radius for this layer. Tracks with a smaller radius "
+"are considered exceptional."
+msgstr ""
+"Yn nodi'r radiws trac lleiaf (mewn modfeddi neu centimetrau). Mae traciau â "
+"radiws llai yn cael eu hystyried yn eithriadol."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:445
+#, fuzzy
+msgid ""
+"Specifies maximum track grade percent (%) for this layer. Tracks with a "
+"larger grade are considered exceptional."
+msgstr ""
+"Yn nodi'r drychiad trac uchaf a fynegir fel cant (%). Mae traciau â drychiad "
+"mwy yn cael eu hystyried yn eithriadol."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:446
+#, fuzzy
+msgid "Specifies the tie length for this layer."
+msgstr "Yn nodi diamedr y trofwrdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:447
+#, fuzzy
+msgid "Specifies the tie width for this layer."
+msgstr "Yn nodi diamedr y trofwrdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:448
+#, fuzzy
+msgid "Specifies the tie spacing for this layer."
+msgstr "Yn nodi radiws y trac cylch"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:449
+#, fuzzy
+msgid "Add a new layer after the selected layer"
+msgstr "Dileu'r Eitemau Car a ddewiswyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:450
+msgid "Delete the selected layer. There must be no objects in it."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:451
+msgid "Reset the layer to layout defaults"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:452
+msgid "Number of layer buttons to show"
+msgstr "Nifer y botymau haen i'w dangos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:453
+msgid "Number of objects in this layer"
+msgstr "Nifer y gwrthrychau yn yr haen hon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:454
+msgid "Settings File to load when this layer is made current"
+msgstr "Gosodiadau Ffeil i'w lwytho pan fydd yr haen hon yn gyfredol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:456
+msgid "Load layer configuration from default"
+msgstr "Llwythwch ffurfweddiad haen yn ddiofyn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:457
+msgid "Save current layer configuration as default"
+msgstr "Cadw cyfluniad haen cyfredol yn ddiofyn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:458
+msgid "Overwrite layer configuration with system default values"
+msgstr "Gor-ysgrifennu cyfluniad haen gyda gwerthoedd diofyn system"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:459
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:460
+msgid "Specifies the size of the room (in inches or centimeters)"
+msgstr "Yn nodi maint yr ystafell (mewn modfeddi neu centimetrau)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:461
+msgid "Specifies the layout Title that will appear on printouts"
+msgstr "Yn nodi'r Teitl cynllun a fydd yn ymddangos ar allbrintiau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:462
+msgid "Specifies the layout Subtitle that will appear on printouts"
+msgstr "Yn nodi'r cynllun Is-deitl a fydd yn ymddangos ar allbrintiau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:463
+msgid "Specifies the Modelling Scale"
+msgstr "Yn nodi'r Raddfa Modelu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:464
+msgid "Specifies the rail gauge, ie. the distance between the rails"
+msgstr "Yn nodi'r mesurydd rheilffordd, h.y. y pellter rhwng y cledrau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:465
+msgid ""
+"Specifies minimum track radius (in inches or centimeters). Tracks with a "
+"smaller radius are considered exceptional."
+msgstr ""
+"Yn nodi'r radiws trac lleiaf (mewn modfeddi neu centimetrau). Mae traciau â "
+"radiws llai yn cael eu hystyried yn eithriadol."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:466
+#, fuzzy
+msgid ""
+"Specifies maximum track grade expressed as a percent (%). Tracks with a "
+"larger grade are considered exceptional."
+msgstr ""
+"Yn nodi'r drychiad trac uchaf a fynegir fel cant (%). Mae traciau â drychiad "
+"mwy yn cael eu hystyried yn eithriadol."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:467
+#, fuzzy
+msgid "Specifies the tie length for the layout."
+msgstr "Yn nodi diamedr y trofwrdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:468
+#, fuzzy
+msgid "Specifies the tie width for the layout."
+msgstr "Yn nodi diamedr y trofwrdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:469
+#, fuzzy
+msgid "Specifies the tie spacing for the layout."
+msgstr "Dyma'r rhestr o rannau ar gyfer y cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:470
+msgid "Select the background image"
+msgstr "Dewiswch y ddelwedd gefndir"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:471
+msgid "Remove the background image"
+msgstr "Tynnwch y ddelwedd gefndir"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:472
+msgid "Specifies the x offset of the bottom left of the background image"
+msgstr "Yn nodi gwrthbwyso x gwaelod chwith y ddelwedd gefndir"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:473
+msgid "Specifies the y offset of the bottom left of the background image"
+msgstr "Yn nodi gwrthbwyso y chwith isaf y ddelwedd gefndir"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:474
+msgid ""
+"Specifies how large the bottom edge of the background image should be in "
+"model units"
+msgstr ""
+"Yn nodi pa mor fawr y dylai ymyl waelod y ddelwedd gefndir fod mewn unedau "
+"model"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:475
+msgid ""
+"Specifies the screening of the background image from 0 (none) to 100% "
+"(vanishes)"
+msgstr "Yn nodi sgrinio'r ddelwedd gefndir o 0 (dim) i 100% (diflannu)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:476
+msgid "Specifies the rotation angle of the background image in degrees"
+msgstr "Yn nodi ongl cylchdroi'r ddelwedd gefndir mewn graddau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:477
+msgid "Write a copy of current settings to a named file"
+msgstr "Ysgrifennwch gopi o'r gosodiadau cyfredol i ffeil a enwir"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:478
+msgid "Override current settings from a named file"
+msgstr "Diystyru gosodiadau cyfredol o ffeil a enwir"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:479
+msgid "Save the link and close window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:483
+#, fuzzy
+msgid "Enter the title of the linked webpage"
+msgstr "Mae'n rheoli maint y testun a gofnodwyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:484
+#, fuzzy
+msgid "Enter the URL for the webpage"
+msgstr "Rhowch destun ar y cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:485
+msgid "Open the webpage in your browser"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:486
+msgid "Move by X"
+msgstr "Symud heibio X"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:487
+msgid "Move by Y"
+msgstr "Symud heibio Y"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:490
+msgid ""
+"This is the body of the Note. To change this select Modify from the File "
+"Menu"
+msgstr "Dyma gorff y Nodyn. I newid hyn, dewiswch Addasu o'r Ddewislen Ffeil"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:492
+msgid "Specifies number of pixels per inch (or centimeter)"
+msgstr "Yn nodi nifer y picseli fesul modfedd (neu centimetr)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:494
+msgid ""
+"Specifies whether Layout Titles, Borders or Track Centerlines are printed on "
+"the BitMap"
+msgstr ""
+"Yn nodi a yw Teitlau Cynllun, Ffiniau neu Track Centerlines wedi'u hargraffu "
+"ar y BitMap"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:495
+msgid ""
+"Specifies the separation between the original track and the parallel track/"
+"line"
+msgstr ""
+"Yn nodi'r gwahaniad rhwng y trac gwreiddiol a'r trac / llinell gyfochrog"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:496
+msgid ""
+"Specifies the a factor that increases the seperation as the radius of the "
+"original track reduces. 0.0 means no increase."
+msgstr ""
+"Yn nodi'r ffactor sy'n cynyddu'r trawiad wrth i radiws y trac gwreiddiol "
+"leihau. Mae 0.0 yn golygu dim cynnydd."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:497
+msgid "Enter your name as specified in the XTrackCAD Registration Notice"
+msgstr "Rhowch eich enw fel y nodir yn Hysbysiad Cofrestru XTrackCAD"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:498
+msgid "Enter the key value as specified in the XTrackCAD Registration Notice"
+msgstr "Rhowch y gwerth allweddol fel y nodir yn Hysbysiad Cofrestru XTrackCAD"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:499
+msgid "Validates the name and key. Terminates the registration command"
+msgstr "Yn dilysu'r enw a'r allwedd. Yn terfynu'r gorchymyn cofrestru"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:500
+msgid "0 degrees is up or to the right"
+msgstr "Mae 0 gradd i fyny ac i'r dde"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:501
+msgid "Choose english (inches) or metric (centimeters)"
+msgstr "Dewiswch saesneg (modfedd) neu fetrig (centimetrau)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:502
+msgid "How to display length measurements"
+msgstr "Sut i arddangos mesuriadau hyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:503
+msgid "Do not create tracks to be shorter than this value"
+msgstr "Peidiwch â chreu traciau i fod yn fyrrach na'r gwerth hwn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:504
+msgid "Maximum distance between connected end points"
+msgstr "Y pellter mwyaf rhwng pwyntiau gorffen cysylltiedig"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:505
+msgid "Minimum angle between connected End-Points"
+msgstr "Ongl leiaf rhwng pwyntiau terfyn cysylltiedig"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:506
+msgid "Specifies the minimum angle between tracks connected to a turntable"
+msgstr "Yn nodi'r ongl leiaf rhwng traciau sydd wedi'u cysylltu â throfwrdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:507
+msgid "Trains will crash above this speed"
+msgstr "Bydd trenau'n chwalu uwchlaw'r cyflymder hwn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:508
+msgid "Enable/Disable balloon popup help windows"
+msgstr "Galluogi / Analluogi ffenestri cymorth popup balŵn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:509
+msgid "Enable/Disable show of flextrack on hotbar"
+msgstr "Galluogi / Analluogi sioe o rac fflecs ar far poeth"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:510
+msgid "How far you can move the mouse before its considered a drag"
+msgstr ""
+"Pa mor bell y gallwch chi symud y llygoden cyn iddi gael ei hystyried yn "
+"llusgo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:511
+msgid "How long you can hold a mouse button down before its considered a drag"
+msgstr ""
+"Pa mor hir y gallwch chi ddal botwm llygoden i lawr cyn iddo gael ei "
+"ystyried yn lusgo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:512
+msgid "Minimum distance (in pixels) between grid lines/ticks"
+msgstr "Y pellter lleiaf (mewn picseli) rhwng llinellau grid / trogod"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:513
+msgid ""
+"Specifies the Check Point frequency; number of modifications made since the "
+"last checkpoint."
+msgstr ""
+"Yn nodi'r amledd Pwynt Gwirio; nifer yr addasiadau a wnaed ers y pwynt "
+"gwirio diwethaf."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:514
+msgid "Specifies the number of checkpoints after save before auto-saving."
+msgstr ""
+"Yn nodi nifer y pwyntiau gwirio ar ôl eu harbed cyn cynilo'n awtomatig."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:515
+msgid "Resume work on last layout or start with new layout"
+msgstr ""
+"Ail-ddechrau gwaith ar y cynllun diwethaf neu ddechrau gyda gosodiad newydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:517
+msgid "Updated cost of current selected item"
+msgstr "Cost wedi'i diweddaru ar gyfer yr eitem a ddewiswyd ar hyn o bryd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:519
+msgid "Selection list for prices"
+msgstr "Rhestr ddethol ar gyfer prisiau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:520
+#, fuzzy
+msgid "Length of a piece of flex-track"
+msgstr "Pris hyd penodol y trac fflecs"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:521
+msgid "Price of specified length of flex-track"
+msgstr "Pris hyd penodol y trac fflecs"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:523
+msgid "Controls the printing of a centerline of track cmdPrint"
+msgstr "Mae'n rheoli argraffu llinell ganol trac cmdPrint"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:524
+msgid "Controls the reduction (scale) of the printout"
+msgstr "Mae'n rheoli gostyngiad (graddfa) yr allbrint"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:525
+msgid "Scaled page width (Scale times physical page width)"
+msgstr "Lled tudalen ar raddfa (Graddfa amseroedd lled tudalen gorfforol)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:526
+msgid "Sets page size to the maximum (based on scale and physical page size)"
+msgstr ""
+"Yn gosod maint tudalen i'r eithaf (yn seiliedig ar raddfa a maint tudalen "
+"gorfforol)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:527
+msgid "Scaled page height (Scale times physical page height)"
+msgstr ""
+"Uchder tudalen ar raddfa (Amseroedd graddfa uchder corfforol y dudalen)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:528
+msgid "Sets scale, origin and angle for a one page printout of the layout"
+msgstr ""
+"Yn gosod graddfa, tarddiad ac ongl ar gyfer allbrint un dudalen o'r cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:529
+msgid "Print page in Portrait or Landscape format"
+msgstr "Argraffu tudalen ar ffurf Portread neu Dirwedd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:530
+msgid "Order of printing pages"
+msgstr "Trefn y tudalennau argraffu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:531
+msgid "Print Title, Date, Author and other information at bottom of page?"
+msgstr "Argraffu Teitl, Dyddiad, Awdur a gwybodaeth arall ar waelod y dudalen?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:532
+msgid "Ignore unprintable page margins?"
+msgstr "Anwybyddu ymylon tudalennau na ellir eu hargraffu?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:533
+msgid "Print Registration Marks at 1:1?"
+msgstr "Argraffu Marciau Cofrestru yn 1:1?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:534
+msgid "Print Snap Grid?"
+msgstr "Argraffu Grid Snap?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:535
+msgid "Print Rulers at the layout edge only, or on all page edges, or nowhere?"
+msgstr ""
+"Argraffu Rheolwyr ar ymyl y cynllun yn unig, neu ar bob ymyl tudalen, neu yn "
+"unman?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:536
+msgid "Print Roadbed Outline?"
+msgstr "Argraffu Amlinelliad Gwely Ffordd?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:537
+msgid "Print Roadbed Outline"
+msgstr "Argraffu Amlinelliad Gwely Ffordd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:538
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:539
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:541
+msgid ""
+"Origin of the print grid. This is useful if you want to reprint a set of "
+"pages"
+msgstr ""
+"Tarddiad y grid argraffu. Mae hyn yn ddefnyddiol os ydych chi am ailargraffu "
+"set o dudalennau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:540
+msgid "Resets the origin and angle to 0"
+msgstr "Ailosod y tarddiad a'r ongl i 0"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:542
+msgid "Deselects all pages"
+msgstr "Yn dad-ddewis pob tudalen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:544
+msgid "Print selected pages and terminates the print command"
+msgstr "Argraffu tudalennau a ddewiswyd ac yn terfynu'r gorchymyn argraffu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:545
+msgid "List of loaded, shown or hidden parameter files"
+msgstr "Rhestr o ffeiliau paramedr wedi'u llwytho, eu dangos neu eu cuddio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:546
+msgid "Show parameter files by names or descriptions"
+msgstr "Dangos ffeiliau paramedr yn ôl enwau neu ddisgrifiadau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:547
+msgid "Toggle the shown status of the selected parameter file"
+msgstr "Toglo statws a ddangosir y ffeil baramedr a ddewiswyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:548
+msgid "Find extra parameter files from the filesystem"
+msgstr "Dewch o hyd i ffeiliau paramedr ychwanegol o'r system ffeiliau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:549
+#, fuzzy
+msgid "Bookmark parameter files"
+msgstr "Dewiswch ffeiliau paramedr"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:550
+msgid "Find parameter files from the system library"
+msgstr "Dewch o hyd i ffeiliau paramedr o lyfrgell y system"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:551
+msgid "Update parameter file list"
+msgstr "Diweddaru rhestr ffeiliau paramedr"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:552
+msgid "Reload parameter file from list"
+msgstr "Ail-lwytho ffeil paramedr o'r rhestr"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:553
+msgid "Select all parameter files shown"
+msgstr "Dewiswch yr holl ffeiliau paramedr a ddangosir"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:554
+#, fuzzy
+msgid "Remove parameter files from active list"
+msgstr "Ail-lwytho ffeil paramedr o'r rhestr"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:555
+msgid "Profile of specified path"
+msgstr "Proffil llwybr penodol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:556
+msgid "Clear the profile"
+msgstr "Cliriwch y proffil"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:557
+msgid "Print the profile"
+msgstr "Argraffwch y proffil"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:559
+msgid "Stop recording"
+msgstr "Stopiwch recordio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:560
+msgid "Insert a message"
+msgstr "Mewnosod neges"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:561
+msgid "End a message"
+msgstr "Gorffennwch neges"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:562
+msgid "Message body"
+msgstr "Corff neges"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:563
+msgid "Possible turnouts"
+msgstr "Pwyntiau posib"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:564
+msgid "Skip this turnout"
+msgstr "Hepgor y pwynt hwn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:566
+msgid "Manufacturer of Object"
+msgstr "Gwneuthurwr Gwrthrych"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:567
+msgid "Description of Object"
+msgstr "Disgrifiad o'r Gwrthrych"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:568
+msgid "Part Nuber of Object"
+msgstr "Rhan Nifer y Gwrthrych"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:570
+msgid "Rescale by Scale Conversion or by Ratio"
+msgstr "Ail-raddfa yn ôl Trosi Graddfa neu yn ôl Cymhareb"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:571
+msgid "Original Scale of the selected objects"
+msgstr "Graddfa Wreiddiol y gwrthrychau a ddewiswyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:572
+msgid "Original Gauge of the selected objects"
+msgstr "Mesurydd gwreiddiol y gwrthrychau a ddewiswyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:573
+msgid "New Scale of the selected objects"
+msgstr "Graddfa Newydd y gwrthrychau a ddewiswyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:574
+msgid "New Gauge of the selected objects"
+msgstr "Mesurydd newydd o'r gwrthrychau a ddewiswyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:575
+msgid "Change track dimensions to new scale"
+msgstr "Newid dimensiynau'r trac i raddfa newydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:576
+msgid "Change size by this amount"
+msgstr "Newid maint yn ôl y swm hwn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:578
+msgid "Snap Grid Line and Division"
+msgstr "Llinell a Rhaniad Grid Snap"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:579
+msgid "X and Y position markers"
+msgstr "X a Y marcwyr safle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:580
+msgid "Border rulers, room boundaries and table edges"
+msgstr "Rheolwyr ffiniau, ffiniau ystafelloedd ac ymylon bwrdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:581
+msgid "Primary Axis of grid rotation"
+msgstr "Echel Cynradd cylchdroi'r grid"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:582
+msgid "Secondary Axis of grid rotation"
+msgstr "Echel Eilaidd cylchdroi'r grid"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:583
+msgid "Unselected tracks"
+msgstr "Traciau heb eu dethol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:584
+msgid "Selected tracks"
+msgstr "Traciau dethol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:585
+msgid "Color of tracks on the Profile path"
+msgstr "Lliw y traciau ar y llwybr Proffil"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:586
+msgid "Color of Exceptional tracks"
+msgstr "Lliw y traciau eithriadol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:587
+msgid "Color of track ties"
+msgstr "Lliw y rhai sy'n cysgu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:588
+msgid "Updates the colors"
+msgstr "Yn diweddaru'r lliwiau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:589
+msgid "Angle in degrees"
+msgstr "Ongl mewn graddau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:590
+msgid "Rotate object(s) by specified amount"
+msgstr "Cylchdroi gwrthrych (ion) yn ôl swm penodol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:591
+msgid "Enter one or more words as search terms"
+msgstr "Rhowch un neu fwy o eiriau fel termau chwilio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:592
+msgid "Remove the current filter and show all files"
+msgstr "Tynnwch yr hidlydd cyfredol a dangoswch yr holl ffeiliau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:593
+msgid "Find matching file descriptions"
+msgstr "Dewch o hyd i ddisgrifiadau ffeiliau sy'n cyfateb"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:594
+msgid "Search results"
+msgstr "Canlyniadau chwilio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:595
+msgid "Show descriptions or filenames in results"
+msgstr "Dangos disgrifiadau neu enwau ffeiliau mewn canlyniadau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:596
+msgid "Select how well the definitions must fit the current layout scale"
+msgstr ""
+"Dewiswch pa mor dda y mae'n rhaid i'r diffiniadau gyd-fynd â'r raddfa "
+"gynllun gyfredol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:597
+msgid "Add selected entries into parameter file list"
+msgstr "Ychwanegwch gofnodion dethol i restr ffeiliau paramedr"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:598
+msgid "Select All found entries"
+msgstr "Dewiswch Pob cofnod a ddarganfuwyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:599
+msgid "Reload the system library contents for finding"
+msgstr "Ail-lwytho cynnwys llyfrgell y system i ddod o hyd iddo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:600
+msgid "Choose commands to be sticky"
+msgstr "Dewiswch orchmynion i fod yn ludiog"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:601
+msgid "Make the commands sticky"
+msgstr "Make the commands sticky"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:602
+msgid "List of available structure"
+msgstr "Rhestr o'r strwythurau sydd ar gael"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:603
+msgid "Diagram of the selected structure"
+msgstr "Diagram o'r strwythur a ddewiswyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:604
+msgid "Hide Selection window when placing Structure"
+msgstr "Cuddio ffenestr Dewis wrth osod Strwythur"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:605
+msgid "Drawing scale and size"
+msgstr "Graddfa a maint lluniadu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:606
+msgid "Complete structure placement"
+msgstr "Lleoliad strwythur cyflawn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:607
+msgid "Choose a Pier number"
+msgstr "Dewiswch rif Pier"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:608
+msgid "Name of the Motor"
+msgstr "Enw'r Modur"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:609
+msgid "Value when switch is normal"
+msgstr "Gwerth pan fydd y switsh yn normal"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:610
+msgid "Value when the switch is reversed"
+msgstr "Gwerth pan fydd y switsh yn cael ei wrthdroi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:611
+msgid "Value for a positive comfirmation of switch position"
+msgstr "Gwerth am gadarnhad cadarnhaol o safle'r switsh "
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:613
+msgid "Controls the color of the entered text"
+msgstr "Mae'n rheoli lliw y testun a gofnodwyd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:614
+msgid "If the text is boxed"
+msgstr "Os yw'r testun mewn blwch"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:615
+#, fuzzy
+msgid "Save and close editor dialog"
+msgstr "Yn diweddaru ac yn cau'r ymgom hon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:616
+msgid "Set layer for the note"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:619
+msgid "Enter your addiional information here"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:620
+msgid "Useful information about the program"
+msgstr "Gwybodaeth ddefnyddiol am y rhaglen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:621
+msgid "Show Tip of the Day every time the program starts"
+msgstr "Dangos Tip y Dydd bob tro mae'r rhaglen yn cychwyn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:622
+msgid "Show the next Tip of the Day"
+msgstr "Dangoswch Awgrym nesaf y Dydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:623
+msgid "Show the previous Tip of the Day"
+msgstr "Dangoswch Awgrym blaenorol y Dydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:625
+msgid "List of butten groups and their state in the toolbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:626
+msgid "Set all button groups visible in toolbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:627
+msgid "Invert the visibility of button groups"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:628
+msgid "Close dialog and configure the toolbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:629
+msgid "List of Cars"
+msgstr "Rhestr o geir"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:630
+msgid "List of active trains"
+msgstr "Rhestr o drenau actif"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:632
+msgid "Train odometer"
+msgstr "Odomedr trên"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:633
+msgid "Reset odometer to 0"
+msgstr "Ailosod odomedr i 0"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:634
+msgid "Find train on layout"
+msgstr "Dewch o hyd i drên ar y cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:635
+msgid "Follow train around layout"
+msgstr "Dilynwch y trên o amgylch cynllun"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:636
+msgid "Flip direction at End Of Track"
+msgstr "Cyfeiriad troi ar ddiwedd y Trac"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:637
+msgid "Change direction of train"
+msgstr "Newid cyfeiriad y trên"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:638
+msgid "Stop the train"
+msgstr "Stopiwch y trên"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:639
+msgid "List of available turnouts for the current scale"
+msgstr ""
+"Rhestr o'r nifer a bleidleisiodd sydd ar gael ar gyfer y raddfa gyfredol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:640
+msgid ""
+"Diagram of the currently selected turnout. Click on a End-Point to select "
+"the Active End-Point"
+msgstr ""
+"Diagram o'r nifer a ddewiswyd ar hyn o bryd. Cliciwch ar ddiweddbwynt i "
+"ddewis y pwynt gorffen gweithredol"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:641
+msgid ""
+"A menu list of various type of turnouts and sectional tracks you can define"
+msgstr ""
+"Rhestr ddewislen o wahanol fathau o bwyntiau a thraciau adrannol y gallwch "
+"eu diffinio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:642
+msgid "Hide Selection window when placing Turnout"
+msgstr "Cuddio ffenestr Dewis wrth osod pwyntiau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:643
+msgid "The selected Active End-Point"
+msgstr "The selected active end-point"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:644
+msgid "Current selected turnout, (displayed in the diagram window)"
+msgstr "Pwynt dethol cyfredol, (wedi'i arddangos yn ffenestr y diagram)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:645
+msgid "One the End-Points that can be selected"
+msgstr "Un y pwyntiau gorffen y gellir eu dewis"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:647
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:648
+msgid "Angle of the specified track to the center line of the turnout"
+msgstr "Ongl y trac penodedig i linell ganol y pwynt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:649
+msgid "Specifies if angles are entered as Frog Numbers or in degrees"
+msgstr "Yn nodi a yw onglau yn cael eu nodi fel Rhifau Broga neu mewn graddau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:652
+msgid "Turnout description (Manuf., Size, Part Number, etc)"
+msgstr "Disgrifiad pwynt (Manu., Maint, Rhan Rhif, ac ati)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:653
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:654
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:655
+msgid "Length from the base to the end of the specified track"
+msgstr "Hyd o'r sylfaen i ddiwedd y trac penodedig"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:657
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:658
+msgid "Offset of the track End-Point from the center line of the turnout"
+msgstr "Gwrthbwyso pwynt terfyn y trac o linell ganol y pwynt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:661
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:662
+msgid "Prints a full size diagram of the turnout for checking"
+msgstr "Yn argraffu diagram maint llawn o'r pwynt i'w wirio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:663
+msgid "Color of Roadbed lines"
+msgstr "Lliw y llinellau gwely ffordd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:664
+msgid "Width of Roadbed lines"
+msgstr "Lled llinellau gwely ffordd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:665
+msgid "Width of Roadbed"
+msgstr "Lled y Ffordd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:667
+msgid "Closes the window and returns to the Turnout Selection window"
+msgstr "Yn cau'r ffenestr ac yn dychwelyd i'r ffenestr Dewis Pwynt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:668
+msgid "Specifies the diameter of the turntable"
+msgstr "Yn nodi diamedr y trofwrdd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:669
+msgid "Old Turnout title"
+msgstr "Teitl hen bwynt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:670
+msgid "List of available titles"
+msgstr "Rhestr o'r teitlau sydd ar gael"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:671
+msgid "Leave the Turnouts' title unchanged"
+msgstr "Gadewch deitl y pwyntiau yn ddigyfnewid"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:672
+msgid "Invoke the Parameter Files dialog"
+msgstr "Galw ar y dialog Ffeiliau Paramedr"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:673
+msgid "List of available turnouts"
+msgstr "Rhestr o'r pwyntiau sydd ar gael"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:674
+msgid "Update the Turnouts' title"
+msgstr "Diweddarwch deitl y pwyntiau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:678
+msgid "Sample"
+msgstr "Sampl"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:680
+msgid "Slant"
+msgstr "Llethr"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:681
+msgid "Font selection dialog"
+msgstr "Deialog dewis ffont"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:682
+msgid "Weight"
+msgstr "Pwysau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:683
+msgid "Printer Abort Window"
+msgstr "Ffenestr Erthylu Argraffydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:684
+msgid "Print to filename"
+msgstr "Argraffu i enw ffeil"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:685
+msgid "Specify Postscript font alias mapping"
+msgstr "Nodwch fapio alias ffont Ôl-nodyn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:686
+msgid ""
+"Displays the Print Setup window to change printers, orientation, paper size, "
+"etc."
+msgstr ""
+"Yn arddangos y ffenestr Gosod Print i newid argraffwyr, cyfeiriadedd, maint "
+"papur, ac ati."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:687
+msgid "Closes this dialog"
+msgstr "Yn cau'r ymgom hon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:688
+msgid "Page orientation"
+msgstr "Cyfeiriadedd tudalen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:689
+msgid "Unprintable margins"
+msgstr "Ymylon na ellir ei argraffu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:690
+msgid "Updates and closes this dialog"
+msgstr "Yn diweddaru ac yn cau'r ymgom hon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:691
+msgid "Choose paper size"
+msgstr "Dewiswch faint papur"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:692
+msgid "Choose printer"
+msgstr "Dewiswch argraffydd"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:693
+msgid "Print test page"
+msgstr "Argraffu tudalen prawf"
+
+#~ msgid "Plain Text"
+#~ msgstr "Testun plaen"
+
+#~ msgid "Invoke designer editor"
+#~ msgstr "Galw golygydd dylunydd"
+
+#~ msgid "Controls which Command Buttons are displayed"
+#~ msgstr "Rheolaethau pa Botymau Gorchymyn sy'n cael eu harddangos"
+
+#~ msgid "Desciption"
+#~ msgstr "Disgrifiad"
+
+#~ msgid "No paths"
+#~ msgstr "Dim llwybrau"
+
+#~ msgid "Predefined Track"
+#~ msgstr "Trac Rhagddiffiniedig"
+
+#~ msgid "Layout"
+#~ msgstr "Cynllun"
+
+#~ msgid ""
+#~ "The entered URL is too long. The maximum allowed length is %d. Please "
+#~ "edit the entered value."
+#~ msgstr ""
+#~ "Mae'r URL a gofnodwyd yn rhy hir. Yr hyd mwyaf a ganiateir yw %d. "
+#~ "Golygwch y gwerth a gofnodwyd."
+
+#~ msgid "Re-edit"
+#~ msgstr "Ail-olygu"
+
+#~ msgid "Update comment"
+#~ msgstr "Diweddariad Sylw"
+
+#~ msgid "Comment"
+#~ msgstr "Sylw"
+
+#~ msgid "Scale index (%d) is not valid"
+#~ msgstr "Mynegai graddfa (%d) ddim yn ddilys"
+
+#~ msgid ""
+#~ "Scale %s is not valid\n"
+#~ "Please check your %s.xtq file"
+#~ msgstr ""
+#~ "Graddfa %s ddim yn ddilys\n"
+#~ "Gwiriwch eich %s.xtq ffile"
+
+#~ msgid "a straight or a curve.\n"
+#~ msgstr "cromlin syth neu gromlin.\n"
+
+#~ msgid ""
+#~ "To create a 1/4\" line, divide the dots-per-inch (DPI) of your display by "
+#~ "4.\n"
+#~ msgstr ""
+#~ "I greu llinell 1/4\", rhannwch ddotiau-fesul-modfedd (DPI) eich "
+#~ "arddangosfa â 4.\n"
+
+#~ msgid ""
+#~ "For MS-Windows the DPI is usually 98, so choose: 98/4 = 24 "
+#~ "(approximately).\n"
+#~ msgstr ""
+#~ "Ar gyfer MS-Windows mae'r DPI fel arfer yn 98, felly dewiswch: 98/4 = 24 "
+#~ "(tua).\n"
+
+#~ msgid "For Linux, the DPI is usually 72, so choose: 72/4 = 18.\n"
+#~ msgstr ""
+#~ "Ar gyfer Mac / Linux, y DPI fel arfer yw 72, felly dewiswch: 72/4 = 18.\n"
+
+#~ msgid "Bridge"
+#~ msgstr "Pont"
+
+#~ msgid "Angle = %0.3f"
+#~ msgstr "Ongle = %0.3f"
+
+#~ msgid "&Loosen Tracks"
+#~ msgstr "Traciau Llaciedig"
+
+#~ msgid "%d Track(s) loosened"
+#~ msgstr "%d Trac(iau) llacio"
+
+#~ msgid "No tracks loosened"
+#~ msgstr "Dim traciau wedi llacio"
+
+#~ msgid "Save format:"
+#~ msgstr "Arbed fformat:"
+
+#~ msgid "Image files"
+#~ msgstr "Ffeiliau delwedd"
+
+#~ msgid "Font Select"
+#~ msgstr "Ffont dewis"
+
+#~ msgid "Co&mmand Context help"
+#~ msgstr "Cymorth Cyd-destun Gorchymyn"
+
+#~ msgid "Home"
+#~ msgstr "Hafan"
+
+#~ msgid "Contents"
+#~ msgstr "Cynnwys"
+
+#~ msgid "<Empty List>"
+#~ msgstr "<Empty List>"
+
+#~ msgid "%d of %d"
+#~ msgstr "%d i %d"
+
+#~ msgid ""
+#~ "The required configuration files could not be located in the expected "
+#~ "location.\n"
+#~ "\n"
+#~ "Usually this is an installation problem. Make sure that these files are "
+#~ "installed in either \n"
+#~ " ../share/xtrkcad or\n"
+#~ " /usr/share/%s or\n"
+#~ " /usr/local/share/%s\n"
+#~ "If this is not possible, the environment variable %s must contain the "
+#~ "name of the correct directory."
+#~ msgstr ""
+#~ "Ni ellid lleoli'r ffeiliau cyfluniad gofynnol yn y lleoliad "
+#~ "disgwyliedig.\n"
+#~ "\n"
+#~ "Fel arfer mae hon yn broblem gosod. Sicrhewch fod y ffeiliau hyn wedi'u "
+#~ "gosod yn y naill neu'r llall \n"
+#~ " ../share/xtrkcad neu\n"
+#~ " /usr/share/%s neu\n"
+#~ " /usr/local/share/%s\n"
+#~ "Os nad yw hyn yn bosibl, bydd yr amgylchedd yn newid %s rhaid iddo "
+#~ "gynnwys enw'r cyfeiriadur cywir."
+
+#~ msgid "HOME is not set"
+#~ msgstr "nid yw HOME wedi'i osod"
+
+#~ msgid "Exit"
+#~ msgstr "Allanfa"
+
+#~ msgid "Cannot create %s"
+#~ msgstr "Methu creu %s"
+
+#~ msgid "Image file is invalid or cannot be read."
+#~ msgstr "Mae'r ffeil ddelwedd yn annilys neu ni ellir ei darllen."
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
+#~ msgid "Alt+"
+#~ msgstr "Alt+"
+
+#~ msgid "Shift+"
+#~ msgstr "Shift+"
+
+#~ msgid "Space"
+#~ msgstr "Gofod"
+
+#~ msgid ""
+#~ "Pressing the turnout button displays the Turnout Selection window to let "
+#~ "you choose a turnout to place.\n"
+#~ msgstr ""
+#~ "Mae pwyso'r botwm pwynt yn dangos y ffenestr Dewis Pwynt i adael i chi "
+#~ "ddewis y nifer sy'n pleidleisio i'w gosod.\n"
+
+#~ msgid ""
+#~ "Note that once you start to place the turnout on the Main window the "
+#~ "Turnout Selection window disappears. This feature is enabled by the Hide "
+#~ "toggle button on the dialog.\n"
+#~ msgstr ""
+#~ "Sylwch, ar ôl i chi ddechrau gosod y nifer a bleidleisiodd ar y Brif "
+#~ "ffenestr, mae'r ffenestr Dewis Pwynt yn diflannu. Mae'r nodwedd hon "
+#~ "wedi'i galluogi gan y botwm Cuddio toggle ar y dialog.\n"
+
+#~ msgid ""
+#~ "Pressing the Close button on the Turnout dialog will end the <Turnout> "
+#~ "command as well as placing the turnout.\n"
+#~ msgstr ""
+#~ "Bydd pwyso'r botwm Close ar y dialog Point yn dod â'r <Turnout> gorchymyn "
+#~ "i ben yn ogystal â gosod y pwynt.\n"
+
+#~ msgid "Pressing Close ends the <Turnout> command.\n"
+#~ msgstr "Mae Pressing Close yn dod â'r <Turnout> gorchymyn i ben.\n"
+
+#~ msgid ""
+#~ "You can resize and move the Turnout Selection dialog if it obscures the "
+#~ "other windows.\n"
+#~ msgstr ""
+#~ "Gallwch newid maint a symud y dialog Dewis Pwynt os yw'n cuddio'r "
+#~ "ffenestri eraill.\n"
diff --git a/app/i18n/de_DE.po b/app/i18n/de_DE.po
index c5f91d9..e9c7c49 100644
--- a/app/i18n/de_DE.po
+++ b/app/i18n/de_DE.po
@@ -1,1586 +1,1588 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# Copyright (C) 2023 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
+#
# Translators:
# Adam J M Richards <adamjmrichards@gmail.com>, 2021
# Martin Fischer <m_fischer@users.sourceforge.net>, 2021
-#
-#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-11-14 06:45-0800\n"
-"PO-Revision-Date: 2020-08-27 16:39+0000\n"
-"Last-Translator: Martin Fischer <m_fischer@users.sourceforge.net>, 2021\n"
-"Language-Team: German (Germany) (https://www.transifex.com/xtrackcad/teams/112853/de_DE/)\n"
+"POT-Creation-Date: 2023-12-29 09:20+0100\n"
+"PO-Revision-Date: 2023-12-29 09:22+0100\n"
+"Last-Translator: Martin Fischer <m_fischer@users.sf.net>\n"
+"Language-Team: German (Germany) (https://www.transifex.com/xtrackcad/"
+"teams/112853/de_DE/)\n"
+"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: de_DE\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Generated-By: Babel 2.9.1\n"
+"X-Generator: Poedit 3.4\n"
#: ../bin/archive.c:154 ../bin/archive.c:161 ../bin/archive.c:190
-#: ../bin/archive.c:215 ../bin/archive.c:270 ../bin/archive.c:283
-#: ../bin/archive.c:291 ../bin/archive.c:341 ../bin/archive.c:376
-#: ../bin/archive.c:392 ../bin/archive.c:402 ../bin/archive.c:425
-#: ../bin/cblock.c:490 ../bin/cswitchmotor.c:472 ../bin/dbench.c:143
-#: ../bin/dbitmap.c:426 ../bin/dcar.c:4525 ../bin/dcar.c:4711
-#: ../bin/dcar.c:4721 ../bin/dcar.c:4768 ../bin/dcar.c:4775 ../bin/dcar.c:4793
-#: ../bin/dcar.c:4806 ../bin/dcar.c:4811 ../bin/dcar.c:4840 ../bin/dcar.c:5003
+#: ../bin/archive.c:215 ../bin/archive.c:270 ../bin/archive.c:285
+#: ../bin/archive.c:296 ../bin/archive.c:350 ../bin/archive.c:387
+#: ../bin/archive.c:403 ../bin/archive.c:413 ../bin/archive.c:436
+#: ../bin/cblock.c:505 ../bin/cswitchmotor.c:500 ../bin/dbench.c:147
+#: ../bin/dbitmap.c:427 ../bin/dcar.c:4894 ../bin/dcar.c:5093
+#: ../bin/dcar.c:5103 ../bin/dcar.c:5150 ../bin/dcar.c:5158 ../bin/dcar.c:5176
+#: ../bin/dcar.c:5191 ../bin/dcar.c:5196 ../bin/dcar.c:5225 ../bin/dcar.c:5395
#: ../bin/directory.c:44 ../bin/directory.c:79 ../bin/directory.c:86
-#: ../bin/directory.c:117 ../bin/directory.c:133 ../bin/dxfoutput.c:191
-#: ../bin/fileio.c:215 ../bin/fileio.c:660 ../bin/fileio.c:803
-#: ../bin/fileio.c:863 ../bin/fileio.c:987 ../bin/fileio.c:1053
-#: ../bin/fileio.c:1059 ../bin/fileio.c:1135 ../bin/fileio.c:1145
-#: ../bin/fileio.c:1490 ../bin/fileio.c:1542 ../bin/fileio.c:1594
-#: ../bin/macro.c:152 ../bin/macro.c:806 ../bin/macro.c:853 ../bin/macro.c:874
-#: ../bin/macro.c:1017 ../bin/macro.c:1035 ../bin/macro.c:1307
-#: ../bin/param.c:2189 ../bin/paramfile.c:257 ../bin/paramfilelist.c:390
-#: ../bin/track.c:1152 ../bin/track.c:1692 ../bin/track.c:1998
-#: ../bin/track.c:2002 ../bin/track.c:2014 ../bin/track.c:2078
-#: ../wlib/gtklib/wpref.c:260 ../wlib/gtklib/wpref.c:267
+#: ../bin/directory.c:117 ../bin/directory.c:133 ../bin/dxfoutput.c:205
+#: ../bin/fileio.c:222 ../bin/fileio.c:675 ../bin/fileio.c:833
+#: ../bin/fileio.c:895 ../bin/fileio.c:1020 ../bin/fileio.c:1089
+#: ../bin/fileio.c:1095 ../bin/fileio.c:1187 ../bin/fileio.c:1200
+#: ../bin/fileio.c:1629 ../bin/fileio.c:1678 ../bin/fileio.c:1731
+#: ../bin/macro.c:167 ../bin/macro.c:856 ../bin/macro.c:1011
+#: ../bin/macro.c:1030 ../bin/macro.c:1330 ../bin/param.c:2403
+#: ../bin/paramfile.c:258 ../bin/paramfilelist.c:458 ../bin/track.c:1107
+#: ../bin/track.c:1347 ../bin/track.c:1369 ../bin/track.c:1788
+#: ../bin/track.c:1993 ../bin/track.c:2003 ../bin/track.c:2008
+#: ../bin/track.c:2023 ../bin/track.c:2050 ../bin/track.c:2108
msgid "Continue"
msgstr "Weiter"
-#: ../bin/cbezier.c:598
+#: ../bin/cbezier.c:631
msgid "Select End-Point - Ctrl unlocks end-point"
msgstr "Endpunkt auswählen - Strg entsperrt den Endpunkt"
-#: ../bin/cbezier.c:600
+#: ../bin/cbezier.c:633
msgid "Select End-Point"
msgstr "Endpunkt auswählen"
-#: ../bin/cbezier.c:632
+#: ../bin/cbezier.c:666
msgid "Not close enough to any valid, selectable point, reselect"
msgstr ""
"Nicht nahe genug an einem gültigen, wählbaren Punkt, bitte einen anderen "
"auswählen"
-#: ../bin/cbezier.c:638
+#: ../bin/cbezier.c:672
#, c-format
msgid "Drag point %d to new location and release it"
msgstr "Den Punkt %d an die neue Stelle verschieben und loslassen"
-#: ../bin/cbezier.c:647 ../bin/cbezier.c:738 ../bin/cbezier.c:740
+#: ../bin/cbezier.c:682 ../bin/cbezier.c:785 ../bin/cbezier.c:788
msgid "Pick any circle to adjust it - Enter to confirm, ESC to abort"
msgstr ""
-"Einen beliebeigen Kreis zum Ändern auswählen - Mit der Eingabetaste "
+"Einen beliebigen Kreis zum Ändern auswählen - Mit der Eingabetaste "
"bestätigen, mit ESC abbrechen"
-#: ../bin/cbezier.c:671
+#: ../bin/cbezier.c:707
msgid "Bezier Curve Invalid has identical end points Change End Point"
msgstr ""
-"Die Bezierkurve ist ungültig, da die Endpunkte identisch sind identisch. "
-"Bitte einen Endpunkt ändern. "
+"Die Bezierkurve ist ungültig, da die Endpunkte identisch sind. Bitte einen "
+"Endpunkt ändern"
-#: ../bin/cbezier.c:674
+#: ../bin/cbezier.c:711
#, c-format
msgid "Bezier Curve Invalid has %s Change End Point"
msgstr "Ungültige Bezier-Kurve: %s. Bitte den Endpunkt ändern"
-#: ../bin/cbezier.c:677
+#: ../bin/cbezier.c:715
msgid "Bezier Curve Invalid has three co-incident points"
-msgstr ""
-"Die Bezier-Kurve ist ungültig, da sie drei übereinstimmende Punkte hat."
+msgstr "Die Bezier-Kurve ist ungültig, da sie drei übereinstimmende Punkte hat"
-#: ../bin/cbezier.c:679
+#: ../bin/cbezier.c:718
msgid "Bezier is Straight Line"
-msgstr "Die Auswahl ergibt eine gerade Linie anstelle einer Bezier-Kurve. "
+msgstr "Die Auswahl ergibt eine gerade Linie anstelle einer Bezier-Kurve"
-#: ../bin/cbezier.c:681
+#: ../bin/cbezier.c:721
#, c-format
msgid "Bezier %s : Min Radius=%s Length=%s fx=%0.3f fy=%0.3f cusp=%0.3f"
-msgstr ""
-"Bezier %s: Kleinester Radius=%s, Länge=%s, fx=%0.3f fy=%0.3f cusp=%0.3f"
+msgstr "Bezier %s: Kleinster Radius=%s, Länge=%s, fx=%0.3f fy=%0.3f cusp=%0.3f"
-#: ../bin/cbezier.c:685
+#: ../bin/cbezier.c:726
#, c-format
msgid "Bezier %s : Min Radius=%s Length=%s"
msgstr "Bezier %s : Mindestradius=%s Länge=%s"
-#: ../bin/cbezier.c:710
+#: ../bin/cbezier.c:752
msgid "No unconnected End Point to lock to"
msgstr "Anschließen nicht möglich, da kein offener Endpunkt existiert"
-#: ../bin/cbezier.c:728
+#: ../bin/cbezier.c:772
msgid "Bezier curve invalid has identical end points Change End Point"
msgstr ""
-"Die Endpunkte der Bezierkurve sind identisch. Bitte einen Endpunkt ändern"
+"Die beiden Endpunkte der Bezierkurve sind identisch. Bitte einen der "
+"Endpunkte ändern"
-#: ../bin/cbezier.c:731
+#: ../bin/cbezier.c:776
#, c-format
msgid "Bezier curve invalid has %s Change End Point"
msgstr "Ungültige Bezier-Kurve: %s. Bitte den Endpunkt ändern"
-#: ../bin/cbezier.c:734
+#: ../bin/cbezier.c:780
msgid "Bezier curve invalid has three co-incident points"
msgstr ""
"Die ungültige Bezier-Kurve hat drei übereinstimmende Punkte - bitte anpassen"
-#: ../bin/cbezier.c:736
+#: ../bin/cbezier.c:783
msgid "Bezier curve is straight line"
msgstr "Bezier Kurve ist eine gerade Linie"
-#: ../bin/cbezier.c:750 ../bin/cbezier.c:764
+#: ../bin/cbezier.c:799 ../bin/cbezier.c:813
msgid "Invalid Bezier Track - end points are identical"
-msgstr "Die Bezier-Kurve ist ungültig, da sie identische Endpunkte hat"
+msgstr "Die Bezier-Kurve ist ungültig, da die beiden Endpunkte identisch sind"
-#: ../bin/cbezier.c:757
+#: ../bin/cbezier.c:806
#, c-format
msgid "Invalid Bezier Curve has a %s - Adjust"
msgstr "Die ungültige Bezier-Kurve hat %s - bitte anpassen"
-#: ../bin/cbezier.c:761
+#: ../bin/cbezier.c:810
msgid "Invalid Bezier Curve has three coincident points - Adjust"
msgstr ""
"Die ungültige Bezier-Kurve hat drei übereinstimmende Punkte - bitte anpassen"
-#: ../bin/cbezier.c:769
+#: ../bin/cbezier.c:818
msgid "Create Bezier"
msgstr "Bezier erstellen"
-#: ../bin/cbezier.c:852
+#: ../bin/cbezier.c:900
#, c-format
msgid "%s picked - now select a Point"
msgstr "%s ausgewählt - jetzt einen Punkt auswählen"
-#: ../bin/cbezier.c:882 ../bin/ccornu.c:1946
+#: ../bin/cbezier.c:939 ../bin/ccornu.c:2085
msgid "No changes made"
msgstr "Keine Änderungen durchgeführt"
-#: ../bin/cbezier.c:886
+#: ../bin/cbezier.c:943
msgid "Modify Bezier"
msgstr "Bezier ändern"
-#: ../bin/cbezier.c:900
+#: ../bin/cbezier.c:957
msgid "Modify Bezier Complete"
msgstr "Ändern der Bezier-Kurve abgeschlossen"
-#: ../bin/cbezier.c:904
+#: ../bin/cbezier.c:961
msgid "Modify Bezier Cancelled"
msgstr "Ändern der Bezier-Kurve abgebrochen"
-#: ../bin/cbezier.c:1030 ../bin/cbezier.c:1124
+#: ../bin/cbezier.c:1089 ../bin/cbezier.c:1189
#, c-format
msgid "Place 1st endpoint of Bezier - snap to %s"
msgstr "Ersten Endpunkt der Bezierkurve festlegen, an %s fangen"
-#: ../bin/cbezier.c:1049 ../bin/ccornu.c:2286 ../bin/ccurve.c:199
-#: ../bin/cstraigh.c:90
+#: ../bin/cbezier.c:1109 ../bin/ccornu.c:2444 ../bin/ccurve.c:205
+#: ../bin/cstraigh.c:92
msgid "Track is different gauge"
msgstr "Gleis hat andere Spurweite"
-#: ../bin/cbezier.c:1070
+#: ../bin/cbezier.c:1131
msgid "Drag end of first control arm"
msgstr "Das Ende des ersten Kontrolllinie ziehen"
-#: ../bin/cbezier.c:1077
+#: ../bin/cbezier.c:1139
msgid "Drag end of second control arm"
msgstr "Das Ende der zweiten Kontrolllinie ziehen"
-#: ../bin/cbezier.c:1128 ../bin/cbezier.c:1165
+#: ../bin/cbezier.c:1194 ../bin/cbezier.c:1236
#, c-format
msgid "Select other end of Bezier - snap to %s end"
msgstr "Das andere Ende der Bezierkurve auswählen, am Ende von %s fangen"
-#: ../bin/cbezier.c:1160
+#: ../bin/cbezier.c:1231
msgid "Control Arm 1 is too short, try again"
msgstr "Steuer-Arms 1 ist zu kurz, bitte nochmal versuchen"
-#: ../bin/cblock.c:107 ../bin/cblock.c:119 ../bin/cblock.c:166
-#: ../bin/ccontrol.c:168 ../bin/ccontrol.c:422 ../bin/compound.c:708
-#: ../bin/csensor.c:160 ../bin/csensor.c:386 ../bin/csignal.c:235
-#: ../bin/csignal.c:495 ../bin/csignal.c:506 ../bin/csignal.c:532
-#: ../bin/cswitchmotor.c:89 ../bin/cswitchmotor.c:108
-#: ../bin/cswitchmotor.c:221 ../bin/dcontmgm.c:79 ../bin/dlayer.c:578
+#: ../bin/cblock.c:110 ../bin/cblock.c:122 ../bin/cblock.c:169
+#: ../bin/ccontrol.c:168 ../bin/ccontrol.c:425 ../bin/compound.c:745
+#: ../bin/csensor.c:160 ../bin/csensor.c:389 ../bin/csignal.c:236
+#: ../bin/csignal.c:499 ../bin/csignal.c:510 ../bin/csignal.c:536
+#: ../bin/cswitchmotor.c:89 ../bin/cswitchmotor.c:108 ../bin/cswitchmotor.c:228
+#: ../bin/dcontmgm.c:79 ../bin/dlayer.c:544
msgid "Name"
msgstr "Name"
-#: ../bin/cblock.c:108 ../bin/cblock.c:120 ../bin/cblock.c:167
-#: ../bin/csensor.c:162 ../bin/csensor.c:392 ../bin/csignal.c:495
-#: ../bin/csignal.c:534
+#: ../bin/cblock.c:111 ../bin/cblock.c:123 ../bin/cblock.c:170
+#: ../bin/csensor.c:162 ../bin/csensor.c:395 ../bin/csignal.c:499
+#: ../bin/csignal.c:538
msgid "Script"
msgstr "Befehlsskript"
-#: ../bin/cblock.c:121
+#: ../bin/cblock.c:124
msgid "Segments"
msgstr "Segmente"
-#: ../bin/cblock.c:168 ../bin/cdraw.c:520 ../bin/cdraw.c:1502
-#: ../bin/cdraw.c:1648 ../bin/cdraw.c:2705 ../bin/cdraw.c:2927
-#: ../bin/cdraw.c:2964 ../bin/ctodesgn.c:169 ../bin/ctodesgn.c:170
-#: ../bin/ctodesgn.c:171 ../bin/ctodesgn.c:172 ../bin/ctodesgn.c:184
-#: ../bin/ctodesgn.c:185 ../bin/ctodesgn.c:235 ../bin/ctodesgn.c:238
-#: ../bin/ctodesgn.c:258 ../bin/ctodesgn.c:263 ../bin/ctodesgn.c:295
-#: ../bin/ctodesgn.c:302 ../bin/ctodesgn.c:304 ../bin/ctodesgn.c:324
-#: ../bin/ctodesgn.c:329 ../bin/ctodesgn.c:361 ../bin/ctodesgn.c:368
-#: ../bin/ctodesgn.c:369 ../bin/ctodesgn.c:390 ../bin/ctodesgn.c:393
-#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:431 ../bin/ctodesgn.c:435
-#: ../bin/ctodesgn.c:442 ../bin/ctodesgn.c:443 ../bin/ctodesgn.c:444
-#: ../bin/ctodesgn.c:466 ../bin/ctodesgn.c:468 ../bin/ctodesgn.c:486
-#: ../bin/ctodesgn.c:488 ../bin/ctodesgn.c:507 ../bin/ctodesgn.c:509
-#: ../bin/ctodesgn.c:536 ../bin/ctodesgn.c:556 ../bin/ctodesgn.c:576
-#: ../bin/ctodesgn.c:596 ../bin/ctodesgn.c:634 ../bin/ctodesgn.c:653
-#: ../bin/ctodesgn.c:654 ../bin/ctrain.c:186 ../bin/tbezier.c:262
-#: ../bin/tcornu.c:315 ../bin/tcurve.c:385 ../bin/tstraigh.c:90
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:184
+#: ../bin/cblock.c:171 ../bin/cdraw.c:560 ../bin/cdraw.c:1573
+#: ../bin/cdraw.c:1720 ../bin/cdraw.c:2843 ../bin/cdraw.c:3070
+#: ../bin/cdraw.c:3109 ../bin/ctodesgn.c:179 ../bin/ctodesgn.c:180
+#: ../bin/ctodesgn.c:181 ../bin/ctodesgn.c:182 ../bin/ctodesgn.c:194
+#: ../bin/ctodesgn.c:195 ../bin/ctodesgn.c:244 ../bin/ctodesgn.c:247
+#: ../bin/ctodesgn.c:270 ../bin/ctodesgn.c:275 ../bin/ctodesgn.c:316
+#: ../bin/ctodesgn.c:323 ../bin/ctodesgn.c:325 ../bin/ctodesgn.c:350
+#: ../bin/ctodesgn.c:355 ../bin/ctodesgn.c:395 ../bin/ctodesgn.c:402
+#: ../bin/ctodesgn.c:403 ../bin/ctodesgn.c:428 ../bin/ctodesgn.c:431
+#: ../bin/ctodesgn.c:434 ../bin/ctodesgn.c:477 ../bin/ctodesgn.c:481
+#: ../bin/ctodesgn.c:488 ../bin/ctodesgn.c:489 ../bin/ctodesgn.c:490
+#: ../bin/ctodesgn.c:516 ../bin/ctodesgn.c:518 ../bin/ctodesgn.c:540
+#: ../bin/ctodesgn.c:542 ../bin/ctodesgn.c:565 ../bin/ctodesgn.c:567
+#: ../bin/ctodesgn.c:601 ../bin/ctodesgn.c:627 ../bin/ctodesgn.c:652
+#: ../bin/ctodesgn.c:676 ../bin/ctodesgn.c:722 ../bin/ctodesgn.c:745
+#: ../bin/ctodesgn.c:746 ../bin/ctrain.c:184 ../bin/tbezier.c:296
+#: ../bin/tcornu.c:332 ../bin/tcurve.c:404 ../bin/tstraigh.c:91
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:186
msgid "Length"
msgstr "Länge"
-#: ../bin/cblock.c:169 ../bin/cdraw.c:511 ../bin/compound.c:683
-#: ../bin/tbezier.c:249 ../bin/tcornu.c:302 ../bin/tcurve.c:377
-#: ../bin/tease.c:509 ../bin/tstraigh.c:86
+#: ../bin/cblock.c:172 ../bin/cdraw.c:551 ../bin/compound.c:720
+#: ../bin/tbezier.c:283 ../bin/tcornu.c:319 ../bin/tcurve.c:396
+#: ../bin/tease.c:524 ../bin/tstraigh.c:87
msgid "End Pt 1: X,Y"
msgstr "Endpunkt 1: X,Y"
-#: ../bin/cblock.c:170 ../bin/cdraw.c:512 ../bin/compound.c:688
-#: ../bin/tbezier.c:256 ../bin/tcornu.c:307 ../bin/tcurve.c:379
-#: ../bin/tease.c:511 ../bin/tstraigh.c:88
+#: ../bin/cblock.c:173 ../bin/cdraw.c:552 ../bin/compound.c:725
+#: ../bin/tbezier.c:290 ../bin/tcornu.c:324 ../bin/tcurve.c:398
+#: ../bin/tease.c:526 ../bin/tstraigh.c:89
msgid "End Pt 2: X,Y"
msgstr "Endpunkt 2: X,Y"
-#: ../bin/cblock.c:193 ../bin/cblock.c:205 ../bin/cblock.c:574
-#: ../bin/cblock.c:595 ../bin/cblock.c:603 ../bin/cblock.c:673
-#: ../bin/cblock.c:794 ../bin/cblock.c:806 ../bin/cblock.c:844
-#: ../bin/ccontrol.c:202 ../bin/ccontrol.c:215 ../bin/ccontrol.c:227
-#: ../bin/ccontrol.c:483 ../bin/cdraw.c:125 ../bin/cdraw.c:2764
-#: ../bin/cgroup.c:1071 ../bin/cgroup.c:1138 ../bin/cgroup.c:1166
-#: ../bin/cgroup.c:1216 ../bin/cgroup.c:1238 ../bin/cgroup.c:1326
-#: ../bin/cgroup.c:1715 ../bin/cnote.c:67 ../bin/compound.c:744
-#: ../bin/compound.c:759 ../bin/compound.c:792 ../bin/cprint.c:712
-#: ../bin/cprint.c:719 ../bin/cprint.c:1263 ../bin/cpull.c:508
-#: ../bin/cpull.c:523 ../bin/cpull.c:525 ../bin/cpull.c:527 ../bin/cpull.c:688
-#: ../bin/cselect.c:1143 ../bin/cselect.c:1252 ../bin/cselect.c:2131
-#: ../bin/csensor.c:191 ../bin/csensor.c:203 ../bin/csensor.c:441
-#: ../bin/csignal.c:264 ../bin/csignal.c:663 ../bin/csignal.c:731
-#: ../bin/csnap.c:549 ../bin/csnap.c:675 ../bin/cstruct.c:962
-#: ../bin/cstruct.c:1092 ../bin/cswitchmotor.c:247 ../bin/cswitchmotor.c:259
-#: ../bin/cswitchmotor.c:271 ../bin/cswitchmotor.c:283
-#: ../bin/cswitchmotor.c:541 ../bin/cswitchmotor.c:577
-#: ../bin/cswitchmotor.c:712 ../bin/cswitchmotor.c:743 ../bin/ctext.c:172
-#: ../bin/ctodesgn.c:203 ../bin/ctodesgn.c:1198 ../bin/ctodesgn.c:1969
-#: ../bin/ctodesgn.c:2084 ../bin/ctodesgn.c:2383 ../bin/ctrain.c:206
-#: ../bin/cturnout.c:4845 ../bin/cturnout.c:4984 ../bin/cundo.c:205
-#: ../bin/cundo.c:210 ../bin/dbitmap.c:156 ../bin/dbitmap.c:231
-#: ../bin/dbitmap.c:472 ../bin/dcar.c:3850 ../bin/dcar.c:4015
-#: ../bin/dcar.c:4020 ../bin/dcar.c:4024 ../bin/dcar.c:4029 ../bin/dcar.c:4342
-#: ../bin/dcar.c:4450 ../bin/dcar.c:4830 ../bin/dcmpnd.c:392
-#: ../bin/dcmpnd.c:403 ../bin/dcmpnd.c:536 ../bin/dcustmgm.c:205
-#: ../bin/dcustmgm.c:211 ../bin/dcustmgm.c:220 ../bin/dcustmgm.c:245
-#: ../bin/dease.c:240 ../bin/dlayer.c:257 ../bin/dlayer.c:292
-#: ../bin/dlayer.c:1152 ../bin/dlayer.c:1158 ../bin/dlayer.c:1164
-#: ../bin/doption.c:200 ../bin/doption.c:276 ../bin/doption.c:479
-#: ../bin/doption.c:482 ../bin/doption.c:486 ../bin/doption.c:497
-#: ../bin/doption.c:563 ../bin/dprmfile.c:427 ../bin/draw.c:2726
-#: ../bin/fileio.c:171 ../bin/fileio.c:580 ../bin/fileio.c:705
-#: ../bin/fileio.c:707 ../bin/fileio.c:712 ../bin/fileio.c:775
-#: ../bin/fileio.c:1007 ../bin/layout.c:404 ../bin/layout.c:612
-#: ../bin/macro.c:1131 ../bin/macro.c:1135 ../bin/macro.c:1203
-#: ../bin/macro.c:1272 ../bin/macro.c:1513 ../bin/macro.c:1533
-#: ../bin/misc.c:491 ../bin/misc.c:573 ../bin/misc.c:1918 ../bin/misc.c:2050
-#: ../bin/misc.c:2061 ../bin/misc.c:2072 ../bin/misc.c:2168 ../bin/misc.c:3046
-#: ../bin/misc.c:3055 ../bin/misc.c:3075 ../bin/misc.c:3081 ../bin/misc.c:3293
-#: ../bin/misc2.c:523 ../bin/param.c:737 ../bin/param.c:1947
-#: ../bin/param.c:2070 ../bin/param.c:2073 ../bin/param.c:2196
-#: ../bin/param.c:2202 ../bin/paramfile.c:330 ../bin/paramfile.c:332
-#: ../bin/paramfile.c:337 ../bin/paramfile.c:361 ../bin/paramfile.c:387
-#: ../bin/paramfile.c:393 ../bin/paramfilelist.c:103
-#: ../bin/paramfilelist.c:123 ../bin/paramfilelist.c:137
-#: ../bin/paramfilelist.c:201 ../bin/tease.c:1108 ../bin/track.c:1706
-#: ../wlib/gtklib/wpref.c:131
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:636
+#: ../bin/cblock.c:198 ../bin/cblock.c:210 ../bin/cblock.c:592
+#: ../bin/cblock.c:613 ../bin/cblock.c:621 ../bin/cblock.c:693
+#: ../bin/cblock.c:814 ../bin/cblock.c:826 ../bin/cblock.c:864
+#: ../bin/ccontrol.c:203 ../bin/ccontrol.c:216 ../bin/ccontrol.c:228
+#: ../bin/ccontrol.c:489 ../bin/cdraw.c:125 ../bin/cdraw.c:2903
+#: ../bin/cgroup.c:1156 ../bin/cgroup.c:1260 ../bin/cgroup.c:1267
+#: ../bin/cgroup.c:1320 ../bin/cgroup.c:1343 ../bin/cgroup.c:1437
+#: ../bin/cgroup.c:1642 ../bin/cgroup.c:1867 ../bin/cnote.c:67
+#: ../bin/compound.c:785 ../bin/compound.c:801 ../bin/compound.c:835
+#: ../bin/cprint.c:746 ../bin/cprint.c:1312 ../bin/cprint.c:1445
+#: ../bin/cpull.c:531 ../bin/cpull.c:546 ../bin/cpull.c:548 ../bin/cpull.c:550
+#: ../bin/cpull.c:721 ../bin/cselect.c:2096 ../bin/csensor.c:192
+#: ../bin/csensor.c:204 ../bin/csensor.c:446 ../bin/csnap.c:591
+#: ../bin/csnap.c:733 ../bin/csignal.c:266 ../bin/csignal.c:678
+#: ../bin/csignal.c:748 ../bin/cstruct.c:1041 ../bin/cstruct.c:1180
+#: ../bin/cswitchmotor.c:257 ../bin/cswitchmotor.c:269
+#: ../bin/cswitchmotor.c:281 ../bin/cswitchmotor.c:293
+#: ../bin/cswitchmotor.c:570 ../bin/cswitchmotor.c:608
+#: ../bin/cswitchmotor.c:746 ../bin/cswitchmotor.c:777 ../bin/ctext.c:164
+#: ../bin/ctodesgn.c:213 ../bin/ctodesgn.c:1311 ../bin/ctodesgn.c:2140
+#: ../bin/ctodesgn.c:2257 ../bin/ctodesgn.c:2580 ../bin/ctrain.c:207
+#: ../bin/cturnout.c:2973 ../bin/cturnout.c:3123 ../bin/cundo.c:260
+#: ../bin/cundo.c:266 ../bin/dbitmap.c:157 ../bin/dbitmap.c:232
+#: ../bin/dbitmap.c:473 ../bin/dcar.c:4125 ../bin/dcar.c:4297
+#: ../bin/dcar.c:4302 ../bin/dcar.c:4306 ../bin/dcar.c:4312 ../bin/dcar.c:4662
+#: ../bin/dcar.c:4778 ../bin/dcar.c:5215 ../bin/dcmpnd.c:420
+#: ../bin/dcmpnd.c:436 ../bin/dcmpnd.c:583 ../bin/dcustmgm.c:219
+#: ../bin/dcustmgm.c:226 ../bin/dcustmgm.c:236 ../bin/dcustmgm.c:261
+#: ../bin/dease.c:251 ../bin/dlayer.c:337 ../bin/dlayer.c:374
+#: ../bin/dlayer.c:843 ../bin/dlayer.c:1393 ../bin/dlayer.c:1399
+#: ../bin/dlayer.c:1405 ../bin/doption.c:197 ../bin/doption.c:282
+#: ../bin/doption.c:492 ../bin/doption.c:495 ../bin/doption.c:499
+#: ../bin/doption.c:511 ../bin/doption.c:586 ../bin/dprmfile.c:431
+#: ../bin/draw.c:2987 ../bin/fileio.c:178 ../bin/fileio.c:593
+#: ../bin/fileio.c:725 ../bin/fileio.c:728 ../bin/fileio.c:734
+#: ../bin/fileio.c:804 ../bin/fileio.c:1042 ../bin/layout.c:554
+#: ../bin/layout.c:820 ../bin/layout.c:995 ../bin/macro.c:1134
+#: ../bin/macro.c:1139 ../bin/macro.c:1217 ../bin/macro.c:1295
+#: ../bin/macro.c:1543 ../bin/macro.c:1564 ../bin/menu.c:203 ../bin/menu.c:214
+#: ../bin/menu.c:225 ../bin/menu.c:390 ../bin/menu.c:428 ../bin/menu.c:538
+#: ../bin/misc.c:492 ../bin/misc.c:1055 ../bin/misc.c:1064 ../bin/misc.c:1084
+#: ../bin/misc.c:1090 ../bin/misc.c:1276 ../bin/param.c:788 ../bin/param.c:2133
+#: ../bin/param.c:2275 ../bin/param.c:2279 ../bin/param.c:2411
+#: ../bin/param.c:2419 ../bin/paramfile.c:336 ../bin/paramfile.c:339
+#: ../bin/paramfile.c:345 ../bin/paramfile.c:371 ../bin/paramfile.c:400
+#: ../bin/paramfile.c:406 ../bin/paramfilelist.c:131 ../bin/paramfilelist.c:183
+#: ../bin/paramfilelist.c:236 ../bin/scale.c:305 ../bin/scale.c:948
+#: ../bin/scale.c:1084 ../bin/tease.c:1167 ../bin/track.c:1804
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:677
msgid "Ok"
msgstr "Ok"
-#: ../bin/cblock.c:210
+#: ../bin/cblock.c:215
msgid "Change block"
msgstr "Block ändern"
-#: ../bin/cblock.c:262 ../bin/cswitchmotor.c:339
+#: ../bin/cblock.c:269 ../bin/cswitchmotor.c:352
#, c-format
msgid "(%d): Layer=%u %s"
msgstr "(%d): Ebene=%u %s"
-#: ../bin/cblock.c:286 ../bin/cblock.c:996
+#: ../bin/cblock.c:293 ../bin/cblock.c:1027
msgid "Block"
msgstr "Block"
-#: ../bin/cblock.c:490
+#: ../bin/cblock.c:504
#, c-format
msgid "resolveBlockTrack: T%d[%d]: T%d doesn't exist"
msgstr "resolveBlockTrack: T%d[%d]: T%d existiert nicht"
-#: ../bin/cblock.c:574 ../bin/cblock.c:806
+#: ../bin/cblock.c:592 ../bin/cblock.c:826
msgid "Block must have a name!"
msgstr "Der Gleisabschnitt benötigt einen Namen!"
-#: ../bin/cblock.c:603
-msgid "Block is discontigious!"
+#: ../bin/cblock.c:621
+msgid "Block is discontiguous!"
msgstr "Der Block ist nicht zusammenhängend!"
-#: ../bin/cblock.c:608
+#: ../bin/cblock.c:626
msgid "Create block"
msgstr "Block erstellen"
-#: ../bin/cblock.c:655
+#: ../bin/cblock.c:674
msgid "Non track object skipped!"
msgstr "Objekt ist kein Gleis, übersprungen!"
-#: ../bin/cblock.c:659
+#: ../bin/cblock.c:678
msgid "Selected track is already in a block, skipped!"
msgstr "Übersprungen, da das ausgewählte Gleis bereits in einem Block ist!"
-#: ../bin/cblock.c:673
+#: ../bin/cblock.c:692
msgid "Create Block"
msgstr "Block erstellen"
-#: ../bin/cblock.c:703 ../bin/cblock.c:735
+#: ../bin/cblock.c:722 ../bin/cblock.c:754
msgid "Select a track"
msgstr "Gleis auswählen"
-#: ../bin/cblock.c:712 ../bin/cblock.c:743
+#: ../bin/cblock.c:731 ../bin/cblock.c:762
msgid "Not a block!"
msgstr "Kein Block!"
-#: ../bin/cblock.c:748
+#: ../bin/cblock.c:767
#, c-format
msgid "Really delete block %s?"
msgstr "Soll der Block %s wirklich gelöscht werden?"
-#: ../bin/cblock.c:748 ../bin/ccornu.c:2753 ../bin/ccornu.c:2966
-#: ../bin/cdraw.c:129 ../bin/cgroup.c:1077 ../bin/cpull.c:646
-#: ../bin/csignal.c:709 ../bin/cswitchmotor.c:668 ../bin/ctodesgn.c:2659
-#: ../bin/ctodesgn.c:3213 ../bin/ctrain.c:2512 ../bin/dcar.c:3965
-#: ../bin/dcar.c:4054 ../bin/dcar.c:4137 ../bin/dcar.c:4156 ../bin/dcar.c:4475
-#: ../bin/dcar.c:4895 ../bin/dcontmgm.c:161 ../bin/dcustmgm.c:153
-#: ../bin/misc.c:1328 ../bin/misc.c:1335 ../bin/misc.c:1407
-#: ../bin/track.c:1708 ../bin/track.c:1805 ../bin/track.c:1822
+#: ../bin/cblock.c:767 ../bin/ccornu.c:2952 ../bin/ccornu.c:3176
+#: ../bin/cdraw.c:130 ../bin/cgroup.c:1162 ../bin/command.c:400
+#: ../bin/command.c:407 ../bin/command.c:467 ../bin/cpull.c:673
+#: ../bin/csignal.c:725 ../bin/cswitchmotor.c:700 ../bin/ctodesgn.c:2893
+#: ../bin/ctodesgn.c:3507 ../bin/ctrain.c:2607 ../bin/dcar.c:4245
+#: ../bin/dcar.c:4343 ../bin/dcar.c:4433 ../bin/dcar.c:4459 ../bin/dcar.c:4843
+#: ../bin/dcar.c:5284 ../bin/dcustmgm.c:162 ../bin/dcontmgm.c:167
+#: ../bin/track.c:1806 ../bin/track.c:1908 ../bin/track.c:1926
msgid "Yes"
msgstr "Ja"
-#: ../bin/cblock.c:748 ../bin/ccornu.c:2753 ../bin/ccornu.c:2966
-#: ../bin/cdraw.c:129 ../bin/cgroup.c:1077 ../bin/cpull.c:646
-#: ../bin/csignal.c:709 ../bin/cswitchmotor.c:668 ../bin/ctodesgn.c:2659
-#: ../bin/ctodesgn.c:3213 ../bin/ctrain.c:2512 ../bin/dcar.c:3965
-#: ../bin/dcar.c:4054 ../bin/dcar.c:4137 ../bin/dcar.c:4156 ../bin/dcar.c:4475
-#: ../bin/dcar.c:4895 ../bin/dcontmgm.c:161 ../bin/dcustmgm.c:153
-#: ../bin/misc.c:1328 ../bin/misc.c:1335 ../bin/misc.c:1407
-#: ../bin/track.c:1708 ../bin/track.c:1805 ../bin/track.c:1822
+#: ../bin/cblock.c:767 ../bin/ccornu.c:2953 ../bin/ccornu.c:3177
+#: ../bin/cdraw.c:130 ../bin/cgroup.c:1162 ../bin/command.c:400
+#: ../bin/command.c:407 ../bin/command.c:467 ../bin/cpull.c:674
+#: ../bin/csignal.c:725 ../bin/cswitchmotor.c:700 ../bin/ctodesgn.c:2893
+#: ../bin/ctodesgn.c:3507 ../bin/ctrain.c:2607 ../bin/dcar.c:4245
+#: ../bin/dcar.c:4343 ../bin/dcar.c:4433 ../bin/dcar.c:4459 ../bin/dcar.c:4843
+#: ../bin/dcar.c:5284 ../bin/dcustmgm.c:162 ../bin/dcontmgm.c:168
+#: ../bin/track.c:1806 ../bin/track.c:1908 ../bin/track.c:1926
msgid "No"
msgstr "Nein"
-#: ../bin/cblock.c:749
+#: ../bin/cblock.c:769
msgid "Delete Block"
msgstr "Block löschen"
-#: ../bin/cblock.c:794
+#: ../bin/cblock.c:814
#, c-format
msgid "Deleting block %s"
msgstr "Block%s löschen"
-#: ../bin/cblock.c:810
+#: ../bin/cblock.c:830
msgid "Modify Block"
msgstr "Block bearbeiten"
-#: ../bin/cblock.c:843
+#: ../bin/cblock.c:863
msgid "Edit block"
msgstr "Block bearbeiten"
-#: ../bin/cblock.c:849
+#: ../bin/cblock.c:869
#, c-format
msgid "Edit block %d"
msgstr "Block%d bearbeiten"
-#: ../bin/ccontrol.c:169 ../bin/csensor.c:161 ../bin/csignal.c:236
-#: ../bin/ctrain.c:184
-msgid "Position"
-msgstr "Position"
-
-#: ../bin/ccontrol.c:170 ../bin/ccontrol.c:428
-msgid "On Script"
-msgstr "Befehlsskript An"
-
-#: ../bin/ccontrol.c:171 ../bin/ccontrol.c:430
-msgid "Off Script"
-msgstr "Befehlsskript Aus"
-
-#: ../bin/ccontrol.c:237
-msgid "Change Control"
-msgstr "Steuerung ändern"
-
-#: ../bin/ccontrol.c:279 ../bin/csensor.c:249
-#, c-format
-msgid "(%d [%s]): Layer=%u, at %0.3f,%0.3f"
-msgstr "(%d [%s]): Ebene=%u, bei %0.3f,%0.3f"
-
-#: ../bin/ccontrol.c:292 ../bin/ccontrol.c:634
-msgid "Control"
-msgstr "Steuerung"
-
-#: ../bin/ccontrol.c:424 ../bin/csensor.c:388 ../bin/csignal.c:508
-msgid "Origin X"
-msgstr "Ausgangspunkt X"
-
-#: ../bin/ccontrol.c:426 ../bin/csensor.c:390 ../bin/csignal.c:510
-msgid "Origin Y"
-msgstr "Ausgangspunkt: Y"
-
-#: ../bin/ccontrol.c:442
-msgid "Create Control"
-msgstr "Steuerung erstellen"
-
-#: ../bin/ccontrol.c:445
-msgid "Modify Control"
-msgstr "Steuerung ändern"
-
-#: ../bin/ccontrol.c:482
-msgid "Edit control"
-msgstr "Steuerung bearbeiten"
-
-#: ../bin/ccontrol.c:523
-msgid "Place control"
-msgstr "Steuerung setzen"
-
-#: ../bin/ccornu.c:195 ../bin/ccornu.c:198 ../bin/ccornu.c:201
-#: ../bin/ccornu.c:255
+#: ../bin/ccornu.c:193 ../bin/ccornu.c:196 ../bin/ccornu.c:199
+#: ../bin/ccornu.c:253
#, c-format
msgid "%s FlexTrack"
msgstr "%s Flexgleis"
-#: ../bin/ccornu.c:249
+#: ../bin/ccornu.c:247
msgid " FLEX "
msgstr " FLEX "
-#: ../bin/ccornu.c:897 ../bin/cjoin.c:962 ../bin/cmisc.c:57
+#: ../bin/ccornu.c:964 ../bin/cjoin.c:1063 ../bin/cmisc.c:55
msgid "First"
msgstr "Erste"
-#: ../bin/ccornu.c:904 ../bin/cjoin.c:970
+#: ../bin/ccornu.c:971 ../bin/cjoin.c:1071
msgid "Second"
msgstr "Zweite"
-#: ../bin/ccornu.c:975 ../bin/ccornu.c:1998 ../bin/ccornu.c:2028
-#: ../bin/tcornu.c:836 ../bin/tcornu.c:1321
+#: ../bin/ccornu.c:1047 ../bin/ccornu.c:2141 ../bin/ccornu.c:2172
+#: ../bin/tcornu.c:877 ../bin/tcornu.c:1387
#, c-format
msgid ""
"Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] "
"c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"
msgstr ""
-"Erstellen der mit p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] "
-"c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s nicht möglich"
+"Erstellen der mit p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] c2[%0.3f,"
+"%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s nicht möglich"
-#: ../bin/ccornu.c:1011 ../bin/ccornu.c:1633 ../bin/ccornu.c:1652
-#: ../bin/tbezier.c:250 ../bin/tbezier.c:257 ../bin/tcornu.c:303
-#: ../bin/tcornu.c:308 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:176
+#: ../bin/ccornu.c:1084 ../bin/ccornu.c:1757 ../bin/ccornu.c:1778
+#: ../bin/tbezier.c:284 ../bin/tbezier.c:291 ../bin/tcornu.c:320
+#: ../bin/tcornu.c:325 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:178
msgid "End Angle"
msgstr "Endwinkel"
-#: ../bin/ccornu.c:1014 ../bin/ccornu.c:1632 ../bin/ccornu.c:1651
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:177
+#: ../bin/ccornu.c:1087 ../bin/ccornu.c:1756 ../bin/ccornu.c:1777
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:179
msgid "End Radius"
msgstr "Endradius"
-#: ../bin/ccornu.c:1067
+#: ../bin/ccornu.c:1142
msgid "Select Point, or Add Point"
msgstr "Punkt auswählen oder neuen Punkt hinzufügen"
-#: ../bin/ccornu.c:1242
+#: ../bin/ccornu.c:1330
msgid "Not close enough to track or point, reselect"
msgstr "Kein Gleis oder Endpunkt in der Nähe, bitte wiederholen"
-#: ../bin/ccornu.c:1248
+#: ../bin/ccornu.c:1336
msgid "Drag out end of Cornu"
msgstr "Ende der Cornu ziehen"
-#: ../bin/ccornu.c:1250
+#: ../bin/ccornu.c:1338
msgid "Drag along end of track"
msgstr "Entlang des Ende des Gleises ziehen"
-#: ../bin/ccornu.c:1252
+#: ../bin/ccornu.c:1340
msgid "Drag to move"
msgstr "Ziehen zum Verschieben"
-#: ../bin/ccornu.c:1255
+#: ../bin/ccornu.c:1344
msgid "Drag point to new location, Delete to remove"
msgstr "Den Punkt an die neue Position verschieben, mit Entf löschen"
-#: ../bin/ccornu.c:1259
+#: ../bin/ccornu.c:1348
msgid "Drag to change end radius"
msgstr "Radius durch Ziehen ändern"
-#: ../bin/ccornu.c:1262
+#: ../bin/ccornu.c:1351
msgid "Drag to change end angle"
msgstr "Ziehen um den Abschlußwinkel zu ändern"
-#: ../bin/ccornu.c:1277
+#: ../bin/ccornu.c:1368
msgid "Pick any circle to adjust or add - Enter to accept, Esc to cancel"
msgstr ""
"Um Anzupassen einen beliebigen Kreis auswählen -Eingabe zum Bestätigen, Esc "
"zum Abbrechen"
-#: ../bin/ccornu.c:1289
+#: ../bin/ccornu.c:1380
msgid "Track can't be split"
msgstr "Das Gleis kann nicht getrennt werden"
-#: ../bin/ccornu.c:1351
+#: ../bin/ccornu.c:1450
msgid "Too close to other end of selected Track"
msgstr "Zu nahe am anderen Ende des ausgewählten Gleises"
-#: ../bin/ccornu.c:1359
+#: ../bin/ccornu.c:1460
msgid "Can't move end inside a turnout"
msgstr "Ende kann nicht in ein festes Gleis hinein verschoben werden"
-#: ../bin/ccornu.c:1500
+#: ../bin/ccornu.c:1609
msgid "Can't extend connected Bezier or Cornu"
msgstr "Bezier- oder Cornu-Kurve kann nicht erweitert werden"
-#: ../bin/ccornu.c:1572
+#: ../bin/ccornu.c:1690
#, c-format
msgid ""
"Cornu : Min Radius=%s MaxRateofCurveChange/Scale=%s Length=%s Winding Arc=%s"
msgstr ""
"Cornu: Mindestradius =%s Max. Änderungsrate des Radius=%s Länge=%s Bogen=%s"
-#: ../bin/ccornu.c:1594 ../bin/ccornu.c:2267
+#: ../bin/ccornu.c:1714 ../bin/ccornu.c:2423
msgid "Helix Already Connected"
msgstr "Gleiswendel ist bereits verbunden"
-#: ../bin/ccornu.c:1608
+#: ../bin/ccornu.c:1730
msgid "No Valid end point on that track"
msgstr "Kein gültiger Endpunkt auf diesem Gleis"
-#: ../bin/ccornu.c:1613
+#: ../bin/ccornu.c:1735
msgid "Track is different scale"
msgstr "Das Gleis hat einen anderen Maßstab"
-#: ../bin/ccornu.c:1666
+#: ../bin/ccornu.c:1794
msgid ""
-"Pick on point to adjust it along track - Delete to remove, Enter to confirm,"
-" ESC to abort"
+"Pick on point to adjust it along track - Delete to remove, Enter to confirm, "
+"ESC to abort"
msgstr ""
"Einen Punkt auswählen und verschieben - Bestätigen mit Eingabe, Abbrechen "
"mit Esc"
-#: ../bin/ccornu.c:1696
+#: ../bin/ccornu.c:1825
msgid "Cornu has too complex shape - adjust end pts"
msgstr "Die Form der Cornu-Kurve ist zu komplex, Endpunkte anpassen"
-#: ../bin/ccornu.c:1707
+#: ../bin/ccornu.c:1838
#, c-format
msgid "Cornu point %d too close to other end of connect track - reposition it"
msgstr ""
"Cornu-Punkt %d zu dicht am anderen Ende des Gleises - Position verändern"
-#: ../bin/ccornu.c:1712
+#: ../bin/ccornu.c:1844
msgid "Create Cornu"
msgstr "Cornu-Kurve erstellen"
-#: ../bin/ccornu.c:1901
+#: ../bin/ccornu.c:2037
msgid "Now Select or Add (+Shift) a Point"
msgstr "Jetzt einen Punkt auswählen oder (+Umschalttaste) hinzufügen"
-#: ../bin/ccornu.c:1960
+#: ../bin/ccornu.c:2100
#, c-format
msgid "Cornu end %d too close to other end of connect track - reposition it"
msgstr ""
-"Cornu-Ende %d zu dicht am anderen Ende des Gleises - anderere Position "
-"setzen"
+"Cornu-Ende %d zu dicht am anderen Ende des Gleises - andere Position setzen"
-#: ../bin/ccornu.c:1965 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:175
+#: ../bin/ccornu.c:2105 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:177
msgid "Modify Cornu"
msgstr "Cornu-Kurve ändern"
-#: ../bin/ccornu.c:1980
+#: ../bin/ccornu.c:2122
#, c-format
msgid "Cornu Extension Create Failed for end %d"
-msgstr "Das Erzeugen einer Klothide aus dem Endpunkt %d ist nicht möglich"
+msgstr "Das Erzeugen einer Cornu aus dem Endpunkt %d ist nicht möglich"
-#: ../bin/ccornu.c:2072
+#: ../bin/ccornu.c:2219
#, c-format
msgid "Connected Track End Adjust for end %d failed"
msgstr "Ende %d des Gleis ist verbunden und kann nicht angepasst werden"
-#: ../bin/ccornu.c:2083
+#: ../bin/ccornu.c:2230
msgid "Modify Cornu Cancelled"
msgstr "Änderung der Cornu-Kurve abbrechen"
-#: ../bin/ccornu.c:2243
+#: ../bin/ccornu.c:2396
msgid "Left click - Start Cornu track"
msgstr "Durch Drücken der linken Maustaste mit einer Cornu beginnen"
-#: ../bin/ccornu.c:2245
+#: ../bin/ccornu.c:2398
msgid "Left click - Place Flextrack"
msgstr "Linke Maustaste - Flexgleis setzen"
-#: ../bin/ccornu.c:2248
+#: ../bin/ccornu.c:2401
msgid "Left click - join with Cornu track"
msgstr "Durch Drücken der linken Maustaste mit einer Cornu-Kurve verbinden"
-#: ../bin/ccornu.c:2250
+#: ../bin/ccornu.c:2404
msgid "Left click - join with Cornu track, Shift Left click - move to join"
msgstr ""
"Linke Maustaste - Verbinden mit Cornu-Gleis, Umschalten + linke Maustaste - "
"Verschieben zum Verbinden"
-#: ../bin/ccornu.c:2281
+#: ../bin/ccornu.c:2439
msgid "No valid open endpoint on that track"
msgstr "Kein gültiger und unbenutzter Endpunkt auf diesem Gleis"
-#: ../bin/ccornu.c:2309 ../bin/ccornu.c:2321
+#: ../bin/ccornu.c:2469 ../bin/ccornu.c:2482
msgid "Drag arm in the direction of track"
msgstr "Kontrollarm in Richtung des Gleises ziehen"
-#: ../bin/ccornu.c:2325
+#: ../bin/ccornu.c:2487
msgid "No Unconnected Track End there"
msgstr "Hier ist kein offenes Gleisende"
-#: ../bin/ccornu.c:2336 ../bin/ccornu.c:2360
+#: ../bin/ccornu.c:2498 ../bin/ccornu.c:2523
msgid "No Valid Track End there"
msgstr "Hier ist kein gültiges Gleisende"
-#: ../bin/ccornu.c:2348
+#: ../bin/ccornu.c:2511
msgid "Locked - Move 1st end point of Cornu track along track 1"
msgstr ""
"Fixiert - verschiebe den ersten Endpunkt des Cornu-Gleis entlang des ersten "
"Gleises"
-#: ../bin/ccornu.c:2372
+#: ../bin/ccornu.c:2535
msgid "Locked - Move 2nd end point of Cornu track along track 2"
msgstr ""
-"Fixiert, verschiebe den zweiten Endpunkt des Cornu-Gleis entlang des zweiten"
-" Gleises"
+"Fixiert, verschiebe den zweiten Endpunkt des Cornu-Gleis entlang des zweiten "
+"Gleises"
-#: ../bin/ccornu.c:2450
+#: ../bin/ccornu.c:2623
msgid "Track can't be split - so locked to endpoint"
msgstr "Das Gleis kann nicht getrennt werden - daher am Endpunkt fixiert"
-#: ../bin/ccornu.c:2455
+#: ../bin/ccornu.c:2628
msgid "Point not on track 1"
msgstr "Der Punkt ist nicht auf Gleis 1"
-#: ../bin/ccornu.c:2493
+#: ../bin/ccornu.c:2670
msgid "Pick other end of Cornu"
msgstr "Anderes Ende der Cornu setzen"
-#: ../bin/ccornu.c:2495
+#: ../bin/ccornu.c:2673
msgid ""
"Select flextrack ends or anchors and drag, Enter to approve, Esc to Cancel"
msgstr ""
-"Wählen Sie Flextrack-Enden oder Anker aus und ziehen Sie, Enter zum "
+"Wählen Sie Flextrack-Enden oder Anker aus und ziehen Sie, Eingabe zum "
"Bestätigen, Esc zum Abbrechen"
-#: ../bin/ccornu.c:2499
+#: ../bin/ccornu.c:2680
msgid "Put other end of Cornu on a track with an unconnected end point"
msgstr ""
-"Setze den aneren Endpunkt des Cornu-Gleis auf ein Gleis mit einem "
+"Setze den anderen Endpunkt des Cornu-Gleis auf ein Gleis mit einem "
"unverbundenen Endpunkt"
-#: ../bin/ccornu.c:2741 ../bin/ccornu.c:2955
+#: ../bin/ccornu.c:2941 ../bin/ccornu.c:3166
msgid "Not on a Track"
msgstr "Nicht auf einem Gleis"
-#: ../bin/ccornu.c:2749
+#: ../bin/ccornu.c:2949
msgid "Select a Track To Convert"
msgstr "Gleis für das Umwandeln auswählen"
-#: ../bin/ccornu.c:2753
+#: ../bin/ccornu.c:2952
msgid "Convert all Selected Tracks to Cornu Tracks?"
msgstr "Sollen alle ausgewählten Gleise in Cornu umgewandelt werden?"
-#: ../bin/ccornu.c:2758
+#: ../bin/ccornu.c:2958
msgid "Convert Cornu"
msgstr "Cornu umwandeln"
-#: ../bin/ccornu.c:2910
+#: ../bin/ccornu.c:3118
#, c-format
msgid "Tracks Counts: %d converted %d unconvertible %d created %d deleted"
msgstr ""
"Anzahl der Gleise: %d umgewandelt, %d nicht umwandelbar, %d erstellt, %d "
"entfernt"
-#: ../bin/ccornu.c:2910 ../bin/ccornu.c:3027
+#: ../bin/ccornu.c:3118 ../bin/ccornu.c:3241 ../bin/cturnout.c:352
+#: ../bin/paramfilelist.c:113 ../bin/toolbar.c:229
msgid "OK"
msgstr "Ok"
-#: ../bin/ccornu.c:2962
+#: ../bin/ccornu.c:3173
msgid "Select a Cornu or Bezier Track To Convert to Fixed"
msgstr ""
"Wählen Sie eine Cornu- oder ein Bezier-Gleis um es festes Gleis zu wandeln"
-#: ../bin/ccornu.c:2966
+#: ../bin/ccornu.c:3176
msgid "Convert all Selected Tracks to Fixed Tracks?"
msgstr "Sollen alle ausgewählten Gleise in feste Gleise umgewandelt werden?"
-#: ../bin/ccornu.c:2976
+#: ../bin/ccornu.c:3187
msgid "Convert Bezier and Cornu"
msgstr "Bezier-Kurve oder Cornu umwandeln"
-#: ../bin/ccornu.c:3027
+#: ../bin/ccornu.c:3240
#, c-format
msgid "Tracks Counts: %d converted %d unconvertible %d deleted"
msgstr "Anzahl der Gleise: %d umgewandelt, %d nicht umwandelbar, %d entfernt"
-#: ../bin/ccornu.c:3055
+#: ../bin/ccornu.c:3269
msgid "Convert"
msgstr "Umwandeln"
-#: ../bin/ccornu.c:3056
+#: ../bin/ccornu.c:3270
msgid "Convert To Cornu"
msgstr "In Cornu erstellen"
-#: ../bin/ccornu.c:3057
+#: ../bin/ccornu.c:3273
msgid "Convert From Cornu"
msgstr "Aus Cornu umwandeln"
-#: ../bin/ccurve.c:163
+#: ../bin/ccurve.c:165
msgid "Drag from endpoint in direction of curve - lock to track open endpoint"
msgstr ""
"Vom Endpunkt in Richtung der Kurve ziehen, an unverbundenen Endpunkt "
"verbinden"
-#: ../bin/ccurve.c:165
+#: ../bin/ccurve.c:167
msgid "Drag from endpoint in direction of curve"
msgstr "Vom Endpunkt in Richtung der Kurve ziehen"
-#: ../bin/ccurve.c:169
+#: ../bin/ccurve.c:172
msgid "Drag from endpoint to center - lock to track open endpoint"
msgstr ""
"Vom Endpunkt zum Mittelpunkt ziehen, an unverbundenen Endpunkt verbinden"
-#: ../bin/ccurve.c:171
+#: ../bin/ccurve.c:174
msgid "Drag from endpoint to center"
msgstr "Vom Endpunkt zum Mittelpunkt ziehen"
-#: ../bin/ccurve.c:174
+#: ../bin/ccurve.c:178
msgid "Drag from center to endpoint"
msgstr "Vom Mittelpunkt zum Endpunkt ziehen"
-#: ../bin/ccurve.c:177
+#: ../bin/ccurve.c:181
msgid "Drag from one to other end of chord"
msgstr "Vom einen zum anderen Ende der Sehne ziehen"
-#: ../bin/ccurve.c:236
+#: ../bin/ccurve.c:243
msgid "End locked: Drag out curve start"
msgstr "Ende fixiert, Anfang der Kurve ziehen"
-#: ../bin/ccurve.c:237 ../bin/ccurve.c:247 ../bin/ccurve.c:265
+#: ../bin/ccurve.c:244 ../bin/ccurve.c:254 ../bin/ccurve.c:272
msgid "End Position locked: Drag out curve start with Shift"
msgstr "Ende fixiert, Anfang der Kurve mit Umschalt-Taste ziehen"
-#: ../bin/ccurve.c:238
+#: ../bin/ccurve.c:245
msgid "Drag along curve start"
msgstr "Entlang der Anfangs der Kurve ziehen"
-#: ../bin/ccurve.c:246
+#: ../bin/ccurve.c:253
msgid "End locked: Drag out curve center"
msgstr "Ende fixiert, Mittelpunkt der Kurve ziehen"
-#: ../bin/ccurve.c:248
+#: ../bin/ccurve.c:255
msgid "Drag out curve center"
msgstr "Zum Mittelpunkt der Kurve ziehen"
-#: ../bin/ccurve.c:255
+#: ../bin/ccurve.c:262
msgid "Drag out from center to endpoint"
msgstr "Vom Mittelpunkt zum Endpunkt ziehen"
-#: ../bin/ccurve.c:264
+#: ../bin/ccurve.c:271
msgid "End locked: Drag to other end of chord"
msgstr "Ende fixiert, zum anderen Ende der Sehne ziehen"
-#: ../bin/ccurve.c:267
+#: ../bin/ccurve.c:274
msgid "Drag to other end of chord"
msgstr "Zum anderen Ende der Sehne ziehen"
-#: ../bin/ccurve.c:322
+#: ../bin/ccurve.c:332
#, c-format
msgid "Start Locked: Drag out curve start - Angle=%0.3f"
msgstr "Anfang fixiert, Anfangspunkt der Kurve ziehen - Winkel=%0.3f"
-#: ../bin/ccurve.c:323
+#: ../bin/ccurve.c:333
#, c-format
msgid "Drag out curve start - Angle=%0.3f"
msgstr "Anfangspunkt der Kurve ziehen - Winkel=%0.3f"
-#: ../bin/ccurve.c:329
+#: ../bin/ccurve.c:340
#, c-format
msgid "Tangent locked: Drag out center - Radius=%s Angle=%0.3f"
msgstr "Gleistangente gesetzt: Ziehe zum Mittelpunkt - Radius=%s Winkel=%0.3f"
-#: ../bin/ccurve.c:330
+#: ../bin/ccurve.c:341
#, c-format
msgid "Drag out center - Radius=%s Angle=%0.3f"
msgstr "Ziehe zum Mittelpunkt - Radius=%s Winkel=%0.3f"
-#: ../bin/ccurve.c:336
+#: ../bin/ccurve.c:348
#, c-format
msgid "Drag to Edge: Radius=%s Angle=%0.3f"
msgstr "Ziehe zur Kante - Radius=%s Winkel=%0.3f"
-#: ../bin/ccurve.c:342
+#: ../bin/ccurve.c:356
#, c-format
msgid "Start locked: Drag out chord length=%s angle=%0.3f"
msgstr ""
"Anfang fixiert, zum anderen Ende der Sehne ziehen Länge=%s Winkel=%0.3f"
-#: ../bin/ccurve.c:343
+#: ../bin/ccurve.c:357
#, c-format
msgid "Drag out chord length=%s angle=%0.3f"
msgstr "Sehne ziehen Länge=%s Winkel=%0.3f"
-#: ../bin/ccurve.c:414 ../bin/ccurve.c:582 ../bin/cjoin.c:669
-#: ../bin/cjoin.c:924
+#: ../bin/ccurve.c:433 ../bin/ccurve.c:615 ../bin/cjoin.c:714
+#: ../bin/cjoin.c:1017
msgid "Desired Radius"
msgstr "Gewünschter Radius"
-#: ../bin/ccurve.c:512 ../bin/cjoin.c:208 ../bin/cmodify.c:600
-#: ../bin/cturntbl.c:625
+#: ../bin/ccurve.c:534 ../bin/cjoin.c:216 ../bin/cmodify.c:639
+#: ../bin/cturntbl.c:687
#, c-format
msgid "Straight Track: Length=%s Angle=%0.3f"
msgstr "Gleisgerade: Länge=%s Winkel=%0.3f"
-#: ../bin/ccurve.c:519 ../bin/cmodify.c:605 ../bin/drawgeom.c:663
-#: ../wlib/gtklib/ixhelp.c:235
+#: ../bin/ccurve.c:542 ../bin/cmodify.c:644 ../bin/drawgeom.c:718
msgid "Back"
msgstr "Zurück"
-#: ../bin/ccurve.c:539
+#: ../bin/ccurve.c:563
#, c-format
msgid "Curved Track: Radius=%s Angle=%0.3f Length=%s"
msgstr "Gleisbogen: Radius=%s Winkel=%0.3f Länge=%s"
-#: ../bin/ccurve.c:608 ../bin/cstraigh.c:171
+#: ../bin/ccurve.c:642 ../bin/cstraigh.c:173
msgid "Create Straight Track"
msgstr "Erstelle gerades Gleis"
-#: ../bin/ccurve.c:621
+#: ../bin/ccurve.c:656
msgid "Create Curved Track"
msgstr "Erstelle Gleisbogen"
-#: ../bin/ccurve.c:691
+#: ../bin/ccurve.c:726
msgid "Elevation Difference"
msgstr "Höhenunterschied"
-#: ../bin/ccurve.c:692 ../bin/cdraw.c:519 ../bin/cdraw.c:1514
-#: ../bin/cdraw.c:1660 ../bin/cdraw.c:2712 ../bin/cdraw.c:2907
-#: ../bin/cdraw.c:2921 ../bin/compound.c:686 ../bin/compound.c:691
-#: ../bin/compound.c:696 ../bin/compound.c:701 ../bin/ctodesgn.c:179
-#: ../bin/ctodesgn.c:180 ../bin/ctodesgn.c:181 ../bin/ctodesgn.c:182
-#: ../bin/ctodesgn.c:298 ../bin/ctodesgn.c:301 ../bin/ctodesgn.c:303
-#: ../bin/ctodesgn.c:364 ../bin/ctodesgn.c:365 ../bin/ctodesgn.c:370
-#: ../bin/ctodesgn.c:434 ../bin/ctodesgn.c:438 ../bin/ctodesgn.c:439
-#: ../bin/ctodesgn.c:445 ../bin/ctodesgn.c:614 ../bin/tbezier.c:251
-#: ../bin/tbezier.c:258 ../bin/tcornu.c:309 ../bin/tcurve.c:382
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:185
+#: ../bin/ccurve.c:727 ../bin/cdraw.c:559 ../bin/cdraw.c:1585
+#: ../bin/cdraw.c:1732 ../bin/cdraw.c:2850 ../bin/cdraw.c:3050
+#: ../bin/cdraw.c:3064 ../bin/compound.c:723 ../bin/compound.c:728
+#: ../bin/compound.c:733 ../bin/compound.c:738 ../bin/ctodesgn.c:189
+#: ../bin/ctodesgn.c:190 ../bin/ctodesgn.c:191 ../bin/ctodesgn.c:192
+#: ../bin/ctodesgn.c:319 ../bin/ctodesgn.c:322 ../bin/ctodesgn.c:324
+#: ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:399 ../bin/ctodesgn.c:404
+#: ../bin/ctodesgn.c:480 ../bin/ctodesgn.c:484 ../bin/ctodesgn.c:485
+#: ../bin/ctodesgn.c:491 ../bin/ctodesgn.c:698 ../bin/tbezier.c:285
+#: ../bin/tbezier.c:292 ../bin/tcornu.c:326 ../bin/tcurve.c:401
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:187
msgid "Radius"
msgstr "Radius"
-#: ../bin/ccurve.c:693 ../bin/tcurve.c:383
+#: ../bin/ccurve.c:728 ../bin/tcurve.c:402
msgid "Turns"
msgstr "Windungen"
-#: ../bin/ccurve.c:694
+#: ../bin/ccurve.c:729
msgid "Angular Separation"
msgstr "Winkelabstand"
-#: ../bin/ccurve.c:695 ../bin/celev.c:43 ../bin/compound.c:703
-#: ../bin/tbezier.c:263 ../bin/tcornu.c:316 ../bin/tcurve.c:389
-#: ../bin/tease.c:519 ../bin/tstraigh.c:92
+#: ../bin/ccurve.c:730 ../bin/celev.c:43 ../bin/compound.c:740
+#: ../bin/tbezier.c:297 ../bin/tcornu.c:333 ../bin/tcurve.c:408
+#: ../bin/tease.c:534 ../bin/tstraigh.c:93
msgid "Grade"
msgstr "Steigung"
-#: ../bin/ccurve.c:696
+#: ../bin/ccurve.c:731
msgid "Vertical Separation"
msgstr "Vertikaler Abstand"
-#: ../bin/ccurve.c:698
+#: ../bin/ccurve.c:733
msgid "Total Length"
msgstr "Gesamtlänge"
-#: ../bin/ccurve.c:774
+#: ../bin/ccurve.c:813
#, c-format
msgid "Total Length %s"
msgstr "Gesamtlänge %s"
-#: ../bin/ccurve.c:812 ../bin/ccurve.c:1016 ../bin/tcurve.c:828
+#: ../bin/ccurve.c:852 ../bin/ccurve.c:1079 ../bin/tcurve.c:1008
msgid "Helix"
msgstr "Gleiswendel"
-#: ../bin/ccurve.c:826
+#: ../bin/ccurve.c:868
msgid "Circle Radius"
msgstr "Kreisradius"
-#: ../bin/ccurve.c:831
+#: ../bin/ccurve.c:873
msgid "Click on Circle Edge"
msgstr "Auf den Rand des Kreis klicken"
-#: ../bin/ccurve.c:835
+#: ../bin/ccurve.c:877
msgid "Click on Circle Center"
msgstr "Auf den Mittelpunkt des Kreises klicken"
-#: ../bin/ccurve.c:867
+#: ../bin/ccurve.c:907
msgid "Drag to Center"
msgstr "Zum Mittelpunkt ziehen"
-#: ../bin/ccurve.c:871
+#: ../bin/ccurve.c:911
msgid "Drag to Edge"
msgstr "Zum Rand ziehen"
-#: ../bin/ccurve.c:891 ../bin/ccurve.c:895
+#: ../bin/ccurve.c:932 ../bin/ccurve.c:936
#, c-format
msgid "Radius=%s"
msgstr "Radius=%s"
-#: ../bin/ccurve.c:916
+#: ../bin/ccurve.c:957
msgid "Create Helix Track"
msgstr "Erstelle Gleiswendel"
-#: ../bin/ccurve.c:931
+#: ../bin/ccurve.c:972
msgid "Create Circle Track"
msgstr "Erstelle Gleiskreis"
-#: ../bin/ccurve.c:986
+#: ../bin/ccurve.c:1031
msgid "Curve Track"
msgstr "Gleisbogen"
-#: ../bin/ccurve.c:986
+#: ../bin/ccurve.c:1031
msgid "Curve Tracks"
msgstr "Gleisbögen"
-#: ../bin/ccurve.c:987
+#: ../bin/ccurve.c:1032
msgid "Curve from End-Pt"
msgstr "Bogen aus Endpunkten"
-#: ../bin/ccurve.c:988
+#: ../bin/ccurve.c:1035
msgid "Curve from Tangent"
msgstr "Bogen an Tangente"
-#: ../bin/ccurve.c:989
+#: ../bin/ccurve.c:1038
msgid "Curve from Center"
msgstr "Bogen um Mittelpunkt"
-#: ../bin/ccurve.c:990
+#: ../bin/ccurve.c:1041
msgid "Curve from Chord"
msgstr "Bogen aus Sehne"
-#: ../bin/ccurve.c:991 ../bin/cdraw.c:3053
+#: ../bin/ccurve.c:1044 ../bin/cdraw.c:3199
msgid "Bezier Curve"
msgstr "Bezierkurve"
-#: ../bin/ccurve.c:992
+#: ../bin/ccurve.c:1047
msgid "Cornu Curve"
msgstr "Cornu"
-#: ../bin/ccurve.c:995 ../bin/tcurve.c:655
+#: ../bin/ccurve.c:1052 ../bin/tcurve.c:684
msgid "Circle Track"
msgstr "Gleiskreis"
-#: ../bin/ccurve.c:995
+#: ../bin/ccurve.c:1052
msgid "Circle Tracks"
msgstr "Gleiskreise"
-#: ../bin/ccurve.c:996
+#: ../bin/ccurve.c:1054
msgid "Fixed Radius Circle"
msgstr "Kreis mit festem Radius"
-#: ../bin/ccurve.c:997
+#: ../bin/ccurve.c:1056
msgid "Circle from Tangent"
msgstr "Kreis an Tangente"
-#: ../bin/ccurve.c:998
+#: ../bin/ccurve.c:1059
msgid "Circle from Center"
msgstr "Kreis um Mittelpunkt"
+#: ../bin/ccontrol.c:169 ../bin/csensor.c:161 ../bin/csignal.c:237
+#: ../bin/ctrain.c:182
+msgid "Position"
+msgstr "Position"
+
+#: ../bin/ccontrol.c:170 ../bin/ccontrol.c:431
+msgid "On Script"
+msgstr "Befehlsskript An"
+
+#: ../bin/ccontrol.c:171 ../bin/ccontrol.c:433
+msgid "Off Script"
+msgstr "Befehlsskript Aus"
+
+#: ../bin/ccontrol.c:238
+msgid "Change Control"
+msgstr "Steuerung ändern"
+
+#: ../bin/ccontrol.c:281 ../bin/csensor.c:251
+#, c-format
+msgid "(%d [%s]): Layer=%u, at %0.3f,%0.3f"
+msgstr "(%d [%s]): Ebene=%u, bei %0.3f,%0.3f"
+
+#: ../bin/ccontrol.c:294 ../bin/ccontrol.c:644
+msgid "Control"
+msgstr "Steuerung"
+
+#: ../bin/ccontrol.c:427 ../bin/csensor.c:391 ../bin/csignal.c:512
+msgid "Origin X"
+msgstr "Ausgangspunkt X"
+
+#: ../bin/ccontrol.c:429 ../bin/csensor.c:393 ../bin/csignal.c:514
+msgid "Origin Y"
+msgstr "Ausgangspunkt: Y"
+
+#: ../bin/ccontrol.c:445
+msgid "Create Control"
+msgstr "Steuerung erstellen"
+
+#: ../bin/ccontrol.c:448
+msgid "Modify Control"
+msgstr "Steuerung ändern"
+
+#: ../bin/ccontrol.c:488
+msgid "Edit control"
+msgstr "Steuerung bearbeiten"
+
+#: ../bin/ccontrol.c:529
+msgid "Place control"
+msgstr "Steuerung setzen"
+
#: ../bin/cdraw.c:125
msgid "Font Size must be > 0"
msgstr "Schriftgröße muss größer als 0 sein"
-#: ../bin/cdraw.c:513
+#: ../bin/cdraw.c:553
msgid "First Point: X,Y"
msgstr "Erster Punkt: X,Y"
-#: ../bin/cdraw.c:514 ../bin/tcurve.c:381
+#: ../bin/cdraw.c:554 ../bin/tcurve.c:400
msgid "Center: X,Y"
msgstr "Mittelpunkt: X,Y"
-#: ../bin/cdraw.c:515 ../bin/tcurve.c:386
+#: ../bin/cdraw.c:555 ../bin/tcurve.c:405
msgid "Angular Length"
msgstr "Winkellänge"
-#: ../bin/cdraw.c:516
+#: ../bin/cdraw.c:556
msgid "Line Angle"
msgstr "Linienwinkel"
-#: ../bin/cdraw.c:517 ../bin/tcurve.c:387
+#: ../bin/cdraw.c:557 ../bin/tcurve.c:406
msgid "CCW Angle"
msgstr "Winkel gegen Uhrzeigersinn"
-#: ../bin/cdraw.c:518 ../bin/tcurve.c:388
+#: ../bin/cdraw.c:558 ../bin/tcurve.c:407
msgid "CW Angle"
msgstr "Winkel im Uhrzeigersinn"
-#: ../bin/cdraw.c:521 ../bin/cdraw.c:1511 ../bin/cdraw.c:1633
-#: ../bin/cprint.c:129 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:183
+#: ../bin/cdraw.c:561 ../bin/cdraw.c:1582 ../bin/cdraw.c:1705
+#: ../bin/cprint.c:131 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:185
msgid "Height"
msgstr "Seitenhöhe"
-#: ../bin/cdraw.c:522 ../bin/cdraw.c:1509 ../bin/cdraw.c:1632
-#: ../bin/cdraw.c:2707 ../bin/cdraw.c:2965 ../bin/ctrain.c:187
-#: ../bin/dcar.c:2225 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:190
+#: ../bin/cdraw.c:562 ../bin/cdraw.c:1580 ../bin/cdraw.c:1704
+#: ../bin/cdraw.c:2845 ../bin/cdraw.c:3110 ../bin/ctrain.c:185
+#: ../bin/dcar.c:2344 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:192
msgid "Width"
msgstr "Breite"
-#: ../bin/cdraw.c:523 ../bin/compound.c:706 ../bin/tstraigh.c:93
+#: ../bin/cdraw.c:563 ../bin/compound.c:743 ../bin/tstraigh.c:94
msgid "Pivot"
msgstr "Drehpunkt"
-#: ../bin/cdraw.c:524
+#: ../bin/cdraw.c:564
msgid "Point Count"
msgstr "Anzahl der Punkte"
-#: ../bin/cdraw.c:525 ../bin/cdraw.c:2685 ../bin/ctodesgn.c:201
-#: ../bin/tbezier.c:265
+#: ../bin/cdraw.c:565 ../bin/cdraw.c:2823 ../bin/ctodesgn.c:211
+#: ../bin/tbezier.c:299
msgid "Line Width"
msgstr "Strichdicke"
-#: ../bin/cdraw.c:526 ../bin/cdraw.c:2714 ../bin/tbezier.c:264
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:376
+#: ../bin/cdraw.c:566 ../bin/cdraw.c:2852 ../bin/tbezier.c:298
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:379
msgid "Line Type"
msgstr "Linienart"
-#: ../bin/cdraw.c:527 ../bin/cdraw.c:2687 ../bin/cdraw.c:2689
-#: ../bin/cdraw.c:2788 ../bin/cdraw.c:2821 ../bin/cmisc.c:123
-#: ../bin/ctext.c:66 ../bin/ctext.c:146 ../bin/ctodesgn.c:202
-#: ../bin/dcar.c:2221 ../bin/dlayer.c:580 ../bin/doption.c:563
+#: ../bin/cdraw.c:567 ../bin/cdraw.c:2825 ../bin/cdraw.c:2827
+#: ../bin/cdraw.c:2927 ../bin/cdraw.c:2960 ../bin/cmisc.c:121 ../bin/ctext.c:59
+#: ../bin/ctext.c:137 ../bin/ctodesgn.c:212 ../bin/dcar.c:2340
+#: ../bin/dlayer.c:546 ../bin/doption.c:586
msgid "Color"
msgstr "Farbe"
-#: ../bin/cdraw.c:528
+#: ../bin/cdraw.c:568
msgid "Filled"
msgstr "Gefüllt"
-#: ../bin/cdraw.c:529
+#: ../bin/cdraw.c:569
msgid "Open End"
msgstr "Offenes Ende"
-#: ../bin/cdraw.c:530 ../bin/cmisc.c:146 ../bin/cmisc.c:147 ../bin/cmisc.c:148
-#: ../bin/cmisc.c:149 ../bin/ctext.c:68 ../bin/ctext.c:147
+#: ../bin/cdraw.c:570 ../bin/cmisc.c:144 ../bin/cmisc.c:145 ../bin/cmisc.c:146
+#: ../bin/cmisc.c:147 ../bin/ctext.c:61 ../bin/ctext.c:138
msgid "Boxed"
msgstr "Eingerahmt"
-#: ../bin/cdraw.c:531 ../bin/cdraw.c:1120 ../bin/cdraw.c:2721
+#: ../bin/cdraw.c:571 ../bin/cdraw.c:1177 ../bin/cdraw.c:2859
msgid "Lumber"
msgstr "Holzleiste"
-#: ../bin/cdraw.c:532
+#: ../bin/cdraw.c:572
msgid "Orientation"
msgstr "Ausrichtung"
-#: ../bin/cdraw.c:533 ../bin/cdraw.c:2703
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:638
+#: ../bin/cdraw.c:573 ../bin/cdraw.c:2841
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:679
msgid "Size"
msgstr "Größe"
-#: ../bin/cdraw.c:534
+#: ../bin/cdraw.c:574
msgid "Text Origin: X,Y"
msgstr "Textursprung: X,Y"
-#: ../bin/cdraw.c:535
+#: ../bin/cdraw.c:575
msgid "Text Angle"
msgstr "Textwinkel"
-#: ../bin/cdraw.c:536 ../bin/ctext.c:64 ../bin/ctext.c:145
+#: ../bin/cdraw.c:576 ../bin/ctext.c:57 ../bin/ctext.c:136
msgid "Font Size"
msgstr "Schriftgröße"
-#: ../bin/cdraw.c:537 ../bin/cdraw.c:1267 ../bin/ctext.c:268
+#: ../bin/cdraw.c:577 ../bin/cdraw.c:1324 ../bin/ctext.c:265
msgid "Text"
msgstr "Text"
-#: ../bin/cdraw.c:538
+#: ../bin/cdraw.c:578
msgid "Lock To Origin"
msgstr "Am Ursprung sperren"
-#: ../bin/cdraw.c:539
+#: ../bin/cdraw.c:579
msgid "Rot Origin: X,Y"
msgstr "Drehzentrum: X,Y"
-#: ../bin/cdraw.c:540
+#: ../bin/cdraw.c:580
msgid "Rotate By"
msgstr "Drehen um"
-#: ../bin/cdraw.c:541 ../bin/compound.c:712 ../bin/cturntbl.c:250
-#: ../bin/doption.c:99 ../bin/doption.c:100 ../bin/tbezier.c:267
-#: ../bin/tcornu.c:317 ../bin/tcurve.c:391 ../bin/tease.c:521
-#: ../bin/tstraigh.c:94 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:716
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:717
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:718
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:719
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:720
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:721
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:722
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:723
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:724
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:725
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:726
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:727
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:728
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:729
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:730
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:731
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:732
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:733
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:734
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:735
+#: ../bin/cdraw.c:581 ../bin/compound.c:749 ../bin/cturntbl.c:277
+#: ../bin/doption.c:96 ../bin/doption.c:97 ../bin/tbezier.c:301
+#: ../bin/tcornu.c:334 ../bin/tcurve.c:410 ../bin/tease.c:536
+#: ../bin/tstraigh.c:95 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:757
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:758
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:759
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:760
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:761
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:762
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:763
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:764
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:765
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:766
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:767
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:768
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:769
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:770
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:771
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:772
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:773
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:774
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:775
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:776
msgid "Layer"
msgstr "Ebene"
-#: ../bin/cdraw.c:1105
+#: ../bin/cdraw.c:1057 ../bin/cmisc.c:233 ../bin/cmodify.c:379
+#: ../bin/compound.c:848 ../bin/ctrain.c:220
+msgid "Change Track"
+msgstr "Gleis ändern"
+
+#: ../bin/cdraw.c:1162
msgid "Straight Line"
msgstr "Gerade Linie"
-#: ../bin/cdraw.c:1110 ../bin/cdraw.c:3045
+#: ../bin/cdraw.c:1167 ../bin/cdraw.c:3190
msgid "Dimension Line"
msgstr "Maßlinie"
-#: ../bin/cdraw.c:1131 ../bin/cdraw.c:2722 ../bin/cdraw.c:3047
+#: ../bin/cdraw.c:1188 ../bin/cdraw.c:2860 ../bin/cdraw.c:3192
msgid "Table Edge"
msgstr "Tischkante"
-#: ../bin/cdraw.c:1155 ../bin/cdraw.c:2727 ../bin/cdraw.c:2728
-#: ../bin/cdraw.c:2729
+#: ../bin/cdraw.c:1212 ../bin/cdraw.c:2865 ../bin/cdraw.c:2866
+#: ../bin/cdraw.c:2867
msgid "Circle"
msgstr "Kreis"
-#: ../bin/cdraw.c:1170
+#: ../bin/cdraw.c:1227
msgid "Curved Line"
msgstr "Gebogene Linie"
-#: ../bin/cdraw.c:1192 ../bin/cdraw.c:2732 ../bin/cdraw.c:2733
-#: ../bin/cdraw.c:2734
+#: ../bin/cdraw.c:1249 ../bin/cdraw.c:2870 ../bin/cdraw.c:2871
+#: ../bin/cdraw.c:2872
msgid "Filled Circle"
msgstr "Gefüllter Kreis"
-#: ../bin/cdraw.c:1222
+#: ../bin/cdraw.c:1279
msgid "Filled Rectangle"
msgstr "Gefülltes Rechteck"
-#: ../bin/cdraw.c:1222
+#: ../bin/cdraw.c:1279
msgid "Rectangle"
msgstr "Rechteck"
-#: ../bin/cdraw.c:1236 ../bin/cdraw.c:2738
+#: ../bin/cdraw.c:1293 ../bin/cdraw.c:2876
msgid "Polyline"
msgstr "Polylinie"
-#: ../bin/cdraw.c:1243 ../bin/cdraw.c:2736 ../bin/cdraw.c:3065
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2874 ../bin/cdraw.c:3213
msgid "Filled Polygon"
-msgstr "Gefülltes Ploygon"
+msgstr "Gefülltes Polygon"
-#: ../bin/cdraw.c:1243 ../bin/cdraw.c:2731 ../bin/cdraw.c:3064
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2869 ../bin/cdraw.c:3212
msgid "Polygon"
msgstr "Vieleck"
-#: ../bin/cdraw.c:1273
+#: ../bin/cdraw.c:1330
#, c-format
msgid "%s(%d) Layer=%d"
msgstr "%s (%d) Ebene=%d"
-#: ../bin/cdraw.c:1293 ../bin/cdraw.c:2791 ../bin/compound.c:1097
-#: ../bin/doption.c:94 ../bin/tbezier.c:472
+#: ../bin/cdraw.c:1355 ../bin/cdraw.c:2930 ../bin/compound.c:1156
+#: ../bin/doption.c:91 ../bin/tbezier.c:519
msgid "Solid"
msgstr "Gefüllt"
-#: ../bin/cdraw.c:1294 ../bin/cdraw.c:2793 ../bin/compound.c:1098
-#: ../bin/doption.c:91 ../bin/tbezier.c:473
+#: ../bin/cdraw.c:1356 ../bin/cdraw.c:2932 ../bin/compound.c:1157
+#: ../bin/doption.c:88 ../bin/tbezier.c:520
msgid "Dash"
msgstr "Gestrichelt"
-#: ../bin/cdraw.c:1295 ../bin/cdraw.c:2792 ../bin/compound.c:1099
-#: ../bin/tbezier.c:474
+#: ../bin/cdraw.c:1357 ../bin/cdraw.c:2931 ../bin/compound.c:1158
+#: ../bin/tbezier.c:521
msgid "Dot"
msgstr "Punkt"
-#: ../bin/cdraw.c:1296 ../bin/compound.c:1100 ../bin/tbezier.c:475
+#: ../bin/cdraw.c:1358 ../bin/compound.c:1159 ../bin/tbezier.c:522
msgid "DashDot"
msgstr "Strich Punkt"
-#: ../bin/cdraw.c:1297 ../bin/compound.c:1101 ../bin/tbezier.c:476
+#: ../bin/cdraw.c:1359 ../bin/compound.c:1161 ../bin/tbezier.c:523
msgid "DashDotDot"
msgstr "Strich Punkt Punkt"
-#: ../bin/cdraw.c:1298 ../bin/compound.c:1102 ../bin/tbezier.c:477
+#: ../bin/cdraw.c:1360 ../bin/compound.c:1163 ../bin/tbezier.c:524
msgid "CenterDot"
msgstr "Mittellinie"
-#: ../bin/cdraw.c:1299 ../bin/compound.c:1103 ../bin/tbezier.c:478
+#: ../bin/cdraw.c:1361 ../bin/compound.c:1165 ../bin/tbezier.c:525
msgid "PhantomDot"
msgstr "Verborgene Linie"
-#: ../bin/cdraw.c:1304 ../bin/cdraw.c:2839
+#: ../bin/cdraw.c:1366 ../bin/cdraw.c:2981
msgid "Tiny"
msgstr "Winzig"
-#: ../bin/cdraw.c:1305 ../bin/cdraw.c:2840
+#: ../bin/cdraw.c:1367 ../bin/cdraw.c:2982
msgid "Small"
msgstr "Klein"
-#: ../bin/cdraw.c:1306 ../bin/cdraw.c:2841
+#: ../bin/cdraw.c:1368 ../bin/cdraw.c:2983
msgid "Medium"
msgstr "Mittel"
-#: ../bin/cdraw.c:1307 ../bin/cdraw.c:2842
+#: ../bin/cdraw.c:1369 ../bin/cdraw.c:2984
msgid "Large"
msgstr "Groß"
-#: ../bin/cdraw.c:1504 ../bin/cdraw.c:1649 ../bin/cdraw.c:2710
-#: ../bin/cdraw.c:2928 ../bin/cdraw.c:2948 ../bin/cdraw.c:2952
-#: ../bin/compound.c:684 ../bin/compound.c:689 ../bin/compound.c:694
-#: ../bin/compound.c:699 ../bin/compound.c:705 ../bin/cprint.c:154
-#: ../bin/csignal.c:237 ../bin/csignal.c:512 ../bin/ctodesgn.c:187
-#: ../bin/ctodesgn.c:188 ../bin/ctodesgn.c:189 ../bin/ctodesgn.c:191
-#: ../bin/ctodesgn.c:236 ../bin/ctodesgn.c:259 ../bin/ctodesgn.c:261
-#: ../bin/ctodesgn.c:296 ../bin/ctodesgn.c:299 ../bin/ctodesgn.c:325
-#: ../bin/ctodesgn.c:328 ../bin/ctodesgn.c:362 ../bin/ctodesgn.c:367
-#: ../bin/ctodesgn.c:391 ../bin/ctodesgn.c:395 ../bin/ctodesgn.c:432
-#: ../bin/ctodesgn.c:436 ../bin/ctodesgn.c:441 ../bin/ctodesgn.c:467
-#: ../bin/ctodesgn.c:487 ../bin/ctodesgn.c:508 ../bin/ctodesgn.c:615
-#: ../bin/ctrain.c:185 ../bin/tease.c:514
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:181
+#: ../bin/cdraw.c:1575 ../bin/cdraw.c:1721 ../bin/cdraw.c:2848
+#: ../bin/cdraw.c:3071 ../bin/cdraw.c:3092 ../bin/cdraw.c:3096
+#: ../bin/compound.c:721 ../bin/compound.c:726 ../bin/compound.c:731
+#: ../bin/compound.c:736 ../bin/compound.c:742 ../bin/cprint.c:156
+#: ../bin/csignal.c:238 ../bin/csignal.c:516 ../bin/ctodesgn.c:197
+#: ../bin/ctodesgn.c:198 ../bin/ctodesgn.c:199 ../bin/ctodesgn.c:201
+#: ../bin/ctodesgn.c:245 ../bin/ctodesgn.c:271 ../bin/ctodesgn.c:273
+#: ../bin/ctodesgn.c:317 ../bin/ctodesgn.c:320 ../bin/ctodesgn.c:351
+#: ../bin/ctodesgn.c:354 ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:401
+#: ../bin/ctodesgn.c:429 ../bin/ctodesgn.c:433 ../bin/ctodesgn.c:478
+#: ../bin/ctodesgn.c:482 ../bin/ctodesgn.c:487 ../bin/ctodesgn.c:517
+#: ../bin/ctodesgn.c:541 ../bin/ctodesgn.c:566 ../bin/ctodesgn.c:699
+#: ../bin/ctrain.c:183 ../bin/tease.c:529
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:183
msgid "Angle"
msgstr "Winkel"
-#: ../bin/cdraw.c:1507 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:186
+#: ../bin/cdraw.c:1578 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:188
msgid "Relative Angle"
msgstr "Relativer Winkel"
-#: ../bin/cdraw.c:1516 ../bin/cdraw.c:1664 ../bin/cdraw.c:2922
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:182
+#: ../bin/cdraw.c:1587 ../bin/cdraw.c:1737 ../bin/cdraw.c:3065
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:184
msgid "Arc Angle"
msgstr "Bogenwinkel"
-#: ../bin/cdraw.c:1518
+#: ../bin/cdraw.c:1589
msgid "Rotate Angle"
msgstr "Drehwinkel"
-#: ../bin/cdraw.c:1521
+#: ../bin/cdraw.c:1592
msgid "Rot Center X,Y"
msgstr "Drehpunkt X, Y"
-#: ../bin/cdraw.c:1620
+#: ../bin/cdraw.c:1692
msgid "Seg Lth"
msgstr "Segment Länge"
-#: ../bin/cdraw.c:1621
+#: ../bin/cdraw.c:1693
msgid "Rel Ang"
msgstr "Rel. Winkel"
-#: ../bin/cdraw.c:2692 ../bin/cdraw.c:2694 ../bin/cdraw.c:2819
+#: ../bin/cdraw.c:2830 ../bin/cdraw.c:2832 ../bin/cdraw.c:2958
msgid "Lumber Type"
msgstr "Leistenart"
-#: ../bin/cdraw.c:2719
+#: ../bin/cdraw.c:2857
msgid "Straight"
msgstr "Gerade"
-#: ../bin/cdraw.c:2720
+#: ../bin/cdraw.c:2858
msgid "Dimension"
msgstr "Abmessung"
-#: ../bin/cdraw.c:2723 ../bin/cdraw.c:2724 ../bin/cdraw.c:2725
-#: ../bin/cdraw.c:2726
+#: ../bin/cdraw.c:2861 ../bin/cdraw.c:2862 ../bin/cdraw.c:2863
+#: ../bin/cdraw.c:2864
msgid "Curved"
msgstr "Gebogen"
-#: ../bin/cdraw.c:2730 ../bin/cdraw.c:3062
+#: ../bin/cdraw.c:2868 ../bin/cdraw.c:3210
msgid "Box"
msgstr "Rechteck"
-#: ../bin/cdraw.c:2735 ../bin/cdraw.c:3063
+#: ../bin/cdraw.c:2873 ../bin/cdraw.c:3211
msgid "Filled Box"
msgstr "Gefülltes Rechteck"
-#: ../bin/cdraw.c:2737 ../bin/tbezier.c:469
+#: ../bin/cdraw.c:2875 ../bin/tbezier.c:516
msgid "Bezier Line"
msgstr "Bezierlinie"
-#: ../bin/cdraw.c:2786
+#: ../bin/cdraw.c:2925
#, c-format
msgid "%s Line Width"
msgstr "%s Strichdicke"
-#: ../bin/cdraw.c:2789 ../bin/dcar.c:2194 ../bin/dcar.c:4373
-#: ../bin/dcar.c:4378
+#: ../bin/cdraw.c:2928 ../bin/dcar.c:2313 ../bin/dcar.c:4694 ../bin/dcar.c:4700
msgid "Type"
msgstr "Typ"
-#: ../bin/cdraw.c:2794
+#: ../bin/cdraw.c:2933
msgid "Dash-Dot"
msgstr "Strichpunktiert"
-#: ../bin/cdraw.c:2795
+#: ../bin/cdraw.c:2934
msgid "Dash-Dot-Dot"
msgstr "Strich-Punkt-Punkt"
-#: ../bin/cdraw.c:2808
+#: ../bin/cdraw.c:2947
#, c-format
msgid "%s Color"
msgstr "%s Farbe"
-#: ../bin/cdraw.c:2837
+#: ../bin/cdraw.c:2979
msgid "Dimension Line Size"
msgstr "Maßliniengröße"
-#: ../bin/cdraw.c:2849
+#: ../bin/cdraw.c:2991
msgid "Drag to create Table Edge"
msgstr "Durch Ziehen die Tischkante erstellen"
-#: ../bin/cdraw.c:2946
+#: ../bin/cdraw.c:3089
msgid "Seg Length"
msgstr "Segmentlänge"
-#: ../bin/cdraw.c:2950
+#: ../bin/cdraw.c:3094
msgid "Rel Angle"
msgstr "Relativer Winkel"
-#: ../bin/cdraw.c:3044
+#: ../bin/cdraw.c:3189
msgid "Line"
msgstr "Linie"
-#: ../bin/cdraw.c:3044
+#: ../bin/cdraw.c:3189
msgid "Draw Line"
msgstr "Zeichne Linie"
-#: ../bin/cdraw.c:3045
+#: ../bin/cdraw.c:3190
msgid "Draw Dimension Line"
msgstr "Zeichne Maßlinie"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:479
-#: ../bin/cdraw.c:3046 ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1251
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:479
+#: ../bin/cdraw.c:3191 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1270
msgid "Benchwork"
msgstr "Unterbau"
-#: ../bin/cdraw.c:3046
+#: ../bin/cdraw.c:3191
msgid "Draw Benchwork"
msgstr "Zeichne Unterbau"
-#: ../bin/cdraw.c:3047
+#: ../bin/cdraw.c:3192
msgid "Draw Table Edge"
msgstr "Zeichne Tischkante"
-#: ../bin/cdraw.c:3049
+#: ../bin/cdraw.c:3195
msgid "Curve End"
msgstr "Kurvenenden"
-#: ../bin/cdraw.c:3049
+#: ../bin/cdraw.c:3195
msgid "Draw Curve from End"
msgstr "Zeichne Kurve durch Enden"
-#: ../bin/cdraw.c:3050
+#: ../bin/cdraw.c:3196
msgid "Curve Tangent"
msgstr "Kurve Tangente"
-#: ../bin/cdraw.c:3050
+#: ../bin/cdraw.c:3196
msgid "Draw Curve from Tangent"
msgstr "Zeichne Kurve an Tangente"
-#: ../bin/cdraw.c:3051
+#: ../bin/cdraw.c:3197
msgid "Curve Center"
msgstr "Kurve um Mittelpunkt"
-#: ../bin/cdraw.c:3051
+#: ../bin/cdraw.c:3197
msgid "Draw Curve from Center"
msgstr "Zeichne Kurve um Mittelpunkt"
-#: ../bin/cdraw.c:3052
+#: ../bin/cdraw.c:3198
msgid "Curve Chord"
msgstr "Kurve durch Sehne"
-#: ../bin/cdraw.c:3052
+#: ../bin/cdraw.c:3198
msgid "Draw Curve from Chord"
msgstr "Zeichne Kurve durch Sehne"
-#: ../bin/cdraw.c:3053
+#: ../bin/cdraw.c:3199
msgid "Draw Bezier"
msgstr "Zeichne Bezier"
-#: ../bin/cdraw.c:3056
+#: ../bin/cdraw.c:3203
msgid "Circle Center"
msgstr "Kreismittelpunkt"
-#: ../bin/cdraw.c:3056
+#: ../bin/cdraw.c:3203
msgid "Draw Circle from Center"
msgstr "Zeichne Kreis um Mittelpunkt"
-#: ../bin/cdraw.c:3057
+#: ../bin/cdraw.c:3204
msgid "Circle Tangent"
msgstr "Kreis an Tangente"
-#: ../bin/cdraw.c:3057
+#: ../bin/cdraw.c:3204
msgid "Draw Circle from Tangent"
msgstr "Zeichne Kreis an Tangente"
-#: ../bin/cdraw.c:3059
+#: ../bin/cdraw.c:3206
msgid "Circle Filled Center"
msgstr "Gefüllter Kreis Mittelpunkt"
-#: ../bin/cdraw.c:3059
+#: ../bin/cdraw.c:3206
msgid "Draw Filled Circle from Center"
msgstr "Gefüllter Kreis von Mittelpunkt"
-#: ../bin/cdraw.c:3060
+#: ../bin/cdraw.c:3207
msgid "Circle Filled Tangent"
msgstr "Gefüllter Kreis an Tangente"
-#: ../bin/cdraw.c:3060
+#: ../bin/cdraw.c:3207
msgid "Draw Filled Circle from Tangent"
msgstr "Gefüllter Kreis an Tangente"
-#: ../bin/cdraw.c:3062
+#: ../bin/cdraw.c:3210
msgid "Draw Box"
msgstr "Zeichne Rechteck"
-#: ../bin/cdraw.c:3063
+#: ../bin/cdraw.c:3211
msgid "Draw Filled Box"
msgstr "Zeichne gefülltes Rechteck"
-#: ../bin/cdraw.c:3064
+#: ../bin/cdraw.c:3212
msgid "Draw Polygon"
msgstr "Zeichne Vieleck"
-#: ../bin/cdraw.c:3065
+#: ../bin/cdraw.c:3213
msgid "Draw Filled Polygon"
msgstr "Gefülltes Polygon zeichnen"
-#: ../bin/cdraw.c:3066
+#: ../bin/cdraw.c:3214
msgid "PolyLine"
msgstr "Polylinie"
-#: ../bin/cdraw.c:3066
+#: ../bin/cdraw.c:3214
msgid "Draw PolyLine"
msgstr "Zeichne Polylinie"
-#: ../bin/cdraw.c:3083
+#: ../bin/cdraw.c:3229
msgid "Straight Objects"
msgstr "Gerade Objekte"
-#: ../bin/cdraw.c:3083
+#: ../bin/cdraw.c:3229
msgid "Draw Straight Objects"
msgstr "Zeichne gerade Objekte"
-#: ../bin/cdraw.c:3084
+#: ../bin/cdraw.c:3230
msgid "Curved Lines"
msgstr "Gebogene Linien"
-#: ../bin/cdraw.c:3084
+#: ../bin/cdraw.c:3230
msgid "Draw Curved Lines"
msgstr "Zeichne gebogene Linien"
-#: ../bin/cdraw.c:3085
+#: ../bin/cdraw.c:3231
msgid "Circle Lines"
msgstr "Kreislinien"
-#: ../bin/cdraw.c:3085
+#: ../bin/cdraw.c:3231
msgid "Draw Circles"
msgstr "Zeichne Kreise"
-#: ../bin/cdraw.c:3086
+#: ../bin/cdraw.c:3232
msgid "Shapes"
msgstr "Formen"
-#: ../bin/cdraw.c:3086
+#: ../bin/cdraw.c:3232
msgid "Draw Shapes"
msgstr "Zeichne Formen"
-#: ../bin/cdraw.c:3380
+#: ../bin/cdraw.c:3534
msgid "Close Polygon - 'g'"
-msgstr "Schliesse Ploygon - 'g'"
+msgstr "Schließe Polygon - 'g'"
-#: ../bin/cdraw.c:3381
+#: ../bin/cdraw.c:3536
msgid "Make PolyLine - 'l'"
-msgstr "Erstelle PolyLine - 'I'"
+msgstr "Erstelle Polylinie - 'I'"
-#: ../bin/cdraw.c:3382
+#: ../bin/cdraw.c:3538
msgid "Fill Polygon - 'f'"
msgstr "Gefülltes Polygon - 'f'"
-#: ../bin/cdraw.c:3383
+#: ../bin/cdraw.c:3540
msgid "Empty Polygon - 'u'"
msgstr "Leeres Polygon - 'u'."
-#: ../bin/cdraw.c:3385
+#: ../bin/cdraw.c:3543
msgid "Points Mode - 'p'"
msgstr "Punkte-Modus - 'p"
-#: ../bin/cdraw.c:3386
+#: ../bin/cdraw.c:3546
msgid "Delete Selected Point - 'Del'"
msgstr "Ausgewählten Punkt löschen - 'Entf'."
-#: ../bin/cdraw.c:3387
+#: ../bin/cdraw.c:3547
msgid "Vertex Point - 'v'"
msgstr "Eckpunkt - 'v"
-#: ../bin/cdraw.c:3388
+#: ../bin/cdraw.c:3549
msgid "Round Corner - 'r'"
msgstr "Runde Ecke - 'r'."
-#: ../bin/cdraw.c:3389
+#: ../bin/cdraw.c:3551
msgid "Smooth Corner - 's'"
msgstr "Abgerundete Ecke - 's"
-#: ../bin/cdraw.c:3391 ../bin/cselect.c:3701
+#: ../bin/cdraw.c:3554 ../bin/cselect.c:3909
msgid "LineType..."
msgstr "Linienart..."
-#: ../bin/cdraw.c:3392 ../bin/cselect.c:3702
+#: ../bin/cdraw.c:3555 ../bin/cselect.c:3910
msgid "Solid Line"
msgstr "Durchgezogene Linie"
-#: ../bin/cdraw.c:3393 ../bin/cselect.c:3703
+#: ../bin/cdraw.c:3557 ../bin/cselect.c:3912
msgid "Dashed Line"
msgstr "Gestrichelte Linie"
-#: ../bin/cdraw.c:3394 ../bin/cselect.c:3704
+#: ../bin/cdraw.c:3559 ../bin/cselect.c:3914
msgid "Dotted Line"
msgstr "Gepunktete Linie"
-#: ../bin/cdraw.c:3395
+#: ../bin/cdraw.c:3561
msgid "Dash-Dot Line"
msgstr "Strich-Punkt Linie"
-#: ../bin/cdraw.c:3396
+#: ../bin/cdraw.c:3563
msgid "Dash-Dot-Dot Line"
msgstr "Strich-Punkt-Punkt Linie"
-#: ../bin/cdraw.c:3397
+#: ../bin/cdraw.c:3565
msgid "Center-Dot Line"
msgstr "Mittellinie"
-#: ../bin/cdraw.c:3398
+#: ../bin/cdraw.c:3567
msgid "Phantom-Dot Line"
msgstr "Verborgene Linie"
-#: ../bin/cdraw.c:3400
+#: ../bin/cdraw.c:3570
msgid "Origin Mode - 'o'"
msgstr "Bezugs-Modus - \"o\"."
-#: ../bin/cdraw.c:3401
+#: ../bin/cdraw.c:3572
msgid "Reset Origin - '0'"
msgstr "Bezugspunkt zurücksetzen - '0'."
-#: ../bin/cdraw.c:3402
+#: ../bin/cdraw.c:3574
msgid "Origin to Selected - 'l'"
msgstr "Ausgewählter als Bezugspunkt - 'l'."
-#: ../bin/cdraw.c:3403
+#: ../bin/cdraw.c:3576
msgid "Origin to Middle - 'm'"
msgstr "Bezugs-Modus - \"m\"."
-#: ../bin/celev.c:42 ../bin/cprint.c:115 ../bin/cprofile.c:1532
-#: ../bin/csplit.c:193 ../bin/csplit.c:198 ../bin/dease.c:64
-#: ../bin/doption.c:92 ../bin/doption.c:94
+#: ../bin/celev.c:42 ../bin/cprint.c:117 ../bin/cprofile.c:1531
+#: ../bin/csplit.c:201 ../bin/csplit.c:210 ../bin/dease.c:68
+#: ../bin/doption.c:89 ../bin/doption.c:91
msgid "None"
msgstr "Kein"
@@ -1600,31 +1602,31 @@ msgstr "Berechnet"
msgid "Station"
msgstr "Bahnhof"
-#: ../bin/celev.c:43 ../bin/cprofile.c:1530 ../bin/dcmpnd.c:70
+#: ../bin/celev.c:43 ../bin/cprofile.c:1529 ../bin/dcmpnd.c:71
msgid "Ignore"
msgstr "Ignorieren"
-#: ../bin/celev.c:215
+#: ../bin/celev.c:233
msgid "Set Elevation"
msgstr "Höhe festlegen"
-#: ../bin/celev.c:305 ../bin/celev.c:312 ../bin/celev.c:315
+#: ../bin/celev.c:325 ../bin/celev.c:334 ../bin/celev.c:338
#, c-format
msgid "Undefined"
msgstr "Undefiniert"
-#: ../bin/celev.c:359 ../bin/celev.c:502
+#: ../bin/celev.c:384 ../bin/celev.c:541
msgid "Elevation"
msgstr "Höhe"
-#: ../bin/celev.c:359 ../bin/cmisc.c:459 ../bin/dcontmgm.c:287
-#: ../bin/dcustmgm.c:378 ../bin/dlayer.c:1546 ../bin/dpricels.c:151
-#: ../bin/filenoteui.c:238 ../bin/linknoteui.c:177
-#: ../bin/paramfilesearch_ui.c:476 ../bin/textnoteui.c:166
+#: ../bin/celev.c:385 ../bin/cmisc.c:467 ../bin/dcustmgm.c:407
+#: ../bin/dcontmgm.c:308 ../bin/dlayer.c:2072 ../bin/dpricels.c:167
+#: ../bin/filenoteui.c:253 ../bin/linknoteui.c:169
+#: ../bin/paramfilesearch_ui.c:477 ../bin/textnoteui.c:137
msgid "Done"
msgstr "Fertig"
-#: ../bin/celev.c:371
+#: ../bin/celev.c:399
msgid ""
"Click on end, +Shift to split, +Ctrl to move description, +Alt to show "
"elevation"
@@ -1632,42 +1634,42 @@ msgstr ""
"Auf den Endpunkt klicken, mit Umschalt um zu trennen, mit Strg um die "
"Beschreibung zu verschieben, mit Alt um die Höhe anzuzeigen"
-#: ../bin/celev.c:391
+#: ../bin/celev.c:420
msgid "Move to end or track crossing +Shift to split"
msgstr "Zum Ende oder einer Kreuzung bewegen,, +Umschalten zum Teilen"
-#: ../bin/celev.c:395
+#: ../bin/celev.c:424
msgid "Move to end or track crossing"
msgstr "Zum Ende oder einer Kreuzung bewegen"
-#: ../bin/celev.c:405
+#: ../bin/celev.c:436
#, c-format
msgid "Crossing - First %0.3f, Second %0.3f, Clearance %0.3f - Click to Split"
msgstr ""
"Kreuzung - Erstes %0.3f, Zweites %0.3f, Abstand %0.3f - Klicken Sie zum "
"Teilen"
-#: ../bin/celev.c:407
+#: ../bin/celev.c:439
#, c-format
msgid "Crossing - First %0.3f, Second %0.3f, Clearance %0.3f"
msgstr "Kreuzung - Erstes %0.3f, Zweites %0.3f, Abstand %0.3f"
-#: ../bin/celev.c:419
+#: ../bin/celev.c:453
#, c-format
msgid "Click to split here - elevation %0.3f"
msgstr "Klicken Sie um hier zu teilen - Höhe %0.3f"
-#: ../bin/celev.c:424
+#: ../bin/celev.c:458
#, c-format
msgid "Track End elevation %0.3f - snap End Pt"
msgstr "Höhe des Endpunkt %0.3f - fange Endpunkt"
-#: ../bin/celev.c:427
+#: ../bin/celev.c:461
#, c-format
msgid "Track End elevation %0.3f"
msgstr "Höhe des Gleisendpunktes %0.3f"
-#: ../bin/celev.c:429 ../bin/celev.c:431
+#: ../bin/celev.c:463 ../bin/celev.c:466
msgid ""
"Click on End Pt, +Shift to split, +Ctrl to move description, +Alt show "
"Elevation"
@@ -1675,276 +1677,267 @@ msgstr ""
"Auf den Endpunkt klicken, mit Umschalt um zu trennen, mit Strg um die "
"Beschreibung zu verschieben, mit Alt um die Höhe anzuzeigen"
-#: ../bin/celev.c:450
+#: ../bin/celev.c:486
msgid "Click on end, +Shift to split, +Ctrl to move description"
msgstr ""
"Klicken Sie auf ein Ende, +Umschalten zum Teilen, +Strg zum Verschieben der "
"Beschreibung"
-#: ../bin/celev.c:454
+#: ../bin/celev.c:490
msgid "Split track"
-msgstr "Gleis auftrennen"
+msgstr "Gleis in zwei auftrennen"
-#: ../bin/celev.c:459
+#: ../bin/celev.c:496
msgid "Track split!"
msgstr "Gleis aufgetrennt!"
-#: ../bin/celev.c:465
+#: ../bin/celev.c:503
msgid "Point selected!"
msgstr "Punkt ausgewählt!"
-#: ../bin/cgroup.c:611
+#: ../bin/cgroup.c:664
msgid "Ungroup Object"
msgstr "Gruppierung aufheben"
-#: ../bin/cgroup.c:623
+#: ../bin/cgroup.c:677
#, c-format
msgid "%d objects ungrouped"
msgstr "%d Gruppierungen aufgelöst"
-#: ../bin/cgroup.c:625
+#: ../bin/cgroup.c:679
msgid "No objects ungrouped"
msgstr "Keine Gruppierungen aufgelöst"
-#: ../bin/cgroup.c:637
+#: ../bin/cgroup.c:693
msgid "Replace with new group?"
msgstr "Durch neue Gruppe ersetzen?"
-#: ../bin/cgroup.c:643 ../bin/compound.c:707 ../bin/cstruct.c:62
-#: ../bin/ctodesgn.c:193 ../bin/ctodesgn.c:2939 ../bin/cturnout.c:82
-#: ../bin/dcar.c:2186 ../bin/dcar.c:4373 ../bin/dcar.c:4378
-#: ../bin/dcmpnd.c:449 ../bin/dcustmgm.c:44
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:406
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:615
+#: ../bin/cgroup.c:694
+msgid "Turntable/TransferTable/DblSlipSwith?"
+msgstr "Drehscheibe/Schiebebühne/Doppelte Kreuzungsweiche?"
+
+#: ../bin/cgroup.c:700 ../bin/compound.c:744 ../bin/cstruct.c:65
+#: ../bin/ctodesgn.c:203 ../bin/ctodesgn.c:3211 ../bin/cturnout.c:84
+#: ../bin/dcar.c:2305 ../bin/dcar.c:4694 ../bin/dcar.c:4700 ../bin/dcmpnd.c:484
+#: ../bin/dcustmgm.c:45 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:417
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:656
msgid "Manufacturer"
msgstr "Hersteller"
-#: ../bin/cgroup.c:644 ../bin/cmisc.c:459 ../bin/cstruct.c:62
-#: ../bin/ctodesgn.c:2940 ../bin/ctodesgn.c:2941 ../bin/ctrain.c:188
-#: ../bin/cturnout.c:82 ../bin/dcar.c:2202 ../bin/dcar.c:4374
-#: ../bin/dcar.c:4379 ../bin/dcmpnd.c:450 ../bin/dcustmgm.c:45
-#: ../bin/denum.c:184 ../bin/denum.c:185 ../bin/denum.c:188
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:407
+#: ../bin/cgroup.c:701 ../bin/cmisc.c:467 ../bin/cstruct.c:65
+#: ../bin/ctodesgn.c:3212 ../bin/ctodesgn.c:3213 ../bin/ctrain.c:186
+#: ../bin/cturnout.c:84 ../bin/dcar.c:2321 ../bin/dcar.c:4695
+#: ../bin/dcar.c:4701 ../bin/dcmpnd.c:485 ../bin/dcustmgm.c:46
+#: ../bin/denum.c:188 ../bin/denum.c:189 ../bin/denum.c:194
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:418
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:650
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:651
msgid "Description"
msgstr "Beschreibung"
-#: ../bin/cgroup.c:645 ../bin/dcmpnd.c:451
+#: ../bin/cgroup.c:702 ../bin/dcmpnd.c:486
msgid "#"
msgstr "Nr."
-#: ../bin/cgroup.c:646 ../bin/compound.c:711
+#: ../bin/cgroup.c:703 ../bin/compound.c:748
msgid "# Segments"
msgstr "Anzahl Segmente"
-#: ../bin/cgroup.c:648
+#: ../bin/cgroup.c:705
msgid "Offset X,Y:"
msgstr "Abstand X,Y:"
-#: ../bin/cgroup.c:1216
+#: ../bin/cgroup.c:1320
msgid "No endpts"
msgstr "Keine Endpunkte"
-#: ../bin/cgroup.c:1326
-msgid "No paths"
-msgstr "Keine Wege"
-
-#: ../bin/cgroup.c:1597 ../bin/cgroup.c:1652
+#: ../bin/cgroup.c:1732 ../bin/cgroup.c:1798
msgid "Group Tracks"
msgstr "Gleise gruppieren"
-#: ../bin/cgroup.c:1715
+#: ../bin/cgroup.c:1866
msgid "Group Objects"
msgstr "Objekte gruppieren"
-#: ../bin/chndldto.c:67
+#: ../bin/chndldto.c:68
msgid "Place frog and drag angle"
msgstr "Herzstück festlegen und auf Winkel ziehen"
-#: ../bin/chndldto.c:84
+#: ../bin/chndldto.c:85
msgid "frog"
msgstr "Herzstück"
-#: ../bin/chndldto.c:90
+#: ../bin/chndldto.c:91
msgid "Drag to set angle"
msgstr "Durch Ziehen den Winkel festlegen"
-#: ../bin/chndldto.c:129
+#: ../bin/chndldto.c:132
#, c-format
msgid "Angle = %0.2f Frog# = %0.2f"
msgstr "Winkel = %0.2f Steigung = %0.2f"
-#: ../bin/chndldto.c:131
+#: ../bin/chndldto.c:134
msgid "Frog angle is too close to 0"
msgstr "Herzstückwinkel ist zu nahe bei 0"
-#: ../bin/chndldto.c:134
+#: ../bin/chndldto.c:137
msgid "Select point position"
msgstr "Position des Punktes auswählen"
-#: ../bin/chndldto.c:146 ../bin/chndldto.c:171
+#: ../bin/chndldto.c:152 ../bin/chndldto.c:178
msgid "points"
msgstr "Punkte"
-#: ../bin/chndldto.c:268
+#: ../bin/chndldto.c:282
#, c-format
msgid "Length = %0.2f Angle = %0.2f Frog# = %0.2f"
msgstr "Länge = %0.2f Winkel = %0.2f Steigung=%0.2f"
-#: ../bin/chndldto.c:271
+#: ../bin/chndldto.c:286
msgid "Create Hand Laid Turnout"
msgstr "Erstelle eine Selbstbauweiche"
-#: ../bin/chndldto.c:355
+#: ../bin/chndldto.c:381
msgid "HandLaidTurnout"
msgstr "Selbstbauweiche"
-#: ../bin/cjoin.c:164
+#: ../bin/cjoin.c:170
#, c-format
msgid "Curved Track: Radius=%s Length=%s"
msgstr "Gleisbogen: Radius=%s Länge=%s"
-#: ../bin/cjoin.c:250
+#: ../bin/cjoin.c:261
#, c-format
msgid "Curved Track: Radius=%s Length=%s Angle=%0.3f"
msgstr "Gleisbogen: Radius=%s Länge=%s Winkel=%0.3f"
-#: ../bin/cjoin.c:346
+#: ../bin/cjoin.c:363
#, c-format
msgid "Track (%d) is too short for transition-curve by %0.3f"
msgstr "Gleis (%d) ist für den Übergangsbogen um %0.3f zu kurz"
-#: ../bin/cjoin.c:364
+#: ../bin/cjoin.c:381
#, c-format
msgid "Connecting track is too short by %0.3f"
msgstr "Verbindungsgleis ist um %0.3f zu kurz"
-#: ../bin/cjoin.c:408
+#: ../bin/cjoin.c:431
msgid "Click on an unselected End-Point"
msgstr "Einen nicht ausgewählten Endpunkt anklicken"
-#: ../bin/cjoin.c:409
+#: ../bin/cjoin.c:432
msgid "Click on a selected End-Point"
-msgstr "Einen ausgewählten Endpunkt anclicken"
+msgstr "Einen ausgewählten Endpunkt anklicken"
-#: ../bin/cjoin.c:415
+#: ../bin/cjoin.c:438
msgid "unselected"
msgstr "nicht ausgewählt"
-#: ../bin/cjoin.c:415 ../bin/cprint.c:160
+#: ../bin/cjoin.c:438 ../bin/cprint.c:162
msgid "selected"
msgstr "ausgewählt"
-#: ../bin/cjoin.c:472
+#: ../bin/cjoin.c:499
msgid "Left click - Select first draw object end"
-msgstr "Linksklick - Ende des ersten Zeichenobjektes auswählen"
+msgstr "Linksklicken - Ende des ersten Zeichenobjektes auswählen"
-#: ../bin/cjoin.c:512 ../bin/cjoin.c:546
+#: ../bin/cjoin.c:539 ../bin/cjoin.c:576
msgid "Not a line - Try again"
msgstr "Keine Linie - Versuchen Sie es erneut"
-#: ../bin/cjoin.c:542
+#: ../bin/cjoin.c:572
msgid "Left click - Select second object end"
-msgstr "Linksklick - Ende des zweite Objektes auswählen"
+msgstr "Linksklicken - Ende des zweite Objektes auswählen"
-#: ../bin/cjoin.c:554
+#: ../bin/cjoin.c:584
msgid "Same draw object and same endpoint - Try again"
-msgstr ""
-"Gleiches Zeichenobjekt und gleicher Endpunkt - Versuchen Sie es erneut"
+msgstr "Gleiches Zeichenobjekt und gleicher Endpunkt - Versuchen Sie es erneut"
-#: ../bin/cjoin.c:596
+#: ../bin/cjoin.c:632
msgid "Create PolyLine"
msgstr "Erstelle Polylinie"
-#: ../bin/cjoin.c:838
+#: ../bin/cjoin.c:913
msgid "Left click - join with track"
msgstr "Linke Maustaste - Verbinden mit neuem Gleis"
-#: ../bin/cjoin.c:840
+#: ../bin/cjoin.c:916
msgid "Left click - join with track, Shift Left click - move to join"
msgstr ""
"Linke Maustaste - Verbinden mit neuem Gleis, Umschalten + linke Maustaste - "
"Verschieben zum Verbinden"
-#: ../bin/cjoin.c:918 ../bin/cjoin.c:1337 ../bin/cjoin.c:1344
+#: ../bin/cjoin.c:1011 ../bin/cjoin.c:1469 ../bin/cjoin.c:1476
msgid "Select 2nd track"
msgstr "Zweites Gleis auswählen"
-#: ../bin/cjoin.c:1147
+#: ../bin/cjoin.c:1266
msgid "Beyond end of 2nd track"
msgstr "Außerhalb des zweiten Gleises"
-#: ../bin/cjoin.c:1182
+#: ../bin/cjoin.c:1302
msgid "Beyond end of 1st track"
msgstr "Außerhalb des ersten Gleises"
-#: ../bin/cjoin.c:1204
+#: ../bin/cjoin.c:1325
msgid "First Track Type not supported for non-Cornu Join"
msgstr "Das erste Gleis kann nur über Cornu-Kurven verbunden werden"
-#: ../bin/cjoin.c:1211
+#: ../bin/cjoin.c:1333
msgid "First "
msgstr "Erste "
-#: ../bin/cjoin.c:1236
+#: ../bin/cjoin.c:1359
msgid "Second Track Type not supported for non-Cornu Join"
msgstr "Das zweite Gleis kann nur über Cornu-Kurven verbunden werden"
-#: ../bin/cjoin.c:1243
+#: ../bin/cjoin.c:1366
msgid "Second "
msgstr "Zweite "
-#: ../bin/cjoin.c:1257 ../bin/track.c:2335 ../bin/track.c:2371
-#: ../bin/track.c:2437
+#: ../bin/cjoin.c:1380 ../bin/track.c:2398 ../bin/track.c:2437
+#: ../bin/track.c:2512
msgid "Connecting "
msgstr "Verbinde "
-#: ../bin/cjoin.c:1347
+#: ../bin/cjoin.c:1479
msgid "Join Tracks"
msgstr "Gleise zusammenfügen"
-#: ../bin/cjoin.c:1435
+#: ../bin/cjoin.c:1575
msgid "Join"
msgstr "Verbinden"
-#: ../bin/cjoin.c:1436
+#: ../bin/cjoin.c:1576
msgid "Join Track"
msgstr "Gleise zusammenfügen"
-#: ../bin/cjoin.c:1437
+#: ../bin/cjoin.c:1579
msgid "Join Lines"
msgstr "Linien zusammenfügen"
-#: ../bin/cmisc.c:57
+#: ../bin/cmisc.c:55
msgid "Middle"
msgstr "Mittel"
-#: ../bin/cmisc.c:57 ../bin/macro.c:67
+#: ../bin/cmisc.c:55 ../bin/macro.c:71
msgid "End"
msgstr "Ende"
-#: ../bin/cmisc.c:142 ../bin/tcurve.c:390 ../bin/tease.c:520
+#: ../bin/cmisc.c:140 ../bin/tcurve.c:409 ../bin/tease.c:535
msgid "Lock"
msgstr "Sperren"
-#: ../bin/cmisc.c:234 ../bin/cmodify.c:364 ../bin/compound.c:805
-#: ../bin/ctrain.c:219
-msgid "Change Track"
-msgstr "Gleis ändern"
-
-#: ../bin/cmisc.c:585
+#: ../bin/cmisc.c:593
msgid "Select track to describe +Shift for Frozen"
msgstr ""
"Zu beschreibendes Gleis auswählen, mit Umschalt-Taste für fixierte Elemente"
-#: ../bin/cmisc.c:686 ../bin/doption.c:236
+#: ../bin/cmisc.c:691 ../bin/doption.c:240
msgid "Properties"
msgstr "Eigenschaften"
-#: ../bin/cmisc2.c:52
-msgid "Bridge"
-msgstr "Brücke"
-
-#: ../bin/cmodify.c:266
+#: ../bin/cmodify.c:276
msgid ""
"Select a track to modify, Left-Click change length, Right-Click to add "
"flextrack"
@@ -1952,50 +1945,50 @@ msgstr ""
"Wählen Sie ein Gleis zum Verändern aus, ändern Sie mit der linken Maustaste "
"die Länge, fügen Sie mit der rechten Maustaste ein Flexgleis hinzu"
-#: ../bin/cmodify.c:490
+#: ../bin/cmodify.c:520
msgid "Modify Track"
msgstr "Gleis bearbeiten"
-#: ../bin/cmodify.c:532
+#: ../bin/cmodify.c:564
msgid "Drag to add flex track"
msgstr "Ziehen um Flexgleis zu erstellen"
-#: ../bin/cmodify.c:537
+#: ../bin/cmodify.c:569
msgid "No track to extend"
msgstr "Keine Gleise zu erweitern"
-#: ../bin/cmodify.c:542
+#: ../bin/cmodify.c:574
msgid "No track selected"
msgstr "Keine Gleise ausgewählt"
-#: ../bin/cmodify.c:675
+#: ../bin/cmodify.c:724
#, c-format
msgid "Curve Track: Radius=%s Length=%s Angle=%0.3f"
msgstr "Gleisbogen: Radius=%s Länge=%s Winkel=%0.3f"
-#: ../bin/cmodify.c:690
+#: ../bin/cmodify.c:740
msgid "Extend Track"
msgstr "Gleis verlängern"
-#: ../bin/cmodify.c:822
+#: ../bin/cmodify.c:882
msgid "Modify"
msgstr "Verändern"
-#: ../bin/cmodify.c:830 ../bin/cselect.c:3654 ../bin/cselect.c:3671
-#: ../bin/misc.c:2444 ../bin/misc.c:2446
+#: ../bin/cmodify.c:895 ../bin/cselect.c:3839 ../bin/cselect.c:3861
+#: ../bin/menu.c:869 ../bin/menu.c:871
msgid "Zoom In"
msgstr "Zoom größer"
-#: ../bin/cmodify.c:831 ../bin/cselect.c:3658 ../bin/cselect.c:3672
-#: ../bin/misc.c:2448 ../bin/misc.c:2450
+#: ../bin/cmodify.c:896 ../bin/cselect.c:3844 ../bin/cselect.c:3862
+#: ../bin/menu.c:873 ../bin/menu.c:875
msgid "Zoom Out"
msgstr "Zoom kleiner"
-#: ../bin/cmodify.c:832
+#: ../bin/cmodify.c:897
msgid "Pan center - 'c'"
msgstr "Ausschnitt hier zentrieren - 'c'."
-#: ../bin/cnote.c:67 ../bin/textnoteui.c:43 ../bin/trknote.c:55
+#: ../bin/cnote.c:67 ../bin/textnoteui.c:47 ../bin/trknote.c:52
msgid "Note"
msgstr "Notiz"
@@ -2003,370 +1996,387 @@ msgstr "Notiz"
msgid "Replace this text with your layout notes"
msgstr "Ersetzen Sie diesen Text durch Ihre Notizen"
-#: ../bin/compound.c:685 ../bin/compound.c:690 ../bin/compound.c:695
-#: ../bin/compound.c:700 ../bin/tbezier.c:252 ../bin/tbezier.c:259
-#: ../bin/tcornu.c:305 ../bin/tcornu.c:310
+#: ../bin/command.c:398 ../bin/command.c:405
+msgid ""
+"Cancelling the current command will undo the changes\n"
+"you are currently making. Do you want to do the update instead?"
+msgstr ""
+"Beim Abbruch der aktuellen Operation werden alle aktuellen Änderungen "
+"verworfen. Möchten Sie stattdessen aktualisieren?"
+
+#: ../bin/command.c:400 ../bin/command.c:467 ../bin/cprint.c:1445
+#: ../bin/dbitmap.c:428 ../bin/filenoteui.c:157 ../bin/param.c:3014
+#: ../bin/svgoutput.c:459
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:675
+msgid "Cancel"
+msgstr "Abbruch"
+
+#: ../bin/command.c:465
+msgid ""
+"Cancelling the current command will undo the changes\n"
+"you are currently making. Do you want to update?"
+msgstr ""
+"Abbruch des aktuelle Befehls wird alle aktuell laufenden\n"
+"Änderungen zurücknehmen. Soll aktualisiert werden?"
+
+#: ../bin/compound.c:722 ../bin/compound.c:727 ../bin/compound.c:732
+#: ../bin/compound.c:737 ../bin/tbezier.c:286 ../bin/tbezier.c:293
+#: ../bin/tcornu.c:322 ../bin/tcornu.c:327
msgid "Center X,Y"
msgstr "Mittelpunkt: X,Y"
-#: ../bin/compound.c:687 ../bin/tbezier.c:253 ../bin/tcornu.c:306
+#: ../bin/compound.c:724 ../bin/tbezier.c:287 ../bin/tcornu.c:323
msgid "Z1"
msgstr "Z1"
-#: ../bin/compound.c:692 ../bin/tbezier.c:260 ../bin/tcornu.c:311
+#: ../bin/compound.c:729 ../bin/tbezier.c:294 ../bin/tcornu.c:328
msgid "Z2"
msgstr "Z2"
-#: ../bin/compound.c:693
+#: ../bin/compound.c:730
msgid "End Pt 3: X,Y"
msgstr "Endpunkt 3: X,Y"
-#: ../bin/compound.c:697
+#: ../bin/compound.c:734
msgid "Z3"
msgstr "Z3"
-#: ../bin/compound.c:698
+#: ../bin/compound.c:735
msgid "End Pt 4: X,Y"
msgstr "Endpunkt 4: X,Y"
-#: ../bin/compound.c:702
+#: ../bin/compound.c:739
msgid "Z4"
msgstr "Z4"
-#: ../bin/compound.c:704 ../bin/tease.c:513
+#: ../bin/compound.c:741 ../bin/tease.c:528
msgid "Origin: X,Y"
msgstr "Ausgangspunkt: X,Y"
-#: ../bin/compound.c:709 ../bin/cstruct.c:62 ../bin/cturnout.c:82
-#: ../bin/dcar.c:4373 ../bin/dcar.c:4378 ../bin/dcustmgm.c:45
-#: ../bin/doption.c:97 ../bin/doption.c:98
+#: ../bin/compound.c:746 ../bin/cstruct.c:65 ../bin/cturnout.c:84
+#: ../bin/dcar.c:4694 ../bin/dcar.c:4700 ../bin/dcustmgm.c:46
+#: ../bin/doption.c:94 ../bin/doption.c:95
msgid "Part No"
msgstr "Teilenr"
-#: ../bin/compound.c:710
+#: ../bin/compound.c:747
msgid "LineType"
msgstr "Linienart"
-#: ../bin/compound.c:971 ../bin/cstruct.c:953 ../bin/cstruct.c:1149
+#: ../bin/compound.c:1025 ../bin/cstruct.c:1030 ../bin/cstruct.c:1246
msgid "Structure"
msgstr "Gebäude"
-#: ../bin/compound.c:973 ../bin/cswitchmotor.c:225 ../bin/cturnout.c:2949
-#: ../bin/cturnout.c:4836
+#: ../bin/compound.c:1027 ../bin/cswitchmotor.c:232 ../bin/cturnout.c:988
msgid "Turnout"
msgstr "Weiche"
-#: ../bin/compound.c:973
+#: ../bin/compound.c:1027
msgid "Sectional Track"
msgstr "Festgleise"
-#: ../bin/compound.c:977
+#: ../bin/compound.c:1031
#, c-format
msgid "%s (%d) Layer= %d %s"
msgstr "%s (%d): Ebene=%d %s"
-#: ../bin/cparalle.c:49 ../bin/cparalle.c:97 ../bin/cparalle.c:138
-#: ../bin/ctodesgn.c:537 ../bin/ctodesgn.c:557 ../bin/ctodesgn.c:577
-#: ../bin/tcurve.c:384
+#: ../bin/cparalle.c:49 ../bin/cparalle.c:98 ../bin/cparalle.c:140
+#: ../bin/ctodesgn.c:602 ../bin/ctodesgn.c:628 ../bin/ctodesgn.c:653
+#: ../bin/tcurve.c:403
msgid "Separation"
msgstr "Zwischenraum"
-#: ../bin/cparalle.c:52 ../bin/cparalle.c:98
+#: ../bin/cparalle.c:52 ../bin/cparalle.c:99
msgid "Radius Factor"
msgstr "Radius Faktor"
-#: ../bin/cparalle.c:139
+#: ../bin/cparalle.c:141
msgid "Radius factor"
msgstr "Radius-Faktor"
-#: ../bin/cparalle.c:152
+#: ../bin/cparalle.c:155
msgid " Track/Line doesn't support parallel"
msgstr " Zu diesem Gleis oder Linie kann keine Parallele erstellt werden"
-#: ../bin/cparalle.c:226
+#: ../bin/cparalle.c:230
msgid "Create Parallel Track"
msgstr "Erzeuge paralleles Gleis"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:470
-#: ../bin/cparalle.c:296 ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1233
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:470
+#: ../bin/cparalle.c:299
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1252
msgid "Parallel"
msgstr "Parallel"
-#: ../bin/cparalle.c:297
+#: ../bin/cparalle.c:300
msgid "Parallel Track"
msgstr "Paralleles Gleis"
-#: ../bin/cparalle.c:298
+#: ../bin/cparalle.c:303
msgid "Parallel Line"
msgstr "Parallele Linie"
-#: ../bin/cprint.c:108
+#: ../bin/cprint.c:110
msgid "Portrait"
msgstr "Hochformat"
-#: ../bin/cprint.c:108
+#: ../bin/cprint.c:110
msgid "Landscape"
msgstr "Querformat"
-#: ../bin/cprint.c:109 ../bin/cswitchmotor.c:90 ../bin/cswitchmotor.c:109
-#: ../bin/cswitchmotor.c:222 ../bin/dbench.c:73 ../bin/dease.c:64
-#: ../bin/doption.c:91 ../bin/doption.c:93 ../bin/macro.c:1391
+#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:90 ../bin/cswitchmotor.c:109
+#: ../bin/cswitchmotor.c:229 ../bin/dbench.c:75 ../bin/dease.c:68
+#: ../bin/doption.c:88 ../bin/doption.c:90 ../bin/macro.c:1417
msgid "Normal"
msgstr "Normal"
-#: ../bin/cprint.c:109 ../bin/cswitchmotor.c:91 ../bin/cswitchmotor.c:110
-#: ../bin/cswitchmotor.c:223 ../bin/ctrain.c:942 ../bin/ctrain.c:1251
+#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:91 ../bin/cswitchmotor.c:110
+#: ../bin/cswitchmotor.c:230 ../bin/ctrain.c:1013 ../bin/ctrain.c:1326
msgid "Reverse"
msgstr "Rückwärts"
-#: ../bin/cprint.c:110
+#: ../bin/cprint.c:112
msgid "Engineering Data"
msgstr "Zeichnungsinformationen"
-#: ../bin/cprint.c:111
+#: ../bin/cprint.c:113
msgid "Registration Marks (in 1:1 scale only)"
msgstr "Positionierungshilfen (nur im 1:1 Maßstab)"
-#: ../bin/cprint.c:112
+#: ../bin/cprint.c:114
msgid "Page Numbers"
msgstr "Seitennummern"
-#: ../bin/cprint.c:113
+#: ../bin/cprint.c:115
msgid "Ignore Page Margins"
msgstr "Übergehe Seitenränder"
-#: ../bin/cprint.c:114 ../bin/csnap.c:675 ../bin/doption.c:535
+#: ../bin/cprint.c:116 ../bin/csnap.c:733 ../bin/doption.c:554
msgid "Snap Grid"
msgstr "Fangraster"
-#: ../bin/cprint.c:115
+#: ../bin/cprint.c:117
msgid "Layout Edge"
msgstr "Anlagenrand"
-#: ../bin/cprint.c:115
+#: ../bin/cprint.c:117
msgid "Every Page"
msgstr "Jede Seite"
-#: ../bin/cprint.c:116
+#: ../bin/cprint.c:118
msgid "Roadbed Outline"
-msgstr "Rand des Gleisbett"
+msgstr "Rand des Gleisbettes"
-#: ../bin/cprint.c:117
+#: ../bin/cprint.c:119
msgid "Centerline below Scale 1:1"
msgstr "Mittellinie bei Maßstab<1:1"
-#: ../bin/cprint.c:126
+#: ../bin/cprint.c:128
msgid "Print Scale"
msgstr "Druckmaßstab"
-#: ../bin/cprint.c:127
+#: ../bin/cprint.c:129
msgid "Page Width"
msgstr "Seitenbreite"
-#: ../bin/cprint.c:128
+#: ../bin/cprint.c:130
msgid "Max"
msgstr "Max."
-#: ../bin/cprint.c:130
+#: ../bin/cprint.c:132
msgid "Snap Shot"
msgstr "Schnappschuss"
-#: ../bin/cprint.c:131
+#: ../bin/cprint.c:133
msgid "Page Format"
msgstr "Seitenformat"
-#: ../bin/cprint.c:132
+#: ../bin/cprint.c:134
msgid "Print Order"
msgstr "Druckreihenfolge"
-#: ../bin/cprint.c:133
+#: ../bin/cprint.c:135
msgid "Print "
msgstr "Drucken "
-#: ../bin/cprint.c:142
+#: ../bin/cprint.c:144
msgid "Rulers:"
msgstr "Lineale:"
-#: ../bin/cprint.c:148
+#: ../bin/cprint.c:150
msgid " Width"
msgstr " Breite"
-#: ../bin/cprint.c:150
+#: ../bin/cprint.c:152
msgid "Margins"
msgstr "Ränder"
-#: ../bin/cprint.c:151 ../bin/cturntbl.c:247
+#: ../bin/cprint.c:153 ../bin/cturntbl.c:274
msgid "Origin: X"
msgstr "Ausgangspunkt: X"
-#: ../bin/cprint.c:152 ../bin/csnap.c:508
+#: ../bin/cprint.c:154 ../bin/csnap.c:549
msgid "Y"
msgstr "Y"
-#: ../bin/cprint.c:153 ../bin/cprint.c:616 ../bin/cprofile.c:708
-#: ../bin/dcar.c:2206
+#: ../bin/cprint.c:155 ../bin/cprint.c:631 ../bin/cprofile.c:706
+#: ../bin/dcar.c:2325
msgid "Reset"
msgstr "Zurücksetzen"
-#: ../bin/cprint.c:155
+#: ../bin/cprint.c:157
msgid "Setup"
msgstr "Einstellungen"
-#: ../bin/cprint.c:156 ../bin/cselect.c:3662 ../bin/misc.c:2479
+#: ../bin/cprint.c:158 ../bin/cselect.c:3850 ../bin/menu.c:906
+#: ../bin/toolbar.c:131
msgid "Select All"
msgstr "Alles auswählen"
-#: ../bin/cprint.c:157 ../bin/cprofile.c:710 ../bin/layout.c:507
-#: ../bin/misc.c:806
+#: ../bin/cprint.c:159 ../bin/cprofile.c:708 ../bin/layout.c:672
+#: ../bin/misc.c:726
msgid "Clear"
msgstr "Löschen"
-#: ../bin/cprint.c:159
+#: ../bin/cprint.c:161
msgid "0 pages"
msgstr "0 Seiten"
-#: ../bin/cprint.c:186
+#: ../bin/cprint.c:190
#, c-format
msgid "%d page"
msgstr "Seite %d"
-#: ../bin/cprint.c:186
+#: ../bin/cprint.c:190
#, c-format
msgid "%d pages"
msgstr "%d Seiten"
-#: ../bin/cprint.c:407
+#: ../bin/cprint.c:419
#, c-format
msgid "PrintScale 1:%ld Room %s x %s Model Scale %s File %s"
msgstr "Druckmaßstab 1:%ld Raum %s x %s Modellmaßstab %s Datei %s"
-#: ../bin/cprint.c:712 ../bin/dbitmap.c:427 ../bin/filenoteui.c:147
-#: ../bin/misc.c:1328 ../bin/misc.c:1407 ../bin/param.c:2721
-#: ../bin/svgoutput.c:460 ../wlib/gtklib/browserhelp.c:96
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:634
-msgid "Cancel"
-msgstr "Abbruch"
-
-#: ../bin/cprint.c:719
+#: ../bin/cprint.c:746
msgid "Print Margins"
msgstr "Druckbegrenzungen"
-#: ../bin/cprint.c:1383 ../bin/cprofile.c:712 ../bin/ctodesgn.c:2887
+#: ../bin/cprint.c:1440 ../bin/cprofile.c:710 ../bin/ctodesgn.c:3149
#: ../bin/denum.c:51
msgid "Print"
msgstr "Drucken"
-#: ../bin/cprint.c:1404
+#: ../bin/cprint.c:1472
msgid "Select pages to print, or drag to move print grid"
msgstr ""
"Zu druckende Seiten auswählen oder ziehen um das Druckraster zu verschieben"
-#: ../bin/cprint.c:1505
+#: ../bin/cprint.c:1574
msgid "Print..."
msgstr "Drucken..."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:466
-#: ../bin/cprofile.c:610 ../bin/cprofile.c:1444 ../bin/cprofile.c:1524
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:126
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1225
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:466
+#: ../bin/cprofile.c:608 ../bin/cprofile.c:1442 ../bin/cprofile.c:1522
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1244
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:127
msgid "Profile"
msgstr "Höhenprofil"
-#: ../bin/cprofile.c:628
+#: ../bin/cprofile.c:626
#, c-format
msgid "%s Profile: %s"
msgstr "%s Höhenprofil: %s"
-#: ../bin/cprofile.c:706 ../bin/misc.c:2010
+#: ../bin/cprofile.c:704 ../bin/menu.c:156
msgid "Change"
msgstr "Ändern"
-#: ../bin/cprofile.c:753 ../bin/cprofile.c:763
+#: ../bin/cprofile.c:751 ../bin/cprofile.c:761
#, c-format
msgid "Elev = %0.1f"
msgstr "Höhe = %0.1f"
-#: ../bin/cprofile.c:765
+#: ../bin/cprofile.c:763
#, c-format
msgid "Elev=%0.2f %0.1f%%"
msgstr "Höhe=%0.2f %0.1f%%"
-#: ../bin/cprofile.c:770
+#: ../bin/cprofile.c:768
#, c-format
msgid "%0.1f%% Elev = %0.2f"
msgstr "%0.1f%% Höhe = %0.2f"
-#: ../bin/cprofile.c:775
+#: ../bin/cprofile.c:773
#, c-format
msgid "%0.1f%% Elev = %0.2f %0.1f%%"
msgstr "%0.1f%% Höhe = %0.2f %0.1f%%"
-#: ../bin/cprofile.c:790 ../bin/cprofile.c:860 ../bin/cprofile.c:1396
+#: ../bin/cprofile.c:788 ../bin/cprofile.c:858 ../bin/cprofile.c:1394
msgid "Profile Command"
msgstr "Höhenprofil bearbeiten"
-#: ../bin/cprofile.c:799 ../bin/cprofile.c:1450
+#: ../bin/cprofile.c:797 ../bin/cprofile.c:1448
msgid "Drag to change Elevation"
msgstr "Ziehen um die Höhe zu ändern"
-#: ../bin/cprofile.c:901
+#: ../bin/cprofile.c:899
msgid "Select a Defined Elevation to start Profile"
msgstr "Eine festgelegte Höhe auswählen, um das Höhenprofil zu beginnen"
-#: ../bin/cprofile.c:903
+#: ../bin/cprofile.c:901
msgid "Select a Defined Elevation to extend Profile"
msgstr "Eine festgelegte Höhe auswählen, um das Höhenprofil zu erweitern"
-#: ../bin/cprofile.c:1458
+#: ../bin/cprofile.c:1456
msgid "Select a Defined Elevation to start profile"
msgstr "Eine festgelegte Höhe auswählen, um das Höhenprofil zu beginnen"
-#: ../bin/cprofile.c:1528
+#: ../bin/cprofile.c:1527
msgid "Define"
msgstr "Festlegen"
-#: ../bin/cpull.c:436 ../bin/cpull.c:592
+#: ../bin/cpull.c:454 ../bin/cpull.c:616
#, c-format
msgid "%d tracks moved"
msgstr "%d Gleise verschoben"
-#: ../bin/cpull.c:482
+#: ../bin/cpull.c:503
msgid "Pull Tracks"
msgstr "Gleise ziehen"
-#: ../bin/cpull.c:556
+#: ../bin/cpull.c:579
msgid "Tighten Tracks"
msgstr "Gleise zusammendrücken"
-#: ../bin/cpull.c:643
+#: ../bin/cpull.c:670
msgid "Connect Multiple Tracks - Select multiple tracks to join first"
msgstr ""
"Verbinde mehrere Gleise - zuerst mehrere Gleise für die Verbindung auswählen"
-#: ../bin/cpull.c:646
+#: ../bin/cpull.c:673
msgid "Try to Connect all Selected Tracks?"
msgstr "Sollen alle ausgewählten Gleise verbunden werden?"
-#: ../bin/cpull.c:652
+#: ../bin/cpull.c:680
msgid "ReConnect"
msgstr "Wiederverbinden"
-#: ../bin/cpull.c:688
+#: ../bin/cpull.c:720
#, c-format
msgid ""
"Round 1 %d and Round 2 %d tracks connected, %d close pairs of end Points "
"were not connected"
msgstr ""
"In Durchgang 1 %d und in Durchgang 2 %d Gleise verbunden, %d nahe "
-"beieinander liegene Punkte wurden nicht verbunden"
+"beieinander liegende Punkte wurden nicht verbunden"
-#: ../bin/cpull.c:713
+#: ../bin/cpull.c:747
msgid "Select first endpoint or turntable to connect, +Shift to tighten"
msgstr ""
"Wählen Sie den ersten anzuschließenden Endpunkt oder eine Drehscheibe, "
"+Umschalten zum Festziehen"
-#: ../bin/cpull.c:715
+#: ../bin/cpull.c:750
msgid ""
"Select first endpoint to connect, or Right-Click for connecting selected "
"tracks (not turntable)"
@@ -2375,529 +2385,440 @@ msgstr ""
"mit der rechten Maustaste, um ausgewählte Gleise zu verbinden (nicht "
"Drehscheibe)"
-#: ../bin/cpull.c:774
+#: ../bin/cpull.c:814
msgid "Select second endpoint or turntable to connect"
-msgstr ""
-"Wählen Sie den zweiten anzuschließenden Endpunkt oder eine Drehscheibe"
+msgstr "Wählen Sie den zweiten anzuschließenden Endpunkt oder eine Drehscheibe"
-#: ../bin/cpull.c:781
+#: ../bin/cpull.c:821
msgid "Same Track! - please select another"
msgstr "Gleiches Gleis! - Bitte wählen Sie ein anderes aus"
-#: ../bin/cpull.c:873
+#: ../bin/cpull.c:918
msgid "Connect Two Tracks"
msgstr "Zwei Gleise zusammenfügen"
-#: ../bin/cpull.c:875
+#: ../bin/cpull.c:924
msgid "Connect All Selected - 'S'"
msgstr "Alle ausgewählten Gleise verbinden - 'S'"
-#: ../bin/cruler.c:372
+#: ../bin/cruler.c:390
msgid "Measurement"
msgstr "Abmessung"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:477
-#: ../bin/cruler.c:373 ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1247
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:477
+#: ../bin/cruler.c:391 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1266
msgid "Ruler"
msgstr "Lineal"
-#: ../bin/cruler.c:374
+#: ../bin/cruler.c:394
msgid "Protractor"
msgstr "Winkelmesser"
-#: ../bin/cselect.c:654
+#: ../bin/cselect.c:707
msgid "Change Track Width"
msgstr "Gleisbreite ändern"
-#: ../bin/cselect.c:679
+#: ../bin/cselect.c:733
msgid "Change Line Type"
msgstr "Linienstil ändern"
-#: ../bin/cselect.c:704
+#: ../bin/cselect.c:758
msgid "Delete only works in Select Mode"
msgstr "Löschen funktioniert nur im Auswahlmodus"
-#: ../bin/cselect.c:718
+#: ../bin/cselect.c:776
msgid "Delete Tracks"
msgstr "Gleise löschen"
-#: ../bin/cselect.c:808
+#: ../bin/cselect.c:883
msgid "Hide Tracks (Tunnel)"
msgstr "Gleise verbergen (Tunnel)"
-#: ../bin/cselect.c:826
+#: ../bin/cselect.c:903
msgid "Bridge Tracks "
msgstr "Brückengleise "
-#: ../bin/cselect.c:843
+#: ../bin/cselect.c:921
+msgid "Roadbed Tracks "
+msgstr "Gleisbett"
+
+#: ../bin/cselect.c:939
msgid "Ties Tracks "
msgstr "Schwellengleise "
-#: ../bin/cselect.c:880 ../bin/misc.c:2617
+#: ../bin/cselect.c:977 ../bin/menu.c:1050
msgid "Move To Current Layer"
msgstr "Auf aktuelle Ebene verschieben"
-#: ../bin/cselect.c:932 ../bin/misc.c:2784
+#: ../bin/cselect.c:1033 ../bin/menu.c:1236
msgid "Clear Elevations"
msgstr "Höhen löschen"
-#: ../bin/cselect.c:976
+#: ../bin/cselect.c:1079
msgid "Add Elevations"
msgstr "Höhen hinzufügen"
-#: ../bin/cselect.c:991
+#: ../bin/cselect.c:1095
msgid "Refresh Compound"
msgstr "Zusammenstellung aktualisieren"
-#: ../bin/cselect.c:1023 ../bin/dcar.c:4373 ../bin/dcar.c:4378
-#: ../bin/dcustmgm.c:45 ../bin/layout.c:498
-msgid "Scale"
-msgstr "Maßstab"
-
-#: ../bin/cselect.c:1023 ../bin/cselect.c:1048
-msgid "Ratio"
-msgstr "Verhältnis"
-
-#: ../bin/cselect.c:1032
-msgid "Do not resize track"
-msgstr "Gleismaße nicht ändern"
-
-#: ../bin/cselect.c:1036
-msgid "Rescale by:"
-msgstr "Skalieren um:"
-
-#: ../bin/cselect.c:1038
-msgid "From:"
-msgstr "Von:"
-
-#: ../bin/cselect.c:1042
-msgid "To: "
-msgstr "Nach:"
-
-#: ../bin/cselect.c:1109
-msgid "Rescale Tracks"
-msgstr "Gleise skalieren"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:473
-#: ../bin/cselect.c:1252 ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1239
-msgid "Rescale"
-msgstr "Maßstab ändern"
-
-#: ../bin/cselect.c:1597
+#: ../bin/cselect.c:1506
msgid "Cornu too tight - it was deleted"
msgstr "Cornu ist zu eng und wurde gelöscht"
-#: ../bin/cselect.c:1652
+#: ../bin/cselect.c:1563
msgid "Move To Join"
msgstr "Verbinde durch Verschieben"
-#: ../bin/cselect.c:1844
+#: ../bin/cselect.c:1790
msgid "Drag to move selected tracks - Shift+Ctrl+Arrow micro-steps the move"
msgstr ""
"Ziehen um die ausgewählten Gleise zu verschieben - mit "
-"Umschalt+Str+Pfeiltasten umd feine Stufen verschieben"
+"Umschalt+Strg+Pfeiltasten um feine Stufen verschieben"
-#: ../bin/cselect.c:1865 ../bin/cselect.c:1994 ../bin/cselect.c:2370
+#: ../bin/cselect.c:1811 ../bin/cselect.c:1954 ../bin/cselect.c:2382
msgid "Move Tracks"
msgstr "Gleise verschieben"
-#: ../bin/cselect.c:2043
+#: ../bin/cselect.c:2004
msgid "Align: Click on a selected object to be aligned"
msgstr ""
"Ausrichten: Auf ausgewähltes Objekt klicken, das ausgerichtet werden soll"
-#: ../bin/cselect.c:2081
+#: ../bin/cselect.c:2043
msgid "Drag to rotate selected tracks, Shift+RightClick for QuickRotate Menu"
msgstr ""
"Ziehen um die ausgewählten Gleise zu rotieren, Umschalt-Taste und "
-"Rechtsklich das Schnellauswahlmenu öffnen"
+"Rechtsklicken um das Schnellauswahlmenü öffnen"
-#: ../bin/cselect.c:2097 ../bin/cselect.c:2441
+#: ../bin/cselect.c:2059 ../bin/cselect.c:2463
msgid "Rotate Tracks"
msgstr "Gleise drehen"
-#: ../bin/cselect.c:2111
+#: ../bin/cselect.c:2074
msgid "Center of Rotation snapped to Turntable center"
msgstr ""
-"Der Mittelpunkt der Drehscheibe wird als Mittelpunkt der Rotation genutt"
+"Der Mittelpunkt der Drehscheibe wird als Mittelpunkt der Rotation genutzt"
-#: ../bin/cselect.c:2153 ../bin/cselect.c:2184
+#: ../bin/cselect.c:2124 ../bin/cselect.c:2161
#, c-format
msgid "Angle %0.3f"
msgstr "Winkel %0.3f"
-#: ../bin/cselect.c:2240
+#: ../bin/cselect.c:2232
#, c-format
msgid "Angle %0.3f #%ld"
msgstr "Winkel %0.3f #%ld"
-#: ../bin/cselect.c:2242
+#: ../bin/cselect.c:2234
#, c-format
msgid "Angle %0.3f %s"
msgstr "Winkel %0.3f %s"
-#: ../bin/cselect.c:2247
+#: ../bin/cselect.c:2240
msgid "Origin Set. Drag away to set start angle"
msgstr "Ausgangspunkt gesetzt. Zum Einstellen des Startwinkels wegziehen"
-#: ../bin/cselect.c:2261
+#: ../bin/cselect.c:2255
msgid "Align: Click on the 2nd unselected object"
msgstr "Ausrichten: Klicken Sie auf das zweite, nicht ausgewählte Objekt"
-#: ../bin/cselect.c:2381
+#: ../bin/cselect.c:2394
msgid "In module layer:"
msgstr "In Modulebene:"
-#: ../bin/cselect.c:2388
+#: ../bin/cselect.c:2406
msgid "Frozen Layer:"
msgstr "Fixierte Ebene:"
-#: ../bin/cselect.c:2392
+#: ../bin/cselect.c:2410
msgid "Not found"
msgstr "Nicht gefunden"
-#: ../bin/cselect.c:2428
+#: ../bin/cselect.c:2449
msgid "Multiple Selected"
msgstr "Mehrfachauswahl"
-#: ../bin/cselect.c:2454
+#: ../bin/cselect.c:2476
msgid "Toggle Detail"
msgstr "Detail umschalten"
-#: ../bin/cselect.c:2469
+#: ../bin/cselect.c:2492
msgid "Toggle Label"
msgstr "Beschriftung umschalten"
-#: ../bin/cselect.c:2632
+#: ../bin/cselect.c:2689
msgid "Elevation description"
msgstr "Beschreibung der Höhe"
-#: ../bin/cselect.c:2639
+#: ../bin/cselect.c:2696
msgid "Hidden description - 's' to Show, 'd' Details"
msgstr "Verborgene Beschreibung - 's' zum Anzeigen, 'd' für Details"
-#: ../bin/cselect.c:2642
+#: ../bin/cselect.c:2699
msgid "Shown description - 'h' to Hide"
msgstr "Sichtbare Beschreibung - Verbergen mit 'h'"
-#: ../bin/cselect.c:2650
+#: ../bin/cselect.c:2707
msgid "Select and drag a description"
msgstr "Beschreibung auswählen und verschieben"
-#: ../bin/cselect.c:2689
+#: ../bin/cselect.c:2753
msgid "Hidden Label - Drag to reveal"
msgstr "Verborgene Beschriftung - Ziehen zum Aufdecken"
-#: ../bin/cselect.c:2691
+#: ../bin/cselect.c:2755
msgid "Drag label"
msgstr "Beschriftung ziehen"
-#: ../bin/cselect.c:2699
+#: ../bin/cselect.c:2765
msgid "Move Label"
msgstr "Beschreibung verschieben"
-#: ../bin/cselect.c:2736
+#: ../bin/cselect.c:2804
msgid "To Hide, use Context Menu"
msgstr "Zum Verbergen verwenden Sie das Kontextmenü"
-#: ../bin/cselect.c:2769 ../bin/cselect.c:3692
+#: ../bin/cselect.c:2842 ../bin/cselect.c:3890
msgid "Show/Hide Description"
msgstr "Beschreibung anzeigen/verbergen"
-#: ../bin/cselect.c:2770
+#: ../bin/cselect.c:2845
msgid "Toggle Detailed Description"
msgstr "Detaillierte Beschreibung umschalten"
-#: ../bin/cselect.c:2851
+#: ../bin/cselect.c:2929
msgid "Drag to mark mirror line"
msgstr "Ziehen um die Spiegelachse zu erstellen"
-#: ../bin/cselect.c:2862
+#: ../bin/cselect.c:2940
#, c-format
msgid "Angle %0.2f"
msgstr "Winkel %0.2f"
-#: ../bin/cselect.c:2865
+#: ../bin/cselect.c:2943
msgid "Flip Tracks"
msgstr "Gleise spiegeln"
-#: ../bin/cselect.c:3056 ../bin/cselect.c:3243
+#: ../bin/cselect.c:3145 ../bin/cselect.c:3369
msgid "Track is in Frozen Layer"
msgstr "Das Gleis ist auf einer fixierten Ebene"
-#: ../bin/cselect.c:3216
+#: ../bin/cselect.c:3340
msgid "Select track"
msgstr "Gleis auswählen"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:439
-#: ../bin/cselect.c:3628 ../bin/dcar.c:1663 ../bin/doption.c:236
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1171
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:439
+#: ../bin/cselect.c:3802 ../bin/dcar.c:1765 ../bin/doption.c:240
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1190
msgid "Select"
msgstr "Auswählen"
-#: ../bin/cselect.c:3647 ../bin/cselect.c:3668 ../bin/misc.c:2439
+#: ../bin/cselect.c:3829 ../bin/cselect.c:3858 ../bin/menu.c:864
msgid "Undo"
msgstr "Rückgängig"
-#: ../bin/cselect.c:3648 ../bin/cselect.c:3669 ../bin/misc.c:2441
+#: ../bin/cselect.c:3830 ../bin/cselect.c:3859 ../bin/menu.c:866
msgid "Redo"
msgstr "Wiederholen"
-#: ../bin/cselect.c:3655 ../bin/cselect.c:3673 ../bin/draw.c:3206
+#: ../bin/cselect.c:3840 ../bin/cselect.c:3863 ../bin/draw.c:3501
msgid "Zoom to extents - 'e'"
msgstr "Auf Fenstergröße anpassen- 'e'"
-#: ../bin/cselect.c:3656 ../bin/draw.c:3217 ../bin/misc.c:2646
+#: ../bin/cselect.c:3842 ../bin/draw.c:3523 ../bin/menu.c:1095
msgid "&Zoom"
msgstr "&Zoom"
-#: ../bin/cselect.c:3659 ../bin/draw.c:3216
+#: ../bin/cselect.c:3845 ../bin/draw.c:3521
msgid "Pan to Origin - 'o'/'0'"
msgstr "Ausschnitt auf Ursprung zurücksetzen - 'o'/'0'"
-#: ../bin/cselect.c:3660 ../bin/cselect.c:3675
+#: ../bin/cselect.c:3847 ../bin/cselect.c:3867
msgid "Pan Center Here - 'c'"
msgstr "Hier zentrieren - 'c'."
-#: ../bin/cselect.c:3663 ../bin/misc.c:2482 ../bin/misc.c:2623
+#: ../bin/cselect.c:3852 ../bin/menu.c:909 ../bin/menu.c:1058
msgid "Select Current Layer"
msgstr "Aktuelle Ebene auswählen"
-#: ../bin/cselect.c:3674
+#: ../bin/cselect.c:3865
msgid "Zoom to selected - 's'"
msgstr "Zoom auf Auswahl - 's'"
-#: ../bin/cselect.c:3678 ../bin/misc.c:2484
+#: ../bin/cselect.c:3871 ../bin/menu.c:911
msgid "Deselect All"
msgstr "Alles Abwählen"
-#: ../bin/cselect.c:3680
+#: ../bin/cselect.c:3874
msgid "Properties -'?'"
msgstr "Eigenschaften -'?'"
-#: ../bin/cselect.c:3681
+#: ../bin/cselect.c:3876
msgid "Modify/Activate Track"
msgstr "Gleis bearbeiten"
-#: ../bin/cselect.c:3683 ../bin/misc.c:2470
+#: ../bin/cselect.c:3879 ../bin/menu.c:897
msgid "Cut"
msgstr "Ausschneiden"
-#: ../bin/cselect.c:3684 ../bin/misc.c:2472
+#: ../bin/cselect.c:3880 ../bin/menu.c:899
msgid "Copy"
msgstr "Kopiere"
-#: ../bin/cselect.c:3685 ../bin/fileio.c:1591 ../bin/misc.c:2474
+#: ../bin/cselect.c:3881 ../bin/fileio.c:1728 ../bin/menu.c:901
msgid "Paste"
msgstr "Einfügen"
-#: ../bin/cselect.c:3686 ../bin/misc.c:2476
+#: ../bin/cselect.c:3882 ../bin/menu.c:903
msgid "Clone"
msgstr "Klonen"
-#: ../bin/cselect.c:3688
+#: ../bin/cselect.c:3884
msgid "Rotate..."
msgstr "Drehen..."
-#: ../bin/cselect.c:3690
+#: ../bin/cselect.c:3886
msgid "Align"
msgstr "Ausrichten"
-#: ../bin/cselect.c:3694
+#: ../bin/cselect.c:3892 ../bin/menu.c:1074
+msgid "Ties/NoTies"
+msgstr "Mit / ohne Schwellen"
+
+#: ../bin/cselect.c:3894
msgid "Hide/NoHide"
msgstr "Zeigen/Verbergen"
-#: ../bin/cselect.c:3695
+#: ../bin/cselect.c:3896
msgid "Bridge/NoBridge"
msgstr "Brücke"
-#: ../bin/cselect.c:3696
+#: ../bin/cselect.c:3898
+msgid "Roadbed/NoRoadbed"
+msgstr "Mit/ohne Gleisbett"
+
+#: ../bin/cselect.c:3900
msgid "NoTies/Ties"
msgstr "Ohne / mit Schwellen"
-#: ../bin/cselect.c:3697
+#: ../bin/cselect.c:3902
msgid "Thickness..."
msgstr "Dicke..."
-#: ../bin/cselect.c:3698 ../bin/misc.c:2636
+#: ../bin/cselect.c:3903 ../bin/menu.c:1082
msgid "Thin Tracks"
msgstr "Dünne Gleise"
-#: ../bin/cselect.c:3699 ../bin/misc.c:2637
+#: ../bin/cselect.c:3905 ../bin/menu.c:1084
msgid "Medium Tracks"
msgstr "Mittlere Gleise"
-#: ../bin/cselect.c:3700 ../bin/misc.c:2638
+#: ../bin/cselect.c:3907 ../bin/menu.c:1086
msgid "Thick Tracks"
msgstr "Dicke Gleise"
-#: ../bin/cselect.c:3705
+#: ../bin/cselect.c:3916
msgid "Dash-Dotted Line"
msgstr "Gestrichelte Linie"
-#: ../bin/cselect.c:3706
+#: ../bin/cselect.c:3918
msgid "Dash-Dot-Dotted Line"
msgstr "Strich-Punkt-gestrichelte Linie"
-#: ../bin/cselect.c:3708
+#: ../bin/cselect.c:3921
msgid "Move To Front"
msgstr "Nach vorne"
-#: ../bin/cselect.c:3709
+#: ../bin/cselect.c:3922
msgid "Move To Back"
msgstr "Nach hinten"
-#: ../bin/cselect.c:3711
+#: ../bin/cselect.c:3924
msgid "Group"
msgstr "Gruppieren"
-#: ../bin/cselect.c:3712
+#: ../bin/cselect.c:3925
msgid "UnGroup"
msgstr "Gruppierung auflösen"
-#: ../bin/cselect.c:3744
+#: ../bin/cselect.c:3971
msgid "Move Description"
msgstr "Beschreibungen verschieben"
-#: ../bin/cselect.c:3751 ../bin/misc.c:2072 ../bin/misc.c:2491
+#: ../bin/cselect.c:3979 ../bin/menu.c:225 ../bin/menu.c:918
msgid "Move"
msgstr "Verschieben"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:484
-#: ../bin/cselect.c:3753 ../bin/misc.c:2049 ../bin/misc.c:2493
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1261
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:484
+#: ../bin/cselect.c:3982 ../bin/menu.c:202 ../bin/menu.c:920
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1280
msgid "Rotate"
msgstr "Drehen"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:485
-#: ../bin/cselect.c:3755 ../bin/dcar.c:2208
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1263
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:485
+#: ../bin/cselect.c:3985 ../bin/dcar.c:2327
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1282
msgid "Flip"
msgstr "Spiegeln"
-#: ../bin/csensor.c:213
+#: ../bin/csensor.c:214
msgid "Change Sensor"
msgstr "Sensor ändern"
-#: ../bin/csensor.c:259 ../bin/csensor.c:590
+#: ../bin/csensor.c:261 ../bin/csensor.c:599
msgid "Sensor"
msgstr "Sensor"
-#: ../bin/csensor.c:404
+#: ../bin/csensor.c:407
msgid "Create Sensor"
msgstr "Sensor erstellen"
-#: ../bin/csensor.c:407
+#: ../bin/csensor.c:410
msgid "Modify Sensor"
msgstr "Sensor ändern"
-#: ../bin/csensor.c:440
+#: ../bin/csensor.c:445
msgid "Edit sensor"
msgstr "Sensor bearbeiten"
-#: ../bin/csensor.c:478
+#: ../bin/csensor.c:483
msgid "Place sensor"
msgstr "Sensor setzen"
-#: ../bin/csignal.c:238
-msgid "Number Of Heads"
-msgstr "Anzahl der Köpfe"
-
-#: ../bin/csignal.c:277
-msgid "Change Signal"
-msgstr "Signal ändern"
-
-#: ../bin/csignal.c:311
-#, c-format
-msgid "(%d [%s]): Layer=%u, %d heads at %0.3f,%0.3f A%0.3f"
-msgstr "(%d [%s]): Ebene=%u, %d Köpfe bei %0.3f,%0.3f A%0.3f"
-
-#: ../bin/csignal.c:322 ../bin/csignal.c:908
-msgid "Signal"
-msgstr "Signal"
-
-#: ../bin/csignal.c:514
-msgid "Number of Heads"
-msgstr "Anzahl der Köpfe"
-
-#: ../bin/csignal.c:519
-msgid "Edit Aspect"
-msgstr "Signalbild bearbeiten"
-
-#: ../bin/csignal.c:521
-msgid "Add Aspect"
-msgstr "Signalanzeige"
-
-#: ../bin/csignal.c:523
-msgid "Delete Aspect"
-msgstr "Signalbild löschen"
-
-#: ../bin/csignal.c:536
-msgid "Aspect Index"
-msgstr "Nummer der Signalanzeige"
-
-#: ../bin/csignal.c:551
-msgid "Create Signal"
-msgstr "Signal erstellen"
-
-#: ../bin/csignal.c:555
-msgid "Modify Signal"
-msgstr "Signal ändern"
-
-#: ../bin/csignal.c:662
-msgid "Edit aspect"
-msgstr "Signalbild bearbeiten"
-
-#: ../bin/csignal.c:709
-#, c-format
-msgid "Are you sure you want to delete the %d aspect(s)"
-msgstr "Sind Sie sicher, dass Sie %d Signalbilder löschen wollen?"
-
-#: ../bin/csignal.c:730
-msgid "Edit signal"
-msgstr "Signal bearbeiten"
-
-#: ../bin/csignal.c:792
-msgid "Place base of signal"
-msgstr "Basis des Signals festlegen"
-
-#: ../bin/csignal.c:800
-msgid "Drag to orient signal"
-msgstr "Durch Ziehen das Signal ausrichten"
-
-#: ../bin/csnap.c:489
+#: ../bin/csnap.c:530
msgid "Horz"
msgstr "Horiz."
-#: ../bin/csnap.c:491
+#: ../bin/csnap.c:532
msgid "Spacing"
msgstr "Abstand"
-#: ../bin/csnap.c:493
+#: ../bin/csnap.c:534
msgid "Divisions"
msgstr "Zwischenmarkierungen"
-#: ../bin/csnap.c:496
+#: ../bin/csnap.c:537
msgid "Enable"
msgstr "Einschalten"
-#: ../bin/csnap.c:497
+#: ../bin/csnap.c:538
msgid "Vert"
msgstr "Vert."
-#: ../bin/csnap.c:506 ../bin/dease.c:74
+#: ../bin/csnap.c:547 ../bin/dease.c:78
msgid "X"
msgstr "X"
-#: ../bin/csnap.c:510
+#: ../bin/csnap.c:551
msgid "A"
msgstr "A"
-#: ../bin/csnap.c:513
+#: ../bin/csnap.c:554
msgid "Show"
msgstr "Zeige"
-#: ../bin/csnap.c:752
+#: ../bin/csnap.c:815
msgid "Change Grid..."
msgstr "Raster anpassen..."
@@ -2905,185 +2826,252 @@ msgstr "Raster anpassen..."
msgid "Set Block Gaps"
msgstr "Setze Trennstellen"
-#: ../bin/csplit.c:132
-msgid "Select track to split"
-msgstr "Zu trennendes Gleis auswählen"
+#: ../bin/csplit.c:137
+msgid "Select track and position for split"
+msgstr "Gleis und Position zum Trennen auswählen"
-#: ../bin/csplit.c:155
+#: ../bin/csplit.c:161
msgid "Can't Split that Track Object"
-msgstr "Dieses Gleisobjekt kann nicht auf geteilt werden"
+msgstr "Dieses Gleisobjekt kann nicht aufgetrennt werden"
-#: ../bin/csplit.c:163 ../bin/csplit.c:175 ../bin/csplit.c:474
+#: ../bin/csplit.c:169 ../bin/csplit.c:182 ../bin/csplit.c:505
msgid "Split Track"
msgstr "Gleis auftrennen"
-#: ../bin/csplit.c:171 ../bin/csplit.c:294 ../bin/csplit.c:381
+#: ../bin/csplit.c:178 ../bin/csplit.c:322 ../bin/csplit.c:410
msgid "Can't Split that Draw Object"
-msgstr "Dieses Zeichenobjekt kann nicht aufgeteilt werden"
+msgstr "Dieses Zeichenobjekt kann nicht aufgetrennt werden"
-#: ../bin/csplit.c:181
+#: ../bin/csplit.c:188
msgid "No Track to Split"
-msgstr "Kein aufteilbares Gleis"
+msgstr "Kein auftrennbares Gleis"
-#: ../bin/csplit.c:194 ../bin/dbench.c:64 ../bin/dbench.c:75
+#: ../bin/csplit.c:203 ../bin/dbench.c:65 ../bin/dbench.c:77
msgid "Left"
msgstr "Links"
-#: ../bin/csplit.c:195 ../bin/dbench.c:65 ../bin/dbench.c:74
+#: ../bin/csplit.c:205 ../bin/dbench.c:66 ../bin/dbench.c:76
msgid "Right"
msgstr "Rechts"
-#: ../bin/csplit.c:196 ../bin/csplit.c:201
+#: ../bin/csplit.c:207 ../bin/csplit.c:216
msgid "Both"
msgstr "Beides"
-#: ../bin/csplit.c:199
+#: ../bin/csplit.c:212
msgid "Top"
msgstr "Oben"
-#: ../bin/csplit.c:200
+#: ../bin/csplit.c:214
msgid "Bottom"
msgstr "Unten"
-#: ../bin/csplit.c:280
+#: ../bin/csplit.c:307
msgid "Select draw to split"
msgstr "Zu trennendes Zeichenelement auswählen"
-#: ../bin/csplit.c:298 ../bin/csplit.c:475
+#: ../bin/csplit.c:326 ../bin/csplit.c:508
msgid "Split Draw"
msgstr "Zeichenobjekt auftrennen"
-#: ../bin/csplit.c:304
+#: ../bin/csplit.c:332
msgid "No Draw to Split"
msgstr "Kein aufteilbares Zeichenobjekt"
-#: ../bin/csplit.c:342
+#: ../bin/csplit.c:371
msgid "Select the draw object to Trim to"
msgstr "Wählen Sie das begrenzende Zeichenobjekt aus"
-#: ../bin/csplit.c:357
+#: ../bin/csplit.c:387
msgid "Can't Trim with a Track"
msgstr "Kann nicht mit einem Gleis abschneiden"
-#: ../bin/csplit.c:362
+#: ../bin/csplit.c:392
msgid "Select an intersecting draw object to Trim"
-msgstr ""
-"Wählen Sie ein sich überschneidendes Zeichenobjekt zum Abschneiden aus"
+msgstr "Wählen Sie ein sich überschneidendes Zeichenobjekt zum Abschneiden aus"
-#: ../bin/csplit.c:368
+#: ../bin/csplit.c:397
msgid "No Draw to Trim with"
-msgstr "Kein begrenzendes Zeichenobjeckt vorhanden"
+msgstr "Kein begrenzendes Zeichenobjekt vorhanden"
-#: ../bin/csplit.c:375
+#: ../bin/csplit.c:404
msgid "Can't Split a track object"
msgstr "Ein Gleis kann nicht geteilt werden"
-#: ../bin/csplit.c:403 ../bin/csplit.c:476
+#: ../bin/csplit.c:432 ../bin/csplit.c:511
msgid "Trim Draw"
-msgstr "Trimmzeichnung"
+msgstr "Zeichenobjekt schneiden"
-#: ../bin/csplit.c:408
+#: ../bin/csplit.c:437
msgid "Select another draw object to Trim, or Space to Deselect"
msgstr ""
-"Wählen Sie ein anderes Zeichenobjekt zum Zuschneiden oder brechmi mit der "
+"Wählen Sie ein anderes Zeichenobjekt zum Zuschneiden oder brechen mit der "
"Leertaste ab"
-#: ../bin/csplit.c:473
+#: ../bin/csplit.c:504
msgid "Split"
msgstr "Auftrennen"
-#: ../bin/cstraigh.c:75
+#: ../bin/csignal.c:239
+msgid "Number Of Heads"
+msgstr "Anzahl der Köpfe"
+
+#: ../bin/csignal.c:279
+msgid "Change Signal"
+msgstr "Signal ändern"
+
+#: ../bin/csignal.c:314
+#, c-format
+msgid "(%d [%s]): Layer=%u, %d heads at %0.3f,%0.3f A%0.3f"
+msgstr "(%d [%s]): Ebene=%u, %d Köpfe bei %0.3f,%0.3f A%0.3f"
+
+#: ../bin/csignal.c:325 ../bin/csignal.c:931
+msgid "Signal"
+msgstr "Signal"
+
+#: ../bin/csignal.c:518
+msgid "Number of Heads"
+msgstr "Anzahl der Köpfe"
+
+#: ../bin/csignal.c:523
+msgid "Edit Aspect"
+msgstr "Signalbild bearbeiten"
+
+#: ../bin/csignal.c:525
+msgid "Add Aspect"
+msgstr "Signalanzeige"
+
+#: ../bin/csignal.c:527
+msgid "Delete Aspect"
+msgstr "Signalbild löschen"
+
+#: ../bin/csignal.c:540
+msgid "Aspect Index"
+msgstr "Nummer der Signalanzeige"
+
+#: ../bin/csignal.c:555
+msgid "Create Signal"
+msgstr "Signal erstellen"
+
+#: ../bin/csignal.c:560
+msgid "Modify Signal"
+msgstr "Signal ändern"
+
+#: ../bin/csignal.c:677
+msgid "Edit aspect"
+msgstr "Signalbild bearbeiten"
+
+#: ../bin/csignal.c:724
+#, c-format
+msgid "Are you sure you want to delete the %d aspect(s)"
+msgstr "Sind Sie sicher, dass Sie %d Signalbilder löschen wollen?"
+
+#: ../bin/csignal.c:747
+msgid "Edit signal"
+msgstr "Signal bearbeiten"
+
+#: ../bin/csignal.c:811
+msgid "Place base of signal"
+msgstr "Basis des Signals festlegen"
+
+#: ../bin/csignal.c:819
+msgid "Drag to orient signal"
+msgstr "Durch Ziehen das Signal ausrichten"
+
+#: ../bin/cstraigh.c:77
msgid "Place 1st endpoint of straight track, snap to unconnected endpoint"
msgstr ""
"Platzieren Sie den 1. Endpunkt des geraden Gleis, wird an einen "
"unverbundenen Endpunkt fixiert"
-#: ../bin/cstraigh.c:103
+#: ../bin/cstraigh.c:105
msgid "Drag to place 2nd end point"
msgstr "Ziehen um den zweiten Endpunkt zu setzen"
-#: ../bin/cstraigh.c:149
+#: ../bin/cstraigh.c:151
#, c-format
msgid "Straight Track Length=%s Angle=%0.3f"
msgstr "Gleisgerade: Länge=%s Winkel=%0.3f"
-#: ../bin/cstraigh.c:200 ../bin/tstraigh.c:225
+#: ../bin/cstraigh.c:204 ../bin/tstraigh.c:245
msgid "Straight Track"
msgstr "Gleisgerade"
-#: ../bin/cstruct.c:64 ../bin/cturnout.c:84 ../bin/doption.c:91
-#: ../bin/doption.c:241
+#: ../bin/cstruct.c:67 ../bin/cturnout.c:86 ../bin/doption.c:88
+#: ../bin/doption.c:245
msgid "Hide"
msgstr "Verstecken"
-#: ../bin/cstruct.c:479 ../bin/cstruct.c:506
+#: ../bin/cstruct.c:505 ../bin/cstruct.c:535
msgid "Pier Number"
-msgstr "Gleisanschluß"
+msgstr "Gleisanschluss"
-#: ../bin/cstruct.c:591
+#: ../bin/cstruct.c:627
#, c-format
msgid "Scale %d:1"
msgstr "Maßstab 1:%d"
-#: ../bin/cstruct.c:593
+#: ../bin/cstruct.c:629
#, c-format
msgid "Width %s"
msgstr "Breite %s"
-#: ../bin/cstruct.c:595
+#: ../bin/cstruct.c:631
#, c-format
msgid "Height %s"
msgstr "Höhe %s"
-#: ../bin/cstruct.c:735
+#: ../bin/cstruct.c:779
msgid "Place Structure"
-msgstr "Gebäude plazieren"
+msgstr "Gebäude platzieren"
-#: ../bin/cstruct.c:828
+#: ../bin/cstruct.c:851 ../bin/cstruct.c:904 ../bin/drawgeom.c:304
+msgid "+Alt for Magnetic Snap"
+msgstr "+Alt für den magnetischen Schnapper"
+
+#: ../bin/cstruct.c:853 ../bin/cstruct.c:906 ../bin/drawgeom.c:306
+msgid "+Alt to inhibit Magnetic Snap"
+msgstr "+Alt um den magnetischen Schnapper abzuschalten"
+
+#: ../bin/cstruct.c:888
msgid "Drag to place"
msgstr "Zur Position ziehen"
-#: ../bin/cstruct.c:850
+#: ../bin/cstruct.c:921
msgid "Drag to rotate"
msgstr "Ziehen zum rotieren"
-#: ../bin/cstruct.c:870
-#, c-format
-msgid "Angle = %0.3f"
-msgstr "Winkel = %0.3f"
-
-#: ../bin/cstruct.c:880 ../bin/cstruct.c:1126 ../bin/cturnout.c:4699
-#: ../bin/cturnout.c:4751 ../bin/cturnout.c:4882 ../bin/cturnout.c:5021
+#: ../bin/cstruct.c:952 ../bin/cstruct.c:1222 ../bin/cturnout.c:2812
+#: ../bin/cturnout.c:2871 ../bin/cturnout.c:3015 ../bin/cturnout.c:3162
msgid ""
"Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter "
"to accept, Esc to Cancel"
msgstr ""
-"Ziehen mit linker Maustaste zum Verschieben, mit Strg-Links oderrechter zum "
+"Ziehen mit linker Maustaste zum Verschieben, mit Strg-Links oder rechter zum "
"Drehen, Leerzeichen oder Eingabetaste zum Festlegen, Esc zum Abbrechen"
-#: ../bin/cstruct.c:953 ../bin/cturnout.c:4836 ../bin/param.c:2721
+#: ../bin/cstruct.c:1031 ../bin/cturnout.c:2963 ../bin/param.c:3014
msgid "Close"
-msgstr "Schliessen"
+msgstr "Schließen"
-#: ../bin/cstruct.c:970
+#: ../bin/cstruct.c:1049
msgid "Select Structure and then drag to place"
-msgstr "Gebäued auswählen und in die Piosition ziehen"
+msgstr "Gebäude auswählen und in die Position ziehen"
-#: ../bin/cstruct.c:1009
+#: ../bin/cstruct.c:1091
msgid ""
"Left drag to move, right drag to rotate, or press Return or click Ok to "
"finalize"
msgstr ""
"Ziehen mit linker Maustaste zum Verschieben, mit rechter zum Drehen, oder "
-"Eingabetaste oder OK zum Abschliessen"
+"Eingabetaste oder OK zum Abschließen"
-#: ../bin/cstruct.c:1096 ../bin/cturnout.c:4988
+#: ../bin/cstruct.c:1184 ../bin/cturnout.c:3127
#, c-format
msgid "Place %s and draw into position"
msgstr "%s setzen und in Position ziehen"
-#: ../bin/cswitchmotor.c:92 ../bin/cswitchmotor.c:111
-#: ../bin/cswitchmotor.c:224
+#: ../bin/cswitchmotor.c:92 ../bin/cswitchmotor.c:111 ../bin/cswitchmotor.c:231
msgid "Point Sense"
msgstr "Richtung der Weichenzungen"
@@ -3091,618 +3079,625 @@ msgstr "Richtung der Weichenzungen"
msgid "Turnout Number"
msgstr "Weichennummer"
-#: ../bin/cswitchmotor.c:289
+#: ../bin/cswitchmotor.c:299
msgid "Change Switch Motor"
msgstr "Weichenantrieb ändern"
-#: ../bin/cswitchmotor.c:356
+#: ../bin/cswitchmotor.c:369
msgid "Switch motor"
msgstr "Weichenantrieb"
-#: ../bin/cswitchmotor.c:472
+#: ../bin/cswitchmotor.c:499
#, c-format
msgid "ResolveSwitchmotor: Turnout T%d: T%d doesn't exist"
msgstr "ResolveSwitchmotor: Weiche T%d: T%d existiert nicht"
-#: ../bin/cswitchmotor.c:541 ../bin/cswitchmotor.c:712
+#: ../bin/cswitchmotor.c:570 ../bin/cswitchmotor.c:746
msgid "Switch motor must have a name!"
msgstr "Der Weichenantrieb benötigt einen Namen!"
-#: ../bin/cswitchmotor.c:545
+#: ../bin/cswitchmotor.c:574
msgid "Create Switch Motor"
msgstr "Weichenantrieb erstellen"
-#: ../bin/cswitchmotor.c:577
+#: ../bin/cswitchmotor.c:608
msgid "Create switch motor"
msgstr "Weichenantrieb erstellen"
-#: ../bin/cswitchmotor.c:591 ../bin/cswitchmotor.c:623
-#: ../bin/cswitchmotor.c:655
+#: ../bin/cswitchmotor.c:624 ../bin/cswitchmotor.c:655
+#: ../bin/cswitchmotor.c:687
msgid "Select a turnout"
msgstr "Wählen Sie eine Weiche aus"
-#: ../bin/cswitchmotor.c:599
+#: ../bin/cswitchmotor.c:632
msgid "Not a turnout!"
msgstr "Keine Weiche!"
-#: ../bin/cswitchmotor.c:632 ../bin/cswitchmotor.c:663
+#: ../bin/cswitchmotor.c:664 ../bin/cswitchmotor.c:695
msgid "Not a switch motor!"
msgstr "Kein Weichenantrieb!"
-#: ../bin/cswitchmotor.c:668
+#: ../bin/cswitchmotor.c:700
#, c-format
msgid "Really delete switch motor %s?"
msgstr "Soll der Weichenantrieb %s wirklich gelöscht werden?"
-#: ../bin/cswitchmotor.c:669
+#: ../bin/cswitchmotor.c:702
msgid "Delete Switch Motor"
msgstr "Weichenantrieb löschen"
-#: ../bin/cswitchmotor.c:716
+#: ../bin/cswitchmotor.c:750
msgid "Modify Switch Motor"
msgstr "Weichenantrieb ändern"
-#: ../bin/cswitchmotor.c:742
+#: ../bin/cswitchmotor.c:776
msgid "Edit switch motor"
msgstr "Weichenantrieb bearbeiten"
-#: ../bin/cswitchmotor.c:748
+#: ../bin/cswitchmotor.c:782
#, c-format
msgid "Edit switch motor %d"
msgstr "Weichenantrieb %d bearbeiten"
-#: ../bin/cswitchmotor.c:852
+#: ../bin/cswitchmotor.c:889
msgid "Switch Motor"
msgstr "Weichenantrieb"
-#: ../bin/cswitchmotor.c:865
+#: ../bin/cswitchmotor.c:903
#, c-format
msgid "Deleting Switch Motor %s"
msgstr "Weichenantrieb %s löschen"
-#: ../bin/ctext.c:194 ../bin/ctext.c:239
+#: ../bin/ctext.c:186 ../bin/ctext.c:234
msgid "Create Text"
msgstr "Erstelle Text"
-#: ../bin/ctext.c:270
+#: ../bin/ctext.c:269
msgid "Fonts..."
msgstr "Schriftarten..."
-#: ../bin/ctodesgn.c:135
+#: ../bin/ctodesgn.c:141
msgid "Frog #"
msgstr "Herzstück Steigung"
-#: ../bin/ctodesgn.c:135
+#: ../bin/ctodesgn.c:141
msgid "Degrees"
msgstr "Grad"
-#: ../bin/ctodesgn.c:136
+#: ../bin/ctodesgn.c:142
msgid "Dual Path"
msgstr "Zwei Positionen"
-#: ../bin/ctodesgn.c:136
+#: ../bin/ctodesgn.c:142
msgid "Quad Path"
msgstr "Vier Positionen"
-#: ../bin/ctodesgn.c:174 ../bin/ctodesgn.c:175 ../bin/ctodesgn.c:176
-#: ../bin/ctodesgn.c:177 ../bin/ctodesgn.c:237 ../bin/ctodesgn.c:260
-#: ../bin/ctodesgn.c:262 ../bin/ctodesgn.c:297 ../bin/ctodesgn.c:300
-#: ../bin/ctodesgn.c:326 ../bin/ctodesgn.c:327 ../bin/ctodesgn.c:363
-#: ../bin/ctodesgn.c:366 ../bin/ctodesgn.c:392 ../bin/ctodesgn.c:394
-#: ../bin/ctodesgn.c:433 ../bin/ctodesgn.c:437 ../bin/ctodesgn.c:440
-#: ../bin/ctodesgn.c:652
+#: ../bin/ctodesgn.c:184 ../bin/ctodesgn.c:185 ../bin/ctodesgn.c:186
+#: ../bin/ctodesgn.c:187 ../bin/ctodesgn.c:246 ../bin/ctodesgn.c:272
+#: ../bin/ctodesgn.c:274 ../bin/ctodesgn.c:318 ../bin/ctodesgn.c:321
+#: ../bin/ctodesgn.c:352 ../bin/ctodesgn.c:353 ../bin/ctodesgn.c:397
+#: ../bin/ctodesgn.c:400 ../bin/ctodesgn.c:430 ../bin/ctodesgn.c:432
+#: ../bin/ctodesgn.c:479 ../bin/ctodesgn.c:483 ../bin/ctodesgn.c:486
+#: ../bin/ctodesgn.c:744
msgid "Offset"
msgstr "Abstand"
-#: ../bin/ctodesgn.c:195 ../bin/ctodesgn.c:2934 ../bin/ctodesgn.c:2935
+#: ../bin/ctodesgn.c:205 ../bin/ctodesgn.c:3206 ../bin/ctodesgn.c:3207
msgid "Left Description"
msgstr "Beschreibung, links"
-#: ../bin/ctodesgn.c:196 ../bin/ctodesgn.c:199
+#: ../bin/ctodesgn.c:206 ../bin/ctodesgn.c:209
msgid " #"
msgstr " Nr."
-#: ../bin/ctodesgn.c:198 ../bin/ctodesgn.c:2933
+#: ../bin/ctodesgn.c:208 ../bin/ctodesgn.c:3205
msgid "Right Description"
msgstr "Beschreibung, rechts"
-#: ../bin/ctodesgn.c:200
+#: ../bin/ctodesgn.c:210
msgid "Roadbed Width"
-msgstr "Breite des Gleisbetts"
+msgstr "Breite des Gleisbettes"
-#: ../bin/ctodesgn.c:204 ../bin/denum.c:52
+#: ../bin/ctodesgn.c:214 ../bin/denum.c:52
msgid "Print Setup"
msgstr "Druckeinstellungen"
-#: ../bin/ctodesgn.c:235
+#: ../bin/ctodesgn.c:244
msgid "Diverging Length"
msgstr "Länge des Abzweigs"
-#: ../bin/ctodesgn.c:236
+#: ../bin/ctodesgn.c:245
msgid "Diverging Angle"
msgstr "Winkel des Abzweigs"
-#: ../bin/ctodesgn.c:237
+#: ../bin/ctodesgn.c:246
msgid "Diverging Offset"
msgstr "Abstand des Abzweigs"
-#: ../bin/ctodesgn.c:238
+#: ../bin/ctodesgn.c:247
msgid "Overall Length"
msgstr "Gesamtlänge"
-#: ../bin/ctodesgn.c:248
+#: ../bin/ctodesgn.c:259
msgid "Regular Turnout"
msgstr "Normale Weiche"
-#: ../bin/ctodesgn.c:258 ../bin/ctodesgn.c:295
+#: ../bin/ctodesgn.c:270 ../bin/ctodesgn.c:316
msgid "Inner Length"
msgstr "Innenlänge"
-#: ../bin/ctodesgn.c:259 ../bin/ctodesgn.c:296
+#: ../bin/ctodesgn.c:271 ../bin/ctodesgn.c:317
msgid "Inner Angle"
msgstr "Innenwinkel"
-#: ../bin/ctodesgn.c:260 ../bin/ctodesgn.c:297
+#: ../bin/ctodesgn.c:272 ../bin/ctodesgn.c:318
msgid "Inner Offset"
msgstr "Innenabstand"
-#: ../bin/ctodesgn.c:261 ../bin/ctodesgn.c:299
+#: ../bin/ctodesgn.c:273 ../bin/ctodesgn.c:320
msgid "Outer Angle"
msgstr "Außenwinkel"
-#: ../bin/ctodesgn.c:262 ../bin/ctodesgn.c:300
+#: ../bin/ctodesgn.c:274 ../bin/ctodesgn.c:321
msgid "Outer Offset"
msgstr "Außenabstand"
-#: ../bin/ctodesgn.c:263 ../bin/ctodesgn.c:302
+#: ../bin/ctodesgn.c:275 ../bin/ctodesgn.c:323
msgid "Outer Length"
msgstr "Außenlänge"
-#: ../bin/ctodesgn.c:285
+#: ../bin/ctodesgn.c:304
msgid "Curved Turnout"
msgstr "Bogenweiche"
-#: ../bin/ctodesgn.c:298
+#: ../bin/ctodesgn.c:319
msgid "Inner Radius"
msgstr "Innenradius"
-#: ../bin/ctodesgn.c:301
+#: ../bin/ctodesgn.c:322
msgid "Outer Radius"
msgstr "Außenradius"
-#: ../bin/ctodesgn.c:303 ../bin/ctodesgn.c:370 ../bin/ctodesgn.c:445
+#: ../bin/ctodesgn.c:324 ../bin/ctodesgn.c:404 ../bin/ctodesgn.c:491
msgid "Toe Radius"
msgstr "Anfangsradius"
-#: ../bin/ctodesgn.c:304 ../bin/ctodesgn.c:369
+#: ../bin/ctodesgn.c:325 ../bin/ctodesgn.c:403
msgid "Toe Length"
msgstr "Anfangslänge"
-#: ../bin/ctodesgn.c:314
+#: ../bin/ctodesgn.c:338
msgid "Cornu Curved Turnout"
msgstr "Cornu-Bogenweiche"
-#: ../bin/ctodesgn.c:324 ../bin/ctodesgn.c:361 ../bin/ctodesgn.c:390
-#: ../bin/ctodesgn.c:431
+#: ../bin/ctodesgn.c:350 ../bin/ctodesgn.c:395 ../bin/ctodesgn.c:428
+#: ../bin/ctodesgn.c:477
msgid "Left Length"
msgstr "Linke Länge"
-#: ../bin/ctodesgn.c:325 ../bin/ctodesgn.c:362 ../bin/ctodesgn.c:391
-#: ../bin/ctodesgn.c:432
+#: ../bin/ctodesgn.c:351 ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:429
+#: ../bin/ctodesgn.c:478
msgid "Left Angle"
msgstr "Linker Winkel"
-#: ../bin/ctodesgn.c:326 ../bin/ctodesgn.c:363 ../bin/ctodesgn.c:392
-#: ../bin/ctodesgn.c:433
+#: ../bin/ctodesgn.c:352 ../bin/ctodesgn.c:397 ../bin/ctodesgn.c:430
+#: ../bin/ctodesgn.c:479
msgid "Left Offset"
msgstr "Linker Abstand"
-#: ../bin/ctodesgn.c:327 ../bin/ctodesgn.c:366 ../bin/ctodesgn.c:394
-#: ../bin/ctodesgn.c:440
+#: ../bin/ctodesgn.c:353 ../bin/ctodesgn.c:400 ../bin/ctodesgn.c:432
+#: ../bin/ctodesgn.c:486
msgid "Right Offset"
msgstr "Rechter Abstand"
-#: ../bin/ctodesgn.c:328 ../bin/ctodesgn.c:367 ../bin/ctodesgn.c:395
-#: ../bin/ctodesgn.c:441
+#: ../bin/ctodesgn.c:354 ../bin/ctodesgn.c:401 ../bin/ctodesgn.c:433
+#: ../bin/ctodesgn.c:487
msgid "Right Angle"
msgstr "Rechter Winkel"
-#: ../bin/ctodesgn.c:329 ../bin/ctodesgn.c:368 ../bin/ctodesgn.c:396
-#: ../bin/ctodesgn.c:442
+#: ../bin/ctodesgn.c:355 ../bin/ctodesgn.c:402 ../bin/ctodesgn.c:434
+#: ../bin/ctodesgn.c:488
msgid "Right Length"
msgstr "Rechte Länge"
-#: ../bin/ctodesgn.c:351
+#: ../bin/ctodesgn.c:383
msgid "Wye Turnout"
msgstr "Außenbogenweiche"
-#: ../bin/ctodesgn.c:364 ../bin/ctodesgn.c:434
+#: ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:480
msgid "Left Radius"
msgstr "Linker Radius"
-#: ../bin/ctodesgn.c:365 ../bin/ctodesgn.c:439
+#: ../bin/ctodesgn.c:399 ../bin/ctodesgn.c:485
msgid "Right Radius"
msgstr "Rechter Radius"
-#: ../bin/ctodesgn.c:380
+#: ../bin/ctodesgn.c:416
msgid "Cornu Wye Turnout"
msgstr "Cornu-Außenbogenweiche"
-#: ../bin/ctodesgn.c:421
+#: ../bin/ctodesgn.c:465
msgid "3-way Turnout"
msgstr "Dreiwegweiche"
-#: ../bin/ctodesgn.c:435
+#: ../bin/ctodesgn.c:481
msgid "Center Length"
msgstr "Länge des Mittelgleis"
-#: ../bin/ctodesgn.c:436
+#: ../bin/ctodesgn.c:482
msgid "Center Angle"
msgstr "Winkel des Mittelgleis"
-#: ../bin/ctodesgn.c:437 ../bin/dcar.c:2229
+#: ../bin/ctodesgn.c:483 ../bin/dcar.c:2348
msgid "Center Offset"
msgstr "Abstand des Mittelgleis"
-#: ../bin/ctodesgn.c:438
+#: ../bin/ctodesgn.c:484
msgid "Center Radius"
msgstr "Radius des Mittelgleis"
-#: ../bin/ctodesgn.c:443
+#: ../bin/ctodesgn.c:489
msgid "Toe Length Left"
msgstr "Anfangslänge links"
-#: ../bin/ctodesgn.c:444
+#: ../bin/ctodesgn.c:490
msgid "Toe Length Right"
msgstr "Anfangslänge rechts"
-#: ../bin/ctodesgn.c:456
+#: ../bin/ctodesgn.c:504
msgid "Cornu 3-way Turnout"
msgstr "Cornu-Dreiwegweiche"
-#: ../bin/ctodesgn.c:476
+#: ../bin/ctodesgn.c:529
msgid "Crossing"
msgstr "Kreuzung"
-#: ../bin/ctodesgn.c:497
+#: ../bin/ctodesgn.c:554
msgid "Single Slipswitch"
msgstr "Einfache Kreuzungsweiche"
-#: ../bin/ctodesgn.c:526
+#: ../bin/ctodesgn.c:589
msgid "Double Slipswitch"
msgstr "Doppelte Kreuzungsweiche"
-#: ../bin/ctodesgn.c:546
+#: ../bin/ctodesgn.c:614
msgid "Right Crossover"
msgstr "Rechter Gleiswechsel"
-#: ../bin/ctodesgn.c:566
+#: ../bin/ctodesgn.c:640
msgid "Left Crossover"
msgstr "Linker Gleiswechsel"
-#: ../bin/ctodesgn.c:586
+#: ../bin/ctodesgn.c:665
msgid "Double Crossover"
msgstr "Doppelter Gleiswechsel"
-#: ../bin/ctodesgn.c:604
+#: ../bin/ctodesgn.c:687
msgid "Straight Section"
msgstr "Gerader Abschnitt"
-#: ../bin/ctodesgn.c:615
+#: ../bin/ctodesgn.c:699
msgid "Angle (Degrees)"
msgstr "Winkel (Grad)"
-#: ../bin/ctodesgn.c:623
+#: ../bin/ctodesgn.c:710
msgid "Curved Section"
msgstr "Gebogener Abschnitt"
-#: ../bin/ctodesgn.c:642
+#: ../bin/ctodesgn.c:733
msgid "Bumper Section"
msgstr "Prellbock"
-#: ../bin/ctodesgn.c:652 ../bin/denum.c:123 ../bin/denum.c:188
-#: ../bin/denum.c:220 ../bin/denum.c:221
+#: ../bin/ctodesgn.c:744 ../bin/denum.c:124 ../bin/denum.c:193
+#: ../bin/denum.c:230 ../bin/denum.c:231
msgid "Count"
msgstr "Anzahl"
-#: ../bin/ctodesgn.c:653
+#: ../bin/ctodesgn.c:745
msgid "Radius1"
msgstr "Radius 1"
-#: ../bin/ctodesgn.c:654
+#: ../bin/ctodesgn.c:746
msgid "Radius2"
msgstr "Radius 2"
-#: ../bin/ctodesgn.c:734
+#: ../bin/ctodesgn.c:829
msgid "Turntable Section"
msgstr "Drehscheibenabschnitt"
-#: ../bin/ctodesgn.c:2571
+#: ../bin/ctodesgn.c:2779
#, c-format
msgid "%s Designer"
msgstr "%s Designer"
-#: ../bin/ctodesgn.c:2574
+#: ../bin/ctodesgn.c:2782
#, c-format
msgid "%s %d x %d (of %d x %d)"
msgstr "%s %d x %d (von %d x %d)"
-#: ../bin/ctodesgn.c:2574
+#: ../bin/ctodesgn.c:2782
msgid "Page"
msgstr "Seite"
-#: ../bin/ctodesgn.c:2581
+#: ../bin/ctodesgn.c:2790
msgid "Frog Number"
msgstr "Herzstücksteigung"
-#: ../bin/ctodesgn.c:2887
+#: ../bin/ctodesgn.c:3149
msgid "Turnout Designer"
msgstr "Weichendesigner"
-#: ../bin/ctodesgn.c:2897
+#: ../bin/ctodesgn.c:3162
#, c-format
msgid "%s %s Designer"
msgstr "%s %s Designer"
-#: ../bin/ctrain.c:183 ../bin/dcar.c:2241 ../bin/dcar.c:4373
-#: ../bin/dcar.c:4378
+#: ../bin/ctrain.c:181 ../bin/dcar.c:2360 ../bin/dcar.c:4694 ../bin/dcar.c:4700
msgid "Index"
msgstr "Verzeichnis"
-#: ../bin/ctrain.c:189 ../bin/dcar.c:4374
-msgid "Rep Marks"
-msgstr "Wagennummer"
+#: ../bin/ctrain.c:187
+msgid "Report Marks"
+msgstr "Bahngesellschaft"
-#: ../bin/ctrain.c:273
+#: ../bin/ctrain.c:275
msgid "Car"
msgstr "Wagen"
-#: ../bin/ctrain.c:659
+#: ../bin/ctrain.c:730
msgid "Follow"
msgstr "Folgen"
-#: ../bin/ctrain.c:660
+#: ../bin/ctrain.c:731
msgid "Auto Reverse"
msgstr "Automat. Wenden"
-#: ../bin/ctrain.c:679 ../bin/dcar.c:5260
+#: ../bin/ctrain.c:750 ../bin/dcar.c:5686
msgid "Find"
msgstr "Finden"
-#: ../bin/ctrain.c:685 ../bin/ctrain.c:942 ../bin/ctrain.c:1251
-#: ../wlib/gtklib/ixhelp.c:239
+#: ../bin/ctrain.c:756 ../bin/ctrain.c:1013 ../bin/ctrain.c:1326
msgid "Forward"
msgstr "Vorwärts"
-#: ../bin/ctrain.c:687 ../bin/ctrain.c:3133 ../bin/dcar.c:4711
-#: ../bin/dcar.c:4721 ../bin/dcar.c:4840 ../bin/fileio.c:215 ../bin/macro.c:61
-#: ../bin/macro.c:874
+#: ../bin/ctrain.c:758 ../bin/ctrain.c:3237 ../bin/dcar.c:5093
+#: ../bin/dcar.c:5103 ../bin/dcar.c:5225 ../bin/fileio.c:222 ../bin/macro.c:65
+#: ../bin/track.c:1369
msgid "Stop"
msgstr "Anhalten"
-#: ../bin/ctrain.c:883 ../bin/ctrain.c:912
+#: ../bin/ctrain.c:954 ../bin/ctrain.c:983
msgid "Crashed"
msgstr "Entgleist"
-#: ../bin/ctrain.c:885
+#: ../bin/ctrain.c:956
msgid "Not on Track"
msgstr "Nicht auf einem Gleis"
-#: ../bin/ctrain.c:889
+#: ../bin/ctrain.c:960
msgid "Trains Paused"
msgstr "Züge angehalten"
-#: ../bin/ctrain.c:891
+#: ../bin/ctrain.c:962
msgid "Running"
msgstr "Fährt"
-#: ../bin/ctrain.c:896
+#: ../bin/ctrain.c:967
msgid "End of Track"
msgstr "Ende des Gleis"
-#: ../bin/ctrain.c:900
+#: ../bin/ctrain.c:971
msgid "Open Turnout"
msgstr "Weiche ist gesperrt"
-#: ../bin/ctrain.c:904
+#: ../bin/ctrain.c:975
msgid "Manual Stop"
msgstr "Von Hand angehalten"
-#: ../bin/ctrain.c:908
+#: ../bin/ctrain.c:979
msgid "No Room"
msgstr "Kein Platz"
-#: ../bin/ctrain.c:916
+#: ../bin/ctrain.c:987
msgid "Unknown Status"
msgstr "Unbekannter Zustand"
-#: ../bin/ctrain.c:926
+#: ../bin/ctrain.c:997
msgid "No trains"
msgstr "Keine Züge"
-#: ../bin/ctrain.c:1302
+#: ../bin/ctrain.c:1377
msgid "Train Control XXX"
msgstr "Zugsteuerung XXX"
-#: ../bin/ctrain.c:1303
+#: ../bin/ctrain.c:1378
#, c-format
msgid "Train Control %d"
msgstr "Zugsteuerung %d"
-#: ../bin/ctrain.c:1305
+#: ../bin/ctrain.c:1380
msgid "Train Control"
msgstr "Zugsteuerung"
-#: ../bin/ctrain.c:3103 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:155
+#: ../bin/ctrain.c:3200 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:156
msgid "Run Trains"
msgstr "Zugbetrieb"
-#: ../bin/ctrain.c:3119
+#: ../bin/ctrain.c:3219
msgid "Uncouple"
msgstr "Entkuppeln"
-#: ../bin/ctrain.c:3121
+#: ../bin/ctrain.c:3221
msgid "Flip Car"
msgstr "Wagen umdrehen"
-#: ../bin/ctrain.c:3123
+#: ../bin/ctrain.c:3224
msgid "Clearance Lines On"
msgstr "Begrenzungslinien an"
-#: ../bin/ctrain.c:3125
+#: ../bin/ctrain.c:3227
msgid "Clearance Lines Off"
msgstr "Begrenzungslinien aus"
-#: ../bin/ctrain.c:3127
+#: ../bin/ctrain.c:3229
msgid "Flip Train"
msgstr "Zug umdrehen"
-#: ../bin/ctrain.c:3129
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:438
+#: ../bin/ctrain.c:3231 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1188
+msgid "Describe"
+msgstr "Beschreibe"
+
+#: ../bin/ctrain.c:3233
msgid "MU Master"
msgstr "Mehrtraktionssteuerung"
-#: ../bin/ctrain.c:3132
+#: ../bin/ctrain.c:3236
msgid "Change Direction"
msgstr "Richtung ändern"
-#: ../bin/ctrain.c:3136
+#: ../bin/ctrain.c:3240
msgid "Remove Car"
msgstr "Wagen entfernen"
-#: ../bin/ctrain.c:3139
+#: ../bin/ctrain.c:3243
msgid "Remove Train"
msgstr "Zug entfernen"
-#: ../bin/cturnout.c:95 ../bin/dcar.c:2263 ../bin/dcar.c:2267
+#: ../bin/cturnout.c:97 ../bin/dcar.c:2382 ../bin/dcar.c:2386
msgid "New"
msgstr "Neu"
-#: ../bin/cturnout.c:415 ../bin/cturnout.c:420
+#: ../bin/cturnout.c:371 ../bin/cturnout.c:376
#, c-format
msgid "CheckPath: Turnout path[%d] %d is not a track segment"
msgstr "CheckPath: Weichenpfad[%d] %d ist kein Gleissegment"
-#: ../bin/cturnout.c:428
+#: ../bin/cturnout.c:385
#, c-format
msgid ""
"CheckPath: Turnout path[%d] %d-%d not connected: %0.3f P0(%f,%f) P1(%f,%f)"
msgstr ""
"CheckPath: Weichenpfad[%d] %d-%d nicht verbunden: %0.3f P0(%f,%f) P1(%f,%f)"
-#: ../bin/cturnout.c:475
+#: ../bin/cturnout.c:437
msgid "Unknown special case"
msgstr "Unbekannter Sonderfall"
-#: ../bin/cturnout.c:592
+#: ../bin/cturnout.c:564
msgid "Connect Adjustable Tracks"
msgstr "Veränderbare Gleise verbinden"
-#: ../bin/cturnout.c:2984
+#: ../bin/cturnout.c:1030
msgid "splitTurnout: can't find segment"
msgstr "Weiche auftrennen: Gleissegment nicht gefunden"
-#: ../bin/cturnout.c:3443 ../bin/track.c:2324 ../bin/track.c:2430
-#: ../bin/tstraigh.c:632
+#: ../bin/cturnout.c:1511 ../bin/track.c:2383 ../bin/track.c:2505
+#: ../bin/tstraigh.c:838
msgid "Drag to change track length"
msgstr "Ziehen um die Gleislänge zu ändern"
-#: ../bin/cturnout.c:3454
+#: ../bin/cturnout.c:1524
#, c-format
msgid "Length=%s"
msgstr "Länge=%s"
-#: ../bin/cturnout.c:3737
+#: ../bin/cturnout.c:1815
#, c-format
msgid "Turnout %d Path: %s"
msgstr "Weiche%d Pfad: %s"
-#: ../bin/cturnout.c:4288
+#: ../bin/cturnout.c:2389
#, c-format
msgid "%d connections, max distance %0.3f (%s)"
msgstr "%d Verbindungen, max. Abstand %0.3f (%s)"
-#: ../bin/cturnout.c:4294
+#: ../bin/cturnout.c:2394
#, c-format
msgid "0 connections (%s)"
msgstr "Keine Verbindungen (%s)"
-#: ../bin/cturnout.c:4333
+#: ../bin/cturnout.c:2433
msgid "Place New Turnout"
msgstr "Neue Weiche setzen"
-#: ../bin/cturnout.c:4743
+#: ../bin/cturnout.c:2861
#, c-format
msgid "Angle = %0.3f (%s)"
msgstr "Winkel = %0.3f (%s)"
-#: ../bin/cturnout.c:4853
+#: ../bin/cturnout.c:2962
+msgid "Add Fixed-Track"
+msgstr "Festgleis zufügen"
+
+#: ../bin/cturnout.c:2981
msgid "Pick turnout and active End Point, then place on the layout"
msgstr ""
"Weiche und aktiven Endpunkt auswählen und dann auf den Gleisplan setzen"
-#: ../bin/cturnout.c:5048
-msgid "Predefined Track"
-msgstr "Vordefiniertes Gleis"
+#: ../bin/cturnout.c:3190
+msgid "Fixed-Track"
+msgstr "Festgleis"
-#: ../bin/cturntbl.c:49 ../bin/cturntbl.c:248 ../bin/cturntbl.c:946
-#: ../bin/cturntbl.c:961
+#: ../bin/cturntbl.c:49 ../bin/cturntbl.c:275 ../bin/cturntbl.c:1029
+#: ../bin/cturntbl.c:1044
msgid "Diameter"
msgstr "Durchmesser"
-#: ../bin/cturntbl.c:249
+#: ../bin/cturntbl.c:276
msgid "# EndPt"
msgstr "Anzahl Endpunkte"
-#: ../bin/cturntbl.c:283
+#: ../bin/cturntbl.c:316
#, c-format
msgid "Turntable(%d): Layer=%d Center=[%s %s] Diameter=%s #EP=%d"
msgstr ""
"Drehscheibe(%d): Ebene=%d Mittelpunkt=[%s %s] Durchmesser=%s Anzahl "
"Endpunkte=%d"
-#: ../bin/cturntbl.c:302
+#: ../bin/cturntbl.c:335 ../bin/cturntbl.c:454
msgid "Turntable"
msgstr "Drehscheibe"
-#: ../bin/cturntbl.c:610
+#: ../bin/cturntbl.c:670
msgid "Drag to create stall track"
msgstr "Ziehen um Schuppengleis zu erstellen"
-#: ../bin/cturntbl.c:663
+#: ../bin/cturntbl.c:728
msgid "Connect Turntable Tracks"
msgstr "Drehscheibengleise verbinden"
-#: ../bin/cturntbl.c:975
+#: ../bin/cturntbl.c:1058
msgid "Create Turntable"
msgstr "Drehscheibe setzen"
-#: ../bin/cturntbl.c:1006
+#: ../bin/cturntbl.c:1090
msgid "Custom Turntable"
msgstr "Drehscheibe entwerfen"
-#: ../bin/cundo.c:210
+#: ../bin/cundo.c:266
msgid "Undo Trace"
msgstr "Undo Trace"
-#: ../bin/cundo.c:628
+#: ../bin/cundo.c:741
#, c-format
msgid "Undo: %s"
msgstr "Rückgängig: %s"
-#: ../bin/cundo.c:631 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:167
+#: ../bin/cundo.c:744 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:168
msgid "Undo last command"
msgstr "Letzten Befehl rückgängig machen"
-#: ../bin/cundo.c:636
+#: ../bin/cundo.c:749
#, c-format
msgid "Redo: %s"
msgstr "Wiederholen: %s"
-#: ../bin/cundo.c:639 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:128
+#: ../bin/cundo.c:752 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:129
msgid "Redo last undo"
msgstr "Rückgängig gemachten Befehl wiederholen"
-#: ../bin/custom.c:147
+#: ../bin/custom.c:148
#, c-format
msgid "%s Turnout Designer"
msgstr "%s Weichendesigner"
@@ -3712,7 +3707,7 @@ msgstr "%s Weichendesigner"
msgid "%s Version %s"
msgstr "%s Version %s"
-#: ../bin/custom.c:157
+#: ../bin/custom.c:156
#, c-format
msgid ""
"All %s Files (*.xtc,*.xtce)|*.xtc;*.xtce|%s Trackplan (*.xtc)|*.xtc|%s "
@@ -3721,7 +3716,7 @@ msgstr ""
"Alle %s-Dateien (*.xtc,*.xtce)|*.xtc;*.xtce|%s Gleisplan (*.xtc)|*.xtc|%s "
"Erweiterter Gleisplan (*.xtce)|*.xtce|Alle Dateien (*)|*"
-#: ../bin/custom.c:168
+#: ../bin/custom.c:166
#, c-format
msgid ""
"%s Trackplan (*.xtc)|*.xtc|%s Extended Trackplan (*.xtce)|*.xtce|All Files "
@@ -3730,40 +3725,40 @@ msgstr ""
"%s Gleisplan (*.xtc)|*.xtc|%s Erweiterter Gleisplan (*.xtce)|*.xtce|Alle "
"Dateien (*)|*"
-#: ../bin/custom.c:177
+#: ../bin/custom.c:174
#, c-format
msgid "All Files (*)|*"
msgstr "Alle Dateien (*)|*"
-#: ../bin/custom.c:182
+#: ../bin/custom.c:178
#, c-format
msgid "%s Import Files (*.xti)|*.xti"
msgstr "%s-Importdateien(*.xti)|*.xti"
-#: ../bin/custom.c:187
+#: ../bin/custom.c:182
msgid "Data Exchange Format Files (*.dxf)|*.dxf"
msgstr "Data Exchange Format Dateien(*.dxf)|*.dxf"
-#: ../bin/custom.c:191
+#: ../bin/custom.c:186
msgid "Scalable Vector Graphics Format Files (*.svg)|*.svg"
msgstr "Scalable Vector Graphics Format Dateien (*.svg)|*.svg"
-#: ../bin/custom.c:196
+#: ../bin/custom.c:190
#, c-format
msgid "%s Record Files (*.xtr)|*.xtr"
msgstr "%s-Aufzeichnungsdateien (*.xtr)|*.xtr"
-#: ../bin/custom.c:201
+#: ../bin/custom.c:194
#, c-format
msgid "%s Note Files (*.not)|*.not"
msgstr "%s-Notizen (*.not)|*.not"
-#: ../bin/custom.c:206
+#: ../bin/custom.c:198
#, c-format
msgid "%s Log Files (*.log)|*.log"
msgstr "%s-Protokolldateien (*.log)|*.log"
-#: ../bin/custom.c:211
+#: ../bin/custom.c:202
#, c-format
msgid "%s PartsList Files (*.txt)|*.txt"
msgstr "%s-Stücklisten (*.txt)|*.txt"
@@ -3784,35 +3779,35 @@ msgstr "Hochkant"
msgid "Flat"
msgstr "Flach"
-#: ../bin/dbench.c:66
+#: ../bin/dbench.c:67
msgid "Left-Down"
msgstr "Links unten"
-#: ../bin/dbench.c:67
+#: ../bin/dbench.c:68
msgid "Right-Down"
msgstr "Rechts unten"
-#: ../bin/dbench.c:68
+#: ../bin/dbench.c:69
msgid "Left-Up"
msgstr "Links oben"
-#: ../bin/dbench.c:69
+#: ../bin/dbench.c:70
msgid "Right-Up"
msgstr "Rechts oben"
-#: ../bin/dbench.c:70
+#: ../bin/dbench.c:71
msgid "Left-Inverted"
msgstr "Links umgekehrt"
-#: ../bin/dbench.c:71
+#: ../bin/dbench.c:72
msgid "Right-Inverted"
msgstr "Rechts umgekehrt"
-#: ../bin/dbench.c:76
+#: ../bin/dbench.c:78
msgid "Inverted"
msgstr "Umgekehrt"
-#: ../bin/dbench.c:143
+#: ../bin/dbench.c:147
#, c-format
msgid ""
"Bad BenchType for %s:\n"
@@ -3821,98 +3816,98 @@ msgstr ""
"Falscher Trägertyp %s:\n"
"%s"
-#: ../bin/dbitmap.c:149
+#: ../bin/dbitmap.c:150
msgid "Drawing tracks to bitmap"
msgstr "Gleisplan als Grafik ausgeben"
-#: ../bin/dbitmap.c:186
+#: ../bin/dbitmap.c:187
msgid "Drawn with "
msgstr "Gezeichnet mit "
-#: ../bin/dbitmap.c:228
+#: ../bin/dbitmap.c:229
msgid "Writing bitmap to file"
msgstr "Grafik in Datei speichern"
-#: ../bin/dbitmap.c:251
+#: ../bin/dbitmap.c:252
msgid "Layout Titles"
msgstr "Gleisplantitel"
-#: ../bin/dbitmap.c:252
+#: ../bin/dbitmap.c:253
msgid "Borders"
msgstr "Rahmen"
-#: ../bin/dbitmap.c:253
+#: ../bin/dbitmap.c:254
msgid "Centerline of Track"
msgstr "Mittellinie des Gleises"
-#: ../bin/dbitmap.c:254
+#: ../bin/dbitmap.c:255
msgid "Background Image"
msgstr "Hintergrundbild"
-#: ../bin/dbitmap.c:261
+#: ../bin/dbitmap.c:262
msgid "Include "
-msgstr "Einfügen"
+msgstr "Einfügen "
-#: ../bin/dbitmap.c:263
+#: ../bin/dbitmap.c:264
msgid "Resolution "
-msgstr "Auflösung"
+msgstr "Auflösung "
-#: ../bin/dbitmap.c:264
+#: ../bin/dbitmap.c:265
msgid "dpi"
msgstr "Punkte pro Zoll"
-#: ../bin/dbitmap.c:265
+#: ../bin/dbitmap.c:266
msgid "Bitmap Size "
-msgstr "Bitmap-Größe"
+msgstr "Bitmap-Größe "
-#: ../bin/dbitmap.c:267
+#: ../bin/dbitmap.c:268
msgid "99999 by 99999 pixels"
msgstr "99999 auf 99999 Bildpunkte"
-#: ../bin/dbitmap.c:268
+#: ../bin/dbitmap.c:269
msgid "Approximate File Size "
-msgstr "Ungefähre Dateigröße"
+msgstr "Ungefähre Dateigröße "
-#: ../bin/dbitmap.c:270
+#: ../bin/dbitmap.c:271
msgid "999.9Mb"
msgstr "999,9Mb"
-#: ../bin/dbitmap.c:316
+#: ../bin/dbitmap.c:317
#, c-format
msgid "%ld by %ld pixels"
msgstr "%ld auf %ld Pixel"
-#: ../bin/dbitmap.c:338
+#: ../bin/dbitmap.c:339
#, c-format
msgid "%0.0f"
msgstr "%0.0f"
-#: ../bin/dbitmap.c:340
+#: ../bin/dbitmap.c:341
#, c-format
msgid "%0.1fKb"
msgstr "%0.1fKb"
-#: ../bin/dbitmap.c:342
+#: ../bin/dbitmap.c:343
#, c-format
msgid "%0.1fMb"
msgstr "%0.1fMb"
-#: ../bin/dbitmap.c:344
+#: ../bin/dbitmap.c:345
#, c-format
msgid "%0.1fGb"
msgstr "%0.1fGb"
-#: ../bin/dbitmap.c:435
+#: ../bin/dbitmap.c:436
msgid "Save Bitmap"
msgstr "Grafik speichern"
-#: ../bin/dbitmap.c:436
+#: ../bin/dbitmap.c:437
msgid ""
"Portable Network Graphics format (*.png)|*.png|JPEG format (*.jpg)|*.jpg"
msgstr ""
-"Portables Netzwerkgrafikformat (*.png)|*.png|JPEG grafikformat (*.jpg)|*.jpg"
+"Portables Netzwerkgrafikformat (*.png)|*.png|JPEG Grafikformat (*.jpg)|*.jpg"
-#: ../bin/dbitmap.c:471
+#: ../bin/dbitmap.c:472
msgid "Export to bitmap"
msgstr "Als Bitmap exportieren"
@@ -3924,538 +3919,546 @@ msgstr "Drehgestell"
msgid "Body"
msgstr "Aufbau"
-#: ../bin/dcar.c:147 ../bin/dcar.c:2694 ../bin/dcar.c:2698
+#: ../bin/dcar.c:148 ../bin/dcar.c:2860 ../bin/dcar.c:2867
msgid "Unknown"
msgstr "Unbekannt"
-#: ../bin/dcar.c:469
+#: ../bin/dcar.c:481
msgid "Diesel Loco"
msgstr "Diesellok"
-#: ../bin/dcar.c:470
+#: ../bin/dcar.c:482
msgid "Steam Loco"
msgstr "Dampflok"
-#: ../bin/dcar.c:471
+#: ../bin/dcar.c:483
msgid "Elect Loco"
msgstr "Elektrolok"
-#: ../bin/dcar.c:472
+#: ../bin/dcar.c:484
msgid "Freight Car"
msgstr "Güterwagen"
-#: ../bin/dcar.c:473
+#: ../bin/dcar.c:485
msgid "Psngr Car"
msgstr "Personenwagen"
-#: ../bin/dcar.c:474
+#: ../bin/dcar.c:486
msgid "M-O-W"
msgstr "Arbeitswagen"
-#: ../bin/dcar.c:475
+#: ../bin/dcar.c:487
msgid "Other"
msgstr "Sonstige"
-#: ../bin/dcar.c:1173 ../bin/dcar.c:5081
+#: ../bin/dcar.c:1237 ../bin/dcar.c:5478
msgid "N/A"
msgstr "Keine Angabe"
-#: ../bin/dcar.c:1174 ../bin/dcar.c:5086
+#: ../bin/dcar.c:1238 ../bin/dcar.c:5483
msgid "Mint"
msgstr "Neuwertig"
-#: ../bin/dcar.c:1175 ../bin/dcar.c:5085
+#: ../bin/dcar.c:1239 ../bin/dcar.c:5482
msgid "Excellent"
msgstr "Exzellent"
-#: ../bin/dcar.c:1176 ../bin/dcar.c:5084
+#: ../bin/dcar.c:1240 ../bin/dcar.c:5481
msgid "Good"
msgstr "Gut"
-#: ../bin/dcar.c:1177 ../bin/dcar.c:5083
+#: ../bin/dcar.c:1241 ../bin/dcar.c:5480
msgid "Fair"
msgstr "In Ordnung"
-#: ../bin/dcar.c:1178 ../bin/dcar.c:5082
+#: ../bin/dcar.c:1242 ../bin/dcar.c:5479
msgid "Poor"
msgstr "Schlecht"
-#: ../bin/dcar.c:1492 ../bin/dpricels.c:42
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:486
+#: ../bin/dcar.c:1580 ../bin/dpricels.c:42
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:518
msgid "Item"
msgstr "Gegenstand"
-#: ../bin/dcar.c:2164 ../wlib/gtklib/notice.c:96 ../wlib/mswlib/mswmisc.c:2129
+#: ../bin/dcar.c:2282 ../wlib/mswlib/mswmisc.c:2057
msgid "Information"
msgstr "Information"
-#: ../bin/dcar.c:2164
+#: ../bin/dcar.c:2282
msgid "Customize"
msgstr "Anpassen"
-#: ../bin/dcar.c:2177
+#: ../bin/dcar.c:2296
msgid "Sequential"
msgstr "Aufsteigend"
-#: ../bin/dcar.c:2177
+#: ../bin/dcar.c:2296
msgid "Repeated"
msgstr "Wiederholend"
-#: ../bin/dcar.c:2188 ../bin/dcar.c:2190 ../bin/dcar.c:5411
+#: ../bin/dcar.c:2307 ../bin/dcar.c:2309 ../bin/dcar.c:5838
msgid "Prototype"
msgstr "Vorbild"
-#: ../bin/dcar.c:2196
+#: ../bin/dcar.c:2315
msgid "Part"
msgstr "Teil"
-#: ../bin/dcar.c:2198 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:408
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:618
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:619
+#: ../bin/dcar.c:2317 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:419
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:659
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:660
msgid "Part Number"
msgstr "Bestellnummer"
-#: ../bin/dcar.c:2200
+#: ../bin/dcar.c:2319
msgid "Loco?"
msgstr "Lok?"
-#: ../bin/dcar.c:2204 ../bin/dcar.c:4411
+#: ../bin/dcar.c:2323 ../bin/dcar.c:4734
msgid "Import"
msgstr "Import"
-#: ../bin/dcar.c:2211
+#: ../bin/dcar.c:2330
msgid "Mode"
msgstr "Modus"
-#: ../bin/dcar.c:2215
+#: ../bin/dcar.c:2334
msgid "Road"
msgstr "Gesellschaft"
-#: ../bin/dcar.c:2217
+#: ../bin/dcar.c:2336
msgid "Reporting Mark"
msgstr "Wagennummer"
-#: ../bin/dcar.c:2219
+#: ../bin/dcar.c:2338
msgid "Number"
msgstr "Nummer"
-#: ../bin/dcar.c:2223
+#: ../bin/dcar.c:2342
msgid "Car Length"
msgstr "Wagenlänge"
-#: ../bin/dcar.c:2227
+#: ../bin/dcar.c:2346
msgid "Truck Centers"
msgstr "Drehgestellabstand"
-#: ../bin/dcar.c:2231
+#: ../bin/dcar.c:2350
msgid "Coupler Mount"
msgstr "Kupplungsbefestigung"
-#: ../bin/dcar.c:2233
+#: ../bin/dcar.c:2352
msgid "Coupled Length"
msgstr "Gekuppelte Länge"
-#: ../bin/dcar.c:2235 ../bin/dcar.c:4256
+#: ../bin/dcar.c:2354 ../bin/dcar.c:4564
msgid "Coupler Length"
msgstr "Kupplungslänge"
-#: ../bin/dcar.c:2243
+#: ../bin/dcar.c:2362
msgid "Purchase Price"
msgstr "Kaufpreis"
-#: ../bin/dcar.c:2245 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:264
+#: ../bin/dcar.c:2364 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:266
msgid "Current Price"
msgstr "Aktueller Preis"
-#: ../bin/dcar.c:2247 ../bin/dcar.c:4375 ../bin/dcar.c:4380
+#: ../bin/dcar.c:2366 ../bin/dcar.c:4696 ../bin/dcar.c:4702
msgid "Condition"
msgstr "Zustand"
-#: ../bin/dcar.c:2249
+#: ../bin/dcar.c:2368
msgid "Purchase Date"
msgstr "Kaufdatum"
-#: ../bin/dcar.c:2251 ../bin/dcar.c:4380
+#: ../bin/dcar.c:2370 ../bin/dcar.c:4702
msgid "Service Date"
msgstr "Servicedatum"
-#: ../bin/dcar.c:2253
+#: ../bin/dcar.c:2372
msgid "Quantity"
msgstr "Anzahl"
-#: ../bin/dcar.c:2255
+#: ../bin/dcar.c:2374
msgid "Numbers"
msgstr "Nummern"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:487
-#: ../bin/dcar.c:2257 ../bin/dcar.c:4376 ../bin/trknote.c:709
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1267
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:487
+#: ../bin/dcar.c:2376 ../bin/dcar.c:4697 ../bin/trknote.c:590
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1286
msgid "Notes"
msgstr "Notizen"
-#: ../bin/dcar.c:2264
+#: ../bin/dcar.c:2383
msgid "Car Part"
msgstr "Wagenvorlage"
-#: ../bin/dcar.c:2265 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:238
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:239
+#: ../bin/dcar.c:2384 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:240
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:241
msgid "Car Prototype"
msgstr "Wagenvorbild"
-#: ../bin/dcar.c:2628 ../bin/dcar.c:2945
+#: ../bin/dcar.c:2776 ../bin/dcar.c:3143
msgid "Undecorated"
msgstr "Unbeschriftet"
-#: ../bin/dcar.c:2686 ../bin/dcar.c:2690 ../bin/paramfilelist.c:390
+#: ../bin/dcar.c:2849 ../bin/dcar.c:2855 ../bin/paramfilelist.c:458
msgid "Custom"
msgstr "Individual"
-#: ../bin/dcar.c:2855
+#: ../bin/dcar.c:3049
msgid "Undecorated "
msgstr "Unbeschriftet "
-#: ../bin/dcar.c:3077
+#: ../bin/dcar.c:3298
#, c-format
msgid "New %s Scale Car"
msgstr "Neuer Wagen in %s"
-#: ../bin/dcar.c:3078 ../bin/dcar.c:3087 ../bin/dcar.c:3096 ../bin/dcar.c:4289
-#: ../bin/dcar.c:4407 ../bin/paramfilesearch_ui.c:76
+#: ../bin/dcar.c:3299 ../bin/dcar.c:3308 ../bin/dcar.c:3318 ../bin/dcar.c:4598
+#: ../bin/dcar.c:4730 ../bin/paramfilesearch_ui.c:75
msgid "Add"
msgstr "Hinzufügen"
-#: ../bin/dcar.c:3080
+#: ../bin/dcar.c:3301
#, c-format
msgid "Update %s Scale Car"
msgstr "Aktualisiere Wagen in Maßstab %s"
-#: ../bin/dcar.c:3081 ../bin/dcar.c:3090 ../bin/dcar.c:3099
-#: ../bin/dcmpnd.c:168
+#: ../bin/dcar.c:3302 ../bin/dcar.c:3312 ../bin/dcar.c:3321 ../bin/dcmpnd.c:178
msgid "Update"
msgstr "Aktualisieren"
-#: ../bin/dcar.c:3086
+#: ../bin/dcar.c:3307
#, c-format
msgid "New %s Scale Car Part"
msgstr "Neue Wagenvorlage in %s"
-#: ../bin/dcar.c:3089
+#: ../bin/dcar.c:3310
#, c-format
msgid "Update %s Scale Car Part"
msgstr "Wagenvorlage in %s aktualisieren"
-#: ../bin/dcar.c:3095
+#: ../bin/dcar.c:3317
msgid "New Prototype"
msgstr "Neues Vorbild"
-#: ../bin/dcar.c:3098
+#: ../bin/dcar.c:3320
msgid "Update Prototype"
msgstr "Aktualisiere Vorbild"
-#: ../bin/dcar.c:3739
+#: ../bin/dcar.c:4009
msgid "Truck Center Offset plus Truck Centers must be less than Car Length"
msgstr ""
"Abstand der Drehgestelle vom Ende und deren Abstand muss kleiner als die "
"Wagenlänge sein"
-#: ../bin/dcar.c:3796 ../bin/dcar.c:3800
+#: ../bin/dcar.c:4070 ../bin/dcar.c:4074
msgid "Enter a 8 digit numeric date (yyyymmdd)"
msgstr "Geben Sie das Datum in 8-stelligem numerischen Format ein (jjjjmmdd)"
-#: ../bin/dcar.c:3803
+#: ../bin/dcar.c:4077
msgid "Enter a date between 19000101 and 21991231"
msgstr "Geben Sie ein Datum zwischen 19000101 und 21991231 ein"
-#: ../bin/dcar.c:3809
+#: ../bin/dcar.c:4083
msgid "Invalid month"
msgstr "Ungültiger Monat"
-#: ../bin/dcar.c:3812
+#: ../bin/dcar.c:4086
msgid "Invalid day"
msgstr "Ungültiger Kalendertag"
-#: ../bin/dcar.c:3907
+#: ../bin/dcar.c:4184
msgid "Select or Enter a Manufacturer"
msgstr "Hersteller auswählen oder eingeben"
-#: ../bin/dcar.c:3910
+#: ../bin/dcar.c:4188
#, c-format
msgid "Item Index %ld duplicated an existing item: updated to new value"
msgstr "Kennnummer %ld existiert bereits: mit neuem Wert aktualisiert"
-#: ../bin/dcar.c:4115
+#: ../bin/dcar.c:4410
#, c-format
msgid "Added %ld new Cars"
msgstr "%ld neue Wagen hinzugefügt"
-#: ../bin/dcar.c:4117
+#: ../bin/dcar.c:4412
msgid "Added new Car"
msgstr "Neuen Wagen hinzugefügt"
-#: ../bin/dcar.c:4120
+#: ../bin/dcar.c:4415
msgid "Updated Car"
msgstr "Wagen aktualisiert"
-#: ../bin/dcar.c:4123
+#: ../bin/dcar.c:4418
msgid " and Part"
msgstr " und Teil"
-#: ../bin/dcar.c:4150
+#: ../bin/dcar.c:4450
#, c-format
msgid "%s Part: %s %s %s %s %s %s"
msgstr "%s Teil: %s %s %s %s %s %s"
-#: ../bin/dcar.c:4150 ../bin/dcar.c:4167
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
msgid "Added new"
msgstr "Neu hinzugefügt"
-#: ../bin/dcar.c:4150 ../bin/dcar.c:4167
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
msgid "Updated"
msgstr "Aktualisiert"
-#: ../bin/dcar.c:4166
+#: ../bin/dcar.c:4472
#, c-format
msgid "%s Prototype: %s%s."
msgstr "%s Vorbild: %s%s."
-#: ../bin/dcar.c:4168
+#: ../bin/dcar.c:4474
msgid ". Enter new values or press Close"
msgstr ". Neue Werte eingeben oder Abbruch drücken"
-#: ../bin/dcar.c:4289
+#: ../bin/dcar.c:4598
msgid "New Car Part"
msgstr "Neues Wagenmuster"
-#: ../bin/dcar.c:4374 ../bin/dcar.c:4379
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:456
+#: ../bin/dcar.c:4694 ../bin/dcar.c:4700 ../bin/dcustmgm.c:46
+#: ../bin/dlayer.c:562 ../bin/layout.c:663 ../bin/scale.c:845
+msgid "Scale"
+msgstr "Maßstab"
+
+#: ../bin/dcar.c:4695 ../bin/dcar.c:4701
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:488
msgid "Roadname"
msgstr "Gesellschaft"
-#: ../bin/dcar.c:4374
+#: ../bin/dcar.c:4695
+msgid "Rep Marks"
+msgstr "Wagennummer"
+
+#: ../bin/dcar.c:4695
msgid "Purc Price"
msgstr "Kaufpreis"
-#: ../bin/dcar.c:4375 ../bin/dcar.c:4380
+#: ../bin/dcar.c:4696 ../bin/dcar.c:4702
msgid "Curr Price"
msgstr "Akt. Preis"
-#: ../bin/dcar.c:4375
+#: ../bin/dcar.c:4696
msgid "Purc Date"
-msgstr "Kaufdaum"
+msgstr "Kaufdatum"
-#: ../bin/dcar.c:4375
+#: ../bin/dcar.c:4696
msgid "Srvc Date"
msgstr "Servicedatum"
-#: ../bin/dcar.c:4376
+#: ../bin/dcar.c:4697
msgid "Locat'n"
msgstr "Ort"
-#: ../bin/dcar.c:4379
+#: ../bin/dcar.c:4701
msgid "RepMarks"
msgstr "Wagennummer"
-#: ../bin/dcar.c:4379
+#: ../bin/dcar.c:4701
msgid "Purch Price"
msgstr "Kaufpreis"
-#: ../bin/dcar.c:4380
+#: ../bin/dcar.c:4702
msgid "Purch Date"
msgstr "Kaufdatum"
-#: ../bin/dcar.c:4397
+#: ../bin/dcar.c:4720
msgid "Sort By"
msgstr "Sortierung"
-#: ../bin/dcar.c:4405 ../bin/dcontmgm.c:87 ../bin/dcustmgm.c:56
-#: ../bin/dcustmgm.c:93
+#: ../bin/dcar.c:4728 ../bin/dcustmgm.c:58 ../bin/dcustmgm.c:98
+#: ../bin/dcontmgm.c:88
msgid "Edit"
msgstr "Bearbeiten"
-#: ../bin/dcar.c:4409 ../bin/dcontmgm.c:89 ../bin/dcustmgm.c:58
-#: ../bin/misc.c:2497
+#: ../bin/dcar.c:4732 ../bin/dcar.c:5654 ../bin/dcustmgm.c:60
+#: ../bin/dcontmgm.c:90 ../bin/menu.c:924
msgid "Delete"
msgstr "Löschen"
-#: ../bin/dcar.c:4413 ../bin/fileio.c:1490
+#: ../bin/dcar.c:4736 ../bin/fileio.c:1629
msgid "Export"
msgstr "Export"
-#: ../bin/dcar.c:4415 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:635
+#: ../bin/dcar.c:4738 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:676
msgid "List"
msgstr "Auflisten"
-#: ../bin/dcar.c:4525 ../bin/dcar.c:5260 ../bin/misc.c:2896
+#: ../bin/dcar.c:4894 ../bin/dcar.c:5686 ../bin/menu.c:1349
msgid "Car Inventory"
msgstr "Wagenverzeichnis"
-#: ../bin/dcar.c:4645
+#: ../bin/dcar.c:5026
msgid "List Cars"
msgstr "Wagen auflisten"
-#: ../bin/dcar.c:4768 ../bin/dcar.c:4933
+#: ../bin/dcar.c:5150 ../bin/dcar.c:5322
msgid "Import Cars"
msgstr "Wagen importieren"
-#: ../bin/dcar.c:4934 ../bin/dcar.c:5056
+#: ../bin/dcar.c:5323 ../bin/dcar.c:5453
msgid "Comma-Separated-Values (*.csv)|*.csv"
msgstr "Durch-Kommata getrennte Werte(*.csv)|*.csv"
-#: ../bin/dcar.c:5003 ../bin/dcar.c:5055
+#: ../bin/dcar.c:5395 ../bin/dcar.c:5452
msgid "Export Cars"
msgstr "Wagen exportieren"
-#: ../bin/dcar.c:5089
-msgid "Layout"
-msgstr "Anlage"
-
-#: ../bin/dcar.c:5091
+#: ../bin/dcar.c:5494
msgid "Shelf"
msgstr "Regal"
-#: ../bin/dcmpnd.c:72 ../bin/dlayer.c:600 ../bin/misc.c:695 ../bin/misc.c:727
+#: ../bin/dcar.c:5653
+msgid "Shelve"
+msgstr "Regal"
+
+#: ../bin/dcmpnd.c:73 ../bin/dlayer.c:591 ../bin/menu.c:295 ../bin/menu.c:329
msgid "Load"
msgstr "Laden"
-#: ../bin/dcmpnd.c:105
+#: ../bin/dcmpnd.c:111
msgid "Updating definitions, please wait"
msgstr "Bitte warten, Definitionen werden aktualisiert"
-#: ../bin/dcmpnd.c:168
+#: ../bin/dcmpnd.c:178
msgid "Update Title"
msgstr "Ãœberschrift aktualisieren"
-#: ../bin/dcmpnd.c:228
+#: ../bin/dcmpnd.c:244
#, c-format
msgid "End-Point #%d of the selected and actual turnouts are not close"
msgstr ""
"Endpunkte #%d der ausgewählten und der aktuellen Weiche sind nicht "
"beieinander"
-#: ../bin/dcmpnd.c:237
+#: ../bin/dcmpnd.c:255
#, c-format
msgid "End-Point #%d of the selected and actual turnouts are not aligned"
msgstr ""
"Endpunkte #%d der ausgewählten und der aktuellen Weiche sind nicht "
"ausgerichtet"
-#: ../bin/dcmpnd.c:255
+#: ../bin/dcmpnd.c:274
msgid "The selected Turnout had a differing number of End-Points"
msgstr "Die ausgewählte Weiche hatte eine andere Anzahl von Endpunkten"
-#: ../bin/dcmpnd.c:320
+#: ../bin/dcmpnd.c:341
msgid "Skip"
msgstr "Ãœberspringen"
-#: ../bin/dcmpnd.c:352
+#: ../bin/dcmpnd.c:374
#, c-format
msgid "%d Track(s) refreshed"
msgstr "%d Gleise bearbeitet"
-#: ../bin/dcmpnd.c:392
+#: ../bin/dcmpnd.c:420
msgid "Refresh Turnout/Structure"
msgstr "Weichen/Gebäude neu laden"
-#: ../bin/dcmpnd.c:394
+#: ../bin/dcmpnd.c:424
msgid "Choose a Turnout/Structure to replace:"
msgstr "Zu ersetzende Weiche / Gebäude auswählen:"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:457
-#: ../bin/dcmpnd.c:404 ../bin/doption.c:92
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1207
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:457
+#: ../bin/dcmpnd.c:437 ../bin/doption.c:89
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1226
msgid "Turnouts"
msgstr "Weichen"
-#: ../bin/dcmpnd.c:404
+#: ../bin/dcmpnd.c:437
msgid "Structures"
msgstr "Gebäude"
-#: ../bin/dcmpnd.c:433
+#: ../bin/dcmpnd.c:468
msgid "Choose another Turnout/Structure to replace:"
msgstr "Eine andere zu ersetzende Weiche / zu ersetzendes Gebäude auswählen:"
-#: ../bin/dcmpnd.c:536
+#: ../bin/dcmpnd.c:583
msgid "Rename Object"
msgstr "Objekt umbenennen"
-#: ../bin/dcontmgm.c:80
-msgid "Tracks"
-msgstr "Gleise"
-
-#: ../bin/dcontmgm.c:161
-#, c-format
-msgid "Are you sure you want to delete the %d control element(s)"
-msgstr "Sind Sie sicher, dass Sie diese %d Steuerungselemente löschen wollen?"
-
-#: ../bin/dcontmgm.c:164
-msgid "Control Elements"
-msgstr "Steuerungselemente"
-
-#: ../bin/dcontmgm.c:287
-msgid "Manage Layout Control Elements"
-msgstr "Steuerungselemente verwalten"
-
-#: ../bin/dcustmgm.c:52
+#: ../bin/dcustmgm.c:54
msgid "Create a new "
msgstr "Erstelle neue(n) "
-#: ../bin/dcustmgm.c:54
+#: ../bin/dcustmgm.c:56
msgid "Go"
msgstr "Los"
-#: ../bin/dcustmgm.c:60
+#: ../bin/dcustmgm.c:62
msgid "Move To"
msgstr "Verschieben nach"
-#: ../bin/dcustmgm.c:93
+#: ../bin/dcustmgm.c:98
msgid "Rename"
msgstr "Umbenennen"
-#: ../bin/dcustmgm.c:174
+#: ../bin/dcustmgm.c:186
msgid "Label"
msgstr "Beschriftung"
-#: ../bin/dcustmgm.c:211
+#: ../bin/dcustmgm.c:225
msgid "Contents Label"
msgstr "Inhaltsbeschriftung"
-#: ../bin/dcustmgm.c:267
+#: ../bin/dcustmgm.c:284
msgid "Move To XTP"
-msgstr "\"In Paramterdatei verschieben"
+msgstr "\"In Parameterdatei verschieben"
-#: ../bin/dcustmgm.c:268
+#: ../bin/dcustmgm.c:285
msgid "Parameter File (*.xtp)|*.xtp"
msgstr "Parameterdateien (*.xtp)|*.xtp"
-#: ../bin/dcustmgm.c:378
+#: ../bin/dcustmgm.c:407
msgid "Manage custom designed parts"
msgstr "Eigene Teile verwalten"
-#: ../bin/dease.c:64
+#: ../bin/dcontmgm.c:80
+msgid "Tracks"
+msgstr "Gleise"
+
+#: ../bin/dcontmgm.c:167
+#, c-format
+msgid "Are you sure you want to delete the %d control element(s)"
+msgstr "Sind Sie sicher, dass Sie diese %d Steuerungselemente löschen wollen?"
+
+#: ../bin/dcontmgm.c:172
+msgid "Control Elements"
+msgstr "Steuerungselemente"
+
+#: ../bin/dcontmgm.c:308
+msgid "Manage Layout Control Elements"
+msgstr "Steuerungselemente verwalten"
+
+#: ../bin/dease.c:68
msgid "Sharp"
msgstr "Eng"
-#: ../bin/dease.c:64
+#: ../bin/dease.c:68
msgid "Broad"
msgstr "Weit"
-#: ../bin/dease.c:64
+#: ../bin/dease.c:68
msgid "Cornu"
msgstr "Cornu"
-#: ../bin/dease.c:72
+#: ../bin/dease.c:76
msgid "Value"
msgstr "Wert"
-#: ../bin/dease.c:73 ../bin/tease.c:515
+#: ../bin/dease.c:77 ../bin/tease.c:530
msgid "R"
msgstr "R"
-#: ../bin/dease.c:75 ../bin/tease.c:516
+#: ../bin/dease.c:79 ../bin/tease.c:531
msgid "L"
msgstr "L"
-#: ../bin/dease.c:240
+#: ../bin/dease.c:250
msgid "Easement"
msgstr "Ãœbergangsbogen"
@@ -4463,7 +4466,7 @@ msgstr "Ãœbergangsbogen"
msgid "Prices"
msgstr "Preise"
-#: ../bin/denum.c:45 ../bin/denum.c:138
+#: ../bin/denum.c:45 ../bin/denum.c:139
msgid "Indexes"
msgstr "Verzeichnisse"
@@ -4471,15 +4474,15 @@ msgstr "Verzeichnisse"
msgid "Save As ..."
msgstr "Speichern unter..."
-#: ../bin/denum.c:134 ../bin/denum.c:191 ../bin/denum.c:226
+#: ../bin/denum.c:135 ../bin/denum.c:198 ../bin/denum.c:236
msgid "Each"
msgstr "Je"
-#: ../bin/denum.c:150 ../bin/denum.c:151
+#: ../bin/denum.c:152 ../bin/denum.c:154
msgid "Parts List"
msgstr "Teileliste"
-#: ../bin/denum.c:156
+#: ../bin/denum.c:160
#, c-format
msgid ""
"%s Parts List\n"
@@ -4488,250 +4491,298 @@ msgstr ""
"%s Teileliste\n"
"\n"
-#: ../bin/denum.c:191 ../bin/denum.c:228 ../bin/denum.c:237
+#: ../bin/denum.c:199 ../bin/denum.c:238 ../bin/denum.c:248
msgid "Extended"
msgstr "Erweitert"
-#: ../bin/denum.c:237 ../bin/denum.c:240
+#: ../bin/denum.c:247 ../bin/denum.c:251
msgid "Total"
msgstr "Summe"
-#: ../bin/dlayer.c:576
+#: ../bin/dlayer.c:542
msgid "Select Layer:"
msgstr "Ebene auswählen:"
-#: ../bin/dlayer.c:582
+#: ../bin/dlayer.c:548
msgid "Use Color"
msgstr "Farbe benutzen"
-#: ../bin/dlayer.c:584
+#: ../bin/dlayer.c:550
msgid "Visible"
msgstr "Sichtbar"
-#: ../bin/dlayer.c:586
+#: ../bin/dlayer.c:552
msgid "Frozen"
msgstr "Fixiert"
-#: ../bin/dlayer.c:588
+#: ../bin/dlayer.c:554
msgid "On Map"
msgstr "Auf der Karte"
-#: ../bin/dlayer.c:590
+#: ../bin/dlayer.c:556
msgid "Module"
msgstr "Modul"
-#: ../bin/dlayer.c:592
+#: ../bin/dlayer.c:558
msgid "No Button"
-msgstr "Kein Knopf"
+msgstr "Keine Schaltfläche"
+
+#: ../bin/dlayer.c:560
+msgid "Inherit"
+msgstr "Erben"
+
+#: ../bin/dlayer.c:564 ../bin/layout.c:665
+msgid " Gauge"
+msgstr " Spurweite"
+
+#: ../bin/dlayer.c:566 ../bin/layout.c:667
+msgid "Min Track Radius"
+msgstr "Mindestgleisradius"
+
+#: ../bin/dlayer.c:568 ../bin/layout.c:668
+msgid " Max Track Grade (%)"
+msgstr " Maximale Gleissteigung (%)"
+
+#: ../bin/dlayer.c:570
+msgid "Tie Length"
+msgstr "Schwellenlänge"
+
+#: ../bin/dlayer.c:572
+msgid " Width"
+msgstr " Breite"
+
+#: ../bin/dlayer.c:574
+msgid " Spacing"
+msgstr " Abstand"
-#: ../bin/dlayer.c:594
+#: ../bin/dlayer.c:576
+msgid "Layer Actions"
+msgstr "Ebenenaktionen"
+
+#: ../bin/dlayer.c:578
+msgid "Add Layer"
+msgstr "Ebene erstellen"
+
+#: ../bin/dlayer.c:580
+msgid "Delete Layer"
+msgstr "Ebene löschen"
+
+#: ../bin/dlayer.c:582
+msgid "Default Values"
+msgstr "Standardwerte"
+
+#: ../bin/dlayer.c:583
+msgid "Number of Layer Buttons"
+msgstr "Anzahl der Schaltflächen für Ebenen"
+
+#: ../bin/dlayer.c:585
msgid "Linked Layers"
msgstr "Verknüpfte Ebenen"
-#: ../bin/dlayer.c:596
+#: ../bin/dlayer.c:587
msgid "Settings when Current"
msgstr "Einstellungen wenn aktiv"
-#: ../bin/dlayer.c:598
+#: ../bin/dlayer.c:589
msgid "Object Count:"
-msgstr "Anzahl der Objekte"
+msgstr "Anzahl der Objekte:"
-#: ../bin/dlayer.c:599
+#: ../bin/dlayer.c:590
msgid "All Layer Preferences"
msgstr "Einstellungen für alle Ebenen"
-#: ../bin/dlayer.c:601 ../bin/macro.c:1404
+#: ../bin/dlayer.c:592 ../bin/macro.c:1432
msgid "Save"
msgstr "Speichern"
-#: ../bin/dlayer.c:602
+#: ../bin/dlayer.c:593
msgid "Defaults"
msgstr "Standardwerte"
-#: ../bin/dlayer.c:603
-msgid "Number of Layer Buttons"
-msgstr "Anzahl der Ebenenknöpfe"
-
-#: ../bin/dlayer.c:711 ../bin/dlayer.c:1286 ../bin/dlayer.c:1303
-#: ../bin/dlayer.c:1374
+#: ../bin/dlayer.c:711 ../bin/dlayer.c:1564 ../bin/dlayer.c:1582
+#: ../bin/dlayer.c:1652
msgid "Main"
msgstr "Haupt"
-#: ../bin/dlayer.c:842 ../bin/dlayer.c:1203 ../bin/dlayer.c:1306
-#: ../bin/dlayer.c:1376 ../bin/dlayer.c:1778
+#: ../bin/dlayer.c:843
+msgid "Layer must not have any objects in it."
+msgstr "Die Ebene darf keine Objekte enthalten."
+
+#: ../bin/dlayer.c:1008 ../bin/dlayer.c:1453 ../bin/dlayer.c:1585
+#: ../bin/dlayer.c:1654
msgid "Show/Hide Layer"
msgstr "Ebene anzeigen/verbergen"
-#: ../bin/dlayer.c:1546
+#: ../bin/dlayer.c:2072
msgid "Layers"
msgstr "Ebenen"
-#: ../bin/dlayer.c:1765 ../bin/misc.c:2465
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:17
+#: ../bin/dlayer.c:2335 ../bin/menu.c:892
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:17
msgid "Show/Hide Background"
msgstr "Hintergrund zeigen"
-#: ../bin/doption.c:90
+#: ../bin/doption.c:87
msgid "Auto Pan"
msgstr "Automatischer Ausschnitt"
-#: ../bin/doption.c:92
+#: ../bin/doption.c:89
msgid "All"
msgstr "Alle"
-#: ../bin/doption.c:93
+#: ../bin/doption.c:90
msgid "Thick"
msgstr "Dick"
-#: ../bin/doption.c:93
+#: ../bin/doption.c:90
msgid "Exception"
msgstr "Ausnahmegleis"
-#: ../bin/doption.c:94
+#: ../bin/doption.c:91
msgid "Outline"
msgstr "Umriss"
-#: ../bin/doption.c:95
+#: ../bin/doption.c:92
msgid "Off"
msgstr "Aus"
-#: ../bin/doption.c:95
+#: ../bin/doption.c:92
msgid "On"
msgstr "An"
-#: ../bin/doption.c:96
+#: ../bin/doption.c:93
msgid "Track Descriptions"
msgstr "Gleisbeschreibungen"
-#: ../bin/doption.c:96
+#: ../bin/doption.c:93
msgid "Lengths"
msgstr "Längen"
-#: ../bin/doption.c:96
+#: ../bin/doption.c:93
msgid "EndPt Elevations"
-msgstr "Endpunkthöhen"
+msgstr "Endpunkt höher"
-#: ../bin/doption.c:96
+#: ../bin/doption.c:93
msgid "Track Elevations"
msgstr "Gleishöhen"
-#: ../bin/doption.c:96
+#: ../bin/doption.c:93
msgid "Cars"
msgstr "Wagen"
-#: ../bin/doption.c:97 ../bin/doption.c:98
+#: ../bin/doption.c:94 ../bin/doption.c:95
msgid "Descr"
msgstr "Beschreibung"
-#: ../bin/doption.c:98
+#: ../bin/doption.c:95
msgid "Manuf"
msgstr "Hersteller"
-#: ../bin/doption.c:99 ../bin/doption.c:100
+#: ../bin/doption.c:96 ../bin/doption.c:97
msgid "Object"
msgstr "Objekt"
-#: ../bin/doption.c:101
+#: ../bin/doption.c:98
msgid "Live Map"
msgstr "Dynamische Karte"
-#: ../bin/doption.c:102
+#: ../bin/doption.c:99
msgid "Hide Trains On Hidden Track"
msgstr "Verberge Züge auf verborgenem Gleis"
-#: ../bin/doption.c:103
+#: ../bin/doption.c:100
msgid "Constrain Drawing Area to Room boundaries"
msgstr "Den Zeichenbereich auf die Raumgröße beschränken"
-#: ../bin/doption.c:104
+#: ../bin/doption.c:101
msgid "Don't Hide System Cursor when program cursor is active"
msgstr "Systemcursor nicht verbergen, wenn der Anwendungscursor aktiv ist"
-#: ../bin/doption.c:111
+#: ../bin/doption.c:105
msgid "Color Track"
msgstr "Farbiges Gleis"
-#: ../bin/doption.c:112
+#: ../bin/doption.c:106
msgid "Color Draw"
msgstr "Farbige Objekte"
-#: ../bin/doption.c:113
+#: ../bin/doption.c:107
msgid "Draw Tunnel"
msgstr "Zeichne Tunnel"
-#: ../bin/doption.c:114
+#: ../bin/doption.c:108
msgid "Draw EndPts"
msgstr "Zeichne Endpunkte"
-#: ../bin/doption.c:115
+#: ../bin/doption.c:109
msgid "Draw Unconnected EndPts"
msgstr "Zeichne offene Endpunkte"
-#: ../bin/doption.c:116
+#: ../bin/doption.c:110
msgid "Draw Ties"
msgstr "Schwellen zeichnen"
-#: ../bin/doption.c:117
+#: ../bin/doption.c:111
msgid "Draw Centers"
msgstr "Mittelpunkt zeichnen"
-#: ../bin/doption.c:118
+#: ../bin/doption.c:112
msgid "Two Rail Scale"
msgstr "Maßstab für Gleis"
-#: ../bin/doption.c:119
+#: ../bin/doption.c:113
msgid "Map Scale"
msgstr "Kartenmaßstab"
-#: ../bin/doption.c:125
+#: ../bin/doption.c:119
msgid "Label Enable"
msgstr "Beschriftungen zeigen"
-#: ../bin/doption.c:126
+#: ../bin/doption.c:120
msgid "Label Scale"
msgstr "Maßstab der Beschriftungen"
-#: ../bin/doption.c:127
+#: ../bin/doption.c:121
msgid "Label Font Size"
-msgstr "Grösse für Beschriftungen"
+msgstr "Größe für Beschriftungen"
-#: ../bin/doption.c:128
+#: ../bin/doption.c:122
msgid "Hot Bar Labels"
-msgstr "Teilekatalog Beschriftungen"
+msgstr "Schnellauswahl Beschriftungen"
-#: ../bin/doption.c:129
+#: ../bin/doption.c:123
msgid "Layout Labels"
msgstr "Anlagenbeschriftungen"
-#: ../bin/doption.c:130
+#: ../bin/doption.c:124
msgid "List Labels"
msgstr "Listenüberschriften"
-#: ../bin/doption.c:133
+#: ../bin/doption.c:127
msgid "Car Labels"
msgstr "Wagenbeschriftungen"
-#: ../bin/doption.c:134
+#: ../bin/doption.c:128
msgid "Train Update Delay"
msgstr "Aktualisierungsintervalle"
-#: ../bin/doption.c:176
+#: ../bin/doption.c:171
msgid "Turning off AutoSave"
msgstr "Automatisches Sichern aus"
-#: ../bin/doption.c:186
+#: ../bin/doption.c:182
msgid "Turning on CheckPointing"
msgstr "Sicherungskopien aktivieren"
-#: ../bin/doption.c:200
+#: ../bin/doption.c:196
msgid "Display Options"
msgstr "Anzeigeoptionen"
-#: ../bin/doption.c:201
+#: ../bin/doption.c:198
msgid "Proto"
msgstr "Vorbild"
-#: ../bin/doption.c:202
+#: ../bin/doption.c:200
msgid "Proto/Manuf"
msgstr "Vorbild/Hersteller"
@@ -4739,314 +4790,322 @@ msgstr "Vorbild/Hersteller"
msgid "Proto/Manuf/Part Number"
msgstr "Vorbild/Hersteller/Bestellnr."
-#: ../bin/doption.c:204
+#: ../bin/doption.c:205
msgid "Proto/Manuf/Partno/Item"
msgstr "Vorbild/Hersteller/Bestellnr. /lfd. Nr."
-#: ../bin/doption.c:205
+#: ../bin/doption.c:206
msgid "Manuf/Proto"
msgstr "Hersteller/Vorbild"
-#: ../bin/doption.c:206
+#: ../bin/doption.c:209
msgid "Manuf/Proto/Part Number"
msgstr "Hersteller/Vorbild/Bestellnr."
-#: ../bin/doption.c:207
+#: ../bin/doption.c:211
msgid "Manuf/Proto/Partno/Item"
msgstr "Hersteller/Vorbild/Bestellnr./lfd. Nr."
-#: ../bin/doption.c:237
+#: ../bin/doption.c:241
msgid "Single item selected, +Ctrl Add to selection"
-msgstr "Nur aktuelles Element ausgewählt, +Strg Auswahl erweitern"
+msgstr "Nur aktuelles Element wird ausgewählt, +Strg um Auswahl zu erweitern"
-#: ../bin/doption.c:237
+#: ../bin/doption.c:241
msgid "Add to selection, +Ctrl Single item selected"
msgstr "Auswahl erweitern, +Strg Nur aktuelles Element"
-#: ../bin/doption.c:238
+#: ../bin/doption.c:242
msgid "Deselect all on select nothing"
-msgstr "Auswahl durch Klick auf leere Fläche rücksetzen"
+msgstr "Auswahl durch Klicken auf einen leeren Bereich rücksetzen"
-#: ../bin/doption.c:243
+#: ../bin/doption.c:247
msgid "Normal: Command List, Shift: Command Options"
msgstr "Normal: Befehlsliste, Umschalt: Befehlsoptionen"
-#: ../bin/doption.c:243
+#: ../bin/doption.c:247
msgid "Normal: Command Options, Shift: Command List"
msgstr "Normal: Befehlsoptionen, Umschalt: Befehlsliste"
-#: ../bin/doption.c:246
+#: ../bin/doption.c:250
msgid "Default Command"
msgstr "Standardbefehl"
-#: ../bin/doption.c:248
+#: ../bin/doption.c:252
msgid "Hide Selection Window"
msgstr "Verberge Auswahlfenster"
-#: ../bin/doption.c:250
+#: ../bin/doption.c:254
msgid "Right Click"
-msgstr "Rechte Mausetaste"
+msgstr "Rechte Maustaste"
-#: ../bin/doption.c:251
+#: ../bin/doption.c:255
msgid "Select Mode"
msgstr "Auswahlmodus"
-#: ../bin/doption.c:276
+#: ../bin/doption.c:281
msgid "Command Options"
msgstr "Befehlsoptionen"
-#: ../bin/doption.c:299
+#: ../bin/doption.c:305
msgid "16 px"
msgstr "16 px"
-#: ../bin/doption.c:299
+#: ../bin/doption.c:305
msgid "24 px"
msgstr "24 px"
-#: ../bin/doption.c:299
+#: ../bin/doption.c:305
msgid "32 px"
msgstr "32 px"
-#: ../bin/doption.c:300
+#: ../bin/doption.c:306
msgid "English"
msgstr "Englisch"
-#: ../bin/doption.c:300
+#: ../bin/doption.c:306
msgid "Metric"
msgstr "Metrisch"
-#: ../bin/doption.c:301
+#: ../bin/doption.c:307
msgid "Polar"
msgstr "Polar"
-#: ../bin/doption.c:301
+#: ../bin/doption.c:307
msgid "Cartesian"
msgstr "Kartesisch"
-#: ../bin/doption.c:302
+#: ../bin/doption.c:308
msgid "Balloon Help"
msgstr "Sprechblasen"
-#: ../bin/doption.c:303
+#: ../bin/doption.c:309
msgid "Show FlexTrack in HotBar"
msgstr "Flexgleis in der Auswahlleiste anzeigen"
-#: ../bin/doption.c:304
+#: ../bin/doption.c:310
msgid "Load Last Layout"
msgstr "Letzten Gleisplan laden"
-#: ../bin/doption.c:304
+#: ../bin/doption.c:310
msgid "Start New Layout"
msgstr "Neuen Gleisplan beginnen"
-#: ../bin/doption.c:307
+#: ../bin/doption.c:313
msgid "Icon Size"
msgstr "Icon Größe"
-#: ../bin/doption.c:308
+#: ../bin/doption.c:314
msgid "Angles"
msgstr "Winkel"
-#: ../bin/doption.c:309
+#: ../bin/doption.c:316
msgid "Units"
msgstr "Einheiten"
-#: ../bin/doption.c:311
+#: ../bin/doption.c:318
msgid "Length Format"
msgstr "Längenformat"
-#: ../bin/doption.c:312
+#: ../bin/doption.c:319
msgid "Min Track Length"
msgstr "Mindestgleislänge"
-#: ../bin/doption.c:313
+#: ../bin/doption.c:320
msgid "Connection Distance"
msgstr "Verbindungs Abstand"
-#: ../bin/doption.c:314
+#: ../bin/doption.c:321
msgid "Connection Angle"
msgstr "Verbindungs Winkel"
-#: ../bin/doption.c:315
+#: ../bin/doption.c:322
msgid "Turntable Angle"
msgstr "Drehscheibenwinkel"
-#: ../bin/doption.c:316
+#: ../bin/doption.c:323
msgid "Max Coupling Speed"
msgstr "Max. Ankuppelgeschwindigkeit"
-#: ../bin/doption.c:319
+#: ../bin/doption.c:326
msgid "Drag Distance"
msgstr "Zeichne Entfernung"
-#: ../bin/doption.c:320
+#: ../bin/doption.c:327
msgid "Drag Timeout"
msgstr "Abriss Zeitverzögerung"
-#: ../bin/doption.c:321
+#: ../bin/doption.c:328
msgid "Min Grid Spacing"
msgstr "Mindestrasterabstand"
-#: ../bin/doption.c:323
+#: ../bin/doption.c:330
msgid "Check Point Frequency"
msgstr "Häufigkeit der Sicherungskopie"
-#: ../bin/doption.c:325
+#: ../bin/doption.c:332
msgid "Autosave Checkpoint Frequency"
msgstr "Häufigkeit der automatischen Sicherung"
-#: ../bin/doption.c:326
+#: ../bin/doption.c:333
msgid "On Program Startup"
msgstr "Beim Programmstart"
-#: ../bin/doption.c:336 ../bin/doption.c:340 ../bin/doption.c:357
+#: ../bin/doption.c:343 ../bin/doption.c:347 ../bin/doption.c:365
msgid "999.999"
msgstr "999.999"
-#: ../bin/doption.c:337
+#: ../bin/doption.c:344
msgid "999.999999"
msgstr "999.999999"
-#: ../bin/doption.c:338
+#: ../bin/doption.c:345
msgid "999.99999"
msgstr "999,999999"
-#: ../bin/doption.c:339
+#: ../bin/doption.c:346
msgid "999.9999"
msgstr "999,9999"
-#: ../bin/doption.c:341 ../bin/doption.c:358
+#: ../bin/doption.c:348 ../bin/doption.c:366
msgid "999.99"
msgstr "999.99"
-#: ../bin/doption.c:342 ../bin/doption.c:359
+#: ../bin/doption.c:349 ../bin/doption.c:367
msgid "999.9"
msgstr "999.9"
-#: ../bin/doption.c:343
+#: ../bin/doption.c:350
msgid "999 7/8"
msgstr "999 7/8"
-#: ../bin/doption.c:344
+#: ../bin/doption.c:351
msgid "999 63/64"
msgstr "999 63/64"
-#: ../bin/doption.c:345
+#: ../bin/doption.c:352
msgid "999' 11.999\""
msgstr "999' 11.999\""
-#: ../bin/doption.c:346
+#: ../bin/doption.c:353
msgid "999' 11.99\""
msgstr "999' 11.99\""
-#: ../bin/doption.c:347
+#: ../bin/doption.c:354
msgid "999' 11.9\""
msgstr "999' 11.9\""
-#: ../bin/doption.c:348
+#: ../bin/doption.c:355
msgid "999' 11 7/8\""
msgstr "999' 11 7/8\""
-#: ../bin/doption.c:349
+#: ../bin/doption.c:356
msgid "999' 11 63/64\""
msgstr "999' 11 63/64\""
-#: ../bin/doption.c:350
+#: ../bin/doption.c:357
msgid "999ft 11.999in"
msgstr "999ft 11.999in"
-#: ../bin/doption.c:351
+#: ../bin/doption.c:358
msgid "999ft 11.99in"
msgstr "999ft 11.99in"
-#: ../bin/doption.c:352
+#: ../bin/doption.c:359
msgid "999ft 11.9in"
msgstr "999ft 11.9in"
-#: ../bin/doption.c:353
+#: ../bin/doption.c:360
msgid "999ft 11 7/8in"
msgstr "999ft 11 7/8in"
-#: ../bin/doption.c:354
+#: ../bin/doption.c:361
msgid "999ft 11 63/64in"
msgstr "999ft 11 63/64in"
-#: ../bin/doption.c:360
+#: ../bin/doption.c:368
msgid "999.999mm"
msgstr "999.999mm"
-#: ../bin/doption.c:361
+#: ../bin/doption.c:369
msgid "999.99mm"
msgstr "999.99mm"
-#: ../bin/doption.c:362
+#: ../bin/doption.c:370
msgid "999.9mm"
msgstr "999.9mm"
-#: ../bin/doption.c:363
+#: ../bin/doption.c:371
msgid "999.999cm"
msgstr "999.999cm"
-#: ../bin/doption.c:364
+#: ../bin/doption.c:372
msgid "999.99cm"
msgstr "999.99cm"
-#: ../bin/doption.c:365
+#: ../bin/doption.c:373
msgid "999.9cm"
msgstr "999.9cm"
-#: ../bin/doption.c:366
+#: ../bin/doption.c:374
msgid "999.999m"
msgstr "999.999m"
-#: ../bin/doption.c:367
+#: ../bin/doption.c:375
msgid "999.99m"
msgstr "999.99m"
-#: ../bin/doption.c:368
+#: ../bin/doption.c:376
msgid "999.9m"
msgstr "999.9m"
-#: ../bin/doption.c:497
+#: ../bin/doption.c:511
msgid "Preferences"
msgstr "Einstellungen"
-#: ../bin/doption.c:536
+#: ../bin/doption.c:555
msgid "Marker"
msgstr "Markierung"
-#: ../bin/doption.c:537
+#: ../bin/doption.c:556
msgid "Border"
msgstr "Rahmen"
-#: ../bin/doption.c:538
+#: ../bin/doption.c:557
msgid "Primary Axis"
msgstr "Hauptachse"
-#: ../bin/doption.c:539
+#: ../bin/doption.c:558
msgid "Secondary Axis"
msgstr "Nebenachse"
-#: ../bin/doption.c:540
+#: ../bin/doption.c:559
msgid "Normal Track"
msgstr "Normales Gleis"
-#: ../bin/doption.c:541
+#: ../bin/doption.c:560
msgid "Selected Track"
msgstr "Ausgewähltes Gleis"
-#: ../bin/doption.c:542
+#: ../bin/doption.c:561
msgid "Profile Path"
msgstr "Höhenlinie"
-#: ../bin/doption.c:543
+#: ../bin/doption.c:562
msgid "Exception Track"
msgstr "Ausnahmegleis"
-#: ../bin/doption.c:544
+#: ../bin/doption.c:563
msgid "Track Ties"
msgstr "Gleisschwellen"
+#: ../bin/doption.c:564
+msgid "Bridge Base"
+msgstr "Brückenkopf"
+
+#: ../bin/doption.c:565
+msgid "Track Roadbed"
+msgstr "Gleisbett"
+
#: ../bin/dpricels.c:42
msgid "Price"
msgstr "Preis"
@@ -5059,15 +5118,15 @@ msgstr "Flexgleis"
msgid "costs"
msgstr "kostet"
-#: ../bin/dpricels.c:151
+#: ../bin/dpricels.c:166
msgid "Price List"
msgstr "Preisliste"
-#: ../bin/dprmfile.c:66 ../bin/paramfilesearch_ui.c:51
+#: ../bin/dprmfile.c:66 ../bin/paramfilesearch_ui.c:50
msgid "Show File Names"
msgstr "Dateinamen anzeigen"
-#: ../bin/dprmfile.c:75 ../bin/paramfilesearch_ui.c:78
+#: ../bin/dprmfile.c:75 ../bin/paramfilesearch_ui.c:77
msgid "Select all"
msgstr "Alles auswählen"
@@ -5083,68 +5142,68 @@ msgstr "Bibliothek..."
msgid "Browse..."
msgstr "Durchsuchen..."
-#: ../bin/dprmfile.c:324
+#: ../bin/dprmfile.c:328
#, c-format
msgid "%d parameter files reloaded."
msgstr "%d Parameterdateien neu geladen."
-#: ../bin/dprmfile.c:326
+#: ../bin/dprmfile.c:330
msgid "One parameter file reloaded."
msgstr "Eine Parameterdatei neu geladen."
-#: ../bin/dprmfile.c:427
+#: ../bin/dprmfile.c:431
msgid "Parameter Files"
msgstr "Parameterdateien"
-#: ../bin/dprmfile.c:430
+#: ../bin/dprmfile.c:434
msgid "Load Parameters"
msgstr "Lade Parameter"
-#: ../bin/dprmfile.c:430
+#: ../bin/dprmfile.c:434
msgid "Parameter files (*.xtp)|*.xtp"
msgstr "Parameterdateien (*.xtp)|*.xtp"
-#: ../bin/draw.c:2182
+#: ../bin/draw.c:2353
msgid "Macro Zoom Mode"
msgstr "Makro-Zoom-Modus"
-#: ../bin/draw.c:2189
+#: ../bin/draw.c:2361
msgid "Scale 1:1 - Use Ctrl+ to go to Macro Zoom Mode"
msgstr "Maßstab 1:1 - Mit Strg+ in den Makro-Zoom wechseln"
-#: ../bin/draw.c:2193
+#: ../bin/draw.c:2366
msgid "Preset Zoom In Value selected. Shift+Ctrl+PageDwn to reset value"
msgstr ""
"Der gespeicherte untere Zoom-Faktor wird benutzt, Durch Umschalt+Strg+Bild "
"runter zurücksetzen"
-#: ../bin/draw.c:2197
+#: ../bin/draw.c:2370
#, c-format
msgid "Zoom In Program Value %ld:1, Shift+PageDwn to use"
msgstr ""
"Programmierter Zoom Größer Wert %ld:1, Verwenden mit Umschalt+Bild runter"
-#: ../bin/draw.c:2273
+#: ../bin/draw.c:2451
msgid "At Maximum Zoom Out"
msgstr "Maximal rausgezoomt"
-#: ../bin/draw.c:2278
+#: ../bin/draw.c:2458
msgid "Preset Zoom Out Value selected. Shift+Ctrl+PageUp to reset value"
msgstr ""
"Der gespeicherte obere Zoom-Faktor wird benutzt, Durch Umschalt+Strg+Bild "
"hoch zurücksetzen"
-#: ../bin/draw.c:2282
+#: ../bin/draw.c:2462
#, c-format
msgid "Zoom Out Program Value %ld:1 set, Shift+PageUp to use"
msgstr ""
"Programmierter Zoom Größer Wert %ld:1, Verwenden mit Umschalt+Bild hoch"
-#: ../bin/draw.c:2993
+#: ../bin/draw.c:3282
msgid "Map"
msgstr "Karte"
-#: ../bin/draw.c:3039
+#: ../bin/draw.c:3324
msgid ""
"Left-Drag to pan, Ctrl+Left-Drag to zoom, 0 to set origin to zero, 1-9 to "
"zoom#, e to set to extents"
@@ -5153,26 +5212,25 @@ msgstr ""
"Strg+Ziehen mit der linken Maustaste zum Zoomen, 0 um den Ursprung auf Null "
"zu setzen, 1-9 zum Zoomfaktor, e um an die Fenstergröße anzupassen"
-#: ../bin/draw.c:3046
+#: ../bin/draw.c:3331
msgid "Pan Mode - drag point to new position"
msgstr "Ausschnitt wählen - Punkt an die neue Position ziehen"
-#: ../bin/draw.c:3053
+#: ../bin/draw.c:3338
msgid "Zoom Mode - drag area to zoom"
msgstr "Zoom Modus -auf den ausgewählten Bereich zoomen"
-#: ../bin/draw.c:3079
+#: ../bin/draw.c:3366
msgid "Can't move any further in that direction"
msgstr "In diese Richtung können Sie nicht weiter gehen"
-#: ../bin/draw.c:3081
-msgid ""
-"Left click to pan, right click to zoom, 'o' for origin, 'e' for extents"
+#: ../bin/draw.c:3369
+msgid "Left click to pan, right click to zoom, 'o' for origin, 'e' for extents"
msgstr ""
-"Linksklick zum Verschieben, Rechtsklick zum Zoomen, 'o' für Ursprung, 'e' "
-"für Anpassen an Fenstergröße"
+"Linksklicken zum Verschieben, Rechtsklicken zum Zoomen, 'o' für Ursprung, "
+"'e' für Anpassen an Fenstergröße"
-#: ../bin/draw.c:3118
+#: ../bin/draw.c:3408
msgid ""
"Left Drag to Pan, +CTRL to Zoom, 0 to set Origin to 0,0, 1-9 to Zoom#, e to "
"set to Extent"
@@ -5181,159 +5239,151 @@ msgstr ""
"Zoomen, 0 zum Setzen des Ursprungs auf 0,0, 1-9 zum Zoomfaktor, e um an die "
"Fenstergröße anzupassen"
-#: ../bin/draw.c:3196
+#: ../bin/draw.c:3487
msgid "Pan/Zoom"
msgstr "Verschieben/Zoomen"
-#: ../bin/draw.c:3207
+#: ../bin/draw.c:3503
msgid "Zoom to 1:1 - '1'"
msgstr "Auf 1:1 vergrößern - '1'."
-#: ../bin/draw.c:3208
+#: ../bin/draw.c:3505
msgid "Zoom to 1:2 - '2'"
msgstr "Auf 1:2 vergrößern - '2'."
-#: ../bin/draw.c:3209
+#: ../bin/draw.c:3507
msgid "Zoom to 1:3 - '3'"
msgstr "Auf 1:3 vergrößern - '3'."
-#: ../bin/draw.c:3210
+#: ../bin/draw.c:3509
msgid "Zoom to 1:4 - '4'"
msgstr "Auf 1:4 vergrößern - '4'."
-#: ../bin/draw.c:3211
+#: ../bin/draw.c:3511
msgid "Zoom to 1:5 - '5'"
msgstr "Auf 1:5 vergrößern - '5'."
-#: ../bin/draw.c:3212
+#: ../bin/draw.c:3513
msgid "Zoom to 1:6 - '6'"
msgstr "Auf 1:6 vergrößern - '6'."
-#: ../bin/draw.c:3213
+#: ../bin/draw.c:3515
msgid "Zoom to 1:7 - '7'"
msgstr "Auf 1:7 vergrößern - '7'."
-#: ../bin/draw.c:3214
+#: ../bin/draw.c:3517
msgid "Zoom to 1:8 - '8'"
msgstr "Auf 1:8 vergrößern - '8'."
-#: ../bin/draw.c:3215
+#: ../bin/draw.c:3519
msgid "Zoom to 1:9 - '9'"
msgstr "Auf 1:9 vergrößern - '9'."
-#: ../bin/draw.c:3219
+#: ../bin/draw.c:3525
msgid "Pan center here - 'c'"
msgstr "Hier zentrieren - 'c'."
-#: ../bin/drawgeom.c:70 ../bin/drawgeom.c:86
+#: ../bin/drawgeom.c:72 ../bin/drawgeom.c:89
msgid "Create Lines"
msgstr "Erstelle Linien"
-#: ../bin/drawgeom.c:287
-msgid "+Alt for Magnetic Snap"
-msgstr "+Alt für den magnetischen Schnapper"
-
-#: ../bin/drawgeom.c:289
-msgid "+Alt to inhibit Magnetic Snap"
-msgstr "+Alt um den magnetischen Schnapper abzuschalten"
-
-#: ../bin/drawgeom.c:412
+#: ../bin/drawgeom.c:443
msgid "Drag next point, +Alt reverse Magnetic Snap or +Ctrl lock to 90 deg"
msgstr ""
"Ziehe zum nächsten Punkt, +Alt um den Schnapper umzuschalten oder +Strg um "
"auf 90° zu begrenzen"
-#: ../bin/drawgeom.c:423
+#: ../bin/drawgeom.c:454
msgid ""
"Drag next point, +Alt reverse Magnetic Snap, or +Ctrl to lock to 90 degrees"
msgstr ""
"Ziehen Sie den nächsten Punkt, +Alt Magnetic Snap umkehren oder +Strg, um "
"ihn auf 90 Grad zu sperren"
-#: ../bin/drawgeom.c:454
+#: ../bin/drawgeom.c:487
msgid "Drag to set radius"
msgstr "Radius durch Ziehen festlegen"
-#: ../bin/drawgeom.c:468
+#: ../bin/drawgeom.c:501
msgid "Drag set box size"
msgstr "Ziehen um die Größe des Rechteck zu setzen"
-#: ../bin/drawgeom.c:509
+#: ../bin/drawgeom.c:543
msgid "+Alt - reverse Magnetic Snap or +Ctrl - lock to 90 deg"
msgstr "+Alt um den Schnapper umzuschalten oder +Strg um auf 90° zu begrenzen"
-#: ../bin/drawgeom.c:580 ../bin/drawgeom.c:637
+#: ../bin/drawgeom.c:625 ../bin/drawgeom.c:691
#, c-format
msgid "Length = %s, Angle = %0.2f"
msgstr "Länge = %s, Winkel = %0.2f"
-#: ../bin/drawgeom.c:658
+#: ../bin/drawgeom.c:713
#, c-format
msgid "Straight Line: Length=%s Angle=%0.3f"
msgstr "Gerade Linie: Länge=%s Winkel=%0.3f"
-#: ../bin/drawgeom.c:680
+#: ../bin/drawgeom.c:735
#, c-format
msgid "Curved Line: Radius=%s Angle=%0.3f Length=%s"
msgstr "Gebogene Linie: Radius=%s Winkel=%0.3f Länge=%s"
-#: ../bin/drawgeom.c:703 ../bin/drawgeom.c:711
+#: ../bin/drawgeom.c:761 ../bin/drawgeom.c:769
#, c-format
msgid "Radius = %s"
msgstr "Radius = %s"
-#: ../bin/drawgeom.c:722
+#: ../bin/drawgeom.c:780
#, c-format
msgid "Width = %s, Height = %s"
msgstr "Breite = %s, Höhe = %s"
-#: ../bin/drawgeom.c:783
+#: ../bin/drawgeom.c:841
msgid "Drag on Red arrows to adjust curve"
msgstr "An den roten Pfeilen ziehen, um die Kurve anzupassen"
-#: ../bin/drawgeom.c:1207
+#: ../bin/drawgeom.c:1298
msgid "Select points or use context menu"
-msgstr "Punkt auswählen oder Kontextmenu benutzen"
+msgstr "Punkt auswählen oder Kontextmenü benutzen"
-#: ../bin/drawgeom.c:1463
+#: ../bin/drawgeom.c:1567
#, c-format
msgid "Length = %s, Last angle = %0.2f"
msgstr "Länge = %s, letzter Winkel = %0.2f"
-#: ../bin/drawgeom.c:1623
+#: ../bin/drawgeom.c:1736
msgid "Point Deleted"
msgstr "Punkt gelöscht"
-#: ../bin/drawgeom.c:2048
+#: ../bin/drawgeom.c:2194
msgid "Not close to end of line"
msgstr "Nicht nah am Ende der Linie"
-#: ../bin/drawgeom.c:2104
+#: ../bin/drawgeom.c:2252
msgid "Not close to ends or middle of mine, reselect"
msgstr "Nicht an einem Ende oder in der Mitte der Linie, Auswahl wiederholen"
-#: ../bin/drawgeom.c:2153 ../bin/drawgeom.c:2389
+#: ../bin/drawgeom.c:2303 ../bin/drawgeom.c:2550
msgid "Drag to Move Corner Point"
msgstr "Ziehen um den Eckpunkt zu verschieben"
-#: ../bin/drawgeom.c:2160
+#: ../bin/drawgeom.c:2311
msgid "Drag to Move Edge "
msgstr "Ziehen um die Kante zu verschieben "
-#: ../bin/drawgeom.c:2234
+#: ../bin/drawgeom.c:2383
#, c-format
msgid "Length = %0.3f Angle = %0.3f"
msgstr "Länge = %0.3f Winkel = %0.3f"
-#: ../bin/drawgeom.c:2384
+#: ../bin/drawgeom.c:2544
msgid "Drag to Move Edge"
msgstr "Ziehen um die Kante zu verschieben"
-#: ../bin/dxfoutput.c:230
+#: ../bin/dxfoutput.c:244
msgid "Export to DXF"
msgstr "Export nach DXF"
-#: ../bin/fileio.c:214
+#: ../bin/fileio.c:221
msgid ""
"\n"
"Do you want to continue?"
@@ -5341,117 +5391,125 @@ msgstr ""
"\n"
"Wollen Sie fortsetzen?"
-#: ../bin/fileio.c:580
+#: ../bin/fileio.c:593
#, c-format
msgid "putTitle: title too long: %s"
msgstr "putTitle: Titel ist zu lang: %s"
-#: ../bin/fileio.c:610
+#: ../bin/fileio.c:625
msgid "Unnamed Trackplan"
msgstr "Unbenannter Gleisplan"
-#: ../bin/fileio.c:611
+#: ../bin/fileio.c:626
msgid " (R/O)"
msgstr " (Nur lesen)"
-#: ../bin/fileio.c:751
+#: ../bin/fileio.c:777
msgid "Unknown layout file object - skip until next good object?"
msgstr ""
"Unbekanntes Layout-Dateiobjekt - überspringen bis zum nächsten guten Objekt?"
-#: ../bin/fileio.c:803 ../bin/fileio.c:987
+#: ../bin/fileio.c:833 ../bin/fileio.c:1020
msgid "Track"
msgstr "Gleis"
-#: ../bin/fileio.c:803
+#: ../bin/fileio.c:834
msgid "Not Found"
msgstr "Nicht gefunden"
-#: ../bin/fileio.c:1168
+#: ../bin/fileio.c:1263
msgid "AutoSave Tracks As"
msgstr "AutoSichern des Gleisplans als"
-#: ../bin/fileio.c:1183
+#: ../bin/fileio.c:1278
msgid "Save Tracks"
msgstr "Gleise speichern"
-#: ../bin/fileio.c:1200
+#: ../bin/fileio.c:1295
msgid "Save Tracks As"
msgstr "Gleise speichern unter"
-#: ../bin/fileio.c:1212
+#: ../bin/fileio.c:1307
msgid "Open Tracks"
msgstr "Gleise einlesen"
-#: ../bin/fileio.c:1227
+#: ../bin/fileio.c:1321
msgid "Example Tracks"
msgstr "Beispielgleise"
-#: ../bin/fileio.c:1435
+#: ../bin/fileio.c:1398
+msgid "File AutoSaved"
+msgstr "Automatisch gesichert"
+
+#: ../bin/fileio.c:1573
#, c-format
msgid "Module - %s"
msgstr "Modul - %s"
-#: ../bin/fileio.c:1440 ../bin/fileio.c:1460
+#: ../bin/fileio.c:1578 ../bin/fileio.c:1599
msgid "Import Tracks"
msgstr "Gleise importieren"
-#: ../bin/fileio.c:1521
+#: ../bin/fileio.c:1599
+msgid "Import Module"
+msgstr "Modul importieren"
+
+#: ../bin/fileio.c:1657
msgid "Export Tracks"
msgstr "Gleise exportieren"
-#: ../bin/fileio.c:1542
+#: ../bin/fileio.c:1678
msgid "Clipboard"
msgstr "Zwischenablage"
-#: ../bin/filenoteui.c:51 ../bin/linknoteui.c:45 ../bin/textnoteui.c:37
+#: ../bin/filenoteui.c:60 ../bin/linknoteui.c:48 ../bin/textnoteui.c:41
msgid "Position X"
msgstr "Position X"
-#: ../bin/filenoteui.c:53 ../bin/linknoteui.c:47 ../bin/textnoteui.c:39
+#: ../bin/filenoteui.c:62 ../bin/linknoteui.c:50 ../bin/textnoteui.c:43
msgid "Position Y"
msgstr "Position Y"
-#: ../bin/filenoteui.c:57 ../bin/linknoteui.c:51
+#: ../bin/filenoteui.c:66 ../bin/linknoteui.c:54
msgid "Title"
msgstr "Titel"
-#: ../bin/filenoteui.c:59 ../bin/trknote.c:57
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:88
+#: ../bin/filenoteui.c:68 ../bin/trknote.c:54
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:89
msgid "Document"
msgstr "Dokument"
-#: ../bin/filenoteui.c:61
+#: ../bin/filenoteui.c:70
msgid "Select..."
msgstr "Auswählen..."
-#: ../bin/filenoteui.c:63 ../bin/linknoteui.c:55
+#: ../bin/filenoteui.c:72 ../bin/linknoteui.c:58
msgid "Open..."
msgstr "&Öffnen..."
-#: ../bin/filenoteui.c:125
+#: ../bin/filenoteui.c:134
msgid "Add Document"
msgstr "Dokument hinzufügen"
-#: ../bin/filenoteui.c:147
+#: ../bin/filenoteui.c:157
msgid "The file doesn't exist or cannot be read!"
msgstr "Die Datei existiert nicht oder kann nicht gelesen werden!"
-#: ../bin/filenoteui.c:287
+#: ../bin/filenoteui.c:297
#, c-format
msgid "Document(%d) Layer=%d %-.80s [%s]"
msgstr "Dokument(%d) Ebene=%d %-.80s [%s]"
-#: ../bin/filenoteui.c:299
-msgid "Update document"
+#: ../bin/filenoteui.c:318
+msgid "Update Document"
msgstr "Dokument aktualisieren"
-#: ../bin/filenoteui.c:313
+#: ../bin/filenoteui.c:330
msgid "Describe the file"
msgstr "Beschreibung zu der Datei"
-#: ../bin/filenoteui.c:319
-msgid "Attach document"
+#: ../bin/filenoteui.c:338
+msgid "Attach Document"
msgstr "Dokument anhängen"
#: ../bin/i18n.c:57
@@ -5459,1044 +5517,935 @@ msgstr "Dokument anhängen"
msgid "Gettext initialized (PACKAGE=%s, LOCALEDIR=%s, LC_ALL=%s).\n"
msgstr "Gettext initialisiert (PACKAGE=%s, LOCALEDIR=%s, LC_ALL=%s).\n"
-#: ../bin/layout.c:404
+#: ../bin/layout.c:554 ../bin/layout.c:995
#, c-format
msgid "Unable to load Image File - %s"
-msgstr "Bilddatei kann nicht geladen werden - %s"
+msgstr "Grafikdatei kann nicht geladen werden - %s"
-#: ../bin/layout.c:470
+#: ../bin/layout.c:631
msgid "Load Background"
msgstr "Hintergrund laden"
-#: ../bin/layout.c:493
+#: ../bin/layout.c:658
msgid "Room Width"
msgstr "Zimmerbreite"
-#: ../bin/layout.c:494
+#: ../bin/layout.c:659
msgid " Height"
msgstr " -länge"
-#: ../bin/layout.c:495
+#: ../bin/layout.c:660
msgid "Layout Title"
msgstr "Gleisplantitel"
-#: ../bin/layout.c:496
+#: ../bin/layout.c:661
msgid "Subtitle"
msgstr "Untertitel"
-#: ../bin/layout.c:500
-msgid " Gauge"
-msgstr " Spurweite"
-
-#: ../bin/layout.c:502
-msgid "Min Track Radius"
-msgstr "Mindestgleisradius"
-
-#: ../bin/layout.c:503
-msgid " Max Track Grade (%)"
-msgstr " Maximale Gleissteigung (%)"
-
-#: ../bin/layout.c:505
+#: ../bin/layout.c:670
msgid "Background File Path"
-msgstr "Hintergrunddatei"
+msgstr "Hintergrundbild"
-#: ../bin/layout.c:506
+#: ../bin/layout.c:671
msgid "Browse ..."
msgstr "Durchsuchen..."
-#: ../bin/layout.c:509
+#: ../bin/layout.c:674
msgid "Background PosX,Y"
-msgstr "Hintergrund Posistion X,Y"
+msgstr "Hintergrund Position X,Y"
-#: ../bin/layout.c:513
+#: ../bin/layout.c:678
msgid "Background Size"
msgstr "Größe des Hintergrunds"
-#: ../bin/layout.c:515
+#: ../bin/layout.c:680
msgid "Background Screen %"
msgstr "Hintergrund-Transparenz %"
-#: ../bin/layout.c:517
+#: ../bin/layout.c:682
msgid "Background Angle"
msgstr "Winkel des Hintergrund"
-#: ../bin/layout.c:518
+#: ../bin/layout.c:683
msgid "Named Settings File"
msgstr "Benannte Einstellungsdatei"
-#: ../bin/layout.c:519
+#: ../bin/layout.c:684
msgid "Write"
msgstr "Schreiben"
-#: ../bin/layout.c:520
+#: ../bin/layout.c:685
msgid "Read"
msgstr "Lesen"
-#: ../bin/layout.c:611
+#: ../bin/layout.c:819
msgid "Layout Options"
msgstr "Gleisplanoptionen"
-#: ../bin/layout.c:797
+#: ../bin/layout.c:1053
msgid "Read Settings"
msgstr "Einstellungen lesen"
-#: ../bin/layout.c:798 ../bin/layout.c:821
+#: ../bin/layout.c:1054 ../bin/layout.c:1088
msgid "Settings File (*.xset)|*.xset"
msgstr "Einstellungsdatei (*.xset)|*.xset"
-#: ../bin/layout.c:820
+#: ../bin/layout.c:1087
msgid "Write Settings"
msgstr "Einstellungen speichern"
-#: ../bin/linknoteui.c:53
+#: ../bin/linknoteui.c:56
msgid "URL"
msgstr "URL"
-#: ../bin/linknoteui.c:102
-#, c-format
-msgid ""
-"The entered URL is too long. The maximum allowed length is %d. Please edit "
-"the entered value."
-msgstr ""
-"Die eingegebene URL ist zu lang. Die maximal zulässige Länge ist %d. Bitte "
-"bearbeiten Sie den eingegebenen Wert."
-
-#: ../bin/linknoteui.c:105
-msgid "Re-edit"
-msgstr "Nochmals bearbeiten"
-
-#: ../bin/linknoteui.c:237
-msgid "Update link"
+#: ../bin/linknoteui.c:230
+#, fuzzy
+msgid "Update Weblink"
msgstr "Weblink aktualisieren"
-#: ../bin/linknoteui.c:255
-msgid "Create link"
+#: ../bin/linknoteui.c:248
+#, fuzzy
+msgid "Create Weblink"
msgstr "Weblink erstellen"
-#: ../bin/macro.c:64
+#: ../bin/macro.c:68
msgid "Message"
msgstr "Mitteilung"
-#: ../bin/macro.c:152
+#: ../bin/macro.c:167
msgid "Recording"
msgstr "Aufzeichnen"
-#: ../bin/macro.c:187
-#, c-format
+#: ../bin/macro.c:207 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1309
msgid "End of Playback. Hit Step to exit\n"
msgstr "Ende der Aufzeichnung. Schritt zum Beenden drücken\n"
-#: ../bin/macro.c:251
+#: ../bin/macro.c:272
msgid "Record"
msgstr "Aufzeichnen"
-#: ../bin/macro.c:646
+#: ../bin/macro.c:687
msgid "Step"
msgstr "Schritt"
-#: ../bin/macro.c:649 ../bin/macro.c:1530
+#: ../bin/macro.c:690 ../bin/macro.c:1561
msgid "Next"
msgstr "Nächster"
-#: ../bin/macro.c:652 ../bin/misc.c:779 ../bin/track.c:1152
+#: ../bin/macro.c:693 ../bin/misc.c:697 ../bin/track.c:1107
msgid "Quit"
msgstr "Verlassen"
-#: ../bin/macro.c:655 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:590
+#: ../bin/macro.c:696 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:631
msgid "Speed"
msgstr "Geschwindigkeit"
-#: ../bin/macro.c:806 ../bin/macro.c:853
+#: ../bin/macro.c:856 ../bin/track.c:1347
msgid "Regression"
msgstr "Regression"
-#: ../bin/macro.c:1017 ../bin/macro.c:1386
+#: ../bin/macro.c:1011 ../bin/macro.c:1411
msgid "Demo"
msgstr "Demo"
-#: ../bin/macro.c:1206
+#: ../bin/macro.c:1220
#, c-format
msgid "Elapsed time %lu\n"
msgstr "Abgelaufene Zeit %lu\n"
-#: ../bin/macro.c:1307
+#: ../bin/macro.c:1330
msgid "Playback"
msgstr "Wiedergabe"
-#: ../bin/macro.c:1389
+#: ../bin/macro.c:1415
msgid "Slowest"
msgstr "Langsamste"
-#: ../bin/macro.c:1390
+#: ../bin/macro.c:1416
msgid "Slow"
msgstr "Langsame"
-#: ../bin/macro.c:1392
+#: ../bin/macro.c:1418
msgid "Fast"
msgstr "Schnelle"
-#: ../bin/macro.c:1393
+#: ../bin/macro.c:1419
msgid "Faster"
msgstr "Schnellere"
-#: ../bin/macro.c:1394
+#: ../bin/macro.c:1420
msgid "Fastest"
msgstr "Schnellste"
-#: ../bin/macro.c:1513
+#: ../bin/macro.c:1543
msgid "Can not find PARAMETER playback proc"
msgstr "Kann die PARAMETER Wiedergabeprozedur nicht finden"
-#: ../bin/misc.c:148
-msgid "No Messages"
-msgstr "Keine Nachrichten"
-
-#: ../bin/misc.c:488 ../bin/misc.c:491
-msgid "ABORT"
-msgstr "ABBRUCH"
-
-#: ../bin/misc.c:490
-msgid ""
-"\n"
-"Do you want to save your layout?"
-msgstr ""
-"\n"
-"Wollen Sie Ihren Gleisplan speichern?"
-
-#: ../bin/misc.c:572
-#, c-format
-msgid "No help for %s"
-msgstr "Hilfe für %s nicht gefunden"
-
-#: ../bin/misc.c:674
-msgid ""
-"Save changes to the layout design before closing?\n"
-"\n"
-"If you don't save now, your unsaved changes will be discarded."
-msgstr ""
-"Sollen die Ãnderungen an Ihrem Gleisplan vor dem Verlassen gespeichert werden?\n"
-"\n"
-"Wenn Sie jetzt nicht speichern, werden Ihre nicht gespeicherten Ãnderungen verworfen."
-
-#: ../bin/misc.c:676 ../bin/misc.c:2516
-msgid "&Save"
-msgstr "&Speichern"
-
-#: ../bin/misc.c:676 ../bin/misc.c:711
-msgid "&Cancel"
-msgstr "&Abbruch"
-
-#: ../bin/misc.c:676
-msgid "&Don't Save"
-msgstr "&Nicht speichern"
-
-#: ../bin/misc.c:700
-msgid "examples"
-msgstr "Beispiele"
-
-#: ../bin/misc.c:709
-msgid ""
-"Do you want to return to the last saved state?\n"
-"\n"
-"Revert will cause all changes done since last save to be lost."
-msgstr ""
-"Wollen Sie auf den letzten gespeicherten Stand zurücksetzen?\n"
-"Durch das Zurücksetzen werden alle Ãnderungen seit dem letzen Speichern verloren gehen."
-
-#: ../bin/misc.c:711
-msgid "&Revert"
-msgstr "Zurücksetzen"
-
-#: ../bin/misc.c:932
-msgid "XTrackCAD Font"
-msgstr "XTrackCAD Font"
-
-#: ../bin/misc.c:993
-#, c-format
-msgid "No balloon help for %s\n"
-msgstr "Kein Tooltip für %s vorhanden\n"
-
-#: ../bin/misc.c:995 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:653
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:654
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:656
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:657
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:659
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:660
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:661
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:662
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:663
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:664
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:665
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:666
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:667
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:668
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:669
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:670
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:671
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:672
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:673
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:674
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:675
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:676
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:677
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:678
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:679
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:680
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:681
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:682
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:683
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:684
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:685
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:686
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:687
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:688
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:689
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:690
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:691
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:692
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:693
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:694
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:695
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:696
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:697
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:698
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:699
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:700
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:701
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:702
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:703
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:704
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:705
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:706
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:707
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:708
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:709
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:710
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:711
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:712
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:713
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:715
-msgid "No Help"
-msgstr "Keine Hilfe vorhanden"
-
-#: ../bin/misc.c:1087
-msgid "File AutoSaved"
-msgstr "Automatisch gesichert"
-
-#: ../bin/misc.c:1326 ../bin/misc.c:1333
-msgid ""
-"Cancelling the current command will undo the changes\n"
-"you are currently making. Do you want to do the update instead?"
-msgstr ""
-"Beim Abbruch der aktuellen Operation werden alle aktuellen Änderungen "
-"verworfen. Möchten Sie stattdessen aktualisieren?"
-
-#: ../bin/misc.c:1405
-msgid ""
-"Cancelling the current command will undo the changes\n"
-"you are currently making. Do you want to update?"
-msgstr ""
-"Abbruch des aktuelle Befehls wird alle aktuell laufenden\n"
-"Änderungen zurücknehmen. Soll aktualisiert werden?"
-
-#: ../bin/misc.c:1918
-msgid "Sticky Commands"
-msgstr "Wiederholte Befehle"
-
-#: ../bin/misc.c:1931
-msgid "File Buttons"
-msgstr "Dateischaltflächen"
-
-#: ../bin/misc.c:1931
-msgid "Print Buttons"
-msgstr "Drucken Knöpfe"
-
-#: ../bin/misc.c:1931
-msgid "Import/Export Buttons"
-msgstr "Import/Export Aktionen"
-
-#: ../bin/misc.c:1932
-msgid "Zoom Buttons"
-msgstr "Lupenknöpfe"
-
-#: ../bin/misc.c:1932
-msgid "Undo Buttons"
-msgstr "Rückgängig/Wiederholen"
-
-#: ../bin/misc.c:1932
-msgid "Easement Button"
-msgstr "Ãœbergangsbogen"
-
-#: ../bin/misc.c:1932
-msgid "SnapGrid Buttons"
-msgstr "Fangraster"
-
-#: ../bin/misc.c:1933
-msgid "Create Track Buttons"
-msgstr "Erstelle Gleise"
-
-#: ../bin/misc.c:1933
-msgid "Layout Control Elements"
-msgstr "Elemente zur Anlagensteuerung"
-
-#: ../bin/misc.c:1934
-msgid "Modify Track Buttons"
-msgstr "Verändere Gleise"
-
-#: ../bin/misc.c:1934
-msgid "Properties/Select"
-msgstr "Eigenschaften/Auswählen"
-
-#: ../bin/misc.c:1935
-msgid "Track Group Buttons"
-msgstr "Objekt Werkzeuge"
-
-#: ../bin/misc.c:1935
-msgid "Train Group Buttons"
-msgstr "Zugbetrieb"
-
-#: ../bin/misc.c:1936
-msgid "Create Misc Buttons"
-msgstr "Zeichnen/Schrift Werkzeuge"
-
-#: ../bin/misc.c:1936
-msgid "Ruler Button"
-msgstr "Linealschaltfläche"
-
-#: ../bin/misc.c:1937
-msgid "Layer Buttons"
-msgstr "Ebenenknöpfe"
-
-#: ../bin/misc.c:1937
-msgid "Hot Bar"
-msgstr "Teilekatalog"
-
-#: ../bin/misc.c:2010 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:82
+#: ../bin/menu.c:156 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:82
msgid "Change Elevations"
msgstr "Höhen ändern"
-#: ../bin/misc.c:2030
+#: ../bin/menu.c:181
msgid "Angle:"
msgstr "Winkel:"
-#: ../bin/misc.c:2035
+#: ../bin/menu.c:186
msgid "Indexes:"
msgstr "Kennziffern:"
-#: ../bin/misc.c:2041
+#: ../bin/menu.c:193
msgid "Move X:"
msgstr "Verschieben X:"
-#: ../bin/misc.c:2042
+#: ../bin/menu.c:194
msgid "Move Y:"
msgstr "Verschieben Y:"
-#: ../bin/misc.c:2060
+#: ../bin/menu.c:213
msgid "Select Index"
msgstr "Kennziffer auswählen"
-#: ../bin/misc.c:2114
+#: ../bin/menu.c:261
msgid "Enter Move ..."
msgstr "Verschiebung eingeben..."
-#: ../bin/misc.c:2119
+#: ../bin/menu.c:267
msgid "Select Track Index ..."
-msgstr "Gleiskennziffer auswählen:"
+msgstr "Gleiskennziffer auswählen ..."
-#: ../bin/misc.c:2125
+#: ../bin/menu.c:274
msgid "180 "
msgstr "180 "
-#: ../bin/misc.c:2126
+#: ../bin/menu.c:275
msgid "90 CW"
msgstr "90 Uhrzeiger"
-#: ../bin/misc.c:2127
+#: ../bin/menu.c:276
msgid "45 CW"
msgstr "45 Uhrzeiger"
-#: ../bin/misc.c:2128
+#: ../bin/menu.c:277
msgid "30 CW"
msgstr "30 Uhrzeiger"
-#: ../bin/misc.c:2129
+#: ../bin/menu.c:278
msgid "15 CW"
msgstr "15 Uhrzeiger"
-#: ../bin/misc.c:2130
+#: ../bin/menu.c:279
msgid "15 CCW"
msgstr "15 gegen Uhr"
-#: ../bin/misc.c:2131
+#: ../bin/menu.c:280
msgid "30 CCW"
msgstr "30 gehen Uhr"
-#: ../bin/misc.c:2132
+#: ../bin/menu.c:281
msgid "45 CCW"
msgstr "45 gegen Uhr"
-#: ../bin/misc.c:2133
+#: ../bin/menu.c:282
msgid "90 CCW"
msgstr "90 gegen Uhr"
-#: ../bin/misc.c:2134
+#: ../bin/menu.c:283
msgid "Enter Angle ..."
msgstr "Winkel eingeben..."
-#: ../bin/misc.c:2151
+#: ../bin/menu.c:300
+msgid "examples"
+msgstr "Beispiele"
+
+#: ../bin/menu.c:309
+msgid ""
+"Do you want to return to the last saved state?\n"
+"\n"
+"Revert will cause all changes done since last save to be lost."
+msgstr ""
+"Wollen Sie auf den letzten gespeicherten Stand zurücksetzen?\n"
+"Durch das Zurücksetzen werden alle Änderungen seit dem letzten Speichern "
+"verloren gehen."
+
+#: ../bin/menu.c:311
+msgid "&Revert"
+msgstr "Zurücksetzen"
+
+#: ../bin/menu.c:311 ../bin/misc.c:661
+msgid "&Cancel"
+msgstr "&Abbruch"
+
+#: ../bin/menu.c:364
+msgid "XTrackCAD Font"
+msgstr "XTrackCAD Font"
+
+#: ../bin/menu.c:390
+msgid "Sticky Commands"
+msgstr "Wiederholte Befehle"
+
+#: ../bin/menu.c:409
msgid "Test Mallocs"
msgstr "Test Mallocs"
-#: ../bin/misc.c:2168
+#: ../bin/menu.c:428
msgid "Debug"
msgstr "Fehlersuche (Debug)"
-#: ../bin/misc.c:2391
+#: ../bin/menu.c:513
+msgid "No Messages"
+msgstr "Keine Nachrichten"
+
+#: ../bin/menu.c:537
+#, c-format
+msgid "No help for %s"
+msgstr "Hilfe für %s nicht gefunden"
+
+#: ../bin/menu.c:587
+#, c-format
+msgid "No balloon help for %s\n"
+msgstr "Kein Tooltip für %s vorhanden\n"
+
+#: ../bin/menu.c:589 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:694
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:695
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:697
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:698
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:700
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:701
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:702
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:703
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:704
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:705
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:706
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:707
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:708
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:709
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:710
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:711
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:712
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:713
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:714
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:715
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:716
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:717
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:718
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:719
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:720
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:721
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:722
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:723
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:724
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:725
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:726
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:727
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:728
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:729
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:730
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:731
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:732
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:733
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:734
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:735
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:736
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:737
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:738
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:739
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:740
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:741
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:742
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:743
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:744
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:745
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:746
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:747
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:748
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:749
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:750
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:751
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:752
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:753
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:754
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:756
+msgid "No Help"
+msgstr "Keine Hilfe vorhanden"
+
+#: ../bin/menu.c:816
msgid "&File"
msgstr "&Datei"
-#: ../bin/misc.c:2392
+#: ../bin/menu.c:817
msgid "&Edit"
msgstr "&Bearbeiten"
-#: ../bin/misc.c:2393
+#: ../bin/menu.c:818
msgid "&View"
msgstr "&Ansicht"
-#: ../bin/misc.c:2394
+#: ../bin/menu.c:819
msgid "&Add"
msgstr "&Hinzufügen"
-#: ../bin/misc.c:2395
+#: ../bin/menu.c:820
msgid "&Change"
msgstr "&Ändern"
-#: ../bin/misc.c:2396
+#: ../bin/menu.c:821
msgid "&Draw"
msgstr "&Zeichnen"
-#: ../bin/misc.c:2397
+#: ../bin/menu.c:822
msgid "&Manage"
msgstr "&Verwalten"
-#: ../bin/misc.c:2398
+#: ../bin/menu.c:823
msgid "&Options"
msgstr "&Optionen"
-#: ../bin/misc.c:2399
+#: ../bin/menu.c:824
msgid "&Macro"
msgstr "&Makro"
-#: ../bin/misc.c:2400
+#: ../bin/menu.c:825
msgid "&Window"
msgstr "&Fenster"
-#: ../bin/misc.c:2401
+#: ../bin/menu.c:826
msgid "&Help"
msgstr "&Hilfe"
-#: ../bin/misc.c:2437
+#: ../bin/menu.c:862
msgid "Context Commands"
msgstr "Kontextbefehle"
-#: ../bin/misc.c:2438
+#: ../bin/menu.c:863
msgid "Shift Context Commands"
msgstr "Umsch+Kontextbefehle"
-#: ../bin/misc.c:2452 ../bin/misc.c:2454
+#: ../bin/menu.c:877 ../bin/menu.c:879
msgid "Zoom Extents"
-msgstr "Zoom Gesamt"
+msgstr "Zoom Anpassen"
-#: ../bin/misc.c:2457 ../bin/misc.c:2667
+#: ../bin/menu.c:882 ../bin/menu.c:1117
msgid "Enable SnapGrid"
msgstr "Fangraster aktivieren"
-#: ../bin/misc.c:2459
+#: ../bin/menu.c:884
msgid "SnapGrid Show"
msgstr "Fangraster anzeigen"
-#: ../bin/misc.c:2461
+#: ../bin/menu.c:887
msgid " Enable Magnetic Snap"
msgstr " Ein/Aus Magnetischer Schnapper"
-#: ../bin/misc.c:2463 ../bin/misc.c:2688
+#: ../bin/menu.c:889 ../bin/menu.c:1139
msgid "Show/Hide Map"
msgstr "Karte anzeigen/verbergen"
-#: ../bin/misc.c:2486 ../bin/misc.c:2488
+#: ../bin/menu.c:913 ../bin/menu.c:915
msgid "Select Track Index..."
msgstr "Gleiskennziffer auswählen..."
-#: ../bin/misc.c:2500 ../bin/misc.c:2501
+#: ../bin/menu.c:927 ../bin/menu.c:928
msgid "Add..."
msgstr "Hinzufügen..."
-#: ../bin/misc.c:2504 ../bin/misc.c:2505
+#: ../bin/menu.c:931 ../bin/menu.c:932
msgid "More..."
msgstr "Weiter..."
-#: ../bin/misc.c:2510
+#: ../bin/menu.c:937
msgid "&New ..."
msgstr "&Neu..."
-#: ../bin/misc.c:2512
+#: ../bin/menu.c:939
msgid "&Open ..."
msgstr "&Öffnen..."
-#: ../bin/misc.c:2518
+#: ../bin/menu.c:943 ../bin/misc.c:661
+msgid "&Save"
+msgstr "&Speichern"
+
+#: ../bin/menu.c:945
msgid "Save &As ..."
msgstr "Speichern &unter..."
-#: ../bin/misc.c:2520
+#: ../bin/menu.c:947
msgid "Revert"
msgstr "Neu laden"
-#: ../bin/misc.c:2533
+#: ../bin/menu.c:960
msgid "P&rint Setup ..."
msgstr "Druckereinstellungen..."
-#: ../bin/misc.c:2541
+#: ../bin/menu.c:968
msgid "&Import"
msgstr "Import"
-#: ../bin/misc.c:2543
+#: ../bin/menu.c:970
msgid "Import &Module"
msgstr "Modul importieren"
-#: ../bin/misc.c:2545
+#: ../bin/menu.c:973
msgid "Export to &Bitmap"
msgstr "Export als Bitmap"
-#: ../bin/misc.c:2548
+#: ../bin/menu.c:976
msgid "E&xport"
msgstr "Export"
-#: ../bin/misc.c:2550
+#: ../bin/menu.c:978
msgid "Export D&XF"
msgstr "Export als DXF"
-#: ../bin/misc.c:2554
+#: ../bin/menu.c:982
msgid "Export S&VG"
msgstr "S&VG Export"
-#: ../bin/misc.c:2560
+#: ../bin/menu.c:988
msgid "Parameter &Files ..."
msgstr "Parameterdateien..."
-#: ../bin/misc.c:2562
+#: ../bin/menu.c:990
msgid "No&tes ..."
msgstr "Notizen..."
-#: ../bin/misc.c:2569
+#: ../bin/menu.c:997
msgid "E&xit"
msgstr "Beenden"
-#: ../bin/misc.c:2601
+#: ../bin/menu.c:1034
msgid "&Undo"
msgstr "Rückgängig"
-#: ../bin/misc.c:2603
+#: ../bin/menu.c:1036
msgid "R&edo"
msgstr "Wiederholen"
-#: ../bin/misc.c:2606
+#: ../bin/menu.c:1039
msgid "Cu&t"
msgstr "Ausschneiden"
-#: ../bin/misc.c:2608
+#: ../bin/menu.c:1041
msgid "&Copy"
msgstr "Kopieren"
-#: ../bin/misc.c:2610
+#: ../bin/menu.c:1043
msgid "&Paste"
msgstr "Einfügen"
-#: ../bin/misc.c:2612
+#: ../bin/menu.c:1045
msgid "C&lone"
msgstr "K&lonen"
-#: ../bin/misc.c:2614
+#: ../bin/menu.c:1047
msgid "De&lete"
msgstr "Löschen"
-#: ../bin/misc.c:2622
+#: ../bin/menu.c:1055
msgid "Select &All"
msgstr "Alles auswählen"
-#: ../bin/misc.c:2624
+#: ../bin/menu.c:1059
msgid "Select By Index"
msgstr "Kennziffern auswählen"
-#: ../bin/misc.c:2625
+#: ../bin/menu.c:1061
msgid "&Deselect All"
msgstr "Alles abwählen"
-#: ../bin/misc.c:2626
+#: ../bin/menu.c:1063
msgid "&Invert Selection"
msgstr "Auswahl umkehren"
-#: ../bin/misc.c:2627
+#: ../bin/menu.c:1066
msgid "Select Stranded Track"
msgstr "Vereinzelte Gleise auswählen"
-#: ../bin/misc.c:2629
+#: ../bin/menu.c:1068
msgid "Tu&nnel"
msgstr "Tunnel"
-#: ../bin/misc.c:2630
+#: ../bin/menu.c:1070
msgid "B&ridge"
msgstr "B&rücke"
-#: ../bin/misc.c:2631
-msgid "Ties/NoTies"
-msgstr "Mit / ohne Schwellen"
+#: ../bin/menu.c:1072
+msgid "&Roadbed"
+msgstr "&Gleisbett"
-#: ../bin/misc.c:2632
+#: ../bin/menu.c:1076
msgid "Move to &Front"
msgstr "Nach vorne"
-#: ../bin/misc.c:2633
+#: ../bin/menu.c:1078
msgid "Move to &Back"
msgstr "Nach hinten"
-#: ../bin/misc.c:2644
+#: ../bin/menu.c:1093
msgid "Zoom &In"
msgstr "Zoom größer"
-#: ../bin/misc.c:2647
+#: ../bin/menu.c:1096
msgid "Zoom &Out"
msgstr "Zoom kleiner"
-#: ../bin/misc.c:2649
+#: ../bin/menu.c:1099
msgid "Zoom &Extents"
msgstr "Zoom G&esamt"
-#: ../bin/misc.c:2660
+#: ../bin/menu.c:1110
msgid "&Redraw"
msgstr "Neu zeichnen"
-#: ../bin/misc.c:2662
+#: ../bin/menu.c:1112
msgid "Redraw All"
msgstr "Alles neu zeichnen"
-#: ../bin/misc.c:2669
+#: ../bin/menu.c:1119
msgid "Show SnapGrid"
msgstr "Fangraster zeigen"
-#: ../bin/misc.c:2679
+#: ../bin/menu.c:1130
msgid "Enable Magnetic Snap"
msgstr "Magnetisches Fangen aktivieren"
-#: ../bin/misc.c:2694
-msgid "&Tool Bar"
-msgstr "Werkzeugleiste anpassen"
+#: ../bin/menu.c:1146
+msgid "&Toolbar Options..."
+msgstr "Konfiguration der Werkzeugleiste..."
-#: ../bin/misc.c:2727
+#: ../bin/menu.c:1180 ../bin/menu.c:1181
msgid "Control Element"
msgstr "Steuerungselement"
-#: ../bin/misc.c:2757
+#: ../bin/menu.c:1213
msgid "Change Scale"
msgstr "Maßstab ändern"
-#: ../bin/misc.c:2770
-msgid "&Loosen Tracks"
-msgstr "Gleise lockern"
-
-#: ../bin/misc.c:2777
+#: ../bin/menu.c:1229
msgid "Raise/Lower Elevations"
msgstr "Höhen auf/ab"
-#: ../bin/misc.c:2786
+#: ../bin/menu.c:1238
msgid "Recompute Elevations"
msgstr "Höhen neu berechnen"
-#: ../bin/misc.c:2804
+#: ../bin/menu.c:1256
msgid "L&ayout ..."
msgstr "Gleisplan..."
-#: ../bin/misc.c:2806
+#: ../bin/menu.c:1258
msgid "&Display ..."
msgstr "Anzeige..."
-#: ../bin/misc.c:2808
+#: ../bin/menu.c:1260
msgid "Co&mmand ..."
msgstr "Befehl..."
-#: ../bin/misc.c:2810
+#: ../bin/menu.c:1262
msgid "&Easements ..."
msgstr "Übergangsbögen..."
-#: ../bin/misc.c:2813
+#: ../bin/menu.c:1265
msgid "&Fonts ..."
msgstr "Schri&ftarten..."
-#: ../bin/misc.c:2815
+#: ../bin/menu.c:1267
msgid "Stic&ky ..."
msgstr "Dauerhaft..."
-#: ../bin/misc.c:2820
+#: ../bin/menu.c:1272
msgid "&Debug ..."
msgstr "&Fehlersuche..."
-#: ../bin/misc.c:2823
+#: ../bin/menu.c:1275
msgid "&Preferences ..."
msgstr "Einstellungen..."
-#: ../bin/misc.c:2825
+#: ../bin/menu.c:1277
msgid "&Colors ..."
msgstr "Farben..."
-#: ../bin/misc.c:2831
+#: ../bin/menu.c:1283
msgid "&Record ..."
msgstr "Aufzeichnen..."
-#: ../bin/misc.c:2833
+#: ../bin/menu.c:1285
msgid "&Play Back ..."
msgstr "Wiedergeben..."
-#: ../bin/misc.c:2839
+#: ../bin/menu.c:1291
msgid "Main window"
msgstr "Hauptfenster"
-#: ../bin/misc.c:2853
+#: ../bin/menu.c:1305
msgid "Recent Messages"
msgstr "Letzte Mitteilungen"
-#: ../bin/misc.c:2860
+#: ../bin/menu.c:1312
msgid "Tip of the Day..."
msgstr "Tipp des Tages..."
-#: ../bin/misc.c:2861
+#: ../bin/menu.c:1314
msgid "&Demos"
msgstr "&Demos"
-#: ../bin/misc.c:2862
+#: ../bin/menu.c:1315
msgid "Examples..."
msgstr "Beispiele..."
-#: ../bin/misc.c:2866 ../bin/smalldlg.c:205
+#: ../bin/menu.c:1319 ../bin/smalldlg.c:210
msgid "About"
msgstr "Ãœber"
-#: ../bin/misc.c:2879
+#: ../bin/menu.c:1332
msgid "Tur&nout Designer..."
msgstr "Weichendesigner..."
-#: ../bin/misc.c:2882
+#: ../bin/menu.c:1335
msgid "Layout &Control Elements"
msgstr "Steuerungselemente"
-#: ../bin/misc.c:2884
+#: ../bin/menu.c:1337
msgid "&Group"
msgstr "&Gruppierung"
-#: ../bin/misc.c:2886
+#: ../bin/menu.c:1339
msgid "&Ungroup"
msgstr "Gruppierung aufheben"
-#: ../bin/misc.c:2890
+#: ../bin/menu.c:1343
msgid "Custom defined parts..."
msgstr "Eigene Teile..."
-#: ../bin/misc.c:2893
+#: ../bin/menu.c:1346
msgid "Update Turnouts and Structures"
msgstr "Weichen und Gebäude aktualisieren"
-#: ../bin/misc.c:2902
+#: ../bin/menu.c:1355
msgid "Layers ..."
msgstr "Ebenen..."
-#: ../bin/misc.c:2906
+#: ../bin/menu.c:1359
msgid "Parts &List ..."
msgstr "Teile&liste..."
-#: ../bin/misc.c:2909
+#: ../bin/menu.c:1362
msgid "Price List..."
msgstr "Preisliste..."
-#: ../bin/misc.c:2954
+#: ../bin/menu.c:1391 ../bin/menu.c:1392
msgid "Import/Export"
msgstr "Import/Export"
-#: ../bin/misc.c:2986
+#: ../bin/misc.c:488 ../bin/misc.c:492
+msgid "ABORT"
+msgstr "ABBRUCH"
+
+#: ../bin/misc.c:491
+msgid ""
+"\n"
+"Do you want to save your layout?"
+msgstr ""
+"\n"
+"Wollen Sie Ihren Gleisplan speichern?"
+
+#: ../bin/misc.c:659
+msgid ""
+"Save changes to the layout design before closing?\n"
+"\n"
+"If you don't save now, your unsaved changes will be discarded."
+msgstr ""
+"Sollen die Änderungen an Ihrem Gleisplan vor dem Verlassen gespeichert "
+"werden?\n"
+"\n"
+"Wenn Sie jetzt nicht speichern, werden Ihre nicht gespeicherten Änderungen "
+"verworfen."
+
+#: ../bin/misc.c:661
+msgid "&Don't Save"
+msgstr "&Nicht speichern"
+
+#: ../bin/misc.c:992
msgid ""
"Program was not terminated properly. Do you want to resume working on the "
"previous trackplan?"
msgstr ""
-"Das Programm wurde nicht ordnungsgemäss beendet. Wollen Sie die Bearbeitung "
+"Das Programm wurde nicht ordnungsgemäß beendet. Wollen Sie die Bearbeitung "
"des vorherigen Gleisplans fortsetzen?"
-#: ../bin/misc.c:2987
+#: ../bin/misc.c:993
msgid "Resume"
msgstr "Fortsetzen"
-#: ../bin/misc.c:2987
+#: ../bin/misc.c:993
msgid "Resume with New Name"
msgstr "Wiederaufnahme mit neuem Namen"
-#: ../bin/misc.c:2987
+#: ../bin/misc.c:993
msgid "Ignore Checkpoint"
msgstr "Sicherungskopie ignorieren"
-#: ../bin/misc.c:2990
+#: ../bin/misc.c:996
#, c-format
msgid "Reload Checkpoint Selected\n"
msgstr "Ausgewählte Sicherungskopie laden\n"
-#: ../bin/misc.c:2992
+#: ../bin/misc.c:998
#, c-format
msgid "Reload Checkpoint With New Name Selected\n"
msgstr "Sicherungskopie mit neuem Namen laden\n"
-#: ../bin/misc.c:2994
+#: ../bin/misc.c:1000
#, c-format
msgid "Ignore Checkpoint Selected\n"
msgstr "Ausgewählte Sicherungskopie ignorieren\n"
-#: ../bin/misc.c:3106
+#: ../bin/misc.c:1122
#, c-format
msgid "Unnamed Trackplan - %s(%s)"
msgstr "Unbenannter Gleisplan - %s(%s)"
-#: ../bin/misc.c:3193
+#: ../bin/misc.c:1177
msgid "Initializing commands"
msgstr "Initialisiere Befehle"
-#: ../bin/misc.c:3202
+#: ../bin/misc.c:1186
msgid "Initializing menus"
msgstr "Initialisiere Menüs"
-#: ../bin/misc.c:3238
+#: ../bin/misc.c:1218
msgid "Reading parameter files"
msgstr "Einlesen der Parameterdateien"
-#: ../bin/misc.c:3276
+#: ../bin/misc.c:1262
msgid "Initialization complete"
msgstr "Initialisierung beendet"
-#: ../bin/param.c:65
+#: ../bin/param.c:77
msgid "Unexpected End Of String"
msgstr "Unerwartetes Zeichenkettenende"
-#: ../bin/param.c:72
+#: ../bin/param.c:84
msgid "Expected digit"
msgstr "Erwartete Ziffer"
-#: ../bin/param.c:79
+#: ../bin/param.c:92
msgid "Overflow"
-msgstr "Ãœberlau"
+msgstr "Ãœberlauf"
-#: ../bin/param.c:127
+#: ../bin/param.c:141
msgid "Divide by 0"
msgstr "Division durch 0"
-#: ../bin/param.c:135
+#: ../bin/param.c:149
msgid "Expected /"
msgstr "Erwartet /"
-#: ../bin/param.c:221
+#: ../bin/param.c:234
msgid "Invalid Units Indicator"
-msgstr "Ungültige Masseinheit"
+msgstr "Ungültige Maßeinheit"
-#: ../bin/param.c:249
+#: ../bin/param.c:262
msgid "Expected End Of String"
msgstr "Zeichenkettenende erwartet"
-#: ../bin/param.c:275 ../bin/param.c:1425
+#: ../bin/param.c:290 ../bin/param.c:1529
#, c-format
msgid "Invalid Number"
msgstr "Ungültige Zahl"
-#: ../bin/param.c:335
+#: ../bin/param.c:350
msgid "End Of String"
msgstr "Ende der Zeichenkette"
-#: ../bin/param.c:1387
+#: ../bin/param.c:1487
#, c-format
msgid "Enter a value > %ld"
msgstr "Einen Wert größer als %ld eingeben"
-#: ../bin/param.c:1389
+#: ../bin/param.c:1490
#, c-format
msgid "Enter a value < %ld"
msgstr "Einen Wert kleiner als %ld eingeben"
-#: ../bin/param.c:1391
+#: ../bin/param.c:1492
#, c-format
msgid "Enter a value between %ld and %ld"
msgstr "Einen Wert zwischen %ld und %ld eingeben"
-#: ../bin/param.c:1458
+#: ../bin/param.c:1569
#, c-format
msgid "Enter a value > %s"
msgstr "Einen Wert größer als %s eingeben"
-#: ../bin/param.c:1461
+#: ../bin/param.c:1573
#, c-format
msgid "Enter a value < %s"
msgstr "Einen Wert kleiner als %s eingeben"
-#: ../bin/param.c:1464
+#: ../bin/param.c:1576
#, c-format
msgid "Enter a value between %s and %s"
msgstr "Einen Wert zwischen %s und %s eingeben"
-#: ../bin/param.c:1556
+#: ../bin/param.c:1675
msgid "String cannot be blank"
msgstr "Text kann nicht leer sein"
-#: ../bin/param.c:1674
+#: ../bin/param.c:1690
+#, c-format
+msgid "String is too long, Max length is %u"
+msgstr "Der Text ist zu lang. Die maximale Länge beträgt %u"
+
+#: ../bin/param.c:1824
msgid "Invalid input(s), please correct the hilighted field(s)"
msgstr "Ungültige Eingabe(n), bitte die markierten Felder korrigieren"
-#: ../bin/param.c:2746
+#: ../bin/param.c:3044
msgid "Help"
msgstr "Hilfe"
-#: ../bin/paramfile.c:257
+#: ../bin/paramfile.c:258
msgid "Parameter"
msgstr "Parameter"
-#: ../bin/paramfile.c:354
+#: ../bin/paramfile.c:363
msgid "Unknown param file line - skip until next good object?"
msgstr ""
-"Unbekannte Parameter-Dateizeile - bis zum nächsten guten Objekt "
-"überspringen?"
+"Unbekannte Parameter-Dateizeile - bis zum nächsten guten Objekt überspringen?"
#: ../bin/paramfilelist.c:69
#, c-format
msgid ""
-"The parameter file: %s could not be found and was probably deleted or moved."
-" The file is removed from the active parameter file list."
+"The parameter file: %s could not be found and was probably deleted or moved. "
+"The file is removed from the active parameter file list."
msgstr ""
-"Dei Parameter-Datei %s wurde nicht gefunden und wurde wahrscheinlich "
-"gelöscht oder verschoben. Die Datei wird von der Liste der aktiven Paramter-"
+"Die Parameter-Datei %s wurde nicht gefunden und wurde wahrscheinlich "
+"gelöscht oder verschoben. Die Datei wird von der Liste der aktiven Parameter-"
"Dateien entfernt."
-#: ../bin/paramfilelist.c:119
+#: ../bin/paramfilelist.c:126
#, c-format
msgid "Updating %s"
msgstr "Aktualisiere %s"
-#: ../bin/paramfilesearch_ui.c:53
+#: ../bin/paramfilesearch_ui.c:52
msgid "Fit Any"
msgstr "Passt immer"
-#: ../bin/paramfilesearch_ui.c:53
+#: ../bin/paramfilesearch_ui.c:52
msgid "Fit Compatible"
msgstr "Kompatibel"
-#: ../bin/paramfilesearch_ui.c:53
+#: ../bin/paramfilesearch_ui.c:52
msgid "Fit Exact"
msgstr "Passt genau"
-#: ../bin/paramfilesearch_ui.c:191
+#: ../bin/paramfilesearch_ui.c:192
#, c-format
msgid "%u parameter files in library. %d Fit Scale."
msgstr "%u Parameterdateien in der Bibliothek. %d Maßstab anpassen."
-#: ../bin/paramfilesearch_ui.c:308
+#: ../bin/paramfilesearch_ui.c:307
#, c-format
msgid "%d parameter files found. %d Fit Scale"
msgstr "%d Parameterdateien gefunden. %d Maßstab anpassen"
@@ -6505,43 +6454,86 @@ msgstr "%d Parameterdateien gefunden. %d Maßstab anpassen"
msgid "No matches found."
msgstr "Keine Ãœbereinstimmungen gefunden."
-#: ../bin/paramfilesearch_ui.c:476
+#: ../bin/paramfilesearch_ui.c:477
msgid "Choose parameter files"
msgstr "Parameterdateien auswählen"
-#: ../bin/paramfilesearch_ui.c:494
+#: ../bin/paramfilesearch_ui.c:495
msgid "No system parameter files found, search is disabled."
msgstr "Keine Parameterdateien gefunden, die Suche ist deaktiviert."
-#: ../bin/partcatalog.c:736
+#: ../bin/partcatalog.c:739
msgid "Found: "
-msgstr "Gefunden:"
+msgstr "Gefunden: "
-#: ../bin/partcatalog.c:737
+#: ../bin/partcatalog.c:740
msgid "Similar: "
-msgstr "Ähnlich:"
+msgstr "Ähnlich: "
-#: ../bin/partcatalog.c:738
+#: ../bin/partcatalog.c:741
msgid "Ignored: "
-msgstr "Ãœbersprungen:"
+msgstr "Ãœbersprungen: "
-#: ../bin/partcatalog.c:739
+#: ../bin/partcatalog.c:742
msgid "Not found: "
-msgstr "Nicht gefunden:"
+msgstr "Nicht gefunden: "
+
+#: ../bin/scale.c:301
+#, c-format
+msgid ""
+"Invalid Scale: playback aborted\n"
+" SCALE %s"
+msgstr ""
+"Ungültiger Maßstab, Wiedergabe abgebrochen\n"
+" SCALE %s"
+
+#: ../bin/scale.c:845 ../bin/scale.c:870
+msgid "Ratio"
+msgstr "Verhältnis"
+
+#: ../bin/scale.c:854
+msgid "Do not resize track"
+msgstr "Gleismaße nicht ändern"
+
+#: ../bin/scale.c:858
+msgid "Rescale by:"
+msgstr "Skalieren um:"
+
+#: ../bin/scale.c:860
+msgid "From:"
+msgstr "Von:"
+
+#: ../bin/scale.c:864
+msgid "To: "
+msgstr "Nach: "
+
+#: ../bin/scale.c:913
+msgid "Rescale Tracks"
+msgstr "Gleise skalieren"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:473
+#: ../bin/scale.c:1084 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1258
+msgid "Rescale"
+msgstr "Maßstab ändern"
+
+#: ../bin/scale.c:1134
+#, c-format
+msgid "%ld Objects to be rescaled"
+msgstr "Maßstab für %ld Objekte wird geändert"
-#: ../bin/smalldlg.c:46
+#: ../bin/smalldlg.c:45
msgid "Show tips at start"
msgstr "Tipps beim Start anzeigen"
-#: ../bin/smalldlg.c:52
+#: ../bin/smalldlg.c:51
msgid "Did you know..."
msgstr "Wussten Sie schon..."
-#: ../bin/smalldlg.c:54
+#: ../bin/smalldlg.c:53
msgid "Previous Tip"
msgstr "Vorheriger Tipp"
-#: ../bin/smalldlg.c:55
+#: ../bin/smalldlg.c:54
msgid "Next Tip"
msgstr "Nächster Tipp"
@@ -6549,11 +6541,11 @@ msgstr "Nächster Tipp"
msgid "Tip of the Day"
msgstr "Tipp des Tages"
-#: ../bin/smalldlg.c:81
+#: ../bin/smalldlg.c:82
msgid "No tips are available"
msgstr "Es sind keine Tipps verfügbar"
-#: ../bin/smalldlg.c:182
+#: ../bin/smalldlg.c:187
msgid ""
"XTrackCAD is a CAD (computer-aided design) program for designing model "
"railroad layouts."
@@ -6561,94 +6553,90 @@ msgstr ""
"XTrackCAD ist ein CAD (Computer-unterstützter Entwurf) Programm\n"
"zum Entwerfen von Modelleisenbahnanlagen."
-#: ../bin/svgoutput.c:484
-msgid "Export to SVG"
-msgstr "Als SVG exportieren"
-
-#: ../bin/tbezier.c:184
+#: ../bin/tbezier.c:214
#, c-format
msgid "Bez: L%s A%0.3f trk_len=%s min_rad=%s"
msgstr "Bez: L%s A%0.3f trk_len=%s min_rad=%s"
-#: ../bin/tbezier.c:254
+#: ../bin/tbezier.c:288
msgid "Ctl Pt 1: X,Y"
msgstr "Kontrollpunkt 1: X,Y"
-#: ../bin/tbezier.c:255
+#: ../bin/tbezier.c:289
msgid "Ctl Pt 2: X,Y"
msgstr "Kontrollpunkt 1: X,Y"
-#: ../bin/tbezier.c:261
+#: ../bin/tbezier.c:295
msgid "MinRadius"
msgstr "Mindestradius"
-#: ../bin/tbezier.c:266
+#: ../bin/tbezier.c:300
msgid "Line Color"
msgstr "Linienfarbe"
-#: ../bin/tbezier.c:393
+#: ../bin/tbezier.c:440
#, c-format
msgid ""
-"Bezier %s(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] "
-"[%0.3f,%0.3f] CP1=[%0.3f,%0.3f] CP2=[%0.3f, %0.3f]"
+"Bezier %s(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,"
+"%0.3f] CP1=[%0.3f,%0.3f] CP2=[%0.3f, %0.3f]"
msgstr ""
"Bezier-Kurve %s(%d): Ebene=%u Minimal-Radius=%s Länge=%s EP=[%0.3f,%0.3f] "
"[%0.3f,%0.3f] CP1=[%0.3f,%0.3f] CP2=[%0.3f, %0.3f]"
-#: ../bin/tbezier.c:467
+#: ../bin/tbezier.c:514
msgid "Bezier Track"
msgstr "Beziergleis"
-#: ../bin/tcornu.c:232
+#: ../bin/tcornu.c:246
#, c-format
msgid "Cornu: L %s A %0.3f L %s MinR %s"
msgstr "Cornu: L %s A %0.3f L %s MinR %s"
-#: ../bin/tcornu.c:304
+#: ../bin/tcornu.c:321
msgid "Radius "
msgstr "Radius "
-#: ../bin/tcornu.c:312
+#: ../bin/tcornu.c:329
msgid "Minimum Radius"
msgstr "Mindestradius"
-#: ../bin/tcornu.c:313
+#: ../bin/tcornu.c:330
msgid "Max Rate Of Curve Change/Scale"
msgstr "Maximale Änderungsrate der Kurve"
-#: ../bin/tcornu.c:314
+#: ../bin/tcornu.c:331
msgid "Total Winding Angle"
msgstr "Gesamtwinkel"
-#: ../bin/tcornu.c:452
+#: ../bin/tcornu.c:476
#, c-format
msgid ""
-"Cornu Track(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] "
-"[%0.3f,%0.3f]"
+"Cornu Track(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,"
+"%0.3f]"
msgstr ""
-"Cornu-Bogen(%d): Ebene=%u Minimal-Radius=%s Länge=%s EP=[%0.3f,%0.3f] "
-"[%0.3f,%0.3f]"
+"Cornu-Bogen(%d): Ebene=%u Minimal-Radius=%s Länge=%s EP=[%0.3f,%0.3f] [%0.3f,"
+"%0.3f]"
-#: ../bin/tcornu.c:505
+#: ../bin/tcornu.c:532
msgid "Cornu Track"
msgstr "Cornu-Gleis"
-#: ../bin/tcurve.c:250
+#: ../bin/tcurve.c:259
#, c-format
msgid "Helix: Turns %ld L %0.2f Grade %0.1f%% Sep %0.2f"
msgstr "Gleiswendel: Windungen %ld L %0.2f Steigung %0.1f%% Abstand%0.2f"
-#: ../bin/tcurve.c:256
+#: ../bin/tcurve.c:265
#, c-format
msgid "Helix: Turns %ld L %0.2f"
msgstr "Gleiswendel: Windungen %ld L %0.2f"
-#: ../bin/tcurve.c:378 ../bin/tcurve.c:380 ../bin/tease.c:510
-#: ../bin/tease.c:512 ../bin/tstraigh.c:87 ../bin/tstraigh.c:89
+#: ../bin/tcurve.c:397 ../bin/tcurve.c:399 ../bin/tease.c:525
+#: ../bin/tease.c:527 ../bin/tstraigh.c:88 ../bin/tstraigh.c:90
msgid "Z"
msgstr "Z"
-#: ../bin/tcurve.c:565
+#: ../bin/tcurve.c:591
#, c-format
msgid ""
"Helix Track(%d): Layer=%d Radius=%s Turns=%ld Length=%s Center=[%s,%s] "
@@ -6657,186 +6645,189 @@ msgstr ""
"Gleiswendel(%d): Ebene=%d Radius=%s Windungen=%ld Länge=%s Mitte=[%s,%s] "
"EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
-#: ../bin/tcurve.c:575
+#: ../bin/tcurve.c:602
#, c-format
msgid ""
-"Curved Track(%d): Layer=%d Radius=%s Length=%s Center=[%s,%s] "
-"EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
+"Curved Track(%d): Layer=%d Radius=%s Length=%s Center=[%s,%s] EP=[%0.3f,"
+"%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
msgstr ""
-"Gleisbogenl(%d): Ebene=%d Radius=%s Länge=%s Mitte=[%s,%s] EP=[%0.3f,%0.3f "
+"Gleisbogen(%d): Ebene=%d Radius=%s Länge=%s Mitte=[%s,%s] EP=[%0.3f,%0.3f "
"A%0.3f] [%0.3f,%0.3f A%0.3f]"
-#: ../bin/tcurve.c:652
+#: ../bin/tcurve.c:681
msgid "Helix Track"
msgstr "Gleiswendel"
-#: ../bin/tcurve.c:658
+#: ../bin/tcurve.c:687
msgid "Curved Track"
msgstr "Gleisbogen"
-#: ../bin/tcurve.c:1033
+#: ../bin/tcurve.c:1232
msgid "Merge Curves"
msgstr "Kurven zusammenfassen"
-#: ../bin/tcurve.c:1102
+#: ../bin/tcurve.c:1306
msgid "Drag to change angle or create tangent"
msgstr "Ziehen um den Winkel zu ändern oder eine Tangente zu erstellen"
-#: ../bin/tcurve.c:1135 ../bin/tcurve.c:1167
+#: ../bin/tcurve.c:1341 ../bin/tcurve.c:1374
msgid "Curved "
msgstr "Gebogen "
-#: ../bin/tcurve.c:1141
+#: ../bin/tcurve.c:1347
msgid "Tangent "
msgstr "Tangente "
-#: ../bin/tcurve.c:1150
+#: ../bin/tcurve.c:1356
#, c-format
msgid "Tangent track: Length %s Angle %0.3f"
msgstr "Gleistangente: Länge=%s Winkel=%0.3f"
-#: ../bin/tcurve.c:1172
+#: ../bin/tcurve.c:1378
#, c-format
msgid "Curved: Radius=%s Length=%s Angle=%0.3f"
msgstr "Bogen: Radius=%s Länge=%s Winkel=%0.3f"
-#: ../bin/tease.c:517
+#: ../bin/tease.c:532
msgid "l0"
msgstr "l0"
-#: ../bin/tease.c:518
+#: ../bin/tease.c:533
msgid "l1"
msgstr "l1"
-#: ../bin/tease.c:560
+#: ../bin/tease.c:581
#, c-format
msgid ""
"Joint Track(%d): Layer=%d Length=%0.3f EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f "
"A%0.3f]"
msgstr ""
-"Übergangsbogen(%d): Ebene=%d Länge=%0.3f EP=[%0.3f,%0.3f A%0.3f] "
-"[%0.3f,%0.3f A%0.3f]"
+"Übergangsbogen(%d): Ebene=%d Länge=%0.3f EP=[%0.3f,%0.3f A%0.3f] [%0.3f,"
+"%0.3f A%0.3f]"
-#: ../bin/tease.c:605
+#: ../bin/tease.c:629
msgid "Easement Track"
-msgstr "Ãœgangsbogengleis"
+msgstr "Ãœbergangsbogengleis"
-#: ../bin/tease.c:1330
+#: ../bin/tease.c:1407
msgid "Merge Easements"
msgstr "Übergangsbögen zusammenfassen"
-#: ../bin/tease.c:1398
+#: ../bin/tease.c:1481
msgid "Split Easement Curve"
msgstr "Ãœbergangsbogen auftrennen"
-#: ../bin/textnoteui.c:209
+#: ../bin/textnoteui.c:175
#, c-format
-msgid "Note: Layer=%d %-.80s"
-msgstr "Notiz: Ebene=%d %-.80s"
+msgid "Text Note(%d) Layer=%d %-.80s"
+msgstr "Notiz(%d): Ebene=%d %-.80s"
-#: ../bin/textnoteui.c:220
-msgid "Update comment"
-msgstr "Kommentar aktualisieren"
+#: ../bin/textnoteui.c:189
+msgid "Update Text Note"
+msgstr "Textnotiz aktualisieren"
-#: ../bin/textnoteui.c:232
+#: ../bin/textnoteui.c:200
msgid "Replace this text with your note"
msgstr "Ersetzen Sie diesen Text durch Ihre Notizen"
-#: ../bin/textnoteui.c:236
+#: ../bin/textnoteui.c:206
msgid "Create Text Note"
msgstr "Erstelle Textnotiz"
-#: ../bin/track.c:274
+#: ../bin/track.c:293
msgid "No track or structure pieces are present in layout"
msgstr "Im Gleisplan sind keine Gleis- oder Gebäudeelemente vorhanden"
-#: ../bin/track.c:276
+#: ../bin/track.c:295
msgid "No track or structure pieces are selected"
msgstr "Es werden keine Gleis- oder Gebäudeelemente ausgewählt"
-#: ../bin/track.c:1379
+#: ../bin/track.c:1464
msgid "Move Objects Above"
msgstr "Objekte nach oben"
-#: ../bin/track.c:1399
+#: ../bin/track.c:1484
msgid "Mode Objects Below"
msgstr "Objekte nach unten"
-#: ../bin/track.c:1692
+#: ../bin/track.c:1788
msgid "Audit"
msgstr "Protokoll"
-#: ../bin/track.c:1981
+#: ../bin/track.c:1993
#, c-format
-msgid "%d Track(s) loosened"
-msgstr "%d Gleis(e) gelockert"
-
-#: ../bin/track.c:1988
-msgid "No tracks loosened"
-msgstr "Keine Gleise gelockert"
+msgid "Connecting a car to a non-car T%d T%d"
+msgstr "Verbinde einen Wagen (T%d) mit einem sonstiges Objekt (T%d)"
-#: ../bin/track.c:1998 ../bin/track.c:2002
+#: ../bin/track.c:2003 ../bin/track.c:2008
#, c-format
msgid "Connecting a non-track(%d) to (%d)"
msgstr "Verbinde ein sonstiges Objekt (%d) mit einem Gleis (%d)"
-#: ../bin/track.c:2057
+#: ../bin/track.c:2050
+#, c-format
+msgid "Disconnecting a car from a non-car T%d T%d"
+msgstr "Einen Wagen von einem anderen Objekt abkuppeln T%d T%d"
+
+#: ../bin/track.c:2084
msgid "Join Abutting Tracks"
msgstr "Aneinander grenzende Gleise verbinden"
-#: ../bin/track.c:2345 ../bin/track.c:2380
+#: ../bin/track.c:2410 ../bin/track.c:2447
msgid "Inside turnout track"
msgstr "Inneres Weichengleis"
-#: ../bin/track.c:2363
+#: ../bin/track.c:2428
#, c-format
msgid "Curve: Length=%s Radius=%0.3f Arc=%0.3f"
msgstr "Bogen: Länge = %s Radius=%0.3f Winkel = %0.3f"
-#: ../bin/track.c:2386 ../bin/track.c:2444 ../bin/tstraigh.c:646
+#: ../bin/track.c:2455 ../bin/track.c:2520 ../bin/tstraigh.c:853
#, c-format
msgid "Straight: Length=%s Angle=%0.3f"
msgstr "Gerade: Länge=%s Winkel=%0.3f"
-#: ../bin/track.c:3571
+#: ../bin/track.c:3377
#, c-format
-msgid "%s[%0.2f,%0.2f] A%0.2f"
-msgstr "%s[%0.2f,%0.2f] A%0.2f"
+msgid "[%0.2f,%0.2f] A%0.2f"
+msgstr "[%0.2f,%0.2f] A%0.2f"
-#: ../bin/track.c:3573
+#: ../bin/track.c:3381
#, c-format
-msgid "%s[%0.2f,%0.2f] A%0.2f\n"
-msgstr "%s[%0.2f,%0.2f] A%0.2f\n"
+msgid "[%0.2f,%0.2f] A%0.2f\n"
+msgstr ""
+"[%0.2f,%0.2f] A%0.2f\n"
+"\n"
-#: ../bin/trknote.c:55
-msgid "Comment"
-msgstr "Kommentar"
+#: ../bin/trknote.c:52 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:154
+msgid "Text Note"
+msgstr "Textnotiz"
-#: ../bin/trknote.c:56
+#: ../bin/trknote.c:53
msgid "Link"
msgstr "Weblink"
-#: ../bin/trknote.c:56 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:104
+#: ../bin/trknote.c:53 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:105
msgid "Weblink"
msgstr "Weblink"
-#: ../bin/trknote.c:639 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:112
+#: ../bin/trknote.c:522 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:113
msgid "Place a note on the layout"
msgstr "Eine Notiz auf den Gleisplan setzen"
-#: ../bin/trknote.c:653
+#: ../bin/trknote.c:536
msgid "New Note"
msgstr "Neue Notiz"
-#: ../bin/trknote.c:709
+#: ../bin/trknote.c:590
msgid "Add notes"
msgstr "Notizen hinzufügen"
-#: ../bin/tstraigh.c:91
+#: ../bin/tstraigh.c:92
msgid "Track Angle"
msgstr "Gleiswinkel"
-#: ../bin/tstraigh.c:194
+#: ../bin/tstraigh.c:212
#, c-format
msgid ""
"Straight Track(%d): Layer=%d Length=%s EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f "
@@ -6845,276 +6836,299 @@ msgstr ""
"Gleisgerade(%d): Ebene=%d Länge=%s EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f "
"A%0.3f]"
-#: ../bin/tstraigh.c:559
+#: ../bin/tstraigh.c:762
msgid "Extending Straight Track"
msgstr "Gleisgerade verlängern"
-#: ../bin/tstraigh.c:639
+#: ../bin/tstraigh.c:845
msgid "Straight "
msgstr "Gerade "
-#: ../wlib/gtklib/filesel.c:94
-msgid "Save format:"
-msgstr "Speicherformat:"
+#: ../bin/toolbar.c:98
+msgid "File Buttons"
+msgstr "Aktionen für Dateien"
-#: ../wlib/gtklib/filesel.c:187
-msgid "Image files"
-msgstr "Grafikdateien"
+#: ../bin/toolbar.c:99
+msgid "Print Buttons"
+msgstr "Aktionen für Druck"
-#: ../wlib/gtklib/font.c:282
-msgid "Font Select"
-msgstr "Auswahl der Schriftart"
+#: ../bin/toolbar.c:100
+msgid "Import/Export Buttons"
+msgstr "Import/Export Aktionen"
-#: ../wlib/gtklib/help.c:84 ../wlib/mswlib/mswmisc.c:2274
-msgid "&Contents"
-msgstr "Inhalt"
+#: ../bin/toolbar.c:101
+msgid "Zoom Buttons"
+msgstr "Aktionen für Zoom"
-#: ../wlib/gtklib/help.c:85
-msgid "Co&mmand Context help"
-msgstr "Kontexthilfe für Befehle"
+#: ../bin/toolbar.c:102
+msgid "Undo Buttons"
+msgstr "Aktionen für Rückgängig/Wiederholen"
-#: ../wlib/gtklib/ixhelp.c:243
-msgid "Home"
-msgstr "Startseite"
+#: ../bin/toolbar.c:103
+msgid "Easement Button"
+msgstr "Aktionen für Übergangsbogen"
-#: ../wlib/gtklib/ixhelp.c:247
-msgid "Contents"
-msgstr "Inhaltsverzeichnis"
+#: ../bin/toolbar.c:104
+msgid "SnapGrid Buttons"
+msgstr "Aktionen für Fangraster"
-#: ../wlib/gtklib/menu.c:541
-msgid "<Empty List>"
-msgstr "<Leere Liste>"
+#: ../bin/toolbar.c:105
+msgid "Create Track Buttons"
+msgstr "Aktionen um Gleise zu erstellen"
-#: ../wlib/gtklib/notice.c:101 ../wlib/mswlib/mswmisc.c:2134
-#: ../wlib/mswlib/mswmisc.c:2177
-msgid "Warning"
-msgstr "Warnung"
+#: ../bin/toolbar.c:106
+msgid "Layout Control Elements"
+msgstr "Aktionen zur Anlagensteuerung"
-#: ../wlib/gtklib/notice.c:106 ../wlib/mswlib/mswmisc.c:2139
-msgid "Error"
-msgstr "Fehler"
+#: ../bin/toolbar.c:107
+msgid "Modify Track Buttons"
+msgstr "Verändere Gleise"
-#: ../wlib/gtklib/text.c:300
-#, c-format
-msgid "%d of %d"
-msgstr "%d von %d"
+#: ../bin/toolbar.c:108
+msgid "Properties/Select"
+msgstr "Eigenschaften/Auswählen"
-#: ../wlib/gtklib/wpref.c:123
-#, c-format
-msgid ""
-"The required configuration files could not be located in the expected location.\n"
-"\n"
-"Usually this is an installation problem. Make sure that these files are installed in either \n"
-" ../share/xtrkcad or\n"
-" /usr/share/%s or\n"
-" /usr/local/share/%s\n"
-"If this is not possible, the environment variable %s must contain the name of the correct directory."
-msgstr ""
-"Die notwendigen Konfigurationsdateien konnten nicht im erwarteten Verzeichnis gefunden werden.\n"
-"\n"
-"Ãœblicherweise ist dies ein Installationsproblem. Stellen Sie sicher, dass diese Dateien in entweder\n"
-"../share/xtrkcad oder\n"
-"/usr/share/%s oder\n"
-"/usr/local/share/%s\n"
-"gespeichert sind. Sollte das nicht möglich sein, muss die Umgebungsvariable %s den Namen des korrekten Verzeichnis enthalten."
-
-#: ../wlib/gtklib/wpref.c:157 ../wlib/gtklib/wpref.c:202
-msgid "HOME is not set"
-msgstr "HOME ist nicht gesetzt"
-
-#: ../wlib/gtklib/wpref.c:157 ../wlib/gtklib/wpref.c:166
-#: ../wlib/gtklib/wpref.c:202
-msgid "Exit"
-msgstr "Beenden"
+#: ../bin/toolbar.c:109
+msgid "Track Group Buttons"
+msgstr "Aktionen um Objekte zusammzufassen und zu organisieren"
-#: ../wlib/gtklib/wpref.c:165
-#, c-format
-msgid "Cannot create %s"
-msgstr "Kann %s nicht erstellen"
+#: ../bin/toolbar.c:110
+msgid "Train Group Buttons"
+msgstr "Zugbetrieb starten oder beenden"
-#: ../wlib/mswlib/backgnd.c:104
-msgid "Image file is invalid or cannot be read."
-msgstr "Die Bilddatei ist ungültig oder kann nicht gelesen werden."
+#: ../bin/toolbar.c:111
+msgid "Create Misc Buttons"
+msgstr "Werkzeuge zum Zeichnen/Schrift"
-#: ../wlib/mswlib/mswmenu.c:888
-msgid "Ctrl+"
-msgstr "Strg+"
+#: ../bin/toolbar.c:112
+msgid "Ruler Button"
+msgstr "Lineal"
-#: ../wlib/mswlib/mswmenu.c:893
-msgid "Alt+"
-msgstr "Alt+"
+#: ../bin/toolbar.c:113
+msgid "Layer Buttons"
+msgstr "Ebenen"
-#: ../wlib/mswlib/mswmenu.c:898
-msgid "Shift+"
-msgstr "Umsch+"
+#: ../bin/toolbar.c:114
+msgid "Hot Bar"
+msgstr "Schnellauswahl"
-#: ../wlib/mswlib/mswmenu.c:904
-msgid "Space"
-msgstr "Abstand"
+#: ../bin/toolbar.c:133
+#, fuzzy
+msgid "Invert Selection"
+msgstr "Auswahl umkehren"
+
+#: ../bin/toolbar.c:229
+#, fuzzy
+msgid "Toolbar Options"
+msgstr "Konfiguration der Werkzeugleiste"
+
+#: ../bin/svgoutput.c:483
+msgid "Export to SVG"
+msgstr "Als SVG exportieren"
-#: ../wlib/mswlib/mswmisc.c:195
+#: ../wlib/mswlib/mswmisc.c:188
msgid "All image files"
msgstr "Alle Grafikdateien"
-#: ../wlib/mswlib/mswmisc.c:197
+#: ../wlib/mswlib/mswmisc.c:190
msgid "GIF files (*.gif)"
msgstr "GIF Dateien (*.gif)"
-#: ../wlib/mswlib/mswmisc.c:199
+#: ../wlib/mswlib/mswmisc.c:192
msgid "JPEG files (*.jpeg,*.jpg)"
msgstr "JPEG Dateien (*.jpeg,*.jpg)"
-#: ../wlib/mswlib/mswmisc.c:201
+#: ../wlib/mswlib/mswmisc.c:194
msgid "PNG files (*.png)"
msgstr "PNG Dateien (*.png)"
-#: ../wlib/mswlib/mswmisc.c:203
+#: ../wlib/mswlib/mswmisc.c:196
msgid "TIFF files (*.tiff, *.tif)"
msgstr "TIFF Dateien (*.tiff, *.tif)"
-#: ../wlib/mswlib/mswmisc.c:205
+#: ../wlib/mswlib/mswmisc.c:198
msgid "All files (*)"
msgstr "Alle Dateien (*)"
-#: ../wlib/mswlib/mswmisc.c:2275
+#: ../wlib/mswlib/mswmisc.c:2062 ../wlib/mswlib/mswmisc.c:2105
+msgid "Warning"
+msgstr "Warnung"
+
+#: ../wlib/mswlib/mswmisc.c:2067
+msgid "Error"
+msgstr "Fehler"
+
+#: ../wlib/mswlib/mswmisc.c:2203
+msgid "&Contents"
+msgstr "Inhalt"
+
+#: ../wlib/mswlib/mswmisc.c:2204
msgid "&Search for Help on..."
msgstr "&Suche Hilfe für..."
-#: ../wlib/mswlib/mswmisc.c:2276
+#: ../wlib/mswlib/mswmisc.c:2205
msgid "Co&mmand Context Help"
msgstr "Ko&ntexthilfe für Befehle"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:9
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:9
#, c-format
msgid ""
-"MSG_BETA_NOTICE\tXTrackCAD Version %s: Please note that this Beta Version of"
-" XTrackCAD is still undergoing final testing before its official release. "
-"The sole purpose of this Beta Version is to conduct testing and obtain "
-"feedback. Should you encounter any bugs, glitches, lack of functionality or "
-"other problems, please let us know immediately so we can rectify these "
+"MSG_BETA_NOTICE\tXTrackCAD Version %s: Please note that this Beta Version of "
+"XTrackCAD is still undergoing final testing before its official release. The "
+"sole purpose of this Beta Version is to conduct testing and obtain feedback. "
+"Should you encounter any bugs, glitches, lack of functionality or other "
+"problems, please let us know immediately so we can rectify these "
"accordingly. Your help in this regard is greatly appreciated!"
msgstr ""
-"MSG_BETA_NOTICE\tXTrackCAD Version %s: Bitte denken Sie daran, dass sich diese Beta-Version von XTrackCAD noch in der abschließenden Testphase befindet. Der einzige Zweck dieser Beta-Version von XTrackCAD ist der abschließende Test vor der offiziellen Freigabe. Sollten Sie Fehler, \n"
-"Schwächen, fehlende Funktionalität oder andere Problem finden, informieren Sie uns bitte unmittelbar, damit wir diese korrigieren können. Ihre Hilfe dabei ist sehr willkommen!"
+"MSG_BETA_NOTICE\tXTrackCAD Version %s: Bitte denken Sie daran, dass sich "
+"diese Beta-Version von XTrackCAD noch in der abschließenden Testphase "
+"befindet. Der einzige Zweck dieser Beta-Version von XTrackCAD ist der "
+"abschließende Test vor der offiziellen Freigabe. Sollten Sie Fehler, \n"
+"Schwächen, fehlende Funktionalität oder andere Problem finden, informieren "
+"Sie uns bitte unmittelbar, damit wir diese korrigieren können. Ihre Hilfe "
+"dabei ist sehr willkommen!"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:10
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:10
#, c-format
msgid ""
-"MSG_CANT_PLACE_FROGPOINTS\tFrog|Points cannot be placed on a turnout, circle"
-" or helix.\tA %s cannot be placed on a turnout, circle or helix."
+"MSG_CANT_PLACE_FROGPOINTS\tFrog|Points cannot be placed on a turnout, circle "
+"or helix.\tA %s cannot be placed on a turnout, circle or helix."
msgstr ""
"MSG_CANT_PLACE_FROGPOINTS\tHerzstück|Zungen können nicht auf eine Weiche, "
"einen Kreis oder eine Gleiswendel gesetzt werden.\tEin %s kann nicht auf "
"eine Weiche, einen Kreis oder eine Gleiswendel gelegt werden."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:11
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:11
msgid ""
"MSG_SEL_TRK_FROZEN\tA frozen layer contains selected track. Command cannot "
"be executed."
msgstr ""
-"MSG_SEL_TRK_FROZEN\tEine eingefrorene Ebene enthält ausgewählte...\tEine eingefrorene Ebene enthält ausgewählte Gleise.\n"
+"MSG_SEL_TRK_FROZEN\tEine eingefrorene Ebene enthält ausgewählte...\tEine "
+"eingefrorene Ebene enthält ausgewählte Gleise.\n"
"Der Befehl kann nicht ausgeführt werden."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:12
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:12
msgid "MSG_HELIX_TURNS_GTR_0\tA Helix must have one or more loops of track."
msgstr ""
-"MSG_HELIX_TURNS_GTR_0\tEine Gleiswendel muss eine oder mehrere Gleiswindung "
-"enthalten."
+"MSG_HELIX_TURNS_GTR_0\tEine Gleiswendel muss eine oder mehrere "
+"Gleiswindungen enthalten."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:13
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:13
msgid ""
-"MSG_LARGE_FONT\tA large font has been selected....\tA large font has been selected.\n"
+"MSG_LARGE_FONT\tA large font has been selected....\tA large font has been "
+"selected.\n"
"Large fonts may a take a while to load.\n"
"\n"
"Do you wish to continue?"
msgstr ""
-"MSG_LARGE_FONT\tEine grosse Schriftart wurde ausgewählt...\tEine grosse Schriftart wurde ausgewählt.\n"
-"Das Laden grosser Schriften kann lange dauern.\n"
+"MSG_LARGE_FONT\tEine große Schriftart wurde ausgewählt...\tEine Trosse "
+"Schriftart wurde ausgewählt.\n"
+"Das Laden großer Schriften kann lange dauern.\n"
"\n"
"Wollen Sie den Vorgang fortsetzen?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:14
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:14
msgid ""
-"MSG_TEXT_TOO_LONG\tThe entered text was too long for the text object. It was"
-" truncated."
+"MSG_TEXT_TOO_LONG\tThe entered text was too long for the text object. It was "
+"truncated."
msgstr ""
"MSG_TEXT_TOO_LONG\tDer eingegebene Text war zu lang für das Text-Objekt. Er "
"wurde abgeschnitten."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:15
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:15
msgid ""
-"MSG_TODSGN_DESC_NONBLANK\tAll description fields present in the Turnout...\tAll description fields present in the Turnout\n"
+"MSG_TODSGN_DESC_NONBLANK\tAll description fields present in the Turnout..."
+"\tAll description fields present in the Turnout\n"
"Designer must contain appropriate information.\n"
"Correct inappropriate values and try again."
msgstr ""
-"MSG_TODSGN_DESC_NONBLANK\tAlle vorhandenen Beschreibungsfelder des Weichen Editor...\tAlle Beschreibungsfelder des Weicheneditor\n"
+"MSG_TODSGN_DESC_NONBLANK\tAlle vorhandenen Beschreibungsfelder des Weichen "
+"Editor...\tAlle Beschreibungsfelder des Weicheneditor\n"
"müssen korrekt ausgefüllt sein. Bitte falsche Werte \n"
"korrigieren und nochmals versuchen."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:16
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:16
msgid ""
-"MSG_GROUP_NONBLANK\tAll fields listed in the Group dialog must contain data....\tAll fields listed in the Group dialog must contain data.\n"
+"MSG_GROUP_NONBLANK\tAll fields listed in the Group dialog must contain "
+"data....\tAll fields listed in the Group dialog must contain data.\n"
"Please enter missing values and try again."
msgstr ""
-"MSG_GROUP_NONBLANK\tAlle Felder im Gruppieren-Dialog müssen ausgefüllt sein...\tAlle Felder im Gruppieren-Dialog müssen ausgefüllt sein.\n"
+"MSG_GROUP_NONBLANK\tAlle Felder im Gruppieren-Dialog müssen ausgefüllt "
+"sein...\tAlle Felder im Gruppieren-Dialog müssen ausgefüllt sein.\n"
"Bitte die fehlenden Werte ergänzen und nochmals versuchen."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:17
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:17
msgid ""
-"MSG_TODSGN_VALUES_GTR_0\tAll values specified in the Turnout Designer must be...\tAll values specified in the Turnout Designer must be\n"
+"MSG_TODSGN_VALUES_GTR_0\tAll values specified in the Turnout Designer must "
+"be...\tAll values specified in the Turnout Designer must be\n"
"greater than 0. Correct inappropriate values and try again."
msgstr ""
-"MSG_TODSGN_VALUES_GTR_0\tAlle eingegebenen Werte im Weicheneditor müssen...\tAlle eingegebenen Werte im Weicheneditor müssen\n"
+"MSG_TODSGN_VALUES_GTR_0\tAlle eingegebenen Werte im Weicheneditor müssen..."
+"\tAlle eingegebenen Werte im Weicheneditor müssen\n"
"größer als 0 sein. Bitte fehlerhafte Werte korrigieren und nochmal versuchen."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:18
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:18
msgid "MSG_CURVE_OUT_OF_RANGE\tAngle must be between 0\\u00B0 and 360\\u00B0."
msgstr "MSG_CURVE_OUT_OF_RANGE\tDer Winkel muss zwischen 0° und 360° liegen."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:19
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:19
msgid ""
-"MSG_TODSGN_CORNU_TOO_COMPLEX\tThe curves created by the Turnout Designer for a cornu curve have more than 128 segments....\tThe curves created by the Turnout Designer for a cornu curve have more than 128 segments.\n"
+"MSG_TODSGN_CORNU_TOO_COMPLEX\tThe curves created by the Turnout Designer for "
+"a cornu curve have more than 128 segments....\tThe curves created by the "
+"Turnout Designer for a cornu curve have more than 128 segments.\n"
"Try adjusting the end angles and radii to be closer in values."
msgstr ""
-"MSG_TODSGN_CORNU_TOO_COMPLEX\tDie mit dem Weichen-Designer erstellten Kurven für eine Cornu haben mehr als 128 Segmente....\tDie mit dem Weichen-Designer erstellten Kurven für eine Klthoide haben mehr als 128 Segmente.\n"
-"Versuchen Sie, die Endwinkel und Radien so einzustellen, dass die Werte näher beieinander liegen."
+"MSG_TODSGN_CORNU_TOO_COMPLEX\tDie mit dem Weichen-Designer erstellten Kurven "
+"für eine Cornu haben mehr als 128 Segmente....\tDie mit dem Weichen-Designer "
+"erstellten Kurven für eine Cornu haben mehr als 128 Segmente.\n"
+"Versuchen Sie, die Endwinkel und Radien so einzustellen, dass die Werte "
+"näher beieinander liegen."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:20
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:20
#, c-format
msgid ""
-"MSG_CUSTMGM_DELETE_CONFIRM\tAre you sure you want to delete the NNN definition(s)?\tAre you sure you want to delete the\n"
+"MSG_CUSTMGM_DELETE_CONFIRM\tAre you sure you want to delete the NNN "
+"definition(s)?\tAre you sure you want to delete the\n"
"%d definition(s)?"
msgstr ""
-"MSG_CUSTMGM_DELETE_CONFIRM\tSind Sie sicher, dass Sie NNN Definitionen löschen wollen?\tSind Sie sicher, dass Sie %d Definitionen\n"
+"MSG_CUSTMGM_DELETE_CONFIRM\tSind Sie sicher, dass Sie NNN Definitionen "
+"löschen wollen?\tSind Sie sicher, dass Sie %d Definitionen\n"
"löschen wollen?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:21
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:21
msgid "MSG_WBITMAP_FAILED\tBitmap create or write function failed."
msgstr ""
"MSG_WBITMAP_FAILED\tErzeugen oder Schreiben der Bitmap ist fehlgeschlagen."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:22
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:22
msgid "MSG_BITMAP_TOO_LARGE\tBitmap is too large."
msgstr "MSG_BITMAP_TOO_LARGE\tBitmap ist zu groß."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:23
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:23
msgid "MSG_CHANGE_ELEV_MODE\tCannot change elevation mode."
msgstr ""
"MSG_CHANGE_ELEV_MODE\tArt der Höhenfestlegung kann nicht geändert werden."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:24
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:24
msgid ""
"MSG_GRID_ENABLE_SPACE_GTR_0\tCannot Enable Grid; spacing must be greater "
"than 0"
msgstr ""
-"MSG_GRID_ENABLE_SPACE_GTR_0\tFangraster kann nicht aktiviert werden. Abstand"
-" muss größer als 0 sein"
+"MSG_GRID_ENABLE_SPACE_GTR_0\tFangraster kann nicht aktiviert werden. Abstand "
+"muss größer als 0 sein"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:25
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:25
msgid "MSG_LAYER_FREEZE\tCannot freeze current layer"
msgstr "MSG_LAYER_FREEZE\tAktuelle Ebene kann nicht eingefroren werden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:26
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:26
+msgid ""
+"MSG_GROUP_NO_PATHS\tNo Paths were detected when grouping selected Tracks."
+msgstr ""
+"MSG_GROUP_NO_PATHS\tBeim Gruppieren der ausgewählten Gleise konten keine "
+"Pfade gefunden werden."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:27
msgid ""
"MSG_CANT_GROUP_BUMPER1\tCannot Group Bumper Track. The track has been "
"unselected."
@@ -7122,54 +7136,54 @@ msgstr ""
"MSG_CANT_GROUP_BUMPER1\tPrellbock kann nicht in die Gruppe aufgenommen "
"werden. Das Gleis wurde abgewählt."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:27
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:28
#, c-format
msgid "MSG_CANNOT_GROUP_TRACK\tCannot Group selected track type %s."
msgstr "MSG_CANNOT_GROUP_TRACK\tGleistyp 1%s kann nicht gruppiert werden."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:28
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:29
msgid "MSG_LAYER_HIDE\tCannot hide current layer"
msgstr "MSG_LAYER_HIDE\tAktuelle Ebene kann nicht verborgen werden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:29
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:30
msgid "MSG_LAYER_MODULE\tCannot turn current layer into a Module"
msgstr ""
"MSG_LAYER_HIDE\tAktuelle Ebene kann nicht in ein Modul umgewandelt werden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:30
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:31
msgid "MSG_JOIN_EASEMENTS\tCannot Join; Easements do not align or abut."
msgstr ""
"MSG_JOIN_EASEMENTS\tVerbinden nicht möglich. Übergangsbögen sind nicht "
"ausgerichtet."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:31
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:32
#, c-format
msgid ""
-"MSG_TRK_ALREADY_CONN\tFirst|Second track is already connected.\tCannot Join;"
-" %s track is already connected."
+"MSG_TRK_ALREADY_CONN\tFirst|Second track is already connected.\tCannot Join; "
+"%s track is already connected."
msgstr ""
-"MSG_TRK_ALREADY_CONN\tErstes|zweites Gleis ist bereits verbunden.\tVerbinden"
-" nicht möglich, das %s Gleis ist bereits verbunden."
+"MSG_TRK_ALREADY_CONN\tErstes|zweites Gleis ist bereits verbunden.\tVerbinden "
+"nicht möglich, das %s Gleis ist bereits verbunden."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:32
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:33
msgid "MSG_JOIN_TURNTABLE\tCannot join from a turntable, try to a turntable"
msgstr ""
-"MSG_JOIN_TURNTABLE\tVerbinden von einer Drehscheibe ist nicht möglich, bitte"
-" zur Drehscheibe verbinden"
+"MSG_JOIN_TURNTABLE\tVerbinden von einer Drehscheibe ist nicht möglich, bitte "
+"zur Drehscheibe verbinden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:33
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:34
msgid "MSG_JOIN_CORNU_SAME\tCannot Join; Selected endpoints are on same track."
msgstr ""
"MSG_JOIN_CORNU_SAME\tVerbinden nicht möglich, da ausgewählte Endpunkte zum "
"selben Gleis gehören."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:34
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:35
msgid "MSG_JOIN_SAME\tCannot Join; Selected endpoints are on same track."
msgstr ""
"MSG_JOIN_SAME\tVerbinden nicht möglich, da ausgewählte Endpunkte zum selben "
"Gleis gehören."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:35
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:36
msgid ""
"MSG_JOIN_NOTBEZIERORCORNU\tCannot Join Bezier or Cornu track if Easement is "
"not Cornu"
@@ -7177,13 +7191,14 @@ msgstr ""
"MSG_JOIN_NOTBEZIERORCORNU\tKann nicht mit Bezier oder Cornu verbinden, da "
"als Übergangsbogen nicht Cornu gewählt ist"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:36
-msgid "MSG_SELECTED_TRACKS_PARALLEL\tCannot Join; Selected tracks are parallel."
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:37
+msgid ""
+"MSG_SELECTED_TRACKS_PARALLEL\tCannot Join; Selected tracks are parallel."
msgstr ""
-"MSG_SELECTED_TRACKS_PARALLEL\tVerbinden nicht möglich, da ausgewählte Gleise"
-" parallel sind."
+"MSG_SELECTED_TRACKS_PARALLEL\tVerbinden nicht möglich, da ausgewählte Gleise "
+"parallel sind."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:37
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:38
#, c-format
msgid ""
"MSG_PRMFIL_OPEN_NEW\tCannot open New Parameter File: FILENAME\tCannot open "
@@ -7192,26 +7207,27 @@ msgstr ""
"MSG_PRMFIL_OPEN_NEW\tDie neue Parameterdatei DATEINAME kann nicht geöffnet "
"werden.\tDie neue Parameterdatei %s kann nicht geöffnet werden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:38
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:39
msgid "MSG_LAYER_SEL_FROZEN\tCannot select a frozen layer"
msgstr ""
"MSG_LAYER_SEL_FROZEN\tEine eingefrorene Ebene kann nicht ausgewählt werden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:39
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:40
msgid ""
"MSG_GRID_SHOW_SPACE_GTR_0\tCannot Show Grid; spacing must be greater than 0"
msgstr ""
-"MSG_GRID_ENABLE_SPACE_GTR_0\tFangraster kann nicht angezeigt werden. Abstand"
-" muss größer als 0 sein"
+"MSG_GRID_ENABLE_SPACE_GTR_0\tFangraster kann nicht angezeigt werden. Abstand "
+"muss größer als 0 sein"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:40
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:41
#, c-format
-msgid "MSG_CANT_SPLIT_TRK\tCannot split TYPE track\tCannot split %s track"
+msgid ""
+"MSG_CANT_SPLIT_TRK\tCannot split TYPE track\tCannot split track of type %s"
msgstr ""
"MSG_CANT_SPLIT_TRK\tTYP Gleis kann nicht aufgetrennt werden\tGleis vom Typ "
"%s kann nicht aufgetrennt werden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:41
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:42
#, c-format
msgid ""
"MSG_CUSTMGM_CANT_WRITE\tCannot write to parameter file: FILENAME\tCannot "
@@ -7220,89 +7236,97 @@ msgstr ""
"MSG_PRMFIL_OPEN_NEW\tDie neue Parameterdatei DATEINAME kann nicht geöffnet "
"werden.\tDie neue Parameterdatei %s kann nicht geöffnet werden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:42
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:43
msgid "MSG_CARIMP_DUP_INDEX\tCar Index number duplicated."
msgstr "MSG_CARIMP_DUP_INDEX\tWagenkennzahl ist doppelt."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:43
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:44
msgid ""
"MSG_CONN_PARAMS_TOO_SMALL\tConnection parameters reset to minimum values."
msgstr ""
"MSG_CONN_PARAMS_TOO_SMALL\tVerbindungseinstellungen auf die Minimalwerte "
"zurückgesetzt."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:44
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:45
msgid "MSG_CONN_PARAMS_TOO_BIG\tConnection parameters reset to maximum values."
msgstr ""
"MSG_CONN_PARAMS_TOO_SMALL\tVerbindungseinstellungen auf die Maximalwerte "
"zurückgesetzt."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:45
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:46
msgid "MSG_CANT_PASTE\tCopy/Paste buffer is empty. There is nothing to Paste."
msgstr ""
"MSG_CANT_PASTE\tZwischenablage ist leer. Es kann nichts eingefügt werden."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:46
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:47
msgid ""
-"MSG_TODSGN_CROSSOVER_TOO_SHORT\tCrossover length is too short. Correct...\tCrossover length is too short. Correct\n"
+"MSG_TODSGN_CROSSOVER_TOO_SHORT\tCrossover length is too short. Correct..."
+"\tCrossover length is too short. Correct\n"
"inappropriate value(s) and try again."
msgstr ""
-"MSG_TODSGN_CROSSOVER_TOO_SHORT\tKreuzungslänge ist zu kurz. Unpassende...\tKreuzungslänge ist zu kurz. Unpassende\n"
+"MSG_TODSGN_CROSSOVER_TOO_SHORT\tKreuzungslänge ist zu kurz. Unpassende..."
+"\tKreuzungslänge ist zu kurz. Unpassende\n"
"Werte verbessern und nochmals versuchen."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:47
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:48
msgid "MSG_CURVE_TOO_LARGE\tCurved track is too large."
msgstr "MSG_CURVE_TOO_LARGE\tBogengleis ist zu groß."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:48
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:49
msgid ""
-"MSG_TODSGN_REPLACE\tDefinition name is already in use. Saving this...\tDefinition name is already in use. Saving this\n"
+"MSG_TODSGN_REPLACE\tDefinition name is already in use. Saving this..."
+"\tDefinition name is already in use. Saving this\n"
"definition replaces the existing definition.\n"
"\n"
"Do you want to continue?"
msgstr ""
-"MSG_TODSGN_REPLACE\tEin Design mit diesem Namen existiert bereits. Speichern...\tEin Design mit diesem Namen existiert bereits. Speichern\n"
+"MSG_TODSGN_REPLACE\tEin Design mit diesem Namen existiert bereits. "
+"Speichern...\tEin Design mit diesem Namen existiert bereits. Speichern\n"
"unter diesem Namen ersetzt das vorhandene Design.\n"
"\n"
"Speichern fortsetzen?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:49
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:50
msgid "MSG_SAVE_CHANGES\tDo you want to save the changes made to your Layout?"
msgstr ""
"MSG_SAVE_CHANGES\tWollen Sie die Veränderungen an Ihrem Gleisplan speichern?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:50
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:51
msgid ""
"MSG_CARIMP_DUP_COLUMNS\tDuplicate column headers found in Car Import file."
msgstr ""
"MSG_CARIMP_DUP_COLUMNS\tDoppelte Spaltenüberschrift in der Wagenimportdatei."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:51
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:52
msgid "MSG_EP_ON_PATH\tEndpoint already on Path."
msgstr "MSG_EP_ON_PATH\tDer Endpunkt ist bereits im Pfad enthalten."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:52
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:53
#, c-format
msgid ""
-"MSG_UPGRADE_VERSION1\tFile version %ld is greater than supported...\tFile version %ld is greater than supported\n"
+"MSG_UPGRADE_VERSION1\tFile version %ld is greater than supported...\tFile "
+"version %ld is greater than supported\n"
"version %d. You need to upgrade %s\n"
"to at least version %s."
msgstr ""
-"MSG_UPGRADE_VERSION1\tDateiversion %ld ist größer als unterstützte Version...\tDateiversion %ld ist größer als unterstützte\n"
+"MSG_UPGRADE_VERSION1\tDateiversion %ld ist größer als unterstützte Version..."
+"\tDateiversion %ld ist größer als unterstützte\n"
"Version %d. Sie sollten %s mindestens auf Version %s\n"
"aktualisieren."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:53
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:54
#, c-format
msgid ""
-"MSG_UPGRADE_VERSION2\tFile version %ld is greater than supported...\tFile version %ld is greater than supported\n"
+"MSG_UPGRADE_VERSION2\tFile version %ld is greater than supported...\tFile "
+"version %ld is greater than supported\n"
"version %d. You need to upgrade your\n"
"version of %s"
msgstr ""
-"MSG_UPGRADE_VERSION2\tDateiversion %ld ist größer als unterstützte Version...\tDateiversion %ld ist größer als unterstützte\n"
+"MSG_UPGRADE_VERSION2\tDateiversion %ld ist größer als unterstützte Version..."
+"\tDateiversion %ld ist größer als unterstützte\n"
"Version %d. Sie sollten %s aktualisieren"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:54
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:55
#, c-format
msgid ""
"MSG_LAYOUT_LINES_SKIPPED\tWhile processing Layout file %s, %d lines were "
@@ -7311,153 +7335,160 @@ msgstr ""
"MSG_LAYOUT_LINES_SKIPPED\tBei der Verarbeitung der Gleisplandatei %s wurden "
"%d Zeilen übersprungen, weil sie nicht erkannt wurden."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:55
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:56
#, c-format
msgid ""
-"MSG_PARAM_UPGRADE_VERSION1\tFile version %ld is greater than supported...\tFile version %ld is greater than supported\n"
+"MSG_PARAM_UPGRADE_VERSION1\tFile version %ld is greater than supported..."
+"\tFile version %ld is greater than supported\n"
"version %d. You need to upgrade %s\n"
"to at least version %s."
msgstr ""
-"MSG_UPGRADE_VERSION1\tDateiversion %ld ist größer als unterstützte Version...\tDateiversion %ld ist größer als unterstützte\n"
+"MSG_UPGRADE_VERSION1\tDateiversion %ld ist größer als unterstützte Version..."
+"\tDateiversion %ld ist größer als unterstützte\n"
"Version %d. Sie sollten %s mindestens auf Version %s\n"
"aktualisieren."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:56
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:57
#, c-format
msgid ""
-"MSG_PARAM_UPGRADE_VERSION2\tFile version %ld is greater than supported...\tFile version %ld is greater than supported\n"
+"MSG_PARAM_UPGRADE_VERSION2\tFile version %ld is greater than supported..."
+"\tFile version %ld is greater than supported\n"
"version %d. You need to upgrade your\n"
"version of %s"
msgstr ""
-"MSG_UPGRADE_VERSION2\tDateiversion %ld ist größer als unterstützte Version...\tDateiversion %ld ist größer als unterstützte\n"
+"MSG_UPGRADE_VERSION2\tDateiversion %ld ist größer als unterstützte Version..."
+"\tDateiversion %ld ist größer als unterstützte\n"
"Version %d. Sie sollten %s aktualisieren"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:57
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:58
#, c-format
msgid ""
"MSG_PARAM_LINES_SKIPPED\tWhile processing Parameter file %s, %d lines were "
"skipped because they were not recognized."
msgstr ""
-"MSG_PARAM_LINES_SKIPPED Bei der Verarbeitung der Parameterdatei %s wurden %d"
-" Zeilen übersprungen, weil sie nicht erkannt wurden."
+"MSG_PARAM_LINES_SKIPPED Bei der Verarbeitung der Parameterdatei %s wurden %d "
+"Zeilen übersprungen, weil sie nicht erkannt wurden."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:58
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:59
msgid ""
"MSG_MOVE_POINTS_OTHER_SIDE\tFrog angle prevents placement of points. Move "
"points to opposite side of frog."
msgstr ""
-"MSG_MOVE_POINTS_OTHER_SIDE\tDer Weichenwinkel verhindert das Setzen....\tDer Weichenwinkel verhindert das Setzen der Weichenzungen.\n"
+"MSG_MOVE_POINTS_OTHER_SIDE\tDer Weichenwinkel verhindert das Setzen....\tDer "
+"Weichenwinkel verhindert das Setzen der Weichenzungen.\n"
"Die Weichenzungen auf die andere Seite der Weiche verschieben."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:59
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:60
msgid "MSG_NO_ROOM_BTW_TRKS\tInsufficient space between existing stall tracks."
msgstr "MSG_NO_ROOM_BTW_TRKS\tZu wenig Platz zwischen den Drehscheibengleisen."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:60
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:61
#, c-format
msgid ""
-"MSG_JOIN_DIFFER_ELEV\tJoining tracks with differing elevations "
-"(N.NNN)\tJoining tracks with differing elevations (%0.2f)"
+"MSG_JOIN_DIFFER_ELEV\tJoining tracks with differing elevations (N."
+"NNN)\tJoining tracks with differing elevations (%0.2f)"
msgstr ""
-"MSG_JOIN_DIFFER_ELEV\tZu verbindende Gleise haben unterschiedliche "
-"Höhe(N.NNN)\tZu verbindende Gleise haben unterschiedliche Höhe(%0.2f)"
+"MSG_JOIN_DIFFER_ELEV\tZu verbindende Gleise haben unterschiedliche Höhe(N."
+"NNN)\tZu verbindende Gleise haben unterschiedliche Höhe(%0.2f)"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:61
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:62
msgid "MSG_TRK_DESC_NOT_VISIBLE\tLabel description is hidden"
msgstr "MSG_DESC_NOT_VISIBLE\tBeschriftung ist nicht sichtbar"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:62
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:63
msgid "MSG_DESC_NOT_VISIBLE\tLabel descriptions not visible"
msgstr "MSG_DESC_NOT_VISIBLE\tBeschriftungen sind nicht sichtbar"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:63
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:64
msgid "MSG_OBJECT_TOO_SHORT\tLength of object is too short."
msgstr "MSG_OBJECT_TOO_SHORT\tDie Länge des Objektes ist zu kurz."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:64
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:65
#, c-format
msgid ""
-"MSG_PRINT_MAX_SIZE\tMaximum allowed page size is W x H\tMaximum allowed page"
-" size is %s x %s"
+"MSG_PRINT_MAX_SIZE\tMaximum allowed page size is W x H\tMaximum allowed page "
+"size is %s x %s"
msgstr ""
-"MSG_PRINT_MAX_SIZE\tDie maximal zulässige Seitengröße ist B x H\tDie maximal"
-" zulässige Seitengröße ist %s x %s"
+"MSG_PRINT_MAX_SIZE\tDie maximal zulässige Seitengröße ist B x H\tDie maximal "
+"zulässige Seitengröße ist %s x %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:65
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:66
msgid ""
-"MSG_NO_PRINTER_SELECTED\tPlease select a printer from the Print Setup "
-"dialog."
+"MSG_NO_PRINTER_SELECTED\tPlease select a printer from the Print Setup dialog."
msgstr ""
"MSG_NO_PRINTER_SELECTED\tBitte wählen Sie einen Drucker aus dem Dialogfeld "
"Druckereinrichtung."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:66
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:67
#, c-format
msgid ""
-"MSG_PRMFIL_NO_CONTENTS\tNew Parameter File has no CONTENTS line: "
-"FILENAME.\tNew Parameter File has no CONTENTS line: %s"
+"MSG_PRMFIL_NO_CONTENTS\tNew Parameter File has no CONTENTS line: FILENAME."
+"\tNew Parameter File has no CONTENTS line: %s"
msgstr ""
"MSG_PRMFIL_NO_CONTENTS\tDie neue Parameterdatei enthält keine CONTENTS "
"Zeile: DATEINAME.\tDie neue Parameterdatei enthält keine CONTENTS Zeile: %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:67
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:68
msgid ""
-"MSG_NO_CARS\tNo Cars are defined for the current scale....\tNo Cars are defined for the current scale.\n"
+"MSG_NO_CARS\tNo Cars are defined for the current scale....\tNo Cars are "
+"defined for the current scale.\n"
"\n"
"Do you want to use the Car Inventory dialog?"
msgstr ""
-"MSG_NO_CARS\tFür den aktuellen Maßstab sind keine Wagen vorhanden...\tFür den aktuellen Maßstab sind keine Wagen vorhanden.\n"
+"MSG_NO_CARS\tFür den aktuellen Maßstab sind keine Wagen vorhanden...\tFür "
+"den aktuellen Maßstab sind keine Wagen vorhanden.\n"
"\n"
"Soll der Wagenbestandsdialog geöffnet werden?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:68
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:69
msgid ""
-"MSG_NO_CARPROTO\tNo Car Prototypes are defined....\tNo Car Prototypes are defined.\n"
+"MSG_NO_CARPROTO\tNo Car Prototypes are defined....\tNo Car Prototypes are "
+"defined.\n"
"Load a Prototype definition file using the\n"
"Parameter Files dialog or create a Prototype\n"
"definition using the Car Prototype dialog."
msgstr ""
-"MSG_NO_CARPROTO\tEs sind keine Vorbildwagen definiert...\tEs sind keine Vorbildwagen definiert.\n"
+"MSG_NO_CARPROTO\tEs sind keine Vorbildwagen definiert...\tEs sind keine "
+"Vorbildwagen definiert.\n"
"Über den Parameterdateidialog muß eine\n"
"Parameterdatei mit Vorbildern geladen werden oder\n"
"ein Vorbild muß über den Wagenvorbilddialog erstellt werden."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:69
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:70
msgid "MSG_CARIMP_NO_DATA\tNo data present in Car Import file."
msgstr "MSG_CARIMP_NO_DATA\tDie Wagenimportdatei enthält keine Daten."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:70
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:71
msgid "MSG_PRINT_NO_PAGES\tNo pages selected for printing."
msgstr "MSG_PRINT_NO_PAGES\tKeine Seiten zum Drucken ausgewählt."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:71
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:72
msgid "MSG_NO_PATH_TO_EP\tNo path between Profile and selected endpoint."
msgstr ""
-"MSG_NO_PATH_TO_EP\tEs existiert keine Verbindung zwischen dem Högenprofil "
-"und dem ausgählten Endpunkt."
+"MSG_NO_PATH_TO_EP\tEs existiert keine Verbindung zu dem auswählten Endpunkt."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:72
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:73
#, c-format
msgid ""
-"MSG_PRMFIL_NO_MAP\tNo Parameter File Map for CONTENTS\tNo Parameter File Map"
-" for %s"
+"MSG_PRMFIL_NO_MAP\tNo Parameter File Map for CONTENTS\tNo Parameter File Map "
+"for %s"
msgstr ""
"MSG_PRMFIL_OPEN_NEW\tDie neue Parameterdatei DATEINAME kann nicht geöffnet "
"werden.\tDie neue Parameterdatei %s kann nicht geöffnet werden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:73
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:74
msgid "MSG_NO_SELECTED_TRK\tNo track(s) selected!"
msgstr "MSG_NO_SELECTED_TRK\tEs sind keine Gleise ausgewählt!"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:74
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:75
msgid ""
"MSG_NO_EMPTY_LAYER\tNo layer was found that has no contents, so the module "
"can not be imported"
msgstr ""
-"MSG_NO_EMPTY_LAYER\tEs wurde kein Layer gefunden, der keinen Inhalt hat, so "
+"MSG_NO_EMPTY_LAYER\tEs wurde kein Ebene gefunden, der keinen Inhalt hat, so "
"dass das Modul nicht importiert werden kann"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:75
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:76
msgid ""
"MSG_NO_UNFROZEN_LAYER\tNo layer was found that wasn't frozen. Layer 0 is "
"unfrozen."
@@ -7465,7 +7496,7 @@ msgstr ""
"MSG_NO_UNFROZEN_LAYER\tEs wurde keine Ebene gefunden, die nicht gefroren "
"war. Schicht 0 ist nicht gefroren."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:76
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:77
msgid ""
"MSG_NOT_UNFROZEN_LAYER\tThe current layer was defined as frozen. It is now "
"unfrozen."
@@ -7473,7 +7504,7 @@ msgstr ""
"MSG_NOT_UNFROZEN_LAYER\tDie aktuelle Ebene wurde als eingefroren definiert. "
"Es ist jetzt ungefroren."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:77
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:78
#, c-format
msgid ""
"MSG_NO_TURNOUTS_AVAILABLE\tNo Turnouts|Structures are available.\tNo %s are "
@@ -7482,126 +7513,133 @@ msgstr ""
"MSG_NO_TURNOUTS_AVAILABLE\tEs sind keine Weichern | Gebäude verfügbar.\tEs "
"sind keine %s verfügbar."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:78
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:79
msgid ""
-"MSG_CARDESC_VALUE_ZERO\tNumeric values on the Car Description...\tNumeric values on the Car Description\n"
+"MSG_CARDESC_VALUE_ZERO\tNumeric values on the Car Description...\tNumeric "
+"values on the Car Description\n"
"dialog must be greater than 0."
msgstr ""
-"MSG_CARDESC_VALUE_ZERO\tNumerische Werte im Wagenbeschreibungsdialog...\tNumerische Werte im Wagenbeschreibungsdialog\n"
+"MSG_CARDESC_VALUE_ZERO\tNumerische Werte im Wagenbeschreibungsdialog..."
+"\tNumerische Werte im Wagenbeschreibungsdialog\n"
"müssen größer als 0 sein."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:79
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:80
msgid "MSG_MOVE_OUT_OF_BOUNDS\tObject has moved beyond room boundaries."
msgstr ""
"MSG_MOVE_OUT_OF_BOUNDS\tObjekt wurde nach außerhalb des Raumes verschoben."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:80
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:81
msgid ""
"MSG_PARALLEL_SEP_GTR_0\tParallel separation must be greater than 0, or the "
"new guage must be different than the old."
msgstr ""
-"MSG_PARALLEL_SEP_GTR_0\tParallelabstand muß entweder größer als 0 sein. oder"
-" die neue Spurweite muss sich von der alten unterscheiden."
+"MSG_PARALLEL_SEP_GTR_0\tParallelabstand muß entweder größer als 0 sein. oder "
+"die neue Spurweite muss sich von der alten unterscheiden."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:81
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:82
msgid ""
-"MSG_CARPART_DUPNAME\tPart Number for this Manufacturer already exists....\tPart Number for this Manufacturer already exists.\n"
+"MSG_CARPART_DUPNAME\tPart Number for this Manufacturer already exists...."
+"\tPart Number for this Manufacturer already exists.\n"
"\n"
"Do you want to update it?"
msgstr ""
-"MSG_CARPART_DUPNAME\tTeilnummer für diesen Hersteller existiert bereits...\tTeilnummer für diesen Hersteller existiert bereits.\n"
+"MSG_CARPART_DUPNAME\tTeilnummer für diesen Hersteller existiert bereits..."
+"\tTeilnummer für diesen Hersteller existiert bereits.\n"
"\n"
"Wollen Sie den Artikel aktualisieren?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:82
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:83
#, c-format
msgid ""
"MSG_PLAYBACK_LISTENTRY\tPlayback: Cannot find list entry: NAME\tPlayback: "
"Cannot find list entry: %s"
msgstr ""
"MSG_PLAYBACK_LISTENTRY\tWiedergabe: Der Listeneintrag: NAME kann nicht "
-"gefunden werden.\tWiedergabe: der Listeneintrag %s kann nicht gefunden "
-"werden"
+"gefunden werden.\tWiedergabe: der Listeneintrag %s kann nicht gefunden werden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:83
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:84
#, c-format
msgid ""
-"MSG_PLAYBACK_VERSION_UPGRADE\tPlayback file version %ld is...\tPlayback file version %ld is\n"
+"MSG_PLAYBACK_VERSION_UPGRADE\tPlayback file version %ld is...\tPlayback file "
+"version %ld is\n"
"greater than supported version %d\n"
"You need to upgrade your version of %s"
msgstr ""
-"MSG_PLAYBACK_VERSION_UPGRADE\tVersion %ld der Wiedergabedatei ist...\tVersion %ld der Wiedergabedatei\n"
-"ist neuer als due unterstützte Version %d\n"
+"MSG_PLAYBACK_VERSION_UPGRADE\tVersion %ld der Wiedergabedatei ist..."
+"\tVersion %ld der Wiedergabedatei\n"
+"ist neuer als die unterstützte Version %d\n"
"Aktualisierung von %s ist notwendig"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:84
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:85
#, c-format
msgid ""
-"MSG_DOMOUSE_BAD_OP\tPlayback: unknown action NNN\tPlayback: unknown action "
-"%d"
+"MSG_DOMOUSE_BAD_OP\tPlayback: unknown action NNN\tPlayback: unknown action %d"
msgstr ""
-"MSG_DOMOUSE_BAD_OP\tWiedergabe: unbekannte AktionNNN\tWiedergabe: unbekannte"
-" Aktion %d"
+"MSG_DOMOUSE_BAD_OP\tWiedergabe: unbekannte AktionNNN\tWiedergabe: unbekannte "
+"Aktion %d"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:85
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:86
msgid "MSG_MOVE_POINTS_AWAY_CLOSE\tPoints are to close to frog; move away."
msgstr ""
"MSG_MOVE_POINTS_AWAY_CLOSE\tWeichenzungen sind zu kurz. In größere "
"Entfernung vom Herzstück setzen."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:86
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:87
msgid "MSG_POLY_SHAPES_3_SIDES\tPolygons must have at least 3 nodes."
msgstr ""
"MSG_POLY_SHAPES_3_SIDES\tPolygone müssen aus mindestens drei Ecken bestehen."
-" "
-#: ../../../../build/xtrkcad-old/app/help/messages.h:87
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:88
msgid "MSG_POLY_MULTIPLE_SELECTED\tCan't delete multiple points at once"
msgstr ""
"MSG_POLY_MULTIPLE_SELECTED\tKann nicht mehrere Punkte auf einmal löschen"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:88
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:89
msgid "MSG_POLY_NOTHING_SELECTED\tNo Point on a Poly shape selected."
msgstr "MSG_POLY_NOTHING_SELECTED\tKein Punkt auf einem Vieleck ausgewählt."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:89
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:90
msgid ""
-"MSG_CARPROTO_DUPNAME\tPrototype name already exists....\tPrototype name already exists.\n"
+"MSG_CARPROTO_DUPNAME\tPrototype name already exists....\tPrototype name "
+"already exists.\n"
"\n"
"Do you want to update it?"
msgstr ""
-"MSG_CARPROTO_DUPNAME\tEin Vorbild mit diesem Namen existiert bereits....\tEin Vorbild mit diesem Namen existiert bereits.\n"
+"MSG_CARPROTO_DUPNAME\tEin Vorbild mit diesem Namen existiert bereits...."
+"\tEin Vorbild mit diesem Namen existiert bereits.\n"
"\n"
"Wollen Sie dieses Vorbild überschreiben?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:90
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:91
msgid "MSG_RADIUS_GTR_0\tRadius must be greater than 0."
msgstr "MSG_RADIUS_GTR_0\tRadius muss größer als 0 sein.."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:91
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:92
msgid "MSG_RADIUS_GTR_10000\tRadius must be less than 10000."
msgstr "MSG_RADIUS_GTR_0\tRadius muss kleiner als 10000 sein."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:92
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:93
msgid ""
-"MSG_RADIUS_TOO_BIG\tThe Circle or Helix will not fit within the layouts room"
-" parameters (Height and Width)."
+"MSG_RADIUS_TOO_BIG\tThe Circle or Helix will not fit within the layouts room "
+"parameters (Height and Width)."
msgstr ""
"MSG_RADIUS_TOO_BIG\tDer Bogen oder die Gleiswendel passen nicht in den Raum "
"(Höhe und Breite)."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:93
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:94
#, c-format
msgid ""
-"MSG_RESCALE_TOO_BIG\tRescaled tracks do not fit within layouts room parameters...\tRescaled tracks do not fit within layouts room parameters\n"
+"MSG_RESCALE_TOO_BIG\tRescaled tracks do not fit within layouts room "
+"parameters...\tRescaled tracks do not fit within layouts room parameters\n"
"(Height and width). The layouts room parameters should be\n"
"set to at least %s by %s."
msgstr ""
-"MSG_RESCALE_TOO_BIG\tNeu skalierte Gleise passen nicht in den Raum...\tNeu skalierte Gleise passen nicht in den Raum\n"
+"MSG_RESCALE_TOO_BIG\tNeu skalierte Gleise passen nicht in den Raum...\tNeu "
+"skalierte Gleise passen nicht in den Raum\n"
"(Länge und Breite). Die benötigte Größe ist\n"
"mindestens %s auf %s."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:94
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:95
msgid ""
"MSG_CARIMP_MISSING_COLUMNS\tRequired column headers missing from Car Import "
"file."
@@ -7609,163 +7647,208 @@ msgstr ""
"MSG_CARIMP_MISSING_COLUMNS\tDie benötigten Spaltenüberschriften fehlen in "
"der Wagen-ImportDatei."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:95
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:96
#, c-format
msgid ""
"MSG_2ND_TRK_NOT_SEL_UNSEL\tSecond track must be selected|unselected\tSecond "
"track must be %s."
msgstr ""
-"MSG_2ND_TRK_NOT_SEL_UNSEL\tDas zweite Gleis darf (nicht) ausgewählt "
-"sein.\tDas zweite Gleis muss %s sein."
+"MSG_2ND_TRK_NOT_SEL_UNSEL\tDas zweite Gleis darf (nicht) ausgewählt sein."
+"\tDas zweite Gleis muss %s sein."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:96
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:97
msgid "MSG_OUT_OF_BOUNDS\tSelected page is out of bounds."
msgstr ""
"MSG_OUT_OF_BOUNDS\tAusgewählte Dateien sind außerhalb des zulässigen "
"Bereichs."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:97
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:98
msgid "MSG_SEL_POS_FIRST\tSelect position prior to entering Text."
msgstr ""
-"MSG_SEL_POS_FIRST\tDie Position muß vor der Texteingabe festgelegt werden."
+"MSG_SEL_POS_FIRST\tDie Position muss vor der Texteingabe festgelegt werden."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:98
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:99
msgid ""
-"MSG_CARPROTO_BADSEGS\tSelected shapes must define a rectangular area ...\tSelected shapes must define a rectangular\n"
+"MSG_CARPROTO_BADSEGS\tSelected shapes must define a rectangular area ..."
+"\tSelected shapes must define a rectangular\n"
"area with length greater than height."
msgstr ""
-"MSG_CARPROTO_BADSEGS\tDie ausgewählten Formen müssen einen rechtwinkligen...\tDie ausgewählten Formen müssen einen rechtwinkligen\n"
+"MSG_CARPROTO_BADSEGS\tDie ausgewählten Formen müssen einen rechtwinkligen..."
+"\tDie ausgewählten Formen müssen einen rechtwinkligen\n"
"Bereich bilden, wobei die Länge größer als die Breite sein muss."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:99
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:100
msgid ""
"MSG_TOO_FAR_APART_DIVERGE\tSelected tracks deviate too much or are too far "
"apart from each other."
msgstr ""
-"MSG_TOO_FAR_APART_DIVERGE\tDie ausgewählten Gleise weichen zu stark ab...\tDie ausgewählten Gleise weichen zu stark ab oder\n"
+"MSG_TOO_FAR_APART_DIVERGE\tDie ausgewählten Gleise weichen zu stark ab..."
+"\tDie ausgewählten Gleise weichen zu stark ab oder\n"
"sind zu weit voneinander entfernt."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:100
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:101
msgid "MSG_COMMAND_DISABLED\tSpecified command disabled."
msgstr "MSG_COMMAND_DISABLED\tDieser Befehl ist deaktiviert."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:101
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:102
+#, c-format
+msgid ""
+"MSG_SEGMENT_NOT_ON_PATH\tTrack segment N not on Path for Turnout\tTrack "
+"segment %d not on any Path for %s"
+msgstr ""
+"MSG_SEGMENT_NOT_ON_PATH\tGleissegment N ist nicht auf einem Pfad für die "
+"Weiche \tGleissegment %d auf keinem Pfad für %s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:103
msgid "MSG_SPLIT_POS_BTW_MERGEPTS\tSplit position between Turnout Points"
msgstr ""
-"MSG_SPLIT_POS_BTW_MERGEPTS\tDie Trennstelle befindet sich iin den "
+"MSG_SPLIT_POS_BTW_MERGEPTS\tDie Trennstelle befindet sich in den "
"Weichenzungen"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:102
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:104
msgid "MSG_SPLIT_PATH_NOT_UNIQUE\tSplit position not on unique path"
msgstr ""
"MSG_SPLIT_PATH_NOT_UNIQUE\tTrennstelle ist nicht auf einem eindeutigen "
"Verlauf"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:103
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:105
#, c-format
msgid ""
-"MSG_CARIMP_MISSING_DIMS\tThe following car has no dimensions and a...\tThe following car has no dimensions and a\n"
+"MSG_CARIMP_MISSING_DIMS\tThe following car has no dimensions and a...\tThe "
+"following car has no dimensions and a\n"
"Car Part description can not be found.\n"
"\n"
"%s\n"
"\n"
"Do you wish to continue importing other Cars?"
msgstr ""
-"MSG_CARIMP_MISSING_DIMS\tFür den folgenden Wagen gibt es keine Abmessungen und....\tFür den folgenden Wagen gibt es keine Abmessungen und\n"
+"MSG_CARIMP_MISSING_DIMS\tFür den folgenden Wagen gibt es keine Abmessungen "
+"und....\tFür den folgenden Wagen gibt es keine Abmessungen und\n"
"eine Wagenbeschreibung ist nicht vorhanden.\n"
"\n"
"%s\n"
"\n"
"Soll das Einlesen der Wagen fortgesetzt werden?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:104
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:106
#, c-format
msgid ""
-"MSG_CARIMP_MISSING_PARTNO\tThe following car has no Part Number...\tThe following car has no Part Number\n"
+"MSG_CARIMP_MISSING_PARTNO\tThe following car has no Part Number...\tThe "
+"following car has no Part Number\n"
"\n"
"%s\n"
"\n"
"Do you wish to continue importing other Cars?"
msgstr ""
-"MSG_CARIMP_MISSING_PARTNO\tDer folgende Wagen hat keine Teilenummer...\tDer folgende Wagen hat keine Teilenummer.\n"
+"MSG_CARIMP_MISSING_PARTNO\tDer folgende Wagen hat keine Teilenummer...\tDer "
+"folgende Wagen hat keine Teilenummer.\n"
"\n"
"%s\n"
"\n"
"Soll das Einlesen der Wagen fortgesetzt werden?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:105
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:107
#, c-format
msgid ""
-"MSG_CARIMP_IGNORED_COLUMN\tThe following column in the Car Import file will be ignored:...\tThe following column in the Car Import file will be ignored:\n"
+"MSG_CARIMP_IGNORED_COLUMN\tThe following column in the Car Import file will "
+"be ignored:...\tThe following column in the Car Import file will be "
+"ignored:\n"
"\n"
"%s"
msgstr ""
-"MSG_CARIMP_IGNORED_COLUMN\tDiese Spalte in der Wagen-Importdatei wird ignoriert:...\tDiese Spalte in der Wagen-Importdatei wird ignoriert:\n"
+"MSG_CARIMP_IGNORED_COLUMN\tDiese Spalte in der Wagen-Importdatei wird "
+"ignoriert:...\tDiese Spalte in der Wagen-Importdatei wird ignoriert:\n"
"\n"
"%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:106
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:108
msgid ""
"MSG_CANT_MOVE_UNDER_TRAIN\tThe position of a turnout or turntable cannot be "
"changed while occupied by a train."
msgstr ""
-"MSG_CANT_MOVE_UNDER_TRAIN\tDie Position einer Weiche oder einer Drehscheibe...\tDie Position einer Weiche oder einer Drehscheibe\n"
+"MSG_CANT_MOVE_UNDER_TRAIN\tDie Position einer Weiche oder einer "
+"Drehscheibe...\tDie Position einer Weiche oder einer Drehscheibe\n"
"kann nicht verändert werden, wenn sich ein Zug darauf befindet."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:107
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:109
msgid ""
-"MSG_STRUCT_NO_STRUCTS\tThere are no structures to choose from in the structure...\tThere are no structures to choose from in the structure\n"
+"MSG_STRUCT_NO_STRUCTS\tThere are no structures to choose from in the "
+"structure...\tThere are no structures to choose from in the structure\n"
"selection list. Please check your SCALE, select the\n"
"<File|Parameter Files> menu to load a Parameter File or\n"
"create a new Structure with the Group command."
msgstr ""
-"MSG_STRUCT_NO_STRUCTS\tIn der Liste der Gebäude gibt es keine...\tIn der Liste der Gebäude gibt es keine Gebäude,\n"
-"die ausgewählt werden können. Bitte Maßstab prüfen, im Menupunkt <Datei|Parameter Dateien> eine Parameter-Datei wählen\n"
+"MSG_STRUCT_NO_STRUCTS\tIn der Liste der Gebäude gibt es keine...\tIn der "
+"Liste der Gebäude gibt es keine Gebäude,\n"
+"die ausgewählt werden können. Bitte Maßstab prüfen, im Menüpunkt <Datei|"
+"Parameter Dateien> eine Parameter-Datei wählen\n"
"oder ein neues Gebäude mit dem Gruppieren-Befehl erstellen."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:108
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:110
msgid ""
-"MSG_TURNOUT_NO_TURNOUT\tThere are no turnouts to choose from in the turnout...\tThere are no turnouts to choose from in the turnout\n"
+"MSG_TURNOUT_NO_TURNOUT\tThere are no turnouts to choose from in the "
+"turnout...\tThere are no turnouts to choose from in the turnout\n"
"selection list. Please check your SCALE, select the\n"
"<Manage|Turnout Designer> menu to enter a new turnout\n"
"or select the <File|Parameter Files> menu to load a\n"
"Parameter File"
msgstr ""
-"MSG_TURNOUT_NO_TURNOUT\tIn der Weichenauswahl gibt es keine Weichen, die ausgewählt werden können...\tIn der Weichenauswahl gibt es keine Weichen, die ausgewählt werden können.\n"
-"Bitte den Maßstab prüfen, über den Menupunkt <Hinzufügen | Weichendesigner> eine Weiche anlegen oder\n"
+"MSG_TURNOUT_NO_TURNOUT\tIn der Weichenauswahl gibt es keine Weichen, die "
+"ausgewählt werden können...\tIn der Weichenauswahl gibt es keine Weichen, "
+"die ausgewählt werden können.\n"
+"Bitte den Maßstab prüfen, über den Menüpunkt <Hinzufügen | Weichendesigner> "
+"eine Weiche anlegen oder\n"
"eine Parameter-Datei unter <Datei|Parameter Dateien> laden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:109
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:111
msgid "MSG_NO_UNCONN_EP\tThere are no unconnected end points for this track"
msgstr "MSG_NO_UNCONN_EP\tDieses Gleis hat keine freien Endpunkte"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:110
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:112
+#, c-format
+msgid ""
+"MSG_SPLITTED_OBJECT_TOO_SHORT\tThe resulting length of one track piece is "
+"shorter than the minimum length of %d."
+msgstr ""
+"MSG_SPLITTED_OBJECT_TOO_SHORT\tNach dem Trennen ist eines der Gleise kürzer "
+"als die Mindestlänge von %d."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:113
msgid "MSG_PULL_FEW_SECTIONS\tThere are too few sections in this loop."
-msgstr "MSG_PULL_FEW_SECTIONS\tIn dieser Schleife gibt es zu wenige Teilstücke."
+msgstr ""
+"MSG_PULL_FEW_SECTIONS\tIn dieser Schleife gibt es zu wenige Teilstücke."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:111
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:114
msgid "MSG_NO_REDO\tThere is nothing to redo!"
msgstr "MSG_NO_REDO\tEs gibt nichts wiederherzustellen!"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:112
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:115
msgid "MSG_NO_UNDO\tThere is nothing to undo!"
msgstr "MSG_NO_UNDO\tEs gibt nicht rückgängig zu machen!"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:113
-msgid "MSG_TOOMANYSEGSINGROUP\tToo many segments in Group."
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:116
+msgid "MSG_TOOMANYSEGSINGROUP\tToo many track segments in Group."
msgstr "MSG_TOOMANYSEGSINGROUP\tIn der Gruppe sind zu viele Teile."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:114
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:117
+msgid ""
+"MSG_TOOMANYSEGSINGROUP2\tTrack segments appear too late in Group segment "
+"list."
+msgstr ""
+"MSG_TOOMANYSEGSINGROUP\tGleissegmente stehen zu spät in der Segmentliste der "
+"Gruppe."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:118
msgid "MSG_CANNOT_CHANGE\tTrack cannot be changed."
msgstr "MSG_CANNOT_CHANGE\tGleis kann nicht verändert werden."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:115
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:119
msgid "MSG_POINT_INSIDE_TURNTABLE\tTrack endpoint is within turntable radius."
msgstr ""
"MSG_POINT_INSIDE_TURNTABLE\tGleisende befindet sich innerhalb der "
"Drehscheibe."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:116
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:120
msgid ""
"MSG_MOVE_POINTS_AWAY_NO_INTERSECTION\tTrack intersection not possible; move "
"points away from frog."
@@ -7773,65 +7856,72 @@ msgstr ""
"MSG_MOVE_POINTS_AWAY_NO_INTERSECTION\tGleiskreuzung ist nicht möglich, "
"Weichenzungen müssen länger sein."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:117
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:121
#, c-format
msgid ""
-"MSG_TRK_TOO_SHORT\tTrack is too short by N.NNN\t%strack is too short by "
-"%0.3f"
+"MSG_TRK_TOO_SHORT\tTrack is too short by N.NNN\t%strack is too short by %0.3f"
msgstr ""
"MSG_TRK_TOO_SHORT\tGleis ist um N.NNN zu kurz.\t%sgleis ist um %0.3f zu kurz"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:118
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:122
#, c-format
msgid ""
"MSG_RADIUS_LSS_EASE_MIN\tTrack radius (N.NNN) is smaller than easement "
"minimum (N.NNN).\tTrack radius (%s) is smaller than easement minimum (%s)."
msgstr ""
-"MSG_RADIUS_LSS_EASE_MIN\tGleisradius (N.NNN) ist kleiner als der minimale Ãœbergangsbogen (N.NNN).\tGleisradius (%s) ist kleiner als\n"
+"MSG_RADIUS_LSS_EASE_MIN\tGleisradius (N.NNN) ist kleiner als der minimale "
+"Ãœbergangsbogen (N.NNN).\tGleisradius (%s) ist kleiner als\n"
"der Mindest-Ãœbergangsbogen (%s)."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:119
-msgid "MSG_CANT_MODIFY_FROZEN_TRK\tTracks in a frozen layer cannot be modified."
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:123
+msgid ""
+"MSG_CANT_MODIFY_FROZEN_TRK\tTracks in a frozen layer cannot be modified."
msgstr ""
"MSG_CANT_MODIFY_FROZEN_TRK\tGleise in einer gesperrten Ebene können nicht "
"verändert werden."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:120
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:124
msgid "MSG_CANT_MODIFY_MODULE_TRK\tTracks in a module cannot be modified."
msgstr ""
"MSG_CANT_MODIFY_FROZEN_TRK\tGleise in einem Modul können nicht verändert "
"werden."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:121
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:125
msgid ""
-"MSG_SEGMENTS_DIFFER\tTurnout definition contains non-track segments....\tTurnout definition contains non-track segments.\n"
+"MSG_SEGMENTS_DIFFER\tTurnout definition contains non-track segments...."
+"\tTurnout definition contains non-track segments.\n"
"\n"
"Do you want to include them in this update?"
msgstr ""
-"MSG_SEGMENTS_DIFFER\tDie Weichendefinition enthält nicht nur Gleise....\tDie Weichendefinition enthält nicht nur Gleise.\n"
+"MSG_SEGMENTS_DIFFER\tDie Weichendefinition enthält nicht nur Gleise....\tDie "
+"Weichendefinition enthält nicht nur Gleise.\n"
"\n"
-"Sollen diese in der Aktrualisierung aufgenommen werden?"
+"Sollen diese in der Aktualisierung aufgenommen werden?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:122
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:126
msgid "MSG_TURNTABLE_DIAM_GTR_0\tTurntable diameter must greater than 0."
msgstr ""
-"MSG_TURNTABLE_DIAM_GTR_0\tDer Durchmesser der Drehscheibe muß größer als 0 "
+"MSG_TURNTABLE_DIAM_GTR_0\tDer Durchmesser der Drehscheibe muss größer als 0 "
"sein."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:123
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:127
#, c-format
msgid ""
-"MSG_UNDO_ASSERT\tUndo assertion failure %s:%d...\tUndo assertion failure %s:%d\n"
+"MSG_UNDO_ASSERT\tUndo assertion failure %s:%d...\tUndo assertion failure %s:"
+"%d\n"
"Val = %ld(%lx)\n"
"%s\n"
-"Please report this error to the XTrackCAD project development team at SourceForge."
+"Please report this error to the XTrackCAD project development team at "
+"SourceForge."
msgstr ""
-"MSG_UNDO_ASSERT\tUndo assertion failure %s:%d...\tUndo assertion failure %s:%d\n"
+"MSG_UNDO_ASSERT\tUndo assertion failure %s:%d...\tUndo assertion failure %s:"
+"%d\n"
"Val = %ld(%lx)\n"
"%s\n"
-"Bitte diesen Fehler an das XTrackCAD Entwicklungsteam in Sourceforge berichten."
+"Bitte diesen Fehler an das XTrackCAD Entwicklungsteam in Sourceforge "
+"berichten."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:124
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:128
#, c-format
msgid ""
"MSG_PROG_CORRUPTED\tCritical file damaged!...\tCritical file damaged!\n"
@@ -7840,13 +7930,14 @@ msgid ""
"\n"
"Please reinstall software."
msgstr ""
-"MSG_PROG_CORRUPTED\tEine kritische Datei ist beschädigt...\tEine kritische Datei ist beschädigt!\n"
+"MSG_PROG_CORRUPTED\tEine kritische Datei ist beschädigt...\tEine kritische "
+"Datei ist beschädigt!\n"
"\n"
"%s ist beschädigt.\n"
"\n"
"Bitte XTrackCAD neu installieren."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:125
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:129
#, c-format
msgid ""
"MSG_ENTERED_STRING_TRUNCATED\tThe entered text is too long. Maximum length "
@@ -7855,33 +7946,36 @@ msgstr ""
"MSG_ENTERED_STRING_TRUNCATED\tDer eingegebene Text ist zu lang. Die maximal "
"zulässige Länge beträgt %d."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:126
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:130
#, c-format
msgid "MSG_PT_IS_NOT_TRK\t[X Y] is not a track\t[%s %s] is not a track."
msgstr ""
"MSG_PT_IS_NOT_TRK\tAn [X Y]befindet sich kein Gleis\tAn [%s %s] befindet "
"sich kein Gleis."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:127
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:131
msgid ""
-"MSG_BITMAP_SIZE_WARNING\tYou have specified a large bitmap....\tYou have specified a large bitmap.\n"
+"MSG_BITMAP_SIZE_WARNING\tYou have specified a large bitmap....\tYou have "
+"specified a large bitmap.\n"
"\n"
"Are you sure you want to continue?"
msgstr ""
-"MSG_BITMAP_SIZE_WARNING\tDie Bilddatei wird sehr groß.\tDie Bilddatei wird sehr groß.\n"
+"MSG_BITMAP_SIZE_WARNING\tDie Bilddatei wird sehr groß.\tDie Bilddatei wird "
+"sehr groß.\n"
"\n"
"Wollen Sie den Vorgang fortsetzen?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:128
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:132
msgid "Icon Size change will take effect on next program start."
msgstr "Die Änderung der Icon-Größe wird nach dem Neustart aktiv."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:129
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:133
#, c-format
-msgid "Are you sure you want to delete these %d car(s)?"
-msgstr "Sind Sie sicher, dass Sie diese %d Wagen löschen wollen?"
+msgid "Are you sure you want to delete these %d car(s) from your inventory?"
+msgstr ""
+"Sind Sie sicher, dass Sie diese %d Wagen aus dem Inventar löschen wollen?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:130
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:134
#, c-format
msgid ""
"Cannot open %s file:\n"
@@ -7890,117 +7984,117 @@ msgstr ""
"%sdatei kann nicht geöffnet werden:\n"
"%s:%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:131
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:135
#, c-format
msgid "Cannot create directory: %s - %s"
msgstr "Kann Verzeichnis %s nicht erstellen %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:132
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:136
#, c-format
msgid "Cannot open directory: %s"
msgstr "Verzeichnis %s kann nicht geöffnet werden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:133
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:137
#, c-format
msgid "Path for deletion is not a directory: %s"
msgstr "Zu löschender Pfad %s ist kein Verzeichnis"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:134
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:138
#, c-format
msgid "Open failed for directory: %s"
msgstr "Fehler beim Öffnen des Verzeichnis %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:135
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:139
#, c-format
msgid "Can't add directory record %s to zip - %s"
msgstr "Kann Verzeichniseintrag %s nicht zum Zip hinzufügen - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:136
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:140
#, c-format
msgid "Can't add file record %s to zip at %s - %s"
msgstr "Kann den Dateisatz %s nicht zum Zip bei %s - %s hinzufügen"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:137
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:141
#, c-format
msgid "Can't create zip %s - %s"
msgstr "Zip-Datei %s kann nicht erstellt werden %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:138
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:142
#, c-format
msgid "Close failure for zip %s - %s"
msgstr "Fehler beim Schließen der Zip-Datei %s - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:139
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:143
#, c-format
msgid "Rename failure for zip from %s to %s - %s"
msgstr "Umbenennen des Zip von %s in %s - %s fehlgeschlagen"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:140
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:144
#, c-format
msgid "Open failure for zip %s - %s"
msgstr "Öffnungsfehler für Zip %s - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:141
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:145
#, c-format
msgid "Index failure for zip %s - %s"
msgstr "Indexfehler für Zip %s - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:142
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:146
#, c-format
msgid "Open read file failure %s %s"
msgstr "Fehler beim Öffnen der Datei zum Lesen %s %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:143
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:147
#, c-format
msgid "Open file in zip failure %s %s"
-msgstr "Fehler beim Öfnen der Datei im Zip %s %s"
+msgstr "Fehler beim Öffnen der Datei im Zip %s %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:144
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:148
#, c-format
msgid "Unlink failed for: %s"
msgstr "Löschen ist fehlgeschlagen bei %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:145
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:149
#, c-format
msgid "Remove Directory failed for: %s"
msgstr "Verzeichnis entfernen fehlgeschlagen für: %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:146
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:150
#, c-format
msgid "Cannot save archive to %s from directory: %s"
msgstr "Archiv kann nicht in %s aus Verzeichnis %s gespeichert werden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:147
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:151
#, c-format
msgid "Cannot save manifest file to %s"
msgstr "Manifest kann nicht in %s gespeichert werden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:148
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:152
#, c-format
msgid "Cannot open manifest file %s"
msgstr "Manifest kann nicht geöffnet werden %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:149
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:153
#, c-format
msgid "Cannot unpack file: %s for file: %s in directory: %s"
msgstr "Datei kann nicht entpackt werden: %s für Datei: %s im Verzeichnis: %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:150
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:154
#, c-format
msgid "Cannot open file %s"
msgstr "Datei %s kann nicht geöffnet werden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:151
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:155
#, c-format
msgid "Cannot copy file %s into directory %s"
msgstr "Datei %s kann nicht in das Verzeichnis %s kopiert werden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:152
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:156
#, c-format
msgid "Unrecognized Option: %s"
msgstr "Unbekannte Option: %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:153
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:157
#, c-format
msgid ""
"End-Of-Line is unexpected in a quoted field.\n"
@@ -8013,7 +8107,7 @@ msgstr ""
"\n"
"Soll das Lesen der Datei fortgesetzt werden?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:154
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:158
#, c-format
msgid ""
"A comma was expected after this quoted field.\n"
@@ -8026,16 +8120,16 @@ msgstr ""
"\n"
"Soll das Laden der Datei fortgesetzt werden?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:155
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:159
#, c-format
msgid ""
"Error \\\\\"%s\\\\\" occurred while writing %s.\n"
"Please check disk space and system status."
msgstr ""
"Fehler \\\\\"%s\\\\\" aufgetreten beim Speichern von %s.\n"
-"Bitte Plattenplatz und System prüfen."
+"Bitte Speicherplatz und System prüfen."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:156
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:160
#, c-format
msgid ""
"At least one path for the Turnout T%d does not\n"
@@ -8046,28 +8140,28 @@ msgstr ""
"an einem Endpunkt. Solche Gleise können nicht gruppiert werden.\n"
"Das Gleis wurde aus der Auswahl entfernt."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:157
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:161
msgid "inv-pathEndTrk on Path."
msgstr "inv-pathEndTrk auf Pfad."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:158
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:162
msgid "inv-pathStartTrk on Path"
msgstr "inv-pathStartTrk auf Pfad"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:159
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:163
#, c-format
msgid "%s:%d- %s"
msgstr "%s:%d- %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:160
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:164
msgid "pathEndTrk not on Path."
msgstr "pathEndTrk nicht auf einem Pfad."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:161
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:165
msgid "pathStartTrk not on Path."
msgstr "pathStartTrk nicht auf einem Pfad."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:162
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:166
msgid ""
"The tracks cannot be connected together.\n"
"\n"
@@ -8081,7 +8175,7 @@ msgstr ""
"oder ändern Sie den Verbindungswinkel im\n"
"Einstellungsdialog."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:163
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:167
msgid ""
"The tracks cannot be connected together.\n"
"\n"
@@ -8095,7 +8189,7 @@ msgstr ""
"oder ändern Sie den Verbindungsabstand und -winkel im\n"
"Einstellungsdialog"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:164
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:168
msgid ""
"The tracks cannot be connected together.\n"
"\n"
@@ -8107,7 +8201,7 @@ msgstr ""
"Versuchen Sie einige Gleise enger zusammenzuführen\n"
"oder ändern Sie den Verbindungsabstand im Einstellungsdialog"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:165
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:169
msgid ""
"The first track for the Align\n"
"Rotate command must be Selected."
@@ -8115,7 +8209,7 @@ msgstr ""
"Das erste Gleis für den \"Ausrichten\n"
"Drehen\" Befehl muss ausgewählt sein."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:166
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:170
msgid ""
"The second track for the Align\n"
"Rotate command must be Unselected."
@@ -8123,15 +8217,15 @@ msgstr ""
"Das zweite Gleis für den \"Ausrichten\n"
"Drehen\" Befehl darf nicht ausgewählt sein."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:167
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:171
msgid "Too many selected tracks, drawing tracks as End Point."
msgstr "Zu viele ausgewählte Gleise, nur die Endpunkte werden angezeigt."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:168
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:172
msgid "Select an endpoint between two tracks."
msgstr "Einen Endpunkt zwischen zwei Gleisen auswählen."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:169
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:173
msgid ""
"According to values that have been entered the diverging\n"
"track does not connect with the tangent track. Please\n"
@@ -8145,11 +8239,11 @@ msgstr ""
"Prüfen Sie ob der Abzweigwinkel gemäß der der Auswahl richtig als\n"
"Steigung oder als Winkel eingegeben wurde."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:170
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:174
msgid "Moved before the end of the turnout"
msgstr "Vor das Ende des Tunnels verschoben"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:171
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:175
msgid ""
"The Coupled Length must be greater than the Car Length,\n"
"and the Coupler Length must be greater than 0."
@@ -8157,7 +8251,7 @@ msgstr ""
"Die gekuppelte Länge muss größer als die Wagenlänge\n"
"und die Kupplerlänge muss größer als 0 sein."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:172
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:176
msgid ""
"The Car Length value must be greater\n"
"than the Car Width value."
@@ -8165,15 +8259,15 @@ msgstr ""
"Die Wagenlänge muss größer als\n"
"die Wagenbreite sein."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:173
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:177
msgid ""
"The specified Index is already in use.\n"
"The Index will be updated to the next available value."
msgstr ""
-"Dier angegebene Indexnummer ist bereits vergeben.\n"
+"Die angegebene Indexnummer ist bereits vergeben.\n"
"Die Indexnummer wird auf den nächsten freien Wert aktualisiert."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:174
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:178
msgid ""
"You have changed values for this object.\n"
"\n"
@@ -8183,7 +8277,7 @@ msgstr ""
"\n"
"Wollen Sie diesen Dialog wirklich beenden?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:175
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:179
#, c-format
msgid ""
"File version %ld is lower than the minimum\n"
@@ -8194,16 +8288,18 @@ msgstr ""
"unterstütze Version %d. Konvertieren Sie\n"
"die Gleisplandatei mit einer älteren Version von %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:176
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:180
#, c-format
msgid ""
"File version %ld is lower than the minimum\n"
-"supported version %d.This parameter file will only work using an older version of %s"
+"supported version %d.This parameter file will only work using an older "
+"version of %s"
msgstr ""
"Dateiversion %ld ist älter als die älteste\n"
-"unterstütze Version %d. Diese Parameter-Datei wird nur mit einer älteren Version von %s funktionieren"
+"unterstütze Version %d. Diese Parameter-Datei wird nur mit einer älteren "
+"Version von %s funktionieren"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:177
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:181
#, c-format
msgid ""
"%s cannot read the demo file:\n"
@@ -8212,16 +8308,16 @@ msgstr ""
"%s kann die Demodatei \":\n"
"%s nicht laden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:178
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:182
#, c-format
msgid "doDemo: bad number (%d)"
msgstr "doDemo: ungültige Zahl (%d)"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:179
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:183
msgid "Playback TIMEEND without TIMESTART"
msgstr "TIMEEND in Wiedergabe ohne TIMESTART"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:180
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:184
#, c-format
msgid ""
"Unknown playback command (%d)\n"
@@ -8230,7 +8326,7 @@ msgstr ""
"Unbekannter Wiedergabebefehl (%d)\n"
"%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:181
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:185
#, c-format
msgid ""
"Playback file version %ld is lower than the\n"
@@ -8243,2312 +8339,100 @@ msgstr ""
"Sie müssen Ihr Layoutdesign mit einer älteren\n"
"Version von %s aktualisieren"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:182
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:186
#, c-format
-msgid "Scale index (%d) is not valid"
-msgstr "Maßstab (%d) ist nicht gültig"
+msgid ""
+"MSG_BAD_SCALE_INDEX\tScale index (NNN) is not valid. Do you want use the "
+"current layout scale (SCALE)? Or create an \"Unknown\" scale? See 'Help|"
+"Recent Messages' for details.\tScale index (%d) is not valid.\n"
+"Do you want use the current layout scale (%s)?\n"
+"Or create an \"Unknown\" scale?\n"
+"See 'Help|Recent Messages' for details."
+msgstr ""
+"MSG_BAD_SCALE_INDEX\tMaßstabswert (NNN) ist ungültig. Wollen sie den "
+"aktuellen Maßstab (SCALE) der Anlage benutzen? Oder einen \"Unkown\" Maßstab "
+"erstellen? Mehr Details sind unter 'Hilfe|Letzte Meldungen' zu finden."
+"\tMaßstabswert (%d) ist ungültig.\n"
+"Wollen sie den aktuellen Maßstab (%s) der Anlage benutzen?\n"
+"Oder einen \"Unkown\" Maßstab erstellen?\n"
+"Mehr Details sind unter 'Hilfe|Letzte Meldungen' zu finden."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:183
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:187
#, c-format
msgid ""
-"Scale %s is not valid\n"
-"Please check your %s.xtq file"
+"MSG_BAD_SCALE_NAME\tScale \"SCALE1\" is not valid. We will substitute a "
+"dummy scale based on \"SCALE2\". See 'Help|Recent Messages' for details."
+"\tScale \"%s\" is not valid. We will substitute a dummy scale based on "
+"\"%s\".\n"
+"See 'Help|Recent Messages' for details."
msgstr ""
-"Maßstab %s ist ungültig.\n"
-"Bitte prüfen Sie die Datei %s.xtq"
+"MSG_BAD_SCALE_NAME\tMaßstab \"SCALE1\" ist ungültig. Dieser wird durch "
+"einen Pseudomaßstab auf Grundlage von \"SCALE2\" ersetzt. Mehr Details unter "
+"'Hilfe|Aktuelle Meldungen' .\tMaßstab \"%s\" ist ungültig. Dieser wird "
+"durch einen Pseudomaßstab auf Grundlage von \"%s\" ersetzt..\n"
+"Mehr Details unter 'Hilfe|Aktuelle Meldungen' ."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:184
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:188
msgid "Cannot extend a helix"
msgstr "Eine Gleiswendel kann nicht erweitert werden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:185
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:189
msgid "Cannot trim a helix"
-msgstr "Eine Gleiswendel kann n icht gekürzt werden"
+msgstr "Eine Gleiswendel kann n nicht gekürzt werden"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:186
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:190
msgid "Ignore further audit notices?"
msgstr "Weitere Protokollhinweise ignorieren?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:187
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:191
#, c-format
msgid "%s"
msgstr "%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:188
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:192
msgid "Audit Abort?"
msgstr "Protokolierung abbrechen?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:189
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:193
msgid "Write Audit File?"
msgstr "Protokolldatei schreiben?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:190
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:194
#, c-format
msgid "checkTrackLength: Short track length = %0.3f"
msgstr "checkTrackLength: Kurze Gleislänge = %0.3f"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:191
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:195
#, c-format
msgid "checkTrackLength: unknown type: %d"
msgstr "checkTrackLength: Unbekannter Typ: %d"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:192
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:196
#, c-format
msgid "connectTracks: T%d[%d] T%d[%d] d=%0.3f a=%0.3f"
msgstr "connectTracks: T%d[%d] T%d[%d] d=%0.3f a=%0.3f"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:193
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:197
#, c-format
msgid "GetAngleAtPoint: bad type(%d) for T(%d)"
msgstr "GetAngleAtPoint: Falscher Typ (%d) für T(%d)"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:194
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:198
#, c-format
msgid "joinTracks: invalid track type=%d"
msgstr "joinTracks: Ungültiger Gleistyp=%d"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:195
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:199
#, c-format
msgid "resolveIndex: T%d[%d]: T%d doesn\\\\'t exist"
msgstr "resolveIndex: T%d[%d]: T%d existiert nicht"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:196
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:200
msgid "Moved beyond the end of the track"
msgstr "Hinter das Ende des Gleises verschoben"
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:9
-msgid "Invokes online help for this dialog"
-msgstr "Aufruf der Kontexthilfe für diesen Dialog"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:10
-msgid "Cancels this command"
-msgstr "Befehl abbrechen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:11
-msgid "Closes the dialog"
-msgstr "Dialogfenster schliessen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:12
-msgid "About program dialog"
-msgstr "Informationen über dieses Programm"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:13
-msgid "Move selected object to top"
-msgstr "Ausgewählte Objekte ganz nach oben verschieben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:14
-msgid "Raise or lower all selected tracks"
-msgstr "Alle ausgewählten Gleise anheben oder absenken"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:15
-msgid "Show a protractor"
-msgstr "Einen Winkelmesser anzeigen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:16
-msgid "Turn magnetic snap on or off"
-msgstr "Magnetisches Fangen ein/aus"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:18
-msgid "Move selected object to bottom"
-msgstr "Ausgewähltes Objekt ganz nach unten verschieben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:19
-msgid "Create a section of track for automation"
-msgstr "Einen Gleisabschnitt für die Automation erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:20
-msgid "Edit a block definition "
-msgstr "Einen Gleisblock bearbeiten "
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:21
-msgid "Create a new Car/Loco description"
-msgstr "Erstelle eine neue Wegan/Lok-Beschreibung"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:22
-msgid "Manage your Car and Loco Inventory"
-msgstr "Wagen- und Lokbestand verwalten"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:23
-msgid "Create track circle from center"
-msgstr "Erstelle Gleiskreis um Mittelpunkt"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:24
-msgid "Create fixed radius track circle"
-msgstr "Erstelle Gleiskreis mit festgelegtem Radius"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:25
-msgid "Set Circle Track creation mode"
-msgstr "Wähle Befehl um Gleisbögen zu erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:26
-msgid "Create track circle from tangent"
-msgstr "Erstelle Gleiskreis von Tangente"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:27
-msgid "Removes elevation from Selected tracks"
-msgstr "Entfernt die Höhenangaben von den ausgewählten Gleisen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:28
-msgid "Copy objects to clipboard and duplicate them in exactly the same place"
-msgstr ""
-"Objekte in die Zwischenablage kopieren und an genau der gleichen Stelle "
-"duplizieren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:29
-msgid "Command Options dialog"
-msgstr "Dialog für die Befehlsoptionen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:30
-msgid "Controls colors"
-msgstr "Steuert die Farben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:31
-msgid "Connect two tracks"
-msgstr "Gleise zusammenfügen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:32
-msgid "Create a control for layout automation"
-msgstr "Erstelle ein Kontrollelement für Automation"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:33
-msgid "Select control element to create"
-msgstr "Neues Kontrollelement festlegen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:34
-msgid "Manage control elements"
-msgstr "Steuerungselemente verwalten"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:35
-msgid "Set Convert mode"
-msgstr "Konvertierungsmodus einstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:36
-msgid "Convert from Fixed Track to Cornu"
-msgstr "Aus festem Gleis in eine Cornu umwandeln"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:37
-msgid "Convert from Cornu and Bezier to Fixed Track"
-msgstr "Von Cornu oder Bezier auf festes Gleis umwandeln"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:38
-msgid "Copy selected objects to clipboard"
-msgstr "Ausgewählte Objekte in die Zwischenablage kopieren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:39
-msgid "Create Cornu track"
-msgstr "Cornu-Bogen erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:40
-msgid "Create curved track from center"
-msgstr "Erstelle Gleisbogen vom Mittelpunkt"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:41
-msgid "Create curved track from chord"
-msgstr "Erstelle Gleisbogen von einer Sehne"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:42
-msgid "Create curved track from end-point"
-msgstr "Erstelle Gleisbogen von Endpunkt"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:43
-msgid "Create Bezier track"
-msgstr "Erstelle Bezier-Gleis"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:44
-msgid "Set Curve Track creation mode"
-msgstr "Wähle Befehl um Gleiskreis zu erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:45
-msgid "Create curved track from tangent"
-msgstr "Erstelle Gleisbogen von einer Tangente"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:46
-msgid "Manipulate Custom designer entries"
-msgstr "Bearbeite die eigenen Designs"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:47
-msgid "Moves selected objects to clipboard"
-msgstr "Ausgewählte Objekte in die Zwischenablage verschieben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:48
-msgid "Delete objects"
-msgstr "Objekte löschen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:49
-msgid "Playback demos"
-msgstr "Demos abspielen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:50
-msgid "Change Object Properties"
-msgstr "Eigenschaften des Objektes bearbeiten"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:51
-msgid "Change to properties mode"
-msgstr "Zum Modus \"Eigenschaften\""
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:52
-msgid "Deselect all selected objects"
-msgstr "Ausgewählte Objekte abwählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:53
-msgid "Change Display parameters"
-msgstr "Anzeigeeigenschaften ändern"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:54
-msgid "Create benchwork"
-msgstr "Unterbau erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:55
-msgid "Create a box"
-msgstr "Ein Viereck erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:56
-msgid "Set Circle drawing command"
-msgstr "Wähle Befehl um Kreise zu zeichnen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:57
-msgid "Create a circle"
-msgstr "Einen Kreis erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:58
-msgid "Draw a circle line from center"
-msgstr "Zeichne Kreislinie um Mittelpunkt"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:59
-msgid "Draw a fixed radius circle line"
-msgstr "Zeichne einen Kreisbogen mit festen Radius"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:60
-msgid "Draw a circle line from tangent"
-msgstr "Zeichne Kreis von Tangente"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:61
-msgid "Set Curve drawing command"
-msgstr "Wähle Befehl um gebogene Linien zu zeichnen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:62
-msgid "Create a curved line"
-msgstr "Eine gebogene Linie erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:63
-msgid "Create a curved line from End"
-msgstr "Gebogene Linie von einem Endpunkt erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:64
-msgid "Create a curved line from center"
-msgstr "Gebogene Linie vom Mittelpunkt aus erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:65
-msgid "Create a curved line from chord"
-msgstr "Gebogene Linie von einer Sehne erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:66
-msgid "Create a curved line from tangent"
-msgstr "Gebogene Linie von einer Tangente erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:67
-msgid "Create a Bezier line"
-msgstr "Eine Bezier-Linie erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:68
-msgid "Create a dimension line"
-msgstr "Zeichne Maßlinie"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:69
-msgid "Create a filled box"
-msgstr "Ein gefülltes Viereck erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:70
-msgid "Create a filled circle"
-msgstr "Einen gefüllten Kreis erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:71
-msgid "Draw a filled circle from center"
-msgstr "Zeichne gefüllten Kreis um Mittelpunkt"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:72
-msgid "Draw a fixed radius filled circle"
-msgstr "Zeichne einen gefüllten Kreis mit festem Radius"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:73
-msgid "Draw a filled circle from tangent"
-msgstr "Zeichne gefüllten Kreis von Tangente"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:74
-msgid "Create a polygon"
-msgstr "Ein Polygon erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:75
-msgid "Create a filled polygon"
-msgstr "Ein gefültes Polygon erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:76
-msgid "Create a polyline"
-msgstr "Eine Polylinie erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:77
-msgid "Create a straight line"
-msgstr "Eine gerade Linie erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:78
-msgid "Set Line drawing command"
-msgstr "Wähle Befehl um Linien zu zeichnen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:79
-msgid "Set Shape drawing command"
-msgstr "Wähle Befehl um Formen zu zeichnen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:80
-msgid "Draw table edge"
-msgstr "Tischkante zeichnen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:81
-msgid "Easement menu"
-msgstr "Einstellungen für Übergangsbögen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:83
-msgid "Generate a Parts List of selected objects"
-msgstr "Teileliste aus den ausgewählten Objekten erzeugen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:84
-msgid "Set Import/Export mode"
-msgstr "Import-/Exportmodus auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:85
-msgid "Export a .xti file"
-msgstr "Export in XTI Datei"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:86
-msgid "Export a Bitmap image"
-msgstr "Als Bitmap exportieren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:87
-msgid "Export a DXF file"
-msgstr "Export nach DXF"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:89
-msgid "Flip selected objects"
-msgstr "Ausgewählte Objekte spiegeln"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:90
-msgid "Adjust snap grid"
-msgstr "Fangraster anpassen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:91
-msgid "Enable snap grid"
-msgstr "Fangraster aktivieren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:92
-msgid "Show snap grid"
-msgstr "Fangraster anzeigen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:93
-msgid "Create a structure from a Group of objects"
-msgstr "Objekte zu einer Gruppierung zusammen fassen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:94
-msgid "Create a hand-laid turnout"
-msgstr "Handgemachte Weiche erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:95
-msgid "Create a track helix"
-msgstr "Eine Gleiswendel erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:96
-msgid "Import a .xti file"
-msgstr "Importieren einer .xti-Datei"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:97
-msgid "Import an .xti file as a Module"
-msgstr "Importieren einer .xti-Datei als Modul"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:98
-msgid "Join two tracks"
-msgstr "Zwei Gleise zusammenfügen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:99
-msgid "Join two lines or polylines"
-msgstr "Verbinden von zwei Linien oder Polylinien"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:100
-msgid "Set Join mode"
-msgstr "Verbindungsmodus einstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:101
-msgid "Change Layers"
-msgstr "Ebenen ändern"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:102
-msgid "Selects the current drawing layer"
-msgstr "Auswahl der aktuellen Zeichenebene"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:103
-msgid "Layout parameters"
-msgstr "Gleisplaneinstellungen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:105
-msgid "Show/Hide Map Window"
-msgstr "Ãœbersichtsfenster anzeigen/verbergen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:106
-msgid "Select Measurement Tool"
-msgstr "Messwerkzeug auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:107
-msgid "Modify or extend a track"
-msgstr "Ändern oder erweitern eines Gleises"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:108
-msgid "Change To modify mode"
-msgstr "Zum Modus \"Auswählen\" wechseln"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:109
-msgid "Move selected objects"
-msgstr "Ausgewählte Objekte verschieben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:110
-msgid "Move a label"
-msgstr "Beschreibung verschieben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:111
-msgid "Move selected objects to current layer"
-msgstr "Ausgewählte Objekte auf die aktuelle Ebene verschieben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:113
-msgid "Print a bitmap"
-msgstr "Drucke in eine Grafikdatei"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:114
-msgid "Pan or zoom the layout"
-msgstr "Ausschnitt ändern oder Zoomen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:115
-msgid "Change to zoom/pan mode"
-msgstr "Zum Modus Zoom/Ausschnitt wechseln"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:116
-msgid "Create a parallel track"
-msgstr "Ein Parallelgleis erzeugen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:117
-msgid "Create a parallel line"
-msgstr "Eine Parallele erzeugen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:118
-msgid "Set Parallel mode"
-msgstr "Parallelen-Modus einstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:119
-msgid "Register"
-msgstr "Registrieren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:120
-msgid "Copy objects from clipboard"
-msgstr "Objekte von der Zwischenablage kopieren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:121
-msgid "Perferences dialog"
-msgstr "Einstellungen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:122
-msgid "Display prices of turnouts, sectional tracks and structures"
-msgstr "Die Preise von Weichen, Gleisen und Gebäuden anzeigen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:123
-msgid "Print the layout"
-msgstr "Gleisplan ausdrucken"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:124
-msgid "Loads and unloads parameter files into/from toolbar"
-msgstr "Parameterdateien zur Werkzeugleiste zufügen oder daraus entfernen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:125
-msgid "Elevation Profile Command"
-msgstr "Höhenprofil bearbeiten"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:127
-msgid "Command recorder"
-msgstr "Befehlsaufzeichnung"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:129
-msgid "Update selected Turnout and Structure definitions"
-msgstr "Die ausgewählten Gebäude und Weichen aktualisieren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:130
-msgid "Rescale selected objects"
-msgstr "Ausgewählte Objekte skalieren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:131
-msgid "Rotate selected object(s)"
-msgstr "Ausgewählte Objekte drehen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:132
-msgid "Show a ruler"
-msgstr "Lineal anzeigen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:133
-msgid "Select objects"
-msgstr "Objekte auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:134
-msgid "Change To Select Mode"
-msgstr "Zum Modus \"Auswählen\" wechseln"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:135
-msgid "Selects all objects on the layout"
-msgstr "Alle Objekte des Gleisplan auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:136
-msgid "Selects all objects in the current Layer"
-msgstr "Alle Objekte der aktuellen Ebene auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:137
-msgid "Choose objects by Index number"
-msgstr "Objekte nach ihrer Kennziffer auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:138
-msgid "Invert current selection"
-msgstr "Auswahl umkehren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:139
-msgid "Configure the Printer"
-msgstr "Drucker konfigurieren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:140
-msgid "Set Split mode"
-msgstr "Auftrennungsmodus einstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:141
-msgid "Split a track"
-msgstr "Gleis trennen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:142
-msgid "Split a straight, curved, circle, polygon or polyline Draw Object "
-msgstr ""
-"Teilen Sie ein gerades, gekrümmtes, Kreis-, Polygon- oder Polylinien-"
-"Zeichenobjekt"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:143
-msgid "Select stranded (unconnected) track pieces"
-msgstr "Vereinzelte (nicht verbundene) Gleisstücke auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:144
-msgid "Create a sensor (ie. a occupancy detector or a toggle switch)"
-msgstr ""
-"Erstelle einen Sensor (z.B. eine Besetzterkennung oder einen Umschalter)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:145
-msgid "Create a signal for train control"
-msgstr "Ein Signal für die Zugsteuerung erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:146
-msgid "Choose which commands are sticky"
-msgstr "Auswahl dauerhafter Befehle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:147
-msgid "Create straight track"
-msgstr "Gerades Gleis erzeugen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:148
-msgid "Place a structure on the layout"
-msgstr "Ein Gebäude auf den Gleisplan setzen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:149
-msgid "Create a switchmotor for turnout control"
-msgstr "Einen Motor für die Weichensteuerung erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:150
-msgid "Edit a switchmotor definition"
-msgstr "Einen Weichenantrieb bearbeiten"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:151
-msgid "Enter text on the layout"
-msgstr "Text auf den Gleisplan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:152
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:579
-msgid "Controls the size of the entered text"
-msgstr "Auswahl der Schriftgröße für einzugebenden Text"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:153
-msgid "Plain Text"
-msgstr "Einfacher Text"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:154
-msgid "Tip of the Day window"
-msgstr "Tipp des Tages"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:156
-msgid "Change To Run Trains Mode"
-msgstr "Zum Modus \"Züge fahren\" wechseln"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:157
-msgid "Pause/Resume Trains"
-msgstr "Zugbetrieb pausieren/fortsetzen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:158
-msgid "Place a car on the layout"
-msgstr "Einen Wagen auf den Gleisplan setzen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:159
-msgid "Exit Trains"
-msgstr "Zugbetrieb beenden"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:160
-msgid "Trim a line, circle or polyline Draw Object using a second Object"
-msgstr ""
-"Schneiden Sie ein Linien-, Kreis- oder Polylinien-Zeichnungsobjekt mit einem"
-" zweiten Objekt"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:161
-msgid "Hide/Unhide a track"
-msgstr "Verbergen/Zeigen eines Gleises"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:162
-msgid "Make/Unmake a track a bridge"
-msgstr "Ein Gleis zu einer Brücke machen/aufheben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:163
-msgid "Place a turnout or sectional track"
-msgstr "Weiche oder Gleis platzieren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:164
-msgid "Create a new turnout definition"
-msgstr "Erstelle eine neue Weichendefinition"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:165
-msgid "Place a turntable"
-msgstr "Eine Drehscheibe setzen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:166
-msgid "Updates old source files with 3 part titles"
-msgstr "Aktualisiere alte Dateien mit dreiteiligen Titeln"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:168
-msgid "Ungroup objects"
-msgstr "Gruppierung aufheben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:169
-msgid "Draw tracks with thin lines"
-msgstr "Gleise mit dünnen Linien zeichnen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:170
-msgid "Draw tracks with medium lines"
-msgstr "Gleise mit mittleren Linien zeichnen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:171
-msgid "Draw tracks with thick lines"
-msgstr "Gleise mit dicken Linien zeichnen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:172
-msgid "Change drawing scale"
-msgstr "Zeichenmaßstab auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:173
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:204
-msgid "Zoom in"
-msgstr "Zoom größer"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:174
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:205
-msgid "Zoom out"
-msgstr "Zoom kleiner"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:178
-msgid "Curved Fixed"
-msgstr "Fester Bogen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:179
-msgid "Preferred Radius"
-msgstr "Bevorzugter Radius"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:180
-msgid "Modify Draw"
-msgstr "Zeichenobjekt ändern"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:187
-msgid "Rotation Angle"
-msgstr "Drehwinkel"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:188
-msgid "Rot Center X"
-msgstr "Drehzentrum X"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:189
-msgid "Rot Center Y"
-msgstr "Drehzentrum Y"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:191
-msgid "File Menu"
-msgstr "Dateimenue"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:192
-msgid "Save layout"
-msgstr "Gleisplan speichern"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:193
-msgid "Save layout under a new name "
-msgstr "Gleisplan mit neuem Namen speichern "
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:194
-msgid "New layout"
-msgstr "Neuer Gleisplan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:195
-msgid "Generate parts list"
-msgstr "Teileliste erzeugen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:196
-msgid "Load a layout"
-msgstr "Gleisplan laden"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:197
-msgid "Manage Parameter Files"
-msgstr "Parameterdateien verwalten"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:198
-msgid "Print layout"
-msgstr "Gleisplan drucken"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:199
-msgid "Exit the program"
-msgstr "Programm beenden"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:200
-msgid "Revert to last saved state of layout plan"
-msgstr "Zum letzten gespeicherten Stand zurücksetzen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:201
-msgid "Printer Setup"
-msgstr "Drucker einstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:202
-msgid "Edit menu"
-msgstr "Bearbeiten Menü"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:203
-msgid "Redraw layout"
-msgstr "Gleisplan neu zeichnen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:206
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:209
-msgid "Tools menu"
-msgstr "Werkzeug Menü"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:207
-msgid "View menu"
-msgstr "Menü für Anzeigefuinktionen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:208
-msgid "Toolbar configuration"
-msgstr "Konfiguration der Werkzeugleiste"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:210
-msgid "Options menu"
-msgstr "Optionen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:211
-msgid "Playback/Record commands"
-msgstr "Aufzeichnungs- und Wiedergabebefehle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:212
-msgid "Window menu"
-msgstr "Fenstermenü"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:213
-msgid "Help menu"
-msgstr "Menü für Hilfe"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:214
-msgid "Recent error messages and explanations"
-msgstr "Aktuellste Fehlermeldungen und Erläuterungen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:215
-msgid "Move Hot Bar left"
-msgstr "Schnellauswahl nach links bewegen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:216
-msgid "Move Hot Bar right"
-msgstr "Schnellauswahl nach rechts bewegen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:217
-msgid "Total track count"
-msgstr "Gesamtzahl der Gleise"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:218
-msgid "X Position of cursor"
-msgstr "X Position des Zeiger"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:219
-msgid "Y Position of cursor"
-msgstr "Y Position des Zeiger"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:220
-msgid "Drawing scale"
-msgstr "Zeichnungsmaßstab"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:221
-msgid "Message and status line"
-msgstr "Nachrichten- und Statuszeile"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:222
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:223
-msgid "Main layout canvas"
-msgstr "Hauptzeichenbereich"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:224
-msgid "Main drawing canvas"
-msgstr "Hauptzeichenbereich"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:225
-msgid "Command buttons"
-msgstr "Befehle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:226
-msgid "Menus"
-msgstr "Menüs"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:227
-msgid "Tile, Filename and Window Manager buttons"
-msgstr "Tile, Filename and Window Manager buttons"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:228
-msgid "Turnout and Structure Hot Bar"
-msgstr "Weichen und Gebäude Auswahlleiste"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:229
-msgid "Active layer list and layer buttons"
-msgstr "Liste der aktiven Ebene und Ebenen-Knöpfe"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:230
-msgid "Map window"
-msgstr "Kartenfenster"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:231
-msgid "This is the portion of the layout shown in the Main Window canvas"
-msgstr "Dieser Teil der Gleisplans wird auf der Hauptzeichenfläche angezeigt"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:232
-msgid "Raise or Lower all Selected Track"
-msgstr "Anheben oder Absenken der ausgewählten Gleise"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:233
-msgid "Name of block"
-msgstr "Name des Blocks"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:234
-msgid "Script that the block will run"
-msgstr "Auszuführendes Skript"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:235
-msgid "List of tracks in the Block"
-msgstr "Liste der Gleise in einem Gleisblock"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:236
-msgid "Add or Update car object"
-msgstr "Einen Wagen zufügen oder aktualisieren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:237
-msgid "Manufacturer name"
-msgstr "Hersteller"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:240
-msgid "Is the Car a Locomotive?"
-msgstr "Ist der Wagen eine Lokomotive?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:241
-msgid "Part Number and Description"
-msgstr "Bestellnr. und Beschreibung"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:242
-msgid "Manufacturer Part Number"
-msgstr "Bestellnummer des Herstellers"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:243
-msgid "Use the Selected figure as the car image"
-msgstr "Benutze die ausgewählte Zeichnung als Wagenabbild"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:244
-msgid "Use the default figure as the car image"
-msgstr "Benutze die Standardzeichnung als Wagenabbild"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:245
-msgid "Optional description of the Car Part"
-msgstr "Optionale Beschreibung des Wagenmuster"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:246
-msgid "Flip car image"
-msgstr "Wagenabbild spiegeln"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:247
-msgid "Display Car Item information or reporting marks and dimensions"
-msgstr ""
-"Informationen über den Wagen oder Kennzeichen und Abmessungen anzeigen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:248
-msgid "Full Roadname"
-msgstr "Bahngesellschaft"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:249
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:250
-msgid "Car Type"
-msgstr "Wagenart"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:251
-msgid "Reporting Marks (Roadname abbreviation)"
-msgstr "Wagenkennzeichen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:252
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:457
-msgid "Car Number"
-msgstr "Wagennummer"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:253
-msgid "Car body Color"
-msgstr "Wagenfarbe"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:254
-msgid "Length of car body"
-msgstr "Länge des Aufbau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:255
-msgid "Width of car body"
-msgstr "Breite des Aufbau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:256
-msgid "Distance between Trucks "
-msgstr "Abstand zwischen den Drehgestellen "
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:257
-msgid "Distance Trucks are displaced along Car"
-msgstr "Abstand der Drehgestelle vom Wagenende"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:258
-msgid "Coupler are mounted on body or truck"
-msgstr "Kupplungen sind am Wagenaufbau oder an den Drehgestellen befestigt"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:259
-msgid "Overall Coupled Length"
-msgstr "Gekuppelte Gesamtlänge"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:260
-msgid "Coupler Length from end of car"
-msgstr "Kupplungslänge vom Ende des Wagen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:261
-msgid "Diagram of Car"
-msgstr "Diagram der Lokomotive oder Wagens"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:262
-msgid "Item Index Number"
-msgstr "Laufende Nummer"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:263
-msgid "Original Purchase Price"
-msgstr "Ursprünglicher Kaufpreis"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:265
-msgid "Condition of car"
-msgstr "Zusatnd des Wagen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:266
-msgid "Original Purchase Date - yyyymmdd"
-msgstr "Kaufdatum - JJJJMMTT"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:267
-msgid "Last Service Date - yyyymmdd"
-msgstr "Letzte Prüfung - JJJJMMTT"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:268
-msgid "Number of identical cars to be entered"
-msgstr "Anzahl der zusätzlichen, gleichartigen Wagen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:269
-msgid "Do all the cars have the same Number?"
-msgstr "Haben alle Wagen dieselbe Nummer?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:270
-msgid "Notes about the car"
-msgstr "Anmerkungen zu dem Wagen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:271
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:272
-msgid "Create a new car Part or Prototype definitions"
-msgstr "Einen neuen Lokomotiven oder Wagen Prototyp erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:273
-msgid "Finds the selected Car Item on the layout"
-msgstr "Suche den ausgewählten Wagen auf der Anlage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:274
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:275
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:276
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:277
-msgid "Sort the Item list"
-msgstr "Sortierung auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:279
-msgid "Edit the selected Car Item"
-msgstr "Markierte Lokomotive oder Wagen bearbeiten"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:280
-msgid "Add a new Car Item"
-msgstr "Neuen Wagen hinzufügen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:281
-msgid "Delete the selected Car Items"
-msgstr "Markierte Lokomotiven oder Wagen löschen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:282
-msgid "Import a Car Item .csv file"
-msgstr "Lokomotiven oder Wagen aus einer .csv Datei importieren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:283
-msgid "Export a Car Item .csv file"
-msgstr "Exportieren der markierten Lokomotiven oder Wagen in eine .csv Datei"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:284
-msgid "Create a text list of the Car Items"
-msgstr "Textdatei der Lokomotiven oder Wagen erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:285
-msgid "Specifies the radius of the circle track"
-msgstr "Gibt den Radius des Gleiskreises an"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:286
-msgid "Default command is Describe or Select"
-msgstr "Standardbefehl ist Eigenschaften oder Auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:287
-msgid "Action to invoke on Right-Click"
-msgstr "Festlegen welche Aktion beim Rechtsklick erfolgen soll"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:288
-msgid ""
-"Replace current selection with clicked object or add clicked object to "
-"selection"
-msgstr ""
-"Aktuelle Auswahl durch angeklicktes Objekt ersetzen oder angeklicktes Objekt"
-" zur Auswahl hinzufügen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:289
-msgid "Clicking into an empty area clears selection if select mode is <add>"
-msgstr ""
-"Ein Klick in einen leeren Bereich löscht die Auswahl, wenn der Auswahlmodus "
-"<add> ist"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:291
-msgid "The list of control elements"
-msgstr "Die Liste der Steuerungselemente"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:292
-msgid "Edit the element"
-msgstr "Das Element bearbeiten"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:293
-msgid "Delete the element"
-msgstr "Das Element löschen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:294
-msgid "Contents Label for new Parameter file"
-msgstr "Inhaltsbeschreibung für neue Parameterdatei"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:295
-msgid "Desired curve radius for new track"
-msgstr "Gewünschter Kurvenradius für das neue Gleis"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:296
-msgid "List of custom designed turnouts and structures"
-msgstr "Liste der individual entwickelten Weichen und Strukturen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:297
-msgid "Invoke designer editor"
-msgstr "Vorbild bearbeiten"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:298
-msgid "Remove selected entries"
-msgstr "Ausgewählte Einträge löschen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:299
-msgid "Copy selected entries to Parameter File"
-msgstr "Ausgewählte Einträge in eine Parameterdatei verschieben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:300
-msgid "Create a New part or prototype"
-msgstr "Neues Teil oder Prototype erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:301
-msgid "Update custom file and close"
-msgstr "Anpassungs Verwaltung speichern und schliessen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:302
-msgid "Executes the next step of the demo"
-msgstr "Nächsten Schritt der momentanen Demo anzeigen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:303
-msgid "Skip to next demo"
-msgstr "Zum nächstes Demo Kapitel springen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:304
-msgid "Stops the demonstration and returns you to XTrackCAD"
-msgstr "Demonstrations Modus verlassen und zu XTrackCAD zurückkehren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:305
-msgid "Select speed of Playback"
-msgstr "Wiedergabegeschwindigkeit auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:306
-msgid "This is where comments about the demo are displayed"
-msgstr "Kommentar zu Demos anzeigen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:343
-msgid "Move the Main canvas if you drag near the edge"
-msgstr ""
-"Bewegen den Hauptzeichenbereich wenn in der nähe der Ecken gezogen wird"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:344
-msgid "Color tracks by layer or individually"
-msgstr "Gleise nach Ebene oder einzeln einfärben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:345
-msgid "Color draw objects by layer or individually"
-msgstr "Objekte nach Ebene oder einzeln einfärben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:346
-msgid "Controls the drawing of hidden tracks"
-msgstr "Steuert das Zeichnen von versteckten Gleisen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:347
-msgid "Controls the drawing of End-Points"
-msgstr "Steuert das Zeichnen von Endpunkten"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:348
-msgid "How to draw track ties"
-msgstr "Steuert das Zeichnen der Schwellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:349
-msgid "Show crosshair at center of curves"
-msgstr "Mittelpunkt als Fadenkreuz anzeigen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:350
-msgid "Drawing scale when to draw tracks with 2 rails"
-msgstr "Mindestmaßstab für die Anzeige von Gleisen mit zwei Schienen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:351
-msgid "Drawing scale of the map window"
-msgstr "Zeichenmaßstab des Kartenfenster"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:352
-msgid "Whether the main layout is updated while dragging on the Map"
-msgstr "Aktualisierung des Gleisplans wenn in der Karte gezogen wird"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:353
-msgid "Enable labels for Turnouts, Flextrack Lengths and Elevations"
-msgstr "Zeige Beschriftungen für Weichen, Flexgleise und Steigungen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:354
-msgid "When to label Turnout, Flextrack Lengths and Elevations"
-msgstr "Wann sollen Weichen, Gleislängen oder Höhenmaß beschriftet werden"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:355
-msgid "Font size for labels on layout"
-msgstr "Zeichengrösse für Beschriftungen im Gleisplan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:356
-msgid "Label elements on the Hot Bar"
-msgstr "Beschriftungselemente des Teilekatalogs"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:357
-msgid "Label elements on layout"
-msgstr "Beschriftungselemente im Gleisplan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:358
-msgid "Label elements for lists"
-msgstr "Beschriftungselemente in den Listen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:359
-msgid "How to group cars on the Train Hot Bar"
-msgstr "Gruppierung der Waggen im Teilekatalog"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:360
-msgid "Delay (in mS) between updating train movements"
-msgstr "Aktualisierungsintervall (in ms) der Zugbewegungen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:361
-msgid "Don't show trains in tunnels when tunnels are hidden"
-msgstr "Zeige keine Züge in Tunnels wenn Tunnel verborgen sind"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:362
-msgid "Display unconnected endpoints of track with special marks"
-msgstr "Unverbundene Endpunkte hervorheben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:363
-msgid "Whether the Main Drawing Area shows as much of the room as possible"
-msgstr ""
-"Soll der Zeichenbereich den größtmöglichen Ausschnitt des Raums anzeigen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:364
-msgid "Don't hide system cursor when program cursors are showing"
-msgstr "Systemcursor nicht verbergen, wenn der Anwendungscursor aktiv ist"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:366
-msgid "Width of the lines"
-msgstr "Breite der Linien"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:367
-msgid "Color of the lines"
-msgstr "Farbe der Linien"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:368
-msgid "List of types of Lumber"
-msgstr "Liste der Leistenmaße"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:369
-msgid "Color of Benchwork"
-msgstr "Farbe des Unterbau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:370
-msgid "Orientation of Benchwork"
-msgstr "Ausrichtung des Unterbau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:371
-msgid "Size of Dimension Arrows"
-msgstr "Breite der Größenpfeile"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:372
-msgid "Width of Box"
-msgstr "Breite des Rahmen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:373
-msgid "Height of Box"
-msgstr "Höhe des Rahmen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:374
-msgid "Angle of Line"
-msgstr "Winkel der Linie"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:375
-msgid "Radius of Curve"
-msgstr "Radius der Kurve"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:377
-msgid "This controls the sharpness of the easement curve"
-msgstr "Steuert die Größe des Übergangsradius"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:378
-msgid "Minimum radius"
-msgstr "Mindestgleisradius"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:379
-msgid "Maximum offset"
-msgstr "Maximaler Abstand"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:380
-msgid "Easement length"
-msgstr "Länge des Übergangsbogen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:381
-msgid ""
-"These radio buttons are a short-cut for Values of 0.0, 0.5, 1.0 and 2.0. "
-"None turns Easements off"
-msgstr ""
-"Standardwerte 0,0, 0,5, 1,0 und 2,0 können schnell gesetzt werden. "
-"Übergangsbögen können hier nicht ausgeschaltet werden"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:382
-msgid "Complete easement selection"
-msgstr "Auswahl der Übergangsbögen vervollständigen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:383
-msgid "Type of elevation"
-msgstr "Typ des Höhendpunktes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:384
-msgid "Height of End Point"
-msgstr "Höhe des Endpunkt"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:385
-msgid "Compute elevation based on neighbors"
-msgstr "Berechne das Höhenmaß gemäß der benachbarten Gleise"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:386
-msgid "Compute grade based on neighbors"
-msgstr "Berechne Steigung gemäß der benachbarten Gleise"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:387
-msgid "Specify a name for an End-Point"
-msgstr "Einen Namen für einen Endpunkt vergeben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:389
-msgid "Print parts list"
-msgstr "Stückliste drucken"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:390
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:512
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:625
-msgid "Invoke the Print Setup dialog"
-msgstr "Starte den Druckerkonfigursationsdialog"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:391
-msgid "Save parts list to file"
-msgstr "Stückliste in Datei speichern"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:392
-msgid "This is the list of parts for the layout"
-msgstr "Dies ist die Teileliste für diesen Gleisplan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:393
-msgid "Enable prices on the Parts List"
-msgstr "Preise in der Teileliste anzeigen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:394
-msgid "Enable index listing on the Parts List"
-msgstr "Kennziffern in der Teileliste anzeigen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:395
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:398
-msgid "Spacing between major grid lines"
-msgstr "Abstand der Haupt Raster Linien einstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:396
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:399
-msgid "Allows the spacing to be subdivided"
-msgstr "Stellt die Unterteilung von Zwischenmarkierungen ein"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:397
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:400
-msgid "Specifies if positions are snaped in this direction"
-msgstr "Einschalten des Fangrasters für diese Ausrichtung"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:401
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:402
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:403
-msgid "Shows the origin and angle of the grid"
-msgstr "Gibt den Ausgangspunkt und Winkel des Rasters an"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:404
-msgid "Specifies if the grid is shown"
-msgstr "Anzeige des Rasters an oder aus"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:405
-msgid "Completes the grid specification"
-msgstr "Raster Anpassung speichern und beenden"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:409
-msgid "Number of segments in Group"
-msgstr "Anzahl der Segmente in der Gruppe"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:410
-msgid "Replace the Selected object with the new definition?"
-msgstr "Soll das ausgewählte Objekt durch die neue Definition ersetzt werden?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:411
-msgid "Creates a new Structure (or Turnout)"
-msgstr "Ein neues Gebäude (oder eine Weiche) erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:412
-msgid "Elevation difference of Helix End-Points"
-msgstr "Höhenunterschied zwischen den Endpunkten der Gleiswendel"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:413
-msgid "Helix Radius"
-msgstr "Radius der Gleiswendel"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:414
-msgid "Number of turns in the helix"
-msgstr "Anzahl der Umdrehungen in der Wendel"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:415
-msgid "Angle betweek helix entrance and exit"
-msgstr "Winkel zwischen Zu- und Ausgang der Wendel"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:416
-msgid "Grade in helix"
-msgstr "Steigung in der Wendel"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:417
-msgid "Separation between helix layers including baseboard, track, etc"
-msgstr ""
-"Trennung zwischen den Ebenen der Gleiswendel einschließlich Gleisbrett, "
-"Gleis usw."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:418
-msgid "Index numbers of objects, separated by commas"
-msgstr "Kennziffern der Objekte, durch Kommata getrennt"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:419
-msgid "Desired curve radius between straight tracks"
-msgstr "Gewünschter Radius zwischen geraden Gleisen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:420
-msgid "Layer list"
-msgstr "Liste der Ebenen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:421
-msgid "Layer Name"
-msgstr "Name der Ebene"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:422
-msgid "Hide Layer Button on MenuBar"
-msgstr "Ebenenknopf in der Menuleiste verbergen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:423
-msgid "Color of layer"
-msgstr "Farbe der Ebene"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:424
-msgid "Layer is drawn on Main window"
-msgstr "Ebene im Hauptfenster darstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:425
-msgid "Layer cannot be changed"
-msgstr "Ebene schützen - kann nicht mehr geändert werden"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:426
-msgid "Use color for this Layer if color-by-layer is set"
-msgstr "Für diese Ebene Farbe benutzen, wenn Ebenenfarbe ausgewählt ist"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:427
-msgid "Other Layers this Layer also shows/hides"
-msgstr ""
-"Andere Ebenen, die mit dieser Ebene angezeigt oder versteckt werden sollen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:428
-msgid "Layer is a Module"
-msgstr "Ebene ist ein Modul"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:429
-msgid "Layer is drawn on Map window"
-msgstr "Ebene im Kartenfenster anzeigen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:430
-msgid "Number of layer buttons to show"
-msgstr "Anzahl der Ebenenknöpfe"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:431
-msgid "Number of objects in this layer"
-msgstr "Anzahl von Objekten in dieser Ebene"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:432
-msgid "Settings File to load when this layer is made current"
-msgstr ""
-"Einstellungsdatei, die geladen werden soll, wenn diese Ebene aktiviert wird"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:434
-msgid "Load layer configuration from default"
-msgstr "Persönliche Einstellungen für Ebenen laden"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:435
-msgid "Save current layer configuration as default"
-msgstr "Momentane Einstellung für Ebenen speichern"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:436
-msgid "Overwrite layer configuration with system default values"
-msgstr "Einstellung für Ebenen auf Systemvorgabe zurück setzen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:437
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:438
-msgid "Specifies the size of the room (in inches or centimeters)"
-msgstr "Größenangabe des Raums (in Zentimeter oder Inch)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:439
-msgid "Specifies the layout Title that will appear on printouts"
-msgstr "Angabe eines Layout Titels welcher auf Ausdrücken erscheint"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:440
-msgid "Specifies the layout Subtitle that will appear on printouts"
-msgstr "Angabe eines Layout Untertitels welcher auf Ausdrücken erscheint"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:441
-msgid "Specifies the Modelling Scale"
-msgstr "Angabe des Modellbahnmaßstabs"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:442
-msgid "Specifies the rail gauge, ie. the distance between the rails"
-msgstr "Angabe der Spurweite, d.h. der Abstand zwischen den Schienen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:443
-msgid ""
-"Specifies minimum track radius (in inches or centimeters). Tracks with a "
-"smaller radius are considered exceptional."
-msgstr ""
-"Angabe des minimalen Gleisradius (in Zentimeter oder Inch). Gleise mit "
-"geringerem Radius werden als Ausnahme angesehen."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:444
-msgid ""
-"Specifies maximum track elevation expressed as a percent (%). Tracks with a "
-"larger elevation are considered exceptional."
-msgstr ""
-"Angabe der maximalen Gleissteigung in %. Gleise mit größerer Steigung werden"
-" als Ausnahme angesehen."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:445
-msgid "Select the background image"
-msgstr "Das Hintergrundbild auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:446
-msgid "Remove the background image"
-msgstr "Das Hintergrundbild entfernen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:447
-msgid "Specifies the x offset of the bottom left of the background image"
-msgstr ""
-"Bestimmt den Abstand des Hintergrundbildes von der linken unteren Ecke in "
-"horizontaler Richtung"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:448
-msgid "Specifies the y offset of the bottom left of the background image"
-msgstr ""
-"Bestimmt den Abstand des Hintergrundbildes von der linken unteren Ecke in "
-"vertikaler Richtung"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:449
-msgid ""
-"Specifies how large the bottom edge of the background image should be in "
-"model units"
-msgstr ""
-"Gibt an, wie groß die Unterkante des Hintergrundbildes in Modelleinheiten "
-"sein soll"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:450
-msgid ""
-"Specifies the screening of the background image from 0 (none) to 100% "
-"(vanishes)"
-msgstr ""
-"Bestimmt die Transparenz des Hintergrundbildes von 0 (keine) bis 100% "
-"(verschwindet)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:451
-msgid "Specifies the rotation angle of the background image in degrees"
-msgstr "Bestimmt den Winkel des Hintergrndbildes in Grad"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:452
-msgid "Write a copy of current settings to a named file"
-msgstr "Aktuelle Einstellungen in einer Datei speichern"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:453
-msgid "Override current settings from a named file"
-msgstr ""
-"Ersetze die aktuellen Einstellungen durch Einstellungen aus einer Datei"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:454
-msgid "Move by X"
-msgstr "Um X verschieben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:455
-msgid "Move by Y"
-msgstr "Um Y verschieben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:458
-msgid ""
-"This is the body of the Note. To change this select Modify from the File "
-"Menu"
-msgstr ""
-"Dies ist der Notiztext. Um diesen zu ändern, wählen Sie bitte 'Ändern' aus "
-"dem 'Datei'-Menu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:460
-msgid "Specifies number of pixels per inch (or centimeter)"
-msgstr "Gibt die Anzahl der Bildpunkte pro Inch (oder Zentimeter) an"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:462
-msgid ""
-"Specifies whether Layout Titles, Borders or Track Centerlines are printed on"
-" the BitMap"
-msgstr ""
-"Gibt an, ob Anlagentitel, Begrenzungen und Gleismitten in der Bilddatei "
-"ausgegeben werden sollen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:463
-msgid ""
-"Specifies the separation between the original track and the parallel "
-"track/line"
-msgstr ""
-"Gibt den Abstand zwischen dem vorhandenen und dem neuen parallelen Gleis "
-"oder Linie an"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:464
-msgid ""
-"Specifies the a factor that increases the seperation as the radius of the "
-"original track reduces. 0.0 means no increase."
-msgstr ""
-"Gibt das Ausmaß der Zunahme des Abstands, basierend auf dem Radius an. Null "
-"ist keine Zunahme."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:465
-msgid "Enter your name as specified in the XTrackCAD Registration Notice"
-msgstr "Enter your name as specified in the XTrackCAD Registration Notice"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:466
-msgid "Enter the key value as specified in the XTrackCAD Registration Notice"
-msgstr "Enter the key value as specified in the XTrackCAD Registration Notice"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:467
-msgid "Validates the name and key. Terminates the registration command"
-msgstr "Validates the name and key. Terminates the registration command"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:468
-msgid "0 degrees is up or to the right"
-msgstr "0 Grad ist oben und rechts"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:469
-msgid "Choose english (inches) or metric (centimeters)"
-msgstr "Einheiten auswählen: Englisch für Inches oder Metrisch für Zentimeter"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:470
-msgid "How to display length measurements"
-msgstr "Längenformat auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:471
-msgid "Do not create tracks to be shorter than this value"
-msgstr "Keine Gleise kürzer als diese Mindestlänge erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:472
-msgid "Maximum distance between connected end points"
-msgstr "Maximale Distanz zwischen verbundenen Endpunkten"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:473
-msgid "Minimum angle between connected End-Points"
-msgstr "Kleinster Winkel zwischen verbundenen Endpunkten"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:474
-msgid "Specifies the minimum angle between tracks connected to a turntable"
-msgstr "Kleinster Winkel beim Anschluss von Gleisen an eine Drehscheibe"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:475
-msgid "Trains will crash above this speed"
-msgstr "Züge entgleisen oberhalb dieser Geschwindigkeit"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:476
-msgid "Enable/Disable balloon popup help windows"
-msgstr "Ein-/Ausschalten von Erklärungshilfen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:477
-msgid "Enable/Disable show of flextrack on hotbar"
-msgstr "Anzeige von Flexgleis in der Auswahlleiste ein- und ausschalten"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:478
-msgid "How far you can move the mouse before its considered a drag"
-msgstr "Wie weit kann die Maus bewegt werden, bevor abreißen angenommen wird"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:479
-msgid "How long you can hold a mouse button down before its considered a drag"
-msgstr ""
-"Wie lange kann ein Mausknopf gedrückt bleiben, bevor abreißen angenommen "
-"wird"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:480
-msgid "Minimum distance (in pixels) between grid lines/ticks"
-msgstr "Mindestabstand (in Pixeln) zwischen Raster und Linien"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:481
-msgid ""
-"Specifies the Check Point frequency; number of modifications made since the "
-"last checkpoint."
-msgstr ""
-"Anzahl von Änderungen bevor eine neue automatische Sicherungskopie erstellt "
-"wird."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:482
-msgid "Specifies the number of checkpoints after save before auto-saving."
-msgstr ""
-"Gibt die Anzahl der Sicherungskopien vor einer automatischen Sicherung an."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:483
-msgid "Resume work on last layout or start with new layout"
-msgstr "Letzten Gleisplan bearbeiten, oder einen neuen Gleisplan erstellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:485
-msgid "Updated cost of current selected item"
-msgstr "Aktualisierte Kosten für den ausgewählten Gegenstand"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:487
-msgid "Selection list for prices"
-msgstr "Auswahlliste für Preise"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:488
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:489
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:490
-msgid "Price of specified length of flex-track"
-msgstr "Preis für die angegebene Länge des Flex-Gleises"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:492
-msgid "Controls the printing of a centerline of track cmdPrint"
-msgstr "Steuert das Zeichnen der Mittellinie von Gleisen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:493
-msgid "Controls the reduction (scale) of the printout"
-msgstr "Einstellung des Verkleinerungsmaßstabs für den Ausdruck"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:494
-msgid "Scaled page width (Scale times physical page width)"
-msgstr "Seitenbreite angeben (Maßstab mal physikalischer Papierbreite)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:495
-msgid "Sets page size to the maximum (based on scale and physical page size)"
-msgstr ""
-"Setzt die Papiergröße auf das Maximum (basierend auf Maßstab und "
-"physikalischer Papiergröße)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:496
-msgid "Scaled page height (Scale times physical page height)"
-msgstr "Seitenhöhe angeben (Maßstab mal physikalischer Papierhöhe)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:497
-msgid "Sets scale, origin and angle for a one page printout of the layout"
-msgstr ""
-"Stellt Maßstab, Ausrichtung und Winkel für den momentan angezeigten "
-"Gleisplan ein"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:498
-msgid "Print page in Portrait or Landscape format"
-msgstr "Drucke im Hochformat oder Querformat"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:499
-msgid "Order of printing pages"
-msgstr "Druckreihenfolge"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:500
-msgid "Print Title, Date, Author and other information at bottom of page?"
-msgstr "Drucke Titel, Datum Autor und andere Informationen am Ende der Seite?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:501
-msgid "Ignore unprintable page margins?"
-msgstr "Nicht druckbare Seitenränder ignorieren?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:502
-msgid "Print Registration Marks at 1:1?"
-msgstr "Drucke Positionierungshilfen im 1:1 Maßstab?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:503
-msgid "Print Snap Grid?"
-msgstr "Fangraster drucken?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:504
-msgid ""
-"Print Rulers at the layout edge only, or on all page edges, or nowhere?"
-msgstr "Lineal nur am Rand, auf allen Seitenrändern oder nirgends drucken?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:505
-msgid "Print Roadbed Outline?"
-msgstr "Gleisbettung drucken?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:506
-msgid "Print Roadbed Outline"
-msgstr "Gleisbettung drucken"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:507
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:508
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:510
-msgid ""
-"Origin of the print grid. This is useful if you want to reprint a set of "
-"pages"
-msgstr ""
-"Ursprung des Druckraster. Hilfreich, wenn einige Seiten erneut gedruckt "
-"werden"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:509
-msgid "Resets the origin and angle to 0"
-msgstr "Ausrichtung und Winkel auf 0 zurücksetzen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:511
-msgid "Deselects all pages"
-msgstr "Alle Seiten abwählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:513
-msgid "Print selected pages and terminates the print command"
-msgstr "Ausdrucken der ausgewählten Seiten und den Dialog Drucken schließen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:514
-msgid "List of loaded, shown or hidden parameter files"
-msgstr "Liste der geladenen, angezeigten und inaktiven Parameterdateien"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:515
-msgid "Show parameter files by names or descriptions"
-msgstr "Zeige Namen oder Beschreibung der Parameter-Dateien an"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:516
-msgid "Toggle the shown status of the selected parameter file"
-msgstr "Ändert den Anzeigestatus für ausgewählte Parameter-Dateien"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:517
-msgid "Find extra parameter files from the filesystem"
-msgstr "Suche weitere Parameterdateien auf der Festplatte"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:518
-msgid "Find parameter files from the system library"
-msgstr "Suche Parameterdateien in der Systembibliothek zum Einlesen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:519
-msgid "Update parameter file list"
-msgstr "Aktualisiere die Liste der Parameterdateien"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:520
-msgid "Reload parameter file from list"
-msgstr "Parameterdateien erneut einlesen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:521
-msgid "Select all parameter files shown"
-msgstr "Alle angezeigten Parameter-Dateien auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:522
-msgid "Profile of specified path"
-msgstr "Höhenprofil der ausgewählten Verbindung"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:523
-msgid "Clear the profile"
-msgstr "Lösche das Höhenprofil"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:524
-msgid "Print the profile"
-msgstr "Höhenprofil drucken"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:526
-msgid "Stop recording"
-msgstr "Aufzeichnung beenden"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:527
-msgid "Insert a message"
-msgstr "Eine Nachricht einfügen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:528
-msgid "End a message"
-msgstr "Ende einer Mitteilung"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:529
-msgid "Message body"
-msgstr "Mitteilung"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:530
-msgid "Possible turnouts"
-msgstr "Mögliche Weichen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:531
-msgid "Skip this turnout"
-msgstr "Diese Weiche überspringen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:533
-msgid "Manufacturer of Object"
-msgstr "Hersteller des Objektes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:534
-msgid "Description of Object"
-msgstr "Beschreibung des Objekte"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:535
-msgid "Part Nuber of Object"
-msgstr "Bestellnummer des Objektes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:537
-msgid "Rescale by Scale Conversion or by Ratio"
-msgstr "Durch Auswahl eines Maßstab oder eines Multiplikators skalieren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:538
-msgid "Original Scale of the selected objects"
-msgstr "Ursprünglicher Maßstab der ausgewählten Objekte"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:539
-msgid "Original Gauge of the selected objects"
-msgstr "Ursprüngliche Spurweite der ausgewählten Objekte"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:540
-msgid "New Scale of the selected objects"
-msgstr "Neuer Maßstab der ausgewählten Objekte"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:541
-msgid "New Gauge of the selected objects"
-msgstr "Neu Spurweite der ausgewählten Objekte"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:542
-msgid "Change track dimensions to new scale"
-msgstr "Abmessungen des Gleises auf den neuen Maßstab umrechnen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:543
-msgid "Change size by this amount"
-msgstr "Größe um einen Faktor verändern"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:545
-msgid "Snap Grid Line and Division"
-msgstr "Fangraster Linien und Unterteilungen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:546
-msgid "X and Y position markers"
-msgstr "X und Y Positionsmarkierungen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:547
-msgid "Border rulers, room boundaries and table edges"
-msgstr "Begrenzungslinien, Raumumriß und Anlagenkanten"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:548
-msgid "Primary Axis of grid rotation"
-msgstr "Erste Achse für Rasterdrehung"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:549
-msgid "Secondary Axis of grid rotation"
-msgstr "Zweite Achse für Rasterdrehung"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:550
-msgid "Unselected tracks"
-msgstr "Nicht ausgewählte Gleise"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:551
-msgid "Selected tracks"
-msgstr "Ausgewählte Gleise"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:552
-msgid "Color of tracks on the Profile path"
-msgstr "Farbe für Gleise auf Höhenverlauf"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:553
-msgid "Color of Exceptional tracks"
-msgstr "Farbe für Gleise außerhalb der Grenzwerte"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:554
-msgid "Color of track ties"
-msgstr "Farbe der Schwellen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:555
-msgid "Updates the colors"
-msgstr "Farben aktualisieren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:556
-msgid "Angle in degrees"
-msgstr "Winkel in Grad"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:557
-msgid "Rotate object(s) by specified amount"
-msgstr "Objekte um einen bestimmten Winkel drehen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:558
-msgid "Enter one or more words as search terms"
-msgstr "Ein Wort oder mehrere Wörter als Suchbegriffe eingeben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:559
-msgid "Remove the current filter and show all files"
-msgstr "Den aktuellen Filter löschen und alle Dateien anzeigen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:560
-msgid "Find matching file descriptions"
-msgstr "Passende Inhaltsbeschreibungen finden"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:561
-msgid "Search results"
-msgstr "Suchergebnisse"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:562
-msgid "Show descriptions or filenames in results"
-msgstr "Beschreibungen oder Dateinamen in der Ergebnisliste anzeigen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:563
-msgid "Select how well the definitions must fit the current layout scale"
-msgstr ""
-"Wählen Sie aus, wie gut die Definitionen zum aktuellen Maßstab des "
-"Gleisplans passen müssen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:564
-msgid "Add selected entries into parameter file list"
-msgstr "Ausgewählte Einträge zur Liste der Parameterdateien zufügen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:565
-msgid "Select All found entries"
-msgstr "Alle Suchergebnisse auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:566
-msgid "Reload the system library contents for finding"
-msgstr "Laden Sie den Inhalt der Systembibliothek zum Suchen neu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:567
-msgid "Choose commands to be sticky"
-msgstr "Wiederholte Befehle auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:568
-msgid "Make the commands sticky"
-msgstr "Mache die Befehle wiederholbar"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:569
-msgid "List of available structure"
-msgstr "Liste der verfügbaren Gebäude"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:570
-msgid "Diagram of the selected structure"
-msgstr "Zeichnung des ausgewählten Gebäudes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:571
-msgid "Hide Selection window when placing Structure"
-msgstr "Verberge Auswahlfenster bis das Gebäude plaziert ist"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:572
-msgid "Drawing scale and size"
-msgstr "Zeichnungsmaßstab und Größe"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:573
-msgid "Complete structure placement"
-msgstr "Anordnung des Gebäude abschliessen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:574
-msgid "Choose a Pier number"
-msgstr "Bestellnummer eingeben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:575
-msgid "Name of the Motor"
-msgstr "Name des Weichenantriebs"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:576
-msgid "Value when switch is normal"
-msgstr "Werte bei normaler Weichenposition"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:577
-msgid "Value when the switch is reversed"
-msgstr "Wert bei umgekehrter Weichenposition"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:578
-msgid "Value for a positive comfirmation of switch position"
-msgstr "Wert bei positiver Bestätigung der Weichenposition"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:580
-msgid "Controls the color of the entered text"
-msgstr "Wählt die Farbe des eingegebenen Textes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:581
-msgid "If the text is boxed"
-msgstr "Ob der Text umrahmt ist"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:582
-msgid "Useful information about the program"
-msgstr "Nützliche Informationen über das Programm"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:583
-msgid "Show Tip of the Day every time the program starts"
-msgstr "Bei jedem Start den Tipp des Tages anzeigen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:584
-msgid "Show the next Tip of the Day"
-msgstr "Gehe zum nächsten Tipp des Tages"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:585
-msgid "Show the previous Tip of the Day"
-msgstr "Gehe zum vorherigen Tipp des Tages"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:587
-msgid "Controls which Command Buttons are displayed"
-msgstr "Ein- oder Ausblenden von Befehls-Knöpfen in der Werkzeugleiste"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:588
-msgid "List of Cars"
-msgstr "Liste der Wagen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:589
-msgid "List of active trains"
-msgstr "Liste der aktiven Züge"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:591
-msgid "Train odometer"
-msgstr "Entfernungsmesser"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:592
-msgid "Reset odometer to 0"
-msgstr "Kilometerzähler auf 0 zurücksetzen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:593
-msgid "Find train on layout"
-msgstr "Finde einen Zug auf der Anlage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:594
-msgid "Follow train around layout"
-msgstr "Zum Zug über die Anlage folgen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:595
-msgid "Flip direction at End Of Track"
-msgstr "Am Ende des Gleis die Fahrtrichtung umkehren"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:596
-msgid "Change direction of train"
-msgstr "Richtung des Zuges ändern"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:597
-msgid "Stop the train"
-msgstr "Anhalten des Zuges"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:598
-msgid "List of available turnouts for the current scale"
-msgstr "Liste der im aktuellen Maßstab verfügbaren Weichen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:599
-msgid ""
-"Diagram of the currently selected turnout. Click on a End-Point to select "
-"the Active End-Point"
-msgstr ""
-"Zeichnung der ausgewählten Weiche. Der aktive Endpunkt kann durch Klicken "
-"auf einen Endpunkt gesetzt werden"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:600
-msgid ""
-"A menu list of various type of turnouts and sectional tracks you can define"
-msgstr ""
-"Eine Aiuswahlliste verschiedener Arten von Weichen und Festgleisen, die Sie "
-"definieren können"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:601
-msgid "Hide Selection window when placing Turnout"
-msgstr "Auswahlfenster während des Verlegen verbergen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:602
-msgid "The selected Active End-Point"
-msgstr "Der ausgewählte, aktive Endpunkt"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:603
-msgid "Current selected turnout, (displayed in the diagram window)"
-msgstr "Momentan ausgewählte Weiche, (sichtbar im Diagram-Fenster)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:604
-msgid "One the End-Points that can be selected"
-msgstr "Einer der Endpunkte, der ausgewählt werden kann"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:606
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:607
-msgid "Angle of the specified track to the center line of the turnout"
-msgstr "Winkel zwischen dem ausgwählten Gleise und der Mittellinie der Weiche"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:608
-msgid "Specifies if angles are entered as Frog Numbers or in degrees"
-msgstr "Soll der Winkel als Steigung oder in Grad angegeben werden"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:609
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:610
-msgid "Desciption"
-msgstr "Beschreibung"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:611
-msgid "Turnout description (Manuf., Size, Part Number, etc)"
-msgstr "Beschrebung der Weiche (Hersteller, Winkel, Teilenummer, etc.)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:612
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:613
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:614
-msgid "Length from the base to the end of the specified track"
-msgstr "Länge von der Grundlinie zum Ende des ausgewählten Gleis"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:616
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:617
-msgid "Offset of the track End-Point from the center line of the turnout"
-msgstr "Abstand des Endpunktes von der Mittellinie der Weiche"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:620
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:621
-msgid "Prints a full size diagram of the turnout for checking"
-msgstr "Erstellt einen Probeausdruck der Weiche"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:622
-msgid "Color of Roadbed lines"
-msgstr "Farbe der Gleisbettlinien"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:623
-msgid "Width of Roadbed lines"
-msgstr "Abstand des Gleisbettmarkierungen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:624
-msgid "Width of Roadbed"
-msgstr "Breite des Gleisbett"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:626
-msgid "Closes the window and returns to the Turnout Selection window"
-msgstr "Schliesst das Fenster und kehrt zur Weichenauswahl zurück"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:627
-msgid "Specifies the diameter of the turntable"
-msgstr "Legt den Durchmesser der Drehscheibe fest"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:628
-msgid "Old Turnout title"
-msgstr "Alter Bezeichnung der Drehscheibe"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:629
-msgid "List of available titles"
-msgstr "Liste der verfügbaren Titel"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:630
-msgid "Leave the Turnouts' title unchanged"
-msgstr "Tiitel der Weiche unverändert lassen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:631
-msgid "Invoke the Parameter Files dialog"
-msgstr "Auswahl der Parameterdateien"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:632
-msgid "List of available turnouts"
-msgstr "Liste der verfügbaren Weichen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:633
-msgid "Update the Turnouts' title"
-msgstr "Aktualisiere den Titel des Gleis"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:637
-msgid "Sample"
-msgstr "Beispiel"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:639
-msgid "Slant"
-msgstr "Neigung"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:640
-msgid "Font selection dialog"
-msgstr "Dialog zur Auswahl der Schriftart"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:641
-msgid "Weight"
-msgstr "Gewicht"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:642
-msgid "Printer Abort Window"
-msgstr "Druck abbrechen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:643
-msgid "Print to filename"
-msgstr "Name der Druckdatei"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:644
-msgid "Specify Postscript font alias mapping"
-msgstr "Zuordnung der Postscript-Schriftarten angeben"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:645
-msgid ""
-"Displays the Print Setup window to change printers, orientation, paper size,"
-" etc."
-msgstr ""
-"Ruft das Drucker Dialog Fenster auf, um Drucker und oder Papier "
-"Einstellungen vornehmen zu können."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:646
-msgid "Closes this dialog"
-msgstr "Dialogfenster schliessen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:647
-msgid "Page orientation"
-msgstr "Seitenausrichtung"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:648
-msgid "Unprintable margins"
-msgstr "Nicht druckbare Ränder"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:649
-msgid "Updates and closes this dialog"
-msgstr "Dialogfenster aktualisieren und schliessen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:650
-msgid "Choose paper size"
-msgstr "Papierformat auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:651
-msgid "Choose printer"
-msgstr "Drucker auswählen"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:652
-msgid "Print test page"
-msgstr "Drucke Testseite"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:1
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:8
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:1
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:8
msgid ""
"XTrackCAD provides demonstrations on most of the program's features. The "
"demos can be run by clicking on the Help menu on the Main window and then "
@@ -10558,29 +8442,34 @@ msgstr ""
"abgespielt werden indem im Hilfe Menü des Hauptfensters der Punkt \"Demos\" "
"ausgewählt wird."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:3
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:10
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:3
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:10
msgid ""
-"The notation \"Menu|Item\" is used in the documentation (and the on-line demos and tips) to indicate the selection of a menu item.\n"
-"For example, \"File|Open\" means to open the menu by clicking on File on the menu bar of the Main window and then selecting the Open item from that menu."
+"The notation \"Menu|Item\" is used in the documentation (and the on-line "
+"demos and tips) to indicate the selection of a menu item.\n"
+"For example, \"File|Open\" means to open the menu by clicking on File on the "
+"menu bar of the Main window and then selecting the Open item from that menu."
msgstr ""
-"Die Darstellungsart \"Menü|Unterpunkt\" wird in der Dokumentation, den Online Demos und im Tipp des Tages verwendet. Sie dient dazu die Selektion eines Unterpunktes zu beschreiben.\n"
-"\"Datei|Öffnen\" bedeutet zum Beispiel in der Menüleiste des Hauptfensters auf Datei zu klicken und dann im aufgehenden Untermenü auf die Auswahl Punkt Öffnen."
+"Die Darstellungsart \"Menü|Unterpunkt\" wird in der Dokumentation, den "
+"Online Demos und im Tipp des Tages verwendet. Sie dient dazu die Selektion "
+"eines Unterpunktes zu beschreiben.\n"
+"\"Datei|Öffnen\" bedeutet zum Beispiel in der Menüleiste des Hauptfensters "
+"auf Datei zu klicken und dann im aufgehenden Untermenü auf die Auswahl Punkt "
+"Öffnen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:12
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:12
msgid ""
-"Set your modeling scale on the \"Options|Layout\" dialog. This controls the"
-" Turnouts and Structures that are available, Easement values and track "
-"gauge."
+"Set your modeling scale on the \"Options|Layout\" dialog. This controls the "
+"Turnouts and Structures that are available, Easement values and track gauge."
msgstr ""
-"Stellen Sie im \"Optionen|Gleisplan\" Dialog Maßstab und Spurweite für Ihren"
-" Gleisplan ein. Diese Grundeinstellung sollte unbedingt als erstes "
+"Stellen Sie im \"Optionen|Gleisplan\" Dialog Maßstab und Spurweite für Ihren "
+"Gleisplan ein. Diese Grundeinstellung sollte unbedingt als erstes "
"vorgenommen werden, damit der neu eingestellte Maßstab mit dem Maßstab der "
"geladenen Parameterdatei übereinstimmt."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:8
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:14
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:8
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:14
msgid ""
"A number of example layouts are provided. These files can be accessed by "
"\"Help|Examples\"."
@@ -10588,8 +8477,8 @@ msgstr ""
"Es werden eine Reihe von Beispiel-Gleisplänen bereitgestellt. Auf diese "
"Dateien kann über \"Hilfe|Beispiele\" zugegriffen werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:10
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:16
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:10
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:16
msgid ""
"When installed, the length units are set based on your contry: inches for "
"United States or Canada and centimeters elsewhere. You can change this on "
@@ -10597,64 +8486,71 @@ msgid ""
msgstr ""
"Die Darstellung sämtlicher Einheiten hängt von ihrem Land ab. In den "
"Vereinigten Staaten oder Kanada werden Inches dargestellt, ansonsten "
-"Zentimeter. Diese Einstellung können Sie über den Dialog "
-"\"Optionen|Einstellungen\" ändern, indem Sie zwischen Englisch und Metrisch "
-"wechseln."
+"Zentimeter. Diese Einstellung können Sie über den Dialog \"Optionen|"
+"Einstellungen\" ändern, indem Sie zwischen Englisch und Metrisch wechseln."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:12
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:18
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:18
msgid ""
"You can change the overall size of your layout on the \"Options|Layout\" "
"dialog."
msgstr ""
-"Die Gesamtgröße Ihres Gleisplans kann über den Dialog \"Optionen|Gleisplan\""
-" eingestellt werden."
+"Die Gesamtgröße Ihres Gleisplans kann über den Dialog \"Optionen|Gleisplan\" "
+"eingestellt werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:20
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:20
msgid ""
-"When installed, the default command is the Select command. You might want to"
-" change this to the Decribe command. You can do this on the "
-"\"Options|Command Options\" dialog."
+"When installed, the default command is the Select command. You might want to "
+"change this to the Decribe command. You can do this on the \"Options|"
+"Command Options\" dialog."
msgstr ""
"Nach Installation ist der Standardbefehl das \"Auswählen\" Kommando. "
"Erfahrene Benutzer möchten dies vielleicht in das \"Beschreiben\" Kommando "
"ändern. Dies kann über den Dialog \"Optionen|Befehl\" unter Standardbefehl "
"erfolgen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:22
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:22
msgid ""
-"When Selecting tracks, the connection between Selected and Unselected tracks"
-" is marked by a Red X. This indicates points where the connection between "
+"When Selecting tracks, the connection between Selected and Unselected tracks "
+"is marked by a Red X. This indicates points where the connection between "
"tracks will be broken if you Move or Rotate the Selected tracks."
msgstr ""
"Bei ausgewählten Gleisen wird die Verbindung des Gleises durch ein rotes X "
"markiert, genau an dieser Stelle wird das Gleis getrennt wenn es verschoben "
"oder gedreht wird."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:18
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:24
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:18
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:24
msgid ""
-"You can change orientation of the pages on the Print command by moving or rotating the Print Grid.\n"
+"You can change orientation of the pages on the Print command by moving or "
+"rotating the Print Grid.\n"
"Shift-Left-Drag moves the grid and Shift-Right-Drag rotates the grid."
msgstr ""
-"Die Ausrichtung von auszudruckenden Seiten kann geändert werden indem das Druckraster bewegt oder rotiert wird.\n"
-"Shift Taste nach links ziehen bewegt das Raster, Shift Taste nach rechts ziehen rotiert das Raster."
+"Die Ausrichtung von auszudruckenden Seiten kann geändert werden indem das "
+"Druckraster bewegt oder rotiert wird.\n"
+"Umschalt Taste nach links ziehen bewegt das Raster, Umschalt Taste nach "
+"rechts ziehen rotiert das Raster."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:21
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:26
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:26
msgid ""
"You can add track to any unconnected End-Point with the Modify command.\n"
-"Hold down the Shift key and click on the End-Point and drag away to create a new track segment attached to the End-Point.\n"
+"Hold down the Shift key and click on the End-Point and drag away to create a "
+"new track segment attached to the End-Point.\n"
"Repeat with the new End-Point to create flowing tracks."
msgstr ""
-"Gleise können zu jedem unverbundenen Endpunkt mit \"Verändern\" hinzugefügt werden.\n"
-"Um einen neuen Gleisabschnitt zu erstellen, markieren Sie einen Endpunkt, halten Sie dann die Shift-Taste gedrückt während Sie den Gleisabschnitt verschieben.\n"
-"Wiederhohlen Sie diese Aktion mit diesem neuen Endpunkt um Gleisabschnitte weiter zu zerlegen."
+"Gleise können zu jedem unverbundenen Endpunkt mit \"Verändern\" hinzugefügt "
+"werden.\n"
+"Um einen neuen Gleisabschnitt zu erstellen, markieren Sie einen Endpunkt, "
+"halten Sie dann die Umschalt-Taste gedrückt während Sie den Gleisabschnitt "
+"verschieben.\n"
+"Wiederholen Sie diese Aktion mit diesem neuen Endpunkt um Gleisabschnitte "
+"weiter zu zerlegen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:25
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:28
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:28
msgid ""
"You can create curved tracks in four ways by dragging from:\n"
" the 1st endpoint in the direction of the curve\n"
@@ -10663,109 +8559,148 @@ msgid ""
" the 1st to 2nd endpoint\n"
"Then drag on one of the Red arrows to create the final shape of the curve.\n"
"\n"
-"You can click on the small button to the right of the Curve command button to change the method."
+"You can click on the small button to the right of the Curve command button "
+"to change the method."
msgstr ""
"Sie können gebogene Gleise auf vier Arten durch Ziehen erstellen, vom:\n"
" 1. Endpunkt in Richtung der Kurve\n"
" Mittelpunkt der Kurve zum 1. Endpunkt\n"
" Endpunkt zum Zentrum\n"
" 1. zum 2. Endpunkt\n"
-"Ziehen Sie dann an einem der roten Pfeile, um die endgültige Form der Kurve zu erstellen.\n"
+"Ziehen Sie dann an einem der roten Pfeile, um die endgültige Form der Kurve "
+"zu erstellen.\n"
"\n"
-"Sie können auf die kleine Schaltfläche rechts neben der Befehlsschaltfläche Kurve klicken, um die Methode zu ändern."
+"Sie können auf die kleine Schaltfläche rechts neben der Befehlsschaltfläche "
+"Kurve klicken, um die Methode zu ändern."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:34
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:30
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:30
msgid ""
-"When creating a straight or a curved track by dragging from the 1st End Point, you can snap the new track to an existing open end point by holding down Shift while you click.\n"
+"When creating a straight or a curved track by dragging from the 1st End "
+"Point, you can snap the new track to an existing open end point by holding "
+"down Shift while you click.\n"
"The new track will be joined to the old when you create it."
msgstr ""
-"Beim Erstellen eines geraden oder eines gebogenen Gleise durch Ziehen vom ersten Endpunkt kann das neue Gleis an dem existierenden Endpunkt ausgerichtet werden, in dem die Umschalt-Taste beim Klicken gedrückt wird.\n"
+"Beim Erstellen eines geraden oder eines gebogenen Gleise durch Ziehen vom "
+"ersten Endpunkt kann das neue Gleis an dem existierenden Endpunkt "
+"ausgerichtet werden, in dem die Umschalt-Taste beim Klicken gedrückt wird.\n"
"Das neue Gleis wird beim Erstellen mit dem vorhandenen Gleis verbunden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:37
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:32
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:32
msgid ""
-"Track Circles provide a quick way to see what arrangement of tracks will fit in your layout spaces. Create Circles with your typical radius and place them in corners and other locations where your main-line will make changes of direction. This will give you an overall idea of how your layout will look.\n"
+"Track Circles provide a quick way to see what arrangement of tracks will fit "
+"in your layout spaces. Create Circles with your typical radius and place "
+"them in corners and other locations where your main-line will make changes "
+"of direction. This will give you an overall idea of how your layout will "
+"look.\n"
"\n"
"You can create Circles by:\n"
" using a fixed radius\n"
" dragging from the Center to edge\n"
" dragging from an edge to the Center\n"
-"You can click on the small button to the left of the Circle command button to change the method."
-msgstr ""
-"Gleiskreise ermöglichen einen schnellen Weg die Aufteilung Ihres Gleisplans in den vorhanden Platz einzuteilen. Erstellen Sie Gleiskreise mit üblichen Radien und platzieren Sie diese in Ecken oder an beliebigen Stellen Ihres Hauptgleises an denen ein Richtungswechsel statt finden soll. Dies wird Ihnen helfen einen ersten Überblick von Ihrem gesamten Gleisplan zu erhalten.\n"
+"You can click on the small button to the left of the Circle command button "
+"to change the method."
+msgstr ""
+"Gleiskreise ermöglichen einen schnellen Weg die Aufteilung Ihres Gleisplans "
+"in den vorhanden Platz einzuteilen. Erstellen Sie Gleiskreise mit üblichen "
+"Radien und platzieren Sie diese in Ecken oder an beliebigen Stellen Ihres "
+"Hauptgleises an denen ein Richtungswechsel statt finden soll. Dies wird "
+"Ihnen helfen einen ersten Ãœberblick von Ihrem gesamten Gleisplan zu "
+"erhalten.\n"
"\n"
"Gleiskreise können wie folgt erzeugt werden:\n"
" mit einem festgelegten Radius\n"
" durch ziehen aus der Mitte zur Kante\n"
" durch ziehen von der Kante zur Mitte\n"
-"Die verschiedenen Methoden zur Gleiskreiserstellung können ausgewählt werden durch anklicken des Knopfes rechts neben dem Greisknopf in der Werkzeugleiste."
+"Die verschiedenen Methoden zur Gleiskreiserstellung können durch Klicken auf "
+"die Schaltfläche rechts neben dem Schaltfläche für Gleis in der "
+"Werkzeugleiste ausgewählt werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:45
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:34
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:45
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:34
msgid ""
-"Easements (spiral transition curves) are used when track changes from straight to curved by gradually changing the radius. This improves operation and appearance.\n"
+"Easements (spiral transition curves) are used when track changes from "
+"straight to curved by gradually changing the radius. This improves "
+"operation and appearance.\n"
"Easements are created with Joining or Extending Tracks.\n"
"The Easement dialog is used to control easements."
msgstr ""
-"Übergangsbögen werden benutzt wenn gerades Gleis stufenweise bei sich änderndem Radius in kurviges Gleis ändert, Dies verbessert die Benutzbarkeit und verschönert das Erscheinungsbild.\n"
-"Übergangsbögen werden erstellt indem sie an vorhandene Gleise angeängt werden.\n"
-"Die Schaltfläche \"Easement None\" wird verwendet um die Einstellungen für Übergangsbögen vornehmen zu können."
+"Übergangsbögen werden benutzt wenn gerades Gleis stufenweise bei sich "
+"änderndem Radius in kurviges Gleis ändert, Dies verbessert die Benutzbarkeit "
+"und verschönert das Erscheinungsbild.\n"
+"Übergangsbögen werden erstellt indem sie an vorhandene Gleise angehängt "
+"werden.\n"
+"Die Schaltfläche \"Easement None\" wird verwendet um die Einstellungen für "
+"Übergangsbögen vornehmen zu können."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:49
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:36
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:36
msgid ""
-"\"Help|Recent Messages\" shows the last error and warning messages that were"
-" generated by the program. Also an explanation of each message is "
-"displayed."
+"\"Help|Recent Messages\" shows the last error and warning messages that were "
+"generated by the program. Also an explanation of each message is displayed."
msgstr ""
-"\"Hilfe|Letzte Mitteilungen\" zeigt die letzen Fehler/Warnungen an die vom "
-"Programm veruhrsacht wurden. Weiterhin wird eine Erklärung zu jeder Meldung "
+"\"Hilfe|Letzte Mitteilungen\" zeigt die letzten Fehler/Warnungen an die vom "
+"Programm verursacht wurden. Weiterhin wird eine Erklärung zu jeder Meldung "
"angezeigt."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:51
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:38
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:38
msgid ""
-"When creating stall tracks for a turntable, you usually want the the stall tracks to be spaced evenly.\n"
-"The \"Turntable Angle\" item on \"Options|Preferences\" dialog can be used specify the minimum angle between stall tracks."
+"When creating stall tracks for a turntable, you usually want the the stall "
+"tracks to be spaced evenly.\n"
+"The \"Turntable Angle\" item on \"Options|Preferences\" dialog can be used "
+"specify the minimum angle between stall tracks."
msgstr ""
-"Beim Anschluss von Endgleisen an eine Drehscheibe, möchte man diese üblicherweise gleichmäßig verteilen.\n"
-"Der Punkt \"Drehscheibenwinkel\" im Dialog \"Optionen|Einstellungen\" kann dazu benutzt werden den kleinstmöglichen Winkel, beim Anschluss solcher Gleise, einzustellen."
+"Beim Anschluss von Endgleisen an eine Drehscheibe, möchte man diese "
+"üblicherweise gleichmäßig verteilen.\n"
+"Der Punkt \"Drehscheibenwinkel\" im Dialog \"Optionen|Einstellungen\" kann "
+"dazu benutzt werden den kleinstmöglichen Winkel, beim Anschluss solcher "
+"Gleise, einzustellen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:40
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:40
msgid ""
-"XTrackCAD periodically saves the current layout in a check point file. The 'Check Point' item on the 'Options|Preferences' dialog controls how often the file is saved.\n"
-"You can recover your working file after a system crash by copying the checkpoint file (xtrkcad.ckp in the XTrackCAD Working directory) to file.xtc"
+"XTrackCAD periodically saves the current layout in a check point file. The "
+"'Check Point' item on the 'Options|Preferences' dialog controls how often "
+"the file is saved.\n"
+"You can recover your working file after a system crash by copying the "
+"checkpoint file (xtrkcad.ckp in the XTrackCAD Working directory) to file.xtc"
msgstr ""
-"XTrackCAD sichert ständig ihre aktuelle Arbeit in eine temporäre Datei. Im Feld 'Sicherungskopie' unter dem Menüpunkt 'Optonen|Einstellungen' können Sie die Häufigkeit dieser automatischen Sicherung festlegen.\n"
-"Nach einem System/Programm Absturz kopieren Sie einfach die Datei xtrkcad.ckp (im Arbeitsverzeichnis von XTrackCAD) nach <Geisplan>.xtc"
+"XTrackCAD sichert ständig ihre aktuelle Arbeit in eine temporäre Datei. Im "
+"Feld 'Sicherungskopie' unter dem Menüpunkt 'Optionen|Einstellungen' können "
+"Sie die Häufigkeit dieser automatischen Sicherung festlegen.\n"
+"Nach einem System/Programm Absturz kopieren Sie einfach die Datei xtrkcad."
+"ckp (im Arbeitsverzeichnis von XTrackCAD) nach <Gleisplan>.xtc"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:57
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:42
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:42
msgid ""
"The Parallel command is helpful to layout yards and sidings. If the "
"Parallel track abuts with an existing track, it is automatically connected."
msgstr ""
-"Das Parallel Kommando ist nützlich um Bahnhöfe und Abstellgeise zu "
+"Das Parallel Kommando ist nützlich um Bahnhöfe und Abstellgleise zu "
"erstellen. Falls sich ein parallel Gleis mit einem existierenden Gleis fast "
"berührt wird dieses automatisch verbunden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:59
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:44
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:59
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:44
msgid ""
-"You can use Shift-Drag in Select command to move and rotate selected tracks.\n"
+"You can use Shift-Drag in Select command to move and rotate selected "
+"tracks.\n"
"Shift-Left-Drag moves tracks and Shift-Right-Drag rotates them.\n"
"Control-Left-Drag can move labels."
msgstr ""
-"Gleise können verschoben oder rotiert werden indem sie mit Hilfe des \"Ändern|Auswählen\" Kommandos ausgewählt werden und dann druch gleichzeitiges festhalten der Shift-Taste und einer Maustaste bewegt werden.\n"
-"Shift und linke Maustaste verschiebt ein Gleis.\n"
-"Shift und rechte Maustaste rotiert ein Gleis.\n"
+"Gleise können verschoben oder rotiert werden indem sie mit Hilfe des "
+"\"Ändern|Auswählen\" Kommandos ausgewählt werden und dann durch "
+"gleichzeitiges festhalten der Umschalt-Taste und einer Maustaste bewegt "
+"werden.\n"
+"Umschalt und linke Maustaste verschiebt ein Gleis.\n"
+"Umschalt und rechte Maustaste rotiert ein Gleis.\n"
"Steuerung und linke Maustaste verschiebt Beschreibungen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:46
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:46
msgid ""
"You can move and rotate the Snap Grid to align with existing track or "
"benchwork."
@@ -10773,161 +8708,199 @@ msgstr ""
"Das Fangraster kann bewegt oder gedreht werden um es an Gleisen oder "
"Aufbauten ausrichten zu können."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:65
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:48
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:48
msgid ""
"Use the Parts List command to measure track length.\n"
-"Select the tracks you want to measure and then click on the Parts List button. The report will list the total of length of the selected flex-track. You will have to add in the length of any Turnouts."
-msgstr ""
-"Der Dialog \"Verwalten|Teileliste\" kann dazu benutzt werden Gleislängen zu messen.\n"
-"Markieren Sie die zu messenden Gleise und wählen Sie den Teileliste Punkt. Die auftauchende Liste zeigt die Länge der ausgewählten Gleise an. Die Länge der Weichen muss hinzugezählt werden."
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:68
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:50
-msgid ""
-"The length of flex-track attached to each Turnout is displayed on layout near the end-points of the Turnouts.\n"
-"Make sure 'Lengths' option of the 'Label Enable' toggle button on the Display dialog is selected."
+"Select the tracks you want to measure and then click on the Parts List "
+"button. The report will list the total of length of the selected flex-"
+"track. You will have to add in the length of any Turnouts."
msgstr ""
-"Die Länge von Flex-Gleis welches mit Weichen verbunden ist wird in der Nähe des Endpunktes der Weiche angezeigt.\n"
-"Stellen Sie sicher das der Auswahlpunkt \"Längen\" im Dialog \"Optionen|Anzeige\" ausgewählt ist."
+"Der Dialog \"Verwalten|Teileliste\" kann dazu benutzt werden Gleislängen zu "
+"messen.\n"
+"Markieren Sie die zu messenden Gleise und wählen Sie den Teileliste Punkt. "
+"Die auftauchende Liste zeigt die Länge der ausgewählten Gleise an. Die Länge "
+"der Weichen muss hinzugezählt werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:71
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:52
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:68
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:50
msgid ""
-"The Profile command can be used to find the length of a continous section of track.\n"
-"Select the track at the beginning and end of the section. The total length of track will be displayed on the Profile window in the lower right corner.\n"
-"Note: the Profile selects the shortest path between the two selected tracks, which might not be the path you are interested in. In this case, select the first track and then select other tracks along the path."
+"The length of flex-track attached to each Turnout is displayed on layout "
+"near the end-points of the Turnouts.\n"
+"Make sure 'Lengths' option of the 'Label Enable' toggle button on the "
+"Display dialog is selected."
msgstr ""
-"Das Kommando \"Höhenprofil\" im Menü \"Ändern\" kann dazu benutzt werden um die Länge einer zusammenhängenden Gleissektion heraus zu finden.\n"
-"Markieren Sie den Anfang und das Ende dieser Sektion. Die totale Länge dieser Gleissektion wird in der unteren rechten Ecke des Höhenprofil Fensters angezeigt.\n"
-"Hinweis: Das Höhenprofil wählt immer den kürzesten Weg zwischen beiden markierten Gleisen, möglicherweise ist dies aber nicht die Länge an der Sie interresiert sind. In diesem Fall wählen Sie einfach den gleichen Startpunkt und den nächst frührer möglichen Endpunkt aus."
+"Die Länge von Flex-Gleis welches mit Weichen verbunden ist wird in der Nähe "
+"des Endpunktes der Weiche angezeigt.\n"
+"Stellen Sie sicher das der Auswahlpunkt \"Längen\" im Dialog \"Optionen|"
+"Anzeige\" ausgewählt ist."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:75
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:54
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:71
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:52
msgid ""
-"Layers can be used to contain different groups of tracks or other features."
-" You might use one layer for the main-line, another of staging tracks and "
+"The Profile command can be used to find the length of a continous section of "
+"track.\n"
+"Select the track at the beginning and end of the section. The total length "
+"of track will be displayed on the Profile window in the lower right corner.\n"
+"Note: the Profile selects the shortest path between the two selected tracks, "
+"which might not be the path you are interested in. In this case, select the "
+"first track and then select other tracks along the path."
+msgstr ""
+"Das Kommando \"Höhenprofil\" im Menü \"Ändern\" kann dazu benutzt werden um "
+"die Länge einer zusammenhängenden Gleissektion heraus zu finden.\n"
+"Markieren Sie den Anfang und das Ende dieser Sektion. Die totale Länge "
+"dieser Gleissektion wird in der unteren rechten Ecke des Höhenprofil "
+"Fensters angezeigt.\n"
+"Hinweis: Das Höhenprofil wählt immer den kürzesten Weg zwischen beiden "
+"markierten Gleisen, möglicherweise ist dies aber nicht die Länge an der Sie "
+"interessiert sind. In diesem Fall wählen Sie einfach den gleichen Startpunkt "
+"und den nächst früheren möglichen Endpunkt aus."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:54
+msgid ""
+"Layers can be used to contain different groups of tracks or other features. "
+"You might use one layer for the main-line, another of staging tracks and "
"another of benchwork.\n"
msgstr ""
"Ebenen können dazu benutzt werden um verschiedene Gruppen von Gleisen oder "
"Funktionen darstellen zu können. Eine Ebene kann z.B. für das Hauptgleis "
"verwendet werden, eine weitere für Schattenbahnhöfe und eine weitere für "
-"Aufbauten oder Tunnnel.\n"
+"Aufbauten oder Tunnel.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:77
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:56
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:77
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:56
msgid ""
-"You can give each layer a name (by using the \"Manage|Layer\" dialog). This"
-" name will be displayed as the Balloon Help for the corresponding Layer "
+"You can give each layer a name (by using the \"Manage|Layer\" dialog). This "
+"name will be displayed as the Balloon Help for the corresponding Layer "
"button, if you have Balloon Help enabled on the \"Options|Display\" dialog."
msgstr ""
"Jeder Ebene kann ein Name über den \"Verwalten|Ebenen\" Dialog zugewiesen "
-"werden. Falls die Auswahl \"Sprechblasen\" im Menü "
-"\"Optionen|Einstellungen\" aktiviert wurde, wird dieser vergebene Name in "
-"der Werkzeugleiste für diese Ebene angezeigt."
+"werden. Falls die Auswahl \"Sprechblasen\" im Menü \"Optionen|"
+"Einstellungen\" aktiviert wurde, wird dieser vergebene Name in der "
+"Werkzeugleiste für diese Ebene angezeigt."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:79
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:58
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:79
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:58
msgid ""
-"You can remove groups of buttons or the Hot Bar from the Main window to give"
-" you more room if you are not using some features. Also, the number of "
-"Layer buttons displayed is controlled by the \"Manage|Layers\" dialog."
+"You can remove groups of buttons or the Hot Bar from the Main window to give "
+"you more room if you are not using some features. Also, the number of Layer "
+"buttons displayed is controlled by the \"Manage|Layers\" dialog."
msgstr ""
"Die Werkzeugleiste kann über den Dialog \"Anzeige|Werkzeugleiste anpassen\" "
-"verändert werden um mehr Platz im Hauptfenster zur Verfügung zu stellen. Die"
-" Anzahl der Ebenenknöpfe wird über den Dialog \"Verwalten|Ebenen\" "
-"eingestellt."
+"verändert werden um mehr Platz im Hauptfenster zur Verfügung zu stellen. Die "
+"Anzahl der Schaltflächen für Ebenen wird über den Dialog \"Verwalten|"
+"Ebenen\" eingestellt."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:81
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:60
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:60
msgid ""
-"The size of the map window is controlled by the overall size of the room (specified on the layout dialog) and the map scale (on the display dialog). You can make the Map window larger (or smaller) by decreasing (or increasing) the map scale.\n"
+"The size of the map window is controlled by the overall size of the room "
+"(specified on the layout dialog) and the map scale (on the display dialog). "
+"You can make the Map window larger (or smaller) by decreasing (or "
+"increasing) the map scale.\n"
"XTrackCad will prevent you from making the map window too small or too large."
msgstr ""
-"Die Größe des Kartenfensters wird in Abhängigkeit zur eingestellten Gesamtgröße des Raums kontrolliert. Die Gesamtgröße des Raums wird über den Dialog \"Optionen|Gleisplan\", der Maßstab des Kartenfensters über die Auswahl \"Kartenmaßstab\" im Dialog \"Optionen|Anzeige\" eingestellt. Die Größe des Kartenfensters kann verändert werden, indem der Wert für Kartenmaßstab entweder erhöht oder verkleinert wird.\n"
+"Die Größe des Kartenfensters wird in Abhängigkeit zur eingestellten "
+"Gesamtgröße des Raums kontrolliert. Die Gesamtgröße des Raums wird über den "
+"Dialog \"Optionen|Gleisplan\", der Maßstab des Kartenfensters über die "
+"Auswahl \"Kartenmaßstab\" im Dialog \"Optionen|Anzeige\" eingestellt. Die "
+"Größe des Kartenfensters kann verändert werden, indem der Wert für "
+"Kartenmaßstab entweder erhöht oder verkleinert wird.\n"
"XTrackCAD lässt keine zu kleinen/großen Werte für das Kartenfenster zu."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:84
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:62
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:62
msgid ""
"You can unload parameter files you are not using by the Parameter Files "
"dialog. This removes unused Turnout and Structure definitions from the Hot "
"Bar and makes the program start faster."
msgstr ""
-"Damit Gleise in der Schnellauswahl auftauchen ist es nötig eine Gleis "
-"Parameterdatei für Ihren Gleisplan zu laden, im Dialog "
-"\"Datei|Parameterdateien\" können Sie die für Ihr Gleis nötige "
-"Parameterdatei laden. Nicht mehr benötigte Parameterdateien können über den "
+"Damit Gleise in der Schnellauswahl auftauchen ist es nötig mindestens eine "
+"Parameterdatei für Ihren Gleisplan zu laden. Im Dialog \"Datei|"
+"Parameterdateien\" können Sie gewünschten Parameterdateien für ihr "
+"Gleissystem laden. Nicht mehr benötigte Parameterdateien können über den "
"gleichen Dialog entladen werden. Hierdurch werden nicht mehr benötigte "
-"Weichen/Gleise von der Schnellauswahl gelöscht was das Programm schneller "
-"starten läßt."
+"Weichen/Gleise von der Schnellauswahl gelöscht, was das Programm schneller "
+"starten lässt."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:86
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:64
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:64
msgid ""
"Right-Click on the Main window displays a menu list of commands as an "
"alternative to pressing the buttons on the tool bar or using the menu "
"accelerator keys."
msgstr ""
-"Alternativ zur Werkzeugleiste oder den Menütasten kann durch Rechts-Klick im"
-" Hauptfenster ein weiteres Befehlsmenü benutzt werden."
+"Alternativ zur Werkzeugleiste oder den Menütasten kann durch Rechtsklicken "
+"im Hauptfenster ein weiteres Befehlsmenü benutzt werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:87
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:66
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:87
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:66
msgid ""
"Holding down the Shift key while you Right-Click will display options for "
"the current command (if any)."
msgstr ""
-"Bleibt die Shift Taste gedrückt während Sie ein Kommando ausgewählt haben "
+"Bleibt die Umschalt Taste gedrückt während Sie ein Kommando ausgewählt haben "
"werden (wenn vorhanden) Optionen für dieses Kommando angezeigt."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:89
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:68
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:89
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:68
msgid ""
-"Right-Click on the Hot Bar displays a menu of the different groups of objects which you can use to jump to the group you are interested in.\n"
-"Pressing a numeric key (1-9 and 0) moves the Hot Bar to corresponding position (1 is the start, 5 is half way, 0 is the end)."
+"Right-Click on the Hot Bar displays a menu of the different groups of "
+"objects which you can use to jump to the group you are interested in.\n"
+"Pressing a numeric key (1-9 and 0) moves the Hot Bar to corresponding "
+"position (1 is the start, 5 is half way, 0 is the end)."
msgstr ""
-"Rechts Klick in der Schnellauswahl öffnet ein Menü mit verschiedenen Objektgruppen, diese können benutzt werden um schnell zu dieser Art von Gleisen zu springen.\n"
-"Durch drücken von Zahlen in der Schnellauswahl (1-9 und 0) kann auch die entsprechende Position der Gleisauswahl geändert werden, hierbei kennzeichnet 1 die erste Gleisauswahl, 5 gibt die Mitte der Auswahl an und 0 das Ende."
+"Rechtsklicken in der Schnellauswahl öffnet ein Menü mit verschiedenen "
+"Objektgruppen. Dieses Menü kann benutzt werden, um schnell zu einem Typ von "
+"Gleisen zu springen.\n"
+"Durch Drücken von Zahlen in der Schnellauswahl (1-9 und 0) kann auch die "
+"entsprechende Position der Gleisauswahl geändert werden, hierbei "
+"kennzeichnet 1 die erste Gleisauswahl, 5 gibt die Mitte der Auswahl an und 0 "
+"das Ende."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:92
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:70
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:92
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:70
msgid ""
"Right-Drag on the Map window sets the origin and scale of the Main window.\n"
-"The Main window will be centered on the spot where you started the Draw and how far you Drag will control how large an area you can see on the Main window."
+"The Main window will be centered on the spot where you started the Draw and "
+"how far you Drag will control how large an area you can see on the Main "
+"window."
msgstr ""
-"Durch ziehen mit der rechten Maustaste im Kartenfenster wird der Focus und Maßstab im Hauptfenster eingestellt.\n"
-"Das Hauptfenster wird hierbei aufgrund der markierten Auswahl im Kartenfenster zentriert dargestellt."
+"Durch ziehen mit der rechten Maustaste im Kartenfenster wird der Fokus und "
+"Maßstab im Hauptfenster eingestellt.\n"
+"Das Hauptfenster wird hierbei aufgrund der markierten Auswahl im "
+"Kartenfenster zentriert dargestellt."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:95
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:72
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:95
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:72
msgid ""
"To refresh the Main window, press Control-L (hold down the 'Ctrl' key and "
"then press the 'l' key)."
msgstr ""
"Um die Darstellung im Hauptfenster zu erneuern, benutzen Sie Strg+L (halten "
-"Die die Steuernung Taste gedrückt und tippen Sie den Buchstaben 'l')."
+"Die die Steuerung Taste gedrückt und tippen Sie den Buchstaben 'l')."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:97
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:74
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:97
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:74
msgid ""
"The File menu contains a list of the last 5 layouts you were working on."
msgstr ""
-"Der Dialog \"Datei\" enthält eine Liste der letzten 5 Gleispläne die Sie "
+"Der Dialog \"Datei\" enthält eine Liste der letzten 5 Gleispläne, die Sie "
"geöffnet hatten."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:99
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:76
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:76
msgid ""
"The Print command can optionally print lines representing the roadbed for "
"all tracks. This is useful when printing full size (1:1) for cutting "
"roadbed."
msgstr ""
-"Im \"Drucken\" Dialog kann, die Auswahl \"Gleisbettung drucken\" ausgewählt"
-" werden, um im (1:1) Maßstab Gleisbettvorlagen ausdrucken zu können."
+"Im \"Drucken\" Dialog kann, die Auswahl \"Gleisbettung drucken\" ausgewählt "
+"werden, um im (1:1) Maßstab Gleisbettvorlagen ausdrucken zu können."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:101
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:78
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:101
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:78
msgid ""
"Pressing the 'Esc' key cancels the current command and invokes the default "
"command, (which is either Describe or Select)."
@@ -10936,38 +8909,53 @@ msgstr ""
"automatisch der Standardbefehl aktiviert, (was entweder Eigenschaften oder "
"Auswählen ist)."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:103
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:80
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:103
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:80
msgid ""
-"When moving or rotating tracks on slow machines or with a large number of tracks, you can improve performance by changing the way tracks are drawn while being moved.\n"
-"Shift-Right click will display a menu containing options to draw tracks normally, as simple lines or just draw end-points."
+"When moving or rotating tracks on slow machines or with a large number of "
+"tracks, you can improve performance by changing the way tracks are drawn "
+"while being moved.\n"
+"Shift-Right click will display a menu containing options to draw tracks "
+"normally, as simple lines or just draw end-points."
msgstr ""
-"Auf langsamen Computern oder bei hoher Anzahl von Gleisen, kann die Art und Weise wie Gleise neu gezeichnet werden verändert werden.\n"
-"Nachdem Gleise markiert wurden, kann durch festhalten der Shift-Taste und einem rechts Klick mit der Maus in einem Options Menü ausgewählt werden wie die Gleise dargestellt werden sollen: Normal, Einfach oder nur als Endpunkte."
+"Auf langsamen Computern oder bei hoher Anzahl von Gleisen, kann die Art und "
+"Weise wie Gleise neu gezeichnet werden verändert werden.\n"
+"Nachdem Gleise markiert wurden, kann durch Festhalten der Umschalt-Taste und "
+"Klicken mit der rechten Maustaste in einem Options Menü ausgewählt werden, "
+"wie die Gleise dargestellt werden sollen: Normal, Einfach oder nur als "
+"Endpunkte."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:106
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:82
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:106
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:82
msgid ""
"The colors of different parts of the Main window can be changed with the "
-"Colors dialog. In particular, the Snap Grid color can be changed to make it"
-" more visible when printed."
+"Colors dialog. In particular, the Snap Grid color can be changed to make it "
+"more visible when printed."
msgstr ""
"Farben der verschiedenen Baugruppen im Hauptfenster können über den Dialog "
"\"Optionen|Farben\" verändert werden. Im Besonderen kann die Farbe des "
"Fangrasters geändert werden um es beim ausdrucken besser sichtbar machen zu "
"können."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:108
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:84
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:108
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:84
msgid ""
-"By default objects are drawn in their normal colors. Tracks will be drawn in Black. Objects can also be drawn in the color according to their Layer. The color of a Layer is displayed on the corresponding Layer button.\n"
-"The Display dialog 'Color Layers' item has separate toggles for Tracks and non-Tracks."
+"By default objects are drawn in their normal colors. Tracks will be drawn "
+"in Black. Objects can also be drawn in the color according to their Layer. "
+"The color of a Layer is displayed on the corresponding Layer button.\n"
+"The Display dialog 'Color Layers' item has separate toggles for Tracks and "
+"non-Tracks."
msgstr ""
-"Üblicherweise werden Objekte in Ihren voreingestellten Farben gezeichnet. Gleise werden in schwarz dargestellt. Objekte können in den Farben ihrer jeweiligen Ebenen dargestellt werden. Die Farbe einer Ebene wird auf ihrem zugehörigen Ebenenknopf angezeigt.\n"
-"Die Auswahl \"Ebenenfarben\" im Dialog \"Optionen|Anzeige\" besitzt jeweils für Gleise und Sonstige eine getrente Möglichkeit zur Aktivierung von Farben."
+"Ãœblicherweise werden Objekte in Ihren voreingestellten Farben gezeichnet. "
+"Gleise werden in schwarz dargestellt. Objekte können in den Farben ihrer "
+"jeweiligen Ebenen dargestellt werden. Die Farbe einer Ebene wird auf ihrem "
+"zugehörigen Schaltfläche für diese Ebene angezeigt.\n"
+"Die Auswahl \"Ebenenfarben\" im Dialog \"Optionen|Anzeige\" besitzt jeweils "
+"für Gleise und Sonstige eine getrennte Möglichkeit zur Aktivierung von "
+"Farben."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:111
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:86
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:111
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:86
msgid ""
"Each Layer can be drawn or hidden by the 'Visible' toggle on the Layers "
"dialog."
@@ -10975,143 +8963,168 @@ msgstr ""
"Jede Ebene kann im Dialog \"Verwalten|Ebenen\" verborgen oder angezeigt "
"werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:112
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:88
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:88
msgid ""
-"Short cut Layer buttons can also be displayed on the tool bar for up to the first 20 layers.\n"
+"Short cut Layer buttons can also be displayed on the tool bar for up to the "
+"first 20 layers.\n"
"This buttons allow to Show or Hide the layers."
msgstr ""
-"Ebenenknöpfe können für die ersten 20 Ebenen in der Werkzeugleiste "
-"dargestellt werden, diese Nummernknöpfe können dazu benutzt werden um Ebenen"
-" zu verbergen oder anzuzeigen."
+"Schaltflächen für Ebenen können für die ersten 20 Ebenen in der "
+"Werkzeugleiste dargestellt werden, diese können dazu benutzt werden um "
+"Ebenen zu verbergen oder anzuzeigen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:115
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:90
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:115
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:90
msgid "The name of the Layer is the Balloon Help for the Layer button."
msgstr ""
"Der Name einer Ebene wird in der Sprechblase der jeweiligen Ebene angezeigt."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:117
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:92
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:92
msgid ""
-"The playback speed of the Demos can be changed by using Speed drop down list"
-" on the Demo window."
+"The playback speed of the Demos can be changed by using Speed drop down list "
+"on the Demo window."
msgstr ""
"Die Wiedergabegeschwindigkeit von Demos kann durch den Auswahlreiter rechts "
"oben im Demo Fenster eingestellt werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:119
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:94
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:119
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:94
msgid ""
"Many of the commands and dialogs can be invoked by special key combinations "
-"called Menu-Accelerators. These are listed on the Menus next to the command"
-" name. For example, Control-P will invoke the Print command."
+"called Menu-Accelerators. These are listed on the Menus next to the command "
+"name. For example, Control-P will invoke the Print command."
msgstr ""
"Viele Kommandos oder Menü Dialoge können über Tastaturkürzel aufgerufen "
"werden. Diese Kürzel werden rechts (wenn verfügbar) neben jedem Kommando "
"angezeigt. Zum Beispiel: Strg+P im Menü \"Datei|Drucke\" ruft den Drucken "
"Dialog auf."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:121
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:96
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:121
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:96
msgid ""
-"The Connect command is used to join Sectional track pieces that don't quite fit together.\n"
-"This command works by adding small gaps between other tracks to move the selected End-Points closer together."
+"The Connect command is used to join Sectional track pieces that don't quite "
+"fit together.\n"
+"This command works by adding small gaps between other tracks to move the "
+"selected End-Points closer together."
msgstr ""
"Das \"Gleisstücke verbinden\" Kommando im Dialog \"Ändern\" wird verwendet "
"um Gleisstücke die nicht verbunden sind miteinander zu verbinden. Dies wird "
"erreicht indem kleine Lücken bei andern Gleisen eingefügt werden damit die "
"beiden Endpunkte miteinander verbunden werden können."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:124
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:98
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:124
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:98
msgid ""
-"To copy a group of objects: Select the objects, press Control-c (or select Copy from the Edit menu), press Control-v (or select Paste from the Edit menu).\n"
-"The selected tracks will be copied to the layout and you can Move or Rotate them into position."
+"To copy a group of objects: Select the objects, press Control-c (or select "
+"Copy from the Edit menu), press Control-v (or select Paste from the Edit "
+"menu).\n"
+"The selected tracks will be copied to the layout and you can Move or Rotate "
+"them into position."
msgstr ""
-"Um eine Gruppe von Objekten zu kopieren: Selektieren Sie diese, drücken Sie Strg+C (oder wählen Sie \"Kopieren\" im Menü \"Bearbeiten\" aus), drücken Sie Strg+V (oder wählen Sie \"Einfügen\" im Menü \"Bearbeiten\" aus).\n"
-"Die ausgewählten Gleise werden in den Gleisplan eingefügt und können dann verschoben oder rotiert werden und somit in Position gebracht werden."
+"Um eine Gruppe von Objekten zu kopieren: Selektieren Sie diese, drücken Sie "
+"Strg+C (oder wählen Sie \"Kopieren\" im Menü \"Bearbeiten\" aus), drücken "
+"Sie Strg+V (oder wählen Sie \"Einfügen\" im Menü \"Bearbeiten\" aus).\n"
+"Die ausgewählten Gleise werden in den Gleisplan eingefügt und können dann "
+"verschoben oder rotiert werden und somit in Position gebracht werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:127
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:100
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:127
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:100
msgid ""
"In the Rotate (or Select) commands you can press Shift-Right-Click to "
-"display the Rotate menu which allows you to rotate the selected objects by a"
-" specific angle."
+"display the Rotate menu which allows you to rotate the selected objects by a "
+"specific angle."
msgstr ""
"Bei Benutzung der Kommandos \"Rotieren\" oder \"Auswählen\" kann durch "
-"gedrückt halten der Shift-Taste und rechts Klick mit der Maustaste in einem "
-"auftauchenden Optionsmenü der Winkel zum rotieren eines Objekts ausgewählt "
-"werden."
+"Drücken der Umschalt-Taste und gleichzeitiges Klicken mit der rechten "
+"Maustaste in dem erscheinenden Optionsmenü der Winkel zum Rotieren eines "
+"Objekts ausgewählt werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:129
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:102
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:129
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:102
msgid ""
-"You can use the Move-To-Join option of the Join command (hold down the Shift"
-" key) to move a group of Selected tracks to attach with some unselected End-"
+"You can use the Move-To-Join option of the Join command (hold down the Shift "
+"key) to move a group of Selected tracks to attach with some unselected End-"
"Point."
msgstr ""
"Das \"Verbinden\" Kommando im Menü \"Ändern\" besitzt eine Option um eine "
"Gruppe von ausgewählten Gleisen mit einem nicht vorher spezifizierten "
-"Endpunkt verbinden zu können. Markieren Sie zunächst die zu verbindenen "
+"Endpunkt verbinden zu können. Markieren Sie zunächst die zu verbindenden "
"Gleise, wählen Sie als nächstes den Dialog \"Ändern|Verbinden\", halten Sie "
-"nun die Shift-Taste gedrückt während Sie bei gedrückter linker Maustaste die"
-" markierte Gruppe von Gleisen zum Zielpunkt führen, durch nochmaliges "
+"nun die Umschalt-Taste gedrückt während Sie bei gedrückter linker Maustaste "
+"die markierte Gruppe von Gleisen zum Zielpunkt führen, durch nochmaliges "
"drücken der linken Maustaste werden die selektierten Gleise dem Endpunkt "
"hinzugefügt."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:131
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:104
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:104
msgid ""
-"The Price List dialog (on the File Menu) is used to specify the prices of each type of Turnout, Sectional Track and Structure. Also, the length and price of flex-track pieces can be specified for each scale.\n"
-"This values will be used on the Parts List report to generate total cost of the selected objects."
+"The Price List dialog (on the File Menu) is used to specify the prices of "
+"each type of Turnout, Sectional Track and Structure. Also, the length and "
+"price of flex-track pieces can be specified for each scale.\n"
+"This values will be used on the Parts List report to generate total cost of "
+"the selected objects."
msgstr ""
-"Der Dialog \"Verwalten|Preisliste\" kann verwendet werden, um Preise für jedes Gleis, Weiche oder andere Gegenstände einzugeben. Weiterhin können auch Länge und Preis für Flex-Gleise für jeden beliebigen Maßstab eingegeben werden.\n"
-"Die angegebenen Preise werden verwendet um die Gesamtkosten im Dialog \"Verwalten|Teileliste\" auflisten zu können."
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:134
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:106
-msgid ""
-"Areas of water can represented by a Polygon (use the Draw command) of the appropiate color.\n"
-"By using the Modify command, you can move, add or remove corners of the Polygon to fit the shape of the water.\n"
-"You use the Below command to place the Polygon below (or behind) other objects.\n"
+"Der Dialog \"Verwalten|Preisliste\" kann verwendet werden, um Preise für "
+"jedes Gleis, Weiche oder andere Gegenstände einzugeben. Weiterhin können "
+"auch Länge und Preis für Flex-Gleise für jeden beliebigen Maßstab eingegeben "
+"werden.\n"
+"Die angegebenen Preise werden verwendet um die Gesamtkosten im Dialog "
+"\"Verwalten|Teileliste\" auflisten zu können."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:134
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:106
+msgid ""
+"Areas of water can represented by a Polygon (use the Draw command) of the "
+"appropiate color.\n"
+"By using the Modify command, you can move, add or remove corners of the "
+"Polygon to fit the shape of the water.\n"
+"You use the Below command to place the Polygon below (or behind) other "
+"objects.\n"
"\n"
"You can also use a Polygon to represent aisles."
msgstr ""
-"Wasserbereiche können durch Polygone mit Hilfe des \"Zeichnen|Formen|Zeichne Polyline\" in der entsprechenden Farbe erstellt werden.\n"
-"Das \"Verändern\" Kommando kann benutzt werden, Ecken an diesen Polygonen hinzu zu fügen oder zu löschen, um diese so besser der Form des Wassers anpassen zu können.\n"
+"Wasserbereiche können durch Polygone mit Hilfe des \"Zeichnen|Formen|Zeichne "
+"Polylinie\" in der entsprechenden Farbe erstellt werden.\n"
+"Das \"Verändern\" Kommando kann benutzt werden, Ecken an diesen Polygonen "
+"hinzu zu fügen oder zu löschen, um diese so besser der Form des Wassers "
+"anpassen zu können.\n"
"\n"
"Polylinien können auch dazu verwendet werden um Gänge darzustellen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:140
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:108
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:140
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:108
msgid ""
-"When you create Benchwork you can move it below other objects by Selecting the Benchwork and use the Below command.\n"
+"When you create Benchwork you can move it below other objects by Selecting "
+"the Benchwork and use the Below command.\n"
"Also, put Benchwork in a separate Layer so you can hide it if desired."
msgstr ""
-"Ein erstellter Rahmen kann unter andere Objekte verschoben werden, indem man das \"Darunter\" Kommando aus dem Menü \"Bearbeiten\" verwendet.\n"
-"Weiterhin sollten Sie Aufbauten auf separaten Ebenen darstellen. Diese können somit im Bedarfsfall sehr leicht versteckt werden, indem man die zugehörige Ebene einfach ein oder ausblendet."
+"Ein erstellter Rahmen kann unter andere Objekte verschoben werden, indem man "
+"das \"Darunter\" Kommando aus dem Menü \"Bearbeiten\" verwendet.\n"
+"Weiterhin sollten Sie Aufbauten auf separaten Ebenen darstellen. Diese "
+"können somit im Bedarfsfall sehr leicht versteckt werden, indem man die "
+"zugehörige Ebene einfach ein oder ausblendet."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:143
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:110
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:143
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:110
msgid ""
"You can enter Distances and Lengths using any format regardless of the "
"Length Format on the Preferences dialog."
msgstr ""
-"Längen können unabhänig der voreingestellten Werte im "
-"\"Optionen|Einstellungen\" Dialog eingegeben werden."
+"Längen können unabhängig der voreingestellten Werte im \"Optionen|"
+"Einstellungen\" Dialog eingegeben werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:144
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:112
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:112
msgid ""
-"You can enter Metric values when English is the default Units and vice "
-"versa."
+"You can enter Metric values when English is the default Units and vice versa."
msgstr ""
"Metrische Werte können eingegeben werden auch wenn die Einstellung für "
"Einheiten Englisch gewählt ist."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:146
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:114
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:146
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:114
msgid ""
"When entering Distances and Lengths you can press the '=' key to redisplay "
"the value in the default format."
@@ -11119,44 +9132,43 @@ msgstr ""
"Bei Eingabe von Entfernungen und Längen können Sie '=' Zeichen verwenden um "
"den Wert im voreingestellten Format anzuzeigen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:147
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:116
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:147
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:116
msgid ""
-"You can also press the 's' key to convert a Prototype measurement to a Scale"
-" measurement by dividing by the ratio for the current scale."
+"You can also press the 's' key to convert a Prototype measurement to a Scale "
+"measurement by dividing by the ratio for the current scale."
msgstr ""
"Sie können auch die Taste 's' drücken, um eine Prototyp-Abmessung durch "
"Division durch das Verhältnis in eine maßstäbliche Abmessung umzuwandeln."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:148
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:118
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:118
msgid ""
"The 'p' key will convert a Scale measurement to a Prototype measurement."
-msgstr ""
-"Die Taste 'p' konvertiert eine Maßstab Messung in eine Muster Messung."
+msgstr "Die Taste 'p' konvertiert eine Maßstab Messung in eine Muster Messung."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:150
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:120
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:150
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:120
msgid ""
-"You can place cars on the layout using the Train Simulation command to check"
-" clearance points, track to track separation and coupling."
+"You can place cars on the layout using the Train Simulation command to check "
+"clearance points, track to track separation and coupling."
msgstr ""
-"Lokomotiven können im Gleisplan über den Zugbetrieb Knopf plaziert werden um"
-" Weichenübergänge, Gleis zu Gleis Verbindungen oder ankuppeln simulieren zu "
-"können."
+"Lokomotiven können im Gleisplan über die Funktion des Zugbetrieb platziert "
+"werden um Weichenübergänge, Gleis zu Gleis Verbindungen oder Ankuppeln "
+"simulieren zu können."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:152
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:122
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:152
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:122
msgid ""
"Use the MoveTo button on the Custom Management dialog to move your custom "
"Turnout, Structure and Car definitions to a .XTP parameter file."
msgstr ""
-"Benutzen Sie den \"Verschieben nach\" Knopf im \"Verwalten|Anpassungs "
-"Verwaltung\" Menü um selbst erstellte Weichen, Strukturen oder Wagen "
-"Definitionen in eine .XTP Parameter Datei zu verschieben."
+"Benutzen Sie die Schaltfläche \"Verschieben nach\" im \"Verwalten|"
+"Anpassungs Verwaltung\" Menü um selbst erstellte Weichen, Strukturen oder "
+"Wagen Definitionen in eine .XTP Parameter Datei zu verschieben."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:154
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:124
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:154
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:124
msgid ""
"If you are printing multiple pages on a continuous feed printer (such a Dot "
"Matrix) you can change the Page Order if necessary to print pages out in "
@@ -11166,82 +9178,100 @@ msgstr ""
"Reihenfolge der Seiten ändern um diese in der richtigen Reihenfolge "
"auszudrucken."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:156
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:126
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:126
msgid ""
"On the Car Item and Car Part dialogs, you can enter custom values for "
"Manufacturer, Part and Road by typing the new value directly into the Drop "
"Down List."
msgstr ""
-"Im Dialog \"Verwalten|Wagenverzeichnis\" können eigene Werte für Hersteller,"
-" Artikelnummer und Straße direkt in der angezeigten Liste eingegeben werden."
+"Im Dialog \"Verwalten|Wagenverzeichnis\" können eigene Werte für Hersteller, "
+"Artikelnummer und Straße direkt in der angezeigten Liste eingegeben werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:158
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:128
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:128
msgid ""
-"On the Car Item dialog, you can change the Road, Number, Color and other values for a Car. This is useful if you repaint or renumber a car. \n"
-"You can also change the Coupler Mounting and Coupler Length if you change the couplers."
+"On the Car Item dialog, you can change the Road, Number, Color and other "
+"values for a Car. This is useful if you repaint or renumber a car. \n"
+"You can also change the Coupler Mounting and Coupler Length if you change "
+"the couplers."
msgstr ""
-"Im Dialog \"Verwalten|Wagenverzeichnis\" können eigene Werte für Zugnummern, Farbe und andere Werte vergeben werden. Dies is nützlich wenn Sie beispielsweise einen Wagen umlackiert oder eine neue Rollnummer vergeben haben. \n"
+"Im Dialog \"Verwalten|Wagenverzeichnis\" können eigene Werte für Zugnummern, "
+"Farbe und andere Werte vergeben werden. Dies ist nützlich wenn Sie "
+"beispielsweise einen Wagen umlackiert oder eine neue Nummer vergeben "
+"haben. \n"
"Weiterhin kann die Kupplungsaufhängung und auch deren Länge verändert werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:161
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:130
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:161
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:130
msgid ""
"You can Export your Car Inventory to a file in Comma-Separated-Value format "
"which can be read by most spread-sheet programs."
msgstr ""
-"Ihr Wagen/Lokbestand kann in eine, druch Kommata getrennte, Textdatei "
-"exportiert werden, welche von allen gänigen Tabellenkalkulations Programmen "
+"Ihr Wagen/Lokbestand kann in eine, durch Kommata getrennte, Textdatei "
+"exportiert werden, welche von allen gängigen Tabellenkalkulations Programmen "
"eingelesen werden kann."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:163
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:132
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:132
msgid "Use the Train Odometer to measure distances along the track."
msgstr ""
"Benutzen Sie den Zugsteckenzähler um Entfernungen auf dem Gleis messen zu "
"können."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:165
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:134
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:134
msgid ""
-"Holding down the Shift key when clicking the Zoom In or Zoom Out button will zoom to a programmed Drawing Scale. \n"
-"Holding down the Shift and Control keys when clicking a Zoom button will set it's program Zoom to the current Drawing Scale."
+"Holding down the Shift key when clicking the Zoom In or Zoom Out button will "
+"zoom to a programmed Drawing Scale. \n"
+"Holding down the Shift and Control keys when clicking a Zoom button will set "
+"it's program Zoom to the current Drawing Scale."
msgstr ""
-"Wenn Sie die Lupenknöpfe klicken während die Shift Taste gedrückt ist, setzt das Programm auf vorher festgelegten Maßstab. \n"
-"Durch gleichzeitiges Festhalten der Strg + Shift Tasten kann durch Anklicken der jeweiligen Lupenknöpfe die Einstellung der Vergrößerung oder Verkleinerung festgelegt werden."
+"Wenn Sie die Schaltflächen für die Lupen klicken während die Umschalt Taste "
+"gedrückt ist, setzt das Programm auf vorher festgelegten Maßstab. \n"
+"Durch gleichzeitiges Festhalten der Strg + Umschalt Tasten kann durch "
+"Anklicken der jeweiligen Schaltflächen für Lupen die Einstellung der "
+"Vergrößerung oder Verkleinerung festgelegt werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:168
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:136
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:168
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:136
msgid ""
"You can trim the ends of turnouts by holding down the Shift key when using "
"the Split command."
msgstr ""
-"Durch Benutzung des \"Gleis auftrennen\" Kommandos kann man durch Festhalten"
-" der Umschalt-Taste das Ende einer Weiche anpassen."
+"Durch Benutzung des \"Gleis auftrennen\" Kommandos kann man durch Festhalten "
+"der Umschalt-Taste das Ende einer Weiche anpassen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:170
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:138
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:138
msgid ""
-"The Split command can be used to create Block Gaps at end points between two tracks. \n"
+"The Split command can be used to create Block Gaps at end points between two "
+"tracks. \n"
"Either rail or both rails can be gapped, which are drawn as thick lines."
msgstr ""
-"Der Dialog \"Ändern|Gleis auftrennen\" kann benutzt werden um Blockabstände an Endpunkten von zwei Gleisen einzufügen. \n"
-"Abstände können entweder an einem oder beiden Enden eingefügt werden, diese werden durch dicke Linien gekennzeichnet."
+"Der Dialog \"Ändern|Gleis auftrennen\" kann benutzt werden um Blockabstände "
+"an Endpunkten von zwei Gleisen einzufügen. \n"
+"Abstände können entweder an einem oder beiden Enden eingefügt werden, diese "
+"werden durch dicke Linien gekennzeichnet."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:173
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:140
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:173
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:140
msgid ""
-"Trains will 'crash' if they hit another car when travelling faster than the 'Max Coupling Speed' (on the Command Options dialog). \n"
-"They will also 'crash' if they hit the end of the track or an open turnout. \n"
+"Trains will 'crash' if they hit another car when travelling faster than the "
+"'Max Coupling Speed' (on the Command Options dialog). \n"
+"They will also 'crash' if they hit the end of the track or an open "
+"turnout. \n"
"Crashed trains must be manually moved back onto the track."
msgstr ""
-"Züge 'entgleisen' wenn sie auf ein anderes Fahrzeug treffen oder sie beim Ankuppeln schneller unterwegs sind wie die maximal eingestellte Kuppelgeschwindigkeit (einstellbar über \"Optionen|Einstellungen\"). \n"
-"Außerdem werden sie 'entgleisen' sobald sie auf ein totes Gleisende oder eine offene Weiche treffen. \n"
+"Züge 'entgleisen' wenn sie auf ein anderes Fahrzeug treffen oder sie beim "
+"Ankuppeln schneller unterwegs sind wie die maximal eingestellte "
+"Kuppelgeschwindigkeit (einstellbar über \"Optionen|Einstellungen\"). \n"
+"Außerdem werden sie 'entgleisen' sobald sie auf ein totes Gleisende oder "
+"eine offene Weiche treffen. \n"
"Entgleiste Züge müssen von Hand wieder auf das Gleis zurück gestellt werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:177
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:142
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:177
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:142
msgid ""
"You can add new track segments to a turnout definition or create a "
"definition from individual tracks using the Group command."
@@ -11250,73 +9280,84 @@ msgstr ""
"Gleis anzuhängen oder einen neue Definition zu erstellen, in der einzelne "
"Gleise zusammengefasst werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:179
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:144
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:179
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:144
msgid ""
-"The center point and radius of Curved and Circle tracks can optionally be drawn. \n"
-"This feature is toggled by using the Move Label command and doing a Shift-Left-Click on the track."
+"The center point and radius of Curved and Circle tracks can optionally be "
+"drawn. \n"
+"This feature is toggled by using the Move Label command and doing a Shift-"
+"Left-Click on the track."
msgstr ""
"Der Mittelpunkt von Kurven oder Kreisen kann auch angezeigt werden. \n"
-"Diese Option kann ein/ausgeschaltet werden durch festhalten der Shift Taste bei gleichzeitigem links Klick der Maus."
+"Diese Option kann durch Festhalten der Umschalt Taste bei gleichzeitigem "
+"Klicken mit der linken Maustaste ein/ausgeschaltet werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:182
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:146
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:146
msgid ""
-"Turnout, Curved and Helix track labels can be individually turned on and off"
-" by doing a Shift-Right-Click on the track when using the Move Label "
-"command."
+"Turnout, Curved and Helix track labels can be individually turned on and off "
+"by doing a Shift-Right-Click on the track when using the Move Label command."
msgstr ""
"Weichen, Kurven und Gleiswendel Beschreibungen können einzeln an und aus "
-"geschaltet werden. Halten Sie hierzu die Shift Taste gedrückt während Sie "
-"das Kommando \"Ändern|Beschreibungen verschieben\" verwenden und klicken Sie"
-" mit der rechten Maustaste auf die jeweilige Beschreibung."
+"geschaltet werden. Halten Sie hierzu die Umschalt Taste gedrückt während Sie "
+"das Kommando \"Ändern|Beschreibungen verschieben\" verwenden und klicken Sie "
+"mit der rechten Maustaste auf die jeweilige Beschreibung."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:184
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:148
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:148
msgid ""
"You can use the Describe command to change the font size of Text objects."
msgstr ""
-"Das Kommando \"Ändern|Eigenschaften\" wird verwendet um die Schriftgröße von"
-" Textobjekten zu ändern."
+"Das Kommando \"Ändern|Eigenschaften\" wird verwendet um die Schriftgröße von "
+"Textobjekten zu ändern."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:186
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:150
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:186
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:150
msgid ""
-"You can use the Describe command to change the size of Dimension Line "
-"labels."
+"You can use the Describe command to change the size of Dimension Line labels."
msgstr ""
"Das Kommando \"Ändern|Eigenschaften\" wird verwendet um die Größe von "
"Dimensions Linien Beschreibungen zu ändern."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:188
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:152
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:188
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:152
msgid ""
-"Normally Right-Click displays a popup menu of commands and Shift-Right-Click displays options for the current command. \n"
-"This can reversed by using the Right Click toggle button on the Command Options dialog."
+"Normally Right-Click displays a popup menu of commands and Shift-Right-Click "
+"displays options for the current command. \n"
+"This can reversed by using the Right Click toggle button on the Command "
+"Options dialog."
msgstr ""
-"Normalerweise wird durch einen Rechts-Klick im Gleisplan ein Befehlsmenü angezeigt,. Bei Festhalten der Umschalt-Taste und einem vorher ausgewählten Kommando wird ein optionales Menü für das jeweilige Kommando angezeigt.\n"
+"Normalerweise wird durch Rechtsklicken im Gleisplan ein Befehlsmenü "
+"angezeigt,. Bei Festhalten der Umschalt-Taste und einem vorher ausgewählten "
+"Kommando wird ein optionales Menü für das jeweilige Kommando angezeigt.\n"
"Dieses Verhalten kann durch den Befehlsoptionen-Dialog vertauscht werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:191
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:154
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:191
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:154
msgid ""
-"The Align item on the Rotate command options menu will let you Align selected objects with any unselected object. \n"
-"The selected objects are rotated so the first point is parallel to the second point you selected."
+"The Align item on the Rotate command options menu will let you Align "
+"selected objects with any unselected object. \n"
+"The selected objects are rotated so the first point is parallel to the "
+"second point you selected."
msgstr ""
-"Die Auswahl \"Ausrichten\" im Optionsmenü des \"Drehen\" Kommandos kann ausgewählte Objekte an nicht ausgewählten Objekten ausrichten. \n"
-"Die ausgewählten Objekte werden so rotiert dass der erste Auswahlpunkt parallel zum zweiten Auswahlpunkt erscheint."
+"Die Auswahl \"Ausrichten\" im Optionsmenü des \"Drehen\" Kommandos kann "
+"ausgewählte Objekte an nicht ausgewählten Objekten ausrichten. \n"
+"Die ausgewählten Objekte werden so rotiert dass der erste Auswahlpunkt "
+"parallel zum zweiten Auswahlpunkt erscheint."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:194
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:156
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:194
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:156
msgid ""
"Print To Bitmap allows you to print the track center line. \n"
-"This is useful if you later print the bitmap full size as a template when laying track."
+"This is useful if you later print the bitmap full size as a template when "
+"laying track."
msgstr ""
-"Speichern als Bitmap ermöglicht das mitspeichern der Gleismitte. \n"
-"Dies ist nützlich falls Sie später diese Bitmap in voller Größe ausdrucken wollen um sie als Gleisvorlage verwenden zu können."
+"Speichern als Bitmap ermöglicht das zusätzliche Speichern der Gleismitte. \n"
+"Dies ist nützlich falls Sie später diese Bitmap in voller Größe ausdrucken "
+"wollen um sie als Gleisvorlage verwenden zu können."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:197
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:158
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:197
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:158
msgid ""
"You can export the selected tracks to a DXF file which can be read by most "
"CAD programs."
@@ -11324,8 +9365,8 @@ msgstr ""
"Sie können markierte Gleise in eine DXF Datei exportieren, welche von den "
"meisten CAD Programmen lesbar ist."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:199
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:160
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:199
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:160
msgid ""
"Lengths and distances can be displayed in a variety of units and formats "
"such as 1' 10 3/4\", 1ft 10.75in or 22.750. In Metric mode, distances can "
@@ -11339,95 +9380,120 @@ msgstr ""
"der Auswahl \"Einheiten\" im Dialog \"Optionen|Einstellungen\" vorgenommen "
"werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:201
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:162
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:201
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:162
msgid ""
-"Tracks that are too steep or curve too tightly are drawn in the Exception color (Yellow by default). \n"
+"Tracks that are too steep or curve too tightly are drawn in the Exception "
+"color (Yellow by default). \n"
"This helps to identify potential problem areas. \n"
"The maximum grade and minimum radius are set on the Preferences dialog."
msgstr ""
-"Gleise, die zu abschüssig sind oder zu enge Radien haben, werden in einer Ausnahme Farbe dargestellt (üblicherweise Gelb). \n"
+"Gleise, die zu abschüssig sind oder zu enge Radien haben, werden in einer "
+"Ausnahme Farbe dargestellt (üblicherweise Gelb). \n"
"Dies hilft um Problembereiche aufzufinden. \n"
-"Die maximale Steigung und der minimale Radius werden im Eingenschaften Dialog eingestellt."
+"Die maximale Steigung und der minimale Radius werden im Eigenschaften Dialog "
+"eingestellt."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:205
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:164
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:164
msgid ""
"The Flip command produces a mirror-image of the selected tracks. \n"
-"If possible, right-hand turnouts are relabeled as left-hand turnouts (and vice versa)."
+"If possible, right-hand turnouts are relabeled as left-hand turnouts (and "
+"vice versa)."
msgstr ""
-"Das \"Spiegeln\" Kommando im Menü \"Ändern\" spiegelt ausgewählte Gleise. \n"
-"Falls möglich werden rechte Weichen in linke Weichen umbenannt oder linke in rechte."
+"Das \"Spiegeln\" Kommando im Menü \"Ändern\" spiegelt ausgewählte "
+"Gleise. \n"
+"Falls möglich werden rechte Weichen in linke Weichen umbenannt oder linke in "
+"rechte."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:208
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:166
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:208
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:166
msgid ""
-"Then Ungroup command will break turnouts and structures into individual track, line and shape segments. \n"
+"Then Ungroup command will break turnouts and structures into individual "
+"track, line and shape segments. \n"
"You can modify each segment and add new ones. \n"
"Then use the Group command to update the definition."
msgstr ""
-"Das Kommando \"Verwalten|Gruppierung aufheben\" trennt Weichen und oder Strukturen in einzelne Gleise, Linien oder Segmente auf. \n"
+"Das Kommando \"Verwalten|Gruppierung aufheben\" trennt Weichen und oder "
+"Strukturen in einzelne Gleise, Linien oder Segmente auf. \n"
"Sie können nun jedes einzelne Segment modifizieren neue hinzufügen usw. \n"
-"Danach benutzen Sie das Kommando \"Verwalten|Gruppieren\" um Ihre neue Definition wieder als Gruppierung zusammen zu fügen."
+"Danach benutzen Sie das Kommando \"Verwalten|Gruppieren\" um Ihre neue "
+"Definition wieder als Gruppierung zusammen zu fügen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:212
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:168
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:212
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:168
msgid "Dimension lines show the distance between two points."
msgstr "Maßlinien zeigen die Entfernung zwischen zwei Punkten an."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:214
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:170
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:214
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:170
msgid ""
"A variety of Benchwork (rectangular, L-girder and T-girder) can be drawn. \n"
-"Use the Below command to move the Benchwork below the track for proper display."
+"Use the Below command to move the Benchwork below the track for proper "
+"display."
msgstr ""
-"Eine Vielzahl Unterbauten kann dargestellt werden (Rechteckformen, L-Träger und T-Träger). \n"
-"Das Kommando \"Darunter\" im Menü \"Bearbeiten\" wird benutzt um Unterbauten korrekt unter den Gleise darstellen zu können."
+"Eine Vielzahl Unterbauten kann dargestellt werden (Rechteckformen, L-Träger "
+"und T-Träger). \n"
+"Das Kommando \"Darunter\" im Menü \"Bearbeiten\" wird benutzt um Unterbauten "
+"korrekt unter den Gleise darstellen zu können."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:217
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:172
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:217
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:172
msgid ""
-"The Turnout Designer dialogs allow you to specify the width of any attached roadbed. \n"
-"As well, the color and thickness of the lines used to represent the roadbed can be specified."
+"The Turnout Designer dialogs allow you to specify the width of any attached "
+"roadbed. \n"
+"As well, the color and thickness of the lines used to represent the roadbed "
+"can be specified."
msgstr ""
-"Der Weichendesigner ermöglicht die Angabe der Spurbreite von jedem beliebigen Gleisbett. \n"
-"Desweitern können Farbe und Stärke der Linien angegeben in denen das Gleisbett dargestellt wird."
+"Der Weichendesigner ermöglicht die Angabe der Breite jedes beliebigen "
+"Gleisbetts. \n"
+"Desweiteren können Farbe und Stärke der Linien angegeben werden, in denen "
+"das Gleisbett dargestellt wird."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:220
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:174
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:220
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:174
msgid ""
-"The Color dialog (on the Options menu) is used to change the color of different objects on the display. \n"
-"You can change the color of the Snap Grid and Borders, as well as Normal, Selected and Exception tracks."
+"The Color dialog (on the Options menu) is used to change the color of "
+"different objects on the display. \n"
+"You can change the color of the Snap Grid and Borders, as well as Normal, "
+"Selected and Exception tracks."
msgstr ""
-"Der Dialog \"Optionen|Farben\" wird benutzt um die Farben für verschiedene Objekte einzustellen. \n"
-"Die Farbe des Fangrasters, Ränder sowohl als auch für normale selektierte und Ausnahme Gleise können angegeben werden."
+"Der Dialog \"Optionen|Farben\" wird benutzt um die Farben für verschiedene "
+"Objekte einzustellen. \n"
+"Die Farbe des Fangrasters, Ränder sowohl als auch für normale selektierte "
+"und Ausnahme Gleise können angegeben werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:223
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:176
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:223
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:176
msgid ""
"You can set the elevation (height) of track end-points. \n"
-"Elevations of intermediate end points can be computed automatically based on the distance to the nearest end points with defined elevations. \n"
+"Elevations of intermediate end points can be computed automatically based on "
+"the distance to the nearest end points with defined elevations. \n"
"Grades can also be displayed at selected end points. \n"
"Please see the Elevations help and demo."
msgstr ""
"Sie können die Höhe der Endpunkte des Gleises einstellen.\n"
-"Die Höhen der dazwischen liegenden Endpunkte können automatisch auf der Grundlage der Entfernung zu den nächstgelegenen Endpunkten mit definierten Höhen berechnet werden. \n"
+"Die Höhen der dazwischen liegenden Endpunkte können automatisch auf der "
+"Grundlage der Entfernung zu den nächstgelegenen Endpunkten mit definierten "
+"Höhen berechnet werden. \n"
"Die Steigungen können auch an ausgewählten Endpunkten angezeigt werden. \n"
"Bitte sehen Sie sich die Hilfe und die Demo zu den Erhebungen an."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:228
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:178
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:228
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:178
msgid ""
-"Once you have elevations on some endpoints, you can use the Profile command to produce an elevation graph. \n"
+"Once you have elevations on some endpoints, you can use the Profile command "
+"to produce an elevation graph. \n"
"The graph shows the selected elevations, grades and distances. \n"
"Please see the Profile help and demo for details."
msgstr ""
-"Sobald Sie an einigen Endpunkten Höhenangaben haben, können Sie mit dem Befehl Profil ein Höhendiagramm erstellen.\n"
+"Sobald Sie an einigen Endpunkten Höhenangaben haben, können Sie mit dem "
+"Befehl Profil ein Höhendiagramm erstellen.\n"
"Das Diagramm zeigt die ausgewählten Höhen, Steigungen und Abstände an. \n"
"Einzelheiten finden Sie in der Profil-Hilfe und der Demo."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:232
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:232
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:180
msgid ""
"You can draw tracks with wider lines for rails. \n"
"Select the tracks and use Medium or Thick Tracks on the Edit menu."
@@ -11435,39 +9501,48 @@ msgstr ""
"Schienen können mit breiteren Linien für Gleise gezeichnet werden. \n"
"Wählen Sie hierzu Mittlere Gleise oder Dicke Gleise im Bearbeiten Menü aus."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:235
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:182
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:235
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:182
msgid ""
"The Helix command is used to create a Helix track. \n"
-"You specify some parameters: height, radius, number of turns, grade and vertical separation between layers. \n"
+"You specify some parameters: height, radius, number of turns, grade and "
+"vertical separation between layers. \n"
"These values are interrelated so changing one value will affect ohers. \n"
-"Then you can place the Helix and join to other tracks as you would a Circle track."
+"Then you can place the Helix and join to other tracks as you would a Circle "
+"track."
msgstr ""
-"Der Gleiswendel-Befehl wird zum Erstellen einer Gleispirale verwendet. \n"
-"Sie geben einige Parameter an: Höhe, Radius, Anzahl der Windungen, Grad und vertikaler Abstand zwischen den Umdrehungen.\n"
-"Diese Werte sind miteinander verbunden, so dass die Änderung eines Wertes sich auf andere Werte auswirkt.\n"
-"Dann können Sie die Helix platzieren und mit anderen Gleisen verbinden, wie Sie es bei einem Gleiskreis tun würden."
+"Der Gleiswendel-Befehl wird zum Erstellen einer Gleisspirale verwendet. \n"
+"Sie geben einige Parameter an: Höhe, Radius, Anzahl der Windungen, Grad und "
+"vertikaler Abstand zwischen den Umdrehungen.\n"
+"Diese Werte sind miteinander verbunden, so dass die Änderung eines Wertes "
+"sich auf andere Werte auswirkt.\n"
+"Dann können Sie die Helix platzieren und mit anderen Gleisen verbinden, wie "
+"Sie es bei einem Gleiskreis tun würden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:240
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:184
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:240
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:184
msgid ""
-"Many objects on the layout have labels: Turnouts/Helix/Curved Titles, Track Lenghts, End-Point Elevations, Track Elevations and Cars. \n"
-"You can turn these labels on or off with the Label Enable toggle buttons on the Display options dialog."
+"Many objects on the layout have labels: Turnouts/Helix/Curved Titles, Track "
+"Lenghts, End-Point Elevations, Track Elevations and Cars. \n"
+"You can turn these labels on or off with the Label Enable toggle buttons on "
+"the Display options dialog."
msgstr ""
-"Viele Objekte im Gleisplan besitzen Beschreibungen: Weichen/Gleiswendel/Kurven Gleislängen Endpunkte Höhenangaben usw. \n"
-"Sie können diese Beschreibungen über den Dialog \"Optionen|Anzeige\" ein oder ausschalten."
+"Viele Objekte im Gleisplan besitzen Beschreibungen: Weichen/Gleiswendel/"
+"Kurven Gleislängen Endpunkte Höhenangaben usw. \n"
+"Sie können diese Beschreibungen über den Dialog \"Optionen|Anzeige\" ein "
+"oder ausschalten."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:243
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:186
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:186
msgid ""
-"If you hold down the Control key when using the Rotate command, the rotation"
-" will be done in increments of 15ᅵ."
+"If you hold down the Control key when using the Rotate command, the rotation "
+"will be done in increments of 15ᅵ."
msgstr ""
-"Durch Festhalten der Strg Taste erfolgt die Rotation beim Drehen Kommando in"
-" 15° Schritten."
+"Durch Festhalten der Strg Taste erfolgt die Rotation beim Drehen Kommando in "
+"15° Schritten."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:245
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:188
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:245
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:188
msgid ""
"When using the Rotate command, Shift-Right-Click displays a menu allowing "
"you to rotate by specific amounts or to align the selected objects with "
@@ -11477,17 +9552,16 @@ msgstr ""
"einem Menü der Drehwinkel des Objektes ausgewählt werden oder das Objekt "
"kann anhand eines anderen Objektes ausgerichtet werden."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:247
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:190
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:247
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:190
msgid ""
-"This is last tip. If you have any additions or comments, please let us "
-"know."
+"This is last tip. If you have any additions or comments, please let us know."
msgstr ""
"Dies ist der letzte Tipp. Wenn Sie Ergänzungen oder Anmerkungen haben, "
"lassen Sie es uns bitte wissen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:25
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:192
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:192
msgid ""
"The unconnected endpoints of a straight or curved track can be changed with "
"the 'Modify Track' command.\n"
@@ -11495,17 +9569,17 @@ msgstr ""
"Die nicht verbundenen Endpunkte eines geraden oder eines gebogenen Gleise "
"können mit 'Ändern Gleis' verändert werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:31
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:194
msgid ""
-"The endpoint of a straight track is selected and then Left-Dragged to change"
-" its length. A blue anchor shows that the length can be extended.\n"
+"The endpoint of a straight track is selected and then Left-Dragged to change "
+"its length. A blue anchor shows that the length can be extended.\n"
msgstr ""
"Der Endpunkt eines geraden Gleises wird ausgewählt und die Länge wird durch "
-"Ziehen mit dem linken Maus-Knopf geändert.\n"
+"Ziehen mit dem linken Mausknopf geändert.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:48
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:196
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:196
msgid ""
"If you try to drag the selected endpoint beyond the far endpoint, the track "
"extends in the opposite direction.\n"
@@ -11513,9 +9587,9 @@ msgstr ""
"Wenn der ausgewählte Endpunkt über den entfernten Endpunkt hinaus gezogen "
"wird, wird das Gleis in die entgegengesetzte Richtung erweitert.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:68
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:73
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:199
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:68
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:199
msgid ""
"A curved track is selected and it's new endpoint is determined by the angle "
"to the cursor. \n"
@@ -11523,12 +9597,12 @@ msgstr ""
"Ein gebogenes Gleis wird ausgewählt und der neue Endpunkt durch den Winkel "
"des Mauszeiger festgelegt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:105
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:201
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:105
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:201
msgid "It's possible to almost create a complete circle.\n"
msgstr "Es ist beinahe möglich, einen vollständigen Kreis zu erstellen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:202
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:202
msgid ""
"If you drag the mouse beyond the start of the curve the track becomes very "
"short.\n"
@@ -11536,45 +9610,52 @@ msgstr ""
"Wenn Sie die Maus über den Startpunkt des Bogen hinaus ziehen, wird das "
"Gleis sehr kurz.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:113
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:204
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:114
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:204
msgid "Here you are warned that the track will be too short.\n"
msgstr "Jetzt werden Sie gewarnt, dass das Gleis zu kurz wird.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:147
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:206
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:121
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:206
msgid ""
-"If you move the cursor away from the curve, you will create a straight track"
-" tangent to the curve.\n"
+"Because the modified track is too short, the modification is abandoned the "
+"original track is restored.\n"
+msgstr ""
+"Da das veränderte Gleis zu kurz ist, werden die Änderungen verworfen und der "
+"Ausgangszustand wieder hergestellt.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:208
+msgid ""
+"If you move the cursor away from the curve, you will create a straight track "
+"tangent to the curve.\n"
msgstr ""
"Wenn Sie den Mauszeiger vom Bogen weg bewegen, erstellen Sie ein gerades "
"Gleis als Tangente an dem Bogen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:169
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:174
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:209
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:185
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:211
msgid ""
"If you adjust the endpoint of a turnout or sectional track the track is "
-"extended by a similar track segment. The extension can be \n"
+"extended by a similar track segment. The extension can be a straight or a "
+"curve.\n"
msgstr ""
-"Wenn Sie den Endpunkt einer Weiche oder eines Festgleises anpassen, wird das"
-" Gleis durch ein gerades Segment verlängert.\n"
-
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:210
-msgid "a straight or a curve.\n"
-msgstr "eine Gerade oder eine Kurve.\n"
+"Wenn Sie den Endpunkt einer Weiche oder eines Festgleises anpassen, wird das "
+"Gleis durch ein ähnliches Segment verlängert. Die Erweiterung kann eine "
+"Gerade oder eine Kurve sein.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:190
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:195
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:213
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:200
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:214
msgid ""
-"You can change the radius of a straight or curved track that is connected at"
-" one endpoint by holding down the Shift key while Left-dragging on it.\n"
+"You can change the radius of a straight or curved track that is connected at "
+"one endpoint by holding down the Shift key while Left-dragging on it.\n"
msgstr ""
"Sie können den Radius eines Bogen ändern oder ein gerades Gleis biegen, "
"indem Sie bei gedrückter Umschalttaste und gedrücktem Mausknopf ziehen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:214
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:215
msgid ""
"The blue cross anchor shows that this is possible when shift is held down "
"with no buttons.\n"
@@ -11582,8 +9663,8 @@ msgstr ""
"Das blaue Kreuz zeigt, dass dies möglich ist, wenn die Umschalttaste ohne "
"Mausknöpfe gedrückt gehalten wird.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:209
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:216
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:219
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:217
msgid ""
"This lets you change a straight track into a curved track (and vice versa) "
"as well as changing the radius of a curved track.\n"
@@ -11591,18 +9672,18 @@ msgstr ""
"Dadurch können Sie ein gerades Gleis in ein gebogenes (und umgekehrt) "
"umwandeln und den Radius eines Bogengleises ändern.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:252
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:218
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:262
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:219
msgid ""
-"You can form an extension of a straight or curved Track that is connected at"
-" one endpoint using an easement by holding down the Ctrl key while Left-"
+"You can form an extension of a straight or curved Track that is connected at "
+"one endpoint using an easement by holding down the Ctrl key while Left-"
"dragging on it.\n"
msgstr ""
"Sie können ein gerades oder ein gebogenes Gleis, das an einem Endpunkt "
"verbunden ist, mit einem Übergangsbogen erweitern, indem Sie bei gedrückter "
"Strg-Taste und gedrücktem linkem Mausknopf ziehen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:219
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:220
msgid ""
"The blue half cross anchor shows that this is possible when the Ctrl key is "
"held down with no mouse button.\n"
@@ -11610,35 +9691,35 @@ msgstr ""
"Der blaue halbe Kreuz zeigt, dass dies möglich ist, wenn die Strg ohne "
"Mausknopf gedrückt gehalten wird.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:267
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmbench.xtr:9
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:222
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:277
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:9
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:223
msgid "You can draw a variety of different types of benchwork:\n"
msgstr "Sie können verschiedene Formend es Unterbau zeichnen:\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:223
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:224
msgid "- rectangular (1x2, 2x4 etc)\n"
-msgstr "- rechteckig (1x2, 2x4 Inch usw.)\n"
+msgstr "- rechteckig (1x2, 2x4 Zoll usw.)\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:225
msgid "- L girders\n"
msgstr "- Winkelträger\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:226
msgid "- T girders\n"
msgstr "- T- Träger\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:226
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:227
msgid "You can also draw them in different orientations.\n"
msgstr "Sie können diese auch in verschiedenen Ausrichtungen zeichnen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmbench.xtr:25
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:228
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:229
msgid "We will draw two 3x6 inch L-girders.\n"
-msgstr "Wir zeichnen zwei 3x6 Inch Winkelträger.\n"
+msgstr "Wir zeichnen zwei 3x6 Zoll Winkelträger.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmbench.xtr:43
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:230
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:43
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:231
msgid ""
"The flange of the top L-Girders is on the outside edge of the girders. We "
"want to change the girder so both flanges are on the inside.\n"
@@ -11646,85 +9727,85 @@ msgstr ""
"Die Schmalseite des oberen Winkelträger ist auf der Außenseite. Wir wollen "
"die Träger so anpassen, dass beide Schmalseiten innen liegen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:231
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:232
msgid "We will use the <Describe> command for this.\n"
msgstr "Wir werden den <Beschreiben> Befehl dafür benutzen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmbench.xtr:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:233
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:234
msgid "Change the Orientation to Right.\n"
msgstr "Ändere die Ausrichtung auf rechts.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmbench.xtr:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:235
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:236
msgid "Now both flanges are on the inside of the two girders.\n"
msgstr "Jetzt sind beide Schmalseiten auf der Innenseite der beiden Träger.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:34
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:237
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:238
msgid ""
"Pushing the <Describe> button will cancel any other command in progress.\n"
msgstr ""
-"Durch Drücken des <Beschreiben> Knopfes wird jeder begonnene Befehl "
+"Durch Drücken der Schaltfläche <Beschreiben> wird jeder begonnene Befehl "
"abgebrochen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:238
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:239
msgid ""
"Here we will begin to create a curved track which is a two step process.\n"
msgstr ""
"In zwei Schritten werden wir mit dem Erstellen eines gebogenen Gleises "
"beginnen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:47
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:240
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:241
msgid ""
"When we clicked on the <Describe> button, the current command was "
"cancelled.\n"
msgstr ""
-"Durch Drücken auf den <Beschreiben> Knopf wurde der begonnene Befehl "
+"Durch Drücken auf der Schaltfläche <Beschreiben> wurde der begonnene Befehl "
"abgebrochen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:241
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:242
msgid ""
"When in <Describe> mode, selecting any object will print a description in "
"the Status Bar and display a dialog showing properties of the clicked-on "
"object.\n"
msgstr ""
-"Im <Beschreiben> Modus wird durch Auswahl eines Objektes dessen Beschreibung"
-" in der Statuszeile angezeigt und die Eigenschaften des Objektes werden in "
+"Im <Beschreiben> Modus wird durch Auswahl eines Objektes dessen Beschreibung "
+"in der Statuszeile angezeigt und die Eigenschaften des Objektes werden in "
"einem Dialogfenster angezeigt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:57
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:243
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:244
msgid ""
"Certain parameters of the object can be changed. In this case we'll change "
"the length\n"
msgstr ""
-"Einige der Eigenschaften des Objektes können geändert werden. In diesem Fall"
-" ändern wir die Länge\n"
+"Einige der Eigenschaften des Objektes können geändert werden. In diesem Fall "
+"ändern wir die Länge\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:65
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:245
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:246
msgid "Let's look at the Turnout...\n"
msgstr "Jetzt wollen wir uns die Weiche anschauen...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:73
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:247
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:248
msgid "and change the turnout name and part no.\n"
msgstr "und Titel und Bestellnummer der Weiche ändern.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:84
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:249
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:250
msgid "You can change the contents of text...\n"
msgstr "Sie können den Text ändern...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:93
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:251
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:93
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:252
msgid "and its size.\n"
msgstr "und seine Größe.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:100
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:253
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:100
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:254
msgid ""
"If you select a note, the Description dialog appears which displays the "
"contents of the note.\n"
@@ -11732,9 +9813,9 @@ msgstr ""
"Wenn Sie eine Notiz auswählen, erscheint ein Dialogfenster, in dem der "
"Inhalt der Notiz angezeigt wird.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:112
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcircle.xtr:7
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:256
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:112
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:257
msgid ""
"Like the <Curve> track command, there are several ways to create a Circle "
"track.\n"
@@ -11742,7 +9823,7 @@ msgstr ""
"Wie beim <Bogen> Befehl gibt es mehrere Möglichkeiten, einen Gleiskreis zu "
"erstellen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:257
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:258
msgid ""
"The first is to specify a fixed radius and simply drag the Circle into "
"position.\n"
@@ -11750,18 +9831,18 @@ msgstr ""
"Die Erste ist die Vorgabe eines festen Radius und das Ziehen an die "
"gewünschte Position.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:259
msgid "We will change the Radius before proceeding.\n"
msgstr "Bevor wir weitermachen, ändern wir den Radius.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcircle.xtr:24
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:260
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:261
msgid "The next method is to drag from the edge of the Circle to the center.\n"
msgstr ""
"Die nächste Methode ist das Ziehen von der Kreislinie zum Mittelpunkt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcircle.xtr:37
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:262
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:263
msgid ""
"The last is similar, but you drag from the center of the Circle to the "
"edge.\n"
@@ -11769,19 +9850,19 @@ msgstr ""
"Die letzte, aber vergleichbare, Methode ist das Ziehen vom Mittelpunkt zur "
"Kreislinie.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcircle.xtr:50
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:157
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:265
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:50
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:157
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:266
msgid ""
"We have built a siding using Sectional track and have 2 End-Points that "
-"don't line up and are not connected automatically when placing the sectional"
-" track.\n"
+"don't line up and are not connected automatically when placing the sectional "
+"track.\n"
msgstr ""
-"Wir haben ein Ausweichgleis erstellt und haben zwei Endpunkte erhaltem, die "
+"Wir haben ein Ausweichgleis erstellt und haben zwei Endpunkte erhalten, die "
"beim Setzen von Festgleisen nicht automatisch verbunden wurden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:162
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:267
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:162
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:268
msgid ""
"We use the <Connect> command to adjust neighboring tracks so the gap is "
"closed.\n"
@@ -11789,39 +9870,39 @@ msgstr ""
"Wir benutzen den <Zusammenfügen> Befehl, um die benachbarten Gleise so "
"auszurichten, dass die Lücke geschlossen ist.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:268
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:269
msgid ""
"Note: the adjustments are only done on tracks which have only 1 or 2 "
"connections. In this example the Turnouts would not be affected.\n"
msgstr ""
"Achtung: die Anpassungen wurden nur an Gleisen mit einer oder zwei "
-"Verbindungsn gemacht. In diesem Besipiel wurden die Weichen nicht "
+"Verbindungen gemacht. In diesem Beispiel wurden die Weichen nicht "
"verändert.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:175
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:270
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:175
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:271
msgid "And now the gap is closed.\n"
msgstr "Und jetzt ist die Lücke geschlossen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:181
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:272
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:181
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:273
msgid "Other tracks have been shifted slightly to close the gap.\n"
-msgstr "Andere Gleise wurden leicht verschoben, um die Lücke zu schliessen.\n"
+msgstr "Andere Gleise wurden leicht verschoben, um die Lücke zu schließen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:188
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:274
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:188
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:275
msgid "You can see these slight mis-alignments.\n"
msgstr "Sie können die kleinen Versätze sehen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:275
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:276
msgid "But they will have no effect when the layout is actually built.\n"
msgstr ""
"Aber diese werden keinen Einfluss haben, wenn die Anlage später gebaut "
"wird.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:196
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:353
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:278
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:196
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:353
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:279
msgid ""
"After working with Sectional track you might get to point where these mis-"
"alignments have accumulated and you wish to remove them.\n"
@@ -11829,43 +9910,44 @@ msgstr ""
"Nachdem Sie mit Festgleisen gearbeitet haben, haben sich diese Versätze "
"aufgebaut und Sie wollen diese entfernen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:279
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:280
msgid ""
-"You can remove these slight mis-alignments by tightening the tracks starting"
-" from a unconnected End-Point. Use Shift-Left-Click with the <Connect> "
+"You can remove these slight mis-alignments by tightening the tracks starting "
+"from a unconnected End-Point. Use Shift-Left-Click with the <Connect> "
"command.\n"
msgstr ""
-"Sie können diese kleinen Versätze durch Zusammenziehen der Gleise entfernen."
-" Beginnen Sie an einem nicht verbundenen Endpunkt durch Drücken der "
-"Umschalte-Taste beim Deücken des <Zusammenfügen> Knopfes.\n"
+"Sie können diese kleinen Versätze durch Zusammenziehen der Gleise entfernen. "
+"Beginnen Sie an einem nicht verbundenen Endpunkt durch gleichzeitiges "
+"Drücken der Umschalt-Taste beim Drücken der Schaltfläche <Zusammenfügen>.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:280
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:281
msgid "First use the <Split> command to disconnect the tracks.\n"
msgstr ""
"Zuerst benutzen Sie den <Trennen> Befehl um die Verbindung der Gleise zu "
"lösen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:363
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:282
-msgid "Then with the <Connect> command, Shift-Left-Click on the 2 End-Points.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:363
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:283
+msgid ""
+"Then with the <Connect> command, Shift-Left-Click on the 2 End-Points.\n"
msgstr ""
-"Dank ativieren Sie den <Verbinden> Befehl und Klicken bei gedrückter "
-"Umschaltetaste auf die beiden Endpunkte.\n"
+"Dank aktivieren Sie den <Verbinden> Befehl und Klicken bei gedrückter "
+"Umschalttaste auf die beiden Endpunkte.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:378
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn2.xtr:199
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:285
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:378
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:199
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:286
msgid "In example shows a simple figure-8 layout using Sectional track.\n"
-msgstr "In diesem Besipiel wird aus Festgleisen eine \"8\" gelegt.\n"
+msgstr "In diesem Beispiel wird aus Festgleisen eine \"8\" gelegt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:286
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:287
msgid ""
"You will notice that the tracks do not line up exactly in one location.\n"
msgstr ""
"Wie Sie sehen, sind die Gleise an einer Stelle nicht exakt ausgerichtet.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn2.xtr:211
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:288
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:211
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:289
msgid ""
"We can use the <Connect> command to move the connecting tracks slightly and "
"connect the 2 End-Points.\n"
@@ -11873,34 +9955,34 @@ msgstr ""
"Mit dem <Connect> Befehl können wir die zu verbindenden Gleise leicht "
"verschieben und die beiden Endpunkte verbinden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn2.xtr:224
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:290
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:291
msgid "The two End-Points are now aligned and connected.\n"
msgstr "Die beiden Endpunkte sind jetzt ausgerichtet und verbunden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn2.xtr:231
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:292
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:231
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:293
msgid "The connection was made by adding small gaps in other tracks.\n"
msgstr ""
"Die Verbindung wurde hergestellt, in dem kleine Lücken zwischen andere "
"Gleise eingefügt wurden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn2.xtr:238
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:7
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:295
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:238
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:296
msgid "There are several ways to create a Curved track.\n"
msgstr "Es gibt mehrere Möglichkeiten, ein gebogenes Gleis zu erstellen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:296
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:297
msgid ""
"You can choose which to use by clicking on the small button to the left of "
"<Curve> command button if the current Curve command is not the one you "
"want.\n"
msgstr ""
-"Sie können zwischen diesen wählen, in dem Sie auf den kleinen Knopf neben "
-"dem <Bogen> Knopf drücken.\n"
+"Sie können zwischen diesen wählen, in dem Sie auf die kleine Schaltfläche "
+"neben der <Bogen> Schaltfläche drücken.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:297
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:298
msgid ""
"The first is by clicking on the first End-Point and dragging in the "
"direction of the Curve.\n"
@@ -11908,31 +9990,30 @@ msgstr ""
"In der ersten Möglichkeit wird dieser durch Auswahl des ersten Endpunktes "
"und Ziehen in die Richtung des Bogen erstellt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:20
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:299
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:20
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:300
msgid ""
"You will see a straight track with a double ended Red arrow at the end.\n"
msgstr ""
-"Sie sehen ein gerades Gleis mit einem roten Pfeil mit zwei Spitzen am "
-"Ende.\n"
+"Sie sehen ein gerades Gleis mit einem roten Pfeil mit zwei Spitzen am Ende.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:300
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:301
msgid "Click and drag on one of the Red arrows to complete the Curve.\n"
msgstr ""
-"Klicken und ziehen Sie eine der roten Spitzem um den Bogen zu "
+"Klicken und ziehen Sie eine der roten Spitzen um den Bogen zu "
"vervollständigen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:39
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:302
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:303
msgid ""
"The next method is to click at one End-Point and drag to the center of the "
"Curve.\n"
msgstr ""
"Die nächste Methode ist das Klicken auf einen Endpunkt und das Ziehen zum "
-"Mittelpunkt der Kurzve.\n"
+"Mittelpunkt der Kurve.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:50
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:304
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:305
msgid ""
"Now you will see the double ended Red arrow connected to the center of the "
"Curve marked by a small circle.\n"
@@ -11941,14 +10022,14 @@ msgstr ""
"Mittelpunkt des Bogen verbunden ist. Dieser ist mit einem kleinen Kreis "
"markiert.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:306
msgid "As before, drag on one of the Red arrows to complete the Curve.\n"
msgstr ""
-"Wie schon vorher beenden Sie den Bogen, indem Sie an einer der Pfeilspitzemn"
-" ziehen.\n"
+"Wie schon vorher beenden Sie den Bogen, indem Sie an einer der Pfeilspitzen "
+"ziehen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:307
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:308
msgid ""
"The next method is similar to the last except that you drag first from the "
"center of the Curve to one End-Point.\n"
@@ -11956,15 +10037,14 @@ msgstr ""
"Die nächste Methode ist vergleichbar zur vorherigen, allerdings Ziehen Sie "
"zuerst vom Mittelpunkt zu einem Endpunkt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:80
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:309
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:310
msgid "Once again, drag on a Red arrow to complete the Curve.\n"
msgstr ""
-"Auch diesmal ziehen Sie an der roten Pfeilspitze um den Bogen zu "
-"vollenden.\n"
+"Auch diesmal ziehen Sie an der roten Pfeilspitze um den Bogen zu vollenden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:90
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:311
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:90
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:312
msgid ""
"The last method begins by drawing a line between the two End-Points of the "
"Curve. This forms the Chord of the Curve.\n"
@@ -11972,96 +10052,83 @@ msgstr ""
"Bei der letzten Methode beginnen Sie, indem Sie eine Linie zwischen den "
"beiden Endpunkten ziehen. Diese bildet die Sehne des Bogen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:108
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:313
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:108
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:314
msgid "Now drag on a Red arrow to complete the Curve.\n"
msgstr "Jetzt ziehen Sie an der roten Pfeilspitze um den Bogen zu erstellen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:118
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:112
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:316
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:118
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:317
msgid "This demo will construct a control panel for part of a bigger layout.\n"
msgstr ""
"In dieser Demo wird ein Steuerpult für einen Teil einer größeren Anlage "
"erstellt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:117
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:318
-msgid "For our control panel we will use Å’\" lines. \n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:319
+msgid "For our control panel we will use Œ\" lines. \n"
msgstr "Für unser Pult werden wir 1/2\" breite Linien benutzen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:319
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:320
msgid "Also, we will use a 1/8\" grid to lay out our controls.\n"
msgstr ""
"Außerdem werden wir ein 1/8\" Raster für die Ausrichtung der "
"Steuerungselemente benutzen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:320
-msgid "First, we will set up the Snap Grid for 1\" grid lines and 8 divisions.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:321
+msgid ""
+"First, we will set up the Snap Grid for 1\" grid lines and 8 divisions.\n"
msgstr ""
"Als erstes stellen wir das Fangraster auf 1\" Rasterlinien und 8 "
"Unterteilungen ein.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:132
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:322
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:323
msgid "Now, clear the layout and turn on the Snap Grid.\n"
msgstr "Jetzt löschen wir den Entwurf und schalten das Fangraster ein.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:147
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:324
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:147
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:325
msgid "First step: draw the lines representing the tracks.\n"
msgstr "Erster Schritte: zeichnen Sie die Linien, die die Gleise darstellen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:325
-msgid "We specify the line width in pixels when at 1:1 zoom.\n"
-msgstr "Wir geben die Linienbreite in Bildpunkten bei 1:1 Zoomfaktor an.\n"
-
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:326
-msgid ""
-"To create a 1/4\" line, divide the dots-per-inch (DPI) of your display by "
-"4.\n"
-msgstr ""
-"Um eine 1/4 Inch-breite Linie zu erstellen, teilen Sie die Punkte pro Zoll "
-"(DPI) Ihrer Anzeige durch 4.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:326
+msgid "We specify the line width in inches.\n"
+msgstr "Wir geben die Linienbreite in Zoll an.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:327
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:327
msgid ""
-"For MS-Windows the DPI is usually 98, so choose: 98/4 = 24 "
-"(approximately).\n"
-msgstr ""
-"Unter Windows ist die Auflösung normalerweise 98, also wählen wir 98 / 4 = "
-"ca. 24.\n"
-
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:328
-msgid "For Linux, the DPI is usually 72, so choose: 72/4 = 18.\n"
+"To create a 1/4\" line, enter 0.250 in the \"Straight Line Width\" box at "
+"the bottom of the window.\n"
msgstr ""
-"Unter Linux ist die Auflösung normalerweise 72, also wählen wir 72 / 4 = "
-"18.\n"
+"Um eine 1/4 Zoll Linie zu erstellen, muss 0.250 in das \"Linienbreite\"-"
+"Eingabefeld am unteren Bildschirmrand eingetragen werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:495
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:330
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:492
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:329
msgid ""
"Notice how the Snap Grid keeps the main line and siding track parallel and "
-"the connecting tracks and spur at a 45° angle.\n"
+"the connecting tracks and spur at a 45° angle.\n"
msgstr ""
"Beachten Sie, wie das Fangraster die Haupt- und die Nebenstrecke parallel "
"führt und die Verbindungen und das Abstellgleis auf einem 45° Winkel hält.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:503
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:332
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:500
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:331
msgid "Second step: add LEDs for the turnout position indicators.\n"
-msgstr "ZweiterSchritt: hinzufügen der LEDs für die Weichenanzeige.\n"
+msgstr "Zweiter Schritt: hinzufügen der LEDs für die Weichenanzeige.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:333
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:332
msgid "We will use T1 red and green LEDs.\n"
msgstr "Wir werden T1 rote und grüne LEDs benutzen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:334
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:333
msgid "We will zoom in to show positioning.\n"
msgstr "Wir zoomen rein, um die Positionierung zu zeigen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:513
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:336
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:510
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:335
msgid ""
"Notice that when we are in the correct position (on the 1/8\" grid), the "
"Marker lines on the bottom and left rulers will high-light the tick marks. "
@@ -12072,63 +10139,62 @@ msgstr ""
"Sobald beide Markierungen hervorgehoben sind, die LED durch Drücken der "
"Leertaste fixieren.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:558
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:338
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:555
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:337
msgid "Now we'll add push buttons to control the turnouts.\n"
msgstr "Jetzt fügen wir Drucktaster für die Steuerung der Weichen dazu.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:595
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:340
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:592
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:339
msgid "Let's add signals to our siding.\n"
-msgstr "Lassen Sie uns noch Signale an unserem Ausweichgleich aufstellen.\n"
+msgstr "Lassen Sie uns noch Signale an unserem Ausweichgleis aufstellen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:341
-msgid "The entrance to the siding will be protected by double headed signals.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:340
+msgid ""
+"The entrance to the siding will be protected by double headed signals.\n"
msgstr ""
-"Die Einfahrt in das Ausweichgleich wird durch ein doppeltes Signal "
-"geschützt\n"
+"Die Einfahrt in das Ausweichgleis wird durch ein doppeltes Signal geschützt\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:342
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:341
msgid "We'll select a signal from the HotBar and place it into position.\n"
msgstr ""
-"Wir wählen ein Signal aus der Auswahlleiste aus und bringen es in "
-"Position.\n"
+"Wir wählen ein Signal aus der Auswahlleiste aus und bringen es in Position.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:608
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:344
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:605
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:343
msgid ""
-"We rotate the signals by Shift-Right-Click and select 90° CW on the popup "
+"We rotate the signals by Shift-Right-Click and select 90° CW on the popup "
"menu. We can not show the popup menu in demo mode, but will simulate the "
"effect.\n"
msgstr ""
-"Wir rotieren die Signale durch Drücken und Festhalten der Umschalttaste bei"
-" gleichzeitigem Mausklick.Aus dem Menu wählen wir 90° gegen UZS aus. Im "
-"Demo-Mode kann das Menu nicht angezeigt werden, aber wir simulieren den "
-"Effekt.\n"
+"Wir rotieren die Signale durch Drücken und Festhalten der Umschalttaste bei "
+"gleichzeitigem Klicken mit der rechten Maustaste. Aus dem Menü wählen wir "
+"90° im UZS aus. Im Demo-Mode kann das Menü nicht angezeigt werden, aber wir "
+"simulieren den Effekt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:657
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:346
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:654
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:345
msgid "The exits from the siding will be protected by single headed signals.\n"
msgstr ""
-"Die Ausfahrt aus dem Ausweichgleich wird durch ein einfaches Signal "
+"Die Ausfahrt aus dem Ausweichgleis wird durch ein einfaches Signal "
"gesichert.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:711
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:348
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:708
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:347
msgid "Now for some touch-ups.\n"
msgstr "Nun noch ein paar kleinere Nachbesserungen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:349
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:348
msgid "Notice when the line meet at an angle there is a gap.\n"
msgstr ""
"Beachten Sie, dass am Berührungspunkt zwischen zwei Linien ein Spalt "
"existiert.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:350
-msgid "We will fill this gap with the Å’\" dot.\n"
-msgstr "Wir füllen diesen Spalt mit einem 1/2 Inch großen Punkt.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:349
+msgid "We will fill this gap with the Œ\" dot.\n"
+msgstr "Wir füllen diesen Spalt mit einem 1/2 Zoll großen Punkt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:351
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:350
msgid ""
"Note: Win95/Win98/WinME does not support drawing lines with flat end-caps, "
"but only with round end-caps.\n"
@@ -12136,12 +10202,12 @@ msgstr ""
"Note: Win95/Win98/WinME does not support drawing lines with flat end-caps, "
"but only with round end-caps.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:352
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:351
msgid "Users on those platforms will not see the gap.\n"
msgstr "Users on those platforms will not see the gap.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:734
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:354
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:731
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:353
msgid ""
"Add an arrow head to indicate the tracks that connect to the rest of the "
"layout.\n"
@@ -12149,29 +10215,29 @@ msgstr ""
"Mit einer Pfeilspitze werden die Gleise markiert, die mit dem Rest der "
"Anlage verbunden sind.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:355
-msgid "The second arrow will be flipped 180°\"\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:354
+msgid "The second arrow will be flipped 180°\"\n"
msgstr "Der zweite Pfeil wird um 180° umgedreht\"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:772
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:357
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:769
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:356
msgid "And add some labels.\n"
msgstr "Und fügen einige Beschriftungen hinzu.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:833
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:359
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:830
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:358
msgid ""
-"We want to print our control panel onto a 8Å“x11 page, but the control panel "
+"We want to print our control panel onto a 8Âœx11 page, but the control panel "
"is a bit too wide.\n"
msgstr ""
-"Wir würden das Steuerpult gerne auf Paiper mit der Größe 8\"x11\" drucken, "
+"Wir würden das Steuerpult gerne auf Papier mit der Größe 8\"x11\" drucken, "
"aber es ist zu breit.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:360
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:359
msgid "Lets tighten it up a bit.\n"
msgstr "Lassen Sie uns das ein bisschen enger zusammen packen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:361
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:360
msgid ""
"First turn the Snap Grid on again so any moves we make will keep objects on "
"the grid.\n"
@@ -12179,39 +10245,40 @@ msgstr ""
"Zuerst schalten Sie bitte das Fangraster wieder ein, damit die Objekte beim "
"Verschieben ausgerichtet bleiben.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:842
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:363
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:839
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:362
msgid "Lets move the spur track to the left 3/4\"\n"
-msgstr "Lassen Sie uns das Abstellgleis um ein 3/4 Inch nach links schieben.\n"
+msgstr "Lassen Sie uns das Abstellgleis um ein 3/4 Zoll nach links schieben.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:864
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:365
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:861
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:364
msgid "Now move the right side of the siding over.\n"
msgstr "Jetzt verschieben Sie die rechte Seite des Ausweichgleises.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:884
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:367
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:881
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:366
msgid "Now, adjust the ends of the mainline and siding tracks.\n"
-msgstr "Und passen nun die Enden des Hauptgleises und des Ausweichgleises an.\n"
+msgstr ""
+"Und passen nun die Enden des Hauptgleises und des Ausweichgleises an.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:904
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:369
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:901
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:368
msgid "And move the title over as well.\n"
-msgstr "Anschliessend noch den Titel verschieben.\n"
+msgstr "Anschließend noch den Titel verschieben.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:921
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:371
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:918
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:370
msgid "Now you can print it.\n"
msgstr "Jetzt können Sie das Ergebnis drucken.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:372
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:371
msgid "The cross-hairs on the LEDs and switch show the centers for drilling.\n"
msgstr ""
-"Fadenkreuze markieren die Mittelpunkte der LEDs und Schalter und ermöglichen"
-" so ein einfaches Bohren.\n"
+"Fadenkreuze markieren die Mittelpunkte der LEDs und Schalter und ermöglichen "
+"so ein einfaches Bohren.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdelund.xtr:33
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:374
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:33
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:373
msgid ""
"Pressing the <Delete> button lets you delete selected tracks from the "
"layout.\n"
@@ -12219,7 +10286,7 @@ msgstr ""
"Durch Drücken der <Entf>-Taste können Sie die ausgewählten Gleise vom Plan "
"löschen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:375
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:374
msgid ""
"First you select the tracks you want to delete, and then press the <Delete> "
"button.\n"
@@ -12227,42 +10294,42 @@ msgstr ""
"Zuerst wählen Sie die Gleise, die Sie löschen wollen und drücken dann "
"<Entf>.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdelund.xtr:47
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:377
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:376
msgid ""
"If you delete a track connected to an easement curve, then the easement "
"curve is deleted as well.\n"
msgstr ""
-"Wenn Sie ein Gleis löschen, das einen Übergangsbogen besitzt, so wird dieser"
-" Übergangsbogen ebenfalls gelöscht.\n"
+"Wenn Sie ein Gleis löschen, das einen Übergangsbogen besitzt, so wird dieser "
+"Übergangsbogen ebenfalls gelöscht.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdelund.xtr:57
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:379
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:378
msgid "You can use the <Undo> command to undelete tracks.\n"
msgstr ""
"Sie können den <Rückgängig>-Befehl nutzen, um ein versehentliches Löschen "
"rückgängig zu machen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdelund.xtr:67
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:381
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:67
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:380
msgid ""
"If you Left-Drag on the layout you can select all tracks within an area.\n"
msgstr ""
-"Durch Ziehen mit der Maus bei gedrückter linker Taste können Sie alle Gleise"
-" in einem Bereich markieren.\n"
+"Durch Ziehen mit der Maus bei gedrückter linker Taste können Sie alle Gleise "
+"in einem Bereich markieren.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:382
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:381
msgid ""
"Note, only tracks within the selected area are deleted. Since the easement "
"curve is connected to a deleted track, it is deleted as well.\n"
msgstr ""
"Beachten Sie, dass nur Gleise innerhalb des markierten Bereichs gelöscht "
-"werden. Da der Übergangsbogen mit einem gelöschten Gleis verbunden ist, wird"
-" dieser ebenfalls gelöscht.\n"
+"werden. Da der Übergangsbogen mit einem gelöschten Gleis verbunden ist, wird "
+"dieser ebenfalls gelöscht.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdelund.xtr:80
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:385
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:80
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:384
msgid ""
"The demo also simulates entering values and selecting options on various "
"dialogs.\n"
@@ -12270,16 +10337,16 @@ msgstr ""
"Die Demo simuliert die Eingabe von Werten und Auswahl von Optionen in "
"verschiedenen Dialogfenstern.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:386
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:385
msgid ""
"This is simulated by drawing a rectangle around the control when values are "
"entered or changed.\n"
msgstr ""
-"Dies wird simuliert, in dem ein Rechteck um das Eingabefeld gezeichnet wird,"
-" wenn Werte eingegeben oder geändert werden.\n"
+"Dies wird simuliert, in dem ein Rechteck um das Eingabefeld gezeichnet wird, "
+"wenn Werte eingegeben oder geändert werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:13
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:388
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:13
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:387
msgid ""
"Here we are going to make some changes to the Display dialog. Notice how "
"this is simulated.\n"
@@ -12287,37 +10354,37 @@ msgstr ""
"Hier machen wir Änderungen im Anzeige-Dialog. Beachten Sie, wie das "
"simuliert wird.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:389
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:388
msgid "First we are setting 'Draw Tunnel' to 'Normal'\n"
msgstr "Zuerst setzen wir 'Tunnel zeichnen' auf 'Normal'.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:21
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:391
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:390
msgid "Now we're changing 'Label Font Size' to '56'\n"
msgstr "Jetzt ändern wir 'Schriftartgröße' nach '56'.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:26
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:393
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:392
msgid "We'll change some other options\n"
msgstr "Wir werden einige andere Optionen ändern\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:38
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:395
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:394
msgid ""
-"This effect is only used in demonstration mode. During normal operation you"
-" will not see this.\n"
+"This effect is only used in demonstration mode. During normal operation you "
+"will not see this.\n"
msgstr ""
-"Dieser Effekt wird nur im Demonstrations-Modus benutzt. Während der normalen"
-" Benutzung werden Sie das nicht sehen.\n"
+"Dieser Effekt wird nur im Demonstrations-Modus benutzt. Während der normalen "
+"Benutzung werden Sie das nicht sehen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:45
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdimlin.xtr:117
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:398
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:45
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:397
msgid "Dimension Lines are used to mark the distances between two points.\n"
msgstr ""
"Maßlinien werden benutzt, um den Abstand zwischen zwei Punkten zu zeigen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:399
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:398
msgid ""
"Here we will create a Dimension Line to show the separation between two "
"tracks.\n"
@@ -12325,17 +10392,17 @@ msgstr ""
"Hier erstellen wir eine Maßlinie, um den Abstand zwischen zwei parallelen "
"Gleisen zu zeigen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdimlin.xtr:132
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:401
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:400
msgid ""
"We might also want to measure the distance between two structures. In this "
"case we will use a larger dimension line.\n"
msgstr ""
-"Möglicherweise wollen wir auch den Abstand zwischen zwei Gebäuden "
-"bestimmen.In diesem Fall nutzen wir eine größere Maßlinie.\n"
+"Möglicherweise wollen wir auch den Abstand zwischen zwei Gebäuden bestimmen."
+"In diesem Fall nutzen wir eine größere Maßlinie.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdimlin.xtr:144
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:403
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:402
msgid ""
"We can use the <Describe> command to change the position of the Dimension "
"Line and the size of the numbers.\n"
@@ -12343,43 +10410,43 @@ msgstr ""
"Der <Beschreiben> Befehl kann genutzt werden, um die Position der Maßlinie "
"und die Größe der Zahlen zu ändern.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdimlin.xtr:162
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:406
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:162
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:405
msgid ""
"This example will show the effect of using easements while joining tracks.\n"
msgstr ""
-"In diesem Beispiel wird die Wirkung der Übergangsbögen während des Verbinden"
-" von Gleisen gezeigt.\n"
+"In diesem Beispiel wird die Wirkung der Übergangsbögen während des Verbinden "
+"von Gleisen gezeigt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:407
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:406
msgid "First, we will enable Cornu Easements and select Join\n"
msgstr "Zuerst schalten wir Übergangsbögen an und wählen Verbinden aus.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:28
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:409
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:408
msgid "First select one end of the track\n"
msgstr "Zuerst wird ein Ende des Gleises ausgewählt\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:39
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:411
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:410
msgid "Now the end of different track\n"
msgstr "Und jetzt das Ende eine anderen Gleises\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:49
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:413
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:412
msgid "You can reposition the ends by dragging them \n"
msgstr "Sie können die Enden durch Ziehen verschieben \n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:65
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:415
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:414
msgid "When you are happy, Hit Enter or Space, if not use Esc\n"
msgstr ""
"Wenn Sie zufrieden sind, drücken Sie die Eingabetaste oder die Leertaste, "
"wenn Sie nicht Esc\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:73
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:417
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:416
msgid ""
"The Curve is made up of Beziers parts that smooth the shape the best way it "
"can be in the space available\n"
@@ -12387,42 +10454,42 @@ msgstr ""
"Die Kurve besteht aus Beziers-Teilen, die die Form auf die beste Weise im "
"verfügbaren Raum glätten.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:87
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:419
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:87
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:418
msgid "Now, we'll show traditional easements instead.\n"
msgstr "Nun werden wir stattdessen traditionelle Übergangsbögen zeigen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:142
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:421
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:142
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:420
msgid ""
-"We've selected sharp easements. The minimum radius curve we can use will be"
-" 9.75\"\n"
+"We've selected sharp easements. The minimum radius curve we can use will be "
+"9.75\"\n"
msgstr ""
"Wir haben enge Übergangsbögen ausgewählt. Der Mindestradius, den wir "
-"benutzen können, beträt 9,75\".\n"
+"benutzen können, beträgt 9,75\".\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:422
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:421
msgid "Notice the label on the Easement button has changed to 'Sharp'.\n"
msgstr ""
-"Beachten Sie, dass die Beschriftung des Knopfes <Ãœbergangsbogen> auf 'Sharp'"
-" geändert wurde.\n"
+"Beachten Sie, dass die Beschriftung der Schaltfläche <Übergangsbogen> auf "
+"'Sharp' geändert wurde.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:157
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:424
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:157
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:423
msgid ""
-"Note the connecting curve does not quite meet the straight tracks. This the"
-" 'Offset'.\n"
+"Note the connecting curve does not quite meet the straight tracks. This the "
+"'Offset'.\n"
msgstr ""
-"Beachten Sie. dass das Verbindungsgleis das gerade Gleis nicht genau trifft."
-" Das ist der 'Absatz'.\n"
+"Beachten Sie. dass das Verbindungsgleis das gerade Gleis nicht genau trifft. "
+"Das ist der 'Absatz'.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:165
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:426
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:425
msgid "Here the connecting curve is too small.\n"
msgstr "Jetzt ist der Verbindungsradius zu klein.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:175
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:428
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:175
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:427
msgid ""
"The connecting curve is made of three tracks, the curve and two easement "
"segments on each end.\n"
@@ -12430,8 +10497,8 @@ msgstr ""
"Die verbindende Kurve besteht aus drei Gleisen, der Kurve und den "
"Übergangsbögen an jedem Ende.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:112
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:430
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:429
msgid ""
"We have designed part of the layout with a siding, 2 branches and a spiral "
"loop. We want to set elevations.\n"
@@ -12439,68 +10506,69 @@ msgstr ""
"Wir haben einen Teil eines Gleisplan mit Nebengleis, 2 Abzweigen und einer "
"Gleiswendel entworfen. Jetzt wollen wir die Höhen festlegen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:431
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:430
msgid "Note: make sure you set endpoint elevations on the Display dialog.\n"
msgstr ""
"Hinweis: Vergewissern Sie sich, dass Sie die Endpunkterhebungen im "
"Dialogfeld Anzeige einstellen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:122
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:433
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:122
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:432
msgid "First we will set elevations at the end of the branches.\n"
msgstr "Zuerst legen wir die Höhen am Ende der Abzweige fest.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:132
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:435
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:434
msgid "We'll select the end of the top branch and set the Elevation to 4\"\n"
msgstr ""
"Wir wählen das Ende des oberen Abzweigs und legen die Höhe auf 4\" fest.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:436
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:435
msgid "First, click on the End-Point.\n"
msgstr "Zuerst klicken Sie auf den Endpunkt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:142
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:438
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:142
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:437
msgid "Next, pick Defined on the Elevation dialog Radio box.\n"
msgstr "Als nächstes wählen Sie 'Fest' im Dialogfenster für das Höhenmaß.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:148
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:440
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:439
msgid "And set the Elevation to 4.\n"
msgstr "Und setzen die Höhe auf 4.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:156
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:442
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:441
msgid "Now, select the other branch and set it's elevation to 2\"\n"
-msgstr "Jetzt wählen Sie den anderen Abzweig und legen seine Höhe auf 2\" fest.\n"
+msgstr ""
+"Jetzt wählen Sie den anderen Abzweig und legen seine Höhe auf 2\" fest.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:170
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:444
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:443
msgid "We can move the Elevation label by using Ctrl-Left-Drag\n"
msgstr ""
"Wir können die Höhenbeschriftung durch Ziehen mit der Maus bei gedrückter "
-"Strg+linker Mausaste verschieben.\n"
+"Strg+linker Maustaste verschieben.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:182
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:446
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:445
msgid "Now, we set the Elevation at one end of the Siding.\n"
msgstr "Jetzt legen wir die Höhe an einem Ende des Nebengleises fest.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:209
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:215
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:449
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:209
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:215
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:448
msgid "We want to find the elevations where the 2 tracks cross.\n"
msgstr ""
"Wir wollen die Höhen der Gleise, an der Stelle ermitteln, an der diese sich "
"kreuzen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:224
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:451
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:450
msgid "We picked an End-Point on the upper track.\n"
msgstr "Wir haben einen Endpunkt am oberen Gleis ausgewählt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:452
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:451
msgid ""
"XTrackCAD has computed the Elevation (2.33\") at this point based on the "
"Elevation at the siding and a combination of the of the first Elevations.\n"
@@ -12508,7 +10576,7 @@ msgstr ""
"XTrackCAD hat die Höhe (2,33\") an dieser Stelle auf Grundlage der Höhe des "
"Nebengleises in Verbindung mit den ersten Höhenangaben ermittelt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:453
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:452
msgid ""
"We create a Computed Elevation here that will be automatically adjusted "
"whenever the other Elevations are changed.\n"
@@ -12516,29 +10584,29 @@ msgstr ""
"Hier erstellen wir eine 'Berechnete' Höhe, die automatisch angepasst wird, "
"wenn sich andere Höhenangaben ändern.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:243
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:455
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:454
msgid ""
-"The Compute Elevation is based on Elevations at end of both of the branches."
-" We may want to base the Elevation on only one branch. For example if one "
-"branch was the mainline we don't want the other branch affecting this "
-"Computed Elevation.\n"
+"The Compute Elevation is based on Elevations at end of both of the "
+"branches. We may want to base the Elevation on only one branch. For "
+"example if one branch was the mainline we don't want the other branch "
+"affecting this Computed Elevation.\n"
msgstr ""
"Die berechnete Höhe basiert auf den Höhen an den Endpunkten der beiden "
"Abzweige. Wir wollen aber möglicherweise nur die Höhe eines Abzweigs "
-"benutzen. Das kann sinnvoll sein, wenn der Abzweig das Hauptgleis bildet und"
-" wir nicht wollen dass das andere Gleis die Höhenberechnung beeinflusst.\n"
+"benutzen. Das kann sinnvoll sein, wenn der Abzweig das Hauptgleis bildet und "
+"wir nicht wollen dass das andere Gleis die Höhenberechnung beeinflusst.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:455
msgid "We do this by Ignoring the branch we don't want.\n"
msgstr "Wir erreichen das, indem wir einen Abzweig ignorieren.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:457
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:456
msgid "We'll ignore the lower branch.\n"
msgstr "Wir werden den unteren Abzweig ignorieren.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:258
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:459
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:458
msgid ""
"Notice at the endpoint where the tracks cross, we see the elevation has "
"changed from 2.33 to 2.64.\n"
@@ -12546,37 +10614,37 @@ msgstr ""
"Beachten Sie dass sich am Endpunkt,an dem sich die Gleise kreuzen, die Höhe "
"von 2,33 auf 2,64 geändert hat.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:264
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:461
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:264
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:460
msgid "Now we want to know the elevation of the lower track.\n"
msgstr "Jetzt wollen wir die Höhe des unteren Gleises ermitteln.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:274
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:463
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:274
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:462
msgid "There is no endpoint on the lower track here.\n"
msgstr "Es gibt hier keinen Endpunkt des unteren Gleises.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:463
msgid ""
"Use Shift-Left-Click to Split the track and create an endpoint we can use "
"for an elevation,\n"
msgstr ""
-"Durch Klicken mit der Maus bei gedrückter Umschalttaste wird das Gleis "
-"getrennt und ein Endpunkt, den wir für die Festlegung der Höhe nutzen "
+"Durch Klicken mit der linken Maustaste bei gedrückter Umschalttaste wird das "
+"Gleis getrennt und ein Endpunkt, den wir für die Festlegung der Höhe nutzen "
"können, eingefügt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:287
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:466
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:287
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:465
msgid "and create another Computed Elevation point.\n"
msgstr "Wir erstellen einen neuen berechneten Höhenpunkt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:302
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:468
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:467
msgid "Now we want to label the grade on this section of track.\n"
msgstr "Jetzt zeigen wir die Steigung auf diesem Gleisabschnitt an.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:311
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:470
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:311
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:469
msgid ""
"Again, since there is no endpoint nearby, we split the track to create an "
"endpoint we can use,\n"
@@ -12584,20 +10652,20 @@ msgstr ""
"Auch hier ist wieder kein Endpunkt in der Nähe, daher trennen wir das Gleis "
"um einen nutzbaren Endpunkt zu erhalten.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:321
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:472
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:321
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:471
msgid "and create a grade marker.\n"
msgstr "und erstellen wir eine Steigungsbeschriftung.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:335
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:474
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:335
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:473
msgid "Note the marker has an arrow pointing in the upwards direction.\n"
msgstr ""
"Beachten Sie, dass die Markierung einen Pfeil besitzt, der in Richtung des "
"Anstiegs zeigt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:344
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:476
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:344
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:475
msgid ""
"The last thing we want to do is to create a Station label that we'll use in "
"the <Profile> command.\n"
@@ -12605,101 +10673,101 @@ msgstr ""
"Als letzten Schritt erstellen wir noch eine Beschriftung für einen Bahnhof, "
"den wir im <Höhenprofil> Befehl benutzen werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:358
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:478
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:358
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:477
msgid "Now, set the Elevation to Station and enter the its name.\n"
msgstr ""
"Jetzt setzen Sie die Höhenmarkierung auf 'Bahnhof' und geben den Namen "
"ein.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:376
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:31
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:481
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:376
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:480
msgid ""
-"XTrackCAD can help find tracks that are curved too sharply or are too steep."
-" These tracks are Exception tracks and are drawn in the Exception track "
-"color.\n"
+"XTrackCAD can help find tracks that are curved too sharply or are too "
+"steep. These tracks are Exception tracks and are drawn in the Exception "
+"track color.\n"
msgstr ""
-"XTrackCAD kann Ihnen helfen, Gleise zu finden, die einen zu engn Radius "
+"XTrackCAD kann Ihnen helfen, Gleise zu finden, die einen zu engen Radius "
"bilden oder die zu steil ansteigen. Diese Gleise sind Ausnahmegleise und "
"werden in der Ausnahmegleisfarbe dargestellt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:482
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:481
msgid ""
-"In this example we have a curved track with radius of 9\" and a straight "
-"track with a grade of 3.8%.\n"
+"In this example we have a curved track with radius of 9 inches and a "
+"straight track with a grade of 3.8 percent.\n"
msgstr ""
-"In diesem Besipiel haben wir eine Kurve mit einem Radius von 9,5\" und ein "
-"gerades Gleis auf einer 3.8% Steigung.\n"
+"In diesem Beispiel haben wir eine Kurve mit einem Radius von 9,5\" und ein "
+"gerades Gleis auf einer 3.8 Prozent Steigung.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:483
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:482
msgid " \n"
msgstr " \n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:39
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:485
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:484
msgid ""
-"The Layout dialog shows the Minimum Track Radius is 9\" and the Maximum "
-"Track Grade is 5%.\n"
+"The Layout dialog shows the Minimum Track Radius is 9 inches and the Maximum "
+"Track Grade is 5 percent.\n"
msgstr ""
"Im den Optionen für den Gleisplan sehen wir, dass der Mindestradius mit 9\" "
-"und die maximale Steigung mit 5% festgelegt sind.\n"
+"und die maximale Steigung mit 5 Prozent festgelegt sind.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:48
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:487
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:486
msgid ""
"If we make the curved track sharper it will be drawn in the Exception "
"color.\n"
msgstr ""
-"Verringern wir den Radius der Kurve, so wird das Gleis mit der Ausnahmefarbe"
-" dargestellt.\n"
+"Verringern wir den Radius der Kurve, so wird das Gleis mit der Ausnahmefarbe "
+"dargestellt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:61
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:489
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:61
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:488
msgid ""
-"If we make the straight track steeper it will also be drawn in the Exception"
-" color.\n"
+"If we make the straight track steeper it will also be drawn in the Exception "
+"color.\n"
msgstr ""
-"Vergrößern wir die Steigung des geraden Gleises, so wird das Gleis ebenfalls"
-" in der Ausnahmefarbe dargestellt.\n"
+"Vergrößern wir die Steigung des geraden Gleises, so wird das Gleis ebenfalls "
+"in der Ausnahmefarbe dargestellt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:78
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:491
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:78
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:490
msgid ""
"You can change the Exception color on the Colors dialog from the Options "
"menu.\n"
msgstr ""
-"Die Ausnahmefarbe kann im Farbdialogfenster des Optionen-Menus geändert "
+"Die Ausnahmefarbe kann im Farbdialogfenster des Optionen-Menüs geändert "
"werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:85
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:21
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:494
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:85
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:493
msgid ""
-"The unconnected endpoint of any track can also be extended with the <Modify>"
-" command using Right-Drag.\n"
+"The unconnected endpoint of any track can also be extended with the <Modify> "
+"command using Right-Drag.\n"
msgstr ""
"Die nicht verbundenen Endpunkte eines geraden oder eines gebogenen Gleise "
-"können mit dem Befehl 'Ändern ' udn Rechts-Ziehen der Maus verändert "
+"können mit dem Befehl 'Ändern ' und Rechts-Ziehen der Maus verändert "
"werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:26
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:496
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:495
msgid "Select the endoint and Right-Drag.\n"
msgstr "Endpunkt auswählen und mit rechter Maustaste ziehen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:34
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:498
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:497
msgid "The extending track can be straight...\n"
msgstr "Die Erweiterung kann gerade sein...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:44
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:500
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:44
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:499
msgid "... or curved.\n"
msgstr "...oder gebogen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:51
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:502
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:501
msgid ""
"If you extend a straight or curved flex track and enable Easements then an "
"Easement curve will be automatically generated when you extend the track.\n"
@@ -12707,96 +10775,97 @@ msgstr ""
"Wenn die Funktion Übergangsbogen aktiv ist, während Sie ein gerades oder "
"gebogenes Flexgleis verändern, so wird ein Übergangsbogen erstellt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:65
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:124
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:505
-msgid "The <Flip> command will create a mirror image of the selected objects.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:65
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:124
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:504
+msgid ""
+"The <Flip> command will create a mirror image of the selected objects.\n"
msgstr ""
"Der Befehl <Spiegeln> erzeugt ein Spiegelbild der ausgewählten Objekte.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:131
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:507
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:506
msgid "After selecting the object, drag a line which will form the mirror.\n"
msgstr ""
"Nach der Auswahl der Objekte, wird eine Linie gezogen die die Spiegelachse "
"bildet.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:140
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:509
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:140
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:508
msgid "The mirror line does not have to be vertical or horizontal.\n"
msgstr "Diese Spiegellinie muss nicht horizontal oder vertikal sein.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:149
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:511
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:149
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:510
msgid "You can also flip any number of objects.\n"
-msgstr "Sie können jede beliebige Anzahl von Objekten spiegelen.\n"
+msgstr "Sie können jede beliebige Anzahl von Objekten spiegeln.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:512
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:511
msgid "Watch what happens to the structure and turnout titles.\n"
msgstr ""
"Achten Sie darauf, was mit den Beschriftungen an Gebäuden und Weichen "
"geschieht.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:163
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:514
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:513
msgid ""
-"Note that the turnout title has been changed from the Medium Right to Medium"
-" Left. When turnouts are flipped, XTrackCAD will try to find a matching "
+"Note that the turnout title has been changed from the Medium Right to Medium "
+"Left. When turnouts are flipped, XTrackCAD will try to find a matching "
"turnout and if found will change the name.\n"
msgstr ""
"Beachten Sie auch, dass aus der mittleren Rechtsweiche eine mittlere "
"Linksweiche wurde. Werden Weichen gespiegelt, versucht XTrackCAD eine "
"passende Weiche zu finden und ersetzt den Namen, wenn dies gelingt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:170
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:516
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:515
msgid ""
-"Structures do not have Right and Left hand versions. Their title is changed"
-" to indicate that they were flipped.\n"
+"Structures do not have Right and Left hand versions. Their title is changed "
+"to indicate that they were flipped.\n"
msgstr ""
"Gebäude haben keine rechte oder linke Version. Der veränderte Titel zeigt, "
"dass diese gespiegelt wurden.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:517
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:516
msgid "You can use the <Describe> command to change their title.\n"
-msgstr "Mit dem <Beschreiben> Befehl kann der Tietel wieder geändert werden.\n"
+msgstr "Mit dem <Beschreiben> Befehl kann der Titel wieder geändert werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:187
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:21
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:520
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:187
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:519
msgid ""
-"The <Group> and <Ungroup> commands (on the Tools menu) are a powerful way to"
-" manipulate Turnout and Structure definitions.\n"
+"The <Group> and <Ungroup> commands (on the Tools menu) are a powerful way to "
+"manipulate Turnout and Structure definitions.\n"
msgstr ""
-"Die <Gruppieren> und <Gruppe auflösen> Befehle bilden einen leistungsfähigen"
-" Weg, Weichen- oder Gebäude-Definition zu verändern.\n"
+"Die <Gruppieren> und <Gruppe auflösen> Befehle bilden einen leistungsfähigen "
+"Weg, Weichen- oder Gebäude-Definition zu verändern.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:521
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:520
msgid "We'll start with a simple turnout and add a switch machine.\n"
msgstr ""
"Wir beginnen mit einer einfachen Weiche zu der wir einen Weichenantrieb "
"zufügen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:55
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:523
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:55
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:522
msgid ""
"Now that we have drawn a rough outline of a switch machine we will group it "
"with the turnout definition.\n"
msgstr ""
-"Nachdem wir jetzt den groben Umriß des Antriebs gezeichnet haben, gruppieren"
-" wir diesen mit der Weichen-Definition.\n"
+"Nachdem wir jetzt den groben Umriss des Antriebs gezeichnet haben, "
+"gruppieren wir diesen mit der Weichen-Definition.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:524
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:523
msgid "First we Select the objects in the new definition.\n"
msgstr "Zuerst wählen wir die Objekte in der neuen Definition aus.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:68
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:526
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:68
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:525
msgid "Now do the <Group> command.\n"
msgstr "Und wenden jetzt den <Gruppieren> Befehl an.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:75
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:528
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:527
msgid ""
"The <Group> command dialog shows the Title (Manufacturer, Description and "
"Part Number) of the new definition. This information is taken from the "
@@ -12806,8 +10875,8 @@ msgstr ""
"Beschreibung und Teilenummer) für die neue Definition an. Diese Information "
"kommt aus den ausgewählten Teilen der Gruppe.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:81
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:530
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:529
msgid ""
"The 'Replace with new group?' toggle will replace the Selected objects with "
"the new definition.\n"
@@ -12815,8 +10884,8 @@ msgstr ""
"Der 'Ersetzen durch neue Definition' Schalter ermöglicht es, die "
"ausgewählten Objekte durch die neuen Definition zu ersetzen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:88
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:532
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:88
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:531
msgid ""
"If we don't change the Title then the new definition will replace the "
"existing definition.\n"
@@ -12824,22 +10893,22 @@ msgstr ""
"Wenn wir den Titel nicht verändern, so ersetzt die neue Definition die "
"bereits vorhandene.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:533
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:532
msgid "We'll give this definition a new Description.\n"
msgstr "Wir geben der Gruppe eine neue Beschreibung.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:99
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:535
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:534
msgid "We're done with this definition. Press Ok.\n"
msgstr "Diese Definition ist fertig. Drücken Sie OK.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:106
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:537
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:106
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:536
msgid "You will see the updated image on the HotBar.\n"
msgstr "Sie sehen das aktualisierte Bild in der Auswahlleiste.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:113
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:539
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:113
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:538
msgid ""
"The <Ungroup> command replaces any Selected turnouts or structures with "
"their parts.\n"
@@ -12847,7 +10916,7 @@ msgstr ""
"Der Befehl zum Auflösen der Gruppe ersetzt gewählte Weichen oder Gebäude "
"durch ihre Teile.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:540
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:539
msgid ""
"Structures and non-track segements of turnouts are composed of Lines, "
"Circles and other shapes. In this turnout these are the two lines and the "
@@ -12856,7 +10925,7 @@ msgstr ""
"Gebäude und Weichen sind aus Linien, Kreisen und anderen Formen "
"zusammengesetzt. Zu dieser Weiche gehören zwei Linien und zwei Quadrate.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:541
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:540
msgid ""
"We will Ungroup this turnout and see how the individual parts can be "
"changed.\n"
@@ -12864,28 +10933,28 @@ msgstr ""
"Wir werden diese Weiche in ihre Teile zerlegen und sehen, wie die einzelnen "
"Teile verändert werden können.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:542
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:541
msgid "First Select the turnout and then Ungroup it.\n"
-msgstr "Zuerste wählen Sie die Weiche aus und lösen dann die Gruppierung auf.\n"
+msgstr "Zuerst wählen Sie die Weiche aus und lösen dann die Gruppierung auf.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:128
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:544
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:543
msgid "Notice that the Title now indicates the turnout is Ungrouped.\n"
msgstr ""
-"Beachten Sie, dass der Titel jetzt darauf hinweis, dass die Weiche aufgelöst"
-" ist.\n"
+"Beachten Sie, dass der Titel jetzt darauf Hinweis, dass die Weiche aufgelöst "
+"ist.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:545
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:544
msgid "Hit Escape to deselect everything.\n"
-msgstr "Durch Drücken von Escape wird die Auswhl aufgehoben.\n"
+msgstr "Durch Drücken von Esc wird die Auswahl aufgehoben.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:138
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:547
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:138
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:546
msgid "Now Select the lines and squares.\n"
msgstr "Jetzt wählen Sie die Linien und Quadrate aus.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:163
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:549
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:548
msgid ""
"We could modify these object or add new ones. For now we'll just delete "
"them.\n"
@@ -12893,57 +10962,59 @@ msgstr ""
"Wir können diese Objekt ändern oder neue hinzufügen.Diesmal werden wir sie "
"einfach löschen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:170
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:551
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:550
msgid "And move the Label out of the way.\n"
msgstr "Und die Beschriftung auf die Seite schieben.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:181
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:553
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:181
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:552
msgid "Notice that the turnout has been broken into three parts.\n"
msgstr "Beachten Sie, dass die Weiche in drei Teile zerfallen ist.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:203
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:555
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:203
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:554
msgid ""
"Two ends of the turnout, from the frog to the end of the diverging leg and "
"from the points to the left, are now straight track sections.\n"
msgstr ""
-"Zwei Endpunkte der Weiche, vom Herzstück zum Ende des abzweigenden Gleis und"
-" von den Weichenzungen nach links, sind jetzt gerade Abschnitte.\n"
+"Zwei Endpunkte der Weiche, vom Herzstück zum Ende des abzweigenden Gleis und "
+"von den Weichenzungen nach links, sind jetzt gerade Abschnitte.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:556
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:555
msgid ""
"The a turnout is made of a number of individual straight and curved track "
"segements. This turnout had four segments:\n"
msgstr ""
-"Eine Weiche besteht aus einer Anzahl von geraden und gebogenen Gleisstücken."
-" Diese Weiche hat vier Stücke:\n"
+"Eine Weiche besteht aus einer Anzahl von geraden und gebogenen Gleisstücken. "
+"Diese Weiche hat vier Stücke:\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:557
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:556
msgid " 1 a short straight segment to the left of the points\n"
msgstr " 1. ein kurzes gerades Stück, links von den Weichenzungen,\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:558
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:557
msgid " 2 a long straight segment to the right of the points\n"
msgstr " 2. ein langes gerades Stück, rechts von den Weichenzungen,\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:559
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:558
msgid " 3 a curved segment from the points to the frog\n"
-msgstr " 3. ein gebogenes Stück von den Weichenzungen bis zum Herzstück, und\n"
+msgstr ""
+" 3. ein gebogenes Stück von den Weichenzungen bis zum Herzstück, und\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:560
-msgid " 4 a straight segment from the frog to the end of the diverging leg.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:559
+msgid ""
+" 4 a straight segment from the frog to the end of the diverging leg.\n"
msgstr ""
" 4. ein gerades Stück vom Herzstück bis zum Ende des abzweigenden Gleis.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:561
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:560
msgid "The first and last segments have be converted to straight tracks.\n"
msgstr ""
"Der erste und der letzte Gleisabschnitt wurden in gerade Gleise "
"umgewandelt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:562
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:561
msgid ""
"The second and third segments form the the body of the turnout and can not "
"be ungrouped further.\n"
@@ -12951,7 +11022,7 @@ msgstr ""
"Der zweite und der dritte Gleisabschnitt bilden den Kern der Weiche und "
"können nicht weiter zerlegt werden.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:563
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:562
msgid ""
"You can later Group this turnout with the straight segments to recreate the "
"turnout definition. You can also add other track segments to turnout "
@@ -12961,57 +11032,57 @@ msgstr ""
"Definition wiederherzustellen. Sie können auch andere Gleisabschnitte zur "
"Weichendefinition zufügen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:247
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:565
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:247
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:564
msgid "Now, create a track and place the new turnout on it.\n"
msgstr "Jetzt erstellen Sie bitte ein Gleis und setzen die Weiche darauf.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:265
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:567
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:265
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:566
msgid "Now suppose we want to replace the black squares with green circles.\n"
msgstr ""
"Nehmen wir mal an, wir wollen die schwarzen Quadrate durch grüne Kreise "
"ersetzen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:568
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:567
msgid "First we Select the turnout.\n"
msgstr "Zuerst wählen wir die Weiche aus.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:277
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:570
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:277
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:569
msgid "And now Ungroup it (from the Tools Menu)\n"
msgstr ""
"Der ersten und der letzte Abschnitt wurden in gerade Gleise umgewandelt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:282
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:572
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:282
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:571
msgid ""
"Notice that the name has changed to indicate the turnout was Ungrouped.\n"
msgstr ""
"Beachten Sie, dass der Name geändert wurde, um anzuzeigen, dass die "
"Gruppierung der Weiche aufgelöst wurde.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:288
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:574
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:288
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:573
msgid ""
"Now, hit escape to deselect everything and then Select the 2 squares and "
"delete them.\n"
msgstr ""
-"Jetzt drücken Sie Escape umd die Auswahl zurückzusetzen. Dann wählen Sie die"
-" zwei Quadrate und löschen diese.\n"
+"Jetzt drücken Sie Esc um die Auswahl zurückzusetzen. Dann wählen Sie die "
+"zwei Quadrate und löschen diese.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:305
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:576
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:575
msgid "Now draw the green circles...\n"
msgstr "Jetzt zeichnen Sie die grünen Kreise...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:326
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:578
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:326
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:577
msgid "and Group the new definition.\n"
msgstr "und gruppieren die neue Definition.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:345
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:580
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:345
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:579
msgid ""
"Notice that the turnout in the HotBar is angled the same as the turnout on "
"the layout. Make sure your new definition is rotated the way you want it.\n"
@@ -13020,19 +11091,19 @@ msgstr ""
"auf der Anlage ist. Stellen Sie sicher, das die neuen Definitionen so "
"ausgerichtet sind, wie Sie es bevorzugen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:384
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:582
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:384
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:581
msgid "We can also create turnouts from simple straight and curved tracks.\n"
msgstr ""
"Wir können auch aus einfachen geraden und gebogenen Gleisen Weichen "
"erstellen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:583
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:582
msgid "We'll create two tracks that have a common endpoint.\n"
msgstr "Wir erzeugen zwei Gleise mit einem gemeinsamen Endpunkt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:395
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:585
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:395
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:584
msgid ""
"When we create the curve from the straight track endpoint we need to hold "
"down the <Shift> key to prevent XTrackCAD from trying to join the two "
@@ -13042,48 +11113,48 @@ msgstr ""
"wir die Umschalttaste gedrückt halten, um zu verhindern, dass XTrackCAD "
"versucht, die beiden Strecken zu verbinden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:413
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:587
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:413
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:586
msgid "At this point we can modify the tracks if necessary.\n"
msgstr ""
"Zu diesem Zeitpunkt können die Gleise verändern, sofern das notwendig ist.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:588
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:587
msgid "We will use the <Describe> command to change the tracks.\n"
msgstr ""
"Wir benutzen den Befehl <Beschreiben> um die Eigenschaften der Gleise zu "
"verändern.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:425
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:590
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:425
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:589
msgid "We'll make the Length 7.5\".\n"
msgstr "Wir setzen die Länge auf 7,5\".\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:591
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:590
msgid ""
-"If we change the Length, each End-Point will be moved to shorten the track."
-" We want to just move the Right End-Point. To control this, change the "
-"Lock to First which means the Left End-Point will be unchanged when we "
-"change the length (or angle) of the track.\n"
+"If we change the Length, each End-Point will be moved to shorten the track. "
+"We want to just move the Right End-Point. To control this, change the Lock "
+"to First which means the Left End-Point will be unchanged when we change the "
+"length (or angle) of the track.\n"
msgstr ""
-"Wenn wir die Länge verändern, wird jeder Endpunkt verschoben um das Gleis zu"
-" verkürzen. Wir wollen, dass nur der rechte Endpunkt bewegt wird. Um das zu "
-"ermöglichen, stellen Sie den Fixpunkt auf den ersten Endpunkt. Das bedeutet,"
-" dass der linke Endpunkt unverändert bleibt, wenn wir die Länge (oder den "
+"Wenn wir die Länge verändern, wird jeder Endpunkt verschoben um das Gleis zu "
+"verkürzen. Wir wollen, dass nur der rechte Endpunkt bewegt wird. Um das zu "
+"ermöglichen, stellen Sie den Fixpunkt auf den ersten Endpunkt. Das bedeutet, "
+"dass der linke Endpunkt unverändert bleibt, wenn wir die Länge (oder den "
"Winkel) des Gleises ändern.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:435
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:593
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:435
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:592
msgid "Now when change the Length only the Right End-Point will move.\n"
msgstr "Jetzt wird beim Ändern der Länge nur der rechte Endpunkt verschoben.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:446
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:595
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:446
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:594
msgid "Now let's look at the curved track.\n"
msgstr "Jetzt schauen wir uns das gebogene Gleis an.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:456
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:597
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:596
msgid ""
"Here the Left End-Point (which we don't want to move) is the Second End-"
"Point, so we'll make that the Lock.\n"
@@ -13091,79 +11162,81 @@ msgstr ""
"Hier ist der linke Endpunkt, den wir nicht verschieben wollen, der zweite "
"Endpunkt. Also legen wir diesen als Fixpunkt fest.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:464
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:599
-msgid "We want the curve to have a radius of 20\" and an angle of 17.5ᅵ.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:598
+msgid "We want the curve to have a radius of 20\" and an angle of 17.5°.\n"
msgstr ""
-"Wir wollen, dass der Bogen einen Radius von 20\" und einen Winkel von 17,5° "
-"hat.\n"
+"Wir wollen, dass der Bogen einen Radius von 20 Zoll und einen Winkel von "
+"17,5° hat.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:600
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:599
msgid "First change the Radius...\n"
msgstr "Zuerst ändern Sie den Radius...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:473
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:602
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:473
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:601
msgid "and the the Angular Length.\n"
msgstr "und den Winkelabstand.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:481
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:604
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:481
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:603
msgid "Now Select both tracks...\n"
msgstr "Jetzt bitte beide Gleise auswählen...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:497
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:606
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:497
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:605
msgid "and Group them.\n"
msgstr "und gruppieren sie.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:508
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:608
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:508
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:607
msgid ""
"If the two tracks have a common End-Point then they will form a Turnout and "
"can be switched with the <Train> command. Otherwise they will just be two "
"track segments grouped together.\n"
msgstr ""
"Wenn die beiden Gleise einen gemeinsamen Endpunkt haben, werden Sie eine "
-"Weiche bilden, dieim Betriebsmodus gesteuert werden kann. Andernfalls werden"
-" es einfach zwei gruppierte Gleise sein.\n"
+"Weiche bilden, die im Betriebsmodus gesteuert werden kann. Andernfalls "
+"werden es einfach zwei gruppierte Gleise sein.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:515
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:610
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:515
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:609
msgid ""
"We have created a left hand turnout and we also want a right hand version.\n"
msgstr ""
"Wir haben eine links abzweigende Weiche erstellt und wollen auch die rechts "
"abzweigende Form.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:611
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:610
msgid "We'll use the <Flip> command.\n"
msgstr "Wir verwenden den Befehl <Spiegeln>\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:528
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:613
-msgid "Drag a horizontal line that will be the mirror for the <Flip> command.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:528
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:612
+msgid ""
+"Drag a horizontal line that will be the mirror for the <Flip> command.\n"
msgstr ""
"Ziehen Sie als Spiegelstrich für den Spiegeln Befehl eine horizontale "
"Linie.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:538
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:615
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:538
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:614
msgid "Notice the title has changed to Flipped Left.\n"
-msgstr "Beachten Sie, dass der Titel auf \"Links gespiegelt\" geändert wurde.\n"
+msgstr ""
+"Beachten Sie, dass der Titel auf \"Links gespiegelt\" geändert wurde.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:616
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:615
msgid "Now Group the turnout.\n"
msgstr "Jetzt gruppieren Sie die Weiche\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:547
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:618
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:547
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:617
msgid "We'll change the Title and Part No for the new defintion.\n"
msgstr ""
"Wir werden den Titel und die Teilnummer für die neue Definition ändern.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:560
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:620
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:560
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:619
msgid ""
"To Remove the definitions, use the Custom Management dialog on the Tools "
"menu.\n"
@@ -13171,66 +11244,65 @@ msgstr ""
"Um Definitionen zu löschen benutzen Sie die \"Anpassungs Verwaltung\" im "
"\"Verwalten\" Menü.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:565
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:622
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:565
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:621
msgid "Select the definitions you added and Delete them.\n"
-msgstr "Wählen Sie die zugefügten Definitionen aus udn löschen diese.\n"
+msgstr "Wählen Sie die zugefügten Definitionen aus und löschen diese.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:578
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:625
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:578
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:624
msgid ""
"Now we will create a helix in the corner of the layout connected to 2 "
"tracks.\n"
msgstr ""
-"Jetzt erstellen wir in der Ecke der Anlage eine Gleiswendel, die zwei Gleise"
-" verbindet.\n"
+"Jetzt erstellen wir in der Ecke der Anlage eine Gleiswendel, die zwei Gleise "
+"verbindet.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:28
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:627
-#, c-format
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:626
msgid ""
-"We will be creating a helix with a Elevation Difference of 12\", Grade of "
-"1.5% and limit the Vertical Separation to at least 2\".\n"
+"We will be creating a helix with a Elevation Difference of 12 inches, Grade "
+"of 1.5 percent and limit the Vertical Separation to at least 2 inches.\n"
msgstr ""
"Wir werden eine Gleiswendel mit einem Höhenunterschied von 12\", einer "
-"Steigung von 1,5% erzeugen und den vertikale Abstand auf mindestens 2\" "
-"begrenzen.\n"
+"Steigung von 1,5 Prozent erzeugen und den vertikale Abstand auf mindestens "
+"2\" festlegen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:34
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:629
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:628
msgid "First set the Elevation Difference to 12\"\n"
msgstr "Als erstes den Höhenunterschied auf 12\" setzen\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:43
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:631
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:43
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:630
msgid "Next set the Vertical Separation to 2\"\n"
msgstr "Als nächstes wird der vertikale Abstand auf 2\" gesetzt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:632
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:631
msgid "Notice how this causes the number of Turns to be set to 6\n"
msgstr "Beachten Sie, dass hierfür 6 Windungen benötigt werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:52
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:634
-msgid "Next set the Grade to 1.5%\n"
-msgstr "Jetzt setzen die die Steigung auf 1,5%\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:52
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:633
+msgid "Next set the Grade to 1.5 percent\n"
+msgstr "Jetzt setzen die die Steigung auf 1,5 Prozent\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:635
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:634
msgid "Notice how this causes the Radius to change.\n"
-msgstr "Beachten Sie wie dadruch der Radius verändert wurde.\n"
+msgstr "Beachten Sie wie dadurch der Radius verändert wurde.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:60
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:637
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:60
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:636
msgid ""
-"Setting these values changes the Radius to 21.2\" and the number of Turns to"
-" 6.\n"
+"Setting these values changes the Radius to 21.2\" and the number of Turns to "
+"6.\n"
msgstr ""
"Durch Setzen dieser Werte wird der Radius auf 21,2\" und die Anzahl der "
"Windungen auf 6 geändert.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:66
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:639
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:66
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:638
msgid ""
"Now we specify the Angular Separation between the enterance and exit to the "
"helix.\n"
@@ -13238,36 +11310,36 @@ msgstr ""
"Jetzt ändern wir den Winkel zwischen eingehendem und abgehendem Gleis der "
"Wendel.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:640
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:639
msgid "Note: this will decrease the Radius slightly.\n"
msgstr "Beachten Sie, dass dadurch der Radius geringfügig kleiner wurde.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:76
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:642
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:76
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:641
msgid "Next we can fine tune the helix by decreasing the Radius to 15\".\n"
msgstr ""
"Als nächstes können wir die Wendel durch Ändern des Radius auf 15\" "
"optimieren.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:643
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:642
msgid "Note the change to the Grade.\n"
msgstr "Beachten Sie die Änderung der Steigung.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:85
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:645
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:85
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:644
msgid ""
-"Lastly change the Vertical Separation to 2.5\". The number of Turns will "
-"change to 4 and the grade increase to almost 3%.\n"
+"Lastly change the Vertical Separation to 2.5 inches. The number of Turns "
+"will change to 4 and the grade increase to almost 3 percent.\n"
msgstr ""
"Zum Schluss ändern die Differenz zwischen den Windungen auf 2,5\". Die "
"Anzahl der Windungen wird auf 4 geändert und die Steigung vergrößert sich "
-"auf beinahe 3%.\n"
+"auf beinahe 3 Prozent.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:646
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:645
msgid ""
"Note: the Vertical Separation will be increased. This value is the "
-"Elevation Difference (12.0) divided by the total number of turns. The total"
-" number of turns is 4.25: 4 whole Turns plus a quarter turn for the Angular "
+"Elevation Difference (12.0) divided by the total number of turns. The total "
+"number of turns is 4.25: 4 whole Turns plus a quarter turn for the Angular "
"Separation.\n"
msgstr ""
"Beachten Sie dass die Windungsdifferenz sich vergrößert. Dies ist der "
@@ -13275,18 +11347,17 @@ msgstr ""
"4,25 Windungen: 4 ganze Windungen und eine viertel Umdrehung für den Winkel "
"zwischen den Zugängen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:94
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:99
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:649
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:94
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:648
msgid ""
-"Now that the helix parameters are set we can place the helix on the "
-"layout.\n"
+"Now that the helix parameters are set we can place the helix on the layout.\n"
msgstr ""
"Nachdem die Eigenschaften für die Gleiswendel bestimmt sind, setzen wir "
"diese auf die Anlage.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:112
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:651
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:650
msgid ""
"Next, join the 2 straight tracks to the helix in the same way we join to a "
"circle.\n"
@@ -13294,8 +11365,8 @@ msgstr ""
"Als nächstes verbinden Sie die zwei geraden Gleise mit der Wendel genauso "
"wir Sie Gleise mit einem Kreis verbinden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:145
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:653
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:145
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:652
msgid ""
"Notice that the length has increased because we have more than 4 turns in "
"the helix. It is closer to 4.25 turns.\n"
@@ -13303,17 +11374,17 @@ msgstr ""
"Beachten Sie, dass sich die Länge vergrößert hat, da wir mehr als vier "
"Windungen in der Wendel haben. Es sind nahe an 4,25 Umdrehungen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:155
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:655
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:155
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:654
msgid ""
"Next, we assign elevations to the 2 End-Points of the helix. This will "
"determine the grade and separation between the helix coils.\n"
msgstr ""
"Als nächstes legen wir die Höhen der beiden Endpunkt der Wendel fest. "
-"Dadurch werden die Steigung und derAbstand zwischen den Windungen "
+"Dadurch werden die Steigung und der Abstand zwischen den Windungen "
"festgelegt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:656
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:655
msgid ""
"Note: we could set the elevations anywhere along the connecting tracks "
"instead. XTrackCAD treats a helix as a single length of track for "
@@ -13323,35 +11394,35 @@ msgstr ""
"festlegen können. XTrackCAD behandelt bei den Höhen eine Wendel als ein "
"durchgängiges Stück Gleis.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:176
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:658
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:176
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:657
msgid ""
-"We have set the elevations to 1\" and 13\" to produce a grade of 3.0% with "
-"2.8\" between coils.\n"
+"We have set the elevations to 1 inch and 13 inches to produce a grade of 3.0 "
+"percent with 2.8 inches between coils.\n"
msgstr ""
-"Wir haben die Höhen auf 1\" und 13\" gesetzt um eine Steigung von 3% mit "
-"2,8\" zwischen den Windungen zu erzeugen.\n"
+"Wir haben die Höhen auf 1\" und 13\" gesetzt um eine Steigung von 3 Prozent "
+"mit 2,8\" zwischen den Windungen zu erzeugen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:659
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:658
msgid ""
"You can use the <Describe> command to change the number of Turns or the "
"Elevations at either end of the Helix. This will affect the Grade and "
"Vertical Separation.\n"
msgstr ""
-"Sie können den Eigenschaften Befehl benutzen, um die Anzah der Windungen "
+"Sie können den Eigenschaften Befehl benutzen, um die Anzahl der Windungen "
"oder die Höhe an den Enden der Wendel zu ändern. Dadurch ändern sich die "
"Steigung und der Abstand.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:184
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:661
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:660
msgid "The helix description can be moved by the <Move Label> command.\n"
msgstr ""
"Mit dem Befehl <Verschiebe Beschriftung> kann die Beschriftung der Wendel "
"verschoben werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:194
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:664
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:663
msgid ""
"In addition to using the turnout definitions you can create 'Hand Laid "
"Turnout'.\n"
@@ -13359,98 +11430,98 @@ msgstr ""
"Zusätzlich zu den Weichendefinitionen können Sie auch Selbstbauweichen "
"erstellen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:665
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:664
msgid "This is two step process:\n"
msgstr "Das ist ein zweistufiger Prozess.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:23
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:667
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:666
msgid "1 - click on the frog and drag away to set the frog angle\n"
msgstr ""
-"1. klicken Sie auf das Herzstück und setzen Sie durch ziehen mit gedrücktem "
-"Mausknopf den richtigen Winkel.\n"
+"1. klicken Sie auf das Herzstück und setzen Sie durch Ziehen mit gedrücktem "
+"linken Mausknopf den richtigen Winkel.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:29
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:669
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:29
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:668
msgid ""
" Hint: the further you drag from the frog, the more accurate the angle.\n"
msgstr ""
-" Hinweis: Je weiter weg Sie vom Herzstück ziehen, um so genauer lässt sich"
-" der Winkel einstellen.\n"
+" Hinweis: Je weiter weg Sie vom Herzstück ziehen, um so genauer lässt sich "
+"der Winkel einstellen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:34
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:671
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:670
msgid "2 - click and drag to set the position of the points\n"
msgstr "2. Klicken und ziehen Sie um die Position der Zungen festzulegen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:42
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:673
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:42
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:672
msgid "We can create Hand Laid Turnouts on curved tracks.\n"
msgstr "Wir können Selbstbauweichen auch auf gebogenen Gleisen erstellen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:58
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:675
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:58
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:674
msgid "A Hand Laid Turnout is composed of several parts.\n"
msgstr "Eine Selbstbauweiche besteht aus mehreren Teilen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:67
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:677
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:67
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:676
msgid "The actual Turnout is a short portion at the points.\n"
msgstr "Die eigentliche Weiche ist ein kleines Stück an den Weichenzungen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:77
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:679
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:77
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:678
msgid "The other parts are various straight and curved segments.\n"
msgstr "Die anderen Teile sind verschiedene gerade und gebogene Teilstücke.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:81
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:681
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:680
msgid "The new curved turnout is also composed of several segments.\n"
msgstr "Die neue Bogenweiche besteht ebenfalls aus mehreren Abschnitten.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:107
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:7
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:684
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:107
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:683
msgid "Welcome to the XTrackCAD demonstration.\n"
msgstr "Willkommen bei der XTrackCAD Demonstration.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:685
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:684
msgid ""
-"This will show some the features of XTrackCAD in an automated presentation."
-" This window contains a number of controls and a message area (which I hope"
-" you are reading now). \n"
+"This will show some the features of XTrackCAD in an automated presentation. "
+"This window contains a number of controls and a message area (which I hope "
+"you are reading now). \n"
msgstr ""
"Diese wird Ihnen einige Funktionen von XTrackCAD in einer automatischen "
"Präsentation zeigen. Dieses Fenster enthält einige Steuerungselements und "
"einen Nachrichtenbereich, den Sie gerade lesen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:686
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:685
msgid "The controls are:\n"
msgstr "Die Steuerungselemente sind:\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:687
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:686
msgid "Step - advances to the next step of the demo.\n"
msgstr "Einzelschritt - weiter zum nächsten Schritt in der Demo.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:688
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:687
msgid "Next - skips ahead to the next demo.\n"
msgstr "Nächster - springt zur nächsten Demo.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:689
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:688
msgid "Quit - exits the demo and returns to XTrackCAD.\n"
msgstr "Beenden - verlässt die Demo und kehrt zu XTrackCAD zurück.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:690
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:689
msgid "Speed - controls the speed of the demo.\n"
msgstr "Geschwindigkeit - steuert die Geschwindigkeit der Demo.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:691
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:690
msgid "Click Step now for the next message.\n"
msgstr ""
"Klicken Sie jetzt auf Einzelschritt um zur nächsten Nachricht zu gelangen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:23
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:693
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:692
msgid ""
"If this is the first time you have used the demo you may want to rearrange "
"the windows so the demo window does not obscure the main window.\n"
@@ -13459,7 +11530,7 @@ msgstr ""
"Fensterpositionen festlegen. Achten Sie dabei darauf, dass das Hauptfenster "
"nicht durch das Demofenster verdeckt wird.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:694
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:693
msgid ""
"You can move the demo window now by dragging on the title bar at the top of "
"the window. I suggest you move it to the top of your screen.\n"
@@ -13468,66 +11539,65 @@ msgstr ""
"Fensters verschieben. Am besten verschieben Sie es an den oberen Rand des "
"Bildschirms.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:31
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:696
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:695
msgid ""
"The various controls are disabled when it would be inappropiate to click on "
"them. When the demo is running the Step button is disabled. When the demo "
-"is paused the Step button is enabled and you can click it when you are ready"
-" to view the next part of the demo.\n"
+"is paused the Step button is enabled and you can click it when you are ready "
+"to view the next part of the demo.\n"
msgstr ""
"Die verschiedenen Steuerelement sind deaktiviert, während diese nicht "
-"nutzbar sind. Während die Demo läuft, ist der Einzelschritt-Knopf "
-"deaktiviert. Wenn die Demo angehalten ist, wird der Einzelschritt-Knopf "
-"aktiviert. Sie können darauf klicken, wenn Sie für den nächsten Schritt der "
-"Demo bereit sind.\n"
+"nutzbar sind. Während die Demo läuft, ist die Einzelschritt-Schaltfläche "
+"deaktiviert. Wenn die Demo angehalten ist, wird die Einzelschritt-"
+"Schaltfläche aktiviert. Sie können darauf klicken, wenn Sie für den nächsten "
+"Schritt der Demo bereit sind.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:697
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:696
msgid "You can click on Quit to return to XTrackCAD at any time.\n"
msgstr ""
-"Durch Klicken auf Verlassen können Sie jederzeit zu XTrackCAD "
-"zurückkehren.\n"
+"Durch Klicken auf Verlassen können Sie jederzeit zu XTrackCAD zurückkehren.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:698
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:697
msgid "You can adjust the speed of the demonstration with the Speed control.\n"
msgstr ""
-"Die Geschwindigkeit der Demo können Sie mit dem Geschwindigkeitsknopf "
-"anpassen.\n"
+"Die Geschwindigkeit der Demo können Sie mit der Schaltfläche für die "
+"Geschwindigkeit anpassen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:60
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:700
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:60
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:699
msgid "The demos are designed to fit within a certain sized window.\n"
msgstr "Die Demos sind für eine bestimmte Fenstergröße entworfen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:701
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:700
msgid ""
"For best results, change the size of the main XTrackCAD window so the box "
"shape is completely visible.\n"
msgstr ""
-"Um beste Ergebniss zu erreichen, ändern Sie die Größe des XTrackCAD "
-"Hauptfensters so, dass die das Rechteck vollständig sicht bar ist.\n"
+"Um beste Ergebnisse zu erreichen, ändern Sie die Größe des XTrackCAD "
+"Hauptfensters so, dass das Rechteck vollständig sichtbar ist.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:702
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:701
msgid "You can do this by clicking and dragging on a corner of the window.\n"
msgstr ""
"Dies können Sie erreichen, in dem Sie an der rechten unteren Ecke des "
"Fensters ziehen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:67
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:72
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:705
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:67
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:704
msgid "This is the end of the introductory demo.\n"
msgstr "Dies ist das Ende der Einführungsdemo.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:706
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:705
msgid ""
"Please click Step for the next demo or click Quit to return to XTrackCAD.\n"
msgstr ""
"Bitte klicken Sie Einzelschritt für die nächste Demo oder Verlassen, um zu "
"XTrackCAD zurück zu kehren.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjcir.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:708
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:707
msgid ""
"You can also join to and from circles. This will change the circles to "
"curves.\n"
@@ -13535,12 +11605,12 @@ msgstr ""
"Sie können auch Gleise mit Gleiskreisen verbinden. Dadurch werden aus "
"Kreisen Bögen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:709
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:708
msgid "In this example we will join two circles.\n"
msgstr "In diesem Beispiel werden wir zwei Kreise verbinden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjcir.xtr:24
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:711
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:710
msgid ""
"Here we've selected points on the two circles. The direction of the "
"connections (whether clockwise or counter clockwise) is controlled by where "
@@ -13550,29 +11620,29 @@ msgstr ""
"Verbindungen, entweder im Uhrzeigersinn oder dagegen, wird aufgrund der "
"Stellen auf den Kreisen, die Sie angewählt haben, ermittelt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjcir.xtr:133
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjcir.xtr:152
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:714
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:133
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:152
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:713
msgid "Now let's try a cross connection.\n"
msgstr "Jetzt versuchen wir eine kreuzweise Verbindung.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjcir.xtr:246
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:716
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:246
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:715
msgid ""
"Note that the connection is from different 'ends' of the circle than in the "
"last example.\n"
msgstr ""
"Beachten Sie, dass die Verbindung an anderen Punkten der Kreise ansetzt als "
-"bem letzten Beispiel.\n"
+"beim letzten Beispiel.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnabut.xtr:22
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:718
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:22
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:717
msgid "This examples shows joining tracks whose End-Points are aligned.\n"
msgstr ""
"Dieses Beispiel zeigt wir Gleise verbunden werden, die zueinander parallel "
"sind.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:719
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:718
msgid ""
"Note the 2 pairs of tracks have End-Points that are close and aligned but "
"not connected.\n"
@@ -13580,26 +11650,27 @@ msgstr ""
"Beachten Sie dass die Endpunkte der beiden Gleise nahe beieinander und "
"parallel, aber nicht verbunden, sind.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnabut.xtr:30
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:721
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:720
msgid "The first case joins the curve and straight track.\n"
-msgstr "Im ersten Fall werden eine gebogenes und ein gerades Gleis verbunden.\n"
+msgstr ""
+"Im ersten Fall werden eine gebogenes und ein gerades Gleis verbunden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnabut.xtr:40
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:723
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:722
msgid "The second case will join the two straight tracks.\n"
msgstr "Im zweiten Fall werden zwei gerade Gleise verbunden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnabut.xtr:50
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:725
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:724
msgid "Note that the two straight tracks were combined to form one track.\n"
msgstr ""
"Beachten Sie, dass die beiden geraden Gleise zu einem Gleis zusammengefasst "
"wurden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnabut.xtr:55
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjncs.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:728
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:55
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:727
msgid ""
"The <Join> command can also join straight and curved tracks (in either "
"order).\n"
@@ -13607,17 +11678,17 @@ msgstr ""
"Mit dem Befehl <Verbinden> können gerade und gebogene Gleise (in jeder "
"Reihenfolge) verbunden werden.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:729
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:728
msgid "We will enable Cornu easements\n"
msgstr "Zuerst schalten wir Übergangsbögen mit Cornu an.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjncs.xtr:32
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:731
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:730
msgid "A connecting cornu track is drawn between the two tracks.\n"
msgstr "Eine Cornu wird zwischen den beiden Gleisen gezeichnet.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjncs.xtr:41
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:733
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:41
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:732
msgid ""
"Notice that the curved track is extended as the connection point moves past "
"the End-Point.\n"
@@ -13625,8 +11696,8 @@ msgstr ""
"Beachten Sie, dass das gebogene Gleis verlängert wird, wenn der "
"Verbindungspunkt über den Endpunkt hinaus verschoben wird.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjncs.xtr:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:735
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:734
msgid ""
"Here the connection makes the curved track wrap around. This is not a "
"useful shape, there is a discontinuity at the end. \n"
@@ -13634,40 +11705,40 @@ msgstr ""
"Hier entsteht durch das Verbinden eine Schleife. Das ist keine sinnvolle "
"Form, da am Ende ein Knick entsteht.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:736
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:735
msgid "Adjusting the end point will fix it. \n"
msgstr "Durch Anpassen des Endpunktes wird das verbessert.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjncs.xtr:64
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnmove.xtr:18
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:739
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:64
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:18
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:738
msgid "The <Join> command can move one group of tracks to join with another.\n"
msgstr ""
"Mit dem Befehl <Verbinden> können Gruppen von Gleisen verschoben werden, um "
"diese mit anderen zu verbinden.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:740
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:739
msgid ""
"First <Select> the tracks you want to move with Ctrl so that they are both "
"selected.\n"
msgstr ""
-"Zuerst wählen Sie bei gedrücketr Strg-Taste die Gleise aus, die verschoben "
+"Zuerst wählen Sie bei gedrückter Strg-Taste die Gleise aus, die verschoben "
"werden sollen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnmove.xtr:36
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:742
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:36
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:741
msgid "Click <Join> and Shift-Left-Click on the two End-Points.\n"
msgstr ""
"Klicken Sie auf <Verbinden> und klicken dann bei gedrückter Umschalttaste "
"auf die beiden Endpunkte.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnmove.xtr:51
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:744
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:743
msgid "The selected tracks are moved into position.\n"
msgstr "Die ausgewählten Gleise werden an die Position verschoben.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:746
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:745
msgid ""
"Two straight tracks can be joined by selecting the two endoints. The "
"selected endpoints will be those closest to the cursor when the track is "
@@ -13677,19 +11748,19 @@ msgstr ""
"werden. Die ausgewählten Endpunkte sind diejenigen, die dem Cursor am "
"nächsten liegen, wenn das Gleis ausgewählt wird.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:747
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:746
msgid "First, we will select Easements None and then select Join\n"
msgstr ""
"Zuerst legen wir keine Übergangsbogen fest, dann wählen wir Verbinden aus.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:26
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:749
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:748
msgid "Now we select two points on the tracks\n"
msgstr "Jetzt wählen wir zwei Punkte auf den Gleisen aus.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:36
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:751
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:36
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:750
msgid ""
"A connecting track is drawn between the two tracks. Notice how it moves as "
"the cursor is dragged along the second track.\n"
@@ -13698,16 +11769,16 @@ msgstr ""
"Sie wie dieses neu geformt wird, wenn der Mauszeiger entlang des zweiten "
"Gleises bewegt wird.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:47
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:753
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:752
msgid ""
"Note that two tracks are extended if you move past the end of the track.\n"
msgstr ""
-"Beachten Sie, dass die beiden Gleise verlängrt werden, wenn Sie denn "
+"Beachten Sie, dass die beiden Gleise verlängert werden, wenn Sie denn "
"Mauszeiger über das Ende des Gleises hinaus bewegen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:55
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:755
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:55
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:754
msgid ""
"Notice what happens if you drag past the intersection points of the two "
"tracks.\n"
@@ -13715,30 +11786,30 @@ msgstr ""
"Beachten Sie was passiert, wenn Sie über den Schnittpunkt der beiden Gleise "
"hinaus ziehen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:757
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:756
msgid "This is probably not a very useful thing to do.\n"
msgstr "Das ist wahrscheinlich keine sinnvolle Lösung.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:70
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:90
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:760
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:70
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:90
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:759
msgid "Now we will do this with Cornu Easements \n"
msgstr "Jetzt werden wir dies mit den Cornu-Übergangsbögen tun\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:761
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:760
msgid "First, we will select Easements Cornu and then select Join\n"
msgstr ""
"Zuerst legen wir Cornu als Übergangsbogen fest, dann wählen wir Verbinden "
"aus.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:102
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:763
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:102
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:762
msgid "Now we again select two points on the tracks\n"
msgstr "Jetzt wählen wir wieder zwei Punkte auf dem Gleis aus\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:112
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:765
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:764
msgid ""
"A connecting cornu is drawn between the two tracks. Notice how it behaves "
"as the cursor is dragged along the second track.\n"
@@ -13747,16 +11818,16 @@ msgstr ""
"dieses neu geformt wird, wenn der Mauszeiger entlang des zweiten Gleises "
"bewegt wird.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:123
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:767
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:123
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:766
msgid ""
"Note that either tracks can be extended if you move past the end of it.\n"
msgstr ""
"Beachten Sie, dass jedes der Gleise verlängert werden kann, wenn Sie denn "
"Mauszeiger über das Ende des Gleises hinaus bewegen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:131
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:769
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:768
msgid ""
"Notice this time what happens if you drag past the intersection points of "
"the two tracks.\n"
@@ -13764,51 +11835,51 @@ msgstr ""
"Beachten Sie was passiert, wenn Sie über den Schnittpunkt der beiden Gleise "
"hinaus ziehen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:139
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:771
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:139
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:770
msgid "This is more useful because you can move the other end as well.\n"
msgstr ""
"Dies ist nützlicher, weil Sie auch das andere Ende verschieben können.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:150
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:773
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:150
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:772
msgid "You can add a pin to constrain the Cornu Curve to pass through it.\n"
msgstr ""
-"Du kannst einen Marker seten sodaß die Cornu-Kurve durch diesn hindurch "
+"Du kannst einen Marker setzen sodass die Cornu-Kurve durch diesen hindurch "
"führt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:161
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:776
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:161
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:775
msgid "You can connect from any track to a turntable\n"
msgstr "Sie können jedes Gleis mit einer Drehscheibe verbinden.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:777
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:776
msgid "With a Cornu Easement you can have a turntable as the first point.\n"
-msgstr "Mit einem Cornu-Ãœbergang kann eien Drehscheibe der erste Punkt sein.\n"
+msgstr "Mit einem Cornu-Ãœbergang kann eine Drehscheibe der erste Punkt sein.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:38
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:779
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:778
msgid ""
-"You cannot place the connecting track too close to an existing stall track."
-" How close you can get is controlled by the Turntable Angle on the Setup "
+"You cannot place the connecting track too close to an existing stall track. "
+"How close you can get is controlled by the Turntable Angle on the Setup "
"dialog.\n"
msgstr ""
"Ein Verbindungsgleis kann nicht zu dicht an einem existieren "
"Drehscheibenabgang erstellt werden. Wie klein der Abstand sein darf, wird "
"über den Drehscheibenwinkel in den Einstellungen festgelegt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:780
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:779
msgid "In this example it is set to 15 degrees.\n"
msgstr "In diesem Beispiel ist dieser auf 15° eingestellt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:782
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:781
msgid "You can drag the connecting point all round the turntable.\n"
msgstr "Sie können den Verbindungspunkt irgendwo an die Drehscheibe ziehen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:103
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:784
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:103
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:783
msgid ""
"As you drag away from the turntable a straight track will be drawn to the "
"cursor postion and a curve will be drawn from the cursor to the connecting "
@@ -13818,61 +11889,61 @@ msgstr ""
"Position des Mauszeiger gezeichnet. Ein Gleisbogen wird vom Mauszeiger zum "
"Verbindungsgleis gezeichnet.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:111
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:786
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:111
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:785
msgid ""
"Now the cursor will be moved within the turntable, but the end stays on the "
"edge of the well.\n"
msgstr ""
"Jetzt wird der Mauszeiger zu einer Position innerhalb der Drehscheibe "
-"bewegt, aber das Ender bleibt auf der Kante der Grube.\n"
+"bewegt, aber das Ende bleibt auf der Kante der Grube.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:161
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:788
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:161
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:787
msgid "All done.\n"
msgstr "Fertig.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:169
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:38
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:791
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:169
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:790
msgid ""
-"The Draw Commands are used to draw straight and curved lines on the "
-"layout.\n"
+"The Draw Commands are used to draw straight and curved lines on the layout.\n"
msgstr ""
"Die Zeichenbefehle werden genutzt, um gerade oder gebogene Gleise auf dem "
"Gleisplan zu erstellen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:46
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:793
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:46
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:792
msgid ""
"Lines are drawn by clicking at the starting postion and dragging to the "
"final position.\n"
msgstr ""
-"Linien werden gezeichnet, indem der Startpunkt durch Klicken festgelegt wird"
-" und dann durch Ziehen der zusätzliche Endpunkt erstellt wird.\n"
+"Linien werden gezeichnet, indem der Startpunkt durch Klicken festgelegt wird "
+"und dann durch Ziehen der zusätzliche Endpunkt erstellt wird.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:794
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:793
msgid ""
-"By default, the new line will snap to existing objects. Hold down the <Alt>"
-" keys to prevent this from happening.\n"
+"By default, the new line will snap to existing objects. Hold down the <Alt> "
+"keys to prevent this from happening.\n"
msgstr ""
"Standardmäßig wird die neue Linie an vorhandenen Objekten gefangen. Halten "
"Sie die Tasten <Alt> gleichzeitig gedrückt, um dies zu verhindern.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:91
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:796
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:795
msgid "You also draw in various colors and line widths.\n"
msgstr ""
"Sie können auch mit unterschiedlichen Farben und Liniendicken zeichnen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:110
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:798
-msgid "Like Curved Tracks, Curved Lines can be drawn by a variety of methods.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:110
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:797
+msgid ""
+"Like Curved Tracks, Curved Lines can be drawn by a variety of methods.\n"
msgstr ""
"Wie Gleisbögen können auch gebogene Linien mit unterschiedlichen Methoden "
"gezeichnet werden.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:799
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:798
msgid ""
"Here we will draw a Curve by dragging from one End-Point to the other to "
"define the chord of the Curve. Then we will drag from the center to shape "
@@ -13882,15 +11953,15 @@ msgstr ""
"ziehen um die Sehne der Kurve festzulegen. Dann Ziehen wir vom Mittelpunkt "
"aus, um die Form der Kurve festzulegen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:185
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:801
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:185
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:800
msgid "Boxes are useful for drawing rectangular shapes.\n"
msgstr ""
"Gefüllte Rechtecke können für das Erstellen rechteckiger Formen benutzt "
"werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:195
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:803
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:195
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:802
msgid ""
"Circles can be drawn by clicking on the center or edge and dragging to set "
"the radius.\n"
@@ -13898,68 +11969,68 @@ msgstr ""
"Kreise werden gezeichnet, indem auf den Rand oder den Mittelpunkt geklickt "
"wird. Danach wird durch Ziehen der Radius festgelegt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:804
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:803
msgid "Here we will drag from the edge to the Center.\n"
msgstr "Hier ziehen wir von der Tischkante zum Mittelpunkt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:205
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:806
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:805
msgid "Lines and Shapes can be deleted by Selecting and Deleting.\n"
-msgstr "Linien und Formen können durch Auswählen und Löschen entfernt werden.\n"
+msgstr ""
+"Linien und Formen können durch Auswählen und Löschen entfernt werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:228
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:91
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:809
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:228
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:808
msgid "We also draw Polylines and filled shapes.\n"
-msgstr "Wir können auch Vielfachlinien und gefüllte Formen erstellen.\n"
+msgstr "Wir können auch Polylinien und gefüllte Formen erstellen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:98
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:811
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:810
msgid ""
-"A Polyline is drawn by dragging to place each of the point in the "
-"Polyline.\n"
+"A Polyline is drawn by dragging to place each of the point in the Polyline.\n"
msgstr ""
-"Eine Vielfachlinie wird gezeichnet, indem jeder Eckpunkt durch Ziehen "
-"gesetzt wird.\n"
+"Eine Polylinie wird gezeichnet, indem jeder Eckpunkt durch Ziehen gesetzt "
+"wird.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:125
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:813
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:125
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:812
msgid ""
"To finish off the Polyline press the <Space> key or choose another drawing "
"type.\n"
msgstr ""
-"Um die Vielfachlinie zu beenden, drücken Sie die Leertaste oder wählen eine "
+"Um die Polylinie zu beenden, drücken Sie die Leertaste oder wählen eine "
"andere Zeichenoperation.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:132
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:815
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:814
msgid "A filled Polygon is drawn in the same way.\n"
msgstr "Ein ausgefülltes Polygon wird auf die gleiche Weise gezeichnet.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:158
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:817
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:816
msgid "When you are finished, press the <Space> key to complete the polygon.\n"
msgstr ""
"Wenn Sie fertig sind, drücken Sie die Taste <Leerzeichen> , um das Polygon "
"zu vervollständigen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:165
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:819
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:818
msgid ""
"You can use the Above and Below Commands to move lines and shapes to the "
"front or back of the drawing.\n"
msgstr ""
-"Sie können die Befehle Über und Unter benutzen, um Linien und Formen in den"
-" Vorder- oder Hintergrund zu verschieben.\n"
+"Sie können die Befehle Über und Unter benutzen, um Linien und Formen in den "
+"Vorder- oder Hintergrund zu verschieben.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:182
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:821
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:820
msgid "Filled Boxes and Circles work the same as line Boxes and Circles.\n"
msgstr "Gefüllte Rechtecke und Kreis werden genauso erstellt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:199
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:8
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:824
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:199
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:8
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:823
msgid ""
"In the drawing area of the main window you can see an hollow upwards arrow "
"which represents the mouse cursor. In this demo the mouse will move about "
@@ -13969,14 +12040,14 @@ msgstr ""
"oben anstelle des Mauszeigers. In dieser Demo wird dieser bewegt, um Ihnen "
"die Arbeitsweise verschiedener Befehle zu zeigen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:825
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:824
msgid ""
"The hollow arrow represents the mouse cursor without a mouse button being "
"pressed.\n"
msgstr "Der leere Pfeil entspricht dem Mauszeiger ohne gedrückte Maustaste.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:827
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:826
msgid ""
"When the left mouse button would be pressed, the mouse cursor appears to "
"flash and the hollow arrow is replaced by a solid left-pointing red arrow "
@@ -13986,7 +12057,7 @@ msgstr ""
"gefüllten roten Pfeil ersetzt. Solange der linke Mausknopf gedrückt bleibt, "
"ist der Mauszeiger ein gefüllter Pfeil.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:828
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:827
msgid ""
"Note: these color changes occur only during the demo to simulate mouse "
"button presses.\n"
@@ -13994,15 +12065,16 @@ msgstr ""
"Beachten Sie, dass diese Farbänderungen nur in einer Demo auftritt um "
"Tastendrücke anzuzeigen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:24
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:830
-msgid "Moving the mouse while a mouse button is pressed is called 'dragging'.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:829
+msgid ""
+"Moving the mouse while a mouse button is pressed is called 'dragging'.\n"
msgstr ""
-"Das Bewegen der Maus während der Mausknopf gedrückt bleibt wird als 'Ziehen'"
-" bezeichnet.\n"
+"Das Bewegen der Maus während der Mausknopf gedrückt bleibt wird als 'Ziehen' "
+"bezeichnet.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:32
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:832
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:831
msgid ""
"When the left mouse button is released, the mouse cursor flashes and the "
"hollow up black arrow is restored.\n"
@@ -14010,8 +12082,8 @@ msgstr ""
"Wird der linke Mausknopf wieder losgelassen, blinkt der Mauszeiger und der "
"hohle Pfeil wird wieder hergestellt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:40
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:834
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:833
msgid ""
"Dragging with the right button is simulated by a blue right-facing solid "
"cursor.\n"
@@ -14019,43 +12091,43 @@ msgstr ""
"Das Ziehen mit dem gedrückten rechten Mausknopf wird durch einen blauen, "
"nach rechts zeigenden, Mauszeiger dargestellt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:49
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:836
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:835
msgid "Release Right Click\n"
-msgstr "Rechte Mausetaste loslassen\n"
+msgstr "Rechte Maustaste loslassen\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:57
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:62
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:839
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:57
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:62
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:838
msgid "Sometimes the Shift key is held down while using the mouse \n"
msgstr ""
"Manchmal wird während des Bewegen der Maus auch die Umschalttaste gedrückt "
-"gehalten. Dies wird mit Umschalt-Klick und Umschalt-Ziehen bezeichnet.\n"
+"gehalten. Dies wird mit Umschalt-Klicken und Umschalt-Ziehen bezeichnet.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:840
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:839
msgid ""
"This is indicated by an outlined arrow with the letter S near the arrow.\n"
msgstr ""
"Dies wird durch einen Pfeilumriss und den Buchstaben S in der Nähe des "
"Pfeils dargestellt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:71
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:842
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:71
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:841
msgid ""
"The left mouse button is held down with the Shift and dragged for a Left-"
"Shift-Drag. \n"
msgstr ""
-"Für eine Umschalt-Links-Ziehen wird der linke Mausknopf gedrückt während die"
-" Umschalt-Taste gedrückt gehalten wird.\n"
+"Für eine Umschalt-Links-Ziehen wird der linke Mausknopf gedrückt während die "
+"Umschalt-Taste gedrückt gehalten wird.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:86
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:844
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:843
msgid "Sometimes the Control key is held down while using the mouse. \n"
msgstr ""
"Manchmal wird während des Bewegen der Maus auch die Strg-Taste gedrückt "
-"gehalten. Dies wird mit Strg-Klick und Strg-Ziehen bezeichnet.\n"
+"gehalten. Dies wird mit Strg-Klicken und Strg-Ziehen bezeichnet.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:845
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:844
msgid ""
"This is indicated with an upward filled arrow head with the letter C near "
"the arrow \n"
@@ -14063,39 +12135,39 @@ msgstr ""
"Dies wird durch eine nach oben gefüllte Pfeilspitze mit dem Buchstaben C in "
"der Nähe des Pfeils angezeigt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:98
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:847
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:846
msgid ""
-"If while the Control is held the Left mouse button is held down it is a "
-"Ctrl-Move and a Ctrl-Left-Drag. \n"
+"If while the Control is held the Left mouse button is held down it is a Ctrl-"
+"Move and a Ctrl-Left-Drag. \n"
msgstr ""
-"Wenn die linke Maustaste bei gedrückter Strg gedrückt gehalten wird, handelt"
-" es sich um eine Strg-Bewegen und ein Strg-Links-Ziehen. \n"
+"Wenn die linke Maustaste bei gedrückter Strg gedrückt gehalten wird, handelt "
+"es sich um eine Strg-Bewegen und ein Strg-Links-Ziehen. \n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:848
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:847
msgid ""
"This is indicated by an an left-facing open-headed arrow with the letter C "
"near it.\n"
msgstr ""
-"Dies wird durch einen nach zeigenden Pfeilumriß mit dem Buchstaben C in der "
+"Dies wird durch einen nach zeigenden Pfeilumriss mit dem Buchstaben C in der "
"Nähe des Pfeils angezeigt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:114
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:850
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:114
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:849
msgid "You can also use the Control key with the Right mouse button. \n"
msgstr "Sie können auch die Strg-Taste mit der rechten Maustaste verwenden.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:851
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:850
msgid ""
"This is indicated with a right-facing filled arrow with an open arrow head "
"and the letter C near the arrow \n"
msgstr ""
-"Dies wird durch einen nach rechts weisenden Pfeilumriß mit dem Buchstaben C "
+"Dies wird durch einen nach rechts weisenden Pfeilumriss mit dem Buchstaben C "
"in der Nähe des Pfeils angezeigt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:130
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:23
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:854
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:130
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:853
msgid ""
"The main drawing area shows a portion of total layout. You can zoom in or "
"zoom out by choosing 'Zoom In' or 'Zoom Out' in the 'Edit' menu, by using "
@@ -14103,37 +12175,37 @@ msgid ""
"keys.\n"
msgstr ""
"Der Hauptzeichenbereich zeigt einen Teil des gesamten Gleisplanes. Sie "
-"können diesen auf verschiedenen Wegen vergrössern oder verkleinern. Diese "
-"Möglichkeiten sind die Zoom-Auswahlen im Menupunkt Bearbeiten, die Zoom-"
+"können diesen auf verschiedenen Wegen vergrößern oder verkleinern. Diese "
+"Möglichkeiten sind die Zoom-Auswählen im Menüpunkt Bearbeiten, die Zoom-"
"Knöpfe in der Werkzeugleiste, die Bild hoch und runter Tasten und das "
"Mausrad.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:855
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:854
msgid "You can see the entire layout in the Map window.\n"
msgstr "Den gesamten Gleisplan können Sie im Kartenfenster sehen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:33
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:857
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:33
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:856
msgid "As you Zoom Out tracks are drawn with one line instead of two.\n"
msgstr ""
-"Wenn Sie die Ansicht verkleinern, werden Gleise durch eine anstelle von zwei"
-" Linien dargestellt.\n"
+"Wenn Sie die Ansicht verkleinern, werden Gleise durch eine anstelle von zwei "
+"Linien dargestellt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:49
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:860
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:49
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:859
msgid ""
-"You can change what portion of the layout is shown by using the 'Map' window"
-" which shows a compressed version of the entire layout. A hilighted area of"
-" the 'Map' (in blue highlight) shows what portion of the layout is displayed"
-" in the main drawing area.\n"
+"You can change what portion of the layout is shown by using the 'Map' window "
+"which shows a compressed version of the entire layout. A hilighted area of "
+"the 'Map' (in blue highlight) shows what portion of the layout is displayed "
+"in the main drawing area.\n"
msgstr ""
"Sie können den im Hauptzeichenfenster gezeigten Bereich des Gleisplans mit "
-"dem Karten-Fenster, das den gesamten Plan verkleinert darstellt, ändern. Ein"
-" hervorgehobener Bereich der Karte (blaue Hervorhebung) zeigt, welcher Teil "
+"dem Karten-Fenster, das den gesamten Plan verkleinert darstellt, ändern. Ein "
+"hervorgehobener Bereich der Karte (blaue Hervorhebung) zeigt, welcher Teil "
"des Gleisplans im Moment dort gezeigt wird.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:861
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:860
msgid ""
"You can Left-Drag the hilighted area in the Map window to change the "
"displayed portion of the layout.\n"
@@ -14141,100 +12213,131 @@ msgstr ""
"Durch Ziehen des hervorgehobenen Bereichs im Karten-Fenster können Sie den "
"angezeigten Bereich des Gleisplans verändern.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:863
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:862
msgid ""
"You can also Right-Drag on the Map window to set the scale and position of "
"the Main window.\n"
msgstr ""
-"Sie können auch Rechts-Ziehen um den Maßstab und die Position des Gleisplans"
-" im Hauptfenster zu bestimmen.\n"
+"Sie können auch Rechts-Ziehen um den Maßstab und die Position des Gleisplans "
+"im Hauptfenster zu bestimmen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:72
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmnotes.xtr:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:866
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:72
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:865
msgid ""
-"The <Note> command lets you attach notes to various spots on the layout.\n"
+"The <Text Note> command lets you attach notes to various spots on the "
+"layout.\n"
msgstr ""
"Der Befehl <Notiz> ermöglicht es, an unterschiedlichen Stellen des "
-"Gleisplans Notien anzubringen.\n"
+"Gleisplans Notizen anzubringen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmnotes.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:868
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:867
msgid ""
-"When you place a note, the Note editor window is displayed which lets you "
-"enter the note.\n"
+"When you place a note, the Text Note editor window is displayed which lets "
+"you enter the note.\n"
msgstr ""
"Wenn Sie eine Notiz anlegen, wird der Notizeditor geöffnet, der die Eingabe "
"eines Textes ermöglicht.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmnotes.xtr:22
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:870
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:869
msgid ""
-"If you click on a note in <Describe> mode the Note editor displays the "
-"note.\n"
+"If you click on a note in <Describe> mode the Text Note editor displays the "
+"note allowing you to modify the note..\n"
msgstr ""
"Wenn Sie im <Beschreiben> Modus auf eine Notiz klicken, wird der Editor "
"angezeigt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmnotes.xtr:39
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:872
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:871
+msgid "You can also create a reference to a file or web link.\n"
+msgstr ""
+"Sie können auch einen Hinweis auf eine Datei oder eine Web-Verknüpfung "
+"erstellen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:872
+msgid ""
+"Choose the type of link by clicking on the down arrow beside the Note "
+"commmand.\n"
+msgstr ""
+"Die Art der Notiz kann durch Klicken auf das Dreieck neben dem Notiz-Befehl "
+"ausgewählt werden.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:874
+msgid ""
+"This is a File Note. You can specify the Title of the File and its "
+"location\n"
+msgstr "Dies ist ein\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:64
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:876
+msgid ""
+"This is a Web Link Note. You can specify the Title of the Link and its URL\n"
+msgstr ""
+"Dies ist eine Notiz für eine Web-Verknüpfung. Sie können einen Titel und die "
+"URL angeben.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:878
msgid "This is the end of the XTrackCAD Demos.\n"
msgstr "Dies ist das Ende der XTrackCAD Demos.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:873
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:879
msgid "Click Step to return to XTrackCAD.\n"
msgstr "Klicken Sie auf Einzelschritt um zu XTrackCAD zurück zu kehren.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:874
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:880
msgid "Thanks for watching.\n"
msgstr "Danke für das Interesse.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:32
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:876
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:882
msgid "This example shows how to create parallel tracks.\n"
-msgstr "Dieses Besipiel zeigt wie paralle Gleise erstellt werden.\n"
+msgstr "Dieses Beispiel zeigt wie parallele Gleise erstellt werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:37
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:878
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:884
msgid ""
"The separation is set in the <Parallel Separation> window. You should set "
"this value before you begin to select tracks.\n"
msgstr ""
"Der Abstand wird im Fenster <Parallelabstand> eingestellt. Dies muss "
-"geschehen, bevor das Glaus ausgewählt wird.\n"
+"geschehen, bevor das Gleis ausgewählt wird.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:49
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:880
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:886
msgid ""
"You control which side the parallel track will be on by moving the cursor "
"from one side of the track centerline to the other.\n"
msgstr ""
-"Sie können steuern, auf welcher Seite das Parallalgleis erstellt wird, indem"
-" Sie den Mauszeiger von einer Seite derr Gleismitte auf die andere "
-"bewegen.\n"
+"Sie können steuern, auf welcher Seite das Parallelgleis erstellt wird, indem "
+"Sie den Mauszeiger von einer Seite der Gleismitte auf die andere bewegen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:81
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:882
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:888
msgid "When you release the mouse button the new parallel track is created.\n"
-msgstr "Sobald Sie den Mausknop loslassen, wird das parallele Gleis erstellt.\n"
+msgstr ""
+"Sobald Sie den Mausknopf loslassen, wird das parallele Gleis erstellt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:883
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:889
msgid ""
-"Note that the <Parallel> command remains active after you created the track."
-" This is controlled by the Sticky dialog in the Options menu.\n"
+"Note that the <Parallel> command remains active after you created the "
+"track. This is controlled by the Sticky dialog in the Options menu.\n"
msgstr ""
"Beachten Sie, dass der Befehl <Parallelgleis> aktiv bleibt nachdem Sie das "
"Gleis erstellt haben. Dies wird durch die Einstellungen in Wiederholte "
"Befehle festgelegt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:92
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:885
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:92
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:891
msgid "You cannot create a track parallel to a turnout.\n"
msgstr "Zu einer Weiche können keine Parallelen erstellt werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:172
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:887
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:172
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:893
msgid ""
"Note that the new curved track is automatically connected to the short "
"parallel track.\n"
@@ -14242,56 +12345,56 @@ msgstr ""
"Beachten Sie, dass das neue gebogene Gleis automatisch mit dem kurzen "
"parallelen Gleis verbunden wird.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:180
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:19
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:890
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:19
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:896
msgid ""
"Polylines and polygons (created with the <Draw> command) can be modified by "
"dragging on their corners or edges.\n"
msgstr ""
-"Vielfachlinen und Vielecke, erstellt mit dem Befehl <Zeichnen> können durch "
+"Polylinie und Vielecke, erstellt mit dem Befehl <Zeichnen> können durch "
"Ziehen an den Ecken und Kanten verändert werden.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:891
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:897
msgid "First Left Click on the shape you want to modify.\n"
msgstr ""
"Klicken Sie zunächst mit der linken Maustaste auf die Form, die Sie ändern "
"möchten.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:29
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:893
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:29
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:899
msgid "Then drag on the point you want to move\n"
msgstr "Dann ziehen Sie an dem Punkt, der verschoben werden soll\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:39
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:895
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:901
msgid "And finally press the Space bar to finish the change\n"
msgstr ""
"Und schließlich drücken Sie die Leertaste, um die Änderung abzuschließen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:897
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:903
msgid "If you select the middle of an Edge a new Corner is created.\n"
msgstr ""
"Wenn Sie die Mitte einer Kante auswählen, wird eine neue Ecke erzeugt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:72
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:899
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:905
msgid "To delete a corner, select and then press Delete or Backspace\n"
msgstr ""
"Um eine Ecke zu löschen, wählen Sie diese aus und drücken dann Löschen oder "
"Rücktaste\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:98
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:901
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:907
msgid "But you cannot have a Poly-shape with less than 3 sides.\n"
msgstr ""
-"Aber ein Vieleck oder eine Vielfachllinie mit weniger als drei Seiten ist "
-"nicht möglich.\n"
+"Aber ein Vieleck oder eine Polylinie mit weniger als drei Seiten ist nicht "
+"möglich.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:126
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:126
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:904
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:126
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:126
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:910
msgid ""
"To use the <Profile> command you first need to define Elevations on your "
"layout.\n"
@@ -14299,69 +12402,67 @@ msgstr ""
"Um den Befehl <Höhenprofil> nutzen zu können, müssen Sie zuerst Höhen auf "
"Ihrem Gleisplan festlegen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:905
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:911
msgid "In this example we'll use the Elevations defined in the last example.\n"
msgstr "In dieser Demo werden wird die Höhen aus der letzten Demo benutzen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:906
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:912
msgid "You can move or resize the Profile dialog now if you want.\n"
msgstr "Das Höhenprofil Fenster kann nun vergrößert werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:135
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:908
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:135
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:914
msgid ""
-"To show the Profile you need to select a Path on the tracks of your "
-"layout.\n"
+"To show the Profile you need to select a Path on the tracks of your layout.\n"
msgstr ""
"Um das Höhenprofil anzeigen zu können muss eine Strecke in Ihrem Plan "
"ausgewählt werden.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:909
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:915
msgid "Select a Defined Elevation point (marked by Gold dots).\n"
-msgstr "Eine beliebigen Punkt festgelegen, um das Höhenprofil zu beginnen.\n"
+msgstr "Eine beliebigen Punkt festlegen, um das Höhenprofil zu beginnen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:910
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:916
msgid "We will start with the right end of the siding.\n"
msgstr "Wir starten am rechten Ende des Abstellgleises.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:148
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:912
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:918
msgid ""
"The second Point is at the left end of the siding. The Path will be drawn "
"in Purple on the layout.\n"
msgstr ""
-"Der zweite Punkt ist das linke Ende ds Nebengleises. Der Pfad wird in Purpur"
-" auf dem Gleisplan dargestellt.\n"
+"Der zweite Punkt ist das linke Ende des Nebengleises. Der Pfad wird in "
+"Purpur auf dem Gleisplan dargestellt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:160
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:914
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:160
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:920
msgid "Now select the end of one of the Branches\n"
msgstr "Jetzt wählen Sie das Ende eines der Abzweige aus.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:169
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:916
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:169
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:922
msgid ""
"The Profile line is drawn in Red. This indicates that there some turnouts "
"on that section of the Path which have more than 2 connections.\n"
msgstr ""
-"Das Höhenprofil wird in rot gezeichnet. Das bedeutet, dass es einige Weichen"
-" auf diesem Abschnitt des Pfads gibt, die nmehr als zwei Verbindungen "
-"haben.\n"
+"Das Höhenprofil wird in rot gezeichnet. Das bedeutet, dass es einige Weichen "
+"auf diesem Abschnitt des Pfads gibt, die mehr als zwei Verbindungen haben.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:917
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:923
msgid ""
"The grade on this part of the Path is the average and may be affected by "
"other Elevations, such the end of the lower branch.\n"
msgstr ""
-"Die Steigung auf diesem Teil des Pfads ist ein Durchschnittswert und knn "
+"Die Steigung auf diesem Teil des Pfads ist ein Durchschnittswert und kann "
"durch andere Höhen wie dem Ende des unteren Abzweigs beeinflusst werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:178
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:919
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:178
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:925
msgid "Now try to select the End-Point of the other branch.\n"
-msgstr "Versuchen Sie jetzt, den Endpunkt des anderen Abzweiges auszuwählen.\n"
+msgstr "Versuchen Sie jetzt, den Endpunkt des anderen Abzweigs auszuwählen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:920
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:926
msgid ""
"You will get an error message because there is no route to one of the ends "
"of the existing Path.\n"
@@ -14369,49 +12470,48 @@ msgstr ""
"Sie erhalten eine Fehlermeldung, da es keine Route zu einem der Endpunkte "
"des existieren Pfades gibt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:187
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:922
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:187
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:928
msgid ""
"In this case remove the last part of the Path by clicking on current end of "
"the Path and reselect the End-Point.\n"
msgstr ""
-"In diesem Fall entfernen Sie den letzten Teil des Pfads indem Sie auf das "
-"das gegenwärtige Ende des Pfades klicken und den Endpunkt erneut "
-"festlegen.\n"
+"In diesem Fall entfernen Sie den letzten Teil des Pfads, indem Sie auf das "
+"das gegenwärtige Ende des Pfades klicken und den Endpunkt erneut festlegen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:198
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:924
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:198
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:930
msgid "Notice that the Grade has changed on the Profile.\n"
msgstr "Beachten Sie, dass sich die Steigung im Höhenprofil geändert hat.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:205
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:926
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:932
msgid ""
"You can Ignore End-Points on the Path by using Shift-Right-Click to display "
"the Profile Options popup menu and chosing Ignore.\n"
msgstr ""
"Sie können Endpunkte auf dem Pfad ignorieren. Dazu halten Sie die "
-"Umschalttaste während Sie mit dem rechten Mausknopf klicjken. In den "
+"Umschalttaste während Sie mit dem rechten Mausknopf klicken. In den "
"Höhenprofil-Optionen wählen Sie ignorieren.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:927
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:933
msgid ""
"Note: We can't show the menu in demo mode but we will show the effect of a "
"Shift Right Click and selecting ignore. We will be Ignoring the End-Point "
"of the Turnout that is not on the Path.\n"
msgstr ""
-"Achtung: wir können das Menu im Demo-Modus nicht zeigen, zeigen aber den "
+"Achtung: wir können das Menü im Demo-Modus nicht zeigen, zeigen aber den "
"Effekt daraus. Wir werden den Endpunkt der Weiche, der nicht auf dem Pfad "
"liegt, ignorieren.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:217
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:929
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:217
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:935
msgid "Notice that part of the Profile line is redrawn in Blue.\n"
msgstr ""
"Beachten Sie, dass ein Teil des Höhenprofils in blauer Farbe neu gezeichnet "
"wurde.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:930
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:936
msgid ""
"Also, the Computed Elevations and Grade marker on the right side of the "
"layout have been updated.\n"
@@ -14419,27 +12519,26 @@ msgstr ""
"Außerdem wurden die berechneten Höhen und die Steigungsmarkierung auf der "
"rechten Seite des Gleisplans aktualisiert.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:225
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:932
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:938
msgid ""
"You can set additional Defined Elevation points using the Profile Options "
-"popup menu. These points are added to the Profile if they are on the "
-"Path.\n"
+"popup menu. These points are added to the Profile if they are on the Path.\n"
msgstr ""
"Sie können weitere Punkte mit festgelegter Höhe zufügen, indem Sie das "
-"Optionsmenu für Höhenprofile benutzen. Diese Punkte werden zu dem "
+"Optionsmenü für Höhenprofile benutzen. Diese Punkte werden zu dem "
"Höhenprofil zugefügt, wenn Sie auf dem Pfad liegen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:933
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:939
msgid ""
"We do this by Shift Right Click to display the Profile Options popup menu "
"and selecting Define.\n"
msgstr ""
-"Dies geschieht durch durch Umschalt-Rechtsklick um das Optionsmenu für "
-"Höhenprofile zu erhalten uns auswählen von Festlegen.\n"
+"Dies geschieht durch Umschalt-Rechtsklicken, um das Optionsmenü für "
+"Höhenprofile zu erhalten und das Auswählen von Festlegen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:237
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:935
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:237
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:941
msgid ""
"We've just added a Defined Elevation point to the middle of the lower "
"branch. Notice the addition on the Profile dialog.\n"
@@ -14447,17 +12546,17 @@ msgstr ""
"Wir haben gerade eine festgelegte Höhe in der Mitte des unteren Abzweigs "
"erstellt. Beachten Sie die Ergänzung im Höhenprofil.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:246
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:937
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:246
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:943
msgid ""
-"For the siding we defined a Station name but it's not on the Path, since the"
-" Path takes the shortest distance between points.\n"
+"For the siding we defined a Station name but it's not on the Path, since the "
+"Path takes the shortest distance between points.\n"
msgstr ""
"Für das Ausweichgleis haben einen einen Bahnhofsnamen vergeben. Dieser ist "
"nicht auf dem Pfad, da ein Pfad immer den kürzesten Weg zwischen Punkten "
"nutzt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:938
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:944
msgid ""
"We can Ignore one of the End-Points on a Turnout to force the Path to take "
"the other route.\n"
@@ -14465,41 +12564,41 @@ msgstr ""
"Wir können durch Ignorieren eines des der Endpunkte an einer Weiche "
"erzwingen, dass der Pfad die andere Route nimmt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:939
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:945
msgid ""
"Again we use Shift-Right-Click to display the Profile Options menu and "
"select ignore.\n"
msgstr ""
-"Wieder benutzen wir Umschalt-Rechtsklick um das Optionsmenu für das "
+"Wieder benutzen wir Umschalt-Rechtskicken um das Optionsmenü für das "
"Höhenprofil anzuzeigen und wählen ignorieren.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:258
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:941
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:947
msgid "Now remove the First section of the Path,\n"
msgstr "Jetzt entfernen Sie den ersten Teil des Pfads\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:268
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:943
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:268
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:949
msgid "and reselect it.\n"
msgstr "und wählen ihn wieder.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:277
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:945
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:277
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:951
msgid ""
"Now the Path goes through the Station End-Point and the name appears on the "
"Profile dialog.\n"
msgstr ""
-"Jetzt führt der Pfad durch den Endpunkt am Bahnhof und der Name erscheint im"
-" Höhenprofil.\n"
+"Jetzt führt der Pfad durch den Endpunkt am Bahnhof und der Name erscheint im "
+"Höhenprofil.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:286
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:947
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:286
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:953
msgid "Now we need to increase the separation where the tracks cross.\n"
msgstr ""
-"Jetzt müssen wir den Höhenunterschied an der Stelle vergrössern, an der die "
+"Jetzt müssen wir den Höhenunterschied an der Stelle vergrößern, an der die "
"Gleise sich kreuzen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:948
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:954
msgid ""
"The two Elevations you see here are Computed Elevations which means "
"XTrackCAD dynamically computes the Elevation based on the Elevations of "
@@ -14508,23 +12607,23 @@ msgstr ""
"Die beiden Höhen die Sie hier sehen, sind berechnete Werte. Das bedeutet, "
"dass XTrackCAD die Höhe auf Grundlage verbundener Gleise berechnet.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:949
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:955
msgid ""
"First make the lower End-Point a Defined Elevation point using Shift-Right-"
"Click and the Profile Options menu. You will see the End-Point marked by a "
"Gold dot and a new line is added to the Profile dialog.\n"
msgstr ""
"Markieren Sie zuerst den unteren Endpunkt als festgelegt. Dies geschieht "
-"durch Umschalt-Rechtsklick und das Optionsmenu für das Höhenprofil. Sie "
-"werden sehen, dass der Endpunkt jetzt mit einem goldenen Punkt markiert ist."
-" Dem Höhenprofil wurde eine neue Linie zugefügt.\n"
+"durch Umschalt-Rechts-Klicken und das Optionsmenü für das Höhenprofil. Sie "
+"werden sehen, dass der Endpunkt jetzt mit einem goldenen Punkt markiert ist. "
+"Dem Höhenprofil wurde eine neue Linie zugefügt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:297
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:951
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:297
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:957
msgid "Now, drag the point on the Profile Dialog to change the Elevation.\n"
msgstr "Jetzt ziehen Sie den Punkt im Höhenprofil um die Höhe zu ändern.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:952
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:958
msgid ""
"Note the grade on each side of the point will be displayed at the bottom of "
"the Profile dialog.\n"
@@ -14532,8 +12631,8 @@ msgstr ""
"Beachten Sie, dass die Steigung auf beiden Seiten des Punktes im "
"Dialogfenster unten angezeigt wird.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:319
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:954
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:319
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:960
msgid ""
"After we release the Profile is updated to show the new Elevation and "
"Grade.\n"
@@ -14541,53 +12640,61 @@ msgstr ""
"Nach dem Loslassen des Mausknopfes wird das Höhenprofil aktualisiert um die "
"neue Höhe und Steigung anzuzeigen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:326
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:119
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:957
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:326
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:119
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:963
msgid "The <Rescale> command will change the size of the selected objects.\n"
-msgstr "Der Befehl <Skalieren>verändert die Größe der ausgwählten Objekte.\n"
+msgstr "Der Befehl <Skalieren>verändert die Größe der ausgewählten Objekte.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:958
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:964
+msgid ""
+"Note: due to technical reasons, the To Scale drop down list is blank. For "
+"this demo it should show 'DEMO'.\n"
+msgstr ""
+"Hinweis: Aus technischen Gründen ist die \"Zum Maßstab\" Auswahlliste leer. "
+"Für diese Demo sollte dort 'DEMO'stehen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:965
msgid "First we will try rescaling by ratio.\n"
msgstr "Zuerst skalieren wir über das Verhältnis.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:126
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:960
-msgid "We are going to make everything 150% bigger.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:967
+msgid "We are going to make everything 150 percent bigger.\n"
msgstr "Wir vergrößern alles auf 150 Prozent.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:136
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:962
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:138
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:969
msgid "Note the track gauge did not change.\n"
msgstr "Beachten Sie, dass die Spurweite nicht geändert wurde.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:143
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:964
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:971
msgid "Let's try that again.\n"
msgstr "Lassen Sie uns das nochmals versuchen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:965
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:972
msgid "Now we are going to convert from one scale to another.\n"
msgstr "Jetzt ändern wir von einem Maßstab zu einem anderen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:154
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:967
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:974
msgid "We will convert everything from N scale to HO scale...\n"
msgstr "Wir werden alles von Spur N nach Spur H0 umwandeln...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:161
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:969
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:976
msgid "and change the track gauge as well.\n"
msgstr "und die Spurweite gleichzeitig ändern.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:169
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:971
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:171
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:978
msgid "Note that the Title of the turnout did not change.\n"
msgstr "Beachten Sie, dass der Titel der Weiche nicht geändert wurde.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:177
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrotate.xtr:72
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:974
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:179
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:981
msgid ""
"The <Rotate> command will pivot the Selected objects. First Click on the "
"pivot point and then drag to Rotate the objects.\n"
@@ -14596,31 +12703,31 @@ msgstr ""
"Klicken Sie zuerst auf das Zentrum der Drehbewegung und ziehen dann, um die "
"Objekte zu drehen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:975
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:982
msgid ""
"In this example we will rotate the selected structure about it's center.\n"
msgstr ""
"In diesem Beispiel werden wir das Gebäude um seinen Mittelpunkt drehen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrotate.xtr:135
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:977
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:135
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:984
msgid ""
-"The <Rotate> command will restrict the rotation to increments of 15° if you "
+"The <Rotate> command will restrict the rotation to increments of 15° if you "
"hold down the <Shift> and <Ctrl> keys.\n"
msgstr ""
-"Der Drehwinkel wird auf Vielfache von 15° begrenzt, wenn Sie die Umschalt "
+"Der Drehwinkel wird auf Vielfache von 15° begrenzt, wenn Sie die Umschalt- "
"und die Strg-Taste gleichzeitig gedrückt halten.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrotate.xtr:316
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:979
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:316
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:986
msgid ""
"There are Rotate options that you can access by Shift-Right-Click command "
"menu and choosing 'Rotate...'.\n"
msgstr ""
-"Es gibt Rotationsoptionen, auf die Sie über das Umschalt-Rechts-Klick-"
+"Es gibt Rotationsoptionen, auf die Sie über das Umschalt-Rechtsklicken-"
"Befehlsmenü zugreifen können, indem Sie 'Rotieren...' wählen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:980
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:987
msgid ""
"You can rotate the selected object by a fixed rotatation (15, 30, 45, 90, "
"180) either clockwise or counter-clockwise, or by manually entering any "
@@ -14630,102 +12737,144 @@ msgstr ""
"180) entweder im oder gegen den Uhrzeigersinn oder durch manuelle Eingabe "
"eines beliebigen Winkels drehen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:981
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:988
msgid ""
"The other option is 'Align' which allows you align selected objects with an "
"unselected object. This is useful to align railside buildings with track.\n"
msgstr ""
-"Die andere Option ist 'Ausrichten', mit der Sie ausgewählte Objekte an einem"
-" nicht ausgewählten Objekt ausrichten können. Dies ist nützlich, um "
+"Die andere Option ist 'Ausrichten', mit der Sie ausgewählte Objekte an einem "
+"nicht ausgewählten Objekt ausrichten können. Dies ist nützlich, um "
"schienenseitige Gebäude an der Schiene auszurichten.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:982
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:989
msgid "Unfortunately, we can not currently demonstrate these features.\n"
msgstr "Leider können wir diese Merkmale derzeit nicht demonstrieren.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrotate.xtr:529
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmruler.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:985
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:529
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:992
msgid ""
"The <Ruler> command draws a Ruler on the layout you can use to measure "
"distances.\n"
msgstr ""
-"Mit dem Befehl <Lineal> wird ein Lineal auf den Gleisplan gezeichnet. Dieses"
-" kann genutzt werden, um Abstände zu messen.\n"
+"Mit dem Befehl <Lineal> wird ein Lineal auf den Gleisplan gezeichnet. Dieses "
+"kann genutzt werden, um Abstände zu messen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmruler.xtr:24
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:987
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:994
msgid "If you press the <Ruler> command again the Ruler is removed.\n"
msgstr ""
-"Wenn Sie den Befehl <Lineal> nochmals Anklicken, wird das Lineal wieder "
+"Wenn Sie den Befehl <Lineal> nochmals anklicken, wird das Lineal wieder "
"entfernt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmruler.xtr:32
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:989
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:996
msgid "But you can place it somewhere else.\n"
msgstr "Aber Sie können dieses auch an eine andere Stelle versetzen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmruler.xtr:42
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:173
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:992
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:42
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:173
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:999
msgid "The <Select> command is used to select tracks.\n"
msgstr "Der Befehl <Auswahl> wird benutzt, um Objekte auszuwählen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:993
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1000
msgid "Selected tracks can be moved or rotated during the <Select> command.\n"
msgstr "Ausgewählte Gleise können verschoben und gedreht werden.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:994
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1001
msgid "Selected tracks can also be deleted, hidden, listed and exported.\n"
msgstr ""
"Ausgewählte Gleise können auch gelöscht, verborgen, aufgelistet und "
"exportiert werden.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:995
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1002
msgid ""
"When you move the cursor near a track that could be selected, the track is "
-"drawn with think blue lines.\n"
+"drawn with thick blue lines.\n"
msgstr ""
-"Wenn Sie den Cursor in die Nähe eines Gleises bewegen, das ausgewählt werden"
-" könnte, wird dieses mit blauen Linien gezeichnet.\n"
+"Wenn Sie den Cursor in die Nähe eines Gleises bewegen, das ausgewählt werden "
+"kann, wird dieses mit dicken blauen Linien gezeichnet.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:184
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:997
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1004
+msgid ""
+"The Select operates in two modes which are controled by the Options|Command "
+"menu.\n"
+msgstr ""
+"Die Auswahl arbeitet in zwei Modi, die durch Optionen|Kommando ausgewählt "
+"werden.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:191
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1006
+msgid ""
+"In 'classic' mode, clicking on an object adds it to set of selected "
+"objects.\n"
+msgstr ""
+"Im 'Klassik'-Modus wird ein Objekt durch Klicken zur Auswahl zugefügt.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:197
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1008
+msgid ""
+"In the 'new' mode, clicking on an object deselectes all other objects, "
+"leaving just the newly selected object.\n"
+msgstr ""
+"Im 'Neuen' Modus, wird durch Klicken die bisherige Auswahl geleert, sodass "
+"nur das neu ausgewählte Objekt in der Auswahl ist.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1009
+msgid "Holding down the Ctrl key reverses this behavior.\n"
+msgstr "Drücken und halten Sie die Strg-Taste kehrt diese Verhalten um.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1010
+msgid "This demo will use the 'new' mode.\n"
+msgstr "Diese Demo wird die Vorgehensweise 'Neu' benutzen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1011
+msgid ""
+"There is also an option to the control the behavior of clicking on empty "
+"space: do nothing or deselecting all objects.\n"
+msgstr ""
+"Es gibt auch eine Option die steuert, was geschieht, wenn auf einen leeren "
+"Bereich geklickt wird: nichts tun oder alle Objekte deselektieren.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:208
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1013
msgid "A Left-Click selects a track\n"
msgstr "Ein Klick mit der linken Maustaste wählt ein Gleis aus.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:192
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:999
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:216
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1015
msgid ""
"The selected track will have red X's drawn where it is connected to "
"unselected tracks. This indicates where the track will be disconnected if "
"the selected tracks are moved, rotated or deleted.\n"
msgstr ""
-"Am ausgewählten Gleis zeigen rote X an, wo dieses mit Gleisen verbunden ist,"
-" die nicht ausgewählt sind. Diese Verbindungen werden gelöst, wenn das "
+"Am ausgewählten Gleis zeigen rote X an, wo dieses mit Gleisen verbunden ist, "
+"die nicht ausgewählt sind. Diese Verbindungen werden gelöst, wenn das "
"ausgewählte Gleise verschoben, gedreht oder gelöscht wird. \n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1000
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1016
msgid "A Ctrl-Left-Click adds tracks to the selection\n"
-msgstr "Mit einem Strg-Links-Klick werden Gleise zur Auswahl hinzugefügt.\n"
+msgstr "Mit einem Strg-Linksklick werden Gleise zur Auswahl hinzugefügt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:211
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1002
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:235
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1018
msgid "Selecting a selected track re-selects only it.\n"
msgstr ""
"Durch erneutes Auswählen eines bereits ausgewählten Gleises bleibt nur "
"dieses ausgewählt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:219
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1004
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1020
msgid "Selecting off all tracks de-selects them.\n"
msgstr ""
"Durch Klicken außerhalb des Auswahlbereichs wird die Auswahl der Gleise "
"wieder aufgehoben.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:227
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:232
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1007
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:251
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:256
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1023
msgid ""
"To demonstrate Select Connected, first select two tracks at the end of a "
"part to be selected \n"
@@ -14733,45 +12882,45 @@ msgstr ""
"Um Auswahl verbundener Gleise zu demonstrieren, wählen Sie zunächst zwei "
"Gleise am Ende eines Teils, der ausgewählt werden soll\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:248
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1009
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:272
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1025
msgid ""
"Shift-Left-Click on a track will select all unselected tracks connected to "
"the track. Selection stops at a previously selected track.\n"
msgstr ""
-"Umschalt-Links-Klick auf ein Gleis wählt alle Gleise aus, die mit diesem "
-"verbunden sind. Der Vorgang bricht ab, sobald ein Gleis bereits ausgewählt "
-"ist.\n"
+"Umschalt-Linksklicken auf ein Gleis wählt alle Gleise aus, die mit diesem "
+"verbunden sind. Der Vorgang bricht ab, sobald ein verbundenes Gleis bereits "
+"ausgewählt ist.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:260
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1011
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:284
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1027
msgid ""
"Be careful with this because its very easy to select all tracks this way\n"
msgstr ""
"Seien Sie vorsichtig, denn es ist sehr einfach unbeabsichtigt alle Gleise "
"auszuwählen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:274
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1013
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1029
msgid "The <esc> key will deselect all objects.\n"
msgstr "Mit der Taste <Esc> werden alle Objekte abgewählt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:282
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:287
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1016
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:310
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:315
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1032
msgid "Left-Drag is used to select all objects within an area.\n"
msgstr ""
"Ziehen mit gedrückter linker Maustaste wählt alle Objekt in einem Bereich "
"aus.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:295
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1018
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:323
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1034
msgid "Shift-Left-Drag is used to move selected tracks.\n"
msgstr ""
-"Links-Ziehen bei gedrückter Umschalt-Taste wird benutzt um die ausgewählten "
+"Links-Ziehen bei gedrückter Umschalt-Taste wird benutzt, um die ausgewählten "
"Gleise zu verschieben.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1019
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1035
msgid ""
"When you move selected tracks that are connected to unselected tracks, the "
"tracks will be disconnected. These points are marked by a Red cross on the "
@@ -14781,25 +12930,23 @@ msgstr ""
"ausgewählt sind, wird die Verbindung gelöst. Diese Punkte werden durch ein "
"rotes Kreuz auf dem Gleisplan markiert.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1020
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1036
msgid ""
"If the unconnected end point of a track and one being moved are close "
"enough, two circles are displayed, showing where the tracks will be snapped "
"together. \n"
msgstr ""
-"Wenn ein unverbundener Endpunkt eines Gleises und der zu verschiebende nahe "
-"genug beieinander liegen, werden zwei Kreise angezeigt, die zeigen, wo die "
-"Gleise verbunden werden.\n"
+"Wenn ein unverbundener Endpunkt eines Gleises und das Gleis, das im Moment "
+"verschoben wird, nahe genug beieinander liegen, werden zwei Kreise "
+"angezeigt. Diese zeigen, wo die Gleise verbunden werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:313
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1022
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:341
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1038
msgid "Let's move the Main window to see what's going on next\n"
-msgstr ""
-"Wir werden das Hauptfenster bewegen, um zu sehen, was passiert.\n"
-"\n"
+msgstr "Wir werden das Hauptfenster bewegen, um zu sehen, was passiert.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:320
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1024
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:348
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1040
msgid ""
"Ctrl-Left-Drag rotates the selected tracks about the pivot point (which is "
"where you started the drag)\n"
@@ -14807,81 +12954,82 @@ msgstr ""
"Strg-Rechts-Ziehen dreht die ausgewählten Gleise um das Zentrum, d.h. der "
"Punkt an dem Sie das Ziehen begonnen haben.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:382
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:387
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1027
-msgid "Next we select the <Join Tracks> command to demonstrate \"Move To Join\" \n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:410
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:415
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1043
+msgid ""
+"Next we select the <Join Tracks> command to demonstrate \"Move To Join\" \n"
msgstr ""
"Als nächstes wählen wir den Befehl <Verbinde Gleise>, um \"Verschieben zum "
"Verbinden\" zu demonstrieren\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:392
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1029
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:420
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1045
msgid ""
"You can use Shift-Left-Click to select an open endpoint of a selected track "
"to join with an unselected track. \n"
msgstr ""
-"Mit Umschalt-Links-Klick können Sie einen offenen Endpunkt eines "
+"Mit Umschalt-Linksklicken können Sie einen offenen Endpunkt eines "
"ausgewählten Gleises auswählen, um es mit einem nicht ausgewählten Gleis zu "
"verbinden.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1030
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1046
msgid "We'll move the Main window again.\n"
msgstr "Wir werden das Hauptfenster wieder bewegen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:415
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1032
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:443
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1048
msgid ""
"You then Left-Click on an endpoint of a unselected track to move the "
"selected tracks to join. \n"
msgstr ""
"Klicken Sie dann mit der linken Maustaste auf einen Endpunkt eines nicht "
-"ausgewählten Gleises, um die ausgewählten Gleise zum Verbinden zu "
-"verschieben.\n"
+"ausgewählten Gleises, um die ausgewählten Gleise an diese Stelle zu "
+"verschieben nd zu verbinden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:430
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:30
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1035
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:458
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1051
msgid "The <Split> command is used to split and disconnect tracks.\n"
msgstr ""
-"Der Befehl <Trennen> wird benutzt, um Gleise zu zerteilen und voneinander zu"
-" trennen.\n"
+"Der Befehl <Trennen> wird benutzt, um Gleise zu trennen und auseinander zu "
+"ziehen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:35
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1037
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:35
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1053
msgid "Simply select the spot on the track you want to split.\n"
msgstr ""
-"Wählen Sie einfach die Stelle des Gleises aus, an der dieses getrennt werden"
-" soll.\n"
+"Wählen Sie einfach die Stelle des Gleises aus, an der dieses getrennt werden "
+"soll.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1038
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1054
msgid "You cannot split turnouts (unless you hold down the Shift key).\n"
msgstr ""
"Weichen können nur getrennt werden, wenn Sie die Umschalttaste drücken.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:48
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1040
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1056
msgid ""
"If you split at spot that is already an End-Point between two tracks, or "
"split twice at the same spot, the track is disconnected.\n"
msgstr ""
-"Wenn Sie an einem vorhandenen Endpunkt zerteilen oder wenn die an einer "
-"Stelle doppelt zerteilen werden die Gleise getrennt.\n"
+"Wenn Sie an einem vorhandenen Endpunkt trennen oder wenn die an einer Stelle "
+"doppelt trennen, werden die Gleise auseinander gezogen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:60
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:65
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1043
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:60
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1059
msgid "The <Tunnel> command marks selected tracks as hidden.\n"
msgstr "Mit dem Befehl <Tunnel> verbergen Sie die ausgewählten Gleise.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1044
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1060
msgid ""
"A tunnel portal is drawn at the boundary between hidden and normal track.\n"
msgstr ""
"Ein Tunnelportal wird am Ãœbergang zwischen sichtbarem und verborgenem Gleis "
"gezeichnet.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1045
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1061
msgid ""
"How the hidden tracks are drawn (solid, dashed or invisible) is controlled "
"by the Draw EndPts radio button group on the Setup dialog.\n"
@@ -14889,46 +13037,47 @@ msgstr ""
"Die Darstellung des verborgenen Gleises (durchgezogen, gestrichelt oder "
"unsichtbar) kann in den Einstellungen festgelegt werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:86
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1047
-msgid "To 'un-hide' a track just Select it again and click the Tunnel button.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1063
+msgid ""
+"To 'un-hide' a track just Select it again and click the Tunnel button.\n"
msgstr ""
"Um die Gleise wieder sichtbar zu machen, wählen Sie diese aus und "
"wiederholen den Befehl <Tunnel>.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:100
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmstrtrk.xtr:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1050
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:100
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1066
msgid ""
"Straight tracks are created by selecting the first End-Point of the track.\n"
msgstr ""
"Gerade Gleise werden erstellt indem der erste Endpunkt des Gleises gewählt "
"wird.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmstrtrk.xtr:12
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1052
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1068
msgid "Then the other End-Point is dragged to its final postion.\n"
msgstr ""
-"Dann wird der zweite Endpunkkt durch Ziehen an die richtige Position "
+"Dann wird der zweite Endpunkt durch Ziehen an die richtige Position "
"gebracht.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmstrtrk.xtr:20
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1054
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:20
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1070
msgid "The left mouse button is released at the final end postion.\n"
msgstr "An diesem Punkt wird der linke Mausknopf los gelassen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmstrtrk.xtr:27
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtbledg.xtr:23
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1057
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:27
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1073
msgid ""
"Table Edges are used to mark the edges of the layout, either for aisles or "
"room walls.\n"
msgstr ""
-"Tischkanten werden benutzt um die Ränder des Gleisplans, entweder für "
-"Zugänge oder Wände benutzt.\n"
+"Tischkanten werden benutzt um die Ränder des Gleisplans anzuzeigen, entweder "
+"für Zugänge oder Wände.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtbledg.xtr:47
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1059
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1075
msgid ""
"A Table Edge is attracted to other objects, unless you hold down the Alt "
"key.\n"
@@ -14936,23 +13085,23 @@ msgstr ""
"Eine Tischkante wird von anderen Objekten angezogen, sofern Sie nicht die "
"Alt-Taste drücken.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtbledg.xtr:145
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1061
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:145
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1077
msgid "Table Edges can be modified by dragging on their ends.\n"
msgstr "Tischkanten können durch Ziehen an den Enden geändert werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtbledg.xtr:193
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1063
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:193
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1079
msgid ""
"Unless you hold down the Alt key while dragging then the Table Edge will be "
"attracted to other objects.\n"
msgstr ""
-"Die Tischkante wird von anderen Objekten angezogen, sofern Sie nicht die "
-"Alt-Taste während des Ziehen gedrückt halten. \n"
+"Die Tischkante wird von anderen Objekten angezogen, sofern Sie nicht die Alt-"
+"Taste während des Ziehen gedrückt halten. \n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtbledg.xtr:231
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtodes.xtr:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1066
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:231
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1082
msgid ""
"These examples shows some of the various Turnout Designer windows. Each "
"window defines a different type of turnout.\n"
@@ -14960,7 +13109,7 @@ msgstr ""
"Diese Beispiele zeigen einige der Dialogfenster des Weichendesigner. Jeder "
"Dialog wird für einen anderen Typ von Weichen benutzt.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1067
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1083
msgid ""
"In each window there are a number of parameters to fill in and one or two "
"description lines.\n"
@@ -14968,72 +13117,60 @@ msgstr ""
"In jedem Dialog müssen einige Parameter und eine oder zwei Zeilen "
"Beschreibungen eingetragen werden.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1068
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1084
msgid "You can print the design to check the dimensions before saving them.\n"
msgstr ""
-"Sie können den Entwurf vor dem Speichen ausdrucken. Damit können Sie zur "
-"Kontrolle die Abmessungen prüfen.\n"
+"Sie können den Entwurf vor dem Speichern ausdrucken. Damit können Sie die "
+"Abmessungen prüfen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtodes.xtr:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1070
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1086
msgid "This is the regular turnout.\n"
msgstr "Dies ist eine normale Weiche.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1071
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1087
msgid ""
"In addition to the dimensions, you also enter the Title (Manufacturer, "
"Description and Part Number). For Turnouts with Left and Right hand "
"versions there are separate Descriptions and Part Numbers.\n"
msgstr ""
"Neben den Abmessungen müssen auch die Beschreibung der Weiche, d.h. "
-"Hersteller, Beschreibung und Teilenummer, eingegeben werden. Für Weichen mit"
-" rechten und linken Abzweigen werden die Beschreibung und die Teilenummern "
+"Hersteller, Beschreibung und Teilenummer, eingegeben werden. Für Weichen mit "
+"rechten und linken Abzweigen werden die Beschreibung und die Teilenummern "
"getrennt erfasst.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1072
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1088
msgid ""
"Some Turnouts and Sectional track are pre-mounted on roadbed. For these "
"parts you can specify the width of the roadbed, the thickness of the lines "
"drawn for the edge of the roadbed and the color.\n"
msgstr ""
-"Einige Weichen und Festgleise besitzen ein festes Gleisbett. Für diese Teile"
-" können Sie die Breite des Gleisbetts und Dicke und Farbe der "
+"Einige Weichen und Festgleise besitzen ein festes Gleisbett. Für diese Teile "
+"können Sie die Breite des Gleisbetts sowie Dicke und Farbe der "
"Begrenzungslinien festlegen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtodes.xtr:30
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1074
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1090
msgid "The double slip switch is described by only a few parameters.\n"
-msgstr "Für eine doppelte Kreuzungsweiche wird durch wenige Daten festgelegt.\n"
+msgstr ""
+"Für eine doppelte Kreuzungsweiche wird durch wenige Daten festgelegt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtodes.xtr:40
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1076
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1092
msgid "The double crossover only needs length and track separation.\n"
msgstr ""
"Eine doppelter Gleiswechsel erfordert nur die Gleislänge und den "
"Gleisabstand.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtodes.xtr:48
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:30
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1079
-msgid ""
-"Pressing the turnout button displays the Turnout Selection window to let you"
-" choose a turnout to place.\n"
-msgstr ""
-"Durch Drücken des Knopfes <Weiche> wird das Weichenauswahl-Fenster geöffnet."
-" Hier können Sie eine Weiche auswählen.\n"
-
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1080
-msgid ""
-"Note that once you start to place the turnout on the Main window the Turnout"
-" Selection window disappears. This feature is enabled by the Hide toggle "
-"button on the dialog.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:48
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1095
+msgid "We chose the turnout we want to place by clicking on the HotBar.\n"
msgstr ""
-"Beachten Sie, dass das Weichenauswahl-Fenster verschwindet sobald Sie mit "
-"dem Legen der Weiche beginnen. Diese Eigenschaft wird durch den 'Verbergen' "
-"Schalter des Dialogs eingeschaltet.\n"
+"Wir wählen die Weiche, die wir benutzen wollen, aus der Schnellauswahl.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:38
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1082
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1097
msgid ""
"You can place the turnout on a arbitrary position on the layout. Left-drag "
"the turnout into place...\n"
@@ -15041,134 +13178,145 @@ msgstr ""
"Sie können die Weiche an eine beliebigen Position auf dem Gleisplan legen. "
"Ziehen Sie die Weiche an den richtigen Platz...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:85
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1084
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1099
+msgid "We are moving the Turnout by dragging on the 'Active End Point'\n"
+msgstr "Wir verschieben die Weiche durch Ziehen am aktiven Endpunkt.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1100
+msgid "We can change the 'Active End Point' by a Shift-Left-Click\n"
+msgstr ""
+"Wir können den aktiven Endpunkt durch Linksklicken bei gedrückter "
+"Umschalttaste wechseln.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1102
+msgid "Notice the Turnout has rotated to the next End Point.\n"
+msgstr "Beachten Sie, dass die Weiche am nächsten Endpunkt ausgerichtet ist.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1104
+msgid ""
+"If we continue to Shift-Left-Click 2 more times, we will return to the "
+"original position.\n"
+msgstr ""
+"Wenn wir noch zwei Mal bei gedrückter Umschalttaste linksklicken sind wir "
+"wieder an der Ausgangsposition.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:123
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1106
msgid "Then you can rotate the turnout by Right dragging.\n"
msgstr ""
"Dann können Sie die Weiche durch Ziehen mit der rechten Maustaste drehen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1085
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1107
msgid ""
"You can also use Shift-Right-Click to display a popup menu that lets you "
"rotate the Turnout by specific angles.\n"
msgstr ""
-"Sie können mit Umschalten-Rechts-Klick ein Fenster öffnen, das das Drehen um"
-" feste Winkel ermöglicht.\n"
+"Sie können mit Umschalten-Rechtsklicken ein Fenster öffnen, das das Drehen "
+"um feste Winkel ermöglicht.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:136
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1087
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:174
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1109
msgid ""
"When you are satisfied with the position and orientation of the turnout "
"press Space bar or the Return key on the keyboard to finish placing the "
"turnout.\n"
msgstr ""
"Wenn Sie mit der Position und der Ausrichtung der Weiche zufrieden sind, "
-"drücken Sie Leertaste oder die Eingabetaste der Tastatur um den Befehl "
-"abzuschliessen.\n"
+"drücken Sie Leertaste oder die Eingabetaste um den Befehl abzuschließen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1088
-msgid ""
-"Pressing the Close button on the Turnout dialog will end the <Turnout> "
-"command as well as placing the turnout.\n"
-msgstr ""
-"Durch Drücken des Schliessen-Knopfes im Dialogfenster können Sie den Befehl "
-"beenden und die Weiche festlegen.\n"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:146
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:189
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1091
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:182
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1112
msgid ""
"If you drag along an existing track the new turnout will be attached to the "
"track.\n"
msgstr ""
-"Wenn Sie die Weiche auf existierendes Gleis ziehen, so wird sie mit dem "
+"Wenn Sie die Weiche auf existierendes Gleis ziehen, so wird diese mit dem "
"Gleis verbunden.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1092
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1113
msgid ""
"Note that the status line tells you the number of End-Points that would be "
"connected and, the maximum displacement of the End-Points. This will be "
"useful when building complex track, as we will see later.\n"
msgstr ""
-"Beachten Sie, dass in der Statuszeile angezeigt wird. wieviele Endpunkte der"
-" Weiche verbunden würden und wie groß der maximale Abstand zu den Endpunkten"
-" ist. Wie wir später sehen werden ist diese Information hilfreich, um "
+"Beachten Sie, dass in der Statuszeile angezeigt wird. wieviele Endpunkte der "
+"Weiche verbunden würden und wie groß der maximale Abstand zu den Endpunkten "
+"ist. Wie wir später sehen werden ist diese Information hilfreich, um "
"komplexe Gleiskonfigurationen zu erstellen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:220
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1094
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:256
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1115
msgid ""
"By moving the cursor from one side to the other of the track centerline you "
-"can flip the turnout 180ᅵ.\n"
+"can flip the turnout 180°.\n"
msgstr ""
-"Durch Bewegen des Mauszeiger von einer Seite des Gleises auf die andere wird"
-" die Weiche um 180° gedreht.\n"
+"Durch Bewegen des Mauszeiger von einer Seite des Gleises auf die andere wird "
+"die Weiche um 180° gedreht.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:236
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1096
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:272
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1117
msgid ""
-"If you try to drag across another turnout the new turnout will placed at the"
-" nearest End-Point of the existing turnout.\n"
+"If you try to drag across another turnout the new turnout will placed at the "
+"nearest End-Point of the existing turnout.\n"
msgstr ""
-"Wenn Sie die neue Weiche über eine existierende Weiche ziehen, wird die neue"
-" Weiche mit dem nächstgelegenen Endpunkt der vorhandenen Weiche verbunden.\n"
+"Wenn Sie die neue über eine existierende Weiche ziehen, wird die neue Weiche "
+"mit dem nächstgelegenen Endpunkt der vorhandenen Weiche verbunden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:299
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1098
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:335
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1119
msgid ""
"When you press Space or Return while the turnout is on a track, the track "
"will be split and the new turnout attached automatically.\n"
msgstr ""
-"Wenn Sie die Leer- oder die Eingabetaste drücken während die Weiche auf "
+"Wenn Sie die Leer- oder die Eingabetaste drücken, während die Weiche auf "
"einem Gleis ist, wird dieses Gleis getrennt und die Weiche wird automatisch "
"verbunden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:307
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:366
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1101
-msgid "Pressing Close ends the <Turnout> command.\n"
-msgstr "Durch Drücken von <Schliessen> wird der Befehl <Weiche> beendet.\n"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:372
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:21
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1104
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:343
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:408
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1123
msgid "Sometimes it's useful to modify turnouts triming one of the ends.\n"
msgstr ""
-"Manchmal ist es sinnvoll, eine Weich durch Kürzen der Enden anzupassen.\n"
+"Manchmal ist es sinnvoll, eine Weiche durch Kürzen der Enden anzupassen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1105
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1124
msgid "We use the <Split> command for this.\n"
msgstr "Dafür benutzen wir den Befehl <Trennen>.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:28
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1107
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1126
msgid "Normally, if we try to Split a turnout we get an error message.\n"
msgstr ""
-"Normalerweise bekommen wir eine Fehlermeldung, wenn wir versuchen eine "
+"Normalerweise erhalten wir eine Fehlermeldung, wenn wir versuchen eine "
"Weiche zu trennen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:37
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1109
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1128
msgid "Hold down the Shift key and try again.\n"
msgstr ""
"Drücken und halten Sie die Umschalten-Taste und versuchen es nochmals.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:52
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1111
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:52
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1130
msgid ""
"The end of the turnout has been replaced by a piece of straight flex track "
"which we can modify.\n"
msgstr ""
-"Das Ende der Weiche wurde durch ein Stück gereden Gleises ersetzt. Dieses "
+"Das Ende der Weiche wurde durch ein Stück gerades Flexgleis ersetzt. Dieses "
"können wir verändern.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1113
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1132
msgid "We can try splitting the diverging leg.\n"
-msgstr "Wir können versuchen, das abzweigende Gleis zu trennen.\n"
+msgstr "Wir können versuchen, das abzweigende Gleis zu trennen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:74
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1115
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:74
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1134
msgid ""
"Notice that the tail of the diverging leg has been changed to a curved "
"track...\n"
@@ -15176,41 +13324,38 @@ msgstr ""
"Beachten Sie, dass das abzweigende Gleis in ein gebogenes Gleis umgewandelt "
"wurde...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:84
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1117
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1136
msgid "and a straight track.\n"
msgstr "und ein gerades Gleis.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:92
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:12
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1120
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:92
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1139
msgid ""
-"This example show how to layout a yard using the <Turnout> and <Parallel> "
-"commands.\n"
+"This example show how to layout a yard using Turnouts from the HotBar and "
+"the <Parallel> command.\n"
msgstr ""
-"Dieses Beispiel zeigt wie mit den Befehlen <Weiche> und <Paralleles Gleis> "
-"eine Gleisharfe erstellt werden kann.\n"
+"Dieses Beispiel zeigt, wie mit den Weichen aus der Schnellzugriffsliste und "
+"dem Befehl zum Zeichnen von parallelem Gleis eine Gleisharfe erstellt werden "
+"kann.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:17
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1122
-msgid ""
-"You can resize and move the Turnout Selection dialog if it obscures the "
-"other windows.\n"
-msgstr ""
-"Sie können den Weichenauswahl-Dialog verkleinern und verschieben, wenn er "
-"andere Fensterbereiche verdeckt.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:19
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1141
+msgid "We'll choose a Turnout from the HotBar\n"
+msgstr "Wir wählen eine Weiche von der Auswahlleiste aus\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1123
-msgid "First we place a turnout on the main line.\n"
-msgstr "Zuerst legen wir eine Weiche auf das Hauptgleis.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1142
+msgid "Then we place the Turnout on the main line.\n"
+msgstr "Dann legen wir eine Weiche auf das Hauptgleis.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:35
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1125
-msgid "Next extend the turnout with the <Modify> command.\n"
-msgstr "Dann erweitern wir die Weiche mit dem Befehl <Verändern>.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1144
+msgid "Next extend the Turnout with the <Modify> command.\n"
+msgstr "Als nächstes erweitern wir die Weiche mit dem Befehl <Verändern>.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:46
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1127
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1146
msgid ""
"Now create a track parallel to the main line. Make sure the separation is "
"reasonable for your scale.\n"
@@ -15218,329 +13363,2987 @@ msgstr ""
"Jetzt erstellen Sie ein Gleis, das parallel zum Hauptgleis liegt. Stellen "
"Sie sicher, dass der Gleisabstand für Ihren Maßstab geeignet ist.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:62
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1129
-msgid "And place a turnout to connect the new track.\n"
-msgstr "Und legen eine Weiche, um das neue Gleis anzuschliessen.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1148
+msgid "And place a Turnout to connect the new track.\n"
+msgstr "Und legen eine Weiche, um das neue Gleis anzuschließen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1130
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1149
msgid "We'll zoom in here to see what's going on.\n"
msgstr "Durch Vergrößern können wir sehen, was passiert.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:78
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1132
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:83
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1151
msgid ""
-"Notice how we control which way the turnout is facing by moving the mouse "
+"Notice how we control which way the Turnout is facing by moving the mouse "
"across the center line of the track.\n"
msgstr ""
-"Beachten Sie wie wir die Ausrichtung der Weiche beeinflussen indem wir die "
+"Beachten Sie, wie wir die Ausrichtung der Weiche beeinflussen, indem wir die "
"Maus über die Mittellinie des Gleise bewegen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:94
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1134
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1153
msgid ""
-"The Status bar displays the number of auto-connections that will be made and"
-" the maximum offset.\n"
+"The Status bar displays the number of auto-connections that will be made (3) "
+"and the maximum offset (0.000).\n"
msgstr ""
-"In der Statuszeile wird angezeigt, wieviele Endpunkte verbunden werden und "
-"wie große der maximale Abstand ist.\n"
+"In der Statuszeile wird angezeigt, wieviele Endpunkte automatisch verbunden "
+"werden (3) und wie groß der maximale Abstand ist (0.000).\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1135
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1154
msgid ""
-"XTrackCAD adjusts the turnout position for the best fit to minimize any "
+"XTrackCAD adjusts the Turnout position for the best fit to minimize any "
"connection offset\n"
msgstr ""
-"XTrackCAD verändert die Weichenposition um die beste Einpassung zu "
+"XTrackCAD verändert die Weichenposition, um die beste Einpassung zu "
"erreichen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:106
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1137
-msgid "Note that placing the turnout splits the parallel track.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1156
+msgid "Note that placing the Turnout splits the parallel track.\n"
msgstr ""
"Beachten Sie, dass durch die Weiche das parallele Gleis getrennt wurde.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1138
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1157
msgid "We have to delete the leftover piece by Selecting and Deleting it.\n"
msgstr "Dieses Reststück müssen wir auswählen und löschen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:120
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1140
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:126
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1159
msgid "Repeat the process for the other tracks in the yard.\n"
msgstr "Wiederholen Sie diesen Ablauf für die anderen Gleise der Gleisharfe.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:149
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1142
-msgid "For the last track we will join with a curve instead of a turnout.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1161
+msgid "For the last track we will join with a curve instead of a Turnout.\n"
msgstr ""
-"Beim letzten Gleis benutzen wir einen Gleisbogen anstelle einer Weiche.\n"
+"Das letzte Gleis verbinden wir mit einem Gleisbogen anstelle einer Weiche.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:185
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrkwid.xtr:91
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1145
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1164
msgid "We can indicate the mainline by making the rails wider.\n"
msgstr ""
-"WIr können die Hauptstrecke hervorheben, in dem wir die Gleise dicker "
+"Wir können die Hauptstrecke hervorheben, in dem wir die Gleise dicker "
"zeichnen.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1146
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1165
msgid "First we select the mainline tracks...\n"
msgstr "Zuerst wählen wir die Gleise der Hauptstrecke aus...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrkwid.xtr:128
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1148
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1167
msgid "And then select Medium Tracks from the Edit menu.\n"
-msgstr "Und wählen dann mittlere Stärke aus dem Bearbeiten Menu aus.\n"
+msgstr "Und wählen dann mittlere Dicke aus dem Bearbeiten-Menü aus.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1149
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1168
msgid "We can't show the Edit menu, but we can show the effect.\n"
msgstr ""
"Wir können das Menü Bearbeiten nicht anzeigen, aber wir können die Wirkung "
"zeigen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrkwid.xtr:137
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1151
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:137
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1170
msgid "We can make the rail thicker by selecting Thick Tracks.\n"
msgstr ""
-"Wir können das Gleis durch die Auswahl Breite Linie dicker darstellen.\n"
+"Wir können das Gleis durch die Auswahl Dicke Gleise breiter darstellen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrkwid.xtr:148
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrntab.xtr:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1154
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:148
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1173
msgid ""
"Turntables are created by specifying the radius in a dialog box on the "
"Status Bar. The radius in the dialog can be changed before proceeding.\n"
msgstr ""
"Beim Erstellen von Drehscheiben muss der Radius in einem Dialog in der "
"Statuszeile eingegeben werden. Der Radius muss vor den nächsten Schritten "
-"geändert werden.\n"
+"eingegeben werden.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrntab.xtr:15
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1156
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:15
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1175
msgid "Then the turntable is dragged to its final location.\n"
-msgstr "Dann wird die Drehscheibe an die endgültige Position geschoben.\n"
+msgstr "Dann wird die Drehscheibe an die endgültige Position gezogen.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrntab.xtr:22
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:433
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1159
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:22
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:433
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1178
msgid "Introduction"
msgstr "Einführung"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:434
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1161
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:434
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1180
msgid "Mouse Actions"
msgstr "Mausaktionen"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:435
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1163
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:435
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1182
msgid "Dialogs"
msgstr "Dialoge"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:436
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1165
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:436
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1184
msgid "Moving about"
msgstr "Zoom & Pan"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:437
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1167
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:437
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1186
msgid "Describe and Select"
-msgstr "Eigenschaften und Auswählen"
+msgstr "Beschreiben und Auswählen"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:438
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1169
-msgid "Describe"
-msgstr "Beschreibe"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:440
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1173
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:440
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1192
msgid "Simple tracks"
msgstr "Einfache Gleise"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:441
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1175
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:441
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1194
msgid "Straight tracks"
msgstr "Gleisgeraden"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:442
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1177
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:442
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1196
msgid "Curved tracks"
msgstr "Gleisbögen"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:443
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1179
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:443
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1198
msgid "Circles"
msgstr "Kreise"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:444
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1181
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:444
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1200
msgid "Turntables"
msgstr "Drehscheiben"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:445
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1183
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:445
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1202
msgid "Modifying tracks"
-msgstr "Gleise bearbeiten"
+msgstr "Gleise ändern"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:446
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1185
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:446
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1204
msgid "Modifying end points "
msgstr "Endpunkte ändern "
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:447
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1187
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:447
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1206
msgid "Extending"
msgstr "Erweitern"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:448
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1189
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:448
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1208
msgid "Medium and Thick Tracks"
msgstr "Mittlere und dicke Gleise"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:449
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1191
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:449
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1210
msgid "Joining Tracks"
msgstr "Gleise verbinden"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:450
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1193
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:450
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1212
msgid "Straight to straight"
msgstr "Gerade zu Gerade"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:451
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1195
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:451
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1214
msgid "Curve to straight"
msgstr "Bogen zu Gerade"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:452
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1197
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:452
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1216
msgid "Circle to circle"
msgstr "Kreis zu Kreis"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:453
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1199
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:453
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1218
msgid "Joining to turntables"
msgstr "Mit Drehscheiben verbinden"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:454
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1201
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:454
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1220
msgid "Easements"
msgstr "Übergangsbögen"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:455
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1203
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:455
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1222
msgid "Abutting tracks"
msgstr "Angrenzende Gleise"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:456
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1205
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1224
msgid "Move to Join"
msgstr "Verbinden durch Verschieben"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:458
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1209
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:458
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1228
msgid "Select and Placement"
msgstr "Auswählen und Positionieren"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:459
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1211
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:459
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1230
msgid "Building a yard throat."
msgstr "Eine Gleisharfe erstellen."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:460
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1213
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:460
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1232
msgid "Designing turnouts"
msgstr "Weichen entwerfen"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:461
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1215
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:461
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1234
msgid "Group and Ungroup"
msgstr "Zusammenfassen und Zerlegen"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:462
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1217
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:462
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1236
msgid "Triming Turnout Ends"
msgstr "Weichenenden verändern"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:463
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1219
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:463
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1238
msgid "Handlaid Turnouts"
msgstr "Selbstbauweichen"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:464
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1221
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1240
msgid "Elevations and Profile"
msgstr "Höhen und Profil"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:465
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1223
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:465
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1242
msgid "Elevations"
msgstr "Höhen"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:467
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1227
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:467
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1246
msgid "Misc track commands"
msgstr "Verschiedene Gleismodifikationen"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:468
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1229
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:468
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1248
msgid "Delete and Undo"
msgstr "Löschen und Rückgängig machen"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:469
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1231
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:469
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1250
msgid "Splitting and Tunnels"
-msgstr "Auftrennen und Tunnels"
+msgstr "Auftrennen und Tunnel"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:471
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1235
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:471
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1254
msgid "Helix tracks"
msgstr "Gleiswendel"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:472
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1237
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:472
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1256
msgid "Exception Tracks"
msgstr "Fehlerhafte Gleise"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:474
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1241
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:474
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1260
msgid "Connect and Tighten - a siding"
-msgstr "Abstellgleis verbinden"
+msgstr "Verbinden und zusammenfügen - Abstellgleis"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:475
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1243
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:475
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1262
msgid "Connect and Tighten - figure-8"
-msgstr "Verbinden und Zusammenfügen"
+msgstr "Verbinden und Zusammenfügen - Gleis 8"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:476
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1245
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:476
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1264
msgid "Other commands"
msgstr "Sonstige Befehle"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:478
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1249
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:478
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1268
msgid "Table Edges"
msgstr "Tischkanten"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:480
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1253
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:480
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1272
msgid "Dimension Lines"
msgstr "Maßlinien"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:481
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1255
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:481
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1274
msgid "Lines"
msgstr "Linien"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:482
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1257
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:482
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1276
msgid "Poly-Shapes"
msgstr "Polygone"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:483
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1259
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:483
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1278
msgid "Modifying Poly-Shapes"
msgstr "Polygone modifizieren"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:486
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1265
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:486
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1284
msgid "Control Panels"
msgstr "Stellpulte"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:9
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1288
+msgid "Test Turnout Designer\n"
+msgstr "Prüfe den Weichendesigner\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1289
+msgid ""
+"This demo invokes each Turnout Designer and generates the turnout "
+"definition.\n"
+msgstr ""
+"Diese Demo ruft jeden Weichendesigner auf und erzeugt die "
+"Weichendefinition.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1290
+msgid ""
+"Each definition is placed on the layout and Regression checks that each "
+"matches.\n"
+msgstr ""
+"Jede Definition wird auf den Gleisplan gelegt und im Regressionstest "
+"geprüft.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1291
+msgid "Instructions:\n"
+msgstr "Anleitungen:\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1292
+msgid " Run xtrkcad with the regression option set to 2:\n"
+msgstr ""
+" XTrackCAD mit dem Regressionswert 2 ausführen:\n"
+"\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1293
+msgid " xtrkcad -d regression=2\n"
+msgstr " xtrkcad -d regression=2\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1294
+msgid ""
+" Select the recording (Macro|Playback) from $(SRCDIR)/app/tools/"
+"TurnoutDesigner.xtr\n"
+msgstr ""
+" Wählen sie die Aufzeichnung (Makro|Wiedergabe) aus $(SRCDIR)/app/tools/"
+"TurnoutDesigner.xtr\n"
+" \n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1295
+msgid " \n"
+msgstr " \n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1296
+msgid ""
+" Playback the demo. You probably want to choose a faster playback Speed.\n"
+msgstr ""
+" Demo wiedergeben. Möglicherweise wollen sie eine höhere "
+"Wiedergabegeschwindigkeit auswählen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1297
+msgid "Check the log file (Linux: stdout, Windows: xtclog.txt)\n"
+msgstr "Die Protokolldatei prüfen. (Linux: stdout, Windows: xtclog.txt)\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:497
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:594
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:867
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:913
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1299
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1308
+msgid "-----------------------------------------------------\n"
+msgstr "-----------------------------------------------------\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1300
+msgid "Create an instance of each turnout\n"
+msgstr "Eine Instanz jeder Weiche erstellen\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1303
+msgid "Run Regression Checks\n"
+msgstr "Regressionstests ausführen\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1306
+msgid "Remove the parameter definitions\n"
+msgstr "Entfernt die arameter Definitionen\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:9
+msgid "Invokes online help for this dialog"
+msgstr "Ruft die Kontexthilfe für diesen Dialog auf"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:10
+msgid "Cancels this command"
+msgstr "Bricht den aktuellen Befehl ab"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:11
+msgid "Closes the dialog"
+msgstr "Schließt das Dialogfenster"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:12
+msgid "About program dialog"
+msgstr "Informationen über dieses Programm"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:13
+msgid "Move selected object to top"
+msgstr "Ausgewählte Objekte ganz nach oben verschieben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:14
+msgid "Raise or lower all selected tracks"
+msgstr "Alle ausgewählten Gleise anheben oder absenken"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:15
+msgid "Show a protractor"
+msgstr "Zeige einen Winkelmesser an"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:16
+msgid "Turn magnetic snap on or off"
+msgstr "Magnetisches Fangen ein/aus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:18
+msgid "Move selected object to bottom"
+msgstr "Ausgewähltes Objekt ganz nach unten verschieben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:19
+msgid "Create a section of track for automation"
+msgstr "Einen Blockabschnitt für die Automation erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:20
+msgid "Edit a block definition "
+msgstr "Einen Blockabschnitt bearbeiten "
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:21
+msgid "Create a new Car/Loco description"
+msgstr "Erstelle eine neue Wagen/Lok-Beschreibung"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:22
+msgid "Manage your Car and Loco Inventory"
+msgstr "Wagen- und Lokbestand verwalten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:23
+msgid "Create track circle from center"
+msgstr "Erstelle Gleiskreis um gegebenen Mittelpunkt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:24
+msgid "Create fixed radius track circle"
+msgstr "Erstelle Gleiskreis mit festgelegtem Radius"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:25
+msgid "Set Circle Track creation mode"
+msgstr "Wähle Befehl um Gleisbögen zu erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:26
+msgid "Create track circle from tangent"
+msgstr "Erstelle Gleiskreis an einer Tangente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:27
+msgid "Removes elevation from Selected tracks"
+msgstr "Entfernt die Höhenangaben von den ausgewählten Gleisen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:28
+msgid "Copy objects to clipboard and duplicate them in exactly the same place"
+msgstr ""
+"Objekte in die Zwischenablage kopieren und an genau der gleichen Stelle "
+"duplizieren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:29
+msgid "Command Options dialog"
+msgstr "Dialog für die Befehlsoptionen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:30
+msgid "Controls colors"
+msgstr "Steuert die Farben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:31
+msgid "Connect two tracks"
+msgstr "Gleise zusammenfügen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:32
+msgid "Create a control for layout automation"
+msgstr "Erstelle ein Kontrollelement für Automation"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:33
+msgid "Select control element to create"
+msgstr "Neues Kontrollelement festlegen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:34
+msgid "Manage control elements"
+msgstr "Steuerungselemente verwalten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:35
+msgid "Set Convert mode"
+msgstr "Konvertierungsmodus einstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:36
+msgid "Convert from Fixed Track to Cornu"
+msgstr "Aus festem Gleis in eine Cornu umwandeln"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:37
+msgid "Convert from Cornu and Bezier to Fixed Track"
+msgstr "Aus Cornu oder Bezier in festes Gleis umwandeln"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:38
+msgid "Copy selected objects to clipboard"
+msgstr "Ausgewählte Objekte in die Zwischenablage kopieren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:39
+msgid "Create Cornu track"
+msgstr "Cornu-Bogen erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:40
+msgid "Create curved track from center"
+msgstr "Erstelle Gleisbogen um einen gegebenen Mittelpunkt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:41
+msgid "Create curved track from chord"
+msgstr "Erstelle Gleisbogen von einer Sehne"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:42
+msgid "Create curved track from end-point"
+msgstr "Erstelle Gleisbogen von Endpunkt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:43
+msgid "Create Bezier track"
+msgstr "Erstelle Bezier-Gleis"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:44
+msgid "Set Curve Track creation mode"
+msgstr "Wähle Befehl um Gleiskreis zu erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:45
+msgid "Create curved track from tangent"
+msgstr "Erstelle Gleisbogen an einer Tangente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:46
+msgid "Manipulate Custom designer entries"
+msgstr "Bearbeite die eigenen Designs"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:47
+msgid "Moves selected objects to clipboard"
+msgstr "Ausgewählte Objekte in die Zwischenablage verschieben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:48
+msgid "Delete objects"
+msgstr "Objekte löschen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:49
+msgid "Playback demos"
+msgstr "Demos abspielen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:50
+msgid "Change Object Properties"
+msgstr "Eigenschaften des Objektes bearbeiten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:51
+msgid "Change to properties mode"
+msgstr "Zum Modus \"Eigenschaften\""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:52
+msgid "Deselect all selected objects"
+msgstr "Ausgewählte Objekte abwählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:53
+msgid "Change Display parameters"
+msgstr "Anzeigeeigenschaften ändern"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:54
+msgid "Create benchwork"
+msgstr "Unterbau erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:55
+msgid "Create a box"
+msgstr "Ein Viereck erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:56
+msgid "Set Circle drawing command"
+msgstr "Wähle Befehl um Kreise zu zeichnen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:57
+msgid "Create a circle"
+msgstr "Einen Kreis erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:58
+msgid "Draw a circle line from center"
+msgstr "Zeichne Kreislinie um gegebenen Mittelpunkt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:59
+msgid "Draw a fixed radius circle line"
+msgstr "Zeichne einen Kreisbogen mit festen Radius"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:60
+msgid "Draw a circle line from tangent"
+msgstr "Zeichne Kreis an Tangente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:61
+msgid "Set Curve drawing command"
+msgstr "Wähle Befehl um gebogene Linien zu zeichnen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:62
+msgid "Create a curved line"
+msgstr "Eine gebogene Linie erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:63
+msgid "Create a curved line from End"
+msgstr "Gebogene Linie von einem Endpunkt erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:64
+msgid "Create a curved line from center"
+msgstr "Gebogene Linie vom Mittelpunkt aus erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:65
+msgid "Create a curved line from chord"
+msgstr "Gebogene Linie an einer Sehne erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:66
+msgid "Create a curved line from tangent"
+msgstr "Gebogene Linie an einer Tangente erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:67
+msgid "Create a Bezier line"
+msgstr "Eine Bezier-Linie erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:68
+msgid "Create a dimension line"
+msgstr "Zeichne Maßlinie"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:69
+msgid "Create a filled box"
+msgstr "Ein gefülltes Viereck erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:70
+msgid "Create a filled circle"
+msgstr "Einen gefüllten Kreis erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:71
+msgid "Draw a filled circle from center"
+msgstr "Zeichne gefüllten Kreis um gegebenen Mittelpunkt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:72
+msgid "Draw a fixed radius filled circle"
+msgstr "Zeichne einen gefüllten Kreis mit festem Radius"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:73
+msgid "Draw a filled circle from tangent"
+msgstr "Zeichne gefüllten Kreis an Tangente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:74
+msgid "Create a polygon"
+msgstr "Ein Polygon erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:75
+msgid "Create a filled polygon"
+msgstr "Ein gefülltes Polygon erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:76
+msgid "Create a polyline"
+msgstr "Eine Polylinie erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:77
+msgid "Create a straight line"
+msgstr "Eine gerade Linie erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:78
+msgid "Set Line drawing command"
+msgstr "Wähle Befehl um Linien zu zeichnen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:79
+msgid "Set Shape drawing command"
+msgstr "Wähle Befehl um Formen zu zeichnen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:80
+msgid "Draw table edge"
+msgstr "Tischkante zeichnen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:81
+msgid "Easement menu"
+msgstr "Einstellungen für Übergangsbögen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:83
+msgid "Generate a Parts List of selected objects"
+msgstr "Stückliste aus den ausgewählten Objekten erzeugen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:84
+msgid "Set Import/Export mode"
+msgstr "Import-/Exportmodus auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:85
+msgid "Export an .xti file"
+msgstr "Export in eine XTI-Datei (XTrackCAD Importdatei)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:86
+msgid "Export a Bitmap image"
+msgstr "Als Bitmap exportieren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:87
+msgid "Export a DXF file"
+msgstr "Export in eine DXF-Datei"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:88
+msgid "Export an SVG file"
+msgstr "Export in eine SVG-Datei"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:90
+msgid "Flip selected objects"
+msgstr "Ausgewählte Objekte spiegeln"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:91
+msgid "Adjust snap grid"
+msgstr "Fangraster anpassen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:92
+msgid "Enable snap grid"
+msgstr "Fangraster aktivieren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:93
+msgid "Show snap grid"
+msgstr "Fangraster anzeigen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:94
+msgid "Create a structure from a Group of objects"
+msgstr "Mehrere Objekte zu einem Gebäude zusammenfassen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:95
+msgid "Create a hand-laid turnout"
+msgstr "Von Hand gelegte Weiche erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:96
+msgid "Create a track helix"
+msgstr "Eine Gleiswendel erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:97
+msgid "Import an .xti file"
+msgstr "Importieren einer .xti-Datei"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:98
+msgid "Import an .xti file as a Module"
+msgstr "Importieren einer .xti-Datei als Modul"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:99
+msgid "Join two tracks"
+msgstr "Verbinden von zwei Gleisen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:100
+msgid "Join two lines or polylines"
+msgstr "Verbinden von zwei Linien oder Polylinien"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:101
+msgid "Set Join mode"
+msgstr "Verbindungsmodus einstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:102
+msgid "Change Layers"
+msgstr "Ebenen ändern"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:103
+msgid "Selects the current drawing layer"
+msgstr "Auswahl der aktuellen Zeichenebene"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:104
+msgid "Layout parameters"
+msgstr "Einstellungen des Gleisplans"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:106
+msgid "Show/Hide Map Window"
+msgstr "Ãœbersichtsfenster anzeigen/verbergen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:107
+msgid "Select Measurement Tool"
+msgstr "Messwerkzeug auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:108
+msgid "Modify or extend a track"
+msgstr "Ändern oder Erweitern eines Gleises"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:109
+msgid "Change To modify mode"
+msgstr "Zum Modus \"Auswählen\" wechseln"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:110
+msgid "Move selected objects"
+msgstr "Ausgewählte Objekte verschieben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:111
+msgid "Move a label"
+msgstr "Beschreibung verschieben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:112
+msgid "Move selected objects to current layer"
+msgstr "Ausgewählte Objekte auf die aktuelle Ebene verschieben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:114
+msgid "Print a bitmap"
+msgstr "Drucke in eine Grafikdatei"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:115
+msgid "Pan or zoom the layout"
+msgstr "Ausschnitt ändern oder Zoomen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:116
+msgid "Change to zoom/pan mode"
+msgstr "Zum Modus Zoom/Ausschnitt wechseln"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:117
+msgid "Create a parallel track"
+msgstr "Ein paralleles Gleis erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:118
+msgid "Create a parallel line"
+msgstr "Eine parallele Linie erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:119
+msgid "Set Parallel mode"
+msgstr "Parallelen-Modus einstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:120
+msgid "Register"
+msgstr "Registrieren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:121
+msgid "Copy objects from clipboard"
+msgstr "Objekte aus der Zwischenablage kopieren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:122
+msgid "Perferences dialog"
+msgstr "Einstellungen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:123
+msgid "Display prices of turnouts, sectional tracks and structures"
+msgstr "Die Preise von Weichen, Gleisen und Gebäuden anzeigen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:124
+msgid "Print the layout"
+msgstr "Gleisplan ausdrucken"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:125
+msgid "Loads and unloads parameter files into/from toolbar"
+msgstr "Parameterdateien zur Schnellauswahl zufügen oder daraus entfernen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:126
+msgid "Elevation Profile Command"
+msgstr "Höhenprofil bearbeiten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:128
+msgid "Command recorder"
+msgstr "Befehlsaufzeichnung"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:130
+msgid "Update selected Turnout and Structure definitions"
+msgstr "Die ausgewählten Gebäude und Weichen aktualisieren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:131
+msgid "Rescale selected objects"
+msgstr "Ausgewählte Objekte skalieren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:132
+msgid "Rotate selected object(s)"
+msgstr "Ausgewählte Objekte drehen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:133
+msgid "Show a ruler"
+msgstr "Lineal anzeigen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:134
+msgid "Select objects"
+msgstr "Objekte auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:135
+msgid "Change To Select Mode"
+msgstr "Zum Modus \"Auswählen\" wechseln"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:136
+msgid "Selects all objects on the layout"
+msgstr "Alle Objekte des Gleisplan auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:137
+msgid "Selects all objects in the current Layer"
+msgstr "Alle Objekte der aktuellen Ebene auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:138
+msgid "Choose objects by Index number"
+msgstr "Objekte nach ihrer Kennziffer auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:139
+msgid "Invert current selection"
+msgstr "Aktuelle Auswahl umkehren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:140
+msgid "Configure the Printer"
+msgstr "Drucker konfigurieren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:141
+msgid "Set Split mode"
+msgstr "Auftrennungsmodus einstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:142
+msgid "Split a track"
+msgstr "Gleis trennen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:143
+msgid "Split a straight, curved, circle, polygon or polyline Draw Object "
+msgstr ""
+"Teilen Sie ein gerades, gekrümmtes, Kreis-, Polygon- oder Polylinien-"
+"Zeichenobjekt "
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:144
+msgid "Select stranded (unconnected) track pieces"
+msgstr "Vereinzelte (nicht verbundene) Gleisstücke auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:145
+msgid "Create a sensor (ie. a occupancy detector or a toggle switch)"
+msgstr "Erstelle einen Sensor (z.B. eine Besetzmeldung oder einen Umschalter)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:146
+msgid "Create a signal for train control"
+msgstr "Ein Signal für die Zugsteuerung erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:147
+msgid "Choose which commands are sticky"
+msgstr "Dauerhaft aktive Befehle auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:148
+msgid "Create straight track"
+msgstr "Gerades Gleis erzeugen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:149
+msgid "Place a structure on the layout"
+msgstr "Ein Gebäude auf den Gleisplan setzen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:150
+msgid "Create a switchmotor for turnout control"
+msgstr "Einen Motor für die Weichensteuerung erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:151
+msgid "Edit a switchmotor definition"
+msgstr "Die Eigenschaften eines Weichenantriebs bearbeiten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:152
+msgid "Enter text on the layout"
+msgstr "Text auf dem Gleisplan anzeigen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:153
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:612
+msgid "Controls the size of the entered text"
+msgstr "Auswahl der Schriftgröße für eingegebenen Text"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:155
+msgid "Tip of the Day window"
+msgstr "Tipp des Tages"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:157
+msgid "Change To Run Trains Mode"
+msgstr "Zum Modus Zugbetrieb wechseln"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:158
+msgid "Pause/Resume Trains"
+msgstr "Zugbetrieb anhalten/fortsetzen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:159
+msgid "Place a car on the layout"
+msgstr "Einen Wagen auf den Gleisplan setzen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:160
+msgid "Exit Trains"
+msgstr "Zugbetrieb beenden"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:161
+msgid "Trim a line, circle or polyline Draw Object using a second Object"
+msgstr ""
+"Schneiden Sie ein Linien-, Kreis- oder Polylinien-Zeichnungsobjekt mit einem "
+"zweiten Objekt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:162
+msgid "Hide/Unhide a track"
+msgstr "Verbergen/Zeigen eines Gleises"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:163
+msgid "Make/Unmake a track a bridge"
+msgstr "Ein Gleis zu einer Brücke machen/aufheben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:164
+msgid "Place a turnout or sectional track"
+msgstr "Weiche oder Festgleis platzieren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:165
+msgid "Create a new turnout definition"
+msgstr "Erstelle eine neue Weichendefinition"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:166
+msgid "Place a turntable"
+msgstr "Eine Drehscheibe setzen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:167
+msgid "Updates old source files with 3 part titles"
+msgstr "Aktualisiere alte Gleispläne mit dreiteiligen Titeln"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:169
+msgid "Ungroup objects"
+msgstr "Gruppierung aufheben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:170
+msgid "Draw tracks with thin lines"
+msgstr "Gleise mit dünnen Linien zeichnen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:171
+msgid "Draw tracks with medium lines"
+msgstr "Gleise mit mittleren Linien zeichnen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:172
+msgid "Draw tracks with thick lines"
+msgstr "Gleise mit dicken Linien zeichnen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:173
+msgid "Change drawing scale"
+msgstr "Zeichenmaßstab auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:174
+msgid "Zoom to Fit"
+msgstr "Zoom anpassen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:175
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:206
+msgid "Zoom in"
+msgstr "Zoom größer"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:176
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:207
+msgid "Zoom out"
+msgstr "Zoom kleiner"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:180
+msgid "Curved Fixed"
+msgstr "Fester Bogen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:181
+msgid "Preferred Radius"
+msgstr "Bevorzugter Radius"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:182
+msgid "Modify Draw"
+msgstr "Zeichenobjekt ändern"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:189
+msgid "Rotation Angle"
+msgstr "Drehwinkel"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:190
+msgid "Rot Center X"
+msgstr "Drehzentrum X"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:191
+msgid "Rot Center Y"
+msgstr "Drehzentrum Y"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:193
+msgid "File Menu"
+msgstr "Dateifunktionen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:194
+msgid "Save layout"
+msgstr "Gleisplan speichern"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:195
+msgid "Save layout under a new name "
+msgstr "Gleisplan mit neuem Namen speichern "
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:196
+msgid "New layout"
+msgstr "Neuer Gleisplan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:197
+msgid "Generate parts list"
+msgstr "Teileliste erzeugen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:198
+msgid "Load a layout"
+msgstr "Gleisplan laden"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:199
+msgid "Manage Parameter Files"
+msgstr "Parameterdateien verwalten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:200
+msgid "Print layout"
+msgstr "Gleisplan drucken"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:201
+msgid "Exit the program"
+msgstr "Programm beenden"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:202
+msgid "Revert to last saved state of layout plan"
+msgstr "Zum letzten gespeicherten Stand zurücksetzen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:203
+msgid "Printer Setup"
+msgstr "Drucker einstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:204
+msgid "Edit menu"
+msgstr "Bearbeitunsfunktionen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:205
+msgid "Redraw layout"
+msgstr "Gleisplan neu zeichnen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:208
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:211
+msgid "Tools menu"
+msgstr "Werkzeugfunktionen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:209
+msgid "View menu"
+msgstr "Anzeigefunktionen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:210
+msgid "Toolbar configuration"
+msgstr "Konfiguration der Werkzeugleiste"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:212
+msgid "Options menu"
+msgstr "Eistellungen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:213
+msgid "Playback/Record commands"
+msgstr "Aufzeichnungs- und Wiedergabefunktionen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:214
+msgid "Window menu"
+msgstr "Fensterfunktionen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:215
+msgid "Help menu"
+msgstr "Hilfefunktionen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:216
+msgid "Recent error messages and explanations"
+msgstr "Aktuellste Fehlermeldungen und Erläuterungen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:217
+msgid "Move Hot Bar left"
+msgstr "In der Schnellauswahl nach links bewegen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:218
+msgid "Move Hot Bar right"
+msgstr "In der Schnellauswahl nach rechts bewegen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:219
+msgid "Total track count"
+msgstr "Gesamtzahl der Gleise"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:220
+msgid "X Position of cursor"
+msgstr "X Position des Zeiger"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:221
+msgid "Y Position of cursor"
+msgstr "Y Position des Zeiger"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:222
+msgid "Drawing scale"
+msgstr "Zeichnungsmaßstab"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:223
+msgid "Message and status line"
+msgstr "Nachrichten- und Statuszeile"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:224
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:225
+msgid "Main layout canvas"
+msgstr "Hauptzeichenbereich"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:226
+msgid "Main drawing canvas"
+msgstr "Hauptzeichenbereich"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:227
+msgid "Command buttons"
+msgstr "Schaltflächen für Befehle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:228
+msgid "Menus"
+msgstr "Menüs"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:229
+#, fuzzy
+msgid "Title, Filename and Window Manager buttons"
+msgstr "Tile, Filename and Window Manager buttons"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:230
+msgid "Turnout and Structure Hot Bar"
+msgstr "Schnellauswahl für Festgleis und Gebäude"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:231
+msgid "Active layer list and layer buttons"
+msgstr "Liste der aktiven Ebenen und Schaltflächen für Ebenen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:232
+msgid "Map window"
+msgstr "Kartenfenster"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:233
+msgid "This is the portion of the layout shown in the Main Window canvas"
+msgstr "Dieser Teil des Gleisplans wird auf der Hauptzeichenfläche angezeigt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:234
+msgid "Raise or Lower all Selected Track"
+msgstr "Anheben oder Absenken der ausgewählten Gleise"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:235
+msgid "Name of block"
+msgstr "Name des Blockabschnitts"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:236
+msgid "Script that the block will run"
+msgstr "Auszuführendes Skript"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:237
+msgid "List of tracks in the Block"
+msgstr "Liste der Gleise in dem Blockabschnitt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:238
+msgid "Add or Update car object"
+msgstr "Einen Wagen zufügen oder aktualisieren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:239
+msgid "Manufacturer name"
+msgstr "Name des Herstellers"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:242
+msgid "Is the Car a Locomotive?"
+msgstr "Handelt es sich um eine Lokomotive?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:243
+msgid "Part Number and Description"
+msgstr "Bestellnr. und Beschreibung"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:244
+msgid "Manufacturer Part Number"
+msgstr "Bestellnummer des Herstellers"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:245
+msgid "Use the Selected figure as the car image"
+msgstr "Benutze die ausgewählte Zeichnung als Wagenabbild"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:246
+msgid "Use the default figure as the car image"
+msgstr "Benutze die Standardzeichnung als Wagenabbild"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:247
+msgid "Optional description of the Car Part"
+msgstr "Optionale Beschreibung des Grundmodells"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:248
+msgid "Flip car image"
+msgstr "Wagenabbild spiegeln"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:249
+msgid "Display Car Item information or reporting marks and dimensions"
+msgstr ""
+"Informationen über den Wagen oder über Kennzeichen und Abmessungen anzeigen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:250
+msgid "Full Roadname"
+msgstr "Bahngesellschaft"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:251
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:252
+msgid "Car Type"
+msgstr "Wagentyp"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:253
+msgid "Reporting Marks (Roadname abbreviation)"
+msgstr "Abkürzung für die Bahngesellschaft"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:254
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:489
+msgid "Car Number"
+msgstr "Wagennummer"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:255
+msgid "Car body Color"
+msgstr "Wagenfarbe"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:256
+msgid "Length of car body"
+msgstr "Länge des Aufbau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:257
+msgid "Width of car body"
+msgstr "Breite des Aufbau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:258
+msgid "Distance between Trucks "
+msgstr "Abstand zwischen den Drehgestellen "
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:259
+msgid "Distance Trucks are displaced along Car"
+msgstr "Abstand der Drehgestelle vom Wagenende"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:260
+msgid "Coupler are mounted on body or truck"
+msgstr "Befestigung der Kupplungen am Wagenaufbau oder an den Drehgestellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:261
+msgid "Overall Coupled Length"
+msgstr "Gekuppelte Gesamtlänge"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:262
+msgid "Coupler Length from end of car"
+msgstr "Kupplungslänge vom Ende des Wagens"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:263
+msgid "Diagram of Car"
+msgstr "Diagramm der Lokomotive oder des Wagens"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:264
+msgid "Item Index Number"
+msgstr "Laufende Nummer"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:265
+msgid "Original Purchase Price"
+msgstr "Ursprünglicher Kaufpreis"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:267
+msgid "Condition of car"
+msgstr "Zustand des Wagen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:268
+msgid "Original Purchase Date - yyyymmdd"
+msgstr "Kaufdatum - JJJJMMTT"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:269
+msgid "Last Service Date - yyyymmdd"
+msgstr "Letzte Prüfung - JJJJMMTT"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:270
+msgid "Number of identical cars to be entered"
+msgstr "Anzahl der zusätzlichen, gleichartigen Wagen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:271
+msgid "Do all the cars have the same Number?"
+msgstr "Haben alle Wagen dieselbe Nummer?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:272
+msgid "Notes about the car"
+msgstr "Anmerkungen zu dem Wagen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:273
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:274
+msgid "Create a new car Part or Prototype definitions"
+msgstr ""
+"Für Lokomotiven oder Wagen ein neues Grundmodell oder einen neuen Prototypen "
+"erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:275
+msgid "Finds the selected Car Item on the layout"
+msgstr "Finde den ausgewählten Wagen auf der Anlage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:276
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:277
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:278
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:279
+msgid "Sort the Item list"
+msgstr "Liste der Wagen sortieren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:281
+msgid "Edit the selected Car Item"
+msgstr "Markierte Lokomotive oder Wagen bearbeiten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:282
+msgid "Add a new Car Item"
+msgstr "Neuen Wagen hinzufügen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:283
+msgid "Delete from Inventory or return to Shelf"
+msgstr "Aus dem Inventar löschen oder in das Regal legen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:284
+msgid "Import a Car Item .csv file"
+msgstr "Importieren der Lokomotiven oder Wagen aus einer .csv Datei"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:285
+msgid "Export a Car Item .csv file"
+msgstr "Exportieren der markierten Lokomotiven oder Wagen in eine .csv Datei"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:286
+msgid "Create a text list of the Car Items"
+msgstr "Textdatei der Lokomotiven oder Wagen erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:287
+msgid "Specifies the radius of the circle track"
+msgstr "Gibt den Radius des Gleiskreises an"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:288
+msgid "Default command is Describe or Select"
+msgstr "Standardbefehl ist Eigenschaften oder Auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:289
+msgid "Action to invoke on Right-Click"
+msgstr "Festlegen, welche Aktion beim Rechtsklicken erfolgen soll"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:290
+msgid ""
+"Replace current selection with clicked object or add clicked object to "
+"selection"
+msgstr ""
+"Aktuelle Auswahl durch angeklicktes Objekt ersetzen oder angeklicktes Objekt "
+"zur Auswahl hinzufügen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:291
+msgid "Clicking into an empty area clears selection if select mode is <add>"
+msgstr ""
+"Ein Klick in einen leeren Bereich löscht die Auswahl, wenn der Auswahlmodus "
+"<Erweitern> ist"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:293
+msgid "The list of control elements"
+msgstr "Die Liste der Steuerungselemente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:294
+msgid "Edit the element"
+msgstr "Das Element bearbeiten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:295
+msgid "Delete the element"
+msgstr "Das Element löschen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:296
+msgid "Contents Label for new Parameter file"
+msgstr "Inhaltsbeschreibung für die neue Parameterdatei"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:297
+msgid "Desired curve radius for new track"
+msgstr "Gewünschter Kurvenradius für das neue Gleis"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:298
+msgid "List of custom designed turnouts and structures"
+msgstr "Liste der individuell entwickelten Festgleise und Gebäude"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:299
+msgid "Change description, manufacturer or part number."
+msgstr "Beschreibung, Hersteller oder Teilenummer ändern"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:300
+msgid "Remove selected entries"
+msgstr "Ausgewählte Einträge löschen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:301
+msgid "Copy selected entries to parameter file"
+msgstr "Ausgewählte Einträge in eine Parameterdatei kopieren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:302
+msgid "Create the selected type"
+msgstr "Den ausgewählten Typ erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:303
+msgid "Create a new part or prototype?"
+msgstr "Neues Teil oder neuen Prototyp erstellen?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:304
+msgid "Update custom file and close"
+msgstr "Individuelle Objekte speichern und Datei schließen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:305
+msgid "Executes the next step of the demo"
+msgstr "Nächsten Schritt der aktuellen Demo anzeigen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:306
+msgid "Skip to next demo"
+msgstr "Springe zur nächsten Demo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:307
+msgid "Stops the demonstration and returns you to XTrackCAD"
+msgstr "Demonstrationsmodus verlassen und zu XTrackCAD zurückkehren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:308
+msgid "Select speed of Playback"
+msgstr "Wiedergabegeschwindigkeit auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:309
+msgid "This is where comments about the demo are displayed"
+msgstr "Kommentar zu Demos anzeigen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:346
+msgid "Move the Main canvas if you drag near the edge"
+msgstr ""
+"Bewegen den Hauptzeichenbereich, wenn in der Nähe der Ecken gezogen wird"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:347
+msgid "Color tracks by layer or individually"
+msgstr "Gleise mit den jeweiligen Ebenenfarben oder einzeln einfärbenn"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:348
+msgid "Color draw objects by layer or individually"
+msgstr "Objekte mit den jeweiligen Ebenenfarben oder einzeln einfärben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:349
+msgid "Controls the drawing of hidden tracks"
+msgstr "Steuert das Zeichnen von versteckten Gleisen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:350
+msgid "Controls the drawing of End-Points"
+msgstr "Steuert das Zeichnen von Endpunkten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:351
+msgid "How to draw track ties"
+msgstr "Steuert das Zeichnen der Schwellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:352
+msgid "Show crosshair at center of curves"
+msgstr "Mittelpunkt von Bögen als Fadenkreuz anzeigen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:353
+msgid "Drawing scale when to draw tracks with 2 rails"
+msgstr "Mindestmaßstab für die Anzeige von Gleisen mit zwei Schienen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:354
+msgid "Drawing scale of the map window"
+msgstr "Zeichenmaßstab des Kartenfensters"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:355
+msgid "Whether the main layout is updated while dragging on the Map"
+msgstr "Aktualisierung des Gleisplans, wenn in der Karte gezogen wird"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:356
+msgid "Enable labels for Turnouts, Flextrack Lengths and Elevations"
+msgstr "Zeige Beschriftungen für Weichen, Flexgleise und Steigungen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:357
+msgid "When to label Turnout, Flextrack Lengths and Elevations"
+msgstr "Wann sollen Weichen, Gleislängen oder Höhenmaß beschriftet werden"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:358
+msgid "Font size for labels on layout"
+msgstr "Zeichengröße für Beschriftungen im Gleisplan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:359
+msgid "Label elements on the Hot Bar"
+msgstr "Beschriftungen in der Schnellauswahl"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:360
+msgid "Label elements on layout"
+msgstr "Beschriftungen im Gleisplan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:361
+msgid "Label elements for lists"
+msgstr "Beschriftungen in den Listen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:362
+msgid "How to group cars on the Train Hot Bar"
+msgstr "Gruppierung der Wagen in der Schnellauswahl"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:363
+msgid "Delay (in mS) between updating train movements"
+msgstr "Aktualisierungsintervall (in Millisekunden) für Zugbewegungen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:364
+msgid "Don't show trains in tunnels when tunnels are hidden"
+msgstr "Züge in Tunnels nicht anzeigen, wenn Gleise im Tunnel versteckt sind"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:365
+msgid "Display unconnected endpoints of track with special marks"
+msgstr "Endpunkte, die nicht verbunden sind, hervorheben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:366
+msgid "Whether the Main Drawing Area shows as much of the room as possible"
+msgstr ""
+"Soll der Zeichenbereich den größtmöglichen Ausschnitt des Raums anzeigen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:367
+msgid "Don't hide system cursor when program cursors are showing"
+msgstr "Systemcursor nicht verbergen, wenn der Anwendungscursor aktiv ist"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:369
+msgid "Width of the lines"
+msgstr "Breite der Linien"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:370
+msgid "Color of the lines"
+msgstr "Farbe der Linien"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:371
+msgid "List of types of Lumber"
+msgstr "Liste der verfügbaren zur Unterkonstruktion verfügbaren Leisten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:372
+msgid "Color of Benchwork"
+msgstr "Farbe des Unterbau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:373
+msgid "Orientation of Benchwork"
+msgstr "Ausrichtung des Unterbau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:374
+msgid "Size of Dimension Arrows"
+msgstr "Größe der Maßpfeile"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:375
+msgid "Width of Box"
+msgstr "Breite des Rechtecks"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:376
+msgid "Height of Box"
+msgstr "Höhe des Rechtecks"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:377
+msgid "Angle of Line"
+msgstr "Winkel der Linie"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:378
+msgid "Radius of Curve"
+msgstr "Radius der Kurve"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:380
+msgid "This controls the sharpness of the easement curve"
+msgstr "Steuert die Größe des Übergangsradius"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:381
+msgid "Minimum radius"
+msgstr "Mindestgleisradius"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:382
+msgid "Maximum offset"
+msgstr "Maximaler Abstand"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:383
+msgid "Easement length"
+msgstr "Länge des Übergangsbogens"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:384
+msgid ""
+"These radio buttons are a short-cut for Values of 0.0, 0.5, 1.0 and 2.0. "
+"None turns Easements off"
+msgstr ""
+"Standardwerte 0,0, 0,5, 1,0 und 2,0 können schnell gesetzt werden. \"None\" "
+"schaltet die Übergangsbögen aus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:385
+msgid "Complete easement selection"
+msgstr "Auswahl der Übergangsbögen vervollständigen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:386
+msgid "Type of elevation"
+msgstr "Typ des Höhenpunktes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:387
+msgid "Height of End Point"
+msgstr "Höhe des Endpunktes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:388
+msgid "Compute elevation based on neighbors"
+msgstr "Berechne die Höhe gemäß der benachbarten Gleise"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:389
+msgid "Compute grade based on neighbors"
+msgstr "Berechne Steigung gemäß der benachbarten Gleise"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:390
+msgid "Specify a name for an End-Point"
+msgstr "Einen Namen für einen Endpunkt vergeben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:392
+msgid "Print parts list"
+msgstr "Teileliste drucken"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:393
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:543
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:666
+msgid "Invoke the Print Setup dialog"
+msgstr "Starte den Dialog für die Konfiguration des Druckers"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:394
+msgid "Save parts list to file"
+msgstr "Teileliste in Datei speichern"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:395
+msgid "This is the list of parts for the layout"
+msgstr "Dies ist die Teileliste für diesen Gleisplan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:396
+msgid "Enable prices on the Parts List"
+msgstr "Preise in der Teileliste anzeigen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:397
+msgid "Enable index listing on the Parts List"
+msgstr "Kennziffern in der Teileliste anzeigen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:398
+msgid "Save the note and close window"
+msgstr "Notiz speichern und das Fenster schließen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:399
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:400
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:480
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:481
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:617
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:618
+msgid "Set the position for the note"
+msgstr "Position für die Notiz festlegen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:401
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:482
+msgid "Set the layer for the note"
+msgstr "Ebene für die Notiz festlegen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:402
+msgid "Enter the title of the file"
+msgstr "Den Titel für die Datei eingeben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:403
+msgid "Enter the path and name of the file"
+msgstr "Den Pfad und den Namen der Datein eingeben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:404
+msgid "Open the document in the default application"
+msgstr "Öffne das Dokument in der Standardanwendung"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:405
+msgid "Select the file from your system"
+msgstr "Wähle eine Datei aus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:406
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:409
+msgid "Spacing between major grid lines"
+msgstr "Abstand zwischen den Linien des Hauptrasters einstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:407
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:410
+msgid "Allows the spacing to be subdivided"
+msgstr "Stellt die Unterteilung von Zwischenmarkierungen ein"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:408
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:411
+msgid "Specifies if positions are snaped in this direction"
+msgstr "Einschalten des Fangrasters für diese Richtung"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:412
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:413
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:414
+msgid "Shows the origin and angle of the grid"
+msgstr "Gibt den Ausgangspunkt und Winkel des Rasters an"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:415
+msgid "Specifies if the grid is shown"
+msgstr "Anzeige des Rasters an- oder ausschalten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:416
+msgid "Completes the grid specification"
+msgstr "Rasteranpassung speichern und beenden"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:420
+msgid "Number of segments in Group"
+msgstr "Anzahl der Segmente in der Gruppe"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:421
+msgid "Replace the Selected object with the new definition?"
+msgstr "Soll das ausgewählte Objekt durch die neue Definition ersetzt werden?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:422
+msgid "Creates a new Structure (or Turnout)"
+msgstr "Ein neues Gebäude (oder ein Festgleis) erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:423
+msgid "Elevation difference of Helix End-Points"
+msgstr "Höhenunterschied zwischen den Endpunkten der Gleiswendel"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:424
+msgid "Helix Radius"
+msgstr "Radius der Gleiswendel"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:425
+msgid "Number of turns in the helix"
+msgstr "Anzahl der Umdrehungen in der Gleiswendel"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:426
+msgid "Angle between helix entrance and exit"
+msgstr "Winkel zwischen Ein- und Ausgang der Gleiswendel"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:427
+msgid "Grade in helix"
+msgstr "Steigung in der Gleiswendel"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:428
+msgid "Separation between helix layers including baseboard, track, etc"
+msgstr ""
+"Abstand zwischen den Windungen der Gleisspirale, einschließlich Gleisbett, "
+"Gleis usw."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:429
+msgid "Index numbers of objects, separated by commas"
+msgstr "Kennziffern der Objekte, durch Kommata getrennt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:430
+msgid "Desired curve radius between straight tracks"
+msgstr "Gewünschter Radius zwischen geraden Gleisen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:431
+msgid "Layer list"
+msgstr "Liste der Ebenen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:432
+msgid "Layer Name"
+msgstr "Name der Ebene"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:433
+msgid "Hide Layer Button on MenuBar"
+msgstr "Schaltfläche für die Ebenen in der Menüleiste verbergen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:434
+msgid "Color of layer"
+msgstr "Farbe für die Elemente in dieser Ebene"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:435
+msgid "Layer is drawn on Main window"
+msgstr "Ebene im Hauptfenster darstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:436
+msgid "Layer cannot be changed"
+msgstr "Ebene schützen - kann nicht mehr geändert werden"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:437
+msgid "Use color for this Layer if color-by-layer is set"
+msgstr ""
+"Für diese Ebene Farbe benutzen, wenn die Einstellung Ebenenfarbe ausgewählt "
+"ist"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:438
+msgid "Other Layers this Layer also shows/hides"
+msgstr ""
+"Andere Ebenen, die mit dieser Ebene angezeigt oder versteckt werden sollen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:439
+msgid "Layer is a Module"
+msgstr "Ebene ist ein Modul"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:440
+msgid "Layer is drawn on Map window"
+msgstr "Ebene wird im Kartenfenster angezeigt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:441
+msgid "Layer inherits settings from Layout"
+msgstr "Ebene übernimmt die Einstellungen vom Gleisplan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:442
+msgid "Specifies the Modelling Scale for this Layer"
+msgstr "Angabe des Modellbahnmaßstabs für diese Ebene"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:443
+msgid "Specifies the rail gauge for this Layer"
+msgstr ""
+"Angabe der Spurweite, d.h. der Abstand zwischen den Schienen für diese Ebene"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:444
+msgid ""
+"Specifies minimum track radius for this layer. Tracks with a smaller radius "
+"are considered exceptional."
+msgstr ""
+"Angabe des minimalen Gleisradius für diese Ebene. Gleise mit geringerem "
+"Radius werden als Ausnahme angezeigt."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:445
+msgid ""
+"Specifies maximum track grade percent (%) for this layer. Tracks with a "
+"larger grade are considered exceptional."
+msgstr ""
+"Angabe der maximalen Gleissteigung in % auf dieser Ebene. Gleise mit "
+"größerer Steigung werden als Ausnahme angezeigt."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:446
+msgid "Specifies the tie length for this layer."
+msgstr "Legt die Länge von Schwellen auf dieser Ebene fest."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:447
+msgid "Specifies the tie width for this layer."
+msgstr "Legt die Breite von Schwellen auf dieser Ebene fest."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:448
+msgid "Specifies the tie spacing for this layer."
+msgstr "Legt den Abstand von Schwellen auf dieser Ebene fest."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:449
+msgid "Add a new layer after the selected layer"
+msgstr "Eine neue Ebene hinter der ausgewählten Ebene einfügen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:450
+msgid "Delete the selected layer. There must be no objects in it."
+msgstr "Lösche die aktuelle Ebene. Diese darf keine Objekte enthalten."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:451
+msgid "Reset the layer to layout defaults"
+msgstr "Ebene auf Standardeinstellungen des Gleisplan zurück setzen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:452
+msgid "Number of layer buttons to show"
+msgstr "Anzahl der sichtbaren Schaltflächen für Ebenen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:453
+msgid "Number of objects in this layer"
+msgstr "Anzahl von Objekten in dieser Ebene"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:454
+msgid "Settings File to load when this layer is made current"
+msgstr ""
+"Einstellungsdatei, die geladen werden soll, wenn diese Ebene aktiviert wird"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:456
+msgid "Load layer configuration from default"
+msgstr "Standardeinstellungen für Ebenen laden"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:457
+msgid "Save current layer configuration as default"
+msgstr "Aktuelle Einstellungen für Ebenen als Standardwerte speichern"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:458
+msgid "Overwrite layer configuration with system default values"
+msgstr "Einstellung für Ebenen auf Standardwerte von XTrackCAD zurücksetzen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:459
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:460
+msgid "Specifies the size of the room (in inches or centimeters)"
+msgstr "Größenangabe des Raums (in Zentimeter oder Zoll)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:461
+msgid "Specifies the layout Title that will appear on printouts"
+msgstr "Angabe eines Titels für den Entwurf, der auf Ausdrucken erscheint"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:462
+msgid "Specifies the layout Subtitle that will appear on printouts"
+msgstr ""
+"Eingeben eines Untertitel für den Entwurf, der auf Ausdrucken erscheint"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:463
+msgid "Specifies the Modelling Scale"
+msgstr "Angabe des Modellmaßstabs"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:464
+msgid "Specifies the rail gauge, ie. the distance between the rails"
+msgstr "Angabe der Spurweite, d.h. der Abstand zwischen den Schienen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:465
+msgid ""
+"Specifies minimum track radius (in inches or centimeters). Tracks with a "
+"smaller radius are considered exceptional."
+msgstr ""
+"Angabe des minimalen Gleisradius (in Zentimeter oder Zoll). Gleise mit "
+"geringerem Radius werden als Ausnahme angesehen."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:466
+msgid ""
+"Specifies maximum track grade expressed as a percent (%). Tracks with a "
+"larger grade are considered exceptional."
+msgstr ""
+"Angabe der maximalen Gleissteigung in %. Gleise mit größerer Steigung werden "
+"als Ausnahme angesehen."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:467
+msgid "Specifies the tie length for the layout."
+msgstr "Legt die Länge von Schwellen auf dem Gleisplan fest."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:468
+msgid "Specifies the tie width for the layout."
+msgstr "Legt die Breite von Schwellen auf dem Gleisplan fest."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:469
+msgid "Specifies the tie spacing for the layout."
+msgstr "Legt den Abstand von Schwellen auf dem Gleisplan fest."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:470
+msgid "Select the background image"
+msgstr "Eine Bitmap als Hintergrund laden"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:471
+msgid "Remove the background image"
+msgstr "Das Hintergrundbild wird dauerhaft aus dem Entwurf entfernt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:472
+msgid "Specifies the x offset of the bottom left of the background image"
+msgstr ""
+"Bestimmt den Abstand des Hintergrundbildes von der linken unteren Ecke in "
+"horizontaler Richtung"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:473
+msgid "Specifies the y offset of the bottom left of the background image"
+msgstr ""
+"Bestimmt den Abstand des Hintergrundbildes von der linken unteren Ecke in "
+"vertikaler Richtung"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:474
+msgid ""
+"Specifies how large the bottom edge of the background image should be in "
+"model units"
+msgstr ""
+"Gibt an, wie groß die Unterkante des Hintergrundbildes in Modelleinheiten "
+"sein soll"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:475
+msgid ""
+"Specifies the screening of the background image from 0 (none) to 100% "
+"(vanishes)"
+msgstr ""
+"Bestimmt die Transparenz des Hintergrundbildes von 0 (keine) bis 100% "
+"(verschwindet)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:476
+msgid "Specifies the rotation angle of the background image in degrees"
+msgstr "Bestimmt den Drehwinkel für das Hintergrundbildes in Grad"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:477
+msgid "Write a copy of current settings to a named file"
+msgstr "Speichere die aktuelle Einstellungen in einer Datei"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:478
+msgid "Override current settings from a named file"
+msgstr ""
+"Ersetze die aktuellen Einstellungen durch Einstellungen aus einer Datei"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:479
+msgid "Save the link and close window"
+msgstr "Speichere die Verknüpfung und schließe das Fenster"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:483
+msgid "Enter the title of the linked webpage"
+msgstr "Den Titel für die verknüpfte Webseite eingeben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:484
+msgid "Enter the URL for the webpage"
+msgstr "Die URL für die Webseite eingeben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:485
+msgid "Open the webpage in your browser"
+msgstr "Öffne die Webseite in deinem Browser"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:486
+msgid "Move by X"
+msgstr "Um X verschieben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:487
+msgid "Move by Y"
+msgstr "Um Y verschieben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:490
+msgid ""
+"This is the body of the Note. To change this select Modify from the File "
+"Menu"
+msgstr "Dies ist der Notiztext."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:492
+msgid "Specifies number of pixels per inch (or centimeter)"
+msgstr "Gibt die Anzahl der Bildpunkte pro Zoll (oder Zentimeter) an"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:494
+msgid ""
+"Specifies whether Layout Titles, Borders or Track Centerlines are printed on "
+"the BitMap"
+msgstr ""
+"Gibt an, ob Anlagentitel, Begrenzungen oder Gleismitten beim Speichern als "
+"Bitmap ausgegeben werden sollen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:495
+msgid ""
+"Specifies the separation between the original track and the parallel track/"
+"line"
+msgstr ""
+"Gibt den Abstand zwischen dem vorhandenen und dem neuen, parallelen Gleis, "
+"bzw. der Linie, an"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:496
+msgid ""
+"Specifies the a factor that increases the seperation as the radius of the "
+"original track reduces. 0.0 means no increase."
+msgstr ""
+"Gibt das Ausmaß an, mit dem der Abstand wächst, sofern der Radius des "
+"ursprünglichen Gleis abnimmt. 0,0 ist keine Zunahme."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:497
+msgid "Enter your name as specified in the XTrackCAD Registration Notice"
+msgstr "Enter your name as specified in the XTrackCAD Registration Notice"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:498
+msgid "Enter the key value as specified in the XTrackCAD Registration Notice"
+msgstr "Enter the key value as specified in the XTrackCAD Registration Notice"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:499
+msgid "Validates the name and key. Terminates the registration command"
+msgstr "Validates the name and key. Terminates the registration command"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:500
+msgid "0 degrees is up or to the right"
+msgstr "0 Grad ist oben und rechts"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:501
+msgid "Choose english (inches) or metric (centimeters)"
+msgstr "Einheiten auswählen: Englisch für Inches oder Metrisch für Zentimeter"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:502
+msgid "How to display length measurements"
+msgstr "Längenformat auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:503
+msgid "Do not create tracks to be shorter than this value"
+msgstr "Gleise nicht erstellen, wenn diese kürzer als die Mindestlänge werden"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:504
+msgid "Maximum distance between connected end points"
+msgstr "Maximale Distanz zwischen verbundenen Endpunkten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:505
+msgid "Minimum angle between connected End-Points"
+msgstr "Kleinster Winkel zwischen verbundenen Endpunkten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:506
+msgid "Specifies the minimum angle between tracks connected to a turntable"
+msgstr "Kleinster Winkel beim Anschluss von Gleisen an eine Drehscheibe"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:507
+msgid "Trains will crash above this speed"
+msgstr "Züge entgleisen oberhalb dieser Geschwindigkeit"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:508
+msgid "Enable/Disable balloon popup help windows"
+msgstr "Ein-/Ausschalten der Kurzinfos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:509
+msgid "Enable/Disable show of flextrack on hotbar"
+msgstr "Anzeige von Flexgleis in der Auswahlleiste ein- und ausschalten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:510
+msgid "How far you can move the mouse before its considered a drag"
+msgstr "Länge der Mausbewegung um Ziehen zu beginnen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:511
+msgid "How long you can hold a mouse button down before its considered a drag"
+msgstr "Dauer des Drücken eines Mausknopfes um Ziehen zu beginnen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:512
+msgid "Minimum distance (in pixels) between grid lines/ticks"
+msgstr "Mindestabstand (in Pixeln) zwischen Raster und Linien"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:513
+msgid ""
+"Specifies the Check Point frequency; number of modifications made since the "
+"last checkpoint."
+msgstr ""
+"Anzahl von Änderungen bevor eine neue automatische Sicherungskopie erstellt "
+"wird."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:514
+msgid "Specifies the number of checkpoints after save before auto-saving."
+msgstr ""
+"Gibt die Anzahl der Sicherungskopien vor der nächsten automatischen "
+"Sicherung an."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:515
+msgid "Resume work on last layout or start with new layout"
+msgstr ""
+"Bearbeiten des letzten Gleisplan fortsetzen oder einen neuen Gleisplan "
+"erstellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:517
+msgid "Updated cost of current selected item"
+msgstr "Aktualisierte Kosten für den ausgewählten Gegenstand"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:519
+msgid "Selection list for prices"
+msgstr "Auswahlliste für Preise"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:520
+msgid "Length of a piece of flex-track"
+msgstr "Länge eines Flexgleises"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:521
+msgid "Price of specified length of flex-track"
+msgstr "Preis für die angegebene Länge des Flexgleises"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:523
+msgid "Controls the printing of a centerline of track cmdPrint"
+msgstr "Steuert das Drucken der Mittellinie von Gleisen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:524
+msgid "Controls the reduction (scale) of the printout"
+msgstr "Einstellung der Verkleinerung für den Ausdruck"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:525
+msgid "Scaled page width (Scale times physical page width)"
+msgstr "Seitenbreite angeben (Maßstab mal tatsächlicher Papierbreite)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:526
+msgid "Sets page size to the maximum (based on scale and physical page size)"
+msgstr ""
+"Setzt die Papiergröße auf das Maximum (basierend auf Maßstab und "
+"tatsächlicher Papiergröße)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:527
+msgid "Scaled page height (Scale times physical page height)"
+msgstr "Seitenhöhe angeben (Maßstab mal physikalischer Papierhöhe)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:528
+msgid "Sets scale, origin and angle for a one page printout of the layout"
+msgstr ""
+"Stellt Maßstab, Ausrichtung und Winkel ein, um den Gleisplan aus einer Seite "
+"zu drucken"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:529
+msgid "Print page in Portrait or Landscape format"
+msgstr "Im Hochformat oder Querformat drucken"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:530
+msgid "Order of printing pages"
+msgstr "Reihenfolge der Seiten im Ausdruck"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:531
+msgid "Print Title, Date, Author and other information at bottom of page?"
+msgstr "Titel, Datum Autor und andere Informationen am Ende der Seite drucken?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:532
+msgid "Ignore unprintable page margins?"
+msgstr "Nicht druckbare Seitenränder ignorieren?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:533
+msgid "Print Registration Marks at 1:1?"
+msgstr "Positionierungshilfen im 1:1 Maßstab drucken?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:534
+msgid "Print Snap Grid?"
+msgstr "Fangraster drucken?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:535
+msgid "Print Rulers at the layout edge only, or on all page edges, or nowhere?"
+msgstr ""
+"Lineal am Anlagenrand, auf allen Seitenrändern drucken oder nicht drucken?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:536
+msgid "Print Roadbed Outline?"
+msgstr "Gleisbettung drucken?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:537
+msgid "Print Roadbed Outline"
+msgstr "Gleisbettung drucken"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:538
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:539
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:541
+msgid ""
+"Origin of the print grid. This is useful if you want to reprint a set of "
+"pages"
+msgstr ""
+"Ursprung des Druckraster. Hilfreich, wenn einige Seiten erneut gedruckt "
+"werden"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:540
+msgid "Resets the origin and angle to 0"
+msgstr "Ursprung und Winkel auf 0 zurücksetzen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:542
+msgid "Deselects all pages"
+msgstr "Alle Seiten abwählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:544
+msgid "Print selected pages and terminates the print command"
+msgstr "Schließe den Dialog und drucke die ausgewählten Seiten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:545
+msgid "List of loaded, shown or hidden parameter files"
+msgstr "Liste der geladenen, angezeigten und inaktiven Parameterdateien"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:546
+msgid "Show parameter files by names or descriptions"
+msgstr "Zeige Dateinamen oder Beschreibung der Parameterdateien an"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:547
+msgid "Toggle the shown status of the selected parameter file"
+msgstr "Ändere den Anzeigestatus für ausgewählte Parameterdateien"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:548
+msgid "Find extra parameter files from the filesystem"
+msgstr "Suche weitere Parameterdateien"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:549
+msgid "Bookmark parameter files"
+msgstr "Buchzeichen für Parameterdatei setzen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:550
+msgid "Find parameter files from the system library"
+msgstr "Suche Parameterdateien in den Anwendungsdaten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:551
+msgid "Update parameter file list"
+msgstr "Aktualisiere die Liste der Parameterdateien"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:552
+msgid "Reload parameter file from list"
+msgstr "Parameterdateien wieder laden"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:553
+msgid "Select all parameter files shown"
+msgstr "Alle angezeigten Parameterdateien auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:554
+msgid "Remove parameter files from active list"
+msgstr "Parameterdateien Parameterdatei aus der aktiven Liste entfernen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:555
+msgid "Profile of specified path"
+msgstr "Höhenprofil der ausgewählten Verbindung"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:556
+msgid "Clear the profile"
+msgstr "Lösche das Höhenprofil"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:557
+msgid "Print the profile"
+msgstr "Drucke das Höhenprofil"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:559
+msgid "Stop recording"
+msgstr "Aufzeichnung beenden"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:560
+msgid "Insert a message"
+msgstr "Eine Mitteilung einfügen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:561
+msgid "End a message"
+msgstr "Ende einer Mitteilung"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:562
+msgid "Message body"
+msgstr "Mitteilung"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:563
+msgid "Possible turnouts"
+msgstr "Mögliche Weichen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:564
+msgid "Skip this turnout"
+msgstr "Diese Weiche überspringen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:566
+msgid "Manufacturer of Object"
+msgstr "Hersteller des Objektes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:567
+msgid "Description of Object"
+msgstr "Beschreibung des Objekte"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:568
+msgid "Part Nuber of Object"
+msgstr "Bestellnummer des Objektes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:570
+msgid "Rescale by Scale Conversion or by Ratio"
+msgstr ""
+"Durch Auswahl eines neuen Maßstab oder durch Eingabe eines Faktors skalieren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:571
+msgid "Original Scale of the selected objects"
+msgstr "Ursprünglicher Maßstab der ausgewählten Objekte"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:572
+msgid "Original Gauge of the selected objects"
+msgstr "Ursprüngliche Spurweite der ausgewählten Gleise"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:573
+msgid "New Scale of the selected objects"
+msgstr "Neuer Maßstab der ausgewählten Objekte"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:574
+msgid "New Gauge of the selected objects"
+msgstr "Neue Spurweite der ausgewählten Gleise"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:575
+msgid "Change track dimensions to new scale"
+msgstr "Maße des Gleises auf den neuen Maßstab umrechnen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:576
+msgid "Change size by this amount"
+msgstr "Größe um diesen Faktor verändern"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:578
+msgid "Snap Grid Line and Division"
+msgstr "Linien und Unterteilungen im Fangraster"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:579
+msgid "X and Y position markers"
+msgstr "X und Y Positionsmarkierungen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:580
+msgid "Border rulers, room boundaries and table edges"
+msgstr "Begrenzungslinien, Raumumriß und Anlagenkanten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:581
+msgid "Primary Axis of grid rotation"
+msgstr "Erste Achse für Rasterdrehung"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:582
+msgid "Secondary Axis of grid rotation"
+msgstr "Zweite Achse für Rasterdrehung"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:583
+msgid "Unselected tracks"
+msgstr "Nicht ausgewählte Gleise"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:584
+msgid "Selected tracks"
+msgstr "Ausgewählte Gleise"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:585
+msgid "Color of tracks on the Profile path"
+msgstr "Farbe für Gleise auf dem Höhenverlauf"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:586
+msgid "Color of Exceptional tracks"
+msgstr "Farbe für Gleise außerhalb der Grenzwerte"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:587
+msgid "Color of track ties"
+msgstr "Farbe der Schwellen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:588
+msgid "Updates the colors"
+msgstr "Farben aktualisieren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:589
+msgid "Angle in degrees"
+msgstr "Winkel in Grad"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:590
+msgid "Rotate object(s) by specified amount"
+msgstr "Objekte um einen bestimmten Winkel drehen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:591
+msgid "Enter one or more words as search terms"
+msgstr "Ein Wort oder mehrere Wörter als Suchbegriffe eingeben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:592
+msgid "Remove the current filter and show all files"
+msgstr "Den aktuellen Filter löschen und alle Dateien anzeigen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:593
+msgid "Find matching file descriptions"
+msgstr "Passende Inhaltsbeschreibungen finden"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:594
+msgid "Search results"
+msgstr "Suchergebnisse"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:595
+msgid "Show descriptions or filenames in results"
+msgstr "Beschreibungen oder Dateinamen in der Ergebnisliste anzeigen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:596
+msgid "Select how well the definitions must fit the current layout scale"
+msgstr ""
+"Wählen Sie aus, wie gut die Definitionen zum aktuellen Maßstab des "
+"Gleisplans passen müssen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:597
+msgid "Add selected entries into parameter file list"
+msgstr "Ausgewählte Einträge zur Liste der Parameterdateien zufügen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:598
+msgid "Select All found entries"
+msgstr "Alle Suchergebnisse auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:599
+msgid "Reload the system library contents for finding"
+msgstr "Laden Sie den Inhalt der Systembibliothek zum Suchen neu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:600
+msgid "Choose commands to be sticky"
+msgstr "Wiederholbare Funktionen auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:601
+msgid "Make the commands sticky"
+msgstr "Wiederholbare Funktionen festlegen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:602
+msgid "List of available structure"
+msgstr "Liste der verfügbaren Gebäude"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:603
+msgid "Diagram of the selected structure"
+msgstr "Zeichnung des ausgewählten Gebäudes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:604
+msgid "Hide Selection window when placing Structure"
+msgstr "Verberge Auswahlfenster bis das Gebäude plaziert ist"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:605
+msgid "Drawing scale and size"
+msgstr "Zeichnungsmaßstab und -größe"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:606
+msgid "Complete structure placement"
+msgstr "Anordnung des Gebäude abschließen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:607
+msgid "Choose a Pier number"
+msgstr "Bestellnummer eingeben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:608
+msgid "Name of the Motor"
+msgstr "Name des Weichenantriebs"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:609
+msgid "Value when switch is normal"
+msgstr "Werte bei normaler Weichenposition"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:610
+msgid "Value when the switch is reversed"
+msgstr "Wert bei umgekehrter Weichenposition"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:611
+msgid "Value for a positive comfirmation of switch position"
+msgstr "Wert bei positiver Bestätigung der Weichenposition"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:613
+msgid "Controls the color of the entered text"
+msgstr "Wählt die Farbe des eingegebenen Textes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:614
+msgid "If the text is boxed"
+msgstr "Rahmen um den Text zeichnen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:615
+msgid "Save and close editor dialog"
+msgstr "Dialogfenster aktualisieren und schließen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:616
+msgid "Set layer for the note"
+msgstr "Wähle die Ebene für die Notiz"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:619
+msgid "Enter your additional information here"
+msgstr "Weitere Information hier eingeben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:620
+msgid "Useful information about the program"
+msgstr "Nützliche Informationen über das Programm"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:621
+msgid "Show Tip of the Day every time the program starts"
+msgstr "Bei jedem Start den Tipp des Tages anzeigen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:622
+msgid "Show the next Tip of the Day"
+msgstr "Gehe zum nächsten Tipp des Tages"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:623
+msgid "Show the previous Tip of the Day"
+msgstr "Gehe zum vorherigen Tipp des Tages"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:625
+#, fuzzy
+msgid "List of button groups and their state in the toolbar"
+msgstr "Zeige alle Schaltflächen-Gruppen an"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:626
+msgid "Set all button groups visible in toolbar"
+msgstr "Zeige alle Schaltflächen-Gruppen an"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:627
+msgid "Invert the visibility of button groups"
+msgstr "Kehre die Sichtbarkeit der Schaltflächen-Gruppen um"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:628
+msgid "Close dialog and configure the toolbar"
+msgstr "Schließe den Dialog und passe die Werkzeugleiste an"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:629
+msgid "List of Cars"
+msgstr "Liste der Wagen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:630
+msgid "List of active trains"
+msgstr "Liste der aktiven Züge"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:632
+msgid "Train odometer"
+msgstr "Entfernungsmesser"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:633
+msgid "Reset odometer to 0"
+msgstr "Entfernungsmesser auf 0 zurücksetzen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:634
+msgid "Find train on layout"
+msgstr "Finde einen Zug auf der Anlage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:635
+msgid "Follow train around layout"
+msgstr "Dem Zug über die Anlage folgen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:636
+msgid "Flip direction at End Of Track"
+msgstr "Am Ende des Gleises die Fahrtrichtung umkehren"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:637
+msgid "Change direction of train"
+msgstr "Richtung des Zuges ändern"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:638
+msgid "Stop the train"
+msgstr "Anhalten des Zuges"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:639
+msgid "List of available turnouts for the current scale"
+msgstr "Liste der im aktuellen Maßstab verfügbaren Gleise"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:640
+msgid ""
+"Diagram of the currently selected turnout. Click on a End-Point to select "
+"the Active End-Point"
+msgstr ""
+"Zeichnung des ausgewählten Gleises. Der aktive Endpunkt kann durch Klicken "
+"auf diesen Endpunkt gesetzt werden"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:641
+msgid ""
+"A menu list of various type of turnouts and sectional tracks you can define"
+msgstr ""
+"Eine Auswahlliste verschiedener Arten von Weichen und Festgleisen, die Sie "
+"definieren können"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:642
+msgid "Hide Selection window when placing Turnout"
+msgstr "Verberge das Auswahlfenster während des Verlegen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:643
+msgid "The selected Active End-Point"
+msgstr "Der ausgewählte, aktive Endpunkt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:644
+msgid "Current selected turnout, (displayed in the diagram window)"
+msgstr "Momentan ausgewähltes Gleis, (sichtbar im Diagramm-Fenster)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:645
+msgid "One the End-Points that can be selected"
+msgstr "Einer der Endpunkte, der ausgewählt werden kann"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:647
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:648
+msgid "Angle of the specified track to the center line of the turnout"
+msgstr "Winkel zwischen dem ausgewählten Gleis und der Mittellinie der Weiche"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:649
+msgid "Specifies if angles are entered as Frog Numbers or in degrees"
+msgstr "Angabe des Abzweigwinkel als Steigung oder in Grad"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:652
+msgid "Turnout description (Manuf., Size, Part Number, etc)"
+msgstr "Beschreibung der Weiche (Hersteller, Winkel, Teilenummer, etc.)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:653
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:654
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:655
+msgid "Length from the base to the end of the specified track"
+msgstr "Länge von der Grundlinie zum Ende des ausgewählten Gleises"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:657
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:658
+msgid "Offset of the track End-Point from the center line of the turnout"
+msgstr "Abstand des Endpunktes von der Mittellinie der Weiche"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:661
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:662
+msgid "Prints a full size diagram of the turnout for checking"
+msgstr "Erstellt einen Probeausdruck der Weiche in voller Größe"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:663
+msgid "Color of Roadbed lines"
+msgstr "Farbe der Linien zur Gleisbettbegrenzung"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:664
+msgid "Width of Roadbed lines"
+msgstr "Abstand des Gleisbettbegrenzungen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:665
+msgid "Width of Roadbed"
+msgstr "Breite des Gleisbetts"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:667
+msgid "Closes the window and returns to the Turnout Selection window"
+msgstr "Schließt das Fenster und kehrt zur Weichenauswahl zurück"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:668
+msgid "Specifies the diameter of the turntable"
+msgstr "Legt den Durchmesser der Drehscheibe fest"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:669
+msgid "Old Turnout title"
+msgstr "Alte Bezeichnung des Gleises"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:670
+msgid "List of available titles"
+msgstr "Liste der verfügbaren Titel"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:671
+msgid "Leave the Turnouts' title unchanged"
+msgstr "Titel des Gleises unverändert lassen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:672
+msgid "Invoke the Parameter Files dialog"
+msgstr "Parameterdateien auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:673
+msgid "List of available turnouts"
+msgstr "Liste der verfügbaren Weichen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:674
+msgid "Update the Turnouts' title"
+msgstr "Aktualisiere den Titel des Gleises"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:678
+msgid "Sample"
+msgstr "Beispiel"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:680
+msgid "Slant"
+msgstr "Neigung"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:681
+msgid "Font selection dialog"
+msgstr "Dialog zur Auswahl der Schriftart"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:682
+msgid "Weight"
+msgstr "Stärke"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:683
+msgid "Printer Abort Window"
+msgstr "Druck abbrechen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:684
+msgid "Print to filename"
+msgstr "Name der Druckdatei"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:685
+msgid "Specify Postscript font alias mapping"
+msgstr "Zuordnung der Postscript-Schriftarten angeben"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:686
+msgid ""
+"Displays the Print Setup window to change printers, orientation, paper size, "
+"etc."
+msgstr ""
+"Ruft den Konfigurationsdialog für Drucker auf, um Drucker oder Papier "
+"Einstellungen vornehmen zu können."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:687
+msgid "Closes this dialog"
+msgstr "Dialogfenster schließen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:688
+msgid "Page orientation"
+msgstr "Seitenausrichtung"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:689
+msgid "Unprintable margins"
+msgstr "Nicht druckbare Ränder"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:690
+msgid "Updates and closes this dialog"
+msgstr "Dialogfenster aktualisieren und schließen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:691
+msgid "Choose paper size"
+msgstr "Papierformat auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:692
+msgid "Choose printer"
+msgstr "Drucker auswählen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:693
+msgid "Print test page"
+msgstr "Testseite drucken"
+
+#~ msgid "&Tool Bar"
+#~ msgstr "Werkzeugleiste anpassen"
+
+#~ msgid "Predefined Track"
+#~ msgstr "Vordefiniertes Gleis"
+
+#~ msgid "Invoke designer editor"
+#~ msgstr "Vorbild bearbeiten"
+
+#~ msgid "Controls which Command Buttons are displayed"
+#~ msgstr "Ein- oder Ausblenden von Schaltflächen in der Werkzeugleiste"
+
+#~ msgid "Desciption"
+#~ msgstr "Beschreibung"
+
+#~ msgid "Plain Text"
+#~ msgstr "Einfacher Text"
+
+#~ msgid "No paths"
+#~ msgstr "Keine Wege"
+
+#~ msgid "Layout"
+#~ msgstr "Anlage"
+
+#~ msgid ""
+#~ "The entered URL is too long. The maximum allowed length is %d. Please "
+#~ "edit the entered value."
+#~ msgstr ""
+#~ "Die eingegebene URL ist zu lang. Die maximal zulässige Länge ist %d. "
+#~ "Bitte bearbeiten Sie den eingegebenen Wert."
+
+#~ msgid "Re-edit"
+#~ msgstr "Nochmals bearbeiten"
+
+#~ msgid "Update comment"
+#~ msgstr "Kommentar aktualisieren"
+
+#~ msgid "Comment"
+#~ msgstr "Kommentar"
+
+#~ msgid "Scale index (%d) is not valid"
+#~ msgstr "Maßstab (%d) ist nicht gültig"
+
+#~ msgid ""
+#~ "Scale %s is not valid\n"
+#~ "Please check your %s.xtq file"
+#~ msgstr ""
+#~ "Maßstab %s ist ungültig.\n"
+#~ "Bitte prüfen Sie die Datei %s.xtq"
+
+#~ msgid "a straight or a curve.\n"
+#~ msgstr "eine Gerade oder eine Kurve.\n"
+
+#~ msgid ""
+#~ "To create a 1/4\" line, divide the dots-per-inch (DPI) of your display by "
+#~ "4.\n"
+#~ msgstr ""
+#~ "Um eine 1/4 Inch-breite Linie zu erstellen, teilen Sie die Punkte pro "
+#~ "Zoll (DPI) Ihrer Anzeige durch 4.\n"
+
+#~ msgid ""
+#~ "For MS-Windows the DPI is usually 98, so choose: 98/4 = 24 "
+#~ "(approximately).\n"
+#~ msgstr ""
+#~ "Unter Windows ist die Auflösung normalerweise 98, also wählen wir 98 / 4 "
+#~ "= ca. 24.\n"
+
+#~ msgid "For Linux, the DPI is usually 72, so choose: 72/4 = 18.\n"
+#~ msgstr ""
+#~ "Unter Linux ist die Auflösung normalerweise 72, also wählen wir 72 / 4 = "
+#~ "18.\n"
+
+#~ msgid "Bridge"
+#~ msgstr "Brücke"
+
+#~ msgid "Angle = %0.3f"
+#~ msgstr "Winkel = %0.3f"
+
+#~ msgid "&Loosen Tracks"
+#~ msgstr "Gleise lockern"
+
+#~ msgid "%d Track(s) loosened"
+#~ msgstr "%d Gleis(e) gelockert"
+
+#~ msgid "No tracks loosened"
+#~ msgstr "Keine Gleise gelockert"
+
+#~ msgid "Save format:"
+#~ msgstr "Speicherformat:"
+
+#~ msgid "Image files"
+#~ msgstr "Grafikdateien"
+
+#~ msgid "Font Select"
+#~ msgstr "Auswahl der Schriftart"
+
+#~ msgid "Co&mmand Context help"
+#~ msgstr "Kontexthilfe für Befehle"
+
+#~ msgid "Home"
+#~ msgstr "Startseite"
+
+#~ msgid "Contents"
+#~ msgstr "Inhaltsverzeichnis"
+
+#~ msgid "<Empty List>"
+#~ msgstr "<Leere Liste>"
+
+#~ msgid "%d of %d"
+#~ msgstr "%d von %d"
+
+#~ msgid ""
+#~ "The required configuration files could not be located in the expected "
+#~ "location.\n"
+#~ "\n"
+#~ "Usually this is an installation problem. Make sure that these files are "
+#~ "installed in either \n"
+#~ " ../share/xtrkcad or\n"
+#~ " /usr/share/%s or\n"
+#~ " /usr/local/share/%s\n"
+#~ "If this is not possible, the environment variable %s must contain the "
+#~ "name of the correct directory."
+#~ msgstr ""
+#~ "Die notwendigen Konfigurationsdateien konnten nicht im erwarteten "
+#~ "Verzeichnis gefunden werden.\n"
+#~ "\n"
+#~ "Ãœblicherweise ist dies ein Installationsproblem. Stellen Sie sicher, dass "
+#~ "diese Dateien in entweder\n"
+#~ "../share/xtrkcad oder\n"
+#~ "/usr/share/%s oder\n"
+#~ "/usr/local/share/%s\n"
+#~ "gespeichert sind. Sollte das nicht möglich sein, muss die "
+#~ "Umgebungsvariable %s den Namen des korrekten Verzeichnis enthalten."
+
+#~ msgid "HOME is not set"
+#~ msgstr "HOME ist nicht gesetzt"
+
+#~ msgid "Exit"
+#~ msgstr "Beenden"
+
+#~ msgid "Cannot create %s"
+#~ msgstr "Kann %s nicht erstellen"
+
+#~ msgid "Image file is invalid or cannot be read."
+#~ msgstr "Die Bilddatei ist ungültig oder kann nicht gelesen werden."
+
+#~ msgid "Ctrl+"
+#~ msgstr "Strg+"
+
+#~ msgid "Alt+"
+#~ msgstr "Alt+"
+
+#~ msgid "Shift+"
+#~ msgstr "Umsch+"
+
+#~ msgid "Space"
+#~ msgstr "Abstand"
+
+#~ msgid ""
+#~ "Pressing the turnout button displays the Turnout Selection window to let "
+#~ "you choose a turnout to place.\n"
+#~ msgstr ""
+#~ "Durch Drücken des Knopfes <Weiche> wird das Weichenauswahl-Fenster "
+#~ "geöffnet. Hier können Sie eine Weiche auswählen.\n"
+
+#~ msgid ""
+#~ "Note that once you start to place the turnout on the Main window the "
+#~ "Turnout Selection window disappears. This feature is enabled by the Hide "
+#~ "toggle button on the dialog.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Beachten Sie, dass das Weichenauswahl-Fenster verschwindet sobald Sie mit "
+#~ "dem Legen der Weiche beginnen. Diese Eigenschaft wird durch den "
+#~ "'Verbergen' Schalter des Dialogs eingeschaltet.\n"
+
+#~ msgid ""
+#~ "Pressing the Close button on the Turnout dialog will end the <Turnout> "
+#~ "command as well as placing the turnout.\n"
+#~ msgstr ""
+#~ "Durch Drücken des Schliessen-Knopfes im Dialogfenster können Sie den "
+#~ "Befehl beenden und die Weiche festlegen.\n"
+
+#~ msgid "Pressing Close ends the <Turnout> command.\n"
+#~ msgstr "Durch Drücken von <Schliessen> wird der Befehl <Weiche> beendet.\n"
+
+#~ msgid ""
+#~ "You can resize and move the Turnout Selection dialog if it obscures the "
+#~ "other windows.\n"
+#~ msgstr ""
+#~ "Sie können den Weichenauswahl-Dialog verkleinern und verschieben, wenn er "
+#~ "andere Fensterbereiche verdeckt.\n"
diff --git a/app/i18n/fi.po b/app/i18n/fi.po
index 1abb9e0..b739f5b 100644
--- a/app/i18n/fi.po
+++ b/app/i18n/fi.po
@@ -1,15824 +1,17006 @@
-# Finnish translations for xtrkcad package.
-# Copyright (C) 2007 Mikko Nissinen
-# This file is distributed under the same license as the xtrkcad package.
-# Mikko Nissinen <mni77@users.sourceforge.net>, 2007.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xtrkcad 4.1.0b1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-07-11 09:01+0200\n"
-"PO-Revision-Date: 2008-02-05 11:21+0200\n"
-"Last-Translator: Mikko Nissinen <mni77@users.sourceforge.net>\n"
-"Language-Team: Finnish <mni77@users.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../bin/archive.c:178 ../bin/archive.c:185 ../bin/archive.c:214
-#: ../bin/archive.c:239 ../bin/archive.c:294 ../bin/archive.c:307
-#: ../bin/archive.c:315 ../bin/archive.c:365 ../bin/archive.c:400
-#: ../bin/archive.c:416 ../bin/archive.c:426 ../bin/archive.c:449
-#: ../bin/cblock.c:491 ../bin/cswitchmotor.c:475 ../bin/dbench.c:147
-#: ../bin/dcar.c:4520 ../bin/dcar.c:4706 ../bin/dcar.c:4716 ../bin/dcar.c:4764
-#: ../bin/dcar.c:4771 ../bin/dcar.c:4789 ../bin/dcar.c:4802 ../bin/dcar.c:4807
-#: ../bin/dcar.c:4836 ../bin/dcar.c:5000 ../bin/directory.c:65
-#: ../bin/directory.c:100 ../bin/directory.c:107 ../bin/directory.c:138
-#: ../bin/directory.c:154 ../bin/dxfoutput.c:193 ../bin/fileio.c:241
-#: ../bin/fileio.c:698 ../bin/fileio.c:898 ../bin/fileio.c:1025
-#: ../bin/fileio.c:1092 ../bin/fileio.c:1098 ../bin/fileio.c:1174
-#: ../bin/fileio.c:1184 ../bin/fileio.c:1517 ../bin/fileio.c:1567
-#: ../bin/fileio.c:1623 ../bin/macro.c:179 ../bin/macro.c:832
-#: ../bin/macro.c:877 ../bin/macro.c:898 ../bin/macro.c:1043
-#: ../bin/macro.c:1060 ../bin/macro.c:1322 ../bin/param.c:2090
-#: ../bin/paramfile.c:250 ../bin/paramfilelist.c:376 ../bin/track.c:1116
-#: ../bin/track.c:1640 ../bin/track.c:1946 ../bin/track.c:1950
-#: ../bin/track.c:1962 ../bin/track.c:2026 ../wlib/gtklib/wpref.c:248
-#: ../wlib/gtklib/wpref.c:255
-msgid "Continue"
-msgstr "Jatka"
-
-#: ../bin/cbezier.c:599
-#, fuzzy
-msgid "Select End-Point - Ctrl unlocks end-point"
-msgstr "Valitse ensimmäinen yhdistettävä päätepiste"
-
-#: ../bin/cbezier.c:601
-msgid "Select End-Point"
-msgstr "Valitse päätepiste"
-
-#: ../bin/cbezier.c:633
-msgid "Not close enough to any valid, selectable point, reselect"
-msgstr ""
-
-#: ../bin/cbezier.c:639
-#, c-format
-msgid "Drag point %d to new location and release it"
-msgstr ""
-
-#: ../bin/cbezier.c:648 ../bin/cbezier.c:739 ../bin/cbezier.c:741
-msgid "Pick any circle to adjust it - Enter to confirm, ESC to abort"
-msgstr ""
-
-#: ../bin/cbezier.c:672
-msgid "Bezier Curve Invalid has identical end points Change End Point"
-msgstr ""
-
-#: ../bin/cbezier.c:675
-#, c-format
-msgid "Bezier Curve Invalid has %s Change End Point"
-msgstr ""
-
-#: ../bin/cbezier.c:678
-msgid "Bezier Curve Invalid has three co-incident points"
-msgstr ""
-
-#: ../bin/cbezier.c:680
-#, fuzzy
-msgid "Bezier is Straight Line"
-msgstr "Suora viiva"
-
-#: ../bin/cbezier.c:682
-#, c-format
-msgid "Bezier %s : Min Radius=%s Length=%s fx=%0.3f fy=%0.3f cusp=%0.3f"
-msgstr ""
-
-#: ../bin/cbezier.c:686
-#, fuzzy, c-format
-msgid "Bezier %s : Min Radius=%s Length=%s"
-msgstr "Kaareva raideosa: Säde=%s Pituus=%s"
-
-#: ../bin/cbezier.c:711
-#, fuzzy
-msgid "No unconnected End Point to lock to"
-msgstr "Valitse toinen yhdistettävä päätepiste"
-
-#: ../bin/cbezier.c:729
-msgid "Bezier curve invalid has identical end points Change End Point"
-msgstr ""
-
-#: ../bin/cbezier.c:732
-#, c-format
-msgid "Bezier curve invalid has %s Change End Point"
-msgstr ""
-
-#: ../bin/cbezier.c:735
-msgid "Bezier curve invalid has three co-incident points"
-msgstr ""
-
-#: ../bin/cbezier.c:737
-#, fuzzy
-msgid "Bezier curve is straight line"
-msgstr "Luo suora viiva"
-
-#: ../bin/cbezier.c:751 ../bin/cbezier.c:765
-msgid "Invalid Bezier Track - end points are identical"
-msgstr ""
-
-#: ../bin/cbezier.c:758
-#, c-format
-msgid "Invalid Bezier Curve has a %s - Adjust"
-msgstr ""
-
-#: ../bin/cbezier.c:762
-msgid "Invalid Bezier Curve has three coincident points - Adjust"
-msgstr ""
-
-#: ../bin/cbezier.c:770
-#, fuzzy
-msgid "Create Bezier"
-msgstr "Luo viivoja"
-
-#: ../bin/cbezier.c:858
-#, fuzzy, c-format
-msgid "%s picked - now select a Point"
-msgstr "Valitsemattoman raideosan päätepiste"
-
-#: ../bin/cbezier.c:888 ../bin/ccornu.c:1953
-msgid "No changes made"
-msgstr ""
-
-#: ../bin/cbezier.c:892
-#, fuzzy
-msgid "Modify Bezier"
-msgstr "Muokkaa raidetta"
-
-#: ../bin/cbezier.c:910
-#, fuzzy
-msgid "Modify Bezier Complete"
-msgstr "Muokkaa raidetta"
-
-#: ../bin/cbezier.c:914
-msgid "Modify Bezier Cancelled"
-msgstr ""
-
-#: ../bin/cbezier.c:1038 ../bin/cbezier.c:1129
-#, fuzzy, c-format
-msgid "Place 1st endpoint of Bezier - snap to %s"
-msgstr "Aseta suoran raiteen 1. päätepiste"
-
-#: ../bin/cbezier.c:1056 ../bin/ccornu.c:2290 ../bin/ccurve.c:205
-#: ../bin/ccurve.c:439 ../bin/cstraigh.c:91
-msgid "Track is different gauge"
-msgstr ""
-
-#: ../bin/cbezier.c:1084
-msgid "Drag end of first control arm"
-msgstr ""
-
-#: ../bin/cbezier.c:1091
-msgid "Drag end of second control arm"
-msgstr ""
-
-#: ../bin/cbezier.c:1133 ../bin/cbezier.c:1170
-#, fuzzy, c-format
-msgid "Select other end of Bezier - snap to %s end"
-msgstr "Aseta suoran raiteen 1. päätepiste"
-
-#: ../bin/cbezier.c:1165
-msgid "Control Arm 1 is too short, try again"
-msgstr ""
-
-#: ../bin/cblock.c:111 ../bin/cblock.c:123 ../bin/cblock.c:168
-#: ../bin/ccontrol.c:171 ../bin/ccontrol.c:425 ../bin/compound.c:567
-#: ../bin/csensor.c:163 ../bin/csensor.c:389 ../bin/csignal.c:238
-#: ../bin/csignal.c:498 ../bin/csignal.c:509 ../bin/csignal.c:535
-#: ../bin/cswitchmotor.c:93 ../bin/cswitchmotor.c:112
-#: ../bin/cswitchmotor.c:224 ../bin/dcontmgm.c:91 ../bin/dlayer.c:483
-msgid "Name"
-msgstr "Nimi"
-
-#: ../bin/cblock.c:112 ../bin/cblock.c:124 ../bin/cblock.c:169
-#: ../bin/csensor.c:165 ../bin/csensor.c:395 ../bin/csignal.c:498
-#: ../bin/csignal.c:537
-msgid "Script"
-msgstr ""
-
-#: ../bin/cblock.c:125
-#, fuzzy
-msgid "Segments"
-msgstr "Lohkoja"
-
-#: ../bin/cblock.c:170 ../bin/cdraw.c:515 ../bin/cdraw.c:1425
-#: ../bin/cdraw.c:1571 ../bin/cdraw.c:2224 ../bin/cdraw.c:2450
-#: ../bin/cdraw.c:2487 ../bin/ctodesgn.c:170 ../bin/ctodesgn.c:171
-#: ../bin/ctodesgn.c:172 ../bin/ctodesgn.c:173 ../bin/ctodesgn.c:185
-#: ../bin/ctodesgn.c:186 ../bin/ctodesgn.c:236 ../bin/ctodesgn.c:239
-#: ../bin/ctodesgn.c:259 ../bin/ctodesgn.c:264 ../bin/ctodesgn.c:296
-#: ../bin/ctodesgn.c:303 ../bin/ctodesgn.c:305 ../bin/ctodesgn.c:325
-#: ../bin/ctodesgn.c:330 ../bin/ctodesgn.c:362 ../bin/ctodesgn.c:369
-#: ../bin/ctodesgn.c:370 ../bin/ctodesgn.c:391 ../bin/ctodesgn.c:394
-#: ../bin/ctodesgn.c:397 ../bin/ctodesgn.c:432 ../bin/ctodesgn.c:436
-#: ../bin/ctodesgn.c:443 ../bin/ctodesgn.c:444 ../bin/ctodesgn.c:445
-#: ../bin/ctodesgn.c:467 ../bin/ctodesgn.c:469 ../bin/ctodesgn.c:487
-#: ../bin/ctodesgn.c:489 ../bin/ctodesgn.c:508 ../bin/ctodesgn.c:510
-#: ../bin/ctodesgn.c:537 ../bin/ctodesgn.c:557 ../bin/ctodesgn.c:577
-#: ../bin/ctodesgn.c:597 ../bin/ctodesgn.c:635 ../bin/ctodesgn.c:654
-#: ../bin/ctodesgn.c:655 ../bin/ctrain.c:185 ../bin/tbezier.c:258
-#: ../bin/tcornu.c:307 ../bin/tcurve.c:372 ../bin/tstraigh.c:89
-msgid "Length"
-msgstr "Pituus"
-
-#: ../bin/cblock.c:171 ../bin/cdraw.c:507 ../bin/compound.c:542
-#: ../bin/tbezier.c:245 ../bin/tcornu.c:294 ../bin/tcurve.c:364
-#: ../bin/tease.c:519 ../bin/tstraigh.c:85
-#, fuzzy
-msgid "End Pt 1: X,Y"
-msgstr "Päätepiste 1: X"
-
-#: ../bin/cblock.c:172 ../bin/cdraw.c:508 ../bin/compound.c:547
-#: ../bin/tbezier.c:252 ../bin/tcornu.c:299 ../bin/tcurve.c:366
-#: ../bin/tease.c:521 ../bin/tstraigh.c:87
-#, fuzzy
-msgid "End Pt 2: X,Y"
-msgstr "Päätepiste 2: X"
-
-#: ../bin/cblock.c:195 ../bin/cblock.c:207 ../bin/cblock.c:575
-#: ../bin/cblock.c:596 ../bin/cblock.c:604 ../bin/cblock.c:674
-#: ../bin/cblock.c:795 ../bin/cblock.c:807 ../bin/cblock.c:845
-#: ../bin/ccontrol.c:205 ../bin/ccontrol.c:218 ../bin/ccontrol.c:230
-#: ../bin/ccontrol.c:486 ../bin/cdraw.c:130 ../bin/cdraw.c:2283
-#: ../bin/cgroup.c:1075 ../bin/cgroup.c:1146 ../bin/cgroup.c:1185
-#: ../bin/cgroup.c:1235 ../bin/cgroup.c:1262 ../bin/cgroup.c:1350
-#: ../bin/cgroup.c:1729 ../bin/cnote.c:69 ../bin/compound.c:603
-#: ../bin/compound.c:618 ../bin/compound.c:651 ../bin/cprint.c:512
-#: ../bin/cprint.c:716 ../bin/cprint.c:723 ../bin/cprint.c:1247
-#: ../bin/cpull.c:511 ../bin/cpull.c:526 ../bin/cpull.c:528 ../bin/cpull.c:530
-#: ../bin/cpull.c:690 ../bin/cselect.c:1068 ../bin/cselect.c:1164
-#: ../bin/cselect.c:1980 ../bin/csensor.c:194 ../bin/csensor.c:206
-#: ../bin/csensor.c:444 ../bin/csignal.c:267 ../bin/csignal.c:666
-#: ../bin/csignal.c:734 ../bin/csnap.c:576 ../bin/csnap.c:705
-#: ../bin/cstruct.c:935 ../bin/cstruct.c:944 ../bin/cstruct.c:1069
-#: ../bin/cswitchmotor.c:250 ../bin/cswitchmotor.c:262
-#: ../bin/cswitchmotor.c:274 ../bin/cswitchmotor.c:286
-#: ../bin/cswitchmotor.c:544 ../bin/cswitchmotor.c:580
-#: ../bin/cswitchmotor.c:714 ../bin/cswitchmotor.c:745 ../bin/ctext.c:173
-#: ../bin/ctodesgn.c:204 ../bin/ctodesgn.c:1199 ../bin/ctodesgn.c:1336
-#: ../bin/ctodesgn.c:1934 ../bin/ctodesgn.c:2049 ../bin/ctodesgn.c:2348
-#: ../bin/ctodesgn.c:2630 ../bin/ctrain.c:205 ../bin/cturnout.c:2897
-#: ../bin/cturnout.c:3035 ../bin/cundo.c:161 ../bin/cundo.c:166
-#: ../bin/dbitmap.c:68 ../bin/dbitmap.c:125 ../bin/dbitmap.c:203
-#: ../bin/dbitmap.c:238 ../bin/dcar.c:3824 ../bin/dcar.c:4019
-#: ../bin/dcar.c:4023 ../bin/dcar.c:4027 ../bin/dcar.c:4032 ../bin/dcar.c:4336
-#: ../bin/dcar.c:4444 ../bin/dcar.c:4826 ../bin/dcmpnd.c:399
-#: ../bin/dcmpnd.c:410 ../bin/dcmpnd.c:542 ../bin/dcustmgm.c:221
-#: ../bin/dcustmgm.c:227 ../bin/dcustmgm.c:236 ../bin/dcustmgm.c:261
-#: ../bin/dease.c:242 ../bin/dlayer.c:240 ../bin/dlayer.c:262
-#: ../bin/dlayer.c:879 ../bin/dlayer.c:885 ../bin/dlayer.c:891
-#: ../bin/doption.c:199 ../bin/doption.c:275 ../bin/doption.c:476
-#: ../bin/doption.c:479 ../bin/doption.c:492 ../bin/doption.c:558
-#: ../bin/dprmfile.c:434 ../bin/draw.c:2629 ../bin/fileio.c:197
-#: ../bin/fileio.c:607 ../bin/fileio.c:742 ../bin/fileio.c:744
-#: ../bin/fileio.c:749 ../bin/fileio.c:812 ../bin/fileio.c:1045
-#: ../bin/layout.c:373 ../bin/layout.c:561 ../bin/macro.c:1156
-#: ../bin/macro.c:1160 ../bin/macro.c:1218 ../bin/macro.c:1287
-#: ../bin/macro.c:1527 ../bin/macro.c:1545 ../bin/misc.c:434 ../bin/misc.c:481
-#: ../bin/misc.c:1806 ../bin/misc.c:1927 ../bin/misc.c:1935 ../bin/misc.c:2013
-#: ../bin/misc.c:2799 ../bin/misc.c:2808 ../bin/misc.c:2828 ../bin/misc.c:2834
-#: ../bin/misc2.c:456 ../bin/param.c:738 ../bin/param.c:1848
-#: ../bin/param.c:1971 ../bin/param.c:1974 ../bin/param.c:2097
-#: ../bin/param.c:2103 ../bin/paramfile.c:324 ../bin/paramfile.c:326
-#: ../bin/paramfile.c:331 ../bin/paramfile.c:355 ../bin/paramfile.c:381
-#: ../bin/paramfile.c:387 ../bin/paramfilelist.c:94 ../bin/paramfilelist.c:114
-#: ../bin/paramfilelist.c:128 ../bin/paramfilelist.c:192 ../bin/smalldlg.c:90
-#: ../bin/smalldlg.c:222 ../bin/tease.c:1014 ../bin/track.c:1654
-#: ../wlib/gtklib/wpref.c:122 ../../../../build/work/app/bin/bllnhlp.c:586
-msgid "Ok"
-msgstr "Ok"
-
-#: ../bin/cblock.c:212
-#, fuzzy
-msgid "Change block"
-msgstr "Muuta raiteita"
-
-#: ../bin/cblock.c:264 ../bin/cswitchmotor.c:342
-#, fuzzy, c-format
-msgid "(%d): Layer=%u %s"
-msgstr "(%d): Taso=%d %s"
-
-#: ../bin/cblock.c:288 ../bin/cblock.c:1000
-msgid "Block"
-msgstr ""
-
-#: ../bin/cblock.c:491
-#, c-format
-msgid "resolveBlockTrack: T%d[%d]: T%d doesn't exist"
-msgstr ""
-
-#: ../bin/cblock.c:575 ../bin/cblock.c:807
-msgid "Block must have a name!"
-msgstr ""
-
-#: ../bin/cblock.c:604
-msgid "Block is discontigious!"
-msgstr ""
-
-#: ../bin/cblock.c:609
-#, fuzzy
-msgid "Create block"
-msgstr "Luo nelikulmio"
-
-#: ../bin/cblock.c:656
-#, fuzzy
-msgid "Non track object skipped!"
-msgstr "Yhtään raidetta ei irroitettu"
-
-#: ../bin/cblock.c:660
-msgid "Selected track is already in a block, skipped!"
-msgstr ""
-
-#: ../bin/cblock.c:674
-#, fuzzy
-msgid "Create Block"
-msgstr "Luo helix raide"
-
-#: ../bin/cblock.c:704 ../bin/cblock.c:736
-#, fuzzy
-msgid "Select a track"
-msgstr "Valitse raideosat"
-
-#: ../bin/cblock.c:713 ../bin/cblock.c:744
-msgid "Not a block!"
-msgstr ""
-
-#: ../bin/cblock.c:749
-#, c-format
-msgid "Really delete block %s?"
-msgstr ""
-
-#: ../bin/cblock.c:749 ../bin/ccornu.c:2729 ../bin/ccornu.c:2940
-#: ../bin/cdraw.c:134 ../bin/cgroup.c:1081 ../bin/cpull.c:648
-#: ../bin/csignal.c:712 ../bin/cswitchmotor.c:670 ../bin/ctodesgn.c:2638
-#: ../bin/ctodesgn.c:3170 ../bin/ctrain.c:2507 ../bin/dbitmap.c:208
-#: ../bin/dcar.c:3970 ../bin/dcar.c:4049 ../bin/dcar.c:4133 ../bin/dcar.c:4152
-#: ../bin/dcar.c:4469 ../bin/dcar.c:4890 ../bin/dcontmgm.c:173
-#: ../bin/dcustmgm.c:168 ../bin/misc.c:1235 ../bin/misc.c:1242
-#: ../bin/misc.c:1313 ../bin/track.c:1656 ../bin/track.c:1753
-#: ../bin/track.c:1767
-msgid "Yes"
-msgstr "Kyllä"
-
-#: ../bin/cblock.c:749 ../bin/ccornu.c:2729 ../bin/ccornu.c:2940
-#: ../bin/cdraw.c:134 ../bin/cgroup.c:1081 ../bin/cpull.c:648
-#: ../bin/csignal.c:712 ../bin/cswitchmotor.c:670 ../bin/ctodesgn.c:2638
-#: ../bin/ctodesgn.c:3170 ../bin/ctrain.c:2507 ../bin/dcar.c:3970
-#: ../bin/dcar.c:4049 ../bin/dcar.c:4133 ../bin/dcar.c:4152 ../bin/dcar.c:4469
-#: ../bin/dcar.c:4890 ../bin/dcontmgm.c:173 ../bin/dcustmgm.c:168
-#: ../bin/misc.c:1235 ../bin/misc.c:1242 ../bin/misc.c:1313
-#: ../bin/track.c:1656 ../bin/track.c:1753 ../bin/track.c:1767
-msgid "No"
-msgstr "Ei"
-
-#: ../bin/cblock.c:750
-#, fuzzy
-msgid "Delete Block"
-msgstr "Poista raiteita"
-
-#: ../bin/cblock.c:795
-#, fuzzy, c-format
-msgid "Deleting block %s"
-msgstr "Poista raiteita"
-
-#: ../bin/cblock.c:811
-#, fuzzy
-msgid "Modify Block"
-msgstr "Muokkaa raidetta"
-
-#: ../bin/cblock.c:844
-msgid "Edit block"
-msgstr ""
-
-#: ../bin/cblock.c:850
-#, c-format
-msgid "Edit block %d"
-msgstr ""
-
-#: ../bin/ccontrol.c:172 ../bin/csensor.c:164 ../bin/csignal.c:239
-#: ../bin/ctrain.c:183
-msgid "Position"
-msgstr "Sijainti"
-
-#: ../bin/ccontrol.c:173 ../bin/ccontrol.c:431
-msgid "On Script"
-msgstr ""
-
-#: ../bin/ccontrol.c:174 ../bin/ccontrol.c:433
-msgid "Off Script"
-msgstr ""
-
-#: ../bin/ccontrol.c:240
-#, fuzzy
-msgid "Change Control"
-msgstr "Junien hallinta"
-
-#: ../bin/ccontrol.c:282 ../bin/csensor.c:252
-#, fuzzy, c-format
-msgid "(%d [%s]): Layer=%u, at %0.3f,%0.3f"
-msgstr "(%d): Taso=%d %s"
-
-#: ../bin/ccontrol.c:295 ../bin/ccontrol.c:640
-#, fuzzy
-msgid "Control"
-msgstr "Junien hallinta"
-
-#: ../bin/ccontrol.c:427
-#, fuzzy
-msgid "Origin X"
-msgstr "Origo: X"
-
-#: ../bin/ccontrol.c:429 ../bin/csensor.c:393 ../bin/csignal.c:513
-#, fuzzy
-msgid "Origin Y"
-msgstr "Origo: X"
-
-#: ../bin/ccontrol.c:445
-#, fuzzy
-msgid "Create Control"
-msgstr "Junien hallinta"
-
-#: ../bin/ccontrol.c:448
-#, fuzzy
-msgid "Modify Control"
-msgstr "Junien hallinta"
-
-#: ../bin/ccontrol.c:485
-#, fuzzy
-msgid "Edit control"
-msgstr "Junien hallinta"
-
-#: ../bin/ccontrol.c:526
-#, fuzzy
-msgid "Place control"
-msgstr "Aseta ympyrä"
-
-#: ../bin/ccornu.c:200 ../bin/ccornu.c:203 ../bin/ccornu.c:206
-#: ../bin/ccornu.c:260
-#, fuzzy, c-format
-msgid "%s FlexTrack"
-msgstr "Fleksi"
-
-#: ../bin/ccornu.c:254
-msgid " FLEX "
-msgstr ""
-
-#: ../bin/ccornu.c:903 ../bin/cjoin.c:894 ../bin/cmisc.c:59
-msgid "First"
-msgstr "Ensimmäinen"
-
-#: ../bin/ccornu.c:910 ../bin/cjoin.c:899
-msgid "Second"
-msgstr "Toinen"
-
-#: ../bin/ccornu.c:981 ../bin/ccornu.c:2005 ../bin/ccornu.c:2035
-#: ../bin/tcornu.c:830 ../bin/tcornu.c:1037 ../bin/tcornu.c:1363
-#, c-format
-msgid ""
-"Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] c2[%"
-"0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"
-msgstr ""
-
-#: ../bin/ccornu.c:1020 ../bin/ccornu.c:1640 ../bin/ccornu.c:1659
-#: ../bin/tbezier.c:246 ../bin/tbezier.c:253 ../bin/tcornu.c:295
-#: ../bin/tcornu.c:300
-#, fuzzy
-msgid "End Angle"
-msgstr "Syötä kulma ..."
-
-#: ../bin/ccornu.c:1023 ../bin/ccornu.c:1639 ../bin/ccornu.c:1658
-#, fuzzy
-msgid "End Radius"
-msgstr "Säde"
-
-#: ../bin/ccornu.c:1076
-#, fuzzy
-msgid "Select Point, or Add Point"
-msgstr "Valitse päätepiste"
-
-#: ../bin/ccornu.c:1248
-msgid "Not close enough to track or point, reselect"
-msgstr ""
-
-#: ../bin/ccornu.c:1254
-#, fuzzy
-msgid "Drag out end of Cornu"
-msgstr "Vedä jänne päätepisteiden välille"
-
-#: ../bin/ccornu.c:1256
-#, fuzzy
-msgid "Drag along end of track"
-msgstr "Vedä luodaksesi lähtevän raiteen"
-
-#: ../bin/ccornu.c:1258
-#, fuzzy
-msgid "Drag to move"
-msgstr "Raahaa pyörittääksesi"
-
-#: ../bin/ccornu.c:1261
-msgid "Drag point to new location, Delete to remove"
-msgstr ""
-
-#: ../bin/ccornu.c:1265
-#, fuzzy
-msgid "Drag to change end radius"
-msgstr "Aseta säde raahaamalla"
-
-#: ../bin/ccornu.c:1268
-#, fuzzy
-msgid "Drag to change end angle"
-msgstr "Muuta korkeutta raahaamalla"
-
-#: ../bin/ccornu.c:1283
-msgid "Pick any circle to adjust or add - Enter to accept, Esc to cancel"
-msgstr ""
-
-#: ../bin/ccornu.c:1295
-msgid "Track can't be split"
-msgstr ""
-
-#: ../bin/ccornu.c:1357
-#, fuzzy
-msgid "Too close to other end of selected Track"
-msgstr "Nosta tai laske kaikkia valittuja raiteita"
-
-#: ../bin/ccornu.c:1365
-#, fuzzy
-msgid "Can't move end inside a turnout"
-msgstr "Luo käsin aseteltu vaihde"
-
-#: ../bin/ccornu.c:1507
-msgid "Can't extend connected Bezier or Cornu"
-msgstr ""
-
-#: ../bin/ccornu.c:1579
-#, c-format
-msgid ""
-"Cornu : Min Radius=%s MaxRateofCurveChange/Scale=%s Length=%s Winding Arc=%s"
-msgstr ""
-
-#: ../bin/ccornu.c:1601 ../bin/ccornu.c:2271
-msgid "Helix Already Connected"
-msgstr ""
-
-#: ../bin/ccornu.c:1615
-#, fuzzy
-msgid "No Valid end point on that track"
-msgstr "Aseta suoran raiteen 1. päätepiste"
-
-#: ../bin/ccornu.c:1620
-msgid "Track is different scale"
-msgstr ""
-
-#: ../bin/ccornu.c:1673
-msgid ""
-"Pick on point to adjust it along track - Delete to remove, Enter to confirm, "
-"ESC to abort"
-msgstr ""
-
-#: ../bin/ccornu.c:1703
-msgid "Cornu has too complex shape - adjust end pts"
-msgstr ""
-
-#: ../bin/ccornu.c:1714
-#, fuzzy, c-format
-msgid "Cornu point %d too close to other end of connect track - reposition it"
-msgstr "Nosta tai laske kaikkia valittuja raiteita"
-
-#: ../bin/ccornu.c:1719
-#, fuzzy
-msgid "Create Cornu"
-msgstr "Luo viivoja"
-
-#: ../bin/ccornu.c:1908
-msgid "Now Select or Add (+Shift) a Point"
-msgstr ""
-
-#: ../bin/ccornu.c:1967
-#, fuzzy, c-format
-msgid "Cornu end %d too close to other end of connect track - reposition it"
-msgstr "Nosta tai laske kaikkia valittuja raiteita"
-
-#: ../bin/ccornu.c:1972
-#, fuzzy
-msgid "Modify Cornu"
-msgstr "Muokkaa raidetta"
-
-#: ../bin/ccornu.c:1987
-#, c-format
-msgid "Cornu Extension Create Failed for end %d"
-msgstr ""
-
-#: ../bin/ccornu.c:2079
-#, c-format
-msgid "Connected Track End Adjust for end %d failed"
-msgstr ""
-
-#: ../bin/ccornu.c:2090
-msgid "Modify Cornu Cancelled"
-msgstr ""
-
-#: ../bin/ccornu.c:2247
-msgid "Left click - Start Cornu track"
-msgstr ""
-
-#: ../bin/ccornu.c:2249
-msgid "Left click - Place Flextrack"
-msgstr ""
-
-#: ../bin/ccornu.c:2252
-msgid "Left click - join with Cornu track"
-msgstr ""
-
-#: ../bin/ccornu.c:2254
-#, fuzzy
-msgid "Left click - join with Cornu track, Shift Left click - move to join"
-msgstr ""
-"Hiiren vasen: yhdistä raiteet, Vaihto + hiiren vasen: siirrä yhdistääksesi"
-
-#: ../bin/ccornu.c:2285
-#, fuzzy
-msgid "No valid open endpoint on that track"
-msgstr "Siirretty päätepisteen taakse"
-
-#: ../bin/ccornu.c:2313 ../bin/ccornu.c:2325
-#, fuzzy
-msgid "Drag arm in the direction of track"
-msgstr "Vedä päätepisteestä kaarteen suuntaan"
-
-#: ../bin/ccornu.c:2329
-msgid "No Unconnected Track End there"
-msgstr ""
-
-#: ../bin/ccornu.c:2340 ../bin/ccornu.c:2364
-msgid "No Valid Track End there"
-msgstr ""
-
-#: ../bin/ccornu.c:2352
-#, fuzzy
-msgid "Locked - Move 1st end point of Cornu track along track 1"
-msgstr "Aseta suoran raiteen 1. päätepiste"
-
-#: ../bin/ccornu.c:2376
-#, fuzzy
-msgid "Locked - Move 2nd end point of Cornu track along track 2"
-msgstr "Aseta suoran raiteen 1. päätepiste"
-
-#: ../bin/ccornu.c:2450
-msgid "Track can't be split - so locked to endpoint"
-msgstr ""
-
-#: ../bin/ccornu.c:2455
-#, fuzzy
-msgid "Point not on track 1"
-msgstr "Yhdistä kaksi raidetta"
-
-#: ../bin/ccornu.c:2493
-#, fuzzy
-msgid "Pick other end of Cornu"
-msgstr "Vedä jänne päätepisteiden välille"
-
-#: ../bin/ccornu.c:2495
-msgid ""
-"Select flextrack ends or anchors and drag, Enter to approve, Esc to Cancel"
-msgstr ""
-
-#: ../bin/ccornu.c:2499
-#, fuzzy
-msgid "Put other end of Cornu on a track with an unconnected end point"
-msgstr "Aseta suoran raiteen 1. päätepiste"
-
-#: ../bin/ccornu.c:2717 ../bin/ccornu.c:2930
-#, fuzzy
-msgid "Not on a Track"
-msgstr "Ei raiteilla"
-
-#: ../bin/ccornu.c:2725
-#, fuzzy
-msgid "Select a Track To Convert"
-msgstr "Valitse raideosat"
-
-#: ../bin/ccornu.c:2729
-msgid "Convert all Selected Tracks to Cornu Tracks?"
-msgstr ""
-
-#: ../bin/ccornu.c:2734
-#, fuzzy
-msgid "Convert Cornu"
-msgstr "Luo viivoja"
-
-#: ../bin/ccornu.c:2886
-#, c-format
-msgid "Tracks Counts: %d converted %d unconvertible %d created %d deleted"
-msgstr ""
-
-#: ../bin/ccornu.c:2886 ../bin/ccornu.c:3000
-msgid "OK"
-msgstr ""
-
-#: ../bin/ccornu.c:2936
-msgid "Select a Cornu or Bezier Track To Convert to Fixed"
-msgstr ""
-
-#: ../bin/ccornu.c:2940
-msgid "Convert all Selected Tracks to Fixed Tracks?"
-msgstr ""
-
-#: ../bin/ccornu.c:2949
-msgid "Convert Bezier and Cornu"
-msgstr ""
-
-#: ../bin/ccornu.c:3000
-#, c-format
-msgid "Tracks Counts: %d converted %d unconvertible %d deleted"
-msgstr ""
-
-#: ../bin/ccornu.c:3028
-#, fuzzy
-msgid "Convert"
-msgstr "Sisältö"
-
-#: ../bin/ccornu.c:3029
-#, fuzzy
-msgid "Convert To Cornu"
-msgstr "Luo viivoja"
-
-#: ../bin/ccornu.c:3030
-#, fuzzy
-msgid "Convert From Cornu"
-msgstr "Kaari päätepisteiden välille"
-
-#: ../bin/ccurve.c:169
-#, fuzzy
-msgid "Drag from endpoint in direction of curve - lock to track open endpoint"
-msgstr "Vedä päätepisteestä kaarteen suuntaan"
-
-#: ../bin/ccurve.c:171
-#, fuzzy
-msgid "Drag from endpoint in direction of curve"
-msgstr "Vedä päätepisteestä kaarteen suuntaan"
-
-#: ../bin/ccurve.c:175
-#, fuzzy
-msgid "Drag from endpoint to center - lock to track open endpoint"
-msgstr "Vedä päätepisteestä keskipisteeseen"
-
-#: ../bin/ccurve.c:177
-#, fuzzy
-msgid "Drag from endpoint to center"
-msgstr "Vedä päätepisteestä keskipisteeseen"
-
-#: ../bin/ccurve.c:180
-#, fuzzy
-msgid "Drag from center to endpoint"
-msgstr "Vedä keskipisteestä päätepisteeseen"
-
-#: ../bin/ccurve.c:183
-#, fuzzy
-msgid "Drag from one to other end of chord"
-msgstr "Vedä jänne päätepisteiden välille"
-
-#: ../bin/ccurve.c:241
-#, fuzzy
-msgid "End locked: Drag out curve start"
-msgstr "Vedä luodaksesi lähtevän raiteen"
-
-#: ../bin/ccurve.c:242
-#, fuzzy
-msgid "Drag along curve start"
-msgstr "Vedä luodaksesi lähtevän raiteen"
-
-#: ../bin/ccurve.c:250
-msgid "End locked: Drag out curve center"
-msgstr ""
-
-#: ../bin/ccurve.c:251
-#, fuzzy
-msgid "Drag out curve center"
-msgstr "Vedä luodaksesi lähtevän raiteen"
-
-#: ../bin/ccurve.c:258
-#, fuzzy
-msgid "Drag out from center to endpoint"
-msgstr "Vedä keskipisteestä päätepisteeseen"
-
-#: ../bin/ccurve.c:267
-#, fuzzy
-msgid "End locked: Drag to other end of chord"
-msgstr "Vedä jänne päätepisteiden välille"
-
-#: ../bin/ccurve.c:269
-msgid "Drag to other end of chord"
-msgstr "Vedä jänne päätepisteiden välille"
-
-#: ../bin/ccurve.c:324
-#, c-format
-msgid "Start Locked: Drag out curve start - Angle=%0.3f"
-msgstr ""
-
-#: ../bin/ccurve.c:325
-#, c-format
-msgid "Drag out curve start - Angle=%0.3f"
-msgstr ""
-
-#: ../bin/ccurve.c:331
-#, fuzzy, c-format
-msgid "Tangent locked: Drag out center - Radius=%s Angle=%0.3f"
-msgstr "Tangentti raide: Pituus %s Kulma %0.3f"
-
-#: ../bin/ccurve.c:332
-#, fuzzy, c-format
-msgid "Drag out center - Radius=%s Angle=%0.3f"
-msgstr "Säde=%s Kulma=%0.3f"
-
-#: ../bin/ccurve.c:338
-#, fuzzy, c-format
-msgid "Drag to Edge: Radius=%s Angle=%0.3f"
-msgstr "Säde=%s Kulma=%0.3f"
-
-#: ../bin/ccurve.c:344
-#, fuzzy, c-format
-msgid "Start locked: Drag out chord length=%s angle=%0.3f"
-msgstr "Tangentti raide: Pituus %s Kulma %0.3f"
-
-#: ../bin/ccurve.c:345
-#, fuzzy, c-format
-msgid "Drag out chord length=%s angle=%0.3f"
-msgstr "Suora raideosa Pituus=%s Kulma=%0.3f"
-
-#: ../bin/ccurve.c:399 ../bin/ccurve.c:557 ../bin/drawgeom.c:735
-msgid "Drag on Red arrows to adjust curve"
-msgstr "Asettele kaari vetämällä punaisista nuolista"
-
-#: ../bin/ccurve.c:497 ../bin/cjoin.c:210 ../bin/cmodify.c:580
-#: ../bin/cturntbl.c:580
-#, c-format
-msgid "Straight Track: Length=%s Angle=%0.3f"
-msgstr "Suora raideosa: Pituus=%s Kulma=%0.3f"
-
-#: ../bin/ccurve.c:504 ../bin/cmodify.c:585 ../bin/drawgeom.c:618
-#: ../wlib/gtklib/ixhelp.c:235
-msgid "Back"
-msgstr "Takaisin"
-
-#: ../bin/ccurve.c:523
-#, c-format
-msgid "Curved Track: Radius=%s Angle=%0.3f Length=%s"
-msgstr "Kaareva raideosa: Säde=%s Kulma=%0.3f Pituus=%s"
-
-#: ../bin/ccurve.c:577 ../bin/cstraigh.c:162
-msgid "Create Straight Track"
-msgstr "Luo suora raideosa"
-
-#: ../bin/ccurve.c:589
-msgid "Create Curved Track"
-msgstr "Luo kaareva raideosa"
-
-#: ../bin/ccurve.c:660
-msgid "Elevation Difference"
-msgstr "Korkeusero"
-
-#: ../bin/ccurve.c:661 ../bin/cdraw.c:514 ../bin/cdraw.c:1437
-#: ../bin/cdraw.c:1583 ../bin/cdraw.c:2231 ../bin/cdraw.c:2430
-#: ../bin/cdraw.c:2444 ../bin/compound.c:545 ../bin/compound.c:550
-#: ../bin/compound.c:555 ../bin/compound.c:560 ../bin/ctodesgn.c:180
-#: ../bin/ctodesgn.c:181 ../bin/ctodesgn.c:182 ../bin/ctodesgn.c:183
-#: ../bin/ctodesgn.c:299 ../bin/ctodesgn.c:302 ../bin/ctodesgn.c:304
-#: ../bin/ctodesgn.c:365 ../bin/ctodesgn.c:366 ../bin/ctodesgn.c:371
-#: ../bin/ctodesgn.c:435 ../bin/ctodesgn.c:439 ../bin/ctodesgn.c:440
-#: ../bin/ctodesgn.c:446 ../bin/ctodesgn.c:615 ../bin/tbezier.c:247
-#: ../bin/tbezier.c:254 ../bin/tcornu.c:301 ../bin/tcurve.c:369
-msgid "Radius"
-msgstr "Säde"
-
-#: ../bin/ccurve.c:662 ../bin/tcurve.c:370
-msgid "Turns"
-msgstr "Kierroksia"
-
-#: ../bin/ccurve.c:663
-msgid "Angular Separation"
-msgstr "Sisäänkäyntien välinen kulma"
-
-#: ../bin/ccurve.c:664 ../bin/celev.c:47 ../bin/compound.c:562
-#: ../bin/tbezier.c:259 ../bin/tcornu.c:308 ../bin/tcurve.c:376
-#: ../bin/tease.c:529 ../bin/tstraigh.c:91
-msgid "Grade"
-msgstr "Nousukulma"
-
-#: ../bin/ccurve.c:665
-msgid "Vertical Separation"
-msgstr "Kerrosten välinen etäisyys"
-
-#: ../bin/ccurve.c:667
-msgid "Total Length"
-msgstr "Kokonaispituus"
-
-#: ../bin/ccurve.c:743
-#, c-format
-msgid "Total Length %s"
-msgstr "Kokonaispituus %s"
-
-#: ../bin/ccurve.c:781 ../bin/ccurve.c:985 ../bin/tcurve.c:809
-msgid "Helix"
-msgstr "Helix"
-
-#: ../bin/ccurve.c:795
-msgid "Circle Radius"
-msgstr "Ympyrän säde"
-
-#: ../bin/ccurve.c:800
-msgid "Click on Circle Edge"
-msgstr "Aseta ympyrän kehän piste"
-
-#: ../bin/ccurve.c:804
-msgid "Click on Circle Center"
-msgstr "Aseta ympyrän keskipiste"
-
-#: ../bin/ccurve.c:835
-msgid "Drag to Center"
-msgstr "Raahaa keskustaan"
-
-#: ../bin/ccurve.c:839
-msgid "Drag to Edge"
-msgstr "Raahaa kehälle"
-
-#: ../bin/ccurve.c:859 ../bin/ccurve.c:863
-#, c-format
-msgid "Radius=%s"
-msgstr "Säde=%s"
-
-#: ../bin/ccurve.c:884
-msgid "Create Helix Track"
-msgstr "Luo helix raide"
-
-#: ../bin/ccurve.c:899
-msgid "Create Circle Track"
-msgstr "Luo ympyrärata"
-
-#: ../bin/ccurve.c:954
-#, fuzzy
-msgid "Cornu Curve"
-msgstr "Kaareva raide"
-
-#: ../bin/ccurve.c:956
-msgid "Curve Track"
-msgstr "Kaareva raide"
-
-#: ../bin/ccurve.c:956
-msgid "Curve Tracks"
-msgstr "Kaarevat raideosat"
-
-#: ../bin/ccurve.c:957
-msgid "Curve from End-Pt"
-msgstr "Kaari päätepisteestä"
-
-#: ../bin/ccurve.c:958
-msgid "Curve from Tangent"
-msgstr "Kaari kehältä"
-
-#: ../bin/ccurve.c:959
-msgid "Curve from Center"
-msgstr "Kaari keskipisteestä"
-
-#: ../bin/ccurve.c:960
-msgid "Curve from Chord"
-msgstr "Kaari päätepisteiden välille"
-
-#: ../bin/ccurve.c:961 ../bin/cdraw.c:2572
-#, fuzzy
-msgid "Bezier Curve"
-msgstr "Yhdistä kaarteet"
-
-#: ../bin/ccurve.c:964 ../bin/tcurve.c:643
-msgid "Circle Track"
-msgstr "Ympyrärata"
-
-#: ../bin/ccurve.c:964
-msgid "Circle Tracks"
-msgstr "Ympyräradat"
-
-#: ../bin/ccurve.c:965
-msgid "Fixed Radius Circle"
-msgstr "Määriteltysäteinen ympyrä"
-
-#: ../bin/ccurve.c:966
-msgid "Circle from Tangent"
-msgstr "Ympyrä kehältä"
-
-#: ../bin/ccurve.c:967
-msgid "Circle from Center"
-msgstr "Ympyrä keskustasta"
-
-#: ../bin/cdraw.c:130
-msgid "Font Size must be > 0"
-msgstr "Kirjasinkoon on oltava > 0"
-
-#: ../bin/cdraw.c:509
-msgid "First Point: X,Y"
-msgstr ""
-
-#: ../bin/cdraw.c:510 ../bin/tcurve.c:368
-#, fuzzy
-msgid "Center: X,Y"
-msgstr "Keskipiste: X"
-
-#: ../bin/cdraw.c:511 ../bin/cdraw.c:532 ../bin/cdraw.c:1427
-#: ../bin/cdraw.c:1572 ../bin/cdraw.c:2229 ../bin/cdraw.c:2451
-#: ../bin/cdraw.c:2471 ../bin/cdraw.c:2475 ../bin/compound.c:543
-#: ../bin/compound.c:548 ../bin/compound.c:553 ../bin/compound.c:558
-#: ../bin/compound.c:564 ../bin/cprint.c:155 ../bin/csignal.c:240
-#: ../bin/csignal.c:515 ../bin/ctodesgn.c:188 ../bin/ctodesgn.c:189
-#: ../bin/ctodesgn.c:190 ../bin/ctodesgn.c:192 ../bin/ctodesgn.c:237
-#: ../bin/ctodesgn.c:260 ../bin/ctodesgn.c:262 ../bin/ctodesgn.c:297
-#: ../bin/ctodesgn.c:300 ../bin/ctodesgn.c:326 ../bin/ctodesgn.c:329
-#: ../bin/ctodesgn.c:363 ../bin/ctodesgn.c:368 ../bin/ctodesgn.c:392
-#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:433 ../bin/ctodesgn.c:437
-#: ../bin/ctodesgn.c:442 ../bin/ctodesgn.c:468 ../bin/ctodesgn.c:488
-#: ../bin/ctodesgn.c:509 ../bin/ctodesgn.c:616 ../bin/ctrain.c:184
-#: ../bin/tease.c:524 ../bin/tstraigh.c:90
-msgid "Angle"
-msgstr "Kulma"
-
-#: ../bin/cdraw.c:512 ../bin/tcurve.c:374
-msgid "CCW Angle"
-msgstr "Vasemman pään kulma"
-
-#: ../bin/cdraw.c:513 ../bin/tcurve.c:375
-msgid "CW Angle"
-msgstr "Oikean pään kulma"
-
-#: ../bin/cdraw.c:516 ../bin/cdraw.c:1434 ../bin/cdraw.c:1556
-#: ../bin/cprint.c:130
-msgid "Height"
-msgstr "Korkeus"
-
-#: ../bin/cdraw.c:517 ../bin/cdraw.c:1432 ../bin/cdraw.c:1555
-#: ../bin/cdraw.c:2226 ../bin/cdraw.c:2488 ../bin/ctrain.c:186
-#: ../bin/dcar.c:2234
-msgid "Width"
-msgstr "Leveys"
-
-#: ../bin/cdraw.c:518
-msgid "Keep Origin Relative"
-msgstr ""
-
-#: ../bin/cdraw.c:519
-#, fuzzy
-msgid "Rot Origin: X,Y"
-msgstr "Origo: X"
-
-#: ../bin/cdraw.c:520 ../bin/cdraw.c:1441
-#, fuzzy
-msgid "Rotate Angle"
-msgstr "Oikean raiteen kulma"
-
-#: ../bin/cdraw.c:521
-msgid "Point Count"
-msgstr "Pisteitä"
-
-#: ../bin/cdraw.c:522 ../bin/cdraw.c:2204 ../bin/ctodesgn.c:202
-#: ../bin/tbezier.c:261
-msgid "Line Width"
-msgstr "Viivan paksuus"
-
-#: ../bin/cdraw.c:523 ../bin/cdraw.c:2233 ../bin/tbezier.c:260
-#, fuzzy
-msgid "Line Type"
-msgstr "Puutavaran tyyppi"
-
-#: ../bin/cdraw.c:524 ../bin/cdraw.c:2206 ../bin/cdraw.c:2208
-#: ../bin/cdraw.c:2306 ../bin/cdraw.c:2339 ../bin/cmisc.c:125
-#: ../bin/ctext.c:68 ../bin/ctext.c:147 ../bin/ctodesgn.c:203
-#: ../bin/dcar.c:2230 ../bin/dlayer.c:485 ../bin/doption.c:558
-msgid "Color"
-msgstr "Väri"
-
-#: ../bin/cdraw.c:525
-#, fuzzy
-msgid "Filled"
-msgstr "Täytetty nelikulmio"
-
-#: ../bin/cdraw.c:526
-#, fuzzy
-msgid "Open End"
-msgstr "Pysty"
-
-#: ../bin/cdraw.c:527 ../bin/cmisc.c:148 ../bin/cmisc.c:149 ../bin/cmisc.c:150
-#: ../bin/cmisc.c:151 ../bin/ctext.c:70 ../bin/ctext.c:148
-#, fuzzy
-msgid "Boxed"
-msgstr "Nelikulmio"
-
-#: ../bin/cdraw.c:528 ../bin/cdraw.c:1108 ../bin/cdraw.c:2240
-msgid "Lumber"
-msgstr "Puutavara"
-
-#: ../bin/cdraw.c:529
-msgid "Orientation"
-msgstr "Suunta"
-
-#: ../bin/cdraw.c:530 ../bin/cdraw.c:2222
-#: ../../../../build/work/app/bin/bllnhlp.c:588
-msgid "Size"
-msgstr "Koko"
-
-#: ../bin/cdraw.c:531 ../bin/compound.c:563 ../bin/tease.c:523
-#, fuzzy
-msgid "Origin: X,Y"
-msgstr "Origo: X"
-
-#: ../bin/cdraw.c:533 ../bin/ctext.c:66 ../bin/ctext.c:146
-msgid "Font Size"
-msgstr "Kirjasinkoko"
-
-#: ../bin/cdraw.c:534 ../bin/cdraw.c:1254 ../bin/ctext.c:262
-msgid "Text"
-msgstr "Teksti"
-
-#: ../bin/cdraw.c:535 ../bin/cmisc.c:144 ../bin/compound.c:565
-#: ../bin/tcurve.c:377 ../bin/tease.c:530 ../bin/tstraigh.c:92
-msgid "Pivot"
-msgstr "Kiertopiste"
-
-#: ../bin/cdraw.c:536 ../bin/compound.c:571 ../bin/cturntbl.c:253
-#: ../bin/doption.c:139 ../bin/doption.c:140 ../bin/tbezier.c:263
-#: ../bin/tcornu.c:309 ../bin/tcurve.c:378 ../bin/tease.c:531
-#: ../bin/tstraigh.c:93 ../../../../build/work/app/bin/bllnhlp.c:666
-#: ../../../../build/work/app/bin/bllnhlp.c:667
-#: ../../../../build/work/app/bin/bllnhlp.c:668
-#: ../../../../build/work/app/bin/bllnhlp.c:669
-#: ../../../../build/work/app/bin/bllnhlp.c:670
-#: ../../../../build/work/app/bin/bllnhlp.c:671
-#: ../../../../build/work/app/bin/bllnhlp.c:672
-#: ../../../../build/work/app/bin/bllnhlp.c:673
-#: ../../../../build/work/app/bin/bllnhlp.c:674
-#: ../../../../build/work/app/bin/bllnhlp.c:675
-#: ../../../../build/work/app/bin/bllnhlp.c:676
-#: ../../../../build/work/app/bin/bllnhlp.c:677
-#: ../../../../build/work/app/bin/bllnhlp.c:678
-#: ../../../../build/work/app/bin/bllnhlp.c:679
-#: ../../../../build/work/app/bin/bllnhlp.c:680
-#: ../../../../build/work/app/bin/bllnhlp.c:681
-#: ../../../../build/work/app/bin/bllnhlp.c:682
-#: ../../../../build/work/app/bin/bllnhlp.c:683
-#: ../../../../build/work/app/bin/bllnhlp.c:684
-#: ../../../../build/work/app/bin/bllnhlp.c:685
-msgid "Layer"
-msgstr "Taso"
-
-#: ../bin/cdraw.c:1093
-msgid "Straight Line"
-msgstr "Suora viiva"
-
-#: ../bin/cdraw.c:1098 ../bin/cdraw.c:2564
-msgid "Dimension Line"
-msgstr "Mittajana"
-
-#: ../bin/cdraw.c:1119 ../bin/cdraw.c:2241 ../bin/cdraw.c:2566
-msgid "Table Edge"
-msgstr "Pöydän reuna"
-
-#: ../bin/cdraw.c:1139 ../bin/cdraw.c:2246 ../bin/cdraw.c:2247
-#: ../bin/cdraw.c:2248
-msgid "Circle"
-msgstr "Ympyrä"
-
-#: ../bin/cdraw.c:1150
-msgid "Curved Line"
-msgstr "Kaari"
-
-#: ../bin/cdraw.c:1166 ../bin/cdraw.c:2251 ../bin/cdraw.c:2252
-#: ../bin/cdraw.c:2253
-msgid "Filled Circle"
-msgstr "Täytetty ympyrä"
-
-#: ../bin/cdraw.c:1185
-#, fuzzy
-msgid "Rectangle"
-msgstr "Mittakaavan muutos"
-
-#: ../bin/cdraw.c:1199 ../bin/cdraw.c:2257
-msgid "Polyline"
-msgstr "Monikulmio"
-
-#: ../bin/cdraw.c:1203 ../bin/cdraw.c:2250 ../bin/cdraw.c:2583
-msgid "Polygon"
-msgstr "Monikulmio"
-
-#: ../bin/cdraw.c:1221
-#, fuzzy
-msgid "Filled Rectangle"
-msgstr "Täytetty ympyrä"
-
-#: ../bin/cdraw.c:1234 ../bin/cdraw.c:2255 ../bin/cdraw.c:2584
-#, fuzzy
-msgid "Filled Polygon"
-msgstr "Täytetty nelikulmio"
-
-#: ../bin/cdraw.c:1260
-#, fuzzy, c-format
-msgid "%s(%d) Layer=%d"
-msgstr "%s: Taso=%d"
-
-#: ../bin/cdraw.c:1280 ../bin/cdraw.c:2309 ../bin/compound.c:956
-#: ../bin/doption.c:134 ../bin/tbezier.c:458
-msgid "Solid"
-msgstr "Yhtenäinen"
-
-#: ../bin/cdraw.c:1281 ../bin/cdraw.c:2311 ../bin/compound.c:957
-#: ../bin/doption.c:131 ../bin/tbezier.c:459
-msgid "Dash"
-msgstr "Katkoviiva"
-
-#: ../bin/cdraw.c:1282 ../bin/cdraw.c:2310 ../bin/compound.c:958
-#: ../bin/tbezier.c:460
-msgid "Dot"
-msgstr ""
-
-#: ../bin/cdraw.c:1283 ../bin/compound.c:959 ../bin/tbezier.c:461
-#, fuzzy
-msgid "DashDot"
-msgstr "Katkoviiva"
-
-#: ../bin/cdraw.c:1284 ../bin/compound.c:960 ../bin/tbezier.c:462
-msgid "DashDotDot"
-msgstr ""
-
-#: ../bin/cdraw.c:1285 ../bin/compound.c:961 ../bin/tbezier.c:463
-#, fuzzy
-msgid "CenterDot"
-msgstr "Keskipiste: X"
-
-#: ../bin/cdraw.c:1286 ../bin/compound.c:962 ../bin/tbezier.c:464
-msgid "PhantomDot"
-msgstr ""
-
-#: ../bin/cdraw.c:1291 ../bin/cdraw.c:2357
-msgid "Tiny"
-msgstr "Pikkuruinen"
-
-#: ../bin/cdraw.c:1292 ../bin/cdraw.c:2358
-msgid "Small"
-msgstr "Pieni"
-
-#: ../bin/cdraw.c:1293 ../bin/cdraw.c:2359
-msgid "Medium"
-msgstr "Keskikokoinen"
-
-#: ../bin/cdraw.c:1294 ../bin/cdraw.c:2360
-msgid "Large"
-msgstr "Suuri"
-
-#: ../bin/cdraw.c:1430
-#, fuzzy
-msgid "Relative Angle"
-msgstr "Vasemman raiteen kulma"
-
-#: ../bin/cdraw.c:1439 ../bin/cdraw.c:1587 ../bin/cdraw.c:2445
-#, fuzzy
-msgid "Arc Angle"
-msgstr "Kulma"
-
-#: ../bin/cdraw.c:1444
-#, fuzzy
-msgid "Rot Center X"
-msgstr "Keskipiste: X"
-
-#: ../bin/cdraw.c:1446
-#, fuzzy
-msgid "Rot Center Y"
-msgstr "Keskipiste: X"
-
-#: ../bin/cdraw.c:1543
-#, fuzzy
-msgid "Seg Lth"
-msgstr "Pituus"
-
-#: ../bin/cdraw.c:1544
-msgid "Rel Ang"
-msgstr ""
-
-#: ../bin/cdraw.c:2211 ../bin/cdraw.c:2213 ../bin/cdraw.c:2337
-msgid "Lumber Type"
-msgstr "Puutavaran tyyppi"
-
-#: ../bin/cdraw.c:2238
-msgid "Straight"
-msgstr "Suora"
-
-#: ../bin/cdraw.c:2239
-msgid "Dimension"
-msgstr "Etäisyys"
-
-#: ../bin/cdraw.c:2242 ../bin/cdraw.c:2243 ../bin/cdraw.c:2244
-#: ../bin/cdraw.c:2245
-msgid "Curved"
-msgstr "Kaareva"
-
-#: ../bin/cdraw.c:2249 ../bin/cdraw.c:2581
-msgid "Box"
-msgstr "Nelikulmio"
-
-#: ../bin/cdraw.c:2254 ../bin/cdraw.c:2582
-msgid "Filled Box"
-msgstr "Täytetty nelikulmio"
-
-#: ../bin/cdraw.c:2256 ../bin/tbezier.c:455
-#, fuzzy
-msgid "Bezier Line"
-msgstr "Ympyrät"
-
-#: ../bin/cdraw.c:2304
-#, c-format
-msgid "%s Line Width"
-msgstr "%s viivan paksuus"
-
-#: ../bin/cdraw.c:2307 ../bin/dcar.c:2203 ../bin/dcar.c:4367
-#: ../bin/dcar.c:4372
-msgid "Type"
-msgstr "Tyyppi"
-
-#: ../bin/cdraw.c:2312
-#, fuzzy
-msgid "Dash-Dot"
-msgstr "Katkoviiva"
-
-#: ../bin/cdraw.c:2313
-msgid "Dash-Dot-Dot"
-msgstr ""
-
-#: ../bin/cdraw.c:2326
-#, c-format
-msgid "%s Color"
-msgstr "%s väri"
-
-#: ../bin/cdraw.c:2355
-msgid "Dimension Line Size"
-msgstr "Mittajanan koko"
-
-#: ../bin/cdraw.c:2367
-msgid "Drag to create Table Edge"
-msgstr "Piirrä pöydän reuna"
-
-#: ../bin/cdraw.c:2469
-#, fuzzy
-msgid "Seg Length"
-msgstr "Vasemman raiteen pituus"
-
-#: ../bin/cdraw.c:2473
-#, fuzzy
-msgid "Rel Angle"
-msgstr "Vasemman raiteen kulma"
-
-#: ../bin/cdraw.c:2563
-msgid "Line"
-msgstr "Viiva"
-
-#: ../bin/cdraw.c:2563
-msgid "Draw Line"
-msgstr "Piirrä viiva"
-
-#: ../bin/cdraw.c:2564
-msgid "Draw Dimension Line"
-msgstr "Piirrä mittajana"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:363
-#: ../bin/cdraw.c:2565 ../../../../build/work/app/i18n/custmsg.h:1249
-msgid "Benchwork"
-msgstr "Runkorakenne"
-
-#: ../bin/cdraw.c:2565
-msgid "Draw Benchwork"
-msgstr "Piirrä runkorakenne"
-
-#: ../bin/cdraw.c:2566
-msgid "Draw Table Edge"
-msgstr "Piirrä pöydän reuna"
-
-#: ../bin/cdraw.c:2568
-msgid "Curve End"
-msgstr "Kaari päätepisteestä"
-
-#: ../bin/cdraw.c:2568
-msgid "Draw Curve from End"
-msgstr "Piirrä kaari päätepisteestä"
-
-#: ../bin/cdraw.c:2569
-msgid "Curve Tangent"
-msgstr "Kaari kehältä"
-
-#: ../bin/cdraw.c:2569
-msgid "Draw Curve from Tangent"
-msgstr "Piirrä kaari kehältä"
-
-#: ../bin/cdraw.c:2570
-msgid "Curve Center"
-msgstr "Kaari keskipisteestä"
-
-#: ../bin/cdraw.c:2570
-msgid "Draw Curve from Center"
-msgstr "Piirrä kaari keskipisteestä"
-
-#: ../bin/cdraw.c:2571
-msgid "Curve Chord"
-msgstr "Kaari jänteestä"
-
-#: ../bin/cdraw.c:2571
-msgid "Draw Curve from Chord"
-msgstr "Piirrä kaari·päätepisteiden·välille"
-
-#: ../bin/cdraw.c:2572
-#, fuzzy
-msgid "Draw Bezier"
-msgstr "Piirrä viiva"
-
-#: ../bin/cdraw.c:2575
-msgid "Circle Tangent"
-msgstr "Ympyrä kehältä"
-
-#: ../bin/cdraw.c:2575
-msgid "Draw Circle from Tangent"
-msgstr "Piirrä ympyrä kehältä"
-
-#: ../bin/cdraw.c:2576
-msgid "Circle Center"
-msgstr "Ympyrä keskustasta"
-
-#: ../bin/cdraw.c:2576
-msgid "Draw Circle from Center"
-msgstr "Piirrä ympyrä keskipisteestä"
-
-#: ../bin/cdraw.c:2578
-msgid "Circle Filled Tangent"
-msgstr "Täytetty ympyrä kehältä"
-
-#: ../bin/cdraw.c:2578
-msgid "Draw Filled Circle from Tangent"
-msgstr "Piirrä täytetty ympyrä kehältä"
-
-#: ../bin/cdraw.c:2579
-msgid "Circle Filled Center"
-msgstr "Täytetty ympyrä keskustasta"
-
-#: ../bin/cdraw.c:2579
-msgid "Draw Filled Circle from Center"
-msgstr "Piirrä täytetty ympyrä keskipisteestä"
-
-#: ../bin/cdraw.c:2581
-msgid "Draw Box"
-msgstr "Piirrä nelikulmio"
-
-#: ../bin/cdraw.c:2582
-msgid "Draw Filled Box"
-msgstr "Piirrä täytetty nelikulmio"
-
-#: ../bin/cdraw.c:2583
-msgid "Draw Polygon"
-msgstr "Piirrä täytetty monikulmio"
-
-#: ../bin/cdraw.c:2584
-#, fuzzy
-msgid "Draw Filled Polygon"
-msgstr "Piirrä täytetty monikulmio"
-
-#: ../bin/cdraw.c:2585
-#, fuzzy
-msgid "PolyLine"
-msgstr "Monikulmio"
-
-#: ../bin/cdraw.c:2585
-#, fuzzy
-msgid "Draw PolyLine"
-msgstr "Piirrä monikulmio"
-
-#: ../bin/cdraw.c:2602
-msgid "Straight Objects"
-msgstr "Suorat objektit"
-
-#: ../bin/cdraw.c:2602
-msgid "Draw Straight Objects"
-msgstr "Suorien objektien piirto"
-
-#: ../bin/cdraw.c:2603
-msgid "Curved Lines"
-msgstr "Kaaret"
-
-#: ../bin/cdraw.c:2603
-msgid "Draw Curved Lines"
-msgstr "Kaarien piirto"
-
-#: ../bin/cdraw.c:2604
-msgid "Circle Lines"
-msgstr "Ympyrät"
-
-#: ../bin/cdraw.c:2604
-msgid "Draw Circles"
-msgstr "Ympyröiden piirto"
-
-#: ../bin/cdraw.c:2605
-msgid "Shapes"
-msgstr "Muodot"
-
-#: ../bin/cdraw.c:2605
-msgid "Draw Shapes"
-msgstr "Muotojen piirto"
-
-#: ../bin/cdraw.c:2893
-msgid "Close Polygon - 'c'"
-msgstr ""
-
-#: ../bin/cdraw.c:2894
-msgid "Make PolyLine - 'l'"
-msgstr ""
-
-#: ../bin/cdraw.c:2895
-msgid "Fill Polygon - 'f'"
-msgstr ""
-
-#: ../bin/cdraw.c:2896
-msgid "Empty Polygon - 'e'"
-msgstr ""
-
-#: ../bin/cdraw.c:2898
-msgid "Points Mode - 'p'"
-msgstr ""
-
-#: ../bin/cdraw.c:2899
-msgid "Delete Selected Point - 'Del'"
-msgstr ""
-
-#: ../bin/cdraw.c:2900
-msgid "Vertex Point - 'v'"
-msgstr ""
-
-#: ../bin/cdraw.c:2901
-msgid "Round Corner - 'r'"
-msgstr ""
-
-#: ../bin/cdraw.c:2902
-msgid "Smooth Corner - 's'"
-msgstr ""
-
-#: ../bin/cdraw.c:2904 ../bin/cselect.c:3348
-msgid "LineType..."
-msgstr ""
-
-#: ../bin/cdraw.c:2905 ../bin/cselect.c:3349
-#, fuzzy
-msgid "Solid Line"
-msgstr "Monikulmio"
-
-#: ../bin/cdraw.c:2906 ../bin/cselect.c:3350
-#, fuzzy
-msgid "Dashed Line"
-msgstr "Piirrä viiva"
-
-#: ../bin/cdraw.c:2907 ../bin/cselect.c:3351
-#, fuzzy
-msgid "Dotted Line"
-msgstr "Kaari"
-
-#: ../bin/cdraw.c:2908
-#, fuzzy
-msgid "Dash-Dot Line"
-msgstr "Piirrä viiva"
-
-#: ../bin/cdraw.c:2909
-msgid "Dash-Dot-Dot Line"
-msgstr ""
-
-#: ../bin/cdraw.c:2910
-#, fuzzy
-msgid "Center-Dot Line"
-msgstr "Luo viivoja"
-
-#: ../bin/cdraw.c:2911
-msgid "Phantom-Dot Line"
-msgstr ""
-
-#: ../bin/cdraw.c:2913
-msgid "Origin Mode - 'o'"
-msgstr ""
-
-#: ../bin/cdraw.c:2914
-msgid "Reset Origin - '0'"
-msgstr ""
-
-#: ../bin/cdraw.c:2915
-msgid "Origin to Selected - 'l'"
-msgstr ""
-
-#: ../bin/cdraw.c:2916
-msgid "Origin to Centroid - 'c'"
-msgstr ""
-
-#: ../bin/celev.c:46 ../bin/cprofile.c:1535 ../bin/csplit.c:148
-#: ../bin/csplit.c:153 ../bin/dease.c:67 ../bin/doption.c:132
-#: ../bin/doption.c:134
-msgid "None"
-msgstr "Ei mitään"
-
-#: ../bin/celev.c:46
-msgid "Defined"
-msgstr "Määritelty"
-
-#: ../bin/celev.c:46
-msgid "Hidden"
-msgstr "Piilossa"
-
-#: ../bin/celev.c:47
-msgid "Computed"
-msgstr "Laskettu"
-
-#: ../bin/celev.c:47
-msgid "Station"
-msgstr "Asema"
-
-#: ../bin/celev.c:47 ../bin/cprofile.c:1533 ../bin/dcmpnd.c:75
-msgid "Ignore"
-msgstr "Hylkää"
-
-#: ../bin/celev.c:203
-msgid "Set Elevation"
-msgstr "Aseta korkeus"
-
-#: ../bin/celev.c:296 ../bin/celev.c:303 ../bin/celev.c:306
-#, c-format
-msgid "Undefined"
-msgstr "Määrittelemätön"
-
-#: ../bin/celev.c:362 ../bin/celev.c:495
-msgid "Elevation"
-msgstr "Korkeustaso"
-
-#: ../bin/celev.c:362 ../bin/cmisc.c:459 ../bin/dcontmgm.c:299
-#: ../bin/dcustmgm.c:395 ../bin/dlayer.c:1124 ../bin/dpricels.c:154
-#: ../bin/filenoteui.c:249 ../bin/linknoteui.c:182
-#: ../bin/paramfilesearch_ui.c:396 ../bin/textnoteui.c:171
-msgid "Done"
-msgstr "Valmis"
-
-#: ../bin/celev.c:374 ../bin/celev.c:426 ../bin/celev.c:428 ../bin/celev.c:447
-msgid "Click on end, +Shift to split, +Ctrl to move description"
-msgstr ""
-
-#: ../bin/celev.c:394
-msgid "Move to end or track crossing +Shift to split"
-msgstr ""
-
-#: ../bin/celev.c:398
-#, fuzzy
-msgid "Move to end or track crossing"
-msgstr "Aseta suoran raiteen 1. päätepiste"
-
-#: ../bin/celev.c:407
-#, c-format
-msgid "Crossing - First %0.3f, Second %0.3f, Clearance %0.3f - Click to Split"
-msgstr ""
-
-#: ../bin/celev.c:409
-#, c-format
-msgid "Crossing - First %0.3f, Second %0.3f, Clearance %0.3f"
-msgstr ""
-
-#: ../bin/celev.c:420
-#, fuzzy, c-format
-msgid "Track elevation %0.3f"
-msgstr "Raideosien korkeudet"
-
-#: ../bin/celev.c:423
-#, c-format
-msgid "Click to split here - elevation %0.3f"
-msgstr ""
-
-#: ../bin/celev.c:451
-#, fuzzy
-msgid "Point selected!"
-msgstr "Kirjasinta ei valittu"
-
-#: ../bin/celev.c:454
-#, fuzzy
-msgid "Split track"
-msgstr "Pilko raide"
-
-#: ../bin/celev.c:459
-#, fuzzy
-msgid "Track split!"
-msgstr "Raiteet"
-
-#: ../bin/cgroup.c:592
-msgid "Ungroup Object"
-msgstr "Pura ryhmittely"
-
-#: ../bin/cgroup.c:604
-#, c-format
-msgid "%d objects ungrouped"
-msgstr "%d objetia purettu ryhmästä"
-
-#: ../bin/cgroup.c:606
-msgid "No objects ungrouped"
-msgstr "Yhtään objektia ei purettu ryhmästä"
-
-#: ../bin/cgroup.c:617
-msgid "Replace with new group?"
-msgstr "Korvaa uudella ryhmällä?"
-
-#: ../bin/cgroup.c:623 ../bin/compound.c:566 ../bin/cstruct.c:69
-#: ../bin/ctodesgn.c:194 ../bin/ctodesgn.c:2916 ../bin/cturnout.c:82
-#: ../bin/dcar.c:2195 ../bin/dcar.c:4367 ../bin/dcar.c:4372
-#: ../bin/dcmpnd.c:456 ../bin/dcustmgm.c:59
-#: ../../../../build/work/app/bin/bllnhlp.c:370
-#: ../../../../build/work/app/bin/bllnhlp.c:565
-msgid "Manufacturer"
-msgstr "Valmistaja"
-
-#: ../bin/cgroup.c:624 ../bin/cmisc.c:459 ../bin/cstruct.c:69
-#: ../bin/ctodesgn.c:2917 ../bin/ctodesgn.c:2918 ../bin/ctrain.c:187
-#: ../bin/cturnout.c:82 ../bin/dcar.c:2211 ../bin/dcar.c:4368
-#: ../bin/dcar.c:4373 ../bin/dcmpnd.c:457 ../bin/dcustmgm.c:60
-#: ../bin/denum.c:182 ../bin/denum.c:183 ../bin/denum.c:186
-#: ../../../../build/work/app/bin/bllnhlp.c:371
-msgid "Description"
-msgstr "Kuvaus"
-
-#: ../bin/cgroup.c:625 ../bin/dcmpnd.c:458
-msgid "#"
-msgstr "#"
-
-#: ../bin/cgroup.c:626 ../bin/compound.c:570
-msgid "# Segments"
-msgstr "Lohkoja"
-
-#: ../bin/cgroup.c:628
-#, fuzzy
-msgid "Offset X,Y:"
-msgstr "Siirtymä"
-
-#: ../bin/cgroup.c:1235
-msgid "No endpts"
-msgstr "Ei päätepisteitä"
-
-#: ../bin/cgroup.c:1350
-msgid "No paths"
-msgstr "Ei reittejä"
-
-#: ../bin/cgroup.c:1619 ../bin/cgroup.c:1669
-msgid "Group Tracks"
-msgstr "Ryhmittele raideosia"
-
-#: ../bin/cgroup.c:1729
-msgid "Group Objects"
-msgstr "Ryhmittele"
-
-#: ../bin/chndldto.c:70
-msgid "Place frog and drag angle"
-msgstr "Aseta risteyskappale ja raahaa asettaaksesi kulma"
-
-#: ../bin/chndldto.c:87
-msgid "frog"
-msgstr "Risteyskappale"
-
-#: ../bin/chndldto.c:93
-msgid "Drag to set angle"
-msgstr "Aseta kulma raahaamalla"
-
-#: ../bin/chndldto.c:132
-#, c-format
-msgid "Angle = %0.2f Frog# = %0.2f"
-msgstr "Kulma = %0.2f Risteysnumero = %0.2f"
-
-#: ../bin/chndldto.c:134
-msgid "Frog angle is too close to 0"
-msgstr "Risteyskulma on liian lähellä nollaa"
-
-#: ../bin/chndldto.c:137
-msgid "Select point position"
-msgstr "Aseta kielten kärjet"
-
-#: ../bin/chndldto.c:149 ../bin/chndldto.c:174
-msgid "points"
-msgstr "Kielien päät"
-
-#: ../bin/chndldto.c:271
-#, c-format
-msgid "Length = %0.2f Angle = %0.2f Frog# = %0.2f"
-msgstr "Pituus = %0.2f Kulma = %0.2f Risteysnumero = %0.2f"
-
-#: ../bin/chndldto.c:274
-msgid "Create Hand Laid Turnout"
-msgstr "Luo käsin aseteltu vaihde"
-
-#: ../bin/chndldto.c:358
-msgid "HandLaidTurnout"
-msgstr "Käsin aseteltu vaihde"
-
-#: ../bin/cjoin.c:166
-#, c-format
-msgid "Curved Track: Radius=%s Length=%s"
-msgstr "Kaareva raideosa: Säde=%s Pituus=%s"
-
-#: ../bin/cjoin.c:252
-#, c-format
-msgid "Curved Track: Radius=%s Length=%s Angle=%0.3f"
-msgstr "Kaareva raideosa: Säde=%s Pituus=%s Kulma=%0.3f"
-
-#: ../bin/cjoin.c:348
-#, c-format
-msgid "Track (%d) is too short for transition-curve by %0.3f"
-msgstr "Raide (%d) on %0.3f liian lyhyt kaarreloivennusta varten"
-
-#: ../bin/cjoin.c:366
-#, c-format
-msgid "Connecting track is too short by %0.3f"
-msgstr "Yhdysraide on %0.3f liian lyhyt"
-
-#: ../bin/cjoin.c:410
-msgid "Click on an unselected End-Point"
-msgstr "Valitsemattoman raideosan päätepiste"
-
-#: ../bin/cjoin.c:411
-msgid "Click on a selected End-Point"
-msgstr "Valitun raideosan päätepiste"
-
-#: ../bin/cjoin.c:417
-msgid "unselected"
-msgstr "valitsematon"
-
-#: ../bin/cjoin.c:417 ../bin/cprint.c:161
-msgid "selected"
-msgstr "valittu"
-
-#: ../bin/cjoin.c:474
-msgid "Left click - Select first draw object end"
-msgstr ""
-
-#: ../bin/cjoin.c:513 ../bin/cjoin.c:539
-msgid "Not a line - Try again"
-msgstr ""
-
-#: ../bin/cjoin.c:535
-#, fuzzy
-msgid "Left click - Select second object end"
-msgstr "Klikkaa valittua objektia kohdistaaksesi"
-
-#: ../bin/cjoin.c:547
-msgid "Same draw object and same endpoint - Try again"
-msgstr ""
-
-#: ../bin/cjoin.c:581
-#, fuzzy
-msgid "Create PolyLine"
-msgstr "Luo viivoja"
-
-#: ../bin/cjoin.c:654 ../bin/cjoin.c:863
-#, fuzzy
-msgid "Desired Radius"
-msgstr "Ympyrän säde"
-
-#: ../bin/cjoin.c:804
-#, fuzzy
-msgid "Left click - join with track"
-msgstr ""
-"Hiiren vasen: yhdistä raiteet, Vaihto + hiiren vasen: siirrä yhdistääksesi"
-
-#: ../bin/cjoin.c:806
-msgid "Left click - join with track, Shift Left click - move to join"
-msgstr ""
-"Hiiren vasen: yhdistä raiteet, Vaihto + hiiren vasen: siirrä yhdistääksesi"
-
-#: ../bin/cjoin.c:856
-#, fuzzy, c-format
-msgid "Select 2nd track - desired radius %0.3f"
-msgstr "Valitse määriteltävä raideosa"
-
-#: ../bin/cjoin.c:858 ../bin/cjoin.c:1256 ../bin/cjoin.c:1263
-msgid "Select 2nd track"
-msgstr "Valitse 2. raideosa"
-
-#: ../bin/cjoin.c:1065
-msgid "Beyond end of 2nd track"
-msgstr "2. raideosan päätepisteen takana"
-
-#: ../bin/cjoin.c:1100
-msgid "Beyond end of 1st track"
-msgstr "1. raideosan päätepisteen takana"
-
-#: ../bin/cjoin.c:1122
-msgid "First Track Type not supported for non-Cornu Join"
-msgstr ""
-
-#: ../bin/cjoin.c:1129
-msgid "First "
-msgstr "Ensimmäinen "
-
-#: ../bin/cjoin.c:1154
-msgid "Second Track Type not supported for non-Cornu Join"
-msgstr ""
-
-#: ../bin/cjoin.c:1161
-msgid "Second "
-msgstr "Toinen "
-
-#: ../bin/cjoin.c:1175 ../bin/track.c:2270 ../bin/track.c:2306
-#: ../bin/track.c:2372
-msgid "Connecting "
-msgstr "Yhdistetään "
-
-#: ../bin/cjoin.c:1266
-msgid "Join Tracks"
-msgstr "Yhdistä raiteet"
-
-#: ../bin/cjoin.c:1348
-msgid "Join"
-msgstr "Yhdistä"
-
-#: ../bin/cjoin.c:1349
-#, fuzzy
-msgid "Join Track"
-msgstr "Yhdistä raiteet"
-
-#: ../bin/cjoin.c:1350
-#, fuzzy
-msgid "Join Lines"
-msgstr "Viivat"
-
-#: ../bin/cmisc.c:59
-msgid "Middle"
-msgstr "Keskimmäinen"
-
-#: ../bin/cmisc.c:59 ../bin/macro.c:98
-msgid "End"
-msgstr "Lopeta"
-
-#: ../bin/cmisc.c:242 ../bin/cmodify.c:353 ../bin/compound.c:664
-#: ../bin/ctrain.c:218
-msgid "Change Track"
-msgstr "Muuta raiteita"
-
-#: ../bin/cmisc.c:572
-msgid "Select track to describe"
-msgstr "Valitse määriteltävä raideosa"
-
-#: ../bin/cmisc.c:650 ../bin/doption.c:235
-msgid "Properties"
-msgstr "Asetukset"
-
-#: ../bin/cmisc2.c:52
-msgid "Bridge"
-msgstr "Silta"
-
-#: ../bin/cmodify.c:203 ../bin/cmodify.c:471
-msgid "Modify Track"
-msgstr "Muokkaa raidetta"
-
-#: ../bin/cmodify.c:266
-msgid ""
-"Select a track to modify, Left-Click change length, Right-Click to add "
-"flextrack"
-msgstr ""
-
-#: ../bin/cmodify.c:512
-#, fuzzy
-msgid "Drag to add flex track"
-msgstr "Vedä luodaksesi lähtevän raiteen"
-
-#: ../bin/cmodify.c:517
-#, fuzzy
-msgid "No track to extend"
-msgstr "Yhtään raidetta ei irroitettu"
-
-#: ../bin/cmodify.c:522
-#, fuzzy
-msgid "No track selected"
-msgstr "Kirjasinta ei valittu"
-
-#: ../bin/cmodify.c:655
-#, c-format
-msgid "Curve Track: Radius=%s Length=%s Angle=%0.3f"
-msgstr "Kaareva raideosa: Säde=%s Pituus=%s Kulma=%0.3f"
-
-#: ../bin/cmodify.c:670
-msgid "Extend Track"
-msgstr "Jatka raidetta"
-
-#: ../bin/cmodify.c:794
-msgid "Modify"
-msgstr "Muokkaa"
-
-#: ../bin/cmodify.c:801 ../bin/cselect.c:3305 ../bin/cselect.c:3321
-#: ../bin/misc.c:2197 ../bin/misc.c:2199
-msgid "Zoom In"
-msgstr "Lähennä"
-
-#: ../bin/cmodify.c:802 ../bin/cselect.c:3309 ../bin/cselect.c:3322
-#: ../bin/misc.c:2201 ../bin/misc.c:2203
-msgid "Zoom Out"
-msgstr "Loitonna"
-
-#: ../bin/cmodify.c:803
-msgid "Pan center - 'c'"
-msgstr ""
-
-#: ../bin/cnote.c:69 ../bin/textnoteui.c:48 ../bin/trknote.c:60
-msgid "Note"
-msgstr "Muistiinpano"
-
-#: ../bin/cnote.c:75
-msgid "Replace this text with your layout notes"
-msgstr "Korvaa tämä teksti muistiinpanollasi"
-
-#: ../bin/compound.c:544 ../bin/compound.c:549 ../bin/compound.c:554
-#: ../bin/compound.c:559 ../bin/tbezier.c:248 ../bin/tbezier.c:255
-#: ../bin/tcornu.c:297 ../bin/tcornu.c:302
-#, fuzzy
-msgid "Center X,Y"
-msgstr "Keskipiste: X"
-
-#: ../bin/compound.c:546 ../bin/tbezier.c:249 ../bin/tcornu.c:298
-#, fuzzy
-msgid "Z1"
-msgstr "Z"
-
-#: ../bin/compound.c:551 ../bin/tbezier.c:256 ../bin/tcornu.c:303
-#, fuzzy
-msgid "Z2"
-msgstr "Z"
-
-#: ../bin/compound.c:552
-#, fuzzy
-msgid "End Pt 3: X,Y"
-msgstr "Päätepiste 1: X"
-
-#: ../bin/compound.c:556
-#, fuzzy
-msgid "Z3"
-msgstr "Z"
-
-#: ../bin/compound.c:557
-#, fuzzy
-msgid "End Pt 4: X,Y"
-msgstr "Päätepiste 1: X"
-
-#: ../bin/compound.c:561
-#, fuzzy
-msgid "Z4"
-msgstr "Z"
-
-#: ../bin/compound.c:568 ../bin/cstruct.c:69 ../bin/cturnout.c:82
-#: ../bin/dcar.c:4367 ../bin/dcar.c:4372 ../bin/dcustmgm.c:60
-#: ../bin/doption.c:137 ../bin/doption.c:138
-msgid "Part No"
-msgstr "Tuotekoodi"
-
-#: ../bin/compound.c:569
-#, fuzzy
-msgid "LineType"
-msgstr "Tyyppi"
-
-#: ../bin/compound.c:830 ../bin/cstruct.c:935 ../bin/cstruct.c:1126
-msgid "Structure"
-msgstr "Rakennus"
-
-#: ../bin/compound.c:832 ../bin/cswitchmotor.c:228 ../bin/cturnout.c:1063
-#: ../bin/cturnout.c:2888
-msgid "Turnout"
-msgstr "Palaraide"
-
-#: ../bin/compound.c:832
-msgid "Sectional Track"
-msgstr "Palaraide"
-
-#: ../bin/compound.c:836
-#, fuzzy, c-format
-msgid "%s (%d) Layer= %d %s"
-msgstr "(%d): Taso=%d %s"
-
-#: ../bin/cparalle.c:52 ../bin/cparalle.c:100 ../bin/cparalle.c:140
-#: ../bin/ctodesgn.c:538 ../bin/ctodesgn.c:558 ../bin/ctodesgn.c:578
-#: ../bin/tcurve.c:371
-msgid "Separation"
-msgstr "Väli"
-
-#: ../bin/cparalle.c:55 ../bin/cparalle.c:101
-#, fuzzy
-msgid "Radius Factor"
-msgstr "Säde2"
-
-#: ../bin/cparalle.c:141
-#, fuzzy
-msgid "Radius factor"
-msgstr "Säde2"
-
-#: ../bin/cparalle.c:154
-msgid " Track/Line doesn't support parallel"
-msgstr ""
-
-#: ../bin/cparalle.c:226
-msgid "Create Parallel Track"
-msgstr "Luo rinnakkainen raide"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:354
-#: ../bin/cparalle.c:296 ../../../../build/work/app/i18n/custmsg.h:1231
-msgid "Parallel"
-msgstr "Rinnakkainen"
-
-#: ../bin/cparalle.c:297
-#, fuzzy
-msgid "Parallel Track"
-msgstr "Luo rinnakkainen raide"
-
-#: ../bin/cparalle.c:298
-#, fuzzy
-msgid "Parallel Line"
-msgstr "Rinnakkainen"
-
-#: ../bin/cprint.c:110
-msgid "Portrait"
-msgstr "Pysty"
-
-#: ../bin/cprint.c:110
-msgid "Landscape"
-msgstr "Vaaka"
-
-#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:94 ../bin/cswitchmotor.c:113
-#: ../bin/cswitchmotor.c:225 ../bin/dbench.c:78 ../bin/dease.c:67
-#: ../bin/doption.c:131 ../bin/doption.c:133 ../bin/macro.c:1406
-msgid "Normal"
-msgstr "Normaali"
-
-#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:95 ../bin/cswitchmotor.c:114
-#: ../bin/cswitchmotor.c:226 ../bin/ctrain.c:941 ../bin/ctrain.c:1248
-msgid "Reverse"
-msgstr "Taakse"
-
-#: ../bin/cprint.c:112
-msgid "Engineering Data"
-msgstr "Suunnittelutiedot"
-
-#: ../bin/cprint.c:113
-#, fuzzy
-msgid "Registration Marks (in 1:1 scale only)"
-msgstr "Tulosta sivujen kohdistusmerkinnät tulostusmittakaavan ollessa 1:1?"
-
-#: ../bin/cprint.c:114
-#, fuzzy
-msgid "Page Numbers"
-msgstr "Pilarin numero"
-
-#: ../bin/cprint.c:115
-msgid "Ignore Page Margins"
-msgstr "Ei marginaaleja"
-
-#: ../bin/cprint.c:116 ../bin/csnap.c:705 ../bin/doption.c:530
-msgid "Snap Grid"
-msgstr "Kohdistusruudukko"
-
-#: ../bin/cprint.c:117
-#, fuzzy
-msgid "Rulers"
-msgstr "Viivain"
-
-#: ../bin/cprint.c:118
-#, fuzzy
-msgid "Roadbed Outline"
-msgstr "Tulosta ratapenkan ulkoreuna"
-
-#: ../bin/cprint.c:119
-#, fuzzy
-msgid "Centerline below Scale 1:1"
-msgstr "Tulosta keskiviiva"
-
-#: ../bin/cprint.c:127
-msgid "Print Scale"
-msgstr "Tulostuksen mittakaava"
-
-#: ../bin/cprint.c:128
-msgid "Page Width"
-msgstr "Sivun leveys"
-
-#: ../bin/cprint.c:129
-msgid "Max"
-msgstr "Max"
-
-#: ../bin/cprint.c:131
-msgid "Snap Shot"
-msgstr "Yhdelle sivulle"
-
-#: ../bin/cprint.c:132
-msgid "Page Format"
-msgstr "Sivun muotoilu"
-
-#: ../bin/cprint.c:133
-msgid "Print Order"
-msgstr "Tulostusjärjestys"
-
-#: ../bin/cprint.c:134
-#, fuzzy
-msgid "Print "
-msgstr "Tulosta"
-
-#: ../bin/cprint.c:149
-#, fuzzy
-msgid " Width"
-msgstr "Leveys"
-
-#: ../bin/cprint.c:151
-#, fuzzy
-msgid "Margins"
-msgstr "Päätaso"
-
-#: ../bin/cprint.c:152 ../bin/cturntbl.c:250
-msgid "Origin: X"
-msgstr "Origo: X"
-
-#: ../bin/cprint.c:153 ../bin/csnap.c:535
-msgid "Y"
-msgstr "Y"
-
-#: ../bin/cprint.c:154 ../bin/cprint.c:620 ../bin/cprofile.c:715
-#: ../bin/dcar.c:2215
-msgid "Reset"
-msgstr "Palauta"
-
-#: ../bin/cprint.c:156
-msgid "Setup"
-msgstr "Asetukset"
-
-#: ../bin/cprint.c:157 ../bin/cselect.c:3313 ../bin/misc.c:2228
-#, fuzzy
-msgid "Select All"
-msgstr "Valitse kaikki"
-
-#: ../bin/cprint.c:158 ../bin/cprofile.c:717 ../bin/layout.c:472
-#: ../bin/misc.c:726
-msgid "Clear"
-msgstr "Tyhjennä"
-
-#: ../bin/cprint.c:160
-msgid "0 pages"
-msgstr "0 sivua"
-
-#: ../bin/cprint.c:187
-#, fuzzy, c-format
-msgid "%d page"
-msgstr "%d sivua"
-
-#: ../bin/cprint.c:187
-#, c-format
-msgid "%d pages"
-msgstr "%d sivua"
-
-#: ../bin/cprint.c:408
-#, fuzzy, c-format
-msgid "PrintScale 1:%ld Room %s x %s Model Scale %s File %s"
-msgstr "Tulostusmittakaava %ld:1 Huone %s x %s Mittakaava %s Tiedosto %s"
-
-#: ../bin/cprint.c:716 ../bin/dbitmap.c:208 ../bin/filenoteui.c:158
-#: ../bin/misc.c:1235 ../bin/misc.c:1313 ../bin/param.c:2618
-#: ../wlib/gtklib/browserhelp.c:88
-#: ../../../../build/work/app/bin/bllnhlp.c:584
-msgid "Cancel"
-msgstr "Peruuta"
-
-#: ../bin/cprint.c:723
-#, fuzzy
-msgid "Print Margins"
-msgstr "Tulostimen marginaalien testisivu"
-
-#: ../bin/cprint.c:1367 ../bin/cprofile.c:719 ../bin/ctodesgn.c:2864
-#: ../bin/denum.c:55
-msgid "Print"
-msgstr "Tulosta"
-
-#: ../bin/cprint.c:1388
-msgid "Select pages to print, or drag to move print grid"
-msgstr "Valitse tulostettavat sivut tai siirrä tulostusruudukkoa raahaamalla"
-
-#: ../bin/cprint.c:1485
-msgid "Print..."
-msgstr "Tulosta..."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:350
-#: ../bin/cprofile.c:614 ../bin/cprofile.c:1448 ../bin/cprofile.c:1527
-#: ../../../../build/work/app/bin/bllnhlp.c:122
-#: ../../../../build/work/app/i18n/custmsg.h:1223
-msgid "Profile"
-msgstr "Profiili"
-
-#: ../bin/cprofile.c:632
-#, c-format
-msgid "%s Profile: %s"
-msgstr "%s Profiili: %s"
-
-#: ../bin/cprofile.c:713 ../bin/misc.c:1894
-msgid "Change"
-msgstr "Muuta"
-
-#: ../bin/cprofile.c:757 ../bin/cprofile.c:767
-#, c-format
-msgid "Elev = %0.1f"
-msgstr "Korkeus = %0.1f"
-
-#: ../bin/cprofile.c:769
-#, c-format
-msgid "Elev=%0.2f %0.1f%%"
-msgstr "Korkeus=%0.2f %0.1f%%"
-
-#: ../bin/cprofile.c:774
-#, c-format
-msgid "%0.1f%% Elev = %0.2f"
-msgstr "%0.1f%% Korkeus = %0.2f"
-
-#: ../bin/cprofile.c:779
-#, c-format
-msgid "%0.1f%% Elev = %0.2f %0.1f%%"
-msgstr "%0.1f%% Korkeus = %0.2f %0.1f%%"
-
-#: ../bin/cprofile.c:794 ../bin/cprofile.c:864 ../bin/cprofile.c:1400
-msgid "Profile Command"
-msgstr "Profiili komento"
-
-#: ../bin/cprofile.c:803 ../bin/cprofile.c:1454
-msgid "Drag to change Elevation"
-msgstr "Muuta korkeutta raahaamalla"
-
-#: ../bin/cprofile.c:905
-msgid "Select a Defined Elevation to start Profile"
-msgstr "Valitse määritelty korkeus aloittaaksesi profiili"
-
-#: ../bin/cprofile.c:907
-msgid "Select a Defined Elevation to extend Profile"
-msgstr "Valitse määritelty korkeus laajentaaksesi profiilia"
-
-#: ../bin/cprofile.c:1462
-msgid "Select a Defined Elevation to start profile"
-msgstr "Valitse määritelty korkeus aloittaaksesi profiili"
-
-#: ../bin/cprofile.c:1531
-msgid "Define"
-msgstr "Määrittele"
-
-#: ../bin/cpull.c:439 ../bin/cpull.c:595
-#, c-format
-msgid "%d tracks moved"
-msgstr "%d raideosaa siirretty"
-
-#: ../bin/cpull.c:485
-msgid "Pull Tracks"
-msgstr "Liitä raiteet"
-
-#: ../bin/cpull.c:559
-msgid "Tighten Tracks"
-msgstr "Yhdistä raiteet"
-
-#: ../bin/cpull.c:645
-msgid "Connect Multiple Tracks - Select multiple tracks to join first"
-msgstr ""
-
-#: ../bin/cpull.c:648
-#, fuzzy
-msgid "Try to Connect all Selected Tracks?"
-msgstr "Nosta tai laske kaikkia valittuja raiteita"
-
-#: ../bin/cpull.c:654
-#, fuzzy
-msgid "ReConnect"
-msgstr "Yhdistetään "
-
-#: ../bin/cpull.c:690
-#, c-format
-msgid ""
-"Round 1 %d and Round 2 %d tracks connected, %d close pairs of end Points "
-"were not connected"
-msgstr ""
-
-#: ../bin/cpull.c:715
-#, fuzzy
-msgid "Select first endpoint or turntable to connect, +Shift to tighten"
-msgstr "Valitse ensimmäinen yhdistettävä päätepiste"
-
-#: ../bin/cpull.c:717
-msgid ""
-"Select first endpoint to connect, or Right-Click for connecting selected "
-"tracks (not turntable)"
-msgstr ""
-
-#: ../bin/cpull.c:776
-#, fuzzy
-msgid "Select second endpoint or turntable to connect"
-msgstr "Valitse toinen yhdistettävä päätepiste"
-
-#: ../bin/cpull.c:783
-msgid "Same Track! - please select another"
-msgstr ""
-
-#: ../bin/cpull.c:870
-#, fuzzy
-msgid "Connect Two Tracks"
-msgstr "Liitä kaksi raidetta"
-
-#: ../bin/cpull.c:872
-msgid "Connect All Selected - 'S'"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:361
-#: ../bin/cruler.c:143 ../../../../build/work/app/i18n/custmsg.h:1245
-msgid "Ruler"
-msgstr "Viivain"
-
-#: ../bin/cselect.c:616
-msgid "Change Track Width"
-msgstr "Muuta raiteen pituutta"
-
-#: ../bin/cselect.c:640
-#, fuzzy
-msgid "Change Line Type"
-msgstr "Muuta tasojen asetuksia"
-
-#: ../bin/cselect.c:669
-msgid "Delete Tracks"
-msgstr "Poista raiteita"
-
-#: ../bin/cselect.c:745
-msgid "Hide Tracks (Tunnel)"
-msgstr "Piilota raiteet (tunneli)"
-
-#: ../bin/cselect.c:763
-#, fuzzy
-msgid "Bridge Tracks "
-msgstr "Yhdistä raiteet"
-
-#: ../bin/cselect.c:780
-#, fuzzy
-msgid "Ties Tracks "
-msgstr "Ohuet raiteet"
-
-#: ../bin/cselect.c:817 ../bin/misc.c:2348
-msgid "Move To Current Layer"
-msgstr "Siirrä nykyiselle tasolle"
-
-#: ../bin/cselect.c:857 ../bin/misc.c:2498
-msgid "Clear Elevations"
-msgstr "Poista korkeusmääritykset"
-
-#: ../bin/cselect.c:901
-msgid "Add Elevations"
-msgstr "Päätepisteiden korkeudet"
-
-#: ../bin/cselect.c:916
-msgid "Refresh Compound"
-msgstr "Päivitä vaihteet/rakennukset"
-
-#: ../bin/cselect.c:948 ../bin/dcar.c:4367 ../bin/dcar.c:4372
-#: ../bin/dcustmgm.c:60 ../bin/layout.c:463
-msgid "Scale"
-msgstr "Mittakaava"
-
-#: ../bin/cselect.c:948 ../bin/cselect.c:973
-msgid "Ratio"
-msgstr "Suhde"
-
-#: ../bin/cselect.c:957
-msgid "Do not resize track"
-msgstr "Älä muuta raiteiden kokoa"
-
-#: ../bin/cselect.c:961
-msgid "Rescale by:"
-msgstr "Muunnos:"
-
-#: ../bin/cselect.c:963
-msgid "From:"
-msgstr "Alkuperäinen:"
-
-#: ../bin/cselect.c:967
-msgid "To: "
-msgstr "Uusi:"
-
-#: ../bin/cselect.c:1034
-msgid "Rescale Tracks"
-msgstr "Muuta raiteiden mittakaavaa"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:357
-#: ../bin/cselect.c:1164 ../../../../build/work/app/i18n/custmsg.h:1237
-msgid "Rescale"
-msgstr "Mittakaavan muutos"
-
-#: ../bin/cselect.c:1465
-msgid "Cornu too tight - it was deleted"
-msgstr ""
-
-#: ../bin/cselect.c:1520
-msgid "Move To Join"
-msgstr "Siirrä yhdistääksesi"
-
-#: ../bin/cselect.c:1714
-msgid "Drag to move selected tracks - Shift+Ctrl+Arrow micro-steps the move"
-msgstr ""
-
-#: ../bin/cselect.c:1735 ../bin/cselect.c:1848 ../bin/cselect.c:2205
-msgid "Move Tracks"
-msgstr "Siirrä raiteita"
-
-#: ../bin/cselect.c:1893
-#, fuzzy
-msgid "Align: Click on a selected object to be aligned"
-msgstr "Klikkaa valittua objektia kohdistaaksesi"
-
-#: ../bin/cselect.c:1931
-#, fuzzy
-msgid "Drag to rotate selected tracks, Shift+RightClick for QuickRotate Menu"
-msgstr "Pyöritä valittuja raideosia raahaamalla"
-
-#: ../bin/cselect.c:1947 ../bin/cselect.c:2218
-msgid "Rotate Tracks"
-msgstr "Pyöritä raiteita"
-
-#: ../bin/cselect.c:1960
-msgid "Center of Rotation snapped to Turntable center"
-msgstr ""
-
-#: ../bin/cselect.c:2002 ../bin/cselect.c:2033
-#, c-format
-msgid "Angle %0.3f"
-msgstr "Kulma %0.3f"
-
-#: ../bin/cselect.c:2089
-#, fuzzy, c-format
-msgid "Angle %0.3f #%ld"
-msgstr " Kulma %0.3f #%ld"
-
-#: ../bin/cselect.c:2091
-#, fuzzy, c-format
-msgid "Angle %0.3f %s"
-msgstr "Kulma %0.3f"
-
-#: ../bin/cselect.c:2096
-msgid "Origin Set. Drag away to set start angle"
-msgstr ""
-
-#: ../bin/cselect.c:2110
-#, fuzzy
-msgid "Align: Click on the 2nd unselected object"
-msgstr "Klikkaa valitsematonta objektia"
-
-#: ../bin/cselect.c:2230
-msgid "Toggle Label"
-msgstr "Näytä/piilota merkintä"
-
-#: ../bin/cselect.c:2349 ../bin/cselect.c:2388
-msgid "Select and drag a description"
-msgstr "Valitse ja raahaa merkintöjä"
-
-#: ../bin/cselect.c:2374
-#, fuzzy
-msgid "Elevation description"
-msgstr "Vasemman kuvaus"
-
-#: ../bin/cselect.c:2377
-msgid "Hidden description - 's' to Show"
-msgstr ""
-
-#: ../bin/cselect.c:2381
-#, fuzzy
-msgid "Shown description - 'h' to Hide"
-msgstr "Näytä kuvaus"
-
-#: ../bin/cselect.c:2402
-msgid "Hidden Label - Drag to reveal"
-msgstr ""
-
-#: ../bin/cselect.c:2404
-#, fuzzy
-msgid "Drag label"
-msgstr "Raahaa paikoilleen"
-
-#: ../bin/cselect.c:2406
-msgid "Move Label"
-msgstr "Siirrä merkintöjä"
-
-#: ../bin/cselect.c:2443
-msgid "To Hide, use Context Menu"
-msgstr ""
-
-#: ../bin/cselect.c:2459 ../bin/cselect.c:3339
-#, fuzzy
-msgid "Show/Hide Description"
-msgstr "Näytä kuvaus"
-
-#: ../bin/cselect.c:2538
-msgid "Drag to mark mirror line"
-msgstr "Vedä hiirellä peilauslinja"
-
-#: ../bin/cselect.c:2549
-#, c-format
-msgid "Angle %0.2f"
-msgstr "Kulma %0.2f"
-
-#: ../bin/cselect.c:2552
-msgid "Flip Tracks"
-msgstr "Peilaa raiteet"
-
-#: ../bin/cselect.c:2899
-#, fuzzy
-msgid "Select track"
-msgstr "Valitse raideosat"
-
-#: ../bin/cselect.c:2927
-msgid "Track is in Frozen Layer"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:323
-#: ../bin/cselect.c:3279 ../bin/dcar.c:1673 ../bin/doption.c:235
-#: ../../../../build/work/app/i18n/custmsg.h:1169
-msgid "Select"
-msgstr "Valitse"
-
-#: ../bin/cselect.c:3298 ../bin/cselect.c:3318 ../bin/misc.c:2192
-msgid "Undo"
-msgstr "Kumoa"
-
-#: ../bin/cselect.c:3299 ../bin/cselect.c:3319 ../bin/misc.c:2194
-msgid "Redo"
-msgstr "Tee uudelleen"
-
-#: ../bin/cselect.c:3306 ../bin/draw.c:3112
-msgid "Zoom to extents - 'e'"
-msgstr ""
-
-#: ../bin/cselect.c:3307 ../bin/draw.c:3123 ../bin/misc.c:2375
-msgid "&Zoom"
-msgstr "&Zoom"
-
-#: ../bin/cselect.c:3310 ../bin/draw.c:3122
-msgid "Pan to Origin - 'o'/'0'"
-msgstr ""
-
-#: ../bin/cselect.c:3311 ../bin/cselect.c:3323
-msgid "Pan Center Here - 'c'"
-msgstr ""
-
-#: ../bin/cselect.c:3314 ../bin/misc.c:2231 ../bin/misc.c:2354
-msgid "Select Current Layer"
-msgstr "Valitse nykyinen taso"
-
-#: ../bin/cselect.c:3325 ../bin/misc.c:2233
-msgid "Deselect All"
-msgstr "Poista valinnat"
-
-#: ../bin/cselect.c:3327
-#, fuzzy
-msgid "Properties -'?'"
-msgstr "Asetukset"
-
-#: ../bin/cselect.c:3328
-#, fuzzy
-msgid "Modify/Activate Track"
-msgstr "Muokkaa raidetta"
-
-#: ../bin/cselect.c:3330 ../bin/misc.c:2219
-#, fuzzy
-msgid "Cut"
-msgstr "&Leikkaa"
-
-#: ../bin/cselect.c:3331 ../bin/misc.c:2221
-msgid "Copy"
-msgstr "Kopioi"
-
-#: ../bin/cselect.c:3332 ../bin/fileio.c:1620 ../bin/misc.c:2223
-msgid "Paste"
-msgstr "Liitä"
-
-#: ../bin/cselect.c:3333 ../bin/misc.c:2225
-#, fuzzy
-msgid "Clone"
-msgstr "Sulje"
-
-#: ../bin/cselect.c:3335
-#, fuzzy
-msgid "Rotate..."
-msgstr "Pyöritä"
-
-#: ../bin/cselect.c:3337
-msgid "Align"
-msgstr "Kohdista"
-
-#: ../bin/cselect.c:3341
-msgid "Hide/NoHide"
-msgstr ""
-
-#: ../bin/cselect.c:3342
-msgid "Bridge/NoBridge"
-msgstr ""
-
-#: ../bin/cselect.c:3343
-msgid "NoTies/Ties"
-msgstr ""
-
-#: ../bin/cselect.c:3344
-msgid "Thickness..."
-msgstr ""
-
-#: ../bin/cselect.c:3345 ../bin/misc.c:2366
-msgid "Thin Tracks"
-msgstr "Ohuet raiteet"
-
-#: ../bin/cselect.c:3346 ../bin/misc.c:2367
-msgid "Medium Tracks"
-msgstr "Keskipaksut raiteet"
-
-#: ../bin/cselect.c:3347 ../bin/misc.c:2368
-msgid "Thick Tracks"
-msgstr "Paksut raiteet"
-
-#: ../bin/cselect.c:3352
-msgid "Dash-Dotted Line"
-msgstr ""
-
-#: ../bin/cselect.c:3353
-msgid "Dash-Dot-Dotted Line"
-msgstr ""
-
-#: ../bin/cselect.c:3355
-#, fuzzy
-msgid "Move To Front"
-msgstr "Siirrä yhdistääksesi"
-
-#: ../bin/cselect.c:3356
-#, fuzzy
-msgid "Move To Back"
-msgstr "Siirrä raiteita"
-
-#: ../bin/cselect.c:3358
-#, fuzzy
-msgid "Group"
-msgstr "Ryhmittele"
-
-#: ../bin/cselect.c:3359
-#, fuzzy
-msgid "UnGroup"
-msgstr "Pura ryhmittely"
-
-#: ../bin/cselect.c:3394
-msgid "Move Description"
-msgstr "Siirrä merkintöjä"
-
-#: ../bin/cselect.c:3401 ../bin/misc.c:1935 ../bin/misc.c:2236
-msgid "Move"
-msgstr "Siirrä"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:368
-#: ../bin/cselect.c:3403 ../bin/misc.c:1926 ../bin/misc.c:2238
-#: ../../../../build/work/app/i18n/custmsg.h:1259
-msgid "Rotate"
-msgstr "Pyöritä"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:369
-#: ../bin/cselect.c:3405 ../bin/dcar.c:2217
-#: ../../../../build/work/app/i18n/custmsg.h:1261
-msgid "Flip"
-msgstr "Peilikuva"
-
-#: ../bin/csensor.c:216
-#, fuzzy
-msgid "Change Sensor"
-msgstr "Muuta mittakaavaa"
-
-#: ../bin/csensor.c:262 ../bin/csensor.c:596
-msgid "Sensor"
-msgstr ""
-
-#: ../bin/csensor.c:391 ../bin/csignal.c:511
-#, fuzzy
-msgid "Orgin X"
-msgstr "Marginaali"
-
-#: ../bin/csensor.c:407
-#, fuzzy
-msgid "Create Sensor"
-msgstr "Luo runkorakenne"
-
-#: ../bin/csensor.c:410
-#, fuzzy
-msgid "Modify Sensor"
-msgstr "Muokkaa raidetta"
-
-#: ../bin/csensor.c:443
-#, fuzzy
-msgid "Edit sensor"
-msgstr "Muokkaa -valikko"
-
-#: ../bin/csensor.c:481
-#, fuzzy
-msgid "Place sensor"
-msgstr "Aseta uusi vaihde"
-
-#: ../bin/csignal.c:241
-#, fuzzy
-msgid "Number Of Heads"
-msgstr "Numerot"
-
-#: ../bin/csignal.c:280
-#, fuzzy
-msgid "Change Signal"
-msgstr "Muuta mittakaavaa"
-
-#: ../bin/csignal.c:314
-#, fuzzy, c-format
-msgid "(%d [%s]): Layer=%u, %d heads at %0.3f,%0.3f A%0.3f"
-msgstr "(%d): Taso=%d %s"
-
-#: ../bin/csignal.c:325 ../bin/csignal.c:914
-msgid "Signal"
-msgstr ""
-
-#: ../bin/csignal.c:517
-#, fuzzy
-msgid "Number of Heads"
-msgstr "Numerot"
-
-#: ../bin/csignal.c:522
-#, fuzzy
-msgid "Edit Aspect"
-msgstr "Muokkaa -valikko"
-
-#: ../bin/csignal.c:524
-msgid "Add Aspect"
-msgstr ""
-
-#: ../bin/csignal.c:526
-#, fuzzy
-msgid "Delete Aspect"
-msgstr "Poista valitut objektit"
-
-#: ../bin/csignal.c:539
-msgid "Aspect Index"
-msgstr ""
-
-#: ../bin/csignal.c:554
-#, fuzzy
-msgid "Create Signal"
-msgstr "Luo viivoja"
-
-#: ../bin/csignal.c:558
-#, fuzzy
-msgid "Modify Signal"
-msgstr "Muokkaa raidetta"
-
-#: ../bin/csignal.c:665
-#, fuzzy
-msgid "Edit aspect"
-msgstr "Muokkaa -valikko"
-
-#: ../bin/csignal.c:712
-#, fuzzy, c-format
-msgid "Are you sure you want to delete the %d aspect(s)"
-msgstr "Haluatko varmasti poistaa nämä %d vaunua/veturia?"
-
-#: ../bin/csignal.c:733
-#, fuzzy
-msgid "Edit signal"
-msgstr "Muokkaa -valikko"
-
-#: ../bin/csignal.c:795
-msgid "Place base of signal"
-msgstr ""
-
-#: ../bin/csignal.c:802
-#, fuzzy
-msgid "Drag to orient signal"
-msgstr "Aseta kulma raahaamalla"
-
-#: ../bin/csnap.c:516
-msgid "Horz"
-msgstr "Vaaka"
-
-#: ../bin/csnap.c:518
-msgid "Spacing"
-msgstr "Väli"
-
-#: ../bin/csnap.c:520
-msgid "Divisions"
-msgstr "Jako"
-
-#: ../bin/csnap.c:523
-msgid "Enable"
-msgstr "Salli"
-
-#: ../bin/csnap.c:524
-msgid "Vert"
-msgstr "Pysty"
-
-#: ../bin/csnap.c:533 ../bin/dease.c:76
-msgid "X"
-msgstr "X"
-
-#: ../bin/csnap.c:537
-msgid "A"
-msgstr "K"
-
-#: ../bin/csnap.c:540
-msgid "Show"
-msgstr "Näytä"
-
-#: ../bin/csnap.c:790
-msgid "Change Grid..."
-msgstr "Kohdistusruudukko..."
-
-#: ../bin/csplit.c:44
-msgid "Set Block Gaps"
-msgstr "Aseta lohkojen välit"
-
-#: ../bin/csplit.c:105
-msgid "Select track to split"
-msgstr "Valitse pilkottava raide"
-
-#: ../bin/csplit.c:125
-#, fuzzy
-msgid "Can't Split that Track"
-msgstr "Pilko raide"
-
-#: ../bin/csplit.c:133 ../bin/csplit.c:221
-msgid "Split Track"
-msgstr "Pilko raide"
-
-#: ../bin/csplit.c:149 ../bin/dbench.c:69 ../bin/dbench.c:80
-msgid "Left"
-msgstr "Vasen"
-
-#: ../bin/csplit.c:150 ../bin/dbench.c:70 ../bin/dbench.c:79
-msgid "Right"
-msgstr "Oikea"
-
-#: ../bin/csplit.c:151 ../bin/csplit.c:156
-msgid "Both"
-msgstr "Molemmat"
-
-#: ../bin/csplit.c:154
-msgid "Top"
-msgstr "Päällimmäiseksi"
-
-#: ../bin/csplit.c:155
-msgid "Bottom"
-msgstr "Alimmaiseksi"
-
-#: ../bin/cstraigh.c:77
-#, fuzzy
-msgid "Place 1st endpoint of straight track, snap to unconnected endpoint"
-msgstr "Aseta suoran raiteen 1. päätepiste"
-
-#: ../bin/cstraigh.c:104
-msgid "Drag to place 2nd end point"
-msgstr "Raahaa asettaaksesi 2. päätepiste"
-
-#: ../bin/cstraigh.c:140
-#, c-format
-msgid "Straight Track Length=%s Angle=%0.3f"
-msgstr "Suora raideosa Pituus=%s Kulma=%0.3f"
-
-#: ../bin/cstraigh.c:191 ../bin/tstraigh.c:267
-msgid "Straight Track"
-msgstr "Suora raide"
-
-#: ../bin/cstruct.c:71 ../bin/cturnout.c:84 ../bin/doption.c:131
-#: ../bin/doption.c:240
-msgid "Hide"
-msgstr "Piilota"
-
-#: ../bin/cstruct.c:449 ../bin/cstruct.c:476
-msgid "Pier Number"
-msgstr "Pilarin numero"
-
-#: ../bin/cstruct.c:561
-#, c-format
-msgid "Scale %d:1"
-msgstr "Mittakaava %d:1"
-
-#: ../bin/cstruct.c:563
-#, c-format
-msgid "Width %s"
-msgstr "Leveys %s"
-
-#: ../bin/cstruct.c:565
-#, c-format
-msgid "Height %s"
-msgstr "Korkeus %s"
-
-#: ../bin/cstruct.c:706
-msgid "Place Structure"
-msgstr "Aseta rakennus"
-
-#: ../bin/cstruct.c:798 ../bin/cstruct.c:872 ../bin/cstruct.c:1103
-#: ../bin/cturnout.c:2753 ../bin/cturnout.c:2808 ../bin/cturnout.c:2933
-#: ../bin/cturnout.c:3072
-#, fuzzy
-msgid ""
-"Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter "
-"to accept, Esc to Cancel"
-msgstr ""
-"Siirrä vetämällä hiiren vasemmalla, pyöritä vetämällä hiiren oikealla, paina "
-"välilyönti tai return asettaaksesi raideosa paikalleen tai esc peruuttaaksesi"
-
-#: ../bin/cstruct.c:820
-msgid "Drag to place"
-msgstr "Raahaa paikoilleen"
-
-#: ../bin/cstruct.c:842
-msgid "Drag to rotate"
-msgstr "Raahaa pyörittääksesi"
-
-#: ../bin/cstruct.c:862
-#, c-format
-msgid "Angle = %0.3f"
-msgstr "Kulma = %0.3f"
-
-#: ../bin/cstruct.c:952
-msgid "Select Structure and then drag to place"
-msgstr "Valitse rakennus ja raahaa paikoilleen"
-
-#: ../bin/cstruct.c:990
-msgid ""
-"Left drag to move, right drag to rotate, or press Return or click Ok to "
-"finalize"
-msgstr ""
-"Siirrä raahaamalla hiiren vasemmalla, pyöritä rahaamalla hiiren oikealla, "
-"tai paina return tai klikkaa Ok kun valmis"
-
-#: ../bin/cstruct.c:1073 ../bin/cturnout.c:3039
-#, c-format
-msgid "Place %s and draw into position"
-msgstr "Aseta %s ja raahaa paikoilleen"
-
-#: ../bin/cswitchmotor.c:96 ../bin/cswitchmotor.c:115
-#: ../bin/cswitchmotor.c:227
-#, fuzzy
-msgid "Point Sense"
-msgstr "Pisteitä"
-
-#: ../bin/cswitchmotor.c:116
-#, fuzzy
-msgid "Turnout Number"
-msgstr "Tuotekoodi"
-
-#: ../bin/cswitchmotor.c:292
-#, fuzzy
-msgid "Change Switch Motor"
-msgstr "Muuta suuntaa"
-
-#: ../bin/cswitchmotor.c:359
-msgid "Switch motor"
-msgstr ""
-
-#: ../bin/cswitchmotor.c:475
-#, c-format
-msgid "ResolveSwitchmotor: Turnout T%d: T%d doesn't exist"
-msgstr ""
-
-#: ../bin/cswitchmotor.c:544 ../bin/cswitchmotor.c:714
-msgid "Switch motor must have a name!"
-msgstr ""
-
-#: ../bin/cswitchmotor.c:548
-#, fuzzy
-msgid "Create Switch Motor"
-msgstr "Piirto"
-
-#: ../bin/cswitchmotor.c:580
-#, fuzzy
-msgid "Create switch motor"
-msgstr "Luo suora raideosa"
-
-#: ../bin/cswitchmotor.c:594 ../bin/cswitchmotor.c:625
-#: ../bin/cswitchmotor.c:657
-#, fuzzy
-msgid "Select a turnout"
-msgstr "Ensin valitsemme vaihteen.\n"
-
-#: ../bin/cswitchmotor.c:601
-msgid "Not a turnout!"
-msgstr ""
-
-#: ../bin/cswitchmotor.c:634 ../bin/cswitchmotor.c:665
-msgid "Not a switch motor!"
-msgstr ""
-
-#: ../bin/cswitchmotor.c:670
-#, c-format
-msgid "Really delete switch motor %s?"
-msgstr ""
-
-#: ../bin/cswitchmotor.c:671
-msgid "Delete Switch Motor"
-msgstr ""
-
-#: ../bin/cswitchmotor.c:718
-msgid "Modify Switch Motor"
-msgstr ""
-
-#: ../bin/cswitchmotor.c:744
-msgid "Edit switch motor"
-msgstr ""
-
-#: ../bin/cswitchmotor.c:750
-#, c-format
-msgid "Edit switch motor %d"
-msgstr ""
-
-#: ../bin/cswitchmotor.c:858
-msgid "Switch Motor"
-msgstr ""
-
-#: ../bin/cswitchmotor.c:871
-#, c-format
-msgid "Deleting Switch Motor %s"
-msgstr ""
-
-#: ../bin/ctext.c:195 ../bin/ctext.c:234
-msgid "Create Text"
-msgstr "Luo teksti"
-
-#: ../bin/ctext.c:264
-msgid "Fonts..."
-msgstr "Kirjasimet..."
-
-#: ../bin/ctodesgn.c:139
-msgid "Frog #"
-msgstr "Risteysnumero"
-
-#: ../bin/ctodesgn.c:139
-msgid "Degrees"
-msgstr "Astetta"
-
-#: ../bin/ctodesgn.c:140
-msgid "Dual Path"
-msgstr ""
-
-#: ../bin/ctodesgn.c:140
-#, fuzzy
-msgid "Quad Path"
-msgstr " ja malli"
-
-#: ../bin/ctodesgn.c:175 ../bin/ctodesgn.c:176 ../bin/ctodesgn.c:177
-#: ../bin/ctodesgn.c:178 ../bin/ctodesgn.c:238 ../bin/ctodesgn.c:261
-#: ../bin/ctodesgn.c:263 ../bin/ctodesgn.c:298 ../bin/ctodesgn.c:301
-#: ../bin/ctodesgn.c:327 ../bin/ctodesgn.c:328 ../bin/ctodesgn.c:364
-#: ../bin/ctodesgn.c:367 ../bin/ctodesgn.c:393 ../bin/ctodesgn.c:395
-#: ../bin/ctodesgn.c:434 ../bin/ctodesgn.c:438 ../bin/ctodesgn.c:441
-#: ../bin/ctodesgn.c:653
-msgid "Offset"
-msgstr "Siirtymä"
-
-#: ../bin/ctodesgn.c:196 ../bin/ctodesgn.c:2911 ../bin/ctodesgn.c:2912
-msgid "Left Description"
-msgstr "Vasemman kuvaus"
-
-#: ../bin/ctodesgn.c:197 ../bin/ctodesgn.c:200
-msgid " #"
-msgstr " #"
-
-#: ../bin/ctodesgn.c:199 ../bin/ctodesgn.c:2910
-msgid "Right Description"
-msgstr "Oikean kuvaus"
-
-#: ../bin/ctodesgn.c:201
-msgid "Roadbed Width"
-msgstr "Ratapenkan leveys"
-
-#: ../bin/ctodesgn.c:205 ../bin/denum.c:56
-msgid "Print Setup"
-msgstr "Tulostusasetukset"
-
-#: ../bin/ctodesgn.c:236
-msgid "Diverging Length"
-msgstr "Poikkeavan raiteen pituus"
-
-#: ../bin/ctodesgn.c:237
-msgid "Diverging Angle"
-msgstr "Poikkeavan raiteen kulma"
-
-#: ../bin/ctodesgn.c:238
-msgid "Diverging Offset"
-msgstr "Poikkeavan raiteen siirtymä"
-
-#: ../bin/ctodesgn.c:239
-msgid "Overall Length"
-msgstr "Kokonaispituus"
-
-#: ../bin/ctodesgn.c:249
-msgid "Regular Turnout"
-msgstr "Tavallinen vaihde"
-
-#: ../bin/ctodesgn.c:259 ../bin/ctodesgn.c:296
-msgid "Inner Length"
-msgstr "Sisemmän raiteen pituus"
-
-#: ../bin/ctodesgn.c:260 ../bin/ctodesgn.c:297
-msgid "Inner Angle"
-msgstr "Sisemmän raiteen kulma"
-
-#: ../bin/ctodesgn.c:261 ../bin/ctodesgn.c:298
-msgid "Inner Offset"
-msgstr "Sisemmän raiteen siirtymä"
-
-#: ../bin/ctodesgn.c:262 ../bin/ctodesgn.c:300
-msgid "Outer Angle"
-msgstr "Ulomman raiteen kulma"
-
-#: ../bin/ctodesgn.c:263 ../bin/ctodesgn.c:301
-msgid "Outer Offset"
-msgstr "Ulomman raiteen siirtymä"
-
-#: ../bin/ctodesgn.c:264 ../bin/ctodesgn.c:303
-msgid "Outer Length"
-msgstr "Ulomman raiteen pituus"
-
-#: ../bin/ctodesgn.c:286
-msgid "Curved Turnout"
-msgstr "Kaareva vaihde"
-
-#: ../bin/ctodesgn.c:299
-#, fuzzy
-msgid "Inner Radius"
-msgstr "Helixin säde"
-
-#: ../bin/ctodesgn.c:302
-#, fuzzy
-msgid "Outer Radius"
-msgstr "Helixin säde"
-
-#: ../bin/ctodesgn.c:304 ../bin/ctodesgn.c:371 ../bin/ctodesgn.c:446
-#, fuzzy
-msgid "Toe Radius"
-msgstr "Säde"
-
-#: ../bin/ctodesgn.c:305 ../bin/ctodesgn.c:370
-#, fuzzy
-msgid "Toe Length"
-msgstr "Kokonaispituus"
-
-#: ../bin/ctodesgn.c:315
-#, fuzzy
-msgid "Cornu Curved Turnout"
-msgstr "Kaareva vaihde"
-
-#: ../bin/ctodesgn.c:325 ../bin/ctodesgn.c:362 ../bin/ctodesgn.c:391
-#: ../bin/ctodesgn.c:432
-msgid "Left Length"
-msgstr "Vasemman raiteen pituus"
-
-#: ../bin/ctodesgn.c:326 ../bin/ctodesgn.c:363 ../bin/ctodesgn.c:392
-#: ../bin/ctodesgn.c:433
-msgid "Left Angle"
-msgstr "Vasemman raiteen kulma"
-
-#: ../bin/ctodesgn.c:327 ../bin/ctodesgn.c:364 ../bin/ctodesgn.c:393
-#: ../bin/ctodesgn.c:434
-msgid "Left Offset"
-msgstr "Vasemman raiteen siirtymä"
-
-#: ../bin/ctodesgn.c:328 ../bin/ctodesgn.c:367 ../bin/ctodesgn.c:395
-#: ../bin/ctodesgn.c:441
-msgid "Right Offset"
-msgstr "Oikean raiteen siirtymä"
-
-#: ../bin/ctodesgn.c:329 ../bin/ctodesgn.c:368 ../bin/ctodesgn.c:396
-#: ../bin/ctodesgn.c:442
-msgid "Right Angle"
-msgstr "Oikean raiteen kulma"
-
-#: ../bin/ctodesgn.c:330 ../bin/ctodesgn.c:369 ../bin/ctodesgn.c:397
-#: ../bin/ctodesgn.c:443
-msgid "Right Length"
-msgstr "Oikean raiteen pituus"
-
-#: ../bin/ctodesgn.c:352
-msgid "Wye Turnout"
-msgstr "Y-vaihde"
-
-#: ../bin/ctodesgn.c:365 ../bin/ctodesgn.c:435
-#, fuzzy
-msgid "Left Radius"
-msgstr "Säde"
-
-#: ../bin/ctodesgn.c:366 ../bin/ctodesgn.c:440
-#, fuzzy
-msgid "Right Radius"
-msgstr "Helixin säde"
-
-#: ../bin/ctodesgn.c:381
-#, fuzzy
-msgid "Cornu Wye Turnout"
-msgstr "Y-vaihde"
-
-#: ../bin/ctodesgn.c:422
-msgid "3-way Turnout"
-msgstr "3-tie vaihde"
-
-#: ../bin/ctodesgn.c:436
-#, fuzzy
-msgid "Center Length"
-msgstr "Sisemmän raiteen pituus"
-
-#: ../bin/ctodesgn.c:437
-#, fuzzy
-msgid "Center Angle"
-msgstr "Sisemmän raiteen kulma"
-
-#: ../bin/ctodesgn.c:438 ../bin/dcar.c:2238
-#, fuzzy
-msgid "Center Offset"
-msgstr "Sisemmän raiteen siirtymä"
-
-#: ../bin/ctodesgn.c:439
-#, fuzzy
-msgid "Center Radius"
-msgstr "Ympyrän säde"
-
-#: ../bin/ctodesgn.c:444
-#, fuzzy
-msgid "Toe Length Left"
-msgstr "Kokonaispituus"
-
-#: ../bin/ctodesgn.c:445
-#, fuzzy
-msgid "Toe Length Right"
-msgstr "Kokonaispituus"
-
-#: ../bin/ctodesgn.c:457
-#, fuzzy
-msgid "Cornu 3-way Turnout"
-msgstr "3-tie vaihde"
-
-#: ../bin/ctodesgn.c:477
-msgid "Crossing"
-msgstr "Risteys"
-
-#: ../bin/ctodesgn.c:498
-msgid "Single Slipswitch"
-msgstr "Yksipuolinen risteysvaihde"
-
-#: ../bin/ctodesgn.c:527
-msgid "Double Slipswitch"
-msgstr "Kaksipuolinen risteysvaihde"
-
-#: ../bin/ctodesgn.c:547
-msgid "Right Crossover"
-msgstr "Raiteenvaihto oikealle"
-
-#: ../bin/ctodesgn.c:567
-msgid "Left Crossover"
-msgstr "Raiteenvaihto vasemmalle"
-
-#: ../bin/ctodesgn.c:587
-msgid "Double Crossover"
-msgstr "Sovitettu raideristeys"
-
-#: ../bin/ctodesgn.c:605
-msgid "Straight Section"
-msgstr "Suora raideosa"
-
-#: ../bin/ctodesgn.c:616
-msgid "Angle (Degrees)"
-msgstr "Kulma (asteina)"
-
-#: ../bin/ctodesgn.c:624
-msgid "Curved Section"
-msgstr "Kaareva raideosa"
-
-#: ../bin/ctodesgn.c:643
-msgid "Bumper Section"
-msgstr "Puskuri raideosa"
-
-#: ../bin/ctodesgn.c:653 ../bin/denum.c:123 ../bin/denum.c:186
-#: ../bin/denum.c:218 ../bin/denum.c:219 ../bin/dlayer.c:497
-msgid "Count"
-msgstr "Lukumäärä"
-
-#: ../bin/ctodesgn.c:654
-msgid "Radius1"
-msgstr "Säde1"
-
-#: ../bin/ctodesgn.c:655
-msgid "Radius2"
-msgstr "Säde2"
-
-#: ../bin/ctodesgn.c:735
-msgid "Turntable Section"
-msgstr "Kääntöpöytä"
-
-#: ../bin/ctodesgn.c:2538
-#, c-format
-msgid "%s Designer"
-msgstr "%s - suunnittelu"
-
-#: ../bin/ctodesgn.c:2542
-#, c-format
-msgid "%s %d x %d (of %d x %d)"
-msgstr ""
-
-#: ../bin/ctodesgn.c:2542
-msgid "Page"
-msgstr "Sivu"
-
-#: ../bin/ctodesgn.c:2550
-msgid "Frog Number"
-msgstr "Risteysnumero"
-
-#: ../bin/ctodesgn.c:2864
-msgid "Turnout Designer"
-msgstr "Raideosien suunnittelu"
-
-#: ../bin/ctodesgn.c:2874
-#, c-format
-msgid "%s %s Designer"
-msgstr "%s %s - suunnittelu"
-
-#: ../bin/ctrain.c:182 ../bin/dcar.c:2250 ../bin/dcar.c:4367
-#: ../bin/dcar.c:4372
-msgid "Index"
-msgstr "Indeksi"
-
-#: ../bin/ctrain.c:188 ../bin/dcar.c:4368
-msgid "Rep Marks"
-msgstr "Tunnus"
-
-#: ../bin/ctrain.c:272
-msgid "Car"
-msgstr "Vaunu"
-
-#: ../bin/ctrain.c:656
-msgid "Follow"
-msgstr "Seuraa"
-
-#: ../bin/ctrain.c:657
-msgid "Auto Reverse"
-msgstr "Automaattinen peruutus"
-
-#: ../bin/ctrain.c:676 ../bin/dcar.c:5257
-msgid "Find"
-msgstr "Etsi"
-
-#: ../bin/ctrain.c:682 ../bin/ctrain.c:941 ../bin/ctrain.c:1248
-#: ../wlib/gtklib/ixhelp.c:239
-msgid "Forward"
-msgstr "Eteen"
-
-#: ../bin/ctrain.c:684 ../bin/ctrain.c:3123 ../bin/dcar.c:4706
-#: ../bin/dcar.c:4716 ../bin/dcar.c:4836 ../bin/fileio.c:241 ../bin/macro.c:92
-#: ../bin/macro.c:898
-msgid "Stop"
-msgstr "Pysäytä"
-
-#: ../bin/ctrain.c:882 ../bin/ctrain.c:911
-msgid "Crashed"
-msgstr "Törmännyt"
-
-#: ../bin/ctrain.c:884
-msgid "Not on Track"
-msgstr "Ei raiteilla"
-
-#: ../bin/ctrain.c:888
-msgid "Trains Paused"
-msgstr "Junat pysäytetty"
-
-#: ../bin/ctrain.c:890
-msgid "Running"
-msgstr "Liikkeellä"
-
-#: ../bin/ctrain.c:895
-msgid "End of Track"
-msgstr "Rata loppu"
-
-#: ../bin/ctrain.c:899
-msgid "Open Turnout"
-msgstr "Avoin vaihde"
-
-#: ../bin/ctrain.c:903
-msgid "Manual Stop"
-msgstr "Pysäytetty"
-
-#: ../bin/ctrain.c:907
-msgid "No Room"
-msgstr "Ei tilaa"
-
-#: ../bin/ctrain.c:915
-msgid "Unknown Status"
-msgstr "Tuntematon tila"
-
-#: ../bin/ctrain.c:925
-msgid "No trains"
-msgstr "Ei junia"
-
-#: ../bin/ctrain.c:1299
-msgid "Train Control XXX"
-msgstr "Junien hallinta XXX"
-
-#: ../bin/ctrain.c:1300
-#, c-format
-msgid "Train Control %d"
-msgstr "Junien hallinta %d"
-
-#: ../bin/ctrain.c:1302
-msgid "Train Control"
-msgstr "Junien hallinta"
-
-#: ../bin/ctrain.c:3096
-msgid "Train"
-msgstr "Aja junilla"
-
-#: ../bin/ctrain.c:3109
-msgid "Uncouple"
-msgstr "Irrota"
-
-#: ../bin/ctrain.c:3111
-msgid "Flip Car"
-msgstr "Käännä vaunu"
-
-#: ../bin/ctrain.c:3113
-#, fuzzy
-msgid "Clearance Lines On"
-msgstr "Luo viivoja"
-
-#: ../bin/ctrain.c:3115
-#, fuzzy
-msgid "Clearance Lines Off"
-msgstr "Luo viivoja"
-
-#: ../bin/ctrain.c:3117
-msgid "Flip Train"
-msgstr "Käännä juna"
-
-#: ../bin/ctrain.c:3119
-msgid "MU Master"
-msgstr "Vetovastuussa"
-
-#: ../bin/ctrain.c:3122
-msgid "Change Direction"
-msgstr "Muuta suuntaa"
-
-#: ../bin/ctrain.c:3126
-#, fuzzy
-msgid "Remove Car"
-msgstr "Poista vaunu"
-
-#: ../bin/ctrain.c:3129
-#, fuzzy
-msgid "Remove Train"
-msgstr "Poista juna"
-
-#: ../bin/cturnout.c:95 ../bin/dcar.c:2272 ../bin/dcar.c:2276
-msgid "New"
-msgstr "Uusi"
-
-#: ../bin/cturnout.c:368
-#, c-format
-msgid "Turnout path[%d:%d] out of bounds: %d"
-msgstr ""
-
-#: ../bin/cturnout.c:379 ../bin/cturnout.c:389
-#, c-format
-msgid "Turnout path[%d] %d is not a valid track segment"
-msgstr ""
-
-#: ../bin/cturnout.c:399 ../bin/cturnout.c:404
-#, c-format
-msgid "Turnout path[%d] %d is not a track segment"
-msgstr ""
-
-#: ../bin/cturnout.c:412
-#, c-format
-msgid "Turnout path[%d] %d-%d not connected: %0.3f P0(%f,%f) P1(%f,%f)"
-msgstr ""
-
-#: ../bin/cturnout.c:450
-msgid "Unknown special case"
-msgstr "Tuntematon erikoistapaus"
-
-#: ../bin/cturnout.c:560
-msgid "Connect Adjustable Tracks"
-msgstr "Yhdistä säädettävä raide"
-
-#: ../bin/cturnout.c:1096
-msgid "splitTurnout: can't find segment"
-msgstr "Pilko: Lohkoja ei löytynyt."
-
-#: ../bin/cturnout.c:1522 ../bin/track.c:2259 ../bin/track.c:2365
-#: ../bin/tstraigh.c:554
-msgid "Drag to change track length"
-msgstr "Vedä muuttaaksesi raideosan pituutta"
-
-#: ../bin/cturnout.c:1533
-#, c-format
-msgid "Length=%s"
-msgstr "Pituus=%s"
-
-#: ../bin/cturnout.c:2344
-#, c-format
-msgid "%d connections, max distance %0.3f (%s)"
-msgstr "%d liitosta, suurin etäisyys %0.3f (%s)"
-
-#: ../bin/cturnout.c:2349
-#, c-format
-msgid "0 connections (%s)"
-msgstr "0 liitosta (%s)"
-
-#: ../bin/cturnout.c:2389
-msgid "Place New Turnout"
-msgstr "Aseta uusi vaihde"
-
-#: ../bin/cturnout.c:2798
-#, c-format
-msgid "Angle = %0.3f (%s)"
-msgstr "Kulma = %0.3f (%s)"
-
-#: ../bin/cturnout.c:2888 ../bin/param.c:2618
-msgid "Close"
-msgstr "Sulje"
-
-#: ../bin/cturnout.c:2905
-msgid "Pick turnout and active End Point, then place on the layout"
-msgstr ""
-"Valitse ensin vaihde ja aktiivinen päätepiste ja aseta sitten paikoilleen"
-
-#: ../bin/cturnout.c:3099
-#, fuzzy
-msgid "Predefined Track"
-msgstr "Valitut raiteet"
-
-#: ../bin/cturntbl.c:52 ../bin/cturntbl.c:251 ../bin/cturntbl.c:857
-#: ../bin/cturntbl.c:871
-msgid "Diameter"
-msgstr "Halkaisija"
-
-#: ../bin/cturntbl.c:252
-msgid "# EndPt"
-msgstr "Päätepisteitä"
-
-#: ../bin/cturntbl.c:286
-#, c-format
-msgid "Turntable(%d): Layer=%d Center=[%s %s] Diameter=%s #EP=%d"
-msgstr ""
-"Kääntöpöytä(%d): Taso=%d Keskipiste=[%s %s] Halkaisija=%s Päätepisteitä=%d"
-
-#: ../bin/cturntbl.c:301
-msgid "Turntable"
-msgstr "Kääntöpöytä"
-
-#: ../bin/cturntbl.c:565
-msgid "Drag to create stall track"
-msgstr "Vedä luodaksesi lähtevän raiteen"
-
-#: ../bin/cturntbl.c:618
-#, fuzzy
-msgid "Connect Turntable Tracks"
-msgstr "Yhdistä säädettävä raide"
-
-#: ../bin/cturntbl.c:885
-msgid "Create Turntable"
-msgstr "Luo kääntöpöytä"
-
-#: ../bin/cturntbl.c:916
-#, fuzzy
-msgid "Custom Turntable"
-msgstr "Luo kääntöpöytä"
-
-#: ../bin/cundo.c:166
-msgid "Undo Trace"
-msgstr "Jäljitys"
-
-#: ../bin/cundo.c:536
-#, c-format
-msgid "Undo: %s"
-msgstr "Kumoa: %s"
-
-#: ../bin/cundo.c:539 ../../../../build/work/app/bin/bllnhlp.c:158
-msgid "Undo last command"
-msgstr "Kumoa edellinen komento"
-
-#: ../bin/cundo.c:544
-#, c-format
-msgid "Redo: %s"
-msgstr "Tee uudelleen: %s"
-
-#: ../bin/cundo.c:547 ../../../../build/work/app/bin/bllnhlp.c:124
-msgid "Redo last undo"
-msgstr "Tee uudelleen"
-
-#: ../bin/custom.c:167
-#, c-format
-msgid "%s Turnout Designer"
-msgstr "%s Vaihteiden suunnittelu"
-
-#: ../bin/custom.c:172
-#, c-format
-msgid "%s Version %s"
-msgstr "%s versio %s"
-
-#: ../bin/custom.c:177
-#, c-format
-msgid ""
-"All %s Files (*.xtc,*.xtce)|*.xtc;*.xtce|%s Trackplan (*.xtc)|*.xtc|%s "
-"Extended Trackplan (*.xtce)|*.xtce|All Files (*)|*"
-msgstr ""
-
-#: ../bin/custom.c:188
-#, c-format
-msgid ""
-"%s Trackplan (*.xtc)|*.xtc|%s Extended Trackplan (*.xtce)|*.xtce|All Files "
-"(*)|*"
-msgstr ""
-
-#: ../bin/custom.c:197
-#, c-format
-msgid "All Files (*)|*"
-msgstr ""
-
-#: ../bin/custom.c:202
-#, fuzzy, c-format
-msgid "%s Import Files (*.xti)|*.xti"
-msgstr "%s Tuotavat tiedostot|*.%sti"
-
-#: ../bin/custom.c:207
-msgid "Data Exchange Format Files (*.dxf)|*.dxf"
-msgstr ""
-
-#: ../bin/custom.c:211
-#, fuzzy, c-format
-msgid "%s Record Files (*.xtr)|*.xtr"
-msgstr "%s Nauhoitustiedostot|*.%str"
-
-#: ../bin/custom.c:216
-#, fuzzy, c-format
-msgid "%s Note Files (*.not)|*.not"
-msgstr "%s Muistiinpanot|*.not"
-
-#: ../bin/custom.c:221
-#, fuzzy, c-format
-msgid "%s Log Files (*.log)|*.log"
-msgstr "%s Lokitiedostot|*.log"
-
-#: ../bin/custom.c:226
-#, fuzzy, c-format
-msgid "%s PartsList Files (*.txt)|*.txt"
-msgstr "%s Osaluetelotiedostot|*.log"
-
-#: ../bin/dbench.c:43
-msgid " L-Girder"
-msgstr "L-palkki"
-
-#: ../bin/dbench.c:43
-msgid " T-Girder"
-msgstr "T-palkki"
-
-#: ../bin/dbench.c:66
-msgid "On Edge"
-msgstr "Pysty"
-
-#: ../bin/dbench.c:67
-msgid "Flat"
-msgstr "Vaaka"
-
-#: ../bin/dbench.c:71
-msgid "Left-Down"
-msgstr "Vasen-Alas"
-
-#: ../bin/dbench.c:72
-msgid "Right-Down"
-msgstr "Oikea-Alas"
-
-#: ../bin/dbench.c:73
-msgid "Left-Up"
-msgstr "Vasen-Ylös"
-
-#: ../bin/dbench.c:74
-msgid "Right-Up"
-msgstr "Oikea-Ylös"
-
-#: ../bin/dbench.c:75
-msgid "Left-Inverted"
-msgstr "Vasen-Käännetty"
-
-#: ../bin/dbench.c:76
-msgid "Right-Inverted"
-msgstr "Oikea-Käännetty"
-
-#: ../bin/dbench.c:81
-msgid "Inverted"
-msgstr "Käännetty"
-
-#: ../bin/dbench.c:147
-#, c-format
-msgid ""
-"Bad BenchType for %s:\n"
-"%s"
-msgstr ""
-"Väärä runkotyyppi %s:lle:\n"
-"%s"
-
-#: ../bin/dbitmap.c:102 ../bin/dbitmap.c:106
-msgid "Drawn with "
-msgstr "Suunnitteluohjelma: "
-
-#: ../bin/dbitmap.c:116
-msgid "Drawing tracks to BitMap"
-msgstr "Piirretään raiteet bitmap:ksi"
-
-#: ../bin/dbitmap.c:123
-msgid "Writing BitMap to file"
-msgstr "Kirjoitetaan bitmap tiedostoon"
-
-#: ../bin/dbitmap.c:144
-msgid "Print Titles"
-msgstr "Tulosta otsikot"
-
-#: ../bin/dbitmap.c:144
-msgid "Print Borders"
-msgstr "Tulosta kehys"
-
-#: ../bin/dbitmap.c:145
-msgid "Print Centerline"
-msgstr "Tulosta keskiviiva"
-
-#: ../bin/dbitmap.c:152
-msgid " dpi"
-msgstr " dpi"
-
-#: ../bin/dbitmap.c:154
-msgid "Bitmap : 99999 by 99999 pixels"
-msgstr "Bitmap : 99999 x 99999 pikseliä"
-
-#: ../bin/dbitmap.c:156
-msgid "Approximate file size: 999.9Mb"
-msgstr "Arvioitu tiedostokoko: 999.9Mt"
-
-#: ../bin/dbitmap.c:186
-#, c-format
-msgid "Bitmap : %ld by %ld pixels"
-msgstr "Bitmap : %ld x %ld pikseliä"
-
-#: ../bin/dbitmap.c:190
-#, c-format
-msgid "Approximate file size : %0.0f"
-msgstr "Arvioitu tiedostokoko: %0.0f"
-
-#: ../bin/dbitmap.c:192
-#, c-format
-msgid "Approximate file size : %0.1fKb"
-msgstr "Arvioitu tiedostokoko: %0.1fKt"
-
-#: ../bin/dbitmap.c:194
-#, c-format
-msgid "Approximate file size : %0.1fMb"
-msgstr "Arvioitu tiedostokoko: %0.1fMt"
-
-#: ../bin/dbitmap.c:213
-msgid "Save Bitmap"
-msgstr "Tallenna bitmap"
-
-#: ../bin/dbitmap.c:217
-#, fuzzy
-msgid "Bitmap files (*.png)|*.png"
-msgstr "Bitmap kuvatiedostot|*.bmp"
-
-#: ../bin/dbitmap.c:238
-msgid "BitMap"
-msgstr "BitMap"
-
-#: ../bin/dcar.c:54
-msgid "Truck"
-msgstr "Teli"
-
-#: ../bin/dcar.c:54
-msgid "Body"
-msgstr "Runko"
-
-#: ../bin/dcar.c:156 ../bin/dcar.c:2702 ../bin/dcar.c:2706
-msgid "Unknown"
-msgstr "Tuntematon"
-
-#: ../bin/dcar.c:478
-msgid "Diesel Loco"
-msgstr "Dieselveturi"
-
-#: ../bin/dcar.c:479
-msgid "Steam Loco"
-msgstr "Höyryveturi"
-
-#: ../bin/dcar.c:480
-msgid "Elect Loco"
-msgstr "Sähköveturi"
-
-#: ../bin/dcar.c:481
-msgid "Freight Car"
-msgstr "Tavaravaunu"
-
-#: ../bin/dcar.c:482
-msgid "Psngr Car"
-msgstr "Matkustajavaunu"
-
-#: ../bin/dcar.c:483
-msgid "M-O-W"
-msgstr "Työkone"
-
-#: ../bin/dcar.c:484
-msgid "Other"
-msgstr "Muut"
-
-#: ../bin/dcar.c:1183 ../bin/dcar.c:5078
-msgid "N/A"
-msgstr "Ei tiedossa"
-
-#: ../bin/dcar.c:1184 ../bin/dcar.c:5083
-msgid "Mint"
-msgstr "Loistava"
-
-#: ../bin/dcar.c:1185 ../bin/dcar.c:5082
-msgid "Excellent"
-msgstr "Erinomainen"
-
-#: ../bin/dcar.c:1186 ../bin/dcar.c:5081
-msgid "Good"
-msgstr "Hyvä"
-
-#: ../bin/dcar.c:1187 ../bin/dcar.c:5080
-msgid "Fair"
-msgstr "Tyydyttävä"
-
-#: ../bin/dcar.c:1188 ../bin/dcar.c:5079
-msgid "Poor"
-msgstr "Huono"
-
-#: ../bin/dcar.c:1502 ../bin/dpricels.c:45
-#: ../../../../build/work/app/bin/bllnhlp.c:440
-msgid "Item"
-msgstr "Tuote"
-
-#: ../bin/dcar.c:2174 ../wlib/gtklib/notice.c:96 ../wlib/mswlib/mswmisc.c:2097
-msgid "Information"
-msgstr "Tiedot"
-
-#: ../bin/dcar.c:2174
-msgid "Customize"
-msgstr "Mukauta"
-
-#: ../bin/dcar.c:2186
-msgid "Sequential"
-msgstr "Peräkkäinen"
-
-#: ../bin/dcar.c:2186
-msgid "Repeated"
-msgstr "Sama"
-
-#: ../bin/dcar.c:2197 ../bin/dcar.c:2199 ../bin/dcar.c:5408
-msgid "Prototype"
-msgstr "Esikuva"
-
-#: ../bin/dcar.c:2205
-msgid "Part"
-msgstr "Tuote"
-
-#: ../bin/dcar.c:2207 ../../../../build/work/app/bin/bllnhlp.c:372
-#: ../../../../build/work/app/bin/bllnhlp.c:568
-#: ../../../../build/work/app/bin/bllnhlp.c:569
-msgid "Part Number"
-msgstr "Tuotekoodi"
-
-#: ../bin/dcar.c:2209
-msgid "Loco?"
-msgstr "Veturi?"
-
-#: ../bin/dcar.c:2213 ../bin/dcar.c:4405
-msgid "Import"
-msgstr "Tuo tiedostosta"
-
-#: ../bin/dcar.c:2220
-msgid "Mode"
-msgstr "Tila"
-
-#: ../bin/dcar.c:2224
-msgid "Road"
-msgstr "Yhtiö"
-
-#: ../bin/dcar.c:2226
-msgid "Reporting Mark"
-msgstr "Yhtiön tunnus"
-
-#: ../bin/dcar.c:2228
-msgid "Number"
-msgstr "Numero"
-
-#: ../bin/dcar.c:2232
-msgid "Car Length"
-msgstr "Pituus"
-
-#: ../bin/dcar.c:2236
-msgid "Truck Centers"
-msgstr "Telien keskikohdat"
-
-#: ../bin/dcar.c:2240
-msgid "Coupler Mount"
-msgstr "Kytkimien sijoitus"
-
-#: ../bin/dcar.c:2242
-msgid "Coupled Length"
-msgstr "Pituus kytkimineen"
-
-#: ../bin/dcar.c:2244 ../bin/dcar.c:4252
-msgid "Coupler Length"
-msgstr "Kytkinten ulkonema"
-
-#: ../bin/dcar.c:2252
-msgid "Purchase Price"
-msgstr "Ostohinta"
-
-#: ../bin/dcar.c:2254 ../../../../build/work/app/bin/bllnhlp.c:236
-msgid "Current Price"
-msgstr "Nykyinen hinta"
-
-#: ../bin/dcar.c:2256 ../bin/dcar.c:4369 ../bin/dcar.c:4374
-msgid "Condition"
-msgstr "Kunto"
-
-#: ../bin/dcar.c:2258
-msgid "Purchase Date"
-msgstr "Ostopäivä"
-
-#: ../bin/dcar.c:2260 ../bin/dcar.c:4374
-msgid "Service Date"
-msgstr "Huollettu"
-
-#: ../bin/dcar.c:2262
-msgid "Quantity"
-msgstr "Määrä"
-
-#: ../bin/dcar.c:2264
-msgid "Numbers"
-msgstr "Numerot"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:371
-#: ../bin/dcar.c:2266 ../bin/dcar.c:4370 ../bin/trknote.c:708
-#: ../../../../build/work/app/i18n/custmsg.h:1265
-msgid "Notes"
-msgstr "Muistiinpanot"
-
-#: ../bin/dcar.c:2273
-msgid "Car Part"
-msgstr "Malli"
-
-#: ../bin/dcar.c:2274 ../../../../build/work/app/bin/bllnhlp.c:210
-#: ../../../../build/work/app/bin/bllnhlp.c:211
-msgid "Car Prototype"
-msgstr "Esikuva"
-
-#: ../bin/dcar.c:2636 ../bin/dcar.c:2953
-msgid "Undecorated"
-msgstr "Ei yhtiömerkintöjä"
-
-#: ../bin/dcar.c:2694 ../bin/dcar.c:2698 ../bin/paramfilelist.c:376
-msgid "Custom"
-msgstr "Itse rakennettu"
-
-#: ../bin/dcar.c:2863
-msgid "Undecorated "
-msgstr "Ei yhtiömerkintöjä "
-
-#: ../bin/dcar.c:3085
-#, c-format
-msgid "New %s Scale Car"
-msgstr "Uusi %s mittakaavan vaunu/veturi"
-
-#: ../bin/dcar.c:3086 ../bin/dcar.c:3095 ../bin/dcar.c:3104 ../bin/dcar.c:4285
-#: ../bin/dcar.c:4401 ../bin/paramfilesearch_ui.c:74
-msgid "Add"
-msgstr "Lisää"
-
-#: ../bin/dcar.c:3088
-#, c-format
-msgid "Update %s Scale Car"
-msgstr "Päivitä %s mittakaavan vaunu"
-
-#: ../bin/dcar.c:3089 ../bin/dcar.c:3098 ../bin/dcar.c:3107
-#: ../bin/dcmpnd.c:173
-msgid "Update"
-msgstr "Päivitä"
-
-#: ../bin/dcar.c:3094
-#, c-format
-msgid "New %s Scale Car Part"
-msgstr "Uusi %s mittakaavan vaunu/veturi"
-
-#: ../bin/dcar.c:3097
-#, c-format
-msgid "Update %s Scale Car Part"
-msgstr "Päivitä %s mittakaavan vaunu"
-
-#: ../bin/dcar.c:3103
-msgid "New Prototype"
-msgstr "Uusi esikuva"
-
-#: ../bin/dcar.c:3106
-msgid "Update Prototype"
-msgstr "Päivitä esikuva"
-
-#: ../bin/dcar.c:3778
-msgid "Enter a 8 digit numeric date"
-msgstr "Syötä 8 numeroinen päiväys"
-
-#: ../bin/dcar.c:3781
-msgid "Enter a 8 digit date"
-msgstr "Syötä 8 numeroinen päiväys"
-
-#: ../bin/dcar.c:3783
-msgid "Enter a date between 19000101 and 21991231"
-msgstr "Syötä päivämärä %s ja %s väliltä"
-
-#: ../bin/dcar.c:3788
-msgid "Invalid month"
-msgstr "Epäkelpo kuukausi"
-
-#: ../bin/dcar.c:3790
-msgid "Invalid day"
-msgstr "Epäkelpo päivä"
-
-#: ../bin/dcar.c:3882
-msgid "Enter a Prototype name"
-msgstr "Syötä esikuvan nimi"
-
-#: ../bin/dcar.c:3884
-msgid "Select or Enter a Manufacturer"
-msgstr "Valitse tai syötä valmistaja"
-
-#: ../bin/dcar.c:3886
-msgid "Enter a Part Number"
-msgstr "Syötä tuotekoodi"
-
-#: ../bin/dcar.c:3888
-msgid "Enter the Car Length"
-msgstr "Syötä vaunun pituus"
-
-#: ../bin/dcar.c:3890
-msgid "Enter the Car Width"
-msgstr "Syötä vaunun leveys"
-
-#: ../bin/dcar.c:3892
-msgid "Enter the Truck Centers"
-msgstr "Syötä telien keskipisteiden etäisyys"
-
-#: ../bin/dcar.c:3894
-#, fuzzy
-msgid "Truck Center Offset must be greater than 0 or 0"
-msgstr ""
-"Telien keskikohtien välisen etäisyyden on oltava vaunun pituutta pienempi"
-
-#: ../bin/dcar.c:3896
-msgid "Truck Centers must be less than Car Length"
-msgstr ""
-"Telien keskikohtien välisen etäisyyden on oltava vaunun pituutta pienempi"
-
-#: ../bin/dcar.c:3898
-#, fuzzy
-msgid "Truck Center Offset plus Truck Centers must be less than Car Length"
-msgstr ""
-"Telien keskikohtien välisen etäisyyden on oltava vaunun pituutta pienempi"
-
-#: ../bin/dcar.c:3900
-msgid "Enter the Coupled Length or Coupler Length"
-msgstr "Syötä pituus kytkimineen tai kytkimen pituus"
-
-#: ../bin/dcar.c:3902
-msgid "Enter the Coupled Length"
-msgstr "Syötä pituus kytkimineen"
-
-#: ../bin/dcar.c:3904
-msgid "Enter a item Index"
-msgstr "Syötä indeksi"
-
-#: ../bin/dcar.c:3906
-msgid "Purchase Price is not valid"
-msgstr "Ostohinta ei ole kelvollinen"
-
-#: ../bin/dcar.c:3908
-msgid "Current Price is not valid"
-msgstr "Nykyinen hinta ei ole kelvollinen"
-
-#: ../bin/dcar.c:3910
-msgid "Purchase Date is not valid"
-msgstr "Ostopäivä ei ole kelvollinen"
-
-#: ../bin/dcar.c:3912
-msgid "Service Date is not valid"
-msgstr "Huollon päiväys ei ole kelvollinen"
-
-#: ../bin/dcar.c:3915
-#, c-format
-msgid "Item Index %ld duplicated an existing item: updated to new value"
-msgstr "Indeksi %ld oli jo käytössä. Annettiin indeksille uusi arvo."
-
-#: ../bin/dcar.c:4111
-#, c-format
-msgid "Added %ld new Cars"
-msgstr "Lisätty %ld uutta vaunua/veturia"
-
-#: ../bin/dcar.c:4113
-msgid "Added new Car"
-msgstr "Lisätty uusi vaunu/veturi"
-
-#: ../bin/dcar.c:4116
-msgid "Updated Car"
-msgstr "Päivitä vaunu/veturi"
-
-#: ../bin/dcar.c:4119
-msgid " and Part"
-msgstr " ja malli"
-
-#: ../bin/dcar.c:4146
-#, c-format
-msgid "%s Part: %s %s %s %s %s %s"
-msgstr "%s malli: %s %s %s %s %s %s"
-
-#: ../bin/dcar.c:4146 ../bin/dcar.c:4163
-msgid "Added new"
-msgstr "Lisätty uusi"
-
-#: ../bin/dcar.c:4146 ../bin/dcar.c:4163
-msgid "Updated"
-msgstr "Päivitetty"
-
-#: ../bin/dcar.c:4162
-#, c-format
-msgid "%s Prototype: %s%s."
-msgstr "%s esikuva: %s%s."
-
-#: ../bin/dcar.c:4164
-msgid ". Enter new values or press Close"
-msgstr ". Syötä uudet arvot tai paina Sulje"
-
-#: ../bin/dcar.c:4285
-msgid "New Car Part"
-msgstr "Uusi malli"
-
-#: ../bin/dcar.c:4368 ../bin/dcar.c:4373
-#: ../../../../build/work/app/bin/bllnhlp.c:410
-msgid "Roadname"
-msgstr "Rautatieyhtiö"
-
-#: ../bin/dcar.c:4368
-msgid "Purc Price"
-msgstr "Ostohinta"
-
-#: ../bin/dcar.c:4369 ../bin/dcar.c:4374
-msgid "Curr Price"
-msgstr "Nykyinen hinta"
-
-#: ../bin/dcar.c:4369
-msgid "Purc Date"
-msgstr "Ostopäivä"
-
-#: ../bin/dcar.c:4369
-msgid "Srvc Date"
-msgstr "Huollettu"
-
-#: ../bin/dcar.c:4370
-msgid "Locat'n"
-msgstr "Sijainti"
-
-#: ../bin/dcar.c:4373
-msgid "RepMarks"
-msgstr "Tunnus"
-
-#: ../bin/dcar.c:4373
-msgid "Purch Price"
-msgstr "Ostohinta"
-
-#: ../bin/dcar.c:4374
-msgid "Purch Date"
-msgstr "Ostopäivä"
-
-#: ../bin/dcar.c:4391
-msgid "Sort By"
-msgstr "Lajittelu"
-
-#: ../bin/dcar.c:4399 ../bin/dcontmgm.c:99 ../bin/dcustmgm.c:71
-#: ../bin/dcustmgm.c:108
-msgid "Edit"
-msgstr "Muokkaa"
-
-#: ../bin/dcar.c:4403 ../bin/dcontmgm.c:101 ../bin/dcustmgm.c:73
-#: ../bin/misc.c:2242
-msgid "Delete"
-msgstr "Poista"
-
-#: ../bin/dcar.c:4407 ../bin/fileio.c:1517
-msgid "Export"
-msgstr "Vie tiedostoon"
-
-#: ../bin/dcar.c:4409 ../../../../build/work/app/bin/bllnhlp.c:585
-msgid "List"
-msgstr "Luettelo"
-
-#: ../bin/dcar.c:4520 ../bin/dcar.c:5257 ../bin/misc.c:2618
-msgid "Car Inventory"
-msgstr "Kalustoluettelo"
-
-#: ../bin/dcar.c:4640
-msgid "List Cars"
-msgstr "Luetteloi vaunut"
-
-#: ../bin/dcar.c:4764 ../bin/dcar.c:4929
-msgid "Import Cars"
-msgstr "Tuo vaunut tiedostosta"
-
-#: ../bin/dcar.c:4930 ../bin/dcar.c:5053
-#, fuzzy
-msgid "Comma-Separated-Values (*.csv)|*.csv"
-msgstr "Pilkulla erotetut arvot|*.csv"
-
-#: ../bin/dcar.c:5000 ../bin/dcar.c:5052
-msgid "Export Cars"
-msgstr "Vie vaunut tiedostoon"
-
-#: ../bin/dcar.c:5086
-msgid "Layout"
-msgstr "Ratasuunnitelma"
-
-#: ../bin/dcar.c:5088
-msgid "Shelf"
-msgstr "Hyllyssä"
-
-#: ../bin/dcmpnd.c:77 ../bin/dlayer.c:499 ../bin/misc.c:613 ../bin/misc.c:645
-msgid "Load"
-msgstr "Lataa"
-
-#: ../bin/dcmpnd.c:110
-msgid "Updating definitions, please wait"
-msgstr "Päivitetään määrittelyjä, odota hetki."
-
-#: ../bin/dcmpnd.c:173
-msgid "Update Title"
-msgstr "Pävitä otsikko"
-
-#: ../bin/dcmpnd.c:233
-#, c-format
-msgid "End-Point #%d of the selected and actual turnouts are not close"
-msgstr "Valitun ja todellisen vaihteen %d. päätepisteet eivät ole lähekkäin"
-
-#: ../bin/dcmpnd.c:242
-#, c-format
-msgid "End-Point #%d of the selected and actual turnouts are not aligned"
-msgstr "Valitun ja todellisen vaihteen %d. päätepisteet eivät ole linjassa"
-
-#: ../bin/dcmpnd.c:261
-msgid "The selected Turnout had a differing number of End-Points"
-msgstr "Valitussa vaihteessa oli eri määrä päätepisteitä"
-
-#: ../bin/dcmpnd.c:327
-msgid "Skip"
-msgstr "Sivuuta"
-
-#: ../bin/dcmpnd.c:359
-#, c-format
-msgid "%d Track(s) refreshed"
-msgstr "%d raideosa(a) päivitetty"
-
-#: ../bin/dcmpnd.c:399
-msgid "Refresh Turnout/Structure"
-msgstr "Päivitä vaihde/rakennus"
-
-#: ../bin/dcmpnd.c:401
-msgid "Choose a Turnout/Structure to replace:"
-msgstr "Valitse vaihde/rakennus korvataksesi:"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:341
-#: ../bin/dcmpnd.c:411 ../bin/doption.c:132
-#: ../../../../build/work/app/i18n/custmsg.h:1205
-msgid "Turnouts"
-msgstr "Raideosat"
-
-#: ../bin/dcmpnd.c:411
-msgid "Structures"
-msgstr "Rakennukset"
-
-#: ../bin/dcmpnd.c:440
-msgid "Choose another Turnout/Structure to replace:"
-msgstr "Valitse toinen vaihde/rakennus korvataksesi:"
-
-#: ../bin/dcmpnd.c:542
-msgid "Rename Object"
-msgstr "Nimeä objekti uudelleen"
-
-#: ../bin/dcontmgm.c:92
-msgid "Tracks"
-msgstr "Raiteet"
-
-#: ../bin/dcontmgm.c:173
-#, fuzzy, c-format
-msgid "Are you sure you want to delete the %d control element(s)"
-msgstr "Haluatko varmasti poistaa nämä %d vaunua/veturia?"
-
-#: ../bin/dcontmgm.c:176
-#, fuzzy
-msgid "Control Elements"
-msgstr "Valitse värit"
-
-#: ../bin/dcontmgm.c:299
-msgid "Manage Layout Control Elements"
-msgstr ""
-
-#: ../bin/dcustmgm.c:67
-#, fuzzy
-msgid "Create a new "
-msgstr "Luo monikulmio"
-
-#: ../bin/dcustmgm.c:69
-#, fuzzy
-msgid "Go"
-msgstr "Kulta"
-
-#: ../bin/dcustmgm.c:75
-msgid "Move To"
-msgstr "Tiedostoon"
-
-#: ../bin/dcustmgm.c:108
-msgid "Rename"
-msgstr "Nimeä uudelleen"
-
-#: ../bin/dcustmgm.c:189
-msgid "Label"
-msgstr "Merkintä"
-
-#: ../bin/dcustmgm.c:227
-msgid "Contents Label"
-msgstr "Sisältömerkintä"
-
-#: ../bin/dcustmgm.c:283
-msgid "Move To XTP"
-msgstr "Siirrä XTP tiedostoon"
-
-#: ../bin/dcustmgm.c:284
-#, fuzzy
-msgid "Parameter File (*.xtp)|*.xtp"
-msgstr "Parametritiedosto|*.xtp"
-
-#: ../bin/dcustmgm.c:395
-#, fuzzy
-msgid "Manage custom designed parts"
-msgstr "Itse määriteltyjen raideosien, veturien ja vaunujen hallinta"
-
-#: ../bin/dease.c:67
-msgid "Sharp"
-msgstr "Jyrkkä"
-
-#: ../bin/dease.c:67
-msgid "Broad"
-msgstr "Laaja"
-
-#: ../bin/dease.c:67
-msgid "Cornu"
-msgstr ""
-
-#: ../bin/dease.c:74
-msgid "Value"
-msgstr "Arvo"
-
-#: ../bin/dease.c:75 ../bin/tease.c:525
-msgid "R"
-msgstr "R"
-
-#: ../bin/dease.c:77 ../bin/tease.c:526
-msgid "L"
-msgstr "P"
-
-#: ../bin/dease.c:242
-msgid "Easement"
-msgstr "Kaarreloivennus"
-
-#: ../bin/denum.c:49
-msgid "Prices"
-msgstr "Hinnat"
-
-#: ../bin/denum.c:54
-msgid "Save As ..."
-msgstr "Tallenna nimellä ..."
-
-#: ../bin/denum.c:134 ../bin/denum.c:189 ../bin/denum.c:224
-msgid "Each"
-msgstr ""
-
-#: ../bin/denum.c:148 ../bin/denum.c:149
-msgid "Parts List"
-msgstr "Osaluettelo"
-
-#: ../bin/denum.c:154
-#, fuzzy, c-format
-msgid ""
-"%s Parts List\n"
-"\n"
-msgstr "Osaluettelo"
-
-#: ../bin/denum.c:189 ../bin/denum.c:226 ../bin/denum.c:235
-#, fuzzy
-msgid "Extended"
-msgstr "Pidentäminen"
-
-#: ../bin/denum.c:235 ../bin/denum.c:238
-msgid "Total"
-msgstr ""
-
-#: ../bin/dlayer.c:487
-#, fuzzy
-msgid "Use Color"
-msgstr "%s väri"
-
-#: ../bin/dlayer.c:489
-msgid "Visible"
-msgstr "Näkyvä"
-
-#: ../bin/dlayer.c:491
-msgid "Frozen"
-msgstr "Jäädytetty"
-
-#: ../bin/dlayer.c:493
-msgid "On Map"
-msgstr "Näkyy kartalla"
-
-#: ../bin/dlayer.c:495
-#, fuzzy
-msgid "Module"
-msgstr "Tila"
-
-#: ../bin/dlayer.c:498
-msgid "Personal Preferences"
-msgstr "Omat asetukset"
-
-#: ../bin/dlayer.c:500 ../bin/macro.c:1419
-msgid "Save"
-msgstr "Tallenna"
-
-#: ../bin/dlayer.c:501
-msgid "Defaults"
-msgstr "Oletukset"
-
-#: ../bin/dlayer.c:502
-msgid "Number of Layer Buttons"
-msgstr "Tasopainikkeiden lukumäärä"
-
-#: ../bin/dlayer.c:519 ../bin/dlayer.c:987 ../bin/dlayer.c:1000
-#: ../bin/dlayer.c:1051
-msgid "Main"
-msgstr "Päätaso"
-
-#: ../bin/dlayer.c:632 ../bin/dlayer.c:925 ../bin/dlayer.c:1003
-#: ../bin/dlayer.c:1053 ../bin/dlayer.c:1303
-msgid "Show/Hide Layer"
-msgstr "Näytä/piilota taso"
-
-#: ../bin/dlayer.c:1124
-msgid "Layers"
-msgstr "Tasot"
-
-#: ../bin/doption.c:95
-msgid "Turning off AutoSave"
-msgstr ""
-
-#: ../bin/doption.c:104
-#, fuzzy
-msgid "Turning on CheckPointing"
-msgstr "Automaattinen varmennus"
-
-#: ../bin/doption.c:130
-msgid "Auto Pan"
-msgstr "Automaattinen panorointi"
-
-#: ../bin/doption.c:132
-msgid "All"
-msgstr "Kaikki"
-
-#: ../bin/doption.c:133
-msgid "Thick"
-msgstr ""
-
-#: ../bin/doption.c:133
-#, fuzzy
-msgid "Exception"
-msgstr "Erityisraiteet"
-
-#: ../bin/doption.c:134
-msgid "Outline"
-msgstr "Ääriviivat"
-
-#: ../bin/doption.c:135
-msgid "Off"
-msgstr "Pois"
-
-#: ../bin/doption.c:135
-msgid "On"
-msgstr "Päällä"
-
-#: ../bin/doption.c:136
-msgid "Track Descriptions"
-msgstr "Raideosien kuvaukset"
-
-#: ../bin/doption.c:136
-msgid "Lengths"
-msgstr "Pituudet"
-
-#: ../bin/doption.c:136
-msgid "EndPt Elevations"
-msgstr "Päätepisteiden korkeudet"
-
-#: ../bin/doption.c:136
-msgid "Track Elevations"
-msgstr "Raideosien korkeudet"
-
-#: ../bin/doption.c:136
-msgid "Cars"
-msgstr "Vaunut"
-
-#: ../bin/doption.c:137 ../bin/doption.c:138
-msgid "Descr"
-msgstr "Kuvaus"
-
-#: ../bin/doption.c:138
-msgid "Manuf"
-msgstr "Valmistaja"
-
-#: ../bin/doption.c:139 ../bin/doption.c:140
-#, fuzzy
-msgid "Object"
-msgstr "Nimeä objekti uudelleen"
-
-#: ../bin/doption.c:141
-msgid "Live Map"
-msgstr "Suunnitelma seuraa karttaa"
-
-#: ../bin/doption.c:142
-#, fuzzy
-msgid "Hide Trains On Hidden Track"
-msgstr "Junat piilossa olevalla radalla"
-
-#: ../bin/doption.c:143
-msgid "Constrain Drawing Area to Room boundaries"
-msgstr ""
-
-#: ../bin/doption.c:150
-#, fuzzy
-msgid "Color Track"
-msgstr "Kaareva raide"
-
-#: ../bin/doption.c:151
-#, fuzzy
-msgid "Color Draw"
-msgstr "Väri"
-
-#: ../bin/doption.c:152
-msgid "Draw Tunnel"
-msgstr "Piirrä tunneli"
-
-#: ../bin/doption.c:153
-msgid "Draw EndPts"
-msgstr "Piirrä päätepisteet"
-
-#: ../bin/doption.c:154
-#, fuzzy
-msgid "Draw Unconnected EndPts"
-msgstr "Piirrä päätepisteet"
-
-#: ../bin/doption.c:155
-msgid "Draw Ties"
-msgstr "Piirrä ratapölkyt"
-
-#: ../bin/doption.c:156
-#, fuzzy
-msgid "Draw Centers"
-msgstr "Raahaa keskustaan"
-
-#: ../bin/doption.c:157
-msgid "Two Rail Scale"
-msgstr "Kahden kiskon mittakaava"
-
-#: ../bin/doption.c:158
-msgid "Map Scale"
-msgstr "Kartan mittakaava"
-
-#: ../bin/doption.c:162
-msgid "Label Enable"
-msgstr "Näytettävät merkinnät"
-
-#: ../bin/doption.c:163
-msgid "Label Scale"
-msgstr "Merkintöjen mittakaava"
-
-#: ../bin/doption.c:164
-msgid "Label Font Size"
-msgstr "Merkintöjen kirjasinkoko"
-
-#: ../bin/doption.c:165
-msgid "Hot Bar Labels"
-msgstr "Hot Bar merkinnät"
-
-#: ../bin/doption.c:166
-msgid "Layout Labels"
-msgstr "Merkinnät"
-
-#: ../bin/doption.c:167
-msgid "List Labels"
-msgstr "Luettelon merkinnät"
-
-#: ../bin/doption.c:170
-msgid "Car Labels"
-msgstr "Vaunujen merkinnät"
-
-#: ../bin/doption.c:171
-msgid "Train Update Delay"
-msgstr "Junien päivitysväli"
-
-#: ../bin/doption.c:199
-msgid "Display Options"
-msgstr "Näyttöasetukset"
-
-#: ../bin/doption.c:200
-msgid "Proto"
-msgstr "Esikuva"
-
-#: ../bin/doption.c:201
-msgid "Proto/Manuf"
-msgstr "Esikuva/Valmistaja"
-
-#: ../bin/doption.c:202
-msgid "Proto/Manuf/Part Number"
-msgstr "Esikuva/Valmistaja/Tuotekoodi"
-
-#: ../bin/doption.c:203
-msgid "Proto/Manuf/Partno/Item"
-msgstr "Esikuva/Valmistaja/Tuotekoodi/Tuote"
-
-#: ../bin/doption.c:204
-msgid "Manuf/Proto"
-msgstr "Valmistaja/Esikuva"
-
-#: ../bin/doption.c:205
-msgid "Manuf/Proto/Part Number"
-msgstr "Valmistaja/Esikuva/Tuotekoodi"
-
-#: ../bin/doption.c:206
-msgid "Manuf/Proto/Partno/Item"
-msgstr "Valmistaja/Esikuva/Tuotekoodi/Tuote"
-
-#: ../bin/doption.c:236
-#, fuzzy
-msgid "Single item selected, +Ctrl Add to selection"
-msgstr "Klikkaamalla jo valittuna olevaa raidetta, sen valinta poistuu.\n"
-
-#: ../bin/doption.c:236
-msgid "Add to selection, +Ctrl Single item selected"
-msgstr ""
-
-#: ../bin/doption.c:237
-#, fuzzy
-msgid "Deselect all on select nothing"
-msgstr "Poista valinnat kaikista objekteista"
-
-#: ../bin/doption.c:242
-msgid "Normal: Command List, Shift: Command Options"
-msgstr "Normaali: Komennot, Vaihto: Komentojen asetukset"
-
-#: ../bin/doption.c:242
-msgid "Normal: Command Options, Shift: Command List"
-msgstr "Normaali: Komentojen asetukset, Vaihto: Komennot"
-
-#: ../bin/doption.c:245
-msgid "Default Command"
-msgstr "Oletuskomento"
-
-#: ../bin/doption.c:247
-msgid "Hide Selection Window"
-msgstr "Piilota valintaikkuna"
-
-#: ../bin/doption.c:249
-msgid "Right Click"
-msgstr "Hiiren 2-painike"
-
-#: ../bin/doption.c:250
-#, fuzzy
-msgid "Select Mode"
-msgstr "Valitse objekteja"
-
-#: ../bin/doption.c:275
-msgid "Command Options"
-msgstr "Komentojen asetukset"
-
-#: ../bin/doption.c:298
-msgid "English"
-msgstr "Englantilaiset"
-
-#: ../bin/doption.c:298
-msgid "Metric"
-msgstr "Metrijärjestelmä"
-
-#: ../bin/doption.c:299
-msgid "Polar"
-msgstr "Polaarinen"
-
-#: ../bin/doption.c:299
-msgid "Cartesian"
-msgstr "Karteesinen"
-
-#: ../bin/doption.c:300
-msgid "Balloon Help"
-msgstr "Pikaopaste"
-
-#: ../bin/doption.c:301
-msgid "Show FlexTrack in HotBar"
-msgstr ""
-
-#: ../bin/doption.c:302
-#, fuzzy
-msgid "Load Last Layout"
-msgstr "Lataa ratasuunnitelma"
-
-#: ../bin/doption.c:302
-#, fuzzy
-msgid "Start New Layout"
-msgstr "Uusi ratasuunnitelma"
-
-#: ../bin/doption.c:305
-msgid "Angles"
-msgstr "Kulmat"
-
-#: ../bin/doption.c:306
-msgid "Units"
-msgstr "Yksiköt"
-
-#: ../bin/doption.c:308
-msgid "Length Format"
-msgstr "Pituusmittojen muotoilu"
-
-#: ../bin/doption.c:309
-#, fuzzy
-msgid "Min Track Length"
-msgstr "Pienin raideosan pituus"
-
-#: ../bin/doption.c:310
-msgid "Connection Distance"
-msgstr "Liitosetäisyys"
-
-#: ../bin/doption.c:311
-msgid "Connection Angle"
-msgstr "Liitoskulma"
-
-#: ../bin/doption.c:312
-msgid "Turntable Angle"
-msgstr "Kääntöpöydän kulma"
-
-#: ../bin/doption.c:313
-msgid "Max Coupling Speed"
-msgstr "Suurin kytkentänopeus"
-
-#: ../bin/doption.c:316
-msgid "Drag Distance"
-msgstr "Raahausetäisyys"
-
-#: ../bin/doption.c:317
-msgid "Drag Timeout"
-msgstr "Raahauksen viive"
-
-#: ../bin/doption.c:318
-msgid "Min Grid Spacing"
-msgstr "Pienin ruudukon koko"
-
-#: ../bin/doption.c:320
-#, fuzzy
-msgid "Check Point Frequency"
-msgstr "Automaattinen varmennus"
-
-#: ../bin/doption.c:322
-#, fuzzy
-msgid "Autosave Checkpoint Frequency"
-msgstr "Kuinka usein automaattinen varmennus suoritetaan"
-
-#: ../bin/doption.c:323
-msgid "On Program Startup"
-msgstr "Ohjelman käynnistyksessä"
-
-#: ../bin/doption.c:333 ../bin/doption.c:337 ../bin/doption.c:354
-msgid "999.999"
-msgstr "999,999"
-
-#: ../bin/doption.c:334
-#, fuzzy
-msgid "999.999999"
-msgstr "999,999"
-
-#: ../bin/doption.c:335
-#, fuzzy
-msgid "999.99999"
-msgstr "999,999"
-
-#: ../bin/doption.c:336
-#, fuzzy
-msgid "999.9999"
-msgstr "999,999"
-
-#: ../bin/doption.c:338 ../bin/doption.c:355
-msgid "999.99"
-msgstr "999,99"
-
-#: ../bin/doption.c:339 ../bin/doption.c:356
-msgid "999.9"
-msgstr "999,9"
-
-#: ../bin/doption.c:340
-msgid "999 7/8"
-msgstr "999 7/8"
-
-#: ../bin/doption.c:341
-msgid "999 63/64"
-msgstr "999 63/64"
-
-#: ../bin/doption.c:342
-msgid "999' 11.999\""
-msgstr "999' 11.999\""
-
-#: ../bin/doption.c:343
-msgid "999' 11.99\""
-msgstr "999' 11.99\""
-
-#: ../bin/doption.c:344
-msgid "999' 11.9\""
-msgstr "999' 11.9\""
-
-#: ../bin/doption.c:345
-msgid "999' 11 7/8\""
-msgstr "999' 11 7/8\""
-
-#: ../bin/doption.c:346
-msgid "999' 11 63/64\""
-msgstr "999' 11 63/64\""
-
-#: ../bin/doption.c:347
-msgid "999ft 11.999in"
-msgstr "999ft 11.999in"
-
-#: ../bin/doption.c:348
-msgid "999ft 11.99in"
-msgstr "999ft 11.99in"
-
-#: ../bin/doption.c:349
-msgid "999ft 11.9in"
-msgstr "999ft 11.9in"
-
-#: ../bin/doption.c:350
-msgid "999ft 11 7/8in"
-msgstr "999ft 11 7/8in"
-
-#: ../bin/doption.c:351
-msgid "999ft 11 63/64in"
-msgstr "999ft 11 63/64in"
-
-#: ../bin/doption.c:357
-msgid "999.999mm"
-msgstr "999,999 mm"
-
-#: ../bin/doption.c:358
-msgid "999.99mm"
-msgstr "999,99 mm"
-
-#: ../bin/doption.c:359
-msgid "999.9mm"
-msgstr "999,9 mm"
-
-#: ../bin/doption.c:360
-msgid "999.999cm"
-msgstr "999,999 cm"
-
-#: ../bin/doption.c:361
-msgid "999.99cm"
-msgstr "999,99 cm"
-
-#: ../bin/doption.c:362
-msgid "999.9cm"
-msgstr "999,9 cm"
-
-#: ../bin/doption.c:363
-msgid "999.999m"
-msgstr "999,999 m"
-
-#: ../bin/doption.c:364
-msgid "999.99m"
-msgstr "999,99 m"
-
-#: ../bin/doption.c:365
-msgid "999.9m"
-msgstr "999,9 m"
-
-#: ../bin/doption.c:492
-msgid "Preferences"
-msgstr "Ominaisuudet"
-
-#: ../bin/doption.c:531
-msgid "Marker"
-msgstr "Markkeri"
-
-#: ../bin/doption.c:532
-msgid "Border"
-msgstr "Reunus"
-
-#: ../bin/doption.c:533
-msgid "Primary Axis"
-msgstr "Ensisijainen akseli"
-
-#: ../bin/doption.c:534
-msgid "Secondary Axis"
-msgstr "Toissijainen akseli"
-
-#: ../bin/doption.c:535
-msgid "Normal Track"
-msgstr "Normaalit raiteet"
-
-#: ../bin/doption.c:536
-msgid "Selected Track"
-msgstr "Valitut raiteet"
-
-#: ../bin/doption.c:537
-msgid "Profile Path"
-msgstr "Profiilirata"
-
-#: ../bin/doption.c:538
-msgid "Exception Track"
-msgstr "Erityisraiteet"
-
-#: ../bin/doption.c:539
-msgid "Track Ties"
-msgstr "Ratapölkyt"
-
-#: ../bin/dpricels.c:45
-msgid "Price"
-msgstr "Hinta"
-
-#: ../bin/dpricels.c:59
-msgid "Flex Track"
-msgstr "Fleksi"
-
-#: ../bin/dpricels.c:60
-msgid "costs"
-msgstr "maksaa"
-
-#: ../bin/dpricels.c:154
-msgid "Price List"
-msgstr "Hinnasto"
-
-#: ../bin/dprmfile.c:73 ../bin/paramfilesearch_ui.c:60
-msgid "Show File Names"
-msgstr "Näytä tiedostojen nimet"
-
-#: ../bin/dprmfile.c:82 ../bin/paramfilesearch_ui.c:76
-#, fuzzy
-msgid "Select all"
-msgstr "Valitse kaikki"
-
-#: ../bin/dprmfile.c:84
-msgid "Favorite"
-msgstr ""
-
-#: ../bin/dprmfile.c:87
-msgid "Search Library"
-msgstr ""
-
-#: ../bin/dprmfile.c:88 ../bin/layout.c:471
-msgid "Browse ..."
-msgstr "Selaa ..."
-
-#: ../bin/dprmfile.c:331
-#, fuzzy, c-format
-msgid "%d parameter files reloaded."
-msgstr "Etsi ladattava parametritiedosto"
-
-#: ../bin/dprmfile.c:333
-#, fuzzy
-msgid "One parameter file reloaded."
-msgstr "Etsi ladattava parametritiedosto"
-
-#: ../bin/dprmfile.c:434
-msgid "Parameter Files"
-msgstr "Parametritiedostot"
-
-#: ../bin/dprmfile.c:437 ../bin/paramfilesearch_ui.c:405
-msgid "Load Parameters"
-msgstr "Lataa parametrit"
-
-#: ../bin/dprmfile.c:437 ../bin/paramfilesearch_ui.c:405
-#, fuzzy
-msgid "Parameter files (*.xtp)|*.xtp"
-msgstr "Parametritiedostot|*.xtp"
-
-#: ../bin/draw.c:2134
-msgid "Macro Zoom Mode"
-msgstr ""
-
-#: ../bin/draw.c:2141
-msgid "Scale 1:1 - Use Ctrl+ to go to Macro Zoom Mode"
-msgstr ""
-
-#: ../bin/draw.c:2145
-msgid "Preset Zoom In Value selected. Shift+Ctrl+PageDwn to reset value"
-msgstr ""
-
-#: ../bin/draw.c:2149
-#, fuzzy, c-format
-msgid "Zoom In Program Value %ld:1, Shift+PageDwn to use"
-msgstr "Lähennä arvoon %ld:1"
-
-#: ../bin/draw.c:2187
-#, fuzzy
-msgid "At Maximum Zoom Out"
-msgstr "Suurin siirtymä"
-
-#: ../bin/draw.c:2192
-msgid "Preset Zoom Out Value selected. Shift+Ctrl+PageUp to reset value"
-msgstr ""
-
-#: ../bin/draw.c:2196
-#, fuzzy, c-format
-msgid "Zoom Out Program Value %ld:1 set, Shift+PageUp to use"
-msgstr "Loitonna arvoon %ld:1"
-
-#: ../bin/draw.c:2893
-msgid "Map"
-msgstr "Kartta"
-
-#: ../bin/draw.c:2941
-msgid ""
-"Left-Drag to pan, Ctrl+Left-Drag to zoom, 0 to set origin to zero, 1-9 to "
-"zoom#, e to set to extents"
-msgstr ""
-
-#: ../bin/draw.c:2948
-#, fuzzy
-msgid "Pan Mode - drag point to new position"
-msgstr "Aseta %s ja raahaa paikoilleen"
-
-#: ../bin/draw.c:2955
-msgid "Zoom Mode - drag area to zoom"
-msgstr ""
-
-#: ../bin/draw.c:2981
-msgid "Can't move any further in that direction"
-msgstr ""
-
-#: ../bin/draw.c:2983
-msgid "Left click to pan, right click to zoom, 'o' for origin, 'e' for extents"
-msgstr ""
-
-#: ../bin/draw.c:3022
-msgid ""
-"Left Drag to Pan, +CTRL to Zoom, 0 to set Origin to 0,0, 1-9 to Zoom#, e to "
-"set to Extent"
-msgstr ""
-
-#: ../bin/draw.c:3102
-#, fuzzy
-msgid "Pan/Zoom"
-msgstr "&Zoom"
-
-#: ../bin/draw.c:3113
-msgid "Zoom to 1:1 - '1'"
-msgstr ""
-
-#: ../bin/draw.c:3114
-msgid "Zoom to 1:2 - '2'"
-msgstr ""
-
-#: ../bin/draw.c:3115
-msgid "Zoom to 1:3 - '3'"
-msgstr ""
-
-#: ../bin/draw.c:3116
-msgid "Zoom to 1:4 - '4'"
-msgstr ""
-
-#: ../bin/draw.c:3117
-msgid "Zoom to 1:5 - '5'"
-msgstr ""
-
-#: ../bin/draw.c:3118
-msgid "Zoom to 1:6 - '6'"
-msgstr ""
-
-#: ../bin/draw.c:3119
-msgid "Zoom to 1:7 - '7'"
-msgstr ""
-
-#: ../bin/draw.c:3120
-msgid "Zoom to 1:8 - '8'"
-msgstr ""
-
-#: ../bin/draw.c:3121
-msgid "Zoom to 1:9 - '9'"
-msgstr ""
-
-#: ../bin/draw.c:3125
-msgid "Pan center here - 'c'"
-msgstr ""
-
-#: ../bin/drawgeom.c:76 ../bin/drawgeom.c:91
-msgid "Create Lines"
-msgstr "Luo viivoja"
-
-#: ../bin/drawgeom.c:291
-msgid "+Shift to lock to nearby objects"
-msgstr ""
-
-#: ../bin/drawgeom.c:293
-msgid "+Shift to not lock to nearby objects"
-msgstr ""
-
-#: ../bin/drawgeom.c:393
-msgid "Drag to next point, +Shift to lock to object, +Ctrl to lock to 90deg"
-msgstr ""
-
-#: ../bin/drawgeom.c:403
-msgid "Drag to place next end point"
-msgstr "Raahaa asettaaksesi seuraava päätepiste"
-
-#: ../bin/drawgeom.c:434
-msgid "Drag to set radius"
-msgstr "Aseta säde raahaamalla"
-
-#: ../bin/drawgeom.c:447
-msgid "Drag set box size"
-msgstr "Aseta nelikulmion koko rahaamalla"
-
-#: ../bin/drawgeom.c:488
-msgid "+Shift - lock to close object, +Ctrl - lock to 90 deg"
-msgstr ""
-
-#: ../bin/drawgeom.c:536 ../bin/drawgeom.c:592
-#, c-format
-msgid "Length = %s, Angle = %0.2f"
-msgstr "Pituus = %s, Kulma = %0.2f"
-
-#: ../bin/drawgeom.c:613
-#, c-format
-msgid "Straight Line: Length=%s Angle=%0.3f"
-msgstr "Suora viiva: Pituus=%s Kulma=%0.3f"
-
-#: ../bin/drawgeom.c:635
-#, c-format
-msgid "Curved Line: Radius=%s Angle=%0.3f Length=%s"
-msgstr "Kaari: Säde=%s Kulma=%0.3f Pituus=%s"
-
-#: ../bin/drawgeom.c:659
-#, c-format
-msgid "Radius = %s"
-msgstr "Säde = %s"
-
-#: ../bin/drawgeom.c:669
-#, c-format
-msgid "Width = %s, Height = %s"
-msgstr "Leveys = %s, Korkeus = %s"
-
-#: ../bin/drawgeom.c:1132
-#, fuzzy
-msgid "Select points or use context menu"
-msgstr "Aseta kielten kärjet"
-
-#: ../bin/drawgeom.c:1387
-#, fuzzy, c-format
-msgid "Length = %s, Last angle = %0.2f"
-msgstr "Pituus = %s, Kulma = %0.2f"
-
-#: ../bin/drawgeom.c:1538
-#, fuzzy
-msgid "Point Deleted"
-msgstr "Kirjasinta ei valittu"
-
-#: ../bin/drawgeom.c:1934
-#, fuzzy
-msgid "Not close to end of line"
-msgstr "Nosta tai laske kaikkia valittuja raiteita"
-
-#: ../bin/drawgeom.c:1987
-msgid "Not close to ends or middle of mine, reselect"
-msgstr ""
-
-#: ../bin/drawgeom.c:2035 ../bin/drawgeom.c:2257
-#, fuzzy
-msgid "Drag to Move Corner Point"
-msgstr "Raahaa asettaaksesi 2. päätepiste"
-
-#: ../bin/drawgeom.c:2042
-#, fuzzy
-msgid "Drag to Move Edge "
-msgstr "Raahaa kehälle"
-
-#: ../bin/drawgeom.c:2104
-#, c-format
-msgid "Length = %0.3f Angle = %0.3f"
-msgstr "Pituus = %0.3f Kulma = %0.3f"
-
-#: ../bin/drawgeom.c:2252
-#, fuzzy
-msgid "Drag to Move Edge"
-msgstr "Raahaa kehälle"
-
-#: ../bin/dxfoutput.c:232
-msgid "Export to DXF"
-msgstr "Vie DXF tiedostoon"
-
-#: ../bin/fileio.c:240
-msgid ""
-"\n"
-"Do you want to continue?"
-msgstr ""
-"\n"
-"Haluatko jatkaa?"
-
-#: ../bin/fileio.c:607
-#, c-format
-msgid "putTitle: title too long: %s"
-msgstr "putTitle: Otsikko on liian pitkä: %s"
-
-#: ../bin/fileio.c:637
-msgid "Unnamed Trackplan"
-msgstr "Nimetön ratasuunnitelma"
-
-#: ../bin/fileio.c:638
-msgid " (R/O)"
-msgstr ""
-
-#: ../bin/fileio.c:658 ../bin/fileio.c:1277
-msgid "Check Pointing"
-msgstr "Automaattinen varmennus"
-
-#: ../bin/fileio.c:788
-msgid "Unknown layout file object - skip until next good object?"
-msgstr ""
-
-#: ../bin/fileio.c:1025
-msgid "Track"
-msgstr "Raide"
-
-#: ../bin/fileio.c:1211
-msgid "Save Tracks"
-msgstr "Tallenna"
-
-#: ../bin/fileio.c:1227
-#, fuzzy
-msgid "Save Tracks As"
-msgstr "Tallenna"
-
-#: ../bin/fileio.c:1238
-msgid "Open Tracks"
-msgstr "Avaa"
-
-#: ../bin/fileio.c:1252
-#, fuzzy
-msgid "Example Tracks"
-msgstr "Yksinkertaiset raideosat"
-
-#: ../bin/fileio.c:1460
-#, fuzzy, c-format
-msgid "Module - %s"
-msgstr "Ohje"
-
-#: ../bin/fileio.c:1465 ../bin/fileio.c:1486
-msgid "Import Tracks"
-msgstr "Tuo raiteet tiedostosta"
-
-#: ../bin/fileio.c:1548
-msgid "Export Tracks"
-msgstr "Vie raiteet tiedostoon"
-
-#: ../bin/fileio.c:1567
-msgid "Clipboard"
-msgstr "Leikepöytä"
-
-#: ../bin/filenoteui.c:62 ../bin/linknoteui.c:50 ../bin/textnoteui.c:42
-#, fuzzy
-msgid "Position X"
-msgstr "Sijainti"
-
-#: ../bin/filenoteui.c:64 ../bin/linknoteui.c:52 ../bin/textnoteui.c:44
-#, fuzzy
-msgid "Position Y"
-msgstr "Sijainti"
-
-#: ../bin/filenoteui.c:68 ../bin/linknoteui.c:56
-#, fuzzy
-msgid "Title"
-msgstr "Otsikko"
-
-#: ../bin/filenoteui.c:70 ../bin/trknote.c:62
-#: ../../../../build/work/app/bin/bllnhlp.c:85
-#, fuzzy
-msgid "Document"
-msgstr "Lukumäärä"
-
-#: ../bin/filenoteui.c:72
-#, fuzzy
-msgid "Select..."
-msgstr "Valitse"
-
-#: ../bin/filenoteui.c:74 ../bin/linknoteui.c:60
-#, fuzzy
-msgid "Open..."
-msgstr "&Avaa ..."
-
-#: ../bin/filenoteui.c:136
-msgid "Add Document"
-msgstr ""
-
-#: ../bin/filenoteui.c:158
-msgid "The file doesn't exist or cannot be read!"
-msgstr ""
-
-#: ../bin/filenoteui.c:297
-#, fuzzy, c-format
-msgid "Document(%d) Layer=%d %-.80s [%s]"
-msgstr "(%d): Taso=%d %s"
-
-#: ../bin/filenoteui.c:309
-#, fuzzy
-msgid "Update document"
-msgstr "Päivitetty"
-
-#: ../bin/filenoteui.c:323
-#, fuzzy
-msgid "Describe the file"
-msgstr "Määrittele ja valitse -toiminnot"
-
-#: ../bin/filenoteui.c:329
-msgid "Attach document"
-msgstr ""
-
-#: ../bin/i18n.c:66
-#, c-format
-msgid "Gettext initialized (PACKAGE=%s, LOCALEDIR=%s, LC_ALL=%s).\n"
-msgstr "Gettext alustettu (PACKAGE=%s, LOCALEDIR=%s, LC_ALL=%s).\n"
-
-#: ../bin/layout.c:373
-#, c-format
-msgid "Unable to load Image File - %s"
-msgstr ""
-
-#: ../bin/layout.c:436
-msgid "Load Background"
-msgstr ""
-
-#: ../bin/layout.c:458
-msgid "Room Width"
-msgstr "Huoneen leveys"
-
-#: ../bin/layout.c:459
-#, fuzzy
-msgid " Height"
-msgstr "Korkeus"
-
-#: ../bin/layout.c:460
-#, fuzzy
-msgid "Layout Title"
-msgstr "Ratasuunnitelma"
-
-#: ../bin/layout.c:461
-#, fuzzy
-msgid "Subtitle"
-msgstr "Otsikko"
-
-#: ../bin/layout.c:465
-#, fuzzy
-msgid " Gauge"
-msgstr "Mittakaava / raideväli"
-
-#: ../bin/layout.c:467
-#, fuzzy
-msgid "Min Track Radius"
-msgstr "Pienin karresäde"
-
-#: ../bin/layout.c:468
-#, fuzzy
-msgid " Max Track Grade (%)"
-msgstr "Suurin nousukulma (%)"
-
-#: ../bin/layout.c:470
-#, fuzzy
-msgid "Background File Path"
-msgstr "Profiilirata"
-
-#: ../bin/layout.c:474
-msgid "Background PosX,Y"
-msgstr ""
-
-#: ../bin/layout.c:478
-msgid "Background Size"
-msgstr ""
-
-#: ../bin/layout.c:480
-msgid "Background Screen %"
-msgstr ""
-
-#: ../bin/layout.c:482
-msgid "Background Angle"
-msgstr ""
-
-#: ../bin/layout.c:560
-msgid "Layout Options"
-msgstr "Ratasuunnitelman asetukset"
-
-#: ../bin/linknoteui.c:58
-msgid "URL"
-msgstr ""
-
-#: ../bin/linknoteui.c:107
-#, c-format
-msgid ""
-"The entered URL is too long. The maximum allowed length is %d. Please edit "
-"the entered value."
-msgstr ""
-
-#: ../bin/linknoteui.c:110
-#, fuzzy
-msgid "Re-edit"
-msgstr "Palauta"
-
-#: ../bin/linknoteui.c:241
-#, fuzzy
-msgid "Update link"
-msgstr "Päivitä"
-
-#: ../bin/linknoteui.c:259
-#, fuzzy
-msgid "Create link"
-msgstr "Luo nelikulmio"
-
-#: ../bin/macro.c:95
-msgid "Message"
-msgstr "Viesti"
-
-#: ../bin/macro.c:179
-msgid "Recording"
-msgstr "Nauhoitus"
-
-#: ../bin/macro.c:214
-msgid "End of Playback. Hit Step to exit\n"
-msgstr "Toisto on lopussa. Paina Seuraava vaihe -painiketta poistuaksesi.\n"
-
-#: ../bin/macro.c:278
-msgid "Record"
-msgstr "Nauhoita"
-
-#: ../bin/macro.c:676
-msgid "Step"
-msgstr "Seuraava vaihe"
-
-#: ../bin/macro.c:679 ../bin/macro.c:1542
-msgid "Next"
-msgstr "Seuraava"
-
-#: ../bin/macro.c:682 ../bin/misc.c:699 ../bin/track.c:1116
-msgid "Quit"
-msgstr "Lopeta"
-
-#: ../bin/macro.c:685 ../../../../build/work/app/bin/bllnhlp.c:540
-msgid "Speed"
-msgstr "Nopeus"
-
-#: ../bin/macro.c:832 ../bin/macro.c:877
-msgid "Regression"
-msgstr ""
-
-#: ../bin/macro.c:1043 ../bin/macro.c:1401
-msgid "Demo"
-msgstr "Demo"
-
-#: ../bin/macro.c:1221
-#, c-format
-msgid "Elapsed time %lu\n"
-msgstr "Kulunut aika %lu\n"
-
-#: ../bin/macro.c:1322
-msgid "Playback"
-msgstr "Toisto"
-
-#: ../bin/macro.c:1404
-msgid "Slowest"
-msgstr "Hitain"
-
-#: ../bin/macro.c:1405
-msgid "Slow"
-msgstr "Hidas"
-
-#: ../bin/macro.c:1407
-msgid "Fast"
-msgstr "Nopea"
-
-#: ../bin/macro.c:1408
-msgid "Faster"
-msgstr "Nopeampi"
-
-#: ../bin/macro.c:1409
-msgid "Fastest"
-msgstr "Nopein"
-
-#: ../bin/macro.c:1527
-msgid "Can not find PARAMETER playback proc"
-msgstr "PARAMETER toistoproseduuria ei löydy"
-
-#: ../bin/misc.c:169
-msgid "No Messages"
-msgstr "Ei viestejä"
-
-#: ../bin/misc.c:431 ../bin/misc.c:434
-msgid "ABORT"
-msgstr "KESKEYTÄ"
-
-#: ../bin/misc.c:433
-msgid ""
-"\n"
-"Do you want to save your layout?"
-msgstr ""
-"\n"
-"Haluatko tallentaa ratasuunnitelman?"
-
-#: ../bin/misc.c:480
-#, c-format
-msgid "No help for %s"
-msgstr "Ei ohjetta aiheesta %s"
-
-#: ../bin/misc.c:592
-msgid ""
-"Save changes to the layout design before closing?\n"
-"\n"
-"If you don't save now, your unsaved changes will be discarded."
-msgstr ""
-"Tallennetaanko ratasuunnitelma ennen sulkemista?\n"
-"\n"
-"Jos ei tallenneta, kaikki muutokset menetetään."
-
-#: ../bin/misc.c:594 ../bin/misc.c:2291
-msgid "&Save"
-msgstr "&Tallenna"
-
-#: ../bin/misc.c:594 ../bin/misc.c:629
-msgid "&Cancel"
-msgstr "&Peruuta"
-
-#: ../bin/misc.c:594
-msgid "&Don't Save"
-msgstr "Älä tallenna"
-
-#: ../bin/misc.c:618
-#, fuzzy
-msgid "examples"
-msgstr "Näyte"
-
-#: ../bin/misc.c:627
-msgid ""
-"Do you want to return to the last saved state?\n"
-"\n"
-"Revert will cause all changes done since last save to be lost."
-msgstr ""
-"Haluatko palata edelliseen tallennettuun tilaan?\n"
-"\n"
-"Palautuksessa menetetään kaikki tallennuksen jälkeiset muutokset."
-
-#: ../bin/misc.c:629
-msgid "&Revert"
-msgstr "Palauta"
-
-#: ../bin/misc.c:851
-msgid "XTrackCAD Font"
-msgstr "XTrackCAD kirjasin"
-
-#: ../bin/misc.c:912
-#, c-format
-msgid "No balloon help for %s\n"
-msgstr "Ei pikaopastetta %s:lle\n"
-
-#: ../bin/misc.c:914 ../../../../build/work/app/bin/bllnhlp.c:603
-#: ../../../../build/work/app/bin/bllnhlp.c:604
-#: ../../../../build/work/app/bin/bllnhlp.c:606
-#: ../../../../build/work/app/bin/bllnhlp.c:607
-#: ../../../../build/work/app/bin/bllnhlp.c:609
-#: ../../../../build/work/app/bin/bllnhlp.c:610
-#: ../../../../build/work/app/bin/bllnhlp.c:611
-#: ../../../../build/work/app/bin/bllnhlp.c:612
-#: ../../../../build/work/app/bin/bllnhlp.c:613
-#: ../../../../build/work/app/bin/bllnhlp.c:614
-#: ../../../../build/work/app/bin/bllnhlp.c:615
-#: ../../../../build/work/app/bin/bllnhlp.c:616
-#: ../../../../build/work/app/bin/bllnhlp.c:617
-#: ../../../../build/work/app/bin/bllnhlp.c:618
-#: ../../../../build/work/app/bin/bllnhlp.c:619
-#: ../../../../build/work/app/bin/bllnhlp.c:620
-#: ../../../../build/work/app/bin/bllnhlp.c:621
-#: ../../../../build/work/app/bin/bllnhlp.c:622
-#: ../../../../build/work/app/bin/bllnhlp.c:623
-#: ../../../../build/work/app/bin/bllnhlp.c:624
-#: ../../../../build/work/app/bin/bllnhlp.c:625
-#: ../../../../build/work/app/bin/bllnhlp.c:626
-#: ../../../../build/work/app/bin/bllnhlp.c:627
-#: ../../../../build/work/app/bin/bllnhlp.c:628
-#: ../../../../build/work/app/bin/bllnhlp.c:629
-#: ../../../../build/work/app/bin/bllnhlp.c:630
-#: ../../../../build/work/app/bin/bllnhlp.c:631
-#: ../../../../build/work/app/bin/bllnhlp.c:632
-#: ../../../../build/work/app/bin/bllnhlp.c:633
-#: ../../../../build/work/app/bin/bllnhlp.c:634
-#: ../../../../build/work/app/bin/bllnhlp.c:635
-#: ../../../../build/work/app/bin/bllnhlp.c:636
-#: ../../../../build/work/app/bin/bllnhlp.c:637
-#: ../../../../build/work/app/bin/bllnhlp.c:638
-#: ../../../../build/work/app/bin/bllnhlp.c:639
-#: ../../../../build/work/app/bin/bllnhlp.c:640
-#: ../../../../build/work/app/bin/bllnhlp.c:641
-#: ../../../../build/work/app/bin/bllnhlp.c:642
-#: ../../../../build/work/app/bin/bllnhlp.c:643
-#: ../../../../build/work/app/bin/bllnhlp.c:644
-#: ../../../../build/work/app/bin/bllnhlp.c:645
-#: ../../../../build/work/app/bin/bllnhlp.c:646
-#: ../../../../build/work/app/bin/bllnhlp.c:647
-#: ../../../../build/work/app/bin/bllnhlp.c:648
-#: ../../../../build/work/app/bin/bllnhlp.c:649
-#: ../../../../build/work/app/bin/bllnhlp.c:650
-#: ../../../../build/work/app/bin/bllnhlp.c:651
-#: ../../../../build/work/app/bin/bllnhlp.c:652
-#: ../../../../build/work/app/bin/bllnhlp.c:653
-#: ../../../../build/work/app/bin/bllnhlp.c:654
-#: ../../../../build/work/app/bin/bllnhlp.c:655
-#: ../../../../build/work/app/bin/bllnhlp.c:656
-#: ../../../../build/work/app/bin/bllnhlp.c:657
-#: ../../../../build/work/app/bin/bllnhlp.c:658
-#: ../../../../build/work/app/bin/bllnhlp.c:659
-#: ../../../../build/work/app/bin/bllnhlp.c:660
-#: ../../../../build/work/app/bin/bllnhlp.c:661
-#: ../../../../build/work/app/bin/bllnhlp.c:662
-#: ../../../../build/work/app/bin/bllnhlp.c:663
-#: ../../../../build/work/app/bin/bllnhlp.c:665
-msgid "No Help"
-msgstr "Ei ohjetta"
-
-#: ../bin/misc.c:1022
-#, fuzzy
-msgid "File AutoSaved"
-msgstr "Viivain"
-
-#: ../bin/misc.c:1233 ../bin/misc.c:1240 ../bin/misc.c:1311
-msgid ""
-"Cancelling the current command will undo the changes\n"
-"you are currently making. Do you want to update?"
-msgstr ""
-"Komennon peruuttaminen kumoaa muutokset,\n"
-"joita olet tekemässä. Haluatko jatkaa?"
-
-#: ../bin/misc.c:1806
-msgid "Sticky Commands"
-msgstr "Pysyvät komennot"
-
-#: ../bin/misc.c:1819
-#, fuzzy
-msgid "File Buttons"
-msgstr "Viivain"
-
-#: ../bin/misc.c:1819
-#, fuzzy
-msgid "Import/Export Buttons"
-msgstr "Zoom"
-
-#: ../bin/misc.c:1819
-msgid "Zoom Buttons"
-msgstr "Zoom"
-
-#: ../bin/misc.c:1820
-msgid "Undo Buttons"
-msgstr "Kumoa/Tee uudelleen"
-
-#: ../bin/misc.c:1820
-msgid "Easement Button"
-msgstr "Kaarreloivennus"
-
-#: ../bin/misc.c:1820
-msgid "SnapGrid Buttons"
-msgstr "Kohdistusruudukko"
-
-#: ../bin/misc.c:1821
-msgid "Create Track Buttons"
-msgstr "Luo raiteet"
-
-#: ../bin/misc.c:1821
-#, fuzzy
-msgid "Layout Control Elements"
-msgstr "Ratasuunnitelman asetukset"
-
-#: ../bin/misc.c:1822
-msgid "Modify Track Buttons"
-msgstr "Radan muokkaus"
-
-#: ../bin/misc.c:1822
-msgid "Properties/Select"
-msgstr "Määrittele/valitse"
-
-#: ../bin/misc.c:1823
-msgid "Track Group Buttons"
-msgstr "Raiteiden ryhmittely"
-
-#: ../bin/misc.c:1823
-msgid "Train Group Buttons"
-msgstr "Junat"
-
-#: ../bin/misc.c:1824
-msgid "Create Misc Buttons"
-msgstr "Piirto"
-
-#: ../bin/misc.c:1824
-msgid "Ruler Button"
-msgstr "Viivain"
-
-#: ../bin/misc.c:1824
-msgid "Layer Buttons"
-msgstr "Tasot"
-
-#: ../bin/misc.c:1825
-msgid "Hot Bar"
-msgstr "Hot Bar"
-
-#: ../bin/misc.c:1894 ../../../../build/work/app/bin/bllnhlp.c:80
-msgid "Change Elevations"
-msgstr "Muuta korkeustasoja"
-
-#: ../bin/misc.c:1912
-msgid "Angle:"
-msgstr "Kulma:"
-
-#: ../bin/misc.c:1919
-#, fuzzy
-msgid "Move X:"
-msgstr "Siirrä"
-
-#: ../bin/misc.c:1920
-#, fuzzy
-msgid "Move Y:"
-msgstr "Siirrä"
-
-#: ../bin/misc.c:1967
-#, fuzzy
-msgid "Enter Move ..."
-msgstr "Syötä kulma ..."
-
-#: ../bin/misc.c:1973
-msgid "180 "
-msgstr "180 "
-
-#: ../bin/misc.c:1974
-msgid "90 CW"
-msgstr "90 MP"
-
-#: ../bin/misc.c:1975
-msgid "45 CW"
-msgstr "45 MP"
-
-#: ../bin/misc.c:1976
-msgid "30 CW"
-msgstr "30 MP"
-
-#: ../bin/misc.c:1977
-msgid "15 CW"
-msgstr "15 MP"
-
-#: ../bin/misc.c:1978
-msgid "15 CCW"
-msgstr "15 VP"
-
-#: ../bin/misc.c:1979
-msgid "30 CCW"
-msgstr "30 VP"
-
-#: ../bin/misc.c:1980
-msgid "45 CCW"
-msgstr "45 VP"
-
-#: ../bin/misc.c:1981
-msgid "90 CCW"
-msgstr "90 VP"
-
-#: ../bin/misc.c:1982
-msgid "Enter Angle ..."
-msgstr "Syötä kulma ..."
-
-#: ../bin/misc.c:2013
-msgid "Debug"
-msgstr "Virheiden poisto (debug)"
-
-#: ../bin/misc.c:2144
-msgid "&File"
-msgstr "&Tiedosto"
-
-#: ../bin/misc.c:2145
-msgid "&Edit"
-msgstr "&Muokkaa"
-
-#: ../bin/misc.c:2146
-msgid "&View"
-msgstr "&Näytä"
-
-#: ../bin/misc.c:2147
-msgid "&Add"
-msgstr "&Lisää"
-
-#: ../bin/misc.c:2148
-msgid "&Change"
-msgstr "Muuta"
-
-#: ../bin/misc.c:2149
-msgid "&Draw"
-msgstr "Piirto"
-
-#: ../bin/misc.c:2150
-msgid "&Manage"
-msgstr "Hallinta"
-
-#: ../bin/misc.c:2151
-msgid "&Options"
-msgstr "Asetukset"
-
-#: ../bin/misc.c:2152
-msgid "&Macro"
-msgstr "Makro"
-
-#: ../bin/misc.c:2153
-msgid "&Window"
-msgstr "&Ikkuna"
-
-#: ../bin/misc.c:2154
-msgid "&Help"
-msgstr "&Ohje"
-
-#: ../bin/misc.c:2190
-#, fuzzy
-msgid "Context Commands"
-msgstr "Muut komennot"
-
-#: ../bin/misc.c:2191
-msgid "Shift Context Commands"
-msgstr ""
-
-#: ../bin/misc.c:2206 ../bin/misc.c:2393
-msgid "Enable SnapGrid"
-msgstr "Käytä kohdistusruudukkoa"
-
-#: ../bin/misc.c:2208
-msgid "SnapGrid Show"
-msgstr "Näytä kohdistusruudukko"
-
-#: ../bin/misc.c:2210
-#, fuzzy
-msgid " Enable Magnetic Snap"
-msgstr "Käytä kohdistusruudukkoa"
-
-#: ../bin/misc.c:2212 ../bin/misc.c:2414
-#, fuzzy
-msgid "Show/Hide Map"
-msgstr "Näytä/piilota taso"
-
-#: ../bin/misc.c:2214
-#, fuzzy
-msgid "Show/Hide Background"
-msgstr "Näytä/piilota taso"
-
-#: ../bin/misc.c:2245 ../bin/misc.c:2246
-#, fuzzy
-msgid "Add..."
-msgstr "Lisää"
-
-#: ../bin/misc.c:2249 ../bin/misc.c:2250
-#, fuzzy
-msgid "More..."
-msgstr "Lisää"
-
-#: ../bin/misc.c:2285
-msgid "&New ..."
-msgstr "&Uusi ..."
-
-#: ../bin/misc.c:2287
-msgid "&Open ..."
-msgstr "&Avaa ..."
-
-#: ../bin/misc.c:2293
-msgid "Save &As ..."
-msgstr "Tallenna &nimellä ..."
-
-#: ../bin/misc.c:2295
-msgid "Revert"
-msgstr "Palauta"
-
-#: ../bin/misc.c:2298
-msgid "P&rint Setup ..."
-msgstr "Tulostusasetukset ..."
-
-#: ../bin/misc.c:2303
-msgid "&Import"
-msgstr "Tuo tiedostosta"
-
-#: ../bin/misc.c:2305
-#, fuzzy
-msgid "Import &Module"
-msgstr "Tuo tiedostosta"
-
-#: ../bin/misc.c:2307
-msgid "Export to &Bitmap"
-msgstr "Vie bitmap tiedostoon"
-
-#: ../bin/misc.c:2310
-msgid "E&xport"
-msgstr "Vie tiedostoon"
-
-#: ../bin/misc.c:2312
-msgid "Export D&XF"
-msgstr "Vie DXF tiedostoon"
-
-#: ../bin/misc.c:2317
-msgid "Parameter &Files ..."
-msgstr "Parametritiedostot ..."
-
-#: ../bin/misc.c:2319
-msgid "No&tes ..."
-msgstr "Muistiinpanot ..."
-
-#: ../bin/misc.c:2326
-msgid "E&xit"
-msgstr "Poistu"
-
-#: ../bin/misc.c:2332
-msgid "&Undo"
-msgstr "&Kumoa"
-
-#: ../bin/misc.c:2334
-msgid "R&edo"
-msgstr "&Tee uudestaan"
-
-#: ../bin/misc.c:2337
-msgid "Cu&t"
-msgstr "&Leikkaa"
-
-#: ../bin/misc.c:2339
-msgid "&Copy"
-msgstr "&Kopioi"
-
-#: ../bin/misc.c:2341
-msgid "&Paste"
-msgstr "L&iitä"
-
-#: ../bin/misc.c:2343
-#, fuzzy
-msgid "C&lone"
-msgstr "Sulje"
-
-#: ../bin/misc.c:2345
-msgid "De&lete"
-msgstr "Poista"
-
-#: ../bin/misc.c:2353
-msgid "Select &All"
-msgstr "Valitse kaikki"
-
-#: ../bin/misc.c:2355
-msgid "&Deselect All"
-msgstr "Poista valinnat"
-
-#: ../bin/misc.c:2356
-msgid "&Invert Selection"
-msgstr "Käänteinen valinta"
-
-#: ../bin/misc.c:2357
-msgid "Select Stranded Track"
-msgstr "Valitse irtonaiset raiteet"
-
-#: ../bin/misc.c:2359
-msgid "Tu&nnel"
-msgstr "Tunneli"
-
-#: ../bin/misc.c:2360
-#, fuzzy
-msgid "B&ridge"
-msgstr "Silta"
-
-#: ../bin/misc.c:2361
-msgid "Ties/NoTies"
-msgstr ""
-
-#: ../bin/misc.c:2362
-#, fuzzy
-msgid "Move to &Front"
-msgstr "Siirrä yhdistääksesi"
-
-#: ../bin/misc.c:2363
-#, fuzzy
-msgid "Move to &Back"
-msgstr "Siirrä raiteita"
-
-#: ../bin/misc.c:2373
-msgid "Zoom &In"
-msgstr "Lähennä"
-
-#: ../bin/misc.c:2376
-msgid "Zoom &Out"
-msgstr "Loitonna"
-
-#: ../bin/misc.c:2386
-msgid "&Redraw"
-msgstr "Uudelleenpiirto"
-
-#: ../bin/misc.c:2388
-msgid "Redraw All"
-msgstr "Uudelleenpiirto kaikille"
-
-#: ../bin/misc.c:2395
-msgid "Show SnapGrid"
-msgstr "Näytä kohdistusruudukko"
-
-#: ../bin/misc.c:2405
-#, fuzzy
-msgid "Enable Magnetic Snap"
-msgstr "Käytä kohdistusruudukkoa"
-
-#: ../bin/misc.c:2420
-msgid "&Tool Bar"
-msgstr "Työkalurivin painikkeet"
-
-#: ../bin/misc.c:2453
-#, fuzzy
-msgid "Control Element"
-msgstr "Valitse värit"
-
-#: ../bin/misc.c:2479
-msgid "&Loosen Tracks"
-msgstr "Irroita raiteet"
-
-#: ../bin/misc.c:2491
-msgid "Raise/Lower Elevations"
-msgstr "Nosta/laske korkeuksia"
-
-#: ../bin/misc.c:2500
-msgid "Recompute Elevations"
-msgstr "Laske korkeudet uudelleen"
-
-#: ../bin/misc.c:2505
-msgid "Change Scale"
-msgstr "Muuta mittakaavaa"
-
-#: ../bin/misc.c:2526
-msgid "L&ayout ..."
-msgstr "Ratasuunnitelma ..."
-
-#: ../bin/misc.c:2528
-msgid "&Display ..."
-msgstr "Näyttö ..."
-
-#: ../bin/misc.c:2530
-msgid "Co&mmand ..."
-msgstr "Komennot ..."
-
-#: ../bin/misc.c:2532
-msgid "&Easements ..."
-msgstr "Kaarreloivennus ..."
-
-#: ../bin/misc.c:2535
-msgid "&Fonts ..."
-msgstr "&Kirjasimet ..."
-
-#: ../bin/misc.c:2537
-msgid "Stic&ky ..."
-msgstr "Pysyvät komennot ..."
-
-#: ../bin/misc.c:2542
-msgid "&Debug ..."
-msgstr "Virheiden poisto (debug) ..."
-
-#: ../bin/misc.c:2545
-msgid "&Preferences ..."
-msgstr "&Ominaisuudet ..."
-
-#: ../bin/misc.c:2547
-msgid "&Colors ..."
-msgstr "Värit ..."
-
-#: ../bin/misc.c:2553
-msgid "&Record ..."
-msgstr "&Nauhoita ..."
-
-#: ../bin/misc.c:2555
-msgid "&Play Back ..."
-msgstr "&Toisto ..."
-
-#: ../bin/misc.c:2561
-msgid "Main window"
-msgstr "Pääikkuna"
-
-#: ../bin/misc.c:2575
-msgid "Recent Messages"
-msgstr "Viimeisimmät viestit"
-
-#: ../bin/misc.c:2582
-msgid "Tip of the Day..."
-msgstr "Päivän vinkki ..."
-
-#: ../bin/misc.c:2583
-msgid "&Demos"
-msgstr "Demot"
-
-#: ../bin/misc.c:2584
-#, fuzzy
-msgid "Examples..."
-msgstr "Kaarreloivennus ..."
-
-#: ../bin/misc.c:2588 ../bin/smalldlg.c:222
-msgid "About"
-msgstr "Tietoja"
-
-#: ../bin/misc.c:2601
-msgid "Tur&nout Designer..."
-msgstr "Vaihteiden suunnittelu..."
-
-#: ../bin/misc.c:2604
-msgid "Layout &Control Elements"
-msgstr ""
-
-#: ../bin/misc.c:2606
-msgid "&Group"
-msgstr "Ryhmittele"
-
-#: ../bin/misc.c:2608
-msgid "&Ungroup"
-msgstr "Pura ryhmittely"
-
-#: ../bin/misc.c:2612
-#, fuzzy
-msgid "Custom defined parts..."
-msgstr "Omat raideosat ja kalusto..."
-
-#: ../bin/misc.c:2615
-msgid "Update Turnouts and Structures"
-msgstr "Päivitä vaihteet ja rakennukset"
-
-#: ../bin/misc.c:2624
-msgid "Layers ..."
-msgstr "Tasot ..."
-
-#: ../bin/misc.c:2628
-msgid "Parts &List ..."
-msgstr "Osaluettelo ..."
-
-#: ../bin/misc.c:2631
-msgid "Price List..."
-msgstr "Hinnasto ..."
-
-#: ../bin/misc.c:2713
-#, fuzzy
-msgid "Import/Export"
-msgstr "Vie tiedostoon"
-
-#: ../bin/misc.c:2743
-msgid ""
-"Program was not terminated properly. Do you want to resume working on the "
-"previous trackplan?"
-msgstr ""
-"Ohjelmaa ei lopetettu kunnolla. Haluatko jatkaa työskentelyä edellisen "
-"ratasuunnitelman parissa?"
-
-#: ../bin/misc.c:2744
-msgid "Resume"
-msgstr "Jatka"
-
-#: ../bin/misc.c:2744
-msgid "Resume with New Name"
-msgstr ""
-
-#: ../bin/misc.c:2744
-msgid "Ignore Checkpoint"
-msgstr ""
-
-#: ../bin/misc.c:2859
-#, c-format
-msgid "Unnamed Trackplan - %s(%s)"
-msgstr "Nimetön ratasuunnitelma - %s(%s)"
-
-#: ../bin/misc.c:2945
-msgid "Initializing commands"
-msgstr "Alustetaan komennot"
-
-#: ../bin/misc.c:2954
-msgid "Initializing menus"
-msgstr "Alustetaan valikot"
-
-#: ../bin/misc.c:2989
-msgid "Reading parameter files"
-msgstr "Luetaan parametritiedostot"
-
-#: ../bin/misc.c:3026
-msgid "Initialization complete"
-msgstr "Alustus valmis"
-
-#: ../bin/param.c:92
-msgid "Unexpected End Of String"
-msgstr "Odottamaton merkkijonon loppu"
-
-#: ../bin/param.c:99
-msgid "Expected digit"
-msgstr "Odotettiin numeroa"
-
-#: ../bin/param.c:106
-msgid "Overflow"
-msgstr "Ylivuoto"
-
-#: ../bin/param.c:154
-msgid "Divide by 0"
-msgstr "Jako nollalla"
-
-#: ../bin/param.c:162
-msgid "Expected /"
-msgstr "Odotettiin /"
-
-#: ../bin/param.c:248
-msgid "Invalid Units Indicator"
-msgstr "Epäkelpo yksikön merkintä"
-
-#: ../bin/param.c:276
-msgid "Expected End Of String"
-msgstr "Odotettiin merkkijonon loppua"
-
-#: ../bin/param.c:302 ../bin/param.c:1406
-#, c-format
-msgid "Invalid Number"
-msgstr "Epäkelpo numero"
-
-#: ../bin/param.c:361
-msgid "End Of String"
-msgstr "Merkkijonon loppu"
-
-#: ../bin/param.c:1413
-#, c-format
-msgid "Enter a value > %ld"
-msgstr "Syötä arvo, joka on > %ld"
-
-#: ../bin/param.c:1415
-#, c-format
-msgid "Enter a value < %ld"
-msgstr "Syötä arvo, joka on < %ld"
-
-#: ../bin/param.c:1417
-#, c-format
-msgid "Enter a value between %ld and %ld"
-msgstr "Syötä arvo %ld ja %ld väliltä"
-
-#: ../bin/param.c:1473
-#, c-format
-msgid "Enter a value > %s"
-msgstr "Syätä arvo, joka on > %s"
-
-#: ../bin/param.c:1476
-#, c-format
-msgid "Enter a value < %s"
-msgstr "Syötä arvo, joka on < %s"
-
-#: ../bin/param.c:1479
-#, c-format
-msgid "Enter a value between %s and %s"
-msgstr "Syötä arvo %s ja %s väliltä"
-
-#: ../bin/param.c:2643
-msgid "Help"
-msgstr "Ohje"
-
-#: ../bin/paramfile.c:250
-msgid "Parameter"
-msgstr "Parametri"
-
-#: ../bin/paramfile.c:348
-msgid "Unknown param file line - skip until next good object?"
-msgstr ""
-
-#: ../bin/paramfilelist.c:110
-#, c-format
-msgid "Updating %s"
-msgstr "Päivitetään %s"
-
-#: ../bin/paramfilesearch_ui.c:68
-msgid "Enter at least one search word"
-msgstr ""
-
-#: ../bin/paramfilesearch_ui.c:77
-#, fuzzy
-msgid "Reload Library"
-msgstr "Lataa"
-
-#: ../bin/paramfilesearch_ui.c:274
-#, fuzzy, c-format
-msgid "%d parameter files found."
-msgstr "Luetaan parametritiedostot"
-
-#: ../bin/paramfilesearch_ui.c:284
-msgid "No matches found."
-msgstr ""
-
-#: ../bin/paramfilesearch_ui.c:396
-#, fuzzy
-msgid "Choose parameter files"
-msgstr "Luetaan parametritiedostot"
-
-#: ../bin/paramfilesearch_ui.c:416
-msgid "No system parameter files found, search is disabled."
-msgstr ""
-
-#: ../bin/smalldlg.c:64
-msgid "Show tips at start"
-msgstr "Vinkki ohjelman alussa"
-
-#: ../bin/smalldlg.c:70
-msgid "Did you know..."
-msgstr "Tiesitkö..."
-
-#: ../bin/smalldlg.c:72
-msgid "Previous Tip"
-msgstr "Edellinen"
-
-#: ../bin/smalldlg.c:73
-msgid "Next Tip"
-msgstr "Seuraava"
-
-#: ../bin/smalldlg.c:90
-msgid "Tip of the Day"
-msgstr "Päivän vinkki"
-
-#: ../bin/smalldlg.c:99
-msgid "No tips are available"
-msgstr "Vinkkejä ei ole saatavilla"
-
-#: ../bin/smalldlg.c:199
-#, fuzzy
-msgid ""
-"XTrackCAD is a CAD (computer-aided design) program for designing model "
-"railroad layouts."
-msgstr ""
-"\n"
-"XTrackCAD on CAD ohjelma pienoisrautateiden\n"
-"raidekaavioiden suunniteluun."
-
-#: ../bin/tbezier.c:177
-#, c-format
-msgid "Bezier: len=%0.2f min_rad=%0.2f"
-msgstr ""
-
-#: ../bin/tbezier.c:250
-#, fuzzy
-msgid "Ctl Pt 1: X,Y"
-msgstr "Päätepiste 1: X"
-
-#: ../bin/tbezier.c:251
-#, fuzzy
-msgid "Ctl Pt 2: X,Y"
-msgstr "Päätepiste 2: X"
-
-#: ../bin/tbezier.c:257
-#, fuzzy
-msgid "MinRadius"
-msgstr "Säde"
-
-#: ../bin/tbezier.c:262
-#, fuzzy
-msgid "Line Color"
-msgstr "%s väri"
-
-#: ../bin/tbezier.c:379
-#, fuzzy, c-format
-msgid ""
-"Bezier %s(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,%"
-"0.3f] CP1=[%0.3f,%0.3f] CP2=[%0.3f, %0.3f]"
-msgstr ""
-"Kaareva raideosa(%d): Taso=%d Säde=%s Pituus=%s Keskipiste=[%s,%s] Päätep.=[%"
-"0.3f,%0.3f K%0.3f] [%0.3f,%0.3f K%0.3f]"
-
-#: ../bin/tbezier.c:453
-#, fuzzy
-msgid "Bezier Track"
-msgstr "Helix raide"
-
-#: ../bin/tbezier.c:870
-msgid "Merge Bezier"
-msgstr ""
-
-#: ../bin/tcornu.c:222
-#, c-format
-msgid "Cornu: len=%0.2f min_rad=%0.2f"
-msgstr ""
-
-#: ../bin/tcornu.c:296
-#, fuzzy
-msgid "Radius "
-msgstr "Säde1"
-
-#: ../bin/tcornu.c:304
-#, fuzzy
-msgid "Minimum Radius"
-msgstr "Pienin karresäde"
-
-#: ../bin/tcornu.c:305
-msgid "Max Rate Of Curve Change/Scale"
-msgstr ""
-
-#: ../bin/tcornu.c:306
-msgid "Total Winding Angle"
-msgstr ""
-
-#: ../bin/tcornu.c:444
-#, fuzzy, c-format
-msgid ""
-"Cornu Track(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,%"
-"0.3f]"
-msgstr ""
-"Kaareva raideosa(%d): Taso=%d Säde=%s Pituus=%s Keskipiste=[%s,%s] Päätep.=[%"
-"0.3f,%0.3f K%0.3f] [%0.3f,%0.3f K%0.3f]"
-
-#: ../bin/tcornu.c:497
-#, fuzzy
-msgid "Cornu Track"
-msgstr "Kaareva raide"
-
-#: ../bin/tcornu.c:1025
-#, fuzzy
-msgid "Merge Cornu"
-msgstr "Yhdistä kaarteet"
-
-#: ../bin/tcurve.c:243
-#, fuzzy, c-format
-msgid "Helix: turns=%ld len=%0.2f grade=%0.1f%% sep=%0.2f"
-msgstr "Helix: Kierroksia=%ld Pituus=%s Nousukulma=%0.1f%% Korkeusero=%s"
-
-#: ../bin/tcurve.c:249
-#, fuzzy, c-format
-msgid "Helix: turns=%ld len=%0.2f"
-msgstr "Helix: Kierroksia=%ld Pituus=%s"
-
-#: ../bin/tcurve.c:365 ../bin/tcurve.c:367 ../bin/tease.c:520
-#: ../bin/tease.c:522 ../bin/tstraigh.c:86 ../bin/tstraigh.c:88
-msgid "Z"
-msgstr "Z"
-
-#: ../bin/tcurve.c:373
-msgid "Angular Length"
-msgstr "Kulma"
-
-#: ../bin/tcurve.c:553
-#, c-format
-msgid ""
-"Helix Track(%d): Layer=%d Radius=%s Turns=%ld Length=%s Center=[%s,%s] EP=[%"
-"0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
-msgstr ""
-"Helix(%d): Taso=%d Säde=%s Kierr.=%ld Pituus=%s Keskip.=[%s,%s] Päätep.=[%"
-"0.3f,%0.3f K%0.3f] [%0.3f,%0.3f K%0.3f]"
-
-#: ../bin/tcurve.c:563
-#, c-format
-msgid ""
-"Curved Track(%d): Layer=%d Radius=%s Length=%s Center=[%s,%s] EP=[%0.3f,%"
-"0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
-msgstr ""
-"Kaareva raideosa(%d): Taso=%d Säde=%s Pituus=%s Keskipiste=[%s,%s] Päätep.=[%"
-"0.3f,%0.3f K%0.3f] [%0.3f,%0.3f K%0.3f]"
-
-#: ../bin/tcurve.c:640
-msgid "Helix Track"
-msgstr "Helix raide"
-
-#: ../bin/tcurve.c:646
-msgid "Curved Track"
-msgstr "Kaareva raideosa"
-
-#: ../bin/tcurve.c:1011
-msgid "Merge Curves"
-msgstr "Yhdistä kaarteet"
-
-#: ../bin/tcurve.c:1078
-msgid "Drag to change angle or create tangent"
-msgstr "Raahaa muuttaaksesi kulmaa"
-
-#: ../bin/tcurve.c:1111 ../bin/tcurve.c:1143
-msgid "Curved "
-msgstr "Kaareva "
-
-#: ../bin/tcurve.c:1117
-msgid "Tangent "
-msgstr "Tangentti "
-
-#: ../bin/tcurve.c:1126
-#, c-format
-msgid "Tangent track: Length %s Angle %0.3f"
-msgstr "Tangentti raide: Pituus %s Kulma %0.3f"
-
-#: ../bin/tcurve.c:1148
-#, c-format
-msgid "Curved: Radius=%s Length=%s Angle=%0.3f"
-msgstr "Kaari: Säde=%s Pituus=%s Kulma=%0.3f"
-
-#: ../bin/tease.c:527
-msgid "l0"
-msgstr "l0"
-
-#: ../bin/tease.c:528
-msgid "l1"
-msgstr "l1"
-
-#: ../bin/tease.c:570
-#, c-format
-msgid ""
-"Joint Track(%d): Layer=%d Length=%0.3f EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A"
-"%0.3f]"
-msgstr ""
-"Yhdysraide(%d): Taso=%d Pituus=%0.3f Päätep.=[%0.3f,%0.3f K%0.3f] [%0.3f,%"
-"0.3f K%0.3f]"
-
-#: ../bin/tease.c:615
-msgid "Easement Track"
-msgstr "Kaarreloivennus"
-
-#: ../bin/tease.c:1235
-msgid "Merge Easements"
-msgstr "Yhdistä kaarreloivennukset"
-
-#: ../bin/tease.c:1300
-msgid "Split Easement Curve"
-msgstr "Pilko kaarreloivennus"
-
-#: ../bin/textnoteui.c:214
-#, fuzzy, c-format
-msgid "Note: Layer=%d %-.80s"
-msgstr "(%d): Taso=%d %s"
-
-#: ../bin/textnoteui.c:225
-#, fuzzy
-msgid "Update comment"
-msgstr "Kumoa edellinen komento"
-
-#: ../bin/textnoteui.c:237
-msgid "Replace this text with your note"
-msgstr "Korvaa tämä teksti muistiinpanollasi"
-
-#: ../bin/textnoteui.c:241
-#, fuzzy
-msgid "Create Text Note"
-msgstr "Luo teksti"
-
-#: ../bin/track.c:1329
-msgid "Move Objects Above"
-msgstr "Siirrä objekteja ylemmäs"
-
-#: ../bin/track.c:1349
-msgid "Mode Objects Below"
-msgstr "Siirrä objekteja alemmas"
-
-#: ../bin/track.c:1640
-msgid "Audit"
-msgstr "Tarkasta"
-
-#: ../bin/track.c:1929
-#, c-format
-msgid "%d Track(s) loosened"
-msgstr "%d raidetta irroitettu"
-
-#: ../bin/track.c:1936
-msgid "No tracks loosened"
-msgstr "Yhtään raidetta ei irroitettu"
-
-#: ../bin/track.c:1946 ../bin/track.c:1950
-#, c-format
-msgid "Connecting a non-track(%d) to (%d)"
-msgstr "Muun kuin raideosan (%d) yhdistäminen raiteeseen (%d)"
-
-#: ../bin/track.c:2005
-msgid "Join Abutting Tracks"
-msgstr "Yhdistä vastakkaiset raideosat"
-
-#: ../bin/track.c:2280 ../bin/track.c:2315
-msgid "Inside turnout track"
-msgstr ""
-
-#: ../bin/track.c:2298
-#, fuzzy, c-format
-msgid "Curve: Length=%s Radius=%0.3f Arc=%0.3f"
-msgstr "Pituus = %0.3f Kulma = %0.3f"
-
-#: ../bin/track.c:2321 ../bin/track.c:2379 ../bin/tstraigh.c:568
-#, c-format
-msgid "Straight: Length=%s Angle=%0.3f"
-msgstr "Suora: Pituus=%s Kulma=%0.3f"
-
-#: ../bin/trknote.c:60
-#, fuzzy
-msgid "Comment"
-msgstr "Sisältö"
-
-#: ../bin/trknote.c:61
-#, fuzzy
-msgid "Link"
-msgstr "Viiva"
-
-#: ../bin/trknote.c:61 ../../../../build/work/app/bin/bllnhlp.c:101
-msgid "Weblink"
-msgstr ""
-
-#: ../bin/trknote.c:638 ../../../../build/work/app/bin/bllnhlp.c:108
-msgid "Place a note on the layout"
-msgstr "Lisää muistiinpano ratasuunnitelmaan"
-
-#: ../bin/trknote.c:652
-msgid "New Note"
-msgstr "Uusi muistiinpano"
-
-#: ../bin/trknote.c:708
-#, fuzzy
-msgid "Add notes"
-msgstr "Lisää tulostin"
-
-#: ../bin/tstraigh.c:236
-#, c-format
-msgid ""
-"Straight Track(%d): Layer=%d Length=%s EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A"
-"%0.3f]"
-msgstr ""
-"Suora raideosa(%d): Taso=%d Pituus=%s Päätep.=[%0.3f,%0.3f K%0.3f] [%0.3f,%"
-"0.3f K%0.3f]"
-
-#: ../bin/tstraigh.c:481
-msgid "Extending Straight Track"
-msgstr "Jatketaan suoraa raidetta"
-
-#: ../bin/tstraigh.c:561
-msgid "Straight "
-msgstr "Suora "
-
-#: ../wlib/gtklib/filesel.c:94
-#, fuzzy
-msgid "Save format:"
-msgstr "Sivun muotoilu"
-
-#: ../wlib/gtklib/filesel.c:187
-msgid "Image files"
-msgstr ""
-
-#: ../wlib/gtklib/font.c:281
-msgid "Font Select"
-msgstr "Kirjasimen valinta"
-
-#: ../wlib/gtklib/help.c:83
-msgid "&Contents"
-msgstr "Sisältö"
-
-#: ../wlib/gtklib/help.c:84
-msgid "Co&mmand Context help"
-msgstr ""
-
-#: ../wlib/gtklib/ixhelp.c:243
-msgid "Home"
-msgstr "Aloitussivu"
-
-#: ../wlib/gtklib/ixhelp.c:247
-#, fuzzy
-msgid "Contents"
-msgstr "Sisältö"
-
-#: ../wlib/gtklib/menu.c:541
-msgid "<Empty List>"
-msgstr ""
-
-#: ../wlib/gtklib/notice.c:101 ../wlib/mswlib/mswmisc.c:2102
-#: ../wlib/mswlib/mswmisc.c:2145
-msgid "Warning"
-msgstr ""
-
-#: ../wlib/gtklib/notice.c:106 ../wlib/mswlib/mswmisc.c:2107
-msgid "Error"
-msgstr "Virhe"
-
-#: ../wlib/gtklib/text.c:300
-#, c-format
-msgid "%d of %d"
-msgstr ""
-
-#: ../wlib/gtklib/wpref.c:114
-#, c-format
-msgid ""
-"The required configuration files could not be located in the expected "
-"location.\n"
-"\n"
-"Usually this is an installation problem. Make sure that these files are "
-"installed in either \n"
-" %s/share/xtrkcad or\n"
-" /usr/lib/%s or\n"
-" /usr/local/lib/%s\n"
-"If this is not possible, the environment variable %s must contain the name "
-"of the correct directory."
-msgstr ""
-"Tarvittavia asetustiedostoja ei löydy oletetuista hakemistoista.\n"
-"\n"
-"Yleensä tämä johtuu virheellisestä asennuksesta. Varmista että nämä "
-"tiedostot on asennettu johonkin seuraavista hakemistoista:\n"
-" %s/share/xtrkcad\n"
-" /usr/lib/%s\n"
-" /usr/local/lib/%s\n"
-"Jos tämä ei ole mahdollista, täytyy ympäristömuuttujan %s sisältää oikean "
-"hakemiston nimi."
-
-#: ../wlib/gtklib/wpref.c:148 ../wlib/gtklib/wpref.c:193
-msgid "HOME is not set"
-msgstr "HOME ympäristömuuttujaa ei ole asetettu"
-
-#: ../wlib/gtklib/wpref.c:148 ../wlib/gtklib/wpref.c:157
-#: ../wlib/gtklib/wpref.c:193
-msgid "Exit"
-msgstr "Poistu"
-
-#: ../wlib/gtklib/wpref.c:156
-#, c-format
-msgid "Cannot create %s"
-msgstr "%s luonti ei onnistu."
-
-#: ../wlib/mswlib/backgnd.c:103
-msgid "Image file is invalid or cannot be read."
-msgstr ""
-
-#: ../wlib/mswlib/mswmenu.c:886
-msgid "Ctrl+"
-msgstr ""
-
-#: ../wlib/mswlib/mswmenu.c:891
-msgid "Alt+"
-msgstr ""
-
-#: ../wlib/mswlib/mswmenu.c:896
-msgid "Shift+"
-msgstr ""
-
-#: ../wlib/mswlib/mswmenu.c:902
-#, fuzzy
-msgid "Space"
-msgstr "Väli"
-
-#: ../wlib/mswlib/mswmisc.c:190
-msgid "All image files"
-msgstr ""
-
-#: ../wlib/mswlib/mswmisc.c:192
-msgid "GIF files (*.gif)"
-msgstr ""
-
-#: ../wlib/mswlib/mswmisc.c:194
-msgid "JPEG files (*.jpeg,*.jpg)"
-msgstr ""
-
-#: ../wlib/mswlib/mswmisc.c:196
-msgid "PNG files (*.png)"
-msgstr ""
-
-#: ../wlib/mswlib/mswmisc.c:198
-msgid "TIFF files (*.tiff, *.tif)"
-msgstr ""
-
-#: ../wlib/mswlib/mswmisc.c:200
-msgid "All files (*)"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:9
-#, c-format
-msgid ""
-"MSG_CANT_PLACE_FROGPOINTS\tFrog|Points cannot be placed on a turnout, circle "
-"or helix.\tA %s cannot be placed on a turnout, circle or helix."
-msgstr ""
-"MSG_CANT_PLACE_FROGPOINTS\tRieteyskappale|kielien päät ei voi olla "
-"ympyräradalla, helixissä tai palaraiteella\t%s ei voi olla ympyräradalla, "
-"helixissä tai palaraiteella."
-
-#: ../../../../build/work/app/help/messages.h:10
-#, fuzzy
-msgid ""
-"MSG_SEL_TRK_FROZEN\tA frozen layer contains selected track. Command cannot "
-"be executed."
-msgstr ""
-"MSG_SEL_TRK_FROZEN\tValittu raide on jäädytetyllä tasolla...\tValittu raide "
-"on jäädytetyllä tasolla.\n"
-"Komentoa ei voida suorittaa."
-
-#: ../../../../build/work/app/help/messages.h:11
-msgid "MSG_HELIX_TURNS_GTR_0\tA Helix must have one or more loops of track."
-msgstr "MSG_HELIX_TURNS_GTR_0\tHelixissä on oltava vähintään yksi ratakierros."
-
-#: ../../../../build/work/app/help/messages.h:12
-msgid ""
-"MSG_LARGE_FONT\tA large font has been selected....\tA large font has been "
-"selected.\n"
-"Large fonts may a take a while to load.\n"
-"\n"
-"Do you wish to continue?"
-msgstr ""
-"MSG_LARGE_FONT\tSuurikokoinen kirjasin valittu...\tSuurikokoinen kirjasin "
-"valittu.\n"
-"Suurien kirjasinten lataaminen saattaa kestää kauan.\n"
-"\n"
-"Haluatko jatkaa?"
-
-#: ../../../../build/work/app/help/messages.h:13
-msgid ""
-"MSG_TODSGN_DESC_NONBLANK\tAll description fields present in the Turnout..."
-"\tAll description fields present in the Turnout\n"
-"Designer must contain appropriate information.\n"
-"Correct inappropriate values and try again."
-msgstr ""
-"MSG_TODSGN_DESC_NONBLANK\tRaideosien Suunnittelu -dialogin kaikissa "
-"kentissä...\tRaideosien Suunnittelu -dialogin kaikissa kentissä\n"
-"on oltava asianmukaiset arvot.\n"
-"Korjaa arvot ja kokeile uudelleen."
-
-#: ../../../../build/work/app/help/messages.h:14
-msgid ""
-"MSG_GROUP_NONBLANK\tAll fields listed in the Group dialog must contain "
-"data....\tAll fields listed in the Group dialog must contain data.\n"
-"Please enter missing values and try again."
-msgstr ""
-"MSG_GROUP_NONBLANK\tKaikki kentät ryhmittelyikkunassa ovat pakollisia..."
-"\tKaikki kentät ryhmittelyikkunassa ovat pakollisia.\n"
-"Syötä puuttuvat arvot ja kokeile uudelleen."
-
-#: ../../../../build/work/app/help/messages.h:15
-msgid ""
-"MSG_TODSGN_VALUES_GTR_0\tAll values specified in the Turnout Designer must "
-"be...\tAll values specified in the Turnout Designer must be\n"
-"greater than 0. Correct inappropriate values and try again."
-msgstr ""
-"MSG_TODSGN_VALUES_GTR_0\tRaideosien Suunnittelussa annettujen arvojen..."
-"\tRaideosien Suunnittelussa annettujen arvojen on\n"
-"oltava suurempia kuin 0. Korjaa arvot ja yritä uudelleen."
-
-#: ../../../../build/work/app/help/messages.h:16
-#, fuzzy
-msgid "MSG_CURVE_OUT_OF_RANGE\tAngle must be between 0\\u00B0 and 360\\u00B0."
-msgstr "MSG_CURVE_OUT_OF_RANGE\tKulman täytyy olla 0° ja 360° välillä."
-
-#: ../../../../build/work/app/help/messages.h:17
-msgid ""
-"MSG_TODSGN_CORNU_TOO_COMPLEX\tThe curves created by the Turnout Designer for "
-"a cornu curve have more than 128 segments....\tThe curves created by the "
-"Turnout Designer for a cornu curve have more than 128 segments.\n"
-"Try adjusting the end angles and radii to be closer in values."
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:18
-#, c-format
-msgid ""
-"MSG_CUSTMGM_DELETE_CONFIRM\tAre you sure you want to delete the NNN "
-"definition(s)?\tAre you sure you want to delete the\n"
-"%d definition(s)?"
-msgstr ""
-"MSG_CUSTMGM_DELETE_CONFIRM\tHaluatko varmasti poistaa NNN kohdetta?"
-"\tHaluatko varmasti poistaa %d kohdetta?"
-
-#: ../../../../build/work/app/help/messages.h:19
-msgid "MSG_WBITMAP_FAILED\tBitmap create or write function failed."
-msgstr "MSG_WBITMAP_FAILED\tBitmap kuvan luonti tai kirjoitus epäonnistui."
-
-#: ../../../../build/work/app/help/messages.h:20
-msgid "MSG_BITMAP_TOO_LARGE\tBitmap is too large."
-msgstr "MSG_BITMAP_TOO_LARGE\tBitmap on liian suuri."
-
-#: ../../../../build/work/app/help/messages.h:21
-msgid "MSG_CHANGE_ELEV_MODE\tCannot change elevation mode."
-msgstr "MSG_CHANGE_ELEV_MODE\tKorkeustason muutos ei onnistu."
-
-#: ../../../../build/work/app/help/messages.h:22
-msgid ""
-"MSG_GRID_ENABLE_SPACE_GTR_0\tCannot Enable Grid; spacing must be greater "
-"than 0"
-msgstr ""
-"MSG_GRID_ENABLE_SPACE_GTR_0\tVälin on oltava suurempi kuin 0, jos ruudukko "
-"on käytössä"
-
-#: ../../../../build/work/app/help/messages.h:23
-msgid "MSG_LAYER_FREEZE\tCannot freeze current layer"
-msgstr "MSG_LAYER_FREEZE\tAktiivista tasoa ei voi jäädyttää"
-
-#: ../../../../build/work/app/help/messages.h:24
-msgid ""
-"MSG_CANT_GROUP_BUMPER1\tCannot Group Bumper Track. The track has been "
-"unselected."
-msgstr ""
-"MSG_CANT_GROUP_BUMPER1\tPäätepuskinta ei voi liittää ryhmään. Raideosan "
-"valinta on poistettu."
-
-#: ../../../../build/work/app/help/messages.h:25
-msgid "MSG_CANNOT_GROUP_TRACK\tCannot Group selected track."
-msgstr "MSG_CANNOT_GROUP_TRACK\tValittua raideosaa ei voida ryhmitellä."
-
-#: ../../../../build/work/app/help/messages.h:26
-msgid "MSG_LAYER_HIDE\tCannot hide current layer"
-msgstr "MSG_LAYER_HIDE\tAktiivista tasoa ei voi piilottaa"
-
-#: ../../../../build/work/app/help/messages.h:27
-#, fuzzy
-msgid "MSG_LAYER_MODULE\tCannot turn current layer into a Module"
-msgstr "MSG_LAYER_HIDE\tAktiivista tasoa ei voi piilottaa"
-
-#: ../../../../build/work/app/help/messages.h:28
-msgid "MSG_JOIN_EASEMENTS\tCannot Join; Easements do not align or abut."
-msgstr ""
-"MSG_JOIN_EASEMENTS\tEi voi yhdistää; Kaarreloivennukset eivät ole kohdakkain."
-
-#: ../../../../build/work/app/help/messages.h:29
-#, c-format
-msgid ""
-"MSG_TRK_ALREADY_CONN\tFirst|Second track is already connected.\tCannot Join; "
-"%s track is already connected."
-msgstr ""
-"MSG_TRK_ALREADY_CONN\tEnsimmäinen|Toinen raide on jo liitetty.\tEi voida "
-"liittää; %s raide on jo liitetty."
-
-#: ../../../../build/work/app/help/messages.h:30
-msgid "MSG_JOIN_TURNTABLE\tCannot join from a turntable, try to a turntable"
-msgstr ""
-"MSG_CANNOT_CHANGE\tKääntöpöydästä raiteeseen ei voi yhdistää. Kokeile "
-"raiteesta kääntöpöytään."
-
-#: ../../../../build/work/app/help/messages.h:31
-#, fuzzy
-msgid "MSG_JOIN_CORNU_SAME\tCannot Join; Selected endpoints are on same track."
-msgstr ""
-"MSG_JOIN_SAME\tEi voi liittää; valitut päätepisteet ovat samassa raideosassa."
-
-#: ../../../../build/work/app/help/messages.h:32
-msgid "MSG_JOIN_SAME\tCannot Join; Selected endpoints are on same track."
-msgstr ""
-"MSG_JOIN_SAME\tEi voi liittää; valitut päätepisteet ovat samassa raideosassa."
-
-#: ../../../../build/work/app/help/messages.h:33
-msgid ""
-"MSG_SELECTED_TRACKS_PARALLEL\tCannot Join; Selected tracks are parallel."
-msgstr ""
-"MSG_SELECTED_TRACKS_PARALLEL\tEi voida liittää; Valitut raiteet ovat "
-"samansuuntaiset."
-
-#: ../../../../build/work/app/help/messages.h:34
-#, c-format
-msgid ""
-"MSG_PRMFIL_OPEN_NEW\tCannot open New Parameter File: FILENAME\tCannot open "
-"New Parameter File: %s"
-msgstr ""
-"MSG_PRMFIL_OPEN_NEW\tUuden parametritiedoston TIEDOSTONIMI avaaminen ei "
-"onnistu\tUuden parametritiedoston %s avaaminen ei onnistu"
-
-#: ../../../../build/work/app/help/messages.h:35
-msgid "MSG_LAYER_SEL_FROZEN\tCannot select a frozen layer"
-msgstr "MSG_LAYER_SEL_FROZEN\tJäädytettyä tasoa ei voi valita"
-
-#: ../../../../build/work/app/help/messages.h:36
-msgid ""
-"MSG_GRID_SHOW_SPACE_GTR_0\tCannot Show Grid; spacing must be greater than 0"
-msgstr ""
-"MSG_GRID_SHOW_SPACE_GTR_0\tVälin on oltava suurempi kuin 0, jos ruudukko "
-"näytetään"
-
-#: ../../../../build/work/app/help/messages.h:37
-#, c-format
-msgid "MSG_CANT_SPLIT_TRK\tCannot split TYPE track\tCannot split %s track"
-msgstr "MSG_CANT_SPLIT_TRK\tRAIDETYYPPI: Ei voi pilkkoa\t%s: Ei voi pilkkoa"
-
-#: ../../../../build/work/app/help/messages.h:38
-#, c-format
-msgid ""
-"MSG_CUSTMGM_CANT_WRITE\tCannot write to parameter file: FILENAME\tCannot "
-"write to parameter file: %s"
-msgstr ""
-"MSG_CUSTMGM_CANT_WRITE\tEi voida kirjoittaa parametritiedostoon: TIEDOSTONIMI"
-"\tEi voida kirjoittaa parametritiedostoon: %s"
-
-#: ../../../../build/work/app/help/messages.h:39
-msgid "MSG_CARIMP_DUP_INDEX\tCar Index number duplicated."
-msgstr "MSG_CARIMP_DUP_INDEX\tKaksi samaa indeksiä löydetty."
-
-#: ../../../../build/work/app/help/messages.h:40
-msgid ""
-"MSG_CONN_PARAMS_TOO_SMALL\tConnection parameters reset to minimum values."
-msgstr ""
-"MSG_CONN_PARAMS_TOO_SMALL\tLiitosparametrit palautettu pienimpiin arvoihinsa."
-
-#: ../../../../build/work/app/help/messages.h:41
-#, fuzzy
-msgid "MSG_CONN_PARAMS_TOO_BIG\tConnection parameters reset to maximum values."
-msgstr ""
-"MSG_CONN_PARAMS_TOO_SMALL\tLiitosparametrit palautettu pienimpiin arvoihinsa."
-
-#: ../../../../build/work/app/help/messages.h:42
-msgid "MSG_CANT_PASTE\tCopy/Paste buffer is empty. There is nothing to Paste."
-msgstr ""
-"MSG_CANT_PASTE\tKopioi/liitä -puskuri on tyhjä. Ei ole mitään liitettävää."
-
-#: ../../../../build/work/app/help/messages.h:43
-msgid ""
-"MSG_TODSGN_CROSSOVER_TOO_SHORT\tCrossover length is too short. Correct..."
-"\tCrossover length is too short. Correct\n"
-"inappropriate value(s) and try again."
-msgstr ""
-"MSG_TODSGN_CROSSOVER_TOO_SHORT\tSovitettu raideristeys on liian lyhyt. "
-"Tarkasta...\tSovitettu raideristeys on liian lyhyt.\n"
-"Tarkasta arvot ja kokeile uudelleen."
-
-#: ../../../../build/work/app/help/messages.h:44
-msgid "MSG_CURVE_TOO_LARGE\tCurved track is too large."
-msgstr "MSG_CURVE_TOO_LARGE\tKaareva raide on liian suuri."
-
-#: ../../../../build/work/app/help/messages.h:45
-msgid ""
-"MSG_TODSGN_REPLACE\tDefinition name is already in use. Saving this..."
-"\tDefinition name is already in use. Saving this\n"
-"definition replaces the existing definition.\n"
-"\n"
-"Do you want to continue?"
-msgstr ""
-"MSG_TODSGN_REPLACE\tNimi on jo käytössä. Tallentamalla...\tNimi on jo "
-"käytössä. Tämän määrittelyn tallentaminen\n"
-"korvaa olemassa olevan saman nimisen määrittelyn.\n"
-"\n"
-"Haluatko jatkaa?"
-
-#: ../../../../build/work/app/help/messages.h:46
-msgid "MSG_SAVE_CHANGES\tDo you want to save the changes made to your Layout?"
-msgstr "MSG_SAVE_CHANGES\tHaluatko tallentaa ratasuunnitelman?"
-
-#: ../../../../build/work/app/help/messages.h:47
-msgid ""
-"MSG_CARIMP_DUP_COLUMNS\tDuplicate column headers found in Car Import file."
-msgstr ""
-"MSG_CARIMP_DUP_COLUMNS\tSama sarakeotsikko esiintyy useaan kertaan "
-"kalustotiedostossa."
-
-#: ../../../../build/work/app/help/messages.h:48
-msgid "MSG_EP_ON_PATH\tEndpoint already on Path."
-msgstr "MSG_EP_ON_PATH\tPäätepiste on jo reitillä."
-
-#: ../../../../build/work/app/help/messages.h:49
-#, c-format
-msgid ""
-"MSG_UPGRADE_VERSION1\tFile version %ld is greater than supported...\tFile "
-"version %ld is greater than supported\n"
-"version %d. You need to upgrade %s\n"
-"to at least version %s."
-msgstr ""
-"MSG_UPGRADE_VERSION1\tTiedoston versio %ld on suurempi kuin tuettu..."
-"\tTiedoston versio %ld on suurempi kuin tuettu versio %d\n"
-"%s täytyy päivittää vähintään versioon %s."
-
-#: ../../../../build/work/app/help/messages.h:50
-#, c-format
-msgid ""
-"MSG_UPGRADE_VERSION2\tFile version %ld is greater than supported...\tFile "
-"version %ld is greater than supported\n"
-"version %d. You need to upgrade your\n"
-"version of %s"
-msgstr ""
-"MSG_UPGRADE_VERSION2\tTiedoston versio %ld on suurempi kuin...\tTiedoston "
-"versio %ld on suurempi kuin tuettu versio %d.\n"
-"Versiosi %s:sta täytyy päivittää."
-
-#: ../../../../build/work/app/help/messages.h:51
-#, c-format
-msgid ""
-"MSG_LAYOUT_LINES_SKIPPED\tWhile processing Layout file %s, %d lines were "
-"skipped because they were not recognized."
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:52
-#, fuzzy, c-format
-msgid ""
-"MSG_PARAM_UPGRADE_VERSION1\tFile version %ld is greater than supported..."
-"\tFile version %ld is greater than supported\n"
-"version %d. You need to upgrade %s\n"
-"to at least version %s."
-msgstr ""
-"MSG_UPGRADE_VERSION1\tTiedoston versio %ld on suurempi kuin tuettu..."
-"\tTiedoston versio %ld on suurempi kuin tuettu versio %d\n"
-"%s täytyy päivittää vähintään versioon %s."
-
-#: ../../../../build/work/app/help/messages.h:53
-#, fuzzy, c-format
-msgid ""
-"MSG_PARAM_UPGRADE_VERSION2\tFile version %ld is greater than supported..."
-"\tFile version %ld is greater than supported\n"
-"version %d. You need to upgrade your\n"
-"version of %s"
-msgstr ""
-"MSG_UPGRADE_VERSION2\tTiedoston versio %ld on suurempi kuin...\tTiedoston "
-"versio %ld on suurempi kuin tuettu versio %d.\n"
-"Versiosi %s:sta täytyy päivittää."
-
-#: ../../../../build/work/app/help/messages.h:54
-#, c-format
-msgid ""
-"MSG_PARAM_LINES_SKIPPED\tWhile processing Parameter file %s, %d lines were "
-"skipped because they were not recognized."
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:55
-#, fuzzy
-msgid ""
-"MSG_MOVE_POINTS_OTHER_SIDE\tFrog angle prevents placement of points. Move "
-"points to opposite side of frog."
-msgstr ""
-"MSG_MOVE_POINTS_OTHER_SIDE\tVaihdekulma estää kielien päiden asettamisen..."
-"\tVaihdekulma estää kielien päiden asettamisen.\n"
-"Siirrä kielien päät risteyskappaleen toiselle puolelle."
-
-#: ../../../../build/work/app/help/messages.h:56
-msgid "MSG_NO_ROOM_BTW_TRKS\tInsufficient space between existing stall tracks."
-msgstr "MSG_NO_ROOM_BTW_TRKS\tRaiteiden välissä ei ole riittävästi tilaa."
-
-#: ../../../../build/work/app/help/messages.h:57
-#, c-format
-msgid ""
-"MSG_JOIN_DIFFER_ELEV\tJoining tracks with differing elevations (N.NNN)"
-"\tJoining tracks with differing elevations (%0.2f)"
-msgstr ""
-"MSG_JOIN_DIFFER_ELEV\tEri korkeuksilla olevien raiteiden liitos (N.NN)\tEri "
-"korkeuksilla olevien raiteiden liitos (%0.2f)."
-
-#: ../../../../build/work/app/help/messages.h:58
-#, fuzzy
-msgid "MSG_TRK_DESC_NOT_VISIBLE\tLabel description is hidden"
-msgstr "MSG_DESC_NOT_VISIBLE\tKuvaukset eivät ole näkyvissä"
-
-#: ../../../../build/work/app/help/messages.h:59
-msgid "MSG_DESC_NOT_VISIBLE\tLabel descriptions not visible"
-msgstr "MSG_DESC_NOT_VISIBLE\tKuvaukset eivät ole näkyvissä"
-
-#: ../../../../build/work/app/help/messages.h:60
-msgid "MSG_OBJECT_TOO_SHORT\tLength of object is too short."
-msgstr "MSG_OBJECT_TOO_SHORT\tPituus on liian lyhyt."
-
-#: ../../../../build/work/app/help/messages.h:61
-#, c-format
-msgid ""
-"MSG_PRINT_MAX_SIZE\tMaximum allowed page size is W x H\tMaximum allowed page "
-"size is %s x %s"
-msgstr ""
-"MSG_PRINT_MAX_SIZE\tSivun maksimikoko on L x K.\tSivun maksimikoko on %s x %"
-"s."
-
-#: ../../../../build/work/app/help/messages.h:62
-msgid ""
-"MSG_NO_PRINTER_SELECTED\tPlease select a printer from the Print Setup dialog."
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:63
-#, c-format
-msgid ""
-"MSG_PRMFIL_NO_CONTENTS\tNew Parameter File has no CONTENTS line: FILENAME."
-"\tNew Parameter File has no CONTENTS line: %s"
-msgstr ""
-"MSG_PRMFIL_NO_CONTENTS\tUudessa parametritiedostossa ei ole CONTENTS riviä: "
-"TIEDOSTONIMI.\tUudessa parametritiedostossa ei ole CONTENTS riviä: %s"
-
-#: ../../../../build/work/app/help/messages.h:64
-msgid ""
-"MSG_NO_CARS\tNo Cars are defined for the current scale....\tNo Cars are "
-"defined for the current scale.\n"
-"\n"
-"Do you want to use the Car Inventory dialog?"
-msgstr ""
-"MSG_NO_CARS\tVaunuja tai vetureita ei ole määritelty tälle mittakaavalle..."
-"\tVaunuja tai vetureita ei ole määritelty tälle mittakaavalle.\n"
-"\n"
-"Haluatko avata kalustoluettelon?"
-
-#: ../../../../build/work/app/help/messages.h:65
-msgid ""
-"MSG_NO_CARPROTO\tNo Car Prototypes are defined....\tNo Car Prototypes are "
-"defined.\n"
-"Load a Prototype definition file using the\n"
-"Parameter Files dialog or create a Prototype\n"
-"definition using the Car Prototype dialog."
-msgstr ""
-"MSG_NO_CARPROTO\tEsikuvia ei ole määritelty...\tEsikuvia ei ole määritelty.\n"
-"Lataa esikuvien määrittely tiedosto Parametritiedostot -ikkunassa\n"
-"tai luo uusi esikuvan määrittely."
-
-#: ../../../../build/work/app/help/messages.h:66
-msgid "MSG_CARIMP_NO_DATA\tNo data present in Car Import file."
-msgstr "MSG_CARIMP_NO_DATA\tKalustotiedosto on tyhjä."
-
-#: ../../../../build/work/app/help/messages.h:67
-msgid "MSG_PRINT_NO_PAGES\tNo pages selected for printing."
-msgstr "MSG_PRINT_NO_PAGES\tYhtään sivua ei ole valittu tulostettavaksi."
-
-#: ../../../../build/work/app/help/messages.h:68
-msgid "MSG_NO_PATH_TO_EP\tNo path between Profile and selected endpoint."
-msgstr "MSG_NO_PATH_TO_EP\tValituun päätepisteeseen ei ole reittiä."
-
-#: ../../../../build/work/app/help/messages.h:69
-#, c-format
-msgid ""
-"MSG_PRMFIL_NO_MAP\tNo Parameter File Map for CONTENTS\tNo Parameter File Map "
-"for %s"
-msgstr ""
-"MSG_PRMFIL_NO_MAP\tParametritiedostolle \"NNN\" ei löydy \"Parameter File Map"
-"\" tietoa.\tParametritiedostolle \"%s\" ei löydy \"Parameter File Map\" "
-"tietoa."
-
-#: ../../../../build/work/app/help/messages.h:70
-msgid "MSG_NO_SELECTED_TRK\tNo track(s) selected!"
-msgstr "MSG_NO_SELECTED_TRK\tEi valittuja raiteita!"
-
-#: ../../../../build/work/app/help/messages.h:71
-msgid ""
-"MSG_NO_EMPTY_LAYER\tNo layer was found that has no contents, so the module "
-"can not be imported"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:72
-#, c-format
-msgid ""
-"MSG_NO_TURNOUTS_AVAILABLE\tNo Turnouts|Structures are available.\tNo %s are "
-"available."
-msgstr ""
-"MSG_NO_TURNOUTS_AVAILABLE\tRaideosat|Rakennukset eivät ole saatavilla.\t%s "
-"eivät ole saatavilla."
-
-#: ../../../../build/work/app/help/messages.h:73
-msgid ""
-"MSG_CARDESC_VALUE_ZERO\tNumeric values on the Car Description...\tNumeric "
-"values on the Car Description\n"
-"dialog must be greater than 0."
-msgstr ""
-"MSG_CARDESC_VALUE_ZERO\tVaunun/veturin määrittelyn numeeristen arvojen..."
-"\tVaunun/veturin määrittelyn numeeristen arvojen täytyy olla suurempia kuin "
-"0."
-
-#: ../../../../build/work/app/help/messages.h:74
-msgid "MSG_MOVE_OUT_OF_BOUNDS\tObject has moved beyond room boundaries."
-msgstr ""
-"MSG_MOVE_OUT_OF_BOUNDS\tObjekti on siirretty huoneen rajojen ulkopuolelle."
-
-#: ../../../../build/work/app/help/messages.h:75
-#, fuzzy
-msgid ""
-"MSG_PARALLEL_SEP_GTR_0\tParallel separation must be greater than 0, or the "
-"new guage must be different than the old."
-msgstr ""
-"MSG_PARALLEL_SEP_GTR_0\tRinnakkaisten raiteiden välin on oltava suurempi "
-"kuin 0."
-
-#: ../../../../build/work/app/help/messages.h:76
-msgid ""
-"MSG_CARPART_DUPNAME\tPart Number for this Manufacturer already exists...."
-"\tPart Number for this Manufacturer already exists.\n"
-"\n"
-"Do you want to update it?"
-msgstr ""
-"MSG_CARPART_DUPNAME\tTuotekoodi tälle valmistajalle on jo käytössä..."
-"\tTuotekoodi tälle valmistajalle on jo käytössä.\n"
-"\n"
-"Haluatko päivittää sen?"
-
-#: ../../../../build/work/app/help/messages.h:77
-#, c-format
-msgid ""
-"MSG_PLAYBACK_LISTENTRY\tPlayback: Cannot find list entry: NAME\tPlayback: "
-"Cannot find list entry: %s"
-msgstr ""
-"MSG_PLAYBACK_LISTENTRY\tMakrojen toisto: Luettelosta ei löydy: ...\tMakrojen "
-"toisto: Luettelosta ei löydy: %s"
-
-#: ../../../../build/work/app/help/messages.h:78
-#, c-format
-msgid ""
-"MSG_PLAYBACK_VERSION_UPGRADE\tPlayback file version %ld is...\tPlayback file "
-"version %ld is\n"
-"greater than supported version %d\n"
-"You need to upgrade your version of %s"
-msgstr ""
-"MSG_PLAYBACK_VERSION_UPGRADE\tMakro tiedoston versio %ld on...\tMakro "
-"tiedoston versio %ld on suurempi kuin tuettu versio %d\n"
-"Versiosi %s:sta täytyy päivittää."
-
-#: ../../../../build/work/app/help/messages.h:79
-#, c-format
-msgid ""
-"MSG_DOMOUSE_BAD_OP\tPlayback: unknown action NNN\tPlayback: unknown action %d"
-msgstr ""
-"MSG_DOMOUSE_BAD_OP\tToisto: tuntematon toimenpide NNN\tToisto: tuntematon "
-"toimenpide %d"
-
-#: ../../../../build/work/app/help/messages.h:80
-msgid "MSG_MOVE_POINTS_AWAY_CLOSE\tPoints are to close to frog; move away."
-msgstr ""
-"MSG_MOVE_POINTS_AWAY_CLOSE\tKielten päät ovat liian lähellä "
-"risteyskappaletta; siirrä kauemmaksi."
-
-#: ../../../../build/work/app/help/messages.h:81
-msgid "MSG_POLY_SHAPES_3_SIDES\tPoly shapes must have at least 3 sides."
-msgstr "MSG_POLY_SHAPES_3_SIDES\tMonikulmiossa on oltava vähintään 3 sivua."
-
-#: ../../../../build/work/app/help/messages.h:82
-msgid "MSG_POLY_MULTIPLE_SELECTED\tCan't delete multiple points at once"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:83
-msgid ""
-"MSG_CARPROTO_DUPNAME\tPrototype name already exists....\tPrototype name "
-"already exists.\n"
-"\n"
-"Do you want to update it?"
-msgstr ""
-"MSG_CARPROTO_DUPNAME\tSaman niminen esikuva on jo olemassa...\tSaman niminen "
-"esikuva on jo olemassa.\n"
-"\n"
-"Haluatko päivittää sen?"
-
-#: ../../../../build/work/app/help/messages.h:84
-msgid "MSG_RADIUS_GTR_0\tRadius must be greater than 0."
-msgstr "MSG_RADIUS_GTR_0\tSäteen on oltava suurempi kuin 0."
-
-#: ../../../../build/work/app/help/messages.h:85
-#, fuzzy
-msgid "MSG_RADIUS_GTR_10000\tRadius must be less than 10000."
-msgstr "MSG_RADIUS_GTR_0\tSäteen on oltava suurempi kuin 0."
-
-#: ../../../../build/work/app/help/messages.h:86
-msgid ""
-"MSG_RADIUS_TOO_BIG\tThe Circle or Helix will not fit within the layouts room "
-"parameters (Height and Width)."
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:87
-#, c-format
-msgid ""
-"MSG_RESCALE_TOO_BIG\tRescaled tracks do not fit within layouts room "
-"parameters...\tRescaled tracks do not fit within layouts room parameters\n"
-"(Height and width). The layouts room parameters should be\n"
-"set to at least %s by %s."
-msgstr ""
-"MSG_RESCALE_TOO_BIG\tSkaalatut raiteet eivät mahdu ratasuunnitelmassa..."
-"\tSkaalatut raiteet eivät mahdu ratasuunnitelmassa\n"
-"määritellyn huoneen rajojen sisäpuolelle. Huoneen koon\n"
-"pitäisi olla vähintään %s x %s (korkeus x leveys)."
-
-#: ../../../../build/work/app/help/messages.h:88
-msgid ""
-"MSG_CARIMP_MISSING_COLUMNS\tRequired column headers missing from Car Import "
-"file."
-msgstr ""
-"MSG_CARIMP_MISSING_COLUMNS\tKalustotiedostosta puuttuu tarpeellisia "
-"sarakkeiden otsikoita."
-
-#: ../../../../build/work/app/help/messages.h:89
-#, c-format
-msgid ""
-"MSG_2ND_TRK_NOT_SEL_UNSEL\tSecond track must be selected|unselected\tSecond "
-"track must be %s."
-msgstr ""
-"MSG_2ND_TRK_NOT_SEL_UNSEL\tToisen raiteen on oltava valittu|valitsematta"
-"\tToisen raiteen on oltava %s."
-
-#: ../../../../build/work/app/help/messages.h:90
-msgid "MSG_OUT_OF_BOUNDS\tSelected page is out of bounds."
-msgstr "MSG_OUT_OF_BOUNDS\tSivu ylittää rajat."
-
-#: ../../../../build/work/app/help/messages.h:91
-msgid "MSG_SEL_POS_FIRST\tSelect position prior to entering Text."
-msgstr "MSG_SEL_POS_FIRST\tValitse sijainti ennen tekstin syöttämistä."
-
-#: ../../../../build/work/app/help/messages.h:92
-msgid ""
-"MSG_CARPROTO_BADSEGS\tSelected shapes must define a rectangular area ..."
-"\tSelected shapes must define a rectangular\n"
-"area with length greater than height."
-msgstr ""
-"MSG_CARPROTO_BADSEGS\tValittujen muotojen on määriteltävä nelikulmio..."
-"\tValittujen muotojen on määriteltävä nelikulmio,\n"
-"jonka pituus on korkeutta suurempi."
-
-#: ../../../../build/work/app/help/messages.h:93
-#, fuzzy
-msgid ""
-"MSG_TOO_FAR_APART_DIVERGE\tSelected tracks deviate too much or are too far "
-"apart from each other."
-msgstr ""
-"MSG_TOO_FAR_APART_DIVERGE\tValitut raiteet poikkeavat liikaa...\tValitut "
-"raiteet poikkeavat liikaa toisistaan\n"
-"tai ovat liian kaukana toisistaan."
-
-#: ../../../../build/work/app/help/messages.h:94
-msgid "MSG_COMMAND_DISABLED\tSpecified command disabled."
-msgstr "MSG_COMMAND_DISABLED\tTämä komento ei ole käytössä."
-
-#: ../../../../build/work/app/help/messages.h:95
-msgid "MSG_SPLIT_POS_BTW_MERGEPTS\tSplit position between Turnout Points"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:96
-msgid "MSG_SPLIT_PATH_NOT_UNIQUE\tSplit position not on unique path"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:97
-#, c-format
-msgid ""
-"MSG_CARIMP_MISSING_DIMS\tThe following car has no dimensions and a...\tThe "
-"following car has no dimensions and a\n"
-"Car Part description can not be found.\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to continue importing other Cars?"
-msgstr ""
-"MSG_CARIMP_MISSING_DIMS\tVaunun tai veturin mitat ja kuvaus puuttuvat..."
-"\tVaunun tai veturin mitat ja kuvaus puuttuvat:\n"
-"\n"
-"%s\n"
-"\n"
-"Haluatko jatkaa muiden vaunujen ja veturien tuontia tiedostosta?"
-
-#: ../../../../build/work/app/help/messages.h:98
-#, c-format
-msgid ""
-"MSG_CARIMP_MISSING_PARTNO\tThe following car has no Part Number...\tThe "
-"following car has no Part Number\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to continue importing other Cars?"
-msgstr ""
-"MSG_CARIMP_MISSING_PARTNO\tVaunun tai veturin tuotenumero puuttuu...\tVaunun "
-"tai veturin tuotenumero puuttuu:\n"
-"\n"
-"%s\n"
-"\n"
-"Haluatko jatkaa muiden vaunujen ja veturien tuontia tiedostosta?"
-
-#: ../../../../build/work/app/help/messages.h:99
-#, c-format
-msgid ""
-"MSG_CARIMP_IGNORED_COLUMN\tThe following column in the Car Import file will "
-"be ignored:...\tThe following column in the Car Import file will be "
-"ignored:\n"
-"\n"
-"%s"
-msgstr ""
-"MSG_CARIMP_IGNORED_COLUMN\tSeuraava kalustotiedoston sarake jätetään "
-"huomiotta:...\tSeuraava kalustotiedoston sarake jätetään huomiotta:\n"
-"\n"
-"%s"
-
-#: ../../../../build/work/app/help/messages.h:100
-#, fuzzy
-msgid ""
-"MSG_CANT_MOVE_UNDER_TRAIN\tThe position of a turnout or turntable cannot be "
-"changed while occupied by a train."
-msgstr ""
-"MSG_CANT_MOVE_UNDER_TRAIN\tVaihteita tai kääntöpöytää ei voi kääntää..."
-"\tVaihteita tai kääntöpöytää ei voi kääntää junan ollessa päällä."
-
-#: ../../../../build/work/app/help/messages.h:101
-msgid ""
-"MSG_STRUCT_NO_STRUCTS\tThere are no structures to choose from in the "
-"structure...\tThere are no structures to choose from in the structure\n"
-"selection list. Please check your SCALE, select the\n"
-"<File|Parameter Files> menu to load a Parameter File or\n"
-"create a new Structure with the Group command."
-msgstr ""
-"MSG_STRUCT_NO_STRUCTS\tRakennusten valintaluettelossa ei ole yhtään..."
-"\tRakennusten valintaluettelossa ei ole yhtään rakennusta\n"
-"valittavissa. Tarkasta mittakaava, valitse\n"
-"<Tiedosto|Parametritiedostot> valikosta ladataksesi\n"
-"parametritiedostoja tai luo uusi rakennus Ryhmittele komennolla."
-
-#: ../../../../build/work/app/help/messages.h:102
-#, fuzzy
-msgid ""
-"MSG_TURNOUT_NO_TURNOUT\tThere are no turnouts to choose from in the "
-"turnout...\tThere are no turnouts to choose from in the turnout\n"
-"selection list. Please check your SCALE, select the\n"
-"<Manage|Turnout Designer> menu to enter a new turnout\n"
-"or select the <File|Parameter Files> menu to load a\n"
-"Parameter File"
-msgstr ""
-"MSG_TURNOUT_NO_TURNOUT\tRaideosien valintaluettelossa ei ole yhtään..."
-"\tRaideosien valintaluettelossa ei ole yhtään raideosaa\n"
-"valittavissa. Tarkasta mittakaava, valitse\n"
-"<Muokkaa|Raideosien suunnittelu> valikko lisätäksesi uusi raideosa\n"
-"tai valitse <Tiedosto|Parametritiedostot> valikko ladataksesi\n"
-"parametritiedoston."
-
-#: ../../../../build/work/app/help/messages.h:103
-msgid "MSG_NO_UNCONN_EP\tThere are no unconnected end points for this track"
-msgstr "MSG_NO_UNCONN_EP\tRaiteessa ei ole liittämättömiä päätepisteitä"
-
-#: ../../../../build/work/app/help/messages.h:104
-msgid "MSG_PULL_FEW_SECTIONS\tThere are too few sections in this loop."
-msgstr ""
-"MSG_PULL_FEW_SECTIONS\tSilmukassa tai sivuraiteessa on liian vähän raideosia."
-
-#: ../../../../build/work/app/help/messages.h:105
-msgid "MSG_NO_REDO\tThere is nothing to redo!"
-msgstr "MSG_NO_REDO\tEi ole mitään uudelleen tehtävää!"
-
-#: ../../../../build/work/app/help/messages.h:106
-msgid "MSG_NO_UNDO\tThere is nothing to undo!"
-msgstr "MSG_NO_UNDO\tEi ole mitään kumottavaa!"
-
-#: ../../../../build/work/app/help/messages.h:107
-msgid "MSG_TOOMANYSEGSINGROUP\tToo many segments in Group."
-msgstr "MSG_TOOMANYSEGSINGROUP\tRyhmässä on liian monta lohkoa."
-
-#: ../../../../build/work/app/help/messages.h:108
-msgid "MSG_CANNOT_CHANGE\tTrack cannot be changed."
-msgstr "MSG_CANNOT_CHANGE\tRaidetta ei voi muuttaa."
-
-#: ../../../../build/work/app/help/messages.h:109
-msgid "MSG_POINT_INSIDE_TURNTABLE\tTrack endpoint is within turntable radius."
-msgstr ""
-"MSG_POINT_INSIDE_TURNTABLE\tRaiteen päätepiste on kääntöpöydän säteen "
-"sisäpuolella."
-
-#: ../../../../build/work/app/help/messages.h:110
-msgid ""
-"MSG_MOVE_POINTS_AWAY_NO_INTERSECTION\tTrack intersection not possible; move "
-"points away from frog."
-msgstr ""
-"MSG_MOVE_POINTS_AWAY_NO_INTERSECTION\tRaiteet eivät kohtaa. Siirrä kielten "
-"päät kauemmaksi risteyskappaleesta."
-
-#: ../../../../build/work/app/help/messages.h:111
-#, c-format
-msgid ""
-"MSG_TRK_TOO_SHORT\tTrack is too short by N.NNN\t%strack is too short by %0.3f"
-msgstr ""
-"MSG_TRK_TOO_SHORT\tRaide on N.NNN liian lyhyt\t%sraide on %0.3f liian lyhyt"
-
-#: ../../../../build/work/app/help/messages.h:112
-#, fuzzy, c-format
-msgid ""
-"MSG_RADIUS_LSS_EASE_MIN\tTrack radius (N.NNN) is smaller than easement "
-"minimum (N.NNN).\tTrack radius (%s) is smaller than easement minimum (%s)."
-msgstr ""
-"MSG_RADIUS_LSS_EASE_MIN\tRaiteen säde (N.NNN) on pienempi kuin "
-"kaarreloivennuksen pienin sallittu säde (N.NNN).\tRaiteen säde (%s) on "
-"pienempi kuin kaarreloivennuksen pienin sallittu säde (%s)."
-
-#: ../../../../build/work/app/help/messages.h:113
-msgid ""
-"MSG_CANT_MODIFY_FROZEN_TRK\tTracks in a frozen layer cannot be modified."
-msgstr ""
-"MSG_CANT_MODIFY_FROZEN_TRK\tJäädytetyllä tasolla olevia raiteita ei voi "
-"muokata."
-
-#: ../../../../build/work/app/help/messages.h:114
-#, fuzzy
-msgid "MSG_CANT_MODIFY_MODULE_TRK\tTracks in a module cannot be modified."
-msgstr ""
-"MSG_CANT_MODIFY_FROZEN_TRK\tJäädytetyllä tasolla olevia raiteita ei voi "
-"muokata."
-
-#: ../../../../build/work/app/help/messages.h:115
-msgid ""
-"MSG_SEGMENTS_DIFFER\tTurnout definition contains non-track segments...."
-"\tTurnout definition contains non-track segments.\n"
-"\n"
-"Do you want to include them in this update?"
-msgstr ""
-"MSG_SEGMENTS_DIFFER\tRaideosan määrittelyssä on osia, jotka eivät ole "
-"raiteita...\tRaideosan määrittelyssä on osia, jotka eivät ole raiteita.\n"
-"\n"
-"Haluatko sisällyttää ne?"
-
-#: ../../../../build/work/app/help/messages.h:116
-msgid "MSG_TURNTABLE_DIAM_GTR_0\tTurntable diameter must greater than 0."
-msgstr ""
-"MSG_TURNTABLE_DIAM_GTR_0\tKääntöpöydän halkaisijan on oltava suurempi kuin 0."
-
-#: ../../../../build/work/app/help/messages.h:117
-#, c-format
-msgid ""
-"MSG_UNDO_ASSERT\tUndo assertion failure %s:%d...\tUndo assertion failure %s:%"
-"d\n"
-"Val = %ld(%lx)\n"
-"%s\n"
-"Please report this error to the XTrackCAD project development team at "
-"SourceForge."
-msgstr ""
-"MSG_UNDO_ASSERT\tVirhe kumottaessa edellinen toiminto (%s:%d)...\tVirhe "
-"kumottaessa edellinen toiminto (%s:%d)\n"
-"Arvo = %ld(%lx)\n"
-"%s\n"
-"Ole ystävällinen ja ilmoita tästä virheestä XTrackCAD projektin "
-"kehitysryhmälle SourceForge.net:ssä."
-
-#: ../../../../build/work/app/help/messages.h:118
-#, fuzzy, c-format
-msgid ""
-"MSG_PROG_CORRUPTED\tCritical file damaged!...\tCritical file damaged!\n"
-"\n"
-"%s is corrupt.\n"
-"\n"
-"Please reinstall software."
-msgstr ""
-"MSG_PROG_CORRUPTED\tKriittinen tiedosto on vaurioitunut!...\tKriittinen "
-"tiedosto on vaurioitunut!\n"
-"\n"
-"%s on korruptoitunut.\n"
-"\n"
-"Asenna ohjelmisto uudelleen."
-
-#: ../../../../build/work/app/help/messages.h:119
-#, c-format
-msgid ""
-"MSG_ENTERED_STRING_TRUNCATED\tThe entered text is too long. Maximum length "
-"is %d."
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:120
-#, c-format
-msgid "MSG_PT_IS_NOT_TRK\t[X Y] is not a track\t[%s %s] is not a track."
-msgstr "MSG_PT_IS_NOT_TRK\t[X Y] ei ole raide\t[%s %s] ei ole raide."
-
-#: ../../../../build/work/app/help/messages.h:121
-msgid ""
-"MSG_BITMAP_SIZE_WARNING\tYou have specified a large Bitmap....\tYou have "
-"specified a large Bitmap.\n"
-"\n"
-"Are you sure you want to continue?"
-msgstr ""
-"MSG_BITMAP_SIZE_WARNING\tOlet määritellyt suuren Bitmap kuvan...\tOlet "
-"määritellyt suuren Bitmap kuvan.\n"
-"\n"
-"Haluatko varmasti jatkaa?"
-
-#: ../../../../build/work/app/help/messages.h:122
-#, c-format
-msgid "Are you sure you want to delete these %d car(s)?"
-msgstr "Haluatko varmasti poistaa nämä %d vaunua/veturia?"
-
-#: ../../../../build/work/app/help/messages.h:123
-#, c-format
-msgid ""
-"Cannot open %s file:\n"
-"%s:%s"
-msgstr ""
-"Tiedostoa %s ei voida avata:\n"
-"%s: %s"
-
-#: ../../../../build/work/app/help/messages.h:124
-#, fuzzy, c-format
-msgid "Cannot create directory: %s - %s"
-msgstr "%s luonti ei onnistu."
-
-#: ../../../../build/work/app/help/messages.h:125
-#, fuzzy, c-format
-msgid "Cannot open directory: %s"
-msgstr ""
-"Tiedostoa %s ei voida avata:\n"
-"%s: %s"
-
-#: ../../../../build/work/app/help/messages.h:126
-#, c-format
-msgid "Path for deletion is not a directory: %s"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:127
-#, c-format
-msgid "Open failed for directory: %s"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:128
-#, c-format
-msgid "Can't add directory record %s to zip - %s"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:129
-#, c-format
-msgid "Can't add file record %s to zip at %s - %s"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:130
-#, fuzzy, c-format
-msgid "Can't create zip %s - %s"
-msgstr "%s luonti ei onnistu."
-
-#: ../../../../build/work/app/help/messages.h:131
-#, c-format
-msgid "Close failure for zip %s - %s"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:132
-#, c-format
-msgid "Rename failure for zip from %s to %s - %s"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:133
-#, c-format
-msgid "Open failure for zip %s - %s"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:134
-#, c-format
-msgid "Index failure for zip %s - %s"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:135
-#, c-format
-msgid "Open read file failure %s %s"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:136
-#, c-format
-msgid "Open file in zip failure %s %s"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:137
-#, c-format
-msgid "Unlink failed for: %s"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:138
-#, c-format
-msgid "Remove Directory failed for: %s"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:139
-#, c-format
-msgid "Cannot save archive to %s from directory: %s"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:140
-#, c-format
-msgid "Cannot save manifest file to %s"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:141
-#, fuzzy, c-format
-msgid "Cannot open manifest file %s"
-msgstr ""
-"Tiedostoa %s ei voida avata:\n"
-"%s: %s"
-
-#: ../../../../build/work/app/help/messages.h:142
-#, c-format
-msgid "Cannot unpack file: %s for file: %s in directory: %s"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:143
-#, fuzzy, c-format
-msgid "Cannot open file %s"
-msgstr ""
-"Tiedostoa %s ei voida avata:\n"
-"%s: %s"
-
-#: ../../../../build/work/app/help/messages.h:144
-#, c-format
-msgid "Cannot copy file %s into directory %s"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:145
-#, c-format
-msgid "Unrecognized Option: %s"
-msgstr "Tunnistamaton valinta: %s"
-
-#: ../../../../build/work/app/help/messages.h:146
-#, c-format
-msgid ""
-"End-Of-Line is unexpected in a quoted field.\n"
-"%s\n"
-"\n"
-"Do you want to continue reading the file?"
-msgstr ""
-"Odottamaton rivin loppu lainausmerkkien sisällä.\n"
-"%s\n"
-"\n"
-"Haluatko jatkaa tiedoston lukemista?"
-
-#: ../../../../build/work/app/help/messages.h:147
-#, c-format
-msgid ""
-"A comma was expected after this quoted field.\n"
-"%s\n"
-"\n"
-"Do you want to continue reading the file?"
-msgstr ""
-"Odotettiin pilkkua tämän kentän jälkeen.\n"
-"%s\n"
-"\n"
-"Haluatko jatkaa tiedoston lukemista?"
-
-#: ../../../../build/work/app/help/messages.h:148
-#, c-format
-msgid ""
-"Error \\\\\"%s\\\\\" occurred while writing %s.\n"
-"Please check disk space and system status."
-msgstr ""
-"Virhe \\\\\"%s\\\\\" tapahtui kirjoitettaessa %s.\n"
-"Tarkasta levytila ja järjestelmän tila."
-
-#: ../../../../build/work/app/help/messages.h:149
-#, fuzzy, c-format
-msgid ""
-"At least one path for the Turnout T%d does not\n"
-"terminate on an endpoint. Such a track cannot be grouped.\n"
-"The track has been unselected."
-msgstr ""
-"Ainakin yksi raideosan T%d reiteistä loppuu muuhun kuin\n"
-"päätepisteeseen. Tällaista raideosaa ei voi ryhmitellä.\n"
-"Raideosan valinta on poistettu."
-
-#: ../../../../build/work/app/help/messages.h:150
-msgid "inv-pathEndTrk on Path."
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:151
-msgid "inv-pathStartTrk on Path"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:152
-#, c-format
-msgid "%s:%d- %s"
-msgstr "%s:%d- %s"
-
-#: ../../../../build/work/app/help/messages.h:153
-msgid "pathEndTrk not on Path."
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:154
-msgid "pathStartTrk not on Path."
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:155
-msgid ""
-"The tracks cannot be connected together.\n"
-"\n"
-"Try changing some tracks for a closer fit\n"
-"or increase the Connection Angle value on\n"
-"the Preferences dialog."
-msgstr ""
-"Raiteita ei voi yhdistää.\n"
-"\n"
-"Kokeile sovittaa raiteet paremmin keskenään\n"
-" tai kasvata liitoskulmaa ohjelman ominaisuuksista."
-
-#: ../../../../build/work/app/help/messages.h:156
-msgid ""
-"The tracks cannot be connected together.\n"
-"\n"
-"Try changing some tracks for a closer fit\n"
-"or increase the Connection Distance and\n"
-"Angle values on the Preferences dialog"
-msgstr ""
-"Raiteita ei voi yhdistää.\n"
-"\n"
-"Kokeile sovittaa raiteet paremmin keskenään\n"
-" tai kasvata liitoskulmaa ja liitosetäisyyttä ohjelman ominaisuuksista."
-
-#: ../../../../build/work/app/help/messages.h:157
-msgid ""
-"The tracks cannot be connected together.\n"
-"\n"
-"Try changing some tracks for a closer fit\n"
-"or increase the Connection Distance"
-msgstr ""
-"Raiteita ei voi yhdistää.\n"
-"\n"
-"Kokeile sovittaa raiteet paremmin keskenään\n"
-" tai kasvata liitosetäisyyttä ohjelman ominaisuuksista."
-
-#: ../../../../build/work/app/help/messages.h:158
-msgid ""
-"The first track for the Align\n"
-"Rotate command must be Selected."
-msgstr ""
-"Kohdistuskomennon ensimmäisen\n"
-"raideosan on oltava valittuna."
-
-#: ../../../../build/work/app/help/messages.h:159
-msgid ""
-"The second track for the Align\n"
-"Rotate command must be Unselected."
-msgstr ""
-"Kohdistuskomennon toisen raideosan\n"
-"on oltava valitsematon."
-
-#: ../../../../build/work/app/help/messages.h:160
-msgid "Too many selected tracks, drawing tracks as End Point."
-msgstr ""
-"Liian monta valittua raidetta. Piirretään raiteet pelkkinä päätepisteinä."
-
-#: ../../../../build/work/app/help/messages.h:161
-msgid "Select an endpoint between two tracks."
-msgstr "Valitse kahden raideosan välinen päätepiste."
-
-#: ../../../../build/work/app/help/messages.h:162
-msgid ""
-"According to values that have been entered the diverging\n"
-"track does not connect with the tangent track. Please\n"
-"check the values entered and try again. Check the angle\n"
-"is entered as a frog number or in degrees as specified\n"
-"by Angle Mode radio buttons."
-msgstr ""
-"Antamiesi arvojen perusteella, poikkeava ja suora\n"
-"raide eivät kohtaa.\n"
-"Tarkasta arvot ja kokeile uudelleen.\n"
-"Tarkasta myös onko kulma annettu risteysnumerona vai asteina."
-
-#: ../../../../build/work/app/help/messages.h:163
-msgid "Moved before the end of the turnout"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:164
-msgid ""
-"The Coupled Length must be greater than the Car Length,\n"
-"and the Coupler Length must be greater than 0."
-msgstr ""
-"Pituuden kytkimineen on oltava suurempi kuin vaunun/veturin pituus,\n"
-"ja kytkimen pituuden on oltava suurempi kuin 0."
-
-#: ../../../../build/work/app/help/messages.h:165
-msgid ""
-"The Car Length value must be greater\n"
-"than the Car Width value."
-msgstr "Pituuden on oltava leveyttä suurempi."
-
-#: ../../../../build/work/app/help/messages.h:166
-msgid ""
-"The specified Index is already in use.\n"
-"The Index will be updated to the next available value."
-msgstr ""
-"Määritelty indeksi on jo käytössä.\n"
-"Indeksi muutetaan seuraavaksi vapaaksi arvoksi."
-
-#: ../../../../build/work/app/help/messages.h:167
-msgid ""
-"You have changed values for this object.\n"
-"\n"
-"Are you sure you want to Close?"
-msgstr ""
-"Olet muuttanut tämän objektin arvoja.\n"
-"\n"
-"Haluatko varmasti sulkea?"
-
-#: ../../../../build/work/app/help/messages.h:168
-#, c-format
-msgid ""
-"File version %ld is lower than the minimum\n"
-"supported version %d. You need to update your\n"
-"layout file using an older version of %s"
-msgstr ""
-"Tiedoston versio %ld on pienempi kuin pienin tuettu versio %d\n"
-"Ratasuunnitelmasi täytyy päivittää käyttäen vanhempaa versiota %s:sta."
-
-#: ../../../../build/work/app/help/messages.h:169
-#, fuzzy, c-format
-msgid ""
-"File version %ld is lower than the minimum\n"
-"supported version %d.This parameter file will only work using an older "
-"version of %s"
-msgstr ""
-"Tiedoston versio %ld on pienempi kuin pienin tuettu versio %d\n"
-"Ratasuunnitelmasi täytyy päivittää käyttäen vanhempaa versiota %s:sta."
-
-#: ../../../../build/work/app/help/messages.h:170
-#, c-format
-msgid ""
-"%s cannot read the demo file:\n"
-"%s"
-msgstr ""
-"%s ei voi lukea demotiedostoa:\n"
-"%s"
-
-#: ../../../../build/work/app/help/messages.h:171
-#, c-format
-msgid "doDemo: bad number (%d)"
-msgstr "Demo: Virheellinen demon numero (%d)."
-
-#: ../../../../build/work/app/help/messages.h:172
-msgid "Playback TIMEEND without TIMESTART"
-msgstr "Toistossa TIMEEND ilman TIMESTART:ia"
-
-#: ../../../../build/work/app/help/messages.h:173
-#, c-format
-msgid ""
-"Unknown playback command (%d)\n"
-"%s"
-msgstr ""
-"Tuntematon toistokomento (%d)\n"
-"%s"
-
-#: ../../../../build/work/app/help/messages.h:174
-#, c-format
-msgid ""
-"Playback file version %ld is lower than the\n"
-"minimum supported version %d.\n"
-"You need to update your layout file using an\n"
-"older version of %s"
-msgstr ""
-"Tiedoston versio %ld on pienempi kuin pienin tuettu versio %d\n"
-"Ratasuunnitelmasi täytyy päivittää käyttäen vanhempaa versiota %s:sta."
-
-#: ../../../../build/work/app/help/messages.h:175
-#, c-format
-msgid "Scale index (%d) is not valid"
-msgstr "Mittakaavan indeksi (%d) on virheellinen."
-
-#: ../../../../build/work/app/help/messages.h:176
-#, c-format
-msgid ""
-"Scale %s is not valid\n"
-"Please check your %s.xtq file"
-msgstr ""
-"Mittakaava %s ei ole kelvollinen\n"
-"Tarkasta %s.xtq tiedostosi"
-
-#: ../../../../build/work/app/help/messages.h:177
-msgid "Cannot extend a helix"
-msgstr "Helixiä ei voida jatkaa"
-
-#: ../../../../build/work/app/help/messages.h:178
-msgid "Cannot trim a helix"
-msgstr "Helixiä ei voida lyhentää"
-
-#: ../../../../build/work/app/help/messages.h:179
-msgid "Ignore further audit notices?"
-msgstr "Sivuuta tarkastus huomautukset jatkossa?"
-
-#: ../../../../build/work/app/help/messages.h:180
-#, c-format
-msgid "%s"
-msgstr "%s"
-
-#: ../../../../build/work/app/help/messages.h:181
-msgid "Audit Abort?"
-msgstr "Keskeytä tarkastus?"
-
-#: ../../../../build/work/app/help/messages.h:182
-msgid "Write Audit File?"
-msgstr "Kirjoita tarkastustiedosto?"
-
-#: ../../../../build/work/app/help/messages.h:183
-#, c-format
-msgid "checkTrackLength: Short track length = %0.3f"
-msgstr "Raideosan pituuden tarkistus: Pienin raideosan pituus = %0.3f"
-
-#: ../../../../build/work/app/help/messages.h:184
-#, c-format
-msgid "checkTrackLength: unknown type: %d"
-msgstr "Raideosan pituuden tarkistus: Tuntematon tyyppi: %d"
-
-#: ../../../../build/work/app/help/messages.h:185
-#, c-format
-msgid "connectTracks: T%d[%d] T%d[%d] d=%0.3f a=%0.3f"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:186
-#, c-format
-msgid "GetAngleAtPoint: bad type(%d) for T(%d)"
-msgstr "GetAngleAtPoint: virheellinen tyyppi (%d) raitelle T(%d)"
-
-#: ../../../../build/work/app/help/messages.h:187
-#, c-format
-msgid "joinTracks: invalid track type=%d"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:188
-#, c-format
-msgid "resolveIndex: T%d[%d]: T%d doesn\\\\'t exist"
-msgstr ""
-
-#: ../../../../build/work/app/help/messages.h:189
-msgid "Moved beyond the end of the track"
-msgstr "Siirretty päätepisteen taakse"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:9
-#, fuzzy
-msgid "Invokes online help for this dialog"
-msgstr "Avaa tämän dialogin ohjeen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:10
-msgid "Cancels this command"
-msgstr "Kumoaa edellisen komennon"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:11
-msgid "Closes the dialog"
-msgstr "Sulkee ikkunan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:12
-#, fuzzy
-msgid "About program dialog"
-msgstr "Tietoja -ikkuna"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:13
-#, fuzzy
-msgid "Move selected object to top"
-msgstr "Siirrä valittu objekti päällimmäiseksi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:14
-#, fuzzy
-msgid "Raise or lower all selected tracks"
-msgstr "Nosta tai laske valittuja raiteita"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:15
-msgid "Turn magnetic snap on or off"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:16
-#, fuzzy
-msgid "Move selected object to bottom"
-msgstr "Siirrä valittu objekti alimmaiseksi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:17
-msgid "Create a section of track for automation"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:18
-#, fuzzy
-msgid "Edit a block definition "
-msgstr "Luo uusi raideosan määrittely"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:19
-msgid "Create a new Car/Loco description"
-msgstr "Luo uusi veturin tai vaunun määrittely"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:20
-msgid "Manage your Car and Loco Inventory"
-msgstr "Hallinnoi vaunu- ja veturiluetteloa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:21
-msgid "Create track circle from center"
-msgstr "Piirrä ympyrärata keskipisteestä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:22
-msgid "Create fixed radius track circle"
-msgstr "Määriteltysäteinen ympyrärata"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:23
-msgid "Set Circle Track creation mode"
-msgstr "Aseta ympyräradan luonti komento"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:24
-msgid "Create track circle from tangent"
-msgstr "Piirrä ympyrärata kehältä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:25
-msgid "Removes elevation from Selected tracks"
-msgstr "Poista korkeusmääritykset valituista raiteista"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:26
-msgid "Copy objects to clipboard and duplicate them in exactly the same place"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:27
-msgid "Command Options dialog"
-msgstr "Komentojen asetukset"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:28
-msgid "Controls colors"
-msgstr "Valitse värit"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:29
-msgid "Connect two tracks"
-msgstr "Liitä kaksi raidetta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:30
-msgid "Create a control for layout automation"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:31
-#, fuzzy
-msgid "Select control element to create"
-msgstr "Valitse toinen yhdistettävä päätepiste"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:32
-msgid "Manage control elements"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:33
-#, fuzzy
-msgid "Set Convert mode"
-msgstr "Aseta kaarevan raiteen luonti komento"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:34
-msgid "Convert from Fixed Track to Cornu"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:35
-msgid "Convert from Cornu and Bezier to Fixed Track"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:36
-msgid "Copy selected objects to clipboard"
-msgstr "Kopioi valitut objektit leikepöydälle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:37
-#, fuzzy
-msgid "Create Cornu track"
-msgstr "Luo viivoja"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:38
-msgid "Create curved track from center"
-msgstr "Luo kaareva raideosa alkaen keskipisteestä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:39
-msgid "Create curved track from chord"
-msgstr "Luo kaareva raideosa päätepisteiden välille"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:40
-msgid "Create curved track from end-point"
-msgstr "Luo kaareva raideosa alkaen päätepisteestä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:41
-#, fuzzy
-msgid "Create Bezier track"
-msgstr "Luo helix raide"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:42
-msgid "Set Curve Track creation mode"
-msgstr "Aseta kaarevan raiteen luonti komento"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:43
-msgid "Create curved track from tangent"
-msgstr "Luo kaareva raideosa alkaen kehältä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:44
-msgid "Manipulate Custom designer entries"
-msgstr "Itse määriteltyjen raideosien, veturien ja vaunujen hallinta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:45
-msgid "Moves selected objects to clipboard"
-msgstr "Siirtää valitut objektit leikepöydälle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:46
-msgid "Delete objects"
-msgstr "Poista valitut objektit"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:47
-msgid "Playback demos"
-msgstr "Toista nauhoitettuja demoja"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:48
-msgid "Change Object Properties"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:49
-msgid "Change to properties mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:50
-msgid "Deselect all selected objects"
-msgstr "Poista valinnat kaikista objekteista"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:51
-msgid "Change Display parameters"
-msgstr "Muuta näyttöasetuksia"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:52
-msgid "Create benchwork"
-msgstr "Luo runkorakenne"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:53
-msgid "Create a box"
-msgstr "Luo nelikulmio"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:54
-msgid "Set Circle drawing command"
-msgstr "Aseta ympyrän piirto komento"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:55
-msgid "Create a circle"
-msgstr "Luo ympyrä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:56
-msgid "Draw a circle line from center"
-msgstr "Piirrä ympyrä keskipisteestä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:57
-msgid "Draw a fixed radius circle line"
-msgstr "Piirrä määriteltysäteinen ympyrä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:58
-msgid "Draw a circle line from tangent"
-msgstr "Piirrä ympyrä kehältä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:59
-msgid "Set Curve drawing command"
-msgstr "Aseta kaaren piirto komento"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:60
-msgid "Create a curved line"
-msgstr "Luo kaari"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:61
-msgid "Create a curved line from End"
-msgstr "Piirrä kaari päätepisteestä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:62
-msgid "Create a curved line from center"
-msgstr "Piirrä kaari keskipisteestä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:63
-msgid "Create a curved line from chord"
-msgstr "Piirrä kaari·päätepisteiden·välille"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:64
-msgid "Create a curved line from tangent"
-msgstr "Piirrä kaari kehältä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:65
-#, fuzzy
-msgid "Create a Bezier line"
-msgstr "Luo kaari"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:66
-msgid "Create a dimension line"
-msgstr "Luo mittajana"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:67
-msgid "Create a filled box"
-msgstr "Piirrä täytetty nelikulmio"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:68
-msgid "Create a filled circle"
-msgstr "Luo täytetty ympyrä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:69
-msgid "Draw a filled circle from center"
-msgstr "Piirrä täytetty ympyrä keskipisteestä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:70
-msgid "Draw a fixed radius filled circle"
-msgstr "Piirrä täytetty määriteltysäteinen ympyrä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:71
-msgid "Draw a filled circle from tangent"
-msgstr "Piirrä täytetty ympyrä kehältä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:72
-#, fuzzy
-msgid "Create a polygon"
-msgstr "Luo monikulmio"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:73
-msgid "Create a filled polygon"
-msgstr "Luo täytetty monikulmio"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:74
-msgid "Create a polyline"
-msgstr "Luo monikulmio"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:75
-msgid "Create a straight line"
-msgstr "Luo suora viiva"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:76
-msgid "Set Line drawing command"
-msgstr "Aseta suorien objektien piirto komento"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:77
-msgid "Set Shape drawing command"
-msgstr "Aseta muotojen piirto komento"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:78
-msgid "Draw table edge"
-msgstr "Piirrä pöydän reuna"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:79
-msgid "Easement menu"
-msgstr "Kaarreloivennuksen asetukset"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:81
-msgid "Generate a Parts List of selected objects"
-msgstr "Luo osaluettelo valituista objekteista"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:82
-msgid "Set Import/Export mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:83
-msgid "Export a .xti file"
-msgstr "Vie .xti tiedostoon"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:84
-msgid "Export a DXF file"
-msgstr "Vie DXF tiedostoon"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:86
-msgid "Flip selected objects"
-msgstr "Käännä valitut objektit annetun peilauslinjan mukaan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:87
-msgid "Adjust snap grid"
-msgstr "Muuta kohdistusruudukon asetuksia"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:88
-msgid "Enable snap grid"
-msgstr "Käytä kohdistusruudukkoa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:89
-msgid "Show snap grid"
-msgstr "Näytä kohdistusruudukko"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:90
-msgid "Create a structure from a Group of objects"
-msgstr "Luo rakennus valituista objekteista"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:91
-msgid "Create a hand-laid turnout"
-msgstr "Luo käsin aseteltu vaihde"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:92
-msgid "Create a track helix"
-msgstr "Luo helix raide (kierrenousu)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:93
-msgid "Import a .xti file"
-msgstr "Tuo .xti tiedosto"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:94
-#, fuzzy
-msgid "Import an .xti file as a Module"
-msgstr "Tuo .xti tiedosto"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:95
-msgid "Join two tracks"
-msgstr "Yhdistä kaksi raidetta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:96
-msgid "Join two lines or polylines"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:97
-msgid "Set Join mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:98
-msgid "Change Layers"
-msgstr "Muuta tasojen asetuksia"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:99
-msgid "Selects the current drawing layer"
-msgstr "Valitsee piirtotason"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:100
-msgid "Layout parameters"
-msgstr "Ratasuunnitelman asetukset"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:102
-#, fuzzy
-msgid "Show/Hide Map Window"
-msgstr "Näytä/piilota taso"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:103
-msgid "Modify or extend a track"
-msgstr "Muokkaa tai jatka raidetta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:104
-msgid "Change To modify mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:105
-msgid "Move selected objects"
-msgstr "Siirrä valittuja objekteja"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:106
-msgid "Move a label"
-msgstr "Siirrä merkintöjä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:107
-msgid "Move selected objects to current layer"
-msgstr "Siirrä valitut objektit nykyiselle tasolle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:109
-#, fuzzy
-msgid "Print a bitmap"
-msgstr "Tulosta bitmap tiedostoon"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:110
-#, fuzzy
-msgid "Pan or zoom the layout"
-msgstr "Sijoita vaunu tai veturi ratasuunnitelmaan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:111
-msgid "Change to zoom/pan mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:112
-msgid "Create a parallel track"
-msgstr "Luo rinnakkainen raide"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:113
-#, fuzzy
-msgid "Create a parallel line"
-msgstr "Luo rinnakkainen raide"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:114
-#, fuzzy
-msgid "Set Parallel mode"
-msgstr "Rinnakkainen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:115
-msgid "Register"
-msgstr "Rekisteröi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:116
-msgid "Copy objects from clipboard"
-msgstr "Liitä objektit leikepöydältä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:117
-msgid "Perferences dialog"
-msgstr "Ominaisuudet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:118
-msgid "Display prices of turnouts, sectional tracks and structures"
-msgstr "Vaihteiden, palaraiteiden ja rakennusten hinnat"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:119
-msgid "Print the layout"
-msgstr "Tulosta ratasuunnitelma"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:120
-#, fuzzy
-msgid "Loads and unloads parameter files into/from toolbar"
-msgstr "Lataa tai poista parametritiedostoja käytöstä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:121
-msgid "Elevation Profile Command"
-msgstr "Muokkaa korkeusprofiilia"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:123
-msgid "Command recorder"
-msgstr "Komentojen nauhoitus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:125
-msgid "Update selected Turnout and Structure definitions"
-msgstr "Päivitä valittujen vaihteiden ja rakennusten määrittelyt"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:126
-msgid "Rescale selected objects"
-msgstr "Muuta valittujen objektien mittakaavaa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:127
-msgid "Rotate selected object(s)"
-msgstr "Pyöritä valittuja objekteja"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:128
-msgid "Show a ruler"
-msgstr "Näytä viivain"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:129
-msgid "Select objects"
-msgstr "Valitse objekteja"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:130
-#, fuzzy
-msgid "Change To Select Mode"
-msgstr "Muuta mittakaavaa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:131
-msgid "Selects all objects on the layout"
-msgstr "Valitse kaikki ratasuunnitelman objektit"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:132
-msgid "Selects all objects in the current Layer"
-msgstr "Valitse kaikki nykyisen tason objektit"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:133
-msgid "Invert current selection"
-msgstr "Käänteinen valinta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:134
-msgid "Split a track"
-msgstr "Pilko raide"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:135
-msgid "Select stranded (unconnected) track pieces"
-msgstr "Valitse yksittäiset raiteet, joita ei ole liitetty toisiin raiteisiin"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:136
-msgid "Create a sensor (ie. a occupancy detector or a toggle switch)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:137
-#, fuzzy
-msgid "Create a signal for train control"
-msgstr "Piirrä ympyrärata kehältä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:138
-msgid "Choose which commands are sticky"
-msgstr "Valitse mitkä komennot ovat pysyviä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:139
-msgid "Create straight track"
-msgstr "Luo suora raideosa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:140
-msgid "Place a structure on the layout"
-msgstr "Lisää rakennus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:141
-#, fuzzy
-msgid "Create a switchmotor for turnout control"
-msgstr "Luo uuden rakennuksen (tai raideosan)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:142
-#, fuzzy
-msgid "Edit a switchmotor definition"
-msgstr "Luo uusi raideosan määrittely"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:143
-msgid "Enter text on the layout"
-msgstr "Lisää tekstiä ratasuunnitelmaan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:144
-#: ../../../../build/work/app/bin/bllnhlp.c:531
-msgid "Controls the size of the entered text"
-msgstr "Muuttaa syötettävän tekstin kokoa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:145
-msgid "Plain Text"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:146
-msgid "Tip of the Day window"
-msgstr "Näytä päivän vinkki"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:147
-msgid "Run Trains"
-msgstr "Aja junilla ratasuunnitelmassa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:148
-msgid "Change To Run Trains Mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:149
-msgid "Pause/Resume Trains"
-msgstr "Pysäytä/jatka ajamista"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:150
-msgid "Place a car on the layout"
-msgstr "Sijoita vaunu tai veturi ratasuunnitelmaan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:151
-msgid "Exit Trains"
-msgstr "Poistu junien ajosta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:152
-msgid "Hide/Unhide a track"
-msgstr "Piilota/näytä raide"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:153
-msgid "Make/Unmake a track a bridge"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:154
-msgid "Place a turnout or sectional track"
-msgstr "Lisää vaihde tai palaraide"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:155
-msgid "Create a new turnout definition"
-msgstr "Luo uusi raideosan määrittely"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:156
-msgid "Place a turntable"
-msgstr "Lisää kääntöpöytä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:157
-msgid "Updates old source files with 3 part titles"
-msgstr "Päivittää vanhat lähdetiedostot kolmiosaisilla otsikoilla"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:159
-msgid "Ungroup objects"
-msgstr "Pura ryhmittely"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:160
-msgid "Draw tracks with thin lines"
-msgstr "Piirrä raiteet ohuilla viivoilla"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:161
-msgid "Draw tracks with medium lines"
-msgstr "Piirrä raiteet keskipaksuilla viivoilla"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:162
-msgid "Draw tracks with thick lines"
-msgstr "Piirrä raiteet paksuilla viivoilla"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:163
-msgid "Change drawing scale"
-msgstr "Muuta piirron mittakaavaa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:164
-#: ../../../../build/work/app/bin/bllnhlp.c:176
-msgid "Zoom in"
-msgstr "Lähennä näkymää"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:165
-#: ../../../../build/work/app/bin/bllnhlp.c:177
-msgid "Zoom out"
-msgstr "Loitonna näkymää"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:166
-msgid "File Menu"
-msgstr "Tiedosto valikko"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:167
-msgid "Save layout"
-msgstr "Tallenna ratasuunnitelma"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:168
-msgid "Save layout under a new name "
-msgstr "Tallenna ratasuunnitelma uudella nimellä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:169
-msgid "New layout"
-msgstr "Uusi ratasuunnitelma"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:170
-msgid "Generate parts list"
-msgstr "Luo osaluettelo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:171
-msgid "Load a layout"
-msgstr "Lataa ratasuunnitelma"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:172
-msgid "Exit the program"
-msgstr "Poistu ohjelmasta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:173
-msgid "Revert to last saved state of layout plan"
-msgstr "Palauta ratasuunnitelma edelliseen tallennettuun tilaan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:174
-msgid "Edit menu"
-msgstr "Muokkaa -valikko"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:175
-msgid "Redraw layout"
-msgstr "Uudelleenpiirto ratasuunnitelman objekteille"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:178
-#: ../../../../build/work/app/bin/bllnhlp.c:181
-msgid "Tools menu"
-msgstr "Työkalut -valikko"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:179
-msgid "View menu"
-msgstr "Näytä -valikko"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:180
-msgid "Toolbar configuration"
-msgstr "Työkalurivin asetukset"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:182
-msgid "Options menu"
-msgstr "Asetukset -valikko"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:183
-msgid "Playback/Record commands"
-msgstr "Nauhoita/toista komentoja"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:184
-msgid "Window menu"
-msgstr "Ikkunoiden valinta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:185
-msgid "Help menu"
-msgstr "Ohje -valikko"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:186
-msgid "Recent error messages and explanations"
-msgstr "Viimeisimmät virhesanomat ja selitteet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:187
-msgid "Move Hot Bar left"
-msgstr "Siirry vasemmalle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:188
-msgid "Move Hot Bar right"
-msgstr "Siirry oikealle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:189
-msgid "Total track count"
-msgstr "Raideosien kokonaismäärä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:190
-msgid "X Position of cursor"
-msgstr "Kohdistimen X sijainti"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:191
-msgid "Y Position of cursor"
-msgstr "Kohdistimen Y sijainti"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:192
-msgid "Drawing scale"
-msgstr "Piirron mittakaava"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:193
-msgid "Message and status line"
-msgstr "Viesti- ja tilarivi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:194
-#: ../../../../build/work/app/bin/bllnhlp.c:195
-msgid "Main layout canvas"
-msgstr "Piirtoalue"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:196
-msgid "Main drawing canvas"
-msgstr "Piirtoalue"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:197
-msgid "Command buttons"
-msgstr "Komentopainikkeet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:198
-msgid "Menus"
-msgstr "Valikot"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:199
-msgid "Tile, Filename and Window Manager buttons"
-msgstr "Otsikko, tiedostonimi ja ikkunanhallintapainikkeet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:200
-msgid "Turnout and Structure Hot Bar"
-msgstr "Raideosien ja rakennusten valikko"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:201
-msgid "Active layer list and layer buttons"
-msgstr "Tasoluettelo ja tasopainikkeet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:202
-msgid "Map window"
-msgstr "Karttaikkuna"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:203
-msgid "This is the portion of the layout shown in the Main Window canvas"
-msgstr "Tämä osa suunnitelmasta näytetään pääikkunan piirtoalueella"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:204
-msgid "Raise or Lower all Selected Track"
-msgstr "Nosta tai laske kaikkia valittuja raiteita"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:205
-msgid "Name of block"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:206
-msgid "Script that the block will run"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:207
-msgid "List of tracks in the Block"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:208
-msgid "Add or Update car object"
-msgstr "Lisää/päivitä tämä vaunu tai veturi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:209
-msgid "Manufacturer name"
-msgstr "Valmistajan nimi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:212
-msgid "Is the Car a Locomotive?"
-msgstr "Onko kyseessä veturi vai vaunu?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:213
-msgid "Part Number and Description"
-msgstr "Tuotekoodi ja kuvaus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:214
-msgid "Manufacturer Part Number"
-msgstr "Valmistajan tuotekoodi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:215
-msgid "Use the Selected figure as the car image"
-msgstr "Käytä valittua kuvaa vaunun tai veturin kuvana"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:216
-msgid "Use the default figure as the car image"
-msgstr "Käytä oletuskuvaa vaunun tai veturin kuvana"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:217
-msgid "Optional description of the Car Part"
-msgstr "Valinnainen kuvaus mallista"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:218
-msgid "Flip car image"
-msgstr "Käännä kuva"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:219
-msgid "Display Car Item information or reporting marks and dimensions"
-msgstr "Näytä vaunun tai veturin tiedot, tai yhtiötunnukset ja mitat"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:220
-msgid "Full Roadname"
-msgstr "Rautatieyhtiön koko nimi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:221
-#: ../../../../build/work/app/bin/bllnhlp.c:222
-msgid "Car Type"
-msgstr "Vaunun tai veturin tyyppi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:223
-msgid "Reporting Marks (Roadname abbreviation)"
-msgstr "Rautatieyhtiön merkintä (lyhenne)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:224
-#: ../../../../build/work/app/bin/bllnhlp.c:411
-msgid "Car Number"
-msgstr "Vaunun tai veturin numero"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:225
-msgid "Car body Color"
-msgstr "Vaunun tai veturin rungon väri"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:226
-msgid "Length of car body"
-msgstr "Rungon pituus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:227
-msgid "Width of car body"
-msgstr "Rungon leveys"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:228
-msgid "Distance between Trucks "
-msgstr "Telien keskikohtien välinen etäisyys"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:229
-msgid "Distance Trucks are displaced along Car"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:230
-msgid "Coupler are mounted on body or truck"
-msgstr "Onko kytkimet kiinnitetty runkoon vai teleihin"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:231
-msgid "Overall Coupled Length"
-msgstr "Kokonaispituus kytkimet mukaan lukien"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:232
-msgid "Coupler Length from end of car"
-msgstr "Kytkinten ulkonema vaunun tai veturin päästä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:233
-msgid "Diagram of Car"
-msgstr "Vaunun tai veturin kaaviokuva"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:234
-msgid "Item Index Number"
-msgstr "Kohteen indeksinumero"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:235
-msgid "Original Purchase Price"
-msgstr "Alkuperäinen ostohinta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:237
-msgid "Condition of car"
-msgstr "Vaunun tai veturin kunto"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:238
-msgid "Original Purchase Date"
-msgstr "Ostopäivä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:239
-msgid "Last Service Date"
-msgstr "Milloin viimeksi huollettu"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:240
-msgid "Number of identical cars to be entered"
-msgstr "Samanlaisten vaunujen tai veturien lukumäärä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:241
-msgid "Do all the cars have the same Number?"
-msgstr "Onko kaikilla vaunuilla tai vetureilla sama numero?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:242
-msgid "Notes about the car"
-msgstr "Vaunuun tai veturiin liittyviä muistiinpanoja"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:243
-#: ../../../../build/work/app/bin/bllnhlp.c:244
-msgid "Create a new car Part or Prototype definitions"
-msgstr "Luo uusi malli tai esikuva"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:245
-msgid "Finds the selected Car Item on the layout"
-msgstr "Etsii valitun junan ratasuunnitelmasta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:246
-#: ../../../../build/work/app/bin/bllnhlp.c:247
-#: ../../../../build/work/app/bin/bllnhlp.c:248
-#: ../../../../build/work/app/bin/bllnhlp.c:249
-msgid "Sort the Item list"
-msgstr "Lajittele luettelo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:251
-msgid "Edit the selected Car Item"
-msgstr "Muokkaa valittua kohdetta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:252
-msgid "Add a new Car Item"
-msgstr "Lisää uusi vaunu tai veturi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:253
-msgid "Delete the selected Car Items"
-msgstr "Poista valitut kohteet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:254
-msgid "Import a Car Item .csv file"
-msgstr "Tuo .cvs tiedostosta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:255
-msgid "Export a Car Item .csv file"
-msgstr "Vie .cvs tiedostoon"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:256
-msgid "Create a text list of the Car Items"
-msgstr "Tallenna tekstitiedostoon"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:257
-msgid "Specifies the radius of the circle track"
-msgstr "Määrittelee ympyräradan säteen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:258
-msgid "Default command is Describe or Select"
-msgstr "Onko oletuskomentona \"määrittele\" vai \"valitse\""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:259
-msgid "Action to invoke on Right-Click"
-msgstr "Hiiren 2-painikkeen toiminto"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:260
-msgid ""
-"Replace current selection with clicked object or add clicked object to "
-"selection"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:261
-msgid "Clicking into an empty area clears selection if select mode is <add>"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:263
-msgid "The list of control elements"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:264
-#, fuzzy
-msgid "Edit the element"
-msgstr "Muokkaa valittua kohdetta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:265
-#, fuzzy
-msgid "Delete the element"
-msgstr "Poista valitut kohteet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:266
-msgid "Contents Label for new Parameter file"
-msgstr "Parametritiedoston sisältömerkintä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:267
-msgid "List of custom designed turnouts and structures"
-msgstr "Luettelo itse suunnitelluista raideosista ja rakennuksista"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:268
-msgid "Invoke designer editor"
-msgstr "Muokkaa valittua kohdetta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:269
-msgid "Remove selected entries"
-msgstr "Poista valitut kohteet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:270
-msgid "Copy selected entries to Parameter File"
-msgstr "Siirrä valitut kohteet parametritiedostoon"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:271
-msgid "Create a New part or prototype"
-msgstr "Luo uusi malli tai esikuva"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:272
-msgid "Update custom file and close"
-msgstr "Päivitä tiedosto ja sulje ikkuna"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:273
-msgid "Executes the next step of the demo"
-msgstr "Suorittaa seuraavan vaiheen demossa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:274
-msgid "Skip to next demo"
-msgstr "Siirry seuraavaan demoon"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:275
-msgid "Stops the demonstration and returns you to XTrackCAD"
-msgstr "Pysäyttää demon ja palaa XTrackCADin normaaliin tilaan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:276
-msgid "Select speed of Playback"
-msgstr "Valitse toiston nopeus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:277
-msgid "This is where comments about the demo are displayed"
-msgstr "Tässä näytetään demojen kommentit"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:314
-msgid "Move the Main canvas if you drag near the edge"
-msgstr "Siirrä näkymää automaattisesti raahattaessa hiirellä lähellä reunoja"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:315
-msgid "Color tracks by layer or individually"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:316
-#, fuzzy
-msgid "Color draw objects by layer or individually"
-msgstr "Väritä raiteet ja muut objektit tasojen mukaan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:317
-msgid "Controls the drawing of hidden tracks"
-msgstr "Piilossa olevien raiteiden piirtotapa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:318
-msgid "Controls the drawing of End-Points"
-msgstr ""
-"Näytetäänkö raiteiden päätepisteet kaikissa raiteissa, vaihteissa vai ei "
-"missään"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:319
-msgid "How to draw track ties"
-msgstr "Ratapölkkyjen piirtotapa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:320
-msgid "Show crosshair at center of curves"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:321
-msgid "Drawing scale when to draw tracks with 2 rails"
-msgstr ""
-"Näytön mittakaavan raja-arvo, jolloin raiteet piirretään yhtenä tai kahtena "
-"kiskona."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:322
-msgid "Drawing scale of the map window"
-msgstr "Karttaikkunan piirtomittakaava"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:323
-msgid "Whether the main layout is updated while dragging on the Map"
-msgstr "Päivitetäänkö pääikkunan näkymä kartassa valitun alueen mukaan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:324
-msgid "Enable labels for Turnouts, Flextrack Lengths and Elevations"
-msgstr "Määrittelee missä kohteissa näytetään merkintöjä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:325
-msgid "When to label Turnout, Flextrack Lengths and Elevations"
-msgstr ""
-"Milloin näytetään merkinnät. Loitonnettaessa tästä arvosta, merkinnät eivät "
-"enää näy."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:326
-msgid "Font size for labels on layout"
-msgstr "Merkintöjen kirjasinkoko ratasuunnitelmassa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:327
-msgid "Label elements on the Hot Bar"
-msgstr "Hot Bar:ssa esitettävät merkinnät"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:328
-msgid "Label elements on layout"
-msgstr "Merkintöjen sisältö ratasuunnitelmassa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:329
-msgid "Label elements for lists"
-msgstr "Luetteloissa näytettävät merkinnät"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:330
-msgid "How to group cars on the Train Hot Bar"
-msgstr "Miten vaunut ja veturit ryhmitellään Junat-Hot Bar:ssa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:331
-msgid "Delay (in mS) between updating train movements"
-msgstr "Junien piirtoväli ajettaessa (millisekunteina)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:332
-msgid "Don't show trains in tunnels when tunnels are hidden"
-msgstr ""
-"Ei näytetä junia tunneleissa, jos tunnelien piirtotapa on \"piilotettu\""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:333
-msgid "Display unconnected endpoints of track with special marks"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:334
-msgid "Whether the Main Drawing Area shows as much of the room as possible"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:336
-msgid "Width of the lines"
-msgstr "Viivojen paksuus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:337
-msgid "Color of the lines"
-msgstr "Viivojen väri"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:338
-msgid "List of types of Lumber"
-msgstr "Luettelo puutavaran tyypeistä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:339
-msgid "Color of Benchwork"
-msgstr "Runkorakenteen väri"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:340
-msgid "Orientation of Benchwork"
-msgstr "Runkorakenteen suunta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:341
-msgid "Size of Dimension Arrows"
-msgstr "Mittajanan nuolten koko"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:342
-msgid "This controls the sharpness of the easement curve"
-msgstr "Tällä säädellään kaarreloivennuksen jyrkkyyttä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:343
-msgid "Minimum radius"
-msgstr "Pienin karresäde"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:344
-msgid "Maximum offset"
-msgstr "Suurin siirtymä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:345
-msgid "Easement length"
-msgstr "Kaarreloivennuksen pituus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:346
-msgid ""
-"These radio buttons are a short-cut for Values of 0.0, 0.5, 1.0 and 2.0. "
-"None turns Easements off"
-msgstr ""
-"Nämä painikkeet ovat pikavalintoja arvoille 0,0, 0,5, 1,0 ja 2,0. Mikään "
-"näistä ei poista kaarreloivennusta käytöstä."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:347
-msgid "Complete easement selection"
-msgstr "Hyväksy kaarreloivennukse asetukset ja sulje ikkuna"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:348
-msgid "Type of elevation"
-msgstr "Tyyppi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:349
-msgid "Height of End Point"
-msgstr "Päätepisteen korkeus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:350
-msgid "Compute elevation based on neighbors"
-msgstr "Laske korkeudet viereisten perusteella"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:351
-msgid "Compute grade based on neighbors"
-msgstr "Laske nousukulma viereisten perusteella"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:352
-msgid "Specify a name for an End-Point"
-msgstr "Määrittele päätepisteen nimi (aseman nimi)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:354
-msgid "Print parts list"
-msgstr "Tulosta osaluettelo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:355
-#: ../../../../build/work/app/bin/bllnhlp.c:466
-#: ../../../../build/work/app/bin/bllnhlp.c:575
-msgid "Invoke the Print Setup dialog"
-msgstr "Avaa tulostusasetusten ikkuna"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:356
-msgid "Save parts list to file"
-msgstr "Tallenna osaluettelo tiedostoon"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:357
-msgid "This is the list of parts for the layout"
-msgstr "Tämä on ratasuunnitelman osaluettelo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:358
-msgid "Enable prices on the Parts List"
-msgstr "Näytä hinnat osaluettelossa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:359
-#: ../../../../build/work/app/bin/bllnhlp.c:362
-msgid "Spacing between major grid lines"
-msgstr "Ruudukon pääviivojen väli"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:360
-#: ../../../../build/work/app/bin/bllnhlp.c:363
-msgid "Allows the spacing to be subdivided"
-msgstr "Aliviivojen jako"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:361
-#: ../../../../build/work/app/bin/bllnhlp.c:364
-msgid "Specifies if positions are snaped in this direction"
-msgstr "Määrittelee kohdistetaanko tässä suunnassa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:365
-#: ../../../../build/work/app/bin/bllnhlp.c:366
-#: ../../../../build/work/app/bin/bllnhlp.c:367
-msgid "Shows the origin and angle of the grid"
-msgstr "Ruudukon origo ja kulma"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:368
-msgid "Specifies if the grid is shown"
-msgstr "Määrittelee näytetäänkö ruudukko"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:369
-msgid "Completes the grid specification"
-msgstr "Hyväksy ruudukon asetukset"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:373
-msgid "Number of segments in Group"
-msgstr "Lohkojen määrä ryhmässä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:374
-msgid "Replace the Selected object with the new definition?"
-msgstr "Korvaa valittu objekti uudella määrittelyllä?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:375
-msgid "Creates a new Structure (or Turnout)"
-msgstr "Luo uuden rakennuksen (tai raideosan)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:376
-msgid "Elevation difference of Helix End-Points"
-msgstr "Päätepisteiden välinen korkeusero"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:377
-msgid "Helix Radius"
-msgstr "Helixin säde"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:378
-msgid "Number of turns in the helix"
-msgstr "Kokonaisten kierrosten lukumäärä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:379
-msgid "Angle betweek helix entrance and exit"
-msgstr "Sisäänmenon ja ulostulon välinen kulma"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:380
-msgid "Grade in helix"
-msgstr "Nousukulma"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:381
-msgid "Separation between helix layers"
-msgstr "Helixin kerrosten välinen etäisyys"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:382
-#, fuzzy
-msgid "Desired curve radius between straight tracks"
-msgstr "Luo suora raideosa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:383
-msgid "Layer list"
-msgstr "Tasoluettelo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:384
-msgid "Layer Name"
-msgstr "Tason nimi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:385
-msgid "Color of layer"
-msgstr "Tason väri"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:386
-msgid "Layer is drawn on Main window"
-msgstr "Taso piirretään pääikkunaan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:387
-msgid "Layer cannot be changed"
-msgstr "Tasoa ei voi muokata"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:388
-msgid "Layer is drawn on Map window"
-msgstr "Taso piirretään kartalle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:389
-msgid "Number of layer buttons to show"
-msgstr "Työkalurivillä näytettävien tasopainikkeiden lukumäärä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:390
-msgid "Number of objects in this layer"
-msgstr "Objektien lukumäärä tällä tasolla"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:392
-msgid "Load layer configuration from default"
-msgstr "Lataa oletusasetukset tiedostosta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:393
-msgid "Save current layer configuration as default"
-msgstr "Tallenna nykyiset tasojen asetukset oletuksiksi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:394
-msgid "Overwrite layer configuration with system default values"
-msgstr "Käytä järjestelmän oletusasetuksia"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:395
-#: ../../../../build/work/app/bin/bllnhlp.c:396
-msgid "Specifies the size of the room (in inches or centimeters)"
-msgstr "Määrittele huoneen koko (senttimetreinä tai tuumina)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:397
-#, fuzzy
-msgid "Specifies the layout Title that will appear on printouts"
-msgstr "Ratasuunnitelman otsikko. Tämä näkyy tulostuksissa."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:398
-#, fuzzy
-msgid "Specifies the layout Subtitle that will appear on printouts"
-msgstr "Ratasuunnitelman otsikko. Tämä näkyy tulostuksissa."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:399
-msgid "Specifies the Modelling Scale"
-msgstr "Määrittelee mittakaavan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:400
-msgid "Specifies the rail gauge, ie. the distance between the rails"
-msgstr "Määrittelee raideleveyden"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:401
-msgid ""
-"Specifies minimum track radius (in inches or centimeters). Tracks with a "
-"smaller radius are considered exceptional."
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:402
-msgid ""
-"Specifies maximum track elevation expressed as a percent (%). Tracks with a "
-"larger elevation are considered exceptional."
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:403
-#, fuzzy
-msgid "Select the background image"
-msgstr "Valitsee piirtotason"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:404
-msgid "Remove the background image"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:405
-#, fuzzy
-msgid "Specifies the x offset of the bottom left of the background image"
-msgstr "Määrittele huoneen koko (senttimetreinä tai tuumina)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:406
-#, fuzzy
-msgid "Specifies the y offset of the bottom left of the background image"
-msgstr "Määrittele huoneen koko (senttimetreinä tai tuumina)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:407
-msgid ""
-"Specifies how large the bottom edge of the background image should be in "
-"model units"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:408
-msgid ""
-"Specifies the screening of the background image from 0 (none) to 100% "
-"(vanishes)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:409
-#, fuzzy
-msgid "Specifies the rotation angle of the background image in degrees"
-msgstr "Määrittelee annetaanko kulmat asteina vai risteysnumerona"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:412
-msgid ""
-"This is the body of the Note. To change this select Modify from the File "
-"Menu"
-msgstr ""
-"Tämä on muistiinpanon runko. Muuttaaksesi tätä, valitse Tiedosto-valikosta "
-"Muokkaa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:414
-msgid "Specifies number of pixels per inch (or centimeter)"
-msgstr "Määrittelee pikseleiden määrän tuumalla (tai sentillä)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:416
-msgid ""
-"Specifies whether Layout Titles, Borders or Track Centerlines are printed on "
-"the BitMap"
-msgstr ""
-"Määritelee tulostetaanko ratasuunnitelman otsikot, reunukset tai ratojen "
-"keskiviivat"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:417
-#, fuzzy
-msgid ""
-"Specifies the separation between the original track and the parallel track/"
-"line"
-msgstr "Määrittelee rinnakkaisten raiteiden etäisyyden toisistaan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:418
-msgid ""
-"Specifies the a factor that increases the seperation as the radius of the "
-"original track reduces. 0.0 means no increase."
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:419
-msgid "Enter your name as specified in the XTrackCAD Registration Notice"
-msgstr "Syötä nimesi kuten XTrackCAD rekisteröintitiedotteessa on määritelty"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:420
-msgid "Enter the key value as specified in the XTrackCAD Registration Notice"
-msgstr "Syötä avain kuten XTrackCAD rekisteröintitiedotteessa on määritelty"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:421
-msgid "Validates the name and key. Terminates the registration command"
-msgstr "Vahvistaa nimen ja avainen, sekä päättää rekisteröitymisen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:422
-#, fuzzy
-msgid "0ᅵ is up or to the right"
-msgstr "Onko 0° ylhäällä vai oikealla"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:423
-msgid "Choose english (inches) or metric (centimeters)"
-msgstr ""
-"Valitse englantilaiset (tuumat) tai metrijärjestelmän (sentit) mukaiset mitat"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:424
-msgid "How to display length measurements"
-msgstr "Pituusmittojen esitystapa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:425
-msgid "Do not create tracks to be shorter than this value"
-msgstr "Älä luo tätä lyhyempiä raiteita"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:426
-msgid "Maximum distance between connected end points"
-msgstr "Suurin sallittu etäisyys kahden liitettävän raiteen välillä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:427
-msgid "Minimum angle between connected End-Points"
-msgstr "Suurin sallittu kulma kahden liitettävän raiteen välillä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:428
-msgid "Specifies the minimum angle between tracks connected to a turntable"
-msgstr ""
-"Määrittelee pienimmän kääntöpöydästä lähtevien raiteiden välisen kulman"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:429
-msgid "Trains will crash above this speed"
-msgstr ""
-"Suurin sallittu vaunujen kytkentänopeus. Suuremmalla nopeudella aiheutuu "
-"törmäys."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:430
-msgid "Enable/Disable balloon popup help windows"
-msgstr "Käytetäänkö pikaopasteita (tooltip)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:431
-msgid "Enable/Disable show of flextrack on hotbar"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:432
-msgid "How far you can move the mouse before its considered a drag"
-msgstr ""
-"Kuinka pitkälle hiirtä voi liikuttaa ennen kuin se käsitetään raahaamiseksi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:433
-msgid "How long you can hold a mouse button down before its considered a drag"
-msgstr ""
-"Kuinka kauan hiiren painiketta voi pitää alhaalla ennen kuin se käsitetään "
-"raahaamiseksi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:434
-msgid "Minimum distance (in pixels) between grid lines/ticks"
-msgstr "Ruudukon viivojen pienin etäisyys toisistaan pikseleinä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:435
-msgid ""
-"Specifies the Check Point frequency; number of modifications made since the "
-"last checkpoint."
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:436
-msgid "Specifies the number of checkpoints after save before auto-saving."
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:437
-msgid "Resume work on last layout or start with new layout"
-msgstr "Jatka edellistä ratasuunnitelmaa tai aloita uusi ratasuunnitelma"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:439
-msgid "Updated cost of current selected item"
-msgstr "Syötä valitulle tuotteelle uusi hinta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:441
-msgid "Selection list for prices"
-msgstr "Hintojen valintaluettelo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:442
-#: ../../../../build/work/app/bin/bllnhlp.c:443
-#: ../../../../build/work/app/bin/bllnhlp.c:444
-msgid "Price of specified length of flex-track"
-msgstr "Määrätyn mittaisen fleksin hinta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:446
-#, fuzzy
-msgid "Controls the printing of a centerline of track cmdPrint"
-msgstr "Piilossa olevien raiteiden piirtotapa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:447
-msgid "Controls the reduction (scale) of the printout"
-msgstr "Tulostuksen mittakaava"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:448
-msgid "Scaled page width (Scale times physical page width)"
-msgstr "Skaalattu sivun leveys (mittakaava x fyysinen sivun leveys)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:449
-msgid "Sets page size to the maximum (based on scale and physical page size)"
-msgstr ""
-"Aseta sivun koko suurimmaksi mahdolliseksi mittakaavan ja fyysisen sivukoon "
-"mukaan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:450
-msgid "Scaled page height (Scale times physical page height)"
-msgstr "Skaalattu sivun korkeus (mittakaava x fyysinen sivun korkeus)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:451
-msgid "Sets scale, origin and angle for a one page printout of the layout"
-msgstr ""
-"Asettaa tulostusmittakaavan, origon ja kulman siten, että koko "
-"ratasuunnitelma mahtuu yhdelle sivulle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:452
-msgid "Print page in Portrait or Landscape format"
-msgstr "Tulosta sivu pysty- tai vaakasuunnassa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:453
-msgid "Order of printing pages"
-msgstr "Sivujen tulostusjärjestys"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:454
-msgid "Print Title, Date, Author and other information at bottom of page?"
-msgstr "Tulosta otsikko, päivämäärä, rekijä ja muut tiedot sivun alaosaan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:455
-msgid "Ignore unprintable page margins?"
-msgstr "Ohita tulostumattomat marginaalit?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:456
-msgid "Print Registration Marks at 1:1?"
-msgstr "Tulosta sivujen kohdistusmerkinnät tulostusmittakaavan ollessa 1:1?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:457
-msgid "Print Snap Grid?"
-msgstr "Tulosta kohdistusruudukko?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:458
-msgid "Print Rulers on all page edges?"
-msgstr "Tulosta viivaimet kaikilla reunoilla?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:459
-msgid "Print Roadbed Outline?"
-msgstr "Tulosta ratapenkan ulkoreuna?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:460
-msgid "Print Roadbed Outline"
-msgstr "Tulosta ratapenkan ulkoreuna"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:461
-#: ../../../../build/work/app/bin/bllnhlp.c:462
-#: ../../../../build/work/app/bin/bllnhlp.c:464
-msgid ""
-"Origin of the print grid. This is useful if you want to reprint a set of "
-"pages"
-msgstr ""
-"Tulostusruudukon origo. Tämä on hyödyllinen tulostettaessa sivuja uudelleen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:463
-msgid "Resets the origin and angle to 0"
-msgstr "Palauttaa origon ja kulman nollaksi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:465
-msgid "Deselects all pages"
-msgstr "Poista sivujen valinnat"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:467
-msgid "Print selected pages and terminates the print command"
-msgstr "Tulostaa valitut sivut ja päättää tulostuskomennon"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:468
-#, fuzzy
-msgid "List of loaded, shown or hidden parameter files"
-msgstr "Luettelo ladatuista ja saatavilla olevista parametritiedostoista"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:469
-msgid "Show parameter files by names or descriptions"
-msgstr "Näytä parametritiedostojen nimet tai kuvaukset"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:470
-#, fuzzy
-msgid "Toggle the shown status of the selected parameter file"
-msgstr "Lataa tai poista valittu parametritiedosto"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:471
-#, fuzzy
-msgid "Find extra parameter files from the filesystem"
-msgstr "Etsi ladattava parametritiedosto"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:472
-#, fuzzy
-msgid "Find parameter files from the system library"
-msgstr "Etsi ladattava parametritiedosto"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:473
-msgid "Update parameter file list"
-msgstr "Päivitä parametritiedostojen luettelo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:474
-#, fuzzy
-msgid "Reload parameter file from list"
-msgstr "Luetaan parametritiedostot"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:475
-#, fuzzy
-msgid "Select all parameter files shown"
-msgstr "Luetaan parametritiedostot"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:476
-msgid "Profile of specified path"
-msgstr "Määritellyn reitin profiili"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:477
-msgid "Clear the profile"
-msgstr "Tyhjennä profiilikäyrä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:478
-msgid "Print the profile"
-msgstr "Tulosta profiili"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:480
-msgid "Stop recording"
-msgstr "Lopeta nauhoitus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:481
-msgid "Insert a message"
-msgstr "Lisää viesti"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:482
-msgid "End a message"
-msgstr "Lopeta viestin kirjoitus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:483
-msgid "Message body"
-msgstr "Viestin runko"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:484
-msgid "Possible turnouts"
-msgstr "Mahdolliset raideosat"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:485
-msgid "Skip this turnout"
-msgstr "Hyppää tämän vaihteen yli"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:487
-msgid "Manufacturer of Object"
-msgstr "Valmistaja"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:488
-msgid "Description of Object"
-msgstr "Objektin kuvaus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:489
-msgid "Part Nuber of Object"
-msgstr "Tuotekoodi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:491
-msgid "Rescale by Scale Conversion or by Ratio"
-msgstr "Muunna käyttämällä mittakaavaa tai suhdelukua"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:492
-msgid "Original Scale of the selected objects"
-msgstr "Valittujen objektien alkuperäinen mittakaava"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:493
-#, fuzzy
-msgid "Original Gauge of the selected objects"
-msgstr "Valittujen objektien alkuperäinen raideleveys"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:494
-msgid "New Scale of the selected objects"
-msgstr "Valittujen objektien uusi mittakaava"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:495
-msgid "New Gauge of the selected objects"
-msgstr "Valittujen objektien uusi raideleveys"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:496
-msgid "Change track dimensions to new scale"
-msgstr "Muuta raiteiden mitat uuteen mittakaavaan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:497
-msgid "Change size by this amount"
-msgstr "Muuta kokoa tämän suhdeluvun verran"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:499
-msgid "Snap Grid Line and Division"
-msgstr "Kohdistusruudukko ja jakomerkinnät"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:500
-msgid "X and Y position markers"
-msgstr "Kohdistimen X ja Y sijainnin markkerit"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:501
-msgid "Border rulers, room boundaries and table edges"
-msgstr "Reunaviivaimet, huoneen rajat sekä pöydän reunat"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:502
-msgid "Primary Axis of grid rotation"
-msgstr "Ruudukon asettelun ensisijainen akseli"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:503
-msgid "Secondary Axis of grid rotation"
-msgstr "Ruudukon asettelun toissijainen akseli"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:504
-msgid "Unselected tracks"
-msgstr "Normaalit raideosat, joita ei ole valittu"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:505
-msgid "Selected tracks"
-msgstr "Valitut raiteet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:506
-msgid "Color of tracks on the Profile path"
-msgstr "Profiilin muokkauksessa olevat raiteet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:507
-msgid "Color of Exceptional tracks"
-msgstr "Erityisraiteiden väri"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:508
-msgid "Color of track ties"
-msgstr "Ratapölkkyjen väri"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:509
-msgid "Updates the colors"
-msgstr "Pävitä värit ja sulje ikkuna"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:510
-msgid "Angle in degrees"
-msgstr "Kulma (asteina)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:511
-msgid "Rotate object(s) by specified amount"
-msgstr "Pyöritä objekteja määrätyn verran"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:512
-msgid "Enter one or more words as search terms '*' means all"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:513
-#, fuzzy
-msgid "Find matching file descriptions"
-msgstr "Valitse ja raahaa merkintöjä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:514
-msgid "Search Results"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:515
-msgid "Show Descriptions or FileNames in results"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:516
-#, fuzzy
-msgid "Add selected entries into parameter file list"
-msgstr "Siirrä valitut kohteet parametritiedostoon"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:517
-#, fuzzy
-msgid "Select All found entries"
-msgstr "Hintojen valintaluettelo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:518
-msgid "Reload the system library contents for finding"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:519
-msgid "Choose commands to be sticky"
-msgstr "Valitse pysyvät komennot"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:520
-msgid "Make the commands sticky"
-msgstr "Hyväksy asetukset ja sulje ikkuna"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:521
-msgid "List of available structure"
-msgstr "Luettelo saatavilla olevista rakennuksista"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:522
-msgid "Diagram of the selected structure"
-msgstr "Valitun rakennuksen kuva"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:523
-msgid "Hide Selection window when placing Structure"
-msgstr "Piilota valintaikkuna rakennuksen asettamisen ajaksi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:524
-msgid "Drawing scale and size"
-msgstr "Mittakaava ja koko"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:525
-msgid "Complete structure placement"
-msgstr "Lisää rakennus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:526
-msgid "Choose a Pier number"
-msgstr "Valitse pilarin numero"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:527
-msgid "Name of the Motor"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:528
-msgid "Value when switch is normal"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:529
-msgid "Value when the switch is reversed"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:530
-msgid "Value for a positive comfirmation of switch position"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:532
-msgid "Useful information about the program"
-msgstr "Hyödyllisiä tietoja ohjelmasta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:533
-msgid "Show Tip of the Day every time the program starts"
-msgstr "Näytä päivän vinkki jokaisen käynnistyksen yhteydessä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:534
-msgid "Show the next Tip of the Day"
-msgstr "Näytä seuraava vinkki"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:535
-msgid "Show the previous Tip of the Day"
-msgstr "Näytä edellinen vinkki"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:537
-msgid "Controls which Command Buttons are displayed"
-msgstr "Valitse työkalurivillä näytettävät painikkeet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:538
-msgid "List of Cars"
-msgstr "Luettelo vaunuista ja vetureista"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:539
-msgid "List of active trains"
-msgstr "Luettelo aktiivisista junista"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:541
-msgid "Train odometer"
-msgstr "Junan matkamittari"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:542
-msgid "Reset odometer to 0"
-msgstr "Nollaa matkamittarin lukema"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:543
-msgid "Find train on layout"
-msgstr "Etsi juna ratasuunnitelmasta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:544
-msgid "Follow train around layout"
-msgstr "Seuraa junaa ratasuunnitelmassa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:545
-msgid "Flip direction at End Of Track"
-msgstr "Muuta kulkusuunta automaattisesti radan päässä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:546
-msgid "Change direction of train"
-msgstr "Muuta junan kulkusuunta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:547
-msgid "Stop the train"
-msgstr "Pysäytä juna"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:548
-msgid "List of available turnouts for the current scale"
-msgstr "Luettelo saatavilla olevista raideosista tässä mittakaavassa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:549
-msgid ""
-"Diagram of the currently selected turnout. Click on a End-Point to select "
-"the Active End-Point"
-msgstr "Valitun raideosan kaaviokuva. Valitse aktiivinen päätepiste hiirellä."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:550
-msgid ""
-"A menu list of various type of turnouts and sectional tracks you can define"
-msgstr ""
-"Valikko eri tyyppisistä vaihteista ja palaraiteista joita voit määritellä"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:551
-msgid "Hide Selection window when placing Turnout"
-msgstr "Piilota valintaikkuna vaihteen asettamisen ajaksi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:552
-msgid "The selected Active End-Point"
-msgstr "Valittu aktiivinen päätepiste"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:553
-msgid "Current selected turnout, (displayed in the diagram window)"
-msgstr "Valittu raideosa (kaaviokuva ikkunassa)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:554
-msgid "One the End-Points that can be selected"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:556
-#: ../../../../build/work/app/bin/bllnhlp.c:557
-msgid "Angle of the specified track to the center line of the turnout"
-msgstr "Raiteen ja vaihteen keskilinjan välinen kulma"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:558
-msgid "Specifies if angles are entered as Frog Numbers or in degrees"
-msgstr "Määrittelee annetaanko kulmat asteina vai risteysnumerona"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:559
-#: ../../../../build/work/app/bin/bllnhlp.c:560
-msgid "Desciption"
-msgstr "Kuvaus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:561
-msgid "Turnout description (Manuf., Size, Part Number, etc)"
-msgstr "Raideosan kuvaus (valmistaja, koko, tuotekoodi, jne.)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:562
-#: ../../../../build/work/app/bin/bllnhlp.c:563
-#: ../../../../build/work/app/bin/bllnhlp.c:564
-msgid "Length from the base to the end of the specified track"
-msgstr "Etäisyys vaihteen alusta raiteen päähän"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:566
-#: ../../../../build/work/app/bin/bllnhlp.c:567
-msgid "Offset of the track End-Point from the center line of the turnout"
-msgstr "Raiteen päätepisteen ja vaihteen keskilinjan välinen etäisyys"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:570
-#: ../../../../build/work/app/bin/bllnhlp.c:571
-msgid "Prints a full size diagram of the turnout for checking"
-msgstr "Tulostaa täysikokoisen kaavion vaihteesta tarkastusta varten"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:572
-msgid "Color of Roadbed lines"
-msgstr "Ratapenkan viivan väri"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:573
-msgid "Width of Roadbed lines"
-msgstr "Ratapenkan viivan paksuus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:574
-msgid "Width of Roadbed"
-msgstr "Ratapenkan leveys"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:576
-msgid "Closes the window and returns to the Turnout Selection window"
-msgstr "Sulkee ikkunan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:577
-msgid "Specifies the diameter of the turntable"
-msgstr "Määrittelee kääntöpöydän halkaisijan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:578
-msgid "Old Turnout title"
-msgstr "Vanha raideosan otsikko"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:579
-msgid "List of available titles"
-msgstr "Luettelo saatavilla olevista otsikoista"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:580
-msgid "Leave the Turnouts' title unchanged"
-msgstr "Älä muuta raideosan otsikkoa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:581
-msgid "Invoke the Parameter Files dialog"
-msgstr "Avaa parametritiedostot ikkuna"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:582
-msgid "List of available turnouts"
-msgstr "Luettelo saatavilla olevista raideosista"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:583
-msgid "Update the Turnouts' title"
-msgstr "Päivitä raideosan otsikko"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:587
-msgid "Sample"
-msgstr "Näyte"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:589
-msgid "Slant"
-msgstr "Kursivoitu"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:590
-msgid "Font selection dialog"
-msgstr "Kirjasimen valinta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:591
-msgid "Weight"
-msgstr "Lihavoitu"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:592
-msgid "Printer Abort Window"
-msgstr "Tulostuksen keskeytys"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:593
-msgid "Print to filename"
-msgstr "Tulostuksen tiedostonimi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:594
-msgid "Specify Postscript font alias mapping"
-msgstr "Määrittele Postscript kirjasinalias"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:595
-msgid ""
-"Displays the Print Setup window to change printers, orientation, paper size, "
-"etc."
-msgstr ""
-"Näyttää tulostusasetusikkunan, josta voi valita tulostimen, muutaa paperin "
-"koon, yms."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:596
-msgid "Closes this dialog"
-msgstr "Sulkee tämän ikkunan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:597
-msgid "Page orientation"
-msgstr "Sivun suunta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:598
-msgid "Unprintable margins"
-msgstr "Tulostumattomat marginaalit"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:599
-msgid "Updates and closes this dialog"
-msgstr "Hyväksy asetukset ja sulje ikkuna"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:600
-msgid "Choose paper size"
-msgstr "Valitse paperin koko"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:601
-msgid "Choose printer"
-msgstr "Valitse tulostin"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:602
-msgid "Print test page"
-msgstr "Tulosta testisivu"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:1
-#: ../../../../build/work/app/i18n/custmsg.h:8
-msgid ""
-"XTrackCAD provides demonstrations on most of the program's features. The "
-"demos can be run by clicking on the Help menu on the Main window and then "
-"selecting Demos."
-msgstr ""
-"XTrackCAD tarjoaa havaintoesityksiä (demoja) useimmista ohjelman "
-"ominaisuuksista. Demoja voidaan suorittaa valitsemalla pääikkunan Ohje-"
-"valikosta Demot."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:3
-#: ../../../../build/work/app/i18n/custmsg.h:10
-#, fuzzy
-msgid ""
-"The notation \"Menu|Item\" is used in the documentation (and the on-line "
-"demos and tips) to indicate the selection of a menu item.\n"
-"For example, \"File|Open\" means to open the menu by clicking on File on the "
-"menu bar of the Main window and then selecting the Open item from that menu."
-msgstr ""
-"Merkintätapa \"Valikko|Komennot\" on käytössä dokumentaatiossa, ohjeessa, "
-"demoissa ja vinkeissä. Se kuvaa kyseessä olevaa valikon toimintoa.\n"
-"Esimerkiksi Tiedosto|Avaa tarkoittaa, että päävalikosta on ensin avattava "
-"Tiedosto-valikko ja sieltä valittava Avaa-komento."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:6
-#: ../../../../build/work/app/i18n/custmsg.h:12
-msgid ""
-"Set your modeling scale on the \"Options|Layout\" dialog. This controls the "
-"Turnouts and Structures that are available, Easement values and track gauge."
-msgstr ""
-"Mittakaava asetetaan \"Asetukset|Ratasuunnitelma\" ikkunasta. Tämä asetus "
-"määrää mitkä raideosat ja rakennukset ovat käytettävissä sekä "
-"kaarreloivennuksen arvot ja raideleveyden."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:8
-#: ../../../../build/work/app/i18n/custmsg.h:14
-msgid ""
-"A number of example layouts are provided. These files can be accessed by "
-"\"Help|Examples\"."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:10
-#: ../../../../build/work/app/i18n/custmsg.h:16
-#, fuzzy
-msgid ""
-"When installed, the length units are set based on your contry: inches for "
-"United States or Canada and centimeters elsewhere. You can change this on "
-"the \"Options|Preferences\" dialog by choosing between Metric and English."
-msgstr ""
-"Asennuksen jälkeen ohjelmassa on tuuma-mitat käytössä. Tämän voi muuttaa "
-"\"Asetukset|Ominaisuudet\" ikkunasta muuttamalla yksiköt metrijärjestelmään "
-"englantilaisen sijaan."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:12
-#: ../../../../build/work/app/i18n/custmsg.h:18
-msgid ""
-"You can change the overall size of your layout on the \"Options|Layout\" "
-"dialog."
-msgstr ""
-"Voit muuttaa ratasuunnitelmasi kokoa \"Asetukset|Ratasuunnitelma\" ikkunasta."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:14
-#: ../../../../build/work/app/i18n/custmsg.h:20
-#, fuzzy
-msgid ""
-"When installed, the default command is the Select command. You might want to "
-"change this to the Decribe command. You can do this on the \"Options|"
-"Command Options\" dialog."
-msgstr ""
-"Asennuksen jälkeen hiiren oletuskomento on Määritä-komento. Kokeneemmat "
-"käyttäjät saattavat haluta muuttaa tämän Valitse-komennoksi. Se tapahtuu "
-"\"Asetukset|Komennot\" ikkunasta."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:16
-#: ../../../../build/work/app/i18n/custmsg.h:22
-msgid ""
-"When Selecting tracks, the connection between Selected and Unselected tracks "
-"is marked by a Red X. This indicates points where the connection between "
-"tracks will be broken if you Move or Rotate the Selected tracks."
-msgstr ""
-"Raideosia valittaessa, valitun ja valitsemattoman raideosan välinen liitos "
-"esitetään punaisella ristillä. Tämä kertoo ne pisteet, joissa raiteiden "
-"liitos irroitetaan valittuja raiteita siirrettäessä tai pyöritettäessä."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:18
-#: ../../../../build/work/app/i18n/custmsg.h:24
-msgid ""
-"You can change orientation of the pages on the Print command by moving or "
-"rotating the Print Grid.\n"
-"Shift-Left-Drag moves the grid and Shift-Right-Drag rotates the grid."
-msgstr ""
-"Voit muuttaa tulostettavien sivujen asettelua siirtämällä tai pyörittämällä "
-"tulostusruudukkoa.\n"
-"Vaihto-näppäin ja hiiren vasen raahaus siirtää ruudukkoa ja vaihto-hiiren "
-"oikea pyörittää sitä."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:21
-#: ../../../../build/work/app/i18n/custmsg.h:26
-msgid ""
-"You can add track to any unconnected End-Point with the Modify command.\n"
-"Hold down the Shift key and click on the End-Point and drag away to create a "
-"new track segment attached to the End-Point.\n"
-"Repeat with the new End-Point to create flowing tracks."
-msgstr ""
-"Voit lisätä reiteita mihin tahansa irtonaiseen päätepisteeseen Muokkaa "
-"komennolla.\n"
-"Pidä vaihto-näppäin painettuna ja raahaa hiiren oikealla päätepisteestä "
-"luodaksesi uuden raideosan päätepisteen jatkeeksi.\n"
-"Tee sama uudesta päätepisteestä luodaksesi vapaamuotoisia raiteita."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:25
-#: ../../../../build/work/app/i18n/custmsg.h:28
-#, fuzzy
-msgid ""
-"You can create curved tracks in four ways by dragging from:\n"
-" the 1st endpoint in the direction of the curve\n"
-" center of the curve to the 1st endpoint\n"
-" endpoint to the center\n"
-" the 1st to 2nd endpoint\n"
-"Then drag on one of the Red arrows to create the final shape of the curve.\n"
-"\n"
-"You can click on the small button to the right of the Curve command button "
-"to change the method."
-msgstr ""
-"Voit luoda kaarevia raiteita neljällä tavalla raahaamalla:\n"
-" - 1. päätepisteestä kaarteen suuntaan\n"
-" - keskipisteestä kaarteen ensimmäiseen päätepisteeseen\n"
-" - päätepisteestä keskipisteeseen\n"
-" - ensimmäisestä toiseen päätepisteeseen\n"
-"Asettele sitten kaarre lopulliseen muotoonsa raahaamalla punaisista "
-"nuolista.\n"
-"\n"
-"Voit valita tavan Kaarre painikkeen oikealla puolella olevasta pienestä "
-"painikkeesta avautuvan valikon kautta."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:34
-#: ../../../../build/work/app/i18n/custmsg.h:30
-msgid ""
-"When creating a straight or a curved track by dragging from the 1st End "
-"Point, you can snap the new track to an existing open end point by holding "
-"down Shift while you click.\n"
-"The new track will be joined to the old when you create it."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:37
-#: ../../../../build/work/app/i18n/custmsg.h:32
-msgid ""
-"Track Circles provide a quick way to see what arrangement of tracks will fit "
-"in your layout spaces. Create Circles with your typical radius and place "
-"them in corners and other locations where your main-line will make changes "
-"of direction. This will give you an overall idea of how your layout will "
-"look.\n"
-"\n"
-"You can create Circles by:\n"
-" using a fixed radius\n"
-" dragging from the Center to edge\n"
-" dragging from an edge to the Center\n"
-"You can click on the small button to the left of the Circle command button "
-"to change the method."
-msgstr ""
-"Ympyräraiteet tarjoavat nopean tavan hahmottaa millainen raidejärjestely "
-"mahtuu suunniteltuun tilaan. Luo ympyräraiteita käyttäen aikomaasi "
-"kaarresädettä ja asettele niitä nurkkiin ja muihin paikkoihin, joissa "
-"pääraiteesi vaihtaa suuntaa. Tämä antaa yleiskuvan tulevan ratasi muodosta.\n"
-"\n"
-"Voit luoda ympyräraiteita:\n"
-" - Käyttämällä määrättyä sädettä.\n"
-" - Raahaamalla keskipisteestä pois päin.\n"
-" - Raahaamalla kehältä kohti keskipistettä.\n"
-"Voit valita tavan valikosta, joka avautuu Ympyrärata-painikkeen oikealta "
-"puolelta."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:45
-#: ../../../../build/work/app/i18n/custmsg.h:34
-msgid ""
-"Easements (spiral transition curves) are used when track changes from "
-"straight to curved by gradually changing the radius. This improves "
-"operation and appearance.\n"
-"Easements are created with Joining or Extending Tracks.\n"
-"The Easement dialog is used to control easements."
-msgstr ""
-"Kaarreloivennuksia käytetään radan muuttuessa suorasta kaarteeksi "
-"muuttamalla vaihdoskohdassa kaarresädettä asteittain. Tämä parantaa radan "
-"ajettavuutta ja ulkonäköä.\n"
-"Kaarreloivennukset luodaan yhdistämällä tai jatkamalla raiteita.\n"
-"Kaarreloivennus-ikkunasta asetellaan tarvittavat parametrit."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:49
-#: ../../../../build/work/app/i18n/custmsg.h:36
-msgid ""
-"\"Help|Recent Messages\" shows the last error and warning messages that were "
-"generated by the program. Also an explanation of each message is displayed."
-msgstr ""
-"\"Ohje|Viimeisimmät viestit\" näyttää tapahtuneet virheet ja varoitukset. "
-"Valitsemalla jonkin viesteistä saat tarkennetun kuvauksen viestistä."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:51
-#: ../../../../build/work/app/i18n/custmsg.h:38
-#, fuzzy
-msgid ""
-"When creating stall tracks for a turntable, you usually want the the stall "
-"tracks to be spaced evenly.\n"
-"The \"Turntable Angle\" item on \"Options|Preferences\" dialog can be used "
-"specify the minimum angle between stall tracks."
-msgstr ""
-"Luodessasi kääntöpöytään liittyviä raiteita, haluat yleensä ainakin osan "
-"niistä olevan tasavälein.\n"
-"\"Kääntöpöydän kulma\" parametrilla asetetaan pienin kääntöpöytään "
-"liittyvien raiteiden välinen kulma. Tämä parametri löytyy \"Asetukset|"
-"Komennot\" valikosta."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:54
-#: ../../../../build/work/app/i18n/custmsg.h:40
-msgid ""
-"XTrackCAD periodically saves the current layout in a check point file. The "
-"'Check Point' item on the 'Options|Preferences' dialog controls how often "
-"the file is saved.\n"
-"You can recover your working file after a system crash by copying the "
-"checkpoint file (xtrkcad.ckp in the XTrackCAD Working directory) to file.xtc"
-msgstr ""
-"XTrackCAD tallentaa säännöllisesti ratasuunnitelman varmennustiedostoon. "
-"\"Automaattinen varmennus\" asetus \"Asetukset|Ominaisuudet\" ikkunassa "
-"määrää kuinka usein tiedosto tallennetaan.\n"
-"Voit palauttaa työkopiosi järjestelmän kaatumisen jälkeen kopioimalla "
-"varmennustiedosto xtrkcad.ckp, joka sijaitsee XTrackCADin työhakemistossa, ."
-"xtc tiedostoksi."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:57
-#: ../../../../build/work/app/i18n/custmsg.h:42
-msgid ""
-"The Parallel command is helpful to layout yards and sidings. If the "
-"Parallel track abuts with an existing track, it is automatically connected."
-msgstr ""
-"Luo rinnakkainen raide -komento on avuksi tehtäessä ratapihoja ja "
-"sivuraiteita. Jos luotava rinnakkainen raide rajoittuu olemassa olevaan "
-"raiteeseen, ne yhdistetään automaattisesti."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:59
-#: ../../../../build/work/app/i18n/custmsg.h:44
-msgid ""
-"You can use Shift-Drag in Select command to move and rotate selected "
-"tracks.\n"
-"Shift-Left-Drag moves tracks and Shift-Right-Drag rotates them.\n"
-"Control-Left-Drag can move labels."
-msgstr ""
-"Valitse-komennon ollessa käytössä voit siirtää ja pyörittää raiteita "
-"pitämällä vaihto-näppäin painettuna ja raahaamalla hiirellä. Vaihto + "
-"vasemmalla raahaus siirtää ja vaihto + oikealla raahaus pyörittää niitä.\n"
-"Control + vasemmalla raahaaminen siirtää merkintöjä."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:63
-#: ../../../../build/work/app/i18n/custmsg.h:46
-msgid ""
-"You can move and rotate the Snap Grid to align with existing track or "
-"benchwork."
-msgstr ""
-"Voit siirtää ja pyörittää kohdistusruudukkoa halutessasi kohdistaa jonkin "
-"olemassa olevan raiteen, runkorakenteen tai pöydän reunan kanssa."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:65
-#: ../../../../build/work/app/i18n/custmsg.h:48
-msgid ""
-"Use the Parts List command to measure track length.\n"
-"Select the tracks you want to measure and then click on the Parts List "
-"button. The report will list the total of length of the selected flex-"
-"track. You will have to add in the length of any Turnouts."
-msgstr ""
-"Käytä osaluetteloa mitataksesi radan pituuksia.\n"
-"Valitse mitattava rataosuus ja avaa sitten osaluettelo. Raportissa on "
-"laskettuna fleksi raiteen kokonaispituus valitulla rataosuudella. "
-"Palaraiteiden pituudet täytyy lisätä erikseen."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:68
-#: ../../../../build/work/app/i18n/custmsg.h:50
-msgid ""
-"The length of flex-track attached to each Turnout is displayed on layout "
-"near the end-points of the Turnouts.\n"
-"Make sure 'Lengths' option of the 'Label Enable' toggle button on the "
-"Display dialog is selected."
-msgstr ""
-"Kuhunkin palaraiteeseen liittyvän fleksiraiteen pituus näytetään "
-"ratasuunnitelmassa palaraiteiden päiden lähellä.\n"
-"Varmista että Asetukset|Näyttöasetukset ikkunassa on ruksittu kohta "
-"\"Pituudet\" näytettävien merkintöjen kohdalla."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:71
-#: ../../../../build/work/app/i18n/custmsg.h:52
-msgid ""
-"The Profile command can be used to find the length of a continous section of "
-"track.\n"
-"Select the track at the beginning and end of the section. The total length "
-"of track will be displayed on the Profile window in the lower right corner.\n"
-"Note: the Profile selects the shortest path between the two selected tracks, "
-"which might not be the path you are interested in. In this case, select the "
-"first track and then select other tracks along the path."
-msgstr ""
-"Profiili-komentoa voidaan käyttää selvitettäessä jonkin yhtenäisen "
-"raideosuuden pituus.\n"
-"Valitse halutun raideosuuden alku- ja loppupää, jolloin osuuden "
-"kokonaispituus näytetään profiilikäyrän vaaka-akselin oikeassa reunassa.\n"
-"Huom: Profiili-komento valitsee aina lyhyimmän reitin annettujen pisteiden "
-"välillä. Jos haluat itse valita toisen reitin, valitse ensin alkupiste ja "
-"etene sitten haluttua reittiä pitkin loppupisteeseen."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:75
-#: ../../../../build/work/app/i18n/custmsg.h:54
-msgid ""
-"Layers can be used to contain different groups of tracks or other features. "
-"You might use one layer for the main-line, another of staging tracks and "
-"another of benchwork.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:77
-#: ../../../../build/work/app/i18n/custmsg.h:56
-msgid ""
-"You can give each layer a name (by using the \"Manage|Layer\" dialog). This "
-"name will be displayed as the Balloon Help for the corresponding Layer "
-"button, if you have Balloon Help enabled on the \"Options|Display\" dialog."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:79
-#: ../../../../build/work/app/i18n/custmsg.h:58
-msgid ""
-"You can remove groups of buttons or the Hot Bar from the Main window to give "
-"you more room if you are not using some features. Also, the number of Layer "
-"buttons displayed is controlled by the \"Manage|Layers\" dialog."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:81
-#: ../../../../build/work/app/i18n/custmsg.h:60
-msgid ""
-"The size of the map window is controlled by the overall size of the room "
-"(specified on the layout dialog) and the map scale (on the display dialog). "
-"You can make the Map window larger (or smaller) by decreasing (or "
-"increasing) the map scale.\n"
-"XTrackCad will prevent you from making the map window too small or too large."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:84
-#: ../../../../build/work/app/i18n/custmsg.h:62
-msgid ""
-"You can unload parameter files you are not using by the Parameter Files "
-"dialog. This removes unused Turnout and Structure definitions from the Hot "
-"Bar and makes the program start faster."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:86
-#: ../../../../build/work/app/i18n/custmsg.h:64
-msgid ""
-"Right-Click on the Main window displays a menu list of commands as an "
-"alternative to pressing the buttons on the tool bar or using the menu "
-"accelerator keys."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:87
-#: ../../../../build/work/app/i18n/custmsg.h:66
-msgid ""
-"Holding down the Shift key while you Right-Click will display options for "
-"the current command (if any)."
-msgstr ""
-"Jos pidät vaihto-näppäintä painettuna, kun klikkaat hiiren oikealla "
-"painilleella, saat aktiiviseen komentoon liittyvän ponnahdusvalikon, mikäli "
-"komentoon sellainen liittyy."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:89
-#: ../../../../build/work/app/i18n/custmsg.h:68
-msgid ""
-"Right-Click on the Hot Bar displays a menu of the different groups of "
-"objects which you can use to jump to the group you are interested in.\n"
-"Pressing a numeric key (1-9 and 0) moves the Hot Bar to corresponding "
-"position (1 is the start, 5 is half way, 0 is the end)."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:92
-#: ../../../../build/work/app/i18n/custmsg.h:70
-msgid ""
-"Right-Drag on the Map window sets the origin and scale of the Main window.\n"
-"The Main window will be centered on the spot where you started the Draw and "
-"how far you Drag will control how large an area you can see on the Main "
-"window."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:95
-#: ../../../../build/work/app/i18n/custmsg.h:72
-msgid ""
-"To refresh the Main window, press Control-L (hold down the 'Ctrl' key and "
-"then press the 'l' key)."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:97
-#: ../../../../build/work/app/i18n/custmsg.h:74
-msgid ""
-"The File menu contains a list of the last 5 layouts you were working on."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:99
-#: ../../../../build/work/app/i18n/custmsg.h:76
-msgid ""
-"The Print command can optionally print lines representing the roadbed for "
-"all tracks. This is useful when printing full size (1:1) for cutting "
-"roadbed."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:101
-#: ../../../../build/work/app/i18n/custmsg.h:78
-msgid ""
-"Pressing the 'Esc' key cancels the current command and invokes the default "
-"command, (which is either Describe or Select)."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:103
-#: ../../../../build/work/app/i18n/custmsg.h:80
-msgid ""
-"When moving or rotating tracks on slow machines or with a large number of "
-"tracks, you can improve performance by changing the way tracks are drawn "
-"while being moved.\n"
-"Shift-Right click will display a menu containing options to draw tracks "
-"normally, as simple lines or just draw end-points."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:106
-#: ../../../../build/work/app/i18n/custmsg.h:82
-msgid ""
-"The colors of different parts of the Main window can be changed with the "
-"Colors dialog. In particular, the Snap Grid color can be changed to make it "
-"more visible when printed."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:108
-#: ../../../../build/work/app/i18n/custmsg.h:84
-msgid ""
-"By default objects are drawn in their normal colors. Tracks will be drawn "
-"in Black. Objects can also be drawn in the color according to their Layer. "
-"The color of a Layer is displayed on the corresponding Layer button.\n"
-"The Display dialog 'Color Layers' item has separate toggles for Tracks and "
-"non-Tracks."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:111
-#: ../../../../build/work/app/i18n/custmsg.h:86
-msgid ""
-"Each Layer can be drawn or hidden by the 'Visible' toggle on the Layers "
-"dialog."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:112
-#: ../../../../build/work/app/i18n/custmsg.h:88
-msgid ""
-"Short cut Layer buttons can also be displayed on the tool bar for up to the "
-"first 20 layers.\n"
-"This buttons allow to Show or Hide the layers."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:115
-#: ../../../../build/work/app/i18n/custmsg.h:90
-msgid "The name of the Layer is the Balloon Help for the Layer button."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:117
-#: ../../../../build/work/app/i18n/custmsg.h:92
-msgid ""
-"The playback speed of the Demos can be changed by using Speed drop down list "
-"on the Demo window."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:119
-#: ../../../../build/work/app/i18n/custmsg.h:94
-msgid ""
-"Many of the commands and dialogs can be invoked by special key combinations "
-"called Menu-Accelerators. These are listed on the Menus next to the command "
-"name. For example, Control-P will invoke the Print command."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:121
-#: ../../../../build/work/app/i18n/custmsg.h:96
-msgid ""
-"The Connect command is used to join Sectional track pieces that don't quite "
-"fit together.\n"
-"This command works by adding small gaps between other tracks to move the "
-"selected End-Points closer together."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:124
-#: ../../../../build/work/app/i18n/custmsg.h:98
-msgid ""
-"To copy a group of objects: Select the objects, press Control-c (or select "
-"Copy from the Edit menu), press Control-v (or select Paste from the Edit "
-"menu).\n"
-"The selected tracks will be copied to the layout and you can Move or Rotate "
-"them into position."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:127
-#: ../../../../build/work/app/i18n/custmsg.h:100
-msgid ""
-"In the Rotate (or Select) commands you can press Shift-Right-Click to "
-"display the Rotate menu which allows you to rotate the selected objects by a "
-"specific angle."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:129
-#: ../../../../build/work/app/i18n/custmsg.h:102
-msgid ""
-"You can use the Move-To-Join option of the Join command (hold down the Shift "
-"key) to move a group of Selected tracks to attach with some unselected End-"
-"Point."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:131
-#: ../../../../build/work/app/i18n/custmsg.h:104
-msgid ""
-"The Price List dialog (on the File Menu) is used to specify the prices of "
-"each type of Turnout, Sectional Track and Structure. Also, the length and "
-"price of flex-track pieces can be specified for each scale.\n"
-"This values will be used on the Parts List report to generate total cost of "
-"the selected objects."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:134
-#: ../../../../build/work/app/i18n/custmsg.h:106
-msgid ""
-"Areas of water can represented by a Polygon (use the Draw command) of the "
-"appropiate color.\n"
-"By using the Modify command, you can move, add or remove corners of the "
-"Polygon to fit the shape of the water.\n"
-"You use the Below command to place the Polygon below (or behind) other "
-"objects.\n"
-"\n"
-"You can also use a Polygon to represent aisles."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:140
-#: ../../../../build/work/app/i18n/custmsg.h:108
-msgid ""
-"When you create Benchwork you can move it below other objects by Selecting "
-"the Benchwork and use the Below command.\n"
-"Also, put Benchwork in a separate Layer so you can hide it if desired."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:143
-#: ../../../../build/work/app/i18n/custmsg.h:110
-msgid ""
-"You can enter Distances and Lengths using any format regardless of the "
-"Length Format on the Preferences dialog."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:144
-#: ../../../../build/work/app/i18n/custmsg.h:112
-msgid ""
-"You can enter Metric values when English is the default Units and vice versa."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:146
-#: ../../../../build/work/app/i18n/custmsg.h:114
-msgid ""
-"When entering Distances and Lengths you can press the '=' key to redisplay "
-"the value in the default format."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:147
-#: ../../../../build/work/app/i18n/custmsg.h:116
-msgid ""
-"You can also press the 's' key to convert a Prototype measurement to a Scale "
-"measurement by dividing by the ratio for the current scale."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:148
-#: ../../../../build/work/app/i18n/custmsg.h:118
-msgid ""
-"The 'p' key will convert a Scale measurement to a Prototype measurement."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:150
-#: ../../../../build/work/app/i18n/custmsg.h:120
-msgid ""
-"You can place cars on the layout using the Train Simulation command to check "
-"clearance points, track to track separation and coupling."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:152
-#: ../../../../build/work/app/i18n/custmsg.h:122
-msgid ""
-"Use the MoveTo button on the Custom Management dialog to move your custom "
-"Turnout, Structure and Car definitions to a .XTP parameter file."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:154
-#: ../../../../build/work/app/i18n/custmsg.h:124
-msgid ""
-"If you are printing multiple pages on a continuous feed printer (such a Dot "
-"Matrix) you can change the Page Order if necessary to print pages out in "
-"proper order."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:156
-#: ../../../../build/work/app/i18n/custmsg.h:126
-msgid ""
-"On the Car Item and Car Part dialogs, you can enter custom values for "
-"Manufacturer, Part and Road by typing the new value directly into the Drop "
-"Down List."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:158
-#: ../../../../build/work/app/i18n/custmsg.h:128
-msgid ""
-"On the Car Item dialog, you can change the Road, Number, Color and other "
-"values for a Car. This is useful if you repaint or renumber a car. \n"
-"You can also change the Coupler Mounting and Coupler Length if you change "
-"the couplers."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:161
-#: ../../../../build/work/app/i18n/custmsg.h:130
-msgid ""
-"You can Export your Car Inventory to a file in Comma-Separated-Value format "
-"which can be read by most spread-sheet programs."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:163
-#: ../../../../build/work/app/i18n/custmsg.h:132
-msgid "Use the Train Odometer to measure distances along the track."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:165
-#: ../../../../build/work/app/i18n/custmsg.h:134
-msgid ""
-"Holding down the Shift key when clicking the Zoom In or Zoom Out button will "
-"zoom to a programmed Drawing Scale. \n"
-"Holding down the Shift and Control keys when clicking a Zoom button will set "
-"it's program Zoom to the current Drawing Scale."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:168
-#: ../../../../build/work/app/i18n/custmsg.h:136
-msgid ""
-"You can trim the ends of turnouts by holding down the Shift key when using "
-"the Split command."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:170
-#: ../../../../build/work/app/i18n/custmsg.h:138
-msgid ""
-"The Split command can be used to create Block Gaps at end points between two "
-"tracks. \n"
-"Either rail or both rails can be gapped, which are drawn as thick lines."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:173
-#: ../../../../build/work/app/i18n/custmsg.h:140
-msgid ""
-"Trains will 'crash' if they hit another car when travelling faster than the "
-"'Max Coupling Speed' (on the Command Options dialog). \n"
-"They will also 'crash' if they hit the end of the track or an open "
-"turnout. \n"
-"Crashed trains must be manually moved back onto the track."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:177
-#: ../../../../build/work/app/i18n/custmsg.h:142
-msgid ""
-"You can add new track segments to a turnout definition or create a "
-"definition from individual tracks using the Group command."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:179
-#: ../../../../build/work/app/i18n/custmsg.h:144
-msgid ""
-"The center point and radius of Curved and Circle tracks can optionally be "
-"drawn. \n"
-"This feature is toggled by using the Move Label command and doing a Shift-"
-"Left-Click on the track."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:182
-#: ../../../../build/work/app/i18n/custmsg.h:146
-msgid ""
-"Turnout, Curved and Helix track labels can be individually turned on and off "
-"by doing a Shift-Right-Click on the track when using the Move Label command."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:184
-#: ../../../../build/work/app/i18n/custmsg.h:148
-msgid ""
-"You can use the Describe command to change the font size of Text objects."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:186
-#: ../../../../build/work/app/i18n/custmsg.h:150
-msgid ""
-"You can use the Describe command to change the size of Dimension Line labels."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:188
-#: ../../../../build/work/app/i18n/custmsg.h:152
-msgid ""
-"Normally Right-Click displays a popup menu of commands and Shift-Right-Click "
-"displays options for the current command. \n"
-"This can reversed by using the Right Click toggle button on the Command "
-"Options dialog."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:191
-#: ../../../../build/work/app/i18n/custmsg.h:154
-msgid ""
-"The Align item on the Rotate command options menu will let you Align "
-"selected objects with any unselected object. \n"
-"The selected objects are rotated so the first point is parallel to the "
-"second point you selected."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:194
-#: ../../../../build/work/app/i18n/custmsg.h:156
-msgid ""
-"Print To Bitmap allows you to print the track center line. \n"
-"This is useful if you later print the bitmap full size as a template when "
-"laying track."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:197
-#: ../../../../build/work/app/i18n/custmsg.h:158
-msgid ""
-"You can export the selected tracks to a DXF file which can be read by most "
-"CAD programs."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:199
-#: ../../../../build/work/app/i18n/custmsg.h:160
-msgid ""
-"Lengths and distances can be displayed in a variety of units and formats "
-"such as 1' 10 3/4\", 1ft 10.75in or 22.750. In Metric mode, distances can "
-"be displayed as millimeters, centimeters or meters. See the Length Format "
-"item on the Preferences dialog."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:201
-#: ../../../../build/work/app/i18n/custmsg.h:162
-msgid ""
-"Tracks that are too steep or curve too tightly are drawn in the Exception "
-"color (Yellow by default). \n"
-"This helps to identify potential problem areas. \n"
-"The maximum grade and minimum radius are set on the Preferences dialog."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:205
-#: ../../../../build/work/app/i18n/custmsg.h:164
-msgid ""
-"The Flip command produces a mirror-image of the selected tracks. \n"
-"If possible, right-hand turnouts are relabeled as left-hand turnouts (and "
-"vice versa)."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:208
-#: ../../../../build/work/app/i18n/custmsg.h:166
-msgid ""
-"Then Ungroup command will break turnouts and structures into individual "
-"track, line and shape segments. \n"
-"You can modify each segment and add new ones. \n"
-"Then use the Group command to update the definition."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:212
-#: ../../../../build/work/app/i18n/custmsg.h:168
-msgid "Dimension lines show the distance between two points."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:214
-#: ../../../../build/work/app/i18n/custmsg.h:170
-msgid ""
-"A variety of Benchwork (rectangular, L-girder and T-girder) can be drawn. \n"
-"Use the Below command to move the Benchwork below the track for proper "
-"display."
-msgstr ""
-"Erilaisia runkorakenteita voidaan piirtää (suora, L-palkki ja T-palkki).\n"
-"Käytä \"alimmaiseksi\" komentoa siirtääksesi runkorakenteen radan ja "
-"maisemoinnin alapuolelle."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:217
-#: ../../../../build/work/app/i18n/custmsg.h:172
-msgid ""
-"The Turnout Designer dialogs allow you to specify the width of any attached "
-"roadbed. \n"
-"As well, the color and thickness of the lines used to represent the roadbed "
-"can be specified."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:220
-#: ../../../../build/work/app/i18n/custmsg.h:174
-msgid ""
-"The Color dialog (on the Options menu) is used to change the color of "
-"different objects on the display. \n"
-"You can change the color of the Snap Grid and Borders, as well as Normal, "
-"Selected and Exception tracks."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:223
-#: ../../../../build/work/app/i18n/custmsg.h:176
-msgid ""
-"You can set the elevation (height) of track end-points. \n"
-"Elevations of intermediate end points can be computed automatically based on "
-"the distance to the nearest end points with defined elevations. \n"
-"Grades can also be displayed at selected end points. \n"
-"Please see the Elevations help and demo."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:228
-#: ../../../../build/work/app/i18n/custmsg.h:178
-msgid ""
-"Once you have elevations on some endpoints, you can use the Profile command "
-"to produce an elevation graph. \n"
-"The graph shows the selected elevations, grades and distances. \n"
-"Please see the Profile help and demo for details."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:232
-#: ../../../../build/work/app/i18n/custmsg.h:180
-msgid ""
-"You can draw tracks with wider lines for rails. \n"
-"Select the tracks and use Medium or Thick Tracks on the Edit menu."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:235
-#: ../../../../build/work/app/i18n/custmsg.h:182
-msgid ""
-"The Helix command is used to create a Helix track. \n"
-"You specify some parameters: height, radius, number of turns, grade and "
-"vertical separation between layers. \n"
-"These values are interrelated so changing one value will affect ohers. \n"
-"Then you can place the Helix and join to other tracks as you would a Circle "
-"track."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:240
-#: ../../../../build/work/app/i18n/custmsg.h:184
-msgid ""
-"Many objects on the layout have labels: Turnouts/Helix/Curved Titles, Track "
-"Lenghts, End-Point Elevations, Track Elevations and Cars. \n"
-"You can turn these labels on or off with the Label Enable toggle buttons on "
-"the Display options dialog."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:243
-#: ../../../../build/work/app/i18n/custmsg.h:186
-#, fuzzy
-msgid ""
-"If you hold down the Control key when using the Rotate command, the rotation "
-"will be done in increments of 15ᅵ."
-msgstr ""
-"Jos pidät control-näppäintä painettuna raahatessasi, pöydän reuna ja muut "
-"objektit vetävät toisiaan puoleensa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:245
-#: ../../../../build/work/app/i18n/custmsg.h:188
-msgid ""
-"When using the Rotate command, Shift-Right-Click displays a menu allowing "
-"you to rotate by specific amounts or to align the selected objects with "
-"another object."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:247
-#: ../../../../build/work/app/i18n/custmsg.h:190
-msgid ""
-"This is last tip. If you have any additions or comments, please let us know."
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:25
-#: ../../../../build/work/app/i18n/custmsg.h:192
-#, fuzzy
-msgid ""
-"The unconnected endpoints of a straight or curved track can be changed with "
-"the 'Modify Track' command.\n"
-msgstr ""
-"Suorien ja kaarevien raiteiden irtonaisia päätepisteitä voidaan muuttaa "
-"Muokkaa-komennolla.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:31
-#: ../../../../build/work/app/i18n/custmsg.h:194
-#, fuzzy
-msgid ""
-"The endpoint of a straight track is selected and then Left-Dragged to change "
-"its length. A blue anchor shows that the length can be extended.\n"
-msgstr ""
-"Suoran raiteen pituutta muutetaan raahaamalla hiiren vasemmalla painikkeella "
-"sen päätepisteestä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:48
-#: ../../../../build/work/app/i18n/custmsg.h:196
-#, fuzzy
-msgid ""
-"If you try to drag the selected endpoint beyond the far endpoint, the track "
-"extends in the opposite direction.\n"
-msgstr ""
-"Katso mitä tapahtuu, jos raahaat valitun päätepisteen toisen päätepisteen "
-"yli.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:68
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:73
-#: ../../../../build/work/app/i18n/custmsg.h:199
-#, fuzzy
-msgid ""
-"A curved track is selected and it's new endpoint is determined by the angle "
-"to the cursor. \n"
-msgstr "Kaarteen päätepistettä voidaan siirtää kehää pitkin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:105
-#: ../../../../build/work/app/i18n/custmsg.h:201
-msgid "It's possible to almost create a complete circle.\n"
-msgstr "On mahdollista luoda lähes täydellinen ympyrä.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:202
-msgid ""
-"If you drag the mouse beyond the start of the curve the track becomes very "
-"short.\n"
-msgstr ""
-"Jos raahaat hiirellä kaarteen alkupisteen yli raiteesta tulee erittäin "
-"lyhyt.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:113
-#: ../../../../build/work/app/i18n/custmsg.h:204
-msgid "Here you are warned that the track will be too short.\n"
-msgstr "Tällöin varoitetaan liian lyhyestä raiteesta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:147
-#: ../../../../build/work/app/i18n/custmsg.h:206
-msgid ""
-"If you move the cursor away from the curve, you will create a straight track "
-"tangent to the curve.\n"
-msgstr ""
-"Jos siirrät osoitinta kauemmas kaarteesta, voit luoda suoran raiteen "
-"kaarteen tangentin suuntaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:169
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:174
-#: ../../../../build/work/app/i18n/custmsg.h:209
-#, fuzzy
-msgid ""
-"If you adjust the endpoint of a turnout or sectional track the track is "
-"extended by a similar track segment. The extension can be \n"
-msgstr ""
-"Jos muutat palaraiteen tai vaihteen päätepistettä, uusi raideosa luodaan "
-"edellisen jatkeeksi.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:210
-#, fuzzy
-msgid "a straight or a curve.\n"
-msgstr "ja suoraksi raideosaksi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:190
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:195
-#: ../../../../build/work/app/i18n/custmsg.h:213
-#, fuzzy
-msgid ""
-"You can change the radius of a straight or curved track that is connected at "
-"one endpoint by holding down the Shift key while Left-dragging on it.\n"
-msgstr ""
-"Voit muuttaa suoran tai kaarevan raiteen sädettä, mikäli se on toisesta "
-"päästä liitetty. Tämä tapahtuu pitämällä vaihto-näppäintä painettuna "
-"raahattaessa raiteen toisesta päästä hiiren vasemmalla painikkeella.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:214
-msgid ""
-"The blue cross anchor shows that this is possible when shift is held down "
-"with no buttons.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:209
-#: ../../../../build/work/app/i18n/custmsg.h:216
-#, fuzzy
-msgid ""
-"This lets you change a straight track into a curved track (and vice versa) "
-"as well as changing the radius of a curved track.\n"
-msgstr ""
-"Näin voit muuttaa suoran raiteen kaarteeksi ja päin vastoin, sekä muuttaa "
-"kaarteen sädettä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:252
-#: ../../../../build/work/app/i18n/custmsg.h:218
-#, fuzzy
-msgid ""
-"You can form an extension of a straight or curved Track that is connected at "
-"one endpoint using an easement by holding down the Ctrl key while Left-"
-"dragging on it.\n"
-msgstr ""
-"Voit muuttaa suoran tai kaarevan raiteen sädettä, mikäli se on toisesta "
-"päästä liitetty. Tämä tapahtuu pitämällä vaihto-näppäintä painettuna "
-"raahattaessa raiteen toisesta päästä hiiren vasemmalla painikkeella.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:219
-msgid ""
-"The blue half cross anchor shows that this is possible when the Ctrl key is "
-"held down with no mouse button.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:267
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmbench.xtr:9
-#: ../../../../build/work/app/i18n/custmsg.h:222
-msgid "You can draw a variety of different types of benchwork:\n"
-msgstr "Voit piirtää eri tyyppisiä runkorakenteita:\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:223
-msgid "- rectangular (1x2, 2x4 etc)\n"
-msgstr "- suora (25 x 50 mm, 50 x 100 mm jne)\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:224
-msgid "- L girders\n"
-msgstr "- L-palkki\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:225
-msgid "- T girders\n"
-msgstr "- T-palkki\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:226
-msgid "You can also draw them in different orientations.\n"
-msgstr "Voit myös piirtää ne eri asentoihin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmbench.xtr:25
-#: ../../../../build/work/app/i18n/custmsg.h:228
-msgid "We will draw two 3x6 inch L-girders.\n"
-msgstr "Piirrämme nyt 3x6 tuuman L-palkkeja.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmbench.xtr:43
-#: ../../../../build/work/app/i18n/custmsg.h:230
-msgid ""
-"The flange of the top L-Girders is on the outside edge of the girders. We "
-"want to change the girder so both flanges are on the inside.\n"
-msgstr ""
-"Ylemmän L-palkin pystylape on rakenteen ulkopuolella. Haluamme että "
-"molempien palkkien pystylappeet ovat sisäpuolella.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:231
-msgid "We will use the <Describe> command for this.\n"
-msgstr "Käytämme määrittele-komentoa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmbench.xtr:54
-#: ../../../../build/work/app/i18n/custmsg.h:233
-msgid "Change the Orientation to Right.\n"
-msgstr "Muuta \"suunta\" \"oikeaksi\".\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmbench.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:235
-msgid "Now both flanges are on the inside of the two girders.\n"
-msgstr "Nyt kummankin L-palkin pystylappeet ovat sisäpuolella.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:34
-#: ../../../../build/work/app/i18n/custmsg.h:237
-msgid ""
-"Pushing the <Describe> button will cancel any other command in progress.\n"
-msgstr ""
-"Määrittele -komennon valitseminen keskeyttää minkä tahansa meneillään olevan "
-"komennon.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:238
-#, fuzzy
-msgid ""
-"Here we will begin to create a curved track which is a two step process.\n"
-msgstr ""
-"Tässä aloitamme luomaan kaarevaa raidetta, joka on kaksiosainen toiminto.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:47
-#: ../../../../build/work/app/i18n/custmsg.h:240
-msgid ""
-"When we clicked on the <Describe> button, the current command was "
-"cancelled.\n"
-msgstr ""
-"Klikkaamalla Määrittele -painiketta, sen hetkinen komento peruutettiin.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:241
-#, fuzzy
-msgid ""
-"When in <Describe> mode, selecting any object will print a description in "
-"the Status Bar and display a dialog showing properties of the clicked-on "
-"object.\n"
-msgstr ""
-"Määrittely -tilassa minkä tahansa objektin valinta tulostaa sen kuvauksen "
-"tilariville sekä avaa ikkunan, jossa esitetään valitun kohteen "
-"ominaisuudet.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:57
-#: ../../../../build/work/app/i18n/custmsg.h:243
-#, fuzzy
-msgid ""
-"Certain parameters of the object can be changed. In this case we'll change "
-"the length\n"
-msgstr ""
-"Tiettyjä parametreja voi muuttaa. Tässä tapauksesa muutamme pituutta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:65
-#: ../../../../build/work/app/i18n/custmsg.h:245
-msgid "Let's look at the Turnout...\n"
-msgstr "Katsokaamme vaihdetta...\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:73
-#: ../../../../build/work/app/i18n/custmsg.h:247
-#, fuzzy
-msgid "and change the turnout name and part no.\n"
-msgstr "ja muuttakaamme sen otsikkoa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:84
-#: ../../../../build/work/app/i18n/custmsg.h:249
-#, fuzzy
-msgid "You can change the contents of text...\n"
-msgstr "Voit muuttaa tekstin sisältöä...\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:93
-#: ../../../../build/work/app/i18n/custmsg.h:251
-msgid "and its size.\n"
-msgstr "ja kokoa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:100
-#: ../../../../build/work/app/i18n/custmsg.h:253
-#, fuzzy
-msgid ""
-"If you select a note, the Description dialog appears which displays the "
-"contents of the note.\n"
-msgstr ""
-"Jos valitset muistiinpanon, avautuu ikkuna, josta voit muuttaa muistiinpanon "
-"sisältöä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:112
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcircle.xtr:7
-#: ../../../../build/work/app/i18n/custmsg.h:256
-msgid ""
-"Like the <Curve> track command, there are several ways to create a Circle "
-"track.\n"
-msgstr "Kuten kaarteet, myös ympyräradat voidaan luoda usealla eri tavalla.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:257
-msgid ""
-"The first is to specify a fixed radius and simply drag the Circle into "
-"position.\n"
-msgstr ""
-"Ensimmäinen tapa on määritellä ympyrän säde ja yksinkertaisesti raahaamalla "
-"ympyrä paikoilleen.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:258
-msgid "We will change the Radius before proceeding.\n"
-msgstr "Muutamme säteen ennen kuin jatkamme.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcircle.xtr:24
-#: ../../../../build/work/app/i18n/custmsg.h:260
-msgid "The next method is to drag from the edge of the Circle to the center.\n"
-msgstr "Seuraava tapa on raahata ympyrän kehältä kohti keskipistettä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcircle.xtr:37
-#: ../../../../build/work/app/i18n/custmsg.h:262
-msgid ""
-"The last is similar, but you drag from the center of the Circle to the "
-"edge.\n"
-msgstr ""
-"Viimeinen tapa on vastaavanlainen, mutta raahataan ympyrän keskipisteestä "
-"ulos päin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcircle.xtr:50
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:157
-#: ../../../../build/work/app/i18n/custmsg.h:265
-msgid ""
-"We have built a siding using Sectional track and have 2 End-Points that "
-"don't line up and are not connected automatically when placing the sectional "
-"track.\n"
-msgstr ""
-"Olemme rakentaneet sivuraiteen käyttäen palaraiteita. Kaksi päätepistettä "
-"eivät ole riittävän kohdakkain, jotta ne olisi automaattisesti liitetty "
-"toisiinsa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:162
-#: ../../../../build/work/app/i18n/custmsg.h:267
-msgid ""
-"We use the <Connect> command to adjust neighboring tracks so the gap is "
-"closed.\n"
-msgstr ""
-"Käytämme liitä-komentoa säätääksemme viereisiä raideosia siten, että rako "
-"saadaan suljettua.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:268
-msgid ""
-"Note: the adjustments are only done on tracks which have only 1 or 2 "
-"connections. In this example the Turnouts would not be affected.\n"
-msgstr ""
-"Huom: Säätö tehdään vain niille raideosille, joilla on vain yksi tai kaksi "
-"liitosta. Tässä esimerkissä vaihteet jäävät koskemattomiksi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:175
-#: ../../../../build/work/app/i18n/custmsg.h:270
-msgid "And now the gap is closed.\n"
-msgstr "Nyt rako on suljettu.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:181
-#: ../../../../build/work/app/i18n/custmsg.h:272
-msgid "Other tracks have been shifted slightly to close the gap.\n"
-msgstr "Muita raideosia siirrettiin hieman, jotta rako saatiin suljettua.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:188
-#: ../../../../build/work/app/i18n/custmsg.h:274
-msgid "You can see these slight mis-alignments.\n"
-msgstr "Voit nähdä hienoisen heiton raideosien kohdistuksessa.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:275
-msgid "But they will have no effect when the layout is actually built.\n"
-msgstr "Mutta sillä ei ole merkitystä kun rata todellisuudessa rakennetaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:196
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:353
-#: ../../../../build/work/app/i18n/custmsg.h:278
-msgid ""
-"After working with Sectional track you might get to point where these mis-"
-"alignments have accumulated and you wish to remove them.\n"
-msgstr ""
-"Työskenneltyäsi palaraiteiden kanssa voit päätyä tilanteeseen, jossa nämä "
-"kohdistusten heitot ovat kertautuneet ja haluat korjata ne.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:279
-msgid ""
-"You can remove these slight mis-alignments by tightening the tracks starting "
-"from a unconnected End-Point. Use Shift-Left-Click with the <Connect> "
-"command.\n"
-msgstr ""
-"Voit poistaa kohdistusten heiton tiukentamalla raideosat alkaen irrallisesta "
-"päätepisteestä. Käytä liitä-komentoa ja pidä vaihto-näppäintä painettuna kun "
-"klikkaat hiiren vasemmalla painikkeella.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:280
-msgid "First use the <Split> command to disconnect the tracks.\n"
-msgstr "Ensin irrotamme raideosat pilko-komennolla.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:363
-#: ../../../../build/work/app/i18n/custmsg.h:282
-msgid ""
-"Then with the <Connect> command, Shift-Left-Click on the 2 End-Points.\n"
-msgstr ""
-"Sitten liitä-komennolla, vaihto + hiiren vasen klikkaus molempiin "
-"päätepisteisiin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:378
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn2.xtr:199
-#: ../../../../build/work/app/i18n/custmsg.h:285
-msgid "In example shows a simple figure-8 layout using Sectional track.\n"
-msgstr ""
-"Tässä esimerkissä on yksinkertainen palaraiteista tehty kahdeksikkorata.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:286
-msgid ""
-"You will notice that the tracks do not line up exactly in one location.\n"
-msgstr "Huomaat, etteivät raiteet aivan kohtaa yhdessä kohdassa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn2.xtr:211
-#: ../../../../build/work/app/i18n/custmsg.h:288
-msgid ""
-"We can use the <Connect> command to move the connecting tracks slightly and "
-"connect the 2 End-Points.\n"
-msgstr ""
-"Voimme käyttää liitä-komentoa siirtääksemme raideosia hieman, jotta raiteet "
-"saadaan liitetyksi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn2.xtr:224
-#: ../../../../build/work/app/i18n/custmsg.h:290
-msgid "The two End-Points are now aligned and connected.\n"
-msgstr "Päätepisteet ovat nyt kohdistettu ja liitetty.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn2.xtr:231
-#: ../../../../build/work/app/i18n/custmsg.h:292
-msgid "The connection was made by adding small gaps in other tracks.\n"
-msgstr "Liitos tehtiin lisäämällä hienoisia rakoja muiden raideosien väliin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn2.xtr:238
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:7
-#: ../../../../build/work/app/i18n/custmsg.h:295
-msgid "There are several ways to create a Curved track.\n"
-msgstr "On useita tapoja luoda kaarevia raiteita.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:296
-msgid ""
-"You can choose which to use by clicking on the small button to the left of "
-"<Curve> command button if the current Curve command is not the one you "
-"want.\n"
-msgstr ""
-"Tavan voi valita Kaarre-painikkeen oikealla puolella olevasta pienestä "
-"nuolesta avautuvan valikon kautta.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:297
-msgid ""
-"The first is by clicking on the first End-Point and dragging in the "
-"direction of the Curve.\n"
-msgstr ""
-"Ensimmäinen tapa on klikata kaarteen ensimmäistä päätepistettä ja raahata "
-"hiirellä kaarteen suntaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:20
-#: ../../../../build/work/app/i18n/custmsg.h:299
-msgid ""
-"You will see a straight track with a double ended Red arrow at the end.\n"
-msgstr "Näet suoran raiteen, jonka päässä on kaksisuuntainen punainen nuoli.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:300
-msgid "Click and drag on one of the Red arrows to complete the Curve.\n"
-msgstr "Raahaa nuolesta asetellaksesi kaarre oikean muotoiseksi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:39
-#: ../../../../build/work/app/i18n/custmsg.h:302
-msgid ""
-"The next method is to click at one End-Point and drag to the center of the "
-"Curve.\n"
-msgstr ""
-"Seuraava tapa on klikata kaarteen päätepistettä ja raahata hiirellä kaarteen "
-"keskipisteeseen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:50
-#: ../../../../build/work/app/i18n/custmsg.h:304
-msgid ""
-"Now you will see the double ended Red arrow connected to the center of the "
-"Curve marked by a small circle.\n"
-msgstr ""
-"Näet kaksisuuntaisen nuolen, joka on yhdistetty viivalla karteen "
-"keskipistettä kuvaavaan pieneen ympyrään.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:305
-msgid "As before, drag on one of the Red arrows to complete the Curve.\n"
-msgstr "Kuten aikaisemminkin, raahaa nuolesta viimeistelläksesi kaarteen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:307
-msgid ""
-"The next method is similar to the last except that you drag first from the "
-"center of the Curve to one End-Point.\n"
-msgstr ""
-"Seuraava tapa on saman kaltainen kuin edellinen, paitsi että toiminto "
-"aloitetaan raahaamalla kaarteen keskipisteestä kaarteen päätepisteeseen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:80
-#: ../../../../build/work/app/i18n/custmsg.h:309
-msgid "Once again, drag on a Red arrow to complete the Curve.\n"
-msgstr "Viimeistele kaarre raahaamalla nuolesta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:90
-#: ../../../../build/work/app/i18n/custmsg.h:311
-msgid ""
-"The last method begins by drawing a line between the two End-Points of the "
-"Curve. This forms the Chord of the Curve.\n"
-msgstr ""
-"Viimeinen tapa aloitetaan vetämällä viiva kaarteen päätepisteiden välille. "
-"Tämä muodostaa kaarteen jänteen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:108
-#: ../../../../build/work/app/i18n/custmsg.h:313
-msgid "Now drag on a Red arrow to complete the Curve.\n"
-msgstr "Viimeistele kaarre nuolesta raahaamalla.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:118
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:112
-#: ../../../../build/work/app/i18n/custmsg.h:316
-msgid "This demo will construct a control panel for part of a bigger layout.\n"
-msgstr ""
-"Tässä demossa luodaan ohjauspaneeli osaksi suurempaa ratasuunnitelmaa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:117
-#: ../../../../build/work/app/i18n/custmsg.h:318
-msgid "For our control panel we will use Å’\" lines. \n"
-msgstr "Ohjauspaneelissa käytämme 1/4 tuuman viivoja.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:319
-msgid "Also, we will use a 1/8\" grid to lay out our controls.\n"
-msgstr "Käytämme myös 1/8 tuuman kohdistusruudukkoa.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:320
-msgid ""
-"First, we will set up the Snap Grid for 1\" grid lines and 8 divisions.\n"
-msgstr ""
-"Ensin asetamme kohdistusruudukkoon 1 tuuman ruutuvälin 8 osan jaolla.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:132
-#: ../../../../build/work/app/i18n/custmsg.h:322
-msgid "Now, clear the layout and turn on the Snap Grid.\n"
-msgstr ""
-"Nyt tyhjennämme ratasuunnitelman ja otamme kohdistusruudukon käyttöön.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:147
-#: ../../../../build/work/app/i18n/custmsg.h:324
-msgid "First step: draw the lines representing the tracks.\n"
-msgstr "Ensimmäiseksi: Piirrä viivat kuvaamaan raiteita.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:325
-#, fuzzy
-msgid "We specify the line width in pixels when at 1:1 zoom.\n"
-msgstr "Määrittelemme viivan paksuuden pikseleinä.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:326
-#, fuzzy
-msgid ""
-"To create a 1/4\" line, divide the dots-per-inch (DPI) of your display by "
-"4.\n"
-msgstr ""
-"Luodaksesi 1/4 tuuman viivan, jaa näyttösi DPI (pisteitä tuumalla, dots per "
-"inch) neljällä ja sitten piirron mittakaavalla (joka tässä on 2).\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:327
-#, fuzzy
-msgid ""
-"For MS-Windows the DPI is usually 98, so choose: 98/4 = 24 (approximately).\n"
-msgstr ""
-"Microsoft Windows käyttää yleensä DPI arvoa 98, joten valitse: 98/4/2 = 12 "
-"(suunnilleen).\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:328
-#, fuzzy
-msgid "For Linux, the DPI is usually 72, so choose: 72/4 = 18.\n"
-msgstr "Linuxissa DPI on usein 72, joten valitse: 72/4/2 = 9.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:495
-#: ../../../../build/work/app/i18n/custmsg.h:330
-msgid ""
-"Notice how the Snap Grid keeps the main line and siding track parallel and "
-"the connecting tracks and spur at a 45° angle.\n"
-msgstr ""
-"Huomaa, kuinka kohdistusruudukko auttaa pitämään pääradan ja sivuraiteen "
-"saman suuntaisina, sekä yhdistävät raiteet ja piston 45° kulmassa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:503
-#: ../../../../build/work/app/i18n/custmsg.h:332
-msgid "Second step: add LEDs for the turnout position indicators.\n"
-msgstr "Toinen vaihe: Lisää LEDit osoittamaan vaihteiden asentoa.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:333
-msgid "We will use T1 red and green LEDs.\n"
-msgstr "Käytämme punaisia ja vihreitä T1 LEDejä.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:334
-msgid "We will zoom in to show positioning.\n"
-msgstr "Lähennämme näkymää asettelun helpottamiseksi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:513
-#: ../../../../build/work/app/i18n/custmsg.h:336
-msgid ""
-"Notice that when we are in the correct position (on the 1/8\" grid), the "
-"Marker lines on the bottom and left rulers will high-light the tick marks. "
-"When both ticks are high-lighted, press the space bar to finalize the LED.\n"
-msgstr ""
-"Huomaa että kun LEDi on oikeassa kohdassa kohdistusruudukon jakoon nähden, "
-"viivaimien merkinnät korostetaan. Kun sekä vaaka- että pystyviivaimen "
-"merkinnät ovat korostettuna, paina välilyöntiä hyväksyäksesi LEDin "
-"asettelun.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:558
-#: ../../../../build/work/app/i18n/custmsg.h:338
-msgid "Now we'll add push buttons to control the turnouts.\n"
-msgstr "Nyt lisäämme painonapit, joilla ohjataan vaihteita.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:595
-#: ../../../../build/work/app/i18n/custmsg.h:340
-msgid "Let's add signals to our siding.\n"
-msgstr "Lisätään sivuraiteelle opastimet.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:341
-msgid ""
-"The entrance to the siding will be protected by double headed signals.\n"
-msgstr "Sivuraiteelle tulo suojataan kaksiosaisella opastimella.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:342
-msgid "We'll select a signal from the HotBar and place it into position.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:608
-#: ../../../../build/work/app/i18n/custmsg.h:344
-msgid ""
-"We rotate the signals by Shift-Right-Click and select 90° CW on the popup "
-"menu. We can not show the popup menu in demo mode, but will simulate the "
-"effect.\n"
-msgstr ""
-"Pyöritämme opastimia pitämällä vaihto-näppäintä painettuna ja klikkaamalla "
-"hiiren oikealla painikkeella avataksemme ponnahdusvalikon. Sieltä valitsemme "
-"90° MP (myötäpäivään). Demossa ei voida näyttää ponnahdusvalikkoa, mutta "
-"näytämme komennon vaikutuksen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:657
-#: ../../../../build/work/app/i18n/custmsg.h:346
-msgid "The exits from the siding will be protected by single headed signals.\n"
-msgstr "Sivuraiteelta lähdöt suojataan yksiosaisilla opastimilla.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:711
-#: ../../../../build/work/app/i18n/custmsg.h:348
-msgid "Now for some touch-ups.\n"
-msgstr "Nyt kohennetaan hieman kaaviota.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:349
-msgid "Notice when the line meet at an angle there is a gap.\n"
-msgstr "Huomaa viivojen liitoskohdissa pienet raot.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:350
-msgid "We will fill this gap with the Å’\" dot.\n"
-msgstr "Näytämme ne 1/4 tuuman pisteillä.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:351
-msgid ""
-"Note: Win95/Win98/WinME does not support drawing lines with flat end-caps, "
-"but only with round end-caps.\n"
-msgstr ""
-"Huom: Win96/Win98/WinME ei tue tasapäisten viivojen piirtoa, vaan ainoastaan "
-"pyöreäpäisiä viivoja.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:352
-msgid "Users on those platforms will not see the gap.\n"
-msgstr "Mainittujen käyttöjärjestelmien käyttäjät eivät näe näitä rakoja.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:734
-#: ../../../../build/work/app/i18n/custmsg.h:354
-msgid ""
-"Add an arrow head to indicate the tracks that connect to the rest of the "
-"layout.\n"
-msgstr ""
-"Lisää nuolenkärjet kuvaamaan raiteiden jatkumista muihin radan osiin.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:355
-msgid "The second arrow will be flipped 180°\"\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:772
-#: ../../../../build/work/app/i18n/custmsg.h:357
-msgid "And add some labels.\n"
-msgstr "Lisää joitakin merkintöjä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:831
-#: ../../../../build/work/app/i18n/custmsg.h:359
-msgid ""
-"We want to print our control panel onto a 8Å“x11 page, but the control panel "
-"is a bit too wide.\n"
-msgstr ""
-"Haluamme tulostaa ohjeuspaneelin 8 1/2 x 11 tuuman kokoiseksi, mutta "
-"ohjauspaneeli on hieman liian suuri.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:360
-msgid "Lets tighten it up a bit.\n"
-msgstr "Tiivistetään hieman.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:361
-msgid ""
-"First turn the Snap Grid on again so any moves we make will keep objects on "
-"the grid.\n"
-msgstr ""
-"Ota taas kohdistusruudukko käyttöön, jotta objektit pysyvät linjassa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:840
-#: ../../../../build/work/app/i18n/custmsg.h:363
-#, fuzzy
-msgid "Lets move the spur track to the left 3/4\"\n"
-msgstr "Siirrämme pistoraidetta vasemmalle 3/4 tuumaa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:862
-#: ../../../../build/work/app/i18n/custmsg.h:365
-msgid "Now move the right side of the siding over.\n"
-msgstr "Siirretään liikennepaikan oikeaa puolta vasemmalle.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:882
-#: ../../../../build/work/app/i18n/custmsg.h:367
-msgid "Now, adjust the ends of the mainline and siding tracks.\n"
-msgstr "Lyhennä nyt pääraide ja sivuraide sopivan mittaisiksi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:902
-#: ../../../../build/work/app/i18n/custmsg.h:369
-msgid "And move the title over as well.\n"
-msgstr "Siirrä myös otsikkoa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:919
-#: ../../../../build/work/app/i18n/custmsg.h:371
-msgid "Now you can print it.\n"
-msgstr "Nyt voit tulostaa sen.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:372
-msgid "The cross-hairs on the LEDs and switch show the centers for drilling.\n"
-msgstr ""
-"LEDien ja kytkimien ristikkoviiva osoittaa niiden keskipisteet poraamista "
-"varten.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdelund.xtr:33
-#: ../../../../build/work/app/i18n/custmsg.h:374
-msgid ""
-"Pressing the <Delete> button lets you delete selected tracks from the "
-"layout.\n"
-msgstr ""
-"Poista-painikkeella voidaan poistaa valitut raiteet ratasuunnitelmsta.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:375
-msgid ""
-"First you select the tracks you want to delete, and then press the <Delete> "
-"button.\n"
-msgstr ""
-"Valitse ensin raideosat, jotka haluat poistaa ja paina sitten Poista-"
-"nappia.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdelund.xtr:47
-#: ../../../../build/work/app/i18n/custmsg.h:377
-msgid ""
-"If you delete a track connected to an easement curve, then the easement "
-"curve is deleted as well.\n"
-msgstr ""
-"Jos poistat raideosan, joka on liitetty kaarreloivennukseen, poistetaan myös "
-"kaarreloivennus.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdelund.xtr:57
-#: ../../../../build/work/app/i18n/custmsg.h:379
-msgid "You can use the <Undo> command to undelete tracks.\n"
-msgstr "Voit käyttää Kumoa-toimintoa palauttaaksesi poistamasi raideosat.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdelund.xtr:67
-#: ../../../../build/work/app/i18n/custmsg.h:381
-msgid ""
-"If you Left-Drag on the layout you can select all tracks within an area.\n"
-msgstr ""
-"Raahaamalla hiiren vasemmalla voit valita kaikki raideosat valitulta "
-"alueelta.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:382
-msgid ""
-"Note, only tracks within the selected area are deleted. Since the easement "
-"curve is connected to a deleted track, it is deleted as well.\n"
-msgstr ""
-"Huom: Vain valitulla alueella olevat raideosat poistetaan. Koska "
-"kaarreloivennus liittyy poistettavaan raideosaan, poistetaan se myös.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdelund.xtr:80
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:6
-#: ../../../../build/work/app/i18n/custmsg.h:385
-msgid ""
-"The demo also simulates entering values and selecting options on various "
-"dialogs.\n"
-msgstr ""
-"Tässä demossa simuloidaan myös arvojen syöttämistä ja valintojen tekemistä "
-"dialogeissa (ikkunoissa).\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:386
-msgid ""
-"This is simulated by drawing a rectangle around the control when values are "
-"entered or changed.\n"
-msgstr ""
-"Tämä esitetään piirtämällä nelikulmio sen kontrollin ympärille, jonka arvoja "
-"ollaan syöttämässä tai muuttamassa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:13
-#: ../../../../build/work/app/i18n/custmsg.h:388
-msgid ""
-"Here we are going to make some changes to the Display dialog. Notice how "
-"this is simulated.\n"
-msgstr ""
-"Tässä teemme joitakin muutoksia Näyttö asetuksiin. Huomaa esitystapa.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:389
-msgid "First we are setting 'Draw Tunnel' to 'Normal'\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:21
-#: ../../../../build/work/app/i18n/custmsg.h:391
-msgid "Now we're changing 'Label Font Size' to '56'\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:26
-#: ../../../../build/work/app/i18n/custmsg.h:393
-msgid "We'll change some other options\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:38
-#: ../../../../build/work/app/i18n/custmsg.h:395
-msgid ""
-"This effect is only used in demonstration mode. During normal operation you "
-"will not see this.\n"
-msgstr ""
-"Tämä tehoste on käytössä ainoastaan demo -tilassa. Normaalissa käyttötilassa "
-"näin ei ole.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:45
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdimlin.xtr:117
-#: ../../../../build/work/app/i18n/custmsg.h:398
-msgid "Dimension Lines are used to mark the distances between two points.\n"
-msgstr ""
-"Mittajanoja käytetään merkitsemään kahden pisteen välisiä etäisyyksiä.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:399
-msgid ""
-"Here we will create a Dimension Line to show the separation between two "
-"tracks.\n"
-msgstr ""
-"Tässä luodaan mittajana näyttämään kahden raiteen välistä etäisyyttä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdimlin.xtr:132
-#: ../../../../build/work/app/i18n/custmsg.h:401
-msgid ""
-"We might also want to measure the distance between two structures. In this "
-"case we will use a larger dimension line.\n"
-msgstr ""
-"Haluamme myös mitata kahden rakennuksen välisen etäisyyden. Tässä "
-"tapauksessa käytämme suurempaa mittajanaa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdimlin.xtr:143
-#: ../../../../build/work/app/i18n/custmsg.h:403
-msgid ""
-"We can use the <Describe> command to change the position of the Dimension "
-"Line and the size of the numbers.\n"
-msgstr ""
-"Voimme käyttää määrittele-komentoa muuttaaksemme mittajanan sijaintia ja "
-"numeroiden kokoa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdimlin.xtr:161
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:406
-msgid ""
-"This example will show the effect of using easements while joining tracks.\n"
-msgstr ""
-"Tässä esimerkissä näytetään kaarreloivennuksen vaikutus yhdistettäessä "
-"raiteita.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:407
-#, fuzzy
-msgid "First, we will enable Cornu Easements and select Join\n"
-msgstr "Ensiksi otetaan kaarreloivennus käyttöön.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:28
-#: ../../../../build/work/app/i18n/custmsg.h:409
-#, fuzzy
-msgid "First select one end of the track\n"
-msgstr "Ensin asetamme korkeustasot haarojen päihin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:39
-#: ../../../../build/work/app/i18n/custmsg.h:411
-#, fuzzy
-msgid "Now the end of different track\n"
-msgstr "Siirretty päätepisteen taakse"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:49
-#: ../../../../build/work/app/i18n/custmsg.h:413
-#, fuzzy
-msgid "You can reposition the ends by dragging them \n"
-msgstr ""
-"Voit tulostaa suunnittelemasi vaihteen tarkastaaksesi sen mitat ennen "
-"tallentamista.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:65
-#: ../../../../build/work/app/i18n/custmsg.h:415
-msgid "When you are happy, Hit Enter or Space, if not use Esc\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:73
-#: ../../../../build/work/app/i18n/custmsg.h:417
-msgid ""
-"The Curve is made up of Beziers parts that smooth the shape the best way it "
-"can be in the space available\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:87
-#: ../../../../build/work/app/i18n/custmsg.h:419
-msgid "Now, we'll show traditional easements instead.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:142
-#: ../../../../build/work/app/i18n/custmsg.h:421
-msgid ""
-"We've selected sharp easements. The minimum radius curve we can use will be "
-"9.75\"\n"
-msgstr ""
-"Olemme valinneet jyrkät kaarreloivennukset. Pienin käytettävissä oleva "
-"kaarresäde on 9,75 tuumaa.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:422
-msgid "Notice the label on the Easement button has changed to 'Sharp'.\n"
-msgstr ""
-"Huomaa että kaarreloivennus-painikkeen (Easements) tila on muuttunut "
-"\"jyrkäksi\" (Sharp).\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:157
-#: ../../../../build/work/app/i18n/custmsg.h:424
-msgid ""
-"Note the connecting curve does not quite meet the straight tracks. This the "
-"'Offset'.\n"
-msgstr ""
-"Huomaa, ettei yhdistävä kaarre kohtaa aivan tarkasti suoria raiteita. Tämä "
-"on \"siirtymä\".\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:165
-#: ../../../../build/work/app/i18n/custmsg.h:426
-msgid "Here the connecting curve is too small.\n"
-msgstr "Tässä yhdistävä kaarre on liian pieni.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:175
-#: ../../../../build/work/app/i18n/custmsg.h:428
-msgid ""
-"The connecting curve is made of three tracks, the curve and two easement "
-"segments on each end.\n"
-msgstr ""
-"Yhdistävä kaarre on tehty kolmesta raideosasta: kaarteesta ja molemmissa "
-"päissä olevista kaarreloivennuksesta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:112
-#: ../../../../build/work/app/i18n/custmsg.h:430
-#, fuzzy
-msgid ""
-"We have designed part of the layout with a siding, 2 branches and a spiral "
-"loop. We want to set elevations.\n"
-msgstr ""
-"Meillä on ratasuunnitelma jossa on sivuraide, kaksi haaraa ja silmukka, joka "
-"muodostaa radalle risteyksen.\n"
-" Haluamme asetella radan korkeustasot.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:431
-msgid "Note: make sure you set endpoint elevations on the Display dialog.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:122
-#: ../../../../build/work/app/i18n/custmsg.h:433
-msgid "First we will set elevations at the end of the branches.\n"
-msgstr "Ensin asetamme korkeustasot haarojen päihin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:132
-#: ../../../../build/work/app/i18n/custmsg.h:435
-msgid "We'll select the end of the top branch and set the Elevation to 4\"\n"
-msgstr ""
-"Valitsemme ylemmän haaran pään ja asetamme sille haluamamme korkeustason.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:436
-msgid "First, click on the End-Point.\n"
-msgstr "Klikkaa ensin päätepistettä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:142
-#: ../../../../build/work/app/i18n/custmsg.h:438
-msgid "Next, pick Defined on the Elevation dialog Radio box.\n"
-msgstr ""
-"Seuraavaksi muuta korkeustasojen määrittely ikkunassa tyypiksi \"Määritelty"
-"\".\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:148
-#: ../../../../build/work/app/i18n/custmsg.h:440
-msgid "And set the Elevation to 4.\n"
-msgstr "Ja aseta haluttu korkeustaso.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:156
-#: ../../../../build/work/app/i18n/custmsg.h:442
-msgid "Now, select the other branch and set it's elevation to 2\"\n"
-msgstr "Vlitse nyt toinen haara ja aseta sen korkeustaso.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:170
-#: ../../../../build/work/app/i18n/custmsg.h:444
-#, fuzzy
-msgid "We can move the Elevation label by using Ctrl-Left-Drag\n"
-msgstr ""
-"Voimme siirtää korkeustasojen merkintöjä raahaamalla hiiren oikealla "
-"painikkeella.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:182
-#: ../../../../build/work/app/i18n/custmsg.h:446
-msgid "Now, we set the Elevation at one end of the Siding.\n"
-msgstr "Asetetaan nyt sivuraiteen toisen pään korkeustaso.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:209
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:215
-#: ../../../../build/work/app/i18n/custmsg.h:449
-msgid "We want to find the elevations where the 2 tracks cross.\n"
-msgstr "Voimme selvittää korkeustasot raiteiden risteyskohdassa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:224
-#: ../../../../build/work/app/i18n/custmsg.h:451
-msgid "We picked an End-Point on the upper track.\n"
-msgstr "Valitsimme raiteiden liitoskohdan ylemmältä radalta.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:452
-#, fuzzy
-msgid ""
-"XTrackCAD has computed the Elevation (2.33\") at this point based on the "
-"Elevation at the siding and a combination of the of the first Elevations.\n"
-msgstr ""
-"XTrackCAD on laskenut tälle pisteelle korkeustason aiemmin antamiemme "
-"korkeustasojen perusteella.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:453
-msgid ""
-"We create a Computed Elevation here that will be automatically adjusted "
-"whenever the other Elevations are changed.\n"
-msgstr ""
-"Luomme tähän \"lasketun\" korkeustason, joka päivitetään automaattisesti jos "
-"muita korkeustasoja muutetaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:243
-#: ../../../../build/work/app/i18n/custmsg.h:455
-msgid ""
-"The Compute Elevation is based on Elevations at end of both of the "
-"branches. We may want to base the Elevation on only one branch. For "
-"example if one branch was the mainline we don't want the other branch "
-"affecting this Computed Elevation.\n"
-msgstr ""
-"Laskettu korkeustaso perustuu molempien haarojen korkeustasoihin. Saatamme "
-"haluta sitoa lasketun korkeustason vain yhteen haaraan. Jos esimerkiksi yksi "
-"haaroista on päärata, emme halua muiden haarojen vaikuttavan tähän "
-"laskettuun korkeustasoon.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:456
-msgid "We do this by Ignoring the branch we don't want.\n"
-msgstr "Teemme tämän hylkäämällä haaran, jota emme halua käyttää.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:457
-msgid "We'll ignore the lower branch.\n"
-msgstr "Hylkäämme alemman haaran.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:258
-#: ../../../../build/work/app/i18n/custmsg.h:459
-#, fuzzy
-msgid ""
-"Notice at the endpoint where the tracks cross, we see the elevation has "
-"changed from 2.33 to 2.64.\n"
-msgstr ""
-"Huomaa kuinka risteyskohdan laskettu korkeustaso muuttui 2,34 tuumasta 2,64 "
-"tuumaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:264
-#: ../../../../build/work/app/i18n/custmsg.h:461
-msgid "Now we want to know the elevation of the lower track.\n"
-msgstr "Nyt haluamme tietää alemman radan korkeustason.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:274
-#: ../../../../build/work/app/i18n/custmsg.h:463
-#, fuzzy
-msgid "There is no endpoint on the lower track here.\n"
-msgstr "Risteyksen kohdalla ei ole raiteiden liitosta.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:464
-#, fuzzy
-msgid ""
-"Use Shift-Left-Click to Split the track and create an endpoint we can use "
-"for an elevation,\n"
-msgstr ""
-"Paina vaihto-näppäintä ja klikkaa hiiren vasemmalla painikkeella rataa "
-"luodaksesi liitoskohdan korkeustasoja varten\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:287
-#: ../../../../build/work/app/i18n/custmsg.h:466
-msgid "and create another Computed Elevation point.\n"
-msgstr "ja luo sen kohdalle toinen laskettu korkeustaso.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:302
-#: ../../../../build/work/app/i18n/custmsg.h:468
-#, fuzzy
-msgid "Now we want to label the grade on this section of track.\n"
-msgstr "Nyt haluamme merkitä raiteen tämän kohdan nousukulman.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:311
-#: ../../../../build/work/app/i18n/custmsg.h:470
-#, fuzzy
-msgid ""
-"Again, since there is no endpoint nearby, we split the track to create an "
-"endpoint we can use,\n"
-msgstr ""
-"Taaskaan ei ole sopivaa raideliitosta lähistöllä, joten pilkomme raiteen\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:321
-#: ../../../../build/work/app/i18n/custmsg.h:472
-#, fuzzy
-msgid "and create a grade marker.\n"
-msgstr "ja luomme uuteen liitoskohtaan nousukulman merkinnän.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:335
-#: ../../../../build/work/app/i18n/custmsg.h:474
-msgid "Note the marker has an arrow pointing in the upwards direction.\n"
-msgstr "Huomaa kuinka nuolella ilmaistaan nousun suunta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:344
-#: ../../../../build/work/app/i18n/custmsg.h:476
-msgid ""
-"The last thing we want to do is to create a Station label that we'll use in "
-"the <Profile> command.\n"
-msgstr ""
-"Lopuksi haluamme vielä luoda aseman merkinnän, jota käytämme myöhemmin "
-"rataprofiilissa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:358
-#: ../../../../build/work/app/i18n/custmsg.h:478
-msgid "Now, set the Elevation to Station and enter the its name.\n"
-msgstr "Valitse \"Asema\" ja syötä tekstikenttään aseman nimi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:376
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:31
-#: ../../../../build/work/app/i18n/custmsg.h:481
-msgid ""
-"XTrackCAD can help find tracks that are curved too sharply or are too "
-"steep. These tracks are Exception tracks and are drawn in the Exception "
-"track color.\n"
-msgstr ""
-"XTrackCAD auttaa löytämään raiteet, jotka ovat kaartuvat liian jyrkästi tai "
-"ovat liian jyrkkiä. Näitä kutsutaan erityisraiteiksi ja ne piirretään omalla "
-"värillään.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:482
-msgid ""
-"In this example we have a curved track with radius of 9\" and a straight "
-"track with a grade of 3.8%.\n"
-msgstr ""
-"Tässä esimerkissä meillä on karre, jonka säde on 9 tuumaa ja suora jonka "
-"nousukulma on 3,8%.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:483
-msgid " \n"
-msgstr " \n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:39
-#: ../../../../build/work/app/i18n/custmsg.h:485
-#, fuzzy
-msgid ""
-"The Layout dialog shows the Minimum Track Radius is 9\" and the Maximum "
-"Track Grade is 5%.\n"
-msgstr ""
-"Ohjelman ominaisuuksissa on määritelty pienimmäksi kaarresäteeksi 9 tuumaa "
-"ja suurimmaksi nousukulmaksi 5%.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:48
-#: ../../../../build/work/app/i18n/custmsg.h:487
-msgid ""
-"If we make the curved track sharper it will be drawn in the Exception "
-"color.\n"
-msgstr ""
-"Jos muutamme kaarretta jyrkemmäksi, se piirretään erityisraiteiden värillä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:61
-#: ../../../../build/work/app/i18n/custmsg.h:489
-msgid ""
-"If we make the straight track steeper it will also be drawn in the Exception "
-"color.\n"
-msgstr ""
-"Jos teemme suorasta raiteesta jyrkemmän, myös se piirretään erityisraiteiden "
-"värillä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:78
-#: ../../../../build/work/app/i18n/custmsg.h:491
-msgid ""
-"You can change the Exception color on the Colors dialog from the Options "
-"menu.\n"
-msgstr "Erityisraiteiden väritystä voi muuttaa Asetukset|Värit valikosta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:85
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:21
-#: ../../../../build/work/app/i18n/custmsg.h:494
-#, fuzzy
-msgid ""
-"The unconnected endpoint of any track can also be extended with the <Modify> "
-"command using Right-Drag.\n"
-msgstr ""
-"Minkä tahansa raiteen irrallista päätä voi pidentää Muokkaa-komennolla "
-"raahaamalla hiiren oikealla painikkeella.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:26
-#: ../../../../build/work/app/i18n/custmsg.h:496
-#, fuzzy
-msgid "Select the endoint and Right-Drag.\n"
-msgstr "Valitse päätepiste ja raahaa oikealla painikkeella.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:34
-#: ../../../../build/work/app/i18n/custmsg.h:498
-msgid "The extending track can be straight...\n"
-msgstr "Jatke voi olla suora...\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:44
-#: ../../../../build/work/app/i18n/custmsg.h:500
-msgid "... or curved.\n"
-msgstr "...tai kaareva.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:51
-#: ../../../../build/work/app/i18n/custmsg.h:502
-#, fuzzy
-msgid ""
-"If you extend a straight or curved flex track and enable Easements then an "
-"Easement curve will be automatically generated when you extend the track.\n"
-msgstr ""
-"Jos jatkat suoraa tai kaarevaa fleksiraidetta ja kaarreloivennus on "
-"käytössä, luodaan automaattisesti kaarreloivennus pidentämisen yhteydessä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:65
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:124
-#: ../../../../build/work/app/i18n/custmsg.h:505
-msgid ""
-"The <Flip> command will create a mirror image of the selected objects.\n"
-msgstr "Peilaus-komento luo peilikuvan valitusta objektista.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:131
-#: ../../../../build/work/app/i18n/custmsg.h:507
-msgid "After selecting the object, drag a line which will form the mirror.\n"
-msgstr "Valittuasi objektin, raahaa hiirellä peilauslinja.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:140
-#: ../../../../build/work/app/i18n/custmsg.h:509
-msgid "The mirror line does not have to be vertical or horizontal.\n"
-msgstr "Peilauslinjan ei tarvitse olla vaaka- tai pystysuuntainen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:149
-#: ../../../../build/work/app/i18n/custmsg.h:511
-msgid "You can also flip any number of objects.\n"
-msgstr "Voit myös peilata useita objekteja.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:512
-msgid "Watch what happens to the structure and turnout titles.\n"
-msgstr "Katso mitä tapahtuu rakennusten ja vaihteen otsikoille.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:163
-#: ../../../../build/work/app/i18n/custmsg.h:514
-msgid ""
-"Note that the turnout title has been changed from the Medium Right to Medium "
-"Left. When turnouts are flipped, XTrackCAD will try to find a matching "
-"turnout and if found will change the name.\n"
-msgstr ""
-"Huomaa, että vaihteen otsikko muutettiin oikeasta (right) vasemmaksi (left). "
-"Kun vaihteita peilataan, XTrackCAD yrittää löytää vastaavan toispuoleisen "
-"vaihteen ja sellaisen löytäessään vaihtaa nimen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:170
-#: ../../../../build/work/app/i18n/custmsg.h:516
-msgid ""
-"Structures do not have Right and Left hand versions. Their title is changed "
-"to indicate that they were flipped.\n"
-msgstr ""
-"Rakennuksilla ei ole oikeaa ja vasenta versiota. Niiden otsikko muutetaan "
-"siten, että se kuvaa objektin olevan peilattu (flipped).\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:517
-msgid "You can use the <Describe> command to change their title.\n"
-msgstr "Voit käyttää määrittele-komentoa muuttaaksesi niiden otsikoita.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:187
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:21
-#: ../../../../build/work/app/i18n/custmsg.h:520
-msgid ""
-"The <Group> and <Ungroup> commands (on the Tools menu) are a powerful way to "
-"manipulate Turnout and Structure definitions.\n"
-msgstr ""
-"Ryhmittele ja rymittelyn purku komennot (Hallinta-valikossa) ovat tehokas "
-"keino käsitellä raideosien ja rakennusten määrittelyjä.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:521
-msgid "We'll start with a simple turnout and add a switch machine.\n"
-msgstr "Aloitamme yksinkertaisesta vaihteesta ja vaihdekoneistosta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:50
-#: ../../../../build/work/app/i18n/custmsg.h:523
-msgid ""
-"Now that we have drawn a rough outline of a switch machine we will group it "
-"with the turnout definition.\n"
-msgstr ""
-"Nyt kun olemme piirtäneet karkean hahmotelman vaihdekoneistosta, "
-"ryhmittelemme sen uudeksi vaihdemäärittelyksi.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:524
-msgid "First we Select the objects in the new definition.\n"
-msgstr "Ensin valitsemme objektit uutta määrittelyä varten.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:526
-msgid "Now do the <Group> command.\n"
-msgstr "Nyt suoritetaan ryhmittely-komento.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:70
-#: ../../../../build/work/app/i18n/custmsg.h:528
-msgid ""
-"The <Group> command dialog shows the Title (Manufacturer, Description and "
-"Part Number) of the new definition. This information is taken from the "
-"Selected objects you are grouping.\n"
-msgstr ""
-"Ryhmittely-komennon ikkunassa näytetään valmistaja, kuvaus sekä tuotenumero. "
-"Nämä tiedot on saatu ryhmittelyä varten valituista objekteista.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:76
-#: ../../../../build/work/app/i18n/custmsg.h:530
-msgid ""
-"The 'Replace with new group?' toggle will replace the Selected objects with "
-"the new definition.\n"
-msgstr ""
-"Jos \"Korvaa uudella ryhmällä?\" on valittuna, ryhmittelyä varten valitut "
-"objektit korvataan juuri luodulla uudella ryhmällä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:83
-#: ../../../../build/work/app/i18n/custmsg.h:532
-msgid ""
-"If we don't change the Title then the new definition will replace the "
-"existing definition.\n"
-msgstr ""
-"Jos otsikkotietoja (valmistaja, kuvaus ja tuotenumero) ei muuteta, korvaa "
-"tämä uusi määrittely jo olemassa olevan saman nimisen määrittelyn.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:533
-msgid "We'll give this definition a new Description.\n"
-msgstr "Annamme tälle määrittelylle uuden kuvauksen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:94
-#: ../../../../build/work/app/i18n/custmsg.h:535
-msgid "We're done with this definition. Press Ok.\n"
-msgstr "Määrittely on valmis ja se hyväksytään painamalla Ok.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:101
-#: ../../../../build/work/app/i18n/custmsg.h:537
-msgid "You will see the updated image on the HotBar.\n"
-msgstr "Näet päivitetyn kuvan Hot Barissa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:108
-#: ../../../../build/work/app/i18n/custmsg.h:539
-msgid ""
-"The <Ungroup> command replaces any Selected turnouts or structures with "
-"their parts.\n"
-msgstr ""
-"Ryhmittelyn purku komento korvaa valittut vaihteet tai rakennukset niiden "
-"osilla.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:540
-msgid ""
-"Structures and non-track segements of turnouts are composed of Lines, "
-"Circles and other shapes. In this turnout these are the two lines and the "
-"two squares.\n"
-msgstr ""
-"Rakennukset ja muut lohkot, jotka eivät ole raiteita, muodostuvat viivoista "
-"ympyröistä ja muista muodoista. Tässä vaihteessa on kaksi viivaa ja kaksi "
-"nelikulmiota.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:541
-msgid ""
-"We will Ungroup this turnout and see how the individual parts can be "
-"changed.\n"
-msgstr ""
-"Puramme tämän vaihteen ryhmittelyn nähdäksemme kuinka yksittäisiä osia "
-"voidaan muuttaa.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:542
-msgid "First Select the turnout and then Ungroup it.\n"
-msgstr "Ensin valitsemme vaihteen ja sitten puramme ryhmittelyn.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:123
-#: ../../../../build/work/app/i18n/custmsg.h:544
-msgid "Notice that the Title now indicates the turnout is Ungrouped.\n"
-msgstr "Huomaa että otsikko näyttää vaihteen ryhmittelyn olevan purettu.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:545
-msgid "Hit Escape to deselect everything.\n"
-msgstr "Paina Esc-näppäintä poistaaksesi valinnat objekteista.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:133
-#: ../../../../build/work/app/i18n/custmsg.h:547
-msgid "Now Select the lines and squares.\n"
-msgstr "Valitse nyt viivat ja nelikulmiont.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:158
-#: ../../../../build/work/app/i18n/custmsg.h:549
-msgid ""
-"We could modify these object or add new ones. For now we'll just delete "
-"them.\n"
-msgstr ""
-"Voisimme muokata näitä objekteja tai lisätä uusia. Nyt kuitenkin vain "
-"poistamme ne.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:165
-#: ../../../../build/work/app/i18n/custmsg.h:551
-msgid "And move the Label out of the way.\n"
-msgstr "Ja siirrämme otsikon pois tieltä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:176
-#: ../../../../build/work/app/i18n/custmsg.h:553
-msgid "Notice that the turnout has been broken into three parts.\n"
-msgstr "Huomaa että vaihde on purettu kolmeen osaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:198
-#: ../../../../build/work/app/i18n/custmsg.h:555
-msgid ""
-"Two ends of the turnout, from the frog to the end of the diverging leg and "
-"from the points to the left, are now straight track sections.\n"
-msgstr ""
-"Haarautuvan raiteen takajatkos sekä vaihteen etujatkos ovat nyt suoria "
-"raideosia.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:556
-msgid ""
-"The a turnout is made of a number of individual straight and curved track "
-"segements. This turnout had four segments:\n"
-msgstr ""
-"Vaihde on tehty useasta erillisestä suorasta ja kaarevasta raideosasta. Tämä "
-"vaihde koostui neljästä osasta:\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:557
-msgid " 1 a short straight segment to the left of the points\n"
-msgstr " 1 Lyhyestä suorasta etujatkoksesta.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:558
-msgid " 2 a long straight segment to the right of the points\n"
-msgstr " 2 Pitkästä suorasta raiteesta.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:559
-msgid " 3 a curved segment from the points to the frog\n"
-msgstr " 3 Kaarteesta kielten päistä risteyskappaleeseen.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:560
-msgid ""
-" 4 a straight segment from the frog to the end of the diverging leg.\n"
-msgstr " 4 Haarautuvan raiteen suorasta takajatkoksesta.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:561
-msgid "The first and last segments have be converted to straight tracks.\n"
-msgstr "Ensimmäinen ja viimeinen osa on muutettu suoriksi raideosiksi.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:562
-msgid ""
-"The second and third segments form the the body of the turnout and can not "
-"be ungrouped further.\n"
-msgstr ""
-"Toinen ja kolmas osa muodostavat vaihteen rungon, eikä niiden ryhmittelyä "
-"voi purkaa tämän pidemmälle.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:563
-msgid ""
-"You can later Group this turnout with the straight segments to recreate the "
-"turnout definition. You can also add other track segments to turnout "
-"definitions.\n"
-msgstr ""
-"Voit myöhemmin ryhmitellä tämän vaihteen suorien raideosien kanssa ja luoda "
-"vaihteen määrittelyn uudelleen. Voit myös lisätä muita raideosia vaihteiden "
-"määrittelyihin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:242
-#: ../../../../build/work/app/i18n/custmsg.h:565
-msgid "Now, create a track and place the new turnout on it.\n"
-msgstr "Nyt luodaan raide ja lisätään siihen uusi vaihde.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:260
-#: ../../../../build/work/app/i18n/custmsg.h:567
-msgid "Now suppose we want to replace the black squares with green circles.\n"
-msgstr ""
-"Oletetaan, että haluamme vaihtaa mustien nelikulmioiden paikalle vihreät "
-"ympyrät.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:568
-msgid "First we Select the turnout.\n"
-msgstr "Ensin valitsemme vaihteen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:272
-#: ../../../../build/work/app/i18n/custmsg.h:570
-msgid "And now Ungroup it (from the Tools Menu)\n"
-msgstr "Ja sitten puramme ryhmittelyn.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:277
-#: ../../../../build/work/app/i18n/custmsg.h:572
-msgid ""
-"Notice that the name has changed to indicate the turnout was Ungrouped.\n"
-msgstr "Huomaa kuinka nimi on muutettu kuvaamaan vaihteen purkua.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:283
-#: ../../../../build/work/app/i18n/custmsg.h:574
-msgid ""
-"Now, hit escape to deselect everything and then Select the 2 squares and "
-"delete them.\n"
-msgstr ""
-"Paina Esc-näppäintä poistaaksesi valinnat objekteista ja valitse sitten "
-"nelikulmiot ja poista ne.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:300
-#: ../../../../build/work/app/i18n/custmsg.h:576
-msgid "Now draw the green circles...\n"
-msgstr "Piirrä nyt vihreät ympyrät...\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:321
-#: ../../../../build/work/app/i18n/custmsg.h:578
-msgid "and Group the new definition.\n"
-msgstr "ja ryhmittele tämä uusi määrittely.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:340
-#: ../../../../build/work/app/i18n/custmsg.h:580
-msgid ""
-"Notice that the turnout in the HotBar is angled the same as the turnout on "
-"the layout. Make sure your new definition is rotated the way you want it.\n"
-msgstr ""
-"Huomaa että vaihteen kuva Hot Barissa on nyt samassa kulmassa kuin vaide "
-"ratasuunnitelmassa. Ole siis huolellinen tehdessäsi uusia määrittelyitä, "
-"jotta ne ovat haluamassasi kulmassa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:379
-#: ../../../../build/work/app/i18n/custmsg.h:582
-msgid "We can also create turnouts from simple straight and curved tracks.\n"
-msgstr ""
-"Voimme myös luoda vaihteita yksinkertaisista suorista ja kaarevista "
-"raideosista.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:583
-#, fuzzy
-msgid "We'll create two tracks that have a common endpoint.\n"
-msgstr "Luomme kaksi raidetta, joilla on yhteinen päätepiste.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:390
-#: ../../../../build/work/app/i18n/custmsg.h:585
-msgid ""
-"When we create the curve from the straight track endpoint we need to hold "
-"down the Shift key to prevent XTrackCAD from trying to join the two tracks.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:408
-#: ../../../../build/work/app/i18n/custmsg.h:587
-msgid "At this point we can modify the tracks if necessary.\n"
-msgstr "Tässä vaiheessa voimme muokata raiteita, jos se on tarpeen.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:588
-msgid "We will use the <Describe> command to change the tracks.\n"
-msgstr "Käytämme kuvaile-komentoa muuttaaksemme raiteiden ominaisuuksia.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:420
-#: ../../../../build/work/app/i18n/custmsg.h:590
-msgid "We'll make the Length 7.5\".\n"
-msgstr "Muutamme pituutta.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:591
-msgid ""
-"If we change the Length, each End-Point will be moved to shorten the track. "
-"We want to just move the Right End-Point. To control this, change the Pivot "
-"to First which means the Left End-Point will be unchanged when we change the "
-"length (or angle) of the track.\n"
-msgstr ""
-"Jos nyt vain muutamme pituutta, lyhennetään raidetta molemmista päistä. "
-"Haluamme muuttaa raiteen pituutta vain oikeasta päästä, vaihdamme ensin "
-"kiertopisteeksi ensimmäisen pään, jolloin valittu kiertopiste pysyy "
-"paikoillaan muutettaessa raiteen pituutta (tai kulmaa).\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:430
-#: ../../../../build/work/app/i18n/custmsg.h:593
-msgid "Now when change the Length only the Right End-Point will move.\n"
-msgstr "Nyt kun muutamme pituutta, vain oikeaa päätä lyhennetään.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:441
-#: ../../../../build/work/app/i18n/custmsg.h:595
-msgid "Now let's look at the curved track.\n"
-msgstr "Katsotaanpa sitten kaarevaa raidetta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:451
-#: ../../../../build/work/app/i18n/custmsg.h:597
-msgid ""
-"Here the Left End-Point (which we don't want to move) is the Second End-"
-"Point, so we'll make that the Pivot.\n"
-msgstr ""
-"Tässä vasen päätepiste (jota emme halua siirtää) on toinen päätepiste, joten "
-"valitsemme sen kiertopisteeksi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:459
-#: ../../../../build/work/app/i18n/custmsg.h:599
-#, fuzzy
-msgid "We want the curve to have a radius of 20\" and an angle of 17.5ᅵ.\n"
-msgstr "Haluamme kaarteelle tietyn säteen ja kulman.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:600
-msgid "First change the Radius...\n"
-msgstr "Ensin muutetaan säde...\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:468
-#: ../../../../build/work/app/i18n/custmsg.h:602
-msgid "and the the Angular Length.\n"
-msgstr "ja sitten kulma.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:476
-#: ../../../../build/work/app/i18n/custmsg.h:604
-msgid "Now Select both tracks...\n"
-msgstr "Valitse molemmat raiteet...\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:492
-#: ../../../../build/work/app/i18n/custmsg.h:606
-msgid "and Group them.\n"
-msgstr "ja ryhmittele ne.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:503
-#: ../../../../build/work/app/i18n/custmsg.h:608
-msgid ""
-"If the two tracks have a common End-Point then they will form a Turnout and "
-"can be switched with the <Train> command. Otherwise they will just be two "
-"track segments grouped together.\n"
-msgstr ""
-"Jos molemmilla raiteilla on yhteinen päätepiste, ne muodostavat vaihteen, "
-"jonka asentoa voidaan vaihtaa simuloitaessa junien ajoa. Muussa tapauksessa "
-"ne ovat vain kaksi raideosaa, jotka ovat ryhmitelty keskenään.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:510
-#: ../../../../build/work/app/i18n/custmsg.h:610
-msgid ""
-"We have created a left hand turnout and we also want a right hand version.\n"
-msgstr ""
-"Olemme luoneen vasemman puoleisen vaihteen ja haluamme myös oikean puoleisen "
-"version.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:611
-msgid "We'll use the <Flip> command.\n"
-msgstr "Käytämme peilaustoimintoa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:523
-#: ../../../../build/work/app/i18n/custmsg.h:613
-msgid ""
-"Drag a horizontal line that will be the mirror for the <Flip> command.\n"
-msgstr "Piirrä peilayslinja vaakatasoon.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:533
-#: ../../../../build/work/app/i18n/custmsg.h:615
-msgid "Notice the title has changed to Flipped Left.\n"
-msgstr "Huomaa että otsikko ilmaisee vaihteen olevan peilikuva.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:616
-msgid "Now Group the turnout.\n"
-msgstr "Ryhmittele.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:542
-#: ../../../../build/work/app/i18n/custmsg.h:618
-msgid "We'll change the Title and Part No for the new defintion.\n"
-msgstr "Muutamme kuvausta ja tuotenumeroa uutta määrittelyä varten.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:555
-#: ../../../../build/work/app/i18n/custmsg.h:620
-msgid ""
-"To Remove the definitions, use the Custom Management dialog on the Tools "
-"menu.\n"
-msgstr ""
-"Poistaaksesi määrittelyt, käytä \"Omat raideosat ja kalusto\" ikkunaa "
-"Hallinta valikosta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:560
-#: ../../../../build/work/app/i18n/custmsg.h:622
-msgid "Select the definitions you added and Delete them.\n"
-msgstr "Valitse lisäämäsi määrittelyt ja poista ne.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:573
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:16
-#: ../../../../build/work/app/i18n/custmsg.h:625
-msgid ""
-"Now we will create a helix in the corner of the layout connected to 2 "
-"tracks.\n"
-msgstr ""
-"Nyt luomme helixin (kierrenousun) ratasuunnitelman nurkkaukseen ja "
-"yhdistämme sen kahteen raiteeseen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:28
-#: ../../../../build/work/app/i18n/custmsg.h:627
-#, c-format
-msgid ""
-"We will be creating a helix with a Elevation Difference of 12\", Grade of "
-"1.5% and limit the Vertical Separation to at least 2\".\n"
-msgstr ""
-"Luomme helixin, jonka korkeusero on 12 tuumaa, nousukulma 1,5% ja määräämme "
-"kerrosten välisen tilan olevan vähintään 2 tuumaa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:34
-#: ../../../../build/work/app/i18n/custmsg.h:629
-msgid "First set the Elevation Difference to 12\"\n"
-msgstr "Ensin asetamme korkeuseron 12 tuumaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:43
-#: ../../../../build/work/app/i18n/custmsg.h:631
-msgid "Next set the Vertical Separation to 2\"\n"
-msgstr "Sauraavaksi kerrosten välinen etäisyys 2 tuumaksi.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:632
-msgid "Notice how this causes the number of Turns to be set to 6\n"
-msgstr "Huomaa kuinka tämä muuttaa kierrosten lukumääräksi 6.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:52
-#: ../../../../build/work/app/i18n/custmsg.h:634
-msgid "Next set the Grade to 1.5%\n"
-msgstr "Seuraavaksi nousukulmaksi 1,5%.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:635
-msgid "Notice how this causes the Radius to change.\n"
-msgstr "Huomaa, kuinka säde muuttuu.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:60
-#: ../../../../build/work/app/i18n/custmsg.h:637
-msgid ""
-"Setting these values changes the Radius to 21.2\" and the number of Turns to "
-"6.\n"
-msgstr ""
-"Näillä arvoilla säde muuttui 21,2 tuumaksi ja kierrosten lukumäärä 6:ksi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:66
-#: ../../../../build/work/app/i18n/custmsg.h:639
-msgid ""
-"Now we specify the Angular Separation between the enterance and exit to the "
-"helix.\n"
-msgstr "Nyt määrittelemme helixin sisäänkäyntien välisen kulman.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:640
-msgid "Note: this will decrease the Radius slightly.\n"
-msgstr "Huom: Tämä pienentää sädettä hieman.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:76
-#: ../../../../build/work/app/i18n/custmsg.h:642
-msgid "Next we can fine tune the helix by decreasing the Radius to 15\".\n"
-msgstr ""
-"Seuraavaksi voimme hienosäätää helixiä asettamalla säteeksi 15 tuumaa.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:643
-msgid "Note the change to the Grade.\n"
-msgstr "Huomaa nousukulman muutos.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:85
-#: ../../../../build/work/app/i18n/custmsg.h:645
-msgid ""
-"Lastly change the Vertical Separation to 2.5\". The number of Turns will "
-"change to 4 and the grade increase to almost 3%.\n"
-msgstr ""
-"Viimeiseksi muutamme kerrosten välisen etäisyyden 2,5 tuumaksi. Kierrosten "
-"lukumäärä muuttuu 4:ksi ja nousukulma kasvaa lähes 3%:iin.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:646
-msgid ""
-"Note: the Vertical Separation will be increased. This value is the "
-"Elevation Difference (12.0) divided by the total number of turns. The total "
-"number of turns is 4.25: 4 whole Turns plus a quarter turn for the Angular "
-"Separation.\n"
-msgstr ""
-"Huom: Kerrosten välistä etäisyyttä kasvatetaan. Tämä arvo on "
-"kokonaiskorkeusero (12,0) jaettuna kierrosten kokonaislukumäärällä. "
-"Kierrosten kokonaislukumäärä on 4,25: 4 täyttä kierrosta sekä neljännes "
-"kierros johtuen sisäänkäyntien välisestä kulmasta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:94
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:99
-#: ../../../../build/work/app/i18n/custmsg.h:649
-msgid ""
-"Now that the helix parameters are set we can place the helix on the layout.\n"
-msgstr ""
-"Nyt kun helixin parametrit on aseteltu, voimme asettaa helixin "
-"ratasuunnitelmaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:112
-#: ../../../../build/work/app/i18n/custmsg.h:651
-msgid ""
-"Next, join the 2 straight tracks to the helix in the same way we join to a "
-"circle.\n"
-msgstr ""
-"Seuraavaksi yhdistetään suorat raiteet helixiin aivan kuten ympyrään.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:145
-#: ../../../../build/work/app/i18n/custmsg.h:653
-msgid ""
-"Notice that the length has increased because we have more than 4 turns in "
-"the helix. It is closer to 4.25 turns.\n"
-msgstr ""
-"Huomaa kuinka pituus kasvoi hieman koska helixissä on yli 4 kierrosta. "
-"Kierrosten lukumäärä on lähempänä 4,25:tä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:155
-#: ../../../../build/work/app/i18n/custmsg.h:655
-msgid ""
-"Next, we assign elevations to the 2 End-Points of the helix. This will "
-"determine the grade and separation between the helix coils.\n"
-msgstr ""
-"Seuraavaksi määrittelemme korkeustason helixin toiselle päätepisteelle. Tämä "
-"määrittää nousukulman ja kierteiden välisen eron.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:656
-msgid ""
-"Note: we could set the elevations anywhere along the connecting tracks "
-"instead. XTrackCAD treats a helix as a single length of track for "
-"elevations.\n"
-msgstr ""
-"Huom: Voisimme määrittää korkeustason missä tahansa helixiin yhdistetyllä "
-"raiteella. Korkeustasojen kannalta XTrackCAD käsittelee helixiä yhtenä "
-"tietyn mittaisena raiteena.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:176
-#: ../../../../build/work/app/i18n/custmsg.h:658
-msgid ""
-"We have set the elevations to 1\" and 13\" to produce a grade of 3.0% with "
-"2.8\" between coils.\n"
-msgstr ""
-"Asetimme korkeustasot 1 ja 13 tuumaksi luodaksemme 3,0% nousukulman ja 2,8 "
-"tuuman kerrosvälin.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:659
-msgid ""
-"You can use the <Describe> command to change the number of Turns or the "
-"Elevations at either end of the Helix. This will affect the Grade and "
-"Vertical Separation.\n"
-msgstr ""
-"Voit käyttää määrittele-komentoa muuttaaksesi kierrosten lukumäärää tai "
-"korkeustasoja kummassa tahansa päässä helixiä. Tämä vaikuttaa nousukulmaan "
-"ja kerrosten väliseen tilaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:184
-#: ../../../../build/work/app/i18n/custmsg.h:661
-msgid "The helix description can be moved by the <Move Label> command.\n"
-msgstr "Helixin kuvausta voidaan siirtää aivan kuten muitakin merkintöjä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:194
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:16
-#: ../../../../build/work/app/i18n/custmsg.h:664
-msgid ""
-"In addition to using the turnout definitions you can create 'Hand Laid "
-"Turnout'.\n"
-msgstr ""
-"Valmiiden vaihdemäärittelyjen lisäksi voit luoda \"käsin asetellun vaihteen"
-"\".\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:665
-msgid "This is two step process:\n"
-msgstr "Tämä on kaksiosainen prosessi:\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:23
-#: ../../../../build/work/app/i18n/custmsg.h:667
-msgid "1 - click on the frog and drag away to set the frog angle\n"
-msgstr "1 - klikkaa risteyskappaleen kohdalle ja raahaa asettaaksesi kulman.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:29
-#: ../../../../build/work/app/i18n/custmsg.h:669
-msgid ""
-" Hint: the further you drag from the frog, the more accurate the angle.\n"
-msgstr ""
-" Vinkki: Mitä kauemmas raahaat, sitä tarkemmin saat kulman asetelluksi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:34
-#: ../../../../build/work/app/i18n/custmsg.h:671
-msgid "2 - click and drag to set the position of the points\n"
-msgstr "2 - Klikkaa ja raahaa asetellaksesi kielten päät.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:42
-#: ../../../../build/work/app/i18n/custmsg.h:673
-msgid "We can create Hand Laid Turnouts on curved tracks.\n"
-msgstr "Voimme luoda käsin asetellun vaihteen myös kaarteeseen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:58
-#: ../../../../build/work/app/i18n/custmsg.h:675
-msgid "A Hand Laid Turnout is composed of several parts.\n"
-msgstr "Käsin asetellut vaihteet koostuvat useasta osasta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:67
-#: ../../../../build/work/app/i18n/custmsg.h:677
-msgid "The actual Turnout is a short portion at the points.\n"
-msgstr "Varsinainen vaihde on lyhyt osa kielten päiden luona.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:77
-#: ../../../../build/work/app/i18n/custmsg.h:679
-msgid "The other parts are various straight and curved segments.\n"
-msgstr "Muut osat ovat suoria ja kaarevia raideosia.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:81
-#: ../../../../build/work/app/i18n/custmsg.h:681
-msgid "The new curved turnout is also composed of several segments.\n"
-msgstr "Myös kaarrevaihde koostuu useasta osasta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:107
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:7
-#: ../../../../build/work/app/i18n/custmsg.h:684
-msgid "Welcome to the XTrackCAD demonstration.\n"
-msgstr "Tervetuloa XTrackCADin havaintoesitykseen.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:685
-msgid ""
-"This will show some the features of XTrackCAD in an automated presentation. "
-"This window contains a number of controls and a message area (which I hope "
-"you are reading now). \n"
-msgstr ""
-"Havaintoesitykset näyttävät joitakin XTrackCADin ominaisuuksia "
-"automaattisina esityksinä. Tämä ikkuna sisältää joitakin kontrolleja sekä "
-"viestialueen, jota juuri nyt luet.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:686
-msgid "The controls are:\n"
-msgstr "Kontrollit ovat:\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:687
-msgid "Step - advances to the next step of the demo.\n"
-msgstr "Seuraava vaihe - Siirtyy seuraavaan vaiheeseen demossa.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:688
-msgid "Next - skips ahead to the next demo.\n"
-msgstr "Seuraava - Siirry seuraavaan demoon.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:689
-msgid "Quit - exits the demo and returns to XTrackCAD.\n"
-msgstr "Lopeta - Pysäyttää demon ja palaa XTrackCADin normaaliin tilaan.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:690
-msgid "Speed - controls the speed of the demo.\n"
-msgstr "Nopeus - Säätelee demojen suoritusnopeutta.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:691
-msgid "Click Step now for the next message.\n"
-msgstr ""
-"Klikkaa nyt Seuraava vaihe -painiketta katsoaksesi seuraavan viestin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:23
-#: ../../../../build/work/app/i18n/custmsg.h:693
-msgid ""
-"If this is the first time you have used the demo you may want to rearrange "
-"the windows so the demo window does not obscure the main window.\n"
-msgstr ""
-"Jos tämä on ensimmäinen kerta, kun käytät näitä havaintoesityksiä, saatat "
-"haluta järjestellä ikkunat siten, ettei demo-ikkuna peitä pääikkunaa "
-"oleellisesti.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:694
-msgid ""
-"You can move the demo window now by dragging on the title bar at the top of "
-"the window. I suggest you move it to the top of your screen.\n"
-msgstr ""
-"Voit siirrellä demo-ikkunaa raahaamalla otsikkopalkista. Ehdotan, että "
-"siirrät demo-ikkunan näyttösi yläosaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:31
-#: ../../../../build/work/app/i18n/custmsg.h:696
-msgid ""
-"The various controls are disabled when it would be inappropiate to click on "
-"them. When the demo is running the Step button is disabled. When the demo "
-"is paused the Step button is enabled and you can click it when you are ready "
-"to view the next part of the demo.\n"
-msgstr ""
-"Useimmat kontrollit eivät ole käytettävissä oltaessa demo-tilassa, jolloin "
-"niitä ei voi painella tarpeettomasti. Demon ollessa käynnissä Seuraava vaihe "
-"-painike ei ole käytettävissä. Kun demo on pysähdyksissä Seuraava vaihe -"
-"painike on käytettävissä, jolloin voit siirtyä sen avulla demossa seuraavaan "
-"vaiheeseen.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:697
-msgid "You can click on Quit to return to XTrackCAD at any time.\n"
-msgstr ""
-"Voit painaa Lopeta -painiketta milloin tahansa palataksesi XTrackCADin "
-"perustilaan.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:698
-msgid "You can adjust the speed of the demonstration with the Speed control.\n"
-msgstr ""
-"Voit säätää demojen suoritusnopeutta Nopeus -valintaluettelon avulla.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:60
-#: ../../../../build/work/app/i18n/custmsg.h:700
-msgid "The demos are designed to fit within a certain sized window.\n"
-msgstr ""
-"Demot on suunniteltu niin, että ne mahtuvat tietyn kokoiseen ikkunaan.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:701
-msgid ""
-"For best results, change the size of the main XTrackCAD window so the box "
-"shape is completely visible.\n"
-msgstr ""
-"Parhaan tuloksen saavuttamiseksi, muuta XTrackCADin pääikkunan kokoa siten, "
-"että nelikulmio on kokonaan näkyvissä.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:702
-msgid "You can do this by clicking and dragging on a corner of the window.\n"
-msgstr ""
-"Voit tehdä tämän klikkaamalla ja raahaamalla hiidella ikkunan reunoista tai "
-"nurkasta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:67
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:72
-#: ../../../../build/work/app/i18n/custmsg.h:705
-msgid "This is the end of the introductory demo.\n"
-msgstr "Tähän päättyy johdanto.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:706
-msgid ""
-"Please click Step for the next demo or click Quit to return to XTrackCAD.\n"
-msgstr ""
-"Paina Seuraava vaihe tai Seuraava, siirtyäksesi seuraavaan demoon tai Lopeta "
-"palataksesi XTrackCADin perustilaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjcir.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:708
-msgid ""
-"You can also join to and from circles. This will change the circles to "
-"curves.\n"
-msgstr ""
-"Voit myös yhdistää alkaen ympyrästä ja päättyen ympyrään. Tämä muuttaa "
-"ympyrät kaarteiksi.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:709
-msgid "In this example we will join two circles.\n"
-msgstr "Tässä esimerkissä yhdistetään kaksi ympyrää.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjcir.xtr:24
-#: ../../../../build/work/app/i18n/custmsg.h:711
-msgid ""
-"Here we've selected points on the two circles. The direction of the "
-"connections (whether clockwise or counter clockwise) is controlled by where "
-"on the circle you select the connection points.\n"
-msgstr ""
-"Nyt olemme valinneet pisteet molemmilta ympyräraiteilta. Liitoksen suuntaa "
-"kontrolloidaan sen mukaan mistä kohtaa ympyröitä liitoskohdat valitaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjcir.xtr:133
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjcir.xtr:152
-#: ../../../../build/work/app/i18n/custmsg.h:714
-msgid "Now let's try a cross connection.\n"
-msgstr "Kokeillaanpa risteävää liitosta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjcir.xtr:246
-#: ../../../../build/work/app/i18n/custmsg.h:716
-msgid ""
-"Note that the connection is from different 'ends' of the circle than in the "
-"last example.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnabut.xtr:22
-#: ../../../../build/work/app/i18n/custmsg.h:718
-msgid "This examples shows joining tracks whose End-Points are aligned.\n"
-msgstr ""
-"Tämä esimerkki näyttää kahden kohdakkain olevan päätepisteen yhdistämisen.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:719
-msgid ""
-"Note the 2 pairs of tracks have End-Points that are close and aligned but "
-"not connected.\n"
-msgstr ""
-"Huomaa, että molemmissa raidepareissa raiteet ovat aivan lähekkäin ja "
-"samansuuntaisesti, mutta toisistaan irrallisia.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnabut.xtr:30
-#: ../../../../build/work/app/i18n/custmsg.h:721
-msgid "The first case joins the curve and straight track.\n"
-msgstr "Ensin yhdistetään kaarre suoraan raiteeseen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnabut.xtr:40
-#: ../../../../build/work/app/i18n/custmsg.h:723
-msgid "The second case will join the two straight tracks.\n"
-msgstr "Seuraavaksi yhdistetään kaksi suoraa raidetta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnabut.xtr:50
-#: ../../../../build/work/app/i18n/custmsg.h:725
-msgid "Note that the two straight tracks were combined to form one track.\n"
-msgstr ""
-"Huomaa, että kaksi suoraa raidetta yhdistettiin siten, että ne muodostavat "
-"nyt yhden raideosan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnabut.xtr:55
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:728
-#, fuzzy
-msgid ""
-"The <Join> command can also join straight and curved tracks (in either "
-"order).\n"
-msgstr ""
-"Yhdistä-komennolla voi liittää suoran ja kaarevan raiteen (kummassa tahansa "
-"järjestyksessä).\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:729
-#, fuzzy
-msgid "We will enable Cornu easements\n"
-msgstr "Ensiksi otetaan kaarreloivennus käyttöön.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:32
-#: ../../../../build/work/app/i18n/custmsg.h:731
-#, fuzzy
-msgid "A connecting cornu track is drawn between the two tracks.\n"
-msgstr "Yhdistävä raide piirretään yhdistettävien raiteiden väliin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:41
-#: ../../../../build/work/app/i18n/custmsg.h:733
-msgid ""
-"Notice that the curved track is extended as the connection point moves past "
-"the End-Point.\n"
-msgstr ""
-"Huomaa kuinka kaarevaa raidetta jatketaan liitoskohdan siirtyessä "
-"päätepisteen ohi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:54
-#: ../../../../build/work/app/i18n/custmsg.h:735
-#, fuzzy
-msgid ""
-"Here the connection makes the curved track wrap around. This is not a "
-"useful shape, there is a discontinuity at the end. \n"
-msgstr "Tässä liitos saa kaarevan raiteen kiepsahtamaan ympäri.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:736
-msgid "Adjusting the end point will fix it. \n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:64
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnmove.xtr:18
-#: ../../../../build/work/app/i18n/custmsg.h:739
-msgid "The <Join> command can move one group of tracks to join with another.\n"
-msgstr ""
-"Yhdistä-komento pystyy siirtämään raiteita yhdistääkseen ne toisiin "
-"raiteisiin.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:740
-#, fuzzy
-msgid ""
-"First <Select> the tracks you want to move with Ctrl so that they are both "
-"selected.\n"
-msgstr "Valitse ensin raiteet, jotka haluat siirtää.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnmove.xtr:36
-#: ../../../../build/work/app/i18n/custmsg.h:742
-msgid "Click <Join> and Shift-Left-Click on the two End-Points.\n"
-msgstr ""
-"Klikkaa Yhdistä ja sen jälkeen vaihto-näppäintä painettuna klikkaa hiiren "
-"vasemmalla painikkeella yhdistettäviä päätepisteitä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnmove.xtr:51
-#: ../../../../build/work/app/i18n/custmsg.h:744
-msgid "The selected tracks are moved into position.\n"
-msgstr "Valitut raiteet siirrettiin paikoilleen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:746
-#, fuzzy
-msgid ""
-"Two straight tracks can be joined by selecting the two endoints. The "
-"selected endpoints will be those closest to the cursor when the track is "
-"selected.\n"
-msgstr ""
-"Kaksi suoraa raidetta yhdistetään valitsemalla kaksi päätepistettä. Valittu "
-"päätepiste on se, joka on lähempänä hiiren osoitinta raidetta valittaessa.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:747
-#, fuzzy
-msgid "First, we will select Easements None and then select Join\n"
-msgstr "Ensin asetamme korkeustasot haarojen päihin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:26
-#: ../../../../build/work/app/i18n/custmsg.h:749
-#, fuzzy
-msgid "Now we select two points on the tracks\n"
-msgstr "Valitse nyt toisen haaran pää.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:36
-#: ../../../../build/work/app/i18n/custmsg.h:751
-msgid ""
-"A connecting track is drawn between the two tracks. Notice how it moves as "
-"the cursor is dragged along the second track.\n"
-msgstr ""
-"Yhdistävä raide piirretään yhdistettävien raiteiden väliin. Huomaa kuinka se "
-"siirtyy raahattaessa osoitinta toista raidetta pitkin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:47
-#: ../../../../build/work/app/i18n/custmsg.h:753
-msgid ""
-"Note that two tracks are extended if you move past the end of the track.\n"
-msgstr ""
-"Huomaa, että raiteita pidennetään automaattisesti siirryttäessä raiteen pään "
-"ohi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:55
-#: ../../../../build/work/app/i18n/custmsg.h:755
-msgid ""
-"Notice what happens if you drag past the intersection points of the two "
-"tracks.\n"
-msgstr "Katso mitä tapahtuu, jos raahaat raiteiden leikkauspisteen ohi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:757
-msgid "This is probably not a very useful thing to do.\n"
-msgstr "Tämä ei luultavasti ole kovin hyödyllistä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:70
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:90
-#: ../../../../build/work/app/i18n/custmsg.h:760
-msgid "Now we will do this with Cornu Easements \n"
-msgstr ""
-
-#: ../../../../build/work/app/i18n/custmsg.h:761
-#, fuzzy
-msgid "First, we will select Easements Cornu and then select Join\n"
-msgstr "Ensin asetamme korkeustasot haarojen päihin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:102
-#: ../../../../build/work/app/i18n/custmsg.h:763
-#, fuzzy
-msgid "Now we again select two points on the tracks\n"
-msgstr "Valitse nyt toisen haaran pää.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:112
-#: ../../../../build/work/app/i18n/custmsg.h:765
-#, fuzzy
-msgid ""
-"A connecting cornu is drawn between the two tracks. Notice how it behaves "
-"as the cursor is dragged along the second track.\n"
-msgstr ""
-"Yhdistävä raide piirretään yhdistettävien raiteiden väliin. Huomaa kuinka se "
-"siirtyy raahattaessa osoitinta toista raidetta pitkin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:123
-#: ../../../../build/work/app/i18n/custmsg.h:767
-#, fuzzy
-msgid ""
-"Note that either tracks can be extended if you move past the end of it.\n"
-msgstr ""
-"Huomaa, että raiteita pidennetään automaattisesti siirryttäessä raiteen pään "
-"ohi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:131
-#: ../../../../build/work/app/i18n/custmsg.h:769
-#, fuzzy
-msgid ""
-"Notice this time what happens if you drag past the intersection points of "
-"the two tracks.\n"
-msgstr "Katso mitä tapahtuu, jos raahaat raiteiden leikkauspisteen ohi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:139
-#: ../../../../build/work/app/i18n/custmsg.h:771
-msgid "This is more useful because you can move the other end as well.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:150
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:16
-#: ../../../../build/work/app/i18n/custmsg.h:774
-msgid "You can connect from any track to a turntable\n"
-msgstr "Voit yhdistää mistä tahansa raiteesta kääntöpöytään.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:775
-#, fuzzy
-msgid "With a Cornu Easement you can have a turntable as the first point.\n"
-msgstr ""
-"Huom: Kääntöpöytä ei voi olla ensimmäinen liitoskohta, eli aina yhdistetään "
-"muusta raiteesta kääntöpöytää kohti.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:38
-#: ../../../../build/work/app/i18n/custmsg.h:777
-msgid ""
-"You cannot place the connecting track too close to an existing stall track. "
-"How close you can get is controlled by the Turntable Angle on the Setup "
-"dialog.\n"
-msgstr ""
-"Liitosraidetta ei voi yhdistää liian lähelle kääntöpöytään ennestään "
-"liittyvää raidetta. Tämä etäisyys, eli kääntöpöydän kulma, määritellään "
-"komentojen asetuksissa.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:778
-#, fuzzy
-msgid "In this example it is set to 15 degrees.\n"
-msgstr "Tässä esimerkissä se on asetettu 7,5 asteeksi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:54
-#: ../../../../build/work/app/i18n/custmsg.h:780
-msgid "You can drag the connecting point all round the turntable.\n"
-msgstr "Voit raahata liitoskohtaa ympäti kääntöpöytää.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:103
-#: ../../../../build/work/app/i18n/custmsg.h:782
-msgid ""
-"As you drag away from the turntable a straight track will be drawn to the "
-"cursor postion and a curve will be drawn from the cursor to the connecting "
-"track.\n"
-msgstr ""
-"Raahatessasi kääntöpöydästä pois päin, suora raide piirretään osoittimeen "
-"asti ja siitä jatketaan kaarteella liitettävään raiteeseen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:111
-#: ../../../../build/work/app/i18n/custmsg.h:784
-#, fuzzy
-msgid ""
-"Now the cursor will be moved within the turntable, but the end stays on the "
-"edge of the well.\n"
-msgstr ""
-"Nyt osoitin viedään kääntöpöydän sisälle. Huomaa virheilmoitus tilarivillä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:161
-#: ../../../../build/work/app/i18n/custmsg.h:786
-msgid "All done.\n"
-msgstr "Valmis.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:169
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:38
-#: ../../../../build/work/app/i18n/custmsg.h:789
-msgid ""
-"The Draw Commands are used to draw straight and curved lines on the layout.\n"
-msgstr ""
-"Piirtokomennoilla voidaan piirtää suoria ja kaarevia viivoja "
-"ratasuunnitelmaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:46
-#: ../../../../build/work/app/i18n/custmsg.h:791
-msgid ""
-"Lines are drawn by clicking at the starting postion and dragging to the "
-"final position.\n"
-msgstr ""
-"Viivat piirretään klikkaamalla alkupistettä ja raahaamalla loppupisteeseen.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:792
-msgid ""
-"By default, the new line will snap to existing objects. Hold down the "
-"<Ctrl> and <Alt> keys to prevent this from happening.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:91
-#: ../../../../build/work/app/i18n/custmsg.h:794
-msgid "You also draw in various colors and line widths.\n"
-msgstr "Voit myös piirtää eri väreillä ja muuttaa viivan paksuutta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:109
-#: ../../../../build/work/app/i18n/custmsg.h:796
-msgid ""
-"Like Curved Tracks, Curved Lines can be drawn by a variety of methods.\n"
-msgstr ""
-"Aivan kuten kaarevat raideosat, myös kaarevat viivat voidaan piirtää eri "
-"tavoin.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:797
-msgid ""
-"Here we will draw a Curve by dragging from one End-Point to the other to "
-"define the chord of the Curve. Then we will drag from the center to shape "
-"the curve.\n"
-msgstr ""
-"Tässä piirrämme kaaren raahaamalla ensin jänteen päätepisteiden välille ja "
-"raahaamme sitten jänteen keskeltä muodostaaksemme halutun kaaren.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:184
-#: ../../../../build/work/app/i18n/custmsg.h:799
-msgid "Boxes are useful for drawing rectangular shapes.\n"
-msgstr ""
-"Nelikulmio koostuu neljästä yksittäisestä viivasta, mutta sen voi piirtää "
-"yhdellä komennolla.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:194
-#: ../../../../build/work/app/i18n/custmsg.h:801
-msgid ""
-"Circles can be drawn by clicking on the center or edge and dragging to set "
-"the radius.\n"
-msgstr ""
-"Ympyrät voidaan piirtää esimerkiksi klikkaamalla haluttua keskipistettä ja "
-"asettamalla ympyrän säde raahaamalla.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:802
-msgid "Here we will drag from the Center.\n"
-msgstr "Raahaamme keskipisteestä poispäin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:204
-#: ../../../../build/work/app/i18n/custmsg.h:804
-msgid "Lines and Shapes can be deleted by Selecting and Deleting.\n"
-msgstr ""
-"Viivat ja muodot poistetaan valitsemalla ne ensin ja sitten poistamalla ne.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:227
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:91
-#: ../../../../build/work/app/i18n/custmsg.h:807
-msgid "We also draw Polylines and filled shapes.\n"
-msgstr "Voimme myös luoda monikulmioita ja täytettyjä monikulmioita.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:98
-#: ../../../../build/work/app/i18n/custmsg.h:809
-msgid ""
-"A Polyline is drawn by dragging to place each of the point in the Polyline.\n"
-msgstr "Monikulmio piirretään raahaamalla kukin kulma paikoilleen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:125
-#: ../../../../build/work/app/i18n/custmsg.h:811
-msgid ""
-"To finish off the Polyline press the <Space> key or choose another drawing "
-"type.\n"
-msgstr ""
-"Viimeistelläksesi monikulmion, paina välilyöntiä tai valitse toinen "
-"piirtotyyppi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:132
-#: ../../../../build/work/app/i18n/custmsg.h:813
-#, fuzzy
-msgid "A filled Polygon is drawn in the same way.\n"
-msgstr "Täytetty monikulmio piirretään samalla tavalla.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:158
-#: ../../../../build/work/app/i18n/custmsg.h:815
-msgid "When you are finished, press the <Space> key to complete the polygon.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:165
-#: ../../../../build/work/app/i18n/custmsg.h:817
-msgid ""
-"You can use the Above and Below Commands to move lines and shapes to the "
-"front or back of the drawing.\n"
-msgstr ""
-"Voit vaihtaa viivojen ja muotojen järjestystä viemällä niitä alimmaiseksi "
-"tai päällimmäiseksi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:182
-#: ../../../../build/work/app/i18n/custmsg.h:819
-msgid "Filled Boxes and Circles work the same as line Boxes and Circles.\n"
-msgstr ""
-"Täytetyt nelikulmiot ja täytetyt ympyrät toimivat samoin kuin tyhjät "
-"nelikulmiot ja ympyrät.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:199
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:8
-#: ../../../../build/work/app/i18n/custmsg.h:822
-#, fuzzy
-msgid ""
-"In the drawing area of the main window you can see an hollow upwards arrow "
-"which represents the mouse cursor. In this demo the mouse will move about "
-"to show you the actions of different commands.\n"
-msgstr ""
-"Pääikkunan piirtoalueella näet läpinäkyvän nuolen, joka kuvaa hiiren "
-"osoitinta. Tässä demossa esitellään erilaiset hiiren toiminnot.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:823
-msgid ""
-"The hollow arrow represents the mouse cursor without a mouse button being "
-"pressed.\n"
-msgstr ""
-"Läpinäkyvä nuoli kuvaa hiiren osoitinta silloin kun hiiren painikkeita ei "
-"ole painettu.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:16
-#: ../../../../build/work/app/i18n/custmsg.h:825
-#, fuzzy
-msgid ""
-"When the left mouse button would be pressed, the mouse cursor appears to "
-"flash and the hollow arrow is replaced by a solid left-pointing red arrow "
-"while the button is pressed.\n"
-msgstr ""
-"Osoittimen välähdys ja sen muuttuminen punaiseksi kuvaa hiiren vasemman "
-"painikkeen painamista. Koko sen ajan, kun hiiren painike on painettuna alas, "
-"osoitin esitetään punaisella nuolella.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:826
-msgid ""
-"Note: these color changes occur only during the demo to simulate mouse "
-"button presses.\n"
-msgstr ""
-"Huom: Hiiren osoittimen väri muuttuu vain demo-tilassa kuvaten hiiren "
-"painikkeiden käyttöä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:24
-#: ../../../../build/work/app/i18n/custmsg.h:828
-msgid ""
-"Moving the mouse while a mouse button is pressed is called 'dragging'.\n"
-msgstr ""
-"Hiiren liikuttelua silloin kun hiiren painike on painettuna, kutsutaan "
-"\"raahaamiseksi\".\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:32
-#: ../../../../build/work/app/i18n/custmsg.h:830
-#, fuzzy
-msgid ""
-"When the left mouse button is released, the mouse cursor flashes and the "
-"hollow up black arrow is restored.\n"
-msgstr ""
-"Kun hiiren vasen painike vapautetaan, osoitin välähtää ja se palautetaan "
-"läpinäkyväksi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:40
-#: ../../../../build/work/app/i18n/custmsg.h:832
-#, fuzzy
-msgid ""
-"Dragging with the right button is simulated by a blue right-facing solid "
-"cursor.\n"
-msgstr ""
-"Hiiren oikealla painikkeella raahaamista kuvataan sinisellä nuolella.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:49
-#: ../../../../build/work/app/i18n/custmsg.h:834
-#, fuzzy
-msgid "Release Right Click\n"
-msgstr "Hiiren 2-painike"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:57
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:62
-#: ../../../../build/work/app/i18n/custmsg.h:837
-#, fuzzy
-msgid "Sometimes the Shift key is held down while using the mouse \n"
-msgstr ""
-"Joskus vaihto -näppäintä (shift) on painettava samalla kun hiirellä "
-"klikataan tai raahataan.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:838
-#, fuzzy
-msgid ""
-"This is indicated by an outlined arrow with the letter S near the arrow.\n"
-msgstr "Tämä esitetään lisäämällä värilliseen osoittimeen ääriviivat.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:71
-#: ../../../../build/work/app/i18n/custmsg.h:840
-#, fuzzy
-msgid ""
-"The left mouse button is held down with the Shift and dragged for a Left-"
-"Shift-Drag. \n"
-msgstr "Hiiren vasen painike vapautetaan loppupisteessä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:86
-#: ../../../../build/work/app/i18n/custmsg.h:842
-#, fuzzy
-msgid "Sometimes the Control key is held down while using the mouse. \n"
-msgstr ""
-"Joskus vaihto -näppäintä (shift) on painettava samalla kun hiirellä "
-"klikataan tai raahataan.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:843
-msgid ""
-"This is indicated with an upward filled arrow head with the letter C near "
-"the arrow \n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:98
-#: ../../../../build/work/app/i18n/custmsg.h:845
-msgid ""
-"If while the Control is held the Left mouse button is held down it is a Ctrl-"
-"Move and a Ctrl-Left-Drag. \n"
-msgstr ""
-
-#: ../../../../build/work/app/i18n/custmsg.h:846
-#, fuzzy
-msgid ""
-"This is indicated by an an left-facing open-headed arrow with the letter C "
-"near it.\n"
-msgstr "Tämä esitetään lisäämällä värilliseen osoittimeen ääriviivat.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:114
-#: ../../../../build/work/app/i18n/custmsg.h:848
-msgid "You can also use the Control key with the Right mouse button. \n"
-msgstr ""
-
-#: ../../../../build/work/app/i18n/custmsg.h:849
-msgid ""
-"This is indicated with a right-facing filled arrow with an open arrow head "
-"and the letter C near the arrow \n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:130
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:23
-#: ../../../../build/work/app/i18n/custmsg.h:852
-msgid ""
-"The main drawing area shows a portion of total layout. You can zoom in or "
-"zoom out by choosing 'Zoom In' or 'Zoom Out' in the 'Edit' menu, by using "
-"the Zoom buttons on the toolbar or by using the 'Page Down' and 'Page Up' "
-"keys.\n"
-msgstr ""
-"Piirtoalueella näytetään osa ratasuunnitelmasta. Voit lähentää tai loitontaa "
-"näkymää valitsemalla Muokkaa -valikosta \"Lähennä\" tai \"Loitonna\", "
-"käyttämällä vastaavia painikkeita työkaluriviltä, näppäimistön PgUp ja PgDn -"
-"näppäimillä tai rullahiiren rullasta pyörittämällä.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:853
-msgid "You can see the entire layout in the Map window.\n"
-msgstr "Kartta -ikkunassa esitetään koko ratasuunnitelma.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:33
-#: ../../../../build/work/app/i18n/custmsg.h:855
-msgid "As you Zoom Out tracks are drawn with one line instead of two.\n"
-msgstr ""
-"Loitonnettaessa riittävästi, raiteet piirretään ainoastaan yhdellä viivalla "
-"normaalin kahden sijaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:49
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:54
-#: ../../../../build/work/app/i18n/custmsg.h:858
-#, fuzzy
-msgid ""
-"You can change what portion of the layout is shown by using the 'Map' window "
-"which shows a compressed version of the entire layout. A hilighted area of "
-"the 'Map' (in blue highlight) shows what portion of the layout is displayed "
-"in the main drawing area.\n"
-msgstr ""
-"Kartta -ikkunan avulla voit valita mikä osa ratasuunnitelmaa näytetään. "
-"Kartta -ikkunassa esitetään piennennetty kuva koko ratasuunnitelmasta. "
-"Korostettu alue esittää pääikkunan piirtoalueella näytettävän alueen.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:859
-msgid ""
-"You can Left-Drag the hilighted area in the Map window to change the "
-"displayed portion of the layout.\n"
-msgstr ""
-"Raahaamalla hiiren vasemmalla painikkeella korostettua aluetta muuttaaksesi "
-"ratasuunnitelman näytettävän alueen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:861
-msgid ""
-"You can also Right-Drag on the Map window to set the scale and position of "
-"the Main window.\n"
-msgstr ""
-"Hiiren oikealla painikkeella raahaaminen puolestaan muuttaa näytettävän "
-"alueen skaalausta (kokoa).\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:72
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmnotes.xtr:6
-#: ../../../../build/work/app/i18n/custmsg.h:864
-msgid ""
-"The <Note> command lets you attach notes to various spots on the layout.\n"
-msgstr "Voit liittää ratasuunnitelmaasi muistiinpanoja.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmnotes.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:866
-msgid ""
-"When you place a note, the Note editor window is displayed which lets you "
-"enter the note.\n"
-msgstr ""
-"Kun lisäät ratasuunnitelmaan muistiinpanon, avataan editori jossa voit "
-"kirjoittaa muistiinpanon sisällön.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmnotes.xtr:22
-#: ../../../../build/work/app/i18n/custmsg.h:868
-msgid ""
-"If you click on a note in <Describe> mode the Note editor displays the "
-"note.\n"
-msgstr ""
-"Jos määrittele-komento on aktiivinen ja klikkaat muistiinpanoa, sen sisältö "
-"näytetään editorissa. Näin voit myös muokata aiemmin kirjoittamaasi "
-"muistiinpanoa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmnotes.xtr:39
-#: ../../../../build/work/app/i18n/custmsg.h:870
-msgid "This is the end of the XTrackCAD Demos.\n"
-msgstr "Tähän päättyivät XTrackCADin demot.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:871
-msgid "Click Step to return to XTrackCAD.\n"
-msgstr ""
-"Paina seuraava vaihe, seuraava tai lopeta painiketta palataksesi XTrackCADin "
-"normaaliin tilaan.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:872
-msgid "Thanks for watching.\n"
-msgstr "Kiitos kun katsoit.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:32
-#: ../../../../build/work/app/i18n/custmsg.h:874
-msgid "This example shows how to create parallel tracks.\n"
-msgstr "Tämä esimerkki näyttää miten rinnakkaisia raiteita luodaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:37
-#: ../../../../build/work/app/i18n/custmsg.h:876
-msgid ""
-"The separation is set in the <Parallel Separation> window. You should set "
-"this value before you begin to select tracks.\n"
-msgstr ""
-"Raiteiden välinen etäisyys asetetaan työkalurivillä olevan tekstikentän "
-"avulla. Tämä arvo on asetettava ennen kuin raiteita valitaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:49
-#: ../../../../build/work/app/i18n/custmsg.h:878
-msgid ""
-"You control which side the parallel track will be on by moving the cursor "
-"from one side of the track centerline to the other.\n"
-msgstr ""
-"Voit kontrolloida kummalle puolelle rinnakkainen raide luodaan siirtämällä "
-"hiiren osoitinta alkuperäisen raiteen puolelta toiselle.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:81
-#: ../../../../build/work/app/i18n/custmsg.h:880
-msgid "When you release the mouse button the new parallel track is created.\n"
-msgstr "Uusi rinnakkainen raide luodaan kun vapautat hiiren painikkeen.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:881
-msgid ""
-"Note that the <Parallel> command remains active after you created the "
-"track. This is controlled by the Sticky dialog in the Options menu.\n"
-msgstr ""
-"Huomaa, että rinnakkainen-komento pysyy aktiivisena komentona luotuamme "
-"raiteen. Tätä käyttäytymistä voidaan muuttaa valikosta Asetukset|Pysyvät "
-"komennot.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:92
-#: ../../../../build/work/app/i18n/custmsg.h:883
-msgid "You cannot create a track parallel to a turnout.\n"
-msgstr "Vaihteesta ei voi luoda rinnakkaista raidetta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:172
-#: ../../../../build/work/app/i18n/custmsg.h:885
-msgid ""
-"Note that the new curved track is automatically connected to the short "
-"parallel track.\n"
-msgstr ""
-"Huomaa, että uusi kaarre liitettiin automaattisesti lyhyeen rinnakkaiseen "
-"raiteeseen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:180
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:19
-#: ../../../../build/work/app/i18n/custmsg.h:888
-#, fuzzy
-msgid ""
-"Polylines and polygons (created with the <Draw> command) can be modified by "
-"dragging on their corners or edges.\n"
-msgstr ""
-"Monikulmioita voidaan muokata raahaamalla niiden kulmista tai reunoista.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:889
-#, fuzzy
-msgid "First Left Click on the shape you want to modify.\n"
-msgstr "Valitse ensin raiteet, jotka haluat siirtää.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:29
-#: ../../../../build/work/app/i18n/custmsg.h:891
-#, fuzzy
-msgid "Then drag on the point you want to move\n"
-msgstr "Valitse ensin raiteet, jotka haluat siirtää.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:39
-#: ../../../../build/work/app/i18n/custmsg.h:893
-msgid "And finally press the Space bar to finish the change\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:54
-#: ../../../../build/work/app/i18n/custmsg.h:895
-msgid "If you select the middle of an Edge a new Corner is created.\n"
-msgstr ""
-"Jos valitset raahauskohdan kulmien väliltä, siihen luodaan uusi kulma.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:72
-#: ../../../../build/work/app/i18n/custmsg.h:897
-msgid "To delete a corner, select and then press Delete or Backspace\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:98
-#: ../../../../build/work/app/i18n/custmsg.h:899
-msgid "But you cannot have a Poly-shape with less than 3 sides.\n"
-msgstr "Monikulmiossa on kuitenkin aina oltava vähintään kolme kulmaa/sivua.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:126
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:126
-#: ../../../../build/work/app/i18n/custmsg.h:902
-msgid ""
-"To use the <Profile> command you first need to define Elevations on your "
-"layout.\n"
-msgstr ""
-"Käyttääksesi profiili-komentoa täytyy ratasuunnitelmassa olla määriteltyjä "
-"korkeustasoja.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:903
-msgid "In this example we'll use the Elevations defined in the last example.\n"
-msgstr ""
-"Tässä esimerkissä käytämme edellisessä esimerkissä käytettyjä "
-"korkeustasoja.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:904
-msgid "You can move or resize the Profile dialog now if you want.\n"
-msgstr "Voit siirtää Profiili-ikkunaa tai muuttaa sen kokoa jos haluat.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:135
-#: ../../../../build/work/app/i18n/custmsg.h:906
-msgid ""
-"To show the Profile you need to select a Path on the tracks of your layout.\n"
-msgstr "Näyttääksesi rataprofiilin täytyy valita reitti suunnitelmastasi.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:907
-msgid "Select a Defined Elevation point (marked by Gold dots).\n"
-msgstr "Valitse määriteltyjä korkeustasoja (merkitty keltaisilla täplillä).\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:908
-msgid "We will start with the right end of the siding.\n"
-msgstr "Aloitamme aseman oikeasta päästä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:148
-#: ../../../../build/work/app/i18n/custmsg.h:910
-msgid ""
-"The second Point is at the left end of the siding. The Path will be drawn "
-"in Purple on the layout.\n"
-msgstr ""
-"Toinen piste on aseman vasen pää. Reitti merkitään ratasuunnitelmaan "
-"purppuralla.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:160
-#: ../../../../build/work/app/i18n/custmsg.h:912
-msgid "Now select the end of one of the Branches\n"
-msgstr "Valitse nyt toisen haaran pää.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:169
-#: ../../../../build/work/app/i18n/custmsg.h:914
-msgid ""
-"The Profile line is drawn in Red. This indicates that there some turnouts "
-"on that section of the Path which have more than 2 connections.\n"
-msgstr ""
-"Rataprofiili on piirretty punaisella viivalla. Tämä tarkoittaa sitä, että "
-"kyseisellä osuudella on vaihteita, jotka ovat yhteydessä useampaan kuin "
-"kahteen määriteltyyn korkeustasoon.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:915
-msgid ""
-"The grade on this part of the Path is the average and may be affected by "
-"other Elevations, such the end of the lower branch.\n"
-msgstr ""
-"Osuuden nousukulma on keskiarvo ja siihen voi vaikuttaa muut korkeustasot, "
-"kuten alemman haaran pään korkeustaso.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:178
-#: ../../../../build/work/app/i18n/custmsg.h:917
-msgid "Now try to select the End-Point of the other branch.\n"
-msgstr "Yritä nyt valita toisen haaran pää.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:918
-msgid ""
-"You will get an error message because there is no route to one of the ends "
-"of the existing Path.\n"
-msgstr ""
-"Saat virheilmoituksen, koska valitun reitin päistä ei ole reittiä tähän "
-"pisteeseen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:187
-#: ../../../../build/work/app/i18n/custmsg.h:920
-msgid ""
-"In this case remove the last part of the Path by clicking on current end of "
-"the Path and reselect the End-Point.\n"
-msgstr ""
-"Poista tässä tapauksessa viimeinen osuus klikkaamalla valittuna olevan "
-"haaran päätä ja valitse sitten toisen haaran pää.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:198
-#: ../../../../build/work/app/i18n/custmsg.h:922
-msgid "Notice that the Grade has changed on the Profile.\n"
-msgstr "Huomaa että nousukulma on muuttunut profiili-ikkunassa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:205
-#: ../../../../build/work/app/i18n/custmsg.h:924
-msgid ""
-"You can Ignore End-Points on the Path by using Shift-Right-Click to display "
-"the Profile Options popup menu and chosing Ignore.\n"
-msgstr ""
-"Voit hylätä reitillä olevia raiteiden liitoskohtia ponnahdusvalikosta, joka "
-"aukeaa painamalla vaihto-nnäppäintä ja klikkaamalla hiiren oikealla. Valitse "
-"\"Hylkää\".\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:925
-msgid ""
-"Note: We can't show the menu in demo mode but we will show the effect of a "
-"Shift Right Click and selecting ignore. We will be Ignoring the End-Point "
-"of the Turnout that is not on the Path.\n"
-msgstr ""
-"Huom: Demossa ei voida esittää valikoita, mutta näytämme ponnahdusvalikosta "
-"suoritetun hylkää-komennon vaikutuksen. Hylkäämme vaihteesta sen "
-"päätepisteen, joka ei ole profiilin reitillä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:217
-#: ../../../../build/work/app/i18n/custmsg.h:927
-msgid "Notice that part of the Profile line is redrawn in Blue.\n"
-msgstr "Huomaa että osa profiilista on piirretty sinisellä viivalla.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:928
-msgid ""
-"Also, the Computed Elevations and Grade marker on the right side of the "
-"layout have been updated.\n"
-msgstr "Myös lasketut korkeustasot sekä nousukulman merkintä on päivitetty.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:225
-#: ../../../../build/work/app/i18n/custmsg.h:930
-msgid ""
-"You can set additional Defined Elevation points using the Profile Options "
-"popup menu. These points are added to the Profile if they are on the Path.\n"
-msgstr ""
-"Ponnahtusvalikon avulla voit lisätä myös uusia määriteltyjä korkeustasoja. "
-"Nämä pisteet lisätään profiiliin, jos ne ovat profiilin reitillä.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:931
-msgid ""
-"We do this by Shift Right Click to display the Profile Options popup menu "
-"and selecting Define.\n"
-msgstr ""
-"Teemme tämän avaamalla ponnahdusvalikon ja valitsemalla \"Määritelty\".\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:237
-#: ../../../../build/work/app/i18n/custmsg.h:933
-msgid ""
-"We've just added a Defined Elevation point to the middle of the lower "
-"branch. Notice the addition on the Profile dialog.\n"
-msgstr ""
-"Olemme juuri lisänneet määritellyn korkeustason keskelle alempaa haaraa. "
-"Huomaa lisäys profiili-ikkunassa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:246
-#: ../../../../build/work/app/i18n/custmsg.h:935
-msgid ""
-"For the siding we defined a Station name but it's not on the Path, since the "
-"Path takes the shortest distance between points.\n"
-msgstr ""
-"Sivuraiteelle määrittelimme aseman, mutta se ei ole reitillä, koska "
-"profiilin reitti valitaan lyhyimmän pisteiden välisen etäisyyden mukaan.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:936
-msgid ""
-"We can Ignore one of the End-Points on a Turnout to force the Path to take "
-"the other route.\n"
-msgstr ""
-"Voimme hylätä yhden vaihteen päätepisteistä pakottaaksemme reitin kulkemaan "
-"toista kautta.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:937
-msgid ""
-"Again we use Shift-Right-Click to display the Profile Options menu and "
-"select ignore.\n"
-msgstr "Käytämme jälleen ponnahdusvalikkoa ja valitsemme \"Hylkää\".\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:258
-#: ../../../../build/work/app/i18n/custmsg.h:939
-msgid "Now remove the First section of the Path,\n"
-msgstr "Valitse nyt reitin ensimmäinen osuus,\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:268
-#: ../../../../build/work/app/i18n/custmsg.h:941
-msgid "and reselect it.\n"
-msgstr "ja valitse se uudelleen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:277
-#: ../../../../build/work/app/i18n/custmsg.h:943
-msgid ""
-"Now the Path goes through the Station End-Point and the name appears on the "
-"Profile dialog.\n"
-msgstr ""
-"Nyt reitti kulkee määrittelemämme aseman kautta ja sen nimi näkyy profiili-"
-"ikkunassa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:286
-#: ../../../../build/work/app/i18n/custmsg.h:945
-msgid "Now we need to increase the separation where the tracks cross.\n"
-msgstr "Nyt meidän on kasvatettava risteävien raiteiden välistä etäisyyttä.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:946
-msgid ""
-"The two Elevations you see here are Computed Elevations which means "
-"XTrackCAD dynamically computes the Elevation based on the Elevations of "
-"connecting tracks.\n"
-msgstr ""
-"Tässä näkyvät kaksi korkeustason merkintää ovat laskettuja, mikä tarkoittaa "
-"sitä että XTrackCAD laskee tämän pisteen korkeuden automaattisesti muiden "
-"tähän liittyvien korkeustasojen mukaan.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:947
-msgid ""
-"First make the lower End-Point a Defined Elevation point using Shift-Right-"
-"Click and the Profile Options menu. You will see the End-Point marked by a "
-"Gold dot and a new line is added to the Profile dialog.\n"
-msgstr ""
-"Muuta ensin alempi \"laskettu\" korkeustaso \"määritellyksi\" käyttämällä "
-"jälleen ponnahdusvalikkoa. Piste merkitään nyt keltaisella täplällä ja uusi "
-"viiva lisätään profiili-ikkunaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:297
-#: ../../../../build/work/app/i18n/custmsg.h:949
-msgid "Now, drag the point on the Profile Dialog to change the Elevation.\n"
-msgstr ""
-"Raahaa nyt profiili-ikkunassa tätä pistettä muuttaaksesi sen korkeustasoa.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:950
-msgid ""
-"Note the grade on each side of the point will be displayed at the bottom of "
-"the Profile dialog.\n"
-msgstr ""
-"Nousukulmat pisteen molemmin puolin näytetään profiili-ikkunan alaosassa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:319
-#: ../../../../build/work/app/i18n/custmsg.h:952
-msgid ""
-"After we release the Profile is updated to show the new Elevation and "
-"Grade.\n"
-msgstr ""
-"Kun vapautamme hiiren painikkeen, profiili on päivitetty uuden korkeustason "
-"mukaisesti.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:326
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:119
-#: ../../../../build/work/app/i18n/custmsg.h:955
-msgid "The <Rescale> command will change the size of the selected objects.\n"
-msgstr "Mittakaavan muutos -komennolla muutetaan valittujen objektien kokoa.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:956
-msgid "First we will try rescaling by ratio.\n"
-msgstr "Ensin kokeilemme suhteellista muutosta.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:126
-#: ../../../../build/work/app/i18n/custmsg.h:958
-msgid "We are going to make everything 150% bigger.\n"
-msgstr "Suurennamme kaiken 150%:ksi entiseen verrattuna.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:136
-#: ../../../../build/work/app/i18n/custmsg.h:960
-msgid "Note the track gauge did not change.\n"
-msgstr "Huomaa ettei raideleveys muuttunut.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:143
-#: ../../../../build/work/app/i18n/custmsg.h:962
-msgid "Let's try that again.\n"
-msgstr "Kokeillaan uudestaan.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:963
-msgid "Now we are going to convert from one scale to another.\n"
-msgstr "Nyt muutamme mittakaavasta toiseen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:154
-#: ../../../../build/work/app/i18n/custmsg.h:965
-msgid "We will convert everything from N scale to HO scale...\n"
-msgstr "Muutamme kaiken N-mittakaavasta H0:ksi...\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:161
-#: ../../../../build/work/app/i18n/custmsg.h:967
-msgid "and change the track gauge as well.\n"
-msgstr "ja muutamme myös raideleveyden.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:169
-#: ../../../../build/work/app/i18n/custmsg.h:969
-msgid "Note that the Title of the turnout did not change.\n"
-msgstr "Huomaa ettei vaihteen otsikko muuttunut.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:177
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrotate.xtr:72
-#: ../../../../build/work/app/i18n/custmsg.h:972
-msgid ""
-"The <Rotate> command will pivot the Selected objects. First Click on the "
-"pivot point and then drag to Rotate the objects.\n"
-msgstr ""
-"Voit pyörittää valittuja objekteja. Klikkaa ensin haluttua kiertopistettä ja "
-"raahaa sitten pyörittääksesi objekteja.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:973
-msgid ""
-"In this example we will rotate the selected structure about it's center.\n"
-msgstr ""
-"Tässä esimerkissä pyöritämme valittua rakennusta keskipisteensä ympäri.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrotate.xtr:135
-#: ../../../../build/work/app/i18n/custmsg.h:975
-#, fuzzy
-msgid ""
-"The <Rotate> command will restrict the rotation to increments of 15° if you "
-"hold down the <Shift> and <Ctrl> keys.\n"
-msgstr ""
-"Jos pidät contol-näppäintä painettuna pyörittäminen tapahtuu 15°:n välein.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrotate.xtr:316
-#: ../../../../build/work/app/i18n/custmsg.h:977
-msgid ""
-"There are Rotate options that you can access by Shift-Right-Click command "
-"menu and choosing 'Rotate...'.\n"
-msgstr ""
-
-#: ../../../../build/work/app/i18n/custmsg.h:978
-msgid ""
-"You can rotate the selected object by a fixed rotatation (15, 30, 45, 90, "
-"180) either clockwise or counter-clockwise, or by manually entering any "
-"angle.\n"
-msgstr ""
-
-#: ../../../../build/work/app/i18n/custmsg.h:979
-msgid ""
-"The other option is 'Align' which allows you align selected objects with an "
-"unselected object. This is useful to align railside buildings with track.\n"
-msgstr ""
-
-#: ../../../../build/work/app/i18n/custmsg.h:980
-msgid "Unfortunately, we can not currently demonstrate these features.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrotate.xtr:529
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmruler.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:983
-msgid ""
-"The <Ruler> command draws a Ruler on the layout you can use to measure "
-"distances.\n"
-msgstr ""
-"Viivain-komento piirtää viivaimen, jolla voit mitata etäisyyksiä "
-"ratasuunnitelmassasi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmruler.xtr:24
-#: ../../../../build/work/app/i18n/custmsg.h:985
-msgid "If you press the <Ruler> command again the Ruler is removed.\n"
-msgstr "Jos aktivoit toiminnon uudelleen, viivain poistetaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmruler.xtr:32
-#: ../../../../build/work/app/i18n/custmsg.h:987
-msgid "But you can place it somewhere else.\n"
-msgstr "Mutta voit sijoittaa sen johonkin toiseen paikkaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmruler.xtr:42
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:173
-#: ../../../../build/work/app/i18n/custmsg.h:990
-msgid "The <Select> command is used to select tracks.\n"
-msgstr "Valitse -komentoa käytetään raiteiden valitsemiseen.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:991
-msgid "Selected tracks can be moved or rotated during the <Select> command.\n"
-msgstr ""
-"Valittuja raiteita voidaan siirtää tai pyörittää Valitse -komennon ollessa "
-"aktiivisena.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:992
-msgid "Selected tracks can also be deleted, hidden, listed and exported.\n"
-msgstr ""
-"Valitut raiteet voidaan myös poistaa, piilottaa (tunneli), luetteloida tai "
-"eksportoida (viedä tiedostoon).\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:993
-msgid ""
-"When you move the cursor near a track that could be selected, the track is "
-"drawn with think blue lines.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:184
-#: ../../../../build/work/app/i18n/custmsg.h:995
-#, fuzzy
-msgid "A Left-Click selects a track\n"
-msgstr "Yksi klikkaus hiiren vasemmalla painikkeella valitsee raiteen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:192
-#: ../../../../build/work/app/i18n/custmsg.h:997
-#, fuzzy
-msgid ""
-"The selected track will have red X's drawn where it is connected to "
-"unselected tracks. This indicates where the track will be disconnected if "
-"the selected tracks are moved, rotated or deleted.\n"
-msgstr ""
-"Kun siirrät valittuja raiteita, jotka on liitetty valitsemattomiin "
-"raiteisiin, raiteet irrotetaan toisistaan. Nämä pisteet merkitään punaisilla "
-"risteillä.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:998
-msgid "A Ctrl-Left-Click adds tracks to the selection\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:211
-#: ../../../../build/work/app/i18n/custmsg.h:1000
-#, fuzzy
-msgid "Selecting a selected track re-selects only it.\n"
-msgstr "Klikkaamalla jo valittuna olevaa raidetta, sen valinta poistuu.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:219
-#: ../../../../build/work/app/i18n/custmsg.h:1002
-#, fuzzy
-msgid "Selecting off all tracks de-selects them.\n"
-msgstr "Klikkaamalla jo valittuna olevaa raidetta, sen valinta poistuu.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:227
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:232
-#: ../../../../build/work/app/i18n/custmsg.h:1005
-msgid ""
-"To demonstrate Select Connected, first select two tracks at the end of a "
-"part to be selected \n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:248
-#: ../../../../build/work/app/i18n/custmsg.h:1007
-msgid ""
-"Shift-Left-Click on a track will select all unselected tracks connected to "
-"the track. Selection stops at a previously selected track.\n"
-msgstr ""
-"Pitämällä vaihto-näppäintä pohjassa ja klikkaamalla raidetta, valitaan "
-"kaikki tähän raiteeseen yhtyvät raiteet. Valinta pysähtyy kuitenkin "
-"ensimmäiseen jo valittuun raiteeseen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:260
-#: ../../../../build/work/app/i18n/custmsg.h:1009
-#, fuzzy
-msgid ""
-"Be careful with this because its very easy to select all tracks this way\n"
-msgstr ""
-"Ole kuitenkin varovainen, sillä näin voit helposti tulla valinneeksi kaikki "
-"raiteet.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:274
-#: ../../../../build/work/app/i18n/custmsg.h:1011
-msgid "The <esc> key will deselect all objects.\n"
-msgstr "Esc -näppäin poistaa valinnat kaikista objekteista.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:282
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:287
-#: ../../../../build/work/app/i18n/custmsg.h:1014
-msgid "Left-Drag is used to select all objects within an area.\n"
-msgstr ""
-"Raahaamalla hiiren vasemmalla painikkeella, voidaan valita kaikki alueella "
-"olevat objektit.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:295
-#: ../../../../build/work/app/i18n/custmsg.h:1016
-msgid "Shift-Left-Drag is used to move selected tracks.\n"
-msgstr ""
-"Voit siirtää valittuja objekteja pitämällä vaihto-näppäintä painettuna ja "
-"raahaamalla hiiren vasemmalla painikkeella.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1017
-msgid ""
-"When you move selected tracks that are connected to unselected tracks, the "
-"tracks will be disconnected. These points are marked by a Red cross on the "
-"layout.\n"
-msgstr ""
-"Kun siirrät valittuja raiteita, jotka on liitetty valitsemattomiin "
-"raiteisiin, raiteet irrotetaan toisistaan. Nämä pisteet merkitään punaisilla "
-"risteillä.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1018
-msgid ""
-"If the unconnected end point of a track and one being moved are close "
-"enough, two circles are displayed, showing where the tracks will be snapped "
-"together. \n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:313
-#: ../../../../build/work/app/i18n/custmsg.h:1020
-#, fuzzy
-msgid "Let's move the Main window to see what's going on next\n"
-msgstr "Lähennämme, jotta näet paremmin mitä tapahtuu.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:320
-#: ../../../../build/work/app/i18n/custmsg.h:1022
-#, fuzzy
-msgid ""
-"Ctrl-Left-Drag rotates the selected tracks about the pivot point (which is "
-"where you started the drag)\n"
-msgstr ""
-"Painamalla vaihto-näppäintä ja raahaamalla hiiren oikealla painikkeella voit "
-"pyörittää valittuja raiteita. Kiertopiste määräytyy sen mukaan, mistä "
-"raahaaminen aloitettiin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:382
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:387
-#: ../../../../build/work/app/i18n/custmsg.h:1025
-msgid ""
-"Next we select the <Join Tracks> command to demonstrate \"Move To Join\" \n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:392
-#: ../../../../build/work/app/i18n/custmsg.h:1027
-#, fuzzy
-msgid ""
-"You can use Shift-Left-Click to select an open endpoint of a selected track "
-"to join with an unselected track. \n"
-msgstr ""
-"Seuraavaksi käytämme Yhdistä-komentoa. Vaihto + hiiren vasen siirtää valitut "
-"raiteet ja liittää ne valitsemattomiin.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1028
-#, fuzzy
-msgid "We'll move the Main window again.\n"
-msgstr "Hylkäämme alemman haaran.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:415
-#: ../../../../build/work/app/i18n/custmsg.h:1030
-#, fuzzy
-msgid ""
-"You then Left-Click on an endpoint of a unselected track to move the "
-"selected tracks to join. \n"
-msgstr ""
-"Seuraavaksi käytämme Yhdistä-komentoa. Vaihto + hiiren vasen siirtää valitut "
-"raiteet ja liittää ne valitsemattomiin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:430
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:30
-#: ../../../../build/work/app/i18n/custmsg.h:1033
-msgid "The <Split> command is used to split and disconnect tracks.\n"
-msgstr "Pilko-komentoa käytetään raiteiden pilkkomiseen ja irrottamiseen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:35
-#: ../../../../build/work/app/i18n/custmsg.h:1035
-msgid "Simply select the spot on the track you want to split.\n"
-msgstr "Valitse radalta kohta, jonka haluat pilkkoa.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1036
-msgid "You cannot split turnouts (unless you hold down the Shift key).\n"
-msgstr ""
-"Palaraiteita ja vaihteita ei voi pilkkoa, ellei vaihto-näppäintä pidetä "
-"samanaikaisesti painettuna.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:48
-#: ../../../../build/work/app/i18n/custmsg.h:1038
-msgid ""
-"If you split at spot that is already an End-Point between two tracks, or "
-"split twice at the same spot, the track is disconnected.\n"
-msgstr ""
-"Jos pilkot kohdasta, joka on raiteiden liitos tai pilkot kaksi kertaa "
-"samasta kohdasta, raiteet irrotetaan toisistaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:60
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:65
-#: ../../../../build/work/app/i18n/custmsg.h:1041
-msgid "The <Tunnel> command marks selected tracks as hidden.\n"
-msgstr "Tunneli-komento merkitsee valitut raideosat piilotetuiksi.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1042
-msgid ""
-"A tunnel portal is drawn at the boundary between hidden and normal track.\n"
-msgstr ""
-"Tunnelin suuaukko piirretään piilotetun ja normaalin raideosan "
-"liitoskohtaan.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1043
-msgid ""
-"How the hidden tracks are drawn (solid, dashed or invisible) is controlled "
-"by the Draw EndPts radio button group on the Setup dialog.\n"
-msgstr ""
-"Piilotettujen raiteiden esitystapa valitaan näyttöasetuksista, kohdasta "
-"\"Piirrä tunneli\". Tunneli voidaan piirtää yhtenäisellä viivalla, "
-"katkoviivalla tai jättää kokonaan piirtämättä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:86
-#: ../../../../build/work/app/i18n/custmsg.h:1045
-msgid ""
-"To 'un-hide' a track just Select it again and click the Tunnel button.\n"
-msgstr ""
-"Palauttaaksesi tunneliksi merkityt raideosat normaaleiksi, valitse ne ja "
-"paina uudelleen tunneli-napista.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:100
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmstrtrk.xtr:6
-#: ../../../../build/work/app/i18n/custmsg.h:1048
-msgid ""
-"Straight tracks are created by selecting the first End-Point of the track.\n"
-msgstr ""
-"Suorat raiteet luodaan valitsemalla hiiren vasemmalla painikkeella raiteen "
-"ensimmäinen päätepiste.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmstrtrk.xtr:12
-#: ../../../../build/work/app/i18n/custmsg.h:1050
-msgid "Then the other End-Point is dragged to its final postion.\n"
-msgstr ""
-"Toinen päätepiste valitaan pitämällä hiiren vasen painike alhaalla ja "
-"valitsemalla oikea paikka.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmstrtrk.xtr:20
-#: ../../../../build/work/app/i18n/custmsg.h:1052
-msgid "The left mouse button is released at the final end postion.\n"
-msgstr "Hiiren vasen painike vapautetaan loppupisteessä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmstrtrk.xtr:27
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtbledg.xtr:23
-#: ../../../../build/work/app/i18n/custmsg.h:1055
-msgid ""
-"Table Edges are used to mark the edges of the layout, either for aisles or "
-"room walls.\n"
-msgstr ""
-"Pöydän reunoja käytetään kuvaamaan ratasuunnitelman reunoja, joko "
-"kulkuväyliä tai seiniä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtbledg.xtr:47
-#: ../../../../build/work/app/i18n/custmsg.h:1057
-msgid "A Table Edge is attracted to the ends of other Table Edges.\n"
-msgstr "Pyödän reunojen päät vetävät toisiaan puoleensa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtbledg.xtr:132
-#: ../../../../build/work/app/i18n/custmsg.h:1059
-msgid "Table Edges can be modified by dragging on their ends.\n"
-msgstr "Pöydän reunoje voidaan muokara raahaamalla niiden päistä.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtbledg.xtr:180
-#: ../../../../build/work/app/i18n/custmsg.h:1061
-msgid ""
-"If you hold down the Control key while dragging then the Table Edge will be "
-"attracted to other objects.\n"
-msgstr ""
-"Jos pidät control-näppäintä painettuna raahatessasi, pöydän reuna ja muut "
-"objektit vetävät toisiaan puoleensa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtbledg.xtr:218
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtodes.xtr:6
-#: ../../../../build/work/app/i18n/custmsg.h:1064
-msgid ""
-"These examples shows some of the various Turnout Designer windows. Each "
-"window defines a different type of turnout.\n"
-msgstr ""
-"Tässä esimerkissä näytetään joitakin monista vaihteiden ja raideosien "
-"suunnitteluikkunoista. Kussakin ikkunassa määritellään eri tyyppinen "
-"vaihde.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1065
-msgid ""
-"In each window there are a number of parameters to fill in and one or two "
-"description lines.\n"
-msgstr ""
-"Jokaisessa ikkunassa on useita parametrikenttiä sekä yksi tai kaksi riviä "
-"kuvausta varten.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1066
-msgid "You can print the design to check the dimensions before saving them.\n"
-msgstr ""
-"Voit tulostaa suunnittelemasi vaihteen tarkastaaksesi sen mitat ennen "
-"tallentamista.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtodes.xtr:16
-#: ../../../../build/work/app/i18n/custmsg.h:1068
-msgid "This is the regular turnout.\n"
-msgstr "Tämä on tavallinen vaihde.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1069
-msgid ""
-"In addition to the dimensions, you also enter the Title (Manufacturer, "
-"Description and Part Number). For Turnouts with Left and Right hand "
-"versions there are separate Descriptions and Part Numbers.\n"
-msgstr ""
-"Mittatietojen lisäksi voit syöttää otsikon (valmistaja, kuvaus ja "
-"tuotenumero). Vaihteille, joilla on vasen ja oikea versio, on molempia "
-"versioita varten omat kentät kuvausta ja tuotenumeroa varten.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1070
-msgid ""
-"Some Turnouts and Sectional track are pre-mounted on roadbed. For these "
-"parts you can specify the width of the roadbed, the thickness of the lines "
-"drawn for the edge of the roadbed and the color.\n"
-msgstr ""
-"Joihinkin raideosiin kuuluu kiinteä ratapenkka. Näitä osia varten voit "
-"määrittää ratapenkan leveyden, reunaviivan paksuuden sekä reunaviivan "
-"värin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtodes.xtr:30
-#: ../../../../build/work/app/i18n/custmsg.h:1072
-msgid "The double slip switch is described by only a few parameters.\n"
-msgstr ""
-"Kaksipuolinen risteysvaihde määritellään vain muutamalla parametrilla.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtodes.xtr:40
-#: ../../../../build/work/app/i18n/custmsg.h:1074
-msgid "The double crossover only needs length and track separation.\n"
-msgstr ""
-"Sovitettu raideristeys tarvitsee ainoastaan pituuden ja raiteiden välisen "
-"etäisyyden.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtodes.xtr:48
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:30
-#: ../../../../build/work/app/i18n/custmsg.h:1077
-msgid ""
-"Pressing the turnout button displays the Turnout Selection window to let you "
-"choose a turnout to place.\n"
-msgstr ""
-"\"Lisää|Palaraide\" valikosta tai vastaava painike työkaluriviltä avaa "
-"palaraiteiden valinta ikkunan, josta voit valita valmiita raideosia "
-"liitettäväksi ratasuunnitelmaasi.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1078
-msgid ""
-"Note that once you start to place the turnout on the Main window the Turnout "
-"Selection window disappears. This feature is enabled by the Hide toggle "
-"button on the dialog.\n"
-msgstr ""
-"Huomaa, että kun aloitat raideosan paikoilleen asettelun pääikkunassa, "
-"valintaikkuna katoaa. Tämä voidaan myös estää poistamalla ruksi valinnasta "
-"\"Piilota\".\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:38
-#: ../../../../build/work/app/i18n/custmsg.h:1080
-msgid ""
-"You can place the turnout on a arbitrary position on the layout. Left-drag "
-"the turnout into place...\n"
-msgstr ""
-"Aseta palaraide ratasuunnitelmaasi klikkaamalla. Raahaa se sitten hiiren "
-"vasemmalla painikkeella paikoilleen...\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:85
-#: ../../../../build/work/app/i18n/custmsg.h:1082
-msgid "Then you can rotate the turnout by Right dragging.\n"
-msgstr "Voit myös pyörittää sitä raahaamalla hiiren oikealla painikkeella.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1083
-msgid ""
-"You can also use Shift-Right-Click to display a popup menu that lets you "
-"rotate the Turnout by specific angles.\n"
-msgstr ""
-"Vaihto + hiiren oikea avaa ponnahdusvalikon, josta voit pyörittää raideosaa "
-"tietyn kulman verran.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:136
-#: ../../../../build/work/app/i18n/custmsg.h:1085
-msgid ""
-"When you are satisfied with the position and orientation of the turnout "
-"press Space bar or the Return key on the keyboard to finish placing the "
-"turnout.\n"
-msgstr ""
-"Kun olet tyytyväinen raideosan asetteluun, paina Välilyönti tai Return "
-"viimeistelläksesi raideosan asettelun.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1086
-#, fuzzy
-msgid ""
-"Pressing the Close button on the Turnout dialog will end the <Turnout> "
-"command as well as placing the turnout.\n"
-msgstr ""
-"\"Sulje\" painike valintaikkunassa viimeistelee raideosan asettelun ja "
-"lopettaa toiminnon.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:146
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:189
-#: ../../../../build/work/app/i18n/custmsg.h:1089
-msgid ""
-"If you drag along an existing track the new turnout will be attached to the "
-"track.\n"
-msgstr ""
-"Jos raahaat vaihdetta olemassa olevaa raidetta pitkin, uusi vaihde liitetään "
-"raiteeseen.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1090
-msgid ""
-"Note that the status line tells you the number of End-Points that would be "
-"connected and, the maximum displacement of the End-Points. This will be "
-"useful when building complex track, as we will see later.\n"
-msgstr ""
-"Huomaa, että tilarivillä kerrotaan kuinka monta päätepistettä ollaan "
-"liittämässä, sekä suurin päätepisteiden siirtymä. Tämä auttaa rakentamaan "
-"monimutkaisia ratoja, kuten myöhemmin näemme.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:220
-#: ../../../../build/work/app/i18n/custmsg.h:1092
-#, fuzzy
-msgid ""
-"By moving the cursor from one side to the other of the track centerline you "
-"can flip the turnout 180ᅵ.\n"
-msgstr ""
-"Siirtämällä hiiren osoitinta radan keskilinjan puolelta toiselle, voit "
-"kääntää vaihdetta 180°.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:236
-#: ../../../../build/work/app/i18n/custmsg.h:1094
-msgid ""
-"If you try to drag across another turnout the new turnout will placed at the "
-"nearest End-Point of the existing turnout.\n"
-msgstr ""
-"Jos yrität raahata toisen vaihteen päälle, uusi vaihde asetetaan olemassa "
-"olevan vaihteen lähimmän päätepisteen kohdalle.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:299
-#: ../../../../build/work/app/i18n/custmsg.h:1096
-msgid ""
-"When you press Space or Return while the turnout is on a track, the track "
-"will be split and the new turnout attached automatically.\n"
-msgstr ""
-"Vaihteen ollessa olemassa olevan radan päällä, rata pilkotaan ja uusi vaihde "
-"liitetään automaattisesti.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:307
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:366
-#: ../../../../build/work/app/i18n/custmsg.h:1099
-msgid "Pressing Close ends the <Turnout> command.\n"
-msgstr "Sulje-painike peruuttaa palaraiteiden asettelun.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:372
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:21
-#: ../../../../build/work/app/i18n/custmsg.h:1102
-msgid "Sometimes it's useful to modify turnouts triming one of the ends.\n"
-msgstr ""
-"Joskus on tarpeen muokata vaihteita säätämällä jonkin raiteen pituutta.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1103
-msgid "We use the <Split> command for this.\n"
-msgstr "Käytämme Pilko-komentoa tähän tarkoitukseen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:28
-#: ../../../../build/work/app/i18n/custmsg.h:1105
-msgid "Normally, if we try to Split a turnout we get an error message.\n"
-msgstr ""
-"Normaalisti, jos vaihdetta tai palaraidetta yritetään pilkkoa, saadaan "
-"virheilmoitus.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:37
-#: ../../../../build/work/app/i18n/custmsg.h:1107
-msgid "Hold down the Shift key and try again.\n"
-msgstr "Pidä vaihto-näppäi painettuna ja yritä uudelleen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:52
-#: ../../../../build/work/app/i18n/custmsg.h:1109
-msgid ""
-"The end of the turnout has been replaced by a piece of straight flex track "
-"which we can modify.\n"
-msgstr ""
-"Vaihteen pää korvattiin pätkällä suoraa fleksiraidetta, jota voi muokata "
-"normaalisti.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:1111
-msgid "We can try splitting the diverging leg.\n"
-msgstr "Voimme yrittää pikkoa haarautuvan raiteen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:74
-#: ../../../../build/work/app/i18n/custmsg.h:1113
-msgid ""
-"Notice that the tail of the diverging leg has been changed to a curved "
-"track...\n"
-msgstr "Huomaa, että haarautuva raide on muutettu kaarteeksi...\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:84
-#: ../../../../build/work/app/i18n/custmsg.h:1115
-msgid "and a straight track.\n"
-msgstr "ja suoraksi raideosaksi.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:92
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:12
-#: ../../../../build/work/app/i18n/custmsg.h:1118
-msgid ""
-"This example show how to layout a yard using the <Turnout> and <Parallel> "
-"commands.\n"
-msgstr ""
-"Tässä esimerkissä näytetään ratapihan luominen käyttäen \"Palaraide\" ja "
-"\"Rinnakkainen raide\" komentoja.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:17
-#: ../../../../build/work/app/i18n/custmsg.h:1120
-msgid ""
-"You can resize and move the Turnout Selection dialog if it obscures the "
-"other windows.\n"
-msgstr ""
-"Voit pienentää tai siirtää raideosien valintaikkunaa, jos se peittää muita "
-"ikkunoita.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1121
-#, fuzzy
-msgid "First we place a turnout on the main line.\n"
-msgstr "Asetetaan ensin vaihde pääradalle.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:35
-#: ../../../../build/work/app/i18n/custmsg.h:1123
-msgid "Next extend the turnout with the <Modify> command.\n"
-msgstr "Seuraavaksi jatketaan vaihdetta \"Muokkaa\" komennolla.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:46
-#: ../../../../build/work/app/i18n/custmsg.h:1125
-#, fuzzy
-msgid ""
-"Now create a track parallel to the main line. Make sure the separation is "
-"reasonable for your scale.\n"
-msgstr ""
-"Luo sitten pääradalle rinnakkainen raide. Varmista, että raideväli on "
-"mittakaavallesi sopiva.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:62
-#: ../../../../build/work/app/i18n/custmsg.h:1127
-msgid "And place a turnout to connect the new track.\n"
-msgstr "Ja aseta vaihde liittääksesi uuden raiteen.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1128
-msgid "We'll zoom in here to see what's going on.\n"
-msgstr "Lähennämme, jotta näet paremmin mitä tapahtuu.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:78
-#: ../../../../build/work/app/i18n/custmsg.h:1130
-msgid ""
-"Notice how we control which way the turnout is facing by moving the mouse "
-"across the center line of the track.\n"
-msgstr ""
-"Huomaa kuinka kontrolloimme vaihteen suuntaa siirtämällä hiiren osoitinta "
-"raiteen keskilinjan yli.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:94
-#: ../../../../build/work/app/i18n/custmsg.h:1132
-msgid ""
-"The Status bar displays the number of auto-connections that will be made and "
-"the maximum offset.\n"
-msgstr ""
-"Tilarivillä näytetään automaattisten liitosten lukumäärä, sekä suurin "
-"päätepisteen siirtymä.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1133
-msgid ""
-"XTrackCAD adjusts the turnout position for the best fit to minimize any "
-"connection offset\n"
-msgstr ""
-"XTrackCAD sijoittelee vaihteen siten, että se istuu parhaiten ja siirtymät "
-"ovat mahdollisimman pienet.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:106
-#: ../../../../build/work/app/i18n/custmsg.h:1135
-msgid "Note that placing the turnout splits the parallel track.\n"
-msgstr "Huomaa, kuinka vaihteen asettaminen pilkkoi rinnakkaisen raiteen.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1136
-msgid "We have to delete the leftover piece by Selecting and Deleting it.\n"
-msgstr "Pilkkomisesta yli jäänyt raideosa täytyy poistaa.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:120
-#: ../../../../build/work/app/i18n/custmsg.h:1138
-msgid "Repeat the process for the other tracks in the yard.\n"
-msgstr "Toista prosessi ratapihan muille raiteille.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:149
-#: ../../../../build/work/app/i18n/custmsg.h:1140
-msgid "For the last track we will join with a curve instead of a turnout.\n"
-msgstr "Viimeinen raide yhdistetään kaarteella vaihteen sijaan.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:185
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrkwid.xtr:91
-#: ../../../../build/work/app/i18n/custmsg.h:1143
-msgid "We can indicate the mainline by making the rails wider.\n"
-msgstr "Voimme kuvata päärataa paksummalla raiteella.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1144
-msgid "First we select the mainline tracks...\n"
-msgstr "Ensin valitaan pääradan raiteet...\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrkwid.xtr:128
-#: ../../../../build/work/app/i18n/custmsg.h:1146
-msgid "And then select Medium Tracks from the Edit menu.\n"
-msgstr "Valitse sitten keskikokoiset raiteet Muokkaa-valikosta.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1147
-msgid "We can't show the Edit menu, but we can show the effect.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrkwid.xtr:137
-#: ../../../../build/work/app/i18n/custmsg.h:1149
-msgid "We can make the rail thicker by selecting Thick Tracks.\n"
-msgstr "Tai paksut raiteet.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrkwid.xtr:148
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrntab.xtr:6
-#: ../../../../build/work/app/i18n/custmsg.h:1152
-msgid ""
-"Turntables are created by specifying the radius in a dialog box on the "
-"Status Bar. The radius in the dialog can be changed before proceeding.\n"
-msgstr ""
-"Kääntöpöydät luodaan määrittelemällä ensiksi kääntöpöydän säde tilarivillä "
-"olevaan tekstikenttään.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrntab.xtr:15
-#: ../../../../build/work/app/i18n/custmsg.h:1154
-msgid "Then the turntable is dragged to its final location.\n"
-msgstr "Sitten kääntöpöytä raahataan paikoilleen.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrntab.xtr:22
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:317
-#: ../../../../build/work/app/i18n/custmsg.h:1157
-msgid "Introduction"
-msgstr "Johdanto"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:318
-#: ../../../../build/work/app/i18n/custmsg.h:1159
-msgid "Mouse Actions"
-msgstr "Hiiren toiminnot"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:319
-#: ../../../../build/work/app/i18n/custmsg.h:1161
-msgid "Dialogs"
-msgstr "Dialogit (ikkunat)"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:320
-#: ../../../../build/work/app/i18n/custmsg.h:1163
-msgid "Moving about"
-msgstr "Liikkuminen"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:321
-#: ../../../../build/work/app/i18n/custmsg.h:1165
-msgid "Describe and Select"
-msgstr "Määrittele ja valitse -toiminnot"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:322
-#: ../../../../build/work/app/i18n/custmsg.h:1167
-#, fuzzy
-msgid "Describe"
-msgstr "Kuvaus"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:324
-#: ../../../../build/work/app/i18n/custmsg.h:1171
-msgid "Simple tracks"
-msgstr "Yksinkertaiset raideosat"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:325
-#: ../../../../build/work/app/i18n/custmsg.h:1173
-msgid "Straight tracks"
-msgstr "Suorat raiteet"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:326
-#: ../../../../build/work/app/i18n/custmsg.h:1175
-msgid "Curved tracks"
-msgstr "Kaarevat raiteet"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:327
-#: ../../../../build/work/app/i18n/custmsg.h:1177
-msgid "Circles"
-msgstr "Ympyrät"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:328
-#: ../../../../build/work/app/i18n/custmsg.h:1179
-msgid "Turntables"
-msgstr "Kääntöpöydät"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:329
-#: ../../../../build/work/app/i18n/custmsg.h:1181
-msgid "Modifying tracks"
-msgstr "Raiteiden muokkaaminen"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:330
-#: ../../../../build/work/app/i18n/custmsg.h:1183
-msgid "Modifying end points "
-msgstr "Päätepisteiden muokkaaminen"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:331
-#: ../../../../build/work/app/i18n/custmsg.h:1185
-msgid "Extending"
-msgstr "Pidentäminen"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:332
-#: ../../../../build/work/app/i18n/custmsg.h:1187
-msgid "Medium and Thick Tracks"
-msgstr "Keskipaksut ja paksut raiteet"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:333
-#: ../../../../build/work/app/i18n/custmsg.h:1189
-msgid "Joining Tracks"
-msgstr "Raiteiden yhdistäminen"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:334
-#: ../../../../build/work/app/i18n/custmsg.h:1191
-msgid "Straight to straight"
-msgstr "Suora - suora"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:335
-#: ../../../../build/work/app/i18n/custmsg.h:1193
-msgid "Curve to straight"
-msgstr "Kaareva - suora"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:336
-#: ../../../../build/work/app/i18n/custmsg.h:1195
-msgid "Circle to circle"
-msgstr "Ympyrä - ympyrä"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:337
-#: ../../../../build/work/app/i18n/custmsg.h:1197
-msgid "Joining to turntables"
-msgstr "Yhdistäminen kääntöpäytään"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:338
-#: ../../../../build/work/app/i18n/custmsg.h:1199
-msgid "Easements"
-msgstr "Kaarreloivennukset"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:339
-#: ../../../../build/work/app/i18n/custmsg.h:1201
-msgid "Abutting tracks"
-msgstr "Vastakkaiset raideosat"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:340
-#: ../../../../build/work/app/i18n/custmsg.h:1203
-msgid "Move to Join"
-msgstr "Siirrä yhdistääksesi"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:342
-#: ../../../../build/work/app/i18n/custmsg.h:1207
-msgid "Select and Placement"
-msgstr "Valinta ja asettelu"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:343
-#: ../../../../build/work/app/i18n/custmsg.h:1209
-msgid "Building a yard throat."
-msgstr "Vaihdekujan luominen"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:344
-#: ../../../../build/work/app/i18n/custmsg.h:1211
-msgid "Designing turnouts"
-msgstr "Raideosien suunnittelu"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:345
-#: ../../../../build/work/app/i18n/custmsg.h:1213
-msgid "Group and Ungroup"
-msgstr "Ryhmittely ja ryhmittelyn purku"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:346
-#: ../../../../build/work/app/i18n/custmsg.h:1215
-msgid "Triming Turnout Ends"
-msgstr "Vaihteen päiden säätö"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:347
-#: ../../../../build/work/app/i18n/custmsg.h:1217
-msgid "Handlaid Turnouts"
-msgstr "Käsin asetellut vaihteet"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:348
-#: ../../../../build/work/app/i18n/custmsg.h:1219
-msgid "Elevations and Profile"
-msgstr "Korkeustasot ja profiili"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:349
-#: ../../../../build/work/app/i18n/custmsg.h:1221
-msgid "Elevations"
-msgstr "Korkeustasot"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:351
-#: ../../../../build/work/app/i18n/custmsg.h:1225
-msgid "Misc track commands"
-msgstr "Muita raidekomentoja"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:352
-#: ../../../../build/work/app/i18n/custmsg.h:1227
-msgid "Delete and Undo"
-msgstr "Poista ja kumoa"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:353
-#: ../../../../build/work/app/i18n/custmsg.h:1229
-msgid "Splitting and Tunnels"
-msgstr "Pilkkominen ja tunnelit"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:355
-#: ../../../../build/work/app/i18n/custmsg.h:1233
-msgid "Helix tracks"
-msgstr "Helix raiteet (kierrenousu)"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:356
-#: ../../../../build/work/app/i18n/custmsg.h:1235
-msgid "Exception Tracks"
-msgstr "Erityisraiteet"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:358
-#: ../../../../build/work/app/i18n/custmsg.h:1239
-msgid "Connect and Tighten - a siding"
-msgstr "Liittäminen ja tiukennus - sivuraide"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:359
-#: ../../../../build/work/app/i18n/custmsg.h:1241
-msgid "Connect and Tighten - figure-8"
-msgstr "Liittäminen ja tiukennus - kahdeksikko"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:360
-#: ../../../../build/work/app/i18n/custmsg.h:1243
-msgid "Other commands"
-msgstr "Muut komennot"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:362
-#: ../../../../build/work/app/i18n/custmsg.h:1247
-msgid "Table Edges"
-msgstr "Pöydän reunat"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:364
-#: ../../../../build/work/app/i18n/custmsg.h:1251
-msgid "Dimension Lines"
-msgstr "Mittajanat"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:365
-#: ../../../../build/work/app/i18n/custmsg.h:1253
-msgid "Lines"
-msgstr "Viivat"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:366
-#: ../../../../build/work/app/i18n/custmsg.h:1255
-msgid "Poly-Shapes"
-msgstr "Monikulmiot"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:367
-#: ../../../../build/work/app/i18n/custmsg.h:1257
-msgid "Modifying Poly-Shapes"
-msgstr "Monikulmioiden muokkaaminen"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:370
-#: ../../../../build/work/app/i18n/custmsg.h:1263
-#, fuzzy
-msgid "Control Panels"
-msgstr "Ohjauspaneelit"
-
-#~ msgid "Radius=%s Angle=%0.3f"
-#~ msgstr "Säde=%s Kulma=%0.3f"
-
-#~ msgid "Length=%s Angle=%0.3f"
-#~ msgstr "Pituus=%s Kulma=%0.3f"
-
-#~ msgid "There are no reachable Defined Elevations"
-#~ msgstr "Ei määriteltyjä korkeustasoja saatavilla"
-
-#~ msgid "Elev = %s"
-#~ msgstr "Korkeus = %s"
-
-#~ msgid "Dist = %s"
-#~ msgstr "Etäisyys = %s"
-
-#~ msgid "Select track to modify"
-#~ msgstr "Valitse muokattava raide"
-
-#~ msgid "Drag to create new track segment"
-#~ msgstr "Raahaa luodaksesi uuden raiteen"
-
-#~ msgid "Note: "
-#~ msgstr "Muistiinpano: "
-
-#~ msgid "# End Pt"
-#~ msgstr "Päätepisteitä"
-
-#~ msgid "Print Registration Marks"
-#~ msgstr "Tulosta kohdistusmerkinnät"
-
-#~ msgid "Print Snap Grid"
-#~ msgstr "Tulosta kohdistusruudukko"
-
-#~ msgid "Print Rulers"
-#~ msgstr "Tulosta viivaimet"
-
-#~ msgid "1 page"
-#~ msgstr "1 sivu"
-
-#~ msgid "Connect Sectional Tracks"
-#~ msgstr "Liitä palaraiteet"
-
-#~ msgid "Draw moving track normally"
-#~ msgstr "Piirrä liikuteltavat raiteet normaalisti"
-
-#~ msgid "Draw moving track simply"
-#~ msgstr "Piirrä liikuteltavat raiteet yksinkertaistetuna"
-
-#~ msgid "Draw moving track as end-points"
-#~ msgstr "Piirrä liikuteltavat raiteet päätepisteinä"
-
-#~ msgid "Drag to move selected tracks"
-#~ msgstr "Siirrä valitut raideosat raahaamalla"
-
-#~ msgid " Angle %0.3f"
-#~ msgstr " Kulma %0.3f"
-
-#~ msgid "Simple"
-#~ msgstr "Yksinkertainen"
-
-#~ msgid "End Points"
-#~ msgstr "Päätepisteet"
-
-#~ msgid "Tunnel"
-#~ msgstr "Tunneli"
-
-#~ msgid "TURNOUT "
-#~ msgstr "PALARAIDE "
-
-#~ msgid "%s Files|*.xtc"
-#~ msgstr "%s tiedostot|*.xtc"
-
-#~ msgid "Bitmap files|*.xpm"
-#~ msgstr "Bitmap kuvatiedostot|*.xpm"
-
-#~ msgid "Color Layers"
-#~ msgstr "Väritys tason mukaan"
-
-#~ msgid "End-Points"
-#~ msgstr "Päätepisteet"
-
-#~ msgid "Draw Moving Tracks"
-#~ msgstr "Piirrä liikuteltavat raiteet"
-
-#~ msgid "Unload"
-#~ msgstr "Poista"
-
-#~ msgid "Commands"
-#~ msgstr "Komennot"
-
-#~ msgid "SnapGrid Enable"
-#~ msgstr "Käytä kohdistusruudukkoa"
-
-#~ msgid "A&bove"
-#~ msgstr "Päällimmäiseksi"
-
-#~ msgid "Belo&w"
-#~ msgstr "Alimmaiseksi"
-
-#, fuzzy
-#~ msgid "End Angle 2"
-#~ msgstr "Syötä kulma ..."
-
-#, fuzzy
-#~ msgid "Elev 1"
-#~ msgstr "Korkeus = %0.1f"
-
-#, fuzzy
-#~ msgid "End Radius Center 1: X"
-#~ msgstr "Päätepiste 1: X"
-
-#, fuzzy
-#~ msgid "Elev 2"
-#~ msgstr "Korkeus = %s"
-
-#, fuzzy
-#~ msgid "End Radius Center 2: X"
-#~ msgstr "Päätepiste 2: X"
-
-#~ msgid "General note about the layout"
-#~ msgstr "Ratasuunnitelman muistiinpanoja"
-
-#~ msgid "How to draw track being moved/rotated"
-#~ msgstr "Raiteiden piirtotapa liikuteltaessa tai pyöritettäessä"
-
-#~ msgid ""
-#~ "The length of the straight track is determined by the distance from the "
-#~ "far End-Point and the cursor.\n"
-#~ msgstr ""
-#~ "Suoran raiteen pituus määräytyy päätepisteen ja osoittimen välisen "
-#~ "etäisyyden mukaan.\n"
-
-#~ msgid "First turn off the Snap Grid.\n"
-#~ msgstr "Ota ensin kohdistusruudukko pois käytöstä.\n"
-
-#~ msgid "Rotate the signals and move them to the proper locations.\n"
-#~ msgstr "Pyöritä opastimia ja siirrä ne paikoilleen.\n"
-
-#~ msgid "Rotate the arrow head by 180° and move into position.\n"
-#~ msgstr "Pyöritä nuolenkärkeä 180° ja siirrä se paikoilleen.\n"
-
-#~ msgid ""
-#~ "Now the cursor is about to be moved past the other (far) End-Point of the "
-#~ "straight track. You will receive a warning and the connecting track "
-#~ "turns Red.\n"
-#~ msgstr ""
-#~ "Nyt osoitin siirretään suoran raiteen kauemman päätepisteen ohi. Tästä "
-#~ "varoitetaan tilarivillä ja yhdysraide muuttuu punaiseksi.\n"
-
-#~ msgid ""
-#~ "Drawing lines with the Shift key held down will use the previous line End-"
-#~ "Point as the starting position. This makes it easy to draw connected "
-#~ "lines.\n"
-#~ msgstr ""
-#~ "Jos vaihto-näppäin pidetään painettuna, seuraavan viivan piirto "
-#~ "aloitetaan edellisen viivan loppupäästä. Näin voidaan helposti piirtää "
-#~ "yhdistettyjä viivoja.\n"
-
-#~ msgid ""
-#~ "If you drag a Corner to another Corner the two are merged and the Edge "
-#~ "between them is removed.\n"
-#~ msgstr ""
-#~ "Jos raahaat kulman toisen kulman päälle, ne yhdistetään yhdeksi "
-#~ "kulmapisteeksi.\n"
-
-#~ msgid ""
-#~ "Shift-Right-Click will display a popup-menu that you can use to rotate by "
-#~ "fixed amount (15°, 30°, 45°, 90° or 180°). The demonstration cannot show "
-#~ "the popup-menu but it can show the effects.\n"
-#~ msgstr ""
-#~ "Vaihto + oikea klikkaus avaa ponnahdusvalikon, josta voi pyörittää "
-#~ "määrätyn kulman verran (15°, 30°, 45°, 90° or 180°). Demossa ei voida "
-#~ "näyttää ponnahdusvalikkoa, mutta näytämme toiminnon vaikutuksen.\n"
-
-#~ msgid "Here we will rotate by 90° clockwise (CW).\n"
-#~ msgstr "Pyöritämme 90° myötäpäivään (MP).\n"
-
-#~ msgid ""
-#~ "Another option of the <Rotate> command popup-menu is to Align the "
-#~ "Selected object with some other object.\n"
-#~ msgstr ""
-#~ "Toinen vaihtoehto ponnahdusvalikossa on suunnata valittu objekti jonkin "
-#~ "toisen objektin mukaisesti.\n"
-
-#~ msgid ""
-#~ "First we will click on one line of the Selected object. The angle of "
-#~ "this part of the object will be Aligned.\n"
-#~ msgstr ""
-#~ "Ensin klikkaamme valitun objektin jotakin viivaa. Objekti suunnataan "
-#~ "tämän viivan avulla.\n"
-
-#~ msgid ""
-#~ "Next, we click on an Unselected object. The Selected structure will be "
-#~ "rotated so that the line we clicked on will be parallel to the straight "
-#~ "track.\n"
-#~ msgstr ""
-#~ "Seuraavaksi klikataan valitsematonta objektia. Valittu rakennus "
-#~ "käännetään siten, että valittu viiva on saman suuntainen suoran radan "
-#~ "kanssa.\n"
-
-#~ msgid ""
-#~ "If we drag the mouse across the track, we can flip the structure by "
-#~ "180°. This is similar to how we place turnouts.\n"
-#~ msgstr ""
-#~ "Jos raahaamme hiirellä radan puolelta toiselle, rakennus peilataan 180°. "
-#~ "Samalla tavalla kuin vaihteiden asettelussa.\n"
-
-#~ msgid ""
-#~ "We can also align to curved shapes. The Selected object will be rotated "
-#~ "to be parallel to the curve under the cursor.\n"
-#~ msgstr ""
-#~ "Voimme myös suunnata kaarevien muotojen mukaisesti. Valittua objektia "
-#~ "pyöritetään siten, että se on yhdensuuntainen hiiren osoittimen alla "
-#~ "olevan kaaren mukaisesti.\n"
-
-#~ msgid ""
-#~ "As we drag along the curved track the Selected object rotates to follow "
-#~ "the curve.\n"
-#~ msgstr ""
-#~ "Raahaamalla kaarretta pitkin, valittua objektia pyöritetään vastaavalla "
-#~ "tavalla.\n"
-
-#~ msgid "Again, if we drag across the track we can flip the stucture.\n"
-#~ msgstr ""
-#~ "Rakennus voidaan jälleen peilata raahaamalla raiteen puolelta toiselle.\n"
-
-#~ msgid "We can also Align to another Structure or any object.\n"
-#~ msgstr ""
-#~ "Voimme myös suunnata jonkin toisen rakennuksen tai minkä tahansa objektin "
-#~ "mukaan.\n"
-
-#~ msgid "And Right-Drag de-selects all tracks within an area.\n"
-#~ msgstr ""
-#~ "Raahaaminen hiiren oikealla painikkeella puolestaan poistaa alueella "
-#~ "olevien kohteiden valinnat.\n"
-
-#~ msgid ""
-#~ "Drawing the tracks while moving can be very time-consuming. We had just "
-#~ "used the \"Normal\" method of drawing tracks.\n"
-#~ msgstr ""
-#~ "Raiteita siirrettäessä niiden piirto voi olla hyvinkin aikaa vievää. "
-#~ "Tässä on käytetty reiteiden piirron asetusta \"normaali\".\n"
-
-#~ msgid ""
-#~ "The Command Options dialog (from the Options menu) contains a Radio "
-#~ "button group which you can use to pick the drawing method.\n"
-#~ msgstr ""
-#~ "Komentojen asetuksista (Asetukset|Komennot) voit valita raiteiden "
-#~ "piirtotavan.\n"
-
-#~ msgid ""
-#~ "You can also popup the Command Options Menu by pressing Shift-Right-Click "
-#~ "which includes options for setting the drawing method. These options are "
-#~ "also available for the Move and Rotate Command Options Menu.\n"
-#~ msgstr ""
-#~ "Piirtotavan voi valita myös painamalla vaihto-näppäintä ja klikkaamalla "
-#~ "hiiren oikealla painikkeella, jolloin avautuu komennon ponnahdusvalikko. "
-#~ "Piirtotavan valinta on saatavilla Siirrä ja Pyöritä komentojen "
-#~ "ponnahdusvalikoissa.\n"
-
-#~ msgid ""
-#~ "The next method is \"Simple\" draws. Here tracks are drawn using one "
-#~ "line, no End-Points are drawn, lines are not drawn and structures are "
-#~ "drawn using a box outline.\n"
-#~ msgstr ""
-#~ "Seuraava piirtotapa on \"Yksinkertainen\", jolloin raiteet piirretään "
-#~ "yhdellä viivalla, ilman päätepisteiden merkintää. Viivoja ei piirretä ja "
-#~ "rakennukset piirretään yksinkertaisina nelikulmioina.\n"
-
-#~ msgid ""
-#~ "Note: you can move the Command Options dialog if it obscures the main "
-#~ "window.\n"
-#~ msgstr ""
-#~ "Huom: Voit siirtää Komentojen asetukset -ikkunaa, jos se peittää "
-#~ "pääikkunaa oleellisesti.\n"
-
-#~ msgid ""
-#~ "The next method is to just draw the End-Points of the selected tracks.\n"
-#~ msgstr ""
-#~ "Seuraava tapa on piirtää ainoastaan valittujen raiteiden päätepisteet.\n"
-
-#~ msgid ""
-#~ "Unconnected End-Points are indicated by Red crosses, and connected End-"
-#~ "Points are indicated by Red lines.\n"
-#~ msgstr ""
-#~ "Irralliset päätepisteet merkitään punaisilla risteillä ja liitetyt "
-#~ "punaisilla viivoilla.\n"
-
-#~ msgid "Now we will go back to using the Normal method again.\n"
-#~ msgstr "Nyt palautetaan normaali piirtotapa.\n"
-
-#~ msgid ""
-#~ "Note: because of differing display resolutions the next mouse click may "
-#~ "not be positioned correctly in this demo and the Move-To-Join operation "
-#~ "may not be demonstrated.\n"
-#~ msgstr ""
-#~ "Huom: Johtuen erilaisista näytön resoluutioista seuraava hiiren klikkaus "
-#~ "voi olla virheellisesti kohdistettu tässä demossa, jolloin \"siirrä "
-#~ "yhdistääksesi\" operaation esitys ei toimi oikein.\n"
-
-#~ msgid ""
-#~ "A number of example layouts are provided. These files are located in the "
-#~ "'examples' directory where you installed XTrackCAD. The \"File|Open\" "
-#~ "command will open that directory when first used."
-#~ msgstr ""
-#~ "Tarjolla on useita esimerkkejä ratasuunnitelmista. Nämä tiedostot "
-#~ "sijaitsevat 'examples' hakemistossa sen hakemiston alla, johon XTrackCAD "
-#~ "on asennettu. \"Tiedosto|Avaa\" näyttää tämän hakemiston ensimmäisellä "
-#~ "käyttökerralla."
-
-#~ msgid ""
-#~ " exists\n"
-#~ "Do you want to overwrite it?"
-#~ msgstr ""
-#~ " on olemassa.\n"
-#~ "Haluatko korvata olemassa olevan tiedoston?"
-
-#~ msgid "%s exists"
-#~ msgstr "%s on olemassa"
-
-#~ msgid ": cannot open"
-#~ msgstr ": ei voida avata"
-
-#~ msgid "Abort Print"
-#~ msgstr "Keskeytä tulostus"
-
-#~ msgid "Add Margin"
-#~ msgstr "Lisää marginaali"
-
-#~ msgid "Angle=%0.3f"
-#~ msgstr "Kulma=%0.3f"
-
-#~ msgid "Beige"
-#~ msgstr "Beige"
-
-#~ msgid "Black"
-#~ msgstr "Musta"
-
-#~ msgid "Blue"
-#~ msgstr "Sininen"
-
-#~ msgid "Brown"
-#~ msgstr "Ruskea"
-
-#~ msgid "Can not save New Margin definition"
-#~ msgstr "Uuden marginaalin määrittelyjen tallennus ei onnistu"
-
-#~ msgid "Can not save New Printer definition"
-#~ msgstr "Uuden tulostimen määrittelyjen tallennus ei onnistu"
-
-#~ msgid ""
-#~ "Can't find standard San-Serif font.\n"
-#~ "Please choose a font"
-#~ msgstr ""
-#~ "San-Serif kirjasinta ei löydy.\n"
-#~ "Ole hyvä ja valitse kirjasin"
-
-#~ msgid ""
-#~ "Can't find standard Serif font.\n"
-#~ "Please choose a font"
-#~ msgstr ""
-#~ "Serif kirjasinta ei löydy.\n"
-#~ "Ole hyvä ja valitse kirjasin"
-
-#~ msgid "Chocolate"
-#~ msgstr "Suklaa"
-
-#~ msgid "Command: "
-#~ msgstr "Komento: "
-
-#~ msgid "Creating %s"
-#~ msgstr "Luodaan %s"
-
-#~ msgid "Custom Update"
-#~ msgstr "Omat raideosat ja kalusto"
-
-#~ msgid "Dark Blue"
-#~ msgstr "Tummansininen"
-
-#~ msgid "Dark Gray"
-#~ msgstr "Tummanharmaa"
-
-#~ msgid "Dark Green"
-#~ msgstr "Tummanvihreä"
-
-#~ msgid "Dark Red"
-#~ msgstr "Tummanpunainen"
-
-#~ msgid "Describe objects"
-#~ msgstr "Määrittele objekteja"
-
-#~ msgid "Draw"
-#~ msgstr "Piirto"
-
-#~ msgid "Enter a post-script font name for:"
-#~ msgstr "Syötä post-script kirjasimen nimi:"
-
-#~ msgid "Enter both printer name and command"
-#~ msgstr "Syötä tulostimen nimi ja komento"
-
-#~ msgid "Enter printer name"
-#~ msgstr "Syötä tulostimen nimi"
-
-#~ msgid "Factor"
-#~ msgstr "Kerroin"
-
-#~ msgid "File Name? "
-#~ msgstr "Tiedostonimi?"
-
-#~ msgid "Font Alias"
-#~ msgstr "Kirjasinalias"
-
-#~ msgid "Forest Green"
-#~ msgstr "Metsän vihreä"
-
-#~ msgid "Format"
-#~ msgstr "Muotoilu"
-
-#~ msgid "Gray"
-#~ msgstr "Harmaa"
-
-#~ msgid "Green"
-#~ msgstr "Vihreä"
-
-#~ msgid "Lawn Green"
-#~ msgstr "Ruohonvihreä"
-
-#~ msgid "Light Gray"
-#~ msgstr "Vaaleanharmaa"
-
-#~ msgid "Live"
-#~ msgstr "Seuraa"
-
-#~ msgid "Name: "
-#~ msgstr "Nimi: "
-
-#~ msgid "No file name specified"
-#~ msgstr "Tiedostonimeä ei ole annettu"
-
-#~ msgid "No fonts"
-#~ msgstr "Ei kirjasimia"
-
-#~ msgid "Now printing"
-#~ msgstr "Tulostetaan"
-
-#~ msgid "Now printing %s"
-#~ msgstr "Tulostetaan %s"
-
-#~ msgid "Orange"
-#~ msgstr "Oranssi"
-
-#~ msgid "Overwrite"
-#~ msgstr "Kirjoita päälle"
-
-#~ msgid "PS Font"
-#~ msgstr "PS kirjasin"
-
-#~ msgid "Page %d"
-#~ msgstr "Sivu %d"
-
-#~ msgid "Page 1"
-#~ msgstr "Sivu 1"
-
-#~ msgid "Paper Size"
-#~ msgstr "Paperin koko"
-
-#~ msgid "Pink"
-#~ msgstr "Vaaleanpunainen"
-
-#~ msgid "Place circle center"
-#~ msgstr "Aseta ympyrän keskipiste"
-
-#~ msgid "Print Test Page"
-#~ msgstr "Tulosta testisivu"
-
-#~ msgid "Print To File"
-#~ msgstr "Tulosta tiedostoon"
-
-#~ msgid "Print to file ..."
-#~ msgstr "Tulosta tiedostoon..."
-
-#~ msgid "Printer"
-#~ msgstr "Tulostin"
-
-#~ msgid "Printing"
-#~ msgstr "Tulostetaan"
-
-#~ msgid "Purple"
-#~ msgstr "Purppura"
-
-#~ msgid "Red"
-#~ msgstr "Punainen"
-
-#~ msgid "Tan"
-#~ msgstr "Keltaisenruskea"
-
-#~ msgid "Tomato"
-#~ msgstr "Tomaatti"
-
-#~ msgid "Tracks with grades steeper than this are exceptional"
-#~ msgstr "Raiteet, joissa on jyrkempi nousukulma, käsitetään erityiraiteiksi"
-
-#~ msgid "Tracks with tighter radius than this are exceptional"
-#~ msgstr "Raiteet, joissa on pienempi kaarresäde, käsitetään erityiraiteiksi"
-
-#~ msgid "Violet"
-#~ msgstr "Violetti"
-
-#~ msgid "X Font"
-#~ msgstr "X kirjasin"
-
-#~ msgid "XTrackCAD Help"
-#~ msgstr "XTrackCAD ohje"
-
-#~ msgid "Yellow"
-#~ msgstr "Keltainen"
-
-#~ msgid "load last layout"
-#~ msgstr "Lataa edellinen ratasuunnitelma"
-
-#~ msgid "start with blank layout"
-#~ msgstr "Uusi ratasuunnitelma"
-
-#~ msgid " DXF Files|*.dxf"
-#~ msgstr " DXF tiedostot|*.dxf"
-
-#~ msgid "%s Font"
-#~ msgstr "%s kirjasin"
-
-#~ msgid ""
-#~ "%s has been corrupted\n"
-#~ "Please see reinstall your software or contact the Vendor."
-#~ msgstr ""
-#~ "%s on korruptoitunut\n"
-#~ "Asenna ohjelmisto uudelleen tai ota yhteyttä ohjelman toimittajaan."
-
-#~ msgid ""
-#~ "<html><head><meta http-equiv=\"content-type\" content=\"text/html; "
-#~ "charset=US-ASCII\"><title>Help Error</title><body><h1>Error - help "
-#~ "information can not be found.</h1><p>The help information you requested "
-#~ "cannot be found on this system.<br>Usually this is an installation "
-#~ "problem, Make sure that XTrkCad and the included HTML files are installed "
-#~ "properly and can be found via the XTRKCADLIB environment variable. Also "
-#~ "make sure that the user has sufficient access rights to read these files."
-#~ "</p></body></html>"
-#~ msgstr ""
-#~ "<html><head><meta http-equiv=\"content-type\" content=\"text/html; "
-#~ "charset=US-ASCII\"><title>Ohjeen virhe</title><body><h1>Virhe - Ohjeen "
-#~ "tietoja ei löydy.</h1><p>Pyytämääsi ohjetta ei löydy järjestelmästä."
-#~ "<br>Yleensä tämä johtuu asennusvirheestä. Varmista, että XTrkCad ja sen "
-#~ "mukana tulevat HTML-tiedostot on asennettu oikein ja että HTML-tiedostot "
-#~ "löytyvät XTRKCADLIB ympäristömuuttujan osoittamasta hakemistosta. "
-#~ "Varmista myös, että käyttäjällä on lukuoikeus näihin tiedostoihin.</p></"
-#~ "body></html>"
-
-#~ msgid ""
-#~ "All descriptions specified in the turnout designer must\n"
-#~ "be non-blank. Please enter missing values and try again."
-#~ msgstr ""
-#~ "Kaikki kentät raideosan suunnittelussa ovat pakollisia.\n"
-#~ "Syötä puuttuvat arvot ja kokeile uudelleen."
-
-#~ msgid ""
-#~ "Bumper tracks (tracks with 1 End-Point) are not supported with the Group "
-#~ "command. \n"
-#~ "The track has been unselected."
-#~ msgstr ""
-#~ "Ryhmittely komento ei tue puskinraideosia (raideosia joissa on vain yksi "
-#~ "pää).\n"
-#~ "Raideosan valinta on poistettu."
-
-#~ msgid "Can't get app dir"
-#~ msgstr "Sovellushakemiston haku ei onnistunut"
-
-#, fuzzy
-#~ msgid "Car Item"
-#~ msgstr "Tuote"
-
-#~ msgid "Copyright (c) 2007 Sillub Technology and XTrkCad Team"
-#~ msgstr "Copyright (c) 2007 Sillub Technology ja XTrkCad Team"
-
-#, fuzzy
-#~ msgid "ItemEnter"
-#~ msgstr "Tuote"
-
-#, fuzzy
-#~ msgid "ItemSel"
-#~ msgstr "Tuote"
-
-#~ msgid "MSG_MOVE_POINTS_OTHER_SIDE\tMove points to other side of frog"
-#~ msgstr ""
-#~ "MSG_MOVE_POINTS_OTHER_SIDE\tSiirrä kielten päät risteyskappaleen toiselle "
-#~ "puolelle"
-
-#~ msgid ""
-#~ "MSG_PRINT_SCALE_1\tThe Print Scale cannot be 1 in unregistered version of "
-#~ "XTrkCad\tThe Print Scale cannot be 1 in unregistered version of %s"
-#~ msgstr ""
-#~ "MSG_PRINT_SCALE_1\tTulostusmittakaava ei voi olla 1 XTrkCad:n "
-#~ "rekisteröimättömässä versiossa\tTulostusmittakaava ei voi olla 1 %s:n "
-#~ "rekisteröimättömässä versiossa"
-
-#~ msgid ""
-#~ "MSG_SAVE_CHANGES\tYour changes will be lost....\tYour changes will be "
-#~ "lost.\n"
-#~ "Do you want to save?"
-#~ msgstr ""
-#~ "MSG_SAVE_CHANGES\tTekemäsi muutokset menetetään...\tTekemäsi muutokset "
-#~ "menetetään.\n"
-#~ "Haluatko tallentaa?"
-
-#~ msgid "MSG_SEL_TRK_FROZEN\tSome Selected tracks are frozen"
-#~ msgstr "MSG_SEL_TRK_FROZEN\tJotkut valituista raiteista on jäädytetty"
-
-#~ msgid ""
-#~ "MSG_TOO_FAR_APART_DIVERGE\tTracks are too far apart or diverge too much"
-#~ msgstr ""
-#~ "MSG_TOO_FAR_APART_DIVERGE\tRaiteet ovat liian kaukana toisistaan tai "
-#~ "niiden välinen kulma on liian suuri"
-
-#, fuzzy
-#~ msgid "No %s are available"
-#~ msgstr "Vinkkejä ei ole saatavilla"
-
-#, fuzzy
-#~ msgid "No help found for %s"
-#~ msgstr "Ei ohjetta aiheesta %s"
-
-#, fuzzy
-#~ msgid "PartnoEnter"
-#~ msgstr "Tulostin"
-
-#, fuzzy
-#~ msgid "PartnoSel"
-#~ msgstr "Tuotekoodi"
-
-#~ msgid "Print Grid Rotate"
-#~ msgstr "Tulostusruudukon pyöritys"
-
-#~ msgid "Profile Mode"
-#~ msgstr "Profiili tila"
-
-#, fuzzy
-#~ msgid "ProtoEnter"
-#~ msgstr "Esikuva"
-
-#, fuzzy
-#~ msgid "ProtoSel"
-#~ msgstr "Esikuva"
-
-#~ msgid ""
-#~ "Rescaled tracks do not fit on the layout.\n"
-#~ "You should increase the layout size to at least %s by %s."
-#~ msgstr ""
-#~ "Uudelleen skaalatut raiteet eivät mahdu ratasuunnitelmaan.\n"
-#~ "Suunnitelman koko pitäisi kasvattaa vähintään %s x %s:ksi."
-
-#, fuzzy
-#~ msgid ""
-#~ "Right-Drag on the Map window sets the origin and scale of the Main window."
-#~ msgstr ""
-#~ "Hiiren oikealla painikkeella raahaaminen puolestaan muuttaa näytettävän "
-#~ "alueen skaalausta (kokoa).\n"
-
-#~ msgid "Snap Grid Rotate"
-#~ msgstr "Käännä kohdistusruudukkoa"
-
-#, fuzzy
-#~ msgid ""
-#~ "Straight tracks are created by selecting the first End-Point of the "
-#~ "track.);"
-#~ msgstr ""
-#~ "Suorat raiteet luodaan valitsemalla hiiren vasemmalla painikkeella "
-#~ "raiteen ensimmäinen päätepiste."
-
-#, fuzzy
-#~ msgid "The left mouse button is released at the final end postion.);"
-#~ msgstr "Hiiren vasen painike vapautetaan loppupisteessä."
-
-#~ msgid ""
-#~ "The unregistered version of this program is restricted to less than 50 "
-#~ "tracks and cars."
-#~ msgstr ""
-#~ "Ohjelman rekisteröimätön versio on rajoitettu alle 50:n raideosaan ja "
-#~ "vaunuun/veturiin."
-
-#, fuzzy
-#~ msgid "Then the other End-Point is dragged to its final postion.);"
-#~ msgstr ""
-#~ "Toinen päätepiste valitaan pitämällä hiiren vasen painike alhaalla ja "
-#~ "valitsemalla oikea paikka."
-
-#~ msgid ""
-#~ "There is nothing to Paste,\n"
-#~ "try Copy first."
-#~ msgstr ""
-#~ "Ei ole mitään liitettävää,\n"
-#~ "kopioi ensin."
-
-#~ msgid ""
-#~ "This Car has no Part Number\n"
-#~ "%s\n"
-#~ "Do you want to continue with the other Cars?"
-#~ msgstr ""
-#~ "Vaunulla/veturilla ei ole tuotekoodia\n"
-#~ "%s\n"
-#~ "Haluatko jatkaa muihin vaunuihin/vetureihin?"
-
-#, fuzzy
-#~ msgid "Track is too short by N.NNN"
-#~ msgstr "Yhdysraide on %0.3f liian lyhyt"
-
-#~ msgid "Turnout Rotate"
-#~ msgstr "Pyöritä raideosaa"
-
-#, fuzzy
-#~ msgid "You can draw tracks with wider lines for rails. "
-#~ msgstr "Piirrä raiteet ohuilla viivoilla"
-
-#~ msgid ""
-#~ "You can not change the position of a Turnout or Turntable while it is "
-#~ "spanned by a Train."
-#~ msgstr ""
-#~ "Vaihteen tai kääntöpöydän asentoa ei voi muuttaa junan ollessa päällä."
-
-#~ msgid ""
-#~ "You have chosen a large font which may a take a long time.\n"
-#~ "Do you wish to continue?"
-#~ msgstr ""
-#~ "Olet valinnut suuren kirjasinkoon joka saattaa kestää kauan.\n"
-#~ "Haluatko jatkaa?"
+# Finnish translations for xtrkcad package.
+# Copyright (C) 2007 Mikko Nissinen
+# This file is distributed under the same license as the xtrkcad package.
+# Mikko Nissinen <mni77@users.sourceforge.net>, 2007.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xtrkcad 4.1.0b1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-12-27 10:09+0100\n"
+"PO-Revision-Date: 2023-12-27 10:58+0100\n"
+"Last-Translator: Martin Fischer <m_fischer@users.sf.net>\n"
+"Language-Team: Finnish <mni77@users.sourceforge.net>\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 3.4\n"
+
+#: ../bin/archive.c:154 ../bin/archive.c:161 ../bin/archive.c:190
+#: ../bin/archive.c:215 ../bin/archive.c:270 ../bin/archive.c:284
+#: ../bin/archive.c:294 ../bin/archive.c:348 ../bin/archive.c:384
+#: ../bin/archive.c:400 ../bin/archive.c:410 ../bin/archive.c:433
+#: ../bin/cblock.c:505 ../bin/cswitchmotor.c:500 ../bin/dbench.c:147
+#: ../bin/dbitmap.c:427 ../bin/dcar.c:4894 ../bin/dcar.c:5093
+#: ../bin/dcar.c:5103 ../bin/dcar.c:5150 ../bin/dcar.c:5158 ../bin/dcar.c:5176
+#: ../bin/dcar.c:5191 ../bin/dcar.c:5196 ../bin/dcar.c:5225 ../bin/dcar.c:5395
+#: ../bin/directory.c:44 ../bin/directory.c:79 ../bin/directory.c:86
+#: ../bin/directory.c:117 ../bin/directory.c:133 ../bin/dxfoutput.c:205
+#: ../bin/fileio.c:224 ../bin/fileio.c:677 ../bin/fileio.c:835
+#: ../bin/fileio.c:897 ../bin/fileio.c:1022 ../bin/fileio.c:1091
+#: ../bin/fileio.c:1097 ../bin/fileio.c:1189 ../bin/fileio.c:1202
+#: ../bin/fileio.c:1631 ../bin/fileio.c:1680 ../bin/fileio.c:1733
+#: ../bin/macro.c:166 ../bin/macro.c:855 ../bin/macro.c:1010
+#: ../bin/macro.c:1029 ../bin/macro.c:1329 ../bin/param.c:2402
+#: ../bin/paramfile.c:258 ../bin/paramfilelist.c:458 ../bin/track.c:1104
+#: ../bin/track.c:1344 ../bin/track.c:1366 ../bin/track.c:1785
+#: ../bin/track.c:1990 ../bin/track.c:2000 ../bin/track.c:2005
+#: ../bin/track.c:2020 ../bin/track.c:2047 ../bin/track.c:2105
+msgid "Continue"
+msgstr "Jatka"
+
+#: ../bin/cbezier.c:631
+#, fuzzy
+msgid "Select End-Point - Ctrl unlocks end-point"
+msgstr "Valitse ensimmäinen yhdistettävä päätepiste"
+
+#: ../bin/cbezier.c:633
+msgid "Select End-Point"
+msgstr "Valitse päätepiste"
+
+#: ../bin/cbezier.c:666
+msgid "Not close enough to any valid, selectable point, reselect"
+msgstr ""
+
+#: ../bin/cbezier.c:672
+#, c-format
+msgid "Drag point %d to new location and release it"
+msgstr ""
+
+#: ../bin/cbezier.c:682 ../bin/cbezier.c:785 ../bin/cbezier.c:788
+msgid "Pick any circle to adjust it - Enter to confirm, ESC to abort"
+msgstr ""
+
+#: ../bin/cbezier.c:707
+msgid "Bezier Curve Invalid has identical end points Change End Point"
+msgstr ""
+
+#: ../bin/cbezier.c:711
+#, c-format
+msgid "Bezier Curve Invalid has %s Change End Point"
+msgstr ""
+
+#: ../bin/cbezier.c:715
+msgid "Bezier Curve Invalid has three co-incident points"
+msgstr ""
+
+#: ../bin/cbezier.c:718
+#, fuzzy
+msgid "Bezier is Straight Line"
+msgstr "Suora viiva"
+
+#: ../bin/cbezier.c:721
+#, c-format
+msgid "Bezier %s : Min Radius=%s Length=%s fx=%0.3f fy=%0.3f cusp=%0.3f"
+msgstr ""
+
+#: ../bin/cbezier.c:726
+#, fuzzy, c-format
+msgid "Bezier %s : Min Radius=%s Length=%s"
+msgstr "Kaareva raideosa: Säde=%s Pituus=%s"
+
+#: ../bin/cbezier.c:752
+#, fuzzy
+msgid "No unconnected End Point to lock to"
+msgstr "Valitse toinen yhdistettävä päätepiste"
+
+#: ../bin/cbezier.c:772
+msgid "Bezier curve invalid has identical end points Change End Point"
+msgstr ""
+
+#: ../bin/cbezier.c:776
+#, c-format
+msgid "Bezier curve invalid has %s Change End Point"
+msgstr ""
+
+#: ../bin/cbezier.c:780
+msgid "Bezier curve invalid has three co-incident points"
+msgstr ""
+
+#: ../bin/cbezier.c:783
+#, fuzzy
+msgid "Bezier curve is straight line"
+msgstr "Luo suora viiva"
+
+#: ../bin/cbezier.c:799 ../bin/cbezier.c:813
+msgid "Invalid Bezier Track - end points are identical"
+msgstr ""
+
+#: ../bin/cbezier.c:806
+#, c-format
+msgid "Invalid Bezier Curve has a %s - Adjust"
+msgstr ""
+
+#: ../bin/cbezier.c:810
+msgid "Invalid Bezier Curve has three coincident points - Adjust"
+msgstr ""
+
+#: ../bin/cbezier.c:818
+#, fuzzy
+msgid "Create Bezier"
+msgstr "Luo viivoja"
+
+#: ../bin/cbezier.c:900
+#, fuzzy, c-format
+msgid "%s picked - now select a Point"
+msgstr "Valitsemattoman raideosan päätepiste"
+
+#: ../bin/cbezier.c:939 ../bin/ccornu.c:2085
+msgid "No changes made"
+msgstr ""
+
+#: ../bin/cbezier.c:943
+#, fuzzy
+msgid "Modify Bezier"
+msgstr "Muokkaa raidetta"
+
+#: ../bin/cbezier.c:957
+#, fuzzy
+msgid "Modify Bezier Complete"
+msgstr "Muokkaa raidetta"
+
+#: ../bin/cbezier.c:961
+msgid "Modify Bezier Cancelled"
+msgstr ""
+
+#: ../bin/cbezier.c:1089 ../bin/cbezier.c:1189
+#, fuzzy, c-format
+msgid "Place 1st endpoint of Bezier - snap to %s"
+msgstr "Aseta suoran raiteen 1. päätepiste"
+
+#: ../bin/cbezier.c:1109 ../bin/ccornu.c:2444 ../bin/ccurve.c:205
+#: ../bin/cstraigh.c:92
+msgid "Track is different gauge"
+msgstr ""
+
+#: ../bin/cbezier.c:1131
+msgid "Drag end of first control arm"
+msgstr ""
+
+#: ../bin/cbezier.c:1139
+msgid "Drag end of second control arm"
+msgstr ""
+
+#: ../bin/cbezier.c:1194 ../bin/cbezier.c:1236
+#, fuzzy, c-format
+msgid "Select other end of Bezier - snap to %s end"
+msgstr "Aseta suoran raiteen 1. päätepiste"
+
+#: ../bin/cbezier.c:1231
+msgid "Control Arm 1 is too short, try again"
+msgstr ""
+
+#: ../bin/cblock.c:110 ../bin/cblock.c:122 ../bin/cblock.c:169
+#: ../bin/ccontrol.c:168 ../bin/ccontrol.c:425 ../bin/compound.c:745
+#: ../bin/csensor.c:160 ../bin/csensor.c:389 ../bin/csignal.c:236
+#: ../bin/csignal.c:499 ../bin/csignal.c:510 ../bin/csignal.c:536
+#: ../bin/cswitchmotor.c:89 ../bin/cswitchmotor.c:108 ../bin/cswitchmotor.c:228
+#: ../bin/dcontmgm.c:79 ../bin/dlayer.c:543
+msgid "Name"
+msgstr "Nimi"
+
+#: ../bin/cblock.c:111 ../bin/cblock.c:123 ../bin/cblock.c:170
+#: ../bin/csensor.c:162 ../bin/csensor.c:395 ../bin/csignal.c:499
+#: ../bin/csignal.c:538
+msgid "Script"
+msgstr ""
+
+#: ../bin/cblock.c:124
+#, fuzzy
+msgid "Segments"
+msgstr "Lohkoja"
+
+#: ../bin/cblock.c:171 ../bin/cdraw.c:560 ../bin/cdraw.c:1573
+#: ../bin/cdraw.c:1720 ../bin/cdraw.c:2843 ../bin/cdraw.c:3070
+#: ../bin/cdraw.c:3109 ../bin/ctodesgn.c:177 ../bin/ctodesgn.c:178
+#: ../bin/ctodesgn.c:179 ../bin/ctodesgn.c:180 ../bin/ctodesgn.c:192
+#: ../bin/ctodesgn.c:193 ../bin/ctodesgn.c:242 ../bin/ctodesgn.c:245
+#: ../bin/ctodesgn.c:268 ../bin/ctodesgn.c:273 ../bin/ctodesgn.c:314
+#: ../bin/ctodesgn.c:321 ../bin/ctodesgn.c:323 ../bin/ctodesgn.c:348
+#: ../bin/ctodesgn.c:353 ../bin/ctodesgn.c:393 ../bin/ctodesgn.c:400
+#: ../bin/ctodesgn.c:401 ../bin/ctodesgn.c:426 ../bin/ctodesgn.c:429
+#: ../bin/ctodesgn.c:432 ../bin/ctodesgn.c:475 ../bin/ctodesgn.c:479
+#: ../bin/ctodesgn.c:486 ../bin/ctodesgn.c:487 ../bin/ctodesgn.c:488
+#: ../bin/ctodesgn.c:514 ../bin/ctodesgn.c:516 ../bin/ctodesgn.c:538
+#: ../bin/ctodesgn.c:540 ../bin/ctodesgn.c:563 ../bin/ctodesgn.c:565
+#: ../bin/ctodesgn.c:599 ../bin/ctodesgn.c:625 ../bin/ctodesgn.c:650
+#: ../bin/ctodesgn.c:674 ../bin/ctodesgn.c:720 ../bin/ctodesgn.c:743
+#: ../bin/ctodesgn.c:744 ../bin/ctrain.c:182 ../bin/tbezier.c:296
+#: ../bin/tcornu.c:332 ../bin/tcurve.c:404 ../bin/tstraigh.c:91
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:186
+msgid "Length"
+msgstr "Pituus"
+
+#: ../bin/cblock.c:172 ../bin/cdraw.c:551 ../bin/compound.c:720
+#: ../bin/tbezier.c:283 ../bin/tcornu.c:319 ../bin/tcurve.c:396
+#: ../bin/tease.c:524 ../bin/tstraigh.c:87
+#, fuzzy
+msgid "End Pt 1: X,Y"
+msgstr "Päätepiste 1: X"
+
+#: ../bin/cblock.c:173 ../bin/cdraw.c:552 ../bin/compound.c:725
+#: ../bin/tbezier.c:290 ../bin/tcornu.c:324 ../bin/tcurve.c:398
+#: ../bin/tease.c:526 ../bin/tstraigh.c:89
+#, fuzzy
+msgid "End Pt 2: X,Y"
+msgstr "Päätepiste 2: X"
+
+#: ../bin/cblock.c:198 ../bin/cblock.c:210 ../bin/cblock.c:592
+#: ../bin/cblock.c:613 ../bin/cblock.c:621 ../bin/cblock.c:693
+#: ../bin/cblock.c:814 ../bin/cblock.c:826 ../bin/cblock.c:864
+#: ../bin/ccontrol.c:203 ../bin/ccontrol.c:216 ../bin/ccontrol.c:228
+#: ../bin/ccontrol.c:489 ../bin/cdraw.c:125 ../bin/cdraw.c:2903
+#: ../bin/cgroup.c:1156 ../bin/cgroup.c:1260 ../bin/cgroup.c:1267
+#: ../bin/cgroup.c:1320 ../bin/cgroup.c:1343 ../bin/cgroup.c:1437
+#: ../bin/cgroup.c:1642 ../bin/cgroup.c:1867 ../bin/cnote.c:67
+#: ../bin/compound.c:785 ../bin/compound.c:801 ../bin/compound.c:835
+#: ../bin/cprint.c:746 ../bin/cprint.c:1312 ../bin/cprint.c:1445
+#: ../bin/cpull.c:531 ../bin/cpull.c:546 ../bin/cpull.c:548 ../bin/cpull.c:550
+#: ../bin/cpull.c:721 ../bin/cselect.c:2029 ../bin/csensor.c:192
+#: ../bin/csensor.c:204 ../bin/csensor.c:446 ../bin/csnap.c:591
+#: ../bin/csnap.c:733 ../bin/csignal.c:266 ../bin/csignal.c:678
+#: ../bin/csignal.c:748 ../bin/cstruct.c:1041 ../bin/cstruct.c:1180
+#: ../bin/cswitchmotor.c:257 ../bin/cswitchmotor.c:269
+#: ../bin/cswitchmotor.c:281 ../bin/cswitchmotor.c:293
+#: ../bin/cswitchmotor.c:570 ../bin/cswitchmotor.c:608
+#: ../bin/cswitchmotor.c:746 ../bin/cswitchmotor.c:777 ../bin/ctext.c:172
+#: ../bin/ctodesgn.c:211 ../bin/ctodesgn.c:1309 ../bin/ctodesgn.c:2138
+#: ../bin/ctodesgn.c:2255 ../bin/ctodesgn.c:2578 ../bin/ctrain.c:205
+#: ../bin/cturnout.c:2973 ../bin/cturnout.c:3123 ../bin/cundo.c:260
+#: ../bin/cundo.c:266 ../bin/dbitmap.c:157 ../bin/dbitmap.c:232
+#: ../bin/dbitmap.c:473 ../bin/dcar.c:4125 ../bin/dcar.c:4297
+#: ../bin/dcar.c:4302 ../bin/dcar.c:4306 ../bin/dcar.c:4312 ../bin/dcar.c:4662
+#: ../bin/dcar.c:4778 ../bin/dcar.c:5215 ../bin/dcmpnd.c:419
+#: ../bin/dcmpnd.c:435 ../bin/dcmpnd.c:582 ../bin/dcustmgm.c:219
+#: ../bin/dcustmgm.c:226 ../bin/dcustmgm.c:236 ../bin/dcustmgm.c:261
+#: ../bin/dease.c:251 ../bin/dlayer.c:336 ../bin/dlayer.c:373
+#: ../bin/dlayer.c:842 ../bin/dlayer.c:1392 ../bin/dlayer.c:1398
+#: ../bin/dlayer.c:1404 ../bin/doption.c:202 ../bin/doption.c:287
+#: ../bin/doption.c:497 ../bin/doption.c:500 ../bin/doption.c:504
+#: ../bin/doption.c:516 ../bin/doption.c:591 ../bin/dprmfile.c:431
+#: ../bin/draw.c:2986 ../bin/fileio.c:180 ../bin/fileio.c:595
+#: ../bin/fileio.c:727 ../bin/fileio.c:730 ../bin/fileio.c:736
+#: ../bin/fileio.c:806 ../bin/fileio.c:1044 ../bin/layout.c:553
+#: ../bin/layout.c:819 ../bin/layout.c:994 ../bin/macro.c:1133
+#: ../bin/macro.c:1138 ../bin/macro.c:1216 ../bin/macro.c:1294
+#: ../bin/macro.c:1542 ../bin/macro.c:1563 ../bin/menu.c:272 ../bin/menu.c:283
+#: ../bin/menu.c:294 ../bin/menu.c:459 ../bin/menu.c:497 ../bin/menu.c:607
+#: ../bin/misc.c:491 ../bin/misc.c:1054 ../bin/misc.c:1063 ../bin/misc.c:1083
+#: ../bin/misc.c:1089 ../bin/misc.c:1274 ../bin/param.c:787 ../bin/param.c:2132
+#: ../bin/param.c:2274 ../bin/param.c:2278 ../bin/param.c:2410
+#: ../bin/param.c:2418 ../bin/paramfile.c:336 ../bin/paramfile.c:339
+#: ../bin/paramfile.c:345 ../bin/paramfile.c:371 ../bin/paramfile.c:400
+#: ../bin/paramfile.c:406 ../bin/paramfilelist.c:131 ../bin/paramfilelist.c:183
+#: ../bin/paramfilelist.c:236 ../bin/scale.c:305 ../bin/scale.c:948
+#: ../bin/scale.c:1084 ../bin/tease.c:1167 ../bin/track.c:1801
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:677
+msgid "Ok"
+msgstr "Ok"
+
+#: ../bin/cblock.c:215
+#, fuzzy
+msgid "Change block"
+msgstr "Muuta raiteita"
+
+#: ../bin/cblock.c:269 ../bin/cswitchmotor.c:352
+#, fuzzy, c-format
+msgid "(%d): Layer=%u %s"
+msgstr "(%d): Taso=%d %s"
+
+#: ../bin/cblock.c:293 ../bin/cblock.c:1027
+msgid "Block"
+msgstr ""
+
+#: ../bin/cblock.c:504
+#, c-format
+msgid "resolveBlockTrack: T%d[%d]: T%d doesn't exist"
+msgstr ""
+
+#: ../bin/cblock.c:592 ../bin/cblock.c:826
+msgid "Block must have a name!"
+msgstr ""
+
+#: ../bin/cblock.c:621
+msgid "Block is discontiguous!"
+msgstr ""
+
+#: ../bin/cblock.c:626
+#, fuzzy
+msgid "Create block"
+msgstr "Luo nelikulmio"
+
+#: ../bin/cblock.c:674
+#, fuzzy
+msgid "Non track object skipped!"
+msgstr "Yhtään raidetta ei irroitettu"
+
+#: ../bin/cblock.c:678
+msgid "Selected track is already in a block, skipped!"
+msgstr ""
+
+#: ../bin/cblock.c:692
+#, fuzzy
+msgid "Create Block"
+msgstr "Luo helix raide"
+
+#: ../bin/cblock.c:722 ../bin/cblock.c:754
+#, fuzzy
+msgid "Select a track"
+msgstr "Valitse raideosat"
+
+#: ../bin/cblock.c:731 ../bin/cblock.c:762
+msgid "Not a block!"
+msgstr ""
+
+#: ../bin/cblock.c:767
+#, c-format
+msgid "Really delete block %s?"
+msgstr ""
+
+#: ../bin/cblock.c:767 ../bin/ccornu.c:2952 ../bin/ccornu.c:3176
+#: ../bin/cdraw.c:130 ../bin/cgroup.c:1162 ../bin/command.c:390
+#: ../bin/command.c:397 ../bin/command.c:458 ../bin/cpull.c:673
+#: ../bin/csignal.c:725 ../bin/cswitchmotor.c:700 ../bin/ctodesgn.c:2891
+#: ../bin/ctodesgn.c:3505 ../bin/ctrain.c:2606 ../bin/dcar.c:4245
+#: ../bin/dcar.c:4343 ../bin/dcar.c:4433 ../bin/dcar.c:4459 ../bin/dcar.c:4843
+#: ../bin/dcar.c:5284 ../bin/dcustmgm.c:162 ../bin/dcontmgm.c:167
+#: ../bin/track.c:1803 ../bin/track.c:1905 ../bin/track.c:1923
+msgid "Yes"
+msgstr "Kyllä"
+
+#: ../bin/cblock.c:767 ../bin/ccornu.c:2953 ../bin/ccornu.c:3177
+#: ../bin/cdraw.c:130 ../bin/cgroup.c:1162 ../bin/command.c:390
+#: ../bin/command.c:397 ../bin/command.c:458 ../bin/cpull.c:674
+#: ../bin/csignal.c:725 ../bin/cswitchmotor.c:700 ../bin/ctodesgn.c:2891
+#: ../bin/ctodesgn.c:3505 ../bin/ctrain.c:2606 ../bin/dcar.c:4245
+#: ../bin/dcar.c:4343 ../bin/dcar.c:4433 ../bin/dcar.c:4459 ../bin/dcar.c:4843
+#: ../bin/dcar.c:5284 ../bin/dcustmgm.c:162 ../bin/dcontmgm.c:168
+#: ../bin/track.c:1803 ../bin/track.c:1905 ../bin/track.c:1923
+msgid "No"
+msgstr "Ei"
+
+#: ../bin/cblock.c:769
+#, fuzzy
+msgid "Delete Block"
+msgstr "Poista raiteita"
+
+#: ../bin/cblock.c:814
+#, fuzzy, c-format
+msgid "Deleting block %s"
+msgstr "Poista raiteita"
+
+#: ../bin/cblock.c:830
+#, fuzzy
+msgid "Modify Block"
+msgstr "Muokkaa raidetta"
+
+#: ../bin/cblock.c:863
+msgid "Edit block"
+msgstr ""
+
+#: ../bin/cblock.c:869
+#, c-format
+msgid "Edit block %d"
+msgstr ""
+
+#: ../bin/ccornu.c:193 ../bin/ccornu.c:196 ../bin/ccornu.c:199
+#: ../bin/ccornu.c:253
+#, fuzzy, c-format
+msgid "%s FlexTrack"
+msgstr "Fleksi"
+
+#: ../bin/ccornu.c:247
+msgid " FLEX "
+msgstr ""
+
+#: ../bin/ccornu.c:964 ../bin/cjoin.c:1063 ../bin/cmisc.c:55
+msgid "First"
+msgstr "Ensimmäinen"
+
+#: ../bin/ccornu.c:971 ../bin/cjoin.c:1071
+msgid "Second"
+msgstr "Toinen"
+
+#: ../bin/ccornu.c:1047 ../bin/ccornu.c:2141 ../bin/ccornu.c:2172
+#: ../bin/tcornu.c:877 ../bin/tcornu.c:1387
+#, c-format
+msgid ""
+"Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] "
+"c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"
+msgstr ""
+
+#: ../bin/ccornu.c:1084 ../bin/ccornu.c:1757 ../bin/ccornu.c:1778
+#: ../bin/tbezier.c:284 ../bin/tbezier.c:291 ../bin/tcornu.c:320
+#: ../bin/tcornu.c:325 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:178
+#, fuzzy
+msgid "End Angle"
+msgstr "Syötä kulma ..."
+
+#: ../bin/ccornu.c:1087 ../bin/ccornu.c:1756 ../bin/ccornu.c:1777
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:179
+#, fuzzy
+msgid "End Radius"
+msgstr "Säde"
+
+#: ../bin/ccornu.c:1142
+#, fuzzy
+msgid "Select Point, or Add Point"
+msgstr "Valitse päätepiste"
+
+#: ../bin/ccornu.c:1330
+msgid "Not close enough to track or point, reselect"
+msgstr ""
+
+#: ../bin/ccornu.c:1336
+#, fuzzy
+msgid "Drag out end of Cornu"
+msgstr "Vedä jänne päätepisteiden välille"
+
+#: ../bin/ccornu.c:1338
+#, fuzzy
+msgid "Drag along end of track"
+msgstr "Vedä luodaksesi lähtevän raiteen"
+
+#: ../bin/ccornu.c:1340
+#, fuzzy
+msgid "Drag to move"
+msgstr "Raahaa pyörittääksesi"
+
+#: ../bin/ccornu.c:1344
+msgid "Drag point to new location, Delete to remove"
+msgstr ""
+
+#: ../bin/ccornu.c:1348
+#, fuzzy
+msgid "Drag to change end radius"
+msgstr "Aseta säde raahaamalla"
+
+#: ../bin/ccornu.c:1351
+#, fuzzy
+msgid "Drag to change end angle"
+msgstr "Muuta korkeutta raahaamalla"
+
+#: ../bin/ccornu.c:1368
+msgid "Pick any circle to adjust or add - Enter to accept, Esc to cancel"
+msgstr ""
+
+#: ../bin/ccornu.c:1380
+msgid "Track can't be split"
+msgstr ""
+
+#: ../bin/ccornu.c:1450
+#, fuzzy
+msgid "Too close to other end of selected Track"
+msgstr "Nosta tai laske kaikkia valittuja raiteita"
+
+#: ../bin/ccornu.c:1460
+#, fuzzy
+msgid "Can't move end inside a turnout"
+msgstr "Luo käsin aseteltu vaihde"
+
+#: ../bin/ccornu.c:1609
+msgid "Can't extend connected Bezier or Cornu"
+msgstr ""
+
+#: ../bin/ccornu.c:1690
+#, c-format
+msgid ""
+"Cornu : Min Radius=%s MaxRateofCurveChange/Scale=%s Length=%s Winding Arc=%s"
+msgstr ""
+
+#: ../bin/ccornu.c:1714 ../bin/ccornu.c:2423
+msgid "Helix Already Connected"
+msgstr ""
+
+#: ../bin/ccornu.c:1730
+#, fuzzy
+msgid "No Valid end point on that track"
+msgstr "Aseta suoran raiteen 1. päätepiste"
+
+#: ../bin/ccornu.c:1735
+msgid "Track is different scale"
+msgstr ""
+
+#: ../bin/ccornu.c:1794
+msgid ""
+"Pick on point to adjust it along track - Delete to remove, Enter to confirm, "
+"ESC to abort"
+msgstr ""
+
+#: ../bin/ccornu.c:1825
+msgid "Cornu has too complex shape - adjust end pts"
+msgstr ""
+
+#: ../bin/ccornu.c:1838
+#, fuzzy, c-format
+msgid "Cornu point %d too close to other end of connect track - reposition it"
+msgstr "Nosta tai laske kaikkia valittuja raiteita"
+
+#: ../bin/ccornu.c:1844
+#, fuzzy
+msgid "Create Cornu"
+msgstr "Luo viivoja"
+
+#: ../bin/ccornu.c:2037
+msgid "Now Select or Add (+Shift) a Point"
+msgstr ""
+
+#: ../bin/ccornu.c:2100
+#, fuzzy, c-format
+msgid "Cornu end %d too close to other end of connect track - reposition it"
+msgstr "Nosta tai laske kaikkia valittuja raiteita"
+
+#: ../bin/ccornu.c:2105 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:177
+#, fuzzy
+msgid "Modify Cornu"
+msgstr "Muokkaa raidetta"
+
+#: ../bin/ccornu.c:2122
+#, c-format
+msgid "Cornu Extension Create Failed for end %d"
+msgstr ""
+
+#: ../bin/ccornu.c:2219
+#, c-format
+msgid "Connected Track End Adjust for end %d failed"
+msgstr ""
+
+#: ../bin/ccornu.c:2230
+msgid "Modify Cornu Cancelled"
+msgstr ""
+
+#: ../bin/ccornu.c:2396
+msgid "Left click - Start Cornu track"
+msgstr ""
+
+#: ../bin/ccornu.c:2398
+msgid "Left click - Place Flextrack"
+msgstr ""
+
+#: ../bin/ccornu.c:2401
+msgid "Left click - join with Cornu track"
+msgstr ""
+
+#: ../bin/ccornu.c:2404
+#, fuzzy
+msgid "Left click - join with Cornu track, Shift Left click - move to join"
+msgstr ""
+"Hiiren vasen: yhdistä raiteet, Vaihto + hiiren vasen: siirrä yhdistääksesi"
+
+#: ../bin/ccornu.c:2439
+#, fuzzy
+msgid "No valid open endpoint on that track"
+msgstr "Siirretty päätepisteen taakse"
+
+#: ../bin/ccornu.c:2469 ../bin/ccornu.c:2482
+#, fuzzy
+msgid "Drag arm in the direction of track"
+msgstr "Vedä päätepisteestä kaarteen suuntaan"
+
+#: ../bin/ccornu.c:2487
+msgid "No Unconnected Track End there"
+msgstr ""
+
+#: ../bin/ccornu.c:2498 ../bin/ccornu.c:2523
+msgid "No Valid Track End there"
+msgstr ""
+
+#: ../bin/ccornu.c:2511
+#, fuzzy
+msgid "Locked - Move 1st end point of Cornu track along track 1"
+msgstr "Aseta suoran raiteen 1. päätepiste"
+
+#: ../bin/ccornu.c:2535
+#, fuzzy
+msgid "Locked - Move 2nd end point of Cornu track along track 2"
+msgstr "Aseta suoran raiteen 1. päätepiste"
+
+#: ../bin/ccornu.c:2623
+msgid "Track can't be split - so locked to endpoint"
+msgstr ""
+
+#: ../bin/ccornu.c:2628
+#, fuzzy
+msgid "Point not on track 1"
+msgstr "Yhdistä kaksi raidetta"
+
+#: ../bin/ccornu.c:2670
+#, fuzzy
+msgid "Pick other end of Cornu"
+msgstr "Vedä jänne päätepisteiden välille"
+
+#: ../bin/ccornu.c:2673
+msgid ""
+"Select flextrack ends or anchors and drag, Enter to approve, Esc to Cancel"
+msgstr ""
+
+#: ../bin/ccornu.c:2680
+#, fuzzy
+msgid "Put other end of Cornu on a track with an unconnected end point"
+msgstr "Aseta suoran raiteen 1. päätepiste"
+
+#: ../bin/ccornu.c:2941 ../bin/ccornu.c:3166
+#, fuzzy
+msgid "Not on a Track"
+msgstr "Ei raiteilla"
+
+#: ../bin/ccornu.c:2949
+#, fuzzy
+msgid "Select a Track To Convert"
+msgstr "Valitse raideosat"
+
+#: ../bin/ccornu.c:2952
+msgid "Convert all Selected Tracks to Cornu Tracks?"
+msgstr ""
+
+#: ../bin/ccornu.c:2958
+#, fuzzy
+msgid "Convert Cornu"
+msgstr "Luo viivoja"
+
+#: ../bin/ccornu.c:3118
+#, c-format
+msgid "Tracks Counts: %d converted %d unconvertible %d created %d deleted"
+msgstr ""
+
+#: ../bin/ccornu.c:3118 ../bin/ccornu.c:3241 ../bin/cturnout.c:352
+#: ../bin/paramfilelist.c:113
+msgid "OK"
+msgstr ""
+
+#: ../bin/ccornu.c:3173
+msgid "Select a Cornu or Bezier Track To Convert to Fixed"
+msgstr ""
+
+#: ../bin/ccornu.c:3176
+msgid "Convert all Selected Tracks to Fixed Tracks?"
+msgstr ""
+
+#: ../bin/ccornu.c:3187
+msgid "Convert Bezier and Cornu"
+msgstr ""
+
+#: ../bin/ccornu.c:3240
+#, c-format
+msgid "Tracks Counts: %d converted %d unconvertible %d deleted"
+msgstr ""
+
+#: ../bin/ccornu.c:3269
+#, fuzzy
+msgid "Convert"
+msgstr "Sisältö"
+
+#: ../bin/ccornu.c:3270
+#, fuzzy
+msgid "Convert To Cornu"
+msgstr "Luo viivoja"
+
+#: ../bin/ccornu.c:3273
+#, fuzzy
+msgid "Convert From Cornu"
+msgstr "Kaari päätepisteiden välille"
+
+#: ../bin/ccurve.c:165
+#, fuzzy
+msgid "Drag from endpoint in direction of curve - lock to track open endpoint"
+msgstr "Vedä päätepisteestä kaarteen suuntaan"
+
+#: ../bin/ccurve.c:167
+#, fuzzy
+msgid "Drag from endpoint in direction of curve"
+msgstr "Vedä päätepisteestä kaarteen suuntaan"
+
+#: ../bin/ccurve.c:172
+#, fuzzy
+msgid "Drag from endpoint to center - lock to track open endpoint"
+msgstr "Vedä päätepisteestä keskipisteeseen"
+
+#: ../bin/ccurve.c:174
+#, fuzzy
+msgid "Drag from endpoint to center"
+msgstr "Vedä päätepisteestä keskipisteeseen"
+
+#: ../bin/ccurve.c:178
+#, fuzzy
+msgid "Drag from center to endpoint"
+msgstr "Vedä keskipisteestä päätepisteeseen"
+
+#: ../bin/ccurve.c:181
+#, fuzzy
+msgid "Drag from one to other end of chord"
+msgstr "Vedä jänne päätepisteiden välille"
+
+#: ../bin/ccurve.c:243
+#, fuzzy
+msgid "End locked: Drag out curve start"
+msgstr "Vedä luodaksesi lähtevän raiteen"
+
+#: ../bin/ccurve.c:244 ../bin/ccurve.c:254 ../bin/ccurve.c:272
+#, fuzzy
+msgid "End Position locked: Drag out curve start with Shift"
+msgstr "Vedä luodaksesi lähtevän raiteen"
+
+#: ../bin/ccurve.c:245
+#, fuzzy
+msgid "Drag along curve start"
+msgstr "Vedä luodaksesi lähtevän raiteen"
+
+#: ../bin/ccurve.c:253
+msgid "End locked: Drag out curve center"
+msgstr ""
+
+#: ../bin/ccurve.c:255
+#, fuzzy
+msgid "Drag out curve center"
+msgstr "Vedä luodaksesi lähtevän raiteen"
+
+#: ../bin/ccurve.c:262
+#, fuzzy
+msgid "Drag out from center to endpoint"
+msgstr "Vedä keskipisteestä päätepisteeseen"
+
+#: ../bin/ccurve.c:271
+#, fuzzy
+msgid "End locked: Drag to other end of chord"
+msgstr "Vedä jänne päätepisteiden välille"
+
+#: ../bin/ccurve.c:274
+msgid "Drag to other end of chord"
+msgstr "Vedä jänne päätepisteiden välille"
+
+#: ../bin/ccurve.c:332
+#, c-format
+msgid "Start Locked: Drag out curve start - Angle=%0.3f"
+msgstr ""
+
+#: ../bin/ccurve.c:333
+#, c-format
+msgid "Drag out curve start - Angle=%0.3f"
+msgstr ""
+
+#: ../bin/ccurve.c:340
+#, fuzzy, c-format
+msgid "Tangent locked: Drag out center - Radius=%s Angle=%0.3f"
+msgstr "Tangentti raide: Pituus %s Kulma %0.3f"
+
+#: ../bin/ccurve.c:341
+#, fuzzy, c-format
+msgid "Drag out center - Radius=%s Angle=%0.3f"
+msgstr "Säde=%s Kulma=%0.3f"
+
+#: ../bin/ccurve.c:348
+#, fuzzy, c-format
+msgid "Drag to Edge: Radius=%s Angle=%0.3f"
+msgstr "Säde=%s Kulma=%0.3f"
+
+#: ../bin/ccurve.c:356
+#, fuzzy, c-format
+msgid "Start locked: Drag out chord length=%s angle=%0.3f"
+msgstr "Tangentti raide: Pituus %s Kulma %0.3f"
+
+#: ../bin/ccurve.c:357
+#, fuzzy, c-format
+msgid "Drag out chord length=%s angle=%0.3f"
+msgstr "Suora raideosa Pituus=%s Kulma=%0.3f"
+
+#: ../bin/ccurve.c:433 ../bin/ccurve.c:615 ../bin/cjoin.c:714
+#: ../bin/cjoin.c:1017
+#, fuzzy
+msgid "Desired Radius"
+msgstr "Ympyrän säde"
+
+#: ../bin/ccurve.c:534 ../bin/cjoin.c:216 ../bin/cmodify.c:639
+#: ../bin/cturntbl.c:687
+#, c-format
+msgid "Straight Track: Length=%s Angle=%0.3f"
+msgstr "Suora raideosa: Pituus=%s Kulma=%0.3f"
+
+#: ../bin/ccurve.c:542 ../bin/cmodify.c:644 ../bin/drawgeom.c:718
+msgid "Back"
+msgstr "Takaisin"
+
+#: ../bin/ccurve.c:563
+#, c-format
+msgid "Curved Track: Radius=%s Angle=%0.3f Length=%s"
+msgstr "Kaareva raideosa: Säde=%s Kulma=%0.3f Pituus=%s"
+
+#: ../bin/ccurve.c:642 ../bin/cstraigh.c:173
+msgid "Create Straight Track"
+msgstr "Luo suora raideosa"
+
+#: ../bin/ccurve.c:656
+msgid "Create Curved Track"
+msgstr "Luo kaareva raideosa"
+
+#: ../bin/ccurve.c:726
+msgid "Elevation Difference"
+msgstr "Korkeusero"
+
+#: ../bin/ccurve.c:727 ../bin/cdraw.c:559 ../bin/cdraw.c:1585
+#: ../bin/cdraw.c:1732 ../bin/cdraw.c:2850 ../bin/cdraw.c:3050
+#: ../bin/cdraw.c:3064 ../bin/compound.c:723 ../bin/compound.c:728
+#: ../bin/compound.c:733 ../bin/compound.c:738 ../bin/ctodesgn.c:187
+#: ../bin/ctodesgn.c:188 ../bin/ctodesgn.c:189 ../bin/ctodesgn.c:190
+#: ../bin/ctodesgn.c:317 ../bin/ctodesgn.c:320 ../bin/ctodesgn.c:322
+#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:397 ../bin/ctodesgn.c:402
+#: ../bin/ctodesgn.c:478 ../bin/ctodesgn.c:482 ../bin/ctodesgn.c:483
+#: ../bin/ctodesgn.c:489 ../bin/ctodesgn.c:696 ../bin/tbezier.c:285
+#: ../bin/tbezier.c:292 ../bin/tcornu.c:326 ../bin/tcurve.c:401
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:187
+msgid "Radius"
+msgstr "Säde"
+
+#: ../bin/ccurve.c:728 ../bin/tcurve.c:402
+msgid "Turns"
+msgstr "Kierroksia"
+
+#: ../bin/ccurve.c:729
+msgid "Angular Separation"
+msgstr "Sisäänkäyntien välinen kulma"
+
+#: ../bin/ccurve.c:730 ../bin/celev.c:43 ../bin/compound.c:740
+#: ../bin/tbezier.c:297 ../bin/tcornu.c:333 ../bin/tcurve.c:408
+#: ../bin/tease.c:534 ../bin/tstraigh.c:93
+msgid "Grade"
+msgstr "Nousukulma"
+
+#: ../bin/ccurve.c:731
+msgid "Vertical Separation"
+msgstr "Kerrosten välinen etäisyys"
+
+#: ../bin/ccurve.c:733
+msgid "Total Length"
+msgstr "Kokonaispituus"
+
+#: ../bin/ccurve.c:813
+#, c-format
+msgid "Total Length %s"
+msgstr "Kokonaispituus %s"
+
+#: ../bin/ccurve.c:852 ../bin/ccurve.c:1079 ../bin/tcurve.c:1008
+msgid "Helix"
+msgstr "Helix"
+
+#: ../bin/ccurve.c:868
+msgid "Circle Radius"
+msgstr "Ympyrän säde"
+
+#: ../bin/ccurve.c:873
+msgid "Click on Circle Edge"
+msgstr "Aseta ympyrän kehän piste"
+
+#: ../bin/ccurve.c:877
+msgid "Click on Circle Center"
+msgstr "Aseta ympyrän keskipiste"
+
+#: ../bin/ccurve.c:907
+msgid "Drag to Center"
+msgstr "Raahaa keskustaan"
+
+#: ../bin/ccurve.c:911
+msgid "Drag to Edge"
+msgstr "Raahaa kehälle"
+
+#: ../bin/ccurve.c:932 ../bin/ccurve.c:936
+#, c-format
+msgid "Radius=%s"
+msgstr "Säde=%s"
+
+#: ../bin/ccurve.c:957
+msgid "Create Helix Track"
+msgstr "Luo helix raide"
+
+#: ../bin/ccurve.c:972
+msgid "Create Circle Track"
+msgstr "Luo ympyrärata"
+
+#: ../bin/ccurve.c:1031
+msgid "Curve Track"
+msgstr "Kaareva raide"
+
+#: ../bin/ccurve.c:1031
+msgid "Curve Tracks"
+msgstr "Kaarevat raideosat"
+
+#: ../bin/ccurve.c:1032
+msgid "Curve from End-Pt"
+msgstr "Kaari päätepisteestä"
+
+#: ../bin/ccurve.c:1035
+msgid "Curve from Tangent"
+msgstr "Kaari kehältä"
+
+#: ../bin/ccurve.c:1038
+msgid "Curve from Center"
+msgstr "Kaari keskipisteestä"
+
+#: ../bin/ccurve.c:1041
+msgid "Curve from Chord"
+msgstr "Kaari päätepisteiden välille"
+
+#: ../bin/ccurve.c:1044 ../bin/cdraw.c:3199
+#, fuzzy
+msgid "Bezier Curve"
+msgstr "Yhdistä kaarteet"
+
+#: ../bin/ccurve.c:1047
+#, fuzzy
+msgid "Cornu Curve"
+msgstr "Kaareva raide"
+
+#: ../bin/ccurve.c:1052 ../bin/tcurve.c:684
+msgid "Circle Track"
+msgstr "Ympyrärata"
+
+#: ../bin/ccurve.c:1052
+msgid "Circle Tracks"
+msgstr "Ympyräradat"
+
+#: ../bin/ccurve.c:1054
+msgid "Fixed Radius Circle"
+msgstr "Määriteltysäteinen ympyrä"
+
+#: ../bin/ccurve.c:1056
+msgid "Circle from Tangent"
+msgstr "Ympyrä kehältä"
+
+#: ../bin/ccurve.c:1059
+msgid "Circle from Center"
+msgstr "Ympyrä keskustasta"
+
+#: ../bin/ccontrol.c:169 ../bin/csensor.c:161 ../bin/csignal.c:237
+#: ../bin/ctrain.c:180
+msgid "Position"
+msgstr "Sijainti"
+
+#: ../bin/ccontrol.c:170 ../bin/ccontrol.c:431
+msgid "On Script"
+msgstr ""
+
+#: ../bin/ccontrol.c:171 ../bin/ccontrol.c:433
+msgid "Off Script"
+msgstr ""
+
+#: ../bin/ccontrol.c:238
+#, fuzzy
+msgid "Change Control"
+msgstr "Junien hallinta"
+
+#: ../bin/ccontrol.c:281 ../bin/csensor.c:251
+#, fuzzy, c-format
+msgid "(%d [%s]): Layer=%u, at %0.3f,%0.3f"
+msgstr "(%d): Taso=%d %s"
+
+#: ../bin/ccontrol.c:294 ../bin/ccontrol.c:644
+#, fuzzy
+msgid "Control"
+msgstr "Junien hallinta"
+
+#: ../bin/ccontrol.c:427 ../bin/csensor.c:391 ../bin/csignal.c:512
+#, fuzzy
+msgid "Origin X"
+msgstr "Origo: X"
+
+#: ../bin/ccontrol.c:429 ../bin/csensor.c:393 ../bin/csignal.c:514
+#, fuzzy
+msgid "Origin Y"
+msgstr "Origo: X"
+
+#: ../bin/ccontrol.c:445
+#, fuzzy
+msgid "Create Control"
+msgstr "Junien hallinta"
+
+#: ../bin/ccontrol.c:448
+#, fuzzy
+msgid "Modify Control"
+msgstr "Junien hallinta"
+
+#: ../bin/ccontrol.c:488
+#, fuzzy
+msgid "Edit control"
+msgstr "Junien hallinta"
+
+#: ../bin/ccontrol.c:529
+#, fuzzy
+msgid "Place control"
+msgstr "Aseta ympyrä"
+
+#: ../bin/cdraw.c:125
+msgid "Font Size must be > 0"
+msgstr "Kirjasinkoon on oltava > 0"
+
+#: ../bin/cdraw.c:553
+msgid "First Point: X,Y"
+msgstr ""
+
+#: ../bin/cdraw.c:554 ../bin/tcurve.c:400
+#, fuzzy
+msgid "Center: X,Y"
+msgstr "Keskipiste: X"
+
+#: ../bin/cdraw.c:555 ../bin/tcurve.c:405
+msgid "Angular Length"
+msgstr "Kulma"
+
+#: ../bin/cdraw.c:556
+#, fuzzy
+msgid "Line Angle"
+msgstr "Vasemman raiteen kulma"
+
+#: ../bin/cdraw.c:557 ../bin/tcurve.c:406
+msgid "CCW Angle"
+msgstr "Vasemman pään kulma"
+
+#: ../bin/cdraw.c:558 ../bin/tcurve.c:407
+msgid "CW Angle"
+msgstr "Oikean pään kulma"
+
+#: ../bin/cdraw.c:561 ../bin/cdraw.c:1582 ../bin/cdraw.c:1705
+#: ../bin/cprint.c:131 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:185
+msgid "Height"
+msgstr "Korkeus"
+
+#: ../bin/cdraw.c:562 ../bin/cdraw.c:1580 ../bin/cdraw.c:1704
+#: ../bin/cdraw.c:2845 ../bin/cdraw.c:3110 ../bin/ctrain.c:183
+#: ../bin/dcar.c:2344 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:192
+msgid "Width"
+msgstr "Leveys"
+
+#: ../bin/cdraw.c:563 ../bin/compound.c:743 ../bin/tstraigh.c:94
+msgid "Pivot"
+msgstr "Kiertopiste"
+
+#: ../bin/cdraw.c:564
+msgid "Point Count"
+msgstr "Pisteitä"
+
+#: ../bin/cdraw.c:565 ../bin/cdraw.c:2823 ../bin/ctodesgn.c:209
+#: ../bin/tbezier.c:299
+msgid "Line Width"
+msgstr "Viivan paksuus"
+
+#: ../bin/cdraw.c:566 ../bin/cdraw.c:2852 ../bin/tbezier.c:298
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:379
+#, fuzzy
+msgid "Line Type"
+msgstr "Puutavaran tyyppi"
+
+#: ../bin/cdraw.c:567 ../bin/cdraw.c:2825 ../bin/cdraw.c:2827
+#: ../bin/cdraw.c:2927 ../bin/cdraw.c:2960 ../bin/cmisc.c:121 ../bin/ctext.c:67
+#: ../bin/ctext.c:145 ../bin/ctodesgn.c:210 ../bin/dcar.c:2340
+#: ../bin/dlayer.c:545 ../bin/doption.c:591
+msgid "Color"
+msgstr "Väri"
+
+#: ../bin/cdraw.c:568
+#, fuzzy
+msgid "Filled"
+msgstr "Täytetty nelikulmio"
+
+#: ../bin/cdraw.c:569
+#, fuzzy
+msgid "Open End"
+msgstr "Pysty"
+
+#: ../bin/cdraw.c:570 ../bin/cmisc.c:144 ../bin/cmisc.c:145 ../bin/cmisc.c:146
+#: ../bin/cmisc.c:147 ../bin/ctext.c:69 ../bin/ctext.c:146
+#, fuzzy
+msgid "Boxed"
+msgstr "Nelikulmio"
+
+#: ../bin/cdraw.c:571 ../bin/cdraw.c:1177 ../bin/cdraw.c:2859
+msgid "Lumber"
+msgstr "Puutavara"
+
+#: ../bin/cdraw.c:572
+msgid "Orientation"
+msgstr "Suunta"
+
+#: ../bin/cdraw.c:573 ../bin/cdraw.c:2841
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:679
+msgid "Size"
+msgstr "Koko"
+
+#: ../bin/cdraw.c:574
+#, fuzzy
+msgid "Text Origin: X,Y"
+msgstr "Origo: X"
+
+#: ../bin/cdraw.c:575
+#, fuzzy
+msgid "Text Angle"
+msgstr "Vasemman raiteen kulma"
+
+#: ../bin/cdraw.c:576 ../bin/ctext.c:65 ../bin/ctext.c:144
+msgid "Font Size"
+msgstr "Kirjasinkoko"
+
+#: ../bin/cdraw.c:577 ../bin/cdraw.c:1324 ../bin/ctext.c:273
+msgid "Text"
+msgstr "Teksti"
+
+#: ../bin/cdraw.c:578
+msgid "Lock To Origin"
+msgstr ""
+
+#: ../bin/cdraw.c:579
+#, fuzzy
+msgid "Rot Origin: X,Y"
+msgstr "Origo: X"
+
+#: ../bin/cdraw.c:580
+#, fuzzy
+msgid "Rotate By"
+msgstr "Pyöritä"
+
+#: ../bin/cdraw.c:581 ../bin/compound.c:749 ../bin/cturntbl.c:277
+#: ../bin/doption.c:101 ../bin/doption.c:102 ../bin/tbezier.c:301
+#: ../bin/tcornu.c:334 ../bin/tcurve.c:410 ../bin/tease.c:536
+#: ../bin/tstraigh.c:95 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:757
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:758
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:759
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:760
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:761
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:762
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:763
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:764
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:765
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:766
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:767
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:768
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:769
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:770
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:771
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:772
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:773
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:774
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:775
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:776
+msgid "Layer"
+msgstr "Taso"
+
+#: ../bin/cdraw.c:1057 ../bin/cmisc.c:233 ../bin/cmodify.c:379
+#: ../bin/compound.c:848 ../bin/ctrain.c:218
+msgid "Change Track"
+msgstr "Muuta raiteita"
+
+#: ../bin/cdraw.c:1162
+msgid "Straight Line"
+msgstr "Suora viiva"
+
+#: ../bin/cdraw.c:1167 ../bin/cdraw.c:3190
+msgid "Dimension Line"
+msgstr "Mittajana"
+
+#: ../bin/cdraw.c:1188 ../bin/cdraw.c:2860 ../bin/cdraw.c:3192
+msgid "Table Edge"
+msgstr "Pöydän reuna"
+
+#: ../bin/cdraw.c:1212 ../bin/cdraw.c:2865 ../bin/cdraw.c:2866
+#: ../bin/cdraw.c:2867
+msgid "Circle"
+msgstr "Ympyrä"
+
+#: ../bin/cdraw.c:1227
+msgid "Curved Line"
+msgstr "Kaari"
+
+#: ../bin/cdraw.c:1249 ../bin/cdraw.c:2870 ../bin/cdraw.c:2871
+#: ../bin/cdraw.c:2872
+msgid "Filled Circle"
+msgstr "Täytetty ympyrä"
+
+#: ../bin/cdraw.c:1279
+#, fuzzy
+msgid "Filled Rectangle"
+msgstr "Täytetty ympyrä"
+
+#: ../bin/cdraw.c:1279
+#, fuzzy
+msgid "Rectangle"
+msgstr "Mittakaavan muutos"
+
+#: ../bin/cdraw.c:1293 ../bin/cdraw.c:2876
+msgid "Polyline"
+msgstr "Monikulmio"
+
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2874 ../bin/cdraw.c:3213
+#, fuzzy
+msgid "Filled Polygon"
+msgstr "Täytetty nelikulmio"
+
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2869 ../bin/cdraw.c:3212
+msgid "Polygon"
+msgstr "Monikulmio"
+
+#: ../bin/cdraw.c:1330
+#, fuzzy, c-format
+msgid "%s(%d) Layer=%d"
+msgstr "%s: Taso=%d"
+
+#: ../bin/cdraw.c:1355 ../bin/cdraw.c:2930 ../bin/compound.c:1156
+#: ../bin/doption.c:96 ../bin/tbezier.c:519
+msgid "Solid"
+msgstr "Yhtenäinen"
+
+#: ../bin/cdraw.c:1356 ../bin/cdraw.c:2932 ../bin/compound.c:1157
+#: ../bin/doption.c:93 ../bin/tbezier.c:520
+msgid "Dash"
+msgstr "Katkoviiva"
+
+#: ../bin/cdraw.c:1357 ../bin/cdraw.c:2931 ../bin/compound.c:1158
+#: ../bin/tbezier.c:521
+msgid "Dot"
+msgstr ""
+
+#: ../bin/cdraw.c:1358 ../bin/compound.c:1159 ../bin/tbezier.c:522
+#, fuzzy
+msgid "DashDot"
+msgstr "Katkoviiva"
+
+#: ../bin/cdraw.c:1359 ../bin/compound.c:1161 ../bin/tbezier.c:523
+msgid "DashDotDot"
+msgstr ""
+
+#: ../bin/cdraw.c:1360 ../bin/compound.c:1163 ../bin/tbezier.c:524
+#, fuzzy
+msgid "CenterDot"
+msgstr "Keskipiste: X"
+
+#: ../bin/cdraw.c:1361 ../bin/compound.c:1165 ../bin/tbezier.c:525
+msgid "PhantomDot"
+msgstr ""
+
+#: ../bin/cdraw.c:1366 ../bin/cdraw.c:2981
+msgid "Tiny"
+msgstr "Pikkuruinen"
+
+#: ../bin/cdraw.c:1367 ../bin/cdraw.c:2982
+msgid "Small"
+msgstr "Pieni"
+
+#: ../bin/cdraw.c:1368 ../bin/cdraw.c:2983
+msgid "Medium"
+msgstr "Keskikokoinen"
+
+#: ../bin/cdraw.c:1369 ../bin/cdraw.c:2984
+msgid "Large"
+msgstr "Suuri"
+
+#: ../bin/cdraw.c:1575 ../bin/cdraw.c:1721 ../bin/cdraw.c:2848
+#: ../bin/cdraw.c:3071 ../bin/cdraw.c:3092 ../bin/cdraw.c:3096
+#: ../bin/compound.c:721 ../bin/compound.c:726 ../bin/compound.c:731
+#: ../bin/compound.c:736 ../bin/compound.c:742 ../bin/cprint.c:156
+#: ../bin/csignal.c:238 ../bin/csignal.c:516 ../bin/ctodesgn.c:195
+#: ../bin/ctodesgn.c:196 ../bin/ctodesgn.c:197 ../bin/ctodesgn.c:199
+#: ../bin/ctodesgn.c:243 ../bin/ctodesgn.c:269 ../bin/ctodesgn.c:271
+#: ../bin/ctodesgn.c:315 ../bin/ctodesgn.c:318 ../bin/ctodesgn.c:349
+#: ../bin/ctodesgn.c:352 ../bin/ctodesgn.c:394 ../bin/ctodesgn.c:399
+#: ../bin/ctodesgn.c:427 ../bin/ctodesgn.c:431 ../bin/ctodesgn.c:476
+#: ../bin/ctodesgn.c:480 ../bin/ctodesgn.c:485 ../bin/ctodesgn.c:515
+#: ../bin/ctodesgn.c:539 ../bin/ctodesgn.c:564 ../bin/ctodesgn.c:697
+#: ../bin/ctrain.c:181 ../bin/tease.c:529
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:183
+msgid "Angle"
+msgstr "Kulma"
+
+#: ../bin/cdraw.c:1578 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:188
+#, fuzzy
+msgid "Relative Angle"
+msgstr "Vasemman raiteen kulma"
+
+#: ../bin/cdraw.c:1587 ../bin/cdraw.c:1737 ../bin/cdraw.c:3065
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:184
+#, fuzzy
+msgid "Arc Angle"
+msgstr "Kulma"
+
+#: ../bin/cdraw.c:1589
+#, fuzzy
+msgid "Rotate Angle"
+msgstr "Oikean raiteen kulma"
+
+#: ../bin/cdraw.c:1592
+#, fuzzy
+msgid "Rot Center X,Y"
+msgstr "Keskipiste: X"
+
+#: ../bin/cdraw.c:1692
+#, fuzzy
+msgid "Seg Lth"
+msgstr "Pituus"
+
+#: ../bin/cdraw.c:1693
+msgid "Rel Ang"
+msgstr ""
+
+#: ../bin/cdraw.c:2830 ../bin/cdraw.c:2832 ../bin/cdraw.c:2958
+msgid "Lumber Type"
+msgstr "Puutavaran tyyppi"
+
+#: ../bin/cdraw.c:2857
+msgid "Straight"
+msgstr "Suora"
+
+#: ../bin/cdraw.c:2858
+msgid "Dimension"
+msgstr "Etäisyys"
+
+#: ../bin/cdraw.c:2861 ../bin/cdraw.c:2862 ../bin/cdraw.c:2863
+#: ../bin/cdraw.c:2864
+msgid "Curved"
+msgstr "Kaareva"
+
+#: ../bin/cdraw.c:2868 ../bin/cdraw.c:3210
+msgid "Box"
+msgstr "Nelikulmio"
+
+#: ../bin/cdraw.c:2873 ../bin/cdraw.c:3211
+msgid "Filled Box"
+msgstr "Täytetty nelikulmio"
+
+#: ../bin/cdraw.c:2875 ../bin/tbezier.c:516
+#, fuzzy
+msgid "Bezier Line"
+msgstr "Ympyrät"
+
+#: ../bin/cdraw.c:2925
+#, c-format
+msgid "%s Line Width"
+msgstr "%s viivan paksuus"
+
+#: ../bin/cdraw.c:2928 ../bin/dcar.c:2313 ../bin/dcar.c:4694 ../bin/dcar.c:4700
+msgid "Type"
+msgstr "Tyyppi"
+
+#: ../bin/cdraw.c:2933
+#, fuzzy
+msgid "Dash-Dot"
+msgstr "Katkoviiva"
+
+#: ../bin/cdraw.c:2934
+msgid "Dash-Dot-Dot"
+msgstr ""
+
+#: ../bin/cdraw.c:2947
+#, c-format
+msgid "%s Color"
+msgstr "%s väri"
+
+#: ../bin/cdraw.c:2979
+msgid "Dimension Line Size"
+msgstr "Mittajanan koko"
+
+#: ../bin/cdraw.c:2991
+msgid "Drag to create Table Edge"
+msgstr "Piirrä pöydän reuna"
+
+#: ../bin/cdraw.c:3089
+#, fuzzy
+msgid "Seg Length"
+msgstr "Vasemman raiteen pituus"
+
+#: ../bin/cdraw.c:3094
+#, fuzzy
+msgid "Rel Angle"
+msgstr "Vasemman raiteen kulma"
+
+#: ../bin/cdraw.c:3189
+msgid "Line"
+msgstr "Viiva"
+
+#: ../bin/cdraw.c:3189
+msgid "Draw Line"
+msgstr "Piirrä viiva"
+
+#: ../bin/cdraw.c:3190
+msgid "Draw Dimension Line"
+msgstr "Piirrä mittajana"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:479
+#: ../bin/cdraw.c:3191 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1270
+msgid "Benchwork"
+msgstr "Runkorakenne"
+
+#: ../bin/cdraw.c:3191
+msgid "Draw Benchwork"
+msgstr "Piirrä runkorakenne"
+
+#: ../bin/cdraw.c:3192
+msgid "Draw Table Edge"
+msgstr "Piirrä pöydän reuna"
+
+#: ../bin/cdraw.c:3195
+msgid "Curve End"
+msgstr "Kaari päätepisteestä"
+
+#: ../bin/cdraw.c:3195
+msgid "Draw Curve from End"
+msgstr "Piirrä kaari päätepisteestä"
+
+#: ../bin/cdraw.c:3196
+msgid "Curve Tangent"
+msgstr "Kaari kehältä"
+
+#: ../bin/cdraw.c:3196
+msgid "Draw Curve from Tangent"
+msgstr "Piirrä kaari kehältä"
+
+#: ../bin/cdraw.c:3197
+msgid "Curve Center"
+msgstr "Kaari keskipisteestä"
+
+#: ../bin/cdraw.c:3197
+msgid "Draw Curve from Center"
+msgstr "Piirrä kaari keskipisteestä"
+
+#: ../bin/cdraw.c:3198
+msgid "Curve Chord"
+msgstr "Kaari jänteestä"
+
+#: ../bin/cdraw.c:3198
+msgid "Draw Curve from Chord"
+msgstr "Piirrä kaari·päätepisteiden·välille"
+
+#: ../bin/cdraw.c:3199
+#, fuzzy
+msgid "Draw Bezier"
+msgstr "Piirrä viiva"
+
+#: ../bin/cdraw.c:3203
+msgid "Circle Center"
+msgstr "Ympyrä keskustasta"
+
+#: ../bin/cdraw.c:3203
+msgid "Draw Circle from Center"
+msgstr "Piirrä ympyrä keskipisteestä"
+
+#: ../bin/cdraw.c:3204
+msgid "Circle Tangent"
+msgstr "Ympyrä kehältä"
+
+#: ../bin/cdraw.c:3204
+msgid "Draw Circle from Tangent"
+msgstr "Piirrä ympyrä kehältä"
+
+#: ../bin/cdraw.c:3206
+msgid "Circle Filled Center"
+msgstr "Täytetty ympyrä keskustasta"
+
+#: ../bin/cdraw.c:3206
+msgid "Draw Filled Circle from Center"
+msgstr "Piirrä täytetty ympyrä keskipisteestä"
+
+#: ../bin/cdraw.c:3207
+msgid "Circle Filled Tangent"
+msgstr "Täytetty ympyrä kehältä"
+
+#: ../bin/cdraw.c:3207
+msgid "Draw Filled Circle from Tangent"
+msgstr "Piirrä täytetty ympyrä kehältä"
+
+#: ../bin/cdraw.c:3210
+msgid "Draw Box"
+msgstr "Piirrä nelikulmio"
+
+#: ../bin/cdraw.c:3211
+msgid "Draw Filled Box"
+msgstr "Piirrä täytetty nelikulmio"
+
+#: ../bin/cdraw.c:3212
+msgid "Draw Polygon"
+msgstr "Piirrä täytetty monikulmio"
+
+#: ../bin/cdraw.c:3213
+#, fuzzy
+msgid "Draw Filled Polygon"
+msgstr "Piirrä täytetty monikulmio"
+
+#: ../bin/cdraw.c:3214
+#, fuzzy
+msgid "PolyLine"
+msgstr "Monikulmio"
+
+#: ../bin/cdraw.c:3214
+#, fuzzy
+msgid "Draw PolyLine"
+msgstr "Piirrä monikulmio"
+
+#: ../bin/cdraw.c:3231
+msgid "Straight Objects"
+msgstr "Suorat objektit"
+
+#: ../bin/cdraw.c:3231
+msgid "Draw Straight Objects"
+msgstr "Suorien objektien piirto"
+
+#: ../bin/cdraw.c:3232
+msgid "Curved Lines"
+msgstr "Kaaret"
+
+#: ../bin/cdraw.c:3232
+msgid "Draw Curved Lines"
+msgstr "Kaarien piirto"
+
+#: ../bin/cdraw.c:3233
+msgid "Circle Lines"
+msgstr "Ympyrät"
+
+#: ../bin/cdraw.c:3233
+msgid "Draw Circles"
+msgstr "Ympyröiden piirto"
+
+#: ../bin/cdraw.c:3234
+msgid "Shapes"
+msgstr "Muodot"
+
+#: ../bin/cdraw.c:3234
+msgid "Draw Shapes"
+msgstr "Muotojen piirto"
+
+#: ../bin/cdraw.c:3536
+#, fuzzy
+msgid "Close Polygon - 'g'"
+msgstr "Täytetty nelikulmio"
+
+#: ../bin/cdraw.c:3538
+msgid "Make PolyLine - 'l'"
+msgstr ""
+
+#: ../bin/cdraw.c:3540
+msgid "Fill Polygon - 'f'"
+msgstr ""
+
+#: ../bin/cdraw.c:3542
+msgid "Empty Polygon - 'u'"
+msgstr ""
+
+#: ../bin/cdraw.c:3545
+msgid "Points Mode - 'p'"
+msgstr ""
+
+#: ../bin/cdraw.c:3548
+msgid "Delete Selected Point - 'Del'"
+msgstr ""
+
+#: ../bin/cdraw.c:3549
+msgid "Vertex Point - 'v'"
+msgstr ""
+
+#: ../bin/cdraw.c:3551
+msgid "Round Corner - 'r'"
+msgstr ""
+
+#: ../bin/cdraw.c:3553
+msgid "Smooth Corner - 's'"
+msgstr ""
+
+#: ../bin/cdraw.c:3556 ../bin/cselect.c:3734
+msgid "LineType..."
+msgstr ""
+
+#: ../bin/cdraw.c:3557 ../bin/cselect.c:3735
+#, fuzzy
+msgid "Solid Line"
+msgstr "Monikulmio"
+
+#: ../bin/cdraw.c:3559 ../bin/cselect.c:3737
+#, fuzzy
+msgid "Dashed Line"
+msgstr "Piirrä viiva"
+
+#: ../bin/cdraw.c:3561 ../bin/cselect.c:3739
+#, fuzzy
+msgid "Dotted Line"
+msgstr "Kaari"
+
+#: ../bin/cdraw.c:3563
+#, fuzzy
+msgid "Dash-Dot Line"
+msgstr "Piirrä viiva"
+
+#: ../bin/cdraw.c:3565
+msgid "Dash-Dot-Dot Line"
+msgstr ""
+
+#: ../bin/cdraw.c:3567
+#, fuzzy
+msgid "Center-Dot Line"
+msgstr "Luo viivoja"
+
+#: ../bin/cdraw.c:3569
+msgid "Phantom-Dot Line"
+msgstr ""
+
+#: ../bin/cdraw.c:3572
+msgid "Origin Mode - 'o'"
+msgstr ""
+
+#: ../bin/cdraw.c:3574
+msgid "Reset Origin - '0'"
+msgstr ""
+
+#: ../bin/cdraw.c:3576
+msgid "Origin to Selected - 'l'"
+msgstr ""
+
+#: ../bin/cdraw.c:3578
+msgid "Origin to Middle - 'm'"
+msgstr ""
+
+#: ../bin/celev.c:42 ../bin/cprint.c:117 ../bin/cprofile.c:1531
+#: ../bin/csplit.c:201 ../bin/csplit.c:210 ../bin/dease.c:68
+#: ../bin/doption.c:94 ../bin/doption.c:96
+msgid "None"
+msgstr "Ei mitään"
+
+#: ../bin/celev.c:42
+msgid "Defined"
+msgstr "Määritelty"
+
+#: ../bin/celev.c:42
+msgid "Hidden"
+msgstr "Piilossa"
+
+#: ../bin/celev.c:43
+msgid "Computed"
+msgstr "Laskettu"
+
+#: ../bin/celev.c:43
+msgid "Station"
+msgstr "Asema"
+
+#: ../bin/celev.c:43 ../bin/cprofile.c:1529 ../bin/dcmpnd.c:71
+msgid "Ignore"
+msgstr "Hylkää"
+
+#: ../bin/celev.c:233
+msgid "Set Elevation"
+msgstr "Aseta korkeus"
+
+#: ../bin/celev.c:325 ../bin/celev.c:334 ../bin/celev.c:338
+#, c-format
+msgid "Undefined"
+msgstr "Määrittelemätön"
+
+#: ../bin/celev.c:384 ../bin/celev.c:541
+msgid "Elevation"
+msgstr "Korkeustaso"
+
+#: ../bin/celev.c:385 ../bin/cmisc.c:467 ../bin/dcustmgm.c:407
+#: ../bin/dcontmgm.c:308 ../bin/dlayer.c:2071 ../bin/dpricels.c:167
+#: ../bin/filenoteui.c:253 ../bin/linknoteui.c:169
+#: ../bin/paramfilesearch_ui.c:477 ../bin/textnoteui.c:137
+msgid "Done"
+msgstr "Valmis"
+
+#: ../bin/celev.c:399
+msgid ""
+"Click on end, +Shift to split, +Ctrl to move description, +Alt to show "
+"elevation"
+msgstr ""
+
+#: ../bin/celev.c:420
+msgid "Move to end or track crossing +Shift to split"
+msgstr ""
+
+#: ../bin/celev.c:424
+#, fuzzy
+msgid "Move to end or track crossing"
+msgstr "Aseta suoran raiteen 1. päätepiste"
+
+#: ../bin/celev.c:436
+#, c-format
+msgid "Crossing - First %0.3f, Second %0.3f, Clearance %0.3f - Click to Split"
+msgstr ""
+
+#: ../bin/celev.c:439
+#, c-format
+msgid "Crossing - First %0.3f, Second %0.3f, Clearance %0.3f"
+msgstr ""
+
+#: ../bin/celev.c:453
+#, c-format
+msgid "Click to split here - elevation %0.3f"
+msgstr ""
+
+#: ../bin/celev.c:458
+#, fuzzy, c-format
+msgid "Track End elevation %0.3f - snap End Pt"
+msgstr "Raideosien korkeudet"
+
+#: ../bin/celev.c:461
+#, fuzzy, c-format
+msgid "Track End elevation %0.3f"
+msgstr "Raideosien korkeudet"
+
+#: ../bin/celev.c:463 ../bin/celev.c:466
+msgid ""
+"Click on End Pt, +Shift to split, +Ctrl to move description, +Alt show "
+"Elevation"
+msgstr ""
+
+#: ../bin/celev.c:486
+msgid "Click on end, +Shift to split, +Ctrl to move description"
+msgstr ""
+
+#: ../bin/celev.c:490
+#, fuzzy
+msgid "Split track"
+msgstr "Pilko raide"
+
+#: ../bin/celev.c:496
+#, fuzzy
+msgid "Track split!"
+msgstr "Raiteet"
+
+#: ../bin/celev.c:503
+#, fuzzy
+msgid "Point selected!"
+msgstr "Kirjasinta ei valittu"
+
+#: ../bin/cgroup.c:664
+msgid "Ungroup Object"
+msgstr "Pura ryhmittely"
+
+#: ../bin/cgroup.c:677
+#, c-format
+msgid "%d objects ungrouped"
+msgstr "%d objetia purettu ryhmästä"
+
+#: ../bin/cgroup.c:679
+msgid "No objects ungrouped"
+msgstr "Yhtään objektia ei purettu ryhmästä"
+
+#: ../bin/cgroup.c:693
+msgid "Replace with new group?"
+msgstr "Korvaa uudella ryhmällä?"
+
+#: ../bin/cgroup.c:694
+msgid "Turntable/TransferTable/DblSlipSwith?"
+msgstr ""
+
+#: ../bin/cgroup.c:700 ../bin/compound.c:744 ../bin/cstruct.c:65
+#: ../bin/ctodesgn.c:201 ../bin/ctodesgn.c:3209 ../bin/cturnout.c:84
+#: ../bin/dcar.c:2305 ../bin/dcar.c:4694 ../bin/dcar.c:4700 ../bin/dcmpnd.c:483
+#: ../bin/dcustmgm.c:45 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:417
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:656
+msgid "Manufacturer"
+msgstr "Valmistaja"
+
+#: ../bin/cgroup.c:701 ../bin/cmisc.c:467 ../bin/cstruct.c:65
+#: ../bin/ctodesgn.c:3210 ../bin/ctodesgn.c:3211 ../bin/ctrain.c:184
+#: ../bin/cturnout.c:84 ../bin/dcar.c:2321 ../bin/dcar.c:4695
+#: ../bin/dcar.c:4701 ../bin/dcmpnd.c:484 ../bin/dcustmgm.c:46
+#: ../bin/denum.c:188 ../bin/denum.c:189 ../bin/denum.c:194
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:418
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:650
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:651
+msgid "Description"
+msgstr "Kuvaus"
+
+#: ../bin/cgroup.c:702 ../bin/dcmpnd.c:485
+msgid "#"
+msgstr "#"
+
+#: ../bin/cgroup.c:703 ../bin/compound.c:748
+msgid "# Segments"
+msgstr "Lohkoja"
+
+#: ../bin/cgroup.c:705
+#, fuzzy
+msgid "Offset X,Y:"
+msgstr "Siirtymä"
+
+#: ../bin/cgroup.c:1320
+msgid "No endpts"
+msgstr "Ei päätepisteitä"
+
+#: ../bin/cgroup.c:1732 ../bin/cgroup.c:1798
+msgid "Group Tracks"
+msgstr "Ryhmittele raideosia"
+
+#: ../bin/cgroup.c:1866
+msgid "Group Objects"
+msgstr "Ryhmittele"
+
+#: ../bin/chndldto.c:68
+msgid "Place frog and drag angle"
+msgstr "Aseta risteyskappale ja raahaa asettaaksesi kulma"
+
+#: ../bin/chndldto.c:85
+msgid "frog"
+msgstr "Risteyskappale"
+
+#: ../bin/chndldto.c:91
+msgid "Drag to set angle"
+msgstr "Aseta kulma raahaamalla"
+
+#: ../bin/chndldto.c:132
+#, c-format
+msgid "Angle = %0.2f Frog# = %0.2f"
+msgstr "Kulma = %0.2f Risteysnumero = %0.2f"
+
+#: ../bin/chndldto.c:134
+msgid "Frog angle is too close to 0"
+msgstr "Risteyskulma on liian lähellä nollaa"
+
+#: ../bin/chndldto.c:137
+msgid "Select point position"
+msgstr "Aseta kielten kärjet"
+
+#: ../bin/chndldto.c:152 ../bin/chndldto.c:178
+msgid "points"
+msgstr "Kielien päät"
+
+#: ../bin/chndldto.c:282
+#, c-format
+msgid "Length = %0.2f Angle = %0.2f Frog# = %0.2f"
+msgstr "Pituus = %0.2f Kulma = %0.2f Risteysnumero = %0.2f"
+
+#: ../bin/chndldto.c:286
+msgid "Create Hand Laid Turnout"
+msgstr "Luo käsin aseteltu vaihde"
+
+#: ../bin/chndldto.c:381
+msgid "HandLaidTurnout"
+msgstr "Käsin aseteltu vaihde"
+
+#: ../bin/cjoin.c:170
+#, c-format
+msgid "Curved Track: Radius=%s Length=%s"
+msgstr "Kaareva raideosa: Säde=%s Pituus=%s"
+
+#: ../bin/cjoin.c:261
+#, c-format
+msgid "Curved Track: Radius=%s Length=%s Angle=%0.3f"
+msgstr "Kaareva raideosa: Säde=%s Pituus=%s Kulma=%0.3f"
+
+#: ../bin/cjoin.c:363
+#, c-format
+msgid "Track (%d) is too short for transition-curve by %0.3f"
+msgstr "Raide (%d) on %0.3f liian lyhyt kaarreloivennusta varten"
+
+#: ../bin/cjoin.c:381
+#, c-format
+msgid "Connecting track is too short by %0.3f"
+msgstr "Yhdysraide on %0.3f liian lyhyt"
+
+#: ../bin/cjoin.c:431
+msgid "Click on an unselected End-Point"
+msgstr "Valitsemattoman raideosan päätepiste"
+
+#: ../bin/cjoin.c:432
+msgid "Click on a selected End-Point"
+msgstr "Valitun raideosan päätepiste"
+
+#: ../bin/cjoin.c:438
+msgid "unselected"
+msgstr "valitsematon"
+
+#: ../bin/cjoin.c:438 ../bin/cprint.c:162
+msgid "selected"
+msgstr "valittu"
+
+#: ../bin/cjoin.c:499
+msgid "Left click - Select first draw object end"
+msgstr ""
+
+#: ../bin/cjoin.c:539 ../bin/cjoin.c:576
+msgid "Not a line - Try again"
+msgstr ""
+
+#: ../bin/cjoin.c:572
+#, fuzzy
+msgid "Left click - Select second object end"
+msgstr "Klikkaa valittua objektia kohdistaaksesi"
+
+#: ../bin/cjoin.c:584
+msgid "Same draw object and same endpoint - Try again"
+msgstr ""
+
+#: ../bin/cjoin.c:632
+#, fuzzy
+msgid "Create PolyLine"
+msgstr "Luo viivoja"
+
+#: ../bin/cjoin.c:913
+#, fuzzy
+msgid "Left click - join with track"
+msgstr ""
+"Hiiren vasen: yhdistä raiteet, Vaihto + hiiren vasen: siirrä yhdistääksesi"
+
+#: ../bin/cjoin.c:916
+msgid "Left click - join with track, Shift Left click - move to join"
+msgstr ""
+"Hiiren vasen: yhdistä raiteet, Vaihto + hiiren vasen: siirrä yhdistääksesi"
+
+#: ../bin/cjoin.c:1011 ../bin/cjoin.c:1469 ../bin/cjoin.c:1476
+msgid "Select 2nd track"
+msgstr "Valitse 2. raideosa"
+
+#: ../bin/cjoin.c:1266
+msgid "Beyond end of 2nd track"
+msgstr "2. raideosan päätepisteen takana"
+
+#: ../bin/cjoin.c:1302
+msgid "Beyond end of 1st track"
+msgstr "1. raideosan päätepisteen takana"
+
+#: ../bin/cjoin.c:1325
+msgid "First Track Type not supported for non-Cornu Join"
+msgstr ""
+
+#: ../bin/cjoin.c:1333
+msgid "First "
+msgstr "Ensimmäinen "
+
+#: ../bin/cjoin.c:1359
+msgid "Second Track Type not supported for non-Cornu Join"
+msgstr ""
+
+#: ../bin/cjoin.c:1366
+msgid "Second "
+msgstr "Toinen "
+
+#: ../bin/cjoin.c:1380 ../bin/track.c:2395 ../bin/track.c:2434
+#: ../bin/track.c:2509
+msgid "Connecting "
+msgstr "Yhdistetään "
+
+#: ../bin/cjoin.c:1479
+msgid "Join Tracks"
+msgstr "Yhdistä raiteet"
+
+#: ../bin/cjoin.c:1575
+msgid "Join"
+msgstr "Yhdistä"
+
+#: ../bin/cjoin.c:1576
+#, fuzzy
+msgid "Join Track"
+msgstr "Yhdistä raiteet"
+
+#: ../bin/cjoin.c:1579
+#, fuzzy
+msgid "Join Lines"
+msgstr "Viivat"
+
+#: ../bin/cmisc.c:55
+msgid "Middle"
+msgstr "Keskimmäinen"
+
+#: ../bin/cmisc.c:55 ../bin/macro.c:70
+msgid "End"
+msgstr "Lopeta"
+
+#: ../bin/cmisc.c:140 ../bin/tcurve.c:409 ../bin/tease.c:535
+#, fuzzy
+msgid "Lock"
+msgstr "Veturi?"
+
+#: ../bin/cmisc.c:593
+#, fuzzy
+msgid "Select track to describe +Shift for Frozen"
+msgstr "Valitse määriteltävä raideosa"
+
+#: ../bin/cmisc.c:691 ../bin/doption.c:245
+msgid "Properties"
+msgstr "Asetukset"
+
+#: ../bin/cmodify.c:276
+msgid ""
+"Select a track to modify, Left-Click change length, Right-Click to add "
+"flextrack"
+msgstr ""
+
+#: ../bin/cmodify.c:520
+msgid "Modify Track"
+msgstr "Muokkaa raidetta"
+
+#: ../bin/cmodify.c:564
+#, fuzzy
+msgid "Drag to add flex track"
+msgstr "Vedä luodaksesi lähtevän raiteen"
+
+#: ../bin/cmodify.c:569
+#, fuzzy
+msgid "No track to extend"
+msgstr "Yhtään raidetta ei irroitettu"
+
+#: ../bin/cmodify.c:574
+#, fuzzy
+msgid "No track selected"
+msgstr "Kirjasinta ei valittu"
+
+#: ../bin/cmodify.c:724
+#, c-format
+msgid "Curve Track: Radius=%s Length=%s Angle=%0.3f"
+msgstr "Kaareva raideosa: Säde=%s Pituus=%s Kulma=%0.3f"
+
+#: ../bin/cmodify.c:740
+msgid "Extend Track"
+msgstr "Jatka raidetta"
+
+#: ../bin/cmodify.c:882
+msgid "Modify"
+msgstr "Muokkaa"
+
+#: ../bin/cmodify.c:895 ../bin/cselect.c:3664 ../bin/cselect.c:3686
+#: ../bin/menu.c:937 ../bin/menu.c:939
+msgid "Zoom In"
+msgstr "Lähennä"
+
+#: ../bin/cmodify.c:896 ../bin/cselect.c:3669 ../bin/cselect.c:3687
+#: ../bin/menu.c:941 ../bin/menu.c:943
+msgid "Zoom Out"
+msgstr "Loitonna"
+
+#: ../bin/cmodify.c:897
+msgid "Pan center - 'c'"
+msgstr ""
+
+#: ../bin/cnote.c:67 ../bin/textnoteui.c:47 ../bin/trknote.c:52
+msgid "Note"
+msgstr "Muistiinpano"
+
+#: ../bin/cnote.c:73
+msgid "Replace this text with your layout notes"
+msgstr "Korvaa tämä teksti muistiinpanollasi"
+
+#: ../bin/command.c:388 ../bin/command.c:395
+#, fuzzy
+msgid ""
+"Cancelling the current command will undo the changes\n"
+"you are currently making. Do you want to do the update instead?"
+msgstr ""
+"Komennon peruuttaminen kumoaa muutokset,\n"
+"joita olet tekemässä. Haluatko jatkaa?"
+
+#: ../bin/command.c:390 ../bin/command.c:458 ../bin/cprint.c:1445
+#: ../bin/dbitmap.c:428 ../bin/filenoteui.c:157 ../bin/param.c:3013
+#: ../bin/svgoutput.c:460
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:675
+msgid "Cancel"
+msgstr "Peruuta"
+
+#: ../bin/command.c:456
+msgid ""
+"Cancelling the current command will undo the changes\n"
+"you are currently making. Do you want to update?"
+msgstr ""
+"Komennon peruuttaminen kumoaa muutokset,\n"
+"joita olet tekemässä. Haluatko jatkaa?"
+
+#: ../bin/compound.c:722 ../bin/compound.c:727 ../bin/compound.c:732
+#: ../bin/compound.c:737 ../bin/tbezier.c:286 ../bin/tbezier.c:293
+#: ../bin/tcornu.c:322 ../bin/tcornu.c:327
+#, fuzzy
+msgid "Center X,Y"
+msgstr "Keskipiste: X"
+
+#: ../bin/compound.c:724 ../bin/tbezier.c:287 ../bin/tcornu.c:323
+#, fuzzy
+msgid "Z1"
+msgstr "Z"
+
+#: ../bin/compound.c:729 ../bin/tbezier.c:294 ../bin/tcornu.c:328
+#, fuzzy
+msgid "Z2"
+msgstr "Z"
+
+#: ../bin/compound.c:730
+#, fuzzy
+msgid "End Pt 3: X,Y"
+msgstr "Päätepiste 1: X"
+
+#: ../bin/compound.c:734
+#, fuzzy
+msgid "Z3"
+msgstr "Z"
+
+#: ../bin/compound.c:735
+#, fuzzy
+msgid "End Pt 4: X,Y"
+msgstr "Päätepiste 1: X"
+
+#: ../bin/compound.c:739
+#, fuzzy
+msgid "Z4"
+msgstr "Z"
+
+#: ../bin/compound.c:741 ../bin/tease.c:528
+#, fuzzy
+msgid "Origin: X,Y"
+msgstr "Origo: X"
+
+#: ../bin/compound.c:746 ../bin/cstruct.c:65 ../bin/cturnout.c:84
+#: ../bin/dcar.c:4694 ../bin/dcar.c:4700 ../bin/dcustmgm.c:46
+#: ../bin/doption.c:99 ../bin/doption.c:100
+msgid "Part No"
+msgstr "Tuotekoodi"
+
+#: ../bin/compound.c:747
+#, fuzzy
+msgid "LineType"
+msgstr "Tyyppi"
+
+#: ../bin/compound.c:1025 ../bin/cstruct.c:1030 ../bin/cstruct.c:1246
+msgid "Structure"
+msgstr "Rakennus"
+
+#: ../bin/compound.c:1027 ../bin/cswitchmotor.c:232 ../bin/cturnout.c:988
+msgid "Turnout"
+msgstr "Palaraide"
+
+#: ../bin/compound.c:1027
+msgid "Sectional Track"
+msgstr "Palaraide"
+
+#: ../bin/compound.c:1031
+#, fuzzy, c-format
+msgid "%s (%d) Layer= %d %s"
+msgstr "(%d): Taso=%d %s"
+
+#: ../bin/cparalle.c:49 ../bin/cparalle.c:98 ../bin/cparalle.c:140
+#: ../bin/ctodesgn.c:600 ../bin/ctodesgn.c:626 ../bin/ctodesgn.c:651
+#: ../bin/tcurve.c:403
+msgid "Separation"
+msgstr "Väli"
+
+#: ../bin/cparalle.c:52 ../bin/cparalle.c:99
+#, fuzzy
+msgid "Radius Factor"
+msgstr "Säde2"
+
+#: ../bin/cparalle.c:141
+#, fuzzy
+msgid "Radius factor"
+msgstr "Säde2"
+
+#: ../bin/cparalle.c:155
+msgid " Track/Line doesn't support parallel"
+msgstr ""
+
+#: ../bin/cparalle.c:230
+msgid "Create Parallel Track"
+msgstr "Luo rinnakkainen raide"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:470
+#: ../bin/cparalle.c:299
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1252
+msgid "Parallel"
+msgstr "Rinnakkainen"
+
+#: ../bin/cparalle.c:300
+#, fuzzy
+msgid "Parallel Track"
+msgstr "Luo rinnakkainen raide"
+
+#: ../bin/cparalle.c:303
+#, fuzzy
+msgid "Parallel Line"
+msgstr "Rinnakkainen"
+
+#: ../bin/cprint.c:110
+msgid "Portrait"
+msgstr "Pysty"
+
+#: ../bin/cprint.c:110
+msgid "Landscape"
+msgstr "Vaaka"
+
+#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:90 ../bin/cswitchmotor.c:109
+#: ../bin/cswitchmotor.c:229 ../bin/dbench.c:75 ../bin/dease.c:68
+#: ../bin/doption.c:93 ../bin/doption.c:95 ../bin/macro.c:1416
+msgid "Normal"
+msgstr "Normaali"
+
+#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:91 ../bin/cswitchmotor.c:110
+#: ../bin/cswitchmotor.c:230 ../bin/ctrain.c:1011 ../bin/ctrain.c:1324
+msgid "Reverse"
+msgstr "Taakse"
+
+#: ../bin/cprint.c:112
+msgid "Engineering Data"
+msgstr "Suunnittelutiedot"
+
+#: ../bin/cprint.c:113
+#, fuzzy
+msgid "Registration Marks (in 1:1 scale only)"
+msgstr "Tulosta sivujen kohdistusmerkinnät tulostusmittakaavan ollessa 1:1?"
+
+#: ../bin/cprint.c:114
+#, fuzzy
+msgid "Page Numbers"
+msgstr "Pilarin numero"
+
+#: ../bin/cprint.c:115
+msgid "Ignore Page Margins"
+msgstr "Ei marginaaleja"
+
+#: ../bin/cprint.c:116 ../bin/csnap.c:733 ../bin/doption.c:559
+msgid "Snap Grid"
+msgstr "Kohdistusruudukko"
+
+#: ../bin/cprint.c:117
+#, fuzzy
+msgid "Layout Edge"
+msgstr "Ratasuunnitelma"
+
+#: ../bin/cprint.c:117
+msgid "Every Page"
+msgstr ""
+
+#: ../bin/cprint.c:118
+#, fuzzy
+msgid "Roadbed Outline"
+msgstr "Tulosta ratapenkan ulkoreuna"
+
+#: ../bin/cprint.c:119
+#, fuzzy
+msgid "Centerline below Scale 1:1"
+msgstr "Tulosta keskiviiva"
+
+#: ../bin/cprint.c:128
+msgid "Print Scale"
+msgstr "Tulostuksen mittakaava"
+
+#: ../bin/cprint.c:129
+msgid "Page Width"
+msgstr "Sivun leveys"
+
+#: ../bin/cprint.c:130
+msgid "Max"
+msgstr "Max"
+
+#: ../bin/cprint.c:132
+msgid "Snap Shot"
+msgstr "Yhdelle sivulle"
+
+#: ../bin/cprint.c:133
+msgid "Page Format"
+msgstr "Sivun muotoilu"
+
+#: ../bin/cprint.c:134
+msgid "Print Order"
+msgstr "Tulostusjärjestys"
+
+#: ../bin/cprint.c:135
+#, fuzzy
+msgid "Print "
+msgstr "Tulosta"
+
+#: ../bin/cprint.c:144
+#, fuzzy
+msgid "Rulers:"
+msgstr "Viivain"
+
+#: ../bin/cprint.c:150
+#, fuzzy
+msgid " Width"
+msgstr "Leveys"
+
+#: ../bin/cprint.c:152
+#, fuzzy
+msgid "Margins"
+msgstr "Päätaso"
+
+#: ../bin/cprint.c:153 ../bin/cturntbl.c:274
+msgid "Origin: X"
+msgstr "Origo: X"
+
+#: ../bin/cprint.c:154 ../bin/csnap.c:549
+msgid "Y"
+msgstr "Y"
+
+#: ../bin/cprint.c:155 ../bin/cprint.c:631 ../bin/cprofile.c:706
+#: ../bin/dcar.c:2325
+msgid "Reset"
+msgstr "Palauta"
+
+#: ../bin/cprint.c:157
+msgid "Setup"
+msgstr "Asetukset"
+
+#: ../bin/cprint.c:158 ../bin/cselect.c:3675 ../bin/menu.c:974
+#, fuzzy
+msgid "Select All"
+msgstr "Valitse kaikki"
+
+#: ../bin/cprint.c:159 ../bin/cprofile.c:708 ../bin/layout.c:671
+#: ../bin/misc.c:725
+msgid "Clear"
+msgstr "Tyhjennä"
+
+#: ../bin/cprint.c:161
+msgid "0 pages"
+msgstr "0 sivua"
+
+#: ../bin/cprint.c:190
+#, fuzzy, c-format
+msgid "%d page"
+msgstr "%d sivua"
+
+#: ../bin/cprint.c:190
+#, c-format
+msgid "%d pages"
+msgstr "%d sivua"
+
+#: ../bin/cprint.c:419
+#, fuzzy, c-format
+msgid "PrintScale 1:%ld Room %s x %s Model Scale %s File %s"
+msgstr "Tulostusmittakaava %ld:1 Huone %s x %s Mittakaava %s Tiedosto %s"
+
+#: ../bin/cprint.c:746
+#, fuzzy
+msgid "Print Margins"
+msgstr "Tulostimen marginaalien testisivu"
+
+#: ../bin/cprint.c:1440 ../bin/cprofile.c:710 ../bin/ctodesgn.c:3147
+#: ../bin/denum.c:51
+msgid "Print"
+msgstr "Tulosta"
+
+#: ../bin/cprint.c:1472
+msgid "Select pages to print, or drag to move print grid"
+msgstr "Valitse tulostettavat sivut tai siirrä tulostusruudukkoa raahaamalla"
+
+#: ../bin/cprint.c:1574
+msgid "Print..."
+msgstr "Tulosta..."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:466
+#: ../bin/cprofile.c:608 ../bin/cprofile.c:1442 ../bin/cprofile.c:1522
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1244
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:127
+msgid "Profile"
+msgstr "Profiili"
+
+#: ../bin/cprofile.c:626
+#, c-format
+msgid "%s Profile: %s"
+msgstr "%s Profiili: %s"
+
+#: ../bin/cprofile.c:704 ../bin/menu.c:225
+msgid "Change"
+msgstr "Muuta"
+
+#: ../bin/cprofile.c:751 ../bin/cprofile.c:761
+#, c-format
+msgid "Elev = %0.1f"
+msgstr "Korkeus = %0.1f"
+
+#: ../bin/cprofile.c:763
+#, c-format
+msgid "Elev=%0.2f %0.1f%%"
+msgstr "Korkeus=%0.2f %0.1f%%"
+
+#: ../bin/cprofile.c:768
+#, c-format
+msgid "%0.1f%% Elev = %0.2f"
+msgstr "%0.1f%% Korkeus = %0.2f"
+
+#: ../bin/cprofile.c:773
+#, c-format
+msgid "%0.1f%% Elev = %0.2f %0.1f%%"
+msgstr "%0.1f%% Korkeus = %0.2f %0.1f%%"
+
+#: ../bin/cprofile.c:788 ../bin/cprofile.c:858 ../bin/cprofile.c:1394
+msgid "Profile Command"
+msgstr "Profiili komento"
+
+#: ../bin/cprofile.c:797 ../bin/cprofile.c:1448
+msgid "Drag to change Elevation"
+msgstr "Muuta korkeutta raahaamalla"
+
+#: ../bin/cprofile.c:899
+msgid "Select a Defined Elevation to start Profile"
+msgstr "Valitse määritelty korkeus aloittaaksesi profiili"
+
+#: ../bin/cprofile.c:901
+msgid "Select a Defined Elevation to extend Profile"
+msgstr "Valitse määritelty korkeus laajentaaksesi profiilia"
+
+#: ../bin/cprofile.c:1456
+msgid "Select a Defined Elevation to start profile"
+msgstr "Valitse määritelty korkeus aloittaaksesi profiili"
+
+#: ../bin/cprofile.c:1527
+msgid "Define"
+msgstr "Määrittele"
+
+#: ../bin/cpull.c:454 ../bin/cpull.c:616
+#, c-format
+msgid "%d tracks moved"
+msgstr "%d raideosaa siirretty"
+
+#: ../bin/cpull.c:503
+msgid "Pull Tracks"
+msgstr "Liitä raiteet"
+
+#: ../bin/cpull.c:579
+msgid "Tighten Tracks"
+msgstr "Yhdistä raiteet"
+
+#: ../bin/cpull.c:670
+msgid "Connect Multiple Tracks - Select multiple tracks to join first"
+msgstr ""
+
+#: ../bin/cpull.c:673
+#, fuzzy
+msgid "Try to Connect all Selected Tracks?"
+msgstr "Nosta tai laske kaikkia valittuja raiteita"
+
+#: ../bin/cpull.c:680
+#, fuzzy
+msgid "ReConnect"
+msgstr "Yhdistetään "
+
+#: ../bin/cpull.c:720
+#, c-format
+msgid ""
+"Round 1 %d and Round 2 %d tracks connected, %d close pairs of end Points "
+"were not connected"
+msgstr ""
+
+#: ../bin/cpull.c:747
+#, fuzzy
+msgid "Select first endpoint or turntable to connect, +Shift to tighten"
+msgstr "Valitse ensimmäinen yhdistettävä päätepiste"
+
+#: ../bin/cpull.c:750
+msgid ""
+"Select first endpoint to connect, or Right-Click for connecting selected "
+"tracks (not turntable)"
+msgstr ""
+
+#: ../bin/cpull.c:814
+#, fuzzy
+msgid "Select second endpoint or turntable to connect"
+msgstr "Valitse toinen yhdistettävä päätepiste"
+
+#: ../bin/cpull.c:821
+msgid "Same Track! - please select another"
+msgstr ""
+
+#: ../bin/cpull.c:918
+#, fuzzy
+msgid "Connect Two Tracks"
+msgstr "Liitä kaksi raidetta"
+
+#: ../bin/cpull.c:924
+msgid "Connect All Selected - 'S'"
+msgstr ""
+
+#: ../bin/cruler.c:390
+#, fuzzy
+msgid "Measurement"
+msgstr "Kaarreloivennus"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:477
+#: ../bin/cruler.c:391 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1266
+msgid "Ruler"
+msgstr "Viivain"
+
+#: ../bin/cruler.c:394
+#, fuzzy
+msgid "Protractor"
+msgstr "Esikuva"
+
+#: ../bin/cselect.c:688
+msgid "Change Track Width"
+msgstr "Muuta raiteen pituutta"
+
+#: ../bin/cselect.c:714
+#, fuzzy
+msgid "Change Line Type"
+msgstr "Muuta tasojen asetuksia"
+
+#: ../bin/cselect.c:739
+msgid "Delete only works in Select Mode"
+msgstr ""
+
+#: ../bin/cselect.c:755
+msgid "Delete Tracks"
+msgstr "Poista raiteita"
+
+#: ../bin/cselect.c:862
+msgid "Hide Tracks (Tunnel)"
+msgstr "Piilota raiteet (tunneli)"
+
+#: ../bin/cselect.c:882
+#, fuzzy
+msgid "Bridge Tracks "
+msgstr "Yhdistä raiteet"
+
+#: ../bin/cselect.c:900
+#, fuzzy
+msgid "Roadbed Tracks "
+msgstr "Pyöritä raiteita"
+
+#: ../bin/cselect.c:918
+#, fuzzy
+msgid "Ties Tracks "
+msgstr "Ohuet raiteet"
+
+#: ../bin/cselect.c:956 ../bin/menu.c:1118
+msgid "Move To Current Layer"
+msgstr "Siirrä nykyiselle tasolle"
+
+#: ../bin/cselect.c:1010 ../bin/menu.c:1303
+msgid "Clear Elevations"
+msgstr "Poista korkeusmääritykset"
+
+#: ../bin/cselect.c:1056
+msgid "Add Elevations"
+msgstr "Päätepisteiden korkeudet"
+
+#: ../bin/cselect.c:1072
+msgid "Refresh Compound"
+msgstr "Päivitä vaihteet/rakennukset"
+
+#: ../bin/cselect.c:1471
+msgid "Cornu too tight - it was deleted"
+msgstr ""
+
+#: ../bin/cselect.c:1526
+msgid "Move To Join"
+msgstr "Siirrä yhdistääksesi"
+
+#: ../bin/cselect.c:1735
+msgid "Drag to move selected tracks - Shift+Ctrl+Arrow micro-steps the move"
+msgstr ""
+
+#: ../bin/cselect.c:1756 ../bin/cselect.c:1890 ../bin/cselect.c:2295
+msgid "Move Tracks"
+msgstr "Siirrä raiteita"
+
+#: ../bin/cselect.c:1939
+#, fuzzy
+msgid "Align: Click on a selected object to be aligned"
+msgstr "Klikkaa valittua objektia kohdistaaksesi"
+
+#: ../bin/cselect.c:1978
+#, fuzzy
+msgid "Drag to rotate selected tracks, Shift+RightClick for QuickRotate Menu"
+msgstr "Pyöritä valittuja raideosia raahaamalla"
+
+#: ../bin/cselect.c:1994 ../bin/cselect.c:2370
+msgid "Rotate Tracks"
+msgstr "Pyöritä raiteita"
+
+#: ../bin/cselect.c:2009
+msgid "Center of Rotation snapped to Turntable center"
+msgstr ""
+
+#: ../bin/cselect.c:2055 ../bin/cselect.c:2090
+#, c-format
+msgid "Angle %0.3f"
+msgstr "Kulma %0.3f"
+
+#: ../bin/cselect.c:2154
+#, fuzzy, c-format
+msgid "Angle %0.3f #%ld"
+msgstr " Kulma %0.3f #%ld"
+
+#: ../bin/cselect.c:2156
+#, fuzzy, c-format
+msgid "Angle %0.3f %s"
+msgstr "Kulma %0.3f"
+
+#: ../bin/cselect.c:2162
+msgid "Origin Set. Drag away to set start angle"
+msgstr ""
+
+#: ../bin/cselect.c:2177
+#, fuzzy
+msgid "Align: Click on the 2nd unselected object"
+msgstr "Klikkaa valitsematonta objektia"
+
+#: ../bin/cselect.c:2307
+msgid "In module layer:"
+msgstr ""
+
+#: ../bin/cselect.c:2315
+#, fuzzy
+msgid "Frozen Layer:"
+msgstr "Jäädytetty"
+
+#: ../bin/cselect.c:2319
+#, fuzzy
+msgid "Not found"
+msgstr "Ei kirjasimia"
+
+#: ../bin/cselect.c:2356
+msgid "Multiple Selected"
+msgstr ""
+
+#: ../bin/cselect.c:2383
+#, fuzzy
+msgid "Toggle Detail"
+msgstr "Näytä/piilota merkintä"
+
+#: ../bin/cselect.c:2399
+msgid "Toggle Label"
+msgstr "Näytä/piilota merkintä"
+
+#: ../bin/cselect.c:2572
+#, fuzzy
+msgid "Elevation description"
+msgstr "Vasemman kuvaus"
+
+#: ../bin/cselect.c:2579
+#, fuzzy
+msgid "Hidden description - 's' to Show, 'd' Details"
+msgstr "Näytä kuvaus"
+
+#: ../bin/cselect.c:2582
+#, fuzzy
+msgid "Shown description - 'h' to Hide"
+msgstr "Näytä kuvaus"
+
+#: ../bin/cselect.c:2590
+msgid "Select and drag a description"
+msgstr "Valitse ja raahaa merkintöjä"
+
+#: ../bin/cselect.c:2632
+msgid "Hidden Label - Drag to reveal"
+msgstr ""
+
+#: ../bin/cselect.c:2634
+#, fuzzy
+msgid "Drag label"
+msgstr "Raahaa paikoilleen"
+
+#: ../bin/cselect.c:2644
+msgid "Move Label"
+msgstr "Siirrä merkintöjä"
+
+#: ../bin/cselect.c:2683
+msgid "To Hide, use Context Menu"
+msgstr ""
+
+#: ../bin/cselect.c:2717 ../bin/cselect.c:3715
+#, fuzzy
+msgid "Show/Hide Description"
+msgstr "Näytä kuvaus"
+
+#: ../bin/cselect.c:2720
+#, fuzzy
+msgid "Toggle Detailed Description"
+msgstr "Siirrä merkintöjä"
+
+#: ../bin/cselect.c:2804
+msgid "Drag to mark mirror line"
+msgstr "Vedä hiirellä peilauslinja"
+
+#: ../bin/cselect.c:2815
+#, c-format
+msgid "Angle %0.2f"
+msgstr "Kulma %0.2f"
+
+#: ../bin/cselect.c:2818
+msgid "Flip Tracks"
+msgstr "Peilaa raiteet"
+
+#: ../bin/cselect.c:3014 ../bin/cselect.c:3215
+msgid "Track is in Frozen Layer"
+msgstr ""
+
+#: ../bin/cselect.c:3188
+#, fuzzy
+msgid "Select track"
+msgstr "Valitse raideosat"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:439
+#: ../bin/cselect.c:3627 ../bin/dcar.c:1765 ../bin/doption.c:245
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1190
+msgid "Select"
+msgstr "Valitse"
+
+#: ../bin/cselect.c:3654 ../bin/cselect.c:3683 ../bin/menu.c:932
+msgid "Undo"
+msgstr "Kumoa"
+
+#: ../bin/cselect.c:3655 ../bin/cselect.c:3684 ../bin/menu.c:934
+msgid "Redo"
+msgstr "Tee uudelleen"
+
+#: ../bin/cselect.c:3665 ../bin/cselect.c:3688 ../bin/draw.c:3500
+msgid "Zoom to extents - 'e'"
+msgstr ""
+
+#: ../bin/cselect.c:3667 ../bin/draw.c:3522 ../bin/menu.c:1163
+msgid "&Zoom"
+msgstr "&Zoom"
+
+#: ../bin/cselect.c:3670 ../bin/draw.c:3520
+msgid "Pan to Origin - 'o'/'0'"
+msgstr ""
+
+#: ../bin/cselect.c:3672 ../bin/cselect.c:3692
+msgid "Pan Center Here - 'c'"
+msgstr ""
+
+#: ../bin/cselect.c:3677 ../bin/menu.c:977 ../bin/menu.c:1126
+msgid "Select Current Layer"
+msgstr "Valitse nykyinen taso"
+
+#: ../bin/cselect.c:3690
+#, fuzzy
+msgid "Zoom to selected - 's'"
+msgstr "Kirjasinta ei valittu"
+
+#: ../bin/cselect.c:3696 ../bin/menu.c:979
+msgid "Deselect All"
+msgstr "Poista valinnat"
+
+#: ../bin/cselect.c:3699
+#, fuzzy
+msgid "Properties -'?'"
+msgstr "Asetukset"
+
+#: ../bin/cselect.c:3701
+#, fuzzy
+msgid "Modify/Activate Track"
+msgstr "Muokkaa raidetta"
+
+#: ../bin/cselect.c:3704 ../bin/menu.c:965
+#, fuzzy
+msgid "Cut"
+msgstr "&Leikkaa"
+
+#: ../bin/cselect.c:3705 ../bin/menu.c:967
+msgid "Copy"
+msgstr "Kopioi"
+
+#: ../bin/cselect.c:3706 ../bin/fileio.c:1730 ../bin/menu.c:969
+msgid "Paste"
+msgstr "Liitä"
+
+#: ../bin/cselect.c:3707 ../bin/menu.c:971
+#, fuzzy
+msgid "Clone"
+msgstr "Sulje"
+
+#: ../bin/cselect.c:3709
+#, fuzzy
+msgid "Rotate..."
+msgstr "Pyöritä"
+
+#: ../bin/cselect.c:3711
+msgid "Align"
+msgstr "Kohdista"
+
+#: ../bin/cselect.c:3717 ../bin/menu.c:1142
+msgid "Ties/NoTies"
+msgstr ""
+
+#: ../bin/cselect.c:3719
+msgid "Hide/NoHide"
+msgstr ""
+
+#: ../bin/cselect.c:3721
+msgid "Bridge/NoBridge"
+msgstr ""
+
+#: ../bin/cselect.c:3723
+msgid "Roadbed/NoRoadbed"
+msgstr ""
+
+#: ../bin/cselect.c:3725
+msgid "NoTies/Ties"
+msgstr ""
+
+#: ../bin/cselect.c:3727
+msgid "Thickness..."
+msgstr ""
+
+#: ../bin/cselect.c:3728 ../bin/menu.c:1150
+msgid "Thin Tracks"
+msgstr "Ohuet raiteet"
+
+#: ../bin/cselect.c:3730 ../bin/menu.c:1152
+msgid "Medium Tracks"
+msgstr "Keskipaksut raiteet"
+
+#: ../bin/cselect.c:3732 ../bin/menu.c:1154
+msgid "Thick Tracks"
+msgstr "Paksut raiteet"
+
+#: ../bin/cselect.c:3741
+msgid "Dash-Dotted Line"
+msgstr ""
+
+#: ../bin/cselect.c:3743
+msgid "Dash-Dot-Dotted Line"
+msgstr ""
+
+#: ../bin/cselect.c:3746
+#, fuzzy
+msgid "Move To Front"
+msgstr "Siirrä yhdistääksesi"
+
+#: ../bin/cselect.c:3747
+#, fuzzy
+msgid "Move To Back"
+msgstr "Siirrä raiteita"
+
+#: ../bin/cselect.c:3749
+#, fuzzy
+msgid "Group"
+msgstr "Ryhmittele"
+
+#: ../bin/cselect.c:3750
+#, fuzzy
+msgid "UnGroup"
+msgstr "Pura ryhmittely"
+
+#: ../bin/cselect.c:3796
+msgid "Move Description"
+msgstr "Siirrä merkintöjä"
+
+#: ../bin/cselect.c:3804 ../bin/menu.c:294 ../bin/menu.c:986
+msgid "Move"
+msgstr "Siirrä"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:484
+#: ../bin/cselect.c:3807 ../bin/menu.c:271 ../bin/menu.c:988
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1280
+msgid "Rotate"
+msgstr "Pyöritä"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:485
+#: ../bin/cselect.c:3810 ../bin/dcar.c:2327
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1282
+msgid "Flip"
+msgstr "Peilikuva"
+
+#: ../bin/csensor.c:214
+#, fuzzy
+msgid "Change Sensor"
+msgstr "Muuta mittakaavaa"
+
+#: ../bin/csensor.c:261 ../bin/csensor.c:599
+msgid "Sensor"
+msgstr ""
+
+#: ../bin/csensor.c:407
+#, fuzzy
+msgid "Create Sensor"
+msgstr "Luo runkorakenne"
+
+#: ../bin/csensor.c:410
+#, fuzzy
+msgid "Modify Sensor"
+msgstr "Muokkaa raidetta"
+
+#: ../bin/csensor.c:445
+#, fuzzy
+msgid "Edit sensor"
+msgstr "Muokkaa -valikko"
+
+#: ../bin/csensor.c:483
+#, fuzzy
+msgid "Place sensor"
+msgstr "Aseta uusi vaihde"
+
+#: ../bin/csnap.c:530
+msgid "Horz"
+msgstr "Vaaka"
+
+#: ../bin/csnap.c:532
+msgid "Spacing"
+msgstr "Väli"
+
+#: ../bin/csnap.c:534
+msgid "Divisions"
+msgstr "Jako"
+
+#: ../bin/csnap.c:537
+msgid "Enable"
+msgstr "Salli"
+
+#: ../bin/csnap.c:538
+msgid "Vert"
+msgstr "Pysty"
+
+#: ../bin/csnap.c:547 ../bin/dease.c:78
+msgid "X"
+msgstr "X"
+
+#: ../bin/csnap.c:551
+msgid "A"
+msgstr "K"
+
+#: ../bin/csnap.c:554
+msgid "Show"
+msgstr "Näytä"
+
+#: ../bin/csnap.c:815
+msgid "Change Grid..."
+msgstr "Kohdistusruudukko..."
+
+#: ../bin/csplit.c:45
+msgid "Set Block Gaps"
+msgstr "Aseta lohkojen välit"
+
+#: ../bin/csplit.c:137
+#, fuzzy
+msgid "Select track and position for split"
+msgstr "Valitse pilkottava raide"
+
+#: ../bin/csplit.c:161
+#, fuzzy
+msgid "Can't Split that Track Object"
+msgstr "Pilko raide"
+
+#: ../bin/csplit.c:169 ../bin/csplit.c:182 ../bin/csplit.c:505
+msgid "Split Track"
+msgstr "Pilko raide"
+
+#: ../bin/csplit.c:178 ../bin/csplit.c:322 ../bin/csplit.c:410
+#, fuzzy
+msgid "Can't Split that Draw Object"
+msgstr "Pilko raide"
+
+#: ../bin/csplit.c:188
+#, fuzzy
+msgid "No Track to Split"
+msgstr "Raiteet"
+
+#: ../bin/csplit.c:203 ../bin/dbench.c:65 ../bin/dbench.c:77
+msgid "Left"
+msgstr "Vasen"
+
+#: ../bin/csplit.c:205 ../bin/dbench.c:66 ../bin/dbench.c:76
+msgid "Right"
+msgstr "Oikea"
+
+#: ../bin/csplit.c:207 ../bin/csplit.c:216
+msgid "Both"
+msgstr "Molemmat"
+
+#: ../bin/csplit.c:212
+msgid "Top"
+msgstr "Päällimmäiseksi"
+
+#: ../bin/csplit.c:214
+msgid "Bottom"
+msgstr "Alimmaiseksi"
+
+#: ../bin/csplit.c:307
+#, fuzzy
+msgid "Select draw to split"
+msgstr "Valitse pilkottava raide"
+
+#: ../bin/csplit.c:326 ../bin/csplit.c:508
+#, fuzzy
+msgid "Split Draw"
+msgstr "Pilko raide"
+
+#: ../bin/csplit.c:332
+#, fuzzy
+msgid "No Draw to Split"
+msgstr "Raahaa paikoilleen"
+
+#: ../bin/csplit.c:371
+#, fuzzy
+msgid "Select the draw object to Trim to"
+msgstr "Siirrä valittu objekti päällimmäiseksi"
+
+#: ../bin/csplit.c:387
+#, fuzzy
+msgid "Can't Trim with a Track"
+msgstr "Pilko raide"
+
+#: ../bin/csplit.c:392
+msgid "Select an intersecting draw object to Trim"
+msgstr ""
+
+#: ../bin/csplit.c:397
+msgid "No Draw to Trim with"
+msgstr ""
+
+#: ../bin/csplit.c:404
+#, fuzzy
+msgid "Can't Split a track object"
+msgstr "Pilko raide"
+
+#: ../bin/csplit.c:432 ../bin/csplit.c:511
+#, fuzzy
+msgid "Trim Draw"
+msgstr "Väri"
+
+#: ../bin/csplit.c:437
+msgid "Select another draw object to Trim, or Space to Deselect"
+msgstr ""
+
+#: ../bin/csplit.c:504
+#, fuzzy
+msgid "Split"
+msgstr "Pilko raide"
+
+#: ../bin/csignal.c:239
+#, fuzzy
+msgid "Number Of Heads"
+msgstr "Numerot"
+
+#: ../bin/csignal.c:279
+#, fuzzy
+msgid "Change Signal"
+msgstr "Muuta mittakaavaa"
+
+#: ../bin/csignal.c:314
+#, fuzzy, c-format
+msgid "(%d [%s]): Layer=%u, %d heads at %0.3f,%0.3f A%0.3f"
+msgstr "(%d): Taso=%d %s"
+
+#: ../bin/csignal.c:325 ../bin/csignal.c:931
+msgid "Signal"
+msgstr ""
+
+#: ../bin/csignal.c:518
+#, fuzzy
+msgid "Number of Heads"
+msgstr "Numerot"
+
+#: ../bin/csignal.c:523
+#, fuzzy
+msgid "Edit Aspect"
+msgstr "Muokkaa -valikko"
+
+#: ../bin/csignal.c:525
+msgid "Add Aspect"
+msgstr ""
+
+#: ../bin/csignal.c:527
+#, fuzzy
+msgid "Delete Aspect"
+msgstr "Poista valitut objektit"
+
+#: ../bin/csignal.c:540
+msgid "Aspect Index"
+msgstr ""
+
+#: ../bin/csignal.c:555
+#, fuzzy
+msgid "Create Signal"
+msgstr "Luo viivoja"
+
+#: ../bin/csignal.c:560
+#, fuzzy
+msgid "Modify Signal"
+msgstr "Muokkaa raidetta"
+
+#: ../bin/csignal.c:677
+#, fuzzy
+msgid "Edit aspect"
+msgstr "Muokkaa -valikko"
+
+#: ../bin/csignal.c:724
+#, fuzzy, c-format
+msgid "Are you sure you want to delete the %d aspect(s)"
+msgstr "Haluatko varmasti poistaa nämä %d vaunua/veturia?"
+
+#: ../bin/csignal.c:747
+#, fuzzy
+msgid "Edit signal"
+msgstr "Muokkaa -valikko"
+
+#: ../bin/csignal.c:811
+msgid "Place base of signal"
+msgstr ""
+
+#: ../bin/csignal.c:819
+#, fuzzy
+msgid "Drag to orient signal"
+msgstr "Aseta kulma raahaamalla"
+
+#: ../bin/cstraigh.c:77
+#, fuzzy
+msgid "Place 1st endpoint of straight track, snap to unconnected endpoint"
+msgstr "Aseta suoran raiteen 1. päätepiste"
+
+#: ../bin/cstraigh.c:105
+msgid "Drag to place 2nd end point"
+msgstr "Raahaa asettaaksesi 2. päätepiste"
+
+#: ../bin/cstraigh.c:151
+#, c-format
+msgid "Straight Track Length=%s Angle=%0.3f"
+msgstr "Suora raideosa Pituus=%s Kulma=%0.3f"
+
+#: ../bin/cstraigh.c:204 ../bin/tstraigh.c:245
+msgid "Straight Track"
+msgstr "Suora raide"
+
+#: ../bin/cstruct.c:67 ../bin/cturnout.c:86 ../bin/doption.c:93
+#: ../bin/doption.c:250
+msgid "Hide"
+msgstr "Piilota"
+
+#: ../bin/cstruct.c:505 ../bin/cstruct.c:535
+msgid "Pier Number"
+msgstr "Pilarin numero"
+
+#: ../bin/cstruct.c:627
+#, c-format
+msgid "Scale %d:1"
+msgstr "Mittakaava %d:1"
+
+#: ../bin/cstruct.c:629
+#, c-format
+msgid "Width %s"
+msgstr "Leveys %s"
+
+#: ../bin/cstruct.c:631
+#, c-format
+msgid "Height %s"
+msgstr "Korkeus %s"
+
+#: ../bin/cstruct.c:779
+msgid "Place Structure"
+msgstr "Aseta rakennus"
+
+#: ../bin/cstruct.c:851 ../bin/cstruct.c:904 ../bin/drawgeom.c:304
+#, fuzzy
+msgid "+Alt for Magnetic Snap"
+msgstr "Käytä kohdistusruudukkoa"
+
+#: ../bin/cstruct.c:853 ../bin/cstruct.c:906 ../bin/drawgeom.c:306
+#, fuzzy
+msgid "+Alt to inhibit Magnetic Snap"
+msgstr "Käytä kohdistusruudukkoa"
+
+#: ../bin/cstruct.c:888
+msgid "Drag to place"
+msgstr "Raahaa paikoilleen"
+
+#: ../bin/cstruct.c:921
+msgid "Drag to rotate"
+msgstr "Raahaa pyörittääksesi"
+
+#: ../bin/cstruct.c:952 ../bin/cstruct.c:1222 ../bin/cturnout.c:2812
+#: ../bin/cturnout.c:2871 ../bin/cturnout.c:3015 ../bin/cturnout.c:3162
+#, fuzzy
+msgid ""
+"Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter "
+"to accept, Esc to Cancel"
+msgstr ""
+"Siirrä vetämällä hiiren vasemmalla, pyöritä vetämällä hiiren oikealla, paina "
+"välilyönti tai return asettaaksesi raideosa paikalleen tai esc peruuttaaksesi"
+
+#: ../bin/cstruct.c:1031 ../bin/cturnout.c:2963 ../bin/param.c:3013
+msgid "Close"
+msgstr "Sulje"
+
+#: ../bin/cstruct.c:1049
+msgid "Select Structure and then drag to place"
+msgstr "Valitse rakennus ja raahaa paikoilleen"
+
+#: ../bin/cstruct.c:1091
+msgid ""
+"Left drag to move, right drag to rotate, or press Return or click Ok to "
+"finalize"
+msgstr ""
+"Siirrä raahaamalla hiiren vasemmalla, pyöritä rahaamalla hiiren oikealla, "
+"tai paina return tai klikkaa Ok kun valmis"
+
+#: ../bin/cstruct.c:1184 ../bin/cturnout.c:3127
+#, c-format
+msgid "Place %s and draw into position"
+msgstr "Aseta %s ja raahaa paikoilleen"
+
+#: ../bin/cswitchmotor.c:92 ../bin/cswitchmotor.c:111 ../bin/cswitchmotor.c:231
+#, fuzzy
+msgid "Point Sense"
+msgstr "Pisteitä"
+
+#: ../bin/cswitchmotor.c:112
+#, fuzzy
+msgid "Turnout Number"
+msgstr "Tuotekoodi"
+
+#: ../bin/cswitchmotor.c:299
+#, fuzzy
+msgid "Change Switch Motor"
+msgstr "Muuta suuntaa"
+
+#: ../bin/cswitchmotor.c:369
+msgid "Switch motor"
+msgstr ""
+
+#: ../bin/cswitchmotor.c:499
+#, c-format
+msgid "ResolveSwitchmotor: Turnout T%d: T%d doesn't exist"
+msgstr ""
+
+#: ../bin/cswitchmotor.c:570 ../bin/cswitchmotor.c:746
+msgid "Switch motor must have a name!"
+msgstr ""
+
+#: ../bin/cswitchmotor.c:574
+#, fuzzy
+msgid "Create Switch Motor"
+msgstr "Piirto"
+
+#: ../bin/cswitchmotor.c:608
+#, fuzzy
+msgid "Create switch motor"
+msgstr "Luo suora raideosa"
+
+#: ../bin/cswitchmotor.c:624 ../bin/cswitchmotor.c:655
+#: ../bin/cswitchmotor.c:687
+#, fuzzy
+msgid "Select a turnout"
+msgstr "Ensin valitsemme vaihteen.\n"
+
+#: ../bin/cswitchmotor.c:632
+msgid "Not a turnout!"
+msgstr ""
+
+#: ../bin/cswitchmotor.c:664 ../bin/cswitchmotor.c:695
+msgid "Not a switch motor!"
+msgstr ""
+
+#: ../bin/cswitchmotor.c:700
+#, c-format
+msgid "Really delete switch motor %s?"
+msgstr ""
+
+#: ../bin/cswitchmotor.c:702
+msgid "Delete Switch Motor"
+msgstr ""
+
+#: ../bin/cswitchmotor.c:750
+msgid "Modify Switch Motor"
+msgstr ""
+
+#: ../bin/cswitchmotor.c:776
+msgid "Edit switch motor"
+msgstr ""
+
+#: ../bin/cswitchmotor.c:782
+#, c-format
+msgid "Edit switch motor %d"
+msgstr ""
+
+#: ../bin/cswitchmotor.c:889
+msgid "Switch Motor"
+msgstr ""
+
+#: ../bin/cswitchmotor.c:903
+#, c-format
+msgid "Deleting Switch Motor %s"
+msgstr ""
+
+#: ../bin/ctext.c:194 ../bin/ctext.c:242
+msgid "Create Text"
+msgstr "Luo teksti"
+
+#: ../bin/ctext.c:277
+msgid "Fonts..."
+msgstr "Kirjasimet..."
+
+#: ../bin/ctodesgn.c:139
+msgid "Frog #"
+msgstr "Risteysnumero"
+
+#: ../bin/ctodesgn.c:139
+msgid "Degrees"
+msgstr "Astetta"
+
+#: ../bin/ctodesgn.c:140
+msgid "Dual Path"
+msgstr ""
+
+#: ../bin/ctodesgn.c:140
+#, fuzzy
+msgid "Quad Path"
+msgstr " ja malli"
+
+#: ../bin/ctodesgn.c:182 ../bin/ctodesgn.c:183 ../bin/ctodesgn.c:184
+#: ../bin/ctodesgn.c:185 ../bin/ctodesgn.c:244 ../bin/ctodesgn.c:270
+#: ../bin/ctodesgn.c:272 ../bin/ctodesgn.c:316 ../bin/ctodesgn.c:319
+#: ../bin/ctodesgn.c:350 ../bin/ctodesgn.c:351 ../bin/ctodesgn.c:395
+#: ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:428 ../bin/ctodesgn.c:430
+#: ../bin/ctodesgn.c:477 ../bin/ctodesgn.c:481 ../bin/ctodesgn.c:484
+#: ../bin/ctodesgn.c:742
+msgid "Offset"
+msgstr "Siirtymä"
+
+#: ../bin/ctodesgn.c:203 ../bin/ctodesgn.c:3204 ../bin/ctodesgn.c:3205
+msgid "Left Description"
+msgstr "Vasemman kuvaus"
+
+#: ../bin/ctodesgn.c:204 ../bin/ctodesgn.c:207
+msgid " #"
+msgstr " #"
+
+#: ../bin/ctodesgn.c:206 ../bin/ctodesgn.c:3203
+msgid "Right Description"
+msgstr "Oikean kuvaus"
+
+#: ../bin/ctodesgn.c:208
+msgid "Roadbed Width"
+msgstr "Ratapenkan leveys"
+
+#: ../bin/ctodesgn.c:212 ../bin/denum.c:52
+msgid "Print Setup"
+msgstr "Tulostusasetukset"
+
+#: ../bin/ctodesgn.c:242
+msgid "Diverging Length"
+msgstr "Poikkeavan raiteen pituus"
+
+#: ../bin/ctodesgn.c:243
+msgid "Diverging Angle"
+msgstr "Poikkeavan raiteen kulma"
+
+#: ../bin/ctodesgn.c:244
+msgid "Diverging Offset"
+msgstr "Poikkeavan raiteen siirtymä"
+
+#: ../bin/ctodesgn.c:245
+msgid "Overall Length"
+msgstr "Kokonaispituus"
+
+#: ../bin/ctodesgn.c:257
+msgid "Regular Turnout"
+msgstr "Tavallinen vaihde"
+
+#: ../bin/ctodesgn.c:268 ../bin/ctodesgn.c:314
+msgid "Inner Length"
+msgstr "Sisemmän raiteen pituus"
+
+#: ../bin/ctodesgn.c:269 ../bin/ctodesgn.c:315
+msgid "Inner Angle"
+msgstr "Sisemmän raiteen kulma"
+
+#: ../bin/ctodesgn.c:270 ../bin/ctodesgn.c:316
+msgid "Inner Offset"
+msgstr "Sisemmän raiteen siirtymä"
+
+#: ../bin/ctodesgn.c:271 ../bin/ctodesgn.c:318
+msgid "Outer Angle"
+msgstr "Ulomman raiteen kulma"
+
+#: ../bin/ctodesgn.c:272 ../bin/ctodesgn.c:319
+msgid "Outer Offset"
+msgstr "Ulomman raiteen siirtymä"
+
+#: ../bin/ctodesgn.c:273 ../bin/ctodesgn.c:321
+msgid "Outer Length"
+msgstr "Ulomman raiteen pituus"
+
+#: ../bin/ctodesgn.c:302
+msgid "Curved Turnout"
+msgstr "Kaareva vaihde"
+
+#: ../bin/ctodesgn.c:317
+#, fuzzy
+msgid "Inner Radius"
+msgstr "Helixin säde"
+
+#: ../bin/ctodesgn.c:320
+#, fuzzy
+msgid "Outer Radius"
+msgstr "Helixin säde"
+
+#: ../bin/ctodesgn.c:322 ../bin/ctodesgn.c:402 ../bin/ctodesgn.c:489
+#, fuzzy
+msgid "Toe Radius"
+msgstr "Säde"
+
+#: ../bin/ctodesgn.c:323 ../bin/ctodesgn.c:401
+#, fuzzy
+msgid "Toe Length"
+msgstr "Kokonaispituus"
+
+#: ../bin/ctodesgn.c:336
+#, fuzzy
+msgid "Cornu Curved Turnout"
+msgstr "Kaareva vaihde"
+
+#: ../bin/ctodesgn.c:348 ../bin/ctodesgn.c:393 ../bin/ctodesgn.c:426
+#: ../bin/ctodesgn.c:475
+msgid "Left Length"
+msgstr "Vasemman raiteen pituus"
+
+#: ../bin/ctodesgn.c:349 ../bin/ctodesgn.c:394 ../bin/ctodesgn.c:427
+#: ../bin/ctodesgn.c:476
+msgid "Left Angle"
+msgstr "Vasemman raiteen kulma"
+
+#: ../bin/ctodesgn.c:350 ../bin/ctodesgn.c:395 ../bin/ctodesgn.c:428
+#: ../bin/ctodesgn.c:477
+msgid "Left Offset"
+msgstr "Vasemman raiteen siirtymä"
+
+#: ../bin/ctodesgn.c:351 ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:430
+#: ../bin/ctodesgn.c:484
+msgid "Right Offset"
+msgstr "Oikean raiteen siirtymä"
+
+#: ../bin/ctodesgn.c:352 ../bin/ctodesgn.c:399 ../bin/ctodesgn.c:431
+#: ../bin/ctodesgn.c:485
+msgid "Right Angle"
+msgstr "Oikean raiteen kulma"
+
+#: ../bin/ctodesgn.c:353 ../bin/ctodesgn.c:400 ../bin/ctodesgn.c:432
+#: ../bin/ctodesgn.c:486
+msgid "Right Length"
+msgstr "Oikean raiteen pituus"
+
+#: ../bin/ctodesgn.c:381
+msgid "Wye Turnout"
+msgstr "Y-vaihde"
+
+#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:478
+#, fuzzy
+msgid "Left Radius"
+msgstr "Säde"
+
+#: ../bin/ctodesgn.c:397 ../bin/ctodesgn.c:483
+#, fuzzy
+msgid "Right Radius"
+msgstr "Helixin säde"
+
+#: ../bin/ctodesgn.c:414
+#, fuzzy
+msgid "Cornu Wye Turnout"
+msgstr "Y-vaihde"
+
+#: ../bin/ctodesgn.c:463
+msgid "3-way Turnout"
+msgstr "3-tie vaihde"
+
+#: ../bin/ctodesgn.c:479
+#, fuzzy
+msgid "Center Length"
+msgstr "Sisemmän raiteen pituus"
+
+#: ../bin/ctodesgn.c:480
+#, fuzzy
+msgid "Center Angle"
+msgstr "Sisemmän raiteen kulma"
+
+#: ../bin/ctodesgn.c:481 ../bin/dcar.c:2348
+#, fuzzy
+msgid "Center Offset"
+msgstr "Sisemmän raiteen siirtymä"
+
+#: ../bin/ctodesgn.c:482
+#, fuzzy
+msgid "Center Radius"
+msgstr "Ympyrän säde"
+
+#: ../bin/ctodesgn.c:487
+#, fuzzy
+msgid "Toe Length Left"
+msgstr "Kokonaispituus"
+
+#: ../bin/ctodesgn.c:488
+#, fuzzy
+msgid "Toe Length Right"
+msgstr "Kokonaispituus"
+
+#: ../bin/ctodesgn.c:502
+#, fuzzy
+msgid "Cornu 3-way Turnout"
+msgstr "3-tie vaihde"
+
+#: ../bin/ctodesgn.c:527
+msgid "Crossing"
+msgstr "Risteys"
+
+#: ../bin/ctodesgn.c:552
+msgid "Single Slipswitch"
+msgstr "Yksipuolinen risteysvaihde"
+
+#: ../bin/ctodesgn.c:587
+msgid "Double Slipswitch"
+msgstr "Kaksipuolinen risteysvaihde"
+
+#: ../bin/ctodesgn.c:612
+msgid "Right Crossover"
+msgstr "Raiteenvaihto oikealle"
+
+#: ../bin/ctodesgn.c:638
+msgid "Left Crossover"
+msgstr "Raiteenvaihto vasemmalle"
+
+#: ../bin/ctodesgn.c:663
+msgid "Double Crossover"
+msgstr "Sovitettu raideristeys"
+
+#: ../bin/ctodesgn.c:685
+msgid "Straight Section"
+msgstr "Suora raideosa"
+
+#: ../bin/ctodesgn.c:697
+msgid "Angle (Degrees)"
+msgstr "Kulma (asteina)"
+
+#: ../bin/ctodesgn.c:708
+msgid "Curved Section"
+msgstr "Kaareva raideosa"
+
+#: ../bin/ctodesgn.c:731
+msgid "Bumper Section"
+msgstr "Puskuri raideosa"
+
+#: ../bin/ctodesgn.c:742 ../bin/denum.c:124 ../bin/denum.c:193
+#: ../bin/denum.c:230 ../bin/denum.c:231
+msgid "Count"
+msgstr "Lukumäärä"
+
+#: ../bin/ctodesgn.c:743
+msgid "Radius1"
+msgstr "Säde1"
+
+#: ../bin/ctodesgn.c:744
+msgid "Radius2"
+msgstr "Säde2"
+
+#: ../bin/ctodesgn.c:827
+msgid "Turntable Section"
+msgstr "Kääntöpöytä"
+
+#: ../bin/ctodesgn.c:2777
+#, c-format
+msgid "%s Designer"
+msgstr "%s - suunnittelu"
+
+#: ../bin/ctodesgn.c:2780
+#, c-format
+msgid "%s %d x %d (of %d x %d)"
+msgstr ""
+
+#: ../bin/ctodesgn.c:2780
+msgid "Page"
+msgstr "Sivu"
+
+#: ../bin/ctodesgn.c:2788
+msgid "Frog Number"
+msgstr "Risteysnumero"
+
+#: ../bin/ctodesgn.c:3147
+msgid "Turnout Designer"
+msgstr "Raideosien suunnittelu"
+
+#: ../bin/ctodesgn.c:3160
+#, c-format
+msgid "%s %s Designer"
+msgstr "%s %s - suunnittelu"
+
+#: ../bin/ctrain.c:179 ../bin/dcar.c:2360 ../bin/dcar.c:4694 ../bin/dcar.c:4700
+msgid "Index"
+msgstr "Indeksi"
+
+#: ../bin/ctrain.c:185
+#, fuzzy
+msgid "Report Marks"
+msgstr "Tunnus"
+
+#: ../bin/ctrain.c:273
+msgid "Car"
+msgstr "Vaunu"
+
+#: ../bin/ctrain.c:728
+msgid "Follow"
+msgstr "Seuraa"
+
+#: ../bin/ctrain.c:729
+msgid "Auto Reverse"
+msgstr "Automaattinen peruutus"
+
+#: ../bin/ctrain.c:748 ../bin/dcar.c:5686
+msgid "Find"
+msgstr "Etsi"
+
+#: ../bin/ctrain.c:754 ../bin/ctrain.c:1011 ../bin/ctrain.c:1324
+msgid "Forward"
+msgstr "Eteen"
+
+#: ../bin/ctrain.c:756 ../bin/ctrain.c:3235 ../bin/dcar.c:5093
+#: ../bin/dcar.c:5103 ../bin/dcar.c:5225 ../bin/fileio.c:224 ../bin/macro.c:64
+#: ../bin/track.c:1366
+msgid "Stop"
+msgstr "Pysäytä"
+
+#: ../bin/ctrain.c:952 ../bin/ctrain.c:981
+msgid "Crashed"
+msgstr "Törmännyt"
+
+#: ../bin/ctrain.c:954
+msgid "Not on Track"
+msgstr "Ei raiteilla"
+
+#: ../bin/ctrain.c:958
+msgid "Trains Paused"
+msgstr "Junat pysäytetty"
+
+#: ../bin/ctrain.c:960
+msgid "Running"
+msgstr "Liikkeellä"
+
+#: ../bin/ctrain.c:965
+msgid "End of Track"
+msgstr "Rata loppu"
+
+#: ../bin/ctrain.c:969
+msgid "Open Turnout"
+msgstr "Avoin vaihde"
+
+#: ../bin/ctrain.c:973
+msgid "Manual Stop"
+msgstr "Pysäytetty"
+
+#: ../bin/ctrain.c:977
+msgid "No Room"
+msgstr "Ei tilaa"
+
+#: ../bin/ctrain.c:985
+msgid "Unknown Status"
+msgstr "Tuntematon tila"
+
+#: ../bin/ctrain.c:995
+msgid "No trains"
+msgstr "Ei junia"
+
+#: ../bin/ctrain.c:1375
+msgid "Train Control XXX"
+msgstr "Junien hallinta XXX"
+
+#: ../bin/ctrain.c:1376
+#, c-format
+msgid "Train Control %d"
+msgstr "Junien hallinta %d"
+
+#: ../bin/ctrain.c:1378
+msgid "Train Control"
+msgstr "Junien hallinta"
+
+#: ../bin/ctrain.c:3198 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:156
+msgid "Run Trains"
+msgstr "Aja junilla ratasuunnitelmassa"
+
+#: ../bin/ctrain.c:3217
+msgid "Uncouple"
+msgstr "Irrota"
+
+#: ../bin/ctrain.c:3219
+msgid "Flip Car"
+msgstr "Käännä vaunu"
+
+#: ../bin/ctrain.c:3222
+#, fuzzy
+msgid "Clearance Lines On"
+msgstr "Luo viivoja"
+
+#: ../bin/ctrain.c:3225
+#, fuzzy
+msgid "Clearance Lines Off"
+msgstr "Luo viivoja"
+
+#: ../bin/ctrain.c:3227
+msgid "Flip Train"
+msgstr "Käännä juna"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:438
+#: ../bin/ctrain.c:3229 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1188
+#, fuzzy
+msgid "Describe"
+msgstr "Kuvaus"
+
+#: ../bin/ctrain.c:3231
+msgid "MU Master"
+msgstr "Vetovastuussa"
+
+#: ../bin/ctrain.c:3234
+msgid "Change Direction"
+msgstr "Muuta suuntaa"
+
+#: ../bin/ctrain.c:3238
+#, fuzzy
+msgid "Remove Car"
+msgstr "Poista vaunu"
+
+#: ../bin/ctrain.c:3241
+#, fuzzy
+msgid "Remove Train"
+msgstr "Poista juna"
+
+#: ../bin/cturnout.c:97 ../bin/dcar.c:2382 ../bin/dcar.c:2386
+msgid "New"
+msgstr "Uusi"
+
+#: ../bin/cturnout.c:371 ../bin/cturnout.c:376
+#, c-format
+msgid "CheckPath: Turnout path[%d] %d is not a track segment"
+msgstr ""
+
+#: ../bin/cturnout.c:385
+#, c-format
+msgid ""
+"CheckPath: Turnout path[%d] %d-%d not connected: %0.3f P0(%f,%f) P1(%f,%f)"
+msgstr ""
+
+#: ../bin/cturnout.c:437
+msgid "Unknown special case"
+msgstr "Tuntematon erikoistapaus"
+
+#: ../bin/cturnout.c:564
+msgid "Connect Adjustable Tracks"
+msgstr "Yhdistä säädettävä raide"
+
+#: ../bin/cturnout.c:1030
+msgid "splitTurnout: can't find segment"
+msgstr "Pilko: Lohkoja ei löytynyt."
+
+#: ../bin/cturnout.c:1511 ../bin/track.c:2380 ../bin/track.c:2502
+#: ../bin/tstraigh.c:838
+msgid "Drag to change track length"
+msgstr "Vedä muuttaaksesi raideosan pituutta"
+
+#: ../bin/cturnout.c:1524
+#, c-format
+msgid "Length=%s"
+msgstr "Pituus=%s"
+
+#: ../bin/cturnout.c:1815
+#, fuzzy, c-format
+msgid "Turnout %d Path: %s"
+msgstr "Pyöritä raideosaa"
+
+#: ../bin/cturnout.c:2389
+#, c-format
+msgid "%d connections, max distance %0.3f (%s)"
+msgstr "%d liitosta, suurin etäisyys %0.3f (%s)"
+
+#: ../bin/cturnout.c:2394
+#, c-format
+msgid "0 connections (%s)"
+msgstr "0 liitosta (%s)"
+
+#: ../bin/cturnout.c:2433
+msgid "Place New Turnout"
+msgstr "Aseta uusi vaihde"
+
+#: ../bin/cturnout.c:2861
+#, c-format
+msgid "Angle = %0.3f (%s)"
+msgstr "Kulma = %0.3f (%s)"
+
+#: ../bin/cturnout.c:2962
+msgid "Add Fixed-Track"
+msgstr ""
+
+#: ../bin/cturnout.c:2981
+msgid "Pick turnout and active End Point, then place on the layout"
+msgstr ""
+"Valitse ensin vaihde ja aktiivinen päätepiste ja aseta sitten paikoilleen"
+
+#: ../bin/cturnout.c:3190
+#, fuzzy
+msgid "Fixed-Track"
+msgstr "Jatka raidetta"
+
+#: ../bin/cturntbl.c:49 ../bin/cturntbl.c:275 ../bin/cturntbl.c:1029
+#: ../bin/cturntbl.c:1044
+msgid "Diameter"
+msgstr "Halkaisija"
+
+#: ../bin/cturntbl.c:276
+msgid "# EndPt"
+msgstr "Päätepisteitä"
+
+#: ../bin/cturntbl.c:316
+#, c-format
+msgid "Turntable(%d): Layer=%d Center=[%s %s] Diameter=%s #EP=%d"
+msgstr ""
+"Kääntöpöytä(%d): Taso=%d Keskipiste=[%s %s] Halkaisija=%s Päätepisteitä=%d"
+
+#: ../bin/cturntbl.c:335 ../bin/cturntbl.c:454
+msgid "Turntable"
+msgstr "Kääntöpöytä"
+
+#: ../bin/cturntbl.c:670
+msgid "Drag to create stall track"
+msgstr "Vedä luodaksesi lähtevän raiteen"
+
+#: ../bin/cturntbl.c:728
+#, fuzzy
+msgid "Connect Turntable Tracks"
+msgstr "Yhdistä säädettävä raide"
+
+#: ../bin/cturntbl.c:1058
+msgid "Create Turntable"
+msgstr "Luo kääntöpöytä"
+
+#: ../bin/cturntbl.c:1090
+#, fuzzy
+msgid "Custom Turntable"
+msgstr "Luo kääntöpöytä"
+
+#: ../bin/cundo.c:266
+msgid "Undo Trace"
+msgstr "Jäljitys"
+
+#: ../bin/cundo.c:741
+#, c-format
+msgid "Undo: %s"
+msgstr "Kumoa: %s"
+
+#: ../bin/cundo.c:744 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:168
+msgid "Undo last command"
+msgstr "Kumoa edellinen komento"
+
+#: ../bin/cundo.c:749
+#, c-format
+msgid "Redo: %s"
+msgstr "Tee uudelleen: %s"
+
+#: ../bin/cundo.c:752 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:129
+msgid "Redo last undo"
+msgstr "Tee uudelleen"
+
+#: ../bin/custom.c:148
+#, c-format
+msgid "%s Turnout Designer"
+msgstr "%s Vaihteiden suunnittelu"
+
+#: ../bin/custom.c:152
+#, c-format
+msgid "%s Version %s"
+msgstr "%s versio %s"
+
+#: ../bin/custom.c:156
+#, c-format
+msgid ""
+"All %s Files (*.xtc,*.xtce)|*.xtc;*.xtce|%s Trackplan (*.xtc)|*.xtc|%s "
+"Extended Trackplan (*.xtce)|*.xtce|All Files (*)|*"
+msgstr ""
+
+#: ../bin/custom.c:166
+#, c-format
+msgid ""
+"%s Trackplan (*.xtc)|*.xtc|%s Extended Trackplan (*.xtce)|*.xtce|All Files "
+"(*)|*"
+msgstr ""
+
+#: ../bin/custom.c:174
+#, c-format
+msgid "All Files (*)|*"
+msgstr ""
+
+#: ../bin/custom.c:178
+#, fuzzy, c-format
+msgid "%s Import Files (*.xti)|*.xti"
+msgstr "%s Tuotavat tiedostot|*.%sti"
+
+#: ../bin/custom.c:182
+msgid "Data Exchange Format Files (*.dxf)|*.dxf"
+msgstr ""
+
+#: ../bin/custom.c:186
+msgid "Scalable Vector Graphics Format Files (*.svg)|*.svg"
+msgstr ""
+
+#: ../bin/custom.c:190
+#, fuzzy, c-format
+msgid "%s Record Files (*.xtr)|*.xtr"
+msgstr "%s Nauhoitustiedostot|*.%str"
+
+#: ../bin/custom.c:194
+#, fuzzy, c-format
+msgid "%s Note Files (*.not)|*.not"
+msgstr "%s Muistiinpanot|*.not"
+
+#: ../bin/custom.c:198
+#, fuzzy, c-format
+msgid "%s Log Files (*.log)|*.log"
+msgstr "%s Lokitiedostot|*.log"
+
+#: ../bin/custom.c:202
+#, fuzzy, c-format
+msgid "%s PartsList Files (*.txt)|*.txt"
+msgstr "%s Osaluetelotiedostot|*.log"
+
+#: ../bin/dbench.c:38
+msgid " L-Girder"
+msgstr "L-palkki"
+
+#: ../bin/dbench.c:38
+msgid " T-Girder"
+msgstr "T-palkki"
+
+#: ../bin/dbench.c:61
+msgid "On Edge"
+msgstr "Pysty"
+
+#: ../bin/dbench.c:62
+msgid "Flat"
+msgstr "Vaaka"
+
+#: ../bin/dbench.c:67
+msgid "Left-Down"
+msgstr "Vasen-Alas"
+
+#: ../bin/dbench.c:68
+msgid "Right-Down"
+msgstr "Oikea-Alas"
+
+#: ../bin/dbench.c:69
+msgid "Left-Up"
+msgstr "Vasen-Ylös"
+
+#: ../bin/dbench.c:70
+msgid "Right-Up"
+msgstr "Oikea-Ylös"
+
+#: ../bin/dbench.c:71
+msgid "Left-Inverted"
+msgstr "Vasen-Käännetty"
+
+#: ../bin/dbench.c:72
+msgid "Right-Inverted"
+msgstr "Oikea-Käännetty"
+
+#: ../bin/dbench.c:78
+msgid "Inverted"
+msgstr "Käännetty"
+
+#: ../bin/dbench.c:147
+#, c-format
+msgid ""
+"Bad BenchType for %s:\n"
+"%s"
+msgstr ""
+"Väärä runkotyyppi %s:lle:\n"
+"%s"
+
+#: ../bin/dbitmap.c:150
+#, fuzzy
+msgid "Drawing tracks to bitmap"
+msgstr "Piirretään raiteet bitmap:ksi"
+
+#: ../bin/dbitmap.c:187
+msgid "Drawn with "
+msgstr "Suunnitteluohjelma: "
+
+#: ../bin/dbitmap.c:229
+#, fuzzy
+msgid "Writing bitmap to file"
+msgstr "Kirjoitetaan bitmap tiedostoon"
+
+#: ../bin/dbitmap.c:252
+#, fuzzy
+msgid "Layout Titles"
+msgstr "Ratasuunnitelma"
+
+#: ../bin/dbitmap.c:253
+#, fuzzy
+msgid "Borders"
+msgstr "Reunus"
+
+#: ../bin/dbitmap.c:254
+#, fuzzy
+msgid "Centerline of Track"
+msgstr "Luo ympyrärata"
+
+#: ../bin/dbitmap.c:255
+#, fuzzy
+msgid "Background Image"
+msgstr "Profiilirata"
+
+#: ../bin/dbitmap.c:262
+#, fuzzy
+msgid "Include "
+msgstr "Indeksi"
+
+#: ../bin/dbitmap.c:264
+msgid "Resolution "
+msgstr ""
+
+#: ../bin/dbitmap.c:265
+#, fuzzy
+msgid "dpi"
+msgstr " dpi"
+
+#: ../bin/dbitmap.c:266
+#, fuzzy
+msgid "Bitmap Size "
+msgstr "Paperin koko"
+
+#: ../bin/dbitmap.c:268
+#, fuzzy
+msgid "99999 by 99999 pixels"
+msgstr "Bitmap : 99999 x 99999 pikseliä"
+
+#: ../bin/dbitmap.c:269
+#, fuzzy
+msgid "Approximate File Size "
+msgstr "Arvioitu tiedostokoko: %0.0f"
+
+#: ../bin/dbitmap.c:271
+#, fuzzy
+msgid "999.9Mb"
+msgstr "999,9"
+
+#: ../bin/dbitmap.c:317
+#, fuzzy, c-format
+msgid "%ld by %ld pixels"
+msgstr "Bitmap : %ld x %ld pikseliä"
+
+#: ../bin/dbitmap.c:339
+#, c-format
+msgid "%0.0f"
+msgstr ""
+
+#: ../bin/dbitmap.c:341
+#, c-format
+msgid "%0.1fKb"
+msgstr ""
+
+#: ../bin/dbitmap.c:343
+#, c-format
+msgid "%0.1fMb"
+msgstr ""
+
+#: ../bin/dbitmap.c:345
+#, c-format
+msgid "%0.1fGb"
+msgstr ""
+
+#: ../bin/dbitmap.c:436
+msgid "Save Bitmap"
+msgstr "Tallenna bitmap"
+
+#: ../bin/dbitmap.c:437
+msgid ""
+"Portable Network Graphics format (*.png)|*.png|JPEG format (*.jpg)|*.jpg"
+msgstr ""
+
+#: ../bin/dbitmap.c:472
+#, fuzzy
+msgid "Export to bitmap"
+msgstr "Vie bitmap tiedostoon"
+
+#: ../bin/dcar.c:45
+msgid "Truck"
+msgstr "Teli"
+
+#: ../bin/dcar.c:45
+msgid "Body"
+msgstr "Runko"
+
+#: ../bin/dcar.c:148 ../bin/dcar.c:2860 ../bin/dcar.c:2867
+msgid "Unknown"
+msgstr "Tuntematon"
+
+#: ../bin/dcar.c:481
+msgid "Diesel Loco"
+msgstr "Dieselveturi"
+
+#: ../bin/dcar.c:482
+msgid "Steam Loco"
+msgstr "Höyryveturi"
+
+#: ../bin/dcar.c:483
+msgid "Elect Loco"
+msgstr "Sähköveturi"
+
+#: ../bin/dcar.c:484
+msgid "Freight Car"
+msgstr "Tavaravaunu"
+
+#: ../bin/dcar.c:485
+msgid "Psngr Car"
+msgstr "Matkustajavaunu"
+
+#: ../bin/dcar.c:486
+msgid "M-O-W"
+msgstr "Työkone"
+
+#: ../bin/dcar.c:487
+msgid "Other"
+msgstr "Muut"
+
+#: ../bin/dcar.c:1237 ../bin/dcar.c:5478
+msgid "N/A"
+msgstr "Ei tiedossa"
+
+#: ../bin/dcar.c:1238 ../bin/dcar.c:5483
+msgid "Mint"
+msgstr "Loistava"
+
+#: ../bin/dcar.c:1239 ../bin/dcar.c:5482
+msgid "Excellent"
+msgstr "Erinomainen"
+
+#: ../bin/dcar.c:1240 ../bin/dcar.c:5481
+msgid "Good"
+msgstr "Hyvä"
+
+#: ../bin/dcar.c:1241 ../bin/dcar.c:5480
+msgid "Fair"
+msgstr "Tyydyttävä"
+
+#: ../bin/dcar.c:1242 ../bin/dcar.c:5479
+msgid "Poor"
+msgstr "Huono"
+
+#: ../bin/dcar.c:1580 ../bin/dpricels.c:42
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:518
+msgid "Item"
+msgstr "Tuote"
+
+#: ../bin/dcar.c:2282 ../wlib/mswlib/mswmisc.c:2057
+msgid "Information"
+msgstr "Tiedot"
+
+#: ../bin/dcar.c:2282
+msgid "Customize"
+msgstr "Mukauta"
+
+#: ../bin/dcar.c:2296
+msgid "Sequential"
+msgstr "Peräkkäinen"
+
+#: ../bin/dcar.c:2296
+msgid "Repeated"
+msgstr "Sama"
+
+#: ../bin/dcar.c:2307 ../bin/dcar.c:2309 ../bin/dcar.c:5838
+msgid "Prototype"
+msgstr "Esikuva"
+
+#: ../bin/dcar.c:2315
+msgid "Part"
+msgstr "Tuote"
+
+#: ../bin/dcar.c:2317 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:419
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:659
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:660
+msgid "Part Number"
+msgstr "Tuotekoodi"
+
+#: ../bin/dcar.c:2319
+msgid "Loco?"
+msgstr "Veturi?"
+
+#: ../bin/dcar.c:2323 ../bin/dcar.c:4734
+msgid "Import"
+msgstr "Tuo tiedostosta"
+
+#: ../bin/dcar.c:2330
+msgid "Mode"
+msgstr "Tila"
+
+#: ../bin/dcar.c:2334
+msgid "Road"
+msgstr "Yhtiö"
+
+#: ../bin/dcar.c:2336
+msgid "Reporting Mark"
+msgstr "Yhtiön tunnus"
+
+#: ../bin/dcar.c:2338
+msgid "Number"
+msgstr "Numero"
+
+#: ../bin/dcar.c:2342
+msgid "Car Length"
+msgstr "Pituus"
+
+#: ../bin/dcar.c:2346
+msgid "Truck Centers"
+msgstr "Telien keskikohdat"
+
+#: ../bin/dcar.c:2350
+msgid "Coupler Mount"
+msgstr "Kytkimien sijoitus"
+
+#: ../bin/dcar.c:2352
+msgid "Coupled Length"
+msgstr "Pituus kytkimineen"
+
+#: ../bin/dcar.c:2354 ../bin/dcar.c:4564
+msgid "Coupler Length"
+msgstr "Kytkinten ulkonema"
+
+#: ../bin/dcar.c:2362
+msgid "Purchase Price"
+msgstr "Ostohinta"
+
+#: ../bin/dcar.c:2364 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:266
+msgid "Current Price"
+msgstr "Nykyinen hinta"
+
+#: ../bin/dcar.c:2366 ../bin/dcar.c:4696 ../bin/dcar.c:4702
+msgid "Condition"
+msgstr "Kunto"
+
+#: ../bin/dcar.c:2368
+msgid "Purchase Date"
+msgstr "Ostopäivä"
+
+#: ../bin/dcar.c:2370 ../bin/dcar.c:4702
+msgid "Service Date"
+msgstr "Huollettu"
+
+#: ../bin/dcar.c:2372
+msgid "Quantity"
+msgstr "Määrä"
+
+#: ../bin/dcar.c:2374
+msgid "Numbers"
+msgstr "Numerot"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:487
+#: ../bin/dcar.c:2376 ../bin/dcar.c:4697 ../bin/trknote.c:594
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1286
+msgid "Notes"
+msgstr "Muistiinpanot"
+
+#: ../bin/dcar.c:2383
+msgid "Car Part"
+msgstr "Malli"
+
+#: ../bin/dcar.c:2384 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:240
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:241
+msgid "Car Prototype"
+msgstr "Esikuva"
+
+#: ../bin/dcar.c:2776 ../bin/dcar.c:3143
+msgid "Undecorated"
+msgstr "Ei yhtiömerkintöjä"
+
+#: ../bin/dcar.c:2849 ../bin/dcar.c:2855 ../bin/paramfilelist.c:458
+msgid "Custom"
+msgstr "Itse rakennettu"
+
+#: ../bin/dcar.c:3049
+msgid "Undecorated "
+msgstr "Ei yhtiömerkintöjä "
+
+#: ../bin/dcar.c:3298
+#, c-format
+msgid "New %s Scale Car"
+msgstr "Uusi %s mittakaavan vaunu/veturi"
+
+#: ../bin/dcar.c:3299 ../bin/dcar.c:3308 ../bin/dcar.c:3318 ../bin/dcar.c:4598
+#: ../bin/dcar.c:4730 ../bin/paramfilesearch_ui.c:75
+msgid "Add"
+msgstr "Lisää"
+
+#: ../bin/dcar.c:3301
+#, c-format
+msgid "Update %s Scale Car"
+msgstr "Päivitä %s mittakaavan vaunu"
+
+#: ../bin/dcar.c:3302 ../bin/dcar.c:3312 ../bin/dcar.c:3321 ../bin/dcmpnd.c:178
+msgid "Update"
+msgstr "Päivitä"
+
+#: ../bin/dcar.c:3307
+#, c-format
+msgid "New %s Scale Car Part"
+msgstr "Uusi %s mittakaavan vaunu/veturi"
+
+#: ../bin/dcar.c:3310
+#, c-format
+msgid "Update %s Scale Car Part"
+msgstr "Päivitä %s mittakaavan vaunu"
+
+#: ../bin/dcar.c:3317
+msgid "New Prototype"
+msgstr "Uusi esikuva"
+
+#: ../bin/dcar.c:3320
+msgid "Update Prototype"
+msgstr "Päivitä esikuva"
+
+#: ../bin/dcar.c:4009
+#, fuzzy
+msgid "Truck Center Offset plus Truck Centers must be less than Car Length"
+msgstr ""
+"Telien keskikohtien välisen etäisyyden on oltava vaunun pituutta pienempi"
+
+#: ../bin/dcar.c:4070 ../bin/dcar.c:4074
+#, fuzzy
+msgid "Enter a 8 digit numeric date (yyyymmdd)"
+msgstr "Syötä 8 numeroinen päiväys"
+
+#: ../bin/dcar.c:4077
+msgid "Enter a date between 19000101 and 21991231"
+msgstr "Syötä päivämärä %s ja %s väliltä"
+
+#: ../bin/dcar.c:4083
+msgid "Invalid month"
+msgstr "Epäkelpo kuukausi"
+
+#: ../bin/dcar.c:4086
+msgid "Invalid day"
+msgstr "Epäkelpo päivä"
+
+#: ../bin/dcar.c:4184
+msgid "Select or Enter a Manufacturer"
+msgstr "Valitse tai syötä valmistaja"
+
+#: ../bin/dcar.c:4188
+#, c-format
+msgid "Item Index %ld duplicated an existing item: updated to new value"
+msgstr "Indeksi %ld oli jo käytössä. Annettiin indeksille uusi arvo."
+
+#: ../bin/dcar.c:4410
+#, c-format
+msgid "Added %ld new Cars"
+msgstr "Lisätty %ld uutta vaunua/veturia"
+
+#: ../bin/dcar.c:4412
+msgid "Added new Car"
+msgstr "Lisätty uusi vaunu/veturi"
+
+#: ../bin/dcar.c:4415
+msgid "Updated Car"
+msgstr "Päivitä vaunu/veturi"
+
+#: ../bin/dcar.c:4418
+msgid " and Part"
+msgstr " ja malli"
+
+#: ../bin/dcar.c:4450
+#, c-format
+msgid "%s Part: %s %s %s %s %s %s"
+msgstr "%s malli: %s %s %s %s %s %s"
+
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
+msgid "Added new"
+msgstr "Lisätty uusi"
+
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
+msgid "Updated"
+msgstr "Päivitetty"
+
+#: ../bin/dcar.c:4472
+#, c-format
+msgid "%s Prototype: %s%s."
+msgstr "%s esikuva: %s%s."
+
+#: ../bin/dcar.c:4474
+msgid ". Enter new values or press Close"
+msgstr ". Syötä uudet arvot tai paina Sulje"
+
+#: ../bin/dcar.c:4598
+msgid "New Car Part"
+msgstr "Uusi malli"
+
+#: ../bin/dcar.c:4694 ../bin/dcar.c:4700 ../bin/dcustmgm.c:46
+#: ../bin/dlayer.c:561 ../bin/layout.c:662 ../bin/scale.c:845
+msgid "Scale"
+msgstr "Mittakaava"
+
+#: ../bin/dcar.c:4695 ../bin/dcar.c:4701
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:488
+msgid "Roadname"
+msgstr "Rautatieyhtiö"
+
+#: ../bin/dcar.c:4695
+msgid "Rep Marks"
+msgstr "Tunnus"
+
+#: ../bin/dcar.c:4695
+msgid "Purc Price"
+msgstr "Ostohinta"
+
+#: ../bin/dcar.c:4696 ../bin/dcar.c:4702
+msgid "Curr Price"
+msgstr "Nykyinen hinta"
+
+#: ../bin/dcar.c:4696
+msgid "Purc Date"
+msgstr "Ostopäivä"
+
+#: ../bin/dcar.c:4696
+msgid "Srvc Date"
+msgstr "Huollettu"
+
+#: ../bin/dcar.c:4697
+msgid "Locat'n"
+msgstr "Sijainti"
+
+#: ../bin/dcar.c:4701
+msgid "RepMarks"
+msgstr "Tunnus"
+
+#: ../bin/dcar.c:4701
+msgid "Purch Price"
+msgstr "Ostohinta"
+
+#: ../bin/dcar.c:4702
+msgid "Purch Date"
+msgstr "Ostopäivä"
+
+#: ../bin/dcar.c:4720
+msgid "Sort By"
+msgstr "Lajittelu"
+
+#: ../bin/dcar.c:4728 ../bin/dcustmgm.c:58 ../bin/dcustmgm.c:98
+#: ../bin/dcontmgm.c:88
+msgid "Edit"
+msgstr "Muokkaa"
+
+#: ../bin/dcar.c:4732 ../bin/dcar.c:5654 ../bin/dcustmgm.c:60
+#: ../bin/dcontmgm.c:90 ../bin/menu.c:992
+msgid "Delete"
+msgstr "Poista"
+
+#: ../bin/dcar.c:4736 ../bin/fileio.c:1631
+msgid "Export"
+msgstr "Vie tiedostoon"
+
+#: ../bin/dcar.c:4738 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:676
+msgid "List"
+msgstr "Luettelo"
+
+#: ../bin/dcar.c:4894 ../bin/dcar.c:5686 ../bin/menu.c:1416
+msgid "Car Inventory"
+msgstr "Kalustoluettelo"
+
+#: ../bin/dcar.c:5026
+msgid "List Cars"
+msgstr "Luetteloi vaunut"
+
+#: ../bin/dcar.c:5150 ../bin/dcar.c:5322
+msgid "Import Cars"
+msgstr "Tuo vaunut tiedostosta"
+
+#: ../bin/dcar.c:5323 ../bin/dcar.c:5453
+#, fuzzy
+msgid "Comma-Separated-Values (*.csv)|*.csv"
+msgstr "Pilkulla erotetut arvot|*.csv"
+
+#: ../bin/dcar.c:5395 ../bin/dcar.c:5452
+msgid "Export Cars"
+msgstr "Vie vaunut tiedostoon"
+
+#: ../bin/dcar.c:5494
+msgid "Shelf"
+msgstr "Hyllyssä"
+
+#: ../bin/dcar.c:5653
+#, fuzzy
+msgid "Shelve"
+msgstr "Hyllyssä"
+
+#: ../bin/dcmpnd.c:73 ../bin/dlayer.c:590 ../bin/menu.c:364 ../bin/menu.c:398
+msgid "Load"
+msgstr "Lataa"
+
+#: ../bin/dcmpnd.c:111
+msgid "Updating definitions, please wait"
+msgstr "Päivitetään määrittelyjä, odota hetki."
+
+#: ../bin/dcmpnd.c:178
+msgid "Update Title"
+msgstr "Pävitä otsikko"
+
+#: ../bin/dcmpnd.c:244
+#, c-format
+msgid "End-Point #%d of the selected and actual turnouts are not close"
+msgstr "Valitun ja todellisen vaihteen %d. päätepisteet eivät ole lähekkäin"
+
+#: ../bin/dcmpnd.c:255
+#, c-format
+msgid "End-Point #%d of the selected and actual turnouts are not aligned"
+msgstr "Valitun ja todellisen vaihteen %d. päätepisteet eivät ole linjassa"
+
+#: ../bin/dcmpnd.c:274
+msgid "The selected Turnout had a differing number of End-Points"
+msgstr "Valitussa vaihteessa oli eri määrä päätepisteitä"
+
+#: ../bin/dcmpnd.c:341
+msgid "Skip"
+msgstr "Sivuuta"
+
+#: ../bin/dcmpnd.c:374
+#, c-format
+msgid "%d Track(s) refreshed"
+msgstr "%d raideosa(a) päivitetty"
+
+#: ../bin/dcmpnd.c:419
+msgid "Refresh Turnout/Structure"
+msgstr "Päivitä vaihde/rakennus"
+
+#: ../bin/dcmpnd.c:423
+msgid "Choose a Turnout/Structure to replace:"
+msgstr "Valitse vaihde/rakennus korvataksesi:"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:457
+#: ../bin/dcmpnd.c:436 ../bin/doption.c:94
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1226
+msgid "Turnouts"
+msgstr "Raideosat"
+
+#: ../bin/dcmpnd.c:436
+msgid "Structures"
+msgstr "Rakennukset"
+
+#: ../bin/dcmpnd.c:467
+msgid "Choose another Turnout/Structure to replace:"
+msgstr "Valitse toinen vaihde/rakennus korvataksesi:"
+
+#: ../bin/dcmpnd.c:582
+msgid "Rename Object"
+msgstr "Nimeä objekti uudelleen"
+
+#: ../bin/dcustmgm.c:54
+#, fuzzy
+msgid "Create a new "
+msgstr "Luo monikulmio"
+
+#: ../bin/dcustmgm.c:56
+#, fuzzy
+msgid "Go"
+msgstr "Kulta"
+
+#: ../bin/dcustmgm.c:62
+msgid "Move To"
+msgstr "Tiedostoon"
+
+#: ../bin/dcustmgm.c:98
+msgid "Rename"
+msgstr "Nimeä uudelleen"
+
+#: ../bin/dcustmgm.c:186
+msgid "Label"
+msgstr "Merkintä"
+
+#: ../bin/dcustmgm.c:225
+msgid "Contents Label"
+msgstr "Sisältömerkintä"
+
+#: ../bin/dcustmgm.c:284
+msgid "Move To XTP"
+msgstr "Siirrä XTP tiedostoon"
+
+#: ../bin/dcustmgm.c:285
+#, fuzzy
+msgid "Parameter File (*.xtp)|*.xtp"
+msgstr "Parametritiedosto|*.xtp"
+
+#: ../bin/dcustmgm.c:407
+#, fuzzy
+msgid "Manage custom designed parts"
+msgstr "Itse määriteltyjen raideosien, veturien ja vaunujen hallinta"
+
+#: ../bin/dcontmgm.c:80
+msgid "Tracks"
+msgstr "Raiteet"
+
+#: ../bin/dcontmgm.c:167
+#, fuzzy, c-format
+msgid "Are you sure you want to delete the %d control element(s)"
+msgstr "Haluatko varmasti poistaa nämä %d vaunua/veturia?"
+
+#: ../bin/dcontmgm.c:172
+#, fuzzy
+msgid "Control Elements"
+msgstr "Valitse värit"
+
+#: ../bin/dcontmgm.c:308
+msgid "Manage Layout Control Elements"
+msgstr ""
+
+#: ../bin/dease.c:68
+msgid "Sharp"
+msgstr "Jyrkkä"
+
+#: ../bin/dease.c:68
+msgid "Broad"
+msgstr "Laaja"
+
+#: ../bin/dease.c:68
+msgid "Cornu"
+msgstr ""
+
+#: ../bin/dease.c:76
+msgid "Value"
+msgstr "Arvo"
+
+#: ../bin/dease.c:77 ../bin/tease.c:530
+msgid "R"
+msgstr "R"
+
+#: ../bin/dease.c:79 ../bin/tease.c:531
+msgid "L"
+msgstr "P"
+
+#: ../bin/dease.c:250
+msgid "Easement"
+msgstr "Kaarreloivennus"
+
+#: ../bin/denum.c:44
+msgid "Prices"
+msgstr "Hinnat"
+
+#: ../bin/denum.c:45 ../bin/denum.c:139
+#, fuzzy
+msgid "Indexes"
+msgstr "Indeksi"
+
+#: ../bin/denum.c:50
+msgid "Save As ..."
+msgstr "Tallenna nimellä ..."
+
+#: ../bin/denum.c:135 ../bin/denum.c:198 ../bin/denum.c:236
+msgid "Each"
+msgstr ""
+
+#: ../bin/denum.c:152 ../bin/denum.c:154
+msgid "Parts List"
+msgstr "Osaluettelo"
+
+#: ../bin/denum.c:160
+#, fuzzy, c-format
+msgid ""
+"%s Parts List\n"
+"\n"
+msgstr "Osaluettelo"
+
+#: ../bin/denum.c:199 ../bin/denum.c:238 ../bin/denum.c:248
+#, fuzzy
+msgid "Extended"
+msgstr "Pidentäminen"
+
+#: ../bin/denum.c:247 ../bin/denum.c:251
+msgid "Total"
+msgstr ""
+
+#: ../bin/dlayer.c:541
+#, fuzzy
+msgid "Select Layer:"
+msgstr "Valitse nykyinen taso"
+
+#: ../bin/dlayer.c:547
+#, fuzzy
+msgid "Use Color"
+msgstr "%s väri"
+
+#: ../bin/dlayer.c:549
+msgid "Visible"
+msgstr "Näkyvä"
+
+#: ../bin/dlayer.c:551
+msgid "Frozen"
+msgstr "Jäädytetty"
+
+#: ../bin/dlayer.c:553
+msgid "On Map"
+msgstr "Näkyy kartalla"
+
+#: ../bin/dlayer.c:555
+#, fuzzy
+msgid "Module"
+msgstr "Tila"
+
+#: ../bin/dlayer.c:557
+#, fuzzy
+msgid "No Button"
+msgstr "Kumoa/Tee uudelleen"
+
+#: ../bin/dlayer.c:559
+#, fuzzy
+msgid "Inherit"
+msgstr "Käännetty"
+
+#: ../bin/dlayer.c:563 ../bin/layout.c:664
+#, fuzzy
+msgid " Gauge"
+msgstr "Mittakaava / raideväli"
+
+#: ../bin/dlayer.c:565 ../bin/layout.c:666
+#, fuzzy
+msgid "Min Track Radius"
+msgstr "Pienin karresäde"
+
+#: ../bin/dlayer.c:567 ../bin/layout.c:667
+#, fuzzy
+msgid " Max Track Grade (%)"
+msgstr "Suurin nousukulma (%)"
+
+#: ../bin/dlayer.c:569
+#, fuzzy
+msgid "Tie Length"
+msgstr "Kokonaispituus"
+
+#: ../bin/dlayer.c:571
+#, fuzzy
+msgid " Width"
+msgstr "Leveys"
+
+#: ../bin/dlayer.c:573
+#, fuzzy
+msgid " Spacing"
+msgstr "Väli"
+
+#: ../bin/dlayer.c:575
+#, fuzzy
+msgid "Layer Actions"
+msgstr "Tasot"
+
+#: ../bin/dlayer.c:577
+#, fuzzy
+msgid "Add Layer"
+msgstr "Taso"
+
+#: ../bin/dlayer.c:579
+#, fuzzy
+msgid "Delete Layer"
+msgstr "Valitse nykyinen taso"
+
+#: ../bin/dlayer.c:581
+#, fuzzy
+msgid "Default Values"
+msgstr "Oletukset"
+
+#: ../bin/dlayer.c:582
+msgid "Number of Layer Buttons"
+msgstr "Tasopainikkeiden lukumäärä"
+
+#: ../bin/dlayer.c:584
+#, fuzzy
+msgid "Linked Layers"
+msgstr "Muuta tasojen asetuksia"
+
+#: ../bin/dlayer.c:586
+msgid "Settings when Current"
+msgstr ""
+
+#: ../bin/dlayer.c:588
+#, fuzzy
+msgid "Object Count:"
+msgstr "Nimeä objekti uudelleen"
+
+#: ../bin/dlayer.c:589
+#, fuzzy
+msgid "All Layer Preferences"
+msgstr "Ominaisuudet"
+
+#: ../bin/dlayer.c:591 ../bin/macro.c:1431
+msgid "Save"
+msgstr "Tallenna"
+
+#: ../bin/dlayer.c:592
+msgid "Defaults"
+msgstr "Oletukset"
+
+#: ../bin/dlayer.c:710 ../bin/dlayer.c:1563 ../bin/dlayer.c:1581
+#: ../bin/dlayer.c:1651
+msgid "Main"
+msgstr "Päätaso"
+
+#: ../bin/dlayer.c:842
+msgid "Layer must not have any objects in it."
+msgstr ""
+
+#: ../bin/dlayer.c:1007 ../bin/dlayer.c:1452 ../bin/dlayer.c:1584
+#: ../bin/dlayer.c:1653
+msgid "Show/Hide Layer"
+msgstr "Näytä/piilota taso"
+
+#: ../bin/dlayer.c:2071
+msgid "Layers"
+msgstr "Tasot"
+
+#: ../bin/dlayer.c:2334 ../bin/menu.c:960
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:17
+#, fuzzy
+msgid "Show/Hide Background"
+msgstr "Näytä/piilota taso"
+
+#: ../bin/doption.c:92
+msgid "Auto Pan"
+msgstr "Automaattinen panorointi"
+
+#: ../bin/doption.c:94
+msgid "All"
+msgstr "Kaikki"
+
+#: ../bin/doption.c:95
+msgid "Thick"
+msgstr ""
+
+#: ../bin/doption.c:95
+#, fuzzy
+msgid "Exception"
+msgstr "Erityisraiteet"
+
+#: ../bin/doption.c:96
+msgid "Outline"
+msgstr "Ääriviivat"
+
+#: ../bin/doption.c:97
+msgid "Off"
+msgstr "Pois"
+
+#: ../bin/doption.c:97
+msgid "On"
+msgstr "Päällä"
+
+#: ../bin/doption.c:98
+msgid "Track Descriptions"
+msgstr "Raideosien kuvaukset"
+
+#: ../bin/doption.c:98
+msgid "Lengths"
+msgstr "Pituudet"
+
+#: ../bin/doption.c:98
+msgid "EndPt Elevations"
+msgstr "Päätepisteiden korkeudet"
+
+#: ../bin/doption.c:98
+msgid "Track Elevations"
+msgstr "Raideosien korkeudet"
+
+#: ../bin/doption.c:98
+msgid "Cars"
+msgstr "Vaunut"
+
+#: ../bin/doption.c:99 ../bin/doption.c:100
+msgid "Descr"
+msgstr "Kuvaus"
+
+#: ../bin/doption.c:100
+msgid "Manuf"
+msgstr "Valmistaja"
+
+#: ../bin/doption.c:101 ../bin/doption.c:102
+#, fuzzy
+msgid "Object"
+msgstr "Nimeä objekti uudelleen"
+
+#: ../bin/doption.c:103
+msgid "Live Map"
+msgstr "Suunnitelma seuraa karttaa"
+
+#: ../bin/doption.c:104
+#, fuzzy
+msgid "Hide Trains On Hidden Track"
+msgstr "Junat piilossa olevalla radalla"
+
+#: ../bin/doption.c:105
+msgid "Constrain Drawing Area to Room boundaries"
+msgstr ""
+
+#: ../bin/doption.c:106
+msgid "Don't Hide System Cursor when program cursor is active"
+msgstr ""
+
+#: ../bin/doption.c:110
+#, fuzzy
+msgid "Color Track"
+msgstr "Kaareva raide"
+
+#: ../bin/doption.c:111
+#, fuzzy
+msgid "Color Draw"
+msgstr "Väri"
+
+#: ../bin/doption.c:112
+msgid "Draw Tunnel"
+msgstr "Piirrä tunneli"
+
+#: ../bin/doption.c:113
+msgid "Draw EndPts"
+msgstr "Piirrä päätepisteet"
+
+#: ../bin/doption.c:114
+#, fuzzy
+msgid "Draw Unconnected EndPts"
+msgstr "Piirrä päätepisteet"
+
+#: ../bin/doption.c:115
+msgid "Draw Ties"
+msgstr "Piirrä ratapölkyt"
+
+#: ../bin/doption.c:116
+#, fuzzy
+msgid "Draw Centers"
+msgstr "Raahaa keskustaan"
+
+#: ../bin/doption.c:117
+msgid "Two Rail Scale"
+msgstr "Kahden kiskon mittakaava"
+
+#: ../bin/doption.c:118
+msgid "Map Scale"
+msgstr "Kartan mittakaava"
+
+#: ../bin/doption.c:124
+msgid "Label Enable"
+msgstr "Näytettävät merkinnät"
+
+#: ../bin/doption.c:125
+msgid "Label Scale"
+msgstr "Merkintöjen mittakaava"
+
+#: ../bin/doption.c:126
+msgid "Label Font Size"
+msgstr "Merkintöjen kirjasinkoko"
+
+#: ../bin/doption.c:127
+msgid "Hot Bar Labels"
+msgstr "Hot Bar merkinnät"
+
+#: ../bin/doption.c:128
+msgid "Layout Labels"
+msgstr "Merkinnät"
+
+#: ../bin/doption.c:129
+msgid "List Labels"
+msgstr "Luettelon merkinnät"
+
+#: ../bin/doption.c:132
+msgid "Car Labels"
+msgstr "Vaunujen merkinnät"
+
+#: ../bin/doption.c:133
+msgid "Train Update Delay"
+msgstr "Junien päivitysväli"
+
+#: ../bin/doption.c:176
+msgid "Turning off AutoSave"
+msgstr ""
+
+#: ../bin/doption.c:187
+#, fuzzy
+msgid "Turning on CheckPointing"
+msgstr "Automaattinen varmennus"
+
+#: ../bin/doption.c:201
+msgid "Display Options"
+msgstr "Näyttöasetukset"
+
+#: ../bin/doption.c:203
+msgid "Proto"
+msgstr "Esikuva"
+
+#: ../bin/doption.c:205
+msgid "Proto/Manuf"
+msgstr "Esikuva/Valmistaja"
+
+#: ../bin/doption.c:208
+msgid "Proto/Manuf/Part Number"
+msgstr "Esikuva/Valmistaja/Tuotekoodi"
+
+#: ../bin/doption.c:210
+msgid "Proto/Manuf/Partno/Item"
+msgstr "Esikuva/Valmistaja/Tuotekoodi/Tuote"
+
+#: ../bin/doption.c:211
+msgid "Manuf/Proto"
+msgstr "Valmistaja/Esikuva"
+
+#: ../bin/doption.c:214
+msgid "Manuf/Proto/Part Number"
+msgstr "Valmistaja/Esikuva/Tuotekoodi"
+
+#: ../bin/doption.c:216
+msgid "Manuf/Proto/Partno/Item"
+msgstr "Valmistaja/Esikuva/Tuotekoodi/Tuote"
+
+#: ../bin/doption.c:246
+#, fuzzy
+msgid "Single item selected, +Ctrl Add to selection"
+msgstr "Klikkaamalla jo valittuna olevaa raidetta, sen valinta poistuu.\n"
+
+#: ../bin/doption.c:246
+msgid "Add to selection, +Ctrl Single item selected"
+msgstr ""
+
+#: ../bin/doption.c:247
+#, fuzzy
+msgid "Deselect all on select nothing"
+msgstr "Poista valinnat kaikista objekteista"
+
+#: ../bin/doption.c:252
+msgid "Normal: Command List, Shift: Command Options"
+msgstr "Normaali: Komennot, Vaihto: Komentojen asetukset"
+
+#: ../bin/doption.c:252
+msgid "Normal: Command Options, Shift: Command List"
+msgstr "Normaali: Komentojen asetukset, Vaihto: Komennot"
+
+#: ../bin/doption.c:255
+msgid "Default Command"
+msgstr "Oletuskomento"
+
+#: ../bin/doption.c:257
+msgid "Hide Selection Window"
+msgstr "Piilota valintaikkuna"
+
+#: ../bin/doption.c:259
+msgid "Right Click"
+msgstr "Hiiren 2-painike"
+
+#: ../bin/doption.c:260
+#, fuzzy
+msgid "Select Mode"
+msgstr "Valitse objekteja"
+
+#: ../bin/doption.c:286
+msgid "Command Options"
+msgstr "Komentojen asetukset"
+
+#: ../bin/doption.c:310
+msgid "16 px"
+msgstr ""
+
+#: ../bin/doption.c:310
+msgid "24 px"
+msgstr ""
+
+#: ../bin/doption.c:310
+msgid "32 px"
+msgstr ""
+
+#: ../bin/doption.c:311
+msgid "English"
+msgstr "Englantilaiset"
+
+#: ../bin/doption.c:311
+msgid "Metric"
+msgstr "Metrijärjestelmä"
+
+#: ../bin/doption.c:312
+msgid "Polar"
+msgstr "Polaarinen"
+
+#: ../bin/doption.c:312
+msgid "Cartesian"
+msgstr "Karteesinen"
+
+#: ../bin/doption.c:313
+msgid "Balloon Help"
+msgstr "Pikaopaste"
+
+#: ../bin/doption.c:314
+msgid "Show FlexTrack in HotBar"
+msgstr ""
+
+#: ../bin/doption.c:315
+#, fuzzy
+msgid "Load Last Layout"
+msgstr "Lataa ratasuunnitelma"
+
+#: ../bin/doption.c:315
+#, fuzzy
+msgid "Start New Layout"
+msgstr "Uusi ratasuunnitelma"
+
+#: ../bin/doption.c:318
+#, fuzzy
+msgid "Icon Size"
+msgstr "Kirjasinkoko"
+
+#: ../bin/doption.c:319
+msgid "Angles"
+msgstr "Kulmat"
+
+#: ../bin/doption.c:321
+msgid "Units"
+msgstr "Yksiköt"
+
+#: ../bin/doption.c:323
+msgid "Length Format"
+msgstr "Pituusmittojen muotoilu"
+
+#: ../bin/doption.c:324
+#, fuzzy
+msgid "Min Track Length"
+msgstr "Pienin raideosan pituus"
+
+#: ../bin/doption.c:325
+msgid "Connection Distance"
+msgstr "Liitosetäisyys"
+
+#: ../bin/doption.c:326
+msgid "Connection Angle"
+msgstr "Liitoskulma"
+
+#: ../bin/doption.c:327
+msgid "Turntable Angle"
+msgstr "Kääntöpöydän kulma"
+
+#: ../bin/doption.c:328
+msgid "Max Coupling Speed"
+msgstr "Suurin kytkentänopeus"
+
+#: ../bin/doption.c:331
+msgid "Drag Distance"
+msgstr "Raahausetäisyys"
+
+#: ../bin/doption.c:332
+msgid "Drag Timeout"
+msgstr "Raahauksen viive"
+
+#: ../bin/doption.c:333
+msgid "Min Grid Spacing"
+msgstr "Pienin ruudukon koko"
+
+#: ../bin/doption.c:335
+#, fuzzy
+msgid "Check Point Frequency"
+msgstr "Automaattinen varmennus"
+
+#: ../bin/doption.c:337
+#, fuzzy
+msgid "Autosave Checkpoint Frequency"
+msgstr "Kuinka usein automaattinen varmennus suoritetaan"
+
+#: ../bin/doption.c:338
+msgid "On Program Startup"
+msgstr "Ohjelman käynnistyksessä"
+
+#: ../bin/doption.c:348 ../bin/doption.c:352 ../bin/doption.c:370
+msgid "999.999"
+msgstr "999,999"
+
+#: ../bin/doption.c:349
+#, fuzzy
+msgid "999.999999"
+msgstr "999,999"
+
+#: ../bin/doption.c:350
+#, fuzzy
+msgid "999.99999"
+msgstr "999,999"
+
+#: ../bin/doption.c:351
+#, fuzzy
+msgid "999.9999"
+msgstr "999,999"
+
+#: ../bin/doption.c:353 ../bin/doption.c:371
+msgid "999.99"
+msgstr "999,99"
+
+#: ../bin/doption.c:354 ../bin/doption.c:372
+msgid "999.9"
+msgstr "999,9"
+
+#: ../bin/doption.c:355
+msgid "999 7/8"
+msgstr "999 7/8"
+
+#: ../bin/doption.c:356
+msgid "999 63/64"
+msgstr "999 63/64"
+
+#: ../bin/doption.c:357
+msgid "999' 11.999\""
+msgstr "999' 11.999\""
+
+#: ../bin/doption.c:358
+msgid "999' 11.99\""
+msgstr "999' 11.99\""
+
+#: ../bin/doption.c:359
+msgid "999' 11.9\""
+msgstr "999' 11.9\""
+
+#: ../bin/doption.c:360
+msgid "999' 11 7/8\""
+msgstr "999' 11 7/8\""
+
+#: ../bin/doption.c:361
+msgid "999' 11 63/64\""
+msgstr "999' 11 63/64\""
+
+#: ../bin/doption.c:362
+msgid "999ft 11.999in"
+msgstr "999ft 11.999in"
+
+#: ../bin/doption.c:363
+msgid "999ft 11.99in"
+msgstr "999ft 11.99in"
+
+#: ../bin/doption.c:364
+msgid "999ft 11.9in"
+msgstr "999ft 11.9in"
+
+#: ../bin/doption.c:365
+msgid "999ft 11 7/8in"
+msgstr "999ft 11 7/8in"
+
+#: ../bin/doption.c:366
+msgid "999ft 11 63/64in"
+msgstr "999ft 11 63/64in"
+
+#: ../bin/doption.c:373
+msgid "999.999mm"
+msgstr "999,999 mm"
+
+#: ../bin/doption.c:374
+msgid "999.99mm"
+msgstr "999,99 mm"
+
+#: ../bin/doption.c:375
+msgid "999.9mm"
+msgstr "999,9 mm"
+
+#: ../bin/doption.c:376
+msgid "999.999cm"
+msgstr "999,999 cm"
+
+#: ../bin/doption.c:377
+msgid "999.99cm"
+msgstr "999,99 cm"
+
+#: ../bin/doption.c:378
+msgid "999.9cm"
+msgstr "999,9 cm"
+
+#: ../bin/doption.c:379
+msgid "999.999m"
+msgstr "999,999 m"
+
+#: ../bin/doption.c:380
+msgid "999.99m"
+msgstr "999,99 m"
+
+#: ../bin/doption.c:381
+msgid "999.9m"
+msgstr "999,9 m"
+
+#: ../bin/doption.c:516
+msgid "Preferences"
+msgstr "Ominaisuudet"
+
+#: ../bin/doption.c:560
+msgid "Marker"
+msgstr "Markkeri"
+
+#: ../bin/doption.c:561
+msgid "Border"
+msgstr "Reunus"
+
+#: ../bin/doption.c:562
+msgid "Primary Axis"
+msgstr "Ensisijainen akseli"
+
+#: ../bin/doption.c:563
+msgid "Secondary Axis"
+msgstr "Toissijainen akseli"
+
+#: ../bin/doption.c:564
+msgid "Normal Track"
+msgstr "Normaalit raiteet"
+
+#: ../bin/doption.c:565
+msgid "Selected Track"
+msgstr "Valitut raiteet"
+
+#: ../bin/doption.c:566
+msgid "Profile Path"
+msgstr "Profiilirata"
+
+#: ../bin/doption.c:567
+msgid "Exception Track"
+msgstr "Erityisraiteet"
+
+#: ../bin/doption.c:568
+msgid "Track Ties"
+msgstr "Ratapölkyt"
+
+#: ../bin/doption.c:569
+#, fuzzy
+msgid "Bridge Base"
+msgstr "Yhdistä raiteet"
+
+#: ../bin/doption.c:570
+#, fuzzy
+msgid "Track Roadbed"
+msgstr "Pienin karresäde"
+
+#: ../bin/dpricels.c:42
+msgid "Price"
+msgstr "Hinta"
+
+#: ../bin/dpricels.c:56
+msgid "Flex Track"
+msgstr "Fleksi"
+
+#: ../bin/dpricels.c:57
+msgid "costs"
+msgstr "maksaa"
+
+#: ../bin/dpricels.c:166
+msgid "Price List"
+msgstr "Hinnasto"
+
+#: ../bin/dprmfile.c:66 ../bin/paramfilesearch_ui.c:50
+msgid "Show File Names"
+msgstr "Näytä tiedostojen nimet"
+
+#: ../bin/dprmfile.c:75 ../bin/paramfilesearch_ui.c:77
+#, fuzzy
+msgid "Select all"
+msgstr "Valitse kaikki"
+
+#: ../bin/dprmfile.c:77
+msgid "Favorite"
+msgstr ""
+
+#: ../bin/dprmfile.c:80
+#, fuzzy
+msgid "Library..."
+msgstr "Tasot ..."
+
+#: ../bin/dprmfile.c:81
+#, fuzzy
+msgid "Browse..."
+msgstr "Selaa ..."
+
+#: ../bin/dprmfile.c:328
+#, fuzzy, c-format
+msgid "%d parameter files reloaded."
+msgstr "Etsi ladattava parametritiedosto"
+
+#: ../bin/dprmfile.c:330
+#, fuzzy
+msgid "One parameter file reloaded."
+msgstr "Etsi ladattava parametritiedosto"
+
+#: ../bin/dprmfile.c:431
+msgid "Parameter Files"
+msgstr "Parametritiedostot"
+
+#: ../bin/dprmfile.c:434
+msgid "Load Parameters"
+msgstr "Lataa parametrit"
+
+#: ../bin/dprmfile.c:434
+#, fuzzy
+msgid "Parameter files (*.xtp)|*.xtp"
+msgstr "Parametritiedostot|*.xtp"
+
+#: ../bin/draw.c:2352
+msgid "Macro Zoom Mode"
+msgstr ""
+
+#: ../bin/draw.c:2360
+msgid "Scale 1:1 - Use Ctrl+ to go to Macro Zoom Mode"
+msgstr ""
+
+#: ../bin/draw.c:2365
+msgid "Preset Zoom In Value selected. Shift+Ctrl+PageDwn to reset value"
+msgstr ""
+
+#: ../bin/draw.c:2369
+#, fuzzy, c-format
+msgid "Zoom In Program Value %ld:1, Shift+PageDwn to use"
+msgstr "Lähennä arvoon %ld:1"
+
+#: ../bin/draw.c:2450
+#, fuzzy
+msgid "At Maximum Zoom Out"
+msgstr "Suurin siirtymä"
+
+#: ../bin/draw.c:2457
+msgid "Preset Zoom Out Value selected. Shift+Ctrl+PageUp to reset value"
+msgstr ""
+
+#: ../bin/draw.c:2461
+#, fuzzy, c-format
+msgid "Zoom Out Program Value %ld:1 set, Shift+PageUp to use"
+msgstr "Loitonna arvoon %ld:1"
+
+#: ../bin/draw.c:3281
+msgid "Map"
+msgstr "Kartta"
+
+#: ../bin/draw.c:3323
+msgid ""
+"Left-Drag to pan, Ctrl+Left-Drag to zoom, 0 to set origin to zero, 1-9 to "
+"zoom#, e to set to extents"
+msgstr ""
+
+#: ../bin/draw.c:3330
+#, fuzzy
+msgid "Pan Mode - drag point to new position"
+msgstr "Aseta %s ja raahaa paikoilleen"
+
+#: ../bin/draw.c:3337
+msgid "Zoom Mode - drag area to zoom"
+msgstr ""
+
+#: ../bin/draw.c:3365
+msgid "Can't move any further in that direction"
+msgstr ""
+
+#: ../bin/draw.c:3368
+msgid "Left click to pan, right click to zoom, 'o' for origin, 'e' for extents"
+msgstr ""
+
+#: ../bin/draw.c:3407
+msgid ""
+"Left Drag to Pan, +CTRL to Zoom, 0 to set Origin to 0,0, 1-9 to Zoom#, e to "
+"set to Extent"
+msgstr ""
+
+#: ../bin/draw.c:3486
+#, fuzzy
+msgid "Pan/Zoom"
+msgstr "&Zoom"
+
+#: ../bin/draw.c:3502
+msgid "Zoom to 1:1 - '1'"
+msgstr ""
+
+#: ../bin/draw.c:3504
+msgid "Zoom to 1:2 - '2'"
+msgstr ""
+
+#: ../bin/draw.c:3506
+msgid "Zoom to 1:3 - '3'"
+msgstr ""
+
+#: ../bin/draw.c:3508
+msgid "Zoom to 1:4 - '4'"
+msgstr ""
+
+#: ../bin/draw.c:3510
+msgid "Zoom to 1:5 - '5'"
+msgstr ""
+
+#: ../bin/draw.c:3512
+msgid "Zoom to 1:6 - '6'"
+msgstr ""
+
+#: ../bin/draw.c:3514
+msgid "Zoom to 1:7 - '7'"
+msgstr ""
+
+#: ../bin/draw.c:3516
+msgid "Zoom to 1:8 - '8'"
+msgstr ""
+
+#: ../bin/draw.c:3518
+msgid "Zoom to 1:9 - '9'"
+msgstr ""
+
+#: ../bin/draw.c:3524
+msgid "Pan center here - 'c'"
+msgstr ""
+
+#: ../bin/drawgeom.c:72 ../bin/drawgeom.c:89
+msgid "Create Lines"
+msgstr "Luo viivoja"
+
+#: ../bin/drawgeom.c:443
+msgid "Drag next point, +Alt reverse Magnetic Snap or +Ctrl lock to 90 deg"
+msgstr ""
+
+#: ../bin/drawgeom.c:454
+msgid ""
+"Drag next point, +Alt reverse Magnetic Snap, or +Ctrl to lock to 90 degrees"
+msgstr ""
+
+#: ../bin/drawgeom.c:487
+msgid "Drag to set radius"
+msgstr "Aseta säde raahaamalla"
+
+#: ../bin/drawgeom.c:501
+msgid "Drag set box size"
+msgstr "Aseta nelikulmion koko rahaamalla"
+
+#: ../bin/drawgeom.c:543
+msgid "+Alt - reverse Magnetic Snap or +Ctrl - lock to 90 deg"
+msgstr ""
+
+#: ../bin/drawgeom.c:625 ../bin/drawgeom.c:691
+#, c-format
+msgid "Length = %s, Angle = %0.2f"
+msgstr "Pituus = %s, Kulma = %0.2f"
+
+#: ../bin/drawgeom.c:713
+#, c-format
+msgid "Straight Line: Length=%s Angle=%0.3f"
+msgstr "Suora viiva: Pituus=%s Kulma=%0.3f"
+
+#: ../bin/drawgeom.c:735
+#, c-format
+msgid "Curved Line: Radius=%s Angle=%0.3f Length=%s"
+msgstr "Kaari: Säde=%s Kulma=%0.3f Pituus=%s"
+
+#: ../bin/drawgeom.c:761 ../bin/drawgeom.c:769
+#, c-format
+msgid "Radius = %s"
+msgstr "Säde = %s"
+
+#: ../bin/drawgeom.c:780
+#, c-format
+msgid "Width = %s, Height = %s"
+msgstr "Leveys = %s, Korkeus = %s"
+
+#: ../bin/drawgeom.c:841
+msgid "Drag on Red arrows to adjust curve"
+msgstr "Asettele kaari vetämällä punaisista nuolista"
+
+#: ../bin/drawgeom.c:1298
+#, fuzzy
+msgid "Select points or use context menu"
+msgstr "Aseta kielten kärjet"
+
+#: ../bin/drawgeom.c:1567
+#, fuzzy, c-format
+msgid "Length = %s, Last angle = %0.2f"
+msgstr "Pituus = %s, Kulma = %0.2f"
+
+#: ../bin/drawgeom.c:1736
+#, fuzzy
+msgid "Point Deleted"
+msgstr "Kirjasinta ei valittu"
+
+#: ../bin/drawgeom.c:2194
+#, fuzzy
+msgid "Not close to end of line"
+msgstr "Nosta tai laske kaikkia valittuja raiteita"
+
+#: ../bin/drawgeom.c:2252
+msgid "Not close to ends or middle of mine, reselect"
+msgstr ""
+
+#: ../bin/drawgeom.c:2303 ../bin/drawgeom.c:2550
+#, fuzzy
+msgid "Drag to Move Corner Point"
+msgstr "Raahaa asettaaksesi 2. päätepiste"
+
+#: ../bin/drawgeom.c:2311
+#, fuzzy
+msgid "Drag to Move Edge "
+msgstr "Raahaa kehälle"
+
+#: ../bin/drawgeom.c:2383
+#, c-format
+msgid "Length = %0.3f Angle = %0.3f"
+msgstr "Pituus = %0.3f Kulma = %0.3f"
+
+#: ../bin/drawgeom.c:2544
+#, fuzzy
+msgid "Drag to Move Edge"
+msgstr "Raahaa kehälle"
+
+#: ../bin/dxfoutput.c:244
+msgid "Export to DXF"
+msgstr "Vie DXF tiedostoon"
+
+#: ../bin/fileio.c:223
+msgid ""
+"\n"
+"Do you want to continue?"
+msgstr ""
+"\n"
+"Haluatko jatkaa?"
+
+#: ../bin/fileio.c:595
+#, c-format
+msgid "putTitle: title too long: %s"
+msgstr "putTitle: Otsikko on liian pitkä: %s"
+
+#: ../bin/fileio.c:627
+msgid "Unnamed Trackplan"
+msgstr "Nimetön ratasuunnitelma"
+
+#: ../bin/fileio.c:628
+msgid " (R/O)"
+msgstr ""
+
+#: ../bin/fileio.c:779
+msgid "Unknown layout file object - skip until next good object?"
+msgstr ""
+
+#: ../bin/fileio.c:835 ../bin/fileio.c:1022
+msgid "Track"
+msgstr "Raide"
+
+#: ../bin/fileio.c:836
+#, fuzzy
+msgid "Not Found"
+msgstr "Pisteitä"
+
+#: ../bin/fileio.c:1265
+#, fuzzy
+msgid "AutoSave Tracks As"
+msgstr "Tallenna"
+
+#: ../bin/fileio.c:1280
+msgid "Save Tracks"
+msgstr "Tallenna"
+
+#: ../bin/fileio.c:1297
+#, fuzzy
+msgid "Save Tracks As"
+msgstr "Tallenna"
+
+#: ../bin/fileio.c:1309
+msgid "Open Tracks"
+msgstr "Avaa"
+
+#: ../bin/fileio.c:1323
+#, fuzzy
+msgid "Example Tracks"
+msgstr "Yksinkertaiset raideosat"
+
+#: ../bin/fileio.c:1400
+#, fuzzy
+msgid "File AutoSaved"
+msgstr "Viivain"
+
+#: ../bin/fileio.c:1575
+#, fuzzy, c-format
+msgid "Module - %s"
+msgstr "Ohje"
+
+#: ../bin/fileio.c:1580 ../bin/fileio.c:1601
+msgid "Import Tracks"
+msgstr "Tuo raiteet tiedostosta"
+
+#: ../bin/fileio.c:1601
+#, fuzzy
+msgid "Import Module"
+msgstr "Tuo tiedostosta"
+
+#: ../bin/fileio.c:1659
+msgid "Export Tracks"
+msgstr "Vie raiteet tiedostoon"
+
+#: ../bin/fileio.c:1680
+msgid "Clipboard"
+msgstr "Leikepöytä"
+
+#: ../bin/filenoteui.c:60 ../bin/linknoteui.c:48 ../bin/textnoteui.c:41
+#, fuzzy
+msgid "Position X"
+msgstr "Sijainti"
+
+#: ../bin/filenoteui.c:62 ../bin/linknoteui.c:50 ../bin/textnoteui.c:43
+#, fuzzy
+msgid "Position Y"
+msgstr "Sijainti"
+
+#: ../bin/filenoteui.c:66 ../bin/linknoteui.c:54
+#, fuzzy
+msgid "Title"
+msgstr "Otsikko"
+
+#: ../bin/filenoteui.c:68 ../bin/trknote.c:54
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:89
+#, fuzzy
+msgid "Document"
+msgstr "Lukumäärä"
+
+#: ../bin/filenoteui.c:70
+#, fuzzy
+msgid "Select..."
+msgstr "Valitse"
+
+#: ../bin/filenoteui.c:72 ../bin/linknoteui.c:58
+#, fuzzy
+msgid "Open..."
+msgstr "&Avaa ..."
+
+#: ../bin/filenoteui.c:134
+msgid "Add Document"
+msgstr ""
+
+#: ../bin/filenoteui.c:157
+msgid "The file doesn't exist or cannot be read!"
+msgstr ""
+
+#: ../bin/filenoteui.c:297
+#, fuzzy, c-format
+msgid "Document(%d) Layer=%d %-.80s [%s]"
+msgstr "(%d): Taso=%d %s"
+
+#: ../bin/filenoteui.c:318
+#, fuzzy
+msgid "Update Document"
+msgstr "Päivitetty"
+
+#: ../bin/filenoteui.c:330
+#, fuzzy
+msgid "Describe the file"
+msgstr "Määrittele ja valitse -toiminnot"
+
+#: ../bin/filenoteui.c:338
+#, fuzzy
+msgid "Attach Document"
+msgstr "Lukumäärä"
+
+#: ../bin/i18n.c:57
+#, c-format
+msgid "Gettext initialized (PACKAGE=%s, LOCALEDIR=%s, LC_ALL=%s).\n"
+msgstr "Gettext alustettu (PACKAGE=%s, LOCALEDIR=%s, LC_ALL=%s).\n"
+
+#: ../bin/layout.c:553 ../bin/layout.c:994
+#, c-format
+msgid "Unable to load Image File - %s"
+msgstr ""
+
+#: ../bin/layout.c:630
+msgid "Load Background"
+msgstr ""
+
+#: ../bin/layout.c:657
+msgid "Room Width"
+msgstr "Huoneen leveys"
+
+#: ../bin/layout.c:658
+#, fuzzy
+msgid " Height"
+msgstr "Korkeus"
+
+#: ../bin/layout.c:659
+#, fuzzy
+msgid "Layout Title"
+msgstr "Ratasuunnitelma"
+
+#: ../bin/layout.c:660
+#, fuzzy
+msgid "Subtitle"
+msgstr "Otsikko"
+
+#: ../bin/layout.c:669
+#, fuzzy
+msgid "Background File Path"
+msgstr "Profiilirata"
+
+#: ../bin/layout.c:670
+msgid "Browse ..."
+msgstr "Selaa ..."
+
+#: ../bin/layout.c:673
+msgid "Background PosX,Y"
+msgstr ""
+
+#: ../bin/layout.c:677
+msgid "Background Size"
+msgstr ""
+
+#: ../bin/layout.c:679
+msgid "Background Screen %"
+msgstr ""
+
+#: ../bin/layout.c:681
+msgid "Background Angle"
+msgstr ""
+
+#: ../bin/layout.c:682
+msgid "Named Settings File"
+msgstr ""
+
+#: ../bin/layout.c:683
+#, fuzzy
+msgid "Write"
+msgstr "Tulostin"
+
+#: ../bin/layout.c:684
+#, fuzzy
+msgid "Read"
+msgstr "Punainen"
+
+#: ../bin/layout.c:818
+msgid "Layout Options"
+msgstr "Ratasuunnitelman asetukset"
+
+#: ../bin/layout.c:1052
+msgid "Read Settings"
+msgstr ""
+
+#: ../bin/layout.c:1053 ../bin/layout.c:1087
+#, fuzzy
+msgid "Settings File (*.xset)|*.xset"
+msgstr "Parametritiedosto|*.xtp"
+
+#: ../bin/layout.c:1086
+#, fuzzy
+msgid "Write Settings"
+msgstr "Suora raideosa"
+
+#: ../bin/linknoteui.c:56
+msgid "URL"
+msgstr ""
+
+#: ../bin/linknoteui.c:230
+#, fuzzy
+msgid "Update Webink"
+msgstr "Päivitä"
+
+#: ../bin/linknoteui.c:248
+#, fuzzy
+msgid "Create Weblink"
+msgstr "Luo nelikulmio"
+
+#: ../bin/macro.c:67
+msgid "Message"
+msgstr "Viesti"
+
+#: ../bin/macro.c:166
+msgid "Recording"
+msgstr "Nauhoitus"
+
+#: ../bin/macro.c:206 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1309
+msgid "End of Playback. Hit Step to exit\n"
+msgstr "Toisto on lopussa. Paina Seuraava vaihe -painiketta poistuaksesi.\n"
+
+#: ../bin/macro.c:271
+msgid "Record"
+msgstr "Nauhoita"
+
+#: ../bin/macro.c:686
+msgid "Step"
+msgstr "Seuraava vaihe"
+
+#: ../bin/macro.c:689 ../bin/macro.c:1560
+msgid "Next"
+msgstr "Seuraava"
+
+#: ../bin/macro.c:692 ../bin/misc.c:696 ../bin/track.c:1104
+msgid "Quit"
+msgstr "Lopeta"
+
+#: ../bin/macro.c:695 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:631
+msgid "Speed"
+msgstr "Nopeus"
+
+#: ../bin/macro.c:855 ../bin/track.c:1344
+msgid "Regression"
+msgstr ""
+
+#: ../bin/macro.c:1010 ../bin/macro.c:1410
+msgid "Demo"
+msgstr "Demo"
+
+#: ../bin/macro.c:1219
+#, c-format
+msgid "Elapsed time %lu\n"
+msgstr "Kulunut aika %lu\n"
+
+#: ../bin/macro.c:1329
+msgid "Playback"
+msgstr "Toisto"
+
+#: ../bin/macro.c:1414
+msgid "Slowest"
+msgstr "Hitain"
+
+#: ../bin/macro.c:1415
+msgid "Slow"
+msgstr "Hidas"
+
+#: ../bin/macro.c:1417
+msgid "Fast"
+msgstr "Nopea"
+
+#: ../bin/macro.c:1418
+msgid "Faster"
+msgstr "Nopeampi"
+
+#: ../bin/macro.c:1419
+msgid "Fastest"
+msgstr "Nopein"
+
+#: ../bin/macro.c:1542
+msgid "Can not find PARAMETER playback proc"
+msgstr "PARAMETER toistoproseduuria ei löydy"
+
+#: ../bin/menu.c:130
+#, fuzzy
+msgid "File Buttons"
+msgstr "Viivain"
+
+#: ../bin/menu.c:130
+#, fuzzy
+msgid "Print Buttons"
+msgstr "Kumoa/Tee uudelleen"
+
+#: ../bin/menu.c:130
+#, fuzzy
+msgid "Import/Export Buttons"
+msgstr "Zoom"
+
+#: ../bin/menu.c:131
+msgid "Zoom Buttons"
+msgstr "Zoom"
+
+#: ../bin/menu.c:131
+msgid "Undo Buttons"
+msgstr "Kumoa/Tee uudelleen"
+
+#: ../bin/menu.c:131
+msgid "Easement Button"
+msgstr "Kaarreloivennus"
+
+#: ../bin/menu.c:131
+msgid "SnapGrid Buttons"
+msgstr "Kohdistusruudukko"
+
+#: ../bin/menu.c:132
+msgid "Create Track Buttons"
+msgstr "Luo raiteet"
+
+#: ../bin/menu.c:132
+#, fuzzy
+msgid "Layout Control Elements"
+msgstr "Ratasuunnitelman asetukset"
+
+#: ../bin/menu.c:133
+msgid "Modify Track Buttons"
+msgstr "Radan muokkaus"
+
+#: ../bin/menu.c:133
+msgid "Properties/Select"
+msgstr "Määrittele/valitse"
+
+#: ../bin/menu.c:134
+msgid "Track Group Buttons"
+msgstr "Raiteiden ryhmittely"
+
+#: ../bin/menu.c:134
+msgid "Train Group Buttons"
+msgstr "Junat"
+
+#: ../bin/menu.c:135
+msgid "Create Misc Buttons"
+msgstr "Piirto"
+
+#: ../bin/menu.c:135
+msgid "Ruler Button"
+msgstr "Viivain"
+
+#: ../bin/menu.c:136
+msgid "Layer Buttons"
+msgstr "Tasot"
+
+#: ../bin/menu.c:136
+msgid "Hot Bar"
+msgstr "Hot Bar"
+
+#: ../bin/menu.c:225 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:82
+msgid "Change Elevations"
+msgstr "Muuta korkeustasoja"
+
+#: ../bin/menu.c:250
+msgid "Angle:"
+msgstr "Kulma:"
+
+#: ../bin/menu.c:255
+#, fuzzy
+msgid "Indexes:"
+msgstr "Indeksi"
+
+#: ../bin/menu.c:262
+#, fuzzy
+msgid "Move X:"
+msgstr "Siirrä"
+
+#: ../bin/menu.c:263
+#, fuzzy
+msgid "Move Y:"
+msgstr "Siirrä"
+
+#: ../bin/menu.c:282
+#, fuzzy
+msgid "Select Index"
+msgstr "Valitse objekteja"
+
+#: ../bin/menu.c:330
+#, fuzzy
+msgid "Enter Move ..."
+msgstr "Syötä kulma ..."
+
+#: ../bin/menu.c:336
+#, fuzzy
+msgid "Select Track Index ..."
+msgstr "Valitut raiteet"
+
+#: ../bin/menu.c:343
+msgid "180 "
+msgstr "180 "
+
+#: ../bin/menu.c:344
+msgid "90 CW"
+msgstr "90 MP"
+
+#: ../bin/menu.c:345
+msgid "45 CW"
+msgstr "45 MP"
+
+#: ../bin/menu.c:346
+msgid "30 CW"
+msgstr "30 MP"
+
+#: ../bin/menu.c:347
+msgid "15 CW"
+msgstr "15 MP"
+
+#: ../bin/menu.c:348
+msgid "15 CCW"
+msgstr "15 VP"
+
+#: ../bin/menu.c:349
+msgid "30 CCW"
+msgstr "30 VP"
+
+#: ../bin/menu.c:350
+msgid "45 CCW"
+msgstr "45 VP"
+
+#: ../bin/menu.c:351
+msgid "90 CCW"
+msgstr "90 VP"
+
+#: ../bin/menu.c:352
+msgid "Enter Angle ..."
+msgstr "Syötä kulma ..."
+
+#: ../bin/menu.c:369
+#, fuzzy
+msgid "examples"
+msgstr "Näyte"
+
+#: ../bin/menu.c:378
+msgid ""
+"Do you want to return to the last saved state?\n"
+"\n"
+"Revert will cause all changes done since last save to be lost."
+msgstr ""
+"Haluatko palata edelliseen tallennettuun tilaan?\n"
+"\n"
+"Palautuksessa menetetään kaikki tallennuksen jälkeiset muutokset."
+
+#: ../bin/menu.c:380
+msgid "&Revert"
+msgstr "Palauta"
+
+#: ../bin/menu.c:380 ../bin/misc.c:660
+msgid "&Cancel"
+msgstr "&Peruuta"
+
+#: ../bin/menu.c:433
+msgid "XTrackCAD Font"
+msgstr "XTrackCAD kirjasin"
+
+#: ../bin/menu.c:459
+msgid "Sticky Commands"
+msgstr "Pysyvät komennot"
+
+#: ../bin/menu.c:478
+msgid "Test Mallocs"
+msgstr ""
+
+#: ../bin/menu.c:497
+msgid "Debug"
+msgstr "Virheiden poisto (debug)"
+
+#: ../bin/menu.c:582
+msgid "No Messages"
+msgstr "Ei viestejä"
+
+#: ../bin/menu.c:606
+#, c-format
+msgid "No help for %s"
+msgstr "Ei ohjetta aiheesta %s"
+
+#: ../bin/menu.c:656
+#, c-format
+msgid "No balloon help for %s\n"
+msgstr "Ei pikaopastetta %s:lle\n"
+
+#: ../bin/menu.c:658 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:694
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:695
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:697
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:698
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:700
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:701
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:702
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:703
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:704
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:705
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:706
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:707
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:708
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:709
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:710
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:711
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:712
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:713
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:714
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:715
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:716
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:717
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:718
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:719
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:720
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:721
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:722
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:723
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:724
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:725
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:726
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:727
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:728
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:729
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:730
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:731
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:732
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:733
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:734
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:735
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:736
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:737
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:738
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:739
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:740
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:741
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:742
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:743
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:744
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:745
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:746
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:747
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:748
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:749
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:750
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:751
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:752
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:753
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:754
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:756
+msgid "No Help"
+msgstr "Ei ohjetta"
+
+#: ../bin/menu.c:884
+msgid "&File"
+msgstr "&Tiedosto"
+
+#: ../bin/menu.c:885
+msgid "&Edit"
+msgstr "&Muokkaa"
+
+#: ../bin/menu.c:886
+msgid "&View"
+msgstr "&Näytä"
+
+#: ../bin/menu.c:887
+msgid "&Add"
+msgstr "&Lisää"
+
+#: ../bin/menu.c:888
+msgid "&Change"
+msgstr "Muuta"
+
+#: ../bin/menu.c:889
+msgid "&Draw"
+msgstr "Piirto"
+
+#: ../bin/menu.c:890
+msgid "&Manage"
+msgstr "Hallinta"
+
+#: ../bin/menu.c:891
+msgid "&Options"
+msgstr "Asetukset"
+
+#: ../bin/menu.c:892
+msgid "&Macro"
+msgstr "Makro"
+
+#: ../bin/menu.c:893
+msgid "&Window"
+msgstr "&Ikkuna"
+
+#: ../bin/menu.c:894
+msgid "&Help"
+msgstr "&Ohje"
+
+#: ../bin/menu.c:930
+#, fuzzy
+msgid "Context Commands"
+msgstr "Muut komennot"
+
+#: ../bin/menu.c:931
+msgid "Shift Context Commands"
+msgstr ""
+
+#: ../bin/menu.c:945 ../bin/menu.c:947
+#, fuzzy
+msgid "Zoom Extents"
+msgstr "Zoom"
+
+#: ../bin/menu.c:950 ../bin/menu.c:1185
+msgid "Enable SnapGrid"
+msgstr "Käytä kohdistusruudukkoa"
+
+#: ../bin/menu.c:952
+msgid "SnapGrid Show"
+msgstr "Näytä kohdistusruudukko"
+
+#: ../bin/menu.c:955
+#, fuzzy
+msgid " Enable Magnetic Snap"
+msgstr "Käytä kohdistusruudukkoa"
+
+#: ../bin/menu.c:957 ../bin/menu.c:1207
+#, fuzzy
+msgid "Show/Hide Map"
+msgstr "Näytä/piilota taso"
+
+#: ../bin/menu.c:981 ../bin/menu.c:983
+#, fuzzy
+msgid "Select Track Index..."
+msgstr "Valitut raiteet"
+
+#: ../bin/menu.c:995 ../bin/menu.c:996
+#, fuzzy
+msgid "Add..."
+msgstr "Lisää"
+
+#: ../bin/menu.c:999 ../bin/menu.c:1000
+#, fuzzy
+msgid "More..."
+msgstr "Lisää"
+
+#: ../bin/menu.c:1005
+msgid "&New ..."
+msgstr "&Uusi ..."
+
+#: ../bin/menu.c:1007
+msgid "&Open ..."
+msgstr "&Avaa ..."
+
+#: ../bin/menu.c:1011 ../bin/misc.c:660
+msgid "&Save"
+msgstr "&Tallenna"
+
+#: ../bin/menu.c:1013
+msgid "Save &As ..."
+msgstr "Tallenna &nimellä ..."
+
+#: ../bin/menu.c:1015
+msgid "Revert"
+msgstr "Palauta"
+
+#: ../bin/menu.c:1028
+msgid "P&rint Setup ..."
+msgstr "Tulostusasetukset ..."
+
+#: ../bin/menu.c:1036
+msgid "&Import"
+msgstr "Tuo tiedostosta"
+
+#: ../bin/menu.c:1038
+#, fuzzy
+msgid "Import &Module"
+msgstr "Tuo tiedostosta"
+
+#: ../bin/menu.c:1041
+msgid "Export to &Bitmap"
+msgstr "Vie bitmap tiedostoon"
+
+#: ../bin/menu.c:1044
+msgid "E&xport"
+msgstr "Vie tiedostoon"
+
+#: ../bin/menu.c:1046
+msgid "Export D&XF"
+msgstr "Vie DXF tiedostoon"
+
+#: ../bin/menu.c:1050
+#, fuzzy
+msgid "Export S&VG"
+msgstr "Vie DXF tiedostoon"
+
+#: ../bin/menu.c:1056
+msgid "Parameter &Files ..."
+msgstr "Parametritiedostot ..."
+
+#: ../bin/menu.c:1058
+msgid "No&tes ..."
+msgstr "Muistiinpanot ..."
+
+#: ../bin/menu.c:1065
+msgid "E&xit"
+msgstr "Poistu"
+
+#: ../bin/menu.c:1102
+msgid "&Undo"
+msgstr "&Kumoa"
+
+#: ../bin/menu.c:1104
+msgid "R&edo"
+msgstr "&Tee uudestaan"
+
+#: ../bin/menu.c:1107
+msgid "Cu&t"
+msgstr "&Leikkaa"
+
+#: ../bin/menu.c:1109
+msgid "&Copy"
+msgstr "&Kopioi"
+
+#: ../bin/menu.c:1111
+msgid "&Paste"
+msgstr "L&iitä"
+
+#: ../bin/menu.c:1113
+#, fuzzy
+msgid "C&lone"
+msgstr "Sulje"
+
+#: ../bin/menu.c:1115
+msgid "De&lete"
+msgstr "Poista"
+
+#: ../bin/menu.c:1123
+msgid "Select &All"
+msgstr "Valitse kaikki"
+
+#: ../bin/menu.c:1127
+#, fuzzy
+msgid "Select By Index"
+msgstr "Valitse objekteja"
+
+#: ../bin/menu.c:1129
+msgid "&Deselect All"
+msgstr "Poista valinnat"
+
+#: ../bin/menu.c:1131
+msgid "&Invert Selection"
+msgstr "Käänteinen valinta"
+
+#: ../bin/menu.c:1134
+msgid "Select Stranded Track"
+msgstr "Valitse irtonaiset raiteet"
+
+#: ../bin/menu.c:1136
+msgid "Tu&nnel"
+msgstr "Tunneli"
+
+#: ../bin/menu.c:1138
+#, fuzzy
+msgid "B&ridge"
+msgstr "Silta"
+
+#: ../bin/menu.c:1140
+#, fuzzy
+msgid "&Roadbed"
+msgstr "Yhtiö"
+
+#: ../bin/menu.c:1144
+#, fuzzy
+msgid "Move to &Front"
+msgstr "Siirrä yhdistääksesi"
+
+#: ../bin/menu.c:1146
+#, fuzzy
+msgid "Move to &Back"
+msgstr "Siirrä raiteita"
+
+#: ../bin/menu.c:1161
+msgid "Zoom &In"
+msgstr "Lähennä"
+
+#: ../bin/menu.c:1164
+msgid "Zoom &Out"
+msgstr "Loitonna"
+
+#: ../bin/menu.c:1167
+#, fuzzy
+msgid "Zoom &Extents"
+msgstr "Lähennä"
+
+#: ../bin/menu.c:1178
+msgid "&Redraw"
+msgstr "Uudelleenpiirto"
+
+#: ../bin/menu.c:1180
+msgid "Redraw All"
+msgstr "Uudelleenpiirto kaikille"
+
+#: ../bin/menu.c:1187
+msgid "Show SnapGrid"
+msgstr "Näytä kohdistusruudukko"
+
+#: ../bin/menu.c:1198
+#, fuzzy
+msgid "Enable Magnetic Snap"
+msgstr "Käytä kohdistusruudukkoa"
+
+#: ../bin/menu.c:1213
+msgid "&Tool Bar"
+msgstr "Työkalurivin painikkeet"
+
+#: ../bin/menu.c:1247 ../bin/menu.c:1248
+#, fuzzy
+msgid "Control Element"
+msgstr "Valitse värit"
+
+#: ../bin/menu.c:1280
+msgid "Change Scale"
+msgstr "Muuta mittakaavaa"
+
+#: ../bin/menu.c:1296
+msgid "Raise/Lower Elevations"
+msgstr "Nosta/laske korkeuksia"
+
+#: ../bin/menu.c:1305
+msgid "Recompute Elevations"
+msgstr "Laske korkeudet uudelleen"
+
+#: ../bin/menu.c:1323
+msgid "L&ayout ..."
+msgstr "Ratasuunnitelma ..."
+
+#: ../bin/menu.c:1325
+msgid "&Display ..."
+msgstr "Näyttö ..."
+
+#: ../bin/menu.c:1327
+msgid "Co&mmand ..."
+msgstr "Komennot ..."
+
+#: ../bin/menu.c:1329
+msgid "&Easements ..."
+msgstr "Kaarreloivennus ..."
+
+#: ../bin/menu.c:1332
+msgid "&Fonts ..."
+msgstr "&Kirjasimet ..."
+
+#: ../bin/menu.c:1334
+msgid "Stic&ky ..."
+msgstr "Pysyvät komennot ..."
+
+#: ../bin/menu.c:1339
+msgid "&Debug ..."
+msgstr "Virheiden poisto (debug) ..."
+
+#: ../bin/menu.c:1342
+msgid "&Preferences ..."
+msgstr "&Ominaisuudet ..."
+
+#: ../bin/menu.c:1344
+msgid "&Colors ..."
+msgstr "Värit ..."
+
+#: ../bin/menu.c:1350
+msgid "&Record ..."
+msgstr "&Nauhoita ..."
+
+#: ../bin/menu.c:1352
+msgid "&Play Back ..."
+msgstr "&Toisto ..."
+
+#: ../bin/menu.c:1358
+msgid "Main window"
+msgstr "Pääikkuna"
+
+#: ../bin/menu.c:1372
+msgid "Recent Messages"
+msgstr "Viimeisimmät viestit"
+
+#: ../bin/menu.c:1379
+msgid "Tip of the Day..."
+msgstr "Päivän vinkki ..."
+
+#: ../bin/menu.c:1381
+msgid "&Demos"
+msgstr "Demot"
+
+#: ../bin/menu.c:1382
+#, fuzzy
+msgid "Examples..."
+msgstr "Kaarreloivennus ..."
+
+#: ../bin/menu.c:1386 ../bin/smalldlg.c:210
+msgid "About"
+msgstr "Tietoja"
+
+#: ../bin/menu.c:1399
+msgid "Tur&nout Designer..."
+msgstr "Vaihteiden suunnittelu..."
+
+#: ../bin/menu.c:1402
+msgid "Layout &Control Elements"
+msgstr ""
+
+#: ../bin/menu.c:1404
+msgid "&Group"
+msgstr "Ryhmittele"
+
+#: ../bin/menu.c:1406
+msgid "&Ungroup"
+msgstr "Pura ryhmittely"
+
+#: ../bin/menu.c:1410
+#, fuzzy
+msgid "Custom defined parts..."
+msgstr "Omat raideosat ja kalusto..."
+
+#: ../bin/menu.c:1413
+msgid "Update Turnouts and Structures"
+msgstr "Päivitä vaihteet ja rakennukset"
+
+#: ../bin/menu.c:1422
+msgid "Layers ..."
+msgstr "Tasot ..."
+
+#: ../bin/menu.c:1426
+msgid "Parts &List ..."
+msgstr "Osaluettelo ..."
+
+#: ../bin/menu.c:1429
+msgid "Price List..."
+msgstr "Hinnasto ..."
+
+#: ../bin/menu.c:1458 ../bin/menu.c:1459
+#, fuzzy
+msgid "Import/Export"
+msgstr "Vie tiedostoon"
+
+#: ../bin/misc.c:487 ../bin/misc.c:491
+msgid "ABORT"
+msgstr "KESKEYTÄ"
+
+#: ../bin/misc.c:490
+msgid ""
+"\n"
+"Do you want to save your layout?"
+msgstr ""
+"\n"
+"Haluatko tallentaa ratasuunnitelman?"
+
+#: ../bin/misc.c:658
+msgid ""
+"Save changes to the layout design before closing?\n"
+"\n"
+"If you don't save now, your unsaved changes will be discarded."
+msgstr ""
+"Tallennetaanko ratasuunnitelma ennen sulkemista?\n"
+"\n"
+"Jos ei tallenneta, kaikki muutokset menetetään."
+
+#: ../bin/misc.c:660
+msgid "&Don't Save"
+msgstr "Älä tallenna"
+
+#: ../bin/misc.c:991
+msgid ""
+"Program was not terminated properly. Do you want to resume working on the "
+"previous trackplan?"
+msgstr ""
+"Ohjelmaa ei lopetettu kunnolla. Haluatko jatkaa työskentelyä edellisen "
+"ratasuunnitelman parissa?"
+
+#: ../bin/misc.c:992
+msgid "Resume"
+msgstr "Jatka"
+
+#: ../bin/misc.c:992
+msgid "Resume with New Name"
+msgstr ""
+
+#: ../bin/misc.c:992
+msgid "Ignore Checkpoint"
+msgstr ""
+
+#: ../bin/misc.c:995
+#, fuzzy, c-format
+msgid "Reload Checkpoint Selected\n"
+msgstr "Kuinka usein automaattinen varmennus suoritetaan"
+
+#: ../bin/misc.c:997
+#, c-format
+msgid "Reload Checkpoint With New Name Selected\n"
+msgstr ""
+
+#: ../bin/misc.c:999
+#, fuzzy, c-format
+msgid "Ignore Checkpoint Selected\n"
+msgstr "Kuinka usein automaattinen varmennus suoritetaan"
+
+#: ../bin/misc.c:1121
+#, c-format
+msgid "Unnamed Trackplan - %s(%s)"
+msgstr "Nimetön ratasuunnitelma - %s(%s)"
+
+#: ../bin/misc.c:1175
+msgid "Initializing commands"
+msgstr "Alustetaan komennot"
+
+#: ../bin/misc.c:1184
+msgid "Initializing menus"
+msgstr "Alustetaan valikot"
+
+#: ../bin/misc.c:1216
+msgid "Reading parameter files"
+msgstr "Luetaan parametritiedostot"
+
+#: ../bin/misc.c:1260
+msgid "Initialization complete"
+msgstr "Alustus valmis"
+
+#: ../bin/param.c:76
+msgid "Unexpected End Of String"
+msgstr "Odottamaton merkkijonon loppu"
+
+#: ../bin/param.c:83
+msgid "Expected digit"
+msgstr "Odotettiin numeroa"
+
+#: ../bin/param.c:91
+msgid "Overflow"
+msgstr "Ylivuoto"
+
+#: ../bin/param.c:140
+msgid "Divide by 0"
+msgstr "Jako nollalla"
+
+#: ../bin/param.c:148
+msgid "Expected /"
+msgstr "Odotettiin /"
+
+#: ../bin/param.c:233
+msgid "Invalid Units Indicator"
+msgstr "Epäkelpo yksikön merkintä"
+
+#: ../bin/param.c:261
+msgid "Expected End Of String"
+msgstr "Odotettiin merkkijonon loppua"
+
+#: ../bin/param.c:289 ../bin/param.c:1528
+#, c-format
+msgid "Invalid Number"
+msgstr "Epäkelpo numero"
+
+#: ../bin/param.c:349
+msgid "End Of String"
+msgstr "Merkkijonon loppu"
+
+#: ../bin/param.c:1486
+#, c-format
+msgid "Enter a value > %ld"
+msgstr "Syötä arvo, joka on > %ld"
+
+#: ../bin/param.c:1489
+#, c-format
+msgid "Enter a value < %ld"
+msgstr "Syötä arvo, joka on < %ld"
+
+#: ../bin/param.c:1491
+#, c-format
+msgid "Enter a value between %ld and %ld"
+msgstr "Syötä arvo %ld ja %ld väliltä"
+
+#: ../bin/param.c:1568
+#, c-format
+msgid "Enter a value > %s"
+msgstr "Syätä arvo, joka on > %s"
+
+#: ../bin/param.c:1572
+#, c-format
+msgid "Enter a value < %s"
+msgstr "Syötä arvo, joka on < %s"
+
+#: ../bin/param.c:1575
+#, c-format
+msgid "Enter a value between %s and %s"
+msgstr "Syötä arvo %s ja %s väliltä"
+
+#: ../bin/param.c:1674
+#, fuzzy
+msgid "String cannot be blank"
+msgstr "Tasoa ei voi muokata"
+
+#: ../bin/param.c:1689
+#, c-format
+msgid "String is too long, Max length is %u"
+msgstr ""
+
+#: ../bin/param.c:1823
+msgid "Invalid input(s), please correct the hilighted field(s)"
+msgstr ""
+
+#: ../bin/param.c:3043
+msgid "Help"
+msgstr "Ohje"
+
+#: ../bin/paramfile.c:258
+msgid "Parameter"
+msgstr "Parametri"
+
+#: ../bin/paramfile.c:363
+msgid "Unknown param file line - skip until next good object?"
+msgstr ""
+
+#: ../bin/paramfilelist.c:69
+#, c-format
+msgid ""
+"The parameter file: %s could not be found and was probably deleted or moved. "
+"The file is removed from the active parameter file list."
+msgstr ""
+
+#: ../bin/paramfilelist.c:126
+#, c-format
+msgid "Updating %s"
+msgstr "Päivitetään %s"
+
+#: ../bin/paramfilesearch_ui.c:52
+#, fuzzy
+msgid "Fit Any"
+msgstr "Ensimmäinen "
+
+#: ../bin/paramfilesearch_ui.c:52
+msgid "Fit Compatible"
+msgstr ""
+
+#: ../bin/paramfilesearch_ui.c:52
+#, fuzzy
+msgid "Fit Exact"
+msgstr "Muokkaa -valikko"
+
+#: ../bin/paramfilesearch_ui.c:192
+#, fuzzy, c-format
+msgid "%u parameter files in library. %d Fit Scale."
+msgstr "Etsi ladattava parametritiedosto"
+
+#: ../bin/paramfilesearch_ui.c:307
+#, fuzzy, c-format
+msgid "%d parameter files found. %d Fit Scale"
+msgstr "Luetaan parametritiedostot"
+
+#: ../bin/paramfilesearch_ui.c:317
+msgid "No matches found."
+msgstr ""
+
+#: ../bin/paramfilesearch_ui.c:477
+#, fuzzy
+msgid "Choose parameter files"
+msgstr "Luetaan parametritiedostot"
+
+#: ../bin/paramfilesearch_ui.c:495
+msgid "No system parameter files found, search is disabled."
+msgstr ""
+
+#: ../bin/partcatalog.c:739
+#, fuzzy
+msgid "Found: "
+msgstr "Komento: "
+
+#: ../bin/partcatalog.c:740
+msgid "Similar: "
+msgstr ""
+
+#: ../bin/partcatalog.c:741
+#, fuzzy
+msgid "Ignored: "
+msgstr "Hylkää"
+
+#: ../bin/partcatalog.c:742
+#, fuzzy
+msgid "Not found: "
+msgstr "Ei kirjasimia"
+
+#: ../bin/scale.c:301
+#, c-format
+msgid ""
+"Invalid Scale: playback aborted\n"
+" SCALE %s"
+msgstr ""
+
+#: ../bin/scale.c:845 ../bin/scale.c:870
+msgid "Ratio"
+msgstr "Suhde"
+
+#: ../bin/scale.c:854
+msgid "Do not resize track"
+msgstr "Älä muuta raiteiden kokoa"
+
+#: ../bin/scale.c:858
+msgid "Rescale by:"
+msgstr "Muunnos:"
+
+#: ../bin/scale.c:860
+msgid "From:"
+msgstr "Alkuperäinen:"
+
+#: ../bin/scale.c:864
+msgid "To: "
+msgstr "Uusi:"
+
+#: ../bin/scale.c:913
+msgid "Rescale Tracks"
+msgstr "Muuta raiteiden mittakaavaa"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:473
+#: ../bin/scale.c:1084 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1258
+msgid "Rescale"
+msgstr "Mittakaavan muutos"
+
+#: ../bin/scale.c:1134
+#, c-format
+msgid "%ld Objects to be rescaled"
+msgstr ""
+
+#: ../bin/smalldlg.c:45
+msgid "Show tips at start"
+msgstr "Vinkki ohjelman alussa"
+
+#: ../bin/smalldlg.c:51
+msgid "Did you know..."
+msgstr "Tiesitkö..."
+
+#: ../bin/smalldlg.c:53
+msgid "Previous Tip"
+msgstr "Edellinen"
+
+#: ../bin/smalldlg.c:54
+msgid "Next Tip"
+msgstr "Seuraava"
+
+#: ../bin/smalldlg.c:72
+msgid "Tip of the Day"
+msgstr "Päivän vinkki"
+
+#: ../bin/smalldlg.c:82
+msgid "No tips are available"
+msgstr "Vinkkejä ei ole saatavilla"
+
+#: ../bin/smalldlg.c:187
+#, fuzzy
+msgid ""
+"XTrackCAD is a CAD (computer-aided design) program for designing model "
+"railroad layouts."
+msgstr ""
+"\n"
+"XTrackCAD on CAD ohjelma pienoisrautateiden\n"
+"raidekaavioiden suunniteluun."
+
+#: ../bin/tbezier.c:214
+#, c-format
+msgid "Bez: L%s A%0.3f trk_len=%s min_rad=%s"
+msgstr ""
+
+#: ../bin/tbezier.c:288
+#, fuzzy
+msgid "Ctl Pt 1: X,Y"
+msgstr "Päätepiste 1: X"
+
+#: ../bin/tbezier.c:289
+#, fuzzy
+msgid "Ctl Pt 2: X,Y"
+msgstr "Päätepiste 2: X"
+
+#: ../bin/tbezier.c:295
+#, fuzzy
+msgid "MinRadius"
+msgstr "Säde"
+
+#: ../bin/tbezier.c:300
+#, fuzzy
+msgid "Line Color"
+msgstr "%s väri"
+
+#: ../bin/tbezier.c:440
+#, fuzzy, c-format
+msgid ""
+"Bezier %s(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,"
+"%0.3f] CP1=[%0.3f,%0.3f] CP2=[%0.3f, %0.3f]"
+msgstr ""
+"Kaareva raideosa(%d): Taso=%d Säde=%s Pituus=%s Keskipiste=[%s,%s] Päätep."
+"=[%0.3f,%0.3f K%0.3f] [%0.3f,%0.3f K%0.3f]"
+
+#: ../bin/tbezier.c:514
+#, fuzzy
+msgid "Bezier Track"
+msgstr "Helix raide"
+
+#: ../bin/tcornu.c:246
+#, c-format
+msgid "Cornu: L %s A %0.3f L %s MinR %s"
+msgstr ""
+
+#: ../bin/tcornu.c:321
+#, fuzzy
+msgid "Radius "
+msgstr "Säde1"
+
+#: ../bin/tcornu.c:329
+#, fuzzy
+msgid "Minimum Radius"
+msgstr "Pienin karresäde"
+
+#: ../bin/tcornu.c:330
+msgid "Max Rate Of Curve Change/Scale"
+msgstr ""
+
+#: ../bin/tcornu.c:331
+msgid "Total Winding Angle"
+msgstr ""
+
+#: ../bin/tcornu.c:476
+#, fuzzy, c-format
+msgid ""
+"Cornu Track(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,"
+"%0.3f]"
+msgstr ""
+"Kaareva raideosa(%d): Taso=%d Säde=%s Pituus=%s Keskipiste=[%s,%s] Päätep."
+"=[%0.3f,%0.3f K%0.3f] [%0.3f,%0.3f K%0.3f]"
+
+#: ../bin/tcornu.c:532
+#, fuzzy
+msgid "Cornu Track"
+msgstr "Kaareva raide"
+
+#: ../bin/tcurve.c:259
+#, fuzzy, c-format
+msgid "Helix: Turns %ld L %0.2f Grade %0.1f%% Sep %0.2f"
+msgstr "Helix: Kierroksia=%ld Pituus=%s Nousukulma=%0.1f%% Korkeusero=%s"
+
+#: ../bin/tcurve.c:265
+#, fuzzy, c-format
+msgid "Helix: Turns %ld L %0.2f"
+msgstr "Helix: Kierroksia=%ld Pituus=%s"
+
+#: ../bin/tcurve.c:397 ../bin/tcurve.c:399 ../bin/tease.c:525
+#: ../bin/tease.c:527 ../bin/tstraigh.c:88 ../bin/tstraigh.c:90
+msgid "Z"
+msgstr "Z"
+
+#: ../bin/tcurve.c:591
+#, c-format
+msgid ""
+"Helix Track(%d): Layer=%d Radius=%s Turns=%ld Length=%s Center=[%s,%s] "
+"EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
+msgstr ""
+"Helix(%d): Taso=%d Säde=%s Kierr.=%ld Pituus=%s Keskip.=[%s,%s] Päätep."
+"=[%0.3f,%0.3f K%0.3f] [%0.3f,%0.3f K%0.3f]"
+
+#: ../bin/tcurve.c:602
+#, c-format
+msgid ""
+"Curved Track(%d): Layer=%d Radius=%s Length=%s Center=[%s,%s] EP=[%0.3f,"
+"%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
+msgstr ""
+"Kaareva raideosa(%d): Taso=%d Säde=%s Pituus=%s Keskipiste=[%s,%s] Päätep."
+"=[%0.3f,%0.3f K%0.3f] [%0.3f,%0.3f K%0.3f]"
+
+#: ../bin/tcurve.c:681
+msgid "Helix Track"
+msgstr "Helix raide"
+
+#: ../bin/tcurve.c:687
+msgid "Curved Track"
+msgstr "Kaareva raideosa"
+
+#: ../bin/tcurve.c:1232
+msgid "Merge Curves"
+msgstr "Yhdistä kaarteet"
+
+#: ../bin/tcurve.c:1306
+msgid "Drag to change angle or create tangent"
+msgstr "Raahaa muuttaaksesi kulmaa"
+
+#: ../bin/tcurve.c:1341 ../bin/tcurve.c:1374
+msgid "Curved "
+msgstr "Kaareva "
+
+#: ../bin/tcurve.c:1347
+msgid "Tangent "
+msgstr "Tangentti "
+
+#: ../bin/tcurve.c:1356
+#, c-format
+msgid "Tangent track: Length %s Angle %0.3f"
+msgstr "Tangentti raide: Pituus %s Kulma %0.3f"
+
+#: ../bin/tcurve.c:1378
+#, c-format
+msgid "Curved: Radius=%s Length=%s Angle=%0.3f"
+msgstr "Kaari: Säde=%s Pituus=%s Kulma=%0.3f"
+
+#: ../bin/tease.c:532
+msgid "l0"
+msgstr "l0"
+
+#: ../bin/tease.c:533
+msgid "l1"
+msgstr "l1"
+
+#: ../bin/tease.c:581
+#, c-format
+msgid ""
+"Joint Track(%d): Layer=%d Length=%0.3f EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f "
+"A%0.3f]"
+msgstr ""
+"Yhdysraide(%d): Taso=%d Pituus=%0.3f Päätep.=[%0.3f,%0.3f K%0.3f] [%0.3f,"
+"%0.3f K%0.3f]"
+
+#: ../bin/tease.c:629
+msgid "Easement Track"
+msgstr "Kaarreloivennus"
+
+#: ../bin/tease.c:1407
+msgid "Merge Easements"
+msgstr "Yhdistä kaarreloivennukset"
+
+#: ../bin/tease.c:1481
+msgid "Split Easement Curve"
+msgstr "Pilko kaarreloivennus"
+
+#: ../bin/textnoteui.c:175
+#, fuzzy, c-format
+msgid "Text Note(%d) Layer=%d %-.80s"
+msgstr "(%d): Taso=%d %s"
+
+#: ../bin/textnoteui.c:189
+#, fuzzy
+msgid "Update Text Note"
+msgstr "Luo teksti"
+
+#: ../bin/textnoteui.c:200
+msgid "Replace this text with your note"
+msgstr "Korvaa tämä teksti muistiinpanollasi"
+
+#: ../bin/textnoteui.c:206
+#, fuzzy
+msgid "Create Text Note"
+msgstr "Luo teksti"
+
+#: ../bin/track.c:290
+msgid "No track or structure pieces are present in layout"
+msgstr ""
+
+#: ../bin/track.c:292
+msgid "No track or structure pieces are selected"
+msgstr ""
+
+#: ../bin/track.c:1461
+msgid "Move Objects Above"
+msgstr "Siirrä objekteja ylemmäs"
+
+#: ../bin/track.c:1481
+msgid "Mode Objects Below"
+msgstr "Siirrä objekteja alemmas"
+
+#: ../bin/track.c:1785
+msgid "Audit"
+msgstr "Tarkasta"
+
+#: ../bin/track.c:1990
+#, fuzzy, c-format
+msgid "Connecting a car to a non-car T%d T%d"
+msgstr "Muun kuin raideosan (%d) yhdistäminen raiteeseen (%d)"
+
+#: ../bin/track.c:2000 ../bin/track.c:2005
+#, c-format
+msgid "Connecting a non-track(%d) to (%d)"
+msgstr "Muun kuin raideosan (%d) yhdistäminen raiteeseen (%d)"
+
+#: ../bin/track.c:2047
+#, c-format
+msgid "Disconnecting a car from a non-car T%d T%d"
+msgstr ""
+
+#: ../bin/track.c:2081
+msgid "Join Abutting Tracks"
+msgstr "Yhdistä vastakkaiset raideosat"
+
+#: ../bin/track.c:2407 ../bin/track.c:2444
+msgid "Inside turnout track"
+msgstr ""
+
+#: ../bin/track.c:2425
+#, fuzzy, c-format
+msgid "Curve: Length=%s Radius=%0.3f Arc=%0.3f"
+msgstr "Pituus = %0.3f Kulma = %0.3f"
+
+#: ../bin/track.c:2452 ../bin/track.c:2517 ../bin/tstraigh.c:853
+#, c-format
+msgid "Straight: Length=%s Angle=%0.3f"
+msgstr "Suora: Pituus=%s Kulma=%0.3f"
+
+#: ../bin/track.c:3374
+#, c-format
+msgid "[%0.2f,%0.2f] A%0.2f"
+msgstr ""
+
+#: ../bin/track.c:3378
+#, c-format
+msgid "[%0.2f,%0.2f] A%0.2f\n"
+msgstr ""
+
+#: ../bin/trknote.c:52 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:154
+#, fuzzy
+msgid "Text Note"
+msgstr "Luo teksti"
+
+#: ../bin/trknote.c:53
+#, fuzzy
+msgid "Link"
+msgstr "Viiva"
+
+#: ../bin/trknote.c:53 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:105
+msgid "Weblink"
+msgstr ""
+
+#: ../bin/trknote.c:526 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:113
+msgid "Place a note on the layout"
+msgstr "Lisää muistiinpano ratasuunnitelmaan"
+
+#: ../bin/trknote.c:540
+msgid "New Note"
+msgstr "Uusi muistiinpano"
+
+#: ../bin/trknote.c:594
+#, fuzzy
+msgid "Add notes"
+msgstr "Lisää tulostin"
+
+#: ../bin/tstraigh.c:92
+#, fuzzy
+msgid "Track Angle"
+msgstr "Kulma"
+
+#: ../bin/tstraigh.c:212
+#, c-format
+msgid ""
+"Straight Track(%d): Layer=%d Length=%s EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f "
+"A%0.3f]"
+msgstr ""
+"Suora raideosa(%d): Taso=%d Pituus=%s Päätep.=[%0.3f,%0.3f K%0.3f] [%0.3f,"
+"%0.3f K%0.3f]"
+
+#: ../bin/tstraigh.c:762
+msgid "Extending Straight Track"
+msgstr "Jatketaan suoraa raidetta"
+
+#: ../bin/tstraigh.c:845
+msgid "Straight "
+msgstr "Suora "
+
+#: ../bin/svgoutput.c:484
+#, fuzzy
+msgid "Export to SVG"
+msgstr "Vie DXF tiedostoon"
+
+#: ../wlib/mswlib/mswmisc.c:188
+msgid "All image files"
+msgstr ""
+
+#: ../wlib/mswlib/mswmisc.c:190
+msgid "GIF files (*.gif)"
+msgstr ""
+
+#: ../wlib/mswlib/mswmisc.c:192
+msgid "JPEG files (*.jpeg,*.jpg)"
+msgstr ""
+
+#: ../wlib/mswlib/mswmisc.c:194
+msgid "PNG files (*.png)"
+msgstr ""
+
+#: ../wlib/mswlib/mswmisc.c:196
+msgid "TIFF files (*.tiff, *.tif)"
+msgstr ""
+
+#: ../wlib/mswlib/mswmisc.c:198
+msgid "All files (*)"
+msgstr ""
+
+#: ../wlib/mswlib/mswmisc.c:2062 ../wlib/mswlib/mswmisc.c:2105
+msgid "Warning"
+msgstr ""
+
+#: ../wlib/mswlib/mswmisc.c:2067
+msgid "Error"
+msgstr "Virhe"
+
+#: ../wlib/mswlib/mswmisc.c:2203
+msgid "&Contents"
+msgstr "Sisältö"
+
+#: ../wlib/mswlib/mswmisc.c:2204
+msgid "&Search for Help on..."
+msgstr ""
+
+#: ../wlib/mswlib/mswmisc.c:2205
+msgid "Co&mmand Context Help"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:9
+#, c-format
+msgid ""
+"MSG_BETA_NOTICE\tXTrackCAD Version %s: Please note that this Beta Version of "
+"XTrackCAD is still undergoing final testing before its official release. The "
+"sole purpose of this Beta Version is to conduct testing and obtain feedback. "
+"Should you encounter any bugs, glitches, lack of functionality or other "
+"problems, please let us know immediately so we can rectify these "
+"accordingly. Your help in this regard is greatly appreciated!"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:10
+#, c-format
+msgid ""
+"MSG_CANT_PLACE_FROGPOINTS\tFrog|Points cannot be placed on a turnout, circle "
+"or helix.\tA %s cannot be placed on a turnout, circle or helix."
+msgstr ""
+"MSG_CANT_PLACE_FROGPOINTS\tRieteyskappale|kielien päät ei voi olla "
+"ympyräradalla, helixissä tai palaraiteella\t%s ei voi olla ympyräradalla, "
+"helixissä tai palaraiteella."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:11
+#, fuzzy
+msgid ""
+"MSG_SEL_TRK_FROZEN\tA frozen layer contains selected track. Command cannot "
+"be executed."
+msgstr ""
+"MSG_SEL_TRK_FROZEN\tValittu raide on jäädytetyllä tasolla...\tValittu raide "
+"on jäädytetyllä tasolla.\n"
+"Komentoa ei voida suorittaa."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:12
+msgid "MSG_HELIX_TURNS_GTR_0\tA Helix must have one or more loops of track."
+msgstr "MSG_HELIX_TURNS_GTR_0\tHelixissä on oltava vähintään yksi ratakierros."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:13
+msgid ""
+"MSG_LARGE_FONT\tA large font has been selected....\tA large font has been "
+"selected.\n"
+"Large fonts may a take a while to load.\n"
+"\n"
+"Do you wish to continue?"
+msgstr ""
+"MSG_LARGE_FONT\tSuurikokoinen kirjasin valittu...\tSuurikokoinen kirjasin "
+"valittu.\n"
+"Suurien kirjasinten lataaminen saattaa kestää kauan.\n"
+"\n"
+"Haluatko jatkaa?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:14
+msgid ""
+"MSG_TEXT_TOO_LONG\tThe entered text was too long for the text object. It was "
+"truncated."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:15
+msgid ""
+"MSG_TODSGN_DESC_NONBLANK\tAll description fields present in the Turnout..."
+"\tAll description fields present in the Turnout\n"
+"Designer must contain appropriate information.\n"
+"Correct inappropriate values and try again."
+msgstr ""
+"MSG_TODSGN_DESC_NONBLANK\tRaideosien Suunnittelu -dialogin kaikissa "
+"kentissä...\tRaideosien Suunnittelu -dialogin kaikissa kentissä\n"
+"on oltava asianmukaiset arvot.\n"
+"Korjaa arvot ja kokeile uudelleen."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:16
+msgid ""
+"MSG_GROUP_NONBLANK\tAll fields listed in the Group dialog must contain "
+"data....\tAll fields listed in the Group dialog must contain data.\n"
+"Please enter missing values and try again."
+msgstr ""
+"MSG_GROUP_NONBLANK\tKaikki kentät ryhmittelyikkunassa ovat pakollisia..."
+"\tKaikki kentät ryhmittelyikkunassa ovat pakollisia.\n"
+"Syötä puuttuvat arvot ja kokeile uudelleen."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:17
+msgid ""
+"MSG_TODSGN_VALUES_GTR_0\tAll values specified in the Turnout Designer must "
+"be...\tAll values specified in the Turnout Designer must be\n"
+"greater than 0. Correct inappropriate values and try again."
+msgstr ""
+"MSG_TODSGN_VALUES_GTR_0\tRaideosien Suunnittelussa annettujen arvojen..."
+"\tRaideosien Suunnittelussa annettujen arvojen on\n"
+"oltava suurempia kuin 0. Korjaa arvot ja yritä uudelleen."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:18
+#, fuzzy
+msgid "MSG_CURVE_OUT_OF_RANGE\tAngle must be between 0\\u00B0 and 360\\u00B0."
+msgstr "MSG_CURVE_OUT_OF_RANGE\tKulman täytyy olla 0° ja 360° välillä."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:19
+msgid ""
+"MSG_TODSGN_CORNU_TOO_COMPLEX\tThe curves created by the Turnout Designer for "
+"a cornu curve have more than 128 segments....\tThe curves created by the "
+"Turnout Designer for a cornu curve have more than 128 segments.\n"
+"Try adjusting the end angles and radii to be closer in values."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:20
+#, c-format
+msgid ""
+"MSG_CUSTMGM_DELETE_CONFIRM\tAre you sure you want to delete the NNN "
+"definition(s)?\tAre you sure you want to delete the\n"
+"%d definition(s)?"
+msgstr ""
+"MSG_CUSTMGM_DELETE_CONFIRM\tHaluatko varmasti poistaa NNN kohdetta?"
+"\tHaluatko varmasti poistaa %d kohdetta?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:21
+msgid "MSG_WBITMAP_FAILED\tBitmap create or write function failed."
+msgstr "MSG_WBITMAP_FAILED\tBitmap kuvan luonti tai kirjoitus epäonnistui."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:22
+msgid "MSG_BITMAP_TOO_LARGE\tBitmap is too large."
+msgstr "MSG_BITMAP_TOO_LARGE\tBitmap on liian suuri."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:23
+msgid "MSG_CHANGE_ELEV_MODE\tCannot change elevation mode."
+msgstr "MSG_CHANGE_ELEV_MODE\tKorkeustason muutos ei onnistu."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:24
+msgid ""
+"MSG_GRID_ENABLE_SPACE_GTR_0\tCannot Enable Grid; spacing must be greater "
+"than 0"
+msgstr ""
+"MSG_GRID_ENABLE_SPACE_GTR_0\tVälin on oltava suurempi kuin 0, jos ruudukko "
+"on käytössä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:25
+msgid "MSG_LAYER_FREEZE\tCannot freeze current layer"
+msgstr "MSG_LAYER_FREEZE\tAktiivista tasoa ei voi jäädyttää"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:26
+msgid ""
+"MSG_GROUP_NO_PATHS\tNo Paths were detected when grouping selected Tracks."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:27
+msgid ""
+"MSG_CANT_GROUP_BUMPER1\tCannot Group Bumper Track. The track has been "
+"unselected."
+msgstr ""
+"MSG_CANT_GROUP_BUMPER1\tPäätepuskinta ei voi liittää ryhmään. Raideosan "
+"valinta on poistettu."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:28
+#, fuzzy, c-format
+msgid "MSG_CANNOT_GROUP_TRACK\tCannot Group selected track type %s."
+msgstr "MSG_CANNOT_GROUP_TRACK\tValittua raideosaa ei voida ryhmitellä."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:29
+msgid "MSG_LAYER_HIDE\tCannot hide current layer"
+msgstr "MSG_LAYER_HIDE\tAktiivista tasoa ei voi piilottaa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:30
+#, fuzzy
+msgid "MSG_LAYER_MODULE\tCannot turn current layer into a Module"
+msgstr "MSG_LAYER_HIDE\tAktiivista tasoa ei voi piilottaa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:31
+msgid "MSG_JOIN_EASEMENTS\tCannot Join; Easements do not align or abut."
+msgstr ""
+"MSG_JOIN_EASEMENTS\tEi voi yhdistää; Kaarreloivennukset eivät ole kohdakkain."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:32
+#, c-format
+msgid ""
+"MSG_TRK_ALREADY_CONN\tFirst|Second track is already connected.\tCannot Join; "
+"%s track is already connected."
+msgstr ""
+"MSG_TRK_ALREADY_CONN\tEnsimmäinen|Toinen raide on jo liitetty.\tEi voida "
+"liittää; %s raide on jo liitetty."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:33
+msgid "MSG_JOIN_TURNTABLE\tCannot join from a turntable, try to a turntable"
+msgstr ""
+"MSG_CANNOT_CHANGE\tKääntöpöydästä raiteeseen ei voi yhdistää. Kokeile "
+"raiteesta kääntöpöytään."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:34
+#, fuzzy
+msgid "MSG_JOIN_CORNU_SAME\tCannot Join; Selected endpoints are on same track."
+msgstr ""
+"MSG_JOIN_SAME\tEi voi liittää; valitut päätepisteet ovat samassa raideosassa."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:35
+msgid "MSG_JOIN_SAME\tCannot Join; Selected endpoints are on same track."
+msgstr ""
+"MSG_JOIN_SAME\tEi voi liittää; valitut päätepisteet ovat samassa raideosassa."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:36
+msgid ""
+"MSG_JOIN_NOTBEZIERORCORNU\tCannot Join Bezier or Cornu track if Easement is "
+"not Cornu"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:37
+msgid ""
+"MSG_SELECTED_TRACKS_PARALLEL\tCannot Join; Selected tracks are parallel."
+msgstr ""
+"MSG_SELECTED_TRACKS_PARALLEL\tEi voida liittää; Valitut raiteet ovat "
+"samansuuntaiset."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:38
+#, c-format
+msgid ""
+"MSG_PRMFIL_OPEN_NEW\tCannot open New Parameter File: FILENAME\tCannot open "
+"New Parameter File: %s"
+msgstr ""
+"MSG_PRMFIL_OPEN_NEW\tUuden parametritiedoston TIEDOSTONIMI avaaminen ei "
+"onnistu\tUuden parametritiedoston %s avaaminen ei onnistu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:39
+msgid "MSG_LAYER_SEL_FROZEN\tCannot select a frozen layer"
+msgstr "MSG_LAYER_SEL_FROZEN\tJäädytettyä tasoa ei voi valita"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:40
+msgid ""
+"MSG_GRID_SHOW_SPACE_GTR_0\tCannot Show Grid; spacing must be greater than 0"
+msgstr ""
+"MSG_GRID_SHOW_SPACE_GTR_0\tVälin on oltava suurempi kuin 0, jos ruudukko "
+"näytetään"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:41
+#, fuzzy, c-format
+msgid ""
+"MSG_CANT_SPLIT_TRK\tCannot split TYPE track\tCannot split track of type %s"
+msgstr "MSG_CANT_SPLIT_TRK\tRAIDETYYPPI: Ei voi pilkkoa\t%s: Ei voi pilkkoa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:42
+#, c-format
+msgid ""
+"MSG_CUSTMGM_CANT_WRITE\tCannot write to parameter file: FILENAME\tCannot "
+"write to parameter file: %s"
+msgstr ""
+"MSG_CUSTMGM_CANT_WRITE\tEi voida kirjoittaa parametritiedostoon: "
+"TIEDOSTONIMI\tEi voida kirjoittaa parametritiedostoon: %s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:43
+msgid "MSG_CARIMP_DUP_INDEX\tCar Index number duplicated."
+msgstr "MSG_CARIMP_DUP_INDEX\tKaksi samaa indeksiä löydetty."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:44
+msgid ""
+"MSG_CONN_PARAMS_TOO_SMALL\tConnection parameters reset to minimum values."
+msgstr ""
+"MSG_CONN_PARAMS_TOO_SMALL\tLiitosparametrit palautettu pienimpiin arvoihinsa."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:45
+#, fuzzy
+msgid "MSG_CONN_PARAMS_TOO_BIG\tConnection parameters reset to maximum values."
+msgstr ""
+"MSG_CONN_PARAMS_TOO_SMALL\tLiitosparametrit palautettu pienimpiin arvoihinsa."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:46
+msgid "MSG_CANT_PASTE\tCopy/Paste buffer is empty. There is nothing to Paste."
+msgstr ""
+"MSG_CANT_PASTE\tKopioi/liitä -puskuri on tyhjä. Ei ole mitään liitettävää."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:47
+msgid ""
+"MSG_TODSGN_CROSSOVER_TOO_SHORT\tCrossover length is too short. Correct..."
+"\tCrossover length is too short. Correct\n"
+"inappropriate value(s) and try again."
+msgstr ""
+"MSG_TODSGN_CROSSOVER_TOO_SHORT\tSovitettu raideristeys on liian lyhyt. "
+"Tarkasta...\tSovitettu raideristeys on liian lyhyt.\n"
+"Tarkasta arvot ja kokeile uudelleen."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:48
+msgid "MSG_CURVE_TOO_LARGE\tCurved track is too large."
+msgstr "MSG_CURVE_TOO_LARGE\tKaareva raide on liian suuri."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:49
+msgid ""
+"MSG_TODSGN_REPLACE\tDefinition name is already in use. Saving this..."
+"\tDefinition name is already in use. Saving this\n"
+"definition replaces the existing definition.\n"
+"\n"
+"Do you want to continue?"
+msgstr ""
+"MSG_TODSGN_REPLACE\tNimi on jo käytössä. Tallentamalla...\tNimi on jo "
+"käytössä. Tämän määrittelyn tallentaminen\n"
+"korvaa olemassa olevan saman nimisen määrittelyn.\n"
+"\n"
+"Haluatko jatkaa?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:50
+msgid "MSG_SAVE_CHANGES\tDo you want to save the changes made to your Layout?"
+msgstr "MSG_SAVE_CHANGES\tHaluatko tallentaa ratasuunnitelman?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:51
+msgid ""
+"MSG_CARIMP_DUP_COLUMNS\tDuplicate column headers found in Car Import file."
+msgstr ""
+"MSG_CARIMP_DUP_COLUMNS\tSama sarakeotsikko esiintyy useaan kertaan "
+"kalustotiedostossa."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:52
+msgid "MSG_EP_ON_PATH\tEndpoint already on Path."
+msgstr "MSG_EP_ON_PATH\tPäätepiste on jo reitillä."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:53
+#, c-format
+msgid ""
+"MSG_UPGRADE_VERSION1\tFile version %ld is greater than supported...\tFile "
+"version %ld is greater than supported\n"
+"version %d. You need to upgrade %s\n"
+"to at least version %s."
+msgstr ""
+"MSG_UPGRADE_VERSION1\tTiedoston versio %ld on suurempi kuin tuettu..."
+"\tTiedoston versio %ld on suurempi kuin tuettu versio %d\n"
+"%s täytyy päivittää vähintään versioon %s."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:54
+#, c-format
+msgid ""
+"MSG_UPGRADE_VERSION2\tFile version %ld is greater than supported...\tFile "
+"version %ld is greater than supported\n"
+"version %d. You need to upgrade your\n"
+"version of %s"
+msgstr ""
+"MSG_UPGRADE_VERSION2\tTiedoston versio %ld on suurempi kuin...\tTiedoston "
+"versio %ld on suurempi kuin tuettu versio %d.\n"
+"Versiosi %s:sta täytyy päivittää."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:55
+#, c-format
+msgid ""
+"MSG_LAYOUT_LINES_SKIPPED\tWhile processing Layout file %s, %d lines were "
+"skipped because they were not recognized."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:56
+#, fuzzy, c-format
+msgid ""
+"MSG_PARAM_UPGRADE_VERSION1\tFile version %ld is greater than supported..."
+"\tFile version %ld is greater than supported\n"
+"version %d. You need to upgrade %s\n"
+"to at least version %s."
+msgstr ""
+"MSG_UPGRADE_VERSION1\tTiedoston versio %ld on suurempi kuin tuettu..."
+"\tTiedoston versio %ld on suurempi kuin tuettu versio %d\n"
+"%s täytyy päivittää vähintään versioon %s."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:57
+#, fuzzy, c-format
+msgid ""
+"MSG_PARAM_UPGRADE_VERSION2\tFile version %ld is greater than supported..."
+"\tFile version %ld is greater than supported\n"
+"version %d. You need to upgrade your\n"
+"version of %s"
+msgstr ""
+"MSG_UPGRADE_VERSION2\tTiedoston versio %ld on suurempi kuin...\tTiedoston "
+"versio %ld on suurempi kuin tuettu versio %d.\n"
+"Versiosi %s:sta täytyy päivittää."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:58
+#, c-format
+msgid ""
+"MSG_PARAM_LINES_SKIPPED\tWhile processing Parameter file %s, %d lines were "
+"skipped because they were not recognized."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:59
+#, fuzzy
+msgid ""
+"MSG_MOVE_POINTS_OTHER_SIDE\tFrog angle prevents placement of points. Move "
+"points to opposite side of frog."
+msgstr ""
+"MSG_MOVE_POINTS_OTHER_SIDE\tVaihdekulma estää kielien päiden asettamisen..."
+"\tVaihdekulma estää kielien päiden asettamisen.\n"
+"Siirrä kielien päät risteyskappaleen toiselle puolelle."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:60
+msgid "MSG_NO_ROOM_BTW_TRKS\tInsufficient space between existing stall tracks."
+msgstr "MSG_NO_ROOM_BTW_TRKS\tRaiteiden välissä ei ole riittävästi tilaa."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:61
+#, c-format
+msgid ""
+"MSG_JOIN_DIFFER_ELEV\tJoining tracks with differing elevations (N."
+"NNN)\tJoining tracks with differing elevations (%0.2f)"
+msgstr ""
+"MSG_JOIN_DIFFER_ELEV\tEri korkeuksilla olevien raiteiden liitos (N.NN)\tEri "
+"korkeuksilla olevien raiteiden liitos (%0.2f)."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:62
+#, fuzzy
+msgid "MSG_TRK_DESC_NOT_VISIBLE\tLabel description is hidden"
+msgstr "MSG_DESC_NOT_VISIBLE\tKuvaukset eivät ole näkyvissä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:63
+msgid "MSG_DESC_NOT_VISIBLE\tLabel descriptions not visible"
+msgstr "MSG_DESC_NOT_VISIBLE\tKuvaukset eivät ole näkyvissä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:64
+msgid "MSG_OBJECT_TOO_SHORT\tLength of object is too short."
+msgstr "MSG_OBJECT_TOO_SHORT\tPituus on liian lyhyt."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:65
+#, c-format
+msgid ""
+"MSG_PRINT_MAX_SIZE\tMaximum allowed page size is W x H\tMaximum allowed page "
+"size is %s x %s"
+msgstr ""
+"MSG_PRINT_MAX_SIZE\tSivun maksimikoko on L x K.\tSivun maksimikoko on %s x "
+"%s."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:66
+msgid ""
+"MSG_NO_PRINTER_SELECTED\tPlease select a printer from the Print Setup dialog."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:67
+#, c-format
+msgid ""
+"MSG_PRMFIL_NO_CONTENTS\tNew Parameter File has no CONTENTS line: FILENAME."
+"\tNew Parameter File has no CONTENTS line: %s"
+msgstr ""
+"MSG_PRMFIL_NO_CONTENTS\tUudessa parametritiedostossa ei ole CONTENTS riviä: "
+"TIEDOSTONIMI.\tUudessa parametritiedostossa ei ole CONTENTS riviä: %s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:68
+msgid ""
+"MSG_NO_CARS\tNo Cars are defined for the current scale....\tNo Cars are "
+"defined for the current scale.\n"
+"\n"
+"Do you want to use the Car Inventory dialog?"
+msgstr ""
+"MSG_NO_CARS\tVaunuja tai vetureita ei ole määritelty tälle mittakaavalle..."
+"\tVaunuja tai vetureita ei ole määritelty tälle mittakaavalle.\n"
+"\n"
+"Haluatko avata kalustoluettelon?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:69
+msgid ""
+"MSG_NO_CARPROTO\tNo Car Prototypes are defined....\tNo Car Prototypes are "
+"defined.\n"
+"Load a Prototype definition file using the\n"
+"Parameter Files dialog or create a Prototype\n"
+"definition using the Car Prototype dialog."
+msgstr ""
+"MSG_NO_CARPROTO\tEsikuvia ei ole määritelty...\tEsikuvia ei ole määritelty.\n"
+"Lataa esikuvien määrittely tiedosto Parametritiedostot -ikkunassa\n"
+"tai luo uusi esikuvan määrittely."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:70
+msgid "MSG_CARIMP_NO_DATA\tNo data present in Car Import file."
+msgstr "MSG_CARIMP_NO_DATA\tKalustotiedosto on tyhjä."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:71
+msgid "MSG_PRINT_NO_PAGES\tNo pages selected for printing."
+msgstr "MSG_PRINT_NO_PAGES\tYhtään sivua ei ole valittu tulostettavaksi."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:72
+msgid "MSG_NO_PATH_TO_EP\tNo path between Profile and selected endpoint."
+msgstr "MSG_NO_PATH_TO_EP\tValituun päätepisteeseen ei ole reittiä."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:73
+#, c-format
+msgid ""
+"MSG_PRMFIL_NO_MAP\tNo Parameter File Map for CONTENTS\tNo Parameter File Map "
+"for %s"
+msgstr ""
+"MSG_PRMFIL_NO_MAP\tParametritiedostolle \"NNN\" ei löydy \"Parameter File "
+"Map\" tietoa.\tParametritiedostolle \"%s\" ei löydy \"Parameter File Map\" "
+"tietoa."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:74
+msgid "MSG_NO_SELECTED_TRK\tNo track(s) selected!"
+msgstr "MSG_NO_SELECTED_TRK\tEi valittuja raiteita!"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:75
+msgid ""
+"MSG_NO_EMPTY_LAYER\tNo layer was found that has no contents, so the module "
+"can not be imported"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:76
+msgid ""
+"MSG_NO_UNFROZEN_LAYER\tNo layer was found that wasn't frozen. Layer 0 is "
+"unfrozen."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:77
+msgid ""
+"MSG_NOT_UNFROZEN_LAYER\tThe current layer was defined as frozen. It is now "
+"unfrozen."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:78
+#, c-format
+msgid ""
+"MSG_NO_TURNOUTS_AVAILABLE\tNo Turnouts|Structures are available.\tNo %s are "
+"available."
+msgstr ""
+"MSG_NO_TURNOUTS_AVAILABLE\tRaideosat|Rakennukset eivät ole saatavilla.\t%s "
+"eivät ole saatavilla."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:79
+msgid ""
+"MSG_CARDESC_VALUE_ZERO\tNumeric values on the Car Description...\tNumeric "
+"values on the Car Description\n"
+"dialog must be greater than 0."
+msgstr ""
+"MSG_CARDESC_VALUE_ZERO\tVaunun/veturin määrittelyn numeeristen arvojen..."
+"\tVaunun/veturin määrittelyn numeeristen arvojen täytyy olla suurempia kuin "
+"0."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:80
+msgid "MSG_MOVE_OUT_OF_BOUNDS\tObject has moved beyond room boundaries."
+msgstr ""
+"MSG_MOVE_OUT_OF_BOUNDS\tObjekti on siirretty huoneen rajojen ulkopuolelle."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:81
+#, fuzzy
+msgid ""
+"MSG_PARALLEL_SEP_GTR_0\tParallel separation must be greater than 0, or the "
+"new guage must be different than the old."
+msgstr ""
+"MSG_PARALLEL_SEP_GTR_0\tRinnakkaisten raiteiden välin on oltava suurempi "
+"kuin 0."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:82
+msgid ""
+"MSG_CARPART_DUPNAME\tPart Number for this Manufacturer already exists...."
+"\tPart Number for this Manufacturer already exists.\n"
+"\n"
+"Do you want to update it?"
+msgstr ""
+"MSG_CARPART_DUPNAME\tTuotekoodi tälle valmistajalle on jo käytössä..."
+"\tTuotekoodi tälle valmistajalle on jo käytössä.\n"
+"\n"
+"Haluatko päivittää sen?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:83
+#, c-format
+msgid ""
+"MSG_PLAYBACK_LISTENTRY\tPlayback: Cannot find list entry: NAME\tPlayback: "
+"Cannot find list entry: %s"
+msgstr ""
+"MSG_PLAYBACK_LISTENTRY\tMakrojen toisto: Luettelosta ei löydy: ...\tMakrojen "
+"toisto: Luettelosta ei löydy: %s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:84
+#, c-format
+msgid ""
+"MSG_PLAYBACK_VERSION_UPGRADE\tPlayback file version %ld is...\tPlayback file "
+"version %ld is\n"
+"greater than supported version %d\n"
+"You need to upgrade your version of %s"
+msgstr ""
+"MSG_PLAYBACK_VERSION_UPGRADE\tMakro tiedoston versio %ld on...\tMakro "
+"tiedoston versio %ld on suurempi kuin tuettu versio %d\n"
+"Versiosi %s:sta täytyy päivittää."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:85
+#, c-format
+msgid ""
+"MSG_DOMOUSE_BAD_OP\tPlayback: unknown action NNN\tPlayback: unknown action %d"
+msgstr ""
+"MSG_DOMOUSE_BAD_OP\tToisto: tuntematon toimenpide NNN\tToisto: tuntematon "
+"toimenpide %d"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:86
+msgid "MSG_MOVE_POINTS_AWAY_CLOSE\tPoints are to close to frog; move away."
+msgstr ""
+"MSG_MOVE_POINTS_AWAY_CLOSE\tKielten päät ovat liian lähellä "
+"risteyskappaletta; siirrä kauemmaksi."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:87
+#, fuzzy
+msgid "MSG_POLY_SHAPES_3_SIDES\tPolygons must have at least 3 nodes."
+msgstr "MSG_POLY_SHAPES_3_SIDES\tMonikulmiossa on oltava vähintään 3 sivua."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:88
+msgid "MSG_POLY_MULTIPLE_SELECTED\tCan't delete multiple points at once"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:89
+#, fuzzy
+msgid "MSG_POLY_NOTHING_SELECTED\tNo Point on a Poly shape selected."
+msgstr "MSG_NO_SELECTED_TRK\tEi valittuja raiteita!"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:90
+msgid ""
+"MSG_CARPROTO_DUPNAME\tPrototype name already exists....\tPrototype name "
+"already exists.\n"
+"\n"
+"Do you want to update it?"
+msgstr ""
+"MSG_CARPROTO_DUPNAME\tSaman niminen esikuva on jo olemassa...\tSaman niminen "
+"esikuva on jo olemassa.\n"
+"\n"
+"Haluatko päivittää sen?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:91
+msgid "MSG_RADIUS_GTR_0\tRadius must be greater than 0."
+msgstr "MSG_RADIUS_GTR_0\tSäteen on oltava suurempi kuin 0."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:92
+#, fuzzy
+msgid "MSG_RADIUS_GTR_10000\tRadius must be less than 10000."
+msgstr "MSG_RADIUS_GTR_0\tSäteen on oltava suurempi kuin 0."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:93
+msgid ""
+"MSG_RADIUS_TOO_BIG\tThe Circle or Helix will not fit within the layouts room "
+"parameters (Height and Width)."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:94
+#, c-format
+msgid ""
+"MSG_RESCALE_TOO_BIG\tRescaled tracks do not fit within layouts room "
+"parameters...\tRescaled tracks do not fit within layouts room parameters\n"
+"(Height and width). The layouts room parameters should be\n"
+"set to at least %s by %s."
+msgstr ""
+"MSG_RESCALE_TOO_BIG\tSkaalatut raiteet eivät mahdu ratasuunnitelmassa..."
+"\tSkaalatut raiteet eivät mahdu ratasuunnitelmassa\n"
+"määritellyn huoneen rajojen sisäpuolelle. Huoneen koon\n"
+"pitäisi olla vähintään %s x %s (korkeus x leveys)."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:95
+msgid ""
+"MSG_CARIMP_MISSING_COLUMNS\tRequired column headers missing from Car Import "
+"file."
+msgstr ""
+"MSG_CARIMP_MISSING_COLUMNS\tKalustotiedostosta puuttuu tarpeellisia "
+"sarakkeiden otsikoita."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:96
+#, c-format
+msgid ""
+"MSG_2ND_TRK_NOT_SEL_UNSEL\tSecond track must be selected|unselected\tSecond "
+"track must be %s."
+msgstr ""
+"MSG_2ND_TRK_NOT_SEL_UNSEL\tToisen raiteen on oltava valittu|"
+"valitsematta\tToisen raiteen on oltava %s."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:97
+msgid "MSG_OUT_OF_BOUNDS\tSelected page is out of bounds."
+msgstr "MSG_OUT_OF_BOUNDS\tSivu ylittää rajat."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:98
+msgid "MSG_SEL_POS_FIRST\tSelect position prior to entering Text."
+msgstr "MSG_SEL_POS_FIRST\tValitse sijainti ennen tekstin syöttämistä."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:99
+msgid ""
+"MSG_CARPROTO_BADSEGS\tSelected shapes must define a rectangular area ..."
+"\tSelected shapes must define a rectangular\n"
+"area with length greater than height."
+msgstr ""
+"MSG_CARPROTO_BADSEGS\tValittujen muotojen on määriteltävä nelikulmio..."
+"\tValittujen muotojen on määriteltävä nelikulmio,\n"
+"jonka pituus on korkeutta suurempi."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:100
+#, fuzzy
+msgid ""
+"MSG_TOO_FAR_APART_DIVERGE\tSelected tracks deviate too much or are too far "
+"apart from each other."
+msgstr ""
+"MSG_TOO_FAR_APART_DIVERGE\tValitut raiteet poikkeavat liikaa...\tValitut "
+"raiteet poikkeavat liikaa toisistaan\n"
+"tai ovat liian kaukana toisistaan."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:101
+msgid "MSG_COMMAND_DISABLED\tSpecified command disabled."
+msgstr "MSG_COMMAND_DISABLED\tTämä komento ei ole käytössä."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:102
+#, c-format
+msgid ""
+"MSG_SEGMENT_NOT_ON_PATH\tTrack segment N not on Path for Turnout\tTrack "
+"segment %d not on any Path for %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:103
+msgid "MSG_SPLIT_POS_BTW_MERGEPTS\tSplit position between Turnout Points"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:104
+msgid "MSG_SPLIT_PATH_NOT_UNIQUE\tSplit position not on unique path"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:105
+#, c-format
+msgid ""
+"MSG_CARIMP_MISSING_DIMS\tThe following car has no dimensions and a...\tThe "
+"following car has no dimensions and a\n"
+"Car Part description can not be found.\n"
+"\n"
+"%s\n"
+"\n"
+"Do you wish to continue importing other Cars?"
+msgstr ""
+"MSG_CARIMP_MISSING_DIMS\tVaunun tai veturin mitat ja kuvaus puuttuvat..."
+"\tVaunun tai veturin mitat ja kuvaus puuttuvat:\n"
+"\n"
+"%s\n"
+"\n"
+"Haluatko jatkaa muiden vaunujen ja veturien tuontia tiedostosta?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:106
+#, c-format
+msgid ""
+"MSG_CARIMP_MISSING_PARTNO\tThe following car has no Part Number...\tThe "
+"following car has no Part Number\n"
+"\n"
+"%s\n"
+"\n"
+"Do you wish to continue importing other Cars?"
+msgstr ""
+"MSG_CARIMP_MISSING_PARTNO\tVaunun tai veturin tuotenumero puuttuu...\tVaunun "
+"tai veturin tuotenumero puuttuu:\n"
+"\n"
+"%s\n"
+"\n"
+"Haluatko jatkaa muiden vaunujen ja veturien tuontia tiedostosta?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:107
+#, c-format
+msgid ""
+"MSG_CARIMP_IGNORED_COLUMN\tThe following column in the Car Import file will "
+"be ignored:...\tThe following column in the Car Import file will be "
+"ignored:\n"
+"\n"
+"%s"
+msgstr ""
+"MSG_CARIMP_IGNORED_COLUMN\tSeuraava kalustotiedoston sarake jätetään "
+"huomiotta:...\tSeuraava kalustotiedoston sarake jätetään huomiotta:\n"
+"\n"
+"%s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:108
+#, fuzzy
+msgid ""
+"MSG_CANT_MOVE_UNDER_TRAIN\tThe position of a turnout or turntable cannot be "
+"changed while occupied by a train."
+msgstr ""
+"MSG_CANT_MOVE_UNDER_TRAIN\tVaihteita tai kääntöpöytää ei voi kääntää..."
+"\tVaihteita tai kääntöpöytää ei voi kääntää junan ollessa päällä."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:109
+msgid ""
+"MSG_STRUCT_NO_STRUCTS\tThere are no structures to choose from in the "
+"structure...\tThere are no structures to choose from in the structure\n"
+"selection list. Please check your SCALE, select the\n"
+"<File|Parameter Files> menu to load a Parameter File or\n"
+"create a new Structure with the Group command."
+msgstr ""
+"MSG_STRUCT_NO_STRUCTS\tRakennusten valintaluettelossa ei ole yhtään..."
+"\tRakennusten valintaluettelossa ei ole yhtään rakennusta\n"
+"valittavissa. Tarkasta mittakaava, valitse\n"
+"<Tiedosto|Parametritiedostot> valikosta ladataksesi\n"
+"parametritiedostoja tai luo uusi rakennus Ryhmittele komennolla."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:110
+#, fuzzy
+msgid ""
+"MSG_TURNOUT_NO_TURNOUT\tThere are no turnouts to choose from in the "
+"turnout...\tThere are no turnouts to choose from in the turnout\n"
+"selection list. Please check your SCALE, select the\n"
+"<Manage|Turnout Designer> menu to enter a new turnout\n"
+"or select the <File|Parameter Files> menu to load a\n"
+"Parameter File"
+msgstr ""
+"MSG_TURNOUT_NO_TURNOUT\tRaideosien valintaluettelossa ei ole yhtään..."
+"\tRaideosien valintaluettelossa ei ole yhtään raideosaa\n"
+"valittavissa. Tarkasta mittakaava, valitse\n"
+"<Muokkaa|Raideosien suunnittelu> valikko lisätäksesi uusi raideosa\n"
+"tai valitse <Tiedosto|Parametritiedostot> valikko ladataksesi\n"
+"parametritiedoston."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:111
+msgid "MSG_NO_UNCONN_EP\tThere are no unconnected end points for this track"
+msgstr "MSG_NO_UNCONN_EP\tRaiteessa ei ole liittämättömiä päätepisteitä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:112
+#, c-format
+msgid ""
+"MSG_SPLITTED_OBJECT_TOO_SHORT\tThe resulting length of one track piece is "
+"shorter than the minimum length of %d."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:113
+msgid "MSG_PULL_FEW_SECTIONS\tThere are too few sections in this loop."
+msgstr ""
+"MSG_PULL_FEW_SECTIONS\tSilmukassa tai sivuraiteessa on liian vähän raideosia."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:114
+msgid "MSG_NO_REDO\tThere is nothing to redo!"
+msgstr "MSG_NO_REDO\tEi ole mitään uudelleen tehtävää!"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:115
+msgid "MSG_NO_UNDO\tThere is nothing to undo!"
+msgstr "MSG_NO_UNDO\tEi ole mitään kumottavaa!"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:116
+#, fuzzy
+msgid "MSG_TOOMANYSEGSINGROUP\tToo many track segments in Group."
+msgstr "MSG_TOOMANYSEGSINGROUP\tRyhmässä on liian monta lohkoa."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:117
+#, fuzzy
+msgid ""
+"MSG_TOOMANYSEGSINGROUP2\tTrack segments appear too late in Group segment "
+"list."
+msgstr "MSG_TOOMANYSEGSINGROUP\tRyhmässä on liian monta lohkoa."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:118
+msgid "MSG_CANNOT_CHANGE\tTrack cannot be changed."
+msgstr "MSG_CANNOT_CHANGE\tRaidetta ei voi muuttaa."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:119
+msgid "MSG_POINT_INSIDE_TURNTABLE\tTrack endpoint is within turntable radius."
+msgstr ""
+"MSG_POINT_INSIDE_TURNTABLE\tRaiteen päätepiste on kääntöpöydän säteen "
+"sisäpuolella."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:120
+msgid ""
+"MSG_MOVE_POINTS_AWAY_NO_INTERSECTION\tTrack intersection not possible; move "
+"points away from frog."
+msgstr ""
+"MSG_MOVE_POINTS_AWAY_NO_INTERSECTION\tRaiteet eivät kohtaa. Siirrä kielten "
+"päät kauemmaksi risteyskappaleesta."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:121
+#, c-format
+msgid ""
+"MSG_TRK_TOO_SHORT\tTrack is too short by N.NNN\t%strack is too short by %0.3f"
+msgstr ""
+"MSG_TRK_TOO_SHORT\tRaide on N.NNN liian lyhyt\t%sraide on %0.3f liian lyhyt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:122
+#, fuzzy, c-format
+msgid ""
+"MSG_RADIUS_LSS_EASE_MIN\tTrack radius (N.NNN) is smaller than easement "
+"minimum (N.NNN).\tTrack radius (%s) is smaller than easement minimum (%s)."
+msgstr ""
+"MSG_RADIUS_LSS_EASE_MIN\tRaiteen säde (N.NNN) on pienempi kuin "
+"kaarreloivennuksen pienin sallittu säde (N.NNN).\tRaiteen säde (%s) on "
+"pienempi kuin kaarreloivennuksen pienin sallittu säde (%s)."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:123
+msgid ""
+"MSG_CANT_MODIFY_FROZEN_TRK\tTracks in a frozen layer cannot be modified."
+msgstr ""
+"MSG_CANT_MODIFY_FROZEN_TRK\tJäädytetyllä tasolla olevia raiteita ei voi "
+"muokata."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:124
+#, fuzzy
+msgid "MSG_CANT_MODIFY_MODULE_TRK\tTracks in a module cannot be modified."
+msgstr ""
+"MSG_CANT_MODIFY_FROZEN_TRK\tJäädytetyllä tasolla olevia raiteita ei voi "
+"muokata."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:125
+msgid ""
+"MSG_SEGMENTS_DIFFER\tTurnout definition contains non-track segments...."
+"\tTurnout definition contains non-track segments.\n"
+"\n"
+"Do you want to include them in this update?"
+msgstr ""
+"MSG_SEGMENTS_DIFFER\tRaideosan määrittelyssä on osia, jotka eivät ole "
+"raiteita...\tRaideosan määrittelyssä on osia, jotka eivät ole raiteita.\n"
+"\n"
+"Haluatko sisällyttää ne?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:126
+msgid "MSG_TURNTABLE_DIAM_GTR_0\tTurntable diameter must greater than 0."
+msgstr ""
+"MSG_TURNTABLE_DIAM_GTR_0\tKääntöpöydän halkaisijan on oltava suurempi kuin 0."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:127
+#, c-format
+msgid ""
+"MSG_UNDO_ASSERT\tUndo assertion failure %s:%d...\tUndo assertion failure %s:"
+"%d\n"
+"Val = %ld(%lx)\n"
+"%s\n"
+"Please report this error to the XTrackCAD project development team at "
+"SourceForge."
+msgstr ""
+"MSG_UNDO_ASSERT\tVirhe kumottaessa edellinen toiminto (%s:%d)...\tVirhe "
+"kumottaessa edellinen toiminto (%s:%d)\n"
+"Arvo = %ld(%lx)\n"
+"%s\n"
+"Ole ystävällinen ja ilmoita tästä virheestä XTrackCAD projektin "
+"kehitysryhmälle SourceForge.net:ssä."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:128
+#, fuzzy, c-format
+msgid ""
+"MSG_PROG_CORRUPTED\tCritical file damaged!...\tCritical file damaged!\n"
+"\n"
+"%s is corrupt.\n"
+"\n"
+"Please reinstall software."
+msgstr ""
+"MSG_PROG_CORRUPTED\tKriittinen tiedosto on vaurioitunut!...\tKriittinen "
+"tiedosto on vaurioitunut!\n"
+"\n"
+"%s on korruptoitunut.\n"
+"\n"
+"Asenna ohjelmisto uudelleen."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:129
+#, c-format
+msgid ""
+"MSG_ENTERED_STRING_TRUNCATED\tThe entered text is too long. Maximum length "
+"is %d."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:130
+#, c-format
+msgid "MSG_PT_IS_NOT_TRK\t[X Y] is not a track\t[%s %s] is not a track."
+msgstr "MSG_PT_IS_NOT_TRK\t[X Y] ei ole raide\t[%s %s] ei ole raide."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:131
+#, fuzzy
+msgid ""
+"MSG_BITMAP_SIZE_WARNING\tYou have specified a large bitmap....\tYou have "
+"specified a large bitmap.\n"
+"\n"
+"Are you sure you want to continue?"
+msgstr ""
+"MSG_BITMAP_SIZE_WARNING\tOlet määritellyt suuren Bitmap kuvan...\tOlet "
+"määritellyt suuren Bitmap kuvan.\n"
+"\n"
+"Haluatko varmasti jatkaa?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:132
+msgid "Icon Size change will take effect on next program start."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:133
+#, fuzzy, c-format
+msgid "Are you sure you want to delete these %d car(s) from your inventory?"
+msgstr "Haluatko varmasti poistaa nämä %d vaunua/veturia?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:134
+#, c-format
+msgid ""
+"Cannot open %s file:\n"
+"%s:%s"
+msgstr ""
+"Tiedostoa %s ei voida avata:\n"
+"%s: %s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:135
+#, fuzzy, c-format
+msgid "Cannot create directory: %s - %s"
+msgstr "%s luonti ei onnistu."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:136
+#, fuzzy, c-format
+msgid "Cannot open directory: %s"
+msgstr ""
+"Tiedostoa %s ei voida avata:\n"
+"%s: %s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:137
+#, c-format
+msgid "Path for deletion is not a directory: %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:138
+#, c-format
+msgid "Open failed for directory: %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:139
+#, c-format
+msgid "Can't add directory record %s to zip - %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:140
+#, c-format
+msgid "Can't add file record %s to zip at %s - %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:141
+#, fuzzy, c-format
+msgid "Can't create zip %s - %s"
+msgstr "%s luonti ei onnistu."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:142
+#, c-format
+msgid "Close failure for zip %s - %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:143
+#, c-format
+msgid "Rename failure for zip from %s to %s - %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:144
+#, c-format
+msgid "Open failure for zip %s - %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:145
+#, c-format
+msgid "Index failure for zip %s - %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:146
+#, c-format
+msgid "Open read file failure %s %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:147
+#, c-format
+msgid "Open file in zip failure %s %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:148
+#, c-format
+msgid "Unlink failed for: %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:149
+#, c-format
+msgid "Remove Directory failed for: %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:150
+#, c-format
+msgid "Cannot save archive to %s from directory: %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:151
+#, c-format
+msgid "Cannot save manifest file to %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:152
+#, fuzzy, c-format
+msgid "Cannot open manifest file %s"
+msgstr ""
+"Tiedostoa %s ei voida avata:\n"
+"%s: %s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:153
+#, c-format
+msgid "Cannot unpack file: %s for file: %s in directory: %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:154
+#, fuzzy, c-format
+msgid "Cannot open file %s"
+msgstr ""
+"Tiedostoa %s ei voida avata:\n"
+"%s: %s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:155
+#, c-format
+msgid "Cannot copy file %s into directory %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:156
+#, c-format
+msgid "Unrecognized Option: %s"
+msgstr "Tunnistamaton valinta: %s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:157
+#, c-format
+msgid ""
+"End-Of-Line is unexpected in a quoted field.\n"
+"%s\n"
+"\n"
+"Do you want to continue reading the file?"
+msgstr ""
+"Odottamaton rivin loppu lainausmerkkien sisällä.\n"
+"%s\n"
+"\n"
+"Haluatko jatkaa tiedoston lukemista?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:158
+#, c-format
+msgid ""
+"A comma was expected after this quoted field.\n"
+"%s\n"
+"\n"
+"Do you want to continue reading the file?"
+msgstr ""
+"Odotettiin pilkkua tämän kentän jälkeen.\n"
+"%s\n"
+"\n"
+"Haluatko jatkaa tiedoston lukemista?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:159
+#, c-format
+msgid ""
+"Error \\\\\"%s\\\\\" occurred while writing %s.\n"
+"Please check disk space and system status."
+msgstr ""
+"Virhe \\\\\"%s\\\\\" tapahtui kirjoitettaessa %s.\n"
+"Tarkasta levytila ja järjestelmän tila."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:160
+#, fuzzy, c-format
+msgid ""
+"At least one path for the Turnout T%d does not\n"
+"terminate on an endpoint. Such a track cannot be grouped.\n"
+"The track has been unselected."
+msgstr ""
+"Ainakin yksi raideosan T%d reiteistä loppuu muuhun kuin\n"
+"päätepisteeseen. Tällaista raideosaa ei voi ryhmitellä.\n"
+"Raideosan valinta on poistettu."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:161
+msgid "inv-pathEndTrk on Path."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:162
+msgid "inv-pathStartTrk on Path"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:163
+#, c-format
+msgid "%s:%d- %s"
+msgstr "%s:%d- %s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:164
+msgid "pathEndTrk not on Path."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:165
+msgid "pathStartTrk not on Path."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:166
+msgid ""
+"The tracks cannot be connected together.\n"
+"\n"
+"Try changing some tracks for a closer fit\n"
+"or increase the Connection Angle value on\n"
+"the Preferences dialog."
+msgstr ""
+"Raiteita ei voi yhdistää.\n"
+"\n"
+"Kokeile sovittaa raiteet paremmin keskenään\n"
+" tai kasvata liitoskulmaa ohjelman ominaisuuksista."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:167
+msgid ""
+"The tracks cannot be connected together.\n"
+"\n"
+"Try changing some tracks for a closer fit\n"
+"or increase the Connection Distance and\n"
+"Angle values on the Preferences dialog"
+msgstr ""
+"Raiteita ei voi yhdistää.\n"
+"\n"
+"Kokeile sovittaa raiteet paremmin keskenään\n"
+" tai kasvata liitoskulmaa ja liitosetäisyyttä ohjelman ominaisuuksista."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:168
+msgid ""
+"The tracks cannot be connected together.\n"
+"\n"
+"Try changing some tracks for a closer fit\n"
+"or increase the Connection Distance"
+msgstr ""
+"Raiteita ei voi yhdistää.\n"
+"\n"
+"Kokeile sovittaa raiteet paremmin keskenään\n"
+" tai kasvata liitosetäisyyttä ohjelman ominaisuuksista."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:169
+msgid ""
+"The first track for the Align\n"
+"Rotate command must be Selected."
+msgstr ""
+"Kohdistuskomennon ensimmäisen\n"
+"raideosan on oltava valittuna."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:170
+msgid ""
+"The second track for the Align\n"
+"Rotate command must be Unselected."
+msgstr ""
+"Kohdistuskomennon toisen raideosan\n"
+"on oltava valitsematon."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:171
+msgid "Too many selected tracks, drawing tracks as End Point."
+msgstr ""
+"Liian monta valittua raidetta. Piirretään raiteet pelkkinä päätepisteinä."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:172
+msgid "Select an endpoint between two tracks."
+msgstr "Valitse kahden raideosan välinen päätepiste."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:173
+msgid ""
+"According to values that have been entered the diverging\n"
+"track does not connect with the tangent track. Please\n"
+"check the values entered and try again. Check the angle\n"
+"is entered as a frog number or in degrees as specified\n"
+"by Angle Mode radio buttons."
+msgstr ""
+"Antamiesi arvojen perusteella, poikkeava ja suora\n"
+"raide eivät kohtaa.\n"
+"Tarkasta arvot ja kokeile uudelleen.\n"
+"Tarkasta myös onko kulma annettu risteysnumerona vai asteina."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:174
+msgid "Moved before the end of the turnout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:175
+msgid ""
+"The Coupled Length must be greater than the Car Length,\n"
+"and the Coupler Length must be greater than 0."
+msgstr ""
+"Pituuden kytkimineen on oltava suurempi kuin vaunun/veturin pituus,\n"
+"ja kytkimen pituuden on oltava suurempi kuin 0."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:176
+msgid ""
+"The Car Length value must be greater\n"
+"than the Car Width value."
+msgstr "Pituuden on oltava leveyttä suurempi."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:177
+msgid ""
+"The specified Index is already in use.\n"
+"The Index will be updated to the next available value."
+msgstr ""
+"Määritelty indeksi on jo käytössä.\n"
+"Indeksi muutetaan seuraavaksi vapaaksi arvoksi."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:178
+msgid ""
+"You have changed values for this object.\n"
+"\n"
+"Are you sure you want to Close?"
+msgstr ""
+"Olet muuttanut tämän objektin arvoja.\n"
+"\n"
+"Haluatko varmasti sulkea?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:179
+#, c-format
+msgid ""
+"File version %ld is lower than the minimum\n"
+"supported version %d. You need to update your\n"
+"layout file using an older version of %s"
+msgstr ""
+"Tiedoston versio %ld on pienempi kuin pienin tuettu versio %d\n"
+"Ratasuunnitelmasi täytyy päivittää käyttäen vanhempaa versiota %s:sta."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:180
+#, fuzzy, c-format
+msgid ""
+"File version %ld is lower than the minimum\n"
+"supported version %d.This parameter file will only work using an older "
+"version of %s"
+msgstr ""
+"Tiedoston versio %ld on pienempi kuin pienin tuettu versio %d\n"
+"Ratasuunnitelmasi täytyy päivittää käyttäen vanhempaa versiota %s:sta."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:181
+#, c-format
+msgid ""
+"%s cannot read the demo file:\n"
+"%s"
+msgstr ""
+"%s ei voi lukea demotiedostoa:\n"
+"%s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:182
+#, c-format
+msgid "doDemo: bad number (%d)"
+msgstr "Demo: Virheellinen demon numero (%d)."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:183
+msgid "Playback TIMEEND without TIMESTART"
+msgstr "Toistossa TIMEEND ilman TIMESTART:ia"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:184
+#, c-format
+msgid ""
+"Unknown playback command (%d)\n"
+"%s"
+msgstr ""
+"Tuntematon toistokomento (%d)\n"
+"%s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:185
+#, c-format
+msgid ""
+"Playback file version %ld is lower than the\n"
+"minimum supported version %d.\n"
+"You need to update your layout file using an\n"
+"older version of %s"
+msgstr ""
+"Tiedoston versio %ld on pienempi kuin pienin tuettu versio %d\n"
+"Ratasuunnitelmasi täytyy päivittää käyttäen vanhempaa versiota %s:sta."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:186
+#, c-format
+msgid ""
+"MSG_BAD_SCALE_INDEX\tScale index (NNN) is not valid. Do you want use the "
+"current layout scale (SCALE)? Or create an \"Unknown\" scale? See 'Help|"
+"Recent Messages' for details.\tScale index (%d) is not valid.\n"
+"Do you want use the current layout scale (%s)?\n"
+"Or create an \"Unknown\" scale?\n"
+"See 'Help|Recent Messages' for details."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:187
+#, c-format
+msgid ""
+"MSG_BAD_SCALE_NAME\tScale \"SCALE1\" is not valid. We will substitute a "
+"dummy scale based on \"SCALE2\". See 'Help|Recent Messages' for details."
+"\tScale \"%s\" is not valid. We will substitute a dummy scale based on "
+"\"%s\".\n"
+"See 'Help|Recent Messages' for details."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:188
+msgid "Cannot extend a helix"
+msgstr "Helixiä ei voida jatkaa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:189
+msgid "Cannot trim a helix"
+msgstr "Helixiä ei voida lyhentää"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:190
+msgid "Ignore further audit notices?"
+msgstr "Sivuuta tarkastus huomautukset jatkossa?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:191
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:192
+msgid "Audit Abort?"
+msgstr "Keskeytä tarkastus?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:193
+msgid "Write Audit File?"
+msgstr "Kirjoita tarkastustiedosto?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:194
+#, c-format
+msgid "checkTrackLength: Short track length = %0.3f"
+msgstr "Raideosan pituuden tarkistus: Pienin raideosan pituus = %0.3f"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:195
+#, c-format
+msgid "checkTrackLength: unknown type: %d"
+msgstr "Raideosan pituuden tarkistus: Tuntematon tyyppi: %d"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:196
+#, c-format
+msgid "connectTracks: T%d[%d] T%d[%d] d=%0.3f a=%0.3f"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:197
+#, c-format
+msgid "GetAngleAtPoint: bad type(%d) for T(%d)"
+msgstr "GetAngleAtPoint: virheellinen tyyppi (%d) raitelle T(%d)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:198
+#, c-format
+msgid "joinTracks: invalid track type=%d"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:199
+#, c-format
+msgid "resolveIndex: T%d[%d]: T%d doesn\\\\'t exist"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:200
+msgid "Moved beyond the end of the track"
+msgstr "Siirretty päätepisteen taakse"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:1
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:8
+msgid ""
+"XTrackCAD provides demonstrations on most of the program's features. The "
+"demos can be run by clicking on the Help menu on the Main window and then "
+"selecting Demos."
+msgstr ""
+"XTrackCAD tarjoaa havaintoesityksiä (demoja) useimmista ohjelman "
+"ominaisuuksista. Demoja voidaan suorittaa valitsemalla pääikkunan Ohje-"
+"valikosta Demot."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:3
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:10
+#, fuzzy
+msgid ""
+"The notation \"Menu|Item\" is used in the documentation (and the on-line "
+"demos and tips) to indicate the selection of a menu item.\n"
+"For example, \"File|Open\" means to open the menu by clicking on File on the "
+"menu bar of the Main window and then selecting the Open item from that menu."
+msgstr ""
+"Merkintätapa \"Valikko|Komennot\" on käytössä dokumentaatiossa, ohjeessa, "
+"demoissa ja vinkeissä. Se kuvaa kyseessä olevaa valikon toimintoa.\n"
+"Esimerkiksi Tiedosto|Avaa tarkoittaa, että päävalikosta on ensin avattava "
+"Tiedosto-valikko ja sieltä valittava Avaa-komento."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:12
+msgid ""
+"Set your modeling scale on the \"Options|Layout\" dialog. This controls the "
+"Turnouts and Structures that are available, Easement values and track gauge."
+msgstr ""
+"Mittakaava asetetaan \"Asetukset|Ratasuunnitelma\" ikkunasta. Tämä asetus "
+"määrää mitkä raideosat ja rakennukset ovat käytettävissä sekä "
+"kaarreloivennuksen arvot ja raideleveyden."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:8
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:14
+msgid ""
+"A number of example layouts are provided. These files can be accessed by "
+"\"Help|Examples\"."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:10
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:16
+#, fuzzy
+msgid ""
+"When installed, the length units are set based on your contry: inches for "
+"United States or Canada and centimeters elsewhere. You can change this on "
+"the \"Options|Preferences\" dialog by choosing between Metric and English."
+msgstr ""
+"Asennuksen jälkeen ohjelmassa on tuuma-mitat käytössä. Tämän voi muuttaa "
+"\"Asetukset|Ominaisuudet\" ikkunasta muuttamalla yksiköt metrijärjestelmään "
+"englantilaisen sijaan."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:18
+msgid ""
+"You can change the overall size of your layout on the \"Options|Layout\" "
+"dialog."
+msgstr ""
+"Voit muuttaa ratasuunnitelmasi kokoa \"Asetukset|Ratasuunnitelma\" ikkunasta."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:20
+#, fuzzy
+msgid ""
+"When installed, the default command is the Select command. You might want to "
+"change this to the Decribe command. You can do this on the \"Options|"
+"Command Options\" dialog."
+msgstr ""
+"Asennuksen jälkeen hiiren oletuskomento on Määritä-komento. Kokeneemmat "
+"käyttäjät saattavat haluta muuttaa tämän Valitse-komennoksi. Se tapahtuu "
+"\"Asetukset|Komennot\" ikkunasta."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:22
+msgid ""
+"When Selecting tracks, the connection between Selected and Unselected tracks "
+"is marked by a Red X. This indicates points where the connection between "
+"tracks will be broken if you Move or Rotate the Selected tracks."
+msgstr ""
+"Raideosia valittaessa, valitun ja valitsemattoman raideosan välinen liitos "
+"esitetään punaisella ristillä. Tämä kertoo ne pisteet, joissa raiteiden "
+"liitos irroitetaan valittuja raiteita siirrettäessä tai pyöritettäessä."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:18
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:24
+msgid ""
+"You can change orientation of the pages on the Print command by moving or "
+"rotating the Print Grid.\n"
+"Shift-Left-Drag moves the grid and Shift-Right-Drag rotates the grid."
+msgstr ""
+"Voit muuttaa tulostettavien sivujen asettelua siirtämällä tai pyörittämällä "
+"tulostusruudukkoa.\n"
+"Vaihto-näppäin ja hiiren vasen raahaus siirtää ruudukkoa ja vaihto-hiiren "
+"oikea pyörittää sitä."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:26
+msgid ""
+"You can add track to any unconnected End-Point with the Modify command.\n"
+"Hold down the Shift key and click on the End-Point and drag away to create a "
+"new track segment attached to the End-Point.\n"
+"Repeat with the new End-Point to create flowing tracks."
+msgstr ""
+"Voit lisätä reiteita mihin tahansa irtonaiseen päätepisteeseen Muokkaa "
+"komennolla.\n"
+"Pidä vaihto-näppäin painettuna ja raahaa hiiren oikealla päätepisteestä "
+"luodaksesi uuden raideosan päätepisteen jatkeeksi.\n"
+"Tee sama uudesta päätepisteestä luodaksesi vapaamuotoisia raiteita."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:28
+#, fuzzy
+msgid ""
+"You can create curved tracks in four ways by dragging from:\n"
+" the 1st endpoint in the direction of the curve\n"
+" center of the curve to the 1st endpoint\n"
+" endpoint to the center\n"
+" the 1st to 2nd endpoint\n"
+"Then drag on one of the Red arrows to create the final shape of the curve.\n"
+"\n"
+"You can click on the small button to the right of the Curve command button "
+"to change the method."
+msgstr ""
+"Voit luoda kaarevia raiteita neljällä tavalla raahaamalla:\n"
+" - 1. päätepisteestä kaarteen suuntaan\n"
+" - keskipisteestä kaarteen ensimmäiseen päätepisteeseen\n"
+" - päätepisteestä keskipisteeseen\n"
+" - ensimmäisestä toiseen päätepisteeseen\n"
+"Asettele sitten kaarre lopulliseen muotoonsa raahaamalla punaisista "
+"nuolista.\n"
+"\n"
+"Voit valita tavan Kaarre painikkeen oikealla puolella olevasta pienestä "
+"painikkeesta avautuvan valikon kautta."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:30
+msgid ""
+"When creating a straight or a curved track by dragging from the 1st End "
+"Point, you can snap the new track to an existing open end point by holding "
+"down Shift while you click.\n"
+"The new track will be joined to the old when you create it."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:32
+msgid ""
+"Track Circles provide a quick way to see what arrangement of tracks will fit "
+"in your layout spaces. Create Circles with your typical radius and place "
+"them in corners and other locations where your main-line will make changes "
+"of direction. This will give you an overall idea of how your layout will "
+"look.\n"
+"\n"
+"You can create Circles by:\n"
+" using a fixed radius\n"
+" dragging from the Center to edge\n"
+" dragging from an edge to the Center\n"
+"You can click on the small button to the left of the Circle command button "
+"to change the method."
+msgstr ""
+"Ympyräraiteet tarjoavat nopean tavan hahmottaa millainen raidejärjestely "
+"mahtuu suunniteltuun tilaan. Luo ympyräraiteita käyttäen aikomaasi "
+"kaarresädettä ja asettele niitä nurkkiin ja muihin paikkoihin, joissa "
+"pääraiteesi vaihtaa suuntaa. Tämä antaa yleiskuvan tulevan ratasi muodosta.\n"
+"\n"
+"Voit luoda ympyräraiteita:\n"
+" - Käyttämällä määrättyä sädettä.\n"
+" - Raahaamalla keskipisteestä pois päin.\n"
+" - Raahaamalla kehältä kohti keskipistettä.\n"
+"Voit valita tavan valikosta, joka avautuu Ympyrärata-painikkeen oikealta "
+"puolelta."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:45
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:34
+msgid ""
+"Easements (spiral transition curves) are used when track changes from "
+"straight to curved by gradually changing the radius. This improves "
+"operation and appearance.\n"
+"Easements are created with Joining or Extending Tracks.\n"
+"The Easement dialog is used to control easements."
+msgstr ""
+"Kaarreloivennuksia käytetään radan muuttuessa suorasta kaarteeksi "
+"muuttamalla vaihdoskohdassa kaarresädettä asteittain. Tämä parantaa radan "
+"ajettavuutta ja ulkonäköä.\n"
+"Kaarreloivennukset luodaan yhdistämällä tai jatkamalla raiteita.\n"
+"Kaarreloivennus-ikkunasta asetellaan tarvittavat parametrit."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:36
+msgid ""
+"\"Help|Recent Messages\" shows the last error and warning messages that were "
+"generated by the program. Also an explanation of each message is displayed."
+msgstr ""
+"\"Ohje|Viimeisimmät viestit\" näyttää tapahtuneet virheet ja varoitukset. "
+"Valitsemalla jonkin viesteistä saat tarkennetun kuvauksen viestistä."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:38
+#, fuzzy
+msgid ""
+"When creating stall tracks for a turntable, you usually want the the stall "
+"tracks to be spaced evenly.\n"
+"The \"Turntable Angle\" item on \"Options|Preferences\" dialog can be used "
+"specify the minimum angle between stall tracks."
+msgstr ""
+"Luodessasi kääntöpöytään liittyviä raiteita, haluat yleensä ainakin osan "
+"niistä olevan tasavälein.\n"
+"\"Kääntöpöydän kulma\" parametrilla asetetaan pienin kääntöpöytään "
+"liittyvien raiteiden välinen kulma. Tämä parametri löytyy \"Asetukset|"
+"Komennot\" valikosta."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:40
+msgid ""
+"XTrackCAD periodically saves the current layout in a check point file. The "
+"'Check Point' item on the 'Options|Preferences' dialog controls how often "
+"the file is saved.\n"
+"You can recover your working file after a system crash by copying the "
+"checkpoint file (xtrkcad.ckp in the XTrackCAD Working directory) to file.xtc"
+msgstr ""
+"XTrackCAD tallentaa säännöllisesti ratasuunnitelman varmennustiedostoon. "
+"\"Automaattinen varmennus\" asetus \"Asetukset|Ominaisuudet\" ikkunassa "
+"määrää kuinka usein tiedosto tallennetaan.\n"
+"Voit palauttaa työkopiosi järjestelmän kaatumisen jälkeen kopioimalla "
+"varmennustiedosto xtrkcad.ckp, joka sijaitsee XTrackCADin työhakemistossa, ."
+"xtc tiedostoksi."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:42
+msgid ""
+"The Parallel command is helpful to layout yards and sidings. If the "
+"Parallel track abuts with an existing track, it is automatically connected."
+msgstr ""
+"Luo rinnakkainen raide -komento on avuksi tehtäessä ratapihoja ja "
+"sivuraiteita. Jos luotava rinnakkainen raide rajoittuu olemassa olevaan "
+"raiteeseen, ne yhdistetään automaattisesti."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:59
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:44
+msgid ""
+"You can use Shift-Drag in Select command to move and rotate selected "
+"tracks.\n"
+"Shift-Left-Drag moves tracks and Shift-Right-Drag rotates them.\n"
+"Control-Left-Drag can move labels."
+msgstr ""
+"Valitse-komennon ollessa käytössä voit siirtää ja pyörittää raiteita "
+"pitämällä vaihto-näppäin painettuna ja raahaamalla hiirellä. Vaihto + "
+"vasemmalla raahaus siirtää ja vaihto + oikealla raahaus pyörittää niitä.\n"
+"Control + vasemmalla raahaaminen siirtää merkintöjä."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:46
+msgid ""
+"You can move and rotate the Snap Grid to align with existing track or "
+"benchwork."
+msgstr ""
+"Voit siirtää ja pyörittää kohdistusruudukkoa halutessasi kohdistaa jonkin "
+"olemassa olevan raiteen, runkorakenteen tai pöydän reunan kanssa."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:48
+msgid ""
+"Use the Parts List command to measure track length.\n"
+"Select the tracks you want to measure and then click on the Parts List "
+"button. The report will list the total of length of the selected flex-"
+"track. You will have to add in the length of any Turnouts."
+msgstr ""
+"Käytä osaluetteloa mitataksesi radan pituuksia.\n"
+"Valitse mitattava rataosuus ja avaa sitten osaluettelo. Raportissa on "
+"laskettuna fleksi raiteen kokonaispituus valitulla rataosuudella. "
+"Palaraiteiden pituudet täytyy lisätä erikseen."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:68
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:50
+msgid ""
+"The length of flex-track attached to each Turnout is displayed on layout "
+"near the end-points of the Turnouts.\n"
+"Make sure 'Lengths' option of the 'Label Enable' toggle button on the "
+"Display dialog is selected."
+msgstr ""
+"Kuhunkin palaraiteeseen liittyvän fleksiraiteen pituus näytetään "
+"ratasuunnitelmassa palaraiteiden päiden lähellä.\n"
+"Varmista että Asetukset|Näyttöasetukset ikkunassa on ruksittu kohta "
+"\"Pituudet\" näytettävien merkintöjen kohdalla."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:71
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:52
+msgid ""
+"The Profile command can be used to find the length of a continous section of "
+"track.\n"
+"Select the track at the beginning and end of the section. The total length "
+"of track will be displayed on the Profile window in the lower right corner.\n"
+"Note: the Profile selects the shortest path between the two selected tracks, "
+"which might not be the path you are interested in. In this case, select the "
+"first track and then select other tracks along the path."
+msgstr ""
+"Profiili-komentoa voidaan käyttää selvitettäessä jonkin yhtenäisen "
+"raideosuuden pituus.\n"
+"Valitse halutun raideosuuden alku- ja loppupää, jolloin osuuden "
+"kokonaispituus näytetään profiilikäyrän vaaka-akselin oikeassa reunassa.\n"
+"Huom: Profiili-komento valitsee aina lyhyimmän reitin annettujen pisteiden "
+"välillä. Jos haluat itse valita toisen reitin, valitse ensin alkupiste ja "
+"etene sitten haluttua reittiä pitkin loppupisteeseen."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:54
+msgid ""
+"Layers can be used to contain different groups of tracks or other features. "
+"You might use one layer for the main-line, another of staging tracks and "
+"another of benchwork.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:77
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:56
+msgid ""
+"You can give each layer a name (by using the \"Manage|Layer\" dialog). This "
+"name will be displayed as the Balloon Help for the corresponding Layer "
+"button, if you have Balloon Help enabled on the \"Options|Display\" dialog."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:79
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:58
+msgid ""
+"You can remove groups of buttons or the Hot Bar from the Main window to give "
+"you more room if you are not using some features. Also, the number of Layer "
+"buttons displayed is controlled by the \"Manage|Layers\" dialog."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:60
+msgid ""
+"The size of the map window is controlled by the overall size of the room "
+"(specified on the layout dialog) and the map scale (on the display dialog). "
+"You can make the Map window larger (or smaller) by decreasing (or "
+"increasing) the map scale.\n"
+"XTrackCad will prevent you from making the map window too small or too large."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:62
+msgid ""
+"You can unload parameter files you are not using by the Parameter Files "
+"dialog. This removes unused Turnout and Structure definitions from the Hot "
+"Bar and makes the program start faster."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:64
+msgid ""
+"Right-Click on the Main window displays a menu list of commands as an "
+"alternative to pressing the buttons on the tool bar or using the menu "
+"accelerator keys."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:87
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:66
+msgid ""
+"Holding down the Shift key while you Right-Click will display options for "
+"the current command (if any)."
+msgstr ""
+"Jos pidät vaihto-näppäintä painettuna, kun klikkaat hiiren oikealla "
+"painilleella, saat aktiiviseen komentoon liittyvän ponnahdusvalikon, mikäli "
+"komentoon sellainen liittyy."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:89
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:68
+msgid ""
+"Right-Click on the Hot Bar displays a menu of the different groups of "
+"objects which you can use to jump to the group you are interested in.\n"
+"Pressing a numeric key (1-9 and 0) moves the Hot Bar to corresponding "
+"position (1 is the start, 5 is half way, 0 is the end)."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:92
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:70
+msgid ""
+"Right-Drag on the Map window sets the origin and scale of the Main window.\n"
+"The Main window will be centered on the spot where you started the Draw and "
+"how far you Drag will control how large an area you can see on the Main "
+"window."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:95
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:72
+msgid ""
+"To refresh the Main window, press Control-L (hold down the 'Ctrl' key and "
+"then press the 'l' key)."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:97
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:74
+msgid ""
+"The File menu contains a list of the last 5 layouts you were working on."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:76
+msgid ""
+"The Print command can optionally print lines representing the roadbed for "
+"all tracks. This is useful when printing full size (1:1) for cutting "
+"roadbed."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:101
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:78
+msgid ""
+"Pressing the 'Esc' key cancels the current command and invokes the default "
+"command, (which is either Describe or Select)."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:103
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:80
+msgid ""
+"When moving or rotating tracks on slow machines or with a large number of "
+"tracks, you can improve performance by changing the way tracks are drawn "
+"while being moved.\n"
+"Shift-Right click will display a menu containing options to draw tracks "
+"normally, as simple lines or just draw end-points."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:106
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:82
+msgid ""
+"The colors of different parts of the Main window can be changed with the "
+"Colors dialog. In particular, the Snap Grid color can be changed to make it "
+"more visible when printed."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:108
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:84
+msgid ""
+"By default objects are drawn in their normal colors. Tracks will be drawn "
+"in Black. Objects can also be drawn in the color according to their Layer. "
+"The color of a Layer is displayed on the corresponding Layer button.\n"
+"The Display dialog 'Color Layers' item has separate toggles for Tracks and "
+"non-Tracks."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:111
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:86
+msgid ""
+"Each Layer can be drawn or hidden by the 'Visible' toggle on the Layers "
+"dialog."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:88
+msgid ""
+"Short cut Layer buttons can also be displayed on the tool bar for up to the "
+"first 20 layers.\n"
+"This buttons allow to Show or Hide the layers."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:115
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:90
+msgid "The name of the Layer is the Balloon Help for the Layer button."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:92
+msgid ""
+"The playback speed of the Demos can be changed by using Speed drop down list "
+"on the Demo window."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:119
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:94
+msgid ""
+"Many of the commands and dialogs can be invoked by special key combinations "
+"called Menu-Accelerators. These are listed on the Menus next to the command "
+"name. For example, Control-P will invoke the Print command."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:121
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:96
+msgid ""
+"The Connect command is used to join Sectional track pieces that don't quite "
+"fit together.\n"
+"This command works by adding small gaps between other tracks to move the "
+"selected End-Points closer together."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:124
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:98
+msgid ""
+"To copy a group of objects: Select the objects, press Control-c (or select "
+"Copy from the Edit menu), press Control-v (or select Paste from the Edit "
+"menu).\n"
+"The selected tracks will be copied to the layout and you can Move or Rotate "
+"them into position."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:127
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:100
+msgid ""
+"In the Rotate (or Select) commands you can press Shift-Right-Click to "
+"display the Rotate menu which allows you to rotate the selected objects by a "
+"specific angle."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:129
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:102
+msgid ""
+"You can use the Move-To-Join option of the Join command (hold down the Shift "
+"key) to move a group of Selected tracks to attach with some unselected End-"
+"Point."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:104
+msgid ""
+"The Price List dialog (on the File Menu) is used to specify the prices of "
+"each type of Turnout, Sectional Track and Structure. Also, the length and "
+"price of flex-track pieces can be specified for each scale.\n"
+"This values will be used on the Parts List report to generate total cost of "
+"the selected objects."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:134
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:106
+msgid ""
+"Areas of water can represented by a Polygon (use the Draw command) of the "
+"appropiate color.\n"
+"By using the Modify command, you can move, add or remove corners of the "
+"Polygon to fit the shape of the water.\n"
+"You use the Below command to place the Polygon below (or behind) other "
+"objects.\n"
+"\n"
+"You can also use a Polygon to represent aisles."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:140
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:108
+msgid ""
+"When you create Benchwork you can move it below other objects by Selecting "
+"the Benchwork and use the Below command.\n"
+"Also, put Benchwork in a separate Layer so you can hide it if desired."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:143
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:110
+msgid ""
+"You can enter Distances and Lengths using any format regardless of the "
+"Length Format on the Preferences dialog."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:112
+msgid ""
+"You can enter Metric values when English is the default Units and vice versa."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:146
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:114
+msgid ""
+"When entering Distances and Lengths you can press the '=' key to redisplay "
+"the value in the default format."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:147
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:116
+msgid ""
+"You can also press the 's' key to convert a Prototype measurement to a Scale "
+"measurement by dividing by the ratio for the current scale."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:118
+msgid ""
+"The 'p' key will convert a Scale measurement to a Prototype measurement."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:150
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:120
+msgid ""
+"You can place cars on the layout using the Train Simulation command to check "
+"clearance points, track to track separation and coupling."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:152
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:122
+msgid ""
+"Use the MoveTo button on the Custom Management dialog to move your custom "
+"Turnout, Structure and Car definitions to a .XTP parameter file."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:154
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:124
+msgid ""
+"If you are printing multiple pages on a continuous feed printer (such a Dot "
+"Matrix) you can change the Page Order if necessary to print pages out in "
+"proper order."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:126
+msgid ""
+"On the Car Item and Car Part dialogs, you can enter custom values for "
+"Manufacturer, Part and Road by typing the new value directly into the Drop "
+"Down List."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:128
+msgid ""
+"On the Car Item dialog, you can change the Road, Number, Color and other "
+"values for a Car. This is useful if you repaint or renumber a car. \n"
+"You can also change the Coupler Mounting and Coupler Length if you change "
+"the couplers."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:161
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:130
+msgid ""
+"You can Export your Car Inventory to a file in Comma-Separated-Value format "
+"which can be read by most spread-sheet programs."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:132
+msgid "Use the Train Odometer to measure distances along the track."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:134
+msgid ""
+"Holding down the Shift key when clicking the Zoom In or Zoom Out button will "
+"zoom to a programmed Drawing Scale. \n"
+"Holding down the Shift and Control keys when clicking a Zoom button will set "
+"it's program Zoom to the current Drawing Scale."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:168
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:136
+msgid ""
+"You can trim the ends of turnouts by holding down the Shift key when using "
+"the Split command."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:138
+msgid ""
+"The Split command can be used to create Block Gaps at end points between two "
+"tracks. \n"
+"Either rail or both rails can be gapped, which are drawn as thick lines."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:173
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:140
+msgid ""
+"Trains will 'crash' if they hit another car when travelling faster than the "
+"'Max Coupling Speed' (on the Command Options dialog). \n"
+"They will also 'crash' if they hit the end of the track or an open "
+"turnout. \n"
+"Crashed trains must be manually moved back onto the track."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:177
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:142
+msgid ""
+"You can add new track segments to a turnout definition or create a "
+"definition from individual tracks using the Group command."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:179
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:144
+msgid ""
+"The center point and radius of Curved and Circle tracks can optionally be "
+"drawn. \n"
+"This feature is toggled by using the Move Label command and doing a Shift-"
+"Left-Click on the track."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:146
+msgid ""
+"Turnout, Curved and Helix track labels can be individually turned on and off "
+"by doing a Shift-Right-Click on the track when using the Move Label command."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:148
+msgid ""
+"You can use the Describe command to change the font size of Text objects."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:186
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:150
+msgid ""
+"You can use the Describe command to change the size of Dimension Line labels."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:188
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:152
+msgid ""
+"Normally Right-Click displays a popup menu of commands and Shift-Right-Click "
+"displays options for the current command. \n"
+"This can reversed by using the Right Click toggle button on the Command "
+"Options dialog."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:191
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:154
+msgid ""
+"The Align item on the Rotate command options menu will let you Align "
+"selected objects with any unselected object. \n"
+"The selected objects are rotated so the first point is parallel to the "
+"second point you selected."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:194
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:156
+msgid ""
+"Print To Bitmap allows you to print the track center line. \n"
+"This is useful if you later print the bitmap full size as a template when "
+"laying track."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:197
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:158
+msgid ""
+"You can export the selected tracks to a DXF file which can be read by most "
+"CAD programs."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:199
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:160
+msgid ""
+"Lengths and distances can be displayed in a variety of units and formats "
+"such as 1' 10 3/4\", 1ft 10.75in or 22.750. In Metric mode, distances can "
+"be displayed as millimeters, centimeters or meters. See the Length Format "
+"item on the Preferences dialog."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:201
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:162
+msgid ""
+"Tracks that are too steep or curve too tightly are drawn in the Exception "
+"color (Yellow by default). \n"
+"This helps to identify potential problem areas. \n"
+"The maximum grade and minimum radius are set on the Preferences dialog."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:164
+msgid ""
+"The Flip command produces a mirror-image of the selected tracks. \n"
+"If possible, right-hand turnouts are relabeled as left-hand turnouts (and "
+"vice versa)."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:208
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:166
+msgid ""
+"Then Ungroup command will break turnouts and structures into individual "
+"track, line and shape segments. \n"
+"You can modify each segment and add new ones. \n"
+"Then use the Group command to update the definition."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:212
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:168
+msgid "Dimension lines show the distance between two points."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:214
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:170
+msgid ""
+"A variety of Benchwork (rectangular, L-girder and T-girder) can be drawn. \n"
+"Use the Below command to move the Benchwork below the track for proper "
+"display."
+msgstr ""
+"Erilaisia runkorakenteita voidaan piirtää (suora, L-palkki ja T-palkki).\n"
+"Käytä \"alimmaiseksi\" komentoa siirtääksesi runkorakenteen radan ja "
+"maisemoinnin alapuolelle."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:217
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:172
+msgid ""
+"The Turnout Designer dialogs allow you to specify the width of any attached "
+"roadbed. \n"
+"As well, the color and thickness of the lines used to represent the roadbed "
+"can be specified."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:220
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:174
+msgid ""
+"The Color dialog (on the Options menu) is used to change the color of "
+"different objects on the display. \n"
+"You can change the color of the Snap Grid and Borders, as well as Normal, "
+"Selected and Exception tracks."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:223
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:176
+msgid ""
+"You can set the elevation (height) of track end-points. \n"
+"Elevations of intermediate end points can be computed automatically based on "
+"the distance to the nearest end points with defined elevations. \n"
+"Grades can also be displayed at selected end points. \n"
+"Please see the Elevations help and demo."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:228
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:178
+msgid ""
+"Once you have elevations on some endpoints, you can use the Profile command "
+"to produce an elevation graph. \n"
+"The graph shows the selected elevations, grades and distances. \n"
+"Please see the Profile help and demo for details."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:232
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:180
+msgid ""
+"You can draw tracks with wider lines for rails. \n"
+"Select the tracks and use Medium or Thick Tracks on the Edit menu."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:235
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:182
+msgid ""
+"The Helix command is used to create a Helix track. \n"
+"You specify some parameters: height, radius, number of turns, grade and "
+"vertical separation between layers. \n"
+"These values are interrelated so changing one value will affect ohers. \n"
+"Then you can place the Helix and join to other tracks as you would a Circle "
+"track."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:240
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:184
+msgid ""
+"Many objects on the layout have labels: Turnouts/Helix/Curved Titles, Track "
+"Lenghts, End-Point Elevations, Track Elevations and Cars. \n"
+"You can turn these labels on or off with the Label Enable toggle buttons on "
+"the Display options dialog."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:186
+#, fuzzy
+msgid ""
+"If you hold down the Control key when using the Rotate command, the rotation "
+"will be done in increments of 15ᅵ."
+msgstr ""
+"Jos pidät control-näppäintä painettuna raahatessasi, pöydän reuna ja muut "
+"objektit vetävät toisiaan puoleensa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:245
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:188
+msgid ""
+"When using the Rotate command, Shift-Right-Click displays a menu allowing "
+"you to rotate by specific amounts or to align the selected objects with "
+"another object."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:247
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:190
+msgid ""
+"This is last tip. If you have any additions or comments, please let us know."
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:192
+#, fuzzy
+msgid ""
+"The unconnected endpoints of a straight or curved track can be changed with "
+"the 'Modify Track' command.\n"
+msgstr ""
+"Suorien ja kaarevien raiteiden irtonaisia päätepisteitä voidaan muuttaa "
+"Muokkaa-komennolla.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:194
+#, fuzzy
+msgid ""
+"The endpoint of a straight track is selected and then Left-Dragged to change "
+"its length. A blue anchor shows that the length can be extended.\n"
+msgstr ""
+"Suoran raiteen pituutta muutetaan raahaamalla hiiren vasemmalla painikkeella "
+"sen päätepisteestä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:196
+#, fuzzy
+msgid ""
+"If you try to drag the selected endpoint beyond the far endpoint, the track "
+"extends in the opposite direction.\n"
+msgstr ""
+"Katso mitä tapahtuu, jos raahaat valitun päätepisteen toisen päätepisteen "
+"yli.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:68
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:199
+#, fuzzy
+msgid ""
+"A curved track is selected and it's new endpoint is determined by the angle "
+"to the cursor. \n"
+msgstr "Kaarteen päätepistettä voidaan siirtää kehää pitkin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:105
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:201
+msgid "It's possible to almost create a complete circle.\n"
+msgstr "On mahdollista luoda lähes täydellinen ympyrä.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:202
+msgid ""
+"If you drag the mouse beyond the start of the curve the track becomes very "
+"short.\n"
+msgstr ""
+"Jos raahaat hiirellä kaarteen alkupisteen yli raiteesta tulee erittäin "
+"lyhyt.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:114
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:204
+msgid "Here you are warned that the track will be too short.\n"
+msgstr "Tällöin varoitetaan liian lyhyestä raiteesta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:121
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:206
+msgid ""
+"Because the modified track is too short, the modification is abandoned the "
+"original track is restored.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:208
+msgid ""
+"If you move the cursor away from the curve, you will create a straight track "
+"tangent to the curve.\n"
+msgstr ""
+"Jos siirrät osoitinta kauemmas kaarteesta, voit luoda suoran raiteen "
+"kaarteen tangentin suuntaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:185
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:211
+#, fuzzy
+msgid ""
+"If you adjust the endpoint of a turnout or sectional track the track is "
+"extended by a similar track segment. The extension can be a straight or a "
+"curve.\n"
+msgstr ""
+"Jos muutat palaraiteen tai vaihteen päätepistettä, uusi raideosa luodaan "
+"edellisen jatkeeksi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:200
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:214
+#, fuzzy
+msgid ""
+"You can change the radius of a straight or curved track that is connected at "
+"one endpoint by holding down the Shift key while Left-dragging on it.\n"
+msgstr ""
+"Voit muuttaa suoran tai kaarevan raiteen sädettä, mikäli se on toisesta "
+"päästä liitetty. Tämä tapahtuu pitämällä vaihto-näppäintä painettuna "
+"raahattaessa raiteen toisesta päästä hiiren vasemmalla painikkeella.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:215
+msgid ""
+"The blue cross anchor shows that this is possible when shift is held down "
+"with no buttons.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:219
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:217
+#, fuzzy
+msgid ""
+"This lets you change a straight track into a curved track (and vice versa) "
+"as well as changing the radius of a curved track.\n"
+msgstr ""
+"Näin voit muuttaa suoran raiteen kaarteeksi ja päin vastoin, sekä muuttaa "
+"kaarteen sädettä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:262
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:219
+#, fuzzy
+msgid ""
+"You can form an extension of a straight or curved Track that is connected at "
+"one endpoint using an easement by holding down the Ctrl key while Left-"
+"dragging on it.\n"
+msgstr ""
+"Voit muuttaa suoran tai kaarevan raiteen sädettä, mikäli se on toisesta "
+"päästä liitetty. Tämä tapahtuu pitämällä vaihto-näppäintä painettuna "
+"raahattaessa raiteen toisesta päästä hiiren vasemmalla painikkeella.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:220
+msgid ""
+"The blue half cross anchor shows that this is possible when the Ctrl key is "
+"held down with no mouse button.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:277
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:9
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:223
+msgid "You can draw a variety of different types of benchwork:\n"
+msgstr "Voit piirtää eri tyyppisiä runkorakenteita:\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:224
+msgid "- rectangular (1x2, 2x4 etc)\n"
+msgstr "- suora (25 x 50 mm, 50 x 100 mm jne)\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:225
+msgid "- L girders\n"
+msgstr "- L-palkki\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:226
+msgid "- T girders\n"
+msgstr "- T-palkki\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:227
+msgid "You can also draw them in different orientations.\n"
+msgstr "Voit myös piirtää ne eri asentoihin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:229
+msgid "We will draw two 3x6 inch L-girders.\n"
+msgstr "Piirrämme nyt 3x6 tuuman L-palkkeja.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:43
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:231
+msgid ""
+"The flange of the top L-Girders is on the outside edge of the girders. We "
+"want to change the girder so both flanges are on the inside.\n"
+msgstr ""
+"Ylemmän L-palkin pystylape on rakenteen ulkopuolella. Haluamme että "
+"molempien palkkien pystylappeet ovat sisäpuolella.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:232
+msgid "We will use the <Describe> command for this.\n"
+msgstr "Käytämme määrittele-komentoa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:234
+msgid "Change the Orientation to Right.\n"
+msgstr "Muuta \"suunta\" \"oikeaksi\".\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:236
+msgid "Now both flanges are on the inside of the two girders.\n"
+msgstr "Nyt kummankin L-palkin pystylappeet ovat sisäpuolella.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:238
+msgid ""
+"Pushing the <Describe> button will cancel any other command in progress.\n"
+msgstr ""
+"Määrittele -komennon valitseminen keskeyttää minkä tahansa meneillään olevan "
+"komennon.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:239
+#, fuzzy
+msgid ""
+"Here we will begin to create a curved track which is a two step process.\n"
+msgstr ""
+"Tässä aloitamme luomaan kaarevaa raidetta, joka on kaksiosainen toiminto.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:241
+msgid ""
+"When we clicked on the <Describe> button, the current command was "
+"cancelled.\n"
+msgstr ""
+"Klikkaamalla Määrittele -painiketta, sen hetkinen komento peruutettiin.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:242
+#, fuzzy
+msgid ""
+"When in <Describe> mode, selecting any object will print a description in "
+"the Status Bar and display a dialog showing properties of the clicked-on "
+"object.\n"
+msgstr ""
+"Määrittely -tilassa minkä tahansa objektin valinta tulostaa sen kuvauksen "
+"tilariville sekä avaa ikkunan, jossa esitetään valitun kohteen "
+"ominaisuudet.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:244
+#, fuzzy
+msgid ""
+"Certain parameters of the object can be changed. In this case we'll change "
+"the length\n"
+msgstr ""
+"Tiettyjä parametreja voi muuttaa. Tässä tapauksesa muutamme pituutta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:246
+msgid "Let's look at the Turnout...\n"
+msgstr "Katsokaamme vaihdetta...\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:248
+#, fuzzy
+msgid "and change the turnout name and part no.\n"
+msgstr "ja muuttakaamme sen otsikkoa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:250
+#, fuzzy
+msgid "You can change the contents of text...\n"
+msgstr "Voit muuttaa tekstin sisältöä...\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:93
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:252
+msgid "and its size.\n"
+msgstr "ja kokoa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:100
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:254
+#, fuzzy
+msgid ""
+"If you select a note, the Description dialog appears which displays the "
+"contents of the note.\n"
+msgstr ""
+"Jos valitset muistiinpanon, avautuu ikkuna, josta voit muuttaa muistiinpanon "
+"sisältöä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:112
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:257
+msgid ""
+"Like the <Curve> track command, there are several ways to create a Circle "
+"track.\n"
+msgstr "Kuten kaarteet, myös ympyräradat voidaan luoda usealla eri tavalla.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:258
+msgid ""
+"The first is to specify a fixed radius and simply drag the Circle into "
+"position.\n"
+msgstr ""
+"Ensimmäinen tapa on määritellä ympyrän säde ja yksinkertaisesti raahaamalla "
+"ympyrä paikoilleen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:259
+msgid "We will change the Radius before proceeding.\n"
+msgstr "Muutamme säteen ennen kuin jatkamme.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:261
+msgid "The next method is to drag from the edge of the Circle to the center.\n"
+msgstr "Seuraava tapa on raahata ympyrän kehältä kohti keskipistettä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:263
+msgid ""
+"The last is similar, but you drag from the center of the Circle to the "
+"edge.\n"
+msgstr ""
+"Viimeinen tapa on vastaavanlainen, mutta raahataan ympyrän keskipisteestä "
+"ulos päin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:50
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:157
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:266
+msgid ""
+"We have built a siding using Sectional track and have 2 End-Points that "
+"don't line up and are not connected automatically when placing the sectional "
+"track.\n"
+msgstr ""
+"Olemme rakentaneet sivuraiteen käyttäen palaraiteita. Kaksi päätepistettä "
+"eivät ole riittävän kohdakkain, jotta ne olisi automaattisesti liitetty "
+"toisiinsa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:162
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:268
+msgid ""
+"We use the <Connect> command to adjust neighboring tracks so the gap is "
+"closed.\n"
+msgstr ""
+"Käytämme liitä-komentoa säätääksemme viereisiä raideosia siten, että rako "
+"saadaan suljettua.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:269
+msgid ""
+"Note: the adjustments are only done on tracks which have only 1 or 2 "
+"connections. In this example the Turnouts would not be affected.\n"
+msgstr ""
+"Huom: Säätö tehdään vain niille raideosille, joilla on vain yksi tai kaksi "
+"liitosta. Tässä esimerkissä vaihteet jäävät koskemattomiksi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:175
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:271
+msgid "And now the gap is closed.\n"
+msgstr "Nyt rako on suljettu.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:181
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:273
+msgid "Other tracks have been shifted slightly to close the gap.\n"
+msgstr "Muita raideosia siirrettiin hieman, jotta rako saatiin suljettua.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:188
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:275
+msgid "You can see these slight mis-alignments.\n"
+msgstr "Voit nähdä hienoisen heiton raideosien kohdistuksessa.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:276
+msgid "But they will have no effect when the layout is actually built.\n"
+msgstr "Mutta sillä ei ole merkitystä kun rata todellisuudessa rakennetaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:196
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:353
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:279
+msgid ""
+"After working with Sectional track you might get to point where these mis-"
+"alignments have accumulated and you wish to remove them.\n"
+msgstr ""
+"Työskenneltyäsi palaraiteiden kanssa voit päätyä tilanteeseen, jossa nämä "
+"kohdistusten heitot ovat kertautuneet ja haluat korjata ne.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:280
+msgid ""
+"You can remove these slight mis-alignments by tightening the tracks starting "
+"from a unconnected End-Point. Use Shift-Left-Click with the <Connect> "
+"command.\n"
+msgstr ""
+"Voit poistaa kohdistusten heiton tiukentamalla raideosat alkaen irrallisesta "
+"päätepisteestä. Käytä liitä-komentoa ja pidä vaihto-näppäintä painettuna kun "
+"klikkaat hiiren vasemmalla painikkeella.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:281
+msgid "First use the <Split> command to disconnect the tracks.\n"
+msgstr "Ensin irrotamme raideosat pilko-komennolla.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:363
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:283
+msgid ""
+"Then with the <Connect> command, Shift-Left-Click on the 2 End-Points.\n"
+msgstr ""
+"Sitten liitä-komennolla, vaihto + hiiren vasen klikkaus molempiin "
+"päätepisteisiin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:378
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:199
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:286
+msgid "In example shows a simple figure-8 layout using Sectional track.\n"
+msgstr ""
+"Tässä esimerkissä on yksinkertainen palaraiteista tehty kahdeksikkorata.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:287
+msgid ""
+"You will notice that the tracks do not line up exactly in one location.\n"
+msgstr "Huomaat, etteivät raiteet aivan kohtaa yhdessä kohdassa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:211
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:289
+msgid ""
+"We can use the <Connect> command to move the connecting tracks slightly and "
+"connect the 2 End-Points.\n"
+msgstr ""
+"Voimme käyttää liitä-komentoa siirtääksemme raideosia hieman, jotta raiteet "
+"saadaan liitetyksi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:291
+msgid "The two End-Points are now aligned and connected.\n"
+msgstr "Päätepisteet ovat nyt kohdistettu ja liitetty.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:231
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:293
+msgid "The connection was made by adding small gaps in other tracks.\n"
+msgstr "Liitos tehtiin lisäämällä hienoisia rakoja muiden raideosien väliin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:238
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:296
+msgid "There are several ways to create a Curved track.\n"
+msgstr "On useita tapoja luoda kaarevia raiteita.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:297
+msgid ""
+"You can choose which to use by clicking on the small button to the left of "
+"<Curve> command button if the current Curve command is not the one you "
+"want.\n"
+msgstr ""
+"Tavan voi valita Kaarre-painikkeen oikealla puolella olevasta pienestä "
+"nuolesta avautuvan valikon kautta.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:298
+msgid ""
+"The first is by clicking on the first End-Point and dragging in the "
+"direction of the Curve.\n"
+msgstr ""
+"Ensimmäinen tapa on klikata kaarteen ensimmäistä päätepistettä ja raahata "
+"hiirellä kaarteen suntaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:20
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:300
+msgid ""
+"You will see a straight track with a double ended Red arrow at the end.\n"
+msgstr "Näet suoran raiteen, jonka päässä on kaksisuuntainen punainen nuoli.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:301
+msgid "Click and drag on one of the Red arrows to complete the Curve.\n"
+msgstr "Raahaa nuolesta asetellaksesi kaarre oikean muotoiseksi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:303
+msgid ""
+"The next method is to click at one End-Point and drag to the center of the "
+"Curve.\n"
+msgstr ""
+"Seuraava tapa on klikata kaarteen päätepistettä ja raahata hiirellä kaarteen "
+"keskipisteeseen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:305
+msgid ""
+"Now you will see the double ended Red arrow connected to the center of the "
+"Curve marked by a small circle.\n"
+msgstr ""
+"Näet kaksisuuntaisen nuolen, joka on yhdistetty viivalla karteen "
+"keskipistettä kuvaavaan pieneen ympyrään.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:306
+msgid "As before, drag on one of the Red arrows to complete the Curve.\n"
+msgstr "Kuten aikaisemminkin, raahaa nuolesta viimeistelläksesi kaarteen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:308
+msgid ""
+"The next method is similar to the last except that you drag first from the "
+"center of the Curve to one End-Point.\n"
+msgstr ""
+"Seuraava tapa on saman kaltainen kuin edellinen, paitsi että toiminto "
+"aloitetaan raahaamalla kaarteen keskipisteestä kaarteen päätepisteeseen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:310
+msgid "Once again, drag on a Red arrow to complete the Curve.\n"
+msgstr "Viimeistele kaarre raahaamalla nuolesta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:90
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:312
+msgid ""
+"The last method begins by drawing a line between the two End-Points of the "
+"Curve. This forms the Chord of the Curve.\n"
+msgstr ""
+"Viimeinen tapa aloitetaan vetämällä viiva kaarteen päätepisteiden välille. "
+"Tämä muodostaa kaarteen jänteen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:108
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:314
+msgid "Now drag on a Red arrow to complete the Curve.\n"
+msgstr "Viimeistele kaarre nuolesta raahaamalla.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:118
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:317
+msgid "This demo will construct a control panel for part of a bigger layout.\n"
+msgstr ""
+"Tässä demossa luodaan ohjauspaneeli osaksi suurempaa ratasuunnitelmaa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:319
+#, fuzzy
+msgid "For our control panel we will use Œ\" lines. \n"
+msgstr "Ohjauspaneelissa käytämme 1/4 tuuman viivoja.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:320
+msgid "Also, we will use a 1/8\" grid to lay out our controls.\n"
+msgstr "Käytämme myös 1/8 tuuman kohdistusruudukkoa.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:321
+msgid ""
+"First, we will set up the Snap Grid for 1\" grid lines and 8 divisions.\n"
+msgstr ""
+"Ensin asetamme kohdistusruudukkoon 1 tuuman ruutuvälin 8 osan jaolla.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:323
+msgid "Now, clear the layout and turn on the Snap Grid.\n"
+msgstr ""
+"Nyt tyhjennämme ratasuunnitelman ja otamme kohdistusruudukon käyttöön.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:147
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:325
+msgid "First step: draw the lines representing the tracks.\n"
+msgstr "Ensimmäiseksi: Piirrä viivat kuvaamaan raiteita.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:326
+#, fuzzy
+msgid "We specify the line width in inches.\n"
+msgstr "Määrittelemme viivan paksuuden pikseleinä.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:327
+msgid ""
+"To create a 1/4\" line, enter 0.250 in the \"Straight Line Width\" box at "
+"the bottom of the window.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:492
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:329
+#, fuzzy
+msgid ""
+"Notice how the Snap Grid keeps the main line and siding track parallel and "
+"the connecting tracks and spur at a 45° angle.\n"
+msgstr ""
+"Huomaa, kuinka kohdistusruudukko auttaa pitämään pääradan ja sivuraiteen "
+"saman suuntaisina, sekä yhdistävät raiteet ja piston 45° kulmassa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:500
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:331
+msgid "Second step: add LEDs for the turnout position indicators.\n"
+msgstr "Toinen vaihe: Lisää LEDit osoittamaan vaihteiden asentoa.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:332
+msgid "We will use T1 red and green LEDs.\n"
+msgstr "Käytämme punaisia ja vihreitä T1 LEDejä.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:333
+msgid "We will zoom in to show positioning.\n"
+msgstr "Lähennämme näkymää asettelun helpottamiseksi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:510
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:335
+msgid ""
+"Notice that when we are in the correct position (on the 1/8\" grid), the "
+"Marker lines on the bottom and left rulers will high-light the tick marks. "
+"When both ticks are high-lighted, press the space bar to finalize the LED.\n"
+msgstr ""
+"Huomaa että kun LEDi on oikeassa kohdassa kohdistusruudukon jakoon nähden, "
+"viivaimien merkinnät korostetaan. Kun sekä vaaka- että pystyviivaimen "
+"merkinnät ovat korostettuna, paina välilyöntiä hyväksyäksesi LEDin "
+"asettelun.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:555
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:337
+msgid "Now we'll add push buttons to control the turnouts.\n"
+msgstr "Nyt lisäämme painonapit, joilla ohjataan vaihteita.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:592
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:339
+msgid "Let's add signals to our siding.\n"
+msgstr "Lisätään sivuraiteelle opastimet.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:340
+msgid ""
+"The entrance to the siding will be protected by double headed signals.\n"
+msgstr "Sivuraiteelle tulo suojataan kaksiosaisella opastimella.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:341
+msgid "We'll select a signal from the HotBar and place it into position.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:605
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:343
+#, fuzzy
+msgid ""
+"We rotate the signals by Shift-Right-Click and select 90° CW on the popup "
+"menu. We can not show the popup menu in demo mode, but will simulate the "
+"effect.\n"
+msgstr ""
+"Pyöritämme opastimia pitämällä vaihto-näppäintä painettuna ja klikkaamalla "
+"hiiren oikealla painikkeella avataksemme ponnahdusvalikon. Sieltä valitsemme "
+"90° MP (myötäpäivään). Demossa ei voida näyttää ponnahdusvalikkoa, mutta "
+"näytämme komennon vaikutuksen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:654
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:345
+msgid "The exits from the siding will be protected by single headed signals.\n"
+msgstr "Sivuraiteelta lähdöt suojataan yksiosaisilla opastimilla.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:708
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:347
+msgid "Now for some touch-ups.\n"
+msgstr "Nyt kohennetaan hieman kaaviota.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:348
+msgid "Notice when the line meet at an angle there is a gap.\n"
+msgstr "Huomaa viivojen liitoskohdissa pienet raot.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:349
+#, fuzzy
+msgid "We will fill this gap with the Œ\" dot.\n"
+msgstr "Näytämme ne 1/4 tuuman pisteillä.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:350
+msgid ""
+"Note: Win95/Win98/WinME does not support drawing lines with flat end-caps, "
+"but only with round end-caps.\n"
+msgstr ""
+"Huom: Win96/Win98/WinME ei tue tasapäisten viivojen piirtoa, vaan ainoastaan "
+"pyöreäpäisiä viivoja.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:351
+msgid "Users on those platforms will not see the gap.\n"
+msgstr "Mainittujen käyttöjärjestelmien käyttäjät eivät näe näitä rakoja.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:731
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:353
+msgid ""
+"Add an arrow head to indicate the tracks that connect to the rest of the "
+"layout.\n"
+msgstr ""
+"Lisää nuolenkärjet kuvaamaan raiteiden jatkumista muihin radan osiin.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:354
+msgid "The second arrow will be flipped 180°\"\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:769
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:356
+msgid "And add some labels.\n"
+msgstr "Lisää joitakin merkintöjä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:830
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:358
+#, fuzzy
+msgid ""
+"We want to print our control panel onto a 8Âœx11 page, but the control panel "
+"is a bit too wide.\n"
+msgstr ""
+"Haluamme tulostaa ohjeuspaneelin 8 1/2 x 11 tuuman kokoiseksi, mutta "
+"ohjauspaneeli on hieman liian suuri.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:359
+msgid "Lets tighten it up a bit.\n"
+msgstr "Tiivistetään hieman.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:360
+msgid ""
+"First turn the Snap Grid on again so any moves we make will keep objects on "
+"the grid.\n"
+msgstr ""
+"Ota taas kohdistusruudukko käyttöön, jotta objektit pysyvät linjassa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:839
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:362
+#, fuzzy
+msgid "Lets move the spur track to the left 3/4\"\n"
+msgstr "Siirrämme pistoraidetta vasemmalle 3/4 tuumaa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:861
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:364
+msgid "Now move the right side of the siding over.\n"
+msgstr "Siirretään liikennepaikan oikeaa puolta vasemmalle.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:881
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:366
+msgid "Now, adjust the ends of the mainline and siding tracks.\n"
+msgstr "Lyhennä nyt pääraide ja sivuraide sopivan mittaisiksi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:901
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:368
+msgid "And move the title over as well.\n"
+msgstr "Siirrä myös otsikkoa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:918
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:370
+msgid "Now you can print it.\n"
+msgstr "Nyt voit tulostaa sen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:371
+msgid "The cross-hairs on the LEDs and switch show the centers for drilling.\n"
+msgstr ""
+"LEDien ja kytkimien ristikkoviiva osoittaa niiden keskipisteet poraamista "
+"varten.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:33
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:373
+msgid ""
+"Pressing the <Delete> button lets you delete selected tracks from the "
+"layout.\n"
+msgstr ""
+"Poista-painikkeella voidaan poistaa valitut raiteet ratasuunnitelmsta.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:374
+msgid ""
+"First you select the tracks you want to delete, and then press the <Delete> "
+"button.\n"
+msgstr ""
+"Valitse ensin raideosat, jotka haluat poistaa ja paina sitten Poista-"
+"nappia.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:376
+msgid ""
+"If you delete a track connected to an easement curve, then the easement "
+"curve is deleted as well.\n"
+msgstr ""
+"Jos poistat raideosan, joka on liitetty kaarreloivennukseen, poistetaan myös "
+"kaarreloivennus.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:378
+msgid "You can use the <Undo> command to undelete tracks.\n"
+msgstr "Voit käyttää Kumoa-toimintoa palauttaaksesi poistamasi raideosat.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:67
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:380
+msgid ""
+"If you Left-Drag on the layout you can select all tracks within an area.\n"
+msgstr ""
+"Raahaamalla hiiren vasemmalla voit valita kaikki raideosat valitulta "
+"alueelta.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:381
+msgid ""
+"Note, only tracks within the selected area are deleted. Since the easement "
+"curve is connected to a deleted track, it is deleted as well.\n"
+msgstr ""
+"Huom: Vain valitulla alueella olevat raideosat poistetaan. Koska "
+"kaarreloivennus liittyy poistettavaan raideosaan, poistetaan se myös.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:80
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:384
+msgid ""
+"The demo also simulates entering values and selecting options on various "
+"dialogs.\n"
+msgstr ""
+"Tässä demossa simuloidaan myös arvojen syöttämistä ja valintojen tekemistä "
+"dialogeissa (ikkunoissa).\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:385
+msgid ""
+"This is simulated by drawing a rectangle around the control when values are "
+"entered or changed.\n"
+msgstr ""
+"Tämä esitetään piirtämällä nelikulmio sen kontrollin ympärille, jonka arvoja "
+"ollaan syöttämässä tai muuttamassa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:13
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:387
+msgid ""
+"Here we are going to make some changes to the Display dialog. Notice how "
+"this is simulated.\n"
+msgstr ""
+"Tässä teemme joitakin muutoksia Näyttö asetuksiin. Huomaa esitystapa.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:388
+msgid "First we are setting 'Draw Tunnel' to 'Normal'\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:390
+msgid "Now we're changing 'Label Font Size' to '56'\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:392
+msgid "We'll change some other options\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:394
+msgid ""
+"This effect is only used in demonstration mode. During normal operation you "
+"will not see this.\n"
+msgstr ""
+"Tämä tehoste on käytössä ainoastaan demo -tilassa. Normaalissa käyttötilassa "
+"näin ei ole.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:45
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:397
+msgid "Dimension Lines are used to mark the distances between two points.\n"
+msgstr ""
+"Mittajanoja käytetään merkitsemään kahden pisteen välisiä etäisyyksiä.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:398
+msgid ""
+"Here we will create a Dimension Line to show the separation between two "
+"tracks.\n"
+msgstr ""
+"Tässä luodaan mittajana näyttämään kahden raiteen välistä etäisyyttä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:400
+msgid ""
+"We might also want to measure the distance between two structures. In this "
+"case we will use a larger dimension line.\n"
+msgstr ""
+"Haluamme myös mitata kahden rakennuksen välisen etäisyyden. Tässä "
+"tapauksessa käytämme suurempaa mittajanaa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:402
+msgid ""
+"We can use the <Describe> command to change the position of the Dimension "
+"Line and the size of the numbers.\n"
+msgstr ""
+"Voimme käyttää määrittele-komentoa muuttaaksemme mittajanan sijaintia ja "
+"numeroiden kokoa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:162
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:405
+msgid ""
+"This example will show the effect of using easements while joining tracks.\n"
+msgstr ""
+"Tässä esimerkissä näytetään kaarreloivennuksen vaikutus yhdistettäessä "
+"raiteita.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:406
+#, fuzzy
+msgid "First, we will enable Cornu Easements and select Join\n"
+msgstr "Ensiksi otetaan kaarreloivennus käyttöön.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:408
+#, fuzzy
+msgid "First select one end of the track\n"
+msgstr "Ensin asetamme korkeustasot haarojen päihin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:410
+#, fuzzy
+msgid "Now the end of different track\n"
+msgstr "Siirretty päätepisteen taakse"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:412
+#, fuzzy
+msgid "You can reposition the ends by dragging them \n"
+msgstr ""
+"Voit tulostaa suunnittelemasi vaihteen tarkastaaksesi sen mitat ennen "
+"tallentamista.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:414
+msgid "When you are happy, Hit Enter or Space, if not use Esc\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:416
+msgid ""
+"The Curve is made up of Beziers parts that smooth the shape the best way it "
+"can be in the space available\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:87
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:418
+msgid "Now, we'll show traditional easements instead.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:142
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:420
+msgid ""
+"We've selected sharp easements. The minimum radius curve we can use will be "
+"9.75\"\n"
+msgstr ""
+"Olemme valinneet jyrkät kaarreloivennukset. Pienin käytettävissä oleva "
+"kaarresäde on 9,75 tuumaa.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:421
+msgid "Notice the label on the Easement button has changed to 'Sharp'.\n"
+msgstr ""
+"Huomaa että kaarreloivennus-painikkeen (Easements) tila on muuttunut "
+"\"jyrkäksi\" (Sharp).\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:157
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:423
+msgid ""
+"Note the connecting curve does not quite meet the straight tracks. This the "
+"'Offset'.\n"
+msgstr ""
+"Huomaa, ettei yhdistävä kaarre kohtaa aivan tarkasti suoria raiteita. Tämä "
+"on \"siirtymä\".\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:425
+msgid "Here the connecting curve is too small.\n"
+msgstr "Tässä yhdistävä kaarre on liian pieni.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:175
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:427
+msgid ""
+"The connecting curve is made of three tracks, the curve and two easement "
+"segments on each end.\n"
+msgstr ""
+"Yhdistävä kaarre on tehty kolmesta raideosasta: kaarteesta ja molemmissa "
+"päissä olevista kaarreloivennuksesta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:429
+#, fuzzy
+msgid ""
+"We have designed part of the layout with a siding, 2 branches and a spiral "
+"loop. We want to set elevations.\n"
+msgstr ""
+"Meillä on ratasuunnitelma jossa on sivuraide, kaksi haaraa ja silmukka, joka "
+"muodostaa radalle risteyksen.\n"
+" Haluamme asetella radan korkeustasot.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:430
+msgid "Note: make sure you set endpoint elevations on the Display dialog.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:122
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:432
+msgid "First we will set elevations at the end of the branches.\n"
+msgstr "Ensin asetamme korkeustasot haarojen päihin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:434
+msgid "We'll select the end of the top branch and set the Elevation to 4\"\n"
+msgstr ""
+"Valitsemme ylemmän haaran pään ja asetamme sille haluamamme korkeustason.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:435
+msgid "First, click on the End-Point.\n"
+msgstr "Klikkaa ensin päätepistettä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:142
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:437
+msgid "Next, pick Defined on the Elevation dialog Radio box.\n"
+msgstr ""
+"Seuraavaksi muuta korkeustasojen määrittely ikkunassa tyypiksi "
+"\"Määritelty\".\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:439
+msgid "And set the Elevation to 4.\n"
+msgstr "Ja aseta haluttu korkeustaso.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:441
+msgid "Now, select the other branch and set it's elevation to 2\"\n"
+msgstr "Vlitse nyt toinen haara ja aseta sen korkeustaso.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:443
+#, fuzzy
+msgid "We can move the Elevation label by using Ctrl-Left-Drag\n"
+msgstr ""
+"Voimme siirtää korkeustasojen merkintöjä raahaamalla hiiren oikealla "
+"painikkeella.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:445
+msgid "Now, we set the Elevation at one end of the Siding.\n"
+msgstr "Asetetaan nyt sivuraiteen toisen pään korkeustaso.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:209
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:215
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:448
+msgid "We want to find the elevations where the 2 tracks cross.\n"
+msgstr "Voimme selvittää korkeustasot raiteiden risteyskohdassa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:450
+msgid "We picked an End-Point on the upper track.\n"
+msgstr "Valitsimme raiteiden liitoskohdan ylemmältä radalta.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:451
+#, fuzzy
+msgid ""
+"XTrackCAD has computed the Elevation (2.33\") at this point based on the "
+"Elevation at the siding and a combination of the of the first Elevations.\n"
+msgstr ""
+"XTrackCAD on laskenut tälle pisteelle korkeustason aiemmin antamiemme "
+"korkeustasojen perusteella.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:452
+msgid ""
+"We create a Computed Elevation here that will be automatically adjusted "
+"whenever the other Elevations are changed.\n"
+msgstr ""
+"Luomme tähän \"lasketun\" korkeustason, joka päivitetään automaattisesti jos "
+"muita korkeustasoja muutetaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:454
+msgid ""
+"The Compute Elevation is based on Elevations at end of both of the "
+"branches. We may want to base the Elevation on only one branch. For "
+"example if one branch was the mainline we don't want the other branch "
+"affecting this Computed Elevation.\n"
+msgstr ""
+"Laskettu korkeustaso perustuu molempien haarojen korkeustasoihin. Saatamme "
+"haluta sitoa lasketun korkeustason vain yhteen haaraan. Jos esimerkiksi yksi "
+"haaroista on päärata, emme halua muiden haarojen vaikuttavan tähän "
+"laskettuun korkeustasoon.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:455
+msgid "We do this by Ignoring the branch we don't want.\n"
+msgstr "Teemme tämän hylkäämällä haaran, jota emme halua käyttää.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:456
+msgid "We'll ignore the lower branch.\n"
+msgstr "Hylkäämme alemman haaran.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:458
+#, fuzzy
+msgid ""
+"Notice at the endpoint where the tracks cross, we see the elevation has "
+"changed from 2.33 to 2.64.\n"
+msgstr ""
+"Huomaa kuinka risteyskohdan laskettu korkeustaso muuttui 2,34 tuumasta 2,64 "
+"tuumaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:264
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:460
+msgid "Now we want to know the elevation of the lower track.\n"
+msgstr "Nyt haluamme tietää alemman radan korkeustason.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:274
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:462
+#, fuzzy
+msgid "There is no endpoint on the lower track here.\n"
+msgstr "Risteyksen kohdalla ei ole raiteiden liitosta.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:463
+#, fuzzy
+msgid ""
+"Use Shift-Left-Click to Split the track and create an endpoint we can use "
+"for an elevation,\n"
+msgstr ""
+"Paina vaihto-näppäintä ja klikkaa hiiren vasemmalla painikkeella rataa "
+"luodaksesi liitoskohdan korkeustasoja varten\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:287
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:465
+msgid "and create another Computed Elevation point.\n"
+msgstr "ja luo sen kohdalle toinen laskettu korkeustaso.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:467
+#, fuzzy
+msgid "Now we want to label the grade on this section of track.\n"
+msgstr "Nyt haluamme merkitä raiteen tämän kohdan nousukulman.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:311
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:469
+#, fuzzy
+msgid ""
+"Again, since there is no endpoint nearby, we split the track to create an "
+"endpoint we can use,\n"
+msgstr ""
+"Taaskaan ei ole sopivaa raideliitosta lähistöllä, joten pilkomme raiteen\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:321
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:471
+#, fuzzy
+msgid "and create a grade marker.\n"
+msgstr "ja luomme uuteen liitoskohtaan nousukulman merkinnän.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:335
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:473
+msgid "Note the marker has an arrow pointing in the upwards direction.\n"
+msgstr "Huomaa kuinka nuolella ilmaistaan nousun suunta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:344
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:475
+msgid ""
+"The last thing we want to do is to create a Station label that we'll use in "
+"the <Profile> command.\n"
+msgstr ""
+"Lopuksi haluamme vielä luoda aseman merkinnän, jota käytämme myöhemmin "
+"rataprofiilissa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:358
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:477
+msgid "Now, set the Elevation to Station and enter the its name.\n"
+msgstr "Valitse \"Asema\" ja syötä tekstikenttään aseman nimi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:376
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:480
+msgid ""
+"XTrackCAD can help find tracks that are curved too sharply or are too "
+"steep. These tracks are Exception tracks and are drawn in the Exception "
+"track color.\n"
+msgstr ""
+"XTrackCAD auttaa löytämään raiteet, jotka ovat kaartuvat liian jyrkästi tai "
+"ovat liian jyrkkiä. Näitä kutsutaan erityisraiteiksi ja ne piirretään omalla "
+"värillään.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:481
+#, fuzzy
+msgid ""
+"In this example we have a curved track with radius of 9 inches and a "
+"straight track with a grade of 3.8 percent.\n"
+msgstr ""
+"Tässä esimerkissä meillä on karre, jonka säde on 9 tuumaa ja suora jonka "
+"nousukulma on 3,8%.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:482
+msgid " \n"
+msgstr " \n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:484
+#, fuzzy
+msgid ""
+"The Layout dialog shows the Minimum Track Radius is 9 inches and the Maximum "
+"Track Grade is 5 percent.\n"
+msgstr ""
+"Ohjelman ominaisuuksissa on määritelty pienimmäksi kaarresäteeksi 9 tuumaa "
+"ja suurimmaksi nousukulmaksi 5%.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:486
+msgid ""
+"If we make the curved track sharper it will be drawn in the Exception "
+"color.\n"
+msgstr ""
+"Jos muutamme kaarretta jyrkemmäksi, se piirretään erityisraiteiden värillä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:61
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:488
+msgid ""
+"If we make the straight track steeper it will also be drawn in the Exception "
+"color.\n"
+msgstr ""
+"Jos teemme suorasta raiteesta jyrkemmän, myös se piirretään erityisraiteiden "
+"värillä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:78
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:490
+msgid ""
+"You can change the Exception color on the Colors dialog from the Options "
+"menu.\n"
+msgstr "Erityisraiteiden väritystä voi muuttaa Asetukset|Värit valikosta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:85
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:493
+#, fuzzy
+msgid ""
+"The unconnected endpoint of any track can also be extended with the <Modify> "
+"command using Right-Drag.\n"
+msgstr ""
+"Minkä tahansa raiteen irrallista päätä voi pidentää Muokkaa-komennolla "
+"raahaamalla hiiren oikealla painikkeella.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:495
+#, fuzzy
+msgid "Select the endoint and Right-Drag.\n"
+msgstr "Valitse päätepiste ja raahaa oikealla painikkeella.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:497
+msgid "The extending track can be straight...\n"
+msgstr "Jatke voi olla suora...\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:44
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:499
+msgid "... or curved.\n"
+msgstr "...tai kaareva.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:501
+#, fuzzy
+msgid ""
+"If you extend a straight or curved flex track and enable Easements then an "
+"Easement curve will be automatically generated when you extend the track.\n"
+msgstr ""
+"Jos jatkat suoraa tai kaarevaa fleksiraidetta ja kaarreloivennus on "
+"käytössä, luodaan automaattisesti kaarreloivennus pidentämisen yhteydessä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:65
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:124
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:504
+msgid ""
+"The <Flip> command will create a mirror image of the selected objects.\n"
+msgstr "Peilaus-komento luo peilikuvan valitusta objektista.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:506
+msgid "After selecting the object, drag a line which will form the mirror.\n"
+msgstr "Valittuasi objektin, raahaa hiirellä peilauslinja.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:140
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:508
+msgid "The mirror line does not have to be vertical or horizontal.\n"
+msgstr "Peilauslinjan ei tarvitse olla vaaka- tai pystysuuntainen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:149
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:510
+msgid "You can also flip any number of objects.\n"
+msgstr "Voit myös peilata useita objekteja.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:511
+msgid "Watch what happens to the structure and turnout titles.\n"
+msgstr "Katso mitä tapahtuu rakennusten ja vaihteen otsikoille.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:513
+msgid ""
+"Note that the turnout title has been changed from the Medium Right to Medium "
+"Left. When turnouts are flipped, XTrackCAD will try to find a matching "
+"turnout and if found will change the name.\n"
+msgstr ""
+"Huomaa, että vaihteen otsikko muutettiin oikeasta (right) vasemmaksi (left). "
+"Kun vaihteita peilataan, XTrackCAD yrittää löytää vastaavan toispuoleisen "
+"vaihteen ja sellaisen löytäessään vaihtaa nimen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:515
+msgid ""
+"Structures do not have Right and Left hand versions. Their title is changed "
+"to indicate that they were flipped.\n"
+msgstr ""
+"Rakennuksilla ei ole oikeaa ja vasenta versiota. Niiden otsikko muutetaan "
+"siten, että se kuvaa objektin olevan peilattu (flipped).\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:516
+msgid "You can use the <Describe> command to change their title.\n"
+msgstr "Voit käyttää määrittele-komentoa muuttaaksesi niiden otsikoita.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:187
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:519
+msgid ""
+"The <Group> and <Ungroup> commands (on the Tools menu) are a powerful way to "
+"manipulate Turnout and Structure definitions.\n"
+msgstr ""
+"Ryhmittele ja rymittelyn purku komennot (Hallinta-valikossa) ovat tehokas "
+"keino käsitellä raideosien ja rakennusten määrittelyjä.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:520
+msgid "We'll start with a simple turnout and add a switch machine.\n"
+msgstr "Aloitamme yksinkertaisesta vaihteesta ja vaihdekoneistosta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:55
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:522
+msgid ""
+"Now that we have drawn a rough outline of a switch machine we will group it "
+"with the turnout definition.\n"
+msgstr ""
+"Nyt kun olemme piirtäneet karkean hahmotelman vaihdekoneistosta, "
+"ryhmittelemme sen uudeksi vaihdemäärittelyksi.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:523
+msgid "First we Select the objects in the new definition.\n"
+msgstr "Ensin valitsemme objektit uutta määrittelyä varten.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:68
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:525
+msgid "Now do the <Group> command.\n"
+msgstr "Nyt suoritetaan ryhmittely-komento.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:527
+msgid ""
+"The <Group> command dialog shows the Title (Manufacturer, Description and "
+"Part Number) of the new definition. This information is taken from the "
+"Selected objects you are grouping.\n"
+msgstr ""
+"Ryhmittely-komennon ikkunassa näytetään valmistaja, kuvaus sekä tuotenumero. "
+"Nämä tiedot on saatu ryhmittelyä varten valituista objekteista.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:529
+msgid ""
+"The 'Replace with new group?' toggle will replace the Selected objects with "
+"the new definition.\n"
+msgstr ""
+"Jos \"Korvaa uudella ryhmällä?\" on valittuna, ryhmittelyä varten valitut "
+"objektit korvataan juuri luodulla uudella ryhmällä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:88
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:531
+msgid ""
+"If we don't change the Title then the new definition will replace the "
+"existing definition.\n"
+msgstr ""
+"Jos otsikkotietoja (valmistaja, kuvaus ja tuotenumero) ei muuteta, korvaa "
+"tämä uusi määrittely jo olemassa olevan saman nimisen määrittelyn.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:532
+msgid "We'll give this definition a new Description.\n"
+msgstr "Annamme tälle määrittelylle uuden kuvauksen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:534
+msgid "We're done with this definition. Press Ok.\n"
+msgstr "Määrittely on valmis ja se hyväksytään painamalla Ok.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:106
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:536
+msgid "You will see the updated image on the HotBar.\n"
+msgstr "Näet päivitetyn kuvan Hot Barissa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:113
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:538
+msgid ""
+"The <Ungroup> command replaces any Selected turnouts or structures with "
+"their parts.\n"
+msgstr ""
+"Ryhmittelyn purku komento korvaa valittut vaihteet tai rakennukset niiden "
+"osilla.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:539
+msgid ""
+"Structures and non-track segements of turnouts are composed of Lines, "
+"Circles and other shapes. In this turnout these are the two lines and the "
+"two squares.\n"
+msgstr ""
+"Rakennukset ja muut lohkot, jotka eivät ole raiteita, muodostuvat viivoista "
+"ympyröistä ja muista muodoista. Tässä vaihteessa on kaksi viivaa ja kaksi "
+"nelikulmiota.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:540
+msgid ""
+"We will Ungroup this turnout and see how the individual parts can be "
+"changed.\n"
+msgstr ""
+"Puramme tämän vaihteen ryhmittelyn nähdäksemme kuinka yksittäisiä osia "
+"voidaan muuttaa.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:541
+msgid "First Select the turnout and then Ungroup it.\n"
+msgstr "Ensin valitsemme vaihteen ja sitten puramme ryhmittelyn.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:543
+msgid "Notice that the Title now indicates the turnout is Ungrouped.\n"
+msgstr "Huomaa että otsikko näyttää vaihteen ryhmittelyn olevan purettu.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:544
+msgid "Hit Escape to deselect everything.\n"
+msgstr "Paina Esc-näppäintä poistaaksesi valinnat objekteista.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:138
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:546
+msgid "Now Select the lines and squares.\n"
+msgstr "Valitse nyt viivat ja nelikulmiont.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:548
+msgid ""
+"We could modify these object or add new ones. For now we'll just delete "
+"them.\n"
+msgstr ""
+"Voisimme muokata näitä objekteja tai lisätä uusia. Nyt kuitenkin vain "
+"poistamme ne.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:550
+msgid "And move the Label out of the way.\n"
+msgstr "Ja siirrämme otsikon pois tieltä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:181
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:552
+msgid "Notice that the turnout has been broken into three parts.\n"
+msgstr "Huomaa että vaihde on purettu kolmeen osaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:203
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:554
+msgid ""
+"Two ends of the turnout, from the frog to the end of the diverging leg and "
+"from the points to the left, are now straight track sections.\n"
+msgstr ""
+"Haarautuvan raiteen takajatkos sekä vaihteen etujatkos ovat nyt suoria "
+"raideosia.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:555
+msgid ""
+"The a turnout is made of a number of individual straight and curved track "
+"segements. This turnout had four segments:\n"
+msgstr ""
+"Vaihde on tehty useasta erillisestä suorasta ja kaarevasta raideosasta. Tämä "
+"vaihde koostui neljästä osasta:\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:556
+msgid " 1 a short straight segment to the left of the points\n"
+msgstr " 1 Lyhyestä suorasta etujatkoksesta.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:557
+msgid " 2 a long straight segment to the right of the points\n"
+msgstr " 2 Pitkästä suorasta raiteesta.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:558
+msgid " 3 a curved segment from the points to the frog\n"
+msgstr " 3 Kaarteesta kielten päistä risteyskappaleeseen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:559
+msgid ""
+" 4 a straight segment from the frog to the end of the diverging leg.\n"
+msgstr " 4 Haarautuvan raiteen suorasta takajatkoksesta.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:560
+msgid "The first and last segments have be converted to straight tracks.\n"
+msgstr "Ensimmäinen ja viimeinen osa on muutettu suoriksi raideosiksi.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:561
+msgid ""
+"The second and third segments form the the body of the turnout and can not "
+"be ungrouped further.\n"
+msgstr ""
+"Toinen ja kolmas osa muodostavat vaihteen rungon, eikä niiden ryhmittelyä "
+"voi purkaa tämän pidemmälle.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:562
+msgid ""
+"You can later Group this turnout with the straight segments to recreate the "
+"turnout definition. You can also add other track segments to turnout "
+"definitions.\n"
+msgstr ""
+"Voit myöhemmin ryhmitellä tämän vaihteen suorien raideosien kanssa ja luoda "
+"vaihteen määrittelyn uudelleen. Voit myös lisätä muita raideosia vaihteiden "
+"määrittelyihin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:247
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:564
+msgid "Now, create a track and place the new turnout on it.\n"
+msgstr "Nyt luodaan raide ja lisätään siihen uusi vaihde.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:265
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:566
+msgid "Now suppose we want to replace the black squares with green circles.\n"
+msgstr ""
+"Oletetaan, että haluamme vaihtaa mustien nelikulmioiden paikalle vihreät "
+"ympyrät.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:567
+msgid "First we Select the turnout.\n"
+msgstr "Ensin valitsemme vaihteen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:277
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:569
+msgid "And now Ungroup it (from the Tools Menu)\n"
+msgstr "Ja sitten puramme ryhmittelyn.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:282
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:571
+msgid ""
+"Notice that the name has changed to indicate the turnout was Ungrouped.\n"
+msgstr "Huomaa kuinka nimi on muutettu kuvaamaan vaihteen purkua.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:288
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:573
+msgid ""
+"Now, hit escape to deselect everything and then Select the 2 squares and "
+"delete them.\n"
+msgstr ""
+"Paina Esc-näppäintä poistaaksesi valinnat objekteista ja valitse sitten "
+"nelikulmiot ja poista ne.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:575
+msgid "Now draw the green circles...\n"
+msgstr "Piirrä nyt vihreät ympyrät...\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:326
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:577
+msgid "and Group the new definition.\n"
+msgstr "ja ryhmittele tämä uusi määrittely.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:345
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:579
+msgid ""
+"Notice that the turnout in the HotBar is angled the same as the turnout on "
+"the layout. Make sure your new definition is rotated the way you want it.\n"
+msgstr ""
+"Huomaa että vaihteen kuva Hot Barissa on nyt samassa kulmassa kuin vaide "
+"ratasuunnitelmassa. Ole siis huolellinen tehdessäsi uusia määrittelyitä, "
+"jotta ne ovat haluamassasi kulmassa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:384
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:581
+msgid "We can also create turnouts from simple straight and curved tracks.\n"
+msgstr ""
+"Voimme myös luoda vaihteita yksinkertaisista suorista ja kaarevista "
+"raideosista.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:582
+#, fuzzy
+msgid "We'll create two tracks that have a common endpoint.\n"
+msgstr "Luomme kaksi raidetta, joilla on yhteinen päätepiste.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:395
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:584
+msgid ""
+"When we create the curve from the straight track endpoint we need to hold "
+"down the <Shift> key to prevent XTrackCAD from trying to join the two "
+"tracks.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:413
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:586
+msgid "At this point we can modify the tracks if necessary.\n"
+msgstr "Tässä vaiheessa voimme muokata raiteita, jos se on tarpeen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:587
+msgid "We will use the <Describe> command to change the tracks.\n"
+msgstr "Käytämme kuvaile-komentoa muuttaaksemme raiteiden ominaisuuksia.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:425
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:589
+msgid "We'll make the Length 7.5\".\n"
+msgstr "Muutamme pituutta.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:590
+#, fuzzy
+msgid ""
+"If we change the Length, each End-Point will be moved to shorten the track. "
+"We want to just move the Right End-Point. To control this, change the Lock "
+"to First which means the Left End-Point will be unchanged when we change the "
+"length (or angle) of the track.\n"
+msgstr ""
+"Jos nyt vain muutamme pituutta, lyhennetään raidetta molemmista päistä. "
+"Haluamme muuttaa raiteen pituutta vain oikeasta päästä, vaihdamme ensin "
+"kiertopisteeksi ensimmäisen pään, jolloin valittu kiertopiste pysyy "
+"paikoillaan muutettaessa raiteen pituutta (tai kulmaa).\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:435
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:592
+msgid "Now when change the Length only the Right End-Point will move.\n"
+msgstr "Nyt kun muutamme pituutta, vain oikeaa päätä lyhennetään.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:446
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:594
+msgid "Now let's look at the curved track.\n"
+msgstr "Katsotaanpa sitten kaarevaa raidetta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:596
+#, fuzzy
+msgid ""
+"Here the Left End-Point (which we don't want to move) is the Second End-"
+"Point, so we'll make that the Lock.\n"
+msgstr ""
+"Tässä vasen päätepiste (jota emme halua siirtää) on toinen päätepiste, joten "
+"valitsemme sen kiertopisteeksi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:598
+#, fuzzy
+msgid "We want the curve to have a radius of 20\" and an angle of 17.5°.\n"
+msgstr "Haluamme kaarteelle tietyn säteen ja kulman.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:599
+msgid "First change the Radius...\n"
+msgstr "Ensin muutetaan säde...\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:473
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:601
+msgid "and the the Angular Length.\n"
+msgstr "ja sitten kulma.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:481
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:603
+msgid "Now Select both tracks...\n"
+msgstr "Valitse molemmat raiteet...\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:497
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:605
+msgid "and Group them.\n"
+msgstr "ja ryhmittele ne.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:508
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:607
+msgid ""
+"If the two tracks have a common End-Point then they will form a Turnout and "
+"can be switched with the <Train> command. Otherwise they will just be two "
+"track segments grouped together.\n"
+msgstr ""
+"Jos molemmilla raiteilla on yhteinen päätepiste, ne muodostavat vaihteen, "
+"jonka asentoa voidaan vaihtaa simuloitaessa junien ajoa. Muussa tapauksessa "
+"ne ovat vain kaksi raideosaa, jotka ovat ryhmitelty keskenään.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:515
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:609
+msgid ""
+"We have created a left hand turnout and we also want a right hand version.\n"
+msgstr ""
+"Olemme luoneen vasemman puoleisen vaihteen ja haluamme myös oikean puoleisen "
+"version.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:610
+msgid "We'll use the <Flip> command.\n"
+msgstr "Käytämme peilaustoimintoa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:528
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:612
+msgid ""
+"Drag a horizontal line that will be the mirror for the <Flip> command.\n"
+msgstr "Piirrä peilayslinja vaakatasoon.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:538
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:614
+msgid "Notice the title has changed to Flipped Left.\n"
+msgstr "Huomaa että otsikko ilmaisee vaihteen olevan peilikuva.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:615
+msgid "Now Group the turnout.\n"
+msgstr "Ryhmittele.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:547
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:617
+msgid "We'll change the Title and Part No for the new defintion.\n"
+msgstr "Muutamme kuvausta ja tuotenumeroa uutta määrittelyä varten.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:560
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:619
+msgid ""
+"To Remove the definitions, use the Custom Management dialog on the Tools "
+"menu.\n"
+msgstr ""
+"Poistaaksesi määrittelyt, käytä \"Omat raideosat ja kalusto\" ikkunaa "
+"Hallinta valikosta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:565
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:621
+msgid "Select the definitions you added and Delete them.\n"
+msgstr "Valitse lisäämäsi määrittelyt ja poista ne.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:578
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:624
+msgid ""
+"Now we will create a helix in the corner of the layout connected to 2 "
+"tracks.\n"
+msgstr ""
+"Nyt luomme helixin (kierrenousun) ratasuunnitelman nurkkaukseen ja "
+"yhdistämme sen kahteen raiteeseen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:626
+#, fuzzy
+msgid ""
+"We will be creating a helix with a Elevation Difference of 12 inches, Grade "
+"of 1.5 percent and limit the Vertical Separation to at least 2 inches.\n"
+msgstr ""
+"Luomme spiraalin, jonka korkeusero on 12 tuumaa, luokka on 1,5 prosenttia ja "
+"joka rajoittaa pystysuoran erottelun vähintään 2 tuumaan.\n"
+"\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:628
+msgid "First set the Elevation Difference to 12\"\n"
+msgstr "Ensin asetamme korkeuseron 12 tuumaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:43
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:630
+msgid "Next set the Vertical Separation to 2\"\n"
+msgstr "Sauraavaksi kerrosten välinen etäisyys 2 tuumaksi.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:631
+msgid "Notice how this causes the number of Turns to be set to 6\n"
+msgstr "Huomaa kuinka tämä muuttaa kierrosten lukumääräksi 6.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:52
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:633
+#, fuzzy
+msgid "Next set the Grade to 1.5 percent\n"
+msgstr "Seuraavaksi nousukulmaksi 1,5 prosenttia\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:634
+msgid "Notice how this causes the Radius to change.\n"
+msgstr "Huomaa, kuinka säde muuttuu.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:60
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:636
+msgid ""
+"Setting these values changes the Radius to 21.2\" and the number of Turns to "
+"6.\n"
+msgstr ""
+"Näillä arvoilla säde muuttui 21,2 tuumaksi ja kierrosten lukumäärä 6:ksi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:66
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:638
+msgid ""
+"Now we specify the Angular Separation between the enterance and exit to the "
+"helix.\n"
+msgstr "Nyt määrittelemme helixin sisäänkäyntien välisen kulman.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:639
+msgid "Note: this will decrease the Radius slightly.\n"
+msgstr "Huom: Tämä pienentää sädettä hieman.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:76
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:641
+msgid "Next we can fine tune the helix by decreasing the Radius to 15\".\n"
+msgstr ""
+"Seuraavaksi voimme hienosäätää helixiä asettamalla säteeksi 15 tuumaa.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:642
+msgid "Note the change to the Grade.\n"
+msgstr "Huomaa nousukulman muutos.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:85
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:644
+#, fuzzy
+msgid ""
+"Lastly change the Vertical Separation to 2.5 inches. The number of Turns "
+"will change to 4 and the grade increase to almost 3 percent.\n"
+msgstr ""
+"Viimeiseksi muutamme kerrosten välisen etäisyyden 2,5 tuumaksi. Kierrosten "
+"lukumäärä muuttuu 4:ksi ja nousukulma kasvaa lähes 3 prosenttiin.\n"
+"\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:645
+msgid ""
+"Note: the Vertical Separation will be increased. This value is the "
+"Elevation Difference (12.0) divided by the total number of turns. The total "
+"number of turns is 4.25: 4 whole Turns plus a quarter turn for the Angular "
+"Separation.\n"
+msgstr ""
+"Huom: Kerrosten välistä etäisyyttä kasvatetaan. Tämä arvo on "
+"kokonaiskorkeusero (12,0) jaettuna kierrosten kokonaislukumäärällä. "
+"Kierrosten kokonaislukumäärä on 4,25: 4 täyttä kierrosta sekä neljännes "
+"kierros johtuen sisäänkäyntien välisestä kulmasta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:94
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:648
+msgid ""
+"Now that the helix parameters are set we can place the helix on the layout.\n"
+msgstr ""
+"Nyt kun helixin parametrit on aseteltu, voimme asettaa helixin "
+"ratasuunnitelmaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:650
+msgid ""
+"Next, join the 2 straight tracks to the helix in the same way we join to a "
+"circle.\n"
+msgstr ""
+"Seuraavaksi yhdistetään suorat raiteet helixiin aivan kuten ympyrään.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:145
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:652
+msgid ""
+"Notice that the length has increased because we have more than 4 turns in "
+"the helix. It is closer to 4.25 turns.\n"
+msgstr ""
+"Huomaa kuinka pituus kasvoi hieman koska helixissä on yli 4 kierrosta. "
+"Kierrosten lukumäärä on lähempänä 4,25:tä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:155
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:654
+msgid ""
+"Next, we assign elevations to the 2 End-Points of the helix. This will "
+"determine the grade and separation between the helix coils.\n"
+msgstr ""
+"Seuraavaksi määrittelemme korkeustason helixin toiselle päätepisteelle. Tämä "
+"määrittää nousukulman ja kierteiden välisen eron.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:655
+msgid ""
+"Note: we could set the elevations anywhere along the connecting tracks "
+"instead. XTrackCAD treats a helix as a single length of track for "
+"elevations.\n"
+msgstr ""
+"Huom: Voisimme määrittää korkeustason missä tahansa helixiin yhdistetyllä "
+"raiteella. Korkeustasojen kannalta XTrackCAD käsittelee helixiä yhtenä "
+"tietyn mittaisena raiteena.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:176
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:657
+#, fuzzy
+msgid ""
+"We have set the elevations to 1 inch and 13 inches to produce a grade of 3.0 "
+"percent with 2.8 inches between coils.\n"
+msgstr ""
+"Asetimme korkeustasot 1 ja 13 tuumaksi luodaksemme 3,0 prosentin nousukulman "
+"ja 2,8 tuuman kerrosvälin.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:658
+msgid ""
+"You can use the <Describe> command to change the number of Turns or the "
+"Elevations at either end of the Helix. This will affect the Grade and "
+"Vertical Separation.\n"
+msgstr ""
+"Voit käyttää määrittele-komentoa muuttaaksesi kierrosten lukumäärää tai "
+"korkeustasoja kummassa tahansa päässä helixiä. Tämä vaikuttaa nousukulmaan "
+"ja kerrosten väliseen tilaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:660
+msgid "The helix description can be moved by the <Move Label> command.\n"
+msgstr "Helixin kuvausta voidaan siirtää aivan kuten muitakin merkintöjä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:663
+msgid ""
+"In addition to using the turnout definitions you can create 'Hand Laid "
+"Turnout'.\n"
+msgstr ""
+"Valmiiden vaihdemäärittelyjen lisäksi voit luoda \"käsin asetellun "
+"vaihteen\".\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:664
+msgid "This is two step process:\n"
+msgstr "Tämä on kaksiosainen prosessi:\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:666
+msgid "1 - click on the frog and drag away to set the frog angle\n"
+msgstr "1 - klikkaa risteyskappaleen kohdalle ja raahaa asettaaksesi kulman.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:29
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:668
+msgid ""
+" Hint: the further you drag from the frog, the more accurate the angle.\n"
+msgstr ""
+" Vinkki: Mitä kauemmas raahaat, sitä tarkemmin saat kulman asetelluksi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:670
+msgid "2 - click and drag to set the position of the points\n"
+msgstr "2 - Klikkaa ja raahaa asetellaksesi kielten päät.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:42
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:672
+msgid "We can create Hand Laid Turnouts on curved tracks.\n"
+msgstr "Voimme luoda käsin asetellun vaihteen myös kaarteeseen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:58
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:674
+msgid "A Hand Laid Turnout is composed of several parts.\n"
+msgstr "Käsin asetellut vaihteet koostuvat useasta osasta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:67
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:676
+msgid "The actual Turnout is a short portion at the points.\n"
+msgstr "Varsinainen vaihde on lyhyt osa kielten päiden luona.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:77
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:678
+msgid "The other parts are various straight and curved segments.\n"
+msgstr "Muut osat ovat suoria ja kaarevia raideosia.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:680
+msgid "The new curved turnout is also composed of several segments.\n"
+msgstr "Myös kaarrevaihde koostuu useasta osasta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:107
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:683
+msgid "Welcome to the XTrackCAD demonstration.\n"
+msgstr "Tervetuloa XTrackCADin havaintoesitykseen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:684
+msgid ""
+"This will show some the features of XTrackCAD in an automated presentation. "
+"This window contains a number of controls and a message area (which I hope "
+"you are reading now). \n"
+msgstr ""
+"Havaintoesitykset näyttävät joitakin XTrackCADin ominaisuuksia "
+"automaattisina esityksinä. Tämä ikkuna sisältää joitakin kontrolleja sekä "
+"viestialueen, jota juuri nyt luet.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:685
+msgid "The controls are:\n"
+msgstr "Kontrollit ovat:\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:686
+msgid "Step - advances to the next step of the demo.\n"
+msgstr "Seuraava vaihe - Siirtyy seuraavaan vaiheeseen demossa.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:687
+msgid "Next - skips ahead to the next demo.\n"
+msgstr "Seuraava - Siirry seuraavaan demoon.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:688
+msgid "Quit - exits the demo and returns to XTrackCAD.\n"
+msgstr "Lopeta - Pysäyttää demon ja palaa XTrackCADin normaaliin tilaan.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:689
+msgid "Speed - controls the speed of the demo.\n"
+msgstr "Nopeus - Säätelee demojen suoritusnopeutta.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:690
+msgid "Click Step now for the next message.\n"
+msgstr ""
+"Klikkaa nyt Seuraava vaihe -painiketta katsoaksesi seuraavan viestin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:692
+msgid ""
+"If this is the first time you have used the demo you may want to rearrange "
+"the windows so the demo window does not obscure the main window.\n"
+msgstr ""
+"Jos tämä on ensimmäinen kerta, kun käytät näitä havaintoesityksiä, saatat "
+"haluta järjestellä ikkunat siten, ettei demo-ikkuna peitä pääikkunaa "
+"oleellisesti.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:693
+msgid ""
+"You can move the demo window now by dragging on the title bar at the top of "
+"the window. I suggest you move it to the top of your screen.\n"
+msgstr ""
+"Voit siirrellä demo-ikkunaa raahaamalla otsikkopalkista. Ehdotan, että "
+"siirrät demo-ikkunan näyttösi yläosaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:695
+msgid ""
+"The various controls are disabled when it would be inappropiate to click on "
+"them. When the demo is running the Step button is disabled. When the demo "
+"is paused the Step button is enabled and you can click it when you are ready "
+"to view the next part of the demo.\n"
+msgstr ""
+"Useimmat kontrollit eivät ole käytettävissä oltaessa demo-tilassa, jolloin "
+"niitä ei voi painella tarpeettomasti. Demon ollessa käynnissä Seuraava vaihe "
+"-painike ei ole käytettävissä. Kun demo on pysähdyksissä Seuraava vaihe -"
+"painike on käytettävissä, jolloin voit siirtyä sen avulla demossa seuraavaan "
+"vaiheeseen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:696
+msgid "You can click on Quit to return to XTrackCAD at any time.\n"
+msgstr ""
+"Voit painaa Lopeta -painiketta milloin tahansa palataksesi XTrackCADin "
+"perustilaan.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:697
+msgid "You can adjust the speed of the demonstration with the Speed control.\n"
+msgstr ""
+"Voit säätää demojen suoritusnopeutta Nopeus -valintaluettelon avulla.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:60
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:699
+msgid "The demos are designed to fit within a certain sized window.\n"
+msgstr ""
+"Demot on suunniteltu niin, että ne mahtuvat tietyn kokoiseen ikkunaan.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:700
+msgid ""
+"For best results, change the size of the main XTrackCAD window so the box "
+"shape is completely visible.\n"
+msgstr ""
+"Parhaan tuloksen saavuttamiseksi, muuta XTrackCADin pääikkunan kokoa siten, "
+"että nelikulmio on kokonaan näkyvissä.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:701
+msgid "You can do this by clicking and dragging on a corner of the window.\n"
+msgstr ""
+"Voit tehdä tämän klikkaamalla ja raahaamalla hiidella ikkunan reunoista tai "
+"nurkasta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:67
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:704
+msgid "This is the end of the introductory demo.\n"
+msgstr "Tähän päättyy johdanto.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:705
+msgid ""
+"Please click Step for the next demo or click Quit to return to XTrackCAD.\n"
+msgstr ""
+"Paina Seuraava vaihe tai Seuraava, siirtyäksesi seuraavaan demoon tai Lopeta "
+"palataksesi XTrackCADin perustilaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:707
+msgid ""
+"You can also join to and from circles. This will change the circles to "
+"curves.\n"
+msgstr ""
+"Voit myös yhdistää alkaen ympyrästä ja päättyen ympyrään. Tämä muuttaa "
+"ympyrät kaarteiksi.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:708
+msgid "In this example we will join two circles.\n"
+msgstr "Tässä esimerkissä yhdistetään kaksi ympyrää.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:710
+msgid ""
+"Here we've selected points on the two circles. The direction of the "
+"connections (whether clockwise or counter clockwise) is controlled by where "
+"on the circle you select the connection points.\n"
+msgstr ""
+"Nyt olemme valinneet pisteet molemmilta ympyräraiteilta. Liitoksen suuntaa "
+"kontrolloidaan sen mukaan mistä kohtaa ympyröitä liitoskohdat valitaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:133
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:152
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:713
+msgid "Now let's try a cross connection.\n"
+msgstr "Kokeillaanpa risteävää liitosta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:246
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:715
+msgid ""
+"Note that the connection is from different 'ends' of the circle than in the "
+"last example.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:22
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:717
+msgid "This examples shows joining tracks whose End-Points are aligned.\n"
+msgstr ""
+"Tämä esimerkki näyttää kahden kohdakkain olevan päätepisteen yhdistämisen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:718
+msgid ""
+"Note the 2 pairs of tracks have End-Points that are close and aligned but "
+"not connected.\n"
+msgstr ""
+"Huomaa, että molemmissa raidepareissa raiteet ovat aivan lähekkäin ja "
+"samansuuntaisesti, mutta toisistaan irrallisia.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:720
+msgid "The first case joins the curve and straight track.\n"
+msgstr "Ensin yhdistetään kaarre suoraan raiteeseen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:722
+msgid "The second case will join the two straight tracks.\n"
+msgstr "Seuraavaksi yhdistetään kaksi suoraa raidetta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:724
+msgid "Note that the two straight tracks were combined to form one track.\n"
+msgstr ""
+"Huomaa, että kaksi suoraa raidetta yhdistettiin siten, että ne muodostavat "
+"nyt yhden raideosan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:55
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:727
+#, fuzzy
+msgid ""
+"The <Join> command can also join straight and curved tracks (in either "
+"order).\n"
+msgstr ""
+"Yhdistä-komennolla voi liittää suoran ja kaarevan raiteen (kummassa tahansa "
+"järjestyksessä).\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:728
+#, fuzzy
+msgid "We will enable Cornu easements\n"
+msgstr "Ensiksi otetaan kaarreloivennus käyttöön.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:730
+#, fuzzy
+msgid "A connecting cornu track is drawn between the two tracks.\n"
+msgstr "Yhdistävä raide piirretään yhdistettävien raiteiden väliin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:41
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:732
+msgid ""
+"Notice that the curved track is extended as the connection point moves past "
+"the End-Point.\n"
+msgstr ""
+"Huomaa kuinka kaarevaa raidetta jatketaan liitoskohdan siirtyessä "
+"päätepisteen ohi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:734
+#, fuzzy
+msgid ""
+"Here the connection makes the curved track wrap around. This is not a "
+"useful shape, there is a discontinuity at the end. \n"
+msgstr "Tässä liitos saa kaarevan raiteen kiepsahtamaan ympäri.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:735
+msgid "Adjusting the end point will fix it. \n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:64
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:18
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:738
+msgid "The <Join> command can move one group of tracks to join with another.\n"
+msgstr ""
+"Yhdistä-komento pystyy siirtämään raiteita yhdistääkseen ne toisiin "
+"raiteisiin.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:739
+#, fuzzy
+msgid ""
+"First <Select> the tracks you want to move with Ctrl so that they are both "
+"selected.\n"
+msgstr "Valitse ensin raiteet, jotka haluat siirtää.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:36
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:741
+msgid "Click <Join> and Shift-Left-Click on the two End-Points.\n"
+msgstr ""
+"Klikkaa Yhdistä ja sen jälkeen vaihto-näppäintä painettuna klikkaa hiiren "
+"vasemmalla painikkeella yhdistettäviä päätepisteitä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:743
+msgid "The selected tracks are moved into position.\n"
+msgstr "Valitut raiteet siirrettiin paikoilleen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:745
+#, fuzzy
+msgid ""
+"Two straight tracks can be joined by selecting the two endoints. The "
+"selected endpoints will be those closest to the cursor when the track is "
+"selected.\n"
+msgstr ""
+"Kaksi suoraa raidetta yhdistetään valitsemalla kaksi päätepistettä. Valittu "
+"päätepiste on se, joka on lähempänä hiiren osoitinta raidetta valittaessa.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:746
+#, fuzzy
+msgid "First, we will select Easements None and then select Join\n"
+msgstr "Ensin asetamme korkeustasot haarojen päihin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:748
+#, fuzzy
+msgid "Now we select two points on the tracks\n"
+msgstr "Valitse nyt toisen haaran pää.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:36
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:750
+msgid ""
+"A connecting track is drawn between the two tracks. Notice how it moves as "
+"the cursor is dragged along the second track.\n"
+msgstr ""
+"Yhdistävä raide piirretään yhdistettävien raiteiden väliin. Huomaa kuinka se "
+"siirtyy raahattaessa osoitinta toista raidetta pitkin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:752
+msgid ""
+"Note that two tracks are extended if you move past the end of the track.\n"
+msgstr ""
+"Huomaa, että raiteita pidennetään automaattisesti siirryttäessä raiteen pään "
+"ohi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:55
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:754
+msgid ""
+"Notice what happens if you drag past the intersection points of the two "
+"tracks.\n"
+msgstr "Katso mitä tapahtuu, jos raahaat raiteiden leikkauspisteen ohi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:756
+msgid "This is probably not a very useful thing to do.\n"
+msgstr "Tämä ei luultavasti ole kovin hyödyllistä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:70
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:90
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:759
+msgid "Now we will do this with Cornu Easements \n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:760
+#, fuzzy
+msgid "First, we will select Easements Cornu and then select Join\n"
+msgstr "Ensin asetamme korkeustasot haarojen päihin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:102
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:762
+#, fuzzy
+msgid "Now we again select two points on the tracks\n"
+msgstr "Valitse nyt toisen haaran pää.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:764
+#, fuzzy
+msgid ""
+"A connecting cornu is drawn between the two tracks. Notice how it behaves "
+"as the cursor is dragged along the second track.\n"
+msgstr ""
+"Yhdistävä raide piirretään yhdistettävien raiteiden väliin. Huomaa kuinka se "
+"siirtyy raahattaessa osoitinta toista raidetta pitkin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:123
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:766
+#, fuzzy
+msgid ""
+"Note that either tracks can be extended if you move past the end of it.\n"
+msgstr ""
+"Huomaa, että raiteita pidennetään automaattisesti siirryttäessä raiteen pään "
+"ohi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:768
+#, fuzzy
+msgid ""
+"Notice this time what happens if you drag past the intersection points of "
+"the two tracks.\n"
+msgstr "Katso mitä tapahtuu, jos raahaat raiteiden leikkauspisteen ohi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:139
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:770
+msgid "This is more useful because you can move the other end as well.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:150
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:772
+msgid "You can add a pin to constrain the Cornu Curve to pass through it.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:161
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:775
+msgid "You can connect from any track to a turntable\n"
+msgstr "Voit yhdistää mistä tahansa raiteesta kääntöpöytään.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:776
+#, fuzzy
+msgid "With a Cornu Easement you can have a turntable as the first point.\n"
+msgstr ""
+"Huom: Kääntöpöytä ei voi olla ensimmäinen liitoskohta, eli aina yhdistetään "
+"muusta raiteesta kääntöpöytää kohti.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:778
+msgid ""
+"You cannot place the connecting track too close to an existing stall track. "
+"How close you can get is controlled by the Turntable Angle on the Setup "
+"dialog.\n"
+msgstr ""
+"Liitosraidetta ei voi yhdistää liian lähelle kääntöpöytään ennestään "
+"liittyvää raidetta. Tämä etäisyys, eli kääntöpöydän kulma, määritellään "
+"komentojen asetuksissa.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:779
+#, fuzzy
+msgid "In this example it is set to 15 degrees.\n"
+msgstr "Tässä esimerkissä se on asetettu 7,5 asteeksi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:781
+msgid "You can drag the connecting point all round the turntable.\n"
+msgstr "Voit raahata liitoskohtaa ympäti kääntöpöytää.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:103
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:783
+msgid ""
+"As you drag away from the turntable a straight track will be drawn to the "
+"cursor postion and a curve will be drawn from the cursor to the connecting "
+"track.\n"
+msgstr ""
+"Raahatessasi kääntöpöydästä pois päin, suora raide piirretään osoittimeen "
+"asti ja siitä jatketaan kaarteella liitettävään raiteeseen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:111
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:785
+#, fuzzy
+msgid ""
+"Now the cursor will be moved within the turntable, but the end stays on the "
+"edge of the well.\n"
+msgstr ""
+"Nyt osoitin viedään kääntöpöydän sisälle. Huomaa virheilmoitus tilarivillä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:161
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:787
+msgid "All done.\n"
+msgstr "Valmis.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:169
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:790
+msgid ""
+"The Draw Commands are used to draw straight and curved lines on the layout.\n"
+msgstr ""
+"Piirtokomennoilla voidaan piirtää suoria ja kaarevia viivoja "
+"ratasuunnitelmaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:46
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:792
+msgid ""
+"Lines are drawn by clicking at the starting postion and dragging to the "
+"final position.\n"
+msgstr ""
+"Viivat piirretään klikkaamalla alkupistettä ja raahaamalla loppupisteeseen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:793
+msgid ""
+"By default, the new line will snap to existing objects. Hold down the <Alt> "
+"keys to prevent this from happening.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:795
+msgid "You also draw in various colors and line widths.\n"
+msgstr "Voit myös piirtää eri väreillä ja muuttaa viivan paksuutta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:110
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:797
+msgid ""
+"Like Curved Tracks, Curved Lines can be drawn by a variety of methods.\n"
+msgstr ""
+"Aivan kuten kaarevat raideosat, myös kaarevat viivat voidaan piirtää eri "
+"tavoin.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:798
+msgid ""
+"Here we will draw a Curve by dragging from one End-Point to the other to "
+"define the chord of the Curve. Then we will drag from the center to shape "
+"the curve.\n"
+msgstr ""
+"Tässä piirrämme kaaren raahaamalla ensin jänteen päätepisteiden välille ja "
+"raahaamme sitten jänteen keskeltä muodostaaksemme halutun kaaren.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:185
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:800
+msgid "Boxes are useful for drawing rectangular shapes.\n"
+msgstr ""
+"Nelikulmio koostuu neljästä yksittäisestä viivasta, mutta sen voi piirtää "
+"yhdellä komennolla.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:195
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:802
+msgid ""
+"Circles can be drawn by clicking on the center or edge and dragging to set "
+"the radius.\n"
+msgstr ""
+"Ympyrät voidaan piirtää esimerkiksi klikkaamalla haluttua keskipistettä ja "
+"asettamalla ympyrän säde raahaamalla.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:803
+#, fuzzy
+msgid "Here we will drag from the edge to the Center.\n"
+msgstr "Raahaamme keskipisteestä poispäin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:805
+msgid "Lines and Shapes can be deleted by Selecting and Deleting.\n"
+msgstr ""
+"Viivat ja muodot poistetaan valitsemalla ne ensin ja sitten poistamalla ne.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:228
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:808
+msgid "We also draw Polylines and filled shapes.\n"
+msgstr "Voimme myös luoda monikulmioita ja täytettyjä monikulmioita.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:810
+msgid ""
+"A Polyline is drawn by dragging to place each of the point in the Polyline.\n"
+msgstr "Monikulmio piirretään raahaamalla kukin kulma paikoilleen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:125
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:812
+msgid ""
+"To finish off the Polyline press the <Space> key or choose another drawing "
+"type.\n"
+msgstr ""
+"Viimeistelläksesi monikulmion, paina välilyöntiä tai valitse toinen "
+"piirtotyyppi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:814
+#, fuzzy
+msgid "A filled Polygon is drawn in the same way.\n"
+msgstr "Täytetty monikulmio piirretään samalla tavalla.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:816
+msgid "When you are finished, press the <Space> key to complete the polygon.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:818
+msgid ""
+"You can use the Above and Below Commands to move lines and shapes to the "
+"front or back of the drawing.\n"
+msgstr ""
+"Voit vaihtaa viivojen ja muotojen järjestystä viemällä niitä alimmaiseksi "
+"tai päällimmäiseksi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:820
+msgid "Filled Boxes and Circles work the same as line Boxes and Circles.\n"
+msgstr ""
+"Täytetyt nelikulmiot ja täytetyt ympyrät toimivat samoin kuin tyhjät "
+"nelikulmiot ja ympyrät.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:199
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:8
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:823
+#, fuzzy
+msgid ""
+"In the drawing area of the main window you can see an hollow upwards arrow "
+"which represents the mouse cursor. In this demo the mouse will move about "
+"to show you the actions of different commands.\n"
+msgstr ""
+"Pääikkunan piirtoalueella näet läpinäkyvän nuolen, joka kuvaa hiiren "
+"osoitinta. Tässä demossa esitellään erilaiset hiiren toiminnot.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:824
+msgid ""
+"The hollow arrow represents the mouse cursor without a mouse button being "
+"pressed.\n"
+msgstr ""
+"Läpinäkyvä nuoli kuvaa hiiren osoitinta silloin kun hiiren painikkeita ei "
+"ole painettu.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:826
+#, fuzzy
+msgid ""
+"When the left mouse button would be pressed, the mouse cursor appears to "
+"flash and the hollow arrow is replaced by a solid left-pointing red arrow "
+"while the button is pressed.\n"
+msgstr ""
+"Osoittimen välähdys ja sen muuttuminen punaiseksi kuvaa hiiren vasemman "
+"painikkeen painamista. Koko sen ajan, kun hiiren painike on painettuna alas, "
+"osoitin esitetään punaisella nuolella.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:827
+msgid ""
+"Note: these color changes occur only during the demo to simulate mouse "
+"button presses.\n"
+msgstr ""
+"Huom: Hiiren osoittimen väri muuttuu vain demo-tilassa kuvaten hiiren "
+"painikkeiden käyttöä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:829
+msgid ""
+"Moving the mouse while a mouse button is pressed is called 'dragging'.\n"
+msgstr ""
+"Hiiren liikuttelua silloin kun hiiren painike on painettuna, kutsutaan "
+"\"raahaamiseksi\".\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:831
+#, fuzzy
+msgid ""
+"When the left mouse button is released, the mouse cursor flashes and the "
+"hollow up black arrow is restored.\n"
+msgstr ""
+"Kun hiiren vasen painike vapautetaan, osoitin välähtää ja se palautetaan "
+"läpinäkyväksi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:833
+#, fuzzy
+msgid ""
+"Dragging with the right button is simulated by a blue right-facing solid "
+"cursor.\n"
+msgstr ""
+"Hiiren oikealla painikkeella raahaamista kuvataan sinisellä nuolella.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:835
+#, fuzzy
+msgid "Release Right Click\n"
+msgstr "Hiiren 2-painike"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:57
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:62
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:838
+#, fuzzy
+msgid "Sometimes the Shift key is held down while using the mouse \n"
+msgstr ""
+"Joskus vaihto -näppäintä (shift) on painettava samalla kun hiirellä "
+"klikataan tai raahataan.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:839
+#, fuzzy
+msgid ""
+"This is indicated by an outlined arrow with the letter S near the arrow.\n"
+msgstr "Tämä esitetään lisäämällä värilliseen osoittimeen ääriviivat.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:71
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:841
+#, fuzzy
+msgid ""
+"The left mouse button is held down with the Shift and dragged for a Left-"
+"Shift-Drag. \n"
+msgstr "Hiiren vasen painike vapautetaan loppupisteessä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:843
+#, fuzzy
+msgid "Sometimes the Control key is held down while using the mouse. \n"
+msgstr ""
+"Joskus vaihto -näppäintä (shift) on painettava samalla kun hiirellä "
+"klikataan tai raahataan.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:844
+msgid ""
+"This is indicated with an upward filled arrow head with the letter C near "
+"the arrow \n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:846
+msgid ""
+"If while the Control is held the Left mouse button is held down it is a Ctrl-"
+"Move and a Ctrl-Left-Drag. \n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:847
+#, fuzzy
+msgid ""
+"This is indicated by an an left-facing open-headed arrow with the letter C "
+"near it.\n"
+msgstr "Tämä esitetään lisäämällä värilliseen osoittimeen ääriviivat.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:114
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:849
+msgid "You can also use the Control key with the Right mouse button. \n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:850
+msgid ""
+"This is indicated with a right-facing filled arrow with an open arrow head "
+"and the letter C near the arrow \n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:130
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:853
+msgid ""
+"The main drawing area shows a portion of total layout. You can zoom in or "
+"zoom out by choosing 'Zoom In' or 'Zoom Out' in the 'Edit' menu, by using "
+"the Zoom buttons on the toolbar or by using the 'Page Down' and 'Page Up' "
+"keys.\n"
+msgstr ""
+"Piirtoalueella näytetään osa ratasuunnitelmasta. Voit lähentää tai loitontaa "
+"näkymää valitsemalla Muokkaa -valikosta \"Lähennä\" tai \"Loitonna\", "
+"käyttämällä vastaavia painikkeita työkaluriviltä, näppäimistön PgUp ja PgDn -"
+"näppäimillä tai rullahiiren rullasta pyörittämällä.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:854
+msgid "You can see the entire layout in the Map window.\n"
+msgstr "Kartta -ikkunassa esitetään koko ratasuunnitelma.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:33
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:856
+msgid "As you Zoom Out tracks are drawn with one line instead of two.\n"
+msgstr ""
+"Loitonnettaessa riittävästi, raiteet piirretään ainoastaan yhdellä viivalla "
+"normaalin kahden sijaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:49
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:859
+#, fuzzy
+msgid ""
+"You can change what portion of the layout is shown by using the 'Map' window "
+"which shows a compressed version of the entire layout. A hilighted area of "
+"the 'Map' (in blue highlight) shows what portion of the layout is displayed "
+"in the main drawing area.\n"
+msgstr ""
+"Kartta -ikkunan avulla voit valita mikä osa ratasuunnitelmaa näytetään. "
+"Kartta -ikkunassa esitetään piennennetty kuva koko ratasuunnitelmasta. "
+"Korostettu alue esittää pääikkunan piirtoalueella näytettävän alueen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:860
+msgid ""
+"You can Left-Drag the hilighted area in the Map window to change the "
+"displayed portion of the layout.\n"
+msgstr ""
+"Raahaamalla hiiren vasemmalla painikkeella korostettua aluetta muuttaaksesi "
+"ratasuunnitelman näytettävän alueen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:862
+msgid ""
+"You can also Right-Drag on the Map window to set the scale and position of "
+"the Main window.\n"
+msgstr ""
+"Hiiren oikealla painikkeella raahaaminen puolestaan muuttaa näytettävän "
+"alueen skaalausta (kokoa).\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:72
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:865
+#, fuzzy
+msgid ""
+"The <Text Note> command lets you attach notes to various spots on the "
+"layout.\n"
+msgstr "Voit liittää ratasuunnitelmaasi muistiinpanoja.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:867
+#, fuzzy
+msgid ""
+"When you place a note, the Text Note editor window is displayed which lets "
+"you enter the note.\n"
+msgstr ""
+"Kun lisäät ratasuunnitelmaan muistiinpanon, avataan editori jossa voit "
+"kirjoittaa muistiinpanon sisällön.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:869
+#, fuzzy
+msgid ""
+"If you click on a note in <Describe> mode the Text Note editor displays the "
+"note allowing you to modify the note..\n"
+msgstr ""
+"Jos määrittele-komento on aktiivinen ja klikkaat muistiinpanoa, sen sisältö "
+"näytetään editorissa. Näin voit myös muokata aiemmin kirjoittamaasi "
+"muistiinpanoa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:871
+#, fuzzy
+msgid "You can also create a reference to a file or web link.\n"
+msgstr "Voit myös piirtää ne eri asentoihin.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:872
+msgid ""
+"Choose the type of link by clicking on the down arrow beside the Note "
+"commmand.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:874
+msgid ""
+"This is a File Note. You can specify the Title of the File and its "
+"location\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:64
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:876
+msgid ""
+"This is a Web Link Note. You can specify the Title of the Link and its URL\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:878
+msgid "This is the end of the XTrackCAD Demos.\n"
+msgstr "Tähän päättyivät XTrackCADin demot.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:879
+msgid "Click Step to return to XTrackCAD.\n"
+msgstr ""
+"Paina seuraava vaihe, seuraava tai lopeta painiketta palataksesi XTrackCADin "
+"normaaliin tilaan.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:880
+msgid "Thanks for watching.\n"
+msgstr "Kiitos kun katsoit.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:882
+msgid "This example shows how to create parallel tracks.\n"
+msgstr "Tämä esimerkki näyttää miten rinnakkaisia raiteita luodaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:884
+msgid ""
+"The separation is set in the <Parallel Separation> window. You should set "
+"this value before you begin to select tracks.\n"
+msgstr ""
+"Raiteiden välinen etäisyys asetetaan työkalurivillä olevan tekstikentän "
+"avulla. Tämä arvo on asetettava ennen kuin raiteita valitaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:886
+msgid ""
+"You control which side the parallel track will be on by moving the cursor "
+"from one side of the track centerline to the other.\n"
+msgstr ""
+"Voit kontrolloida kummalle puolelle rinnakkainen raide luodaan siirtämällä "
+"hiiren osoitinta alkuperäisen raiteen puolelta toiselle.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:888
+msgid "When you release the mouse button the new parallel track is created.\n"
+msgstr "Uusi rinnakkainen raide luodaan kun vapautat hiiren painikkeen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:889
+msgid ""
+"Note that the <Parallel> command remains active after you created the "
+"track. This is controlled by the Sticky dialog in the Options menu.\n"
+msgstr ""
+"Huomaa, että rinnakkainen-komento pysyy aktiivisena komentona luotuamme "
+"raiteen. Tätä käyttäytymistä voidaan muuttaa valikosta Asetukset|Pysyvät "
+"komennot.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:92
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:891
+msgid "You cannot create a track parallel to a turnout.\n"
+msgstr "Vaihteesta ei voi luoda rinnakkaista raidetta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:172
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:893
+msgid ""
+"Note that the new curved track is automatically connected to the short "
+"parallel track.\n"
+msgstr ""
+"Huomaa, että uusi kaarre liitettiin automaattisesti lyhyeen rinnakkaiseen "
+"raiteeseen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:19
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:896
+#, fuzzy
+msgid ""
+"Polylines and polygons (created with the <Draw> command) can be modified by "
+"dragging on their corners or edges.\n"
+msgstr ""
+"Monikulmioita voidaan muokata raahaamalla niiden kulmista tai reunoista.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:897
+#, fuzzy
+msgid "First Left Click on the shape you want to modify.\n"
+msgstr "Valitse ensin raiteet, jotka haluat siirtää.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:29
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:899
+#, fuzzy
+msgid "Then drag on the point you want to move\n"
+msgstr "Valitse ensin raiteet, jotka haluat siirtää.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:901
+msgid "And finally press the Space bar to finish the change\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:903
+msgid "If you select the middle of an Edge a new Corner is created.\n"
+msgstr ""
+"Jos valitset raahauskohdan kulmien väliltä, siihen luodaan uusi kulma.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:905
+msgid "To delete a corner, select and then press Delete or Backspace\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:907
+msgid "But you cannot have a Poly-shape with less than 3 sides.\n"
+msgstr "Monikulmiossa on kuitenkin aina oltava vähintään kolme kulmaa/sivua.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:126
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:126
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:910
+msgid ""
+"To use the <Profile> command you first need to define Elevations on your "
+"layout.\n"
+msgstr ""
+"Käyttääksesi profiili-komentoa täytyy ratasuunnitelmassa olla määriteltyjä "
+"korkeustasoja.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:911
+msgid "In this example we'll use the Elevations defined in the last example.\n"
+msgstr ""
+"Tässä esimerkissä käytämme edellisessä esimerkissä käytettyjä "
+"korkeustasoja.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:912
+msgid "You can move or resize the Profile dialog now if you want.\n"
+msgstr "Voit siirtää Profiili-ikkunaa tai muuttaa sen kokoa jos haluat.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:135
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:914
+msgid ""
+"To show the Profile you need to select a Path on the tracks of your layout.\n"
+msgstr "Näyttääksesi rataprofiilin täytyy valita reitti suunnitelmastasi.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:915
+msgid "Select a Defined Elevation point (marked by Gold dots).\n"
+msgstr "Valitse määriteltyjä korkeustasoja (merkitty keltaisilla täplillä).\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:916
+msgid "We will start with the right end of the siding.\n"
+msgstr "Aloitamme aseman oikeasta päästä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:918
+msgid ""
+"The second Point is at the left end of the siding. The Path will be drawn "
+"in Purple on the layout.\n"
+msgstr ""
+"Toinen piste on aseman vasen pää. Reitti merkitään ratasuunnitelmaan "
+"purppuralla.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:160
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:920
+msgid "Now select the end of one of the Branches\n"
+msgstr "Valitse nyt toisen haaran pää.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:169
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:922
+msgid ""
+"The Profile line is drawn in Red. This indicates that there some turnouts "
+"on that section of the Path which have more than 2 connections.\n"
+msgstr ""
+"Rataprofiili on piirretty punaisella viivalla. Tämä tarkoittaa sitä, että "
+"kyseisellä osuudella on vaihteita, jotka ovat yhteydessä useampaan kuin "
+"kahteen määriteltyyn korkeustasoon.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:923
+msgid ""
+"The grade on this part of the Path is the average and may be affected by "
+"other Elevations, such the end of the lower branch.\n"
+msgstr ""
+"Osuuden nousukulma on keskiarvo ja siihen voi vaikuttaa muut korkeustasot, "
+"kuten alemman haaran pään korkeustaso.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:178
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:925
+msgid "Now try to select the End-Point of the other branch.\n"
+msgstr "Yritä nyt valita toisen haaran pää.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:926
+msgid ""
+"You will get an error message because there is no route to one of the ends "
+"of the existing Path.\n"
+msgstr ""
+"Saat virheilmoituksen, koska valitun reitin päistä ei ole reittiä tähän "
+"pisteeseen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:187
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:928
+msgid ""
+"In this case remove the last part of the Path by clicking on current end of "
+"the Path and reselect the End-Point.\n"
+msgstr ""
+"Poista tässä tapauksessa viimeinen osuus klikkaamalla valittuna olevan "
+"haaran päätä ja valitse sitten toisen haaran pää.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:198
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:930
+msgid "Notice that the Grade has changed on the Profile.\n"
+msgstr "Huomaa että nousukulma on muuttunut profiili-ikkunassa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:932
+msgid ""
+"You can Ignore End-Points on the Path by using Shift-Right-Click to display "
+"the Profile Options popup menu and chosing Ignore.\n"
+msgstr ""
+"Voit hylätä reitillä olevia raiteiden liitoskohtia ponnahdusvalikosta, joka "
+"aukeaa painamalla vaihto-nnäppäintä ja klikkaamalla hiiren oikealla. Valitse "
+"\"Hylkää\".\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:933
+msgid ""
+"Note: We can't show the menu in demo mode but we will show the effect of a "
+"Shift Right Click and selecting ignore. We will be Ignoring the End-Point "
+"of the Turnout that is not on the Path.\n"
+msgstr ""
+"Huom: Demossa ei voida esittää valikoita, mutta näytämme ponnahdusvalikosta "
+"suoritetun hylkää-komennon vaikutuksen. Hylkäämme vaihteesta sen "
+"päätepisteen, joka ei ole profiilin reitillä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:217
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:935
+msgid "Notice that part of the Profile line is redrawn in Blue.\n"
+msgstr "Huomaa että osa profiilista on piirretty sinisellä viivalla.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:936
+msgid ""
+"Also, the Computed Elevations and Grade marker on the right side of the "
+"layout have been updated.\n"
+msgstr "Myös lasketut korkeustasot sekä nousukulman merkintä on päivitetty.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:938
+msgid ""
+"You can set additional Defined Elevation points using the Profile Options "
+"popup menu. These points are added to the Profile if they are on the Path.\n"
+msgstr ""
+"Ponnahtusvalikon avulla voit lisätä myös uusia määriteltyjä korkeustasoja. "
+"Nämä pisteet lisätään profiiliin, jos ne ovat profiilin reitillä.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:939
+msgid ""
+"We do this by Shift Right Click to display the Profile Options popup menu "
+"and selecting Define.\n"
+msgstr ""
+"Teemme tämän avaamalla ponnahdusvalikon ja valitsemalla \"Määritelty\".\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:237
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:941
+msgid ""
+"We've just added a Defined Elevation point to the middle of the lower "
+"branch. Notice the addition on the Profile dialog.\n"
+msgstr ""
+"Olemme juuri lisänneet määritellyn korkeustason keskelle alempaa haaraa. "
+"Huomaa lisäys profiili-ikkunassa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:246
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:943
+msgid ""
+"For the siding we defined a Station name but it's not on the Path, since the "
+"Path takes the shortest distance between points.\n"
+msgstr ""
+"Sivuraiteelle määrittelimme aseman, mutta se ei ole reitillä, koska "
+"profiilin reitti valitaan lyhyimmän pisteiden välisen etäisyyden mukaan.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:944
+msgid ""
+"We can Ignore one of the End-Points on a Turnout to force the Path to take "
+"the other route.\n"
+msgstr ""
+"Voimme hylätä yhden vaihteen päätepisteistä pakottaaksemme reitin kulkemaan "
+"toista kautta.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:945
+msgid ""
+"Again we use Shift-Right-Click to display the Profile Options menu and "
+"select ignore.\n"
+msgstr "Käytämme jälleen ponnahdusvalikkoa ja valitsemme \"Hylkää\".\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:947
+msgid "Now remove the First section of the Path,\n"
+msgstr "Valitse nyt reitin ensimmäinen osuus,\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:268
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:949
+msgid "and reselect it.\n"
+msgstr "ja valitse se uudelleen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:277
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:951
+msgid ""
+"Now the Path goes through the Station End-Point and the name appears on the "
+"Profile dialog.\n"
+msgstr ""
+"Nyt reitti kulkee määrittelemämme aseman kautta ja sen nimi näkyy profiili-"
+"ikkunassa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:286
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:953
+msgid "Now we need to increase the separation where the tracks cross.\n"
+msgstr "Nyt meidän on kasvatettava risteävien raiteiden välistä etäisyyttä.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:954
+msgid ""
+"The two Elevations you see here are Computed Elevations which means "
+"XTrackCAD dynamically computes the Elevation based on the Elevations of "
+"connecting tracks.\n"
+msgstr ""
+"Tässä näkyvät kaksi korkeustason merkintää ovat laskettuja, mikä tarkoittaa "
+"sitä että XTrackCAD laskee tämän pisteen korkeuden automaattisesti muiden "
+"tähän liittyvien korkeustasojen mukaan.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:955
+msgid ""
+"First make the lower End-Point a Defined Elevation point using Shift-Right-"
+"Click and the Profile Options menu. You will see the End-Point marked by a "
+"Gold dot and a new line is added to the Profile dialog.\n"
+msgstr ""
+"Muuta ensin alempi \"laskettu\" korkeustaso \"määritellyksi\" käyttämällä "
+"jälleen ponnahdusvalikkoa. Piste merkitään nyt keltaisella täplällä ja uusi "
+"viiva lisätään profiili-ikkunaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:297
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:957
+msgid "Now, drag the point on the Profile Dialog to change the Elevation.\n"
+msgstr ""
+"Raahaa nyt profiili-ikkunassa tätä pistettä muuttaaksesi sen korkeustasoa.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:958
+msgid ""
+"Note the grade on each side of the point will be displayed at the bottom of "
+"the Profile dialog.\n"
+msgstr ""
+"Nousukulmat pisteen molemmin puolin näytetään profiili-ikkunan alaosassa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:319
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:960
+msgid ""
+"After we release the Profile is updated to show the new Elevation and "
+"Grade.\n"
+msgstr ""
+"Kun vapautamme hiiren painikkeen, profiili on päivitetty uuden korkeustason "
+"mukaisesti.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:326
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:119
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:963
+msgid "The <Rescale> command will change the size of the selected objects.\n"
+msgstr "Mittakaavan muutos -komennolla muutetaan valittujen objektien kokoa.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:964
+msgid ""
+"Note: due to technical reasons, the To Scale drop down list is blank. For "
+"this demo it should show 'DEMO'.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:965
+msgid "First we will try rescaling by ratio.\n"
+msgstr "Ensin kokeilemme suhteellista muutosta.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:967
+#, fuzzy
+msgid "We are going to make everything 150 percent bigger.\n"
+msgstr "Suurennamme kaiken 150 prosenttia entiseen verrattuna.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:138
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:969
+msgid "Note the track gauge did not change.\n"
+msgstr "Huomaa ettei raideleveys muuttunut.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:971
+msgid "Let's try that again.\n"
+msgstr "Kokeillaan uudestaan.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:972
+msgid "Now we are going to convert from one scale to another.\n"
+msgstr "Nyt muutamme mittakaavasta toiseen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:974
+msgid "We will convert everything from N scale to HO scale...\n"
+msgstr "Muutamme kaiken N-mittakaavasta H0:ksi...\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:976
+msgid "and change the track gauge as well.\n"
+msgstr "ja muutamme myös raideleveyden.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:171
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:978
+msgid "Note that the Title of the turnout did not change.\n"
+msgstr "Huomaa ettei vaihteen otsikko muuttunut.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:179
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:981
+msgid ""
+"The <Rotate> command will pivot the Selected objects. First Click on the "
+"pivot point and then drag to Rotate the objects.\n"
+msgstr ""
+"Voit pyörittää valittuja objekteja. Klikkaa ensin haluttua kiertopistettä ja "
+"raahaa sitten pyörittääksesi objekteja.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:982
+msgid ""
+"In this example we will rotate the selected structure about it's center.\n"
+msgstr ""
+"Tässä esimerkissä pyöritämme valittua rakennusta keskipisteensä ympäri.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:135
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:984
+#, fuzzy
+msgid ""
+"The <Rotate> command will restrict the rotation to increments of 15° if you "
+"hold down the <Shift> and <Ctrl> keys.\n"
+msgstr ""
+"Jos pidät contol-näppäintä painettuna pyörittäminen tapahtuu 15°:n välein.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:316
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:986
+msgid ""
+"There are Rotate options that you can access by Shift-Right-Click command "
+"menu and choosing 'Rotate...'.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:987
+msgid ""
+"You can rotate the selected object by a fixed rotatation (15, 30, 45, 90, "
+"180) either clockwise or counter-clockwise, or by manually entering any "
+"angle.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:988
+msgid ""
+"The other option is 'Align' which allows you align selected objects with an "
+"unselected object. This is useful to align railside buildings with track.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:989
+msgid "Unfortunately, we can not currently demonstrate these features.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:529
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:992
+msgid ""
+"The <Ruler> command draws a Ruler on the layout you can use to measure "
+"distances.\n"
+msgstr ""
+"Viivain-komento piirtää viivaimen, jolla voit mitata etäisyyksiä "
+"ratasuunnitelmassasi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:994
+msgid "If you press the <Ruler> command again the Ruler is removed.\n"
+msgstr "Jos aktivoit toiminnon uudelleen, viivain poistetaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:996
+msgid "But you can place it somewhere else.\n"
+msgstr "Mutta voit sijoittaa sen johonkin toiseen paikkaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:42
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:173
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:999
+msgid "The <Select> command is used to select tracks.\n"
+msgstr "Valitse -komentoa käytetään raiteiden valitsemiseen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1000
+msgid "Selected tracks can be moved or rotated during the <Select> command.\n"
+msgstr ""
+"Valittuja raiteita voidaan siirtää tai pyörittää Valitse -komennon ollessa "
+"aktiivisena.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1001
+msgid "Selected tracks can also be deleted, hidden, listed and exported.\n"
+msgstr ""
+"Valitut raiteet voidaan myös poistaa, piilottaa (tunneli), luetteloida tai "
+"eksportoida (viedä tiedostoon).\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1002
+msgid ""
+"When you move the cursor near a track that could be selected, the track is "
+"drawn with thick blue lines.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1004
+msgid ""
+"The Select operates in two modes which are controled by the Options|Command "
+"menu.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:191
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1006
+msgid ""
+"In 'classic' mode, clicking on an object adds it to set of selected "
+"objects.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:197
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1008
+msgid ""
+"In the 'new' mode, clicking on an object deselectes all other objects, "
+"leaving just the newly selected object.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1009
+#, fuzzy
+msgid "Holding down the Ctrl key reverses this behavior.\n"
+msgstr "Pidä vaihto-näppäi painettuna ja yritä uudelleen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1010
+msgid "This demo will use the 'new' mode.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1011
+msgid ""
+"There is also an option to the control the behavior of clicking on empty "
+"space: do nothing or deselecting all objects.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:208
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1013
+#, fuzzy
+msgid "A Left-Click selects a track\n"
+msgstr "Yksi klikkaus hiiren vasemmalla painikkeella valitsee raiteen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:216
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1015
+#, fuzzy
+msgid ""
+"The selected track will have red X's drawn where it is connected to "
+"unselected tracks. This indicates where the track will be disconnected if "
+"the selected tracks are moved, rotated or deleted.\n"
+msgstr ""
+"Kun siirrät valittuja raiteita, jotka on liitetty valitsemattomiin "
+"raiteisiin, raiteet irrotetaan toisistaan. Nämä pisteet merkitään punaisilla "
+"risteillä.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1016
+msgid "A Ctrl-Left-Click adds tracks to the selection\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:235
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1018
+#, fuzzy
+msgid "Selecting a selected track re-selects only it.\n"
+msgstr "Klikkaamalla jo valittuna olevaa raidetta, sen valinta poistuu.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1020
+#, fuzzy
+msgid "Selecting off all tracks de-selects them.\n"
+msgstr "Klikkaamalla jo valittuna olevaa raidetta, sen valinta poistuu.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:251
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:256
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1023
+msgid ""
+"To demonstrate Select Connected, first select two tracks at the end of a "
+"part to be selected \n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:272
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1025
+msgid ""
+"Shift-Left-Click on a track will select all unselected tracks connected to "
+"the track. Selection stops at a previously selected track.\n"
+msgstr ""
+"Pitämällä vaihto-näppäintä pohjassa ja klikkaamalla raidetta, valitaan "
+"kaikki tähän raiteeseen yhtyvät raiteet. Valinta pysähtyy kuitenkin "
+"ensimmäiseen jo valittuun raiteeseen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:284
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1027
+#, fuzzy
+msgid ""
+"Be careful with this because its very easy to select all tracks this way\n"
+msgstr ""
+"Ole kuitenkin varovainen, sillä näin voit helposti tulla valinneeksi kaikki "
+"raiteet.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1029
+msgid "The <esc> key will deselect all objects.\n"
+msgstr "Esc -näppäin poistaa valinnat kaikista objekteista.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:310
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:315
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1032
+msgid "Left-Drag is used to select all objects within an area.\n"
+msgstr ""
+"Raahaamalla hiiren vasemmalla painikkeella, voidaan valita kaikki alueella "
+"olevat objektit.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:323
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1034
+msgid "Shift-Left-Drag is used to move selected tracks.\n"
+msgstr ""
+"Voit siirtää valittuja objekteja pitämällä vaihto-näppäintä painettuna ja "
+"raahaamalla hiiren vasemmalla painikkeella.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1035
+msgid ""
+"When you move selected tracks that are connected to unselected tracks, the "
+"tracks will be disconnected. These points are marked by a Red cross on the "
+"layout.\n"
+msgstr ""
+"Kun siirrät valittuja raiteita, jotka on liitetty valitsemattomiin "
+"raiteisiin, raiteet irrotetaan toisistaan. Nämä pisteet merkitään punaisilla "
+"risteillä.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1036
+msgid ""
+"If the unconnected end point of a track and one being moved are close "
+"enough, two circles are displayed, showing where the tracks will be snapped "
+"together. \n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:341
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1038
+#, fuzzy
+msgid "Let's move the Main window to see what's going on next\n"
+msgstr "Lähennämme, jotta näet paremmin mitä tapahtuu.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:348
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1040
+#, fuzzy
+msgid ""
+"Ctrl-Left-Drag rotates the selected tracks about the pivot point (which is "
+"where you started the drag)\n"
+msgstr ""
+"Painamalla vaihto-näppäintä ja raahaamalla hiiren oikealla painikkeella voit "
+"pyörittää valittuja raiteita. Kiertopiste määräytyy sen mukaan, mistä "
+"raahaaminen aloitettiin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:410
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:415
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1043
+msgid ""
+"Next we select the <Join Tracks> command to demonstrate \"Move To Join\" \n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:420
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1045
+#, fuzzy
+msgid ""
+"You can use Shift-Left-Click to select an open endpoint of a selected track "
+"to join with an unselected track. \n"
+msgstr ""
+"Seuraavaksi käytämme Yhdistä-komentoa. Vaihto + hiiren vasen siirtää valitut "
+"raiteet ja liittää ne valitsemattomiin.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1046
+#, fuzzy
+msgid "We'll move the Main window again.\n"
+msgstr "Hylkäämme alemman haaran.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:443
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1048
+#, fuzzy
+msgid ""
+"You then Left-Click on an endpoint of a unselected track to move the "
+"selected tracks to join. \n"
+msgstr ""
+"Seuraavaksi käytämme Yhdistä-komentoa. Vaihto + hiiren vasen siirtää valitut "
+"raiteet ja liittää ne valitsemattomiin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:458
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1051
+msgid "The <Split> command is used to split and disconnect tracks.\n"
+msgstr "Pilko-komentoa käytetään raiteiden pilkkomiseen ja irrottamiseen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:35
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1053
+msgid "Simply select the spot on the track you want to split.\n"
+msgstr "Valitse radalta kohta, jonka haluat pilkkoa.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1054
+msgid "You cannot split turnouts (unless you hold down the Shift key).\n"
+msgstr ""
+"Palaraiteita ja vaihteita ei voi pilkkoa, ellei vaihto-näppäintä pidetä "
+"samanaikaisesti painettuna.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1056
+msgid ""
+"If you split at spot that is already an End-Point between two tracks, or "
+"split twice at the same spot, the track is disconnected.\n"
+msgstr ""
+"Jos pilkot kohdasta, joka on raiteiden liitos tai pilkot kaksi kertaa "
+"samasta kohdasta, raiteet irrotetaan toisistaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:60
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1059
+msgid "The <Tunnel> command marks selected tracks as hidden.\n"
+msgstr "Tunneli-komento merkitsee valitut raideosat piilotetuiksi.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1060
+msgid ""
+"A tunnel portal is drawn at the boundary between hidden and normal track.\n"
+msgstr ""
+"Tunnelin suuaukko piirretään piilotetun ja normaalin raideosan "
+"liitoskohtaan.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1061
+msgid ""
+"How the hidden tracks are drawn (solid, dashed or invisible) is controlled "
+"by the Draw EndPts radio button group on the Setup dialog.\n"
+msgstr ""
+"Piilotettujen raiteiden esitystapa valitaan näyttöasetuksista, kohdasta "
+"\"Piirrä tunneli\". Tunneli voidaan piirtää yhtenäisellä viivalla, "
+"katkoviivalla tai jättää kokonaan piirtämättä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1063
+msgid ""
+"To 'un-hide' a track just Select it again and click the Tunnel button.\n"
+msgstr ""
+"Palauttaaksesi tunneliksi merkityt raideosat normaaleiksi, valitse ne ja "
+"paina uudelleen tunneli-napista.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:100
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1066
+msgid ""
+"Straight tracks are created by selecting the first End-Point of the track.\n"
+msgstr ""
+"Suorat raiteet luodaan valitsemalla hiiren vasemmalla painikkeella raiteen "
+"ensimmäinen päätepiste.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1068
+msgid "Then the other End-Point is dragged to its final postion.\n"
+msgstr ""
+"Toinen päätepiste valitaan pitämällä hiiren vasen painike alhaalla ja "
+"valitsemalla oikea paikka.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:20
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1070
+msgid "The left mouse button is released at the final end postion.\n"
+msgstr "Hiiren vasen painike vapautetaan loppupisteessä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:27
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1073
+msgid ""
+"Table Edges are used to mark the edges of the layout, either for aisles or "
+"room walls.\n"
+msgstr ""
+"Pöydän reunoja käytetään kuvaamaan ratasuunnitelman reunoja, joko "
+"kulkuväyliä tai seiniä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1075
+#, fuzzy
+msgid ""
+"A Table Edge is attracted to other objects, unless you hold down the Alt "
+"key.\n"
+msgstr "Pyödän reunojen päät vetävät toisiaan puoleensa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:145
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1077
+msgid "Table Edges can be modified by dragging on their ends.\n"
+msgstr "Pöydän reunoje voidaan muokara raahaamalla niiden päistä.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:193
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1079
+#, fuzzy
+msgid ""
+"Unless you hold down the Alt key while dragging then the Table Edge will be "
+"attracted to other objects.\n"
+msgstr ""
+"Jos pidät control-näppäintä painettuna raahatessasi, pöydän reuna ja muut "
+"objektit vetävät toisiaan puoleensa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:231
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1082
+msgid ""
+"These examples shows some of the various Turnout Designer windows. Each "
+"window defines a different type of turnout.\n"
+msgstr ""
+"Tässä esimerkissä näytetään joitakin monista vaihteiden ja raideosien "
+"suunnitteluikkunoista. Kussakin ikkunassa määritellään eri tyyppinen "
+"vaihde.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1083
+msgid ""
+"In each window there are a number of parameters to fill in and one or two "
+"description lines.\n"
+msgstr ""
+"Jokaisessa ikkunassa on useita parametrikenttiä sekä yksi tai kaksi riviä "
+"kuvausta varten.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1084
+msgid "You can print the design to check the dimensions before saving them.\n"
+msgstr ""
+"Voit tulostaa suunnittelemasi vaihteen tarkastaaksesi sen mitat ennen "
+"tallentamista.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1086
+msgid "This is the regular turnout.\n"
+msgstr "Tämä on tavallinen vaihde.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1087
+msgid ""
+"In addition to the dimensions, you also enter the Title (Manufacturer, "
+"Description and Part Number). For Turnouts with Left and Right hand "
+"versions there are separate Descriptions and Part Numbers.\n"
+msgstr ""
+"Mittatietojen lisäksi voit syöttää otsikon (valmistaja, kuvaus ja "
+"tuotenumero). Vaihteille, joilla on vasen ja oikea versio, on molempia "
+"versioita varten omat kentät kuvausta ja tuotenumeroa varten.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1088
+msgid ""
+"Some Turnouts and Sectional track are pre-mounted on roadbed. For these "
+"parts you can specify the width of the roadbed, the thickness of the lines "
+"drawn for the edge of the roadbed and the color.\n"
+msgstr ""
+"Joihinkin raideosiin kuuluu kiinteä ratapenkka. Näitä osia varten voit "
+"määrittää ratapenkan leveyden, reunaviivan paksuuden sekä reunaviivan "
+"värin.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1090
+msgid "The double slip switch is described by only a few parameters.\n"
+msgstr ""
+"Kaksipuolinen risteysvaihde määritellään vain muutamalla parametrilla.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1092
+msgid "The double crossover only needs length and track separation.\n"
+msgstr ""
+"Sovitettu raideristeys tarvitsee ainoastaan pituuden ja raiteiden välisen "
+"etäisyyden.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:48
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1095
+msgid "We chose the turnout we want to place by clicking on the HotBar.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1097
+msgid ""
+"You can place the turnout on a arbitrary position on the layout. Left-drag "
+"the turnout into place...\n"
+msgstr ""
+"Aseta palaraide ratasuunnitelmaasi klikkaamalla. Raahaa se sitten hiiren "
+"vasemmalla painikkeella paikoilleen...\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1099
+msgid "We are moving the Turnout by dragging on the 'Active End Point'\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1100
+msgid "We can change the 'Active End Point' by a Shift-Left-Click\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1102
+#, fuzzy
+msgid "Notice the Turnout has rotated to the next End Point.\n"
+msgstr "Huomaa että vaihde on purettu kolmeen osaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1104
+msgid ""
+"If we continue to Shift-Left-Click 2 more times, we will return to the "
+"original position.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:123
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1106
+msgid "Then you can rotate the turnout by Right dragging.\n"
+msgstr "Voit myös pyörittää sitä raahaamalla hiiren oikealla painikkeella.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1107
+msgid ""
+"You can also use Shift-Right-Click to display a popup menu that lets you "
+"rotate the Turnout by specific angles.\n"
+msgstr ""
+"Vaihto + hiiren oikea avaa ponnahdusvalikon, josta voit pyörittää raideosaa "
+"tietyn kulman verran.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:174
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1109
+msgid ""
+"When you are satisfied with the position and orientation of the turnout "
+"press Space bar or the Return key on the keyboard to finish placing the "
+"turnout.\n"
+msgstr ""
+"Kun olet tyytyväinen raideosan asetteluun, paina Välilyönti tai Return "
+"viimeistelläksesi raideosan asettelun.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:182
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1112
+msgid ""
+"If you drag along an existing track the new turnout will be attached to the "
+"track.\n"
+msgstr ""
+"Jos raahaat vaihdetta olemassa olevaa raidetta pitkin, uusi vaihde liitetään "
+"raiteeseen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1113
+msgid ""
+"Note that the status line tells you the number of End-Points that would be "
+"connected and, the maximum displacement of the End-Points. This will be "
+"useful when building complex track, as we will see later.\n"
+msgstr ""
+"Huomaa, että tilarivillä kerrotaan kuinka monta päätepistettä ollaan "
+"liittämässä, sekä suurin päätepisteiden siirtymä. Tämä auttaa rakentamaan "
+"monimutkaisia ratoja, kuten myöhemmin näemme.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:256
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1115
+#, fuzzy
+msgid ""
+"By moving the cursor from one side to the other of the track centerline you "
+"can flip the turnout 180°.\n"
+msgstr ""
+"Siirtämällä hiiren osoitinta radan keskilinjan puolelta toiselle, voit "
+"kääntää vaihdetta 180°.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:272
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1117
+msgid ""
+"If you try to drag across another turnout the new turnout will placed at the "
+"nearest End-Point of the existing turnout.\n"
+msgstr ""
+"Jos yrität raahata toisen vaihteen päälle, uusi vaihde asetetaan olemassa "
+"olevan vaihteen lähimmän päätepisteen kohdalle.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:335
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1119
+msgid ""
+"When you press Space or Return while the turnout is on a track, the track "
+"will be split and the new turnout attached automatically.\n"
+msgstr ""
+"Vaihteen ollessa olemassa olevan radan päällä, rata pilkotaan ja uusi vaihde "
+"liitetään automaattisesti.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:343
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:408
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1123
+msgid "Sometimes it's useful to modify turnouts triming one of the ends.\n"
+msgstr ""
+"Joskus on tarpeen muokata vaihteita säätämällä jonkin raiteen pituutta.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1124
+msgid "We use the <Split> command for this.\n"
+msgstr "Käytämme Pilko-komentoa tähän tarkoitukseen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1126
+msgid "Normally, if we try to Split a turnout we get an error message.\n"
+msgstr ""
+"Normaalisti, jos vaihdetta tai palaraidetta yritetään pilkkoa, saadaan "
+"virheilmoitus.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1128
+msgid "Hold down the Shift key and try again.\n"
+msgstr "Pidä vaihto-näppäi painettuna ja yritä uudelleen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:52
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1130
+msgid ""
+"The end of the turnout has been replaced by a piece of straight flex track "
+"which we can modify.\n"
+msgstr ""
+"Vaihteen pää korvattiin pätkällä suoraa fleksiraidetta, jota voi muokata "
+"normaalisti.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1132
+msgid "We can try splitting the diverging leg.\n"
+msgstr "Voimme yrittää pikkoa haarautuvan raiteen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:74
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1134
+msgid ""
+"Notice that the tail of the diverging leg has been changed to a curved "
+"track...\n"
+msgstr "Huomaa, että haarautuva raide on muutettu kaarteeksi...\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1136
+msgid "and a straight track.\n"
+msgstr "ja suoraksi raideosaksi.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:92
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1139
+#, fuzzy
+msgid ""
+"This example show how to layout a yard using Turnouts from the HotBar and "
+"the <Parallel> command.\n"
+msgstr ""
+"Tässä esimerkissä näytetään ratapihan luominen käyttäen \"Palaraide\" ja "
+"\"Rinnakkainen raide\" komentoja.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:19
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1141
+msgid "We'll choose a Turnout from the HotBar\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1142
+#, fuzzy
+msgid "Then we place the Turnout on the main line.\n"
+msgstr "Asetetaan ensin vaihde pääradalle.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1144
+#, fuzzy
+msgid "Next extend the Turnout with the <Modify> command.\n"
+msgstr "Seuraavaksi jatketaan vaihdetta \"Muokkaa\" komennolla.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1146
+#, fuzzy
+msgid ""
+"Now create a track parallel to the main line. Make sure the separation is "
+"reasonable for your scale.\n"
+msgstr ""
+"Luo sitten pääradalle rinnakkainen raide. Varmista, että raideväli on "
+"mittakaavallesi sopiva.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1148
+#, fuzzy
+msgid "And place a Turnout to connect the new track.\n"
+msgstr "Ja aseta vaihde liittääksesi uuden raiteen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1149
+msgid "We'll zoom in here to see what's going on.\n"
+msgstr "Lähennämme, jotta näet paremmin mitä tapahtuu.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:83
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1151
+#, fuzzy
+msgid ""
+"Notice how we control which way the Turnout is facing by moving the mouse "
+"across the center line of the track.\n"
+msgstr ""
+"Huomaa kuinka kontrolloimme vaihteen suuntaa siirtämällä hiiren osoitinta "
+"raiteen keskilinjan yli.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1153
+#, fuzzy
+msgid ""
+"The Status bar displays the number of auto-connections that will be made (3) "
+"and the maximum offset (0.000).\n"
+msgstr ""
+"Tilarivillä näytetään automaattisten liitosten lukumäärä, sekä suurin "
+"päätepisteen siirtymä.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1154
+#, fuzzy
+msgid ""
+"XTrackCAD adjusts the Turnout position for the best fit to minimize any "
+"connection offset\n"
+msgstr ""
+"XTrackCAD sijoittelee vaihteen siten, että se istuu parhaiten ja siirtymät "
+"ovat mahdollisimman pienet.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1156
+#, fuzzy
+msgid "Note that placing the Turnout splits the parallel track.\n"
+msgstr "Huomaa, kuinka vaihteen asettaminen pilkkoi rinnakkaisen raiteen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1157
+msgid "We have to delete the leftover piece by Selecting and Deleting it.\n"
+msgstr "Pilkkomisesta yli jäänyt raideosa täytyy poistaa.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:126
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1159
+msgid "Repeat the process for the other tracks in the yard.\n"
+msgstr "Toista prosessi ratapihan muille raiteille.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1161
+#, fuzzy
+msgid "For the last track we will join with a curve instead of a Turnout.\n"
+msgstr "Viimeinen raide yhdistetään kaarteella vaihteen sijaan.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1164
+msgid "We can indicate the mainline by making the rails wider.\n"
+msgstr "Voimme kuvata päärataa paksummalla raiteella.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1165
+msgid "First we select the mainline tracks...\n"
+msgstr "Ensin valitaan pääradan raiteet...\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1167
+msgid "And then select Medium Tracks from the Edit menu.\n"
+msgstr "Valitse sitten keskikokoiset raiteet Muokkaa-valikosta.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1168
+msgid "We can't show the Edit menu, but we can show the effect.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:137
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1170
+msgid "We can make the rail thicker by selecting Thick Tracks.\n"
+msgstr "Tai paksut raiteet.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:148
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1173
+msgid ""
+"Turntables are created by specifying the radius in a dialog box on the "
+"Status Bar. The radius in the dialog can be changed before proceeding.\n"
+msgstr ""
+"Kääntöpöydät luodaan määrittelemällä ensiksi kääntöpöydän säde tilarivillä "
+"olevaan tekstikenttään.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:15
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1175
+msgid "Then the turntable is dragged to its final location.\n"
+msgstr "Sitten kääntöpöytä raahataan paikoilleen.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:22
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:433
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1178
+msgid "Introduction"
+msgstr "Johdanto"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:434
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1180
+msgid "Mouse Actions"
+msgstr "Hiiren toiminnot"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:435
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1182
+msgid "Dialogs"
+msgstr "Dialogit (ikkunat)"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:436
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1184
+msgid "Moving about"
+msgstr "Liikkuminen"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:437
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1186
+msgid "Describe and Select"
+msgstr "Määrittele ja valitse -toiminnot"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:440
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1192
+msgid "Simple tracks"
+msgstr "Yksinkertaiset raideosat"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:441
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1194
+msgid "Straight tracks"
+msgstr "Suorat raiteet"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:442
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1196
+msgid "Curved tracks"
+msgstr "Kaarevat raiteet"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:443
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1198
+msgid "Circles"
+msgstr "Ympyrät"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:444
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1200
+msgid "Turntables"
+msgstr "Kääntöpöydät"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:445
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1202
+msgid "Modifying tracks"
+msgstr "Raiteiden muokkaaminen"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:446
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1204
+msgid "Modifying end points "
+msgstr "Päätepisteiden muokkaaminen"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:447
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1206
+msgid "Extending"
+msgstr "Pidentäminen"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:448
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1208
+msgid "Medium and Thick Tracks"
+msgstr "Keskipaksut ja paksut raiteet"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:449
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1210
+msgid "Joining Tracks"
+msgstr "Raiteiden yhdistäminen"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:450
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1212
+msgid "Straight to straight"
+msgstr "Suora - suora"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:451
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1214
+msgid "Curve to straight"
+msgstr "Kaareva - suora"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:452
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1216
+msgid "Circle to circle"
+msgstr "Ympyrä - ympyrä"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:453
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1218
+msgid "Joining to turntables"
+msgstr "Yhdistäminen kääntöpäytään"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:454
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1220
+msgid "Easements"
+msgstr "Kaarreloivennukset"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:455
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1222
+msgid "Abutting tracks"
+msgstr "Vastakkaiset raideosat"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1224
+msgid "Move to Join"
+msgstr "Siirrä yhdistääksesi"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:458
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1228
+msgid "Select and Placement"
+msgstr "Valinta ja asettelu"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:459
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1230
+msgid "Building a yard throat."
+msgstr "Vaihdekujan luominen"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:460
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1232
+msgid "Designing turnouts"
+msgstr "Raideosien suunnittelu"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:461
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1234
+msgid "Group and Ungroup"
+msgstr "Ryhmittely ja ryhmittelyn purku"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:462
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1236
+msgid "Triming Turnout Ends"
+msgstr "Vaihteen päiden säätö"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:463
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1238
+msgid "Handlaid Turnouts"
+msgstr "Käsin asetellut vaihteet"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1240
+msgid "Elevations and Profile"
+msgstr "Korkeustasot ja profiili"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:465
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1242
+msgid "Elevations"
+msgstr "Korkeustasot"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:467
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1246
+msgid "Misc track commands"
+msgstr "Muita raidekomentoja"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:468
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1248
+msgid "Delete and Undo"
+msgstr "Poista ja kumoa"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:469
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1250
+msgid "Splitting and Tunnels"
+msgstr "Pilkkominen ja tunnelit"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:471
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1254
+msgid "Helix tracks"
+msgstr "Helix raiteet (kierrenousu)"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:472
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1256
+msgid "Exception Tracks"
+msgstr "Erityisraiteet"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:474
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1260
+msgid "Connect and Tighten - a siding"
+msgstr "Liittäminen ja tiukennus - sivuraide"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:475
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1262
+msgid "Connect and Tighten - figure-8"
+msgstr "Liittäminen ja tiukennus - kahdeksikko"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:476
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1264
+msgid "Other commands"
+msgstr "Muut komennot"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:478
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1268
+msgid "Table Edges"
+msgstr "Pöydän reunat"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:480
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1272
+msgid "Dimension Lines"
+msgstr "Mittajanat"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:481
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1274
+msgid "Lines"
+msgstr "Viivat"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:482
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1276
+msgid "Poly-Shapes"
+msgstr "Monikulmiot"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:483
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1278
+msgid "Modifying Poly-Shapes"
+msgstr "Monikulmioiden muokkaaminen"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:486
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1284
+#, fuzzy
+msgid "Control Panels"
+msgstr "Ohjauspaneelit"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:9
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1288
+#, fuzzy
+msgid "Test Turnout Designer\n"
+msgstr "%s Vaihteiden suunnittelu"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1289
+msgid ""
+"This demo invokes each Turnout Designer and generates the turnout "
+"definition.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1290
+msgid ""
+"Each definition is placed on the layout and Regression checks that each "
+"matches.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1291
+#, fuzzy
+msgid "Instructions:\n"
+msgstr "Johdanto"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1292
+msgid " Run xtrkcad with the regression option set to 2:\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1293
+msgid " xtrkcad -d regression=2\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1294
+msgid ""
+" Select the recording (Macro|Playback) from $(SRCDIR)/app/tools/"
+"TurnoutDesigner.xtr\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1295
+#, fuzzy
+msgid " \n"
+msgstr " dpi"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1296
+msgid ""
+" Playback the demo. You probably want to choose a faster playback Speed.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1297
+msgid "Check the log file (Linux: stdout, Windows: xtclog.txt)\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:497
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:594
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:867
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:913
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1299
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1308
+msgid "-----------------------------------------------------\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1300
+#, fuzzy
+msgid "Create an instance of each turnout\n"
+msgstr "Luo käsin aseteltu vaihde"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1303
+msgid "Run Regression Checks\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1306
+#, fuzzy
+msgid "Remove the parameter definitions\n"
+msgstr "Uuden tulostimen määrittelyjen tallennus ei onnistu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:9
+#, fuzzy
+msgid "Invokes online help for this dialog"
+msgstr "Avaa tämän dialogin ohjeen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:10
+msgid "Cancels this command"
+msgstr "Kumoaa edellisen komennon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:11
+msgid "Closes the dialog"
+msgstr "Sulkee ikkunan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:12
+#, fuzzy
+msgid "About program dialog"
+msgstr "Tietoja -ikkuna"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:13
+#, fuzzy
+msgid "Move selected object to top"
+msgstr "Siirrä valittu objekti päällimmäiseksi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:14
+#, fuzzy
+msgid "Raise or lower all selected tracks"
+msgstr "Nosta tai laske valittuja raiteita"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:15
+#, fuzzy
+msgid "Show a protractor"
+msgstr "Näytä viivain"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:16
+msgid "Turn magnetic snap on or off"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:18
+#, fuzzy
+msgid "Move selected object to bottom"
+msgstr "Siirrä valittu objekti alimmaiseksi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:19
+msgid "Create a section of track for automation"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:20
+#, fuzzy
+msgid "Edit a block definition "
+msgstr "Luo uusi raideosan määrittely"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:21
+msgid "Create a new Car/Loco description"
+msgstr "Luo uusi veturin tai vaunun määrittely"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:22
+msgid "Manage your Car and Loco Inventory"
+msgstr "Hallinnoi vaunu- ja veturiluetteloa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:23
+msgid "Create track circle from center"
+msgstr "Piirrä ympyrärata keskipisteestä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:24
+msgid "Create fixed radius track circle"
+msgstr "Määriteltysäteinen ympyrärata"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:25
+msgid "Set Circle Track creation mode"
+msgstr "Aseta ympyräradan luonti komento"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:26
+msgid "Create track circle from tangent"
+msgstr "Piirrä ympyrärata kehältä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:27
+msgid "Removes elevation from Selected tracks"
+msgstr "Poista korkeusmääritykset valituista raiteista"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:28
+msgid "Copy objects to clipboard and duplicate them in exactly the same place"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:29
+msgid "Command Options dialog"
+msgstr "Komentojen asetukset"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:30
+msgid "Controls colors"
+msgstr "Valitse värit"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:31
+msgid "Connect two tracks"
+msgstr "Liitä kaksi raidetta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:32
+msgid "Create a control for layout automation"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:33
+#, fuzzy
+msgid "Select control element to create"
+msgstr "Valitse toinen yhdistettävä päätepiste"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:34
+msgid "Manage control elements"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:35
+#, fuzzy
+msgid "Set Convert mode"
+msgstr "Aseta kaarevan raiteen luonti komento"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:36
+msgid "Convert from Fixed Track to Cornu"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:37
+msgid "Convert from Cornu and Bezier to Fixed Track"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:38
+msgid "Copy selected objects to clipboard"
+msgstr "Kopioi valitut objektit leikepöydälle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:39
+#, fuzzy
+msgid "Create Cornu track"
+msgstr "Luo viivoja"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:40
+msgid "Create curved track from center"
+msgstr "Luo kaareva raideosa alkaen keskipisteestä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:41
+msgid "Create curved track from chord"
+msgstr "Luo kaareva raideosa päätepisteiden välille"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:42
+msgid "Create curved track from end-point"
+msgstr "Luo kaareva raideosa alkaen päätepisteestä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:43
+#, fuzzy
+msgid "Create Bezier track"
+msgstr "Luo helix raide"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:44
+msgid "Set Curve Track creation mode"
+msgstr "Aseta kaarevan raiteen luonti komento"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:45
+msgid "Create curved track from tangent"
+msgstr "Luo kaareva raideosa alkaen kehältä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:46
+msgid "Manipulate Custom designer entries"
+msgstr "Itse määriteltyjen raideosien, veturien ja vaunujen hallinta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:47
+msgid "Moves selected objects to clipboard"
+msgstr "Siirtää valitut objektit leikepöydälle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:48
+msgid "Delete objects"
+msgstr "Poista valitut objektit"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:49
+msgid "Playback demos"
+msgstr "Toista nauhoitettuja demoja"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:50
+msgid "Change Object Properties"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:51
+msgid "Change to properties mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:52
+msgid "Deselect all selected objects"
+msgstr "Poista valinnat kaikista objekteista"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:53
+msgid "Change Display parameters"
+msgstr "Muuta näyttöasetuksia"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:54
+msgid "Create benchwork"
+msgstr "Luo runkorakenne"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:55
+msgid "Create a box"
+msgstr "Luo nelikulmio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:56
+msgid "Set Circle drawing command"
+msgstr "Aseta ympyrän piirto komento"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:57
+msgid "Create a circle"
+msgstr "Luo ympyrä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:58
+msgid "Draw a circle line from center"
+msgstr "Piirrä ympyrä keskipisteestä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:59
+msgid "Draw a fixed radius circle line"
+msgstr "Piirrä määriteltysäteinen ympyrä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:60
+msgid "Draw a circle line from tangent"
+msgstr "Piirrä ympyrä kehältä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:61
+msgid "Set Curve drawing command"
+msgstr "Aseta kaaren piirto komento"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:62
+msgid "Create a curved line"
+msgstr "Luo kaari"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:63
+msgid "Create a curved line from End"
+msgstr "Piirrä kaari päätepisteestä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:64
+msgid "Create a curved line from center"
+msgstr "Piirrä kaari keskipisteestä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:65
+msgid "Create a curved line from chord"
+msgstr "Piirrä kaari·päätepisteiden·välille"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:66
+msgid "Create a curved line from tangent"
+msgstr "Piirrä kaari kehältä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:67
+#, fuzzy
+msgid "Create a Bezier line"
+msgstr "Luo kaari"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:68
+msgid "Create a dimension line"
+msgstr "Luo mittajana"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:69
+msgid "Create a filled box"
+msgstr "Piirrä täytetty nelikulmio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:70
+msgid "Create a filled circle"
+msgstr "Luo täytetty ympyrä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:71
+msgid "Draw a filled circle from center"
+msgstr "Piirrä täytetty ympyrä keskipisteestä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:72
+msgid "Draw a fixed radius filled circle"
+msgstr "Piirrä täytetty määriteltysäteinen ympyrä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:73
+msgid "Draw a filled circle from tangent"
+msgstr "Piirrä täytetty ympyrä kehältä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:74
+#, fuzzy
+msgid "Create a polygon"
+msgstr "Luo monikulmio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:75
+msgid "Create a filled polygon"
+msgstr "Luo täytetty monikulmio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:76
+msgid "Create a polyline"
+msgstr "Luo monikulmio"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:77
+msgid "Create a straight line"
+msgstr "Luo suora viiva"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:78
+msgid "Set Line drawing command"
+msgstr "Aseta suorien objektien piirto komento"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:79
+msgid "Set Shape drawing command"
+msgstr "Aseta muotojen piirto komento"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:80
+msgid "Draw table edge"
+msgstr "Piirrä pöydän reuna"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:81
+msgid "Easement menu"
+msgstr "Kaarreloivennuksen asetukset"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:83
+msgid "Generate a Parts List of selected objects"
+msgstr "Luo osaluettelo valituista objekteista"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:84
+msgid "Set Import/Export mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:85
+#, fuzzy
+msgid "Export an .xti file"
+msgstr "Vie .xti tiedostoon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:86
+#, fuzzy
+msgid "Export a Bitmap image"
+msgstr "Vie bitmap tiedostoon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:87
+msgid "Export a DXF file"
+msgstr "Vie DXF tiedostoon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:88
+#, fuzzy
+msgid "Export an SVG file"
+msgstr "Vie DXF tiedostoon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:90
+msgid "Flip selected objects"
+msgstr "Käännä valitut objektit annetun peilauslinjan mukaan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:91
+msgid "Adjust snap grid"
+msgstr "Muuta kohdistusruudukon asetuksia"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:92
+msgid "Enable snap grid"
+msgstr "Käytä kohdistusruudukkoa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:93
+msgid "Show snap grid"
+msgstr "Näytä kohdistusruudukko"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:94
+msgid "Create a structure from a Group of objects"
+msgstr "Luo rakennus valituista objekteista"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:95
+msgid "Create a hand-laid turnout"
+msgstr "Luo käsin aseteltu vaihde"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:96
+msgid "Create a track helix"
+msgstr "Luo helix raide (kierrenousu)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:97
+#, fuzzy
+msgid "Import an .xti file"
+msgstr "Tuo .xti tiedosto"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:98
+#, fuzzy
+msgid "Import an .xti file as a Module"
+msgstr "Tuo .xti tiedosto"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:99
+msgid "Join two tracks"
+msgstr "Yhdistä kaksi raidetta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:100
+msgid "Join two lines or polylines"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:101
+msgid "Set Join mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:102
+msgid "Change Layers"
+msgstr "Muuta tasojen asetuksia"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:103
+msgid "Selects the current drawing layer"
+msgstr "Valitsee piirtotason"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:104
+msgid "Layout parameters"
+msgstr "Ratasuunnitelman asetukset"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:106
+#, fuzzy
+msgid "Show/Hide Map Window"
+msgstr "Näytä/piilota taso"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:107
+#, fuzzy
+msgid "Select Measurement Tool"
+msgstr "Ensin valitsemme vaihteen.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:108
+msgid "Modify or extend a track"
+msgstr "Muokkaa tai jatka raidetta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:109
+msgid "Change To modify mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:110
+msgid "Move selected objects"
+msgstr "Siirrä valittuja objekteja"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:111
+msgid "Move a label"
+msgstr "Siirrä merkintöjä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:112
+msgid "Move selected objects to current layer"
+msgstr "Siirrä valitut objektit nykyiselle tasolle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:114
+#, fuzzy
+msgid "Print a bitmap"
+msgstr "Tulosta bitmap tiedostoon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:115
+#, fuzzy
+msgid "Pan or zoom the layout"
+msgstr "Sijoita vaunu tai veturi ratasuunnitelmaan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:116
+msgid "Change to zoom/pan mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:117
+msgid "Create a parallel track"
+msgstr "Luo rinnakkainen raide"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:118
+#, fuzzy
+msgid "Create a parallel line"
+msgstr "Luo rinnakkainen raide"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:119
+#, fuzzy
+msgid "Set Parallel mode"
+msgstr "Rinnakkainen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:120
+msgid "Register"
+msgstr "Rekisteröi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:121
+msgid "Copy objects from clipboard"
+msgstr "Liitä objektit leikepöydältä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:122
+msgid "Perferences dialog"
+msgstr "Ominaisuudet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:123
+msgid "Display prices of turnouts, sectional tracks and structures"
+msgstr "Vaihteiden, palaraiteiden ja rakennusten hinnat"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:124
+msgid "Print the layout"
+msgstr "Tulosta ratasuunnitelma"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:125
+#, fuzzy
+msgid "Loads and unloads parameter files into/from toolbar"
+msgstr "Lataa tai poista parametritiedostoja käytöstä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:126
+msgid "Elevation Profile Command"
+msgstr "Muokkaa korkeusprofiilia"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:128
+msgid "Command recorder"
+msgstr "Komentojen nauhoitus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:130
+msgid "Update selected Turnout and Structure definitions"
+msgstr "Päivitä valittujen vaihteiden ja rakennusten määrittelyt"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:131
+msgid "Rescale selected objects"
+msgstr "Muuta valittujen objektien mittakaavaa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:132
+msgid "Rotate selected object(s)"
+msgstr "Pyöritä valittuja objekteja"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:133
+msgid "Show a ruler"
+msgstr "Näytä viivain"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:134
+msgid "Select objects"
+msgstr "Valitse objekteja"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:135
+#, fuzzy
+msgid "Change To Select Mode"
+msgstr "Muuta mittakaavaa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:136
+msgid "Selects all objects on the layout"
+msgstr "Valitse kaikki ratasuunnitelman objektit"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:137
+msgid "Selects all objects in the current Layer"
+msgstr "Valitse kaikki nykyisen tason objektit"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:138
+#, fuzzy
+msgid "Choose objects by Index number"
+msgstr "Valitse pilarin numero"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:139
+msgid "Invert current selection"
+msgstr "Käänteinen valinta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:140
+#, fuzzy
+msgid "Configure the Printer"
+msgstr "Kaari keskipisteestä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:141
+#, fuzzy
+msgid "Set Split mode"
+msgstr "Aseta kaarevan raiteen luonti komento"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:142
+msgid "Split a track"
+msgstr "Pilko raide"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:143
+msgid "Split a straight, curved, circle, polygon or polyline Draw Object "
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:144
+msgid "Select stranded (unconnected) track pieces"
+msgstr "Valitse yksittäiset raiteet, joita ei ole liitetty toisiin raiteisiin"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:145
+msgid "Create a sensor (ie. a occupancy detector or a toggle switch)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:146
+#, fuzzy
+msgid "Create a signal for train control"
+msgstr "Piirrä ympyrärata kehältä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:147
+msgid "Choose which commands are sticky"
+msgstr "Valitse mitkä komennot ovat pysyviä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:148
+msgid "Create straight track"
+msgstr "Luo suora raideosa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:149
+msgid "Place a structure on the layout"
+msgstr "Lisää rakennus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:150
+#, fuzzy
+msgid "Create a switchmotor for turnout control"
+msgstr "Luo uuden rakennuksen (tai raideosan)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:151
+#, fuzzy
+msgid "Edit a switchmotor definition"
+msgstr "Luo uusi raideosan määrittely"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:152
+msgid "Enter text on the layout"
+msgstr "Lisää tekstiä ratasuunnitelmaan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:153
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:612
+msgid "Controls the size of the entered text"
+msgstr "Muuttaa syötettävän tekstin kokoa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:155
+msgid "Tip of the Day window"
+msgstr "Näytä päivän vinkki"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:157
+msgid "Change To Run Trains Mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:158
+msgid "Pause/Resume Trains"
+msgstr "Pysäytä/jatka ajamista"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:159
+msgid "Place a car on the layout"
+msgstr "Sijoita vaunu tai veturi ratasuunnitelmaan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:160
+msgid "Exit Trains"
+msgstr "Poistu junien ajosta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:161
+msgid "Trim a line, circle or polyline Draw Object using a second Object"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:162
+msgid "Hide/Unhide a track"
+msgstr "Piilota/näytä raide"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:163
+msgid "Make/Unmake a track a bridge"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:164
+msgid "Place a turnout or sectional track"
+msgstr "Lisää vaihde tai palaraide"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:165
+msgid "Create a new turnout definition"
+msgstr "Luo uusi raideosan määrittely"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:166
+msgid "Place a turntable"
+msgstr "Lisää kääntöpöytä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:167
+msgid "Updates old source files with 3 part titles"
+msgstr "Päivittää vanhat lähdetiedostot kolmiosaisilla otsikoilla"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:169
+msgid "Ungroup objects"
+msgstr "Pura ryhmittely"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:170
+msgid "Draw tracks with thin lines"
+msgstr "Piirrä raiteet ohuilla viivoilla"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:171
+msgid "Draw tracks with medium lines"
+msgstr "Piirrä raiteet keskipaksuilla viivoilla"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:172
+msgid "Draw tracks with thick lines"
+msgstr "Piirrä raiteet paksuilla viivoilla"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:173
+msgid "Change drawing scale"
+msgstr "Muuta piirron mittakaavaa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:174
+#, fuzzy
+msgid "Zoom to Fit"
+msgstr "Loitonna näkymää"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:175
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:206
+msgid "Zoom in"
+msgstr "Lähennä näkymää"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:176
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:207
+msgid "Zoom out"
+msgstr "Loitonna näkymää"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:180
+#, fuzzy
+msgid "Curved Fixed"
+msgstr "Kaari"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:181
+#, fuzzy
+msgid "Preferred Radius"
+msgstr "Ympyrän säde"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:182
+#, fuzzy
+msgid "Modify Draw"
+msgstr "Muokkaa raidetta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:189
+#, fuzzy
+msgid "Rotation Angle"
+msgstr "Oikean raiteen kulma"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:190
+#, fuzzy
+msgid "Rot Center X"
+msgstr "Keskipiste: X"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:191
+#, fuzzy
+msgid "Rot Center Y"
+msgstr "Keskipiste: X"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:193
+msgid "File Menu"
+msgstr "Tiedosto valikko"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:194
+msgid "Save layout"
+msgstr "Tallenna ratasuunnitelma"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:195
+msgid "Save layout under a new name "
+msgstr "Tallenna ratasuunnitelma uudella nimellä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:196
+msgid "New layout"
+msgstr "Uusi ratasuunnitelma"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:197
+msgid "Generate parts list"
+msgstr "Luo osaluettelo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:198
+msgid "Load a layout"
+msgstr "Lataa ratasuunnitelma"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:199
+#, fuzzy
+msgid "Manage Parameter Files"
+msgstr "Parametritiedostot"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:200
+#, fuzzy
+msgid "Print layout"
+msgstr "Tulosta ratasuunnitelma"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:201
+msgid "Exit the program"
+msgstr "Poistu ohjelmasta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:202
+msgid "Revert to last saved state of layout plan"
+msgstr "Palauta ratasuunnitelma edelliseen tallennettuun tilaan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:203
+#, fuzzy
+msgid "Printer Setup"
+msgstr "Tulostusasetukset"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:204
+msgid "Edit menu"
+msgstr "Muokkaa -valikko"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:205
+msgid "Redraw layout"
+msgstr "Uudelleenpiirto ratasuunnitelman objekteille"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:208
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:211
+msgid "Tools menu"
+msgstr "Työkalut -valikko"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:209
+msgid "View menu"
+msgstr "Näytä -valikko"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:210
+msgid "Toolbar configuration"
+msgstr "Työkalurivin asetukset"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:212
+msgid "Options menu"
+msgstr "Asetukset -valikko"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:213
+msgid "Playback/Record commands"
+msgstr "Nauhoita/toista komentoja"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:214
+msgid "Window menu"
+msgstr "Ikkunoiden valinta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:215
+msgid "Help menu"
+msgstr "Ohje -valikko"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:216
+msgid "Recent error messages and explanations"
+msgstr "Viimeisimmät virhesanomat ja selitteet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:217
+msgid "Move Hot Bar left"
+msgstr "Siirry vasemmalle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:218
+msgid "Move Hot Bar right"
+msgstr "Siirry oikealle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:219
+msgid "Total track count"
+msgstr "Raideosien kokonaismäärä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:220
+msgid "X Position of cursor"
+msgstr "Kohdistimen X sijainti"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:221
+msgid "Y Position of cursor"
+msgstr "Kohdistimen Y sijainti"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:222
+msgid "Drawing scale"
+msgstr "Piirron mittakaava"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:223
+msgid "Message and status line"
+msgstr "Viesti- ja tilarivi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:224
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:225
+msgid "Main layout canvas"
+msgstr "Piirtoalue"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:226
+msgid "Main drawing canvas"
+msgstr "Piirtoalue"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:227
+msgid "Command buttons"
+msgstr "Komentopainikkeet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:228
+msgid "Menus"
+msgstr "Valikot"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:229
+msgid "Tile, Filename and Window Manager buttons"
+msgstr "Otsikko, tiedostonimi ja ikkunanhallintapainikkeet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:230
+msgid "Turnout and Structure Hot Bar"
+msgstr "Raideosien ja rakennusten valikko"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:231
+msgid "Active layer list and layer buttons"
+msgstr "Tasoluettelo ja tasopainikkeet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:232
+msgid "Map window"
+msgstr "Karttaikkuna"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:233
+msgid "This is the portion of the layout shown in the Main Window canvas"
+msgstr "Tämä osa suunnitelmasta näytetään pääikkunan piirtoalueella"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:234
+msgid "Raise or Lower all Selected Track"
+msgstr "Nosta tai laske kaikkia valittuja raiteita"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:235
+msgid "Name of block"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:236
+msgid "Script that the block will run"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:237
+msgid "List of tracks in the Block"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:238
+msgid "Add or Update car object"
+msgstr "Lisää/päivitä tämä vaunu tai veturi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:239
+msgid "Manufacturer name"
+msgstr "Valmistajan nimi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:242
+msgid "Is the Car a Locomotive?"
+msgstr "Onko kyseessä veturi vai vaunu?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:243
+msgid "Part Number and Description"
+msgstr "Tuotekoodi ja kuvaus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:244
+msgid "Manufacturer Part Number"
+msgstr "Valmistajan tuotekoodi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:245
+msgid "Use the Selected figure as the car image"
+msgstr "Käytä valittua kuvaa vaunun tai veturin kuvana"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:246
+msgid "Use the default figure as the car image"
+msgstr "Käytä oletuskuvaa vaunun tai veturin kuvana"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:247
+msgid "Optional description of the Car Part"
+msgstr "Valinnainen kuvaus mallista"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:248
+msgid "Flip car image"
+msgstr "Käännä kuva"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:249
+msgid "Display Car Item information or reporting marks and dimensions"
+msgstr "Näytä vaunun tai veturin tiedot, tai yhtiötunnukset ja mitat"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:250
+msgid "Full Roadname"
+msgstr "Rautatieyhtiön koko nimi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:251
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:252
+msgid "Car Type"
+msgstr "Vaunun tai veturin tyyppi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:253
+msgid "Reporting Marks (Roadname abbreviation)"
+msgstr "Rautatieyhtiön merkintä (lyhenne)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:254
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:489
+msgid "Car Number"
+msgstr "Vaunun tai veturin numero"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:255
+msgid "Car body Color"
+msgstr "Vaunun tai veturin rungon väri"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:256
+msgid "Length of car body"
+msgstr "Rungon pituus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:257
+msgid "Width of car body"
+msgstr "Rungon leveys"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:258
+msgid "Distance between Trucks "
+msgstr "Telien keskikohtien välinen etäisyys"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:259
+msgid "Distance Trucks are displaced along Car"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:260
+msgid "Coupler are mounted on body or truck"
+msgstr "Onko kytkimet kiinnitetty runkoon vai teleihin"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:261
+msgid "Overall Coupled Length"
+msgstr "Kokonaispituus kytkimet mukaan lukien"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:262
+msgid "Coupler Length from end of car"
+msgstr "Kytkinten ulkonema vaunun tai veturin päästä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:263
+msgid "Diagram of Car"
+msgstr "Vaunun tai veturin kaaviokuva"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:264
+msgid "Item Index Number"
+msgstr "Kohteen indeksinumero"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:265
+msgid "Original Purchase Price"
+msgstr "Alkuperäinen ostohinta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:267
+msgid "Condition of car"
+msgstr "Vaunun tai veturin kunto"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:268
+#, fuzzy
+msgid "Original Purchase Date - yyyymmdd"
+msgstr "Ostopäivä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:269
+#, fuzzy
+msgid "Last Service Date - yyyymmdd"
+msgstr "Milloin viimeksi huollettu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:270
+msgid "Number of identical cars to be entered"
+msgstr "Samanlaisten vaunujen tai veturien lukumäärä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:271
+msgid "Do all the cars have the same Number?"
+msgstr "Onko kaikilla vaunuilla tai vetureilla sama numero?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:272
+msgid "Notes about the car"
+msgstr "Vaunuun tai veturiin liittyviä muistiinpanoja"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:273
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:274
+msgid "Create a new car Part or Prototype definitions"
+msgstr "Luo uusi malli tai esikuva"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:275
+msgid "Finds the selected Car Item on the layout"
+msgstr "Etsii valitun junan ratasuunnitelmasta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:276
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:277
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:278
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:279
+msgid "Sort the Item list"
+msgstr "Lajittele luettelo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:281
+msgid "Edit the selected Car Item"
+msgstr "Muokkaa valittua kohdetta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:282
+msgid "Add a new Car Item"
+msgstr "Lisää uusi vaunu tai veturi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:283
+msgid "Delete from Inventory or return to Shelf"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:284
+msgid "Import a Car Item .csv file"
+msgstr "Tuo .cvs tiedostosta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:285
+msgid "Export a Car Item .csv file"
+msgstr "Vie .cvs tiedostoon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:286
+msgid "Create a text list of the Car Items"
+msgstr "Tallenna tekstitiedostoon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:287
+msgid "Specifies the radius of the circle track"
+msgstr "Määrittelee ympyräradan säteen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:288
+msgid "Default command is Describe or Select"
+msgstr "Onko oletuskomentona \"määrittele\" vai \"valitse\""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:289
+msgid "Action to invoke on Right-Click"
+msgstr "Hiiren 2-painikkeen toiminto"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:290
+msgid ""
+"Replace current selection with clicked object or add clicked object to "
+"selection"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:291
+msgid "Clicking into an empty area clears selection if select mode is <add>"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:293
+msgid "The list of control elements"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:294
+#, fuzzy
+msgid "Edit the element"
+msgstr "Muokkaa valittua kohdetta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:295
+#, fuzzy
+msgid "Delete the element"
+msgstr "Poista valitut kohteet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:296
+msgid "Contents Label for new Parameter file"
+msgstr "Parametritiedoston sisältömerkintä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:297
+#, fuzzy
+msgid "Desired curve radius for new track"
+msgstr "Luo suora raideosa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:298
+msgid "List of custom designed turnouts and structures"
+msgstr "Luettelo itse suunnitelluista raideosista ja rakennuksista"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:299
+msgid "Change description, manufacturer or part number."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:300
+msgid "Remove selected entries"
+msgstr "Poista valitut kohteet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:301
+#, fuzzy
+msgid "Copy selected entries to parameter file"
+msgstr "Siirrä valitut kohteet parametritiedostoon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:302
+#, fuzzy
+msgid "Create the selected type"
+msgstr "Poista valitut kohteet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:303
+#, fuzzy
+msgid "Create a new part or prototype?"
+msgstr "Luo uusi malli tai esikuva"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:304
+msgid "Update custom file and close"
+msgstr "Päivitä tiedosto ja sulje ikkuna"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:305
+msgid "Executes the next step of the demo"
+msgstr "Suorittaa seuraavan vaiheen demossa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:306
+msgid "Skip to next demo"
+msgstr "Siirry seuraavaan demoon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:307
+msgid "Stops the demonstration and returns you to XTrackCAD"
+msgstr "Pysäyttää demon ja palaa XTrackCADin normaaliin tilaan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:308
+msgid "Select speed of Playback"
+msgstr "Valitse toiston nopeus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:309
+msgid "This is where comments about the demo are displayed"
+msgstr "Tässä näytetään demojen kommentit"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:346
+msgid "Move the Main canvas if you drag near the edge"
+msgstr "Siirrä näkymää automaattisesti raahattaessa hiirellä lähellä reunoja"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:347
+msgid "Color tracks by layer or individually"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:348
+#, fuzzy
+msgid "Color draw objects by layer or individually"
+msgstr "Väritä raiteet ja muut objektit tasojen mukaan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:349
+msgid "Controls the drawing of hidden tracks"
+msgstr "Piilossa olevien raiteiden piirtotapa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:350
+msgid "Controls the drawing of End-Points"
+msgstr ""
+"Näytetäänkö raiteiden päätepisteet kaikissa raiteissa, vaihteissa vai ei "
+"missään"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:351
+msgid "How to draw track ties"
+msgstr "Ratapölkkyjen piirtotapa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:352
+msgid "Show crosshair at center of curves"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:353
+msgid "Drawing scale when to draw tracks with 2 rails"
+msgstr ""
+"Näytön mittakaavan raja-arvo, jolloin raiteet piirretään yhtenä tai kahtena "
+"kiskona."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:354
+msgid "Drawing scale of the map window"
+msgstr "Karttaikkunan piirtomittakaava"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:355
+msgid "Whether the main layout is updated while dragging on the Map"
+msgstr "Päivitetäänkö pääikkunan näkymä kartassa valitun alueen mukaan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:356
+msgid "Enable labels for Turnouts, Flextrack Lengths and Elevations"
+msgstr "Määrittelee missä kohteissa näytetään merkintöjä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:357
+msgid "When to label Turnout, Flextrack Lengths and Elevations"
+msgstr ""
+"Milloin näytetään merkinnät. Loitonnettaessa tästä arvosta, merkinnät eivät "
+"enää näy."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:358
+msgid "Font size for labels on layout"
+msgstr "Merkintöjen kirjasinkoko ratasuunnitelmassa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:359
+msgid "Label elements on the Hot Bar"
+msgstr "Hot Bar:ssa esitettävät merkinnät"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:360
+msgid "Label elements on layout"
+msgstr "Merkintöjen sisältö ratasuunnitelmassa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:361
+msgid "Label elements for lists"
+msgstr "Luetteloissa näytettävät merkinnät"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:362
+msgid "How to group cars on the Train Hot Bar"
+msgstr "Miten vaunut ja veturit ryhmitellään Junat-Hot Bar:ssa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:363
+msgid "Delay (in mS) between updating train movements"
+msgstr "Junien piirtoväli ajettaessa (millisekunteina)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:364
+msgid "Don't show trains in tunnels when tunnels are hidden"
+msgstr ""
+"Ei näytetä junia tunneleissa, jos tunnelien piirtotapa on \"piilotettu\""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:365
+msgid "Display unconnected endpoints of track with special marks"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:366
+msgid "Whether the Main Drawing Area shows as much of the room as possible"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:367
+msgid "Don't hide system cursor when program cursors are showing"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:369
+msgid "Width of the lines"
+msgstr "Viivojen paksuus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:370
+msgid "Color of the lines"
+msgstr "Viivojen väri"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:371
+msgid "List of types of Lumber"
+msgstr "Luettelo puutavaran tyypeistä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:372
+msgid "Color of Benchwork"
+msgstr "Runkorakenteen väri"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:373
+msgid "Orientation of Benchwork"
+msgstr "Runkorakenteen suunta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:374
+msgid "Size of Dimension Arrows"
+msgstr "Mittajanan nuolten koko"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:375
+#, fuzzy
+msgid "Width of Box"
+msgstr "Ratapenkan leveys"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:376
+#, fuzzy
+msgid "Height of Box"
+msgstr "Päätepisteen korkeus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:377
+#, fuzzy
+msgid "Angle of Line"
+msgstr "Kulma (asteina)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:378
+#, fuzzy
+msgid "Radius of Curve"
+msgstr "Säde2"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:380
+msgid "This controls the sharpness of the easement curve"
+msgstr "Tällä säädellään kaarreloivennuksen jyrkkyyttä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:381
+msgid "Minimum radius"
+msgstr "Pienin karresäde"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:382
+msgid "Maximum offset"
+msgstr "Suurin siirtymä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:383
+msgid "Easement length"
+msgstr "Kaarreloivennuksen pituus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:384
+msgid ""
+"These radio buttons are a short-cut for Values of 0.0, 0.5, 1.0 and 2.0. "
+"None turns Easements off"
+msgstr ""
+"Nämä painikkeet ovat pikavalintoja arvoille 0,0, 0,5, 1,0 ja 2,0. Mikään "
+"näistä ei poista kaarreloivennusta käytöstä."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:385
+msgid "Complete easement selection"
+msgstr "Hyväksy kaarreloivennukse asetukset ja sulje ikkuna"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:386
+msgid "Type of elevation"
+msgstr "Tyyppi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:387
+msgid "Height of End Point"
+msgstr "Päätepisteen korkeus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:388
+msgid "Compute elevation based on neighbors"
+msgstr "Laske korkeudet viereisten perusteella"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:389
+msgid "Compute grade based on neighbors"
+msgstr "Laske nousukulma viereisten perusteella"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:390
+msgid "Specify a name for an End-Point"
+msgstr "Määrittele päätepisteen nimi (aseman nimi)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:392
+msgid "Print parts list"
+msgstr "Tulosta osaluettelo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:393
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:543
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:666
+msgid "Invoke the Print Setup dialog"
+msgstr "Avaa tulostusasetusten ikkuna"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:394
+msgid "Save parts list to file"
+msgstr "Tallenna osaluettelo tiedostoon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:395
+msgid "This is the list of parts for the layout"
+msgstr "Tämä on ratasuunnitelman osaluettelo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:396
+msgid "Enable prices on the Parts List"
+msgstr "Näytä hinnat osaluettelossa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:397
+#, fuzzy
+msgid "Enable index listing on the Parts List"
+msgstr "Näytä hinnat osaluettelossa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:398
+msgid "Save the note and close window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:399
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:400
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:480
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:481
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:617
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:618
+#, fuzzy
+msgid "Set the position for the note"
+msgstr "Määrittelee kääntöpöydän halkaisijan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:401
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:482
+#, fuzzy
+msgid "Set the layer for the note"
+msgstr "Määrittelee kääntöpöydän halkaisijan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:402
+#, fuzzy
+msgid "Enter the title of the file"
+msgstr "Lisää tekstiä ratasuunnitelmaan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:403
+msgid "Enter the path and name of the file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:404
+msgid "Open the document in the default application"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:405
+msgid "Select the file from your system"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:406
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:409
+msgid "Spacing between major grid lines"
+msgstr "Ruudukon pääviivojen väli"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:407
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:410
+msgid "Allows the spacing to be subdivided"
+msgstr "Aliviivojen jako"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:408
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:411
+msgid "Specifies if positions are snaped in this direction"
+msgstr "Määrittelee kohdistetaanko tässä suunnassa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:412
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:413
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:414
+msgid "Shows the origin and angle of the grid"
+msgstr "Ruudukon origo ja kulma"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:415
+msgid "Specifies if the grid is shown"
+msgstr "Määrittelee näytetäänkö ruudukko"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:416
+msgid "Completes the grid specification"
+msgstr "Hyväksy ruudukon asetukset"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:420
+msgid "Number of segments in Group"
+msgstr "Lohkojen määrä ryhmässä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:421
+msgid "Replace the Selected object with the new definition?"
+msgstr "Korvaa valittu objekti uudella määrittelyllä?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:422
+msgid "Creates a new Structure (or Turnout)"
+msgstr "Luo uuden rakennuksen (tai raideosan)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:423
+msgid "Elevation difference of Helix End-Points"
+msgstr "Päätepisteiden välinen korkeusero"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:424
+msgid "Helix Radius"
+msgstr "Helixin säde"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:425
+msgid "Number of turns in the helix"
+msgstr "Kokonaisten kierrosten lukumäärä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:426
+#, fuzzy
+msgid "Angle between helix entrance and exit"
+msgstr "Sisäänmenon ja ulostulon välinen kulma"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:427
+msgid "Grade in helix"
+msgstr "Nousukulma"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:428
+#, fuzzy
+msgid "Separation between helix layers including baseboard, track, etc"
+msgstr "Helixin kerrosten välinen etäisyys"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:429
+msgid "Index numbers of objects, separated by commas"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:430
+#, fuzzy
+msgid "Desired curve radius between straight tracks"
+msgstr "Luo suora raideosa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:431
+msgid "Layer list"
+msgstr "Tasoluettelo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:432
+msgid "Layer Name"
+msgstr "Tason nimi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:433
+msgid "Hide Layer Button on MenuBar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:434
+msgid "Color of layer"
+msgstr "Tason väri"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:435
+msgid "Layer is drawn on Main window"
+msgstr "Taso piirretään pääikkunaan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:436
+msgid "Layer cannot be changed"
+msgstr "Tasoa ei voi muokata"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:437
+msgid "Use color for this Layer if color-by-layer is set"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:438
+msgid "Other Layers this Layer also shows/hides"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:439
+msgid "Layer is a Module"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:440
+msgid "Layer is drawn on Map window"
+msgstr "Taso piirretään kartalle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:441
+msgid "Layer inherits settings from Layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:442
+#, fuzzy
+msgid "Specifies the Modelling Scale for this Layer"
+msgstr "Määrittelee mittakaavan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:443
+#, fuzzy
+msgid "Specifies the rail gauge for this Layer"
+msgstr "Määrittelee raideleveyden"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:444
+msgid ""
+"Specifies minimum track radius for this layer. Tracks with a smaller radius "
+"are considered exceptional."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:445
+msgid ""
+"Specifies maximum track grade percent (%) for this layer. Tracks with a "
+"larger grade are considered exceptional."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:446
+#, fuzzy
+msgid "Specifies the tie length for this layer."
+msgstr "Määrittelee kääntöpöydän halkaisijan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:447
+#, fuzzy
+msgid "Specifies the tie width for this layer."
+msgstr "Määrittelee kääntöpöydän halkaisijan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:448
+#, fuzzy
+msgid "Specifies the tie spacing for this layer."
+msgstr "Määrittelee ympyräradan säteen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:449
+#, fuzzy
+msgid "Add a new layer after the selected layer"
+msgstr "Poista valitut kohteet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:450
+msgid "Delete the selected layer. There must be no objects in it."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:451
+msgid "Reset the layer to layout defaults"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:452
+msgid "Number of layer buttons to show"
+msgstr "Työkalurivillä näytettävien tasopainikkeiden lukumäärä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:453
+msgid "Number of objects in this layer"
+msgstr "Objektien lukumäärä tällä tasolla"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:454
+msgid "Settings File to load when this layer is made current"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:456
+msgid "Load layer configuration from default"
+msgstr "Lataa oletusasetukset tiedostosta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:457
+msgid "Save current layer configuration as default"
+msgstr "Tallenna nykyiset tasojen asetukset oletuksiksi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:458
+msgid "Overwrite layer configuration with system default values"
+msgstr "Käytä järjestelmän oletusasetuksia"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:459
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:460
+msgid "Specifies the size of the room (in inches or centimeters)"
+msgstr "Määrittele huoneen koko (senttimetreinä tai tuumina)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:461
+#, fuzzy
+msgid "Specifies the layout Title that will appear on printouts"
+msgstr "Ratasuunnitelman otsikko. Tämä näkyy tulostuksissa."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:462
+#, fuzzy
+msgid "Specifies the layout Subtitle that will appear on printouts"
+msgstr "Ratasuunnitelman otsikko. Tämä näkyy tulostuksissa."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:463
+msgid "Specifies the Modelling Scale"
+msgstr "Määrittelee mittakaavan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:464
+msgid "Specifies the rail gauge, ie. the distance between the rails"
+msgstr "Määrittelee raideleveyden"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:465
+msgid ""
+"Specifies minimum track radius (in inches or centimeters). Tracks with a "
+"smaller radius are considered exceptional."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:466
+msgid ""
+"Specifies maximum track grade expressed as a percent (%). Tracks with a "
+"larger grade are considered exceptional."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:467
+#, fuzzy
+msgid "Specifies the tie length for the layout."
+msgstr "Määrittelee kääntöpöydän halkaisijan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:468
+#, fuzzy
+msgid "Specifies the tie width for the layout."
+msgstr "Määrittelee kääntöpöydän halkaisijan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:469
+#, fuzzy
+msgid "Specifies the tie spacing for the layout."
+msgstr "Tämä on ratasuunnitelman osaluettelo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:470
+#, fuzzy
+msgid "Select the background image"
+msgstr "Valitsee piirtotason"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:471
+msgid "Remove the background image"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:472
+#, fuzzy
+msgid "Specifies the x offset of the bottom left of the background image"
+msgstr "Määrittele huoneen koko (senttimetreinä tai tuumina)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:473
+#, fuzzy
+msgid "Specifies the y offset of the bottom left of the background image"
+msgstr "Määrittele huoneen koko (senttimetreinä tai tuumina)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:474
+msgid ""
+"Specifies how large the bottom edge of the background image should be in "
+"model units"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:475
+msgid ""
+"Specifies the screening of the background image from 0 (none) to 100% "
+"(vanishes)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:476
+#, fuzzy
+msgid "Specifies the rotation angle of the background image in degrees"
+msgstr "Määrittelee annetaanko kulmat asteina vai risteysnumerona"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:477
+msgid "Write a copy of current settings to a named file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:478
+msgid "Override current settings from a named file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:479
+msgid "Save the link and close window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:483
+#, fuzzy
+msgid "Enter the title of the linked webpage"
+msgstr "Muuttaa syötettävän tekstin kokoa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:484
+#, fuzzy
+msgid "Enter the URL for the webpage"
+msgstr "Lisää tekstiä ratasuunnitelmaan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:485
+msgid "Open the webpage in your browser"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:486
+#, fuzzy
+msgid "Move by X"
+msgstr "Siirrä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:487
+#, fuzzy
+msgid "Move by Y"
+msgstr "Siirrä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:490
+msgid ""
+"This is the body of the Note. To change this select Modify from the File "
+"Menu"
+msgstr ""
+"Tämä on muistiinpanon runko. Muuttaaksesi tätä, valitse Tiedosto-valikosta "
+"Muokkaa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:492
+msgid "Specifies number of pixels per inch (or centimeter)"
+msgstr "Määrittelee pikseleiden määrän tuumalla (tai sentillä)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:494
+msgid ""
+"Specifies whether Layout Titles, Borders or Track Centerlines are printed on "
+"the BitMap"
+msgstr ""
+"Määritelee tulostetaanko ratasuunnitelman otsikot, reunukset tai ratojen "
+"keskiviivat"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:495
+#, fuzzy
+msgid ""
+"Specifies the separation between the original track and the parallel track/"
+"line"
+msgstr "Määrittelee rinnakkaisten raiteiden etäisyyden toisistaan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:496
+msgid ""
+"Specifies the a factor that increases the seperation as the radius of the "
+"original track reduces. 0.0 means no increase."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:497
+msgid "Enter your name as specified in the XTrackCAD Registration Notice"
+msgstr "Syötä nimesi kuten XTrackCAD rekisteröintitiedotteessa on määritelty"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:498
+msgid "Enter the key value as specified in the XTrackCAD Registration Notice"
+msgstr "Syötä avain kuten XTrackCAD rekisteröintitiedotteessa on määritelty"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:499
+msgid "Validates the name and key. Terminates the registration command"
+msgstr "Vahvistaa nimen ja avainen, sekä päättää rekisteröitymisen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:500
+#, fuzzy
+msgid "0 degrees is up or to the right"
+msgstr "Onko 0° ylhäällä vai oikealla"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:501
+msgid "Choose english (inches) or metric (centimeters)"
+msgstr ""
+"Valitse englantilaiset (tuumat) tai metrijärjestelmän (sentit) mukaiset mitat"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:502
+msgid "How to display length measurements"
+msgstr "Pituusmittojen esitystapa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:503
+msgid "Do not create tracks to be shorter than this value"
+msgstr "Älä luo tätä lyhyempiä raiteita"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:504
+msgid "Maximum distance between connected end points"
+msgstr "Suurin sallittu etäisyys kahden liitettävän raiteen välillä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:505
+msgid "Minimum angle between connected End-Points"
+msgstr "Suurin sallittu kulma kahden liitettävän raiteen välillä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:506
+msgid "Specifies the minimum angle between tracks connected to a turntable"
+msgstr ""
+"Määrittelee pienimmän kääntöpöydästä lähtevien raiteiden välisen kulman"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:507
+msgid "Trains will crash above this speed"
+msgstr ""
+"Suurin sallittu vaunujen kytkentänopeus. Suuremmalla nopeudella aiheutuu "
+"törmäys."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:508
+msgid "Enable/Disable balloon popup help windows"
+msgstr "Käytetäänkö pikaopasteita (tooltip)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:509
+msgid "Enable/Disable show of flextrack on hotbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:510
+msgid "How far you can move the mouse before its considered a drag"
+msgstr ""
+"Kuinka pitkälle hiirtä voi liikuttaa ennen kuin se käsitetään raahaamiseksi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:511
+msgid "How long you can hold a mouse button down before its considered a drag"
+msgstr ""
+"Kuinka kauan hiiren painiketta voi pitää alhaalla ennen kuin se käsitetään "
+"raahaamiseksi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:512
+msgid "Minimum distance (in pixels) between grid lines/ticks"
+msgstr "Ruudukon viivojen pienin etäisyys toisistaan pikseleinä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:513
+msgid ""
+"Specifies the Check Point frequency; number of modifications made since the "
+"last checkpoint."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:514
+msgid "Specifies the number of checkpoints after save before auto-saving."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:515
+msgid "Resume work on last layout or start with new layout"
+msgstr "Jatka edellistä ratasuunnitelmaa tai aloita uusi ratasuunnitelma"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:517
+msgid "Updated cost of current selected item"
+msgstr "Syötä valitulle tuotteelle uusi hinta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:519
+msgid "Selection list for prices"
+msgstr "Hintojen valintaluettelo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:520
+#, fuzzy
+msgid "Length of a piece of flex-track"
+msgstr "Määrätyn mittaisen fleksin hinta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:521
+msgid "Price of specified length of flex-track"
+msgstr "Määrätyn mittaisen fleksin hinta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:523
+#, fuzzy
+msgid "Controls the printing of a centerline of track cmdPrint"
+msgstr "Piilossa olevien raiteiden piirtotapa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:524
+msgid "Controls the reduction (scale) of the printout"
+msgstr "Tulostuksen mittakaava"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:525
+msgid "Scaled page width (Scale times physical page width)"
+msgstr "Skaalattu sivun leveys (mittakaava x fyysinen sivun leveys)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:526
+msgid "Sets page size to the maximum (based on scale and physical page size)"
+msgstr ""
+"Aseta sivun koko suurimmaksi mahdolliseksi mittakaavan ja fyysisen sivukoon "
+"mukaan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:527
+msgid "Scaled page height (Scale times physical page height)"
+msgstr "Skaalattu sivun korkeus (mittakaava x fyysinen sivun korkeus)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:528
+msgid "Sets scale, origin and angle for a one page printout of the layout"
+msgstr ""
+"Asettaa tulostusmittakaavan, origon ja kulman siten, että koko "
+"ratasuunnitelma mahtuu yhdelle sivulle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:529
+msgid "Print page in Portrait or Landscape format"
+msgstr "Tulosta sivu pysty- tai vaakasuunnassa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:530
+msgid "Order of printing pages"
+msgstr "Sivujen tulostusjärjestys"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:531
+msgid "Print Title, Date, Author and other information at bottom of page?"
+msgstr "Tulosta otsikko, päivämäärä, rekijä ja muut tiedot sivun alaosaan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:532
+msgid "Ignore unprintable page margins?"
+msgstr "Ohita tulostumattomat marginaalit?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:533
+msgid "Print Registration Marks at 1:1?"
+msgstr "Tulosta sivujen kohdistusmerkinnät tulostusmittakaavan ollessa 1:1?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:534
+msgid "Print Snap Grid?"
+msgstr "Tulosta kohdistusruudukko?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:535
+#, fuzzy
+msgid "Print Rulers at the layout edge only, or on all page edges, or nowhere?"
+msgstr "Tulosta viivaimet kaikilla reunoilla?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:536
+msgid "Print Roadbed Outline?"
+msgstr "Tulosta ratapenkan ulkoreuna?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:537
+msgid "Print Roadbed Outline"
+msgstr "Tulosta ratapenkan ulkoreuna"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:538
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:539
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:541
+msgid ""
+"Origin of the print grid. This is useful if you want to reprint a set of "
+"pages"
+msgstr ""
+"Tulostusruudukon origo. Tämä on hyödyllinen tulostettaessa sivuja uudelleen"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:540
+msgid "Resets the origin and angle to 0"
+msgstr "Palauttaa origon ja kulman nollaksi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:542
+msgid "Deselects all pages"
+msgstr "Poista sivujen valinnat"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:544
+msgid "Print selected pages and terminates the print command"
+msgstr "Tulostaa valitut sivut ja päättää tulostuskomennon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:545
+#, fuzzy
+msgid "List of loaded, shown or hidden parameter files"
+msgstr "Luettelo ladatuista ja saatavilla olevista parametritiedostoista"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:546
+msgid "Show parameter files by names or descriptions"
+msgstr "Näytä parametritiedostojen nimet tai kuvaukset"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:547
+#, fuzzy
+msgid "Toggle the shown status of the selected parameter file"
+msgstr "Lataa tai poista valittu parametritiedosto"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:548
+#, fuzzy
+msgid "Find extra parameter files from the filesystem"
+msgstr "Etsi ladattava parametritiedosto"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:549
+#, fuzzy
+msgid "Bookmark parameter files"
+msgstr "Luetaan parametritiedostot"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:550
+#, fuzzy
+msgid "Find parameter files from the system library"
+msgstr "Etsi ladattava parametritiedosto"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:551
+msgid "Update parameter file list"
+msgstr "Päivitä parametritiedostojen luettelo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:552
+#, fuzzy
+msgid "Reload parameter file from list"
+msgstr "Luetaan parametritiedostot"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:553
+#, fuzzy
+msgid "Select all parameter files shown"
+msgstr "Luetaan parametritiedostot"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:554
+#, fuzzy
+msgid "Remove parameter files from active list"
+msgstr "Luetaan parametritiedostot"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:555
+msgid "Profile of specified path"
+msgstr "Määritellyn reitin profiili"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:556
+msgid "Clear the profile"
+msgstr "Tyhjennä profiilikäyrä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:557
+msgid "Print the profile"
+msgstr "Tulosta profiili"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:559
+msgid "Stop recording"
+msgstr "Lopeta nauhoitus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:560
+msgid "Insert a message"
+msgstr "Lisää viesti"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:561
+msgid "End a message"
+msgstr "Lopeta viestin kirjoitus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:562
+msgid "Message body"
+msgstr "Viestin runko"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:563
+msgid "Possible turnouts"
+msgstr "Mahdolliset raideosat"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:564
+msgid "Skip this turnout"
+msgstr "Hyppää tämän vaihteen yli"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:566
+msgid "Manufacturer of Object"
+msgstr "Valmistaja"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:567
+msgid "Description of Object"
+msgstr "Objektin kuvaus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:568
+msgid "Part Nuber of Object"
+msgstr "Tuotekoodi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:570
+msgid "Rescale by Scale Conversion or by Ratio"
+msgstr "Muunna käyttämällä mittakaavaa tai suhdelukua"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:571
+msgid "Original Scale of the selected objects"
+msgstr "Valittujen objektien alkuperäinen mittakaava"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:572
+#, fuzzy
+msgid "Original Gauge of the selected objects"
+msgstr "Valittujen objektien alkuperäinen raideleveys"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:573
+msgid "New Scale of the selected objects"
+msgstr "Valittujen objektien uusi mittakaava"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:574
+msgid "New Gauge of the selected objects"
+msgstr "Valittujen objektien uusi raideleveys"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:575
+msgid "Change track dimensions to new scale"
+msgstr "Muuta raiteiden mitat uuteen mittakaavaan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:576
+msgid "Change size by this amount"
+msgstr "Muuta kokoa tämän suhdeluvun verran"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:578
+msgid "Snap Grid Line and Division"
+msgstr "Kohdistusruudukko ja jakomerkinnät"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:579
+msgid "X and Y position markers"
+msgstr "Kohdistimen X ja Y sijainnin markkerit"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:580
+msgid "Border rulers, room boundaries and table edges"
+msgstr "Reunaviivaimet, huoneen rajat sekä pöydän reunat"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:581
+msgid "Primary Axis of grid rotation"
+msgstr "Ruudukon asettelun ensisijainen akseli"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:582
+msgid "Secondary Axis of grid rotation"
+msgstr "Ruudukon asettelun toissijainen akseli"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:583
+msgid "Unselected tracks"
+msgstr "Normaalit raideosat, joita ei ole valittu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:584
+msgid "Selected tracks"
+msgstr "Valitut raiteet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:585
+msgid "Color of tracks on the Profile path"
+msgstr "Profiilin muokkauksessa olevat raiteet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:586
+msgid "Color of Exceptional tracks"
+msgstr "Erityisraiteiden väri"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:587
+msgid "Color of track ties"
+msgstr "Ratapölkkyjen väri"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:588
+msgid "Updates the colors"
+msgstr "Pävitä värit ja sulje ikkuna"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:589
+msgid "Angle in degrees"
+msgstr "Kulma (asteina)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:590
+msgid "Rotate object(s) by specified amount"
+msgstr "Pyöritä objekteja määrätyn verran"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:591
+msgid "Enter one or more words as search terms"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:592
+msgid "Remove the current filter and show all files"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:593
+#, fuzzy
+msgid "Find matching file descriptions"
+msgstr "Valitse ja raahaa merkintöjä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:594
+msgid "Search results"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:595
+msgid "Show descriptions or filenames in results"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:596
+msgid "Select how well the definitions must fit the current layout scale"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:597
+#, fuzzy
+msgid "Add selected entries into parameter file list"
+msgstr "Siirrä valitut kohteet parametritiedostoon"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:598
+#, fuzzy
+msgid "Select All found entries"
+msgstr "Hintojen valintaluettelo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:599
+msgid "Reload the system library contents for finding"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:600
+msgid "Choose commands to be sticky"
+msgstr "Valitse pysyvät komennot"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:601
+msgid "Make the commands sticky"
+msgstr "Hyväksy asetukset ja sulje ikkuna"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:602
+msgid "List of available structure"
+msgstr "Luettelo saatavilla olevista rakennuksista"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:603
+msgid "Diagram of the selected structure"
+msgstr "Valitun rakennuksen kuva"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:604
+msgid "Hide Selection window when placing Structure"
+msgstr "Piilota valintaikkuna rakennuksen asettamisen ajaksi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:605
+msgid "Drawing scale and size"
+msgstr "Mittakaava ja koko"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:606
+msgid "Complete structure placement"
+msgstr "Lisää rakennus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:607
+msgid "Choose a Pier number"
+msgstr "Valitse pilarin numero"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:608
+msgid "Name of the Motor"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:609
+msgid "Value when switch is normal"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:610
+msgid "Value when the switch is reversed"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:611
+msgid "Value for a positive comfirmation of switch position"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:613
+#, fuzzy
+msgid "Controls the color of the entered text"
+msgstr "Muuttaa syötettävän tekstin kokoa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:614
+msgid "If the text is boxed"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:615
+#, fuzzy
+msgid "Save and close editor dialog"
+msgstr "Hyväksy asetukset ja sulje ikkuna"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:616
+msgid "Set layer for the note"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:619
+msgid "Enter your addiional information here"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:620
+msgid "Useful information about the program"
+msgstr "Hyödyllisiä tietoja ohjelmasta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:621
+msgid "Show Tip of the Day every time the program starts"
+msgstr "Näytä päivän vinkki jokaisen käynnistyksen yhteydessä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:622
+msgid "Show the next Tip of the Day"
+msgstr "Näytä seuraava vinkki"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:623
+msgid "Show the previous Tip of the Day"
+msgstr "Näytä edellinen vinkki"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:625
+msgid "List of butten groups and their state in the toolbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:626
+msgid "Set all button groups visible in toolbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:627
+msgid "Invert the visibility of button groups"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:628
+msgid "Close dialog and configure the toolbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:629
+msgid "List of Cars"
+msgstr "Luettelo vaunuista ja vetureista"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:630
+msgid "List of active trains"
+msgstr "Luettelo aktiivisista junista"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:632
+msgid "Train odometer"
+msgstr "Junan matkamittari"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:633
+msgid "Reset odometer to 0"
+msgstr "Nollaa matkamittarin lukema"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:634
+msgid "Find train on layout"
+msgstr "Etsi juna ratasuunnitelmasta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:635
+msgid "Follow train around layout"
+msgstr "Seuraa junaa ratasuunnitelmassa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:636
+msgid "Flip direction at End Of Track"
+msgstr "Muuta kulkusuunta automaattisesti radan päässä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:637
+msgid "Change direction of train"
+msgstr "Muuta junan kulkusuunta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:638
+msgid "Stop the train"
+msgstr "Pysäytä juna"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:639
+msgid "List of available turnouts for the current scale"
+msgstr "Luettelo saatavilla olevista raideosista tässä mittakaavassa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:640
+msgid ""
+"Diagram of the currently selected turnout. Click on a End-Point to select "
+"the Active End-Point"
+msgstr "Valitun raideosan kaaviokuva. Valitse aktiivinen päätepiste hiirellä."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:641
+msgid ""
+"A menu list of various type of turnouts and sectional tracks you can define"
+msgstr ""
+"Valikko eri tyyppisistä vaihteista ja palaraiteista joita voit määritellä"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:642
+msgid "Hide Selection window when placing Turnout"
+msgstr "Piilota valintaikkuna vaihteen asettamisen ajaksi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:643
+msgid "The selected Active End-Point"
+msgstr "Valittu aktiivinen päätepiste"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:644
+msgid "Current selected turnout, (displayed in the diagram window)"
+msgstr "Valittu raideosa (kaaviokuva ikkunassa)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:645
+msgid "One the End-Points that can be selected"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:647
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:648
+msgid "Angle of the specified track to the center line of the turnout"
+msgstr "Raiteen ja vaihteen keskilinjan välinen kulma"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:649
+msgid "Specifies if angles are entered as Frog Numbers or in degrees"
+msgstr "Määrittelee annetaanko kulmat asteina vai risteysnumerona"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:652
+msgid "Turnout description (Manuf., Size, Part Number, etc)"
+msgstr "Raideosan kuvaus (valmistaja, koko, tuotekoodi, jne.)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:653
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:654
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:655
+msgid "Length from the base to the end of the specified track"
+msgstr "Etäisyys vaihteen alusta raiteen päähän"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:657
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:658
+msgid "Offset of the track End-Point from the center line of the turnout"
+msgstr "Raiteen päätepisteen ja vaihteen keskilinjan välinen etäisyys"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:661
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:662
+msgid "Prints a full size diagram of the turnout for checking"
+msgstr "Tulostaa täysikokoisen kaavion vaihteesta tarkastusta varten"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:663
+msgid "Color of Roadbed lines"
+msgstr "Ratapenkan viivan väri"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:664
+msgid "Width of Roadbed lines"
+msgstr "Ratapenkan viivan paksuus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:665
+msgid "Width of Roadbed"
+msgstr "Ratapenkan leveys"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:667
+msgid "Closes the window and returns to the Turnout Selection window"
+msgstr "Sulkee ikkunan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:668
+msgid "Specifies the diameter of the turntable"
+msgstr "Määrittelee kääntöpöydän halkaisijan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:669
+msgid "Old Turnout title"
+msgstr "Vanha raideosan otsikko"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:670
+msgid "List of available titles"
+msgstr "Luettelo saatavilla olevista otsikoista"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:671
+msgid "Leave the Turnouts' title unchanged"
+msgstr "Älä muuta raideosan otsikkoa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:672
+msgid "Invoke the Parameter Files dialog"
+msgstr "Avaa parametritiedostot ikkuna"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:673
+msgid "List of available turnouts"
+msgstr "Luettelo saatavilla olevista raideosista"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:674
+msgid "Update the Turnouts' title"
+msgstr "Päivitä raideosan otsikko"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:678
+msgid "Sample"
+msgstr "Näyte"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:680
+msgid "Slant"
+msgstr "Kursivoitu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:681
+msgid "Font selection dialog"
+msgstr "Kirjasimen valinta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:682
+msgid "Weight"
+msgstr "Lihavoitu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:683
+msgid "Printer Abort Window"
+msgstr "Tulostuksen keskeytys"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:684
+msgid "Print to filename"
+msgstr "Tulostuksen tiedostonimi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:685
+msgid "Specify Postscript font alias mapping"
+msgstr "Määrittele Postscript kirjasinalias"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:686
+msgid ""
+"Displays the Print Setup window to change printers, orientation, paper size, "
+"etc."
+msgstr ""
+"Näyttää tulostusasetusikkunan, josta voi valita tulostimen, muutaa paperin "
+"koon, yms."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:687
+msgid "Closes this dialog"
+msgstr "Sulkee tämän ikkunan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:688
+msgid "Page orientation"
+msgstr "Sivun suunta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:689
+msgid "Unprintable margins"
+msgstr "Tulostumattomat marginaalit"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:690
+msgid "Updates and closes this dialog"
+msgstr "Hyväksy asetukset ja sulje ikkuna"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:691
+msgid "Choose paper size"
+msgstr "Valitse paperin koko"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:692
+msgid "Choose printer"
+msgstr "Valitse tulostin"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:693
+msgid "Print test page"
+msgstr "Tulosta testisivu"
+
+#~ msgid "Invoke designer editor"
+#~ msgstr "Muokkaa valittua kohdetta"
+
+#~ msgid "Controls which Command Buttons are displayed"
+#~ msgstr "Valitse työkalurivillä näytettävät painikkeet"
+
+#~ msgid "Desciption"
+#~ msgstr "Kuvaus"
+
+#~ msgid "No paths"
+#~ msgstr "Ei reittejä"
+
+#, fuzzy
+#~ msgid "Predefined Track"
+#~ msgstr "Valitut raiteet"
+
+#~ msgid "Layout"
+#~ msgstr "Ratasuunnitelma"
+
+#, fuzzy
+#~ msgid "Re-edit"
+#~ msgstr "Palauta"
+
+#, fuzzy
+#~ msgid "Update comment"
+#~ msgstr "Kumoa edellinen komento"
+
+#, fuzzy
+#~ msgid "Comment"
+#~ msgstr "Sisältö"
+
+#~ msgid "Scale index (%d) is not valid"
+#~ msgstr "Mittakaavan indeksi (%d) on virheellinen."
+
+#~ msgid ""
+#~ "Scale %s is not valid\n"
+#~ "Please check your %s.xtq file"
+#~ msgstr ""
+#~ "Mittakaava %s ei ole kelvollinen\n"
+#~ "Tarkasta %s.xtq tiedostosi"
+
+#, fuzzy
+#~ msgid "a straight or a curve.\n"
+#~ msgstr "ja suoraksi raideosaksi.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "To create a 1/4\" line, divide the dots-per-inch (DPI) of your display by "
+#~ "4.\n"
+#~ msgstr ""
+#~ "Luodaksesi 1/4 tuuman viivan, jaa näyttösi DPI (pisteitä tuumalla, dots "
+#~ "per inch) neljällä ja sitten piirron mittakaavalla (joka tässä on 2).\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "For MS-Windows the DPI is usually 98, so choose: 98/4 = 24 "
+#~ "(approximately).\n"
+#~ msgstr ""
+#~ "Microsoft Windows käyttää yleensä DPI arvoa 98, joten valitse: 98/4/2 = "
+#~ "12 (suunnilleen).\n"
+
+#, fuzzy
+#~ msgid "For Linux, the DPI is usually 72, so choose: 72/4 = 18.\n"
+#~ msgstr "Linuxissa DPI on usein 72, joten valitse: 72/4/2 = 9.\n"
+
+#, fuzzy
+#~ msgid "Select 2nd track - desired radius %0.3f"
+#~ msgstr "Valitse määriteltävä raideosa"
+
+#~ msgid "Bridge"
+#~ msgstr "Silta"
+
+#, fuzzy
+#~ msgid "Orgin X"
+#~ msgstr "Marginaali"
+
+#~ msgid "Angle = %0.3f"
+#~ msgstr "Kulma = %0.3f"
+
+#~ msgid "Train"
+#~ msgstr "Aja junilla"
+
+#~ msgid "Print Titles"
+#~ msgstr "Tulosta otsikot"
+
+#~ msgid "Print Borders"
+#~ msgstr "Tulosta kehys"
+
+#~ msgid "Print Centerline"
+#~ msgstr "Tulosta keskiviiva"
+
+#~ msgid "Approximate file size: 999.9Mb"
+#~ msgstr "Arvioitu tiedostokoko: 999.9Mt"
+
+#~ msgid "Approximate file size : %0.1fKb"
+#~ msgstr "Arvioitu tiedostokoko: %0.1fKt"
+
+#~ msgid "Approximate file size : %0.1fMb"
+#~ msgstr "Arvioitu tiedostokoko: %0.1fMt"
+
+#, fuzzy
+#~ msgid "Bitmap files (*.png)|*.png"
+#~ msgstr "Bitmap kuvatiedostot|*.bmp"
+
+#~ msgid "BitMap"
+#~ msgstr "BitMap"
+
+#~ msgid "Enter a 8 digit date"
+#~ msgstr "Syötä 8 numeroinen päiväys"
+
+#~ msgid "Enter a Prototype name"
+#~ msgstr "Syötä esikuvan nimi"
+
+#~ msgid "Enter a Part Number"
+#~ msgstr "Syötä tuotekoodi"
+
+#~ msgid "Enter the Car Length"
+#~ msgstr "Syötä vaunun pituus"
+
+#~ msgid "Enter the Car Width"
+#~ msgstr "Syötä vaunun leveys"
+
+#~ msgid "Enter the Truck Centers"
+#~ msgstr "Syötä telien keskipisteiden etäisyys"
+
+#, fuzzy
+#~ msgid "Truck Center Offset must be greater than 0 or 0"
+#~ msgstr ""
+#~ "Telien keskikohtien välisen etäisyyden on oltava vaunun pituutta pienempi"
+
+#~ msgid "Truck Centers must be less than Car Length"
+#~ msgstr ""
+#~ "Telien keskikohtien välisen etäisyyden on oltava vaunun pituutta pienempi"
+
+#~ msgid "Enter the Coupled Length or Coupler Length"
+#~ msgstr "Syötä pituus kytkimineen tai kytkimen pituus"
+
+#~ msgid "Enter the Coupled Length"
+#~ msgstr "Syötä pituus kytkimineen"
+
+#~ msgid "Enter a item Index"
+#~ msgstr "Syötä indeksi"
+
+#~ msgid "Purchase Price is not valid"
+#~ msgstr "Ostohinta ei ole kelvollinen"
+
+#~ msgid "Current Price is not valid"
+#~ msgstr "Nykyinen hinta ei ole kelvollinen"
+
+#~ msgid "Purchase Date is not valid"
+#~ msgstr "Ostopäivä ei ole kelvollinen"
+
+#~ msgid "Service Date is not valid"
+#~ msgstr "Huollon päiväys ei ole kelvollinen"
+
+#~ msgid "Personal Preferences"
+#~ msgstr "Omat asetukset"
+
+#~ msgid "Drag to place next end point"
+#~ msgstr "Raahaa asettaaksesi seuraava päätepiste"
+
+#~ msgid "Check Pointing"
+#~ msgstr "Automaattinen varmennus"
+
+#~ msgid "&Loosen Tracks"
+#~ msgstr "Irroita raiteet"
+
+#, fuzzy
+#~ msgid "Reload Library"
+#~ msgstr "Lataa"
+
+#, fuzzy
+#~ msgid "Merge Cornu"
+#~ msgstr "Yhdistä kaarteet"
+
+#~ msgid "%d Track(s) loosened"
+#~ msgstr "%d raidetta irroitettu"
+
+#~ msgid "No tracks loosened"
+#~ msgstr "Yhtään raidetta ei irroitettu"
+
+#, fuzzy
+#~ msgid "Save format:"
+#~ msgstr "Sivun muotoilu"
+
+#~ msgid "Font Select"
+#~ msgstr "Kirjasimen valinta"
+
+#~ msgid "Home"
+#~ msgstr "Aloitussivu"
+
+#, fuzzy
+#~ msgid "Contents"
+#~ msgstr "Sisältö"
+
+#~ msgid ""
+#~ "The required configuration files could not be located in the expected "
+#~ "location.\n"
+#~ "\n"
+#~ "Usually this is an installation problem. Make sure that these files are "
+#~ "installed in either \n"
+#~ " %s/share/xtrkcad or\n"
+#~ " /usr/lib/%s or\n"
+#~ " /usr/local/lib/%s\n"
+#~ "If this is not possible, the environment variable %s must contain the "
+#~ "name of the correct directory."
+#~ msgstr ""
+#~ "Tarvittavia asetustiedostoja ei löydy oletetuista hakemistoista.\n"
+#~ "\n"
+#~ "Yleensä tämä johtuu virheellisestä asennuksesta. Varmista että nämä "
+#~ "tiedostot on asennettu johonkin seuraavista hakemistoista:\n"
+#~ " %s/share/xtrkcad\n"
+#~ " /usr/lib/%s\n"
+#~ " /usr/local/lib/%s\n"
+#~ "Jos tämä ei ole mahdollista, täytyy ympäristömuuttujan %s sisältää oikean "
+#~ "hakemiston nimi."
+
+#~ msgid "HOME is not set"
+#~ msgstr "HOME ympäristömuuttujaa ei ole asetettu"
+
+#~ msgid "Exit"
+#~ msgstr "Poistu"
+
+#~ msgid "Cannot create %s"
+#~ msgstr "%s luonti ei onnistu."
+
+#, fuzzy
+#~ msgid "Space"
+#~ msgstr "Väli"
+
+#~ msgid ""
+#~ "Pressing the turnout button displays the Turnout Selection window to let "
+#~ "you choose a turnout to place.\n"
+#~ msgstr ""
+#~ "\"Lisää|Palaraide\" valikosta tai vastaava painike työkaluriviltä avaa "
+#~ "palaraiteiden valinta ikkunan, josta voit valita valmiita raideosia "
+#~ "liitettäväksi ratasuunnitelmaasi.\n"
+
+#~ msgid ""
+#~ "Note that once you start to place the turnout on the Main window the "
+#~ "Turnout Selection window disappears. This feature is enabled by the Hide "
+#~ "toggle button on the dialog.\n"
+#~ msgstr ""
+#~ "Huomaa, että kun aloitat raideosan paikoilleen asettelun pääikkunassa, "
+#~ "valintaikkuna katoaa. Tämä voidaan myös estää poistamalla ruksi "
+#~ "valinnasta \"Piilota\".\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Pressing the Close button on the Turnout dialog will end the <Turnout> "
+#~ "command as well as placing the turnout.\n"
+#~ msgstr ""
+#~ "\"Sulje\" painike valintaikkunassa viimeistelee raideosan asettelun ja "
+#~ "lopettaa toiminnon.\n"
+
+#~ msgid "Pressing Close ends the <Turnout> command.\n"
+#~ msgstr "Sulje-painike peruuttaa palaraiteiden asettelun.\n"
+
+#~ msgid ""
+#~ "You can resize and move the Turnout Selection dialog if it obscures the "
+#~ "other windows.\n"
+#~ msgstr ""
+#~ "Voit pienentää tai siirtää raideosien valintaikkunaa, jos se peittää "
+#~ "muita ikkunoita.\n"
+
+#~ msgid "Radius=%s Angle=%0.3f"
+#~ msgstr "Säde=%s Kulma=%0.3f"
+
+#~ msgid "Length=%s Angle=%0.3f"
+#~ msgstr "Pituus=%s Kulma=%0.3f"
+
+#~ msgid "There are no reachable Defined Elevations"
+#~ msgstr "Ei määriteltyjä korkeustasoja saatavilla"
+
+#~ msgid "Elev = %s"
+#~ msgstr "Korkeus = %s"
+
+#~ msgid "Dist = %s"
+#~ msgstr "Etäisyys = %s"
+
+#~ msgid "Select track to modify"
+#~ msgstr "Valitse muokattava raide"
+
+#~ msgid "Drag to create new track segment"
+#~ msgstr "Raahaa luodaksesi uuden raiteen"
+
+#~ msgid "Note: "
+#~ msgstr "Muistiinpano: "
+
+#~ msgid "# End Pt"
+#~ msgstr "Päätepisteitä"
+
+#~ msgid "Print Registration Marks"
+#~ msgstr "Tulosta kohdistusmerkinnät"
+
+#~ msgid "Print Snap Grid"
+#~ msgstr "Tulosta kohdistusruudukko"
+
+#~ msgid "Print Rulers"
+#~ msgstr "Tulosta viivaimet"
+
+#~ msgid "1 page"
+#~ msgstr "1 sivu"
+
+#~ msgid "Connect Sectional Tracks"
+#~ msgstr "Liitä palaraiteet"
+
+#~ msgid "Draw moving track normally"
+#~ msgstr "Piirrä liikuteltavat raiteet normaalisti"
+
+#~ msgid "Draw moving track simply"
+#~ msgstr "Piirrä liikuteltavat raiteet yksinkertaistetuna"
+
+#~ msgid "Draw moving track as end-points"
+#~ msgstr "Piirrä liikuteltavat raiteet päätepisteinä"
+
+#~ msgid "Drag to move selected tracks"
+#~ msgstr "Siirrä valitut raideosat raahaamalla"
+
+#~ msgid " Angle %0.3f"
+#~ msgstr " Kulma %0.3f"
+
+#~ msgid "Simple"
+#~ msgstr "Yksinkertainen"
+
+#~ msgid "End Points"
+#~ msgstr "Päätepisteet"
+
+#~ msgid "Tunnel"
+#~ msgstr "Tunneli"
+
+#~ msgid "TURNOUT "
+#~ msgstr "PALARAIDE "
+
+#~ msgid "%s Files|*.xtc"
+#~ msgstr "%s tiedostot|*.xtc"
+
+#~ msgid "Bitmap files|*.xpm"
+#~ msgstr "Bitmap kuvatiedostot|*.xpm"
+
+#~ msgid "Color Layers"
+#~ msgstr "Väritys tason mukaan"
+
+#~ msgid "End-Points"
+#~ msgstr "Päätepisteet"
+
+#~ msgid "Draw Moving Tracks"
+#~ msgstr "Piirrä liikuteltavat raiteet"
+
+#~ msgid "Unload"
+#~ msgstr "Poista"
+
+#~ msgid "Commands"
+#~ msgstr "Komennot"
+
+#~ msgid "SnapGrid Enable"
+#~ msgstr "Käytä kohdistusruudukkoa"
+
+#~ msgid "A&bove"
+#~ msgstr "Päällimmäiseksi"
+
+#~ msgid "Belo&w"
+#~ msgstr "Alimmaiseksi"
+
+#, fuzzy
+#~ msgid "End Angle 2"
+#~ msgstr "Syötä kulma ..."
+
+#, fuzzy
+#~ msgid "Elev 1"
+#~ msgstr "Korkeus = %0.1f"
+
+#, fuzzy
+#~ msgid "End Radius Center 1: X"
+#~ msgstr "Päätepiste 1: X"
+
+#, fuzzy
+#~ msgid "Elev 2"
+#~ msgstr "Korkeus = %s"
+
+#, fuzzy
+#~ msgid "End Radius Center 2: X"
+#~ msgstr "Päätepiste 2: X"
+
+#~ msgid "General note about the layout"
+#~ msgstr "Ratasuunnitelman muistiinpanoja"
+
+#~ msgid "How to draw track being moved/rotated"
+#~ msgstr "Raiteiden piirtotapa liikuteltaessa tai pyöritettäessä"
+
+#~ msgid ""
+#~ "The length of the straight track is determined by the distance from the "
+#~ "far End-Point and the cursor.\n"
+#~ msgstr ""
+#~ "Suoran raiteen pituus määräytyy päätepisteen ja osoittimen välisen "
+#~ "etäisyyden mukaan.\n"
+
+#~ msgid "First turn off the Snap Grid.\n"
+#~ msgstr "Ota ensin kohdistusruudukko pois käytöstä.\n"
+
+#~ msgid "Rotate the signals and move them to the proper locations.\n"
+#~ msgstr "Pyöritä opastimia ja siirrä ne paikoilleen.\n"
+
+#~ msgid "Rotate the arrow head by 180° and move into position.\n"
+#~ msgstr "Pyöritä nuolenkärkeä 180° ja siirrä se paikoilleen.\n"
+
+#~ msgid ""
+#~ "Now the cursor is about to be moved past the other (far) End-Point of the "
+#~ "straight track. You will receive a warning and the connecting track "
+#~ "turns Red.\n"
+#~ msgstr ""
+#~ "Nyt osoitin siirretään suoran raiteen kauemman päätepisteen ohi. Tästä "
+#~ "varoitetaan tilarivillä ja yhdysraide muuttuu punaiseksi.\n"
+
+#~ msgid ""
+#~ "Drawing lines with the Shift key held down will use the previous line End-"
+#~ "Point as the starting position. This makes it easy to draw connected "
+#~ "lines.\n"
+#~ msgstr ""
+#~ "Jos vaihto-näppäin pidetään painettuna, seuraavan viivan piirto "
+#~ "aloitetaan edellisen viivan loppupäästä. Näin voidaan helposti piirtää "
+#~ "yhdistettyjä viivoja.\n"
+
+#~ msgid ""
+#~ "If you drag a Corner to another Corner the two are merged and the Edge "
+#~ "between them is removed.\n"
+#~ msgstr ""
+#~ "Jos raahaat kulman toisen kulman päälle, ne yhdistetään yhdeksi "
+#~ "kulmapisteeksi.\n"
+
+#~ msgid ""
+#~ "Shift-Right-Click will display a popup-menu that you can use to rotate by "
+#~ "fixed amount (15°, 30°, 45°, 90° or 180°). The demonstration cannot show "
+#~ "the popup-menu but it can show the effects.\n"
+#~ msgstr ""
+#~ "Vaihto + oikea klikkaus avaa ponnahdusvalikon, josta voi pyörittää "
+#~ "määrätyn kulman verran (15°, 30°, 45°, 90° or 180°). Demossa ei voida "
+#~ "näyttää ponnahdusvalikkoa, mutta näytämme toiminnon vaikutuksen.\n"
+
+#~ msgid "Here we will rotate by 90° clockwise (CW).\n"
+#~ msgstr "Pyöritämme 90° myötäpäivään (MP).\n"
+
+#~ msgid ""
+#~ "Another option of the <Rotate> command popup-menu is to Align the "
+#~ "Selected object with some other object.\n"
+#~ msgstr ""
+#~ "Toinen vaihtoehto ponnahdusvalikossa on suunnata valittu objekti jonkin "
+#~ "toisen objektin mukaisesti.\n"
+
+#~ msgid ""
+#~ "First we will click on one line of the Selected object. The angle of "
+#~ "this part of the object will be Aligned.\n"
+#~ msgstr ""
+#~ "Ensin klikkaamme valitun objektin jotakin viivaa. Objekti suunnataan "
+#~ "tämän viivan avulla.\n"
+
+#~ msgid ""
+#~ "Next, we click on an Unselected object. The Selected structure will be "
+#~ "rotated so that the line we clicked on will be parallel to the straight "
+#~ "track.\n"
+#~ msgstr ""
+#~ "Seuraavaksi klikataan valitsematonta objektia. Valittu rakennus "
+#~ "käännetään siten, että valittu viiva on saman suuntainen suoran radan "
+#~ "kanssa.\n"
+
+#~ msgid ""
+#~ "If we drag the mouse across the track, we can flip the structure by "
+#~ "180°. This is similar to how we place turnouts.\n"
+#~ msgstr ""
+#~ "Jos raahaamme hiirellä radan puolelta toiselle, rakennus peilataan 180°. "
+#~ "Samalla tavalla kuin vaihteiden asettelussa.\n"
+
+#~ msgid ""
+#~ "We can also align to curved shapes. The Selected object will be rotated "
+#~ "to be parallel to the curve under the cursor.\n"
+#~ msgstr ""
+#~ "Voimme myös suunnata kaarevien muotojen mukaisesti. Valittua objektia "
+#~ "pyöritetään siten, että se on yhdensuuntainen hiiren osoittimen alla "
+#~ "olevan kaaren mukaisesti.\n"
+
+#~ msgid ""
+#~ "As we drag along the curved track the Selected object rotates to follow "
+#~ "the curve.\n"
+#~ msgstr ""
+#~ "Raahaamalla kaarretta pitkin, valittua objektia pyöritetään vastaavalla "
+#~ "tavalla.\n"
+
+#~ msgid "Again, if we drag across the track we can flip the stucture.\n"
+#~ msgstr ""
+#~ "Rakennus voidaan jälleen peilata raahaamalla raiteen puolelta toiselle.\n"
+
+#~ msgid "We can also Align to another Structure or any object.\n"
+#~ msgstr ""
+#~ "Voimme myös suunnata jonkin toisen rakennuksen tai minkä tahansa objektin "
+#~ "mukaan.\n"
+
+#~ msgid "And Right-Drag de-selects all tracks within an area.\n"
+#~ msgstr ""
+#~ "Raahaaminen hiiren oikealla painikkeella puolestaan poistaa alueella "
+#~ "olevien kohteiden valinnat.\n"
+
+#~ msgid ""
+#~ "Drawing the tracks while moving can be very time-consuming. We had just "
+#~ "used the \"Normal\" method of drawing tracks.\n"
+#~ msgstr ""
+#~ "Raiteita siirrettäessä niiden piirto voi olla hyvinkin aikaa vievää. "
+#~ "Tässä on käytetty reiteiden piirron asetusta \"normaali\".\n"
+
+#~ msgid ""
+#~ "The Command Options dialog (from the Options menu) contains a Radio "
+#~ "button group which you can use to pick the drawing method.\n"
+#~ msgstr ""
+#~ "Komentojen asetuksista (Asetukset|Komennot) voit valita raiteiden "
+#~ "piirtotavan.\n"
+
+#~ msgid ""
+#~ "You can also popup the Command Options Menu by pressing Shift-Right-Click "
+#~ "which includes options for setting the drawing method. These options are "
+#~ "also available for the Move and Rotate Command Options Menu.\n"
+#~ msgstr ""
+#~ "Piirtotavan voi valita myös painamalla vaihto-näppäintä ja klikkaamalla "
+#~ "hiiren oikealla painikkeella, jolloin avautuu komennon ponnahdusvalikko. "
+#~ "Piirtotavan valinta on saatavilla Siirrä ja Pyöritä komentojen "
+#~ "ponnahdusvalikoissa.\n"
+
+#~ msgid ""
+#~ "The next method is \"Simple\" draws. Here tracks are drawn using one "
+#~ "line, no End-Points are drawn, lines are not drawn and structures are "
+#~ "drawn using a box outline.\n"
+#~ msgstr ""
+#~ "Seuraava piirtotapa on \"Yksinkertainen\", jolloin raiteet piirretään "
+#~ "yhdellä viivalla, ilman päätepisteiden merkintää. Viivoja ei piirretä ja "
+#~ "rakennukset piirretään yksinkertaisina nelikulmioina.\n"
+
+#~ msgid ""
+#~ "Note: you can move the Command Options dialog if it obscures the main "
+#~ "window.\n"
+#~ msgstr ""
+#~ "Huom: Voit siirtää Komentojen asetukset -ikkunaa, jos se peittää "
+#~ "pääikkunaa oleellisesti.\n"
+
+#~ msgid ""
+#~ "The next method is to just draw the End-Points of the selected tracks.\n"
+#~ msgstr ""
+#~ "Seuraava tapa on piirtää ainoastaan valittujen raiteiden päätepisteet.\n"
+
+#~ msgid ""
+#~ "Unconnected End-Points are indicated by Red crosses, and connected End-"
+#~ "Points are indicated by Red lines.\n"
+#~ msgstr ""
+#~ "Irralliset päätepisteet merkitään punaisilla risteillä ja liitetyt "
+#~ "punaisilla viivoilla.\n"
+
+#~ msgid "Now we will go back to using the Normal method again.\n"
+#~ msgstr "Nyt palautetaan normaali piirtotapa.\n"
+
+#~ msgid ""
+#~ "Note: because of differing display resolutions the next mouse click may "
+#~ "not be positioned correctly in this demo and the Move-To-Join operation "
+#~ "may not be demonstrated.\n"
+#~ msgstr ""
+#~ "Huom: Johtuen erilaisista näytön resoluutioista seuraava hiiren klikkaus "
+#~ "voi olla virheellisesti kohdistettu tässä demossa, jolloin \"siirrä "
+#~ "yhdistääksesi\" operaation esitys ei toimi oikein.\n"
+
+#~ msgid ""
+#~ "A number of example layouts are provided. These files are located in the "
+#~ "'examples' directory where you installed XTrackCAD. The \"File|Open\" "
+#~ "command will open that directory when first used."
+#~ msgstr ""
+#~ "Tarjolla on useita esimerkkejä ratasuunnitelmista. Nämä tiedostot "
+#~ "sijaitsevat 'examples' hakemistossa sen hakemiston alla, johon XTrackCAD "
+#~ "on asennettu. \"Tiedosto|Avaa\" näyttää tämän hakemiston ensimmäisellä "
+#~ "käyttökerralla."
+
+#~ msgid ""
+#~ " exists\n"
+#~ "Do you want to overwrite it?"
+#~ msgstr ""
+#~ " on olemassa.\n"
+#~ "Haluatko korvata olemassa olevan tiedoston?"
+
+#~ msgid "%s exists"
+#~ msgstr "%s on olemassa"
+
+#~ msgid ": cannot open"
+#~ msgstr ": ei voida avata"
+
+#~ msgid "Abort Print"
+#~ msgstr "Keskeytä tulostus"
+
+#~ msgid "Add Margin"
+#~ msgstr "Lisää marginaali"
+
+#~ msgid "Angle=%0.3f"
+#~ msgstr "Kulma=%0.3f"
+
+#~ msgid "Beige"
+#~ msgstr "Beige"
+
+#~ msgid "Black"
+#~ msgstr "Musta"
+
+#~ msgid "Blue"
+#~ msgstr "Sininen"
+
+#~ msgid "Brown"
+#~ msgstr "Ruskea"
+
+#~ msgid "Can not save New Margin definition"
+#~ msgstr "Uuden marginaalin määrittelyjen tallennus ei onnistu"
+
+#~ msgid ""
+#~ "Can't find standard San-Serif font.\n"
+#~ "Please choose a font"
+#~ msgstr ""
+#~ "San-Serif kirjasinta ei löydy.\n"
+#~ "Ole hyvä ja valitse kirjasin"
+
+#~ msgid ""
+#~ "Can't find standard Serif font.\n"
+#~ "Please choose a font"
+#~ msgstr ""
+#~ "Serif kirjasinta ei löydy.\n"
+#~ "Ole hyvä ja valitse kirjasin"
+
+#~ msgid "Chocolate"
+#~ msgstr "Suklaa"
+
+#~ msgid "Creating %s"
+#~ msgstr "Luodaan %s"
+
+#~ msgid "Custom Update"
+#~ msgstr "Omat raideosat ja kalusto"
+
+#~ msgid "Dark Blue"
+#~ msgstr "Tummansininen"
+
+#~ msgid "Dark Gray"
+#~ msgstr "Tummanharmaa"
+
+#~ msgid "Dark Green"
+#~ msgstr "Tummanvihreä"
+
+#~ msgid "Dark Red"
+#~ msgstr "Tummanpunainen"
+
+#~ msgid "Describe objects"
+#~ msgstr "Määrittele objekteja"
+
+#~ msgid "Draw"
+#~ msgstr "Piirto"
+
+#~ msgid "Enter a post-script font name for:"
+#~ msgstr "Syötä post-script kirjasimen nimi:"
+
+#~ msgid "Enter both printer name and command"
+#~ msgstr "Syötä tulostimen nimi ja komento"
+
+#~ msgid "Enter printer name"
+#~ msgstr "Syötä tulostimen nimi"
+
+#~ msgid "Factor"
+#~ msgstr "Kerroin"
+
+#~ msgid "File Name? "
+#~ msgstr "Tiedostonimi?"
+
+#~ msgid "Font Alias"
+#~ msgstr "Kirjasinalias"
+
+#~ msgid "Forest Green"
+#~ msgstr "Metsän vihreä"
+
+#~ msgid "Format"
+#~ msgstr "Muotoilu"
+
+#~ msgid "Gray"
+#~ msgstr "Harmaa"
+
+#~ msgid "Green"
+#~ msgstr "Vihreä"
+
+#~ msgid "Lawn Green"
+#~ msgstr "Ruohonvihreä"
+
+#~ msgid "Light Gray"
+#~ msgstr "Vaaleanharmaa"
+
+#~ msgid "Live"
+#~ msgstr "Seuraa"
+
+#~ msgid "Name: "
+#~ msgstr "Nimi: "
+
+#~ msgid "No file name specified"
+#~ msgstr "Tiedostonimeä ei ole annettu"
+
+#~ msgid "Now printing"
+#~ msgstr "Tulostetaan"
+
+#~ msgid "Now printing %s"
+#~ msgstr "Tulostetaan %s"
+
+#~ msgid "Orange"
+#~ msgstr "Oranssi"
+
+#~ msgid "Overwrite"
+#~ msgstr "Kirjoita päälle"
+
+#~ msgid "PS Font"
+#~ msgstr "PS kirjasin"
+
+#~ msgid "Page %d"
+#~ msgstr "Sivu %d"
+
+#~ msgid "Page 1"
+#~ msgstr "Sivu 1"
+
+#~ msgid "Pink"
+#~ msgstr "Vaaleanpunainen"
+
+#~ msgid "Place circle center"
+#~ msgstr "Aseta ympyrän keskipiste"
+
+#~ msgid "Print Test Page"
+#~ msgstr "Tulosta testisivu"
+
+#~ msgid "Print To File"
+#~ msgstr "Tulosta tiedostoon"
+
+#~ msgid "Print to file ..."
+#~ msgstr "Tulosta tiedostoon..."
+
+#~ msgid "Printing"
+#~ msgstr "Tulostetaan"
+
+#~ msgid "Purple"
+#~ msgstr "Purppura"
+
+#~ msgid "Tan"
+#~ msgstr "Keltaisenruskea"
+
+#~ msgid "Tomato"
+#~ msgstr "Tomaatti"
+
+#~ msgid "Tracks with grades steeper than this are exceptional"
+#~ msgstr "Raiteet, joissa on jyrkempi nousukulma, käsitetään erityiraiteiksi"
+
+#~ msgid "Tracks with tighter radius than this are exceptional"
+#~ msgstr "Raiteet, joissa on pienempi kaarresäde, käsitetään erityiraiteiksi"
+
+#~ msgid "Violet"
+#~ msgstr "Violetti"
+
+#~ msgid "X Font"
+#~ msgstr "X kirjasin"
+
+#~ msgid "XTrackCAD Help"
+#~ msgstr "XTrackCAD ohje"
+
+#~ msgid "Yellow"
+#~ msgstr "Keltainen"
+
+#~ msgid "load last layout"
+#~ msgstr "Lataa edellinen ratasuunnitelma"
+
+#~ msgid "start with blank layout"
+#~ msgstr "Uusi ratasuunnitelma"
+
+#~ msgid " DXF Files|*.dxf"
+#~ msgstr " DXF tiedostot|*.dxf"
+
+#~ msgid "%s Font"
+#~ msgstr "%s kirjasin"
+
+#~ msgid ""
+#~ "%s has been corrupted\n"
+#~ "Please see reinstall your software or contact the Vendor."
+#~ msgstr ""
+#~ "%s on korruptoitunut\n"
+#~ "Asenna ohjelmisto uudelleen tai ota yhteyttä ohjelman toimittajaan."
+
+#~ msgid ""
+#~ "<html><head><meta http-equiv=\"content-type\" content=\"text/html; "
+#~ "charset=US-ASCII\"><title>Help Error</title><body><h1>Error - help "
+#~ "information can not be found.</h1><p>The help information you requested "
+#~ "cannot be found on this system.<br>Usually this is an installation "
+#~ "problem, Make sure that XTrkCad and the included HTML files are installed "
+#~ "properly and can be found via the XTRKCADLIB environment variable. Also "
+#~ "make sure that the user has sufficient access rights to read these files."
+#~ "</p></body></html>"
+#~ msgstr ""
+#~ "<html><head><meta http-equiv=\"content-type\" content=\"text/html; "
+#~ "charset=US-ASCII\"><title>Ohjeen virhe</title><body><h1>Virhe - Ohjeen "
+#~ "tietoja ei löydy.</h1><p>Pyytämääsi ohjetta ei löydy järjestelmästä."
+#~ "<br>Yleensä tämä johtuu asennusvirheestä. Varmista, että XTrkCad ja sen "
+#~ "mukana tulevat HTML-tiedostot on asennettu oikein ja että HTML-tiedostot "
+#~ "löytyvät XTRKCADLIB ympäristömuuttujan osoittamasta hakemistosta. "
+#~ "Varmista myös, että käyttäjällä on lukuoikeus näihin tiedostoihin.</p></"
+#~ "body></html>"
+
+#~ msgid ""
+#~ "All descriptions specified in the turnout designer must\n"
+#~ "be non-blank. Please enter missing values and try again."
+#~ msgstr ""
+#~ "Kaikki kentät raideosan suunnittelussa ovat pakollisia.\n"
+#~ "Syötä puuttuvat arvot ja kokeile uudelleen."
+
+#~ msgid ""
+#~ "Bumper tracks (tracks with 1 End-Point) are not supported with the Group "
+#~ "command. \n"
+#~ "The track has been unselected."
+#~ msgstr ""
+#~ "Ryhmittely komento ei tue puskinraideosia (raideosia joissa on vain yksi "
+#~ "pää).\n"
+#~ "Raideosan valinta on poistettu."
+
+#~ msgid "Can't get app dir"
+#~ msgstr "Sovellushakemiston haku ei onnistunut"
+
+#, fuzzy
+#~ msgid "Car Item"
+#~ msgstr "Tuote"
+
+#~ msgid "Copyright (c) 2007 Sillub Technology and XTrkCad Team"
+#~ msgstr "Copyright (c) 2007 Sillub Technology ja XTrkCad Team"
+
+#, fuzzy
+#~ msgid "ItemEnter"
+#~ msgstr "Tuote"
+
+#, fuzzy
+#~ msgid "ItemSel"
+#~ msgstr "Tuote"
+
+#~ msgid "MSG_MOVE_POINTS_OTHER_SIDE\tMove points to other side of frog"
+#~ msgstr ""
+#~ "MSG_MOVE_POINTS_OTHER_SIDE\tSiirrä kielten päät risteyskappaleen toiselle "
+#~ "puolelle"
+
+#~ msgid ""
+#~ "MSG_PRINT_SCALE_1\tThe Print Scale cannot be 1 in unregistered version of "
+#~ "XTrkCad\tThe Print Scale cannot be 1 in unregistered version of %s"
+#~ msgstr ""
+#~ "MSG_PRINT_SCALE_1\tTulostusmittakaava ei voi olla 1 XTrkCad:n "
+#~ "rekisteröimättömässä versiossa\tTulostusmittakaava ei voi olla 1 %s:n "
+#~ "rekisteröimättömässä versiossa"
+
+#~ msgid ""
+#~ "MSG_SAVE_CHANGES\tYour changes will be lost....\tYour changes will be "
+#~ "lost.\n"
+#~ "Do you want to save?"
+#~ msgstr ""
+#~ "MSG_SAVE_CHANGES\tTekemäsi muutokset menetetään...\tTekemäsi muutokset "
+#~ "menetetään.\n"
+#~ "Haluatko tallentaa?"
+
+#~ msgid "MSG_SEL_TRK_FROZEN\tSome Selected tracks are frozen"
+#~ msgstr "MSG_SEL_TRK_FROZEN\tJotkut valituista raiteista on jäädytetty"
+
+#~ msgid ""
+#~ "MSG_TOO_FAR_APART_DIVERGE\tTracks are too far apart or diverge too much"
+#~ msgstr ""
+#~ "MSG_TOO_FAR_APART_DIVERGE\tRaiteet ovat liian kaukana toisistaan tai "
+#~ "niiden välinen kulma on liian suuri"
+
+#, fuzzy
+#~ msgid "No %s are available"
+#~ msgstr "Vinkkejä ei ole saatavilla"
+
+#, fuzzy
+#~ msgid "No help found for %s"
+#~ msgstr "Ei ohjetta aiheesta %s"
+
+#, fuzzy
+#~ msgid "PartnoEnter"
+#~ msgstr "Tulostin"
+
+#, fuzzy
+#~ msgid "PartnoSel"
+#~ msgstr "Tuotekoodi"
+
+#~ msgid "Print Grid Rotate"
+#~ msgstr "Tulostusruudukon pyöritys"
+
+#~ msgid "Profile Mode"
+#~ msgstr "Profiili tila"
+
+#, fuzzy
+#~ msgid "ProtoEnter"
+#~ msgstr "Esikuva"
+
+#, fuzzy
+#~ msgid "ProtoSel"
+#~ msgstr "Esikuva"
+
+#~ msgid ""
+#~ "Rescaled tracks do not fit on the layout.\n"
+#~ "You should increase the layout size to at least %s by %s."
+#~ msgstr ""
+#~ "Uudelleen skaalatut raiteet eivät mahdu ratasuunnitelmaan.\n"
+#~ "Suunnitelman koko pitäisi kasvattaa vähintään %s x %s:ksi."
+
+#, fuzzy
+#~ msgid ""
+#~ "Right-Drag on the Map window sets the origin and scale of the Main window."
+#~ msgstr ""
+#~ "Hiiren oikealla painikkeella raahaaminen puolestaan muuttaa näytettävän "
+#~ "alueen skaalausta (kokoa).\n"
+
+#~ msgid "Snap Grid Rotate"
+#~ msgstr "Käännä kohdistusruudukkoa"
+
+#, fuzzy
+#~ msgid ""
+#~ "Straight tracks are created by selecting the first End-Point of the "
+#~ "track.);"
+#~ msgstr ""
+#~ "Suorat raiteet luodaan valitsemalla hiiren vasemmalla painikkeella "
+#~ "raiteen ensimmäinen päätepiste."
+
+#, fuzzy
+#~ msgid "The left mouse button is released at the final end postion.);"
+#~ msgstr "Hiiren vasen painike vapautetaan loppupisteessä."
+
+#~ msgid ""
+#~ "The unregistered version of this program is restricted to less than 50 "
+#~ "tracks and cars."
+#~ msgstr ""
+#~ "Ohjelman rekisteröimätön versio on rajoitettu alle 50:n raideosaan ja "
+#~ "vaunuun/veturiin."
+
+#, fuzzy
+#~ msgid "Then the other End-Point is dragged to its final postion.);"
+#~ msgstr ""
+#~ "Toinen päätepiste valitaan pitämällä hiiren vasen painike alhaalla ja "
+#~ "valitsemalla oikea paikka."
+
+#~ msgid ""
+#~ "There is nothing to Paste,\n"
+#~ "try Copy first."
+#~ msgstr ""
+#~ "Ei ole mitään liitettävää,\n"
+#~ "kopioi ensin."
+
+#~ msgid ""
+#~ "This Car has no Part Number\n"
+#~ "%s\n"
+#~ "Do you want to continue with the other Cars?"
+#~ msgstr ""
+#~ "Vaunulla/veturilla ei ole tuotekoodia\n"
+#~ "%s\n"
+#~ "Haluatko jatkaa muihin vaunuihin/vetureihin?"
+
+#, fuzzy
+#~ msgid "Track is too short by N.NNN"
+#~ msgstr "Yhdysraide on %0.3f liian lyhyt"
+
+#, fuzzy
+#~ msgid "You can draw tracks with wider lines for rails. "
+#~ msgstr "Piirrä raiteet ohuilla viivoilla"
+
+#~ msgid ""
+#~ "You can not change the position of a Turnout or Turntable while it is "
+#~ "spanned by a Train."
+#~ msgstr ""
+#~ "Vaihteen tai kääntöpöydän asentoa ei voi muuttaa junan ollessa päällä."
+
+#~ msgid ""
+#~ "You have chosen a large font which may a take a long time.\n"
+#~ "Do you wish to continue?"
+#~ msgstr ""
+#~ "Olet valinnut suuren kirjasinkoon joka saattaa kestää kauan.\n"
+#~ "Haluatko jatkaa?"
diff --git a/app/i18n/fr_FR.po b/app/i18n/fr_FR.po
index 74fe893..6e429f1 100644
--- a/app/i18n/fr_FR.po
+++ b/app/i18n/fr_FR.po
@@ -2,547 +2,496 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
+#
# Translators:
# Martin Fischer <m_fischer@users.sourceforge.net>, 2020
# Jacques Glize <j.glize@yahoo.fr>, 2021
# Adam J M Richards <adamjmrichards@gmail.com>, 2021
-#
-#, fuzzy
+#
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-11-14 06:45-0800\n"
-"PO-Revision-Date: 2020-08-27 16:39+0000\n"
-"Last-Translator: Adam J M Richards <adamjmrichards@gmail.com>, 2021\n"
-"Language-Team: French (https://www.transifex.com/xtrackcad/teams/112853/fr/)\n"
+"POT-Creation-Date: 2023-12-27 10:09+0100\n"
+"PO-Revision-Date: 2023-12-27 11:05+0100\n"
+"Last-Translator: Martin Fischer <m_fischer@users.sf.net>\n"
+"Language-Team: French (https://www.transifex.com/xtrackcad/teams/112853/"
+"fr/)\n"
+"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Poedit 3.4\n"
#: ../bin/archive.c:154 ../bin/archive.c:161 ../bin/archive.c:190
-#: ../bin/archive.c:215 ../bin/archive.c:270 ../bin/archive.c:283
-#: ../bin/archive.c:291 ../bin/archive.c:341 ../bin/archive.c:376
-#: ../bin/archive.c:392 ../bin/archive.c:402 ../bin/archive.c:425
-#: ../bin/cblock.c:490 ../bin/cswitchmotor.c:472 ../bin/dbench.c:143
-#: ../bin/dbitmap.c:426 ../bin/dcar.c:4525 ../bin/dcar.c:4711
-#: ../bin/dcar.c:4721 ../bin/dcar.c:4768 ../bin/dcar.c:4775 ../bin/dcar.c:4793
-#: ../bin/dcar.c:4806 ../bin/dcar.c:4811 ../bin/dcar.c:4840 ../bin/dcar.c:5003
+#: ../bin/archive.c:215 ../bin/archive.c:270 ../bin/archive.c:284
+#: ../bin/archive.c:294 ../bin/archive.c:348 ../bin/archive.c:384
+#: ../bin/archive.c:400 ../bin/archive.c:410 ../bin/archive.c:433
+#: ../bin/cblock.c:505 ../bin/cswitchmotor.c:500 ../bin/dbench.c:147
+#: ../bin/dbitmap.c:427 ../bin/dcar.c:4894 ../bin/dcar.c:5093
+#: ../bin/dcar.c:5103 ../bin/dcar.c:5150 ../bin/dcar.c:5158 ../bin/dcar.c:5176
+#: ../bin/dcar.c:5191 ../bin/dcar.c:5196 ../bin/dcar.c:5225 ../bin/dcar.c:5395
#: ../bin/directory.c:44 ../bin/directory.c:79 ../bin/directory.c:86
-#: ../bin/directory.c:117 ../bin/directory.c:133 ../bin/dxfoutput.c:191
-#: ../bin/fileio.c:215 ../bin/fileio.c:660 ../bin/fileio.c:803
-#: ../bin/fileio.c:863 ../bin/fileio.c:987 ../bin/fileio.c:1053
-#: ../bin/fileio.c:1059 ../bin/fileio.c:1135 ../bin/fileio.c:1145
-#: ../bin/fileio.c:1490 ../bin/fileio.c:1542 ../bin/fileio.c:1594
-#: ../bin/macro.c:152 ../bin/macro.c:806 ../bin/macro.c:853 ../bin/macro.c:874
-#: ../bin/macro.c:1017 ../bin/macro.c:1035 ../bin/macro.c:1307
-#: ../bin/param.c:2189 ../bin/paramfile.c:257 ../bin/paramfilelist.c:390
-#: ../bin/track.c:1152 ../bin/track.c:1692 ../bin/track.c:1998
-#: ../bin/track.c:2002 ../bin/track.c:2014 ../bin/track.c:2078
-#: ../wlib/gtklib/wpref.c:260 ../wlib/gtklib/wpref.c:267
+#: ../bin/directory.c:117 ../bin/directory.c:133 ../bin/dxfoutput.c:205
+#: ../bin/fileio.c:224 ../bin/fileio.c:677 ../bin/fileio.c:835
+#: ../bin/fileio.c:897 ../bin/fileio.c:1022 ../bin/fileio.c:1091
+#: ../bin/fileio.c:1097 ../bin/fileio.c:1189 ../bin/fileio.c:1202
+#: ../bin/fileio.c:1631 ../bin/fileio.c:1680 ../bin/fileio.c:1733
+#: ../bin/macro.c:166 ../bin/macro.c:855 ../bin/macro.c:1010
+#: ../bin/macro.c:1029 ../bin/macro.c:1329 ../bin/param.c:2402
+#: ../bin/paramfile.c:258 ../bin/paramfilelist.c:458 ../bin/track.c:1104
+#: ../bin/track.c:1344 ../bin/track.c:1366 ../bin/track.c:1785
+#: ../bin/track.c:1990 ../bin/track.c:2000 ../bin/track.c:2005
+#: ../bin/track.c:2020 ../bin/track.c:2047 ../bin/track.c:2105
msgid "Continue"
msgstr "Continuer"
-#: ../bin/cbezier.c:598
+#: ../bin/cbezier.c:631
msgid "Select End-Point - Ctrl unlocks end-point"
msgstr "Sélectionner le point-de-fin - Ctrl déverrouille ce dernier"
-#: ../bin/cbezier.c:600
+#: ../bin/cbezier.c:633
msgid "Select End-Point"
msgstr "Sélectionnez le point-de-fin"
-#: ../bin/cbezier.c:632
+#: ../bin/cbezier.c:666
msgid "Not close enough to any valid, selectable point, reselect"
msgstr ""
-"Pas assez proche d'un point valide et sélectionnable, veuillez en choisir un"
-" autre"
+"Pas assez proche d'un point valide et sélectionnable, veuillez en choisir un "
+"autre"
-#: ../bin/cbezier.c:638
+#: ../bin/cbezier.c:672
#, c-format
msgid "Drag point %d to new location and release it"
msgstr "Déplacez le point %d vers le nouvel emplacement et relâchez"
-#: ../bin/cbezier.c:647 ../bin/cbezier.c:738 ../bin/cbezier.c:740
+#: ../bin/cbezier.c:682 ../bin/cbezier.c:785 ../bin/cbezier.c:788
msgid "Pick any circle to adjust it - Enter to confirm, ESC to abort"
msgstr ""
"Sélectionnez un cercle à modifier - 'Entr' pour confirmer, 'Ech' pour "
"abandonner"
-#: ../bin/cbezier.c:671
+#: ../bin/cbezier.c:707
msgid "Bezier Curve Invalid has identical end points Change End Point"
msgstr ""
-"La courbe de Bezier n'est pas Valide avec des extrémités identiques, changez"
-" de point de fin"
+"La courbe de Bezier n'est pas Valide avec des extrémités identiques, changez "
+"de point de fin"
-#: ../bin/cbezier.c:674
+#: ../bin/cbezier.c:711
#, c-format
msgid "Bezier Curve Invalid has %s Change End Point"
msgstr "La courbe de Bézier n'est pas Valide à %s changez le point de fin"
-#: ../bin/cbezier.c:677
+#: ../bin/cbezier.c:715
msgid "Bezier Curve Invalid has three co-incident points"
msgstr "Courbe de Bézier non valide sur trois points correspondants"
-#: ../bin/cbezier.c:679
+#: ../bin/cbezier.c:718
msgid "Bezier is Straight Line"
msgstr "Bézier est une voie droite"
-#: ../bin/cbezier.c:681
+#: ../bin/cbezier.c:721
#, c-format
msgid "Bezier %s : Min Radius=%s Length=%s fx=%0.3f fy=%0.3f cusp=%0.3f"
msgstr "Bezier %s : Rayon Min=%s Longueur=%s fx=%0.3f fy=%0.3f cusp=%0.3f"
-#: ../bin/cbezier.c:685
+#: ../bin/cbezier.c:726
#, c-format
msgid "Bezier %s : Min Radius=%s Length=%s"
msgstr "Bezier %s : Rayon Min=%s Longueur=%s"
-#: ../bin/cbezier.c:710
+#: ../bin/cbezier.c:752
msgid "No unconnected End Point to lock to"
msgstr "Il n'y a pas de point d'extrémité non connecté à verrouiller"
-#: ../bin/cbezier.c:728
+#: ../bin/cbezier.c:772
msgid "Bezier curve invalid has identical end points Change End Point"
msgstr ""
-"La courbe de Bezier n'est pas valide avec des extrémités identiques, changez"
-" un point de fin"
+"La courbe de Bezier n'est pas valide avec des extrémités identiques, changez "
+"un point de fin"
-#: ../bin/cbezier.c:731
+#: ../bin/cbezier.c:776
#, c-format
msgid "Bezier curve invalid has %s Change End Point"
msgstr "La courbe de Bézier n'est pas valide à %s changez le point de fin"
-#: ../bin/cbezier.c:734
+#: ../bin/cbezier.c:780
msgid "Bezier curve invalid has three co-incident points"
msgstr "Courbe de Bézier non valide sur trois points correspondants"
-#: ../bin/cbezier.c:736
+#: ../bin/cbezier.c:783
msgid "Bezier curve is straight line"
msgstr "La courbe de Bézier est une voie droite"
-#: ../bin/cbezier.c:750 ../bin/cbezier.c:764
+#: ../bin/cbezier.c:799 ../bin/cbezier.c:813
msgid "Invalid Bezier Track - end points are identical"
msgstr "Courbe de Bezier invalide - les points de fin sont identiques"
-#: ../bin/cbezier.c:757
+#: ../bin/cbezier.c:806
#, c-format
msgid "Invalid Bezier Curve has a %s - Adjust"
msgstr "Courbe de Bézier non valide a %s - Ajuster"
-#: ../bin/cbezier.c:761
+#: ../bin/cbezier.c:810
msgid "Invalid Bezier Curve has three coincident points - Adjust"
-msgstr ""
-"Courbe de Bézier non valide avec trois points de coïncidence - Ajuster"
+msgstr "Courbe de Bézier non valide avec trois points de coïncidence - Ajuster"
-#: ../bin/cbezier.c:769
+#: ../bin/cbezier.c:818
msgid "Create Bezier"
msgstr "Créer une Bézier"
-#: ../bin/cbezier.c:852
+#: ../bin/cbezier.c:900
#, c-format
msgid "%s picked - now select a Point"
msgstr "%s choisi - maintenant sélectionnez un point"
-#: ../bin/cbezier.c:882 ../bin/ccornu.c:1946
+#: ../bin/cbezier.c:939 ../bin/ccornu.c:2085
msgid "No changes made"
msgstr "Aucune modification apportée"
-#: ../bin/cbezier.c:886
+#: ../bin/cbezier.c:943
msgid "Modify Bezier"
msgstr "Modifier une Bézier"
-#: ../bin/cbezier.c:900
+#: ../bin/cbezier.c:957
msgid "Modify Bezier Complete"
msgstr "Modifier une Bézier terminée"
-#: ../bin/cbezier.c:904
+#: ../bin/cbezier.c:961
msgid "Modify Bezier Cancelled"
msgstr "Annuler modifier une Bézier"
-#: ../bin/cbezier.c:1030 ../bin/cbezier.c:1124
+#: ../bin/cbezier.c:1089 ../bin/cbezier.c:1189
#, c-format
msgid "Place 1st endpoint of Bezier - snap to %s"
msgstr ""
-"Définissez le 1er point de fin de la Bézier + Maj -> accrochez à la fin de "
-"%s"
+"Définissez le 1er point de fin de la Bézier + Maj -> accrochez à la fin de %s"
-#: ../bin/cbezier.c:1049 ../bin/ccornu.c:2286 ../bin/ccurve.c:199
-#: ../bin/cstraigh.c:90
+#: ../bin/cbezier.c:1109 ../bin/ccornu.c:2444 ../bin/ccurve.c:205
+#: ../bin/cstraigh.c:92
msgid "Track is different gauge"
msgstr "La voie à un écartement différent"
-#: ../bin/cbezier.c:1070
+#: ../bin/cbezier.c:1131
msgid "Drag end of first control arm"
msgstr "Faites glisser l'extrémité du premier bras de commande"
-#: ../bin/cbezier.c:1077
+#: ../bin/cbezier.c:1139
msgid "Drag end of second control arm"
msgstr "Faites glisser l'extrémité du second bras de commande"
-#: ../bin/cbezier.c:1128 ../bin/cbezier.c:1165
+#: ../bin/cbezier.c:1194 ../bin/cbezier.c:1236
#, c-format
msgid "Select other end of Bezier - snap to %s end"
msgstr ""
"Sélectionnez l'autre extrémité de la Bézier, accrochez la à la fin de %s en "
"maintenant la touche Maj enfoncée"
-#: ../bin/cbezier.c:1160
+#: ../bin/cbezier.c:1231
msgid "Control Arm 1 is too short, try again"
msgstr "Le bras de commande 1 est trop court, veuillez réessayer"
-#: ../bin/cblock.c:107 ../bin/cblock.c:119 ../bin/cblock.c:166
-#: ../bin/ccontrol.c:168 ../bin/ccontrol.c:422 ../bin/compound.c:708
-#: ../bin/csensor.c:160 ../bin/csensor.c:386 ../bin/csignal.c:235
-#: ../bin/csignal.c:495 ../bin/csignal.c:506 ../bin/csignal.c:532
-#: ../bin/cswitchmotor.c:89 ../bin/cswitchmotor.c:108
-#: ../bin/cswitchmotor.c:221 ../bin/dcontmgm.c:79 ../bin/dlayer.c:578
+#: ../bin/cblock.c:110 ../bin/cblock.c:122 ../bin/cblock.c:169
+#: ../bin/ccontrol.c:168 ../bin/ccontrol.c:425 ../bin/compound.c:745
+#: ../bin/csensor.c:160 ../bin/csensor.c:389 ../bin/csignal.c:236
+#: ../bin/csignal.c:499 ../bin/csignal.c:510 ../bin/csignal.c:536
+#: ../bin/cswitchmotor.c:89 ../bin/cswitchmotor.c:108 ../bin/cswitchmotor.c:228
+#: ../bin/dcontmgm.c:79 ../bin/dlayer.c:543
msgid "Name"
msgstr "Nom"
-#: ../bin/cblock.c:108 ../bin/cblock.c:120 ../bin/cblock.c:167
-#: ../bin/csensor.c:162 ../bin/csensor.c:392 ../bin/csignal.c:495
-#: ../bin/csignal.c:534
+#: ../bin/cblock.c:111 ../bin/cblock.c:123 ../bin/cblock.c:170
+#: ../bin/csensor.c:162 ../bin/csensor.c:395 ../bin/csignal.c:499
+#: ../bin/csignal.c:538
msgid "Script"
msgstr "Script"
-#: ../bin/cblock.c:121
+#: ../bin/cblock.c:124
msgid "Segments"
msgstr "Segments"
-#: ../bin/cblock.c:168 ../bin/cdraw.c:520 ../bin/cdraw.c:1502
-#: ../bin/cdraw.c:1648 ../bin/cdraw.c:2705 ../bin/cdraw.c:2927
-#: ../bin/cdraw.c:2964 ../bin/ctodesgn.c:169 ../bin/ctodesgn.c:170
-#: ../bin/ctodesgn.c:171 ../bin/ctodesgn.c:172 ../bin/ctodesgn.c:184
-#: ../bin/ctodesgn.c:185 ../bin/ctodesgn.c:235 ../bin/ctodesgn.c:238
-#: ../bin/ctodesgn.c:258 ../bin/ctodesgn.c:263 ../bin/ctodesgn.c:295
-#: ../bin/ctodesgn.c:302 ../bin/ctodesgn.c:304 ../bin/ctodesgn.c:324
-#: ../bin/ctodesgn.c:329 ../bin/ctodesgn.c:361 ../bin/ctodesgn.c:368
-#: ../bin/ctodesgn.c:369 ../bin/ctodesgn.c:390 ../bin/ctodesgn.c:393
-#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:431 ../bin/ctodesgn.c:435
-#: ../bin/ctodesgn.c:442 ../bin/ctodesgn.c:443 ../bin/ctodesgn.c:444
-#: ../bin/ctodesgn.c:466 ../bin/ctodesgn.c:468 ../bin/ctodesgn.c:486
-#: ../bin/ctodesgn.c:488 ../bin/ctodesgn.c:507 ../bin/ctodesgn.c:509
-#: ../bin/ctodesgn.c:536 ../bin/ctodesgn.c:556 ../bin/ctodesgn.c:576
-#: ../bin/ctodesgn.c:596 ../bin/ctodesgn.c:634 ../bin/ctodesgn.c:653
-#: ../bin/ctodesgn.c:654 ../bin/ctrain.c:186 ../bin/tbezier.c:262
-#: ../bin/tcornu.c:315 ../bin/tcurve.c:385 ../bin/tstraigh.c:90
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:184
+#: ../bin/cblock.c:171 ../bin/cdraw.c:560 ../bin/cdraw.c:1573
+#: ../bin/cdraw.c:1720 ../bin/cdraw.c:2843 ../bin/cdraw.c:3070
+#: ../bin/cdraw.c:3109 ../bin/ctodesgn.c:177 ../bin/ctodesgn.c:178
+#: ../bin/ctodesgn.c:179 ../bin/ctodesgn.c:180 ../bin/ctodesgn.c:192
+#: ../bin/ctodesgn.c:193 ../bin/ctodesgn.c:242 ../bin/ctodesgn.c:245
+#: ../bin/ctodesgn.c:268 ../bin/ctodesgn.c:273 ../bin/ctodesgn.c:314
+#: ../bin/ctodesgn.c:321 ../bin/ctodesgn.c:323 ../bin/ctodesgn.c:348
+#: ../bin/ctodesgn.c:353 ../bin/ctodesgn.c:393 ../bin/ctodesgn.c:400
+#: ../bin/ctodesgn.c:401 ../bin/ctodesgn.c:426 ../bin/ctodesgn.c:429
+#: ../bin/ctodesgn.c:432 ../bin/ctodesgn.c:475 ../bin/ctodesgn.c:479
+#: ../bin/ctodesgn.c:486 ../bin/ctodesgn.c:487 ../bin/ctodesgn.c:488
+#: ../bin/ctodesgn.c:514 ../bin/ctodesgn.c:516 ../bin/ctodesgn.c:538
+#: ../bin/ctodesgn.c:540 ../bin/ctodesgn.c:563 ../bin/ctodesgn.c:565
+#: ../bin/ctodesgn.c:599 ../bin/ctodesgn.c:625 ../bin/ctodesgn.c:650
+#: ../bin/ctodesgn.c:674 ../bin/ctodesgn.c:720 ../bin/ctodesgn.c:743
+#: ../bin/ctodesgn.c:744 ../bin/ctrain.c:182 ../bin/tbezier.c:296
+#: ../bin/tcornu.c:332 ../bin/tcurve.c:404 ../bin/tstraigh.c:91
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:186
msgid "Length"
msgstr "Longueur"
-#: ../bin/cblock.c:169 ../bin/cdraw.c:511 ../bin/compound.c:683
-#: ../bin/tbezier.c:249 ../bin/tcornu.c:302 ../bin/tcurve.c:377
-#: ../bin/tease.c:509 ../bin/tstraigh.c:86
+#: ../bin/cblock.c:172 ../bin/cdraw.c:551 ../bin/compound.c:720
+#: ../bin/tbezier.c:283 ../bin/tcornu.c:319 ../bin/tcurve.c:396
+#: ../bin/tease.c:524 ../bin/tstraigh.c:87
msgid "End Pt 1: X,Y"
msgstr "Bout 1: X,Y"
-#: ../bin/cblock.c:170 ../bin/cdraw.c:512 ../bin/compound.c:688
-#: ../bin/tbezier.c:256 ../bin/tcornu.c:307 ../bin/tcurve.c:379
-#: ../bin/tease.c:511 ../bin/tstraigh.c:88
+#: ../bin/cblock.c:173 ../bin/cdraw.c:552 ../bin/compound.c:725
+#: ../bin/tbezier.c:290 ../bin/tcornu.c:324 ../bin/tcurve.c:398
+#: ../bin/tease.c:526 ../bin/tstraigh.c:89
msgid "End Pt 2: X,Y"
msgstr "Bout 2: X,Y"
-#: ../bin/cblock.c:193 ../bin/cblock.c:205 ../bin/cblock.c:574
-#: ../bin/cblock.c:595 ../bin/cblock.c:603 ../bin/cblock.c:673
-#: ../bin/cblock.c:794 ../bin/cblock.c:806 ../bin/cblock.c:844
-#: ../bin/ccontrol.c:202 ../bin/ccontrol.c:215 ../bin/ccontrol.c:227
-#: ../bin/ccontrol.c:483 ../bin/cdraw.c:125 ../bin/cdraw.c:2764
-#: ../bin/cgroup.c:1071 ../bin/cgroup.c:1138 ../bin/cgroup.c:1166
-#: ../bin/cgroup.c:1216 ../bin/cgroup.c:1238 ../bin/cgroup.c:1326
-#: ../bin/cgroup.c:1715 ../bin/cnote.c:67 ../bin/compound.c:744
-#: ../bin/compound.c:759 ../bin/compound.c:792 ../bin/cprint.c:712
-#: ../bin/cprint.c:719 ../bin/cprint.c:1263 ../bin/cpull.c:508
-#: ../bin/cpull.c:523 ../bin/cpull.c:525 ../bin/cpull.c:527 ../bin/cpull.c:688
-#: ../bin/cselect.c:1143 ../bin/cselect.c:1252 ../bin/cselect.c:2131
-#: ../bin/csensor.c:191 ../bin/csensor.c:203 ../bin/csensor.c:441
-#: ../bin/csignal.c:264 ../bin/csignal.c:663 ../bin/csignal.c:731
-#: ../bin/csnap.c:549 ../bin/csnap.c:675 ../bin/cstruct.c:962
-#: ../bin/cstruct.c:1092 ../bin/cswitchmotor.c:247 ../bin/cswitchmotor.c:259
-#: ../bin/cswitchmotor.c:271 ../bin/cswitchmotor.c:283
-#: ../bin/cswitchmotor.c:541 ../bin/cswitchmotor.c:577
-#: ../bin/cswitchmotor.c:712 ../bin/cswitchmotor.c:743 ../bin/ctext.c:172
-#: ../bin/ctodesgn.c:203 ../bin/ctodesgn.c:1198 ../bin/ctodesgn.c:1969
-#: ../bin/ctodesgn.c:2084 ../bin/ctodesgn.c:2383 ../bin/ctrain.c:206
-#: ../bin/cturnout.c:4845 ../bin/cturnout.c:4984 ../bin/cundo.c:205
-#: ../bin/cundo.c:210 ../bin/dbitmap.c:156 ../bin/dbitmap.c:231
-#: ../bin/dbitmap.c:472 ../bin/dcar.c:3850 ../bin/dcar.c:4015
-#: ../bin/dcar.c:4020 ../bin/dcar.c:4024 ../bin/dcar.c:4029 ../bin/dcar.c:4342
-#: ../bin/dcar.c:4450 ../bin/dcar.c:4830 ../bin/dcmpnd.c:392
-#: ../bin/dcmpnd.c:403 ../bin/dcmpnd.c:536 ../bin/dcustmgm.c:205
-#: ../bin/dcustmgm.c:211 ../bin/dcustmgm.c:220 ../bin/dcustmgm.c:245
-#: ../bin/dease.c:240 ../bin/dlayer.c:257 ../bin/dlayer.c:292
-#: ../bin/dlayer.c:1152 ../bin/dlayer.c:1158 ../bin/dlayer.c:1164
-#: ../bin/doption.c:200 ../bin/doption.c:276 ../bin/doption.c:479
-#: ../bin/doption.c:482 ../bin/doption.c:486 ../bin/doption.c:497
-#: ../bin/doption.c:563 ../bin/dprmfile.c:427 ../bin/draw.c:2726
-#: ../bin/fileio.c:171 ../bin/fileio.c:580 ../bin/fileio.c:705
-#: ../bin/fileio.c:707 ../bin/fileio.c:712 ../bin/fileio.c:775
-#: ../bin/fileio.c:1007 ../bin/layout.c:404 ../bin/layout.c:612
-#: ../bin/macro.c:1131 ../bin/macro.c:1135 ../bin/macro.c:1203
-#: ../bin/macro.c:1272 ../bin/macro.c:1513 ../bin/macro.c:1533
-#: ../bin/misc.c:491 ../bin/misc.c:573 ../bin/misc.c:1918 ../bin/misc.c:2050
-#: ../bin/misc.c:2061 ../bin/misc.c:2072 ../bin/misc.c:2168 ../bin/misc.c:3046
-#: ../bin/misc.c:3055 ../bin/misc.c:3075 ../bin/misc.c:3081 ../bin/misc.c:3293
-#: ../bin/misc2.c:523 ../bin/param.c:737 ../bin/param.c:1947
-#: ../bin/param.c:2070 ../bin/param.c:2073 ../bin/param.c:2196
-#: ../bin/param.c:2202 ../bin/paramfile.c:330 ../bin/paramfile.c:332
-#: ../bin/paramfile.c:337 ../bin/paramfile.c:361 ../bin/paramfile.c:387
-#: ../bin/paramfile.c:393 ../bin/paramfilelist.c:103
-#: ../bin/paramfilelist.c:123 ../bin/paramfilelist.c:137
-#: ../bin/paramfilelist.c:201 ../bin/tease.c:1108 ../bin/track.c:1706
-#: ../wlib/gtklib/wpref.c:131
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:636
+#: ../bin/cblock.c:198 ../bin/cblock.c:210 ../bin/cblock.c:592
+#: ../bin/cblock.c:613 ../bin/cblock.c:621 ../bin/cblock.c:693
+#: ../bin/cblock.c:814 ../bin/cblock.c:826 ../bin/cblock.c:864
+#: ../bin/ccontrol.c:203 ../bin/ccontrol.c:216 ../bin/ccontrol.c:228
+#: ../bin/ccontrol.c:489 ../bin/cdraw.c:125 ../bin/cdraw.c:2903
+#: ../bin/cgroup.c:1156 ../bin/cgroup.c:1260 ../bin/cgroup.c:1267
+#: ../bin/cgroup.c:1320 ../bin/cgroup.c:1343 ../bin/cgroup.c:1437
+#: ../bin/cgroup.c:1642 ../bin/cgroup.c:1867 ../bin/cnote.c:67
+#: ../bin/compound.c:785 ../bin/compound.c:801 ../bin/compound.c:835
+#: ../bin/cprint.c:746 ../bin/cprint.c:1312 ../bin/cprint.c:1445
+#: ../bin/cpull.c:531 ../bin/cpull.c:546 ../bin/cpull.c:548 ../bin/cpull.c:550
+#: ../bin/cpull.c:721 ../bin/cselect.c:2029 ../bin/csensor.c:192
+#: ../bin/csensor.c:204 ../bin/csensor.c:446 ../bin/csnap.c:591
+#: ../bin/csnap.c:733 ../bin/csignal.c:266 ../bin/csignal.c:678
+#: ../bin/csignal.c:748 ../bin/cstruct.c:1041 ../bin/cstruct.c:1180
+#: ../bin/cswitchmotor.c:257 ../bin/cswitchmotor.c:269
+#: ../bin/cswitchmotor.c:281 ../bin/cswitchmotor.c:293
+#: ../bin/cswitchmotor.c:570 ../bin/cswitchmotor.c:608
+#: ../bin/cswitchmotor.c:746 ../bin/cswitchmotor.c:777 ../bin/ctext.c:172
+#: ../bin/ctodesgn.c:211 ../bin/ctodesgn.c:1309 ../bin/ctodesgn.c:2138
+#: ../bin/ctodesgn.c:2255 ../bin/ctodesgn.c:2578 ../bin/ctrain.c:205
+#: ../bin/cturnout.c:2973 ../bin/cturnout.c:3123 ../bin/cundo.c:260
+#: ../bin/cundo.c:266 ../bin/dbitmap.c:157 ../bin/dbitmap.c:232
+#: ../bin/dbitmap.c:473 ../bin/dcar.c:4125 ../bin/dcar.c:4297
+#: ../bin/dcar.c:4302 ../bin/dcar.c:4306 ../bin/dcar.c:4312 ../bin/dcar.c:4662
+#: ../bin/dcar.c:4778 ../bin/dcar.c:5215 ../bin/dcmpnd.c:419
+#: ../bin/dcmpnd.c:435 ../bin/dcmpnd.c:582 ../bin/dcustmgm.c:219
+#: ../bin/dcustmgm.c:226 ../bin/dcustmgm.c:236 ../bin/dcustmgm.c:261
+#: ../bin/dease.c:251 ../bin/dlayer.c:336 ../bin/dlayer.c:373
+#: ../bin/dlayer.c:842 ../bin/dlayer.c:1392 ../bin/dlayer.c:1398
+#: ../bin/dlayer.c:1404 ../bin/doption.c:202 ../bin/doption.c:287
+#: ../bin/doption.c:497 ../bin/doption.c:500 ../bin/doption.c:504
+#: ../bin/doption.c:516 ../bin/doption.c:591 ../bin/dprmfile.c:431
+#: ../bin/draw.c:2986 ../bin/fileio.c:180 ../bin/fileio.c:595
+#: ../bin/fileio.c:727 ../bin/fileio.c:730 ../bin/fileio.c:736
+#: ../bin/fileio.c:806 ../bin/fileio.c:1044 ../bin/layout.c:553
+#: ../bin/layout.c:819 ../bin/layout.c:994 ../bin/macro.c:1133
+#: ../bin/macro.c:1138 ../bin/macro.c:1216 ../bin/macro.c:1294
+#: ../bin/macro.c:1542 ../bin/macro.c:1563 ../bin/menu.c:272 ../bin/menu.c:283
+#: ../bin/menu.c:294 ../bin/menu.c:459 ../bin/menu.c:497 ../bin/menu.c:607
+#: ../bin/misc.c:491 ../bin/misc.c:1054 ../bin/misc.c:1063 ../bin/misc.c:1083
+#: ../bin/misc.c:1089 ../bin/misc.c:1274 ../bin/param.c:787 ../bin/param.c:2132
+#: ../bin/param.c:2274 ../bin/param.c:2278 ../bin/param.c:2410
+#: ../bin/param.c:2418 ../bin/paramfile.c:336 ../bin/paramfile.c:339
+#: ../bin/paramfile.c:345 ../bin/paramfile.c:371 ../bin/paramfile.c:400
+#: ../bin/paramfile.c:406 ../bin/paramfilelist.c:131 ../bin/paramfilelist.c:183
+#: ../bin/paramfilelist.c:236 ../bin/scale.c:305 ../bin/scale.c:948
+#: ../bin/scale.c:1084 ../bin/tease.c:1167 ../bin/track.c:1801
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:677
msgid "Ok"
msgstr "Ok"
-#: ../bin/cblock.c:210
+#: ../bin/cblock.c:215
msgid "Change block"
msgstr "Changer de bloc"
-#: ../bin/cblock.c:262 ../bin/cswitchmotor.c:339
+#: ../bin/cblock.c:269 ../bin/cswitchmotor.c:352
#, c-format
msgid "(%d): Layer=%u %s"
msgstr "(%d): Calque=%u %s"
-#: ../bin/cblock.c:286 ../bin/cblock.c:996
+#: ../bin/cblock.c:293 ../bin/cblock.c:1027
msgid "Block"
msgstr "Bloc"
-#: ../bin/cblock.c:490
+#: ../bin/cblock.c:504
#, c-format
msgid "resolveBlockTrack: T%d[%d]: T%d doesn't exist"
msgstr "revoir le bloc de voies : T%d[%d] : T%d n'existe pas"
-#: ../bin/cblock.c:574 ../bin/cblock.c:806
+#: ../bin/cblock.c:592 ../bin/cblock.c:826
msgid "Block must have a name!"
msgstr "La section de voie doit avoir un nom !"
-#: ../bin/cblock.c:603
-msgid "Block is discontigious!"
+#: ../bin/cblock.c:621
+#, fuzzy
+msgid "Block is discontiguous!"
msgstr "La section de voie est discontinue !"
-#: ../bin/cblock.c:608
+#: ../bin/cblock.c:626
msgid "Create block"
msgstr "Créer un bloc"
-#: ../bin/cblock.c:655
+#: ../bin/cblock.c:674
msgid "Non track object skipped!"
msgstr "Pas de voies manquante!"
-#: ../bin/cblock.c:659
+#: ../bin/cblock.c:678
msgid "Selected track is already in a block, skipped!"
msgstr "Ignorée, la voie sélectionnée est déjà dans un bloc !"
-#: ../bin/cblock.c:673
+#: ../bin/cblock.c:692
msgid "Create Block"
msgstr "Créer un Bloc"
-#: ../bin/cblock.c:703 ../bin/cblock.c:735
+#: ../bin/cblock.c:722 ../bin/cblock.c:754
msgid "Select a track"
msgstr "Sélectionner une voie"
-#: ../bin/cblock.c:712 ../bin/cblock.c:743
+#: ../bin/cblock.c:731 ../bin/cblock.c:762
msgid "Not a block!"
msgstr "Pas un bloc!"
-#: ../bin/cblock.c:748
+#: ../bin/cblock.c:767
#, c-format
msgid "Really delete block %s?"
msgstr "Voulez-vous vraiment supprimer le bloc %s ?"
-#: ../bin/cblock.c:748 ../bin/ccornu.c:2753 ../bin/ccornu.c:2966
-#: ../bin/cdraw.c:129 ../bin/cgroup.c:1077 ../bin/cpull.c:646
-#: ../bin/csignal.c:709 ../bin/cswitchmotor.c:668 ../bin/ctodesgn.c:2659
-#: ../bin/ctodesgn.c:3213 ../bin/ctrain.c:2512 ../bin/dcar.c:3965
-#: ../bin/dcar.c:4054 ../bin/dcar.c:4137 ../bin/dcar.c:4156 ../bin/dcar.c:4475
-#: ../bin/dcar.c:4895 ../bin/dcontmgm.c:161 ../bin/dcustmgm.c:153
-#: ../bin/misc.c:1328 ../bin/misc.c:1335 ../bin/misc.c:1407
-#: ../bin/track.c:1708 ../bin/track.c:1805 ../bin/track.c:1822
+#: ../bin/cblock.c:767 ../bin/ccornu.c:2952 ../bin/ccornu.c:3176
+#: ../bin/cdraw.c:130 ../bin/cgroup.c:1162 ../bin/command.c:390
+#: ../bin/command.c:397 ../bin/command.c:458 ../bin/cpull.c:673
+#: ../bin/csignal.c:725 ../bin/cswitchmotor.c:700 ../bin/ctodesgn.c:2891
+#: ../bin/ctodesgn.c:3505 ../bin/ctrain.c:2606 ../bin/dcar.c:4245
+#: ../bin/dcar.c:4343 ../bin/dcar.c:4433 ../bin/dcar.c:4459 ../bin/dcar.c:4843
+#: ../bin/dcar.c:5284 ../bin/dcustmgm.c:162 ../bin/dcontmgm.c:167
+#: ../bin/track.c:1803 ../bin/track.c:1905 ../bin/track.c:1923
msgid "Yes"
msgstr "Oui"
-#: ../bin/cblock.c:748 ../bin/ccornu.c:2753 ../bin/ccornu.c:2966
-#: ../bin/cdraw.c:129 ../bin/cgroup.c:1077 ../bin/cpull.c:646
-#: ../bin/csignal.c:709 ../bin/cswitchmotor.c:668 ../bin/ctodesgn.c:2659
-#: ../bin/ctodesgn.c:3213 ../bin/ctrain.c:2512 ../bin/dcar.c:3965
-#: ../bin/dcar.c:4054 ../bin/dcar.c:4137 ../bin/dcar.c:4156 ../bin/dcar.c:4475
-#: ../bin/dcar.c:4895 ../bin/dcontmgm.c:161 ../bin/dcustmgm.c:153
-#: ../bin/misc.c:1328 ../bin/misc.c:1335 ../bin/misc.c:1407
-#: ../bin/track.c:1708 ../bin/track.c:1805 ../bin/track.c:1822
+#: ../bin/cblock.c:767 ../bin/ccornu.c:2953 ../bin/ccornu.c:3177
+#: ../bin/cdraw.c:130 ../bin/cgroup.c:1162 ../bin/command.c:390
+#: ../bin/command.c:397 ../bin/command.c:458 ../bin/cpull.c:674
+#: ../bin/csignal.c:725 ../bin/cswitchmotor.c:700 ../bin/ctodesgn.c:2891
+#: ../bin/ctodesgn.c:3505 ../bin/ctrain.c:2606 ../bin/dcar.c:4245
+#: ../bin/dcar.c:4343 ../bin/dcar.c:4433 ../bin/dcar.c:4459 ../bin/dcar.c:4843
+#: ../bin/dcar.c:5284 ../bin/dcustmgm.c:162 ../bin/dcontmgm.c:168
+#: ../bin/track.c:1803 ../bin/track.c:1905 ../bin/track.c:1923
msgid "No"
msgstr "Non"
-#: ../bin/cblock.c:749
+#: ../bin/cblock.c:769
msgid "Delete Block"
msgstr "Supprimer la section de voie"
-#: ../bin/cblock.c:794
+#: ../bin/cblock.c:814
#, c-format
msgid "Deleting block %s"
msgstr "Supprimer la section de voie %s"
-#: ../bin/cblock.c:810
+#: ../bin/cblock.c:830
msgid "Modify Block"
msgstr "Modifier le bloc"
-#: ../bin/cblock.c:843
+#: ../bin/cblock.c:863
msgid "Edit block"
msgstr "Editer le bloc"
-#: ../bin/cblock.c:849
+#: ../bin/cblock.c:869
#, c-format
msgid "Edit block %d"
msgstr "Editer le bloc %d"
-#: ../bin/ccontrol.c:169 ../bin/csensor.c:161 ../bin/csignal.c:236
-#: ../bin/ctrain.c:184
-msgid "Position"
-msgstr "Position"
-
-#: ../bin/ccontrol.c:170 ../bin/ccontrol.c:428
-msgid "On Script"
-msgstr "Script On"
-
-#: ../bin/ccontrol.c:171 ../bin/ccontrol.c:430
-msgid "Off Script"
-msgstr "Script Off"
-
-#: ../bin/ccontrol.c:237
-msgid "Change Control"
-msgstr "Changer le contrôle"
-
-#: ../bin/ccontrol.c:279 ../bin/csensor.c:249
-#, c-format
-msgid "(%d [%s]): Layer=%u, at %0.3f,%0.3f"
-msgstr "(%d [%s]): Calque=%u, à %0.3f,%0.3f"
-
-#: ../bin/ccontrol.c:292 ../bin/ccontrol.c:634
-msgid "Control"
-msgstr "Contrôle"
-
-#: ../bin/ccontrol.c:424 ../bin/csensor.c:388 ../bin/csignal.c:508
-msgid "Origin X"
-msgstr "Origine X"
-
-#: ../bin/ccontrol.c:426 ../bin/csensor.c:390 ../bin/csignal.c:510
-msgid "Origin Y"
-msgstr "Origine Y"
-
-#: ../bin/ccontrol.c:442
-msgid "Create Control"
-msgstr "Créer un contrôle"
-
-#: ../bin/ccontrol.c:445
-msgid "Modify Control"
-msgstr "Modifier le contrôle"
-
-#: ../bin/ccontrol.c:482
-msgid "Edit control"
-msgstr "Editer un contrôle"
-
-#: ../bin/ccontrol.c:523
-msgid "Place control"
-msgstr "Placer un contrôle"
-
-#: ../bin/ccornu.c:195 ../bin/ccornu.c:198 ../bin/ccornu.c:201
-#: ../bin/ccornu.c:255
+#: ../bin/ccornu.c:193 ../bin/ccornu.c:196 ../bin/ccornu.c:199
+#: ../bin/ccornu.c:253
#, c-format
msgid "%s FlexTrack"
msgstr "Voie FLEX %s"
-#: ../bin/ccornu.c:249
+#: ../bin/ccornu.c:247
msgid " FLEX "
msgstr " FLEX "
-#: ../bin/ccornu.c:897 ../bin/cjoin.c:962 ../bin/cmisc.c:57
+#: ../bin/ccornu.c:964 ../bin/cjoin.c:1063 ../bin/cmisc.c:55
msgid "First"
msgstr "Premier"
-#: ../bin/ccornu.c:904 ../bin/cjoin.c:970
+#: ../bin/ccornu.c:971 ../bin/cjoin.c:1071
msgid "Second"
msgstr "Second"
-#: ../bin/ccornu.c:975 ../bin/ccornu.c:1998 ../bin/ccornu.c:2028
-#: ../bin/tcornu.c:836 ../bin/tcornu.c:1321
+#: ../bin/ccornu.c:1047 ../bin/ccornu.c:2141 ../bin/ccornu.c:2172
+#: ../bin/tcornu.c:877 ../bin/tcornu.c:1387
#, c-format
msgid ""
"Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] "
"c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"
msgstr ""
-"La création de Cornu a échoué pour p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], "
-"c1[%0.3f,%0.3f] c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"
+"La création de Cornu a échoué pour p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,"
+"%0.3f] c2[%0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"
-#: ../bin/ccornu.c:1011 ../bin/ccornu.c:1633 ../bin/ccornu.c:1652
-#: ../bin/tbezier.c:250 ../bin/tbezier.c:257 ../bin/tcornu.c:303
-#: ../bin/tcornu.c:308 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:176
+#: ../bin/ccornu.c:1084 ../bin/ccornu.c:1757 ../bin/ccornu.c:1778
+#: ../bin/tbezier.c:284 ../bin/tbezier.c:291 ../bin/tcornu.c:320
+#: ../bin/tcornu.c:325 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:178
msgid "End Angle"
msgstr "Fin d'angle"
-#: ../bin/ccornu.c:1014 ../bin/ccornu.c:1632 ../bin/ccornu.c:1651
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:177
+#: ../bin/ccornu.c:1087 ../bin/ccornu.c:1756 ../bin/ccornu.c:1777
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:179
msgid "End Radius"
msgstr "Rayon final"
-#: ../bin/ccornu.c:1067
+#: ../bin/ccornu.c:1142
msgid "Select Point, or Add Point"
msgstr "Sélectionner un point, ou ajouter un point"
-#: ../bin/ccornu.c:1242
+#: ../bin/ccornu.c:1330
msgid "Not close enough to track or point, reselect"
msgstr ""
-"Pas assez proche d'un point valide et sélectionnable, veuillez en choisir un"
-" autre"
+"Pas assez proche d'un point valide et sélectionnable, veuillez en choisir un "
+"autre"
-#: ../bin/ccornu.c:1248
+#: ../bin/ccornu.c:1336
msgid "Drag out end of Cornu"
msgstr "Faire glisser l'extrémité de la Cornu"
-#: ../bin/ccornu.c:1250
+#: ../bin/ccornu.c:1338
msgid "Drag along end of track"
msgstr "Faites glisser vers le bout de la voie"
-#: ../bin/ccornu.c:1252
+#: ../bin/ccornu.c:1340
msgid "Drag to move"
msgstr "Faites glisser pour déplacer"
-#: ../bin/ccornu.c:1255
+#: ../bin/ccornu.c:1344
msgid "Drag point to new location, Delete to remove"
msgstr "Déplacer le point vers sa nouvelle position, supprimer avec Suppr"
-#: ../bin/ccornu.c:1259
+#: ../bin/ccornu.c:1348
msgid "Drag to change end radius"
msgstr "Faites glisser pour modifier le rayon de fin"
-#: ../bin/ccornu.c:1262
+#: ../bin/ccornu.c:1351
msgid "Drag to change end angle"
msgstr "Faites glisser pour changer l'angle de fin"
-#: ../bin/ccornu.c:1277
+#: ../bin/ccornu.c:1368
msgid "Pick any circle to adjust or add - Enter to accept, Esc to cancel"
msgstr ""
"Sélectionnez un cercle à modifier pour ajuster ou ajouter - 'Entr' pour "
"confirmer, 'Ech' pour abandonner"
-#: ../bin/ccornu.c:1289
+#: ../bin/ccornu.c:1380
msgid "Track can't be split"
msgstr "La voie ne peut pas être divisée"
-#: ../bin/ccornu.c:1351
+#: ../bin/ccornu.c:1450
msgid "Too close to other end of selected Track"
msgstr "Trop proche de l'autre extrémité de la voie sélectionnée"
-#: ../bin/ccornu.c:1359
+#: ../bin/ccornu.c:1460
msgid "Can't move end inside a turnout"
msgstr "Impossible de se déplacer à l'intérieur d'un aiguillage"
-#: ../bin/ccornu.c:1500
+#: ../bin/ccornu.c:1609
msgid "Can't extend connected Bezier or Cornu"
msgstr "Impossible d'étendre la connection Bézier ou Cornu"
-#: ../bin/ccornu.c:1572
+#: ../bin/ccornu.c:1690
#, c-format
msgid ""
"Cornu : Min Radius=%s MaxRateofCurveChange/Scale=%s Length=%s Winding Arc=%s"
@@ -550,1051 +499,1104 @@ msgstr ""
"Cornu : Rayon Min =%s Taux de changement de rayon maximal =%s Longueur =%s "
"Arc =%s"
-#: ../bin/ccornu.c:1594 ../bin/ccornu.c:2267
+#: ../bin/ccornu.c:1714 ../bin/ccornu.c:2423
msgid "Helix Already Connected"
msgstr "Hélicoïde déjà connectée"
-#: ../bin/ccornu.c:1608
+#: ../bin/ccornu.c:1730
msgid "No Valid end point on that track"
msgstr "Aucun point de fin valable sur cette voie"
-#: ../bin/ccornu.c:1613
+#: ../bin/ccornu.c:1735
msgid "Track is different scale"
msgstr "La voie a une échelle différente"
-#: ../bin/ccornu.c:1666
+#: ../bin/ccornu.c:1794
msgid ""
-"Pick on point to adjust it along track - Delete to remove, Enter to confirm,"
-" ESC to abort"
+"Pick on point to adjust it along track - Delete to remove, Enter to confirm, "
+"ESC to abort"
msgstr ""
"Sélectionnez un point et déplacez-le le long de la voie - 'Suppr' pour "
"supprimer, 'Entr' pour confirmer, 'Ech' pour abandonner"
-#: ../bin/ccornu.c:1696
+#: ../bin/ccornu.c:1825
msgid "Cornu has too complex shape - adjust end pts"
msgstr "Cornu d'une forme trop complexe - ajustez les points finaux"
-#: ../bin/ccornu.c:1707
+#: ../bin/ccornu.c:1838
#, c-format
msgid "Cornu point %d too close to other end of connect track - reposition it"
msgstr ""
"Fin de Cornu %d trop proche de l’autre extrémité de la connexion de voie - "
"repositionnez-la"
-#: ../bin/ccornu.c:1712
+#: ../bin/ccornu.c:1844
msgid "Create Cornu"
msgstr "Créer une Cornu"
-#: ../bin/ccornu.c:1901
+#: ../bin/ccornu.c:2037
msgid "Now Select or Add (+Shift) a Point"
msgstr "Maintenant, sélectionnez ou ajoutez (+Maj) un point"
-#: ../bin/ccornu.c:1960
+#: ../bin/ccornu.c:2100
#, c-format
msgid "Cornu end %d too close to other end of connect track - reposition it"
msgstr ""
"Fin de Cornu %d trop proche de l’autre extrémité de la connexion de voie - "
"repositionnez-la"
-#: ../bin/ccornu.c:1965 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:175
+#: ../bin/ccornu.c:2105 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:177
msgid "Modify Cornu"
msgstr "Modifier une Cornu"
-#: ../bin/ccornu.c:1980
+#: ../bin/ccornu.c:2122
#, c-format
msgid "Cornu Extension Create Failed for end %d"
msgstr "Extension de création de Cornu a échoué pour la fin %d"
-#: ../bin/ccornu.c:2072
+#: ../bin/ccornu.c:2219
#, c-format
msgid "Connected Track End Adjust for end %d failed"
msgstr "Le bout %d de la voie est connecté et ne peut pas être ajusté"
-#: ../bin/ccornu.c:2083
+#: ../bin/ccornu.c:2230
msgid "Modify Cornu Cancelled"
msgstr "Annuler modifier une Cornu"
-#: ../bin/ccornu.c:2243
+#: ../bin/ccornu.c:2396
msgid "Left click - Start Cornu track"
msgstr "Commencez par une cornu en appuyant sur le bouton gauche de la souris"
-#: ../bin/ccornu.c:2245
+#: ../bin/ccornu.c:2398
msgid "Left click - Place Flextrack"
msgstr "Clic gauche - Positionner la voie flexible"
-#: ../bin/ccornu.c:2248
+#: ../bin/ccornu.c:2401
msgid "Left click - join with Cornu track"
msgstr "Clic gauche - raccorder avec une voie Cornu"
-#: ../bin/ccornu.c:2250
+#: ../bin/ccornu.c:2404
msgid "Left click - join with Cornu track, Shift Left click - move to join"
msgstr ""
-"Clic gauche - raccorder avec une voie Cornu, Maj+Clic gauche - déplacer pour"
-" raccorder"
+"Clic gauche - raccorder avec une voie Cornu, Maj+Clic gauche - déplacer pour "
+"raccorder"
-#: ../bin/ccornu.c:2281
+#: ../bin/ccornu.c:2439
msgid "No valid open endpoint on that track"
msgstr "Aucun point de fin non connecté sur cette voie"
-#: ../bin/ccornu.c:2309 ../bin/ccornu.c:2321
+#: ../bin/ccornu.c:2469 ../bin/ccornu.c:2482
msgid "Drag arm in the direction of track"
msgstr "Tirez le bras de commande dans la direction de la voie"
-#: ../bin/ccornu.c:2325
+#: ../bin/ccornu.c:2487
msgid "No Unconnected Track End there"
msgstr "Aucune voie non connectée ne s'arrête là"
-#: ../bin/ccornu.c:2336 ../bin/ccornu.c:2360
+#: ../bin/ccornu.c:2498 ../bin/ccornu.c:2523
msgid "No Valid Track End there"
msgstr "Aucune voie valide ne s'arrête là"
-#: ../bin/ccornu.c:2348
+#: ../bin/ccornu.c:2511
msgid "Locked - Move 1st end point of Cornu track along track 1"
msgstr ""
"Verrouillé - Déplacer le 1er point de fin de la voie Cornu le long de la "
"voie 1"
-#: ../bin/ccornu.c:2372
+#: ../bin/ccornu.c:2535
msgid "Locked - Move 2nd end point of Cornu track along track 2"
msgstr ""
"Verrouillé - Déplacer le 2nd point de fin de la voie Cornu le long de la "
"voie 2"
-#: ../bin/ccornu.c:2450
+#: ../bin/ccornu.c:2623
msgid "Track can't be split - so locked to endpoint"
msgstr ""
"La voie ne peut pas être divisée - donc verrouillée sur son point de fin"
-#: ../bin/ccornu.c:2455
+#: ../bin/ccornu.c:2628
msgid "Point not on track 1"
msgstr "Les aiguilles ne sont pas sur la bonne voie 1"
-#: ../bin/ccornu.c:2493
+#: ../bin/ccornu.c:2670
msgid "Pick other end of Cornu"
msgstr "Choisissez l'autre extrémité de la Cornu"
-#: ../bin/ccornu.c:2495
+#: ../bin/ccornu.c:2673
msgid ""
"Select flextrack ends or anchors and drag, Enter to approve, Esc to Cancel"
msgstr ""
-"Sélectionnez les extrémités ou les ancres de la flextrack et faites glisser,"
-" Entr. pour approuver, Ech. pour annuler"
+"Sélectionnez les extrémités ou les ancres de la flextrack et faites glisser, "
+"Entr. pour approuver, Ech. pour annuler"
-#: ../bin/ccornu.c:2499
+#: ../bin/ccornu.c:2680
msgid "Put other end of Cornu on a track with an unconnected end point"
msgstr ""
"Mettre l'autre extrémité de la Cornu sur une voie avec un point de fin non "
"connecté"
-#: ../bin/ccornu.c:2741 ../bin/ccornu.c:2955
+#: ../bin/ccornu.c:2941 ../bin/ccornu.c:3166
msgid "Not on a Track"
msgstr "Pas sur la voie"
-#: ../bin/ccornu.c:2749
+#: ../bin/ccornu.c:2949
msgid "Select a Track To Convert"
msgstr "Sélectionner une voie à convertir"
-#: ../bin/ccornu.c:2753
+#: ../bin/ccornu.c:2952
msgid "Convert all Selected Tracks to Cornu Tracks?"
msgstr "Convertir toutes les voies sélectionnées en une voie Cornu ?"
-#: ../bin/ccornu.c:2758
+#: ../bin/ccornu.c:2958
msgid "Convert Cornu"
msgstr "Convertir une Cornu"
-#: ../bin/ccornu.c:2910
+#: ../bin/ccornu.c:3118
#, c-format
msgid "Tracks Counts: %d converted %d unconvertible %d created %d deleted"
msgstr ""
"Nombre de voies : %d converties %d non converties %d créées %d supprimées"
-#: ../bin/ccornu.c:2910 ../bin/ccornu.c:3027
+#: ../bin/ccornu.c:3118 ../bin/ccornu.c:3241 ../bin/cturnout.c:352
+#: ../bin/paramfilelist.c:113
msgid "OK"
msgstr "OK"
-#: ../bin/ccornu.c:2962
+#: ../bin/ccornu.c:3173
msgid "Select a Cornu or Bezier Track To Convert to Fixed"
msgstr "Sélectionnez une voie Cornu ou Bézier à convertir en fixe"
-#: ../bin/ccornu.c:2966
+#: ../bin/ccornu.c:3176
msgid "Convert all Selected Tracks to Fixed Tracks?"
msgstr "Convertir toutes les voies sélectionnées en voies fixes ?"
-#: ../bin/ccornu.c:2976
+#: ../bin/ccornu.c:3187
msgid "Convert Bezier and Cornu"
msgstr "Convertir des Bezier et Cornu"
-#: ../bin/ccornu.c:3027
+#: ../bin/ccornu.c:3240
#, c-format
msgid "Tracks Counts: %d converted %d unconvertible %d deleted"
msgstr "Nombre de voies : %d converties %d non converties %d supprimées"
-#: ../bin/ccornu.c:3055
+#: ../bin/ccornu.c:3269
msgid "Convert"
msgstr "Convertir"
-#: ../bin/ccornu.c:3056
+#: ../bin/ccornu.c:3270
msgid "Convert To Cornu"
msgstr "Convertir en Cornu"
-#: ../bin/ccornu.c:3057
+#: ../bin/ccornu.c:3273
msgid "Convert From Cornu"
msgstr "Convertir depuis une Cornu"
-#: ../bin/ccurve.c:163
+#: ../bin/ccurve.c:165
msgid "Drag from endpoint in direction of curve - lock to track open endpoint"
msgstr ""
"Faites glisser du point d'extrémité dans la direction de la courbe - "
"connexion au point d'extrémité non connecté"
-#: ../bin/ccurve.c:165
+#: ../bin/ccurve.c:167
msgid "Drag from endpoint in direction of curve"
msgstr "Faites glisser depuis l'extrémité dans le sens de la courbe"
-#: ../bin/ccurve.c:169
+#: ../bin/ccurve.c:172
msgid "Drag from endpoint to center - lock to track open endpoint"
msgstr ""
"Glisser de l'extrémité de la voie vers le centre - utilisez Maj pour "
"connecter à l'extrémité non connectée"
-#: ../bin/ccurve.c:171
+#: ../bin/ccurve.c:174
msgid "Drag from endpoint to center"
msgstr "Faire glisser de l'extrémité de voie vers le centre"
-#: ../bin/ccurve.c:174
+#: ../bin/ccurve.c:178
msgid "Drag from center to endpoint"
msgstr "Faites glisser du centre vers l'extrémité"
-#: ../bin/ccurve.c:177
+#: ../bin/ccurve.c:181
msgid "Drag from one to other end of chord"
msgstr "Faites glisser d'un bout à l'autre de la corde"
-#: ../bin/ccurve.c:236
+#: ../bin/ccurve.c:243
msgid "End locked: Drag out curve start"
msgstr ""
"Point de fin fixé : faites glisser pour dessiner le départ de la courbe"
-#: ../bin/ccurve.c:237 ../bin/ccurve.c:247 ../bin/ccurve.c:265
+#: ../bin/ccurve.c:244 ../bin/ccurve.c:254 ../bin/ccurve.c:272
msgid "End Position locked: Drag out curve start with Shift"
msgstr ""
"Point de fin verrouillé : Faire glisser le début de la courbe avec \"Maj\""
-#: ../bin/ccurve.c:238
+#: ../bin/ccurve.c:245
msgid "Drag along curve start"
msgstr "Faire glisser le long du début de courbe"
-#: ../bin/ccurve.c:246
+#: ../bin/ccurve.c:253
msgid "End locked: Drag out curve center"
msgstr ""
"Point de fin fixé : faites glisser pour dessiner le centre de la courbe"
-#: ../bin/ccurve.c:248
+#: ../bin/ccurve.c:255
msgid "Drag out curve center"
msgstr "Faire glisser vers le centre de la courbe"
-#: ../bin/ccurve.c:255
+#: ../bin/ccurve.c:262
msgid "Drag out from center to endpoint"
msgstr "Glisser du centre au point de fin"
-#: ../bin/ccurve.c:264
+#: ../bin/ccurve.c:271
msgid "End locked: Drag to other end of chord"
msgstr ""
"Point de fin fixé : faites glisser pour dessiner l'autre extrémité de la "
"corde"
-#: ../bin/ccurve.c:267
+#: ../bin/ccurve.c:274
msgid "Drag to other end of chord"
msgstr "Glisser vers l'autre bout de la corde"
-#: ../bin/ccurve.c:322
+#: ../bin/ccurve.c:332
#, c-format
msgid "Start Locked: Drag out curve start - Angle=%0.3f"
-msgstr ""
-"Départ verrouillé : faites glisser le début de la courbe - Angle=%0.3f"
+msgstr "Départ verrouillé : faites glisser le début de la courbe - Angle=%0.3f"
-#: ../bin/ccurve.c:323
+#: ../bin/ccurve.c:333
#, c-format
msgid "Drag out curve start - Angle=%0.3f"
msgstr "Faites glisser le point de départ de la courbe - Angle =%0.3f"
-#: ../bin/ccurve.c:329
+#: ../bin/ccurve.c:340
#, c-format
msgid "Tangent locked: Drag out center - Radius=%s Angle=%0.3f"
msgstr ""
"Tangente verrouillée : faites glisser le centre vers l'extérieur - Rayon=%s "
"Angle=%0.3f"
-#: ../bin/ccurve.c:330
+#: ../bin/ccurve.c:341
#, c-format
msgid "Drag out center - Radius=%s Angle=%0.3f"
msgstr "Faire glisser le centre - Rayon =%s Angle =%0.3f"
-#: ../bin/ccurve.c:336
+#: ../bin/ccurve.c:348
#, c-format
msgid "Drag to Edge: Radius=%s Angle=%0.3f"
msgstr "Faire glisser vers le bord - Rayon =%s Angle =%0.3f"
-#: ../bin/ccurve.c:342
+#: ../bin/ccurve.c:356
#, c-format
msgid "Start locked: Drag out chord length=%s angle=%0.3f"
msgstr "Départ verrouillé : faites glisser la corde, longueur=%s Angle=%0.3f"
-#: ../bin/ccurve.c:343
+#: ../bin/ccurve.c:357
#, c-format
msgid "Drag out chord length=%s angle=%0.3f"
msgstr "Faites glisser sur la corde, longueur =%s Angle =%0.3f"
-#: ../bin/ccurve.c:414 ../bin/ccurve.c:582 ../bin/cjoin.c:669
-#: ../bin/cjoin.c:924
+#: ../bin/ccurve.c:433 ../bin/ccurve.c:615 ../bin/cjoin.c:714
+#: ../bin/cjoin.c:1017
msgid "Desired Radius"
msgstr "Rayon souhaité"
-#: ../bin/ccurve.c:512 ../bin/cjoin.c:208 ../bin/cmodify.c:600
-#: ../bin/cturntbl.c:625
+#: ../bin/ccurve.c:534 ../bin/cjoin.c:216 ../bin/cmodify.c:639
+#: ../bin/cturntbl.c:687
#, c-format
msgid "Straight Track: Length=%s Angle=%0.3f"
msgstr "Voie droite : Longueur = %s Angle =%0.3f"
-#: ../bin/ccurve.c:519 ../bin/cmodify.c:605 ../bin/drawgeom.c:663
-#: ../wlib/gtklib/ixhelp.c:235
+#: ../bin/ccurve.c:542 ../bin/cmodify.c:644 ../bin/drawgeom.c:718
msgid "Back"
msgstr "Arrière"
-#: ../bin/ccurve.c:539
+#: ../bin/ccurve.c:563
#, c-format
msgid "Curved Track: Radius=%s Angle=%0.3f Length=%s"
msgstr "Voie courbe : Rayon = %s Angle = %0.3f Longueur = %s"
-#: ../bin/ccurve.c:608 ../bin/cstraigh.c:171
+#: ../bin/ccurve.c:642 ../bin/cstraigh.c:173
msgid "Create Straight Track"
msgstr "Créer une voie Droite"
-#: ../bin/ccurve.c:621
+#: ../bin/ccurve.c:656
msgid "Create Curved Track"
msgstr "Créer une voie courbe"
-#: ../bin/ccurve.c:691
+#: ../bin/ccurve.c:726
msgid "Elevation Difference"
msgstr "Différence d'élévation"
-#: ../bin/ccurve.c:692 ../bin/cdraw.c:519 ../bin/cdraw.c:1514
-#: ../bin/cdraw.c:1660 ../bin/cdraw.c:2712 ../bin/cdraw.c:2907
-#: ../bin/cdraw.c:2921 ../bin/compound.c:686 ../bin/compound.c:691
-#: ../bin/compound.c:696 ../bin/compound.c:701 ../bin/ctodesgn.c:179
-#: ../bin/ctodesgn.c:180 ../bin/ctodesgn.c:181 ../bin/ctodesgn.c:182
-#: ../bin/ctodesgn.c:298 ../bin/ctodesgn.c:301 ../bin/ctodesgn.c:303
-#: ../bin/ctodesgn.c:364 ../bin/ctodesgn.c:365 ../bin/ctodesgn.c:370
-#: ../bin/ctodesgn.c:434 ../bin/ctodesgn.c:438 ../bin/ctodesgn.c:439
-#: ../bin/ctodesgn.c:445 ../bin/ctodesgn.c:614 ../bin/tbezier.c:251
-#: ../bin/tbezier.c:258 ../bin/tcornu.c:309 ../bin/tcurve.c:382
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:185
+#: ../bin/ccurve.c:727 ../bin/cdraw.c:559 ../bin/cdraw.c:1585
+#: ../bin/cdraw.c:1732 ../bin/cdraw.c:2850 ../bin/cdraw.c:3050
+#: ../bin/cdraw.c:3064 ../bin/compound.c:723 ../bin/compound.c:728
+#: ../bin/compound.c:733 ../bin/compound.c:738 ../bin/ctodesgn.c:187
+#: ../bin/ctodesgn.c:188 ../bin/ctodesgn.c:189 ../bin/ctodesgn.c:190
+#: ../bin/ctodesgn.c:317 ../bin/ctodesgn.c:320 ../bin/ctodesgn.c:322
+#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:397 ../bin/ctodesgn.c:402
+#: ../bin/ctodesgn.c:478 ../bin/ctodesgn.c:482 ../bin/ctodesgn.c:483
+#: ../bin/ctodesgn.c:489 ../bin/ctodesgn.c:696 ../bin/tbezier.c:285
+#: ../bin/tbezier.c:292 ../bin/tcornu.c:326 ../bin/tcurve.c:401
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:187
msgid "Radius"
msgstr "Rayon"
-#: ../bin/ccurve.c:693 ../bin/tcurve.c:383
+#: ../bin/ccurve.c:728 ../bin/tcurve.c:402
msgid "Turns"
msgstr "Tours"
-#: ../bin/ccurve.c:694
+#: ../bin/ccurve.c:729
msgid "Angular Separation"
msgstr "Séparation angulaire"
-#: ../bin/ccurve.c:695 ../bin/celev.c:43 ../bin/compound.c:703
-#: ../bin/tbezier.c:263 ../bin/tcornu.c:316 ../bin/tcurve.c:389
-#: ../bin/tease.c:519 ../bin/tstraigh.c:92
+#: ../bin/ccurve.c:730 ../bin/celev.c:43 ../bin/compound.c:740
+#: ../bin/tbezier.c:297 ../bin/tcornu.c:333 ../bin/tcurve.c:408
+#: ../bin/tease.c:534 ../bin/tstraigh.c:93
msgid "Grade"
msgstr "Pente"
-#: ../bin/ccurve.c:696
+#: ../bin/ccurve.c:731
msgid "Vertical Separation"
msgstr "Séparation verticale"
-#: ../bin/ccurve.c:698
+#: ../bin/ccurve.c:733
msgid "Total Length"
msgstr "Longueur totale"
-#: ../bin/ccurve.c:774
+#: ../bin/ccurve.c:813
#, c-format
msgid "Total Length %s"
msgstr "Longueur totale %s"
-#: ../bin/ccurve.c:812 ../bin/ccurve.c:1016 ../bin/tcurve.c:828
+#: ../bin/ccurve.c:852 ../bin/ccurve.c:1079 ../bin/tcurve.c:1008
msgid "Helix"
msgstr "Hélicoïde"
-#: ../bin/ccurve.c:826
+#: ../bin/ccurve.c:868
msgid "Circle Radius"
msgstr "Rayon du cercle"
-#: ../bin/ccurve.c:831
+#: ../bin/ccurve.c:873
msgid "Click on Circle Edge"
msgstr "Cliquez sur le bord du cercle"
-#: ../bin/ccurve.c:835
+#: ../bin/ccurve.c:877
msgid "Click on Circle Center"
msgstr "Cliquez sur le centre du cercle"
-#: ../bin/ccurve.c:867
+#: ../bin/ccurve.c:907
msgid "Drag to Center"
msgstr "Glisser vers le centre"
-#: ../bin/ccurve.c:871
+#: ../bin/ccurve.c:911
msgid "Drag to Edge"
msgstr "Glisser vers le bord"
-#: ../bin/ccurve.c:891 ../bin/ccurve.c:895
+#: ../bin/ccurve.c:932 ../bin/ccurve.c:936
#, c-format
msgid "Radius=%s"
msgstr "Rayon=%s"
-#: ../bin/ccurve.c:916
+#: ../bin/ccurve.c:957
msgid "Create Helix Track"
msgstr "Créer une voie hélicoïdale"
-#: ../bin/ccurve.c:931
+#: ../bin/ccurve.c:972
msgid "Create Circle Track"
msgstr "Créer une voie circulaire"
-#: ../bin/ccurve.c:986
+#: ../bin/ccurve.c:1031
msgid "Curve Track"
msgstr "Voie courbe"
-#: ../bin/ccurve.c:986
+#: ../bin/ccurve.c:1031
msgid "Curve Tracks"
msgstr "Voies courbes"
-#: ../bin/ccurve.c:987
+#: ../bin/ccurve.c:1032
msgid "Curve from End-Pt"
msgstr "Point de fin de la courbe"
-#: ../bin/ccurve.c:988
+#: ../bin/ccurve.c:1035
msgid "Curve from Tangent"
msgstr "Tangente de la courbe"
-#: ../bin/ccurve.c:989
+#: ../bin/ccurve.c:1038
msgid "Curve from Center"
msgstr "Centre de la courbe"
-#: ../bin/ccurve.c:990
+#: ../bin/ccurve.c:1041
msgid "Curve from Chord"
msgstr "Corde de la courbe"
-#: ../bin/ccurve.c:991 ../bin/cdraw.c:3053
+#: ../bin/ccurve.c:1044 ../bin/cdraw.c:3199
msgid "Bezier Curve"
msgstr "Courbe de Bezier"
-#: ../bin/ccurve.c:992
+#: ../bin/ccurve.c:1047
msgid "Cornu Curve"
msgstr "Spirale de Cornu"
-#: ../bin/ccurve.c:995 ../bin/tcurve.c:655
+#: ../bin/ccurve.c:1052 ../bin/tcurve.c:684
msgid "Circle Track"
msgstr "Voie circulaire"
-#: ../bin/ccurve.c:995
+#: ../bin/ccurve.c:1052
msgid "Circle Tracks"
msgstr "Voies circulaires"
-#: ../bin/ccurve.c:996
+#: ../bin/ccurve.c:1054
msgid "Fixed Radius Circle"
msgstr "Cercle de rayon fixe"
-#: ../bin/ccurve.c:997
+#: ../bin/ccurve.c:1056
msgid "Circle from Tangent"
msgstr "Cercle à partir de la Tangente"
-#: ../bin/ccurve.c:998
+#: ../bin/ccurve.c:1059
msgid "Circle from Center"
msgstr "Cercle autour du centre"
+#: ../bin/ccontrol.c:169 ../bin/csensor.c:161 ../bin/csignal.c:237
+#: ../bin/ctrain.c:180
+msgid "Position"
+msgstr "Position"
+
+#: ../bin/ccontrol.c:170 ../bin/ccontrol.c:431
+msgid "On Script"
+msgstr "Script On"
+
+#: ../bin/ccontrol.c:171 ../bin/ccontrol.c:433
+msgid "Off Script"
+msgstr "Script Off"
+
+#: ../bin/ccontrol.c:238
+msgid "Change Control"
+msgstr "Changer le contrôle"
+
+#: ../bin/ccontrol.c:281 ../bin/csensor.c:251
+#, c-format
+msgid "(%d [%s]): Layer=%u, at %0.3f,%0.3f"
+msgstr "(%d [%s]): Calque=%u, à %0.3f,%0.3f"
+
+#: ../bin/ccontrol.c:294 ../bin/ccontrol.c:644
+msgid "Control"
+msgstr "Contrôle"
+
+#: ../bin/ccontrol.c:427 ../bin/csensor.c:391 ../bin/csignal.c:512
+msgid "Origin X"
+msgstr "Origine X"
+
+#: ../bin/ccontrol.c:429 ../bin/csensor.c:393 ../bin/csignal.c:514
+msgid "Origin Y"
+msgstr "Origine Y"
+
+#: ../bin/ccontrol.c:445
+msgid "Create Control"
+msgstr "Créer un contrôle"
+
+#: ../bin/ccontrol.c:448
+msgid "Modify Control"
+msgstr "Modifier le contrôle"
+
+#: ../bin/ccontrol.c:488
+msgid "Edit control"
+msgstr "Editer un contrôle"
+
+#: ../bin/ccontrol.c:529
+msgid "Place control"
+msgstr "Placer un contrôle"
+
#: ../bin/cdraw.c:125
msgid "Font Size must be > 0"
msgstr "La taille de la police doit être >0"
-#: ../bin/cdraw.c:513
+#: ../bin/cdraw.c:553
msgid "First Point: X,Y"
msgstr "D'abord, Point: X,Y"
-#: ../bin/cdraw.c:514 ../bin/tcurve.c:381
+#: ../bin/cdraw.c:554 ../bin/tcurve.c:400
msgid "Center: X,Y"
msgstr "Centre : X,Y"
-#: ../bin/cdraw.c:515 ../bin/tcurve.c:386
+#: ../bin/cdraw.c:555 ../bin/tcurve.c:405
msgid "Angular Length"
msgstr "Longueur angulaire"
-#: ../bin/cdraw.c:516
+#: ../bin/cdraw.c:556
msgid "Line Angle"
msgstr "Angle de la ligne"
-#: ../bin/cdraw.c:517 ../bin/tcurve.c:387
+#: ../bin/cdraw.c:557 ../bin/tcurve.c:406
msgid "CCW Angle"
msgstr "Angle CCW"
-#: ../bin/cdraw.c:518 ../bin/tcurve.c:388
+#: ../bin/cdraw.c:558 ../bin/tcurve.c:407
msgid "CW Angle"
msgstr "Angle CW"
-#: ../bin/cdraw.c:521 ../bin/cdraw.c:1511 ../bin/cdraw.c:1633
-#: ../bin/cprint.c:129 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:183
+#: ../bin/cdraw.c:561 ../bin/cdraw.c:1582 ../bin/cdraw.c:1705
+#: ../bin/cprint.c:131 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:185
msgid "Height"
msgstr "Hauteur"
-#: ../bin/cdraw.c:522 ../bin/cdraw.c:1509 ../bin/cdraw.c:1632
-#: ../bin/cdraw.c:2707 ../bin/cdraw.c:2965 ../bin/ctrain.c:187
-#: ../bin/dcar.c:2225 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:190
+#: ../bin/cdraw.c:562 ../bin/cdraw.c:1580 ../bin/cdraw.c:1704
+#: ../bin/cdraw.c:2845 ../bin/cdraw.c:3110 ../bin/ctrain.c:183
+#: ../bin/dcar.c:2344 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:192
msgid "Width"
msgstr "Largeur"
-#: ../bin/cdraw.c:523 ../bin/compound.c:706 ../bin/tstraigh.c:93
+#: ../bin/cdraw.c:563 ../bin/compound.c:743 ../bin/tstraigh.c:94
msgid "Pivot"
msgstr "Pivot"
-#: ../bin/cdraw.c:524
+#: ../bin/cdraw.c:564
msgid "Point Count"
msgstr "Nombre de points"
-#: ../bin/cdraw.c:525 ../bin/cdraw.c:2685 ../bin/ctodesgn.c:201
-#: ../bin/tbezier.c:265
+#: ../bin/cdraw.c:565 ../bin/cdraw.c:2823 ../bin/ctodesgn.c:209
+#: ../bin/tbezier.c:299
msgid "Line Width"
msgstr "Épaisseur de trait"
-#: ../bin/cdraw.c:526 ../bin/cdraw.c:2714 ../bin/tbezier.c:264
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:376
+#: ../bin/cdraw.c:566 ../bin/cdraw.c:2852 ../bin/tbezier.c:298
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:379
msgid "Line Type"
msgstr "Type de ligne"
-#: ../bin/cdraw.c:527 ../bin/cdraw.c:2687 ../bin/cdraw.c:2689
-#: ../bin/cdraw.c:2788 ../bin/cdraw.c:2821 ../bin/cmisc.c:123
-#: ../bin/ctext.c:66 ../bin/ctext.c:146 ../bin/ctodesgn.c:202
-#: ../bin/dcar.c:2221 ../bin/dlayer.c:580 ../bin/doption.c:563
+#: ../bin/cdraw.c:567 ../bin/cdraw.c:2825 ../bin/cdraw.c:2827
+#: ../bin/cdraw.c:2927 ../bin/cdraw.c:2960 ../bin/cmisc.c:121 ../bin/ctext.c:67
+#: ../bin/ctext.c:145 ../bin/ctodesgn.c:210 ../bin/dcar.c:2340
+#: ../bin/dlayer.c:545 ../bin/doption.c:591
msgid "Color"
msgstr "Couleur"
-#: ../bin/cdraw.c:528
+#: ../bin/cdraw.c:568
msgid "Filled"
msgstr "Plein"
-#: ../bin/cdraw.c:529
+#: ../bin/cdraw.c:569
msgid "Open End"
msgstr "Côté ouvert"
-#: ../bin/cdraw.c:530 ../bin/cmisc.c:146 ../bin/cmisc.c:147 ../bin/cmisc.c:148
-#: ../bin/cmisc.c:149 ../bin/ctext.c:68 ../bin/ctext.c:147
+#: ../bin/cdraw.c:570 ../bin/cmisc.c:144 ../bin/cmisc.c:145 ../bin/cmisc.c:146
+#: ../bin/cmisc.c:147 ../bin/ctext.c:69 ../bin/ctext.c:146
msgid "Boxed"
msgstr "En boîte"
-#: ../bin/cdraw.c:531 ../bin/cdraw.c:1120 ../bin/cdraw.c:2721
+#: ../bin/cdraw.c:571 ../bin/cdraw.c:1177 ../bin/cdraw.c:2859
msgid "Lumber"
msgstr "Structure"
-#: ../bin/cdraw.c:532
+#: ../bin/cdraw.c:572
msgid "Orientation"
msgstr "Orientation"
-#: ../bin/cdraw.c:533 ../bin/cdraw.c:2703
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:638
+#: ../bin/cdraw.c:573 ../bin/cdraw.c:2841
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:679
msgid "Size"
msgstr "Dimension"
-#: ../bin/cdraw.c:534
+#: ../bin/cdraw.c:574
msgid "Text Origin: X,Y"
msgstr "Origine du texte: X,Y"
-#: ../bin/cdraw.c:535
+#: ../bin/cdraw.c:575
msgid "Text Angle"
msgstr "Angle du texte"
-#: ../bin/cdraw.c:536 ../bin/ctext.c:64 ../bin/ctext.c:145
+#: ../bin/cdraw.c:576 ../bin/ctext.c:65 ../bin/ctext.c:144
msgid "Font Size"
msgstr "Taille police"
-#: ../bin/cdraw.c:537 ../bin/cdraw.c:1267 ../bin/ctext.c:268
+#: ../bin/cdraw.c:577 ../bin/cdraw.c:1324 ../bin/ctext.c:273
msgid "Text"
msgstr "Texte"
-#: ../bin/cdraw.c:538
+#: ../bin/cdraw.c:578
msgid "Lock To Origin"
msgstr "Verrouiller à l'origine"
-#: ../bin/cdraw.c:539
+#: ../bin/cdraw.c:579
msgid "Rot Origin: X,Y"
msgstr "Centre de rotation : X,Y"
-#: ../bin/cdraw.c:540
+#: ../bin/cdraw.c:580
msgid "Rotate By"
msgstr "Faire pivoter par"
-#: ../bin/cdraw.c:541 ../bin/compound.c:712 ../bin/cturntbl.c:250
-#: ../bin/doption.c:99 ../bin/doption.c:100 ../bin/tbezier.c:267
-#: ../bin/tcornu.c:317 ../bin/tcurve.c:391 ../bin/tease.c:521
-#: ../bin/tstraigh.c:94 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:716
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:717
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:718
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:719
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:720
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:721
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:722
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:723
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:724
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:725
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:726
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:727
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:728
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:729
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:730
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:731
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:732
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:733
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:734
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:735
+#: ../bin/cdraw.c:581 ../bin/compound.c:749 ../bin/cturntbl.c:277
+#: ../bin/doption.c:101 ../bin/doption.c:102 ../bin/tbezier.c:301
+#: ../bin/tcornu.c:334 ../bin/tcurve.c:410 ../bin/tease.c:536
+#: ../bin/tstraigh.c:95 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:757
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:758
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:759
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:760
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:761
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:762
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:763
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:764
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:765
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:766
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:767
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:768
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:769
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:770
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:771
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:772
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:773
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:774
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:775
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:776
msgid "Layer"
msgstr "Calque"
-#: ../bin/cdraw.c:1105
+#: ../bin/cdraw.c:1057 ../bin/cmisc.c:233 ../bin/cmodify.c:379
+#: ../bin/compound.c:848 ../bin/ctrain.c:218
+msgid "Change Track"
+msgstr "Changer de voie"
+
+#: ../bin/cdraw.c:1162
msgid "Straight Line"
msgstr "Ligne droite"
-#: ../bin/cdraw.c:1110 ../bin/cdraw.c:3045
+#: ../bin/cdraw.c:1167 ../bin/cdraw.c:3190
msgid "Dimension Line"
msgstr "Ligne de cote"
-#: ../bin/cdraw.c:1131 ../bin/cdraw.c:2722 ../bin/cdraw.c:3047
+#: ../bin/cdraw.c:1188 ../bin/cdraw.c:2860 ../bin/cdraw.c:3192
msgid "Table Edge"
msgstr "Bord de table"
-#: ../bin/cdraw.c:1155 ../bin/cdraw.c:2727 ../bin/cdraw.c:2728
-#: ../bin/cdraw.c:2729
+#: ../bin/cdraw.c:1212 ../bin/cdraw.c:2865 ../bin/cdraw.c:2866
+#: ../bin/cdraw.c:2867
msgid "Circle"
msgstr "Cercle"
-#: ../bin/cdraw.c:1170
+#: ../bin/cdraw.c:1227
msgid "Curved Line"
msgstr "Ligne courbe"
-#: ../bin/cdraw.c:1192 ../bin/cdraw.c:2732 ../bin/cdraw.c:2733
-#: ../bin/cdraw.c:2734
+#: ../bin/cdraw.c:1249 ../bin/cdraw.c:2870 ../bin/cdraw.c:2871
+#: ../bin/cdraw.c:2872
msgid "Filled Circle"
msgstr "Cercle plein"
-#: ../bin/cdraw.c:1222
+#: ../bin/cdraw.c:1279
msgid "Filled Rectangle"
msgstr "Rectangle plein"
-#: ../bin/cdraw.c:1222
+#: ../bin/cdraw.c:1279
msgid "Rectangle"
msgstr "Rectangle"
-#: ../bin/cdraw.c:1236 ../bin/cdraw.c:2738
+#: ../bin/cdraw.c:1293 ../bin/cdraw.c:2876
msgid "Polyline"
msgstr "Polyligne"
-#: ../bin/cdraw.c:1243 ../bin/cdraw.c:2736 ../bin/cdraw.c:3065
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2874 ../bin/cdraw.c:3213
msgid "Filled Polygon"
msgstr "Polygone plein"
-#: ../bin/cdraw.c:1243 ../bin/cdraw.c:2731 ../bin/cdraw.c:3064
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2869 ../bin/cdraw.c:3212
msgid "Polygon"
msgstr "Polygone"
-#: ../bin/cdraw.c:1273
+#: ../bin/cdraw.c:1330
#, c-format
msgid "%s(%d) Layer=%d"
msgstr "%s(%d) Calque=%d"
-#: ../bin/cdraw.c:1293 ../bin/cdraw.c:2791 ../bin/compound.c:1097
-#: ../bin/doption.c:94 ../bin/tbezier.c:472
+#: ../bin/cdraw.c:1355 ../bin/cdraw.c:2930 ../bin/compound.c:1156
+#: ../bin/doption.c:96 ../bin/tbezier.c:519
msgid "Solid"
msgstr "Solide"
-#: ../bin/cdraw.c:1294 ../bin/cdraw.c:2793 ../bin/compound.c:1098
-#: ../bin/doption.c:91 ../bin/tbezier.c:473
+#: ../bin/cdraw.c:1356 ../bin/cdraw.c:2932 ../bin/compound.c:1157
+#: ../bin/doption.c:93 ../bin/tbezier.c:520
msgid "Dash"
msgstr "Tiret"
-#: ../bin/cdraw.c:1295 ../bin/cdraw.c:2792 ../bin/compound.c:1099
-#: ../bin/tbezier.c:474
+#: ../bin/cdraw.c:1357 ../bin/cdraw.c:2931 ../bin/compound.c:1158
+#: ../bin/tbezier.c:521
msgid "Dot"
msgstr "Pointillé"
-#: ../bin/cdraw.c:1296 ../bin/compound.c:1100 ../bin/tbezier.c:475
+#: ../bin/cdraw.c:1358 ../bin/compound.c:1159 ../bin/tbezier.c:522
msgid "DashDot"
msgstr "Tiret point"
-#: ../bin/cdraw.c:1297 ../bin/compound.c:1101 ../bin/tbezier.c:476
+#: ../bin/cdraw.c:1359 ../bin/compound.c:1161 ../bin/tbezier.c:523
msgid "DashDotDot"
msgstr "Tiret point point"
-#: ../bin/cdraw.c:1298 ../bin/compound.c:1102 ../bin/tbezier.c:477
+#: ../bin/cdraw.c:1360 ../bin/compound.c:1163 ../bin/tbezier.c:524
msgid "CenterDot"
msgstr "Axe"
-#: ../bin/cdraw.c:1299 ../bin/compound.c:1103 ../bin/tbezier.c:478
+#: ../bin/cdraw.c:1361 ../bin/compound.c:1165 ../bin/tbezier.c:525
msgid "PhantomDot"
msgstr "Axe invisible"
-#: ../bin/cdraw.c:1304 ../bin/cdraw.c:2839
+#: ../bin/cdraw.c:1366 ../bin/cdraw.c:2981
msgid "Tiny"
msgstr "Minuscule"
-#: ../bin/cdraw.c:1305 ../bin/cdraw.c:2840
+#: ../bin/cdraw.c:1367 ../bin/cdraw.c:2982
msgid "Small"
msgstr "Petit"
-#: ../bin/cdraw.c:1306 ../bin/cdraw.c:2841
+#: ../bin/cdraw.c:1368 ../bin/cdraw.c:2983
msgid "Medium"
msgstr "Moyen"
-#: ../bin/cdraw.c:1307 ../bin/cdraw.c:2842
+#: ../bin/cdraw.c:1369 ../bin/cdraw.c:2984
msgid "Large"
msgstr "Grand"
-#: ../bin/cdraw.c:1504 ../bin/cdraw.c:1649 ../bin/cdraw.c:2710
-#: ../bin/cdraw.c:2928 ../bin/cdraw.c:2948 ../bin/cdraw.c:2952
-#: ../bin/compound.c:684 ../bin/compound.c:689 ../bin/compound.c:694
-#: ../bin/compound.c:699 ../bin/compound.c:705 ../bin/cprint.c:154
-#: ../bin/csignal.c:237 ../bin/csignal.c:512 ../bin/ctodesgn.c:187
-#: ../bin/ctodesgn.c:188 ../bin/ctodesgn.c:189 ../bin/ctodesgn.c:191
-#: ../bin/ctodesgn.c:236 ../bin/ctodesgn.c:259 ../bin/ctodesgn.c:261
-#: ../bin/ctodesgn.c:296 ../bin/ctodesgn.c:299 ../bin/ctodesgn.c:325
-#: ../bin/ctodesgn.c:328 ../bin/ctodesgn.c:362 ../bin/ctodesgn.c:367
-#: ../bin/ctodesgn.c:391 ../bin/ctodesgn.c:395 ../bin/ctodesgn.c:432
-#: ../bin/ctodesgn.c:436 ../bin/ctodesgn.c:441 ../bin/ctodesgn.c:467
-#: ../bin/ctodesgn.c:487 ../bin/ctodesgn.c:508 ../bin/ctodesgn.c:615
-#: ../bin/ctrain.c:185 ../bin/tease.c:514
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:181
+#: ../bin/cdraw.c:1575 ../bin/cdraw.c:1721 ../bin/cdraw.c:2848
+#: ../bin/cdraw.c:3071 ../bin/cdraw.c:3092 ../bin/cdraw.c:3096
+#: ../bin/compound.c:721 ../bin/compound.c:726 ../bin/compound.c:731
+#: ../bin/compound.c:736 ../bin/compound.c:742 ../bin/cprint.c:156
+#: ../bin/csignal.c:238 ../bin/csignal.c:516 ../bin/ctodesgn.c:195
+#: ../bin/ctodesgn.c:196 ../bin/ctodesgn.c:197 ../bin/ctodesgn.c:199
+#: ../bin/ctodesgn.c:243 ../bin/ctodesgn.c:269 ../bin/ctodesgn.c:271
+#: ../bin/ctodesgn.c:315 ../bin/ctodesgn.c:318 ../bin/ctodesgn.c:349
+#: ../bin/ctodesgn.c:352 ../bin/ctodesgn.c:394 ../bin/ctodesgn.c:399
+#: ../bin/ctodesgn.c:427 ../bin/ctodesgn.c:431 ../bin/ctodesgn.c:476
+#: ../bin/ctodesgn.c:480 ../bin/ctodesgn.c:485 ../bin/ctodesgn.c:515
+#: ../bin/ctodesgn.c:539 ../bin/ctodesgn.c:564 ../bin/ctodesgn.c:697
+#: ../bin/ctrain.c:181 ../bin/tease.c:529
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:183
msgid "Angle"
msgstr "Angle"
-#: ../bin/cdraw.c:1507 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:186
+#: ../bin/cdraw.c:1578 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:188
msgid "Relative Angle"
msgstr "Angle relatif"
-#: ../bin/cdraw.c:1516 ../bin/cdraw.c:1664 ../bin/cdraw.c:2922
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:182
+#: ../bin/cdraw.c:1587 ../bin/cdraw.c:1737 ../bin/cdraw.c:3065
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:184
msgid "Arc Angle"
msgstr "Angle de l'arc"
-#: ../bin/cdraw.c:1518
+#: ../bin/cdraw.c:1589
msgid "Rotate Angle"
msgstr "Angle de rotation"
-#: ../bin/cdraw.c:1521
+#: ../bin/cdraw.c:1592
msgid "Rot Center X,Y"
msgstr "Rot Centre X,Y"
-#: ../bin/cdraw.c:1620
+#: ../bin/cdraw.c:1692
msgid "Seg Lth"
msgstr "Long. segmt"
-#: ../bin/cdraw.c:1621
+#: ../bin/cdraw.c:1693
msgid "Rel Ang"
msgstr "Angle Rel"
-#: ../bin/cdraw.c:2692 ../bin/cdraw.c:2694 ../bin/cdraw.c:2819
+#: ../bin/cdraw.c:2830 ../bin/cdraw.c:2832 ../bin/cdraw.c:2958
msgid "Lumber Type"
msgstr "Type de structure"
-#: ../bin/cdraw.c:2719
+#: ../bin/cdraw.c:2857
msgid "Straight"
msgstr "Trait"
-#: ../bin/cdraw.c:2720
+#: ../bin/cdraw.c:2858
msgid "Dimension"
msgstr "Dimension"
-#: ../bin/cdraw.c:2723 ../bin/cdraw.c:2724 ../bin/cdraw.c:2725
-#: ../bin/cdraw.c:2726
+#: ../bin/cdraw.c:2861 ../bin/cdraw.c:2862 ../bin/cdraw.c:2863
+#: ../bin/cdraw.c:2864
msgid "Curved"
msgstr "Courbe"
-#: ../bin/cdraw.c:2730 ../bin/cdraw.c:3062
+#: ../bin/cdraw.c:2868 ../bin/cdraw.c:3210
msgid "Box"
msgstr "Boite"
-#: ../bin/cdraw.c:2735 ../bin/cdraw.c:3063
+#: ../bin/cdraw.c:2873 ../bin/cdraw.c:3211
msgid "Filled Box"
msgstr "Boîte pleine"
-#: ../bin/cdraw.c:2737 ../bin/tbezier.c:469
+#: ../bin/cdraw.c:2875 ../bin/tbezier.c:516
msgid "Bezier Line"
msgstr "Ligne Bézier"
-#: ../bin/cdraw.c:2786
+#: ../bin/cdraw.c:2925
#, c-format
msgid "%s Line Width"
msgstr "%s épaisseur"
-#: ../bin/cdraw.c:2789 ../bin/dcar.c:2194 ../bin/dcar.c:4373
-#: ../bin/dcar.c:4378
+#: ../bin/cdraw.c:2928 ../bin/dcar.c:2313 ../bin/dcar.c:4694 ../bin/dcar.c:4700
msgid "Type"
msgstr "Type"
-#: ../bin/cdraw.c:2794
+#: ../bin/cdraw.c:2933
msgid "Dash-Dot"
msgstr "Tiret-point"
-#: ../bin/cdraw.c:2795
+#: ../bin/cdraw.c:2934
msgid "Dash-Dot-Dot"
msgstr "Tiret-point-point"
-#: ../bin/cdraw.c:2808
+#: ../bin/cdraw.c:2947
#, c-format
msgid "%s Color"
msgstr "%s Couleur"
-#: ../bin/cdraw.c:2837
+#: ../bin/cdraw.c:2979
msgid "Dimension Line Size"
msgstr "Dimension des voies"
-#: ../bin/cdraw.c:2849
+#: ../bin/cdraw.c:2991
msgid "Drag to create Table Edge"
msgstr "Faites glisser pour créer un bord de table"
-#: ../bin/cdraw.c:2946
+#: ../bin/cdraw.c:3089
msgid "Seg Length"
msgstr "Longueur du segment"
-#: ../bin/cdraw.c:2950
+#: ../bin/cdraw.c:3094
msgid "Rel Angle"
msgstr "Angle Rel"
-#: ../bin/cdraw.c:3044
+#: ../bin/cdraw.c:3189
msgid "Line"
msgstr "Ligne"
-#: ../bin/cdraw.c:3044
+#: ../bin/cdraw.c:3189
msgid "Draw Line"
msgstr "Dessiner un trait"
-#: ../bin/cdraw.c:3045
+#: ../bin/cdraw.c:3190
msgid "Draw Dimension Line"
msgstr "Tracer une ligne de cote"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:479
-#: ../bin/cdraw.c:3046 ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1251
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:479
+#: ../bin/cdraw.c:3191 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1270
msgid "Benchwork"
msgstr "Plan de travail"
-#: ../bin/cdraw.c:3046
+#: ../bin/cdraw.c:3191
msgid "Draw Benchwork"
msgstr "Dessinez un chassis"
-#: ../bin/cdraw.c:3047
+#: ../bin/cdraw.c:3192
msgid "Draw Table Edge"
msgstr "Dessiner un bord de Table"
-#: ../bin/cdraw.c:3049
+#: ../bin/cdraw.c:3195
msgid "Curve End"
msgstr "Fin de courbe"
-#: ../bin/cdraw.c:3049
+#: ../bin/cdraw.c:3195
msgid "Draw Curve from End"
msgstr "Dessiner une courbe depuis l'extrémité"
-#: ../bin/cdraw.c:3050
+#: ../bin/cdraw.c:3196
msgid "Curve Tangent"
msgstr "Courbe tangente"
-#: ../bin/cdraw.c:3050
+#: ../bin/cdraw.c:3196
msgid "Draw Curve from Tangent"
msgstr "Dessiner une courbe depuis la tangente"
-#: ../bin/cdraw.c:3051
+#: ../bin/cdraw.c:3197
msgid "Curve Center"
msgstr "Centre de la courbe"
-#: ../bin/cdraw.c:3051
+#: ../bin/cdraw.c:3197
msgid "Draw Curve from Center"
msgstr "Dessiner une courbe à partir du centre"
-#: ../bin/cdraw.c:3052
+#: ../bin/cdraw.c:3198
msgid "Curve Chord"
msgstr "Corde de la Courbe"
-#: ../bin/cdraw.c:3052
+#: ../bin/cdraw.c:3198
msgid "Draw Curve from Chord"
msgstr "Dessiner une courbe à partir de la corde"
-#: ../bin/cdraw.c:3053
+#: ../bin/cdraw.c:3199
msgid "Draw Bezier"
msgstr "Dessinez une Bézier"
-#: ../bin/cdraw.c:3056
+#: ../bin/cdraw.c:3203
msgid "Circle Center"
msgstr "Centre du cercle"
-#: ../bin/cdraw.c:3056
+#: ../bin/cdraw.c:3203
msgid "Draw Circle from Center"
msgstr "Tracer un cercle à partir du centre"
-#: ../bin/cdraw.c:3057
+#: ../bin/cdraw.c:3204
msgid "Circle Tangent"
msgstr "Cercle tangent"
-#: ../bin/cdraw.c:3057
+#: ../bin/cdraw.c:3204
msgid "Draw Circle from Tangent"
msgstr "Dessiner un cercle à partir de la tangente"
-#: ../bin/cdraw.c:3059
+#: ../bin/cdraw.c:3206
msgid "Circle Filled Center"
msgstr "Centre du cercle plein"
-#: ../bin/cdraw.c:3059
+#: ../bin/cdraw.c:3206
msgid "Draw Filled Circle from Center"
msgstr "Dessiner un cercle plein à partir du centre"
-#: ../bin/cdraw.c:3060
+#: ../bin/cdraw.c:3207
msgid "Circle Filled Tangent"
msgstr "Tangent à un cercle plein"
-#: ../bin/cdraw.c:3060
+#: ../bin/cdraw.c:3207
msgid "Draw Filled Circle from Tangent"
msgstr "Dessiner un cercle plein à partir de la tangente"
-#: ../bin/cdraw.c:3062
+#: ../bin/cdraw.c:3210
msgid "Draw Box"
msgstr "Dessinez une Boite"
-#: ../bin/cdraw.c:3063
+#: ../bin/cdraw.c:3211
msgid "Draw Filled Box"
msgstr "Dessiner une boîte pleine"
-#: ../bin/cdraw.c:3064
+#: ../bin/cdraw.c:3212
msgid "Draw Polygon"
msgstr "Dessiner un polygone"
-#: ../bin/cdraw.c:3065
+#: ../bin/cdraw.c:3213
msgid "Draw Filled Polygon"
msgstr "Dessiner un polygone plein"
-#: ../bin/cdraw.c:3066
+#: ../bin/cdraw.c:3214
msgid "PolyLine"
msgstr "Polyligne"
-#: ../bin/cdraw.c:3066
+#: ../bin/cdraw.c:3214
msgid "Draw PolyLine"
msgstr "Dessiner une polyligne"
-#: ../bin/cdraw.c:3083
+#: ../bin/cdraw.c:3231
msgid "Straight Objects"
msgstr "Objets droits"
-#: ../bin/cdraw.c:3083
+#: ../bin/cdraw.c:3231
msgid "Draw Straight Objects"
msgstr "Dessiner des objets droits"
-#: ../bin/cdraw.c:3084
+#: ../bin/cdraw.c:3232
msgid "Curved Lines"
msgstr "Lignes courbes"
-#: ../bin/cdraw.c:3084
+#: ../bin/cdraw.c:3232
msgid "Draw Curved Lines"
msgstr "Tracer des voies courbes"
-#: ../bin/cdraw.c:3085
+#: ../bin/cdraw.c:3233
msgid "Circle Lines"
msgstr "Lignes circulaires"
-#: ../bin/cdraw.c:3085
+#: ../bin/cdraw.c:3233
msgid "Draw Circles"
msgstr "Dessinez des cercles"
-#: ../bin/cdraw.c:3086
+#: ../bin/cdraw.c:3234
msgid "Shapes"
msgstr "Formes"
-#: ../bin/cdraw.c:3086
+#: ../bin/cdraw.c:3234
msgid "Draw Shapes"
msgstr "Dessiner des formes"
-#: ../bin/cdraw.c:3380
+#: ../bin/cdraw.c:3536
msgid "Close Polygon - 'g'"
msgstr "Fermer le Polygone - 'g'"
-#: ../bin/cdraw.c:3381
+#: ../bin/cdraw.c:3538
msgid "Make PolyLine - 'l'"
msgstr "Créer une polyligne - 'l'"
-#: ../bin/cdraw.c:3382
+#: ../bin/cdraw.c:3540
msgid "Fill Polygon - 'f'"
msgstr "Remplir le polygone - 'f'"
-#: ../bin/cdraw.c:3383
+#: ../bin/cdraw.c:3542
msgid "Empty Polygon - 'u'"
msgstr "Polygone vide - 'u'"
-#: ../bin/cdraw.c:3385
+#: ../bin/cdraw.c:3545
msgid "Points Mode - 'p'"
msgstr "Mode Points - 'p'"
-#: ../bin/cdraw.c:3386
+#: ../bin/cdraw.c:3548
msgid "Delete Selected Point - 'Del'"
msgstr "Supprimer le point sélectionné - 'Suppr'"
-#: ../bin/cdraw.c:3387
+#: ../bin/cdraw.c:3549
msgid "Vertex Point - 'v'"
msgstr "Point du sommet - 'v'"
-#: ../bin/cdraw.c:3388
+#: ../bin/cdraw.c:3551
msgid "Round Corner - 'r'"
msgstr "Coin rond - 'r"
-#: ../bin/cdraw.c:3389
+#: ../bin/cdraw.c:3553
msgid "Smooth Corner - 's'"
msgstr "Coin lisse - 's'"
-#: ../bin/cdraw.c:3391 ../bin/cselect.c:3701
+#: ../bin/cdraw.c:3556 ../bin/cselect.c:3734
msgid "LineType..."
msgstr "Type de ligne ..."
-#: ../bin/cdraw.c:3392 ../bin/cselect.c:3702
+#: ../bin/cdraw.c:3557 ../bin/cselect.c:3735
msgid "Solid Line"
msgstr "Ligne continue"
-#: ../bin/cdraw.c:3393 ../bin/cselect.c:3703
+#: ../bin/cdraw.c:3559 ../bin/cselect.c:3737
msgid "Dashed Line"
msgstr "Ligne en tirets"
-#: ../bin/cdraw.c:3394 ../bin/cselect.c:3704
+#: ../bin/cdraw.c:3561 ../bin/cselect.c:3739
msgid "Dotted Line"
msgstr "Ligne en pointillé"
-#: ../bin/cdraw.c:3395
+#: ../bin/cdraw.c:3563
msgid "Dash-Dot Line"
msgstr "Ligne en tiret-point"
-#: ../bin/cdraw.c:3396
+#: ../bin/cdraw.c:3565
msgid "Dash-Dot-Dot Line"
msgstr "Ligne en tiret-point-point"
-#: ../bin/cdraw.c:3397
+#: ../bin/cdraw.c:3567
msgid "Center-Dot Line"
msgstr "Ligne d'axe"
-#: ../bin/cdraw.c:3398
+#: ../bin/cdraw.c:3569
msgid "Phantom-Dot Line"
msgstr "Ligne d'axe invisible"
-#: ../bin/cdraw.c:3400
+#: ../bin/cdraw.c:3572
msgid "Origin Mode - 'o'"
msgstr "Mode origine - 'o'"
-#: ../bin/cdraw.c:3401
+#: ../bin/cdraw.c:3574
msgid "Reset Origin - '0'"
msgstr "Réinitialiser l'origine - '0'"
-#: ../bin/cdraw.c:3402
+#: ../bin/cdraw.c:3576
msgid "Origin to Selected - 'l'"
msgstr "Origine de la sélection - 'l'"
-#: ../bin/cdraw.c:3403
+#: ../bin/cdraw.c:3578
msgid "Origin to Middle - 'm'"
msgstr "De l'origine au milieu - 'm'"
-#: ../bin/celev.c:42 ../bin/cprint.c:115 ../bin/cprofile.c:1532
-#: ../bin/csplit.c:193 ../bin/csplit.c:198 ../bin/dease.c:64
-#: ../bin/doption.c:92 ../bin/doption.c:94
+#: ../bin/celev.c:42 ../bin/cprint.c:117 ../bin/cprofile.c:1531
+#: ../bin/csplit.c:201 ../bin/csplit.c:210 ../bin/dease.c:68
+#: ../bin/doption.c:94 ../bin/doption.c:96
msgid "None"
msgstr "Aucun"
@@ -1614,31 +1616,31 @@ msgstr "Calculé"
msgid "Station"
msgstr "Gare"
-#: ../bin/celev.c:43 ../bin/cprofile.c:1530 ../bin/dcmpnd.c:70
+#: ../bin/celev.c:43 ../bin/cprofile.c:1529 ../bin/dcmpnd.c:71
msgid "Ignore"
msgstr "Ignoré"
-#: ../bin/celev.c:215
+#: ../bin/celev.c:233
msgid "Set Elevation"
msgstr "Définir l'élévation"
-#: ../bin/celev.c:305 ../bin/celev.c:312 ../bin/celev.c:315
+#: ../bin/celev.c:325 ../bin/celev.c:334 ../bin/celev.c:338
#, c-format
msgid "Undefined"
msgstr "Non défini"
-#: ../bin/celev.c:359 ../bin/celev.c:502
+#: ../bin/celev.c:384 ../bin/celev.c:541
msgid "Elevation"
msgstr "Élévation"
-#: ../bin/celev.c:359 ../bin/cmisc.c:459 ../bin/dcontmgm.c:287
-#: ../bin/dcustmgm.c:378 ../bin/dlayer.c:1546 ../bin/dpricels.c:151
-#: ../bin/filenoteui.c:238 ../bin/linknoteui.c:177
-#: ../bin/paramfilesearch_ui.c:476 ../bin/textnoteui.c:166
+#: ../bin/celev.c:385 ../bin/cmisc.c:467 ../bin/dcustmgm.c:407
+#: ../bin/dcontmgm.c:308 ../bin/dlayer.c:2071 ../bin/dpricels.c:167
+#: ../bin/filenoteui.c:253 ../bin/linknoteui.c:169
+#: ../bin/paramfilesearch_ui.c:477 ../bin/textnoteui.c:137
msgid "Done"
msgstr "Valider"
-#: ../bin/celev.c:371
+#: ../bin/celev.c:399
msgid ""
"Click on end, +Shift to split, +Ctrl to move description, +Alt to show "
"elevation"
@@ -1646,43 +1648,43 @@ msgstr ""
"Cliquez sur la fin, +Maj pour diviser, +Ctrl pour déplacer la description, "
"+Alt pour afficher l'élévation"
-#: ../bin/celev.c:391
+#: ../bin/celev.c:420
msgid "Move to end or track crossing +Shift to split"
msgstr "Déplacez en fin ou à l'intersection de la voie + Maj pour diviser"
-#: ../bin/celev.c:395
+#: ../bin/celev.c:424
msgid "Move to end or track crossing"
msgstr "Déplacez en fin ou à l'intersection de la voie"
-#: ../bin/celev.c:405
+#: ../bin/celev.c:436
#, c-format
msgid "Crossing - First %0.3f, Second %0.3f, Clearance %0.3f - Click to Split"
msgstr ""
"Croisement - Premier %0.3f, Deuxième %0.3f, Dégagement %0.3f - Cliquer pour "
"diviser"
-#: ../bin/celev.c:407
+#: ../bin/celev.c:439
#, c-format
msgid "Crossing - First %0.3f, Second %0.3f, Clearance %0.3f"
msgstr "Croisement - Premier %0.3f, Deuxième %0.3f, Dégagement %0.3f"
-#: ../bin/celev.c:419
+#: ../bin/celev.c:453
#, c-format
msgid "Click to split here - elevation %0.3f"
msgstr "Cliquez ici pour segmenter - élévation %0.3f"
-#: ../bin/celev.c:424
+#: ../bin/celev.c:458
#, c-format
msgid "Track End elevation %0.3f - snap End Pt"
msgstr ""
"Élévation de l'extrémité de la voie ferrée %0.3f - extrémité encliquetable"
-#: ../bin/celev.c:427
+#: ../bin/celev.c:461
#, c-format
msgid "Track End elevation %0.3f"
msgstr "Élévation de l'extrémité de la voie %0.3f"
-#: ../bin/celev.c:429 ../bin/celev.c:431
+#: ../bin/celev.c:463 ../bin/celev.c:466
msgid ""
"Click on End Pt, +Shift to split, +Ctrl to move description, +Alt show "
"Elevation"
@@ -1690,273 +1692,265 @@ msgstr ""
"Cliquez sur la fin, +Maj pour diviser, +Ctrl pour déplacer la description, "
"+Alt afficher l'élévation"
-#: ../bin/celev.c:450
+#: ../bin/celev.c:486
msgid "Click on end, +Shift to split, +Ctrl to move description"
msgstr ""
"Cliquez sur fin, +Maj pour segmenter, +Ctrl pour déplacer la description"
-#: ../bin/celev.c:454
+#: ../bin/celev.c:490
msgid "Split track"
msgstr "Segmenter une voie"
-#: ../bin/celev.c:459
+#: ../bin/celev.c:496
msgid "Track split!"
msgstr "La voie est coupée !"
-#: ../bin/celev.c:465
+#: ../bin/celev.c:503
msgid "Point selected!"
msgstr "Point sélectionné !"
-#: ../bin/cgroup.c:611
+#: ../bin/cgroup.c:664
msgid "Ungroup Object"
msgstr "Dissocier l'Objet"
-#: ../bin/cgroup.c:623
+#: ../bin/cgroup.c:677
#, c-format
msgid "%d objects ungrouped"
msgstr "%d objets dissociés"
-#: ../bin/cgroup.c:625
+#: ../bin/cgroup.c:679
msgid "No objects ungrouped"
msgstr "Aucun objet dégroupé"
-#: ../bin/cgroup.c:637
+#: ../bin/cgroup.c:693
msgid "Replace with new group?"
msgstr "Remplacer par un nouveau groupe ?"
-#: ../bin/cgroup.c:643 ../bin/compound.c:707 ../bin/cstruct.c:62
-#: ../bin/ctodesgn.c:193 ../bin/ctodesgn.c:2939 ../bin/cturnout.c:82
-#: ../bin/dcar.c:2186 ../bin/dcar.c:4373 ../bin/dcar.c:4378
-#: ../bin/dcmpnd.c:449 ../bin/dcustmgm.c:44
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:406
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:615
+#: ../bin/cgroup.c:694
+msgid "Turntable/TransferTable/DblSlipSwith?"
+msgstr ""
+
+#: ../bin/cgroup.c:700 ../bin/compound.c:744 ../bin/cstruct.c:65
+#: ../bin/ctodesgn.c:201 ../bin/ctodesgn.c:3209 ../bin/cturnout.c:84
+#: ../bin/dcar.c:2305 ../bin/dcar.c:4694 ../bin/dcar.c:4700 ../bin/dcmpnd.c:483
+#: ../bin/dcustmgm.c:45 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:417
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:656
msgid "Manufacturer"
msgstr "Fabricant"
-#: ../bin/cgroup.c:644 ../bin/cmisc.c:459 ../bin/cstruct.c:62
-#: ../bin/ctodesgn.c:2940 ../bin/ctodesgn.c:2941 ../bin/ctrain.c:188
-#: ../bin/cturnout.c:82 ../bin/dcar.c:2202 ../bin/dcar.c:4374
-#: ../bin/dcar.c:4379 ../bin/dcmpnd.c:450 ../bin/dcustmgm.c:45
-#: ../bin/denum.c:184 ../bin/denum.c:185 ../bin/denum.c:188
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:407
+#: ../bin/cgroup.c:701 ../bin/cmisc.c:467 ../bin/cstruct.c:65
+#: ../bin/ctodesgn.c:3210 ../bin/ctodesgn.c:3211 ../bin/ctrain.c:184
+#: ../bin/cturnout.c:84 ../bin/dcar.c:2321 ../bin/dcar.c:4695
+#: ../bin/dcar.c:4701 ../bin/dcmpnd.c:484 ../bin/dcustmgm.c:46
+#: ../bin/denum.c:188 ../bin/denum.c:189 ../bin/denum.c:194
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:418
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:650
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:651
msgid "Description"
msgstr "Description"
-#: ../bin/cgroup.c:645 ../bin/dcmpnd.c:451
+#: ../bin/cgroup.c:702 ../bin/dcmpnd.c:485
msgid "#"
msgstr "#"
-#: ../bin/cgroup.c:646 ../bin/compound.c:711
+#: ../bin/cgroup.c:703 ../bin/compound.c:748
msgid "# Segments"
msgstr "# Segments"
-#: ../bin/cgroup.c:648
+#: ../bin/cgroup.c:705
msgid "Offset X,Y:"
msgstr "Décalage X, Y:"
-#: ../bin/cgroup.c:1216
+#: ../bin/cgroup.c:1320
msgid "No endpts"
msgstr "Pas de pts de fin"
-#: ../bin/cgroup.c:1326
-msgid "No paths"
-msgstr "Pas de chemins"
-
-#: ../bin/cgroup.c:1597 ../bin/cgroup.c:1652
+#: ../bin/cgroup.c:1732 ../bin/cgroup.c:1798
msgid "Group Tracks"
msgstr "Voies du groupe"
-#: ../bin/cgroup.c:1715
+#: ../bin/cgroup.c:1866
msgid "Group Objects"
msgstr "Objets du groupe"
-#: ../bin/chndldto.c:67
+#: ../bin/chndldto.c:68
msgid "Place frog and drag angle"
msgstr "Placer le cœur et l'angle de déviation"
-#: ../bin/chndldto.c:84
+#: ../bin/chndldto.c:85
msgid "frog"
msgstr "coeur"
-#: ../bin/chndldto.c:90
+#: ../bin/chndldto.c:91
msgid "Drag to set angle"
msgstr "Faites glisser pour définir l'angle"
-#: ../bin/chndldto.c:129
+#: ../bin/chndldto.c:132
#, c-format
msgid "Angle = %0.2f Frog# = %0.2f"
msgstr "Angle = %0.2f Coeur# = %0.2f"
-#: ../bin/chndldto.c:131
+#: ../bin/chndldto.c:134
msgid "Frog angle is too close to 0"
msgstr "L'angle du cœur est trop proche de 0"
-#: ../bin/chndldto.c:134
+#: ../bin/chndldto.c:137
msgid "Select point position"
msgstr "Sélectionnez la position du point"
-#: ../bin/chndldto.c:146 ../bin/chndldto.c:171
+#: ../bin/chndldto.c:152 ../bin/chndldto.c:178
msgid "points"
msgstr "aiguilles"
-#: ../bin/chndldto.c:268
+#: ../bin/chndldto.c:282
#, c-format
msgid "Length = %0.2f Angle = %0.2f Frog# = %0.2f"
msgstr "Longueur = %0.2f angle = %0.2f cœur# = %0.2f"
-#: ../bin/chndldto.c:271
+#: ../bin/chndldto.c:286
msgid "Create Hand Laid Turnout"
msgstr "Créer un aiguillage paramétré à la main"
-#: ../bin/chndldto.c:355
+#: ../bin/chndldto.c:381
msgid "HandLaidTurnout"
msgstr "Aiguillage de conception libre"
-#: ../bin/cjoin.c:164
+#: ../bin/cjoin.c:170
#, c-format
msgid "Curved Track: Radius=%s Length=%s"
msgstr "Voie courbe : Rayon =%s Longueur =%s"
-#: ../bin/cjoin.c:250
+#: ../bin/cjoin.c:261
#, c-format
msgid "Curved Track: Radius=%s Length=%s Angle=%0.3f"
msgstr "Voie courbe : Rayon =%s Longueur =%s Angle =%0.3f"
-#: ../bin/cjoin.c:346
+#: ../bin/cjoin.c:363
#, c-format
msgid "Track (%d) is too short for transition-curve by %0.3f"
msgstr "La voie (%d) est trop courte pour la courbe de transition de %0.3f"
-#: ../bin/cjoin.c:364
+#: ../bin/cjoin.c:381
#, c-format
msgid "Connecting track is too short by %0.3f"
msgstr "La voie de connexion est trop courte de %0.3f"
-#: ../bin/cjoin.c:408
+#: ../bin/cjoin.c:431
msgid "Click on an unselected End-Point"
msgstr "Cliquez sur un point d'extrémité non sélectionné"
-#: ../bin/cjoin.c:409
+#: ../bin/cjoin.c:432
msgid "Click on a selected End-Point"
msgstr "Cliquez sur un point d'extrémité sélectionné"
-#: ../bin/cjoin.c:415
+#: ../bin/cjoin.c:438
msgid "unselected"
msgstr "non sélectionné"
-#: ../bin/cjoin.c:415 ../bin/cprint.c:160
+#: ../bin/cjoin.c:438 ../bin/cprint.c:162
msgid "selected"
msgstr "sélectionnée-s"
-#: ../bin/cjoin.c:472
+#: ../bin/cjoin.c:499
msgid "Left click - Select first draw object end"
msgstr "Clic gauche - Sélectionner la première extrémité de l'objet de dessin"
-#: ../bin/cjoin.c:512 ../bin/cjoin.c:546
+#: ../bin/cjoin.c:539 ../bin/cjoin.c:576
msgid "Not a line - Try again"
msgstr "Pas de ligne - Réessayez"
-#: ../bin/cjoin.c:542
+#: ../bin/cjoin.c:572
msgid "Left click - Select second object end"
msgstr "Clic gauche - Sélectionnez la deuxième extrémité de l'objet"
-#: ../bin/cjoin.c:554
+#: ../bin/cjoin.c:584
msgid "Same draw object and same endpoint - Try again"
msgstr "Même objet du dessin et même point de fin - Réessayer"
-#: ../bin/cjoin.c:596
+#: ../bin/cjoin.c:632
msgid "Create PolyLine"
msgstr "Créer une polyligne"
-#: ../bin/cjoin.c:838
+#: ../bin/cjoin.c:913
msgid "Left click - join with track"
msgstr "Clic gauche - raccorder avec la voie"
-#: ../bin/cjoin.c:840
+#: ../bin/cjoin.c:916
msgid "Left click - join with track, Shift Left click - move to join"
msgstr ""
"Clic gauche - raccorder avec la voie, Shift+clic gauche - déplacer pour "
"raccorder"
-#: ../bin/cjoin.c:918 ../bin/cjoin.c:1337 ../bin/cjoin.c:1344
+#: ../bin/cjoin.c:1011 ../bin/cjoin.c:1469 ../bin/cjoin.c:1476
msgid "Select 2nd track"
msgstr "Sélectionner une 2nd voie"
-#: ../bin/cjoin.c:1147
+#: ../bin/cjoin.c:1266
msgid "Beyond end of 2nd track"
msgstr "Au-delà de la fin de la 2ème voie"
-#: ../bin/cjoin.c:1182
+#: ../bin/cjoin.c:1302
msgid "Beyond end of 1st track"
msgstr "Au-delà de la fin de la 1ère voie"
-#: ../bin/cjoin.c:1204
+#: ../bin/cjoin.c:1325
msgid "First Track Type not supported for non-Cornu Join"
msgstr "La première voie ne peut être connectée que via des courbes de Cornu"
-#: ../bin/cjoin.c:1211
+#: ../bin/cjoin.c:1333
msgid "First "
msgstr "Premier "
-#: ../bin/cjoin.c:1236
+#: ../bin/cjoin.c:1359
msgid "Second Track Type not supported for non-Cornu Join"
msgstr "Deuxième type de voie non pris en charge pour un raccord non Cornu"
-#: ../bin/cjoin.c:1243
+#: ../bin/cjoin.c:1366
msgid "Second "
msgstr "Second "
-#: ../bin/cjoin.c:1257 ../bin/track.c:2335 ../bin/track.c:2371
-#: ../bin/track.c:2437
+#: ../bin/cjoin.c:1380 ../bin/track.c:2395 ../bin/track.c:2434
+#: ../bin/track.c:2509
msgid "Connecting "
msgstr "Connecter "
-#: ../bin/cjoin.c:1347
+#: ../bin/cjoin.c:1479
msgid "Join Tracks"
msgstr "Raccorder les voies"
-#: ../bin/cjoin.c:1435
+#: ../bin/cjoin.c:1575
msgid "Join"
msgstr "Raccorder"
-#: ../bin/cjoin.c:1436
+#: ../bin/cjoin.c:1576
msgid "Join Track"
msgstr "Raccorder une voie"
-#: ../bin/cjoin.c:1437
+#: ../bin/cjoin.c:1579
msgid "Join Lines"
msgstr "Raccorder des lignes"
-#: ../bin/cmisc.c:57
+#: ../bin/cmisc.c:55
msgid "Middle"
msgstr "Milieu"
-#: ../bin/cmisc.c:57 ../bin/macro.c:67
+#: ../bin/cmisc.c:55 ../bin/macro.c:70
msgid "End"
msgstr "Fin"
-#: ../bin/cmisc.c:142 ../bin/tcurve.c:390 ../bin/tease.c:520
+#: ../bin/cmisc.c:140 ../bin/tcurve.c:409 ../bin/tease.c:535
msgid "Lock"
msgstr "Verrou"
-#: ../bin/cmisc.c:234 ../bin/cmodify.c:364 ../bin/compound.c:805
-#: ../bin/ctrain.c:219
-msgid "Change Track"
-msgstr "Changer de voie"
-
-#: ../bin/cmisc.c:585
+#: ../bin/cmisc.c:593
msgid "Select track to describe +Shift for Frozen"
msgstr "Sélectionnez la voie à parcourir + Maj pour geler"
-#: ../bin/cmisc.c:686 ../bin/doption.c:236
+#: ../bin/cmisc.c:691 ../bin/doption.c:245
msgid "Properties"
msgstr "Propriétés"
-#: ../bin/cmisc2.c:52
-msgid "Bridge"
-msgstr "Pont"
-
-#: ../bin/cmodify.c:266
+#: ../bin/cmodify.c:276
msgid ""
"Select a track to modify, Left-Click change length, Right-Click to add "
"flextrack"
@@ -1964,50 +1958,50 @@ msgstr ""
"Sélectionnez une voie à modifier, cliquez sur le bouton gauche pour changer "
"sa longueur, cliquez sur le bouton droit pour ajouter une voie"
-#: ../bin/cmodify.c:490
+#: ../bin/cmodify.c:520
msgid "Modify Track"
msgstr "Modifier la voie"
-#: ../bin/cmodify.c:532
+#: ../bin/cmodify.c:564
msgid "Drag to add flex track"
msgstr "Faites glisser pour créer une voie flexible"
-#: ../bin/cmodify.c:537
+#: ../bin/cmodify.c:569
msgid "No track to extend"
msgstr "Pas de voies à prolonger"
-#: ../bin/cmodify.c:542
+#: ../bin/cmodify.c:574
msgid "No track selected"
msgstr "Aucune voie sélectionnée"
-#: ../bin/cmodify.c:675
+#: ../bin/cmodify.c:724
#, c-format
msgid "Curve Track: Radius=%s Length=%s Angle=%0.3f"
msgstr "Voie courbe : Rayon = %s Longueur = %s Angle = %0.3f"
-#: ../bin/cmodify.c:690
+#: ../bin/cmodify.c:740
msgid "Extend Track"
msgstr "Prolonger la voie"
-#: ../bin/cmodify.c:822
+#: ../bin/cmodify.c:882
msgid "Modify"
msgstr "Modifier"
-#: ../bin/cmodify.c:830 ../bin/cselect.c:3654 ../bin/cselect.c:3671
-#: ../bin/misc.c:2444 ../bin/misc.c:2446
+#: ../bin/cmodify.c:895 ../bin/cselect.c:3664 ../bin/cselect.c:3686
+#: ../bin/menu.c:937 ../bin/menu.c:939
msgid "Zoom In"
msgstr "Zoom Avant"
-#: ../bin/cmodify.c:831 ../bin/cselect.c:3658 ../bin/cselect.c:3672
-#: ../bin/misc.c:2448 ../bin/misc.c:2450
+#: ../bin/cmodify.c:896 ../bin/cselect.c:3669 ../bin/cselect.c:3687
+#: ../bin/menu.c:941 ../bin/menu.c:943
msgid "Zoom Out"
msgstr "Zoom Arrière"
-#: ../bin/cmodify.c:832
+#: ../bin/cmodify.c:897
msgid "Pan center - 'c'"
msgstr "Centre du panoramique - 'c'"
-#: ../bin/cnote.c:67 ../bin/textnoteui.c:43 ../bin/trknote.c:55
+#: ../bin/cnote.c:67 ../bin/textnoteui.c:47 ../bin/trknote.c:52
msgid "Note"
msgstr "Remarque"
@@ -2015,374 +2009,390 @@ msgstr "Remarque"
msgid "Replace this text with your layout notes"
msgstr "Remplacez ce texte par vos notes de plan"
-#: ../bin/compound.c:685 ../bin/compound.c:690 ../bin/compound.c:695
-#: ../bin/compound.c:700 ../bin/tbezier.c:252 ../bin/tbezier.c:259
-#: ../bin/tcornu.c:305 ../bin/tcornu.c:310
+#: ../bin/command.c:388 ../bin/command.c:395
+msgid ""
+"Cancelling the current command will undo the changes\n"
+"you are currently making. Do you want to do the update instead?"
+msgstr ""
+"L'annulation de la commande en cours annulera les modifications\n"
+"vous faites actuellement. Voulez-vous faire la mise à jour à la place?"
+
+#: ../bin/command.c:390 ../bin/command.c:458 ../bin/cprint.c:1445
+#: ../bin/dbitmap.c:428 ../bin/filenoteui.c:157 ../bin/param.c:3013
+#: ../bin/svgoutput.c:460
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:675
+msgid "Cancel"
+msgstr "Annuler"
+
+#: ../bin/command.c:456
+msgid ""
+"Cancelling the current command will undo the changes\n"
+"you are currently making. Do you want to update?"
+msgstr ""
+"L'annulation de la commande en cours annulera les \n"
+"modifications en cours. Voulez-vous mettre à jour?"
+
+#: ../bin/compound.c:722 ../bin/compound.c:727 ../bin/compound.c:732
+#: ../bin/compound.c:737 ../bin/tbezier.c:286 ../bin/tbezier.c:293
+#: ../bin/tcornu.c:322 ../bin/tcornu.c:327
msgid "Center X,Y"
msgstr "Centre X,Y"
-#: ../bin/compound.c:687 ../bin/tbezier.c:253 ../bin/tcornu.c:306
+#: ../bin/compound.c:724 ../bin/tbezier.c:287 ../bin/tcornu.c:323
msgid "Z1"
msgstr "Z1"
-#: ../bin/compound.c:692 ../bin/tbezier.c:260 ../bin/tcornu.c:311
+#: ../bin/compound.c:729 ../bin/tbezier.c:294 ../bin/tcornu.c:328
msgid "Z2"
msgstr "Z2"
-#: ../bin/compound.c:693
+#: ../bin/compound.c:730
msgid "End Pt 3: X,Y"
msgstr "Bout 3: X,Y"
-#: ../bin/compound.c:697
+#: ../bin/compound.c:734
msgid "Z3"
msgstr "Z3"
-#: ../bin/compound.c:698
+#: ../bin/compound.c:735
msgid "End Pt 4: X,Y"
msgstr "Bout 4: X,Y"
-#: ../bin/compound.c:702
+#: ../bin/compound.c:739
msgid "Z4"
msgstr "Z4"
-#: ../bin/compound.c:704 ../bin/tease.c:513
+#: ../bin/compound.c:741 ../bin/tease.c:528
msgid "Origin: X,Y"
msgstr "Origine : X,Y"
-#: ../bin/compound.c:709 ../bin/cstruct.c:62 ../bin/cturnout.c:82
-#: ../bin/dcar.c:4373 ../bin/dcar.c:4378 ../bin/dcustmgm.c:45
-#: ../bin/doption.c:97 ../bin/doption.c:98
+#: ../bin/compound.c:746 ../bin/cstruct.c:65 ../bin/cturnout.c:84
+#: ../bin/dcar.c:4694 ../bin/dcar.c:4700 ../bin/dcustmgm.c:46
+#: ../bin/doption.c:99 ../bin/doption.c:100
msgid "Part No"
msgstr "Référence N°"
-#: ../bin/compound.c:710
+#: ../bin/compound.c:747
msgid "LineType"
msgstr "Type de Ligne"
-#: ../bin/compound.c:971 ../bin/cstruct.c:953 ../bin/cstruct.c:1149
+#: ../bin/compound.c:1025 ../bin/cstruct.c:1030 ../bin/cstruct.c:1246
msgid "Structure"
msgstr "Structure"
-#: ../bin/compound.c:973 ../bin/cswitchmotor.c:225 ../bin/cturnout.c:2949
-#: ../bin/cturnout.c:4836
+#: ../bin/compound.c:1027 ../bin/cswitchmotor.c:232 ../bin/cturnout.c:988
msgid "Turnout"
msgstr "Aiguillage"
-#: ../bin/compound.c:973
+#: ../bin/compound.c:1027
msgid "Sectional Track"
msgstr "Section de voie"
-#: ../bin/compound.c:977
+#: ../bin/compound.c:1031
#, c-format
msgid "%s (%d) Layer= %d %s"
msgstr "%s (%d) Calque= %d %s"
-#: ../bin/cparalle.c:49 ../bin/cparalle.c:97 ../bin/cparalle.c:138
-#: ../bin/ctodesgn.c:537 ../bin/ctodesgn.c:557 ../bin/ctodesgn.c:577
-#: ../bin/tcurve.c:384
+#: ../bin/cparalle.c:49 ../bin/cparalle.c:98 ../bin/cparalle.c:140
+#: ../bin/ctodesgn.c:600 ../bin/ctodesgn.c:626 ../bin/ctodesgn.c:651
+#: ../bin/tcurve.c:403
msgid "Separation"
msgstr "Séparation"
-#: ../bin/cparalle.c:52 ../bin/cparalle.c:98
+#: ../bin/cparalle.c:52 ../bin/cparalle.c:99
msgid "Radius Factor"
msgstr "Facteur de Rayon"
-#: ../bin/cparalle.c:139
+#: ../bin/cparalle.c:141
msgid "Radius factor"
msgstr "Facteur de rayon"
-#: ../bin/cparalle.c:152
+#: ../bin/cparalle.c:155
msgid " Track/Line doesn't support parallel"
msgstr " Cette voie/ligne ne permet pas le parallélisme"
-#: ../bin/cparalle.c:226
+#: ../bin/cparalle.c:230
msgid "Create Parallel Track"
msgstr "Créer une voie parallèle"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:470
-#: ../bin/cparalle.c:296 ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1233
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:470
+#: ../bin/cparalle.c:299
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1252
msgid "Parallel"
msgstr "Parallèle"
-#: ../bin/cparalle.c:297
+#: ../bin/cparalle.c:300
msgid "Parallel Track"
msgstr "Voie parallèle"
-#: ../bin/cparalle.c:298
+#: ../bin/cparalle.c:303
msgid "Parallel Line"
msgstr "Ligne parallèle"
-#: ../bin/cprint.c:108
+#: ../bin/cprint.c:110
msgid "Portrait"
msgstr "Portrait"
-#: ../bin/cprint.c:108
+#: ../bin/cprint.c:110
msgid "Landscape"
msgstr "Paysage"
-#: ../bin/cprint.c:109 ../bin/cswitchmotor.c:90 ../bin/cswitchmotor.c:109
-#: ../bin/cswitchmotor.c:222 ../bin/dbench.c:73 ../bin/dease.c:64
-#: ../bin/doption.c:91 ../bin/doption.c:93 ../bin/macro.c:1391
+#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:90 ../bin/cswitchmotor.c:109
+#: ../bin/cswitchmotor.c:229 ../bin/dbench.c:75 ../bin/dease.c:68
+#: ../bin/doption.c:93 ../bin/doption.c:95 ../bin/macro.c:1416
msgid "Normal"
msgstr "Normal"
-#: ../bin/cprint.c:109 ../bin/cswitchmotor.c:91 ../bin/cswitchmotor.c:110
-#: ../bin/cswitchmotor.c:223 ../bin/ctrain.c:942 ../bin/ctrain.c:1251
+#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:91 ../bin/cswitchmotor.c:110
+#: ../bin/cswitchmotor.c:230 ../bin/ctrain.c:1011 ../bin/ctrain.c:1324
msgid "Reverse"
msgstr "Inversé"
-#: ../bin/cprint.c:110
+#: ../bin/cprint.c:112
msgid "Engineering Data"
msgstr "Données d'ingénierie"
-#: ../bin/cprint.c:111
+#: ../bin/cprint.c:113
msgid "Registration Marks (in 1:1 scale only)"
msgstr "Aides au positionnement (à l'échelle 1:1 uniquement)"
-#: ../bin/cprint.c:112
+#: ../bin/cprint.c:114
msgid "Page Numbers"
msgstr "Numéro de page"
-#: ../bin/cprint.c:113
+#: ../bin/cprint.c:115
msgid "Ignore Page Margins"
msgstr "Impression sans marge"
-#: ../bin/cprint.c:114 ../bin/csnap.c:675 ../bin/doption.c:535
+#: ../bin/cprint.c:116 ../bin/csnap.c:733 ../bin/doption.c:559
msgid "Snap Grid"
msgstr "Grille magnétique"
-#: ../bin/cprint.c:115
+#: ../bin/cprint.c:117
msgid "Layout Edge"
msgstr "Bord de Layout"
-#: ../bin/cprint.c:115
+#: ../bin/cprint.c:117
msgid "Every Page"
msgstr "Chaque page"
-#: ../bin/cprint.c:116
+#: ../bin/cprint.c:118
msgid "Roadbed Outline"
msgstr "Rayon droit"
-#: ../bin/cprint.c:117
+#: ../bin/cprint.c:119
msgid "Centerline below Scale 1:1"
msgstr "Imprime l'axe central \"en dessous de l'échelle 1:1\""
-#: ../bin/cprint.c:126
+#: ../bin/cprint.c:128
msgid "Print Scale"
msgstr "Echelle d'impression"
-#: ../bin/cprint.c:127
+#: ../bin/cprint.c:129
msgid "Page Width"
msgstr "Largeur de page"
-#: ../bin/cprint.c:128
+#: ../bin/cprint.c:130
msgid "Max"
msgstr "Max"
-#: ../bin/cprint.c:130
+#: ../bin/cprint.c:132
msgid "Snap Shot"
msgstr "Copie Ecran"
-#: ../bin/cprint.c:131
+#: ../bin/cprint.c:133
msgid "Page Format"
msgstr "Format de la page"
-#: ../bin/cprint.c:132
+#: ../bin/cprint.c:134
msgid "Print Order"
msgstr "Ordre d'impression"
-#: ../bin/cprint.c:133
+#: ../bin/cprint.c:135
msgid "Print "
msgstr "Imprimer "
-#: ../bin/cprint.c:142
+#: ../bin/cprint.c:144
msgid "Rulers:"
msgstr "Règles:"
-#: ../bin/cprint.c:148
+#: ../bin/cprint.c:150
msgid " Width"
msgstr " Largeur"
-#: ../bin/cprint.c:150
+#: ../bin/cprint.c:152
msgid "Margins"
msgstr "Marges"
-#: ../bin/cprint.c:151 ../bin/cturntbl.c:247
+#: ../bin/cprint.c:153 ../bin/cturntbl.c:274
msgid "Origin: X"
msgstr "Origine : X"
-#: ../bin/cprint.c:152 ../bin/csnap.c:508
+#: ../bin/cprint.c:154 ../bin/csnap.c:549
msgid "Y"
msgstr "Y"
-#: ../bin/cprint.c:153 ../bin/cprint.c:616 ../bin/cprofile.c:708
-#: ../bin/dcar.c:2206
+#: ../bin/cprint.c:155 ../bin/cprint.c:631 ../bin/cprofile.c:706
+#: ../bin/dcar.c:2325
msgid "Reset"
msgstr "Remise à zéro"
-#: ../bin/cprint.c:155
+#: ../bin/cprint.c:157
msgid "Setup"
msgstr "Configuration"
-#: ../bin/cprint.c:156 ../bin/cselect.c:3662 ../bin/misc.c:2479
+#: ../bin/cprint.c:158 ../bin/cselect.c:3675 ../bin/menu.c:974
msgid "Select All"
msgstr "Tout sélectionner"
-#: ../bin/cprint.c:157 ../bin/cprofile.c:710 ../bin/layout.c:507
-#: ../bin/misc.c:806
+#: ../bin/cprint.c:159 ../bin/cprofile.c:708 ../bin/layout.c:671
+#: ../bin/misc.c:725
msgid "Clear"
msgstr "Effacer"
-#: ../bin/cprint.c:159
+#: ../bin/cprint.c:161
msgid "0 pages"
msgstr "0 pages"
-#: ../bin/cprint.c:186
+#: ../bin/cprint.c:190
#, c-format
msgid "%d page"
msgstr "pages %d"
-#: ../bin/cprint.c:186
+#: ../bin/cprint.c:190
#, c-format
msgid "%d pages"
msgstr "pages %d"
-#: ../bin/cprint.c:407
+#: ../bin/cprint.c:419
#, c-format
msgid "PrintScale 1:%ld Room %s x %s Model Scale %s File %s"
msgstr ""
"Échelle d'impression 1:%ld Espace %s x %s Échelle de la maquette %s "
"Fichier %s"
-#: ../bin/cprint.c:712 ../bin/dbitmap.c:427 ../bin/filenoteui.c:147
-#: ../bin/misc.c:1328 ../bin/misc.c:1407 ../bin/param.c:2721
-#: ../bin/svgoutput.c:460 ../wlib/gtklib/browserhelp.c:96
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:634
-msgid "Cancel"
-msgstr "Annuler"
-
-#: ../bin/cprint.c:719
+#: ../bin/cprint.c:746
msgid "Print Margins"
msgstr "Imprimer les marges"
-#: ../bin/cprint.c:1383 ../bin/cprofile.c:712 ../bin/ctodesgn.c:2887
+#: ../bin/cprint.c:1440 ../bin/cprofile.c:710 ../bin/ctodesgn.c:3147
#: ../bin/denum.c:51
msgid "Print"
msgstr "Imprimer"
-#: ../bin/cprint.c:1404
+#: ../bin/cprint.c:1472
msgid "Select pages to print, or drag to move print grid"
msgstr ""
"Sélectionnez ou faites glisser les pages à imprimer pour déplacer la grille "
"d'impression"
-#: ../bin/cprint.c:1505
+#: ../bin/cprint.c:1574
msgid "Print..."
msgstr "Imprimer ..."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:466
-#: ../bin/cprofile.c:610 ../bin/cprofile.c:1444 ../bin/cprofile.c:1524
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:126
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1225
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:466
+#: ../bin/cprofile.c:608 ../bin/cprofile.c:1442 ../bin/cprofile.c:1522
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1244
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:127
msgid "Profile"
msgstr "Profil"
-#: ../bin/cprofile.c:628
+#: ../bin/cprofile.c:626
#, c-format
msgid "%s Profile: %s"
msgstr "%s Profil: %s"
-#: ../bin/cprofile.c:706 ../bin/misc.c:2010
+#: ../bin/cprofile.c:704 ../bin/menu.c:225
msgid "Change"
msgstr "Modifier"
-#: ../bin/cprofile.c:753 ../bin/cprofile.c:763
+#: ../bin/cprofile.c:751 ../bin/cprofile.c:761
#, c-format
msgid "Elev = %0.1f"
msgstr "Élév = %0.1f"
-#: ../bin/cprofile.c:765
+#: ../bin/cprofile.c:763
#, c-format
msgid "Elev=%0.2f %0.1f%%"
msgstr "Élév =%0.2f %0.1f%%"
-#: ../bin/cprofile.c:770
+#: ../bin/cprofile.c:768
#, c-format
msgid "%0.1f%% Elev = %0.2f"
msgstr "%0.1f%% Elev = %0.2f"
-#: ../bin/cprofile.c:775
+#: ../bin/cprofile.c:773
#, c-format
msgid "%0.1f%% Elev = %0.2f %0.1f%%"
msgstr "%0.1f%% Elev = %0.2f %0.1f%%"
-#: ../bin/cprofile.c:790 ../bin/cprofile.c:860 ../bin/cprofile.c:1396
+#: ../bin/cprofile.c:788 ../bin/cprofile.c:858 ../bin/cprofile.c:1394
msgid "Profile Command"
msgstr "Commande de profil"
-#: ../bin/cprofile.c:799 ../bin/cprofile.c:1450
+#: ../bin/cprofile.c:797 ../bin/cprofile.c:1448
msgid "Drag to change Elevation"
msgstr "Faites glisser pour modifier l'élévation"
-#: ../bin/cprofile.c:901
+#: ../bin/cprofile.c:899
msgid "Select a Defined Elevation to start Profile"
msgstr "Sélectionnez une élévation définie pour démarrer le Profil"
-#: ../bin/cprofile.c:903
+#: ../bin/cprofile.c:901
msgid "Select a Defined Elevation to extend Profile"
msgstr "Sélectionnez une élévation définie pour étendre le profil"
-#: ../bin/cprofile.c:1458
+#: ../bin/cprofile.c:1456
msgid "Select a Defined Elevation to start profile"
msgstr "Sélectionnez une élévation définie pour démarrer le profil"
-#: ../bin/cprofile.c:1528
+#: ../bin/cprofile.c:1527
msgid "Define"
msgstr "Définir"
-#: ../bin/cpull.c:436 ../bin/cpull.c:592
+#: ../bin/cpull.c:454 ../bin/cpull.c:616
#, c-format
msgid "%d tracks moved"
msgstr "%d Voies déplacées"
-#: ../bin/cpull.c:482
+#: ../bin/cpull.c:503
msgid "Pull Tracks"
msgstr "Voies de service"
-#: ../bin/cpull.c:556
+#: ../bin/cpull.c:579
msgid "Tighten Tracks"
msgstr "Resserrer les voies"
-#: ../bin/cpull.c:643
+#: ../bin/cpull.c:670
msgid "Connect Multiple Tracks - Select multiple tracks to join first"
msgstr ""
"Connecter plusieurs voies - Sélectionnez plusieurs voies à raccorder en "
"premier"
-#: ../bin/cpull.c:646
+#: ../bin/cpull.c:673
msgid "Try to Connect all Selected Tracks?"
msgstr "Toutes les voies sélectionnées doivent-elles être connectées?"
-#: ../bin/cpull.c:652
+#: ../bin/cpull.c:680
msgid "ReConnect"
msgstr "Reconnecter"
-#: ../bin/cpull.c:688
+#: ../bin/cpull.c:720
#, c-format
msgid ""
"Round 1 %d and Round 2 %d tracks connected, %d close pairs of end Points "
"were not connected"
msgstr ""
-"Les séries 1 %d et séries 2 %d de voies sont connectées, %d paires de points"
-" de fin de voies proches ne sont pas connectées"
+"Les séries 1 %d et séries 2 %d de voies sont connectées, %d paires de points "
+"de fin de voies proches ne sont pas connectées"
-#: ../bin/cpull.c:713
+#: ../bin/cpull.c:747
msgid "Select first endpoint or turntable to connect, +Shift to tighten"
msgstr ""
"Sélectionnez le premier point de fin ou le pont tournant à connecter, +Maj "
"pour resserrer"
-#: ../bin/cpull.c:715
+#: ../bin/cpull.c:750
msgid ""
"Select first endpoint to connect, or Right-Click for connecting selected "
"tracks (not turntable)"
@@ -2390,526 +2400,439 @@ msgstr ""
"Sélectionnez le premier point de fin à connecter, ou cliquez avec le bouton "
"droit pour connecter les voies sélectionnées (pas le pont tournant)"
-#: ../bin/cpull.c:774
+#: ../bin/cpull.c:814
msgid "Select second endpoint or turntable to connect"
msgstr "Sélectionnez le deuxième point de fin ou le pont tournant à connecter"
-#: ../bin/cpull.c:781
+#: ../bin/cpull.c:821
msgid "Same Track! - please select another"
msgstr "Même voie ! - veuillez en choisir une autre"
-#: ../bin/cpull.c:873
+#: ../bin/cpull.c:918
msgid "Connect Two Tracks"
msgstr "Connecter deux Voies"
-#: ../bin/cpull.c:875
+#: ../bin/cpull.c:924
msgid "Connect All Selected - 'S'"
msgstr "Connecter tous les éléments sélectionnés - 'S'"
-#: ../bin/cruler.c:372
+#: ../bin/cruler.c:390
msgid "Measurement"
msgstr "Mesure"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:477
-#: ../bin/cruler.c:373 ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1247
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:477
+#: ../bin/cruler.c:391 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1266
msgid "Ruler"
msgstr "Règle"
-#: ../bin/cruler.c:374
+#: ../bin/cruler.c:394
msgid "Protractor"
msgstr "Rapporteur"
-#: ../bin/cselect.c:654
+#: ../bin/cselect.c:688
msgid "Change Track Width"
msgstr "Changer la largeur de la voie"
-#: ../bin/cselect.c:679
+#: ../bin/cselect.c:714
msgid "Change Line Type"
msgstr "Changer le type de ligne"
-#: ../bin/cselect.c:704
+#: ../bin/cselect.c:739
msgid "Delete only works in Select Mode"
msgstr "La suppression ne fonctionne qu'en mode Sélection"
-#: ../bin/cselect.c:718
+#: ../bin/cselect.c:755
msgid "Delete Tracks"
msgstr "Supprimer des voies"
-#: ../bin/cselect.c:808
+#: ../bin/cselect.c:862
msgid "Hide Tracks (Tunnel)"
msgstr "Masquer les voies (tunnel)"
-#: ../bin/cselect.c:826
+#: ../bin/cselect.c:882
msgid "Bridge Tracks "
msgstr "Raccorder les voies "
-#: ../bin/cselect.c:843
+#: ../bin/cselect.c:900
+#, fuzzy
+msgid "Roadbed Tracks "
+msgstr "Faire pivoter les voies"
+
+#: ../bin/cselect.c:918
msgid "Ties Tracks "
msgstr "Voies groupées "
-#: ../bin/cselect.c:880 ../bin/misc.c:2617
+#: ../bin/cselect.c:956 ../bin/menu.c:1118
msgid "Move To Current Layer"
msgstr "Déplacer vers le calque actuel"
-#: ../bin/cselect.c:932 ../bin/misc.c:2784
+#: ../bin/cselect.c:1010 ../bin/menu.c:1303
msgid "Clear Elevations"
msgstr "Effacer les élévations"
-#: ../bin/cselect.c:976
+#: ../bin/cselect.c:1056
msgid "Add Elevations"
msgstr "Ajouter des élévations"
-#: ../bin/cselect.c:991
+#: ../bin/cselect.c:1072
msgid "Refresh Compound"
msgstr "Mettre à jour la compilation"
-#: ../bin/cselect.c:1023 ../bin/dcar.c:4373 ../bin/dcar.c:4378
-#: ../bin/dcustmgm.c:45 ../bin/layout.c:498
-msgid "Scale"
-msgstr "Échelle"
-
-#: ../bin/cselect.c:1023 ../bin/cselect.c:1048
-msgid "Ratio"
-msgstr "Rapport"
-
-#: ../bin/cselect.c:1032
-msgid "Do not resize track"
-msgstr "Ne pas redimensionner la voie"
-
-#: ../bin/cselect.c:1036
-msgid "Rescale by:"
-msgstr "Changer d'échelle par :"
-
-#: ../bin/cselect.c:1038
-msgid "From:"
-msgstr "De :"
-
-#: ../bin/cselect.c:1042
-msgid "To: "
-msgstr "À : "
-
-#: ../bin/cselect.c:1109
-msgid "Rescale Tracks"
-msgstr "Changer les voies d'échelle"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:473
-#: ../bin/cselect.c:1252 ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1239
-msgid "Rescale"
-msgstr "Changer d'échelle"
-
-#: ../bin/cselect.c:1597
+#: ../bin/cselect.c:1471
msgid "Cornu too tight - it was deleted"
msgstr "Cornu trop serrée - elle a été supprimée"
-#: ../bin/cselect.c:1652
+#: ../bin/cselect.c:1526
msgid "Move To Join"
msgstr "Déplacer pour Raccorder"
-#: ../bin/cselect.c:1844
+#: ../bin/cselect.c:1735
msgid "Drag to move selected tracks - Shift+Ctrl+Arrow micro-steps the move"
msgstr ""
"Faites glisser pour déplacer la voie sélectionnée - utilisez Maj+Ctrl+4 "
"flèches pour déplacer en pas fins"
-#: ../bin/cselect.c:1865 ../bin/cselect.c:1994 ../bin/cselect.c:2370
+#: ../bin/cselect.c:1756 ../bin/cselect.c:1890 ../bin/cselect.c:2295
msgid "Move Tracks"
msgstr "Déplacer des voies"
-#: ../bin/cselect.c:2043
+#: ../bin/cselect.c:1939
msgid "Align: Click on a selected object to be aligned"
msgstr "Aligner : cliquez sur un objet sélectionné à aligner"
-#: ../bin/cselect.c:2081
+#: ../bin/cselect.c:1978
msgid "Drag to rotate selected tracks, Shift+RightClick for QuickRotate Menu"
msgstr ""
"Faites glisser pour faire pivoter les voies sélectionnées, Maj+Clic droit "
"pour ouvrir le menu Rotation rapide"
-#: ../bin/cselect.c:2097 ../bin/cselect.c:2441
+#: ../bin/cselect.c:1994 ../bin/cselect.c:2370
msgid "Rotate Tracks"
msgstr "Faire pivoter les voies"
-#: ../bin/cselect.c:2111
+#: ../bin/cselect.c:2009
msgid "Center of Rotation snapped to Turntable center"
msgstr "Le centre de rotation est aligné sur le centre du pont tournant"
-#: ../bin/cselect.c:2153 ../bin/cselect.c:2184
+#: ../bin/cselect.c:2055 ../bin/cselect.c:2090
#, c-format
msgid "Angle %0.3f"
msgstr "Angle %0.3f"
-#: ../bin/cselect.c:2240
+#: ../bin/cselect.c:2154
#, c-format
msgid "Angle %0.3f #%ld"
msgstr "Angle %0.3f #%ld"
-#: ../bin/cselect.c:2242
+#: ../bin/cselect.c:2156
#, c-format
msgid "Angle %0.3f %s"
msgstr "Angle %0.3f %s"
-#: ../bin/cselect.c:2247
+#: ../bin/cselect.c:2162
msgid "Origin Set. Drag away to set start angle"
msgstr "Réglage d'origine. Faites glisser pour définir l'angle de départ"
-#: ../bin/cselect.c:2261
+#: ../bin/cselect.c:2177
msgid "Align: Click on the 2nd unselected object"
msgstr "Aligner : Cliquez sur le 2ème objet non sélectionné"
-#: ../bin/cselect.c:2381
+#: ../bin/cselect.c:2307
msgid "In module layer:"
msgstr "Dans la couche de module"
-#: ../bin/cselect.c:2388
+#: ../bin/cselect.c:2315
msgid "Frozen Layer:"
msgstr "Couche gelée"
-#: ../bin/cselect.c:2392
+#: ../bin/cselect.c:2319
msgid "Not found"
msgstr "Pas trouvé"
-#: ../bin/cselect.c:2428
+#: ../bin/cselect.c:2356
msgid "Multiple Selected"
msgstr "Plusieurs sélectionnés"
-#: ../bin/cselect.c:2454
+#: ../bin/cselect.c:2383
msgid "Toggle Detail"
msgstr "Basculer les détails"
-#: ../bin/cselect.c:2469
+#: ../bin/cselect.c:2399
msgid "Toggle Label"
msgstr "Modifie l'étiquette"
-#: ../bin/cselect.c:2632
+#: ../bin/cselect.c:2572
msgid "Elevation description"
msgstr "Description de l'élévation"
-#: ../bin/cselect.c:2639
+#: ../bin/cselect.c:2579
msgid "Hidden description - 's' to Show, 'd' Details"
msgstr "Description cachée - \"s\" Afficher, \"d\" Détails"
-#: ../bin/cselect.c:2642
+#: ../bin/cselect.c:2582
msgid "Shown description - 'h' to Hide"
msgstr "Description visible - 'h' pour cacher"
-#: ../bin/cselect.c:2650
+#: ../bin/cselect.c:2590
msgid "Select and drag a description"
msgstr "Sélectionnez et faites glisser une description"
-#: ../bin/cselect.c:2689
+#: ../bin/cselect.c:2632
msgid "Hidden Label - Drag to reveal"
msgstr "Étiquette cachée - Faites glisser pour afficher"
-#: ../bin/cselect.c:2691
+#: ../bin/cselect.c:2634
msgid "Drag label"
msgstr "Faites glisser l'étiquette pour la positionner"
-#: ../bin/cselect.c:2699
+#: ../bin/cselect.c:2644
msgid "Move Label"
msgstr "Déplacer l'étiquette"
-#: ../bin/cselect.c:2736
+#: ../bin/cselect.c:2683
msgid "To Hide, use Context Menu"
msgstr "Pour masquer, utilisez le menu contextuel"
-#: ../bin/cselect.c:2769 ../bin/cselect.c:3692
+#: ../bin/cselect.c:2717 ../bin/cselect.c:3715
msgid "Show/Hide Description"
msgstr "Montrer/cacher la description"
-#: ../bin/cselect.c:2770
+#: ../bin/cselect.c:2720
msgid "Toggle Detailed Description"
msgstr "Basculer la description détaillée"
-#: ../bin/cselect.c:2851
+#: ../bin/cselect.c:2804
msgid "Drag to mark mirror line"
msgstr "Faites glisser pour créer la voie d'axe du miroir"
-#: ../bin/cselect.c:2862
+#: ../bin/cselect.c:2815
#, c-format
msgid "Angle %0.2f"
msgstr "Angle %0.2f"
-#: ../bin/cselect.c:2865
+#: ../bin/cselect.c:2818
msgid "Flip Tracks"
msgstr "Voies en miroir"
-#: ../bin/cselect.c:3056 ../bin/cselect.c:3243
+#: ../bin/cselect.c:3014 ../bin/cselect.c:3215
msgid "Track is in Frozen Layer"
msgstr "La voie est sur une couche bloquée"
-#: ../bin/cselect.c:3216
+#: ../bin/cselect.c:3188
msgid "Select track"
msgstr "Sélectionner une voie"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:439
-#: ../bin/cselect.c:3628 ../bin/dcar.c:1663 ../bin/doption.c:236
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1171
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:439
+#: ../bin/cselect.c:3627 ../bin/dcar.c:1765 ../bin/doption.c:245
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1190
msgid "Select"
msgstr "Sélectionner"
-#: ../bin/cselect.c:3647 ../bin/cselect.c:3668 ../bin/misc.c:2439
+#: ../bin/cselect.c:3654 ../bin/cselect.c:3683 ../bin/menu.c:932
msgid "Undo"
msgstr "Annuler"
-#: ../bin/cselect.c:3648 ../bin/cselect.c:3669 ../bin/misc.c:2441
+#: ../bin/cselect.c:3655 ../bin/cselect.c:3684 ../bin/menu.c:934
msgid "Redo"
msgstr "Refaire"
-#: ../bin/cselect.c:3655 ../bin/cselect.c:3673 ../bin/draw.c:3206
+#: ../bin/cselect.c:3665 ../bin/cselect.c:3688 ../bin/draw.c:3500
msgid "Zoom to extents - 'e'"
msgstr "Zoom sur les extensions - 'e'"
-#: ../bin/cselect.c:3656 ../bin/draw.c:3217 ../bin/misc.c:2646
+#: ../bin/cselect.c:3667 ../bin/draw.c:3522 ../bin/menu.c:1163
msgid "&Zoom"
msgstr "&Zoom"
-#: ../bin/cselect.c:3659 ../bin/draw.c:3216
+#: ../bin/cselect.c:3670 ../bin/draw.c:3520
msgid "Pan to Origin - 'o'/'0'"
msgstr "Glisser vers l'origine - 'o'/'0'"
-#: ../bin/cselect.c:3660 ../bin/cselect.c:3675
+#: ../bin/cselect.c:3672 ../bin/cselect.c:3692
msgid "Pan Center Here - 'c'"
msgstr "Centre du Panoramique ici - 'c'"
-#: ../bin/cselect.c:3663 ../bin/misc.c:2482 ../bin/misc.c:2623
+#: ../bin/cselect.c:3677 ../bin/menu.c:977 ../bin/menu.c:1126
msgid "Select Current Layer"
msgstr "Sélectionner le calque actuel"
-#: ../bin/cselect.c:3674
+#: ../bin/cselect.c:3690
msgid "Zoom to selected - 's'"
msgstr "Zoomer sur la sélection - 's'"
-#: ../bin/cselect.c:3678 ../bin/misc.c:2484
+#: ../bin/cselect.c:3696 ../bin/menu.c:979
msgid "Deselect All"
msgstr "Tout désélectionner"
-#: ../bin/cselect.c:3680
+#: ../bin/cselect.c:3699
msgid "Properties -'?'"
msgstr "Propriétés -'?'"
-#: ../bin/cselect.c:3681
+#: ../bin/cselect.c:3701
msgid "Modify/Activate Track"
msgstr "Modifier/Activer la voie"
-#: ../bin/cselect.c:3683 ../bin/misc.c:2470
+#: ../bin/cselect.c:3704 ../bin/menu.c:965
msgid "Cut"
msgstr "Couper"
-#: ../bin/cselect.c:3684 ../bin/misc.c:2472
+#: ../bin/cselect.c:3705 ../bin/menu.c:967
msgid "Copy"
msgstr "Copier"
-#: ../bin/cselect.c:3685 ../bin/fileio.c:1591 ../bin/misc.c:2474
+#: ../bin/cselect.c:3706 ../bin/fileio.c:1730 ../bin/menu.c:969
msgid "Paste"
msgstr "Coller"
-#: ../bin/cselect.c:3686 ../bin/misc.c:2476
+#: ../bin/cselect.c:3707 ../bin/menu.c:971
msgid "Clone"
msgstr "Copie"
-#: ../bin/cselect.c:3688
+#: ../bin/cselect.c:3709
msgid "Rotate..."
msgstr "Rotation ..."
-#: ../bin/cselect.c:3690
+#: ../bin/cselect.c:3711
msgid "Align"
msgstr "Aligner"
-#: ../bin/cselect.c:3694
+#: ../bin/cselect.c:3717 ../bin/menu.c:1142
+msgid "Ties/NoTies"
+msgstr "Groupées/non groupées"
+
+#: ../bin/cselect.c:3719
msgid "Hide/NoHide"
msgstr "Masqué/Affiché"
-#: ../bin/cselect.c:3695
+#: ../bin/cselect.c:3721
msgid "Bridge/NoBridge"
msgstr "Raccordé/Non raccordé"
-#: ../bin/cselect.c:3696
+#: ../bin/cselect.c:3723
+msgid "Roadbed/NoRoadbed"
+msgstr ""
+
+#: ../bin/cselect.c:3725
msgid "NoTies/Ties"
msgstr "Non connectés/connectés"
-#: ../bin/cselect.c:3697
+#: ../bin/cselect.c:3727
msgid "Thickness..."
msgstr "Épaisseur..."
-#: ../bin/cselect.c:3698 ../bin/misc.c:2636
+#: ../bin/cselect.c:3728 ../bin/menu.c:1150
msgid "Thin Tracks"
msgstr "Voies fines"
-#: ../bin/cselect.c:3699 ../bin/misc.c:2637
+#: ../bin/cselect.c:3730 ../bin/menu.c:1152
msgid "Medium Tracks"
msgstr "Voies moyennes"
-#: ../bin/cselect.c:3700 ../bin/misc.c:2638
+#: ../bin/cselect.c:3732 ../bin/menu.c:1154
msgid "Thick Tracks"
msgstr "Voies épaisses"
-#: ../bin/cselect.c:3705
+#: ../bin/cselect.c:3741
msgid "Dash-Dotted Line"
msgstr "Ligne tiret-pointillé"
-#: ../bin/cselect.c:3706
+#: ../bin/cselect.c:3743
msgid "Dash-Dot-Dotted Line"
msgstr "Ligne en tiret-point-pointillé"
-#: ../bin/cselect.c:3708
+#: ../bin/cselect.c:3746
msgid "Move To Front"
msgstr "Déplacer vers l'avant"
-#: ../bin/cselect.c:3709
+#: ../bin/cselect.c:3747
msgid "Move To Back"
msgstr "Déplacer vers l'arrière"
-#: ../bin/cselect.c:3711
+#: ../bin/cselect.c:3749
msgid "Group"
msgstr "Grouper"
-#: ../bin/cselect.c:3712
+#: ../bin/cselect.c:3750
msgid "UnGroup"
msgstr "Dissocier"
-#: ../bin/cselect.c:3744
+#: ../bin/cselect.c:3796
msgid "Move Description"
msgstr "Déplacer l'étiquette"
-#: ../bin/cselect.c:3751 ../bin/misc.c:2072 ../bin/misc.c:2491
+#: ../bin/cselect.c:3804 ../bin/menu.c:294 ../bin/menu.c:986
msgid "Move"
msgstr "Déplacer"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:484
-#: ../bin/cselect.c:3753 ../bin/misc.c:2049 ../bin/misc.c:2493
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1261
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:484
+#: ../bin/cselect.c:3807 ../bin/menu.c:271 ../bin/menu.c:988
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1280
msgid "Rotate"
msgstr "Rotation"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:485
-#: ../bin/cselect.c:3755 ../bin/dcar.c:2208
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1263
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:485
+#: ../bin/cselect.c:3810 ../bin/dcar.c:2327
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1282
msgid "Flip"
msgstr "Miroir"
-#: ../bin/csensor.c:213
+#: ../bin/csensor.c:214
msgid "Change Sensor"
msgstr "Changer de capteur"
-#: ../bin/csensor.c:259 ../bin/csensor.c:590
+#: ../bin/csensor.c:261 ../bin/csensor.c:599
msgid "Sensor"
msgstr "Capteur"
-#: ../bin/csensor.c:404
+#: ../bin/csensor.c:407
msgid "Create Sensor"
msgstr "Créer un capteur"
-#: ../bin/csensor.c:407
+#: ../bin/csensor.c:410
msgid "Modify Sensor"
msgstr "Modifier le capteur"
-#: ../bin/csensor.c:440
+#: ../bin/csensor.c:445
msgid "Edit sensor"
msgstr "Editer un capteur"
-#: ../bin/csensor.c:478
+#: ../bin/csensor.c:483
msgid "Place sensor"
msgstr "Mettre un capteur"
-#: ../bin/csignal.c:238
-msgid "Number Of Heads"
-msgstr "Nombre De têtes"
-
-#: ../bin/csignal.c:277
-msgid "Change Signal"
-msgstr "Changer le signal"
-
-#: ../bin/csignal.c:311
-#, c-format
-msgid "(%d [%s]): Layer=%u, %d heads at %0.3f,%0.3f A%0.3f"
-msgstr "(%d [%s]): Calque =%u, %d se dirige à %0.3f,%0.3f A%0.3f"
-
-#: ../bin/csignal.c:322 ../bin/csignal.c:908
-msgid "Signal"
-msgstr "Signal"
-
-#: ../bin/csignal.c:514
-msgid "Number of Heads"
-msgstr "Nombre de têtes"
-
-#: ../bin/csignal.c:519
-msgid "Edit Aspect"
-msgstr "Modifier un état"
-
-#: ../bin/csignal.c:521
-msgid "Add Aspect"
-msgstr "Ajouter un état"
-
-#: ../bin/csignal.c:523
-msgid "Delete Aspect"
-msgstr "Effacer un état"
-
-#: ../bin/csignal.c:536
-msgid "Aspect Index"
-msgstr "Numéro d'affichage du signal"
-
-#: ../bin/csignal.c:551
-msgid "Create Signal"
-msgstr "Créer un signal"
-
-#: ../bin/csignal.c:555
-msgid "Modify Signal"
-msgstr "Modifier le signal"
-
-#: ../bin/csignal.c:662
-msgid "Edit aspect"
-msgstr "Modifier l'état"
-
-#: ../bin/csignal.c:709
-#, c-format
-msgid "Are you sure you want to delete the %d aspect(s)"
-msgstr "Êtes-vous sûr de vouloir supprimer %d état(s)"
-
-#: ../bin/csignal.c:730
-msgid "Edit signal"
-msgstr "Editer un signal"
-
-#: ../bin/csignal.c:792
-msgid "Place base of signal"
-msgstr "Réglez la base du signal"
-
-#: ../bin/csignal.c:800
-msgid "Drag to orient signal"
-msgstr "Faites glisser pour orienter le signal"
-
-#: ../bin/csnap.c:489
+#: ../bin/csnap.c:530
msgid "Horz"
msgstr "Horz"
-#: ../bin/csnap.c:491
+#: ../bin/csnap.c:532
msgid "Spacing"
msgstr "Espacement"
-#: ../bin/csnap.c:493
+#: ../bin/csnap.c:534
msgid "Divisions"
msgstr "Divisions"
-#: ../bin/csnap.c:496
+#: ../bin/csnap.c:537
msgid "Enable"
msgstr "Activer"
-#: ../bin/csnap.c:497
+#: ../bin/csnap.c:538
msgid "Vert"
msgstr "Vertical"
-#: ../bin/csnap.c:506 ../bin/dease.c:74
+#: ../bin/csnap.c:547 ../bin/dease.c:78
msgid "X"
msgstr "X"
-#: ../bin/csnap.c:510
+#: ../bin/csnap.c:551
msgid "A"
msgstr "A"
-#: ../bin/csnap.c:513
+#: ../bin/csnap.c:554
msgid "Show"
msgstr "Afficher"
-#: ../bin/csnap.c:752
+#: ../bin/csnap.c:815
msgid "Change Grid..."
msgstr "Modifier la grille ..."
@@ -2917,170 +2840,240 @@ msgstr "Modifier la grille ..."
msgid "Set Block Gaps"
msgstr "Définir des points de séparation"
-#: ../bin/csplit.c:132
-msgid "Select track to split"
+#: ../bin/csplit.c:137
+#, fuzzy
+msgid "Select track and position for split"
msgstr "Sélectionnez la voie à scinder"
-#: ../bin/csplit.c:155
+#: ../bin/csplit.c:161
msgid "Can't Split that Track Object"
msgstr "On ne peut pas diviser cette voie"
-#: ../bin/csplit.c:163 ../bin/csplit.c:175 ../bin/csplit.c:474
+#: ../bin/csplit.c:169 ../bin/csplit.c:182 ../bin/csplit.c:505
msgid "Split Track"
msgstr "Segmentation de Voie"
-#: ../bin/csplit.c:171 ../bin/csplit.c:294 ../bin/csplit.c:381
+#: ../bin/csplit.c:178 ../bin/csplit.c:322 ../bin/csplit.c:410
msgid "Can't Split that Draw Object"
msgstr "On ne peut pas diviser cet élément de dessin"
-#: ../bin/csplit.c:181
+#: ../bin/csplit.c:188
msgid "No Track to Split"
msgstr "Pas de voie à scinder"
-#: ../bin/csplit.c:194 ../bin/dbench.c:64 ../bin/dbench.c:75
+#: ../bin/csplit.c:203 ../bin/dbench.c:65 ../bin/dbench.c:77
msgid "Left"
msgstr "Gauche"
-#: ../bin/csplit.c:195 ../bin/dbench.c:65 ../bin/dbench.c:74
+#: ../bin/csplit.c:205 ../bin/dbench.c:66 ../bin/dbench.c:76
msgid "Right"
msgstr "Droit"
-#: ../bin/csplit.c:196 ../bin/csplit.c:201
+#: ../bin/csplit.c:207 ../bin/csplit.c:216
msgid "Both"
msgstr "Les deux"
-#: ../bin/csplit.c:199
+#: ../bin/csplit.c:212
msgid "Top"
msgstr "Haut"
-#: ../bin/csplit.c:200
+#: ../bin/csplit.c:214
msgid "Bottom"
msgstr "Bas"
-#: ../bin/csplit.c:280
+#: ../bin/csplit.c:307
msgid "Select draw to split"
msgstr "Sélectionnez le dessin à scinder"
-#: ../bin/csplit.c:298 ../bin/csplit.c:475
+#: ../bin/csplit.c:326 ../bin/csplit.c:508
msgid "Split Draw"
msgstr "Fractionner le dessin"
-#: ../bin/csplit.c:304
+#: ../bin/csplit.c:332
msgid "No Draw to Split"
msgstr "Pas de dessin à fractionner"
-#: ../bin/csplit.c:342
+#: ../bin/csplit.c:371
msgid "Select the draw object to Trim to"
msgstr "Sélectionnez l'objet de dessin à découper"
-#: ../bin/csplit.c:357
+#: ../bin/csplit.c:387
msgid "Can't Trim with a Track"
msgstr "Impossible de couper avec une voie"
-#: ../bin/csplit.c:362
+#: ../bin/csplit.c:392
msgid "Select an intersecting draw object to Trim"
msgstr "Sélectionnez un objet de dessin en intersection à ajuster"
-#: ../bin/csplit.c:368
+#: ../bin/csplit.c:397
msgid "No Draw to Trim with"
msgstr "Pas de dessin pour couper avec"
-#: ../bin/csplit.c:375
+#: ../bin/csplit.c:404
msgid "Can't Split a track object"
msgstr "Impossible de diviser un objet de voie"
-#: ../bin/csplit.c:403 ../bin/csplit.c:476
+#: ../bin/csplit.c:432 ../bin/csplit.c:511
msgid "Trim Draw"
msgstr "Couper le dessin"
-#: ../bin/csplit.c:408
+#: ../bin/csplit.c:437
msgid "Select another draw object to Trim, or Space to Deselect"
msgstr ""
"Sélectionnez un autre objet de dessin à découper ou Espace à désélectionner"
-#: ../bin/csplit.c:473
+#: ../bin/csplit.c:504
msgid "Split"
msgstr "Scinder"
-#: ../bin/cstraigh.c:75
+#: ../bin/csignal.c:239
+msgid "Number Of Heads"
+msgstr "Nombre De têtes"
+
+#: ../bin/csignal.c:279
+msgid "Change Signal"
+msgstr "Changer le signal"
+
+#: ../bin/csignal.c:314
+#, c-format
+msgid "(%d [%s]): Layer=%u, %d heads at %0.3f,%0.3f A%0.3f"
+msgstr "(%d [%s]): Calque =%u, %d se dirige à %0.3f,%0.3f A%0.3f"
+
+#: ../bin/csignal.c:325 ../bin/csignal.c:931
+msgid "Signal"
+msgstr "Signal"
+
+#: ../bin/csignal.c:518
+msgid "Number of Heads"
+msgstr "Nombre de têtes"
+
+#: ../bin/csignal.c:523
+msgid "Edit Aspect"
+msgstr "Modifier un état"
+
+#: ../bin/csignal.c:525
+msgid "Add Aspect"
+msgstr "Ajouter un état"
+
+#: ../bin/csignal.c:527
+msgid "Delete Aspect"
+msgstr "Effacer un état"
+
+#: ../bin/csignal.c:540
+msgid "Aspect Index"
+msgstr "Numéro d'affichage du signal"
+
+#: ../bin/csignal.c:555
+msgid "Create Signal"
+msgstr "Créer un signal"
+
+#: ../bin/csignal.c:560
+msgid "Modify Signal"
+msgstr "Modifier le signal"
+
+#: ../bin/csignal.c:677
+msgid "Edit aspect"
+msgstr "Modifier l'état"
+
+#: ../bin/csignal.c:724
+#, c-format
+msgid "Are you sure you want to delete the %d aspect(s)"
+msgstr "Êtes-vous sûr de vouloir supprimer %d état(s)"
+
+#: ../bin/csignal.c:747
+msgid "Edit signal"
+msgstr "Editer un signal"
+
+#: ../bin/csignal.c:811
+msgid "Place base of signal"
+msgstr "Réglez la base du signal"
+
+#: ../bin/csignal.c:819
+msgid "Drag to orient signal"
+msgstr "Faites glisser pour orienter le signal"
+
+#: ../bin/cstraigh.c:77
msgid "Place 1st endpoint of straight track, snap to unconnected endpoint"
msgstr ""
"Placer le 1er point de fin de la voie droite +Maj -> accrocher au point de "
"fin non connecté"
-#: ../bin/cstraigh.c:103
+#: ../bin/cstraigh.c:105
msgid "Drag to place 2nd end point"
msgstr "Faites glisser pour placer la 2ème extrémité"
-#: ../bin/cstraigh.c:149
+#: ../bin/cstraigh.c:151
#, c-format
msgid "Straight Track Length=%s Angle=%0.3f"
msgstr "Longueur de voie droite = %s Angle = %0.3f"
-#: ../bin/cstraigh.c:200 ../bin/tstraigh.c:225
+#: ../bin/cstraigh.c:204 ../bin/tstraigh.c:245
msgid "Straight Track"
msgstr "Voie droite"
-#: ../bin/cstruct.c:64 ../bin/cturnout.c:84 ../bin/doption.c:91
-#: ../bin/doption.c:241
+#: ../bin/cstruct.c:67 ../bin/cturnout.c:86 ../bin/doption.c:93
+#: ../bin/doption.c:250
msgid "Hide"
msgstr "Cacher"
-#: ../bin/cstruct.c:479 ../bin/cstruct.c:506
+#: ../bin/cstruct.c:505 ../bin/cstruct.c:535
msgid "Pier Number"
msgstr "Numéro de quai"
-#: ../bin/cstruct.c:591
+#: ../bin/cstruct.c:627
#, c-format
msgid "Scale %d:1"
msgstr "Echelle %d :1"
-#: ../bin/cstruct.c:593
+#: ../bin/cstruct.c:629
#, c-format
msgid "Width %s"
msgstr "Largeur %s"
-#: ../bin/cstruct.c:595
+#: ../bin/cstruct.c:631
#, c-format
msgid "Height %s"
msgstr "Hauteur %s"
-#: ../bin/cstruct.c:735
+#: ../bin/cstruct.c:779
msgid "Place Structure"
msgstr "Mettre un bâtiment"
-#: ../bin/cstruct.c:828
+#: ../bin/cstruct.c:851 ../bin/cstruct.c:904 ../bin/drawgeom.c:304
+msgid "+Alt for Magnetic Snap"
+msgstr "+Alt pour l'accrochage magnétique"
+
+#: ../bin/cstruct.c:853 ../bin/cstruct.c:906 ../bin/drawgeom.c:306
+msgid "+Alt to inhibit Magnetic Snap"
+msgstr "+ Alt pour inhiber l'accrochage magnétique"
+
+#: ../bin/cstruct.c:888
msgid "Drag to place"
msgstr "Faites glisser pour positionner"
-#: ../bin/cstruct.c:850
+#: ../bin/cstruct.c:921
msgid "Drag to rotate"
msgstr "Faites glisser pour faire pivoter"
-#: ../bin/cstruct.c:870
-#, c-format
-msgid "Angle = %0.3f"
-msgstr "Angle = %0.3f"
-
-#: ../bin/cstruct.c:880 ../bin/cstruct.c:1126 ../bin/cturnout.c:4699
-#: ../bin/cturnout.c:4751 ../bin/cturnout.c:4882 ../bin/cturnout.c:5021
+#: ../bin/cstruct.c:952 ../bin/cstruct.c:1222 ../bin/cturnout.c:2812
+#: ../bin/cturnout.c:2871 ../bin/cturnout.c:3015 ../bin/cturnout.c:3162
msgid ""
"Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter "
"to accept, Esc to Cancel"
msgstr ""
"Faites glisser vers la gauche pour déplacer, Ctrl +glisser à gauche ou "
-"glisser à droite pour faire pivoter, espace ou entrée pour valider, ESC pour"
-" annuler"
+"glisser à droite pour faire pivoter, espace ou entrée pour valider, ESC pour "
+"annuler"
-#: ../bin/cstruct.c:953 ../bin/cturnout.c:4836 ../bin/param.c:2721
+#: ../bin/cstruct.c:1031 ../bin/cturnout.c:2963 ../bin/param.c:3013
msgid "Close"
msgstr "Fermer"
-#: ../bin/cstruct.c:970
+#: ../bin/cstruct.c:1049
msgid "Select Structure and then drag to place"
msgstr "Sélectionnez le bâtiment et déplacez-vous vers la position"
-#: ../bin/cstruct.c:1009
+#: ../bin/cstruct.c:1091
msgid ""
"Left drag to move, right drag to rotate, or press Return or click Ok to "
"finalize"
@@ -3088,13 +3081,12 @@ msgstr ""
"Faites glisser avec le bouton gauche de la souris pour vous déplacer, vers "
"la droite pour faire pivoter ou sur Entrée ou sur OK pour terminer"
-#: ../bin/cstruct.c:1096 ../bin/cturnout.c:4988
+#: ../bin/cstruct.c:1184 ../bin/cturnout.c:3127
#, c-format
msgid "Place %s and draw into position"
msgstr "Placer %s et mettre en position"
-#: ../bin/cswitchmotor.c:92 ../bin/cswitchmotor.c:111
-#: ../bin/cswitchmotor.c:224
+#: ../bin/cswitchmotor.c:92 ../bin/cswitchmotor.c:111 ../bin/cswitchmotor.c:231
msgid "Point Sense"
msgstr "Sens des aiguilles"
@@ -3102,621 +3094,630 @@ msgstr "Sens des aiguilles"
msgid "Turnout Number"
msgstr "Numéro de rapport d'aiguillage"
-#: ../bin/cswitchmotor.c:289
+#: ../bin/cswitchmotor.c:299
msgid "Change Switch Motor"
msgstr "Changer de moteur d'aiguillage"
-#: ../bin/cswitchmotor.c:356
+#: ../bin/cswitchmotor.c:369
msgid "Switch motor"
msgstr "Moteur d'aiguillage"
-#: ../bin/cswitchmotor.c:472
+#: ../bin/cswitchmotor.c:499
#, c-format
msgid "ResolveSwitchmotor: Turnout T%d: T%d doesn't exist"
msgstr "Revoir le moteur d'aiguillage : l'aiguillage T%d : T%d n'existe pas"
-#: ../bin/cswitchmotor.c:541 ../bin/cswitchmotor.c:712
+#: ../bin/cswitchmotor.c:570 ../bin/cswitchmotor.c:746
msgid "Switch motor must have a name!"
msgstr "Le moteur d'aiguillage doit avoir un nom !"
-#: ../bin/cswitchmotor.c:545
+#: ../bin/cswitchmotor.c:574
msgid "Create Switch Motor"
msgstr "Créer un Moteur d'aiguillage"
-#: ../bin/cswitchmotor.c:577
+#: ../bin/cswitchmotor.c:608
msgid "Create switch motor"
msgstr "Créer un moteur d'aiguillage"
-#: ../bin/cswitchmotor.c:591 ../bin/cswitchmotor.c:623
-#: ../bin/cswitchmotor.c:655
+#: ../bin/cswitchmotor.c:624 ../bin/cswitchmotor.c:655
+#: ../bin/cswitchmotor.c:687
msgid "Select a turnout"
msgstr "Sélectionner un aiguillage"
-#: ../bin/cswitchmotor.c:599
+#: ../bin/cswitchmotor.c:632
msgid "Not a turnout!"
msgstr "Pas d'aiguillage !"
-#: ../bin/cswitchmotor.c:632 ../bin/cswitchmotor.c:663
+#: ../bin/cswitchmotor.c:664 ../bin/cswitchmotor.c:695
msgid "Not a switch motor!"
msgstr "Pas de moteur d'aiguillage !"
-#: ../bin/cswitchmotor.c:668
+#: ../bin/cswitchmotor.c:700
#, c-format
msgid "Really delete switch motor %s?"
msgstr "Voulez-vous vraiment supprimer le moteur d'aiguillage %s ?"
-#: ../bin/cswitchmotor.c:669
+#: ../bin/cswitchmotor.c:702
msgid "Delete Switch Motor"
msgstr "Supprimer le Moteur d'aiguillage"
-#: ../bin/cswitchmotor.c:716
+#: ../bin/cswitchmotor.c:750
msgid "Modify Switch Motor"
msgstr "Modifier le moteur d'aiguillage"
-#: ../bin/cswitchmotor.c:742
+#: ../bin/cswitchmotor.c:776
msgid "Edit switch motor"
msgstr "Editer le moteur d'aiguillage"
-#: ../bin/cswitchmotor.c:748
+#: ../bin/cswitchmotor.c:782
#, c-format
msgid "Edit switch motor %d"
msgstr "Editer le moteur d'aiguillage %d"
-#: ../bin/cswitchmotor.c:852
+#: ../bin/cswitchmotor.c:889
msgid "Switch Motor"
msgstr "Moteur d'aiguillage"
-#: ../bin/cswitchmotor.c:865
+#: ../bin/cswitchmotor.c:903
#, c-format
msgid "Deleting Switch Motor %s"
msgstr "Suppression du moteur d'aiguillage %s"
-#: ../bin/ctext.c:194 ../bin/ctext.c:239
+#: ../bin/ctext.c:194 ../bin/ctext.c:242
msgid "Create Text"
msgstr "Créer un texte"
-#: ../bin/ctext.c:270
+#: ../bin/ctext.c:277
msgid "Fonts..."
msgstr "Polices ..."
-#: ../bin/ctodesgn.c:135
+#: ../bin/ctodesgn.c:139
msgid "Frog #"
msgstr "Cœur N° #"
-#: ../bin/ctodesgn.c:135
+#: ../bin/ctodesgn.c:139
msgid "Degrees"
msgstr "Degrés"
-#: ../bin/ctodesgn.c:136
+#: ../bin/ctodesgn.c:140
msgid "Dual Path"
msgstr "Double voie"
-#: ../bin/ctodesgn.c:136
+#: ../bin/ctodesgn.c:140
msgid "Quad Path"
msgstr "Quadruple voie"
-#: ../bin/ctodesgn.c:174 ../bin/ctodesgn.c:175 ../bin/ctodesgn.c:176
-#: ../bin/ctodesgn.c:177 ../bin/ctodesgn.c:237 ../bin/ctodesgn.c:260
-#: ../bin/ctodesgn.c:262 ../bin/ctodesgn.c:297 ../bin/ctodesgn.c:300
-#: ../bin/ctodesgn.c:326 ../bin/ctodesgn.c:327 ../bin/ctodesgn.c:363
-#: ../bin/ctodesgn.c:366 ../bin/ctodesgn.c:392 ../bin/ctodesgn.c:394
-#: ../bin/ctodesgn.c:433 ../bin/ctodesgn.c:437 ../bin/ctodesgn.c:440
-#: ../bin/ctodesgn.c:652
+#: ../bin/ctodesgn.c:182 ../bin/ctodesgn.c:183 ../bin/ctodesgn.c:184
+#: ../bin/ctodesgn.c:185 ../bin/ctodesgn.c:244 ../bin/ctodesgn.c:270
+#: ../bin/ctodesgn.c:272 ../bin/ctodesgn.c:316 ../bin/ctodesgn.c:319
+#: ../bin/ctodesgn.c:350 ../bin/ctodesgn.c:351 ../bin/ctodesgn.c:395
+#: ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:428 ../bin/ctodesgn.c:430
+#: ../bin/ctodesgn.c:477 ../bin/ctodesgn.c:481 ../bin/ctodesgn.c:484
+#: ../bin/ctodesgn.c:742
msgid "Offset"
msgstr "Écart"
-#: ../bin/ctodesgn.c:195 ../bin/ctodesgn.c:2934 ../bin/ctodesgn.c:2935
+#: ../bin/ctodesgn.c:203 ../bin/ctodesgn.c:3204 ../bin/ctodesgn.c:3205
msgid "Left Description"
msgstr "Description gauche"
-#: ../bin/ctodesgn.c:196 ../bin/ctodesgn.c:199
+#: ../bin/ctodesgn.c:204 ../bin/ctodesgn.c:207
msgid " #"
msgstr " #"
-#: ../bin/ctodesgn.c:198 ../bin/ctodesgn.c:2933
+#: ../bin/ctodesgn.c:206 ../bin/ctodesgn.c:3203
msgid "Right Description"
msgstr "Description droite"
-#: ../bin/ctodesgn.c:200
+#: ../bin/ctodesgn.c:208
msgid "Roadbed Width"
msgstr "Largeur de balast"
-#: ../bin/ctodesgn.c:204 ../bin/denum.c:52
+#: ../bin/ctodesgn.c:212 ../bin/denum.c:52
msgid "Print Setup"
msgstr "Réglages Imp"
-#: ../bin/ctodesgn.c:235
+#: ../bin/ctodesgn.c:242
msgid "Diverging Length"
msgstr "Longueur voie déviée"
-#: ../bin/ctodesgn.c:236
+#: ../bin/ctodesgn.c:243
msgid "Diverging Angle"
msgstr "Angle voie déviée"
-#: ../bin/ctodesgn.c:237
+#: ../bin/ctodesgn.c:244
msgid "Diverging Offset"
msgstr "Décalage voie déviée"
-#: ../bin/ctodesgn.c:238
+#: ../bin/ctodesgn.c:245
msgid "Overall Length"
msgstr "Longueur totale"
-#: ../bin/ctodesgn.c:248
+#: ../bin/ctodesgn.c:257
msgid "Regular Turnout"
msgstr "Aiguillage droit"
-#: ../bin/ctodesgn.c:258 ../bin/ctodesgn.c:295
+#: ../bin/ctodesgn.c:268 ../bin/ctodesgn.c:314
msgid "Inner Length"
msgstr "Longueur intérieure"
-#: ../bin/ctodesgn.c:259 ../bin/ctodesgn.c:296
+#: ../bin/ctodesgn.c:269 ../bin/ctodesgn.c:315
msgid "Inner Angle"
msgstr "Angle Intérieur"
-#: ../bin/ctodesgn.c:260 ../bin/ctodesgn.c:297
+#: ../bin/ctodesgn.c:270 ../bin/ctodesgn.c:316
msgid "Inner Offset"
msgstr "Décalage interne"
-#: ../bin/ctodesgn.c:261 ../bin/ctodesgn.c:299
+#: ../bin/ctodesgn.c:271 ../bin/ctodesgn.c:318
msgid "Outer Angle"
msgstr "Angle extérieur"
-#: ../bin/ctodesgn.c:262 ../bin/ctodesgn.c:300
+#: ../bin/ctodesgn.c:272 ../bin/ctodesgn.c:319
msgid "Outer Offset"
msgstr "Décalage extérieur"
-#: ../bin/ctodesgn.c:263 ../bin/ctodesgn.c:302
+#: ../bin/ctodesgn.c:273 ../bin/ctodesgn.c:321
msgid "Outer Length"
msgstr "Longueur extérieure"
-#: ../bin/ctodesgn.c:285
+#: ../bin/ctodesgn.c:302
msgid "Curved Turnout"
msgstr "Aiguillage courbe"
-#: ../bin/ctodesgn.c:298
+#: ../bin/ctodesgn.c:317
msgid "Inner Radius"
msgstr "Rayon intérieur"
-#: ../bin/ctodesgn.c:301
+#: ../bin/ctodesgn.c:320
msgid "Outer Radius"
msgstr "Rayon extérieur"
-#: ../bin/ctodesgn.c:303 ../bin/ctodesgn.c:370 ../bin/ctodesgn.c:445
+#: ../bin/ctodesgn.c:322 ../bin/ctodesgn.c:402 ../bin/ctodesgn.c:489
msgid "Toe Radius"
msgstr "Rayon initial"
-#: ../bin/ctodesgn.c:304 ../bin/ctodesgn.c:369
+#: ../bin/ctodesgn.c:323 ../bin/ctodesgn.c:401
msgid "Toe Length"
msgstr "Longueur initiale"
-#: ../bin/ctodesgn.c:314
+#: ../bin/ctodesgn.c:336
msgid "Cornu Curved Turnout"
msgstr "Aiguillage courbe Cornu"
-#: ../bin/ctodesgn.c:324 ../bin/ctodesgn.c:361 ../bin/ctodesgn.c:390
-#: ../bin/ctodesgn.c:431
+#: ../bin/ctodesgn.c:348 ../bin/ctodesgn.c:393 ../bin/ctodesgn.c:426
+#: ../bin/ctodesgn.c:475
msgid "Left Length"
msgstr "Longueur à gauche"
-#: ../bin/ctodesgn.c:325 ../bin/ctodesgn.c:362 ../bin/ctodesgn.c:391
-#: ../bin/ctodesgn.c:432
+#: ../bin/ctodesgn.c:349 ../bin/ctodesgn.c:394 ../bin/ctodesgn.c:427
+#: ../bin/ctodesgn.c:476
msgid "Left Angle"
msgstr "Angle gauche"
-#: ../bin/ctodesgn.c:326 ../bin/ctodesgn.c:363 ../bin/ctodesgn.c:392
-#: ../bin/ctodesgn.c:433
+#: ../bin/ctodesgn.c:350 ../bin/ctodesgn.c:395 ../bin/ctodesgn.c:428
+#: ../bin/ctodesgn.c:477
msgid "Left Offset"
msgstr "Décalage gauche"
-#: ../bin/ctodesgn.c:327 ../bin/ctodesgn.c:366 ../bin/ctodesgn.c:394
-#: ../bin/ctodesgn.c:440
+#: ../bin/ctodesgn.c:351 ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:430
+#: ../bin/ctodesgn.c:484
msgid "Right Offset"
msgstr "Bon offset"
-#: ../bin/ctodesgn.c:328 ../bin/ctodesgn.c:367 ../bin/ctodesgn.c:395
-#: ../bin/ctodesgn.c:441
+#: ../bin/ctodesgn.c:352 ../bin/ctodesgn.c:399 ../bin/ctodesgn.c:431
+#: ../bin/ctodesgn.c:485
msgid "Right Angle"
msgstr "Angle droit"
-#: ../bin/ctodesgn.c:329 ../bin/ctodesgn.c:368 ../bin/ctodesgn.c:396
-#: ../bin/ctodesgn.c:442
+#: ../bin/ctodesgn.c:353 ../bin/ctodesgn.c:400 ../bin/ctodesgn.c:432
+#: ../bin/ctodesgn.c:486
msgid "Right Length"
msgstr "Bonne longueur"
-#: ../bin/ctodesgn.c:351
+#: ../bin/ctodesgn.c:381
msgid "Wye Turnout"
msgstr "Aiguillage symétrique"
-#: ../bin/ctodesgn.c:364 ../bin/ctodesgn.c:434
+#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:478
msgid "Left Radius"
msgstr "Rayon gauche"
-#: ../bin/ctodesgn.c:365 ../bin/ctodesgn.c:439
+#: ../bin/ctodesgn.c:397 ../bin/ctodesgn.c:483
msgid "Right Radius"
msgstr "Rayon droit"
-#: ../bin/ctodesgn.c:380
+#: ../bin/ctodesgn.c:414
msgid "Cornu Wye Turnout"
msgstr "Aiguillage symétrique Cornu"
-#: ../bin/ctodesgn.c:421
+#: ../bin/ctodesgn.c:463
msgid "3-way Turnout"
msgstr "Aiguillage 3-voies"
-#: ../bin/ctodesgn.c:435
+#: ../bin/ctodesgn.c:479
msgid "Center Length"
msgstr "Longueur intérieure"
-#: ../bin/ctodesgn.c:436
+#: ../bin/ctodesgn.c:480
msgid "Center Angle"
msgstr "Angle Intérieur"
-#: ../bin/ctodesgn.c:437 ../bin/dcar.c:2229
+#: ../bin/ctodesgn.c:481 ../bin/dcar.c:2348
msgid "Center Offset"
msgstr "Décalage interne"
-#: ../bin/ctodesgn.c:438
+#: ../bin/ctodesgn.c:482
msgid "Center Radius"
msgstr "Rayon du cercle"
-#: ../bin/ctodesgn.c:443
+#: ../bin/ctodesgn.c:487
msgid "Toe Length Left"
msgstr "Longueur initiale gauche"
-#: ../bin/ctodesgn.c:444
+#: ../bin/ctodesgn.c:488
msgid "Toe Length Right"
msgstr "Longueur initiale droite"
-#: ../bin/ctodesgn.c:456
+#: ../bin/ctodesgn.c:502
msgid "Cornu 3-way Turnout"
msgstr "Aiguillage 3-voies Cornu"
-#: ../bin/ctodesgn.c:476
+#: ../bin/ctodesgn.c:527
msgid "Crossing"
msgstr "Croisement"
-#: ../bin/ctodesgn.c:497
+#: ../bin/ctodesgn.c:552
msgid "Single Slipswitch"
msgstr "Traversée jonction simple"
-#: ../bin/ctodesgn.c:526
+#: ../bin/ctodesgn.c:587
msgid "Double Slipswitch"
msgstr "Traversée jonction double"
-#: ../bin/ctodesgn.c:546
+#: ../bin/ctodesgn.c:612
msgid "Right Crossover"
msgstr "Traversée droite"
-#: ../bin/ctodesgn.c:566
+#: ../bin/ctodesgn.c:638
msgid "Left Crossover"
msgstr "Traversée gauche"
-#: ../bin/ctodesgn.c:586
+#: ../bin/ctodesgn.c:663
msgid "Double Crossover"
msgstr "Traversée double"
-#: ../bin/ctodesgn.c:604
+#: ../bin/ctodesgn.c:685
msgid "Straight Section"
msgstr "Section droite"
-#: ../bin/ctodesgn.c:615
+#: ../bin/ctodesgn.c:697
msgid "Angle (Degrees)"
msgstr "Angle (Degrés)"
-#: ../bin/ctodesgn.c:623
+#: ../bin/ctodesgn.c:708
msgid "Curved Section"
msgstr "Section courbe"
-#: ../bin/ctodesgn.c:642
+#: ../bin/ctodesgn.c:731
msgid "Bumper Section"
msgstr "Section Butoir"
-#: ../bin/ctodesgn.c:652 ../bin/denum.c:123 ../bin/denum.c:188
-#: ../bin/denum.c:220 ../bin/denum.c:221
+#: ../bin/ctodesgn.c:742 ../bin/denum.c:124 ../bin/denum.c:193
+#: ../bin/denum.c:230 ../bin/denum.c:231
msgid "Count"
msgstr "Qté"
-#: ../bin/ctodesgn.c:653
+#: ../bin/ctodesgn.c:743
msgid "Radius1"
msgstr "Rayon1"
-#: ../bin/ctodesgn.c:654
+#: ../bin/ctodesgn.c:744
msgid "Radius2"
msgstr "Rayon2"
-#: ../bin/ctodesgn.c:734
+#: ../bin/ctodesgn.c:827
msgid "Turntable Section"
msgstr "Section de pont tournant"
-#: ../bin/ctodesgn.c:2571
+#: ../bin/ctodesgn.c:2777
#, c-format
msgid "%s Designer"
msgstr "%s Designer"
-#: ../bin/ctodesgn.c:2574
+#: ../bin/ctodesgn.c:2780
#, c-format
msgid "%s %d x %d (of %d x %d)"
msgstr "%s %d x %d (de %d x %d)"
-#: ../bin/ctodesgn.c:2574
+#: ../bin/ctodesgn.c:2780
msgid "Page"
msgstr "Page"
-#: ../bin/ctodesgn.c:2581
+#: ../bin/ctodesgn.c:2788
msgid "Frog Number"
msgstr "N° de coeur"
-#: ../bin/ctodesgn.c:2887
+#: ../bin/ctodesgn.c:3147
msgid "Turnout Designer"
msgstr "Conception d'aiguillage"
-#: ../bin/ctodesgn.c:2897
+#: ../bin/ctodesgn.c:3160
#, c-format
msgid "%s %s Designer"
msgstr "%s concepteur de %s"
-#: ../bin/ctrain.c:183 ../bin/dcar.c:2241 ../bin/dcar.c:4373
-#: ../bin/dcar.c:4378
+#: ../bin/ctrain.c:179 ../bin/dcar.c:2360 ../bin/dcar.c:4694 ../bin/dcar.c:4700
msgid "Index"
msgstr "Index"
-#: ../bin/ctrain.c:189 ../bin/dcar.c:4374
-msgid "Rep Marks"
+#: ../bin/ctrain.c:185
+#, fuzzy
+msgid "Report Marks"
msgstr "Numéros de voiture"
#: ../bin/ctrain.c:273
msgid "Car"
msgstr "Véhicule"
-#: ../bin/ctrain.c:659
+#: ../bin/ctrain.c:728
msgid "Follow"
msgstr "Suivre"
-#: ../bin/ctrain.c:660
+#: ../bin/ctrain.c:729
msgid "Auto Reverse"
msgstr "Inversion automatique"
-#: ../bin/ctrain.c:679 ../bin/dcar.c:5260
+#: ../bin/ctrain.c:748 ../bin/dcar.c:5686
msgid "Find"
msgstr "Chercher"
-#: ../bin/ctrain.c:685 ../bin/ctrain.c:942 ../bin/ctrain.c:1251
-#: ../wlib/gtklib/ixhelp.c:239
+#: ../bin/ctrain.c:754 ../bin/ctrain.c:1011 ../bin/ctrain.c:1324
msgid "Forward"
msgstr "Avant"
-#: ../bin/ctrain.c:687 ../bin/ctrain.c:3133 ../bin/dcar.c:4711
-#: ../bin/dcar.c:4721 ../bin/dcar.c:4840 ../bin/fileio.c:215 ../bin/macro.c:61
-#: ../bin/macro.c:874
+#: ../bin/ctrain.c:756 ../bin/ctrain.c:3235 ../bin/dcar.c:5093
+#: ../bin/dcar.c:5103 ../bin/dcar.c:5225 ../bin/fileio.c:224 ../bin/macro.c:64
+#: ../bin/track.c:1366
msgid "Stop"
msgstr "Stop"
-#: ../bin/ctrain.c:883 ../bin/ctrain.c:912
+#: ../bin/ctrain.c:952 ../bin/ctrain.c:981
msgid "Crashed"
msgstr "Dérailler"
-#: ../bin/ctrain.c:885
+#: ../bin/ctrain.c:954
msgid "Not on Track"
msgstr "Pas sur la voie"
-#: ../bin/ctrain.c:889
+#: ../bin/ctrain.c:958
msgid "Trains Paused"
msgstr "Trains en pause"
-#: ../bin/ctrain.c:891
+#: ../bin/ctrain.c:960
msgid "Running"
msgstr "Marche"
-#: ../bin/ctrain.c:896
+#: ../bin/ctrain.c:965
msgid "End of Track"
msgstr "Fin de voie"
-#: ../bin/ctrain.c:900
+#: ../bin/ctrain.c:969
msgid "Open Turnout"
msgstr "Aiguillage ouvert"
-#: ../bin/ctrain.c:904
+#: ../bin/ctrain.c:973
msgid "Manual Stop"
msgstr "Arrêt manuel"
-#: ../bin/ctrain.c:908
+#: ../bin/ctrain.c:977
msgid "No Room"
msgstr "Pas d'espace de travail"
-#: ../bin/ctrain.c:916
+#: ../bin/ctrain.c:985
msgid "Unknown Status"
msgstr "Statut inconnu"
-#: ../bin/ctrain.c:926
+#: ../bin/ctrain.c:995
msgid "No trains"
msgstr "Pas de trains"
-#: ../bin/ctrain.c:1302
+#: ../bin/ctrain.c:1375
msgid "Train Control XXX"
msgstr "Contrôle du train XXX"
-#: ../bin/ctrain.c:1303
+#: ../bin/ctrain.c:1376
#, c-format
msgid "Train Control %d"
msgstr "Contrôle du train %d"
-#: ../bin/ctrain.c:1305
+#: ../bin/ctrain.c:1378
msgid "Train Control"
msgstr "Panneau de commande"
-#: ../bin/ctrain.c:3103 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:155
+#: ../bin/ctrain.c:3198 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:156
msgid "Run Trains"
msgstr "Mode Trains"
-#: ../bin/ctrain.c:3119
+#: ../bin/ctrain.c:3217
msgid "Uncouple"
msgstr "Découpler"
-#: ../bin/ctrain.c:3121
+#: ../bin/ctrain.c:3219
msgid "Flip Car"
msgstr "Inverser un véhicule"
-#: ../bin/ctrain.c:3123
+#: ../bin/ctrain.c:3222
msgid "Clearance Lines On"
msgstr "Lignes de dégagement On"
-#: ../bin/ctrain.c:3125
+#: ../bin/ctrain.c:3225
msgid "Clearance Lines Off"
msgstr "Lignes de dégagement Off"
-#: ../bin/ctrain.c:3127
+#: ../bin/ctrain.c:3227
msgid "Flip Train"
msgstr "Inverser le train"
-#: ../bin/ctrain.c:3129
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:438
+#: ../bin/ctrain.c:3229 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1188
+msgid "Describe"
+msgstr "Décrire"
+
+#: ../bin/ctrain.c:3231
msgid "MU Master"
msgstr "MU Master"
-#: ../bin/ctrain.c:3132
+#: ../bin/ctrain.c:3234
msgid "Change Direction"
msgstr "Changer de direction"
-#: ../bin/ctrain.c:3136
+#: ../bin/ctrain.c:3238
msgid "Remove Car"
msgstr "Supprimer un véhicule"
-#: ../bin/ctrain.c:3139
+#: ../bin/ctrain.c:3241
msgid "Remove Train"
msgstr "Supprimer le train"
-#: ../bin/cturnout.c:95 ../bin/dcar.c:2263 ../bin/dcar.c:2267
+#: ../bin/cturnout.c:97 ../bin/dcar.c:2382 ../bin/dcar.c:2386
msgid "New"
msgstr "Nouveau"
-#: ../bin/cturnout.c:415 ../bin/cturnout.c:420
+#: ../bin/cturnout.c:371 ../bin/cturnout.c:376
#, c-format
msgid "CheckPath: Turnout path[%d] %d is not a track segment"
msgstr ""
-"Vérifiez le tracé : Le tracé de l'aiguillage [%d] %d n'est pas un segment de"
-" voie"
+"Vérifiez le tracé : Le tracé de l'aiguillage [%d] %d n'est pas un segment de "
+"voie"
-#: ../bin/cturnout.c:428
+#: ../bin/cturnout.c:385
#, c-format
msgid ""
"CheckPath: Turnout path[%d] %d-%d not connected: %0.3f P0(%f,%f) P1(%f,%f)"
msgstr ""
-"Vérifiez le tracé : Tracé d'aiguillage[%d] %d-%d non connecté: %0.3f "
-"P0(%f,%f) P1(%f,%f)"
+"Vérifiez le tracé : Tracé d'aiguillage[%d] %d-%d non connecté: %0.3f P0(%f,"
+"%f) P1(%f,%f)"
-#: ../bin/cturnout.c:475
+#: ../bin/cturnout.c:437
msgid "Unknown special case"
msgstr "Cas spécial inconnu"
-#: ../bin/cturnout.c:592
+#: ../bin/cturnout.c:564
msgid "Connect Adjustable Tracks"
msgstr "Connecter les voies ajustables"
-#: ../bin/cturnout.c:2984
+#: ../bin/cturnout.c:1030
msgid "splitTurnout: can't find segment"
msgstr "aiguillage fractionné : impossible de trouver le segment"
-#: ../bin/cturnout.c:3443 ../bin/track.c:2324 ../bin/track.c:2430
-#: ../bin/tstraigh.c:632
+#: ../bin/cturnout.c:1511 ../bin/track.c:2380 ../bin/track.c:2502
+#: ../bin/tstraigh.c:838
msgid "Drag to change track length"
msgstr "Faites glisser pour changer la longueur de la voie"
-#: ../bin/cturnout.c:3454
+#: ../bin/cturnout.c:1524
#, c-format
msgid "Length=%s"
msgstr "Longueur = %s"
-#: ../bin/cturnout.c:3737
+#: ../bin/cturnout.c:1815
#, c-format
msgid "Turnout %d Path: %s"
msgstr "Aiguillage %d Chemin: %s"
-#: ../bin/cturnout.c:4288
+#: ../bin/cturnout.c:2389
#, c-format
msgid "%d connections, max distance %0.3f (%s)"
msgstr "%d connections, distance max %0.3f (%s)"
-#: ../bin/cturnout.c:4294
+#: ../bin/cturnout.c:2394
#, c-format
msgid "0 connections (%s)"
msgstr "0 connections (%s)"
-#: ../bin/cturnout.c:4333
+#: ../bin/cturnout.c:2433
msgid "Place New Turnout"
msgstr "Mettre un nouvel aiguillage"
-#: ../bin/cturnout.c:4743
+#: ../bin/cturnout.c:2861
#, c-format
msgid "Angle = %0.3f (%s)"
msgstr "Angle = %0.3f (%s)"
-#: ../bin/cturnout.c:4853
+#: ../bin/cturnout.c:2962
+msgid "Add Fixed-Track"
+msgstr ""
+
+#: ../bin/cturnout.c:2981
msgid "Pick turnout and active End Point, then place on the layout"
msgstr ""
"Choisissez l'aiguillage avec son point de fin actif, puis placez-le sur le "
"plan"
-#: ../bin/cturnout.c:5048
-msgid "Predefined Track"
-msgstr "Voie sélectionnée"
+#: ../bin/cturnout.c:3190
+#, fuzzy
+msgid "Fixed-Track"
+msgstr "Prolonger la voie"
-#: ../bin/cturntbl.c:49 ../bin/cturntbl.c:248 ../bin/cturntbl.c:946
-#: ../bin/cturntbl.c:961
+#: ../bin/cturntbl.c:49 ../bin/cturntbl.c:275 ../bin/cturntbl.c:1029
+#: ../bin/cturntbl.c:1044
msgid "Diameter"
msgstr "Diamètre"
-#: ../bin/cturntbl.c:249
+#: ../bin/cturntbl.c:276
msgid "# EndPt"
msgstr "# Bout"
-#: ../bin/cturntbl.c:283
+#: ../bin/cturntbl.c:316
#, c-format
msgid "Turntable(%d): Layer=%d Center=[%s %s] Diameter=%s #EP=%d"
msgstr ""
"Pont tournant(%d) : Couche=%d Centre=[%s %s] Diamètre=%s #Nb de points=%d"
-#: ../bin/cturntbl.c:302
+#: ../bin/cturntbl.c:335 ../bin/cturntbl.c:454
msgid "Turntable"
msgstr "Pont tournant"
-#: ../bin/cturntbl.c:610
+#: ../bin/cturntbl.c:670
msgid "Drag to create stall track"
msgstr "Faites glisser pour créer une voie de dépassement"
-#: ../bin/cturntbl.c:663
+#: ../bin/cturntbl.c:728
msgid "Connect Turntable Tracks"
msgstr "Connecter les voies du pont tournant"
-#: ../bin/cturntbl.c:975
+#: ../bin/cturntbl.c:1058
msgid "Create Turntable"
msgstr "Créer un pont tournant"
-#: ../bin/cturntbl.c:1006
+#: ../bin/cturntbl.c:1090
msgid "Custom Turntable"
msgstr "Pont tournant prototype"
-#: ../bin/cundo.c:210
+#: ../bin/cundo.c:266
msgid "Undo Trace"
msgstr "Annuler la trace"
-#: ../bin/cundo.c:628
+#: ../bin/cundo.c:741
#, c-format
msgid "Undo: %s"
msgstr "Annuler : %s"
-#: ../bin/cundo.c:631 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:167
+#: ../bin/cundo.c:744 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:168
msgid "Undo last command"
msgstr "Annuler la dernière commande"
-#: ../bin/cundo.c:636
+#: ../bin/cundo.c:749
#, c-format
msgid "Redo: %s"
msgstr "Refaire : %s"
-#: ../bin/cundo.c:639 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:128
+#: ../bin/cundo.c:752 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:129
msgid "Redo last undo"
msgstr "Refaire la dernière annulation"
-#: ../bin/custom.c:147
+#: ../bin/custom.c:148
#, c-format
msgid "%s Turnout Designer"
msgstr "%s Conception d'aiguillage"
@@ -3726,16 +3727,16 @@ msgstr "%s Conception d'aiguillage"
msgid "%s Version %s"
msgstr "%s Version %s"
-#: ../bin/custom.c:157
+#: ../bin/custom.c:156
#, c-format
msgid ""
"All %s Files (*.xtc,*.xtce)|*.xtc;*.xtce|%s Trackplan (*.xtc)|*.xtc|%s "
"Extended Trackplan (*.xtce)|*.xtce|All Files (*)|*"
msgstr ""
-"Tous les fichiers %s (*.xtc,*.xtce)|*.xtc;*.xtce|%s Trackplan "
-"(*.xtc)|*.xtc|%s Trackplan étendu (*.xtce)|*.xtce|Tous les fichiers (*)|*"
+"Tous les fichiers %s (*.xtc,*.xtce)|*.xtc;*.xtce|%s Trackplan (*.xtc)|*.xtc|"
+"%s Trackplan étendu (*.xtce)|*.xtce|Tous les fichiers (*)|*"
-#: ../bin/custom.c:168
+#: ../bin/custom.c:166
#, c-format
msgid ""
"%s Trackplan (*.xtc)|*.xtc|%s Extended Trackplan (*.xtce)|*.xtce|All Files "
@@ -3744,40 +3745,40 @@ msgstr ""
"%s Trackplan (*.xtc)|*.xtc|%s Trackplan étendu (*.xtce)|*.xtce|Tous les "
"fichiers (*)|*"
-#: ../bin/custom.c:177
+#: ../bin/custom.c:174
#, c-format
msgid "All Files (*)|*"
msgstr "Tous les fichiers (*)|*"
-#: ../bin/custom.c:182
+#: ../bin/custom.c:178
#, c-format
msgid "%s Import Files (*.xti)|*.xti"
msgstr "%s Fichiers (*.xti) importés|*.xti"
-#: ../bin/custom.c:187
+#: ../bin/custom.c:182
msgid "Data Exchange Format Files (*.dxf)|*.dxf"
msgstr "Fichiers de format d'échange de données (*.dxf)|*.dxf"
-#: ../bin/custom.c:191
+#: ../bin/custom.c:186
msgid "Scalable Vector Graphics Format Files (*.svg)|*.svg"
msgstr "Fichiers de format de graphiques vectoriels évolutifs (*.svg)|*.svg"
-#: ../bin/custom.c:196
+#: ../bin/custom.c:190
#, c-format
msgid "%s Record Files (*.xtr)|*.xtr"
msgstr "%s Fichiers d'enregistrement (*.xtr)|*.xtr"
-#: ../bin/custom.c:201
+#: ../bin/custom.c:194
#, c-format
msgid "%s Note Files (*.not)|*.not"
msgstr "Pas de fichiers %s (*.not)|*.not"
-#: ../bin/custom.c:206
+#: ../bin/custom.c:198
#, c-format
msgid "%s Log Files (*.log)|*.log"
msgstr "Fichiers Log %s (*.log)|*.log"
-#: ../bin/custom.c:211
+#: ../bin/custom.c:202
#, c-format
msgid "%s PartsList Files (*.txt)|*.txt"
msgstr "Fichiers de nomenclature %s (*.txt)|*.txt"
@@ -3798,35 +3799,35 @@ msgstr "Sur le bord"
msgid "Flat"
msgstr "Plat"
-#: ../bin/dbench.c:66
+#: ../bin/dbench.c:67
msgid "Left-Down"
msgstr "En bas à gauche"
-#: ../bin/dbench.c:67
+#: ../bin/dbench.c:68
msgid "Right-Down"
msgstr "En bas à droite"
-#: ../bin/dbench.c:68
+#: ../bin/dbench.c:69
msgid "Left-Up"
msgstr "En haut à gauche"
-#: ../bin/dbench.c:69
+#: ../bin/dbench.c:70
msgid "Right-Up"
msgstr "En haut à droite"
-#: ../bin/dbench.c:70
+#: ../bin/dbench.c:71
msgid "Left-Inverted"
msgstr "Inversé à gauche"
-#: ../bin/dbench.c:71
+#: ../bin/dbench.c:72
msgid "Right-Inverted"
msgstr "Inversé à droite"
-#: ../bin/dbench.c:76
+#: ../bin/dbench.c:78
msgid "Inverted"
msgstr "Inversé"
-#: ../bin/dbench.c:143
+#: ../bin/dbench.c:147
#, c-format
msgid ""
"Bad BenchType for %s:\n"
@@ -3835,98 +3836,98 @@ msgstr ""
"Mauvais type de support pour%s:\n"
"%s"
-#: ../bin/dbitmap.c:149
+#: ../bin/dbitmap.c:150
msgid "Drawing tracks to bitmap"
msgstr "Tracer des voies en bitmap"
-#: ../bin/dbitmap.c:186
+#: ../bin/dbitmap.c:187
msgid "Drawn with "
msgstr "Dessiné avec "
-#: ../bin/dbitmap.c:228
+#: ../bin/dbitmap.c:229
msgid "Writing bitmap to file"
msgstr "Enregistrer en bitmap dans un fichier"
-#: ../bin/dbitmap.c:251
+#: ../bin/dbitmap.c:252
msgid "Layout Titles"
msgstr "Titres du plan"
-#: ../bin/dbitmap.c:252
+#: ../bin/dbitmap.c:253
msgid "Borders"
msgstr "Bordures"
-#: ../bin/dbitmap.c:253
+#: ../bin/dbitmap.c:254
msgid "Centerline of Track"
msgstr "Ligne médiane de la voie ferrée"
-#: ../bin/dbitmap.c:254
+#: ../bin/dbitmap.c:255
msgid "Background Image"
msgstr "Image de fond"
-#: ../bin/dbitmap.c:261
+#: ../bin/dbitmap.c:262
msgid "Include "
msgstr "inclure"
-#: ../bin/dbitmap.c:263
+#: ../bin/dbitmap.c:264
msgid "Resolution "
msgstr "Échelle de résolution"
-#: ../bin/dbitmap.c:264
+#: ../bin/dbitmap.c:265
msgid "dpi"
msgstr "points par pouce"
-#: ../bin/dbitmap.c:265
+#: ../bin/dbitmap.c:266
msgid "Bitmap Size "
msgstr "Taille du bitmap"
-#: ../bin/dbitmap.c:267
+#: ../bin/dbitmap.c:268
msgid "99999 by 99999 pixels"
msgstr "Bitmap : 99999 par 99999 pixels"
-#: ../bin/dbitmap.c:268
+#: ../bin/dbitmap.c:269
msgid "Approximate File Size "
msgstr "Taille approchée du fichier"
-#: ../bin/dbitmap.c:270
+#: ../bin/dbitmap.c:271
msgid "999.9Mb"
msgstr "999.9Mb"
-#: ../bin/dbitmap.c:316
+#: ../bin/dbitmap.c:317
#, c-format
msgid "%ld by %ld pixels"
msgstr "%ld par %ld pixels"
-#: ../bin/dbitmap.c:338
+#: ../bin/dbitmap.c:339
#, c-format
msgid "%0.0f"
msgstr "%0.0f"
-#: ../bin/dbitmap.c:340
+#: ../bin/dbitmap.c:341
#, c-format
msgid "%0.1fKb"
msgstr "%0.1fKb"
-#: ../bin/dbitmap.c:342
+#: ../bin/dbitmap.c:343
#, c-format
msgid "%0.1fMb"
msgstr "%0.1fMb"
-#: ../bin/dbitmap.c:344
+#: ../bin/dbitmap.c:345
#, c-format
msgid "%0.1fGb"
msgstr "%0.1fGb"
-#: ../bin/dbitmap.c:435
+#: ../bin/dbitmap.c:436
msgid "Save Bitmap"
msgstr "Enregistrer le bitmap"
-#: ../bin/dbitmap.c:436
+#: ../bin/dbitmap.c:437
msgid ""
"Portable Network Graphics format (*.png)|*.png|JPEG format (*.jpg)|*.jpg"
msgstr ""
"Format graphique réseau portable (*.png)|*.png|JPEG format (*.jpg)|*.jpg"
-#: ../bin/dbitmap.c:471
+#: ../bin/dbitmap.c:472
msgid "Export to bitmap"
msgstr "Exporter en bitmap"
@@ -3938,539 +3939,548 @@ msgstr "Bogies"
msgid "Body"
msgstr "Structure"
-#: ../bin/dcar.c:147 ../bin/dcar.c:2694 ../bin/dcar.c:2698
+#: ../bin/dcar.c:148 ../bin/dcar.c:2860 ../bin/dcar.c:2867
msgid "Unknown"
msgstr "Inconnu"
-#: ../bin/dcar.c:469
+#: ../bin/dcar.c:481
msgid "Diesel Loco"
msgstr "Loco Diesel"
-#: ../bin/dcar.c:470
+#: ../bin/dcar.c:482
msgid "Steam Loco"
msgstr "Loco vapeur"
-#: ../bin/dcar.c:471
+#: ../bin/dcar.c:483
msgid "Elect Loco"
msgstr "Loco Elect"
-#: ../bin/dcar.c:472
+#: ../bin/dcar.c:484
msgid "Freight Car"
msgstr "Wagon march"
-#: ../bin/dcar.c:473
+#: ../bin/dcar.c:485
msgid "Psngr Car"
msgstr "Voiture voy"
-#: ../bin/dcar.c:474
+#: ../bin/dcar.c:486
msgid "M-O-W"
msgstr "Chariot"
-#: ../bin/dcar.c:475
+#: ../bin/dcar.c:487
msgid "Other"
msgstr "Autres"
-#: ../bin/dcar.c:1173 ../bin/dcar.c:5081
+#: ../bin/dcar.c:1237 ../bin/dcar.c:5478
msgid "N/A"
msgstr "Non applicable"
-#: ../bin/dcar.c:1174 ../bin/dcar.c:5086
+#: ../bin/dcar.c:1238 ../bin/dcar.c:5483
msgid "Mint"
msgstr "Mint"
-#: ../bin/dcar.c:1175 ../bin/dcar.c:5085
+#: ../bin/dcar.c:1239 ../bin/dcar.c:5482
msgid "Excellent"
msgstr "Excellent"
-#: ../bin/dcar.c:1176 ../bin/dcar.c:5084
+#: ../bin/dcar.c:1240 ../bin/dcar.c:5481
msgid "Good"
msgstr "Bon"
-#: ../bin/dcar.c:1177 ../bin/dcar.c:5083
+#: ../bin/dcar.c:1241 ../bin/dcar.c:5480
msgid "Fair"
msgstr "Juste"
-#: ../bin/dcar.c:1178 ../bin/dcar.c:5082
+#: ../bin/dcar.c:1242 ../bin/dcar.c:5479
msgid "Poor"
msgstr "Mauvais"
-#: ../bin/dcar.c:1492 ../bin/dpricels.c:42
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:486
+#: ../bin/dcar.c:1580 ../bin/dpricels.c:42
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:518
msgid "Item"
msgstr "Objet"
-#: ../bin/dcar.c:2164 ../wlib/gtklib/notice.c:96 ../wlib/mswlib/mswmisc.c:2129
+#: ../bin/dcar.c:2282 ../wlib/mswlib/mswmisc.c:2057
msgid "Information"
msgstr "Information"
-#: ../bin/dcar.c:2164
+#: ../bin/dcar.c:2282
msgid "Customize"
msgstr "Personnaliser"
-#: ../bin/dcar.c:2177
+#: ../bin/dcar.c:2296
msgid "Sequential"
msgstr "Séquentiel"
-#: ../bin/dcar.c:2177
+#: ../bin/dcar.c:2296
msgid "Repeated"
msgstr "Répété"
-#: ../bin/dcar.c:2188 ../bin/dcar.c:2190 ../bin/dcar.c:5411
+#: ../bin/dcar.c:2307 ../bin/dcar.c:2309 ../bin/dcar.c:5838
msgid "Prototype"
msgstr "Prototype"
-#: ../bin/dcar.c:2196
+#: ../bin/dcar.c:2315
msgid "Part"
msgstr "Référence"
-#: ../bin/dcar.c:2198 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:408
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:618
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:619
+#: ../bin/dcar.c:2317 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:419
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:659
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:660
msgid "Part Number"
msgstr "Référence N°"
-#: ../bin/dcar.c:2200
+#: ../bin/dcar.c:2319
msgid "Loco?"
msgstr "Loco ?"
-#: ../bin/dcar.c:2204 ../bin/dcar.c:4411
+#: ../bin/dcar.c:2323 ../bin/dcar.c:4734
msgid "Import"
msgstr "Importation"
-#: ../bin/dcar.c:2211
+#: ../bin/dcar.c:2330
msgid "Mode"
msgstr "Mode"
-#: ../bin/dcar.c:2215
+#: ../bin/dcar.c:2334
msgid "Road"
msgstr "Compagnie ferroviaire"
-#: ../bin/dcar.c:2217
+#: ../bin/dcar.c:2336
msgid "Reporting Mark"
msgstr "Sigle"
-#: ../bin/dcar.c:2219
+#: ../bin/dcar.c:2338
msgid "Number"
msgstr "Nombre"
-#: ../bin/dcar.c:2223
+#: ../bin/dcar.c:2342
msgid "Car Length"
msgstr "Longueur hors tampons"
-#: ../bin/dcar.c:2227
+#: ../bin/dcar.c:2346
msgid "Truck Centers"
msgstr "Centre des bogies"
-#: ../bin/dcar.c:2231
+#: ../bin/dcar.c:2350
msgid "Coupler Mount"
msgstr "Support d'attelage"
-#: ../bin/dcar.c:2233
+#: ../bin/dcar.c:2352
msgid "Coupled Length"
msgstr "Longueur de couplage"
-#: ../bin/dcar.c:2235 ../bin/dcar.c:4256
+#: ../bin/dcar.c:2354 ../bin/dcar.c:4564
msgid "Coupler Length"
msgstr "Longueur de l'attelage"
-#: ../bin/dcar.c:2243
+#: ../bin/dcar.c:2362
msgid "Purchase Price"
msgstr "Prix d'achat"
-#: ../bin/dcar.c:2245 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:264
+#: ../bin/dcar.c:2364 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:266
msgid "Current Price"
msgstr "Prix actuel"
-#: ../bin/dcar.c:2247 ../bin/dcar.c:4375 ../bin/dcar.c:4380
+#: ../bin/dcar.c:2366 ../bin/dcar.c:4696 ../bin/dcar.c:4702
msgid "Condition"
msgstr "Condition"
-#: ../bin/dcar.c:2249
+#: ../bin/dcar.c:2368
msgid "Purchase Date"
msgstr "Date d'achat"
-#: ../bin/dcar.c:2251 ../bin/dcar.c:4380
+#: ../bin/dcar.c:2370 ../bin/dcar.c:4702
msgid "Service Date"
msgstr "Date de service"
-#: ../bin/dcar.c:2253
+#: ../bin/dcar.c:2372
msgid "Quantity"
msgstr "Quantité"
-#: ../bin/dcar.c:2255
+#: ../bin/dcar.c:2374
msgid "Numbers"
msgstr "Nombres"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:487
-#: ../bin/dcar.c:2257 ../bin/dcar.c:4376 ../bin/trknote.c:709
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1267
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:487
+#: ../bin/dcar.c:2376 ../bin/dcar.c:4697 ../bin/trknote.c:594
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1286
msgid "Notes"
msgstr "Remarques"
-#: ../bin/dcar.c:2264
+#: ../bin/dcar.c:2383
msgid "Car Part"
msgstr "Partie de véhicule"
-#: ../bin/dcar.c:2265 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:238
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:239
+#: ../bin/dcar.c:2384 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:240
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:241
msgid "Car Prototype"
msgstr "Véhicule prototype"
-#: ../bin/dcar.c:2628 ../bin/dcar.c:2945
+#: ../bin/dcar.c:2776 ../bin/dcar.c:3143
msgid "Undecorated"
msgstr "Sans étiquette"
-#: ../bin/dcar.c:2686 ../bin/dcar.c:2690 ../bin/paramfilelist.c:390
+#: ../bin/dcar.c:2849 ../bin/dcar.c:2855 ../bin/paramfilelist.c:458
msgid "Custom"
msgstr "Personnalisé"
-#: ../bin/dcar.c:2855
+#: ../bin/dcar.c:3049
msgid "Undecorated "
msgstr "Sans étiquette "
-#: ../bin/dcar.c:3077
+#: ../bin/dcar.c:3298
#, c-format
msgid "New %s Scale Car"
msgstr "Nouveau véhicule à l'échelle %s"
-#: ../bin/dcar.c:3078 ../bin/dcar.c:3087 ../bin/dcar.c:3096 ../bin/dcar.c:4289
-#: ../bin/dcar.c:4407 ../bin/paramfilesearch_ui.c:76
+#: ../bin/dcar.c:3299 ../bin/dcar.c:3308 ../bin/dcar.c:3318 ../bin/dcar.c:4598
+#: ../bin/dcar.c:4730 ../bin/paramfilesearch_ui.c:75
msgid "Add"
msgstr "Ajouter"
-#: ../bin/dcar.c:3080
+#: ../bin/dcar.c:3301
#, c-format
msgid "Update %s Scale Car"
msgstr "Mettre à jour le véhicule à l'échelle %s"
-#: ../bin/dcar.c:3081 ../bin/dcar.c:3090 ../bin/dcar.c:3099
-#: ../bin/dcmpnd.c:168
+#: ../bin/dcar.c:3302 ../bin/dcar.c:3312 ../bin/dcar.c:3321 ../bin/dcmpnd.c:178
msgid "Update"
msgstr "Mise à jour"
-#: ../bin/dcar.c:3086
+#: ../bin/dcar.c:3307
#, c-format
msgid "New %s Scale Car Part"
msgstr "Nouvelle fiche véhicule à l'échelle %s"
-#: ../bin/dcar.c:3089
+#: ../bin/dcar.c:3310
#, c-format
msgid "Update %s Scale Car Part"
msgstr "Mettre à jour %s la pièce de véhicule à l'échelle"
-#: ../bin/dcar.c:3095
+#: ../bin/dcar.c:3317
msgid "New Prototype"
msgstr "Nouveau prototype"
-#: ../bin/dcar.c:3098
+#: ../bin/dcar.c:3320
msgid "Update Prototype"
msgstr "Mettre à jour le prototype"
-#: ../bin/dcar.c:3739
+#: ../bin/dcar.c:4009
msgid "Truck Center Offset plus Truck Centers must be less than Car Length"
msgstr ""
"Le décalage des centres de bogies plus la moitié de ces derniers doit être "
"inférieur à la longueur du véhicule"
-#: ../bin/dcar.c:3796 ../bin/dcar.c:3800
+#: ../bin/dcar.c:4070 ../bin/dcar.c:4074
msgid "Enter a 8 digit numeric date (yyyymmdd)"
msgstr "Entrez une date numérique à 8 chiffres (aaaammjj)"
-#: ../bin/dcar.c:3803
+#: ../bin/dcar.c:4077
msgid "Enter a date between 19000101 and 21991231"
msgstr "Entrez une date comprise entre 19000101 et 21991231"
-#: ../bin/dcar.c:3809
+#: ../bin/dcar.c:4083
msgid "Invalid month"
msgstr "Mois invalide"
-#: ../bin/dcar.c:3812
+#: ../bin/dcar.c:4086
msgid "Invalid day"
msgstr "Jour invalide"
-#: ../bin/dcar.c:3907
+#: ../bin/dcar.c:4184
msgid "Select or Enter a Manufacturer"
msgstr "Sélectionnez ou entrez un fabricant"
-#: ../bin/dcar.c:3910
+#: ../bin/dcar.c:4188
#, c-format
msgid "Item Index %ld duplicated an existing item: updated to new value"
msgstr ""
"L'index de l'objet %ld existe déjà : mis à jour avec une nouvelle valeur"
-#: ../bin/dcar.c:4115
+#: ../bin/dcar.c:4410
#, c-format
msgid "Added %ld new Cars"
msgstr "Ajout de %ld nouveaux matériels roulants"
-#: ../bin/dcar.c:4117
+#: ../bin/dcar.c:4412
msgid "Added new Car"
msgstr "Ajout d'un nouveau véhicule"
-#: ../bin/dcar.c:4120
+#: ../bin/dcar.c:4415
msgid "Updated Car"
msgstr "Véhicule mis à jour"
-#: ../bin/dcar.c:4123
+#: ../bin/dcar.c:4418
msgid " and Part"
msgstr " et une partie"
-#: ../bin/dcar.c:4150
+#: ../bin/dcar.c:4450
#, c-format
msgid "%s Part: %s %s %s %s %s %s"
msgstr "%s Partie : %s %s %s %s %s %s"
-#: ../bin/dcar.c:4150 ../bin/dcar.c:4167
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
msgid "Added new"
msgstr "Ajout d'un nouveau"
-#: ../bin/dcar.c:4150 ../bin/dcar.c:4167
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
msgid "Updated"
msgstr "Mis à jour"
-#: ../bin/dcar.c:4166
+#: ../bin/dcar.c:4472
#, c-format
msgid "%s Prototype: %s%s."
msgstr "%s Prototype: %s%s."
-#: ../bin/dcar.c:4168
+#: ../bin/dcar.c:4474
msgid ". Enter new values or press Close"
msgstr ". Entrez de nouvelles valeurs ou appuyez sur Fermer"
-#: ../bin/dcar.c:4289
+#: ../bin/dcar.c:4598
msgid "New Car Part"
msgstr "Nouvelle fiche de véhicule"
-#: ../bin/dcar.c:4374 ../bin/dcar.c:4379
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:456
+#: ../bin/dcar.c:4694 ../bin/dcar.c:4700 ../bin/dcustmgm.c:46
+#: ../bin/dlayer.c:561 ../bin/layout.c:662 ../bin/scale.c:845
+msgid "Scale"
+msgstr "Échelle"
+
+#: ../bin/dcar.c:4695 ../bin/dcar.c:4701
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:488
msgid "Roadname"
msgstr "Compagnie ferroviaire"
-#: ../bin/dcar.c:4374
+#: ../bin/dcar.c:4695
+msgid "Rep Marks"
+msgstr "Numéros de voiture"
+
+#: ../bin/dcar.c:4695
msgid "Purc Price"
msgstr "Prix d'achat"
-#: ../bin/dcar.c:4375 ../bin/dcar.c:4380
+#: ../bin/dcar.c:4696 ../bin/dcar.c:4702
msgid "Curr Price"
msgstr "Prix act"
-#: ../bin/dcar.c:4375
+#: ../bin/dcar.c:4696
msgid "Purc Date"
msgstr "Date d'achat"
-#: ../bin/dcar.c:4375
+#: ../bin/dcar.c:4696
msgid "Srvc Date"
msgstr "Date de service"
-#: ../bin/dcar.c:4376
+#: ../bin/dcar.c:4697
msgid "Locat'n"
msgstr "Lieu"
-#: ../bin/dcar.c:4379
+#: ../bin/dcar.c:4701
msgid "RepMarks"
msgstr "Sigles"
-#: ../bin/dcar.c:4379
+#: ../bin/dcar.c:4701
msgid "Purch Price"
msgstr "Prix d'achat"
-#: ../bin/dcar.c:4380
+#: ../bin/dcar.c:4702
msgid "Purch Date"
msgstr "Date d'achat"
-#: ../bin/dcar.c:4397
+#: ../bin/dcar.c:4720
msgid "Sort By"
msgstr "Trier par"
-#: ../bin/dcar.c:4405 ../bin/dcontmgm.c:87 ../bin/dcustmgm.c:56
-#: ../bin/dcustmgm.c:93
+#: ../bin/dcar.c:4728 ../bin/dcustmgm.c:58 ../bin/dcustmgm.c:98
+#: ../bin/dcontmgm.c:88
msgid "Edit"
msgstr "Editer"
-#: ../bin/dcar.c:4409 ../bin/dcontmgm.c:89 ../bin/dcustmgm.c:58
-#: ../bin/misc.c:2497
+#: ../bin/dcar.c:4732 ../bin/dcar.c:5654 ../bin/dcustmgm.c:60
+#: ../bin/dcontmgm.c:90 ../bin/menu.c:992
msgid "Delete"
msgstr "Effacer"
-#: ../bin/dcar.c:4413 ../bin/fileio.c:1490
+#: ../bin/dcar.c:4736 ../bin/fileio.c:1631
msgid "Export"
msgstr "Exporter"
-#: ../bin/dcar.c:4415 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:635
+#: ../bin/dcar.c:4738 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:676
msgid "List"
msgstr "Liste"
-#: ../bin/dcar.c:4525 ../bin/dcar.c:5260 ../bin/misc.c:2896
+#: ../bin/dcar.c:4894 ../bin/dcar.c:5686 ../bin/menu.c:1416
msgid "Car Inventory"
msgstr "Inventaire des véhicules"
-#: ../bin/dcar.c:4645
+#: ../bin/dcar.c:5026
msgid "List Cars"
msgstr "Liste de véhicules"
-#: ../bin/dcar.c:4768 ../bin/dcar.c:4933
+#: ../bin/dcar.c:5150 ../bin/dcar.c:5322
msgid "Import Cars"
msgstr "Importer des véhicules"
-#: ../bin/dcar.c:4934 ../bin/dcar.c:5056
+#: ../bin/dcar.c:5323 ../bin/dcar.c:5453
msgid "Comma-Separated-Values (*.csv)|*.csv"
msgstr "Valeurs séparées par des virgules (*.csv)|*.csv"
-#: ../bin/dcar.c:5003 ../bin/dcar.c:5055
+#: ../bin/dcar.c:5395 ../bin/dcar.c:5452
msgid "Export Cars"
msgstr "Exporter les véhicules"
-#: ../bin/dcar.c:5089
-msgid "Layout"
-msgstr "Plan"
-
-#: ../bin/dcar.c:5091
+#: ../bin/dcar.c:5494
msgid "Shelf"
msgstr "Étagère"
-#: ../bin/dcmpnd.c:72 ../bin/dlayer.c:600 ../bin/misc.c:695 ../bin/misc.c:727
+#: ../bin/dcar.c:5653
+#, fuzzy
+msgid "Shelve"
+msgstr "Étagère"
+
+#: ../bin/dcmpnd.c:73 ../bin/dlayer.c:590 ../bin/menu.c:364 ../bin/menu.c:398
msgid "Load"
msgstr "Charger"
-#: ../bin/dcmpnd.c:105
+#: ../bin/dcmpnd.c:111
msgid "Updating definitions, please wait"
msgstr "Mise à jour des définitions, veuillez patienter"
-#: ../bin/dcmpnd.c:168
+#: ../bin/dcmpnd.c:178
msgid "Update Title"
msgstr "Mettre à jour le titre"
-#: ../bin/dcmpnd.c:228
+#: ../bin/dcmpnd.c:244
#, c-format
msgid "End-Point #%d of the selected and actual turnouts are not close"
msgstr ""
"Le point de fin #%d de la sélection et l'aiguillage actuel ne sont pas "
"proches"
-#: ../bin/dcmpnd.c:237
+#: ../bin/dcmpnd.c:255
#, c-format
msgid "End-Point #%d of the selected and actual turnouts are not aligned"
msgstr ""
"Le point de fin #%d de la sélection et l'aiguillage actuel ne sont pas "
"alignés"
-#: ../bin/dcmpnd.c:255
+#: ../bin/dcmpnd.c:274
msgid "The selected Turnout had a differing number of End-Points"
msgstr "L'aiguillage sélectionné avait un nombre différent de points de fin"
-#: ../bin/dcmpnd.c:320
+#: ../bin/dcmpnd.c:341
msgid "Skip"
msgstr "Ignorer"
-#: ../bin/dcmpnd.c:352
+#: ../bin/dcmpnd.c:374
#, c-format
msgid "%d Track(s) refreshed"
msgstr "%d Voie(s) revues"
-#: ../bin/dcmpnd.c:392
+#: ../bin/dcmpnd.c:419
msgid "Refresh Turnout/Structure"
msgstr "Actualiser les aiguillages/bâtiments"
-#: ../bin/dcmpnd.c:394
+#: ../bin/dcmpnd.c:423
msgid "Choose a Turnout/Structure to replace:"
msgstr "Choisissez un aiguillage/bâtiment à remplacer :"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:457
-#: ../bin/dcmpnd.c:404 ../bin/doption.c:92
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1207
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:457
+#: ../bin/dcmpnd.c:436 ../bin/doption.c:94
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1226
msgid "Turnouts"
msgstr "Aiguillages"
-#: ../bin/dcmpnd.c:404
+#: ../bin/dcmpnd.c:436
msgid "Structures"
msgstr "Structures"
-#: ../bin/dcmpnd.c:433
+#: ../bin/dcmpnd.c:467
msgid "Choose another Turnout/Structure to replace:"
msgstr "Choisissez un autre aiguillage/bâtiment à remplacer :"
-#: ../bin/dcmpnd.c:536
+#: ../bin/dcmpnd.c:582
msgid "Rename Object"
msgstr "Renommer un objet"
-#: ../bin/dcontmgm.c:80
-msgid "Tracks"
-msgstr "Voies"
-
-#: ../bin/dcontmgm.c:161
-#, c-format
-msgid "Are you sure you want to delete the %d control element(s)"
-msgstr "Êtes-vous sûr de vouloir supprimer %d élément(s) de contrôle"
-
-#: ../bin/dcontmgm.c:164
-msgid "Control Elements"
-msgstr "Éléments de contrôle"
-
-#: ../bin/dcontmgm.c:287
-msgid "Manage Layout Control Elements"
-msgstr "Gérer les contrôles du plan"
-
-#: ../bin/dcustmgm.c:52
+#: ../bin/dcustmgm.c:54
msgid "Create a new "
msgstr "Créer un nouveau "
-#: ../bin/dcustmgm.c:54
+#: ../bin/dcustmgm.c:56
msgid "Go"
msgstr "Go"
-#: ../bin/dcustmgm.c:60
+#: ../bin/dcustmgm.c:62
msgid "Move To"
msgstr "Déplacer vers"
-#: ../bin/dcustmgm.c:93
+#: ../bin/dcustmgm.c:98
msgid "Rename"
msgstr "Renommer"
-#: ../bin/dcustmgm.c:174
+#: ../bin/dcustmgm.c:186
msgid "Label"
msgstr "Étiquette"
-#: ../bin/dcustmgm.c:211
+#: ../bin/dcustmgm.c:225
msgid "Contents Label"
msgstr "Contenu de l'étiquette"
-#: ../bin/dcustmgm.c:267
+#: ../bin/dcustmgm.c:284
msgid "Move To XTP"
msgstr "Déplacer vers le fichier de paramètres"
-#: ../bin/dcustmgm.c:268
+#: ../bin/dcustmgm.c:285
msgid "Parameter File (*.xtp)|*.xtp"
msgstr "Fichier de Paramètres (*.xtp)|*.xtp"
-#: ../bin/dcustmgm.c:378
+#: ../bin/dcustmgm.c:407
msgid "Manage custom designed parts"
msgstr "Gérer les matériels prototypes"
-#: ../bin/dease.c:64
+#: ../bin/dcontmgm.c:80
+msgid "Tracks"
+msgstr "Voies"
+
+#: ../bin/dcontmgm.c:167
+#, c-format
+msgid "Are you sure you want to delete the %d control element(s)"
+msgstr "Êtes-vous sûr de vouloir supprimer %d élément(s) de contrôle"
+
+#: ../bin/dcontmgm.c:172
+msgid "Control Elements"
+msgstr "Éléments de contrôle"
+
+#: ../bin/dcontmgm.c:308
+msgid "Manage Layout Control Elements"
+msgstr "Gérer les contrôles du plan"
+
+#: ../bin/dease.c:68
msgid "Sharp"
msgstr "Etroit"
-#: ../bin/dease.c:64
+#: ../bin/dease.c:68
msgid "Broad"
msgstr "Large"
-#: ../bin/dease.c:64
+#: ../bin/dease.c:68
msgid "Cornu"
msgstr "Cornu"
-#: ../bin/dease.c:72
+#: ../bin/dease.c:76
msgid "Value"
msgstr "Valeur"
-#: ../bin/dease.c:73 ../bin/tease.c:515
+#: ../bin/dease.c:77 ../bin/tease.c:530
msgid "R"
msgstr "R"
-#: ../bin/dease.c:75 ../bin/tease.c:516
+#: ../bin/dease.c:79 ../bin/tease.c:531
msgid "L"
msgstr "L"
-#: ../bin/dease.c:240
+#: ../bin/dease.c:250
msgid "Easement"
msgstr "Courbe de transition"
@@ -4478,7 +4488,7 @@ msgstr "Courbe de transition"
msgid "Prices"
msgstr "Prix"
-#: ../bin/denum.c:45 ../bin/denum.c:138
+#: ../bin/denum.c:45 ../bin/denum.c:139
msgid "Indexes"
msgstr "Index"
@@ -4486,15 +4496,15 @@ msgstr "Index"
msgid "Save As ..."
msgstr "Sauver sous ..."
-#: ../bin/denum.c:134 ../bin/denum.c:191 ../bin/denum.c:226
+#: ../bin/denum.c:135 ../bin/denum.c:198 ../bin/denum.c:236
msgid "Each"
msgstr "L'unité"
-#: ../bin/denum.c:150 ../bin/denum.c:151
+#: ../bin/denum.c:152 ../bin/denum.c:154
msgid "Parts List"
msgstr "Nomenclature"
-#: ../bin/denum.c:156
+#: ../bin/denum.c:160
#, c-format
msgid ""
"%s Parts List\n"
@@ -4503,232 +4513,288 @@ msgstr ""
"%s Nomenclature\n"
"\n"
-#: ../bin/denum.c:191 ../bin/denum.c:228 ../bin/denum.c:237
+#: ../bin/denum.c:199 ../bin/denum.c:238 ../bin/denum.c:248
msgid "Extended"
msgstr "L'ensemble"
-#: ../bin/denum.c:237 ../bin/denum.c:240
+#: ../bin/denum.c:247 ../bin/denum.c:251
msgid "Total"
msgstr "Total"
-#: ../bin/dlayer.c:576
+#: ../bin/dlayer.c:541
msgid "Select Layer:"
msgstr "Sélectionner le calque :"
-#: ../bin/dlayer.c:582
+#: ../bin/dlayer.c:547
msgid "Use Color"
msgstr "Utiliser la couleur"
-#: ../bin/dlayer.c:584
+#: ../bin/dlayer.c:549
msgid "Visible"
msgstr "Visible"
-#: ../bin/dlayer.c:586
+#: ../bin/dlayer.c:551
msgid "Frozen"
msgstr "Gelé"
-#: ../bin/dlayer.c:588
+#: ../bin/dlayer.c:553
msgid "On Map"
msgstr "Sur la carte"
-#: ../bin/dlayer.c:590
+#: ../bin/dlayer.c:555
msgid "Module"
msgstr "Module"
-#: ../bin/dlayer.c:592
+#: ../bin/dlayer.c:557
msgid "No Button"
msgstr "Aucun bouton"
-#: ../bin/dlayer.c:594
+#: ../bin/dlayer.c:559
+#, fuzzy
+msgid "Inherit"
+msgstr "Inversé"
+
+#: ../bin/dlayer.c:563 ../bin/layout.c:664
+msgid " Gauge"
+msgstr " Ecartement"
+
+#: ../bin/dlayer.c:565 ../bin/layout.c:666
+msgid "Min Track Radius"
+msgstr "Rayon de voie min"
+
+#: ../bin/dlayer.c:567 ../bin/layout.c:667
+#, fuzzy
+msgid " Max Track Grade (%)"
+msgstr " Pente maximale de la voie (%)"
+
+#: ../bin/dlayer.c:569
+#, fuzzy
+msgid "Tie Length"
+msgstr "Longueur initiale"
+
+#: ../bin/dlayer.c:571
+#, fuzzy
+msgid " Width"
+msgstr " Largeur"
+
+#: ../bin/dlayer.c:573
+#, fuzzy
+msgid " Spacing"
+msgstr "Espacement"
+
+#: ../bin/dlayer.c:575
+#, fuzzy
+msgid "Layer Actions"
+msgstr "Boutons de calques"
+
+#: ../bin/dlayer.c:577
+#, fuzzy
+msgid "Add Layer"
+msgstr "Calque"
+
+#: ../bin/dlayer.c:579
+#, fuzzy
+msgid "Delete Layer"
+msgstr "Sélectionner le calque :"
+
+#: ../bin/dlayer.c:581
+#, fuzzy
+msgid "Default Values"
+msgstr "Defauts"
+
+#: ../bin/dlayer.c:582
+msgid "Number of Layer Buttons"
+msgstr "Nombre de boutons de calques"
+
+#: ../bin/dlayer.c:584
msgid "Linked Layers"
msgstr "Calques associés"
-#: ../bin/dlayer.c:596
+#: ../bin/dlayer.c:586
msgid "Settings when Current"
msgstr "Réglages en cours"
-#: ../bin/dlayer.c:598
+#: ../bin/dlayer.c:588
msgid "Object Count:"
msgstr "Nombre d'objets :"
-#: ../bin/dlayer.c:599
+#: ../bin/dlayer.c:589
msgid "All Layer Preferences"
msgstr "Préférences pour tous les calques"
-#: ../bin/dlayer.c:601 ../bin/macro.c:1404
+#: ../bin/dlayer.c:591 ../bin/macro.c:1431
msgid "Save"
msgstr "Sauver"
-#: ../bin/dlayer.c:602
+#: ../bin/dlayer.c:592
msgid "Defaults"
msgstr "Defauts"
-#: ../bin/dlayer.c:603
-msgid "Number of Layer Buttons"
-msgstr "Nombre de boutons de calques"
-
-#: ../bin/dlayer.c:711 ../bin/dlayer.c:1286 ../bin/dlayer.c:1303
-#: ../bin/dlayer.c:1374
+#: ../bin/dlayer.c:710 ../bin/dlayer.c:1563 ../bin/dlayer.c:1581
+#: ../bin/dlayer.c:1651
msgid "Main"
msgstr "Principal"
-#: ../bin/dlayer.c:842 ../bin/dlayer.c:1203 ../bin/dlayer.c:1306
-#: ../bin/dlayer.c:1376 ../bin/dlayer.c:1778
+#: ../bin/dlayer.c:842
+msgid "Layer must not have any objects in it."
+msgstr ""
+
+#: ../bin/dlayer.c:1007 ../bin/dlayer.c:1452 ../bin/dlayer.c:1584
+#: ../bin/dlayer.c:1653
msgid "Show/Hide Layer"
msgstr "Afficher/masquer le calque"
-#: ../bin/dlayer.c:1546
+#: ../bin/dlayer.c:2071
msgid "Layers"
msgstr "Calques"
-#: ../bin/dlayer.c:1765 ../bin/misc.c:2465
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:17
+#: ../bin/dlayer.c:2334 ../bin/menu.c:960
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:17
msgid "Show/Hide Background"
msgstr "Montrer/cacher l'image d'arrière plan"
-#: ../bin/doption.c:90
+#: ../bin/doption.c:92
msgid "Auto Pan"
msgstr "Panoramique auto"
-#: ../bin/doption.c:92
+#: ../bin/doption.c:94
msgid "All"
msgstr "Tout"
-#: ../bin/doption.c:93
+#: ../bin/doption.c:95
msgid "Thick"
msgstr "Épais"
-#: ../bin/doption.c:93
+#: ../bin/doption.c:95
msgid "Exception"
msgstr "Exception"
-#: ../bin/doption.c:94
+#: ../bin/doption.c:96
msgid "Outline"
msgstr "Contour"
-#: ../bin/doption.c:95
+#: ../bin/doption.c:97
msgid "Off"
msgstr "De"
-#: ../bin/doption.c:95
+#: ../bin/doption.c:97
msgid "On"
msgstr "On"
-#: ../bin/doption.c:96
+#: ../bin/doption.c:98
msgid "Track Descriptions"
msgstr "Descriptions de voies"
-#: ../bin/doption.c:96
+#: ../bin/doption.c:98
msgid "Lengths"
msgstr "Longueurs"
-#: ../bin/doption.c:96
+#: ../bin/doption.c:98
msgid "EndPt Elevations"
msgstr "Elévations des bouts de voies"
-#: ../bin/doption.c:96
+#: ../bin/doption.c:98
msgid "Track Elevations"
msgstr "Elévations de voies"
-#: ../bin/doption.c:96
+#: ../bin/doption.c:98
msgid "Cars"
msgstr "Véhicules"
-#: ../bin/doption.c:97 ../bin/doption.c:98
+#: ../bin/doption.c:99 ../bin/doption.c:100
msgid "Descr"
msgstr "Descr"
-#: ../bin/doption.c:98
+#: ../bin/doption.c:100
msgid "Manuf"
msgstr "Fabric"
-#: ../bin/doption.c:99 ../bin/doption.c:100
+#: ../bin/doption.c:101 ../bin/doption.c:102
msgid "Object"
msgstr "Objet"
-#: ../bin/doption.c:101
+#: ../bin/doption.c:103
msgid "Live Map"
msgstr "Carte en direct"
-#: ../bin/doption.c:102
+#: ../bin/doption.c:104
msgid "Hide Trains On Hidden Track"
msgstr "Masquer les trains sur voie cachée"
-#: ../bin/doption.c:103
+#: ../bin/doption.c:105
msgid "Constrain Drawing Area to Room boundaries"
msgstr "Limiter la zone de dessin aux limites de la pièce"
-#: ../bin/doption.c:104
+#: ../bin/doption.c:106
msgid "Don't Hide System Cursor when program cursor is active"
msgstr ""
-"Ne pas cacher le curseur du système lorsque le curseur du programme est "
-"actif"
+"Ne pas cacher le curseur du système lorsque le curseur du programme est actif"
-#: ../bin/doption.c:111
+#: ../bin/doption.c:110
msgid "Color Track"
msgstr "Couleur de la voie"
-#: ../bin/doption.c:112
+#: ../bin/doption.c:111
msgid "Color Draw"
msgstr "Couleur du dessin"
-#: ../bin/doption.c:113
+#: ../bin/doption.c:112
msgid "Draw Tunnel"
msgstr "Dessin des tunnels"
-#: ../bin/doption.c:114
+#: ../bin/doption.c:113
msgid "Draw EndPts"
msgstr "Dessin des bouts de voie"
-#: ../bin/doption.c:115
+#: ../bin/doption.c:114
msgid "Draw Unconnected EndPts"
msgstr "Dessin des voies non connectées"
-#: ../bin/doption.c:116
+#: ../bin/doption.c:115
msgid "Draw Ties"
msgstr "Dessin des traverses"
-#: ../bin/doption.c:117
+#: ../bin/doption.c:116
msgid "Draw Centers"
msgstr "Dessin des centres"
-#: ../bin/doption.c:118
+#: ../bin/doption.c:117
msgid "Two Rail Scale"
msgstr "Échelle pour 2 voies"
-#: ../bin/doption.c:119
+#: ../bin/doption.c:118
msgid "Map Scale"
msgstr "Échelle de la carte de navigation"
-#: ../bin/doption.c:125
+#: ../bin/doption.c:124
msgid "Label Enable"
msgstr "Étiquettes activées"
-#: ../bin/doption.c:126
+#: ../bin/doption.c:125
msgid "Label Scale"
msgstr "Échelle d'étiquette"
-#: ../bin/doption.c:127
+#: ../bin/doption.c:126
msgid "Label Font Size"
msgstr "Taille de police des étiquettes"
-#: ../bin/doption.c:128
+#: ../bin/doption.c:127
msgid "Hot Bar Labels"
msgstr "Etiquettes barre rapide"
-#: ../bin/doption.c:129
+#: ../bin/doption.c:128
msgid "Layout Labels"
msgstr "Etiquettes de calques"
-#: ../bin/doption.c:130
+#: ../bin/doption.c:129
msgid "List Labels"
msgstr "Liste des étiquettes"
-#: ../bin/doption.c:133
+#: ../bin/doption.c:132
msgid "Car Labels"
msgstr "Etiquettes des véhicules"
-#: ../bin/doption.c:134
+#: ../bin/doption.c:133
msgid "Train Update Delay"
msgstr "Délai de mise à jour du train"
@@ -4736,334 +4802,344 @@ msgstr "Délai de mise à jour du train"
msgid "Turning off AutoSave"
msgstr "Désactiver la sauvegarde auto"
-#: ../bin/doption.c:186
+#: ../bin/doption.c:187
msgid "Turning on CheckPointing"
msgstr "Activer les points de contrôles"
-#: ../bin/doption.c:200
+#: ../bin/doption.c:201
msgid "Display Options"
msgstr "Options d'affichage"
-#: ../bin/doption.c:201
+#: ../bin/doption.c:203
msgid "Proto"
msgstr "Proto"
-#: ../bin/doption.c:202
+#: ../bin/doption.c:205
msgid "Proto/Manuf"
msgstr "Proto/Fabric"
-#: ../bin/doption.c:203
+#: ../bin/doption.c:208
msgid "Proto/Manuf/Part Number"
msgstr "Proto/Fabric/N° de référence"
-#: ../bin/doption.c:204
+#: ../bin/doption.c:210
msgid "Proto/Manuf/Partno/Item"
msgstr "Proto/Fabric/N° de référence/Objet"
-#: ../bin/doption.c:205
+#: ../bin/doption.c:211
msgid "Manuf/Proto"
msgstr "Fabricant/Proto"
-#: ../bin/doption.c:206
+#: ../bin/doption.c:214
msgid "Manuf/Proto/Part Number"
msgstr "Fabricant/Proto/N° de référence"
-#: ../bin/doption.c:207
+#: ../bin/doption.c:216
msgid "Manuf/Proto/Partno/Item"
msgstr "Fabricant/Proto/N° de référence/Objet"
-#: ../bin/doption.c:237
+#: ../bin/doption.c:246
msgid "Single item selected, +Ctrl Add to selection"
msgstr "Élément unique sélectionné, +Ctrl Ajouter à la sélection"
-#: ../bin/doption.c:237
+#: ../bin/doption.c:246
msgid "Add to selection, +Ctrl Single item selected"
msgstr "Ajouter à la sélection, +Ctrl Élément unique sélectionné"
-#: ../bin/doption.c:238
+#: ../bin/doption.c:247
msgid "Deselect all on select nothing"
msgstr "Désélectionner tout / ne rien sélectionner"
-#: ../bin/doption.c:243
+#: ../bin/doption.c:252
msgid "Normal: Command List, Shift: Command Options"
msgstr "Normal : Liste de cde, Maj. : Options de cde"
-#: ../bin/doption.c:243
+#: ../bin/doption.c:252
msgid "Normal: Command Options, Shift: Command List"
msgstr "Normal : Options de cde, Maj.: Liste de cde"
-#: ../bin/doption.c:246
+#: ../bin/doption.c:255
msgid "Default Command"
msgstr "Commande par défaut"
-#: ../bin/doption.c:248
+#: ../bin/doption.c:257
msgid "Hide Selection Window"
msgstr "Masquer la fenêtre de sélection"
-#: ../bin/doption.c:250
+#: ../bin/doption.c:259
msgid "Right Click"
msgstr "Clic droit"
-#: ../bin/doption.c:251
+#: ../bin/doption.c:260
msgid "Select Mode"
msgstr "Mode sélection"
-#: ../bin/doption.c:276
+#: ../bin/doption.c:286
msgid "Command Options"
msgstr "Options de commande"
-#: ../bin/doption.c:299
+#: ../bin/doption.c:310
msgid "16 px"
msgstr "16 px"
-#: ../bin/doption.c:299
+#: ../bin/doption.c:310
msgid "24 px"
msgstr "24 px"
-#: ../bin/doption.c:299
+#: ../bin/doption.c:310
msgid "32 px"
msgstr "32 px"
-#: ../bin/doption.c:300
+#: ../bin/doption.c:311
msgid "English"
msgstr "Anglais"
-#: ../bin/doption.c:300
+#: ../bin/doption.c:311
msgid "Metric"
msgstr "Métrique"
-#: ../bin/doption.c:301
+#: ../bin/doption.c:312
msgid "Polar"
msgstr "Polaire"
-#: ../bin/doption.c:301
+#: ../bin/doption.c:312
msgid "Cartesian"
msgstr "Cartésien"
-#: ../bin/doption.c:302
+#: ../bin/doption.c:313
msgid "Balloon Help"
msgstr "Bulle d'aide"
-#: ../bin/doption.c:303
+#: ../bin/doption.c:314
msgid "Show FlexTrack in HotBar"
msgstr "Afficher FlexTrack dans la barre rapide"
-#: ../bin/doption.c:304
+#: ../bin/doption.c:315
msgid "Load Last Layout"
msgstr "Charger le dernier plan"
-#: ../bin/doption.c:304
+#: ../bin/doption.c:315
msgid "Start New Layout"
msgstr "Commencer un nouveau plan"
-#: ../bin/doption.c:307
+#: ../bin/doption.c:318
msgid "Icon Size"
msgstr "Taille de l'icône"
-#: ../bin/doption.c:308
+#: ../bin/doption.c:319
msgid "Angles"
msgstr "Angles"
-#: ../bin/doption.c:309
+#: ../bin/doption.c:321
msgid "Units"
msgstr "Unités"
-#: ../bin/doption.c:311
+#: ../bin/doption.c:323
msgid "Length Format"
msgstr "Format de longueur"
-#: ../bin/doption.c:312
+#: ../bin/doption.c:324
msgid "Min Track Length"
msgstr "Longueur de voie min"
-#: ../bin/doption.c:313
+#: ../bin/doption.c:325
msgid "Connection Distance"
msgstr "Distance de connexion"
-#: ../bin/doption.c:314
+#: ../bin/doption.c:326
msgid "Connection Angle"
msgstr "Angle de connexion"
-#: ../bin/doption.c:315
+#: ../bin/doption.c:327
msgid "Turntable Angle"
msgstr "Angle de pont tournant"
-#: ../bin/doption.c:316
+#: ../bin/doption.c:328
msgid "Max Coupling Speed"
msgstr "Vitesse maximale de couplage"
-#: ../bin/doption.c:319
+#: ../bin/doption.c:331
msgid "Drag Distance"
msgstr "Distance de glissé du curseur"
-#: ../bin/doption.c:320
+#: ../bin/doption.c:332
msgid "Drag Timeout"
msgstr "Ajuster le délai d'attente"
-#: ../bin/doption.c:321
+#: ../bin/doption.c:333
msgid "Min Grid Spacing"
msgstr "Pas min. de la grille"
-#: ../bin/doption.c:323
+#: ../bin/doption.c:335
msgid "Check Point Frequency"
msgstr "Fréquence des points de contrôle"
-#: ../bin/doption.c:325
+#: ../bin/doption.c:337
msgid "Autosave Checkpoint Frequency"
msgstr "Fréquence de l'enregistrement automatique des points de contrôle"
-#: ../bin/doption.c:326
+#: ../bin/doption.c:338
msgid "On Program Startup"
msgstr "Au démarrage du programme"
-#: ../bin/doption.c:336 ../bin/doption.c:340 ../bin/doption.c:357
+#: ../bin/doption.c:348 ../bin/doption.c:352 ../bin/doption.c:370
msgid "999.999"
msgstr "999.999"
-#: ../bin/doption.c:337
+#: ../bin/doption.c:349
msgid "999.999999"
msgstr "999.999999"
-#: ../bin/doption.c:338
+#: ../bin/doption.c:350
msgid "999.99999"
msgstr "999.99999"
-#: ../bin/doption.c:339
+#: ../bin/doption.c:351
msgid "999.9999"
msgstr "999.9999"
-#: ../bin/doption.c:341 ../bin/doption.c:358
+#: ../bin/doption.c:353 ../bin/doption.c:371
msgid "999.99"
msgstr "999.99"
-#: ../bin/doption.c:342 ../bin/doption.c:359
+#: ../bin/doption.c:354 ../bin/doption.c:372
msgid "999.9"
msgstr "999.9"
-#: ../bin/doption.c:343
+#: ../bin/doption.c:355
msgid "999 7/8"
msgstr "999 7/8"
-#: ../bin/doption.c:344
+#: ../bin/doption.c:356
msgid "999 63/64"
msgstr "999 63/64"
-#: ../bin/doption.c:345
+#: ../bin/doption.c:357
msgid "999' 11.999\""
msgstr "999' 11.999\""
-#: ../bin/doption.c:346
+#: ../bin/doption.c:358
msgid "999' 11.99\""
msgstr "999' 11.99\""
-#: ../bin/doption.c:347
+#: ../bin/doption.c:359
msgid "999' 11.9\""
msgstr "999' 11.9\""
-#: ../bin/doption.c:348
+#: ../bin/doption.c:360
msgid "999' 11 7/8\""
msgstr "999' 11 7/8\""
-#: ../bin/doption.c:349
+#: ../bin/doption.c:361
msgid "999' 11 63/64\""
msgstr "999' 11 63/64\""
-#: ../bin/doption.c:350
+#: ../bin/doption.c:362
msgid "999ft 11.999in"
msgstr "999ft 11.999in"
-#: ../bin/doption.c:351
+#: ../bin/doption.c:363
msgid "999ft 11.99in"
msgstr "999ft 11.99in"
-#: ../bin/doption.c:352
+#: ../bin/doption.c:364
msgid "999ft 11.9in"
msgstr "999ft 11.9in"
-#: ../bin/doption.c:353
+#: ../bin/doption.c:365
msgid "999ft 11 7/8in"
msgstr "999ft 11 7/8in"
-#: ../bin/doption.c:354
+#: ../bin/doption.c:366
msgid "999ft 11 63/64in"
msgstr "999ft 11 63/64in"
-#: ../bin/doption.c:360
+#: ../bin/doption.c:373
msgid "999.999mm"
msgstr "999.999mm"
-#: ../bin/doption.c:361
+#: ../bin/doption.c:374
msgid "999.99mm"
msgstr "999.99mm"
-#: ../bin/doption.c:362
+#: ../bin/doption.c:375
msgid "999.9mm"
msgstr "999.9mm"
-#: ../bin/doption.c:363
+#: ../bin/doption.c:376
msgid "999.999cm"
msgstr "999.999cm"
-#: ../bin/doption.c:364
+#: ../bin/doption.c:377
msgid "999.99cm"
msgstr "999.99cm"
-#: ../bin/doption.c:365
+#: ../bin/doption.c:378
msgid "999.9cm"
msgstr "999.9cm"
-#: ../bin/doption.c:366
+#: ../bin/doption.c:379
msgid "999.999m"
msgstr "999.999m"
-#: ../bin/doption.c:367
+#: ../bin/doption.c:380
msgid "999.99m"
msgstr "999.99m"
-#: ../bin/doption.c:368
+#: ../bin/doption.c:381
msgid "999.9m"
msgstr "999.9m"
-#: ../bin/doption.c:497
+#: ../bin/doption.c:516
msgid "Preferences"
msgstr "Préférences"
-#: ../bin/doption.c:536
+#: ../bin/doption.c:560
msgid "Marker"
msgstr "Marqueur"
-#: ../bin/doption.c:537
+#: ../bin/doption.c:561
msgid "Border"
msgstr "Bordure"
-#: ../bin/doption.c:538
+#: ../bin/doption.c:562
msgid "Primary Axis"
msgstr "Axe primaire"
-#: ../bin/doption.c:539
+#: ../bin/doption.c:563
msgid "Secondary Axis"
msgstr "Axe secondaire"
-#: ../bin/doption.c:540
+#: ../bin/doption.c:564
msgid "Normal Track"
msgstr "Voie normale"
-#: ../bin/doption.c:541
+#: ../bin/doption.c:565
msgid "Selected Track"
msgstr "Voie sélectionnée"
-#: ../bin/doption.c:542
+#: ../bin/doption.c:566
msgid "Profile Path"
msgstr "Profil de voie"
-#: ../bin/doption.c:543
+#: ../bin/doption.c:567
msgid "Exception Track"
msgstr "Voie non conforme"
-#: ../bin/doption.c:544
+#: ../bin/doption.c:568
msgid "Track Ties"
msgstr "Traverses de voies"
+#: ../bin/doption.c:569
+#, fuzzy
+msgid "Bridge Base"
+msgstr "Raccorder les voies "
+
+#: ../bin/doption.c:570
+#, fuzzy
+msgid "Track Roadbed"
+msgstr "Rayon de voie min"
+
#: ../bin/dpricels.c:42
msgid "Price"
msgstr "Prix"
@@ -5076,15 +5152,15 @@ msgstr "Voie FLEX"
msgid "costs"
msgstr "coûts"
-#: ../bin/dpricels.c:151
+#: ../bin/dpricels.c:166
msgid "Price List"
msgstr "Liste de prix"
-#: ../bin/dprmfile.c:66 ../bin/paramfilesearch_ui.c:51
+#: ../bin/dprmfile.c:66 ../bin/paramfilesearch_ui.c:50
msgid "Show File Names"
msgstr "Montrer les noms de fichiers"
-#: ../bin/dprmfile.c:75 ../bin/paramfilesearch_ui.c:78
+#: ../bin/dprmfile.c:75 ../bin/paramfilesearch_ui.c:77
msgid "Select all"
msgstr "Tt sélectionner"
@@ -5100,67 +5176,66 @@ msgstr "Bibliothèque..."
msgid "Browse..."
msgstr "Parcourir..."
-#: ../bin/dprmfile.c:324
+#: ../bin/dprmfile.c:328
#, c-format
msgid "%d parameter files reloaded."
msgstr "%d fichiers de paramètres rechargés."
-#: ../bin/dprmfile.c:326
+#: ../bin/dprmfile.c:330
msgid "One parameter file reloaded."
msgstr "Un fichier de paramètres rechargé."
-#: ../bin/dprmfile.c:427
+#: ../bin/dprmfile.c:431
msgid "Parameter Files"
msgstr "Fichiers de paramètres"
-#: ../bin/dprmfile.c:430
+#: ../bin/dprmfile.c:434
msgid "Load Parameters"
msgstr "Chargers des paramètres d'objets"
-#: ../bin/dprmfile.c:430
+#: ../bin/dprmfile.c:434
msgid "Parameter files (*.xtp)|*.xtp"
msgstr "Fichier de paramètres (*.xtp)|*.xtp"
-#: ../bin/draw.c:2182
+#: ../bin/draw.c:2352
msgid "Macro Zoom Mode"
msgstr "Mode zoom macro"
-#: ../bin/draw.c:2189
+#: ../bin/draw.c:2360
msgid "Scale 1:1 - Use Ctrl+ to go to Macro Zoom Mode"
msgstr "Échelle 1:1 - Utilisez Ctrl+Pg.Suiv pour passer en mode Zoom macro"
-#: ../bin/draw.c:2193
+#: ../bin/draw.c:2365
msgid "Preset Zoom In Value selected. Shift+Ctrl+PageDwn to reset value"
msgstr ""
"Facteur de zoom avant sélectionné. Maj + Ctrl + Pg.Suiv pour réinitialiser "
"la valeur"
-#: ../bin/draw.c:2197
+#: ../bin/draw.c:2369
#, c-format
msgid "Zoom In Program Value %ld:1, Shift+PageDwn to use"
-msgstr ""
-"Zoom programmé Valeur plus grande %ld : 1, à utiliser avec Maj+Pg.Suiv"
+msgstr "Zoom programmé Valeur plus grande %ld : 1, à utiliser avec Maj+Pg.Suiv"
-#: ../bin/draw.c:2273
+#: ../bin/draw.c:2450
msgid "At Maximum Zoom Out"
msgstr "Au zoom arrière maximum"
-#: ../bin/draw.c:2278
+#: ../bin/draw.c:2457
msgid "Preset Zoom Out Value selected. Shift+Ctrl+PageUp to reset value"
msgstr ""
-"Facteur de zoom arrière sélectionné. Maj + Ctrl + Pg.Suiv pour réinitialiser"
-" la valeur"
+"Facteur de zoom arrière sélectionné. Maj + Ctrl + Pg.Suiv pour réinitialiser "
+"la valeur"
-#: ../bin/draw.c:2282
+#: ../bin/draw.c:2461
#, c-format
msgid "Zoom Out Program Value %ld:1 set, Shift+PageUp to use"
msgstr "Zoom programmé Valeur supérieure %ld : 1, à utiliser avec Maj+Pg.Préc"
-#: ../bin/draw.c:2993
+#: ../bin/draw.c:3281
msgid "Map"
msgstr "Carte de navigation"
-#: ../bin/draw.c:3039
+#: ../bin/draw.c:3323
msgid ""
"Left-Drag to pan, Ctrl+Left-Drag to zoom, 0 to set origin to zero, 1-9 to "
"zoom#, e to set to extents"
@@ -5169,189 +5244,180 @@ msgstr ""
"zoomer, 0 pour définir l'origine à 0.0, 1-9 pour le niveau de zoom#, e pour "
"définir la taille"
-#: ../bin/draw.c:3046
+#: ../bin/draw.c:3330
msgid "Pan Mode - drag point to new position"
msgstr ""
"Sélectionner une section - faites glisser le point vers la nouvelle position"
-#: ../bin/draw.c:3053
+#: ../bin/draw.c:3337
msgid "Zoom Mode - drag area to zoom"
msgstr "Mode Zoom - faites glisser la zone pour zoomer"
-#: ../bin/draw.c:3079
+#: ../bin/draw.c:3365
msgid "Can't move any further in that direction"
msgstr "Je ne peux plus avancer dans cette direction"
-#: ../bin/draw.c:3081
-msgid ""
-"Left click to pan, right click to zoom, 'o' for origin, 'e' for extents"
+#: ../bin/draw.c:3368
+msgid "Left click to pan, right click to zoom, 'o' for origin, 'e' for extents"
msgstr ""
"Clic gauche pour faire un panoramique, clic droit pour zoomer, 'o' pour "
"origine, 'e' pour étendue"
-#: ../bin/draw.c:3118
+#: ../bin/draw.c:3407
msgid ""
"Left Drag to Pan, +CTRL to Zoom, 0 to set Origin to 0,0, 1-9 to Zoom#, e to "
"set to Extent"
msgstr ""
-"Faites glisser à gauche pour un recadrage, +Ctrl pour zoomer, 0 pour définir"
-" le point de départ sur 0.0, 1-9 pour le niveau de zoom, e pour définir la "
+"Faites glisser à gauche pour un recadrage, +Ctrl pour zoomer, 0 pour définir "
+"le point de départ sur 0.0, 1-9 pour le niveau de zoom, e pour définir la "
"taille"
-#: ../bin/draw.c:3196
+#: ../bin/draw.c:3486
msgid "Pan/Zoom"
msgstr "Pan./Zoom"
-#: ../bin/draw.c:3207
+#: ../bin/draw.c:3502
msgid "Zoom to 1:1 - '1'"
msgstr "Zoom sur 1:1 - '1'"
-#: ../bin/draw.c:3208
+#: ../bin/draw.c:3504
msgid "Zoom to 1:2 - '2'"
msgstr "Zoom sur 1:2 - '2'"
-#: ../bin/draw.c:3209
+#: ../bin/draw.c:3506
msgid "Zoom to 1:3 - '3'"
msgstr "Zoom sur 1:3 - '3'"
-#: ../bin/draw.c:3210
+#: ../bin/draw.c:3508
msgid "Zoom to 1:4 - '4'"
msgstr "Zoom sur 1:4 - '4'"
-#: ../bin/draw.c:3211
+#: ../bin/draw.c:3510
msgid "Zoom to 1:5 - '5'"
msgstr "Zoom sur 1:5 - '5'"
-#: ../bin/draw.c:3212
+#: ../bin/draw.c:3512
msgid "Zoom to 1:6 - '6'"
msgstr "Zoom sur 1:6 - '6'"
-#: ../bin/draw.c:3213
+#: ../bin/draw.c:3514
msgid "Zoom to 1:7 - '7'"
msgstr "Zoom sur 1:7 - '7'"
-#: ../bin/draw.c:3214
+#: ../bin/draw.c:3516
msgid "Zoom to 1:8 - '8'"
msgstr "Zoom sur 1:8 - '8'"
-#: ../bin/draw.c:3215
+#: ../bin/draw.c:3518
msgid "Zoom to 1:9 - '9'"
msgstr "Zoom sur 1:9 - '9'"
-#: ../bin/draw.c:3219
+#: ../bin/draw.c:3524
msgid "Pan center here - 'c'"
msgstr "Centre du panoramique ici - 'c'"
-#: ../bin/drawgeom.c:70 ../bin/drawgeom.c:86
+#: ../bin/drawgeom.c:72 ../bin/drawgeom.c:89
msgid "Create Lines"
msgstr "Créer des lignes"
-#: ../bin/drawgeom.c:287
-msgid "+Alt for Magnetic Snap"
-msgstr "+Alt pour l'accrochage magnétique"
-
-#: ../bin/drawgeom.c:289
-msgid "+Alt to inhibit Magnetic Snap"
-msgstr "+ Alt pour inhiber l'accrochage magnétique"
-
-#: ../bin/drawgeom.c:412
+#: ../bin/drawgeom.c:443
msgid "Drag next point, +Alt reverse Magnetic Snap or +Ctrl lock to 90 deg"
msgstr ""
"Faites glisser le point suivant, +Alt inverse l'accrochage magnétique ou "
"+Ctrl verrouille à 90 degrés"
-#: ../bin/drawgeom.c:423
+#: ../bin/drawgeom.c:454
msgid ""
"Drag next point, +Alt reverse Magnetic Snap, or +Ctrl to lock to 90 degrees"
msgstr ""
"Faites glisser le point suivant, +Alt pour inverser l'accrochage magnétique "
"ou +Ctrl pour verrouiller à 90 degrés"
-#: ../bin/drawgeom.c:454
+#: ../bin/drawgeom.c:487
msgid "Drag to set radius"
msgstr "Faites glisser pour définir le rayon"
-#: ../bin/drawgeom.c:468
+#: ../bin/drawgeom.c:501
msgid "Drag set box size"
msgstr "Faites glisser pour définir la taille du rectangle"
-#: ../bin/drawgeom.c:509
+#: ../bin/drawgeom.c:543
msgid "+Alt - reverse Magnetic Snap or +Ctrl - lock to 90 deg"
msgstr ""
"+Alt - inverse l'accrochage magnétique ou +Ctrl - verrouille à 90 degrés"
-#: ../bin/drawgeom.c:580 ../bin/drawgeom.c:637
+#: ../bin/drawgeom.c:625 ../bin/drawgeom.c:691
#, c-format
msgid "Length = %s, Angle = %0.2f"
msgstr "Longueur = %s, Angle = %0.2f"
-#: ../bin/drawgeom.c:658
+#: ../bin/drawgeom.c:713
#, c-format
msgid "Straight Line: Length=%s Angle=%0.3f"
msgstr "Ligne droite : Longueur=%s Angle=%0.3f"
-#: ../bin/drawgeom.c:680
+#: ../bin/drawgeom.c:735
#, c-format
msgid "Curved Line: Radius=%s Angle=%0.3f Length=%s"
msgstr "Ligne courbe : Rayon = %s Angle = %0.3f Longueur = %s"
-#: ../bin/drawgeom.c:703 ../bin/drawgeom.c:711
+#: ../bin/drawgeom.c:761 ../bin/drawgeom.c:769
#, c-format
msgid "Radius = %s"
msgstr "Rayon = %s"
-#: ../bin/drawgeom.c:722
+#: ../bin/drawgeom.c:780
#, c-format
msgid "Width = %s, Height = %s"
msgstr "Largeur = %s, Hauteur = %s"
-#: ../bin/drawgeom.c:783
+#: ../bin/drawgeom.c:841
msgid "Drag on Red arrows to adjust curve"
msgstr "Faites glisser les flèches rouges pour ajuster la courbe"
-#: ../bin/drawgeom.c:1207
+#: ../bin/drawgeom.c:1298
msgid "Select points or use context menu"
msgstr "Sélectionnez des points ou utilisez le menu contextuel"
-#: ../bin/drawgeom.c:1463
+#: ../bin/drawgeom.c:1567
#, c-format
msgid "Length = %s, Last angle = %0.2f"
msgstr "Longueur = %s, Dernier angle = %0.2f"
-#: ../bin/drawgeom.c:1623
+#: ../bin/drawgeom.c:1736
msgid "Point Deleted"
msgstr "Point supprimé"
-#: ../bin/drawgeom.c:2048
+#: ../bin/drawgeom.c:2194
msgid "Not close to end of line"
msgstr "Aucun point de fin à proximité"
-#: ../bin/drawgeom.c:2104
+#: ../bin/drawgeom.c:2252
msgid "Not close to ends or middle of mine, reselect"
msgstr "Pas à une extrémité ou au milieu de la voie, resélectionnez"
-#: ../bin/drawgeom.c:2153 ../bin/drawgeom.c:2389
+#: ../bin/drawgeom.c:2303 ../bin/drawgeom.c:2550
msgid "Drag to Move Corner Point"
msgstr "Faites glisser pour déplacer le sommet"
-#: ../bin/drawgeom.c:2160
+#: ../bin/drawgeom.c:2311
msgid "Drag to Move Edge "
msgstr "Faites glisser pour déplacer le bord "
-#: ../bin/drawgeom.c:2234
+#: ../bin/drawgeom.c:2383
#, c-format
msgid "Length = %0.3f Angle = %0.3f"
msgstr "Longueur = %0.3f angle = %0.3f"
-#: ../bin/drawgeom.c:2384
+#: ../bin/drawgeom.c:2544
msgid "Drag to Move Edge"
msgstr "Faites glisser pour déplacer le bord"
-#: ../bin/dxfoutput.c:230
+#: ../bin/dxfoutput.c:244
msgid "Export to DXF"
msgstr "Exporter en DXF"
-#: ../bin/fileio.c:214
+#: ../bin/fileio.c:223
msgid ""
"\n"
"Do you want to continue?"
@@ -5359,1160 +5425,1132 @@ msgstr ""
"\n"
"Voulez-vous continuer?"
-#: ../bin/fileio.c:580
+#: ../bin/fileio.c:595
#, c-format
msgid "putTitle: title too long: %s"
msgstr "poser le titre : titre trop long : %s"
-#: ../bin/fileio.c:610
+#: ../bin/fileio.c:627
msgid "Unnamed Trackplan"
msgstr "Plan de voie sans nom"
-#: ../bin/fileio.c:611
+#: ../bin/fileio.c:628
msgid " (R/O)"
msgstr " (R/O)"
-#: ../bin/fileio.c:751
+#: ../bin/fileio.c:779
msgid "Unknown layout file object - skip until next good object?"
msgstr "Objet inconnu de fichier de plan - passer au prochain bon objet ?"
-#: ../bin/fileio.c:803 ../bin/fileio.c:987
+#: ../bin/fileio.c:835 ../bin/fileio.c:1022
msgid "Track"
msgstr "Voie"
-#: ../bin/fileio.c:803
+#: ../bin/fileio.c:836
msgid "Not Found"
msgstr "Pas trouvé"
-#: ../bin/fileio.c:1168
+#: ../bin/fileio.c:1265
msgid "AutoSave Tracks As"
msgstr "Sauvegarde automatique des voies ferrées sous"
-#: ../bin/fileio.c:1183
+#: ../bin/fileio.c:1280
msgid "Save Tracks"
msgstr "Sauver le réseau"
-#: ../bin/fileio.c:1200
+#: ../bin/fileio.c:1297
msgid "Save Tracks As"
msgstr "Enregistrer les voies sous"
-#: ../bin/fileio.c:1212
+#: ../bin/fileio.c:1309
msgid "Open Tracks"
msgstr "Ouvrir un réseau"
-#: ../bin/fileio.c:1227
+#: ../bin/fileio.c:1323
msgid "Example Tracks"
msgstr "Exemples de voies"
-#: ../bin/fileio.c:1435
+#: ../bin/fileio.c:1400
+msgid "File AutoSaved"
+msgstr "Fichier enregistré automatiquement"
+
+#: ../bin/fileio.c:1575
#, c-format
msgid "Module - %s"
msgstr "Module - %s"
-#: ../bin/fileio.c:1440 ../bin/fileio.c:1460
+#: ../bin/fileio.c:1580 ../bin/fileio.c:1601
msgid "Import Tracks"
msgstr "Importer des voies"
-#: ../bin/fileio.c:1521
+#: ../bin/fileio.c:1601
+#, fuzzy
+msgid "Import Module"
+msgstr "Importation d'un &Module"
+
+#: ../bin/fileio.c:1659
msgid "Export Tracks"
msgstr "Exporter les voies"
-#: ../bin/fileio.c:1542
+#: ../bin/fileio.c:1680
msgid "Clipboard"
msgstr "Presse-papiers"
-#: ../bin/filenoteui.c:51 ../bin/linknoteui.c:45 ../bin/textnoteui.c:37
+#: ../bin/filenoteui.c:60 ../bin/linknoteui.c:48 ../bin/textnoteui.c:41
msgid "Position X"
msgstr "Position X"
-#: ../bin/filenoteui.c:53 ../bin/linknoteui.c:47 ../bin/textnoteui.c:39
+#: ../bin/filenoteui.c:62 ../bin/linknoteui.c:50 ../bin/textnoteui.c:43
msgid "Position Y"
msgstr "Position Y"
-#: ../bin/filenoteui.c:57 ../bin/linknoteui.c:51
+#: ../bin/filenoteui.c:66 ../bin/linknoteui.c:54
msgid "Title"
msgstr "Titre"
-#: ../bin/filenoteui.c:59 ../bin/trknote.c:57
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:88
+#: ../bin/filenoteui.c:68 ../bin/trknote.c:54
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:89
msgid "Document"
msgstr "Document"
-#: ../bin/filenoteui.c:61
+#: ../bin/filenoteui.c:70
msgid "Select..."
msgstr "Sélectionner ..."
-#: ../bin/filenoteui.c:63 ../bin/linknoteui.c:55
+#: ../bin/filenoteui.c:72 ../bin/linknoteui.c:58
msgid "Open..."
msgstr "Ouvert ..."
-#: ../bin/filenoteui.c:125
+#: ../bin/filenoteui.c:134
msgid "Add Document"
msgstr "Ajouter un document"
-#: ../bin/filenoteui.c:147
+#: ../bin/filenoteui.c:157
msgid "The file doesn't exist or cannot be read!"
msgstr "Le fichier n'existe pas ou ne peut pas être lu!"
-#: ../bin/filenoteui.c:287
+#: ../bin/filenoteui.c:297
#, c-format
msgid "Document(%d) Layer=%d %-.80s [%s]"
msgstr "Document(%d) Calque=%d %-.80s [%s]"
-#: ../bin/filenoteui.c:299
-msgid "Update document"
+#: ../bin/filenoteui.c:318
+#, fuzzy
+msgid "Update Document"
msgstr "Mettre à jour le document"
-#: ../bin/filenoteui.c:313
+#: ../bin/filenoteui.c:330
msgid "Describe the file"
msgstr "Décrivez le fichier"
-#: ../bin/filenoteui.c:319
-msgid "Attach document"
+#: ../bin/filenoteui.c:338
+#, fuzzy
+msgid "Attach Document"
msgstr "Joindre un document"
#: ../bin/i18n.c:57
#, c-format
msgid "Gettext initialized (PACKAGE=%s, LOCALEDIR=%s, LC_ALL=%s).\n"
-msgstr "Obtenir le texte initialisé (PACKAGE =%s, LOCALEDIR =%s, LC_ALL =%s).\n"
+msgstr ""
+"Obtenir le texte initialisé (PACKAGE =%s, LOCALEDIR =%s, LC_ALL =%s).\n"
-#: ../bin/layout.c:404
+#: ../bin/layout.c:553 ../bin/layout.c:994
#, c-format
msgid "Unable to load Image File - %s"
msgstr "Impossible de charger le fichier image -%s"
-#: ../bin/layout.c:470
+#: ../bin/layout.c:630
msgid "Load Background"
msgstr "Charger l'arrière-plan"
-#: ../bin/layout.c:493
+#: ../bin/layout.c:657
msgid "Room Width"
msgstr "Largeur de la pièce"
-#: ../bin/layout.c:494
+#: ../bin/layout.c:658
msgid " Height"
msgstr " Hauteur"
-#: ../bin/layout.c:495
+#: ../bin/layout.c:659
msgid "Layout Title"
msgstr "Titre du plan"
-#: ../bin/layout.c:496
+#: ../bin/layout.c:660
msgid "Subtitle"
msgstr "Sous-titre"
-#: ../bin/layout.c:500
-msgid " Gauge"
-msgstr " Ecartement"
-
-#: ../bin/layout.c:502
-msgid "Min Track Radius"
-msgstr "Rayon de voie min"
-
-#: ../bin/layout.c:503
-msgid " Max Track Grade (%)"
-msgstr " Pente maximale de la voie (%)"
-
-#: ../bin/layout.c:505
+#: ../bin/layout.c:669
msgid "Background File Path"
msgstr "Chemin d'accès au fichier d'arrière-plan"
-#: ../bin/layout.c:506
+#: ../bin/layout.c:670
msgid "Browse ..."
msgstr "Parcourir ..."
-#: ../bin/layout.c:509
+#: ../bin/layout.c:673
msgid "Background PosX,Y"
msgstr "Arrière-plan, PosX,Y"
-#: ../bin/layout.c:513
+#: ../bin/layout.c:677
msgid "Background Size"
msgstr "Taille de l'arrière-plan"
-#: ../bin/layout.c:515
+#: ../bin/layout.c:679
msgid "Background Screen %"
msgstr "Niveau de noir de l'arrière-plan %"
-#: ../bin/layout.c:517
+#: ../bin/layout.c:681
msgid "Background Angle"
msgstr "Angle de l'arrière-plan"
-#: ../bin/layout.c:518
+#: ../bin/layout.c:682
msgid "Named Settings File"
msgstr "Fichier de paramètres définis"
-#: ../bin/layout.c:519
+#: ../bin/layout.c:683
msgid "Write"
msgstr "Ecrire"
-#: ../bin/layout.c:520
+#: ../bin/layout.c:684
msgid "Read"
msgstr "Lire"
-#: ../bin/layout.c:611
+#: ../bin/layout.c:818
msgid "Layout Options"
msgstr "Options du plan"
-#: ../bin/layout.c:797
+#: ../bin/layout.c:1052
msgid "Read Settings"
msgstr "Lire les paramètres"
-#: ../bin/layout.c:798 ../bin/layout.c:821
+#: ../bin/layout.c:1053 ../bin/layout.c:1087
msgid "Settings File (*.xset)|*.xset"
msgstr "Fichier des paramètres (*.xset)|*.xset"
-#: ../bin/layout.c:820
+#: ../bin/layout.c:1086
msgid "Write Settings"
msgstr "Ecrire les paramètres"
-#: ../bin/linknoteui.c:53
+#: ../bin/linknoteui.c:56
msgid "URL"
msgstr "URL"
-#: ../bin/linknoteui.c:102
-#, c-format
-msgid ""
-"The entered URL is too long. The maximum allowed length is %d. Please edit "
-"the entered value."
-msgstr ""
-"L'URL saisie est trop longue. La longueur maximale autorisée est %d. "
-"Veuillez modifier la valeur entrée."
-
-#: ../bin/linknoteui.c:105
-msgid "Re-edit"
-msgstr "Modifier à nouveau"
-
-#: ../bin/linknoteui.c:237
-msgid "Update link"
+#: ../bin/linknoteui.c:230
+#, fuzzy
+msgid "Update Webink"
msgstr "Mise à jour le lien"
-#: ../bin/linknoteui.c:255
-msgid "Create link"
+#: ../bin/linknoteui.c:248
+#, fuzzy
+msgid "Create Weblink"
msgstr "Créer un lien"
-#: ../bin/macro.c:64
+#: ../bin/macro.c:67
msgid "Message"
msgstr "Message"
-#: ../bin/macro.c:152
+#: ../bin/macro.c:166
msgid "Recording"
msgstr "Enregistrement"
-#: ../bin/macro.c:187
-#, c-format
+#: ../bin/macro.c:206 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1309
msgid "End of Playback. Hit Step to exit\n"
msgstr "Fin de la lecture. Appuyez sur \"Pas à pas\" pour quitter\n"
-#: ../bin/macro.c:251
+#: ../bin/macro.c:271
msgid "Record"
msgstr "Enregistrer"
-#: ../bin/macro.c:646
+#: ../bin/macro.c:686
msgid "Step"
msgstr "Pas à pas"
-#: ../bin/macro.c:649 ../bin/macro.c:1530
+#: ../bin/macro.c:689 ../bin/macro.c:1560
msgid "Next"
msgstr "Suivant"
-#: ../bin/macro.c:652 ../bin/misc.c:779 ../bin/track.c:1152
+#: ../bin/macro.c:692 ../bin/misc.c:696 ../bin/track.c:1104
msgid "Quit"
msgstr "Quitter"
-#: ../bin/macro.c:655 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:590
+#: ../bin/macro.c:695 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:631
msgid "Speed"
msgstr "Vitesse"
-#: ../bin/macro.c:806 ../bin/macro.c:853
+#: ../bin/macro.c:855 ../bin/track.c:1344
msgid "Regression"
msgstr "Régression"
-#: ../bin/macro.c:1017 ../bin/macro.c:1386
+#: ../bin/macro.c:1010 ../bin/macro.c:1410
msgid "Demo"
msgstr "Demo"
-#: ../bin/macro.c:1206
+#: ../bin/macro.c:1219
#, c-format
msgid "Elapsed time %lu\n"
msgstr "Temps écoulé %lu\n"
-#: ../bin/macro.c:1307
+#: ../bin/macro.c:1329
msgid "Playback"
msgstr "Lecture"
-#: ../bin/macro.c:1389
+#: ../bin/macro.c:1414
msgid "Slowest"
msgstr "Le plus lent"
-#: ../bin/macro.c:1390
+#: ../bin/macro.c:1415
msgid "Slow"
msgstr "Lent"
-#: ../bin/macro.c:1392
+#: ../bin/macro.c:1417
msgid "Fast"
msgstr "Rapide"
-#: ../bin/macro.c:1393
+#: ../bin/macro.c:1418
msgid "Faster"
msgstr "Plus rapide"
-#: ../bin/macro.c:1394
+#: ../bin/macro.c:1419
msgid "Fastest"
msgstr "Le plus rapide"
-#: ../bin/macro.c:1513
+#: ../bin/macro.c:1542
msgid "Can not find PARAMETER playback proc"
msgstr "Vous ne trouvez pas la procédure de lecture PARAMETER"
-#: ../bin/misc.c:148
-msgid "No Messages"
-msgstr "Pas de message"
-
-#: ../bin/misc.c:488 ../bin/misc.c:491
-msgid "ABORT"
-msgstr "ANNULER"
-
-#: ../bin/misc.c:490
-msgid ""
-"\n"
-"Do you want to save your layout?"
-msgstr ""
-"\n"
-"Voulez-vous enregistrer votre plan ?"
-
-#: ../bin/misc.c:572
-#, c-format
-msgid "No help for %s"
-msgstr "Aucune aide pour %s"
-
-#: ../bin/misc.c:674
-msgid ""
-"Save changes to the layout design before closing?\n"
-"\n"
-"If you don't save now, your unsaved changes will be discarded."
-msgstr ""
-"Les modifications apportées à la conception du plan doivent-elles être enregistrées avant de fermer ?\n"
-"\n"
-"Si vous n'enregistrez pas maintenant, vos modifications seront ignorées."
-
-#: ../bin/misc.c:676 ../bin/misc.c:2516
-msgid "&Save"
-msgstr "&Sauver"
-
-#: ../bin/misc.c:676 ../bin/misc.c:711
-msgid "&Cancel"
-msgstr "&Annuler"
-
-#: ../bin/misc.c:676
-msgid "&Don't Save"
-msgstr "&Ne pas enregistrer"
-
-#: ../bin/misc.c:700
-msgid "examples"
-msgstr "exemple"
-
-#: ../bin/misc.c:709
-msgid ""
-"Do you want to return to the last saved state?\n"
-"\n"
-"Revert will cause all changes done since last save to be lost."
-msgstr ""
-"Voulez-vous revenir au dernier état enregistré?\n"
-"\n"
-"La réinitialisation entraînera la perte des modifications apportées depuis la dernière sauvegarde."
-
-#: ../bin/misc.c:711
-msgid "&Revert"
-msgstr "&Revenir"
-
-#: ../bin/misc.c:932
-msgid "XTrackCAD Font"
-msgstr "XTrackCAD Font"
-
-#: ../bin/misc.c:993
-#, c-format
-msgid "No balloon help for %s\n"
-msgstr "Aucune bulle d'aide pour %s\n"
-
-#: ../bin/misc.c:995 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:653
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:654
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:656
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:657
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:659
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:660
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:661
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:662
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:663
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:664
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:665
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:666
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:667
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:668
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:669
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:670
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:671
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:672
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:673
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:674
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:675
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:676
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:677
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:678
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:679
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:680
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:681
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:682
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:683
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:684
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:685
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:686
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:687
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:688
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:689
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:690
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:691
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:692
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:693
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:694
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:695
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:696
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:697
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:698
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:699
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:700
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:701
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:702
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:703
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:704
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:705
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:706
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:707
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:708
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:709
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:710
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:711
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:712
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:713
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:715
-msgid "No Help"
-msgstr "Pas d'aide"
-
-#: ../bin/misc.c:1087
-msgid "File AutoSaved"
-msgstr "Fichier enregistré automatiquement"
-
-#: ../bin/misc.c:1326 ../bin/misc.c:1333
-msgid ""
-"Cancelling the current command will undo the changes\n"
-"you are currently making. Do you want to do the update instead?"
-msgstr ""
-"L'annulation de la commande en cours annulera les modifications\n"
-"vous faites actuellement. Voulez-vous faire la mise à jour à la place?"
-
-#: ../bin/misc.c:1405
-msgid ""
-"Cancelling the current command will undo the changes\n"
-"you are currently making. Do you want to update?"
-msgstr ""
-"L'annulation de la commande en cours annulera les \n"
-"modifications en cours. Voulez-vous mettre à jour?"
-
-#: ../bin/misc.c:1918
-msgid "Sticky Commands"
-msgstr "Commandes collantes"
-
-#: ../bin/misc.c:1931
+#: ../bin/menu.c:130
msgid "File Buttons"
msgstr "Boutons de fichier"
-#: ../bin/misc.c:1931
+#: ../bin/menu.c:130
msgid "Print Buttons"
msgstr "Imprimer les boutons"
-#: ../bin/misc.c:1931
+#: ../bin/menu.c:130
msgid "Import/Export Buttons"
msgstr "Boutons Import/Export"
-#: ../bin/misc.c:1932
+#: ../bin/menu.c:131
msgid "Zoom Buttons"
msgstr "Boutons de zoom"
-#: ../bin/misc.c:1932
+#: ../bin/menu.c:131
msgid "Undo Buttons"
msgstr "Annuler les boutons"
-#: ../bin/misc.c:1932
+#: ../bin/menu.c:131
msgid "Easement Button"
msgstr "Bouton Aide de courbes de transition"
-#: ../bin/misc.c:1932
+#: ../bin/menu.c:131
msgid "SnapGrid Buttons"
msgstr "Bouton Grille magnétique"
-#: ../bin/misc.c:1933
+#: ../bin/menu.c:132
msgid "Create Track Buttons"
msgstr "Créer des boutons de voie"
-#: ../bin/misc.c:1933
+#: ../bin/menu.c:132
msgid "Layout Control Elements"
msgstr "Éléments de contrôle du plan"
-#: ../bin/misc.c:1934
+#: ../bin/menu.c:133
msgid "Modify Track Buttons"
msgstr "Modifier les boutons de voie"
-#: ../bin/misc.c:1934
+#: ../bin/menu.c:133
msgid "Properties/Select"
msgstr "Propriétés/Sélectionner"
-#: ../bin/misc.c:1935
+#: ../bin/menu.c:134
msgid "Track Group Buttons"
msgstr "Boutons de groupe de voies"
-#: ../bin/misc.c:1935
+#: ../bin/menu.c:134
msgid "Train Group Buttons"
msgstr "Boutons d'exploitation des trains"
-#: ../bin/misc.c:1936
+#: ../bin/menu.c:135
msgid "Create Misc Buttons"
msgstr "Créer divers boutons"
-#: ../bin/misc.c:1936
+#: ../bin/menu.c:135
msgid "Ruler Button"
msgstr "Bouton Règle"
-#: ../bin/misc.c:1937
+#: ../bin/menu.c:136
msgid "Layer Buttons"
msgstr "Boutons de calques"
-#: ../bin/misc.c:1937
+#: ../bin/menu.c:136
msgid "Hot Bar"
msgstr "Barre rapide"
-#: ../bin/misc.c:2010 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:82
+#: ../bin/menu.c:225 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:82
msgid "Change Elevations"
msgstr "Modifier les élévations"
-#: ../bin/misc.c:2030
+#: ../bin/menu.c:250
msgid "Angle:"
msgstr "Angle:"
-#: ../bin/misc.c:2035
+#: ../bin/menu.c:255
msgid "Indexes:"
msgstr "Index:"
-#: ../bin/misc.c:2041
+#: ../bin/menu.c:262
msgid "Move X:"
msgstr "Déplacer X :"
-#: ../bin/misc.c:2042
+#: ../bin/menu.c:263
msgid "Move Y:"
msgstr "Déplacer Y :"
-#: ../bin/misc.c:2060
+#: ../bin/menu.c:282
msgid "Select Index"
msgstr "Sélectionnez l'index"
-#: ../bin/misc.c:2114
+#: ../bin/menu.c:330
msgid "Enter Move ..."
msgstr "Entrez le déplacement ..."
-#: ../bin/misc.c:2119
+#: ../bin/menu.c:336
msgid "Select Track Index ..."
msgstr "Sélectionnez l'index de la voie ferrée ..."
-#: ../bin/misc.c:2125
+#: ../bin/menu.c:343
msgid "180 "
msgstr "180 "
-#: ../bin/misc.c:2126
+#: ../bin/menu.c:344
msgid "90 CW"
msgstr "90 CW"
-#: ../bin/misc.c:2127
+#: ../bin/menu.c:345
msgid "45 CW"
msgstr "45 CW"
-#: ../bin/misc.c:2128
+#: ../bin/menu.c:346
msgid "30 CW"
msgstr "30 CW"
-#: ../bin/misc.c:2129
+#: ../bin/menu.c:347
msgid "15 CW"
msgstr "15 CW"
-#: ../bin/misc.c:2130
+#: ../bin/menu.c:348
msgid "15 CCW"
msgstr "15 CCW"
-#: ../bin/misc.c:2131
+#: ../bin/menu.c:349
msgid "30 CCW"
msgstr "30 CCW"
-#: ../bin/misc.c:2132
+#: ../bin/menu.c:350
msgid "45 CCW"
msgstr "45 CCW"
-#: ../bin/misc.c:2133
+#: ../bin/menu.c:351
msgid "90 CCW"
msgstr "90 CCW"
-#: ../bin/misc.c:2134
+#: ../bin/menu.c:352
msgid "Enter Angle ..."
msgstr "Entrez l'angle ..."
-#: ../bin/misc.c:2151
+#: ../bin/menu.c:369
+msgid "examples"
+msgstr "exemple"
+
+#: ../bin/menu.c:378
+msgid ""
+"Do you want to return to the last saved state?\n"
+"\n"
+"Revert will cause all changes done since last save to be lost."
+msgstr ""
+"Voulez-vous revenir au dernier état enregistré?\n"
+"\n"
+"La réinitialisation entraînera la perte des modifications apportées depuis "
+"la dernière sauvegarde."
+
+#: ../bin/menu.c:380
+msgid "&Revert"
+msgstr "&Revenir"
+
+#: ../bin/menu.c:380 ../bin/misc.c:660
+msgid "&Cancel"
+msgstr "&Annuler"
+
+#: ../bin/menu.c:433
+msgid "XTrackCAD Font"
+msgstr "XTrackCAD Font"
+
+#: ../bin/menu.c:459
+msgid "Sticky Commands"
+msgstr "Commandes collantes"
+
+#: ../bin/menu.c:478
msgid "Test Mallocs"
msgstr "Test Mallocs"
-#: ../bin/misc.c:2168
+#: ../bin/menu.c:497
msgid "Debug"
msgstr "Debug"
-#: ../bin/misc.c:2391
+#: ../bin/menu.c:582
+msgid "No Messages"
+msgstr "Pas de message"
+
+#: ../bin/menu.c:606
+#, c-format
+msgid "No help for %s"
+msgstr "Aucune aide pour %s"
+
+#: ../bin/menu.c:656
+#, c-format
+msgid "No balloon help for %s\n"
+msgstr "Aucune bulle d'aide pour %s\n"
+
+#: ../bin/menu.c:658 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:694
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:695
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:697
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:698
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:700
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:701
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:702
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:703
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:704
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:705
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:706
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:707
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:708
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:709
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:710
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:711
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:712
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:713
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:714
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:715
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:716
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:717
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:718
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:719
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:720
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:721
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:722
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:723
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:724
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:725
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:726
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:727
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:728
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:729
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:730
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:731
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:732
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:733
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:734
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:735
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:736
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:737
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:738
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:739
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:740
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:741
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:742
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:743
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:744
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:745
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:746
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:747
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:748
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:749
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:750
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:751
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:752
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:753
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:754
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:756
+msgid "No Help"
+msgstr "Pas d'aide"
+
+#: ../bin/menu.c:884
msgid "&File"
msgstr "&Fichier"
-#: ../bin/misc.c:2392
+#: ../bin/menu.c:885
msgid "&Edit"
msgstr "&Editer"
-#: ../bin/misc.c:2393
+#: ../bin/menu.c:886
msgid "&View"
msgstr "&Affichage"
-#: ../bin/misc.c:2394
+#: ../bin/menu.c:887
msgid "&Add"
msgstr "&Ajouter"
-#: ../bin/misc.c:2395
+#: ../bin/menu.c:888
msgid "&Change"
msgstr "&Modifier"
-#: ../bin/misc.c:2396
+#: ../bin/menu.c:889
msgid "&Draw"
msgstr "&Dessiner"
-#: ../bin/misc.c:2397
+#: ../bin/menu.c:890
msgid "&Manage"
msgstr "&Gérer"
-#: ../bin/misc.c:2398
+#: ../bin/menu.c:891
msgid "&Options"
msgstr "&Options"
-#: ../bin/misc.c:2399
+#: ../bin/menu.c:892
msgid "&Macro"
msgstr "&Macro"
-#: ../bin/misc.c:2400
+#: ../bin/menu.c:893
msgid "&Window"
msgstr "&Fenêtre"
-#: ../bin/misc.c:2401
+#: ../bin/menu.c:894
msgid "&Help"
msgstr "&Aide"
-#: ../bin/misc.c:2437
+#: ../bin/menu.c:930
msgid "Context Commands"
msgstr "Commandes contextuelles"
-#: ../bin/misc.c:2438
+#: ../bin/menu.c:931
msgid "Shift Context Commands"
msgstr "Maj Commandes contextuelles"
-#: ../bin/misc.c:2452 ../bin/misc.c:2454
+#: ../bin/menu.c:945 ../bin/menu.c:947
msgid "Zoom Extents"
msgstr "Zoom sur l'étendue"
-#: ../bin/misc.c:2457 ../bin/misc.c:2667
+#: ../bin/menu.c:950 ../bin/menu.c:1185
msgid "Enable SnapGrid"
msgstr "Activer la Grille d'accrochage"
-#: ../bin/misc.c:2459
+#: ../bin/menu.c:952
msgid "SnapGrid Show"
msgstr "Montrer la Grille d'accrochage"
-#: ../bin/misc.c:2461
+#: ../bin/menu.c:955
msgid " Enable Magnetic Snap"
msgstr " Activer la Grille magnétique"
-#: ../bin/misc.c:2463 ../bin/misc.c:2688
+#: ../bin/menu.c:957 ../bin/menu.c:1207
msgid "Show/Hide Map"
msgstr "Afficher/Masquer la carte de navigation"
-#: ../bin/misc.c:2486 ../bin/misc.c:2488
+#: ../bin/menu.c:981 ../bin/menu.c:983
msgid "Select Track Index..."
msgstr "Sélectionnez l'index de la voie ferrée ..."
-#: ../bin/misc.c:2500 ../bin/misc.c:2501
+#: ../bin/menu.c:995 ../bin/menu.c:996
msgid "Add..."
msgstr "Ajouter ..."
-#: ../bin/misc.c:2504 ../bin/misc.c:2505
+#: ../bin/menu.c:999 ../bin/menu.c:1000
msgid "More..."
msgstr "Plus ..."
-#: ../bin/misc.c:2510
+#: ../bin/menu.c:1005
msgid "&New ..."
msgstr "&Nouveau ..."
-#: ../bin/misc.c:2512
+#: ../bin/menu.c:1007
msgid "&Open ..."
msgstr "&Ouvrir ..."
-#: ../bin/misc.c:2518
+#: ../bin/menu.c:1011 ../bin/misc.c:660
+msgid "&Save"
+msgstr "&Sauver"
+
+#: ../bin/menu.c:1013
msgid "Save &As ..."
msgstr "Sauver &Sous ..."
-#: ../bin/misc.c:2520
+#: ../bin/menu.c:1015
msgid "Revert"
msgstr "Revenir"
-#: ../bin/misc.c:2533
+#: ../bin/menu.c:1028
msgid "P&rint Setup ..."
msgstr "R&églages d'impression ..."
-#: ../bin/misc.c:2541
+#: ../bin/menu.c:1036
msgid "&Import"
msgstr "&Importer"
-#: ../bin/misc.c:2543
+#: ../bin/menu.c:1038
msgid "Import &Module"
msgstr "Importation d'un &Module"
-#: ../bin/misc.c:2545
+#: ../bin/menu.c:1041
msgid "Export to &Bitmap"
msgstr "Exporter en &bitmap"
-#: ../bin/misc.c:2548
+#: ../bin/menu.c:1044
msgid "E&xport"
msgstr "E&xporter"
-#: ../bin/misc.c:2550
+#: ../bin/menu.c:1046
msgid "Export D&XF"
msgstr "Exporter en D&XF"
-#: ../bin/misc.c:2554
+#: ../bin/menu.c:1050
msgid "Export S&VG"
msgstr "Exporter S&VG"
-#: ../bin/misc.c:2560
+#: ../bin/menu.c:1056
msgid "Parameter &Files ..."
msgstr "&Fichiers de paramètres ..."
-#: ../bin/misc.c:2562
+#: ../bin/menu.c:1058
msgid "No&tes ..."
msgstr "R&emarques ..."
-#: ../bin/misc.c:2569
+#: ../bin/menu.c:1065
msgid "E&xit"
msgstr "Q&uitter"
-#: ../bin/misc.c:2601
+#: ../bin/menu.c:1102
msgid "&Undo"
msgstr "&Annuler"
-#: ../bin/misc.c:2603
+#: ../bin/menu.c:1104
msgid "R&edo"
msgstr "R&efaire"
-#: ../bin/misc.c:2606
+#: ../bin/menu.c:1107
msgid "Cu&t"
msgstr "C&ouper"
-#: ../bin/misc.c:2608
+#: ../bin/menu.c:1109
msgid "&Copy"
msgstr "&Copier"
-#: ../bin/misc.c:2610
+#: ../bin/menu.c:1111
msgid "&Paste"
msgstr "&Coller"
-#: ../bin/misc.c:2612
+#: ../bin/menu.c:1113
msgid "C&lone"
msgstr "C&opie"
-#: ../bin/misc.c:2614
+#: ../bin/menu.c:1115
msgid "De&lete"
msgstr "E&ffacer"
-#: ../bin/misc.c:2622
+#: ../bin/menu.c:1123
msgid "Select &All"
msgstr "T&out sélectionner"
-#: ../bin/misc.c:2624
+#: ../bin/menu.c:1127
msgid "Select By Index"
msgstr "Sélectionner par index"
-#: ../bin/misc.c:2625
+#: ../bin/menu.c:1129
msgid "&Deselect All"
msgstr "&Tout désélectionner"
-#: ../bin/misc.c:2626
+#: ../bin/menu.c:1131
msgid "&Invert Selection"
msgstr "&Inverser la sélection"
-#: ../bin/misc.c:2627
+#: ../bin/menu.c:1134
msgid "Select Stranded Track"
msgstr "Sélectionnez une voie isolée"
-#: ../bin/misc.c:2629
+#: ../bin/menu.c:1136
msgid "Tu&nnel"
msgstr "Tu&nnel"
-#: ../bin/misc.c:2630
+#: ../bin/menu.c:1138
msgid "B&ridge"
msgstr "P&ont"
-#: ../bin/misc.c:2631
-msgid "Ties/NoTies"
-msgstr "Groupées/non groupées"
+#: ../bin/menu.c:1140
+#, fuzzy
+msgid "&Roadbed"
+msgstr "Compagnie ferroviaire"
-#: ../bin/misc.c:2632
+#: ../bin/menu.c:1144
msgid "Move to &Front"
msgstr "Déplacer vers &l'avant"
-#: ../bin/misc.c:2633
+#: ../bin/menu.c:1146
msgid "Move to &Back"
msgstr "Déplacer vers &l'arrière"
-#: ../bin/misc.c:2644
+#: ../bin/menu.c:1161
msgid "Zoom &In"
msgstr "Zoom &avant"
-#: ../bin/misc.c:2647
+#: ../bin/menu.c:1164
msgid "Zoom &Out"
msgstr "Zoom &Arrière"
-#: ../bin/misc.c:2649
+#: ../bin/menu.c:1167
msgid "Zoom &Extents"
msgstr "Zoom sur l'étendu&e"
-#: ../bin/misc.c:2660
+#: ../bin/menu.c:1178
msgid "&Redraw"
msgstr "&Redessiner"
-#: ../bin/misc.c:2662
+#: ../bin/menu.c:1180
msgid "Redraw All"
msgstr "Tout redessiner"
-#: ../bin/misc.c:2669
+#: ../bin/menu.c:1187
msgid "Show SnapGrid"
msgstr "Afficher la Grille d'accrochage"
-#: ../bin/misc.c:2679
+#: ../bin/menu.c:1198
msgid "Enable Magnetic Snap"
msgstr "Activer la grille Magnétique"
-#: ../bin/misc.c:2694
+#: ../bin/menu.c:1213
msgid "&Tool Bar"
msgstr "&Barre d'outils"
-#: ../bin/misc.c:2727
+#: ../bin/menu.c:1247 ../bin/menu.c:1248
msgid "Control Element"
msgstr "Éléments de contrôle"
-#: ../bin/misc.c:2757
+#: ../bin/menu.c:1280
msgid "Change Scale"
msgstr "Modifier l'échelle"
-#: ../bin/misc.c:2770
-msgid "&Loosen Tracks"
-msgstr "&Desserrer les voies"
-
-#: ../bin/misc.c:2777
+#: ../bin/menu.c:1296
msgid "Raise/Lower Elevations"
msgstr "Monter/Descendre les Elévations"
-#: ../bin/misc.c:2786
+#: ../bin/menu.c:1305
msgid "Recompute Elevations"
msgstr "Recalculer les élévations"
-#: ../bin/misc.c:2804
+#: ../bin/menu.c:1323
msgid "L&ayout ..."
msgstr "P&lan ..."
-#: ../bin/misc.c:2806
+#: ../bin/menu.c:1325
msgid "&Display ..."
msgstr "&Affichage ..."
-#: ../bin/misc.c:2808
+#: ../bin/menu.c:1327
msgid "Co&mmand ..."
msgstr "Co&mmande ..."
-#: ../bin/misc.c:2810
+#: ../bin/menu.c:1329
msgid "&Easements ..."
msgstr "&Courbes de transition ..."
-#: ../bin/misc.c:2813
+#: ../bin/menu.c:1332
msgid "&Fonts ..."
msgstr "&Polices ..."
-#: ../bin/misc.c:2815
+#: ../bin/menu.c:1334
msgid "Stic&ky ..."
msgstr "Co&llante ..."
-#: ../bin/misc.c:2820
+#: ../bin/menu.c:1339
msgid "&Debug ..."
msgstr "&Déboguer ..."
-#: ../bin/misc.c:2823
+#: ../bin/menu.c:1342
msgid "&Preferences ..."
msgstr "&Préférences ..."
-#: ../bin/misc.c:2825
+#: ../bin/menu.c:1344
msgid "&Colors ..."
msgstr "&Couleurs ..."
-#: ../bin/misc.c:2831
+#: ../bin/menu.c:1350
msgid "&Record ..."
msgstr "&Enregistrer ..."
-#: ../bin/misc.c:2833
+#: ../bin/menu.c:1352
msgid "&Play Back ..."
msgstr "&Lecture ..."
-#: ../bin/misc.c:2839
+#: ../bin/menu.c:1358
msgid "Main window"
msgstr "Fenêtre principale"
-#: ../bin/misc.c:2853
+#: ../bin/menu.c:1372
msgid "Recent Messages"
msgstr "Messages récents"
-#: ../bin/misc.c:2860
+#: ../bin/menu.c:1379
msgid "Tip of the Day..."
msgstr "Astuce du jour ..."
-#: ../bin/misc.c:2861
+#: ../bin/menu.c:1381
msgid "&Demos"
msgstr "&Demos"
-#: ../bin/misc.c:2862
+#: ../bin/menu.c:1382
msgid "Examples..."
msgstr "Exemples ..."
-#: ../bin/misc.c:2866 ../bin/smalldlg.c:205
+#: ../bin/menu.c:1386 ../bin/smalldlg.c:210
msgid "About"
msgstr "À propos"
-#: ../bin/misc.c:2879
+#: ../bin/menu.c:1399
msgid "Tur&nout Designer..."
msgstr "Conception d'a&iguillage ..."
-#: ../bin/misc.c:2882
+#: ../bin/menu.c:1402
msgid "Layout &Control Elements"
msgstr "Éléments de &contrôle du plan"
-#: ../bin/misc.c:2884
+#: ../bin/menu.c:1404
msgid "&Group"
msgstr "Grouper"
-#: ../bin/misc.c:2886
+#: ../bin/menu.c:1406
msgid "&Ungroup"
msgstr "&Dissocier"
-#: ../bin/misc.c:2890
+#: ../bin/menu.c:1410
msgid "Custom defined parts..."
msgstr "Matériels prototypes ..."
-#: ../bin/misc.c:2893
+#: ../bin/menu.c:1413
msgid "Update Turnouts and Structures"
msgstr "Mise à jour des aiguillages et structures"
-#: ../bin/misc.c:2902
+#: ../bin/menu.c:1422
msgid "Layers ..."
msgstr "Calques ..."
-#: ../bin/misc.c:2906
+#: ../bin/menu.c:1426
msgid "Parts &List ..."
msgstr "N&omenclature ..."
-#: ../bin/misc.c:2909
+#: ../bin/menu.c:1429
msgid "Price List..."
msgstr "Liste de prix ..."
-#: ../bin/misc.c:2954
+#: ../bin/menu.c:1458 ../bin/menu.c:1459
msgid "Import/Export"
msgstr "Import/Export"
-#: ../bin/misc.c:2986
+#: ../bin/misc.c:487 ../bin/misc.c:491
+msgid "ABORT"
+msgstr "ANNULER"
+
+#: ../bin/misc.c:490
+msgid ""
+"\n"
+"Do you want to save your layout?"
+msgstr ""
+"\n"
+"Voulez-vous enregistrer votre plan ?"
+
+#: ../bin/misc.c:658
+msgid ""
+"Save changes to the layout design before closing?\n"
+"\n"
+"If you don't save now, your unsaved changes will be discarded."
+msgstr ""
+"Les modifications apportées à la conception du plan doivent-elles être "
+"enregistrées avant de fermer ?\n"
+"\n"
+"Si vous n'enregistrez pas maintenant, vos modifications seront ignorées."
+
+#: ../bin/misc.c:660
+msgid "&Don't Save"
+msgstr "&Ne pas enregistrer"
+
+#: ../bin/misc.c:991
msgid ""
"Program was not terminated properly. Do you want to resume working on the "
"previous trackplan?"
msgstr ""
-"Le programme ne s'est pas été terminé correctement. Voulez-vous reprendre le"
-" travail précédent?"
+"Le programme ne s'est pas été terminé correctement. Voulez-vous reprendre le "
+"travail précédent?"
-#: ../bin/misc.c:2987
+#: ../bin/misc.c:992
msgid "Resume"
msgstr "Résumé"
-#: ../bin/misc.c:2987
+#: ../bin/misc.c:992
msgid "Resume with New Name"
msgstr "Recommencer avec un nouveau nom"
-#: ../bin/misc.c:2987
+#: ../bin/misc.c:992
msgid "Ignore Checkpoint"
msgstr "Ignorer le point de contrôle"
-#: ../bin/misc.c:2990
+#: ../bin/misc.c:995
#, c-format
msgid "Reload Checkpoint Selected\n"
msgstr "Recharger le point de contrôle sélectionné\n"
-#: ../bin/misc.c:2992
+#: ../bin/misc.c:997
#, c-format
msgid "Reload Checkpoint With New Name Selected\n"
msgstr "Recharger le point de contrôle avec le nouveau nom sélectionné\n"
-#: ../bin/misc.c:2994
+#: ../bin/misc.c:999
#, c-format
msgid "Ignore Checkpoint Selected\n"
msgstr "Ignorer le point de contrôle sélectionné\n"
-#: ../bin/misc.c:3106
+#: ../bin/misc.c:1121
#, c-format
msgid "Unnamed Trackplan - %s(%s)"
msgstr "Plan de voie sans nom -%s(%s)"
-#: ../bin/misc.c:3193
+#: ../bin/misc.c:1175
msgid "Initializing commands"
msgstr "Initialisation des commandes"
-#: ../bin/misc.c:3202
+#: ../bin/misc.c:1184
msgid "Initializing menus"
msgstr "Initialisation des menus"
-#: ../bin/misc.c:3238
+#: ../bin/misc.c:1216
msgid "Reading parameter files"
msgstr "Lecture des fichiers de paramètres"
-#: ../bin/misc.c:3276
+#: ../bin/misc.c:1260
msgid "Initialization complete"
msgstr "Initialisation terminée"
-#: ../bin/param.c:65
+#: ../bin/param.c:76
msgid "Unexpected End Of String"
msgstr "Fin de chaîne inattendue"
-#: ../bin/param.c:72
+#: ../bin/param.c:83
msgid "Expected digit"
msgstr "Chiffre attendu"
-#: ../bin/param.c:79
+#: ../bin/param.c:91
msgid "Overflow"
msgstr "Débordement"
-#: ../bin/param.c:127
+#: ../bin/param.c:140
msgid "Divide by 0"
msgstr "Diviser par 0"
-#: ../bin/param.c:135
+#: ../bin/param.c:148
msgid "Expected /"
msgstr "Attendu /"
-#: ../bin/param.c:221
+#: ../bin/param.c:233
msgid "Invalid Units Indicator"
msgstr "Indicateur d'unités non valide"
-#: ../bin/param.c:249
+#: ../bin/param.c:261
msgid "Expected End Of String"
msgstr "Fin de chaîne attendue"
-#: ../bin/param.c:275 ../bin/param.c:1425
+#: ../bin/param.c:289 ../bin/param.c:1528
#, c-format
msgid "Invalid Number"
msgstr "Nombre invalide"
-#: ../bin/param.c:335
+#: ../bin/param.c:349
msgid "End Of String"
msgstr "Fin de chaîne"
-#: ../bin/param.c:1387
+#: ../bin/param.c:1486
#, c-format
msgid "Enter a value > %ld"
msgstr "Entrez une valeur > %ld"
-#: ../bin/param.c:1389
+#: ../bin/param.c:1489
#, c-format
msgid "Enter a value < %ld"
msgstr "Entrez une valeur < %ld"
-#: ../bin/param.c:1391
+#: ../bin/param.c:1491
#, c-format
msgid "Enter a value between %ld and %ld"
msgstr "Entrez une valeur entre %ld et %ld"
-#: ../bin/param.c:1458
+#: ../bin/param.c:1568
#, c-format
msgid "Enter a value > %s"
msgstr "Entrez une valeur > %s"
-#: ../bin/param.c:1461
+#: ../bin/param.c:1572
#, c-format
msgid "Enter a value < %s"
msgstr "Entrez une valeur < %s"
-#: ../bin/param.c:1464
+#: ../bin/param.c:1575
#, c-format
msgid "Enter a value between %s and %s"
msgstr "Entrez une valeur entre %s et %s"
-#: ../bin/param.c:1556
+#: ../bin/param.c:1674
msgid "String cannot be blank"
msgstr "La chaîne ne peut pas être vide"
-#: ../bin/param.c:1674
+#: ../bin/param.c:1689
+#, c-format
+msgid "String is too long, Max length is %u"
+msgstr ""
+
+#: ../bin/param.c:1823
msgid "Invalid input(s), please correct the hilighted field(s)"
msgstr "Saisie invalide, veuillez corriger le(s) champ(s) en surbrillance"
-#: ../bin/param.c:2746
+#: ../bin/param.c:3043
msgid "Help"
msgstr "Aide"
-#: ../bin/paramfile.c:257
+#: ../bin/paramfile.c:258
msgid "Parameter"
msgstr "Paramètre"
-#: ../bin/paramfile.c:354
+#: ../bin/paramfile.c:363
msgid "Unknown param file line - skip until next good object?"
msgstr "Ligne de fichier paramètre inconnue - passer au prochain bon objet ?"
#: ../bin/paramfilelist.c:69
#, c-format
msgid ""
-"The parameter file: %s could not be found and was probably deleted or moved."
-" The file is removed from the active parameter file list."
+"The parameter file: %s could not be found and was probably deleted or moved. "
+"The file is removed from the active parameter file list."
msgstr ""
"Le fichier de paramètres : %s n'a pas pu être trouvé et a probablement été "
"supprimé ou déplacé. Le fichier est supprimé de la liste des fichiers de "
"paramètres actifs."
-#: ../bin/paramfilelist.c:119
+#: ../bin/paramfilelist.c:126
#, c-format
msgid "Updating %s"
msgstr "Mise à jour de %s"
-#: ../bin/paramfilesearch_ui.c:53
+#: ../bin/paramfilesearch_ui.c:52
msgid "Fit Any"
msgstr "Ajuster Quelconque"
-#: ../bin/paramfilesearch_ui.c:53
+#: ../bin/paramfilesearch_ui.c:52
msgid "Fit Compatible"
msgstr "Ajuster compatible"
-#: ../bin/paramfilesearch_ui.c:53
+#: ../bin/paramfilesearch_ui.c:52
msgid "Fit Exact"
msgstr "Ajuster exactement"
-#: ../bin/paramfilesearch_ui.c:191
+#: ../bin/paramfilesearch_ui.c:192
#, c-format
msgid "%u parameter files in library. %d Fit Scale."
msgstr "%u fichiers de paramètres dans la bibliothèque. %d Ajuster l'échelle."
-#: ../bin/paramfilesearch_ui.c:308
+#: ../bin/paramfilesearch_ui.c:307
#, c-format
msgid "%d parameter files found. %d Fit Scale"
msgstr "%d fichiers de paramètres trouvés. %d Ajuster l'échelle"
@@ -6521,44 +6559,85 @@ msgstr "%d fichiers de paramètres trouvés. %d Ajuster l'échelle"
msgid "No matches found."
msgstr "Aucun résultat."
-#: ../bin/paramfilesearch_ui.c:476
+#: ../bin/paramfilesearch_ui.c:477
msgid "Choose parameter files"
msgstr "Sélectionnez les fichiers de paramètres"
-#: ../bin/paramfilesearch_ui.c:494
+#: ../bin/paramfilesearch_ui.c:495
msgid "No system parameter files found, search is disabled."
msgstr ""
"Aucun fichier de paramètres système trouvé, la recherche est désactivée."
-#: ../bin/partcatalog.c:736
+#: ../bin/partcatalog.c:739
msgid "Found: "
msgstr "Trouvé : "
-#: ../bin/partcatalog.c:737
+#: ../bin/partcatalog.c:740
msgid "Similar: "
msgstr "Identique : "
-#: ../bin/partcatalog.c:738
+#: ../bin/partcatalog.c:741
msgid "Ignored: "
msgstr "Ignoré : "
-#: ../bin/partcatalog.c:739
+#: ../bin/partcatalog.c:742
msgid "Not found: "
msgstr "Introuvable : "
-#: ../bin/smalldlg.c:46
+#: ../bin/scale.c:301
+#, c-format
+msgid ""
+"Invalid Scale: playback aborted\n"
+" SCALE %s"
+msgstr ""
+
+#: ../bin/scale.c:845 ../bin/scale.c:870
+msgid "Ratio"
+msgstr "Rapport"
+
+#: ../bin/scale.c:854
+msgid "Do not resize track"
+msgstr "Ne pas redimensionner la voie"
+
+#: ../bin/scale.c:858
+msgid "Rescale by:"
+msgstr "Changer d'échelle par :"
+
+#: ../bin/scale.c:860
+msgid "From:"
+msgstr "De :"
+
+#: ../bin/scale.c:864
+msgid "To: "
+msgstr "À : "
+
+#: ../bin/scale.c:913
+msgid "Rescale Tracks"
+msgstr "Changer les voies d'échelle"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:473
+#: ../bin/scale.c:1084 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1258
+msgid "Rescale"
+msgstr "Changer d'échelle"
+
+#: ../bin/scale.c:1134
+#, c-format
+msgid "%ld Objects to be rescaled"
+msgstr ""
+
+#: ../bin/smalldlg.c:45
msgid "Show tips at start"
msgstr "Afficher les conseils au démarrage"
-#: ../bin/smalldlg.c:52
+#: ../bin/smalldlg.c:51
msgid "Did you know..."
msgstr "Saviez-vous que ..."
-#: ../bin/smalldlg.c:54
+#: ../bin/smalldlg.c:53
msgid "Previous Tip"
msgstr "Précédent"
-#: ../bin/smalldlg.c:55
+#: ../bin/smalldlg.c:54
msgid "Next Tip"
msgstr "Conseil suivant"
@@ -6566,11 +6645,11 @@ msgstr "Conseil suivant"
msgid "Tip of the Day"
msgstr "Astuce du jour"
-#: ../bin/smalldlg.c:81
+#: ../bin/smalldlg.c:82
msgid "No tips are available"
msgstr "Pas de conseils disponibles"
-#: ../bin/smalldlg.c:182
+#: ../bin/smalldlg.c:187
msgid ""
"XTrackCAD is a CAD (computer-aided design) program for designing model "
"railroad layouts."
@@ -6578,94 +6657,90 @@ msgstr ""
"XTrackCAD est un programme de CAO (conception assistée par ordinateur) pour "
"concevoir des plans de chemin de fer miniature."
-#: ../bin/svgoutput.c:484
-msgid "Export to SVG"
-msgstr "Exporter au format SVG"
-
-#: ../bin/tbezier.c:184
+#: ../bin/tbezier.c:214
#, c-format
msgid "Bez: L%s A%0.3f trk_len=%s min_rad=%s"
msgstr "Bez: L%s A%0.3f lg_voie=%s min_rad=%s"
-#: ../bin/tbezier.c:254
+#: ../bin/tbezier.c:288
msgid "Ctl Pt 1: X,Y"
msgstr "Ctl Pt 1: X,Y"
-#: ../bin/tbezier.c:255
+#: ../bin/tbezier.c:289
msgid "Ctl Pt 2: X,Y"
msgstr "Ctl Pt 2: X,Y"
-#: ../bin/tbezier.c:261
+#: ../bin/tbezier.c:295
msgid "MinRadius"
msgstr "RayonMin"
-#: ../bin/tbezier.c:266
+#: ../bin/tbezier.c:300
msgid "Line Color"
msgstr "Couleur de ligne"
-#: ../bin/tbezier.c:393
+#: ../bin/tbezier.c:440
#, c-format
msgid ""
-"Bezier %s(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] "
-"[%0.3f,%0.3f] CP1=[%0.3f,%0.3f] CP2=[%0.3f, %0.3f]"
+"Bezier %s(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,"
+"%0.3f] CP1=[%0.3f,%0.3f] CP2=[%0.3f, %0.3f]"
msgstr ""
-"Bezier %s(%d): Calque=%u Rayon Min=%s Longueur=%s EP=[%0.3f,%0.3f] "
-"[%0.3f,%0.3f] CP1=[%0.3f,%0.3f] CP2=[%0.3f, %0.3f]"
+"Bezier %s(%d): Calque=%u Rayon Min=%s Longueur=%s EP=[%0.3f,%0.3f] [%0.3f,"
+"%0.3f] CP1=[%0.3f,%0.3f] CP2=[%0.3f, %0.3f]"
-#: ../bin/tbezier.c:467
+#: ../bin/tbezier.c:514
msgid "Bezier Track"
msgstr "Voie Bézier"
-#: ../bin/tcornu.c:232
+#: ../bin/tcornu.c:246
#, c-format
msgid "Cornu: L %s A %0.3f L %s MinR %s"
msgstr "Cornu: L %s A %0.3f L %s MinR %s"
-#: ../bin/tcornu.c:304
+#: ../bin/tcornu.c:321
msgid "Radius "
msgstr "Rayon "
-#: ../bin/tcornu.c:312
+#: ../bin/tcornu.c:329
msgid "Minimum Radius"
msgstr "Rayon Minimum"
-#: ../bin/tcornu.c:313
+#: ../bin/tcornu.c:330
msgid "Max Rate Of Curve Change/Scale"
msgstr "Taux maximum de variation de courbe/échelle"
-#: ../bin/tcornu.c:314
+#: ../bin/tcornu.c:331
msgid "Total Winding Angle"
msgstr "Angle total"
-#: ../bin/tcornu.c:452
+#: ../bin/tcornu.c:476
#, c-format
msgid ""
-"Cornu Track(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] "
-"[%0.3f,%0.3f]"
+"Cornu Track(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,"
+"%0.3f]"
msgstr ""
"Voie de Cornu(%d) : couche =%u Rayon Min =%s longueur =%s EP=[%0.3f,%0.3f] "
"[%0.3f,%0.3f]"
-#: ../bin/tcornu.c:505
+#: ../bin/tcornu.c:532
msgid "Cornu Track"
msgstr "Voie de Cornu"
-#: ../bin/tcurve.c:250
+#: ../bin/tcurve.c:259
#, c-format
msgid "Helix: Turns %ld L %0.2f Grade %0.1f%% Sep %0.2f"
msgstr "Helix: Tours %ld L %0.2f Pente %0.1f%% Sép %0.2f"
-#: ../bin/tcurve.c:256
+#: ../bin/tcurve.c:265
#, c-format
msgid "Helix: Turns %ld L %0.2f"
msgstr "Helix: Tours %ld L %0.2f"
-#: ../bin/tcurve.c:378 ../bin/tcurve.c:380 ../bin/tease.c:510
-#: ../bin/tease.c:512 ../bin/tstraigh.c:87 ../bin/tstraigh.c:89
+#: ../bin/tcurve.c:397 ../bin/tcurve.c:399 ../bin/tease.c:525
+#: ../bin/tease.c:527 ../bin/tstraigh.c:88 ../bin/tstraigh.c:90
msgid "Z"
msgstr "Z"
-#: ../bin/tcurve.c:565
+#: ../bin/tcurve.c:591
#, c-format
msgid ""
"Helix Track(%d): Layer=%d Radius=%s Turns=%ld Length=%s Center=[%s,%s] "
@@ -6673,365 +6748,286 @@ msgid ""
msgstr ""
"Voie de l'hélicoïde\n"
"\n"
-"Voie de l'hélicoïde (%d) : Couche =%d Rayon =%s Tours =%ld Longueur =%s Centre = [%s,%s] EP =[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
+"Voie de l'hélicoïde (%d) : Couche =%d Rayon =%s Tours =%ld Longueur =%s "
+"Centre = [%s,%s] EP =[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
-#: ../bin/tcurve.c:575
+#: ../bin/tcurve.c:602
#, c-format
msgid ""
-"Curved Track(%d): Layer=%d Radius=%s Length=%s Center=[%s,%s] "
-"EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
+"Curved Track(%d): Layer=%d Radius=%s Length=%s Center=[%s,%s] EP=[%0.3f,"
+"%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
msgstr ""
"Voie courbe (%d) : Couche =%d Rayon =%s Longueur =%s Centre = [%s,%s] "
"EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
-#: ../bin/tcurve.c:652
+#: ../bin/tcurve.c:681
msgid "Helix Track"
msgstr "Voie hélicoïde"
-#: ../bin/tcurve.c:658
+#: ../bin/tcurve.c:687
msgid "Curved Track"
msgstr "Voie courbe"
-#: ../bin/tcurve.c:1033
+#: ../bin/tcurve.c:1232
msgid "Merge Curves"
msgstr "Fusionner des courbes"
-#: ../bin/tcurve.c:1102
+#: ../bin/tcurve.c:1306
msgid "Drag to change angle or create tangent"
msgstr "Faites glisser pour changer d'angle ou créer une tangente"
-#: ../bin/tcurve.c:1135 ../bin/tcurve.c:1167
+#: ../bin/tcurve.c:1341 ../bin/tcurve.c:1374
msgid "Curved "
msgstr "Courbe "
-#: ../bin/tcurve.c:1141
+#: ../bin/tcurve.c:1347
msgid "Tangent "
msgstr "Tangente "
-#: ../bin/tcurve.c:1150
+#: ../bin/tcurve.c:1356
#, c-format
msgid "Tangent track: Length %s Angle %0.3f"
msgstr "Voie tangente : Longueur %s Angle %0.3f"
-#: ../bin/tcurve.c:1172
+#: ../bin/tcurve.c:1378
#, c-format
msgid "Curved: Radius=%s Length=%s Angle=%0.3f"
msgstr "Courbé : Rayon =%s Longueur =%s Angle =%0.3f"
-#: ../bin/tease.c:517
+#: ../bin/tease.c:532
msgid "l0"
msgstr "l0"
-#: ../bin/tease.c:518
+#: ../bin/tease.c:533
msgid "l1"
msgstr "l1"
-#: ../bin/tease.c:560
+#: ../bin/tease.c:581
#, c-format
msgid ""
"Joint Track(%d): Layer=%d Length=%0.3f EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f "
"A%0.3f]"
msgstr ""
-"Voie raccordée(%d): Couche=%d Longueur=%0.3f EP=[%0.3f,%0.3f A%0.3f] "
-"[%0.3f,%0.3f A%0.3f]"
+"Voie raccordée(%d): Couche=%d Longueur=%0.3f EP=[%0.3f,%0.3f A%0.3f] [%0.3f,"
+"%0.3f A%0.3f]"
-#: ../bin/tease.c:605
+#: ../bin/tease.c:629
msgid "Easement Track"
msgstr "Voie courbe de transition"
-#: ../bin/tease.c:1330
+#: ../bin/tease.c:1407
msgid "Merge Easements"
msgstr "Fusionner des courbes de transition"
-#: ../bin/tease.c:1398
+#: ../bin/tease.c:1481
msgid "Split Easement Curve"
msgstr "Courbe de transition fractionnée"
-#: ../bin/textnoteui.c:209
-#, c-format
-msgid "Note: Layer=%d %-.80s"
+#: ../bin/textnoteui.c:175
+#, fuzzy, c-format
+msgid "Text Note(%d) Layer=%d %-.80s"
msgstr "Remarque : Calque=%d %-.80s"
-#: ../bin/textnoteui.c:220
-msgid "Update comment"
-msgstr "Mettre à jour le commentaire"
+#: ../bin/textnoteui.c:189
+#, fuzzy
+msgid "Update Text Note"
+msgstr "Créer une note texte"
-#: ../bin/textnoteui.c:232
+#: ../bin/textnoteui.c:200
msgid "Replace this text with your note"
msgstr "Remplacez ce texte par votre note"
-#: ../bin/textnoteui.c:236
+#: ../bin/textnoteui.c:206
msgid "Create Text Note"
msgstr "Créer une note texte"
-#: ../bin/track.c:274
+#: ../bin/track.c:290
msgid "No track or structure pieces are present in layout"
msgstr ""
"Aucun morceau de voie ou de structure n'est présent dans la disposition"
-#: ../bin/track.c:276
+#: ../bin/track.c:292
msgid "No track or structure pieces are selected"
msgstr "Aucune voie ou pièce de structure n'est sélectionnée"
-#: ../bin/track.c:1379
+#: ../bin/track.c:1461
msgid "Move Objects Above"
msgstr "Déplacer les objets ci-dessus"
-#: ../bin/track.c:1399
+#: ../bin/track.c:1481
msgid "Mode Objects Below"
msgstr "Objets ci-dessous"
-#: ../bin/track.c:1692
+#: ../bin/track.c:1785
msgid "Audit"
msgstr "Vérification"
-#: ../bin/track.c:1981
-#, c-format
-msgid "%d Track(s) loosened"
-msgstr "%d Voie(s) détachées"
-
-#: ../bin/track.c:1988
-msgid "No tracks loosened"
-msgstr "Pas de voies détachées"
+#: ../bin/track.c:1990
+#, fuzzy, c-format
+msgid "Connecting a car to a non-car T%d T%d"
+msgstr "Connecter un autre objet (%d) à une voie (%d)"
-#: ../bin/track.c:1998 ../bin/track.c:2002
+#: ../bin/track.c:2000 ../bin/track.c:2005
#, c-format
msgid "Connecting a non-track(%d) to (%d)"
msgstr "Connecter un autre objet (%d) à une voie (%d)"
-#: ../bin/track.c:2057
+#: ../bin/track.c:2047
+#, c-format
+msgid "Disconnecting a car from a non-car T%d T%d"
+msgstr ""
+
+#: ../bin/track.c:2081
msgid "Join Abutting Tracks"
msgstr "Raccorder les voies adjacentes"
-#: ../bin/track.c:2345 ../bin/track.c:2380
+#: ../bin/track.c:2407 ../bin/track.c:2444
msgid "Inside turnout track"
msgstr "Voie d'aiguillage intérieure"
-#: ../bin/track.c:2363
+#: ../bin/track.c:2425
#, c-format
msgid "Curve: Length=%s Radius=%0.3f Arc=%0.3f"
msgstr "Courbe : longueur=%s Rayon=%0.3f Arc=%0.3f"
-#: ../bin/track.c:2386 ../bin/track.c:2444 ../bin/tstraigh.c:646
+#: ../bin/track.c:2452 ../bin/track.c:2517 ../bin/tstraigh.c:853
#, c-format
msgid "Straight: Length=%s Angle=%0.3f"
msgstr "Droit : Longueur = %s Angle = %0.3f"
-#: ../bin/track.c:3571
-#, c-format
-msgid "%s[%0.2f,%0.2f] A%0.2f"
+#: ../bin/track.c:3374
+#, fuzzy, c-format
+msgid "[%0.2f,%0.2f] A%0.2f"
msgstr "%s[%0.2f,%0.2f] A%0.2f"
-#: ../bin/track.c:3573
-#, c-format
-msgid "%s[%0.2f,%0.2f] A%0.2f\n"
+#: ../bin/track.c:3378
+#, fuzzy, c-format
+msgid "[%0.2f,%0.2f] A%0.2f\n"
msgstr "%s[%0.2f,%0.2f] A%0.2f\n"
-#: ../bin/trknote.c:55
-msgid "Comment"
-msgstr "Commentaire"
+#: ../bin/trknote.c:52 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:154
+#, fuzzy
+msgid "Text Note"
+msgstr "Créer une note texte"
-#: ../bin/trknote.c:56
+#: ../bin/trknote.c:53
msgid "Link"
msgstr "Lien"
-#: ../bin/trknote.c:56 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:104
+#: ../bin/trknote.c:53 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:105
msgid "Weblink"
msgstr "Lien Web"
-#: ../bin/trknote.c:639 ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:112
+#: ../bin/trknote.c:526 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:113
msgid "Place a note on the layout"
msgstr "Mettre une note sur le plan"
-#: ../bin/trknote.c:653
+#: ../bin/trknote.c:540
msgid "New Note"
msgstr "Nouvelle note"
-#: ../bin/trknote.c:709
+#: ../bin/trknote.c:594
msgid "Add notes"
msgstr "Ajouter des notes"
-#: ../bin/tstraigh.c:91
+#: ../bin/tstraigh.c:92
msgid "Track Angle"
msgstr "Angle de voie"
-#: ../bin/tstraigh.c:194
+#: ../bin/tstraigh.c:212
#, c-format
msgid ""
"Straight Track(%d): Layer=%d Length=%s EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f "
"A%0.3f]"
msgstr ""
-"Voie droite (%d) : Couche =%d Longueur =%s EP =[%0.3f,%0.3f A%0.3f] "
-"[%0.3f,%0.3f A%0.3f]"
+"Voie droite (%d) : Couche =%d Longueur =%s EP =[%0.3f,%0.3f A%0.3f] [%0.3f,"
+"%0.3f A%0.3f]"
-#: ../bin/tstraigh.c:559
+#: ../bin/tstraigh.c:762
msgid "Extending Straight Track"
msgstr "Extension d'une voie droite"
-#: ../bin/tstraigh.c:639
+#: ../bin/tstraigh.c:845
msgid "Straight "
msgstr "Trait "
-#: ../wlib/gtklib/filesel.c:94
-msgid "Save format:"
-msgstr "Format d'enregistrement :"
-
-#: ../wlib/gtklib/filesel.c:187
-msgid "Image files"
-msgstr "Fichiers images"
-
-#: ../wlib/gtklib/font.c:282
-msgid "Font Select"
-msgstr "Sélection de police"
-
-#: ../wlib/gtklib/help.c:84 ../wlib/mswlib/mswmisc.c:2274
-msgid "&Contents"
-msgstr "&Sommaire"
-
-#: ../wlib/gtklib/help.c:85
-msgid "Co&mmand Context help"
-msgstr "Co&mmande d'aide contextuelle"
-
-#: ../wlib/gtklib/ixhelp.c:243
-msgid "Home"
-msgstr "Accueil"
-
-#: ../wlib/gtklib/ixhelp.c:247
-msgid "Contents"
-msgstr "Sommaire"
-
-#: ../wlib/gtklib/menu.c:541
-msgid "<Empty List>"
-msgstr "<Liste vide>"
-
-#: ../wlib/gtklib/notice.c:101 ../wlib/mswlib/mswmisc.c:2134
-#: ../wlib/mswlib/mswmisc.c:2177
-msgid "Warning"
-msgstr "Attention"
-
-#: ../wlib/gtklib/notice.c:106 ../wlib/mswlib/mswmisc.c:2139
-msgid "Error"
-msgstr "Erreur"
-
-#: ../wlib/gtklib/text.c:300
-#, c-format
-msgid "%d of %d"
-msgstr "%d de %d"
-
-#: ../wlib/gtklib/wpref.c:123
-#, c-format
-msgid ""
-"The required configuration files could not be located in the expected location.\n"
-"\n"
-"Usually this is an installation problem. Make sure that these files are installed in either \n"
-" ../share/xtrkcad or\n"
-" /usr/share/%s or\n"
-" /usr/local/share/%s\n"
-"If this is not possible, the environment variable %s must contain the name of the correct directory."
-msgstr ""
-"Les données de configuration nécessaires sont introuvables dans le répertoire attendu.\n"
-"\n"
-"Il s'agit généralement d'un problème d'installation. Assurez-vous que ces fichiers sont stockés dans \n"
-" ../share/xtrkcad ou\n"
-" /usr/share/%s ou\n"
-" /usr/local/share/%s\n"
-"Si cela n'est pas possible, la variable d'environnement %s doit contenir le nom du répertoire correct."
-
-#: ../wlib/gtklib/wpref.c:157 ../wlib/gtklib/wpref.c:202
-msgid "HOME is not set"
-msgstr "HOME n'est pas défini"
-
-#: ../wlib/gtklib/wpref.c:157 ../wlib/gtklib/wpref.c:166
-#: ../wlib/gtklib/wpref.c:202
-msgid "Exit"
-msgstr "Quitter"
-
-#: ../wlib/gtklib/wpref.c:165
-#, c-format
-msgid "Cannot create %s"
-msgstr "Impossible de créer %s"
-
-#: ../wlib/mswlib/backgnd.c:104
-msgid "Image file is invalid or cannot be read."
-msgstr "Le fichier image n'est pas valide ou ne peut pas être lu."
-
-#: ../wlib/mswlib/mswmenu.c:888
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
-#: ../wlib/mswlib/mswmenu.c:893
-msgid "Alt+"
-msgstr "Alt+"
-
-#: ../wlib/mswlib/mswmenu.c:898
-msgid "Shift+"
-msgstr "Maj+"
-
-#: ../wlib/mswlib/mswmenu.c:904
-msgid "Space"
-msgstr "Espace"
+#: ../bin/svgoutput.c:484
+msgid "Export to SVG"
+msgstr "Exporter au format SVG"
-#: ../wlib/mswlib/mswmisc.c:195
+#: ../wlib/mswlib/mswmisc.c:188
msgid "All image files"
msgstr "Tous les fichiers image"
-#: ../wlib/mswlib/mswmisc.c:197
+#: ../wlib/mswlib/mswmisc.c:190
msgid "GIF files (*.gif)"
msgstr "Fichiers GIF (*.gif)"
-#: ../wlib/mswlib/mswmisc.c:199
+#: ../wlib/mswlib/mswmisc.c:192
msgid "JPEG files (*.jpeg,*.jpg)"
msgstr "Fichier JPEG (*.jpeg,*.jpg)"
-#: ../wlib/mswlib/mswmisc.c:201
+#: ../wlib/mswlib/mswmisc.c:194
msgid "PNG files (*.png)"
msgstr "Fichier PNG (*.png)"
-#: ../wlib/mswlib/mswmisc.c:203
+#: ../wlib/mswlib/mswmisc.c:196
msgid "TIFF files (*.tiff, *.tif)"
msgstr "Fichiers TIFF (*.tiff, *.tif)"
-#: ../wlib/mswlib/mswmisc.c:205
+#: ../wlib/mswlib/mswmisc.c:198
msgid "All files (*)"
msgstr "Tous les fichiers (*)"
-#: ../wlib/mswlib/mswmisc.c:2275
+#: ../wlib/mswlib/mswmisc.c:2062 ../wlib/mswlib/mswmisc.c:2105
+msgid "Warning"
+msgstr "Attention"
+
+#: ../wlib/mswlib/mswmisc.c:2067
+msgid "Error"
+msgstr "Erreur"
+
+#: ../wlib/mswlib/mswmisc.c:2203
+msgid "&Contents"
+msgstr "&Sommaire"
+
+#: ../wlib/mswlib/mswmisc.c:2204
msgid "&Search for Help on..."
msgstr "&Rechercher de l'aide sur..."
-#: ../wlib/mswlib/mswmisc.c:2276
+#: ../wlib/mswlib/mswmisc.c:2205
msgid "Co&mmand Context Help"
msgstr "Co&mmande d'aide contextuelle"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:9
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:9
#, c-format
msgid ""
-"MSG_BETA_NOTICE\tXTrackCAD Version %s: Please note that this Beta Version of"
-" XTrackCAD is still undergoing final testing before its official release. "
-"The sole purpose of this Beta Version is to conduct testing and obtain "
-"feedback. Should you encounter any bugs, glitches, lack of functionality or "
-"other problems, please let us know immediately so we can rectify these "
+"MSG_BETA_NOTICE\tXTrackCAD Version %s: Please note that this Beta Version of "
+"XTrackCAD is still undergoing final testing before its official release. The "
+"sole purpose of this Beta Version is to conduct testing and obtain feedback. "
+"Should you encounter any bugs, glitches, lack of functionality or other "
+"problems, please let us know immediately so we can rectify these "
"accordingly. Your help in this regard is greatly appreciated!"
msgstr ""
-"MSG_BETA_NOTICE\tXTrackCAD Version %s: Veuillez noter que cette version bêta"
-" de XTrackCAD est toujours en cours de test final avant sa sortie "
-"officielle. Le seul but de cette version bêta est d'effectuer des tests et "
-"d'obtenir des commentaires. Si vous rencontrez des bugs, des problèmes, un "
-"manque de fonctionnalité ou d'autres problèmes, veuillez nous en informer "
+"MSG_BETA_NOTICE\tXTrackCAD Version %s: Veuillez noter que cette version bêta "
+"de XTrackCAD est toujours en cours de test final avant sa sortie officielle. "
+"Le seul but de cette version bêta est d'effectuer des tests et d'obtenir des "
+"commentaires. Si vous rencontrez des bugs, des problèmes, un manque de "
+"fonctionnalité ou d'autres problèmes, veuillez nous en informer "
"immédiatement afin que nous puissions les rectifier en conséquence. Votre "
"aide à cet égard est grandement appréciée!"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:10
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:10
#, c-format
msgid ""
-"MSG_CANT_PLACE_FROGPOINTS\tFrog|Points cannot be placed on a turnout, circle"
-" or helix.\tA %s cannot be placed on a turnout, circle or helix."
+"MSG_CANT_PLACE_FROGPOINTS\tFrog|Points cannot be placed on a turnout, circle "
+"or helix.\tA %s cannot be placed on a turnout, circle or helix."
msgstr ""
"MSG_CANT_PLACE_FROGPOINTS\t Coeur|Points ne peuvent pas être placés sur une "
"aiguille, un cercle ou une hélicoïde. Un %s ne peut pas être placé sur une "
"aiguille, un cercle ou une hélicoïde."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:11
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:11
msgid ""
"MSG_SEL_TRK_FROZEN\tA frozen layer contains selected track. Command cannot "
"be executed."
@@ -7039,95 +7035,115 @@ msgstr ""
"MSG_SEL_TRK_FROZEN\tUn calque gelé contient la voie sélectionnée. La "
"commande ne peut pas être exécutée."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:12
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:12
msgid "MSG_HELIX_TURNS_GTR_0\tA Helix must have one or more loops of track."
msgstr ""
"MSG_HELIX_TURNS_GTR_0\tUne hélicoïde doit avoir une ou plusieurs boucles de "
"voie."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:13
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:13
msgid ""
-"MSG_LARGE_FONT\tA large font has been selected....\tA large font has been selected.\n"
+"MSG_LARGE_FONT\tA large font has been selected....\tA large font has been "
+"selected.\n"
"Large fonts may a take a while to load.\n"
"\n"
"Do you wish to continue?"
msgstr ""
-"MSG_LARGE_FONT\tUne grande police a été sélectionnée....\tUne grande police a été sélectionnée.\n"
+"MSG_LARGE_FONT\tUne grande police a été sélectionnée....\tUne grande police "
+"a été sélectionnée.\n"
"Le chargement de grandes polices peut prendre un certain temps.\n"
"\n"
"Souhaitez-vous continuer?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:14
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:14
msgid ""
-"MSG_TEXT_TOO_LONG\tThe entered text was too long for the text object. It was"
-" truncated."
+"MSG_TEXT_TOO_LONG\tThe entered text was too long for the text object. It was "
+"truncated."
msgstr ""
-"MSG_TEXT_TOO_LONG\tLe texte saisi est trop long pour l'objet texte. Il a été"
-" tronqué."
+"MSG_TEXT_TOO_LONG\tLe texte saisi est trop long pour l'objet texte. Il a été "
+"tronqué."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:15
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:15
msgid ""
-"MSG_TODSGN_DESC_NONBLANK\tAll description fields present in the Turnout...\tAll description fields present in the Turnout\n"
+"MSG_TODSGN_DESC_NONBLANK\tAll description fields present in the Turnout..."
+"\tAll description fields present in the Turnout\n"
"Designer must contain appropriate information.\n"
"Correct inappropriate values and try again."
msgstr ""
-"MSG_TODSGN_DESC_NONBLANK\tTous les champs de description présents dans l'éditeur d'aiguillage...\tTous les champs de description présents dans l'éditeur \n"
+"MSG_TODSGN_DESC_NONBLANK\tTous les champs de description présents dans "
+"l'éditeur d'aiguillage...\tTous les champs de description présents dans "
+"l'éditeur \n"
"d'aiguillage doivent contenir les informations appropriées.\n"
"Corrigez les valeurs inappropriées et réessayez."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:16
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:16
msgid ""
-"MSG_GROUP_NONBLANK\tAll fields listed in the Group dialog must contain data....\tAll fields listed in the Group dialog must contain data.\n"
+"MSG_GROUP_NONBLANK\tAll fields listed in the Group dialog must contain "
+"data....\tAll fields listed in the Group dialog must contain data.\n"
"Please enter missing values and try again."
msgstr ""
-"MSG_GROUP_NONBLANK\tTous les champs répertoriés dans la boîte de dialogue Groupe doivent contenir des données....\tTous les champs répertoriés dans la boîte de dialogue Groupe doivent contenir des données.\n"
+"MSG_GROUP_NONBLANK\tTous les champs répertoriés dans la boîte de dialogue "
+"Groupe doivent contenir des données....\tTous les champs répertoriés dans la "
+"boîte de dialogue Groupe doivent contenir des données.\n"
"Veuillez entrer les valeurs manquantes et réessayer."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:17
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:17
msgid ""
-"MSG_TODSGN_VALUES_GTR_0\tAll values specified in the Turnout Designer must be...\tAll values specified in the Turnout Designer must be\n"
+"MSG_TODSGN_VALUES_GTR_0\tAll values specified in the Turnout Designer must "
+"be...\tAll values specified in the Turnout Designer must be\n"
"greater than 0. Correct inappropriate values and try again."
msgstr ""
-"MSG_TODSGN_VALUES_GTR_0\tToutes les valeurs spécifiées dans l'éditeur d'aiguillage doivent ...\tToutes les valeurs spécifiées dans l'éditeur d'aiguillage \n"
-"doivent être supérieures à 0. Corrigez les valeurs inappropriées et réessayez."
+"MSG_TODSGN_VALUES_GTR_0\tToutes les valeurs spécifiées dans l'éditeur "
+"d'aiguillage doivent ...\tToutes les valeurs spécifiées dans l'éditeur "
+"d'aiguillage \n"
+"doivent être supérieures à 0. Corrigez les valeurs inappropriées et "
+"réessayez."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:18
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:18
msgid "MSG_CURVE_OUT_OF_RANGE\tAngle must be between 0\\u00B0 and 360\\u00B0."
msgstr ""
"MSG_CURVE_OUT_OF_RANGE\tL'angle doit être compris entre 0\\u00B0 et "
"360\\u00B0."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:19
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:19
msgid ""
-"MSG_TODSGN_CORNU_TOO_COMPLEX\tThe curves created by the Turnout Designer for a cornu curve have more than 128 segments....\tThe curves created by the Turnout Designer for a cornu curve have more than 128 segments.\n"
+"MSG_TODSGN_CORNU_TOO_COMPLEX\tThe curves created by the Turnout Designer for "
+"a cornu curve have more than 128 segments....\tThe curves created by the "
+"Turnout Designer for a cornu curve have more than 128 segments.\n"
"Try adjusting the end angles and radii to be closer in values."
msgstr ""
-"MSG_TODSGN_CORNU_TOO_COMPLEX\tLes courbes créées avec Conception d'aiguillage pour une courbe de cornu ont plus de 128 segments ...\tLes courbes créées avec Conception d'aiguillage pour une courbe de cornu ont plus de 128 segments.\n"
-"Essayez d'ajuster les angles de fin et les rayons pour vous rapprocher des valeurs."
+"MSG_TODSGN_CORNU_TOO_COMPLEX\tLes courbes créées avec Conception "
+"d'aiguillage pour une courbe de cornu ont plus de 128 segments ...\tLes "
+"courbes créées avec Conception d'aiguillage pour une courbe de cornu ont "
+"plus de 128 segments.\n"
+"Essayez d'ajuster les angles de fin et les rayons pour vous rapprocher des "
+"valeurs."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:20
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:20
#, c-format
msgid ""
-"MSG_CUSTMGM_DELETE_CONFIRM\tAre you sure you want to delete the NNN definition(s)?\tAre you sure you want to delete the\n"
+"MSG_CUSTMGM_DELETE_CONFIRM\tAre you sure you want to delete the NNN "
+"definition(s)?\tAre you sure you want to delete the\n"
"%d definition(s)?"
msgstr ""
-"MSG_CUSTMGM_DELETE_CONFIRM\tÊtes-vous sûr de vouloir supprimer la ou les définition(s) NNN ?\tÊtes-vous sûr de vouloir supprimer le\n"
+"MSG_CUSTMGM_DELETE_CONFIRM\tÊtes-vous sûr de vouloir supprimer la ou les "
+"définition(s) NNN ?\tÊtes-vous sûr de vouloir supprimer le\n"
"%d définition(s)?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:21
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:21
msgid "MSG_WBITMAP_FAILED\tBitmap create or write function failed."
msgstr ""
"MSG_WBITMAP_FAILED\tLa fonction de création ou d'écriture bitmap a échoué."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:22
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:22
msgid "MSG_BITMAP_TOO_LARGE\tBitmap is too large."
msgstr "MSG_BITMAP_TOO_LARGE\tLe bitmap est trop volumineux."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:23
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:23
msgid "MSG_CHANGE_ELEV_MODE\tCannot change elevation mode."
msgstr "MSG_CHANGE_ELEV_MODE\tImpossible de changer le mode d'élevation."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:24
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:24
msgid ""
"MSG_GRID_ENABLE_SPACE_GTR_0\tCannot Enable Grid; spacing must be greater "
"than 0"
@@ -7135,11 +7151,16 @@ msgstr ""
"MSG_GRID_ENABLE_SPACE_GTR_0\tImpossible d'activer la grille; l'espacement "
"doit être supérieur à 0"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:25
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:25
msgid "MSG_LAYER_FREEZE\tCannot freeze current layer"
msgstr "MSG_LAYER_FREEZE\tImpossible de geler le calque actuel"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:26
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:26
+msgid ""
+"MSG_GROUP_NO_PATHS\tNo Paths were detected when grouping selected Tracks."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:27
msgid ""
"MSG_CANT_GROUP_BUMPER1\tCannot Group Bumper Track. The track has been "
"unselected."
@@ -7147,55 +7168,55 @@ msgstr ""
"MSG_CANT_GROUP_BUMPER1\tImpossible de regrouper la voie exceptionnelle. La "
"voie a été désélectionnée."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:27
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:28
#, c-format
msgid "MSG_CANNOT_GROUP_TRACK\tCannot Group selected track type %s."
msgstr ""
"MSG_CANNOT_GROUP_TRACK\tNe peut pas grouper les types de voies %s "
"sélectionnés."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:28
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:29
msgid "MSG_LAYER_HIDE\tCannot hide current layer"
msgstr "MSG_LAYER_HIDE\tImpossible de masquer le calque actuel"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:29
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:30
msgid "MSG_LAYER_MODULE\tCannot turn current layer into a Module"
msgstr "MSG_LAYER_MODULE\tImpossible de transformer le calque actuel en module"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:30
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:31
msgid "MSG_JOIN_EASEMENTS\tCannot Join; Easements do not align or abut."
msgstr ""
"MSG_JOIN_EASEMENTS\tImpossible de raccorder; Les courbes de transition ne "
"sont ni alignées ni abouties."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:31
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:32
#, c-format
msgid ""
-"MSG_TRK_ALREADY_CONN\tFirst|Second track is already connected.\tCannot Join;"
-" %s track is already connected."
+"MSG_TRK_ALREADY_CONN\tFirst|Second track is already connected.\tCannot Join; "
+"%s track is already connected."
msgstr ""
-"MSG_TRK_ALREADY_CONN\tLa première|seconde voie est déjà "
-"connectée.\tImpossible de raccorder; La voie %s est déjà connectée."
+"MSG_TRK_ALREADY_CONN\tLa première|seconde voie est déjà connectée."
+"\tImpossible de raccorder; La voie %s est déjà connectée."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:32
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:33
msgid "MSG_JOIN_TURNTABLE\tCannot join from a turntable, try to a turntable"
msgstr ""
-"MSG_JOIN_TURNTABLE\tImpossible de raccorder depuis un pont tournant, essayez"
-" de vous raccorder à lui"
+"MSG_JOIN_TURNTABLE\tImpossible de raccorder depuis un pont tournant, essayez "
+"de vous raccorder à lui"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:33
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:34
msgid "MSG_JOIN_CORNU_SAME\tCannot Join; Selected endpoints are on same track."
msgstr ""
-"MSG_JOIN_CORNU_SAME\tImpossible de raccorder; Les points de fin sélectionnés"
-" sont sur la même voie."
+"MSG_JOIN_CORNU_SAME\tImpossible de raccorder; Les points de fin sélectionnés "
+"sont sur la même voie."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:34
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:35
msgid "MSG_JOIN_SAME\tCannot Join; Selected endpoints are on same track."
msgstr ""
"MSG_JOIN_SAME\tImpossible de raccorder; Les terminaux sélectionnés sont sur "
"la même voie."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:35
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:36
msgid ""
"MSG_JOIN_NOTBEZIERORCORNU\tCannot Join Bezier or Cornu track if Easement is "
"not Cornu"
@@ -7203,13 +7224,14 @@ msgstr ""
"MSG_JOIN_NOTBEZIERORCORNU\tImpossible de rejoindre la voie Bézier ou Cornu "
"si la voie de transition n'est pas une Cornu"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:36
-msgid "MSG_SELECTED_TRACKS_PARALLEL\tCannot Join; Selected tracks are parallel."
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:37
+msgid ""
+"MSG_SELECTED_TRACKS_PARALLEL\tCannot Join; Selected tracks are parallel."
msgstr ""
"MSG_SELECTED_TRACKS_PARALLEL\tImpossible de raccorder; Les voies "
"sélectionnées sont parallèles."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:37
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:38
#, c-format
msgid ""
"MSG_PRMFIL_OPEN_NEW\tCannot open New Parameter File: FILENAME\tCannot open "
@@ -7218,25 +7240,26 @@ msgstr ""
"MSG_PRMFIL_OPEN_NEW\tImpossible d'ouvrir le nouveau fichier de paramètres : "
"FILENAME\tImpossible d'ouvrir le nouveau fichier de paramètres : %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:38
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:39
msgid "MSG_LAYER_SEL_FROZEN\tCannot select a frozen layer"
msgstr "MSG_LAYER_SEL_FROZEN\tImpossible de sélectionner un calque gelé"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:39
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:40
msgid ""
"MSG_GRID_SHOW_SPACE_GTR_0\tCannot Show Grid; spacing must be greater than 0"
msgstr ""
"MSG_GRID_SHOW_SPACE_GTR_0\tImpossible d'afficher la grille; l'espacement "
"doit être supérieur à 0"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:40
-#, c-format
-msgid "MSG_CANT_SPLIT_TRK\tCannot split TYPE track\tCannot split %s track"
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:41
+#, fuzzy, c-format
+msgid ""
+"MSG_CANT_SPLIT_TRK\tCannot split TYPE track\tCannot split track of type %s"
msgstr ""
"MSG_CANT_SPLIT_TRK\tImpossible de scinder la voie TYPE\tImpossible de "
"scinder la voie %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:41
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:42
#, c-format
msgid ""
"MSG_CUSTMGM_CANT_WRITE\tCannot write to parameter file: FILENAME\tCannot "
@@ -7245,92 +7268,101 @@ msgstr ""
"MSG_CUSTMGM_CANT_WRITE\tImpossible d'écrire dans le fichier de paramètres : "
"FILENAME\tImpossible d'écrire dans le fichier de paramètres : %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:42
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:43
msgid "MSG_CARIMP_DUP_INDEX\tCar Index number duplicated."
msgstr "MSG_CARIMP_DUP_INDEX\tNuméro de véhicule dupliqué."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:43
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:44
msgid ""
"MSG_CONN_PARAMS_TOO_SMALL\tConnection parameters reset to minimum values."
msgstr ""
"MSG_CONN_PARAMS_TOO_SMALL\tLes paramètres de connexion sont réinitialisés "
"aux valeurs minimales."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:44
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:45
msgid "MSG_CONN_PARAMS_TOO_BIG\tConnection parameters reset to maximum values."
msgstr ""
"MSG_CONN_PARAMS_TOO_BIG\tLes paramètres de connexion sont réinitialisés aux "
"valeurs maximales."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:45
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:46
msgid "MSG_CANT_PASTE\tCopy/Paste buffer is empty. There is nothing to Paste."
msgstr ""
"MSG_CANT_PASTE\tLe buffer copier/coller est vide. Il n'y a rien à coller."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:46
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:47
msgid ""
-"MSG_TODSGN_CROSSOVER_TOO_SHORT\tCrossover length is too short. Correct...\tCrossover length is too short. Correct\n"
+"MSG_TODSGN_CROSSOVER_TOO_SHORT\tCrossover length is too short. Correct..."
+"\tCrossover length is too short. Correct\n"
"inappropriate value(s) and try again."
msgstr ""
-"MSG_TODSGN_CROSSOVER_TOO_SHORT\tLa longueur de croisement est trop courte. Corrigez...\tLa longueur de croisement est trop\n"
+"MSG_TODSGN_CROSSOVER_TOO_SHORT\tLa longueur de croisement est trop courte. "
+"Corrigez...\tLa longueur de croisement est trop\n"
"courte. Corrigez la ou les valeur(s) inappropriée-s et réessayez."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:47
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:48
msgid "MSG_CURVE_TOO_LARGE\tCurved track is too large."
msgstr "MSG_CURVE_TOO_LARGE\tLa voie courbe est trop grande."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:48
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:49
msgid ""
-"MSG_TODSGN_REPLACE\tDefinition name is already in use. Saving this...\tDefinition name is already in use. Saving this\n"
+"MSG_TODSGN_REPLACE\tDefinition name is already in use. Saving this..."
+"\tDefinition name is already in use. Saving this\n"
"definition replaces the existing definition.\n"
"\n"
"Do you want to continue?"
msgstr ""
-"MSG_TODSGN_REPLACE\tLe nom de la définition est déjà utilisé. L'enregistrement...\tLe nom de la définition est déjà utilisée. L'enregistrement de cette définition \n"
+"MSG_TODSGN_REPLACE\tLe nom de la définition est déjà utilisé. "
+"L'enregistrement...\tLe nom de la définition est déjà utilisée. "
+"L'enregistrement de cette définition \n"
"remplace la définition existante.\n"
"\n"
"Voulez-vous continuer?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:49
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:50
msgid "MSG_SAVE_CHANGES\tDo you want to save the changes made to your Layout?"
msgstr ""
"MSG_SAVE_CHANGES\tVoulez-vous enregistrer les modifications apportées à "
"votre plan?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:50
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:51
msgid ""
"MSG_CARIMP_DUP_COLUMNS\tDuplicate column headers found in Car Import file."
msgstr ""
"MSG_CARIMP_DUP_COLUMNS\tIl y a des en-têtes de colonne en double trouvées "
"dans le fichier d'importation de véhicule."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:51
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:52
msgid "MSG_EP_ON_PATH\tEndpoint already on Path."
msgstr "MSG_EP_ON_PATH\tLe point de fin est déjà sur le chemin."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:52
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:53
#, c-format
msgid ""
-"MSG_UPGRADE_VERSION1\tFile version %ld is greater than supported...\tFile version %ld is greater than supported\n"
+"MSG_UPGRADE_VERSION1\tFile version %ld is greater than supported...\tFile "
+"version %ld is greater than supported\n"
"version %d. You need to upgrade %s\n"
"to at least version %s."
msgstr ""
-"MSG_UPGRADE_VERSION1\tLa version du fichier %ld est supérieure à celle supportée ...\tLa version du fichier %ld est supérieure \n"
+"MSG_UPGRADE_VERSION1\tLa version du fichier %ld est supérieure à celle "
+"supportée ...\tLa version du fichier %ld est supérieure \n"
"à la version prise en charge %d. Vous devez \n"
"mettre à niveau %s au moins vers la version %s ."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:53
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:54
#, c-format
msgid ""
-"MSG_UPGRADE_VERSION2\tFile version %ld is greater than supported...\tFile version %ld is greater than supported\n"
+"MSG_UPGRADE_VERSION2\tFile version %ld is greater than supported...\tFile "
+"version %ld is greater than supported\n"
"version %d. You need to upgrade your\n"
"version of %s"
msgstr ""
-"MSG_UPGRADE_VERSION2\tLa version du fichier %ld est supérieure à celle supportée...\tLa version du fichier %ld est supérieure à \n"
+"MSG_UPGRADE_VERSION2\tLa version du fichier %ld est supérieure à celle "
+"supportée...\tLa version du fichier %ld est supérieure à \n"
"la version prise en charge %d. Vous devez \n"
"mettre à jour votre version de %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:54
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:55
#, c-format
msgid ""
"MSG_LAYOUT_LINES_SKIPPED\tWhile processing Layout file %s, %d lines were "
@@ -7339,159 +7371,166 @@ msgstr ""
"MSG_LAYOUT_LINES_SKIPPED\tLors du traitement des %sdu fichier de plan, les "
"lignes %d ont été sautées car elles n'étaient pas reconnues."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:55
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:56
#, c-format
msgid ""
-"MSG_PARAM_UPGRADE_VERSION1\tFile version %ld is greater than supported...\tFile version %ld is greater than supported\n"
+"MSG_PARAM_UPGRADE_VERSION1\tFile version %ld is greater than supported..."
+"\tFile version %ld is greater than supported\n"
"version %d. You need to upgrade %s\n"
"to at least version %s."
msgstr ""
-"MSG_PARAM_UPGRADE_VERSION1\tLa version du fichier %ld est supérieure à celle supportée...\tLa version du fichier %ld est supérieure à la\n"
+"MSG_PARAM_UPGRADE_VERSION1\tLa version du fichier %ld est supérieure à celle "
+"supportée...\tLa version du fichier %ld est supérieure à la\n"
"version supportée %d. Vous devez mettre à jour %s\n"
"à au moins la version. %s."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:56
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:57
#, c-format
msgid ""
-"MSG_PARAM_UPGRADE_VERSION2\tFile version %ld is greater than supported...\tFile version %ld is greater than supported\n"
+"MSG_PARAM_UPGRADE_VERSION2\tFile version %ld is greater than supported..."
+"\tFile version %ld is greater than supported\n"
"version %d. You need to upgrade your\n"
"version of %s"
msgstr ""
-"MSG_PARAM_UPGRADE_VERSION2\t La version du fichier %ld est supérieure à celle supportée...\tLa version du fichier %ld est supérieure à la \n"
+"MSG_PARAM_UPGRADE_VERSION2\t La version du fichier %ld est supérieure à "
+"celle supportée...\tLa version du fichier %ld est supérieure à la \n"
"version supportée %d. Vous devez améliorer votre\n"
"version de %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:57
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:58
#, c-format
msgid ""
"MSG_PARAM_LINES_SKIPPED\tWhile processing Parameter file %s, %d lines were "
"skipped because they were not recognized."
msgstr ""
-"MSG_PARAM_LINES_SKIPPED\tLors du traitement du fichier de paramètres %s, les"
-" lignes %d ont été sautées car elles n'étaient pas reconnues."
+"MSG_PARAM_LINES_SKIPPED\tLors du traitement du fichier de paramètres %s, les "
+"lignes %d ont été sautées car elles n'étaient pas reconnues."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:58
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:59
msgid ""
"MSG_MOVE_POINTS_OTHER_SIDE\tFrog angle prevents placement of points. Move "
"points to opposite side of frog."
msgstr ""
-"MSG_MOVE_POINTS_OTHER_SIDE\tL'angle du cœur empêche le placement des points."
-" Déplacez les points sur le côté opposé au cœur."
+"MSG_MOVE_POINTS_OTHER_SIDE\tL'angle du cœur empêche le placement des points. "
+"Déplacez les points sur le côté opposé au cœur."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:59
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:60
msgid "MSG_NO_ROOM_BTW_TRKS\tInsufficient space between existing stall tracks."
msgstr ""
"MSG_NO_ROOM_BTW_TRKS\tEspace insuffisant entre les voies de manœuvre "
"existantes."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:60
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:61
#, c-format
msgid ""
-"MSG_JOIN_DIFFER_ELEV\tJoining tracks with differing elevations "
-"(N.NNN)\tJoining tracks with differing elevations (%0.2f)"
+"MSG_JOIN_DIFFER_ELEV\tJoining tracks with differing elevations (N."
+"NNN)\tJoining tracks with differing elevations (%0.2f)"
msgstr ""
-"MSG_JOIN_DIFFER_ELEV\tJonction de voies d’élévation différentes "
-"(N.NNN)\tJonction de voies d’élévation différentes (%0.2f)"
+"MSG_JOIN_DIFFER_ELEV\tJonction de voies d’élévation différentes (N."
+"NNN)\tJonction de voies d’élévation différentes (%0.2f)"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:61
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:62
msgid "MSG_TRK_DESC_NOT_VISIBLE\tLabel description is hidden"
msgstr "MSG_TRK_DESC_NOT_VISIBLE\tLa description de l'étiquette est masquée"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:62
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:63
msgid "MSG_DESC_NOT_VISIBLE\tLabel descriptions not visible"
msgstr "MSG_DESC_NOT_VISIBLE\tDescriptions d'étiquettes non visibles"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:63
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:64
msgid "MSG_OBJECT_TOO_SHORT\tLength of object is too short."
msgstr "MSG_OBJECT_TOO_SHORT\tLa longueur de l'objet est trop courte."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:64
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:65
#, c-format
msgid ""
-"MSG_PRINT_MAX_SIZE\tMaximum allowed page size is W x H\tMaximum allowed page"
-" size is %s x %s"
+"MSG_PRINT_MAX_SIZE\tMaximum allowed page size is W x H\tMaximum allowed page "
+"size is %s x %s"
msgstr ""
"MSG_PRINT_MAX_SIZE\tLa taille de page maximale autorisée est W x H\tLa "
"taille de page maximale autorisée est %s x %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:65
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:66
msgid ""
-"MSG_NO_PRINTER_SELECTED\tPlease select a printer from the Print Setup "
-"dialog."
+"MSG_NO_PRINTER_SELECTED\tPlease select a printer from the Print Setup dialog."
msgstr ""
"MSG_NO_PRINTER_SELECTED\tVeuillez sélectionner une imprimante dans la boîte "
"de dialogue Configuration de l'impression."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:66
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:67
#, c-format
msgid ""
-"MSG_PRMFIL_NO_CONTENTS\tNew Parameter File has no CONTENTS line: "
-"FILENAME.\tNew Parameter File has no CONTENTS line: %s"
+"MSG_PRMFIL_NO_CONTENTS\tNew Parameter File has no CONTENTS line: FILENAME."
+"\tNew Parameter File has no CONTENTS line: %s"
msgstr ""
"MSG_PRMFIL_NO_CONTENTS\tLe nouveau fichier de paramètres n'a pas de ligne "
"CONTENTS : FILENAME.\tLe nouveau fichier de paramètres n'a pas de ligne "
"CONTENTS :%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:67
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:68
msgid ""
-"MSG_NO_CARS\tNo Cars are defined for the current scale....\tNo Cars are defined for the current scale.\n"
+"MSG_NO_CARS\tNo Cars are defined for the current scale....\tNo Cars are "
+"defined for the current scale.\n"
"\n"
"Do you want to use the Car Inventory dialog?"
msgstr ""
-"MSG_NO_CARS\tAucune voiture n'est définie pour l'échelle actuelle ...\tAucune voiture n'est définie pour l'échelle actuelle.\n"
+"MSG_NO_CARS\tAucune voiture n'est définie pour l'échelle actuelle ..."
+"\tAucune voiture n'est définie pour l'échelle actuelle.\n"
"\n"
"Voulez-vous utiliser la boîte de dialogue Car Inventory ?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:68
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:69
msgid ""
-"MSG_NO_CARPROTO\tNo Car Prototypes are defined....\tNo Car Prototypes are defined.\n"
+"MSG_NO_CARPROTO\tNo Car Prototypes are defined....\tNo Car Prototypes are "
+"defined.\n"
"Load a Prototype definition file using the\n"
"Parameter Files dialog or create a Prototype\n"
"definition using the Car Prototype dialog."
msgstr ""
-"MSG_NO_CARPROTO\tAucun prototype de voiture n'est défini ....\tAucun prototype de voiture n'est défini.\n"
+"MSG_NO_CARPROTO\tAucun prototype de voiture n'est défini ....\tAucun "
+"prototype de voiture n'est défini.\n"
"Chargez un fichier de définition de prototype à l'aide de la boîte \n"
"de dialogue Fichiers de paramètres ou créez une définition de \n"
"prototype à l'aide de la boîte de dialogue Prototype de voiture."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:69
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:70
msgid "MSG_CARIMP_NO_DATA\tNo data present in Car Import file."
msgstr ""
"MSG_CARIMP_NO_DATA\tAucune donnée présente dans le fichier d'importation de "
"véhicule."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:70
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:71
msgid "MSG_PRINT_NO_PAGES\tNo pages selected for printing."
msgstr "MSG_PRINT_NO_PAGES\tAucune page sélectionnée pour l'impression."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:71
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:72
msgid "MSG_NO_PATH_TO_EP\tNo path between Profile and selected endpoint."
msgstr ""
"MSG_NO_PATH_TO_EP\tIl n'y a pas de connexion entre le profil et le point "
"final sélectionné."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:72
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:73
#, c-format
msgid ""
-"MSG_PRMFIL_NO_MAP\tNo Parameter File Map for CONTENTS\tNo Parameter File Map"
-" for %s"
+"MSG_PRMFIL_NO_MAP\tNo Parameter File Map for CONTENTS\tNo Parameter File Map "
+"for %s"
msgstr ""
"MSG_PRMFIL_NO_MAP\tAucun fichier de paramètre de carte pour CONTENTS\tLe "
"nouveau fichier de paramètres %s ne peut pas être ouvert"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:73
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:74
msgid "MSG_NO_SELECTED_TRK\tNo track(s) selected!"
msgstr "MSG_NO_SELECTED_TRK\tAucune voie(s) sélectionnée!"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:74
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:75
msgid ""
"MSG_NO_EMPTY_LAYER\tNo layer was found that has no contents, so the module "
"can not be imported"
msgstr ""
-"MSG_NO_EMPTY_LAYER\tAucune couche n'a été trouvée sans contenu, le module ne"
-" peut donc pas être importé"
+"MSG_NO_EMPTY_LAYER\tAucune couche n'a été trouvée sans contenu, le module ne "
+"peut donc pas être importé"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:75
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:76
msgid ""
"MSG_NO_UNFROZEN_LAYER\tNo layer was found that wasn't frozen. Layer 0 is "
"unfrozen."
@@ -7499,140 +7538,150 @@ msgstr ""
"MSG_NO_UNFROZEN_LAYER\tAucune couche n'a été trouvée qui n'était pas gelée. "
"La couche 0 n'est pas gelée."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:76
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:77
msgid ""
"MSG_NOT_UNFROZEN_LAYER\tThe current layer was defined as frozen. It is now "
"unfrozen."
msgstr ""
-"MSG_NOT_UNFROZEN_LAYER\tAucune couche n'a été trouvée qui n'était pas gelée."
-" La couche 0 n'est pas gelée."
+"MSG_NOT_UNFROZEN_LAYER\tAucune couche n'a été trouvée qui n'était pas gelée. "
+"La couche 0 n'est pas gelée."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:77
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:78
#, c-format
msgid ""
"MSG_NO_TURNOUTS_AVAILABLE\tNo Turnouts|Structures are available.\tNo %s are "
"available."
msgstr ""
-"MSG_NO_TURNOUTS_AVAILABLE\tAucun aiguillages|bâtiments sont "
-"disponibles.\tAucun %s n'est disponible."
+"MSG_NO_TURNOUTS_AVAILABLE\tAucun aiguillages|bâtiments sont disponibles."
+"\tAucun %s n'est disponible."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:78
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:79
msgid ""
-"MSG_CARDESC_VALUE_ZERO\tNumeric values on the Car Description...\tNumeric values on the Car Description\n"
+"MSG_CARDESC_VALUE_ZERO\tNumeric values on the Car Description...\tNumeric "
+"values on the Car Description\n"
"dialog must be greater than 0."
msgstr ""
-"MSG_CARDESC_VALUE_ZERO\tValeurs numériques de la description de véhicule…\tValeurs numériques de la description de véhicule\n"
+"MSG_CARDESC_VALUE_ZERO\tValeurs numériques de la description de véhicule…"
+"\tValeurs numériques de la description de véhicule\n"
"Doit être supérieur à 0."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:79
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:80
msgid "MSG_MOVE_OUT_OF_BOUNDS\tObject has moved beyond room boundaries."
msgstr "MSG_MOVE_OUT_OF_BOUNDS\tL'objet a dépassé les limites de la pièce."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:80
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:81
msgid ""
"MSG_PARALLEL_SEP_GTR_0\tParallel separation must be greater than 0, or the "
"new guage must be different than the old."
msgstr ""
-"MSG_PARALLEL_SEP_GTR_0\tLa séparation parallèle doit être supérieure à 0, ou"
-" le nouveau gabarit doit être différent de l'ancien."
+"MSG_PARALLEL_SEP_GTR_0\tLa séparation parallèle doit être supérieure à 0, ou "
+"le nouveau gabarit doit être différent de l'ancien."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:81
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:82
msgid ""
-"MSG_CARPART_DUPNAME\tPart Number for this Manufacturer already exists....\tPart Number for this Manufacturer already exists.\n"
+"MSG_CARPART_DUPNAME\tPart Number for this Manufacturer already exists...."
+"\tPart Number for this Manufacturer already exists.\n"
"\n"
"Do you want to update it?"
msgstr ""
-"MSG_CARPART_DUPNAME\tLe numéro de pièce de ce fabricant existe déjà....\tLe numéro de pièce de ce fabricant existe déjà.\n"
+"MSG_CARPART_DUPNAME\tLe numéro de pièce de ce fabricant existe déjà....\tLe "
+"numéro de pièce de ce fabricant existe déjà.\n"
"\n"
"Voulez-vous le mettre à jour?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:82
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:83
#, c-format
msgid ""
"MSG_PLAYBACK_LISTENTRY\tPlayback: Cannot find list entry: NAME\tPlayback: "
"Cannot find list entry: %s"
msgstr ""
-"MSG_PLAYBACK_LISTENTRY\tLecture : entrée de liste introuvable : NOM\tLecture"
-" : entrée de liste introuvable : %s"
+"MSG_PLAYBACK_LISTENTRY\tLecture : entrée de liste introuvable : "
+"NOM\tLecture : entrée de liste introuvable : %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:83
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:84
#, c-format
msgid ""
-"MSG_PLAYBACK_VERSION_UPGRADE\tPlayback file version %ld is...\tPlayback file version %ld is\n"
+"MSG_PLAYBACK_VERSION_UPGRADE\tPlayback file version %ld is...\tPlayback file "
+"version %ld is\n"
"greater than supported version %d\n"
"You need to upgrade your version of %s"
msgstr ""
-"MSG_PLAYBACK_VERSION_UPGRADE\tLa version du fichier de lecture %ld est ...\tLa version du fichier de lecture %ld est\n"
+"MSG_PLAYBACK_VERSION_UPGRADE\tLa version du fichier de lecture %ld est ..."
+"\tLa version du fichier de lecture %ld est\n"
"supérieure à la version prise en charge %d\n"
"Vous devez mettre à jour votre version de %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:84
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:85
#, c-format
msgid ""
-"MSG_DOMOUSE_BAD_OP\tPlayback: unknown action NNN\tPlayback: unknown action "
-"%d"
+"MSG_DOMOUSE_BAD_OP\tPlayback: unknown action NNN\tPlayback: unknown action %d"
msgstr ""
-"MSG_DOMOUSE_BAD_OP\tLecture : action inconnue NNN\tLecture : action inconnue"
-" %d"
+"MSG_DOMOUSE_BAD_OP\tLecture : action inconnue NNN\tLecture : action inconnue "
+"%d"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:85
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:86
msgid "MSG_MOVE_POINTS_AWAY_CLOSE\tPoints are to close to frog; move away."
msgstr ""
-"MSG_MOVE_POINTS_AWAY_CLOSE\tLes points sont trop proches du cœur; "
-"s'éloigner."
+"MSG_MOVE_POINTS_AWAY_CLOSE\tLes points sont trop proches du cœur; s'éloigner."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:86
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:87
msgid "MSG_POLY_SHAPES_3_SIDES\tPolygons must have at least 3 nodes."
msgstr "MSG_POLY_SHAPES_3_SIDES\tLes polygones doivent avoir au moins 3 nodes."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:87
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:88
msgid "MSG_POLY_MULTIPLE_SELECTED\tCan't delete multiple points at once"
msgstr ""
"MSG_POLY_MULTIPLE_SELECTED\tImpossible de supprimer plusieurs points à la "
"fois"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:88
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:89
msgid "MSG_POLY_NOTHING_SELECTED\tNo Point on a Poly shape selected."
-msgstr "MSG_POLY_NOTHING_SELECTED\tAucun point sur une forme poly sélectionnée."
+msgstr ""
+"MSG_POLY_NOTHING_SELECTED\tAucun point sur une forme poly sélectionnée."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:89
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:90
msgid ""
-"MSG_CARPROTO_DUPNAME\tPrototype name already exists....\tPrototype name already exists.\n"
+"MSG_CARPROTO_DUPNAME\tPrototype name already exists....\tPrototype name "
+"already exists.\n"
"\n"
"Do you want to update it?"
msgstr ""
-"MSG_CARPROTO_DUPNAME\tLe nom du prototype existe déjà....\tLe nom du prototype existe déjà.\n"
+"MSG_CARPROTO_DUPNAME\tLe nom du prototype existe déjà....\tLe nom du "
+"prototype existe déjà.\n"
"\n"
"Voulez-vous le mettre à jour?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:90
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:91
msgid "MSG_RADIUS_GTR_0\tRadius must be greater than 0."
msgstr "MSG_RADIUS_GTR_0\tLe rayon doit être supérieur à 0."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:91
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:92
msgid "MSG_RADIUS_GTR_10000\tRadius must be less than 10000."
msgstr "MSG_RADIUS_GTR_10000\tLe rayon doit être inférieur à 10000."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:92
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:93
msgid ""
-"MSG_RADIUS_TOO_BIG\tThe Circle or Helix will not fit within the layouts room"
-" parameters (Height and Width)."
+"MSG_RADIUS_TOO_BIG\tThe Circle or Helix will not fit within the layouts room "
+"parameters (Height and Width)."
msgstr ""
"MSG_RADIUS_TOO_BIG\tLe cercle ou l'hélicoïde ne rentre pas dans le plan de "
"la pièce (hauteur et largeur)."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:93
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:94
#, c-format
msgid ""
-"MSG_RESCALE_TOO_BIG\tRescaled tracks do not fit within layouts room parameters...\tRescaled tracks do not fit within layouts room parameters\n"
+"MSG_RESCALE_TOO_BIG\tRescaled tracks do not fit within layouts room "
+"parameters...\tRescaled tracks do not fit within layouts room parameters\n"
"(Height and width). The layouts room parameters should be\n"
"set to at least %s by %s."
msgstr ""
-"MSG_RESCALE_TOO_BIG\tLes voies récemment mises à l'échelle ne rentrent pas dans la pièce...\tLes voies récemment mises à l'échelle ne rentrent pas dans la pièce\n"
+"MSG_RESCALE_TOO_BIG\tLes voies récemment mises à l'échelle ne rentrent pas "
+"dans la pièce...\tLes voies récemment mises à l'échelle ne rentrent pas dans "
+"la pièce\n"
"(Longueur et largeur). La taille requise est\n"
"au moins %s sur %s."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:94
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:95
msgid ""
"MSG_CARIMP_MISSING_COLUMNS\tRequired column headers missing from Car Import "
"file."
@@ -7640,32 +7689,35 @@ msgstr ""
"MSG_CARIMP_MISSING_COLUMNS\tLes en-têtes de colonne requises sont absentes "
"du fichier d'importation de véhicule."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:95
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:96
#, c-format
msgid ""
"MSG_2ND_TRK_NOT_SEL_UNSEL\tSecond track must be selected|unselected\tSecond "
"track must be %s."
msgstr ""
-"MSG_2ND_TRK_NOT_SEL_UNSEL\t La deuxième voie peut être sélectionnée ou non\t"
-" La deuxième voie doit être %s."
+"MSG_2ND_TRK_NOT_SEL_UNSEL\t La deuxième voie peut être sélectionnée ou non\t "
+"La deuxième voie doit être %s."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:96
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:97
msgid "MSG_OUT_OF_BOUNDS\tSelected page is out of bounds."
msgstr "MSG_OUT_OF_BOUNDS\tLa page sélectionnée est hors de portée."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:97
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:98
msgid "MSG_SEL_POS_FIRST\tSelect position prior to entering Text."
msgstr "MSG_SEL_POS_FIRST\tSélectionnez la position avant de saisir du texte."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:98
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:99
msgid ""
-"MSG_CARPROTO_BADSEGS\tSelected shapes must define a rectangular area ...\tSelected shapes must define a rectangular\n"
+"MSG_CARPROTO_BADSEGS\tSelected shapes must define a rectangular area ..."
+"\tSelected shapes must define a rectangular\n"
"area with length greater than height."
msgstr ""
-"MSG_CARPROTO_BADSEGS\tLes formes sélectionnées doivent définir une zone rectangulaire ...\tLes formes sélectionnées doivent définir une zone rectangulaire\n"
+"MSG_CARPROTO_BADSEGS\tLes formes sélectionnées doivent définir une zone "
+"rectangulaire ...\tLes formes sélectionnées doivent définir une zone "
+"rectangulaire\n"
"zone de longueur supérieure à la hauteur."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:99
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:100
msgid ""
"MSG_TOO_FAR_APART_DIVERGE\tSelected tracks deviate too much or are too far "
"apart from each other."
@@ -7673,132 +7725,165 @@ msgstr ""
"MSG_TOO_FAR_APART_DIVERGE\tLes voies sélectionnées s'écartent trop ou sont "
"trop éloignées les unes des autres."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:100
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:101
msgid "MSG_COMMAND_DISABLED\tSpecified command disabled."
msgstr "MSG_COMMAND_DISABLED\tCommande spécifiée désactivée."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:101
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:102
+#, c-format
+msgid ""
+"MSG_SEGMENT_NOT_ON_PATH\tTrack segment N not on Path for Turnout\tTrack "
+"segment %d not on any Path for %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:103
msgid "MSG_SPLIT_POS_BTW_MERGEPTS\tSplit position between Turnout Points"
msgstr ""
"MSG_SPLIT_POS_BTW_MERGEPTS\tLe point de séparation est situé entre les "
"points de l'aiguillage"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:102
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:104
msgid "MSG_SPLIT_PATH_NOT_UNIQUE\tSplit position not on unique path"
msgstr "MSG_SPLIT_PATH_NOT_UNIQUE\tLe point de séparation n'est pas clair"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:103
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:105
#, c-format
msgid ""
-"MSG_CARIMP_MISSING_DIMS\tThe following car has no dimensions and a...\tThe following car has no dimensions and a\n"
+"MSG_CARIMP_MISSING_DIMS\tThe following car has no dimensions and a...\tThe "
+"following car has no dimensions and a\n"
"Car Part description can not be found.\n"
"\n"
"%s\n"
"\n"
"Do you wish to continue importing other Cars?"
msgstr ""
-"MSG_CARIMP_MISSING_DIMS\tLe véhicule suivant n'a pas de dimensions et une...\tLe véhicule suivant n'a pas de dimensions et une\n"
+"MSG_CARIMP_MISSING_DIMS\tLe véhicule suivant n'a pas de dimensions et une..."
+"\tLe véhicule suivant n'a pas de dimensions et une\n"
"description de véhicule n'existe pas.\n"
"\n"
"%s\n"
"\n"
"Souhaitez-vous continuer à importer d'autres véhicule ?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:104
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:106
#, c-format
msgid ""
-"MSG_CARIMP_MISSING_PARTNO\tThe following car has no Part Number...\tThe following car has no Part Number\n"
+"MSG_CARIMP_MISSING_PARTNO\tThe following car has no Part Number...\tThe "
+"following car has no Part Number\n"
"\n"
"%s\n"
"\n"
"Do you wish to continue importing other Cars?"
msgstr ""
-"MSG_CARIMP_MISSING_PARTNO\tLe véhicule suivant n'a pas de numéro de pièce...\tLe véhicule suivant n'a pas de numéro de pièce\n"
+"MSG_CARIMP_MISSING_PARTNO\tLe véhicule suivant n'a pas de numéro de pièce..."
+"\tLe véhicule suivant n'a pas de numéro de pièce\n"
"\n"
"%s\n"
"\n"
"Souhaitez-vous continuer à importer d'autres matériels roulants ?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:105
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:107
#, c-format
msgid ""
-"MSG_CARIMP_IGNORED_COLUMN\tThe following column in the Car Import file will be ignored:...\tThe following column in the Car Import file will be ignored:\n"
+"MSG_CARIMP_IGNORED_COLUMN\tThe following column in the Car Import file will "
+"be ignored:...\tThe following column in the Car Import file will be "
+"ignored:\n"
"\n"
"%s"
msgstr ""
-"MSG_CARIMP_IGNORED_COLUMN\tLa colonne suivante du fichier d'importation de véhicule sera ignorée :...\tLa colonne suivante du fichier d'importation de véhicule sera ignorée :\n"
+"MSG_CARIMP_IGNORED_COLUMN\tLa colonne suivante du fichier d'importation de "
+"véhicule sera ignorée :...\tLa colonne suivante du fichier d'importation de "
+"véhicule sera ignorée :\n"
"\n"
"%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:106
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:108
msgid ""
"MSG_CANT_MOVE_UNDER_TRAIN\tThe position of a turnout or turntable cannot be "
"changed while occupied by a train."
msgstr ""
-"MSG_CANT_MOVE_UNDER_TRAIN\tLa position d'un aiguillage ou d'un pont tournant"
-" ne peut pas être modifiée tant qu'elle est occupée par un train."
+"MSG_CANT_MOVE_UNDER_TRAIN\tLa position d'un aiguillage ou d'un pont tournant "
+"ne peut pas être modifiée tant qu'elle est occupée par un train."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:107
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:109
msgid ""
-"MSG_STRUCT_NO_STRUCTS\tThere are no structures to choose from in the structure...\tThere are no structures to choose from in the structure\n"
+"MSG_STRUCT_NO_STRUCTS\tThere are no structures to choose from in the "
+"structure...\tThere are no structures to choose from in the structure\n"
"selection list. Please check your SCALE, select the\n"
"<File|Parameter Files> menu to load a Parameter File or\n"
"create a new Structure with the Group command."
msgstr ""
-"MSG_STRUCT_NO_STRUCTS\tDans la liste des bâtiments il n'y a pas de bâtiments...\tDans la liste des bâtiments il n'y a pas de bâtiments \n"
+"MSG_STRUCT_NO_STRUCTS\tDans la liste des bâtiments il n'y a pas de "
+"bâtiments...\tDans la liste des bâtiments il n'y a pas de bâtiments \n"
"pouvant être sélectionnés. Vérifiez l’échelle, sélectionnez \n"
"un fichier de paramètres dans l’option de menu \n"
"<Fichier|Fichiers de paramètres> ou créez un nouveau \n"
"bâtiment à l’aide de la commande Grouper."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:108
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:110
msgid ""
-"MSG_TURNOUT_NO_TURNOUT\tThere are no turnouts to choose from in the turnout...\tThere are no turnouts to choose from in the turnout\n"
+"MSG_TURNOUT_NO_TURNOUT\tThere are no turnouts to choose from in the "
+"turnout...\tThere are no turnouts to choose from in the turnout\n"
"selection list. Please check your SCALE, select the\n"
"<Manage|Turnout Designer> menu to enter a new turnout\n"
"or select the <File|Parameter Files> menu to load a\n"
"Parameter File"
msgstr ""
-"MSG_TURNOUT_NO_TURNOUT\tIl n'y a pas d'aiguillage dans la sélection d'aiguillage ...\tIl n'y a pas d'aiguillage dans la sélection d'aiguillage \n"
+"MSG_TURNOUT_NO_TURNOUT\tIl n'y a pas d'aiguillage dans la sélection "
+"d'aiguillage ...\tIl n'y a pas d'aiguillage dans la sélection d'aiguillage \n"
"qui puisse être sélectionné. Vérifiez votre ECHELLE, \n"
"sélectionnez le menu <Gérer|Conception d'aiguillages> \n"
"pour entrer un nouvel aiguillage ou sélectionnez le menu \n"
"<Fichier|Fichiers de paramètres> pour charger un autre \n"
"fichier de paramètres"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:109
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:111
msgid "MSG_NO_UNCONN_EP\tThere are no unconnected end points for this track"
msgstr ""
-"MSG_NO_UNCONN_EP\tIl n'y a pas de points de fin non connectés pour cette "
-"voie"
+"MSG_NO_UNCONN_EP\tIl n'y a pas de points de fin non connectés pour cette voie"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:112
+#, c-format
+msgid ""
+"MSG_SPLITTED_OBJECT_TOO_SHORT\tThe resulting length of one track piece is "
+"shorter than the minimum length of %d."
+msgstr ""
-#: ../../../../build/xtrkcad-old/app/help/messages.h:110
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:113
msgid "MSG_PULL_FEW_SECTIONS\tThere are too few sections in this loop."
msgstr "MSG_PULL_FEW_SECTIONS\tIl y a trop peu de sections dans cette boucle."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:111
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:114
msgid "MSG_NO_REDO\tThere is nothing to redo!"
msgstr "MSG_NO_REDO\tIl n'y a rien à refaire!"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:112
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:115
msgid "MSG_NO_UNDO\tThere is nothing to undo!"
msgstr "MSG_NO_UNDO\tIl n'y a rien à défaire!"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:113
-msgid "MSG_TOOMANYSEGSINGROUP\tToo many segments in Group."
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:116
+#, fuzzy
+msgid "MSG_TOOMANYSEGSINGROUP\tToo many track segments in Group."
msgstr "MSG_TOOMANYSEGSINGROUP\tTrop de segments dans le groupe."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:114
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:117
+#, fuzzy
+msgid ""
+"MSG_TOOMANYSEGSINGROUP2\tTrack segments appear too late in Group segment "
+"list."
+msgstr "MSG_TOOMANYSEGSINGROUP\tTrop de segments dans le groupe."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:118
msgid "MSG_CANNOT_CHANGE\tTrack cannot be changed."
msgstr "MSG_CANNOT_CHANGE\tLa voie ne peut pas être modifiée."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:115
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:119
msgid "MSG_POINT_INSIDE_TURNTABLE\tTrack endpoint is within turntable radius."
msgstr ""
"MSG_POINT_INSIDE_TURNTABLE\tLe point de fin de la voie est à l'intérieur du "
"pont tournant."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:116
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:120
msgid ""
"MSG_MOVE_POINTS_AWAY_NO_INTERSECTION\tTrack intersection not possible; move "
"points away from frog."
@@ -7806,16 +7891,15 @@ msgstr ""
"MSG_MOVE_POINTS_AWAY_NO_INTERSECTION\tIntersection de la voie impossible; "
"éloignez les points du cœur."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:117
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:121
#, c-format
msgid ""
-"MSG_TRK_TOO_SHORT\tTrack is too short by N.NNN\t%strack is too short by "
-"%0.3f"
+"MSG_TRK_TOO_SHORT\tTrack is too short by N.NNN\t%strack is too short by %0.3f"
msgstr ""
"MSG_TRK_TOO_SHORT\tLa voie est trop courte autour de N.NNN\tLa voie %s est "
"trop courte de %0.3f"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:118
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:122
#, c-format
msgid ""
"MSG_RADIUS_LSS_EASE_MIN\tTrack radius (N.NNN) is smaller than easement "
@@ -7825,48 +7909,55 @@ msgstr ""
"de transition minimum (N.NNN).\tLe rayon de la voie (%s) est inférieur à "
"l'arc de transition minimum (%s)."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:119
-msgid "MSG_CANT_MODIFY_FROZEN_TRK\tTracks in a frozen layer cannot be modified."
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:123
+msgid ""
+"MSG_CANT_MODIFY_FROZEN_TRK\tTracks in a frozen layer cannot be modified."
msgstr ""
"MSG_CANT_MODIFY_FROZEN_TRK\tLes voies d'un calque gelé ne peuvent pas être "
"modifiées."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:120
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:124
msgid "MSG_CANT_MODIFY_MODULE_TRK\tTracks in a module cannot be modified."
msgstr ""
"MSG_CANT_MODIFY_MODULE_TRK\tLes voies d'un module ne peuvent pas être "
"modifiées."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:121
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:125
msgid ""
-"MSG_SEGMENTS_DIFFER\tTurnout definition contains non-track segments....\tTurnout definition contains non-track segments.\n"
+"MSG_SEGMENTS_DIFFER\tTurnout definition contains non-track segments...."
+"\tTurnout definition contains non-track segments.\n"
"\n"
"Do you want to include them in this update?"
msgstr ""
-"MSG_SEGMENTS_DIFFER\tLa définition d'aiguillage n'inclut pas que des voies....\tLa définition d'aiguillage n'inclut pas que des voies.\n"
+"MSG_SEGMENTS_DIFFER\tLa définition d'aiguillage n'inclut pas que des "
+"voies....\tLa définition d'aiguillage n'inclut pas que des voies.\n"
"\n"
"Voulez-vous les inclure dans cette mise à jour ?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:122
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:126
msgid "MSG_TURNTABLE_DIAM_GTR_0\tTurntable diameter must greater than 0."
msgstr ""
-"MSG_TURNTABLE_DIAM_GTR_0\tLe diamètre du pont tournant doit être supérieur à"
-" 0."
+"MSG_TURNTABLE_DIAM_GTR_0\tLe diamètre du pont tournant doit être supérieur à "
+"0."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:123
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:127
#, c-format
msgid ""
-"MSG_UNDO_ASSERT\tUndo assertion failure %s:%d...\tUndo assertion failure %s:%d\n"
+"MSG_UNDO_ASSERT\tUndo assertion failure %s:%d...\tUndo assertion failure %s:"
+"%d\n"
"Val = %ld(%lx)\n"
"%s\n"
-"Please report this error to the XTrackCAD project development team at SourceForge."
+"Please report this error to the XTrackCAD project development team at "
+"SourceForge."
msgstr ""
-"MSG_UNDO_ASSERT\tAnnuler l'assertion d'échec %s:%d...\tAnnuler l'assertion d'échec %s:%d\n"
+"MSG_UNDO_ASSERT\tAnnuler l'assertion d'échec %s:%d...\tAnnuler l'assertion "
+"d'échec %s:%d\n"
"Val = %ld(%lx)\n"
"%s\n"
-"Signalez cette erreur à l'équipe de développement du projet XTrackCAD de SourceForge."
+"Signalez cette erreur à l'équipe de développement du projet XTrackCAD de "
+"SourceForge."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:124
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:128
#, c-format
msgid ""
"MSG_PROG_CORRUPTED\tCritical file damaged!...\tCritical file damaged!\n"
@@ -7875,13 +7966,14 @@ msgid ""
"\n"
"Please reinstall software."
msgstr ""
-"MSG_PROG_CORRUPTED\tFichier critique endommagé !...\tFichier critique endommagé!\n"
+"MSG_PROG_CORRUPTED\tFichier critique endommagé !...\tFichier critique "
+"endommagé!\n"
"\n"
"%s est corrompu.\n"
"\n"
"Veuillez réinstaller le logiciel."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:125
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:129
#, c-format
msgid ""
"MSG_ENTERED_STRING_TRUNCATED\tThe entered text is too long. Maximum length "
@@ -7890,33 +7982,36 @@ msgstr ""
"MSG_ENTERED_STRING_TRUNCATED\tLe texte saisi est trop long. La longueur "
"maximale est %d."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:126
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:130
#, c-format
msgid "MSG_PT_IS_NOT_TRK\t[X Y] is not a track\t[%s %s] is not a track."
-msgstr "MSG_PT_IS_NOT_TRK\t[X Y] n'est pas une voie\t[%s %s] n'est pas une voie."
+msgstr ""
+"MSG_PT_IS_NOT_TRK\t[X Y] n'est pas une voie\t[%s %s] n'est pas une voie."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:127
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:131
msgid ""
-"MSG_BITMAP_SIZE_WARNING\tYou have specified a large bitmap....\tYou have specified a large bitmap.\n"
+"MSG_BITMAP_SIZE_WARNING\tYou have specified a large bitmap....\tYou have "
+"specified a large bitmap.\n"
"\n"
"Are you sure you want to continue?"
msgstr ""
-"MSG_BITMAP_SIZE_WARNING\tVous avez spécifié un bitmap volumineux....\tVous avez spécifié un bitmap volumineux\n"
+"MSG_BITMAP_SIZE_WARNING\tVous avez spécifié un bitmap volumineux....\tVous "
+"avez spécifié un bitmap volumineux\n"
"\n"
"Etes-vous sur de vouloir continuer?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:128
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:132
msgid "Icon Size change will take effect on next program start."
msgstr ""
"Le changement de taille de l'icône prendra effet au prochain démarrage du "
"programme."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:129
-#, c-format
-msgid "Are you sure you want to delete these %d car(s)?"
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:133
+#, fuzzy, c-format
+msgid "Are you sure you want to delete these %d car(s) from your inventory?"
msgstr "Êtes-vous sûr de vouloir supprimer ces %d matériel(s) roulant-s ?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:130
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:134
#, c-format
msgid ""
"Cannot open %s file:\n"
@@ -7925,120 +8020,119 @@ msgstr ""
"Impossible d'ouvrir le fichier %s :\n"
"%s : %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:131
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:135
#, c-format
msgid "Cannot create directory: %s - %s"
msgstr "Impossible de créer le répertoire : %s -%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:132
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:136
#, c-format
msgid "Cannot open directory: %s"
msgstr "Impossible d'ouvrir le répertoire : %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:133
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:137
#, c-format
msgid "Path for deletion is not a directory: %s"
msgstr "Le chemin de suppression n'est pas un répertoire : %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:134
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:138
#, c-format
msgid "Open failed for directory: %s"
msgstr "Échec de l'ouverture du répertoire : %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:135
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:139
#, c-format
msgid "Can't add directory record %s to zip - %s"
msgstr "Impossible d'ajouter l'enregistrement du répertoire %s au zip -%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:136
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:140
#, c-format
msgid "Can't add file record %s to zip at %s - %s"
msgstr "Impossible d'ajouter l'enregistrement du fichier %s au zip %s - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:137
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:141
#, c-format
msgid "Can't create zip %s - %s"
msgstr "Impossible de créer le zip %s - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:138
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:142
#, c-format
msgid "Close failure for zip %s - %s"
msgstr "Échec de fermeture pour le zip %s - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:139
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:143
#, c-format
msgid "Rename failure for zip from %s to %s - %s"
msgstr "Échec de changement de nom pour le zip de %s à %s - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:140
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:144
#, c-format
msgid "Open failure for zip %s - %s"
msgstr "Échec d'ouverture du zip %s -%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:141
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:145
#, c-format
msgid "Index failure for zip %s - %s"
msgstr "Echec de l'index pour les zip %s - %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:142
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:146
#, c-format
msgid "Open read file failure %s %s"
msgstr "Échec de l'ouverture du fichier pour la lecture de %s %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:143
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:147
#, c-format
msgid "Open file in zip failure %s %s"
msgstr "Erreur lors de l'ouverture du fichier dans le zip %s %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:144
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:148
#, c-format
msgid "Unlink failed for: %s"
msgstr "La déconnexion a échoué pour : %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:145
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:149
#, c-format
msgid "Remove Directory failed for: %s"
msgstr "Échec de la suppression du répertoire pour : %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:146
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:150
#, c-format
msgid "Cannot save archive to %s from directory: %s"
-msgstr ""
-"Impossible d'enregistrer l'archive dans %s à partir du répertoire : %s"
+msgstr "Impossible d'enregistrer l'archive dans %s à partir du répertoire : %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:147
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:151
#, c-format
msgid "Cannot save manifest file to %s"
msgstr "Impossible d'enregistrer le fichier manifeste dans %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:148
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:152
#, c-format
msgid "Cannot open manifest file %s"
msgstr "Impossible d'ouvrir le fichier manifeste %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:149
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:153
#, c-format
msgid "Cannot unpack file: %s for file: %s in directory: %s"
msgstr ""
"Impossible de décompresser le fichier : %s pour le fichier : %s dans le "
"répertoire : %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:150
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:154
#, c-format
msgid "Cannot open file %s"
msgstr "Impossible d'ouvrir le fichier %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:151
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:155
#, c-format
msgid "Cannot copy file %s into directory %s"
msgstr "Impossible de copier le fichier %s dans le répertoire %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:152
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:156
#, c-format
msgid "Unrecognized Option: %s"
msgstr "Option non reconnue : %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:153
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:157
#, c-format
msgid ""
"End-Of-Line is unexpected in a quoted field.\n"
@@ -8051,7 +8145,7 @@ msgstr ""
"\n"
"Voulez-vous continuer à lire le fichier?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:154
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:158
#, c-format
msgid ""
"A comma was expected after this quoted field.\n"
@@ -8064,7 +8158,7 @@ msgstr ""
"\n"
"Voulez-vous continuer à charger le fichier?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:155
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:159
#, c-format
msgid ""
"Error \\\\\"%s\\\\\" occurred while writing %s.\n"
@@ -8073,7 +8167,7 @@ msgstr ""
"Une erreur \\\\\"%s\\\\\" s'est produite lors de l'écriture de %s.\n"
"Veuillez vérifier l'espace disque et l'état du système."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:156
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:160
#, c-format
msgid ""
"At least one path for the Turnout T%d does not\n"
@@ -8084,28 +8178,28 @@ msgstr ""
"termine pas sur un bout. Une telle voie ne peut pas être groupée.\n"
"La voie a été désélectionnée."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:157
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:161
msgid "inv-pathEndTrk on Path."
msgstr "tracé invalide de fin de voie."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:158
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:162
msgid "inv-pathStartTrk on Path"
msgstr "tracé invalide de début de voie"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:159
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:163
#, c-format
msgid "%s:%d- %s"
msgstr "%s:%d- %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:160
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:164
msgid "pathEndTrk not on Path."
msgstr "tracé de fin de voie invalide."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:161
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:165
msgid "pathStartTrk not on Path."
msgstr "tracé invalide de début de voie."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:162
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:166
msgid ""
"The tracks cannot be connected together.\n"
"\n"
@@ -8119,7 +8213,7 @@ msgstr ""
"ou augmentez la valeur Angle de connexion sur\n"
"la boîte de dialogue \"Options|Préférences\"."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:163
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:167
msgid ""
"The tracks cannot be connected together.\n"
"\n"
@@ -8133,7 +8227,7 @@ msgstr ""
"ou augmentez la distance de connexion et\n"
"Valeurs d'angle dans la boîte de dialogue \"Options|Préférences\""
-#: ../../../../build/xtrkcad-old/app/help/messages.h:164
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:168
msgid ""
"The tracks cannot be connected together.\n"
"\n"
@@ -8146,7 +8240,7 @@ msgstr ""
"ou augmentez la distance de connexion sur\n"
"la boîte de dialogue \"Options|Préférences\""
-#: ../../../../build/xtrkcad-old/app/help/messages.h:165
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:169
msgid ""
"The first track for the Align\n"
"Rotate command must be Selected."
@@ -8154,7 +8248,7 @@ msgstr ""
"Première voie pour \"Alignement\n"
"La commande \"Rotation\" doit être sélectionnée."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:166
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:170
msgid ""
"The second track for the Align\n"
"Rotate command must be Unselected."
@@ -8162,15 +8256,15 @@ msgstr ""
"La deuxième voie pour l'alignement\n"
"La commande de rotation doit être désélectionnée."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:167
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:171
msgid "Too many selected tracks, drawing tracks as End Point."
msgstr "Trop de voies sélectionnées, seuls les points de fin sont affichés."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:168
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:172
msgid "Select an endpoint between two tracks."
msgstr "Sélectionnez un point de fin entre deux voies."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:169
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:173
msgid ""
"According to values that have been entered the diverging\n"
"track does not connect with the tangent track. Please\n"
@@ -8184,11 +8278,11 @@ msgstr ""
"cœur ou en degrés, comme spécifié par les boutons \n"
"radio du mode Angle."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:170
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:174
msgid "Moved before the end of the turnout"
msgstr "Déplacé avant la fin de l'aiguillage"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:171
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:175
msgid ""
"The Coupled Length must be greater than the Car Length,\n"
"and the Coupler Length must be greater than 0."
@@ -8196,7 +8290,7 @@ msgstr ""
"La longueur attelée doit être supérieure à la longueur du chaudron,\n"
"et la longueur de l'attelage doit être supérieure à 0."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:172
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:176
msgid ""
"The Car Length value must be greater\n"
"than the Car Width value."
@@ -8204,7 +8298,7 @@ msgstr ""
"La longueur du véhicule doit \n"
"être supérieure à sa largeur."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:173
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:177
msgid ""
"The specified Index is already in use.\n"
"The Index will be updated to the next available value."
@@ -8212,7 +8306,7 @@ msgstr ""
"Le numéro d'index spécifié est déjà pris.\n"
"Le numéro d'index est mis à jour avec la valeur libre suivante."
-#: ../../../../build/xtrkcad-old/app/help/messages.h:174
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:178
msgid ""
"You have changed values for this object.\n"
"\n"
@@ -8222,7 +8316,7 @@ msgstr ""
"\n"
"Voulez-vous vraiment fermer cette boîte de dialogue?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:175
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:179
#, c-format
msgid ""
"File version %ld is lower than the minimum\n"
@@ -8234,18 +8328,19 @@ msgstr ""
"devez mettre à jour votre fichier du projet \n"
"utilisant une ancienne version de %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:176
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:180
#, c-format
msgid ""
"File version %ld is lower than the minimum\n"
-"supported version %d.This parameter file will only work using an older version of %s"
+"supported version %d.This parameter file will only work using an older "
+"version of %s"
msgstr ""
"La version du fichier %ld est inférieure à la \n"
"version minimale supportée %d. Ce fichier \n"
"de paramètres ne fonctionnera qu'avec une \n"
"ancienne version de %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:177
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:181
#, c-format
msgid ""
"%s cannot read the demo file:\n"
@@ -8254,16 +8349,16 @@ msgstr ""
"%s ne peut pas lire le fichier de démonstration:\n"
"%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:178
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:182
#, c-format
msgid "doDemo: bad number (%d)"
msgstr "doDemo : nombre invalide (%d)"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:179
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:183
msgid "Playback TIMEEND without TIMESTART"
msgstr "TIMEEND en lecture sans TIMESTART"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:180
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:184
#, c-format
msgid ""
"Unknown playback command (%d)\n"
@@ -8272,7 +8367,7 @@ msgstr ""
"Commande de lecture inconnue (%d)\n"
"%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:181
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:185
#, c-format
msgid ""
"Playback file version %ld is lower than the\n"
@@ -8285,2341 +8380,88 @@ msgstr ""
"Vous devez mettre à jour votre fichier de plan \n"
"en utilisant une ancienne version de %s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:182
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:186
#, c-format
-msgid "Scale index (%d) is not valid"
-msgstr "L'indice d'échelle (%d) n'est pas valide"
+msgid ""
+"MSG_BAD_SCALE_INDEX\tScale index (NNN) is not valid. Do you want use the "
+"current layout scale (SCALE)? Or create an \"Unknown\" scale? See 'Help|"
+"Recent Messages' for details.\tScale index (%d) is not valid.\n"
+"Do you want use the current layout scale (%s)?\n"
+"Or create an \"Unknown\" scale?\n"
+"See 'Help|Recent Messages' for details."
+msgstr ""
-#: ../../../../build/xtrkcad-old/app/help/messages.h:183
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:187
#, c-format
msgid ""
-"Scale %s is not valid\n"
-"Please check your %s.xtq file"
+"MSG_BAD_SCALE_NAME\tScale \"SCALE1\" is not valid. We will substitute a "
+"dummy scale based on \"SCALE2\". See 'Help|Recent Messages' for details."
+"\tScale \"%s\" is not valid. We will substitute a dummy scale based on "
+"\"%s\".\n"
+"See 'Help|Recent Messages' for details."
msgstr ""
-"L'échelle %s n'est pas valide\n"
-"Veuillez vérifier votre fichier %s.xtq"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:184
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:188
msgid "Cannot extend a helix"
msgstr "Impossible d'étendre une hélicoïde"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:185
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:189
msgid "Cannot trim a helix"
msgstr "Impossible de couper une hélicoïde"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:186
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:190
msgid "Ignore further audit notices?"
msgstr "Ignorer les autres indications de protocole?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:187
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:191
#, c-format
msgid "%s"
msgstr "%s"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:188
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:192
msgid "Audit Abort?"
msgstr "Abandonner la vérification ?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:189
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:193
msgid "Write Audit File?"
msgstr "Écrire un fichier journal?"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:190
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:194
#, c-format
msgid "checkTrackLength: Short track length = %0.3f"
msgstr "vérifier la longueur de voie : longueur voie courte =%0.3f"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:191
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:195
#, c-format
msgid "checkTrackLength: unknown type: %d"
msgstr "vérifier la longueur de voie : type inconnu :%d"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:192
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:196
#, c-format
msgid "connectTracks: T%d[%d] T%d[%d] d=%0.3f a=%0.3f"
msgstr "connecter des voies : T%d[%d] T%d[%d] d=%0.3f a=%0.3f"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:193
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:197
#, c-format
msgid "GetAngleAtPoint: bad type(%d) for T(%d)"
msgstr "Obtenir l'angle à un point : type incorrect (%d) pour T (%d)"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:194
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:198
#, c-format
msgid "joinTracks: invalid track type=%d"
msgstr "raccorder des voies : type de voie non valide =%d"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:195
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:199
#, c-format
msgid "resolveIndex: T%d[%d]: T%d doesn\\\\'t exist"
msgstr "revoir l'index : T%d[%d] : T%d n'existe\\\\ pas"
-#: ../../../../build/xtrkcad-old/app/help/messages.h:196
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:200
msgid "Moved beyond the end of the track"
msgstr "Déplacé au-delà de la fin de voie"
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:9
-msgid "Invokes online help for this dialog"
-msgstr "Ouvre l'aide en ligne pour cette boîte de dialogue"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:10
-msgid "Cancels this command"
-msgstr "Annule cette commande"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:11
-msgid "Closes the dialog"
-msgstr "Fermer la fenêtre de dialogue"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:12
-msgid "About program dialog"
-msgstr "Boîte de dialogue \"A propos de\""
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:13
-msgid "Move selected object to top"
-msgstr "Déplacer l'objet sélectionné vers le haut"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:14
-msgid "Raise or lower all selected tracks"
-msgstr "Elever ou abaisser toute les voies sélectionnées"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:15
-msgid "Show a protractor"
-msgstr "Afficher un rapporteur"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:16
-msgid "Turn magnetic snap on or off"
-msgstr "Activer ou désactiver la grille magnétique"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:18
-msgid "Move selected object to bottom"
-msgstr "Déplacer l'objet sélectionné vers le bas"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:19
-msgid "Create a section of track for automation"
-msgstr "Créer une section de voie pour l'automatisation"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:20
-msgid "Edit a block definition "
-msgstr "Editer une définition de bloc "
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:21
-msgid "Create a new Car/Loco description"
-msgstr "Créer une nouvelle description de wagon/voiture/loco"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:22
-msgid "Manage your Car and Loco Inventory"
-msgstr "Gérez votre inventaire de véhicule"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:23
-msgid "Create track circle from center"
-msgstr "Créer un cercle de voie à partir du centre"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:24
-msgid "Create fixed radius track circle"
-msgstr "Créer une voie circulaire d'un rayon donné"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:25
-msgid "Set Circle Track creation mode"
-msgstr "Choisissez la commande pour créer des courbes de voie"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:26
-msgid "Create track circle from tangent"
-msgstr "Créer une voie circulaire à partir de la tangente"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:27
-msgid "Removes elevation from Selected tracks"
-msgstr "Supprime l'élévation des voies sélectionnées"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:28
-msgid "Copy objects to clipboard and duplicate them in exactly the same place"
-msgstr ""
-"Copier les objets dans le presse-papiers puis les reproduire exactement au "
-"même endroit"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:29
-msgid "Command Options dialog"
-msgstr "Boîte de dialogue pour les options de commande"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:30
-msgid "Controls colors"
-msgstr "Ajuste les couleurs"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:31
-msgid "Connect two tracks"
-msgstr "Connecter deux voies"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:32
-msgid "Create a control for layout automation"
-msgstr "Créer un contrôle pour l'automatisation du réseau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:33
-msgid "Select control element to create"
-msgstr "Sélectionner l'élément de contrôle à créer"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:34
-msgid "Manage control elements"
-msgstr "Gérer les contrôles"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:35
-msgid "Set Convert mode"
-msgstr "Définir le mode de conversion"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:36
-msgid "Convert from Fixed Track to Cornu"
-msgstr "Convertir en Cornu depuis des voies fixes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:37
-msgid "Convert from Cornu and Bezier to Fixed Track"
-msgstr "Convertir en voies fixes depuis des Cornu et Bezier"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:38
-msgid "Copy selected objects to clipboard"
-msgstr "Copier les objets sélectionnés du presse-papiers"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:39
-msgid "Create Cornu track"
-msgstr "Créer une voie Cornu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:40
-msgid "Create curved track from center"
-msgstr "Créer une voie courbe à partir du centre"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:41
-msgid "Create curved track from chord"
-msgstr "Créer une voie courbe à partir d'une corde"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:42
-msgid "Create curved track from end-point"
-msgstr "Créer une voie courbe à partir de l'extrémité"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:43
-msgid "Create Bezier track"
-msgstr "Créer une voie de Bézier"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:44
-msgid "Set Curve Track creation mode"
-msgstr "Définir le mode de création de voie de courbe"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:45
-msgid "Create curved track from tangent"
-msgstr "Créer une voie courbe à partir de la tangente"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:46
-msgid "Manipulate Custom designer entries"
-msgstr "Éditez vos propres dessins"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:47
-msgid "Moves selected objects to clipboard"
-msgstr "Déplace les objets sélectionnés vers le presse-papiers"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:48
-msgid "Delete objects"
-msgstr "Supprimer des objets"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:49
-msgid "Playback demos"
-msgstr "Lecture des démos"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:50
-msgid "Change Object Properties"
-msgstr "Modifier les propriétés d'un objet"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:51
-msgid "Change to properties mode"
-msgstr "Passer en mode propriétés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:52
-msgid "Deselect all selected objects"
-msgstr "Désélectionner tous les objets"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:53
-msgid "Change Display parameters"
-msgstr "Modifier les paramètres d'affichage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:54
-msgid "Create benchwork"
-msgstr "Tracer un plateau de travail"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:55
-msgid "Create a box"
-msgstr "Tracer une boite"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:56
-msgid "Set Circle drawing command"
-msgstr "Définir la commande de dessin du cercle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:57
-msgid "Create a circle"
-msgstr "Créer un cercle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:58
-msgid "Draw a circle line from center"
-msgstr "Tracer un Cercle à partir du centre"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:59
-msgid "Draw a fixed radius circle line"
-msgstr "Trace un cercle d'un rayon donné"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:60
-msgid "Draw a circle line from tangent"
-msgstr "Tracer un Cercle à partir de la tangente"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:61
-msgid "Set Curve drawing command"
-msgstr "Choisissez la commande pour dessiner des lignes courbes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:62
-msgid "Create a curved line"
-msgstr "Créer une ligne courbe"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:63
-msgid "Create a curved line from End"
-msgstr "Tracer une courbe à partir de l'extrémité"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:64
-msgid "Create a curved line from center"
-msgstr "Tracer une courbe à partir du centre"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:65
-msgid "Create a curved line from chord"
-msgstr "Tracer une courbe à partir de la corde"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:66
-msgid "Create a curved line from tangent"
-msgstr "Tracer une courbe à partir de la tangente"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:67
-msgid "Create a Bezier line"
-msgstr "Tracer une ligne de Bézier"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:68
-msgid "Create a dimension line"
-msgstr "Tracer une ligne de cote"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:69
-msgid "Create a filled box"
-msgstr "Tracer une boite pleine"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:70
-msgid "Create a filled circle"
-msgstr "Créer un cercle rempli"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:71
-msgid "Draw a filled circle from center"
-msgstr "Tracer un Cercle plein autour du centre"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:72
-msgid "Draw a fixed radius filled circle"
-msgstr "Trace un cercle plein d'un rayon donné"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:73
-msgid "Draw a filled circle from tangent"
-msgstr "Tracer un Cercle plein depuis la tangente"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:74
-msgid "Create a polygon"
-msgstr "Tracer un polygone"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:75
-msgid "Create a filled polygon"
-msgstr "Tracer un polygone plein"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:76
-msgid "Create a polyline"
-msgstr "Tracer une polyligne"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:77
-msgid "Create a straight line"
-msgstr "Tracer une ligne droite"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:78
-msgid "Set Line drawing command"
-msgstr "Choisissez la commande pour dessiner des lignes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:79
-msgid "Set Shape drawing command"
-msgstr "Choisir la commande pour dessiner des formes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:80
-msgid "Draw table edge"
-msgstr "Tracer le bord de table"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:81
-msgid "Easement menu"
-msgstr "Menu Courbes de transition"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:83
-msgid "Generate a Parts List of selected objects"
-msgstr "Créer une liste de pièces à partir des objets sélectionnés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:84
-msgid "Set Import/Export mode"
-msgstr "Définir le mode Import/Export"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:85
-msgid "Export a .xti file"
-msgstr "Exporter un fichier *.xti"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:86
-msgid "Export a Bitmap image"
-msgstr "Exporter une image bitmap"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:87
-msgid "Export a DXF file"
-msgstr "Exporter dans un fichier DXF"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:89
-msgid "Flip selected objects"
-msgstr "Retourner les objets sélectionnés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:90
-msgid "Adjust snap grid"
-msgstr "Ajuster la grille d'accrochage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:91
-msgid "Enable snap grid"
-msgstr "Activer la grille d'accrochage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:92
-msgid "Show snap grid"
-msgstr "Afficher la grille d'accrochage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:93
-msgid "Create a structure from a Group of objects"
-msgstr "Créer un bâtiment à partir d'un groupe d'objets"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:94
-msgid "Create a hand-laid turnout"
-msgstr "Créer un aiguillage conçu en manuel"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:95
-msgid "Create a track helix"
-msgstr "Créer une voie hélicoïdale"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:96
-msgid "Import a .xti file"
-msgstr "Importer un fichier *.xti"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:97
-msgid "Import an .xti file as a Module"
-msgstr "Importez un fichier .xti en tant que module"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:98
-msgid "Join two tracks"
-msgstr "Raccorder deux voies"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:99
-msgid "Join two lines or polylines"
-msgstr "Raccorder deux lignes ou polylignes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:100
-msgid "Set Join mode"
-msgstr "Définir le mode Raccorder"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:101
-msgid "Change Layers"
-msgstr "Changer de calques"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:102
-msgid "Selects the current drawing layer"
-msgstr "Sélectionne le calque courant du dessin"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:103
-msgid "Layout parameters"
-msgstr "Paramètres de calques"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:105
-msgid "Show/Hide Map Window"
-msgstr "Afficher/Masquer la fenêtre de navigation"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:106
-msgid "Select Measurement Tool"
-msgstr "Sélectionner l'outil de mesure"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:107
-msgid "Modify or extend a track"
-msgstr "Modifier ou prolonger une voie"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:108
-msgid "Change To modify mode"
-msgstr "Changer pour Modifier le mode"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:109
-msgid "Move selected objects"
-msgstr "Déplacer les objets sélectionnés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:110
-msgid "Move a label"
-msgstr "Déplacer une étiquette"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:111
-msgid "Move selected objects to current layer"
-msgstr "Déplacer les objets sélectionnés vers le calque actuel"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:113
-msgid "Print a bitmap"
-msgstr "Imprimer un BitMap"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:114
-msgid "Pan or zoom the layout"
-msgstr "Panoramique ou zoom sur le plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:115
-msgid "Change to zoom/pan mode"
-msgstr "Passer en mode zoom/pan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:116
-msgid "Create a parallel track"
-msgstr "Créer une voie parallèle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:117
-msgid "Create a parallel line"
-msgstr "Tracer une ligne parallèle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:118
-msgid "Set Parallel mode"
-msgstr "Définir le mode parallèle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:119
-msgid "Register"
-msgstr "Registre"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:120
-msgid "Copy objects from clipboard"
-msgstr "Copier les objets du presse-papiers"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:121
-msgid "Perferences dialog"
-msgstr "Boîte de dialogue des préférences"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:122
-msgid "Display prices of turnouts, sectional tracks and structures"
-msgstr ""
-"Affichage des prix des aiguillages, des sections de voies et des bâtiments"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:123
-msgid "Print the layout"
-msgstr "Imprimer le plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:124
-msgid "Loads and unloads parameter files into/from toolbar"
-msgstr ""
-"Charge et décharge les fichiers de paramètres dans/depuis la barre d'outils"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:125
-msgid "Elevation Profile Command"
-msgstr "Commande de profil d'élévation"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:127
-msgid "Command recorder"
-msgstr "Enregistrement de commande"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:129
-msgid "Update selected Turnout and Structure definitions"
-msgstr ""
-"Mettre à jour les définitions sélectionnées d'aiguillage et de bâtiment"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:130
-msgid "Rescale selected objects"
-msgstr "Changer d'échelle les objets sélectionnés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:131
-msgid "Rotate selected object(s)"
-msgstr "Faire pivoter le ou les objet(s) sélectionnés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:132
-msgid "Show a ruler"
-msgstr "Afficher une règle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:133
-msgid "Select objects"
-msgstr "Sélectionnez des objets"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:134
-msgid "Change To Select Mode"
-msgstr "Passer en mode sélection"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:135
-msgid "Selects all objects on the layout"
-msgstr "Sélectionne tous les objets du plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:136
-msgid "Selects all objects in the current Layer"
-msgstr "Sélectionne tous les objets du calque actuel"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:137
-msgid "Choose objects by Index number"
-msgstr "Choisissez des objets par numéro d'index"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:138
-msgid "Invert current selection"
-msgstr "Inverser la sélection actuelle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:139
-msgid "Configure the Printer"
-msgstr "Configurer l'imprimante"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:140
-msgid "Set Split mode"
-msgstr "Configurer le mode Fractionnement"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:141
-msgid "Split a track"
-msgstr "Segmenter une voie"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:142
-msgid "Split a straight, curved, circle, polygon or polyline Draw Object "
-msgstr ""
-"Fractionner un objet de dessin droit, incurvé, circulaire, polygonal ou "
-"polyligne"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:143
-msgid "Select stranded (unconnected) track pieces"
-msgstr "Sélectionner des segments de voie isolés (non connectés)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:144
-msgid "Create a sensor (ie. a occupancy detector or a toggle switch)"
-msgstr ""
-"Créer un capteur (c.a.d. détecteur de présence ou interrupteur à bascule)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:145
-msgid "Create a signal for train control"
-msgstr "Créer un signal pour le contrôle du train"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:146
-msgid "Choose which commands are sticky"
-msgstr "Choisissez les commandes qui sont collantes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:147
-msgid "Create straight track"
-msgstr "Créer une voie droite"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:148
-msgid "Place a structure on the layout"
-msgstr "Mettre une bâtiment sur le plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:149
-msgid "Create a switchmotor for turnout control"
-msgstr "Créer un moteur pour le contrôle d'un aiguillage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:150
-msgid "Edit a switchmotor definition"
-msgstr "Editer une définition de moteur d'aiguillage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:151
-msgid "Enter text on the layout"
-msgstr "Entrer du texte sur le plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:152
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:579
-msgid "Controls the size of the entered text"
-msgstr "Ajuste la taille du texte saisi"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:153
-msgid "Plain Text"
-msgstr "Texte simple"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:154
-msgid "Tip of the Day window"
-msgstr "Fenêtre d'astuce du jour"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:156
-msgid "Change To Run Trains Mode"
-msgstr "Passer en mode Trains"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:157
-msgid "Pause/Resume Trains"
-msgstr "Pause/Go Trains"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:158
-msgid "Place a car on the layout"
-msgstr "Mettre un véhicule sur le plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:159
-msgid "Exit Trains"
-msgstr "Quitter \"Trains\""
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:160
-msgid "Trim a line, circle or polyline Draw Object using a second Object"
-msgstr ""
-"Découper une ligne, un cercle ou une polyligne Dessiner un objet à l'aide "
-"d'un deuxième objet"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:161
-msgid "Hide/Unhide a track"
-msgstr "Masquer/afficher une voie"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:162
-msgid "Make/Unmake a track a bridge"
-msgstr "Construire/défaire une voie un pont"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:163
-msgid "Place a turnout or sectional track"
-msgstr "Placer un aiguillage ou une section de voie"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:164
-msgid "Create a new turnout definition"
-msgstr "Créer une nouvelle définition d'aiguillage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:165
-msgid "Place a turntable"
-msgstr "Installer un pont tournant"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:166
-msgid "Updates old source files with 3 part titles"
-msgstr "Met à jour les anciens fichiers source avec des titres en 3 parties"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:168
-msgid "Ungroup objects"
-msgstr "Dissocier l'objet"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:169
-msgid "Draw tracks with thin lines"
-msgstr "Tracez des voies avec des voies fines"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:170
-msgid "Draw tracks with medium lines"
-msgstr "Tracez des voies avec des voies moyennes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:171
-msgid "Draw tracks with thick lines"
-msgstr "Tracez des voies avec des voies épaisses"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:172
-msgid "Change drawing scale"
-msgstr "Changer l'échelle de dessin"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:173
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:204
-msgid "Zoom in"
-msgstr "Zoom avant"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:174
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:205
-msgid "Zoom out"
-msgstr "Zoom arrière"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:178
-msgid "Curved Fixed"
-msgstr "Courbe fixe"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:179
-msgid "Preferred Radius"
-msgstr "Rayon préféré"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:180
-msgid "Modify Draw"
-msgstr "Modifier le dessin"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:187
-msgid "Rotation Angle"
-msgstr "Angle de rotation"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:188
-msgid "Rot Center X"
-msgstr "Centre de rotation X"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:189
-msgid "Rot Center Y"
-msgstr "Centre de rotation Y"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:191
-msgid "File Menu"
-msgstr "Menu fichier"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:192
-msgid "Save layout"
-msgstr "Enregistrer le plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:193
-msgid "Save layout under a new name "
-msgstr "Enregistrer le plan sous un nouveau nom "
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:194
-msgid "New layout"
-msgstr "Nouveau plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:195
-msgid "Generate parts list"
-msgstr "Créer une liste de pièces"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:196
-msgid "Load a layout"
-msgstr "Charger un plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:197
-msgid "Manage Parameter Files"
-msgstr "Gérer les fichiers de paramètres"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:198
-msgid "Print layout"
-msgstr "Mise en page d'impression"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:199
-msgid "Exit the program"
-msgstr "Quitter le programme"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:200
-msgid "Revert to last saved state of layout plan"
-msgstr "Revenir au dernier état enregistré du plan de réseau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:201
-msgid "Printer Setup"
-msgstr "Configuration de l'imprimante"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:202
-msgid "Edit menu"
-msgstr "Menu d'édition"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:203
-msgid "Redraw layout"
-msgstr "Redessiner le plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:206
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:209
-msgid "Tools menu"
-msgstr "Menu d'outils"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:207
-msgid "View menu"
-msgstr "Afficher le menu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:208
-msgid "Toolbar configuration"
-msgstr "Configuration de la barre d'outils"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:210
-msgid "Options menu"
-msgstr "Menu d'options"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:211
-msgid "Playback/Record commands"
-msgstr "Commandes de Lecture/Enregistrement"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:212
-msgid "Window menu"
-msgstr "Menu fenêtre"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:213
-msgid "Help menu"
-msgstr "Menu d'aide"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:214
-msgid "Recent error messages and explanations"
-msgstr "Messages d'erreur récents et explications"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:215
-msgid "Move Hot Bar left"
-msgstr "Faire défiler la Barre rapide à gauche"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:216
-msgid "Move Hot Bar right"
-msgstr "Faire défiler la Barre rapide à droite"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:217
-msgid "Total track count"
-msgstr "Nombre total de voies"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:218
-msgid "X Position of cursor"
-msgstr "Position X du curseur"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:219
-msgid "Y Position of cursor"
-msgstr "Position Y du curseur"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:220
-msgid "Drawing scale"
-msgstr "Échelle du dessin"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:221
-msgid "Message and status line"
-msgstr "Message et ligne d'état"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:222
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:223
-msgid "Main layout canvas"
-msgstr "Zone de dessin principale"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:224
-msgid "Main drawing canvas"
-msgstr "Zone de travail principale"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:225
-msgid "Command buttons"
-msgstr "Boutons de commande"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:226
-msgid "Menus"
-msgstr "Menus"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:227
-msgid "Tile, Filename and Window Manager buttons"
-msgstr "Boutons, Nom de fichier et Gestionnaire de fenêtres"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:228
-msgid "Turnout and Structure Hot Bar"
-msgstr "Barre de sélection des aiguillages et bâtiments"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:229
-msgid "Active layer list and layer buttons"
-msgstr "Liste de calques actifs et boutons de calque"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:230
-msgid "Map window"
-msgstr "Fenêtre principale"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:231
-msgid "This is the portion of the layout shown in the Main Window canvas"
-msgstr ""
-"Il s'agit de la partie du plan affichée dans le zone de dessin de la fenêtre"
-" principale"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:232
-msgid "Raise or Lower all Selected Track"
-msgstr "Elever ou abaisser toute la voie sélectionnée"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:233
-msgid "Name of block"
-msgstr "Nom du bloc"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:234
-msgid "Script that the block will run"
-msgstr "Script d'exécution du bloc"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:235
-msgid "List of tracks in the Block"
-msgstr "Liste des voies du bloc"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:236
-msgid "Add or Update car object"
-msgstr "Ajouter ou mettre à jour un objet véhicule"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:237
-msgid "Manufacturer name"
-msgstr "Nom du fabricant"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:240
-msgid "Is the Car a Locomotive?"
-msgstr "Le véhicule est-il une locomotive?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:241
-msgid "Part Number and Description"
-msgstr "Référence N° et description"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:242
-msgid "Manufacturer Part Number"
-msgstr "Référence fabricant"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:243
-msgid "Use the Selected figure as the car image"
-msgstr "Utilisez la figure sélectionnée comme image de véhicule"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:244
-msgid "Use the default figure as the car image"
-msgstr "Utilisez la figure par défaut comme image de véhicule"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:245
-msgid "Optional description of the Car Part"
-msgstr "Description facultative du modèle de véhicule"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:246
-msgid "Flip car image"
-msgstr "Effet miroir d'un véhicule"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:247
-msgid "Display Car Item information or reporting marks and dimensions"
-msgstr ""
-"Afficher des informations sur le véhicule ou la plaque d'immatriculation et "
-"les dimensions"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:248
-msgid "Full Roadname"
-msgstr "Nom complet de la route"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:249
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:250
-msgid "Car Type"
-msgstr "Type de véhicule"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:251
-msgid "Reporting Marks (Roadname abbreviation)"
-msgstr "Sigles (abréviation du nom du réseau)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:252
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:457
-msgid "Car Number"
-msgstr "N° de véhicule"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:253
-msgid "Car body Color"
-msgstr "Couleur de carrosserie"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:254
-msgid "Length of car body"
-msgstr "Longueur du chaudron"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:255
-msgid "Width of car body"
-msgstr "Largeur du chaudron"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:256
-msgid "Distance between Trucks "
-msgstr "Distance entre les bogies "
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:257
-msgid "Distance Trucks are displaced along Car"
-msgstr "Répartition des bogies le long de la voiture"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:258
-msgid "Coupler are mounted on body or truck"
-msgstr "Les attelages sont montés sur les chassis ou les bogies"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:259
-msgid "Overall Coupled Length"
-msgstr "Longueur totale couplée"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:260
-msgid "Coupler Length from end of car"
-msgstr "Longueur de l'attelage à partir du bout du véhicule"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:261
-msgid "Diagram of Car"
-msgstr "Schéma de véhicule"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:262
-msgid "Item Index Number"
-msgstr "Numéro d'index de l'objet"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:263
-msgid "Original Purchase Price"
-msgstr "Prix d'achat d'origine"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:265
-msgid "Condition of car"
-msgstr "Etat du véhicule"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:266
-msgid "Original Purchase Date - yyyymmdd"
-msgstr "Date d'achat originale - aaaammjj"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:267
-msgid "Last Service Date - yyyymmdd"
-msgstr "Date du dernier entretien - aaaammjj"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:268
-msgid "Number of identical cars to be entered"
-msgstr "Nombre de matériels roulants identiques à inscrire"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:269
-msgid "Do all the cars have the same Number?"
-msgstr "Est-ce que toutes les matériels roulants ont le même numéro ?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:270
-msgid "Notes about the car"
-msgstr "Notes sur le véhicule"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:271
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:272
-msgid "Create a new car Part or Prototype definitions"
-msgstr "Créer une nouvelle définition de pièce ou de prototype de véhicule"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:273
-msgid "Finds the selected Car Item on the layout"
-msgstr "Trouve l'article de véhicule sélectionné sur le plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:274
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:275
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:276
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:277
-msgid "Sort the Item list"
-msgstr "Trier la liste d'articles"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:279
-msgid "Edit the selected Car Item"
-msgstr "Modifier le titre du véhicule sélectionné"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:280
-msgid "Add a new Car Item"
-msgstr "Ajouter un nouveau nom de véhicule"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:281
-msgid "Delete the selected Car Items"
-msgstr "Supprimer les wagons ou locomotives sélectionnés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:282
-msgid "Import a Car Item .csv file"
-msgstr "Importer du véhicule à partir d'un fichier .csv"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:283
-msgid "Export a Car Item .csv file"
-msgstr "Exporter un fichier Car Item .csv"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:284
-msgid "Create a text list of the Car Items"
-msgstr "Créer la liste des noms de matériels roulants"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:285
-msgid "Specifies the radius of the circle track"
-msgstr "Spécifie le rayon de la voie circulaire"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:286
-msgid "Default command is Describe or Select"
-msgstr "La commande par défaut est \"Propriétés\" ou \"Sélectionner\""
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:287
-msgid "Action to invoke on Right-Click"
-msgstr "Action à appeler lors d'un clic droit"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:288
-msgid ""
-"Replace current selection with clicked object or add clicked object to "
-"selection"
-msgstr ""
-"Remplacer la sélection actuelle par un objet cliqué ou ajouter un objet "
-"cliqué à la sélection"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:289
-msgid "Clicking into an empty area clears selection if select mode is <add>"
-msgstr ""
-"Cliquer dans une zone vide efface la sélection si le mode de sélection est "
-"<Ajouter>"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:291
-msgid "The list of control elements"
-msgstr "La liste des éléments de contrôle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:292
-msgid "Edit the element"
-msgstr "Editer l'élément"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:293
-msgid "Delete the element"
-msgstr "Supprimer l'élément"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:294
-msgid "Contents Label for new Parameter file"
-msgstr "Contenu de l'étiquette du nouveau fichier de paramètres"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:295
-msgid "Desired curve radius for new track"
-msgstr "Rayon de courbe souhaité pour la nouvelle piste"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:296
-msgid "List of custom designed turnouts and structures"
-msgstr "Liste des aiguillages et des bâtiments conçus sur mesure"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:297
-msgid "Invoke designer editor"
-msgstr "Ouvre l'éditeur de modélisation"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:298
-msgid "Remove selected entries"
-msgstr "Supprimer les entrées sélectionnées"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:299
-msgid "Copy selected entries to Parameter File"
-msgstr "Copier les entrées sélectionnées dans le fichier de paramètres"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:300
-msgid "Create a New part or prototype"
-msgstr "Créer une nouvelle pièce ou un prototype"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:301
-msgid "Update custom file and close"
-msgstr "Mettre à jour le fichier personnalisé et fermer"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:302
-msgid "Executes the next step of the demo"
-msgstr "Exécute la prochaine étape de la démo"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:303
-msgid "Skip to next demo"
-msgstr "Passer à la prochaine démo"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:304
-msgid "Stops the demonstration and returns you to XTrackCAD"
-msgstr "Arrêt de la démonstration et retour à XTrackCAD"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:305
-msgid "Select speed of Playback"
-msgstr "Sélectionnez la vitesse de lecture"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:306
-msgid "This is where comments about the demo are displayed"
-msgstr "C'est là que les commentaires sur la démo sont affichés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:343
-msgid "Move the Main canvas if you drag near the edge"
-msgstr ""
-"Déplacez la zone de dessin principale lorsque vous vous approchez des bords"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:344
-msgid "Color tracks by layer or individually"
-msgstr "Couleur des voies par calque ou individuellement"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:345
-msgid "Color draw objects by layer or individually"
-msgstr "Couleur des objets dessinés par calque ou individuellement"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:346
-msgid "Controls the drawing of hidden tracks"
-msgstr "Ajuste le dessin des voies cachées"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:347
-msgid "Controls the drawing of End-Points"
-msgstr "Ajuste le dessin des points d'extrémité"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:348
-msgid "How to draw track ties"
-msgstr "Comment dessiner des traverses"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:349
-msgid "Show crosshair at center of curves"
-msgstr "Afficher le réticule au centre des courbes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:350
-msgid "Drawing scale when to draw tracks with 2 rails"
-msgstr "Échelle minimale pour dessiner les voies avec 2 rails"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:351
-msgid "Drawing scale of the map window"
-msgstr "Échelle de dessin de la fenêtre de navigation"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:352
-msgid "Whether the main layout is updated while dragging on the Map"
-msgstr "Mise à jour du plan de trajet lors du dessin sur la carte"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:353
-msgid "Enable labels for Turnouts, Flextrack Lengths and Elevations"
-msgstr ""
-"Afficher les étiquettes pour les aiguillages, les voies flexibles et les "
-"élévations"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:354
-msgid "When to label Turnout, Flextrack Lengths and Elevations"
-msgstr ""
-"Quand étiqueter les aiguillages, les longueurs de voie flexibles ou les "
-"mesures d'élévation"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:355
-msgid "Font size for labels on layout"
-msgstr "Taille de police des étiquettes sur le plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:356
-msgid "Label elements on the Hot Bar"
-msgstr "Éléments d'étiquetage sur la barre d'objets"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:357
-msgid "Label elements on layout"
-msgstr "Éléments d'étiquetage sur le plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:358
-msgid "Label elements for lists"
-msgstr "Éléments d'étiquetage pour les listes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:359
-msgid "How to group cars on the Train Hot Bar"
-msgstr "Regroupement des matériels roulants dans le catalogue de pièces"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:360
-msgid "Delay (in mS) between updating train movements"
-msgstr "Intervalle de mise à jour (en ms) des mouvements de train"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:361
-msgid "Don't show trains in tunnels when tunnels are hidden"
-msgstr ""
-"Ne pas visualiser les trains dans les tunnels quand les tunnels sont cachés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:362
-msgid "Display unconnected endpoints of track with special marks"
-msgstr "Mettez en surbrillance les extrémités non connectées"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:363
-msgid "Whether the Main Drawing Area shows as much of the room as possible"
-msgstr ""
-"Indiquer si la zone de dessin principale montre la plus grande partie "
-"possible de la pièce"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:364
-msgid "Don't hide system cursor when program cursors are showing"
-msgstr ""
-"Ne pas cacher le curseur du système lorsque les curseurs des programmes "
-"s'affichent"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:366
-msgid "Width of the lines"
-msgstr "Épaisseur des lignes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:367
-msgid "Color of the lines"
-msgstr "Couleur des voies"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:368
-msgid "List of types of Lumber"
-msgstr "Liste des types d'éléments de structure"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:369
-msgid "Color of Benchwork"
-msgstr "Couleur du châssis"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:370
-msgid "Orientation of Benchwork"
-msgstr "Orientation du châssis"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:371
-msgid "Size of Dimension Arrows"
-msgstr "Largeur des Flèches de cotation"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:372
-msgid "Width of Box"
-msgstr "Largeur de boîte"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:373
-msgid "Height of Box"
-msgstr "Hauteur de caisse"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:374
-msgid "Angle of Line"
-msgstr "Angle de ligne"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:375
-msgid "Radius of Curve"
-msgstr "Rayon de courbe"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:377
-msgid "This controls the sharpness of the easement curve"
-msgstr "Cela contrôle la netteté et la taille de la courbe de transition"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:378
-msgid "Minimum radius"
-msgstr "Rayon minimum"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:379
-msgid "Maximum offset"
-msgstr "Décalage maximum"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:380
-msgid "Easement length"
-msgstr "Longueur de la courbe de transition"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:381
-msgid ""
-"These radio buttons are a short-cut for Values of 0.0, 0.5, 1.0 and 2.0. "
-"None turns Easements off"
-msgstr ""
-"Ces boutons sont un raccourci pour les valeurs de 0.0, 0.5, 1.0 et 2.0. "
-"Aucun ne désactive les courbes de transition"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:382
-msgid "Complete easement selection"
-msgstr "Terminer la sélection des courbes de transition"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:383
-msgid "Type of elevation"
-msgstr "Type d'élévation"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:384
-msgid "Height of End Point"
-msgstr "Hauteur du point de fin"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:385
-msgid "Compute elevation based on neighbors"
-msgstr "Calculer la hauteur en fonction des voies adjacentes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:386
-msgid "Compute grade based on neighbors"
-msgstr "Calculer la pente en fonction des voies adjacentes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:387
-msgid "Specify a name for an End-Point"
-msgstr "Spécifiez un nom pour un point de fin"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:389
-msgid "Print parts list"
-msgstr "Imprimer la nomenclature"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:390
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:512
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:625
-msgid "Invoke the Print Setup dialog"
-msgstr "Ouvre la boîte de dialogue Configuration d'impression"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:391
-msgid "Save parts list to file"
-msgstr "Enregistrer la nomenclature dans un fichier"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:392
-msgid "This is the list of parts for the layout"
-msgstr "Voici la liste des pièces pour ce plan de voie"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:393
-msgid "Enable prices on the Parts List"
-msgstr "Activer les prix sur la liste des pièces"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:394
-msgid "Enable index listing on the Parts List"
-msgstr "Activer la liste d'index sur la liste de pièces"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:395
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:398
-msgid "Spacing between major grid lines"
-msgstr "Espacement entre les lignes principales de la grille"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:396
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:399
-msgid "Allows the spacing to be subdivided"
-msgstr "Permet de diviser l'espacement"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:397
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:400
-msgid "Specifies if positions are snaped in this direction"
-msgstr "Activez la grille magnétique pour cette orientation"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:401
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:402
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:403
-msgid "Shows the origin and angle of the grid"
-msgstr "Affiche l'origine et l'angle de la grille"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:404
-msgid "Specifies if the grid is shown"
-msgstr "Spécifie si la grille est affichée"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:405
-msgid "Completes the grid specification"
-msgstr "Enregistrer le réglage de la grille et quitter"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:409
-msgid "Number of segments in Group"
-msgstr "Nombre de segments dans le groupe"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:410
-msgid "Replace the Selected object with the new definition?"
-msgstr "Faut-il remplacer l'objet sélectionné par la nouvelle définition?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:411
-msgid "Creates a new Structure (or Turnout)"
-msgstr "Crée un nouveau bâtiment (ou aiguillage)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:412
-msgid "Elevation difference of Helix End-Points"
-msgstr "Différence d'élévation des bouts de l'hélicoïde"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:413
-msgid "Helix Radius"
-msgstr "Rayon de l'hélicoïde"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:414
-msgid "Number of turns in the helix"
-msgstr "Nombre de tours de l'hélicoïde"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:415
-msgid "Angle betweek helix entrance and exit"
-msgstr "Angle entre l'entrée et la sortie de l'hélicoïde"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:416
-msgid "Grade in helix"
-msgstr "Pente de l'hélicoïde"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:417
-msgid "Separation between helix layers including baseboard, track, etc"
-msgstr ""
-"Séparation entre les couches d'hélicoïde comprenant le support, la voie, etc"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:418
-msgid "Index numbers of objects, separated by commas"
-msgstr "Numéros d'index des objets, séparés par des virgules"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:419
-msgid "Desired curve radius between straight tracks"
-msgstr "Rayon de courbe souhaité entre les voies droites"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:420
-msgid "Layer list"
-msgstr "Liste des calques"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:421
-msgid "Layer Name"
-msgstr "Nom du calque"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:422
-msgid "Hide Layer Button on MenuBar"
-msgstr "Cacher le bouton du calque sur la barre de menu"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:423
-msgid "Color of layer"
-msgstr "Couleur du calque"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:424
-msgid "Layer is drawn on Main window"
-msgstr "Le calque est dessiné dans la fenêtre principale"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:425
-msgid "Layer cannot be changed"
-msgstr "Le calque ne peut pas être modifié"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:426
-msgid "Use color for this Layer if color-by-layer is set"
-msgstr "Utiliser une couleur pour ce calque si utiliser-la-couleur est coché"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:427
-msgid "Other Layers this Layer also shows/hides"
-msgstr "Les autres calques que ce calque s'affichent/se cachent également"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:428
-msgid "Layer is a Module"
-msgstr "Le calque est un module"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:429
-msgid "Layer is drawn on Map window"
-msgstr "Le calque est dessiné dans la fenêtre de navigation"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:430
-msgid "Number of layer buttons to show"
-msgstr "Nombre de boutons de calques à afficher"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:431
-msgid "Number of objects in this layer"
-msgstr "Nombre d'objets dans ce calque"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:432
-msgid "Settings File to load when this layer is made current"
-msgstr "Fichier de paramètres à charger lorsque ce calque est mis à jour"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:434
-msgid "Load layer configuration from default"
-msgstr "Charger la configuration du calque par défaut"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:435
-msgid "Save current layer configuration as default"
-msgstr "Enregistrer la configuration actuelle comme calque par défaut"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:436
-msgid "Overwrite layer configuration with system default values"
-msgstr ""
-"Réinitialiser le réglage des calques aux valeurs par défaut du système"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:437
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:438
-msgid "Specifies the size of the room (in inches or centimeters)"
-msgstr "Spécifie la taille de la pièce (en pouces ou en centimètres)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:439
-msgid "Specifies the layout Title that will appear on printouts"
-msgstr "Spécifie le titre du plan qui apparaîtra sur les impressions"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:440
-msgid "Specifies the layout Subtitle that will appear on printouts"
-msgstr "Spécifie le sous-titre du plan qui apparaîtra sur les impressions"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:441
-msgid "Specifies the Modelling Scale"
-msgstr "Spécifie l'échelle de modélisation"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:442
-msgid "Specifies the rail gauge, ie. the distance between the rails"
-msgstr "Spécifie l'écartement des rails, c.à.d. la distance entre les rails"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:443
-msgid ""
-"Specifies minimum track radius (in inches or centimeters). Tracks with a "
-"smaller radius are considered exceptional."
-msgstr ""
-"Spécifie le rayon de voie minimal (en pouces ou en centimètres). Les voies "
-"avec un rayon plus petit sont considérées comme exceptionnelles."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:444
-msgid ""
-"Specifies maximum track elevation expressed as a percent (%). Tracks with a "
-"larger elevation are considered exceptional."
-msgstr ""
-"Spécifie l'élévation maximale de la voie exprimée en pourcentage (%). Les "
-"voies avec une élévation plus grande sont considérées comme exceptionnelles."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:445
-msgid "Select the background image"
-msgstr "Sélectionnez l'image d'arrière-plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:446
-msgid "Remove the background image"
-msgstr "Supprimer l'image de fond"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:447
-msgid "Specifies the x offset of the bottom left of the background image"
-msgstr "Spécifie le décalage x en bas à gauche de l'image d'arrière-plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:448
-msgid "Specifies the y offset of the bottom left of the background image"
-msgstr "Spécifie le décalage y en bas à gauche de l'image d'arrière-plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:449
-msgid ""
-"Specifies how large the bottom edge of the background image should be in "
-"model units"
-msgstr ""
-"Spécifie la taille du bord inférieur de l'image d'arrière plan en unités du "
-"modèle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:450
-msgid ""
-"Specifies the screening of the background image from 0 (none) to 100% "
-"(vanishes)"
-msgstr ""
-"Spécifie le filtrage de l'image d'arrière-plan, de 0 (aucun) à 100% "
-"(disparaît)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:451
-msgid "Specifies the rotation angle of the background image in degrees"
-msgstr "Spécifie l'angle de rotation de l'image d'arrière-plan en degrés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:452
-msgid "Write a copy of current settings to a named file"
-msgstr "Écrire une copie des paramètres actuels dans un fichier nommé"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:453
-msgid "Override current settings from a named file"
-msgstr "Remplacer les paramètres actuels d'un fichier nommé"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:454
-msgid "Move by X"
-msgstr "Déplacer par X"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:455
-msgid "Move by Y"
-msgstr "Déplacer par Y"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:458
-msgid ""
-"This is the body of the Note. To change this select Modify from the File "
-"Menu"
-msgstr ""
-"Ceci est le texte de la note. Pour le changer, sélectionnez «Modifier» dans "
-"le menu «Fichier»"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:460
-msgid "Specifies number of pixels per inch (or centimeter)"
-msgstr "Spécifie le nombre de pixels par pouce (ou centimètre)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:462
-msgid ""
-"Specifies whether Layout Titles, Borders or Track Centerlines are printed on"
-" the BitMap"
-msgstr ""
-"Spécifie si les titres du plan, les bordures ou les axes des voies sont "
-"imprimés sur le BitMap"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:463
-msgid ""
-"Specifies the separation between the original track and the parallel "
-"track/line"
-msgstr ""
-"Spécifie la séparation entre la voie d'origine et la voie/ligne parallèle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:464
-msgid ""
-"Specifies the a factor that increases the seperation as the radius of the "
-"original track reduces. 0.0 means no increase."
-msgstr ""
-"Spécifie le facteur qui augmente la séparation à mesure que le rayon de la "
-"voie d'origine diminue. 0,0 signifie aucune augmentation."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:465
-msgid "Enter your name as specified in the XTrackCAD Registration Notice"
-msgstr ""
-"Entrez votre nom comme spécifié dans la notification d'enregistrement "
-"d'XTrackCAD"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:466
-msgid "Enter the key value as specified in the XTrackCAD Registration Notice"
-msgstr ""
-"Entrez la valeur de la clé telle que spécifiée dans la notification "
-"d'enregistrement d'XTrackCAD"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:467
-msgid "Validates the name and key. Terminates the registration command"
-msgstr "Valide le nom et la clé. Met fin à la commande d'enregistrement"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:468
-msgid "0 degrees is up or to the right"
-msgstr "0 degré est en haut et à droite"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:469
-msgid "Choose english (inches) or metric (centimeters)"
-msgstr "Choisissez anglais (pouces) ou métrique (cm)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:470
-msgid "How to display length measurements"
-msgstr "Comment afficher les mesures de longueur"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:471
-msgid "Do not create tracks to be shorter than this value"
-msgstr "Ne créez pas de voies plus courtes que cette valeur"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:472
-msgid "Maximum distance between connected end points"
-msgstr "Distance maximale entre des extrémités connectées"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:473
-msgid "Minimum angle between connected End-Points"
-msgstr "Angle minimal entre les extrémités connectées"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:474
-msgid "Specifies the minimum angle between tracks connected to a turntable"
-msgstr ""
-"Spécifie l'angle minimum entre les voies connectées à un pont tournant"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:475
-msgid "Trains will crash above this speed"
-msgstr "Les trains dérailleront au-dessus de cette vitesse"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:476
-msgid "Enable/Disable balloon popup help windows"
-msgstr "Activer/Désactiver les bulles d'aide contextuelles"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:477
-msgid "Enable/Disable show of flextrack on hotbar"
-msgstr "Activer/Désactiver l'affichage de la flextrack sur la barre rapide"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:478
-msgid "How far you can move the mouse before its considered a drag"
-msgstr ""
-"Jusqu'où vous pouvez déplacer la souris avant que ce soit considéré comme un"
-" glisser"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:479
-msgid "How long you can hold a mouse button down before its considered a drag"
-msgstr ""
-"Combien de temps pouvez-vous maintenir un bouton de la souris enfoncé avant "
-"que ce soit considéré comme un glisser"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:480
-msgid "Minimum distance (in pixels) between grid lines/ticks"
-msgstr "Distance minimale (en pixels) entre les lignes/marques de quadrillage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:481
-msgid ""
-"Specifies the Check Point frequency; number of modifications made since the "
-"last checkpoint."
-msgstr ""
-"Précise la fréquence des points de contrôle ; nombre de modifications "
-"apportées depuis le dernier point de contrôle."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:482
-msgid "Specifies the number of checkpoints after save before auto-saving."
-msgstr ""
-"Spécifie le nombre de points de contrôle après la sauvegarde avant la "
-"sauvegarde automatique."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:483
-msgid "Resume work on last layout or start with new layout"
-msgstr "Modifier le dernier plan de voies ou en créer un nouveau"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:485
-msgid "Updated cost of current selected item"
-msgstr "Coût actualisé de l'élément actuellement sélectionné"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:487
-msgid "Selection list for prices"
-msgstr "Liste de sélection des prix"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:488
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:489
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:490
-msgid "Price of specified length of flex-track"
-msgstr "Prix d'une longueur spécifiée de voie flexible"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:492
-msgid "Controls the printing of a centerline of track cmdPrint"
-msgstr "Ajuste le dessin de l’axe des voies"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:493
-msgid "Controls the reduction (scale) of the printout"
-msgstr "Ajuste la réduction (d'échelle) pour l'impression"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:494
-msgid "Scaled page width (Scale times physical page width)"
-msgstr ""
-"Spécifiez la largeur de la page (échelle multipliée par la largeur du papier"
-" physique)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:495
-msgid "Sets page size to the maximum (based on scale and physical page size)"
-msgstr ""
-"Définit le format maximum de la page (en fonction de l'échelle et du format "
-"de papier physique)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:496
-msgid "Scaled page height (Scale times physical page height)"
-msgstr ""
-"Hauteur de page mise à l'échelle (échelle multipliée par la hauteur de page "
-"physique)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:497
-msgid "Sets scale, origin and angle for a one page printout of the layout"
-msgstr ""
-"Définit l'échelle, l'orientation et l'angle pour l'impression d'une page du "
-"plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:498
-msgid "Print page in Portrait or Landscape format"
-msgstr "Imprimer la page au format Portrait ou Paysage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:499
-msgid "Order of printing pages"
-msgstr "Ordre des pages d'impression"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:500
-msgid "Print Title, Date, Author and other information at bottom of page?"
-msgstr ""
-"Imprimer le titre, la date, l'auteur et d'autres informations en bas de page"
-" ?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:501
-msgid "Ignore unprintable page margins?"
-msgstr "Ignorer les marges non imprimables?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:502
-msgid "Print Registration Marks at 1:1?"
-msgstr "Imprimer les aides au positionnement à l'échelle 1:1 ?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:503
-msgid "Print Snap Grid?"
-msgstr "Imprimer la grille magnétique ?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:504
-msgid ""
-"Print Rulers at the layout edge only, or on all page edges, or nowhere?"
-msgstr ""
-"Imprimer les règles sur le bord de la mise en page uniquement, ou sur tous "
-"les bords de la page, ou nulle part?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:505
-msgid "Print Roadbed Outline?"
-msgstr "Imprimer le contour du ballast ?"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:506
-msgid "Print Roadbed Outline"
-msgstr "Imprimer le contour du ballast"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:507
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:508
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:510
-msgid ""
-"Origin of the print grid. This is useful if you want to reprint a set of "
-"pages"
-msgstr ""
-"Origine de la grille d'impression. Utile si certaines pages sont réimprimées"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:509
-msgid "Resets the origin and angle to 0"
-msgstr "Réinitialise à 0 l'alignement et l'angle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:511
-msgid "Deselects all pages"
-msgstr "Désélectionner toutes les pages"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:513
-msgid "Print selected pages and terminates the print command"
-msgstr "Imprime les pages sélectionnées et termine la commande d'impression"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:514
-msgid "List of loaded, shown or hidden parameter files"
-msgstr "Liste des fichiers de paramètres chargés, affichés ou cachés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:515
-msgid "Show parameter files by names or descriptions"
-msgstr "Afficher les fichiers de paramètres par noms ou descriptions"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:516
-msgid "Toggle the shown status of the selected parameter file"
-msgstr "Commuter l'état affiché du fichier de paramètres sélectionné"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:517
-msgid "Find extra parameter files from the filesystem"
-msgstr ""
-"Trouver des fichiers de paramètres supplémentaires dans le système de "
-"fichiers"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:518
-msgid "Find parameter files from the system library"
-msgstr "Trouver des fichiers de paramètres dans la bibliothèque système"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:519
-msgid "Update parameter file list"
-msgstr "Mettre à jour la liste des fichiers de paramètres"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:520
-msgid "Reload parameter file from list"
-msgstr "Recharger un fichier de paramètres à partir de la liste"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:521
-msgid "Select all parameter files shown"
-msgstr "Sélectionnez tous les fichiers de paramètres affichés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:522
-msgid "Profile of specified path"
-msgstr "Profil de la voie spécifiée"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:523
-msgid "Clear the profile"
-msgstr "Effacer le profil de hauteur"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:524
-msgid "Print the profile"
-msgstr "Imprimer le profil"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:526
-msgid "Stop recording"
-msgstr "Arrêt d'enregistrement"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:527
-msgid "Insert a message"
-msgstr "Insérer un message"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:528
-msgid "End a message"
-msgstr "Fin du message"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:529
-msgid "Message body"
-msgstr "Corps du message"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:530
-msgid "Possible turnouts"
-msgstr "Aiguillages possibles"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:531
-msgid "Skip this turnout"
-msgstr "Ignorer cette participation"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:533
-msgid "Manufacturer of Object"
-msgstr "Marque de l'objet"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:534
-msgid "Description of Object"
-msgstr "Description d'objet"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:535
-msgid "Part Nuber of Object"
-msgstr "Référence de l'objet"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:537
-msgid "Rescale by Scale Conversion or by Ratio"
-msgstr "Redimensionner par conversion d'échelle ou rapport"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:538
-msgid "Original Scale of the selected objects"
-msgstr "Échelle d'origine des objets sélectionnés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:539
-msgid "Original Gauge of the selected objects"
-msgstr "Ecartement de voies d'origine des objets sélectionnés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:540
-msgid "New Scale of the selected objects"
-msgstr "Nouvelle échelle des objets sélectionnés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:541
-msgid "New Gauge of the selected objects"
-msgstr "Nouvel écartement de voies des objets sélectionnés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:542
-msgid "Change track dimensions to new scale"
-msgstr "Convertir les dimensions de la voie à la nouvelle échelle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:543
-msgid "Change size by this amount"
-msgstr "Changer la taille d'un facteur"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:545
-msgid "Snap Grid Line and Division"
-msgstr "Grille magnétique voie et division"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:546
-msgid "X and Y position markers"
-msgstr "Repères de position X et Y"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:547
-msgid "Border rulers, room boundaries and table edges"
-msgstr "Règles de bordures, limites de pièce et bords de table"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:548
-msgid "Primary Axis of grid rotation"
-msgstr "Axe principal de rotation de la grille"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:549
-msgid "Secondary Axis of grid rotation"
-msgstr "Axe secondaire de rotation de la grille"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:550
-msgid "Unselected tracks"
-msgstr "Voies non sélectionnées"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:551
-msgid "Selected tracks"
-msgstr "Voies sélectionnées"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:552
-msgid "Color of tracks on the Profile path"
-msgstr "Couleur des voies sur le profil de hauteur"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:553
-msgid "Color of Exceptional tracks"
-msgstr "Couleur des voies exceptionnelles, hors limites"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:554
-msgid "Color of track ties"
-msgstr "Couleur des traverses"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:555
-msgid "Updates the colors"
-msgstr "Met à jour les couleurs"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:556
-msgid "Angle in degrees"
-msgstr "Angle en degrés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:557
-msgid "Rotate object(s) by specified amount"
-msgstr "Faire pivoter le ou les objet(s) d'un certain angle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:558
-msgid "Enter one or more words as search terms"
-msgstr "Entrez un ou plusieurs mots comme termes de recherche"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:559
-msgid "Remove the current filter and show all files"
-msgstr "Supprimer le filtre actuel et afficher tous les fichiers"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:560
-msgid "Find matching file descriptions"
-msgstr "Trouver les descriptions de fichiers correspondantes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:561
-msgid "Search results"
-msgstr "Résultats de la recherche"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:562
-msgid "Show descriptions or filenames in results"
-msgstr "Afficher les descriptions ou les noms de fichiers dans les résultats"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:563
-msgid "Select how well the definitions must fit the current layout scale"
-msgstr ""
-"Sélectionnez dans quelle mesure les définitions doivent correspondre à "
-"l'échelle de mise en page actuelle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:564
-msgid "Add selected entries into parameter file list"
-msgstr ""
-"Ajouter les entrées sélectionnées dans la liste des fichiers de paramètres"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:565
-msgid "Select All found entries"
-msgstr "Sélectionner toutes les entrées trouvées"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:566
-msgid "Reload the system library contents for finding"
-msgstr "Recharger le contenu de la bibliothèque système pour trouver"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:567
-msgid "Choose commands to be sticky"
-msgstr "Choisissez les commandes à rendre collantes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:568
-msgid "Make the commands sticky"
-msgstr "Rendre les commandes collantes"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:569
-msgid "List of available structure"
-msgstr "Liste des bâtiments disponibles"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:570
-msgid "Diagram of the selected structure"
-msgstr "Schéma de la bâtiment sélectionnée"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:571
-msgid "Hide Selection window when placing Structure"
-msgstr "Masquer la fenêtre de sélection lors du placement de la bâtiment"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:572
-msgid "Drawing scale and size"
-msgstr "Échelle et taille du dessin"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:573
-msgid "Complete structure placement"
-msgstr "Placement complet de la bâtiment"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:574
-msgid "Choose a Pier number"
-msgstr "Choisissez un numéro de colonne"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:575
-msgid "Name of the Motor"
-msgstr "Nom du moteur"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:576
-msgid "Value when switch is normal"
-msgstr "Valeur lorsque l'aiguillage est normal"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:577
-msgid "Value when the switch is reversed"
-msgstr "Valeur lorsque l'aiguillage est dévié"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:578
-msgid "Value for a positive comfirmation of switch position"
-msgstr "Valeur pour une confirmation positive de la position de l'aiguillage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:580
-msgid "Controls the color of the entered text"
-msgstr "Contrôle la couleur du texte saisi"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:581
-msgid "If the text is boxed"
-msgstr "Si le texte est dans une case"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:582
-msgid "Useful information about the program"
-msgstr "Informations utiles sur le programme"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:583
-msgid "Show Tip of the Day every time the program starts"
-msgstr "Montrer le conseil du jour à chaque démarrage du programme"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:584
-msgid "Show the next Tip of the Day"
-msgstr "Montrer le prochain conseil du jour"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:585
-msgid "Show the previous Tip of the Day"
-msgstr "Montrer le précédent conseil du jour"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:587
-msgid "Controls which Command Buttons are displayed"
-msgstr "Afficher ou masquer les boutons de commande dans la barre d'outils"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:588
-msgid "List of Cars"
-msgstr "Liste des matériels roulants"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:589
-msgid "List of active trains"
-msgstr "Liste des trains actifs"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:591
-msgid "Train odometer"
-msgstr "Compteur de distance"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:592
-msgid "Reset odometer to 0"
-msgstr "Remise à 0"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:593
-msgid "Find train on layout"
-msgstr "Chercher le train sur le plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:594
-msgid "Follow train around layout"
-msgstr "Suivre le train sur le plan"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:595
-msgid "Flip direction at End Of Track"
-msgstr "Inverser la direction à la fin de la voie"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:596
-msgid "Change direction of train"
-msgstr "Inverser la direction du train"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:597
-msgid "Stop the train"
-msgstr "Arrêt du train"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:598
-msgid "List of available turnouts for the current scale"
-msgstr "Liste des aiguilles disponibles pour l'échelle actuelle"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:599
-msgid ""
-"Diagram of the currently selected turnout. Click on a End-Point to select "
-"the Active End-Point"
-msgstr ""
-"Schéma de l'aiguillage actuellement sélectionné. Cliquez sur une extrémité "
-"pour sélectionner l'extrémité active"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:600
-msgid ""
-"A menu list of various type of turnouts and sectional tracks you can define"
-msgstr ""
-"Une gamme de différents types d'aiguillages et de sections de voies que vous"
-" pouvez définir"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:601
-msgid "Hide Selection window when placing Turnout"
-msgstr "Masquer la fenêtre de sélection lorsque vous placez l'aiguillage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:602
-msgid "The selected Active End-Point"
-msgstr "Le point de fin actif sélectionné"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:603
-msgid "Current selected turnout, (displayed in the diagram window)"
-msgstr ""
-"Aiguillage sélectionné actuellement, (affiché dans la fenêtre du diagramme)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:604
-msgid "One the End-Points that can be selected"
-msgstr "L'un des points d'extrémité pouvant être sélectionnés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:606
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:607
-msgid "Angle of the specified track to the center line of the turnout"
-msgstr "Angle de la voie spécifiée par rapport à l'axe de l'aiguillage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:608
-msgid "Specifies if angles are entered as Frog Numbers or in degrees"
-msgstr ""
-"Spécifie si les angles sont entrés sous forme de N° de cœur ou en degrés"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:609
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:610
-msgid "Desciption"
-msgstr "Desciption"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:611
-msgid "Turnout description (Manuf., Size, Part Number, etc)"
-msgstr "Description de l'aiguillage (fabricant, angle, numéro de pièce, etc.)"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:612
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:613
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:614
-msgid "Length from the base to the end of the specified track"
-msgstr "Longueur de la ligne de base à la fin de la voie sélectionnée"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:616
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:617
-msgid "Offset of the track End-Point from the center line of the turnout"
-msgstr ""
-"Décalage du point de fin de la voie par rapport à l'axe central de "
-"l'aiguillage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:620
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:621
-msgid "Prints a full size diagram of the turnout for checking"
-msgstr ""
-"Imprime un diagramme en taille réelle de l'aiguillage pour vérification"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:622
-msgid "Color of Roadbed lines"
-msgstr "Couleur des voies de balast"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:623
-msgid "Width of Roadbed lines"
-msgstr "Largeur des lignes de ballast"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:624
-msgid "Width of Roadbed"
-msgstr "Largeur du ballast"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:626
-msgid "Closes the window and returns to the Turnout Selection window"
-msgstr "Ferme la fenêtre et retourne à la sélection d'aiguillage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:627
-msgid "Specifies the diameter of the turntable"
-msgstr "Spécifie le diamètre du pont tournant"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:628
-msgid "Old Turnout title"
-msgstr "Ancien titre de l'aiguillage"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:629
-msgid "List of available titles"
-msgstr "Liste des titres disponibles"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:630
-msgid "Leave the Turnouts' title unchanged"
-msgstr "Laisser le titre d'aiguillage inchangé"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:631
-msgid "Invoke the Parameter Files dialog"
-msgstr "Ouvre la boîte de dialogue Fichier de paramètres"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:632
-msgid "List of available turnouts"
-msgstr "Liste des aiguillages disponibles"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:633
-msgid "Update the Turnouts' title"
-msgstr "Mettre à jour le titre des aiguillages"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:637
-msgid "Sample"
-msgstr "Exemple"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:639
-msgid "Slant"
-msgstr "Incliner"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:640
-msgid "Font selection dialog"
-msgstr "Boite de dialogue de sélection de police"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:641
-msgid "Weight"
-msgstr "Poids"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:642
-msgid "Printer Abort Window"
-msgstr "Annuler l'impression"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:643
-msgid "Print to filename"
-msgstr "Nom du fichier d'impression"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:644
-msgid "Specify Postscript font alias mapping"
-msgstr "Spécifier l'affectation des polices Postscript"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:645
-msgid ""
-"Displays the Print Setup window to change printers, orientation, paper size,"
-" etc."
-msgstr ""
-"Affiche la fenêtre configuration de l’impression pour changer d'imprimante, "
-"d'orientation, de format du papier, etc."
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:646
-msgid "Closes this dialog"
-msgstr "Ferme cette boîte de dialogue"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:647
-msgid "Page orientation"
-msgstr "Orientation de la page"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:648
-msgid "Unprintable margins"
-msgstr "Marges non imprimables"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:649
-msgid "Updates and closes this dialog"
-msgstr "Met à jour et ferme cette boîte de dialogue"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:650
-msgid "Choose paper size"
-msgstr "Choisissez le format de papier"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:651
-msgid "Choose printer"
-msgstr "Choisissez une imprimante"
-
-#: ../../../../build/xtrkcad-old/app/bin/bllnhlp.c:652
-msgid "Print test page"
-msgstr "Impression de la page de test"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:1
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:8
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:1
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:8
msgid ""
"XTrackCAD provides demonstrations on most of the program's features. The "
"demos can be run by clicking on the Help menu on the Main window and then "
@@ -10628,29 +8470,32 @@ msgstr ""
"XTrackCAD a des démos sur la plupart des fonctions. Ces démos peuvent être "
"lues en sélectionnant \"Démos\" dans le menu Aide de la fenêtre principale."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:3
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:10
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:3
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:10
msgid ""
-"The notation \"Menu|Item\" is used in the documentation (and the on-line demos and tips) to indicate the selection of a menu item.\n"
-"For example, \"File|Open\" means to open the menu by clicking on File on the menu bar of the Main window and then selecting the Open item from that menu."
+"The notation \"Menu|Item\" is used in the documentation (and the on-line "
+"demos and tips) to indicate the selection of a menu item.\n"
+"For example, \"File|Open\" means to open the menu by clicking on File on the "
+"menu bar of the Main window and then selecting the Open item from that menu."
msgstr ""
-"La notation \"Menu|Item\" est utilisée dans la documentation (et les démos et astuces en ligne) pour indiquer la sélection d'un élément de menu.\n"
-"Par exemple, \"Fichier|Ouvrir\" signifie ouvrir le menu en cliquant sur Fichier dans la barre de menu de la fenêtre principale, puis en sélectionnant l'élément Ouvrir dans ce menu."
+"La notation \"Menu|Item\" est utilisée dans la documentation (et les démos "
+"et astuces en ligne) pour indiquer la sélection d'un élément de menu.\n"
+"Par exemple, \"Fichier|Ouvrir\" signifie ouvrir le menu en cliquant sur "
+"Fichier dans la barre de menu de la fenêtre principale, puis en "
+"sélectionnant l'élément Ouvrir dans ce menu."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:12
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:12
msgid ""
-"Set your modeling scale on the \"Options|Layout\" dialog. This controls the"
-" Turnouts and Structures that are available, Easement values and track "
-"gauge."
+"Set your modeling scale on the \"Options|Layout\" dialog. This controls the "
+"Turnouts and Structures that are available, Easement values and track gauge."
msgstr ""
-"Définissez votre échelle de modélisation dans la boîte de dialogue "
-"\"Options|Plan ...\". Cela contrôle les aiguillages et les bâtiments "
-"disponibles, les valeurs des courbes de transition et l'écartement des "
-"voies."
+"Définissez votre échelle de modélisation dans la boîte de dialogue \"Options|"
+"Plan ...\". Cela contrôle les aiguillages et les bâtiments disponibles, les "
+"valeurs des courbes de transition et l'écartement des voies."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:8
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:14
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:8
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:14
msgid ""
"A number of example layouts are provided. These files can be accessed by "
"\"Help|Examples\"."
@@ -10658,8 +8503,8 @@ msgstr ""
"Un certain nombre d'exemples de plans sont fournis. Ces fichiers sont "
"accessibles par \"Aide|Exemples\"."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:10
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:16
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:10
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:16
msgid ""
"When installed, the length units are set based on your contry: inches for "
"United States or Canada and centimeters elsewhere. You can change this on "
@@ -10670,8 +8515,8 @@ msgstr ""
"ailleurs. Vous pouvez changer cela dans la boîte de dialogue \"Options | "
"Préférences\" en choisissant entre métrique et anglais."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:12
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:18
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:18
msgid ""
"You can change the overall size of your layout on the \"Options|Layout\" "
"dialog."
@@ -10679,50 +8524,56 @@ msgstr ""
"Vous pouvez modifier la taille globale de votre plan dans la boîte de "
"dialogue \"Options|Plan\"."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:20
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:20
msgid ""
-"When installed, the default command is the Select command. You might want to"
-" change this to the Decribe command. You can do this on the "
-"\"Options|Command Options\" dialog."
+"When installed, the default command is the Select command. You might want to "
+"change this to the Decribe command. You can do this on the \"Options|"
+"Command Options\" dialog."
msgstr ""
"Une fois installée, la commande par défaut est la commande 'Sélectionner'. "
-"Vous voudrez peut-être changer cela en commande 'Propriétés'. Vous pouvez le"
-" faire dans la boîte de dialogue \"Options | Commande\"."
+"Vous voudrez peut-être changer cela en commande 'Propriétés'. Vous pouvez le "
+"faire dans la boîte de dialogue \"Options | Commande\"."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:22
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:22
msgid ""
-"When Selecting tracks, the connection between Selected and Unselected tracks"
-" is marked by a Red X. This indicates points where the connection between "
+"When Selecting tracks, the connection between Selected and Unselected tracks "
+"is marked by a Red X. This indicates points where the connection between "
"tracks will be broken if you Move or Rotate the Selected tracks."
msgstr ""
"Pour les voies sélectionnées, la connexion de la voie est marquée par un X "
-"rouge. C'est exactement là où la voie sera séparée lorsqu'elle sera déplacée"
-" ou pivotée."
+"rouge. C'est exactement là où la voie sera séparée lorsqu'elle sera déplacée "
+"ou pivotée."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:18
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:24
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:18
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:24
msgid ""
-"You can change orientation of the pages on the Print command by moving or rotating the Print Grid.\n"
+"You can change orientation of the pages on the Print command by moving or "
+"rotating the Print Grid.\n"
"Shift-Left-Drag moves the grid and Shift-Right-Drag rotates the grid."
msgstr ""
-"L'orientation des pages à imprimer peut être modifiée en déplaçant ou en faisant pivoter la grille d'impression.\n"
+"L'orientation des pages à imprimer peut être modifiée en déplaçant ou en "
+"faisant pivoter la grille d'impression.\n"
"Maj+Left-Drag déplace la grille et Maj+Right-Drag fait pivoter la grille."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:21
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:26
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:26
msgid ""
"You can add track to any unconnected End-Point with the Modify command.\n"
-"Hold down the Shift key and click on the End-Point and drag away to create a new track segment attached to the End-Point.\n"
+"Hold down the Shift key and click on the End-Point and drag away to create a "
+"new track segment attached to the End-Point.\n"
"Repeat with the new End-Point to create flowing tracks."
msgstr ""
-"Les voies peuvent être ajoutées à n'importe quel point de fin non connecté avec \"Modifier\".\n"
-"Pour créer une nouvelle section de voie, marquez un point de fin, puis maintenez la touche Maj enfoncée tout en déplaçant la section de voie.\n"
-"Répétez cette action avec ce nouveau point de fin pour créer des voies fluides."
+"Les voies peuvent être ajoutées à n'importe quel point de fin non connecté "
+"avec \"Modifier\".\n"
+"Pour créer une nouvelle section de voie, marquez un point de fin, puis "
+"maintenez la touche Maj enfoncée tout en déplaçant la section de voie.\n"
+"Répétez cette action avec ce nouveau point de fin pour créer des voies "
+"fluides."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:25
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:28
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:28
msgid ""
"You can create curved tracks in four ways by dragging from:\n"
" the 1st endpoint in the direction of the curve\n"
@@ -10731,87 +8582,122 @@ msgid ""
" the 1st to 2nd endpoint\n"
"Then drag on one of the Red arrows to create the final shape of the curve.\n"
"\n"
-"You can click on the small button to the right of the Curve command button to change the method."
+"You can click on the small button to the right of the Curve command button "
+"to change the method."
msgstr ""
"Les voies courbes peuvent être créées de quatre manières différentes:\n"
" à partir du 1er point de fin dans la direction de la courbe\n"
" du centre de la courbe au premier point de fin\n"
" du point de fin au centre\n"
" du 1er au 2nd point de fin\n"
-"Faites ensuite glisser l'une des deux flèches rouges pour définir la courbe finale.\n"
+"Faites ensuite glisser l'une des deux flèches rouges pour définir la courbe "
+"finale.\n"
"\n"
-"Les différentes méthodes de création de courbes de voie peuvent être sélectionnées en cliquant sur le bouton à droite du bouton de courbe dans la barre d'outils."
+"Les différentes méthodes de création de courbes de voie peuvent être "
+"sélectionnées en cliquant sur le bouton à droite du bouton de courbe dans la "
+"barre d'outils."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:34
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:30
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:30
msgid ""
-"When creating a straight or a curved track by dragging from the 1st End Point, you can snap the new track to an existing open end point by holding down Shift while you click.\n"
+"When creating a straight or a curved track by dragging from the 1st End "
+"Point, you can snap the new track to an existing open end point by holding "
+"down Shift while you click.\n"
"The new track will be joined to the old when you create it."
msgstr ""
-"Lors de la création d'une voie droite ou courbe en faisant glisser depuis le 1er point de fin, la nouvelle voie peut être alignée avec le point de fin existant en appuyant sur la touche Maj pendant que vous cliquez.\n"
+"Lors de la création d'une voie droite ou courbe en faisant glisser depuis le "
+"1er point de fin, la nouvelle voie peut être alignée avec le point de fin "
+"existant en appuyant sur la touche Maj pendant que vous cliquez.\n"
"La nouvelle voie sera connectée à la voie existante lorsque vous la créerez."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:37
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:32
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:32
msgid ""
-"Track Circles provide a quick way to see what arrangement of tracks will fit in your layout spaces. Create Circles with your typical radius and place them in corners and other locations where your main-line will make changes of direction. This will give you an overall idea of how your layout will look.\n"
+"Track Circles provide a quick way to see what arrangement of tracks will fit "
+"in your layout spaces. Create Circles with your typical radius and place "
+"them in corners and other locations where your main-line will make changes "
+"of direction. This will give you an overall idea of how your layout will "
+"look.\n"
"\n"
"You can create Circles by:\n"
" using a fixed radius\n"
" dragging from the Center to edge\n"
" dragging from an edge to the Center\n"
-"You can click on the small button to the left of the Circle command button to change the method."
-msgstr ""
-"Les cercles de voies offrent un moyen rapide de voir quelle disposition de voies s'adaptera aux espaces du plan. Créez des cercles de voie avec des rayons communs et placez-les dans les coins ou n'importe où sur votre voie principale où vous souhaitez changer de direction. Cela vous aidera à obtenir un premier aperçu de l'ensemble de votre plan de parcours.\n"
+"You can click on the small button to the left of the Circle command button "
+"to change the method."
+msgstr ""
+"Les cercles de voies offrent un moyen rapide de voir quelle disposition de "
+"voies s'adaptera aux espaces du plan. Créez des cercles de voie avec des "
+"rayons communs et placez-les dans les coins ou n'importe où sur votre voie "
+"principale où vous souhaitez changer de direction. Cela vous aidera à "
+"obtenir un premier aperçu de l'ensemble de votre plan de parcours.\n"
"\n"
"Les cercles peuvent être créés comme suit :\n"
" avec un rayon fixe\n"
" en tirant du milieu vers le bord\n"
" en tirant du bord vers le milieu\n"
-"Vous pouvez cliquer sur le petit bouton à gauche du bouton de commande Cercle pour changer la méthode."
+"Vous pouvez cliquer sur le petit bouton à gauche du bouton de commande "
+"Cercle pour changer la méthode."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:45
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:34
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:45
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:34
msgid ""
-"Easements (spiral transition curves) are used when track changes from straight to curved by gradually changing the radius. This improves operation and appearance.\n"
+"Easements (spiral transition curves) are used when track changes from "
+"straight to curved by gradually changing the radius. This improves "
+"operation and appearance.\n"
"Easements are created with Joining or Extending Tracks.\n"
"The Easement dialog is used to control easements."
msgstr ""
-"Les Easements (courbes de transition en spirale) sont utilisées lorsque la voie passe d'une droite à une courbe en modifiant progressivement le rayon. Cela améliore le fonctionnement et l'apparence.\n"
+"Les Easements (courbes de transition en spirale) sont utilisées lorsque la "
+"voie passe d'une droite à une courbe en modifiant progressivement le rayon. "
+"Cela améliore le fonctionnement et l'apparence.\n"
"Les Easements sont créées avec Raccorder ou Étendre les voies.\n"
"La boîte de dialogue Easement permet leur contrôle."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:49
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:36
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:36
msgid ""
-"\"Help|Recent Messages\" shows the last error and warning messages that were"
-" generated by the program. Also an explanation of each message is "
-"displayed."
+"\"Help|Recent Messages\" shows the last error and warning messages that were "
+"generated by the program. Also an explanation of each message is displayed."
msgstr ""
"\"Aide|Messages récents\" affiche les derniers messages d'erreur et "
"d'avertissement générés par le programme. Une explication pour chaque "
"message est également affichée."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:51
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:38
-msgid ""
-"When creating stall tracks for a turntable, you usually want the the stall tracks to be spaced evenly.\n"
-"The \"Turntable Angle\" item on \"Options|Preferences\" dialog can be used specify the minimum angle between stall tracks."
-msgstr ""
-"Lorsque vous créez des voies de manœuvre pour un pont tournant, vous souhaitez généralement que les voies de manœuvre soient espacées uniformément.\n"
-"L'élément \"Angle de pont tournant\" de la boîte de dialogue \"Options|Préférences\" peut être utilisé pour spécifier l'angle minimum entre les voies de manœuvre."
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:40
-msgid ""
-"XTrackCAD periodically saves the current layout in a check point file. The 'Check Point' item on the 'Options|Preferences' dialog controls how often the file is saved.\n"
-"You can recover your working file after a system crash by copying the checkpoint file (xtrkcad.ckp in the XTrackCAD Working directory) to file.xtc"
-msgstr ""
-"XTrackCAD enregistre constamment votre travail actuel dans un fichier temporaire. Vous pouvez spécifier la fréquence de cette sauvegarde automatique dans le champ «Sauvegarde» sous l'élément de menu «Options|Préférences».\n"
-"Après un crash système/programme, copiez simplement le fichier xtrkcad.ckp (depuis le répertoire \"... \\AppData\\Roaming\\XTrackCad\") vers le répertoire de travail où se trouvent les fichiers \"file.xtc\""
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:57
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:42
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:38
+msgid ""
+"When creating stall tracks for a turntable, you usually want the the stall "
+"tracks to be spaced evenly.\n"
+"The \"Turntable Angle\" item on \"Options|Preferences\" dialog can be used "
+"specify the minimum angle between stall tracks."
+msgstr ""
+"Lorsque vous créez des voies de manœuvre pour un pont tournant, vous "
+"souhaitez généralement que les voies de manœuvre soient espacées "
+"uniformément.\n"
+"L'élément \"Angle de pont tournant\" de la boîte de dialogue \"Options|"
+"Préférences\" peut être utilisé pour spécifier l'angle minimum entre les "
+"voies de manœuvre."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:40
+msgid ""
+"XTrackCAD periodically saves the current layout in a check point file. The "
+"'Check Point' item on the 'Options|Preferences' dialog controls how often "
+"the file is saved.\n"
+"You can recover your working file after a system crash by copying the "
+"checkpoint file (xtrkcad.ckp in the XTrackCAD Working directory) to file.xtc"
+msgstr ""
+"XTrackCAD enregistre constamment votre travail actuel dans un fichier "
+"temporaire. Vous pouvez spécifier la fréquence de cette sauvegarde "
+"automatique dans le champ «Sauvegarde» sous l'élément de menu «Options|"
+"Préférences».\n"
+"Après un crash système/programme, copiez simplement le fichier xtrkcad.ckp "
+"(depuis le répertoire \"... \\AppData\\Roaming\\XTrackCad\") vers le "
+"répertoire de travail où se trouvent les fichiers \"file.xtc\""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:42
msgid ""
"The Parallel command is helpful to layout yards and sidings. If the "
"Parallel track abuts with an existing track, it is automatically connected."
@@ -10820,98 +8706,140 @@ msgstr ""
"d'évitement. Si une voie parallèle touche presque une voie existante, elle "
"se connecte automatiquement."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:59
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:44
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:59
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:44
msgid ""
-"You can use Shift-Drag in Select command to move and rotate selected tracks.\n"
+"You can use Shift-Drag in Select command to move and rotate selected "
+"tracks.\n"
"Shift-Left-Drag moves tracks and Shift-Right-Drag rotates them.\n"
"Control-Left-Drag can move labels."
msgstr ""
-"Vous pouvez utiliser Maj + bouton de souris dans la commande Select pour déplacer et faire pivoter les voies sélectionnées.\n"
-"Maj + bouton gauche déplace les voies et Maj et le bouton droit les fait pivoter.\n"
+"Vous pouvez utiliser Maj + bouton de souris dans la commande Select pour "
+"déplacer et faire pivoter les voies sélectionnées.\n"
+"Maj + bouton gauche déplace les voies et Maj et le bouton droit les fait "
+"pivoter.\n"
"Ctrl + bouton gauche peut déplacer des étiquettes."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:46
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:46
msgid ""
"You can move and rotate the Snap Grid to align with existing track or "
"benchwork."
msgstr ""
-"La grille de capture peut être déplacée ou tournée de manière à pouvoir être"
-" alignée avec des rails ou des superstructures."
+"La grille de capture peut être déplacée ou tournée de manière à pouvoir être "
+"alignée avec des rails ou des superstructures."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:65
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:48
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:48
msgid ""
"Use the Parts List command to measure track length.\n"
-"Select the tracks you want to measure and then click on the Parts List button. The report will list the total of length of the selected flex-track. You will have to add in the length of any Turnouts."
-msgstr ""
-"La boîte de dialogue \"Gérer|Liste des pièces\" peut être utilisée pour mesurer les longueurs de voie.\n"
-"Sélectionnez les voies que vous souhaitez mesurer, puis cliquez sur le bouton Liste des pièces. Le rapport répertorie la longueur totale de la voie flexible sélectionnée. Vous devrez ajouter la longueur des aiguillages."
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:68
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:50
-msgid ""
-"The length of flex-track attached to each Turnout is displayed on layout near the end-points of the Turnouts.\n"
-"Make sure 'Lengths' option of the 'Label Enable' toggle button on the Display dialog is selected."
+"Select the tracks you want to measure and then click on the Parts List "
+"button. The report will list the total of length of the selected flex-"
+"track. You will have to add in the length of any Turnouts."
msgstr ""
-"La longueur de la voie flexible connectée à chaque aiguillage est affichée près du point final de l'aiguillage.\n"
-"Assurez-vous que l'option \"Longueurs\" est sélectionnée dans la boîte de dialogue \"Options|Affichage\"."
+"La boîte de dialogue \"Gérer|Liste des pièces\" peut être utilisée pour "
+"mesurer les longueurs de voie.\n"
+"Sélectionnez les voies que vous souhaitez mesurer, puis cliquez sur le "
+"bouton Liste des pièces. Le rapport répertorie la longueur totale de la voie "
+"flexible sélectionnée. Vous devrez ajouter la longueur des aiguillages."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:71
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:52
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:68
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:50
msgid ""
-"The Profile command can be used to find the length of a continous section of track.\n"
-"Select the track at the beginning and end of the section. The total length of track will be displayed on the Profile window in the lower right corner.\n"
-"Note: the Profile selects the shortest path between the two selected tracks, which might not be the path you are interested in. In this case, select the first track and then select other tracks along the path."
+"The length of flex-track attached to each Turnout is displayed on layout "
+"near the end-points of the Turnouts.\n"
+"Make sure 'Lengths' option of the 'Label Enable' toggle button on the "
+"Display dialog is selected."
msgstr ""
-"La commande \"Profil\" du menu \"Modifier\" peut être utilisée pour trouver la longueur d'une section continue de voie.\n"
-"Sélectionnez la voie au début et à la fin de la section. La longueur totale de la voie sera affichée dans la fenêtre Profil dans le coin inférieur droit.\n"
-"Remarque : le profil sélectionne le chemin le plus court entre les deux voies sélectionnées, qui peut ne pas être le chemin qui vous intéresse. Dans ce cas, sélectionnez la première voie, puis sélectionnez d'autres voies le long du chemin."
+"La longueur de la voie flexible connectée à chaque aiguillage est affichée "
+"près du point final de l'aiguillage.\n"
+"Assurez-vous que l'option \"Longueurs\" est sélectionnée dans la boîte de "
+"dialogue \"Options|Affichage\"."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:75
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:54
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:71
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:52
msgid ""
-"Layers can be used to contain different groups of tracks or other features."
-" You might use one layer for the main-line, another of staging tracks and "
+"The Profile command can be used to find the length of a continous section of "
+"track.\n"
+"Select the track at the beginning and end of the section. The total length "
+"of track will be displayed on the Profile window in the lower right corner.\n"
+"Note: the Profile selects the shortest path between the two selected tracks, "
+"which might not be the path you are interested in. In this case, select the "
+"first track and then select other tracks along the path."
+msgstr ""
+"La commande \"Profil\" du menu \"Modifier\" peut être utilisée pour trouver "
+"la longueur d'une section continue de voie.\n"
+"Sélectionnez la voie au début et à la fin de la section. La longueur totale "
+"de la voie sera affichée dans la fenêtre Profil dans le coin inférieur "
+"droit.\n"
+"Remarque : le profil sélectionne le chemin le plus court entre les deux "
+"voies sélectionnées, qui peut ne pas être le chemin qui vous intéresse. Dans "
+"ce cas, sélectionnez la première voie, puis sélectionnez d'autres voies le "
+"long du chemin."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:54
+msgid ""
+"Layers can be used to contain different groups of tracks or other features. "
+"You might use one layer for the main-line, another of staging tracks and "
"another of benchwork.\n"
msgstr ""
-"Les calques peuvent être utilisés pour contenir différents groupes de voies ou d’autres fonctionnalités. Vous pouvez utiliser une couche pour la ligne principale, une autre pour les gares cachées et une autre pour les sous-bâtiments.\n"
-"Vous pouvez attribuer un nom à chaque couche \"à l'aide de la boîte de dialogue Calque\". Ce nom sera affiché dans la bulle d'aide du bouton de calque correspondant, si la bulle d'aide est activée dans la boîte de dialogue Affichage.\n"
+"Les calques peuvent être utilisés pour contenir différents groupes de voies "
+"ou d’autres fonctionnalités. Vous pouvez utiliser une couche pour la ligne "
+"principale, une autre pour les gares cachées et une autre pour les sous-"
+"bâtiments.\n"
+"Vous pouvez attribuer un nom à chaque couche \"à l'aide de la boîte de "
+"dialogue Calque\". Ce nom sera affiché dans la bulle d'aide du bouton de "
+"calque correspondant, si la bulle d'aide est activée dans la boîte de "
+"dialogue Affichage.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:77
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:56
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:77
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:56
msgid ""
-"You can give each layer a name (by using the \"Manage|Layer\" dialog). This"
-" name will be displayed as the Balloon Help for the corresponding Layer "
+"You can give each layer a name (by using the \"Manage|Layer\" dialog). This "
+"name will be displayed as the Balloon Help for the corresponding Layer "
"button, if you have Balloon Help enabled on the \"Options|Display\" dialog."
msgstr ""
-"Les calques peuvent être utilisés pour contenir différents groupes de voies ou d’autres fonctionnalités. Vous pouvez utiliser une couche pour la ligne principale, une autre pour les gares cachées et une autre pour les sous-bâtiments.\n"
-"Vous pouvez attribuer un nom à chaque couche (à l'aide de la boîte de dialogue Calque). Ce nom sera affiché dans la bulle d'aide du bouton de calque correspondant, si la bulle d'aide est activée dans la boîte de dialogue \"Options|Affichage\"."
+"Les calques peuvent être utilisés pour contenir différents groupes de voies "
+"ou d’autres fonctionnalités. Vous pouvez utiliser une couche pour la ligne "
+"principale, une autre pour les gares cachées et une autre pour les sous-"
+"bâtiments.\n"
+"Vous pouvez attribuer un nom à chaque couche (à l'aide de la boîte de "
+"dialogue Calque). Ce nom sera affiché dans la bulle d'aide du bouton de "
+"calque correspondant, si la bulle d'aide est activée dans la boîte de "
+"dialogue \"Options|Affichage\"."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:79
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:58
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:79
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:58
msgid ""
-"You can remove groups of buttons or the Hot Bar from the Main window to give"
-" you more room if you are not using some features. Also, the number of "
-"Layer buttons displayed is controlled by the \"Manage|Layers\" dialog."
+"You can remove groups of buttons or the Hot Bar from the Main window to give "
+"you more room if you are not using some features. Also, the number of Layer "
+"buttons displayed is controlled by the \"Manage|Layers\" dialog."
msgstr ""
"Vous pouvez alléger la fenêtre principale de certains groupes de boutons ou "
"de la barre dynamique pour vous donner plus d'espace si vous n'utilisez pas "
"certaines fonctionnalités. De plus, le nombre de boutons de calque affichés "
"est contrôlé par la boîte \"Gérer|Calques\"."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:81
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:60
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:60
msgid ""
-"The size of the map window is controlled by the overall size of the room (specified on the layout dialog) and the map scale (on the display dialog). You can make the Map window larger (or smaller) by decreasing (or increasing) the map scale.\n"
+"The size of the map window is controlled by the overall size of the room "
+"(specified on the layout dialog) and the map scale (on the display dialog). "
+"You can make the Map window larger (or smaller) by decreasing (or "
+"increasing) the map scale.\n"
"XTrackCad will prevent you from making the map window too small or too large."
msgstr ""
-"La taille de la fenêtre de la carte est contrôlée par la taille globale de la pièce (spécifiée dans la boîte de dialogue Options|Plan) et l'échelle de la carte (dans la boîte de dialogue Options|Affichage). Vous pouvez agrandir (ou réduire) la fenêtre Carte en diminuant (ou en augmentant) l'échelle de la carte.\n"
-"XTrackCad vous empêchera de rendre la fenêtre de carte trop petite ou trop grande."
+"La taille de la fenêtre de la carte est contrôlée par la taille globale de "
+"la pièce (spécifiée dans la boîte de dialogue Options|Plan) et l'échelle de "
+"la carte (dans la boîte de dialogue Options|Affichage). Vous pouvez agrandir "
+"(ou réduire) la fenêtre Carte en diminuant (ou en augmentant) l'échelle de "
+"la carte.\n"
+"XTrackCad vous empêchera de rendre la fenêtre de carte trop petite ou trop "
+"grande."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:84
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:62
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:62
msgid ""
"You can unload parameter files you are not using by the Parameter Files "
"dialog. This removes unused Turnout and Structure definitions from the Hot "
@@ -10922,8 +8850,8 @@ msgstr ""
"définitions d'aiguillage et de structure inutilisées de la barre dynamique "
"et accélère le démarrage du programme."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:86
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:64
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:64
msgid ""
"Right-Click on the Main window displays a menu list of commands as an "
"alternative to pressing the buttons on the tool bar or using the menu "
@@ -10933,8 +8861,8 @@ msgstr ""
"de commande peut être utilisé en cliquant avec le bouton droit dans la "
"fenêtre principale."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:87
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:66
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:87
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:66
msgid ""
"Holding down the Shift key while you Right-Click will display options for "
"the current command (if any)."
@@ -10942,26 +8870,38 @@ msgstr ""
"Si la touche Maj reste enfoncée pendant que vous avez sélectionné une "
"commande (le cas échéant), les options pour cette commande seront affichées."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:89
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:68
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:89
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:68
msgid ""
-"Right-Click on the Hot Bar displays a menu of the different groups of objects which you can use to jump to the group you are interested in.\n"
-"Pressing a numeric key (1-9 and 0) moves the Hot Bar to corresponding position (1 is the start, 5 is half way, 0 is the end)."
+"Right-Click on the Hot Bar displays a menu of the different groups of "
+"objects which you can use to jump to the group you are interested in.\n"
+"Pressing a numeric key (1-9 and 0) moves the Hot Bar to corresponding "
+"position (1 is the start, 5 is half way, 0 is the end)."
msgstr ""
-"Un clic droit dans la sélection rapide ouvre un menu avec différents groupes d'objets, ceux-ci peuvent être utilisés pour passer rapidement à ce type de voie.\n"
-"En appuyant sur les chiffres de la sélection rapide (1-9 et 0), la position correspondante de la sélection de voie peut également être modifiée (où 1 indique la première sélection de voie, 5 indique le milieu de la sélection et 0 indique la fin)."
+"Un clic droit dans la sélection rapide ouvre un menu avec différents groupes "
+"d'objets, ceux-ci peuvent être utilisés pour passer rapidement à ce type de "
+"voie.\n"
+"En appuyant sur les chiffres de la sélection rapide (1-9 et 0), la position "
+"correspondante de la sélection de voie peut également être modifiée (où 1 "
+"indique la première sélection de voie, 5 indique le milieu de la sélection "
+"et 0 indique la fin)."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:92
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:70
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:92
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:70
msgid ""
"Right-Drag on the Map window sets the origin and scale of the Main window.\n"
-"The Main window will be centered on the spot where you started the Draw and how far you Drag will control how large an area you can see on the Main window."
+"The Main window will be centered on the spot where you started the Draw and "
+"how far you Drag will control how large an area you can see on the Main "
+"window."
msgstr ""
-"En faisant glisser la souris avec le bouton droit dans la fenêtre de navigation on définit l'origine et l'échelle de la fenêtre principale.\n"
-"La fenêtre principale est centrée à l'endroit où vous avez commencé le dessin. La sélection en surbrillance de la fenêtre de navigation détermine la zone que vous pouvez voir dans la fenêtre principale."
+"En faisant glisser la souris avec le bouton droit dans la fenêtre de "
+"navigation on définit l'origine et l'échelle de la fenêtre principale.\n"
+"La fenêtre principale est centrée à l'endroit où vous avez commencé le "
+"dessin. La sélection en surbrillance de la fenêtre de navigation détermine "
+"la zone que vous pouvez voir dans la fenêtre principale."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:95
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:72
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:95
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:72
msgid ""
"To refresh the Main window, press Control-L (hold down the 'Ctrl' key and "
"then press the 'l' key)."
@@ -10969,16 +8909,16 @@ msgstr ""
"Pour actualiser la fenêtre principale, appuyez sur Ctrl+L (maintenez "
"enfoncée la touche «Ctrl», puis appuyez sur la touche «l»)."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:97
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:74
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:97
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:74
msgid ""
"The File menu contains a list of the last 5 layouts you were working on."
msgstr ""
"Le menu Fichier contient une liste des 5 derniers plans sur lesquels vous "
"travailliez."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:99
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:76
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:76
msgid ""
"The Print command can optionally print lines representing the roadbed for "
"all tracks. This is useful when printing full size (1:1) for cutting "
@@ -10988,8 +8928,8 @@ msgstr ""
"ballast\" peut être sélectionnée afin de pouvoir imprimer des modèles de "
"ballast à l'échelle (1:1)."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:101
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:78
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:101
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:78
msgid ""
"Pressing the 'Esc' key cancels the current command and invokes the default "
"command, (which is either Describe or Select)."
@@ -10998,38 +8938,53 @@ msgstr ""
"automatiquement la commande par défaut (qui est soit Propriétés, soit "
"Sélectionner)."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:103
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:80
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:103
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:80
msgid ""
-"When moving or rotating tracks on slow machines or with a large number of tracks, you can improve performance by changing the way tracks are drawn while being moved.\n"
-"Shift-Right click will display a menu containing options to draw tracks normally, as simple lines or just draw end-points."
+"When moving or rotating tracks on slow machines or with a large number of "
+"tracks, you can improve performance by changing the way tracks are drawn "
+"while being moved.\n"
+"Shift-Right click will display a menu containing options to draw tracks "
+"normally, as simple lines or just draw end-points."
msgstr ""
-"Sur les ordinateurs lents ou avec un nombre élevé de voies, la façon dont les voies sont redessinées peut être modifiée.\n"
-"Une fois les voies dessinées, le fait de maintenir la touche Maj enfoncée et de cliquer avec le bouton droit de la souris dans un menu d'options vous permet de choisir comment afficher les voies : normales, simples ou simplement comme points de fin."
+"Sur les ordinateurs lents ou avec un nombre élevé de voies, la façon dont "
+"les voies sont redessinées peut être modifiée.\n"
+"Une fois les voies dessinées, le fait de maintenir la touche Maj enfoncée et "
+"de cliquer avec le bouton droit de la souris dans un menu d'options vous "
+"permet de choisir comment afficher les voies : normales, simples ou "
+"simplement comme points de fin."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:106
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:82
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:106
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:82
msgid ""
"The colors of different parts of the Main window can be changed with the "
-"Colors dialog. In particular, the Snap Grid color can be changed to make it"
-" more visible when printed."
+"Colors dialog. In particular, the Snap Grid color can be changed to make it "
+"more visible when printed."
msgstr ""
"Les couleurs des différents assemblages dans la fenêtre principale peuvent "
"être modifiées via la boîte de dialogue \"Options|Couleurs\". En "
"particulier, la couleur de la grille magnétique peut être modifiée pour la "
"rendre plus visible lors de l'impression."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:108
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:84
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:108
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:84
msgid ""
-"By default objects are drawn in their normal colors. Tracks will be drawn in Black. Objects can also be drawn in the color according to their Layer. The color of a Layer is displayed on the corresponding Layer button.\n"
-"The Display dialog 'Color Layers' item has separate toggles for Tracks and non-Tracks."
+"By default objects are drawn in their normal colors. Tracks will be drawn "
+"in Black. Objects can also be drawn in the color according to their Layer. "
+"The color of a Layer is displayed on the corresponding Layer button.\n"
+"The Display dialog 'Color Layers' item has separate toggles for Tracks and "
+"non-Tracks."
msgstr ""
-"Habituellement, les objets sont dessinés dans leurs couleurs par défaut. Les voies sont affichées en noir. Les objets peuvent être affichés dans les couleurs de leurs calques respectifs. La couleur d'un calque est affichée sur son bouton de calque associé.\n"
-"L'option \"Couleurs des calques\" dans la boîte de dialogue \"Options>Affichage\" dispose d'une option distincte pour les voies et l'autre pour l'activation des couleurs."
+"Habituellement, les objets sont dessinés dans leurs couleurs par défaut. Les "
+"voies sont affichées en noir. Les objets peuvent être affichés dans les "
+"couleurs de leurs calques respectifs. La couleur d'un calque est affichée "
+"sur son bouton de calque associé.\n"
+"L'option \"Couleurs des calques\" dans la boîte de dialogue "
+"\"Options>Affichage\" dispose d'une option distincte pour les voies et "
+"l'autre pour l'activation des couleurs."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:111
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:86
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:111
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:86
msgid ""
"Each Layer can be drawn or hidden by the 'Visible' toggle on the Layers "
"dialog."
@@ -11037,123 +8992,151 @@ msgstr ""
"Chaque calque peut être affiché ou masqué par la bascule 'Visible' dans la "
"boîte de dialogue Gérer|Calques."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:112
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:88
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:88
msgid ""
-"Short cut Layer buttons can also be displayed on the tool bar for up to the first 20 layers.\n"
+"Short cut Layer buttons can also be displayed on the tool bar for up to the "
+"first 20 layers.\n"
"This buttons allow to Show or Hide the layers."
msgstr ""
-"Des boutons de calque raccourcis peuvent également être affichés dans la barre d'outils pour les 20 premiers calques au maximum.\n"
+"Des boutons de calque raccourcis peuvent également être affichés dans la "
+"barre d'outils pour les 20 premiers calques au maximum.\n"
"Ces boutons permettent d'afficher ou de masquer les calques."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:115
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:90
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:115
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:90
msgid "The name of the Layer is the Balloon Help for the Layer button."
msgstr ""
"Le nom d'un calque est affiché dans la bulle de dialogue de chaque calque "
"respectif."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:117
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:92
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:92
msgid ""
-"The playback speed of the Demos can be changed by using Speed drop down list"
-" on the Demo window."
+"The playback speed of the Demos can be changed by using Speed drop down list "
+"on the Demo window."
msgstr ""
-"La vitesse de lecture des démos peut être modifiée par l'onglet de sélection"
-" dans le coin supérieur droit de la fenêtre de démonstration."
+"La vitesse de lecture des démos peut être modifiée par l'onglet de sélection "
+"dans le coin supérieur droit de la fenêtre de démonstration."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:119
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:94
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:119
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:94
msgid ""
"Many of the commands and dialogs can be invoked by special key combinations "
-"called Menu-Accelerators. These are listed on the Menus next to the command"
-" name. For example, Control-P will invoke the Print command."
+"called Menu-Accelerators. These are listed on the Menus next to the command "
+"name. For example, Control-P will invoke the Print command."
msgstr ""
"De nombreuses commandes et dialogues peuvent être appelés à l'aide de "
"combinaisons de touches spéciales appelées Accélérateurs de menu. Celles-ci "
"sont répertoriées dans les menus en regard du nom de la commande. Par "
"exemple, Ctrl+P appellera la commande Imprimer."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:121
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:96
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:121
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:96
msgid ""
-"The Connect command is used to join Sectional track pieces that don't quite fit together.\n"
-"This command works by adding small gaps between other tracks to move the selected End-Points closer together."
+"The Connect command is used to join Sectional track pieces that don't quite "
+"fit together.\n"
+"This command works by adding small gaps between other tracks to move the "
+"selected End-Points closer together."
msgstr ""
-"La commande 'Connecter deux voies' est utilisée pour joindre des morceaux de section de voie qui ne s'emboîtent pas tout à fait ensemble.\n"
-"Cette commande fonctionne en ajoutant de petits espaces entre les autres voies pour que les points de fin puissent être connectés l'un à l'autre."
+"La commande 'Connecter deux voies' est utilisée pour joindre des morceaux de "
+"section de voie qui ne s'emboîtent pas tout à fait ensemble.\n"
+"Cette commande fonctionne en ajoutant de petits espaces entre les autres "
+"voies pour que les points de fin puissent être connectés l'un à l'autre."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:124
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:98
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:124
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:98
msgid ""
-"To copy a group of objects: Select the objects, press Control-c (or select Copy from the Edit menu), press Control-v (or select Paste from the Edit menu).\n"
-"The selected tracks will be copied to the layout and you can Move or Rotate them into position."
+"To copy a group of objects: Select the objects, press Control-c (or select "
+"Copy from the Edit menu), press Control-v (or select Paste from the Edit "
+"menu).\n"
+"The selected tracks will be copied to the layout and you can Move or Rotate "
+"them into position."
msgstr ""
-"Pour copier un groupe d'objets : Sélectionnez les en appuyant sur Control-c (ou sélectionnez Copier dans le menu Edition), suivi de Control-v (ou sélectionnez Coller dans le menu Edition).\n"
-"Les voies sélectionnées seront copiées sur le plan et vous pourrez les déplacer ou les faire pivoter."
+"Pour copier un groupe d'objets : Sélectionnez les en appuyant sur Control-c "
+"(ou sélectionnez Copier dans le menu Edition), suivi de Control-v (ou "
+"sélectionnez Coller dans le menu Edition).\n"
+"Les voies sélectionnées seront copiées sur le plan et vous pourrez les "
+"déplacer ou les faire pivoter."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:127
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:100
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:127
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:100
msgid ""
"In the Rotate (or Select) commands you can press Shift-Right-Click to "
-"display the Rotate menu which allows you to rotate the selected objects by a"
-" specific angle."
+"display the Rotate menu which allows you to rotate the selected objects by a "
+"specific angle."
msgstr ""
-"Dans les commandes Rotation (ou Sélection), vous pouvez appuyer sur Maj"
-"+Clic-droit pour afficher le menu Rotation qui vous permet de faire pivoter "
-"les objets sélectionnés d'un angle spécifique."
+"Dans les commandes Rotation (ou Sélection), vous pouvez appuyer sur Maj+Clic-"
+"droit pour afficher le menu Rotation qui vous permet de faire pivoter les "
+"objets sélectionnés d'un angle spécifique."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:129
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:102
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:129
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:102
msgid ""
-"You can use the Move-To-Join option of the Join command (hold down the Shift"
-" key) to move a group of Selected tracks to attach with some unselected End-"
+"You can use the Move-To-Join option of the Join command (hold down the Shift "
+"key) to move a group of Selected tracks to attach with some unselected End-"
"Point."
msgstr ""
"La commande \"Connecter deux voies\" du menu \"Modifier\" a une option pour "
"pouvoir connecter un groupe de voies sélectionnées à un point de fin non "
"spécifié précédemment. Marquez d'abord les voies à connecter, puis "
"sélectionnez la boîte de dialogue \"Modifier|Connecter deux voies\", "
-"maintenez la touche (Maj) enfoncée tout en maintenant le bouton gauche de la"
-" souris enfoncé et déplacez le groupe de voies marqué vers le point cible en"
-" appuyant à nouveau sur le bouton gauche de la souris, les voies "
+"maintenez la touche (Maj) enfoncée tout en maintenant le bouton gauche de la "
+"souris enfoncé et déplacez le groupe de voies marqué vers le point cible en "
+"appuyant à nouveau sur le bouton gauche de la souris, les voies "
"sélectionnées sont ajoutées au point de fin."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:131
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:104
-msgid ""
-"The Price List dialog (on the File Menu) is used to specify the prices of each type of Turnout, Sectional Track and Structure. Also, the length and price of flex-track pieces can be specified for each scale.\n"
-"This values will be used on the Parts List report to generate total cost of the selected objects."
-msgstr ""
-"La boîte de dialogue (Gérer|Liste de prix) peut être utilisée pour saisir les prix de chaque voie, aiguillage ou autre élément. Vous pouvez également saisir la longueur et le prix des voies Flex pour n'importe quelle échelle.\n"
-"Les prix indiqués sont utilisés pour lister les coûts totaux dans la boîte de dialogue \"Gérer|Liste des pièces\"."
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:134
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:106
-msgid ""
-"Areas of water can represented by a Polygon (use the Draw command) of the appropiate color.\n"
-"By using the Modify command, you can move, add or remove corners of the Polygon to fit the shape of the water.\n"
-"You use the Below command to place the Polygon below (or behind) other objects.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:104
+msgid ""
+"The Price List dialog (on the File Menu) is used to specify the prices of "
+"each type of Turnout, Sectional Track and Structure. Also, the length and "
+"price of flex-track pieces can be specified for each scale.\n"
+"This values will be used on the Parts List report to generate total cost of "
+"the selected objects."
+msgstr ""
+"La boîte de dialogue (Gérer|Liste de prix) peut être utilisée pour saisir "
+"les prix de chaque voie, aiguillage ou autre élément. Vous pouvez également "
+"saisir la longueur et le prix des voies Flex pour n'importe quelle échelle.\n"
+"Les prix indiqués sont utilisés pour lister les coûts totaux dans la boîte "
+"de dialogue \"Gérer|Liste des pièces\"."
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:134
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:106
+msgid ""
+"Areas of water can represented by a Polygon (use the Draw command) of the "
+"appropiate color.\n"
+"By using the Modify command, you can move, add or remove corners of the "
+"Polygon to fit the shape of the water.\n"
+"You use the Below command to place the Polygon below (or behind) other "
+"objects.\n"
"\n"
"You can also use a Polygon to represent aisles."
msgstr ""
-"Les zones d'eau peuvent être représentées par un polygone (utilisez la commande Dessiner) de la couleur appropriée.\n"
-"En utilisant la commande Modifier, vous pouvez déplacer, ajouter ou supprimer des angles du polygone pour l’ajuster à la forme de l’eau.\n"
-"Vous utilisez la commande Au-dessous pour placer le polygone au-dessous (ou derrière) d'autres objets.\n"
+"Les zones d'eau peuvent être représentées par un polygone (utilisez la "
+"commande Dessiner) de la couleur appropriée.\n"
+"En utilisant la commande Modifier, vous pouvez déplacer, ajouter ou "
+"supprimer des angles du polygone pour l’ajuster à la forme de l’eau.\n"
+"Vous utilisez la commande Au-dessous pour placer le polygone au-dessous (ou "
+"derrière) d'autres objets.\n"
"\n"
"Vous pouvez également utiliser un polygone pour représenter des allées."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:140
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:108
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:140
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:108
msgid ""
-"When you create Benchwork you can move it below other objects by Selecting the Benchwork and use the Below command.\n"
+"When you create Benchwork you can move it below other objects by Selecting "
+"the Benchwork and use the Below command.\n"
"Also, put Benchwork in a separate Layer so you can hide it if desired."
msgstr ""
-"Lorsque vous créez une structure, vous pouvez la déplacer sous d'autres objets en sélectionnant la structure et en utilisant la commande \"Au-dessous\" du menu \"Edition\".\n"
-"Placez également la structure dans un calque séparé afin de pouvoir la masquer si vous le souhaitez."
+"Lorsque vous créez une structure, vous pouvez la déplacer sous d'autres "
+"objets en sélectionnant la structure et en utilisant la commande \"Au-"
+"dessous\" du menu \"Edition\".\n"
+"Placez également la structure dans un calque séparé afin de pouvoir la "
+"masquer si vous le souhaitez."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:143
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:110
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:143
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:110
msgid ""
"You can enter Distances and Lengths using any format regardless of the "
"Length Format on the Preferences dialog."
@@ -11161,17 +9144,16 @@ msgstr ""
"Les longueurs peuvent être saisies indépendamment des valeurs prédéfinies "
"dans la boîte de dialogue \"Options|Paramètres\"."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:144
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:112
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:112
msgid ""
-"You can enter Metric values when English is the default Units and vice "
-"versa."
+"You can enter Metric values when English is the default Units and vice versa."
msgstr ""
"Les valeurs métriques peuvent être saisies même si le paramètre pour les "
"unités anglaises est sélectionné et vice versa."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:146
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:114
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:146
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:114
msgid ""
"When entering Distances and Lengths you can press the '=' key to redisplay "
"the value in the default format."
@@ -11179,35 +9161,35 @@ msgstr ""
"Lorsque vous entrez des distances et des longueurs, vous pouvez utiliser le "
"caractère '=' pour afficher de nouveau la valeur au format par défaut."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:147
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:116
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:147
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:116
msgid ""
-"You can also press the 's' key to convert a Prototype measurement to a Scale"
-" measurement by dividing by the ratio for the current scale."
+"You can also press the 's' key to convert a Prototype measurement to a Scale "
+"measurement by dividing by the ratio for the current scale."
msgstr ""
-"Vous pouvez également appuyer sur la touche «s» pour convertir une mesure de"
-" prototype en une mesure d'échelle en divisant par le rapport de l'échelle "
+"Vous pouvez également appuyer sur la touche «s» pour convertir une mesure de "
+"prototype en une mesure d'échelle en divisant par le rapport de l'échelle "
"actuelle."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:148
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:118
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:118
msgid ""
"The 'p' key will convert a Scale measurement to a Prototype measurement."
msgstr ""
"La touche «p» convertira une mesure d'échelle en une mesure de prototype."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:150
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:120
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:150
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:120
msgid ""
-"You can place cars on the layout using the Train Simulation command to check"
-" clearance points, track to track separation and coupling."
+"You can place cars on the layout using the Train Simulation command to check "
+"clearance points, track to track separation and coupling."
msgstr ""
"Les véhicules peuvent être placées dans le plan de voie à l'aide de la "
"commande Train Simulation afin de simuler les passages à niveau, les "
"liaisons voie à voie ou le couplage."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:152
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:122
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:152
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:122
msgid ""
"Use the MoveTo button on the Custom Management dialog to move your custom "
"Turnout, Structure and Car definitions to a .XTP parameter file."
@@ -11216,8 +9198,8 @@ msgstr ""
"sur mesure\" pour déplacer vos définitions d'aiguillage personnalisées, de "
"bâtiments ou de définitions de véhicule vers un fichier de paramètres .XTP."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:154
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:124
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:154
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:124
msgid ""
"If you are printing multiple pages on a continuous feed printer (such a Dot "
"Matrix) you can change the Page Order if necessary to print pages out in "
@@ -11226,28 +9208,33 @@ msgstr ""
"Si vous utilisez une imprimante avec du papier listing (matricielle), vous "
"pouvez modifier l'ordre des pages pour les imprimer dans le bon ordre."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:156
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:126
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:126
msgid ""
"On the Car Item and Car Part dialogs, you can enter custom values for "
"Manufacturer, Part and Road by typing the new value directly into the Drop "
"Down List."
msgstr ""
-"Dans les boîtes de dialogue Elément et Pièce de véhicule, vous pouvez entrer"
-" des valeurs personnalisées propres au fabricant, numéro d'article et chemin"
-" en tapant la nouvelle valeur directement dans la liste déroulante."
+"Dans les boîtes de dialogue Elément et Pièce de véhicule, vous pouvez entrer "
+"des valeurs personnalisées propres au fabricant, numéro d'article et chemin "
+"en tapant la nouvelle valeur directement dans la liste déroulante."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:158
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:128
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:128
msgid ""
-"On the Car Item dialog, you can change the Road, Number, Color and other values for a Car. This is useful if you repaint or renumber a car. \n"
-"You can also change the Coupler Mounting and Coupler Length if you change the couplers."
+"On the Car Item dialog, you can change the Road, Number, Color and other "
+"values for a Car. This is useful if you repaint or renumber a car. \n"
+"You can also change the Coupler Mounting and Coupler Length if you change "
+"the couplers."
msgstr ""
-"Dans la boîte de dialogue \"Gérer|Inventaire du véhicule\", vous pouvez modifier les valeurs Compagnie ferroviaire, Nombres, Couleur et autres d'un véhicule. C'est utile si vous repeignez ou renumérotez une voiture.\n"
-"Vous pouvez également modifier le montage et la longueur de l'attelage si vous changez les attelages."
+"Dans la boîte de dialogue \"Gérer|Inventaire du véhicule\", vous pouvez "
+"modifier les valeurs Compagnie ferroviaire, Nombres, Couleur et autres d'un "
+"véhicule. C'est utile si vous repeignez ou renumérotez une voiture.\n"
+"Vous pouvez également modifier le montage et la longueur de l'attelage si "
+"vous changez les attelages."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:161
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:130
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:161
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:130
msgid ""
"You can Export your Car Inventory to a file in Comma-Separated-Value format "
"which can be read by most spread-sheet programs."
@@ -11255,24 +9242,29 @@ msgstr ""
"Votre inventaire de véhicules peut être exporté dans un fichier texte, "
"séparé par des virgules, qui peut être lu par tous les tableurs courants."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:163
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:132
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:132
msgid "Use the Train Odometer to measure distances along the track."
msgstr ""
"Utilisez le compteur de la commande du train pour mesurer les distances de "
"la voie."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:165
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:134
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:134
msgid ""
-"Holding down the Shift key when clicking the Zoom In or Zoom Out button will zoom to a programmed Drawing Scale. \n"
-"Holding down the Shift and Control keys when clicking a Zoom button will set it's program Zoom to the current Drawing Scale."
+"Holding down the Shift key when clicking the Zoom In or Zoom Out button will "
+"zoom to a programmed Drawing Scale. \n"
+"Holding down the Shift and Control keys when clicking a Zoom button will set "
+"it's program Zoom to the current Drawing Scale."
msgstr ""
-"Si vous cliquez sur les boutons en forme de loupe alors que vous appuyez sur la touche Maj, le programme revient à une échelle prédéterminée.\n"
-"En maintenant simultanément les touches Ctrl+Maj enfoncées, vous pouvez définir le grossissement ou la réduction en cliquant sur les boutons de la loupe correspondants."
+"Si vous cliquez sur les boutons en forme de loupe alors que vous appuyez sur "
+"la touche Maj, le programme revient à une échelle prédéterminée.\n"
+"En maintenant simultanément les touches Ctrl+Maj enfoncées, vous pouvez "
+"définir le grossissement ou la réduction en cliquant sur les boutons de la "
+"loupe correspondants."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:168
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:136
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:168
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:136
msgid ""
"You can trim the ends of turnouts by holding down the Shift key when using "
"the Split command."
@@ -11280,28 +9272,36 @@ msgstr ""
"Vous pouvez couper les extrémités des aiguillages en maintenant la touche "
"Maj enfoncée lorsque vous utilisez la commande \"Segmentation de voie\"."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:170
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:138
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:138
msgid ""
-"The Split command can be used to create Block Gaps at end points between two tracks. \n"
+"The Split command can be used to create Block Gaps at end points between two "
+"tracks. \n"
"Either rail or both rails can be gapped, which are drawn as thick lines."
msgstr ""
-"La commande \"Modifier|Segmentation de voie\" peut être utilisée pour insérer des intervalles de bloc entre les extrémités de deux voies.\n"
-"Les distances peuvent être insérées à l'une ou aux deux extrémités, elles sont tracées sous forme de lignes épaisses."
+"La commande \"Modifier|Segmentation de voie\" peut être utilisée pour "
+"insérer des intervalles de bloc entre les extrémités de deux voies.\n"
+"Les distances peuvent être insérées à l'une ou aux deux extrémités, elles "
+"sont tracées sous forme de lignes épaisses."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:173
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:140
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:173
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:140
msgid ""
-"Trains will 'crash' if they hit another car when travelling faster than the 'Max Coupling Speed' (on the Command Options dialog). \n"
-"They will also 'crash' if they hit the end of the track or an open turnout. \n"
+"Trains will 'crash' if they hit another car when travelling faster than the "
+"'Max Coupling Speed' (on the Command Options dialog). \n"
+"They will also 'crash' if they hit the end of the track or an open "
+"turnout. \n"
"Crashed trains must be manually moved back onto the track."
msgstr ""
-"Les trains «déraillent» s'ils heurtent un autre véhicule lorsqu'ils roulent plus vite que la «Vitesse maximale de couplage» (dans la boîte de dialogue \"Options|Préférences\").\n"
-"Ils seront également «déraillés» s'ils atteignent une fin de la voie ou un aiguillage ouvert.\n"
+"Les trains «déraillent» s'ils heurtent un autre véhicule lorsqu'ils roulent "
+"plus vite que la «Vitesse maximale de couplage» (dans la boîte de dialogue "
+"\"Options|Préférences\").\n"
+"Ils seront également «déraillés» s'ils atteignent une fin de la voie ou un "
+"aiguillage ouvert.\n"
"Les trains déraillés doivent être remis sur la voie à la main."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:177
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:142
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:177
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:142
msgid ""
"You can add new track segments to a turnout definition or create a "
"definition from individual tracks using the Group command."
@@ -11310,72 +9310,84 @@ msgstr ""
"d'aiguillage ou pour créer une nouvelle définition dans laquelle des voies "
"individuelles sont combinées."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:179
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:144
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:179
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:144
msgid ""
-"The center point and radius of Curved and Circle tracks can optionally be drawn. \n"
-"This feature is toggled by using the Move Label command and doing a Shift-Left-Click on the track."
+"The center point and radius of Curved and Circle tracks can optionally be "
+"drawn. \n"
+"This feature is toggled by using the Move Label command and doing a Shift-"
+"Left-Click on the track."
msgstr ""
"Le centre des courbes ou des cercles peut également être affiché.\n"
-"Cette option peut être activée/désactivée en maintenant la touche Maj enfoncée tout en cliquant avec le bouton gauche de la souris."
+"Cette option peut être activée/désactivée en maintenant la touche Maj "
+"enfoncée tout en cliquant avec le bouton gauche de la souris."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:182
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:146
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:146
msgid ""
-"Turnout, Curved and Helix track labels can be individually turned on and off"
-" by doing a Shift-Right-Click on the track when using the Move Label "
-"command."
+"Turnout, Curved and Helix track labels can be individually turned on and off "
+"by doing a Shift-Right-Click on the track when using the Move Label command."
msgstr ""
"Les étiquettes d'aiguillage, de courbe et d'hélicoïde peuvent être activées "
"et désactivées individuellement en faisant un Maj-clic droit sur la voie "
"lors de l'utilisation de la commande \"Modifier|Déplacer la description\" ."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:184
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:148
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:148
msgid ""
"You can use the Describe command to change the font size of Text objects."
msgstr ""
"La commande \"Modifier|Propriétés\" permet de modifier la taille de police "
"des objets texte."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:186
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:150
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:186
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:150
msgid ""
-"You can use the Describe command to change the size of Dimension Line "
-"labels."
+"You can use the Describe command to change the size of Dimension Line labels."
msgstr ""
"La commande \"Modifier|Propriétés\" permet de modifier la taille des "
"descriptions de ligne de cote."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:188
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:152
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:188
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:152
msgid ""
-"Normally Right-Click displays a popup menu of commands and Shift-Right-Click displays options for the current command. \n"
-"This can reversed by using the Right Click toggle button on the Command Options dialog."
+"Normally Right-Click displays a popup menu of commands and Shift-Right-Click "
+"displays options for the current command. \n"
+"This can reversed by using the Right Click toggle button on the Command "
+"Options dialog."
msgstr ""
-"Normalement, le clic droit affiche un menu contextuel de commandes et Maj-clic droit affiche les options de la commande en cours.\n"
-"Ce comportement peut être inversé via la boîte de dialogue des options de commande."
+"Normalement, le clic droit affiche un menu contextuel de commandes et Maj-"
+"clic droit affiche les options de la commande en cours.\n"
+"Ce comportement peut être inversé via la boîte de dialogue des options de "
+"commande."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:191
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:154
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:191
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:154
msgid ""
-"The Align item on the Rotate command options menu will let you Align selected objects with any unselected object. \n"
-"The selected objects are rotated so the first point is parallel to the second point you selected."
+"The Align item on the Rotate command options menu will let you Align "
+"selected objects with any unselected object. \n"
+"The selected objects are rotated so the first point is parallel to the "
+"second point you selected."
msgstr ""
-"L'élément Aligner du menu d'options de la commande Rotation vous permet d'aligner les objets sélectionnés avec n'importe quel objet non sélectionné.\n"
-"Les objets sélectionnés pivotent de sorte que le premier point soit parallèle au deuxième point sélectionné."
+"L'élément Aligner du menu d'options de la commande Rotation vous permet "
+"d'aligner les objets sélectionnés avec n'importe quel objet non "
+"sélectionné.\n"
+"Les objets sélectionnés pivotent de sorte que le premier point soit "
+"parallèle au deuxième point sélectionné."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:194
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:156
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:194
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:156
msgid ""
"Print To Bitmap allows you to print the track center line. \n"
-"This is useful if you later print the bitmap full size as a template when laying track."
+"This is useful if you later print the bitmap full size as a template when "
+"laying track."
msgstr ""
"Imprimer en bitmap vous permet d'imprimer la ligne centrale de la voie.\n"
-"C'est utile si vous imprimez ultérieurement le bitmap en taille réelle comme modèle pour poser la voie."
+"C'est utile si vous imprimez ultérieurement le bitmap en taille réelle comme "
+"modèle pour poser la voie."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:197
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:158
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:197
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:158
msgid ""
"You can export the selected tracks to a DXF file which can be read by most "
"CAD programs."
@@ -11383,8 +9395,8 @@ msgstr ""
"Vous pouvez exporter les voies sélectionnées dans un fichier DXF qui peut "
"être lu par la plupart des programmes de CAO."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:199
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:160
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:199
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:160
msgid ""
"Lengths and distances can be displayed in a variety of units and formats "
"such as 1' 10 3/4\", 1ft 10.75in or 22.750. In Metric mode, distances can "
@@ -11392,161 +9404,199 @@ msgid ""
"item on the Preferences dialog."
msgstr ""
"Les longueurs et les distances peuvent être affichées dans une variété "
-"d'unités et de formats, tels que 1' 10 3/4\", 1ft 10.75in ou 22.750. Lorsque"
-" les unités métriques sont sélectionnées, les distances et les longueurs "
-"sont affichées en millimètres, centimètres ou mètres avec la sélection "
-"\"Unités\" dans la boîte de dialogue \"Options|Préférences\"."
+"d'unités et de formats, tels que 1' 10 3/4\", 1ft 10.75in ou 22.750. Lorsque "
+"les unités métriques sont sélectionnées, les distances et les longueurs sont "
+"affichées en millimètres, centimètres ou mètres avec la sélection \"Unités\" "
+"dans la boîte de dialogue \"Options|Préférences\"."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:201
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:162
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:201
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:162
msgid ""
-"Tracks that are too steep or curve too tightly are drawn in the Exception color (Yellow by default). \n"
+"Tracks that are too steep or curve too tightly are drawn in the Exception "
+"color (Yellow by default). \n"
"This helps to identify potential problem areas. \n"
"The maximum grade and minimum radius are set on the Preferences dialog."
msgstr ""
-"Les voies trop raides ou trop serrées sont dessinées dans la couleur d'exception (Violet par défaut).\n"
+"Les voies trop raides ou trop serrées sont dessinées dans la couleur "
+"d'exception (Violet par défaut).\n"
"Cela aide à trouver les zones à problèmes.\n"
-"La pente maximale et le rayon minimum sont définis dans la boîte de dialogue Propriétés."
+"La pente maximale et le rayon minimum sont définis dans la boîte de dialogue "
+"Propriétés."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:205
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:164
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:164
msgid ""
"The Flip command produces a mirror-image of the selected tracks. \n"
-"If possible, right-hand turnouts are relabeled as left-hand turnouts (and vice versa)."
+"If possible, right-hand turnouts are relabeled as left-hand turnouts (and "
+"vice versa)."
msgstr ""
-"La commande \"Miroir\" du menu \"Modifier\" reflète les voies sélectionnées.\n"
-"Si possible, les aiguillages à droite sont renommés aiguillages à gauche (et vice versa)."
+"La commande \"Miroir\" du menu \"Modifier\" reflète les voies "
+"sélectionnées.\n"
+"Si possible, les aiguillages à droite sont renommés aiguillages à gauche (et "
+"vice versa)."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:208
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:166
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:208
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:166
msgid ""
-"Then Ungroup command will break turnouts and structures into individual track, line and shape segments. \n"
+"Then Ungroup command will break turnouts and structures into individual "
+"track, line and shape segments. \n"
"You can modify each segment and add new ones. \n"
"Then use the Group command to update the definition."
msgstr ""
-"La commande \"Gérer|Dissocier\" sépare les commutateurs et/ou les structures en segments individuels de voie, de ligne et de forme.\n"
-"Vous pouvez maintenant modifier chaque segment pour en ajouter de nouveaux, etc.\n"
-"Utilisez ensuite la commande \"Gérer|Grouper\" pour mettre à jour votre nouvelle définition en tant que groupe."
+"La commande \"Gérer|Dissocier\" sépare les commutateurs et/ou les structures "
+"en segments individuels de voie, de ligne et de forme.\n"
+"Vous pouvez maintenant modifier chaque segment pour en ajouter de nouveaux, "
+"etc.\n"
+"Utilisez ensuite la commande \"Gérer|Grouper\" pour mettre à jour votre "
+"nouvelle définition en tant que groupe."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:212
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:168
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:212
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:168
msgid "Dimension lines show the distance between two points."
msgstr "Les cotes de voies indiquent la distance entre deux points."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:214
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:170
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:214
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:170
msgid ""
"A variety of Benchwork (rectangular, L-girder and T-girder) can be drawn. \n"
-"Use the Below command to move the Benchwork below the track for proper display."
+"Use the Below command to move the Benchwork below the track for proper "
+"display."
msgstr ""
-"Une variété de sous-bâtiments (rectangulaires, formes en L ou en T) peuvent être dessinées.\n"
-"Utilisez la commande \"Au dessous\" du menu \"Editer\" pour déplacer les sous-bâtiments sous les \n"
+"Une variété de sous-bâtiments (rectangulaires, formes en L ou en T) peuvent "
+"être dessinées.\n"
+"Utilisez la commande \"Au dessous\" du menu \"Editer\" pour déplacer les "
+"sous-bâtiments sous les \n"
"voies pour un affichage correct."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:217
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:172
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:217
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:172
msgid ""
-"The Turnout Designer dialogs allow you to specify the width of any attached roadbed. \n"
-"As well, the color and thickness of the lines used to represent the roadbed can be specified."
+"The Turnout Designer dialogs allow you to specify the width of any attached "
+"roadbed. \n"
+"As well, the color and thickness of the lines used to represent the roadbed "
+"can be specified."
msgstr ""
-"Les boîtes de dialogue \"Gérer|Conception d'aiguillage\" vous permettent de spécifier la largeur de n'importe quel ballast associé.\n"
-"De plus, la couleur et l'épaisseur des lignes utilisées pour représenter le ballast peuvent être précisées."
+"Les boîtes de dialogue \"Gérer|Conception d'aiguillage\" vous permettent de "
+"spécifier la largeur de n'importe quel ballast associé.\n"
+"De plus, la couleur et l'épaisseur des lignes utilisées pour représenter le "
+"ballast peuvent être précisées."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:220
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:174
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:220
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:174
msgid ""
-"The Color dialog (on the Options menu) is used to change the color of different objects on the display. \n"
-"You can change the color of the Snap Grid and Borders, as well as Normal, Selected and Exception tracks."
+"The Color dialog (on the Options menu) is used to change the color of "
+"different objects on the display. \n"
+"You can change the color of the Snap Grid and Borders, as well as Normal, "
+"Selected and Exception tracks."
msgstr ""
-"La boîte de dialogue (Options|Couleurs) permet de définir les couleurs des différents objets.\n"
-"Vous pouvez modifier la couleur de la Grille magnétique, des Bordures ainsi que des Voies normale, sélectionnées ou non conformes."
+"La boîte de dialogue (Options|Couleurs) permet de définir les couleurs des "
+"différents objets.\n"
+"Vous pouvez modifier la couleur de la Grille magnétique, des Bordures ainsi "
+"que des Voies normale, sélectionnées ou non conformes."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:223
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:176
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:223
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:176
msgid ""
"You can set the elevation (height) of track end-points. \n"
-"Elevations of intermediate end points can be computed automatically based on the distance to the nearest end points with defined elevations. \n"
+"Elevations of intermediate end points can be computed automatically based on "
+"the distance to the nearest end points with defined elevations. \n"
"Grades can also be displayed at selected end points. \n"
"Please see the Elevations help and demo."
msgstr ""
"Vous pouvez définir l'élévation (hauteur) des extrémités de la voie.\n"
-"Les élévations des extrémités intermédiaires peuvent être calculées automatiquement en fonction de la distance aux extrémités les plus proches avec des élévations définies.\n"
-"Les gradients peuvent également être affichées aux points de fin sélectionnés.\n"
+"Les élévations des extrémités intermédiaires peuvent être calculées "
+"automatiquement en fonction de la distance aux extrémités les plus proches "
+"avec des élévations définies.\n"
+"Les gradients peuvent également être affichées aux points de fin "
+"sélectionnés.\n"
"Veuillez consulter l'aide et la démonstration pour les Elévations."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:228
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:178
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:228
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:178
msgid ""
-"Once you have elevations on some endpoints, you can use the Profile command to produce an elevation graph. \n"
+"Once you have elevations on some endpoints, you can use the Profile command "
+"to produce an elevation graph. \n"
"The graph shows the selected elevations, grades and distances. \n"
"Please see the Profile help and demo for details."
msgstr ""
-"Une fois que vous avez des élévations sur certains points de fin, vous pouvez utiliser la commande Profil pour produire un graphique d'élévation.\n"
-"Le graphique montre les élévations, les pentes et les distances sélectionnées.\n"
+"Une fois que vous avez des élévations sur certains points de fin, vous "
+"pouvez utiliser la commande Profil pour produire un graphique d'élévation.\n"
+"Le graphique montre les élévations, les pentes et les distances "
+"sélectionnées.\n"
"Veuillez consulter l'aide et la démo du profil pour plus de détails."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:232
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:232
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:180
msgid ""
"You can draw tracks with wider lines for rails. \n"
"Select the tracks and use Medium or Thick Tracks on the Edit menu."
msgstr ""
"Les rails peuvent être dessinés avec des lignes plus larges pour les voies.\n"
-"Pour ce faire, sélectionnez 'Voies moyennes' ou 'Voies épaisses' dans le menu \"Editer\"."
+"Pour ce faire, sélectionnez 'Voies moyennes' ou 'Voies épaisses' dans le "
+"menu \"Editer\"."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:235
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:182
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:235
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:182
msgid ""
"The Helix command is used to create a Helix track. \n"
-"You specify some parameters: height, radius, number of turns, grade and vertical separation between layers. \n"
+"You specify some parameters: height, radius, number of turns, grade and "
+"vertical separation between layers. \n"
"These values are interrelated so changing one value will affect ohers. \n"
-"Then you can place the Helix and join to other tracks as you would a Circle track."
+"Then you can place the Helix and join to other tracks as you would a Circle "
+"track."
msgstr ""
"La commande Hélicoïde est utilisée pour créer une voie Hélicoïdale.\n"
-"Vous spécifiez certains paramètres : hauteur, rayon, nombre de tours, pente et séparation verticale entre les couches.\n"
-"Ces valeurs étant interdépendantes, la modification d'une valeur affectera d'autres.\n"
-"Ensuite, vous pouvez placer l'Hélicoïde et la joindre à d'autres voies comme vous le feriez pour une voie circulaire."
+"Vous spécifiez certains paramètres : hauteur, rayon, nombre de tours, pente "
+"et séparation verticale entre les couches.\n"
+"Ces valeurs étant interdépendantes, la modification d'une valeur affectera "
+"d'autres.\n"
+"Ensuite, vous pouvez placer l'Hélicoïde et la joindre à d'autres voies comme "
+"vous le feriez pour une voie circulaire."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:240
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:184
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:240
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:184
msgid ""
-"Many objects on the layout have labels: Turnouts/Helix/Curved Titles, Track Lenghts, End-Point Elevations, Track Elevations and Cars. \n"
-"You can turn these labels on or off with the Label Enable toggle buttons on the Display options dialog."
+"Many objects on the layout have labels: Turnouts/Helix/Curved Titles, Track "
+"Lenghts, End-Point Elevations, Track Elevations and Cars. \n"
+"You can turn these labels on or off with the Label Enable toggle buttons on "
+"the Display options dialog."
msgstr ""
-"De nombreux objets du plan ont des étiquettes : Titres d'Aiguillages/Hélicoïdes/Courbes, Longueurs de voie, Elévations des bouts de voies, Elévations de voie et Matériels roulants.\n"
-"Vous pouvez activer ou désactiver ces étiquettes à l'aide des cases à cocher \"Etiquettes activées\" de la boîte de dialogue \"Options d'affichage\"."
+"De nombreux objets du plan ont des étiquettes : Titres d'Aiguillages/"
+"Hélicoïdes/Courbes, Longueurs de voie, Elévations des bouts de voies, "
+"Elévations de voie et Matériels roulants.\n"
+"Vous pouvez activer ou désactiver ces étiquettes à l'aide des cases à cocher "
+"\"Etiquettes activées\" de la boîte de dialogue \"Options d'affichage\"."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:243
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:186
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:186
msgid ""
-"If you hold down the Control key when using the Rotate command, the rotation"
-" will be done in increments of 15ᅵ."
+"If you hold down the Control key when using the Rotate command, the rotation "
+"will be done in increments of 15ᅵ."
msgstr ""
"Si vous maintenez la touche Ctrl enfoncée lorsque vous utilisez la commande "
"Rotation, la rotation diminue par incréments de 15°."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:245
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:188
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:245
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:188
msgid ""
"When using the Rotate command, Shift-Right-Click displays a menu allowing "
"you to rotate by specific amounts or to align the selected objects with "
"another object."
msgstr ""
-"Lorsque vous utilisez la commande <Rotation>, l'angle de rotation de l'objet"
-" peut être sélectionné dans un menu en maintenant la touche Maj enfoncée, ou"
-" l'objet peut être aligné avec un autre objet."
+"Lorsque vous utilisez la commande <Rotation>, l'angle de rotation de l'objet "
+"peut être sélectionné dans un menu en maintenant la touche Maj enfoncée, ou "
+"l'objet peut être aligné avec un autre objet."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/help/xtrkcad.tip:247
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:190
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:247
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:190
msgid ""
-"This is last tip. If you have any additions or comments, please let us "
-"know."
+"This is last tip. If you have any additions or comments, please let us know."
msgstr ""
"C'est le dernier conseil. Si vous avez des ajouts ou des commentaires, "
"veuillez nous en faire part."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:25
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:192
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:192
msgid ""
"The unconnected endpoints of a straight or curved track can be changed with "
"the 'Modify Track' command.\n"
@@ -11554,40 +9604,43 @@ msgstr ""
"Les points de fin non connectés d'une voie droite ou courbe peuvent être "
"modifiés avec la commande «Modifier la voie».\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:31
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:194
msgid ""
-"The endpoint of a straight track is selected and then Left-Dragged to change"
-" its length. A blue anchor shows that the length can be extended.\n"
+"The endpoint of a straight track is selected and then Left-Dragged to change "
+"its length. A blue anchor shows that the length can be extended.\n"
msgstr ""
-"Le point de fin d'une voie droite est sélectionné, puis déplacé vers la gauche pour modifier sa longueur. Une ancre bleue montre que la longueur peut être allongée.\n"
+"Le point de fin d'une voie droite est sélectionné, puis déplacé vers la "
+"gauche pour modifier sa longueur. Une ancre bleue montre que la longueur "
+"peut être allongée.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:48
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:196
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:196
msgid ""
"If you try to drag the selected endpoint beyond the far endpoint, the track "
"extends in the opposite direction.\n"
msgstr ""
-"Si le point d'extrémité sélectionné est déplacé au-delà du point d'extrémité"
-" distant, la voie sera prolongée dans la direction opposée.\n"
+"Si le point d'extrémité sélectionné est déplacé au-delà du point d'extrémité "
+"distant, la voie sera prolongée dans la direction opposée.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:68
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:73
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:199
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:68
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:199
msgid ""
"A curved track is selected and it's new endpoint is determined by the angle "
"to the cursor. \n"
msgstr ""
-"Une voie courbe est sélectionnée et sa nouvelle extrémité est définie par l'angle obtenu avec le curseur.\n"
+"Une voie courbe est sélectionnée et sa nouvelle extrémité est définie par "
+"l'angle obtenu avec le curseur.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:105
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:201
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:105
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:201
msgid "It's possible to almost create a complete circle.\n"
msgstr "Il est presque possible de créer un cercle complet.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:202
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:202
msgid ""
"If you drag the mouse beyond the start of the curve the track becomes very "
"short.\n"
@@ -11595,56 +9648,63 @@ msgstr ""
"Si vous déplacez la souris au-delà du point de départ de l'arc, le tracé "
"devient très court.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:113
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:204
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:114
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:204
msgid "Here you are warned that the track will be too short.\n"
msgstr "Ici, vous êtes averti que la voie sera trop courte.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:147
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:206
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:121
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:206
+msgid ""
+"Because the modified track is too short, the modification is abandoned the "
+"original track is restored.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:208
msgid ""
-"If you move the cursor away from the curve, you will create a straight track"
-" tangent to the curve.\n"
+"If you move the cursor away from the curve, you will create a straight track "
+"tangent to the curve.\n"
msgstr ""
"Lorsque vous éloignez le curseur de l'arc, vous créez une voie droite "
"tangente à l'arc.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:169
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:174
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:209
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:185
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:211
+#, fuzzy
msgid ""
"If you adjust the endpoint of a turnout or sectional track the track is "
-"extended by a similar track segment. The extension can be \n"
-msgstr ""
-"Si vous ajustez l'extrémité d'un aiguillage ou d'un élément de voie, celle-ci est prolongée par un segment droit. L'extension est possible\n"
-"\n"
-
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:210
-msgid "a straight or a curve.\n"
+"extended by a similar track segment. The extension can be a straight or a "
+"curve.\n"
msgstr ""
-"une droite ou une courbe.\n"
+"Si vous ajustez l'extrémité d'un aiguillage ou d'un élément de voie, celle-"
+"ci est prolongée par un segment droit. L'extension est possible\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:190
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:195
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:213
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:200
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:214
msgid ""
-"You can change the radius of a straight or curved track that is connected at"
-" one endpoint by holding down the Shift key while Left-dragging on it.\n"
+"You can change the radius of a straight or curved track that is connected at "
+"one endpoint by holding down the Shift key while Left-dragging on it.\n"
msgstr ""
-"Vous pouvez modifier le rayon d'une voie droite ou courbe connectée à un point de fin en maintenant la touche Maj enfoncée tout en la faisant glisser vers la gauche..\n"
+"Vous pouvez modifier le rayon d'une voie droite ou courbe connectée à un "
+"point de fin en maintenant la touche Maj enfoncée tout en la faisant glisser "
+"vers la gauche..\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:214
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:215
msgid ""
"The blue cross anchor shows that this is possible when shift is held down "
"with no buttons.\n"
msgstr ""
-"L'ancre de la croix bleue montre que c'est possible lorsque shift est maintenu enfoncé sans boutons.\n"
+"L'ancre de la croix bleue montre que c'est possible lorsque shift est "
+"maintenu enfoncé sans boutons.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:209
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:216
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:219
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:217
msgid ""
"This lets you change a straight track into a curved track (and vice versa) "
"as well as changing the radius of a curved track.\n"
@@ -11652,53 +9712,56 @@ msgstr ""
"Cela vous permet de changer une voie droite en voie courbe (et vice versa) "
"ainsi que de changer le rayon d'une voie courbe.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:252
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:218
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:262
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:219
msgid ""
-"You can form an extension of a straight or curved Track that is connected at"
-" one endpoint using an easement by holding down the Ctrl key while Left-"
+"You can form an extension of a straight or curved Track that is connected at "
+"one endpoint using an easement by holding down the Ctrl key while Left-"
"dragging on it.\n"
msgstr ""
-"Vous pouvez créer une extension à une voie droite ou courbe connectée à un point de fin à l'aide d'une voie de transition en maintenant la touche Ctrl enfoncée tout en faisant un glisser-gauche.\n"
+"Vous pouvez créer une extension à une voie droite ou courbe connectée à un "
+"point de fin à l'aide d'une voie de transition en maintenant la touche Ctrl "
+"enfoncée tout en faisant un glisser-gauche.\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:219
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:220
msgid ""
"The blue half cross anchor shows that this is possible when the Ctrl key is "
"held down with no mouse button.\n"
msgstr ""
-"L'ancre bleue en forme de demi-croix montre que c'est possible lorsque la touche Ctrl est maintenue enfoncée sans aucun bouton de la souris.\n"
+"L'ancre bleue en forme de demi-croix montre que c'est possible lorsque la "
+"touche Ctrl est maintenue enfoncée sans aucun bouton de la souris.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmadjend.xtr:267
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmbench.xtr:9
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:222
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:277
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:9
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:223
msgid "You can draw a variety of different types of benchwork:\n"
msgstr "Vous pouvez dessiner différentes formes de chassis :\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:223
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:224
msgid "- rectangular (1x2, 2x4 etc)\n"
msgstr "- rectangulaire (1x2, 2x4 etc.)\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:225
msgid "- L girders\n"
msgstr "- L Supports\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:226
msgid "- T girders\n"
msgstr "- T Supports\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:226
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:227
msgid "You can also draw them in different orientations.\n"
msgstr "Vous pouvez également les dessiner dans différentes orientations.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmbench.xtr:25
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:228
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:229
msgid "We will draw two 3x6 inch L-girders.\n"
msgstr "Nous dessinons deux équerres de 3x6 pouces.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmbench.xtr:43
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:230
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:43
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:231
msgid ""
"The flange of the top L-Girders is on the outside edge of the girders. We "
"want to change the girder so both flanges are on the inside.\n"
@@ -11707,98 +9770,100 @@ msgstr ""
"support. Nous voulons changer le support afin que les deux brides soient à "
"l'intérieur.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:231
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:232
msgid "We will use the <Describe> command for this.\n"
msgstr "Pour cela nous utiliserons la commande <Propriétés>.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmbench.xtr:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:233
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:234
msgid "Change the Orientation to Right.\n"
msgstr "Changer l'orientation à droite.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmbench.xtr:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:235
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:236
msgid "Now both flanges are on the inside of the two girders.\n"
msgstr "Maintenant, les deux rebords sont à l'intérieur des deux longerons.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:34
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:237
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:238
msgid ""
"Pushing the <Describe> button will cancel any other command in progress.\n"
msgstr ""
"Appuyez sur le bouton <Propriétés> pour annuler toute autre commande en "
"cours.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:238
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:239
msgid ""
"Here we will begin to create a curved track which is a two step process.\n"
msgstr ""
"Dans un processus en deux étapes, nous allons commencer à créer une voie "
"courbe.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:47
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:240
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:241
msgid ""
"When we clicked on the <Describe> button, the current command was "
"cancelled.\n"
msgstr ""
"La commande démarrée a été annulée en appuyant sur le bouton <Decrire>.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:241
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:242
msgid ""
"When in <Describe> mode, selecting any object will print a description in "
"the Status Bar and display a dialog showing properties of the clicked-on "
"object.\n"
msgstr ""
-"En mode <Proprietes>, la sélection d'un objet mettra une description dans la"
-" barre d'état et affichera une boîte de dialogue affichant les propriétés de"
-" l'objet cliqué.\n"
+"En mode <Proprietes>, la sélection d'un objet mettra une description dans la "
+"barre d'état et affichera une boîte de dialogue affichant les propriétés de "
+"l'objet cliqué.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:57
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:243
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:244
msgid ""
"Certain parameters of the object can be changed. In this case we'll change "
"the length\n"
msgstr ""
-"Certains paramètres de l'objet peuvent être modifiés. Dans ce cas, nous allons changer la longueur\n"
+"Certains paramètres de l'objet peuvent être modifiés. Dans ce cas, nous "
+"allons changer la longueur\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:65
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:245
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:246
msgid "Let's look at the Turnout...\n"
msgstr "Regardons l'aiguillage ...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:73
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:247
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:248
msgid "and change the turnout name and part no.\n"
msgstr ""
"et changez le nom d'aiguillage et son numéro.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:84
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:249
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:250
msgid "You can change the contents of text...\n"
msgstr ""
"Vous pouvez modifier le contenu du texte …\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:93
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:251
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:93
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:252
msgid "and its size.\n"
msgstr "et sa taille.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:100
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:253
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:100
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:254
msgid ""
"If you select a note, the Description dialog appears which displays the "
"contents of the note.\n"
msgstr ""
-"Lorsque vous sélectionnez une note, une boîte de dialogue apparaît et affiche le contenu de la note.\n"
+"Lorsque vous sélectionnez une note, une boîte de dialogue apparaît et "
+"affiche le contenu de la note.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcancel.xtr:112
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcircle.xtr:7
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:256
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:112
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:257
msgid ""
"Like the <Curve> track command, there are several ways to create a Circle "
"track.\n"
@@ -11806,7 +9871,7 @@ msgstr ""
"Comme pour la commande de voie <Curve>, il existe plusieurs façons de créer "
"une voie circulaire.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:257
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:258
msgid ""
"The first is to specify a fixed radius and simply drag the Circle into "
"position.\n"
@@ -11814,19 +9879,19 @@ msgstr ""
"La première possibilité consiste à définir un rayon fixe et à faire glisser "
"vers la position souhaitée.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:259
msgid "We will change the Radius before proceeding.\n"
msgstr "Nous allons changer le rayon avant de continuer.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcircle.xtr:24
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:260
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:261
msgid "The next method is to drag from the edge of the Circle to the center.\n"
msgstr ""
"La méthode suivante consiste à faire glisser le bord du cercle vers le "
"centre.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcircle.xtr:37
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:262
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:263
msgid ""
"The last is similar, but you drag from the center of the Circle to the "
"edge.\n"
@@ -11834,20 +9899,20 @@ msgstr ""
"La dernière méthode, comparable, consiste à dessiner du centre vers le "
"cercle.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcircle.xtr:50
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:157
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:265
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:50
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:157
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:266
msgid ""
"We have built a siding using Sectional track and have 2 End-Points that "
-"don't line up and are not connected automatically when placing the sectional"
-" track.\n"
+"don't line up and are not connected automatically when placing the sectional "
+"track.\n"
msgstr ""
-"Nous avons construit une voie de service en utilisant une section de voie et"
-" avons 2 points d'extrémité qui ne s'alignent pas et ne sont pas connectés "
+"Nous avons construit une voie de service en utilisant une section de voie et "
+"avons 2 points d'extrémité qui ne s'alignent pas et ne sont pas connectés "
"automatiquement lors du placement de la section de voie.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:162
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:267
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:162
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:268
msgid ""
"We use the <Connect> command to adjust neighboring tracks so the gap is "
"closed.\n"
@@ -11855,7 +9920,7 @@ msgstr ""
"Nous utilisons la commande<Connect>pour aligner les voies voisines afin que "
"l'écart soit fermé.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:268
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:269
msgid ""
"Note: the adjustments are only done on tracks which have only 1 or 2 "
"connections. In this example the Turnouts would not be affected.\n"
@@ -11864,74 +9929,75 @@ msgstr ""
"que 1 ou 2 connexions. Dans cet exemple, l'aiguillage ne serait pas "
"affecté.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:175
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:270
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:175
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:271
msgid "And now the gap is closed.\n"
msgstr "Et maintenant, l'écart est comblé.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:181
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:272
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:181
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:273
msgid "Other tracks have been shifted slightly to close the gap.\n"
msgstr "D'autres voies ont été légèrement décalées pour combler l'écart.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:188
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:274
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:188
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:275
msgid "You can see these slight mis-alignments.\n"
msgstr "Vous pouvez voir les petits décalages.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:275
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:276
msgid "But they will have no effect when the layout is actually built.\n"
msgstr ""
-"Mais ils n'auront aucun effet lorsque le plan sera effectivement "
-"construit.\n"
+"Mais ils n'auront aucun effet lorsque le plan sera effectivement construit.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:196
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:353
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:278
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:196
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:353
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:279
msgid ""
"After working with Sectional track you might get to point where these mis-"
"alignments have accumulated and you wish to remove them.\n"
msgstr ""
-"Après avoir travaillé avec Sectional Track, les défauts se sont accumulés au"
-" point d’alignement et vous pourriez souhaiter les supprimer.\n"
+"Après avoir travaillé avec Sectional Track, les défauts se sont accumulés au "
+"point d’alignement et vous pourriez souhaiter les supprimer.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:279
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:280
msgid ""
-"You can remove these slight mis-alignments by tightening the tracks starting"
-" from a unconnected End-Point. Use Shift-Left-Click with the <Connect> "
+"You can remove these slight mis-alignments by tightening the tracks starting "
+"from a unconnected End-Point. Use Shift-Left-Click with the <Connect> "
"command.\n"
msgstr ""
"Vous pouvez supprimer ces petits décalages en rapprochant les rails. "
"Commencez à un point de fin non connecté en appuyant sur la touche Maj tout "
"en appuyant sur le bouton<Connect>.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:280
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:281
msgid "First use the <Split> command to disconnect the tracks.\n"
-msgstr "Commencez par utiliser la commande<Split> pour déconnecter les voies.\n"
+msgstr ""
+"Commencez par utiliser la commande<Split> pour déconnecter les voies.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:363
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:282
-msgid "Then with the <Connect> command, Shift-Left-Click on the 2 End-Points.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:363
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:283
+msgid ""
+"Then with the <Connect> command, Shift-Left-Click on the 2 End-Points.\n"
msgstr ""
"Puis avec la commande<Connect>, Maj-Clic-Gauche sur les 2 Points de fin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn1.xtr:378
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn2.xtr:199
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:285
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:378
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:199
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:286
msgid "In example shows a simple figure-8 layout using Sectional track.\n"
msgstr ""
"L'exemple montre le plan d'une simple figure-8 utilisant une section de "
"voie.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:286
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:287
msgid ""
"You will notice that the tracks do not line up exactly in one location.\n"
msgstr ""
-"Comme vous pouvez le voir, les voies ne sont pas exactement alignées au même"
-" point.\n"
+"Comme vous pouvez le voir, les voies ne sont pas exactement alignées au même "
+"point.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn2.xtr:211
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:288
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:211
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:289
msgid ""
"We can use the <Connect> command to move the connecting tracks slightly and "
"connect the 2 End-Points.\n"
@@ -11939,25 +10005,25 @@ msgstr ""
"Avec la commande<Connect>, nous pouvons facilement déplacer les voies à "
"connecter et connecter les 2 points de fin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn2.xtr:224
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:290
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:291
msgid "The two End-Points are now aligned and connected.\n"
msgstr "Les deux points d'extrémité sont maintenant alignés et connectés.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn2.xtr:231
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:292
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:231
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:293
msgid "The connection was made by adding small gaps in other tracks.\n"
msgstr ""
"La connexion a été établie en ajoutant de petits espaces dans d'autres "
"voies.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmconn2.xtr:238
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:7
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:295
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:238
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:296
msgid "There are several ways to create a Curved track.\n"
msgstr "Il existe plusieurs façons de créer une voie courbe.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:296
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:297
msgid ""
"You can choose which to use by clicking on the small button to the left of "
"<Curve> command button if the current Curve command is not the one you "
@@ -11967,29 +10033,29 @@ msgstr ""
"bouton de commande<Curve>, si la Courbe actuelle n'est pas celle que vous "
"souhaitez.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:297
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:298
msgid ""
"The first is by clicking on the first End-Point and dragging in the "
"direction of the Curve.\n"
msgstr ""
-"La première possibilité consiste à sélectionner le premier point de fin et à"
-" le faire glisser en direction de la courbe.\n"
+"La première possibilité consiste à sélectionner le premier point de fin et à "
+"le faire glisser en direction de la courbe.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:20
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:299
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:20
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:300
msgid ""
"You will see a straight track with a double ended Red arrow at the end.\n"
msgstr ""
"Vous verrez une voie droite avec une flèche rouge avec deux pointes à la "
"fin.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:300
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:301
msgid "Click and drag on one of the Red arrows to complete the Curve.\n"
msgstr ""
"Cliquez et faites glisser une des flèches rouges pour compléter la courbe.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:39
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:302
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:303
msgid ""
"The next method is to click at one End-Point and drag to the center of the "
"Curve.\n"
@@ -11997,8 +10063,8 @@ msgstr ""
"La méthode suivante consiste à cliquer sur un point de fin et à faire "
"glisser vers le centre de la courbe.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:50
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:304
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:305
msgid ""
"Now you will see the double ended Red arrow connected to the center of the "
"Curve marked by a small circle.\n"
@@ -12006,14 +10072,14 @@ msgstr ""
"Comme précédemment, vous verrez la double flèche rouge avec deux points "
"reliés au centre de la courbe. Elle est marquée avec un petit cercle.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:306
msgid "As before, drag on one of the Red arrows to complete the Curve.\n"
msgstr ""
"Comme auparavant, faites glisser l'une des flèches rouges pour terminer la "
"courbe.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:307
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:308
msgid ""
"The next method is similar to the last except that you drag first from the "
"center of the Curve to one End-Point.\n"
@@ -12021,13 +10087,13 @@ msgstr ""
"La méthode suivante est similaire à la précédente, mais commencez par "
"glisser du point milieu vers un point de fin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:80
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:309
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:310
msgid "Once again, drag on a Red arrow to complete the Curve.\n"
msgstr "Encore une fois, tirez sur une flèche rouge pour terminer la courbe.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:90
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:311
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:90
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:312
msgid ""
"The last method begins by drawing a line between the two End-Points of the "
"Curve. This forms the Chord of the Curve.\n"
@@ -12035,136 +10101,128 @@ msgstr ""
"Pour la dernière méthode, commencez par tracer une ligne entre les deux "
"extrémités. Cela forme la corde de la courbe.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:108
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:313
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:108
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:314
msgid "Now drag on a Red arrow to complete the Curve.\n"
msgstr "Maintenant, faites glisser la flèche rouge pour compléter la courbe.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmcrvtrk.xtr:118
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:112
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:316
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:118
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:317
msgid "This demo will construct a control panel for part of a bigger layout.\n"
msgstr ""
"Cette démo crée un panneau de contrôle pour une partie d'une installation "
"plus grande.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:117
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:318
-msgid "For our control panel we will use Å’\" lines. \n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:319
+#, fuzzy
+msgid "For our control panel we will use Œ\" lines. \n"
msgstr ""
"Pour notre panneau de contrôle, nous utiliserons des lignes de 1/2\"de "
"large.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:319
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:320
msgid "Also, we will use a 1/8\" grid to lay out our controls.\n"
msgstr ""
"De plus, nous utiliserons une grille de 1/8\" pour disposer nos contrôles.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:320
-msgid "First, we will set up the Snap Grid for 1\" grid lines and 8 divisions.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:321
+msgid ""
+"First, we will set up the Snap Grid for 1\" grid lines and 8 divisions.\n"
msgstr ""
-"Tout d’abord, nous allons configurer la grille magnétique pour des lignes de"
-" grille de 1\" et 8 divisions.\n"
+"Tout d’abord, nous allons configurer la grille magnétique pour des lignes de "
+"grille de 1\" et 8 divisions.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:132
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:322
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:323
msgid "Now, clear the layout and turn on the Snap Grid.\n"
msgstr ""
"Maintenant, nous supprimons le brouillon et activons la grille "
"d'accrochage.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:147
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:324
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:147
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:325
msgid "First step: draw the lines representing the tracks.\n"
msgstr "Première étape : tracez les voies représentant les voies.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:325
-msgid "We specify the line width in pixels when at 1:1 zoom.\n"
-msgstr ""
-"Nous spécifions la largeur de la ligne en pixels lorsqu'il s'agit d'un zoom 1:1.\n"
-"\n"
-
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:326
-msgid ""
-"To create a 1/4\" line, divide the dots-per-inch (DPI) of your display by "
-"4.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:326
+#, fuzzy
+msgid "We specify the line width in inches.\n"
msgstr ""
-"Pour créer une ligne large de 1/4 pouce, la résolution de l'écran (DPI) est divisée par 4.\n"
+"Nous spécifions la largeur de la ligne en pixels lorsqu'il s'agit d'un zoom "
+"1:1.\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:327
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:327
msgid ""
-"For MS-Windows the DPI is usually 98, so choose: 98/4 = 24 "
-"(approximately).\n"
+"To create a 1/4\" line, enter 0.250 in the \"Straight Line Width\" box at "
+"the bottom of the window.\n"
msgstr ""
-"Pour MS-Windows, on a généralement 98ppp; choisissez donc: 98/4 = 24 "
-"(environ).\n"
-
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:328
-msgid "For Linux, the DPI is usually 72, so choose: 72/4 = 18.\n"
-msgstr "Pour Linux, on a généralement de 72ppp, choisissez donc : 72/4 = 18.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:495
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:330
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:492
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:329
+#, fuzzy
msgid ""
"Notice how the Snap Grid keeps the main line and siding track parallel and "
-"the connecting tracks and spur at a 45° angle.\n"
+"the connecting tracks and spur at a 45° angle.\n"
msgstr ""
"Remarquez comment la Grille magnétique maintient la ligne principale et la "
"voie d'évitement parallèles, ainsi que les voies de connexion et la voie "
"déviée à un angle de 45 °.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:503
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:332
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:500
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:331
msgid "Second step: add LEDs for the turnout position indicators.\n"
msgstr ""
"Deuxième étape : ajouter des LED pour les indicateurs de position "
"d'aiguillage.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:333
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:332
msgid "We will use T1 red and green LEDs.\n"
msgstr "Nous allons utiliser des LED rouges et vertes T1.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:334
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:333
msgid "We will zoom in to show positioning.\n"
msgstr "Nous allons zoomer pour afficher le positionnement.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:513
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:336
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:510
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:335
msgid ""
"Notice that when we are in the correct position (on the 1/8\" grid), the "
"Marker lines on the bottom and left rulers will high-light the tick marks. "
"When both ticks are high-lighted, press the space bar to finalize the LED.\n"
msgstr ""
-"Notez que lorsqu'elles sont correctement positionnées (sur la grille 1/8\"),"
-" les lignes de repère situées en dessous et à gauche mettent en surbrillance"
-" les repères de sélection. Une fois les deux marquages mis en surbrillance, "
+"Notez que lorsqu'elles sont correctement positionnées (sur la grille 1/8\"), "
+"les lignes de repère situées en dessous et à gauche mettent en surbrillance "
+"les repères de sélection. Une fois les deux marquages mis en surbrillance, "
"verrouillez le voyant LED en appuyant sur la barre d'espacement.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:558
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:338
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:555
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:337
msgid "Now we'll add push buttons to control the turnouts.\n"
msgstr ""
-"Maintenant, nous allons ajouter des boutons pour contrôler les "
-"aiguillages.\n"
+"Maintenant, nous allons ajouter des boutons pour contrôler les aiguillages.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:595
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:340
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:592
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:339
msgid "Let's add signals to our siding.\n"
msgstr "Ajoutons des signaux à notre voie d’évitement.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:341
-msgid "The entrance to the siding will be protected by double headed signals.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:340
+msgid ""
+"The entrance to the siding will be protected by double headed signals.\n"
msgstr "L'entrée de la voie de garage est protégée par un double signal\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:342
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:341
msgid "We'll select a signal from the HotBar and place it into position.\n"
msgstr "Nous sélectionnons un signal de la HotBar et le mettons en position.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:608
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:344
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:605
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:343
+#, fuzzy
msgid ""
-"We rotate the signals by Shift-Right-Click and select 90° CW on the popup "
+"We rotate the signals by Shift-Right-Click and select 90° CW on the popup "
"menu. We can not show the popup menu in demo mode, but will simulate the "
"effect.\n"
msgstr ""
@@ -12172,8 +10230,8 @@ msgstr ""
"CW dans le menu contextuel. Nous ne pouvons pas afficher le menu contextuel "
"en mode démo, mais simulerons l'effet.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:657
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:346
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:654
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:345
msgid "The exits from the siding will be protected by single headed signals.\n"
msgstr ""
"Les sorties du parement seront protégées par des signaux à une seule tête.\n"
@@ -12181,20 +10239,21 @@ msgstr ""
"\n"
"La sortie de la voie de garage est sécurisée par un simple signal.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:711
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:348
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:708
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:347
msgid "Now for some touch-ups.\n"
msgstr "Maintenant quelques améliorations mineures.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:349
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:348
msgid "Notice when the line meet at an angle there is a gap.\n"
msgstr "Remarquez que quand la ligne se croise à un angle, il y a un espace.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:350
-msgid "We will fill this gap with the Å’\" dot.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:349
+#, fuzzy
+msgid "We will fill this gap with the Œ\" dot.\n"
msgstr "Nous allons combler cette lacune avec un point de 1/2 pouce.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:351
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:350
msgid ""
"Note: Win95/Win98/WinME does not support drawing lines with flat end-caps, "
"but only with round end-caps.\n"
@@ -12202,44 +10261,46 @@ msgstr ""
"Remarque : Win95 / Win98 / WinME ne prennent pas en charge les lignes de "
"dessin avec des embouts plats, mais seulement avec des embouts arrondis.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:352
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:351
msgid "Users on those platforms will not see the gap.\n"
msgstr "Les utilisateurs de ces plateformes ne verront pas l'écart.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:734
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:354
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:731
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:353
msgid ""
"Add an arrow head to indicate the tracks that connect to the rest of the "
"layout.\n"
msgstr ""
-"Ajoutez une flèche pour indiquer les voies qui se connectent sur le reste du"
-" plan.\n"
+"Ajoutez une flèche pour indiquer les voies qui se connectent sur le reste du "
+"plan.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:355
-msgid "The second arrow will be flipped 180°\"\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:354
+#, fuzzy
+msgid "The second arrow will be flipped 180°\"\n"
msgstr ""
"La deuxième flèche sera tournée de 180°\"\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:772
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:357
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:769
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:356
msgid "And add some labels.\n"
msgstr "Et ajoutez des étiquettes.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:833
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:359
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:830
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:358
+#, fuzzy
msgid ""
-"We want to print our control panel onto a 8Å“x11 page, but the control panel "
+"We want to print our control panel onto a 8Âœx11 page, but the control panel "
"is a bit too wide.\n"
msgstr ""
"Nous aimerions imprimer le panneau de commande sur une page de 8\"x11\", "
"mais il est trop large.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:360
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:359
msgid "Lets tighten it up a bit.\n"
msgstr "Permet de resserrer un peu.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:361
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:360
msgid ""
"First turn the Snap Grid on again so any moves we make will keep objects on "
"the grid.\n"
@@ -12247,40 +10308,40 @@ msgstr ""
"Commencez par réactiver la grille magnétique afin que les objets restent "
"alignés lors de leurs déplacements.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:842
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:363
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:839
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:362
msgid "Lets move the spur track to the left 3/4\"\n"
msgstr "Poussons la voie de service à gauche de 3/4 pouce\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:864
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:365
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:861
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:364
msgid "Now move the right side of the siding over.\n"
msgstr "Maintenant déplacez le côté droit de la voie d’évitement.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:884
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:367
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:881
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:366
msgid "Now, adjust the ends of the mainline and siding tracks.\n"
msgstr ""
"Maintenant, ajustez les extrémités des voies principale et d’évitement.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:904
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:369
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:901
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:368
msgid "And move the title over as well.\n"
msgstr "Et déplacez aussi le titre.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmctlpnl.xtr:921
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:371
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:918
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:370
msgid "Now you can print it.\n"
msgstr "Maintenant, vous pouvez l'imprimer.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:372
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:371
msgid "The cross-hairs on the LEDs and switch show the centers for drilling.\n"
msgstr ""
"Le réticule marque le centre des LED et des interrupteurs, ce qui facilite "
"le perçage.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdelund.xtr:33
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:374
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:33
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:373
msgid ""
"Pressing the <Delete> button lets you delete selected tracks from the "
"layout.\n"
@@ -12288,7 +10349,7 @@ msgstr ""
"Appuyez sur le bouton<Delete> pour supprimer les voies sélectionnées sur le "
"plan.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:375
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:374
msgid ""
"First you select the tracks you want to delete, and then press the <Delete> "
"button.\n"
@@ -12296,8 +10357,8 @@ msgstr ""
"Commencez par sélectionner les voies à supprimer, puis appuyez sur la "
"touche<Delete>.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdelund.xtr:47
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:377
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:376
msgid ""
"If you delete a track connected to an easement curve, then the easement "
"curve is deleted as well.\n"
@@ -12305,20 +10366,20 @@ msgstr ""
"Si vous supprimez une voie comportant un arc de transition, cet arc de "
"transition sera également supprimé.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdelund.xtr:57
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:379
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:378
msgid "You can use the <Undo> command to undelete tracks.\n"
msgstr "Vous pouvez utiliser la commande<Undo> pour restaurer les voies.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdelund.xtr:67
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:381
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:67
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:380
msgid ""
"If you Left-Drag on the layout you can select all tracks within an area.\n"
msgstr ""
"En faisant glisser avec la souris tout en maintenant le bouton gauche "
"enfoncé, vous pouvez marquer toutes les voies d'une zone.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:382
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:381
msgid ""
"Note, only tracks within the selected area are deleted. Since the easement "
"curve is connected to a deleted track, it is deleted as well.\n"
@@ -12327,75 +10388,77 @@ msgstr ""
"comme la courbe de transition est connectée à une voie supprimée, elle sera "
"également supprimée.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdelund.xtr:80
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:385
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:80
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:384
msgid ""
"The demo also simulates entering values and selecting options on various "
"dialogs.\n"
msgstr ""
-"La démo simule également la saisie de valeurs et la sélection d'options dans"
-" diverses boîtes de dialogue.\n"
+"La démo simule également la saisie de valeurs et la sélection d'options dans "
+"diverses boîtes de dialogue.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:386
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:385
msgid ""
"This is simulated by drawing a rectangle around the control when values are "
"entered or changed.\n"
msgstr ""
"124/5000\n"
-"Ceci est simulé en dessinant un rectangle autour du champ de saisie lors de la saisie ou de la modification de valeurs.\n"
+"Ceci est simulé en dessinant un rectangle autour du champ de saisie lors de "
+"la saisie ou de la modification de valeurs.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:13
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:388
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:13
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:387
msgid ""
"Here we are going to make some changes to the Display dialog. Notice how "
"this is simulated.\n"
msgstr ""
-"Ici, nous apportons des modifications dans la boîte de dialogue d'affichage."
-" Remarquez comment cela est simulé.\n"
+"Ici, nous apportons des modifications dans la boîte de dialogue d'affichage. "
+"Remarquez comment cela est simulé.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:389
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:388
msgid "First we are setting 'Draw Tunnel' to 'Normal'\n"
msgstr ""
"D'abord, nous paramétrons «Dessiner un tunnel» sur «Normal»\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:21
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:391
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:390
msgid "Now we're changing 'Label Font Size' to '56'\n"
msgstr ""
"Maintenant, nous changeons 'Taille de la police de l'étiquette' en «56»\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:26
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:393
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:392
msgid "We'll change some other options\n"
msgstr "Nous allons changer quelques autres options\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:38
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:395
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:394
msgid ""
-"This effect is only used in demonstration mode. During normal operation you"
-" will not see this.\n"
+"This effect is only used in demonstration mode. During normal operation you "
+"will not see this.\n"
msgstr ""
"Cet effet n'est utilisé qu'en mode démonstration. Pendant le fonctionnement "
"normal, vous ne le verrez pas.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdialog.xtr:45
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdimlin.xtr:117
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:398
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:45
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:397
msgid "Dimension Lines are used to mark the distances between two points.\n"
-msgstr "Les cotes de voies servent à marquer les distances entre deux points.\n"
+msgstr ""
+"Les cotes de voies servent à marquer les distances entre deux points.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:399
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:398
msgid ""
"Here we will create a Dimension Line to show the separation between two "
"tracks.\n"
msgstr ""
-"Ici, nous créons une ligne de cote pour montrer la distance entre deux voies"
-" parallèles.\n"
+"Ici, nous créons une ligne de cote pour montrer la distance entre deux voies "
+"parallèles.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdimlin.xtr:132
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:401
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:400
msgid ""
"We might also want to measure the distance between two structures. In this "
"case we will use a larger dimension line.\n"
@@ -12403,8 +10466,8 @@ msgstr ""
"Nous pourrions également vouloir déterminer la distance entre deux "
"bâtiments. Dans ce cas, nous utilisons une ligne de plus grande dimension.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdimlin.xtr:144
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:403
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:402
msgid ""
"We can use the <Describe> command to change the position of the Dimension "
"Line and the size of the numbers.\n"
@@ -12412,94 +10475,95 @@ msgstr ""
"Nous pouvons utiliser la commande<Describe> pour modifier la position de la "
"ligne de dimension et la taille des chiffres.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmdimlin.xtr:162
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:406
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:162
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:405
msgid ""
"This example will show the effect of using easements while joining tracks.\n"
msgstr ""
"Cet exemple montrera l'effet de l'utilisation de courbes de transition lors "
"de la jonction de voies.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:407
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:406
msgid "First, we will enable Cornu Easements and select Join\n"
msgstr ""
"Tout d'abord, nous validerons \"Courbe de transition Cornu\", puis "
"sélectionnerons Raccorder\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:28
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:409
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:408
msgid "First select one end of the track\n"
msgstr ""
"Sélectionnez d'abord une fin de voie\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:39
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:411
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:410
msgid "Now the end of different track\n"
msgstr "Et maintenant, la fin d'une autre voie\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:49
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:413
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:412
msgid "You can reposition the ends by dragging them \n"
msgstr ""
"Vous pouvez repositionner les extrémités en les faisant glisser\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:65
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:415
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:414
msgid "When you are happy, Hit Enter or Space, if not use Esc\n"
msgstr ""
"Lorsque vous êtes satisfait, appuyez sur Entrée ou Espace, sinon utilisez "
"Esc\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:73
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:417
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:416
msgid ""
"The Curve is made up of Beziers parts that smooth the shape the best way it "
"can be in the space available\n"
msgstr ""
-"La courbe est composée d'éléments de Bézier qui lissent la forme de la meilleure façon possible dans l'espace disponible\n"
+"La courbe est composée d'éléments de Bézier qui lissent la forme de la "
+"meilleure façon possible dans l'espace disponible\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:87
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:419
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:87
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:418
msgid "Now, we'll show traditional easements instead.\n"
msgstr ""
"Maintenant, nous allons plutôt montrer les courbes de transitions "
"traditionnelles.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:142
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:421
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:142
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:420
msgid ""
-"We've selected sharp easements. The minimum radius curve we can use will be"
-" 9.75\"\n"
+"We've selected sharp easements. The minimum radius curve we can use will be "
+"9.75\"\n"
msgstr ""
"Nous avons choisi des courbes de transition serrées. Le rayon minimum que "
"nous pouvons utiliser est de 9,75 \".\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:422
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:421
msgid "Notice the label on the Easement button has changed to 'Sharp'.\n"
msgstr ""
-"Remarquez que l’étiquette du bouton 'courbes de transitions' a été remplacée"
-" par 'Etroit'.\n"
+"Remarquez que l’étiquette du bouton 'courbes de transitions' a été remplacée "
+"par 'Etroit'.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:157
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:424
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:157
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:423
msgid ""
-"Note the connecting curve does not quite meet the straight tracks. This the"
-" 'Offset'.\n"
+"Note the connecting curve does not quite meet the straight tracks. This the "
+"'Offset'.\n"
msgstr ""
"Notez que la courbe de connexion ne rencontre pas tout à fait les voies "
"droites. C'est le \"décalage\".\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:165
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:426
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:425
msgid "Here the connecting curve is too small.\n"
msgstr "Ici, le rayon de connexion est trop petit.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmease.xtr:175
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:428
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:175
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:427
msgid ""
"The connecting curve is made of three tracks, the curve and two easement "
"segments on each end.\n"
@@ -12507,8 +10571,8 @@ msgstr ""
"La courbe de connexion est composée de trois voies, la courbe et deux "
"segments de courbes de transition à chaque extrémité.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:112
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:430
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:429
msgid ""
"We have designed part of the layout with a siding, 2 branches and a spiral "
"loop. We want to set elevations.\n"
@@ -12516,70 +10580,71 @@ msgstr ""
"Nous avons conçu une partie d'un plan de voie avec un parement, 2 branches "
"et une hélicoïde de voie. Maintenant, nous voulons définir les élévations.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:431
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:430
msgid "Note: make sure you set endpoint elevations on the Display dialog.\n"
msgstr ""
-"Remarque : assurez-vous de définir les élévations des points de fin dans la boîte de dialogue Affichage.\n"
+"Remarque : assurez-vous de définir les élévations des points de fin dans la "
+"boîte de dialogue Affichage.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:122
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:433
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:122
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:432
msgid "First we will set elevations at the end of the branches.\n"
msgstr "Nous allons d’abord définir les élévations au bout des branches.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:132
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:435
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:434
msgid "We'll select the end of the top branch and set the Elevation to 4\"\n"
msgstr ""
-"Nous allons sélectionner la fin de la branche supérieure et définir l'élévation à 4\"\n"
+"Nous allons sélectionner la fin de la branche supérieure et définir "
+"l'élévation à 4\"\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:436
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:435
msgid "First, click on the End-Point.\n"
msgstr "Tout d'abord, cliquez sur le point de fin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:142
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:438
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:142
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:437
msgid "Next, pick Defined on the Elevation dialog Radio box.\n"
msgstr "Ensuite, sélectionnez 'Valider' dans la boîte de dialogue Élévation.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:148
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:440
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:439
msgid "And set the Elevation to 4.\n"
msgstr "Et définissez l'élévation à 4.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:156
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:442
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:441
msgid "Now, select the other branch and set it's elevation to 2\"\n"
msgstr ""
"Maintenant, sélectionnez l’autre branche et réglez son élévation sur 2\"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:170
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:444
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:443
msgid "We can move the Elevation label by using Ctrl-Left-Drag\n"
msgstr ""
"Nous pouvons déplacer l'étiquette Élévation en utilisant Ctrl-gauche-"
"glisser.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:182
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:446
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:445
msgid "Now, we set the Elevation at one end of the Siding.\n"
msgstr ""
-"Maintenant, nous fixons l’élévation à une extrémité de la voie "
-"d’évitement.\n"
+"Maintenant, nous fixons l’élévation à une extrémité de la voie d’évitement.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:209
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:215
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:449
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:209
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:215
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:448
msgid "We want to find the elevations where the 2 tracks cross.\n"
msgstr "Nous voulons déterminer les élévations où les 2 voies se croisent.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:224
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:451
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:450
msgid "We picked an End-Point on the upper track.\n"
msgstr "Nous avons sélectionné un point de fin sur la voie supérieure.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:452
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:451
msgid ""
"XTrackCAD has computed the Elevation (2.33\") at this point based on the "
"Elevation at the siding and a combination of the of the first Elevations.\n"
@@ -12588,100 +10653,102 @@ msgstr ""
"l'élévation à la voie d'évitement et d'une combinaison des premières "
"élévations.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:453
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:452
msgid ""
"We create a Computed Elevation here that will be automatically adjusted "
"whenever the other Elevations are changed.\n"
msgstr ""
-"Nous créons ici une élévation calculée qui dépend automatiquement des autres"
-" élévations modifiables.\n"
+"Nous créons ici une élévation calculée qui dépend automatiquement des autres "
+"élévations modifiables.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:243
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:455
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:454
msgid ""
-"The Compute Elevation is based on Elevations at end of both of the branches."
-" We may want to base the Elevation on only one branch. For example if one "
-"branch was the mainline we don't want the other branch affecting this "
-"Computed Elevation.\n"
+"The Compute Elevation is based on Elevations at end of both of the "
+"branches. We may want to base the Elevation on only one branch. For "
+"example if one branch was the mainline we don't want the other branch "
+"affecting this Computed Elevation.\n"
msgstr ""
"Le calcul de l'élévation est basé sur les élévations à la fin des deux "
"branches. Nous pouvons vouloir baser l'élévation sur une seule branche. Par "
"exemple, si une branche était la ligne principale, nous ne voulons pas que "
"l'autre branche affecte cette altitude calculée.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:455
msgid "We do this by Ignoring the branch we don't want.\n"
msgstr "Nous le faisons en ignorant la branche dont nous ne voulons pas.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:457
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:456
msgid "We'll ignore the lower branch.\n"
msgstr "Nous ignorerons la branche inférieure.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:258
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:459
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:458
msgid ""
"Notice at the endpoint where the tracks cross, we see the elevation has "
"changed from 2.33 to 2.64.\n"
msgstr ""
-"Remarquez qu'au point de fin où les voies se croisent, nous voyons que l’élévation est passée de 2,33 à 2,64.\n"
+"Remarquez qu'au point de fin où les voies se croisent, nous voyons que "
+"l’élévation est passée de 2,33 à 2,64.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:264
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:461
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:264
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:460
msgid "Now we want to know the elevation of the lower track.\n"
msgstr ""
"Nous voulons maintenant connaître l’élévation de la voie la plus basse.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:274
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:463
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:274
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:462
msgid "There is no endpoint on the lower track here.\n"
msgstr ""
"Il n'y a pas de point de fin sur la voie inférieure ici.\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:463
msgid ""
"Use Shift-Left-Click to Split the track and create an endpoint we can use "
"for an elevation,\n"
msgstr ""
-"Utilisez Maj-Clic gauche pour segmenter la voie et créer un point de fin que"
-" nous pouvons utiliser pour une élévation,\n"
+"Utilisez Maj-Clic gauche pour segmenter la voie et créer un point de fin que "
+"nous pouvons utiliser pour une élévation,\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:287
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:466
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:287
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:465
msgid "and create another Computed Elevation point.\n"
msgstr "et créez un autre point de calcul d'élévation.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:302
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:468
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:467
msgid "Now we want to label the grade on this section of track.\n"
msgstr ""
"Maintenant, nous voulons étiqueter la pente sur cette section de voie.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:311
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:470
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:311
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:469
msgid ""
"Again, since there is no endpoint nearby, we split the track to create an "
"endpoint we can use,\n"
msgstr ""
-"De nouveau, comme il n’y a pas de bout de voie proche, nous avons segmenté la voie pour créer un bout que nous pouvons utiliser,\n"
+"De nouveau, comme il n’y a pas de bout de voie proche, nous avons segmenté "
+"la voie pour créer un bout que nous pouvons utiliser,\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:321
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:472
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:321
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:471
msgid "and create a grade marker.\n"
msgstr ""
"et créez une balise de pente.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:335
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:474
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:335
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:473
msgid "Note the marker has an arrow pointing in the upwards direction.\n"
msgstr "Notez que le marqueur a une flèche pointant vers le haut.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:344
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:476
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:344
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:475
msgid ""
"The last thing we want to do is to create a Station label that we'll use in "
"the <Profile> command.\n"
@@ -12689,48 +10756,50 @@ msgstr ""
"Comme étape finale, nous allons créer une étiquette pour une station que "
"nous utiliserons dans la commande<Profile> d'élévation.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:358
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:478
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:358
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:477
msgid "Now, set the Elevation to Station and enter the its name.\n"
msgstr ""
"Maintenant, placez maintenant le marqueur d'élévation sur 'Station' et "
"entrez le nom.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmelev.xtr:376
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:31
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:481
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:376
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:480
msgid ""
-"XTrackCAD can help find tracks that are curved too sharply or are too steep."
-" These tracks are Exception tracks and are drawn in the Exception track "
-"color.\n"
+"XTrackCAD can help find tracks that are curved too sharply or are too "
+"steep. These tracks are Exception tracks and are drawn in the Exception "
+"track color.\n"
msgstr ""
"XTrackCAD peut vous aider à trouver les voies dont le rayon est trop étroit "
"ou qui montent trop fortement. Ces voies sont non conformes et sont "
"affichées dans la couleur de Voie non conforme.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:482
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:481
+#, fuzzy
msgid ""
-"In this example we have a curved track with radius of 9\" and a straight "
-"track with a grade of 3.8%.\n"
+"In this example we have a curved track with radius of 9 inches and a "
+"straight track with a grade of 3.8 percent.\n"
msgstr ""
-"Dans cet exemple, nous avons une voie courbe avec un rayon de 9\" et une "
-"voie droite avec une pente de 3,8%.\n"
+"Dans cet exemple, nous avons une voie courbe avec un rayon de 9 pouces et "
+"une voie droite avec une pente de 3,8 pour cent.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:483
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:482
msgid " \n"
msgstr " \n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:39
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:485
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:484
+#, fuzzy
msgid ""
-"The Layout dialog shows the Minimum Track Radius is 9\" and the Maximum "
-"Track Grade is 5%.\n"
+"The Layout dialog shows the Minimum Track Radius is 9 inches and the Maximum "
+"Track Grade is 5 percent.\n"
msgstr ""
"Dans les options pour le plan de voie, nous voyons que le rayon minimum est "
-"fixé à 9\"et la pente maximale à 5%.\n"
+"fixé à 9\"et la pente maximale à 5 pour cent.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:48
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:487
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:486
msgid ""
"If we make the curved track sharper it will be drawn in the Exception "
"color.\n"
@@ -12738,17 +10807,17 @@ msgstr ""
"Si nous réduisons le rayon de la courbe, la voie est affichée avec la "
"couleur de l'exception.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:61
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:489
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:61
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:488
msgid ""
-"If we make the straight track steeper it will also be drawn in the Exception"
-" color.\n"
+"If we make the straight track steeper it will also be drawn in the Exception "
+"color.\n"
msgstr ""
"Si nous élargissons la pente de la voie droite, la voie est également "
"affichée dans la couleur exceptionnelle.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:78
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:491
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:78
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:490
msgid ""
"You can change the Exception color on the Colors dialog from the Options "
"menu.\n"
@@ -12756,112 +10825,116 @@ msgstr ""
"Vous pouvez modifier la couleur des Voies non conformes dans la boîte de "
"dialogue Couleurs du menu Options.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmexcept.xtr:85
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:21
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:494
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:85
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:493
msgid ""
-"The unconnected endpoint of any track can also be extended with the <Modify>"
-" command using Right-Drag.\n"
+"The unconnected endpoint of any track can also be extended with the <Modify> "
+"command using Right-Drag.\n"
msgstr ""
-"Le point de fin non connecté de n'importe quelle voie peut également être étendu avec la commande<Modify> en faisant glisser avec le bouton droit de la souris enfoncé.\n"
+"Le point de fin non connecté de n'importe quelle voie peut également être "
+"étendu avec la commande<Modify> en faisant glisser avec le bouton droit de "
+"la souris enfoncé.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:26
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:496
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:495
msgid "Select the endoint and Right-Drag.\n"
msgstr ""
-"Sélectionnez le point de fin et faites le glisser avec le bouton droit de la souris.\n"
+"Sélectionnez le point de fin et faites le glisser avec le bouton droit de la "
+"souris.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:34
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:498
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:497
msgid "The extending track can be straight...\n"
msgstr "L'extension de voie peut être droite …\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:44
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:500
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:44
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:499
msgid "... or curved.\n"
msgstr "... ou courbé.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:51
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:502
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:501
msgid ""
"If you extend a straight or curved flex track and enable Easements then an "
"Easement curve will be automatically generated when you extend the track.\n"
msgstr ""
-"Si la fonction de courbe de transition est active pendant que vous modifiez une voie flexible droite ou courbe, un arc de transition sera créé.\n"
+"Si la fonction de courbe de transition est active pendant que vous modifiez "
+"une voie flexible droite ou courbe, un arc de transition sera créé.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmextend.xtr:65
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:124
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:505
-msgid "The <Flip> command will create a mirror image of the selected objects.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:65
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:124
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:504
+msgid ""
+"The <Flip> command will create a mirror image of the selected objects.\n"
msgstr "La commande<Flip> génère une image miroir des objets sélectionnés.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:131
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:507
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:506
msgid "After selecting the object, drag a line which will form the mirror.\n"
msgstr ""
"Après avoir sélectionné l'objet, tracez la voie d'axe de l'effet miroir.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:140
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:509
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:140
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:508
msgid "The mirror line does not have to be vertical or horizontal.\n"
msgstr "La ligne de miroir n'a pas besoin d'être verticale ou horizontale.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:149
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:511
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:149
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:510
msgid "You can also flip any number of objects.\n"
msgstr "Vous pouvez mettre en miroir n'importe quel nombre d'objets.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:512
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:511
msgid "Watch what happens to the structure and turnout titles.\n"
msgstr ""
"Faites attention à ce qui se passe sur les étiquettes des bâtiments et des "
"aiguillages.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:163
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:514
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:513
msgid ""
-"Note that the turnout title has been changed from the Medium Right to Medium"
-" Left. When turnouts are flipped, XTrackCAD will try to find a matching "
+"Note that the turnout title has been changed from the Medium Right to Medium "
+"Left. When turnouts are flipped, XTrackCAD will try to find a matching "
"turnout and if found will change the name.\n"
msgstr ""
"Notez que le titre d'aiguillage a été changé, moyen à droite est devenu "
"moyen à gauche . Lorsque les aiguillages sont inversés, XTrackCAD essaiera "
-"de trouver un aiguillage correspondant et, le cas échéant, changera le "
-"nom.\n"
+"de trouver un aiguillage correspondant et, le cas échéant, changera le nom.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:170
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:516
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:515
msgid ""
-"Structures do not have Right and Left hand versions. Their title is changed"
-" to indicate that they were flipped.\n"
+"Structures do not have Right and Left hand versions. Their title is changed "
+"to indicate that they were flipped.\n"
msgstr ""
-"Les bâtiments n'ont pas de versions droite et gauche. Leur titre est modifié"
-" pour indiquer qu'ils ont été retournés.\n"
+"Les bâtiments n'ont pas de versions droite et gauche. Leur titre est modifié "
+"pour indiquer qu'ils ont été retournés.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:517
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:516
msgid "You can use the <Describe> command to change their title.\n"
msgstr "Vous pouvez utiliser la commande<Describe> pour modifier leur titre.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmflip.xtr:187
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:21
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:520
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:187
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:519
msgid ""
-"The <Group> and <Ungroup> commands (on the Tools menu) are a powerful way to"
-" manipulate Turnout and Structure definitions.\n"
+"The <Group> and <Ungroup> commands (on the Tools menu) are a powerful way to "
+"manipulate Turnout and Structure definitions.\n"
msgstr ""
"Les commandes<Group> et <Ungroup> (dans le menu Gérer) sont un moyen "
"puissant de manipuler les définitions d'aiguillage et structure.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:521
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:520
msgid "We'll start with a simple turnout and add a switch machine.\n"
msgstr ""
"Nous commencerons par un simple aiguillage et ajouterons une déviation.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:55
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:523
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:55
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:522
msgid ""
"Now that we have drawn a rough outline of a switch machine we will group it "
"with the turnout definition.\n"
@@ -12869,17 +10942,17 @@ msgstr ""
"Maintenant que nous avons tracé les grandes lignes d’un aiguillage, nous "
"allons les regrouper avec une définition d'aiguillage.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:524
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:523
msgid "First we Select the objects in the new definition.\n"
msgstr "Nous sélectionnons d'abord les objets dans la nouvelle définition.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:68
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:526
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:68
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:525
msgid "Now do the <Group> command.\n"
msgstr "Et maintenant, appliquez la commande <Group>.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:75
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:528
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:527
msgid ""
"The <Group> command dialog shows the Title (Manufacturer, Description and "
"Part Number) of the new definition. This information is taken from the "
@@ -12889,8 +10962,8 @@ msgstr ""
"description et numéro de pièce) de la nouvelle définition. Ces informations "
"sont extraites des objets sélectionnés que vous regroupez.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:81
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:530
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:529
msgid ""
"The 'Replace with new group?' toggle will replace the Selected objects with "
"the new definition.\n"
@@ -12898,8 +10971,8 @@ msgstr ""
"Le commutateur \"Remplacer par un nouveau groupe?\" remplacera les objets "
"sélectionnés par la nouvelle définition.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:88
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:532
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:88
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:531
msgid ""
"If we don't change the Title then the new definition will replace the "
"existing definition.\n"
@@ -12907,22 +10980,22 @@ msgstr ""
"Si nous ne changeons pas le titre, la nouvelle définition remplacera la "
"définition existante.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:533
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:532
msgid "We'll give this definition a new Description.\n"
msgstr "Nous donnons au groupe une nouvelle description.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:99
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:535
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:534
msgid "We're done with this definition. Press Ok.\n"
msgstr "Nous en avons fini avec cette définition. Appuyer sur OK.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:106
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:537
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:106
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:536
msgid "You will see the updated image on the HotBar.\n"
msgstr "Vous verrez l'image mise à jour sur la barre de contrôle.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:113
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:539
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:113
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:538
msgid ""
"The <Ungroup> command replaces any Selected turnouts or structures with "
"their parts.\n"
@@ -12930,7 +11003,7 @@ msgstr ""
"La commande<Ungroup> remplace tous les aiguillages ou structures "
"sélectionnés par leurs pièces.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:540
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:539
msgid ""
"Structures and non-track segements of turnouts are composed of Lines, "
"Circles and other shapes. In this turnout these are the two lines and the "
@@ -12939,7 +11012,7 @@ msgstr ""
"Les bâtiments et les aiguillages sont composés de lignes, de cercles et "
"d'autres formes. Cet aiguillage comprend deux lignes et deux carrés.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:541
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:540
msgid ""
"We will Ungroup this turnout and see how the individual parts can be "
"changed.\n"
@@ -12947,26 +11020,26 @@ msgstr ""
"Nous dissocierons cet aiguillage et verrons comment les différentes parties "
"peuvent être modifiées.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:542
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:541
msgid "First Select the turnout and then Ungroup it.\n"
msgstr "Sélectionnez d'abord l'aiguillage, puis dissociez-le.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:128
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:544
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:543
msgid "Notice that the Title now indicates the turnout is Ungrouped.\n"
msgstr "Notez que le titre indique maintenant que l'aiguillage est dissocié.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:545
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:544
msgid "Hit Escape to deselect everything.\n"
msgstr "Appuyez sur Echap pour tout désélectionner.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:138
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:547
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:138
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:546
msgid "Now Select the lines and squares.\n"
msgstr "Maintenant, sélectionnez les lignes et les carrés.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:163
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:549
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:548
msgid ""
"We could modify these object or add new ones. For now we'll just delete "
"them.\n"
@@ -12974,18 +11047,18 @@ msgstr ""
"Nous pouvons changer cet objet ou en ajouter de nouveaux, cette fois nous "
"allons juste les supprimer.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:170
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:551
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:550
msgid "And move the Label out of the way.\n"
msgstr "Et déplacez l'étiquette hors de la voie.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:181
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:553
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:181
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:552
msgid "Notice that the turnout has been broken into three parts.\n"
msgstr "Notez que l'aiguillage a été divisé en trois parties.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:203
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:555
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:203
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:554
msgid ""
"Two ends of the turnout, from the frog to the end of the diverging leg and "
"from the points to the left, are now straight track sections.\n"
@@ -12993,7 +11066,7 @@ msgstr ""
"Deux extrémités de l'aiguillage, du cœur à l'extrémité de la voie divergée "
"et des points à gauche, sont maintenant des sections de voie droites.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:556
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:555
msgid ""
"The a turnout is made of a number of individual straight and curved track "
"segements. This turnout had four segments:\n"
@@ -13001,27 +11074,28 @@ msgstr ""
"Un aiguillage se compose d'un certain nombre de pièces de voies droites et "
"courbes. Cet aiguillage comprend quatre pièces :\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:557
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:556
msgid " 1 a short straight segment to the left of the points\n"
msgstr " 1. une courte pièce droite, à gauche des lames d'aiguillage\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:558
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:557
msgid " 2 a long straight segment to the right of the points\n"
msgstr " 2. une longue pièce droite, à droite des lames d'aiguillage\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:559
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:558
msgid " 3 a curved segment from the points to the frog\n"
msgstr " 3. une pièce pliée des lames d'aiguillage vers le cœur, et\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:560
-msgid " 4 a straight segment from the frog to the end of the diverging leg.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:559
+msgid ""
+" 4 a straight segment from the frog to the end of the diverging leg.\n"
msgstr " 4. une pièce droite du cœur à la fin de la voie d'embranchement.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:561
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:560
msgid "The first and last segments have be converted to straight tracks.\n"
msgstr "Les premier et dernier segments ont été convertis en voies droites.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:562
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:561
msgid ""
"The second and third segments form the the body of the turnout and can not "
"be ungrouped further.\n"
@@ -13029,86 +11103,86 @@ msgstr ""
"Les deuxième et troisième segments forment le corps de l'aiguillage et ne "
"peuvent plus être dissociés.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:563
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:562
msgid ""
"You can later Group this turnout with the straight segments to recreate the "
"turnout definition. You can also add other track segments to turnout "
"definitions.\n"
msgstr ""
"Ensuite, vous pouvez regrouper l'aiguillage avec les sections droites pour "
-"restaurer la définition d'aiguillage. Vous pouvez également ajouter d'autres"
-" sections de voie aux définitions d'aiguillages.\n"
+"restaurer la définition d'aiguillage. Vous pouvez également ajouter d'autres "
+"sections de voie aux définitions d'aiguillages.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:247
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:565
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:247
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:564
msgid "Now, create a track and place the new turnout on it.\n"
msgstr "Maintenant, créez une voie et placez le nouvel aiguillage dessus.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:265
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:567
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:265
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:566
msgid "Now suppose we want to replace the black squares with green circles.\n"
msgstr ""
"Supposons que nous voulions remplacer les carrés noirs par des cercles "
"verts.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:568
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:567
msgid "First we Select the turnout.\n"
msgstr "Nous sélectionnons d'abord l'aiguillage.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:277
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:570
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:277
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:569
msgid "And now Ungroup it (from the Tools Menu)\n"
msgstr "Et maintenant, dissociez-le (à partir du menu Gérer)\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:282
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:572
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:282
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:571
msgid ""
"Notice that the name has changed to indicate the turnout was Ungrouped.\n"
msgstr ""
"Notez que le nom a changé pour indiquer que l'aiguillage a été dissocié.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:288
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:574
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:288
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:573
msgid ""
"Now, hit escape to deselect everything and then Select the 2 squares and "
"delete them.\n"
msgstr ""
-"Maintenant, appuyez sur 'Ech' pour tout désélectionner, puis sélectionnez et"
-" supprimez les 2 carrés.\n"
+"Maintenant, appuyez sur 'Ech' pour tout désélectionner, puis sélectionnez et "
+"supprimez les 2 carrés.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:305
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:576
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:575
msgid "Now draw the green circles...\n"
msgstr "Maintenant, dessinez les cercles verts…\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:326
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:578
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:326
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:577
msgid "and Group the new definition.\n"
msgstr "et Groupez la nouvelle définition.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:345
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:580
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:345
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:579
msgid ""
"Notice that the turnout in the HotBar is angled the same as the turnout on "
"the layout. Make sure your new definition is rotated the way you want it.\n"
msgstr ""
-"Notez que l'aiguillage dans la barre d'objets est le même que celui du plan."
-" Assurez-vous que votre nouvelle définition est alignée comme vous le "
+"Notez que l'aiguillage dans la barre d'objets est le même que celui du plan. "
+"Assurez-vous que votre nouvelle définition est alignée comme vous le "
"souhaitez.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:384
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:582
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:384
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:581
msgid "We can also create turnouts from simple straight and curved tracks.\n"
msgstr ""
"Nous pouvons également créer des aiguillages à partir de simples voies "
"droites et courbes.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:583
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:582
msgid "We'll create two tracks that have a common endpoint.\n"
msgstr "Nous créons deux voies avec un point de fin commun.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:395
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:585
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:395
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:584
msgid ""
"When we create the curve from the straight track endpoint we need to hold "
"down the <Shift> key to prevent XTrackCAD from trying to join the two "
@@ -13118,47 +11192,47 @@ msgstr ""
"nous devons maintenir la touche <Shift>enfoncée pour empêcher XTrackCAD "
"d'essayer de joindre les deux voies.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:413
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:587
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:413
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:586
msgid "At this point we can modify the tracks if necessary.\n"
msgstr "À ce stade, nous pouvons modifier les voies si nécessaire.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:588
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:587
msgid "We will use the <Describe> command to change the tracks.\n"
msgstr "Nous utiliserons la commande<Describe> pour changer les voies.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:425
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:590
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:425
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:589
msgid "We'll make the Length 7.5\".\n"
msgstr "Nous avons réglé la longueur à 7,5\".\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:591
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:590
msgid ""
-"If we change the Length, each End-Point will be moved to shorten the track."
-" We want to just move the Right End-Point. To control this, change the "
-"Lock to First which means the Left End-Point will be unchanged when we "
-"change the length (or angle) of the track.\n"
+"If we change the Length, each End-Point will be moved to shorten the track. "
+"We want to just move the Right End-Point. To control this, change the Lock "
+"to First which means the Left End-Point will be unchanged when we change the "
+"length (or angle) of the track.\n"
msgstr ""
"Si nous modifions la longueur, chaque point d'extrémité sera déplacé pour "
"raccourcir la voie. Nous voulons simplement déplacer le point d'extrémité "
"droit. Pour ce faire, modifiez le verrouillage en premier, ce qui signifie "
-"que le point d'extrémité gauche restera inchangé lorsque nous modifierons la"
-" longueur (ou l'angle) de la voie.\n"
+"que le point d'extrémité gauche restera inchangé lorsque nous modifierons la "
+"longueur (ou l'angle) de la voie.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:435
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:593
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:435
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:592
msgid "Now when change the Length only the Right End-Point will move.\n"
msgstr ""
"Maintenant, lorsque vous modifiez la longueur, seul le point final droit se "
"déplace.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:446
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:595
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:446
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:594
msgid "Now let's look at the curved track.\n"
msgstr "Regardons maintenant la voie incurvée.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:456
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:597
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:596
msgid ""
"Here the Left End-Point (which we don't want to move) is the Second End-"
"Point, so we'll make that the Lock.\n"
@@ -13166,82 +11240,84 @@ msgstr ""
"Ici, le point d'extrémité gauche (que nous ne voulons pas déplacer) est le "
"deuxième point d'extrémité, nous allons donc en faire le verrou.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:464
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:599
-msgid "We want the curve to have a radius of 20\" and an angle of 17.5ᅵ.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:598
+#, fuzzy
+msgid "We want the curve to have a radius of 20\" and an angle of 17.5°.\n"
msgstr ""
"Nous voulons que la courbe ait un rayon de 20\" et un angle de 17,5°.\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:600
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:599
msgid "First change the Radius...\n"
msgstr "Tout d'abord changer le rayon …\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:473
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:602
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:473
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:601
msgid "and the the Angular Length.\n"
msgstr "et la longueur angulaire.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:481
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:604
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:481
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:603
msgid "Now Select both tracks...\n"
msgstr "Maintenant, sélectionnez les deux voies…\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:497
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:606
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:497
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:605
msgid "and Group them.\n"
msgstr "et groupez les.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:508
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:608
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:508
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:607
msgid ""
"If the two tracks have a common End-Point then they will form a Turnout and "
"can be switched with the <Train> command. Otherwise they will just be two "
"track segments grouped together.\n"
msgstr ""
"Si les deux voies ont un point de fin commun, elles formeront un aiguillage "
-"et pourront être commutées avec la commande<Train>. Sinon, il ne s'agira que"
-" de deux segments de voie regroupés.\n"
+"et pourront être commutées avec la commande<Train>. Sinon, il ne s'agira que "
+"de deux segments de voie regroupés.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:515
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:610
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:515
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:609
msgid ""
"We have created a left hand turnout and we also want a right hand version.\n"
msgstr ""
-"Nous avons créé un aiguillage gauche et nous voulons également une version à"
-" droite.\n"
+"Nous avons créé un aiguillage gauche et nous voulons également une version à "
+"droite.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:611
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:610
msgid "We'll use the <Flip> command.\n"
msgstr "Nous utilisons la commande<Flip>\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:528
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:613
-msgid "Drag a horizontal line that will be the mirror for the <Flip> command.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:528
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:612
+msgid ""
+"Drag a horizontal line that will be the mirror for the <Flip> command.\n"
msgstr ""
"Faites glisser une voie horizontale qui sera l'axe de miroir de la commande "
"<Flip>.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:538
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:615
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:538
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:614
msgid "Notice the title has changed to Flipped Left.\n"
msgstr "Notez que le titre a été changé en \"Gauche en miroir\".\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:616
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:615
msgid "Now Group the turnout.\n"
msgstr ""
"Maintenant, regroupez l'aiguillage\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:547
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:618
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:547
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:617
msgid "We'll change the Title and Part No for the new defintion.\n"
msgstr ""
"Nous allons changer le titre et le numéro de pièce pour la nouvelle "
"définition.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:560
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:620
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:560
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:619
msgid ""
"To Remove the definitions, use the Custom Management dialog on the Tools "
"menu.\n"
@@ -13249,65 +11325,66 @@ msgstr ""
"Pour supprimer des définitions, utilisez le \"Eléments définis sur mesure\" "
"dans le menu \"Gérer\".\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:565
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:622
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:565
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:621
msgid "Select the definitions you added and Delete them.\n"
-msgstr "Sélectionnez les définitions que vous avez ajoutées et supprimez-les.\n"
+msgstr ""
+"Sélectionnez les définitions que vous avez ajoutées et supprimez-les.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmgroup.xtr:578
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:625
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:578
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:624
msgid ""
"Now we will create a helix in the corner of the layout connected to 2 "
"tracks.\n"
msgstr ""
-"Dans le coin du plan, nous allons maintenant créer une hélicoïde connectée à"
-" 2 voies.\n"
+"Dans le coin du plan, nous allons maintenant créer une hélicoïde connectée à "
+"2 voies.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:28
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:627
-#, c-format
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:626
msgid ""
-"We will be creating a helix with a Elevation Difference of 12\", Grade of "
-"1.5% and limit the Vertical Separation to at least 2\".\n"
+"We will be creating a helix with a Elevation Difference of 12 inches, Grade "
+"of 1.5 percent and limit the Vertical Separation to at least 2 inches.\n"
msgstr ""
"Nous allons créer une hélicoïde de voie avec une différence d'élévation de "
-"12\", une pente de 1,5% et limiter la distance verticale à au moins 2\".\n"
+"12\", une pente de 1,5 pour cent et limiter la distance verticale à au moins "
+"2\".\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:34
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:629
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:628
msgid "First set the Elevation Difference to 12\"\n"
msgstr "Réglez d'abord la différence d'élévation à 12 \"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:43
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:631
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:43
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:630
msgid "Next set the Vertical Separation to 2\"\n"
msgstr "Ensuite, réglez la séparation verticale sur 2\"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:632
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:631
msgid "Notice how this causes the number of Turns to be set to 6\n"
msgstr "Remarquez comment cela nécessite un nombre de 6 tours\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:52
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:634
-msgid "Next set the Grade to 1.5%\n"
-msgstr "Ensuite définir la pente à 1,5%\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:52
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:633
+msgid "Next set the Grade to 1.5 percent\n"
+msgstr "Ensuite définir la pente à 1,5 pour cent\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:635
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:634
msgid "Notice how this causes the Radius to change.\n"
msgstr "Remarquez comment cela provoque le changement de rayon.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:60
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:637
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:60
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:636
msgid ""
-"Setting these values changes the Radius to 21.2\" and the number of Turns to"
-" 6.\n"
+"Setting these values changes the Radius to 21.2\" and the number of Turns to "
+"6.\n"
msgstr ""
-"La définition de ces valeurs modifie le rayon à 21,2\" et le nombre de tours"
-" à 6.\n"
+"La définition de ces valeurs modifie le rayon à 21,2\" et le nombre de tours "
+"à 6.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:66
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:639
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:66
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:638
msgid ""
"Now we specify the Angular Separation between the enterance and exit to the "
"helix.\n"
@@ -13315,52 +11392,52 @@ msgstr ""
"Nous modifions maintenant l'angle entre les voies entrante et sortante de "
"l'hélicoïde.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:640
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:639
msgid "Note: this will decrease the Radius slightly.\n"
msgstr "Remarque : cela diminuera légèrement le rayon.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:76
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:642
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:76
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:641
msgid "Next we can fine tune the helix by decreasing the Radius to 15\".\n"
-msgstr "Ensuite, nous pouvons affiner l’hélicoïde en diminuant le rayon à 15\".\n"
+msgstr ""
+"Ensuite, nous pouvons affiner l’hélicoïde en diminuant le rayon à 15\".\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:643
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:642
msgid "Note the change to the Grade.\n"
msgstr "Notez le changement de pente.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:85
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:645
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:85
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:644
msgid ""
-"Lastly change the Vertical Separation to 2.5\". The number of Turns will "
-"change to 4 and the grade increase to almost 3%.\n"
+"Lastly change the Vertical Separation to 2.5 inches. The number of Turns "
+"will change to 4 and the grade increase to almost 3 percent.\n"
msgstr ""
"Pour finir, changez la séparation verticale à 2.5\", le nombre de virages "
-"passera à 4 et la pente augmentera à près de 3%.\n"
+"passera à 4 et la pente augmentera à près de 3 pour cent.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:646
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:645
msgid ""
"Note: the Vertical Separation will be increased. This value is the "
-"Elevation Difference (12.0) divided by the total number of turns. The total"
-" number of turns is 4.25: 4 whole Turns plus a quarter turn for the Angular "
+"Elevation Difference (12.0) divided by the total number of turns. The total "
+"number of turns is 4.25: 4 whole Turns plus a quarter turn for the Angular "
"Separation.\n"
msgstr ""
"Remarque : la séparation verticale sera augmentée. Cette valeur est la "
"différence d'élévation (12.0) divisée par le nombre total de tours. Le "
-"nombre total de tours est 4.25 : 4 tours complets plus un quart de tour pour"
-" la séparation angulaire.\n"
+"nombre total de tours est 4.25 : 4 tours complets plus un quart de tour pour "
+"la séparation angulaire.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:94
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:99
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:649
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:94
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:648
msgid ""
-"Now that the helix parameters are set we can place the helix on the "
-"layout.\n"
+"Now that the helix parameters are set we can place the helix on the layout.\n"
msgstr ""
"Maintenant que les paramètres d'hélicoïde sont définis, nous pouvons placer "
"l'hélicoïde sur le plan.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:112
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:651
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:650
msgid ""
"Next, join the 2 straight tracks to the helix in the same way we join to a "
"circle.\n"
@@ -13368,8 +11445,8 @@ msgstr ""
"Ensuite, reliez les 2 voies droites à l'hélicoïde juste comme nous "
"connectons les voies à un cercle.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:145
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:653
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:145
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:652
msgid ""
"Notice that the length has increased because we have more than 4 turns in "
"the helix. It is closer to 4.25 turns.\n"
@@ -13377,8 +11454,8 @@ msgstr ""
"Notez que la longueur a augmenté car nous avons plus de 4 tours dans "
"l'hélicoïde. Elle est plus proche de 4,25 tours.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:155
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:655
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:155
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:654
msgid ""
"Next, we assign elevations to the 2 End-Points of the helix. This will "
"determine the grade and separation between the helix coils.\n"
@@ -13386,7 +11463,7 @@ msgstr ""
"Ensuite, nous fixons des élévations aux 2 extrémités de l'hélicoïde. Ce qui "
"détermine la hauteur et la distance entre les virages.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:656
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:655
msgid ""
"Note: we could set the elevations anywhere along the connecting tracks "
"instead. XTrackCAD treats a helix as a single length of track for "
@@ -13396,35 +11473,35 @@ msgstr ""
"voies de connexion. Pour les élévations, XTrackCAD traite une hélicoïde "
"comme une seule longueur de voie.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:176
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:658
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:176
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:657
+#, fuzzy
msgid ""
-"We have set the elevations to 1\" and 13\" to produce a grade of 3.0% with "
-"2.8\" between coils.\n"
+"We have set the elevations to 1 inch and 13 inches to produce a grade of 3.0 "
+"percent with 2.8 inches between coils.\n"
msgstr ""
-"Nous avons réglé les élévations sur 1\"et 13\" pour créer une pente de 3,0% "
-"avec 2,8\"entre les virages.\n"
+"Nous avons réglé les élévations sur 1\"et 13\" pour créer une pente de 3,0 "
+"pour cent avec 2,8\"entre les virages.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:659
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:658
msgid ""
"You can use the <Describe> command to change the number of Turns or the "
"Elevations at either end of the Helix. This will affect the Grade and "
"Vertical Separation.\n"
msgstr ""
"Vous pouvez utiliser la commande<Describe> pour modifier le nombre de "
-"virages ou les élévations à chaque extrémité de l'hélicoïde. Ça affectera la"
-" pente et la séparation verticale.\n"
+"virages ou les élévations à chaque extrémité de l'hélicoïde. Ça affectera la "
+"pente et la séparation verticale.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:184
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:661
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:660
msgid "The helix description can be moved by the <Move Label> command.\n"
msgstr ""
-"Avec la commande<Move Label> l'étiquette de l'hélicoïde peut être "
-"déplacée.\n"
+"Avec la commande<Move Label> l'étiquette de l'hélicoïde peut être déplacée.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhelix.xtr:194
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:664
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:663
msgid ""
"In addition to using the turnout definitions you can create 'Hand Laid "
"Turnout'.\n"
@@ -13432,101 +11509,99 @@ msgstr ""
"En plus d'utiliser les définitions d'aiguillage, vous pouvez créer "
"'aiguillage paramétré à la main'.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:665
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:664
msgid "This is two step process:\n"
msgstr ""
"Il s'agit d'un processus en deux étapes :\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:23
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:667
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:666
msgid "1 - click on the frog and drag away to set the frog angle\n"
msgstr "1 - cliquez sur le cœur et faites glisser pour définir son angle\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:29
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:669
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:29
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:668
msgid ""
" Hint: the further you drag from the frog, the more accurate the angle.\n"
msgstr ""
" Astuce : plus vous vous éloignez du cœur, plus l'angle est précis.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:34
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:671
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:670
msgid "2 - click and drag to set the position of the points\n"
msgstr "2 - cliquez et faites glisser pour définir la position des points\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:42
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:673
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:42
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:672
msgid "We can create Hand Laid Turnouts on curved tracks.\n"
msgstr ""
"Nous pouvons créer des aiguillages paramétrés à la main sur des voies "
"courbes.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:58
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:675
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:58
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:674
msgid "A Hand Laid Turnout is composed of several parts.\n"
msgstr "Un aiguillage de conception libre se compose de plusieurs parties.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:67
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:677
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:67
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:676
msgid "The actual Turnout is a short portion at the points.\n"
msgstr "L'aiguillage actuel à ses aiguilles incomplètes.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:77
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:679
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:77
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:678
msgid "The other parts are various straight and curved segments.\n"
msgstr "Les autres parties sont divers segments droits et courbes.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:81
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:681
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:680
msgid "The new curved turnout is also composed of several segments.\n"
msgstr ""
-"La nouvel aiguillage incurvée est également composée de plusieurs "
-"segments.\n"
+"La nouvel aiguillage incurvée est également composée de plusieurs segments.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmhndld.xtr:107
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:7
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:684
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:107
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:683
msgid "Welcome to the XTrackCAD demonstration.\n"
msgstr "Bienvenue dans la démonstration d'XTrackCAD.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:685
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:684
msgid ""
-"This will show some the features of XTrackCAD in an automated presentation."
-" This window contains a number of controls and a message area (which I hope"
-" you are reading now). \n"
+"This will show some the features of XTrackCAD in an automated presentation. "
+"This window contains a number of controls and a message area (which I hope "
+"you are reading now). \n"
msgstr ""
"Cela vous montrera certaines des fonctionnalités d'XTrackCAD dans une "
"présentation automatisée. Cette fenêtre contient un certain nombre de "
-"contrôles et une zone de message (j'espère que maintenant vous les lisez "
-").\n"
+"contrôles et une zone de message (j'espère que maintenant vous les lisez ).\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:686
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:685
msgid "The controls are:\n"
msgstr "Les contrôles sont :\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:687
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:686
msgid "Step - advances to the next step of the demo.\n"
msgstr "Pas à pas - passe à l'étape suivante de la démo.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:688
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:687
msgid "Next - skips ahead to the next demo.\n"
msgstr "Suivant - passe à la démo suivante.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:689
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:688
msgid "Quit - exits the demo and returns to XTrackCAD.\n"
msgstr "Quitter - quitter la démo et revenir à XTrackCAD.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:690
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:689
msgid "Speed - controls the speed of the demo.\n"
msgstr "Vitesse- contrôle la vitesse de la démo.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:691
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:690
msgid "Click Step now for the next message.\n"
msgstr "Cliquez sur Pas à pas pour passer au message suivant.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:23
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:693
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:692
msgid ""
"If this is the first time you have used the demo you may want to rearrange "
"the windows so the demo window does not obscure the main window.\n"
@@ -13535,7 +11610,7 @@ msgstr ""
"positions de la fenêtre. Assurez-vous que la fenêtre principale n'est pas "
"masquée par la fenêtre de démonstration.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:694
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:693
msgid ""
"You can move the demo window now by dragging on the title bar at the top of "
"the window. I suggest you move it to the top of your screen.\n"
@@ -13544,13 +11619,13 @@ msgstr ""
"glisser la barre de titre. Il est préférable de le déplacer vers le haut de "
"l'écran.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:31
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:696
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:695
msgid ""
"The various controls are disabled when it would be inappropiate to click on "
"them. When the demo is running the Step button is disabled. When the demo "
-"is paused the Step button is enabled and you can click it when you are ready"
-" to view the next part of the demo.\n"
+"is paused the Step button is enabled and you can click it when you are ready "
+"to view the next part of the demo.\n"
msgstr ""
"Les différents contrôles sont désactivés lorsqu'il serait inopportun de "
"cliquer dessus. Lorsque la démo est en cours d'exécution, le bouton Étape "
@@ -13558,22 +11633,22 @@ msgstr ""
"activé et vous pouvez cliquer dessus lorsque vous êtes prêt à afficher la "
"partie suivante de la démonstration.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:697
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:696
msgid "You can click on Quit to return to XTrackCAD at any time.\n"
msgstr ""
"Vous pouvez revenir à XTrackCAD à tout moment en cliquant sur Quitter.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:698
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:697
msgid "You can adjust the speed of the demonstration with the Speed control.\n"
msgstr "Vous pouvez régler la vitesse de la démo avec la commande vitesse.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:60
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:700
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:60
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:699
msgid "The demos are designed to fit within a certain sized window.\n"
msgstr ""
"Les démos sont conçues pour tenir dans une fenêtre d'une certaine taille.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:701
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:700
msgid ""
"For best results, change the size of the main XTrackCAD window so the box "
"shape is completely visible.\n"
@@ -13581,27 +11656,27 @@ msgstr ""
"Pour de meilleurs résultats, modifiez la taille de la fenêtre principale "
"XTrackCAD pour que le rectangle soit complètement visible.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:702
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:701
msgid "You can do this by clicking and dragging on a corner of the window.\n"
msgstr ""
"Vous pouvez le faire en faisant glisser le coin inférieur droit de la "
"fenêtre.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:67
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmintro.xtr:72
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:705
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:67
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:704
msgid "This is the end of the introductory demo.\n"
msgstr "C'est la fin de la démonstration d'introduction.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:706
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:705
msgid ""
"Please click Step for the next demo or click Quit to return to XTrackCAD.\n"
msgstr ""
"Veuillez cliquer sur étape suivante pour la prochaine démonstration ou "
"quitter pour revenir à XTrackCAD.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjcir.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:708
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:707
msgid ""
"You can also join to and from circles. This will change the circles to "
"curves.\n"
@@ -13609,12 +11684,12 @@ msgstr ""
"Vous pouvez également connecter des voies avec des cercles de voie. Cela "
"transforme les cercles en arcs.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:709
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:708
msgid "In this example we will join two circles.\n"
msgstr "Dans cet exemple, nous allons connecter deux cercles.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjcir.xtr:24
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:711
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:710
msgid ""
"Here we've selected points on the two circles. The direction of the "
"connections (whether clockwise or counter clockwise) is controlled by where "
@@ -13624,29 +11699,29 @@ msgstr ""
"connexions (dans le sens horaire ou antihoraire) est déterminée par les "
"emplacements sur les cercles que vous avez sélectionnés.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjcir.xtr:133
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjcir.xtr:152
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:714
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:133
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:152
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:713
msgid "Now let's try a cross connection.\n"
msgstr "Essayons maintenant une connexion croisée.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjcir.xtr:246
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:716
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:246
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:715
msgid ""
"Note that the connection is from different 'ends' of the circle than in the "
"last example.\n"
msgstr ""
-"Notez que la connexion provient d'«extrémités» différentes du cercle qu'avec"
-" le dernier exemple.\n"
+"Notez que la connexion provient d'«extrémités» différentes du cercle qu'avec "
+"le dernier exemple.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnabut.xtr:22
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:718
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:22
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:717
msgid "This examples shows joining tracks whose End-Points are aligned.\n"
msgstr ""
"Cet exemple montre comment joindre des voies dont les extrémités sont "
"alignées.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:719
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:718
msgid ""
"Note the 2 pairs of tracks have End-Points that are close and aligned but "
"not connected.\n"
@@ -13654,45 +11729,46 @@ msgstr ""
"Notez que les 2 paires de voies ont des extrémités qui sont proches et "
"alignées mais non connectées.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnabut.xtr:30
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:721
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:720
msgid "The first case joins the curve and straight track.\n"
msgstr ""
"Dans le premier cas, une voie courbe et une voie droite sont connectées.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnabut.xtr:40
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:723
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:722
msgid "The second case will join the two straight tracks.\n"
msgstr "Dans le second cas, deux voies droites sont connectées.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnabut.xtr:50
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:725
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:724
msgid "Note that the two straight tracks were combined to form one track.\n"
msgstr "Notez que les deux voies droites ont été fusionnées en une voie.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnabut.xtr:55
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjncs.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:728
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:55
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:727
msgid ""
"The <Join> command can also join straight and curved tracks (in either "
"order).\n"
msgstr ""
-"La commande <Join> peut être utilisée pour connecter des voies droites et courbes (dans n'importe quel ordre).\n"
+"La commande <Join> peut être utilisée pour connecter des voies droites et "
+"courbes (dans n'importe quel ordre).\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:729
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:728
msgid "We will enable Cornu easements\n"
msgstr "Nous activerons les courbes de transition Cornu.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjncs.xtr:32
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:731
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:730
msgid "A connecting cornu track is drawn between the two tracks.\n"
msgstr ""
"Une cornu de raccord de voie est dessiné entre les deux voies.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjncs.xtr:41
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:733
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:41
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:732
msgid ""
"Notice that the curved track is extended as the connection point moves past "
"the End-Point.\n"
@@ -13700,30 +11776,31 @@ msgstr ""
"Notez que la voie incurvée est étendue lorsque le point de connexion passe "
"au-delà du point de fin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjncs.xtr:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:735
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:734
msgid ""
"Here the connection makes the curved track wrap around. This is not a "
"useful shape, there is a discontinuity at the end. \n"
msgstr ""
-"Ici, une boucle est créée en se connectant. Ce n'est pas une forme raisonnable, car il y a un nœud à la fin.\n"
+"Ici, une boucle est créée en se connectant. Ce n'est pas une forme "
+"raisonnable, car il y a un nœud à la fin.\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:736
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:735
msgid "Adjusting the end point will fix it. \n"
msgstr ""
"Le réglage du point de fin le corrigera.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjncs.xtr:64
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnmove.xtr:18
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:739
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:64
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:18
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:738
msgid "The <Join> command can move one group of tracks to join with another.\n"
msgstr ""
"La commande <Join> peut être utilisée pour déplacer des groupes de voies "
"pour les connecter à d'autres.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:740
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:739
msgid ""
"First <Select> the tracks you want to move with Ctrl so that they are both "
"selected.\n"
@@ -13731,20 +11808,20 @@ msgstr ""
"D'abord <Select>les voies que vous voulez déplacer avec Ctrl afin qu'elles "
"soient toutes les deux sélectionnées.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnmove.xtr:36
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:742
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:36
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:741
msgid "Click <Join> and Shift-Left-Click on the two End-Points.\n"
msgstr ""
"Cliquez sur <Join> puis maintenez la touche Maj enfoncée + clic gauche sur "
"les deux points d'extrémité.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnmove.xtr:51
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:744
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:743
msgid "The selected tracks are moved into position.\n"
msgstr "Les voies sélectionnées sont déplacées vers la position.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:746
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:745
msgid ""
"Two straight tracks can be joined by selecting the two endoints. The "
"selected endpoints will be those closest to the cursor when the track is "
@@ -13754,19 +11831,20 @@ msgstr ""
"extrémités. Les points de fin sélectionnés seront ceux les plus proches du "
"curseur lorsque la voie est sélectionnée.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:747
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:746
msgid "First, we will select Easements None and then select Join\n"
msgstr ""
-"Tout d'abord, nous désélectionnerons \"Courbe de transition\", puis sélectionnerons Raccorder\n"
+"Tout d'abord, nous désélectionnerons \"Courbe de transition\", puis "
+"sélectionnerons Raccorder\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:26
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:749
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:748
msgid "Now we select two points on the tracks\n"
msgstr "Maintenant, nous sélectionnons deux points sur les voies\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:36
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:751
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:36
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:750
msgid ""
"A connecting track is drawn between the two tracks. Notice how it moves as "
"the cursor is dragged along the second track.\n"
@@ -13774,16 +11852,16 @@ msgstr ""
"Une raccord de voie est dessiné entre les deux voies. Observez comment il "
"bouge lorsque le curseur se déplace le long de la deuxième voie.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:47
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:753
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:752
msgid ""
"Note that two tracks are extended if you move past the end of the track.\n"
msgstr ""
"Notez que deux voies sont étendues si vous vous déplacez le pointeur de la "
"souris au-delà de la fin de voie.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:55
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:755
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:55
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:754
msgid ""
"Notice what happens if you drag past the intersection points of the two "
"tracks.\n"
@@ -13791,110 +11869,112 @@ msgstr ""
"Remarquez ce qui se passe si vous glissez au-delà des points d'intersection "
"des deux voies.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:757
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:756
msgid "This is probably not a very useful thing to do.\n"
msgstr "Ce n'est probablement pas une solution sensée.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:70
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:90
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:760
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:70
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:90
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:759
msgid "Now we will do this with Cornu Easements \n"
msgstr ""
"Maintenant, nous allons le faire avec une Courbe de transition Cornu\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:761
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:760
msgid "First, we will select Easements Cornu and then select Join\n"
msgstr ""
"Tout d'abord, nous sélectionnerons \"Courbe de transition Cornu\", puis "
"sélectionnerons Raccorder\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:102
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:763
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:102
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:762
msgid "Now we again select two points on the tracks\n"
msgstr ""
"Maintenant, nous sélectionnons à nouveau deux points sur les voies\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:112
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:765
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:764
msgid ""
"A connecting cornu is drawn between the two tracks. Notice how it behaves "
"as the cursor is dragged along the second track.\n"
msgstr ""
-"Une cornu de raccord est dessinée entre les deux voies. Observez comment elle bouge lorsque le curseur se déplace le long de la deuxième voie.\n"
+"Une cornu de raccord est dessinée entre les deux voies. Observez comment "
+"elle bouge lorsque le curseur se déplace le long de la deuxième voie.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:123
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:767
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:123
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:766
msgid ""
"Note that either tracks can be extended if you move past the end of it.\n"
msgstr ""
-"Notez que deux voies sont étendues si vous vous déplacez le pointeur de la souris au-delà de la fin de voie.\n"
+"Notez que deux voies sont étendues si vous vous déplacez le pointeur de la "
+"souris au-delà de la fin de voie.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:131
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:769
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:768
msgid ""
"Notice this time what happens if you drag past the intersection points of "
"the two tracks.\n"
msgstr ""
-"Remarquez ce qui se passe si vous glissez au-delà des points d'intersection des deux voies.\n"
+"Remarquez ce qui se passe si vous glissez au-delà des points d'intersection "
+"des deux voies.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:139
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:771
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:139
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:770
msgid "This is more useful because you can move the other end as well.\n"
msgstr ""
"C'est plus utile car vous pouvez également déplacer l'autre extrémité.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:150
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:773
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:150
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:772
msgid "You can add a pin to constrain the Cornu Curve to pass through it.\n"
msgstr ""
"Vous pouvez ajouter une pin pour contraindre la courbe de Cornu à la "
"traverser.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjnss.xtr:161
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:776
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:161
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:775
msgid "You can connect from any track to a turntable\n"
msgstr ""
"Vous pouvez vous connecter depuis n'importe quelle voie vers un pont "
"tournant\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:777
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:776
msgid "With a Cornu Easement you can have a turntable as the first point.\n"
msgstr ""
"Avec une courbe de transition Cornu, vous pouvez avoir un pont tournant "
"comme premier point de connexion.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:38
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:779
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:778
msgid ""
-"You cannot place the connecting track too close to an existing stall track."
-" How close you can get is controlled by the Turntable Angle on the Setup "
+"You cannot place the connecting track too close to an existing stall track. "
+"How close you can get is controlled by the Turntable Angle on the Setup "
"dialog.\n"
msgstr ""
"Vous ne pouvez pas placer une connection de voie trop près d'une voie de "
"service existante. La distance que vous pouvez obtenir est contrôlée par "
-"l'angle du pont tournant dans la boîte de dialogue "
-"\"Options|Préférences\".\n"
+"l'angle du pont tournant dans la boîte de dialogue \"Options|Préférences\".\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:780
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:779
msgid "In this example it is set to 15 degrees.\n"
msgstr "Dans cet exemple, il est réglé sur 15 degrés.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:782
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:781
msgid "You can drag the connecting point all round the turntable.\n"
msgstr ""
"Vous pouvez faire glisser le point de connexion tout autour du pont "
"tournant.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:103
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:784
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:103
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:783
msgid ""
"As you drag away from the turntable a straight track will be drawn to the "
"cursor postion and a curve will be drawn from the cursor to the connecting "
@@ -13904,32 +11984,32 @@ msgstr ""
"vers la position du curseur et une courbe est dessinée entre le curseur et "
"la voie de connexion.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:111
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:786
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:111
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:785
msgid ""
"Now the cursor will be moved within the turntable, but the end stays on the "
"edge of the well.\n"
msgstr ""
-"Maintenant, le pointeur de la souris est déplacé à l'intérieur du pont tournant, mais la bout reste sur le bord de la fosse.\n"
+"Maintenant, le pointeur de la souris est déplacé à l'intérieur du pont "
+"tournant, mais la bout reste sur le bord de la fosse.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:161
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:788
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:161
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:787
msgid "All done.\n"
msgstr "Terminé.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmjntt.xtr:169
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:38
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:791
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:169
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:790
msgid ""
-"The Draw Commands are used to draw straight and curved lines on the "
-"layout.\n"
+"The Draw Commands are used to draw straight and curved lines on the layout.\n"
msgstr ""
"Les commandes de dessin sont utilisées pour dessiner des lignes droites et "
"courbes sur le plan.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:46
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:793
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:46
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:792
msgid ""
"Lines are drawn by clicking at the starting postion and dragging to the "
"final position.\n"
@@ -13937,29 +12017,30 @@ msgstr ""
"Les lignes sont tracées en cliquant sur le point de départ, puis en créant "
"le point de fin supplémentaire en faisant glisser.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:794
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:793
msgid ""
-"By default, the new line will snap to existing objects. Hold down the <Alt>"
-" keys to prevent this from happening.\n"
+"By default, the new line will snap to existing objects. Hold down the <Alt> "
+"keys to prevent this from happening.\n"
msgstr ""
"Par défaut, la nouvelle ligne s'accrochera aux objets existants. Maintenez "
"les touches <Alt> enfoncées pour éviter que cela ne se produise. \n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:91
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:796
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:795
msgid "You also draw in various colors and line widths.\n"
msgstr ""
"Vous pouvez également dessiner avec différentes couleurs et épaisseurs de "
"ligne.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:110
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:798
-msgid "Like Curved Tracks, Curved Lines can be drawn by a variety of methods.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:110
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:797
+msgid ""
+"Like Curved Tracks, Curved Lines can be drawn by a variety of methods.\n"
msgstr ""
"Comme les voies courbes, les lignes courbes peuvent être tracées de "
"différentes façons.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:799
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:798
msgid ""
"Here we will draw a Curve by dragging from one End-Point to the other to "
"define the chord of the Curve. Then we will drag from the center to shape "
@@ -13969,13 +12050,13 @@ msgstr ""
"l’autre pour régler l’accord de la courbe. Ensuite, nous allons faire "
"glisser du centre pour définir la forme de la courbe.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:185
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:801
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:185
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:800
msgid "Boxes are useful for drawing rectangular shapes.\n"
msgstr "Les boîtes sont utiles pour dessiner des formes rectangulaires.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:195
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:803
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:195
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:802
msgid ""
"Circles can be drawn by clicking on the center or edge and dragging to set "
"the radius.\n"
@@ -13983,34 +12064,33 @@ msgstr ""
"Les cercles sont dessinés en cliquant sur le bord ou le point central, puis "
"on définit le rayon en faisant glisser.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:804
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:803
msgid "Here we will drag from the edge to the Center.\n"
msgstr "Ici, nous allons faire glisser du bord vers le centre.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:205
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:806
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:805
msgid "Lines and Shapes can be deleted by Selecting and Deleting.\n"
msgstr ""
"Les lignes et les formes peuvent être supprimées par une sélection et une "
"suppression.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines.xtr:228
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:91
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:809
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:228
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:808
msgid "We also draw Polylines and filled shapes.\n"
msgstr "Nous pouvons également créer des polylignes et des formes remplies.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:98
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:811
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:810
msgid ""
-"A Polyline is drawn by dragging to place each of the point in the "
-"Polyline.\n"
+"A Polyline is drawn by dragging to place each of the point in the Polyline.\n"
msgstr ""
"Une polyligne est dessinée en faisant glisser le curseur pour placer chacun "
"de ses points.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:125
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:813
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:125
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:812
msgid ""
"To finish off the Polyline press the <Space> key or choose another drawing "
"type.\n"
@@ -14018,22 +12098,22 @@ msgstr ""
"Pour terminer la polyligne, appuyez sur la touche <Space> ou choisissez un "
"autre type de dessin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:132
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:815
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:814
msgid "A filled Polygon is drawn in the same way.\n"
msgstr ""
"Un polygone plein est dessiné de la même manière\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:158
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:817
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:816
msgid "When you are finished, press the <Space> key to complete the polygon.\n"
msgstr ""
"Lorsque vous avez terminé, appuyez sur la touche<Space> pour terminer le "
"polygone.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:165
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:819
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:818
msgid ""
"You can use the Above and Below Commands to move lines and shapes to the "
"front or back of the drawing.\n"
@@ -14042,25 +12122,27 @@ msgstr ""
"dessous\" pour déplacer des lignes et des formes vers l'avant ou l'arrière "
"du dessin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:182
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:821
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:820
msgid "Filled Boxes and Circles work the same as line Boxes and Circles.\n"
msgstr ""
"Les boîtes et cercles pleins fonctionnent comme les boîtes et cercles "
"vides.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmlines2.xtr:199
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:8
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:824
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:199
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:8
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:823
msgid ""
"In the drawing area of the main window you can see an hollow upwards arrow "
"which represents the mouse cursor. In this demo the mouse will move about "
"to show you the actions of different commands.\n"
msgstr ""
-"Dans la zone de dessin de la fenêtre principale, vous verrez une flèche vide à la place du pointeur de souris. Cette démo la déplacera pour vous montrer comment fonctionnent les différentes commandes.\n"
+"Dans la zone de dessin de la fenêtre principale, vous verrez une flèche vide "
+"à la place du pointeur de souris. Cette démo la déplacera pour vous montrer "
+"comment fonctionnent les différentes commandes.\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:825
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:824
msgid ""
"The hollow arrow represents the mouse cursor without a mouse button being "
"pressed.\n"
@@ -14068,8 +12150,8 @@ msgstr ""
"La flèche vide correspond au pointeur de la souris sans appuyer sur le "
"bouton.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:827
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:826
msgid ""
"When the left mouse button would be pressed, the mouse cursor appears to "
"flash and the hollow arrow is replaced by a solid left-pointing red arrow "
@@ -14079,7 +12161,7 @@ msgstr ""
"semble clignoter et la flèche creuse est remplacée par une flèche rouge "
"pointant vers la gauche tant que le bouton est enfoncé.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:828
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:827
msgid ""
"Note: these color changes occur only during the demo to simulate mouse "
"button presses.\n"
@@ -14087,15 +12169,16 @@ msgstr ""
"Remarque : ces changements de couleur ne se produisent que pendant la "
"démonstration pour simuler des frappes sur les boutons de la souris.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:24
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:830
-msgid "Moving the mouse while a mouse button is pressed is called 'dragging'.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:829
+msgid ""
+"Moving the mouse while a mouse button is pressed is called 'dragging'.\n"
msgstr ""
"Déplacer la souris en maintenant le bouton de la souris enfoncé s'appelle "
"«glisser».\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:32
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:832
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:831
msgid ""
"When the left mouse button is released, the mouse cursor flashes and the "
"hollow up black arrow is restored.\n"
@@ -14103,52 +12186,55 @@ msgstr ""
"Lorsque le bouton gauche de la souris est relâché, le pointeur de la souris "
"clignote et la flèche noire vide est restaurée.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:40
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:834
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:833
msgid ""
"Dragging with the right button is simulated by a blue right-facing solid "
"cursor.\n"
msgstr ""
-"Le glissement avec le bouton droit est représenté par un curseur bleu plein pointé vers la droite.\n"
+"Le glissement avec le bouton droit est représenté par un curseur bleu plein "
+"pointé vers la droite.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:49
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:836
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:835
msgid "Release Right Click\n"
msgstr "Relâcher le clic droit\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:57
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:62
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:839
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:57
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:62
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:838
msgid "Sometimes the Shift key is held down while using the mouse \n"
msgstr ""
"Parfois, la touche Maj est maintenue enfoncée pendant l'utilisation de la "
"souris \n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:840
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:839
msgid ""
"This is indicated by an outlined arrow with the letter S near the arrow.\n"
msgstr ""
"Cette situation est indiquée par une flèche encadrée avec la lettre S près "
"de la flèche.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:71
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:842
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:71
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:841
msgid ""
"The left mouse button is held down with the Shift and dragged for a Left-"
"Shift-Drag. \n"
msgstr ""
-"Le bouton gauche de la souris est maintenu enfoncé avec la touche Maj et déplacé pour un glissement vers la gauche.\n"
+"Le bouton gauche de la souris est maintenu enfoncé avec la touche Maj et "
+"déplacé pour un glissement vers la gauche.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:86
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:844
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:843
msgid "Sometimes the Control key is held down while using the mouse. \n"
msgstr ""
-"Parfois, la touche Ctrl est maintenue enfoncée lorsque vous utilisez la souris.\n"
+"Parfois, la touche Ctrl est maintenue enfoncée lorsque vous utilisez la "
+"souris.\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:845
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:844
msgid ""
"This is indicated with an upward filled arrow head with the letter C near "
"the arrow \n"
@@ -14156,16 +12242,18 @@ msgstr ""
"C'est indiqué par une tête de flèche pleine vers le haut avec la lettre C "
"près de la flèche\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:98
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:847
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:846
msgid ""
-"If while the Control is held the Left mouse button is held down it is a "
-"Ctrl-Move and a Ctrl-Left-Drag. \n"
+"If while the Control is held the Left mouse button is held down it is a Ctrl-"
+"Move and a Ctrl-Left-Drag. \n"
msgstr ""
-"Si le bouton gauche de la souris est maintenu enfoncé pendant que le contrôle est effectué, il s'agit d'un Ctrl-Déplacer et d'un Ctrl-Gauche-Glisser. \n"
+"Si le bouton gauche de la souris est maintenu enfoncé pendant que le "
+"contrôle est effectué, il s'agit d'un Ctrl-Déplacer et d'un Ctrl-Gauche-"
+"Glisser. \n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:848
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:847
msgid ""
"This is indicated by an an left-facing open-headed arrow with the letter C "
"near it.\n"
@@ -14173,14 +12261,14 @@ msgstr ""
"Ceci est indiqué par une flèche à tête ouverte tournée vers la gauche, avec "
"la lettre C à côté.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:114
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:850
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:114
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:849
msgid "You can also use the Control key with the Right mouse button. \n"
msgstr ""
-"Vous pouvez également utiliser la touche Contrôle avec le bouton droit de la"
-" souris.\n"
+"Vous pouvez également utiliser la touche Contrôle avec le bouton droit de la "
+"souris.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:851
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:850
msgid ""
"This is indicated with a right-facing filled arrow with an open arrow head "
"and the letter C near the arrow \n"
@@ -14188,9 +12276,9 @@ msgstr ""
"C'est indiqué par une flèche pleine orienté vers la droite avec une tête de "
"flèche ouverte et la lettre C près de la flèche\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmouse.xtr:130
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:23
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:854
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:130
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:853
msgid ""
"The main drawing area shows a portion of total layout. You can zoom in or "
"zoom out by choosing 'Zoom In' or 'Zoom Out' in the 'Edit' menu, by using "
@@ -14200,35 +12288,37 @@ msgstr ""
"La zone de dessin principale montre une partie du plan total. Vous pouvez "
"zoomer ou dézoomer en choisissant «Zoom avant» ou «Zoom arrière» dans le "
"menu «Affichage», en utilisant les boutons Zoom de la barre d'outils ou en "
-"utilisant les touches «Page suivante» et «Page précédente», ou la molette de"
-" la souris.\n"
+"utilisant les touches «Page suivante» et «Page précédente», ou la molette de "
+"la souris.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:855
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:854
msgid "You can see the entire layout in the Map window.\n"
msgstr ""
-"Vous pouvez voir l'intégralité du plan de voie dans la fenêtre de la "
-"carte.\n"
+"Vous pouvez voir l'intégralité du plan de voie dans la fenêtre de la carte.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:33
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:857
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:33
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:856
msgid "As you Zoom Out tracks are drawn with one line instead of two.\n"
msgstr ""
"Lorsque vous effectuez un zoom arrière, les voies sont dessinées avec une "
"voie au lieu de deux.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:49
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:860
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:49
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:859
msgid ""
-"You can change what portion of the layout is shown by using the 'Map' window"
-" which shows a compressed version of the entire layout. A hilighted area of"
-" the 'Map' (in blue highlight) shows what portion of the layout is displayed"
-" in the main drawing area.\n"
+"You can change what portion of the layout is shown by using the 'Map' window "
+"which shows a compressed version of the entire layout. A hilighted area of "
+"the 'Map' (in blue highlight) shows what portion of the layout is displayed "
+"in the main drawing area.\n"
msgstr ""
-"Vous pouvez modifier une partie du plan affichée en utilisant la fenêtre \"Carte\" qui montre une version compressée du plan entier. Une zone éclairée de la «Carte» (en surbrillance bleue) montre quelle partie du plan est affichée dans la zone de dessin principale.\n"
+"Vous pouvez modifier une partie du plan affichée en utilisant la fenêtre "
+"\"Carte\" qui montre une version compressée du plan entier. Une zone "
+"éclairée de la «Carte» (en surbrillance bleue) montre quelle partie du plan "
+"est affichée dans la zone de dessin principale.\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:861
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:860
msgid ""
"You can Left-Drag the hilighted area in the Map window to change the "
"displayed portion of the layout.\n"
@@ -14236,8 +12326,8 @@ msgstr ""
"Vous pouvez modifier la zone affichée sur la fenêtre de navigation en "
"faisant glisser la zone en surbrillance dans la fenêtre du plan.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:863
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:862
msgid ""
"You can also Right-Drag on the Map window to set the scale and position of "
"the Main window.\n"
@@ -14246,51 +12336,80 @@ msgstr ""
"navigation pour déterminer l'échelle et la position du dessin dans la "
"fenêtre principale.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmmovabt.xtr:72
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmnotes.xtr:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:866
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:72
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:865
+#, fuzzy
msgid ""
-"The <Note> command lets you attach notes to various spots on the layout.\n"
+"The <Text Note> command lets you attach notes to various spots on the "
+"layout.\n"
msgstr ""
"La commande<Note> permet de placer des notes à différents points du plan de "
"tracé.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmnotes.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:868
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:867
+#, fuzzy
msgid ""
-"When you place a note, the Note editor window is displayed which lets you "
-"enter the note.\n"
+"When you place a note, the Text Note editor window is displayed which lets "
+"you enter the note.\n"
msgstr ""
"Lorsque vous créez une note, l'éditeur de notes s'ouvre, ce qui vous permet "
"de saisir un texte.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmnotes.xtr:22
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:870
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:869
+#, fuzzy
msgid ""
-"If you click on a note in <Describe> mode the Note editor displays the "
-"note.\n"
+"If you click on a note in <Describe> mode the Text Note editor displays the "
+"note allowing you to modify the note..\n"
msgstr "Si vous cliquez sur une note en mode <Describe>, l'éditeur apparaît.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmnotes.xtr:39
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:872
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:871
+#, fuzzy
+msgid "You can also create a reference to a file or web link.\n"
+msgstr "Vous pouvez également les dessiner dans différentes orientations.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:872
+msgid ""
+"Choose the type of link by clicking on the down arrow beside the Note "
+"commmand.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:874
+msgid ""
+"This is a File Note. You can specify the Title of the File and its "
+"location\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:64
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:876
+msgid ""
+"This is a Web Link Note. You can specify the Title of the Link and its URL\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:878
msgid "This is the end of the XTrackCAD Demos.\n"
msgstr "C'est la fin des démos XTrackCAD.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:873
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:879
msgid "Click Step to return to XTrackCAD.\n"
msgstr "Cliquez sur Pas à Pas pour revenir à XTrackCAD.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:874
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:880
msgid "Thanks for watching.\n"
msgstr "Merci d'avoir regardé.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:32
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:876
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:882
msgid "This example shows how to create parallel tracks.\n"
msgstr "Cet exemple montre comment créer des voies parallèles.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:37
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:878
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:884
msgid ""
"The separation is set in the <Parallel Separation> window. You should set "
"this value before you begin to select tracks.\n"
@@ -14298,37 +12417,37 @@ msgstr ""
"La séparation est définie dans la fenêtre <Parallel Separation>. Vous devez "
"définir cette valeur avant de commencer à sélectionner des voies.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:49
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:880
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:886
msgid ""
"You control which side the parallel track will be on by moving the cursor "
"from one side of the track centerline to the other.\n"
msgstr ""
-"Vous pouvez contrôler de quel côté la voie parallèle sera créée en déplaçant"
-" le curseur d'un côté de l'axe de la voie à l'autre.\n"
+"Vous pouvez contrôler de quel côté la voie parallèle sera créée en déplaçant "
+"le curseur d'un côté de l'axe de la voie à l'autre.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:81
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:882
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:888
msgid "When you release the mouse button the new parallel track is created.\n"
msgstr ""
"Dès que vous relâchez le bouton de la souris, la voie parallèle est créée.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:883
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:889
msgid ""
-"Note that the <Parallel> command remains active after you created the track."
-" This is controlled by the Sticky dialog in the Options menu.\n"
+"Note that the <Parallel> command remains active after you created the "
+"track. This is controlled by the Sticky dialog in the Options menu.\n"
msgstr ""
"Notez que la commande <Parallel> reste active après la création de la voie. "
"Ceci est contrôlé par la boîte de dialogue \"Commandes collantes\" dans le "
"menu 'Options>Collant'.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:92
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:885
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:92
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:891
msgid "You cannot create a track parallel to a turnout.\n"
msgstr "Vous ne pouvez pas créer une voie parallèle à un aiguillage.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:172
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:887
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:172
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:893
msgid ""
"Note that the new curved track is automatically connected to the short "
"parallel track.\n"
@@ -14336,54 +12455,57 @@ msgstr ""
"Notez que la nouvelle voie incurvée est automatiquement connectée à la voie "
"parallèle courte.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmparall.xtr:180
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:19
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:890
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:19
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:896
msgid ""
"Polylines and polygons (created with the <Draw> command) can be modified by "
"dragging on their corners or edges.\n"
msgstr ""
-"Les polylignes et les polygones (créés avec la commande <Draw>) peuvent être modifiés en faisant glisser leurs angles ou leurs bords.\n"
+"Les polylignes et les polygones (créés avec la commande <Draw>) peuvent être "
+"modifiés en faisant glisser leurs angles ou leurs bords.\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:891
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:897
msgid "First Left Click on the shape you want to modify.\n"
msgstr ""
-"En premier lieu, faites un Clic gauche sur la forme que vous souhaitez modifier.\n"
+"En premier lieu, faites un Clic gauche sur la forme que vous souhaitez "
+"modifier.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:29
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:893
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:29
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:899
msgid "Then drag on the point you want to move\n"
msgstr "Faites ensuite glisser le point que vous souhaitez déplacer\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:39
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:895
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:901
msgid "And finally press the Space bar to finish the change\n"
msgstr ""
"Et enfin, appuyez sur la barre espace pour terminer la modification\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:54
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:897
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:903
msgid "If you select the middle of an Edge a new Corner is created.\n"
-msgstr "Si vous sélectionnez le centre d'une arête, un nouveau coin est créé.\n"
+msgstr ""
+"Si vous sélectionnez le centre d'une arête, un nouveau coin est créé.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:72
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:899
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:905
msgid "To delete a corner, select and then press Delete or Backspace\n"
msgstr ""
"Pour supprimer un coin, sélectionnez et appuyez ensuite sur Supprimer ou "
"Retour arrière\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:98
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:901
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:907
msgid "But you cannot have a Poly-shape with less than 3 sides.\n"
msgstr "Mais vous ne pouvez pas avoir une polyforme avec moins de 3 côtés.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmplymod.xtr:126
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:126
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:904
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:126
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:126
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:910
msgid ""
"To use the <Profile> command you first need to define Elevations on your "
"layout.\n"
@@ -14391,36 +12513,35 @@ msgstr ""
"Pour utiliser la commande<Profile>, vous devez d'abord définir des "
"élévations sur votre plan.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:905
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:911
msgid "In this example we'll use the Elevations defined in the last example.\n"
msgstr ""
"Dans cet exemple, nous utiliserons les élévations définies dans le dernier "
"exemple.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:906
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:912
msgid "You can move or resize the Profile dialog now if you want.\n"
msgstr "La fenêtre du profil d'élévation peut maintenant être agrandie.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:135
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:908
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:135
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:914
msgid ""
-"To show the Profile you need to select a Path on the tracks of your "
-"layout.\n"
+"To show the Profile you need to select a Path on the tracks of your layout.\n"
msgstr ""
"Pour afficher le profil d'élévation, vous devez sélectionner un itinéraire "
"sur votre plan.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:909
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:915
msgid "Select a Defined Elevation point (marked by Gold dots).\n"
msgstr ""
"Sélectionnez un point d'élévation défini (marqué par des points dorés).\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:910
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:916
msgid "We will start with the right end of the siding.\n"
msgstr "Nous commençons à l'extrémité droite de la voie d'évitement.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:148
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:912
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:918
msgid ""
"The second Point is at the left end of the siding. The Path will be drawn "
"in Purple on the layout.\n"
@@ -14428,13 +12549,13 @@ msgstr ""
"Le deuxième point est à l'extrémité gauche du revêtement. Le chemin sera "
"indiqué en violet sur le plan.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:160
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:914
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:160
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:920
msgid "Now select the end of one of the Branches\n"
msgstr "Maintenant, sélectionnez le bout d'une des branches.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:169
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:916
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:169
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:922
msgid ""
"The Profile line is drawn in Red. This indicates that there some turnouts "
"on that section of the Path which have more than 2 connections.\n"
@@ -14443,7 +12564,7 @@ msgstr ""
"aiguillages sur cette section du chemin d'accès qui ont plus de 2 "
"connexions.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:917
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:923
msgid ""
"The grade on this part of the Path is the average and may be affected by "
"other Elevations, such the end of the lower branch.\n"
@@ -14452,13 +12573,13 @@ msgstr ""
"influencée par d'autres élévations telles que l'extrémité de la branche "
"inférieure.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:178
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:919
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:178
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:925
msgid "Now try to select the End-Point of the other branch.\n"
msgstr ""
"Essayez maintenant de sélectionner le point de fin de l'autre branche.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:920
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:926
msgid ""
"You will get an error message because there is no route to one of the ends "
"of the existing Path.\n"
@@ -14466,8 +12587,8 @@ msgstr ""
"Vous recevrez un message d'erreur car il n'y a pas de route vers l'un des "
"points de fin du chemin existant.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:187
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:922
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:187
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:928
msgid ""
"In this case remove the last part of the Path by clicking on current end of "
"the Path and reselect the End-Point.\n"
@@ -14475,13 +12596,13 @@ msgstr ""
"Dans ce cas, supprimez la dernière partie du chemin en cliquant sur "
"l'extrémité actuelle du chemin et sélectionnez à nouveau le point de fin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:198
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:924
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:198
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:930
msgid "Notice that the Grade has changed on the Profile.\n"
msgstr "Notez que la pente a changé dans le profil d'élévation.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:205
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:926
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:932
msgid ""
"You can Ignore End-Points on the Path by using Shift-Right-Click to display "
"the Profile Options popup menu and chosing Ignore.\n"
@@ -14489,7 +12610,7 @@ msgstr ""
"Vous pouvez ignorer les points de fin sur le tracé en utilisant Maj+clic "
"droit. Dans les options du profil d'élévation, choisissez \"Ignorer\".\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:927
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:933
msgid ""
"Note: We can't show the menu in demo mode but we will show the effect of a "
"Shift Right Click and selecting ignore. We will be Ignoring the End-Point "
@@ -14500,14 +12621,14 @@ msgstr ""
"ignorerons le point de fin de l'aiguillage qui ne se trouve pas sur le "
"chemin.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:217
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:929
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:217
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:935
msgid "Notice that part of the Profile line is redrawn in Blue.\n"
msgstr ""
"Notez qu'une partie de la ligne de profil d'élévation est redessinée en "
"bleu.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:930
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:936
msgid ""
"Also, the Computed Elevations and Grade marker on the right side of the "
"layout have been updated.\n"
@@ -14515,18 +12636,17 @@ msgstr ""
"En outre, les calculs de marqueurs d'élévations et de niveaux situés à "
"droite du plan ont été mis à jour.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:225
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:932
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:938
msgid ""
"You can set additional Defined Elevation points using the Profile Options "
-"popup menu. These points are added to the Profile if they are on the "
-"Path.\n"
+"popup menu. These points are added to the Profile if they are on the Path.\n"
msgstr ""
"Vous pouvez définir des points d'élévation supplémentaires à l'aide du menu "
"contextuel Elévation. S'ils se trouvent sur le chemin, ces points sont "
"ajoutés au profil.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:933
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:939
msgid ""
"We do this by Shift Right Click to display the Profile Options popup menu "
"and selecting Define.\n"
@@ -14535,8 +12655,8 @@ msgstr ""
"menu contextuel \"Élévation\" et sélectionnez l'élément de voie puis "
"\"Défini\".\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:237
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:935
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:237
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:941
msgid ""
"We've just added a Defined Elevation point to the middle of the lower "
"branch. Notice the addition on the Profile dialog.\n"
@@ -14544,24 +12664,26 @@ msgstr ""
"Nous venons d'ajouter un point d'élévation définie au milieu de la branche "
"inférieure. Notez l'ajout dans la boîte de dialogue Profil.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:246
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:937
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:246
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:943
msgid ""
-"For the siding we defined a Station name but it's not on the Path, since the"
-" Path takes the shortest distance between points.\n"
+"For the siding we defined a Station name but it's not on the Path, since the "
+"Path takes the shortest distance between points.\n"
msgstr ""
-"Pour le revêtement, on a attribué un nom de station. Ce n'est pas sur le chemin car un chemin utilise toujours le chemin le plus court entre les points.\n"
+"Pour le revêtement, on a attribué un nom de station. Ce n'est pas sur le "
+"chemin car un chemin utilise toujours le chemin le plus court entre les "
+"points.\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:938
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:944
msgid ""
"We can Ignore one of the End-Points on a Turnout to force the Path to take "
"the other route.\n"
msgstr ""
-"En ignorant l'un des points d'extrémité d'un aiguillage, nous pouvons forcer"
-" le chemin à emprunter l'autre route.\n"
+"En ignorant l'un des points d'extrémité d'un aiguillage, nous pouvons forcer "
+"le chemin à emprunter l'autre route.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:939
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:945
msgid ""
"Again we use Shift-Right-Click to display the Profile Options menu and "
"select ignore.\n"
@@ -14569,18 +12691,18 @@ msgstr ""
"Encore une fois, nous utilisons Maj-Clic-Droit pour afficher les options du "
"menu profil puis sélectionner Ignorer.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:258
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:941
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:947
msgid "Now remove the First section of the Path,\n"
msgstr "Maintenant, supprimez la première section du chemin,\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:268
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:943
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:268
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:949
msgid "and reselect it.\n"
msgstr "et resélectionnez-le.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:277
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:945
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:277
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:951
msgid ""
"Now the Path goes through the Station End-Point and the name appears on the "
"Profile dialog.\n"
@@ -14588,22 +12710,22 @@ msgstr ""
"Maintenant, le chemin passe par le point de fin de la station et le nom "
"apparaît dans la boîte de dialogue du profil d'élévation.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:286
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:947
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:286
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:953
msgid "Now we need to increase the separation where the tracks cross.\n"
msgstr "Nous devons maintenant augmenter la distance qui sépare les voies.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:948
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:954
msgid ""
"The two Elevations you see here are Computed Elevations which means "
"XTrackCAD dynamically computes the Elevation based on the Elevations of "
"connecting tracks.\n"
msgstr ""
-"Les deux élévations que vous voyez ici sont des élévations calculées, ce qui"
-" signifie que XTrackCAD exécute dynamiquement le calcul d'élévation en "
+"Les deux élévations que vous voyez ici sont des élévations calculées, ce qui "
+"signifie que XTrackCAD exécute dynamiquement le calcul d'élévation en "
"fonction des voies connectées.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:949
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:955
msgid ""
"First make the lower End-Point a Defined Elevation point using Shift-Right-"
"Click and the Profile Options menu. You will see the End-Point marked by a "
@@ -14615,14 +12737,14 @@ msgstr ""
"marqué d'un point doré. Le profil de hauteur a été ajouté une nouvelle "
"voie.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:297
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:951
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:297
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:957
msgid "Now, drag the point on the Profile Dialog to change the Elevation.\n"
msgstr ""
"Maintenant, faites glisser le point dans la boîte de dialogue 'Profil' pour "
"modifier l’élévation.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:952
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:958
msgid ""
"Note the grade on each side of the point will be displayed at the bottom of "
"the Profile dialog.\n"
@@ -14630,104 +12752,115 @@ msgstr ""
"Notez que la pente de chaque côté du point apparaîtra en bas de la boîte de "
"dialogue Profil.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:319
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:954
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:319
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:960
msgid ""
"After we release the Profile is updated to show the new Elevation and "
"Grade.\n"
msgstr ""
"Après validation le profil affiche les nouvelles élévations et angles.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmprof.xtr:326
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:119
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:957
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:326
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:119
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:963
msgid "The <Rescale> command will change the size of the selected objects.\n"
msgstr "La commande<Rescale> modifie la taille des objets sélectionnés.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:958
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:964
+msgid ""
+"Note: due to technical reasons, the To Scale drop down list is blank. For "
+"this demo it should show 'DEMO'.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:965
msgid "First we will try rescaling by ratio.\n"
msgstr "Nous allons d’abord essayer de redimensionner le ratio.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:126
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:960
-msgid "We are going to make everything 150% bigger.\n"
-msgstr "Nous augmentons tout à 150%.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:967
+#, fuzzy
+msgid "We are going to make everything 150 percent bigger.\n"
+msgstr "Nous augmentons tout à 150 pour cent.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:136
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:962
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:138
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:969
msgid "Note the track gauge did not change.\n"
msgstr "Notez que l'écartement de voie n'a pas changé.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:143
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:964
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:971
msgid "Let's try that again.\n"
msgstr "Essayons à nouveau.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:965
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:972
msgid "Now we are going to convert from one scale to another.\n"
msgstr "Nous passons maintenant d'une échelle à une autre.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:154
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:967
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:974
msgid "We will convert everything from N scale to HO scale...\n"
msgstr "Nous allons tout convertir de N en H0 …\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:161
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:969
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:976
msgid "and change the track gauge as well.\n"
msgstr "et changez également l'écartement de voie.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:169
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:971
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:171
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:978
msgid "Note that the Title of the turnout did not change.\n"
msgstr "Notez que le titre de l'aiguillage n'a pas changé.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrescal.xtr:177
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrotate.xtr:72
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:974
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:179
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:981
msgid ""
"The <Rotate> command will pivot the Selected objects. First Click on the "
"pivot point and then drag to Rotate the objects.\n"
msgstr ""
-"La commande<Rotate> permet de faire pivoter des objets sélectionnés. Cliquez"
-" d'abord sur le centre de la rotation, puis faites-le glisser pour faire "
+"La commande<Rotate> permet de faire pivoter des objets sélectionnés. Cliquez "
+"d'abord sur le centre de la rotation, puis faites-le glisser pour faire "
"pivoter les objets.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:975
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:982
msgid ""
"In this example we will rotate the selected structure about it's center.\n"
msgstr ""
"Dans cet exemple, nous allons faire pivoter la bâtiment sélectionnée autour "
"de son centre.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrotate.xtr:135
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:977
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:135
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:984
+#, fuzzy
msgid ""
-"The <Rotate> command will restrict the rotation to increments of 15° if you "
+"The <Rotate> command will restrict the rotation to increments of 15° if you "
"hold down the <Shift> and <Ctrl> keys.\n"
msgstr ""
-"La commande <Rotate> limitera la rotation à des incréments de 15 ° si vous maintenez les touches <Shift> et <Ctrl> enfoncées.\n"
+"La commande <Rotate> limitera la rotation à des incréments de 15 ° si vous "
+"maintenez les touches <Shift> et <Ctrl> enfoncées.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrotate.xtr:316
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:979
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:316
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:986
msgid ""
"There are Rotate options that you can access by Shift-Right-Click command "
"menu and choosing 'Rotate...'.\n"
msgstr ""
-"Il existe des options de rotation auxquelles vous pouvez accéder par le menu"
-" de commande Maj-Clic droit et en choisissant 'Rotation...'.\n"
+"Il existe des options de rotation auxquelles vous pouvez accéder par le menu "
+"de commande Maj-Clic droit et en choisissant 'Rotation...'.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:980
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:987
msgid ""
"You can rotate the selected object by a fixed rotatation (15, 30, 45, 90, "
"180) either clockwise or counter-clockwise, or by manually entering any "
"angle.\n"
msgstr ""
-"Vous pouvez faire pivoter l'objet sélectionné selon une rotation fixe (15, 30, 45, 90, 180) dans le sens horaire ou antihoraire, ou en entrant manuellement n'importe quel angle.\n"
+"Vous pouvez faire pivoter l'objet sélectionné selon une rotation fixe (15, "
+"30, 45, 90, 180) dans le sens horaire ou antihoraire, ou en entrant "
+"manuellement n'importe quel angle.\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:981
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:988
msgid ""
"The other option is 'Align' which allows you align selected objects with an "
"unselected object. This is useful to align railside buildings with track.\n"
@@ -14736,15 +12869,15 @@ msgstr ""
"sélectionnés avec un objet non sélectionné. C'est utile pour aligner les "
"bâtiments ferroviaires avec la voie.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:982
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:989
msgid "Unfortunately, we can not currently demonstrate these features.\n"
msgstr ""
"Malheureusement, nous ne pouvons actuellement pas démontrer ces "
"fonctionnalités.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmrotate.xtr:529
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmruler.xtr:14
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:985
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:529
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:992
msgid ""
"The <Ruler> command draws a Ruler on the layout you can use to measure "
"distances.\n"
@@ -14752,53 +12885,93 @@ msgstr ""
"La commande<Ruler> dessine une règle sur le plan de voie. Cela peut être "
"utilisé pour mesurer des distances.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmruler.xtr:24
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:987
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:994
msgid "If you press the <Ruler> command again the Ruler is removed.\n"
msgstr ""
"Si vous cliquez à nouveau <Ruler>sur la commande <Règle>, la règle sera "
"supprimée.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmruler.xtr:32
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:989
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:996
msgid "But you can place it somewhere else.\n"
msgstr "Mais vous pouvez le placer ailleurs.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmruler.xtr:42
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:173
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:992
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:42
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:173
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:999
msgid "The <Select> command is used to select tracks.\n"
msgstr "La commande<Select> est utilisée pour sélectionner les voies.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:993
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1000
msgid "Selected tracks can be moved or rotated during the <Select> command.\n"
msgstr ""
"Les voies sélectionnées peuvent être déplacées ou pivotées pendant la "
"commande<Select>.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:994
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1001
msgid "Selected tracks can also be deleted, hidden, listed and exported.\n"
msgstr ""
"Les voies sélectionnées peuvent également être supprimées, masquées, "
"répertoriées et exportées.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:995
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1002
+#, fuzzy
msgid ""
"When you move the cursor near a track that could be selected, the track is "
-"drawn with think blue lines.\n"
+"drawn with thick blue lines.\n"
msgstr ""
-"Lorsque vous déplacez le curseur près d'une voie qui pourrait être sélectionnée, la voie est dessinée avec des lignes bleues.\n"
+"Lorsque vous déplacez le curseur près d'une voie qui pourrait être "
+"sélectionnée, la voie est dessinée avec des lignes bleues.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:184
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:997
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1004
+msgid ""
+"The Select operates in two modes which are controled by the Options|Command "
+"menu.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:191
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1006
+msgid ""
+"In 'classic' mode, clicking on an object adds it to set of selected "
+"objects.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:197
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1008
+msgid ""
+"In the 'new' mode, clicking on an object deselectes all other objects, "
+"leaving just the newly selected object.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1009
+#, fuzzy
+msgid "Holding down the Ctrl key reverses this behavior.\n"
+msgstr ""
+"Appuyez sur Echap pour tout désélectionner. Maintenez la touche Maj enfoncée "
+"et réessayez.\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1010
+msgid "This demo will use the 'new' mode.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1011
+msgid ""
+"There is also an option to the control the behavior of clicking on empty "
+"space: do nothing or deselecting all objects.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:208
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1013
msgid "A Left-Click selects a track\n"
msgstr ""
"Un simple clic gauche sélectionne une voie.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:192
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:999
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:216
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1015
msgid ""
"The selected track will have red X's drawn where it is connected to "
"unselected tracks. This indicates where the track will be disconnected if "
@@ -14809,29 +12982,29 @@ msgstr ""
"déconnectée si les voies sélectionnées sont déplacées, tournées ou "
"supprimées.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1000
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1016
msgid "A Ctrl-Left-Click adds tracks to the selection\n"
msgstr ""
"Un Ctrl-clic gauche ajoute des voies à la sélection\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:211
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1002
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:235
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1018
msgid "Selecting a selected track re-selects only it.\n"
msgstr ""
"La sélection d'une voie déjà sélectionnée la désélectionne.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:219
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1004
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1020
msgid "Selecting off all tracks de-selects them.\n"
msgstr ""
"La sélection de toutes les voies déjà sélectionnées les désélectionne.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:227
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:232
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1007
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:251
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:256
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1023
msgid ""
"To demonstrate Select Connected, first select two tracks at the end of a "
"part to be selected \n"
@@ -14839,8 +13012,8 @@ msgstr ""
"Pour démontrer Sélectionner Connecté, sélectionner d'abord deux voies à la "
"fin d'une partie à sélectionner\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:248
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1009
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:272
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1025
msgid ""
"Shift-Left-Click on a track will select all unselected tracks connected to "
"the track. Selection stops at a previously selected track.\n"
@@ -14848,32 +13021,33 @@ msgstr ""
"Maj-clic gauche sur une voie sélectionne toutes les voies qui y sont "
"connectées. Le processus s'arrête dès qu'une voie est déjà sélectionnée.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:260
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1011
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:284
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1027
msgid ""
"Be careful with this because its very easy to select all tracks this way\n"
msgstr ""
-"Soyez prudent parce que ça permet facilement de sélectionner toutes les voies.\n"
+"Soyez prudent parce que ça permet facilement de sélectionner toutes les "
+"voies.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:274
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1013
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1029
msgid "The <esc> key will deselect all objects.\n"
msgstr "La touche<esc> désélectionnera tous les objets.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:282
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:287
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1016
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:310
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:315
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1032
msgid "Left-Drag is used to select all objects within an area.\n"
msgstr "Glisser-gauche sert à sélectionner tous les objets d'une zone.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:295
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1018
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:323
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1034
msgid "Shift-Left-Drag is used to move selected tracks.\n"
msgstr ""
"Maj+glisser à gauche est utilisé pour déplacer les voies sélectionnées.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1019
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1035
msgid ""
"When you move selected tracks that are connected to unselected tracks, the "
"tracks will be disconnected. These points are marked by a Red cross on the "
@@ -14883,102 +13057,109 @@ msgstr ""
"connexion sera annulée. Ces points sont marqués d'une croix rouge sur le "
"plan de voie.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1020
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1036
msgid ""
"If the unconnected end point of a track and one being moved are close "
"enough, two circles are displayed, showing where the tracks will be snapped "
"together. \n"
msgstr ""
-"Si le point de fin non connecté d'une voie et d'une autre en cours de déplacement sont suffisamment proches, deux cercles s'affichent, indiquant où les voies seront accrochées ensemble.\n"
+"Si le point de fin non connecté d'une voie et d'une autre en cours de "
+"déplacement sont suffisamment proches, deux cercles s'affichent, indiquant "
+"où les voies seront accrochées ensemble.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:313
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1022
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:341
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1038
msgid "Let's move the Main window to see what's going on next\n"
msgstr "Déplaçons la fenêtre principale pour voir ce qui se passe ensuite.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:320
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1024
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:348
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1040
msgid ""
"Ctrl-Left-Drag rotates the selected tracks about the pivot point (which is "
"where you started the drag)\n"
msgstr ""
-"Ctrl+gauche+glisser fait pivoter les voies sélectionnées autour du point de pivot (qui est l'endroit où vous avez commencé le glissement)\n"
+"Ctrl+gauche+glisser fait pivoter les voies sélectionnées autour du point de "
+"pivot (qui est l'endroit où vous avez commencé le glissement)\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:382
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:387
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1027
-msgid "Next we select the <Join Tracks> command to demonstrate \"Move To Join\" \n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:410
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:415
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1043
+msgid ""
+"Next we select the <Join Tracks> command to demonstrate \"Move To Join\" \n"
msgstr ""
-"Ensuite, nous sélectionnons la commande <Join Tracks> pour montrer \"Move To Join\"\n"
+"Ensuite, nous sélectionnons la commande <Join Tracks> pour montrer \"Move To "
+"Join\"\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:392
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1029
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:420
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1045
msgid ""
"You can use Shift-Left-Click to select an open endpoint of a selected track "
"to join with an unselected track. \n"
msgstr ""
-"Vous pouvez utiliser Maj-Clic gauche pour déplacer un point de fin d'une voie sélectionnée pour rejoindre une voie non sélectionnée.\n"
+"Vous pouvez utiliser Maj-Clic gauche pour déplacer un point de fin d'une "
+"voie sélectionnée pour rejoindre une voie non sélectionnée.\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1030
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1046
msgid "We'll move the Main window again.\n"
msgstr "Nous allons à nouveau déplacer la fenêtre principale.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:415
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1032
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:443
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1048
msgid ""
"You then Left-Click on an endpoint of a unselected track to move the "
"selected tracks to join. \n"
msgstr ""
-"Vous pouvez utiliser Maj-Clic gauche pour déplacer un point de fin d'une voie sélectionnée pour rejoindre une voie non sélectionnée.\n"
+"Vous pouvez utiliser Maj-Clic gauche pour déplacer un point de fin d'une "
+"voie sélectionnée pour rejoindre une voie non sélectionnée.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmselect.xtr:430
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:30
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1035
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:458
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1051
msgid "The <Split> command is used to split and disconnect tracks.\n"
msgstr ""
"La commande <Split> est utilisée pour diviser et déconnecter les voies.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:35
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1037
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:35
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1053
msgid "Simply select the spot on the track you want to split.\n"
msgstr ""
"Sélectionnez simplement l'endroit de la voie que vous souhaitez "
"fractionner.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1038
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1054
msgid "You cannot split turnouts (unless you hold down the Shift key).\n"
msgstr ""
"Les aiguillages ne peuvent être séparés (que si vous appuyez sur la touche "
"Maj).\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:48
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1040
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1056
msgid ""
"If you split at spot that is already an End-Point between two tracks, or "
"split twice at the same spot, the track is disconnected.\n"
msgstr ""
-"Lors du fractionnement sur une extrémité existante ou lors du fractionnement"
-" deux fois au même endroit, les voies sont fractionnées.\n"
+"Lors du fractionnement sur une extrémité existante ou lors du fractionnement "
+"deux fois au même endroit, les voies sont fractionnées.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:60
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:65
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1043
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:60
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1059
msgid "The <Tunnel> command marks selected tracks as hidden.\n"
msgstr "La commande <Tunnel> marque les voies sélectionnées comme masquées.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1044
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1060
msgid ""
"A tunnel portal is drawn at the boundary between hidden and normal track.\n"
msgstr ""
"Une entrée de tunnel est dessinée à la limite entre voie cachée et voie "
"normale.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1045
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1061
msgid ""
"How the hidden tracks are drawn (solid, dashed or invisible) is controlled "
"by the Draw EndPts radio button group on the Setup dialog.\n"
@@ -14987,45 +13168,46 @@ msgstr ""
"invisibles) est contrôlée par le groupe de boutons radio de la boîte de "
"dialogue Options d'affichage.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:86
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1047
-msgid "To 'un-hide' a track just Select it again and click the Tunnel button.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1063
+msgid ""
+"To 'un-hide' a track just Select it again and click the Tunnel button.\n"
msgstr ""
"Pour «masquer» une voie, sélectionnez-la à nouveau et cliquez sur le bouton "
"Tunnel.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmsplit.xtr:100
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmstrtrk.xtr:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1050
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:100
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1066
msgid ""
"Straight tracks are created by selecting the first End-Point of the track.\n"
msgstr ""
-"Les voies droites sont créées en sélectionnant le premier point de fin de la"
-" voie.\n"
+"Les voies droites sont créées en sélectionnant le premier point de fin de la "
+"voie.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmstrtrk.xtr:12
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1052
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1068
msgid "Then the other End-Point is dragged to its final postion.\n"
msgstr ""
"Ensuite, l'autre point d'extrémité est déplacé vers sa position correcte.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmstrtrk.xtr:20
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1054
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:20
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1070
msgid "The left mouse button is released at the final end postion.\n"
msgstr "À ce stade, le bouton gauche de la souris est relâché.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmstrtrk.xtr:27
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtbledg.xtr:23
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1057
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:27
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1073
msgid ""
"Table Edges are used to mark the edges of the layout, either for aisles or "
"room walls.\n"
msgstr ""
-"Les bords de table sont utilisés pour marquer les bords du plan, que ce soit"
-" pour les allées ou les murs de la pièce.\n"
+"Les bords de table sont utilisés pour marquer les bords du plan, que ce soit "
+"pour les allées ou les murs de la pièce.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtbledg.xtr:47
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1059
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1075
msgid ""
"A Table Edge is attracted to other objects, unless you hold down the Alt "
"key.\n"
@@ -15033,15 +13215,15 @@ msgstr ""
"Un bord de table est attiré par d'autres objets, sauf si vous maintenez la "
"touche Alt enfoncée.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtbledg.xtr:145
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1061
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:145
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1077
msgid "Table Edges can be modified by dragging on their ends.\n"
msgstr ""
"Les bords de table peuvent être modifiés en faisant glisser leurs "
"extrémités.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtbledg.xtr:193
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1063
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:193
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1079
msgid ""
"Unless you hold down the Alt key while dragging then the Table Edge will be "
"attracted to other objects.\n"
@@ -15049,9 +13231,9 @@ msgstr ""
"À moins que vous ne mainteniez la touche Alt enfoncée tout en faisant "
"glisser, le bord de la table sera attiré par d'autres objets.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtbledg.xtr:231
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtodes.xtr:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1066
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:231
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1082
msgid ""
"These examples shows some of the various Turnout Designer windows. Each "
"window defines a different type of turnout.\n"
@@ -15060,7 +13242,7 @@ msgstr ""
"d'aiguillage. Chaque fenêtre est utilisée pour un type d'aiguillage "
"différent.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1067
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1083
msgid ""
"In each window there are a number of parameters to fill in and one or two "
"description lines.\n"
@@ -15068,27 +13250,29 @@ msgstr ""
"Chaque fenêtre de dialogue contient un certain nombre de paramètres à "
"renseigner et une ou deux lignes de description.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1068
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1084
msgid "You can print the design to check the dimensions before saving them.\n"
msgstr ""
"Vous pouvez imprimer le dessin pour vérifier les dimensions avant de les "
"enregistrer.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtodes.xtr:16
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1070
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1086
msgid "This is the regular turnout.\n"
msgstr "Il s'agit d'un aiguillage normal.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1071
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1087
msgid ""
"In addition to the dimensions, you also enter the Title (Manufacturer, "
"Description and Part Number). For Turnouts with Left and Right hand "
"versions there are separate Descriptions and Part Numbers.\n"
msgstr ""
-"Outre les dimensions, vous entrez également le titre (fabricant, description et numéro de pièce). Pour les aiguillages avec versions à gauche et à droite, la description et les références sont enregistrées séparément.\n"
+"Outre les dimensions, vous entrez également le titre (fabricant, description "
+"et numéro de pièce). Pour les aiguillages avec versions à gauche et à "
+"droite, la description et les références sont enregistrées séparément.\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1072
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1088
msgid ""
"Some Turnouts and Sectional track are pre-mounted on roadbed. For these "
"parts you can specify the width of the roadbed, the thickness of the lines "
@@ -15098,56 +13282,64 @@ msgstr ""
"Pour ces pièces, vous pouvez spécifier la largeur du ballast, l'épaisseur "
"des lignes tracées pour le bord du ballast et la couleur.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtodes.xtr:30
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1074
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1090
msgid "The double slip switch is described by only a few parameters.\n"
msgstr ""
"La traversée de jonction double n'est décrit que par quelques paramètres.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtodes.xtr:40
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1076
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1092
msgid "The double crossover only needs length and track separation.\n"
msgstr ""
"La traversée-jonction double n'a besoin que d'une longueur et d'une "
"séparation des rails.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtodes.xtr:48
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:30
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1079
-msgid ""
-"Pressing the turnout button displays the Turnout Selection window to let you"
-" choose a turnout to place.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:48
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1095
+msgid "We chose the turnout we want to place by clicking on the HotBar.\n"
msgstr ""
-"Appuyez sur le bouton 'aiguillage' pour afficher la fenêtre Sélection afin "
-"de vous permettre d'en choisir un pour le placer.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1080
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1097
msgid ""
-"Note that once you start to place the turnout on the Main window the Turnout"
-" Selection window disappears. This feature is enabled by the Hide toggle "
-"button on the dialog.\n"
+"You can place the turnout on a arbitrary position on the layout. Left-drag "
+"the turnout into place...\n"
+msgstr ""
+"Vous pouvez placer l'aiguillage à une position arbitraire du plan. Faites le "
+"glisser au bon endroit …\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1099
+msgid "We are moving the Turnout by dragging on the 'Active End Point'\n"
msgstr ""
-"Notez que lorsque vous commencez à placer l'aiguillage dans la fenêtre "
-"principale, la fenêtre Sélection d'aiguillage disparaît. Cette commodité est"
-" activée par le bouton 'Cacher' de la boîte de dialogue.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:38
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1082
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1100
+msgid "We can change the 'Active End Point' by a Shift-Left-Click\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1102
+#, fuzzy
+msgid "Notice the Turnout has rotated to the next End Point.\n"
+msgstr "Notez que l'aiguillage a été divisé en trois parties.\n"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1104
msgid ""
-"You can place the turnout on a arbitrary position on the layout. Left-drag "
-"the turnout into place...\n"
+"If we continue to Shift-Left-Click 2 more times, we will return to the "
+"original position.\n"
msgstr ""
-"Vous pouvez placer l'aiguillage à une position arbitraire du plan. Faites le"
-" glisser au bon endroit …\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:85
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1084
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:123
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1106
msgid "Then you can rotate the turnout by Right dragging.\n"
msgstr ""
"Vous pouvez ensuite faire pivoter l'aiguillage en faisant glisser avec le "
"bouton droit de la souris.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1085
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1107
msgid ""
"You can also use Shift-Right-Click to display a popup menu that lets you "
"rotate the Turnout by specific angles.\n"
@@ -15155,8 +13347,8 @@ msgstr ""
"Vous pouvez ouvrir un menu contextuel avec Maj+clic droit, ce qui vous "
"permet de faire pivoter l'aiguillage selon des angles fixes.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:136
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1087
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:174
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1109
msgid ""
"When you are satisfied with the position and orientation of the turnout "
"press Space bar or the Return key on the keyboard to finish placing the "
@@ -15166,25 +13358,17 @@ msgstr ""
"l'aiguillage, appuyez sur la barre d'espace ou sur la touche \"Entr\" du "
"clavier pour terminer la commande.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1088
-msgid ""
-"Pressing the Close button on the Turnout dialog will end the <Turnout> "
-"command as well as placing the turnout.\n"
-msgstr ""
-"Le fait d'appuyer sur le bouton Fermer dans la boîte de dialogue d'aiguillage mettra fin à la commande <Turnout>et placera l'aiguillage.\n"
-"\n"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:146
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:189
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1091
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:182
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1112
msgid ""
"If you drag along an existing track the new turnout will be attached to the "
"track.\n"
msgstr ""
-"Si vous faites glisser l'aiguillage sur une voie existante, il sera connecté"
-" à la voie.\n"
+"Si vous faites glisser l'aiguillage sur une voie existante, il sera connecté "
+"à la voie.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1092
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1113
msgid ""
"Note that the status line tells you the number of End-Points that would be "
"connected and, the maximum displacement of the End-Points. This will be "
@@ -15195,27 +13379,29 @@ msgstr ""
"lors de la construction de voies complexes, comme nous le verrons plus "
"tard.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:220
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1094
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:256
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1115
+#, fuzzy
msgid ""
"By moving the cursor from one side to the other of the track centerline you "
-"can flip the turnout 180ᅵ.\n"
+"can flip the turnout 180°.\n"
msgstr ""
-"En déplaçant le curseur d'un côté à l'autre de l'axe de la voie, vous pouvez inverser l'aiguille de 180 °.\n"
+"En déplaçant le curseur d'un côté à l'autre de l'axe de la voie, vous pouvez "
+"inverser l'aiguille de 180 °.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:236
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1096
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:272
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1117
msgid ""
-"If you try to drag across another turnout the new turnout will placed at the"
-" nearest End-Point of the existing turnout.\n"
+"If you try to drag across another turnout the new turnout will placed at the "
+"nearest End-Point of the existing turnout.\n"
msgstr ""
"Si vous glissez le nouvel aiguillage par-dessus un aiguillage existant, le "
"nouvel aiguillage sera connecté au point le plus proche de l'aiguillage "
"existant.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:299
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1098
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:335
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1119
msgid ""
"When you press Space or Return while the turnout is on a track, the track "
"will be split and the new turnout attached automatically.\n"
@@ -15224,94 +13410,89 @@ msgstr ""
"l'aiguillage est sur une voie, cette voie est déconnectée et l'aiguillage "
"est automatiquement connecté.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:307
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:366
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1101
-msgid "Pressing Close ends the <Turnout> command.\n"
-msgstr "Appuyez sur Fermer pour mettre fin à la commande <Turnout>.\n"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtosel.xtr:372
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:21
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1104
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:343
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:408
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1123
msgid "Sometimes it's useful to modify turnouts triming one of the ends.\n"
msgstr ""
"Il est parfois utile de modifier les aiguillages en coupant l'une des "
"extrémités.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1105
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1124
msgid "We use the <Split> command for this.\n"
msgstr "Pour cela, nous utilisons la commande <Split>.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:28
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1107
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1126
msgid "Normally, if we try to Split a turnout we get an error message.\n"
msgstr ""
"Normalement, si nous essayons de scinder un aiguillage, nous obtenons un "
"message d'erreur.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:37
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1109
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1128
msgid "Hold down the Shift key and try again.\n"
msgstr ""
-"Appuyez sur Echap pour tout désélectionner. Maintenez la touche Maj enfoncée"
-" et réessayez.\n"
+"Appuyez sur Echap pour tout désélectionner. Maintenez la touche Maj enfoncée "
+"et réessayez.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:52
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1111
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:52
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1130
msgid ""
"The end of the turnout has been replaced by a piece of straight flex track "
"which we can modify.\n"
msgstr ""
-"La fin de l'aiguillage a été remplacée par un morceau de voie flexible droite que nous pouvons modifier.\n"
+"La fin de l'aiguillage a été remplacée par un morceau de voie flexible "
+"droite que nous pouvons modifier.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:63
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1113
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1132
msgid "We can try splitting the diverging leg.\n"
msgstr "Nous pouvons essayer de scinder la voie déviée.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:74
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1115
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:74
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1134
msgid ""
"Notice that the tail of the diverging leg has been changed to a curved "
"track...\n"
msgstr "Notez que la voie déviée a été changée en voie incurvée ...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:84
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1117
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1136
msgid "and a straight track.\n"
msgstr "et une voie droite.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtotrim.xtr:92
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:12
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1120
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:92
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1139
+#, fuzzy
msgid ""
-"This example show how to layout a yard using the <Turnout> and <Parallel> "
-"commands.\n"
+"This example show how to layout a yard using Turnouts from the HotBar and "
+"the <Parallel> command.\n"
msgstr ""
"Cet exemple montre comment aménager un grill à l'aide des commandes "
"<Turnout> et<Parallel>.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:17
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1122
-msgid ""
-"You can resize and move the Turnout Selection dialog if it obscures the "
-"other windows.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:19
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1141
+msgid "We'll choose a Turnout from the HotBar\n"
msgstr ""
-"Vous pouvez redimensionner et déplacer la boîte de dialogue Sélection "
-"d'aiguillage si elle masque d'autres fenêtres.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1123
-msgid "First we place a turnout on the main line.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1142
+#, fuzzy
+msgid "Then we place the Turnout on the main line.\n"
msgstr "Plaçons d’abord l'aiguillage sur la voie principale.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:35
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1125
-msgid "Next extend the turnout with the <Modify> command.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1144
+#, fuzzy
+msgid "Next extend the Turnout with the <Modify> command.\n"
msgstr "Ensuite, étendez l'aiguillage avec la commande <Modify>.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:46
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1127
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1146
msgid ""
"Now create a track parallel to the main line. Make sure the separation is "
"reasonable for your scale.\n"
@@ -15319,93 +13500,101 @@ msgstr ""
"Créez maintenant une voie parallèle à la ligne principale. Assurez-vous que "
"la séparation est raisonnable pour votre échelle.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:62
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1129
-msgid "And place a turnout to connect the new track.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1148
+#, fuzzy
+msgid "And place a Turnout to connect the new track.\n"
msgstr "Et placez un aiguillage à connecter à la nouvelle voie.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1130
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1149
msgid "We'll zoom in here to see what's going on.\n"
msgstr "En zoomant, nous pouvons voir ce qui se passe.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:78
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1132
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:83
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1151
+#, fuzzy
msgid ""
-"Notice how we control which way the turnout is facing by moving the mouse "
+"Notice how we control which way the Turnout is facing by moving the mouse "
"across the center line of the track.\n"
msgstr ""
-"Remarquez comment nous contrôlons l'orientation de l'aiguillage en déplaçant"
-" la souris sur la ligne médiane de la voie.\n"
+"Remarquez comment nous contrôlons l'orientation de l'aiguillage en déplaçant "
+"la souris sur la ligne médiane de la voie.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:94
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1134
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1153
+#, fuzzy
msgid ""
-"The Status bar displays the number of auto-connections that will be made and"
-" the maximum offset.\n"
+"The Status bar displays the number of auto-connections that will be made (3) "
+"and the maximum offset (0.000).\n"
msgstr ""
-"La barre d'état affiche le nombre de points de terminaison connectés et le décalage maximum.\n"
+"La barre d'état affiche le nombre de points de terminaison connectés et le "
+"décalage maximum.\n"
"\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1135
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1154
+#, fuzzy
msgid ""
-"XTrackCAD adjusts the turnout position for the best fit to minimize any "
+"XTrackCAD adjusts the Turnout position for the best fit to minimize any "
"connection offset\n"
msgstr ""
"XTrackCAD ajuste la position de l'aiguillage pour obtenir un meilleur "
"ajustement afin de minimiser tout décalage de connexion\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:106
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1137
-msgid "Note that placing the turnout splits the parallel track.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1156
+#, fuzzy
+msgid "Note that placing the Turnout splits the parallel track.\n"
msgstr "Notez que placer l'aiguillage déconnecte la voie parallèle.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1138
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1157
msgid "We have to delete the leftover piece by Selecting and Deleting it.\n"
msgstr "Nous devons sélectionner et supprimer la pièce restante.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:120
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1140
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:126
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1159
msgid "Repeat the process for the other tracks in the yard.\n"
msgstr "Répétez le processus pour les autres voies du dépôt.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:149
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1142
-msgid "For the last track we will join with a curve instead of a turnout.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1161
+#, fuzzy
+msgid "For the last track we will join with a curve instead of a Turnout.\n"
msgstr ""
"Pour la dernière voie, nous allons raccorder une courbe au lieu d’un "
"aiguillage.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtoyard.xtr:185
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrkwid.xtr:91
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1145
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1164
msgid "We can indicate the mainline by making the rails wider.\n"
msgstr ""
"Nous pouvons mettre en évidence l'itinéraire principal en dessinant les "
"voies plus épaisses.\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1146
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1165
msgid "First we select the mainline tracks...\n"
msgstr "Nous choisissons d’abord les voies principales ...\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrkwid.xtr:128
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1148
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1167
msgid "And then select Medium Tracks from the Edit menu.\n"
msgstr "Et puis sélectionnez \"Voies moyennes\" dans le menu \"Editer\".\n"
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1149
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1168
msgid "We can't show the Edit menu, but we can show the effect.\n"
msgstr ""
-"Nous ne pouvons pas afficher le menu Edition, mais nous pouvons montrer l'effet.\n"
+"Nous ne pouvons pas afficher le menu Edition, mais nous pouvons montrer "
+"l'effet.\n"
"\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrkwid.xtr:137
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1151
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:137
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1170
msgid "We can make the rail thicker by selecting Thick Tracks.\n"
msgstr "Nous pouvons rendre la voie plus épaisse en sélectionnant \"Épais\".\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrkwid.xtr:148
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrntab.xtr:6
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1154
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:148
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1173
msgid ""
"Turntables are created by specifying the radius in a dialog box on the "
"Status Bar. The radius in the dialog can be changed before proceeding.\n"
@@ -15414,233 +13603,2932 @@ msgstr ""
"boîte de dialogue sur la barre d'état. Le rayon doit être modifié avant les "
"étapes suivantes.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrntab.xtr:15
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1156
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:15
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1175
msgid "Then the turntable is dragged to its final location.\n"
msgstr "Ensuite, le pont tournant est déplacé vers son emplacement final.\n"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/demos/dmtrntab.xtr:22
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:433
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1159
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:22
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:433
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1178
msgid "Introduction"
msgstr "Introduction"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:434
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1161
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:434
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1180
msgid "Mouse Actions"
msgstr "Actions de la souris"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:435
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1163
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:435
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1182
msgid "Dialogs"
msgstr "Dialogues"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:436
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1165
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:436
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1184
msgid "Moving about"
msgstr "Se déplacer"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:437
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1167
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:437
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1186
msgid "Describe and Select"
msgstr "Décrire et sélectionner"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:438
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1169
-msgid "Describe"
-msgstr "Décrire"
-
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:440
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1173
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:440
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1192
msgid "Simple tracks"
msgstr "Simples voies"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:441
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1175
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:441
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1194
msgid "Straight tracks"
msgstr "Voies droites"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:442
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1177
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:442
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1196
msgid "Curved tracks"
msgstr "Voies courbes"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:443
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1179
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:443
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1198
msgid "Circles"
msgstr "Cercles"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:444
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1181
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:444
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1200
msgid "Turntables"
msgstr "Ponts tournants"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:445
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1183
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:445
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1202
msgid "Modifying tracks"
msgstr "Modification des voies"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:446
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1185
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:446
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1204
msgid "Modifying end points "
msgstr "Modification des points de fin "
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:447
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1187
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:447
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1206
msgid "Extending"
msgstr "Extension"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:448
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1189
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:448
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1208
msgid "Medium and Thick Tracks"
msgstr "Voies moyennes et épaisses"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:449
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1191
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:449
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1210
msgid "Joining Tracks"
msgstr "Raccorder des voies"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:450
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1193
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:450
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1212
msgid "Straight to straight"
msgstr "Tout droit"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:451
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1195
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:451
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1214
msgid "Curve to straight"
msgstr "Courbe à droite"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:452
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1197
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:452
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1216
msgid "Circle to circle"
msgstr "Cercle à cercle"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:453
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1199
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:453
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1218
msgid "Joining to turntables"
msgstr "Raccorder à un pont tournant"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:454
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1201
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:454
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1220
msgid "Easements"
msgstr "Courbes de transition"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:455
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1203
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:455
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1222
msgid "Abutting tracks"
msgstr "Voies contiguës"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:456
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1205
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1224
msgid "Move to Join"
msgstr "Déplacer pour raccorder"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:458
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1209
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:458
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1228
msgid "Select and Placement"
msgstr "Sélectionner et positionner"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:459
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1211
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:459
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1230
msgid "Building a yard throat."
msgstr "Construire une entrée de dépôt."
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:460
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1213
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:460
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1232
msgid "Designing turnouts"
msgstr "Concevoir des aiguillages"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:461
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1215
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:461
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1234
msgid "Group and Ungroup"
msgstr "Grouper et dissocier"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:462
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1217
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:462
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1236
msgid "Triming Turnout Ends"
msgstr "Modifier les points de fin d'un aiguillage"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:463
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1219
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:463
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1238
msgid "Handlaid Turnouts"
msgstr "Aiguillages de conception libre"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:464
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1221
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1240
msgid "Elevations and Profile"
msgstr "Élévations et profil"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:465
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1223
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:465
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1242
msgid "Elevations"
msgstr "Élévations"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:467
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1227
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:467
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1246
msgid "Misc track commands"
msgstr "Diverses commandes de voie"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:468
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1229
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:468
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1248
msgid "Delete and Undo"
msgstr "Supprimer et annuler"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:469
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1231
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:469
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1250
msgid "Splitting and Tunnels"
msgstr "Fractionnement et tunnels"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:471
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1235
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:471
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1254
msgid "Helix tracks"
msgstr "Voies hélicoïdales"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:472
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1237
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:472
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1256
msgid "Exception Tracks"
msgstr "Voies non conformes"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:474
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1241
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:474
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1260
msgid "Connect and Tighten - a siding"
msgstr "Connecter et ajuster - un revêtement"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:475
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1243
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:475
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1262
msgid "Connect and Tighten - figure-8"
msgstr "Connecter et ajuster - figure-8"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:476
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1245
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:476
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1264
msgid "Other commands"
msgstr "Autres commandes"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:478
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1249
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:478
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1268
msgid "Table Edges"
msgstr "Bords de table"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:480
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1253
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:480
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1272
msgid "Dimension Lines"
msgstr "Lignes de cotes"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:481
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1255
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:481
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1274
msgid "Lines"
msgstr "Lignes"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:482
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1257
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:482
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1276
msgid "Poly-Shapes"
msgstr "Poly-formes"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:483
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1259
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:483
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1278
msgid "Modifying Poly-Shapes"
msgstr "Modification des poly formes"
-#. i18n: /Users/richardsa/src/xtrkcad-old/app/lib/xtrkcad.xtq:486
-#: ../../../../build/xtrkcad-old/app/i18n/custmsg.h:1265
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:486
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1284
msgid "Control Panels"
msgstr "Panneaux de contrôle"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:9
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1288
+#, fuzzy
+msgid "Test Turnout Designer\n"
+msgstr "%s Conception d'aiguillage"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1289
+msgid ""
+"This demo invokes each Turnout Designer and generates the turnout "
+"definition.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1290
+msgid ""
+"Each definition is placed on the layout and Regression checks that each "
+"matches.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1291
+#, fuzzy
+msgid "Instructions:\n"
+msgstr "Introduction"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1292
+msgid " Run xtrkcad with the regression option set to 2:\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1293
+msgid " xtrkcad -d regression=2\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1294
+msgid ""
+" Select the recording (Macro|Playback) from $(SRCDIR)/app/tools/"
+"TurnoutDesigner.xtr\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1295
+msgid " \n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1296
+msgid ""
+" Playback the demo. You probably want to choose a faster playback Speed.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1297
+msgid "Check the log file (Linux: stdout, Windows: xtclog.txt)\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:497
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:594
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:867
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:913
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1299
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1308
+msgid "-----------------------------------------------------\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1300
+#, fuzzy
+msgid "Create an instance of each turnout\n"
+msgstr "Créer un aiguillage conçu en manuel"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1303
+#, fuzzy
+msgid "Run Regression Checks\n"
+msgstr "Régression"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1306
+#, fuzzy
+msgid "Remove the parameter definitions\n"
+msgstr "Supprimer les entrées sélectionnées"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:9
+msgid "Invokes online help for this dialog"
+msgstr "Ouvre l'aide en ligne pour cette boîte de dialogue"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:10
+msgid "Cancels this command"
+msgstr "Annule cette commande"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:11
+msgid "Closes the dialog"
+msgstr "Fermer la fenêtre de dialogue"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:12
+msgid "About program dialog"
+msgstr "Boîte de dialogue \"A propos de\""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:13
+msgid "Move selected object to top"
+msgstr "Déplacer l'objet sélectionné vers le haut"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:14
+msgid "Raise or lower all selected tracks"
+msgstr "Elever ou abaisser toute les voies sélectionnées"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:15
+msgid "Show a protractor"
+msgstr "Afficher un rapporteur"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:16
+msgid "Turn magnetic snap on or off"
+msgstr "Activer ou désactiver la grille magnétique"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:18
+msgid "Move selected object to bottom"
+msgstr "Déplacer l'objet sélectionné vers le bas"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:19
+msgid "Create a section of track for automation"
+msgstr "Créer une section de voie pour l'automatisation"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:20
+msgid "Edit a block definition "
+msgstr "Editer une définition de bloc "
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:21
+msgid "Create a new Car/Loco description"
+msgstr "Créer une nouvelle description de wagon/voiture/loco"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:22
+msgid "Manage your Car and Loco Inventory"
+msgstr "Gérez votre inventaire de véhicule"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:23
+msgid "Create track circle from center"
+msgstr "Créer un cercle de voie à partir du centre"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:24
+msgid "Create fixed radius track circle"
+msgstr "Créer une voie circulaire d'un rayon donné"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:25
+msgid "Set Circle Track creation mode"
+msgstr "Choisissez la commande pour créer des courbes de voie"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:26
+msgid "Create track circle from tangent"
+msgstr "Créer une voie circulaire à partir de la tangente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:27
+msgid "Removes elevation from Selected tracks"
+msgstr "Supprime l'élévation des voies sélectionnées"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:28
+msgid "Copy objects to clipboard and duplicate them in exactly the same place"
+msgstr ""
+"Copier les objets dans le presse-papiers puis les reproduire exactement au "
+"même endroit"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:29
+msgid "Command Options dialog"
+msgstr "Boîte de dialogue pour les options de commande"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:30
+msgid "Controls colors"
+msgstr "Ajuste les couleurs"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:31
+msgid "Connect two tracks"
+msgstr "Connecter deux voies"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:32
+msgid "Create a control for layout automation"
+msgstr "Créer un contrôle pour l'automatisation du réseau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:33
+msgid "Select control element to create"
+msgstr "Sélectionner l'élément de contrôle à créer"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:34
+msgid "Manage control elements"
+msgstr "Gérer les contrôles"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:35
+msgid "Set Convert mode"
+msgstr "Définir le mode de conversion"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:36
+msgid "Convert from Fixed Track to Cornu"
+msgstr "Convertir en Cornu depuis des voies fixes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:37
+msgid "Convert from Cornu and Bezier to Fixed Track"
+msgstr "Convertir en voies fixes depuis des Cornu et Bezier"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:38
+msgid "Copy selected objects to clipboard"
+msgstr "Copier les objets sélectionnés du presse-papiers"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:39
+msgid "Create Cornu track"
+msgstr "Créer une voie Cornu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:40
+msgid "Create curved track from center"
+msgstr "Créer une voie courbe à partir du centre"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:41
+msgid "Create curved track from chord"
+msgstr "Créer une voie courbe à partir d'une corde"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:42
+msgid "Create curved track from end-point"
+msgstr "Créer une voie courbe à partir de l'extrémité"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:43
+msgid "Create Bezier track"
+msgstr "Créer une voie de Bézier"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:44
+msgid "Set Curve Track creation mode"
+msgstr "Définir le mode de création de voie de courbe"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:45
+msgid "Create curved track from tangent"
+msgstr "Créer une voie courbe à partir de la tangente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:46
+msgid "Manipulate Custom designer entries"
+msgstr "Éditez vos propres dessins"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:47
+msgid "Moves selected objects to clipboard"
+msgstr "Déplace les objets sélectionnés vers le presse-papiers"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:48
+msgid "Delete objects"
+msgstr "Supprimer des objets"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:49
+msgid "Playback demos"
+msgstr "Lecture des démos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:50
+msgid "Change Object Properties"
+msgstr "Modifier les propriétés d'un objet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:51
+msgid "Change to properties mode"
+msgstr "Passer en mode propriétés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:52
+msgid "Deselect all selected objects"
+msgstr "Désélectionner tous les objets"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:53
+msgid "Change Display parameters"
+msgstr "Modifier les paramètres d'affichage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:54
+msgid "Create benchwork"
+msgstr "Tracer un plateau de travail"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:55
+msgid "Create a box"
+msgstr "Tracer une boite"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:56
+msgid "Set Circle drawing command"
+msgstr "Définir la commande de dessin du cercle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:57
+msgid "Create a circle"
+msgstr "Créer un cercle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:58
+msgid "Draw a circle line from center"
+msgstr "Tracer un Cercle à partir du centre"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:59
+msgid "Draw a fixed radius circle line"
+msgstr "Trace un cercle d'un rayon donné"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:60
+msgid "Draw a circle line from tangent"
+msgstr "Tracer un Cercle à partir de la tangente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:61
+msgid "Set Curve drawing command"
+msgstr "Choisissez la commande pour dessiner des lignes courbes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:62
+msgid "Create a curved line"
+msgstr "Créer une ligne courbe"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:63
+msgid "Create a curved line from End"
+msgstr "Tracer une courbe à partir de l'extrémité"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:64
+msgid "Create a curved line from center"
+msgstr "Tracer une courbe à partir du centre"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:65
+msgid "Create a curved line from chord"
+msgstr "Tracer une courbe à partir de la corde"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:66
+msgid "Create a curved line from tangent"
+msgstr "Tracer une courbe à partir de la tangente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:67
+msgid "Create a Bezier line"
+msgstr "Tracer une ligne de Bézier"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:68
+msgid "Create a dimension line"
+msgstr "Tracer une ligne de cote"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:69
+msgid "Create a filled box"
+msgstr "Tracer une boite pleine"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:70
+msgid "Create a filled circle"
+msgstr "Créer un cercle rempli"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:71
+msgid "Draw a filled circle from center"
+msgstr "Tracer un Cercle plein autour du centre"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:72
+msgid "Draw a fixed radius filled circle"
+msgstr "Trace un cercle plein d'un rayon donné"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:73
+msgid "Draw a filled circle from tangent"
+msgstr "Tracer un Cercle plein depuis la tangente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:74
+msgid "Create a polygon"
+msgstr "Tracer un polygone"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:75
+msgid "Create a filled polygon"
+msgstr "Tracer un polygone plein"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:76
+msgid "Create a polyline"
+msgstr "Tracer une polyligne"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:77
+msgid "Create a straight line"
+msgstr "Tracer une ligne droite"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:78
+msgid "Set Line drawing command"
+msgstr "Choisissez la commande pour dessiner des lignes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:79
+msgid "Set Shape drawing command"
+msgstr "Choisir la commande pour dessiner des formes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:80
+msgid "Draw table edge"
+msgstr "Tracer le bord de table"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:81
+msgid "Easement menu"
+msgstr "Menu Courbes de transition"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:83
+msgid "Generate a Parts List of selected objects"
+msgstr "Créer une liste de pièces à partir des objets sélectionnés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:84
+msgid "Set Import/Export mode"
+msgstr "Définir le mode Import/Export"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:85
+#, fuzzy
+msgid "Export an .xti file"
+msgstr "Exporter un fichier *.xti"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:86
+msgid "Export a Bitmap image"
+msgstr "Exporter une image bitmap"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:87
+msgid "Export a DXF file"
+msgstr "Exporter dans un fichier DXF"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:88
+#, fuzzy
+msgid "Export an SVG file"
+msgstr "Exporter dans un fichier DXF"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:90
+msgid "Flip selected objects"
+msgstr "Retourner les objets sélectionnés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:91
+msgid "Adjust snap grid"
+msgstr "Ajuster la grille d'accrochage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:92
+msgid "Enable snap grid"
+msgstr "Activer la grille d'accrochage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:93
+msgid "Show snap grid"
+msgstr "Afficher la grille d'accrochage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:94
+msgid "Create a structure from a Group of objects"
+msgstr "Créer un bâtiment à partir d'un groupe d'objets"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:95
+msgid "Create a hand-laid turnout"
+msgstr "Créer un aiguillage conçu en manuel"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:96
+msgid "Create a track helix"
+msgstr "Créer une voie hélicoïdale"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:97
+#, fuzzy
+msgid "Import an .xti file"
+msgstr "Importer un fichier *.xti"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:98
+msgid "Import an .xti file as a Module"
+msgstr "Importez un fichier .xti en tant que module"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:99
+msgid "Join two tracks"
+msgstr "Raccorder deux voies"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:100
+msgid "Join two lines or polylines"
+msgstr "Raccorder deux lignes ou polylignes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:101
+msgid "Set Join mode"
+msgstr "Définir le mode Raccorder"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:102
+msgid "Change Layers"
+msgstr "Changer de calques"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:103
+msgid "Selects the current drawing layer"
+msgstr "Sélectionne le calque courant du dessin"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:104
+msgid "Layout parameters"
+msgstr "Paramètres de calques"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:106
+msgid "Show/Hide Map Window"
+msgstr "Afficher/Masquer la fenêtre de navigation"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:107
+msgid "Select Measurement Tool"
+msgstr "Sélectionner l'outil de mesure"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:108
+msgid "Modify or extend a track"
+msgstr "Modifier ou prolonger une voie"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:109
+msgid "Change To modify mode"
+msgstr "Changer pour Modifier le mode"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:110
+msgid "Move selected objects"
+msgstr "Déplacer les objets sélectionnés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:111
+msgid "Move a label"
+msgstr "Déplacer une étiquette"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:112
+msgid "Move selected objects to current layer"
+msgstr "Déplacer les objets sélectionnés vers le calque actuel"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:114
+msgid "Print a bitmap"
+msgstr "Imprimer un BitMap"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:115
+msgid "Pan or zoom the layout"
+msgstr "Panoramique ou zoom sur le plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:116
+msgid "Change to zoom/pan mode"
+msgstr "Passer en mode zoom/pan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:117
+msgid "Create a parallel track"
+msgstr "Créer une voie parallèle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:118
+msgid "Create a parallel line"
+msgstr "Tracer une ligne parallèle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:119
+msgid "Set Parallel mode"
+msgstr "Définir le mode parallèle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:120
+msgid "Register"
+msgstr "Registre"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:121
+msgid "Copy objects from clipboard"
+msgstr "Copier les objets du presse-papiers"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:122
+msgid "Perferences dialog"
+msgstr "Boîte de dialogue des préférences"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:123
+msgid "Display prices of turnouts, sectional tracks and structures"
+msgstr ""
+"Affichage des prix des aiguillages, des sections de voies et des bâtiments"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:124
+msgid "Print the layout"
+msgstr "Imprimer le plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:125
+msgid "Loads and unloads parameter files into/from toolbar"
+msgstr ""
+"Charge et décharge les fichiers de paramètres dans/depuis la barre d'outils"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:126
+msgid "Elevation Profile Command"
+msgstr "Commande de profil d'élévation"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:128
+msgid "Command recorder"
+msgstr "Enregistrement de commande"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:130
+msgid "Update selected Turnout and Structure definitions"
+msgstr ""
+"Mettre à jour les définitions sélectionnées d'aiguillage et de bâtiment"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:131
+msgid "Rescale selected objects"
+msgstr "Changer d'échelle les objets sélectionnés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:132
+msgid "Rotate selected object(s)"
+msgstr "Faire pivoter le ou les objet(s) sélectionnés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:133
+msgid "Show a ruler"
+msgstr "Afficher une règle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:134
+msgid "Select objects"
+msgstr "Sélectionnez des objets"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:135
+msgid "Change To Select Mode"
+msgstr "Passer en mode sélection"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:136
+msgid "Selects all objects on the layout"
+msgstr "Sélectionne tous les objets du plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:137
+msgid "Selects all objects in the current Layer"
+msgstr "Sélectionne tous les objets du calque actuel"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:138
+msgid "Choose objects by Index number"
+msgstr "Choisissez des objets par numéro d'index"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:139
+msgid "Invert current selection"
+msgstr "Inverser la sélection actuelle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:140
+msgid "Configure the Printer"
+msgstr "Configurer l'imprimante"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:141
+msgid "Set Split mode"
+msgstr "Configurer le mode Fractionnement"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:142
+msgid "Split a track"
+msgstr "Segmenter une voie"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:143
+msgid "Split a straight, curved, circle, polygon or polyline Draw Object "
+msgstr ""
+"Fractionner un objet de dessin droit, incurvé, circulaire, polygonal ou "
+"polyligne"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:144
+msgid "Select stranded (unconnected) track pieces"
+msgstr "Sélectionner des segments de voie isolés (non connectés)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:145
+msgid "Create a sensor (ie. a occupancy detector or a toggle switch)"
+msgstr ""
+"Créer un capteur (c.a.d. détecteur de présence ou interrupteur à bascule)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:146
+msgid "Create a signal for train control"
+msgstr "Créer un signal pour le contrôle du train"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:147
+msgid "Choose which commands are sticky"
+msgstr "Choisissez les commandes qui sont collantes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:148
+msgid "Create straight track"
+msgstr "Créer une voie droite"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:149
+msgid "Place a structure on the layout"
+msgstr "Mettre une bâtiment sur le plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:150
+msgid "Create a switchmotor for turnout control"
+msgstr "Créer un moteur pour le contrôle d'un aiguillage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:151
+msgid "Edit a switchmotor definition"
+msgstr "Editer une définition de moteur d'aiguillage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:152
+msgid "Enter text on the layout"
+msgstr "Entrer du texte sur le plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:153
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:612
+msgid "Controls the size of the entered text"
+msgstr "Ajuste la taille du texte saisi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:155
+msgid "Tip of the Day window"
+msgstr "Fenêtre d'astuce du jour"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:157
+msgid "Change To Run Trains Mode"
+msgstr "Passer en mode Trains"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:158
+msgid "Pause/Resume Trains"
+msgstr "Pause/Go Trains"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:159
+msgid "Place a car on the layout"
+msgstr "Mettre un véhicule sur le plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:160
+msgid "Exit Trains"
+msgstr "Quitter \"Trains\""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:161
+msgid "Trim a line, circle or polyline Draw Object using a second Object"
+msgstr ""
+"Découper une ligne, un cercle ou une polyligne Dessiner un objet à l'aide "
+"d'un deuxième objet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:162
+msgid "Hide/Unhide a track"
+msgstr "Masquer/afficher une voie"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:163
+msgid "Make/Unmake a track a bridge"
+msgstr "Construire/défaire une voie un pont"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:164
+msgid "Place a turnout or sectional track"
+msgstr "Placer un aiguillage ou une section de voie"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:165
+msgid "Create a new turnout definition"
+msgstr "Créer une nouvelle définition d'aiguillage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:166
+msgid "Place a turntable"
+msgstr "Installer un pont tournant"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:167
+msgid "Updates old source files with 3 part titles"
+msgstr "Met à jour les anciens fichiers source avec des titres en 3 parties"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:169
+msgid "Ungroup objects"
+msgstr "Dissocier l'objet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:170
+msgid "Draw tracks with thin lines"
+msgstr "Tracez des voies avec des voies fines"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:171
+msgid "Draw tracks with medium lines"
+msgstr "Tracez des voies avec des voies moyennes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:172
+msgid "Draw tracks with thick lines"
+msgstr "Tracez des voies avec des voies épaisses"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:173
+msgid "Change drawing scale"
+msgstr "Changer l'échelle de dessin"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:174
+#, fuzzy
+msgid "Zoom to Fit"
+msgstr "Zoom arrière"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:175
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:206
+msgid "Zoom in"
+msgstr "Zoom avant"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:176
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:207
+msgid "Zoom out"
+msgstr "Zoom arrière"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:180
+msgid "Curved Fixed"
+msgstr "Courbe fixe"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:181
+msgid "Preferred Radius"
+msgstr "Rayon préféré"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:182
+msgid "Modify Draw"
+msgstr "Modifier le dessin"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:189
+msgid "Rotation Angle"
+msgstr "Angle de rotation"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:190
+msgid "Rot Center X"
+msgstr "Centre de rotation X"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:191
+msgid "Rot Center Y"
+msgstr "Centre de rotation Y"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:193
+msgid "File Menu"
+msgstr "Menu fichier"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:194
+msgid "Save layout"
+msgstr "Enregistrer le plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:195
+msgid "Save layout under a new name "
+msgstr "Enregistrer le plan sous un nouveau nom "
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:196
+msgid "New layout"
+msgstr "Nouveau plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:197
+msgid "Generate parts list"
+msgstr "Créer une liste de pièces"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:198
+msgid "Load a layout"
+msgstr "Charger un plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:199
+msgid "Manage Parameter Files"
+msgstr "Gérer les fichiers de paramètres"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:200
+msgid "Print layout"
+msgstr "Mise en page d'impression"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:201
+msgid "Exit the program"
+msgstr "Quitter le programme"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:202
+msgid "Revert to last saved state of layout plan"
+msgstr "Revenir au dernier état enregistré du plan de réseau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:203
+msgid "Printer Setup"
+msgstr "Configuration de l'imprimante"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:204
+msgid "Edit menu"
+msgstr "Menu d'édition"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:205
+msgid "Redraw layout"
+msgstr "Redessiner le plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:208
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:211
+msgid "Tools menu"
+msgstr "Menu d'outils"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:209
+msgid "View menu"
+msgstr "Afficher le menu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:210
+msgid "Toolbar configuration"
+msgstr "Configuration de la barre d'outils"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:212
+msgid "Options menu"
+msgstr "Menu d'options"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:213
+msgid "Playback/Record commands"
+msgstr "Commandes de Lecture/Enregistrement"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:214
+msgid "Window menu"
+msgstr "Menu fenêtre"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:215
+msgid "Help menu"
+msgstr "Menu d'aide"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:216
+msgid "Recent error messages and explanations"
+msgstr "Messages d'erreur récents et explications"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:217
+msgid "Move Hot Bar left"
+msgstr "Faire défiler la Barre rapide à gauche"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:218
+msgid "Move Hot Bar right"
+msgstr "Faire défiler la Barre rapide à droite"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:219
+msgid "Total track count"
+msgstr "Nombre total de voies"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:220
+msgid "X Position of cursor"
+msgstr "Position X du curseur"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:221
+msgid "Y Position of cursor"
+msgstr "Position Y du curseur"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:222
+msgid "Drawing scale"
+msgstr "Échelle du dessin"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:223
+msgid "Message and status line"
+msgstr "Message et ligne d'état"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:224
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:225
+msgid "Main layout canvas"
+msgstr "Zone de dessin principale"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:226
+msgid "Main drawing canvas"
+msgstr "Zone de travail principale"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:227
+msgid "Command buttons"
+msgstr "Boutons de commande"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:228
+msgid "Menus"
+msgstr "Menus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:229
+msgid "Tile, Filename and Window Manager buttons"
+msgstr "Boutons, Nom de fichier et Gestionnaire de fenêtres"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:230
+msgid "Turnout and Structure Hot Bar"
+msgstr "Barre de sélection des aiguillages et bâtiments"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:231
+msgid "Active layer list and layer buttons"
+msgstr "Liste de calques actifs et boutons de calque"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:232
+msgid "Map window"
+msgstr "Fenêtre principale"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:233
+msgid "This is the portion of the layout shown in the Main Window canvas"
+msgstr ""
+"Il s'agit de la partie du plan affichée dans le zone de dessin de la fenêtre "
+"principale"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:234
+msgid "Raise or Lower all Selected Track"
+msgstr "Elever ou abaisser toute la voie sélectionnée"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:235
+msgid "Name of block"
+msgstr "Nom du bloc"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:236
+msgid "Script that the block will run"
+msgstr "Script d'exécution du bloc"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:237
+msgid "List of tracks in the Block"
+msgstr "Liste des voies du bloc"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:238
+msgid "Add or Update car object"
+msgstr "Ajouter ou mettre à jour un objet véhicule"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:239
+msgid "Manufacturer name"
+msgstr "Nom du fabricant"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:242
+msgid "Is the Car a Locomotive?"
+msgstr "Le véhicule est-il une locomotive?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:243
+msgid "Part Number and Description"
+msgstr "Référence N° et description"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:244
+msgid "Manufacturer Part Number"
+msgstr "Référence fabricant"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:245
+msgid "Use the Selected figure as the car image"
+msgstr "Utilisez la figure sélectionnée comme image de véhicule"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:246
+msgid "Use the default figure as the car image"
+msgstr "Utilisez la figure par défaut comme image de véhicule"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:247
+msgid "Optional description of the Car Part"
+msgstr "Description facultative du modèle de véhicule"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:248
+msgid "Flip car image"
+msgstr "Effet miroir d'un véhicule"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:249
+msgid "Display Car Item information or reporting marks and dimensions"
+msgstr ""
+"Afficher des informations sur le véhicule ou la plaque d'immatriculation et "
+"les dimensions"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:250
+msgid "Full Roadname"
+msgstr "Nom complet de la route"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:251
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:252
+msgid "Car Type"
+msgstr "Type de véhicule"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:253
+msgid "Reporting Marks (Roadname abbreviation)"
+msgstr "Sigles (abréviation du nom du réseau)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:254
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:489
+msgid "Car Number"
+msgstr "N° de véhicule"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:255
+msgid "Car body Color"
+msgstr "Couleur de carrosserie"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:256
+msgid "Length of car body"
+msgstr "Longueur du chaudron"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:257
+msgid "Width of car body"
+msgstr "Largeur du chaudron"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:258
+msgid "Distance between Trucks "
+msgstr "Distance entre les bogies "
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:259
+msgid "Distance Trucks are displaced along Car"
+msgstr "Répartition des bogies le long de la voiture"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:260
+msgid "Coupler are mounted on body or truck"
+msgstr "Les attelages sont montés sur les chassis ou les bogies"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:261
+msgid "Overall Coupled Length"
+msgstr "Longueur totale couplée"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:262
+msgid "Coupler Length from end of car"
+msgstr "Longueur de l'attelage à partir du bout du véhicule"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:263
+msgid "Diagram of Car"
+msgstr "Schéma de véhicule"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:264
+msgid "Item Index Number"
+msgstr "Numéro d'index de l'objet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:265
+msgid "Original Purchase Price"
+msgstr "Prix d'achat d'origine"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:267
+msgid "Condition of car"
+msgstr "Etat du véhicule"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:268
+msgid "Original Purchase Date - yyyymmdd"
+msgstr "Date d'achat originale - aaaammjj"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:269
+msgid "Last Service Date - yyyymmdd"
+msgstr "Date du dernier entretien - aaaammjj"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:270
+msgid "Number of identical cars to be entered"
+msgstr "Nombre de matériels roulants identiques à inscrire"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:271
+msgid "Do all the cars have the same Number?"
+msgstr "Est-ce que toutes les matériels roulants ont le même numéro ?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:272
+msgid "Notes about the car"
+msgstr "Notes sur le véhicule"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:273
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:274
+msgid "Create a new car Part or Prototype definitions"
+msgstr "Créer une nouvelle définition de pièce ou de prototype de véhicule"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:275
+msgid "Finds the selected Car Item on the layout"
+msgstr "Trouve l'article de véhicule sélectionné sur le plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:276
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:277
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:278
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:279
+msgid "Sort the Item list"
+msgstr "Trier la liste d'articles"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:281
+msgid "Edit the selected Car Item"
+msgstr "Modifier le titre du véhicule sélectionné"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:282
+msgid "Add a new Car Item"
+msgstr "Ajouter un nouveau nom de véhicule"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:283
+msgid "Delete from Inventory or return to Shelf"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:284
+msgid "Import a Car Item .csv file"
+msgstr "Importer du véhicule à partir d'un fichier .csv"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:285
+msgid "Export a Car Item .csv file"
+msgstr "Exporter un fichier Car Item .csv"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:286
+msgid "Create a text list of the Car Items"
+msgstr "Créer la liste des noms de matériels roulants"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:287
+msgid "Specifies the radius of the circle track"
+msgstr "Spécifie le rayon de la voie circulaire"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:288
+msgid "Default command is Describe or Select"
+msgstr "La commande par défaut est \"Propriétés\" ou \"Sélectionner\""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:289
+msgid "Action to invoke on Right-Click"
+msgstr "Action à appeler lors d'un clic droit"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:290
+msgid ""
+"Replace current selection with clicked object or add clicked object to "
+"selection"
+msgstr ""
+"Remplacer la sélection actuelle par un objet cliqué ou ajouter un objet "
+"cliqué à la sélection"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:291
+msgid "Clicking into an empty area clears selection if select mode is <add>"
+msgstr ""
+"Cliquer dans une zone vide efface la sélection si le mode de sélection est "
+"<Ajouter>"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:293
+msgid "The list of control elements"
+msgstr "La liste des éléments de contrôle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:294
+msgid "Edit the element"
+msgstr "Editer l'élément"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:295
+msgid "Delete the element"
+msgstr "Supprimer l'élément"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:296
+msgid "Contents Label for new Parameter file"
+msgstr "Contenu de l'étiquette du nouveau fichier de paramètres"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:297
+msgid "Desired curve radius for new track"
+msgstr "Rayon de courbe souhaité pour la nouvelle piste"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:298
+msgid "List of custom designed turnouts and structures"
+msgstr "Liste des aiguillages et des bâtiments conçus sur mesure"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:299
+msgid "Change description, manufacturer or part number."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:300
+msgid "Remove selected entries"
+msgstr "Supprimer les entrées sélectionnées"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:301
+#, fuzzy
+msgid "Copy selected entries to parameter file"
+msgstr "Copier les entrées sélectionnées dans le fichier de paramètres"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:302
+#, fuzzy
+msgid "Create the selected type"
+msgstr "Supprimer les wagons ou locomotives sélectionnés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:303
+#, fuzzy
+msgid "Create a new part or prototype?"
+msgstr "Créer une nouvelle pièce ou un prototype"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:304
+msgid "Update custom file and close"
+msgstr "Mettre à jour le fichier personnalisé et fermer"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:305
+msgid "Executes the next step of the demo"
+msgstr "Exécute la prochaine étape de la démo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:306
+msgid "Skip to next demo"
+msgstr "Passer à la prochaine démo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:307
+msgid "Stops the demonstration and returns you to XTrackCAD"
+msgstr "Arrêt de la démonstration et retour à XTrackCAD"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:308
+msgid "Select speed of Playback"
+msgstr "Sélectionnez la vitesse de lecture"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:309
+msgid "This is where comments about the demo are displayed"
+msgstr "C'est là que les commentaires sur la démo sont affichés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:346
+msgid "Move the Main canvas if you drag near the edge"
+msgstr ""
+"Déplacez la zone de dessin principale lorsque vous vous approchez des bords"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:347
+msgid "Color tracks by layer or individually"
+msgstr "Couleur des voies par calque ou individuellement"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:348
+msgid "Color draw objects by layer or individually"
+msgstr "Couleur des objets dessinés par calque ou individuellement"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:349
+msgid "Controls the drawing of hidden tracks"
+msgstr "Ajuste le dessin des voies cachées"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:350
+msgid "Controls the drawing of End-Points"
+msgstr "Ajuste le dessin des points d'extrémité"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:351
+msgid "How to draw track ties"
+msgstr "Comment dessiner des traverses"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:352
+msgid "Show crosshair at center of curves"
+msgstr "Afficher le réticule au centre des courbes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:353
+msgid "Drawing scale when to draw tracks with 2 rails"
+msgstr "Échelle minimale pour dessiner les voies avec 2 rails"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:354
+msgid "Drawing scale of the map window"
+msgstr "Échelle de dessin de la fenêtre de navigation"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:355
+msgid "Whether the main layout is updated while dragging on the Map"
+msgstr "Mise à jour du plan de trajet lors du dessin sur la carte"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:356
+msgid "Enable labels for Turnouts, Flextrack Lengths and Elevations"
+msgstr ""
+"Afficher les étiquettes pour les aiguillages, les voies flexibles et les "
+"élévations"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:357
+msgid "When to label Turnout, Flextrack Lengths and Elevations"
+msgstr ""
+"Quand étiqueter les aiguillages, les longueurs de voie flexibles ou les "
+"mesures d'élévation"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:358
+msgid "Font size for labels on layout"
+msgstr "Taille de police des étiquettes sur le plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:359
+msgid "Label elements on the Hot Bar"
+msgstr "Éléments d'étiquetage sur la barre d'objets"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:360
+msgid "Label elements on layout"
+msgstr "Éléments d'étiquetage sur le plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:361
+msgid "Label elements for lists"
+msgstr "Éléments d'étiquetage pour les listes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:362
+msgid "How to group cars on the Train Hot Bar"
+msgstr "Regroupement des matériels roulants dans le catalogue de pièces"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:363
+msgid "Delay (in mS) between updating train movements"
+msgstr "Intervalle de mise à jour (en ms) des mouvements de train"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:364
+msgid "Don't show trains in tunnels when tunnels are hidden"
+msgstr ""
+"Ne pas visualiser les trains dans les tunnels quand les tunnels sont cachés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:365
+msgid "Display unconnected endpoints of track with special marks"
+msgstr "Mettez en surbrillance les extrémités non connectées"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:366
+msgid "Whether the Main Drawing Area shows as much of the room as possible"
+msgstr ""
+"Indiquer si la zone de dessin principale montre la plus grande partie "
+"possible de la pièce"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:367
+msgid "Don't hide system cursor when program cursors are showing"
+msgstr ""
+"Ne pas cacher le curseur du système lorsque les curseurs des programmes "
+"s'affichent"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:369
+msgid "Width of the lines"
+msgstr "Épaisseur des lignes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:370
+msgid "Color of the lines"
+msgstr "Couleur des voies"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:371
+msgid "List of types of Lumber"
+msgstr "Liste des types d'éléments de structure"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:372
+msgid "Color of Benchwork"
+msgstr "Couleur du châssis"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:373
+msgid "Orientation of Benchwork"
+msgstr "Orientation du châssis"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:374
+msgid "Size of Dimension Arrows"
+msgstr "Largeur des Flèches de cotation"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:375
+msgid "Width of Box"
+msgstr "Largeur de boîte"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:376
+msgid "Height of Box"
+msgstr "Hauteur de caisse"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:377
+msgid "Angle of Line"
+msgstr "Angle de ligne"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:378
+msgid "Radius of Curve"
+msgstr "Rayon de courbe"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:380
+msgid "This controls the sharpness of the easement curve"
+msgstr "Cela contrôle la netteté et la taille de la courbe de transition"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:381
+msgid "Minimum radius"
+msgstr "Rayon minimum"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:382
+msgid "Maximum offset"
+msgstr "Décalage maximum"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:383
+msgid "Easement length"
+msgstr "Longueur de la courbe de transition"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:384
+msgid ""
+"These radio buttons are a short-cut for Values of 0.0, 0.5, 1.0 and 2.0. "
+"None turns Easements off"
+msgstr ""
+"Ces boutons sont un raccourci pour les valeurs de 0.0, 0.5, 1.0 et 2.0. "
+"Aucun ne désactive les courbes de transition"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:385
+msgid "Complete easement selection"
+msgstr "Terminer la sélection des courbes de transition"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:386
+msgid "Type of elevation"
+msgstr "Type d'élévation"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:387
+msgid "Height of End Point"
+msgstr "Hauteur du point de fin"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:388
+msgid "Compute elevation based on neighbors"
+msgstr "Calculer la hauteur en fonction des voies adjacentes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:389
+msgid "Compute grade based on neighbors"
+msgstr "Calculer la pente en fonction des voies adjacentes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:390
+msgid "Specify a name for an End-Point"
+msgstr "Spécifiez un nom pour un point de fin"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:392
+msgid "Print parts list"
+msgstr "Imprimer la nomenclature"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:393
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:543
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:666
+msgid "Invoke the Print Setup dialog"
+msgstr "Ouvre la boîte de dialogue Configuration d'impression"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:394
+msgid "Save parts list to file"
+msgstr "Enregistrer la nomenclature dans un fichier"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:395
+msgid "This is the list of parts for the layout"
+msgstr "Voici la liste des pièces pour ce plan de voie"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:396
+msgid "Enable prices on the Parts List"
+msgstr "Activer les prix sur la liste des pièces"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:397
+msgid "Enable index listing on the Parts List"
+msgstr "Activer la liste d'index sur la liste de pièces"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:398
+msgid "Save the note and close window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:399
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:400
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:480
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:481
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:617
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:618
+#, fuzzy
+msgid "Set the position for the note"
+msgstr "Spécifie le diamètre du pont tournant"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:401
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:482
+#, fuzzy
+msgid "Set the layer for the note"
+msgstr "Spécifie le diamètre du pont tournant"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:402
+#, fuzzy
+msgid "Enter the title of the file"
+msgstr "Entrer du texte sur le plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:403
+msgid "Enter the path and name of the file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:404
+msgid "Open the document in the default application"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:405
+msgid "Select the file from your system"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:406
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:409
+msgid "Spacing between major grid lines"
+msgstr "Espacement entre les lignes principales de la grille"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:407
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:410
+msgid "Allows the spacing to be subdivided"
+msgstr "Permet de diviser l'espacement"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:408
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:411
+msgid "Specifies if positions are snaped in this direction"
+msgstr "Activez la grille magnétique pour cette orientation"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:412
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:413
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:414
+msgid "Shows the origin and angle of the grid"
+msgstr "Affiche l'origine et l'angle de la grille"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:415
+msgid "Specifies if the grid is shown"
+msgstr "Spécifie si la grille est affichée"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:416
+msgid "Completes the grid specification"
+msgstr "Enregistrer le réglage de la grille et quitter"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:420
+msgid "Number of segments in Group"
+msgstr "Nombre de segments dans le groupe"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:421
+msgid "Replace the Selected object with the new definition?"
+msgstr "Faut-il remplacer l'objet sélectionné par la nouvelle définition?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:422
+msgid "Creates a new Structure (or Turnout)"
+msgstr "Crée un nouveau bâtiment (ou aiguillage)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:423
+msgid "Elevation difference of Helix End-Points"
+msgstr "Différence d'élévation des bouts de l'hélicoïde"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:424
+msgid "Helix Radius"
+msgstr "Rayon de l'hélicoïde"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:425
+msgid "Number of turns in the helix"
+msgstr "Nombre de tours de l'hélicoïde"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:426
+#, fuzzy
+msgid "Angle between helix entrance and exit"
+msgstr "Angle entre l'entrée et la sortie de l'hélicoïde"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:427
+msgid "Grade in helix"
+msgstr "Pente de l'hélicoïde"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:428
+msgid "Separation between helix layers including baseboard, track, etc"
+msgstr ""
+"Séparation entre les couches d'hélicoïde comprenant le support, la voie, etc"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:429
+msgid "Index numbers of objects, separated by commas"
+msgstr "Numéros d'index des objets, séparés par des virgules"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:430
+msgid "Desired curve radius between straight tracks"
+msgstr "Rayon de courbe souhaité entre les voies droites"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:431
+msgid "Layer list"
+msgstr "Liste des calques"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:432
+msgid "Layer Name"
+msgstr "Nom du calque"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:433
+msgid "Hide Layer Button on MenuBar"
+msgstr "Cacher le bouton du calque sur la barre de menu"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:434
+msgid "Color of layer"
+msgstr "Couleur du calque"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:435
+msgid "Layer is drawn on Main window"
+msgstr "Le calque est dessiné dans la fenêtre principale"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:436
+msgid "Layer cannot be changed"
+msgstr "Le calque ne peut pas être modifié"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:437
+msgid "Use color for this Layer if color-by-layer is set"
+msgstr "Utiliser une couleur pour ce calque si utiliser-la-couleur est coché"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:438
+msgid "Other Layers this Layer also shows/hides"
+msgstr "Les autres calques que ce calque s'affichent/se cachent également"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:439
+msgid "Layer is a Module"
+msgstr "Le calque est un module"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:440
+msgid "Layer is drawn on Map window"
+msgstr "Le calque est dessiné dans la fenêtre de navigation"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:441
+msgid "Layer inherits settings from Layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:442
+#, fuzzy
+msgid "Specifies the Modelling Scale for this Layer"
+msgstr "Spécifie l'échelle de modélisation"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:443
+#, fuzzy
+msgid "Specifies the rail gauge for this Layer"
+msgstr "Spécifie l'écartement des rails, c.à.d. la distance entre les rails"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:444
+#, fuzzy
+msgid ""
+"Specifies minimum track radius for this layer. Tracks with a smaller radius "
+"are considered exceptional."
+msgstr ""
+"Spécifie le rayon de voie minimal (en pouces ou en centimètres). Les voies "
+"avec un rayon plus petit sont considérées comme exceptionnelles."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:445
+#, fuzzy
+msgid ""
+"Specifies maximum track grade percent (%) for this layer. Tracks with a "
+"larger grade are considered exceptional."
+msgstr ""
+"Spécifie l'élévation maximale de la voie exprimée en pourcentage (%). Les "
+"voies avec une élévation plus grande sont considérées comme exceptionnelles."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:446
+#, fuzzy
+msgid "Specifies the tie length for this layer."
+msgstr "Spécifie le diamètre du pont tournant"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:447
+#, fuzzy
+msgid "Specifies the tie width for this layer."
+msgstr "Spécifie le diamètre du pont tournant"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:448
+#, fuzzy
+msgid "Specifies the tie spacing for this layer."
+msgstr "Spécifie le rayon de la voie circulaire"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:449
+#, fuzzy
+msgid "Add a new layer after the selected layer"
+msgstr "Supprimer les wagons ou locomotives sélectionnés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:450
+msgid "Delete the selected layer. There must be no objects in it."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:451
+msgid "Reset the layer to layout defaults"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:452
+msgid "Number of layer buttons to show"
+msgstr "Nombre de boutons de calques à afficher"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:453
+msgid "Number of objects in this layer"
+msgstr "Nombre d'objets dans ce calque"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:454
+msgid "Settings File to load when this layer is made current"
+msgstr "Fichier de paramètres à charger lorsque ce calque est mis à jour"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:456
+msgid "Load layer configuration from default"
+msgstr "Charger la configuration du calque par défaut"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:457
+msgid "Save current layer configuration as default"
+msgstr "Enregistrer la configuration actuelle comme calque par défaut"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:458
+msgid "Overwrite layer configuration with system default values"
+msgstr "Réinitialiser le réglage des calques aux valeurs par défaut du système"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:459
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:460
+msgid "Specifies the size of the room (in inches or centimeters)"
+msgstr "Spécifie la taille de la pièce (en pouces ou en centimètres)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:461
+msgid "Specifies the layout Title that will appear on printouts"
+msgstr "Spécifie le titre du plan qui apparaîtra sur les impressions"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:462
+msgid "Specifies the layout Subtitle that will appear on printouts"
+msgstr "Spécifie le sous-titre du plan qui apparaîtra sur les impressions"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:463
+msgid "Specifies the Modelling Scale"
+msgstr "Spécifie l'échelle de modélisation"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:464
+msgid "Specifies the rail gauge, ie. the distance between the rails"
+msgstr "Spécifie l'écartement des rails, c.à.d. la distance entre les rails"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:465
+msgid ""
+"Specifies minimum track radius (in inches or centimeters). Tracks with a "
+"smaller radius are considered exceptional."
+msgstr ""
+"Spécifie le rayon de voie minimal (en pouces ou en centimètres). Les voies "
+"avec un rayon plus petit sont considérées comme exceptionnelles."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:466
+#, fuzzy
+msgid ""
+"Specifies maximum track grade expressed as a percent (%). Tracks with a "
+"larger grade are considered exceptional."
+msgstr ""
+"Spécifie l'élévation maximale de la voie exprimée en pourcentage (%). Les "
+"voies avec une élévation plus grande sont considérées comme exceptionnelles."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:467
+#, fuzzy
+msgid "Specifies the tie length for the layout."
+msgstr "Spécifie le diamètre du pont tournant"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:468
+#, fuzzy
+msgid "Specifies the tie width for the layout."
+msgstr "Spécifie le diamètre du pont tournant"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:469
+#, fuzzy
+msgid "Specifies the tie spacing for the layout."
+msgstr "Voici la liste des pièces pour ce plan de voie"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:470
+msgid "Select the background image"
+msgstr "Sélectionnez l'image d'arrière-plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:471
+msgid "Remove the background image"
+msgstr "Supprimer l'image de fond"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:472
+msgid "Specifies the x offset of the bottom left of the background image"
+msgstr "Spécifie le décalage x en bas à gauche de l'image d'arrière-plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:473
+msgid "Specifies the y offset of the bottom left of the background image"
+msgstr "Spécifie le décalage y en bas à gauche de l'image d'arrière-plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:474
+msgid ""
+"Specifies how large the bottom edge of the background image should be in "
+"model units"
+msgstr ""
+"Spécifie la taille du bord inférieur de l'image d'arrière plan en unités du "
+"modèle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:475
+msgid ""
+"Specifies the screening of the background image from 0 (none) to 100% "
+"(vanishes)"
+msgstr ""
+"Spécifie le filtrage de l'image d'arrière-plan, de 0 (aucun) à 100% "
+"(disparaît)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:476
+msgid "Specifies the rotation angle of the background image in degrees"
+msgstr "Spécifie l'angle de rotation de l'image d'arrière-plan en degrés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:477
+msgid "Write a copy of current settings to a named file"
+msgstr "Écrire une copie des paramètres actuels dans un fichier nommé"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:478
+msgid "Override current settings from a named file"
+msgstr "Remplacer les paramètres actuels d'un fichier nommé"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:479
+msgid "Save the link and close window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:483
+#, fuzzy
+msgid "Enter the title of the linked webpage"
+msgstr "Ajuste la taille du texte saisi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:484
+#, fuzzy
+msgid "Enter the URL for the webpage"
+msgstr "Entrer du texte sur le plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:485
+msgid "Open the webpage in your browser"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:486
+msgid "Move by X"
+msgstr "Déplacer par X"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:487
+msgid "Move by Y"
+msgstr "Déplacer par Y"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:490
+msgid ""
+"This is the body of the Note. To change this select Modify from the File "
+"Menu"
+msgstr ""
+"Ceci est le texte de la note. Pour le changer, sélectionnez «Modifier» dans "
+"le menu «Fichier»"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:492
+msgid "Specifies number of pixels per inch (or centimeter)"
+msgstr "Spécifie le nombre de pixels par pouce (ou centimètre)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:494
+msgid ""
+"Specifies whether Layout Titles, Borders or Track Centerlines are printed on "
+"the BitMap"
+msgstr ""
+"Spécifie si les titres du plan, les bordures ou les axes des voies sont "
+"imprimés sur le BitMap"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:495
+msgid ""
+"Specifies the separation between the original track and the parallel track/"
+"line"
+msgstr ""
+"Spécifie la séparation entre la voie d'origine et la voie/ligne parallèle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:496
+msgid ""
+"Specifies the a factor that increases the seperation as the radius of the "
+"original track reduces. 0.0 means no increase."
+msgstr ""
+"Spécifie le facteur qui augmente la séparation à mesure que le rayon de la "
+"voie d'origine diminue. 0,0 signifie aucune augmentation."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:497
+msgid "Enter your name as specified in the XTrackCAD Registration Notice"
+msgstr ""
+"Entrez votre nom comme spécifié dans la notification d'enregistrement "
+"d'XTrackCAD"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:498
+msgid "Enter the key value as specified in the XTrackCAD Registration Notice"
+msgstr ""
+"Entrez la valeur de la clé telle que spécifiée dans la notification "
+"d'enregistrement d'XTrackCAD"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:499
+msgid "Validates the name and key. Terminates the registration command"
+msgstr "Valide le nom et la clé. Met fin à la commande d'enregistrement"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:500
+msgid "0 degrees is up or to the right"
+msgstr "0 degré est en haut et à droite"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:501
+msgid "Choose english (inches) or metric (centimeters)"
+msgstr "Choisissez anglais (pouces) ou métrique (cm)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:502
+msgid "How to display length measurements"
+msgstr "Comment afficher les mesures de longueur"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:503
+msgid "Do not create tracks to be shorter than this value"
+msgstr "Ne créez pas de voies plus courtes que cette valeur"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:504
+msgid "Maximum distance between connected end points"
+msgstr "Distance maximale entre des extrémités connectées"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:505
+msgid "Minimum angle between connected End-Points"
+msgstr "Angle minimal entre les extrémités connectées"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:506
+msgid "Specifies the minimum angle between tracks connected to a turntable"
+msgstr "Spécifie l'angle minimum entre les voies connectées à un pont tournant"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:507
+msgid "Trains will crash above this speed"
+msgstr "Les trains dérailleront au-dessus de cette vitesse"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:508
+msgid "Enable/Disable balloon popup help windows"
+msgstr "Activer/Désactiver les bulles d'aide contextuelles"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:509
+msgid "Enable/Disable show of flextrack on hotbar"
+msgstr "Activer/Désactiver l'affichage de la flextrack sur la barre rapide"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:510
+msgid "How far you can move the mouse before its considered a drag"
+msgstr ""
+"Jusqu'où vous pouvez déplacer la souris avant que ce soit considéré comme un "
+"glisser"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:511
+msgid "How long you can hold a mouse button down before its considered a drag"
+msgstr ""
+"Combien de temps pouvez-vous maintenir un bouton de la souris enfoncé avant "
+"que ce soit considéré comme un glisser"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:512
+msgid "Minimum distance (in pixels) between grid lines/ticks"
+msgstr "Distance minimale (en pixels) entre les lignes/marques de quadrillage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:513
+msgid ""
+"Specifies the Check Point frequency; number of modifications made since the "
+"last checkpoint."
+msgstr ""
+"Précise la fréquence des points de contrôle ; nombre de modifications "
+"apportées depuis le dernier point de contrôle."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:514
+msgid "Specifies the number of checkpoints after save before auto-saving."
+msgstr ""
+"Spécifie le nombre de points de contrôle après la sauvegarde avant la "
+"sauvegarde automatique."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:515
+msgid "Resume work on last layout or start with new layout"
+msgstr "Modifier le dernier plan de voies ou en créer un nouveau"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:517
+msgid "Updated cost of current selected item"
+msgstr "Coût actualisé de l'élément actuellement sélectionné"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:519
+msgid "Selection list for prices"
+msgstr "Liste de sélection des prix"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:520
+#, fuzzy
+msgid "Length of a piece of flex-track"
+msgstr "Prix d'une longueur spécifiée de voie flexible"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:521
+msgid "Price of specified length of flex-track"
+msgstr "Prix d'une longueur spécifiée de voie flexible"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:523
+msgid "Controls the printing of a centerline of track cmdPrint"
+msgstr "Ajuste le dessin de l’axe des voies"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:524
+msgid "Controls the reduction (scale) of the printout"
+msgstr "Ajuste la réduction (d'échelle) pour l'impression"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:525
+msgid "Scaled page width (Scale times physical page width)"
+msgstr ""
+"Spécifiez la largeur de la page (échelle multipliée par la largeur du papier "
+"physique)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:526
+msgid "Sets page size to the maximum (based on scale and physical page size)"
+msgstr ""
+"Définit le format maximum de la page (en fonction de l'échelle et du format "
+"de papier physique)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:527
+msgid "Scaled page height (Scale times physical page height)"
+msgstr ""
+"Hauteur de page mise à l'échelle (échelle multipliée par la hauteur de page "
+"physique)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:528
+msgid "Sets scale, origin and angle for a one page printout of the layout"
+msgstr ""
+"Définit l'échelle, l'orientation et l'angle pour l'impression d'une page du "
+"plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:529
+msgid "Print page in Portrait or Landscape format"
+msgstr "Imprimer la page au format Portrait ou Paysage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:530
+msgid "Order of printing pages"
+msgstr "Ordre des pages d'impression"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:531
+msgid "Print Title, Date, Author and other information at bottom of page?"
+msgstr ""
+"Imprimer le titre, la date, l'auteur et d'autres informations en bas de "
+"page ?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:532
+msgid "Ignore unprintable page margins?"
+msgstr "Ignorer les marges non imprimables?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:533
+msgid "Print Registration Marks at 1:1?"
+msgstr "Imprimer les aides au positionnement à l'échelle 1:1 ?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:534
+msgid "Print Snap Grid?"
+msgstr "Imprimer la grille magnétique ?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:535
+msgid "Print Rulers at the layout edge only, or on all page edges, or nowhere?"
+msgstr ""
+"Imprimer les règles sur le bord de la mise en page uniquement, ou sur tous "
+"les bords de la page, ou nulle part?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:536
+msgid "Print Roadbed Outline?"
+msgstr "Imprimer le contour du ballast ?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:537
+msgid "Print Roadbed Outline"
+msgstr "Imprimer le contour du ballast"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:538
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:539
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:541
+msgid ""
+"Origin of the print grid. This is useful if you want to reprint a set of "
+"pages"
+msgstr ""
+"Origine de la grille d'impression. Utile si certaines pages sont réimprimées"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:540
+msgid "Resets the origin and angle to 0"
+msgstr "Réinitialise à 0 l'alignement et l'angle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:542
+msgid "Deselects all pages"
+msgstr "Désélectionner toutes les pages"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:544
+msgid "Print selected pages and terminates the print command"
+msgstr "Imprime les pages sélectionnées et termine la commande d'impression"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:545
+msgid "List of loaded, shown or hidden parameter files"
+msgstr "Liste des fichiers de paramètres chargés, affichés ou cachés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:546
+msgid "Show parameter files by names or descriptions"
+msgstr "Afficher les fichiers de paramètres par noms ou descriptions"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:547
+msgid "Toggle the shown status of the selected parameter file"
+msgstr "Commuter l'état affiché du fichier de paramètres sélectionné"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:548
+msgid "Find extra parameter files from the filesystem"
+msgstr ""
+"Trouver des fichiers de paramètres supplémentaires dans le système de "
+"fichiers"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:549
+#, fuzzy
+msgid "Bookmark parameter files"
+msgstr "Sélectionnez les fichiers de paramètres"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:550
+msgid "Find parameter files from the system library"
+msgstr "Trouver des fichiers de paramètres dans la bibliothèque système"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:551
+msgid "Update parameter file list"
+msgstr "Mettre à jour la liste des fichiers de paramètres"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:552
+msgid "Reload parameter file from list"
+msgstr "Recharger un fichier de paramètres à partir de la liste"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:553
+msgid "Select all parameter files shown"
+msgstr "Sélectionnez tous les fichiers de paramètres affichés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:554
+#, fuzzy
+msgid "Remove parameter files from active list"
+msgstr "Recharger un fichier de paramètres à partir de la liste"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:555
+msgid "Profile of specified path"
+msgstr "Profil de la voie spécifiée"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:556
+msgid "Clear the profile"
+msgstr "Effacer le profil de hauteur"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:557
+msgid "Print the profile"
+msgstr "Imprimer le profil"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:559
+msgid "Stop recording"
+msgstr "Arrêt d'enregistrement"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:560
+msgid "Insert a message"
+msgstr "Insérer un message"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:561
+msgid "End a message"
+msgstr "Fin du message"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:562
+msgid "Message body"
+msgstr "Corps du message"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:563
+msgid "Possible turnouts"
+msgstr "Aiguillages possibles"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:564
+msgid "Skip this turnout"
+msgstr "Ignorer cette participation"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:566
+msgid "Manufacturer of Object"
+msgstr "Marque de l'objet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:567
+msgid "Description of Object"
+msgstr "Description d'objet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:568
+msgid "Part Nuber of Object"
+msgstr "Référence de l'objet"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:570
+msgid "Rescale by Scale Conversion or by Ratio"
+msgstr "Redimensionner par conversion d'échelle ou rapport"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:571
+msgid "Original Scale of the selected objects"
+msgstr "Échelle d'origine des objets sélectionnés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:572
+msgid "Original Gauge of the selected objects"
+msgstr "Ecartement de voies d'origine des objets sélectionnés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:573
+msgid "New Scale of the selected objects"
+msgstr "Nouvelle échelle des objets sélectionnés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:574
+msgid "New Gauge of the selected objects"
+msgstr "Nouvel écartement de voies des objets sélectionnés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:575
+msgid "Change track dimensions to new scale"
+msgstr "Convertir les dimensions de la voie à la nouvelle échelle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:576
+msgid "Change size by this amount"
+msgstr "Changer la taille d'un facteur"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:578
+msgid "Snap Grid Line and Division"
+msgstr "Grille magnétique voie et division"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:579
+msgid "X and Y position markers"
+msgstr "Repères de position X et Y"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:580
+msgid "Border rulers, room boundaries and table edges"
+msgstr "Règles de bordures, limites de pièce et bords de table"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:581
+msgid "Primary Axis of grid rotation"
+msgstr "Axe principal de rotation de la grille"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:582
+msgid "Secondary Axis of grid rotation"
+msgstr "Axe secondaire de rotation de la grille"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:583
+msgid "Unselected tracks"
+msgstr "Voies non sélectionnées"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:584
+msgid "Selected tracks"
+msgstr "Voies sélectionnées"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:585
+msgid "Color of tracks on the Profile path"
+msgstr "Couleur des voies sur le profil de hauteur"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:586
+msgid "Color of Exceptional tracks"
+msgstr "Couleur des voies exceptionnelles, hors limites"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:587
+msgid "Color of track ties"
+msgstr "Couleur des traverses"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:588
+msgid "Updates the colors"
+msgstr "Met à jour les couleurs"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:589
+msgid "Angle in degrees"
+msgstr "Angle en degrés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:590
+msgid "Rotate object(s) by specified amount"
+msgstr "Faire pivoter le ou les objet(s) d'un certain angle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:591
+msgid "Enter one or more words as search terms"
+msgstr "Entrez un ou plusieurs mots comme termes de recherche"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:592
+msgid "Remove the current filter and show all files"
+msgstr "Supprimer le filtre actuel et afficher tous les fichiers"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:593
+msgid "Find matching file descriptions"
+msgstr "Trouver les descriptions de fichiers correspondantes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:594
+msgid "Search results"
+msgstr "Résultats de la recherche"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:595
+msgid "Show descriptions or filenames in results"
+msgstr "Afficher les descriptions ou les noms de fichiers dans les résultats"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:596
+msgid "Select how well the definitions must fit the current layout scale"
+msgstr ""
+"Sélectionnez dans quelle mesure les définitions doivent correspondre à "
+"l'échelle de mise en page actuelle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:597
+msgid "Add selected entries into parameter file list"
+msgstr ""
+"Ajouter les entrées sélectionnées dans la liste des fichiers de paramètres"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:598
+msgid "Select All found entries"
+msgstr "Sélectionner toutes les entrées trouvées"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:599
+msgid "Reload the system library contents for finding"
+msgstr "Recharger le contenu de la bibliothèque système pour trouver"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:600
+msgid "Choose commands to be sticky"
+msgstr "Choisissez les commandes à rendre collantes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:601
+msgid "Make the commands sticky"
+msgstr "Rendre les commandes collantes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:602
+msgid "List of available structure"
+msgstr "Liste des bâtiments disponibles"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:603
+msgid "Diagram of the selected structure"
+msgstr "Schéma de la bâtiment sélectionnée"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:604
+msgid "Hide Selection window when placing Structure"
+msgstr "Masquer la fenêtre de sélection lors du placement de la bâtiment"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:605
+msgid "Drawing scale and size"
+msgstr "Échelle et taille du dessin"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:606
+msgid "Complete structure placement"
+msgstr "Placement complet de la bâtiment"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:607
+msgid "Choose a Pier number"
+msgstr "Choisissez un numéro de colonne"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:608
+msgid "Name of the Motor"
+msgstr "Nom du moteur"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:609
+msgid "Value when switch is normal"
+msgstr "Valeur lorsque l'aiguillage est normal"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:610
+msgid "Value when the switch is reversed"
+msgstr "Valeur lorsque l'aiguillage est dévié"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:611
+msgid "Value for a positive comfirmation of switch position"
+msgstr "Valeur pour une confirmation positive de la position de l'aiguillage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:613
+msgid "Controls the color of the entered text"
+msgstr "Contrôle la couleur du texte saisi"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:614
+msgid "If the text is boxed"
+msgstr "Si le texte est dans une case"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:615
+#, fuzzy
+msgid "Save and close editor dialog"
+msgstr "Met à jour et ferme cette boîte de dialogue"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:616
+msgid "Set layer for the note"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:619
+msgid "Enter your addiional information here"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:620
+msgid "Useful information about the program"
+msgstr "Informations utiles sur le programme"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:621
+msgid "Show Tip of the Day every time the program starts"
+msgstr "Montrer le conseil du jour à chaque démarrage du programme"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:622
+msgid "Show the next Tip of the Day"
+msgstr "Montrer le prochain conseil du jour"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:623
+msgid "Show the previous Tip of the Day"
+msgstr "Montrer le précédent conseil du jour"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:625
+msgid "List of butten groups and their state in the toolbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:626
+msgid "Set all button groups visible in toolbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:627
+msgid "Invert the visibility of button groups"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:628
+msgid "Close dialog and configure the toolbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:629
+msgid "List of Cars"
+msgstr "Liste des matériels roulants"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:630
+msgid "List of active trains"
+msgstr "Liste des trains actifs"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:632
+msgid "Train odometer"
+msgstr "Compteur de distance"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:633
+msgid "Reset odometer to 0"
+msgstr "Remise à 0"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:634
+msgid "Find train on layout"
+msgstr "Chercher le train sur le plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:635
+msgid "Follow train around layout"
+msgstr "Suivre le train sur le plan"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:636
+msgid "Flip direction at End Of Track"
+msgstr "Inverser la direction à la fin de la voie"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:637
+msgid "Change direction of train"
+msgstr "Inverser la direction du train"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:638
+msgid "Stop the train"
+msgstr "Arrêt du train"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:639
+msgid "List of available turnouts for the current scale"
+msgstr "Liste des aiguilles disponibles pour l'échelle actuelle"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:640
+msgid ""
+"Diagram of the currently selected turnout. Click on a End-Point to select "
+"the Active End-Point"
+msgstr ""
+"Schéma de l'aiguillage actuellement sélectionné. Cliquez sur une extrémité "
+"pour sélectionner l'extrémité active"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:641
+msgid ""
+"A menu list of various type of turnouts and sectional tracks you can define"
+msgstr ""
+"Une gamme de différents types d'aiguillages et de sections de voies que vous "
+"pouvez définir"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:642
+msgid "Hide Selection window when placing Turnout"
+msgstr "Masquer la fenêtre de sélection lorsque vous placez l'aiguillage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:643
+msgid "The selected Active End-Point"
+msgstr "Le point de fin actif sélectionné"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:644
+msgid "Current selected turnout, (displayed in the diagram window)"
+msgstr ""
+"Aiguillage sélectionné actuellement, (affiché dans la fenêtre du diagramme)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:645
+msgid "One the End-Points that can be selected"
+msgstr "L'un des points d'extrémité pouvant être sélectionnés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:647
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:648
+msgid "Angle of the specified track to the center line of the turnout"
+msgstr "Angle de la voie spécifiée par rapport à l'axe de l'aiguillage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:649
+msgid "Specifies if angles are entered as Frog Numbers or in degrees"
+msgstr ""
+"Spécifie si les angles sont entrés sous forme de N° de cœur ou en degrés"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:652
+msgid "Turnout description (Manuf., Size, Part Number, etc)"
+msgstr "Description de l'aiguillage (fabricant, angle, numéro de pièce, etc.)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:653
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:654
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:655
+msgid "Length from the base to the end of the specified track"
+msgstr "Longueur de la ligne de base à la fin de la voie sélectionnée"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:657
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:658
+msgid "Offset of the track End-Point from the center line of the turnout"
+msgstr ""
+"Décalage du point de fin de la voie par rapport à l'axe central de "
+"l'aiguillage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:661
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:662
+msgid "Prints a full size diagram of the turnout for checking"
+msgstr ""
+"Imprime un diagramme en taille réelle de l'aiguillage pour vérification"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:663
+msgid "Color of Roadbed lines"
+msgstr "Couleur des voies de balast"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:664
+msgid "Width of Roadbed lines"
+msgstr "Largeur des lignes de ballast"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:665
+msgid "Width of Roadbed"
+msgstr "Largeur du ballast"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:667
+msgid "Closes the window and returns to the Turnout Selection window"
+msgstr "Ferme la fenêtre et retourne à la sélection d'aiguillage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:668
+msgid "Specifies the diameter of the turntable"
+msgstr "Spécifie le diamètre du pont tournant"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:669
+msgid "Old Turnout title"
+msgstr "Ancien titre de l'aiguillage"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:670
+msgid "List of available titles"
+msgstr "Liste des titres disponibles"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:671
+msgid "Leave the Turnouts' title unchanged"
+msgstr "Laisser le titre d'aiguillage inchangé"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:672
+msgid "Invoke the Parameter Files dialog"
+msgstr "Ouvre la boîte de dialogue Fichier de paramètres"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:673
+msgid "List of available turnouts"
+msgstr "Liste des aiguillages disponibles"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:674
+msgid "Update the Turnouts' title"
+msgstr "Mettre à jour le titre des aiguillages"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:678
+msgid "Sample"
+msgstr "Exemple"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:680
+msgid "Slant"
+msgstr "Incliner"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:681
+msgid "Font selection dialog"
+msgstr "Boite de dialogue de sélection de police"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:682
+msgid "Weight"
+msgstr "Poids"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:683
+msgid "Printer Abort Window"
+msgstr "Annuler l'impression"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:684
+msgid "Print to filename"
+msgstr "Nom du fichier d'impression"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:685
+msgid "Specify Postscript font alias mapping"
+msgstr "Spécifier l'affectation des polices Postscript"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:686
+msgid ""
+"Displays the Print Setup window to change printers, orientation, paper size, "
+"etc."
+msgstr ""
+"Affiche la fenêtre configuration de l’impression pour changer d'imprimante, "
+"d'orientation, de format du papier, etc."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:687
+msgid "Closes this dialog"
+msgstr "Ferme cette boîte de dialogue"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:688
+msgid "Page orientation"
+msgstr "Orientation de la page"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:689
+msgid "Unprintable margins"
+msgstr "Marges non imprimables"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:690
+msgid "Updates and closes this dialog"
+msgstr "Met à jour et ferme cette boîte de dialogue"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:691
+msgid "Choose paper size"
+msgstr "Choisissez le format de papier"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:692
+msgid "Choose printer"
+msgstr "Choisissez une imprimante"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:693
+msgid "Print test page"
+msgstr "Impression de la page de test"
+
+#~ msgid "Plain Text"
+#~ msgstr "Texte simple"
+
+#~ msgid "Invoke designer editor"
+#~ msgstr "Ouvre l'éditeur de modélisation"
+
+#~ msgid "Controls which Command Buttons are displayed"
+#~ msgstr "Afficher ou masquer les boutons de commande dans la barre d'outils"
+
+#~ msgid "Desciption"
+#~ msgstr "Desciption"
+
+#~ msgid "No paths"
+#~ msgstr "Pas de chemins"
+
+#~ msgid "Predefined Track"
+#~ msgstr "Voie sélectionnée"
+
+#~ msgid "Layout"
+#~ msgstr "Plan"
+
+#~ msgid ""
+#~ "The entered URL is too long. The maximum allowed length is %d. Please "
+#~ "edit the entered value."
+#~ msgstr ""
+#~ "L'URL saisie est trop longue. La longueur maximale autorisée est %d. "
+#~ "Veuillez modifier la valeur entrée."
+
+#~ msgid "Re-edit"
+#~ msgstr "Modifier à nouveau"
+
+#~ msgid "Update comment"
+#~ msgstr "Mettre à jour le commentaire"
+
+#~ msgid "Comment"
+#~ msgstr "Commentaire"
+
+#~ msgid "Scale index (%d) is not valid"
+#~ msgstr "L'indice d'échelle (%d) n'est pas valide"
+
+#~ msgid ""
+#~ "Scale %s is not valid\n"
+#~ "Please check your %s.xtq file"
+#~ msgstr ""
+#~ "L'échelle %s n'est pas valide\n"
+#~ "Veuillez vérifier votre fichier %s.xtq"
+
+#~ msgid "a straight or a curve.\n"
+#~ msgstr ""
+#~ "une droite ou une courbe.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "To create a 1/4\" line, divide the dots-per-inch (DPI) of your display by "
+#~ "4.\n"
+#~ msgstr ""
+#~ "Pour créer une ligne large de 1/4 pouce, la résolution de l'écran (DPI) "
+#~ "est divisée par 4.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "For MS-Windows the DPI is usually 98, so choose: 98/4 = 24 "
+#~ "(approximately).\n"
+#~ msgstr ""
+#~ "Pour MS-Windows, on a généralement 98ppp; choisissez donc: 98/4 = 24 "
+#~ "(environ).\n"
+
+#~ msgid "For Linux, the DPI is usually 72, so choose: 72/4 = 18.\n"
+#~ msgstr ""
+#~ "Pour Linux, on a généralement de 72ppp, choisissez donc : 72/4 = 18.\n"
+
+#~ msgid "Bridge"
+#~ msgstr "Pont"
+
+#~ msgid "Angle = %0.3f"
+#~ msgstr "Angle = %0.3f"
+
+#~ msgid "&Loosen Tracks"
+#~ msgstr "&Desserrer les voies"
+
+#~ msgid "%d Track(s) loosened"
+#~ msgstr "%d Voie(s) détachées"
+
+#~ msgid "No tracks loosened"
+#~ msgstr "Pas de voies détachées"
+
+#~ msgid "Save format:"
+#~ msgstr "Format d'enregistrement :"
+
+#~ msgid "Image files"
+#~ msgstr "Fichiers images"
+
+#~ msgid "Font Select"
+#~ msgstr "Sélection de police"
+
+#~ msgid "Co&mmand Context help"
+#~ msgstr "Co&mmande d'aide contextuelle"
+
+#~ msgid "Home"
+#~ msgstr "Accueil"
+
+#~ msgid "Contents"
+#~ msgstr "Sommaire"
+
+#~ msgid "<Empty List>"
+#~ msgstr "<Liste vide>"
+
+#~ msgid "%d of %d"
+#~ msgstr "%d de %d"
+
+#~ msgid ""
+#~ "The required configuration files could not be located in the expected "
+#~ "location.\n"
+#~ "\n"
+#~ "Usually this is an installation problem. Make sure that these files are "
+#~ "installed in either \n"
+#~ " ../share/xtrkcad or\n"
+#~ " /usr/share/%s or\n"
+#~ " /usr/local/share/%s\n"
+#~ "If this is not possible, the environment variable %s must contain the "
+#~ "name of the correct directory."
+#~ msgstr ""
+#~ "Les données de configuration nécessaires sont introuvables dans le "
+#~ "répertoire attendu.\n"
+#~ "\n"
+#~ "Il s'agit généralement d'un problème d'installation. Assurez-vous que ces "
+#~ "fichiers sont stockés dans \n"
+#~ " ../share/xtrkcad ou\n"
+#~ " /usr/share/%s ou\n"
+#~ " /usr/local/share/%s\n"
+#~ "Si cela n'est pas possible, la variable d'environnement %s doit contenir "
+#~ "le nom du répertoire correct."
+
+#~ msgid "HOME is not set"
+#~ msgstr "HOME n'est pas défini"
+
+#~ msgid "Exit"
+#~ msgstr "Quitter"
+
+#~ msgid "Cannot create %s"
+#~ msgstr "Impossible de créer %s"
+
+#~ msgid "Image file is invalid or cannot be read."
+#~ msgstr "Le fichier image n'est pas valide ou ne peut pas être lu."
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
+#~ msgid "Alt+"
+#~ msgstr "Alt+"
+
+#~ msgid "Shift+"
+#~ msgstr "Maj+"
+
+#~ msgid "Space"
+#~ msgstr "Espace"
+
+#~ msgid ""
+#~ "Pressing the turnout button displays the Turnout Selection window to let "
+#~ "you choose a turnout to place.\n"
+#~ msgstr ""
+#~ "Appuyez sur le bouton 'aiguillage' pour afficher la fenêtre Sélection "
+#~ "afin de vous permettre d'en choisir un pour le placer.\n"
+
+#~ msgid ""
+#~ "Note that once you start to place the turnout on the Main window the "
+#~ "Turnout Selection window disappears. This feature is enabled by the Hide "
+#~ "toggle button on the dialog.\n"
+#~ msgstr ""
+#~ "Notez que lorsque vous commencez à placer l'aiguillage dans la fenêtre "
+#~ "principale, la fenêtre Sélection d'aiguillage disparaît. Cette commodité "
+#~ "est activée par le bouton 'Cacher' de la boîte de dialogue.\n"
+
+#~ msgid ""
+#~ "Pressing the Close button on the Turnout dialog will end the <Turnout> "
+#~ "command as well as placing the turnout.\n"
+#~ msgstr ""
+#~ "Le fait d'appuyer sur le bouton Fermer dans la boîte de dialogue "
+#~ "d'aiguillage mettra fin à la commande <Turnout>et placera l'aiguillage.\n"
+#~ "\n"
+
+#~ msgid "Pressing Close ends the <Turnout> command.\n"
+#~ msgstr "Appuyez sur Fermer pour mettre fin à la commande <Turnout>.\n"
+
+#~ msgid ""
+#~ "You can resize and move the Turnout Selection dialog if it obscures the "
+#~ "other windows.\n"
+#~ msgstr ""
+#~ "Vous pouvez redimensionner et déplacer la boîte de dialogue Sélection "
+#~ "d'aiguillage si elle masque d'autres fenêtres.\n"
diff --git a/app/i18n/pt_BR.po b/app/i18n/pt_BR.po
index 409d270..98fc772 100644
--- a/app/i18n/pt_BR.po
+++ b/app/i18n/pt_BR.po
@@ -2,12 +2,12 @@
# Copyright (C) 2009 Daniel Spagnol
# This file is distributed under the same license as the xtrkcad package.
# Daniel Spagnol <dspagnol@yahoo.com>, 2009.
-#
+#
msgid ""
msgstr ""
"Project-Id-Version: xtrkcad 4.1.3a\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-07-11 09:01+0200\n"
+"POT-Creation-Date: 2023-12-27 10:09+0100\n"
"PO-Revision-Date: 2009-10-06 22:22-0500\n"
"Last-Translator: Daniel Spagnol <dspagnol@yahoo.com>\n"
"Language-Team: Brazilian Portuguese\n"
@@ -17,1769 +17,1818 @@ msgstr ""
"Language: pt-BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: ../bin/archive.c:178 ../bin/archive.c:185 ../bin/archive.c:214
-#: ../bin/archive.c:239 ../bin/archive.c:294 ../bin/archive.c:307
-#: ../bin/archive.c:315 ../bin/archive.c:365 ../bin/archive.c:400
-#: ../bin/archive.c:416 ../bin/archive.c:426 ../bin/archive.c:449
-#: ../bin/cblock.c:491 ../bin/cswitchmotor.c:475 ../bin/dbench.c:147
-#: ../bin/dcar.c:4520 ../bin/dcar.c:4706 ../bin/dcar.c:4716 ../bin/dcar.c:4764
-#: ../bin/dcar.c:4771 ../bin/dcar.c:4789 ../bin/dcar.c:4802 ../bin/dcar.c:4807
-#: ../bin/dcar.c:4836 ../bin/dcar.c:5000 ../bin/directory.c:65
-#: ../bin/directory.c:100 ../bin/directory.c:107 ../bin/directory.c:138
-#: ../bin/directory.c:154 ../bin/dxfoutput.c:193 ../bin/fileio.c:241
-#: ../bin/fileio.c:698 ../bin/fileio.c:898 ../bin/fileio.c:1025
-#: ../bin/fileio.c:1092 ../bin/fileio.c:1098 ../bin/fileio.c:1174
-#: ../bin/fileio.c:1184 ../bin/fileio.c:1517 ../bin/fileio.c:1567
-#: ../bin/fileio.c:1623 ../bin/macro.c:179 ../bin/macro.c:832
-#: ../bin/macro.c:877 ../bin/macro.c:898 ../bin/macro.c:1043
-#: ../bin/macro.c:1060 ../bin/macro.c:1322 ../bin/param.c:2090
-#: ../bin/paramfile.c:250 ../bin/paramfilelist.c:376 ../bin/track.c:1116
-#: ../bin/track.c:1640 ../bin/track.c:1946 ../bin/track.c:1950
-#: ../bin/track.c:1962 ../bin/track.c:2026 ../wlib/gtklib/wpref.c:248
-#: ../wlib/gtklib/wpref.c:255
+#: ../bin/archive.c:154 ../bin/archive.c:161 ../bin/archive.c:190
+#: ../bin/archive.c:215 ../bin/archive.c:270 ../bin/archive.c:284
+#: ../bin/archive.c:294 ../bin/archive.c:348 ../bin/archive.c:384
+#: ../bin/archive.c:400 ../bin/archive.c:410 ../bin/archive.c:433
+#: ../bin/cblock.c:505 ../bin/cswitchmotor.c:500 ../bin/dbench.c:147
+#: ../bin/dbitmap.c:427 ../bin/dcar.c:4894 ../bin/dcar.c:5093
+#: ../bin/dcar.c:5103 ../bin/dcar.c:5150 ../bin/dcar.c:5158 ../bin/dcar.c:5176
+#: ../bin/dcar.c:5191 ../bin/dcar.c:5196 ../bin/dcar.c:5225 ../bin/dcar.c:5395
+#: ../bin/directory.c:44 ../bin/directory.c:79 ../bin/directory.c:86
+#: ../bin/directory.c:117 ../bin/directory.c:133 ../bin/dxfoutput.c:205
+#: ../bin/fileio.c:224 ../bin/fileio.c:677 ../bin/fileio.c:835
+#: ../bin/fileio.c:897 ../bin/fileio.c:1022 ../bin/fileio.c:1091
+#: ../bin/fileio.c:1097 ../bin/fileio.c:1189 ../bin/fileio.c:1202
+#: ../bin/fileio.c:1631 ../bin/fileio.c:1680 ../bin/fileio.c:1733
+#: ../bin/macro.c:166 ../bin/macro.c:855 ../bin/macro.c:1010
+#: ../bin/macro.c:1029 ../bin/macro.c:1329 ../bin/param.c:2402
+#: ../bin/paramfile.c:258 ../bin/paramfilelist.c:458 ../bin/track.c:1104
+#: ../bin/track.c:1344 ../bin/track.c:1366 ../bin/track.c:1785
+#: ../bin/track.c:1990 ../bin/track.c:2000 ../bin/track.c:2005
+#: ../bin/track.c:2020 ../bin/track.c:2047 ../bin/track.c:2105
msgid "Continue"
msgstr "Continuar"
-#: ../bin/cbezier.c:599
+#: ../bin/cbezier.c:631
#, fuzzy
msgid "Select End-Point - Ctrl unlocks end-point"
msgstr "Selecionar primeira extremidade a conectar"
-#: ../bin/cbezier.c:601
+#: ../bin/cbezier.c:633
msgid "Select End-Point"
msgstr "Selecionar extremidade"
-#: ../bin/cbezier.c:633
+#: ../bin/cbezier.c:666
msgid "Not close enough to any valid, selectable point, reselect"
msgstr ""
-#: ../bin/cbezier.c:639
+#: ../bin/cbezier.c:672
#, c-format
msgid "Drag point %d to new location and release it"
msgstr ""
-#: ../bin/cbezier.c:648 ../bin/cbezier.c:739 ../bin/cbezier.c:741
+#: ../bin/cbezier.c:682 ../bin/cbezier.c:785 ../bin/cbezier.c:788
msgid "Pick any circle to adjust it - Enter to confirm, ESC to abort"
msgstr ""
-#: ../bin/cbezier.c:672
+#: ../bin/cbezier.c:707
msgid "Bezier Curve Invalid has identical end points Change End Point"
msgstr ""
-#: ../bin/cbezier.c:675
+#: ../bin/cbezier.c:711
#, c-format
msgid "Bezier Curve Invalid has %s Change End Point"
msgstr ""
-#: ../bin/cbezier.c:678
+#: ../bin/cbezier.c:715
msgid "Bezier Curve Invalid has three co-incident points"
msgstr ""
-#: ../bin/cbezier.c:680
+#: ../bin/cbezier.c:718
#, fuzzy
msgid "Bezier is Straight Line"
msgstr "Linha reta"
-#: ../bin/cbezier.c:682
+#: ../bin/cbezier.c:721
#, c-format
msgid "Bezier %s : Min Radius=%s Length=%s fx=%0.3f fy=%0.3f cusp=%0.3f"
msgstr ""
-#: ../bin/cbezier.c:686
+#: ../bin/cbezier.c:726
#, fuzzy, c-format
msgid "Bezier %s : Min Radius=%s Length=%s"
msgstr "Trecho curvo: Raio=%s Comprimento=%s"
-#: ../bin/cbezier.c:711
+#: ../bin/cbezier.c:752
#, fuzzy
msgid "No unconnected End Point to lock to"
msgstr "Selecionar segunda extremidade a conectar"
-#: ../bin/cbezier.c:729
+#: ../bin/cbezier.c:772
msgid "Bezier curve invalid has identical end points Change End Point"
msgstr ""
-#: ../bin/cbezier.c:732
+#: ../bin/cbezier.c:776
#, c-format
msgid "Bezier curve invalid has %s Change End Point"
msgstr ""
-#: ../bin/cbezier.c:735
+#: ../bin/cbezier.c:780
msgid "Bezier curve invalid has three co-incident points"
msgstr ""
-#: ../bin/cbezier.c:737
+#: ../bin/cbezier.c:783
#, fuzzy
msgid "Bezier curve is straight line"
msgstr "Cria uma linha reta"
-#: ../bin/cbezier.c:751 ../bin/cbezier.c:765
+#: ../bin/cbezier.c:799 ../bin/cbezier.c:813
msgid "Invalid Bezier Track - end points are identical"
msgstr ""
-#: ../bin/cbezier.c:758
+#: ../bin/cbezier.c:806
#, c-format
msgid "Invalid Bezier Curve has a %s - Adjust"
msgstr ""
-#: ../bin/cbezier.c:762
+#: ../bin/cbezier.c:810
msgid "Invalid Bezier Curve has three coincident points - Adjust"
msgstr ""
-#: ../bin/cbezier.c:770
+#: ../bin/cbezier.c:818
#, fuzzy
msgid "Create Bezier"
msgstr "Criar linhas"
-#: ../bin/cbezier.c:858
+#: ../bin/cbezier.c:900
#, fuzzy, c-format
msgid "%s picked - now select a Point"
msgstr "Clicar em uma extremidade não selecionada"
-#: ../bin/cbezier.c:888 ../bin/ccornu.c:1953
+#: ../bin/cbezier.c:939 ../bin/ccornu.c:2085
msgid "No changes made"
msgstr ""
-#: ../bin/cbezier.c:892
+#: ../bin/cbezier.c:943
#, fuzzy
msgid "Modify Bezier"
msgstr "Modificar trecho"
-#: ../bin/cbezier.c:910
+#: ../bin/cbezier.c:957
#, fuzzy
msgid "Modify Bezier Complete"
msgstr "Modificar trecho"
-#: ../bin/cbezier.c:914
+#: ../bin/cbezier.c:961
msgid "Modify Bezier Cancelled"
msgstr ""
-#: ../bin/cbezier.c:1038 ../bin/cbezier.c:1129
+#: ../bin/cbezier.c:1089 ../bin/cbezier.c:1189
#, fuzzy, c-format
msgid "Place 1st endpoint of Bezier - snap to %s"
msgstr "Posicionar 1ª extremidade do trecho reto"
-#: ../bin/cbezier.c:1056 ../bin/ccornu.c:2290 ../bin/ccurve.c:205
-#: ../bin/ccurve.c:439 ../bin/cstraigh.c:91
+#: ../bin/cbezier.c:1109 ../bin/ccornu.c:2444 ../bin/ccurve.c:205
+#: ../bin/cstraigh.c:92
msgid "Track is different gauge"
msgstr ""
-#: ../bin/cbezier.c:1084
+#: ../bin/cbezier.c:1131
msgid "Drag end of first control arm"
msgstr ""
-#: ../bin/cbezier.c:1091
+#: ../bin/cbezier.c:1139
msgid "Drag end of second control arm"
msgstr ""
-#: ../bin/cbezier.c:1133 ../bin/cbezier.c:1170
+#: ../bin/cbezier.c:1194 ../bin/cbezier.c:1236
#, fuzzy, c-format
msgid "Select other end of Bezier - snap to %s end"
msgstr "Posicionar 1ª extremidade do trecho reto"
-#: ../bin/cbezier.c:1165
+#: ../bin/cbezier.c:1231
msgid "Control Arm 1 is too short, try again"
msgstr ""
-#: ../bin/cblock.c:111 ../bin/cblock.c:123 ../bin/cblock.c:168
-#: ../bin/ccontrol.c:171 ../bin/ccontrol.c:425 ../bin/compound.c:567
-#: ../bin/csensor.c:163 ../bin/csensor.c:389 ../bin/csignal.c:238
-#: ../bin/csignal.c:498 ../bin/csignal.c:509 ../bin/csignal.c:535
-#: ../bin/cswitchmotor.c:93 ../bin/cswitchmotor.c:112
-#: ../bin/cswitchmotor.c:224 ../bin/dcontmgm.c:91 ../bin/dlayer.c:483
+#: ../bin/cblock.c:110 ../bin/cblock.c:122 ../bin/cblock.c:169
+#: ../bin/ccontrol.c:168 ../bin/ccontrol.c:425 ../bin/compound.c:745
+#: ../bin/csensor.c:160 ../bin/csensor.c:389 ../bin/csignal.c:236
+#: ../bin/csignal.c:499 ../bin/csignal.c:510 ../bin/csignal.c:536
+#: ../bin/cswitchmotor.c:89 ../bin/cswitchmotor.c:108
+#: ../bin/cswitchmotor.c:228 ../bin/dcontmgm.c:79 ../bin/dlayer.c:543
msgid "Name"
msgstr "Nome"
-#: ../bin/cblock.c:112 ../bin/cblock.c:124 ../bin/cblock.c:169
-#: ../bin/csensor.c:165 ../bin/csensor.c:395 ../bin/csignal.c:498
-#: ../bin/csignal.c:537
+#: ../bin/cblock.c:111 ../bin/cblock.c:123 ../bin/cblock.c:170
+#: ../bin/csensor.c:162 ../bin/csensor.c:395 ../bin/csignal.c:499
+#: ../bin/csignal.c:538
msgid "Script"
msgstr "Script"
-#: ../bin/cblock.c:125
+#: ../bin/cblock.c:124
#, fuzzy
msgid "Segments"
msgstr "No. de segmentos"
-#: ../bin/cblock.c:170 ../bin/cdraw.c:515 ../bin/cdraw.c:1425
-#: ../bin/cdraw.c:1571 ../bin/cdraw.c:2224 ../bin/cdraw.c:2450
-#: ../bin/cdraw.c:2487 ../bin/ctodesgn.c:170 ../bin/ctodesgn.c:171
-#: ../bin/ctodesgn.c:172 ../bin/ctodesgn.c:173 ../bin/ctodesgn.c:185
-#: ../bin/ctodesgn.c:186 ../bin/ctodesgn.c:236 ../bin/ctodesgn.c:239
-#: ../bin/ctodesgn.c:259 ../bin/ctodesgn.c:264 ../bin/ctodesgn.c:296
-#: ../bin/ctodesgn.c:303 ../bin/ctodesgn.c:305 ../bin/ctodesgn.c:325
-#: ../bin/ctodesgn.c:330 ../bin/ctodesgn.c:362 ../bin/ctodesgn.c:369
-#: ../bin/ctodesgn.c:370 ../bin/ctodesgn.c:391 ../bin/ctodesgn.c:394
-#: ../bin/ctodesgn.c:397 ../bin/ctodesgn.c:432 ../bin/ctodesgn.c:436
-#: ../bin/ctodesgn.c:443 ../bin/ctodesgn.c:444 ../bin/ctodesgn.c:445
-#: ../bin/ctodesgn.c:467 ../bin/ctodesgn.c:469 ../bin/ctodesgn.c:487
-#: ../bin/ctodesgn.c:489 ../bin/ctodesgn.c:508 ../bin/ctodesgn.c:510
-#: ../bin/ctodesgn.c:537 ../bin/ctodesgn.c:557 ../bin/ctodesgn.c:577
-#: ../bin/ctodesgn.c:597 ../bin/ctodesgn.c:635 ../bin/ctodesgn.c:654
-#: ../bin/ctodesgn.c:655 ../bin/ctrain.c:185 ../bin/tbezier.c:258
-#: ../bin/tcornu.c:307 ../bin/tcurve.c:372 ../bin/tstraigh.c:89
+#: ../bin/cblock.c:171 ../bin/cdraw.c:560 ../bin/cdraw.c:1573
+#: ../bin/cdraw.c:1720 ../bin/cdraw.c:2843 ../bin/cdraw.c:3070
+#: ../bin/cdraw.c:3109 ../bin/ctodesgn.c:177 ../bin/ctodesgn.c:178
+#: ../bin/ctodesgn.c:179 ../bin/ctodesgn.c:180 ../bin/ctodesgn.c:192
+#: ../bin/ctodesgn.c:193 ../bin/ctodesgn.c:242 ../bin/ctodesgn.c:245
+#: ../bin/ctodesgn.c:268 ../bin/ctodesgn.c:273 ../bin/ctodesgn.c:314
+#: ../bin/ctodesgn.c:321 ../bin/ctodesgn.c:323 ../bin/ctodesgn.c:348
+#: ../bin/ctodesgn.c:353 ../bin/ctodesgn.c:393 ../bin/ctodesgn.c:400
+#: ../bin/ctodesgn.c:401 ../bin/ctodesgn.c:426 ../bin/ctodesgn.c:429
+#: ../bin/ctodesgn.c:432 ../bin/ctodesgn.c:475 ../bin/ctodesgn.c:479
+#: ../bin/ctodesgn.c:486 ../bin/ctodesgn.c:487 ../bin/ctodesgn.c:488
+#: ../bin/ctodesgn.c:514 ../bin/ctodesgn.c:516 ../bin/ctodesgn.c:538
+#: ../bin/ctodesgn.c:540 ../bin/ctodesgn.c:563 ../bin/ctodesgn.c:565
+#: ../bin/ctodesgn.c:599 ../bin/ctodesgn.c:625 ../bin/ctodesgn.c:650
+#: ../bin/ctodesgn.c:674 ../bin/ctodesgn.c:720 ../bin/ctodesgn.c:743
+#: ../bin/ctodesgn.c:744 ../bin/ctrain.c:182 ../bin/tbezier.c:296
+#: ../bin/tcornu.c:332 ../bin/tcurve.c:404 ../bin/tstraigh.c:91
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:186
msgid "Length"
msgstr "Comprimento"
-#: ../bin/cblock.c:171 ../bin/cdraw.c:507 ../bin/compound.c:542
-#: ../bin/tbezier.c:245 ../bin/tcornu.c:294 ../bin/tcurve.c:364
-#: ../bin/tease.c:519 ../bin/tstraigh.c:85
+#: ../bin/cblock.c:172 ../bin/cdraw.c:551 ../bin/compound.c:720
+#: ../bin/tbezier.c:283 ../bin/tcornu.c:319 ../bin/tcurve.c:396
+#: ../bin/tease.c:524 ../bin/tstraigh.c:87
#, fuzzy
msgid "End Pt 1: X,Y"
msgstr "Extremidade 1: X"
-#: ../bin/cblock.c:172 ../bin/cdraw.c:508 ../bin/compound.c:547
-#: ../bin/tbezier.c:252 ../bin/tcornu.c:299 ../bin/tcurve.c:366
-#: ../bin/tease.c:521 ../bin/tstraigh.c:87
+#: ../bin/cblock.c:173 ../bin/cdraw.c:552 ../bin/compound.c:725
+#: ../bin/tbezier.c:290 ../bin/tcornu.c:324 ../bin/tcurve.c:398
+#: ../bin/tease.c:526 ../bin/tstraigh.c:89
#, fuzzy
msgid "End Pt 2: X,Y"
msgstr "Extremidade 2: X"
-#: ../bin/cblock.c:195 ../bin/cblock.c:207 ../bin/cblock.c:575
-#: ../bin/cblock.c:596 ../bin/cblock.c:604 ../bin/cblock.c:674
-#: ../bin/cblock.c:795 ../bin/cblock.c:807 ../bin/cblock.c:845
-#: ../bin/ccontrol.c:205 ../bin/ccontrol.c:218 ../bin/ccontrol.c:230
-#: ../bin/ccontrol.c:486 ../bin/cdraw.c:130 ../bin/cdraw.c:2283
-#: ../bin/cgroup.c:1075 ../bin/cgroup.c:1146 ../bin/cgroup.c:1185
-#: ../bin/cgroup.c:1235 ../bin/cgroup.c:1262 ../bin/cgroup.c:1350
-#: ../bin/cgroup.c:1729 ../bin/cnote.c:69 ../bin/compound.c:603
-#: ../bin/compound.c:618 ../bin/compound.c:651 ../bin/cprint.c:512
-#: ../bin/cprint.c:716 ../bin/cprint.c:723 ../bin/cprint.c:1247
-#: ../bin/cpull.c:511 ../bin/cpull.c:526 ../bin/cpull.c:528 ../bin/cpull.c:530
-#: ../bin/cpull.c:690 ../bin/cselect.c:1068 ../bin/cselect.c:1164
-#: ../bin/cselect.c:1980 ../bin/csensor.c:194 ../bin/csensor.c:206
-#: ../bin/csensor.c:444 ../bin/csignal.c:267 ../bin/csignal.c:666
-#: ../bin/csignal.c:734 ../bin/csnap.c:576 ../bin/csnap.c:705
-#: ../bin/cstruct.c:935 ../bin/cstruct.c:944 ../bin/cstruct.c:1069
-#: ../bin/cswitchmotor.c:250 ../bin/cswitchmotor.c:262
-#: ../bin/cswitchmotor.c:274 ../bin/cswitchmotor.c:286
-#: ../bin/cswitchmotor.c:544 ../bin/cswitchmotor.c:580
-#: ../bin/cswitchmotor.c:714 ../bin/cswitchmotor.c:745 ../bin/ctext.c:173
-#: ../bin/ctodesgn.c:204 ../bin/ctodesgn.c:1199 ../bin/ctodesgn.c:1336
-#: ../bin/ctodesgn.c:1934 ../bin/ctodesgn.c:2049 ../bin/ctodesgn.c:2348
-#: ../bin/ctodesgn.c:2630 ../bin/ctrain.c:205 ../bin/cturnout.c:2897
-#: ../bin/cturnout.c:3035 ../bin/cundo.c:161 ../bin/cundo.c:166
-#: ../bin/dbitmap.c:68 ../bin/dbitmap.c:125 ../bin/dbitmap.c:203
-#: ../bin/dbitmap.c:238 ../bin/dcar.c:3824 ../bin/dcar.c:4019
-#: ../bin/dcar.c:4023 ../bin/dcar.c:4027 ../bin/dcar.c:4032 ../bin/dcar.c:4336
-#: ../bin/dcar.c:4444 ../bin/dcar.c:4826 ../bin/dcmpnd.c:399
-#: ../bin/dcmpnd.c:410 ../bin/dcmpnd.c:542 ../bin/dcustmgm.c:221
-#: ../bin/dcustmgm.c:227 ../bin/dcustmgm.c:236 ../bin/dcustmgm.c:261
-#: ../bin/dease.c:242 ../bin/dlayer.c:240 ../bin/dlayer.c:262
-#: ../bin/dlayer.c:879 ../bin/dlayer.c:885 ../bin/dlayer.c:891
-#: ../bin/doption.c:199 ../bin/doption.c:275 ../bin/doption.c:476
-#: ../bin/doption.c:479 ../bin/doption.c:492 ../bin/doption.c:558
-#: ../bin/dprmfile.c:434 ../bin/draw.c:2629 ../bin/fileio.c:197
-#: ../bin/fileio.c:607 ../bin/fileio.c:742 ../bin/fileio.c:744
-#: ../bin/fileio.c:749 ../bin/fileio.c:812 ../bin/fileio.c:1045
-#: ../bin/layout.c:373 ../bin/layout.c:561 ../bin/macro.c:1156
-#: ../bin/macro.c:1160 ../bin/macro.c:1218 ../bin/macro.c:1287
-#: ../bin/macro.c:1527 ../bin/macro.c:1545 ../bin/misc.c:434 ../bin/misc.c:481
-#: ../bin/misc.c:1806 ../bin/misc.c:1927 ../bin/misc.c:1935 ../bin/misc.c:2013
-#: ../bin/misc.c:2799 ../bin/misc.c:2808 ../bin/misc.c:2828 ../bin/misc.c:2834
-#: ../bin/misc2.c:456 ../bin/param.c:738 ../bin/param.c:1848
-#: ../bin/param.c:1971 ../bin/param.c:1974 ../bin/param.c:2097
-#: ../bin/param.c:2103 ../bin/paramfile.c:324 ../bin/paramfile.c:326
-#: ../bin/paramfile.c:331 ../bin/paramfile.c:355 ../bin/paramfile.c:381
-#: ../bin/paramfile.c:387 ../bin/paramfilelist.c:94 ../bin/paramfilelist.c:114
-#: ../bin/paramfilelist.c:128 ../bin/paramfilelist.c:192 ../bin/smalldlg.c:90
-#: ../bin/smalldlg.c:222 ../bin/tease.c:1014 ../bin/track.c:1654
-#: ../wlib/gtklib/wpref.c:122 ../../../../build/work/app/bin/bllnhlp.c:586
+#: ../bin/cblock.c:198 ../bin/cblock.c:210 ../bin/cblock.c:592
+#: ../bin/cblock.c:613 ../bin/cblock.c:621 ../bin/cblock.c:693
+#: ../bin/cblock.c:814 ../bin/cblock.c:826 ../bin/cblock.c:864
+#: ../bin/ccontrol.c:203 ../bin/ccontrol.c:216 ../bin/ccontrol.c:228
+#: ../bin/ccontrol.c:489 ../bin/cdraw.c:125 ../bin/cdraw.c:2903
+#: ../bin/cgroup.c:1156 ../bin/cgroup.c:1260 ../bin/cgroup.c:1267
+#: ../bin/cgroup.c:1320 ../bin/cgroup.c:1343 ../bin/cgroup.c:1437
+#: ../bin/cgroup.c:1642 ../bin/cgroup.c:1867 ../bin/cnote.c:67
+#: ../bin/compound.c:785 ../bin/compound.c:801 ../bin/compound.c:835
+#: ../bin/cprint.c:746 ../bin/cprint.c:1312 ../bin/cprint.c:1445
+#: ../bin/cpull.c:531 ../bin/cpull.c:546 ../bin/cpull.c:548 ../bin/cpull.c:550
+#: ../bin/cpull.c:721 ../bin/cselect.c:2029 ../bin/csensor.c:192
+#: ../bin/csensor.c:204 ../bin/csensor.c:446 ../bin/csnap.c:591
+#: ../bin/csnap.c:733 ../bin/csignal.c:266 ../bin/csignal.c:678
+#: ../bin/csignal.c:748 ../bin/cstruct.c:1041 ../bin/cstruct.c:1180
+#: ../bin/cswitchmotor.c:257 ../bin/cswitchmotor.c:269
+#: ../bin/cswitchmotor.c:281 ../bin/cswitchmotor.c:293
+#: ../bin/cswitchmotor.c:570 ../bin/cswitchmotor.c:608
+#: ../bin/cswitchmotor.c:746 ../bin/cswitchmotor.c:777 ../bin/ctext.c:172
+#: ../bin/ctodesgn.c:211 ../bin/ctodesgn.c:1309 ../bin/ctodesgn.c:2138
+#: ../bin/ctodesgn.c:2255 ../bin/ctodesgn.c:2578 ../bin/ctrain.c:205
+#: ../bin/cturnout.c:2973 ../bin/cturnout.c:3123 ../bin/cundo.c:260
+#: ../bin/cundo.c:266 ../bin/dbitmap.c:157 ../bin/dbitmap.c:232
+#: ../bin/dbitmap.c:473 ../bin/dcar.c:4125 ../bin/dcar.c:4297
+#: ../bin/dcar.c:4302 ../bin/dcar.c:4306 ../bin/dcar.c:4312 ../bin/dcar.c:4662
+#: ../bin/dcar.c:4778 ../bin/dcar.c:5215 ../bin/dcmpnd.c:419
+#: ../bin/dcmpnd.c:435 ../bin/dcmpnd.c:582 ../bin/dcustmgm.c:219
+#: ../bin/dcustmgm.c:226 ../bin/dcustmgm.c:236 ../bin/dcustmgm.c:261
+#: ../bin/dease.c:251 ../bin/dlayer.c:336 ../bin/dlayer.c:373
+#: ../bin/dlayer.c:842 ../bin/dlayer.c:1392 ../bin/dlayer.c:1398
+#: ../bin/dlayer.c:1404 ../bin/doption.c:202 ../bin/doption.c:287
+#: ../bin/doption.c:497 ../bin/doption.c:500 ../bin/doption.c:504
+#: ../bin/doption.c:516 ../bin/doption.c:591 ../bin/dprmfile.c:431
+#: ../bin/draw.c:2986 ../bin/fileio.c:180 ../bin/fileio.c:595
+#: ../bin/fileio.c:727 ../bin/fileio.c:730 ../bin/fileio.c:736
+#: ../bin/fileio.c:806 ../bin/fileio.c:1044 ../bin/layout.c:553
+#: ../bin/layout.c:819 ../bin/layout.c:994 ../bin/macro.c:1133
+#: ../bin/macro.c:1138 ../bin/macro.c:1216 ../bin/macro.c:1294
+#: ../bin/macro.c:1542 ../bin/macro.c:1563 ../bin/menu.c:272 ../bin/menu.c:283
+#: ../bin/menu.c:294 ../bin/menu.c:459 ../bin/menu.c:497 ../bin/menu.c:607
+#: ../bin/misc.c:491 ../bin/misc.c:1054 ../bin/misc.c:1063 ../bin/misc.c:1083
+#: ../bin/misc.c:1089 ../bin/misc.c:1274 ../bin/param.c:787
+#: ../bin/param.c:2132 ../bin/param.c:2274 ../bin/param.c:2278
+#: ../bin/param.c:2410 ../bin/param.c:2418 ../bin/paramfile.c:336
+#: ../bin/paramfile.c:339 ../bin/paramfile.c:345 ../bin/paramfile.c:371
+#: ../bin/paramfile.c:400 ../bin/paramfile.c:406 ../bin/paramfilelist.c:131
+#: ../bin/paramfilelist.c:183 ../bin/paramfilelist.c:236 ../bin/scale.c:305
+#: ../bin/scale.c:948 ../bin/scale.c:1084 ../bin/tease.c:1167
+#: ../bin/track.c:1801 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:677
msgid "Ok"
msgstr "Ok"
-#: ../bin/cblock.c:212
+#: ../bin/cblock.c:215
#, fuzzy
msgid "Change block"
msgstr "Mudar Bloco"
-#: ../bin/cblock.c:264 ../bin/cswitchmotor.c:342
+#: ../bin/cblock.c:269 ../bin/cswitchmotor.c:352
#, fuzzy, c-format
msgid "(%d): Layer=%u %s"
msgstr "(%d): Camada=%d %s"
-#: ../bin/cblock.c:288 ../bin/cblock.c:1000
+#: ../bin/cblock.c:293 ../bin/cblock.c:1027
msgid "Block"
msgstr "Bloco"
-#: ../bin/cblock.c:491
+#: ../bin/cblock.c:504
#, c-format
msgid "resolveBlockTrack: T%d[%d]: T%d doesn't exist"
msgstr ""
-#: ../bin/cblock.c:575 ../bin/cblock.c:807
+#: ../bin/cblock.c:592 ../bin/cblock.c:826
msgid "Block must have a name!"
msgstr ""
-#: ../bin/cblock.c:604
-msgid "Block is discontigious!"
+#: ../bin/cblock.c:621
+#, fuzzy
+msgid "Block is discontiguous!"
msgstr "Bloco não contínuo!"
-#: ../bin/cblock.c:609
+#: ../bin/cblock.c:626
#, fuzzy
msgid "Create block"
msgstr "Criar Bloco"
-#: ../bin/cblock.c:656
+#: ../bin/cblock.c:674
msgid "Non track object skipped!"
msgstr "Objeto não trilho Ignorado!"
-#: ../bin/cblock.c:660
+#: ../bin/cblock.c:678
#, fuzzy
msgid "Selected track is already in a block, skipped!"
msgstr "Trilho selecionado já está pertence a um bloco, descartado!"
-#: ../bin/cblock.c:674
+#: ../bin/cblock.c:692
msgid "Create Block"
msgstr "Criar Bloco"
-#: ../bin/cblock.c:704 ../bin/cblock.c:736
+#: ../bin/cblock.c:722 ../bin/cblock.c:754
msgid "Select a track"
msgstr "Selecionar um trilho"
-#: ../bin/cblock.c:713 ../bin/cblock.c:744
+#: ../bin/cblock.c:731 ../bin/cblock.c:762
msgid "Not a block!"
msgstr "Isto não é um bloco!"
-#: ../bin/cblock.c:749
+#: ../bin/cblock.c:767
#, c-format
msgid "Really delete block %s?"
msgstr "Deseja realmente eliminar bloco %s?"
-#: ../bin/cblock.c:749 ../bin/ccornu.c:2729 ../bin/ccornu.c:2940
-#: ../bin/cdraw.c:134 ../bin/cgroup.c:1081 ../bin/cpull.c:648
-#: ../bin/csignal.c:712 ../bin/cswitchmotor.c:670 ../bin/ctodesgn.c:2638
-#: ../bin/ctodesgn.c:3170 ../bin/ctrain.c:2507 ../bin/dbitmap.c:208
-#: ../bin/dcar.c:3970 ../bin/dcar.c:4049 ../bin/dcar.c:4133 ../bin/dcar.c:4152
-#: ../bin/dcar.c:4469 ../bin/dcar.c:4890 ../bin/dcontmgm.c:173
-#: ../bin/dcustmgm.c:168 ../bin/misc.c:1235 ../bin/misc.c:1242
-#: ../bin/misc.c:1313 ../bin/track.c:1656 ../bin/track.c:1753
-#: ../bin/track.c:1767
+#: ../bin/cblock.c:767 ../bin/ccornu.c:2952 ../bin/ccornu.c:3176
+#: ../bin/cdraw.c:130 ../bin/cgroup.c:1162 ../bin/command.c:390
+#: ../bin/command.c:397 ../bin/command.c:458 ../bin/cpull.c:673
+#: ../bin/csignal.c:725 ../bin/cswitchmotor.c:700 ../bin/ctodesgn.c:2891
+#: ../bin/ctodesgn.c:3505 ../bin/ctrain.c:2606 ../bin/dcar.c:4245
+#: ../bin/dcar.c:4343 ../bin/dcar.c:4433 ../bin/dcar.c:4459 ../bin/dcar.c:4843
+#: ../bin/dcar.c:5284 ../bin/dcustmgm.c:162 ../bin/dcontmgm.c:167
+#: ../bin/track.c:1803 ../bin/track.c:1905 ../bin/track.c:1923
msgid "Yes"
msgstr "Sim"
-#: ../bin/cblock.c:749 ../bin/ccornu.c:2729 ../bin/ccornu.c:2940
-#: ../bin/cdraw.c:134 ../bin/cgroup.c:1081 ../bin/cpull.c:648
-#: ../bin/csignal.c:712 ../bin/cswitchmotor.c:670 ../bin/ctodesgn.c:2638
-#: ../bin/ctodesgn.c:3170 ../bin/ctrain.c:2507 ../bin/dcar.c:3970
-#: ../bin/dcar.c:4049 ../bin/dcar.c:4133 ../bin/dcar.c:4152 ../bin/dcar.c:4469
-#: ../bin/dcar.c:4890 ../bin/dcontmgm.c:173 ../bin/dcustmgm.c:168
-#: ../bin/misc.c:1235 ../bin/misc.c:1242 ../bin/misc.c:1313
-#: ../bin/track.c:1656 ../bin/track.c:1753 ../bin/track.c:1767
+#: ../bin/cblock.c:767 ../bin/ccornu.c:2953 ../bin/ccornu.c:3177
+#: ../bin/cdraw.c:130 ../bin/cgroup.c:1162 ../bin/command.c:390
+#: ../bin/command.c:397 ../bin/command.c:458 ../bin/cpull.c:674
+#: ../bin/csignal.c:725 ../bin/cswitchmotor.c:700 ../bin/ctodesgn.c:2891
+#: ../bin/ctodesgn.c:3505 ../bin/ctrain.c:2606 ../bin/dcar.c:4245
+#: ../bin/dcar.c:4343 ../bin/dcar.c:4433 ../bin/dcar.c:4459 ../bin/dcar.c:4843
+#: ../bin/dcar.c:5284 ../bin/dcustmgm.c:162 ../bin/dcontmgm.c:168
+#: ../bin/track.c:1803 ../bin/track.c:1905 ../bin/track.c:1923
msgid "No"
msgstr "Não"
-#: ../bin/cblock.c:750
+#: ../bin/cblock.c:769
msgid "Delete Block"
msgstr "Eliminar bloco"
-#: ../bin/cblock.c:795
+#: ../bin/cblock.c:814
#, fuzzy, c-format
msgid "Deleting block %s"
msgstr "Eliminar bloco"
-#: ../bin/cblock.c:811
+#: ../bin/cblock.c:830
#, fuzzy
msgid "Modify Block"
msgstr "Modificar trecho"
-#: ../bin/cblock.c:844
+#: ../bin/cblock.c:863
#, fuzzy
msgid "Edit block"
msgstr "Editar bloco"
-#: ../bin/cblock.c:850
+#: ../bin/cblock.c:869
#, fuzzy, c-format
msgid "Edit block %d"
msgstr "Editar bloco"
-#: ../bin/ccontrol.c:172 ../bin/csensor.c:164 ../bin/csignal.c:239
-#: ../bin/ctrain.c:183
-msgid "Position"
-msgstr "Posição"
-
-#: ../bin/ccontrol.c:173 ../bin/ccontrol.c:431
-#, fuzzy
-msgid "On Script"
-msgstr "Script"
-
-#: ../bin/ccontrol.c:174 ../bin/ccontrol.c:433
-#, fuzzy
-msgid "Off Script"
-msgstr "Script"
-
-#: ../bin/ccontrol.c:240
-#, fuzzy
-msgid "Change Control"
-msgstr "Controle de trem"
-
-#: ../bin/ccontrol.c:282 ../bin/csensor.c:252
-#, fuzzy, c-format
-msgid "(%d [%s]): Layer=%u, at %0.3f,%0.3f"
-msgstr "(%d): Camada=%d %s"
-
-#: ../bin/ccontrol.c:295 ../bin/ccontrol.c:640
-#, fuzzy
-msgid "Control"
-msgstr "Controle de trem"
-
-#: ../bin/ccontrol.c:427
-#, fuzzy
-msgid "Origin X"
-msgstr "Origem: X"
-
-#: ../bin/ccontrol.c:429 ../bin/csensor.c:393 ../bin/csignal.c:513
-#, fuzzy
-msgid "Origin Y"
-msgstr "Origem: X"
-
-#: ../bin/ccontrol.c:445
-#, fuzzy
-msgid "Create Control"
-msgstr "Controle de trem"
-
-#: ../bin/ccontrol.c:448
-#, fuzzy
-msgid "Modify Control"
-msgstr "Controle de trem"
-
-#: ../bin/ccontrol.c:485
-#, fuzzy
-msgid "Edit control"
-msgstr "Controle de trem"
-
-#: ../bin/ccontrol.c:526
-#, fuzzy
-msgid "Place control"
-msgstr "Posicionar a circunferência"
-
-#: ../bin/ccornu.c:200 ../bin/ccornu.c:203 ../bin/ccornu.c:206
-#: ../bin/ccornu.c:260
+#: ../bin/ccornu.c:193 ../bin/ccornu.c:196 ../bin/ccornu.c:199
+#: ../bin/ccornu.c:253
#, fuzzy, c-format
msgid "%s FlexTrack"
msgstr "Trilho flexível"
-#: ../bin/ccornu.c:254
+#: ../bin/ccornu.c:247
msgid " FLEX "
msgstr ""
-#: ../bin/ccornu.c:903 ../bin/cjoin.c:894 ../bin/cmisc.c:59
+#: ../bin/ccornu.c:964 ../bin/cjoin.c:1063 ../bin/cmisc.c:55
msgid "First"
msgstr "Primeiro"
-#: ../bin/ccornu.c:910 ../bin/cjoin.c:899
+#: ../bin/ccornu.c:971 ../bin/cjoin.c:1071
msgid "Second"
msgstr "Segundo"
-#: ../bin/ccornu.c:981 ../bin/ccornu.c:2005 ../bin/ccornu.c:2035
-#: ../bin/tcornu.c:830 ../bin/tcornu.c:1037 ../bin/tcornu.c:1363
+#: ../bin/ccornu.c:1047 ../bin/ccornu.c:2141 ../bin/ccornu.c:2172
+#: ../bin/tcornu.c:877 ../bin/tcornu.c:1387
#, c-format
msgid ""
"Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] c2[%"
"0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"
msgstr ""
-#: ../bin/ccornu.c:1020 ../bin/ccornu.c:1640 ../bin/ccornu.c:1659
-#: ../bin/tbezier.c:246 ../bin/tbezier.c:253 ../bin/tcornu.c:295
-#: ../bin/tcornu.c:300
+#: ../bin/ccornu.c:1084 ../bin/ccornu.c:1757 ../bin/ccornu.c:1778
+#: ../bin/tbezier.c:284 ../bin/tbezier.c:291 ../bin/tcornu.c:320
+#: ../bin/tcornu.c:325 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:178
#, fuzzy
msgid "End Angle"
msgstr "Entrar ângulo..."
-#: ../bin/ccornu.c:1023 ../bin/ccornu.c:1639 ../bin/ccornu.c:1658
+#: ../bin/ccornu.c:1087 ../bin/ccornu.c:1756 ../bin/ccornu.c:1777
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:179
#, fuzzy
msgid "End Radius"
msgstr "Raio"
-#: ../bin/ccornu.c:1076
+#: ../bin/ccornu.c:1142
#, fuzzy
msgid "Select Point, or Add Point"
msgstr "Selecionar extremidade"
-#: ../bin/ccornu.c:1248
+#: ../bin/ccornu.c:1330
msgid "Not close enough to track or point, reselect"
msgstr ""
-#: ../bin/ccornu.c:1254
+#: ../bin/ccornu.c:1336
#, fuzzy
msgid "Drag out end of Cornu"
msgstr "Arrastar à outra extremidade da corda"
-#: ../bin/ccornu.c:1256
+#: ../bin/ccornu.c:1338
#, fuzzy
msgid "Drag along end of track"
msgstr "Arrastar para criar ramo"
-#: ../bin/ccornu.c:1258
+#: ../bin/ccornu.c:1340
#, fuzzy
msgid "Drag to move"
msgstr "Arrastar para rotacionar"
-#: ../bin/ccornu.c:1261
+#: ../bin/ccornu.c:1344
msgid "Drag point to new location, Delete to remove"
msgstr ""
-#: ../bin/ccornu.c:1265
+#: ../bin/ccornu.c:1348
#, fuzzy
msgid "Drag to change end radius"
msgstr "Arrastar para definir o raio"
-#: ../bin/ccornu.c:1268
+#: ../bin/ccornu.c:1351
#, fuzzy
msgid "Drag to change end angle"
msgstr "Arrastar para alterar elevação"
-#: ../bin/ccornu.c:1283
+#: ../bin/ccornu.c:1368
msgid "Pick any circle to adjust or add - Enter to accept, Esc to cancel"
msgstr ""
-#: ../bin/ccornu.c:1295
+#: ../bin/ccornu.c:1380
msgid "Track can't be split"
msgstr ""
-#: ../bin/ccornu.c:1357
+#: ../bin/ccornu.c:1450
#, fuzzy
msgid "Too close to other end of selected Track"
msgstr "Eleva ou abaixa todos os trechos selecionados"
-#: ../bin/ccornu.c:1365
+#: ../bin/ccornu.c:1460
#, fuzzy
msgid "Can't move end inside a turnout"
msgstr "Criar AMV personalizado"
-#: ../bin/ccornu.c:1507
+#: ../bin/ccornu.c:1609
msgid "Can't extend connected Bezier or Cornu"
msgstr ""
-#: ../bin/ccornu.c:1579
+#: ../bin/ccornu.c:1690
#, c-format
msgid ""
"Cornu : Min Radius=%s MaxRateofCurveChange/Scale=%s Length=%s Winding Arc=%s"
msgstr ""
-#: ../bin/ccornu.c:1601 ../bin/ccornu.c:2271
+#: ../bin/ccornu.c:1714 ../bin/ccornu.c:2423
msgid "Helix Already Connected"
msgstr ""
-#: ../bin/ccornu.c:1615
+#: ../bin/ccornu.c:1730
#, fuzzy
msgid "No Valid end point on that track"
msgstr "Posicionar 1ª extremidade do trecho reto"
-#: ../bin/ccornu.c:1620
+#: ../bin/ccornu.c:1735
msgid "Track is different scale"
msgstr ""
-#: ../bin/ccornu.c:1673
+#: ../bin/ccornu.c:1794
msgid ""
"Pick on point to adjust it along track - Delete to remove, Enter to confirm, "
"ESC to abort"
msgstr ""
-#: ../bin/ccornu.c:1703
+#: ../bin/ccornu.c:1825
msgid "Cornu has too complex shape - adjust end pts"
msgstr ""
-#: ../bin/ccornu.c:1714
+#: ../bin/ccornu.c:1838
#, fuzzy, c-format
msgid "Cornu point %d too close to other end of connect track - reposition it"
msgstr "Eleva ou abaixa todos os trechos selecionados"
-#: ../bin/ccornu.c:1719
+#: ../bin/ccornu.c:1844
#, fuzzy
msgid "Create Cornu"
msgstr "Criar Bloco"
-#: ../bin/ccornu.c:1908
+#: ../bin/ccornu.c:2037
msgid "Now Select or Add (+Shift) a Point"
msgstr ""
-#: ../bin/ccornu.c:1967
+#: ../bin/ccornu.c:2100
#, fuzzy, c-format
msgid "Cornu end %d too close to other end of connect track - reposition it"
msgstr "Eleva ou abaixa todos os trechos selecionados"
-#: ../bin/ccornu.c:1972
+#: ../bin/ccornu.c:2105 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:177
#, fuzzy
msgid "Modify Cornu"
msgstr "Modificar trecho"
-#: ../bin/ccornu.c:1987
+#: ../bin/ccornu.c:2122
#, c-format
msgid "Cornu Extension Create Failed for end %d"
msgstr ""
-#: ../bin/ccornu.c:2079
+#: ../bin/ccornu.c:2219
#, c-format
msgid "Connected Track End Adjust for end %d failed"
msgstr ""
-#: ../bin/ccornu.c:2090
+#: ../bin/ccornu.c:2230
msgid "Modify Cornu Cancelled"
msgstr ""
-#: ../bin/ccornu.c:2247
+#: ../bin/ccornu.c:2396
msgid "Left click - Start Cornu track"
msgstr ""
-#: ../bin/ccornu.c:2249
+#: ../bin/ccornu.c:2398
msgid "Left click - Place Flextrack"
msgstr ""
-#: ../bin/ccornu.c:2252
+#: ../bin/ccornu.c:2401
msgid "Left click - join with Cornu track"
msgstr ""
-#: ../bin/ccornu.c:2254
+#: ../bin/ccornu.c:2404
#, fuzzy
msgid "Left click - join with Cornu track, Shift Left click - move to join"
msgstr ""
"Clicar com o botão esquerdo - junta um trecho, Clicar com o botão esquerdo + "
"Shift - movimenta para juntar"
-#: ../bin/ccornu.c:2285
+#: ../bin/ccornu.c:2439
#, fuzzy
msgid "No valid open endpoint on that track"
msgstr "Movido além do fim do trilho"
-#: ../bin/ccornu.c:2313 ../bin/ccornu.c:2325
+#: ../bin/ccornu.c:2469 ../bin/ccornu.c:2482
#, fuzzy
msgid "Drag arm in the direction of track"
msgstr "Arrastar a extremidade em direção de curva"
-#: ../bin/ccornu.c:2329
+#: ../bin/ccornu.c:2487
msgid "No Unconnected Track End there"
msgstr ""
-#: ../bin/ccornu.c:2340 ../bin/ccornu.c:2364
+#: ../bin/ccornu.c:2498 ../bin/ccornu.c:2523
msgid "No Valid Track End there"
msgstr ""
-#: ../bin/ccornu.c:2352
+#: ../bin/ccornu.c:2511
#, fuzzy
msgid "Locked - Move 1st end point of Cornu track along track 1"
msgstr "Posicionar 1ª extremidade do trecho reto"
-#: ../bin/ccornu.c:2376
+#: ../bin/ccornu.c:2535
#, fuzzy
msgid "Locked - Move 2nd end point of Cornu track along track 2"
msgstr "Posicionar 1ª extremidade do trecho reto"
-#: ../bin/ccornu.c:2450
+#: ../bin/ccornu.c:2623
msgid "Track can't be split - so locked to endpoint"
msgstr ""
-#: ../bin/ccornu.c:2455
+#: ../bin/ccornu.c:2628
#, fuzzy
msgid "Point not on track 1"
msgstr "Junta dois trilhos"
-#: ../bin/ccornu.c:2493
+#: ../bin/ccornu.c:2670
#, fuzzy
msgid "Pick other end of Cornu"
msgstr "Arrastar à outra extremidade da corda"
-#: ../bin/ccornu.c:2495
+#: ../bin/ccornu.c:2673
msgid ""
"Select flextrack ends or anchors and drag, Enter to approve, Esc to Cancel"
msgstr ""
-#: ../bin/ccornu.c:2499
+#: ../bin/ccornu.c:2680
#, fuzzy
msgid "Put other end of Cornu on a track with an unconnected end point"
msgstr "Posicionar 1ª extremidade do trecho reto"
-#: ../bin/ccornu.c:2717 ../bin/ccornu.c:2930
+#: ../bin/ccornu.c:2941 ../bin/ccornu.c:3166
#, fuzzy
msgid "Not on a Track"
msgstr "Isso não é um trilho"
-#: ../bin/ccornu.c:2725
+#: ../bin/ccornu.c:2949
#, fuzzy
msgid "Select a Track To Convert"
msgstr "Selecionar um trilho"
-#: ../bin/ccornu.c:2729
+#: ../bin/ccornu.c:2952
msgid "Convert all Selected Tracks to Cornu Tracks?"
msgstr ""
-#: ../bin/ccornu.c:2734
+#: ../bin/ccornu.c:2958
#, fuzzy
msgid "Convert Cornu"
msgstr "Criar Bloco"
-#: ../bin/ccornu.c:2886
+#: ../bin/ccornu.c:3118
#, c-format
msgid "Tracks Counts: %d converted %d unconvertible %d created %d deleted"
msgstr ""
-#: ../bin/ccornu.c:2886 ../bin/ccornu.c:3000
+#: ../bin/ccornu.c:3118 ../bin/ccornu.c:3241 ../bin/cturnout.c:352
+#: ../bin/paramfilelist.c:113
msgid "OK"
msgstr ""
-#: ../bin/ccornu.c:2936
+#: ../bin/ccornu.c:3173
msgid "Select a Cornu or Bezier Track To Convert to Fixed"
msgstr ""
-#: ../bin/ccornu.c:2940
+#: ../bin/ccornu.c:3176
msgid "Convert all Selected Tracks to Fixed Tracks?"
msgstr ""
-#: ../bin/ccornu.c:2949
+#: ../bin/ccornu.c:3187
msgid "Convert Bezier and Cornu"
msgstr ""
-#: ../bin/ccornu.c:3000
+#: ../bin/ccornu.c:3240
#, c-format
msgid "Tracks Counts: %d converted %d unconvertible %d deleted"
msgstr ""
-#: ../bin/ccornu.c:3028
+#: ../bin/ccornu.c:3269
#, fuzzy
msgid "Convert"
msgstr "&Conteúdo"
-#: ../bin/ccornu.c:3029
+#: ../bin/ccornu.c:3270
#, fuzzy
msgid "Convert To Cornu"
msgstr "Criar Bloco"
-#: ../bin/ccornu.c:3030
+#: ../bin/ccornu.c:3273
#, fuzzy
msgid "Convert From Cornu"
msgstr "Curva a partir de uma corda"
-#: ../bin/ccurve.c:169
+#: ../bin/ccurve.c:165
#, fuzzy
msgid "Drag from endpoint in direction of curve - lock to track open endpoint"
msgstr "Arrastar a extremidade em direção de curva"
-#: ../bin/ccurve.c:171
+#: ../bin/ccurve.c:167
#, fuzzy
msgid "Drag from endpoint in direction of curve"
msgstr "Arrastar a extremidade em direção de curva"
-#: ../bin/ccurve.c:175
+#: ../bin/ccurve.c:172
#, fuzzy
msgid "Drag from endpoint to center - lock to track open endpoint"
msgstr "Arrastar a extremidade ao centro"
-#: ../bin/ccurve.c:177
+#: ../bin/ccurve.c:174
#, fuzzy
msgid "Drag from endpoint to center"
msgstr "Arrastar a extremidade ao centro"
-#: ../bin/ccurve.c:180
+#: ../bin/ccurve.c:178
#, fuzzy
msgid "Drag from center to endpoint"
msgstr "Arrastar do centro à extremidade"
-#: ../bin/ccurve.c:183
+#: ../bin/ccurve.c:181
#, fuzzy
msgid "Drag from one to other end of chord"
msgstr "Arrastar à outra extremidade da corda"
-#: ../bin/ccurve.c:241
+#: ../bin/ccurve.c:243
#, fuzzy
msgid "End locked: Drag out curve start"
msgstr "Arrastar para criar ramo"
-#: ../bin/ccurve.c:242
+#: ../bin/ccurve.c:244 ../bin/ccurve.c:254 ../bin/ccurve.c:272
+#, fuzzy
+msgid "End Position locked: Drag out curve start with Shift"
+msgstr "Arrastar para criar ramo"
+
+#: ../bin/ccurve.c:245
#, fuzzy
msgid "Drag along curve start"
msgstr "Arrastar para criar ramo"
-#: ../bin/ccurve.c:250
+#: ../bin/ccurve.c:253
msgid "End locked: Drag out curve center"
msgstr ""
-#: ../bin/ccurve.c:251
+#: ../bin/ccurve.c:255
#, fuzzy
msgid "Drag out curve center"
msgstr "Arrastar para criar ramo"
-#: ../bin/ccurve.c:258
+#: ../bin/ccurve.c:262
#, fuzzy
msgid "Drag out from center to endpoint"
msgstr "Arrastar do centro à extremidade"
-#: ../bin/ccurve.c:267
+#: ../bin/ccurve.c:271
#, fuzzy
msgid "End locked: Drag to other end of chord"
msgstr "Arrastar à outra extremidade da corda"
-#: ../bin/ccurve.c:269
+#: ../bin/ccurve.c:274
msgid "Drag to other end of chord"
msgstr "Arrastar à outra extremidade da corda"
-#: ../bin/ccurve.c:324
+#: ../bin/ccurve.c:332
#, c-format
msgid "Start Locked: Drag out curve start - Angle=%0.3f"
msgstr ""
-#: ../bin/ccurve.c:325
+#: ../bin/ccurve.c:333
#, c-format
msgid "Drag out curve start - Angle=%0.3f"
msgstr ""
-#: ../bin/ccurve.c:331
+#: ../bin/ccurve.c:340
#, fuzzy, c-format
msgid "Tangent locked: Drag out center - Radius=%s Angle=%0.3f"
msgstr "Trecho tangente: Comprimento %s Ângulo %0.3f"
-#: ../bin/ccurve.c:332
+#: ../bin/ccurve.c:341
#, fuzzy, c-format
msgid "Drag out center - Radius=%s Angle=%0.3f"
msgstr "Raio=%s Ângulo=%0.3f"
-#: ../bin/ccurve.c:338
+#: ../bin/ccurve.c:348
#, fuzzy, c-format
msgid "Drag to Edge: Radius=%s Angle=%0.3f"
msgstr "Raio=%s Ângulo=%0.3f"
-#: ../bin/ccurve.c:344
+#: ../bin/ccurve.c:356
#, fuzzy, c-format
msgid "Start locked: Drag out chord length=%s angle=%0.3f"
msgstr "Trecho tangente: Comprimento %s Ângulo %0.3f"
-#: ../bin/ccurve.c:345
+#: ../bin/ccurve.c:357
#, fuzzy, c-format
msgid "Drag out chord length=%s angle=%0.3f"
msgstr "Trecho reto Comprimento=%s Ângulo=%0.3f"
-#: ../bin/ccurve.c:399 ../bin/ccurve.c:557 ../bin/drawgeom.c:735
-msgid "Drag on Red arrows to adjust curve"
-msgstr "Arrastar as setas vermelhas para ajustar a curva"
+#: ../bin/ccurve.c:433 ../bin/ccurve.c:615 ../bin/cjoin.c:714
+#: ../bin/cjoin.c:1017
+#, fuzzy
+msgid "Desired Radius"
+msgstr "Raio da circunferência"
-#: ../bin/ccurve.c:497 ../bin/cjoin.c:210 ../bin/cmodify.c:580
-#: ../bin/cturntbl.c:580
+#: ../bin/ccurve.c:534 ../bin/cjoin.c:216 ../bin/cmodify.c:639
+#: ../bin/cturntbl.c:687
#, c-format
msgid "Straight Track: Length=%s Angle=%0.3f"
msgstr "Trecho reto: Comprimento=%s Ângulo=%0.3f"
-#: ../bin/ccurve.c:504 ../bin/cmodify.c:585 ../bin/drawgeom.c:618
-#: ../wlib/gtklib/ixhelp.c:235
+#: ../bin/ccurve.c:542 ../bin/cmodify.c:644 ../bin/drawgeom.c:718
msgid "Back"
msgstr "Voltar"
-#: ../bin/ccurve.c:523
+#: ../bin/ccurve.c:563
#, c-format
msgid "Curved Track: Radius=%s Angle=%0.3f Length=%s"
msgstr "Trecho curvo: Raio=%s Ângulo=%0.3f Comprimento=%s"
-#: ../bin/ccurve.c:577 ../bin/cstraigh.c:162
+#: ../bin/ccurve.c:642 ../bin/cstraigh.c:173
msgid "Create Straight Track"
msgstr "Criar trecho reto"
-#: ../bin/ccurve.c:589
+#: ../bin/ccurve.c:656
msgid "Create Curved Track"
msgstr "Criar trecho curvo"
-#: ../bin/ccurve.c:660
+#: ../bin/ccurve.c:726
msgid "Elevation Difference"
msgstr "Diferença de elevação"
-#: ../bin/ccurve.c:661 ../bin/cdraw.c:514 ../bin/cdraw.c:1437
-#: ../bin/cdraw.c:1583 ../bin/cdraw.c:2231 ../bin/cdraw.c:2430
-#: ../bin/cdraw.c:2444 ../bin/compound.c:545 ../bin/compound.c:550
-#: ../bin/compound.c:555 ../bin/compound.c:560 ../bin/ctodesgn.c:180
-#: ../bin/ctodesgn.c:181 ../bin/ctodesgn.c:182 ../bin/ctodesgn.c:183
-#: ../bin/ctodesgn.c:299 ../bin/ctodesgn.c:302 ../bin/ctodesgn.c:304
-#: ../bin/ctodesgn.c:365 ../bin/ctodesgn.c:366 ../bin/ctodesgn.c:371
-#: ../bin/ctodesgn.c:435 ../bin/ctodesgn.c:439 ../bin/ctodesgn.c:440
-#: ../bin/ctodesgn.c:446 ../bin/ctodesgn.c:615 ../bin/tbezier.c:247
-#: ../bin/tbezier.c:254 ../bin/tcornu.c:301 ../bin/tcurve.c:369
+#: ../bin/ccurve.c:727 ../bin/cdraw.c:559 ../bin/cdraw.c:1585
+#: ../bin/cdraw.c:1732 ../bin/cdraw.c:2850 ../bin/cdraw.c:3050
+#: ../bin/cdraw.c:3064 ../bin/compound.c:723 ../bin/compound.c:728
+#: ../bin/compound.c:733 ../bin/compound.c:738 ../bin/ctodesgn.c:187
+#: ../bin/ctodesgn.c:188 ../bin/ctodesgn.c:189 ../bin/ctodesgn.c:190
+#: ../bin/ctodesgn.c:317 ../bin/ctodesgn.c:320 ../bin/ctodesgn.c:322
+#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:397 ../bin/ctodesgn.c:402
+#: ../bin/ctodesgn.c:478 ../bin/ctodesgn.c:482 ../bin/ctodesgn.c:483
+#: ../bin/ctodesgn.c:489 ../bin/ctodesgn.c:696 ../bin/tbezier.c:285
+#: ../bin/tbezier.c:292 ../bin/tcornu.c:326 ../bin/tcurve.c:401
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:187
msgid "Radius"
msgstr "Raio"
-#: ../bin/ccurve.c:662 ../bin/tcurve.c:370
+#: ../bin/ccurve.c:728 ../bin/tcurve.c:402
msgid "Turns"
msgstr "Desvios"
-#: ../bin/ccurve.c:663
+#: ../bin/ccurve.c:729
msgid "Angular Separation"
msgstr "Separação angular"
-#: ../bin/ccurve.c:664 ../bin/celev.c:47 ../bin/compound.c:562
-#: ../bin/tbezier.c:259 ../bin/tcornu.c:308 ../bin/tcurve.c:376
-#: ../bin/tease.c:529 ../bin/tstraigh.c:91
+#: ../bin/ccurve.c:730 ../bin/celev.c:43 ../bin/compound.c:740
+#: ../bin/tbezier.c:297 ../bin/tcornu.c:333 ../bin/tcurve.c:408
+#: ../bin/tease.c:534 ../bin/tstraigh.c:93
msgid "Grade"
msgstr "Gradiente"
-#: ../bin/ccurve.c:665
+#: ../bin/ccurve.c:731
msgid "Vertical Separation"
msgstr "Separação vertical"
-#: ../bin/ccurve.c:667
+#: ../bin/ccurve.c:733
msgid "Total Length"
msgstr "Comprimento total"
-#: ../bin/ccurve.c:743
+#: ../bin/ccurve.c:813
#, c-format
msgid "Total Length %s"
msgstr "Comprimento total %s"
-#: ../bin/ccurve.c:781 ../bin/ccurve.c:985 ../bin/tcurve.c:809
+#: ../bin/ccurve.c:852 ../bin/ccurve.c:1079 ../bin/tcurve.c:1008
msgid "Helix"
msgstr "Hélice"
-#: ../bin/ccurve.c:795
+#: ../bin/ccurve.c:868
msgid "Circle Radius"
msgstr "Raio da circunferência"
-#: ../bin/ccurve.c:800
+#: ../bin/ccurve.c:873
msgid "Click on Circle Edge"
msgstr "Clicar no limite da circunferência"
-#: ../bin/ccurve.c:804
+#: ../bin/ccurve.c:877
msgid "Click on Circle Center"
msgstr "Clicar no centro da circunferência"
-#: ../bin/ccurve.c:835
+#: ../bin/ccurve.c:907
msgid "Drag to Center"
msgstr "Arrastar ao centro"
-#: ../bin/ccurve.c:839
+#: ../bin/ccurve.c:911
msgid "Drag to Edge"
msgstr "Arrastar à borda"
-#: ../bin/ccurve.c:859 ../bin/ccurve.c:863
+#: ../bin/ccurve.c:932 ../bin/ccurve.c:936
#, c-format
msgid "Radius=%s"
msgstr "Raio=%s"
-#: ../bin/ccurve.c:884
+#: ../bin/ccurve.c:957
msgid "Create Helix Track"
msgstr "Criar trecho em hélice"
-#: ../bin/ccurve.c:899
+#: ../bin/ccurve.c:972
msgid "Create Circle Track"
msgstr "Criar trecho de circunferência"
-#: ../bin/ccurve.c:954
-#, fuzzy
-msgid "Cornu Curve"
-msgstr "Trecho curvo"
-
-#: ../bin/ccurve.c:956
+#: ../bin/ccurve.c:1031
msgid "Curve Track"
msgstr "Trecho curvo"
-#: ../bin/ccurve.c:956
+#: ../bin/ccurve.c:1031
msgid "Curve Tracks"
msgstr "Trechos curvos"
-#: ../bin/ccurve.c:957
+#: ../bin/ccurve.c:1032
msgid "Curve from End-Pt"
msgstr "Curva a partir de extremidade"
-#: ../bin/ccurve.c:958
+#: ../bin/ccurve.c:1035
msgid "Curve from Tangent"
msgstr "Curva a partir de uma tangente"
-#: ../bin/ccurve.c:959
+#: ../bin/ccurve.c:1038
msgid "Curve from Center"
msgstr "Curva a partir de um centro"
-#: ../bin/ccurve.c:960
+#: ../bin/ccurve.c:1041
msgid "Curve from Chord"
msgstr "Curva a partir de uma corda"
-#: ../bin/ccurve.c:961 ../bin/cdraw.c:2572
+#: ../bin/ccurve.c:1044 ../bin/cdraw.c:3199
#, fuzzy
msgid "Bezier Curve"
msgstr "Fundir curvas"
-#: ../bin/ccurve.c:964 ../bin/tcurve.c:643
+#: ../bin/ccurve.c:1047
+#, fuzzy
+msgid "Cornu Curve"
+msgstr "Trecho curvo"
+
+#: ../bin/ccurve.c:1052 ../bin/tcurve.c:684
msgid "Circle Track"
msgstr "Trecho de circunferência"
-#: ../bin/ccurve.c:964
+#: ../bin/ccurve.c:1052
msgid "Circle Tracks"
msgstr "Trechos de circunferências"
-#: ../bin/ccurve.c:965
+#: ../bin/ccurve.c:1054
msgid "Fixed Radius Circle"
msgstr "Circunferência com raio fixo"
-#: ../bin/ccurve.c:966
+#: ../bin/ccurve.c:1056
msgid "Circle from Tangent"
msgstr "Circunferência a partir de uma tangente"
-#: ../bin/ccurve.c:967
+#: ../bin/ccurve.c:1059
msgid "Circle from Center"
msgstr "Circunferência a partir de um centro"
-#: ../bin/cdraw.c:130
+#: ../bin/ccontrol.c:169 ../bin/csensor.c:161 ../bin/csignal.c:237
+#: ../bin/ctrain.c:180
+msgid "Position"
+msgstr "Posição"
+
+#: ../bin/ccontrol.c:170 ../bin/ccontrol.c:431
+#, fuzzy
+msgid "On Script"
+msgstr "Script"
+
+#: ../bin/ccontrol.c:171 ../bin/ccontrol.c:433
+#, fuzzy
+msgid "Off Script"
+msgstr "Script"
+
+#: ../bin/ccontrol.c:238
+#, fuzzy
+msgid "Change Control"
+msgstr "Controle de trem"
+
+#: ../bin/ccontrol.c:281 ../bin/csensor.c:251
+#, fuzzy, c-format
+msgid "(%d [%s]): Layer=%u, at %0.3f,%0.3f"
+msgstr "(%d): Camada=%d %s"
+
+#: ../bin/ccontrol.c:294 ../bin/ccontrol.c:644
+#, fuzzy
+msgid "Control"
+msgstr "Controle de trem"
+
+#: ../bin/ccontrol.c:427 ../bin/csensor.c:391 ../bin/csignal.c:512
+#, fuzzy
+msgid "Origin X"
+msgstr "Origem: X"
+
+#: ../bin/ccontrol.c:429 ../bin/csensor.c:393 ../bin/csignal.c:514
+#, fuzzy
+msgid "Origin Y"
+msgstr "Origem: X"
+
+#: ../bin/ccontrol.c:445
+#, fuzzy
+msgid "Create Control"
+msgstr "Controle de trem"
+
+#: ../bin/ccontrol.c:448
+#, fuzzy
+msgid "Modify Control"
+msgstr "Controle de trem"
+
+#: ../bin/ccontrol.c:488
+#, fuzzy
+msgid "Edit control"
+msgstr "Controle de trem"
+
+#: ../bin/ccontrol.c:529
+#, fuzzy
+msgid "Place control"
+msgstr "Posicionar a circunferência"
+
+#: ../bin/cdraw.c:125
msgid "Font Size must be > 0"
msgstr "Tamanho da fonte deve ser maior que 0"
-#: ../bin/cdraw.c:509
+#: ../bin/cdraw.c:553
msgid "First Point: X,Y"
msgstr ""
-#: ../bin/cdraw.c:510 ../bin/tcurve.c:368
+#: ../bin/cdraw.c:554 ../bin/tcurve.c:400
#, fuzzy
msgid "Center: X,Y"
msgstr "Centro: X"
-#: ../bin/cdraw.c:511 ../bin/cdraw.c:532 ../bin/cdraw.c:1427
-#: ../bin/cdraw.c:1572 ../bin/cdraw.c:2229 ../bin/cdraw.c:2451
-#: ../bin/cdraw.c:2471 ../bin/cdraw.c:2475 ../bin/compound.c:543
-#: ../bin/compound.c:548 ../bin/compound.c:553 ../bin/compound.c:558
-#: ../bin/compound.c:564 ../bin/cprint.c:155 ../bin/csignal.c:240
-#: ../bin/csignal.c:515 ../bin/ctodesgn.c:188 ../bin/ctodesgn.c:189
-#: ../bin/ctodesgn.c:190 ../bin/ctodesgn.c:192 ../bin/ctodesgn.c:237
-#: ../bin/ctodesgn.c:260 ../bin/ctodesgn.c:262 ../bin/ctodesgn.c:297
-#: ../bin/ctodesgn.c:300 ../bin/ctodesgn.c:326 ../bin/ctodesgn.c:329
-#: ../bin/ctodesgn.c:363 ../bin/ctodesgn.c:368 ../bin/ctodesgn.c:392
-#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:433 ../bin/ctodesgn.c:437
-#: ../bin/ctodesgn.c:442 ../bin/ctodesgn.c:468 ../bin/ctodesgn.c:488
-#: ../bin/ctodesgn.c:509 ../bin/ctodesgn.c:616 ../bin/ctrain.c:184
-#: ../bin/tease.c:524 ../bin/tstraigh.c:90
-msgid "Angle"
-msgstr "Ângulo"
+#: ../bin/cdraw.c:555 ../bin/tcurve.c:405
+msgid "Angular Length"
+msgstr "Comprimento angular"
+
+#: ../bin/cdraw.c:556
+#, fuzzy
+msgid "Line Angle"
+msgstr "Ângulo a esquerda"
-#: ../bin/cdraw.c:512 ../bin/tcurve.c:374
+#: ../bin/cdraw.c:557 ../bin/tcurve.c:406
msgid "CCW Angle"
msgstr "Ângulo anti-horário"
-#: ../bin/cdraw.c:513 ../bin/tcurve.c:375
+#: ../bin/cdraw.c:558 ../bin/tcurve.c:407
msgid "CW Angle"
msgstr "Ângulo horário"
-#: ../bin/cdraw.c:516 ../bin/cdraw.c:1434 ../bin/cdraw.c:1556
-#: ../bin/cprint.c:130
+#: ../bin/cdraw.c:561 ../bin/cdraw.c:1582 ../bin/cdraw.c:1705
+#: ../bin/cprint.c:131 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:185
msgid "Height"
msgstr "Altura"
-#: ../bin/cdraw.c:517 ../bin/cdraw.c:1432 ../bin/cdraw.c:1555
-#: ../bin/cdraw.c:2226 ../bin/cdraw.c:2488 ../bin/ctrain.c:186
-#: ../bin/dcar.c:2234
+#: ../bin/cdraw.c:562 ../bin/cdraw.c:1580 ../bin/cdraw.c:1704
+#: ../bin/cdraw.c:2845 ../bin/cdraw.c:3110 ../bin/ctrain.c:183
+#: ../bin/dcar.c:2344 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:192
msgid "Width"
msgstr "Largura"
-#: ../bin/cdraw.c:518
-msgid "Keep Origin Relative"
-msgstr ""
-
-#: ../bin/cdraw.c:519
-#, fuzzy
-msgid "Rot Origin: X,Y"
-msgstr "Origem: X"
-
-#: ../bin/cdraw.c:520 ../bin/cdraw.c:1441
-#, fuzzy
-msgid "Rotate Angle"
-msgstr "Ângulo a direita"
+#: ../bin/cdraw.c:563 ../bin/compound.c:743 ../bin/tstraigh.c:94
+msgid "Pivot"
+msgstr "Pivô"
-#: ../bin/cdraw.c:521
+#: ../bin/cdraw.c:564
msgid "Point Count"
msgstr "Ponto de contagem"
-#: ../bin/cdraw.c:522 ../bin/cdraw.c:2204 ../bin/ctodesgn.c:202
-#: ../bin/tbezier.c:261
+#: ../bin/cdraw.c:565 ../bin/cdraw.c:2823 ../bin/ctodesgn.c:209
+#: ../bin/tbezier.c:299
msgid "Line Width"
msgstr "Largura da linha"
-#: ../bin/cdraw.c:523 ../bin/cdraw.c:2233 ../bin/tbezier.c:260
+#: ../bin/cdraw.c:566 ../bin/cdraw.c:2852 ../bin/tbezier.c:298
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:379
#, fuzzy
msgid "Line Type"
msgstr "Tipo de madeira"
-#: ../bin/cdraw.c:524 ../bin/cdraw.c:2206 ../bin/cdraw.c:2208
-#: ../bin/cdraw.c:2306 ../bin/cdraw.c:2339 ../bin/cmisc.c:125
-#: ../bin/ctext.c:68 ../bin/ctext.c:147 ../bin/ctodesgn.c:203
-#: ../bin/dcar.c:2230 ../bin/dlayer.c:485 ../bin/doption.c:558
+#: ../bin/cdraw.c:567 ../bin/cdraw.c:2825 ../bin/cdraw.c:2827
+#: ../bin/cdraw.c:2927 ../bin/cdraw.c:2960 ../bin/cmisc.c:121
+#: ../bin/ctext.c:67 ../bin/ctext.c:145 ../bin/ctodesgn.c:210
+#: ../bin/dcar.c:2340 ../bin/dlayer.c:545 ../bin/doption.c:591
msgid "Color"
msgstr "Cor"
-#: ../bin/cdraw.c:525
+#: ../bin/cdraw.c:568
#, fuzzy
msgid "Filled"
msgstr "Retângulo preenchido"
-#: ../bin/cdraw.c:526
+#: ../bin/cdraw.c:569
#, fuzzy
msgid "Open End"
msgstr "À borda"
-#: ../bin/cdraw.c:527 ../bin/cmisc.c:148 ../bin/cmisc.c:149 ../bin/cmisc.c:150
-#: ../bin/cmisc.c:151 ../bin/ctext.c:70 ../bin/ctext.c:148
+#: ../bin/cdraw.c:570 ../bin/cmisc.c:144 ../bin/cmisc.c:145 ../bin/cmisc.c:146
+#: ../bin/cmisc.c:147 ../bin/ctext.c:69 ../bin/ctext.c:146
#, fuzzy
msgid "Boxed"
msgstr "Retângulo"
-#: ../bin/cdraw.c:528 ../bin/cdraw.c:1108 ../bin/cdraw.c:2240
+#: ../bin/cdraw.c:571 ../bin/cdraw.c:1177 ../bin/cdraw.c:2859
msgid "Lumber"
msgstr "Madeira"
-#: ../bin/cdraw.c:529
+#: ../bin/cdraw.c:572
msgid "Orientation"
msgstr "Orientação"
-#: ../bin/cdraw.c:530 ../bin/cdraw.c:2222
-#: ../../../../build/work/app/bin/bllnhlp.c:588
+#: ../bin/cdraw.c:573 ../bin/cdraw.c:2841
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:679
msgid "Size"
msgstr "Tamanho"
-#: ../bin/cdraw.c:531 ../bin/compound.c:563 ../bin/tease.c:523
+#: ../bin/cdraw.c:574
#, fuzzy
-msgid "Origin: X,Y"
+msgid "Text Origin: X,Y"
msgstr "Origem: X"
-#: ../bin/cdraw.c:533 ../bin/ctext.c:66 ../bin/ctext.c:146
+#: ../bin/cdraw.c:575
+#, fuzzy
+msgid "Text Angle"
+msgstr "Ângulo a esquerda"
+
+#: ../bin/cdraw.c:576 ../bin/ctext.c:65 ../bin/ctext.c:144
msgid "Font Size"
msgstr "Tamanha da fonte"
-#: ../bin/cdraw.c:534 ../bin/cdraw.c:1254 ../bin/ctext.c:262
+#: ../bin/cdraw.c:577 ../bin/cdraw.c:1324 ../bin/ctext.c:273
msgid "Text"
msgstr "Texto"
-#: ../bin/cdraw.c:535 ../bin/cmisc.c:144 ../bin/compound.c:565
-#: ../bin/tcurve.c:377 ../bin/tease.c:530 ../bin/tstraigh.c:92
-msgid "Pivot"
-msgstr "Pivô"
+#: ../bin/cdraw.c:578
+msgid "Lock To Origin"
+msgstr ""
+
+#: ../bin/cdraw.c:579
+#, fuzzy
+msgid "Rot Origin: X,Y"
+msgstr "Origem: X"
-#: ../bin/cdraw.c:536 ../bin/compound.c:571 ../bin/cturntbl.c:253
-#: ../bin/doption.c:139 ../bin/doption.c:140 ../bin/tbezier.c:263
-#: ../bin/tcornu.c:309 ../bin/tcurve.c:378 ../bin/tease.c:531
-#: ../bin/tstraigh.c:93 ../../../../build/work/app/bin/bllnhlp.c:666
-#: ../../../../build/work/app/bin/bllnhlp.c:667
-#: ../../../../build/work/app/bin/bllnhlp.c:668
-#: ../../../../build/work/app/bin/bllnhlp.c:669
-#: ../../../../build/work/app/bin/bllnhlp.c:670
-#: ../../../../build/work/app/bin/bllnhlp.c:671
-#: ../../../../build/work/app/bin/bllnhlp.c:672
-#: ../../../../build/work/app/bin/bllnhlp.c:673
-#: ../../../../build/work/app/bin/bllnhlp.c:674
-#: ../../../../build/work/app/bin/bllnhlp.c:675
-#: ../../../../build/work/app/bin/bllnhlp.c:676
-#: ../../../../build/work/app/bin/bllnhlp.c:677
-#: ../../../../build/work/app/bin/bllnhlp.c:678
-#: ../../../../build/work/app/bin/bllnhlp.c:679
-#: ../../../../build/work/app/bin/bllnhlp.c:680
-#: ../../../../build/work/app/bin/bllnhlp.c:681
-#: ../../../../build/work/app/bin/bllnhlp.c:682
-#: ../../../../build/work/app/bin/bllnhlp.c:683
-#: ../../../../build/work/app/bin/bllnhlp.c:684
-#: ../../../../build/work/app/bin/bllnhlp.c:685
+#: ../bin/cdraw.c:580
+#, fuzzy
+msgid "Rotate By"
+msgstr "Rotacionar"
+
+#: ../bin/cdraw.c:581 ../bin/compound.c:749 ../bin/cturntbl.c:277
+#: ../bin/doption.c:101 ../bin/doption.c:102 ../bin/tbezier.c:301
+#: ../bin/tcornu.c:334 ../bin/tcurve.c:410 ../bin/tease.c:536
+#: ../bin/tstraigh.c:95 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:757
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:758
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:759
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:760
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:761
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:762
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:763
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:764
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:765
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:766
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:767
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:768
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:769
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:770
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:771
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:772
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:773
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:774
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:775
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:776
msgid "Layer"
msgstr "Camada"
-#: ../bin/cdraw.c:1093
+#: ../bin/cdraw.c:1057 ../bin/cmisc.c:233 ../bin/cmodify.c:379
+#: ../bin/compound.c:848 ../bin/ctrain.c:218
+msgid "Change Track"
+msgstr "Substituir trecho"
+
+#: ../bin/cdraw.c:1162
msgid "Straight Line"
msgstr "Linha reta"
-#: ../bin/cdraw.c:1098 ../bin/cdraw.c:2564
+#: ../bin/cdraw.c:1167 ../bin/cdraw.c:3190
msgid "Dimension Line"
msgstr "Linha dimensional"
-#: ../bin/cdraw.c:1119 ../bin/cdraw.c:2241 ../bin/cdraw.c:2566
+#: ../bin/cdraw.c:1188 ../bin/cdraw.c:2860 ../bin/cdraw.c:3192
msgid "Table Edge"
msgstr "Limite do tablado"
-#: ../bin/cdraw.c:1139 ../bin/cdraw.c:2246 ../bin/cdraw.c:2247
-#: ../bin/cdraw.c:2248
+#: ../bin/cdraw.c:1212 ../bin/cdraw.c:2865 ../bin/cdraw.c:2866
+#: ../bin/cdraw.c:2867
msgid "Circle"
msgstr "Circunferência"
-#: ../bin/cdraw.c:1150
+#: ../bin/cdraw.c:1227
msgid "Curved Line"
msgstr "Linha curva"
-#: ../bin/cdraw.c:1166 ../bin/cdraw.c:2251 ../bin/cdraw.c:2252
-#: ../bin/cdraw.c:2253
+#: ../bin/cdraw.c:1249 ../bin/cdraw.c:2870 ../bin/cdraw.c:2871
+#: ../bin/cdraw.c:2872
msgid "Filled Circle"
msgstr "Círculo"
-#: ../bin/cdraw.c:1185
+#: ../bin/cdraw.c:1279
+#, fuzzy
+msgid "Filled Rectangle"
+msgstr "Círculo"
+
+#: ../bin/cdraw.c:1279
#, fuzzy
msgid "Rectangle"
msgstr "Reescalar"
-#: ../bin/cdraw.c:1199 ../bin/cdraw.c:2257
+#: ../bin/cdraw.c:1293 ../bin/cdraw.c:2876
msgid "Polyline"
msgstr "Linha poligonal"
-#: ../bin/cdraw.c:1203 ../bin/cdraw.c:2250 ../bin/cdraw.c:2583
-msgid "Polygon"
-msgstr "Polígono"
-
-#: ../bin/cdraw.c:1221
-#, fuzzy
-msgid "Filled Rectangle"
-msgstr "Círculo"
-
-#: ../bin/cdraw.c:1234 ../bin/cdraw.c:2255 ../bin/cdraw.c:2584
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2874 ../bin/cdraw.c:3213
#, fuzzy
msgid "Filled Polygon"
msgstr "Retângulo preenchido"
-#: ../bin/cdraw.c:1260
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2869 ../bin/cdraw.c:3212
+msgid "Polygon"
+msgstr "Polígono"
+
+#: ../bin/cdraw.c:1330
#, fuzzy, c-format
msgid "%s(%d) Layer=%d"
msgstr "%s: Camada=%d"
-#: ../bin/cdraw.c:1280 ../bin/cdraw.c:2309 ../bin/compound.c:956
-#: ../bin/doption.c:134 ../bin/tbezier.c:458
+#: ../bin/cdraw.c:1355 ../bin/cdraw.c:2930 ../bin/compound.c:1156
+#: ../bin/doption.c:96 ../bin/tbezier.c:519
msgid "Solid"
msgstr "Sólido"
-#: ../bin/cdraw.c:1281 ../bin/cdraw.c:2311 ../bin/compound.c:957
-#: ../bin/doption.c:131 ../bin/tbezier.c:459
+#: ../bin/cdraw.c:1356 ../bin/cdraw.c:2932 ../bin/compound.c:1157
+#: ../bin/doption.c:93 ../bin/tbezier.c:520
msgid "Dash"
msgstr "Tracejado"
-#: ../bin/cdraw.c:1282 ../bin/cdraw.c:2310 ../bin/compound.c:958
-#: ../bin/tbezier.c:460
+#: ../bin/cdraw.c:1357 ../bin/cdraw.c:2931 ../bin/compound.c:1158
+#: ../bin/tbezier.c:521
msgid "Dot"
msgstr ""
-#: ../bin/cdraw.c:1283 ../bin/compound.c:959 ../bin/tbezier.c:461
+#: ../bin/cdraw.c:1358 ../bin/compound.c:1159 ../bin/tbezier.c:522
#, fuzzy
msgid "DashDot"
msgstr "Tracejado"
-#: ../bin/cdraw.c:1284 ../bin/compound.c:960 ../bin/tbezier.c:462
+#: ../bin/cdraw.c:1359 ../bin/compound.c:1161 ../bin/tbezier.c:523
msgid "DashDotDot"
msgstr ""
-#: ../bin/cdraw.c:1285 ../bin/compound.c:961 ../bin/tbezier.c:463
+#: ../bin/cdraw.c:1360 ../bin/compound.c:1163 ../bin/tbezier.c:524
#, fuzzy
msgid "CenterDot"
msgstr "Centro: X"
-#: ../bin/cdraw.c:1286 ../bin/compound.c:962 ../bin/tbezier.c:464
+#: ../bin/cdraw.c:1361 ../bin/compound.c:1165 ../bin/tbezier.c:525
msgid "PhantomDot"
msgstr ""
-#: ../bin/cdraw.c:1291 ../bin/cdraw.c:2357
+#: ../bin/cdraw.c:1366 ../bin/cdraw.c:2981
msgid "Tiny"
msgstr "Minúsculo"
-#: ../bin/cdraw.c:1292 ../bin/cdraw.c:2358
+#: ../bin/cdraw.c:1367 ../bin/cdraw.c:2982
msgid "Small"
msgstr "Pequeno"
-#: ../bin/cdraw.c:1293 ../bin/cdraw.c:2359
+#: ../bin/cdraw.c:1368 ../bin/cdraw.c:2983
msgid "Medium"
msgstr "Médio"
-#: ../bin/cdraw.c:1294 ../bin/cdraw.c:2360
+#: ../bin/cdraw.c:1369 ../bin/cdraw.c:2984
msgid "Large"
msgstr "Grande"
-#: ../bin/cdraw.c:1430
+#: ../bin/cdraw.c:1575 ../bin/cdraw.c:1721 ../bin/cdraw.c:2848
+#: ../bin/cdraw.c:3071 ../bin/cdraw.c:3092 ../bin/cdraw.c:3096
+#: ../bin/compound.c:721 ../bin/compound.c:726 ../bin/compound.c:731
+#: ../bin/compound.c:736 ../bin/compound.c:742 ../bin/cprint.c:156
+#: ../bin/csignal.c:238 ../bin/csignal.c:516 ../bin/ctodesgn.c:195
+#: ../bin/ctodesgn.c:196 ../bin/ctodesgn.c:197 ../bin/ctodesgn.c:199
+#: ../bin/ctodesgn.c:243 ../bin/ctodesgn.c:269 ../bin/ctodesgn.c:271
+#: ../bin/ctodesgn.c:315 ../bin/ctodesgn.c:318 ../bin/ctodesgn.c:349
+#: ../bin/ctodesgn.c:352 ../bin/ctodesgn.c:394 ../bin/ctodesgn.c:399
+#: ../bin/ctodesgn.c:427 ../bin/ctodesgn.c:431 ../bin/ctodesgn.c:476
+#: ../bin/ctodesgn.c:480 ../bin/ctodesgn.c:485 ../bin/ctodesgn.c:515
+#: ../bin/ctodesgn.c:539 ../bin/ctodesgn.c:564 ../bin/ctodesgn.c:697
+#: ../bin/ctrain.c:181 ../bin/tease.c:529
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:183
+msgid "Angle"
+msgstr "Ângulo"
+
+#: ../bin/cdraw.c:1578 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:188
#, fuzzy
msgid "Relative Angle"
msgstr "Ângulo a esquerda"
-#: ../bin/cdraw.c:1439 ../bin/cdraw.c:1587 ../bin/cdraw.c:2445
+#: ../bin/cdraw.c:1587 ../bin/cdraw.c:1737 ../bin/cdraw.c:3065
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:184
#, fuzzy
msgid "Arc Angle"
msgstr "Ângulo"
-#: ../bin/cdraw.c:1444
+#: ../bin/cdraw.c:1589
#, fuzzy
-msgid "Rot Center X"
-msgstr "Centro: X"
+msgid "Rotate Angle"
+msgstr "Ângulo a direita"
-#: ../bin/cdraw.c:1446
+#: ../bin/cdraw.c:1592
#, fuzzy
-msgid "Rot Center Y"
+msgid "Rot Center X,Y"
msgstr "Centro: X"
-#: ../bin/cdraw.c:1543
+#: ../bin/cdraw.c:1692
#, fuzzy
msgid "Seg Lth"
msgstr "Comprimento"
-#: ../bin/cdraw.c:1544
+#: ../bin/cdraw.c:1693
msgid "Rel Ang"
msgstr ""
-#: ../bin/cdraw.c:2211 ../bin/cdraw.c:2213 ../bin/cdraw.c:2337
+#: ../bin/cdraw.c:2830 ../bin/cdraw.c:2832 ../bin/cdraw.c:2958
msgid "Lumber Type"
msgstr "Tipo de madeira"
-#: ../bin/cdraw.c:2238
+#: ../bin/cdraw.c:2857
msgid "Straight"
msgstr "Reto"
-#: ../bin/cdraw.c:2239
+#: ../bin/cdraw.c:2858
msgid "Dimension"
msgstr "Dimensão"
-#: ../bin/cdraw.c:2242 ../bin/cdraw.c:2243 ../bin/cdraw.c:2244
-#: ../bin/cdraw.c:2245
+#: ../bin/cdraw.c:2861 ../bin/cdraw.c:2862 ../bin/cdraw.c:2863
+#: ../bin/cdraw.c:2864
msgid "Curved"
msgstr "Curvado"
-#: ../bin/cdraw.c:2249 ../bin/cdraw.c:2581
+#: ../bin/cdraw.c:2868 ../bin/cdraw.c:3210
msgid "Box"
msgstr "Retângulo"
-#: ../bin/cdraw.c:2254 ../bin/cdraw.c:2582
+#: ../bin/cdraw.c:2873 ../bin/cdraw.c:3211
msgid "Filled Box"
msgstr "Retângulo preenchido"
-#: ../bin/cdraw.c:2256 ../bin/tbezier.c:455
+#: ../bin/cdraw.c:2875 ../bin/tbezier.c:516
#, fuzzy
msgid "Bezier Line"
msgstr "Criar linhas"
-#: ../bin/cdraw.c:2304
+#: ../bin/cdraw.c:2925
#, c-format
msgid "%s Line Width"
msgstr "Largura da linha do %s"
-#: ../bin/cdraw.c:2307 ../bin/dcar.c:2203 ../bin/dcar.c:4367
-#: ../bin/dcar.c:4372
+#: ../bin/cdraw.c:2928 ../bin/dcar.c:2313 ../bin/dcar.c:4694
+#: ../bin/dcar.c:4700
msgid "Type"
msgstr "Tipo"
-#: ../bin/cdraw.c:2312
+#: ../bin/cdraw.c:2933
#, fuzzy
msgid "Dash-Dot"
msgstr "Tracejado"
-#: ../bin/cdraw.c:2313
+#: ../bin/cdraw.c:2934
msgid "Dash-Dot-Dot"
msgstr ""
-#: ../bin/cdraw.c:2326
+#: ../bin/cdraw.c:2947
#, c-format
msgid "%s Color"
msgstr "Cor %s"
-#: ../bin/cdraw.c:2355
+#: ../bin/cdraw.c:2979
msgid "Dimension Line Size"
msgstr "Dimensão da largura da linha"
-#: ../bin/cdraw.c:2367
+#: ../bin/cdraw.c:2991
msgid "Drag to create Table Edge"
msgstr "Arrastar para criar limite do tablado"
-#: ../bin/cdraw.c:2469
+#: ../bin/cdraw.c:3089
#, fuzzy
msgid "Seg Length"
msgstr "Comprimento a esquerda"
-#: ../bin/cdraw.c:2473
+#: ../bin/cdraw.c:3094
#, fuzzy
msgid "Rel Angle"
msgstr "Ângulo a esquerda"
-#: ../bin/cdraw.c:2563
+#: ../bin/cdraw.c:3189
msgid "Line"
msgstr "Linha"
-#: ../bin/cdraw.c:2563
+#: ../bin/cdraw.c:3189
msgid "Draw Line"
msgstr "Desenhar linha"
-#: ../bin/cdraw.c:2564
+#: ../bin/cdraw.c:3190
msgid "Draw Dimension Line"
msgstr "Desenhar dimensão da linha"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:363
-#: ../bin/cdraw.c:2565 ../../../../build/work/app/i18n/custmsg.h:1249
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:479
+#: ../bin/cdraw.c:3191 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1270
msgid "Benchwork"
msgstr "Bancada"
-#: ../bin/cdraw.c:2565
+#: ../bin/cdraw.c:3191
msgid "Draw Benchwork"
msgstr "Desenhar bancada"
-#: ../bin/cdraw.c:2566
+#: ../bin/cdraw.c:3192
msgid "Draw Table Edge"
msgstr "Desenhar borda do tablado"
-#: ../bin/cdraw.c:2568
+#: ../bin/cdraw.c:3195
msgid "Curve End"
msgstr "Curva extremidade"
-#: ../bin/cdraw.c:2568
+#: ../bin/cdraw.c:3195
msgid "Draw Curve from End"
msgstr "Desenhar curva a partir de uma extremidade"
-#: ../bin/cdraw.c:2569
+#: ../bin/cdraw.c:3196
msgid "Curve Tangent"
msgstr "Curva tangente"
-#: ../bin/cdraw.c:2569
+#: ../bin/cdraw.c:3196
msgid "Draw Curve from Tangent"
msgstr "Desenhar curva a partir de uma tangente"
-#: ../bin/cdraw.c:2570
+#: ../bin/cdraw.c:3197
msgid "Curve Center"
msgstr "Curva centro"
-#: ../bin/cdraw.c:2570
+#: ../bin/cdraw.c:3197
msgid "Draw Curve from Center"
msgstr "Desenhar curva a partir de um centro"
-#: ../bin/cdraw.c:2571
+#: ../bin/cdraw.c:3198
msgid "Curve Chord"
msgstr "Curva corda"
-#: ../bin/cdraw.c:2571
+#: ../bin/cdraw.c:3198
msgid "Draw Curve from Chord"
msgstr "Desenhar curva a partir de uma corda"
-#: ../bin/cdraw.c:2572
+#: ../bin/cdraw.c:3199
#, fuzzy
msgid "Draw Bezier"
msgstr "Desenhar linha"
-#: ../bin/cdraw.c:2575
-msgid "Circle Tangent"
-msgstr "Circunferência tangente"
-
-#: ../bin/cdraw.c:2575
-msgid "Draw Circle from Tangent"
-msgstr "Desenhar circunferência a partir de uma tangente"
-
-#: ../bin/cdraw.c:2576
+#: ../bin/cdraw.c:3203
msgid "Circle Center"
msgstr "Circunferência centro"
-#: ../bin/cdraw.c:2576
+#: ../bin/cdraw.c:3203
msgid "Draw Circle from Center"
msgstr "Desenhar circunferência a partir de um centro"
-#: ../bin/cdraw.c:2578
-msgid "Circle Filled Tangent"
-msgstr "Círculo tangente"
+#: ../bin/cdraw.c:3204
+msgid "Circle Tangent"
+msgstr "Circunferência tangente"
-#: ../bin/cdraw.c:2578
-msgid "Draw Filled Circle from Tangent"
-msgstr "Desenhar círculo a partir de uma tangente"
+#: ../bin/cdraw.c:3204
+msgid "Draw Circle from Tangent"
+msgstr "Desenhar circunferência a partir de uma tangente"
-#: ../bin/cdraw.c:2579
+#: ../bin/cdraw.c:3206
msgid "Circle Filled Center"
msgstr "Círculo centro"
-#: ../bin/cdraw.c:2579
+#: ../bin/cdraw.c:3206
msgid "Draw Filled Circle from Center"
msgstr "Desenhar círculo a partir de um centro"
-#: ../bin/cdraw.c:2581
+#: ../bin/cdraw.c:3207
+msgid "Circle Filled Tangent"
+msgstr "Círculo tangente"
+
+#: ../bin/cdraw.c:3207
+msgid "Draw Filled Circle from Tangent"
+msgstr "Desenhar círculo a partir de uma tangente"
+
+#: ../bin/cdraw.c:3210
msgid "Draw Box"
msgstr "Desenhar retângulo"
-#: ../bin/cdraw.c:2582
+#: ../bin/cdraw.c:3211
msgid "Draw Filled Box"
msgstr "Desenhar retângulo cheio"
-#: ../bin/cdraw.c:2583
+#: ../bin/cdraw.c:3212
msgid "Draw Polygon"
msgstr "Desenhar polígono"
-#: ../bin/cdraw.c:2584
+#: ../bin/cdraw.c:3213
#, fuzzy
msgid "Draw Filled Polygon"
msgstr "Desenhar polígono"
-#: ../bin/cdraw.c:2585
+#: ../bin/cdraw.c:3214
#, fuzzy
msgid "PolyLine"
msgstr "Linha poligonal"
-#: ../bin/cdraw.c:2585
+#: ../bin/cdraw.c:3214
#, fuzzy
msgid "Draw PolyLine"
msgstr "Desenhar linha poligonal"
-#: ../bin/cdraw.c:2602
+#: ../bin/cdraw.c:3231
msgid "Straight Objects"
msgstr "Objetos retos"
-#: ../bin/cdraw.c:2602
+#: ../bin/cdraw.c:3231
msgid "Draw Straight Objects"
msgstr "Desenhar objetos retos"
-#: ../bin/cdraw.c:2603
+#: ../bin/cdraw.c:3232
msgid "Curved Lines"
msgstr "Linhas curvas"
-#: ../bin/cdraw.c:2603
+#: ../bin/cdraw.c:3232
msgid "Draw Curved Lines"
msgstr "Desenhar linhas curvas"
-#: ../bin/cdraw.c:2604
+#: ../bin/cdraw.c:3233
msgid "Circle Lines"
msgstr "Circunferência"
-#: ../bin/cdraw.c:2604
+#: ../bin/cdraw.c:3233
msgid "Draw Circles"
msgstr "Desenhar circunferência"
-#: ../bin/cdraw.c:2605
+#: ../bin/cdraw.c:3234
msgid "Shapes"
msgstr "Formas"
-#: ../bin/cdraw.c:2605
+#: ../bin/cdraw.c:3234
msgid "Draw Shapes"
msgstr "Desenhas formas"
-#: ../bin/cdraw.c:2893
-msgid "Close Polygon - 'c'"
-msgstr ""
+#: ../bin/cdraw.c:3536
+#, fuzzy
+msgid "Close Polygon - 'g'"
+msgstr "Retângulo preenchido"
-#: ../bin/cdraw.c:2894
+#: ../bin/cdraw.c:3538
msgid "Make PolyLine - 'l'"
msgstr ""
-#: ../bin/cdraw.c:2895
+#: ../bin/cdraw.c:3540
msgid "Fill Polygon - 'f'"
msgstr ""
-#: ../bin/cdraw.c:2896
-msgid "Empty Polygon - 'e'"
+#: ../bin/cdraw.c:3542
+msgid "Empty Polygon - 'u'"
msgstr ""
-#: ../bin/cdraw.c:2898
+#: ../bin/cdraw.c:3545
msgid "Points Mode - 'p'"
msgstr ""
-#: ../bin/cdraw.c:2899
+#: ../bin/cdraw.c:3548
msgid "Delete Selected Point - 'Del'"
msgstr ""
-#: ../bin/cdraw.c:2900
+#: ../bin/cdraw.c:3549
msgid "Vertex Point - 'v'"
msgstr ""
-#: ../bin/cdraw.c:2901
+#: ../bin/cdraw.c:3551
msgid "Round Corner - 'r'"
msgstr ""
-#: ../bin/cdraw.c:2902
+#: ../bin/cdraw.c:3553
msgid "Smooth Corner - 's'"
msgstr ""
-#: ../bin/cdraw.c:2904 ../bin/cselect.c:3348
+#: ../bin/cdraw.c:3556 ../bin/cselect.c:3734
msgid "LineType..."
msgstr ""
-#: ../bin/cdraw.c:2905 ../bin/cselect.c:3349
+#: ../bin/cdraw.c:3557 ../bin/cselect.c:3735
#, fuzzy
msgid "Solid Line"
msgstr "Linha poligonal"
-#: ../bin/cdraw.c:2906 ../bin/cselect.c:3350
+#: ../bin/cdraw.c:3559 ../bin/cselect.c:3737
#, fuzzy
msgid "Dashed Line"
msgstr "Desenhar linha"
-#: ../bin/cdraw.c:2907 ../bin/cselect.c:3351
+#: ../bin/cdraw.c:3561 ../bin/cselect.c:3739
#, fuzzy
msgid "Dotted Line"
msgstr "Linha curva"
-#: ../bin/cdraw.c:2908
+#: ../bin/cdraw.c:3563
#, fuzzy
msgid "Dash-Dot Line"
msgstr "Desenhar linha"
-#: ../bin/cdraw.c:2909
+#: ../bin/cdraw.c:3565
msgid "Dash-Dot-Dot Line"
msgstr ""
-#: ../bin/cdraw.c:2910
+#: ../bin/cdraw.c:3567
#, fuzzy
msgid "Center-Dot Line"
msgstr "Criar linhas"
-#: ../bin/cdraw.c:2911
+#: ../bin/cdraw.c:3569
msgid "Phantom-Dot Line"
msgstr ""
-#: ../bin/cdraw.c:2913
+#: ../bin/cdraw.c:3572
msgid "Origin Mode - 'o'"
msgstr ""
-#: ../bin/cdraw.c:2914
+#: ../bin/cdraw.c:3574
msgid "Reset Origin - '0'"
msgstr ""
-#: ../bin/cdraw.c:2915
+#: ../bin/cdraw.c:3576
msgid "Origin to Selected - 'l'"
msgstr ""
-#: ../bin/cdraw.c:2916
-msgid "Origin to Centroid - 'c'"
+#: ../bin/cdraw.c:3578
+msgid "Origin to Middle - 'm'"
msgstr ""
-#: ../bin/celev.c:46 ../bin/cprofile.c:1535 ../bin/csplit.c:148
-#: ../bin/csplit.c:153 ../bin/dease.c:67 ../bin/doption.c:132
-#: ../bin/doption.c:134
+#: ../bin/celev.c:42 ../bin/cprint.c:117 ../bin/cprofile.c:1531
+#: ../bin/csplit.c:201 ../bin/csplit.c:210 ../bin/dease.c:68
+#: ../bin/doption.c:94 ../bin/doption.c:96
msgid "None"
msgstr "Nenhum"
-#: ../bin/celev.c:46
+#: ../bin/celev.c:42
msgid "Defined"
msgstr "Definido"
-#: ../bin/celev.c:46
+#: ../bin/celev.c:42
msgid "Hidden"
msgstr "Oculto"
-#: ../bin/celev.c:47
+#: ../bin/celev.c:43
msgid "Computed"
msgstr "Calculado"
-#: ../bin/celev.c:47
+#: ../bin/celev.c:43
msgid "Station"
msgstr "Estação"
-#: ../bin/celev.c:47 ../bin/cprofile.c:1533 ../bin/dcmpnd.c:75
+#: ../bin/celev.c:43 ../bin/cprofile.c:1529 ../bin/dcmpnd.c:71
msgid "Ignore"
msgstr "Ignorar"
-#: ../bin/celev.c:203
+#: ../bin/celev.c:233
msgid "Set Elevation"
msgstr "Ajustar inclinação"
-#: ../bin/celev.c:296 ../bin/celev.c:303 ../bin/celev.c:306
+#: ../bin/celev.c:325 ../bin/celev.c:334 ../bin/celev.c:338
#, c-format
msgid "Undefined"
msgstr "Indefinido"
-#: ../bin/celev.c:362 ../bin/celev.c:495
+#: ../bin/celev.c:384 ../bin/celev.c:541
msgid "Elevation"
msgstr "Elevação"
-#: ../bin/celev.c:362 ../bin/cmisc.c:459 ../bin/dcontmgm.c:299
-#: ../bin/dcustmgm.c:395 ../bin/dlayer.c:1124 ../bin/dpricels.c:154
-#: ../bin/filenoteui.c:249 ../bin/linknoteui.c:182
-#: ../bin/paramfilesearch_ui.c:396 ../bin/textnoteui.c:171
+#: ../bin/celev.c:385 ../bin/cmisc.c:467 ../bin/dcustmgm.c:407
+#: ../bin/dcontmgm.c:308 ../bin/dlayer.c:2071 ../bin/dpricels.c:167
+#: ../bin/filenoteui.c:253 ../bin/linknoteui.c:169
+#: ../bin/paramfilesearch_ui.c:477 ../bin/textnoteui.c:137
msgid "Done"
msgstr "Ok"
-#: ../bin/celev.c:374 ../bin/celev.c:426 ../bin/celev.c:428 ../bin/celev.c:447
-msgid "Click on end, +Shift to split, +Ctrl to move description"
+#: ../bin/celev.c:399
+msgid ""
+"Click on end, +Shift to split, +Ctrl to move description, +Alt to show "
+"elevation"
msgstr ""
-#: ../bin/celev.c:394
+#: ../bin/celev.c:420
msgid "Move to end or track crossing +Shift to split"
msgstr ""
-#: ../bin/celev.c:398
+#: ../bin/celev.c:424
#, fuzzy
msgid "Move to end or track crossing"
msgstr "Posicionar 1ª extremidade do trecho reto"
-#: ../bin/celev.c:407
+#: ../bin/celev.c:436
#, c-format
msgid "Crossing - First %0.3f, Second %0.3f, Clearance %0.3f - Click to Split"
msgstr ""
-#: ../bin/celev.c:409
+#: ../bin/celev.c:439
#, c-format
msgid "Crossing - First %0.3f, Second %0.3f, Clearance %0.3f"
msgstr ""
-#: ../bin/celev.c:420
+#: ../bin/celev.c:453
+#, c-format
+msgid "Click to split here - elevation %0.3f"
+msgstr ""
+
+#: ../bin/celev.c:458
#, fuzzy, c-format
-msgid "Track elevation %0.3f"
+msgid "Track End elevation %0.3f - snap End Pt"
msgstr "Elevações dos trilhos"
-#: ../bin/celev.c:423
-#, c-format
-msgid "Click to split here - elevation %0.3f"
+#: ../bin/celev.c:461
+#, fuzzy, c-format
+msgid "Track End elevation %0.3f"
+msgstr "Elevações dos trilhos"
+
+#: ../bin/celev.c:463 ../bin/celev.c:466
+msgid ""
+"Click on End Pt, +Shift to split, +Ctrl to move description, +Alt show "
+"Elevation"
msgstr ""
-#: ../bin/celev.c:451
-#, fuzzy
-msgid "Point selected!"
-msgstr "deselecionado"
+#: ../bin/celev.c:486
+msgid "Click on end, +Shift to split, +Ctrl to move description"
+msgstr ""
-#: ../bin/celev.c:454
+#: ../bin/celev.c:490
#, fuzzy
msgid "Split track"
msgstr "Secciona um trilho"
-#: ../bin/celev.c:459
+#: ../bin/celev.c:496
#, fuzzy
msgid "Track split!"
msgstr "Trilhos"
-#: ../bin/cgroup.c:592
+#: ../bin/celev.c:503
+#, fuzzy
+msgid "Point selected!"
+msgstr "deselecionado"
+
+#: ../bin/cgroup.c:664
msgid "Ungroup Object"
msgstr "Desagrupar objeto"
-#: ../bin/cgroup.c:604
+#: ../bin/cgroup.c:677
#, c-format
msgid "%d objects ungrouped"
msgstr "%d objetos desagrupados"
-#: ../bin/cgroup.c:606
+#: ../bin/cgroup.c:679
msgid "No objects ungrouped"
msgstr "Nenhum objeto desagrupado"
-#: ../bin/cgroup.c:617
+#: ../bin/cgroup.c:693
msgid "Replace with new group?"
msgstr "Substituir por novo grupo?"
-#: ../bin/cgroup.c:623 ../bin/compound.c:566 ../bin/cstruct.c:69
-#: ../bin/ctodesgn.c:194 ../bin/ctodesgn.c:2916 ../bin/cturnout.c:82
-#: ../bin/dcar.c:2195 ../bin/dcar.c:4367 ../bin/dcar.c:4372
-#: ../bin/dcmpnd.c:456 ../bin/dcustmgm.c:59
-#: ../../../../build/work/app/bin/bllnhlp.c:370
-#: ../../../../build/work/app/bin/bllnhlp.c:565
+#: ../bin/cgroup.c:694
+msgid "Turntable/TransferTable/DblSlipSwith?"
+msgstr ""
+
+#: ../bin/cgroup.c:700 ../bin/compound.c:744 ../bin/cstruct.c:65
+#: ../bin/ctodesgn.c:201 ../bin/ctodesgn.c:3209 ../bin/cturnout.c:84
+#: ../bin/dcar.c:2305 ../bin/dcar.c:4694 ../bin/dcar.c:4700
+#: ../bin/dcmpnd.c:483 ../bin/dcustmgm.c:45
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:417
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:656
msgid "Manufacturer"
msgstr "Fabricante"
-#: ../bin/cgroup.c:624 ../bin/cmisc.c:459 ../bin/cstruct.c:69
-#: ../bin/ctodesgn.c:2917 ../bin/ctodesgn.c:2918 ../bin/ctrain.c:187
-#: ../bin/cturnout.c:82 ../bin/dcar.c:2211 ../bin/dcar.c:4368
-#: ../bin/dcar.c:4373 ../bin/dcmpnd.c:457 ../bin/dcustmgm.c:60
-#: ../bin/denum.c:182 ../bin/denum.c:183 ../bin/denum.c:186
-#: ../../../../build/work/app/bin/bllnhlp.c:371
+#: ../bin/cgroup.c:701 ../bin/cmisc.c:467 ../bin/cstruct.c:65
+#: ../bin/ctodesgn.c:3210 ../bin/ctodesgn.c:3211 ../bin/ctrain.c:184
+#: ../bin/cturnout.c:84 ../bin/dcar.c:2321 ../bin/dcar.c:4695
+#: ../bin/dcar.c:4701 ../bin/dcmpnd.c:484 ../bin/dcustmgm.c:46
+#: ../bin/denum.c:188 ../bin/denum.c:189 ../bin/denum.c:194
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:418
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:650
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:651
msgid "Description"
msgstr "Descrição"
-#: ../bin/cgroup.c:625 ../bin/dcmpnd.c:458
+#: ../bin/cgroup.c:702 ../bin/dcmpnd.c:485
msgid "#"
msgstr "No."
-#: ../bin/cgroup.c:626 ../bin/compound.c:570
+#: ../bin/cgroup.c:703 ../bin/compound.c:748
msgid "# Segments"
msgstr "No. de segmentos"
-#: ../bin/cgroup.c:628
+#: ../bin/cgroup.c:705
#, fuzzy
msgid "Offset X,Y:"
msgstr "Distância"
-#: ../bin/cgroup.c:1235
+#: ../bin/cgroup.c:1320
msgid "No endpts"
msgstr "Nenhuma extremidade"
-#: ../bin/cgroup.c:1350
-msgid "No paths"
-msgstr "Nenhuma via"
-
-#: ../bin/cgroup.c:1619 ../bin/cgroup.c:1669
+#: ../bin/cgroup.c:1732 ../bin/cgroup.c:1798
msgid "Group Tracks"
msgstr "Agrupar trechos"
-#: ../bin/cgroup.c:1729
+#: ../bin/cgroup.c:1866
msgid "Group Objects"
msgstr "Agrupar objetos"
-#: ../bin/chndldto.c:70
+#: ../bin/chndldto.c:68
msgid "Place frog and drag angle"
msgstr "Posicionar jacaré e ajustar ângulo"
-#: ../bin/chndldto.c:87
+#: ../bin/chndldto.c:85
msgid "frog"
msgstr "Jacaré"
-#: ../bin/chndldto.c:93
+#: ../bin/chndldto.c:91
msgid "Drag to set angle"
msgstr "Arrastar para selecionar o ângulo"
@@ -1796,313 +1845,328 @@ msgstr "Ângulo do jacaré muito próximo de 0"
msgid "Select point position"
msgstr "Selecionar posição do ponto"
-#: ../bin/chndldto.c:149 ../bin/chndldto.c:174
+#: ../bin/chndldto.c:152 ../bin/chndldto.c:178
msgid "points"
msgstr "Pontos"
-#: ../bin/chndldto.c:271
+#: ../bin/chndldto.c:282
#, c-format
msgid "Length = %0.2f Angle = %0.2f Frog# = %0.2f"
msgstr "Comprimento = %0.2f Ângulo = %0.2f Jacaré No. = %0.2f"
-#: ../bin/chndldto.c:274
+#: ../bin/chndldto.c:286
msgid "Create Hand Laid Turnout"
msgstr "Criar AMV personalizado"
-#: ../bin/chndldto.c:358
+#: ../bin/chndldto.c:381
msgid "HandLaidTurnout"
msgstr "AMV personalizado"
-#: ../bin/cjoin.c:166
+#: ../bin/cjoin.c:170
#, c-format
msgid "Curved Track: Radius=%s Length=%s"
msgstr "Trecho curvo: Raio=%s Comprimento=%s"
-#: ../bin/cjoin.c:252
+#: ../bin/cjoin.c:261
#, c-format
msgid "Curved Track: Radius=%s Length=%s Angle=%0.3f"
msgstr "Trecho curvo: Raio=%s Comprimento=%s Ângulo=%0.3f"
-#: ../bin/cjoin.c:348
+#: ../bin/cjoin.c:363
#, c-format
msgid "Track (%d) is too short for transition-curve by %0.3f"
msgstr "Trecho (%d) muito curto para transição curva por %0.3f"
-#: ../bin/cjoin.c:366
+#: ../bin/cjoin.c:381
#, c-format
msgid "Connecting track is too short by %0.3f"
msgstr "Trecho de conexão muito curto por %0.3f"
-#: ../bin/cjoin.c:410
+#: ../bin/cjoin.c:431
msgid "Click on an unselected End-Point"
msgstr "Clicar em uma extremidade não selecionada"
-#: ../bin/cjoin.c:411
+#: ../bin/cjoin.c:432
msgid "Click on a selected End-Point"
msgstr "Clicar em uma extremidade selecionada"
-#: ../bin/cjoin.c:417
+#: ../bin/cjoin.c:438
msgid "unselected"
msgstr "deselecionado"
-#: ../bin/cjoin.c:417 ../bin/cprint.c:161
+#: ../bin/cjoin.c:438 ../bin/cprint.c:162
msgid "selected"
msgstr "selecionado"
-#: ../bin/cjoin.c:474
+#: ../bin/cjoin.c:499
msgid "Left click - Select first draw object end"
msgstr ""
-#: ../bin/cjoin.c:513 ../bin/cjoin.c:539
+#: ../bin/cjoin.c:539 ../bin/cjoin.c:576
msgid "Not a line - Try again"
msgstr ""
-#: ../bin/cjoin.c:535
+#: ../bin/cjoin.c:572
#, fuzzy
msgid "Left click - Select second object end"
msgstr "Clicar no objeto selecionado para alinhar"
-#: ../bin/cjoin.c:547
+#: ../bin/cjoin.c:584
msgid "Same draw object and same endpoint - Try again"
msgstr ""
-#: ../bin/cjoin.c:581
+#: ../bin/cjoin.c:632
#, fuzzy
msgid "Create PolyLine"
msgstr "Criar linhas"
-#: ../bin/cjoin.c:654 ../bin/cjoin.c:863
-#, fuzzy
-msgid "Desired Radius"
-msgstr "Raio da circunferência"
-
-#: ../bin/cjoin.c:804
+#: ../bin/cjoin.c:913
#, fuzzy
msgid "Left click - join with track"
msgstr ""
"Clicar com o botão esquerdo - junta um trecho, Clicar com o botão esquerdo + "
"Shift - movimenta para juntar"
-#: ../bin/cjoin.c:806
+#: ../bin/cjoin.c:916
msgid "Left click - join with track, Shift Left click - move to join"
msgstr ""
"Clicar com o botão esquerdo - junta um trecho, Clicar com o botão esquerdo + "
"Shift - movimenta para juntar"
-#: ../bin/cjoin.c:856
-#, fuzzy, c-format
-msgid "Select 2nd track - desired radius %0.3f"
-msgstr "Selecionar trecho a descrever"
-
-#: ../bin/cjoin.c:858 ../bin/cjoin.c:1256 ../bin/cjoin.c:1263
+#: ../bin/cjoin.c:1011 ../bin/cjoin.c:1469 ../bin/cjoin.c:1476
msgid "Select 2nd track"
msgstr "Selecionar o segundo trecho"
-#: ../bin/cjoin.c:1065
+#: ../bin/cjoin.c:1266
msgid "Beyond end of 2nd track"
msgstr "Além da extremidade do 2º trecho"
-#: ../bin/cjoin.c:1100
+#: ../bin/cjoin.c:1302
msgid "Beyond end of 1st track"
msgstr "Além da extremidade do 1º trecho"
-#: ../bin/cjoin.c:1122
+#: ../bin/cjoin.c:1325
msgid "First Track Type not supported for non-Cornu Join"
msgstr ""
-#: ../bin/cjoin.c:1129
+#: ../bin/cjoin.c:1333
msgid "First "
msgstr "Primeiro "
-#: ../bin/cjoin.c:1154
+#: ../bin/cjoin.c:1359
msgid "Second Track Type not supported for non-Cornu Join"
msgstr ""
-#: ../bin/cjoin.c:1161
+#: ../bin/cjoin.c:1366
msgid "Second "
msgstr "Segundo "
-#: ../bin/cjoin.c:1175 ../bin/track.c:2270 ../bin/track.c:2306
-#: ../bin/track.c:2372
+#: ../bin/cjoin.c:1380 ../bin/track.c:2395 ../bin/track.c:2434
+#: ../bin/track.c:2509
msgid "Connecting "
msgstr "Conectando "
-#: ../bin/cjoin.c:1266
+#: ../bin/cjoin.c:1479
msgid "Join Tracks"
msgstr "Juntar trechos"
-#: ../bin/cjoin.c:1348
+#: ../bin/cjoin.c:1575
msgid "Join"
msgstr "Juntar"
-#: ../bin/cjoin.c:1349
+#: ../bin/cjoin.c:1576
#, fuzzy
msgid "Join Track"
msgstr "Juntar trechos"
-#: ../bin/cjoin.c:1350
+#: ../bin/cjoin.c:1579
#, fuzzy
msgid "Join Lines"
msgstr "Linhas"
-#: ../bin/cmisc.c:59
+#: ../bin/cmisc.c:55
msgid "Middle"
msgstr "Meio"
-#: ../bin/cmisc.c:59 ../bin/macro.c:98
+#: ../bin/cmisc.c:55 ../bin/macro.c:70
msgid "End"
msgstr "Fim"
-#: ../bin/cmisc.c:242 ../bin/cmodify.c:353 ../bin/compound.c:664
-#: ../bin/ctrain.c:218
-msgid "Change Track"
-msgstr "Substituir trecho"
+#: ../bin/cmisc.c:140 ../bin/tcurve.c:409 ../bin/tease.c:535
+#, fuzzy
+msgid "Lock"
+msgstr "Locomotiva?"
-#: ../bin/cmisc.c:572
-msgid "Select track to describe"
+#: ../bin/cmisc.c:593
+#, fuzzy
+msgid "Select track to describe +Shift for Frozen"
msgstr "Selecionar trecho a descrever"
-#: ../bin/cmisc.c:650 ../bin/doption.c:235
+#: ../bin/cmisc.c:691 ../bin/doption.c:245
msgid "Properties"
msgstr "Propriedades"
-#: ../bin/cmisc2.c:52
-msgid "Bridge"
-msgstr "Ponte"
-
-#: ../bin/cmodify.c:203 ../bin/cmodify.c:471
-msgid "Modify Track"
-msgstr "Modificar trecho"
-
-#: ../bin/cmodify.c:266
+#: ../bin/cmodify.c:276
msgid ""
"Select a track to modify, Left-Click change length, Right-Click to add "
"flextrack"
msgstr ""
-#: ../bin/cmodify.c:512
+#: ../bin/cmodify.c:520
+msgid "Modify Track"
+msgstr "Modificar trecho"
+
+#: ../bin/cmodify.c:564
#, fuzzy
msgid "Drag to add flex track"
msgstr "Arrastar para criar ramo"
-#: ../bin/cmodify.c:517
+#: ../bin/cmodify.c:569
#, fuzzy
msgid "No track to extend"
msgstr "Nenhum trecho liberado"
-#: ../bin/cmodify.c:522
+#: ../bin/cmodify.c:574
#, fuzzy
msgid "No track selected"
msgstr "Nenhum trecho liberado"
-#: ../bin/cmodify.c:655
+#: ../bin/cmodify.c:724
#, c-format
msgid "Curve Track: Radius=%s Length=%s Angle=%0.3f"
msgstr "Trecho curvo: Raio=%s Comprimento=%s Ângulo=%0.3f"
-#: ../bin/cmodify.c:670
+#: ../bin/cmodify.c:740
msgid "Extend Track"
msgstr "Estender um trecho"
-#: ../bin/cmodify.c:794
+#: ../bin/cmodify.c:882
msgid "Modify"
msgstr "Modificar"
-#: ../bin/cmodify.c:801 ../bin/cselect.c:3305 ../bin/cselect.c:3321
-#: ../bin/misc.c:2197 ../bin/misc.c:2199
+#: ../bin/cmodify.c:895 ../bin/cselect.c:3664 ../bin/cselect.c:3686
+#: ../bin/menu.c:937 ../bin/menu.c:939
msgid "Zoom In"
msgstr "Aproximar"
-#: ../bin/cmodify.c:802 ../bin/cselect.c:3309 ../bin/cselect.c:3322
-#: ../bin/misc.c:2201 ../bin/misc.c:2203
+#: ../bin/cmodify.c:896 ../bin/cselect.c:3669 ../bin/cselect.c:3687
+#: ../bin/menu.c:941 ../bin/menu.c:943
msgid "Zoom Out"
msgstr "Afastar"
-#: ../bin/cmodify.c:803
+#: ../bin/cmodify.c:897
msgid "Pan center - 'c'"
msgstr ""
-#: ../bin/cnote.c:69 ../bin/textnoteui.c:48 ../bin/trknote.c:60
+#: ../bin/cnote.c:67 ../bin/textnoteui.c:47 ../bin/trknote.c:52
msgid "Note"
msgstr "Nota"
-#: ../bin/cnote.c:75
+#: ../bin/cnote.c:73
msgid "Replace this text with your layout notes"
msgstr "Substitua este texto por uma nota do traçado"
-#: ../bin/compound.c:544 ../bin/compound.c:549 ../bin/compound.c:554
-#: ../bin/compound.c:559 ../bin/tbezier.c:248 ../bin/tbezier.c:255
-#: ../bin/tcornu.c:297 ../bin/tcornu.c:302
+#: ../bin/command.c:388 ../bin/command.c:395
+#, fuzzy
+msgid ""
+"Cancelling the current command will undo the changes\n"
+"you are currently making. Do you want to do the update instead?"
+msgstr ""
+"Anulação do último comando desfazerá as alterações\n"
+"que você está fazendo. Continuar?"
+
+#: ../bin/command.c:390 ../bin/command.c:458 ../bin/cprint.c:1445
+#: ../bin/dbitmap.c:428 ../bin/filenoteui.c:157 ../bin/param.c:3013
+#: ../bin/svgoutput.c:460
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:675
+msgid "Cancel"
+msgstr "Anular"
+
+#: ../bin/command.c:456
+msgid ""
+"Cancelling the current command will undo the changes\n"
+"you are currently making. Do you want to update?"
+msgstr ""
+"Anulação do último comando desfazerá as alterações\n"
+"que você está fazendo. Continuar?"
+
+#: ../bin/compound.c:722 ../bin/compound.c:727 ../bin/compound.c:732
+#: ../bin/compound.c:737 ../bin/tbezier.c:286 ../bin/tbezier.c:293
+#: ../bin/tcornu.c:322 ../bin/tcornu.c:327
#, fuzzy
msgid "Center X,Y"
msgstr "Centro: X"
-#: ../bin/compound.c:546 ../bin/tbezier.c:249 ../bin/tcornu.c:298
+#: ../bin/compound.c:724 ../bin/tbezier.c:287 ../bin/tcornu.c:323
#, fuzzy
msgid "Z1"
msgstr "Z"
-#: ../bin/compound.c:551 ../bin/tbezier.c:256 ../bin/tcornu.c:303
+#: ../bin/compound.c:729 ../bin/tbezier.c:294 ../bin/tcornu.c:328
#, fuzzy
msgid "Z2"
msgstr "Z"
-#: ../bin/compound.c:552
+#: ../bin/compound.c:730
#, fuzzy
msgid "End Pt 3: X,Y"
msgstr "Extremidade 1: X"
-#: ../bin/compound.c:556
+#: ../bin/compound.c:734
#, fuzzy
msgid "Z3"
msgstr "Z"
-#: ../bin/compound.c:557
+#: ../bin/compound.c:735
#, fuzzy
msgid "End Pt 4: X,Y"
msgstr "Extremidade 1: X"
-#: ../bin/compound.c:561
+#: ../bin/compound.c:739
#, fuzzy
msgid "Z4"
msgstr "Z"
-#: ../bin/compound.c:568 ../bin/cstruct.c:69 ../bin/cturnout.c:82
-#: ../bin/dcar.c:4367 ../bin/dcar.c:4372 ../bin/dcustmgm.c:60
-#: ../bin/doption.c:137 ../bin/doption.c:138
+#: ../bin/compound.c:741 ../bin/tease.c:528
+#, fuzzy
+msgid "Origin: X,Y"
+msgstr "Origem: X"
+
+#: ../bin/compound.c:746 ../bin/cstruct.c:65 ../bin/cturnout.c:84
+#: ../bin/dcar.c:4694 ../bin/dcar.c:4700 ../bin/dcustmgm.c:46
+#: ../bin/doption.c:99 ../bin/doption.c:100
msgid "Part No"
msgstr "No. do item"
-#: ../bin/compound.c:569
+#: ../bin/compound.c:747
#, fuzzy
msgid "LineType"
msgstr "Tipo"
-#: ../bin/compound.c:830 ../bin/cstruct.c:935 ../bin/cstruct.c:1126
+#: ../bin/compound.c:1025 ../bin/cstruct.c:1030 ../bin/cstruct.c:1246
msgid "Structure"
msgstr "Estrutura"
-#: ../bin/compound.c:832 ../bin/cswitchmotor.c:228 ../bin/cturnout.c:1063
-#: ../bin/cturnout.c:2888
+#: ../bin/compound.c:1027 ../bin/cswitchmotor.c:232 ../bin/cturnout.c:988
msgid "Turnout"
msgstr "AMV"
-#: ../bin/compound.c:832
+#: ../bin/compound.c:1027
msgid "Sectional Track"
msgstr "Trecho seccionado"
-#: ../bin/compound.c:836
+#: ../bin/compound.c:1031
#, fuzzy, c-format
msgid "%s (%d) Layer= %d %s"
msgstr "(%d): Camada=%d %s"
-#: ../bin/cparalle.c:52 ../bin/cparalle.c:100 ../bin/cparalle.c:140
-#: ../bin/ctodesgn.c:538 ../bin/ctodesgn.c:558 ../bin/ctodesgn.c:578
-#: ../bin/tcurve.c:371
+#: ../bin/cparalle.c:49 ../bin/cparalle.c:98 ../bin/cparalle.c:140
+#: ../bin/ctodesgn.c:600 ../bin/ctodesgn.c:626 ../bin/ctodesgn.c:651
+#: ../bin/tcurve.c:403
msgid "Separation"
msgstr "Separação"
-#: ../bin/cparalle.c:55 ../bin/cparalle.c:101
+#: ../bin/cparalle.c:52 ../bin/cparalle.c:99
#, fuzzy
msgid "Radius Factor"
msgstr "Raio 2"
@@ -2112,25 +2176,26 @@ msgstr "Raio 2"
msgid "Radius factor"
msgstr "Raio 2"
-#: ../bin/cparalle.c:154
+#: ../bin/cparalle.c:155
msgid " Track/Line doesn't support parallel"
msgstr ""
-#: ../bin/cparalle.c:226
+#: ../bin/cparalle.c:230
msgid "Create Parallel Track"
msgstr "Criar trecho paralelo"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:354
-#: ../bin/cparalle.c:296 ../../../../build/work/app/i18n/custmsg.h:1231
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:470
+#: ../bin/cparalle.c:299
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1252
msgid "Parallel"
msgstr "Paralelo"
-#: ../bin/cparalle.c:297
+#: ../bin/cparalle.c:300
#, fuzzy
msgid "Parallel Track"
msgstr "Criar trecho paralelo"
-#: ../bin/cparalle.c:298
+#: ../bin/cparalle.c:303
#, fuzzy
msgid "Parallel Line"
msgstr "Paralelo"
@@ -2143,14 +2208,14 @@ msgstr "Retrato"
msgid "Landscape"
msgstr "Paisagem"
-#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:94 ../bin/cswitchmotor.c:113
-#: ../bin/cswitchmotor.c:225 ../bin/dbench.c:78 ../bin/dease.c:67
-#: ../bin/doption.c:131 ../bin/doption.c:133 ../bin/macro.c:1406
+#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:90 ../bin/cswitchmotor.c:109
+#: ../bin/cswitchmotor.c:229 ../bin/dbench.c:75 ../bin/dease.c:68
+#: ../bin/doption.c:93 ../bin/doption.c:95 ../bin/macro.c:1416
msgid "Normal"
msgstr "Normal"
-#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:95 ../bin/cswitchmotor.c:114
-#: ../bin/cswitchmotor.c:226 ../bin/ctrain.c:941 ../bin/ctrain.c:1248
+#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:91 ../bin/cswitchmotor.c:110
+#: ../bin/cswitchmotor.c:230 ../bin/ctrain.c:1011 ../bin/ctrain.c:1324
msgid "Reverse"
msgstr "Inverso"
@@ -2171,14 +2236,18 @@ msgstr "Número do pilar"
msgid "Ignore Page Margins"
msgstr "Ignorar margens de página"
-#: ../bin/cprint.c:116 ../bin/csnap.c:705 ../bin/doption.c:530
+#: ../bin/cprint.c:116 ../bin/csnap.c:733 ../bin/doption.c:559
msgid "Snap Grid"
msgstr "Grade"
#: ../bin/cprint.c:117
#, fuzzy
-msgid "Rulers"
-msgstr "Medir"
+msgid "Layout Edge"
+msgstr "Layout"
+
+#: ../bin/cprint.c:117
+msgid "Every Page"
+msgstr ""
#: ../bin/cprint.c:118
#, fuzzy
@@ -2190,611 +2259,631 @@ msgstr "Imprimir leito dos trilhos"
msgid "Centerline below Scale 1:1"
msgstr "Imprimir linha central"
-#: ../bin/cprint.c:127
+#: ../bin/cprint.c:128
msgid "Print Scale"
msgstr "Imprimir escala"
-#: ../bin/cprint.c:128
+#: ../bin/cprint.c:129
msgid "Page Width"
msgstr "Largura de página"
-#: ../bin/cprint.c:129
+#: ../bin/cprint.c:130
msgid "Max"
msgstr "Máximo"
-#: ../bin/cprint.c:131
+#: ../bin/cprint.c:132
msgid "Snap Shot"
msgstr "Capturar"
-#: ../bin/cprint.c:132
+#: ../bin/cprint.c:133
msgid "Page Format"
msgstr "Formato da página"
-#: ../bin/cprint.c:133
+#: ../bin/cprint.c:134
msgid "Print Order"
msgstr "Ordem de impressão"
-#: ../bin/cprint.c:134
+#: ../bin/cprint.c:135
#, fuzzy
msgid "Print "
msgstr "Imprimir"
-#: ../bin/cprint.c:149
+#: ../bin/cprint.c:144
+#, fuzzy
+msgid "Rulers:"
+msgstr "Medir"
+
+#: ../bin/cprint.c:150
#, fuzzy
msgid " Width"
msgstr "Largura"
-#: ../bin/cprint.c:151
+#: ../bin/cprint.c:152
#, fuzzy
msgid "Margins"
msgstr "Principal"
-#: ../bin/cprint.c:152 ../bin/cturntbl.c:250
+#: ../bin/cprint.c:153 ../bin/cturntbl.c:274
msgid "Origin: X"
msgstr "Origem: X"
-#: ../bin/cprint.c:153 ../bin/csnap.c:535
+#: ../bin/cprint.c:154 ../bin/csnap.c:549
msgid "Y"
msgstr "Y"
-#: ../bin/cprint.c:154 ../bin/cprint.c:620 ../bin/cprofile.c:715
-#: ../bin/dcar.c:2215
+#: ../bin/cprint.c:155 ../bin/cprint.c:631 ../bin/cprofile.c:706
+#: ../bin/dcar.c:2325
msgid "Reset"
msgstr "Resetar"
-#: ../bin/cprint.c:156
+#: ../bin/cprint.c:157
msgid "Setup"
msgstr "Setup"
-#: ../bin/cprint.c:157 ../bin/cselect.c:3313 ../bin/misc.c:2228
+#: ../bin/cprint.c:158 ../bin/cselect.c:3675 ../bin/menu.c:974
#, fuzzy
msgid "Select All"
msgstr "Selecionar &tudo"
-#: ../bin/cprint.c:158 ../bin/cprofile.c:717 ../bin/layout.c:472
-#: ../bin/misc.c:726
+#: ../bin/cprint.c:159 ../bin/cprofile.c:708 ../bin/layout.c:671
+#: ../bin/misc.c:725
msgid "Clear"
msgstr "Limpar"
-#: ../bin/cprint.c:160
+#: ../bin/cprint.c:161
msgid "0 pages"
msgstr "0 página"
-#: ../bin/cprint.c:187
+#: ../bin/cprint.c:190
#, fuzzy, c-format
msgid "%d page"
msgstr "%d páginas"
-#: ../bin/cprint.c:187
+#: ../bin/cprint.c:190
#, c-format
msgid "%d pages"
msgstr "%d páginas"
-#: ../bin/cprint.c:408
+#: ../bin/cprint.c:419
#, fuzzy, c-format
msgid "PrintScale 1:%ld Room %s x %s Model Scale %s File %s"
msgstr ""
"Escala de impressão %ld:1 Comôdo %s x %s Escala do modelo %s Arquivo %s"
-#: ../bin/cprint.c:716 ../bin/dbitmap.c:208 ../bin/filenoteui.c:158
-#: ../bin/misc.c:1235 ../bin/misc.c:1313 ../bin/param.c:2618
-#: ../wlib/gtklib/browserhelp.c:88
-#: ../../../../build/work/app/bin/bllnhlp.c:584
-msgid "Cancel"
-msgstr "Anular"
-
-#: ../bin/cprint.c:723
+#: ../bin/cprint.c:746
#, fuzzy
msgid "Print Margins"
msgstr "Página de teste de margem"
-#: ../bin/cprint.c:1367 ../bin/cprofile.c:719 ../bin/ctodesgn.c:2864
-#: ../bin/denum.c:55
+#: ../bin/cprint.c:1440 ../bin/cprofile.c:710 ../bin/ctodesgn.c:3147
+#: ../bin/denum.c:51
msgid "Print"
msgstr "Imprimir"
-#: ../bin/cprint.c:1388
+#: ../bin/cprint.c:1472
msgid "Select pages to print, or drag to move print grid"
msgstr "Selecionar páginas a imprimir, ou arrastar para imprimir grade"
-#: ../bin/cprint.c:1485
+#: ../bin/cprint.c:1574
msgid "Print..."
msgstr "Imprimir..."
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:350
-#: ../bin/cprofile.c:614 ../bin/cprofile.c:1448 ../bin/cprofile.c:1527
-#: ../../../../build/work/app/bin/bllnhlp.c:122
-#: ../../../../build/work/app/i18n/custmsg.h:1223
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:466
+#: ../bin/cprofile.c:608 ../bin/cprofile.c:1442 ../bin/cprofile.c:1522
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1244
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:127
msgid "Profile"
msgstr "Perfil"
-#: ../bin/cprofile.c:632
+#: ../bin/cprofile.c:626
#, c-format
msgid "%s Profile: %s"
msgstr "%s perfil: %s"
-#: ../bin/cprofile.c:713 ../bin/misc.c:1894
+#: ../bin/cprofile.c:704 ../bin/menu.c:225
msgid "Change"
msgstr "Alterar"
-#: ../bin/cprofile.c:757 ../bin/cprofile.c:767
+#: ../bin/cprofile.c:751 ../bin/cprofile.c:761
#, c-format
msgid "Elev = %0.1f"
msgstr "Elev = %0.1f"
-#: ../bin/cprofile.c:769
+#: ../bin/cprofile.c:763
#, c-format
msgid "Elev=%0.2f %0.1f%%"
msgstr "Elev=%0.2f %0.1f%%"
-#: ../bin/cprofile.c:774
+#: ../bin/cprofile.c:768
#, c-format
msgid "%0.1f%% Elev = %0.2f"
msgstr "%0.1f%% Elev = %0.2f"
-#: ../bin/cprofile.c:779
+#: ../bin/cprofile.c:773
#, c-format
msgid "%0.1f%% Elev = %0.2f %0.1f%%"
msgstr "%0.1f%% Elev = %0.2f %0.1f%%"
-#: ../bin/cprofile.c:794 ../bin/cprofile.c:864 ../bin/cprofile.c:1400
+#: ../bin/cprofile.c:788 ../bin/cprofile.c:858 ../bin/cprofile.c:1394
msgid "Profile Command"
msgstr "Comando perfil"
-#: ../bin/cprofile.c:803 ../bin/cprofile.c:1454
+#: ../bin/cprofile.c:797 ../bin/cprofile.c:1448
msgid "Drag to change Elevation"
msgstr "Arrastar para alterar elevação"
-#: ../bin/cprofile.c:905
+#: ../bin/cprofile.c:899
msgid "Select a Defined Elevation to start Profile"
msgstr "Selecionar uma elevação definida para iniciar perfil"
-#: ../bin/cprofile.c:907
+#: ../bin/cprofile.c:901
msgid "Select a Defined Elevation to extend Profile"
msgstr "Selecionar uma elevação definida para estender perfil"
-#: ../bin/cprofile.c:1462
+#: ../bin/cprofile.c:1456
msgid "Select a Defined Elevation to start profile"
msgstr "Selecionar uma elevação definida para iniciar perfil"
-#: ../bin/cprofile.c:1531
+#: ../bin/cprofile.c:1527
msgid "Define"
msgstr "Definir"
-#: ../bin/cpull.c:439 ../bin/cpull.c:595
+#: ../bin/cpull.c:454 ../bin/cpull.c:616
#, c-format
msgid "%d tracks moved"
msgstr "%d segmentos movidos"
-#: ../bin/cpull.c:485
+#: ../bin/cpull.c:503
msgid "Pull Tracks"
msgstr "Empurar trilhos"
-#: ../bin/cpull.c:559
+#: ../bin/cpull.c:579
msgid "Tighten Tracks"
msgstr "Trilhos forçados"
-#: ../bin/cpull.c:645
+#: ../bin/cpull.c:670
msgid "Connect Multiple Tracks - Select multiple tracks to join first"
msgstr ""
-#: ../bin/cpull.c:648
+#: ../bin/cpull.c:673
#, fuzzy
msgid "Try to Connect all Selected Tracks?"
msgstr "Eleva ou abaixa todos os trechos selecionados"
-#: ../bin/cpull.c:654
+#: ../bin/cpull.c:680
#, fuzzy
msgid "ReConnect"
msgstr "Conectando "
-#: ../bin/cpull.c:690
+#: ../bin/cpull.c:720
#, c-format
msgid ""
"Round 1 %d and Round 2 %d tracks connected, %d close pairs of end Points "
"were not connected"
msgstr ""
-#: ../bin/cpull.c:715
+#: ../bin/cpull.c:747
#, fuzzy
msgid "Select first endpoint or turntable to connect, +Shift to tighten"
msgstr "Selecionar primeira extremidade a conectar"
-#: ../bin/cpull.c:717
+#: ../bin/cpull.c:750
msgid ""
"Select first endpoint to connect, or Right-Click for connecting selected "
"tracks (not turntable)"
msgstr ""
-#: ../bin/cpull.c:776
+#: ../bin/cpull.c:814
#, fuzzy
msgid "Select second endpoint or turntable to connect"
msgstr "Selecionar segunda extremidade a conectar"
-#: ../bin/cpull.c:783
+#: ../bin/cpull.c:821
msgid "Same Track! - please select another"
msgstr ""
-#: ../bin/cpull.c:870
+#: ../bin/cpull.c:918
#, fuzzy
msgid "Connect Two Tracks"
msgstr "Conecta dois trilhos"
-#: ../bin/cpull.c:872
+#: ../bin/cpull.c:924
msgid "Connect All Selected - 'S'"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:361
-#: ../bin/cruler.c:143 ../../../../build/work/app/i18n/custmsg.h:1245
+#: ../bin/cruler.c:390
+#, fuzzy
+msgid "Measurement"
+msgstr "Curva de transição"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:477
+#: ../bin/cruler.c:391 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1266
msgid "Ruler"
msgstr "Medir"
-#: ../bin/cselect.c:616
+#: ../bin/cruler.c:394
+#, fuzzy
+msgid "Protractor"
+msgstr "Protótipo"
+
+#: ../bin/cselect.c:688
msgid "Change Track Width"
msgstr "Alterar largura do trilho"
-#: ../bin/cselect.c:640
+#: ../bin/cselect.c:714
#, fuzzy
msgid "Change Line Type"
msgstr "Muda camadas"
-#: ../bin/cselect.c:669
+#: ../bin/cselect.c:739
+msgid "Delete only works in Select Mode"
+msgstr ""
+
+#: ../bin/cselect.c:755
msgid "Delete Tracks"
msgstr "Apagar trilhos"
-#: ../bin/cselect.c:745
+#: ../bin/cselect.c:862
msgid "Hide Tracks (Tunnel)"
msgstr "Ocultar trilhos (túnel)"
-#: ../bin/cselect.c:763
+#: ../bin/cselect.c:882
#, fuzzy
msgid "Bridge Tracks "
msgstr "Trilhos forçados"
-#: ../bin/cselect.c:780
+#: ../bin/cselect.c:900
+#, fuzzy
+msgid "Roadbed Tracks "
+msgstr "Rotacionar trecho"
+
+#: ../bin/cselect.c:918
#, fuzzy
msgid "Ties Tracks "
msgstr "Trilhos finos"
-#: ../bin/cselect.c:817 ../bin/misc.c:2348
+#: ../bin/cselect.c:956 ../bin/menu.c:1118
msgid "Move To Current Layer"
msgstr "Mover para camada em uso"
-#: ../bin/cselect.c:857 ../bin/misc.c:2498
+#: ../bin/cselect.c:1010 ../bin/menu.c:1303
msgid "Clear Elevations"
msgstr "Eliminar elevações"
-#: ../bin/cselect.c:901
+#: ../bin/cselect.c:1056
msgid "Add Elevations"
msgstr "Adicionar elevações"
-#: ../bin/cselect.c:916
+#: ../bin/cselect.c:1072
msgid "Refresh Compound"
msgstr "Atualizar composição"
-#: ../bin/cselect.c:948 ../bin/dcar.c:4367 ../bin/dcar.c:4372
-#: ../bin/dcustmgm.c:60 ../bin/layout.c:463
-msgid "Scale"
-msgstr "Escala"
-
-#: ../bin/cselect.c:948 ../bin/cselect.c:973
-msgid "Ratio"
-msgstr "Razão"
-
-#: ../bin/cselect.c:957
-msgid "Do not resize track"
-msgstr "Não redimensione o traçado"
-
-#: ../bin/cselect.c:961
-msgid "Rescale by:"
-msgstr "Reescalar para:"
-
-#: ../bin/cselect.c:963
-msgid "From:"
-msgstr "De:"
-
-#: ../bin/cselect.c:967
-msgid "To: "
-msgstr "A: "
-
-#: ../bin/cselect.c:1034
-msgid "Rescale Tracks"
-msgstr "Reescalar traçado"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:357
-#: ../bin/cselect.c:1164 ../../../../build/work/app/i18n/custmsg.h:1237
-msgid "Rescale"
-msgstr "Reescalar"
-
-#: ../bin/cselect.c:1465
+#: ../bin/cselect.c:1471
msgid "Cornu too tight - it was deleted"
msgstr ""
-#: ../bin/cselect.c:1520
+#: ../bin/cselect.c:1526
msgid "Move To Join"
msgstr "Arrastar para juntar"
-#: ../bin/cselect.c:1714
+#: ../bin/cselect.c:1735
msgid "Drag to move selected tracks - Shift+Ctrl+Arrow micro-steps the move"
msgstr ""
-#: ../bin/cselect.c:1735 ../bin/cselect.c:1848 ../bin/cselect.c:2205
+#: ../bin/cselect.c:1756 ../bin/cselect.c:1890 ../bin/cselect.c:2295
msgid "Move Tracks"
msgstr "Mover trecho"
-#: ../bin/cselect.c:1893
+#: ../bin/cselect.c:1939
#, fuzzy
msgid "Align: Click on a selected object to be aligned"
msgstr "Clicar no objeto selecionado para alinhar"
-#: ../bin/cselect.c:1931
+#: ../bin/cselect.c:1978
#, fuzzy
msgid "Drag to rotate selected tracks, Shift+RightClick for QuickRotate Menu"
msgstr "Arrastar para rotacionar trechos selecionados"
-#: ../bin/cselect.c:1947 ../bin/cselect.c:2218
+#: ../bin/cselect.c:1994 ../bin/cselect.c:2370
msgid "Rotate Tracks"
msgstr "Rotacionar trecho"
-#: ../bin/cselect.c:1960
+#: ../bin/cselect.c:2009
msgid "Center of Rotation snapped to Turntable center"
msgstr ""
-#: ../bin/cselect.c:2002 ../bin/cselect.c:2033
+#: ../bin/cselect.c:2055 ../bin/cselect.c:2090
#, c-format
msgid "Angle %0.3f"
msgstr "Ângulo %0.3f"
-#: ../bin/cselect.c:2089
+#: ../bin/cselect.c:2154
#, fuzzy, c-format
msgid "Angle %0.3f #%ld"
msgstr " Ângulo %0.3f No.%ld"
-#: ../bin/cselect.c:2091
+#: ../bin/cselect.c:2156
#, fuzzy, c-format
msgid "Angle %0.3f %s"
msgstr "Ângulo %0.3f"
-#: ../bin/cselect.c:2096
+#: ../bin/cselect.c:2162
msgid "Origin Set. Drag away to set start angle"
msgstr ""
-#: ../bin/cselect.c:2110
+#: ../bin/cselect.c:2177
#, fuzzy
msgid "Align: Click on the 2nd unselected object"
msgstr "Clicar no 2º objeto não selecionado"
-#: ../bin/cselect.c:2230
-msgid "Toggle Label"
+#: ../bin/cselect.c:2307
+msgid "In module layer:"
+msgstr ""
+
+#: ../bin/cselect.c:2315
+#, fuzzy
+msgid "Frozen Layer:"
+msgstr "Congelado"
+
+#: ../bin/cselect.c:2319
+#, fuzzy
+msgid "Not found"
+msgstr "Ponto de contagem"
+
+#: ../bin/cselect.c:2356
+msgid "Multiple Selected"
+msgstr ""
+
+#: ../bin/cselect.c:2383
+#, fuzzy
+msgid "Toggle Detail"
msgstr "Ocultar ou apresentar etiqueta"
-#: ../bin/cselect.c:2349 ../bin/cselect.c:2388
-msgid "Select and drag a description"
-msgstr "Selecionar e arrastar uma descrição"
+#: ../bin/cselect.c:2399
+msgid "Toggle Label"
+msgstr "Ocultar ou apresentar etiqueta"
-#: ../bin/cselect.c:2374
+#: ../bin/cselect.c:2572
#, fuzzy
msgid "Elevation description"
msgstr "Descrição a esquerda"
-#: ../bin/cselect.c:2377
-msgid "Hidden description - 's' to Show"
-msgstr ""
+#: ../bin/cselect.c:2579
+#, fuzzy
+msgid "Hidden description - 's' to Show, 'd' Details"
+msgstr "Apresentar descrição"
-#: ../bin/cselect.c:2381
+#: ../bin/cselect.c:2582
#, fuzzy
msgid "Shown description - 'h' to Hide"
msgstr "Apresentar descrição"
-#: ../bin/cselect.c:2402
+#: ../bin/cselect.c:2590
+msgid "Select and drag a description"
+msgstr "Selecionar e arrastar uma descrição"
+
+#: ../bin/cselect.c:2632
msgid "Hidden Label - Drag to reveal"
msgstr ""
-#: ../bin/cselect.c:2404
+#: ../bin/cselect.c:2634
#, fuzzy
msgid "Drag label"
msgstr "Arrastar ao destino"
-#: ../bin/cselect.c:2406
+#: ../bin/cselect.c:2644
msgid "Move Label"
msgstr "Mover etiqueta"
-#: ../bin/cselect.c:2443
+#: ../bin/cselect.c:2683
msgid "To Hide, use Context Menu"
msgstr ""
-#: ../bin/cselect.c:2459 ../bin/cselect.c:3339
+#: ../bin/cselect.c:2717 ../bin/cselect.c:3715
#, fuzzy
msgid "Show/Hide Description"
msgstr "Apresentar descrição"
-#: ../bin/cselect.c:2538
+#: ../bin/cselect.c:2720
+#, fuzzy
+msgid "Toggle Detailed Description"
+msgstr "Mover descrição"
+
+#: ../bin/cselect.c:2804
msgid "Drag to mark mirror line"
msgstr "Arrastar para marcar linha espelho"
-#: ../bin/cselect.c:2549
+#: ../bin/cselect.c:2815
#, c-format
msgid "Angle %0.2f"
msgstr "Ângulo %0.2f"
-#: ../bin/cselect.c:2552
+#: ../bin/cselect.c:2818
msgid "Flip Tracks"
msgstr "Virar trecho"
-#: ../bin/cselect.c:2899
+#: ../bin/cselect.c:3014 ../bin/cselect.c:3215
+msgid "Track is in Frozen Layer"
+msgstr ""
+
+#: ../bin/cselect.c:3188
#, fuzzy
msgid "Select track"
msgstr "Selecionar trecho"
-#: ../bin/cselect.c:2927
-msgid "Track is in Frozen Layer"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:323
-#: ../bin/cselect.c:3279 ../bin/dcar.c:1673 ../bin/doption.c:235
-#: ../../../../build/work/app/i18n/custmsg.h:1169
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:439
+#: ../bin/cselect.c:3627 ../bin/dcar.c:1765 ../bin/doption.c:245
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1190
msgid "Select"
msgstr "Selecionar"
-#: ../bin/cselect.c:3298 ../bin/cselect.c:3318 ../bin/misc.c:2192
+#: ../bin/cselect.c:3654 ../bin/cselect.c:3683 ../bin/menu.c:932
msgid "Undo"
msgstr "Desfazer"
-#: ../bin/cselect.c:3299 ../bin/cselect.c:3319 ../bin/misc.c:2194
+#: ../bin/cselect.c:3655 ../bin/cselect.c:3684 ../bin/menu.c:934
msgid "Redo"
msgstr "Refazer"
-#: ../bin/cselect.c:3306 ../bin/draw.c:3112
+#: ../bin/cselect.c:3665 ../bin/cselect.c:3688 ../bin/draw.c:3500
msgid "Zoom to extents - 'e'"
msgstr ""
-#: ../bin/cselect.c:3307 ../bin/draw.c:3123 ../bin/misc.c:2375
+#: ../bin/cselect.c:3667 ../bin/draw.c:3522 ../bin/menu.c:1163
msgid "&Zoom"
msgstr "&Zoom"
-#: ../bin/cselect.c:3310 ../bin/draw.c:3122
+#: ../bin/cselect.c:3670 ../bin/draw.c:3520
msgid "Pan to Origin - 'o'/'0'"
msgstr ""
-#: ../bin/cselect.c:3311 ../bin/cselect.c:3323
+#: ../bin/cselect.c:3672 ../bin/cselect.c:3692
msgid "Pan Center Here - 'c'"
msgstr ""
-#: ../bin/cselect.c:3314 ../bin/misc.c:2231 ../bin/misc.c:2354
+#: ../bin/cselect.c:3677 ../bin/menu.c:977 ../bin/menu.c:1126
msgid "Select Current Layer"
msgstr "&Selecionar camada atual"
-#: ../bin/cselect.c:3325 ../bin/misc.c:2233
+#: ../bin/cselect.c:3690
+#, fuzzy
+msgid "Zoom to selected - 's'"
+msgstr "Nenhum trecho liberado"
+
+#: ../bin/cselect.c:3696 ../bin/menu.c:979
msgid "Deselect All"
msgstr "Deselecionar tudo"
-#: ../bin/cselect.c:3327
+#: ../bin/cselect.c:3699
#, fuzzy
msgid "Properties -'?'"
msgstr "Propriedades"
-#: ../bin/cselect.c:3328
+#: ../bin/cselect.c:3701
#, fuzzy
msgid "Modify/Activate Track"
msgstr "Modificar trecho"
-#: ../bin/cselect.c:3330 ../bin/misc.c:2219
+#: ../bin/cselect.c:3704 ../bin/menu.c:965
#, fuzzy
msgid "Cut"
msgstr "&Cortar"
-#: ../bin/cselect.c:3331 ../bin/misc.c:2221
+#: ../bin/cselect.c:3705 ../bin/menu.c:967
msgid "Copy"
msgstr "&Copiar"
-#: ../bin/cselect.c:3332 ../bin/fileio.c:1620 ../bin/misc.c:2223
+#: ../bin/cselect.c:3706 ../bin/fileio.c:1730 ../bin/menu.c:969
msgid "Paste"
msgstr "Colar"
-#: ../bin/cselect.c:3333 ../bin/misc.c:2225
+#: ../bin/cselect.c:3707 ../bin/menu.c:971
#, fuzzy
msgid "Clone"
msgstr "Fechar"
-#: ../bin/cselect.c:3335
+#: ../bin/cselect.c:3709
#, fuzzy
msgid "Rotate..."
msgstr "Rotacionar"
-#: ../bin/cselect.c:3337
+#: ../bin/cselect.c:3711
msgid "Align"
msgstr "Alinhar"
-#: ../bin/cselect.c:3341
+#: ../bin/cselect.c:3717 ../bin/menu.c:1142
+msgid "Ties/NoTies"
+msgstr ""
+
+#: ../bin/cselect.c:3719
msgid "Hide/NoHide"
msgstr ""
-#: ../bin/cselect.c:3342
+#: ../bin/cselect.c:3721
msgid "Bridge/NoBridge"
msgstr ""
-#: ../bin/cselect.c:3343
+#: ../bin/cselect.c:3723
+msgid "Roadbed/NoRoadbed"
+msgstr ""
+
+#: ../bin/cselect.c:3725
msgid "NoTies/Ties"
msgstr ""
-#: ../bin/cselect.c:3344
+#: ../bin/cselect.c:3727
msgid "Thickness..."
msgstr ""
-#: ../bin/cselect.c:3345 ../bin/misc.c:2366
+#: ../bin/cselect.c:3728 ../bin/menu.c:1150
msgid "Thin Tracks"
msgstr "Trilhos finos"
-#: ../bin/cselect.c:3346 ../bin/misc.c:2367
+#: ../bin/cselect.c:3730 ../bin/menu.c:1152
msgid "Medium Tracks"
msgstr "Trilhos médios"
-#: ../bin/cselect.c:3347 ../bin/misc.c:2368
+#: ../bin/cselect.c:3732 ../bin/menu.c:1154
msgid "Thick Tracks"
msgstr "Trilhos largos"
-#: ../bin/cselect.c:3352
+#: ../bin/cselect.c:3741
msgid "Dash-Dotted Line"
msgstr ""
-#: ../bin/cselect.c:3353
+#: ../bin/cselect.c:3743
msgid "Dash-Dot-Dotted Line"
msgstr ""
-#: ../bin/cselect.c:3355
+#: ../bin/cselect.c:3746
#, fuzzy
msgid "Move To Front"
msgstr "Arrastar para juntar"
-#: ../bin/cselect.c:3356
+#: ../bin/cselect.c:3747
#, fuzzy
msgid "Move To Back"
msgstr "Mover trecho"
-#: ../bin/cselect.c:3358
+#: ../bin/cselect.c:3749
#, fuzzy
msgid "Group"
msgstr "A&grupar"
-#: ../bin/cselect.c:3359
+#: ../bin/cselect.c:3750
#, fuzzy
msgid "UnGroup"
msgstr "&Desagrupar"
-#: ../bin/cselect.c:3394
+#: ../bin/cselect.c:3796
msgid "Move Description"
msgstr "Mover descrição"
-#: ../bin/cselect.c:3401 ../bin/misc.c:1935 ../bin/misc.c:2236
+#: ../bin/cselect.c:3804 ../bin/menu.c:294 ../bin/menu.c:986
msgid "Move"
msgstr "Mover"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:368
-#: ../bin/cselect.c:3403 ../bin/misc.c:1926 ../bin/misc.c:2238
-#: ../../../../build/work/app/i18n/custmsg.h:1259
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:484
+#: ../bin/cselect.c:3807 ../bin/menu.c:271 ../bin/menu.c:988
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1280
msgid "Rotate"
msgstr "Rotacionar"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:369
-#: ../bin/cselect.c:3405 ../bin/dcar.c:2217
-#: ../../../../build/work/app/i18n/custmsg.h:1261
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:485
+#: ../bin/cselect.c:3810 ../bin/dcar.c:2327
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1282
msgid "Flip"
msgstr "Virar"
-#: ../bin/csensor.c:216
+#: ../bin/csensor.c:214
#, fuzzy
msgid "Change Sensor"
msgstr "Alterar escala"
-#: ../bin/csensor.c:262 ../bin/csensor.c:596
+#: ../bin/csensor.c:261 ../bin/csensor.c:599
msgid "Sensor"
msgstr ""
-#: ../bin/csensor.c:391 ../bin/csignal.c:511
-#, fuzzy
-msgid "Orgin X"
-msgstr "Margem"
-
#: ../bin/csensor.c:407
#, fuzzy
msgid "Create Sensor"
@@ -2805,22 +2894,158 @@ msgstr "Cria bancada"
msgid "Modify Sensor"
msgstr "Modificar trecho"
-#: ../bin/csensor.c:443
+#: ../bin/csensor.c:445
#, fuzzy
msgid "Edit sensor"
msgstr "Menu editar"
-#: ../bin/csensor.c:481
+#: ../bin/csensor.c:483
#, fuzzy
msgid "Place sensor"
msgstr "Posicionar novo AMV"
-#: ../bin/csignal.c:241
+#: ../bin/csnap.c:530
+msgid "Horz"
+msgstr "Horizontal"
+
+#: ../bin/csnap.c:532
+msgid "Spacing"
+msgstr "Espaçamento"
+
+#: ../bin/csnap.c:534
+msgid "Divisions"
+msgstr "Divisões"
+
+#: ../bin/csnap.c:537
+msgid "Enable"
+msgstr "Habilitar"
+
+#: ../bin/csnap.c:538
+msgid "Vert"
+msgstr "Vertical"
+
+#: ../bin/csnap.c:547 ../bin/dease.c:78
+msgid "X"
+msgstr "X"
+
+#: ../bin/csnap.c:551
+msgid "A"
+msgstr "θ"
+
+#: ../bin/csnap.c:554
+msgid "Show"
+msgstr "Apresentar"
+
+#: ../bin/csnap.c:815
+msgid "Change Grid..."
+msgstr "Alterar grade..."
+
+#: ../bin/csplit.c:45
+msgid "Set Block Gaps"
+msgstr "Configurar espaçamento de bloco"
+
+#: ../bin/csplit.c:137
+#, fuzzy
+msgid "Select track and position for split"
+msgstr "Selecionar trecho a seccionar"
+
+#: ../bin/csplit.c:161
+#, fuzzy
+msgid "Can't Split that Track Object"
+msgstr "Secciona um trilho"
+
+#: ../bin/csplit.c:169 ../bin/csplit.c:182 ../bin/csplit.c:505
+msgid "Split Track"
+msgstr "Seccionar trecho"
+
+#: ../bin/csplit.c:178 ../bin/csplit.c:322 ../bin/csplit.c:410
+#, fuzzy
+msgid "Can't Split that Draw Object"
+msgstr "Secciona um trilho"
+
+#: ../bin/csplit.c:188
+#, fuzzy
+msgid "No Track to Split"
+msgstr "Trilhos"
+
+#: ../bin/csplit.c:203 ../bin/dbench.c:65 ../bin/dbench.c:77
+msgid "Left"
+msgstr "Esquerda"
+
+#: ../bin/csplit.c:205 ../bin/dbench.c:66 ../bin/dbench.c:76
+msgid "Right"
+msgstr "Direita"
+
+#: ../bin/csplit.c:207 ../bin/csplit.c:216
+msgid "Both"
+msgstr "Ambos"
+
+#: ../bin/csplit.c:212
+msgid "Top"
+msgstr "Em cima"
+
+#: ../bin/csplit.c:214
+msgid "Bottom"
+msgstr "Em baixo"
+
+#: ../bin/csplit.c:307
+#, fuzzy
+msgid "Select draw to split"
+msgstr "Selecionar trecho a seccionar"
+
+#: ../bin/csplit.c:326 ../bin/csplit.c:508
+#, fuzzy
+msgid "Split Draw"
+msgstr "Seccionar trecho"
+
+#: ../bin/csplit.c:332
+#, fuzzy
+msgid "No Draw to Split"
+msgstr "Arrastar ao destino"
+
+#: ../bin/csplit.c:371
+#, fuzzy
+msgid "Select the draw object to Trim to"
+msgstr "Move objeto selecionado para o topo"
+
+#: ../bin/csplit.c:387
+#, fuzzy
+msgid "Can't Trim with a Track"
+msgstr "Secciona um trilho"
+
+#: ../bin/csplit.c:392
+msgid "Select an intersecting draw object to Trim"
+msgstr ""
+
+#: ../bin/csplit.c:397
+msgid "No Draw to Trim with"
+msgstr ""
+
+#: ../bin/csplit.c:404
+#, fuzzy
+msgid "Can't Split a track object"
+msgstr "Secciona um trilho"
+
+#: ../bin/csplit.c:432 ../bin/csplit.c:511
+#, fuzzy
+msgid "Trim Draw"
+msgstr "Cor"
+
+#: ../bin/csplit.c:437
+msgid "Select another draw object to Trim, or Space to Deselect"
+msgstr ""
+
+#: ../bin/csplit.c:504
+#, fuzzy
+msgid "Split"
+msgstr "Secciona um trilho"
+
+#: ../bin/csignal.c:239
#, fuzzy
msgid "Number Of Heads"
msgstr "Números"
-#: ../bin/csignal.c:280
+#: ../bin/csignal.c:279
#, fuzzy
msgid "Change Signal"
msgstr "Alterar escala"
@@ -2830,189 +3055,133 @@ msgstr "Alterar escala"
msgid "(%d [%s]): Layer=%u, %d heads at %0.3f,%0.3f A%0.3f"
msgstr "(%d): Camada=%d %s"
-#: ../bin/csignal.c:325 ../bin/csignal.c:914
+#: ../bin/csignal.c:325 ../bin/csignal.c:931
msgid "Signal"
msgstr ""
-#: ../bin/csignal.c:517
+#: ../bin/csignal.c:518
#, fuzzy
msgid "Number of Heads"
msgstr "Números"
-#: ../bin/csignal.c:522
+#: ../bin/csignal.c:523
#, fuzzy
msgid "Edit Aspect"
msgstr "Menu editar"
-#: ../bin/csignal.c:524
+#: ../bin/csignal.c:525
msgid "Add Aspect"
msgstr ""
-#: ../bin/csignal.c:526
+#: ../bin/csignal.c:527
#, fuzzy
msgid "Delete Aspect"
msgstr "Elimina objetos"
-#: ../bin/csignal.c:539
+#: ../bin/csignal.c:540
msgid "Aspect Index"
msgstr ""
-#: ../bin/csignal.c:554
+#: ../bin/csignal.c:555
#, fuzzy
msgid "Create Signal"
msgstr "Criar linhas"
-#: ../bin/csignal.c:558
+#: ../bin/csignal.c:560
#, fuzzy
msgid "Modify Signal"
msgstr "Modificar trecho"
-#: ../bin/csignal.c:665
+#: ../bin/csignal.c:677
#, fuzzy
msgid "Edit aspect"
msgstr "Menu editar"
-#: ../bin/csignal.c:712
+#: ../bin/csignal.c:724
#, c-format
msgid "Are you sure you want to delete the %d aspect(s)"
msgstr ""
-#: ../bin/csignal.c:733
+#: ../bin/csignal.c:747
#, fuzzy
msgid "Edit signal"
msgstr "Menu editar"
-#: ../bin/csignal.c:795
+#: ../bin/csignal.c:811
msgid "Place base of signal"
msgstr ""
-#: ../bin/csignal.c:802
+#: ../bin/csignal.c:819
#, fuzzy
msgid "Drag to orient signal"
msgstr "Arrastar para selecionar o ângulo"
-#: ../bin/csnap.c:516
-msgid "Horz"
-msgstr "Horizontal"
-
-#: ../bin/csnap.c:518
-msgid "Spacing"
-msgstr "Espaçamento"
-
-#: ../bin/csnap.c:520
-msgid "Divisions"
-msgstr "Divisões"
-
-#: ../bin/csnap.c:523
-msgid "Enable"
-msgstr "Habilitar"
-
-#: ../bin/csnap.c:524
-msgid "Vert"
-msgstr "Vertical"
-
-#: ../bin/csnap.c:533 ../bin/dease.c:76
-msgid "X"
-msgstr "X"
-
-#: ../bin/csnap.c:537
-msgid "A"
-msgstr "θ"
-
-#: ../bin/csnap.c:540
-msgid "Show"
-msgstr "Apresentar"
-
-#: ../bin/csnap.c:790
-msgid "Change Grid..."
-msgstr "Alterar grade..."
-
-#: ../bin/csplit.c:44
-msgid "Set Block Gaps"
-msgstr "Configurar espaçamento de bloco"
-
-#: ../bin/csplit.c:105
-msgid "Select track to split"
-msgstr "Selecionar trecho a seccionar"
-
-#: ../bin/csplit.c:125
-#, fuzzy
-msgid "Can't Split that Track"
-msgstr "Secciona um trilho"
-
-#: ../bin/csplit.c:133 ../bin/csplit.c:221
-msgid "Split Track"
-msgstr "Seccionar trecho"
-
-#: ../bin/csplit.c:149 ../bin/dbench.c:69 ../bin/dbench.c:80
-msgid "Left"
-msgstr "Esquerda"
-
-#: ../bin/csplit.c:150 ../bin/dbench.c:70 ../bin/dbench.c:79
-msgid "Right"
-msgstr "Direita"
-
-#: ../bin/csplit.c:151 ../bin/csplit.c:156
-msgid "Both"
-msgstr "Ambos"
-
-#: ../bin/csplit.c:154
-msgid "Top"
-msgstr "Em cima"
-
-#: ../bin/csplit.c:155
-msgid "Bottom"
-msgstr "Em baixo"
-
#: ../bin/cstraigh.c:77
#, fuzzy
msgid "Place 1st endpoint of straight track, snap to unconnected endpoint"
msgstr "Posicionar 1ª extremidade do trecho reto"
-#: ../bin/cstraigh.c:104
+#: ../bin/cstraigh.c:105
msgid "Drag to place 2nd end point"
msgstr "Arrastar à posição da 2ª extremidade"
-#: ../bin/cstraigh.c:140
+#: ../bin/cstraigh.c:151
#, c-format
msgid "Straight Track Length=%s Angle=%0.3f"
msgstr "Trecho reto Comprimento=%s Ângulo=%0.3f"
-#: ../bin/cstraigh.c:191 ../bin/tstraigh.c:267
+#: ../bin/cstraigh.c:204 ../bin/tstraigh.c:245
msgid "Straight Track"
msgstr "Trecho reto"
-#: ../bin/cstruct.c:71 ../bin/cturnout.c:84 ../bin/doption.c:131
-#: ../bin/doption.c:240
+#: ../bin/cstruct.c:67 ../bin/cturnout.c:86 ../bin/doption.c:93
+#: ../bin/doption.c:250
msgid "Hide"
msgstr "Esconder"
-#: ../bin/cstruct.c:449 ../bin/cstruct.c:476
+#: ../bin/cstruct.c:505 ../bin/cstruct.c:535
msgid "Pier Number"
msgstr "Número do pilar"
-#: ../bin/cstruct.c:561
+#: ../bin/cstruct.c:627
#, c-format
msgid "Scale %d:1"
msgstr "Escala %d:1"
-#: ../bin/cstruct.c:563
+#: ../bin/cstruct.c:629
#, c-format
msgid "Width %s"
msgstr "Largura %s"
-#: ../bin/cstruct.c:565
+#: ../bin/cstruct.c:631
#, c-format
msgid "Height %s"
msgstr "Altura %s"
-#: ../bin/cstruct.c:706
+#: ../bin/cstruct.c:779
msgid "Place Structure"
msgstr "Posicionar estrutura"
-#: ../bin/cstruct.c:798 ../bin/cstruct.c:872 ../bin/cstruct.c:1103
-#: ../bin/cturnout.c:2753 ../bin/cturnout.c:2808 ../bin/cturnout.c:2933
-#: ../bin/cturnout.c:3072
+#: ../bin/cstruct.c:851 ../bin/cstruct.c:904 ../bin/drawgeom.c:304
+#, fuzzy
+msgid "+Alt for Magnetic Snap"
+msgstr "Habilitar grade"
+
+#: ../bin/cstruct.c:853 ../bin/cstruct.c:906 ../bin/drawgeom.c:306
+#, fuzzy
+msgid "+Alt to inhibit Magnetic Snap"
+msgstr "Habilitar grade"
+
+#: ../bin/cstruct.c:888
+msgid "Drag to place"
+msgstr "Arrastar ao destino"
+
+#: ../bin/cstruct.c:921
+msgid "Drag to rotate"
+msgstr "Arrastar para rotacionar"
+
+#: ../bin/cstruct.c:952 ../bin/cstruct.c:1222 ../bin/cturnout.c:2812
+#: ../bin/cturnout.c:2871 ../bin/cturnout.c:3015 ../bin/cturnout.c:3162
#, fuzzy
msgid ""
"Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter "
@@ -3022,24 +3191,15 @@ msgstr ""
"pressionar barra de espaço ou \"Enter\" para fixar trecho ou \"Esc\" para "
"anular"
-#: ../bin/cstruct.c:820
-msgid "Drag to place"
-msgstr "Arrastar ao destino"
-
-#: ../bin/cstruct.c:842
-msgid "Drag to rotate"
-msgstr "Arrastar para rotacionar"
-
-#: ../bin/cstruct.c:862
-#, c-format
-msgid "Angle = %0.3f"
-msgstr "Ângulo = %0.3f"
+#: ../bin/cstruct.c:1031 ../bin/cturnout.c:2963 ../bin/param.c:3013
+msgid "Close"
+msgstr "Fechar"
-#: ../bin/cstruct.c:952
+#: ../bin/cstruct.c:1049
msgid "Select Structure and then drag to place"
msgstr "Selecionar estrutura e arrastar ao destino"
-#: ../bin/cstruct.c:990
+#: ../bin/cstruct.c:1091
msgid ""
"Left drag to move, right drag to rotate, or press Return or click Ok to "
"finalize"
@@ -3047,100 +3207,100 @@ msgstr ""
"Arrastar clicanco o botão esquerdo do mouse para mover, botão direito para "
"rotacionar, pressionar \"Return\" ou clicar em \"Ok\" para finalizar"
-#: ../bin/cstruct.c:1073 ../bin/cturnout.c:3039
+#: ../bin/cstruct.c:1184 ../bin/cturnout.c:3127
#, c-format
msgid "Place %s and draw into position"
msgstr "Posicionar %s e desenhar na posição"
-#: ../bin/cswitchmotor.c:96 ../bin/cswitchmotor.c:115
-#: ../bin/cswitchmotor.c:227
+#: ../bin/cswitchmotor.c:92 ../bin/cswitchmotor.c:111
+#: ../bin/cswitchmotor.c:231
msgid "Point Sense"
msgstr "Aportar direção"
-#: ../bin/cswitchmotor.c:116
+#: ../bin/cswitchmotor.c:112
#, fuzzy
msgid "Turnout Number"
msgstr "Número da parte"
-#: ../bin/cswitchmotor.c:292
+#: ../bin/cswitchmotor.c:299
msgid "Change Switch Motor"
msgstr "Alterar motor de AMV"
-#: ../bin/cswitchmotor.c:359
+#: ../bin/cswitchmotor.c:369
#, fuzzy
msgid "Switch motor"
msgstr "Motor de AMV"
-#: ../bin/cswitchmotor.c:475
+#: ../bin/cswitchmotor.c:499
#, c-format
msgid "ResolveSwitchmotor: Turnout T%d: T%d doesn't exist"
msgstr ""
-#: ../bin/cswitchmotor.c:544 ../bin/cswitchmotor.c:714
+#: ../bin/cswitchmotor.c:570 ../bin/cswitchmotor.c:746
msgid "Switch motor must have a name!"
msgstr ""
-#: ../bin/cswitchmotor.c:548
+#: ../bin/cswitchmotor.c:574
msgid "Create Switch Motor"
msgstr "Criar motor de AMV"
-#: ../bin/cswitchmotor.c:580
+#: ../bin/cswitchmotor.c:608
#, fuzzy
msgid "Create switch motor"
msgstr "Criar motor de AMV"
-#: ../bin/cswitchmotor.c:594 ../bin/cswitchmotor.c:625
-#: ../bin/cswitchmotor.c:657
+#: ../bin/cswitchmotor.c:624 ../bin/cswitchmotor.c:655
+#: ../bin/cswitchmotor.c:687
msgid "Select a turnout"
msgstr "Selecionar um AMV"
-#: ../bin/cswitchmotor.c:601
+#: ../bin/cswitchmotor.c:632
msgid "Not a turnout!"
msgstr "Isto não é um AMV!"
-#: ../bin/cswitchmotor.c:634 ../bin/cswitchmotor.c:665
+#: ../bin/cswitchmotor.c:664 ../bin/cswitchmotor.c:695
#, fuzzy
msgid "Not a switch motor!"
msgstr "Isto não é um motor de AMV!"
-#: ../bin/cswitchmotor.c:670
+#: ../bin/cswitchmotor.c:700
#, fuzzy, c-format
msgid "Really delete switch motor %s?"
msgstr "Eliminar motor de AMV %s?"
-#: ../bin/cswitchmotor.c:671
+#: ../bin/cswitchmotor.c:702
msgid "Delete Switch Motor"
msgstr "Eliminar motor de AMV"
-#: ../bin/cswitchmotor.c:718
+#: ../bin/cswitchmotor.c:750
#, fuzzy
msgid "Modify Switch Motor"
msgstr "Editar motor de AMV"
-#: ../bin/cswitchmotor.c:744
+#: ../bin/cswitchmotor.c:776
#, fuzzy
msgid "Edit switch motor"
msgstr "Editar motor de AMV"
-#: ../bin/cswitchmotor.c:750
+#: ../bin/cswitchmotor.c:782
#, fuzzy, c-format
msgid "Edit switch motor %d"
msgstr "Editar motor de AMV"
-#: ../bin/cswitchmotor.c:858
+#: ../bin/cswitchmotor.c:889
msgid "Switch Motor"
msgstr "Motor de AMV"
-#: ../bin/cswitchmotor.c:871
+#: ../bin/cswitchmotor.c:903
#, fuzzy, c-format
msgid "Deleting Switch Motor %s"
msgstr "Eliminar motor de AMV"
-#: ../bin/ctext.c:195 ../bin/ctext.c:234
+#: ../bin/ctext.c:194 ../bin/ctext.c:242
msgid "Create Text"
msgstr "Criar texto"
-#: ../bin/ctext.c:264
+#: ../bin/ctext.c:277
msgid "Fonts..."
msgstr "Fontes..."
@@ -3161,651 +3321,658 @@ msgstr ""
msgid "Quad Path"
msgstr " e item"
-#: ../bin/ctodesgn.c:175 ../bin/ctodesgn.c:176 ../bin/ctodesgn.c:177
-#: ../bin/ctodesgn.c:178 ../bin/ctodesgn.c:238 ../bin/ctodesgn.c:261
-#: ../bin/ctodesgn.c:263 ../bin/ctodesgn.c:298 ../bin/ctodesgn.c:301
-#: ../bin/ctodesgn.c:327 ../bin/ctodesgn.c:328 ../bin/ctodesgn.c:364
-#: ../bin/ctodesgn.c:367 ../bin/ctodesgn.c:393 ../bin/ctodesgn.c:395
-#: ../bin/ctodesgn.c:434 ../bin/ctodesgn.c:438 ../bin/ctodesgn.c:441
-#: ../bin/ctodesgn.c:653
+#: ../bin/ctodesgn.c:182 ../bin/ctodesgn.c:183 ../bin/ctodesgn.c:184
+#: ../bin/ctodesgn.c:185 ../bin/ctodesgn.c:244 ../bin/ctodesgn.c:270
+#: ../bin/ctodesgn.c:272 ../bin/ctodesgn.c:316 ../bin/ctodesgn.c:319
+#: ../bin/ctodesgn.c:350 ../bin/ctodesgn.c:351 ../bin/ctodesgn.c:395
+#: ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:428 ../bin/ctodesgn.c:430
+#: ../bin/ctodesgn.c:477 ../bin/ctodesgn.c:481 ../bin/ctodesgn.c:484
+#: ../bin/ctodesgn.c:742
msgid "Offset"
msgstr "Distância"
-#: ../bin/ctodesgn.c:196 ../bin/ctodesgn.c:2911 ../bin/ctodesgn.c:2912
+#: ../bin/ctodesgn.c:203 ../bin/ctodesgn.c:3204 ../bin/ctodesgn.c:3205
msgid "Left Description"
msgstr "Descrição a esquerda"
-#: ../bin/ctodesgn.c:197 ../bin/ctodesgn.c:200
+#: ../bin/ctodesgn.c:204 ../bin/ctodesgn.c:207
msgid " #"
msgstr " No."
-#: ../bin/ctodesgn.c:199 ../bin/ctodesgn.c:2910
+#: ../bin/ctodesgn.c:206 ../bin/ctodesgn.c:3203
msgid "Right Description"
msgstr "Descrição a direita"
-#: ../bin/ctodesgn.c:201
+#: ../bin/ctodesgn.c:208
msgid "Roadbed Width"
msgstr "Largura do leito"
-#: ../bin/ctodesgn.c:205 ../bin/denum.c:56
+#: ../bin/ctodesgn.c:212 ../bin/denum.c:52
msgid "Print Setup"
msgstr "Setup de impressão"
-#: ../bin/ctodesgn.c:236
+#: ../bin/ctodesgn.c:242
msgid "Diverging Length"
msgstr "Comprimento divergente"
-#: ../bin/ctodesgn.c:237
+#: ../bin/ctodesgn.c:243
msgid "Diverging Angle"
msgstr "Ângulo divergente"
-#: ../bin/ctodesgn.c:238
+#: ../bin/ctodesgn.c:244
msgid "Diverging Offset"
msgstr "Distância de divergência"
-#: ../bin/ctodesgn.c:239
+#: ../bin/ctodesgn.c:245
msgid "Overall Length"
msgstr "Comprimento total"
-#: ../bin/ctodesgn.c:249
+#: ../bin/ctodesgn.c:257
msgid "Regular Turnout"
msgstr "AMV regular"
-#: ../bin/ctodesgn.c:259 ../bin/ctodesgn.c:296
+#: ../bin/ctodesgn.c:268 ../bin/ctodesgn.c:314
msgid "Inner Length"
msgstr "Comprimento interno"
-#: ../bin/ctodesgn.c:260 ../bin/ctodesgn.c:297
+#: ../bin/ctodesgn.c:269 ../bin/ctodesgn.c:315
msgid "Inner Angle"
msgstr "Ângulo interno"
-#: ../bin/ctodesgn.c:261 ../bin/ctodesgn.c:298
+#: ../bin/ctodesgn.c:270 ../bin/ctodesgn.c:316
msgid "Inner Offset"
msgstr "Distância interna"
-#: ../bin/ctodesgn.c:262 ../bin/ctodesgn.c:300
+#: ../bin/ctodesgn.c:271 ../bin/ctodesgn.c:318
msgid "Outer Angle"
msgstr "Ângulo externo"
-#: ../bin/ctodesgn.c:263 ../bin/ctodesgn.c:301
+#: ../bin/ctodesgn.c:272 ../bin/ctodesgn.c:319
msgid "Outer Offset"
msgstr "Distância externa"
-#: ../bin/ctodesgn.c:264 ../bin/ctodesgn.c:303
+#: ../bin/ctodesgn.c:273 ../bin/ctodesgn.c:321
msgid "Outer Length"
msgstr "Comprimento externo"
-#: ../bin/ctodesgn.c:286
+#: ../bin/ctodesgn.c:302
msgid "Curved Turnout"
msgstr "AMV curvo"
-#: ../bin/ctodesgn.c:299
+#: ../bin/ctodesgn.c:317
#, fuzzy
msgid "Inner Radius"
msgstr "Raio"
-#: ../bin/ctodesgn.c:302
+#: ../bin/ctodesgn.c:320
#, fuzzy
msgid "Outer Radius"
msgstr "Raio"
-#: ../bin/ctodesgn.c:304 ../bin/ctodesgn.c:371 ../bin/ctodesgn.c:446
+#: ../bin/ctodesgn.c:322 ../bin/ctodesgn.c:402 ../bin/ctodesgn.c:489
#, fuzzy
msgid "Toe Radius"
msgstr "Raio"
-#: ../bin/ctodesgn.c:305 ../bin/ctodesgn.c:370
+#: ../bin/ctodesgn.c:323 ../bin/ctodesgn.c:401
#, fuzzy
msgid "Toe Length"
msgstr "Comprimento total"
-#: ../bin/ctodesgn.c:315
+#: ../bin/ctodesgn.c:336
#, fuzzy
msgid "Cornu Curved Turnout"
msgstr "AMV curvo"
-#: ../bin/ctodesgn.c:325 ../bin/ctodesgn.c:362 ../bin/ctodesgn.c:391
-#: ../bin/ctodesgn.c:432
+#: ../bin/ctodesgn.c:348 ../bin/ctodesgn.c:393 ../bin/ctodesgn.c:426
+#: ../bin/ctodesgn.c:475
msgid "Left Length"
msgstr "Comprimento a esquerda"
-#: ../bin/ctodesgn.c:326 ../bin/ctodesgn.c:363 ../bin/ctodesgn.c:392
-#: ../bin/ctodesgn.c:433
+#: ../bin/ctodesgn.c:349 ../bin/ctodesgn.c:394 ../bin/ctodesgn.c:427
+#: ../bin/ctodesgn.c:476
msgid "Left Angle"
msgstr "Ângulo a esquerda"
-#: ../bin/ctodesgn.c:327 ../bin/ctodesgn.c:364 ../bin/ctodesgn.c:393
-#: ../bin/ctodesgn.c:434
+#: ../bin/ctodesgn.c:350 ../bin/ctodesgn.c:395 ../bin/ctodesgn.c:428
+#: ../bin/ctodesgn.c:477
msgid "Left Offset"
msgstr "Distância esquerda"
-#: ../bin/ctodesgn.c:328 ../bin/ctodesgn.c:367 ../bin/ctodesgn.c:395
-#: ../bin/ctodesgn.c:441
+#: ../bin/ctodesgn.c:351 ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:430
+#: ../bin/ctodesgn.c:484
msgid "Right Offset"
msgstr "Distância direita"
-#: ../bin/ctodesgn.c:329 ../bin/ctodesgn.c:368 ../bin/ctodesgn.c:396
-#: ../bin/ctodesgn.c:442
+#: ../bin/ctodesgn.c:352 ../bin/ctodesgn.c:399 ../bin/ctodesgn.c:431
+#: ../bin/ctodesgn.c:485
msgid "Right Angle"
msgstr "Ângulo a direita"
-#: ../bin/ctodesgn.c:330 ../bin/ctodesgn.c:369 ../bin/ctodesgn.c:397
-#: ../bin/ctodesgn.c:443
+#: ../bin/ctodesgn.c:353 ../bin/ctodesgn.c:400 ../bin/ctodesgn.c:432
+#: ../bin/ctodesgn.c:486
msgid "Right Length"
msgstr "Comprimento a direita"
-#: ../bin/ctodesgn.c:352
+#: ../bin/ctodesgn.c:381
msgid "Wye Turnout"
msgstr "AMV em Y"
-#: ../bin/ctodesgn.c:365 ../bin/ctodesgn.c:435
+#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:478
#, fuzzy
msgid "Left Radius"
msgstr "Raio"
-#: ../bin/ctodesgn.c:366 ../bin/ctodesgn.c:440
+#: ../bin/ctodesgn.c:397 ../bin/ctodesgn.c:483
#, fuzzy
msgid "Right Radius"
msgstr "Raio"
-#: ../bin/ctodesgn.c:381
+#: ../bin/ctodesgn.c:414
#, fuzzy
msgid "Cornu Wye Turnout"
msgstr "AMV em Y"
-#: ../bin/ctodesgn.c:422
+#: ../bin/ctodesgn.c:463
msgid "3-way Turnout"
msgstr "AMV de 3 posições"
-#: ../bin/ctodesgn.c:436
+#: ../bin/ctodesgn.c:479
#, fuzzy
msgid "Center Length"
msgstr "Comprimento interno"
-#: ../bin/ctodesgn.c:437
+#: ../bin/ctodesgn.c:480
#, fuzzy
msgid "Center Angle"
msgstr "Ângulo interno"
-#: ../bin/ctodesgn.c:438 ../bin/dcar.c:2238
+#: ../bin/ctodesgn.c:481 ../bin/dcar.c:2348
#, fuzzy
msgid "Center Offset"
msgstr "Distância interna"
-#: ../bin/ctodesgn.c:439
+#: ../bin/ctodesgn.c:482
#, fuzzy
msgid "Center Radius"
msgstr "Raio da circunferência"
-#: ../bin/ctodesgn.c:444
+#: ../bin/ctodesgn.c:487
#, fuzzy
msgid "Toe Length Left"
msgstr "Comprimento total"
-#: ../bin/ctodesgn.c:445
+#: ../bin/ctodesgn.c:488
#, fuzzy
msgid "Toe Length Right"
msgstr "Comprimento total"
-#: ../bin/ctodesgn.c:457
+#: ../bin/ctodesgn.c:502
#, fuzzy
msgid "Cornu 3-way Turnout"
msgstr "AMV de 3 posições"
-#: ../bin/ctodesgn.c:477
+#: ../bin/ctodesgn.c:527
msgid "Crossing"
msgstr "Cruzamento"
-#: ../bin/ctodesgn.c:498
+#: ../bin/ctodesgn.c:552
msgid "Single Slipswitch"
msgstr "Slipswitch simples"
-#: ../bin/ctodesgn.c:527
+#: ../bin/ctodesgn.c:587
msgid "Double Slipswitch"
msgstr "Slipswitch duplo"
-#: ../bin/ctodesgn.c:547
+#: ../bin/ctodesgn.c:612
msgid "Right Crossover"
msgstr "Sobrecruzamento direito"
-#: ../bin/ctodesgn.c:567
+#: ../bin/ctodesgn.c:638
msgid "Left Crossover"
msgstr "Sobrecruzamento esquerdo"
-#: ../bin/ctodesgn.c:587
+#: ../bin/ctodesgn.c:663
msgid "Double Crossover"
msgstr "Sobrecruzamento duplo"
-#: ../bin/ctodesgn.c:605
+#: ../bin/ctodesgn.c:685
msgid "Straight Section"
msgstr "Seção reta"
-#: ../bin/ctodesgn.c:616
+#: ../bin/ctodesgn.c:697
msgid "Angle (Degrees)"
msgstr "Ângulo (em graus)"
-#: ../bin/ctodesgn.c:624
+#: ../bin/ctodesgn.c:708
msgid "Curved Section"
msgstr "Seção curva"
-#: ../bin/ctodesgn.c:643
+#: ../bin/ctodesgn.c:731
msgid "Bumper Section"
msgstr "Seção de parachoque"
# Esse texto possui dois contextos diferentes. Favor alterar software para distingui-los.
-#: ../bin/ctodesgn.c:653 ../bin/denum.c:123 ../bin/denum.c:186
-#: ../bin/denum.c:218 ../bin/denum.c:219 ../bin/dlayer.c:497
+#: ../bin/ctodesgn.c:742 ../bin/denum.c:124 ../bin/denum.c:193
+#: ../bin/denum.c:230 ../bin/denum.c:231
msgid "Count"
msgstr "Posição"
-#: ../bin/ctodesgn.c:654
+#: ../bin/ctodesgn.c:743
msgid "Radius1"
msgstr "Raio 1"
-#: ../bin/ctodesgn.c:655
+#: ../bin/ctodesgn.c:744
msgid "Radius2"
msgstr "Raio 2"
-#: ../bin/ctodesgn.c:735
+#: ../bin/ctodesgn.c:827
msgid "Turntable Section"
msgstr "Virador de locomotivas"
-#: ../bin/ctodesgn.c:2538
+#: ../bin/ctodesgn.c:2777
#, c-format
msgid "%s Designer"
msgstr "Editor %s"
-#: ../bin/ctodesgn.c:2542
+#: ../bin/ctodesgn.c:2780
#, c-format
msgid "%s %d x %d (of %d x %d)"
msgstr ""
-#: ../bin/ctodesgn.c:2542
+#: ../bin/ctodesgn.c:2780
msgid "Page"
msgstr "Página"
-#: ../bin/ctodesgn.c:2550
+#: ../bin/ctodesgn.c:2788
msgid "Frog Number"
msgstr "Número do jacaré"
-#: ../bin/ctodesgn.c:2864
+#: ../bin/ctodesgn.c:3147
msgid "Turnout Designer"
msgstr "Editor de AMV"
-#: ../bin/ctodesgn.c:2874
+#: ../bin/ctodesgn.c:3160
#, c-format
msgid "%s %s Designer"
msgstr "Editor %s %s"
-#: ../bin/ctrain.c:182 ../bin/dcar.c:2250 ../bin/dcar.c:4367
-#: ../bin/dcar.c:4372
+#: ../bin/ctrain.c:179 ../bin/dcar.c:2360 ../bin/dcar.c:4694
+#: ../bin/dcar.c:4700
msgid "Index"
msgstr "Ãndice"
-#: ../bin/ctrain.c:188 ../bin/dcar.c:4368
-msgid "Rep Marks"
+#: ../bin/ctrain.c:185
+#, fuzzy
+msgid "Report Marks"
msgstr "Abreviaturas"
-#: ../bin/ctrain.c:272
+#: ../bin/ctrain.c:273
msgid "Car"
msgstr "Material rodante"
-#: ../bin/ctrain.c:656
+#: ../bin/ctrain.c:728
msgid "Follow"
msgstr "Seguido"
-#: ../bin/ctrain.c:657
+#: ../bin/ctrain.c:729
msgid "Auto Reverse"
msgstr "Auto reverso"
-#: ../bin/ctrain.c:676 ../bin/dcar.c:5257
+#: ../bin/ctrain.c:748 ../bin/dcar.c:5686
msgid "Find"
msgstr "Encontrar"
# não seria melhor "Procurar"
-#: ../bin/ctrain.c:682 ../bin/ctrain.c:941 ../bin/ctrain.c:1248
-#: ../wlib/gtklib/ixhelp.c:239
+#: ../bin/ctrain.c:754 ../bin/ctrain.c:1011 ../bin/ctrain.c:1324
msgid "Forward"
msgstr "Rodar"
-#: ../bin/ctrain.c:684 ../bin/ctrain.c:3123 ../bin/dcar.c:4706
-#: ../bin/dcar.c:4716 ../bin/dcar.c:4836 ../bin/fileio.c:241 ../bin/macro.c:92
-#: ../bin/macro.c:898
+#: ../bin/ctrain.c:756 ../bin/ctrain.c:3235 ../bin/dcar.c:5093
+#: ../bin/dcar.c:5103 ../bin/dcar.c:5225 ../bin/fileio.c:224 ../bin/macro.c:64
+#: ../bin/track.c:1366
msgid "Stop"
msgstr "Parar"
-#: ../bin/ctrain.c:882 ../bin/ctrain.c:911
+#: ../bin/ctrain.c:952 ../bin/ctrain.c:981
msgid "Crashed"
msgstr "Colisão"
-#: ../bin/ctrain.c:884
+#: ../bin/ctrain.c:954
msgid "Not on Track"
msgstr "Isso não é um trilho"
-#: ../bin/ctrain.c:888
+#: ../bin/ctrain.c:958
msgid "Trains Paused"
msgstr "Trens parados"
-#: ../bin/ctrain.c:890
+#: ../bin/ctrain.c:960
msgid "Running"
msgstr "Rodando"
-#: ../bin/ctrain.c:895
+#: ../bin/ctrain.c:965
msgid "End of Track"
msgstr "Fim da linha"
-#: ../bin/ctrain.c:899
+#: ../bin/ctrain.c:969
msgid "Open Turnout"
msgstr "AMV aberto"
-#: ../bin/ctrain.c:903
+#: ../bin/ctrain.c:973
msgid "Manual Stop"
msgstr "Parada manual"
-#: ../bin/ctrain.c:907
+#: ../bin/ctrain.c:977
msgid "No Room"
msgstr "Espaço insuficiente"
-#: ../bin/ctrain.c:915
+#: ../bin/ctrain.c:985
msgid "Unknown Status"
msgstr "Estado desconhecido"
-#: ../bin/ctrain.c:925
+#: ../bin/ctrain.c:995
msgid "No trains"
msgstr "Nenhum trem"
-#: ../bin/ctrain.c:1299
+#: ../bin/ctrain.c:1375
msgid "Train Control XXX"
msgstr "Controle do trem XXX"
-#: ../bin/ctrain.c:1300
+#: ../bin/ctrain.c:1376
#, c-format
msgid "Train Control %d"
msgstr "Controle do trem %d"
-#: ../bin/ctrain.c:1302
+#: ../bin/ctrain.c:1378
msgid "Train Control"
msgstr "Controle de trem"
-#: ../bin/ctrain.c:3096
-msgid "Train"
-msgstr "Trem"
+#: ../bin/ctrain.c:3198 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:156
+msgid "Run Trains"
+msgstr "Roda trens"
-#: ../bin/ctrain.c:3109
+#: ../bin/ctrain.c:3217
msgid "Uncouple"
msgstr "Desengatar"
-#: ../bin/ctrain.c:3111
+#: ../bin/ctrain.c:3219
msgid "Flip Car"
msgstr "Virar material rodante"
-#: ../bin/ctrain.c:3113
+#: ../bin/ctrain.c:3222
#, fuzzy
msgid "Clearance Lines On"
msgstr "Criar linhas"
-#: ../bin/ctrain.c:3115
+#: ../bin/ctrain.c:3225
#, fuzzy
msgid "Clearance Lines Off"
msgstr "Criar linhas"
-#: ../bin/ctrain.c:3117
+#: ../bin/ctrain.c:3227
msgid "Flip Train"
msgstr "Virar trem"
-#: ../bin/ctrain.c:3119
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:438
+#: ../bin/ctrain.c:3229
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1188
+#, fuzzy
+msgid "Describe"
+msgstr "Descrição"
+
+#: ../bin/ctrain.c:3231
msgid "MU Master"
msgstr "MU Master"
-#: ../bin/ctrain.c:3122
+#: ../bin/ctrain.c:3234
msgid "Change Direction"
msgstr "Alternar direção"
-#: ../bin/ctrain.c:3126
+#: ../bin/ctrain.c:3238
msgid "Remove Car"
msgstr "Remover material rodante"
-#: ../bin/ctrain.c:3129
+#: ../bin/ctrain.c:3241
msgid "Remove Train"
msgstr "Remover trem"
-#: ../bin/cturnout.c:95 ../bin/dcar.c:2272 ../bin/dcar.c:2276
+#: ../bin/cturnout.c:97 ../bin/dcar.c:2382 ../bin/dcar.c:2386
msgid "New"
msgstr "Novo"
-#: ../bin/cturnout.c:368
-#, c-format
-msgid "Turnout path[%d:%d] out of bounds: %d"
-msgstr "AMV[%d:%d] fora do limite: %d"
-
-#: ../bin/cturnout.c:379 ../bin/cturnout.c:389
+#: ../bin/cturnout.c:371 ../bin/cturnout.c:376
#, fuzzy, c-format
-msgid "Turnout path[%d] %d is not a valid track segment"
+msgid "CheckPath: Turnout path[%d] %d is not a track segment"
msgstr "AMV[%d] %d não se encontra em um segmento"
-#: ../bin/cturnout.c:399 ../bin/cturnout.c:404
-#, c-format
-msgid "Turnout path[%d] %d is not a track segment"
-msgstr "AMV[%d] %d não se encontra em um segmento"
-
-#: ../bin/cturnout.c:412
+#: ../bin/cturnout.c:385
#, fuzzy, c-format
-msgid "Turnout path[%d] %d-%d not connected: %0.3f P0(%f,%f) P1(%f,%f)"
+msgid ""
+"CheckPath: Turnout path[%d] %d-%d not connected: %0.3f P0(%f,%f) P1(%f,%f)"
msgstr "AMV [%d] %d-%d não conectado: %0.3f"
-#: ../bin/cturnout.c:450
+#: ../bin/cturnout.c:437
msgid "Unknown special case"
msgstr "Caso especial desconhecido"
-#: ../bin/cturnout.c:560
+#: ../bin/cturnout.c:564
msgid "Connect Adjustable Tracks"
msgstr "Conectar trechos ajustáveis"
-#: ../bin/cturnout.c:1096
+#: ../bin/cturnout.c:1030
msgid "splitTurnout: can't find segment"
msgstr "Dividir AMV: não foi possivel encontrar segmento"
-#: ../bin/cturnout.c:1522 ../bin/track.c:2259 ../bin/track.c:2365
-#: ../bin/tstraigh.c:554
+#: ../bin/cturnout.c:1511 ../bin/track.c:2380 ../bin/track.c:2502
+#: ../bin/tstraigh.c:838
msgid "Drag to change track length"
msgstr "Arrastar para alterar comprimento do trecho"
-#: ../bin/cturnout.c:1533
+#: ../bin/cturnout.c:1524
#, c-format
msgid "Length=%s"
msgstr "Comprimento=%s"
-#: ../bin/cturnout.c:2344
+#: ../bin/cturnout.c:1815
+#, c-format
+msgid "Turnout %d Path: %s"
+msgstr ""
+
+#: ../bin/cturnout.c:2389
#, c-format
msgid "%d connections, max distance %0.3f (%s)"
msgstr "%d conexões, distancia máxima %0.3f (%s)"
-#: ../bin/cturnout.c:2349
+#: ../bin/cturnout.c:2394
#, c-format
msgid "0 connections (%s)"
msgstr "0 conexões (%s)"
-#: ../bin/cturnout.c:2389
+#: ../bin/cturnout.c:2433
msgid "Place New Turnout"
msgstr "Posicionar novo AMV"
-#: ../bin/cturnout.c:2798
+#: ../bin/cturnout.c:2861
#, c-format
msgid "Angle = %0.3f (%s)"
msgstr "Ângulo = %0.3f (%s)"
-#: ../bin/cturnout.c:2888 ../bin/param.c:2618
-msgid "Close"
-msgstr "Fechar"
+#: ../bin/cturnout.c:2962
+msgid "Add Fixed-Track"
+msgstr ""
-#: ../bin/cturnout.c:2905
+#: ../bin/cturnout.c:2981
msgid "Pick turnout and active End Point, then place on the layout"
msgstr "Selecionar AMV e ativar extremidade, e então posicionar no layout"
-#: ../bin/cturnout.c:3099
+#: ../bin/cturnout.c:3190
#, fuzzy
-msgid "Predefined Track"
-msgstr "Trilho selecionado"
+msgid "Fixed-Track"
+msgstr "Estender um trecho"
-#: ../bin/cturntbl.c:52 ../bin/cturntbl.c:251 ../bin/cturntbl.c:857
-#: ../bin/cturntbl.c:871
+#: ../bin/cturntbl.c:49 ../bin/cturntbl.c:275 ../bin/cturntbl.c:1029
+#: ../bin/cturntbl.c:1044
msgid "Diameter"
msgstr "Diâmetro"
-#: ../bin/cturntbl.c:252
+#: ../bin/cturntbl.c:276
msgid "# EndPt"
msgstr "No. da extremidade"
-#: ../bin/cturntbl.c:286
+#: ../bin/cturntbl.c:316
#, c-format
msgid "Turntable(%d): Layer=%d Center=[%s %s] Diameter=%s #EP=%d"
msgstr ""
"Virador(%d): Camada=%d Centro=[%s %s] Diâmetro=%s No. da extremidade=%d"
-#: ../bin/cturntbl.c:301
+#: ../bin/cturntbl.c:335 ../bin/cturntbl.c:454
msgid "Turntable"
msgstr "Virador de locomotivas"
-#: ../bin/cturntbl.c:565
+#: ../bin/cturntbl.c:670
msgid "Drag to create stall track"
msgstr "Arrastar para criar ramo"
-#: ../bin/cturntbl.c:618
+#: ../bin/cturntbl.c:728
#, fuzzy
msgid "Connect Turntable Tracks"
msgstr "Conectar trechos ajustáveis"
-#: ../bin/cturntbl.c:885
+#: ../bin/cturntbl.c:1058
msgid "Create Turntable"
msgstr "Criar virador de locomotivas"
-#: ../bin/cturntbl.c:916
+#: ../bin/cturntbl.c:1090
#, fuzzy
msgid "Custom Turntable"
msgstr "Criar virador de locomotivas"
-#: ../bin/cundo.c:166
+#: ../bin/cundo.c:266
msgid "Undo Trace"
msgstr "Desfazer traço"
-#: ../bin/cundo.c:536
+#: ../bin/cundo.c:741
#, c-format
msgid "Undo: %s"
msgstr "Desfazer: %s"
-#: ../bin/cundo.c:539 ../../../../build/work/app/bin/bllnhlp.c:158
+#: ../bin/cundo.c:744 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:168
msgid "Undo last command"
msgstr "Desfazer último comando"
-#: ../bin/cundo.c:544
+#: ../bin/cundo.c:749
#, c-format
msgid "Redo: %s"
msgstr "Refazer: %s"
-#: ../bin/cundo.c:547 ../../../../build/work/app/bin/bllnhlp.c:124
+#: ../bin/cundo.c:752 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:129
msgid "Redo last undo"
msgstr "Refazer último comando"
-#: ../bin/custom.c:167
+#: ../bin/custom.c:148
#, c-format
msgid "%s Turnout Designer"
msgstr "Editor de AMV %s"
-#: ../bin/custom.c:172
+#: ../bin/custom.c:152
#, c-format
msgid "%s Version %s"
msgstr "%s versão %s"
-#: ../bin/custom.c:177
+#: ../bin/custom.c:156
#, c-format
msgid ""
"All %s Files (*.xtc,*.xtce)|*.xtc;*.xtce|%s Trackplan (*.xtc)|*.xtc|%s "
"Extended Trackplan (*.xtce)|*.xtce|All Files (*)|*"
msgstr ""
-#: ../bin/custom.c:188
+#: ../bin/custom.c:166
#, c-format
msgid ""
"%s Trackplan (*.xtc)|*.xtc|%s Extended Trackplan (*.xtce)|*.xtce|All Files "
"(*)|*"
msgstr ""
-#: ../bin/custom.c:197
+#: ../bin/custom.c:174
#, c-format
msgid "All Files (*)|*"
msgstr ""
-#: ../bin/custom.c:202
+#: ../bin/custom.c:178
#, fuzzy, c-format
msgid "%s Import Files (*.xti)|*.xti"
msgstr "%s importar arquivos|*.%sti"
-#: ../bin/custom.c:207
+#: ../bin/custom.c:182
#, fuzzy
msgid "Data Exchange Format Files (*.dxf)|*.dxf"
msgstr "Arquivos Data Exchange Format|*.dxf"
-#: ../bin/custom.c:211
+#: ../bin/custom.c:186
+msgid "Scalable Vector Graphics Format Files (*.svg)|*.svg"
+msgstr ""
+
+#: ../bin/custom.c:190
#, fuzzy, c-format
msgid "%s Record Files (*.xtr)|*.xtr"
msgstr "%s Arquivos de registro|*.%str"
-#: ../bin/custom.c:216
+#: ../bin/custom.c:194
#, fuzzy, c-format
msgid "%s Note Files (*.not)|*.not"
msgstr "%s Arquivos de notas|*.not"
-#: ../bin/custom.c:221
+#: ../bin/custom.c:198
#, fuzzy, c-format
msgid "%s Log Files (*.log)|*.log"
msgstr "%s Arquivos de Log|*.log"
-#: ../bin/custom.c:226
+#: ../bin/custom.c:202
#, fuzzy, c-format
msgid "%s PartsList Files (*.txt)|*.txt"
msgstr "%s Arquivos de Material|*.txt"
-#: ../bin/dbench.c:43
+#: ../bin/dbench.c:38
msgid " L-Girder"
msgstr " Viga mestra em L"
-#: ../bin/dbench.c:43
+#: ../bin/dbench.c:38
msgid " T-Girder"
msgstr "Viga mestra em T"
-#: ../bin/dbench.c:66
+#: ../bin/dbench.c:61
msgid "On Edge"
msgstr "À borda"
-#: ../bin/dbench.c:67
+#: ../bin/dbench.c:62
msgid "Flat"
msgstr "Plano"
-#: ../bin/dbench.c:71
+#: ../bin/dbench.c:67
msgid "Left-Down"
msgstr "Abaixo à esquerda"
-#: ../bin/dbench.c:72
+#: ../bin/dbench.c:68
msgid "Right-Down"
msgstr "Abaixo à direita"
-#: ../bin/dbench.c:73
+#: ../bin/dbench.c:69
msgid "Left-Up"
msgstr "Acima à esquerda"
-#: ../bin/dbench.c:74
+#: ../bin/dbench.c:70
msgid "Right-Up"
msgstr "Acima à direita"
-#: ../bin/dbench.c:75
+#: ../bin/dbench.c:71
msgid "Left-Inverted"
msgstr "Esquerdo invertido"
-#: ../bin/dbench.c:76
+#: ../bin/dbench.c:72
msgid "Right-Inverted"
msgstr "Direito invertido"
-#: ../bin/dbench.c:81
+#: ../bin/dbench.c:78
msgid "Inverted"
msgstr "Invertido"
@@ -3818,702 +3985,693 @@ msgstr ""
"Tipo de bancada não apropriada para %s:\n"
"%s"
-#: ../bin/dbitmap.c:102 ../bin/dbitmap.c:106
+#: ../bin/dbitmap.c:150
+#, fuzzy
+msgid "Drawing tracks to bitmap"
+msgstr "Desenhando layout em bitmap"
+
+#: ../bin/dbitmap.c:187
msgid "Drawn with "
msgstr "Desenhado com "
-#: ../bin/dbitmap.c:116
-msgid "Drawing tracks to BitMap"
-msgstr "Desenhando layout em bitmap"
-
-#: ../bin/dbitmap.c:123
-msgid "Writing BitMap to file"
+#: ../bin/dbitmap.c:229
+#, fuzzy
+msgid "Writing bitmap to file"
msgstr "Gravando bitmap em arquivo"
-#: ../bin/dbitmap.c:144
-msgid "Print Titles"
-msgstr "Imprimir títulos"
+#: ../bin/dbitmap.c:252
+#, fuzzy
+msgid "Layout Titles"
+msgstr "Título do layout"
-#: ../bin/dbitmap.c:144
-msgid "Print Borders"
-msgstr "Imprimir bordas"
+#: ../bin/dbitmap.c:253
+#, fuzzy
+msgid "Borders"
+msgstr "Borda"
-#: ../bin/dbitmap.c:145
-msgid "Print Centerline"
-msgstr "Imprimir linha central"
+#: ../bin/dbitmap.c:254
+#, fuzzy
+msgid "Centerline of Track"
+msgstr "Criar trecho de circunferência"
+
+#: ../bin/dbitmap.c:255
+#, fuzzy
+msgid "Background Image"
+msgstr "Perfil"
+
+#: ../bin/dbitmap.c:262
+#, fuzzy
+msgid "Include "
+msgstr "Ãndice"
+
+#: ../bin/dbitmap.c:264
+msgid "Resolution "
+msgstr ""
# São realmente necessários os espaços no texto?
-#: ../bin/dbitmap.c:152
-msgid " dpi"
+#: ../bin/dbitmap.c:265
+#, fuzzy
+msgid "dpi"
msgstr " PPP (pontos por polegada)"
-#: ../bin/dbitmap.c:154
-msgid "Bitmap : 99999 by 99999 pixels"
+#: ../bin/dbitmap.c:266
+#, fuzzy
+msgid "Bitmap Size "
+msgstr "Tamanho do papel"
+
+#: ../bin/dbitmap.c:268
+#, fuzzy
+msgid "99999 by 99999 pixels"
msgstr "Bitmap : 99999 por 99999 pixels"
-#: ../bin/dbitmap.c:156
-msgid "Approximate file size: 999.9Mb"
-msgstr "Tamanho aproximado do arquivo: 999.9 Mb"
+#: ../bin/dbitmap.c:269
+#, fuzzy
+msgid "Approximate File Size "
+msgstr "Tamanho aproximado do arquivo : %0.0f"
-#: ../bin/dbitmap.c:186
-#, c-format
-msgid "Bitmap : %ld by %ld pixels"
+#: ../bin/dbitmap.c:271
+#, fuzzy
+msgid "999.9Mb"
+msgstr "999,9"
+
+#: ../bin/dbitmap.c:317
+#, fuzzy, c-format
+msgid "%ld by %ld pixels"
msgstr "Bitmap : %ld por %ld pixels"
-#: ../bin/dbitmap.c:190
+#: ../bin/dbitmap.c:339
#, c-format
-msgid "Approximate file size : %0.0f"
-msgstr "Tamanho aproximado do arquivo : %0.0f"
+msgid "%0.0f"
+msgstr ""
-#: ../bin/dbitmap.c:192
+#: ../bin/dbitmap.c:341
#, c-format
-msgid "Approximate file size : %0.1fKb"
-msgstr "Tamanho aproximado do arquivo : %0.1f Kb"
+msgid "%0.1fKb"
+msgstr ""
-#: ../bin/dbitmap.c:194
+#: ../bin/dbitmap.c:343
#, c-format
-msgid "Approximate file size : %0.1fMb"
-msgstr "Tamanho aproximado do arquivo : %0.1f Mb"
+msgid "%0.1fMb"
+msgstr ""
-#: ../bin/dbitmap.c:213
+#: ../bin/dbitmap.c:345
+#, c-format
+msgid "%0.1fGb"
+msgstr ""
+
+#: ../bin/dbitmap.c:436
msgid "Save Bitmap"
msgstr "Gravar bitmap"
-#: ../bin/dbitmap.c:217
-#, fuzzy
-msgid "Bitmap files (*.png)|*.png"
-msgstr "Arquivos bitmap:*.bmp"
+#: ../bin/dbitmap.c:437
+msgid ""
+"Portable Network Graphics format (*.png)|*.png|JPEG format (*.jpg)|*.jpg"
+msgstr ""
-#: ../bin/dbitmap.c:238
-msgid "BitMap"
-msgstr "Bitmap"
+#: ../bin/dbitmap.c:472
+#, fuzzy
+msgid "Export to bitmap"
+msgstr "Exportar para &bitmap"
-#: ../bin/dcar.c:54
+#: ../bin/dcar.c:45
msgid "Truck"
msgstr "Truque"
-#: ../bin/dcar.c:54
+#: ../bin/dcar.c:45
msgid "Body"
msgstr "Carcaça"
-#: ../bin/dcar.c:156 ../bin/dcar.c:2702 ../bin/dcar.c:2706
+#: ../bin/dcar.c:148 ../bin/dcar.c:2860 ../bin/dcar.c:2867
msgid "Unknown"
msgstr "Desconhecido"
-#: ../bin/dcar.c:478
+#: ../bin/dcar.c:481
msgid "Diesel Loco"
msgstr "Locomotiva à diesel"
-#: ../bin/dcar.c:479
+#: ../bin/dcar.c:482
msgid "Steam Loco"
msgstr "Locomotiva à vapor"
-#: ../bin/dcar.c:480
+#: ../bin/dcar.c:483
msgid "Elect Loco"
msgstr "Locomotiva elétrica"
-#: ../bin/dcar.c:481
+#: ../bin/dcar.c:484
msgid "Freight Car"
msgstr "Vagão de carga"
-#: ../bin/dcar.c:482
+#: ../bin/dcar.c:485
msgid "Psngr Car"
msgstr "Vagão de passageiro"
-#: ../bin/dcar.c:483
+#: ../bin/dcar.c:486
msgid "M-O-W"
msgstr "Carros de manutenção de linha"
-#: ../bin/dcar.c:484
+#: ../bin/dcar.c:487
msgid "Other"
msgstr "Outros"
-#: ../bin/dcar.c:1183 ../bin/dcar.c:5078
+#: ../bin/dcar.c:1237 ../bin/dcar.c:5478
msgid "N/A"
msgstr "N/A"
-#: ../bin/dcar.c:1184 ../bin/dcar.c:5083
+#: ../bin/dcar.c:1238 ../bin/dcar.c:5483
msgid "Mint"
msgstr "Perfeito"
-#: ../bin/dcar.c:1185 ../bin/dcar.c:5082
+#: ../bin/dcar.c:1239 ../bin/dcar.c:5482
msgid "Excellent"
msgstr "Excelente"
-#: ../bin/dcar.c:1186 ../bin/dcar.c:5081
+#: ../bin/dcar.c:1240 ../bin/dcar.c:5481
msgid "Good"
msgstr "Bom"
-#: ../bin/dcar.c:1187 ../bin/dcar.c:5080
+#: ../bin/dcar.c:1241 ../bin/dcar.c:5480
msgid "Fair"
msgstr "Médio"
-#: ../bin/dcar.c:1188 ../bin/dcar.c:5079
+#: ../bin/dcar.c:1242 ../bin/dcar.c:5479
msgid "Poor"
msgstr "Regular"
-#: ../bin/dcar.c:1502 ../bin/dpricels.c:45
-#: ../../../../build/work/app/bin/bllnhlp.c:440
+#: ../bin/dcar.c:1580 ../bin/dpricels.c:42
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:518
msgid "Item"
msgstr "Item"
-#: ../bin/dcar.c:2174 ../wlib/gtklib/notice.c:96 ../wlib/mswlib/mswmisc.c:2097
+#: ../bin/dcar.c:2282 ../wlib/mswlib/mswmisc.c:2057
msgid "Information"
msgstr "Informação"
-#: ../bin/dcar.c:2174
+#: ../bin/dcar.c:2282
msgid "Customize"
msgstr "Personalização"
-#: ../bin/dcar.c:2186
+#: ../bin/dcar.c:2296
msgid "Sequential"
msgstr "Sequencial"
-#: ../bin/dcar.c:2186
+#: ../bin/dcar.c:2296
msgid "Repeated"
msgstr "Repetido"
-#: ../bin/dcar.c:2197 ../bin/dcar.c:2199 ../bin/dcar.c:5408
+#: ../bin/dcar.c:2307 ../bin/dcar.c:2309 ../bin/dcar.c:5838
msgid "Prototype"
msgstr "Protótipo"
-#: ../bin/dcar.c:2205
+#: ../bin/dcar.c:2315
msgid "Part"
msgstr "Parte"
-#: ../bin/dcar.c:2207 ../../../../build/work/app/bin/bllnhlp.c:372
-#: ../../../../build/work/app/bin/bllnhlp.c:568
-#: ../../../../build/work/app/bin/bllnhlp.c:569
+#: ../bin/dcar.c:2317 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:419
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:659
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:660
msgid "Part Number"
msgstr "Número da parte"
-#: ../bin/dcar.c:2209
+#: ../bin/dcar.c:2319
msgid "Loco?"
msgstr "Locomotiva?"
-#: ../bin/dcar.c:2213 ../bin/dcar.c:4405
+#: ../bin/dcar.c:2323 ../bin/dcar.c:4734
msgid "Import"
msgstr "Importar"
-#: ../bin/dcar.c:2220
+#: ../bin/dcar.c:2330
msgid "Mode"
msgstr "Modo"
-#: ../bin/dcar.c:2224
+#: ../bin/dcar.c:2334
msgid "Road"
msgstr "Companhia"
-#: ../bin/dcar.c:2226
+#: ../bin/dcar.c:2336
msgid "Reporting Mark"
msgstr "Abreviatura"
-#: ../bin/dcar.c:2228
+#: ../bin/dcar.c:2338
msgid "Number"
msgstr "Número"
-#: ../bin/dcar.c:2232
+#: ../bin/dcar.c:2342
msgid "Car Length"
msgstr "Comprimento do material rodante"
-#: ../bin/dcar.c:2236
+#: ../bin/dcar.c:2346
msgid "Truck Centers"
msgstr "Centro dos truques"
-#: ../bin/dcar.c:2240
+#: ../bin/dcar.c:2350
msgid "Coupler Mount"
msgstr "Engate"
-#: ../bin/dcar.c:2242
+#: ../bin/dcar.c:2352
msgid "Coupled Length"
msgstr "Comprimento engatado"
-#: ../bin/dcar.c:2244 ../bin/dcar.c:4252
+#: ../bin/dcar.c:2354 ../bin/dcar.c:4564
msgid "Coupler Length"
msgstr "Comprimento do engate"
-#: ../bin/dcar.c:2252
+#: ../bin/dcar.c:2362
msgid "Purchase Price"
msgstr "Preço de compra"
-#: ../bin/dcar.c:2254 ../../../../build/work/app/bin/bllnhlp.c:236
+#: ../bin/dcar.c:2364 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:266
msgid "Current Price"
msgstr "Preço atual"
-#: ../bin/dcar.c:2256 ../bin/dcar.c:4369 ../bin/dcar.c:4374
+#: ../bin/dcar.c:2366 ../bin/dcar.c:4696 ../bin/dcar.c:4702
msgid "Condition"
msgstr "Condição"
-#: ../bin/dcar.c:2258
+#: ../bin/dcar.c:2368
msgid "Purchase Date"
msgstr "Data de compra"
-#: ../bin/dcar.c:2260 ../bin/dcar.c:4374
+#: ../bin/dcar.c:2370 ../bin/dcar.c:4702
msgid "Service Date"
msgstr "Data do serviço"
-#: ../bin/dcar.c:2262
+#: ../bin/dcar.c:2372
msgid "Quantity"
msgstr "Quantidade"
-#: ../bin/dcar.c:2264
+#: ../bin/dcar.c:2374
msgid "Numbers"
msgstr "Números"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:371
-#: ../bin/dcar.c:2266 ../bin/dcar.c:4370 ../bin/trknote.c:708
-#: ../../../../build/work/app/i18n/custmsg.h:1265
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:487
+#: ../bin/dcar.c:2376 ../bin/dcar.c:4697 ../bin/trknote.c:594
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1286
msgid "Notes"
msgstr "Notas"
-#: ../bin/dcar.c:2273
+#: ../bin/dcar.c:2383
msgid "Car Part"
msgstr "Parte do material rodante"
-#: ../bin/dcar.c:2274 ../../../../build/work/app/bin/bllnhlp.c:210
-#: ../../../../build/work/app/bin/bllnhlp.c:211
+#: ../bin/dcar.c:2384 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:240
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:241
msgid "Car Prototype"
msgstr "Protótipo do material rodante"
-#: ../bin/dcar.c:2636 ../bin/dcar.c:2953
+#: ../bin/dcar.c:2776 ../bin/dcar.c:3143
msgid "Undecorated"
msgstr "Sem pintura"
-#: ../bin/dcar.c:2694 ../bin/dcar.c:2698 ../bin/paramfilelist.c:376
+#: ../bin/dcar.c:2849 ../bin/dcar.c:2855 ../bin/paramfilelist.c:458
msgid "Custom"
msgstr "Personalizado"
-#: ../bin/dcar.c:2863
+#: ../bin/dcar.c:3049
msgid "Undecorated "
msgstr "Sem pintura "
-#: ../bin/dcar.c:3085
+#: ../bin/dcar.c:3298
#, c-format
msgid "New %s Scale Car"
msgstr "Novo material rodante na escala %s"
-#: ../bin/dcar.c:3086 ../bin/dcar.c:3095 ../bin/dcar.c:3104 ../bin/dcar.c:4285
-#: ../bin/dcar.c:4401 ../bin/paramfilesearch_ui.c:74
+#: ../bin/dcar.c:3299 ../bin/dcar.c:3308 ../bin/dcar.c:3318 ../bin/dcar.c:4598
+#: ../bin/dcar.c:4730 ../bin/paramfilesearch_ui.c:75
msgid "Add"
msgstr "Adicionar"
-#: ../bin/dcar.c:3088
+#: ../bin/dcar.c:3301
#, c-format
msgid "Update %s Scale Car"
msgstr "Atualizar material rodante na escala %s"
-#: ../bin/dcar.c:3089 ../bin/dcar.c:3098 ../bin/dcar.c:3107
-#: ../bin/dcmpnd.c:173
+#: ../bin/dcar.c:3302 ../bin/dcar.c:3312 ../bin/dcar.c:3321
+#: ../bin/dcmpnd.c:178
msgid "Update"
msgstr "Atualizar"
-#: ../bin/dcar.c:3094
+#: ../bin/dcar.c:3307
#, c-format
msgid "New %s Scale Car Part"
msgstr "Novo material rodante na escala %s"
-#: ../bin/dcar.c:3097
+#: ../bin/dcar.c:3310
#, c-format
msgid "Update %s Scale Car Part"
msgstr "Atualizar material rodante na escala %s"
-#: ../bin/dcar.c:3103
+#: ../bin/dcar.c:3317
msgid "New Prototype"
msgstr "Novo protótipo"
-#: ../bin/dcar.c:3106
+#: ../bin/dcar.c:3320
msgid "Update Prototype"
msgstr "Atualizar protótipo"
-#: ../bin/dcar.c:3778
-msgid "Enter a 8 digit numeric date"
-msgstr "Digitar uma data de 8 dígitos numéricos"
+#: ../bin/dcar.c:4009
+#, fuzzy
+msgid "Truck Center Offset plus Truck Centers must be less than Car Length"
+msgstr ""
+"O centro dos truques devem ser menores que o comprimento do material rodante"
-#: ../bin/dcar.c:3781
-msgid "Enter a 8 digit date"
-msgstr "Digitar uma data de 8 dígitos"
+#: ../bin/dcar.c:4070 ../bin/dcar.c:4074
+#, fuzzy
+msgid "Enter a 8 digit numeric date (yyyymmdd)"
+msgstr "Digitar uma data de 8 dígitos numéricos"
-#: ../bin/dcar.c:3783
+#: ../bin/dcar.c:4077
msgid "Enter a date between 19000101 and 21991231"
msgstr "Digitar uma data entre 19000101 e 21991231"
-#: ../bin/dcar.c:3788
+#: ../bin/dcar.c:4083
msgid "Invalid month"
msgstr "Mês inválido"
-#: ../bin/dcar.c:3790
+#: ../bin/dcar.c:4086
msgid "Invalid day"
msgstr "Dia inválido"
-#: ../bin/dcar.c:3882
-msgid "Enter a Prototype name"
-msgstr "Digitar um nome para o protótipo"
-
-#: ../bin/dcar.c:3884
+#: ../bin/dcar.c:4184
msgid "Select or Enter a Manufacturer"
msgstr "Selecionar ou digitar o fabricante"
-#: ../bin/dcar.c:3886
-msgid "Enter a Part Number"
-msgstr "Digitar o número do item"
-
-#: ../bin/dcar.c:3888
-msgid "Enter the Car Length"
-msgstr "Digitar o comprimento do material rodante"
-
-#: ../bin/dcar.c:3890
-msgid "Enter the Car Width"
-msgstr "Digitar a largura do material rodante"
-
-#: ../bin/dcar.c:3892
-msgid "Enter the Truck Centers"
-msgstr "Digitar o centro dos truques"
-
-#: ../bin/dcar.c:3894
-#, fuzzy
-msgid "Truck Center Offset must be greater than 0 or 0"
-msgstr ""
-"O centro dos truques devem ser menores que o comprimento do material rodante"
-
-#: ../bin/dcar.c:3896
-msgid "Truck Centers must be less than Car Length"
-msgstr ""
-"O centro dos truques devem ser menores que o comprimento do material rodante"
-
-#: ../bin/dcar.c:3898
-#, fuzzy
-msgid "Truck Center Offset plus Truck Centers must be less than Car Length"
-msgstr ""
-"O centro dos truques devem ser menores que o comprimento do material rodante"
-
-#: ../bin/dcar.c:3900
-msgid "Enter the Coupled Length or Coupler Length"
-msgstr "Digitar o comprimento engatado ou o comprimento do engate"
-
-#: ../bin/dcar.c:3902
-msgid "Enter the Coupled Length"
-msgstr "Digitar o comprimento engatado"
-
-#: ../bin/dcar.c:3904
-msgid "Enter a item Index"
-msgstr "Digitar um índice para o item"
-
-#: ../bin/dcar.c:3906
-msgid "Purchase Price is not valid"
-msgstr "Preço de compra inválido"
-
-#: ../bin/dcar.c:3908
-msgid "Current Price is not valid"
-msgstr "Preço atual inválido"
-
-#: ../bin/dcar.c:3910
-msgid "Purchase Date is not valid"
-msgstr "Data de compra inválida"
-
-#: ../bin/dcar.c:3912
-msgid "Service Date is not valid"
-msgstr "Data de serviço inválida"
-
-#: ../bin/dcar.c:3915
+#: ../bin/dcar.c:4188
#, c-format
msgid "Item Index %ld duplicated an existing item: updated to new value"
msgstr "Ãndice do item %ld já existente. Atualizado para um novo valor"
-#: ../bin/dcar.c:4111
+#: ../bin/dcar.c:4410
#, c-format
msgid "Added %ld new Cars"
msgstr "%ld novos materiais rodantes adicionados"
-#: ../bin/dcar.c:4113
+#: ../bin/dcar.c:4412
msgid "Added new Car"
msgstr "Adicionar novo material rodante"
-#: ../bin/dcar.c:4116
+#: ../bin/dcar.c:4415
msgid "Updated Car"
msgstr "Atualizar material rodante"
-#: ../bin/dcar.c:4119
+#: ../bin/dcar.c:4418
msgid " and Part"
msgstr " e item"
-#: ../bin/dcar.c:4146
+#: ../bin/dcar.c:4450
#, c-format
msgid "%s Part: %s %s %s %s %s %s"
msgstr "Item %s: %s %s %s %s %s %s"
-#: ../bin/dcar.c:4146 ../bin/dcar.c:4163
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
msgid "Added new"
msgstr "Adicionado um novo"
-#: ../bin/dcar.c:4146 ../bin/dcar.c:4163
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
msgid "Updated"
msgstr "Atualizado"
-#: ../bin/dcar.c:4162
+#: ../bin/dcar.c:4472
#, c-format
msgid "%s Prototype: %s%s."
msgstr "Protótipo %s: %s%s."
-#: ../bin/dcar.c:4164
+#: ../bin/dcar.c:4474
msgid ". Enter new values or press Close"
msgstr ". Digitar novos valores ou clicar em \"Fechar\""
-#: ../bin/dcar.c:4285
+#: ../bin/dcar.c:4598
msgid "New Car Part"
msgstr "Novo item de material rodante"
-#: ../bin/dcar.c:4368 ../bin/dcar.c:4373
-#: ../../../../build/work/app/bin/bllnhlp.c:410
+#: ../bin/dcar.c:4694 ../bin/dcar.c:4700 ../bin/dcustmgm.c:46
+#: ../bin/dlayer.c:561 ../bin/layout.c:662 ../bin/scale.c:845
+msgid "Scale"
+msgstr "Escala"
+
+#: ../bin/dcar.c:4695 ../bin/dcar.c:4701
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:488
msgid "Roadname"
msgstr "Ferrovia"
-#: ../bin/dcar.c:4368
+#: ../bin/dcar.c:4695
+msgid "Rep Marks"
+msgstr "Abreviaturas"
+
+#: ../bin/dcar.c:4695
msgid "Purc Price"
msgstr "Preço de compra"
-#: ../bin/dcar.c:4369 ../bin/dcar.c:4374
+#: ../bin/dcar.c:4696 ../bin/dcar.c:4702
msgid "Curr Price"
msgstr "Preço atual"
-#: ../bin/dcar.c:4369
+#: ../bin/dcar.c:4696
msgid "Purc Date"
msgstr "Data de compra"
-#: ../bin/dcar.c:4369
+#: ../bin/dcar.c:4696
msgid "Srvc Date"
msgstr "Data de serviço"
-#: ../bin/dcar.c:4370
+#: ../bin/dcar.c:4697
msgid "Locat'n"
msgstr "Localização"
-#: ../bin/dcar.c:4373
+#: ../bin/dcar.c:4701
msgid "RepMarks"
msgstr "Abreviaturas"
-#: ../bin/dcar.c:4373
+#: ../bin/dcar.c:4701
msgid "Purch Price"
msgstr "Preço de compra"
-#: ../bin/dcar.c:4374
+#: ../bin/dcar.c:4702
msgid "Purch Date"
msgstr "Data de compra"
-#: ../bin/dcar.c:4391
+#: ../bin/dcar.c:4720
msgid "Sort By"
msgstr "Ordenado por"
-#: ../bin/dcar.c:4399 ../bin/dcontmgm.c:99 ../bin/dcustmgm.c:71
-#: ../bin/dcustmgm.c:108
+#: ../bin/dcar.c:4728 ../bin/dcustmgm.c:58 ../bin/dcustmgm.c:98
+#: ../bin/dcontmgm.c:88
msgid "Edit"
msgstr "Editar"
-#: ../bin/dcar.c:4403 ../bin/dcontmgm.c:101 ../bin/dcustmgm.c:73
-#: ../bin/misc.c:2242
+#: ../bin/dcar.c:4732 ../bin/dcar.c:5654 ../bin/dcustmgm.c:60
+#: ../bin/dcontmgm.c:90 ../bin/menu.c:992
msgid "Delete"
msgstr "Apagar"
-#: ../bin/dcar.c:4407 ../bin/fileio.c:1517
+#: ../bin/dcar.c:4736 ../bin/fileio.c:1631
msgid "Export"
msgstr "Exportar"
-#: ../bin/dcar.c:4409 ../../../../build/work/app/bin/bllnhlp.c:585
+#: ../bin/dcar.c:4738 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:676
msgid "List"
msgstr "Listar"
-#: ../bin/dcar.c:4520 ../bin/dcar.c:5257 ../bin/misc.c:2618
+#: ../bin/dcar.c:4894 ../bin/dcar.c:5686 ../bin/menu.c:1416
msgid "Car Inventory"
msgstr "Invetário de material rodante"
-#: ../bin/dcar.c:4640
+#: ../bin/dcar.c:5026
msgid "List Cars"
msgstr "Listar material rodante"
-#: ../bin/dcar.c:4764 ../bin/dcar.c:4929
+#: ../bin/dcar.c:5150 ../bin/dcar.c:5322
msgid "Import Cars"
msgstr "Importar material rodante"
-#: ../bin/dcar.c:4930 ../bin/dcar.c:5053
+#: ../bin/dcar.c:5323 ../bin/dcar.c:5453
#, fuzzy
msgid "Comma-Separated-Values (*.csv)|*.csv"
msgstr "Valores separados por vírgulas|*.csv"
-#: ../bin/dcar.c:5000 ../bin/dcar.c:5052
+#: ../bin/dcar.c:5395 ../bin/dcar.c:5452
msgid "Export Cars"
msgstr "Exportar material rodante"
-#: ../bin/dcar.c:5086
-msgid "Layout"
-msgstr "Layout"
-
-#: ../bin/dcar.c:5088
+#: ../bin/dcar.c:5494
msgid "Shelf"
msgstr "Prateleira"
-#: ../bin/dcmpnd.c:77 ../bin/dlayer.c:499 ../bin/misc.c:613 ../bin/misc.c:645
+#: ../bin/dcar.c:5653
+#, fuzzy
+msgid "Shelve"
+msgstr "Prateleira"
+
+#: ../bin/dcmpnd.c:73 ../bin/dlayer.c:590 ../bin/menu.c:364 ../bin/menu.c:398
msgid "Load"
msgstr "Carregar"
-#: ../bin/dcmpnd.c:110
+#: ../bin/dcmpnd.c:111
msgid "Updating definitions, please wait"
msgstr "Atualizando definições. Aguardar, por favor"
-#: ../bin/dcmpnd.c:173
+#: ../bin/dcmpnd.c:178
msgid "Update Title"
msgstr "Atualizar título"
-#: ../bin/dcmpnd.c:233
+#: ../bin/dcmpnd.c:244
#, c-format
msgid "End-Point #%d of the selected and actual turnouts are not close"
msgstr "Extremidade No.%d dos AMVs selecionado e corrente não estão próximos"
-#: ../bin/dcmpnd.c:242
+#: ../bin/dcmpnd.c:255
#, c-format
msgid "End-Point #%d of the selected and actual turnouts are not aligned"
msgstr "Extremidade No.%d dos AMVs selecionado e corrente não estão próximos"
-#: ../bin/dcmpnd.c:261
+#: ../bin/dcmpnd.c:274
msgid "The selected Turnout had a differing number of End-Points"
msgstr "O AMV selecionado tem um número diferente de extremidades"
-#: ../bin/dcmpnd.c:327
+#: ../bin/dcmpnd.c:341
msgid "Skip"
msgstr "Próximo"
-#: ../bin/dcmpnd.c:359
+#: ../bin/dcmpnd.c:374
#, c-format
msgid "%d Track(s) refreshed"
msgstr "%d trilho(s) redesenhado(s)"
-#: ../bin/dcmpnd.c:399
+#: ../bin/dcmpnd.c:419
msgid "Refresh Turnout/Structure"
msgstr "Atualizar AMV/estrutura"
-#: ../bin/dcmpnd.c:401
+#: ../bin/dcmpnd.c:423
msgid "Choose a Turnout/Structure to replace:"
msgstr "Escolher um AMV/estrutura para substituir:"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:341
-#: ../bin/dcmpnd.c:411 ../bin/doption.c:132
-#: ../../../../build/work/app/i18n/custmsg.h:1205
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:457
+#: ../bin/dcmpnd.c:436 ../bin/doption.c:94
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1226
msgid "Turnouts"
msgstr "AMVs"
-#: ../bin/dcmpnd.c:411
+#: ../bin/dcmpnd.c:436
msgid "Structures"
msgstr "Estruturas"
-#: ../bin/dcmpnd.c:440
+#: ../bin/dcmpnd.c:467
msgid "Choose another Turnout/Structure to replace:"
msgstr "Escolher um(a) outro(a) AMV/estrutura para substituir:"
-#: ../bin/dcmpnd.c:542
+#: ../bin/dcmpnd.c:582
msgid "Rename Object"
msgstr "Renomear objeto"
-#: ../bin/dcontmgm.c:92
-msgid "Tracks"
-msgstr "Trilhos"
-
-#: ../bin/dcontmgm.c:173
-#, c-format
-msgid "Are you sure you want to delete the %d control element(s)"
-msgstr ""
-
-#: ../bin/dcontmgm.c:176
-#, fuzzy
-msgid "Control Elements"
-msgstr "Elementos de controle de layout"
-
-#: ../bin/dcontmgm.c:299
-#, fuzzy
-msgid "Manage Layout Control Elements"
-msgstr "Elementos de controle de layout"
-
-#: ../bin/dcustmgm.c:67
+#: ../bin/dcustmgm.c:54
#, fuzzy
msgid "Create a new "
msgstr "Cria uma linha poligonal"
-#: ../bin/dcustmgm.c:69
+#: ../bin/dcustmgm.c:56
#, fuzzy
msgid "Go"
msgstr "Dourado"
-#: ../bin/dcustmgm.c:75
+#: ../bin/dcustmgm.c:62
msgid "Move To"
msgstr "Mover para"
-#: ../bin/dcustmgm.c:108
+#: ../bin/dcustmgm.c:98
msgid "Rename"
msgstr "Renomear"
-#: ../bin/dcustmgm.c:189
+#: ../bin/dcustmgm.c:186
msgid "Label"
msgstr "Etiqueta"
-#: ../bin/dcustmgm.c:227
+#: ../bin/dcustmgm.c:225
msgid "Contents Label"
msgstr "Texto da etiqueta"
-#: ../bin/dcustmgm.c:283
+#: ../bin/dcustmgm.c:284
msgid "Move To XTP"
msgstr "Mover para arquivo de parâmetros"
-#: ../bin/dcustmgm.c:284
+#: ../bin/dcustmgm.c:285
#, fuzzy
msgid "Parameter File (*.xtp)|*.xtp"
msgstr "Arquivo de parâmetros|*.xtp"
-#: ../bin/dcustmgm.c:395
+#: ../bin/dcustmgm.c:407
#, fuzzy
msgid "Manage custom designed parts"
msgstr "Manipula entradas do editor personalizado"
-#: ../bin/dease.c:67
+#: ../bin/dcontmgm.c:80
+msgid "Tracks"
+msgstr "Trilhos"
+
+#: ../bin/dcontmgm.c:167
+#, c-format
+msgid "Are you sure you want to delete the %d control element(s)"
+msgstr ""
+
+#: ../bin/dcontmgm.c:172
+#, fuzzy
+msgid "Control Elements"
+msgstr "Elementos de controle de layout"
+
+#: ../bin/dcontmgm.c:308
+#, fuzzy
+msgid "Manage Layout Control Elements"
+msgstr "Elementos de controle de layout"
+
+#: ../bin/dease.c:68
msgid "Sharp"
msgstr "Agudo"
-#: ../bin/dease.c:67
+#: ../bin/dease.c:68
msgid "Broad"
msgstr "Largo"
-#: ../bin/dease.c:67
+#: ../bin/dease.c:68
msgid "Cornu"
msgstr ""
-#: ../bin/dease.c:74
+#: ../bin/dease.c:76
msgid "Value"
msgstr "Valor"
-#: ../bin/dease.c:75 ../bin/tease.c:525
+#: ../bin/dease.c:77 ../bin/tease.c:530
msgid "R"
msgstr "D"
-#: ../bin/dease.c:77 ../bin/tease.c:526
+#: ../bin/dease.c:79 ../bin/tease.c:531
msgid "L"
msgstr "E"
-#: ../bin/dease.c:242
+#: ../bin/dease.c:250
msgid "Easement"
msgstr "Curva de transição"
-#: ../bin/denum.c:49
+#: ../bin/denum.c:44
msgid "Prices"
msgstr "Preços"
-#: ../bin/denum.c:54
+#: ../bin/denum.c:45 ../bin/denum.c:139
+#, fuzzy
+msgid "Indexes"
+msgstr "Ãndice"
+
+#: ../bin/denum.c:50
msgid "Save As ..."
msgstr "Salvar como..."
-#: ../bin/denum.c:134 ../bin/denum.c:189 ../bin/denum.c:224
+#: ../bin/denum.c:135 ../bin/denum.c:198 ../bin/denum.c:236
msgid "Each"
msgstr "Cada"
-#: ../bin/denum.c:148 ../bin/denum.c:149
+#: ../bin/denum.c:152 ../bin/denum.c:154
msgid "Parts List"
msgstr "Lista de itens"
-#: ../bin/denum.c:154
+#: ../bin/denum.c:160
#, c-format
msgid ""
"%s Parts List\n"
@@ -4522,810 +4680,929 @@ msgstr ""
"Lista de itens %s\n"
"\n"
-#: ../bin/denum.c:189 ../bin/denum.c:226 ../bin/denum.c:235
+#: ../bin/denum.c:199 ../bin/denum.c:238 ../bin/denum.c:248
msgid "Extended"
msgstr "Subtotal"
-#: ../bin/denum.c:235 ../bin/denum.c:238
+#: ../bin/denum.c:247 ../bin/denum.c:251
msgid "Total"
msgstr "Total"
-#: ../bin/dlayer.c:487
+#: ../bin/dlayer.c:541
+#, fuzzy
+msgid "Select Layer:"
+msgstr "&Selecionar camada atual"
+
+#: ../bin/dlayer.c:547
#, fuzzy
msgid "Use Color"
msgstr "Cor %s"
-#: ../bin/dlayer.c:489
+#: ../bin/dlayer.c:549
msgid "Visible"
msgstr "Visível"
-#: ../bin/dlayer.c:491
+#: ../bin/dlayer.c:551
msgid "Frozen"
msgstr "Congelado"
-#: ../bin/dlayer.c:493
+#: ../bin/dlayer.c:553
msgid "On Map"
msgstr "No mapa"
-#: ../bin/dlayer.c:495
+#: ../bin/dlayer.c:555
#, fuzzy
msgid "Module"
msgstr "Modo"
-#: ../bin/dlayer.c:498
-msgid "Personal Preferences"
-msgstr "Preferências pessoais"
+#: ../bin/dlayer.c:557
+#, fuzzy
+msgid "No Button"
+msgstr "Botões de desfazer"
-#: ../bin/dlayer.c:500 ../bin/macro.c:1419
-msgid "Save"
-msgstr "Salvar"
+#: ../bin/dlayer.c:559
+#, fuzzy
+msgid "Inherit"
+msgstr "Invertido"
-#: ../bin/dlayer.c:501
-msgid "Defaults"
+# Seria possível remover os espaços do texto original?
+#: ../bin/dlayer.c:563 ../bin/layout.c:664
+msgid " Gauge"
+msgstr " Bitola"
+
+#: ../bin/dlayer.c:565 ../bin/layout.c:666
+msgid "Min Track Radius"
+msgstr "Raio mínimo"
+
+#: ../bin/dlayer.c:567 ../bin/layout.c:667
+#, fuzzy
+msgid " Max Track Grade (%)"
+msgstr "Inclinação máxima (%)"
+
+#: ../bin/dlayer.c:569
+#, fuzzy
+msgid "Tie Length"
+msgstr "Comprimento total"
+
+#: ../bin/dlayer.c:571
+#, fuzzy
+msgid " Width"
+msgstr "Largura"
+
+#: ../bin/dlayer.c:573
+#, fuzzy
+msgid " Spacing"
+msgstr "Espaçamento"
+
+#: ../bin/dlayer.c:575
+#, fuzzy
+msgid "Layer Actions"
+msgstr "Botões das camadas"
+
+#: ../bin/dlayer.c:577
+#, fuzzy
+msgid "Add Layer"
+msgstr "Camada"
+
+#: ../bin/dlayer.c:579
+#, fuzzy
+msgid "Delete Layer"
+msgstr "&Selecionar camada atual"
+
+#: ../bin/dlayer.c:581
+#, fuzzy
+msgid "Default Values"
msgstr "Valores iniciais"
-#: ../bin/dlayer.c:502
+#: ../bin/dlayer.c:582
msgid "Number of Layer Buttons"
msgstr "Número de botões de camadas"
-#: ../bin/dlayer.c:519 ../bin/dlayer.c:987 ../bin/dlayer.c:1000
-#: ../bin/dlayer.c:1051
+#: ../bin/dlayer.c:584
+#, fuzzy
+msgid "Linked Layers"
+msgstr "Muda camadas"
+
+#: ../bin/dlayer.c:586
+msgid "Settings when Current"
+msgstr ""
+
+#: ../bin/dlayer.c:588
+#, fuzzy
+msgid "Object Count:"
+msgstr "Renomear objeto"
+
+#: ../bin/dlayer.c:589
+#, fuzzy
+msgid "All Layer Preferences"
+msgstr "Preferências"
+
+#: ../bin/dlayer.c:591 ../bin/macro.c:1431
+msgid "Save"
+msgstr "Salvar"
+
+#: ../bin/dlayer.c:592
+msgid "Defaults"
+msgstr "Valores iniciais"
+
+#: ../bin/dlayer.c:710 ../bin/dlayer.c:1563 ../bin/dlayer.c:1581
+#: ../bin/dlayer.c:1651
msgid "Main"
msgstr "Principal"
-#: ../bin/dlayer.c:632 ../bin/dlayer.c:925 ../bin/dlayer.c:1003
-#: ../bin/dlayer.c:1053 ../bin/dlayer.c:1303
+#: ../bin/dlayer.c:842
+msgid "Layer must not have any objects in it."
+msgstr ""
+
+#: ../bin/dlayer.c:1007 ../bin/dlayer.c:1452 ../bin/dlayer.c:1584
+#: ../bin/dlayer.c:1653
msgid "Show/Hide Layer"
msgstr "Mostrar/Ocultar camada"
-#: ../bin/dlayer.c:1124
+#: ../bin/dlayer.c:2071
msgid "Layers"
msgstr "Camadas"
-#: ../bin/doption.c:95
-msgid "Turning off AutoSave"
-msgstr ""
-
-#: ../bin/doption.c:104
+#: ../bin/dlayer.c:2334 ../bin/menu.c:960
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:17
#, fuzzy
-msgid "Turning on CheckPointing"
-msgstr "Salvando arquivo temporário."
+msgid "Show/Hide Background"
+msgstr "Mostrar/Ocultar camada"
-#: ../bin/doption.c:130
+#: ../bin/doption.c:92
msgid "Auto Pan"
msgstr "Auto panorâmico"
-#: ../bin/doption.c:132
+#: ../bin/doption.c:94
msgid "All"
msgstr "Tudo"
-#: ../bin/doption.c:133
+#: ../bin/doption.c:95
msgid "Thick"
msgstr ""
-#: ../bin/doption.c:133
+#: ../bin/doption.c:95
#, fuzzy
msgid "Exception"
msgstr "Trecho excepcional"
-#: ../bin/doption.c:134
+#: ../bin/doption.c:96
msgid "Outline"
msgstr "Traçado"
-#: ../bin/doption.c:135
+#: ../bin/doption.c:97
msgid "Off"
msgstr "Desligado"
-#: ../bin/doption.c:135
+#: ../bin/doption.c:97
msgid "On"
msgstr "Ligado"
-#: ../bin/doption.c:136
+#: ../bin/doption.c:98
msgid "Track Descriptions"
msgstr "Descrição dos trilhos"
-#: ../bin/doption.c:136
+#: ../bin/doption.c:98
msgid "Lengths"
msgstr "Comprimentos"
-#: ../bin/doption.c:136
+#: ../bin/doption.c:98
msgid "EndPt Elevations"
msgstr "Extremidades das elevações"
-#: ../bin/doption.c:136
+#: ../bin/doption.c:98
msgid "Track Elevations"
msgstr "Elevações dos trilhos"
-#: ../bin/doption.c:136
+#: ../bin/doption.c:98
msgid "Cars"
msgstr "Material rodante"
-#: ../bin/doption.c:137 ../bin/doption.c:138
+#: ../bin/doption.c:99 ../bin/doption.c:100
msgid "Descr"
msgstr "Descrição"
-#: ../bin/doption.c:138
+#: ../bin/doption.c:100
msgid "Manuf"
msgstr "Fabricante"
-#: ../bin/doption.c:139 ../bin/doption.c:140
+#: ../bin/doption.c:101 ../bin/doption.c:102
#, fuzzy
msgid "Object"
msgstr "Renomear objeto"
-#: ../bin/doption.c:141
+#: ../bin/doption.c:103
msgid "Live Map"
msgstr "Mapa em \"tempo real\""
-#: ../bin/doption.c:142
+#: ../bin/doption.c:104
msgid "Hide Trains On Hidden Track"
msgstr "Ocultar trens em trecho escondido"
-#: ../bin/doption.c:143
+#: ../bin/doption.c:105
msgid "Constrain Drawing Area to Room boundaries"
msgstr ""
-#: ../bin/doption.c:150
+#: ../bin/doption.c:106
+msgid "Don't Hide System Cursor when program cursor is active"
+msgstr ""
+
+#: ../bin/doption.c:110
#, fuzzy
msgid "Color Track"
msgstr "Trecho curvo"
-#: ../bin/doption.c:151
+#: ../bin/doption.c:111
#, fuzzy
msgid "Color Draw"
msgstr "Cor"
-#: ../bin/doption.c:152
+#: ../bin/doption.c:112
msgid "Draw Tunnel"
msgstr "Desenhar túnel"
-#: ../bin/doption.c:153
+#: ../bin/doption.c:113
msgid "Draw EndPts"
msgstr "Desenhar extremidades"
-#: ../bin/doption.c:154
+#: ../bin/doption.c:114
#, fuzzy
msgid "Draw Unconnected EndPts"
msgstr "Desenhar extremidades"
-#: ../bin/doption.c:155
+#: ../bin/doption.c:115
msgid "Draw Ties"
msgstr "Desenhar dormentes"
-#: ../bin/doption.c:156
+#: ../bin/doption.c:116
#, fuzzy
msgid "Draw Centers"
msgstr "Arrastar ao centro"
-#: ../bin/doption.c:157
+#: ../bin/doption.c:117
msgid "Two Rail Scale"
msgstr "Escala de duas linhas"
-#: ../bin/doption.c:158
+#: ../bin/doption.c:118
msgid "Map Scale"
msgstr "Mapa da escala"
-#: ../bin/doption.c:162
+#: ../bin/doption.c:124
msgid "Label Enable"
msgstr "Etiqueta disponível"
-#: ../bin/doption.c:163
+#: ../bin/doption.c:125
msgid "Label Scale"
msgstr "Etiqueta de escala"
-#: ../bin/doption.c:164
+#: ../bin/doption.c:126
msgid "Label Font Size"
msgstr "Etiqueta do tamanho da fonte"
-#: ../bin/doption.c:165
+#: ../bin/doption.c:127
msgid "Hot Bar Labels"
msgstr "Etiquetas do barra de itens"
-#: ../bin/doption.c:166
+#: ../bin/doption.c:128
msgid "Layout Labels"
msgstr "Etiquetas do layout"
-#: ../bin/doption.c:167
+#: ../bin/doption.c:129
msgid "List Labels"
msgstr "Etiquetas das listas"
-#: ../bin/doption.c:170
+#: ../bin/doption.c:132
msgid "Car Labels"
msgstr "Etiquetas do material rodante"
-#: ../bin/doption.c:171
+#: ../bin/doption.c:133
msgid "Train Update Delay"
msgstr "Tempo de atualização do trem"
-#: ../bin/doption.c:199
+#: ../bin/doption.c:176
+msgid "Turning off AutoSave"
+msgstr ""
+
+#: ../bin/doption.c:187
+#, fuzzy
+msgid "Turning on CheckPointing"
+msgstr "Salvando arquivo temporário."
+
+#: ../bin/doption.c:201
msgid "Display Options"
msgstr "Opções de tela"
-#: ../bin/doption.c:200
+#: ../bin/doption.c:203
msgid "Proto"
msgstr "Protótipo"
-#: ../bin/doption.c:201
+#: ../bin/doption.c:205
msgid "Proto/Manuf"
msgstr "Protótipo / fabricante"
-#: ../bin/doption.c:202
+#: ../bin/doption.c:208
msgid "Proto/Manuf/Part Number"
msgstr "Protótipo / fabricante / número do item"
-#: ../bin/doption.c:203
+#: ../bin/doption.c:210
msgid "Proto/Manuf/Partno/Item"
msgstr "Protótipo / fabricante / número do item / item"
-#: ../bin/doption.c:204
+#: ../bin/doption.c:211
msgid "Manuf/Proto"
msgstr "Fabricante / protótipo"
-#: ../bin/doption.c:205
+#: ../bin/doption.c:214
msgid "Manuf/Proto/Part Number"
msgstr "Fabricante / protótipo / número do item"
-#: ../bin/doption.c:206
+#: ../bin/doption.c:216
msgid "Manuf/Proto/Partno/Item"
msgstr "Fabricante / protótipo / número do item / item"
-#: ../bin/doption.c:236
+#: ../bin/doption.c:246
msgid "Single item selected, +Ctrl Add to selection"
msgstr ""
-#: ../bin/doption.c:236
+#: ../bin/doption.c:246
msgid "Add to selection, +Ctrl Single item selected"
msgstr ""
-#: ../bin/doption.c:237
+#: ../bin/doption.c:247
#, fuzzy
msgid "Deselect all on select nothing"
msgstr "Deseleciona todos os objetos"
-#: ../bin/doption.c:242
+#: ../bin/doption.c:252
msgid "Normal: Command List, Shift: Command Options"
msgstr "Normal: lista de comandos, Shift: opções dos comandos"
-#: ../bin/doption.c:242
+#: ../bin/doption.c:252
msgid "Normal: Command Options, Shift: Command List"
msgstr "Normal: opções dos comandos, Shift: lista de comandos"
-#: ../bin/doption.c:245
+#: ../bin/doption.c:255
msgid "Default Command"
msgstr "Comando padrão"
-#: ../bin/doption.c:247
+#: ../bin/doption.c:257
msgid "Hide Selection Window"
msgstr "Ocultar janela de seleção"
-#: ../bin/doption.c:249
+#: ../bin/doption.c:259
msgid "Right Click"
msgstr "Clicar com o botão direito"
-#: ../bin/doption.c:250
+#: ../bin/doption.c:260
#, fuzzy
msgid "Select Mode"
msgstr "Seleciona objetos"
-#: ../bin/doption.c:275
+#: ../bin/doption.c:286
msgid "Command Options"
msgstr "Opções de comandos"
-#: ../bin/doption.c:298
+#: ../bin/doption.c:310
+msgid "16 px"
+msgstr ""
+
+#: ../bin/doption.c:310
+msgid "24 px"
+msgstr ""
+
+#: ../bin/doption.c:310
+msgid "32 px"
+msgstr ""
+
+#: ../bin/doption.c:311
msgid "English"
msgstr "Inglês"
-#: ../bin/doption.c:298
+#: ../bin/doption.c:311
msgid "Metric"
msgstr "Métrico"
-#: ../bin/doption.c:299
+#: ../bin/doption.c:312
msgid "Polar"
msgstr "Polar"
-#: ../bin/doption.c:299
+#: ../bin/doption.c:312
msgid "Cartesian"
msgstr "Cartesiano"
-#: ../bin/doption.c:300
+#: ../bin/doption.c:313
msgid "Balloon Help"
msgstr "Balão de ajuda"
-#: ../bin/doption.c:301
+#: ../bin/doption.c:314
msgid "Show FlexTrack in HotBar"
msgstr ""
-#: ../bin/doption.c:302
+#: ../bin/doption.c:315
msgid "Load Last Layout"
msgstr "Carregar último layout"
-#: ../bin/doption.c:302
+#: ../bin/doption.c:315
msgid "Start New Layout"
msgstr "Começar um novo layout"
-#: ../bin/doption.c:305
+#: ../bin/doption.c:318
+#, fuzzy
+msgid "Icon Size"
+msgstr "Tamanha da fonte"
+
+#: ../bin/doption.c:319
msgid "Angles"
msgstr "Ângulos"
-#: ../bin/doption.c:306
+#: ../bin/doption.c:321
msgid "Units"
msgstr "Unidades"
-#: ../bin/doption.c:308
+#: ../bin/doption.c:323
msgid "Length Format"
msgstr "Formato do comprimento"
-#: ../bin/doption.c:309
+#: ../bin/doption.c:324
msgid "Min Track Length"
msgstr "Comprimento do trecho mínimo"
-#: ../bin/doption.c:310
+#: ../bin/doption.c:325
msgid "Connection Distance"
msgstr "Distância de conexão"
-#: ../bin/doption.c:311
+#: ../bin/doption.c:326
msgid "Connection Angle"
msgstr "Ângulo de conexão"
-#: ../bin/doption.c:312
+#: ../bin/doption.c:327
msgid "Turntable Angle"
msgstr "Ângulo do girador de locomotivas"
-#: ../bin/doption.c:313
+#: ../bin/doption.c:328
msgid "Max Coupling Speed"
msgstr "Velocidade máxima de engate"
-#: ../bin/doption.c:316
+#: ../bin/doption.c:331
msgid "Drag Distance"
msgstr "Distância para arrastar"
-#: ../bin/doption.c:317
+#: ../bin/doption.c:332
msgid "Drag Timeout"
msgstr "Tempo máximo para arrastar"
-#: ../bin/doption.c:318
+#: ../bin/doption.c:333
msgid "Min Grid Spacing"
msgstr "Espaço mínimo do gride"
-#: ../bin/doption.c:320
+#: ../bin/doption.c:335
#, fuzzy
msgid "Check Point Frequency"
msgstr "Freqüência de salvamento automático."
-#: ../bin/doption.c:322
+#: ../bin/doption.c:337
msgid "Autosave Checkpoint Frequency"
msgstr ""
-#: ../bin/doption.c:323
+#: ../bin/doption.c:338
msgid "On Program Startup"
msgstr "Ao iniciar programa"
-#: ../bin/doption.c:333 ../bin/doption.c:337 ../bin/doption.c:354
+#: ../bin/doption.c:348 ../bin/doption.c:352 ../bin/doption.c:370
msgid "999.999"
msgstr "999,999"
-#: ../bin/doption.c:334
+#: ../bin/doption.c:349
#, fuzzy
msgid "999.999999"
msgstr "999,999"
-#: ../bin/doption.c:335
+#: ../bin/doption.c:350
#, fuzzy
msgid "999.99999"
msgstr "999,999"
-#: ../bin/doption.c:336
+#: ../bin/doption.c:351
#, fuzzy
msgid "999.9999"
msgstr "999,999"
-#: ../bin/doption.c:338 ../bin/doption.c:355
+#: ../bin/doption.c:353 ../bin/doption.c:371
msgid "999.99"
msgstr "999,99"
-#: ../bin/doption.c:339 ../bin/doption.c:356
+#: ../bin/doption.c:354 ../bin/doption.c:372
msgid "999.9"
msgstr "999,9"
-#: ../bin/doption.c:340
+#: ../bin/doption.c:355
msgid "999 7/8"
msgstr "999 7/8"
-#: ../bin/doption.c:341
+#: ../bin/doption.c:356
msgid "999 63/64"
msgstr "999 63/64"
-#: ../bin/doption.c:342
+#: ../bin/doption.c:357
msgid "999' 11.999\""
msgstr "999′ 11,999″"
-#: ../bin/doption.c:343
+#: ../bin/doption.c:358
msgid "999' 11.99\""
msgstr "999′ 11,99″"
-#: ../bin/doption.c:344
+#: ../bin/doption.c:359
msgid "999' 11.9\""
msgstr "999′ 11,9″"
-#: ../bin/doption.c:345
+#: ../bin/doption.c:360
msgid "999' 11 7/8\""
msgstr "999′ 11 7/8″"
-#: ../bin/doption.c:346
+#: ../bin/doption.c:361
msgid "999' 11 63/64\""
msgstr "999′ 11 63/64″"
-#: ../bin/doption.c:347
+#: ../bin/doption.c:362
msgid "999ft 11.999in"
msgstr "999 ft 11,999 in"
-#: ../bin/doption.c:348
+#: ../bin/doption.c:363
msgid "999ft 11.99in"
msgstr "999 ft 11,99 in"
-#: ../bin/doption.c:349
+#: ../bin/doption.c:364
msgid "999ft 11.9in"
msgstr "999 ft 11,9 in"
-#: ../bin/doption.c:350
+#: ../bin/doption.c:365
msgid "999ft 11 7/8in"
msgstr "999 ft 11 7/8 in"
-#: ../bin/doption.c:351
+#: ../bin/doption.c:366
msgid "999ft 11 63/64in"
msgstr "999 ft 11 63/64 in"
-#: ../bin/doption.c:357
+#: ../bin/doption.c:373
msgid "999.999mm"
msgstr "999,999 mm"
-#: ../bin/doption.c:358
+#: ../bin/doption.c:374
msgid "999.99mm"
msgstr "999,99 mm"
-#: ../bin/doption.c:359
+#: ../bin/doption.c:375
msgid "999.9mm"
msgstr "999,9 mm"
-#: ../bin/doption.c:360
+#: ../bin/doption.c:376
msgid "999.999cm"
msgstr "999,999 cm"
-#: ../bin/doption.c:361
+#: ../bin/doption.c:377
msgid "999.99cm"
msgstr "999,99 cm"
-#: ../bin/doption.c:362
+#: ../bin/doption.c:378
msgid "999.9cm"
msgstr "999,9 cm"
-#: ../bin/doption.c:363
+#: ../bin/doption.c:379
msgid "999.999m"
msgstr "999,999 m"
-#: ../bin/doption.c:364
+#: ../bin/doption.c:380
msgid "999.99m"
msgstr "999,99 m"
-#: ../bin/doption.c:365
+#: ../bin/doption.c:381
msgid "999.9m"
msgstr "999,9 m"
-#: ../bin/doption.c:492
+#: ../bin/doption.c:516
msgid "Preferences"
msgstr "Preferências"
-#: ../bin/doption.c:531
+#: ../bin/doption.c:560
msgid "Marker"
msgstr "Marcador"
-#: ../bin/doption.c:532
+#: ../bin/doption.c:561
msgid "Border"
msgstr "Borda"
-#: ../bin/doption.c:533
+#: ../bin/doption.c:562
msgid "Primary Axis"
msgstr "Eixo primário"
-#: ../bin/doption.c:534
+#: ../bin/doption.c:563
msgid "Secondary Axis"
msgstr "Eixo secundário"
-#: ../bin/doption.c:535
+#: ../bin/doption.c:564
msgid "Normal Track"
msgstr "Trilho normal"
-#: ../bin/doption.c:536
+#: ../bin/doption.c:565
msgid "Selected Track"
msgstr "Trilho selecionado"
-#: ../bin/doption.c:537
+#: ../bin/doption.c:566
msgid "Profile Path"
msgstr "Perfil"
-#: ../bin/doption.c:538
+#: ../bin/doption.c:567
msgid "Exception Track"
msgstr "Trecho excepcional"
-#: ../bin/doption.c:539
+#: ../bin/doption.c:568
msgid "Track Ties"
msgstr "Dormentes"
-#: ../bin/dpricels.c:45
+#: ../bin/doption.c:569
+#, fuzzy
+msgid "Bridge Base"
+msgstr "Trilhos forçados"
+
+#: ../bin/doption.c:570
+#, fuzzy
+msgid "Track Roadbed"
+msgstr "Raio mínimo"
+
+#: ../bin/dpricels.c:42
msgid "Price"
msgstr "Preço"
-#: ../bin/dpricels.c:59
+#: ../bin/dpricels.c:56
msgid "Flex Track"
msgstr "Trilho flexível"
-#: ../bin/dpricels.c:60
+#: ../bin/dpricels.c:57
msgid "costs"
msgstr "Custos"
-#: ../bin/dpricels.c:154
+#: ../bin/dpricels.c:166
msgid "Price List"
msgstr "Lista de preços"
-#: ../bin/dprmfile.c:73 ../bin/paramfilesearch_ui.c:60
+#: ../bin/dprmfile.c:66 ../bin/paramfilesearch_ui.c:50
msgid "Show File Names"
msgstr "Mostrar nomes dos arquivos"
-#: ../bin/dprmfile.c:82 ../bin/paramfilesearch_ui.c:76
+#: ../bin/dprmfile.c:75 ../bin/paramfilesearch_ui.c:77
#, fuzzy
msgid "Select all"
msgstr "Selecionar &tudo"
-#: ../bin/dprmfile.c:84
+#: ../bin/dprmfile.c:77
msgid "Favorite"
msgstr ""
-#: ../bin/dprmfile.c:87
-msgid "Search Library"
-msgstr ""
+#: ../bin/dprmfile.c:80
+#, fuzzy
+msgid "Library..."
+msgstr "Camadas"
-#: ../bin/dprmfile.c:88 ../bin/layout.c:471
-msgid "Browse ..."
+#: ../bin/dprmfile.c:81
+#, fuzzy
+msgid "Browse..."
msgstr "Pesquisar..."
-#: ../bin/dprmfile.c:331
+#: ../bin/dprmfile.c:328
#, fuzzy, c-format
msgid "%d parameter files reloaded."
msgstr "Lendo arquivos de parâmetros"
-#: ../bin/dprmfile.c:333
+#: ../bin/dprmfile.c:330
#, fuzzy
msgid "One parameter file reloaded."
msgstr "Lendo arquivos de parâmetros"
-#: ../bin/dprmfile.c:434
+#: ../bin/dprmfile.c:431
msgid "Parameter Files"
msgstr "Lista de parâmetros"
-#: ../bin/dprmfile.c:437 ../bin/paramfilesearch_ui.c:405
+#: ../bin/dprmfile.c:434
msgid "Load Parameters"
msgstr "Carregar parâmetros"
-#: ../bin/dprmfile.c:437 ../bin/paramfilesearch_ui.c:405
+#: ../bin/dprmfile.c:434
#, fuzzy
msgid "Parameter files (*.xtp)|*.xtp"
msgstr "Arquivos de parâmetros|*.xtp"
-#: ../bin/draw.c:2134
+#: ../bin/draw.c:2352
msgid "Macro Zoom Mode"
msgstr ""
-#: ../bin/draw.c:2141
+#: ../bin/draw.c:2360
msgid "Scale 1:1 - Use Ctrl+ to go to Macro Zoom Mode"
msgstr ""
-#: ../bin/draw.c:2145
+#: ../bin/draw.c:2365
msgid "Preset Zoom In Value selected. Shift+Ctrl+PageDwn to reset value"
msgstr ""
-#: ../bin/draw.c:2149
+#: ../bin/draw.c:2369
#, fuzzy, c-format
msgid "Zoom In Program Value %ld:1, Shift+PageDwn to use"
msgstr "Aproximar valor do programa %ld:1"
-#: ../bin/draw.c:2187
+#: ../bin/draw.c:2450
msgid "At Maximum Zoom Out"
msgstr ""
-#: ../bin/draw.c:2192
+#: ../bin/draw.c:2457
msgid "Preset Zoom Out Value selected. Shift+Ctrl+PageUp to reset value"
msgstr ""
-#: ../bin/draw.c:2196
+#: ../bin/draw.c:2461
#, fuzzy, c-format
msgid "Zoom Out Program Value %ld:1 set, Shift+PageUp to use"
msgstr "Afastar valor do programa %ld:1"
-#: ../bin/draw.c:2893
+#: ../bin/draw.c:3281
msgid "Map"
msgstr "Mapa"
-#: ../bin/draw.c:2941
+#: ../bin/draw.c:3323
msgid ""
"Left-Drag to pan, Ctrl+Left-Drag to zoom, 0 to set origin to zero, 1-9 to "
"zoom#, e to set to extents"
msgstr ""
-#: ../bin/draw.c:2948
+#: ../bin/draw.c:3330
#, fuzzy
msgid "Pan Mode - drag point to new position"
msgstr "Posicionar %s e desenhar na posição"
-#: ../bin/draw.c:2955
+#: ../bin/draw.c:3337
msgid "Zoom Mode - drag area to zoom"
msgstr ""
-#: ../bin/draw.c:2981
+#: ../bin/draw.c:3365
msgid "Can't move any further in that direction"
msgstr ""
-#: ../bin/draw.c:2983
+#: ../bin/draw.c:3368
msgid "Left click to pan, right click to zoom, 'o' for origin, 'e' for extents"
msgstr ""
-#: ../bin/draw.c:3022
+#: ../bin/draw.c:3407
msgid ""
"Left Drag to Pan, +CTRL to Zoom, 0 to set Origin to 0,0, 1-9 to Zoom#, e to "
"set to Extent"
msgstr ""
-#: ../bin/draw.c:3102
+#: ../bin/draw.c:3486
#, fuzzy
msgid "Pan/Zoom"
msgstr "&Zoom"
-#: ../bin/draw.c:3113
+#: ../bin/draw.c:3502
msgid "Zoom to 1:1 - '1'"
msgstr ""
-#: ../bin/draw.c:3114
+#: ../bin/draw.c:3504
msgid "Zoom to 1:2 - '2'"
msgstr ""
-#: ../bin/draw.c:3115
+#: ../bin/draw.c:3506
msgid "Zoom to 1:3 - '3'"
msgstr ""
-#: ../bin/draw.c:3116
+#: ../bin/draw.c:3508
msgid "Zoom to 1:4 - '4'"
msgstr ""
-#: ../bin/draw.c:3117
+#: ../bin/draw.c:3510
msgid "Zoom to 1:5 - '5'"
msgstr ""
-#: ../bin/draw.c:3118
+#: ../bin/draw.c:3512
msgid "Zoom to 1:6 - '6'"
msgstr ""
-#: ../bin/draw.c:3119
+#: ../bin/draw.c:3514
msgid "Zoom to 1:7 - '7'"
msgstr ""
-#: ../bin/draw.c:3120
+#: ../bin/draw.c:3516
msgid "Zoom to 1:8 - '8'"
msgstr ""
-#: ../bin/draw.c:3121
+#: ../bin/draw.c:3518
msgid "Zoom to 1:9 - '9'"
msgstr ""
-#: ../bin/draw.c:3125
+#: ../bin/draw.c:3524
msgid "Pan center here - 'c'"
msgstr ""
-#: ../bin/drawgeom.c:76 ../bin/drawgeom.c:91
+#: ../bin/drawgeom.c:72 ../bin/drawgeom.c:89
msgid "Create Lines"
msgstr "Criar linhas"
-#: ../bin/drawgeom.c:291
-msgid "+Shift to lock to nearby objects"
+#: ../bin/drawgeom.c:443
+msgid "Drag next point, +Alt reverse Magnetic Snap or +Ctrl lock to 90 deg"
msgstr ""
-#: ../bin/drawgeom.c:293
-msgid "+Shift to not lock to nearby objects"
-msgstr ""
-
-#: ../bin/drawgeom.c:393
-msgid "Drag to next point, +Shift to lock to object, +Ctrl to lock to 90deg"
+#: ../bin/drawgeom.c:454
+msgid ""
+"Drag next point, +Alt reverse Magnetic Snap, or +Ctrl to lock to 90 degrees"
msgstr ""
-#: ../bin/drawgeom.c:403
-msgid "Drag to place next end point"
-msgstr "Arrastar para posicionar próxima extremidade"
-
-#: ../bin/drawgeom.c:434
+#: ../bin/drawgeom.c:487
msgid "Drag to set radius"
msgstr "Arrastar para definir o raio"
-#: ../bin/drawgeom.c:447
+#: ../bin/drawgeom.c:501
msgid "Drag set box size"
msgstr "Arrastar para ajustar tamanho do retângulo"
-#: ../bin/drawgeom.c:488
-msgid "+Shift - lock to close object, +Ctrl - lock to 90 deg"
+#: ../bin/drawgeom.c:543
+msgid "+Alt - reverse Magnetic Snap or +Ctrl - lock to 90 deg"
msgstr ""
-#: ../bin/drawgeom.c:536 ../bin/drawgeom.c:592
+#: ../bin/drawgeom.c:625 ../bin/drawgeom.c:691
#, c-format
msgid "Length = %s, Angle = %0.2f"
msgstr "Comprimento = %s, Ângulo = %0.2f"
# Ajustar software para imprimir virgulas ao invés de pontos decimais.
-#: ../bin/drawgeom.c:613
+#: ../bin/drawgeom.c:713
#, c-format
msgid "Straight Line: Length=%s Angle=%0.3f"
msgstr "Trecho reto: Comprimento=%s Ângulo=%0.3f"
-#: ../bin/drawgeom.c:635
+#: ../bin/drawgeom.c:735
#, c-format
msgid "Curved Line: Radius=%s Angle=%0.3f Length=%s"
msgstr "Linha curva: Raio=%s Ângulo=%0.3f Comprimento=%s"
-#: ../bin/drawgeom.c:659
+#: ../bin/drawgeom.c:761 ../bin/drawgeom.c:769
#, c-format
msgid "Radius = %s"
msgstr "Raio = %s"
-#: ../bin/drawgeom.c:669
+#: ../bin/drawgeom.c:780
#, c-format
msgid "Width = %s, Height = %s"
msgstr "Largura = %s, Altura = %s"
-#: ../bin/drawgeom.c:1132
+#: ../bin/drawgeom.c:841
+msgid "Drag on Red arrows to adjust curve"
+msgstr "Arrastar as setas vermelhas para ajustar a curva"
+
+#: ../bin/drawgeom.c:1298
#, fuzzy
msgid "Select points or use context menu"
msgstr "Selecionar posição do ponto"
-#: ../bin/drawgeom.c:1387
+#: ../bin/drawgeom.c:1567
#, fuzzy, c-format
msgid "Length = %s, Last angle = %0.2f"
msgstr "Comprimento = %s, Ângulo = %0.2f"
-#: ../bin/drawgeom.c:1538
+#: ../bin/drawgeom.c:1736
#, fuzzy
msgid "Point Deleted"
msgstr "Seleção de fonte"
-#: ../bin/drawgeom.c:1934
+#: ../bin/drawgeom.c:2194
#, fuzzy
msgid "Not close to end of line"
msgstr "Eleva ou abaixa todos os trechos selecionados"
-#: ../bin/drawgeom.c:1987
+#: ../bin/drawgeom.c:2252
msgid "Not close to ends or middle of mine, reselect"
msgstr ""
-#: ../bin/drawgeom.c:2035 ../bin/drawgeom.c:2257
+#: ../bin/drawgeom.c:2303 ../bin/drawgeom.c:2550
#, fuzzy
msgid "Drag to Move Corner Point"
msgstr "Arrastar à posição da 2ª extremidade"
-#: ../bin/drawgeom.c:2042
+#: ../bin/drawgeom.c:2311
#, fuzzy
msgid "Drag to Move Edge "
msgstr "Arrastar à borda"
-#: ../bin/drawgeom.c:2104
+#: ../bin/drawgeom.c:2383
#, c-format
msgid "Length = %0.3f Angle = %0.3f"
msgstr "Comprimento = %0.3f Ângulo = %0.3f"
-#: ../bin/drawgeom.c:2252
+#: ../bin/drawgeom.c:2544
#, fuzzy
msgid "Drag to Move Edge"
msgstr "Arrastar à borda"
-#: ../bin/dxfoutput.c:232
+#: ../bin/dxfoutput.c:244
msgid "Export to DXF"
msgstr "Exportar para DXF"
-#: ../bin/fileio.c:240
+#: ../bin/fileio.c:223
msgid ""
"\n"
"Do you want to continue?"
@@ -5334,103 +5611,119 @@ msgstr ""
"Continuar?"
# Confirmar se "putTitle: " deve ser retirado do texto.
-#: ../bin/fileio.c:607
+#: ../bin/fileio.c:595
#, c-format
msgid "putTitle: title too long: %s"
msgstr "Título muito longo: %s"
-#: ../bin/fileio.c:637
+#: ../bin/fileio.c:627
msgid "Unnamed Trackplan"
msgstr "Trackplan sem nome"
-#: ../bin/fileio.c:638
+#: ../bin/fileio.c:628
msgid " (R/O)"
msgstr ""
-#: ../bin/fileio.c:658 ../bin/fileio.c:1277
-msgid "Check Pointing"
-msgstr "Salvando arquivo temporário."
-
-#: ../bin/fileio.c:788
+#: ../bin/fileio.c:779
msgid "Unknown layout file object - skip until next good object?"
msgstr ""
-#: ../bin/fileio.c:1025
+#: ../bin/fileio.c:835 ../bin/fileio.c:1022
msgid "Track"
msgstr "Trilho"
-#: ../bin/fileio.c:1211
+#: ../bin/fileio.c:836
+#, fuzzy
+msgid "Not Found"
+msgstr "Ponto de contagem"
+
+#: ../bin/fileio.c:1265
+#, fuzzy
+msgid "AutoSave Tracks As"
+msgstr "Salvar layout"
+
+#: ../bin/fileio.c:1280
msgid "Save Tracks"
msgstr "Salvar layout"
-#: ../bin/fileio.c:1227
+#: ../bin/fileio.c:1297
#, fuzzy
msgid "Save Tracks As"
msgstr "Salvar layout"
-#: ../bin/fileio.c:1238
+#: ../bin/fileio.c:1309
msgid "Open Tracks"
msgstr "Abrir layout"
-#: ../bin/fileio.c:1252
+#: ../bin/fileio.c:1323
#, fuzzy
msgid "Example Tracks"
msgstr "Exportar layout"
-#: ../bin/fileio.c:1460
+#: ../bin/fileio.c:1400
+#, fuzzy
+msgid "File AutoSaved"
+msgstr "Botões de arquivos"
+
+#: ../bin/fileio.c:1575
#, fuzzy, c-format
msgid "Module - %s"
msgstr "Elev = %s"
-#: ../bin/fileio.c:1465 ../bin/fileio.c:1486
+#: ../bin/fileio.c:1580 ../bin/fileio.c:1601
msgid "Import Tracks"
msgstr "Importar layout"
-#: ../bin/fileio.c:1548
+#: ../bin/fileio.c:1601
+#, fuzzy
+msgid "Import Module"
+msgstr "Importar"
+
+#: ../bin/fileio.c:1659
msgid "Export Tracks"
msgstr "Exportar layout"
-#: ../bin/fileio.c:1567
+#: ../bin/fileio.c:1680
msgid "Clipboard"
msgstr "Ãrea de transferência"
-#: ../bin/filenoteui.c:62 ../bin/linknoteui.c:50 ../bin/textnoteui.c:42
+#: ../bin/filenoteui.c:60 ../bin/linknoteui.c:48 ../bin/textnoteui.c:41
#, fuzzy
msgid "Position X"
msgstr "Posição"
-#: ../bin/filenoteui.c:64 ../bin/linknoteui.c:52 ../bin/textnoteui.c:44
+#: ../bin/filenoteui.c:62 ../bin/linknoteui.c:50 ../bin/textnoteui.c:43
#, fuzzy
msgid "Position Y"
msgstr "Posição"
-#: ../bin/filenoteui.c:68 ../bin/linknoteui.c:56
+#: ../bin/filenoteui.c:66 ../bin/linknoteui.c:54
#, fuzzy
msgid "Title"
msgstr "Subtítulo"
# Esse texto possui dois contextos diferentes. Favor alterar software para distingui-los.
-#: ../bin/filenoteui.c:70 ../bin/trknote.c:62
-#: ../../../../build/work/app/bin/bllnhlp.c:85
+#: ../bin/filenoteui.c:68 ../bin/trknote.c:54
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:89
#, fuzzy
msgid "Document"
msgstr "Posição"
-#: ../bin/filenoteui.c:72
+#: ../bin/filenoteui.c:70
#, fuzzy
msgid "Select..."
msgstr "Selecionar"
-#: ../bin/filenoteui.c:74 ../bin/linknoteui.c:60
+#: ../bin/filenoteui.c:72 ../bin/linknoteui.c:58
#, fuzzy
msgid "Open..."
msgstr "&Abrir..."
-#: ../bin/filenoteui.c:136
+#: ../bin/filenoteui.c:134
msgid "Add Document"
msgstr ""
-#: ../bin/filenoteui.c:158
+#: ../bin/filenoteui.c:157
msgid "The file doesn't exist or cannot be read!"
msgstr ""
@@ -5439,841 +5732,878 @@ msgstr ""
msgid "Document(%d) Layer=%d %-.80s [%s]"
msgstr "(%d): Camada=%d %s"
-#: ../bin/filenoteui.c:309
+#: ../bin/filenoteui.c:318
#, fuzzy
-msgid "Update document"
+msgid "Update Document"
msgstr "Atualizado"
-#: ../bin/filenoteui.c:323
+#: ../bin/filenoteui.c:330
#, fuzzy
msgid "Describe the file"
msgstr "Descrição"
-#: ../bin/filenoteui.c:329
-msgid "Attach document"
-msgstr ""
+# Esse texto possui dois contextos diferentes. Favor alterar software para distingui-los.
+#: ../bin/filenoteui.c:338
+#, fuzzy
+msgid "Attach Document"
+msgstr "Posição"
# Provavelmente uma mensagem de log que não necessita de tradução.
-#: ../bin/i18n.c:66
+#: ../bin/i18n.c:57
#, c-format
msgid "Gettext initialized (PACKAGE=%s, LOCALEDIR=%s, LC_ALL=%s).\n"
msgstr "Gettext iniciado (PACKAGE=%s, LOCALEDIR=%s, LC_ALL=%s).\n"
-#: ../bin/layout.c:373
+#: ../bin/layout.c:553 ../bin/layout.c:994
#, c-format
msgid "Unable to load Image File - %s"
msgstr ""
-#: ../bin/layout.c:436
+#: ../bin/layout.c:630
msgid "Load Background"
msgstr ""
-#: ../bin/layout.c:458
+#: ../bin/layout.c:657
msgid "Room Width"
msgstr "Largura do cômodo"
-#: ../bin/layout.c:459
+#: ../bin/layout.c:658
msgid " Height"
msgstr " Comprimento"
-#: ../bin/layout.c:460
+#: ../bin/layout.c:659
msgid "Layout Title"
msgstr "Título do layout"
-#: ../bin/layout.c:461
+#: ../bin/layout.c:660
msgid "Subtitle"
msgstr "Subtítulo"
-# Seria possível remover os espaços do texto original?
-#: ../bin/layout.c:465
-msgid " Gauge"
-msgstr " Bitola"
-
-#: ../bin/layout.c:467
-msgid "Min Track Radius"
-msgstr "Raio mínimo"
-
-#: ../bin/layout.c:468
-msgid " Max Track Grade (%)"
-msgstr "Inclinação máxima (%)"
-
-#: ../bin/layout.c:470
+#: ../bin/layout.c:669
#, fuzzy
msgid "Background File Path"
msgstr "Perfil"
-#: ../bin/layout.c:474
+#: ../bin/layout.c:670
+msgid "Browse ..."
+msgstr "Pesquisar..."
+
+#: ../bin/layout.c:673
msgid "Background PosX,Y"
msgstr ""
-#: ../bin/layout.c:478
+#: ../bin/layout.c:677
msgid "Background Size"
msgstr ""
-#: ../bin/layout.c:480
+#: ../bin/layout.c:679
msgid "Background Screen %"
msgstr ""
-#: ../bin/layout.c:482
+#: ../bin/layout.c:681
msgid "Background Angle"
msgstr ""
-#: ../bin/layout.c:560
+#: ../bin/layout.c:682
+msgid "Named Settings File"
+msgstr ""
+
+#: ../bin/layout.c:683
+#, fuzzy
+msgid "Write"
+msgstr "Impressora"
+
+#: ../bin/layout.c:684
+#, fuzzy
+msgid "Read"
+msgstr "Vermelho"
+
+#: ../bin/layout.c:818
msgid "Layout Options"
msgstr "Opções de layout"
-#: ../bin/linknoteui.c:58
-msgid "URL"
+#: ../bin/layout.c:1052
+msgid "Read Settings"
msgstr ""
-#: ../bin/linknoteui.c:107
-#, c-format
-msgid ""
-"The entered URL is too long. The maximum allowed length is %d. Please edit "
-"the entered value."
-msgstr ""
+#: ../bin/layout.c:1053 ../bin/layout.c:1087
+#, fuzzy
+msgid "Settings File (*.xset)|*.xset"
+msgstr "Arquivo de parâmetros|*.xtp"
-#: ../bin/linknoteui.c:110
+#: ../bin/layout.c:1086
#, fuzzy
-msgid "Re-edit"
-msgstr "Resetar"
+msgid "Write Settings"
+msgstr "Seção reta"
+
+#: ../bin/linknoteui.c:56
+msgid "URL"
+msgstr ""
-#: ../bin/linknoteui.c:241
+#: ../bin/linknoteui.c:230
#, fuzzy
-msgid "Update link"
+msgid "Update Webink"
msgstr "Atualizar"
-#: ../bin/linknoteui.c:259
+#: ../bin/linknoteui.c:248
#, fuzzy
-msgid "Create link"
+msgid "Create Weblink"
msgstr "Criar Bloco"
-#: ../bin/macro.c:95
+#: ../bin/macro.c:67
msgid "Message"
msgstr "Mensagem"
-#: ../bin/macro.c:179
+#: ../bin/macro.c:166
msgid "Recording"
msgstr "Gravando"
# "Próximo passo"? Provavelmente temos o mesmo texto sendo utilizado para dois contextos diferentes: playback e demo.
-#: ../bin/macro.c:214
+#: ../bin/macro.c:206 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1309
msgid "End of Playback. Hit Step to exit\n"
msgstr "Fim da gravação. Teclar \"Próximo passo\" para sair\n"
-#: ../bin/macro.c:278
+#: ../bin/macro.c:271
msgid "Record"
msgstr "Gravar"
-#: ../bin/macro.c:676
+#: ../bin/macro.c:686
msgid "Step"
msgstr "Próximo passo"
-#: ../bin/macro.c:679 ../bin/macro.c:1542
+#: ../bin/macro.c:689 ../bin/macro.c:1560
msgid "Next"
msgstr "Próxima demonstração"
-#: ../bin/macro.c:682 ../bin/misc.c:699 ../bin/track.c:1116
+#: ../bin/macro.c:692 ../bin/misc.c:696 ../bin/track.c:1104
msgid "Quit"
msgstr "Sair"
-#: ../bin/macro.c:685 ../../../../build/work/app/bin/bllnhlp.c:540
+#: ../bin/macro.c:695 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:631
msgid "Speed"
msgstr "Velocidade"
-#: ../bin/macro.c:832 ../bin/macro.c:877
+#: ../bin/macro.c:855 ../bin/track.c:1344
msgid "Regression"
msgstr ""
-#: ../bin/macro.c:1043 ../bin/macro.c:1401
+#: ../bin/macro.c:1010 ../bin/macro.c:1410
msgid "Demo"
msgstr "Demonstração"
-#: ../bin/macro.c:1221
+#: ../bin/macro.c:1219
#, c-format
msgid "Elapsed time %lu\n"
msgstr "Tempo percorrido %lu\n"
-#: ../bin/macro.c:1322
+#: ../bin/macro.c:1329
msgid "Playback"
msgstr "Playback"
-#: ../bin/macro.c:1404
+#: ../bin/macro.c:1414
msgid "Slowest"
msgstr "Mínimo"
-#: ../bin/macro.c:1405
+#: ../bin/macro.c:1415
msgid "Slow"
msgstr "Devagar"
-#: ../bin/macro.c:1407
+#: ../bin/macro.c:1417
msgid "Fast"
msgstr "Rápido"
-#: ../bin/macro.c:1408
+#: ../bin/macro.c:1418
msgid "Faster"
msgstr "Mais rápido"
-#: ../bin/macro.c:1409
+#: ../bin/macro.c:1419
msgid "Fastest"
msgstr "Máximo"
-#: ../bin/macro.c:1527
+#: ../bin/macro.c:1542
msgid "Can not find PARAMETER playback proc"
msgstr "Não pôde encontrar PARÂMETRO do procedimento de playback"
-#: ../bin/misc.c:169
-msgid "No Messages"
-msgstr "Nenhuma mensagem"
-
-#: ../bin/misc.c:431 ../bin/misc.c:434
-msgid "ABORT"
-msgstr "ABORTAR"
-
-#: ../bin/misc.c:433
-msgid ""
-"\n"
-"Do you want to save your layout?"
-msgstr ""
-"\n"
-"Salvar layout?"
-
-#: ../bin/misc.c:480
-#, c-format
-msgid "No help for %s"
-msgstr "Ajuda inexistente para %s"
-
-#: ../bin/misc.c:592
-msgid ""
-"Save changes to the layout design before closing?\n"
-"\n"
-"If you don't save now, your unsaved changes will be discarded."
-msgstr ""
-"Salvar alterações no projeto do layout antes de fechar?\n"
-"\n"
-"Se não salvar neste momento, suas alterações serão perdidas."
-
-#: ../bin/misc.c:594 ../bin/misc.c:2291
-msgid "&Save"
-msgstr "&Salvar"
-
-#: ../bin/misc.c:594 ../bin/misc.c:629
-msgid "&Cancel"
-msgstr "&Anular"
-
-#: ../bin/misc.c:594
-msgid "&Don't Save"
-msgstr "&Não salvar"
-
-#: ../bin/misc.c:618
-msgid "examples"
-msgstr ""
-
-#: ../bin/misc.c:627
-msgid ""
-"Do you want to return to the last saved state?\n"
-"\n"
-"Revert will cause all changes done since last save to be lost."
-msgstr ""
-"Retornar ao último estado salvo?\n"
-"\n"
-"Revert will cause all changes done since last save to be lost."
-
-#: ../bin/misc.c:629
-msgid "&Revert"
-msgstr "&Reverter"
-
-#: ../bin/misc.c:851
-msgid "XTrackCAD Font"
-msgstr "Fonte XTrackCAD"
-
-#: ../bin/misc.c:912
-#, c-format
-msgid "No balloon help for %s\n"
-msgstr "Nenhum balão de ajuda para %s\n"
-
-#: ../bin/misc.c:914 ../../../../build/work/app/bin/bllnhlp.c:603
-#: ../../../../build/work/app/bin/bllnhlp.c:604
-#: ../../../../build/work/app/bin/bllnhlp.c:606
-#: ../../../../build/work/app/bin/bllnhlp.c:607
-#: ../../../../build/work/app/bin/bllnhlp.c:609
-#: ../../../../build/work/app/bin/bllnhlp.c:610
-#: ../../../../build/work/app/bin/bllnhlp.c:611
-#: ../../../../build/work/app/bin/bllnhlp.c:612
-#: ../../../../build/work/app/bin/bllnhlp.c:613
-#: ../../../../build/work/app/bin/bllnhlp.c:614
-#: ../../../../build/work/app/bin/bllnhlp.c:615
-#: ../../../../build/work/app/bin/bllnhlp.c:616
-#: ../../../../build/work/app/bin/bllnhlp.c:617
-#: ../../../../build/work/app/bin/bllnhlp.c:618
-#: ../../../../build/work/app/bin/bllnhlp.c:619
-#: ../../../../build/work/app/bin/bllnhlp.c:620
-#: ../../../../build/work/app/bin/bllnhlp.c:621
-#: ../../../../build/work/app/bin/bllnhlp.c:622
-#: ../../../../build/work/app/bin/bllnhlp.c:623
-#: ../../../../build/work/app/bin/bllnhlp.c:624
-#: ../../../../build/work/app/bin/bllnhlp.c:625
-#: ../../../../build/work/app/bin/bllnhlp.c:626
-#: ../../../../build/work/app/bin/bllnhlp.c:627
-#: ../../../../build/work/app/bin/bllnhlp.c:628
-#: ../../../../build/work/app/bin/bllnhlp.c:629
-#: ../../../../build/work/app/bin/bllnhlp.c:630
-#: ../../../../build/work/app/bin/bllnhlp.c:631
-#: ../../../../build/work/app/bin/bllnhlp.c:632
-#: ../../../../build/work/app/bin/bllnhlp.c:633
-#: ../../../../build/work/app/bin/bllnhlp.c:634
-#: ../../../../build/work/app/bin/bllnhlp.c:635
-#: ../../../../build/work/app/bin/bllnhlp.c:636
-#: ../../../../build/work/app/bin/bllnhlp.c:637
-#: ../../../../build/work/app/bin/bllnhlp.c:638
-#: ../../../../build/work/app/bin/bllnhlp.c:639
-#: ../../../../build/work/app/bin/bllnhlp.c:640
-#: ../../../../build/work/app/bin/bllnhlp.c:641
-#: ../../../../build/work/app/bin/bllnhlp.c:642
-#: ../../../../build/work/app/bin/bllnhlp.c:643
-#: ../../../../build/work/app/bin/bllnhlp.c:644
-#: ../../../../build/work/app/bin/bllnhlp.c:645
-#: ../../../../build/work/app/bin/bllnhlp.c:646
-#: ../../../../build/work/app/bin/bllnhlp.c:647
-#: ../../../../build/work/app/bin/bllnhlp.c:648
-#: ../../../../build/work/app/bin/bllnhlp.c:649
-#: ../../../../build/work/app/bin/bllnhlp.c:650
-#: ../../../../build/work/app/bin/bllnhlp.c:651
-#: ../../../../build/work/app/bin/bllnhlp.c:652
-#: ../../../../build/work/app/bin/bllnhlp.c:653
-#: ../../../../build/work/app/bin/bllnhlp.c:654
-#: ../../../../build/work/app/bin/bllnhlp.c:655
-#: ../../../../build/work/app/bin/bllnhlp.c:656
-#: ../../../../build/work/app/bin/bllnhlp.c:657
-#: ../../../../build/work/app/bin/bllnhlp.c:658
-#: ../../../../build/work/app/bin/bllnhlp.c:659
-#: ../../../../build/work/app/bin/bllnhlp.c:660
-#: ../../../../build/work/app/bin/bllnhlp.c:661
-#: ../../../../build/work/app/bin/bllnhlp.c:662
-#: ../../../../build/work/app/bin/bllnhlp.c:663
-#: ../../../../build/work/app/bin/bllnhlp.c:665
-msgid "No Help"
-msgstr "Nenhuma ajuda"
-
-#: ../bin/misc.c:1022
-#, fuzzy
-msgid "File AutoSaved"
-msgstr "Botões de arquivos"
-
-#: ../bin/misc.c:1233 ../bin/misc.c:1240 ../bin/misc.c:1311
-msgid ""
-"Cancelling the current command will undo the changes\n"
-"you are currently making. Do you want to update?"
-msgstr ""
-"Anulação do último comando desfazerá as alterações\n"
-"que você está fazendo. Continuar?"
-
-#: ../bin/misc.c:1806
-msgid "Sticky Commands"
-msgstr "Comandos \"grudendos\""
-
-#: ../bin/misc.c:1819
+#: ../bin/menu.c:130
msgid "File Buttons"
msgstr "Botões de arquivos"
-#: ../bin/misc.c:1819
+#: ../bin/menu.c:130
+#, fuzzy
+msgid "Print Buttons"
+msgstr "Botões de desfazer"
+
+#: ../bin/menu.c:130
#, fuzzy
msgid "Import/Export Buttons"
msgstr "Botões de zoom"
-#: ../bin/misc.c:1819
+#: ../bin/menu.c:131
msgid "Zoom Buttons"
msgstr "Botões de zoom"
-#: ../bin/misc.c:1820
+#: ../bin/menu.c:131
msgid "Undo Buttons"
msgstr "Botões de desfazer"
-#: ../bin/misc.c:1820
+#: ../bin/menu.c:131
msgid "Easement Button"
msgstr "Botão de curva de transição"
-#: ../bin/misc.c:1820
+#: ../bin/menu.c:131
msgid "SnapGrid Buttons"
msgstr "Botões da grade"
-#: ../bin/misc.c:1821
+#: ../bin/menu.c:132
msgid "Create Track Buttons"
msgstr "Criar botões de trilhos"
-#: ../bin/misc.c:1821
+#: ../bin/menu.c:132
msgid "Layout Control Elements"
msgstr "Elementos de controle de layout"
-#: ../bin/misc.c:1822
+#: ../bin/menu.c:133
msgid "Modify Track Buttons"
msgstr "Modificar botões de trilhos"
-#: ../bin/misc.c:1822
+#: ../bin/menu.c:133
msgid "Properties/Select"
msgstr "Descrever / Selecionar"
-#: ../bin/misc.c:1823
+#: ../bin/menu.c:134
msgid "Track Group Buttons"
msgstr "Botões de grupos de trilhos"
-#: ../bin/misc.c:1823
+#: ../bin/menu.c:134
msgid "Train Group Buttons"
msgstr "Botões de grupos de trens"
-#: ../bin/misc.c:1824
+#: ../bin/menu.c:135
msgid "Create Misc Buttons"
msgstr "Criar botões de miscelâneas"
-#: ../bin/misc.c:1824
+#: ../bin/menu.c:135
msgid "Ruler Button"
msgstr "Botão da régua"
-#: ../bin/misc.c:1824
+#: ../bin/menu.c:136
msgid "Layer Buttons"
msgstr "Botões das camadas"
-#: ../bin/misc.c:1825
+#: ../bin/menu.c:136
msgid "Hot Bar"
msgstr "Barra de itens"
-#: ../bin/misc.c:1894 ../../../../build/work/app/bin/bllnhlp.c:80
+#: ../bin/menu.c:225 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:82
msgid "Change Elevations"
msgstr "Alterar elevações"
-#: ../bin/misc.c:1912
+#: ../bin/menu.c:250
msgid "Angle:"
msgstr "Ângulo:"
-#: ../bin/misc.c:1919
+#: ../bin/menu.c:255
+#, fuzzy
+msgid "Indexes:"
+msgstr "Ãndice"
+
+#: ../bin/menu.c:262
#, fuzzy
msgid "Move X:"
msgstr "Mover"
-#: ../bin/misc.c:1920
+#: ../bin/menu.c:263
#, fuzzy
msgid "Move Y:"
msgstr "Mover"
-#: ../bin/misc.c:1967
+#: ../bin/menu.c:282
+#, fuzzy
+msgid "Select Index"
+msgstr "Seleciona objetos"
+
+#: ../bin/menu.c:330
#, fuzzy
msgid "Enter Move ..."
msgstr "Entrar ângulo..."
-#: ../bin/misc.c:1973
+#: ../bin/menu.c:336
+#, fuzzy
+msgid "Select Track Index ..."
+msgstr "Trilho selecionado"
+
+#: ../bin/menu.c:343
msgid "180 "
msgstr "180 "
-#: ../bin/misc.c:1974
+#: ../bin/menu.c:344
msgid "90 CW"
msgstr "90° sentido horário"
-#: ../bin/misc.c:1975
+#: ../bin/menu.c:345
msgid "45 CW"
msgstr "45° sentido horário"
-#: ../bin/misc.c:1976
+#: ../bin/menu.c:346
msgid "30 CW"
msgstr "30° sentido horário"
-#: ../bin/misc.c:1977
+#: ../bin/menu.c:347
msgid "15 CW"
msgstr "15° sentido horário"
-#: ../bin/misc.c:1978
+#: ../bin/menu.c:348
msgid "15 CCW"
msgstr "15° sentido anti-horário"
-#: ../bin/misc.c:1979
+#: ../bin/menu.c:349
msgid "30 CCW"
msgstr "30° sentido anti-horário"
-#: ../bin/misc.c:1980
+#: ../bin/menu.c:350
msgid "45 CCW"
msgstr "45° sentido anti-horário"
-#: ../bin/misc.c:1981
+#: ../bin/menu.c:351
msgid "90 CCW"
msgstr "90° sentido anti-horário"
-#: ../bin/misc.c:1982
+#: ../bin/menu.c:352
msgid "Enter Angle ..."
msgstr "Entrar ângulo..."
-#: ../bin/misc.c:2013
+#: ../bin/menu.c:369
+msgid "examples"
+msgstr ""
+
+#: ../bin/menu.c:378
+msgid ""
+"Do you want to return to the last saved state?\n"
+"\n"
+"Revert will cause all changes done since last save to be lost."
+msgstr ""
+"Retornar ao último estado salvo?\n"
+"\n"
+"Revert will cause all changes done since last save to be lost."
+
+#: ../bin/menu.c:380
+msgid "&Revert"
+msgstr "&Reverter"
+
+#: ../bin/menu.c:380 ../bin/misc.c:660
+msgid "&Cancel"
+msgstr "&Anular"
+
+#: ../bin/menu.c:433
+msgid "XTrackCAD Font"
+msgstr "Fonte XTrackCAD"
+
+#: ../bin/menu.c:459
+msgid "Sticky Commands"
+msgstr "Comandos \"grudendos\""
+
+#: ../bin/menu.c:478
+msgid "Test Mallocs"
+msgstr ""
+
+#: ../bin/menu.c:497
msgid "Debug"
msgstr "Debugar"
-#: ../bin/misc.c:2144
+#: ../bin/menu.c:582
+msgid "No Messages"
+msgstr "Nenhuma mensagem"
+
+#: ../bin/menu.c:606
+#, c-format
+msgid "No help for %s"
+msgstr "Ajuda inexistente para %s"
+
+#: ../bin/menu.c:656
+#, c-format
+msgid "No balloon help for %s\n"
+msgstr "Nenhum balão de ajuda para %s\n"
+
+#: ../bin/menu.c:658 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:694
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:695
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:697
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:698
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:700
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:701
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:702
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:703
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:704
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:705
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:706
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:707
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:708
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:709
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:710
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:711
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:712
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:713
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:714
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:715
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:716
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:717
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:718
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:719
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:720
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:721
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:722
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:723
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:724
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:725
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:726
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:727
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:728
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:729
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:730
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:731
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:732
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:733
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:734
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:735
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:736
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:737
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:738
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:739
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:740
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:741
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:742
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:743
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:744
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:745
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:746
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:747
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:748
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:749
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:750
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:751
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:752
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:753
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:754
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:756
+msgid "No Help"
+msgstr "Nenhuma ajuda"
+
+#: ../bin/menu.c:884
msgid "&File"
msgstr "&Arquivo"
-#: ../bin/misc.c:2145
+#: ../bin/menu.c:885
msgid "&Edit"
msgstr "&Editar"
-#: ../bin/misc.c:2146
+#: ../bin/menu.c:886
msgid "&View"
msgstr "&Visualizar"
-#: ../bin/misc.c:2147
+#: ../bin/menu.c:887
msgid "&Add"
msgstr "&Adicionar"
-#: ../bin/misc.c:2148
+#: ../bin/menu.c:888
msgid "&Change"
msgstr "&Alterar"
-#: ../bin/misc.c:2149
+#: ../bin/menu.c:889
msgid "&Draw"
msgstr "&Desenhar"
-#: ../bin/misc.c:2150
+#: ../bin/menu.c:890
msgid "&Manage"
msgstr "&Gerenciar"
-#: ../bin/misc.c:2151
+#: ../bin/menu.c:891
msgid "&Options"
msgstr "&Opções"
-#: ../bin/misc.c:2152
+#: ../bin/menu.c:892
msgid "&Macro"
msgstr "&Macro"
-#: ../bin/misc.c:2153
+#: ../bin/menu.c:893
msgid "&Window"
msgstr "&Janela"
-#: ../bin/misc.c:2154
+#: ../bin/menu.c:894
msgid "&Help"
msgstr "&Ajuda"
-#: ../bin/misc.c:2190
+#: ../bin/menu.c:930
#, fuzzy
msgid "Context Commands"
msgstr "Outros comandos"
-#: ../bin/misc.c:2191
+#: ../bin/menu.c:931
msgid "Shift Context Commands"
msgstr ""
-#: ../bin/misc.c:2206 ../bin/misc.c:2393
+#: ../bin/menu.c:945 ../bin/menu.c:947
+#, fuzzy
+msgid "Zoom Extents"
+msgstr "Botões de zoom"
+
+#: ../bin/menu.c:950 ../bin/menu.c:1185
msgid "Enable SnapGrid"
msgstr "Habilitar grade"
-#: ../bin/misc.c:2208
+#: ../bin/menu.c:952
msgid "SnapGrid Show"
msgstr "Mostrar grade"
-#: ../bin/misc.c:2210
+#: ../bin/menu.c:955
#, fuzzy
msgid " Enable Magnetic Snap"
msgstr "Habilitar grade"
-#: ../bin/misc.c:2212 ../bin/misc.c:2414
+#: ../bin/menu.c:957 ../bin/menu.c:1207
#, fuzzy
msgid "Show/Hide Map"
msgstr "Mostrar/Ocultar camada"
-#: ../bin/misc.c:2214
+#: ../bin/menu.c:981 ../bin/menu.c:983
#, fuzzy
-msgid "Show/Hide Background"
-msgstr "Mostrar/Ocultar camada"
+msgid "Select Track Index..."
+msgstr "Trilho selecionado"
-#: ../bin/misc.c:2245 ../bin/misc.c:2246
+#: ../bin/menu.c:995 ../bin/menu.c:996
#, fuzzy
msgid "Add..."
msgstr "Adicionar"
-#: ../bin/misc.c:2249 ../bin/misc.c:2250
+#: ../bin/menu.c:999 ../bin/menu.c:1000
#, fuzzy
msgid "More..."
msgstr "Mais"
-#: ../bin/misc.c:2285
+#: ../bin/menu.c:1005
msgid "&New ..."
msgstr "&Novo ..."
-#: ../bin/misc.c:2287
+#: ../bin/menu.c:1007
msgid "&Open ..."
msgstr "&Abrir..."
-#: ../bin/misc.c:2293
+#: ../bin/menu.c:1011 ../bin/misc.c:660
+msgid "&Save"
+msgstr "&Salvar"
+
+#: ../bin/menu.c:1013
msgid "Save &As ..."
msgstr "Salvar &como..."
-#: ../bin/misc.c:2295
+#: ../bin/menu.c:1015
msgid "Revert"
msgstr "&Reverter"
-#: ../bin/misc.c:2298
+#: ../bin/menu.c:1028
msgid "P&rint Setup ..."
msgstr "Configuração de &impressão"
-#: ../bin/misc.c:2303
+#: ../bin/menu.c:1036
msgid "&Import"
msgstr "&Importar"
-#: ../bin/misc.c:2305
+#: ../bin/menu.c:1038
#, fuzzy
msgid "Import &Module"
msgstr "Importar"
-#: ../bin/misc.c:2307
+#: ../bin/menu.c:1041
msgid "Export to &Bitmap"
msgstr "Exportar para &bitmap"
-#: ../bin/misc.c:2310
+#: ../bin/menu.c:1044
msgid "E&xport"
msgstr "E&xportar"
-#: ../bin/misc.c:2312
+#: ../bin/menu.c:1046
msgid "Export D&XF"
msgstr "Exportar D&XF"
-#: ../bin/misc.c:2317
+#: ../bin/menu.c:1050
+#, fuzzy
+msgid "Export S&VG"
+msgstr "Exportar D&XF"
+
+#: ../bin/menu.c:1056
msgid "Parameter &Files ..."
msgstr "Arquivos de &parâmetro..."
-#: ../bin/misc.c:2319
+#: ../bin/menu.c:1058
msgid "No&tes ..."
msgstr "N&otas..."
-#: ../bin/misc.c:2326
+#: ../bin/menu.c:1065
msgid "E&xit"
msgstr "&Sair"
-#: ../bin/misc.c:2332
+#: ../bin/menu.c:1102
msgid "&Undo"
msgstr "&Desfazer"
-#: ../bin/misc.c:2334
+#: ../bin/menu.c:1104
msgid "R&edo"
msgstr "&Refazer"
-#: ../bin/misc.c:2337
+#: ../bin/menu.c:1107
msgid "Cu&t"
msgstr "&Cortar"
-#: ../bin/misc.c:2339
+#: ../bin/menu.c:1109
msgid "&Copy"
msgstr "&Copiar"
-#: ../bin/misc.c:2341
+#: ../bin/menu.c:1111
msgid "&Paste"
msgstr "&Colar"
-#: ../bin/misc.c:2343
+#: ../bin/menu.c:1113
#, fuzzy
msgid "C&lone"
msgstr "Fechar"
-#: ../bin/misc.c:2345
+#: ../bin/menu.c:1115
msgid "De&lete"
msgstr "&Apagar"
-#: ../bin/misc.c:2353
+#: ../bin/menu.c:1123
msgid "Select &All"
msgstr "Selecionar &tudo"
-#: ../bin/misc.c:2355
+#: ../bin/menu.c:1127
+#, fuzzy
+msgid "Select By Index"
+msgstr "Seleciona objetos"
+
+#: ../bin/menu.c:1129
msgid "&Deselect All"
msgstr "&Deselecionar tudo"
-#: ../bin/misc.c:2356
+#: ../bin/menu.c:1131
msgid "&Invert Selection"
msgstr "&Inverter seleção"
-#: ../bin/misc.c:2357
+#: ../bin/menu.c:1134
msgid "Select Stranded Track"
msgstr "Selecionar trecho pego"
-#: ../bin/misc.c:2359
+#: ../bin/menu.c:1136
msgid "Tu&nnel"
msgstr "&Túnel"
-#: ../bin/misc.c:2360
+#: ../bin/menu.c:1138
#, fuzzy
msgid "B&ridge"
msgstr "Ponte"
-#: ../bin/misc.c:2361
-msgid "Ties/NoTies"
-msgstr ""
+#: ../bin/menu.c:1140
+#, fuzzy
+msgid "&Roadbed"
+msgstr "Companhia"
-#: ../bin/misc.c:2362
+#: ../bin/menu.c:1144
#, fuzzy
msgid "Move to &Front"
msgstr "Arrastar para juntar"
-#: ../bin/misc.c:2363
+#: ../bin/menu.c:1146
#, fuzzy
msgid "Move to &Back"
msgstr "Mover trecho"
-#: ../bin/misc.c:2373
+#: ../bin/menu.c:1161
msgid "Zoom &In"
msgstr "Aproximar"
-#: ../bin/misc.c:2376
+#: ../bin/menu.c:1164
msgid "Zoom &Out"
msgstr "Afastar"
-#: ../bin/misc.c:2386
+#: ../bin/menu.c:1167
+#, fuzzy
+msgid "Zoom &Extents"
+msgstr "Aproximar"
+
+#: ../bin/menu.c:1178
msgid "&Redraw"
msgstr "&Redesenhar"
-#: ../bin/misc.c:2388
+#: ../bin/menu.c:1180
msgid "Redraw All"
msgstr "Redesenhar tudo"
-#: ../bin/misc.c:2395
+#: ../bin/menu.c:1187
msgid "Show SnapGrid"
msgstr "Mostrar grade"
-#: ../bin/misc.c:2405
+#: ../bin/menu.c:1198
#, fuzzy
msgid "Enable Magnetic Snap"
msgstr "Habilitar grade"
-#: ../bin/misc.c:2420
+#: ../bin/menu.c:1213
msgid "&Tool Bar"
msgstr "Barra de &ferramentas"
-#: ../bin/misc.c:2453
+#: ../bin/menu.c:1247 ../bin/menu.c:1248
#, fuzzy
msgid "Control Element"
msgstr "Elementos de controle de layout"
-#: ../bin/misc.c:2479
-msgid "&Loosen Tracks"
-msgstr "Trechos &perdidos"
+#: ../bin/menu.c:1280
+msgid "Change Scale"
+msgstr "Alterar escala"
-#: ../bin/misc.c:2491
+#: ../bin/menu.c:1296
msgid "Raise/Lower Elevations"
msgstr "Aumentar / diminuir elevações"
-#: ../bin/misc.c:2500
+#: ../bin/menu.c:1305
msgid "Recompute Elevations"
msgstr "Recalcular inclinações"
-#: ../bin/misc.c:2505
-msgid "Change Scale"
-msgstr "Alterar escala"
-
-#: ../bin/misc.c:2526
+#: ../bin/menu.c:1323
msgid "L&ayout ..."
msgstr "&Layout..."
-#: ../bin/misc.c:2528
+#: ../bin/menu.c:1325
msgid "&Display ..."
msgstr "&Tela..."
-#: ../bin/misc.c:2530
+#: ../bin/menu.c:1327
msgid "Co&mmand ..."
msgstr "&Comando..."
-#: ../bin/misc.c:2532
+#: ../bin/menu.c:1329
msgid "&Easements ..."
msgstr "Curvas de &transição..."
-#: ../bin/misc.c:2535
+#: ../bin/menu.c:1332
msgid "&Fonts ..."
msgstr "&Fontes..."
-#: ../bin/misc.c:2537
+#: ../bin/menu.c:1334
msgid "Stic&ky ..."
msgstr "Comandos \"&grudendos\"..."
-#: ../bin/misc.c:2542
+#: ../bin/menu.c:1339
msgid "&Debug ..."
msgstr "&Debugar..."
-#: ../bin/misc.c:2545
+#: ../bin/menu.c:1342
msgid "&Preferences ..."
msgstr "&Preferências..."
-#: ../bin/misc.c:2547
+#: ../bin/menu.c:1344
msgid "&Colors ..."
msgstr "&Cores..."
-#: ../bin/misc.c:2553
+#: ../bin/menu.c:1350
msgid "&Record ..."
msgstr "&Gravar..."
-#: ../bin/misc.c:2555
+#: ../bin/menu.c:1352
msgid "&Play Back ..."
msgstr "&Playback..."
-#: ../bin/misc.c:2561
+#: ../bin/menu.c:1358
msgid "Main window"
msgstr "Janela principal"
-#: ../bin/misc.c:2575
+#: ../bin/menu.c:1372
msgid "Recent Messages"
msgstr "Mensagens recentes"
-#: ../bin/misc.c:2582
+#: ../bin/menu.c:1379
msgid "Tip of the Day..."
msgstr "Dica do dia..."
-#: ../bin/misc.c:2583
+#: ../bin/menu.c:1381
msgid "&Demos"
msgstr "&Demonstrações"
-#: ../bin/misc.c:2584
+#: ../bin/menu.c:1382
#, fuzzy
msgid "Examples..."
msgstr "Curvas de &transição..."
-#: ../bin/misc.c:2588 ../bin/smalldlg.c:222
+#: ../bin/menu.c:1386 ../bin/smalldlg.c:210
msgid "About"
msgstr "Sobre"
-#: ../bin/misc.c:2601
+#: ../bin/menu.c:1399
msgid "Tur&nout Designer..."
msgstr "Editor de &AMV"
-#: ../bin/misc.c:2604
+#: ../bin/menu.c:1402
#, fuzzy
msgid "Layout &Control Elements"
msgstr "Elementos de controle de layout"
-#: ../bin/misc.c:2606
+#: ../bin/menu.c:1404
msgid "&Group"
msgstr "A&grupar"
-#: ../bin/misc.c:2608
+#: ../bin/menu.c:1406
msgid "&Ungroup"
msgstr "&Desagrupar"
-#: ../bin/misc.c:2612
+#: ../bin/menu.c:1410
#, fuzzy
msgid "Custom defined parts..."
msgstr "Gerenciamento personalizado"
-#: ../bin/misc.c:2615
+#: ../bin/menu.c:1413
msgid "Update Turnouts and Structures"
msgstr "Atualizar AMVs e estruturas"
-#: ../bin/misc.c:2624
+#: ../bin/menu.c:1422
msgid "Layers ..."
msgstr "Camadas"
-#: ../bin/misc.c:2628
+#: ../bin/menu.c:1426
msgid "Parts &List ..."
msgstr "Lista de itens"
-#: ../bin/misc.c:2631
+#: ../bin/menu.c:1429
msgid "Price List..."
msgstr "Lista de preços"
-#: ../bin/misc.c:2713
+#: ../bin/menu.c:1458 ../bin/menu.c:1459
#, fuzzy
msgid "Import/Export"
msgstr "Exportar"
-#: ../bin/misc.c:2743
+#: ../bin/misc.c:487 ../bin/misc.c:491
+msgid "ABORT"
+msgstr "ABORTAR"
+
+#: ../bin/misc.c:490
+msgid ""
+"\n"
+"Do you want to save your layout?"
+msgstr ""
+"\n"
+"Salvar layout?"
+
+#: ../bin/misc.c:658
+msgid ""
+"Save changes to the layout design before closing?\n"
+"\n"
+"If you don't save now, your unsaved changes will be discarded."
+msgstr ""
+"Salvar alterações no projeto do layout antes de fechar?\n"
+"\n"
+"Se não salvar neste momento, suas alterações serão perdidas."
+
+#: ../bin/misc.c:660
+msgid "&Don't Save"
+msgstr "&Não salvar"
+
+#: ../bin/misc.c:991
msgid ""
"Program was not terminated properly. Do you want to resume working on the "
"previous trackplan?"
@@ -6281,175 +6611,280 @@ msgstr ""
"O programa não foi terminado apropriadamente. Continuar trabalhando no "
"projeto de layout anterior?"
-#: ../bin/misc.c:2744
+#: ../bin/misc.c:992
msgid "Resume"
msgstr "Continuar"
-#: ../bin/misc.c:2744
+#: ../bin/misc.c:992
msgid "Resume with New Name"
msgstr ""
-#: ../bin/misc.c:2744
+#: ../bin/misc.c:992
msgid "Ignore Checkpoint"
msgstr ""
-#: ../bin/misc.c:2859
+#: ../bin/misc.c:995
+#, c-format
+msgid "Reload Checkpoint Selected\n"
+msgstr ""
+
+#: ../bin/misc.c:997
+#, c-format
+msgid "Reload Checkpoint With New Name Selected\n"
+msgstr ""
+
+#: ../bin/misc.c:999
+#, c-format
+msgid "Ignore Checkpoint Selected\n"
+msgstr ""
+
+#: ../bin/misc.c:1121
#, c-format
msgid "Unnamed Trackplan - %s(%s)"
msgstr "Layout sem nome - %s(%s)"
-#: ../bin/misc.c:2945
+#: ../bin/misc.c:1175
msgid "Initializing commands"
msgstr "Iniciando comandos"
-#: ../bin/misc.c:2954
+#: ../bin/misc.c:1184
msgid "Initializing menus"
msgstr "Iniciando menus"
-#: ../bin/misc.c:2989
+#: ../bin/misc.c:1216
msgid "Reading parameter files"
msgstr "Lendo arquivos de parâmetros"
-#: ../bin/misc.c:3026
+#: ../bin/misc.c:1260
msgid "Initialization complete"
msgstr "Iniciação completa"
-#: ../bin/param.c:92
+#: ../bin/param.c:76
msgid "Unexpected End Of String"
msgstr "Fim de string não esperado"
-#: ../bin/param.c:99
+#: ../bin/param.c:83
msgid "Expected digit"
msgstr "Dígito esperado"
-#: ../bin/param.c:106
+#: ../bin/param.c:91
msgid "Overflow"
msgstr "Overflow"
-#: ../bin/param.c:154
+#: ../bin/param.c:140
msgid "Divide by 0"
msgstr "Divisão por zero"
-#: ../bin/param.c:162
+#: ../bin/param.c:148
msgid "Expected /"
msgstr "Caractere \"/\" esperado"
-#: ../bin/param.c:248
+#: ../bin/param.c:233
msgid "Invalid Units Indicator"
msgstr "Indicador de unidades inválido"
-#: ../bin/param.c:276
+#: ../bin/param.c:261
msgid "Expected End Of String"
msgstr "Fim de string esperado"
-#: ../bin/param.c:302 ../bin/param.c:1406
+#: ../bin/param.c:289 ../bin/param.c:1528
#, c-format
msgid "Invalid Number"
msgstr "Número inválido"
-#: ../bin/param.c:361
+#: ../bin/param.c:349
msgid "End Of String"
msgstr "Fim de string"
-#: ../bin/param.c:1413
+#: ../bin/param.c:1486
#, c-format
msgid "Enter a value > %ld"
msgstr "Digitar um valor maior que %ld"
-#: ../bin/param.c:1415
+#: ../bin/param.c:1489
#, c-format
msgid "Enter a value < %ld"
msgstr "Digitar um valor menor que %ld"
-#: ../bin/param.c:1417
+#: ../bin/param.c:1491
#, c-format
msgid "Enter a value between %ld and %ld"
msgstr "Digitar um valor entre %ld e %ld"
-#: ../bin/param.c:1473
+#: ../bin/param.c:1568
#, c-format
msgid "Enter a value > %s"
msgstr "Digitar um valor maior que %s"
-#: ../bin/param.c:1476
+#: ../bin/param.c:1572
#, c-format
msgid "Enter a value < %s"
msgstr "Digitar um valor menor que %s"
-#: ../bin/param.c:1479
+#: ../bin/param.c:1575
#, c-format
msgid "Enter a value between %s and %s"
msgstr "Digitar um valor entre %s e %s"
-#: ../bin/param.c:2643
+#: ../bin/param.c:1674
+msgid "String cannot be blank"
+msgstr ""
+
+#: ../bin/param.c:1689
+#, c-format
+msgid "String is too long, Max length is %u"
+msgstr ""
+
+#: ../bin/param.c:1823
+msgid "Invalid input(s), please correct the hilighted field(s)"
+msgstr ""
+
+#: ../bin/param.c:3043
msgid "Help"
msgstr "Ajuda"
-#: ../bin/paramfile.c:250
+#: ../bin/paramfile.c:258
msgid "Parameter"
msgstr "Parâmetro"
-#: ../bin/paramfile.c:348
+#: ../bin/paramfile.c:363
msgid "Unknown param file line - skip until next good object?"
msgstr ""
-#: ../bin/paramfilelist.c:110
+#: ../bin/paramfilelist.c:69
+#, c-format
+msgid ""
+"The parameter file: %s could not be found and was probably deleted or moved. "
+"The file is removed from the active parameter file list."
+msgstr ""
+
+#: ../bin/paramfilelist.c:126
#, c-format
msgid "Updating %s"
msgstr "Atualizando %s"
-#: ../bin/paramfilesearch_ui.c:68
-msgid "Enter at least one search word"
+#: ../bin/paramfilesearch_ui.c:52
+#, fuzzy
+msgid "Fit Any"
+msgstr "Primeiro "
+
+#: ../bin/paramfilesearch_ui.c:52
+msgid "Fit Compatible"
msgstr ""
-#: ../bin/paramfilesearch_ui.c:77
+#: ../bin/paramfilesearch_ui.c:52
#, fuzzy
-msgid "Reload Library"
-msgstr "Recarregar"
+msgid "Fit Exact"
+msgstr "Menu editar"
-#: ../bin/paramfilesearch_ui.c:274
+#: ../bin/paramfilesearch_ui.c:192
#, fuzzy, c-format
-msgid "%d parameter files found."
+msgid "%u parameter files in library. %d Fit Scale."
msgstr "Lendo arquivos de parâmetros"
-#: ../bin/paramfilesearch_ui.c:284
+#: ../bin/paramfilesearch_ui.c:307
+#, fuzzy, c-format
+msgid "%d parameter files found. %d Fit Scale"
+msgstr "Lendo arquivos de parâmetros"
+
+#: ../bin/paramfilesearch_ui.c:317
msgid "No matches found."
msgstr ""
-#: ../bin/paramfilesearch_ui.c:396
+#: ../bin/paramfilesearch_ui.c:477
#, fuzzy
msgid "Choose parameter files"
msgstr "Lendo arquivos de parâmetros"
-#: ../bin/paramfilesearch_ui.c:416
+#: ../bin/paramfilesearch_ui.c:495
msgid "No system parameter files found, search is disabled."
msgstr ""
-#: ../bin/smalldlg.c:64
+#: ../bin/partcatalog.c:739
+#, fuzzy
+msgid "Found: "
+msgstr "Comando:"
+
+#: ../bin/partcatalog.c:740
+msgid "Similar: "
+msgstr ""
+
+#: ../bin/partcatalog.c:741
+#, fuzzy
+msgid "Ignored: "
+msgstr "Ignorar"
+
+#: ../bin/partcatalog.c:742
+#, fuzzy
+msgid "Not found: "
+msgstr "Isso não é um trilho"
+
+#: ../bin/scale.c:301
+#, c-format
+msgid ""
+"Invalid Scale: playback aborted\n"
+" SCALE %s"
+msgstr ""
+
+#: ../bin/scale.c:845 ../bin/scale.c:870
+msgid "Ratio"
+msgstr "Razão"
+
+#: ../bin/scale.c:854
+msgid "Do not resize track"
+msgstr "Não redimensione o traçado"
+
+#: ../bin/scale.c:858
+msgid "Rescale by:"
+msgstr "Reescalar para:"
+
+#: ../bin/scale.c:860
+msgid "From:"
+msgstr "De:"
+
+#: ../bin/scale.c:864
+msgid "To: "
+msgstr "A: "
+
+#: ../bin/scale.c:913
+msgid "Rescale Tracks"
+msgstr "Reescalar traçado"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:473
+#: ../bin/scale.c:1084 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1258
+msgid "Rescale"
+msgstr "Reescalar"
+
+#: ../bin/scale.c:1134
+#, c-format
+msgid "%ld Objects to be rescaled"
+msgstr ""
+
+#: ../bin/smalldlg.c:45
msgid "Show tips at start"
msgstr "Exibir dicas ao iniciar"
-#: ../bin/smalldlg.c:70
+#: ../bin/smalldlg.c:51
msgid "Did you know..."
msgstr "Você sabia..."
-#: ../bin/smalldlg.c:72
+#: ../bin/smalldlg.c:53
msgid "Previous Tip"
msgstr "Dica anterior"
-#: ../bin/smalldlg.c:73
+#: ../bin/smalldlg.c:54
msgid "Next Tip"
msgstr "Próxima dica"
-#: ../bin/smalldlg.c:90
+#: ../bin/smalldlg.c:72
msgid "Tip of the Day"
msgstr "Dica do dia"
-#: ../bin/smalldlg.c:99
+#: ../bin/smalldlg.c:82
msgid "No tips are available"
msgstr "Nenhuma dica disponível"
-#: ../bin/smalldlg.c:199
+#: ../bin/smalldlg.c:187
msgid ""
"XTrackCAD is a CAD (computer-aided design) program for designing model "
"railroad layouts."
@@ -6457,32 +6892,32 @@ msgstr ""
"XTrackCAD é um programa CAD (em inglês, computer aided design) para projetos "
"de layout de ferromodelismo."
-#: ../bin/tbezier.c:177
+#: ../bin/tbezier.c:214
#, c-format
-msgid "Bezier: len=%0.2f min_rad=%0.2f"
+msgid "Bez: L%s A%0.3f trk_len=%s min_rad=%s"
msgstr ""
-#: ../bin/tbezier.c:250
+#: ../bin/tbezier.c:288
#, fuzzy
msgid "Ctl Pt 1: X,Y"
msgstr "Extremidade 1: X"
-#: ../bin/tbezier.c:251
+#: ../bin/tbezier.c:289
#, fuzzy
msgid "Ctl Pt 2: X,Y"
msgstr "Extremidade 2: X"
-#: ../bin/tbezier.c:257
+#: ../bin/tbezier.c:295
#, fuzzy
msgid "MinRadius"
msgstr "Raio"
-#: ../bin/tbezier.c:262
+#: ../bin/tbezier.c:300
#, fuzzy
msgid "Line Color"
msgstr "Cor %s"
-#: ../bin/tbezier.c:379
+#: ../bin/tbezier.c:440
#, fuzzy, c-format
msgid ""
"Bezier %s(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,%"
@@ -6491,39 +6926,35 @@ msgstr ""
"Trecho curvo(%d): Camada=%d Raio=%s Comprimento=%s Centro=[%s,%s] "
"Extremidades=[%0.3f,%0.3f θ%0.3f] [%0.3f,%0.3f θ%0.3f]"
-#: ../bin/tbezier.c:453
+#: ../bin/tbezier.c:514
#, fuzzy
msgid "Bezier Track"
msgstr "Trecho em hélice"
-#: ../bin/tbezier.c:870
-msgid "Merge Bezier"
-msgstr ""
-
-#: ../bin/tcornu.c:222
+#: ../bin/tcornu.c:246
#, c-format
-msgid "Cornu: len=%0.2f min_rad=%0.2f"
+msgid "Cornu: L %s A %0.3f L %s MinR %s"
msgstr ""
-#: ../bin/tcornu.c:296
+#: ../bin/tcornu.c:321
#, fuzzy
msgid "Radius "
msgstr "Raio 1"
-#: ../bin/tcornu.c:304
+#: ../bin/tcornu.c:329
#, fuzzy
msgid "Minimum Radius"
msgstr "Raio mínimo"
-#: ../bin/tcornu.c:305
+#: ../bin/tcornu.c:330
msgid "Max Rate Of Curve Change/Scale"
msgstr ""
-#: ../bin/tcornu.c:306
+#: ../bin/tcornu.c:331
msgid "Total Winding Angle"
msgstr ""
-#: ../bin/tcornu.c:444
+#: ../bin/tcornu.c:476
#, fuzzy, c-format
msgid ""
"Cornu Track(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,%"
@@ -6532,36 +6963,27 @@ msgstr ""
"Trecho curvo(%d): Camada=%d Raio=%s Comprimento=%s Centro=[%s,%s] "
"Extremidades=[%0.3f,%0.3f θ%0.3f] [%0.3f,%0.3f θ%0.3f]"
-#: ../bin/tcornu.c:497
+#: ../bin/tcornu.c:532
#, fuzzy
msgid "Cornu Track"
msgstr "Trecho curvo"
-#: ../bin/tcornu.c:1025
-#, fuzzy
-msgid "Merge Cornu"
-msgstr "Fundir curvas"
-
-#: ../bin/tcurve.c:243
+#: ../bin/tcurve.c:259
#, fuzzy, c-format
-msgid "Helix: turns=%ld len=%0.2f grade=%0.1f%% sep=%0.2f"
+msgid "Helix: Turns %ld L %0.2f Grade %0.1f%% Sep %0.2f"
msgstr "Hélice: voltas=%ld comprimento=%s inclinação=%0.1f%% separação=%s"
-#: ../bin/tcurve.c:249
+#: ../bin/tcurve.c:265
#, fuzzy, c-format
-msgid "Helix: turns=%ld len=%0.2f"
+msgid "Helix: Turns %ld L %0.2f"
msgstr "Hélice: voltas=%ld comprimento=%s"
-#: ../bin/tcurve.c:365 ../bin/tcurve.c:367 ../bin/tease.c:520
-#: ../bin/tease.c:522 ../bin/tstraigh.c:86 ../bin/tstraigh.c:88
+#: ../bin/tcurve.c:397 ../bin/tcurve.c:399 ../bin/tease.c:525
+#: ../bin/tease.c:527 ../bin/tstraigh.c:88 ../bin/tstraigh.c:90
msgid "Z"
msgstr "Z"
-#: ../bin/tcurve.c:373
-msgid "Angular Length"
-msgstr "Comprimento angular"
-
-#: ../bin/tcurve.c:553
+#: ../bin/tcurve.c:591
#, c-format
msgid ""
"Helix Track(%d): Layer=%d Radius=%s Turns=%ld Length=%s Center=[%s,%s] EP=[%"
@@ -6570,7 +6992,7 @@ msgstr ""
"Trecho em hélice(%d): Camada=%d Raio=%s Voltas=%ld Comprimento=%s Centro=[%s,"
"%s] EP=[%0.3f,%0.3f θ%0.3f] [%0.3f,%0.3f θ%0.3f]"
-#: ../bin/tcurve.c:563
+#: ../bin/tcurve.c:602
#, c-format
msgid ""
"Curved Track(%d): Layer=%d Radius=%s Length=%s Center=[%s,%s] EP=[%0.3f,%"
@@ -6579,49 +7001,49 @@ msgstr ""
"Trecho curvo(%d): Camada=%d Raio=%s Comprimento=%s Centro=[%s,%s] "
"Extremidades=[%0.3f,%0.3f θ%0.3f] [%0.3f,%0.3f θ%0.3f]"
-#: ../bin/tcurve.c:640
+#: ../bin/tcurve.c:681
msgid "Helix Track"
msgstr "Trecho em hélice"
-#: ../bin/tcurve.c:646
+#: ../bin/tcurve.c:687
msgid "Curved Track"
msgstr "Trecho curvo"
-#: ../bin/tcurve.c:1011
+#: ../bin/tcurve.c:1232
msgid "Merge Curves"
msgstr "Fundir curvas"
-#: ../bin/tcurve.c:1078
+#: ../bin/tcurve.c:1306
msgid "Drag to change angle or create tangent"
msgstr "Arrastar para alterar ângulo ou criar tangente"
-#: ../bin/tcurve.c:1111 ../bin/tcurve.c:1143
+#: ../bin/tcurve.c:1341 ../bin/tcurve.c:1374
msgid "Curved "
msgstr "Curva"
-#: ../bin/tcurve.c:1117
+#: ../bin/tcurve.c:1347
msgid "Tangent "
msgstr "Tangente"
-#: ../bin/tcurve.c:1126
+#: ../bin/tcurve.c:1356
#, c-format
msgid "Tangent track: Length %s Angle %0.3f"
msgstr "Trecho tangente: Comprimento %s Ângulo %0.3f"
-#: ../bin/tcurve.c:1148
+#: ../bin/tcurve.c:1378
#, c-format
msgid "Curved: Radius=%s Length=%s Angle=%0.3f"
msgstr "Curva: Raio=%s Comprimento=%s Ângulo=%0.3f"
-#: ../bin/tease.c:527
+#: ../bin/tease.c:532
msgid "l0"
msgstr "l0"
-#: ../bin/tease.c:528
+#: ../bin/tease.c:533
msgid "l1"
msgstr "l1"
-#: ../bin/tease.c:570
+#: ../bin/tease.c:581
#, c-format
msgid ""
"Joint Track(%d): Layer=%d Length=%0.3f EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A"
@@ -6630,109 +7052,133 @@ msgstr ""
"Trecho juntado(%d): Camada=%d Comprimento=%0.3f Extremidades=[%0.3f,%0.3f θ%"
"0.3f] [%0.3f,%0.3f θ%0.3f]"
-#: ../bin/tease.c:615
+#: ../bin/tease.c:629
msgid "Easement Track"
msgstr "Trecho de curva de transição"
-#: ../bin/tease.c:1235
+#: ../bin/tease.c:1407
msgid "Merge Easements"
msgstr "Fundir curvas de transição"
-#: ../bin/tease.c:1300
+#: ../bin/tease.c:1481
msgid "Split Easement Curve"
msgstr "Seccionar curva de transição"
-#: ../bin/textnoteui.c:214
+#: ../bin/textnoteui.c:175
#, fuzzy, c-format
-msgid "Note: Layer=%d %-.80s"
+msgid "Text Note(%d) Layer=%d %-.80s"
msgstr "(%d): Camada=%d %s"
-#: ../bin/textnoteui.c:225
+#: ../bin/textnoteui.c:189
#, fuzzy
-msgid "Update comment"
-msgstr "Desfazer último comando"
+msgid "Update Text Note"
+msgstr "Criar texto"
-#: ../bin/textnoteui.c:237
+#: ../bin/textnoteui.c:200
msgid "Replace this text with your note"
msgstr "Substitua este texto por uma nota"
-#: ../bin/textnoteui.c:241
+#: ../bin/textnoteui.c:206
#, fuzzy
msgid "Create Text Note"
msgstr "Criar texto"
-#: ../bin/track.c:1329
+#: ../bin/track.c:290
+msgid "No track or structure pieces are present in layout"
+msgstr ""
+
+#: ../bin/track.c:292
+msgid "No track or structure pieces are selected"
+msgstr ""
+
+#: ../bin/track.c:1461
msgid "Move Objects Above"
msgstr "Mover objetos para cima"
-#: ../bin/track.c:1349
+#: ../bin/track.c:1481
msgid "Mode Objects Below"
msgstr "Mover objetos para baixo"
-#: ../bin/track.c:1640
+#: ../bin/track.c:1785
msgid "Audit"
msgstr "Auditar"
-#: ../bin/track.c:1929
-#, c-format
-msgid "%d Track(s) loosened"
-msgstr "%d trecho(s) liberado(s)"
-
-#: ../bin/track.c:1936
-msgid "No tracks loosened"
-msgstr "Nenhum trecho liberado"
+#: ../bin/track.c:1990
+#, fuzzy, c-format
+msgid "Connecting a car to a non-car T%d T%d"
+msgstr "Conectando um objeto(%d) a (%d)"
-#: ../bin/track.c:1946 ../bin/track.c:1950
+#: ../bin/track.c:2000 ../bin/track.c:2005
#, c-format
msgid "Connecting a non-track(%d) to (%d)"
msgstr "Conectando um objeto(%d) a (%d)"
-#: ../bin/track.c:2005
+#: ../bin/track.c:2047
+#, c-format
+msgid "Disconnecting a car from a non-car T%d T%d"
+msgstr ""
+
+#: ../bin/track.c:2081
msgid "Join Abutting Tracks"
msgstr "Juntar trechos lado a lado"
-#: ../bin/track.c:2280 ../bin/track.c:2315
+#: ../bin/track.c:2407 ../bin/track.c:2444
msgid "Inside turnout track"
msgstr ""
-#: ../bin/track.c:2298
+#: ../bin/track.c:2425
#, fuzzy, c-format
msgid "Curve: Length=%s Radius=%0.3f Arc=%0.3f"
msgstr "Comprimento = %0.3f Ângulo = %0.3f"
-#: ../bin/track.c:2321 ../bin/track.c:2379 ../bin/tstraigh.c:568
+#: ../bin/track.c:2452 ../bin/track.c:2517 ../bin/tstraigh.c:853
#, c-format
msgid "Straight: Length=%s Angle=%0.3f"
msgstr "Reto: Comprimento=%s Ângulo=%0.3f"
-#: ../bin/trknote.c:60
+#: ../bin/track.c:3374
+#, c-format
+msgid "[%0.2f,%0.2f] A%0.2f"
+msgstr ""
+
+#: ../bin/track.c:3378
+#, c-format
+msgid "[%0.2f,%0.2f] A%0.2f\n"
+msgstr ""
+
+#: ../bin/trknote.c:52 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:154
#, fuzzy
-msgid "Comment"
-msgstr "&Conteúdo"
+msgid "Text Note"
+msgstr "Criar texto"
-#: ../bin/trknote.c:61
+#: ../bin/trknote.c:53
#, fuzzy
msgid "Link"
msgstr "Linha"
-#: ../bin/trknote.c:61 ../../../../build/work/app/bin/bllnhlp.c:101
+#: ../bin/trknote.c:53 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:105
msgid "Weblink"
msgstr ""
-#: ../bin/trknote.c:638 ../../../../build/work/app/bin/bllnhlp.c:108
+#: ../bin/trknote.c:526 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:113
msgid "Place a note on the layout"
msgstr "Posicionar uma nota no traçado"
-#: ../bin/trknote.c:652
+#: ../bin/trknote.c:540
msgid "New Note"
msgstr "Nova nota"
-#: ../bin/trknote.c:708
+#: ../bin/trknote.c:594
#, fuzzy
msgid "Add notes"
msgstr "Adicionar impressora"
-#: ../bin/tstraigh.c:236
+#: ../bin/tstraigh.c:92
+#, fuzzy
+msgid "Track Angle"
+msgstr "Ângulo"
+
+#: ../bin/tstraigh.c:212
#, c-format
msgid ""
"Straight Track(%d): Layer=%d Length=%s EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A"
@@ -6741,147 +7187,75 @@ msgstr ""
"Trecho reto(%d): Camada=%d Comprimento=%s Extremidades=[%0.3f,%0.3f θ%0.3f] "
"[%0.3f,%0.3f θ%0.3f]"
-#: ../bin/tstraigh.c:481
+#: ../bin/tstraigh.c:762
msgid "Extending Straight Track"
msgstr "Estendendo trecho reto"
-#: ../bin/tstraigh.c:561
+#: ../bin/tstraigh.c:845
msgid "Straight "
msgstr "Reto"
-#: ../wlib/gtklib/filesel.c:94
+#: ../bin/svgoutput.c:484
#, fuzzy
-msgid "Save format:"
-msgstr "Formato da página"
+msgid "Export to SVG"
+msgstr "Exportar para DXF"
-#: ../wlib/gtklib/filesel.c:187
-msgid "Image files"
+#: ../wlib/mswlib/mswmisc.c:188
+msgid "All image files"
msgstr ""
-#: ../wlib/gtklib/font.c:281
-msgid "Font Select"
-msgstr "Seleção de fonte"
-
-#: ../wlib/gtklib/help.c:83
-msgid "&Contents"
-msgstr "&Conteúdo"
+#: ../wlib/mswlib/mswmisc.c:190
+msgid "GIF files (*.gif)"
+msgstr ""
-#: ../wlib/gtklib/help.c:84
-msgid "Co&mmand Context help"
+#: ../wlib/mswlib/mswmisc.c:192
+msgid "JPEG files (*.jpeg,*.jpg)"
msgstr ""
-#: ../wlib/gtklib/ixhelp.c:243
-msgid "Home"
-msgstr "Início"
+#: ../wlib/mswlib/mswmisc.c:194
+msgid "PNG files (*.png)"
+msgstr ""
-#: ../wlib/gtklib/ixhelp.c:247
-#, fuzzy
-msgid "Contents"
-msgstr "&Conteúdo"
+#: ../wlib/mswlib/mswmisc.c:196
+msgid "TIFF files (*.tiff, *.tif)"
+msgstr ""
-#: ../wlib/gtklib/menu.c:541
-msgid "<Empty List>"
+#: ../wlib/mswlib/mswmisc.c:198
+msgid "All files (*)"
msgstr ""
-#: ../wlib/gtklib/notice.c:101 ../wlib/mswlib/mswmisc.c:2102
-#: ../wlib/mswlib/mswmisc.c:2145
+#: ../wlib/mswlib/mswmisc.c:2062 ../wlib/mswlib/mswmisc.c:2105
msgid "Warning"
msgstr "Aviso"
-#: ../wlib/gtklib/notice.c:106 ../wlib/mswlib/mswmisc.c:2107
+#: ../wlib/mswlib/mswmisc.c:2067
msgid "Error"
msgstr "Erro"
-#: ../wlib/gtklib/text.c:300
-#, c-format
-msgid "%d of %d"
-msgstr ""
-
-# Texto não está claro. Quais arquivos tenho que copiar em um dos diretórios em questão?
-#: ../wlib/gtklib/wpref.c:114
-#, c-format
-msgid ""
-"The required configuration files could not be located in the expected "
-"location.\n"
-"\n"
-"Usually this is an installation problem. Make sure that these files are "
-"installed in either \n"
-" %s/share/xtrkcad or\n"
-" /usr/lib/%s or\n"
-" /usr/local/lib/%s\n"
-"If this is not possible, the environment variable %s must contain the name "
-"of the correct directory."
-msgstr ""
-"Os arquivos de configuração mínima não foram encontrados.\n"
-"\n"
-"Tipicamente, isso é um problema de instalação. Por favor, tenha certeza que "
-"esses arquivos estejam instalados em \n"
-" %s/share/xtrkcad ou\n"
-" /usr/lib/%s ou\n"
-" /usr/local/lib/%s\n"
-"Se não for possível, a variável de ambiente \"%s\" deverá conter o nome do "
-"diretório correto."
-
-#: ../wlib/gtklib/wpref.c:148 ../wlib/gtklib/wpref.c:193
-msgid "HOME is not set"
-msgstr "Variável HOME não está configurada"
-
-#: ../wlib/gtklib/wpref.c:148 ../wlib/gtklib/wpref.c:157
-#: ../wlib/gtklib/wpref.c:193
-msgid "Exit"
-msgstr "Sair"
-
-#: ../wlib/gtklib/wpref.c:156
-#, c-format
-msgid "Cannot create %s"
-msgstr "Não foi possível criar %s"
-
-#: ../wlib/mswlib/backgnd.c:103
-msgid "Image file is invalid or cannot be read."
-msgstr ""
-
-#: ../wlib/mswlib/mswmenu.c:886
-msgid "Ctrl+"
-msgstr ""
-
-#: ../wlib/mswlib/mswmenu.c:891
-msgid "Alt+"
-msgstr ""
-
-#: ../wlib/mswlib/mswmenu.c:896
-msgid "Shift+"
-msgstr ""
-
-#: ../wlib/mswlib/mswmenu.c:902
-#, fuzzy
-msgid "Space"
-msgstr "Espaçamento"
-
-#: ../wlib/mswlib/mswmisc.c:190
-msgid "All image files"
-msgstr ""
-
-#: ../wlib/mswlib/mswmisc.c:192
-msgid "GIF files (*.gif)"
-msgstr ""
-
-#: ../wlib/mswlib/mswmisc.c:194
-msgid "JPEG files (*.jpeg,*.jpg)"
-msgstr ""
+#: ../wlib/mswlib/mswmisc.c:2203
+msgid "&Contents"
+msgstr "&Conteúdo"
-#: ../wlib/mswlib/mswmisc.c:196
-msgid "PNG files (*.png)"
+#: ../wlib/mswlib/mswmisc.c:2204
+msgid "&Search for Help on..."
msgstr ""
-#: ../wlib/mswlib/mswmisc.c:198
-msgid "TIFF files (*.tiff, *.tif)"
+#: ../wlib/mswlib/mswmisc.c:2205
+msgid "Co&mmand Context Help"
msgstr ""
-#: ../wlib/mswlib/mswmisc.c:200
-msgid "All files (*)"
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:9
+#, c-format
+msgid ""
+"MSG_BETA_NOTICE\tXTrackCAD Version %s: Please note that this Beta Version of "
+"XTrackCAD is still undergoing final testing before its official release. The "
+"sole purpose of this Beta Version is to conduct testing and obtain feedback. "
+"Should you encounter any bugs, glitches, lack of functionality or other "
+"problems, please let us know immediately so we can rectify these "
+"accordingly. Your help in this regard is greatly appreciated!"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:9
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:10
#, c-format
msgid ""
"MSG_CANT_PLACE_FROGPOINTS\tFrog|Points cannot be placed on a turnout, circle "
@@ -6891,7 +7265,7 @@ msgstr ""
"AMV, circunferência ou hélice.\tUm %s não pode ser posicionado em um AMV, "
"circunferência ou hélice."
-#: ../../../../build/work/app/help/messages.h:10
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:11
#, fuzzy
msgid ""
"MSG_SEL_TRK_FROZEN\tA frozen layer contains selected track. Command cannot "
@@ -6901,11 +7275,11 @@ msgstr ""
"congelada possui trilhos selecionados\n"
"selecionados. Comando não pode ser executado."
-#: ../../../../build/work/app/help/messages.h:11
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:12
msgid "MSG_HELIX_TURNS_GTR_0\tA Helix must have one or more loops of track."
msgstr "MSG_HELIX_TURNS_GTR_0\tUma hélice deve possuir um ou mais loops."
-#: ../../../../build/work/app/help/messages.h:12
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:13
msgid ""
"MSG_LARGE_FONT\tA large font has been selected....\tA large font has been "
"selected.\n"
@@ -6919,7 +7293,13 @@ msgstr ""
"\n"
"Continuar?"
-#: ../../../../build/work/app/help/messages.h:13
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:14
+msgid ""
+"MSG_TEXT_TOO_LONG\tThe entered text was too long for the text object. It was "
+"truncated."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:15
msgid ""
"MSG_TODSGN_DESC_NONBLANK\tAll description fields present in the Turnout..."
"\tAll description fields present in the Turnout\n"
@@ -6931,7 +7311,7 @@ msgstr ""
"Editor deve conter a informação apropriada.\n"
"Corrigir valores inapropriados e tentar novamente"
-#: ../../../../build/work/app/help/messages.h:14
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:16
msgid ""
"MSG_GROUP_NONBLANK\tAll fields listed in the Group dialog must contain "
"data....\tAll fields listed in the Group dialog must contain data.\n"
@@ -6942,7 +7322,7 @@ msgstr ""
"grupo devem conter dados.\n"
"Por favor, digitar os valores restantes e tentar novamente."
-#: ../../../../build/work/app/help/messages.h:15
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:17
msgid ""
"MSG_TODSGN_VALUES_GTR_0\tAll values specified in the Turnout Designer must "
"be...\tAll values specified in the Turnout Designer must be\n"
@@ -6952,12 +7332,12 @@ msgstr ""
"devem ser...\tTodos os valores especificados no editor de AMV devem ser\n"
"maiores que zero. Corrigir os valores inapropriados e tentar novamente."
-#: ../../../../build/work/app/help/messages.h:16
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:18
#, fuzzy
msgid "MSG_CURVE_OUT_OF_RANGE\tAngle must be between 0\\u00B0 and 360\\u00B0."
msgstr "MSG_CURVE_OUT_OF_RANGE\tÂngulo deve estar entre 0° e 360°."
-#: ../../../../build/work/app/help/messages.h:17
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:19
msgid ""
"MSG_TODSGN_CORNU_TOO_COMPLEX\tThe curves created by the Turnout Designer for "
"a cornu curve have more than 128 segments....\tThe curves created by the "
@@ -6965,7 +7345,7 @@ msgid ""
"Try adjusting the end angles and radii to be closer in values."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:18
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:20
#, c-format
msgid ""
"MSG_CUSTMGM_DELETE_CONFIRM\tAre you sure you want to delete the NNN "
@@ -6976,19 +7356,19 @@ msgstr ""
"definição(ões)?\tVocê tem certeza que deseja eliminar as\n"
"%d definition(ões)?"
-#: ../../../../build/work/app/help/messages.h:19
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:21
msgid "MSG_WBITMAP_FAILED\tBitmap create or write function failed."
msgstr "MSG_WBITMAP_FAILED\tCriação do bitmap ou falha na função de escrita."
-#: ../../../../build/work/app/help/messages.h:20
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:22
msgid "MSG_BITMAP_TOO_LARGE\tBitmap is too large."
msgstr "MSG_BITMAP_TOO_LARGE\tBitmap muito grande."
-#: ../../../../build/work/app/help/messages.h:21
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:23
msgid "MSG_CHANGE_ELEV_MODE\tCannot change elevation mode."
msgstr "MSG_CHANGE_ELEV_MODE\tNão é possível alterar modo de inclinação."
-#: ../../../../build/work/app/help/messages.h:22
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:24
msgid ""
"MSG_GRID_ENABLE_SPACE_GTR_0\tCannot Enable Grid; spacing must be greater "
"than 0"
@@ -6996,11 +7376,16 @@ msgstr ""
"MSG_GRID_ENABLE_SPACE_GTR_0\tNão é possível habilitar grade; espaçamento "
"deve ser maior que zero"
-#: ../../../../build/work/app/help/messages.h:23
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:25
msgid "MSG_LAYER_FREEZE\tCannot freeze current layer"
msgstr "MSG_LAYER_FREEZE\tNão é possível congelar camada corrente"
-#: ../../../../build/work/app/help/messages.h:24
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:26
+msgid ""
+"MSG_GROUP_NO_PATHS\tNo Paths were detected when grouping selected Tracks."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:27
msgid ""
"MSG_CANT_GROUP_BUMPER1\tCannot Group Bumper Track. The track has been "
"unselected."
@@ -7008,26 +7393,27 @@ msgstr ""
"MSG_CANT_GROUP_BUMPER1\tNão é possível agrupar trilho com pára-choque. O "
"trilho foi deselecionado."
-#: ../../../../build/work/app/help/messages.h:25
-msgid "MSG_CANNOT_GROUP_TRACK\tCannot Group selected track."
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:28
+#, fuzzy, c-format
+msgid "MSG_CANNOT_GROUP_TRACK\tCannot Group selected track type %s."
msgstr "MSG_CANNOT_GROUP_TRACK\tNão é possível agrupar trilhos selecionados."
-#: ../../../../build/work/app/help/messages.h:26
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:29
msgid "MSG_LAYER_HIDE\tCannot hide current layer"
msgstr "MSG_LAYER_HIDE\tImpossível esconder camada corrente"
-#: ../../../../build/work/app/help/messages.h:27
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:30
#, fuzzy
msgid "MSG_LAYER_MODULE\tCannot turn current layer into a Module"
msgstr "MSG_LAYER_HIDE\tImpossível esconder camada corrente"
-#: ../../../../build/work/app/help/messages.h:28
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:31
msgid "MSG_JOIN_EASEMENTS\tCannot Join; Easements do not align or abut."
msgstr ""
"MSG_JOIN_EASEMENTS\tImpossível juntar; Curvas de transição não estão "
"alinhadas e nem estão próximas."
-#: ../../../../build/work/app/help/messages.h:29
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:32
#, c-format
msgid ""
"MSG_TRK_ALREADY_CONN\tFirst|Second track is already connected.\tCannot Join; "
@@ -7036,33 +7422,39 @@ msgstr ""
"MSG_TRK_ALREADY_CONN\tPrimeiro|Segundo trilho já estão conectados.\tNão é "
"possível juntar; Trilho %s já está conectado."
-#: ../../../../build/work/app/help/messages.h:30
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:33
msgid "MSG_JOIN_TURNTABLE\tCannot join from a turntable, try to a turntable"
msgstr ""
"MSG_JOIN_TURNTABLE\tNão é possível juntar a partir de um virador de "
"locomotivas, tentar no outro sentido"
-#: ../../../../build/work/app/help/messages.h:31
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:34
#, fuzzy
msgid "MSG_JOIN_CORNU_SAME\tCannot Join; Selected endpoints are on same track."
msgstr ""
"MSG_JOIN_SAME\tNão é possível juntar; Extremidades selecionadas estão na "
"mesma linha."
-#: ../../../../build/work/app/help/messages.h:32
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:35
msgid "MSG_JOIN_SAME\tCannot Join; Selected endpoints are on same track."
msgstr ""
"MSG_JOIN_SAME\tNão é possível juntar; Extremidades selecionadas estão na "
"mesma linha."
-#: ../../../../build/work/app/help/messages.h:33
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:36
+msgid ""
+"MSG_JOIN_NOTBEZIERORCORNU\tCannot Join Bezier or Cornu track if Easement is "
+"not Cornu"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:37
msgid ""
"MSG_SELECTED_TRACKS_PARALLEL\tCannot Join; Selected tracks are parallel."
msgstr ""
"MSG_SELECTED_TRACKS_PARALLEL\tNão é possível juntar; Trilhos selecionados "
"estão paralelos."
-#: ../../../../build/work/app/help/messages.h:34
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:38
#, c-format
msgid ""
"MSG_PRMFIL_OPEN_NEW\tCannot open New Parameter File: FILENAME\tCannot open "
@@ -7071,25 +7463,26 @@ msgstr ""
"MSG_PRMFIL_OPEN_NEW\tNão é possível abrir novo arquivo de parâmetros: "
"FILENAME\tNão é possível abrir novo arquivo de parâmetros: %s"
-#: ../../../../build/work/app/help/messages.h:35
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:39
msgid "MSG_LAYER_SEL_FROZEN\tCannot select a frozen layer"
msgstr "MSG_LAYER_SEL_FROZEN\tNão é possível selecionar uma camada congelada"
-#: ../../../../build/work/app/help/messages.h:36
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:40
msgid ""
"MSG_GRID_SHOW_SPACE_GTR_0\tCannot Show Grid; spacing must be greater than 0"
msgstr ""
"MSG_GRID_SHOW_SPACE_GTR_0\tNão é possível exibir grade; Espaçamento deve ser "
"maior que zero"
-#: ../../../../build/work/app/help/messages.h:37
-#, c-format
-msgid "MSG_CANT_SPLIT_TRK\tCannot split TYPE track\tCannot split %s track"
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:41
+#, fuzzy, c-format
+msgid ""
+"MSG_CANT_SPLIT_TRK\tCannot split TYPE track\tCannot split track of type %s"
msgstr ""
"MSG_CANT_SPLIT_TRK\tNão é possível seccionar trilho do tipo TYPE\tNão é "
"possível seccionar trilho do tipo %s"
-#: ../../../../build/work/app/help/messages.h:38
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:42
#, c-format
msgid ""
"MSG_CUSTMGM_CANT_WRITE\tCannot write to parameter file: FILENAME\tCannot "
@@ -7098,30 +7491,30 @@ msgstr ""
"MSG_CUSTMGM_CANT_WRITE\tNão é possível escrever no arquivo: FILENAME\tNão é "
"possível escrever no arquivo: %s"
-#: ../../../../build/work/app/help/messages.h:39
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:43
msgid "MSG_CARIMP_DUP_INDEX\tCar Index number duplicated."
msgstr "MSG_CARIMP_DUP_INDEX\tÃndice do material rodante duplicado."
-#: ../../../../build/work/app/help/messages.h:40
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:44
msgid ""
"MSG_CONN_PARAMS_TOO_SMALL\tConnection parameters reset to minimum values."
msgstr ""
"MSG_CONN_PARAMS_TOO_SMALL\tParâmetros de conexão restaurados aos valores "
"mínimos."
-#: ../../../../build/work/app/help/messages.h:41
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:45
#, fuzzy
msgid "MSG_CONN_PARAMS_TOO_BIG\tConnection parameters reset to maximum values."
msgstr ""
"MSG_CONN_PARAMS_TOO_SMALL\tParâmetros de conexão restaurados aos valores "
"mínimos."
-#: ../../../../build/work/app/help/messages.h:42
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:46
msgid "MSG_CANT_PASTE\tCopy/Paste buffer is empty. There is nothing to Paste."
msgstr ""
"MSG_CANT_PASTE\tEspaço para copiar/colar está vazio. Não há nada a colar."
-#: ../../../../build/work/app/help/messages.h:43
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:47
msgid ""
"MSG_TODSGN_CROSSOVER_TOO_SHORT\tCrossover length is too short. Correct..."
"\tCrossover length is too short. Correct\n"
@@ -7132,11 +7525,11 @@ msgstr ""
"Corrigir\n"
"valores inapropriados e tentar novamente."
-#: ../../../../build/work/app/help/messages.h:44
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:48
msgid "MSG_CURVE_TOO_LARGE\tCurved track is too large."
msgstr "MSG_CURVE_TOO_LARGE\tTrecho curvo muito aberto."
-#: ../../../../build/work/app/help/messages.h:45
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:49
msgid ""
"MSG_TODSGN_REPLACE\tDefinition name is already in use. Saving this..."
"\tDefinition name is already in use. Saving this\n"
@@ -7150,23 +7543,23 @@ msgstr ""
"\n"
"Você deseja continuar?"
-#: ../../../../build/work/app/help/messages.h:46
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:50
msgid "MSG_SAVE_CHANGES\tDo you want to save the changes made to your Layout?"
msgstr ""
"MSG_SAVE_CHANGES\tVocê deseja salvar as alterações feitas no seu layout?"
-#: ../../../../build/work/app/help/messages.h:47
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:51
msgid ""
"MSG_CARIMP_DUP_COLUMNS\tDuplicate column headers found in Car Import file."
msgstr ""
"MSG_CARIMP_DUP_COLUMNS\tNomes de colunas duplicados encontrados no material "
"rodante importado."
-#: ../../../../build/work/app/help/messages.h:48
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:52
msgid "MSG_EP_ON_PATH\tEndpoint already on Path."
msgstr "MSG_EP_ON_PATH\tExtremidade ainda no caminho."
-#: ../../../../build/work/app/help/messages.h:49
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:53
#, c-format
msgid ""
"MSG_UPGRADE_VERSION1\tFile version %ld is greater than supported...\tFile "
@@ -7179,7 +7572,7 @@ msgstr ""
"suportada %d. Você precisa atualizar a %s\n"
"para a versão %s pelo menos."
-#: ../../../../build/work/app/help/messages.h:50
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:54
#, c-format
msgid ""
"MSG_UPGRADE_VERSION2\tFile version %ld is greater than supported...\tFile "
@@ -7192,14 +7585,14 @@ msgstr ""
"suportada %d. Você precisa atualizar sua versão\n"
"de %s"
-#: ../../../../build/work/app/help/messages.h:51
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:55
#, c-format
msgid ""
"MSG_LAYOUT_LINES_SKIPPED\tWhile processing Layout file %s, %d lines were "
"skipped because they were not recognized."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:52
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:56
#, fuzzy, c-format
msgid ""
"MSG_PARAM_UPGRADE_VERSION1\tFile version %ld is greater than supported..."
@@ -7212,7 +7605,7 @@ msgstr ""
"suportada %d. Você precisa atualizar a %s\n"
"para a versão %s pelo menos."
-#: ../../../../build/work/app/help/messages.h:53
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:57
#, fuzzy, c-format
msgid ""
"MSG_PARAM_UPGRADE_VERSION2\tFile version %ld is greater than supported..."
@@ -7225,14 +7618,14 @@ msgstr ""
"suportada %d. Você precisa atualizar sua versão\n"
"de %s"
-#: ../../../../build/work/app/help/messages.h:54
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:58
#, c-format
msgid ""
"MSG_PARAM_LINES_SKIPPED\tWhile processing Parameter file %s, %d lines were "
"skipped because they were not recognized."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:55
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:59
#, fuzzy
msgid ""
"MSG_MOVE_POINTS_OTHER_SIDE\tFrog angle prevents placement of points. Move "
@@ -7242,49 +7635,49 @@ msgstr ""
"pontos....\tÂngulo do jacaré impede posicionamento dos pontos.\n"
"Mova os pontos para o lado oposto do jacaré."
-#: ../../../../build/work/app/help/messages.h:56
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:60
msgid "MSG_NO_ROOM_BTW_TRKS\tInsufficient space between existing stall tracks."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:57
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:61
#, c-format
msgid ""
"MSG_JOIN_DIFFER_ELEV\tJoining tracks with differing elevations (N.NNN)"
"\tJoining tracks with differing elevations (%0.2f)"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:58
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:62
msgid "MSG_TRK_DESC_NOT_VISIBLE\tLabel description is hidden"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:59
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:63
msgid "MSG_DESC_NOT_VISIBLE\tLabel descriptions not visible"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:60
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:64
msgid "MSG_OBJECT_TOO_SHORT\tLength of object is too short."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:61
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:65
#, c-format
msgid ""
"MSG_PRINT_MAX_SIZE\tMaximum allowed page size is W x H\tMaximum allowed page "
"size is %s x %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:62
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:66
msgid ""
"MSG_NO_PRINTER_SELECTED\tPlease select a printer from the Print Setup dialog."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:63
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:67
#, c-format
msgid ""
"MSG_PRMFIL_NO_CONTENTS\tNew Parameter File has no CONTENTS line: FILENAME."
"\tNew Parameter File has no CONTENTS line: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:64
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:68
msgid ""
"MSG_NO_CARS\tNo Cars are defined for the current scale....\tNo Cars are "
"defined for the current scale.\n"
@@ -7292,7 +7685,7 @@ msgid ""
"Do you want to use the Car Inventory dialog?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:65
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:69
msgid ""
"MSG_NO_CARPROTO\tNo Car Prototypes are defined....\tNo Car Prototypes are "
"defined.\n"
@@ -7301,60 +7694,72 @@ msgid ""
"definition using the Car Prototype dialog."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:66
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:70
msgid "MSG_CARIMP_NO_DATA\tNo data present in Car Import file."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:67
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:71
msgid "MSG_PRINT_NO_PAGES\tNo pages selected for printing."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:68
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:72
msgid "MSG_NO_PATH_TO_EP\tNo path between Profile and selected endpoint."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:69
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:73
#, c-format
msgid ""
"MSG_PRMFIL_NO_MAP\tNo Parameter File Map for CONTENTS\tNo Parameter File Map "
"for %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:70
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:74
msgid "MSG_NO_SELECTED_TRK\tNo track(s) selected!"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:71
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:75
msgid ""
"MSG_NO_EMPTY_LAYER\tNo layer was found that has no contents, so the module "
"can not be imported"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:72
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:76
+msgid ""
+"MSG_NO_UNFROZEN_LAYER\tNo layer was found that wasn't frozen. Layer 0 is "
+"unfrozen."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:77
+msgid ""
+"MSG_NOT_UNFROZEN_LAYER\tThe current layer was defined as frozen. It is now "
+"unfrozen."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:78
#, c-format
msgid ""
"MSG_NO_TURNOUTS_AVAILABLE\tNo Turnouts|Structures are available.\tNo %s are "
"available."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:73
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:79
msgid ""
"MSG_CARDESC_VALUE_ZERO\tNumeric values on the Car Description...\tNumeric "
"values on the Car Description\n"
"dialog must be greater than 0."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:74
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:80
msgid "MSG_MOVE_OUT_OF_BOUNDS\tObject has moved beyond room boundaries."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:75
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:81
msgid ""
"MSG_PARALLEL_SEP_GTR_0\tParallel separation must be greater than 0, or the "
"new guage must be different than the old."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:76
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:82
msgid ""
"MSG_CARPART_DUPNAME\tPart Number for this Manufacturer already exists...."
"\tPart Number for this Manufacturer already exists.\n"
@@ -7362,14 +7767,14 @@ msgid ""
"Do you want to update it?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:77
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:83
#, c-format
msgid ""
"MSG_PLAYBACK_LISTENTRY\tPlayback: Cannot find list entry: NAME\tPlayback: "
"Cannot find list entry: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:78
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:84
#, c-format
msgid ""
"MSG_PLAYBACK_VERSION_UPGRADE\tPlayback file version %ld is...\tPlayback file "
@@ -7378,25 +7783,29 @@ msgid ""
"You need to upgrade your version of %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:79
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:85
#, c-format
msgid ""
"MSG_DOMOUSE_BAD_OP\tPlayback: unknown action NNN\tPlayback: unknown action %d"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:80
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:86
msgid "MSG_MOVE_POINTS_AWAY_CLOSE\tPoints are to close to frog; move away."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:81
-msgid "MSG_POLY_SHAPES_3_SIDES\tPoly shapes must have at least 3 sides."
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:87
+msgid "MSG_POLY_SHAPES_3_SIDES\tPolygons must have at least 3 nodes."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:82
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:88
msgid "MSG_POLY_MULTIPLE_SELECTED\tCan't delete multiple points at once"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:83
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:89
+msgid "MSG_POLY_NOTHING_SELECTED\tNo Point on a Poly shape selected."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:90
msgid ""
"MSG_CARPROTO_DUPNAME\tPrototype name already exists....\tPrototype name "
"already exists.\n"
@@ -7404,21 +7813,21 @@ msgid ""
"Do you want to update it?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:84
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:91
msgid "MSG_RADIUS_GTR_0\tRadius must be greater than 0."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:85
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:92
msgid "MSG_RADIUS_GTR_10000\tRadius must be less than 10000."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:86
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:93
msgid ""
"MSG_RADIUS_TOO_BIG\tThe Circle or Helix will not fit within the layouts room "
"parameters (Height and Width)."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:87
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:94
#, c-format
msgid ""
"MSG_RESCALE_TOO_BIG\tRescaled tracks do not fit within layouts room "
@@ -7427,53 +7836,60 @@ msgid ""
"set to at least %s by %s."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:88
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:95
msgid ""
"MSG_CARIMP_MISSING_COLUMNS\tRequired column headers missing from Car Import "
"file."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:89
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:96
#, c-format
msgid ""
"MSG_2ND_TRK_NOT_SEL_UNSEL\tSecond track must be selected|unselected\tSecond "
"track must be %s."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:90
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:97
msgid "MSG_OUT_OF_BOUNDS\tSelected page is out of bounds."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:91
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:98
msgid "MSG_SEL_POS_FIRST\tSelect position prior to entering Text."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:92
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:99
msgid ""
"MSG_CARPROTO_BADSEGS\tSelected shapes must define a rectangular area ..."
"\tSelected shapes must define a rectangular\n"
"area with length greater than height."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:93
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:100
msgid ""
"MSG_TOO_FAR_APART_DIVERGE\tSelected tracks deviate too much or are too far "
"apart from each other."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:94
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:101
msgid "MSG_COMMAND_DISABLED\tSpecified command disabled."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:95
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:102
+#, c-format
+msgid ""
+"MSG_SEGMENT_NOT_ON_PATH\tTrack segment N not on Path for Turnout\tTrack "
+"segment %d not on any Path for %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:103
msgid "MSG_SPLIT_POS_BTW_MERGEPTS\tSplit position between Turnout Points"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:96
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:104
msgid "MSG_SPLIT_PATH_NOT_UNIQUE\tSplit position not on unique path"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:97
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:105
#, c-format
msgid ""
"MSG_CARIMP_MISSING_DIMS\tThe following car has no dimensions and a...\tThe "
@@ -7485,7 +7901,7 @@ msgid ""
"Do you wish to continue importing other Cars?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:98
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:106
#, c-format
msgid ""
"MSG_CARIMP_MISSING_PARTNO\tThe following car has no Part Number...\tThe "
@@ -7496,7 +7912,7 @@ msgid ""
"Do you wish to continue importing other Cars?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:99
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:107
#, c-format
msgid ""
"MSG_CARIMP_IGNORED_COLUMN\tThe following column in the Car Import file will "
@@ -7506,13 +7922,13 @@ msgid ""
"%s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:100
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:108
msgid ""
"MSG_CANT_MOVE_UNDER_TRAIN\tThe position of a turnout or turntable cannot be "
"changed while occupied by a train."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:101
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:109
msgid ""
"MSG_STRUCT_NO_STRUCTS\tThere are no structures to choose from in the "
"structure...\tThere are no structures to choose from in the structure\n"
@@ -7521,7 +7937,7 @@ msgid ""
"create a new Structure with the Group command."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:102
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:110
msgid ""
"MSG_TURNOUT_NO_TURNOUT\tThere are no turnouts to choose from in the "
"turnout...\tThere are no turnouts to choose from in the turnout\n"
@@ -7531,63 +7947,76 @@ msgid ""
"Parameter File"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:103
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:111
msgid "MSG_NO_UNCONN_EP\tThere are no unconnected end points for this track"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:104
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:112
+#, c-format
+msgid ""
+"MSG_SPLITTED_OBJECT_TOO_SHORT\tThe resulting length of one track piece is "
+"shorter than the minimum length of %d."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:113
msgid "MSG_PULL_FEW_SECTIONS\tThere are too few sections in this loop."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:105
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:114
msgid "MSG_NO_REDO\tThere is nothing to redo!"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:106
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:115
msgid "MSG_NO_UNDO\tThere is nothing to undo!"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:107
-msgid "MSG_TOOMANYSEGSINGROUP\tToo many segments in Group."
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:116
+msgid "MSG_TOOMANYSEGSINGROUP\tToo many track segments in Group."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:108
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:117
+msgid ""
+"MSG_TOOMANYSEGSINGROUP2\tTrack segments appear too late in Group segment "
+"list."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:118
msgid "MSG_CANNOT_CHANGE\tTrack cannot be changed."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:109
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:119
msgid "MSG_POINT_INSIDE_TURNTABLE\tTrack endpoint is within turntable radius."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:110
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:120
msgid ""
"MSG_MOVE_POINTS_AWAY_NO_INTERSECTION\tTrack intersection not possible; move "
"points away from frog."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:111
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:121
#, c-format
msgid ""
"MSG_TRK_TOO_SHORT\tTrack is too short by N.NNN\t%strack is too short by %0.3f"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:112
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:122
#, c-format
msgid ""
"MSG_RADIUS_LSS_EASE_MIN\tTrack radius (N.NNN) is smaller than easement "
"minimum (N.NNN).\tTrack radius (%s) is smaller than easement minimum (%s)."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:113
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:123
msgid ""
"MSG_CANT_MODIFY_FROZEN_TRK\tTracks in a frozen layer cannot be modified."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:114
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:124
msgid "MSG_CANT_MODIFY_MODULE_TRK\tTracks in a module cannot be modified."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:115
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:125
msgid ""
"MSG_SEGMENTS_DIFFER\tTurnout definition contains non-track segments...."
"\tTurnout definition contains non-track segments.\n"
@@ -7595,11 +8024,11 @@ msgid ""
"Do you want to include them in this update?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:116
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:126
msgid "MSG_TURNTABLE_DIAM_GTR_0\tTurntable diameter must greater than 0."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:117
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:127
#, c-format
msgid ""
"MSG_UNDO_ASSERT\tUndo assertion failure %s:%d...\tUndo assertion failure %s:%"
@@ -7610,7 +8039,7 @@ msgid ""
"SourceForge."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:118
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:128
#, c-format
msgid ""
"MSG_PROG_CORRUPTED\tCritical file damaged!...\tCritical file damaged!\n"
@@ -7620,149 +8049,153 @@ msgid ""
"Please reinstall software."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:119
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:129
#, c-format
msgid ""
"MSG_ENTERED_STRING_TRUNCATED\tThe entered text is too long. Maximum length "
"is %d."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:120
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:130
#, c-format
msgid "MSG_PT_IS_NOT_TRK\t[X Y] is not a track\t[%s %s] is not a track."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:121
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:131
msgid ""
-"MSG_BITMAP_SIZE_WARNING\tYou have specified a large Bitmap....\tYou have "
-"specified a large Bitmap.\n"
+"MSG_BITMAP_SIZE_WARNING\tYou have specified a large bitmap....\tYou have "
+"specified a large bitmap.\n"
"\n"
"Are you sure you want to continue?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:122
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:132
+msgid "Icon Size change will take effect on next program start."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:133
#, c-format
-msgid "Are you sure you want to delete these %d car(s)?"
+msgid "Are you sure you want to delete these %d car(s) from your inventory?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:123
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:134
#, c-format
msgid ""
"Cannot open %s file:\n"
"%s:%s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:124
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:135
#, fuzzy, c-format
msgid "Cannot create directory: %s - %s"
msgstr "Não foi possível criar %s"
-#: ../../../../build/work/app/help/messages.h:125
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:136
#, fuzzy, c-format
msgid "Cannot open directory: %s"
msgstr "Não foi possível criar %s"
-#: ../../../../build/work/app/help/messages.h:126
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:137
#, c-format
msgid "Path for deletion is not a directory: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:127
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:138
#, c-format
msgid "Open failed for directory: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:128
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:139
#, c-format
msgid "Can't add directory record %s to zip - %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:129
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:140
#, c-format
msgid "Can't add file record %s to zip at %s - %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:130
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:141
#, fuzzy, c-format
msgid "Can't create zip %s - %s"
msgstr "Não foi possível criar %s"
-#: ../../../../build/work/app/help/messages.h:131
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:142
#, c-format
msgid "Close failure for zip %s - %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:132
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:143
#, c-format
msgid "Rename failure for zip from %s to %s - %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:133
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:144
#, c-format
msgid "Open failure for zip %s - %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:134
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:145
#, c-format
msgid "Index failure for zip %s - %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:135
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:146
#, c-format
msgid "Open read file failure %s %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:136
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:147
#, c-format
msgid "Open file in zip failure %s %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:137
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:148
#, c-format
msgid "Unlink failed for: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:138
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:149
#, c-format
msgid "Remove Directory failed for: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:139
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:150
#, c-format
msgid "Cannot save archive to %s from directory: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:140
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:151
#, c-format
msgid "Cannot save manifest file to %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:141
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:152
#, fuzzy, c-format
msgid "Cannot open manifest file %s"
msgstr "Não foi possível criar %s"
-#: ../../../../build/work/app/help/messages.h:142
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:153
#, c-format
msgid "Cannot unpack file: %s for file: %s in directory: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:143
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:154
#, fuzzy, c-format
msgid "Cannot open file %s"
msgstr "Não foi possível criar %s"
-#: ../../../../build/work/app/help/messages.h:144
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:155
#, c-format
msgid "Cannot copy file %s into directory %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:145
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:156
#, c-format
msgid "Unrecognized Option: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:146
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:157
#, c-format
msgid ""
"End-Of-Line is unexpected in a quoted field.\n"
@@ -7771,7 +8204,7 @@ msgid ""
"Do you want to continue reading the file?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:147
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:158
#, c-format
msgid ""
"A comma was expected after this quoted field.\n"
@@ -7780,14 +8213,14 @@ msgid ""
"Do you want to continue reading the file?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:148
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:159
#, c-format
msgid ""
"Error \\\\\"%s\\\\\" occurred while writing %s.\n"
"Please check disk space and system status."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:149
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:160
#, c-format
msgid ""
"At least one path for the Turnout T%d does not\n"
@@ -7795,28 +8228,28 @@ msgid ""
"The track has been unselected."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:150
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:161
msgid "inv-pathEndTrk on Path."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:151
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:162
msgid "inv-pathStartTrk on Path"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:152
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:163
#, c-format
msgid "%s:%d- %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:153
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:164
msgid "pathEndTrk not on Path."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:154
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:165
msgid "pathStartTrk not on Path."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:155
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:166
msgid ""
"The tracks cannot be connected together.\n"
"\n"
@@ -7825,7 +8258,7 @@ msgid ""
"the Preferences dialog."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:156
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:167
msgid ""
"The tracks cannot be connected together.\n"
"\n"
@@ -7834,7 +8267,7 @@ msgid ""
"Angle values on the Preferences dialog"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:157
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:168
msgid ""
"The tracks cannot be connected together.\n"
"\n"
@@ -7842,27 +8275,27 @@ msgid ""
"or increase the Connection Distance"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:158
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:169
msgid ""
"The first track for the Align\n"
"Rotate command must be Selected."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:159
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:170
msgid ""
"The second track for the Align\n"
"Rotate command must be Unselected."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:160
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:171
msgid "Too many selected tracks, drawing tracks as End Point."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:161
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:172
msgid "Select an endpoint between two tracks."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:162
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:173
msgid ""
"According to values that have been entered the diverging\n"
"track does not connect with the tangent track. Please\n"
@@ -7871,36 +8304,36 @@ msgid ""
"by Angle Mode radio buttons."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:163
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:174
msgid "Moved before the end of the turnout"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:164
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:175
msgid ""
"The Coupled Length must be greater than the Car Length,\n"
"and the Coupler Length must be greater than 0."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:165
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:176
msgid ""
"The Car Length value must be greater\n"
"than the Car Width value."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:166
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:177
msgid ""
"The specified Index is already in use.\n"
"The Index will be updated to the next available value."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:167
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:178
msgid ""
"You have changed values for this object.\n"
"\n"
"Are you sure you want to Close?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:168
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:179
#, c-format
msgid ""
"File version %ld is lower than the minimum\n"
@@ -7908,7 +8341,7 @@ msgid ""
"layout file using an older version of %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:169
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:180
#, c-format
msgid ""
"File version %ld is lower than the minimum\n"
@@ -7916,30 +8349,30 @@ msgid ""
"version of %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:170
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:181
#, c-format
msgid ""
"%s cannot read the demo file:\n"
"%s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:171
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:182
#, c-format
msgid "doDemo: bad number (%d)"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:172
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:183
msgid "Playback TIMEEND without TIMESTART"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:173
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:184
#, c-format
msgid ""
"Unknown playback command (%d)\n"
"%s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:174
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:185
#, c-format
msgid ""
"Playback file version %ld is lower than the\n"
@@ -7948,2154 +8381,96 @@ msgid ""
"older version of %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:175
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:186
#, c-format
-msgid "Scale index (%d) is not valid"
+msgid ""
+"MSG_BAD_SCALE_INDEX\tScale index (NNN) is not valid. Do you want use the "
+"current layout scale (SCALE)? Or create an \"Unknown\" scale? See 'Help|"
+"Recent Messages' for details.\tScale index (%d) is not valid.\n"
+"Do you want use the current layout scale (%s)?\n"
+"Or create an \"Unknown\" scale?\n"
+"See 'Help|Recent Messages' for details."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:176
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:187
#, c-format
msgid ""
-"Scale %s is not valid\n"
-"Please check your %s.xtq file"
+"MSG_BAD_SCALE_NAME\tScale \"SCALE1\" is not valid. We will substitute a "
+"dummy scale based on \"SCALE2\". See 'Help|Recent Messages' for details."
+"\tScale \"%s\" is not valid. We will substitute a dummy scale based on \"%s"
+"\".\n"
+"See 'Help|Recent Messages' for details."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:177
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:188
msgid "Cannot extend a helix"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:178
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:189
msgid "Cannot trim a helix"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:179
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:190
msgid "Ignore further audit notices?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:180
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:191
#, c-format
msgid "%s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:181
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:192
msgid "Audit Abort?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:182
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:193
msgid "Write Audit File?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:183
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:194
#, c-format
msgid "checkTrackLength: Short track length = %0.3f"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:184
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:195
#, c-format
msgid "checkTrackLength: unknown type: %d"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:185
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:196
#, c-format
msgid "connectTracks: T%d[%d] T%d[%d] d=%0.3f a=%0.3f"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:186
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:197
#, c-format
msgid "GetAngleAtPoint: bad type(%d) for T(%d)"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:187
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:198
#, c-format
msgid "joinTracks: invalid track type=%d"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:188
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:199
#, c-format
msgid "resolveIndex: T%d[%d]: T%d doesn\\\\'t exist"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:189
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:200
msgid "Moved beyond the end of the track"
msgstr "Movido além do fim do trilho"
-#: ../../../../build/work/app/bin/bllnhlp.c:9
-#, fuzzy
-msgid "Invokes online help for this dialog"
-msgstr "Invoca ajuda on-line para esta caixa de diálogo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:10
-msgid "Cancels this command"
-msgstr "Anula este comando"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:11
-msgid "Closes the dialog"
-msgstr "Fecha a caixa de diálogo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:12
-#, fuzzy
-msgid "About program dialog"
-msgstr "Caixa de diálogo \"Sobre\""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:13
-#, fuzzy
-msgid "Move selected object to top"
-msgstr "Move objeto selecionado para o topo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:14
-#, fuzzy
-msgid "Raise or lower all selected tracks"
-msgstr "Eleva ou abaixa todo trecho selecionado"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:15
-msgid "Turn magnetic snap on or off"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:16
-#, fuzzy
-msgid "Move selected object to bottom"
-msgstr "Move objeto selecionado para o fundo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:17
-msgid "Create a section of track for automation"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:18
-#, fuzzy
-msgid "Edit a block definition "
-msgstr "Cria uma nova definição de AMV"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:19
-msgid "Create a new Car/Loco description"
-msgstr "Cria uma nova descrição do material rodante"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:20
-msgid "Manage your Car and Loco Inventory"
-msgstr "Gerencia seu inventário de material rodante"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:21
-msgid "Create track circle from center"
-msgstr "Cria trilho circular a partir do centro"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:22
-msgid "Create fixed radius track circle"
-msgstr "Cria trilho circular com um raio fixo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:23
-msgid "Set Circle Track creation mode"
-msgstr "Configura modo de criação de trilho circular"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:24
-msgid "Create track circle from tangent"
-msgstr "Cria trilho circular a parti da tangente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:25
-msgid "Removes elevation from Selected tracks"
-msgstr "Remove inclinação dos trechos selecionados"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:26
-msgid "Copy objects to clipboard and duplicate them in exactly the same place"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:27
-msgid "Command Options dialog"
-msgstr "Caixa de dialogo das opções de comando"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:28
-msgid "Controls colors"
-msgstr "Cores dos controles"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:29
-msgid "Connect two tracks"
-msgstr "Conecta dois trilhos"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:30
-msgid "Create a control for layout automation"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:31
-#, fuzzy
-msgid "Select control element to create"
-msgstr "Elementos de controle de layout"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:32
-#, fuzzy
-msgid "Manage control elements"
-msgstr "Elementos de controle de layout"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:33
-#, fuzzy
-msgid "Set Convert mode"
-msgstr "Configura modo de criação de curva"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:34
-msgid "Convert from Fixed Track to Cornu"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:35
-msgid "Convert from Cornu and Bezier to Fixed Track"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:36
-msgid "Copy selected objects to clipboard"
-msgstr "Copia objetos selecionados para a área de transferencia"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:37
-#, fuzzy
-msgid "Create Cornu track"
-msgstr "Criar Bloco"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:38
-msgid "Create curved track from center"
-msgstr "Cria trilho curvado a partir de um centro"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:39
-msgid "Create curved track from chord"
-msgstr "Cria trilho curvado a partir de uma corda"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:40
-msgid "Create curved track from end-point"
-msgstr "Cria trilho curvado a partir de uma extremidade"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:41
-#, fuzzy
-msgid "Create Bezier track"
-msgstr "Criar trecho em hélice"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:42
-msgid "Set Curve Track creation mode"
-msgstr "Configura modo de criação de curva"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:43
-msgid "Create curved track from tangent"
-msgstr "Cria trecho curvado a partir de um tangente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:44
-msgid "Manipulate Custom designer entries"
-msgstr "Manipula entradas do editor personalizado"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:45
-msgid "Moves selected objects to clipboard"
-msgstr "Move objetos selecionados para a área de transferencia"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:46
-msgid "Delete objects"
-msgstr "Elimina objetos"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:47
-msgid "Playback demos"
-msgstr "Playback de demonstrações"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:48
-msgid "Change Object Properties"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:49
-msgid "Change to properties mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:50
-msgid "Deselect all selected objects"
-msgstr "Deseleciona todos os objetos"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:51
-msgid "Change Display parameters"
-msgstr "Altera parâmetros das janelas"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:52
-msgid "Create benchwork"
-msgstr "Cria bancada"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:53
-msgid "Create a box"
-msgstr "Cria um retângulo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:54
-msgid "Set Circle drawing command"
-msgstr "Configura comando de desenho de circunferência"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:55
-msgid "Create a circle"
-msgstr "Cria circunferência"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:56
-msgid "Draw a circle line from center"
-msgstr "Desenha uma circunferência a partir do centro"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:57
-msgid "Draw a fixed radius circle line"
-msgstr "Desenha uma circunferência com um raio fixo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:58
-msgid "Draw a circle line from tangent"
-msgstr "Desenha uma circunferência a partir de uma tangente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:59
-msgid "Set Curve drawing command"
-msgstr "Configura comando de desenho de circunferência"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:60
-msgid "Create a curved line"
-msgstr "Cria uma linha curva"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:61
-msgid "Create a curved line from End"
-msgstr "Cria uma linha curva a partir de uma extremidade"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:62
-msgid "Create a curved line from center"
-msgstr "Cria uma linha curva a partir de um centro"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:63
-msgid "Create a curved line from chord"
-msgstr "Cria uma linha curva a partir de uma corda"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:64
-msgid "Create a curved line from tangent"
-msgstr "Cria uma linha curva a partir de uma tangente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:65
-#, fuzzy
-msgid "Create a Bezier line"
-msgstr "Cria uma linha curva"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:66
-msgid "Create a dimension line"
-msgstr "Cria uma linha de uma dimensão"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:67
-msgid "Create a filled box"
-msgstr "Cria um retângulo preenchido"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:68
-msgid "Create a filled circle"
-msgstr "Cria um círculo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:69
-msgid "Draw a filled circle from center"
-msgstr "Desenha um círculo a partir de um centro"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:70
-msgid "Draw a fixed radius filled circle"
-msgstr "Desenha um círculo com um raio fixo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:71
-msgid "Draw a filled circle from tangent"
-msgstr "Desenha um círculo a partir de uma tangente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:72
-#, fuzzy
-msgid "Create a polygon"
-msgstr "Cria uma linha poligonal"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:73
-msgid "Create a filled polygon"
-msgstr "Cria um polígono preenchido"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:74
-msgid "Create a polyline"
-msgstr "Cria uma linha poligonal"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:75
-msgid "Create a straight line"
-msgstr "Cria uma linha reta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:76
-msgid "Set Line drawing command"
-msgstr "Configura comando de desenho de linha"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:77
-msgid "Set Shape drawing command"
-msgstr "Configura comando de desenho de polígonos"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:78
-msgid "Draw table edge"
-msgstr "Desenha limite do tablado"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:79
-msgid "Easement menu"
-msgstr "Menu de curva de transição"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:81
-msgid "Generate a Parts List of selected objects"
-msgstr "Gera uma lista de itens dos objetos selecionados"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:82
-msgid "Set Import/Export mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:83
-msgid "Export a .xti file"
-msgstr "Expota um arquivo XTI"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:84
-msgid "Export a DXF file"
-msgstr "Exporta um arquivo DXF"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:86
-msgid "Flip selected objects"
-msgstr "Vira objetos selecionados"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:87
-msgid "Adjust snap grid"
-msgstr "Ajusta grade"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:88
-msgid "Enable snap grid"
-msgstr "Habilita grade"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:89
-msgid "Show snap grid"
-msgstr "Mostra grade"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:90
-msgid "Create a structure from a Group of objects"
-msgstr "Cria uma estrutura a partir de um grupo de objetos"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:91
-msgid "Create a hand-laid turnout"
-msgstr "Cria um AMV personalizado"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:92
-msgid "Create a track helix"
-msgstr "Cria trilho em hélice"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:93
-msgid "Import a .xti file"
-msgstr "Importa um arquivo XTI"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:94
-#, fuzzy
-msgid "Import an .xti file as a Module"
-msgstr "Importa um arquivo XTI"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:95
-msgid "Join two tracks"
-msgstr "Junta dois trilhos"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:96
-msgid "Join two lines or polylines"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:97
-msgid "Set Join mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:98
-msgid "Change Layers"
-msgstr "Muda camadas"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:99
-msgid "Selects the current drawing layer"
-msgstr "Seleciona a camada de desenho corrente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:100
-msgid "Layout parameters"
-msgstr "Parâmetros de layout"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:102
-#, fuzzy
-msgid "Show/Hide Map Window"
-msgstr "Mostrar/Ocultar camada"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:103
-msgid "Modify or extend a track"
-msgstr "Modifica ou estende trilho"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:104
-msgid "Change To modify mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:105
-msgid "Move selected objects"
-msgstr "Move objetos selecionados"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:106
-msgid "Move a label"
-msgstr "Move uma etiqueta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:107
-msgid "Move selected objects to current layer"
-msgstr "Move objetos selecionados para a camada corrente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:109
-#, fuzzy
-msgid "Print a bitmap"
-msgstr "Imprime um bitmap"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:110
-#, fuzzy
-msgid "Pan or zoom the layout"
-msgstr "Posiciona material rodante no layout"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:111
-msgid "Change to zoom/pan mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:112
-msgid "Create a parallel track"
-msgstr "Cria um trilho paralelo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:113
-#, fuzzy
-msgid "Create a parallel line"
-msgstr "Cria um trilho paralelo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:114
-#, fuzzy
-msgid "Set Parallel mode"
-msgstr "Paralelo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:115
-msgid "Register"
-msgstr "Registra"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:116
-msgid "Copy objects from clipboard"
-msgstr "Copia objetos da área de transferencia"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:117
-msgid "Perferences dialog"
-msgstr "Caixa de diálogo de preferências"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:118
-msgid "Display prices of turnouts, sectional tracks and structures"
-msgstr "Exibe preços de AMVs, trilhos e estruturas"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:119
-msgid "Print the layout"
-msgstr "Imprime o layout"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:120
-#, fuzzy
-msgid "Loads and unloads parameter files into/from toolbar"
-msgstr "Carrega e descarrega arquivo de parâmetros"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:121
-msgid "Elevation Profile Command"
-msgstr "Comando de perfil de inclinação"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:123
-msgid "Command recorder"
-msgstr "Comando de gravação"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:125
-msgid "Update selected Turnout and Structure definitions"
-msgstr "Atualiza AMV selecionado e definições de estruturas"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:126
-msgid "Rescale selected objects"
-msgstr "Reescala objetos selecionados"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:127
-msgid "Rotate selected object(s)"
-msgstr "Rotaciona objetos selecionados"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:128
-msgid "Show a ruler"
-msgstr "Exibe régua"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:129
-msgid "Select objects"
-msgstr "Seleciona objetos"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:130
-#, fuzzy
-msgid "Change To Select Mode"
-msgstr "Alterar escala"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:131
-msgid "Selects all objects on the layout"
-msgstr "Seleciona todos os objetos do layout"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:132
-msgid "Selects all objects in the current Layer"
-msgstr "Seleciona todos os objetos da camada corrente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:133
-msgid "Invert current selection"
-msgstr "Inverte seleção"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:134
-msgid "Split a track"
-msgstr "Secciona um trilho"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:135
-msgid "Select stranded (unconnected) track pieces"
-msgstr "Seleciona trecho não conectados"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:136
-msgid "Create a sensor (ie. a occupancy detector or a toggle switch)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:137
-#, fuzzy
-msgid "Create a signal for train control"
-msgstr "Cria trilho circular a parti da tangente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:138
-msgid "Choose which commands are sticky"
-msgstr ""
-"Escolhe quais comandos são \"grudendos\". Aqueles cujos botões de atalho "
-"continuarão habilitados após seu uso."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:139
-msgid "Create straight track"
-msgstr "Cria um trilho reto"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:140
-msgid "Place a structure on the layout"
-msgstr "Posiciona uma estrutura no layout"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:141
-#, fuzzy
-msgid "Create a switchmotor for turnout control"
-msgstr "Cria uma nova definição de AMV"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:142
-#, fuzzy
-msgid "Edit a switchmotor definition"
-msgstr "Cria uma nova definição de AMV"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:143
-msgid "Enter text on the layout"
-msgstr "Entra um texto no layout"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:144
-#: ../../../../build/work/app/bin/bllnhlp.c:531
-msgid "Controls the size of the entered text"
-msgstr "Controla o tamanho do texto inserido"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:145
-msgid "Plain Text"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:146
-msgid "Tip of the Day window"
-msgstr "Janela de dica do dia"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:147
-msgid "Run Trains"
-msgstr "Roda trens"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:148
-msgid "Change To Run Trains Mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:149
-msgid "Pause/Resume Trains"
-msgstr "Pausa / roda trens"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:150
-msgid "Place a car on the layout"
-msgstr "Posiciona material rodante no layout"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:151
-msgid "Exit Trains"
-msgstr "Sai do modo de trem"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:152
-msgid "Hide/Unhide a track"
-msgstr "Oculta / exibe um trilho"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:153
-msgid "Make/Unmake a track a bridge"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:154
-msgid "Place a turnout or sectional track"
-msgstr "Posiciona um AMV ou trilho"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:155
-msgid "Create a new turnout definition"
-msgstr "Cria uma nova definição de AMV"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:156
-msgid "Place a turntable"
-msgstr "Posiciona um virador de locomotivas"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:157
-msgid "Updates old source files with 3 part titles"
-msgstr "Atualiza arquivos antigos com três partes"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:159
-msgid "Ungroup objects"
-msgstr "Desagrupa objetos"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:160
-msgid "Draw tracks with thin lines"
-msgstr "Desenha trilhos com linhas finas"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:161
-msgid "Draw tracks with medium lines"
-msgstr "Desenha trilhos com linhas médias"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:162
-msgid "Draw tracks with thick lines"
-msgstr "Desenha trilhos com linhas grossas"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:163
-msgid "Change drawing scale"
-msgstr "Altera escala de desenho"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:164
-#: ../../../../build/work/app/bin/bllnhlp.c:176
-msgid "Zoom in"
-msgstr "Aproxima"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:165
-#: ../../../../build/work/app/bin/bllnhlp.c:177
-msgid "Zoom out"
-msgstr "Afasta"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:166
-msgid "File Menu"
-msgstr "Menu de arquivo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:167
-msgid "Save layout"
-msgstr "Salva layout"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:168
-msgid "Save layout under a new name "
-msgstr "Salva layout com um novo nome"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:169
-msgid "New layout"
-msgstr "Novo layout"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:170
-msgid "Generate parts list"
-msgstr "Gera lista de itens"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:171
-msgid "Load a layout"
-msgstr "Carrega um layout"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:172
-msgid "Exit the program"
-msgstr "Sai do programa"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:173
-msgid "Revert to last saved state of layout plan"
-msgstr "Reverte para o estado do último layout salvo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:174
-msgid "Edit menu"
-msgstr "Menu editar"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:175
-msgid "Redraw layout"
-msgstr "Redesenha layout"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:178
-#: ../../../../build/work/app/bin/bllnhlp.c:181
-msgid "Tools menu"
-msgstr "Menu de ferramentas"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:179
-msgid "View menu"
-msgstr "Menu visualizar"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:180
-msgid "Toolbar configuration"
-msgstr "Configuração da barra de ferramentas"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:182
-msgid "Options menu"
-msgstr "Menu de opções"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:183
-msgid "Playback/Record commands"
-msgstr "Comandos de playback e gravação"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:184
-msgid "Window menu"
-msgstr "Menu de janelas"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:185
-msgid "Help menu"
-msgstr "Menu de ajuda"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:186
-msgid "Recent error messages and explanations"
-msgstr "Últimas mensagens de erros e explicações"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:187
-msgid "Move Hot Bar left"
-msgstr "Move barra de itens à esquerda"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:188
-msgid "Move Hot Bar right"
-msgstr "Move barra de itens à direita"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:189
-msgid "Total track count"
-msgstr "Total de trilhos"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:190
-msgid "X Position of cursor"
-msgstr "Posição X do cursor"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:191
-msgid "Y Position of cursor"
-msgstr "Posição Y do cursor"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:192
-msgid "Drawing scale"
-msgstr "Escala de desenho"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:193
-msgid "Message and status line"
-msgstr "Mensagem e linha de status"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:194
-#: ../../../../build/work/app/bin/bllnhlp.c:195
-msgid "Main layout canvas"
-msgstr "Tela de layout principal "
-
-#: ../../../../build/work/app/bin/bllnhlp.c:196
-msgid "Main drawing canvas"
-msgstr "Tela de desenho principal"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:197
-msgid "Command buttons"
-msgstr "Botões dos comandos"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:198
-msgid "Menus"
-msgstr "Menus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:199
-msgid "Tile, Filename and Window Manager buttons"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:200
-msgid "Turnout and Structure Hot Bar"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:201
-msgid "Active layer list and layer buttons"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:202
-msgid "Map window"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:203
-msgid "This is the portion of the layout shown in the Main Window canvas"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:204
-msgid "Raise or Lower all Selected Track"
-msgstr "Eleva ou abaixa todos os trechos selecionados"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:205
-#, fuzzy
-msgid "Name of block"
-msgstr "Isto não é um bloco!"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:206
-msgid "Script that the block will run"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:207
-msgid "List of tracks in the Block"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:208
-msgid "Add or Update car object"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:209
-msgid "Manufacturer name"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:212
-msgid "Is the Car a Locomotive?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:213
-msgid "Part Number and Description"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:214
-msgid "Manufacturer Part Number"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:215
-msgid "Use the Selected figure as the car image"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:216
-msgid "Use the default figure as the car image"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:217
-msgid "Optional description of the Car Part"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:218
-msgid "Flip car image"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:219
-msgid "Display Car Item information or reporting marks and dimensions"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:220
-msgid "Full Roadname"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:221
-#: ../../../../build/work/app/bin/bllnhlp.c:222
-msgid "Car Type"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:223
-msgid "Reporting Marks (Roadname abbreviation)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:224
-#: ../../../../build/work/app/bin/bllnhlp.c:411
-msgid "Car Number"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:225
-msgid "Car body Color"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:226
-msgid "Length of car body"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:227
-msgid "Width of car body"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:228
-msgid "Distance between Trucks "
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:229
-msgid "Distance Trucks are displaced along Car"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:230
-msgid "Coupler are mounted on body or truck"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:231
-msgid "Overall Coupled Length"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:232
-msgid "Coupler Length from end of car"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:233
-msgid "Diagram of Car"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:234
-msgid "Item Index Number"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:235
-msgid "Original Purchase Price"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:237
-msgid "Condition of car"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:238
-msgid "Original Purchase Date"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:239
-msgid "Last Service Date"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:240
-msgid "Number of identical cars to be entered"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:241
-msgid "Do all the cars have the same Number?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:242
-msgid "Notes about the car"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:243
-#: ../../../../build/work/app/bin/bllnhlp.c:244
-msgid "Create a new car Part or Prototype definitions"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:245
-msgid "Finds the selected Car Item on the layout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:246
-#: ../../../../build/work/app/bin/bllnhlp.c:247
-#: ../../../../build/work/app/bin/bllnhlp.c:248
-#: ../../../../build/work/app/bin/bllnhlp.c:249
-msgid "Sort the Item list"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:251
-msgid "Edit the selected Car Item"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:252
-msgid "Add a new Car Item"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:253
-msgid "Delete the selected Car Items"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:254
-msgid "Import a Car Item .csv file"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:255
-msgid "Export a Car Item .csv file"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:256
-msgid "Create a text list of the Car Items"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:257
-msgid "Specifies the radius of the circle track"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:258
-msgid "Default command is Describe or Select"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:259
-msgid "Action to invoke on Right-Click"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:260
-msgid ""
-"Replace current selection with clicked object or add clicked object to "
-"selection"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:261
-msgid "Clicking into an empty area clears selection if select mode is <add>"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:263
-#, fuzzy
-msgid "The list of control elements"
-msgstr "Elementos de controle de layout"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:264
-#, fuzzy
-msgid "Edit the element"
-msgstr "Menu editar"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:265
-msgid "Delete the element"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:266
-msgid "Contents Label for new Parameter file"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:267
-msgid "List of custom designed turnouts and structures"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:268
-msgid "Invoke designer editor"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:269
-msgid "Remove selected entries"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:270
-msgid "Copy selected entries to Parameter File"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:271
-msgid "Create a New part or prototype"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:272
-msgid "Update custom file and close"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:273
-msgid "Executes the next step of the demo"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:274
-msgid "Skip to next demo"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:275
-msgid "Stops the demonstration and returns you to XTrackCAD"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:276
-msgid "Select speed of Playback"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:277
-msgid "This is where comments about the demo are displayed"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:314
-msgid "Move the Main canvas if you drag near the edge"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:315
-msgid "Color tracks by layer or individually"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:316
-msgid "Color draw objects by layer or individually"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:317
-msgid "Controls the drawing of hidden tracks"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:318
-msgid "Controls the drawing of End-Points"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:319
-msgid "How to draw track ties"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:320
-msgid "Show crosshair at center of curves"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:321
-msgid "Drawing scale when to draw tracks with 2 rails"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:322
-msgid "Drawing scale of the map window"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:323
-msgid "Whether the main layout is updated while dragging on the Map"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:324
-msgid "Enable labels for Turnouts, Flextrack Lengths and Elevations"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:325
-msgid "When to label Turnout, Flextrack Lengths and Elevations"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:326
-msgid "Font size for labels on layout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:327
-msgid "Label elements on the Hot Bar"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:328
-msgid "Label elements on layout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:329
-msgid "Label elements for lists"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:330
-msgid "How to group cars on the Train Hot Bar"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:331
-msgid "Delay (in mS) between updating train movements"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:332
-msgid "Don't show trains in tunnels when tunnels are hidden"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:333
-msgid "Display unconnected endpoints of track with special marks"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:334
-msgid "Whether the Main Drawing Area shows as much of the room as possible"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:336
-msgid "Width of the lines"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:337
-msgid "Color of the lines"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:338
-msgid "List of types of Lumber"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:339
-msgid "Color of Benchwork"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:340
-msgid "Orientation of Benchwork"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:341
-msgid "Size of Dimension Arrows"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:342
-msgid "This controls the sharpness of the easement curve"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:343
-msgid "Minimum radius"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:344
-msgid "Maximum offset"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:345
-msgid "Easement length"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:346
-msgid ""
-"These radio buttons are a short-cut for Values of 0.0, 0.5, 1.0 and 2.0. "
-"None turns Easements off"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:347
-msgid "Complete easement selection"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:348
-msgid "Type of elevation"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:349
-msgid "Height of End Point"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:350
-msgid "Compute elevation based on neighbors"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:351
-msgid "Compute grade based on neighbors"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:352
-msgid "Specify a name for an End-Point"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:354
-msgid "Print parts list"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:355
-#: ../../../../build/work/app/bin/bllnhlp.c:466
-#: ../../../../build/work/app/bin/bllnhlp.c:575
-msgid "Invoke the Print Setup dialog"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:356
-msgid "Save parts list to file"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:357
-msgid "This is the list of parts for the layout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:358
-msgid "Enable prices on the Parts List"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:359
-#: ../../../../build/work/app/bin/bllnhlp.c:362
-msgid "Spacing between major grid lines"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:360
-#: ../../../../build/work/app/bin/bllnhlp.c:363
-msgid "Allows the spacing to be subdivided"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:361
-#: ../../../../build/work/app/bin/bllnhlp.c:364
-msgid "Specifies if positions are snaped in this direction"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:365
-#: ../../../../build/work/app/bin/bllnhlp.c:366
-#: ../../../../build/work/app/bin/bllnhlp.c:367
-msgid "Shows the origin and angle of the grid"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:368
-msgid "Specifies if the grid is shown"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:369
-msgid "Completes the grid specification"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:373
-msgid "Number of segments in Group"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:374
-msgid "Replace the Selected object with the new definition?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:375
-msgid "Creates a new Structure (or Turnout)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:376
-msgid "Elevation difference of Helix End-Points"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:377
-msgid "Helix Radius"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:378
-msgid "Number of turns in the helix"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:379
-msgid "Angle betweek helix entrance and exit"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:380
-msgid "Grade in helix"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:381
-msgid "Separation between helix layers"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:382
-#, fuzzy
-msgid "Desired curve radius between straight tracks"
-msgstr "Cria um trilho reto"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:383
-msgid "Layer list"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:384
-msgid "Layer Name"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:385
-msgid "Color of layer"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:386
-msgid "Layer is drawn on Main window"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:387
-msgid "Layer cannot be changed"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:388
-msgid "Layer is drawn on Map window"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:389
-msgid "Number of layer buttons to show"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:390
-msgid "Number of objects in this layer"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:392
-msgid "Load layer configuration from default"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:393
-msgid "Save current layer configuration as default"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:394
-msgid "Overwrite layer configuration with system default values"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:395
-#: ../../../../build/work/app/bin/bllnhlp.c:396
-msgid "Specifies the size of the room (in inches or centimeters)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:397
-msgid "Specifies the layout Title that will appear on printouts"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:398
-msgid "Specifies the layout Subtitle that will appear on printouts"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:399
-msgid "Specifies the Modelling Scale"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:400
-msgid "Specifies the rail gauge, ie. the distance between the rails"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:401
-msgid ""
-"Specifies minimum track radius (in inches or centimeters). Tracks with a "
-"smaller radius are considered exceptional."
-msgstr ""
-"Especifica raio mínimo (em centímetros ou em polegadas). Trechos com raios "
-"menores serão considerados excepcionais."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:402
-msgid ""
-"Specifies maximum track elevation expressed as a percent (%). Tracks with a "
-"larger elevation are considered exceptional."
-msgstr ""
-"Especifica inclinação máxima (em porcentagem). Trechos com inclinações "
-"maiores serão considerados excepcionais."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:403
-#, fuzzy
-msgid "Select the background image"
-msgstr "Seleciona a camada de desenho corrente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:404
-msgid "Remove the background image"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:405
-msgid "Specifies the x offset of the bottom left of the background image"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:406
-msgid "Specifies the y offset of the bottom left of the background image"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:407
-msgid ""
-"Specifies how large the bottom edge of the background image should be in "
-"model units"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:408
-msgid ""
-"Specifies the screening of the background image from 0 (none) to 100% "
-"(vanishes)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:409
-msgid "Specifies the rotation angle of the background image in degrees"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:412
-msgid ""
-"This is the body of the Note. To change this select Modify from the File "
-"Menu"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:414
-msgid "Specifies number of pixels per inch (or centimeter)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:416
-msgid ""
-"Specifies whether Layout Titles, Borders or Track Centerlines are printed on "
-"the BitMap"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:417
-msgid ""
-"Specifies the separation between the original track and the parallel track/"
-"line"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:418
-msgid ""
-"Specifies the a factor that increases the seperation as the radius of the "
-"original track reduces. 0.0 means no increase."
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:419
-msgid "Enter your name as specified in the XTrackCAD Registration Notice"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:420
-msgid "Enter the key value as specified in the XTrackCAD Registration Notice"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:421
-msgid "Validates the name and key. Terminates the registration command"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:422
-msgid "0ᅵ is up or to the right"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:423
-msgid "Choose english (inches) or metric (centimeters)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:424
-msgid "How to display length measurements"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:425
-msgid "Do not create tracks to be shorter than this value"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:426
-msgid "Maximum distance between connected end points"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:427
-msgid "Minimum angle between connected End-Points"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:428
-msgid "Specifies the minimum angle between tracks connected to a turntable"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:429
-msgid "Trains will crash above this speed"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:430
-msgid "Enable/Disable balloon popup help windows"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:431
-msgid "Enable/Disable show of flextrack on hotbar"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:432
-msgid "How far you can move the mouse before its considered a drag"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:433
-msgid "How long you can hold a mouse button down before its considered a drag"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:434
-msgid "Minimum distance (in pixels) between grid lines/ticks"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:435
-#, fuzzy
-msgid ""
-"Specifies the Check Point frequency; number of modifications made since the "
-"last checkpoint."
-msgstr ""
-"Especifica a freqüência de salvamento automático. Isto é, o número de "
-"modificações desde a última gravação."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:436
-msgid "Specifies the number of checkpoints after save before auto-saving."
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:437
-msgid "Resume work on last layout or start with new layout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:439
-msgid "Updated cost of current selected item"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:441
-msgid "Selection list for prices"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:442
-#: ../../../../build/work/app/bin/bllnhlp.c:443
-#: ../../../../build/work/app/bin/bllnhlp.c:444
-msgid "Price of specified length of flex-track"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:446
-#, fuzzy
-msgid "Controls the printing of a centerline of track cmdPrint"
-msgstr "Controla o tamanho do texto inserido"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:447
-msgid "Controls the reduction (scale) of the printout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:448
-msgid "Scaled page width (Scale times physical page width)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:449
-msgid "Sets page size to the maximum (based on scale and physical page size)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:450
-msgid "Scaled page height (Scale times physical page height)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:451
-msgid "Sets scale, origin and angle for a one page printout of the layout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:452
-msgid "Print page in Portrait or Landscape format"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:453
-msgid "Order of printing pages"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:454
-msgid "Print Title, Date, Author and other information at bottom of page?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:455
-msgid "Ignore unprintable page margins?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:456
-msgid "Print Registration Marks at 1:1?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:457
-msgid "Print Snap Grid?"
-msgstr "Linha e divisão da grade"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:458
-msgid "Print Rulers on all page edges?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:459
-msgid "Print Roadbed Outline?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:460
-msgid "Print Roadbed Outline"
-msgstr "Imprimir leito dos trilhos"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:461
-#: ../../../../build/work/app/bin/bllnhlp.c:462
-#: ../../../../build/work/app/bin/bllnhlp.c:464
-msgid ""
-"Origin of the print grid. This is useful if you want to reprint a set of "
-"pages"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:463
-msgid "Resets the origin and angle to 0"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:465
-msgid "Deselects all pages"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:467
-msgid "Print selected pages and terminates the print command"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:468
-#, fuzzy
-msgid "List of loaded, shown or hidden parameter files"
-msgstr "Carrega e descarrega arquivo de parâmetros"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:469
-msgid "Show parameter files by names or descriptions"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:470
-msgid "Toggle the shown status of the selected parameter file"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:471
-msgid "Find extra parameter files from the filesystem"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:472
-msgid "Find parameter files from the system library"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:473
-msgid "Update parameter file list"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:474
-#, fuzzy
-msgid "Reload parameter file from list"
-msgstr "Lendo arquivos de parâmetros"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:475
-#, fuzzy
-msgid "Select all parameter files shown"
-msgstr "Lendo arquivos de parâmetros"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:476
-msgid "Profile of specified path"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:477
-msgid "Clear the profile"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:478
-msgid "Print the profile"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:480
-msgid "Stop recording"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:481
-msgid "Insert a message"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:482
-msgid "End a message"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:483
-msgid "Message body"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:484
-msgid "Possible turnouts"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:485
-msgid "Skip this turnout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:487
-msgid "Manufacturer of Object"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:488
-msgid "Description of Object"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:489
-msgid "Part Nuber of Object"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:491
-msgid "Rescale by Scale Conversion or by Ratio"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:492
-msgid "Original Scale of the selected objects"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:493
-msgid "Original Gauge of the selected objects"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:494
-msgid "New Scale of the selected objects"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:495
-msgid "New Gauge of the selected objects"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:496
-msgid "Change track dimensions to new scale"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:497
-msgid "Change size by this amount"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:499
-msgid "Snap Grid Line and Division"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:500
-msgid "X and Y position markers"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:501
-msgid "Border rulers, room boundaries and table edges"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:502
-msgid "Primary Axis of grid rotation"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:503
-msgid "Secondary Axis of grid rotation"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:504
-msgid "Unselected tracks"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:505
-msgid "Selected tracks"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:506
-msgid "Color of tracks on the Profile path"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:507
-msgid "Color of Exceptional tracks"
-msgstr "Cor dos trechos excepcionais"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:508
-msgid "Color of track ties"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:509
-msgid "Updates the colors"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:510
-msgid "Angle in degrees"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:511
-msgid "Rotate object(s) by specified amount"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:512
-msgid "Enter one or more words as search terms '*' means all"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:513
-#, fuzzy
-msgid "Find matching file descriptions"
-msgstr "Selecionar e arrastar uma descrição"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:514
-msgid "Search Results"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:515
-msgid "Show Descriptions or FileNames in results"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:516
-msgid "Add selected entries into parameter file list"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:517
-#, fuzzy
-msgid "Select All found entries"
-msgstr "Selecionar o segundo trecho"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:518
-msgid "Reload the system library contents for finding"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:519
-msgid "Choose commands to be sticky"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:520
-msgid "Make the commands sticky"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:521
-msgid "List of available structure"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:522
-msgid "Diagram of the selected structure"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:523
-msgid "Hide Selection window when placing Structure"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:524
-msgid "Drawing scale and size"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:525
-msgid "Complete structure placement"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:526
-msgid "Choose a Pier number"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:527
-#, fuzzy
-msgid "Name of the Motor"
-msgstr "Alterar motor de AMV"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:528
-msgid "Value when switch is normal"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:529
-msgid "Value when the switch is reversed"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:530
-msgid "Value for a positive comfirmation of switch position"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:532
-msgid "Useful information about the program"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:533
-msgid "Show Tip of the Day every time the program starts"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:534
-msgid "Show the next Tip of the Day"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:535
-msgid "Show the previous Tip of the Day"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:537
-msgid "Controls which Command Buttons are displayed"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:538
-msgid "List of Cars"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:539
-msgid "List of active trains"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:541
-msgid "Train odometer"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:542
-msgid "Reset odometer to 0"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:543
-msgid "Find train on layout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:544
-msgid "Follow train around layout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:545
-msgid "Flip direction at End Of Track"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:546
-msgid "Change direction of train"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:547
-msgid "Stop the train"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:548
-msgid "List of available turnouts for the current scale"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:549
-msgid ""
-"Diagram of the currently selected turnout. Click on a End-Point to select "
-"the Active End-Point"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:550
-msgid ""
-"A menu list of various type of turnouts and sectional tracks you can define"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:551
-msgid "Hide Selection window when placing Turnout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:552
-msgid "The selected Active End-Point"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:553
-msgid "Current selected turnout, (displayed in the diagram window)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:554
-msgid "One the End-Points that can be selected"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:556
-#: ../../../../build/work/app/bin/bllnhlp.c:557
-msgid "Angle of the specified track to the center line of the turnout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:558
-msgid "Specifies if angles are entered as Frog Numbers or in degrees"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:559
-#: ../../../../build/work/app/bin/bllnhlp.c:560
-msgid "Desciption"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:561
-msgid "Turnout description (Manuf., Size, Part Number, etc)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:562
-#: ../../../../build/work/app/bin/bllnhlp.c:563
-#: ../../../../build/work/app/bin/bllnhlp.c:564
-msgid "Length from the base to the end of the specified track"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:566
-#: ../../../../build/work/app/bin/bllnhlp.c:567
-msgid "Offset of the track End-Point from the center line of the turnout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:570
-#: ../../../../build/work/app/bin/bllnhlp.c:571
-msgid "Prints a full size diagram of the turnout for checking"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:572
-msgid "Color of Roadbed lines"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:573
-msgid "Width of Roadbed lines"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:574
-msgid "Width of Roadbed"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:576
-msgid "Closes the window and returns to the Turnout Selection window"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:577
-msgid "Specifies the diameter of the turntable"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:578
-msgid "Old Turnout title"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:579
-msgid "List of available titles"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:580
-msgid "Leave the Turnouts' title unchanged"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:581
-msgid "Invoke the Parameter Files dialog"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:582
-msgid "List of available turnouts"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:583
-msgid "Update the Turnouts' title"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:587
-msgid "Sample"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:589
-msgid "Slant"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:590
-msgid "Font selection dialog"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:591
-msgid "Weight"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:592
-msgid "Printer Abort Window"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:593
-msgid "Print to filename"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:594
-msgid "Specify Postscript font alias mapping"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:595
-msgid ""
-"Displays the Print Setup window to change printers, orientation, paper size, "
-"etc."
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:596
-msgid "Closes this dialog"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:597
-msgid "Page orientation"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:598
-msgid "Unprintable margins"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:599
-msgid "Updates and closes this dialog"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:600
-msgid "Choose paper size"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:601
-msgid "Choose printer"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:602
-msgid "Print test page"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:1
-#: ../../../../build/work/app/i18n/custmsg.h:8
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:1
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:8
msgid ""
"XTrackCAD provides demonstrations on most of the program's features. The "
"demos can be run by clicking on the Help menu on the Main window and then "
"selecting Demos."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:3
-#: ../../../../build/work/app/i18n/custmsg.h:10
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:3
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:10
msgid ""
"The notation \"Menu|Item\" is used in the documentation (and the on-line "
"demos and tips) to indicate the selection of a menu item.\n"
@@ -10103,61 +8478,61 @@ msgid ""
"menu bar of the Main window and then selecting the Open item from that menu."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:6
-#: ../../../../build/work/app/i18n/custmsg.h:12
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:12
msgid ""
"Set your modeling scale on the \"Options|Layout\" dialog. This controls the "
"Turnouts and Structures that are available, Easement values and track gauge."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:8
-#: ../../../../build/work/app/i18n/custmsg.h:14
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:8
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:14
msgid ""
"A number of example layouts are provided. These files can be accessed by "
"\"Help|Examples\"."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:10
-#: ../../../../build/work/app/i18n/custmsg.h:16
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:10
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:16
msgid ""
"When installed, the length units are set based on your contry: inches for "
"United States or Canada and centimeters elsewhere. You can change this on "
"the \"Options|Preferences\" dialog by choosing between Metric and English."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:12
-#: ../../../../build/work/app/i18n/custmsg.h:18
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:18
msgid ""
"You can change the overall size of your layout on the \"Options|Layout\" "
"dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:14
-#: ../../../../build/work/app/i18n/custmsg.h:20
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:20
msgid ""
"When installed, the default command is the Select command. You might want to "
"change this to the Decribe command. You can do this on the \"Options|"
"Command Options\" dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:16
-#: ../../../../build/work/app/i18n/custmsg.h:22
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:22
msgid ""
"When Selecting tracks, the connection between Selected and Unselected tracks "
"is marked by a Red X. This indicates points where the connection between "
"tracks will be broken if you Move or Rotate the Selected tracks."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:18
-#: ../../../../build/work/app/i18n/custmsg.h:24
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:18
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:24
msgid ""
"You can change orientation of the pages on the Print command by moving or "
"rotating the Print Grid.\n"
"Shift-Left-Drag moves the grid and Shift-Right-Drag rotates the grid."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:21
-#: ../../../../build/work/app/i18n/custmsg.h:26
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:26
msgid ""
"You can add track to any unconnected End-Point with the Modify command.\n"
"Hold down the Shift key and click on the End-Point and drag away to create a "
@@ -10165,8 +8540,8 @@ msgid ""
"Repeat with the new End-Point to create flowing tracks."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:25
-#: ../../../../build/work/app/i18n/custmsg.h:28
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:28
msgid ""
"You can create curved tracks in four ways by dragging from:\n"
" the 1st endpoint in the direction of the curve\n"
@@ -10179,8 +8554,8 @@ msgid ""
"to change the method."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:34
-#: ../../../../build/work/app/i18n/custmsg.h:30
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:30
msgid ""
"When creating a straight or a curved track by dragging from the 1st End "
"Point, you can snap the new track to an existing open end point by holding "
@@ -10188,8 +8563,8 @@ msgid ""
"The new track will be joined to the old when you create it."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:37
-#: ../../../../build/work/app/i18n/custmsg.h:32
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:32
msgid ""
"Track Circles provide a quick way to see what arrangement of tracks will fit "
"in your layout spaces. Create Circles with your typical radius and place "
@@ -10205,8 +8580,8 @@ msgid ""
"to change the method."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:45
-#: ../../../../build/work/app/i18n/custmsg.h:34
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:45
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:34
msgid ""
"Easements (spiral transition curves) are used when track changes from "
"straight to curved by gradually changing the radius. This improves "
@@ -10215,15 +8590,15 @@ msgid ""
"The Easement dialog is used to control easements."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:49
-#: ../../../../build/work/app/i18n/custmsg.h:36
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:36
msgid ""
"\"Help|Recent Messages\" shows the last error and warning messages that were "
"generated by the program. Also an explanation of each message is displayed."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:51
-#: ../../../../build/work/app/i18n/custmsg.h:38
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:38
msgid ""
"When creating stall tracks for a turntable, you usually want the the stall "
"tracks to be spaced evenly.\n"
@@ -10232,8 +8607,8 @@ msgid ""
msgstr ""
# Este texto não descreve com clareza onde se localiza o diretório de trabalho e nem onde copiar o arquivo file.xtc. Verificar também se o nome do arquivo destino está correto.
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:54
-#: ../../../../build/work/app/i18n/custmsg.h:40
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:40
msgid ""
"XTrackCAD periodically saves the current layout in a check point file. The "
"'Check Point' item on the 'Options|Preferences' dialog controls how often "
@@ -10248,15 +8623,15 @@ msgstr ""
"copiando o arquivo temporário (\"xtrkcad.ckp\" no diretório de trabalho do "
"XTrackCAD) para \"file.xtc\"."
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:57
-#: ../../../../build/work/app/i18n/custmsg.h:42
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:42
msgid ""
"The Parallel command is helpful to layout yards and sidings. If the "
"Parallel track abuts with an existing track, it is automatically connected."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:59
-#: ../../../../build/work/app/i18n/custmsg.h:44
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:59
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:44
msgid ""
"You can use Shift-Drag in Select command to move and rotate selected "
"tracks.\n"
@@ -10264,8 +8639,8 @@ msgid ""
"Control-Left-Drag can move labels."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:63
-#: ../../../../build/work/app/i18n/custmsg.h:46
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:46
msgid ""
"You can move and rotate the Snap Grid to align with existing track or "
"benchwork."
@@ -10273,8 +8648,8 @@ msgstr ""
"Você pode mover e rotacionar a grade para alinhar com uma linha existente ou "
"a bancada."
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:65
-#: ../../../../build/work/app/i18n/custmsg.h:48
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:48
msgid ""
"Use the Parts List command to measure track length.\n"
"Select the tracks you want to measure and then click on the Parts List "
@@ -10282,8 +8657,8 @@ msgid ""
"track. You will have to add in the length of any Turnouts."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:68
-#: ../../../../build/work/app/i18n/custmsg.h:50
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:68
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:50
msgid ""
"The length of flex-track attached to each Turnout is displayed on layout "
"near the end-points of the Turnouts.\n"
@@ -10291,8 +8666,8 @@ msgid ""
"Display dialog is selected."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:71
-#: ../../../../build/work/app/i18n/custmsg.h:52
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:71
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:52
msgid ""
"The Profile command can be used to find the length of a continous section of "
"track.\n"
@@ -10303,32 +8678,32 @@ msgid ""
"first track and then select other tracks along the path."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:75
-#: ../../../../build/work/app/i18n/custmsg.h:54
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:54
msgid ""
"Layers can be used to contain different groups of tracks or other features. "
"You might use one layer for the main-line, another of staging tracks and "
"another of benchwork.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:77
-#: ../../../../build/work/app/i18n/custmsg.h:56
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:77
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:56
msgid ""
"You can give each layer a name (by using the \"Manage|Layer\" dialog). This "
"name will be displayed as the Balloon Help for the corresponding Layer "
"button, if you have Balloon Help enabled on the \"Options|Display\" dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:79
-#: ../../../../build/work/app/i18n/custmsg.h:58
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:79
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:58
msgid ""
"You can remove groups of buttons or the Hot Bar from the Main window to give "
"you more room if you are not using some features. Also, the number of Layer "
"buttons displayed is controlled by the \"Manage|Layers\" dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:81
-#: ../../../../build/work/app/i18n/custmsg.h:60
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:60
msgid ""
"The size of the map window is controlled by the overall size of the room "
"(specified on the layout dialog) and the map scale (on the display dialog). "
@@ -10337,31 +8712,31 @@ msgid ""
"XTrackCad will prevent you from making the map window too small or too large."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:84
-#: ../../../../build/work/app/i18n/custmsg.h:62
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:62
msgid ""
"You can unload parameter files you are not using by the Parameter Files "
"dialog. This removes unused Turnout and Structure definitions from the Hot "
"Bar and makes the program start faster."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:86
-#: ../../../../build/work/app/i18n/custmsg.h:64
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:64
msgid ""
"Right-Click on the Main window displays a menu list of commands as an "
"alternative to pressing the buttons on the tool bar or using the menu "
"accelerator keys."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:87
-#: ../../../../build/work/app/i18n/custmsg.h:66
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:87
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:66
msgid ""
"Holding down the Shift key while you Right-Click will display options for "
"the current command (if any)."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:89
-#: ../../../../build/work/app/i18n/custmsg.h:68
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:89
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:68
msgid ""
"Right-Click on the Hot Bar displays a menu of the different groups of "
"objects which you can use to jump to the group you are interested in.\n"
@@ -10369,8 +8744,8 @@ msgid ""
"position (1 is the start, 5 is half way, 0 is the end)."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:92
-#: ../../../../build/work/app/i18n/custmsg.h:70
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:92
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:70
msgid ""
"Right-Drag on the Map window sets the origin and scale of the Main window.\n"
"The Main window will be centered on the spot where you started the Draw and "
@@ -10378,36 +8753,36 @@ msgid ""
"window."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:95
-#: ../../../../build/work/app/i18n/custmsg.h:72
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:95
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:72
msgid ""
"To refresh the Main window, press Control-L (hold down the 'Ctrl' key and "
"then press the 'l' key)."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:97
-#: ../../../../build/work/app/i18n/custmsg.h:74
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:97
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:74
msgid ""
"The File menu contains a list of the last 5 layouts you were working on."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:99
-#: ../../../../build/work/app/i18n/custmsg.h:76
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:76
msgid ""
"The Print command can optionally print lines representing the roadbed for "
"all tracks. This is useful when printing full size (1:1) for cutting "
"roadbed."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:101
-#: ../../../../build/work/app/i18n/custmsg.h:78
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:101
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:78
msgid ""
"Pressing the 'Esc' key cancels the current command and invokes the default "
"command, (which is either Describe or Select)."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:103
-#: ../../../../build/work/app/i18n/custmsg.h:80
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:103
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:80
msgid ""
"When moving or rotating tracks on slow machines or with a large number of "
"tracks, you can improve performance by changing the way tracks are drawn "
@@ -10416,8 +8791,8 @@ msgid ""
"normally, as simple lines or just draw end-points."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:106
-#: ../../../../build/work/app/i18n/custmsg.h:82
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:106
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:82
msgid ""
"The colors of different parts of the Main window can be changed with the "
"Colors dialog. In particular, the Snap Grid color can be changed to make it "
@@ -10427,8 +8802,8 @@ msgstr ""
"através da caixa de diálogo de cores. Particularmente, a cor da grade pode "
"ser mudada para ficar melhor visível quando impressa."
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:108
-#: ../../../../build/work/app/i18n/custmsg.h:84
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:108
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:84
msgid ""
"By default objects are drawn in their normal colors. Tracks will be drawn "
"in Black. Objects can also be drawn in the color according to their Layer. "
@@ -10437,43 +8812,43 @@ msgid ""
"non-Tracks."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:111
-#: ../../../../build/work/app/i18n/custmsg.h:86
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:111
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:86
msgid ""
"Each Layer can be drawn or hidden by the 'Visible' toggle on the Layers "
"dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:112
-#: ../../../../build/work/app/i18n/custmsg.h:88
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:88
msgid ""
"Short cut Layer buttons can also be displayed on the tool bar for up to the "
"first 20 layers.\n"
"This buttons allow to Show or Hide the layers."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:115
-#: ../../../../build/work/app/i18n/custmsg.h:90
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:115
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:90
msgid "The name of the Layer is the Balloon Help for the Layer button."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:117
-#: ../../../../build/work/app/i18n/custmsg.h:92
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:92
msgid ""
"The playback speed of the Demos can be changed by using Speed drop down list "
"on the Demo window."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:119
-#: ../../../../build/work/app/i18n/custmsg.h:94
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:119
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:94
msgid ""
"Many of the commands and dialogs can be invoked by special key combinations "
"called Menu-Accelerators. These are listed on the Menus next to the command "
"name. For example, Control-P will invoke the Print command."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:121
-#: ../../../../build/work/app/i18n/custmsg.h:96
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:121
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:96
msgid ""
"The Connect command is used to join Sectional track pieces that don't quite "
"fit together.\n"
@@ -10481,8 +8856,8 @@ msgid ""
"selected End-Points closer together."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:124
-#: ../../../../build/work/app/i18n/custmsg.h:98
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:124
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:98
msgid ""
"To copy a group of objects: Select the objects, press Control-c (or select "
"Copy from the Edit menu), press Control-v (or select Paste from the Edit "
@@ -10491,24 +8866,24 @@ msgid ""
"them into position."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:127
-#: ../../../../build/work/app/i18n/custmsg.h:100
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:127
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:100
msgid ""
"In the Rotate (or Select) commands you can press Shift-Right-Click to "
"display the Rotate menu which allows you to rotate the selected objects by a "
"specific angle."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:129
-#: ../../../../build/work/app/i18n/custmsg.h:102
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:129
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:102
msgid ""
"You can use the Move-To-Join option of the Join command (hold down the Shift "
"key) to move a group of Selected tracks to attach with some unselected End-"
"Point."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:131
-#: ../../../../build/work/app/i18n/custmsg.h:104
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:104
msgid ""
"The Price List dialog (on the File Menu) is used to specify the prices of "
"each type of Turnout, Sectional Track and Structure. Also, the length and "
@@ -10517,8 +8892,8 @@ msgid ""
"the selected objects."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:134
-#: ../../../../build/work/app/i18n/custmsg.h:106
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:134
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:106
msgid ""
"Areas of water can represented by a Polygon (use the Draw command) of the "
"appropiate color.\n"
@@ -10530,79 +8905,79 @@ msgid ""
"You can also use a Polygon to represent aisles."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:140
-#: ../../../../build/work/app/i18n/custmsg.h:108
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:140
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:108
msgid ""
"When you create Benchwork you can move it below other objects by Selecting "
"the Benchwork and use the Below command.\n"
"Also, put Benchwork in a separate Layer so you can hide it if desired."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:143
-#: ../../../../build/work/app/i18n/custmsg.h:110
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:143
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:110
msgid ""
"You can enter Distances and Lengths using any format regardless of the "
"Length Format on the Preferences dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:144
-#: ../../../../build/work/app/i18n/custmsg.h:112
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:112
msgid ""
"You can enter Metric values when English is the default Units and vice versa."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:146
-#: ../../../../build/work/app/i18n/custmsg.h:114
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:146
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:114
msgid ""
"When entering Distances and Lengths you can press the '=' key to redisplay "
"the value in the default format."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:147
-#: ../../../../build/work/app/i18n/custmsg.h:116
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:147
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:116
msgid ""
"You can also press the 's' key to convert a Prototype measurement to a Scale "
"measurement by dividing by the ratio for the current scale."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:148
-#: ../../../../build/work/app/i18n/custmsg.h:118
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:118
msgid ""
"The 'p' key will convert a Scale measurement to a Prototype measurement."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:150
-#: ../../../../build/work/app/i18n/custmsg.h:120
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:150
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:120
msgid ""
"You can place cars on the layout using the Train Simulation command to check "
"clearance points, track to track separation and coupling."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:152
-#: ../../../../build/work/app/i18n/custmsg.h:122
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:152
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:122
msgid ""
"Use the MoveTo button on the Custom Management dialog to move your custom "
"Turnout, Structure and Car definitions to a .XTP parameter file."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:154
-#: ../../../../build/work/app/i18n/custmsg.h:124
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:154
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:124
msgid ""
"If you are printing multiple pages on a continuous feed printer (such a Dot "
"Matrix) you can change the Page Order if necessary to print pages out in "
"proper order."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:156
-#: ../../../../build/work/app/i18n/custmsg.h:126
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:126
msgid ""
"On the Car Item and Car Part dialogs, you can enter custom values for "
"Manufacturer, Part and Road by typing the new value directly into the Drop "
"Down List."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:158
-#: ../../../../build/work/app/i18n/custmsg.h:128
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:128
msgid ""
"On the Car Item dialog, you can change the Road, Number, Color and other "
"values for a Car. This is useful if you repaint or renumber a car. \n"
@@ -10610,20 +8985,20 @@ msgid ""
"the couplers."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:161
-#: ../../../../build/work/app/i18n/custmsg.h:130
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:161
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:130
msgid ""
"You can Export your Car Inventory to a file in Comma-Separated-Value format "
"which can be read by most spread-sheet programs."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:163
-#: ../../../../build/work/app/i18n/custmsg.h:132
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:132
msgid "Use the Train Odometer to measure distances along the track."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:165
-#: ../../../../build/work/app/i18n/custmsg.h:134
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:134
msgid ""
"Holding down the Shift key when clicking the Zoom In or Zoom Out button will "
"zoom to a programmed Drawing Scale. \n"
@@ -10631,23 +9006,23 @@ msgid ""
"it's program Zoom to the current Drawing Scale."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:168
-#: ../../../../build/work/app/i18n/custmsg.h:136
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:168
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:136
msgid ""
"You can trim the ends of turnouts by holding down the Shift key when using "
"the Split command."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:170
-#: ../../../../build/work/app/i18n/custmsg.h:138
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:138
msgid ""
"The Split command can be used to create Block Gaps at end points between two "
"tracks. \n"
"Either rail or both rails can be gapped, which are drawn as thick lines."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:173
-#: ../../../../build/work/app/i18n/custmsg.h:140
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:173
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:140
msgid ""
"Trains will 'crash' if they hit another car when travelling faster than the "
"'Max Coupling Speed' (on the Command Options dialog). \n"
@@ -10656,15 +9031,15 @@ msgid ""
"Crashed trains must be manually moved back onto the track."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:177
-#: ../../../../build/work/app/i18n/custmsg.h:142
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:177
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:142
msgid ""
"You can add new track segments to a turnout definition or create a "
"definition from individual tracks using the Group command."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:179
-#: ../../../../build/work/app/i18n/custmsg.h:144
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:179
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:144
msgid ""
"The center point and radius of Curved and Circle tracks can optionally be "
"drawn. \n"
@@ -10672,27 +9047,27 @@ msgid ""
"Left-Click on the track."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:182
-#: ../../../../build/work/app/i18n/custmsg.h:146
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:146
msgid ""
"Turnout, Curved and Helix track labels can be individually turned on and off "
"by doing a Shift-Right-Click on the track when using the Move Label command."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:184
-#: ../../../../build/work/app/i18n/custmsg.h:148
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:148
msgid ""
"You can use the Describe command to change the font size of Text objects."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:186
-#: ../../../../build/work/app/i18n/custmsg.h:150
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:186
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:150
msgid ""
"You can use the Describe command to change the size of Dimension Line labels."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:188
-#: ../../../../build/work/app/i18n/custmsg.h:152
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:188
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:152
msgid ""
"Normally Right-Click displays a popup menu of commands and Shift-Right-Click "
"displays options for the current command. \n"
@@ -10700,8 +9075,8 @@ msgid ""
"Options dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:191
-#: ../../../../build/work/app/i18n/custmsg.h:154
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:191
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:154
msgid ""
"The Align item on the Rotate command options menu will let you Align "
"selected objects with any unselected object. \n"
@@ -10709,23 +9084,23 @@ msgid ""
"second point you selected."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:194
-#: ../../../../build/work/app/i18n/custmsg.h:156
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:194
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:156
msgid ""
"Print To Bitmap allows you to print the track center line. \n"
"This is useful if you later print the bitmap full size as a template when "
"laying track."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:197
-#: ../../../../build/work/app/i18n/custmsg.h:158
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:197
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:158
msgid ""
"You can export the selected tracks to a DXF file which can be read by most "
"CAD programs."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:199
-#: ../../../../build/work/app/i18n/custmsg.h:160
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:199
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:160
msgid ""
"Lengths and distances can be displayed in a variety of units and formats "
"such as 1' 10 3/4\", 1ft 10.75in or 22.750. In Metric mode, distances can "
@@ -10733,8 +9108,8 @@ msgid ""
"item on the Preferences dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:201
-#: ../../../../build/work/app/i18n/custmsg.h:162
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:201
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:162
msgid ""
"Tracks that are too steep or curve too tightly are drawn in the Exception "
"color (Yellow by default). \n"
@@ -10742,16 +9117,16 @@ msgid ""
"The maximum grade and minimum radius are set on the Preferences dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:205
-#: ../../../../build/work/app/i18n/custmsg.h:164
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:164
msgid ""
"The Flip command produces a mirror-image of the selected tracks. \n"
"If possible, right-hand turnouts are relabeled as left-hand turnouts (and "
"vice versa)."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:208
-#: ../../../../build/work/app/i18n/custmsg.h:166
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:208
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:166
msgid ""
"Then Ungroup command will break turnouts and structures into individual "
"track, line and shape segments. \n"
@@ -10759,21 +9134,21 @@ msgid ""
"Then use the Group command to update the definition."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:212
-#: ../../../../build/work/app/i18n/custmsg.h:168
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:212
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:168
msgid "Dimension lines show the distance between two points."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:214
-#: ../../../../build/work/app/i18n/custmsg.h:170
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:214
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:170
msgid ""
"A variety of Benchwork (rectangular, L-girder and T-girder) can be drawn. \n"
"Use the Below command to move the Benchwork below the track for proper "
"display."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:217
-#: ../../../../build/work/app/i18n/custmsg.h:172
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:217
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:172
msgid ""
"The Turnout Designer dialogs allow you to specify the width of any attached "
"roadbed. \n"
@@ -10781,8 +9156,8 @@ msgid ""
"can be specified."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:220
-#: ../../../../build/work/app/i18n/custmsg.h:174
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:220
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:174
msgid ""
"The Color dialog (on the Options menu) is used to change the color of "
"different objects on the display. \n"
@@ -10794,8 +9169,8 @@ msgstr ""
"Você pode alterar a cor da grade e das bordas, como também dos trechos "
"normais, selecionados e excepcionais."
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:223
-#: ../../../../build/work/app/i18n/custmsg.h:176
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:223
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:176
msgid ""
"You can set the elevation (height) of track end-points. \n"
"Elevations of intermediate end points can be computed automatically based on "
@@ -10804,8 +9179,8 @@ msgid ""
"Please see the Elevations help and demo."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:228
-#: ../../../../build/work/app/i18n/custmsg.h:178
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:228
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:178
msgid ""
"Once you have elevations on some endpoints, you can use the Profile command "
"to produce an elevation graph. \n"
@@ -10813,15 +9188,15 @@ msgid ""
"Please see the Profile help and demo for details."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:232
-#: ../../../../build/work/app/i18n/custmsg.h:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:232
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:180
msgid ""
"You can draw tracks with wider lines for rails. \n"
"Select the tracks and use Medium or Thick Tracks on the Edit menu."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:235
-#: ../../../../build/work/app/i18n/custmsg.h:182
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:235
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:182
msgid ""
"The Helix command is used to create a Helix track. \n"
"You specify some parameters: height, radius, number of turns, grade and "
@@ -10831,8 +9206,8 @@ msgid ""
"track."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:240
-#: ../../../../build/work/app/i18n/custmsg.h:184
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:240
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:184
msgid ""
"Many objects on the layout have labels: Turnouts/Helix/Curved Titles, Track "
"Lenghts, End-Point Elevations, Track Elevations and Cars. \n"
@@ -10840,591 +9215,587 @@ msgid ""
"the Display options dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:243
-#: ../../../../build/work/app/i18n/custmsg.h:186
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:186
msgid ""
"If you hold down the Control key when using the Rotate command, the rotation "
"will be done in increments of 15ᅵ."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:245
-#: ../../../../build/work/app/i18n/custmsg.h:188
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:245
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:188
msgid ""
"When using the Rotate command, Shift-Right-Click displays a menu allowing "
"you to rotate by specific amounts or to align the selected objects with "
"another object."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:247
-#: ../../../../build/work/app/i18n/custmsg.h:190
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:247
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:190
msgid ""
"This is last tip. If you have any additions or comments, please let us know."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:25
-#: ../../../../build/work/app/i18n/custmsg.h:192
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:192
msgid ""
"The unconnected endpoints of a straight or curved track can be changed with "
"the 'Modify Track' command.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:31
-#: ../../../../build/work/app/i18n/custmsg.h:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:194
msgid ""
"The endpoint of a straight track is selected and then Left-Dragged to change "
"its length. A blue anchor shows that the length can be extended.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:48
-#: ../../../../build/work/app/i18n/custmsg.h:196
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:196
msgid ""
"If you try to drag the selected endpoint beyond the far endpoint, the track "
"extends in the opposite direction.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:68
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:73
-#: ../../../../build/work/app/i18n/custmsg.h:199
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:68
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:199
msgid ""
"A curved track is selected and it's new endpoint is determined by the angle "
"to the cursor. \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:105
-#: ../../../../build/work/app/i18n/custmsg.h:201
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:105
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:201
msgid "It's possible to almost create a complete circle.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:202
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:202
msgid ""
"If you drag the mouse beyond the start of the curve the track becomes very "
"short.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:113
-#: ../../../../build/work/app/i18n/custmsg.h:204
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:114
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:204
msgid "Here you are warned that the track will be too short.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:147
-#: ../../../../build/work/app/i18n/custmsg.h:206
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:121
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:206
+msgid ""
+"Because the modified track is too short, the modification is abandoned the "
+"original track is restored.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:208
msgid ""
"If you move the cursor away from the curve, you will create a straight track "
"tangent to the curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:169
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:174
-#: ../../../../build/work/app/i18n/custmsg.h:209
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:185
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:211
msgid ""
"If you adjust the endpoint of a turnout or sectional track the track is "
-"extended by a similar track segment. The extension can be \n"
+"extended by a similar track segment. The extension can be a straight or a "
+"curve.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:210
-#, fuzzy
-msgid "a straight or a curve.\n"
-msgstr "Cria um trilho reto"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:190
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:195
-#: ../../../../build/work/app/i18n/custmsg.h:213
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:200
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:214
msgid ""
"You can change the radius of a straight or curved track that is connected at "
"one endpoint by holding down the Shift key while Left-dragging on it.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:214
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:215
msgid ""
"The blue cross anchor shows that this is possible when shift is held down "
"with no buttons.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:209
-#: ../../../../build/work/app/i18n/custmsg.h:216
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:219
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:217
msgid ""
"This lets you change a straight track into a curved track (and vice versa) "
"as well as changing the radius of a curved track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:252
-#: ../../../../build/work/app/i18n/custmsg.h:218
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:262
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:219
msgid ""
"You can form an extension of a straight or curved Track that is connected at "
"one endpoint using an easement by holding down the Ctrl key while Left-"
"dragging on it.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:219
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:220
msgid ""
"The blue half cross anchor shows that this is possible when the Ctrl key is "
"held down with no mouse button.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:267
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmbench.xtr:9
-#: ../../../../build/work/app/i18n/custmsg.h:222
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:277
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:9
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:223
msgid "You can draw a variety of different types of benchwork:\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:223
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:224
msgid "- rectangular (1x2, 2x4 etc)\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:225
msgid "- L girders\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:226
msgid "- T girders\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:226
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:227
msgid "You can also draw them in different orientations.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmbench.xtr:25
-#: ../../../../build/work/app/i18n/custmsg.h:228
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:229
msgid "We will draw two 3x6 inch L-girders.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmbench.xtr:43
-#: ../../../../build/work/app/i18n/custmsg.h:230
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:43
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:231
msgid ""
"The flange of the top L-Girders is on the outside edge of the girders. We "
"want to change the girder so both flanges are on the inside.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:231
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:232
msgid "We will use the <Describe> command for this.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmbench.xtr:54
-#: ../../../../build/work/app/i18n/custmsg.h:233
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:234
msgid "Change the Orientation to Right.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmbench.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:235
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:236
msgid "Now both flanges are on the inside of the two girders.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:34
-#: ../../../../build/work/app/i18n/custmsg.h:237
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:238
msgid ""
"Pushing the <Describe> button will cancel any other command in progress.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:238
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:239
msgid ""
"Here we will begin to create a curved track which is a two step process.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:47
-#: ../../../../build/work/app/i18n/custmsg.h:240
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:241
msgid ""
"When we clicked on the <Describe> button, the current command was "
"cancelled.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:241
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:242
msgid ""
"When in <Describe> mode, selecting any object will print a description in "
"the Status Bar and display a dialog showing properties of the clicked-on "
"object.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:57
-#: ../../../../build/work/app/i18n/custmsg.h:243
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:244
msgid ""
"Certain parameters of the object can be changed. In this case we'll change "
"the length\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:65
-#: ../../../../build/work/app/i18n/custmsg.h:245
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:246
msgid "Let's look at the Turnout...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:73
-#: ../../../../build/work/app/i18n/custmsg.h:247
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:248
msgid "and change the turnout name and part no.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:84
-#: ../../../../build/work/app/i18n/custmsg.h:249
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:250
msgid "You can change the contents of text...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:93
-#: ../../../../build/work/app/i18n/custmsg.h:251
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:93
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:252
msgid "and its size.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:100
-#: ../../../../build/work/app/i18n/custmsg.h:253
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:100
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:254
msgid ""
"If you select a note, the Description dialog appears which displays the "
"contents of the note.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:112
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcircle.xtr:7
-#: ../../../../build/work/app/i18n/custmsg.h:256
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:112
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:257
msgid ""
"Like the <Curve> track command, there are several ways to create a Circle "
"track.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:257
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:258
msgid ""
"The first is to specify a fixed radius and simply drag the Circle into "
"position.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:259
msgid "We will change the Radius before proceeding.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcircle.xtr:24
-#: ../../../../build/work/app/i18n/custmsg.h:260
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:261
msgid "The next method is to drag from the edge of the Circle to the center.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcircle.xtr:37
-#: ../../../../build/work/app/i18n/custmsg.h:262
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:263
msgid ""
"The last is similar, but you drag from the center of the Circle to the "
"edge.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcircle.xtr:50
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:157
-#: ../../../../build/work/app/i18n/custmsg.h:265
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:50
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:157
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:266
msgid ""
"We have built a siding using Sectional track and have 2 End-Points that "
"don't line up and are not connected automatically when placing the sectional "
"track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:162
-#: ../../../../build/work/app/i18n/custmsg.h:267
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:162
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:268
msgid ""
"We use the <Connect> command to adjust neighboring tracks so the gap is "
"closed.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:268
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:269
msgid ""
"Note: the adjustments are only done on tracks which have only 1 or 2 "
"connections. In this example the Turnouts would not be affected.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:175
-#: ../../../../build/work/app/i18n/custmsg.h:270
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:175
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:271
msgid "And now the gap is closed.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:181
-#: ../../../../build/work/app/i18n/custmsg.h:272
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:181
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:273
msgid "Other tracks have been shifted slightly to close the gap.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:188
-#: ../../../../build/work/app/i18n/custmsg.h:274
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:188
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:275
msgid "You can see these slight mis-alignments.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:275
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:276
msgid "But they will have no effect when the layout is actually built.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:196
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:353
-#: ../../../../build/work/app/i18n/custmsg.h:278
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:196
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:353
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:279
msgid ""
"After working with Sectional track you might get to point where these mis-"
"alignments have accumulated and you wish to remove them.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:279
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:280
msgid ""
"You can remove these slight mis-alignments by tightening the tracks starting "
"from a unconnected End-Point. Use Shift-Left-Click with the <Connect> "
"command.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:280
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:281
msgid "First use the <Split> command to disconnect the tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:363
-#: ../../../../build/work/app/i18n/custmsg.h:282
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:363
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:283
msgid ""
"Then with the <Connect> command, Shift-Left-Click on the 2 End-Points.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:378
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn2.xtr:199
-#: ../../../../build/work/app/i18n/custmsg.h:285
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:378
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:199
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:286
msgid "In example shows a simple figure-8 layout using Sectional track.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:286
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:287
msgid ""
"You will notice that the tracks do not line up exactly in one location.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn2.xtr:211
-#: ../../../../build/work/app/i18n/custmsg.h:288
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:211
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:289
msgid ""
"We can use the <Connect> command to move the connecting tracks slightly and "
"connect the 2 End-Points.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn2.xtr:224
-#: ../../../../build/work/app/i18n/custmsg.h:290
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:291
msgid "The two End-Points are now aligned and connected.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn2.xtr:231
-#: ../../../../build/work/app/i18n/custmsg.h:292
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:231
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:293
msgid "The connection was made by adding small gaps in other tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn2.xtr:238
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:7
-#: ../../../../build/work/app/i18n/custmsg.h:295
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:238
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:296
msgid "There are several ways to create a Curved track.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:296
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:297
msgid ""
"You can choose which to use by clicking on the small button to the left of "
"<Curve> command button if the current Curve command is not the one you "
"want.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:297
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:298
msgid ""
"The first is by clicking on the first End-Point and dragging in the "
"direction of the Curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:20
-#: ../../../../build/work/app/i18n/custmsg.h:299
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:20
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:300
msgid ""
"You will see a straight track with a double ended Red arrow at the end.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:300
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:301
msgid "Click and drag on one of the Red arrows to complete the Curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:39
-#: ../../../../build/work/app/i18n/custmsg.h:302
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:303
msgid ""
"The next method is to click at one End-Point and drag to the center of the "
"Curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:50
-#: ../../../../build/work/app/i18n/custmsg.h:304
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:305
msgid ""
"Now you will see the double ended Red arrow connected to the center of the "
"Curve marked by a small circle.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:306
msgid "As before, drag on one of the Red arrows to complete the Curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:307
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:308
msgid ""
"The next method is similar to the last except that you drag first from the "
"center of the Curve to one End-Point.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:80
-#: ../../../../build/work/app/i18n/custmsg.h:309
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:310
msgid "Once again, drag on a Red arrow to complete the Curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:90
-#: ../../../../build/work/app/i18n/custmsg.h:311
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:90
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:312
msgid ""
"The last method begins by drawing a line between the two End-Points of the "
"Curve. This forms the Chord of the Curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:108
-#: ../../../../build/work/app/i18n/custmsg.h:313
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:108
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:314
msgid "Now drag on a Red arrow to complete the Curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:118
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:112
-#: ../../../../build/work/app/i18n/custmsg.h:316
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:118
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:317
msgid "This demo will construct a control panel for part of a bigger layout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:117
-#: ../../../../build/work/app/i18n/custmsg.h:318
-msgid "For our control panel we will use Å’\" lines. \n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:319
+msgid "For our control panel we will use Œ\" lines. \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:319
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:320
msgid "Also, we will use a 1/8\" grid to lay out our controls.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:320
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:321
msgid ""
"First, we will set up the Snap Grid for 1\" grid lines and 8 divisions.\n"
msgstr "Primeiramente, ajustaremos a grade para linhas de 1″ e 8 divisões.\n"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:132
-#: ../../../../build/work/app/i18n/custmsg.h:322
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:323
msgid "Now, clear the layout and turn on the Snap Grid.\n"
msgstr "Agora, limparemos o layout e ligaremos a grade.\n"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:147
-#: ../../../../build/work/app/i18n/custmsg.h:324
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:147
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:325
msgid "First step: draw the lines representing the tracks.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:325
-msgid "We specify the line width in pixels when at 1:1 zoom.\n"
-msgstr ""
-
-#: ../../../../build/work/app/i18n/custmsg.h:326
-msgid ""
-"To create a 1/4\" line, divide the dots-per-inch (DPI) of your display by "
-"4.\n"
-msgstr ""
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:326
+#, fuzzy
+msgid "We specify the line width in inches.\n"
+msgstr "Substitua este texto por uma nota do traçado"
-#: ../../../../build/work/app/i18n/custmsg.h:327
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:327
msgid ""
-"For MS-Windows the DPI is usually 98, so choose: 98/4 = 24 (approximately).\n"
-msgstr ""
-
-#: ../../../../build/work/app/i18n/custmsg.h:328
-msgid "For Linux, the DPI is usually 72, so choose: 72/4 = 18.\n"
+"To create a 1/4\" line, enter 0.250 in the \"Straight Line Width\" box at "
+"the bottom of the window.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:495
-#: ../../../../build/work/app/i18n/custmsg.h:330
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:492
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:329
+#, fuzzy
msgid ""
"Notice how the Snap Grid keeps the main line and siding track parallel and "
-"the connecting tracks and spur at a 45° angle.\n"
+"the connecting tracks and spur at a 45° angle.\n"
msgstr ""
"Note como a grade mantém a linha principal e lateral paralelas e as linhas "
"de conexão e incita a um ângulo de 45°.\n"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:503
-#: ../../../../build/work/app/i18n/custmsg.h:332
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:500
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:331
msgid "Second step: add LEDs for the turnout position indicators.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:333
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:332
msgid "We will use T1 red and green LEDs.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:334
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:333
msgid "We will zoom in to show positioning.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:513
-#: ../../../../build/work/app/i18n/custmsg.h:336
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:510
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:335
msgid ""
"Notice that when we are in the correct position (on the 1/8\" grid), the "
"Marker lines on the bottom and left rulers will high-light the tick marks. "
"When both ticks are high-lighted, press the space bar to finalize the LED.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:558
-#: ../../../../build/work/app/i18n/custmsg.h:338
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:555
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:337
msgid "Now we'll add push buttons to control the turnouts.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:595
-#: ../../../../build/work/app/i18n/custmsg.h:340
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:592
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:339
msgid "Let's add signals to our siding.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:341
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:340
msgid ""
"The entrance to the siding will be protected by double headed signals.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:342
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:341
msgid "We'll select a signal from the HotBar and place it into position.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:608
-#: ../../../../build/work/app/i18n/custmsg.h:344
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:605
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:343
msgid ""
-"We rotate the signals by Shift-Right-Click and select 90° CW on the popup "
+"We rotate the signals by Shift-Right-Click and select 90° CW on the popup "
"menu. We can not show the popup menu in demo mode, but will simulate the "
"effect.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:657
-#: ../../../../build/work/app/i18n/custmsg.h:346
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:654
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:345
msgid "The exits from the siding will be protected by single headed signals.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:711
-#: ../../../../build/work/app/i18n/custmsg.h:348
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:708
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:347
msgid "Now for some touch-ups.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:349
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:348
msgid "Notice when the line meet at an angle there is a gap.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:350
-msgid "We will fill this gap with the Å’\" dot.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:349
+msgid "We will fill this gap with the Œ\" dot.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:351
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:350
msgid ""
"Note: Win95/Win98/WinME does not support drawing lines with flat end-caps, "
"but only with round end-caps.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:352
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:351
msgid "Users on those platforms will not see the gap.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:734
-#: ../../../../build/work/app/i18n/custmsg.h:354
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:731
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:353
msgid ""
"Add an arrow head to indicate the tracks that connect to the rest of the "
"layout.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:355
-msgid "The second arrow will be flipped 180°\"\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:354
+msgid "The second arrow will be flipped 180°\"\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:772
-#: ../../../../build/work/app/i18n/custmsg.h:357
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:769
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:356
msgid "And add some labels.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:831
-#: ../../../../build/work/app/i18n/custmsg.h:359
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:830
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:358
msgid ""
-"We want to print our control panel onto a 8Å“x11 page, but the control panel "
+"We want to print our control panel onto a 8Âœx11 page, but the control panel "
"is a bit too wide.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:360
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:359
msgid "Lets tighten it up a bit.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:361
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:360
msgid ""
"First turn the Snap Grid on again so any moves we make will keep objects on "
"the grid.\n"
@@ -11432,290 +9803,290 @@ msgstr ""
"Primeiramente, habilitamos a grade novamente para fazer com que os objetos "
"fiquem mantidos nela.\n"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:840
-#: ../../../../build/work/app/i18n/custmsg.h:363
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:839
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:362
msgid "Lets move the spur track to the left 3/4\"\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:862
-#: ../../../../build/work/app/i18n/custmsg.h:365
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:861
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:364
msgid "Now move the right side of the siding over.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:882
-#: ../../../../build/work/app/i18n/custmsg.h:367
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:881
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:366
msgid "Now, adjust the ends of the mainline and siding tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:902
-#: ../../../../build/work/app/i18n/custmsg.h:369
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:901
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:368
msgid "And move the title over as well.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:919
-#: ../../../../build/work/app/i18n/custmsg.h:371
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:918
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:370
msgid "Now you can print it.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:372
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:371
msgid "The cross-hairs on the LEDs and switch show the centers for drilling.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdelund.xtr:33
-#: ../../../../build/work/app/i18n/custmsg.h:374
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:33
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:373
msgid ""
"Pressing the <Delete> button lets you delete selected tracks from the "
"layout.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:375
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:374
msgid ""
"First you select the tracks you want to delete, and then press the <Delete> "
"button.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdelund.xtr:47
-#: ../../../../build/work/app/i18n/custmsg.h:377
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:376
msgid ""
"If you delete a track connected to an easement curve, then the easement "
"curve is deleted as well.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdelund.xtr:57
-#: ../../../../build/work/app/i18n/custmsg.h:379
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:378
msgid "You can use the <Undo> command to undelete tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdelund.xtr:67
-#: ../../../../build/work/app/i18n/custmsg.h:381
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:67
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:380
msgid ""
"If you Left-Drag on the layout you can select all tracks within an area.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:382
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:381
msgid ""
"Note, only tracks within the selected area are deleted. Since the easement "
"curve is connected to a deleted track, it is deleted as well.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdelund.xtr:80
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:6
-#: ../../../../build/work/app/i18n/custmsg.h:385
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:80
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:384
msgid ""
"The demo also simulates entering values and selecting options on various "
"dialogs.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:386
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:385
msgid ""
"This is simulated by drawing a rectangle around the control when values are "
"entered or changed.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:13
-#: ../../../../build/work/app/i18n/custmsg.h:388
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:13
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:387
msgid ""
"Here we are going to make some changes to the Display dialog. Notice how "
"this is simulated.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:389
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:388
msgid "First we are setting 'Draw Tunnel' to 'Normal'\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:21
-#: ../../../../build/work/app/i18n/custmsg.h:391
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:390
msgid "Now we're changing 'Label Font Size' to '56'\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:26
-#: ../../../../build/work/app/i18n/custmsg.h:393
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:392
msgid "We'll change some other options\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:38
-#: ../../../../build/work/app/i18n/custmsg.h:395
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:394
msgid ""
"This effect is only used in demonstration mode. During normal operation you "
"will not see this.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:45
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdimlin.xtr:117
-#: ../../../../build/work/app/i18n/custmsg.h:398
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:45
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:397
msgid "Dimension Lines are used to mark the distances between two points.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:399
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:398
msgid ""
"Here we will create a Dimension Line to show the separation between two "
"tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdimlin.xtr:132
-#: ../../../../build/work/app/i18n/custmsg.h:401
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:400
msgid ""
"We might also want to measure the distance between two structures. In this "
"case we will use a larger dimension line.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdimlin.xtr:143
-#: ../../../../build/work/app/i18n/custmsg.h:403
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:402
msgid ""
"We can use the <Describe> command to change the position of the Dimension "
"Line and the size of the numbers.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdimlin.xtr:161
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:406
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:162
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:405
msgid ""
"This example will show the effect of using easements while joining tracks.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:407
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:406
msgid "First, we will enable Cornu Easements and select Join\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:28
-#: ../../../../build/work/app/i18n/custmsg.h:409
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:408
#, fuzzy
msgid "First select one end of the track\n"
msgstr "Movido além do fim do trilho"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:39
-#: ../../../../build/work/app/i18n/custmsg.h:411
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:410
#, fuzzy
msgid "Now the end of different track\n"
msgstr "Movido além do fim do trilho"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:49
-#: ../../../../build/work/app/i18n/custmsg.h:413
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:412
msgid "You can reposition the ends by dragging them \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:65
-#: ../../../../build/work/app/i18n/custmsg.h:415
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:414
msgid "When you are happy, Hit Enter or Space, if not use Esc\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:73
-#: ../../../../build/work/app/i18n/custmsg.h:417
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:416
msgid ""
"The Curve is made up of Beziers parts that smooth the shape the best way it "
"can be in the space available\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:87
-#: ../../../../build/work/app/i18n/custmsg.h:419
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:87
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:418
msgid "Now, we'll show traditional easements instead.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:142
-#: ../../../../build/work/app/i18n/custmsg.h:421
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:142
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:420
msgid ""
"We've selected sharp easements. The minimum radius curve we can use will be "
"9.75\"\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:422
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:421
msgid "Notice the label on the Easement button has changed to 'Sharp'.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:157
-#: ../../../../build/work/app/i18n/custmsg.h:424
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:157
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:423
msgid ""
"Note the connecting curve does not quite meet the straight tracks. This the "
"'Offset'.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:165
-#: ../../../../build/work/app/i18n/custmsg.h:426
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:425
msgid "Here the connecting curve is too small.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:175
-#: ../../../../build/work/app/i18n/custmsg.h:428
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:175
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:427
msgid ""
"The connecting curve is made of three tracks, the curve and two easement "
"segments on each end.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:112
-#: ../../../../build/work/app/i18n/custmsg.h:430
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:429
msgid ""
"We have designed part of the layout with a siding, 2 branches and a spiral "
"loop. We want to set elevations.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:431
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:430
msgid "Note: make sure you set endpoint elevations on the Display dialog.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:122
-#: ../../../../build/work/app/i18n/custmsg.h:433
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:122
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:432
msgid "First we will set elevations at the end of the branches.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:132
-#: ../../../../build/work/app/i18n/custmsg.h:435
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:434
msgid "We'll select the end of the top branch and set the Elevation to 4\"\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:436
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:435
msgid "First, click on the End-Point.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:142
-#: ../../../../build/work/app/i18n/custmsg.h:438
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:142
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:437
msgid "Next, pick Defined on the Elevation dialog Radio box.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:148
-#: ../../../../build/work/app/i18n/custmsg.h:440
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:439
msgid "And set the Elevation to 4.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:156
-#: ../../../../build/work/app/i18n/custmsg.h:442
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:441
msgid "Now, select the other branch and set it's elevation to 2\"\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:170
-#: ../../../../build/work/app/i18n/custmsg.h:444
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:443
msgid "We can move the Elevation label by using Ctrl-Left-Drag\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:182
-#: ../../../../build/work/app/i18n/custmsg.h:446
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:445
msgid "Now, we set the Elevation at one end of the Siding.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:209
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:215
-#: ../../../../build/work/app/i18n/custmsg.h:449
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:209
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:215
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:448
msgid "We want to find the elevations where the 2 tracks cross.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:224
-#: ../../../../build/work/app/i18n/custmsg.h:451
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:450
msgid "We picked an End-Point on the upper track.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:452
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:451
msgid ""
"XTrackCAD has computed the Elevation (2.33\") at this point based on the "
"Elevation at the siding and a combination of the of the first Elevations.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:453
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:452
msgid ""
"We create a Computed Elevation here that will be automatically adjusted "
"whenever the other Elevations are changed.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:243
-#: ../../../../build/work/app/i18n/custmsg.h:455
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:454
msgid ""
"The Compute Elevation is based on Elevations at end of both of the "
"branches. We may want to base the Elevation on only one branch. For "
@@ -11723,79 +10094,79 @@ msgid ""
"affecting this Computed Elevation.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:455
msgid "We do this by Ignoring the branch we don't want.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:457
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:456
msgid "We'll ignore the lower branch.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:258
-#: ../../../../build/work/app/i18n/custmsg.h:459
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:458
msgid ""
"Notice at the endpoint where the tracks cross, we see the elevation has "
"changed from 2.33 to 2.64.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:264
-#: ../../../../build/work/app/i18n/custmsg.h:461
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:264
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:460
msgid "Now we want to know the elevation of the lower track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:274
-#: ../../../../build/work/app/i18n/custmsg.h:463
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:274
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:462
msgid "There is no endpoint on the lower track here.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:463
msgid ""
"Use Shift-Left-Click to Split the track and create an endpoint we can use "
"for an elevation,\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:287
-#: ../../../../build/work/app/i18n/custmsg.h:466
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:287
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:465
msgid "and create another Computed Elevation point.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:302
-#: ../../../../build/work/app/i18n/custmsg.h:468
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:467
msgid "Now we want to label the grade on this section of track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:311
-#: ../../../../build/work/app/i18n/custmsg.h:470
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:311
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:469
msgid ""
"Again, since there is no endpoint nearby, we split the track to create an "
"endpoint we can use,\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:321
-#: ../../../../build/work/app/i18n/custmsg.h:472
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:321
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:471
msgid "and create a grade marker.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:335
-#: ../../../../build/work/app/i18n/custmsg.h:474
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:335
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:473
msgid "Note the marker has an arrow pointing in the upwards direction.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:344
-#: ../../../../build/work/app/i18n/custmsg.h:476
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:344
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:475
msgid ""
"The last thing we want to do is to create a Station label that we'll use in "
"the <Profile> command.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:358
-#: ../../../../build/work/app/i18n/custmsg.h:478
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:358
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:477
msgid "Now, set the Elevation to Station and enter the its name.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:376
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:31
-#: ../../../../build/work/app/i18n/custmsg.h:481
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:376
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:480
msgid ""
"XTrackCAD can help find tracks that are curved too sharply or are too "
"steep. These tracks are Exception tracks and are drawn in the Exception "
@@ -11805,25 +10176,25 @@ msgstr ""
"demasiadamente inclinados. Esses são os chamados trechos excepcionais e "
"serão desenhados na cor de trechos excepcionais.\n"
-#: ../../../../build/work/app/i18n/custmsg.h:482
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:481
msgid ""
-"In this example we have a curved track with radius of 9\" and a straight "
-"track with a grade of 3.8%.\n"
+"In this example we have a curved track with radius of 9 inches and a "
+"straight track with a grade of 3.8 percent.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:483
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:482
msgid " \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:39
-#: ../../../../build/work/app/i18n/custmsg.h:485
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:484
msgid ""
-"The Layout dialog shows the Minimum Track Radius is 9\" and the Maximum "
-"Track Grade is 5%.\n"
+"The Layout dialog shows the Minimum Track Radius is 9 inches and the Maximum "
+"Track Grade is 5 percent.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:48
-#: ../../../../build/work/app/i18n/custmsg.h:487
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:486
msgid ""
"If we make the curved track sharper it will be drawn in the Exception "
"color.\n"
@@ -11831,8 +10202,8 @@ msgstr ""
"Se instalarmos uma curva muito fechada, ela será desenhada na cor de trecho "
"excepcional.\n"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:61
-#: ../../../../build/work/app/i18n/custmsg.h:489
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:61
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:488
msgid ""
"If we make the straight track steeper it will also be drawn in the Exception "
"color.\n"
@@ -11840,8 +10211,8 @@ msgstr ""
"Se instalarmos um trecho muito inclinado ele será também desenhado na cor de "
"trecho excepcional.\n"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:78
-#: ../../../../build/work/app/i18n/custmsg.h:491
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:78
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:490
msgid ""
"You can change the Exception color on the Colors dialog from the Options "
"menu.\n"
@@ -11849,499 +10220,499 @@ msgstr ""
"Você pode alterar a cor dos trechos excepcionais na caixa de diálogo de "
"cores acessível através do menu \"Opções\".\n"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:85
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:21
-#: ../../../../build/work/app/i18n/custmsg.h:494
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:85
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:493
msgid ""
"The unconnected endpoint of any track can also be extended with the <Modify> "
"command using Right-Drag.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:26
-#: ../../../../build/work/app/i18n/custmsg.h:496
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:495
msgid "Select the endoint and Right-Drag.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:34
-#: ../../../../build/work/app/i18n/custmsg.h:498
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:497
msgid "The extending track can be straight...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:44
-#: ../../../../build/work/app/i18n/custmsg.h:500
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:44
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:499
msgid "... or curved.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:51
-#: ../../../../build/work/app/i18n/custmsg.h:502
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:501
msgid ""
"If you extend a straight or curved flex track and enable Easements then an "
"Easement curve will be automatically generated when you extend the track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:65
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:124
-#: ../../../../build/work/app/i18n/custmsg.h:505
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:65
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:124
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:504
msgid ""
"The <Flip> command will create a mirror image of the selected objects.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:131
-#: ../../../../build/work/app/i18n/custmsg.h:507
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:506
msgid "After selecting the object, drag a line which will form the mirror.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:140
-#: ../../../../build/work/app/i18n/custmsg.h:509
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:140
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:508
msgid "The mirror line does not have to be vertical or horizontal.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:149
-#: ../../../../build/work/app/i18n/custmsg.h:511
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:149
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:510
msgid "You can also flip any number of objects.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:512
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:511
msgid "Watch what happens to the structure and turnout titles.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:163
-#: ../../../../build/work/app/i18n/custmsg.h:514
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:513
msgid ""
"Note that the turnout title has been changed from the Medium Right to Medium "
"Left. When turnouts are flipped, XTrackCAD will try to find a matching "
"turnout and if found will change the name.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:170
-#: ../../../../build/work/app/i18n/custmsg.h:516
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:515
msgid ""
"Structures do not have Right and Left hand versions. Their title is changed "
"to indicate that they were flipped.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:517
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:516
msgid "You can use the <Describe> command to change their title.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:187
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:21
-#: ../../../../build/work/app/i18n/custmsg.h:520
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:187
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:519
msgid ""
"The <Group> and <Ungroup> commands (on the Tools menu) are a powerful way to "
"manipulate Turnout and Structure definitions.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:521
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:520
msgid "We'll start with a simple turnout and add a switch machine.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:50
-#: ../../../../build/work/app/i18n/custmsg.h:523
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:55
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:522
msgid ""
"Now that we have drawn a rough outline of a switch machine we will group it "
"with the turnout definition.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:524
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:523
msgid "First we Select the objects in the new definition.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:526
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:68
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:525
msgid "Now do the <Group> command.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:70
-#: ../../../../build/work/app/i18n/custmsg.h:528
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:527
msgid ""
"The <Group> command dialog shows the Title (Manufacturer, Description and "
"Part Number) of the new definition. This information is taken from the "
"Selected objects you are grouping.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:76
-#: ../../../../build/work/app/i18n/custmsg.h:530
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:529
msgid ""
"The 'Replace with new group?' toggle will replace the Selected objects with "
"the new definition.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:83
-#: ../../../../build/work/app/i18n/custmsg.h:532
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:88
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:531
msgid ""
"If we don't change the Title then the new definition will replace the "
"existing definition.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:533
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:532
msgid "We'll give this definition a new Description.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:94
-#: ../../../../build/work/app/i18n/custmsg.h:535
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:534
msgid "We're done with this definition. Press Ok.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:101
-#: ../../../../build/work/app/i18n/custmsg.h:537
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:106
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:536
msgid "You will see the updated image on the HotBar.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:108
-#: ../../../../build/work/app/i18n/custmsg.h:539
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:113
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:538
msgid ""
"The <Ungroup> command replaces any Selected turnouts or structures with "
"their parts.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:540
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:539
msgid ""
"Structures and non-track segements of turnouts are composed of Lines, "
"Circles and other shapes. In this turnout these are the two lines and the "
"two squares.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:541
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:540
msgid ""
"We will Ungroup this turnout and see how the individual parts can be "
"changed.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:542
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:541
msgid "First Select the turnout and then Ungroup it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:123
-#: ../../../../build/work/app/i18n/custmsg.h:544
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:543
msgid "Notice that the Title now indicates the turnout is Ungrouped.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:545
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:544
msgid "Hit Escape to deselect everything.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:133
-#: ../../../../build/work/app/i18n/custmsg.h:547
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:138
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:546
msgid "Now Select the lines and squares.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:158
-#: ../../../../build/work/app/i18n/custmsg.h:549
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:548
msgid ""
"We could modify these object or add new ones. For now we'll just delete "
"them.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:165
-#: ../../../../build/work/app/i18n/custmsg.h:551
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:550
msgid "And move the Label out of the way.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:176
-#: ../../../../build/work/app/i18n/custmsg.h:553
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:181
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:552
msgid "Notice that the turnout has been broken into three parts.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:198
-#: ../../../../build/work/app/i18n/custmsg.h:555
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:203
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:554
msgid ""
"Two ends of the turnout, from the frog to the end of the diverging leg and "
"from the points to the left, are now straight track sections.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:556
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:555
msgid ""
"The a turnout is made of a number of individual straight and curved track "
"segements. This turnout had four segments:\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:557
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:556
msgid " 1 a short straight segment to the left of the points\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:558
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:557
msgid " 2 a long straight segment to the right of the points\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:559
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:558
msgid " 3 a curved segment from the points to the frog\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:560
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:559
msgid ""
" 4 a straight segment from the frog to the end of the diverging leg.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:561
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:560
msgid "The first and last segments have be converted to straight tracks.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:562
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:561
msgid ""
"The second and third segments form the the body of the turnout and can not "
"be ungrouped further.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:563
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:562
msgid ""
"You can later Group this turnout with the straight segments to recreate the "
"turnout definition. You can also add other track segments to turnout "
"definitions.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:242
-#: ../../../../build/work/app/i18n/custmsg.h:565
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:247
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:564
msgid "Now, create a track and place the new turnout on it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:260
-#: ../../../../build/work/app/i18n/custmsg.h:567
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:265
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:566
msgid "Now suppose we want to replace the black squares with green circles.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:568
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:567
msgid "First we Select the turnout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:272
-#: ../../../../build/work/app/i18n/custmsg.h:570
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:277
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:569
msgid "And now Ungroup it (from the Tools Menu)\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:277
-#: ../../../../build/work/app/i18n/custmsg.h:572
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:282
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:571
msgid ""
"Notice that the name has changed to indicate the turnout was Ungrouped.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:283
-#: ../../../../build/work/app/i18n/custmsg.h:574
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:288
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:573
msgid ""
"Now, hit escape to deselect everything and then Select the 2 squares and "
"delete them.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:300
-#: ../../../../build/work/app/i18n/custmsg.h:576
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:575
msgid "Now draw the green circles...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:321
-#: ../../../../build/work/app/i18n/custmsg.h:578
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:326
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:577
msgid "and Group the new definition.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:340
-#: ../../../../build/work/app/i18n/custmsg.h:580
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:345
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:579
msgid ""
"Notice that the turnout in the HotBar is angled the same as the turnout on "
"the layout. Make sure your new definition is rotated the way you want it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:379
-#: ../../../../build/work/app/i18n/custmsg.h:582
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:384
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:581
msgid "We can also create turnouts from simple straight and curved tracks.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:583
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:582
msgid "We'll create two tracks that have a common endpoint.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:390
-#: ../../../../build/work/app/i18n/custmsg.h:585
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:395
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:584
msgid ""
"When we create the curve from the straight track endpoint we need to hold "
-"down the Shift key to prevent XTrackCAD from trying to join the two tracks.\n"
+"down the <Shift> key to prevent XTrackCAD from trying to join the two "
+"tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:408
-#: ../../../../build/work/app/i18n/custmsg.h:587
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:413
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:586
msgid "At this point we can modify the tracks if necessary.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:588
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:587
msgid "We will use the <Describe> command to change the tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:420
-#: ../../../../build/work/app/i18n/custmsg.h:590
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:425
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:589
msgid "We'll make the Length 7.5\".\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:591
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:590
msgid ""
"If we change the Length, each End-Point will be moved to shorten the track. "
-"We want to just move the Right End-Point. To control this, change the Pivot "
+"We want to just move the Right End-Point. To control this, change the Lock "
"to First which means the Left End-Point will be unchanged when we change the "
"length (or angle) of the track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:430
-#: ../../../../build/work/app/i18n/custmsg.h:593
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:435
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:592
msgid "Now when change the Length only the Right End-Point will move.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:441
-#: ../../../../build/work/app/i18n/custmsg.h:595
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:446
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:594
msgid "Now let's look at the curved track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:451
-#: ../../../../build/work/app/i18n/custmsg.h:597
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:596
msgid ""
"Here the Left End-Point (which we don't want to move) is the Second End-"
-"Point, so we'll make that the Pivot.\n"
+"Point, so we'll make that the Lock.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:459
-#: ../../../../build/work/app/i18n/custmsg.h:599
-msgid "We want the curve to have a radius of 20\" and an angle of 17.5ᅵ.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:598
+msgid "We want the curve to have a radius of 20\" and an angle of 17.5°.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:600
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:599
msgid "First change the Radius...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:468
-#: ../../../../build/work/app/i18n/custmsg.h:602
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:473
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:601
msgid "and the the Angular Length.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:476
-#: ../../../../build/work/app/i18n/custmsg.h:604
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:481
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:603
msgid "Now Select both tracks...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:492
-#: ../../../../build/work/app/i18n/custmsg.h:606
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:497
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:605
msgid "and Group them.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:503
-#: ../../../../build/work/app/i18n/custmsg.h:608
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:508
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:607
msgid ""
"If the two tracks have a common End-Point then they will form a Turnout and "
"can be switched with the <Train> command. Otherwise they will just be two "
"track segments grouped together.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:510
-#: ../../../../build/work/app/i18n/custmsg.h:610
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:515
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:609
msgid ""
"We have created a left hand turnout and we also want a right hand version.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:611
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:610
msgid "We'll use the <Flip> command.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:523
-#: ../../../../build/work/app/i18n/custmsg.h:613
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:528
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:612
msgid ""
"Drag a horizontal line that will be the mirror for the <Flip> command.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:533
-#: ../../../../build/work/app/i18n/custmsg.h:615
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:538
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:614
msgid "Notice the title has changed to Flipped Left.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:616
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:615
msgid "Now Group the turnout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:542
-#: ../../../../build/work/app/i18n/custmsg.h:618
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:547
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:617
msgid "We'll change the Title and Part No for the new defintion.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:555
-#: ../../../../build/work/app/i18n/custmsg.h:620
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:560
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:619
msgid ""
"To Remove the definitions, use the Custom Management dialog on the Tools "
"menu.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:560
-#: ../../../../build/work/app/i18n/custmsg.h:622
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:565
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:621
msgid "Select the definitions you added and Delete them.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:573
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:16
-#: ../../../../build/work/app/i18n/custmsg.h:625
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:578
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:624
msgid ""
"Now we will create a helix in the corner of the layout connected to 2 "
"tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:28
-#: ../../../../build/work/app/i18n/custmsg.h:627
-#, c-format
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:626
msgid ""
-"We will be creating a helix with a Elevation Difference of 12\", Grade of "
-"1.5% and limit the Vertical Separation to at least 2\".\n"
+"We will be creating a helix with a Elevation Difference of 12 inches, Grade "
+"of 1.5 percent and limit the Vertical Separation to at least 2 inches.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:34
-#: ../../../../build/work/app/i18n/custmsg.h:629
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:628
msgid "First set the Elevation Difference to 12\"\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:43
-#: ../../../../build/work/app/i18n/custmsg.h:631
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:43
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:630
msgid "Next set the Vertical Separation to 2\"\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:632
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:631
msgid "Notice how this causes the number of Turns to be set to 6\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:52
-#: ../../../../build/work/app/i18n/custmsg.h:634
-msgid "Next set the Grade to 1.5%\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:52
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:633
+msgid "Next set the Grade to 1.5 percent\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:635
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:634
msgid "Notice how this causes the Radius to change.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:60
-#: ../../../../build/work/app/i18n/custmsg.h:637
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:60
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:636
msgid ""
"Setting these values changes the Radius to 21.2\" and the number of Turns to "
"6.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:66
-#: ../../../../build/work/app/i18n/custmsg.h:639
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:66
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:638
msgid ""
"Now we specify the Angular Separation between the enterance and exit to the "
"helix.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:640
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:639
msgid "Note: this will decrease the Radius slightly.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:76
-#: ../../../../build/work/app/i18n/custmsg.h:642
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:76
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:641
msgid "Next we can fine tune the helix by decreasing the Radius to 15\".\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:643
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:642
msgid "Note the change to the Grade.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:85
-#: ../../../../build/work/app/i18n/custmsg.h:645
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:85
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:644
msgid ""
-"Lastly change the Vertical Separation to 2.5\". The number of Turns will "
-"change to 4 and the grade increase to almost 3%.\n"
+"Lastly change the Vertical Separation to 2.5 inches. The number of Turns "
+"will change to 4 and the grade increase to almost 3 percent.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:646
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:645
msgid ""
"Note: the Vertical Separation will be increased. This value is the "
"Elevation Difference (12.0) divided by the total number of turns. The total "
@@ -12349,165 +10720,165 @@ msgid ""
"Separation.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:94
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:99
-#: ../../../../build/work/app/i18n/custmsg.h:649
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:94
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:648
msgid ""
"Now that the helix parameters are set we can place the helix on the layout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:112
-#: ../../../../build/work/app/i18n/custmsg.h:651
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:650
msgid ""
"Next, join the 2 straight tracks to the helix in the same way we join to a "
"circle.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:145
-#: ../../../../build/work/app/i18n/custmsg.h:653
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:145
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:652
msgid ""
"Notice that the length has increased because we have more than 4 turns in "
"the helix. It is closer to 4.25 turns.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:155
-#: ../../../../build/work/app/i18n/custmsg.h:655
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:155
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:654
msgid ""
"Next, we assign elevations to the 2 End-Points of the helix. This will "
"determine the grade and separation between the helix coils.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:656
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:655
msgid ""
"Note: we could set the elevations anywhere along the connecting tracks "
"instead. XTrackCAD treats a helix as a single length of track for "
"elevations.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:176
-#: ../../../../build/work/app/i18n/custmsg.h:658
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:176
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:657
msgid ""
-"We have set the elevations to 1\" and 13\" to produce a grade of 3.0% with "
-"2.8\" between coils.\n"
+"We have set the elevations to 1 inch and 13 inches to produce a grade of 3.0 "
+"percent with 2.8 inches between coils.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:659
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:658
msgid ""
"You can use the <Describe> command to change the number of Turns or the "
"Elevations at either end of the Helix. This will affect the Grade and "
"Vertical Separation.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:184
-#: ../../../../build/work/app/i18n/custmsg.h:661
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:660
msgid "The helix description can be moved by the <Move Label> command.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:194
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:16
-#: ../../../../build/work/app/i18n/custmsg.h:664
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:663
msgid ""
"In addition to using the turnout definitions you can create 'Hand Laid "
"Turnout'.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:665
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:664
msgid "This is two step process:\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:23
-#: ../../../../build/work/app/i18n/custmsg.h:667
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:666
msgid "1 - click on the frog and drag away to set the frog angle\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:29
-#: ../../../../build/work/app/i18n/custmsg.h:669
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:29
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:668
msgid ""
" Hint: the further you drag from the frog, the more accurate the angle.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:34
-#: ../../../../build/work/app/i18n/custmsg.h:671
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:670
msgid "2 - click and drag to set the position of the points\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:42
-#: ../../../../build/work/app/i18n/custmsg.h:673
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:42
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:672
msgid "We can create Hand Laid Turnouts on curved tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:58
-#: ../../../../build/work/app/i18n/custmsg.h:675
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:58
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:674
msgid "A Hand Laid Turnout is composed of several parts.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:67
-#: ../../../../build/work/app/i18n/custmsg.h:677
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:67
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:676
msgid "The actual Turnout is a short portion at the points.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:77
-#: ../../../../build/work/app/i18n/custmsg.h:679
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:77
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:678
msgid "The other parts are various straight and curved segments.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:81
-#: ../../../../build/work/app/i18n/custmsg.h:681
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:680
msgid "The new curved turnout is also composed of several segments.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:107
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:7
-#: ../../../../build/work/app/i18n/custmsg.h:684
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:107
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:683
msgid "Welcome to the XTrackCAD demonstration.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:685
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:684
msgid ""
"This will show some the features of XTrackCAD in an automated presentation. "
"This window contains a number of controls and a message area (which I hope "
"you are reading now). \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:686
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:685
msgid "The controls are:\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:687
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:686
msgid "Step - advances to the next step of the demo.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:688
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:687
msgid "Next - skips ahead to the next demo.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:689
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:688
msgid "Quit - exits the demo and returns to XTrackCAD.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:690
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:689
msgid "Speed - controls the speed of the demo.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:691
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:690
msgid "Click Step now for the next message.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:23
-#: ../../../../build/work/app/i18n/custmsg.h:693
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:692
msgid ""
"If this is the first time you have used the demo you may want to rearrange "
"the windows so the demo window does not obscure the main window.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:694
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:693
msgid ""
"You can move the demo window now by dragging on the title bar at the top of "
"the window. I suggest you move it to the top of your screen.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:31
-#: ../../../../build/work/app/i18n/custmsg.h:696
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:695
msgid ""
"The various controls are disabled when it would be inappropiate to click on "
"them. When the demo is running the Step button is disabled. When the demo "
@@ -12515,495 +10886,500 @@ msgid ""
"to view the next part of the demo.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:697
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:696
msgid "You can click on Quit to return to XTrackCAD at any time.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:698
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:697
msgid "You can adjust the speed of the demonstration with the Speed control.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:60
-#: ../../../../build/work/app/i18n/custmsg.h:700
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:60
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:699
msgid "The demos are designed to fit within a certain sized window.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:701
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:700
msgid ""
"For best results, change the size of the main XTrackCAD window so the box "
"shape is completely visible.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:702
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:701
msgid "You can do this by clicking and dragging on a corner of the window.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:67
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:72
-#: ../../../../build/work/app/i18n/custmsg.h:705
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:67
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:704
msgid "This is the end of the introductory demo.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:706
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:705
msgid ""
"Please click Step for the next demo or click Quit to return to XTrackCAD.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjcir.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:708
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:707
msgid ""
"You can also join to and from circles. This will change the circles to "
"curves.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:709
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:708
msgid "In this example we will join two circles.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjcir.xtr:24
-#: ../../../../build/work/app/i18n/custmsg.h:711
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:710
msgid ""
"Here we've selected points on the two circles. The direction of the "
"connections (whether clockwise or counter clockwise) is controlled by where "
"on the circle you select the connection points.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjcir.xtr:133
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjcir.xtr:152
-#: ../../../../build/work/app/i18n/custmsg.h:714
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:133
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:152
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:713
msgid "Now let's try a cross connection.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjcir.xtr:246
-#: ../../../../build/work/app/i18n/custmsg.h:716
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:246
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:715
msgid ""
"Note that the connection is from different 'ends' of the circle than in the "
"last example.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnabut.xtr:22
-#: ../../../../build/work/app/i18n/custmsg.h:718
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:22
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:717
msgid "This examples shows joining tracks whose End-Points are aligned.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:719
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:718
msgid ""
"Note the 2 pairs of tracks have End-Points that are close and aligned but "
"not connected.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnabut.xtr:30
-#: ../../../../build/work/app/i18n/custmsg.h:721
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:720
msgid "The first case joins the curve and straight track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnabut.xtr:40
-#: ../../../../build/work/app/i18n/custmsg.h:723
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:722
msgid "The second case will join the two straight tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnabut.xtr:50
-#: ../../../../build/work/app/i18n/custmsg.h:725
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:724
msgid "Note that the two straight tracks were combined to form one track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnabut.xtr:55
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:728
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:55
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:727
msgid ""
"The <Join> command can also join straight and curved tracks (in either "
"order).\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:729
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:728
msgid "We will enable Cornu easements\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:32
-#: ../../../../build/work/app/i18n/custmsg.h:731
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:730
msgid "A connecting cornu track is drawn between the two tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:41
-#: ../../../../build/work/app/i18n/custmsg.h:733
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:41
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:732
msgid ""
"Notice that the curved track is extended as the connection point moves past "
"the End-Point.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:54
-#: ../../../../build/work/app/i18n/custmsg.h:735
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:734
msgid ""
"Here the connection makes the curved track wrap around. This is not a "
"useful shape, there is a discontinuity at the end. \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:736
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:735
msgid "Adjusting the end point will fix it. \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:64
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnmove.xtr:18
-#: ../../../../build/work/app/i18n/custmsg.h:739
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:64
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:18
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:738
msgid "The <Join> command can move one group of tracks to join with another.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:740
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:739
msgid ""
"First <Select> the tracks you want to move with Ctrl so that they are both "
"selected.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnmove.xtr:36
-#: ../../../../build/work/app/i18n/custmsg.h:742
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:36
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:741
msgid "Click <Join> and Shift-Left-Click on the two End-Points.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnmove.xtr:51
-#: ../../../../build/work/app/i18n/custmsg.h:744
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:743
msgid "The selected tracks are moved into position.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:746
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:745
msgid ""
"Two straight tracks can be joined by selecting the two endoints. The "
"selected endpoints will be those closest to the cursor when the track is "
"selected.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:747
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:746
msgid "First, we will select Easements None and then select Join\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:26
-#: ../../../../build/work/app/i18n/custmsg.h:749
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:748
msgid "Now we select two points on the tracks\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:36
-#: ../../../../build/work/app/i18n/custmsg.h:751
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:36
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:750
msgid ""
"A connecting track is drawn between the two tracks. Notice how it moves as "
"the cursor is dragged along the second track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:47
-#: ../../../../build/work/app/i18n/custmsg.h:753
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:752
msgid ""
"Note that two tracks are extended if you move past the end of the track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:55
-#: ../../../../build/work/app/i18n/custmsg.h:755
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:55
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:754
msgid ""
"Notice what happens if you drag past the intersection points of the two "
"tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:757
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:756
msgid "This is probably not a very useful thing to do.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:70
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:90
-#: ../../../../build/work/app/i18n/custmsg.h:760
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:70
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:90
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:759
msgid "Now we will do this with Cornu Easements \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:761
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:760
msgid "First, we will select Easements Cornu and then select Join\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:102
-#: ../../../../build/work/app/i18n/custmsg.h:763
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:102
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:762
msgid "Now we again select two points on the tracks\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:112
-#: ../../../../build/work/app/i18n/custmsg.h:765
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:764
msgid ""
"A connecting cornu is drawn between the two tracks. Notice how it behaves "
"as the cursor is dragged along the second track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:123
-#: ../../../../build/work/app/i18n/custmsg.h:767
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:123
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:766
msgid ""
"Note that either tracks can be extended if you move past the end of it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:131
-#: ../../../../build/work/app/i18n/custmsg.h:769
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:768
msgid ""
"Notice this time what happens if you drag past the intersection points of "
"the two tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:139
-#: ../../../../build/work/app/i18n/custmsg.h:771
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:139
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:770
msgid "This is more useful because you can move the other end as well.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:150
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:16
-#: ../../../../build/work/app/i18n/custmsg.h:774
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:150
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:772
+msgid "You can add a pin to constrain the Cornu Curve to pass through it.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:161
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:775
msgid "You can connect from any track to a turntable\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:775
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:776
msgid "With a Cornu Easement you can have a turntable as the first point.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:38
-#: ../../../../build/work/app/i18n/custmsg.h:777
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:778
msgid ""
"You cannot place the connecting track too close to an existing stall track. "
"How close you can get is controlled by the Turntable Angle on the Setup "
"dialog.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:778
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:779
msgid "In this example it is set to 15 degrees.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:54
-#: ../../../../build/work/app/i18n/custmsg.h:780
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:781
msgid "You can drag the connecting point all round the turntable.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:103
-#: ../../../../build/work/app/i18n/custmsg.h:782
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:103
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:783
msgid ""
"As you drag away from the turntable a straight track will be drawn to the "
"cursor postion and a curve will be drawn from the cursor to the connecting "
"track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:111
-#: ../../../../build/work/app/i18n/custmsg.h:784
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:111
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:785
msgid ""
"Now the cursor will be moved within the turntable, but the end stays on the "
"edge of the well.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:161
-#: ../../../../build/work/app/i18n/custmsg.h:786
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:161
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:787
msgid "All done.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:169
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:38
-#: ../../../../build/work/app/i18n/custmsg.h:789
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:169
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:790
msgid ""
"The Draw Commands are used to draw straight and curved lines on the layout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:46
-#: ../../../../build/work/app/i18n/custmsg.h:791
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:46
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:792
msgid ""
"Lines are drawn by clicking at the starting postion and dragging to the "
"final position.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:792
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:793
msgid ""
-"By default, the new line will snap to existing objects. Hold down the "
-"<Ctrl> and <Alt> keys to prevent this from happening.\n"
+"By default, the new line will snap to existing objects. Hold down the <Alt> "
+"keys to prevent this from happening.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:91
-#: ../../../../build/work/app/i18n/custmsg.h:794
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:795
msgid "You also draw in various colors and line widths.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:109
-#: ../../../../build/work/app/i18n/custmsg.h:796
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:110
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:797
msgid ""
"Like Curved Tracks, Curved Lines can be drawn by a variety of methods.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:797
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:798
msgid ""
"Here we will draw a Curve by dragging from one End-Point to the other to "
"define the chord of the Curve. Then we will drag from the center to shape "
"the curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:184
-#: ../../../../build/work/app/i18n/custmsg.h:799
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:185
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:800
msgid "Boxes are useful for drawing rectangular shapes.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:194
-#: ../../../../build/work/app/i18n/custmsg.h:801
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:195
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:802
msgid ""
"Circles can be drawn by clicking on the center or edge and dragging to set "
"the radius.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:802
-msgid "Here we will drag from the Center.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:803
+msgid "Here we will drag from the edge to the Center.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:204
-#: ../../../../build/work/app/i18n/custmsg.h:804
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:805
msgid "Lines and Shapes can be deleted by Selecting and Deleting.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:227
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:91
-#: ../../../../build/work/app/i18n/custmsg.h:807
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:228
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:808
msgid "We also draw Polylines and filled shapes.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:98
-#: ../../../../build/work/app/i18n/custmsg.h:809
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:810
msgid ""
"A Polyline is drawn by dragging to place each of the point in the Polyline.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:125
-#: ../../../../build/work/app/i18n/custmsg.h:811
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:125
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:812
msgid ""
"To finish off the Polyline press the <Space> key or choose another drawing "
"type.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:132
-#: ../../../../build/work/app/i18n/custmsg.h:813
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:814
msgid "A filled Polygon is drawn in the same way.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:158
-#: ../../../../build/work/app/i18n/custmsg.h:815
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:816
msgid "When you are finished, press the <Space> key to complete the polygon.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:165
-#: ../../../../build/work/app/i18n/custmsg.h:817
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:818
msgid ""
"You can use the Above and Below Commands to move lines and shapes to the "
"front or back of the drawing.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:182
-#: ../../../../build/work/app/i18n/custmsg.h:819
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:820
msgid "Filled Boxes and Circles work the same as line Boxes and Circles.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:199
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:8
-#: ../../../../build/work/app/i18n/custmsg.h:822
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:199
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:8
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:823
msgid ""
"In the drawing area of the main window you can see an hollow upwards arrow "
"which represents the mouse cursor. In this demo the mouse will move about "
"to show you the actions of different commands.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:823
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:824
msgid ""
"The hollow arrow represents the mouse cursor without a mouse button being "
"pressed.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:16
-#: ../../../../build/work/app/i18n/custmsg.h:825
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:826
msgid ""
"When the left mouse button would be pressed, the mouse cursor appears to "
"flash and the hollow arrow is replaced by a solid left-pointing red arrow "
"while the button is pressed.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:826
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:827
msgid ""
"Note: these color changes occur only during the demo to simulate mouse "
"button presses.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:24
-#: ../../../../build/work/app/i18n/custmsg.h:828
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:829
msgid ""
"Moving the mouse while a mouse button is pressed is called 'dragging'.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:32
-#: ../../../../build/work/app/i18n/custmsg.h:830
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:831
msgid ""
"When the left mouse button is released, the mouse cursor flashes and the "
"hollow up black arrow is restored.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:40
-#: ../../../../build/work/app/i18n/custmsg.h:832
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:833
msgid ""
"Dragging with the right button is simulated by a blue right-facing solid "
"cursor.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:49
-#: ../../../../build/work/app/i18n/custmsg.h:834
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:835
#, fuzzy
msgid "Release Right Click\n"
msgstr "Clicar com o botão direito"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:57
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:62
-#: ../../../../build/work/app/i18n/custmsg.h:837
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:57
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:62
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:838
msgid "Sometimes the Shift key is held down while using the mouse \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:838
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:839
msgid ""
"This is indicated by an outlined arrow with the letter S near the arrow.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:71
-#: ../../../../build/work/app/i18n/custmsg.h:840
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:71
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:841
msgid ""
"The left mouse button is held down with the Shift and dragged for a Left-"
"Shift-Drag. \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:86
-#: ../../../../build/work/app/i18n/custmsg.h:842
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:843
msgid "Sometimes the Control key is held down while using the mouse. \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:843
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:844
msgid ""
"This is indicated with an upward filled arrow head with the letter C near "
"the arrow \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:98
-#: ../../../../build/work/app/i18n/custmsg.h:845
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:846
msgid ""
"If while the Control is held the Left mouse button is held down it is a Ctrl-"
"Move and a Ctrl-Left-Drag. \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:846
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:847
msgid ""
"This is indicated by an an left-facing open-headed arrow with the letter C "
"near it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:114
-#: ../../../../build/work/app/i18n/custmsg.h:848
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:114
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:849
msgid "You can also use the Control key with the Right mouse button. \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:849
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:850
msgid ""
"This is indicated with a right-facing filled arrow with an open arrow head "
"and the letter C near the arrow \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:130
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:23
-#: ../../../../build/work/app/i18n/custmsg.h:852
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:130
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:853
msgid ""
"The main drawing area shows a portion of total layout. You can zoom in or "
"zoom out by choosing 'Zoom In' or 'Zoom Out' in the 'Edit' menu, by using "
@@ -13011,18 +11387,18 @@ msgid ""
"keys.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:853
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:854
msgid "You can see the entire layout in the Map window.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:33
-#: ../../../../build/work/app/i18n/custmsg.h:855
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:33
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:856
msgid "As you Zoom Out tracks are drawn with one line instead of two.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:49
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:54
-#: ../../../../build/work/app/i18n/custmsg.h:858
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:49
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:859
msgid ""
"You can change what portion of the layout is shown by using the 'Map' window "
"which shows a compressed version of the entire layout. A hilighted area of "
@@ -13030,1181 +11406,3924 @@ msgid ""
"in the main drawing area.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:859
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:860
msgid ""
"You can Left-Drag the hilighted area in the Map window to change the "
"displayed portion of the layout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:861
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:862
msgid ""
"You can also Right-Drag on the Map window to set the scale and position of "
"the Main window.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:72
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmnotes.xtr:6
-#: ../../../../build/work/app/i18n/custmsg.h:864
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:72
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:865
+msgid ""
+"The <Text Note> command lets you attach notes to various spots on the "
+"layout.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:867
msgid ""
-"The <Note> command lets you attach notes to various spots on the layout.\n"
+"When you place a note, the Text Note editor window is displayed which lets "
+"you enter the note.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:869
+msgid ""
+"If you click on a note in <Describe> mode the Text Note editor displays the "
+"note allowing you to modify the note..\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:871
+msgid "You can also create a reference to a file or web link.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmnotes.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:866
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:872
msgid ""
-"When you place a note, the Note editor window is displayed which lets you "
-"enter the note.\n"
+"Choose the type of link by clicking on the down arrow beside the Note "
+"commmand.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmnotes.xtr:22
-#: ../../../../build/work/app/i18n/custmsg.h:868
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:874
msgid ""
-"If you click on a note in <Describe> mode the Note editor displays the "
-"note.\n"
+"This is a File Note. You can specify the Title of the File and its "
+"location\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmnotes.xtr:39
-#: ../../../../build/work/app/i18n/custmsg.h:870
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:64
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:876
+msgid ""
+"This is a Web Link Note. You can specify the Title of the Link and its URL\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:878
msgid "This is the end of the XTrackCAD Demos.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:871
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:879
msgid "Click Step to return to XTrackCAD.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:872
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:880
msgid "Thanks for watching.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:32
-#: ../../../../build/work/app/i18n/custmsg.h:874
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:882
msgid "This example shows how to create parallel tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:37
-#: ../../../../build/work/app/i18n/custmsg.h:876
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:884
msgid ""
"The separation is set in the <Parallel Separation> window. You should set "
"this value before you begin to select tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:49
-#: ../../../../build/work/app/i18n/custmsg.h:878
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:886
msgid ""
"You control which side the parallel track will be on by moving the cursor "
"from one side of the track centerline to the other.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:81
-#: ../../../../build/work/app/i18n/custmsg.h:880
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:888
msgid "When you release the mouse button the new parallel track is created.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:881
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:889
msgid ""
"Note that the <Parallel> command remains active after you created the "
"track. This is controlled by the Sticky dialog in the Options menu.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:92
-#: ../../../../build/work/app/i18n/custmsg.h:883
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:92
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:891
msgid "You cannot create a track parallel to a turnout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:172
-#: ../../../../build/work/app/i18n/custmsg.h:885
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:172
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:893
msgid ""
"Note that the new curved track is automatically connected to the short "
"parallel track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:180
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:19
-#: ../../../../build/work/app/i18n/custmsg.h:888
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:19
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:896
msgid ""
"Polylines and polygons (created with the <Draw> command) can be modified by "
"dragging on their corners or edges.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:889
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:897
msgid "First Left Click on the shape you want to modify.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:29
-#: ../../../../build/work/app/i18n/custmsg.h:891
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:29
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:899
msgid "Then drag on the point you want to move\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:39
-#: ../../../../build/work/app/i18n/custmsg.h:893
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:901
msgid "And finally press the Space bar to finish the change\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:54
-#: ../../../../build/work/app/i18n/custmsg.h:895
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:903
msgid "If you select the middle of an Edge a new Corner is created.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:72
-#: ../../../../build/work/app/i18n/custmsg.h:897
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:905
msgid "To delete a corner, select and then press Delete or Backspace\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:98
-#: ../../../../build/work/app/i18n/custmsg.h:899
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:907
msgid "But you cannot have a Poly-shape with less than 3 sides.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:126
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:126
-#: ../../../../build/work/app/i18n/custmsg.h:902
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:126
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:126
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:910
msgid ""
"To use the <Profile> command you first need to define Elevations on your "
"layout.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:903
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:911
msgid "In this example we'll use the Elevations defined in the last example.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:904
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:912
msgid "You can move or resize the Profile dialog now if you want.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:135
-#: ../../../../build/work/app/i18n/custmsg.h:906
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:135
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:914
msgid ""
"To show the Profile you need to select a Path on the tracks of your layout.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:907
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:915
msgid "Select a Defined Elevation point (marked by Gold dots).\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:908
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:916
msgid "We will start with the right end of the siding.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:148
-#: ../../../../build/work/app/i18n/custmsg.h:910
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:918
msgid ""
"The second Point is at the left end of the siding. The Path will be drawn "
"in Purple on the layout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:160
-#: ../../../../build/work/app/i18n/custmsg.h:912
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:160
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:920
msgid "Now select the end of one of the Branches\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:169
-#: ../../../../build/work/app/i18n/custmsg.h:914
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:169
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:922
msgid ""
"The Profile line is drawn in Red. This indicates that there some turnouts "
"on that section of the Path which have more than 2 connections.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:915
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:923
msgid ""
"The grade on this part of the Path is the average and may be affected by "
"other Elevations, such the end of the lower branch.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:178
-#: ../../../../build/work/app/i18n/custmsg.h:917
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:178
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:925
msgid "Now try to select the End-Point of the other branch.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:918
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:926
msgid ""
"You will get an error message because there is no route to one of the ends "
"of the existing Path.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:187
-#: ../../../../build/work/app/i18n/custmsg.h:920
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:187
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:928
msgid ""
"In this case remove the last part of the Path by clicking on current end of "
"the Path and reselect the End-Point.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:198
-#: ../../../../build/work/app/i18n/custmsg.h:922
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:198
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:930
msgid "Notice that the Grade has changed on the Profile.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:205
-#: ../../../../build/work/app/i18n/custmsg.h:924
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:932
msgid ""
"You can Ignore End-Points on the Path by using Shift-Right-Click to display "
"the Profile Options popup menu and chosing Ignore.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:925
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:933
msgid ""
"Note: We can't show the menu in demo mode but we will show the effect of a "
"Shift Right Click and selecting ignore. We will be Ignoring the End-Point "
"of the Turnout that is not on the Path.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:217
-#: ../../../../build/work/app/i18n/custmsg.h:927
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:217
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:935
msgid "Notice that part of the Profile line is redrawn in Blue.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:928
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:936
msgid ""
"Also, the Computed Elevations and Grade marker on the right side of the "
"layout have been updated.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:225
-#: ../../../../build/work/app/i18n/custmsg.h:930
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:938
msgid ""
"You can set additional Defined Elevation points using the Profile Options "
"popup menu. These points are added to the Profile if they are on the Path.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:931
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:939
msgid ""
"We do this by Shift Right Click to display the Profile Options popup menu "
"and selecting Define.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:237
-#: ../../../../build/work/app/i18n/custmsg.h:933
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:237
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:941
msgid ""
"We've just added a Defined Elevation point to the middle of the lower "
"branch. Notice the addition on the Profile dialog.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:246
-#: ../../../../build/work/app/i18n/custmsg.h:935
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:246
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:943
msgid ""
"For the siding we defined a Station name but it's not on the Path, since the "
"Path takes the shortest distance between points.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:936
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:944
msgid ""
"We can Ignore one of the End-Points on a Turnout to force the Path to take "
"the other route.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:937
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:945
msgid ""
"Again we use Shift-Right-Click to display the Profile Options menu and "
"select ignore.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:258
-#: ../../../../build/work/app/i18n/custmsg.h:939
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:947
msgid "Now remove the First section of the Path,\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:268
-#: ../../../../build/work/app/i18n/custmsg.h:941
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:268
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:949
msgid "and reselect it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:277
-#: ../../../../build/work/app/i18n/custmsg.h:943
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:277
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:951
msgid ""
"Now the Path goes through the Station End-Point and the name appears on the "
"Profile dialog.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:286
-#: ../../../../build/work/app/i18n/custmsg.h:945
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:286
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:953
msgid "Now we need to increase the separation where the tracks cross.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:946
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:954
msgid ""
"The two Elevations you see here are Computed Elevations which means "
"XTrackCAD dynamically computes the Elevation based on the Elevations of "
"connecting tracks.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:947
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:955
msgid ""
"First make the lower End-Point a Defined Elevation point using Shift-Right-"
"Click and the Profile Options menu. You will see the End-Point marked by a "
"Gold dot and a new line is added to the Profile dialog.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:297
-#: ../../../../build/work/app/i18n/custmsg.h:949
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:297
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:957
msgid "Now, drag the point on the Profile Dialog to change the Elevation.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:950
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:958
msgid ""
"Note the grade on each side of the point will be displayed at the bottom of "
"the Profile dialog.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:319
-#: ../../../../build/work/app/i18n/custmsg.h:952
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:319
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:960
msgid ""
"After we release the Profile is updated to show the new Elevation and "
"Grade.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:326
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:119
-#: ../../../../build/work/app/i18n/custmsg.h:955
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:326
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:119
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:963
msgid "The <Rescale> command will change the size of the selected objects.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:956
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:964
+msgid ""
+"Note: due to technical reasons, the To Scale drop down list is blank. For "
+"this demo it should show 'DEMO'.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:965
msgid "First we will try rescaling by ratio.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:126
-#: ../../../../build/work/app/i18n/custmsg.h:958
-msgid "We are going to make everything 150% bigger.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:967
+msgid "We are going to make everything 150 percent bigger.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:136
-#: ../../../../build/work/app/i18n/custmsg.h:960
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:138
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:969
msgid "Note the track gauge did not change.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:143
-#: ../../../../build/work/app/i18n/custmsg.h:962
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:971
msgid "Let's try that again.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:963
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:972
msgid "Now we are going to convert from one scale to another.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:154
-#: ../../../../build/work/app/i18n/custmsg.h:965
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:974
msgid "We will convert everything from N scale to HO scale...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:161
-#: ../../../../build/work/app/i18n/custmsg.h:967
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:976
msgid "and change the track gauge as well.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:169
-#: ../../../../build/work/app/i18n/custmsg.h:969
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:171
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:978
msgid "Note that the Title of the turnout did not change.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:177
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrotate.xtr:72
-#: ../../../../build/work/app/i18n/custmsg.h:972
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:179
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:981
msgid ""
"The <Rotate> command will pivot the Selected objects. First Click on the "
"pivot point and then drag to Rotate the objects.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:973
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:982
msgid ""
"In this example we will rotate the selected structure about it's center.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrotate.xtr:135
-#: ../../../../build/work/app/i18n/custmsg.h:975
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:135
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:984
msgid ""
-"The <Rotate> command will restrict the rotation to increments of 15° if you "
+"The <Rotate> command will restrict the rotation to increments of 15° if you "
"hold down the <Shift> and <Ctrl> keys.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrotate.xtr:316
-#: ../../../../build/work/app/i18n/custmsg.h:977
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:316
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:986
msgid ""
"There are Rotate options that you can access by Shift-Right-Click command "
"menu and choosing 'Rotate...'.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:978
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:987
msgid ""
"You can rotate the selected object by a fixed rotatation (15, 30, 45, 90, "
"180) either clockwise or counter-clockwise, or by manually entering any "
"angle.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:979
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:988
msgid ""
"The other option is 'Align' which allows you align selected objects with an "
"unselected object. This is useful to align railside buildings with track.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:980
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:989
msgid "Unfortunately, we can not currently demonstrate these features.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrotate.xtr:529
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmruler.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:983
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:529
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:992
msgid ""
"The <Ruler> command draws a Ruler on the layout you can use to measure "
"distances.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmruler.xtr:24
-#: ../../../../build/work/app/i18n/custmsg.h:985
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:994
msgid "If you press the <Ruler> command again the Ruler is removed.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmruler.xtr:32
-#: ../../../../build/work/app/i18n/custmsg.h:987
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:996
msgid "But you can place it somewhere else.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmruler.xtr:42
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:173
-#: ../../../../build/work/app/i18n/custmsg.h:990
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:42
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:173
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:999
msgid "The <Select> command is used to select tracks.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:991
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1000
msgid "Selected tracks can be moved or rotated during the <Select> command.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:992
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1001
msgid "Selected tracks can also be deleted, hidden, listed and exported.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:993
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1002
msgid ""
"When you move the cursor near a track that could be selected, the track is "
-"drawn with think blue lines.\n"
+"drawn with thick blue lines.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:184
-#: ../../../../build/work/app/i18n/custmsg.h:995
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1004
+msgid ""
+"The Select operates in two modes which are controled by the Options|Command "
+"menu.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:191
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1006
+msgid ""
+"In 'classic' mode, clicking on an object adds it to set of selected "
+"objects.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:197
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1008
+msgid ""
+"In the 'new' mode, clicking on an object deselectes all other objects, "
+"leaving just the newly selected object.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1009
+msgid "Holding down the Ctrl key reverses this behavior.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1010
+msgid "This demo will use the 'new' mode.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1011
+msgid ""
+"There is also an option to the control the behavior of clicking on empty "
+"space: do nothing or deselecting all objects.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:208
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1013
#, fuzzy
msgid "A Left-Click selects a track\n"
msgstr "Selecionar um trilho"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:192
-#: ../../../../build/work/app/i18n/custmsg.h:997
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:216
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1015
msgid ""
"The selected track will have red X's drawn where it is connected to "
"unselected tracks. This indicates where the track will be disconnected if "
"the selected tracks are moved, rotated or deleted.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:998
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1016
msgid "A Ctrl-Left-Click adds tracks to the selection\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:211
-#: ../../../../build/work/app/i18n/custmsg.h:1000
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:235
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1018
msgid "Selecting a selected track re-selects only it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:219
-#: ../../../../build/work/app/i18n/custmsg.h:1002
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1020
msgid "Selecting off all tracks de-selects them.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:227
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:232
-#: ../../../../build/work/app/i18n/custmsg.h:1005
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:251
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:256
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1023
msgid ""
"To demonstrate Select Connected, first select two tracks at the end of a "
"part to be selected \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:248
-#: ../../../../build/work/app/i18n/custmsg.h:1007
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:272
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1025
msgid ""
"Shift-Left-Click on a track will select all unselected tracks connected to "
"the track. Selection stops at a previously selected track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:260
-#: ../../../../build/work/app/i18n/custmsg.h:1009
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:284
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1027
msgid ""
"Be careful with this because its very easy to select all tracks this way\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:274
-#: ../../../../build/work/app/i18n/custmsg.h:1011
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1029
msgid "The <esc> key will deselect all objects.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:282
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:287
-#: ../../../../build/work/app/i18n/custmsg.h:1014
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:310
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:315
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1032
msgid "Left-Drag is used to select all objects within an area.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:295
-#: ../../../../build/work/app/i18n/custmsg.h:1016
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:323
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1034
msgid "Shift-Left-Drag is used to move selected tracks.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1017
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1035
msgid ""
"When you move selected tracks that are connected to unselected tracks, the "
"tracks will be disconnected. These points are marked by a Red cross on the "
"layout.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1018
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1036
msgid ""
"If the unconnected end point of a track and one being moved are close "
"enough, two circles are displayed, showing where the tracks will be snapped "
"together. \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:313
-#: ../../../../build/work/app/i18n/custmsg.h:1020
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:341
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1038
msgid "Let's move the Main window to see what's going on next\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:320
-#: ../../../../build/work/app/i18n/custmsg.h:1022
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:348
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1040
msgid ""
"Ctrl-Left-Drag rotates the selected tracks about the pivot point (which is "
"where you started the drag)\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:382
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:387
-#: ../../../../build/work/app/i18n/custmsg.h:1025
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:410
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:415
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1043
msgid ""
"Next we select the <Join Tracks> command to demonstrate \"Move To Join\" \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:392
-#: ../../../../build/work/app/i18n/custmsg.h:1027
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:420
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1045
msgid ""
"You can use Shift-Left-Click to select an open endpoint of a selected track "
"to join with an unselected track. \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1028
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1046
msgid "We'll move the Main window again.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:415
-#: ../../../../build/work/app/i18n/custmsg.h:1030
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:443
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1048
msgid ""
"You then Left-Click on an endpoint of a unselected track to move the "
"selected tracks to join. \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:430
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:30
-#: ../../../../build/work/app/i18n/custmsg.h:1033
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:458
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1051
msgid "The <Split> command is used to split and disconnect tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:35
-#: ../../../../build/work/app/i18n/custmsg.h:1035
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:35
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1053
msgid "Simply select the spot on the track you want to split.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1036
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1054
msgid "You cannot split turnouts (unless you hold down the Shift key).\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:48
-#: ../../../../build/work/app/i18n/custmsg.h:1038
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1056
msgid ""
"If you split at spot that is already an End-Point between two tracks, or "
"split twice at the same spot, the track is disconnected.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:60
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:65
-#: ../../../../build/work/app/i18n/custmsg.h:1041
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:60
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1059
msgid "The <Tunnel> command marks selected tracks as hidden.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1042
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1060
msgid ""
"A tunnel portal is drawn at the boundary between hidden and normal track.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1043
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1061
msgid ""
"How the hidden tracks are drawn (solid, dashed or invisible) is controlled "
"by the Draw EndPts radio button group on the Setup dialog.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:86
-#: ../../../../build/work/app/i18n/custmsg.h:1045
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1063
msgid ""
"To 'un-hide' a track just Select it again and click the Tunnel button.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:100
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmstrtrk.xtr:6
-#: ../../../../build/work/app/i18n/custmsg.h:1048
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:100
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1066
msgid ""
"Straight tracks are created by selecting the first End-Point of the track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmstrtrk.xtr:12
-#: ../../../../build/work/app/i18n/custmsg.h:1050
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1068
msgid "Then the other End-Point is dragged to its final postion.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmstrtrk.xtr:20
-#: ../../../../build/work/app/i18n/custmsg.h:1052
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:20
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1070
msgid "The left mouse button is released at the final end postion.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmstrtrk.xtr:27
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtbledg.xtr:23
-#: ../../../../build/work/app/i18n/custmsg.h:1055
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:27
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1073
msgid ""
"Table Edges are used to mark the edges of the layout, either for aisles or "
"room walls.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtbledg.xtr:47
-#: ../../../../build/work/app/i18n/custmsg.h:1057
-msgid "A Table Edge is attracted to the ends of other Table Edges.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1075
+msgid ""
+"A Table Edge is attracted to other objects, unless you hold down the Alt "
+"key.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtbledg.xtr:132
-#: ../../../../build/work/app/i18n/custmsg.h:1059
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:145
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1077
msgid "Table Edges can be modified by dragging on their ends.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtbledg.xtr:180
-#: ../../../../build/work/app/i18n/custmsg.h:1061
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:193
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1079
msgid ""
-"If you hold down the Control key while dragging then the Table Edge will be "
+"Unless you hold down the Alt key while dragging then the Table Edge will be "
"attracted to other objects.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtbledg.xtr:218
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtodes.xtr:6
-#: ../../../../build/work/app/i18n/custmsg.h:1064
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:231
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1082
msgid ""
"These examples shows some of the various Turnout Designer windows. Each "
"window defines a different type of turnout.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1065
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1083
msgid ""
"In each window there are a number of parameters to fill in and one or two "
"description lines.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1066
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1084
msgid "You can print the design to check the dimensions before saving them.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtodes.xtr:16
-#: ../../../../build/work/app/i18n/custmsg.h:1068
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1086
msgid "This is the regular turnout.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1069
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1087
msgid ""
"In addition to the dimensions, you also enter the Title (Manufacturer, "
"Description and Part Number). For Turnouts with Left and Right hand "
"versions there are separate Descriptions and Part Numbers.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1070
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1088
msgid ""
"Some Turnouts and Sectional track are pre-mounted on roadbed. For these "
"parts you can specify the width of the roadbed, the thickness of the lines "
"drawn for the edge of the roadbed and the color.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtodes.xtr:30
-#: ../../../../build/work/app/i18n/custmsg.h:1072
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1090
msgid "The double slip switch is described by only a few parameters.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtodes.xtr:40
-#: ../../../../build/work/app/i18n/custmsg.h:1074
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1092
msgid "The double crossover only needs length and track separation.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtodes.xtr:48
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:30
-#: ../../../../build/work/app/i18n/custmsg.h:1077
-msgid ""
-"Pressing the turnout button displays the Turnout Selection window to let you "
-"choose a turnout to place.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:48
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1095
+msgid "We chose the turnout we want to place by clicking on the HotBar.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1078
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1097
msgid ""
-"Note that once you start to place the turnout on the Main window the Turnout "
-"Selection window disappears. This feature is enabled by the Hide toggle "
-"button on the dialog.\n"
+"You can place the turnout on a arbitrary position on the layout. Left-drag "
+"the turnout into place...\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1099
+msgid "We are moving the Turnout by dragging on the 'Active End Point'\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1100
+msgid "We can change the 'Active End Point' by a Shift-Left-Click\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:38
-#: ../../../../build/work/app/i18n/custmsg.h:1080
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1102
+msgid "Notice the Turnout has rotated to the next End Point.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1104
msgid ""
-"You can place the turnout on a arbitrary position on the layout. Left-drag "
-"the turnout into place...\n"
+"If we continue to Shift-Left-Click 2 more times, we will return to the "
+"original position.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:85
-#: ../../../../build/work/app/i18n/custmsg.h:1082
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:123
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1106
msgid "Then you can rotate the turnout by Right dragging.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1083
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1107
msgid ""
"You can also use Shift-Right-Click to display a popup menu that lets you "
"rotate the Turnout by specific angles.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:136
-#: ../../../../build/work/app/i18n/custmsg.h:1085
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:174
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1109
msgid ""
"When you are satisfied with the position and orientation of the turnout "
"press Space bar or the Return key on the keyboard to finish placing the "
"turnout.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1086
-msgid ""
-"Pressing the Close button on the Turnout dialog will end the <Turnout> "
-"command as well as placing the turnout.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:146
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:189
-#: ../../../../build/work/app/i18n/custmsg.h:1089
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:182
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1112
msgid ""
"If you drag along an existing track the new turnout will be attached to the "
"track.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1090
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1113
msgid ""
"Note that the status line tells you the number of End-Points that would be "
"connected and, the maximum displacement of the End-Points. This will be "
"useful when building complex track, as we will see later.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:220
-#: ../../../../build/work/app/i18n/custmsg.h:1092
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:256
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1115
msgid ""
"By moving the cursor from one side to the other of the track centerline you "
-"can flip the turnout 180ᅵ.\n"
+"can flip the turnout 180°.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:236
-#: ../../../../build/work/app/i18n/custmsg.h:1094
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:272
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1117
msgid ""
"If you try to drag across another turnout the new turnout will placed at the "
"nearest End-Point of the existing turnout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:299
-#: ../../../../build/work/app/i18n/custmsg.h:1096
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:335
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1119
msgid ""
"When you press Space or Return while the turnout is on a track, the track "
"will be split and the new turnout attached automatically.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:307
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:366
-#: ../../../../build/work/app/i18n/custmsg.h:1099
-msgid "Pressing Close ends the <Turnout> command.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:372
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:21
-#: ../../../../build/work/app/i18n/custmsg.h:1102
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:343
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:408
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1123
msgid "Sometimes it's useful to modify turnouts triming one of the ends.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1103
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1124
msgid "We use the <Split> command for this.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:28
-#: ../../../../build/work/app/i18n/custmsg.h:1105
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1126
msgid "Normally, if we try to Split a turnout we get an error message.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:37
-#: ../../../../build/work/app/i18n/custmsg.h:1107
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1128
msgid "Hold down the Shift key and try again.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:52
-#: ../../../../build/work/app/i18n/custmsg.h:1109
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:52
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1130
msgid ""
"The end of the turnout has been replaced by a piece of straight flex track "
"which we can modify.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:1111
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1132
msgid "We can try splitting the diverging leg.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:74
-#: ../../../../build/work/app/i18n/custmsg.h:1113
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:74
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1134
msgid ""
"Notice that the tail of the diverging leg has been changed to a curved "
"track...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:84
-#: ../../../../build/work/app/i18n/custmsg.h:1115
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1136
msgid "and a straight track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:92
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:12
-#: ../../../../build/work/app/i18n/custmsg.h:1118
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:92
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1139
msgid ""
-"This example show how to layout a yard using the <Turnout> and <Parallel> "
-"commands.\n"
+"This example show how to layout a yard using Turnouts from the HotBar and "
+"the <Parallel> command.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:17
-#: ../../../../build/work/app/i18n/custmsg.h:1120
-msgid ""
-"You can resize and move the Turnout Selection dialog if it obscures the "
-"other windows.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:19
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1141
+msgid "We'll choose a Turnout from the HotBar\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1121
-msgid "First we place a turnout on the main line.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1142
+msgid "Then we place the Turnout on the main line.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:35
-#: ../../../../build/work/app/i18n/custmsg.h:1123
-msgid "Next extend the turnout with the <Modify> command.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1144
+msgid "Next extend the Turnout with the <Modify> command.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:46
-#: ../../../../build/work/app/i18n/custmsg.h:1125
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1146
msgid ""
"Now create a track parallel to the main line. Make sure the separation is "
"reasonable for your scale.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:62
-#: ../../../../build/work/app/i18n/custmsg.h:1127
-msgid "And place a turnout to connect the new track.\n"
-msgstr ""
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1148
+#, fuzzy
+msgid "And place a Turnout to connect the new track.\n"
+msgstr "Posiciona um AMV ou trilho"
-#: ../../../../build/work/app/i18n/custmsg.h:1128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1149
msgid "We'll zoom in here to see what's going on.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:78
-#: ../../../../build/work/app/i18n/custmsg.h:1130
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:83
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1151
msgid ""
-"Notice how we control which way the turnout is facing by moving the mouse "
+"Notice how we control which way the Turnout is facing by moving the mouse "
"across the center line of the track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:94
-#: ../../../../build/work/app/i18n/custmsg.h:1132
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1153
msgid ""
-"The Status bar displays the number of auto-connections that will be made and "
-"the maximum offset.\n"
+"The Status bar displays the number of auto-connections that will be made (3) "
+"and the maximum offset (0.000).\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1133
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1154
msgid ""
-"XTrackCAD adjusts the turnout position for the best fit to minimize any "
+"XTrackCAD adjusts the Turnout position for the best fit to minimize any "
"connection offset\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:106
-#: ../../../../build/work/app/i18n/custmsg.h:1135
-msgid "Note that placing the turnout splits the parallel track.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1156
+msgid "Note that placing the Turnout splits the parallel track.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1136
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1157
msgid "We have to delete the leftover piece by Selecting and Deleting it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:120
-#: ../../../../build/work/app/i18n/custmsg.h:1138
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:126
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1159
msgid "Repeat the process for the other tracks in the yard.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:149
-#: ../../../../build/work/app/i18n/custmsg.h:1140
-msgid "For the last track we will join with a curve instead of a turnout.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1161
+msgid "For the last track we will join with a curve instead of a Turnout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:185
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrkwid.xtr:91
-#: ../../../../build/work/app/i18n/custmsg.h:1143
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1164
msgid "We can indicate the mainline by making the rails wider.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1165
msgid "First we select the mainline tracks...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrkwid.xtr:128
-#: ../../../../build/work/app/i18n/custmsg.h:1146
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1167
msgid "And then select Medium Tracks from the Edit menu.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1147
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1168
msgid "We can't show the Edit menu, but we can show the effect.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrkwid.xtr:137
-#: ../../../../build/work/app/i18n/custmsg.h:1149
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:137
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1170
msgid "We can make the rail thicker by selecting Thick Tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrkwid.xtr:148
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrntab.xtr:6
-#: ../../../../build/work/app/i18n/custmsg.h:1152
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:148
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1173
msgid ""
"Turntables are created by specifying the radius in a dialog box on the "
"Status Bar. The radius in the dialog can be changed before proceeding.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrntab.xtr:15
-#: ../../../../build/work/app/i18n/custmsg.h:1154
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:15
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1175
msgid "Then the turntable is dragged to its final location.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrntab.xtr:22
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:317
-#: ../../../../build/work/app/i18n/custmsg.h:1157
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:22
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:433
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1178
msgid "Introduction"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:318
-#: ../../../../build/work/app/i18n/custmsg.h:1159
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:434
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1180
msgid "Mouse Actions"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:319
-#: ../../../../build/work/app/i18n/custmsg.h:1161
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:435
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1182
msgid "Dialogs"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:320
-#: ../../../../build/work/app/i18n/custmsg.h:1163
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:436
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1184
msgid "Moving about"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:321
-#: ../../../../build/work/app/i18n/custmsg.h:1165
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:437
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1186
msgid "Describe and Select"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:322
-#: ../../../../build/work/app/i18n/custmsg.h:1167
-#, fuzzy
-msgid "Describe"
-msgstr "Descrição"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:324
-#: ../../../../build/work/app/i18n/custmsg.h:1171
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:440
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1192
msgid "Simple tracks"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:325
-#: ../../../../build/work/app/i18n/custmsg.h:1173
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:441
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1194
msgid "Straight tracks"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:326
-#: ../../../../build/work/app/i18n/custmsg.h:1175
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:442
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1196
msgid "Curved tracks"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:327
-#: ../../../../build/work/app/i18n/custmsg.h:1177
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:443
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1198
msgid "Circles"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:328
-#: ../../../../build/work/app/i18n/custmsg.h:1179
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:444
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1200
msgid "Turntables"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:329
-#: ../../../../build/work/app/i18n/custmsg.h:1181
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:445
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1202
msgid "Modifying tracks"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:330
-#: ../../../../build/work/app/i18n/custmsg.h:1183
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:446
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1204
msgid "Modifying end points "
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:331
-#: ../../../../build/work/app/i18n/custmsg.h:1185
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:447
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1206
msgid "Extending"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:332
-#: ../../../../build/work/app/i18n/custmsg.h:1187
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:448
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1208
msgid "Medium and Thick Tracks"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:333
-#: ../../../../build/work/app/i18n/custmsg.h:1189
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:449
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1210
msgid "Joining Tracks"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:334
-#: ../../../../build/work/app/i18n/custmsg.h:1191
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:450
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1212
msgid "Straight to straight"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:335
-#: ../../../../build/work/app/i18n/custmsg.h:1193
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:451
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1214
msgid "Curve to straight"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:336
-#: ../../../../build/work/app/i18n/custmsg.h:1195
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:452
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1216
msgid "Circle to circle"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:337
-#: ../../../../build/work/app/i18n/custmsg.h:1197
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:453
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1218
msgid "Joining to turntables"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:338
-#: ../../../../build/work/app/i18n/custmsg.h:1199
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:454
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1220
msgid "Easements"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:339
-#: ../../../../build/work/app/i18n/custmsg.h:1201
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:455
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1222
msgid "Abutting tracks"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:340
-#: ../../../../build/work/app/i18n/custmsg.h:1203
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1224
msgid "Move to Join"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:342
-#: ../../../../build/work/app/i18n/custmsg.h:1207
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:458
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1228
msgid "Select and Placement"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:343
-#: ../../../../build/work/app/i18n/custmsg.h:1209
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:459
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1230
msgid "Building a yard throat."
msgstr "Construindo ramos de um pátio"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:344
-#: ../../../../build/work/app/i18n/custmsg.h:1211
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:460
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1232
msgid "Designing turnouts"
msgstr "Projetando AMVs"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:345
-#: ../../../../build/work/app/i18n/custmsg.h:1213
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:461
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1234
msgid "Group and Ungroup"
msgstr "Agrupando e desagrupando"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:346
-#: ../../../../build/work/app/i18n/custmsg.h:1215
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:462
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1236
msgid "Triming Turnout Ends"
msgstr "Cortando trechos de AMV"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:347
-#: ../../../../build/work/app/i18n/custmsg.h:1217
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:463
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1238
msgid "Handlaid Turnouts"
msgstr "AMVs personalizados"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:348
-#: ../../../../build/work/app/i18n/custmsg.h:1219
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1240
msgid "Elevations and Profile"
msgstr "Elevações e perfils"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:349
-#: ../../../../build/work/app/i18n/custmsg.h:1221
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:465
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1242
msgid "Elevations"
msgstr "Elevações"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:351
-#: ../../../../build/work/app/i18n/custmsg.h:1225
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:467
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1246
msgid "Misc track commands"
msgstr "Miscelânea de comandos de trilhos"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:352
-#: ../../../../build/work/app/i18n/custmsg.h:1227
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:468
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1248
msgid "Delete and Undo"
msgstr "Apagando e desfazendo"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:353
-#: ../../../../build/work/app/i18n/custmsg.h:1229
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:469
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1250
msgid "Splitting and Tunnels"
msgstr "Seccionando trechos e criando túneis"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:355
-#: ../../../../build/work/app/i18n/custmsg.h:1233
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:471
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1254
msgid "Helix tracks"
msgstr "Trechos em hélice"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:356
-#: ../../../../build/work/app/i18n/custmsg.h:1235
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:472
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1256
msgid "Exception Tracks"
msgstr "Trechos excepcionais"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:358
-#: ../../../../build/work/app/i18n/custmsg.h:1239
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:474
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1260
msgid "Connect and Tighten - a siding"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:359
-#: ../../../../build/work/app/i18n/custmsg.h:1241
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:475
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1262
msgid "Connect and Tighten - figure-8"
msgstr "Conectando e firmando - figura-8"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:360
-#: ../../../../build/work/app/i18n/custmsg.h:1243
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:476
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1264
msgid "Other commands"
msgstr "Outros comandos"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:362
-#: ../../../../build/work/app/i18n/custmsg.h:1247
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:478
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1268
msgid "Table Edges"
msgstr "Limites do tablado"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:364
-#: ../../../../build/work/app/i18n/custmsg.h:1251
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:480
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1272
msgid "Dimension Lines"
msgstr "Linhas dimensionais"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:365
-#: ../../../../build/work/app/i18n/custmsg.h:1253
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:481
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1274
msgid "Lines"
msgstr "Linhas"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:366
-#: ../../../../build/work/app/i18n/custmsg.h:1255
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:482
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1276
msgid "Poly-Shapes"
msgstr "Formas poligonais"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:367
-#: ../../../../build/work/app/i18n/custmsg.h:1257
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:483
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1278
msgid "Modifying Poly-Shapes"
msgstr "Modificando forma poligonais"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:370
-#: ../../../../build/work/app/i18n/custmsg.h:1263
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:486
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1284
#, fuzzy
msgid "Control Panels"
msgstr "Painéis de controle (Novo)"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:9
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1288
+#, fuzzy
+msgid "Test Turnout Designer\n"
+msgstr "Editor de AMV %s"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1289
+msgid ""
+"This demo invokes each Turnout Designer and generates the turnout "
+"definition.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1290
+msgid ""
+"Each definition is placed on the layout and Regression checks that each "
+"matches.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1291
+msgid "Instructions:\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1292
+msgid " Run xtrkcad with the regression option set to 2:\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1293
+msgid " xtrkcad -d regression=2\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1294
+msgid ""
+" Select the recording (Macro|Playback) from $(SRCDIR)/app/tools/"
+"TurnoutDesigner.xtr\n"
+msgstr ""
+
+# São realmente necessários os espaços no texto?
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1295
+#, fuzzy
+msgid " \n"
+msgstr " PPP (pontos por polegada)"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1296
+msgid ""
+" Playback the demo. You probably want to choose a faster playback Speed.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1297
+msgid "Check the log file (Linux: stdout, Windows: xtclog.txt)\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:497
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:594
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:867
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:913
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1299
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1308
+msgid "-----------------------------------------------------\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1300
+#, fuzzy
+msgid "Create an instance of each turnout\n"
+msgstr "Cria um AMV personalizado"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1303
+msgid "Run Regression Checks\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1306
+#, fuzzy
+msgid "Remove the parameter definitions\n"
+msgstr "Não foi possível nova impressora definida"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:9
+#, fuzzy
+msgid "Invokes online help for this dialog"
+msgstr "Invoca ajuda on-line para esta caixa de diálogo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:10
+msgid "Cancels this command"
+msgstr "Anula este comando"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:11
+msgid "Closes the dialog"
+msgstr "Fecha a caixa de diálogo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:12
+#, fuzzy
+msgid "About program dialog"
+msgstr "Caixa de diálogo \"Sobre\""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:13
+#, fuzzy
+msgid "Move selected object to top"
+msgstr "Move objeto selecionado para o topo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:14
+#, fuzzy
+msgid "Raise or lower all selected tracks"
+msgstr "Eleva ou abaixa todo trecho selecionado"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:15
+#, fuzzy
+msgid "Show a protractor"
+msgstr "Exibe régua"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:16
+msgid "Turn magnetic snap on or off"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:18
+#, fuzzy
+msgid "Move selected object to bottom"
+msgstr "Move objeto selecionado para o fundo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:19
+msgid "Create a section of track for automation"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:20
+#, fuzzy
+msgid "Edit a block definition "
+msgstr "Cria uma nova definição de AMV"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:21
+msgid "Create a new Car/Loco description"
+msgstr "Cria uma nova descrição do material rodante"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:22
+msgid "Manage your Car and Loco Inventory"
+msgstr "Gerencia seu inventário de material rodante"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:23
+msgid "Create track circle from center"
+msgstr "Cria trilho circular a partir do centro"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:24
+msgid "Create fixed radius track circle"
+msgstr "Cria trilho circular com um raio fixo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:25
+msgid "Set Circle Track creation mode"
+msgstr "Configura modo de criação de trilho circular"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:26
+msgid "Create track circle from tangent"
+msgstr "Cria trilho circular a parti da tangente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:27
+msgid "Removes elevation from Selected tracks"
+msgstr "Remove inclinação dos trechos selecionados"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:28
+msgid "Copy objects to clipboard and duplicate them in exactly the same place"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:29
+msgid "Command Options dialog"
+msgstr "Caixa de dialogo das opções de comando"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:30
+msgid "Controls colors"
+msgstr "Cores dos controles"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:31
+msgid "Connect two tracks"
+msgstr "Conecta dois trilhos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:32
+msgid "Create a control for layout automation"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:33
+#, fuzzy
+msgid "Select control element to create"
+msgstr "Elementos de controle de layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:34
+#, fuzzy
+msgid "Manage control elements"
+msgstr "Elementos de controle de layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:35
+#, fuzzy
+msgid "Set Convert mode"
+msgstr "Configura modo de criação de curva"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:36
+msgid "Convert from Fixed Track to Cornu"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:37
+msgid "Convert from Cornu and Bezier to Fixed Track"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:38
+msgid "Copy selected objects to clipboard"
+msgstr "Copia objetos selecionados para a área de transferencia"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:39
+#, fuzzy
+msgid "Create Cornu track"
+msgstr "Criar Bloco"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:40
+msgid "Create curved track from center"
+msgstr "Cria trilho curvado a partir de um centro"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:41
+msgid "Create curved track from chord"
+msgstr "Cria trilho curvado a partir de uma corda"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:42
+msgid "Create curved track from end-point"
+msgstr "Cria trilho curvado a partir de uma extremidade"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:43
+#, fuzzy
+msgid "Create Bezier track"
+msgstr "Criar trecho em hélice"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:44
+msgid "Set Curve Track creation mode"
+msgstr "Configura modo de criação de curva"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:45
+msgid "Create curved track from tangent"
+msgstr "Cria trecho curvado a partir de um tangente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:46
+msgid "Manipulate Custom designer entries"
+msgstr "Manipula entradas do editor personalizado"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:47
+msgid "Moves selected objects to clipboard"
+msgstr "Move objetos selecionados para a área de transferencia"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:48
+msgid "Delete objects"
+msgstr "Elimina objetos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:49
+msgid "Playback demos"
+msgstr "Playback de demonstrações"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:50
+msgid "Change Object Properties"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:51
+msgid "Change to properties mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:52
+msgid "Deselect all selected objects"
+msgstr "Deseleciona todos os objetos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:53
+msgid "Change Display parameters"
+msgstr "Altera parâmetros das janelas"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:54
+msgid "Create benchwork"
+msgstr "Cria bancada"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:55
+msgid "Create a box"
+msgstr "Cria um retângulo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:56
+msgid "Set Circle drawing command"
+msgstr "Configura comando de desenho de circunferência"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:57
+msgid "Create a circle"
+msgstr "Cria circunferência"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:58
+msgid "Draw a circle line from center"
+msgstr "Desenha uma circunferência a partir do centro"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:59
+msgid "Draw a fixed radius circle line"
+msgstr "Desenha uma circunferência com um raio fixo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:60
+msgid "Draw a circle line from tangent"
+msgstr "Desenha uma circunferência a partir de uma tangente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:61
+msgid "Set Curve drawing command"
+msgstr "Configura comando de desenho de circunferência"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:62
+msgid "Create a curved line"
+msgstr "Cria uma linha curva"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:63
+msgid "Create a curved line from End"
+msgstr "Cria uma linha curva a partir de uma extremidade"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:64
+msgid "Create a curved line from center"
+msgstr "Cria uma linha curva a partir de um centro"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:65
+msgid "Create a curved line from chord"
+msgstr "Cria uma linha curva a partir de uma corda"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:66
+msgid "Create a curved line from tangent"
+msgstr "Cria uma linha curva a partir de uma tangente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:67
+#, fuzzy
+msgid "Create a Bezier line"
+msgstr "Cria uma linha curva"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:68
+msgid "Create a dimension line"
+msgstr "Cria uma linha de uma dimensão"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:69
+msgid "Create a filled box"
+msgstr "Cria um retângulo preenchido"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:70
+msgid "Create a filled circle"
+msgstr "Cria um círculo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:71
+msgid "Draw a filled circle from center"
+msgstr "Desenha um círculo a partir de um centro"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:72
+msgid "Draw a fixed radius filled circle"
+msgstr "Desenha um círculo com um raio fixo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:73
+msgid "Draw a filled circle from tangent"
+msgstr "Desenha um círculo a partir de uma tangente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:74
+#, fuzzy
+msgid "Create a polygon"
+msgstr "Cria uma linha poligonal"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:75
+msgid "Create a filled polygon"
+msgstr "Cria um polígono preenchido"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:76
+msgid "Create a polyline"
+msgstr "Cria uma linha poligonal"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:77
+msgid "Create a straight line"
+msgstr "Cria uma linha reta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:78
+msgid "Set Line drawing command"
+msgstr "Configura comando de desenho de linha"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:79
+msgid "Set Shape drawing command"
+msgstr "Configura comando de desenho de polígonos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:80
+msgid "Draw table edge"
+msgstr "Desenha limite do tablado"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:81
+msgid "Easement menu"
+msgstr "Menu de curva de transição"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:83
+msgid "Generate a Parts List of selected objects"
+msgstr "Gera uma lista de itens dos objetos selecionados"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:84
+msgid "Set Import/Export mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:85
+#, fuzzy
+msgid "Export an .xti file"
+msgstr "Expota um arquivo XTI"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:86
+#, fuzzy
+msgid "Export a Bitmap image"
+msgstr "Exportar para &bitmap"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:87
+msgid "Export a DXF file"
+msgstr "Exporta um arquivo DXF"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:88
+#, fuzzy
+msgid "Export an SVG file"
+msgstr "Exporta um arquivo DXF"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:90
+msgid "Flip selected objects"
+msgstr "Vira objetos selecionados"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:91
+msgid "Adjust snap grid"
+msgstr "Ajusta grade"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:92
+msgid "Enable snap grid"
+msgstr "Habilita grade"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:93
+msgid "Show snap grid"
+msgstr "Mostra grade"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:94
+msgid "Create a structure from a Group of objects"
+msgstr "Cria uma estrutura a partir de um grupo de objetos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:95
+msgid "Create a hand-laid turnout"
+msgstr "Cria um AMV personalizado"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:96
+msgid "Create a track helix"
+msgstr "Cria trilho em hélice"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:97
+#, fuzzy
+msgid "Import an .xti file"
+msgstr "Importa um arquivo XTI"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:98
+#, fuzzy
+msgid "Import an .xti file as a Module"
+msgstr "Importa um arquivo XTI"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:99
+msgid "Join two tracks"
+msgstr "Junta dois trilhos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:100
+msgid "Join two lines or polylines"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:101
+msgid "Set Join mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:102
+msgid "Change Layers"
+msgstr "Muda camadas"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:103
+msgid "Selects the current drawing layer"
+msgstr "Seleciona a camada de desenho corrente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:104
+msgid "Layout parameters"
+msgstr "Parâmetros de layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:106
+#, fuzzy
+msgid "Show/Hide Map Window"
+msgstr "Mostrar/Ocultar camada"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:107
+#, fuzzy
+msgid "Select Measurement Tool"
+msgstr "Selecionar um AMV"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:108
+msgid "Modify or extend a track"
+msgstr "Modifica ou estende trilho"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:109
+msgid "Change To modify mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:110
+msgid "Move selected objects"
+msgstr "Move objetos selecionados"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:111
+msgid "Move a label"
+msgstr "Move uma etiqueta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:112
+msgid "Move selected objects to current layer"
+msgstr "Move objetos selecionados para a camada corrente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:114
+#, fuzzy
+msgid "Print a bitmap"
+msgstr "Imprime um bitmap"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:115
+#, fuzzy
+msgid "Pan or zoom the layout"
+msgstr "Posiciona material rodante no layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:116
+msgid "Change to zoom/pan mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:117
+msgid "Create a parallel track"
+msgstr "Cria um trilho paralelo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:118
+#, fuzzy
+msgid "Create a parallel line"
+msgstr "Cria um trilho paralelo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:119
+#, fuzzy
+msgid "Set Parallel mode"
+msgstr "Paralelo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:120
+msgid "Register"
+msgstr "Registra"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:121
+msgid "Copy objects from clipboard"
+msgstr "Copia objetos da área de transferencia"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:122
+msgid "Perferences dialog"
+msgstr "Caixa de diálogo de preferências"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:123
+msgid "Display prices of turnouts, sectional tracks and structures"
+msgstr "Exibe preços de AMVs, trilhos e estruturas"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:124
+msgid "Print the layout"
+msgstr "Imprime o layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:125
+#, fuzzy
+msgid "Loads and unloads parameter files into/from toolbar"
+msgstr "Carrega e descarrega arquivo de parâmetros"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:126
+msgid "Elevation Profile Command"
+msgstr "Comando de perfil de inclinação"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:128
+msgid "Command recorder"
+msgstr "Comando de gravação"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:130
+msgid "Update selected Turnout and Structure definitions"
+msgstr "Atualiza AMV selecionado e definições de estruturas"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:131
+msgid "Rescale selected objects"
+msgstr "Reescala objetos selecionados"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:132
+msgid "Rotate selected object(s)"
+msgstr "Rotaciona objetos selecionados"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:133
+msgid "Show a ruler"
+msgstr "Exibe régua"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:134
+msgid "Select objects"
+msgstr "Seleciona objetos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:135
+#, fuzzy
+msgid "Change To Select Mode"
+msgstr "Alterar escala"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:136
+msgid "Selects all objects on the layout"
+msgstr "Seleciona todos os objetos do layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:137
+msgid "Selects all objects in the current Layer"
+msgstr "Seleciona todos os objetos da camada corrente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:138
+msgid "Choose objects by Index number"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:139
+msgid "Invert current selection"
+msgstr "Inverte seleção"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:140
+#, fuzzy
+msgid "Configure the Printer"
+msgstr "Curva centro"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:141
+#, fuzzy
+msgid "Set Split mode"
+msgstr "Configura modo de criação de curva"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:142
+msgid "Split a track"
+msgstr "Secciona um trilho"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:143
+msgid "Split a straight, curved, circle, polygon or polyline Draw Object "
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:144
+msgid "Select stranded (unconnected) track pieces"
+msgstr "Seleciona trecho não conectados"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:145
+msgid "Create a sensor (ie. a occupancy detector or a toggle switch)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:146
+#, fuzzy
+msgid "Create a signal for train control"
+msgstr "Cria trilho circular a parti da tangente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:147
+msgid "Choose which commands are sticky"
+msgstr ""
+"Escolhe quais comandos são \"grudendos\". Aqueles cujos botões de atalho "
+"continuarão habilitados após seu uso."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:148
+msgid "Create straight track"
+msgstr "Cria um trilho reto"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:149
+msgid "Place a structure on the layout"
+msgstr "Posiciona uma estrutura no layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:150
+#, fuzzy
+msgid "Create a switchmotor for turnout control"
+msgstr "Cria uma nova definição de AMV"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:151
+#, fuzzy
+msgid "Edit a switchmotor definition"
+msgstr "Cria uma nova definição de AMV"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:152
+msgid "Enter text on the layout"
+msgstr "Entra um texto no layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:153
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:612
+msgid "Controls the size of the entered text"
+msgstr "Controla o tamanho do texto inserido"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:155
+msgid "Tip of the Day window"
+msgstr "Janela de dica do dia"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:157
+msgid "Change To Run Trains Mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:158
+msgid "Pause/Resume Trains"
+msgstr "Pausa / roda trens"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:159
+msgid "Place a car on the layout"
+msgstr "Posiciona material rodante no layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:160
+msgid "Exit Trains"
+msgstr "Sai do modo de trem"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:161
+msgid "Trim a line, circle or polyline Draw Object using a second Object"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:162
+msgid "Hide/Unhide a track"
+msgstr "Oculta / exibe um trilho"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:163
+msgid "Make/Unmake a track a bridge"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:164
+msgid "Place a turnout or sectional track"
+msgstr "Posiciona um AMV ou trilho"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:165
+msgid "Create a new turnout definition"
+msgstr "Cria uma nova definição de AMV"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:166
+msgid "Place a turntable"
+msgstr "Posiciona um virador de locomotivas"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:167
+msgid "Updates old source files with 3 part titles"
+msgstr "Atualiza arquivos antigos com três partes"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:169
+msgid "Ungroup objects"
+msgstr "Desagrupa objetos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:170
+msgid "Draw tracks with thin lines"
+msgstr "Desenha trilhos com linhas finas"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:171
+msgid "Draw tracks with medium lines"
+msgstr "Desenha trilhos com linhas médias"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:172
+msgid "Draw tracks with thick lines"
+msgstr "Desenha trilhos com linhas grossas"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:173
+msgid "Change drawing scale"
+msgstr "Altera escala de desenho"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:174
+#, fuzzy
+msgid "Zoom to Fit"
+msgstr "Afasta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:175
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:206
+msgid "Zoom in"
+msgstr "Aproxima"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:176
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:207
+msgid "Zoom out"
+msgstr "Afasta"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:180
+#, fuzzy
+msgid "Curved Fixed"
+msgstr "Linha curva"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:181
+#, fuzzy
+msgid "Preferred Radius"
+msgstr "Raio da circunferência"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:182
+#, fuzzy
+msgid "Modify Draw"
+msgstr "Modificar trecho"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:189
+#, fuzzy
+msgid "Rotation Angle"
+msgstr "Ângulo a direita"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:190
+#, fuzzy
+msgid "Rot Center X"
+msgstr "Centro: X"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:191
+#, fuzzy
+msgid "Rot Center Y"
+msgstr "Centro: X"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:193
+msgid "File Menu"
+msgstr "Menu de arquivo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:194
+msgid "Save layout"
+msgstr "Salva layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:195
+msgid "Save layout under a new name "
+msgstr "Salva layout com um novo nome"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:196
+msgid "New layout"
+msgstr "Novo layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:197
+msgid "Generate parts list"
+msgstr "Gera lista de itens"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:198
+msgid "Load a layout"
+msgstr "Carrega um layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:199
+#, fuzzy
+msgid "Manage Parameter Files"
+msgstr "Lista de parâmetros"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:200
+#, fuzzy
+msgid "Print layout"
+msgstr "Imprime o layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:201
+msgid "Exit the program"
+msgstr "Sai do programa"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:202
+msgid "Revert to last saved state of layout plan"
+msgstr "Reverte para o estado do último layout salvo"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:203
+#, fuzzy
+msgid "Printer Setup"
+msgstr "Setup de impressão"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:204
+msgid "Edit menu"
+msgstr "Menu editar"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:205
+msgid "Redraw layout"
+msgstr "Redesenha layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:208
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:211
+msgid "Tools menu"
+msgstr "Menu de ferramentas"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:209
+msgid "View menu"
+msgstr "Menu visualizar"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:210
+msgid "Toolbar configuration"
+msgstr "Configuração da barra de ferramentas"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:212
+msgid "Options menu"
+msgstr "Menu de opções"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:213
+msgid "Playback/Record commands"
+msgstr "Comandos de playback e gravação"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:214
+msgid "Window menu"
+msgstr "Menu de janelas"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:215
+msgid "Help menu"
+msgstr "Menu de ajuda"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:216
+msgid "Recent error messages and explanations"
+msgstr "Últimas mensagens de erros e explicações"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:217
+msgid "Move Hot Bar left"
+msgstr "Move barra de itens à esquerda"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:218
+msgid "Move Hot Bar right"
+msgstr "Move barra de itens à direita"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:219
+msgid "Total track count"
+msgstr "Total de trilhos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:220
+msgid "X Position of cursor"
+msgstr "Posição X do cursor"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:221
+msgid "Y Position of cursor"
+msgstr "Posição Y do cursor"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:222
+msgid "Drawing scale"
+msgstr "Escala de desenho"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:223
+msgid "Message and status line"
+msgstr "Mensagem e linha de status"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:224
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:225
+msgid "Main layout canvas"
+msgstr "Tela de layout principal "
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:226
+msgid "Main drawing canvas"
+msgstr "Tela de desenho principal"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:227
+msgid "Command buttons"
+msgstr "Botões dos comandos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:228
+msgid "Menus"
+msgstr "Menus"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:229
+msgid "Tile, Filename and Window Manager buttons"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:230
+msgid "Turnout and Structure Hot Bar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:231
+msgid "Active layer list and layer buttons"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:232
+msgid "Map window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:233
+msgid "This is the portion of the layout shown in the Main Window canvas"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:234
+msgid "Raise or Lower all Selected Track"
+msgstr "Eleva ou abaixa todos os trechos selecionados"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:235
+#, fuzzy
+msgid "Name of block"
+msgstr "Isto não é um bloco!"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:236
+msgid "Script that the block will run"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:237
+msgid "List of tracks in the Block"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:238
+msgid "Add or Update car object"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:239
+msgid "Manufacturer name"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:242
+msgid "Is the Car a Locomotive?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:243
+msgid "Part Number and Description"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:244
+msgid "Manufacturer Part Number"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:245
+msgid "Use the Selected figure as the car image"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:246
+msgid "Use the default figure as the car image"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:247
+msgid "Optional description of the Car Part"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:248
+msgid "Flip car image"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:249
+msgid "Display Car Item information or reporting marks and dimensions"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:250
+msgid "Full Roadname"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:251
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:252
+msgid "Car Type"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:253
+msgid "Reporting Marks (Roadname abbreviation)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:254
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:489
+msgid "Car Number"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:255
+msgid "Car body Color"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:256
+msgid "Length of car body"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:257
+msgid "Width of car body"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:258
+msgid "Distance between Trucks "
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:259
+msgid "Distance Trucks are displaced along Car"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:260
+msgid "Coupler are mounted on body or truck"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:261
+msgid "Overall Coupled Length"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:262
+msgid "Coupler Length from end of car"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:263
+msgid "Diagram of Car"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:264
+msgid "Item Index Number"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:265
+msgid "Original Purchase Price"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:267
+msgid "Condition of car"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:268
+msgid "Original Purchase Date - yyyymmdd"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:269
+#, fuzzy
+msgid "Last Service Date - yyyymmdd"
+msgstr "Data do serviço"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:270
+msgid "Number of identical cars to be entered"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:271
+msgid "Do all the cars have the same Number?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:272
+msgid "Notes about the car"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:273
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:274
+msgid "Create a new car Part or Prototype definitions"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:275
+msgid "Finds the selected Car Item on the layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:276
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:277
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:278
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:279
+msgid "Sort the Item list"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:281
+msgid "Edit the selected Car Item"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:282
+msgid "Add a new Car Item"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:283
+msgid "Delete from Inventory or return to Shelf"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:284
+msgid "Import a Car Item .csv file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:285
+msgid "Export a Car Item .csv file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:286
+msgid "Create a text list of the Car Items"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:287
+msgid "Specifies the radius of the circle track"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:288
+msgid "Default command is Describe or Select"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:289
+msgid "Action to invoke on Right-Click"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:290
+msgid ""
+"Replace current selection with clicked object or add clicked object to "
+"selection"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:291
+msgid "Clicking into an empty area clears selection if select mode is <add>"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:293
+#, fuzzy
+msgid "The list of control elements"
+msgstr "Elementos de controle de layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:294
+#, fuzzy
+msgid "Edit the element"
+msgstr "Menu editar"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:295
+msgid "Delete the element"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:296
+msgid "Contents Label for new Parameter file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:297
+#, fuzzy
+msgid "Desired curve radius for new track"
+msgstr "Cria um trilho reto"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:298
+msgid "List of custom designed turnouts and structures"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:299
+msgid "Change description, manufacturer or part number."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:300
+msgid "Remove selected entries"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:301
+#, fuzzy
+msgid "Copy selected entries to parameter file"
+msgstr "Copia objetos selecionados para a área de transferencia"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:302
+#, fuzzy
+msgid "Create the selected type"
+msgstr "Arrastar para mover trecho selecionados"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:303
+#, fuzzy
+msgid "Create a new part or prototype?"
+msgstr "Cria uma nova descrição do material rodante"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:304
+msgid "Update custom file and close"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:305
+msgid "Executes the next step of the demo"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:306
+msgid "Skip to next demo"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:307
+msgid "Stops the demonstration and returns you to XTrackCAD"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:308
+msgid "Select speed of Playback"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:309
+msgid "This is where comments about the demo are displayed"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:346
+msgid "Move the Main canvas if you drag near the edge"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:347
+msgid "Color tracks by layer or individually"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:348
+msgid "Color draw objects by layer or individually"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:349
+msgid "Controls the drawing of hidden tracks"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:350
+msgid "Controls the drawing of End-Points"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:351
+msgid "How to draw track ties"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:352
+msgid "Show crosshair at center of curves"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:353
+msgid "Drawing scale when to draw tracks with 2 rails"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:354
+msgid "Drawing scale of the map window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:355
+msgid "Whether the main layout is updated while dragging on the Map"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:356
+msgid "Enable labels for Turnouts, Flextrack Lengths and Elevations"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:357
+msgid "When to label Turnout, Flextrack Lengths and Elevations"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:358
+msgid "Font size for labels on layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:359
+msgid "Label elements on the Hot Bar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:360
+msgid "Label elements on layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:361
+msgid "Label elements for lists"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:362
+msgid "How to group cars on the Train Hot Bar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:363
+msgid "Delay (in mS) between updating train movements"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:364
+msgid "Don't show trains in tunnels when tunnels are hidden"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:365
+msgid "Display unconnected endpoints of track with special marks"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:366
+msgid "Whether the Main Drawing Area shows as much of the room as possible"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:367
+msgid "Don't hide system cursor when program cursors are showing"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:369
+msgid "Width of the lines"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:370
+msgid "Color of the lines"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:371
+msgid "List of types of Lumber"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:372
+msgid "Color of Benchwork"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:373
+msgid "Orientation of Benchwork"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:374
+msgid "Size of Dimension Arrows"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:375
+#, fuzzy
+msgid "Width of Box"
+msgstr "Largura %s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:376
+#, fuzzy
+msgid "Height of Box"
+msgstr "Altura %s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:377
+msgid "Angle of Line"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:378
+#, fuzzy
+msgid "Radius of Curve"
+msgstr "Raio 2"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:380
+msgid "This controls the sharpness of the easement curve"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:381
+msgid "Minimum radius"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:382
+msgid "Maximum offset"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:383
+msgid "Easement length"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:384
+msgid ""
+"These radio buttons are a short-cut for Values of 0.0, 0.5, 1.0 and 2.0. "
+"None turns Easements off"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:385
+msgid "Complete easement selection"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:386
+msgid "Type of elevation"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:387
+msgid "Height of End Point"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:388
+msgid "Compute elevation based on neighbors"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:389
+msgid "Compute grade based on neighbors"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:390
+msgid "Specify a name for an End-Point"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:392
+msgid "Print parts list"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:393
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:543
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:666
+msgid "Invoke the Print Setup dialog"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:394
+msgid "Save parts list to file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:395
+msgid "This is the list of parts for the layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:396
+msgid "Enable prices on the Parts List"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:397
+msgid "Enable index listing on the Parts List"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:398
+msgid "Save the note and close window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:399
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:400
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:480
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:481
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:617
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:618
+msgid "Set the position for the note"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:401
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:482
+msgid "Set the layer for the note"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:402
+#, fuzzy
+msgid "Enter the title of the file"
+msgstr "Entra um texto no layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:403
+msgid "Enter the path and name of the file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:404
+msgid "Open the document in the default application"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:405
+msgid "Select the file from your system"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:406
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:409
+msgid "Spacing between major grid lines"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:407
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:410
+msgid "Allows the spacing to be subdivided"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:408
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:411
+msgid "Specifies if positions are snaped in this direction"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:412
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:413
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:414
+msgid "Shows the origin and angle of the grid"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:415
+msgid "Specifies if the grid is shown"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:416
+msgid "Completes the grid specification"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:420
+msgid "Number of segments in Group"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:421
+msgid "Replace the Selected object with the new definition?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:422
+msgid "Creates a new Structure (or Turnout)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:423
+msgid "Elevation difference of Helix End-Points"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:424
+msgid "Helix Radius"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:425
+msgid "Number of turns in the helix"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:426
+msgid "Angle between helix entrance and exit"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:427
+msgid "Grade in helix"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:428
+msgid "Separation between helix layers including baseboard, track, etc"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:429
+msgid "Index numbers of objects, separated by commas"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:430
+#, fuzzy
+msgid "Desired curve radius between straight tracks"
+msgstr "Cria um trilho reto"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:431
+msgid "Layer list"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:432
+msgid "Layer Name"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:433
+msgid "Hide Layer Button on MenuBar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:434
+msgid "Color of layer"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:435
+msgid "Layer is drawn on Main window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:436
+msgid "Layer cannot be changed"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:437
+msgid "Use color for this Layer if color-by-layer is set"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:438
+msgid "Other Layers this Layer also shows/hides"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:439
+msgid "Layer is a Module"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:440
+msgid "Layer is drawn on Map window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:441
+msgid "Layer inherits settings from Layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:442
+msgid "Specifies the Modelling Scale for this Layer"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:443
+msgid "Specifies the rail gauge for this Layer"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:444
+#, fuzzy
+msgid ""
+"Specifies minimum track radius for this layer. Tracks with a smaller radius "
+"are considered exceptional."
+msgstr ""
+"Especifica raio mínimo (em centímetros ou em polegadas). Trechos com raios "
+"menores serão considerados excepcionais."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:445
+#, fuzzy
+msgid ""
+"Specifies maximum track grade percent (%) for this layer. Tracks with a "
+"larger grade are considered exceptional."
+msgstr ""
+"Especifica inclinação máxima (em porcentagem). Trechos com inclinações "
+"maiores serão considerados excepcionais."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:446
+msgid "Specifies the tie length for this layer."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:447
+msgid "Specifies the tie width for this layer."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:448
+msgid "Specifies the tie spacing for this layer."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:449
+msgid "Add a new layer after the selected layer"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:450
+msgid "Delete the selected layer. There must be no objects in it."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:451
+msgid "Reset the layer to layout defaults"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:452
+msgid "Number of layer buttons to show"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:453
+msgid "Number of objects in this layer"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:454
+msgid "Settings File to load when this layer is made current"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:456
+msgid "Load layer configuration from default"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:457
+msgid "Save current layer configuration as default"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:458
+msgid "Overwrite layer configuration with system default values"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:459
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:460
+msgid "Specifies the size of the room (in inches or centimeters)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:461
+msgid "Specifies the layout Title that will appear on printouts"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:462
+msgid "Specifies the layout Subtitle that will appear on printouts"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:463
+msgid "Specifies the Modelling Scale"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:464
+msgid "Specifies the rail gauge, ie. the distance between the rails"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:465
+msgid ""
+"Specifies minimum track radius (in inches or centimeters). Tracks with a "
+"smaller radius are considered exceptional."
+msgstr ""
+"Especifica raio mínimo (em centímetros ou em polegadas). Trechos com raios "
+"menores serão considerados excepcionais."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:466
+#, fuzzy
+msgid ""
+"Specifies maximum track grade expressed as a percent (%). Tracks with a "
+"larger grade are considered exceptional."
+msgstr ""
+"Especifica inclinação máxima (em porcentagem). Trechos com inclinações "
+"maiores serão considerados excepcionais."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:467
+msgid "Specifies the tie length for the layout."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:468
+#, fuzzy
+msgid "Specifies the tie width for the layout."
+msgstr "Substitua este texto por uma nota do traçado"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:469
+msgid "Specifies the tie spacing for the layout."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:470
+#, fuzzy
+msgid "Select the background image"
+msgstr "Seleciona a camada de desenho corrente"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:471
+msgid "Remove the background image"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:472
+msgid "Specifies the x offset of the bottom left of the background image"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:473
+msgid "Specifies the y offset of the bottom left of the background image"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:474
+msgid ""
+"Specifies how large the bottom edge of the background image should be in "
+"model units"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:475
+msgid ""
+"Specifies the screening of the background image from 0 (none) to 100% "
+"(vanishes)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:476
+msgid "Specifies the rotation angle of the background image in degrees"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:477
+msgid "Write a copy of current settings to a named file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:478
+msgid "Override current settings from a named file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:479
+msgid "Save the link and close window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:483
+#, fuzzy
+msgid "Enter the title of the linked webpage"
+msgstr "Controla o tamanho do texto inserido"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:484
+#, fuzzy
+msgid "Enter the URL for the webpage"
+msgstr "Entra um texto no layout"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:485
+msgid "Open the webpage in your browser"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:486
+#, fuzzy
+msgid "Move by X"
+msgstr "Mover"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:487
+#, fuzzy
+msgid "Move by Y"
+msgstr "Mover"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:490
+msgid ""
+"This is the body of the Note. To change this select Modify from the File "
+"Menu"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:492
+msgid "Specifies number of pixels per inch (or centimeter)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:494
+msgid ""
+"Specifies whether Layout Titles, Borders or Track Centerlines are printed on "
+"the BitMap"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:495
+msgid ""
+"Specifies the separation between the original track and the parallel track/"
+"line"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:496
+msgid ""
+"Specifies the a factor that increases the seperation as the radius of the "
+"original track reduces. 0.0 means no increase."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:497
+msgid "Enter your name as specified in the XTrackCAD Registration Notice"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:498
+msgid "Enter the key value as specified in the XTrackCAD Registration Notice"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:499
+msgid "Validates the name and key. Terminates the registration command"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:500
+msgid "0 degrees is up or to the right"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:501
+msgid "Choose english (inches) or metric (centimeters)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:502
+msgid "How to display length measurements"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:503
+msgid "Do not create tracks to be shorter than this value"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:504
+msgid "Maximum distance between connected end points"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:505
+msgid "Minimum angle between connected End-Points"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:506
+msgid "Specifies the minimum angle between tracks connected to a turntable"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:507
+msgid "Trains will crash above this speed"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:508
+msgid "Enable/Disable balloon popup help windows"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:509
+msgid "Enable/Disable show of flextrack on hotbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:510
+msgid "How far you can move the mouse before its considered a drag"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:511
+msgid "How long you can hold a mouse button down before its considered a drag"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:512
+msgid "Minimum distance (in pixels) between grid lines/ticks"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:513
+#, fuzzy
+msgid ""
+"Specifies the Check Point frequency; number of modifications made since the "
+"last checkpoint."
+msgstr ""
+"Especifica a freqüência de salvamento automático. Isto é, o número de "
+"modificações desde a última gravação."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:514
+msgid "Specifies the number of checkpoints after save before auto-saving."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:515
+msgid "Resume work on last layout or start with new layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:517
+msgid "Updated cost of current selected item"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:519
+msgid "Selection list for prices"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:520
+msgid "Length of a piece of flex-track"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:521
+msgid "Price of specified length of flex-track"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:523
+#, fuzzy
+msgid "Controls the printing of a centerline of track cmdPrint"
+msgstr "Controla o tamanho do texto inserido"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:524
+msgid "Controls the reduction (scale) of the printout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:525
+msgid "Scaled page width (Scale times physical page width)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:526
+msgid "Sets page size to the maximum (based on scale and physical page size)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:527
+msgid "Scaled page height (Scale times physical page height)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:528
+msgid "Sets scale, origin and angle for a one page printout of the layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:529
+msgid "Print page in Portrait or Landscape format"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:530
+msgid "Order of printing pages"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:531
+msgid "Print Title, Date, Author and other information at bottom of page?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:532
+msgid "Ignore unprintable page margins?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:533
+msgid "Print Registration Marks at 1:1?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:534
+msgid "Print Snap Grid?"
+msgstr "Linha e divisão da grade"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:535
+msgid "Print Rulers at the layout edge only, or on all page edges, or nowhere?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:536
+msgid "Print Roadbed Outline?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:537
+msgid "Print Roadbed Outline"
+msgstr "Imprimir leito dos trilhos"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:538
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:539
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:541
+msgid ""
+"Origin of the print grid. This is useful if you want to reprint a set of "
+"pages"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:540
+msgid "Resets the origin and angle to 0"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:542
+msgid "Deselects all pages"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:544
+msgid "Print selected pages and terminates the print command"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:545
+#, fuzzy
+msgid "List of loaded, shown or hidden parameter files"
+msgstr "Carrega e descarrega arquivo de parâmetros"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:546
+msgid "Show parameter files by names or descriptions"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:547
+msgid "Toggle the shown status of the selected parameter file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:548
+msgid "Find extra parameter files from the filesystem"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:549
+#, fuzzy
+msgid "Bookmark parameter files"
+msgstr "Lendo arquivos de parâmetros"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:550
+msgid "Find parameter files from the system library"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:551
+msgid "Update parameter file list"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:552
+#, fuzzy
+msgid "Reload parameter file from list"
+msgstr "Lendo arquivos de parâmetros"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:553
+#, fuzzy
+msgid "Select all parameter files shown"
+msgstr "Lendo arquivos de parâmetros"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:554
+#, fuzzy
+msgid "Remove parameter files from active list"
+msgstr "Lendo arquivos de parâmetros"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:555
+msgid "Profile of specified path"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:556
+msgid "Clear the profile"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:557
+msgid "Print the profile"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:559
+msgid "Stop recording"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:560
+msgid "Insert a message"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:561
+msgid "End a message"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:562
+msgid "Message body"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:563
+msgid "Possible turnouts"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:564
+msgid "Skip this turnout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:566
+msgid "Manufacturer of Object"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:567
+msgid "Description of Object"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:568
+msgid "Part Nuber of Object"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:570
+msgid "Rescale by Scale Conversion or by Ratio"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:571
+msgid "Original Scale of the selected objects"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:572
+msgid "Original Gauge of the selected objects"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:573
+msgid "New Scale of the selected objects"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:574
+msgid "New Gauge of the selected objects"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:575
+msgid "Change track dimensions to new scale"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:576
+msgid "Change size by this amount"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:578
+msgid "Snap Grid Line and Division"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:579
+msgid "X and Y position markers"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:580
+msgid "Border rulers, room boundaries and table edges"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:581
+msgid "Primary Axis of grid rotation"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:582
+msgid "Secondary Axis of grid rotation"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:583
+msgid "Unselected tracks"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:584
+msgid "Selected tracks"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:585
+msgid "Color of tracks on the Profile path"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:586
+msgid "Color of Exceptional tracks"
+msgstr "Cor dos trechos excepcionais"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:587
+msgid "Color of track ties"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:588
+msgid "Updates the colors"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:589
+msgid "Angle in degrees"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:590
+msgid "Rotate object(s) by specified amount"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:591
+msgid "Enter one or more words as search terms"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:592
+msgid "Remove the current filter and show all files"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:593
+#, fuzzy
+msgid "Find matching file descriptions"
+msgstr "Selecionar e arrastar uma descrição"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:594
+msgid "Search results"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:595
+msgid "Show descriptions or filenames in results"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:596
+msgid "Select how well the definitions must fit the current layout scale"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:597
+msgid "Add selected entries into parameter file list"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:598
+#, fuzzy
+msgid "Select All found entries"
+msgstr "Selecionar o segundo trecho"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:599
+msgid "Reload the system library contents for finding"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:600
+msgid "Choose commands to be sticky"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:601
+msgid "Make the commands sticky"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:602
+msgid "List of available structure"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:603
+msgid "Diagram of the selected structure"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:604
+msgid "Hide Selection window when placing Structure"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:605
+msgid "Drawing scale and size"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:606
+msgid "Complete structure placement"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:607
+msgid "Choose a Pier number"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:608
+#, fuzzy
+msgid "Name of the Motor"
+msgstr "Alterar motor de AMV"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:609
+msgid "Value when switch is normal"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:610
+msgid "Value when the switch is reversed"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:611
+msgid "Value for a positive comfirmation of switch position"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:613
+#, fuzzy
+msgid "Controls the color of the entered text"
+msgstr "Controla o tamanho do texto inserido"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:614
+msgid "If the text is boxed"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:615
+msgid "Save and close editor dialog"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:616
+msgid "Set layer for the note"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:619
+msgid "Enter your addiional information here"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:620
+msgid "Useful information about the program"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:621
+msgid "Show Tip of the Day every time the program starts"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:622
+msgid "Show the next Tip of the Day"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:623
+msgid "Show the previous Tip of the Day"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:625
+msgid "List of butten groups and their state in the toolbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:626
+msgid "Set all button groups visible in toolbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:627
+msgid "Invert the visibility of button groups"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:628
+msgid "Close dialog and configure the toolbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:629
+msgid "List of Cars"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:630
+msgid "List of active trains"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:632
+msgid "Train odometer"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:633
+msgid "Reset odometer to 0"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:634
+msgid "Find train on layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:635
+msgid "Follow train around layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:636
+msgid "Flip direction at End Of Track"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:637
+msgid "Change direction of train"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:638
+msgid "Stop the train"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:639
+msgid "List of available turnouts for the current scale"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:640
+msgid ""
+"Diagram of the currently selected turnout. Click on a End-Point to select "
+"the Active End-Point"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:641
+msgid ""
+"A menu list of various type of turnouts and sectional tracks you can define"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:642
+msgid "Hide Selection window when placing Turnout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:643
+msgid "The selected Active End-Point"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:644
+msgid "Current selected turnout, (displayed in the diagram window)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:645
+msgid "One the End-Points that can be selected"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:647
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:648
+msgid "Angle of the specified track to the center line of the turnout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:649
+msgid "Specifies if angles are entered as Frog Numbers or in degrees"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:652
+msgid "Turnout description (Manuf., Size, Part Number, etc)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:653
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:654
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:655
+msgid "Length from the base to the end of the specified track"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:657
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:658
+msgid "Offset of the track End-Point from the center line of the turnout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:661
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:662
+msgid "Prints a full size diagram of the turnout for checking"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:663
+msgid "Color of Roadbed lines"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:664
+msgid "Width of Roadbed lines"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:665
+msgid "Width of Roadbed"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:667
+msgid "Closes the window and returns to the Turnout Selection window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:668
+msgid "Specifies the diameter of the turntable"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:669
+msgid "Old Turnout title"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:670
+msgid "List of available titles"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:671
+msgid "Leave the Turnouts' title unchanged"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:672
+msgid "Invoke the Parameter Files dialog"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:673
+msgid "List of available turnouts"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:674
+msgid "Update the Turnouts' title"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:678
+msgid "Sample"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:680
+msgid "Slant"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:681
+msgid "Font selection dialog"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:682
+msgid "Weight"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:683
+msgid "Printer Abort Window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:684
+msgid "Print to filename"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:685
+msgid "Specify Postscript font alias mapping"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:686
+msgid ""
+"Displays the Print Setup window to change printers, orientation, paper size, "
+"etc."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:687
+msgid "Closes this dialog"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:688
+msgid "Page orientation"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:689
+msgid "Unprintable margins"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:690
+msgid "Updates and closes this dialog"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:691
+msgid "Choose paper size"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:692
+msgid "Choose printer"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:693
+msgid "Print test page"
+msgstr ""
+
+#~ msgid "No paths"
+#~ msgstr "Nenhuma via"
+
+#, fuzzy
+#~ msgid "Predefined Track"
+#~ msgstr "Trilho selecionado"
+
+#~ msgid "Layout"
+#~ msgstr "Layout"
+
+#, fuzzy
+#~ msgid "Re-edit"
+#~ msgstr "Resetar"
+
+#, fuzzy
+#~ msgid "Update comment"
+#~ msgstr "Desfazer último comando"
+
+#, fuzzy
+#~ msgid "Comment"
+#~ msgstr "&Conteúdo"
+
+#, fuzzy
+#~ msgid "a straight or a curve.\n"
+#~ msgstr "Cria um trilho reto"
+
+#, fuzzy
+#~ msgid "Select 2nd track - desired radius %0.3f"
+#~ msgstr "Selecionar trecho a descrever"
+
+#~ msgid "Bridge"
+#~ msgstr "Ponte"
+
+#, fuzzy
+#~ msgid "Orgin X"
+#~ msgstr "Margem"
+
+#~ msgid "Angle = %0.3f"
+#~ msgstr "Ângulo = %0.3f"
+
+#~ msgid "Train"
+#~ msgstr "Trem"
+
+#~ msgid "Turnout path[%d:%d] out of bounds: %d"
+#~ msgstr "AMV[%d:%d] fora do limite: %d"
+
+#, fuzzy
+#~ msgid "Turnout path[%d] %d is not a valid track segment"
+#~ msgstr "AMV[%d] %d não se encontra em um segmento"
+
+#~ msgid "Print Titles"
+#~ msgstr "Imprimir títulos"
+
+#~ msgid "Print Borders"
+#~ msgstr "Imprimir bordas"
+
+#~ msgid "Print Centerline"
+#~ msgstr "Imprimir linha central"
+
+#~ msgid "Approximate file size: 999.9Mb"
+#~ msgstr "Tamanho aproximado do arquivo: 999.9 Mb"
+
+#~ msgid "Approximate file size : %0.1fKb"
+#~ msgstr "Tamanho aproximado do arquivo : %0.1f Kb"
+
+#~ msgid "Approximate file size : %0.1fMb"
+#~ msgstr "Tamanho aproximado do arquivo : %0.1f Mb"
+
+#, fuzzy
+#~ msgid "Bitmap files (*.png)|*.png"
+#~ msgstr "Arquivos bitmap:*.bmp"
+
+#~ msgid "BitMap"
+#~ msgstr "Bitmap"
+
+#~ msgid "Enter a 8 digit date"
+#~ msgstr "Digitar uma data de 8 dígitos"
+
+#~ msgid "Enter a Prototype name"
+#~ msgstr "Digitar um nome para o protótipo"
+
+#~ msgid "Enter a Part Number"
+#~ msgstr "Digitar o número do item"
+
+#~ msgid "Enter the Car Length"
+#~ msgstr "Digitar o comprimento do material rodante"
+
+#~ msgid "Enter the Car Width"
+#~ msgstr "Digitar a largura do material rodante"
+
+#~ msgid "Enter the Truck Centers"
+#~ msgstr "Digitar o centro dos truques"
+
+#, fuzzy
+#~ msgid "Truck Center Offset must be greater than 0 or 0"
+#~ msgstr ""
+#~ "O centro dos truques devem ser menores que o comprimento do material "
+#~ "rodante"
+
+#~ msgid "Truck Centers must be less than Car Length"
+#~ msgstr ""
+#~ "O centro dos truques devem ser menores que o comprimento do material "
+#~ "rodante"
+
+#~ msgid "Enter the Coupled Length or Coupler Length"
+#~ msgstr "Digitar o comprimento engatado ou o comprimento do engate"
+
+#~ msgid "Enter the Coupled Length"
+#~ msgstr "Digitar o comprimento engatado"
+
+#~ msgid "Enter a item Index"
+#~ msgstr "Digitar um índice para o item"
+
+#~ msgid "Purchase Price is not valid"
+#~ msgstr "Preço de compra inválido"
+
+#~ msgid "Current Price is not valid"
+#~ msgstr "Preço atual inválido"
+
+#~ msgid "Purchase Date is not valid"
+#~ msgstr "Data de compra inválida"
+
+#~ msgid "Service Date is not valid"
+#~ msgstr "Data de serviço inválida"
+
+#~ msgid "Personal Preferences"
+#~ msgstr "Preferências pessoais"
+
+#~ msgid "Drag to place next end point"
+#~ msgstr "Arrastar para posicionar próxima extremidade"
+
+#~ msgid "Check Pointing"
+#~ msgstr "Salvando arquivo temporário."
+
+#~ msgid "&Loosen Tracks"
+#~ msgstr "Trechos &perdidos"
+
+#, fuzzy
+#~ msgid "Reload Library"
+#~ msgstr "Recarregar"
+
+#, fuzzy
+#~ msgid "Merge Cornu"
+#~ msgstr "Fundir curvas"
+
+#~ msgid "%d Track(s) loosened"
+#~ msgstr "%d trecho(s) liberado(s)"
+
+#~ msgid "No tracks loosened"
+#~ msgstr "Nenhum trecho liberado"
+
+#, fuzzy
+#~ msgid "Save format:"
+#~ msgstr "Formato da página"
+
+#~ msgid "Font Select"
+#~ msgstr "Seleção de fonte"
+
+#~ msgid "Home"
+#~ msgstr "Início"
+
+#, fuzzy
+#~ msgid "Contents"
+#~ msgstr "&Conteúdo"
+
+# Texto não está claro. Quais arquivos tenho que copiar em um dos diretórios em questão?
+#~ msgid ""
+#~ "The required configuration files could not be located in the expected "
+#~ "location.\n"
+#~ "\n"
+#~ "Usually this is an installation problem. Make sure that these files are "
+#~ "installed in either \n"
+#~ " %s/share/xtrkcad or\n"
+#~ " /usr/lib/%s or\n"
+#~ " /usr/local/lib/%s\n"
+#~ "If this is not possible, the environment variable %s must contain the "
+#~ "name of the correct directory."
+#~ msgstr ""
+#~ "Os arquivos de configuração mínima não foram encontrados.\n"
+#~ "\n"
+#~ "Tipicamente, isso é um problema de instalação. Por favor, tenha certeza "
+#~ "que esses arquivos estejam instalados em \n"
+#~ " %s/share/xtrkcad ou\n"
+#~ " /usr/lib/%s ou\n"
+#~ " /usr/local/lib/%s\n"
+#~ "Se não for possível, a variável de ambiente \"%s\" deverá conter o nome "
+#~ "do diretório correto."
+
+#~ msgid "HOME is not set"
+#~ msgstr "Variável HOME não está configurada"
+
+#~ msgid "Exit"
+#~ msgstr "Sair"
+
+#~ msgid "Cannot create %s"
+#~ msgstr "Não foi possível criar %s"
+
+#, fuzzy
+#~ msgid "Space"
+#~ msgstr "Espaçamento"
+
#~ msgid "Radius=%s Angle=%0.3f"
#~ msgstr "Raio=%s Ângulo=%0.3f"
@@ -14253,9 +15372,6 @@ msgstr "Painéis de controle (Novo)"
#~ msgid "Draw moving track as end-points"
#~ msgstr "Desenhar apenas extremidades de trechos sendo movidos"
-#~ msgid "Drag to move selected tracks"
-#~ msgstr "Arrastar para mover trecho selecionados"
-
#~ msgid " Angle %0.3f"
#~ msgstr " Ângulo %0.3f"
@@ -14438,9 +15554,6 @@ msgstr "Painéis de controle (Novo)"
#~ msgid "Tomato"
#~ msgstr "Vermelho-tomate"
-#~ msgid "Red"
-#~ msgstr "Vermelho"
-
#~ msgid "Hot Pink"
#~ msgstr "Rosa-quente"
@@ -14505,21 +15618,12 @@ msgstr "Painéis de controle (Novo)"
#~ msgid "Enter both printer name and command"
#~ msgstr "Digitar nome da impressora e comando"
-#~ msgid "Can not save New Printer definition"
-#~ msgstr "Não foi possível nova impressora definida"
-
#~ msgid "Enter printer name"
#~ msgstr "Digitar nome da impressora"
#~ msgid "Can not save New Margin definition"
#~ msgstr "Não foi possível salvar nova margem definida"
-#~ msgid "Paper Size"
-#~ msgstr "Tamanho do papel"
-
-#~ msgid "Printer"
-#~ msgstr "Impressora"
-
#~ msgid "Format"
#~ msgstr "Formato"
@@ -14538,9 +15642,6 @@ msgstr "Painéis de controle (Novo)"
#~ msgid "Name: "
#~ msgstr "Nome:"
-#~ msgid "Command: "
-#~ msgstr "Comando:"
-
#~ msgid "Add Margin"
#~ msgstr "Adicionar margem"
diff --git a/app/i18n/ru.po b/app/i18n/ru.po
index a13edd2..51ac0d4 100644
--- a/app/i18n/ru.po
+++ b/app/i18n/ru.po
@@ -2,12 +2,12 @@
# Copyright (C) CupIvan
# This file is distributed under the same license as the xtrkcad package.
# CupIvan <mail@cupivan.ru>, 2015-2018
-#
+#
msgid ""
msgstr ""
"Project-Id-Version: xtrkcad 5.1.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 17:57+0200\n"
+"POT-Creation-Date: 2023-12-27 10:09+0100\n"
"PO-Revision-Date: 2019-04-04 10:37+0300\n"
"Last-Translator: CupIvan <mail@cupivan.ru>\n"
"Language-Team: \n"
@@ -19,1731 +19,1768 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: ../bin/archive.c:178 ../bin/archive.c:185 ../bin/archive.c:214
-#: ../bin/archive.c:239 ../bin/archive.c:294 ../bin/archive.c:307
-#: ../bin/archive.c:315 ../bin/archive.c:365 ../bin/archive.c:400
-#: ../bin/archive.c:416 ../bin/archive.c:426 ../bin/archive.c:449
-#: ../bin/cblock.c:491 ../bin/cswitchmotor.c:475 ../bin/dbench.c:147
-#: ../bin/dcar.c:4519 ../bin/dcar.c:4705 ../bin/dcar.c:4715 ../bin/dcar.c:4763
-#: ../bin/dcar.c:4770 ../bin/dcar.c:4788 ../bin/dcar.c:4801 ../bin/dcar.c:4806
-#: ../bin/dcar.c:4835 ../bin/dcar.c:5000 ../bin/directory.c:65
-#: ../bin/directory.c:100 ../bin/directory.c:107 ../bin/directory.c:138
-#: ../bin/directory.c:154 ../bin/dxfoutput.c:193 ../bin/fileio.c:242
-#: ../bin/fileio.c:699 ../bin/fileio.c:899 ../bin/fileio.c:1026
-#: ../bin/fileio.c:1093 ../bin/fileio.c:1099 ../bin/fileio.c:1175
-#: ../bin/fileio.c:1185 ../bin/fileio.c:1517 ../bin/fileio.c:1567
-#: ../bin/fileio.c:1623 ../bin/macro.c:179 ../bin/macro.c:832
-#: ../bin/macro.c:879 ../bin/macro.c:900 ../bin/macro.c:1045
-#: ../bin/macro.c:1062 ../bin/macro.c:1324 ../bin/param.c:2090
-#: ../bin/paramfile.c:247 ../bin/paramfilelist.c:376 ../bin/track.c:1116
-#: ../bin/track.c:1640 ../bin/track.c:1946 ../bin/track.c:1950
-#: ../bin/track.c:1962 ../bin/track.c:2026 ../wlib/gtklib/wpref.c:248
-#: ../wlib/gtklib/wpref.c:255
+#: ../bin/archive.c:154 ../bin/archive.c:161 ../bin/archive.c:190
+#: ../bin/archive.c:215 ../bin/archive.c:270 ../bin/archive.c:284
+#: ../bin/archive.c:294 ../bin/archive.c:348 ../bin/archive.c:384
+#: ../bin/archive.c:400 ../bin/archive.c:410 ../bin/archive.c:433
+#: ../bin/cblock.c:505 ../bin/cswitchmotor.c:500 ../bin/dbench.c:147
+#: ../bin/dbitmap.c:427 ../bin/dcar.c:4894 ../bin/dcar.c:5093
+#: ../bin/dcar.c:5103 ../bin/dcar.c:5150 ../bin/dcar.c:5158 ../bin/dcar.c:5176
+#: ../bin/dcar.c:5191 ../bin/dcar.c:5196 ../bin/dcar.c:5225 ../bin/dcar.c:5395
+#: ../bin/directory.c:44 ../bin/directory.c:79 ../bin/directory.c:86
+#: ../bin/directory.c:117 ../bin/directory.c:133 ../bin/dxfoutput.c:205
+#: ../bin/fileio.c:224 ../bin/fileio.c:677 ../bin/fileio.c:835
+#: ../bin/fileio.c:897 ../bin/fileio.c:1022 ../bin/fileio.c:1091
+#: ../bin/fileio.c:1097 ../bin/fileio.c:1189 ../bin/fileio.c:1202
+#: ../bin/fileio.c:1631 ../bin/fileio.c:1680 ../bin/fileio.c:1733
+#: ../bin/macro.c:166 ../bin/macro.c:855 ../bin/macro.c:1010
+#: ../bin/macro.c:1029 ../bin/macro.c:1329 ../bin/param.c:2402
+#: ../bin/paramfile.c:258 ../bin/paramfilelist.c:458 ../bin/track.c:1104
+#: ../bin/track.c:1344 ../bin/track.c:1366 ../bin/track.c:1785
+#: ../bin/track.c:1990 ../bin/track.c:2000 ../bin/track.c:2005
+#: ../bin/track.c:2020 ../bin/track.c:2047 ../bin/track.c:2105
msgid "Continue"
msgstr "Продолжить"
-#: ../bin/cbezier.c:599
+#: ../bin/cbezier.c:631
msgid "Select End-Point - Ctrl unlocks end-point"
msgstr "Выбрать конечную точку - Ctrl разблокирует её"
-#: ../bin/cbezier.c:601
+#: ../bin/cbezier.c:633
msgid "Select End-Point"
msgstr "Выбрать конечную точку"
-#: ../bin/cbezier.c:633
+#: ../bin/cbezier.c:666
msgid "Not close enough to any valid, selectable point, reselect"
msgstr ""
-#: ../bin/cbezier.c:639
+#: ../bin/cbezier.c:672
#, c-format
msgid "Drag point %d to new location and release it"
msgstr ""
-#: ../bin/cbezier.c:648 ../bin/cbezier.c:739 ../bin/cbezier.c:741
+#: ../bin/cbezier.c:682 ../bin/cbezier.c:785 ../bin/cbezier.c:788
msgid "Pick any circle to adjust it - Enter to confirm, ESC to abort"
msgstr ""
-#: ../bin/cbezier.c:672
+#: ../bin/cbezier.c:707
msgid "Bezier Curve Invalid has identical end points Change End Point"
msgstr ""
-#: ../bin/cbezier.c:675
+#: ../bin/cbezier.c:711
#, c-format
msgid "Bezier Curve Invalid has %s Change End Point"
msgstr ""
-#: ../bin/cbezier.c:678
+#: ../bin/cbezier.c:715
msgid "Bezier Curve Invalid has three co-incident points"
msgstr ""
-#: ../bin/cbezier.c:680
+#: ../bin/cbezier.c:718
msgid "Bezier is Straight Line"
msgstr "Безье к прÑмой линии"
-#: ../bin/cbezier.c:682
+#: ../bin/cbezier.c:721
#, c-format
msgid "Bezier %s : Min Radius=%s Length=%s fx=%0.3f fy=%0.3f cusp=%0.3f"
msgstr "Безье %s : Мин. радиуÑ=%s Длина=%s fx=%0.3f fy=%0.3f выÑтуп=%0.3f"
-#: ../bin/cbezier.c:686
+#: ../bin/cbezier.c:726
#, c-format
msgid "Bezier %s : Min Radius=%s Length=%s"
msgstr "Безье %s : Мин. радиуÑ=%s Длина=%s"
-#: ../bin/cbezier.c:711
+#: ../bin/cbezier.c:752
msgid "No unconnected End Point to lock to"
msgstr ""
-#: ../bin/cbezier.c:729
+#: ../bin/cbezier.c:772
msgid "Bezier curve invalid has identical end points Change End Point"
msgstr ""
-#: ../bin/cbezier.c:732
+#: ../bin/cbezier.c:776
#, c-format
msgid "Bezier curve invalid has %s Change End Point"
msgstr ""
-#: ../bin/cbezier.c:735
+#: ../bin/cbezier.c:780
msgid "Bezier curve invalid has three co-incident points"
msgstr ""
-#: ../bin/cbezier.c:737
+#: ../bin/cbezier.c:783
msgid "Bezier curve is straight line"
msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ð‘ÐµÐ·ÑŒÐµ - Ñто прÑÐ¼Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ"
-#: ../bin/cbezier.c:751 ../bin/cbezier.c:765
+#: ../bin/cbezier.c:799 ../bin/cbezier.c:813
msgid "Invalid Bezier Track - end points are identical"
msgstr ""
-#: ../bin/cbezier.c:758
+#: ../bin/cbezier.c:806
#, c-format
msgid "Invalid Bezier Curve has a %s - Adjust"
msgstr ""
-#: ../bin/cbezier.c:762
+#: ../bin/cbezier.c:810
msgid "Invalid Bezier Curve has three coincident points - Adjust"
msgstr ""
-#: ../bin/cbezier.c:770
+#: ../bin/cbezier.c:818
msgid "Create Bezier"
msgstr "Создать Безье"
-#: ../bin/cbezier.c:858
+#: ../bin/cbezier.c:900
#, c-format
msgid "%s picked - now select a Point"
msgstr "%s Ñобрано - теперь выберите Точку"
-#: ../bin/cbezier.c:888 ../bin/ccornu.c:1952
+#: ../bin/cbezier.c:939 ../bin/ccornu.c:2085
msgid "No changes made"
msgstr ""
-#: ../bin/cbezier.c:892
+#: ../bin/cbezier.c:943
msgid "Modify Bezier"
msgstr "Изменить Безье"
-#: ../bin/cbezier.c:910
+#: ../bin/cbezier.c:957
#, fuzzy
msgid "Modify Bezier Complete"
msgstr "Изменение Безье отменено"
-#: ../bin/cbezier.c:914
+#: ../bin/cbezier.c:961
msgid "Modify Bezier Cancelled"
msgstr "Изменение Безье отменено"
-#: ../bin/cbezier.c:1038 ../bin/cbezier.c:1129
+#: ../bin/cbezier.c:1089 ../bin/cbezier.c:1189
#, c-format
msgid "Place 1st endpoint of Bezier - snap to %s"
msgstr ""
-#: ../bin/cbezier.c:1056 ../bin/ccornu.c:2289 ../bin/ccurve.c:205
-#: ../bin/ccurve.c:443 ../bin/cstraigh.c:91
+#: ../bin/cbezier.c:1109 ../bin/ccornu.c:2444 ../bin/ccurve.c:205
+#: ../bin/cstraigh.c:92
msgid "Track is different gauge"
msgstr ""
-#: ../bin/cbezier.c:1084
+#: ../bin/cbezier.c:1131
msgid "Drag end of first control arm"
msgstr ""
-#: ../bin/cbezier.c:1091
+#: ../bin/cbezier.c:1139
msgid "Drag end of second control arm"
msgstr ""
-#: ../bin/cbezier.c:1133 ../bin/cbezier.c:1170
+#: ../bin/cbezier.c:1194 ../bin/cbezier.c:1236
#, c-format
msgid "Select other end of Bezier - snap to %s end"
msgstr ""
-#: ../bin/cbezier.c:1165
+#: ../bin/cbezier.c:1231
msgid "Control Arm 1 is too short, try again"
msgstr ""
-#: ../bin/cblock.c:111 ../bin/cblock.c:123 ../bin/cblock.c:168
-#: ../bin/ccontrol.c:171 ../bin/ccontrol.c:425 ../bin/compound.c:567
-#: ../bin/csensor.c:163 ../bin/csensor.c:389 ../bin/csignal.c:238
-#: ../bin/csignal.c:498 ../bin/csignal.c:509 ../bin/csignal.c:535
-#: ../bin/cswitchmotor.c:93 ../bin/cswitchmotor.c:112
-#: ../bin/cswitchmotor.c:224 ../bin/dcontmgm.c:91 ../bin/dlayer.c:483
+#: ../bin/cblock.c:110 ../bin/cblock.c:122 ../bin/cblock.c:169
+#: ../bin/ccontrol.c:168 ../bin/ccontrol.c:425 ../bin/compound.c:745
+#: ../bin/csensor.c:160 ../bin/csensor.c:389 ../bin/csignal.c:236
+#: ../bin/csignal.c:499 ../bin/csignal.c:510 ../bin/csignal.c:536
+#: ../bin/cswitchmotor.c:89 ../bin/cswitchmotor.c:108
+#: ../bin/cswitchmotor.c:228 ../bin/dcontmgm.c:79 ../bin/dlayer.c:543
msgid "Name"
msgstr "Ðазвание"
-#: ../bin/cblock.c:112 ../bin/cblock.c:124 ../bin/cblock.c:169
-#: ../bin/csensor.c:165 ../bin/csensor.c:395 ../bin/csignal.c:498
-#: ../bin/csignal.c:537
+#: ../bin/cblock.c:111 ../bin/cblock.c:123 ../bin/cblock.c:170
+#: ../bin/csensor.c:162 ../bin/csensor.c:395 ../bin/csignal.c:499
+#: ../bin/csignal.c:538
msgid "Script"
msgstr "Скрипт"
-#: ../bin/cblock.c:125
+#: ../bin/cblock.c:124
msgid "Segments"
msgstr "Сегменты"
-#: ../bin/cblock.c:170 ../bin/cdraw.c:524 ../bin/cdraw.c:1434
-#: ../bin/cdraw.c:1580 ../bin/cdraw.c:2497 ../bin/cdraw.c:2723
-#: ../bin/cdraw.c:2760 ../bin/ctodesgn.c:175 ../bin/ctodesgn.c:176
-#: ../bin/ctodesgn.c:177 ../bin/ctodesgn.c:178 ../bin/ctodesgn.c:190
-#: ../bin/ctodesgn.c:191 ../bin/ctodesgn.c:241 ../bin/ctodesgn.c:244
-#: ../bin/ctodesgn.c:264 ../bin/ctodesgn.c:269 ../bin/ctodesgn.c:301
-#: ../bin/ctodesgn.c:308 ../bin/ctodesgn.c:310 ../bin/ctodesgn.c:330
-#: ../bin/ctodesgn.c:335 ../bin/ctodesgn.c:367 ../bin/ctodesgn.c:374
-#: ../bin/ctodesgn.c:375 ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:399
-#: ../bin/ctodesgn.c:402 ../bin/ctodesgn.c:437 ../bin/ctodesgn.c:441
-#: ../bin/ctodesgn.c:448 ../bin/ctodesgn.c:449 ../bin/ctodesgn.c:450
-#: ../bin/ctodesgn.c:472 ../bin/ctodesgn.c:474 ../bin/ctodesgn.c:492
-#: ../bin/ctodesgn.c:494 ../bin/ctodesgn.c:513 ../bin/ctodesgn.c:515
-#: ../bin/ctodesgn.c:542 ../bin/ctodesgn.c:562 ../bin/ctodesgn.c:582
-#: ../bin/ctodesgn.c:602 ../bin/ctodesgn.c:640 ../bin/ctodesgn.c:659
-#: ../bin/ctodesgn.c:660 ../bin/ctrain.c:185 ../bin/tbezier.c:258
-#: ../bin/tcornu.c:307 ../bin/tcurve.c:372 ../bin/tstraigh.c:89
+#: ../bin/cblock.c:171 ../bin/cdraw.c:560 ../bin/cdraw.c:1573
+#: ../bin/cdraw.c:1720 ../bin/cdraw.c:2843 ../bin/cdraw.c:3070
+#: ../bin/cdraw.c:3109 ../bin/ctodesgn.c:177 ../bin/ctodesgn.c:178
+#: ../bin/ctodesgn.c:179 ../bin/ctodesgn.c:180 ../bin/ctodesgn.c:192
+#: ../bin/ctodesgn.c:193 ../bin/ctodesgn.c:242 ../bin/ctodesgn.c:245
+#: ../bin/ctodesgn.c:268 ../bin/ctodesgn.c:273 ../bin/ctodesgn.c:314
+#: ../bin/ctodesgn.c:321 ../bin/ctodesgn.c:323 ../bin/ctodesgn.c:348
+#: ../bin/ctodesgn.c:353 ../bin/ctodesgn.c:393 ../bin/ctodesgn.c:400
+#: ../bin/ctodesgn.c:401 ../bin/ctodesgn.c:426 ../bin/ctodesgn.c:429
+#: ../bin/ctodesgn.c:432 ../bin/ctodesgn.c:475 ../bin/ctodesgn.c:479
+#: ../bin/ctodesgn.c:486 ../bin/ctodesgn.c:487 ../bin/ctodesgn.c:488
+#: ../bin/ctodesgn.c:514 ../bin/ctodesgn.c:516 ../bin/ctodesgn.c:538
+#: ../bin/ctodesgn.c:540 ../bin/ctodesgn.c:563 ../bin/ctodesgn.c:565
+#: ../bin/ctodesgn.c:599 ../bin/ctodesgn.c:625 ../bin/ctodesgn.c:650
+#: ../bin/ctodesgn.c:674 ../bin/ctodesgn.c:720 ../bin/ctodesgn.c:743
+#: ../bin/ctodesgn.c:744 ../bin/ctrain.c:182 ../bin/tbezier.c:296
+#: ../bin/tcornu.c:332 ../bin/tcurve.c:404 ../bin/tstraigh.c:91
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:186
msgid "Length"
msgstr "Длина"
-#: ../bin/cblock.c:171 ../bin/cdraw.c:516 ../bin/compound.c:542
-#: ../bin/tbezier.c:245 ../bin/tcornu.c:294 ../bin/tcurve.c:364
-#: ../bin/tease.c:519 ../bin/tstraigh.c:85
+#: ../bin/cblock.c:172 ../bin/cdraw.c:551 ../bin/compound.c:720
+#: ../bin/tbezier.c:283 ../bin/tcornu.c:319 ../bin/tcurve.c:396
+#: ../bin/tease.c:524 ../bin/tstraigh.c:87
msgid "End Pt 1: X,Y"
msgstr "Конец 1: X,Y"
-#: ../bin/cblock.c:172 ../bin/cdraw.c:517 ../bin/compound.c:547
-#: ../bin/tbezier.c:252 ../bin/tcornu.c:299 ../bin/tcurve.c:366
-#: ../bin/tease.c:521 ../bin/tstraigh.c:87
+#: ../bin/cblock.c:173 ../bin/cdraw.c:552 ../bin/compound.c:725
+#: ../bin/tbezier.c:290 ../bin/tcornu.c:324 ../bin/tcurve.c:398
+#: ../bin/tease.c:526 ../bin/tstraigh.c:89
msgid "End Pt 2: X,Y"
msgstr "Конец 2: X,Y"
-#: ../bin/cblock.c:195 ../bin/cblock.c:207 ../bin/cblock.c:575
-#: ../bin/cblock.c:596 ../bin/cblock.c:604 ../bin/cblock.c:674
-#: ../bin/cblock.c:795 ../bin/cblock.c:807 ../bin/cblock.c:845
-#: ../bin/ccontrol.c:205 ../bin/ccontrol.c:218 ../bin/ccontrol.c:230
-#: ../bin/ccontrol.c:486 ../bin/cdraw.c:131 ../bin/cdraw.c:2556
-#: ../bin/cgroup.c:1075 ../bin/cgroup.c:1146 ../bin/cgroup.c:1185
-#: ../bin/cgroup.c:1235 ../bin/cgroup.c:1262 ../bin/cgroup.c:1350
-#: ../bin/cgroup.c:1729 ../bin/cnote.c:69 ../bin/compound.c:603
-#: ../bin/compound.c:618 ../bin/compound.c:651 ../bin/cprint.c:512
-#: ../bin/cprint.c:716 ../bin/cprint.c:723 ../bin/cprint.c:1247
-#: ../bin/cpull.c:511 ../bin/cpull.c:526 ../bin/cpull.c:528 ../bin/cpull.c:530
-#: ../bin/cpull.c:691 ../bin/cselect.c:1086 ../bin/cselect.c:1195
-#: ../bin/cselect.c:2051 ../bin/csensor.c:194 ../bin/csensor.c:206
-#: ../bin/csensor.c:444 ../bin/csignal.c:267 ../bin/csignal.c:666
-#: ../bin/csignal.c:734 ../bin/csnap.c:576 ../bin/csnap.c:705
-#: ../bin/cstruct.c:937 ../bin/cstruct.c:946 ../bin/cstruct.c:1071
-#: ../bin/cswitchmotor.c:250 ../bin/cswitchmotor.c:262
-#: ../bin/cswitchmotor.c:274 ../bin/cswitchmotor.c:286
-#: ../bin/cswitchmotor.c:544 ../bin/cswitchmotor.c:580
-#: ../bin/cswitchmotor.c:714 ../bin/cswitchmotor.c:745 ../bin/ctext.c:174
-#: ../bin/ctodesgn.c:209 ../bin/ctodesgn.c:1204 ../bin/ctodesgn.c:1341
-#: ../bin/ctodesgn.c:1939 ../bin/ctodesgn.c:2054 ../bin/ctodesgn.c:2353
-#: ../bin/ctodesgn.c:2635 ../bin/ctrain.c:205 ../bin/cturnout.c:2936
-#: ../bin/cturnout.c:3074 ../bin/cundo.c:161 ../bin/cundo.c:166
-#: ../bin/dbitmap.c:68 ../bin/dbitmap.c:125 ../bin/dbitmap.c:203
-#: ../bin/dbitmap.c:238 ../bin/dcar.c:3823 ../bin/dcar.c:4018
-#: ../bin/dcar.c:4022 ../bin/dcar.c:4026 ../bin/dcar.c:4031 ../bin/dcar.c:4335
-#: ../bin/dcar.c:4443 ../bin/dcar.c:4825 ../bin/dcmpnd.c:399
-#: ../bin/dcmpnd.c:410 ../bin/dcmpnd.c:542 ../bin/dcustmgm.c:221
-#: ../bin/dcustmgm.c:227 ../bin/dcustmgm.c:236 ../bin/dcustmgm.c:261
-#: ../bin/dease.c:242 ../bin/dlayer.c:240 ../bin/dlayer.c:262
-#: ../bin/dlayer.c:879 ../bin/dlayer.c:885 ../bin/dlayer.c:891
-#: ../bin/doption.c:199 ../bin/doption.c:275 ../bin/doption.c:476
-#: ../bin/doption.c:479 ../bin/doption.c:492 ../bin/doption.c:558
-#: ../bin/dprmfile.c:434 ../bin/draw.c:2640 ../bin/fileio.c:198
-#: ../bin/fileio.c:608 ../bin/fileio.c:743 ../bin/fileio.c:745
-#: ../bin/fileio.c:750 ../bin/fileio.c:813 ../bin/fileio.c:1046
-#: ../bin/layout.c:380 ../bin/layout.c:570 ../bin/macro.c:1158
-#: ../bin/macro.c:1162 ../bin/macro.c:1220 ../bin/macro.c:1289
-#: ../bin/macro.c:1529 ../bin/macro.c:1547 ../bin/misc.c:438 ../bin/misc.c:524
-#: ../bin/misc.c:1849 ../bin/misc.c:1970 ../bin/misc.c:1978 ../bin/misc.c:2056
-#: ../bin/misc.c:2849 ../bin/misc.c:2858 ../bin/misc.c:2878 ../bin/misc.c:2884
-#: ../bin/misc2.c:455 ../bin/param.c:738 ../bin/param.c:1848
-#: ../bin/param.c:1971 ../bin/param.c:1974 ../bin/param.c:2097
-#: ../bin/param.c:2103 ../bin/paramfile.c:321 ../bin/paramfile.c:323
-#: ../bin/paramfile.c:328 ../bin/paramfile.c:352 ../bin/paramfile.c:378
-#: ../bin/paramfile.c:384 ../bin/paramfilelist.c:94 ../bin/paramfilelist.c:114
-#: ../bin/paramfilelist.c:128 ../bin/paramfilelist.c:192 ../bin/smalldlg.c:90
-#: ../bin/smalldlg.c:222 ../bin/tease.c:1014 ../bin/track.c:1654
-#: ../wlib/gtklib/wpref.c:122 ../../../../build/work/app/bin/bllnhlp.c:591
+#: ../bin/cblock.c:198 ../bin/cblock.c:210 ../bin/cblock.c:592
+#: ../bin/cblock.c:613 ../bin/cblock.c:621 ../bin/cblock.c:693
+#: ../bin/cblock.c:814 ../bin/cblock.c:826 ../bin/cblock.c:864
+#: ../bin/ccontrol.c:203 ../bin/ccontrol.c:216 ../bin/ccontrol.c:228
+#: ../bin/ccontrol.c:489 ../bin/cdraw.c:125 ../bin/cdraw.c:2903
+#: ../bin/cgroup.c:1156 ../bin/cgroup.c:1260 ../bin/cgroup.c:1267
+#: ../bin/cgroup.c:1320 ../bin/cgroup.c:1343 ../bin/cgroup.c:1437
+#: ../bin/cgroup.c:1642 ../bin/cgroup.c:1867 ../bin/cnote.c:67
+#: ../bin/compound.c:785 ../bin/compound.c:801 ../bin/compound.c:835
+#: ../bin/cprint.c:746 ../bin/cprint.c:1312 ../bin/cprint.c:1445
+#: ../bin/cpull.c:531 ../bin/cpull.c:546 ../bin/cpull.c:548 ../bin/cpull.c:550
+#: ../bin/cpull.c:721 ../bin/cselect.c:2029 ../bin/csensor.c:192
+#: ../bin/csensor.c:204 ../bin/csensor.c:446 ../bin/csnap.c:591
+#: ../bin/csnap.c:733 ../bin/csignal.c:266 ../bin/csignal.c:678
+#: ../bin/csignal.c:748 ../bin/cstruct.c:1041 ../bin/cstruct.c:1180
+#: ../bin/cswitchmotor.c:257 ../bin/cswitchmotor.c:269
+#: ../bin/cswitchmotor.c:281 ../bin/cswitchmotor.c:293
+#: ../bin/cswitchmotor.c:570 ../bin/cswitchmotor.c:608
+#: ../bin/cswitchmotor.c:746 ../bin/cswitchmotor.c:777 ../bin/ctext.c:172
+#: ../bin/ctodesgn.c:211 ../bin/ctodesgn.c:1309 ../bin/ctodesgn.c:2138
+#: ../bin/ctodesgn.c:2255 ../bin/ctodesgn.c:2578 ../bin/ctrain.c:205
+#: ../bin/cturnout.c:2973 ../bin/cturnout.c:3123 ../bin/cundo.c:260
+#: ../bin/cundo.c:266 ../bin/dbitmap.c:157 ../bin/dbitmap.c:232
+#: ../bin/dbitmap.c:473 ../bin/dcar.c:4125 ../bin/dcar.c:4297
+#: ../bin/dcar.c:4302 ../bin/dcar.c:4306 ../bin/dcar.c:4312 ../bin/dcar.c:4662
+#: ../bin/dcar.c:4778 ../bin/dcar.c:5215 ../bin/dcmpnd.c:419
+#: ../bin/dcmpnd.c:435 ../bin/dcmpnd.c:582 ../bin/dcustmgm.c:219
+#: ../bin/dcustmgm.c:226 ../bin/dcustmgm.c:236 ../bin/dcustmgm.c:261
+#: ../bin/dease.c:251 ../bin/dlayer.c:336 ../bin/dlayer.c:373
+#: ../bin/dlayer.c:842 ../bin/dlayer.c:1392 ../bin/dlayer.c:1398
+#: ../bin/dlayer.c:1404 ../bin/doption.c:202 ../bin/doption.c:287
+#: ../bin/doption.c:497 ../bin/doption.c:500 ../bin/doption.c:504
+#: ../bin/doption.c:516 ../bin/doption.c:591 ../bin/dprmfile.c:431
+#: ../bin/draw.c:2986 ../bin/fileio.c:180 ../bin/fileio.c:595
+#: ../bin/fileio.c:727 ../bin/fileio.c:730 ../bin/fileio.c:736
+#: ../bin/fileio.c:806 ../bin/fileio.c:1044 ../bin/layout.c:553
+#: ../bin/layout.c:819 ../bin/layout.c:994 ../bin/macro.c:1133
+#: ../bin/macro.c:1138 ../bin/macro.c:1216 ../bin/macro.c:1294
+#: ../bin/macro.c:1542 ../bin/macro.c:1563 ../bin/menu.c:272 ../bin/menu.c:283
+#: ../bin/menu.c:294 ../bin/menu.c:459 ../bin/menu.c:497 ../bin/menu.c:607
+#: ../bin/misc.c:491 ../bin/misc.c:1054 ../bin/misc.c:1063 ../bin/misc.c:1083
+#: ../bin/misc.c:1089 ../bin/misc.c:1274 ../bin/param.c:787
+#: ../bin/param.c:2132 ../bin/param.c:2274 ../bin/param.c:2278
+#: ../bin/param.c:2410 ../bin/param.c:2418 ../bin/paramfile.c:336
+#: ../bin/paramfile.c:339 ../bin/paramfile.c:345 ../bin/paramfile.c:371
+#: ../bin/paramfile.c:400 ../bin/paramfile.c:406 ../bin/paramfilelist.c:131
+#: ../bin/paramfilelist.c:183 ../bin/paramfilelist.c:236 ../bin/scale.c:305
+#: ../bin/scale.c:948 ../bin/scale.c:1084 ../bin/tease.c:1167
+#: ../bin/track.c:1801 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:677
msgid "Ok"
msgstr "ОК"
-#: ../bin/cblock.c:212
+#: ../bin/cblock.c:215
msgid "Change block"
msgstr "Изменить блок"
-#: ../bin/cblock.c:264 ../bin/cswitchmotor.c:342
+#: ../bin/cblock.c:269 ../bin/cswitchmotor.c:352
#, fuzzy, c-format
msgid "(%d): Layer=%u %s"
msgstr "(%d): Слой=%d %s"
-#: ../bin/cblock.c:288 ../bin/cblock.c:1000
+#: ../bin/cblock.c:293 ../bin/cblock.c:1027
msgid "Block"
msgstr "Блок"
-#: ../bin/cblock.c:491
+#: ../bin/cblock.c:504
#, c-format
msgid "resolveBlockTrack: T%d[%d]: T%d doesn't exist"
msgstr ""
-#: ../bin/cblock.c:575 ../bin/cblock.c:807
+#: ../bin/cblock.c:592 ../bin/cblock.c:826
msgid "Block must have a name!"
msgstr "Блок должен быть назван!"
-#: ../bin/cblock.c:604
-msgid "Block is discontigious!"
+#: ../bin/cblock.c:621
+msgid "Block is discontiguous!"
msgstr ""
-#: ../bin/cblock.c:609
+#: ../bin/cblock.c:626
msgid "Create block"
msgstr "Создать блок"
-#: ../bin/cblock.c:656
+#: ../bin/cblock.c:674
msgid "Non track object skipped!"
msgstr ""
-#: ../bin/cblock.c:660
+#: ../bin/cblock.c:678
msgid "Selected track is already in a block, skipped!"
msgstr ""
-#: ../bin/cblock.c:674
+#: ../bin/cblock.c:692
msgid "Create Block"
msgstr "Создать блок"
-#: ../bin/cblock.c:704 ../bin/cblock.c:736
+#: ../bin/cblock.c:722 ../bin/cblock.c:754
msgid "Select a track"
msgstr "Выберите трек"
-#: ../bin/cblock.c:713 ../bin/cblock.c:744
+#: ../bin/cblock.c:731 ../bin/cblock.c:762
msgid "Not a block!"
msgstr "Это не блок!"
-#: ../bin/cblock.c:749
+#: ../bin/cblock.c:767
#, c-format
msgid "Really delete block %s?"
msgstr "ДейÑтвительно удалить блок %s?"
-#: ../bin/cblock.c:749 ../bin/ccornu.c:2745 ../bin/ccornu.c:2958
-#: ../bin/cdraw.c:135 ../bin/cgroup.c:1081 ../bin/cpull.c:649
-#: ../bin/csignal.c:712 ../bin/cswitchmotor.c:670 ../bin/ctodesgn.c:2643
-#: ../bin/ctodesgn.c:3175 ../bin/ctrain.c:2509 ../bin/dbitmap.c:208
-#: ../bin/dcar.c:3969 ../bin/dcar.c:4048 ../bin/dcar.c:4132 ../bin/dcar.c:4151
-#: ../bin/dcar.c:4468 ../bin/dcar.c:4890 ../bin/dcontmgm.c:173
-#: ../bin/dcustmgm.c:168 ../bin/misc.c:1278 ../bin/misc.c:1285
-#: ../bin/misc.c:1356 ../bin/track.c:1656 ../bin/track.c:1753
-#: ../bin/track.c:1767
+#: ../bin/cblock.c:767 ../bin/ccornu.c:2952 ../bin/ccornu.c:3176
+#: ../bin/cdraw.c:130 ../bin/cgroup.c:1162 ../bin/command.c:390
+#: ../bin/command.c:397 ../bin/command.c:458 ../bin/cpull.c:673
+#: ../bin/csignal.c:725 ../bin/cswitchmotor.c:700 ../bin/ctodesgn.c:2891
+#: ../bin/ctodesgn.c:3505 ../bin/ctrain.c:2606 ../bin/dcar.c:4245
+#: ../bin/dcar.c:4343 ../bin/dcar.c:4433 ../bin/dcar.c:4459 ../bin/dcar.c:4843
+#: ../bin/dcar.c:5284 ../bin/dcustmgm.c:162 ../bin/dcontmgm.c:167
+#: ../bin/track.c:1803 ../bin/track.c:1905 ../bin/track.c:1923
msgid "Yes"
msgstr "Да"
-#: ../bin/cblock.c:749 ../bin/ccornu.c:2745 ../bin/ccornu.c:2958
-#: ../bin/cdraw.c:135 ../bin/cgroup.c:1081 ../bin/cpull.c:649
-#: ../bin/csignal.c:712 ../bin/cswitchmotor.c:670 ../bin/ctodesgn.c:2643
-#: ../bin/ctodesgn.c:3175 ../bin/ctrain.c:2509 ../bin/dcar.c:3969
-#: ../bin/dcar.c:4048 ../bin/dcar.c:4132 ../bin/dcar.c:4151 ../bin/dcar.c:4468
-#: ../bin/dcar.c:4890 ../bin/dcontmgm.c:173 ../bin/dcustmgm.c:168
-#: ../bin/misc.c:1278 ../bin/misc.c:1285 ../bin/misc.c:1356
-#: ../bin/track.c:1656 ../bin/track.c:1753 ../bin/track.c:1767
+#: ../bin/cblock.c:767 ../bin/ccornu.c:2953 ../bin/ccornu.c:3177
+#: ../bin/cdraw.c:130 ../bin/cgroup.c:1162 ../bin/command.c:390
+#: ../bin/command.c:397 ../bin/command.c:458 ../bin/cpull.c:674
+#: ../bin/csignal.c:725 ../bin/cswitchmotor.c:700 ../bin/ctodesgn.c:2891
+#: ../bin/ctodesgn.c:3505 ../bin/ctrain.c:2606 ../bin/dcar.c:4245
+#: ../bin/dcar.c:4343 ../bin/dcar.c:4433 ../bin/dcar.c:4459 ../bin/dcar.c:4843
+#: ../bin/dcar.c:5284 ../bin/dcustmgm.c:162 ../bin/dcontmgm.c:168
+#: ../bin/track.c:1803 ../bin/track.c:1905 ../bin/track.c:1923
msgid "No"
msgstr "Ðет"
-#: ../bin/cblock.c:750
+#: ../bin/cblock.c:769
msgid "Delete Block"
msgstr "Удалить блок"
-#: ../bin/cblock.c:795
+#: ../bin/cblock.c:814
#, c-format
msgid "Deleting block %s"
msgstr "Удаление блока %s"
-#: ../bin/cblock.c:811
+#: ../bin/cblock.c:830
msgid "Modify Block"
msgstr "Изменить блок"
-#: ../bin/cblock.c:844
+#: ../bin/cblock.c:863
msgid "Edit block"
msgstr "Редактировать блок"
-#: ../bin/cblock.c:850
+#: ../bin/cblock.c:869
#, c-format
msgid "Edit block %d"
msgstr "Редактировать блок %d"
-#: ../bin/ccontrol.c:172 ../bin/csensor.c:164 ../bin/csignal.c:239
-#: ../bin/ctrain.c:183
-msgid "Position"
-msgstr "ПозициÑ"
-
-#: ../bin/ccontrol.c:173 ../bin/ccontrol.c:431
-msgid "On Script"
-msgstr "Включить Ñкрипт"
-
-#: ../bin/ccontrol.c:174 ../bin/ccontrol.c:433
-msgid "Off Script"
-msgstr "Отключить Ñкрипт"
-
-#: ../bin/ccontrol.c:240
-msgid "Change Control"
-msgstr "Изменение управлениÑ"
-
-#: ../bin/ccontrol.c:282 ../bin/csensor.c:252
-#, fuzzy, c-format
-msgid "(%d [%s]): Layer=%u, at %0.3f,%0.3f"
-msgstr "(%d [%s]): Слой=%d, по %0.3f,%0.3f"
-
-#: ../bin/ccontrol.c:295 ../bin/ccontrol.c:640
-msgid "Control"
-msgstr "Управление"
-
-#: ../bin/ccontrol.c:427
-msgid "Origin X"
-msgstr "Координата X"
-
-#: ../bin/ccontrol.c:429 ../bin/csensor.c:393 ../bin/csignal.c:513
-msgid "Origin Y"
-msgstr "Координата Y"
-
-#: ../bin/ccontrol.c:445
-msgid "Create Control"
-msgstr "Создать управление"
-
-#: ../bin/ccontrol.c:448
-msgid "Modify Control"
-msgstr ""
-
-#: ../bin/ccontrol.c:485
-msgid "Edit control"
-msgstr ""
-
-#: ../bin/ccontrol.c:526
-msgid "Place control"
-msgstr ""
-
-#: ../bin/ccornu.c:200 ../bin/ccornu.c:203 ../bin/ccornu.c:206
-#: ../bin/ccornu.c:260
+#: ../bin/ccornu.c:193 ../bin/ccornu.c:196 ../bin/ccornu.c:199
+#: ../bin/ccornu.c:253
#, fuzzy, c-format
msgid "%s FlexTrack"
msgstr "Изогнутый трек"
-#: ../bin/ccornu.c:254
+#: ../bin/ccornu.c:247
msgid " FLEX "
msgstr ""
-#: ../bin/ccornu.c:903 ../bin/cjoin.c:935 ../bin/cmisc.c:59
+#: ../bin/ccornu.c:964 ../bin/cjoin.c:1063 ../bin/cmisc.c:55
msgid "First"
msgstr "Ðачало"
-#: ../bin/ccornu.c:910 ../bin/cjoin.c:943
+#: ../bin/ccornu.c:971 ../bin/cjoin.c:1071
msgid "Second"
msgstr "Конец"
-#: ../bin/ccornu.c:981 ../bin/ccornu.c:2004 ../bin/ccornu.c:2034
-#: ../bin/tcornu.c:830 ../bin/tcornu.c:1037 ../bin/tcornu.c:1363
+#: ../bin/ccornu.c:1047 ../bin/ccornu.c:2141 ../bin/ccornu.c:2172
+#: ../bin/tcornu.c:877 ../bin/tcornu.c:1387
#, c-format
msgid ""
"Cornu Create Failed for p1[%0.3f,%0.3f] p2[%0.3f,%0.3f], c1[%0.3f,%0.3f] c2[%"
"0.3f,%0.3f], a1=%0.3f a2=%0.3f, r1=%s r2=%s"
msgstr ""
-#: ../bin/ccornu.c:1020 ../bin/ccornu.c:1639 ../bin/ccornu.c:1658
-#: ../bin/tbezier.c:246 ../bin/tbezier.c:253 ../bin/tcornu.c:295
-#: ../bin/tcornu.c:300
+#: ../bin/ccornu.c:1084 ../bin/ccornu.c:1757 ../bin/ccornu.c:1778
+#: ../bin/tbezier.c:284 ../bin/tbezier.c:291 ../bin/tcornu.c:320
+#: ../bin/tcornu.c:325 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:178
msgid "End Angle"
msgstr "Конечный угол"
-#: ../bin/ccornu.c:1023 ../bin/ccornu.c:1638 ../bin/ccornu.c:1657
+#: ../bin/ccornu.c:1087 ../bin/ccornu.c:1756 ../bin/ccornu.c:1777
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:179
#, fuzzy
msgid "End Radius"
msgstr "РадиуÑ"
-#: ../bin/ccornu.c:1076
+#: ../bin/ccornu.c:1142
#, fuzzy
msgid "Select Point, or Add Point"
msgstr "Выбрать конечную точку"
-#: ../bin/ccornu.c:1247
+#: ../bin/ccornu.c:1330
msgid "Not close enough to track or point, reselect"
msgstr ""
-#: ../bin/ccornu.c:1253
+#: ../bin/ccornu.c:1336
#, fuzzy
msgid "Drag out end of Cornu"
msgstr "Тащите к другому концу хорды"
-#: ../bin/ccornu.c:1255
+#: ../bin/ccornu.c:1338
#, fuzzy
msgid "Drag along end of track"
msgstr "Тащите по каÑательной к первому концу"
-#: ../bin/ccornu.c:1257
+#: ../bin/ccornu.c:1340
#, fuzzy
msgid "Drag to move"
msgstr "Тащите, чтобы повернуть"
-#: ../bin/ccornu.c:1260
+#: ../bin/ccornu.c:1344
msgid "Drag point to new location, Delete to remove"
msgstr ""
-#: ../bin/ccornu.c:1264
+#: ../bin/ccornu.c:1348
#, fuzzy
msgid "Drag to change end radius"
msgstr "Тащите, чтобы уÑтановить радиуÑ"
-#: ../bin/ccornu.c:1267
+#: ../bin/ccornu.c:1351
#, fuzzy
msgid "Drag to change end angle"
msgstr "ТÑни, чтобы изменить выÑоту"
-#: ../bin/ccornu.c:1282
+#: ../bin/ccornu.c:1368
msgid "Pick any circle to adjust or add - Enter to accept, Esc to cancel"
msgstr ""
-#: ../bin/ccornu.c:1294
+#: ../bin/ccornu.c:1380
msgid "Track can't be split"
msgstr ""
-#: ../bin/ccornu.c:1356
+#: ../bin/ccornu.c:1450
msgid "Too close to other end of selected Track"
msgstr ""
-#: ../bin/ccornu.c:1364
+#: ../bin/ccornu.c:1460
msgid "Can't move end inside a turnout"
msgstr ""
-#: ../bin/ccornu.c:1506
+#: ../bin/ccornu.c:1609
msgid "Can't extend connected Bezier or Cornu"
msgstr ""
-#: ../bin/ccornu.c:1578
+#: ../bin/ccornu.c:1690
#, c-format
msgid ""
"Cornu : Min Radius=%s MaxRateofCurveChange/Scale=%s Length=%s Winding Arc=%s"
msgstr ""
-#: ../bin/ccornu.c:1600 ../bin/ccornu.c:2270
+#: ../bin/ccornu.c:1714 ../bin/ccornu.c:2423
msgid "Helix Already Connected"
msgstr ""
-#: ../bin/ccornu.c:1614
+#: ../bin/ccornu.c:1730
msgid "No Valid end point on that track"
msgstr ""
-#: ../bin/ccornu.c:1619
+#: ../bin/ccornu.c:1735
msgid "Track is different scale"
msgstr ""
-#: ../bin/ccornu.c:1672
+#: ../bin/ccornu.c:1794
msgid ""
"Pick on point to adjust it along track - Delete to remove, Enter to confirm, "
"ESC to abort"
msgstr ""
-#: ../bin/ccornu.c:1702
+#: ../bin/ccornu.c:1825
msgid "Cornu has too complex shape - adjust end pts"
msgstr ""
-#: ../bin/ccornu.c:1713
+#: ../bin/ccornu.c:1838
#, c-format
msgid "Cornu point %d too close to other end of connect track - reposition it"
msgstr ""
-#: ../bin/ccornu.c:1718
+#: ../bin/ccornu.c:1844
msgid "Create Cornu"
msgstr ""
-#: ../bin/ccornu.c:1907
+#: ../bin/ccornu.c:2037
msgid "Now Select or Add (+Shift) a Point"
msgstr ""
-#: ../bin/ccornu.c:1966
+#: ../bin/ccornu.c:2100
#, c-format
msgid "Cornu end %d too close to other end of connect track - reposition it"
msgstr ""
-#: ../bin/ccornu.c:1971
+#: ../bin/ccornu.c:2105 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:177
msgid "Modify Cornu"
msgstr ""
-#: ../bin/ccornu.c:1986
+#: ../bin/ccornu.c:2122
#, c-format
msgid "Cornu Extension Create Failed for end %d"
msgstr ""
-#: ../bin/ccornu.c:2078
+#: ../bin/ccornu.c:2219
#, c-format
msgid "Connected Track End Adjust for end %d failed"
msgstr ""
-#: ../bin/ccornu.c:2089
+#: ../bin/ccornu.c:2230
msgid "Modify Cornu Cancelled"
msgstr ""
-#: ../bin/ccornu.c:2246
+#: ../bin/ccornu.c:2396
#, fuzzy
msgid "Left click - Start Cornu track"
msgstr "Левый клик - Ñоединить Ñ Ñ‚Ñ€ÐµÐºÐ¾Ð¼"
-#: ../bin/ccornu.c:2248
+#: ../bin/ccornu.c:2398
#, fuzzy
msgid "Left click - Place Flextrack"
msgstr "Левый клик - Ñоединить Ñ Ñ‚Ñ€ÐµÐºÐ¾Ð¼"
-#: ../bin/ccornu.c:2251
+#: ../bin/ccornu.c:2401
msgid "Left click - join with Cornu track"
msgstr ""
-#: ../bin/ccornu.c:2253
+#: ../bin/ccornu.c:2404
msgid "Left click - join with Cornu track, Shift Left click - move to join"
msgstr ""
-#: ../bin/ccornu.c:2284
+#: ../bin/ccornu.c:2439
msgid "No valid open endpoint on that track"
msgstr ""
-#: ../bin/ccornu.c:2312 ../bin/ccornu.c:2324
+#: ../bin/ccornu.c:2469 ../bin/ccornu.c:2482
#, fuzzy
msgid "Drag arm in the direction of track"
msgstr "Тащите из конечной точки по направлению к кривой"
-#: ../bin/ccornu.c:2328
+#: ../bin/ccornu.c:2487
msgid "No Unconnected Track End there"
msgstr ""
-#: ../bin/ccornu.c:2339 ../bin/ccornu.c:2363
+#: ../bin/ccornu.c:2498 ../bin/ccornu.c:2523
msgid "No Valid Track End there"
msgstr ""
-#: ../bin/ccornu.c:2351
+#: ../bin/ccornu.c:2511
msgid "Locked - Move 1st end point of Cornu track along track 1"
msgstr ""
-#: ../bin/ccornu.c:2375
+#: ../bin/ccornu.c:2535
msgid "Locked - Move 2nd end point of Cornu track along track 2"
msgstr ""
-#: ../bin/ccornu.c:2449
+#: ../bin/ccornu.c:2623
msgid "Track can't be split - so locked to endpoint"
msgstr ""
-#: ../bin/ccornu.c:2454
+#: ../bin/ccornu.c:2628
msgid "Point not on track 1"
msgstr ""
-#: ../bin/ccornu.c:2492
+#: ../bin/ccornu.c:2670
#, fuzzy
msgid "Pick other end of Cornu"
msgstr "Тащите к другому концу хорды"
-#: ../bin/ccornu.c:2494
+#: ../bin/ccornu.c:2673
msgid ""
"Select flextrack ends or anchors and drag, Enter to approve, Esc to Cancel"
msgstr ""
-#: ../bin/ccornu.c:2498
+#: ../bin/ccornu.c:2680
msgid "Put other end of Cornu on a track with an unconnected end point"
msgstr ""
-#: ../bin/ccornu.c:2733 ../bin/ccornu.c:2947
+#: ../bin/ccornu.c:2941 ../bin/ccornu.c:3166
#, fuzzy
msgid "Not on a Track"
msgstr "Ðе на треке"
-#: ../bin/ccornu.c:2741
+#: ../bin/ccornu.c:2949
#, fuzzy
msgid "Select a Track To Convert"
msgstr "Выберите трек"
-#: ../bin/ccornu.c:2745
+#: ../bin/ccornu.c:2952
msgid "Convert all Selected Tracks to Cornu Tracks?"
msgstr ""
-#: ../bin/ccornu.c:2750
+#: ../bin/ccornu.c:2958
msgid "Convert Cornu"
msgstr ""
-#: ../bin/ccornu.c:2902
+#: ../bin/ccornu.c:3118
#, c-format
msgid "Tracks Counts: %d converted %d unconvertible %d created %d deleted"
msgstr ""
-#: ../bin/ccornu.c:2902 ../bin/ccornu.c:3019
+#: ../bin/ccornu.c:3118 ../bin/ccornu.c:3241 ../bin/cturnout.c:352
+#: ../bin/paramfilelist.c:113
msgid "OK"
msgstr ""
-#: ../bin/ccornu.c:2954
+#: ../bin/ccornu.c:3173
msgid "Select a Cornu or Bezier Track To Convert to Fixed"
msgstr ""
-#: ../bin/ccornu.c:2958
+#: ../bin/ccornu.c:3176
msgid "Convert all Selected Tracks to Fixed Tracks?"
msgstr ""
-#: ../bin/ccornu.c:2968
+#: ../bin/ccornu.c:3187
msgid "Convert Bezier and Cornu"
msgstr ""
-#: ../bin/ccornu.c:3019
+#: ../bin/ccornu.c:3240
#, c-format
msgid "Tracks Counts: %d converted %d unconvertible %d deleted"
msgstr ""
-#: ../bin/ccornu.c:3047
+#: ../bin/ccornu.c:3269
#, fuzzy
msgid "Convert"
msgstr "Содержание"
-#: ../bin/ccornu.c:3048
+#: ../bin/ccornu.c:3270
msgid "Convert To Cornu"
msgstr ""
-#: ../bin/ccornu.c:3049
+#: ../bin/ccornu.c:3273
#, fuzzy
msgid "Convert From Cornu"
msgstr "По хорде"
-#: ../bin/ccurve.c:169
+#: ../bin/ccurve.c:165
#, fuzzy
msgid "Drag from endpoint in direction of curve - lock to track open endpoint"
msgstr "Тащите из конечной точки по направлению к кривой"
-#: ../bin/ccurve.c:171
+#: ../bin/ccurve.c:167
#, fuzzy
msgid "Drag from endpoint in direction of curve"
msgstr "Тащите из конечной точки по направлению к кривой"
-#: ../bin/ccurve.c:175
+#: ../bin/ccurve.c:172
msgid "Drag from endpoint to center - lock to track open endpoint"
msgstr ""
-#: ../bin/ccurve.c:177
+#: ../bin/ccurve.c:174
#, fuzzy
msgid "Drag from endpoint to center"
msgstr "Тащите из конечной точки к центру"
-#: ../bin/ccurve.c:180
+#: ../bin/ccurve.c:178
#, fuzzy
msgid "Drag from center to endpoint"
msgstr "Тащите из центра к конечной точке"
-#: ../bin/ccurve.c:183
+#: ../bin/ccurve.c:181
msgid "Drag from one to other end of chord"
msgstr ""
-#: ../bin/ccurve.c:241
+#: ../bin/ccurve.c:243
#, fuzzy
msgid "End locked: Drag out curve start"
msgstr "Тащите по каÑательной к первому концу"
-#: ../bin/ccurve.c:242 ../bin/ccurve.c:252 ../bin/ccurve.c:270
+#: ../bin/ccurve.c:244 ../bin/ccurve.c:254 ../bin/ccurve.c:272
msgid "End Position locked: Drag out curve start with Shift"
msgstr ""
-#: ../bin/ccurve.c:243
+#: ../bin/ccurve.c:245
msgid "Drag along curve start"
msgstr "Тащите по каÑательной к первому концу"
-#: ../bin/ccurve.c:251
+#: ../bin/ccurve.c:253
msgid "End locked: Drag out curve center"
msgstr ""
-#: ../bin/ccurve.c:253
+#: ../bin/ccurve.c:255
#, fuzzy
msgid "Drag out curve center"
msgstr "Тащите по каÑательной к первому концу"
-#: ../bin/ccurve.c:260
+#: ../bin/ccurve.c:262
#, fuzzy
msgid "Drag out from center to endpoint"
msgstr "Тащите из центра к конечной точке"
-#: ../bin/ccurve.c:269
+#: ../bin/ccurve.c:271
#, fuzzy
msgid "End locked: Drag to other end of chord"
msgstr "Тащите к другому концу хорды"
-#: ../bin/ccurve.c:272
+#: ../bin/ccurve.c:274
msgid "Drag to other end of chord"
msgstr "Тащите к другому концу хорды"
-#: ../bin/ccurve.c:327
+#: ../bin/ccurve.c:332
#, c-format
msgid "Start Locked: Drag out curve start - Angle=%0.3f"
msgstr ""
-#: ../bin/ccurve.c:328
+#: ../bin/ccurve.c:333
#, c-format
msgid "Drag out curve start - Angle=%0.3f"
msgstr "Тащите до начала ÑÐºÑ€ÑƒÐ³Ð»ÐµÐ½Ð¸Ñ - Угол=%0.3f"
-#: ../bin/ccurve.c:334
+#: ../bin/ccurve.c:340
#, fuzzy, c-format
msgid "Tangent locked: Drag out center - Radius=%s Angle=%0.3f"
msgstr "Тащите к центру - РадиуÑ=%s Угол=%0.3f"
-#: ../bin/ccurve.c:335
+#: ../bin/ccurve.c:341
#, c-format
msgid "Drag out center - Radius=%s Angle=%0.3f"
msgstr "Тащите к центру - РадиуÑ=%s Угол=%0.3f"
-#: ../bin/ccurve.c:341
+#: ../bin/ccurve.c:348
#, fuzzy, c-format
msgid "Drag to Edge: Radius=%s Angle=%0.3f"
msgstr "Тащите к центру - РадиуÑ=%s Угол=%0.3f"
-#: ../bin/ccurve.c:347
+#: ../bin/ccurve.c:356
#, fuzzy, c-format
msgid "Start locked: Drag out chord length=%s angle=%0.3f"
msgstr "Длина прÑмого трека=%s Угол=%0.3f"
-#: ../bin/ccurve.c:348
+#: ../bin/ccurve.c:357
#, fuzzy, c-format
msgid "Drag out chord length=%s angle=%0.3f"
msgstr "Длина прÑмого трека=%s Угол=%0.3f"
-#: ../bin/ccurve.c:403 ../bin/ccurve.c:561 ../bin/drawgeom.c:772
-msgid "Drag on Red arrows to adjust curve"
-msgstr "Тащите за краÑные Ñтрелки Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÑ€Ð¸Ð²Ð¾Ð¹"
+#: ../bin/ccurve.c:433 ../bin/ccurve.c:615 ../bin/cjoin.c:714
+#: ../bin/cjoin.c:1017
+#, fuzzy
+msgid "Desired Radius"
+msgstr "Ð Ð°Ð´Ð¸ÑƒÑ Ð¾ÐºÑ€ÑƒÐ¶Ð½Ð¾Ñти"
-#: ../bin/ccurve.c:501 ../bin/cjoin.c:210 ../bin/cmodify.c:575
-#: ../bin/cturntbl.c:580
+#: ../bin/ccurve.c:534 ../bin/cjoin.c:216 ../bin/cmodify.c:639
+#: ../bin/cturntbl.c:687
#, c-format
msgid "Straight Track: Length=%s Angle=%0.3f"
msgstr "ПрÑмой трек: Длина=%s Угол=%0.3f"
-#: ../bin/ccurve.c:508 ../bin/cmodify.c:580 ../bin/drawgeom.c:629
-#: ../wlib/gtklib/ixhelp.c:235
+#: ../bin/ccurve.c:542 ../bin/cmodify.c:644 ../bin/drawgeom.c:718
msgid "Back"
msgstr "Ðазад"
-#: ../bin/ccurve.c:527
+#: ../bin/ccurve.c:563
#, c-format
msgid "Curved Track: Radius=%s Angle=%0.3f Length=%s"
msgstr "Кривой трек: РадиуÑ=%s Угол=%0.3f Длина=%s"
-#: ../bin/ccurve.c:581 ../bin/cstraigh.c:162
+#: ../bin/ccurve.c:642 ../bin/cstraigh.c:173
msgid "Create Straight Track"
msgstr "Добавить прÑмой трек"
-#: ../bin/ccurve.c:593
+#: ../bin/ccurve.c:656
msgid "Create Curved Track"
msgstr "Добавить изогнутый трек"
-#: ../bin/ccurve.c:664
+#: ../bin/ccurve.c:726
msgid "Elevation Difference"
msgstr "Разница выÑот"
-#: ../bin/ccurve.c:665 ../bin/cdraw.c:523 ../bin/cdraw.c:1446
-#: ../bin/cdraw.c:1592 ../bin/cdraw.c:2504 ../bin/cdraw.c:2703
-#: ../bin/cdraw.c:2717 ../bin/compound.c:545 ../bin/compound.c:550
-#: ../bin/compound.c:555 ../bin/compound.c:560 ../bin/ctodesgn.c:185
-#: ../bin/ctodesgn.c:186 ../bin/ctodesgn.c:187 ../bin/ctodesgn.c:188
-#: ../bin/ctodesgn.c:304 ../bin/ctodesgn.c:307 ../bin/ctodesgn.c:309
-#: ../bin/ctodesgn.c:370 ../bin/ctodesgn.c:371 ../bin/ctodesgn.c:376
-#: ../bin/ctodesgn.c:440 ../bin/ctodesgn.c:444 ../bin/ctodesgn.c:445
-#: ../bin/ctodesgn.c:451 ../bin/ctodesgn.c:620 ../bin/tbezier.c:247
-#: ../bin/tbezier.c:254 ../bin/tcornu.c:301 ../bin/tcurve.c:369
+#: ../bin/ccurve.c:727 ../bin/cdraw.c:559 ../bin/cdraw.c:1585
+#: ../bin/cdraw.c:1732 ../bin/cdraw.c:2850 ../bin/cdraw.c:3050
+#: ../bin/cdraw.c:3064 ../bin/compound.c:723 ../bin/compound.c:728
+#: ../bin/compound.c:733 ../bin/compound.c:738 ../bin/ctodesgn.c:187
+#: ../bin/ctodesgn.c:188 ../bin/ctodesgn.c:189 ../bin/ctodesgn.c:190
+#: ../bin/ctodesgn.c:317 ../bin/ctodesgn.c:320 ../bin/ctodesgn.c:322
+#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:397 ../bin/ctodesgn.c:402
+#: ../bin/ctodesgn.c:478 ../bin/ctodesgn.c:482 ../bin/ctodesgn.c:483
+#: ../bin/ctodesgn.c:489 ../bin/ctodesgn.c:696 ../bin/tbezier.c:285
+#: ../bin/tbezier.c:292 ../bin/tcornu.c:326 ../bin/tcurve.c:401
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:187
msgid "Radius"
msgstr "РадиуÑ"
-#: ../bin/ccurve.c:666 ../bin/tcurve.c:370
+#: ../bin/ccurve.c:728 ../bin/tcurve.c:402
msgid "Turns"
msgstr "Повороты"
-#: ../bin/ccurve.c:667
+#: ../bin/ccurve.c:729
msgid "Angular Separation"
msgstr "Деление угла"
-#: ../bin/ccurve.c:668 ../bin/celev.c:47 ../bin/compound.c:562
-#: ../bin/tbezier.c:259 ../bin/tcornu.c:308 ../bin/tcurve.c:376
-#: ../bin/tease.c:529 ../bin/tstraigh.c:91
+#: ../bin/ccurve.c:730 ../bin/celev.c:43 ../bin/compound.c:740
+#: ../bin/tbezier.c:297 ../bin/tcornu.c:333 ../bin/tcurve.c:408
+#: ../bin/tease.c:534 ../bin/tstraigh.c:93
msgid "Grade"
msgstr "Ðаклон"
-#: ../bin/ccurve.c:669
+#: ../bin/ccurve.c:731
msgid "Vertical Separation"
msgstr "Деление вертикали"
-#: ../bin/ccurve.c:671
+#: ../bin/ccurve.c:733
msgid "Total Length"
msgstr "ÐžÐ±Ñ‰Ð°Ñ Ð´Ð»Ð¸Ð½Ð°"
-#: ../bin/ccurve.c:747
+#: ../bin/ccurve.c:813
#, c-format
msgid "Total Length %s"
msgstr "ÐžÐ±Ñ‰Ð°Ñ Ð´Ð»Ð¸Ð½Ð° %s"
-#: ../bin/ccurve.c:785 ../bin/ccurve.c:989 ../bin/tcurve.c:809
+#: ../bin/ccurve.c:852 ../bin/ccurve.c:1079 ../bin/tcurve.c:1008
msgid "Helix"
msgstr "Спираль"
-#: ../bin/ccurve.c:799
+#: ../bin/ccurve.c:868
msgid "Circle Radius"
msgstr "Ð Ð°Ð´Ð¸ÑƒÑ Ð¾ÐºÑ€ÑƒÐ¶Ð½Ð¾Ñти"
-#: ../bin/ccurve.c:804
+#: ../bin/ccurve.c:873
msgid "Click on Circle Edge"
msgstr "Ðажмите на окружноÑÑ‚ÑŒ"
-#: ../bin/ccurve.c:808
+#: ../bin/ccurve.c:877
msgid "Click on Circle Center"
msgstr "Ðажмите на центр круга"
-#: ../bin/ccurve.c:839
+#: ../bin/ccurve.c:907
msgid "Drag to Center"
msgstr "Тащите в центр"
-#: ../bin/ccurve.c:843
+#: ../bin/ccurve.c:911
msgid "Drag to Edge"
msgstr "Тащите к Ñтороне"
-#: ../bin/ccurve.c:863 ../bin/ccurve.c:867
+#: ../bin/ccurve.c:932 ../bin/ccurve.c:936
#, c-format
msgid "Radius=%s"
msgstr "РадиуÑ=%s"
-#: ../bin/ccurve.c:888
+#: ../bin/ccurve.c:957
msgid "Create Helix Track"
msgstr "Добавить Ñпиральный трек"
-#: ../bin/ccurve.c:903
+#: ../bin/ccurve.c:972
msgid "Create Circle Track"
msgstr "Добавить круглый трек"
-#: ../bin/ccurve.c:958
-#, fuzzy
-msgid "Cornu Curve"
-msgstr "Отриц."
-
-#: ../bin/ccurve.c:960
+#: ../bin/ccurve.c:1031
msgid "Curve Track"
msgstr "Кривой трек"
-#: ../bin/ccurve.c:960
+#: ../bin/ccurve.c:1031
msgid "Curve Tracks"
msgstr "Кривые треки"
-#: ../bin/ccurve.c:961
+#: ../bin/ccurve.c:1032
msgid "Curve from End-Pt"
msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ð¸Ð· конечной точки"
-#: ../bin/ccurve.c:962
+#: ../bin/ccurve.c:1035
msgid "Curve from Tangent"
msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ð¿Ð¾ каÑательной"
-#: ../bin/ccurve.c:963
+#: ../bin/ccurve.c:1038
msgid "Curve from Center"
msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ð¸Ð· центра"
-#: ../bin/ccurve.c:964
+#: ../bin/ccurve.c:1041
msgid "Curve from Chord"
msgstr "По хорде"
-#: ../bin/ccurve.c:965 ../bin/cdraw.c:2845
+#: ../bin/ccurve.c:1044 ../bin/cdraw.c:3199
msgid "Bezier Curve"
msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ð‘ÐµÐ·ÑŒÐµ"
-#: ../bin/ccurve.c:968 ../bin/tcurve.c:643
+#: ../bin/ccurve.c:1047
+#, fuzzy
+msgid "Cornu Curve"
+msgstr "Отриц."
+
+#: ../bin/ccurve.c:1052 ../bin/tcurve.c:684
msgid "Circle Track"
msgstr "ОкружноÑÑ‚ÑŒ"
-#: ../bin/ccurve.c:968
+#: ../bin/ccurve.c:1052
msgid "Circle Tracks"
msgstr "ОкружноÑти"
-#: ../bin/ccurve.c:969
+#: ../bin/ccurve.c:1054
msgid "Fixed Radius Circle"
msgstr "ОкружноÑÑ‚ÑŒ по радиуÑу"
-#: ../bin/ccurve.c:970
+#: ../bin/ccurve.c:1056
msgid "Circle from Tangent"
msgstr "ОкружноÑÑ‚ÑŒ по каÑательной"
-#: ../bin/ccurve.c:971
+#: ../bin/ccurve.c:1059
msgid "Circle from Center"
msgstr "ОкружноÑÑ‚ÑŒ к центру"
-#: ../bin/cdraw.c:131
+#: ../bin/ccontrol.c:169 ../bin/csensor.c:161 ../bin/csignal.c:237
+#: ../bin/ctrain.c:180
+msgid "Position"
+msgstr "ПозициÑ"
+
+#: ../bin/ccontrol.c:170 ../bin/ccontrol.c:431
+msgid "On Script"
+msgstr "Включить Ñкрипт"
+
+#: ../bin/ccontrol.c:171 ../bin/ccontrol.c:433
+msgid "Off Script"
+msgstr "Отключить Ñкрипт"
+
+#: ../bin/ccontrol.c:238
+msgid "Change Control"
+msgstr "Изменение управлениÑ"
+
+#: ../bin/ccontrol.c:281 ../bin/csensor.c:251
+#, fuzzy, c-format
+msgid "(%d [%s]): Layer=%u, at %0.3f,%0.3f"
+msgstr "(%d [%s]): Слой=%d, по %0.3f,%0.3f"
+
+#: ../bin/ccontrol.c:294 ../bin/ccontrol.c:644
+msgid "Control"
+msgstr "Управление"
+
+#: ../bin/ccontrol.c:427 ../bin/csensor.c:391 ../bin/csignal.c:512
+msgid "Origin X"
+msgstr "Координата X"
+
+#: ../bin/ccontrol.c:429 ../bin/csensor.c:393 ../bin/csignal.c:514
+msgid "Origin Y"
+msgstr "Координата Y"
+
+#: ../bin/ccontrol.c:445
+msgid "Create Control"
+msgstr "Создать управление"
+
+#: ../bin/ccontrol.c:448
+msgid "Modify Control"
+msgstr ""
+
+#: ../bin/ccontrol.c:488
+msgid "Edit control"
+msgstr ""
+
+#: ../bin/ccontrol.c:529
+msgid "Place control"
+msgstr ""
+
+#: ../bin/cdraw.c:125
msgid "Font Size must be > 0"
msgstr "Размер шрифта должен быть больше нулÑ"
-#: ../bin/cdraw.c:518
+#: ../bin/cdraw.c:553
msgid "First Point: X,Y"
msgstr ""
-#: ../bin/cdraw.c:519 ../bin/tcurve.c:368
+#: ../bin/cdraw.c:554 ../bin/tcurve.c:400
msgid "Center: X,Y"
msgstr "Центр: X,Y"
-#: ../bin/cdraw.c:520 ../bin/cdraw.c:542 ../bin/cdraw.c:1436
-#: ../bin/cdraw.c:1581 ../bin/cdraw.c:2502 ../bin/cdraw.c:2724
-#: ../bin/cdraw.c:2744 ../bin/cdraw.c:2748 ../bin/compound.c:543
-#: ../bin/compound.c:548 ../bin/compound.c:553 ../bin/compound.c:558
-#: ../bin/compound.c:564 ../bin/cprint.c:155 ../bin/csignal.c:240
-#: ../bin/csignal.c:515 ../bin/ctodesgn.c:193 ../bin/ctodesgn.c:194
-#: ../bin/ctodesgn.c:195 ../bin/ctodesgn.c:197 ../bin/ctodesgn.c:242
-#: ../bin/ctodesgn.c:265 ../bin/ctodesgn.c:267 ../bin/ctodesgn.c:302
-#: ../bin/ctodesgn.c:305 ../bin/ctodesgn.c:331 ../bin/ctodesgn.c:334
-#: ../bin/ctodesgn.c:368 ../bin/ctodesgn.c:373 ../bin/ctodesgn.c:397
-#: ../bin/ctodesgn.c:401 ../bin/ctodesgn.c:438 ../bin/ctodesgn.c:442
-#: ../bin/ctodesgn.c:447 ../bin/ctodesgn.c:473 ../bin/ctodesgn.c:493
-#: ../bin/ctodesgn.c:514 ../bin/ctodesgn.c:621 ../bin/ctrain.c:184
-#: ../bin/tease.c:524 ../bin/tstraigh.c:90
-msgid "Angle"
-msgstr "Угол"
+#: ../bin/cdraw.c:555 ../bin/tcurve.c:405
+msgid "Angular Length"
+msgstr "Длина дуги"
-#: ../bin/cdraw.c:521 ../bin/tcurve.c:374
+#: ../bin/cdraw.c:556
+#, fuzzy
+msgid "Line Angle"
+msgstr "Угол Ñлева"
+
+#: ../bin/cdraw.c:557 ../bin/tcurve.c:406
msgid "CCW Angle"
msgstr "Угол ПЧС"
-#: ../bin/cdraw.c:522 ../bin/tcurve.c:375
+#: ../bin/cdraw.c:558 ../bin/tcurve.c:407
msgid "CW Angle"
msgstr "Угол ЧС"
-#: ../bin/cdraw.c:525 ../bin/cdraw.c:1443 ../bin/cdraw.c:1565
-#: ../bin/cprint.c:130
+#: ../bin/cdraw.c:561 ../bin/cdraw.c:1582 ../bin/cdraw.c:1705
+#: ../bin/cprint.c:131 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:185
msgid "Height"
msgstr "Ð’Ñ‹Ñота"
-#: ../bin/cdraw.c:526 ../bin/cdraw.c:1441 ../bin/cdraw.c:1564
-#: ../bin/cdraw.c:2499 ../bin/cdraw.c:2761 ../bin/ctrain.c:186
-#: ../bin/dcar.c:2233
+#: ../bin/cdraw.c:562 ../bin/cdraw.c:1580 ../bin/cdraw.c:1704
+#: ../bin/cdraw.c:2845 ../bin/cdraw.c:3110 ../bin/ctrain.c:183
+#: ../bin/dcar.c:2344 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:192
msgid "Width"
msgstr "Ширина"
-#: ../bin/cdraw.c:527 ../bin/cmisc.c:144 ../bin/tcurve.c:377
-#: ../bin/tease.c:530 ../bin/tstraigh.c:92
-#, fuzzy
-msgid "Lock"
-msgstr "Поезд?"
-
-#: ../bin/cdraw.c:528
-msgid "Keep Origin Relative"
-msgstr ""
-
-#: ../bin/cdraw.c:529
-#, fuzzy
-msgid "Rot Origin: X,Y"
-msgstr "Ðачало: X,Y"
-
-#: ../bin/cdraw.c:530 ../bin/cdraw.c:1450
-#, fuzzy
-msgid "Rotate Angle"
-msgstr "Угол Ñправа"
+#: ../bin/cdraw.c:563 ../bin/compound.c:743 ../bin/tstraigh.c:94
+msgid "Pivot"
+msgstr "Центр"
-#: ../bin/cdraw.c:531
+#: ../bin/cdraw.c:564
msgid "Point Count"
msgstr "ЧиÑло точек"
-#: ../bin/cdraw.c:532 ../bin/cdraw.c:2477 ../bin/ctodesgn.c:207
-#: ../bin/tbezier.c:261
+#: ../bin/cdraw.c:565 ../bin/cdraw.c:2823 ../bin/ctodesgn.c:209
+#: ../bin/tbezier.c:299
msgid "Line Width"
msgstr "Ширина линии"
-#: ../bin/cdraw.c:533 ../bin/cdraw.c:2506 ../bin/tbezier.c:260
+#: ../bin/cdraw.c:566 ../bin/cdraw.c:2852 ../bin/tbezier.c:298
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:379
#, fuzzy
msgid "Line Type"
msgstr "Тип древеÑины"
-#: ../bin/cdraw.c:534 ../bin/cdraw.c:2479 ../bin/cdraw.c:2481
-#: ../bin/cdraw.c:2579 ../bin/cdraw.c:2612 ../bin/cmisc.c:125
-#: ../bin/ctext.c:68 ../bin/ctext.c:148 ../bin/ctodesgn.c:208
-#: ../bin/dcar.c:2229 ../bin/dlayer.c:485 ../bin/doption.c:558
+#: ../bin/cdraw.c:567 ../bin/cdraw.c:2825 ../bin/cdraw.c:2827
+#: ../bin/cdraw.c:2927 ../bin/cdraw.c:2960 ../bin/cmisc.c:121
+#: ../bin/ctext.c:67 ../bin/ctext.c:145 ../bin/ctodesgn.c:210
+#: ../bin/dcar.c:2340 ../bin/dlayer.c:545 ../bin/doption.c:591
msgid "Color"
msgstr "Цвет"
-#: ../bin/cdraw.c:535
+#: ../bin/cdraw.c:568
#, fuzzy
msgid "Filled"
msgstr "Закрашенный прÑмоугольник"
-#: ../bin/cdraw.c:536
+#: ../bin/cdraw.c:569
#, fuzzy
msgid "Open End"
msgstr "Ðа ребро"
-#: ../bin/cdraw.c:537 ../bin/cmisc.c:148 ../bin/cmisc.c:149 ../bin/cmisc.c:150
-#: ../bin/cmisc.c:151 ../bin/ctext.c:70 ../bin/ctext.c:149
+#: ../bin/cdraw.c:570 ../bin/cmisc.c:144 ../bin/cmisc.c:145 ../bin/cmisc.c:146
+#: ../bin/cmisc.c:147 ../bin/ctext.c:69 ../bin/ctext.c:146
#, fuzzy
msgid "Boxed"
msgstr "ПрÑмоугольник"
-#: ../bin/cdraw.c:538 ../bin/cdraw.c:1117 ../bin/cdraw.c:2513
+#: ../bin/cdraw.c:571 ../bin/cdraw.c:1177 ../bin/cdraw.c:2859
msgid "Lumber"
msgstr "ДревеÑина"
-#: ../bin/cdraw.c:539
+#: ../bin/cdraw.c:572
msgid "Orientation"
msgstr "ОриентациÑ"
-#: ../bin/cdraw.c:540 ../bin/cdraw.c:2495
-#: ../../../../build/work/app/bin/bllnhlp.c:593
+#: ../bin/cdraw.c:573 ../bin/cdraw.c:2841
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:679
msgid "Size"
msgstr "Размер"
-#: ../bin/cdraw.c:541 ../bin/compound.c:563 ../bin/tease.c:523
-msgid "Origin: X,Y"
+#: ../bin/cdraw.c:574
+#, fuzzy
+msgid "Text Origin: X,Y"
msgstr "Ðачало: X,Y"
-#: ../bin/cdraw.c:543 ../bin/ctext.c:66 ../bin/ctext.c:147
+#: ../bin/cdraw.c:575
+#, fuzzy
+msgid "Text Angle"
+msgstr "Угол Ñлева"
+
+#: ../bin/cdraw.c:576 ../bin/ctext.c:65 ../bin/ctext.c:144
msgid "Font Size"
msgstr "Размер шрифта"
-#: ../bin/cdraw.c:544 ../bin/cdraw.c:1263 ../bin/ctext.c:264
+#: ../bin/cdraw.c:577 ../bin/cdraw.c:1324 ../bin/ctext.c:273
msgid "Text"
msgstr "ТекÑÑ‚"
-#: ../bin/cdraw.c:545 ../bin/compound.c:571 ../bin/cturntbl.c:253
-#: ../bin/doption.c:139 ../bin/doption.c:140 ../bin/tbezier.c:263
-#: ../bin/tcornu.c:309 ../bin/tcurve.c:378 ../bin/tease.c:531
-#: ../bin/tstraigh.c:93 ../../../../build/work/app/bin/bllnhlp.c:671
-#: ../../../../build/work/app/bin/bllnhlp.c:672
-#: ../../../../build/work/app/bin/bllnhlp.c:673
-#: ../../../../build/work/app/bin/bllnhlp.c:674
-#: ../../../../build/work/app/bin/bllnhlp.c:675
-#: ../../../../build/work/app/bin/bllnhlp.c:676
-#: ../../../../build/work/app/bin/bllnhlp.c:677
-#: ../../../../build/work/app/bin/bllnhlp.c:678
-#: ../../../../build/work/app/bin/bllnhlp.c:679
-#: ../../../../build/work/app/bin/bllnhlp.c:680
-#: ../../../../build/work/app/bin/bllnhlp.c:681
-#: ../../../../build/work/app/bin/bllnhlp.c:682
-#: ../../../../build/work/app/bin/bllnhlp.c:683
-#: ../../../../build/work/app/bin/bllnhlp.c:684
-#: ../../../../build/work/app/bin/bllnhlp.c:685
-#: ../../../../build/work/app/bin/bllnhlp.c:686
-#: ../../../../build/work/app/bin/bllnhlp.c:687
-#: ../../../../build/work/app/bin/bllnhlp.c:688
-#: ../../../../build/work/app/bin/bllnhlp.c:689
-#: ../../../../build/work/app/bin/bllnhlp.c:690
+#: ../bin/cdraw.c:578
+msgid "Lock To Origin"
+msgstr ""
+
+#: ../bin/cdraw.c:579
+#, fuzzy
+msgid "Rot Origin: X,Y"
+msgstr "Ðачало: X,Y"
+
+#: ../bin/cdraw.c:580
+#, fuzzy
+msgid "Rotate By"
+msgstr "Повернуть"
+
+#: ../bin/cdraw.c:581 ../bin/compound.c:749 ../bin/cturntbl.c:277
+#: ../bin/doption.c:101 ../bin/doption.c:102 ../bin/tbezier.c:301
+#: ../bin/tcornu.c:334 ../bin/tcurve.c:410 ../bin/tease.c:536
+#: ../bin/tstraigh.c:95 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:757
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:758
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:759
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:760
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:761
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:762
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:763
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:764
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:765
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:766
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:767
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:768
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:769
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:770
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:771
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:772
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:773
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:774
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:775
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:776
msgid "Layer"
msgstr "Слой"
-#: ../bin/cdraw.c:1102
+#: ../bin/cdraw.c:1057 ../bin/cmisc.c:233 ../bin/cmodify.c:379
+#: ../bin/compound.c:848 ../bin/ctrain.c:218
+msgid "Change Track"
+msgstr "Изменить трек"
+
+#: ../bin/cdraw.c:1162
msgid "Straight Line"
msgstr "ПрÑÐ¼Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ"
-#: ../bin/cdraw.c:1107 ../bin/cdraw.c:2837
+#: ../bin/cdraw.c:1167 ../bin/cdraw.c:3190
msgid "Dimension Line"
msgstr "Размеры линии"
-#: ../bin/cdraw.c:1128 ../bin/cdraw.c:2514 ../bin/cdraw.c:2839
+#: ../bin/cdraw.c:1188 ../bin/cdraw.c:2860 ../bin/cdraw.c:3192
msgid "Table Edge"
msgstr "Край Ñтола"
-#: ../bin/cdraw.c:1148 ../bin/cdraw.c:2519 ../bin/cdraw.c:2520
-#: ../bin/cdraw.c:2521
+#: ../bin/cdraw.c:1212 ../bin/cdraw.c:2865 ../bin/cdraw.c:2866
+#: ../bin/cdraw.c:2867
msgid "Circle"
msgstr "ОкружноÑÑ‚ÑŒ"
-#: ../bin/cdraw.c:1159
+#: ../bin/cdraw.c:1227
msgid "Curved Line"
msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ"
-#: ../bin/cdraw.c:1175 ../bin/cdraw.c:2524 ../bin/cdraw.c:2525
-#: ../bin/cdraw.c:2526
+#: ../bin/cdraw.c:1249 ../bin/cdraw.c:2870 ../bin/cdraw.c:2871
+#: ../bin/cdraw.c:2872
msgid "Filled Circle"
msgstr "Круг"
-#: ../bin/cdraw.c:1194
+#: ../bin/cdraw.c:1279
+#, fuzzy
+msgid "Filled Rectangle"
+msgstr "ПрÑмоугольник"
+
+#: ../bin/cdraw.c:1279
msgid "Rectangle"
msgstr "ПрÑмоугольник"
-#: ../bin/cdraw.c:1208 ../bin/cdraw.c:2530
+#: ../bin/cdraw.c:1293 ../bin/cdraw.c:2876
msgid "Polyline"
msgstr "ПолилиниÑ"
-#: ../bin/cdraw.c:1212 ../bin/cdraw.c:2523 ../bin/cdraw.c:2856
-msgid "Polygon"
-msgstr "Многоугольник"
-
-#: ../bin/cdraw.c:1230
-#, fuzzy
-msgid "Filled Rectangle"
-msgstr "ПрÑмоугольник"
-
-#: ../bin/cdraw.c:1243 ../bin/cdraw.c:2528 ../bin/cdraw.c:2857
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2874 ../bin/cdraw.c:3213
#, fuzzy
msgid "Filled Polygon"
msgstr "Закрашенный прÑмоугольник"
-#: ../bin/cdraw.c:1269
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2869 ../bin/cdraw.c:3212
+msgid "Polygon"
+msgstr "Многоугольник"
+
+#: ../bin/cdraw.c:1330
#, fuzzy, c-format
msgid "%s(%d) Layer=%d"
msgstr "%s: Слой=%d"
-#: ../bin/cdraw.c:1289 ../bin/cdraw.c:2582 ../bin/compound.c:956
-#: ../bin/doption.c:134 ../bin/tbezier.c:458
+#: ../bin/cdraw.c:1355 ../bin/cdraw.c:2930 ../bin/compound.c:1156
+#: ../bin/doption.c:96 ../bin/tbezier.c:519
msgid "Solid"
msgstr "Закрашенные"
-#: ../bin/cdraw.c:1290 ../bin/cdraw.c:2584 ../bin/compound.c:957
-#: ../bin/doption.c:131 ../bin/tbezier.c:459
+#: ../bin/cdraw.c:1356 ../bin/cdraw.c:2932 ../bin/compound.c:1157
+#: ../bin/doption.c:93 ../bin/tbezier.c:520
msgid "Dash"
msgstr "Пунктиром"
-#: ../bin/cdraw.c:1291 ../bin/cdraw.c:2583 ../bin/compound.c:958
-#: ../bin/tbezier.c:460
+#: ../bin/cdraw.c:1357 ../bin/cdraw.c:2931 ../bin/compound.c:1158
+#: ../bin/tbezier.c:521
msgid "Dot"
msgstr ""
-#: ../bin/cdraw.c:1292 ../bin/compound.c:959 ../bin/tbezier.c:461
+#: ../bin/cdraw.c:1358 ../bin/compound.c:1159 ../bin/tbezier.c:522
#, fuzzy
msgid "DashDot"
msgstr "Пунктиром"
-#: ../bin/cdraw.c:1293 ../bin/compound.c:960 ../bin/tbezier.c:462
+#: ../bin/cdraw.c:1359 ../bin/compound.c:1161 ../bin/tbezier.c:523
msgid "DashDotDot"
msgstr ""
-#: ../bin/cdraw.c:1294 ../bin/compound.c:961 ../bin/tbezier.c:463
+#: ../bin/cdraw.c:1360 ../bin/compound.c:1163 ../bin/tbezier.c:524
#, fuzzy
msgid "CenterDot"
msgstr "Управление"
-#: ../bin/cdraw.c:1295 ../bin/compound.c:962 ../bin/tbezier.c:464
+#: ../bin/cdraw.c:1361 ../bin/compound.c:1165 ../bin/tbezier.c:525
msgid "PhantomDot"
msgstr ""
-#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2630
+#: ../bin/cdraw.c:1366 ../bin/cdraw.c:2981
msgid "Tiny"
msgstr "Крошечный"
-#: ../bin/cdraw.c:1301 ../bin/cdraw.c:2631
+#: ../bin/cdraw.c:1367 ../bin/cdraw.c:2982
msgid "Small"
msgstr "Маленький"
-#: ../bin/cdraw.c:1302 ../bin/cdraw.c:2632
+#: ../bin/cdraw.c:1368 ../bin/cdraw.c:2983
msgid "Medium"
msgstr "Средний"
-#: ../bin/cdraw.c:1303 ../bin/cdraw.c:2633
+#: ../bin/cdraw.c:1369 ../bin/cdraw.c:2984
msgid "Large"
msgstr "Большой"
-#: ../bin/cdraw.c:1439
+#: ../bin/cdraw.c:1575 ../bin/cdraw.c:1721 ../bin/cdraw.c:2848
+#: ../bin/cdraw.c:3071 ../bin/cdraw.c:3092 ../bin/cdraw.c:3096
+#: ../bin/compound.c:721 ../bin/compound.c:726 ../bin/compound.c:731
+#: ../bin/compound.c:736 ../bin/compound.c:742 ../bin/cprint.c:156
+#: ../bin/csignal.c:238 ../bin/csignal.c:516 ../bin/ctodesgn.c:195
+#: ../bin/ctodesgn.c:196 ../bin/ctodesgn.c:197 ../bin/ctodesgn.c:199
+#: ../bin/ctodesgn.c:243 ../bin/ctodesgn.c:269 ../bin/ctodesgn.c:271
+#: ../bin/ctodesgn.c:315 ../bin/ctodesgn.c:318 ../bin/ctodesgn.c:349
+#: ../bin/ctodesgn.c:352 ../bin/ctodesgn.c:394 ../bin/ctodesgn.c:399
+#: ../bin/ctodesgn.c:427 ../bin/ctodesgn.c:431 ../bin/ctodesgn.c:476
+#: ../bin/ctodesgn.c:480 ../bin/ctodesgn.c:485 ../bin/ctodesgn.c:515
+#: ../bin/ctodesgn.c:539 ../bin/ctodesgn.c:564 ../bin/ctodesgn.c:697
+#: ../bin/ctrain.c:181 ../bin/tease.c:529
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:183
+msgid "Angle"
+msgstr "Угол"
+
+#: ../bin/cdraw.c:1578 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:188
#, fuzzy
msgid "Relative Angle"
msgstr "Угол Ñлева"
-#: ../bin/cdraw.c:1448 ../bin/cdraw.c:1596 ../bin/cdraw.c:2718
+#: ../bin/cdraw.c:1587 ../bin/cdraw.c:1737 ../bin/cdraw.c:3065
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:184
#, fuzzy
msgid "Arc Angle"
msgstr "Угол"
-#: ../bin/cdraw.c:1453
+#: ../bin/cdraw.c:1589
#, fuzzy
-msgid "Rot Center X"
-msgstr "Центр: X,Y"
+msgid "Rotate Angle"
+msgstr "Угол Ñправа"
-#: ../bin/cdraw.c:1455
+#: ../bin/cdraw.c:1592
#, fuzzy
-msgid "Rot Center Y"
+msgid "Rot Center X,Y"
msgstr "Центр: X,Y"
-#: ../bin/cdraw.c:1552
+#: ../bin/cdraw.c:1692
#, fuzzy
msgid "Seg Lth"
msgstr "Длина"
-#: ../bin/cdraw.c:1553
+#: ../bin/cdraw.c:1693
msgid "Rel Ang"
msgstr ""
-#: ../bin/cdraw.c:2484 ../bin/cdraw.c:2486 ../bin/cdraw.c:2610
+#: ../bin/cdraw.c:2830 ../bin/cdraw.c:2832 ../bin/cdraw.c:2958
msgid "Lumber Type"
msgstr "Тип древеÑины"
-#: ../bin/cdraw.c:2511
+#: ../bin/cdraw.c:2857
msgid "Straight"
msgstr "ПрÑмаÑ"
-#: ../bin/cdraw.c:2512
+#: ../bin/cdraw.c:2858
msgid "Dimension"
msgstr ""
-#: ../bin/cdraw.c:2515 ../bin/cdraw.c:2516 ../bin/cdraw.c:2517
-#: ../bin/cdraw.c:2518
+#: ../bin/cdraw.c:2861 ../bin/cdraw.c:2862 ../bin/cdraw.c:2863
+#: ../bin/cdraw.c:2864
msgid "Curved"
msgstr "КриваÑ"
-#: ../bin/cdraw.c:2522 ../bin/cdraw.c:2854
+#: ../bin/cdraw.c:2868 ../bin/cdraw.c:3210
msgid "Box"
msgstr "ПрÑмоугольник"
-#: ../bin/cdraw.c:2527 ../bin/cdraw.c:2855
+#: ../bin/cdraw.c:2873 ../bin/cdraw.c:3211
msgid "Filled Box"
msgstr "Закрашенный прÑмоугольник"
-#: ../bin/cdraw.c:2529 ../bin/tbezier.c:455
+#: ../bin/cdraw.c:2875 ../bin/tbezier.c:516
msgid "Bezier Line"
msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ð‘ÐµÐ·ÑŒÐµ"
-#: ../bin/cdraw.c:2577
+#: ../bin/cdraw.c:2925
#, c-format
msgid "%s Line Width"
msgstr "%s, ширина"
-#: ../bin/cdraw.c:2580 ../bin/dcar.c:2202 ../bin/dcar.c:4366
-#: ../bin/dcar.c:4371
+#: ../bin/cdraw.c:2928 ../bin/dcar.c:2313 ../bin/dcar.c:4694
+#: ../bin/dcar.c:4700
msgid "Type"
msgstr "Тип"
-#: ../bin/cdraw.c:2585
+#: ../bin/cdraw.c:2933
#, fuzzy
msgid "Dash-Dot"
msgstr "Пунктиром"
-#: ../bin/cdraw.c:2586
+#: ../bin/cdraw.c:2934
msgid "Dash-Dot-Dot"
msgstr ""
-#: ../bin/cdraw.c:2599
+#: ../bin/cdraw.c:2947
#, c-format
msgid "%s Color"
msgstr "%s Цвет"
-#: ../bin/cdraw.c:2628
+#: ../bin/cdraw.c:2979
msgid "Dimension Line Size"
msgstr "Размер линии"
-#: ../bin/cdraw.c:2640
+#: ../bin/cdraw.c:2991
msgid "Drag to create Table Edge"
msgstr "Тащите, чтобы Ñоздать край Ñтола"
-#: ../bin/cdraw.c:2742
+#: ../bin/cdraw.c:3089
#, fuzzy
msgid "Seg Length"
msgstr "Длина Ñлева"
-#: ../bin/cdraw.c:2746
+#: ../bin/cdraw.c:3094
#, fuzzy
msgid "Rel Angle"
msgstr "Угол Ñлева"
-#: ../bin/cdraw.c:2836
+#: ../bin/cdraw.c:3189
msgid "Line"
msgstr "ПрÑмаÑ"
-#: ../bin/cdraw.c:2836
+#: ../bin/cdraw.c:3189
msgid "Draw Line"
msgstr "ПрÑмаÑ"
-#: ../bin/cdraw.c:2837
+#: ../bin/cdraw.c:3190
msgid "Draw Dimension Line"
msgstr "ВыноÑка Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:363
-#: ../bin/cdraw.c:2838 ../../../../build/work/app/i18n/custmsg.h:1251
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:479
+#: ../bin/cdraw.c:3191 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1270
msgid "Benchwork"
msgstr "ДоÑка"
-#: ../bin/cdraw.c:2838
+#: ../bin/cdraw.c:3191
msgid "Draw Benchwork"
msgstr "ДоÑка"
-#: ../bin/cdraw.c:2839
+#: ../bin/cdraw.c:3192
msgid "Draw Table Edge"
msgstr "Край Ñтола"
-#: ../bin/cdraw.c:2841
+#: ../bin/cdraw.c:3195
msgid "Curve End"
msgstr "Конец кривой"
-#: ../bin/cdraw.c:2841
+#: ../bin/cdraw.c:3195
msgid "Draw Curve from End"
msgstr "От каÑательной"
-#: ../bin/cdraw.c:2842
+#: ../bin/cdraw.c:3196
msgid "Curve Tangent"
msgstr "Ð¢Ð°Ð½Ð³ÐµÐ½Ñ ÐºÑ€Ð¸Ð²Ð¾Ð¹"
-#: ../bin/cdraw.c:2842
+#: ../bin/cdraw.c:3196
msgid "Draw Curve from Tangent"
msgstr "По окружноÑти от краÑ"
-#: ../bin/cdraw.c:2843
+#: ../bin/cdraw.c:3197
msgid "Curve Center"
msgstr "Центр кривой"
-#: ../bin/cdraw.c:2843
+#: ../bin/cdraw.c:3197
msgid "Draw Curve from Center"
msgstr "По окружноÑти от центра"
-#: ../bin/cdraw.c:2844
+#: ../bin/cdraw.c:3198
msgid "Curve Chord"
msgstr "Хорда кривой"
-#: ../bin/cdraw.c:2844
+#: ../bin/cdraw.c:3198
msgid "Draw Curve from Chord"
msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ð¿Ð¾ хорде"
-#: ../bin/cdraw.c:2845
+#: ../bin/cdraw.c:3199
msgid "Draw Bezier"
msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ð‘ÐµÐ·ÑŒÐµ"
-#: ../bin/cdraw.c:2848
-msgid "Circle Tangent"
-msgstr "КаÑÐ°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ðº окружноÑти"
-
-#: ../bin/cdraw.c:2848
-msgid "Draw Circle from Tangent"
-msgstr "ОкружноÑÑ‚ÑŒ из центра"
-
-#: ../bin/cdraw.c:2849
+#: ../bin/cdraw.c:3203
msgid "Circle Center"
msgstr "Центр окружноÑти"
-#: ../bin/cdraw.c:2849
+#: ../bin/cdraw.c:3203
msgid "Draw Circle from Center"
msgstr "ОкружноÑÑ‚ÑŒ от краÑ"
-#: ../bin/cdraw.c:2851
-msgid "Circle Filled Tangent"
-msgstr "Круг от каÑательной"
+#: ../bin/cdraw.c:3204
+msgid "Circle Tangent"
+msgstr "КаÑÐ°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ðº окружноÑти"
-#: ../bin/cdraw.c:2851
-msgid "Draw Filled Circle from Tangent"
-msgstr "Круг из центра"
+#: ../bin/cdraw.c:3204
+msgid "Draw Circle from Tangent"
+msgstr "ОкружноÑÑ‚ÑŒ из центра"
-#: ../bin/cdraw.c:2852
+#: ../bin/cdraw.c:3206
msgid "Circle Filled Center"
msgstr "Круг к центру"
-#: ../bin/cdraw.c:2852
+#: ../bin/cdraw.c:3206
msgid "Draw Filled Circle from Center"
msgstr "Круг от краÑ"
-#: ../bin/cdraw.c:2854
+#: ../bin/cdraw.c:3207
+msgid "Circle Filled Tangent"
+msgstr "Круг от каÑательной"
+
+#: ../bin/cdraw.c:3207
+msgid "Draw Filled Circle from Tangent"
+msgstr "Круг из центра"
+
+#: ../bin/cdraw.c:3210
msgid "Draw Box"
msgstr "ПрÑмоугольник"
-#: ../bin/cdraw.c:2855
+#: ../bin/cdraw.c:3211
msgid "Draw Filled Box"
msgstr "Закрашенный прÑмоугольник"
-#: ../bin/cdraw.c:2856
+#: ../bin/cdraw.c:3212
msgid "Draw Polygon"
msgstr "РиÑовать полигон"
-#: ../bin/cdraw.c:2857
+#: ../bin/cdraw.c:3213
#, fuzzy
msgid "Draw Filled Polygon"
msgstr "РиÑовать полигон"
-#: ../bin/cdraw.c:2858
+#: ../bin/cdraw.c:3214
#, fuzzy
msgid "PolyLine"
msgstr "ЛоманаÑ"
-#: ../bin/cdraw.c:2858
+#: ../bin/cdraw.c:3214
#, fuzzy
msgid "Draw PolyLine"
msgstr "РиÑовать полилинию"
-#: ../bin/cdraw.c:2875
+#: ../bin/cdraw.c:3231
msgid "Straight Objects"
msgstr "ПрÑмые объекты"
-#: ../bin/cdraw.c:2875
+#: ../bin/cdraw.c:3231
msgid "Draw Straight Objects"
msgstr "РиÑовать прÑмые объекты"
-#: ../bin/cdraw.c:2876
+#: ../bin/cdraw.c:3232
msgid "Curved Lines"
msgstr "Кривые линии"
-#: ../bin/cdraw.c:2876
+#: ../bin/cdraw.c:3232
msgid "Draw Curved Lines"
msgstr "РиÑовать кривые линии"
-#: ../bin/cdraw.c:2877
+#: ../bin/cdraw.c:3233
msgid "Circle Lines"
msgstr "ОкружноÑти"
-#: ../bin/cdraw.c:2877
+#: ../bin/cdraw.c:3233
msgid "Draw Circles"
msgstr "РиÑовать окружноÑти"
-#: ../bin/cdraw.c:2878
+#: ../bin/cdraw.c:3234
msgid "Shapes"
msgstr "Фигуры"
-#: ../bin/cdraw.c:2878
+#: ../bin/cdraw.c:3234
msgid "Draw Shapes"
msgstr "РиÑовать фигуры"
-#: ../bin/cdraw.c:3166
+#: ../bin/cdraw.c:3536
msgid "Close Polygon - 'g'"
msgstr ""
-#: ../bin/cdraw.c:3167
+#: ../bin/cdraw.c:3538
msgid "Make PolyLine - 'l'"
msgstr ""
-#: ../bin/cdraw.c:3168
+#: ../bin/cdraw.c:3540
msgid "Fill Polygon - 'f'"
msgstr ""
-#: ../bin/cdraw.c:3169
+#: ../bin/cdraw.c:3542
msgid "Empty Polygon - 'u'"
msgstr ""
-#: ../bin/cdraw.c:3171
+#: ../bin/cdraw.c:3545
msgid "Points Mode - 'p'"
msgstr ""
-#: ../bin/cdraw.c:3172
+#: ../bin/cdraw.c:3548
msgid "Delete Selected Point - 'Del'"
msgstr ""
-#: ../bin/cdraw.c:3173
+#: ../bin/cdraw.c:3549
msgid "Vertex Point - 'v'"
msgstr ""
-#: ../bin/cdraw.c:3174
+#: ../bin/cdraw.c:3551
msgid "Round Corner - 'r'"
msgstr ""
-#: ../bin/cdraw.c:3175
+#: ../bin/cdraw.c:3553
msgid "Smooth Corner - 's'"
msgstr ""
-#: ../bin/cdraw.c:3177 ../bin/cselect.c:3426
+#: ../bin/cdraw.c:3556 ../bin/cselect.c:3734
msgid "LineType..."
msgstr ""
-#: ../bin/cdraw.c:3178 ../bin/cselect.c:3427
+#: ../bin/cdraw.c:3557 ../bin/cselect.c:3735
#, fuzzy
msgid "Solid Line"
msgstr "ЛоманаÑ"
-#: ../bin/cdraw.c:3179 ../bin/cselect.c:3428
+#: ../bin/cdraw.c:3559 ../bin/cselect.c:3737
#, fuzzy
msgid "Dashed Line"
msgstr "ПрÑмаÑ"
-#: ../bin/cdraw.c:3180 ../bin/cselect.c:3429
+#: ../bin/cdraw.c:3561 ../bin/cselect.c:3739
#, fuzzy
msgid "Dotted Line"
msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ"
-#: ../bin/cdraw.c:3181
+#: ../bin/cdraw.c:3563
#, fuzzy
msgid "Dash-Dot Line"
msgstr "ПрÑмаÑ"
-#: ../bin/cdraw.c:3182
+#: ../bin/cdraw.c:3565
msgid "Dash-Dot-Dot Line"
msgstr ""
-#: ../bin/cdraw.c:3183
+#: ../bin/cdraw.c:3567
#, fuzzy
msgid "Center-Dot Line"
msgstr "Создать линии"
-#: ../bin/cdraw.c:3184
+#: ../bin/cdraw.c:3569
msgid "Phantom-Dot Line"
msgstr ""
-#: ../bin/cdraw.c:3186
+#: ../bin/cdraw.c:3572
msgid "Origin Mode - 'o'"
msgstr ""
-#: ../bin/cdraw.c:3187
+#: ../bin/cdraw.c:3574
msgid "Reset Origin - '0'"
msgstr ""
-#: ../bin/cdraw.c:3188
+#: ../bin/cdraw.c:3576
msgid "Origin to Selected - 'l'"
msgstr ""
-#: ../bin/cdraw.c:3189
+#: ../bin/cdraw.c:3578
msgid "Origin to Middle - 'm'"
msgstr ""
-#: ../bin/celev.c:46 ../bin/cprofile.c:1536 ../bin/csplit.c:171
-#: ../bin/csplit.c:176 ../bin/dease.c:67 ../bin/doption.c:132
-#: ../bin/doption.c:134
+#: ../bin/celev.c:42 ../bin/cprint.c:117 ../bin/cprofile.c:1531
+#: ../bin/csplit.c:201 ../bin/csplit.c:210 ../bin/dease.c:68
+#: ../bin/doption.c:94 ../bin/doption.c:96
msgid "None"
msgstr "Ðет"
-#: ../bin/celev.c:46
+#: ../bin/celev.c:42
msgid "Defined"
msgstr "По-умолчанию"
-#: ../bin/celev.c:46
+#: ../bin/celev.c:42
msgid "Hidden"
msgstr "СкрытаÑ"
-#: ../bin/celev.c:47
+#: ../bin/celev.c:43
msgid "Computed"
msgstr "ВычиÑленнаÑ"
-#: ../bin/celev.c:47
+#: ../bin/celev.c:43
msgid "Station"
msgstr "СтанциÑ"
-#: ../bin/celev.c:47 ../bin/cprofile.c:1534 ../bin/dcmpnd.c:75
+#: ../bin/celev.c:43 ../bin/cprofile.c:1529 ../bin/dcmpnd.c:71
msgid "Ignore"
msgstr "Игнорировать"
-#: ../bin/celev.c:219
+#: ../bin/celev.c:233
msgid "Set Elevation"
msgstr "УÑтановить выÑоту"
-#: ../bin/celev.c:312 ../bin/celev.c:319 ../bin/celev.c:322
+#: ../bin/celev.c:325 ../bin/celev.c:334 ../bin/celev.c:338
#, c-format
msgid "Undefined"
msgstr "Ðеопределено"
-#: ../bin/celev.c:378 ../bin/celev.c:514
+#: ../bin/celev.c:384 ../bin/celev.c:541
msgid "Elevation"
msgstr "Ð’Ñ‹Ñота"
-#: ../bin/celev.c:378 ../bin/cmisc.c:459 ../bin/dcontmgm.c:299
-#: ../bin/dcustmgm.c:395 ../bin/dlayer.c:1124 ../bin/dpricels.c:154
-#: ../bin/filenoteui.c:249 ../bin/linknoteui.c:182
-#: ../bin/paramfilesearch_ui.c:396 ../bin/textnoteui.c:171
+#: ../bin/celev.c:385 ../bin/cmisc.c:467 ../bin/dcustmgm.c:407
+#: ../bin/dcontmgm.c:308 ../bin/dlayer.c:2071 ../bin/dpricels.c:167
+#: ../bin/filenoteui.c:253 ../bin/linknoteui.c:169
+#: ../bin/paramfilesearch_ui.c:477 ../bin/textnoteui.c:137
msgid "Done"
msgstr "ОК"
-#: ../bin/celev.c:390 ../bin/celev.c:445 ../bin/celev.c:447 ../bin/celev.c:466
-msgid "Click on end, +Shift to split, +Ctrl to move description"
+#: ../bin/celev.c:399
+msgid ""
+"Click on end, +Shift to split, +Ctrl to move description, +Alt to show "
+"elevation"
msgstr ""
-#: ../bin/celev.c:410
+#: ../bin/celev.c:420
msgid "Move to end or track crossing +Shift to split"
msgstr ""
-#: ../bin/celev.c:414
+#: ../bin/celev.c:424
msgid "Move to end or track crossing"
msgstr ""
-#: ../bin/celev.c:423
+#: ../bin/celev.c:436
#, c-format
msgid "Crossing - First %0.3f, Second %0.3f, Clearance %0.3f - Click to Split"
msgstr ""
-#: ../bin/celev.c:425
+#: ../bin/celev.c:439
#, c-format
msgid "Crossing - First %0.3f, Second %0.3f, Clearance %0.3f"
msgstr ""
-#: ../bin/celev.c:436
-#, fuzzy, c-format
-msgid "Track End elevation %0.3f"
-msgstr "Ð’Ñ‹Ñоты трека"
-
-#: ../bin/celev.c:439
+#: ../bin/celev.c:453
#, c-format
msgid "Click to split here - elevation %0.3f"
msgstr ""
-#: ../bin/celev.c:442
+#: ../bin/celev.c:458
#, fuzzy, c-format
-msgid "Track Point elevation %0.3f"
+msgid "Track End elevation %0.3f - snap End Pt"
msgstr "Ð’Ñ‹Ñоты трека"
-#: ../bin/celev.c:470
-#, fuzzy
-msgid "Point selected!"
-msgstr "невыбранные"
+#: ../bin/celev.c:461
+#, fuzzy, c-format
+msgid "Track End elevation %0.3f"
+msgstr "Ð’Ñ‹Ñоты трека"
-#: ../bin/celev.c:473
+#: ../bin/celev.c:463 ../bin/celev.c:466
+msgid ""
+"Click on End Pt, +Shift to split, +Ctrl to move description, +Alt show "
+"Elevation"
+msgstr ""
+
+#: ../bin/celev.c:486
+msgid "Click on end, +Shift to split, +Ctrl to move description"
+msgstr ""
+
+#: ../bin/celev.c:490
#, fuzzy
msgid "Split track"
msgstr "Разделить трек"
-#: ../bin/celev.c:478
+#: ../bin/celev.c:496
#, fuzzy
msgid "Track split!"
msgstr "Треки"
-#: ../bin/cgroup.c:592
+#: ../bin/celev.c:503
+#, fuzzy
+msgid "Point selected!"
+msgstr "невыбранные"
+
+#: ../bin/cgroup.c:664
msgid "Ungroup Object"
msgstr "Разгруппировать объект"
-#: ../bin/cgroup.c:604
+#: ../bin/cgroup.c:677
#, c-format
msgid "%d objects ungrouped"
msgstr "%d объектов разгруппировано"
-#: ../bin/cgroup.c:606
+#: ../bin/cgroup.c:679
msgid "No objects ungrouped"
msgstr "Ðет объектов Ð´Ð»Ñ Ñ€Ð°Ð·Ð³Ñ€ÑƒÐ¿Ð¿Ð¸Ñ€Ð¾Ð²ÐºÐ¸"
-#: ../bin/cgroup.c:617
+#: ../bin/cgroup.c:693
msgid "Replace with new group?"
msgstr "Заменить новой группой?"
-#: ../bin/cgroup.c:623 ../bin/compound.c:566 ../bin/cstruct.c:69
-#: ../bin/ctodesgn.c:199 ../bin/ctodesgn.c:2921 ../bin/cturnout.c:83
-#: ../bin/dcar.c:2194 ../bin/dcar.c:4366 ../bin/dcar.c:4371
-#: ../bin/dcmpnd.c:456 ../bin/dcustmgm.c:59
-#: ../../../../build/work/app/bin/bllnhlp.c:375
-#: ../../../../build/work/app/bin/bllnhlp.c:570
+#: ../bin/cgroup.c:694
+msgid "Turntable/TransferTable/DblSlipSwith?"
+msgstr ""
+
+#: ../bin/cgroup.c:700 ../bin/compound.c:744 ../bin/cstruct.c:65
+#: ../bin/ctodesgn.c:201 ../bin/ctodesgn.c:3209 ../bin/cturnout.c:84
+#: ../bin/dcar.c:2305 ../bin/dcar.c:4694 ../bin/dcar.c:4700
+#: ../bin/dcmpnd.c:483 ../bin/dcustmgm.c:45
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:417
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:656
msgid "Manufacturer"
msgstr "Производитель"
-#: ../bin/cgroup.c:624 ../bin/cmisc.c:459 ../bin/cstruct.c:69
-#: ../bin/ctodesgn.c:2922 ../bin/ctodesgn.c:2923 ../bin/ctrain.c:187
-#: ../bin/cturnout.c:83 ../bin/dcar.c:2210 ../bin/dcar.c:4367
-#: ../bin/dcar.c:4372 ../bin/dcmpnd.c:457 ../bin/dcustmgm.c:60
-#: ../bin/denum.c:182 ../bin/denum.c:183 ../bin/denum.c:186
-#: ../../../../build/work/app/bin/bllnhlp.c:376
+#: ../bin/cgroup.c:701 ../bin/cmisc.c:467 ../bin/cstruct.c:65
+#: ../bin/ctodesgn.c:3210 ../bin/ctodesgn.c:3211 ../bin/ctrain.c:184
+#: ../bin/cturnout.c:84 ../bin/dcar.c:2321 ../bin/dcar.c:4695
+#: ../bin/dcar.c:4701 ../bin/dcmpnd.c:484 ../bin/dcustmgm.c:46
+#: ../bin/denum.c:188 ../bin/denum.c:189 ../bin/denum.c:194
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:418
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:650
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:651
msgid "Description"
msgstr "ОпиÑание"
-#: ../bin/cgroup.c:625 ../bin/dcmpnd.c:458
+#: ../bin/cgroup.c:702 ../bin/dcmpnd.c:485
msgid "#"
msgstr "#"
-#: ../bin/cgroup.c:626 ../bin/compound.c:570
+#: ../bin/cgroup.c:703 ../bin/compound.c:748
msgid "# Segments"
msgstr "# Ñегментов"
-#: ../bin/cgroup.c:628
+#: ../bin/cgroup.c:705
#, fuzzy
msgid "Offset X,Y:"
msgstr "Смещение"
-#: ../bin/cgroup.c:1235
+#: ../bin/cgroup.c:1320
msgid "No endpts"
msgstr ""
-#: ../bin/cgroup.c:1350
-msgid "No paths"
-msgstr ""
-
-#: ../bin/cgroup.c:1619 ../bin/cgroup.c:1669
+#: ../bin/cgroup.c:1732 ../bin/cgroup.c:1798
msgid "Group Tracks"
msgstr ""
-#: ../bin/cgroup.c:1729
+#: ../bin/cgroup.c:1866
msgid "Group Objects"
msgstr ""
-#: ../bin/chndldto.c:70
+#: ../bin/chndldto.c:68
msgid "Place frog and drag angle"
msgstr ""
-#: ../bin/chndldto.c:87
+#: ../bin/chndldto.c:85
msgid "frog"
msgstr "Ñтрелка"
-#: ../bin/chndldto.c:93
+#: ../bin/chndldto.c:91
msgid "Drag to set angle"
msgstr "Тащите Ð´Ð»Ñ ÑƒÑтановки угла"
@@ -1760,299 +1797,309 @@ msgstr "Угол Ñтрелки очень маленький"
msgid "Select point position"
msgstr "Выберите позицию точки"
-#: ../bin/chndldto.c:149 ../bin/chndldto.c:174
+#: ../bin/chndldto.c:152 ../bin/chndldto.c:178
msgid "points"
msgstr "точки"
-#: ../bin/chndldto.c:271
+#: ../bin/chndldto.c:282
#, c-format
msgid "Length = %0.2f Angle = %0.2f Frog# = %0.2f"
msgstr ""
-#: ../bin/chndldto.c:274
+#: ../bin/chndldto.c:286
msgid "Create Hand Laid Turnout"
msgstr ""
-#: ../bin/chndldto.c:358
+#: ../bin/chndldto.c:381
msgid "HandLaidTurnout"
msgstr ""
-#: ../bin/cjoin.c:166
+#: ../bin/cjoin.c:170
#, c-format
msgid "Curved Track: Radius=%s Length=%s"
msgstr "Изогнутый трек: РадиуÑ=%s Длина=%s"
-#: ../bin/cjoin.c:252
+#: ../bin/cjoin.c:261
#, c-format
msgid "Curved Track: Radius=%s Length=%s Angle=%0.3f"
msgstr "Изогнутый трек: РадиуÑ=%s Длина=%s Угол=%0.3f"
-#: ../bin/cjoin.c:348
+#: ../bin/cjoin.c:363
#, c-format
msgid "Track (%d) is too short for transition-curve by %0.3f"
msgstr ""
-#: ../bin/cjoin.c:366
+#: ../bin/cjoin.c:381
#, c-format
msgid "Connecting track is too short by %0.3f"
msgstr ""
-#: ../bin/cjoin.c:410
+#: ../bin/cjoin.c:431
msgid "Click on an unselected End-Point"
msgstr ""
-#: ../bin/cjoin.c:411
+#: ../bin/cjoin.c:432
msgid "Click on a selected End-Point"
msgstr ""
-#: ../bin/cjoin.c:417
+#: ../bin/cjoin.c:438
msgid "unselected"
msgstr "невыбранные"
-#: ../bin/cjoin.c:417 ../bin/cprint.c:161
+#: ../bin/cjoin.c:438 ../bin/cprint.c:162
msgid "selected"
msgstr "выбранные"
-#: ../bin/cjoin.c:474
+#: ../bin/cjoin.c:499
msgid "Left click - Select first draw object end"
msgstr ""
-#: ../bin/cjoin.c:513 ../bin/cjoin.c:539
+#: ../bin/cjoin.c:539 ../bin/cjoin.c:576
msgid "Not a line - Try again"
msgstr ""
-#: ../bin/cjoin.c:535
+#: ../bin/cjoin.c:572
msgid "Left click - Select second object end"
msgstr ""
-#: ../bin/cjoin.c:547
+#: ../bin/cjoin.c:584
msgid "Same draw object and same endpoint - Try again"
msgstr ""
-#: ../bin/cjoin.c:581
+#: ../bin/cjoin.c:632
#, fuzzy
msgid "Create PolyLine"
msgstr "Создать линии"
-#: ../bin/cjoin.c:654 ../bin/cjoin.c:897
-#, fuzzy
-msgid "Desired Radius"
-msgstr "Ð Ð°Ð´Ð¸ÑƒÑ Ð¾ÐºÑ€ÑƒÐ¶Ð½Ð¾Ñти"
-
-#: ../bin/cjoin.c:823
+#: ../bin/cjoin.c:913
msgid "Left click - join with track"
msgstr "Левый клик - Ñоединить Ñ Ñ‚Ñ€ÐµÐºÐ¾Ð¼"
-#: ../bin/cjoin.c:825
+#: ../bin/cjoin.c:916
msgid "Left click - join with track, Shift Left click - move to join"
msgstr ""
-#: ../bin/cjoin.c:892 ../bin/cjoin.c:1302 ../bin/cjoin.c:1309
+#: ../bin/cjoin.c:1011 ../bin/cjoin.c:1469 ../bin/cjoin.c:1476
msgid "Select 2nd track"
msgstr "Выберите второй трек"
-#: ../bin/cjoin.c:1112
+#: ../bin/cjoin.c:1266
msgid "Beyond end of 2nd track"
msgstr ""
-#: ../bin/cjoin.c:1147
+#: ../bin/cjoin.c:1302
msgid "Beyond end of 1st track"
msgstr ""
-#: ../bin/cjoin.c:1169
+#: ../bin/cjoin.c:1325
msgid "First Track Type not supported for non-Cornu Join"
msgstr ""
-#: ../bin/cjoin.c:1176
+#: ../bin/cjoin.c:1333
msgid "First "
msgstr "Первый "
-#: ../bin/cjoin.c:1201
+#: ../bin/cjoin.c:1359
msgid "Second Track Type not supported for non-Cornu Join"
msgstr ""
-#: ../bin/cjoin.c:1208
+#: ../bin/cjoin.c:1366
msgid "Second "
msgstr "Второй "
-#: ../bin/cjoin.c:1222 ../bin/track.c:2281 ../bin/track.c:2317
-#: ../bin/track.c:2383
+#: ../bin/cjoin.c:1380 ../bin/track.c:2395 ../bin/track.c:2434
+#: ../bin/track.c:2509
msgid "Connecting "
msgstr "Соединение "
-#: ../bin/cjoin.c:1312
+#: ../bin/cjoin.c:1479
msgid "Join Tracks"
msgstr "Соединить треки"
-#: ../bin/cjoin.c:1394
+#: ../bin/cjoin.c:1575
msgid "Join"
msgstr "ПриÑоединить"
-#: ../bin/cjoin.c:1395
+#: ../bin/cjoin.c:1576
#, fuzzy
msgid "Join Track"
msgstr "Соединить треки"
-#: ../bin/cjoin.c:1396
+#: ../bin/cjoin.c:1579
#, fuzzy
msgid "Join Lines"
msgstr "ОкружноÑти"
-#: ../bin/cmisc.c:59
+#: ../bin/cmisc.c:55
msgid "Middle"
msgstr "Середина"
-#: ../bin/cmisc.c:59 ../bin/macro.c:98
+#: ../bin/cmisc.c:55 ../bin/macro.c:70
msgid "End"
msgstr "Конец"
-#: ../bin/cmisc.c:242 ../bin/cmodify.c:348 ../bin/compound.c:664
-#: ../bin/ctrain.c:218
-msgid "Change Track"
-msgstr "Изменить трек"
+#: ../bin/cmisc.c:140 ../bin/tcurve.c:409 ../bin/tease.c:535
+#, fuzzy
+msgid "Lock"
+msgstr "Поезд?"
-#: ../bin/cmisc.c:572
-msgid "Select track to describe"
+#: ../bin/cmisc.c:593
+#, fuzzy
+msgid "Select track to describe +Shift for Frozen"
msgstr "Выберите трек Ð´Ð»Ñ Ð¾Ð¿Ð¸ÑаниÑ"
-#: ../bin/cmisc.c:653 ../bin/doption.c:235
+#: ../bin/cmisc.c:691 ../bin/doption.c:245
msgid "Properties"
msgstr "СвойÑтва"
-#: ../bin/cmisc2.c:52
-msgid "Bridge"
-msgstr "МоÑÑ‚"
-
-#: ../bin/cmodify.c:198 ../bin/cmodify.c:466
-msgid "Modify Track"
-msgstr "Изменить трек"
-
-#: ../bin/cmodify.c:262
+#: ../bin/cmodify.c:276
msgid ""
"Select a track to modify, Left-Click change length, Right-Click to add "
"flextrack"
msgstr ""
-#: ../bin/cmodify.c:507
+#: ../bin/cmodify.c:520
+msgid "Modify Track"
+msgstr "Изменить трек"
+
+#: ../bin/cmodify.c:564
#, fuzzy
msgid "Drag to add flex track"
msgstr "ТÑните, чтобы Ñоздавать новые Ñегменты трека"
-#: ../bin/cmodify.c:512
+#: ../bin/cmodify.c:569
#, fuzzy
msgid "No track to extend"
msgstr "%d треков перемещено"
-#: ../bin/cmodify.c:517
+#: ../bin/cmodify.c:574
#, fuzzy
msgid "No track selected"
msgstr "выбранные"
-#: ../bin/cmodify.c:650
+#: ../bin/cmodify.c:724
#, c-format
msgid "Curve Track: Radius=%s Length=%s Angle=%0.3f"
msgstr "Кривой трек: РадиуÑ=%s Длина=%s Угол=%0.3f"
-#: ../bin/cmodify.c:665
+#: ../bin/cmodify.c:740
msgid "Extend Track"
msgstr ""
-#: ../bin/cmodify.c:794
+#: ../bin/cmodify.c:882
msgid "Modify"
msgstr "Изменить"
-#: ../bin/cmodify.c:801 ../bin/cselect.c:3383 ../bin/cselect.c:3399
-#: ../bin/misc.c:2240 ../bin/misc.c:2242
+#: ../bin/cmodify.c:895 ../bin/cselect.c:3664 ../bin/cselect.c:3686
+#: ../bin/menu.c:937 ../bin/menu.c:939
msgid "Zoom In"
msgstr "Приблизить"
-#: ../bin/cmodify.c:802 ../bin/cselect.c:3387 ../bin/cselect.c:3400
-#: ../bin/misc.c:2244 ../bin/misc.c:2246
+#: ../bin/cmodify.c:896 ../bin/cselect.c:3669 ../bin/cselect.c:3687
+#: ../bin/menu.c:941 ../bin/menu.c:943
msgid "Zoom Out"
msgstr "Отдалить"
-#: ../bin/cmodify.c:803
+#: ../bin/cmodify.c:897
msgid "Pan center - 'c'"
msgstr ""
-#: ../bin/cnote.c:69 ../bin/textnoteui.c:48 ../bin/trknote.c:60
+#: ../bin/cnote.c:67 ../bin/textnoteui.c:47 ../bin/trknote.c:52
msgid "Note"
msgstr "Заметка"
-#: ../bin/cnote.c:75
+#: ../bin/cnote.c:73
msgid "Replace this text with your layout notes"
msgstr "Замените Ñтот текÑÑ‚ вашей заметкой к рабочей облаÑти"
-#: ../bin/compound.c:544 ../bin/compound.c:549 ../bin/compound.c:554
-#: ../bin/compound.c:559 ../bin/tbezier.c:248 ../bin/tbezier.c:255
-#: ../bin/tcornu.c:297 ../bin/tcornu.c:302
+#: ../bin/command.c:388 ../bin/command.c:395
+msgid ""
+"Cancelling the current command will undo the changes\n"
+"you are currently making. Do you want to do the update instead?"
+msgstr ""
+
+#: ../bin/command.c:390 ../bin/command.c:458 ../bin/cprint.c:1445
+#: ../bin/dbitmap.c:428 ../bin/filenoteui.c:157 ../bin/param.c:3013
+#: ../bin/svgoutput.c:460
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:675
+msgid "Cancel"
+msgstr "Отмена"
+
+#: ../bin/command.c:456
+msgid ""
+"Cancelling the current command will undo the changes\n"
+"you are currently making. Do you want to update?"
+msgstr ""
+
+#: ../bin/compound.c:722 ../bin/compound.c:727 ../bin/compound.c:732
+#: ../bin/compound.c:737 ../bin/tbezier.c:286 ../bin/tbezier.c:293
+#: ../bin/tcornu.c:322 ../bin/tcornu.c:327
msgid "Center X,Y"
msgstr ""
-#: ../bin/compound.c:546 ../bin/tbezier.c:249 ../bin/tcornu.c:298
+#: ../bin/compound.c:724 ../bin/tbezier.c:287 ../bin/tcornu.c:323
msgid "Z1"
msgstr ""
-#: ../bin/compound.c:551 ../bin/tbezier.c:256 ../bin/tcornu.c:303
+#: ../bin/compound.c:729 ../bin/tbezier.c:294 ../bin/tcornu.c:328
msgid "Z2"
msgstr ""
-#: ../bin/compound.c:552
+#: ../bin/compound.c:730
msgid "End Pt 3: X,Y"
msgstr ""
-#: ../bin/compound.c:556
+#: ../bin/compound.c:734
msgid "Z3"
msgstr ""
-#: ../bin/compound.c:557
+#: ../bin/compound.c:735
msgid "End Pt 4: X,Y"
msgstr ""
-#: ../bin/compound.c:561
+#: ../bin/compound.c:739
msgid "Z4"
msgstr ""
-#: ../bin/compound.c:565
-msgid "Pivot"
-msgstr "Центр"
+#: ../bin/compound.c:741 ../bin/tease.c:528
+msgid "Origin: X,Y"
+msgstr "Ðачало: X,Y"
-#: ../bin/compound.c:568 ../bin/cstruct.c:69 ../bin/cturnout.c:83
-#: ../bin/dcar.c:4366 ../bin/dcar.c:4371 ../bin/dcustmgm.c:60
-#: ../bin/doption.c:137 ../bin/doption.c:138
+#: ../bin/compound.c:746 ../bin/cstruct.c:65 ../bin/cturnout.c:84
+#: ../bin/dcar.c:4694 ../bin/dcar.c:4700 ../bin/dcustmgm.c:46
+#: ../bin/doption.c:99 ../bin/doption.c:100
msgid "Part No"
msgstr "Ðртикул"
-#: ../bin/compound.c:569
+#: ../bin/compound.c:747
#, fuzzy
msgid "LineType"
msgstr "ПрÑмаÑ"
-#: ../bin/compound.c:830 ../bin/cstruct.c:937 ../bin/cstruct.c:1128
+#: ../bin/compound.c:1025 ../bin/cstruct.c:1030 ../bin/cstruct.c:1246
msgid "Structure"
msgstr "Структура"
-#: ../bin/compound.c:832 ../bin/cswitchmotor.c:228 ../bin/cturnout.c:1069
-#: ../bin/cturnout.c:2927
+#: ../bin/compound.c:1027 ../bin/cswitchmotor.c:232 ../bin/cturnout.c:988
msgid "Turnout"
msgstr "Стрелка"
-#: ../bin/compound.c:832
+#: ../bin/compound.c:1027
msgid "Sectional Track"
msgstr "СоÑтавной трек"
-#: ../bin/compound.c:836
+#: ../bin/compound.c:1031
#, c-format
msgid "%s (%d) Layer= %d %s"
msgstr ""
-#: ../bin/cparalle.c:52 ../bin/cparalle.c:100 ../bin/cparalle.c:140
-#: ../bin/ctodesgn.c:543 ../bin/ctodesgn.c:563 ../bin/ctodesgn.c:583
-#: ../bin/tcurve.c:371
+#: ../bin/cparalle.c:49 ../bin/cparalle.c:98 ../bin/cparalle.c:140
+#: ../bin/ctodesgn.c:600 ../bin/ctodesgn.c:626 ../bin/ctodesgn.c:651
+#: ../bin/tcurve.c:403
msgid "Separation"
msgstr ""
-#: ../bin/cparalle.c:55 ../bin/cparalle.c:101
+#: ../bin/cparalle.c:52 ../bin/cparalle.c:99
#, fuzzy
msgid "Radius Factor"
msgstr "Ð Ð°Ð´Ð¸ÑƒÑ "
@@ -2062,25 +2109,26 @@ msgstr "Ð Ð°Ð´Ð¸ÑƒÑ "
msgid "Radius factor"
msgstr "Ð Ð°Ð´Ð¸ÑƒÑ "
-#: ../bin/cparalle.c:154
+#: ../bin/cparalle.c:155
msgid " Track/Line doesn't support parallel"
msgstr ""
-#: ../bin/cparalle.c:228
+#: ../bin/cparalle.c:230
msgid "Create Parallel Track"
msgstr "Добавить параллельный трек"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:354
-#: ../bin/cparalle.c:298 ../../../../build/work/app/i18n/custmsg.h:1233
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:470
+#: ../bin/cparalle.c:299
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1252
msgid "Parallel"
msgstr "Параллель"
-#: ../bin/cparalle.c:299
+#: ../bin/cparalle.c:300
#, fuzzy
msgid "Parallel Track"
msgstr "Добавить параллельный трек"
-#: ../bin/cparalle.c:300
+#: ../bin/cparalle.c:303
#, fuzzy
msgid "Parallel Line"
msgstr "Параллель"
@@ -2093,14 +2141,14 @@ msgstr "Портретный"
msgid "Landscape"
msgstr "Ландшафтный"
-#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:94 ../bin/cswitchmotor.c:113
-#: ../bin/cswitchmotor.c:225 ../bin/dbench.c:78 ../bin/dease.c:67
-#: ../bin/doption.c:131 ../bin/doption.c:133 ../bin/macro.c:1408
+#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:90 ../bin/cswitchmotor.c:109
+#: ../bin/cswitchmotor.c:229 ../bin/dbench.c:75 ../bin/dease.c:68
+#: ../bin/doption.c:93 ../bin/doption.c:95 ../bin/macro.c:1416
msgid "Normal"
msgstr "Ðормальные"
-#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:95 ../bin/cswitchmotor.c:114
-#: ../bin/cswitchmotor.c:226 ../bin/ctrain.c:941 ../bin/ctrain.c:1250
+#: ../bin/cprint.c:111 ../bin/cswitchmotor.c:91 ../bin/cswitchmotor.c:110
+#: ../bin/cswitchmotor.c:230 ../bin/ctrain.c:1011 ../bin/ctrain.c:1324
msgid "Reverse"
msgstr "Обратный"
@@ -2121,14 +2169,18 @@ msgstr "Ðомер запчаÑти"
msgid "Ignore Page Margins"
msgstr "Игнорировать Ð¿Ð¾Ð»Ñ Ñтраницы"
-#: ../bin/cprint.c:116 ../bin/csnap.c:705 ../bin/doption.c:530
+#: ../bin/cprint.c:116 ../bin/csnap.c:733 ../bin/doption.c:559
msgid "Snap Grid"
msgstr "ÐаÑтройки Ñетки"
#: ../bin/cprint.c:117
#, fuzzy
-msgid "Rulers"
-msgstr "Линейка"
+msgid "Layout Edge"
+msgstr "Проект"
+
+#: ../bin/cprint.c:117
+msgid "Every Page"
+msgstr ""
#: ../bin/cprint.c:118
#, fuzzy
@@ -2139,213 +2191,211 @@ msgstr "Ширина полотна"
msgid "Centerline below Scale 1:1"
msgstr ""
-#: ../bin/cprint.c:127
+#: ../bin/cprint.c:128
msgid "Print Scale"
msgstr "Печатать маÑштаб"
-#: ../bin/cprint.c:128
+#: ../bin/cprint.c:129
msgid "Page Width"
msgstr "Ширина Ñтраницы"
-#: ../bin/cprint.c:129
+#: ../bin/cprint.c:130
msgid "Max"
msgstr "МакÑ."
-#: ../bin/cprint.c:131
+#: ../bin/cprint.c:132
msgid "Snap Shot"
msgstr ""
-#: ../bin/cprint.c:132
+#: ../bin/cprint.c:133
msgid "Page Format"
msgstr ""
-#: ../bin/cprint.c:133
+#: ../bin/cprint.c:134
msgid "Print Order"
msgstr ""
-#: ../bin/cprint.c:134
+#: ../bin/cprint.c:135
#, fuzzy
msgid "Print "
msgstr "Печать"
-#: ../bin/cprint.c:149
+#: ../bin/cprint.c:144
+#, fuzzy
+msgid "Rulers:"
+msgstr "Линейка"
+
+#: ../bin/cprint.c:150
#, fuzzy
msgid " Width"
msgstr "Ширина"
-#: ../bin/cprint.c:151
+#: ../bin/cprint.c:152
#, fuzzy
msgid "Margins"
msgstr "Главный"
-#: ../bin/cprint.c:152 ../bin/cturntbl.c:250
+#: ../bin/cprint.c:153 ../bin/cturntbl.c:274
msgid "Origin: X"
msgstr "Координата: X"
-#: ../bin/cprint.c:153 ../bin/csnap.c:535
+#: ../bin/cprint.c:154 ../bin/csnap.c:549
msgid "Y"
msgstr "Y"
-#: ../bin/cprint.c:154 ../bin/cprint.c:620 ../bin/cprofile.c:715
-#: ../bin/dcar.c:2214
+#: ../bin/cprint.c:155 ../bin/cprint.c:631 ../bin/cprofile.c:706
+#: ../bin/dcar.c:2325
msgid "Reset"
msgstr "СброÑить"
-#: ../bin/cprint.c:156
+#: ../bin/cprint.c:157
msgid "Setup"
msgstr "УÑтановить"
-#: ../bin/cprint.c:157 ../bin/cselect.c:3391 ../bin/misc.c:2271
+#: ../bin/cprint.c:158 ../bin/cselect.c:3675 ../bin/menu.c:974
msgid "Select All"
msgstr "Выбрать вÑÑ‘"
-#: ../bin/cprint.c:158 ../bin/cprofile.c:717 ../bin/layout.c:481
-#: ../bin/misc.c:769
+#: ../bin/cprint.c:159 ../bin/cprofile.c:708 ../bin/layout.c:671
+#: ../bin/misc.c:725
msgid "Clear"
msgstr "ОчиÑтить"
-#: ../bin/cprint.c:160
+#: ../bin/cprint.c:161
msgid "0 pages"
msgstr "0 Ñтраниц"
-#: ../bin/cprint.c:187
+#: ../bin/cprint.c:190
#, fuzzy, c-format
msgid "%d page"
msgstr "%d Ñтраниц"
-#: ../bin/cprint.c:187
+#: ../bin/cprint.c:190
#, c-format
msgid "%d pages"
msgstr "%d Ñтраниц"
-#: ../bin/cprint.c:408
+#: ../bin/cprint.c:419
#, c-format
msgid "PrintScale 1:%ld Room %s x %s Model Scale %s File %s"
msgstr "МаÑштаб 1:%ld Комната %s x %s МаÑштаб модели %s Файл %s"
-#: ../bin/cprint.c:716 ../bin/dbitmap.c:208 ../bin/filenoteui.c:158
-#: ../bin/misc.c:1278 ../bin/misc.c:1356 ../bin/param.c:2622
-#: ../wlib/gtklib/browserhelp.c:94
-#: ../../../../build/work/app/bin/bllnhlp.c:589
-msgid "Cancel"
-msgstr "Отмена"
-
-#: ../bin/cprint.c:723
+#: ../bin/cprint.c:746
#, fuzzy
msgid "Print Margins"
msgstr "Печатать ÑпиÑок чаÑтей"
-#: ../bin/cprint.c:1367 ../bin/cprofile.c:719 ../bin/ctodesgn.c:2869
-#: ../bin/denum.c:55
+#: ../bin/cprint.c:1440 ../bin/cprofile.c:710 ../bin/ctodesgn.c:3147
+#: ../bin/denum.c:51
msgid "Print"
msgstr "Печать"
-#: ../bin/cprint.c:1388
+#: ../bin/cprint.c:1472
msgid "Select pages to print, or drag to move print grid"
msgstr "Выберите Ñтраницы Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ или перетащите, чтобы передвинуть Ñетку"
-#: ../bin/cprint.c:1486
+#: ../bin/cprint.c:1574
msgid "Print..."
msgstr "Печать..."
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:350
-#: ../bin/cprofile.c:614 ../bin/cprofile.c:1448 ../bin/cprofile.c:1528
-#: ../../../../build/work/app/bin/bllnhlp.c:125
-#: ../../../../build/work/app/i18n/custmsg.h:1225
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:466
+#: ../bin/cprofile.c:608 ../bin/cprofile.c:1442 ../bin/cprofile.c:1522
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1244
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:127
msgid "Profile"
msgstr "Профиль"
-#: ../bin/cprofile.c:632
+#: ../bin/cprofile.c:626
#, c-format
msgid "%s Profile: %s"
msgstr "%s Профиль: %s"
-#: ../bin/cprofile.c:713 ../bin/misc.c:1937
+#: ../bin/cprofile.c:704 ../bin/menu.c:225
msgid "Change"
msgstr "Изменить"
-#: ../bin/cprofile.c:757 ../bin/cprofile.c:767
+#: ../bin/cprofile.c:751 ../bin/cprofile.c:761
#, c-format
msgid "Elev = %0.1f"
msgstr "Ð’Ñ‹Ñота = %0.1f"
-#: ../bin/cprofile.c:769
+#: ../bin/cprofile.c:763
#, c-format
msgid "Elev=%0.2f %0.1f%%"
msgstr "Ð’Ñ‹Ñота=%0.2f %0.1f%%"
-#: ../bin/cprofile.c:774
+#: ../bin/cprofile.c:768
#, c-format
msgid "%0.1f%% Elev = %0.2f"
msgstr "%0.1f%% Ð’Ñ‹Ñота = %0.2f"
-#: ../bin/cprofile.c:779
+#: ../bin/cprofile.c:773
#, c-format
msgid "%0.1f%% Elev = %0.2f %0.1f%%"
msgstr "%0.1f%% Ð’Ñ‹Ñота = %0.2f %0.1f%%"
-#: ../bin/cprofile.c:794 ../bin/cprofile.c:864 ../bin/cprofile.c:1400
+#: ../bin/cprofile.c:788 ../bin/cprofile.c:858 ../bin/cprofile.c:1394
msgid "Profile Command"
msgstr ""
-#: ../bin/cprofile.c:803 ../bin/cprofile.c:1454
+#: ../bin/cprofile.c:797 ../bin/cprofile.c:1448
msgid "Drag to change Elevation"
msgstr "ТÑни, чтобы изменить выÑоту"
-#: ../bin/cprofile.c:905
+#: ../bin/cprofile.c:899
msgid "Select a Defined Elevation to start Profile"
msgstr "Выберите трек Ð´Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð¹ выÑоты"
-#: ../bin/cprofile.c:907
+#: ../bin/cprofile.c:901
msgid "Select a Defined Elevation to extend Profile"
msgstr "Выберите трек Ð´Ð»Ñ ÐºÐ¾Ð½ÐµÑ‡Ð½Ð¾Ð¹ выÑоты"
-#: ../bin/cprofile.c:1462
+#: ../bin/cprofile.c:1456
msgid "Select a Defined Elevation to start profile"
msgstr "Выберите трек Ð´Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð¹ выÑоты"
-#: ../bin/cprofile.c:1532
+#: ../bin/cprofile.c:1527
msgid "Define"
msgstr ""
-#: ../bin/cpull.c:439 ../bin/cpull.c:595
+#: ../bin/cpull.c:454 ../bin/cpull.c:616
#, c-format
msgid "%d tracks moved"
msgstr "%d треков перемещено"
-#: ../bin/cpull.c:485
+#: ../bin/cpull.c:503
msgid "Pull Tracks"
msgstr "ТÑните треки"
-#: ../bin/cpull.c:559
+#: ../bin/cpull.c:579
msgid "Tighten Tracks"
msgstr ""
-#: ../bin/cpull.c:646
+#: ../bin/cpull.c:670
msgid "Connect Multiple Tracks - Select multiple tracks to join first"
msgstr ""
-#: ../bin/cpull.c:649
+#: ../bin/cpull.c:673
msgid "Try to Connect all Selected Tracks?"
msgstr ""
-#: ../bin/cpull.c:655
+#: ../bin/cpull.c:680
msgid "ReConnect"
msgstr ""
-#: ../bin/cpull.c:691
+#: ../bin/cpull.c:720
#, c-format
msgid ""
"Round 1 %d and Round 2 %d tracks connected, %d close pairs of end Points "
"were not connected"
msgstr ""
-#: ../bin/cpull.c:716
+#: ../bin/cpull.c:747
#, fuzzy
msgid "Select first endpoint or turntable to connect, +Shift to tighten"
msgstr "Выберите первый конец Ð´Ð»Ñ ÑоединениÑ"
-#: ../bin/cpull.c:718
+#: ../bin/cpull.c:750
#, fuzzy
msgid ""
"Select first endpoint to connect, or Right-Click for connecting selected "
@@ -2354,400 +2404,412 @@ msgstr ""
"Выберите первый конец Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ щёлкните правой кнопкой мыши Ð´Ð»Ñ "
"ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ñ… треков"
-#: ../bin/cpull.c:777
+#: ../bin/cpull.c:814
#, fuzzy
msgid "Select second endpoint or turntable to connect"
msgstr "Выберите второй конец Ð´Ð»Ñ ÑоединениÑ"
-#: ../bin/cpull.c:784
+#: ../bin/cpull.c:821
msgid "Same Track! - please select another"
msgstr ""
-#: ../bin/cpull.c:872
+#: ../bin/cpull.c:918
msgid "Connect Two Tracks"
msgstr "Соединить два трека"
-#: ../bin/cpull.c:874
+#: ../bin/cpull.c:924
msgid "Connect All Selected - 'S'"
msgstr ""
-#: ../bin/cruler.c:302
+#: ../bin/cruler.c:390
#, fuzzy
msgid "Measurement"
msgstr "УпрощениÑ"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:361
-#: ../bin/cruler.c:303 ../../../../build/work/app/i18n/custmsg.h:1247
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:477
+#: ../bin/cruler.c:391 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1266
msgid "Ruler"
msgstr "Линейка"
-#: ../bin/cruler.c:304
+#: ../bin/cruler.c:394
#, fuzzy
msgid "Protractor"
msgstr "Портретный"
-#: ../bin/cselect.c:632
+#: ../bin/cselect.c:688
msgid "Change Track Width"
msgstr "Изменить ширину трека"
-#: ../bin/cselect.c:656
+#: ../bin/cselect.c:714
#, fuzzy
msgid "Change Line Type"
msgstr "Изменить Ñлои"
-#: ../bin/cselect.c:685
+#: ../bin/cselect.c:739
+msgid "Delete only works in Select Mode"
+msgstr ""
+
+#: ../bin/cselect.c:755
msgid "Delete Tracks"
msgstr "Удалить треки"
-#: ../bin/cselect.c:763
+#: ../bin/cselect.c:862
msgid "Hide Tracks (Tunnel)"
msgstr "СпрÑтать треки (тунель)"
-#: ../bin/cselect.c:781
+#: ../bin/cselect.c:882
#, fuzzy
msgid "Bridge Tracks "
msgstr "Трек Безье"
-#: ../bin/cselect.c:798
+#: ../bin/cselect.c:900
+#, fuzzy
+msgid "Roadbed Tracks "
+msgstr "Вращать треки"
+
+#: ../bin/cselect.c:918
#, fuzzy
msgid "Ties Tracks "
msgstr "Тонкие треки"
-#: ../bin/cselect.c:835 ../bin/misc.c:2391
+#: ../bin/cselect.c:956 ../bin/menu.c:1118
msgid "Move To Current Layer"
msgstr "ПеремеÑтить на текущий Ñлой"
-#: ../bin/cselect.c:875 ../bin/misc.c:2543
+#: ../bin/cselect.c:1010 ../bin/menu.c:1303
msgid "Clear Elevations"
msgstr "ОчиÑтить выÑоты"
-#: ../bin/cselect.c:919
+#: ../bin/cselect.c:1056
msgid "Add Elevations"
msgstr "Добавить выÑоты"
-#: ../bin/cselect.c:934
+#: ../bin/cselect.c:1072
msgid "Refresh Compound"
msgstr ""
-#: ../bin/cselect.c:966 ../bin/dcar.c:4366 ../bin/dcar.c:4371
-#: ../bin/dcustmgm.c:60 ../bin/layout.c:472
-msgid "Scale"
-msgstr "МаÑштаб"
-
-#: ../bin/cselect.c:966 ../bin/cselect.c:991
-msgid "Ratio"
-msgstr ""
-
-#: ../bin/cselect.c:975
-msgid "Do not resize track"
-msgstr "Ðе изменÑÑ‚ÑŒ размер трека"
-
-#: ../bin/cselect.c:979
-msgid "Rescale by:"
-msgstr ""
-
-#: ../bin/cselect.c:981
-msgid "From:"
-msgstr "От:"
-
-#: ../bin/cselect.c:985
-msgid "To: "
-msgstr ""
-
-#: ../bin/cselect.c:1052
-msgid "Rescale Tracks"
-msgstr "ПеремаÑштабировать треки"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:357
-#: ../bin/cselect.c:1195 ../../../../build/work/app/i18n/custmsg.h:1239
-msgid "Rescale"
-msgstr "ПеремаÑштабировать"
-
-#: ../bin/cselect.c:1524
+#: ../bin/cselect.c:1471
msgid "Cornu too tight - it was deleted"
msgstr ""
-#: ../bin/cselect.c:1580
+#: ../bin/cselect.c:1526
msgid "Move To Join"
msgstr ""
-#: ../bin/cselect.c:1773
+#: ../bin/cselect.c:1735
msgid "Drag to move selected tracks - Shift+Ctrl+Arrow micro-steps the move"
msgstr ""
-#: ../bin/cselect.c:1794 ../bin/cselect.c:1915 ../bin/cselect.c:2285
+#: ../bin/cselect.c:1756 ../bin/cselect.c:1890 ../bin/cselect.c:2295
msgid "Move Tracks"
msgstr "ПеремеÑтить треки"
-#: ../bin/cselect.c:1963
+#: ../bin/cselect.c:1939
#, fuzzy
msgid "Align: Click on a selected object to be aligned"
msgstr "Скопировать выбранные объекты в буфер обмена"
-#: ../bin/cselect.c:2001
+#: ../bin/cselect.c:1978
msgid "Drag to rotate selected tracks, Shift+RightClick for QuickRotate Menu"
msgstr ""
-#: ../bin/cselect.c:2017 ../bin/cselect.c:2299
+#: ../bin/cselect.c:1994 ../bin/cselect.c:2370
msgid "Rotate Tracks"
msgstr "Вращать треки"
-#: ../bin/cselect.c:2031
+#: ../bin/cselect.c:2009
msgid "Center of Rotation snapped to Turntable center"
msgstr ""
-#: ../bin/cselect.c:2073 ../bin/cselect.c:2104
+#: ../bin/cselect.c:2055 ../bin/cselect.c:2090
#, c-format
msgid "Angle %0.3f"
msgstr ""
-#: ../bin/cselect.c:2160
+#: ../bin/cselect.c:2154
#, fuzzy, c-format
msgid "Angle %0.3f #%ld"
msgstr "Угол = %0.3f (%s)"
-#: ../bin/cselect.c:2162
+#: ../bin/cselect.c:2156
#, fuzzy, c-format
msgid "Angle %0.3f %s"
msgstr "Угол = %0.3f (%s)"
-#: ../bin/cselect.c:2167
+#: ../bin/cselect.c:2162
msgid "Origin Set. Drag away to set start angle"
msgstr ""
-#: ../bin/cselect.c:2181
+#: ../bin/cselect.c:2177
msgid "Align: Click on the 2nd unselected object"
msgstr ""
-#: ../bin/cselect.c:2311
-msgid "Toggle Label"
+#: ../bin/cselect.c:2307
+msgid "In module layer:"
msgstr ""
-#: ../bin/cselect.c:2430 ../bin/cselect.c:2469
-msgid "Select and drag a description"
-msgstr "Выберите и перемеÑтите подпиÑÑŒ"
+#: ../bin/cselect.c:2315
+#, fuzzy
+msgid "Frozen Layer:"
+msgstr "Заморожен"
-#: ../bin/cselect.c:2455
+#: ../bin/cselect.c:2319
+#, fuzzy
+msgid "Not found"
+msgstr "ЧиÑло точек"
+
+#: ../bin/cselect.c:2356
+msgid "Multiple Selected"
+msgstr ""
+
+#: ../bin/cselect.c:2383
+msgid "Toggle Detail"
+msgstr ""
+
+#: ../bin/cselect.c:2399
+msgid "Toggle Label"
+msgstr ""
+
+#: ../bin/cselect.c:2572
#, fuzzy
msgid "Elevation description"
msgstr "ОпиÑание ЛеваÑ"
-#: ../bin/cselect.c:2458
-msgid "Hidden description - 's' to Show"
-msgstr ""
+#: ../bin/cselect.c:2579
+#, fuzzy
+msgid "Hidden description - 's' to Show, 'd' Details"
+msgstr "Показать подпиÑÑŒ"
-#: ../bin/cselect.c:2462
+#: ../bin/cselect.c:2582
#, fuzzy
msgid "Shown description - 'h' to Hide"
msgstr "Показать подпиÑÑŒ"
-#: ../bin/cselect.c:2483
+#: ../bin/cselect.c:2590
+msgid "Select and drag a description"
+msgstr "Выберите и перемеÑтите подпиÑÑŒ"
+
+#: ../bin/cselect.c:2632
msgid "Hidden Label - Drag to reveal"
msgstr ""
-#: ../bin/cselect.c:2485
+#: ../bin/cselect.c:2634
#, fuzzy
msgid "Drag label"
msgstr "Тащите, чтобы размеÑтить"
-#: ../bin/cselect.c:2487
+#: ../bin/cselect.c:2644
msgid "Move Label"
msgstr "ПеремеÑтить подпиÑÑŒ"
-#: ../bin/cselect.c:2524
+#: ../bin/cselect.c:2683
msgid "To Hide, use Context Menu"
msgstr ""
-#: ../bin/cselect.c:2540 ../bin/cselect.c:3417
+#: ../bin/cselect.c:2717 ../bin/cselect.c:3715
#, fuzzy
msgid "Show/Hide Description"
msgstr "Показать подпиÑÑŒ"
-#: ../bin/cselect.c:2620
+#: ../bin/cselect.c:2720
+#, fuzzy
+msgid "Toggle Detailed Description"
+msgstr "ПеремеÑтить опиÑание"
+
+#: ../bin/cselect.c:2804
msgid "Drag to mark mirror line"
msgstr "Тащите, чтобы отметить оÑÑŒ зеркала"
-#: ../bin/cselect.c:2631
+#: ../bin/cselect.c:2815
#, c-format
msgid "Angle %0.2f"
msgstr "Угол %0.2f"
-#: ../bin/cselect.c:2634
+#: ../bin/cselect.c:2818
msgid "Flip Tracks"
msgstr "Отзеркалить треки"
-#: ../bin/cselect.c:2974
+#: ../bin/cselect.c:3014 ../bin/cselect.c:3215
+msgid "Track is in Frozen Layer"
+msgstr ""
+
+#: ../bin/cselect.c:3188
#, fuzzy
msgid "Select track"
msgstr "Выберите треки"
-#: ../bin/cselect.c:3001
-msgid "Track is in Frozen Layer"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:323
-#: ../bin/cselect.c:3357 ../bin/dcar.c:1672 ../bin/doption.c:235
-#: ../../../../build/work/app/i18n/custmsg.h:1171
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:439
+#: ../bin/cselect.c:3627 ../bin/dcar.c:1765 ../bin/doption.c:245
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1190
msgid "Select"
msgstr "Выбрать"
-#: ../bin/cselect.c:3376 ../bin/cselect.c:3396 ../bin/misc.c:2235
+#: ../bin/cselect.c:3654 ../bin/cselect.c:3683 ../bin/menu.c:932
msgid "Undo"
msgstr "Отменить"
-#: ../bin/cselect.c:3377 ../bin/cselect.c:3397 ../bin/misc.c:2237
+#: ../bin/cselect.c:3655 ../bin/cselect.c:3684 ../bin/menu.c:934
msgid "Redo"
msgstr "Повторить"
-#: ../bin/cselect.c:3384 ../bin/draw.c:3119
+#: ../bin/cselect.c:3665 ../bin/cselect.c:3688 ../bin/draw.c:3500
msgid "Zoom to extents - 'e'"
msgstr ""
-#: ../bin/cselect.c:3385 ../bin/draw.c:3130 ../bin/misc.c:2419
+#: ../bin/cselect.c:3667 ../bin/draw.c:3522 ../bin/menu.c:1163
msgid "&Zoom"
msgstr "МаÑштаб"
-#: ../bin/cselect.c:3388 ../bin/draw.c:3129
+#: ../bin/cselect.c:3670 ../bin/draw.c:3520
msgid "Pan to Origin - 'o'/'0'"
msgstr ""
-#: ../bin/cselect.c:3389 ../bin/cselect.c:3401
+#: ../bin/cselect.c:3672 ../bin/cselect.c:3692
msgid "Pan Center Here - 'c'"
msgstr ""
-#: ../bin/cselect.c:3392 ../bin/misc.c:2274 ../bin/misc.c:2397
+#: ../bin/cselect.c:3677 ../bin/menu.c:977 ../bin/menu.c:1126
msgid "Select Current Layer"
msgstr "Сохранить текущий Ñлой"
-#: ../bin/cselect.c:3403 ../bin/misc.c:2276
+#: ../bin/cselect.c:3690
+#, fuzzy
+msgid "Zoom to selected - 's'"
+msgstr "выбранные"
+
+#: ../bin/cselect.c:3696 ../bin/menu.c:979
msgid "Deselect All"
msgstr "СброÑить выделение"
-#: ../bin/cselect.c:3405
+#: ../bin/cselect.c:3699
#, fuzzy
msgid "Properties -'?'"
msgstr "СвойÑтва"
-#: ../bin/cselect.c:3406
+#: ../bin/cselect.c:3701
#, fuzzy
msgid "Modify/Activate Track"
msgstr "Изменить трек"
-#: ../bin/cselect.c:3408 ../bin/misc.c:2262
+#: ../bin/cselect.c:3704 ../bin/menu.c:965
#, fuzzy
msgid "Cut"
msgstr "Вырезать"
-#: ../bin/cselect.c:3409 ../bin/misc.c:2264
+#: ../bin/cselect.c:3705 ../bin/menu.c:967
msgid "Copy"
msgstr "Копировать"
-#: ../bin/cselect.c:3410 ../bin/fileio.c:1620 ../bin/misc.c:2266
+#: ../bin/cselect.c:3706 ../bin/fileio.c:1730 ../bin/menu.c:969
msgid "Paste"
msgstr "Ð’Ñтавить"
-#: ../bin/cselect.c:3411 ../bin/misc.c:2268
+#: ../bin/cselect.c:3707 ../bin/menu.c:971
#, fuzzy
msgid "Clone"
msgstr "Закрыть"
-#: ../bin/cselect.c:3413
+#: ../bin/cselect.c:3709
#, fuzzy
msgid "Rotate..."
msgstr "Повернуть"
-#: ../bin/cselect.c:3415
+#: ../bin/cselect.c:3711
msgid "Align"
msgstr "Выравнивание"
-#: ../bin/cselect.c:3419
+#: ../bin/cselect.c:3717 ../bin/menu.c:1142
+msgid "Ties/NoTies"
+msgstr ""
+
+#: ../bin/cselect.c:3719
msgid "Hide/NoHide"
msgstr ""
-#: ../bin/cselect.c:3420
+#: ../bin/cselect.c:3721
msgid "Bridge/NoBridge"
msgstr ""
-#: ../bin/cselect.c:3421
+#: ../bin/cselect.c:3723
+msgid "Roadbed/NoRoadbed"
+msgstr ""
+
+#: ../bin/cselect.c:3725
msgid "NoTies/Ties"
msgstr ""
-#: ../bin/cselect.c:3422
+#: ../bin/cselect.c:3727
msgid "Thickness..."
msgstr ""
-#: ../bin/cselect.c:3423 ../bin/misc.c:2409
+#: ../bin/cselect.c:3728 ../bin/menu.c:1150
msgid "Thin Tracks"
msgstr "Тонкие треки"
-#: ../bin/cselect.c:3424 ../bin/misc.c:2410
+#: ../bin/cselect.c:3730 ../bin/menu.c:1152
msgid "Medium Tracks"
msgstr "Средние треки"
-#: ../bin/cselect.c:3425 ../bin/misc.c:2411
+#: ../bin/cselect.c:3732 ../bin/menu.c:1154
msgid "Thick Tracks"
msgstr "ТолÑтые треки"
-#: ../bin/cselect.c:3430
+#: ../bin/cselect.c:3741
msgid "Dash-Dotted Line"
msgstr ""
-#: ../bin/cselect.c:3431
+#: ../bin/cselect.c:3743
msgid "Dash-Dot-Dotted Line"
msgstr ""
-#: ../bin/cselect.c:3433
+#: ../bin/cselect.c:3746
#, fuzzy
msgid "Move To Front"
msgstr "ПеремеÑтить"
-#: ../bin/cselect.c:3434
+#: ../bin/cselect.c:3747
#, fuzzy
msgid "Move To Back"
msgstr "ПеремеÑтить треки"
-#: ../bin/cselect.c:3436
+#: ../bin/cselect.c:3749
#, fuzzy
msgid "Group"
msgstr "Группировать"
-#: ../bin/cselect.c:3437
+#: ../bin/cselect.c:3750
#, fuzzy
msgid "UnGroup"
msgstr "Разгруппировать"
-#: ../bin/cselect.c:3472
+#: ../bin/cselect.c:3796
msgid "Move Description"
msgstr "ПеремеÑтить опиÑание"
-#: ../bin/cselect.c:3479 ../bin/misc.c:1978 ../bin/misc.c:2279
+#: ../bin/cselect.c:3804 ../bin/menu.c:294 ../bin/menu.c:986
msgid "Move"
msgstr "ПеремеÑтить"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:368
-#: ../bin/cselect.c:3481 ../bin/misc.c:1969 ../bin/misc.c:2281
-#: ../../../../build/work/app/i18n/custmsg.h:1261
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:484
+#: ../bin/cselect.c:3807 ../bin/menu.c:271 ../bin/menu.c:988
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1280
msgid "Rotate"
msgstr "Повернуть"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:369
-#: ../bin/cselect.c:3483 ../bin/dcar.c:2216
-#: ../../../../build/work/app/i18n/custmsg.h:1263
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:485
+#: ../bin/cselect.c:3810 ../bin/dcar.c:2327
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1282
msgid "Flip"
msgstr "Отразить"
-#: ../bin/csensor.c:216
+#: ../bin/csensor.c:214
msgid "Change Sensor"
msgstr "Изменить ÑенÑор"
-#: ../bin/csensor.c:262 ../bin/csensor.c:596
+#: ../bin/csensor.c:261 ../bin/csensor.c:599
msgid "Sensor"
msgstr "СенÑор"
-#: ../bin/csensor.c:391 ../bin/csignal.c:511
-msgid "Orgin X"
-msgstr ""
-
#: ../bin/csensor.c:407
msgid "Create Sensor"
msgstr "Создать ÑенÑор"
@@ -2756,113 +2818,47 @@ msgstr "Создать ÑенÑор"
msgid "Modify Sensor"
msgstr "Изменить ÑенÑор"
-#: ../bin/csensor.c:443
+#: ../bin/csensor.c:445
msgid "Edit sensor"
msgstr "Изменить ÑенÑор"
-#: ../bin/csensor.c:481
+#: ../bin/csensor.c:483
msgid "Place sensor"
msgstr "УÑтановить ÑенÑор"
-#: ../bin/csignal.c:241
-msgid "Number Of Heads"
-msgstr "Кол-во головок"
-
-#: ../bin/csignal.c:280
-msgid "Change Signal"
-msgstr "Изменить Ñигнал"
-
-#: ../bin/csignal.c:314
-#, fuzzy, c-format
-msgid "(%d [%s]): Layer=%u, %d heads at %0.3f,%0.3f A%0.3f"
-msgstr "(%d [%s]): Слой=%d, по %0.3f,%0.3f"
-
-#: ../bin/csignal.c:325 ../bin/csignal.c:914
-msgid "Signal"
-msgstr "Сигнал"
-
-#: ../bin/csignal.c:517
-msgid "Number of Heads"
-msgstr "Кол-во головок"
-
-#: ../bin/csignal.c:522
-msgid "Edit Aspect"
-msgstr ""
-
-#: ../bin/csignal.c:524
-msgid "Add Aspect"
-msgstr ""
-
-#: ../bin/csignal.c:526
-msgid "Delete Aspect"
-msgstr ""
-
-#: ../bin/csignal.c:539
-msgid "Aspect Index"
-msgstr ""
-
-#: ../bin/csignal.c:554
-msgid "Create Signal"
-msgstr "Создать Ñигнал"
-
-#: ../bin/csignal.c:558
-msgid "Modify Signal"
-msgstr "Изменить Ñигнал"
-
-#: ../bin/csignal.c:665
-msgid "Edit aspect"
-msgstr ""
-
-#: ../bin/csignal.c:712
-#, c-format
-msgid "Are you sure you want to delete the %d aspect(s)"
-msgstr ""
-
-#: ../bin/csignal.c:733
-msgid "Edit signal"
-msgstr ""
-
-#: ../bin/csignal.c:795
-msgid "Place base of signal"
-msgstr ""
-
-#: ../bin/csignal.c:802
-msgid "Drag to orient signal"
-msgstr ""
-
-#: ../bin/csnap.c:516
+#: ../bin/csnap.c:530
msgid "Horz"
msgstr "Столбцы"
-#: ../bin/csnap.c:518
+#: ../bin/csnap.c:532
msgid "Spacing"
msgstr "Размер"
-#: ../bin/csnap.c:520
+#: ../bin/csnap.c:534
msgid "Divisions"
msgstr "Ячеек"
-#: ../bin/csnap.c:523
+#: ../bin/csnap.c:537
msgid "Enable"
msgstr "Включено"
-#: ../bin/csnap.c:524
+#: ../bin/csnap.c:538
msgid "Vert"
msgstr "Строки"
-#: ../bin/csnap.c:533 ../bin/dease.c:76
+#: ../bin/csnap.c:547 ../bin/dease.c:78
msgid "X"
msgstr "Смещ."
-#: ../bin/csnap.c:537
+#: ../bin/csnap.c:551
msgid "A"
msgstr ""
-#: ../bin/csnap.c:540
+#: ../bin/csnap.c:554
msgid "Show"
msgstr "Показывать"
-#: ../bin/csnap.c:791
+#: ../bin/csnap.c:815
msgid "Change Grid..."
msgstr "Изменить Ñетку..."
@@ -2870,890 +2866,1003 @@ msgstr "Изменить Ñетку..."
msgid "Set Block Gaps"
msgstr ""
-#: ../bin/csplit.c:111
-msgid "Select track to split"
+#: ../bin/csplit.c:137
+#, fuzzy
+msgid "Select track and position for split"
msgstr "Выберите трек Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ"
-#: ../bin/csplit.c:133
+#: ../bin/csplit.c:161
msgid "Can't Split that Track Object"
msgstr ""
-#: ../bin/csplit.c:141 ../bin/csplit.c:153 ../bin/csplit.c:315
+#: ../bin/csplit.c:169 ../bin/csplit.c:182 ../bin/csplit.c:505
msgid "Split Track"
msgstr "Разделить трек"
-#: ../bin/csplit.c:149 ../bin/csplit.c:271
+#: ../bin/csplit.c:178 ../bin/csplit.c:322 ../bin/csplit.c:410
msgid "Can't Split that Draw Object"
msgstr ""
-#: ../bin/csplit.c:159
+#: ../bin/csplit.c:188
#, fuzzy
msgid "No Track to Split"
msgstr "Выберите трек Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ"
-#: ../bin/csplit.c:172 ../bin/dbench.c:69 ../bin/dbench.c:80
+#: ../bin/csplit.c:203 ../bin/dbench.c:65 ../bin/dbench.c:77
msgid "Left"
msgstr "Слева"
-#: ../bin/csplit.c:173 ../bin/dbench.c:70 ../bin/dbench.c:79
+#: ../bin/csplit.c:205 ../bin/dbench.c:66 ../bin/dbench.c:76
msgid "Right"
msgstr "Справа"
-#: ../bin/csplit.c:174 ../bin/csplit.c:179
+#: ../bin/csplit.c:207 ../bin/csplit.c:216
msgid "Both"
msgstr "Оба"
-#: ../bin/csplit.c:177
+#: ../bin/csplit.c:212
msgid "Top"
msgstr "Сверху"
-#: ../bin/csplit.c:178
+#: ../bin/csplit.c:214
msgid "Bottom"
msgstr "Снизу"
-#: ../bin/csplit.c:258
+#: ../bin/csplit.c:307
#, fuzzy
msgid "Select draw to split"
msgstr "Выберите трек Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ"
-#: ../bin/csplit.c:275 ../bin/csplit.c:316
+#: ../bin/csplit.c:326 ../bin/csplit.c:508
#, fuzzy
msgid "Split Draw"
msgstr "Разделить трек"
-#: ../bin/csplit.c:281
+#: ../bin/csplit.c:332
#, fuzzy
msgid "No Draw to Split"
msgstr "Тащите, чтобы размеÑтить"
-#: ../bin/csplit.c:314
+#: ../bin/csplit.c:371
+#, fuzzy
+msgid "Select the draw object to Trim to"
+msgstr "ПеремеÑтить выбранные объекты наверх"
+
+#: ../bin/csplit.c:387
+msgid "Can't Trim with a Track"
+msgstr ""
+
+#: ../bin/csplit.c:392
+msgid "Select an intersecting draw object to Trim"
+msgstr ""
+
+#: ../bin/csplit.c:397
+#, fuzzy
+msgid "No Draw to Trim with"
+msgstr "Тащите, чтобы размеÑтить"
+
+#: ../bin/csplit.c:404
+#, fuzzy
+msgid "Can't Split a track object"
+msgstr "Разделить трек"
+
+#: ../bin/csplit.c:432 ../bin/csplit.c:511
+#, fuzzy
+msgid "Trim Draw"
+msgstr "Цвет"
+
+#: ../bin/csplit.c:437
+msgid "Select another draw object to Trim, or Space to Deselect"
+msgstr ""
+
+#: ../bin/csplit.c:504
#, fuzzy
msgid "Split"
msgstr "Разделить трек"
+#: ../bin/csignal.c:239
+msgid "Number Of Heads"
+msgstr "Кол-во головок"
+
+#: ../bin/csignal.c:279
+msgid "Change Signal"
+msgstr "Изменить Ñигнал"
+
+#: ../bin/csignal.c:314
+#, fuzzy, c-format
+msgid "(%d [%s]): Layer=%u, %d heads at %0.3f,%0.3f A%0.3f"
+msgstr "(%d [%s]): Слой=%d, по %0.3f,%0.3f"
+
+#: ../bin/csignal.c:325 ../bin/csignal.c:931
+msgid "Signal"
+msgstr "Сигнал"
+
+#: ../bin/csignal.c:518
+msgid "Number of Heads"
+msgstr "Кол-во головок"
+
+#: ../bin/csignal.c:523
+msgid "Edit Aspect"
+msgstr ""
+
+#: ../bin/csignal.c:525
+msgid "Add Aspect"
+msgstr ""
+
+#: ../bin/csignal.c:527
+msgid "Delete Aspect"
+msgstr ""
+
+#: ../bin/csignal.c:540
+msgid "Aspect Index"
+msgstr ""
+
+#: ../bin/csignal.c:555
+msgid "Create Signal"
+msgstr "Создать Ñигнал"
+
+#: ../bin/csignal.c:560
+msgid "Modify Signal"
+msgstr "Изменить Ñигнал"
+
+#: ../bin/csignal.c:677
+msgid "Edit aspect"
+msgstr ""
+
+#: ../bin/csignal.c:724
+#, c-format
+msgid "Are you sure you want to delete the %d aspect(s)"
+msgstr ""
+
+#: ../bin/csignal.c:747
+msgid "Edit signal"
+msgstr ""
+
+#: ../bin/csignal.c:811
+msgid "Place base of signal"
+msgstr ""
+
+#: ../bin/csignal.c:819
+msgid "Drag to orient signal"
+msgstr ""
+
#: ../bin/cstraigh.c:77
msgid "Place 1st endpoint of straight track, snap to unconnected endpoint"
msgstr ""
-#: ../bin/cstraigh.c:104
+#: ../bin/cstraigh.c:105
msgid "Drag to place 2nd end point"
msgstr ""
-#: ../bin/cstraigh.c:140
+#: ../bin/cstraigh.c:151
#, c-format
msgid "Straight Track Length=%s Angle=%0.3f"
msgstr "Длина прÑмого трека=%s Угол=%0.3f"
-#: ../bin/cstraigh.c:191 ../bin/tstraigh.c:267
+#: ../bin/cstraigh.c:204 ../bin/tstraigh.c:245
msgid "Straight Track"
msgstr "ПрÑмой трек"
-#: ../bin/cstruct.c:71 ../bin/cturnout.c:85 ../bin/doption.c:131
-#: ../bin/doption.c:240
+#: ../bin/cstruct.c:67 ../bin/cturnout.c:86 ../bin/doption.c:93
+#: ../bin/doption.c:250
msgid "Hide"
msgstr "Скрыть"
-#: ../bin/cstruct.c:449 ../bin/cstruct.c:476
+#: ../bin/cstruct.c:505 ../bin/cstruct.c:535
msgid "Pier Number"
msgstr ""
-#: ../bin/cstruct.c:561
+#: ../bin/cstruct.c:627
#, c-format
msgid "Scale %d:1"
msgstr "МаÑштаб %d:1"
-#: ../bin/cstruct.c:563
+#: ../bin/cstruct.c:629
#, c-format
msgid "Width %s"
msgstr "Ширина %s"
-#: ../bin/cstruct.c:565
+#: ../bin/cstruct.c:631
#, c-format
msgid "Height %s"
msgstr "Ð’Ñ‹Ñота %s"
-#: ../bin/cstruct.c:706
+#: ../bin/cstruct.c:779
msgid "Place Structure"
msgstr ""
-#: ../bin/cstruct.c:799 ../bin/cstruct.c:873 ../bin/cstruct.c:1105
-#: ../bin/cturnout.c:2793 ../bin/cturnout.c:2845 ../bin/cturnout.c:2972
-#: ../bin/cturnout.c:3111
-msgid ""
-"Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter "
-"to accept, Esc to Cancel"
-msgstr ""
+#: ../bin/cstruct.c:851 ../bin/cstruct.c:904 ../bin/drawgeom.c:304
+#, fuzzy
+msgid "+Alt for Magnetic Snap"
+msgstr "Прилипать к Ñетке"
-#: ../bin/cstruct.c:821
+#: ../bin/cstruct.c:853 ../bin/cstruct.c:906 ../bin/drawgeom.c:306
+#, fuzzy
+msgid "+Alt to inhibit Magnetic Snap"
+msgstr "Прилипать к Ñетке"
+
+#: ../bin/cstruct.c:888
msgid "Drag to place"
msgstr "Тащите, чтобы размеÑтить"
-#: ../bin/cstruct.c:843
+#: ../bin/cstruct.c:921
msgid "Drag to rotate"
msgstr "Тащите, чтобы повернуть"
-#: ../bin/cstruct.c:863
-#, c-format
-msgid "Angle = %0.3f"
-msgstr "Угол = %0.3f"
+#: ../bin/cstruct.c:952 ../bin/cstruct.c:1222 ../bin/cturnout.c:2812
+#: ../bin/cturnout.c:2871 ../bin/cturnout.c:3015 ../bin/cturnout.c:3162
+msgid ""
+"Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter "
+"to accept, Esc to Cancel"
+msgstr ""
-#: ../bin/cstruct.c:954
+#: ../bin/cstruct.c:1031 ../bin/cturnout.c:2963 ../bin/param.c:3013
+msgid "Close"
+msgstr "Закрыть"
+
+#: ../bin/cstruct.c:1049
msgid "Select Structure and then drag to place"
msgstr ""
-#: ../bin/cstruct.c:992
+#: ../bin/cstruct.c:1091
msgid ""
"Left drag to move, right drag to rotate, or press Return or click Ok to "
"finalize"
msgstr ""
-#: ../bin/cstruct.c:1075 ../bin/cturnout.c:3078
+#: ../bin/cstruct.c:1184 ../bin/cturnout.c:3127
#, c-format
msgid "Place %s and draw into position"
msgstr ""
-#: ../bin/cswitchmotor.c:96 ../bin/cswitchmotor.c:115
-#: ../bin/cswitchmotor.c:227
+#: ../bin/cswitchmotor.c:92 ../bin/cswitchmotor.c:111
+#: ../bin/cswitchmotor.c:231
msgid "Point Sense"
msgstr ""
-#: ../bin/cswitchmotor.c:116
+#: ../bin/cswitchmotor.c:112
msgid "Turnout Number"
msgstr ""
-#: ../bin/cswitchmotor.c:292
+#: ../bin/cswitchmotor.c:299
msgid "Change Switch Motor"
msgstr ""
-#: ../bin/cswitchmotor.c:359
+#: ../bin/cswitchmotor.c:369
msgid "Switch motor"
msgstr ""
-#: ../bin/cswitchmotor.c:475
+#: ../bin/cswitchmotor.c:499
#, c-format
msgid "ResolveSwitchmotor: Turnout T%d: T%d doesn't exist"
msgstr ""
-#: ../bin/cswitchmotor.c:544 ../bin/cswitchmotor.c:714
+#: ../bin/cswitchmotor.c:570 ../bin/cswitchmotor.c:746
msgid "Switch motor must have a name!"
msgstr ""
-#: ../bin/cswitchmotor.c:548
+#: ../bin/cswitchmotor.c:574
msgid "Create Switch Motor"
msgstr ""
-#: ../bin/cswitchmotor.c:580
+#: ../bin/cswitchmotor.c:608
msgid "Create switch motor"
msgstr ""
-#: ../bin/cswitchmotor.c:594 ../bin/cswitchmotor.c:625
-#: ../bin/cswitchmotor.c:657
+#: ../bin/cswitchmotor.c:624 ../bin/cswitchmotor.c:655
+#: ../bin/cswitchmotor.c:687
msgid "Select a turnout"
msgstr ""
-#: ../bin/cswitchmotor.c:601
+#: ../bin/cswitchmotor.c:632
msgid "Not a turnout!"
msgstr ""
-#: ../bin/cswitchmotor.c:634 ../bin/cswitchmotor.c:665
+#: ../bin/cswitchmotor.c:664 ../bin/cswitchmotor.c:695
msgid "Not a switch motor!"
msgstr ""
-#: ../bin/cswitchmotor.c:670
+#: ../bin/cswitchmotor.c:700
#, c-format
msgid "Really delete switch motor %s?"
msgstr ""
-#: ../bin/cswitchmotor.c:671
+#: ../bin/cswitchmotor.c:702
msgid "Delete Switch Motor"
msgstr ""
-#: ../bin/cswitchmotor.c:718
+#: ../bin/cswitchmotor.c:750
msgid "Modify Switch Motor"
msgstr ""
-#: ../bin/cswitchmotor.c:744
+#: ../bin/cswitchmotor.c:776
msgid "Edit switch motor"
msgstr ""
-#: ../bin/cswitchmotor.c:750
+#: ../bin/cswitchmotor.c:782
#, c-format
msgid "Edit switch motor %d"
msgstr ""
-#: ../bin/cswitchmotor.c:858
+#: ../bin/cswitchmotor.c:889
msgid "Switch Motor"
msgstr ""
-#: ../bin/cswitchmotor.c:871
+#: ../bin/cswitchmotor.c:903
#, c-format
msgid "Deleting Switch Motor %s"
msgstr ""
-#: ../bin/ctext.c:196 ../bin/ctext.c:235
+#: ../bin/ctext.c:194 ../bin/ctext.c:242
msgid "Create Text"
msgstr "Создать текÑÑ‚"
-#: ../bin/ctext.c:266
+#: ../bin/ctext.c:277
msgid "Fonts..."
msgstr "Шрифты..."
-#: ../bin/ctodesgn.c:144
+#: ../bin/ctodesgn.c:139
msgid "Frog #"
msgstr "Стрелка #"
-#: ../bin/ctodesgn.c:144
+#: ../bin/ctodesgn.c:139
msgid "Degrees"
msgstr "ГрадуÑÑ‹"
-#: ../bin/ctodesgn.c:145
+#: ../bin/ctodesgn.c:140
msgid "Dual Path"
msgstr ""
-#: ../bin/ctodesgn.c:145
+#: ../bin/ctodesgn.c:140
msgid "Quad Path"
msgstr ""
-#: ../bin/ctodesgn.c:180 ../bin/ctodesgn.c:181 ../bin/ctodesgn.c:182
-#: ../bin/ctodesgn.c:183 ../bin/ctodesgn.c:243 ../bin/ctodesgn.c:266
-#: ../bin/ctodesgn.c:268 ../bin/ctodesgn.c:303 ../bin/ctodesgn.c:306
-#: ../bin/ctodesgn.c:332 ../bin/ctodesgn.c:333 ../bin/ctodesgn.c:369
-#: ../bin/ctodesgn.c:372 ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:400
-#: ../bin/ctodesgn.c:439 ../bin/ctodesgn.c:443 ../bin/ctodesgn.c:446
-#: ../bin/ctodesgn.c:658
+#: ../bin/ctodesgn.c:182 ../bin/ctodesgn.c:183 ../bin/ctodesgn.c:184
+#: ../bin/ctodesgn.c:185 ../bin/ctodesgn.c:244 ../bin/ctodesgn.c:270
+#: ../bin/ctodesgn.c:272 ../bin/ctodesgn.c:316 ../bin/ctodesgn.c:319
+#: ../bin/ctodesgn.c:350 ../bin/ctodesgn.c:351 ../bin/ctodesgn.c:395
+#: ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:428 ../bin/ctodesgn.c:430
+#: ../bin/ctodesgn.c:477 ../bin/ctodesgn.c:481 ../bin/ctodesgn.c:484
+#: ../bin/ctodesgn.c:742
msgid "Offset"
msgstr "Смещение"
-#: ../bin/ctodesgn.c:201 ../bin/ctodesgn.c:2916 ../bin/ctodesgn.c:2917
+#: ../bin/ctodesgn.c:203 ../bin/ctodesgn.c:3204 ../bin/ctodesgn.c:3205
msgid "Left Description"
msgstr "ОпиÑание ЛеваÑ"
-#: ../bin/ctodesgn.c:202 ../bin/ctodesgn.c:205
+#: ../bin/ctodesgn.c:204 ../bin/ctodesgn.c:207
msgid " #"
msgstr " #"
-#: ../bin/ctodesgn.c:204 ../bin/ctodesgn.c:2915
+#: ../bin/ctodesgn.c:206 ../bin/ctodesgn.c:3203
msgid "Right Description"
msgstr "ОпиÑание ПраваÑ"
-#: ../bin/ctodesgn.c:206
+#: ../bin/ctodesgn.c:208
msgid "Roadbed Width"
msgstr "Ширина полотна"
-#: ../bin/ctodesgn.c:210 ../bin/denum.c:56
+#: ../bin/ctodesgn.c:212 ../bin/denum.c:52
msgid "Print Setup"
msgstr "ÐаÑтройки печати"
-#: ../bin/ctodesgn.c:241
+#: ../bin/ctodesgn.c:242
msgid "Diverging Length"
msgstr "Отклонение длины"
-#: ../bin/ctodesgn.c:242
+#: ../bin/ctodesgn.c:243
msgid "Diverging Angle"
msgstr "Отклонение угла"
-#: ../bin/ctodesgn.c:243
+#: ../bin/ctodesgn.c:244
msgid "Diverging Offset"
msgstr "Отклонение ÑмещениÑ"
-#: ../bin/ctodesgn.c:244
+#: ../bin/ctodesgn.c:245
msgid "Overall Length"
msgstr ""
-#: ../bin/ctodesgn.c:254
+#: ../bin/ctodesgn.c:257
msgid "Regular Turnout"
msgstr "ÐžÐ±Ñ‹Ñ‡Ð½Ð°Ñ Ñтрелка"
-#: ../bin/ctodesgn.c:264 ../bin/ctodesgn.c:301
+#: ../bin/ctodesgn.c:268 ../bin/ctodesgn.c:314
msgid "Inner Length"
msgstr "ВнутреннÑÑ Ð´Ð»Ð¸Ð½Ð°"
-#: ../bin/ctodesgn.c:265 ../bin/ctodesgn.c:302
+#: ../bin/ctodesgn.c:269 ../bin/ctodesgn.c:315
msgid "Inner Angle"
msgstr "Внутренний угол"
-#: ../bin/ctodesgn.c:266 ../bin/ctodesgn.c:303
+#: ../bin/ctodesgn.c:270 ../bin/ctodesgn.c:316
msgid "Inner Offset"
msgstr "Внутреннее Ñмещение"
-#: ../bin/ctodesgn.c:267 ../bin/ctodesgn.c:305
+#: ../bin/ctodesgn.c:271 ../bin/ctodesgn.c:318
msgid "Outer Angle"
msgstr "Внешний угол"
-#: ../bin/ctodesgn.c:268 ../bin/ctodesgn.c:306
+#: ../bin/ctodesgn.c:272 ../bin/ctodesgn.c:319
msgid "Outer Offset"
msgstr "Внешнее Ñмещение"
-#: ../bin/ctodesgn.c:269 ../bin/ctodesgn.c:308
+#: ../bin/ctodesgn.c:273 ../bin/ctodesgn.c:321
msgid "Outer Length"
msgstr "ВнешнÑÑ Ð´Ð»Ð¸Ð½Ð°"
-#: ../bin/ctodesgn.c:291
+#: ../bin/ctodesgn.c:302
msgid "Curved Turnout"
msgstr ""
-#: ../bin/ctodesgn.c:304
+#: ../bin/ctodesgn.c:317
#, fuzzy
msgid "Inner Radius"
msgstr "Мин. радиуÑ"
-#: ../bin/ctodesgn.c:307
+#: ../bin/ctodesgn.c:320
#, fuzzy
msgid "Outer Radius"
msgstr "РадиуÑ"
-#: ../bin/ctodesgn.c:309 ../bin/ctodesgn.c:376 ../bin/ctodesgn.c:451
+#: ../bin/ctodesgn.c:322 ../bin/ctodesgn.c:402 ../bin/ctodesgn.c:489
#, fuzzy
msgid "Toe Radius"
msgstr "РадиуÑ"
-#: ../bin/ctodesgn.c:310 ../bin/ctodesgn.c:375
+#: ../bin/ctodesgn.c:323 ../bin/ctodesgn.c:401
#, fuzzy
msgid "Toe Length"
msgstr "ÐžÐ±Ñ‰Ð°Ñ Ð´Ð»Ð¸Ð½Ð°"
-#: ../bin/ctodesgn.c:320
+#: ../bin/ctodesgn.c:336
#, fuzzy
msgid "Cornu Curved Turnout"
msgstr "Добавить изогнутый трек"
-#: ../bin/ctodesgn.c:330 ../bin/ctodesgn.c:367 ../bin/ctodesgn.c:396
-#: ../bin/ctodesgn.c:437
+#: ../bin/ctodesgn.c:348 ../bin/ctodesgn.c:393 ../bin/ctodesgn.c:426
+#: ../bin/ctodesgn.c:475
msgid "Left Length"
msgstr "Длина Ñлева"
-#: ../bin/ctodesgn.c:331 ../bin/ctodesgn.c:368 ../bin/ctodesgn.c:397
-#: ../bin/ctodesgn.c:438
+#: ../bin/ctodesgn.c:349 ../bin/ctodesgn.c:394 ../bin/ctodesgn.c:427
+#: ../bin/ctodesgn.c:476
msgid "Left Angle"
msgstr "Угол Ñлева"
-#: ../bin/ctodesgn.c:332 ../bin/ctodesgn.c:369 ../bin/ctodesgn.c:398
-#: ../bin/ctodesgn.c:439
+#: ../bin/ctodesgn.c:350 ../bin/ctodesgn.c:395 ../bin/ctodesgn.c:428
+#: ../bin/ctodesgn.c:477
msgid "Left Offset"
msgstr "Смещение Ñлева"
-#: ../bin/ctodesgn.c:333 ../bin/ctodesgn.c:372 ../bin/ctodesgn.c:400
-#: ../bin/ctodesgn.c:446
+#: ../bin/ctodesgn.c:351 ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:430
+#: ../bin/ctodesgn.c:484
msgid "Right Offset"
msgstr "Смещение Ñправа"
-#: ../bin/ctodesgn.c:334 ../bin/ctodesgn.c:373 ../bin/ctodesgn.c:401
-#: ../bin/ctodesgn.c:447
+#: ../bin/ctodesgn.c:352 ../bin/ctodesgn.c:399 ../bin/ctodesgn.c:431
+#: ../bin/ctodesgn.c:485
msgid "Right Angle"
msgstr "Угол Ñправа"
-#: ../bin/ctodesgn.c:335 ../bin/ctodesgn.c:374 ../bin/ctodesgn.c:402
-#: ../bin/ctodesgn.c:448
+#: ../bin/ctodesgn.c:353 ../bin/ctodesgn.c:400 ../bin/ctodesgn.c:432
+#: ../bin/ctodesgn.c:486
msgid "Right Length"
msgstr "Длина Ñправа"
-#: ../bin/ctodesgn.c:357
+#: ../bin/ctodesgn.c:381
msgid "Wye Turnout"
msgstr ""
-#: ../bin/ctodesgn.c:370 ../bin/ctodesgn.c:440
+#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:478
#, fuzzy
msgid "Left Radius"
msgstr "РадиуÑ"
-#: ../bin/ctodesgn.c:371 ../bin/ctodesgn.c:445
+#: ../bin/ctodesgn.c:397 ../bin/ctodesgn.c:483
#, fuzzy
msgid "Right Radius"
msgstr "Мин. радиуÑ"
-#: ../bin/ctodesgn.c:386
+#: ../bin/ctodesgn.c:414
msgid "Cornu Wye Turnout"
msgstr ""
-#: ../bin/ctodesgn.c:427
+#: ../bin/ctodesgn.c:463
msgid "3-way Turnout"
msgstr ""
-#: ../bin/ctodesgn.c:441
+#: ../bin/ctodesgn.c:479
#, fuzzy
msgid "Center Length"
msgstr "ВнутреннÑÑ Ð´Ð»Ð¸Ð½Ð°"
-#: ../bin/ctodesgn.c:442
+#: ../bin/ctodesgn.c:480
#, fuzzy
msgid "Center Angle"
msgstr "Внутренний угол"
-#: ../bin/ctodesgn.c:443 ../bin/dcar.c:2237
+#: ../bin/ctodesgn.c:481 ../bin/dcar.c:2348
#, fuzzy
msgid "Center Offset"
msgstr "Внутреннее Ñмещение"
-#: ../bin/ctodesgn.c:444
+#: ../bin/ctodesgn.c:482
#, fuzzy
msgid "Center Radius"
msgstr "Ð Ð°Ð´Ð¸ÑƒÑ Ð¾ÐºÑ€ÑƒÐ¶Ð½Ð¾Ñти"
-#: ../bin/ctodesgn.c:449
+#: ../bin/ctodesgn.c:487
#, fuzzy
msgid "Toe Length Left"
msgstr "ÐžÐ±Ñ‰Ð°Ñ Ð´Ð»Ð¸Ð½Ð°"
-#: ../bin/ctodesgn.c:450
+#: ../bin/ctodesgn.c:488
#, fuzzy
msgid "Toe Length Right"
msgstr "ÐžÐ±Ñ‰Ð°Ñ Ð´Ð»Ð¸Ð½Ð°"
-#: ../bin/ctodesgn.c:462
+#: ../bin/ctodesgn.c:502
msgid "Cornu 3-way Turnout"
msgstr ""
-#: ../bin/ctodesgn.c:482
+#: ../bin/ctodesgn.c:527
msgid "Crossing"
msgstr "ПерекрёÑток"
-#: ../bin/ctodesgn.c:503
+#: ../bin/ctodesgn.c:552
msgid "Single Slipswitch"
msgstr ""
-#: ../bin/ctodesgn.c:532
+#: ../bin/ctodesgn.c:587
msgid "Double Slipswitch"
msgstr ""
-#: ../bin/ctodesgn.c:552
+#: ../bin/ctodesgn.c:612
msgid "Right Crossover"
msgstr ""
-#: ../bin/ctodesgn.c:572
+#: ../bin/ctodesgn.c:638
msgid "Left Crossover"
msgstr ""
-#: ../bin/ctodesgn.c:592
+#: ../bin/ctodesgn.c:663
msgid "Double Crossover"
msgstr ""
-#: ../bin/ctodesgn.c:610
+#: ../bin/ctodesgn.c:685
msgid "Straight Section"
msgstr "ПрÑмое выделение"
-#: ../bin/ctodesgn.c:621
+#: ../bin/ctodesgn.c:697
msgid "Angle (Degrees)"
msgstr "Угол (градуÑÑ‹)"
-#: ../bin/ctodesgn.c:629
+#: ../bin/ctodesgn.c:708
msgid "Curved Section"
msgstr ""
-#: ../bin/ctodesgn.c:648
+#: ../bin/ctodesgn.c:731
msgid "Bumper Section"
msgstr ""
-#: ../bin/ctodesgn.c:658 ../bin/denum.c:123 ../bin/denum.c:186
-#: ../bin/denum.c:218 ../bin/denum.c:219 ../bin/dlayer.c:497
+#: ../bin/ctodesgn.c:742 ../bin/denum.c:124 ../bin/denum.c:193
+#: ../bin/denum.c:230 ../bin/denum.c:231
msgid "Count"
msgstr "Кол-во"
-#: ../bin/ctodesgn.c:659
+#: ../bin/ctodesgn.c:743
msgid "Radius1"
msgstr "РадиуÑ1"
-#: ../bin/ctodesgn.c:660
+#: ../bin/ctodesgn.c:744
msgid "Radius2"
msgstr "РадиуÑ2"
-#: ../bin/ctodesgn.c:740
+#: ../bin/ctodesgn.c:827
msgid "Turntable Section"
msgstr ""
-#: ../bin/ctodesgn.c:2543
+#: ../bin/ctodesgn.c:2777
#, c-format
msgid "%s Designer"
msgstr ""
-#: ../bin/ctodesgn.c:2547
+#: ../bin/ctodesgn.c:2780
#, c-format
msgid "%s %d x %d (of %d x %d)"
msgstr ""
-#: ../bin/ctodesgn.c:2547
+#: ../bin/ctodesgn.c:2780
msgid "Page"
msgstr "Страница"
-#: ../bin/ctodesgn.c:2555
+#: ../bin/ctodesgn.c:2788
msgid "Frog Number"
msgstr "Ðомер Ñтрелки"
-#: ../bin/ctodesgn.c:2869
+#: ../bin/ctodesgn.c:3147
msgid "Turnout Designer"
msgstr "Редактор Ñтрелок"
-#: ../bin/ctodesgn.c:2879
+#: ../bin/ctodesgn.c:3160
#, c-format
msgid "%s %s Designer"
msgstr ""
-#: ../bin/ctrain.c:182 ../bin/dcar.c:2249 ../bin/dcar.c:4366
-#: ../bin/dcar.c:4371
+#: ../bin/ctrain.c:179 ../bin/dcar.c:2360 ../bin/dcar.c:4694
+#: ../bin/dcar.c:4700
msgid "Index"
msgstr "â„–"
-#: ../bin/ctrain.c:188 ../bin/dcar.c:4367
-msgid "Rep Marks"
-msgstr ""
+#: ../bin/ctrain.c:185
+#, fuzzy
+msgid "Report Marks"
+msgstr "Метки"
-#: ../bin/ctrain.c:272
+#: ../bin/ctrain.c:273
msgid "Car"
msgstr "Машина"
-#: ../bin/ctrain.c:656
+#: ../bin/ctrain.c:728
msgid "Follow"
msgstr "Следовать"
-#: ../bin/ctrain.c:657
+#: ../bin/ctrain.c:729
msgid "Auto Reverse"
msgstr "Ðвторазворот"
-#: ../bin/ctrain.c:676 ../bin/dcar.c:5257
+#: ../bin/ctrain.c:748 ../bin/dcar.c:5686
msgid "Find"
msgstr "Ðайти"
-#: ../bin/ctrain.c:682 ../bin/ctrain.c:941 ../bin/ctrain.c:1250
-#: ../wlib/gtklib/ixhelp.c:239
+#: ../bin/ctrain.c:754 ../bin/ctrain.c:1011 ../bin/ctrain.c:1324
msgid "Forward"
msgstr "Вперёд"
-#: ../bin/ctrain.c:684 ../bin/ctrain.c:3125 ../bin/dcar.c:4705
-#: ../bin/dcar.c:4715 ../bin/dcar.c:4835 ../bin/fileio.c:242 ../bin/macro.c:92
-#: ../bin/macro.c:900
+#: ../bin/ctrain.c:756 ../bin/ctrain.c:3235 ../bin/dcar.c:5093
+#: ../bin/dcar.c:5103 ../bin/dcar.c:5225 ../bin/fileio.c:224 ../bin/macro.c:64
+#: ../bin/track.c:1366
msgid "Stop"
msgstr "Стоп"
-#: ../bin/ctrain.c:882 ../bin/ctrain.c:911
+#: ../bin/ctrain.c:952 ../bin/ctrain.c:981
msgid "Crashed"
msgstr "Разрушено"
-#: ../bin/ctrain.c:884
+#: ../bin/ctrain.c:954
msgid "Not on Track"
msgstr "Ðе на треке"
-#: ../bin/ctrain.c:888
+#: ../bin/ctrain.c:958
msgid "Trains Paused"
msgstr "Поезда оÑтановлены"
-#: ../bin/ctrain.c:890
+#: ../bin/ctrain.c:960
msgid "Running"
msgstr "Запущено"
-#: ../bin/ctrain.c:895
+#: ../bin/ctrain.c:965
msgid "End of Track"
msgstr "Конец трека"
-#: ../bin/ctrain.c:899
+#: ../bin/ctrain.c:969
msgid "Open Turnout"
msgstr ""
-#: ../bin/ctrain.c:903
+#: ../bin/ctrain.c:973
msgid "Manual Stop"
msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ð¾Ñтановка"
-#: ../bin/ctrain.c:907
+#: ../bin/ctrain.c:977
msgid "No Room"
msgstr "Ðет комнат"
-#: ../bin/ctrain.c:915
+#: ../bin/ctrain.c:985
msgid "Unknown Status"
msgstr "ÐеизвеÑтный ÑтатуÑ"
-#: ../bin/ctrain.c:925
+#: ../bin/ctrain.c:995
msgid "No trains"
msgstr "Ðет поездов"
-#: ../bin/ctrain.c:1301
+#: ../bin/ctrain.c:1375
msgid "Train Control XXX"
msgstr "Управление поездом XXX"
-#: ../bin/ctrain.c:1302
+#: ../bin/ctrain.c:1376
#, c-format
msgid "Train Control %d"
msgstr "Управление поездом %d"
-#: ../bin/ctrain.c:1304
+#: ../bin/ctrain.c:1378
msgid "Train Control"
msgstr "Управление поездом"
-#: ../bin/ctrain.c:3098
-msgid "Train"
-msgstr "Поезд"
+#: ../bin/ctrain.c:3198 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:156
+msgid "Run Trains"
+msgstr "ЗапуÑтить поезда"
-#: ../bin/ctrain.c:3111
+#: ../bin/ctrain.c:3217
msgid "Uncouple"
msgstr ""
-#: ../bin/ctrain.c:3113
+#: ../bin/ctrain.c:3219
msgid "Flip Car"
msgstr "Развернуть машину"
-#: ../bin/ctrain.c:3115
+#: ../bin/ctrain.c:3222
#, fuzzy
msgid "Clearance Lines On"
msgstr "Создать линии"
-#: ../bin/ctrain.c:3117
+#: ../bin/ctrain.c:3225
#, fuzzy
msgid "Clearance Lines Off"
msgstr "Создать линии"
-#: ../bin/ctrain.c:3119
+#: ../bin/ctrain.c:3227
msgid "Flip Train"
msgstr "Развернуть поезд"
-#: ../bin/ctrain.c:3121
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:438
+#: ../bin/ctrain.c:3229
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1188
+msgid "Describe"
+msgstr "ПодпиÑÑŒ"
+
+#: ../bin/ctrain.c:3231
msgid "MU Master"
msgstr ""
-#: ../bin/ctrain.c:3124
+#: ../bin/ctrain.c:3234
msgid "Change Direction"
msgstr "Изменить направление"
-#: ../bin/ctrain.c:3128
+#: ../bin/ctrain.c:3238
msgid "Remove Car"
msgstr "Удалить машину"
-#: ../bin/ctrain.c:3131
+#: ../bin/ctrain.c:3241
msgid "Remove Train"
msgstr "Удалить поезд"
-#: ../bin/cturnout.c:96 ../bin/dcar.c:2271 ../bin/dcar.c:2275
+#: ../bin/cturnout.c:97 ../bin/dcar.c:2382 ../bin/dcar.c:2386
msgid "New"
msgstr "Создать"
-#: ../bin/cturnout.c:370
-#, c-format
-msgid "Turnout path[%d:%d] out of bounds: %d"
-msgstr ""
-
-#: ../bin/cturnout.c:381 ../bin/cturnout.c:391
-#, c-format
-msgid "Turnout path[%d] %d is not a valid track segment"
-msgstr ""
-
-#: ../bin/cturnout.c:401 ../bin/cturnout.c:406
+#: ../bin/cturnout.c:371 ../bin/cturnout.c:376
#, c-format
-msgid "Turnout path[%d] %d is not a track segment"
+msgid "CheckPath: Turnout path[%d] %d is not a track segment"
msgstr ""
-#: ../bin/cturnout.c:414
+#: ../bin/cturnout.c:385
#, c-format
-msgid "Turnout path[%d] %d-%d not connected: %0.3f P0(%f,%f) P1(%f,%f)"
+msgid ""
+"CheckPath: Turnout path[%d] %d-%d not connected: %0.3f P0(%f,%f) P1(%f,%f)"
msgstr ""
-#: ../bin/cturnout.c:452
+#: ../bin/cturnout.c:437
msgid "Unknown special case"
msgstr ""
-#: ../bin/cturnout.c:562
+#: ../bin/cturnout.c:564
msgid "Connect Adjustable Tracks"
msgstr ""
-#: ../bin/cturnout.c:1104
+#: ../bin/cturnout.c:1030
msgid "splitTurnout: can't find segment"
msgstr ""
-#: ../bin/cturnout.c:1553 ../bin/track.c:2270 ../bin/track.c:2376
-#: ../bin/tstraigh.c:554
+#: ../bin/cturnout.c:1511 ../bin/track.c:2380 ../bin/track.c:2502
+#: ../bin/tstraigh.c:838
msgid "Drag to change track length"
msgstr ""
-#: ../bin/cturnout.c:1564
+#: ../bin/cturnout.c:1524
#, c-format
msgid "Length=%s"
msgstr "Длина=%s"
-#: ../bin/cturnout.c:2386
+#: ../bin/cturnout.c:1815
+#, c-format
+msgid "Turnout %d Path: %s"
+msgstr ""
+
+#: ../bin/cturnout.c:2389
#, c-format
msgid "%d connections, max distance %0.3f (%s)"
msgstr ""
-#: ../bin/cturnout.c:2391
+#: ../bin/cturnout.c:2394
#, c-format
msgid "0 connections (%s)"
msgstr "0 Ñоединений (%s)"
-#: ../bin/cturnout.c:2431
+#: ../bin/cturnout.c:2433
msgid "Place New Turnout"
msgstr ""
-#: ../bin/cturnout.c:2837
+#: ../bin/cturnout.c:2861
#, c-format
msgid "Angle = %0.3f (%s)"
msgstr "Угол = %0.3f (%s)"
-#: ../bin/cturnout.c:2927 ../bin/param.c:2622
-msgid "Close"
-msgstr "Закрыть"
+#: ../bin/cturnout.c:2962
+msgid "Add Fixed-Track"
+msgstr ""
-#: ../bin/cturnout.c:2944
+#: ../bin/cturnout.c:2981
msgid "Pick turnout and active End Point, then place on the layout"
msgstr ""
-#: ../bin/cturnout.c:3138
+#: ../bin/cturnout.c:3190
#, fuzzy
-msgid "Predefined Track"
-msgstr "Выбранный трек"
+msgid "Fixed-Track"
+msgstr "Изогнутый трек"
-#: ../bin/cturntbl.c:52 ../bin/cturntbl.c:251 ../bin/cturntbl.c:857
-#: ../bin/cturntbl.c:871
+#: ../bin/cturntbl.c:49 ../bin/cturntbl.c:275 ../bin/cturntbl.c:1029
+#: ../bin/cturntbl.c:1044
msgid "Diameter"
msgstr "Диаметр"
-#: ../bin/cturntbl.c:252
+#: ../bin/cturntbl.c:276
msgid "# EndPt"
msgstr "# КонТчк"
-#: ../bin/cturntbl.c:286
+#: ../bin/cturntbl.c:316
#, c-format
msgid "Turntable(%d): Layer=%d Center=[%s %s] Diameter=%s #EP=%d"
msgstr "Разворот(%d): Слой=%d Центр=[%s %s] Диаметр=%s #EP=%d"
-#: ../bin/cturntbl.c:301
+#: ../bin/cturntbl.c:335 ../bin/cturntbl.c:454
msgid "Turntable"
msgstr "Разворотный рельÑ"
-#: ../bin/cturntbl.c:565
+#: ../bin/cturntbl.c:670
msgid "Drag to create stall track"
msgstr ""
-#: ../bin/cturntbl.c:618
+#: ../bin/cturntbl.c:728
#, fuzzy
msgid "Connect Turntable Tracks"
msgstr "Соединить два трека"
-#: ../bin/cturntbl.c:885
+#: ../bin/cturntbl.c:1058
msgid "Create Turntable"
msgstr "Создать разворотный рельÑ"
-#: ../bin/cturntbl.c:916
+#: ../bin/cturntbl.c:1090
#, fuzzy
msgid "Custom Turntable"
msgstr "Создать разворотный рельÑ"
-#: ../bin/cundo.c:166
+#: ../bin/cundo.c:266
msgid "Undo Trace"
msgstr "Отменить траÑÑировку"
-#: ../bin/cundo.c:536
+#: ../bin/cundo.c:741
#, c-format
msgid "Undo: %s"
msgstr "Отменить: %s"
-#: ../bin/cundo.c:539 ../../../../build/work/app/bin/bllnhlp.c:163
+#: ../bin/cundo.c:744 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:168
msgid "Undo last command"
msgstr "Отменить поÑледнюю команду"
-#: ../bin/cundo.c:544
+#: ../bin/cundo.c:749
#, c-format
msgid "Redo: %s"
msgstr "Повторить: %s"
-#: ../bin/cundo.c:547 ../../../../build/work/app/bin/bllnhlp.c:127
+#: ../bin/cundo.c:752 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:129
msgid "Redo last undo"
msgstr "Повторить поÑледнюю отмену"
-#: ../bin/custom.c:167
+#: ../bin/custom.c:148
#, c-format
msgid "%s Turnout Designer"
msgstr "%s Редактор Ñтрелок"
-#: ../bin/custom.c:172
+#: ../bin/custom.c:152
#, c-format
msgid "%s Version %s"
msgstr "%s ВерÑÐ¸Ñ %s"
-#: ../bin/custom.c:177
+#: ../bin/custom.c:156
#, c-format
msgid ""
"All %s Files (*.xtc,*.xtce)|*.xtc;*.xtce|%s Trackplan (*.xtc)|*.xtc|%s "
"Extended Trackplan (*.xtce)|*.xtce|All Files (*)|*"
msgstr ""
-#: ../bin/custom.c:188
+#: ../bin/custom.c:166
#, c-format
msgid ""
"%s Trackplan (*.xtc)|*.xtc|%s Extended Trackplan (*.xtce)|*.xtce|All Files "
"(*)|*"
msgstr ""
-#: ../bin/custom.c:197
+#: ../bin/custom.c:174
#, fuzzy, c-format
msgid "All Files (*)|*"
msgstr "Ð’Ñе файлы"
-#: ../bin/custom.c:202
+#: ../bin/custom.c:178
#, fuzzy, c-format
msgid "%s Import Files (*.xti)|*.xti"
msgstr "%s Импорт файлов|*.%sti"
-#: ../bin/custom.c:207
+#: ../bin/custom.c:182
#, fuzzy
msgid "Data Exchange Format Files (*.dxf)|*.dxf"
msgstr "Файлы формат обмена данными|*.dxf"
-#: ../bin/custom.c:211
+#: ../bin/custom.c:186
+msgid "Scalable Vector Graphics Format Files (*.svg)|*.svg"
+msgstr ""
+
+#: ../bin/custom.c:190
#, fuzzy, c-format
msgid "%s Record Files (*.xtr)|*.xtr"
msgstr "%s Файлы запиÑей|*.%str"
-#: ../bin/custom.c:216
+#: ../bin/custom.c:194
#, fuzzy, c-format
msgid "%s Note Files (*.not)|*.not"
msgstr "%s Файлы заметок|*.not"
-#: ../bin/custom.c:221
+#: ../bin/custom.c:198
#, fuzzy, c-format
msgid "%s Log Files (*.log)|*.log"
msgstr "%s Файлы логов|*.log"
-#: ../bin/custom.c:226
+#: ../bin/custom.c:202
#, fuzzy, c-format
msgid "%s PartsList Files (*.txt)|*.txt"
msgstr "%s Файлы запчаÑтей|*.txt"
-#: ../bin/dbench.c:43
+#: ../bin/dbench.c:38
msgid " L-Girder"
msgstr "L-профиль"
-#: ../bin/dbench.c:43
+#: ../bin/dbench.c:38
msgid " T-Girder"
msgstr "T-профиль"
-#: ../bin/dbench.c:66
+#: ../bin/dbench.c:61
msgid "On Edge"
msgstr "Ðа ребро"
-#: ../bin/dbench.c:67
+#: ../bin/dbench.c:62
msgid "Flat"
msgstr "ПлашмÑ"
-#: ../bin/dbench.c:71
+#: ../bin/dbench.c:67
msgid "Left-Down"
msgstr "Слева-Ñнизу"
-#: ../bin/dbench.c:72
+#: ../bin/dbench.c:68
msgid "Right-Down"
msgstr "Справа-Ñнизу"
-#: ../bin/dbench.c:73
+#: ../bin/dbench.c:69
msgid "Left-Up"
msgstr "Слева-Ñверху"
-#: ../bin/dbench.c:74
+#: ../bin/dbench.c:70
msgid "Right-Up"
msgstr "Справа-Ñверху"
-#: ../bin/dbench.c:75
+#: ../bin/dbench.c:71
msgid "Left-Inverted"
msgstr "Слева-инвертировано"
-#: ../bin/dbench.c:76
+#: ../bin/dbench.c:72
msgid "Right-Inverted"
msgstr "Справа-инверитровано"
-#: ../bin/dbench.c:81
+#: ../bin/dbench.c:78
msgid "Inverted"
msgstr "Инвертировано"
@@ -3764,693 +3873,686 @@ msgid ""
"%s"
msgstr ""
-#: ../bin/dbitmap.c:102 ../bin/dbitmap.c:106
+#: ../bin/dbitmap.c:150
+#, fuzzy
+msgid "Drawing tracks to bitmap"
+msgstr "Печать изображениÑ"
+
+#: ../bin/dbitmap.c:187
msgid "Drawn with "
msgstr ""
-#: ../bin/dbitmap.c:116
-msgid "Drawing tracks to BitMap"
+#: ../bin/dbitmap.c:229
+msgid "Writing bitmap to file"
msgstr ""
-#: ../bin/dbitmap.c:123
-msgid "Writing BitMap to file"
-msgstr ""
+#: ../bin/dbitmap.c:252
+#, fuzzy
+msgid "Layout Titles"
+msgstr "Заголовок"
+
+#: ../bin/dbitmap.c:253
+#, fuzzy
+msgid "Borders"
+msgstr "Граница"
+
+#: ../bin/dbitmap.c:254
+#, fuzzy
+msgid "Centerline of Track"
+msgstr "Добавить круглый трек"
-#: ../bin/dbitmap.c:144
-msgid "Print Titles"
-msgstr "Печатать заголовки"
+#: ../bin/dbitmap.c:255
+#, fuzzy
+msgid "Background Image"
+msgstr "Конечный угол"
-#: ../bin/dbitmap.c:144
-msgid "Print Borders"
-msgstr "Печатать границы"
+#: ../bin/dbitmap.c:262
+#, fuzzy
+msgid "Include "
+msgstr "â„–"
-#: ../bin/dbitmap.c:145
-msgid "Print Centerline"
-msgstr "Печатать центральную линию"
+#: ../bin/dbitmap.c:264
+msgid "Resolution "
+msgstr ""
-#: ../bin/dbitmap.c:152
-msgid " dpi"
+#: ../bin/dbitmap.c:265
+#, fuzzy
+msgid "dpi"
msgstr " dpi"
-#: ../bin/dbitmap.c:154
-msgid "Bitmap : 99999 by 99999 pixels"
+#: ../bin/dbitmap.c:266
+#, fuzzy
+msgid "Bitmap Size "
+msgstr "Файлы изображений|*.xpm"
+
+#: ../bin/dbitmap.c:268
+#, fuzzy
+msgid "99999 by 99999 pixels"
msgstr "РиÑунок : 99999 на 99999 пикÑелей"
-#: ../bin/dbitmap.c:156
-msgid "Approximate file size: 999.9Mb"
-msgstr "Примерный размер файла: 999.9Мб"
+#: ../bin/dbitmap.c:269
+#, fuzzy
+msgid "Approximate File Size "
+msgstr "Примерный размер файла: %0.0f"
-#: ../bin/dbitmap.c:186
-#, c-format
-msgid "Bitmap : %ld by %ld pixels"
+#: ../bin/dbitmap.c:271
+#, fuzzy
+msgid "999.9Mb"
+msgstr "999.9"
+
+#: ../bin/dbitmap.c:317
+#, fuzzy, c-format
+msgid "%ld by %ld pixels"
msgstr "Изображение : %ld на %ld пикÑелей"
-#: ../bin/dbitmap.c:190
+#: ../bin/dbitmap.c:339
#, c-format
-msgid "Approximate file size : %0.0f"
-msgstr "Примерный размер файла: %0.0f"
+msgid "%0.0f"
+msgstr ""
-#: ../bin/dbitmap.c:192
+#: ../bin/dbitmap.c:341
#, c-format
-msgid "Approximate file size : %0.1fKb"
-msgstr "Примерный размер файла: %0.1fКб"
+msgid "%0.1fKb"
+msgstr ""
-#: ../bin/dbitmap.c:194
+#: ../bin/dbitmap.c:343
#, c-format
-msgid "Approximate file size : %0.1fMb"
-msgstr "Примерный размер файла: %0.1fМб"
+msgid "%0.1fMb"
+msgstr ""
+
+#: ../bin/dbitmap.c:345
+#, c-format
+msgid "%0.1fGb"
+msgstr ""
-#: ../bin/dbitmap.c:213
+#: ../bin/dbitmap.c:436
msgid "Save Bitmap"
msgstr "Сохранить изображение"
-#: ../bin/dbitmap.c:217
-#, fuzzy
-msgid "Bitmap files (*.png)|*.png"
-msgstr "Файлы изображений|*.bmp"
+#: ../bin/dbitmap.c:437
+msgid ""
+"Portable Network Graphics format (*.png)|*.png|JPEG format (*.jpg)|*.jpg"
+msgstr ""
-#: ../bin/dbitmap.c:238
-msgid "BitMap"
-msgstr "Изображение"
+#: ../bin/dbitmap.c:472
+#, fuzzy
+msgid "Export to bitmap"
+msgstr "ЭкÑпорт в изображение"
-#: ../bin/dcar.c:54
+#: ../bin/dcar.c:45
msgid "Truck"
msgstr ""
-#: ../bin/dcar.c:54
+#: ../bin/dcar.c:45
msgid "Body"
msgstr "Тело"
-#: ../bin/dcar.c:156 ../bin/dcar.c:2701 ../bin/dcar.c:2705
+#: ../bin/dcar.c:148 ../bin/dcar.c:2860 ../bin/dcar.c:2867
msgid "Unknown"
msgstr "ÐеизвеÑтно"
-#: ../bin/dcar.c:478
+#: ../bin/dcar.c:481
msgid "Diesel Loco"
msgstr "Дизельный локомотив"
-#: ../bin/dcar.c:479
+#: ../bin/dcar.c:482
msgid "Steam Loco"
msgstr "Паровоз"
-#: ../bin/dcar.c:480
+#: ../bin/dcar.c:483
msgid "Elect Loco"
msgstr "Электровоз"
-#: ../bin/dcar.c:481
+#: ../bin/dcar.c:484
msgid "Freight Car"
msgstr "Грузовой вагон"
-#: ../bin/dcar.c:482
+#: ../bin/dcar.c:485
msgid "Psngr Car"
msgstr "ПаÑÑажирÑкий вагон"
-#: ../bin/dcar.c:483
+#: ../bin/dcar.c:486
msgid "M-O-W"
msgstr ""
-#: ../bin/dcar.c:484
+#: ../bin/dcar.c:487
msgid "Other"
msgstr "Другие"
-#: ../bin/dcar.c:1183 ../bin/dcar.c:5078
+#: ../bin/dcar.c:1237 ../bin/dcar.c:5478
msgid "N/A"
msgstr "ÐеизвеÑтно"
-#: ../bin/dcar.c:1184 ../bin/dcar.c:5083
+#: ../bin/dcar.c:1238 ../bin/dcar.c:5483
msgid "Mint"
msgstr "Ðовое"
-#: ../bin/dcar.c:1185 ../bin/dcar.c:5082
+#: ../bin/dcar.c:1239 ../bin/dcar.c:5482
msgid "Excellent"
msgstr "ПревоÑходное"
-#: ../bin/dcar.c:1186 ../bin/dcar.c:5081
+#: ../bin/dcar.c:1240 ../bin/dcar.c:5481
msgid "Good"
msgstr "Хорошее"
-#: ../bin/dcar.c:1187 ../bin/dcar.c:5080
+#: ../bin/dcar.c:1241 ../bin/dcar.c:5480
msgid "Fair"
msgstr "Так Ñебе"
-#: ../bin/dcar.c:1188 ../bin/dcar.c:5079
+#: ../bin/dcar.c:1242 ../bin/dcar.c:5479
msgid "Poor"
msgstr "Плохое"
-#: ../bin/dcar.c:1501 ../bin/dpricels.c:45
-#: ../../../../build/work/app/bin/bllnhlp.c:445
+#: ../bin/dcar.c:1580 ../bin/dpricels.c:42
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:518
msgid "Item"
msgstr ""
-#: ../bin/dcar.c:2173 ../wlib/gtklib/notice.c:96 ../wlib/mswlib/mswmisc.c:2095
+#: ../bin/dcar.c:2282 ../wlib/mswlib/mswmisc.c:2057
msgid "Information"
msgstr "ИнформациÑ"
-#: ../bin/dcar.c:2173
+#: ../bin/dcar.c:2282
msgid "Customize"
msgstr "Внешний вид"
-#: ../bin/dcar.c:2185
+#: ../bin/dcar.c:2296
msgid "Sequential"
msgstr ""
-#: ../bin/dcar.c:2185
+#: ../bin/dcar.c:2296
msgid "Repeated"
msgstr ""
-#: ../bin/dcar.c:2196 ../bin/dcar.c:2198 ../bin/dcar.c:5408
+#: ../bin/dcar.c:2307 ../bin/dcar.c:2309 ../bin/dcar.c:5838
msgid "Prototype"
msgstr "Ðазвание"
-#: ../bin/dcar.c:2204
+#: ../bin/dcar.c:2315
msgid "Part"
msgstr "ЗапчаÑÑ‚ÑŒ"
-#: ../bin/dcar.c:2206 ../../../../build/work/app/bin/bllnhlp.c:377
-#: ../../../../build/work/app/bin/bllnhlp.c:573
-#: ../../../../build/work/app/bin/bllnhlp.c:574
+#: ../bin/dcar.c:2317 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:419
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:659
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:660
msgid "Part Number"
msgstr "Ðомер запчаÑти"
-#: ../bin/dcar.c:2208
+#: ../bin/dcar.c:2319
msgid "Loco?"
msgstr "Поезд?"
-#: ../bin/dcar.c:2212 ../bin/dcar.c:4404
+#: ../bin/dcar.c:2323 ../bin/dcar.c:4734
msgid "Import"
msgstr "Импорт"
-#: ../bin/dcar.c:2219
+#: ../bin/dcar.c:2330
msgid "Mode"
msgstr "Режим"
-#: ../bin/dcar.c:2223
+#: ../bin/dcar.c:2334
msgid "Road"
msgstr "Дорога"
-#: ../bin/dcar.c:2225
+#: ../bin/dcar.c:2336
msgid "Reporting Mark"
msgstr ""
-#: ../bin/dcar.c:2227
+#: ../bin/dcar.c:2338
msgid "Number"
msgstr "Ðомер"
-#: ../bin/dcar.c:2231
+#: ../bin/dcar.c:2342
msgid "Car Length"
msgstr "Длина вагона"
-#: ../bin/dcar.c:2235
+#: ../bin/dcar.c:2346
msgid "Truck Centers"
msgstr "КолёÑÐ½Ð°Ñ Ð±Ð°Ð·Ð°"
-#: ../bin/dcar.c:2239
+#: ../bin/dcar.c:2350
msgid "Coupler Mount"
msgstr ""
-#: ../bin/dcar.c:2241
+#: ../bin/dcar.c:2352
msgid "Coupled Length"
msgstr ""
-#: ../bin/dcar.c:2243 ../bin/dcar.c:4251
+#: ../bin/dcar.c:2354 ../bin/dcar.c:4564
msgid "Coupler Length"
msgstr ""
-#: ../bin/dcar.c:2251
+#: ../bin/dcar.c:2362
msgid "Purchase Price"
msgstr "Цена покупки"
-#: ../bin/dcar.c:2253 ../../../../build/work/app/bin/bllnhlp.c:241
+#: ../bin/dcar.c:2364 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:266
msgid "Current Price"
msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñ†ÐµÐ½Ð°"
-#: ../bin/dcar.c:2255 ../bin/dcar.c:4368 ../bin/dcar.c:4373
+#: ../bin/dcar.c:2366 ../bin/dcar.c:4696 ../bin/dcar.c:4702
msgid "Condition"
msgstr "СоÑтоÑние"
-#: ../bin/dcar.c:2257
+#: ../bin/dcar.c:2368
msgid "Purchase Date"
msgstr "Дата покупки"
-#: ../bin/dcar.c:2259 ../bin/dcar.c:4373
+#: ../bin/dcar.c:2370 ../bin/dcar.c:4702
msgid "Service Date"
msgstr "Дата обÑлуживаниÑ"
-#: ../bin/dcar.c:2261
+#: ../bin/dcar.c:2372
msgid "Quantity"
msgstr "КоличеÑтво"
-#: ../bin/dcar.c:2263
+#: ../bin/dcar.c:2374
msgid "Numbers"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:371
-#: ../bin/dcar.c:2265 ../bin/dcar.c:4369 ../bin/trknote.c:708
-#: ../../../../build/work/app/i18n/custmsg.h:1267
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:487
+#: ../bin/dcar.c:2376 ../bin/dcar.c:4697 ../bin/trknote.c:594
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1286
msgid "Notes"
msgstr "Заметки"
-#: ../bin/dcar.c:2272
+#: ../bin/dcar.c:2383
msgid "Car Part"
msgstr ""
-#: ../bin/dcar.c:2273 ../../../../build/work/app/bin/bllnhlp.c:215
-#: ../../../../build/work/app/bin/bllnhlp.c:216
+#: ../bin/dcar.c:2384 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:240
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:241
msgid "Car Prototype"
msgstr ""
-#: ../bin/dcar.c:2635 ../bin/dcar.c:2952
+#: ../bin/dcar.c:2776 ../bin/dcar.c:3143
msgid "Undecorated"
msgstr ""
-#: ../bin/dcar.c:2693 ../bin/dcar.c:2697 ../bin/paramfilelist.c:376
+#: ../bin/dcar.c:2849 ../bin/dcar.c:2855 ../bin/paramfilelist.c:458
msgid "Custom"
msgstr ""
-#: ../bin/dcar.c:2862
+#: ../bin/dcar.c:3049
msgid "Undecorated "
msgstr ""
-#: ../bin/dcar.c:3084
+#: ../bin/dcar.c:3298
#, c-format
msgid "New %s Scale Car"
msgstr ""
-#: ../bin/dcar.c:3085 ../bin/dcar.c:3094 ../bin/dcar.c:3103 ../bin/dcar.c:4284
-#: ../bin/dcar.c:4400 ../bin/paramfilesearch_ui.c:74
+#: ../bin/dcar.c:3299 ../bin/dcar.c:3308 ../bin/dcar.c:3318 ../bin/dcar.c:4598
+#: ../bin/dcar.c:4730 ../bin/paramfilesearch_ui.c:75
msgid "Add"
msgstr "Добавить"
-#: ../bin/dcar.c:3087
+#: ../bin/dcar.c:3301
#, c-format
msgid "Update %s Scale Car"
msgstr ""
-#: ../bin/dcar.c:3088 ../bin/dcar.c:3097 ../bin/dcar.c:3106
-#: ../bin/dcmpnd.c:173
+#: ../bin/dcar.c:3302 ../bin/dcar.c:3312 ../bin/dcar.c:3321
+#: ../bin/dcmpnd.c:178
msgid "Update"
msgstr "Обновить"
-#: ../bin/dcar.c:3093
+#: ../bin/dcar.c:3307
#, c-format
msgid "New %s Scale Car Part"
msgstr ""
-#: ../bin/dcar.c:3096
+#: ../bin/dcar.c:3310
#, c-format
msgid "Update %s Scale Car Part"
msgstr ""
-#: ../bin/dcar.c:3102
+#: ../bin/dcar.c:3317
msgid "New Prototype"
msgstr "Ðовый тип вагона"
-#: ../bin/dcar.c:3105
+#: ../bin/dcar.c:3320
msgid "Update Prototype"
msgstr "Обновить прототип"
-#: ../bin/dcar.c:3777
-msgid "Enter a 8 digit numeric date"
-msgstr "Введите 8 цифр даты"
+#: ../bin/dcar.c:4009
+msgid "Truck Center Offset plus Truck Centers must be less than Car Length"
+msgstr ""
-#: ../bin/dcar.c:3780
-msgid "Enter a 8 digit date"
+#: ../bin/dcar.c:4070 ../bin/dcar.c:4074
+#, fuzzy
+msgid "Enter a 8 digit numeric date (yyyymmdd)"
msgstr "Введите 8 цифр даты"
-#: ../bin/dcar.c:3782
+#: ../bin/dcar.c:4077
msgid "Enter a date between 19000101 and 21991231"
msgstr "Введите дату между 19000101 и 21991231"
-#: ../bin/dcar.c:3787
+#: ../bin/dcar.c:4083
msgid "Invalid month"
msgstr "Ðеправильный меÑÑц"
-#: ../bin/dcar.c:3789
+#: ../bin/dcar.c:4086
msgid "Invalid day"
msgstr "Ðеправильный день"
-#: ../bin/dcar.c:3881
-msgid "Enter a Prototype name"
-msgstr "Введите название прототипа"
-
-#: ../bin/dcar.c:3883
+#: ../bin/dcar.c:4184
msgid "Select or Enter a Manufacturer"
msgstr "Выберите или Ñоздайте производителÑ"
-#: ../bin/dcar.c:3885
-msgid "Enter a Part Number"
-msgstr "Введите номер запчаÑти"
-
-#: ../bin/dcar.c:3887
-msgid "Enter the Car Length"
-msgstr "Введите длину вагона"
-
-#: ../bin/dcar.c:3889
-msgid "Enter the Car Width"
-msgstr "Введите ширину вагона"
-
-#: ../bin/dcar.c:3891
-msgid "Enter the Truck Centers"
-msgstr "Введите центры треков"
-
-#: ../bin/dcar.c:3893
-msgid "Truck Center Offset must be greater than 0 or 0"
-msgstr ""
-
-#: ../bin/dcar.c:3895
-msgid "Truck Centers must be less than Car Length"
-msgstr ""
-
-#: ../bin/dcar.c:3897
-msgid "Truck Center Offset plus Truck Centers must be less than Car Length"
-msgstr ""
-
-#: ../bin/dcar.c:3899
-msgid "Enter the Coupled Length or Coupler Length"
-msgstr ""
-
-#: ../bin/dcar.c:3901
-msgid "Enter the Coupled Length"
-msgstr ""
-
-#: ../bin/dcar.c:3903
-msgid "Enter a item Index"
-msgstr ""
-
-#: ../bin/dcar.c:3905
-msgid "Purchase Price is not valid"
-msgstr ""
-
-#: ../bin/dcar.c:3907
-msgid "Current Price is not valid"
-msgstr ""
-
-#: ../bin/dcar.c:3909
-msgid "Purchase Date is not valid"
-msgstr ""
-
-#: ../bin/dcar.c:3911
-msgid "Service Date is not valid"
-msgstr ""
-
-#: ../bin/dcar.c:3914
+#: ../bin/dcar.c:4188
#, c-format
msgid "Item Index %ld duplicated an existing item: updated to new value"
msgstr ""
-#: ../bin/dcar.c:4110
+#: ../bin/dcar.c:4410
#, c-format
msgid "Added %ld new Cars"
msgstr "Добавлено %ld новых вагонов"
-#: ../bin/dcar.c:4112
+#: ../bin/dcar.c:4412
msgid "Added new Car"
msgstr "Добавлен новый вагон"
-#: ../bin/dcar.c:4115
+#: ../bin/dcar.c:4415
msgid "Updated Car"
msgstr "Вагон обновлён"
-#: ../bin/dcar.c:4118
+#: ../bin/dcar.c:4418
msgid " and Part"
msgstr ""
-#: ../bin/dcar.c:4145
+#: ../bin/dcar.c:4450
#, c-format
msgid "%s Part: %s %s %s %s %s %s"
msgstr ""
-#: ../bin/dcar.c:4145 ../bin/dcar.c:4162
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
msgid "Added new"
msgstr "Добавлен новый"
-#: ../bin/dcar.c:4145 ../bin/dcar.c:4162
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
msgid "Updated"
msgstr "Обновлён"
-#: ../bin/dcar.c:4161
+#: ../bin/dcar.c:4472
#, c-format
msgid "%s Prototype: %s%s."
msgstr "%s Тип: %s%s."
-#: ../bin/dcar.c:4163
+#: ../bin/dcar.c:4474
msgid ". Enter new values or press Close"
msgstr ". Введите новые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ нажмите Закрыть"
-#: ../bin/dcar.c:4284
+#: ../bin/dcar.c:4598
msgid "New Car Part"
msgstr "ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ð¿Ñ‡Ð°ÑÑ‚ÑŒ"
-#: ../bin/dcar.c:4367 ../bin/dcar.c:4372
-#: ../../../../build/work/app/bin/bllnhlp.c:415
+#: ../bin/dcar.c:4694 ../bin/dcar.c:4700 ../bin/dcustmgm.c:46
+#: ../bin/dlayer.c:561 ../bin/layout.c:662 ../bin/scale.c:845
+msgid "Scale"
+msgstr "МаÑштаб"
+
+#: ../bin/dcar.c:4695 ../bin/dcar.c:4701
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:488
msgid "Roadname"
msgstr "Ð˜Ð¼Ñ Ð¿ÑƒÑ‚Ð¸"
-#: ../bin/dcar.c:4367
+#: ../bin/dcar.c:4695
+msgid "Rep Marks"
+msgstr ""
+
+#: ../bin/dcar.c:4695
msgid "Purc Price"
msgstr "Цена покупки"
-#: ../bin/dcar.c:4368 ../bin/dcar.c:4373
+#: ../bin/dcar.c:4696 ../bin/dcar.c:4702
msgid "Curr Price"
msgstr "Текущ. цена"
-#: ../bin/dcar.c:4368
+#: ../bin/dcar.c:4696
msgid "Purc Date"
msgstr "Дата покупки"
-#: ../bin/dcar.c:4368
+#: ../bin/dcar.c:4696
msgid "Srvc Date"
msgstr "Дата обÑл."
-#: ../bin/dcar.c:4369
+#: ../bin/dcar.c:4697
msgid "Locat'n"
msgstr "МеÑто"
-#: ../bin/dcar.c:4372
+#: ../bin/dcar.c:4701
msgid "RepMarks"
msgstr "Метки"
-#: ../bin/dcar.c:4372
+#: ../bin/dcar.c:4701
msgid "Purch Price"
msgstr "Цена покупки"
-#: ../bin/dcar.c:4373
+#: ../bin/dcar.c:4702
msgid "Purch Date"
msgstr "Дата покупки"
-#: ../bin/dcar.c:4390
+#: ../bin/dcar.c:4720
msgid "Sort By"
msgstr "Сортировка"
-#: ../bin/dcar.c:4398 ../bin/dcontmgm.c:99 ../bin/dcustmgm.c:71
-#: ../bin/dcustmgm.c:108
+#: ../bin/dcar.c:4728 ../bin/dcustmgm.c:58 ../bin/dcustmgm.c:98
+#: ../bin/dcontmgm.c:88
msgid "Edit"
msgstr "Правка"
-#: ../bin/dcar.c:4402 ../bin/dcontmgm.c:101 ../bin/dcustmgm.c:73
-#: ../bin/misc.c:2285
+#: ../bin/dcar.c:4732 ../bin/dcar.c:5654 ../bin/dcustmgm.c:60
+#: ../bin/dcontmgm.c:90 ../bin/menu.c:992
msgid "Delete"
msgstr "Удалить"
-#: ../bin/dcar.c:4406 ../bin/fileio.c:1517
+#: ../bin/dcar.c:4736 ../bin/fileio.c:1631
msgid "Export"
msgstr "ЭкÑпорт"
-#: ../bin/dcar.c:4408 ../../../../build/work/app/bin/bllnhlp.c:590
+#: ../bin/dcar.c:4738 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:676
msgid "List"
msgstr "СпиÑок"
-#: ../bin/dcar.c:4519 ../bin/dcar.c:5257 ../bin/misc.c:2663
+#: ../bin/dcar.c:4894 ../bin/dcar.c:5686 ../bin/menu.c:1416
msgid "Car Inventory"
msgstr "Депо"
-#: ../bin/dcar.c:4639
+#: ../bin/dcar.c:5026
msgid "List Cars"
msgstr "СпиÑок машин"
-#: ../bin/dcar.c:4763 ../bin/dcar.c:4929
+#: ../bin/dcar.c:5150 ../bin/dcar.c:5322
msgid "Import Cars"
msgstr "Импортировать машины"
-#: ../bin/dcar.c:4930 ../bin/dcar.c:5053
+#: ../bin/dcar.c:5323 ../bin/dcar.c:5453
#, fuzzy
msgid "Comma-Separated-Values (*.csv)|*.csv"
msgstr "ЗначениÑ, разделённые запÑтой|*.csv"
-#: ../bin/dcar.c:5000 ../bin/dcar.c:5052
+#: ../bin/dcar.c:5395 ../bin/dcar.c:5452
msgid "Export Cars"
msgstr "ЭкÑпорт машин"
-#: ../bin/dcar.c:5086
-msgid "Layout"
-msgstr "Проект"
-
-#: ../bin/dcar.c:5088
+#: ../bin/dcar.c:5494
msgid "Shelf"
msgstr "Полка"
-#: ../bin/dcmpnd.c:77 ../bin/dlayer.c:499 ../bin/misc.c:656 ../bin/misc.c:688
+#: ../bin/dcar.c:5653
+#, fuzzy
+msgid "Shelve"
+msgstr "Полка"
+
+#: ../bin/dcmpnd.c:73 ../bin/dlayer.c:590 ../bin/menu.c:364 ../bin/menu.c:398
msgid "Load"
msgstr "Загрузить"
-#: ../bin/dcmpnd.c:110
+#: ../bin/dcmpnd.c:111
msgid "Updating definitions, please wait"
msgstr "Обновление определений, пожалуйÑта ждите"
-#: ../bin/dcmpnd.c:173
+#: ../bin/dcmpnd.c:178
msgid "Update Title"
msgstr "Обновить заголовок"
-#: ../bin/dcmpnd.c:233
+#: ../bin/dcmpnd.c:244
#, c-format
msgid "End-Point #%d of the selected and actual turnouts are not close"
msgstr ""
-#: ../bin/dcmpnd.c:242
+#: ../bin/dcmpnd.c:255
#, c-format
msgid "End-Point #%d of the selected and actual turnouts are not aligned"
msgstr ""
-#: ../bin/dcmpnd.c:261
+#: ../bin/dcmpnd.c:274
msgid "The selected Turnout had a differing number of End-Points"
msgstr ""
-#: ../bin/dcmpnd.c:327
+#: ../bin/dcmpnd.c:341
msgid "Skip"
msgstr "ПропуÑтить"
-#: ../bin/dcmpnd.c:359
+#: ../bin/dcmpnd.c:374
#, c-format
msgid "%d Track(s) refreshed"
msgstr "%d трек(ов) обновлено"
-#: ../bin/dcmpnd.c:399
+#: ../bin/dcmpnd.c:419
msgid "Refresh Turnout/Structure"
msgstr "Обновить Стрелку/Структуру"
-#: ../bin/dcmpnd.c:401
+#: ../bin/dcmpnd.c:423
msgid "Choose a Turnout/Structure to replace:"
msgstr "Выберите Стрелку/Структуру Ð´Ð»Ñ Ð·Ð°Ð¼ÐµÐ½Ñ‹:"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:341
-#: ../bin/dcmpnd.c:411 ../bin/doption.c:132
-#: ../../../../build/work/app/i18n/custmsg.h:1207
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:457
+#: ../bin/dcmpnd.c:436 ../bin/doption.c:94
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1226
msgid "Turnouts"
msgstr "Стрелки"
-#: ../bin/dcmpnd.c:411
+#: ../bin/dcmpnd.c:436
msgid "Structures"
msgstr "Структуры"
-#: ../bin/dcmpnd.c:440
+#: ../bin/dcmpnd.c:467
msgid "Choose another Turnout/Structure to replace:"
msgstr "Выберите другую Стрелку/Структуру Ð´Ð»Ñ Ð·Ð°Ð¼ÐµÐ½Ñ‹:"
-#: ../bin/dcmpnd.c:542
+#: ../bin/dcmpnd.c:582
msgid "Rename Object"
msgstr "Переименовать объект"
-#: ../bin/dcontmgm.c:92
-msgid "Tracks"
-msgstr "Треки"
-
-#: ../bin/dcontmgm.c:173
-#, c-format
-msgid "Are you sure you want to delete the %d control element(s)"
-msgstr "Ð’Ñ‹ уверены, что хотите удалить %d Ñлементов"
-
-#: ../bin/dcontmgm.c:176
-msgid "Control Elements"
-msgstr "Элементы управлениÑ"
-
-#: ../bin/dcontmgm.c:299
-msgid "Manage Layout Control Elements"
-msgstr "Управление Ñлементами проекта"
-
-#: ../bin/dcustmgm.c:67
+#: ../bin/dcustmgm.c:54
#, fuzzy
msgid "Create a new "
msgstr "Создать полилинию"
-#: ../bin/dcustmgm.c:69
+#: ../bin/dcustmgm.c:56
#, fuzzy
msgid "Go"
msgstr "Хорошее"
-#: ../bin/dcustmgm.c:75
+#: ../bin/dcustmgm.c:62
msgid "Move To"
msgstr "ПеремеÑтить"
-#: ../bin/dcustmgm.c:108
+#: ../bin/dcustmgm.c:98
msgid "Rename"
msgstr "Переименовать"
-#: ../bin/dcustmgm.c:189
+#: ../bin/dcustmgm.c:186
msgid "Label"
msgstr "Метка"
-#: ../bin/dcustmgm.c:227
+#: ../bin/dcustmgm.c:225
msgid "Contents Label"
msgstr "Содержимое метки"
-#: ../bin/dcustmgm.c:283
+#: ../bin/dcustmgm.c:284
msgid "Move To XTP"
msgstr "ПеремеÑтить в XTP"
-#: ../bin/dcustmgm.c:284
+#: ../bin/dcustmgm.c:285
#, fuzzy
msgid "Parameter File (*.xtp)|*.xtp"
msgstr "Файл параметров|*.xtp"
-#: ../bin/dcustmgm.c:395
+#: ../bin/dcustmgm.c:407
msgid "Manage custom designed parts"
msgstr "Управление Ñлементами неÑтандартного дизайна"
-#: ../bin/dease.c:67
+#: ../bin/dcontmgm.c:80
+msgid "Tracks"
+msgstr "Треки"
+
+#: ../bin/dcontmgm.c:167
+#, c-format
+msgid "Are you sure you want to delete the %d control element(s)"
+msgstr "Ð’Ñ‹ уверены, что хотите удалить %d Ñлементов"
+
+#: ../bin/dcontmgm.c:172
+msgid "Control Elements"
+msgstr "Элементы управлениÑ"
+
+#: ../bin/dcontmgm.c:308
+msgid "Manage Layout Control Elements"
+msgstr "Управление Ñлементами проекта"
+
+#: ../bin/dease.c:68
msgid "Sharp"
msgstr "ОÑтрые"
-#: ../bin/dease.c:67
+#: ../bin/dease.c:68
msgid "Broad"
msgstr "Широкие"
-#: ../bin/dease.c:67
+#: ../bin/dease.c:68
msgid "Cornu"
msgstr "Отриц."
-#: ../bin/dease.c:74
+#: ../bin/dease.c:76
msgid "Value"
msgstr "Значение"
-#: ../bin/dease.c:75 ../bin/tease.c:525
+#: ../bin/dease.c:77 ../bin/tease.c:530
msgid "R"
msgstr "Рад."
-#: ../bin/dease.c:77 ../bin/tease.c:526
+#: ../bin/dease.c:79 ../bin/tease.c:531
msgid "L"
msgstr "Дл."
-#: ../bin/dease.c:242
+#: ../bin/dease.c:250
msgid "Easement"
msgstr "УпрощениÑ"
-#: ../bin/denum.c:49
+#: ../bin/denum.c:44
msgid "Prices"
msgstr "Цены"
-#: ../bin/denum.c:54
+#: ../bin/denum.c:45 ../bin/denum.c:139
+#, fuzzy
+msgid "Indexes"
+msgstr "â„–"
+
+#: ../bin/denum.c:50
msgid "Save As ..."
msgstr "Сохранить как ..."
-#: ../bin/denum.c:134 ../bin/denum.c:189 ../bin/denum.c:224
+#: ../bin/denum.c:135 ../bin/denum.c:198 ../bin/denum.c:236
msgid "Each"
msgstr "Цена"
-#: ../bin/denum.c:148 ../bin/denum.c:149
+#: ../bin/denum.c:152 ../bin/denum.c:154
msgid "Parts List"
msgstr "СпиÑок компонентов"
-#: ../bin/denum.c:154
+#: ../bin/denum.c:160
#, c-format
msgid ""
"%s Parts List\n"
@@ -4459,795 +4561,913 @@ msgstr ""
"%s СпиÑок компонентов\n"
"\n"
-#: ../bin/denum.c:189 ../bin/denum.c:226 ../bin/denum.c:235
+#: ../bin/denum.c:199 ../bin/denum.c:238 ../bin/denum.c:248
msgid "Extended"
msgstr "Сумма"
-#: ../bin/denum.c:235 ../bin/denum.c:238
+#: ../bin/denum.c:247 ../bin/denum.c:251
msgid "Total"
msgstr "Итого"
-#: ../bin/dlayer.c:487
+#: ../bin/dlayer.c:541
+#, fuzzy
+msgid "Select Layer:"
+msgstr "Сохранить текущий Ñлой"
+
+#: ../bin/dlayer.c:547
#, fuzzy
msgid "Use Color"
msgstr "%s Цвет"
-#: ../bin/dlayer.c:489
+#: ../bin/dlayer.c:549
msgid "Visible"
msgstr "Показывать"
-#: ../bin/dlayer.c:491
+#: ../bin/dlayer.c:551
msgid "Frozen"
msgstr "Заморожен"
-#: ../bin/dlayer.c:493
+#: ../bin/dlayer.c:553
msgid "On Map"
msgstr "Ðа карте"
-#: ../bin/dlayer.c:495
+#: ../bin/dlayer.c:555
#, fuzzy
msgid "Module"
msgstr "Режим"
-#: ../bin/dlayer.c:498
-msgid "Personal Preferences"
-msgstr "ПерÑональные наÑтройки"
+#: ../bin/dlayer.c:557
+#, fuzzy
+msgid "No Button"
+msgstr "Отмена / повтор"
-#: ../bin/dlayer.c:500 ../bin/macro.c:1421
-msgid "Save"
-msgstr "Сохранить"
+#: ../bin/dlayer.c:559
+#, fuzzy
+msgid "Inherit"
+msgstr "Инвертировано"
-#: ../bin/dlayer.c:501
-msgid "Defaults"
+#: ../bin/dlayer.c:563 ../bin/layout.c:664
+msgid " Gauge"
+msgstr " КолеÑ"
+
+#: ../bin/dlayer.c:565 ../bin/layout.c:666
+msgid "Min Track Radius"
+msgstr "Мин. Ñ€Ð°Ð´Ð¸ÑƒÑ Ñ‚Ñ€ÐµÐºÐ°"
+
+#: ../bin/dlayer.c:567 ../bin/layout.c:667
+#, fuzzy
+msgid " Max Track Grade (%)"
+msgstr " МакÑ. наклон трека (%)"
+
+#: ../bin/dlayer.c:569
+#, fuzzy
+msgid "Tie Length"
+msgstr "ÐžÐ±Ñ‰Ð°Ñ Ð´Ð»Ð¸Ð½Ð°"
+
+#: ../bin/dlayer.c:571
+#, fuzzy
+msgid " Width"
+msgstr "Ширина"
+
+#: ../bin/dlayer.c:573
+#, fuzzy
+msgid " Spacing"
+msgstr "Размер"
+
+#: ../bin/dlayer.c:575
+#, fuzzy
+msgid "Layer Actions"
+msgstr "Управление ÑлоÑми"
+
+#: ../bin/dlayer.c:577
+#, fuzzy
+msgid "Add Layer"
+msgstr "Слой"
+
+#: ../bin/dlayer.c:579
+#, fuzzy
+msgid "Delete Layer"
+msgstr "Сохранить текущий Ñлой"
+
+#: ../bin/dlayer.c:581
+#, fuzzy
+msgid "Default Values"
msgstr "По-умолчанию"
-#: ../bin/dlayer.c:502
+#: ../bin/dlayer.c:582
msgid "Number of Layer Buttons"
msgstr "Кол-во кнопок Ñлоёв"
-#: ../bin/dlayer.c:519 ../bin/dlayer.c:987 ../bin/dlayer.c:1000
-#: ../bin/dlayer.c:1051
+#: ../bin/dlayer.c:584
+#, fuzzy
+msgid "Linked Layers"
+msgstr "Изменить Ñлои"
+
+#: ../bin/dlayer.c:586
+msgid "Settings when Current"
+msgstr ""
+
+#: ../bin/dlayer.c:588
+#, fuzzy
+msgid "Object Count:"
+msgstr "Переименовать объект"
+
+#: ../bin/dlayer.c:589
+#, fuzzy
+msgid "All Layer Preferences"
+msgstr "ÐаÑтройки предпочтений"
+
+#: ../bin/dlayer.c:591 ../bin/macro.c:1431
+msgid "Save"
+msgstr "Сохранить"
+
+#: ../bin/dlayer.c:592
+msgid "Defaults"
+msgstr "По-умолчанию"
+
+#: ../bin/dlayer.c:710 ../bin/dlayer.c:1563 ../bin/dlayer.c:1581
+#: ../bin/dlayer.c:1651
msgid "Main"
msgstr "Главный"
-#: ../bin/dlayer.c:632 ../bin/dlayer.c:925 ../bin/dlayer.c:1003
-#: ../bin/dlayer.c:1053 ../bin/dlayer.c:1311
+#: ../bin/dlayer.c:842
+msgid "Layer must not have any objects in it."
+msgstr ""
+
+#: ../bin/dlayer.c:1007 ../bin/dlayer.c:1452 ../bin/dlayer.c:1584
+#: ../bin/dlayer.c:1653
msgid "Show/Hide Layer"
msgstr "Показать/СпрÑтать Ñлой"
-#: ../bin/dlayer.c:1124
+#: ../bin/dlayer.c:2071
msgid "Layers"
msgstr "Слои"
-#: ../bin/doption.c:95
-msgid "Turning off AutoSave"
-msgstr ""
-
-#: ../bin/doption.c:104
-msgid "Turning on CheckPointing"
-msgstr ""
+#: ../bin/dlayer.c:2334 ../bin/menu.c:960
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:17
+#, fuzzy
+msgid "Show/Hide Background"
+msgstr "Показать/СпрÑтать Ñлой"
-#: ../bin/doption.c:130
+#: ../bin/doption.c:92
msgid "Auto Pan"
msgstr "ÐвтомаÑштаб"
-#: ../bin/doption.c:132
+#: ../bin/doption.c:94
msgid "All"
msgstr "Ð’Ñе"
-#: ../bin/doption.c:133
+#: ../bin/doption.c:95
msgid "Thick"
msgstr "ТолÑтые"
-#: ../bin/doption.c:133
+#: ../bin/doption.c:95
msgid "Exception"
msgstr "Выделенные"
-#: ../bin/doption.c:134
+#: ../bin/doption.c:96
msgid "Outline"
msgstr "Контур"
-#: ../bin/doption.c:135
+#: ../bin/doption.c:97
msgid "Off"
msgstr "Ðет"
-#: ../bin/doption.c:135
+#: ../bin/doption.c:97
msgid "On"
msgstr "Да"
-#: ../bin/doption.c:136
+#: ../bin/doption.c:98
msgid "Track Descriptions"
msgstr "ОпиÑание трека"
-#: ../bin/doption.c:136
+#: ../bin/doption.c:98
msgid "Lengths"
msgstr "Длины"
-#: ../bin/doption.c:136
+#: ../bin/doption.c:98
msgid "EndPt Elevations"
msgstr "Крайние точки"
-#: ../bin/doption.c:136
+#: ../bin/doption.c:98
msgid "Track Elevations"
msgstr "Ð’Ñ‹Ñоты трека"
-#: ../bin/doption.c:136
+#: ../bin/doption.c:98
msgid "Cars"
msgstr "Вагоны"
-#: ../bin/doption.c:137 ../bin/doption.c:138
+#: ../bin/doption.c:99 ../bin/doption.c:100
msgid "Descr"
msgstr "ОпиÑ."
-#: ../bin/doption.c:138
+#: ../bin/doption.c:100
msgid "Manuf"
msgstr "Произв."
-#: ../bin/doption.c:139 ../bin/doption.c:140
+#: ../bin/doption.c:101 ../bin/doption.c:102
#, fuzzy
msgid "Object"
msgstr "Переименовать объект"
-#: ../bin/doption.c:141
+#: ../bin/doption.c:103
msgid "Live Map"
msgstr "Миникарта"
-#: ../bin/doption.c:142
+#: ../bin/doption.c:104
msgid "Hide Trains On Hidden Track"
msgstr "Ðе показывать поезда на Ñкрытых треках"
-#: ../bin/doption.c:143
+#: ../bin/doption.c:105
msgid "Constrain Drawing Area to Room boundaries"
msgstr ""
-#: ../bin/doption.c:150
+#: ../bin/doption.c:106
+msgid "Don't Hide System Cursor when program cursor is active"
+msgstr ""
+
+#: ../bin/doption.c:110
#, fuzzy
msgid "Color Track"
msgstr "Кривой трек"
-#: ../bin/doption.c:151
+#: ../bin/doption.c:111
#, fuzzy
msgid "Color Draw"
msgstr "Цвет"
-#: ../bin/doption.c:152
+#: ../bin/doption.c:112
msgid "Draw Tunnel"
msgstr "Отображение тоннелÑ"
-#: ../bin/doption.c:153
+#: ../bin/doption.c:113
msgid "Draw EndPts"
msgstr "РиÑовать концы"
-#: ../bin/doption.c:154
+#: ../bin/doption.c:114
msgid "Draw Unconnected EndPts"
msgstr "ÐеÑоединённые концы"
-#: ../bin/doption.c:155
+#: ../bin/doption.c:115
msgid "Draw Ties"
msgstr "РиÑовать шпалы"
-#: ../bin/doption.c:156
+#: ../bin/doption.c:116
msgid "Draw Centers"
msgstr "РиÑовать центры"
-#: ../bin/doption.c:157
+#: ../bin/doption.c:117
msgid "Two Rail Scale"
msgstr "МаÑштаб двухколейки"
-#: ../bin/doption.c:158
+#: ../bin/doption.c:118
msgid "Map Scale"
msgstr "МаÑштаб карты"
-#: ../bin/doption.c:162
+#: ../bin/doption.c:124
msgid "Label Enable"
msgstr "ПодпиÑи"
-#: ../bin/doption.c:163
+#: ../bin/doption.c:125
msgid "Label Scale"
msgstr "МаÑштаб надпиÑей"
-#: ../bin/doption.c:164
+#: ../bin/doption.c:126
msgid "Label Font Size"
msgstr "Размер шрифта"
-#: ../bin/doption.c:165
+#: ../bin/doption.c:127
msgid "Hot Bar Labels"
msgstr "Панель быÑтрых команд"
-#: ../bin/doption.c:166
+#: ../bin/doption.c:128
msgid "Layout Labels"
msgstr "Слой"
-#: ../bin/doption.c:167
+#: ../bin/doption.c:129
msgid "List Labels"
msgstr "СпиÑки"
-#: ../bin/doption.c:170
+#: ../bin/doption.c:132
msgid "Car Labels"
msgstr "ÐадпиÑи машин"
-#: ../bin/doption.c:171
+#: ../bin/doption.c:133
msgid "Train Update Delay"
msgstr "Интервал Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ÐµÐ·Ð´Ð°"
-#: ../bin/doption.c:199
+#: ../bin/doption.c:176
+msgid "Turning off AutoSave"
+msgstr ""
+
+#: ../bin/doption.c:187
+msgid "Turning on CheckPointing"
+msgstr ""
+
+#: ../bin/doption.c:201
msgid "Display Options"
msgstr "ÐаÑтройки отображениÑ"
-#: ../bin/doption.c:200
+#: ../bin/doption.c:203
msgid "Proto"
msgstr ""
-#: ../bin/doption.c:201
+#: ../bin/doption.c:205
msgid "Proto/Manuf"
msgstr "Proto/Производитель"
-#: ../bin/doption.c:202
+#: ../bin/doption.c:208
msgid "Proto/Manuf/Part Number"
msgstr "Proto/Производитель/Ðртикул"
-#: ../bin/doption.c:203
+#: ../bin/doption.c:210
msgid "Proto/Manuf/Partno/Item"
msgstr "Proto/Производитель/Ðртикул/Item"
-#: ../bin/doption.c:204
+#: ../bin/doption.c:211
msgid "Manuf/Proto"
msgstr "Производитель/Proto"
-#: ../bin/doption.c:205
+#: ../bin/doption.c:214
msgid "Manuf/Proto/Part Number"
msgstr "Производитель/Proto/Ðртикул"
-#: ../bin/doption.c:206
+#: ../bin/doption.c:216
msgid "Manuf/Proto/Partno/Item"
msgstr "Производитель/Proto/Ðртикул/Item"
-#: ../bin/doption.c:236
+#: ../bin/doption.c:246
msgid "Single item selected, +Ctrl Add to selection"
msgstr ""
-#: ../bin/doption.c:236
+#: ../bin/doption.c:246
msgid "Add to selection, +Ctrl Single item selected"
msgstr ""
-#: ../bin/doption.c:237
+#: ../bin/doption.c:247
#, fuzzy
msgid "Deselect all on select nothing"
msgstr "Убрать выделение Ñо вÑех объектов"
-#: ../bin/doption.c:242
+#: ../bin/doption.c:252
msgid "Normal: Command List, Shift: Command Options"
msgstr ""
-#: ../bin/doption.c:242
+#: ../bin/doption.c:252
msgid "Normal: Command Options, Shift: Command List"
msgstr ""
-#: ../bin/doption.c:245
+#: ../bin/doption.c:255
msgid "Default Command"
msgstr "Команда по-умолчанию"
-#: ../bin/doption.c:247
+#: ../bin/doption.c:257
msgid "Hide Selection Window"
msgstr "СпрÑтать выбранное окно"
-#: ../bin/doption.c:249
+#: ../bin/doption.c:259
msgid "Right Click"
msgstr "Правый клик"
-#: ../bin/doption.c:250
+#: ../bin/doption.c:260
#, fuzzy
msgid "Select Mode"
msgstr "Выбрать объекты"
-#: ../bin/doption.c:275
+#: ../bin/doption.c:286
msgid "Command Options"
msgstr "Опции команд"
-#: ../bin/doption.c:298
+#: ../bin/doption.c:310
+msgid "16 px"
+msgstr ""
+
+#: ../bin/doption.c:310
+msgid "24 px"
+msgstr ""
+
+#: ../bin/doption.c:310
+msgid "32 px"
+msgstr ""
+
+#: ../bin/doption.c:311
msgid "English"
msgstr "ÐнглийÑкаÑ"
-#: ../bin/doption.c:298
+#: ../bin/doption.c:311
msgid "Metric"
msgstr "МетричеÑкаÑ"
-#: ../bin/doption.c:299
+#: ../bin/doption.c:312
msgid "Polar"
msgstr "ПолÑрнаÑ"
-#: ../bin/doption.c:299
+#: ../bin/doption.c:312
msgid "Cartesian"
msgstr "ПрÑмоугольнаÑ"
-#: ../bin/doption.c:300
+#: ../bin/doption.c:313
msgid "Balloon Help"
msgstr "Ð’ÑÐ¿Ð»Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ð¿Ð¾Ð´Ñказка"
-#: ../bin/doption.c:301
+#: ../bin/doption.c:314
msgid "Show FlexTrack in HotBar"
msgstr ""
-#: ../bin/doption.c:302
+#: ../bin/doption.c:315
msgid "Load Last Layout"
msgstr "загрузить поÑледний проект"
-#: ../bin/doption.c:302
+#: ../bin/doption.c:315
msgid "Start New Layout"
msgstr "загрузить новый проект"
-#: ../bin/doption.c:305
+#: ../bin/doption.c:318
+#, fuzzy
+msgid "Icon Size"
+msgstr "Размер шрифта"
+
+#: ../bin/doption.c:319
msgid "Angles"
msgstr "Углы"
-#: ../bin/doption.c:306
+#: ../bin/doption.c:321
msgid "Units"
msgstr "СиÑтема мер"
-#: ../bin/doption.c:308
+#: ../bin/doption.c:323
msgid "Length Format"
msgstr "Формат длины"
-#: ../bin/doption.c:309
+#: ../bin/doption.c:324
msgid "Min Track Length"
msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° трека"
-#: ../bin/doption.c:310
+#: ../bin/doption.c:325
msgid "Connection Distance"
msgstr "Длина ÑоединениÑ"
-#: ../bin/doption.c:311
+#: ../bin/doption.c:326
msgid "Connection Angle"
msgstr "Угол ÑоединениÑ"
-#: ../bin/doption.c:312
+#: ../bin/doption.c:327
msgid "Turntable Angle"
msgstr "Угол разворота"
-#: ../bin/doption.c:313
+#: ../bin/doption.c:328
msgid "Max Coupling Speed"
msgstr "МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑкороÑÑ‚ÑŒ ÑцеплениÑ"
-#: ../bin/doption.c:316
+#: ../bin/doption.c:331
msgid "Drag Distance"
msgstr "Длина перетаÑкиваниÑ"
-#: ../bin/doption.c:317
+#: ../bin/doption.c:332
msgid "Drag Timeout"
msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿ÐµÑ€ÐµÑ‚Ð°ÑкиваниÑ"
-#: ../bin/doption.c:318
+#: ../bin/doption.c:333
msgid "Min Grid Spacing"
msgstr "Минимальное раÑÑтоÑние Ñетки"
-#: ../bin/doption.c:320
+#: ../bin/doption.c:335
#, fuzzy
msgid "Check Point Frequency"
msgstr "ÐšÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ°"
-#: ../bin/doption.c:322
+#: ../bin/doption.c:337
msgid "Autosave Checkpoint Frequency"
msgstr ""
-#: ../bin/doption.c:323
+#: ../bin/doption.c:338
msgid "On Program Startup"
msgstr "При Ñтарте программы"
-#: ../bin/doption.c:333 ../bin/doption.c:337 ../bin/doption.c:354
+#: ../bin/doption.c:348 ../bin/doption.c:352 ../bin/doption.c:370
msgid "999.999"
msgstr "999.999"
-#: ../bin/doption.c:334
+#: ../bin/doption.c:349
msgid "999.999999"
msgstr "999.999999"
-#: ../bin/doption.c:335
+#: ../bin/doption.c:350
msgid "999.99999"
msgstr "999.99999"
-#: ../bin/doption.c:336
+#: ../bin/doption.c:351
msgid "999.9999"
msgstr "999.9999"
-#: ../bin/doption.c:338 ../bin/doption.c:355
+#: ../bin/doption.c:353 ../bin/doption.c:371
msgid "999.99"
msgstr "999.99"
-#: ../bin/doption.c:339 ../bin/doption.c:356
+#: ../bin/doption.c:354 ../bin/doption.c:372
msgid "999.9"
msgstr "999.9"
-#: ../bin/doption.c:340
+#: ../bin/doption.c:355
msgid "999 7/8"
msgstr "999 7/8"
-#: ../bin/doption.c:341
+#: ../bin/doption.c:356
msgid "999 63/64"
msgstr "999 63/64"
-#: ../bin/doption.c:342
+#: ../bin/doption.c:357
msgid "999' 11.999\""
msgstr "999' 11.999\""
-#: ../bin/doption.c:343
+#: ../bin/doption.c:358
msgid "999' 11.99\""
msgstr "999' 11.99\""
-#: ../bin/doption.c:344
+#: ../bin/doption.c:359
msgid "999' 11.9\""
msgstr "999' 11.9\""
-#: ../bin/doption.c:345
+#: ../bin/doption.c:360
msgid "999' 11 7/8\""
msgstr "999' 11 7/8\""
-#: ../bin/doption.c:346
+#: ../bin/doption.c:361
msgid "999' 11 63/64\""
msgstr "999' 11 63/64\""
-#: ../bin/doption.c:347
+#: ../bin/doption.c:362
msgid "999ft 11.999in"
msgstr "999ф 11.999д"
-#: ../bin/doption.c:348
+#: ../bin/doption.c:363
msgid "999ft 11.99in"
msgstr "999ф 11.99д"
-#: ../bin/doption.c:349
+#: ../bin/doption.c:364
msgid "999ft 11.9in"
msgstr "999ф 11.9д"
-#: ../bin/doption.c:350
+#: ../bin/doption.c:365
msgid "999ft 11 7/8in"
msgstr "999ф 11 7/8д"
-#: ../bin/doption.c:351
+#: ../bin/doption.c:366
msgid "999ft 11 63/64in"
msgstr "999ф 11 63/64д"
-#: ../bin/doption.c:357
+#: ../bin/doption.c:373
msgid "999.999mm"
msgstr "999.999мм"
-#: ../bin/doption.c:358
+#: ../bin/doption.c:374
msgid "999.99mm"
msgstr "999.99мм"
-#: ../bin/doption.c:359
+#: ../bin/doption.c:375
msgid "999.9mm"
msgstr "999.9мм"
-#: ../bin/doption.c:360
+#: ../bin/doption.c:376
msgid "999.999cm"
msgstr "999.999Ñм"
-#: ../bin/doption.c:361
+#: ../bin/doption.c:377
msgid "999.99cm"
msgstr "999.99Ñм"
-#: ../bin/doption.c:362
+#: ../bin/doption.c:378
msgid "999.9cm"
msgstr "999.9Ñм"
-#: ../bin/doption.c:363
+#: ../bin/doption.c:379
msgid "999.999m"
msgstr "999.999м"
-#: ../bin/doption.c:364
+#: ../bin/doption.c:380
msgid "999.99m"
msgstr "999.99м"
-#: ../bin/doption.c:365
+#: ../bin/doption.c:381
msgid "999.9m"
msgstr "999.9м"
-#: ../bin/doption.c:492
+#: ../bin/doption.c:516
msgid "Preferences"
msgstr "ÐаÑтройки предпочтений"
-#: ../bin/doption.c:531
+#: ../bin/doption.c:560
msgid "Marker"
msgstr "Маркер"
-#: ../bin/doption.c:532
+#: ../bin/doption.c:561
msgid "Border"
msgstr "Граница"
-#: ../bin/doption.c:533
+#: ../bin/doption.c:562
msgid "Primary Axis"
msgstr "Главные оÑи"
-#: ../bin/doption.c:534
+#: ../bin/doption.c:563
msgid "Secondary Axis"
msgstr "Дополнительные оÑи"
-#: ../bin/doption.c:535
+#: ../bin/doption.c:564
msgid "Normal Track"
msgstr "Трек"
-#: ../bin/doption.c:536
+#: ../bin/doption.c:565
msgid "Selected Track"
msgstr "Выбранный трек"
-#: ../bin/doption.c:537
+#: ../bin/doption.c:566
msgid "Profile Path"
msgstr ""
-#: ../bin/doption.c:538
+#: ../bin/doption.c:567
msgid "Exception Track"
msgstr ""
-#: ../bin/doption.c:539
+#: ../bin/doption.c:568
msgid "Track Ties"
msgstr "Шпалы"
-#: ../bin/dpricels.c:45
+#: ../bin/doption.c:569
+#, fuzzy
+msgid "Bridge Base"
+msgstr "Трек Безье"
+
+#: ../bin/doption.c:570
+#, fuzzy
+msgid "Track Roadbed"
+msgstr "Мин. Ñ€Ð°Ð´Ð¸ÑƒÑ Ñ‚Ñ€ÐµÐºÐ°"
+
+#: ../bin/dpricels.c:42
msgid "Price"
msgstr "Цена"
-#: ../bin/dpricels.c:59
+#: ../bin/dpricels.c:56
msgid "Flex Track"
msgstr "Изогнутый трек"
-#: ../bin/dpricels.c:60
+#: ../bin/dpricels.c:57
msgid "costs"
msgstr "Ñтоит"
-#: ../bin/dpricels.c:154
+#: ../bin/dpricels.c:166
msgid "Price List"
msgstr "ПрайÑлиÑÑ‚"
-#: ../bin/dprmfile.c:73 ../bin/paramfilesearch_ui.c:60
+#: ../bin/dprmfile.c:66 ../bin/paramfilesearch_ui.c:50
msgid "Show File Names"
msgstr "Показывать имена файлов"
-#: ../bin/dprmfile.c:82 ../bin/paramfilesearch_ui.c:76
+#: ../bin/dprmfile.c:75 ../bin/paramfilesearch_ui.c:77
msgid "Select all"
msgstr "Выбрать вÑÑ‘"
-#: ../bin/dprmfile.c:84
+#: ../bin/dprmfile.c:77
msgid "Favorite"
msgstr ""
-#: ../bin/dprmfile.c:87
-msgid "Search Library"
-msgstr ""
+#: ../bin/dprmfile.c:80
+#, fuzzy
+msgid "Library..."
+msgstr "Слои ..."
-#: ../bin/dprmfile.c:88 ../bin/layout.c:480
-msgid "Browse ..."
+#: ../bin/dprmfile.c:81
+#, fuzzy
+msgid "Browse..."
msgstr "Выбрать ..."
-#: ../bin/dprmfile.c:331
+#: ../bin/dprmfile.c:328
#, fuzzy, c-format
msgid "%d parameter files reloaded."
msgstr "Чтение файлов Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸"
-#: ../bin/dprmfile.c:333
+#: ../bin/dprmfile.c:330
#, fuzzy
msgid "One parameter file reloaded."
msgstr "Чтение файлов Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸"
-#: ../bin/dprmfile.c:434
+#: ../bin/dprmfile.c:431
msgid "Parameter Files"
msgstr "Файлы параметров"
-#: ../bin/dprmfile.c:437 ../bin/paramfilesearch_ui.c:405
+#: ../bin/dprmfile.c:434
msgid "Load Parameters"
msgstr "Загрузить параметры"
-#: ../bin/dprmfile.c:437 ../bin/paramfilesearch_ui.c:405
+#: ../bin/dprmfile.c:434
#, fuzzy
msgid "Parameter files (*.xtp)|*.xtp"
msgstr "Файлы параметров|*.xtp"
-#: ../bin/draw.c:2137
+#: ../bin/draw.c:2352
msgid "Macro Zoom Mode"
msgstr ""
-#: ../bin/draw.c:2144
+#: ../bin/draw.c:2360
msgid "Scale 1:1 - Use Ctrl+ to go to Macro Zoom Mode"
msgstr ""
-#: ../bin/draw.c:2148
+#: ../bin/draw.c:2365
msgid "Preset Zoom In Value selected. Shift+Ctrl+PageDwn to reset value"
msgstr ""
-#: ../bin/draw.c:2152
+#: ../bin/draw.c:2369
#, c-format
msgid "Zoom In Program Value %ld:1, Shift+PageDwn to use"
msgstr ""
-#: ../bin/draw.c:2192
+#: ../bin/draw.c:2450
msgid "At Maximum Zoom Out"
msgstr ""
-#: ../bin/draw.c:2197
+#: ../bin/draw.c:2457
msgid "Preset Zoom Out Value selected. Shift+Ctrl+PageUp to reset value"
msgstr ""
-#: ../bin/draw.c:2201
+#: ../bin/draw.c:2461
#, c-format
msgid "Zoom Out Program Value %ld:1 set, Shift+PageUp to use"
msgstr ""
-#: ../bin/draw.c:2908
+#: ../bin/draw.c:3281
msgid "Map"
msgstr "Миникарта"
-#: ../bin/draw.c:2956
+#: ../bin/draw.c:3323
msgid ""
"Left-Drag to pan, Ctrl+Left-Drag to zoom, 0 to set origin to zero, 1-9 to "
"zoom#, e to set to extents"
msgstr ""
-#: ../bin/draw.c:2963
+#: ../bin/draw.c:3330
msgid "Pan Mode - drag point to new position"
msgstr "Режим проÑмотра - перемещайте мышкой проект"
-#: ../bin/draw.c:2970
+#: ../bin/draw.c:3337
msgid "Zoom Mode - drag area to zoom"
msgstr ""
-#: ../bin/draw.c:2996
+#: ../bin/draw.c:3365
msgid "Can't move any further in that direction"
msgstr ""
-#: ../bin/draw.c:2998
+#: ../bin/draw.c:3368
msgid "Left click to pan, right click to zoom, 'o' for origin, 'e' for extents"
msgstr ""
-#: ../bin/draw.c:3035
+#: ../bin/draw.c:3407
msgid ""
"Left Drag to Pan, +CTRL to Zoom, 0 to set Origin to 0,0, 1-9 to Zoom#, e to "
"set to Extent"
msgstr ""
-#: ../bin/draw.c:3109
+#: ../bin/draw.c:3486
msgid "Pan/Zoom"
msgstr "Перемещение/Увеличение"
-#: ../bin/draw.c:3120
+#: ../bin/draw.c:3502
msgid "Zoom to 1:1 - '1'"
msgstr ""
-#: ../bin/draw.c:3121
+#: ../bin/draw.c:3504
msgid "Zoom to 1:2 - '2'"
msgstr ""
-#: ../bin/draw.c:3122
+#: ../bin/draw.c:3506
msgid "Zoom to 1:3 - '3'"
msgstr ""
-#: ../bin/draw.c:3123
+#: ../bin/draw.c:3508
msgid "Zoom to 1:4 - '4'"
msgstr ""
-#: ../bin/draw.c:3124
+#: ../bin/draw.c:3510
msgid "Zoom to 1:5 - '5'"
msgstr ""
-#: ../bin/draw.c:3125
+#: ../bin/draw.c:3512
msgid "Zoom to 1:6 - '6'"
msgstr ""
-#: ../bin/draw.c:3126
+#: ../bin/draw.c:3514
msgid "Zoom to 1:7 - '7'"
msgstr ""
-#: ../bin/draw.c:3127
+#: ../bin/draw.c:3516
msgid "Zoom to 1:8 - '8'"
msgstr ""
-#: ../bin/draw.c:3128
+#: ../bin/draw.c:3518
msgid "Zoom to 1:9 - '9'"
msgstr ""
-#: ../bin/draw.c:3132
+#: ../bin/draw.c:3524
msgid "Pan center here - 'c'"
msgstr ""
-#: ../bin/drawgeom.c:76 ../bin/drawgeom.c:91
+#: ../bin/drawgeom.c:72 ../bin/drawgeom.c:89
msgid "Create Lines"
msgstr "Создать линии"
-#: ../bin/drawgeom.c:291
-msgid "+Shift to lock to nearby objects"
-msgstr ""
-
-#: ../bin/drawgeom.c:293
-msgid "+Shift to not lock to nearby objects"
+#: ../bin/drawgeom.c:443
+msgid "Drag next point, +Alt reverse Magnetic Snap or +Ctrl lock to 90 deg"
msgstr ""
-#: ../bin/drawgeom.c:397
-msgid "Drag to next point, +Shift to lock to object, +Ctrl to lock to 90deg"
+#: ../bin/drawgeom.c:454
+msgid ""
+"Drag next point, +Alt reverse Magnetic Snap, or +Ctrl to lock to 90 degrees"
msgstr ""
-#: ../bin/drawgeom.c:408
-msgid "Drag to place next end point"
-msgstr "Тащите, чтобы Ñоздать Ñледующую точку"
-
-#: ../bin/drawgeom.c:439
+#: ../bin/drawgeom.c:487
msgid "Drag to set radius"
msgstr "Тащите, чтобы уÑтановить радиуÑ"
-#: ../bin/drawgeom.c:452
+#: ../bin/drawgeom.c:501
msgid "Drag set box size"
msgstr ""
-#: ../bin/drawgeom.c:493
-msgid "+Shift - lock to close object, +Ctrl - lock to 90 deg"
+#: ../bin/drawgeom.c:543
+msgid "+Alt - reverse Magnetic Snap or +Ctrl - lock to 90 deg"
msgstr ""
-#: ../bin/drawgeom.c:547 ../bin/drawgeom.c:603
+#: ../bin/drawgeom.c:625 ../bin/drawgeom.c:691
#, c-format
msgid "Length = %s, Angle = %0.2f"
msgstr "Длина = %s, Угол = %0.2f"
-#: ../bin/drawgeom.c:624
+#: ../bin/drawgeom.c:713
#, c-format
msgid "Straight Line: Length=%s Angle=%0.3f"
msgstr "ПрÑÐ¼Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ: Длина=%s Угол=%0.3f"
-#: ../bin/drawgeom.c:646
+#: ../bin/drawgeom.c:735
#, c-format
msgid "Curved Line: Radius=%s Angle=%0.3f Length=%s"
msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ: РадиуÑ=%s Угол=%0.3f Длина=%s"
-#: ../bin/drawgeom.c:670
+#: ../bin/drawgeom.c:761 ../bin/drawgeom.c:769
#, c-format
msgid "Radius = %s"
msgstr "Ð Ð°Ð´Ð¸ÑƒÑ = %s"
-#: ../bin/drawgeom.c:680
+#: ../bin/drawgeom.c:780
#, c-format
msgid "Width = %s, Height = %s"
msgstr "Ширина = %s, Ð’Ñ‹Ñота = %s"
-#: ../bin/drawgeom.c:1169
+#: ../bin/drawgeom.c:841
+msgid "Drag on Red arrows to adjust curve"
+msgstr "Тащите за краÑные Ñтрелки Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÑ€Ð¸Ð²Ð¾Ð¹"
+
+#: ../bin/drawgeom.c:1298
#, fuzzy
msgid "Select points or use context menu"
msgstr "Выберите позицию точки"
-#: ../bin/drawgeom.c:1424
+#: ../bin/drawgeom.c:1567
#, fuzzy, c-format
msgid "Length = %s, Last angle = %0.2f"
msgstr "Длина = %s, Угол = %0.2f"
-#: ../bin/drawgeom.c:1578
+#: ../bin/drawgeom.c:1736
#, fuzzy
msgid "Point Deleted"
msgstr "Выбор шрифта"
-#: ../bin/drawgeom.c:1974
+#: ../bin/drawgeom.c:2194
msgid "Not close to end of line"
msgstr ""
-#: ../bin/drawgeom.c:2027
+#: ../bin/drawgeom.c:2252
msgid "Not close to ends or middle of mine, reselect"
msgstr ""
-#: ../bin/drawgeom.c:2075 ../bin/drawgeom.c:2297
+#: ../bin/drawgeom.c:2303 ../bin/drawgeom.c:2550
msgid "Drag to Move Corner Point"
msgstr ""
-#: ../bin/drawgeom.c:2082
+#: ../bin/drawgeom.c:2311
msgid "Drag to Move Edge "
msgstr ""
-#: ../bin/drawgeom.c:2144
+#: ../bin/drawgeom.c:2383
#, c-format
msgid "Length = %0.3f Angle = %0.3f"
msgstr ""
-#: ../bin/drawgeom.c:2292
+#: ../bin/drawgeom.c:2544
msgid "Drag to Move Edge"
msgstr ""
-#: ../bin/dxfoutput.c:232
+#: ../bin/dxfoutput.c:244
msgid "Export to DXF"
msgstr "ЭкÑпортировать в DXF"
-#: ../bin/fileio.c:241
+#: ../bin/fileio.c:223
msgid ""
"\n"
"Do you want to continue?"
@@ -5255,101 +5475,117 @@ msgstr ""
"\n"
"Вы хотите продолжить?"
-#: ../bin/fileio.c:608
+#: ../bin/fileio.c:595
#, c-format
msgid "putTitle: title too long: %s"
msgstr ""
-#: ../bin/fileio.c:638
+#: ../bin/fileio.c:627
msgid "Unnamed Trackplan"
msgstr "БезымÑнный проект"
-#: ../bin/fileio.c:639
+#: ../bin/fileio.c:628
msgid " (R/O)"
msgstr ""
-#: ../bin/fileio.c:659 ../bin/fileio.c:1278
-msgid "Check Pointing"
-msgstr ""
-
-#: ../bin/fileio.c:789
+#: ../bin/fileio.c:779
msgid "Unknown layout file object - skip until next good object?"
msgstr ""
-#: ../bin/fileio.c:1026
+#: ../bin/fileio.c:835 ../bin/fileio.c:1022
msgid "Track"
msgstr "Трек"
-#: ../bin/fileio.c:1212
+#: ../bin/fileio.c:836
+#, fuzzy
+msgid "Not Found"
+msgstr "ЧиÑло точек"
+
+#: ../bin/fileio.c:1265
+#, fuzzy
+msgid "AutoSave Tracks As"
+msgstr "Сохранить треки"
+
+#: ../bin/fileio.c:1280
msgid "Save Tracks"
msgstr "Сохранить треки"
-#: ../bin/fileio.c:1228
+#: ../bin/fileio.c:1297
msgid "Save Tracks As"
msgstr ""
-#: ../bin/fileio.c:1239
+#: ../bin/fileio.c:1309
msgid "Open Tracks"
msgstr "Открыть треки"
-#: ../bin/fileio.c:1253
+#: ../bin/fileio.c:1323
#, fuzzy
msgid "Example Tracks"
msgstr "ПроÑтые трек"
-#: ../bin/fileio.c:1461
+#: ../bin/fileio.c:1400
+#, fuzzy
+msgid "File AutoSaved"
+msgstr "Файлы"
+
+#: ../bin/fileio.c:1575
#, fuzzy, c-format
msgid "Module - %s"
msgstr "Подъем = %s"
-#: ../bin/fileio.c:1466 ../bin/fileio.c:1486
+#: ../bin/fileio.c:1580 ../bin/fileio.c:1601
msgid "Import Tracks"
msgstr "Импортировать треки"
-#: ../bin/fileio.c:1548
+#: ../bin/fileio.c:1601
+#, fuzzy
+msgid "Import Module"
+msgstr "Импорт"
+
+#: ../bin/fileio.c:1659
msgid "Export Tracks"
msgstr "ЭкÑпортировать треки"
-#: ../bin/fileio.c:1567
+#: ../bin/fileio.c:1680
msgid "Clipboard"
msgstr "Буфер обмена"
-#: ../bin/filenoteui.c:62 ../bin/linknoteui.c:50 ../bin/textnoteui.c:42
+#: ../bin/filenoteui.c:60 ../bin/linknoteui.c:48 ../bin/textnoteui.c:41
#, fuzzy
msgid "Position X"
msgstr "ПозициÑ"
-#: ../bin/filenoteui.c:64 ../bin/linknoteui.c:52 ../bin/textnoteui.c:44
+#: ../bin/filenoteui.c:62 ../bin/linknoteui.c:50 ../bin/textnoteui.c:43
#, fuzzy
msgid "Position Y"
msgstr "ПозициÑ"
-#: ../bin/filenoteui.c:68 ../bin/linknoteui.c:56
+#: ../bin/filenoteui.c:66 ../bin/linknoteui.c:54
#, fuzzy
msgid "Title"
msgstr "Подзаголовок"
-#: ../bin/filenoteui.c:70 ../bin/trknote.c:62
-#: ../../../../build/work/app/bin/bllnhlp.c:87
+#: ../bin/filenoteui.c:68 ../bin/trknote.c:54
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:89
#, fuzzy
msgid "Document"
msgstr "Кол-во"
-#: ../bin/filenoteui.c:72
+#: ../bin/filenoteui.c:70
#, fuzzy
msgid "Select..."
msgstr "Выбрать"
-#: ../bin/filenoteui.c:74 ../bin/linknoteui.c:60
+#: ../bin/filenoteui.c:72 ../bin/linknoteui.c:58
#, fuzzy
msgid "Open..."
msgstr "&Открыть ..."
-#: ../bin/filenoteui.c:136
+#: ../bin/filenoteui.c:134
msgid "Add Document"
msgstr ""
-#: ../bin/filenoteui.c:158
+#: ../bin/filenoteui.c:157
msgid "The file doesn't exist or cannot be read!"
msgstr ""
@@ -5358,829 +5594,868 @@ msgstr ""
msgid "Document(%d) Layer=%d %-.80s [%s]"
msgstr "(%d): Слой=%d %s"
-#: ../bin/filenoteui.c:309
+#: ../bin/filenoteui.c:318
#, fuzzy
-msgid "Update document"
+msgid "Update Document"
msgstr "Обновлён"
-#: ../bin/filenoteui.c:323
+#: ../bin/filenoteui.c:330
#, fuzzy
msgid "Describe the file"
msgstr "ПодпиÑÑŒ и выбор"
-#: ../bin/filenoteui.c:329
-msgid "Attach document"
-msgstr ""
+#: ../bin/filenoteui.c:338
+#, fuzzy
+msgid "Attach Document"
+msgstr "Кол-во"
-#: ../bin/i18n.c:66
+#: ../bin/i18n.c:57
#, c-format
msgid "Gettext initialized (PACKAGE=%s, LOCALEDIR=%s, LC_ALL=%s).\n"
msgstr ""
-#: ../bin/layout.c:380
+#: ../bin/layout.c:553 ../bin/layout.c:994
#, c-format
msgid "Unable to load Image File - %s"
msgstr ""
-#: ../bin/layout.c:444
+#: ../bin/layout.c:630
msgid "Load Background"
msgstr ""
-#: ../bin/layout.c:467
+#: ../bin/layout.c:657
msgid "Room Width"
msgstr "Ширина комнаты"
-#: ../bin/layout.c:468
+#: ../bin/layout.c:658
msgid " Height"
msgstr " Ð’Ñ‹Ñота"
-#: ../bin/layout.c:469
+#: ../bin/layout.c:659
msgid "Layout Title"
msgstr "Заголовок"
-#: ../bin/layout.c:470
+#: ../bin/layout.c:660
msgid "Subtitle"
msgstr "Подзаголовок"
-#: ../bin/layout.c:474
-msgid " Gauge"
-msgstr " КолеÑ"
-
-#: ../bin/layout.c:476
-msgid "Min Track Radius"
-msgstr "Мин. Ñ€Ð°Ð´Ð¸ÑƒÑ Ñ‚Ñ€ÐµÐºÐ°"
-
-#: ../bin/layout.c:477
-msgid " Max Track Grade (%)"
-msgstr " МакÑ. наклон трека (%)"
-
-#: ../bin/layout.c:479
+#: ../bin/layout.c:669
msgid "Background File Path"
msgstr ""
-#: ../bin/layout.c:483
+#: ../bin/layout.c:670
+msgid "Browse ..."
+msgstr "Выбрать ..."
+
+#: ../bin/layout.c:673
msgid "Background PosX,Y"
msgstr ""
-#: ../bin/layout.c:487
+#: ../bin/layout.c:677
msgid "Background Size"
msgstr ""
-#: ../bin/layout.c:489
+#: ../bin/layout.c:679
msgid "Background Screen %"
msgstr ""
-#: ../bin/layout.c:491
+#: ../bin/layout.c:681
#, fuzzy
msgid "Background Angle"
msgstr "Конечный угол"
-#: ../bin/layout.c:569
+#: ../bin/layout.c:682
+msgid "Named Settings File"
+msgstr ""
+
+#: ../bin/layout.c:683
+#, fuzzy
+msgid "Write"
+msgstr "Подзаголовок"
+
+#: ../bin/layout.c:684
+#, fuzzy
+msgid "Read"
+msgstr "Повторить"
+
+#: ../bin/layout.c:818
msgid "Layout Options"
msgstr "ÐаÑтройки ÑлоÑ"
-#: ../bin/linknoteui.c:58
-msgid "URL"
+#: ../bin/layout.c:1052
+msgid "Read Settings"
msgstr ""
-#: ../bin/linknoteui.c:107
-#, c-format
-msgid ""
-"The entered URL is too long. The maximum allowed length is %d. Please edit "
-"the entered value."
-msgstr ""
+#: ../bin/layout.c:1053 ../bin/layout.c:1087
+#, fuzzy
+msgid "Settings File (*.xset)|*.xset"
+msgstr "Файл параметров|*.xtp"
-#: ../bin/linknoteui.c:110
+#: ../bin/layout.c:1086
#, fuzzy
-msgid "Re-edit"
-msgstr "СброÑить"
+msgid "Write Settings"
+msgstr "ПрÑмое выделение"
-#: ../bin/linknoteui.c:241
+#: ../bin/linknoteui.c:56
+msgid "URL"
+msgstr ""
+
+#: ../bin/linknoteui.c:230
#, fuzzy
-msgid "Update link"
+msgid "Update Webink"
msgstr "Обновить"
-#: ../bin/linknoteui.c:259
+#: ../bin/linknoteui.c:248
#, fuzzy
-msgid "Create link"
+msgid "Create Weblink"
msgstr "Создать блок"
-#: ../bin/macro.c:95
+#: ../bin/macro.c:67
msgid "Message"
msgstr "Сообщение"
-#: ../bin/macro.c:179
+#: ../bin/macro.c:166
msgid "Recording"
msgstr "ЗапиÑÑŒ"
-#: ../bin/macro.c:214
+#: ../bin/macro.c:206 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1309
msgid "End of Playback. Hit Step to exit\n"
msgstr "Конец проигрыша. Ðажмите Шаг Ð´Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð°\n"
-#: ../bin/macro.c:278
+#: ../bin/macro.c:271
msgid "Record"
msgstr "ЗапиÑÑŒ"
-#: ../bin/macro.c:676
+#: ../bin/macro.c:686
msgid "Step"
msgstr "Шаг"
-#: ../bin/macro.c:679 ../bin/macro.c:1544
+#: ../bin/macro.c:689 ../bin/macro.c:1560
msgid "Next"
msgstr "Дальше"
-#: ../bin/macro.c:682 ../bin/misc.c:742 ../bin/track.c:1116
+#: ../bin/macro.c:692 ../bin/misc.c:696 ../bin/track.c:1104
msgid "Quit"
msgstr "Выход"
-#: ../bin/macro.c:685 ../../../../build/work/app/bin/bllnhlp.c:545
+#: ../bin/macro.c:695 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:631
msgid "Speed"
msgstr "СкороÑÑ‚ÑŒ"
-#: ../bin/macro.c:832 ../bin/macro.c:879
+#: ../bin/macro.c:855 ../bin/track.c:1344
msgid "Regression"
msgstr ""
-#: ../bin/macro.c:1045 ../bin/macro.c:1403
+#: ../bin/macro.c:1010 ../bin/macro.c:1410
msgid "Demo"
msgstr "ДемонÑтрациÑ"
-#: ../bin/macro.c:1223
+#: ../bin/macro.c:1219
#, c-format
msgid "Elapsed time %lu\n"
msgstr "ОÑталоÑÑŒ времени %lu\n"
-#: ../bin/macro.c:1324
+#: ../bin/macro.c:1329
msgid "Playback"
msgstr "ВоÑпроизведение"
-#: ../bin/macro.c:1406
+#: ../bin/macro.c:1414
msgid "Slowest"
msgstr "Очень медленно"
-#: ../bin/macro.c:1407
+#: ../bin/macro.c:1415
msgid "Slow"
msgstr "Медленно"
-#: ../bin/macro.c:1409
+#: ../bin/macro.c:1417
msgid "Fast"
msgstr "БыÑтро"
-#: ../bin/macro.c:1410
+#: ../bin/macro.c:1418
msgid "Faster"
msgstr "БыÑтрее"
-#: ../bin/macro.c:1411
+#: ../bin/macro.c:1419
msgid "Fastest"
msgstr "Очень быÑтро"
-#: ../bin/macro.c:1529
+#: ../bin/macro.c:1542
msgid "Can not find PARAMETER playback proc"
msgstr "Ðевозможно найти PARAMETER в проигрыше"
-#: ../bin/misc.c:173
-msgid "No Messages"
-msgstr "Ðет Ñообщений"
-
-#: ../bin/misc.c:435 ../bin/misc.c:438
-msgid "ABORT"
-msgstr "ÐÐ’ÐРИЯ"
-
-#: ../bin/misc.c:437
-msgid ""
-"\n"
-"Do you want to save your layout?"
-msgstr ""
-"\n"
-"Ð’Ñ‹ хотите Ñохранить ваш проект?"
-
-#: ../bin/misc.c:523
-#, c-format
-msgid "No help for %s"
-msgstr "Ðет помощи Ð´Ð»Ñ %s"
-
-#: ../bin/misc.c:635
-msgid ""
-"Save changes to the layout design before closing?\n"
-"\n"
-"If you don't save now, your unsaved changes will be discarded."
-msgstr ""
-"Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´ закрытием?\n"
-"\n"
-"ЕÑли вы не Ñделаете Ñто, вÑе ваши неÑохранённые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ потерÑны."
-
-#: ../bin/misc.c:637 ../bin/misc.c:2334
-msgid "&Save"
-msgstr "&Сохранить"
-
-#: ../bin/misc.c:637 ../bin/misc.c:672
-msgid "&Cancel"
-msgstr "&Отмена"
-
-#: ../bin/misc.c:637
-msgid "&Don't Save"
-msgstr "Ðе ÑохранÑÑ‚ÑŒ"
-
-#: ../bin/misc.c:661
-msgid "examples"
-msgstr ""
-
-#: ../bin/misc.c:670
-msgid ""
-"Do you want to return to the last saved state?\n"
-"\n"
-"Revert will cause all changes done since last save to be lost."
-msgstr ""
-"Ð’Ñ‹ хотите возвратить вÑÑ‘ к предыдущему ÑоÑтоÑнию?\n"
-"\n"
-"Ð’Ñе неÑохранённые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ потерÑны."
-
-#: ../bin/misc.c:672
-msgid "&Revert"
-msgstr "&Откат"
-
-#: ../bin/misc.c:894
-msgid "XTrackCAD Font"
-msgstr "Шрифты XTrackCAD"
-
-#: ../bin/misc.c:955
-#, c-format
-msgid "No balloon help for %s\n"
-msgstr "Ð’ÑÐ¿Ð»Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ð¿Ð¾Ð´Ñказка Ð´Ð»Ñ %s не задана\n"
-
-#: ../bin/misc.c:957 ../../../../build/work/app/bin/bllnhlp.c:608
-#: ../../../../build/work/app/bin/bllnhlp.c:609
-#: ../../../../build/work/app/bin/bllnhlp.c:611
-#: ../../../../build/work/app/bin/bllnhlp.c:612
-#: ../../../../build/work/app/bin/bllnhlp.c:614
-#: ../../../../build/work/app/bin/bllnhlp.c:615
-#: ../../../../build/work/app/bin/bllnhlp.c:616
-#: ../../../../build/work/app/bin/bllnhlp.c:617
-#: ../../../../build/work/app/bin/bllnhlp.c:618
-#: ../../../../build/work/app/bin/bllnhlp.c:619
-#: ../../../../build/work/app/bin/bllnhlp.c:620
-#: ../../../../build/work/app/bin/bllnhlp.c:621
-#: ../../../../build/work/app/bin/bllnhlp.c:622
-#: ../../../../build/work/app/bin/bllnhlp.c:623
-#: ../../../../build/work/app/bin/bllnhlp.c:624
-#: ../../../../build/work/app/bin/bllnhlp.c:625
-#: ../../../../build/work/app/bin/bllnhlp.c:626
-#: ../../../../build/work/app/bin/bllnhlp.c:627
-#: ../../../../build/work/app/bin/bllnhlp.c:628
-#: ../../../../build/work/app/bin/bllnhlp.c:629
-#: ../../../../build/work/app/bin/bllnhlp.c:630
-#: ../../../../build/work/app/bin/bllnhlp.c:631
-#: ../../../../build/work/app/bin/bllnhlp.c:632
-#: ../../../../build/work/app/bin/bllnhlp.c:633
-#: ../../../../build/work/app/bin/bllnhlp.c:634
-#: ../../../../build/work/app/bin/bllnhlp.c:635
-#: ../../../../build/work/app/bin/bllnhlp.c:636
-#: ../../../../build/work/app/bin/bllnhlp.c:637
-#: ../../../../build/work/app/bin/bllnhlp.c:638
-#: ../../../../build/work/app/bin/bllnhlp.c:639
-#: ../../../../build/work/app/bin/bllnhlp.c:640
-#: ../../../../build/work/app/bin/bllnhlp.c:641
-#: ../../../../build/work/app/bin/bllnhlp.c:642
-#: ../../../../build/work/app/bin/bllnhlp.c:643
-#: ../../../../build/work/app/bin/bllnhlp.c:644
-#: ../../../../build/work/app/bin/bllnhlp.c:645
-#: ../../../../build/work/app/bin/bllnhlp.c:646
-#: ../../../../build/work/app/bin/bllnhlp.c:647
-#: ../../../../build/work/app/bin/bllnhlp.c:648
-#: ../../../../build/work/app/bin/bllnhlp.c:649
-#: ../../../../build/work/app/bin/bllnhlp.c:650
-#: ../../../../build/work/app/bin/bllnhlp.c:651
-#: ../../../../build/work/app/bin/bllnhlp.c:652
-#: ../../../../build/work/app/bin/bllnhlp.c:653
-#: ../../../../build/work/app/bin/bllnhlp.c:654
-#: ../../../../build/work/app/bin/bllnhlp.c:655
-#: ../../../../build/work/app/bin/bllnhlp.c:656
-#: ../../../../build/work/app/bin/bllnhlp.c:657
-#: ../../../../build/work/app/bin/bllnhlp.c:658
-#: ../../../../build/work/app/bin/bllnhlp.c:659
-#: ../../../../build/work/app/bin/bllnhlp.c:660
-#: ../../../../build/work/app/bin/bllnhlp.c:661
-#: ../../../../build/work/app/bin/bllnhlp.c:662
-#: ../../../../build/work/app/bin/bllnhlp.c:663
-#: ../../../../build/work/app/bin/bllnhlp.c:664
-#: ../../../../build/work/app/bin/bllnhlp.c:665
-#: ../../../../build/work/app/bin/bllnhlp.c:666
-#: ../../../../build/work/app/bin/bllnhlp.c:667
-#: ../../../../build/work/app/bin/bllnhlp.c:668
-#: ../../../../build/work/app/bin/bllnhlp.c:670
-msgid "No Help"
-msgstr "Ðет помощи"
-
-#: ../bin/misc.c:1065
-#, fuzzy
-msgid "File AutoSaved"
-msgstr "Файлы"
-
-#: ../bin/misc.c:1276 ../bin/misc.c:1283 ../bin/misc.c:1354
-msgid ""
-"Cancelling the current command will undo the changes\n"
-"you are currently making. Do you want to update?"
-msgstr ""
-
-#: ../bin/misc.c:1849
-msgid "Sticky Commands"
-msgstr "Клейкие команды"
-
-#: ../bin/misc.c:1862
+#: ../bin/menu.c:130
msgid "File Buttons"
msgstr "Файлы"
-#: ../bin/misc.c:1862
+#: ../bin/menu.c:130
+#, fuzzy
+msgid "Print Buttons"
+msgstr "Отмена / повтор"
+
+#: ../bin/menu.c:130
#, fuzzy
msgid "Import/Export Buttons"
msgstr "МаÑштаб"
-#: ../bin/misc.c:1862
+#: ../bin/menu.c:131
msgid "Zoom Buttons"
msgstr "МаÑштаб"
-#: ../bin/misc.c:1863
+#: ../bin/menu.c:131
msgid "Undo Buttons"
msgstr "Отмена / повтор"
-#: ../bin/misc.c:1863
+#: ../bin/menu.c:131
msgid "Easement Button"
msgstr "УпрощениÑ"
-#: ../bin/misc.c:1863
+#: ../bin/menu.c:131
msgid "SnapGrid Buttons"
msgstr "Сетка"
-#: ../bin/misc.c:1864
+#: ../bin/menu.c:132
msgid "Create Track Buttons"
msgstr "Создание треков"
-#: ../bin/misc.c:1864
+#: ../bin/menu.c:132
msgid "Layout Control Elements"
msgstr "Элементы ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°"
-#: ../bin/misc.c:1865
+#: ../bin/menu.c:133
msgid "Modify Track Buttons"
msgstr "Изменение треков"
-#: ../bin/misc.c:1865
+#: ../bin/menu.c:133
msgid "Properties/Select"
msgstr "СвойÑтва/Выбор"
-#: ../bin/misc.c:1866
+#: ../bin/menu.c:134
msgid "Track Group Buttons"
msgstr "Треки"
-#: ../bin/misc.c:1866
+#: ../bin/menu.c:134
msgid "Train Group Buttons"
msgstr "Поезда"
-#: ../bin/misc.c:1867
+#: ../bin/menu.c:135
msgid "Create Misc Buttons"
msgstr "Различные кнопоки"
-#: ../bin/misc.c:1867
+#: ../bin/menu.c:135
msgid "Ruler Button"
msgstr "Линейка"
-#: ../bin/misc.c:1867
+#: ../bin/menu.c:136
msgid "Layer Buttons"
msgstr "Управление ÑлоÑми"
-#: ../bin/misc.c:1868
+#: ../bin/menu.c:136
msgid "Hot Bar"
msgstr "ГорÑчие клавиши"
-#: ../bin/misc.c:1937 ../../../../build/work/app/bin/bllnhlp.c:82
+#: ../bin/menu.c:225 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:82
msgid "Change Elevations"
msgstr "Изменить выÑоты"
-#: ../bin/misc.c:1955
+#: ../bin/menu.c:250
msgid "Angle:"
msgstr "Угол:"
-#: ../bin/misc.c:1962
+#: ../bin/menu.c:255
+#, fuzzy
+msgid "Indexes:"
+msgstr "â„–"
+
+#: ../bin/menu.c:262
msgid "Move X:"
msgstr "Двигать X:"
-#: ../bin/misc.c:1963
+#: ../bin/menu.c:263
msgid "Move Y:"
msgstr "Двигать Y:"
-#: ../bin/misc.c:2010
+#: ../bin/menu.c:282
+#, fuzzy
+msgid "Select Index"
+msgstr "Выбрать объекты"
+
+#: ../bin/menu.c:330
msgid "Enter Move ..."
msgstr ""
-#: ../bin/misc.c:2016
+#: ../bin/menu.c:336
+#, fuzzy
+msgid "Select Track Index ..."
+msgstr "Выбранный трек"
+
+#: ../bin/menu.c:343
msgid "180 "
msgstr "180 "
-#: ../bin/misc.c:2017
+#: ../bin/menu.c:344
msgid "90 CW"
msgstr "90 ЧС"
-#: ../bin/misc.c:2018
+#: ../bin/menu.c:345
msgid "45 CW"
msgstr "45 ЧС"
-#: ../bin/misc.c:2019
+#: ../bin/menu.c:346
msgid "30 CW"
msgstr "30 ЧС"
-#: ../bin/misc.c:2020
+#: ../bin/menu.c:347
msgid "15 CW"
msgstr "15 ПЧС"
-#: ../bin/misc.c:2021
+#: ../bin/menu.c:348
msgid "15 CCW"
msgstr "15 ПЧС"
-#: ../bin/misc.c:2022
+#: ../bin/menu.c:349
msgid "30 CCW"
msgstr "30 ПЧС"
-#: ../bin/misc.c:2023
+#: ../bin/menu.c:350
msgid "45 CCW"
msgstr "45 ПЧС"
-#: ../bin/misc.c:2024
+#: ../bin/menu.c:351
msgid "90 CCW"
msgstr "90 ПЧС"
-#: ../bin/misc.c:2025
+#: ../bin/menu.c:352
msgid "Enter Angle ..."
msgstr "Введите угол ..."
-#: ../bin/misc.c:2056
+#: ../bin/menu.c:369
+msgid "examples"
+msgstr ""
+
+#: ../bin/menu.c:378
+msgid ""
+"Do you want to return to the last saved state?\n"
+"\n"
+"Revert will cause all changes done since last save to be lost."
+msgstr ""
+"Ð’Ñ‹ хотите возвратить вÑÑ‘ к предыдущему ÑоÑтоÑнию?\n"
+"\n"
+"Ð’Ñе неÑохранённые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ потерÑны."
+
+#: ../bin/menu.c:380
+msgid "&Revert"
+msgstr "&Откат"
+
+#: ../bin/menu.c:380 ../bin/misc.c:660
+msgid "&Cancel"
+msgstr "&Отмена"
+
+#: ../bin/menu.c:433
+msgid "XTrackCAD Font"
+msgstr "Шрифты XTrackCAD"
+
+#: ../bin/menu.c:459
+msgid "Sticky Commands"
+msgstr "Клейкие команды"
+
+#: ../bin/menu.c:478
+msgid "Test Mallocs"
+msgstr ""
+
+#: ../bin/menu.c:497
msgid "Debug"
msgstr "Отладка"
-#: ../bin/misc.c:2187
+#: ../bin/menu.c:582
+msgid "No Messages"
+msgstr "Ðет Ñообщений"
+
+#: ../bin/menu.c:606
+#, c-format
+msgid "No help for %s"
+msgstr "Ðет помощи Ð´Ð»Ñ %s"
+
+#: ../bin/menu.c:656
+#, c-format
+msgid "No balloon help for %s\n"
+msgstr "Ð’ÑÐ¿Ð»Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ð¿Ð¾Ð´Ñказка Ð´Ð»Ñ %s не задана\n"
+
+#: ../bin/menu.c:658 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:694
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:695
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:697
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:698
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:700
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:701
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:702
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:703
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:704
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:705
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:706
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:707
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:708
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:709
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:710
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:711
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:712
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:713
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:714
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:715
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:716
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:717
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:718
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:719
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:720
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:721
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:722
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:723
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:724
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:725
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:726
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:727
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:728
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:729
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:730
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:731
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:732
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:733
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:734
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:735
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:736
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:737
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:738
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:739
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:740
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:741
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:742
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:743
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:744
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:745
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:746
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:747
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:748
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:749
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:750
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:751
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:752
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:753
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:754
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:756
+msgid "No Help"
+msgstr "Ðет помощи"
+
+#: ../bin/menu.c:884
msgid "&File"
msgstr "&Файл"
-#: ../bin/misc.c:2188
+#: ../bin/menu.c:885
msgid "&Edit"
msgstr "&Правка"
-#: ../bin/misc.c:2189
+#: ../bin/menu.c:886
msgid "&View"
msgstr "&Вид"
-#: ../bin/misc.c:2190
+#: ../bin/menu.c:887
msgid "&Add"
msgstr "&Добавить"
-#: ../bin/misc.c:2191
+#: ../bin/menu.c:888
msgid "&Change"
msgstr "&Изменить"
-#: ../bin/misc.c:2192
+#: ../bin/menu.c:889
msgid "&Draw"
msgstr "&РиÑовать"
-#: ../bin/misc.c:2193
+#: ../bin/menu.c:890
msgid "&Manage"
msgstr "&Управление"
-#: ../bin/misc.c:2194
+#: ../bin/menu.c:891
msgid "&Options"
msgstr "&ÐаÑтройки"
-#: ../bin/misc.c:2195
+#: ../bin/menu.c:892
msgid "&Macro"
msgstr "&МакроÑÑ‹"
-#: ../bin/misc.c:2196
+#: ../bin/menu.c:893
msgid "&Window"
msgstr "&Окна"
-#: ../bin/misc.c:2197
+#: ../bin/menu.c:894
msgid "&Help"
msgstr "&Справка"
-#: ../bin/misc.c:2233
+#: ../bin/menu.c:930
#, fuzzy
msgid "Context Commands"
msgstr "ОÑтальные команды"
-#: ../bin/misc.c:2234
+#: ../bin/menu.c:931
msgid "Shift Context Commands"
msgstr ""
-#: ../bin/misc.c:2249 ../bin/misc.c:2437
+#: ../bin/menu.c:945 ../bin/menu.c:947
+#, fuzzy
+msgid "Zoom Extents"
+msgstr "МаÑштаб"
+
+#: ../bin/menu.c:950 ../bin/menu.c:1185
msgid "Enable SnapGrid"
msgstr "Прилипать к Ñетке"
-#: ../bin/misc.c:2251
+#: ../bin/menu.c:952
msgid "SnapGrid Show"
msgstr "Показывать Ñетку"
-#: ../bin/misc.c:2253
+#: ../bin/menu.c:955
#, fuzzy
msgid " Enable Magnetic Snap"
msgstr "Прилипать к Ñетке"
-#: ../bin/misc.c:2255 ../bin/misc.c:2458
+#: ../bin/menu.c:957 ../bin/menu.c:1207
msgid "Show/Hide Map"
msgstr "Показать/СпрÑтать миникарту"
-#: ../bin/misc.c:2257 ../../../../build/work/app/bin/bllnhlp.c:17
+#: ../bin/menu.c:981 ../bin/menu.c:983
#, fuzzy
-msgid "Show/Hide Background"
-msgstr "Показать/СпрÑтать Ñлой"
+msgid "Select Track Index..."
+msgstr "Выбранный трек"
-#: ../bin/misc.c:2288 ../bin/misc.c:2289
+#: ../bin/menu.c:995 ../bin/menu.c:996
#, fuzzy
msgid "Add..."
msgstr "Добавить"
-#: ../bin/misc.c:2292 ../bin/misc.c:2293
+#: ../bin/menu.c:999 ../bin/menu.c:1000
#, fuzzy
msgid "More..."
msgstr "Больше"
-#: ../bin/misc.c:2328
+#: ../bin/menu.c:1005
msgid "&New ..."
msgstr "&Ðовый ..."
-#: ../bin/misc.c:2330
+#: ../bin/menu.c:1007
msgid "&Open ..."
msgstr "&Открыть ..."
-#: ../bin/misc.c:2336
+#: ../bin/menu.c:1011 ../bin/misc.c:660
+msgid "&Save"
+msgstr "&Сохранить"
+
+#: ../bin/menu.c:1013
msgid "Save &As ..."
msgstr "&Сохранить как..."
-#: ../bin/misc.c:2338
+#: ../bin/menu.c:1015
msgid "Revert"
msgstr "ОчиÑтить изменениÑ"
-#: ../bin/misc.c:2341
+#: ../bin/menu.c:1028
msgid "P&rint Setup ..."
msgstr "&ÐаÑтройки печати ..."
-#: ../bin/misc.c:2346
+#: ../bin/menu.c:1036
msgid "&Import"
msgstr "&Импорт"
-#: ../bin/misc.c:2348
+#: ../bin/menu.c:1038
#, fuzzy
msgid "Import &Module"
msgstr "Импорт"
-#: ../bin/misc.c:2350
+#: ../bin/menu.c:1041
msgid "Export to &Bitmap"
msgstr "ЭкÑпорт в изображение"
-#: ../bin/misc.c:2353
+#: ../bin/menu.c:1044
msgid "E&xport"
msgstr "ЭкÑпорт"
-#: ../bin/misc.c:2355
+#: ../bin/menu.c:1046
msgid "Export D&XF"
msgstr "ЭкÑпорт DXF"
-#: ../bin/misc.c:2360
+#: ../bin/menu.c:1050
+#, fuzzy
+msgid "Export S&VG"
+msgstr "ЭкÑпорт DXF"
+
+#: ../bin/menu.c:1056
msgid "Parameter &Files ..."
msgstr "ÐаÑтройки файлов ..."
-#: ../bin/misc.c:2362
+#: ../bin/menu.c:1058
msgid "No&tes ..."
msgstr "Заметки ..."
-#: ../bin/misc.c:2369
+#: ../bin/menu.c:1065
msgid "E&xit"
msgstr "В&ыход"
-#: ../bin/misc.c:2375
+#: ../bin/menu.c:1102
msgid "&Undo"
msgstr "&Отменить"
-#: ../bin/misc.c:2377
+#: ../bin/menu.c:1104
msgid "R&edo"
msgstr "Повторить"
-#: ../bin/misc.c:2380
+#: ../bin/menu.c:1107
msgid "Cu&t"
msgstr "Вырезать"
-#: ../bin/misc.c:2382
+#: ../bin/menu.c:1109
msgid "&Copy"
msgstr "&Копировать"
-#: ../bin/misc.c:2384
+#: ../bin/menu.c:1111
msgid "&Paste"
msgstr "&Ð’Ñтавить"
-#: ../bin/misc.c:2386
+#: ../bin/menu.c:1113
#, fuzzy
msgid "C&lone"
msgstr "Закрыть"
-#: ../bin/misc.c:2388
+#: ../bin/menu.c:1115
msgid "De&lete"
msgstr "Удалить"
-#: ../bin/misc.c:2396
+#: ../bin/menu.c:1123
msgid "Select &All"
msgstr "Выбрать вÑÑ‘"
-#: ../bin/misc.c:2398
+#: ../bin/menu.c:1127
+#, fuzzy
+msgid "Select By Index"
+msgstr "Выбрать объекты"
+
+#: ../bin/menu.c:1129
msgid "&Deselect All"
msgstr "СнÑÑ‚ÑŒ выделение"
-#: ../bin/misc.c:2399
+#: ../bin/menu.c:1131
msgid "&Invert Selection"
msgstr "Инвертировать выделение"
-#: ../bin/misc.c:2400
+#: ../bin/menu.c:1134
msgid "Select Stranded Track"
msgstr "Выбрать проблемные треки"
-#: ../bin/misc.c:2402
+#: ../bin/menu.c:1136
msgid "Tu&nnel"
msgstr "Тоннель"
-#: ../bin/misc.c:2403
+#: ../bin/menu.c:1138
#, fuzzy
msgid "B&ridge"
msgstr "МоÑÑ‚"
-#: ../bin/misc.c:2404
-msgid "Ties/NoTies"
-msgstr ""
+#: ../bin/menu.c:1140
+#, fuzzy
+msgid "&Roadbed"
+msgstr "Дорога"
-#: ../bin/misc.c:2405
+#: ../bin/menu.c:1144
msgid "Move to &Front"
msgstr ""
-#: ../bin/misc.c:2406
+#: ../bin/menu.c:1146
#, fuzzy
msgid "Move to &Back"
msgstr "ПеремеÑтить треки"
-#: ../bin/misc.c:2417
+#: ../bin/menu.c:1161
msgid "Zoom &In"
msgstr "&Приблизить"
-#: ../bin/misc.c:2420
+#: ../bin/menu.c:1164
msgid "Zoom &Out"
msgstr "&Отдалить"
-#: ../bin/misc.c:2430
+#: ../bin/menu.c:1167
+#, fuzzy
+msgid "Zoom &Extents"
+msgstr "&Приблизить"
+
+#: ../bin/menu.c:1178
msgid "&Redraw"
msgstr "ПерериÑовать"
-#: ../bin/misc.c:2432
+#: ../bin/menu.c:1180
msgid "Redraw All"
msgstr "ПерериÑовать вÑÑ‘"
-#: ../bin/misc.c:2439
+#: ../bin/menu.c:1187
msgid "Show SnapGrid"
msgstr "Показать Ñетку"
-#: ../bin/misc.c:2449
+#: ../bin/menu.c:1198
#, fuzzy
msgid "Enable Magnetic Snap"
msgstr "Прилипать к Ñетке"
-#: ../bin/misc.c:2464
+#: ../bin/menu.c:1213
msgid "&Tool Bar"
msgstr "Панели инÑтрументов"
-#: ../bin/misc.c:2497
+#: ../bin/menu.c:1247 ../bin/menu.c:1248
#, fuzzy
msgid "Control Element"
msgstr "Элементы управлениÑ"
-#: ../bin/misc.c:2524
-msgid "&Loosen Tracks"
-msgstr "ПотерÑнные треки"
+#: ../bin/menu.c:1280
+msgid "Change Scale"
+msgstr "Изменить маÑштаб"
-#: ../bin/misc.c:2536
+#: ../bin/menu.c:1296
msgid "Raise/Lower Elevations"
msgstr "Увеличить/Уменьшить подъёмы"
-#: ../bin/misc.c:2545
+#: ../bin/menu.c:1305
msgid "Recompute Elevations"
msgstr "ПереÑчтитать выÑоты"
-#: ../bin/misc.c:2550
-msgid "Change Scale"
-msgstr "Изменить маÑштаб"
-
-#: ../bin/misc.c:2571
+#: ../bin/menu.c:1323
msgid "L&ayout ..."
msgstr "Слой ..."
-#: ../bin/misc.c:2573
+#: ../bin/menu.c:1325
msgid "&Display ..."
msgstr "Отображение ..."
-#: ../bin/misc.c:2575
+#: ../bin/menu.c:1327
msgid "Co&mmand ..."
msgstr "Команды..."
-#: ../bin/misc.c:2577
+#: ../bin/menu.c:1329
msgid "&Easements ..."
msgstr "Ð£Ð¿Ñ€Ð¾Ñ‰ÐµÐ½Ð¸Ñ ..."
-#: ../bin/misc.c:2580
+#: ../bin/menu.c:1332
msgid "&Fonts ..."
msgstr "Шрифты ..."
-#: ../bin/misc.c:2582
+#: ../bin/menu.c:1334
msgid "Stic&ky ..."
msgstr "Липучка ..."
-#: ../bin/misc.c:2587
+#: ../bin/menu.c:1339
msgid "&Debug ..."
msgstr "Отладка ..."
-#: ../bin/misc.c:2590
+#: ../bin/menu.c:1342
msgid "&Preferences ..."
msgstr "ÐŸÑ€ÐµÐ´Ð¿Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ñ ..."
-#: ../bin/misc.c:2592
+#: ../bin/menu.c:1344
msgid "&Colors ..."
msgstr "Цвета ..."
-#: ../bin/misc.c:2598
+#: ../bin/menu.c:1350
msgid "&Record ..."
msgstr "ЗапиÑÑŒ ..."
-#: ../bin/misc.c:2600
+#: ../bin/menu.c:1352
msgid "&Play Back ..."
msgstr "ВоÑпроизведение ..."
-#: ../bin/misc.c:2606
+#: ../bin/menu.c:1358
msgid "Main window"
msgstr "Главное окно"
-#: ../bin/misc.c:2620
+#: ../bin/menu.c:1372
msgid "Recent Messages"
msgstr "Ðедавние ÑообщениÑ"
-#: ../bin/misc.c:2627
+#: ../bin/menu.c:1379
msgid "Tip of the Day..."
msgstr "Совет днÑ..."
-#: ../bin/misc.c:2628
+#: ../bin/menu.c:1381
msgid "&Demos"
msgstr "Обучение"
-#: ../bin/misc.c:2629
+#: ../bin/menu.c:1382
#, fuzzy
msgid "Examples..."
msgstr "Ð£Ð¿Ñ€Ð¾Ñ‰ÐµÐ½Ð¸Ñ ..."
-#: ../bin/misc.c:2633 ../bin/smalldlg.c:222
+#: ../bin/menu.c:1386 ../bin/smalldlg.c:210
msgid "About"
msgstr "О программе"
-#: ../bin/misc.c:2646
+#: ../bin/menu.c:1399
msgid "Tur&nout Designer..."
msgstr "Редактор Ñтрелок..."
-#: ../bin/misc.c:2649
+#: ../bin/menu.c:1402
msgid "Layout &Control Elements"
msgstr "&Элементы ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°"
-#: ../bin/misc.c:2651
+#: ../bin/menu.c:1404
msgid "&Group"
msgstr "Группировать"
-#: ../bin/misc.c:2653
+#: ../bin/menu.c:1406
msgid "&Ungroup"
msgstr "Разгруппировать"
-#: ../bin/misc.c:2657
+#: ../bin/menu.c:1410
msgid "Custom defined parts..."
msgstr "ÐеÑтандартные Ñлементы..."
-#: ../bin/misc.c:2660
+#: ../bin/menu.c:1413
msgid "Update Turnouts and Structures"
msgstr ""
-#: ../bin/misc.c:2669
+#: ../bin/menu.c:1422
msgid "Layers ..."
msgstr "Слои ..."
-#: ../bin/misc.c:2673
+#: ../bin/menu.c:1426
msgid "Parts &List ..."
msgstr "СпиÑок &компонентов ..."
-#: ../bin/misc.c:2676
+#: ../bin/menu.c:1429
msgid "Price List..."
msgstr "СтоимоÑÑ‚ÑŒ компонентов..."
-#: ../bin/misc.c:2758
+#: ../bin/menu.c:1458 ../bin/menu.c:1459
#, fuzzy
msgid "Import/Export"
msgstr "ЭкÑпорт"
-#: ../bin/misc.c:2788
+#: ../bin/misc.c:487 ../bin/misc.c:491
+msgid "ABORT"
+msgstr "ÐÐ’ÐРИЯ"
+
+#: ../bin/misc.c:490
+msgid ""
+"\n"
+"Do you want to save your layout?"
+msgstr ""
+"\n"
+"Ð’Ñ‹ хотите Ñохранить ваш проект?"
+
+#: ../bin/misc.c:658
+msgid ""
+"Save changes to the layout design before closing?\n"
+"\n"
+"If you don't save now, your unsaved changes will be discarded."
+msgstr ""
+"Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´ закрытием?\n"
+"\n"
+"ЕÑли вы не Ñделаете Ñто, вÑе ваши неÑохранённые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ потерÑны."
+
+#: ../bin/misc.c:660
+msgid "&Don't Save"
+msgstr "Ðе ÑохранÑÑ‚ÑŒ"
+
+#: ../bin/misc.c:991
msgid ""
"Program was not terminated properly. Do you want to resume working on the "
"previous trackplan?"
@@ -6188,194 +6463,283 @@ msgstr ""
"Программа была завершена некорректно. Ð’Ñ‹ хотите продолжить работать Ñ "
"предыдущим проектом?"
-#: ../bin/misc.c:2789
+#: ../bin/misc.c:992
msgid "Resume"
msgstr "Продолжить"
-#: ../bin/misc.c:2789
+#: ../bin/misc.c:992
msgid "Resume with New Name"
msgstr ""
-#: ../bin/misc.c:2789
+#: ../bin/misc.c:992
#, fuzzy
msgid "Ignore Checkpoint"
msgstr "ÐšÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ°"
-#: ../bin/misc.c:2792
+#: ../bin/misc.c:995
#, c-format
msgid "Reload Checkpoint Selected\n"
msgstr ""
-#: ../bin/misc.c:2794
+#: ../bin/misc.c:997
#, c-format
msgid "Reload Checkpoint With New Name Selected\n"
msgstr ""
-#: ../bin/misc.c:2796
+#: ../bin/misc.c:999
#, c-format
msgid "Ignore Checkpoint Selected\n"
msgstr ""
-#: ../bin/misc.c:2909
+#: ../bin/misc.c:1121
#, c-format
msgid "Unnamed Trackplan - %s(%s)"
msgstr "БезымÑнный проект - %s(%s)"
-#: ../bin/misc.c:2995
+#: ../bin/misc.c:1175
msgid "Initializing commands"
msgstr "Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´"
-#: ../bin/misc.c:3004
+#: ../bin/misc.c:1184
msgid "Initializing menus"
msgstr "Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¼ÐµÐ½ÑŽ"
-#: ../bin/misc.c:3039
+#: ../bin/misc.c:1216
msgid "Reading parameter files"
msgstr "Чтение файлов Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸"
-#: ../bin/misc.c:3076
+#: ../bin/misc.c:1260
msgid "Initialization complete"
msgstr "Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð°"
-#: ../bin/param.c:92
+#: ../bin/param.c:76
msgid "Unexpected End Of String"
msgstr "Ðеожиданный конец Ñтроки"
-#: ../bin/param.c:99
+#: ../bin/param.c:83
msgid "Expected digit"
msgstr "Введите цифру"
-#: ../bin/param.c:106
+#: ../bin/param.c:91
msgid "Overflow"
msgstr "Переполнение"
-#: ../bin/param.c:154
+#: ../bin/param.c:140
msgid "Divide by 0"
msgstr "Деление на 0"
-#: ../bin/param.c:162
+#: ../bin/param.c:148
msgid "Expected /"
msgstr "Пропущено /"
-#: ../bin/param.c:248
+#: ../bin/param.c:233
msgid "Invalid Units Indicator"
msgstr "Ðеверный индикатор Ñлементов"
-#: ../bin/param.c:276
+#: ../bin/param.c:261
msgid "Expected End Of String"
msgstr "Ожидаемый конец Ñтроки"
-#: ../bin/param.c:302 ../bin/param.c:1406
+#: ../bin/param.c:289 ../bin/param.c:1528
#, c-format
msgid "Invalid Number"
msgstr "Ðеверный номер"
-#: ../bin/param.c:361
+#: ../bin/param.c:349
msgid "End Of String"
msgstr "Конец Ñтроки"
-#: ../bin/param.c:1413
+#: ../bin/param.c:1486
#, c-format
msgid "Enter a value > %ld"
msgstr "Ðаберите значение > %ld"
-#: ../bin/param.c:1415
+#: ../bin/param.c:1489
#, c-format
msgid "Enter a value < %ld"
msgstr "Ðаберите значение < %ld"
-#: ../bin/param.c:1417
+#: ../bin/param.c:1491
#, c-format
msgid "Enter a value between %ld and %ld"
msgstr "Ðаберите значение между %ld и %ld"
-#: ../bin/param.c:1473
+#: ../bin/param.c:1568
#, c-format
msgid "Enter a value > %s"
msgstr "Ðаберите значение > %s"
-#: ../bin/param.c:1476
+#: ../bin/param.c:1572
#, c-format
msgid "Enter a value < %s"
msgstr "Ðаберите значение < %s"
-#: ../bin/param.c:1479
+#: ../bin/param.c:1575
#, c-format
msgid "Enter a value between %s and %s"
msgstr "Ðаберите значение между %s и %s"
-#: ../bin/param.c:2647
+#: ../bin/param.c:1674
+#, fuzzy
+msgid "String cannot be blank"
+msgstr "Слой не может быть изменён"
+
+#: ../bin/param.c:1689
+#, c-format
+msgid "String is too long, Max length is %u"
+msgstr ""
+
+#: ../bin/param.c:1823
+msgid "Invalid input(s), please correct the hilighted field(s)"
+msgstr ""
+
+#: ../bin/param.c:3043
msgid "Help"
msgstr "Помощь"
-#: ../bin/paramfile.c:247
+#: ../bin/paramfile.c:258
msgid "Parameter"
msgstr ""
-#: ../bin/paramfile.c:345
+#: ../bin/paramfile.c:363
msgid "Unknown param file line - skip until next good object?"
msgstr ""
-#: ../bin/paramfilelist.c:110
+#: ../bin/paramfilelist.c:69
+#, c-format
+msgid ""
+"The parameter file: %s could not be found and was probably deleted or moved. "
+"The file is removed from the active parameter file list."
+msgstr ""
+
+#: ../bin/paramfilelist.c:126
#, c-format
msgid "Updating %s"
msgstr "Обновление %s"
-#: ../bin/paramfilesearch_ui.c:68
-msgid "Enter at least one search word"
+#: ../bin/paramfilesearch_ui.c:52
+#, fuzzy
+msgid "Fit Any"
+msgstr "Первый "
+
+#: ../bin/paramfilesearch_ui.c:52
+msgid "Fit Compatible"
msgstr ""
-#: ../bin/paramfilesearch_ui.c:77
-#, fuzzy
-msgid "Reload Library"
-msgstr "Перезагрузить"
+#: ../bin/paramfilesearch_ui.c:52
+msgid "Fit Exact"
+msgstr ""
-#: ../bin/paramfilesearch_ui.c:274
+#: ../bin/paramfilesearch_ui.c:192
#, fuzzy, c-format
-msgid "%d parameter files found."
+msgid "%u parameter files in library. %d Fit Scale."
msgstr "Чтение файлов Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸"
-#: ../bin/paramfilesearch_ui.c:284
+#: ../bin/paramfilesearch_ui.c:307
+#, fuzzy, c-format
+msgid "%d parameter files found. %d Fit Scale"
+msgstr "Чтение файлов Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸"
+
+#: ../bin/paramfilesearch_ui.c:317
msgid "No matches found."
msgstr ""
-#: ../bin/paramfilesearch_ui.c:396
+#: ../bin/paramfilesearch_ui.c:477
#, fuzzy
msgid "Choose parameter files"
msgstr "Чтение файлов Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸"
-#: ../bin/paramfilesearch_ui.c:416
+#: ../bin/paramfilesearch_ui.c:495
msgid "No system parameter files found, search is disabled."
msgstr ""
-#: ../bin/smalldlg.c:64
+#: ../bin/partcatalog.c:739
+msgid "Found: "
+msgstr ""
+
+#: ../bin/partcatalog.c:740
+msgid "Similar: "
+msgstr ""
+
+#: ../bin/partcatalog.c:741
+#, fuzzy
+msgid "Ignored: "
+msgstr "Игнорировать"
+
+#: ../bin/partcatalog.c:742
+#, fuzzy
+msgid "Not found: "
+msgstr "Ðе на треке"
+
+#: ../bin/scale.c:301
+#, c-format
+msgid ""
+"Invalid Scale: playback aborted\n"
+" SCALE %s"
+msgstr ""
+
+#: ../bin/scale.c:845 ../bin/scale.c:870
+msgid "Ratio"
+msgstr ""
+
+#: ../bin/scale.c:854
+msgid "Do not resize track"
+msgstr "Ðе изменÑÑ‚ÑŒ размер трека"
+
+#: ../bin/scale.c:858
+msgid "Rescale by:"
+msgstr ""
+
+#: ../bin/scale.c:860
+msgid "From:"
+msgstr "От:"
+
+#: ../bin/scale.c:864
+msgid "To: "
+msgstr ""
+
+#: ../bin/scale.c:913
+msgid "Rescale Tracks"
+msgstr "ПеремаÑштабировать треки"
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:473
+#: ../bin/scale.c:1084 ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1258
+msgid "Rescale"
+msgstr "ПеремаÑштабировать"
+
+#: ../bin/scale.c:1134
+#, c-format
+msgid "%ld Objects to be rescaled"
+msgstr ""
+
+#: ../bin/smalldlg.c:45
msgid "Show tips at start"
msgstr ""
"Показывать\n"
"Ñоветы\n"
"при Ñтарте"
-#: ../bin/smalldlg.c:70
+#: ../bin/smalldlg.c:51
msgid "Did you know..."
msgstr "Знаете ли вы..."
-#: ../bin/smalldlg.c:72
+#: ../bin/smalldlg.c:53
msgid "Previous Tip"
msgstr "Предыдущий"
-#: ../bin/smalldlg.c:73
+#: ../bin/smalldlg.c:54
msgid "Next Tip"
msgstr "Следующий"
-#: ../bin/smalldlg.c:90
+#: ../bin/smalldlg.c:72
msgid "Tip of the Day"
msgstr "Совет днÑ"
-#: ../bin/smalldlg.c:99
+#: ../bin/smalldlg.c:82
msgid "No tips are available"
msgstr "Советы недоÑтупны"
-#: ../bin/smalldlg.c:199
+#: ../bin/smalldlg.c:187
msgid ""
"XTrackCAD is a CAD (computer-aided design) program for designing model "
"railroad layouts."
@@ -6383,105 +6747,93 @@ msgstr ""
"XTrackCAD Ñто СÐПР (ÑиÑтема автоматизированного проектированиÑ) программа "
"Ð´Ð»Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÐºÐµÑ‚Ð° железной дороги."
-#: ../bin/tbezier.c:177
-#, fuzzy, c-format
-msgid "Bezier: len=%0.2f min_rad=%0.2f"
-msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ð‘ÐµÐ·ÑŒÐµ: длина=%s мин. радиуÑ=%s"
+#: ../bin/tbezier.c:214
+#, c-format
+msgid "Bez: L%s A%0.3f trk_len=%s min_rad=%s"
+msgstr ""
-#: ../bin/tbezier.c:250
+#: ../bin/tbezier.c:288
msgid "Ctl Pt 1: X,Y"
msgstr ""
-#: ../bin/tbezier.c:251
+#: ../bin/tbezier.c:289
msgid "Ctl Pt 2: X,Y"
msgstr ""
-#: ../bin/tbezier.c:257
+#: ../bin/tbezier.c:295
msgid "MinRadius"
msgstr "Мин. радиуÑ"
-#: ../bin/tbezier.c:262
+#: ../bin/tbezier.c:300
msgid "Line Color"
msgstr "Цвет линии"
-#: ../bin/tbezier.c:379
+#: ../bin/tbezier.c:440
#, c-format
msgid ""
"Bezier %s(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,%"
"0.3f] CP1=[%0.3f,%0.3f] CP2=[%0.3f, %0.3f]"
msgstr ""
-#: ../bin/tbezier.c:453
+#: ../bin/tbezier.c:514
msgid "Bezier Track"
msgstr "Трек Безье"
-#: ../bin/tbezier.c:870
-msgid "Merge Bezier"
-msgstr ""
-
-#: ../bin/tcornu.c:222
+#: ../bin/tcornu.c:246
#, c-format
-msgid "Cornu: len=%0.2f min_rad=%0.2f"
+msgid "Cornu: L %s A %0.3f L %s MinR %s"
msgstr ""
-#: ../bin/tcornu.c:296
+#: ../bin/tcornu.c:321
msgid "Radius "
msgstr "Ð Ð°Ð´Ð¸ÑƒÑ "
-#: ../bin/tcornu.c:304
+#: ../bin/tcornu.c:329
msgid "Minimum Radius"
msgstr "Минимальный радиуÑ"
-#: ../bin/tcornu.c:305
+#: ../bin/tcornu.c:330
msgid "Max Rate Of Curve Change/Scale"
msgstr ""
-#: ../bin/tcornu.c:306
+#: ../bin/tcornu.c:331
msgid "Total Winding Angle"
msgstr ""
-#: ../bin/tcornu.c:444
+#: ../bin/tcornu.c:476
#, c-format
msgid ""
"Cornu Track(%d): Layer=%u MinRadius=%s Length=%s EP=[%0.3f,%0.3f] [%0.3f,%"
"0.3f]"
msgstr ""
-#: ../bin/tcornu.c:497
+#: ../bin/tcornu.c:532
msgid "Cornu Track"
msgstr ""
-#: ../bin/tcornu.c:1025
-msgid "Merge Cornu"
-msgstr ""
-
-#: ../bin/tcurve.c:243
+#: ../bin/tcurve.c:259
#, c-format
-msgid "Helix: turns=%ld len=%0.2f grade=%0.1f%% sep=%0.2f"
+msgid "Helix: Turns %ld L %0.2f Grade %0.1f%% Sep %0.2f"
msgstr ""
-#: ../bin/tcurve.c:249
+#: ../bin/tcurve.c:265
#, c-format
-msgid "Helix: turns=%ld len=%0.2f"
+msgid "Helix: Turns %ld L %0.2f"
msgstr ""
-#: ../bin/tcurve.c:365 ../bin/tcurve.c:367 ../bin/tease.c:520
-#: ../bin/tease.c:522 ../bin/tstraigh.c:86 ../bin/tstraigh.c:88
+#: ../bin/tcurve.c:397 ../bin/tcurve.c:399 ../bin/tease.c:525
+#: ../bin/tease.c:527 ../bin/tstraigh.c:88 ../bin/tstraigh.c:90
msgid "Z"
msgstr "Z"
-#: ../bin/tcurve.c:373
-msgid "Angular Length"
-msgstr "Длина дуги"
-
-#: ../bin/tcurve.c:553
+#: ../bin/tcurve.c:591
#, c-format
msgid ""
"Helix Track(%d): Layer=%d Radius=%s Turns=%ld Length=%s Center=[%s,%s] EP=[%"
"0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%0.3f]"
msgstr ""
-#: ../bin/tcurve.c:563
+#: ../bin/tcurve.c:602
#, c-format
msgid ""
"Curved Track(%d): Layer=%d Radius=%s Length=%s Center=[%s,%s] EP=[%0.3f,%"
@@ -6490,158 +6842,182 @@ msgstr ""
"Изогнутый трек(%d): Слой=%d РадиуÑ=%s Длина=%s Центр=[%s,%s] EP=[%0.3f,%0.3f "
"A%0.3f] [%0.3f,%0.3f A%0.3f]"
-#: ../bin/tcurve.c:640
+#: ../bin/tcurve.c:681
msgid "Helix Track"
msgstr ""
-#: ../bin/tcurve.c:646
+#: ../bin/tcurve.c:687
msgid "Curved Track"
msgstr ""
-#: ../bin/tcurve.c:1013
+#: ../bin/tcurve.c:1232
msgid "Merge Curves"
msgstr "СовмеÑтить кривые"
-#: ../bin/tcurve.c:1082
+#: ../bin/tcurve.c:1306
msgid "Drag to change angle or create tangent"
msgstr ""
-#: ../bin/tcurve.c:1115 ../bin/tcurve.c:1147
+#: ../bin/tcurve.c:1341 ../bin/tcurve.c:1374
msgid "Curved "
msgstr ""
-#: ../bin/tcurve.c:1121
+#: ../bin/tcurve.c:1347
msgid "Tangent "
msgstr "Ð¢Ð°Ð½Ð³ÐµÐ½Ñ "
-#: ../bin/tcurve.c:1130
+#: ../bin/tcurve.c:1356
#, c-format
msgid "Tangent track: Length %s Angle %0.3f"
msgstr ""
-#: ../bin/tcurve.c:1152
+#: ../bin/tcurve.c:1378
#, c-format
msgid "Curved: Radius=%s Length=%s Angle=%0.3f"
msgstr ""
-#: ../bin/tease.c:527
+#: ../bin/tease.c:532
msgid "l0"
msgstr ""
-#: ../bin/tease.c:528
+#: ../bin/tease.c:533
msgid "l1"
msgstr ""
-#: ../bin/tease.c:570
+#: ../bin/tease.c:581
#, c-format
msgid ""
"Joint Track(%d): Layer=%d Length=%0.3f EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A"
"%0.3f]"
msgstr ""
-#: ../bin/tease.c:615
+#: ../bin/tease.c:629
msgid "Easement Track"
msgstr ""
-#: ../bin/tease.c:1235
+#: ../bin/tease.c:1407
msgid "Merge Easements"
msgstr ""
-#: ../bin/tease.c:1303
+#: ../bin/tease.c:1481
msgid "Split Easement Curve"
msgstr ""
-#: ../bin/textnoteui.c:214
+#: ../bin/textnoteui.c:175
#, fuzzy, c-format
-msgid "Note: Layer=%d %-.80s"
+msgid "Text Note(%d) Layer=%d %-.80s"
msgstr "(%d): Слой=%d %s"
-#: ../bin/textnoteui.c:225
+#: ../bin/textnoteui.c:189
#, fuzzy
-msgid "Update comment"
-msgstr "Отменить поÑледнюю команду"
+msgid "Update Text Note"
+msgstr "Создать текÑÑ‚"
-#: ../bin/textnoteui.c:237
+#: ../bin/textnoteui.c:200
msgid "Replace this text with your note"
msgstr "Замените Ñтот текÑÑ‚ вашей заметкой"
-#: ../bin/textnoteui.c:241
+#: ../bin/textnoteui.c:206
#, fuzzy
msgid "Create Text Note"
msgstr "Создать текÑÑ‚"
-#: ../bin/track.c:1329
+#: ../bin/track.c:290
+msgid "No track or structure pieces are present in layout"
+msgstr ""
+
+#: ../bin/track.c:292
+msgid "No track or structure pieces are selected"
+msgstr ""
+
+#: ../bin/track.c:1461
msgid "Move Objects Above"
msgstr ""
-#: ../bin/track.c:1349
+#: ../bin/track.c:1481
msgid "Mode Objects Below"
msgstr ""
-#: ../bin/track.c:1640
+#: ../bin/track.c:1785
msgid "Audit"
msgstr "Ðудит"
-#: ../bin/track.c:1929
+#: ../bin/track.c:1990
#, c-format
-msgid "%d Track(s) loosened"
+msgid "Connecting a car to a non-car T%d T%d"
msgstr ""
-#: ../bin/track.c:1936
-msgid "No tracks loosened"
+#: ../bin/track.c:2000 ../bin/track.c:2005
+#, c-format
+msgid "Connecting a non-track(%d) to (%d)"
msgstr ""
-#: ../bin/track.c:1946 ../bin/track.c:1950
+#: ../bin/track.c:2047
#, c-format
-msgid "Connecting a non-track(%d) to (%d)"
+msgid "Disconnecting a car from a non-car T%d T%d"
msgstr ""
-#: ../bin/track.c:2005
+#: ../bin/track.c:2081
msgid "Join Abutting Tracks"
msgstr ""
-#: ../bin/track.c:2291 ../bin/track.c:2326
+#: ../bin/track.c:2407 ../bin/track.c:2444
msgid "Inside turnout track"
msgstr ""
-#: ../bin/track.c:2309
+#: ../bin/track.c:2425
#, fuzzy, c-format
msgid "Curve: Length=%s Radius=%0.3f Arc=%0.3f"
msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ð‘ÐµÐ·ÑŒÐµ: длина=%s мин. радиуÑ=%s"
-#: ../bin/track.c:2332 ../bin/track.c:2390 ../bin/tstraigh.c:568
+#: ../bin/track.c:2452 ../bin/track.c:2517 ../bin/tstraigh.c:853
#, c-format
msgid "Straight: Length=%s Angle=%0.3f"
msgstr "ПрÑмой: Длина=%s Угол=%0.3f"
-#: ../bin/trknote.c:60
+#: ../bin/track.c:3374
+#, c-format
+msgid "[%0.2f,%0.2f] A%0.2f"
+msgstr ""
+
+#: ../bin/track.c:3378
+#, c-format
+msgid "[%0.2f,%0.2f] A%0.2f\n"
+msgstr ""
+
+#: ../bin/trknote.c:52 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:154
#, fuzzy
-msgid "Comment"
-msgstr "Содержание"
+msgid "Text Note"
+msgstr "Создать текÑÑ‚"
-#: ../bin/trknote.c:61
+#: ../bin/trknote.c:53
#, fuzzy
msgid "Link"
msgstr "ПрÑмаÑ"
-#: ../bin/trknote.c:61 ../../../../build/work/app/bin/bllnhlp.c:103
+#: ../bin/trknote.c:53 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:105
msgid "Weblink"
msgstr ""
-#: ../bin/trknote.c:638 ../../../../build/work/app/bin/bllnhlp.c:111
+#: ../bin/trknote.c:526 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:113
msgid "Place a note on the layout"
msgstr "ПомеÑтить заметку на рабочую облаÑÑ‚ÑŒ"
-#: ../bin/trknote.c:652
+#: ../bin/trknote.c:540
msgid "New Note"
msgstr "ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ°"
-#: ../bin/trknote.c:708
+#: ../bin/trknote.c:594
#, fuzzy
msgid "Add notes"
msgstr "Добавлен новый"
-#: ../bin/tstraigh.c:236
+#: ../bin/tstraigh.c:92
+#, fuzzy
+msgid "Track Angle"
+msgstr "Угол"
+
+#: ../bin/tstraigh.c:212
#, c-format
msgid ""
"Straight Track(%d): Layer=%d Length=%s EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A"
@@ -6650,110 +7026,18 @@ msgstr ""
"ПрÑмой трек(%d): Слой=%d Длина=%s EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%"
"0.3f]"
-#: ../bin/tstraigh.c:481
+#: ../bin/tstraigh.c:762
msgid "Extending Straight Track"
msgstr "РаÑширение прÑмого трека"
-#: ../bin/tstraigh.c:561
+#: ../bin/tstraigh.c:845
msgid "Straight "
msgstr "ПрÑÐ¼Ð°Ñ "
-#: ../wlib/gtklib/filesel.c:94
+#: ../bin/svgoutput.c:484
#, fuzzy
-msgid "Save format:"
-msgstr "Сохранить изображение"
-
-#: ../wlib/gtklib/filesel.c:187
-#, fuzzy
-msgid "Image files"
-msgstr "Ð’Ñе файлы"
-
-#: ../wlib/gtklib/font.c:281
-msgid "Font Select"
-msgstr "Выбор шрифта"
-
-#: ../wlib/gtklib/help.c:83 ../wlib/mswlib/mswmisc.c:2240
-msgid "&Contents"
-msgstr "&Содержание"
-
-#: ../wlib/gtklib/help.c:84
-msgid "Co&mmand Context help"
-msgstr ""
-
-#: ../wlib/gtklib/ixhelp.c:243
-msgid "Home"
-msgstr "Домой"
-
-#: ../wlib/gtklib/ixhelp.c:247
-msgid "Contents"
-msgstr "Содержание"
-
-#: ../wlib/gtklib/menu.c:541
-msgid "<Empty List>"
-msgstr "СпиÑок поÑледних файлов пуÑÑ‚"
-
-#: ../wlib/gtklib/notice.c:101 ../wlib/mswlib/mswmisc.c:2100
-#: ../wlib/mswlib/mswmisc.c:2143
-msgid "Warning"
-msgstr "Предупреждение"
-
-#: ../wlib/gtklib/notice.c:106 ../wlib/mswlib/mswmisc.c:2105
-msgid "Error"
-msgstr "Ошибка"
-
-#: ../wlib/gtklib/text.c:300
-#, c-format
-msgid "%d of %d"
-msgstr "%d из %d"
-
-#: ../wlib/gtklib/wpref.c:114
-#, c-format
-msgid ""
-"The required configuration files could not be located in the expected "
-"location.\n"
-"\n"
-"Usually this is an installation problem. Make sure that these files are "
-"installed in either \n"
-" %s/share/xtrkcad or\n"
-" /usr/lib/%s or\n"
-" /usr/local/lib/%s\n"
-"If this is not possible, the environment variable %s must contain the name "
-"of the correct directory."
-msgstr ""
-
-#: ../wlib/gtklib/wpref.c:148 ../wlib/gtklib/wpref.c:193
-msgid "HOME is not set"
-msgstr "Папка HOME не задана"
-
-#: ../wlib/gtklib/wpref.c:148 ../wlib/gtklib/wpref.c:157
-#: ../wlib/gtklib/wpref.c:193
-msgid "Exit"
-msgstr "Выход"
-
-#: ../wlib/gtklib/wpref.c:156
-#, c-format
-msgid "Cannot create %s"
-msgstr "Ðевозможно Ñоздать %s"
-
-#: ../wlib/mswlib/backgnd.c:103
-msgid "Image file is invalid or cannot be read."
-msgstr ""
-
-#: ../wlib/mswlib/mswmenu.c:886
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
-#: ../wlib/mswlib/mswmenu.c:891
-msgid "Alt+"
-msgstr "Alt+"
-
-#: ../wlib/mswlib/mswmenu.c:896
-msgid "Shift+"
-msgstr "Shift+"
-
-#: ../wlib/mswlib/mswmenu.c:902
-msgid "Space"
-msgstr "Пробел"
+msgid "Export to SVG"
+msgstr "ЭкÑпортировать в DXF"
#: ../wlib/mswlib/mswmisc.c:188
#, fuzzy
@@ -6781,15 +7065,38 @@ msgstr ""
msgid "All files (*)"
msgstr "Ð’Ñе файлы"
-#: ../wlib/mswlib/mswmisc.c:2241
+#: ../wlib/mswlib/mswmisc.c:2062 ../wlib/mswlib/mswmisc.c:2105
+msgid "Warning"
+msgstr "Предупреждение"
+
+#: ../wlib/mswlib/mswmisc.c:2067
+msgid "Error"
+msgstr "Ошибка"
+
+#: ../wlib/mswlib/mswmisc.c:2203
+msgid "&Contents"
+msgstr "&Содержание"
+
+#: ../wlib/mswlib/mswmisc.c:2204
msgid "&Search for Help on..."
msgstr ""
-#: ../wlib/mswlib/mswmisc.c:2242
+#: ../wlib/mswlib/mswmisc.c:2205
msgid "Co&mmand Context Help"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:9
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:9
+#, c-format
+msgid ""
+"MSG_BETA_NOTICE\tXTrackCAD Version %s: Please note that this Beta Version of "
+"XTrackCAD is still undergoing final testing before its official release. The "
+"sole purpose of this Beta Version is to conduct testing and obtain feedback. "
+"Should you encounter any bugs, glitches, lack of functionality or other "
+"problems, please let us know immediately so we can rectify these "
+"accordingly. Your help in this regard is greatly appreciated!"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:10
#, c-format
msgid ""
"MSG_CANT_PLACE_FROGPOINTS\tFrog|Points cannot be placed on a turnout, circle "
@@ -6798,17 +7105,17 @@ msgstr ""
"MSG_CANT_PLACE_FROGPOINTS\tFrog|Points cannot be placed on a turnout, circle "
"or helix.\t%s не может быть помещена на Ñтрелку, круг или Ñпираль."
-#: ../../../../build/work/app/help/messages.h:10
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:11
msgid ""
"MSG_SEL_TRK_FROZEN\tA frozen layer contains selected track. Command cannot "
"be executed."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:11
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:12
msgid "MSG_HELIX_TURNS_GTR_0\tA Helix must have one or more loops of track."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:12
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:13
msgid ""
"MSG_LARGE_FONT\tA large font has been selected....\tA large font has been "
"selected.\n"
@@ -6817,7 +7124,13 @@ msgid ""
"Do you wish to continue?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:13
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:14
+msgid ""
+"MSG_TEXT_TOO_LONG\tThe entered text was too long for the text object. It was "
+"truncated."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:15
msgid ""
"MSG_TODSGN_DESC_NONBLANK\tAll description fields present in the Turnout..."
"\tAll description fields present in the Turnout\n"
@@ -6825,25 +7138,25 @@ msgid ""
"Correct inappropriate values and try again."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:14
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:16
msgid ""
"MSG_GROUP_NONBLANK\tAll fields listed in the Group dialog must contain "
"data....\tAll fields listed in the Group dialog must contain data.\n"
"Please enter missing values and try again."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:15
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:17
msgid ""
"MSG_TODSGN_VALUES_GTR_0\tAll values specified in the Turnout Designer must "
"be...\tAll values specified in the Turnout Designer must be\n"
"greater than 0. Correct inappropriate values and try again."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:16
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:18
msgid "MSG_CURVE_OUT_OF_RANGE\tAngle must be between 0\\u00B0 and 360\\u00B0."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:17
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:19
msgid ""
"MSG_TODSGN_CORNU_TOO_COMPLEX\tThe curves created by the Turnout Designer for "
"a cornu curve have more than 128 segments....\tThe curves created by the "
@@ -6851,7 +7164,7 @@ msgid ""
"Try adjusting the end angles and radii to be closer in values."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:18
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:20
#, c-format
msgid ""
"MSG_CUSTMGM_DELETE_CONFIRM\tAre you sure you want to delete the NNN "
@@ -6859,131 +7172,144 @@ msgid ""
"%d definition(s)?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:19
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:21
msgid "MSG_WBITMAP_FAILED\tBitmap create or write function failed."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:20
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:22
msgid "MSG_BITMAP_TOO_LARGE\tBitmap is too large."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:21
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:23
msgid "MSG_CHANGE_ELEV_MODE\tCannot change elevation mode."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:22
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:24
msgid ""
"MSG_GRID_ENABLE_SPACE_GTR_0\tCannot Enable Grid; spacing must be greater "
"than 0"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:23
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:25
msgid "MSG_LAYER_FREEZE\tCannot freeze current layer"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:24
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:26
+msgid ""
+"MSG_GROUP_NO_PATHS\tNo Paths were detected when grouping selected Tracks."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:27
msgid ""
"MSG_CANT_GROUP_BUMPER1\tCannot Group Bumper Track. The track has been "
"unselected."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:25
-msgid "MSG_CANNOT_GROUP_TRACK\tCannot Group selected track."
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:28
+#, c-format
+msgid "MSG_CANNOT_GROUP_TRACK\tCannot Group selected track type %s."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:26
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:29
msgid "MSG_LAYER_HIDE\tCannot hide current layer"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:27
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:30
msgid "MSG_LAYER_MODULE\tCannot turn current layer into a Module"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:28
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:31
msgid "MSG_JOIN_EASEMENTS\tCannot Join; Easements do not align or abut."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:29
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:32
#, c-format
msgid ""
"MSG_TRK_ALREADY_CONN\tFirst|Second track is already connected.\tCannot Join; "
"%s track is already connected."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:30
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:33
msgid "MSG_JOIN_TURNTABLE\tCannot join from a turntable, try to a turntable"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:31
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:34
msgid "MSG_JOIN_CORNU_SAME\tCannot Join; Selected endpoints are on same track."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:32
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:35
msgid "MSG_JOIN_SAME\tCannot Join; Selected endpoints are on same track."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:33
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:36
+msgid ""
+"MSG_JOIN_NOTBEZIERORCORNU\tCannot Join Bezier or Cornu track if Easement is "
+"not Cornu"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:37
msgid ""
"MSG_SELECTED_TRACKS_PARALLEL\tCannot Join; Selected tracks are parallel."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:34
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:38
#, c-format
msgid ""
"MSG_PRMFIL_OPEN_NEW\tCannot open New Parameter File: FILENAME\tCannot open "
"New Parameter File: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:35
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:39
msgid "MSG_LAYER_SEL_FROZEN\tCannot select a frozen layer"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:36
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:40
msgid ""
"MSG_GRID_SHOW_SPACE_GTR_0\tCannot Show Grid; spacing must be greater than 0"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:37
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:41
#, c-format
-msgid "MSG_CANT_SPLIT_TRK\tCannot split TYPE track\tCannot split %s track"
+msgid ""
+"MSG_CANT_SPLIT_TRK\tCannot split TYPE track\tCannot split track of type %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:38
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:42
#, c-format
msgid ""
"MSG_CUSTMGM_CANT_WRITE\tCannot write to parameter file: FILENAME\tCannot "
"write to parameter file: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:39
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:43
msgid "MSG_CARIMP_DUP_INDEX\tCar Index number duplicated."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:40
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:44
msgid ""
"MSG_CONN_PARAMS_TOO_SMALL\tConnection parameters reset to minimum values."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:41
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:45
msgid "MSG_CONN_PARAMS_TOO_BIG\tConnection parameters reset to maximum values."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:42
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:46
msgid "MSG_CANT_PASTE\tCopy/Paste buffer is empty. There is nothing to Paste."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:43
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:47
msgid ""
"MSG_TODSGN_CROSSOVER_TOO_SHORT\tCrossover length is too short. Correct..."
"\tCrossover length is too short. Correct\n"
"inappropriate value(s) and try again."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:44
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:48
msgid "MSG_CURVE_TOO_LARGE\tCurved track is too large."
msgstr "MSG_CURVE_TOO_LARGE\tИзогнутый трек Ñлишком большой."
-#: ../../../../build/work/app/help/messages.h:45
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:49
msgid ""
"MSG_TODSGN_REPLACE\tDefinition name is already in use. Saving this..."
"\tDefinition name is already in use. Saving this\n"
@@ -6992,20 +7318,20 @@ msgid ""
"Do you want to continue?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:46
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:50
msgid "MSG_SAVE_CHANGES\tDo you want to save the changes made to your Layout?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:47
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:51
msgid ""
"MSG_CARIMP_DUP_COLUMNS\tDuplicate column headers found in Car Import file."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:48
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:52
msgid "MSG_EP_ON_PATH\tEndpoint already on Path."
msgstr "MSG_EP_ON_PATH\tÐšÐ¾Ð½ÐµÑ‡Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° уже на пути."
-#: ../../../../build/work/app/help/messages.h:49
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:53
#, c-format
msgid ""
"MSG_UPGRADE_VERSION1\tFile version %ld is greater than supported...\tFile "
@@ -7018,7 +7344,7 @@ msgstr ""
"верÑÐ¸Ñ %d. Вам необходимо обновить %s\n"
"до поÑледней верÑии %s."
-#: ../../../../build/work/app/help/messages.h:50
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:54
#, c-format
msgid ""
"MSG_UPGRADE_VERSION2\tFile version %ld is greater than supported...\tFile "
@@ -7031,14 +7357,14 @@ msgstr ""
"верÑÐ¸Ñ %d. Вам необходимо обновить вашу\n"
"верÑию %s"
-#: ../../../../build/work/app/help/messages.h:51
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:55
#, c-format
msgid ""
"MSG_LAYOUT_LINES_SKIPPED\tWhile processing Layout file %s, %d lines were "
"skipped because they were not recognized."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:52
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:56
#, fuzzy, c-format
msgid ""
"MSG_PARAM_UPGRADE_VERSION1\tFile version %ld is greater than supported..."
@@ -7051,7 +7377,7 @@ msgstr ""
"верÑÐ¸Ñ %d. Вам необходимо обновить %s\n"
"до поÑледней верÑии %s."
-#: ../../../../build/work/app/help/messages.h:53
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:57
#, fuzzy, c-format
msgid ""
"MSG_PARAM_UPGRADE_VERSION2\tFile version %ld is greater than supported..."
@@ -7064,62 +7390,62 @@ msgstr ""
"верÑÐ¸Ñ %d. Вам необходимо обновить вашу\n"
"верÑию %s"
-#: ../../../../build/work/app/help/messages.h:54
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:58
#, c-format
msgid ""
"MSG_PARAM_LINES_SKIPPED\tWhile processing Parameter file %s, %d lines were "
"skipped because they were not recognized."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:55
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:59
msgid ""
"MSG_MOVE_POINTS_OTHER_SIDE\tFrog angle prevents placement of points. Move "
"points to opposite side of frog."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:56
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:60
msgid "MSG_NO_ROOM_BTW_TRKS\tInsufficient space between existing stall tracks."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:57
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:61
#, c-format
msgid ""
"MSG_JOIN_DIFFER_ELEV\tJoining tracks with differing elevations (N.NNN)"
"\tJoining tracks with differing elevations (%0.2f)"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:58
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:62
msgid "MSG_TRK_DESC_NOT_VISIBLE\tLabel description is hidden"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:59
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:63
msgid "MSG_DESC_NOT_VISIBLE\tLabel descriptions not visible"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:60
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:64
msgid "MSG_OBJECT_TOO_SHORT\tLength of object is too short."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:61
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:65
#, c-format
msgid ""
"MSG_PRINT_MAX_SIZE\tMaximum allowed page size is W x H\tMaximum allowed page "
"size is %s x %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:62
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:66
msgid ""
"MSG_NO_PRINTER_SELECTED\tPlease select a printer from the Print Setup dialog."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:63
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:67
#, c-format
msgid ""
"MSG_PRMFIL_NO_CONTENTS\tNew Parameter File has no CONTENTS line: FILENAME."
"\tNew Parameter File has no CONTENTS line: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:64
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:68
msgid ""
"MSG_NO_CARS\tNo Cars are defined for the current scale....\tNo Cars are "
"defined for the current scale.\n"
@@ -7127,7 +7453,7 @@ msgid ""
"Do you want to use the Car Inventory dialog?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:65
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:69
msgid ""
"MSG_NO_CARPROTO\tNo Car Prototypes are defined....\tNo Car Prototypes are "
"defined.\n"
@@ -7141,60 +7467,72 @@ msgstr ""
"Parameter Files dialog or create a Prototype\n"
"definition using the Car Prototype dialog."
-#: ../../../../build/work/app/help/messages.h:66
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:70
msgid "MSG_CARIMP_NO_DATA\tNo data present in Car Import file."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:67
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:71
msgid "MSG_PRINT_NO_PAGES\tNo pages selected for printing."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:68
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:72
msgid "MSG_NO_PATH_TO_EP\tNo path between Profile and selected endpoint."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:69
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:73
#, c-format
msgid ""
"MSG_PRMFIL_NO_MAP\tNo Parameter File Map for CONTENTS\tNo Parameter File Map "
"for %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:70
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:74
msgid "MSG_NO_SELECTED_TRK\tNo track(s) selected!"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:71
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:75
msgid ""
"MSG_NO_EMPTY_LAYER\tNo layer was found that has no contents, so the module "
"can not be imported"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:72
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:76
+msgid ""
+"MSG_NO_UNFROZEN_LAYER\tNo layer was found that wasn't frozen. Layer 0 is "
+"unfrozen."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:77
+msgid ""
+"MSG_NOT_UNFROZEN_LAYER\tThe current layer was defined as frozen. It is now "
+"unfrozen."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:78
#, c-format
msgid ""
"MSG_NO_TURNOUTS_AVAILABLE\tNo Turnouts|Structures are available.\tNo %s are "
"available."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:73
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:79
msgid ""
"MSG_CARDESC_VALUE_ZERO\tNumeric values on the Car Description...\tNumeric "
"values on the Car Description\n"
"dialog must be greater than 0."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:74
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:80
msgid "MSG_MOVE_OUT_OF_BOUNDS\tObject has moved beyond room boundaries."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:75
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:81
msgid ""
"MSG_PARALLEL_SEP_GTR_0\tParallel separation must be greater than 0, or the "
"new guage must be different than the old."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:76
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:82
msgid ""
"MSG_CARPART_DUPNAME\tPart Number for this Manufacturer already exists...."
"\tPart Number for this Manufacturer already exists.\n"
@@ -7202,14 +7540,14 @@ msgid ""
"Do you want to update it?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:77
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:83
#, c-format
msgid ""
"MSG_PLAYBACK_LISTENTRY\tPlayback: Cannot find list entry: NAME\tPlayback: "
"Cannot find list entry: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:78
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:84
#, c-format
msgid ""
"MSG_PLAYBACK_VERSION_UPGRADE\tPlayback file version %ld is...\tPlayback file "
@@ -7218,25 +7556,29 @@ msgid ""
"You need to upgrade your version of %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:79
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:85
#, c-format
msgid ""
"MSG_DOMOUSE_BAD_OP\tPlayback: unknown action NNN\tPlayback: unknown action %d"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:80
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:86
msgid "MSG_MOVE_POINTS_AWAY_CLOSE\tPoints are to close to frog; move away."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:81
-msgid "MSG_POLY_SHAPES_3_SIDES\tPoly shapes must have at least 3 sides."
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:87
+msgid "MSG_POLY_SHAPES_3_SIDES\tPolygons must have at least 3 nodes."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:82
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:88
msgid "MSG_POLY_MULTIPLE_SELECTED\tCan't delete multiple points at once"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:83
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:89
+msgid "MSG_POLY_NOTHING_SELECTED\tNo Point on a Poly shape selected."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:90
msgid ""
"MSG_CARPROTO_DUPNAME\tPrototype name already exists....\tPrototype name "
"already exists.\n"
@@ -7244,21 +7586,21 @@ msgid ""
"Do you want to update it?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:84
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:91
msgid "MSG_RADIUS_GTR_0\tRadius must be greater than 0."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:85
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:92
msgid "MSG_RADIUS_GTR_10000\tRadius must be less than 10000."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:86
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:93
msgid ""
"MSG_RADIUS_TOO_BIG\tThe Circle or Helix will not fit within the layouts room "
"parameters (Height and Width)."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:87
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:94
#, c-format
msgid ""
"MSG_RESCALE_TOO_BIG\tRescaled tracks do not fit within layouts room "
@@ -7267,35 +7609,35 @@ msgid ""
"set to at least %s by %s."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:88
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:95
msgid ""
"MSG_CARIMP_MISSING_COLUMNS\tRequired column headers missing from Car Import "
"file."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:89
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:96
#, c-format
msgid ""
"MSG_2ND_TRK_NOT_SEL_UNSEL\tSecond track must be selected|unselected\tSecond "
"track must be %s."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:90
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:97
msgid "MSG_OUT_OF_BOUNDS\tSelected page is out of bounds."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:91
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:98
msgid "MSG_SEL_POS_FIRST\tSelect position prior to entering Text."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:92
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:99
msgid ""
"MSG_CARPROTO_BADSEGS\tSelected shapes must define a rectangular area ..."
"\tSelected shapes must define a rectangular\n"
"area with length greater than height."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:93
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:100
msgid ""
"MSG_TOO_FAR_APART_DIVERGE\tSelected tracks deviate too much or are too far "
"apart from each other."
@@ -7303,19 +7645,26 @@ msgstr ""
"Выбранные треки Ñлишком Ñильно отклонÑÑŽÑ‚ÑÑ Ð¸Ð»Ð¸ находÑÑ‚ÑÑ Ñлишком далеко друг "
"от друга."
-#: ../../../../build/work/app/help/messages.h:94
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:101
msgid "MSG_COMMAND_DISABLED\tSpecified command disabled."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:95
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:102
+#, c-format
+msgid ""
+"MSG_SEGMENT_NOT_ON_PATH\tTrack segment N not on Path for Turnout\tTrack "
+"segment %d not on any Path for %s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:103
msgid "MSG_SPLIT_POS_BTW_MERGEPTS\tSplit position between Turnout Points"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:96
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:104
msgid "MSG_SPLIT_PATH_NOT_UNIQUE\tSplit position not on unique path"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:97
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:105
#, c-format
msgid ""
"MSG_CARIMP_MISSING_DIMS\tThe following car has no dimensions and a...\tThe "
@@ -7327,7 +7676,7 @@ msgid ""
"Do you wish to continue importing other Cars?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:98
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:106
#, c-format
msgid ""
"MSG_CARIMP_MISSING_PARTNO\tThe following car has no Part Number...\tThe "
@@ -7338,7 +7687,7 @@ msgid ""
"Do you wish to continue importing other Cars?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:99
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:107
#, c-format
msgid ""
"MSG_CARIMP_IGNORED_COLUMN\tThe following column in the Car Import file will "
@@ -7348,13 +7697,13 @@ msgid ""
"%s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:100
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:108
msgid ""
"MSG_CANT_MOVE_UNDER_TRAIN\tThe position of a turnout or turntable cannot be "
"changed while occupied by a train."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:101
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:109
msgid ""
"MSG_STRUCT_NO_STRUCTS\tThere are no structures to choose from in the "
"structure...\tThere are no structures to choose from in the structure\n"
@@ -7363,7 +7712,7 @@ msgid ""
"create a new Structure with the Group command."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:102
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:110
msgid ""
"MSG_TURNOUT_NO_TURNOUT\tThere are no turnouts to choose from in the "
"turnout...\tThere are no turnouts to choose from in the turnout\n"
@@ -7373,63 +7722,76 @@ msgid ""
"Parameter File"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:103
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:111
msgid "MSG_NO_UNCONN_EP\tThere are no unconnected end points for this track"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:104
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:112
+#, c-format
+msgid ""
+"MSG_SPLITTED_OBJECT_TOO_SHORT\tThe resulting length of one track piece is "
+"shorter than the minimum length of %d."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:113
msgid "MSG_PULL_FEW_SECTIONS\tThere are too few sections in this loop."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:105
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:114
msgid "MSG_NO_REDO\tThere is nothing to redo!"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:106
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:115
msgid "MSG_NO_UNDO\tThere is nothing to undo!"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:107
-msgid "MSG_TOOMANYSEGSINGROUP\tToo many segments in Group."
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:116
+msgid "MSG_TOOMANYSEGSINGROUP\tToo many track segments in Group."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:117
+msgid ""
+"MSG_TOOMANYSEGSINGROUP2\tTrack segments appear too late in Group segment "
+"list."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:108
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:118
msgid "MSG_CANNOT_CHANGE\tTrack cannot be changed."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:109
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:119
msgid "MSG_POINT_INSIDE_TURNTABLE\tTrack endpoint is within turntable radius."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:110
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:120
msgid ""
"MSG_MOVE_POINTS_AWAY_NO_INTERSECTION\tTrack intersection not possible; move "
"points away from frog."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:111
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:121
#, c-format
msgid ""
"MSG_TRK_TOO_SHORT\tTrack is too short by N.NNN\t%strack is too short by %0.3f"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:112
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:122
#, c-format
msgid ""
"MSG_RADIUS_LSS_EASE_MIN\tTrack radius (N.NNN) is smaller than easement "
"minimum (N.NNN).\tTrack radius (%s) is smaller than easement minimum (%s)."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:113
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:123
msgid ""
"MSG_CANT_MODIFY_FROZEN_TRK\tTracks in a frozen layer cannot be modified."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:114
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:124
msgid "MSG_CANT_MODIFY_MODULE_TRK\tTracks in a module cannot be modified."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:115
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:125
msgid ""
"MSG_SEGMENTS_DIFFER\tTurnout definition contains non-track segments...."
"\tTurnout definition contains non-track segments.\n"
@@ -7437,11 +7799,11 @@ msgid ""
"Do you want to include them in this update?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:116
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:126
msgid "MSG_TURNTABLE_DIAM_GTR_0\tTurntable diameter must greater than 0."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:117
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:127
#, c-format
msgid ""
"MSG_UNDO_ASSERT\tUndo assertion failure %s:%d...\tUndo assertion failure %s:%"
@@ -7452,7 +7814,7 @@ msgid ""
"SourceForge."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:118
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:128
#, c-format
msgid ""
"MSG_PROG_CORRUPTED\tCritical file damaged!...\tCritical file damaged!\n"
@@ -7462,32 +7824,36 @@ msgid ""
"Please reinstall software."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:119
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:129
#, c-format
msgid ""
"MSG_ENTERED_STRING_TRUNCATED\tThe entered text is too long. Maximum length "
"is %d."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:120
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:130
#, c-format
msgid "MSG_PT_IS_NOT_TRK\t[X Y] is not a track\t[%s %s] is not a track."
msgstr "MSG_PT_IS_NOT_TRK\t[X Y] Ñто не трек\t[%s %s] Ñто не трек."
-#: ../../../../build/work/app/help/messages.h:121
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:131
msgid ""
-"MSG_BITMAP_SIZE_WARNING\tYou have specified a large Bitmap....\tYou have "
-"specified a large Bitmap.\n"
+"MSG_BITMAP_SIZE_WARNING\tYou have specified a large bitmap....\tYou have "
+"specified a large bitmap.\n"
"\n"
"Are you sure you want to continue?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:122
-#, c-format
-msgid "Are you sure you want to delete these %d car(s)?"
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:132
+msgid "Icon Size change will take effect on next program start."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:133
+#, fuzzy, c-format
+msgid "Are you sure you want to delete these %d car(s) from your inventory?"
msgstr "Ð’Ñ‹ уверены, что хотите удалить %d Ñтих машин?"
-#: ../../../../build/work/app/help/messages.h:123
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:134
#, c-format
msgid ""
"Cannot open %s file:\n"
@@ -7496,123 +7862,123 @@ msgstr ""
"Ðевозможно открыть файл %s:\n"
"%s:%s"
-#: ../../../../build/work/app/help/messages.h:124
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:135
#, fuzzy, c-format
msgid "Cannot create directory: %s - %s"
msgstr "Ðевозможно Ñоздать %s"
-#: ../../../../build/work/app/help/messages.h:125
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:136
#, fuzzy, c-format
msgid "Cannot open directory: %s"
msgstr ""
"Ðевозможно открыть файл %s:\n"
"%s:%s"
-#: ../../../../build/work/app/help/messages.h:126
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:137
#, c-format
msgid "Path for deletion is not a directory: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:127
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:138
#, c-format
msgid "Open failed for directory: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:128
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:139
#, c-format
msgid "Can't add directory record %s to zip - %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:129
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:140
#, c-format
msgid "Can't add file record %s to zip at %s - %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:130
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:141
#, fuzzy, c-format
msgid "Can't create zip %s - %s"
msgstr "Ðевозможно Ñоздать %s"
-#: ../../../../build/work/app/help/messages.h:131
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:142
#, c-format
msgid "Close failure for zip %s - %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:132
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:143
#, c-format
msgid "Rename failure for zip from %s to %s - %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:133
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:144
#, c-format
msgid "Open failure for zip %s - %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:134
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:145
#, c-format
msgid "Index failure for zip %s - %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:135
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:146
#, c-format
msgid "Open read file failure %s %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:136
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:147
#, c-format
msgid "Open file in zip failure %s %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:137
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:148
#, c-format
msgid "Unlink failed for: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:138
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:149
#, c-format
msgid "Remove Directory failed for: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:139
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:150
#, c-format
msgid "Cannot save archive to %s from directory: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:140
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:151
#, c-format
msgid "Cannot save manifest file to %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:141
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:152
#, fuzzy, c-format
msgid "Cannot open manifest file %s"
msgstr ""
"Ðевозможно открыть файл %s:\n"
"%s:%s"
-#: ../../../../build/work/app/help/messages.h:142
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:153
#, c-format
msgid "Cannot unpack file: %s for file: %s in directory: %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:143
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:154
#, fuzzy, c-format
msgid "Cannot open file %s"
msgstr ""
"Ðевозможно открыть файл %s:\n"
"%s:%s"
-#: ../../../../build/work/app/help/messages.h:144
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:155
#, c-format
msgid "Cannot copy file %s into directory %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:145
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:156
#, c-format
msgid "Unrecognized Option: %s"
msgstr "ÐераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ: %s"
-#: ../../../../build/work/app/help/messages.h:146
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:157
#, c-format
msgid ""
"End-Of-Line is unexpected in a quoted field.\n"
@@ -7621,7 +7987,7 @@ msgid ""
"Do you want to continue reading the file?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:147
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:158
#, c-format
msgid ""
"A comma was expected after this quoted field.\n"
@@ -7630,14 +7996,14 @@ msgid ""
"Do you want to continue reading the file?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:148
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:159
#, c-format
msgid ""
"Error \\\\\"%s\\\\\" occurred while writing %s.\n"
"Please check disk space and system status."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:149
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:160
#, c-format
msgid ""
"At least one path for the Turnout T%d does not\n"
@@ -7645,28 +8011,28 @@ msgid ""
"The track has been unselected."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:150
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:161
msgid "inv-pathEndTrk on Path."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:151
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:162
msgid "inv-pathStartTrk on Path"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:152
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:163
#, c-format
msgid "%s:%d- %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:153
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:164
msgid "pathEndTrk not on Path."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:154
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:165
msgid "pathStartTrk not on Path."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:155
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:166
msgid ""
"The tracks cannot be connected together.\n"
"\n"
@@ -7675,7 +8041,7 @@ msgid ""
"the Preferences dialog."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:156
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:167
msgid ""
"The tracks cannot be connected together.\n"
"\n"
@@ -7684,7 +8050,7 @@ msgid ""
"Angle values on the Preferences dialog"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:157
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:168
msgid ""
"The tracks cannot be connected together.\n"
"\n"
@@ -7692,27 +8058,27 @@ msgid ""
"or increase the Connection Distance"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:158
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:169
msgid ""
"The first track for the Align\n"
"Rotate command must be Selected."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:159
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:170
msgid ""
"The second track for the Align\n"
"Rotate command must be Unselected."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:160
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:171
msgid "Too many selected tracks, drawing tracks as End Point."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:161
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:172
msgid "Select an endpoint between two tracks."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:162
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:173
msgid ""
"According to values that have been entered the diverging\n"
"track does not connect with the tangent track. Please\n"
@@ -7721,29 +8087,29 @@ msgid ""
"by Angle Mode radio buttons."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:163
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:174
msgid "Moved before the end of the turnout"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:164
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:175
msgid ""
"The Coupled Length must be greater than the Car Length,\n"
"and the Coupler Length must be greater than 0."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:165
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:176
msgid ""
"The Car Length value must be greater\n"
"than the Car Width value."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:166
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:177
msgid ""
"The specified Index is already in use.\n"
"The Index will be updated to the next available value."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:167
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:178
msgid ""
"You have changed values for this object.\n"
"\n"
@@ -7753,7 +8119,7 @@ msgstr ""
"\n"
"Вы уверены, что хотите закрыть?"
-#: ../../../../build/work/app/help/messages.h:168
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:179
#, c-format
msgid ""
"File version %ld is lower than the minimum\n"
@@ -7761,7 +8127,7 @@ msgid ""
"layout file using an older version of %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:169
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:180
#, c-format
msgid ""
"File version %ld is lower than the minimum\n"
@@ -7769,30 +8135,30 @@ msgid ""
"version of %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:170
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:181
#, c-format
msgid ""
"%s cannot read the demo file:\n"
"%s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:171
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:182
#, c-format
msgid "doDemo: bad number (%d)"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:172
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:183
msgid "Playback TIMEEND without TIMESTART"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:173
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:184
#, c-format
msgid ""
"Unknown playback command (%d)\n"
"%s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:174
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:185
#, c-format
msgid ""
"Playback file version %ld is lower than the\n"
@@ -7801,2163 +8167,96 @@ msgid ""
"older version of %s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:175
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:186
#, c-format
-msgid "Scale index (%d) is not valid"
+msgid ""
+"MSG_BAD_SCALE_INDEX\tScale index (NNN) is not valid. Do you want use the "
+"current layout scale (SCALE)? Or create an \"Unknown\" scale? See 'Help|"
+"Recent Messages' for details.\tScale index (%d) is not valid.\n"
+"Do you want use the current layout scale (%s)?\n"
+"Or create an \"Unknown\" scale?\n"
+"See 'Help|Recent Messages' for details."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:176
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:187
#, c-format
msgid ""
-"Scale %s is not valid\n"
-"Please check your %s.xtq file"
+"MSG_BAD_SCALE_NAME\tScale \"SCALE1\" is not valid. We will substitute a "
+"dummy scale based on \"SCALE2\". See 'Help|Recent Messages' for details."
+"\tScale \"%s\" is not valid. We will substitute a dummy scale based on \"%s"
+"\".\n"
+"See 'Help|Recent Messages' for details."
msgstr ""
-#: ../../../../build/work/app/help/messages.h:177
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:188
msgid "Cannot extend a helix"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:178
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:189
msgid "Cannot trim a helix"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:179
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:190
msgid "Ignore further audit notices?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:180
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:191
#, c-format
msgid "%s"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:181
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:192
msgid "Audit Abort?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:182
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:193
msgid "Write Audit File?"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:183
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:194
#, c-format
msgid "checkTrackLength: Short track length = %0.3f"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:184
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:195
#, c-format
msgid "checkTrackLength: unknown type: %d"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:185
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:196
#, c-format
msgid "connectTracks: T%d[%d] T%d[%d] d=%0.3f a=%0.3f"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:186
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:197
#, c-format
msgid "GetAngleAtPoint: bad type(%d) for T(%d)"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:187
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:198
#, c-format
msgid "joinTracks: invalid track type=%d"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:188
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:199
#, c-format
msgid "resolveIndex: T%d[%d]: T%d doesn\\\\'t exist"
msgstr ""
-#: ../../../../build/work/app/help/messages.h:189
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:200
msgid "Moved beyond the end of the track"
msgstr ""
-#: ../../../../build/work/app/bin/bllnhlp.c:9
-#, fuzzy
-msgid "Invokes online help for this dialog"
-msgstr "Вызывает online помощь по Ñтому окну"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:10
-msgid "Cancels this command"
-msgstr "Отменить Ñту команду"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:11
-msgid "Closes the dialog"
-msgstr "Закрыть окно"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:12
-#, fuzzy
-msgid "About program dialog"
-msgstr "О программе"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:13
-#, fuzzy
-msgid "Move selected object to top"
-msgstr "ПеремеÑтить выбранные объекты наверх"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:14
-#, fuzzy
-msgid "Raise or lower all selected tracks"
-msgstr "ПоднÑÑ‚ÑŒ или опуÑтить вÑе выбранные треки"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:15
-#, fuzzy
-msgid "Show a protractor"
-msgstr "Добавить линейку"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:16
-msgid "Turn magnetic snap on or off"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:18
-#, fuzzy
-msgid "Move selected object to bottom"
-msgstr "ПеремеÑтить выбранные объекты вниз"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:19
-msgid "Create a section of track for automation"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:20
-#, fuzzy
-msgid "Edit a block definition "
-msgstr "Редактировать блок %d"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:21
-msgid "Create a new Car/Loco description"
-msgstr "Создать новое опиÑание машины"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:22
-msgid "Manage your Car and Loco Inventory"
-msgstr "УправлÑÑ‚ÑŒ вашими машинами"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:23
-msgid "Create track circle from center"
-msgstr "Добавить круговой трек от центра"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:24
-msgid "Create fixed radius track circle"
-msgstr "Добавить круговой трек по радиуÑу"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:25
-msgid "Set Circle Track creation mode"
-msgstr "Выбрать тип круговых треков"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:26
-msgid "Create track circle from tangent"
-msgstr "Добавить круговой трек по каÑательной"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:27
-msgid "Removes elevation from Selected tracks"
-msgstr "Убрать выÑоту у выбранных треков"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:28
-msgid "Copy objects to clipboard and duplicate them in exactly the same place"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:29
-msgid "Command Options dialog"
-msgstr "Окно команд"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:30
-msgid "Controls colors"
-msgstr "Цвета Ñлементов управлениÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:31
-msgid "Connect two tracks"
-msgstr "Соединить два трека"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:32
-msgid "Create a control for layout automation"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:33
-#, fuzzy
-msgid "Select control element to create"
-msgstr "Выберите второй конец Ð´Ð»Ñ ÑоединениÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:34
-msgid "Manage control elements"
-msgstr "Изменить Ñлементы управлениÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:35
-#, fuzzy
-msgid "Set Convert mode"
-msgstr "Выбрать тип изогнутых треков"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:36
-msgid "Convert from Fixed Track to Cornu"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:37
-msgid "Convert from Cornu and Bezier to Fixed Track"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:38
-msgid "Copy selected objects to clipboard"
-msgstr "Скопировать выбранные объекты в буфер обмена"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:39
-#, fuzzy
-msgid "Create Cornu track"
-msgstr "Добавить изогнутый трек"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:40
-msgid "Create curved track from center"
-msgstr "Добавить изогнутый трек от центра"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:41
-msgid "Create curved track from chord"
-msgstr "Добавить изогнутый трек по хорде"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:42
-msgid "Create curved track from end-point"
-msgstr "Добавить изогнутый трек от конечной точки"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:43
-msgid "Create Bezier track"
-msgstr "Добавить трек Безье"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:44
-msgid "Set Curve Track creation mode"
-msgstr "Выбрать тип изогнутых треков"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:45
-msgid "Create curved track from tangent"
-msgstr "Добавить изогнутый трек по каÑательной"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:46
-msgid "Manipulate Custom designer entries"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:47
-msgid "Moves selected objects to clipboard"
-msgstr "ПеремеÑтить выбранные треки в буфер обмена"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:48
-msgid "Delete objects"
-msgstr "Удалить объекты"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:49
-msgid "Playback demos"
-msgstr "ВоÑпроизведение демонÑтраций"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:50
-msgid "Change Object Properties"
-msgstr "Изменить ÑвойÑтва объекта"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:51
-#, fuzzy
-msgid "Change to properties mode"
-msgstr "Изменить ÑвойÑтва объекта"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:52
-msgid "Deselect all selected objects"
-msgstr "Убрать выделение Ñо вÑех объектов"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:53
-msgid "Change Display parameters"
-msgstr "Изменить параметры отображениÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:54
-msgid "Create benchwork"
-msgstr "Создать доÑку"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:55
-msgid "Create a box"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:56
-msgid "Set Circle drawing command"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:57
-msgid "Create a circle"
-msgstr "Добавить окружноÑÑ‚ÑŒ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:58
-msgid "Draw a circle line from center"
-msgstr "ÐариÑовать окружноÑÑ‚ÑŒ к центру"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:59
-msgid "Draw a fixed radius circle line"
-msgstr "ÐариÑовать фикÑированный Ñ€Ð°Ð´Ð¸ÑƒÑ Ð¾ÐºÑ€ÑƒÐ¶Ð½Ð¾Ñти"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:60
-msgid "Draw a circle line from tangent"
-msgstr "ÐариÑовать окружноÑÑ‚ÑŒ к краю"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:61
-msgid "Set Curve drawing command"
-msgstr "УÑтановить команду риÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐšÑ€Ð¸Ð²Ð¾Ð¹"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:62
-msgid "Create a curved line"
-msgstr "Создать кривую линию"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:63
-msgid "Create a curved line from End"
-msgstr "Создать кривую линию от каÑательной"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:64
-msgid "Create a curved line from center"
-msgstr "Создать кривую линию от центра"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:65
-msgid "Create a curved line from chord"
-msgstr "Создать кривую линию по хорде"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:66
-msgid "Create a curved line from tangent"
-msgstr "Создать кривую линию от краÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:67
-msgid "Create a Bezier line"
-msgstr "Создать кривую Безье"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:68
-msgid "Create a dimension line"
-msgstr "Создать выноÑку Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:69
-msgid "Create a filled box"
-msgstr "Создать закрашенный прÑмоугольник"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:70
-msgid "Create a filled circle"
-msgstr "Создать закрашенный круг"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:71
-msgid "Draw a filled circle from center"
-msgstr "ÐариÑовать закрашенный круг к центру"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:72
-msgid "Draw a fixed radius filled circle"
-msgstr "ÐариÑовать закрашенный круг Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼ радиуÑом"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:73
-msgid "Draw a filled circle from tangent"
-msgstr "ÐариÑовать закрашенный круг к краю"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:74
-#, fuzzy
-msgid "Create a polygon"
-msgstr "Создать полилинию"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:75
-msgid "Create a filled polygon"
-msgstr "Создать закрашенный многоугольник"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:76
-msgid "Create a polyline"
-msgstr "Создать полилинию"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:77
-msgid "Create a straight line"
-msgstr "Создать прÑмую линию"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:78
-msgid "Set Line drawing command"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:79
-msgid "Set Shape drawing command"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:80
-msgid "Draw table edge"
-msgstr "РиÑовать край Ñтола"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:81
-msgid "Easement menu"
-msgstr "Меню упрощений"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:83
-msgid "Generate a Parts List of selected objects"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:84
-msgid "Set Import/Export mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:85
-msgid "Export a .xti file"
-msgstr "ЭкÑпортировать в .xti файл"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:86
-msgid "Export a DXF file"
-msgstr "ЭкÑпортировать в DXF файл"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:88
-msgid "Flip selected objects"
-msgstr "Развернуть выбранные объекты"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:89
-msgid "Adjust snap grid"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:90
-msgid "Enable snap grid"
-msgstr "Прилипать к Ñетке"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:91
-msgid "Show snap grid"
-msgstr "Показать Ñетку"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:92
-msgid "Create a structure from a Group of objects"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:93
-msgid "Create a hand-laid turnout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:94
-msgid "Create a track helix"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:95
-msgid "Import a .xti file"
-msgstr "Ипортировать .xti файл"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:96
-#, fuzzy
-msgid "Import an .xti file as a Module"
-msgstr "Ипортировать .xti файл"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:97
-msgid "Join two tracks"
-msgstr "Соединить два трека"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:98
-msgid "Join two lines or polylines"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:99
-msgid "Set Join mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:100
-msgid "Change Layers"
-msgstr "Изменить Ñлои"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:101
-msgid "Selects the current drawing layer"
-msgstr "Выбрать текущий Ñлой"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:102
-msgid "Layout parameters"
-msgstr "Параметры проекта"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:104
-msgid "Show/Hide Map Window"
-msgstr "Показать/СпрÑтать окно миникарты"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:105
-#, fuzzy
-msgid "Select Measurement Tool"
-msgstr "Сохранить текущий Ñлой"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:106
-msgid "Modify or extend a track"
-msgstr "Изменить или раÑширить трек"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:107
-msgid "Change To modify mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:108
-msgid "Move selected objects"
-msgstr "Двигать выбранные объекты"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:109
-msgid "Move a label"
-msgstr "ПеремеÑтить подпиÑÑŒ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:110
-msgid "Move selected objects to current layer"
-msgstr "ПеремеÑтить выбранные объекты на текущий Ñлой"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:112
-#, fuzzy
-msgid "Print a bitmap"
-msgstr "Печать изображениÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:113
-#, fuzzy
-msgid "Pan or zoom the layout"
-msgstr "Перемещение или маÑштабирование"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:114
-msgid "Change to zoom/pan mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:115
-msgid "Create a parallel track"
-msgstr "Добавить параллельный трек"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:116
-#, fuzzy
-msgid "Create a parallel line"
-msgstr "Добавить параллельный трек"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:117
-#, fuzzy
-msgid "Set Parallel mode"
-msgstr "Параллель"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:118
-msgid "Register"
-msgstr "РегиÑтрациÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:119
-msgid "Copy objects from clipboard"
-msgstr "Скопировать объекты из буфера обмена"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:120
-msgid "Perferences dialog"
-msgstr "Окно ÑвойÑтв"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:121
-msgid "Display prices of turnouts, sectional tracks and structures"
-msgstr "Показать цены Ñтрелок, ÑоÑтавных треков и Ñтруктур"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:122
-msgid "Print the layout"
-msgstr "Ðапечатать Ñлой"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:123
-#, fuzzy
-msgid "Loads and unloads parameter files into/from toolbar"
-msgstr "Загрузить или выгрузить файлы параметров"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:124
-msgid "Elevation Profile Command"
-msgstr "Команды Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ð²Ñ‹Ñоты"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:126
-msgid "Command recorder"
-msgstr "ЗапиÑÑŒ команд"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:128
-msgid "Update selected Turnout and Structure definitions"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:129
-msgid "Rescale selected objects"
-msgstr "Изменить маÑштаб выбранных объектов"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:130
-msgid "Rotate selected object(s)"
-msgstr "Повернуть выбранные объекты"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:131
-msgid "Show a ruler"
-msgstr "Добавить линейку"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:132
-msgid "Select objects"
-msgstr "Выбрать объекты"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:133
-#, fuzzy
-msgid "Change To Select Mode"
-msgstr "Изменить маÑштаб"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:134
-msgid "Selects all objects on the layout"
-msgstr "Выбрать вÑе объекты на Ñтом Ñлое"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:135
-msgid "Selects all objects in the current Layer"
-msgstr "Выбрать вÑе объекты на текущем Ñлое"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:136
-msgid "Invert current selection"
-msgstr "Инвертировать выделение"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:137
-msgid "Set Split mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:138
-msgid "Split a track"
-msgstr "Разделить трек"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:139
-msgid "Split an open ended Draw Object (or circle)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:140
-msgid "Select stranded (unconnected) track pieces"
-msgstr "Выбрать проблемные (неÑоединённые) чаÑти треков"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:141
-msgid "Create a sensor (ie. a occupancy detector or a toggle switch)"
-msgstr "Создать ÑенÑор (Ñ‚.е. детектор Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ переключатель)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:142
-msgid "Create a signal for train control"
-msgstr "Добавить Ñигнал Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ÐµÐ·Ð´Ð¾Ð¼"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:143
-msgid "Choose which commands are sticky"
-msgstr "Выберите какие команды будут прилипать"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:144
-msgid "Create straight track"
-msgstr "Добавить прÑмой трек"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:145
-msgid "Place a structure on the layout"
-msgstr "РазмеÑтить Ñтруктуру на Ñлое"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:146
-msgid "Create a switchmotor for turnout control"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:147
-msgid "Edit a switchmotor definition"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:148
-msgid "Enter text on the layout"
-msgstr "ÐапиÑать текÑÑ‚ на рабочую облаÑÑ‚ÑŒ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:149
-#: ../../../../build/work/app/bin/bllnhlp.c:536
-msgid "Controls the size of the entered text"
-msgstr "УÑтанавливает размер вводимого текÑта"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:150
-msgid "Plain Text"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:151
-msgid "Tip of the Day window"
-msgstr "Совет днÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:152
-msgid "Run Trains"
-msgstr "ЗапуÑтить поезда"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:153
-msgid "Change To Run Trains Mode"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:154
-msgid "Pause/Resume Trains"
-msgstr "ОÑтановить/ЗапуÑтить поезда"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:155
-msgid "Place a car on the layout"
-msgstr "Добавить машину на Ñлой"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:156
-msgid "Exit Trains"
-msgstr "Выйти из поездов"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:157
-msgid "Hide/Unhide a track"
-msgstr "СпрÑтать/Показать треки"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:158
-msgid "Make/Unmake a track a bridge"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:159
-msgid "Place a turnout or sectional track"
-msgstr "РазмеÑтить Ñтрелку или ÑоÑтавной трек"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:160
-msgid "Create a new turnout definition"
-msgstr "Создать новую Ñтрелку"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:161
-msgid "Place a turntable"
-msgstr "УÑтановить разворотный рельÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:162
-msgid "Updates old source files with 3 part titles"
-msgstr "Обновить Ñтарые файлы Ñ‚Ñ€ÐµÐ¼Ñ Ð½Ð¾Ð²Ñ‹Ð¼Ð¸ заголовками"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:164
-msgid "Ungroup objects"
-msgstr "Разгруппировать объекты"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:165
-msgid "Draw tracks with thin lines"
-msgstr "РиÑовать треки тонкими линиÑми"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:166
-msgid "Draw tracks with medium lines"
-msgstr "РиÑовать треки Ñредними линиÑми"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:167
-msgid "Draw tracks with thick lines"
-msgstr "РиÑовать треки толÑтыми линиÑми"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:168
-msgid "Change drawing scale"
-msgstr "Изменить маÑштаб риÑованиÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:169
-#: ../../../../build/work/app/bin/bllnhlp.c:181
-msgid "Zoom in"
-msgstr "Приблизить"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:170
-#: ../../../../build/work/app/bin/bllnhlp.c:182
-msgid "Zoom out"
-msgstr "Отдалить"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:171
-msgid "File Menu"
-msgstr "Файл"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:172
-msgid "Save layout"
-msgstr "Сохранить проект"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:173
-msgid "Save layout under a new name "
-msgstr "Сохранить проект под другим именем "
-
-#: ../../../../build/work/app/bin/bllnhlp.c:174
-msgid "New layout"
-msgstr "Ðовый проект"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:175
-msgid "Generate parts list"
-msgstr "Создать ÑпиÑок компонентов"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:176
-msgid "Load a layout"
-msgstr "Загрузить проект"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:177
-msgid "Exit the program"
-msgstr "Выйти из программы"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:178
-msgid "Revert to last saved state of layout plan"
-msgstr "СброÑить вÑÑ‘ до поÑледнего Ñохранённого ÑоÑтоÑниÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:179
-msgid "Edit menu"
-msgstr "Правка"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:180
-msgid "Redraw layout"
-msgstr "ПерериÑовать Ñлой"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:183
-#: ../../../../build/work/app/bin/bllnhlp.c:186
-msgid "Tools menu"
-msgstr "Меню ИнÑтрументы"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:184
-msgid "View menu"
-msgstr "Меню Вид"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:185
-msgid "Toolbar configuration"
-msgstr "ÐаÑтройки тулбара"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:187
-msgid "Options menu"
-msgstr "Меню Опций"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:188
-msgid "Playback/Record commands"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:189
-msgid "Window menu"
-msgstr "Меню Окна"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:190
-msgid "Help menu"
-msgstr "Меню Помощь"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:191
-msgid "Recent error messages and explanations"
-msgstr "ПоÑледние ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках и объÑÑнениÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:192
-msgid "Move Hot Bar left"
-msgstr "ПеремеÑтить панель подÑказок влево"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:193
-msgid "Move Hot Bar right"
-msgstr "ПеремеÑтить панель подÑказок вправо"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:194
-msgid "Total track count"
-msgstr "Общее кол-во треков"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:195
-msgid "X Position of cursor"
-msgstr "X координата курÑора"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:196
-msgid "Y Position of cursor"
-msgstr "Y координата курÑора"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:197
-msgid "Drawing scale"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:198
-msgid "Message and status line"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:199
-#: ../../../../build/work/app/bin/bllnhlp.c:200
-msgid "Main layout canvas"
-msgstr "Главный Ñлой"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:201
-msgid "Main drawing canvas"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:202
-msgid "Command buttons"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:203
-msgid "Menus"
-msgstr "Меню"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:204
-msgid "Tile, Filename and Window Manager buttons"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:205
-msgid "Turnout and Structure Hot Bar"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:206
-msgid "Active layer list and layer buttons"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:207
-msgid "Map window"
-msgstr "Окно миникарты"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:208
-msgid "This is the portion of the layout shown in the Main Window canvas"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:209
-msgid "Raise or Lower all Selected Track"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:210
-msgid "Name of block"
-msgstr "Ð˜Ð¼Ñ Ð±Ð»Ð¾ÐºÐ°"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:211
-msgid "Script that the block will run"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:212
-msgid "List of tracks in the Block"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:213
-msgid "Add or Update car object"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:214
-msgid "Manufacturer name"
-msgstr "Ðазвание производителÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:217
-msgid "Is the Car a Locomotive?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:218
-msgid "Part Number and Description"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:219
-msgid "Manufacturer Part Number"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:220
-msgid "Use the Selected figure as the car image"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:221
-msgid "Use the default figure as the car image"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:222
-msgid "Optional description of the Car Part"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:223
-msgid "Flip car image"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:224
-msgid "Display Car Item information or reporting marks and dimensions"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:225
-msgid "Full Roadname"
-msgstr "Полное Ð¸Ð¼Ñ Ð¿ÑƒÑ‚Ð¸"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:226
-#: ../../../../build/work/app/bin/bllnhlp.c:227
-msgid "Car Type"
-msgstr "Тип вагона"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:228
-msgid "Reporting Marks (Roadname abbreviation)"
-msgstr "Метки отчёта (аббревиатура пути)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:229
-#: ../../../../build/work/app/bin/bllnhlp.c:416
-msgid "Car Number"
-msgstr "Ðомер вагона"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:230
-msgid "Car body Color"
-msgstr "Цвет вагона"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:231
-msgid "Length of car body"
-msgstr "Длина вагона"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:232
-msgid "Width of car body"
-msgstr "Ширина вагона"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:233
-msgid "Distance between Trucks "
-msgstr "РаÑÑтоÑние между колёÑами "
-
-#: ../../../../build/work/app/bin/bllnhlp.c:234
-msgid "Distance Trucks are displaced along Car"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:235
-msgid "Coupler are mounted on body or truck"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:236
-msgid "Overall Coupled Length"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:237
-msgid "Coupler Length from end of car"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:238
-msgid "Diagram of Car"
-msgstr "Схема вагона"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:239
-msgid "Item Index Number"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:240
-msgid "Original Purchase Price"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:242
-msgid "Condition of car"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:243
-msgid "Original Purchase Date"
-msgstr "Дата покупки"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:244
-msgid "Last Service Date"
-msgstr "Дата поÑледнего обÑлуживаниÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:245
-msgid "Number of identical cars to be entered"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:246
-msgid "Do all the cars have the same Number?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:247
-msgid "Notes about the car"
-msgstr "Заметки об Ñтом вагоне"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:248
-#: ../../../../build/work/app/bin/bllnhlp.c:249
-msgid "Create a new car Part or Prototype definitions"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:250
-msgid "Finds the selected Car Item on the layout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:251
-#: ../../../../build/work/app/bin/bllnhlp.c:252
-#: ../../../../build/work/app/bin/bllnhlp.c:253
-#: ../../../../build/work/app/bin/bllnhlp.c:254
-msgid "Sort the Item list"
-msgstr "Сортировать ÑпиÑок"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:256
-msgid "Edit the selected Car Item"
-msgstr "Изменить выбранные машины"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:257
-msgid "Add a new Car Item"
-msgstr "Добавить новую машину"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:258
-msgid "Delete the selected Car Items"
-msgstr "Удалить выбранные машины"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:259
-msgid "Import a Car Item .csv file"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:260
-msgid "Export a Car Item .csv file"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:261
-msgid "Create a text list of the Car Items"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:262
-msgid "Specifies the radius of the circle track"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:263
-msgid "Default command is Describe or Select"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:264
-msgid "Action to invoke on Right-Click"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:265
-msgid ""
-"Replace current selection with clicked object or add clicked object to "
-"selection"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:266
-msgid "Clicking into an empty area clears selection if select mode is <add>"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:268
-msgid "The list of control elements"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:269
-msgid "Edit the element"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:270
-msgid "Delete the element"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:271
-msgid "Contents Label for new Parameter file"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:272
-msgid "List of custom designed turnouts and structures"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:273
-msgid "Invoke designer editor"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:274
-msgid "Remove selected entries"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:275
-msgid "Copy selected entries to Parameter File"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:276
-msgid "Create a New part or prototype"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:277
-msgid "Update custom file and close"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:278
-msgid "Executes the next step of the demo"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:279
-msgid "Skip to next demo"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:280
-msgid "Stops the demonstration and returns you to XTrackCAD"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:281
-msgid "Select speed of Playback"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:282
-msgid "This is where comments about the demo are displayed"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:319
-msgid "Move the Main canvas if you drag near the edge"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:320
-msgid "Color tracks by layer or individually"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:321
-#, fuzzy
-msgid "Color draw objects by layer or individually"
-msgstr "Выделение цветом треков или других объектов на Ñлое"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:322
-msgid "Controls the drawing of hidden tracks"
-msgstr "Отображение Ñкрытых треков"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:323
-msgid "Controls the drawing of End-Points"
-msgstr "Отображение конечных точек"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:324
-msgid "How to draw track ties"
-msgstr "Как риÑовать шпалы"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:325
-msgid "Show crosshair at center of curves"
-msgstr "Показывать перекреÑтие в центрах кривых"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:326
-msgid "Drawing scale when to draw tracks with 2 rails"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:327
-msgid "Drawing scale of the map window"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:328
-msgid "Whether the main layout is updated while dragging on the Map"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:329
-msgid "Enable labels for Turnouts, Flextrack Lengths and Elevations"
-msgstr "Отображать надпиÑи Ð´Ð»Ñ Ñтрелок, гибких треков и подъемов"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:330
-msgid "When to label Turnout, Flextrack Lengths and Elevations"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:331
-msgid "Font size for labels on layout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:332
-msgid "Label elements on the Hot Bar"
-msgstr "ПодпиÑи Ñлементов в панели быÑтрых команд"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:333
-msgid "Label elements on layout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:334
-msgid "Label elements for lists"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:335
-msgid "How to group cars on the Train Hot Bar"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:336
-msgid "Delay (in mS) between updating train movements"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:337
-msgid "Don't show trains in tunnels when tunnels are hidden"
-msgstr "Ðе показывать поезда в тоннелÑÑ…, когда они Ñкрыты"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:338
-msgid "Display unconnected endpoints of track with special marks"
-msgstr "Отображение неÑоединённых концов трека в виде Ñпециальных значков"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:339
-msgid "Whether the Main Drawing Area shows as much of the room as possible"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:341
-msgid "Width of the lines"
-msgstr "Ширина Ñтой линий"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:342
-msgid "Color of the lines"
-msgstr "Цвет Ñтой линий"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:343
-msgid "List of types of Lumber"
-msgstr "СпиÑок типов древеÑины"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:344
-msgid "Color of Benchwork"
-msgstr "Цвет доÑки"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:345
-msgid "Orientation of Benchwork"
-msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð´Ð¾Ñки"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:346
-msgid "Size of Dimension Arrows"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:347
-msgid "This controls the sharpness of the easement curve"
-msgstr "Это значение контролирует оÑтроту упрощённой кривой"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:348
-msgid "Minimum radius"
-msgstr "Минимальный радиуÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:349
-msgid "Maximum offset"
-msgstr "МакÑимальное Ñмещение"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:350
-msgid "Easement length"
-msgstr "Длина упрощениÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:351
-msgid ""
-"These radio buttons are a short-cut for Values of 0.0, 0.5, 1.0 and 2.0. "
-"None turns Easements off"
-msgstr ""
-"Эти радиокнопки подÑтавлÑÑŽÑ‚ шаблоны Ð´Ð»Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ 0.0, 0.5, 1.0 и 2.0. Ðет - "
-"выключает упрощениÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:352
-msgid "Complete easement selection"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:353
-msgid "Type of elevation"
-msgstr "Тип выÑоты"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:354
-msgid "Height of End Point"
-msgstr "Ð’Ñ‹Ñота конечной точки"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:355
-msgid "Compute elevation based on neighbors"
-msgstr "ВычиÑлить выÑоту по ÑоÑедÑм"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:356
-msgid "Compute grade based on neighbors"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:357
-msgid "Specify a name for an End-Point"
-msgstr "Укажите Ð¸Ð¼Ñ ÐºÐ¾Ð½ÐµÑ‡Ð½Ð¾Ð¹ точки"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:359
-msgid "Print parts list"
-msgstr "Печатать ÑпиÑок чаÑтей"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:360
-#: ../../../../build/work/app/bin/bllnhlp.c:471
-#: ../../../../build/work/app/bin/bllnhlp.c:580
-msgid "Invoke the Print Setup dialog"
-msgstr "Открыть диалог наÑтроек печати"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:361
-msgid "Save parts list to file"
-msgstr "Сохранить ÑпиÑок компонентов в файл"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:362
-msgid "This is the list of parts for the layout"
-msgstr "Это ÑпиÑок компонентов Ð´Ð»Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:363
-msgid "Enable prices on the Parts List"
-msgstr "Добавить цены в ÑпиÑке компонентов"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:364
-#: ../../../../build/work/app/bin/bllnhlp.c:367
-msgid "Spacing between major grid lines"
-msgstr "РаÑÑтоÑние между главными линиÑми Ñетки"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:365
-#: ../../../../build/work/app/bin/bllnhlp.c:368
-msgid "Allows the spacing to be subdivided"
-msgstr "Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ€Ð°Ð·Ð±Ð¸Ð²ÐºÐ° Ñетки"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:366
-#: ../../../../build/work/app/bin/bllnhlp.c:369
-msgid "Specifies if positions are snaped in this direction"
-msgstr "Включите, чтобы курÑор прилипал к Ñетке"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:370
-#: ../../../../build/work/app/bin/bllnhlp.c:371
-#: ../../../../build/work/app/bin/bllnhlp.c:372
-msgid "Shows the origin and angle of the grid"
-msgstr "ОтÑтупы и угол поворота Ñетки"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:373
-msgid "Specifies if the grid is shown"
-msgstr "Включите, чтобы отображать Ñетку"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:374
-msgid "Completes the grid specification"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:378
-msgid "Number of segments in Group"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:379
-msgid "Replace the Selected object with the new definition?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:380
-msgid "Creates a new Structure (or Turnout)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:381
-msgid "Elevation difference of Helix End-Points"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:382
-msgid "Helix Radius"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:383
-msgid "Number of turns in the helix"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:384
-msgid "Angle betweek helix entrance and exit"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:385
-msgid "Grade in helix"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:386
-msgid "Separation between helix layers"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:387
-#, fuzzy
-msgid "Desired curve radius between straight tracks"
-msgstr "Добавить прÑмой трек"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:388
-msgid "Layer list"
-msgstr "СпиÑок Ñлоёв"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:389
-msgid "Layer Name"
-msgstr "Ðазвание ÑлоÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:390
-msgid "Color of layer"
-msgstr "Цвет ÑлоÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:391
-msgid "Layer is drawn on Main window"
-msgstr "Слой отриÑовываетÑÑ Ð² главном окне"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:392
-msgid "Layer cannot be changed"
-msgstr "Слой не может быть изменён"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:393
-msgid "Layer is drawn on Map window"
-msgstr "Слой отриÑовываетÑÑ Ð½Ð° миникарте"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:394
-msgid "Number of layer buttons to show"
-msgstr "Кол-во кнопок Ñлоёв в меню"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:395
-msgid "Number of objects in this layer"
-msgstr "Кол-во объектов в Ñтом Ñлое"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:397
-msgid "Load layer configuration from default"
-msgstr "Загрузить наÑтройки ÑÐ»Ð¾Ñ Ð¸Ð· оÑновных"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:398
-msgid "Save current layer configuration as default"
-msgstr "Сохранить текущие наÑтройки ÑÐ»Ð¾Ñ ÐºÐ°Ðº оÑновные"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:399
-msgid "Overwrite layer configuration with system default values"
-msgstr "ПерезапиÑать наÑтроки ÑÐ»Ð¾Ñ ÑиÑтемными значениÑми по-умолчанию"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:400
-#: ../../../../build/work/app/bin/bllnhlp.c:401
-msgid "Specifies the size of the room (in inches or centimeters)"
-msgstr "ОпределÑет размер комнаты (в дюймах или Ñантиметрах)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:402
-msgid "Specifies the layout Title that will appear on printouts"
-msgstr "ОпределÑет заголовок ÑлоÑ, который будет виден при печати"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:403
-msgid "Specifies the layout Subtitle that will appear on printouts"
-msgstr "ОпределÑет подзаголовок ÑлоÑ, который будет виден при печати"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:404
-msgid "Specifies the Modelling Scale"
-msgstr "ОпределÑет маÑштаб модели"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:405
-msgid "Specifies the rail gauge, ie. the distance between the rails"
-msgstr "ОпределÑет ширину колеи, Ñ‚.е. раÑÑтоÑние между рельÑами"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:406
-msgid ""
-"Specifies minimum track radius (in inches or centimeters). Tracks with a "
-"smaller radius are considered exceptional."
-msgstr ""
-"ОпределÑет минимальную кривизну трека(в дюймах или Ñантиметрах). Треки Ñ "
-"меньшим радиуÑом иÑключаютÑÑ."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:407
-msgid ""
-"Specifies maximum track elevation expressed as a percent (%). Tracks with a "
-"larger elevation are considered exceptional."
-msgstr ""
-"ОпределÑет макÑимальный подъем трека в процентах (%). Треки Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ "
-"подъемом иÑключаютÑÑ."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:408
-#, fuzzy
-msgid "Select the background image"
-msgstr "Выбрать текущий Ñлой"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:409
-msgid "Remove the background image"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:410
-#, fuzzy
-msgid "Specifies the x offset of the bottom left of the background image"
-msgstr "ОпределÑет размер комнаты (в дюймах или Ñантиметрах)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:411
-#, fuzzy
-msgid "Specifies the y offset of the bottom left of the background image"
-msgstr "ОпределÑет размер комнаты (в дюймах или Ñантиметрах)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:412
-msgid ""
-"Specifies how large the bottom edge of the background image should be in "
-"model units"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:413
-msgid ""
-"Specifies the screening of the background image from 0 (none) to 100% "
-"(vanishes)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:414
-#, fuzzy
-msgid "Specifies the rotation angle of the background image in degrees"
-msgstr "ОпределÑет ширину колеи, Ñ‚.е. раÑÑтоÑние между рельÑами"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:417
-msgid ""
-"This is the body of the Note. To change this select Modify from the File "
-"Menu"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:419
-msgid "Specifies number of pixels per inch (or centimeter)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:421
-msgid ""
-"Specifies whether Layout Titles, Borders or Track Centerlines are printed on "
-"the BitMap"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:422
-msgid ""
-"Specifies the separation between the original track and the parallel track/"
-"line"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:423
-msgid ""
-"Specifies the a factor that increases the seperation as the radius of the "
-"original track reduces. 0.0 means no increase."
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:424
-msgid "Enter your name as specified in the XTrackCAD Registration Notice"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:425
-msgid "Enter the key value as specified in the XTrackCAD Registration Notice"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:426
-msgid "Validates the name and key. Terminates the registration command"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:427
-msgid "0ᅵ is up or to the right"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:428
-msgid "Choose english (inches) or metric (centimeters)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:429
-msgid "How to display length measurements"
-msgstr "Как отображать единицы измерениÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:430
-msgid "Do not create tracks to be shorter than this value"
-msgstr "Ðе Ñоздавать треки короче Ñтого значениÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:431
-msgid "Maximum distance between connected end points"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:432
-msgid "Minimum angle between connected End-Points"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:433
-msgid "Specifies the minimum angle between tracks connected to a turntable"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:434
-msgid "Trains will crash above this speed"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:435
-msgid "Enable/Disable balloon popup help windows"
-msgstr "Включить или выключить вÑплывающую подÑказку"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:436
-msgid "Enable/Disable show of flextrack on hotbar"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:437
-msgid "How far you can move the mouse before its considered a drag"
-msgstr "Как далеко вы должны передвинуть мышь, чтобы начать перетаÑкивание"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:438
-msgid "How long you can hold a mouse button down before its considered a drag"
-msgstr "Как долго вы должны держать кнопку мыши, чтобы начать перетаÑкивание"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:439
-msgid "Minimum distance (in pixels) between grid lines/ticks"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:440
-msgid ""
-"Specifies the Check Point frequency; number of modifications made since the "
-"last checkpoint."
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:441
-msgid "Specifies the number of checkpoints after save before auto-saving."
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:442
-msgid "Resume work on last layout or start with new layout"
-msgstr "Возобновить работу поÑледнего проекта или начать Ñ Ñ‡Ð¸Ñтого лиÑта"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:444
-msgid "Updated cost of current selected item"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:446
-msgid "Selection list for prices"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:447
-#: ../../../../build/work/app/bin/bllnhlp.c:448
-#: ../../../../build/work/app/bin/bllnhlp.c:449
-msgid "Price of specified length of flex-track"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:451
-msgid "Controls the printing of a centerline of track cmdPrint"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:452
-msgid "Controls the reduction (scale) of the printout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:453
-msgid "Scaled page width (Scale times physical page width)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:454
-msgid "Sets page size to the maximum (based on scale and physical page size)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:455
-msgid "Scaled page height (Scale times physical page height)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:456
-msgid "Sets scale, origin and angle for a one page printout of the layout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:457
-msgid "Print page in Portrait or Landscape format"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:458
-msgid "Order of printing pages"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:459
-msgid "Print Title, Date, Author and other information at bottom of page?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:460
-msgid "Ignore unprintable page margins?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:461
-msgid "Print Registration Marks at 1:1?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:462
-msgid "Print Snap Grid?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:463
-msgid "Print Rulers on all page edges?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:464
-msgid "Print Roadbed Outline?"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:465
-msgid "Print Roadbed Outline"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:466
-#: ../../../../build/work/app/bin/bllnhlp.c:467
-#: ../../../../build/work/app/bin/bllnhlp.c:469
-msgid ""
-"Origin of the print grid. This is useful if you want to reprint a set of "
-"pages"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:468
-msgid "Resets the origin and angle to 0"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:470
-msgid "Deselects all pages"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:472
-msgid "Print selected pages and terminates the print command"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:473
-#, fuzzy
-msgid "List of loaded, shown or hidden parameter files"
-msgstr "Загрузить или выгрузить файлы параметров"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:474
-msgid "Show parameter files by names or descriptions"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:475
-msgid "Toggle the shown status of the selected parameter file"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:476
-msgid "Find extra parameter files from the filesystem"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:477
-msgid "Find parameter files from the system library"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:478
-msgid "Update parameter file list"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:479
-#, fuzzy
-msgid "Reload parameter file from list"
-msgstr "Чтение файлов Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:480
-msgid "Select all parameter files shown"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:481
-msgid "Profile of specified path"
-msgstr "Профиль выбранного пути"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:482
-msgid "Clear the profile"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:483
-msgid "Print the profile"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:485
-msgid "Stop recording"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:486
-msgid "Insert a message"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:487
-msgid "End a message"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:488
-msgid "Message body"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:489
-msgid "Possible turnouts"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:490
-msgid "Skip this turnout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:492
-msgid "Manufacturer of Object"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:493
-msgid "Description of Object"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:494
-msgid "Part Nuber of Object"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:496
-msgid "Rescale by Scale Conversion or by Ratio"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:497
-msgid "Original Scale of the selected objects"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:498
-msgid "Original Gauge of the selected objects"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:499
-msgid "New Scale of the selected objects"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:500
-msgid "New Gauge of the selected objects"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:501
-msgid "Change track dimensions to new scale"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:502
-msgid "Change size by this amount"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:504
-msgid "Snap Grid Line and Division"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:505
-msgid "X and Y position markers"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:506
-msgid "Border rulers, room boundaries and table edges"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:507
-msgid "Primary Axis of grid rotation"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:508
-msgid "Secondary Axis of grid rotation"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:509
-msgid "Unselected tracks"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:510
-msgid "Selected tracks"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:511
-msgid "Color of tracks on the Profile path"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:512
-msgid "Color of Exceptional tracks"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:513
-msgid "Color of track ties"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:514
-msgid "Updates the colors"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:515
-msgid "Angle in degrees"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:516
-msgid "Rotate object(s) by specified amount"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:517
-msgid "Enter one or more words as search terms '*' means all"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:518
-#, fuzzy
-msgid "Find matching file descriptions"
-msgstr "Выберите и перемеÑтите подпиÑÑŒ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:519
-msgid "Search Results"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:520
-msgid "Show Descriptions or FileNames in results"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:521
-msgid "Add selected entries into parameter file list"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:522
-#, fuzzy
-msgid "Select All found entries"
-msgstr "Выберите второй трек"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:523
-msgid "Reload the system library contents for finding"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:524
-msgid "Choose commands to be sticky"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:525
-msgid "Make the commands sticky"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:526
-msgid "List of available structure"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:527
-msgid "Diagram of the selected structure"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:528
-msgid "Hide Selection window when placing Structure"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:529
-msgid "Drawing scale and size"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:530
-msgid "Complete structure placement"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:531
-msgid "Choose a Pier number"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:532
-msgid "Name of the Motor"
-msgstr "Ðазвание поезда"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:533
-msgid "Value when switch is normal"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:534
-msgid "Value when the switch is reversed"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:535
-msgid "Value for a positive comfirmation of switch position"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:537
-msgid "Useful information about the program"
-msgstr "ÐŸÐ¾Ð»ÐµÐ·Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ программе"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:538
-msgid "Show Tip of the Day every time the program starts"
-msgstr "Показывать Ñовет Ð´Ð½Ñ ÐºÐ°Ð¶Ð´Ñ‹Ð¹ раз при запуÑке программы"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:539
-msgid "Show the next Tip of the Day"
-msgstr "Показать Ñледующий Ñовет днÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:540
-msgid "Show the previous Tip of the Day"
-msgstr "Показать предыдущий Ñовет днÑ"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:542
-msgid "Controls which Command Buttons are displayed"
-msgstr "Показать или ÑпрÑтать панель"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:543
-msgid "List of Cars"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:544
-msgid "List of active trains"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:546
-msgid "Train odometer"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:547
-msgid "Reset odometer to 0"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:548
-msgid "Find train on layout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:549
-msgid "Follow train around layout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:550
-msgid "Flip direction at End Of Track"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:551
-msgid "Change direction of train"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:552
-msgid "Stop the train"
-msgstr "ОÑтановить поезд"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:553
-msgid "List of available turnouts for the current scale"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:554
-msgid ""
-"Diagram of the currently selected turnout. Click on a End-Point to select "
-"the Active End-Point"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:555
-msgid ""
-"A menu list of various type of turnouts and sectional tracks you can define"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:556
-msgid "Hide Selection window when placing Turnout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:557
-msgid "The selected Active End-Point"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:558
-msgid "Current selected turnout, (displayed in the diagram window)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:559
-msgid "One the End-Points that can be selected"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:561
-#: ../../../../build/work/app/bin/bllnhlp.c:562
-msgid "Angle of the specified track to the center line of the turnout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:563
-msgid "Specifies if angles are entered as Frog Numbers or in degrees"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:564
-#: ../../../../build/work/app/bin/bllnhlp.c:565
-msgid "Desciption"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:566
-msgid "Turnout description (Manuf., Size, Part Number, etc)"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:567
-#: ../../../../build/work/app/bin/bllnhlp.c:568
-#: ../../../../build/work/app/bin/bllnhlp.c:569
-msgid "Length from the base to the end of the specified track"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:571
-#: ../../../../build/work/app/bin/bllnhlp.c:572
-msgid "Offset of the track End-Point from the center line of the turnout"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:575
-#: ../../../../build/work/app/bin/bllnhlp.c:576
-msgid "Prints a full size diagram of the turnout for checking"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:577
-msgid "Color of Roadbed lines"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:578
-msgid "Width of Roadbed lines"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:579
-msgid "Width of Roadbed"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:581
-msgid "Closes the window and returns to the Turnout Selection window"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:582
-msgid "Specifies the diameter of the turntable"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:583
-msgid "Old Turnout title"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:584
-msgid "List of available titles"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:585
-msgid "Leave the Turnouts' title unchanged"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:586
-msgid "Invoke the Parameter Files dialog"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:587
-msgid "List of available turnouts"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:588
-msgid "Update the Turnouts' title"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:592
-msgid "Sample"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:594
-msgid "Slant"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:595
-msgid "Font selection dialog"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:596
-msgid "Weight"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:597
-msgid "Printer Abort Window"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:598
-msgid "Print to filename"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:599
-msgid "Specify Postscript font alias mapping"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:600
-msgid ""
-"Displays the Print Setup window to change printers, orientation, paper size, "
-"etc."
-msgstr ""
-"Открыть оно наÑтроек печати Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° принтера, ориентации Ñтраницы, бумаги "
-"и др."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:601
-msgid "Closes this dialog"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:602
-msgid "Page orientation"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:603
-msgid "Unprintable margins"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:604
-msgid "Updates and closes this dialog"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:605
-msgid "Choose paper size"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:606
-msgid "Choose printer"
-msgstr ""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:607
-msgid "Print test page"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:1
-#: ../../../../build/work/app/i18n/custmsg.h:8
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:1
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:8
msgid ""
"XTrackCAD provides demonstrations on most of the program's features. The "
"demos can be run by clicking on the Help menu on the Main window and then "
"selecting Demos."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:3
-#: ../../../../build/work/app/i18n/custmsg.h:10
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:3
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:10
msgid ""
"The notation \"Menu|Item\" is used in the documentation (and the on-line "
"demos and tips) to indicate the selection of a menu item.\n"
@@ -9965,22 +8264,22 @@ msgid ""
"menu bar of the Main window and then selecting the Open item from that menu."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:6
-#: ../../../../build/work/app/i18n/custmsg.h:12
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:12
msgid ""
"Set your modeling scale on the \"Options|Layout\" dialog. This controls the "
"Turnouts and Structures that are available, Easement values and track gauge."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:8
-#: ../../../../build/work/app/i18n/custmsg.h:14
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:8
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:14
msgid ""
"A number of example layouts are provided. These files can be accessed by "
"\"Help|Examples\"."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:10
-#: ../../../../build/work/app/i18n/custmsg.h:16
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:10
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:16
#, fuzzy
msgid ""
"When installed, the length units are set based on your contry: inches for "
@@ -9991,39 +8290,39 @@ msgstr ""
"изменить Ñто в разделе меню \"ÐаÑтройки/ПредпочтениÑ\" поменÑв ÑиÑтему на "
"метричеÑкую."
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:12
-#: ../../../../build/work/app/i18n/custmsg.h:18
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:18
msgid ""
"You can change the overall size of your layout on the \"Options|Layout\" "
"dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:14
-#: ../../../../build/work/app/i18n/custmsg.h:20
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:20
msgid ""
"When installed, the default command is the Select command. You might want to "
"change this to the Decribe command. You can do this on the \"Options|"
"Command Options\" dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:16
-#: ../../../../build/work/app/i18n/custmsg.h:22
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:22
msgid ""
"When Selecting tracks, the connection between Selected and Unselected tracks "
"is marked by a Red X. This indicates points where the connection between "
"tracks will be broken if you Move or Rotate the Selected tracks."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:18
-#: ../../../../build/work/app/i18n/custmsg.h:24
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:18
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:24
msgid ""
"You can change orientation of the pages on the Print command by moving or "
"rotating the Print Grid.\n"
"Shift-Left-Drag moves the grid and Shift-Right-Drag rotates the grid."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:21
-#: ../../../../build/work/app/i18n/custmsg.h:26
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:26
msgid ""
"You can add track to any unconnected End-Point with the Modify command.\n"
"Hold down the Shift key and click on the End-Point and drag away to create a "
@@ -10031,8 +8330,8 @@ msgid ""
"Repeat with the new End-Point to create flowing tracks."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:25
-#: ../../../../build/work/app/i18n/custmsg.h:28
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:28
msgid ""
"You can create curved tracks in four ways by dragging from:\n"
" the 1st endpoint in the direction of the curve\n"
@@ -10045,8 +8344,8 @@ msgid ""
"to change the method."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:34
-#: ../../../../build/work/app/i18n/custmsg.h:30
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:30
msgid ""
"When creating a straight or a curved track by dragging from the 1st End "
"Point, you can snap the new track to an existing open end point by holding "
@@ -10054,8 +8353,8 @@ msgid ""
"The new track will be joined to the old when you create it."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:37
-#: ../../../../build/work/app/i18n/custmsg.h:32
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:32
msgid ""
"Track Circles provide a quick way to see what arrangement of tracks will fit "
"in your layout spaces. Create Circles with your typical radius and place "
@@ -10071,8 +8370,8 @@ msgid ""
"to change the method."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:45
-#: ../../../../build/work/app/i18n/custmsg.h:34
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:45
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:34
msgid ""
"Easements (spiral transition curves) are used when track changes from "
"straight to curved by gradually changing the radius. This improves "
@@ -10081,15 +8380,15 @@ msgid ""
"The Easement dialog is used to control easements."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:49
-#: ../../../../build/work/app/i18n/custmsg.h:36
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:36
msgid ""
"\"Help|Recent Messages\" shows the last error and warning messages that were "
"generated by the program. Also an explanation of each message is displayed."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:51
-#: ../../../../build/work/app/i18n/custmsg.h:38
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:38
msgid ""
"When creating stall tracks for a turntable, you usually want the the stall "
"tracks to be spaced evenly.\n"
@@ -10097,8 +8396,8 @@ msgid ""
"specify the minimum angle between stall tracks."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:54
-#: ../../../../build/work/app/i18n/custmsg.h:40
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:40
msgid ""
"XTrackCAD periodically saves the current layout in a check point file. The "
"'Check Point' item on the 'Options|Preferences' dialog controls how often "
@@ -10107,15 +8406,15 @@ msgid ""
"checkpoint file (xtrkcad.ckp in the XTrackCAD Working directory) to file.xtc"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:57
-#: ../../../../build/work/app/i18n/custmsg.h:42
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:42
msgid ""
"The Parallel command is helpful to layout yards and sidings. If the "
"Parallel track abuts with an existing track, it is automatically connected."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:59
-#: ../../../../build/work/app/i18n/custmsg.h:44
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:59
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:44
msgid ""
"You can use Shift-Drag in Select command to move and rotate selected "
"tracks.\n"
@@ -10123,15 +8422,15 @@ msgid ""
"Control-Left-Drag can move labels."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:63
-#: ../../../../build/work/app/i18n/custmsg.h:46
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:46
msgid ""
"You can move and rotate the Snap Grid to align with existing track or "
"benchwork."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:65
-#: ../../../../build/work/app/i18n/custmsg.h:48
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:48
msgid ""
"Use the Parts List command to measure track length.\n"
"Select the tracks you want to measure and then click on the Parts List "
@@ -10139,8 +8438,8 @@ msgid ""
"track. You will have to add in the length of any Turnouts."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:68
-#: ../../../../build/work/app/i18n/custmsg.h:50
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:68
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:50
msgid ""
"The length of flex-track attached to each Turnout is displayed on layout "
"near the end-points of the Turnouts.\n"
@@ -10148,8 +8447,8 @@ msgid ""
"Display dialog is selected."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:71
-#: ../../../../build/work/app/i18n/custmsg.h:52
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:71
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:52
msgid ""
"The Profile command can be used to find the length of a continous section of "
"track.\n"
@@ -10160,24 +8459,24 @@ msgid ""
"first track and then select other tracks along the path."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:75
-#: ../../../../build/work/app/i18n/custmsg.h:54
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:54
msgid ""
"Layers can be used to contain different groups of tracks or other features. "
"You might use one layer for the main-line, another of staging tracks and "
"another of benchwork.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:77
-#: ../../../../build/work/app/i18n/custmsg.h:56
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:77
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:56
msgid ""
"You can give each layer a name (by using the \"Manage|Layer\" dialog). This "
"name will be displayed as the Balloon Help for the corresponding Layer "
"button, if you have Balloon Help enabled on the \"Options|Display\" dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:79
-#: ../../../../build/work/app/i18n/custmsg.h:58
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:79
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:58
#, fuzzy
msgid ""
"You can remove groups of buttons or the Hot Bar from the Main window to give "
@@ -10188,8 +8487,8 @@ msgstr ""
"больше меÑта, еÑли вы не иÑпользуете некоторые функции. Также, кол-во кнопок "
"Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñлоёв можно наÑтроить в меню Слои."
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:81
-#: ../../../../build/work/app/i18n/custmsg.h:60
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:60
msgid ""
"The size of the map window is controlled by the overall size of the room "
"(specified on the layout dialog) and the map scale (on the display dialog). "
@@ -10198,16 +8497,16 @@ msgid ""
"XTrackCad will prevent you from making the map window too small or too large."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:84
-#: ../../../../build/work/app/i18n/custmsg.h:62
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:62
msgid ""
"You can unload parameter files you are not using by the Parameter Files "
"dialog. This removes unused Turnout and Structure definitions from the Hot "
"Bar and makes the program start faster."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:86
-#: ../../../../build/work/app/i18n/custmsg.h:64
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:64
msgid ""
"Right-Click on the Main window displays a menu list of commands as an "
"alternative to pressing the buttons on the tool bar or using the menu "
@@ -10217,8 +8516,8 @@ msgstr ""
"ÑпиÑком команд аналогичным кнопкам в панели инÑтрументов или в \"горÑчих "
"клавишах\"."
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:87
-#: ../../../../build/work/app/i18n/custmsg.h:66
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:87
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:66
msgid ""
"Holding down the Shift key while you Right-Click will display options for "
"the current command (if any)."
@@ -10226,8 +8525,8 @@ msgstr ""
"ЕÑли зажать клавишу Shift когда вы нажимаете правой кнопкой мыши, то "
"отобразитÑÑ ÑпиÑок опций Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ команды (еÑли ÑущеÑтвует)."
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:89
-#: ../../../../build/work/app/i18n/custmsg.h:68
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:89
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:68
msgid ""
"Right-Click on the Hot Bar displays a menu of the different groups of "
"objects which you can use to jump to the group you are interested in.\n"
@@ -10235,8 +8534,8 @@ msgid ""
"position (1 is the start, 5 is half way, 0 is the end)."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:92
-#: ../../../../build/work/app/i18n/custmsg.h:70
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:92
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:70
msgid ""
"Right-Drag on the Map window sets the origin and scale of the Main window.\n"
"The Main window will be centered on the spot where you started the Draw and "
@@ -10244,36 +8543,36 @@ msgid ""
"window."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:95
-#: ../../../../build/work/app/i18n/custmsg.h:72
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:95
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:72
msgid ""
"To refresh the Main window, press Control-L (hold down the 'Ctrl' key and "
"then press the 'l' key)."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:97
-#: ../../../../build/work/app/i18n/custmsg.h:74
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:97
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:74
msgid ""
"The File menu contains a list of the last 5 layouts you were working on."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:99
-#: ../../../../build/work/app/i18n/custmsg.h:76
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:76
msgid ""
"The Print command can optionally print lines representing the roadbed for "
"all tracks. This is useful when printing full size (1:1) for cutting "
"roadbed."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:101
-#: ../../../../build/work/app/i18n/custmsg.h:78
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:101
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:78
msgid ""
"Pressing the 'Esc' key cancels the current command and invokes the default "
"command, (which is either Describe or Select)."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:103
-#: ../../../../build/work/app/i18n/custmsg.h:80
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:103
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:80
msgid ""
"When moving or rotating tracks on slow machines or with a large number of "
"tracks, you can improve performance by changing the way tracks are drawn "
@@ -10282,16 +8581,16 @@ msgid ""
"normally, as simple lines or just draw end-points."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:106
-#: ../../../../build/work/app/i18n/custmsg.h:82
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:106
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:82
msgid ""
"The colors of different parts of the Main window can be changed with the "
"Colors dialog. In particular, the Snap Grid color can be changed to make it "
"more visible when printed."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:108
-#: ../../../../build/work/app/i18n/custmsg.h:84
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:108
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:84
msgid ""
"By default objects are drawn in their normal colors. Tracks will be drawn "
"in Black. Objects can also be drawn in the color according to their Layer. "
@@ -10300,43 +8599,43 @@ msgid ""
"non-Tracks."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:111
-#: ../../../../build/work/app/i18n/custmsg.h:86
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:111
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:86
msgid ""
"Each Layer can be drawn or hidden by the 'Visible' toggle on the Layers "
"dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:112
-#: ../../../../build/work/app/i18n/custmsg.h:88
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:88
msgid ""
"Short cut Layer buttons can also be displayed on the tool bar for up to the "
"first 20 layers.\n"
"This buttons allow to Show or Hide the layers."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:115
-#: ../../../../build/work/app/i18n/custmsg.h:90
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:115
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:90
msgid "The name of the Layer is the Balloon Help for the Layer button."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:117
-#: ../../../../build/work/app/i18n/custmsg.h:92
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:92
msgid ""
"The playback speed of the Demos can be changed by using Speed drop down list "
"on the Demo window."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:119
-#: ../../../../build/work/app/i18n/custmsg.h:94
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:119
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:94
msgid ""
"Many of the commands and dialogs can be invoked by special key combinations "
"called Menu-Accelerators. These are listed on the Menus next to the command "
"name. For example, Control-P will invoke the Print command."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:121
-#: ../../../../build/work/app/i18n/custmsg.h:96
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:121
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:96
msgid ""
"The Connect command is used to join Sectional track pieces that don't quite "
"fit together.\n"
@@ -10344,8 +8643,8 @@ msgid ""
"selected End-Points closer together."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:124
-#: ../../../../build/work/app/i18n/custmsg.h:98
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:124
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:98
msgid ""
"To copy a group of objects: Select the objects, press Control-c (or select "
"Copy from the Edit menu), press Control-v (or select Paste from the Edit "
@@ -10354,24 +8653,24 @@ msgid ""
"them into position."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:127
-#: ../../../../build/work/app/i18n/custmsg.h:100
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:127
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:100
msgid ""
"In the Rotate (or Select) commands you can press Shift-Right-Click to "
"display the Rotate menu which allows you to rotate the selected objects by a "
"specific angle."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:129
-#: ../../../../build/work/app/i18n/custmsg.h:102
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:129
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:102
msgid ""
"You can use the Move-To-Join option of the Join command (hold down the Shift "
"key) to move a group of Selected tracks to attach with some unselected End-"
"Point."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:131
-#: ../../../../build/work/app/i18n/custmsg.h:104
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:104
msgid ""
"The Price List dialog (on the File Menu) is used to specify the prices of "
"each type of Turnout, Sectional Track and Structure. Also, the length and "
@@ -10380,8 +8679,8 @@ msgid ""
"the selected objects."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:134
-#: ../../../../build/work/app/i18n/custmsg.h:106
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:134
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:106
msgid ""
"Areas of water can represented by a Polygon (use the Draw command) of the "
"appropiate color.\n"
@@ -10393,79 +8692,79 @@ msgid ""
"You can also use a Polygon to represent aisles."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:140
-#: ../../../../build/work/app/i18n/custmsg.h:108
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:140
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:108
msgid ""
"When you create Benchwork you can move it below other objects by Selecting "
"the Benchwork and use the Below command.\n"
"Also, put Benchwork in a separate Layer so you can hide it if desired."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:143
-#: ../../../../build/work/app/i18n/custmsg.h:110
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:143
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:110
msgid ""
"You can enter Distances and Lengths using any format regardless of the "
"Length Format on the Preferences dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:144
-#: ../../../../build/work/app/i18n/custmsg.h:112
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:112
msgid ""
"You can enter Metric values when English is the default Units and vice versa."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:146
-#: ../../../../build/work/app/i18n/custmsg.h:114
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:146
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:114
msgid ""
"When entering Distances and Lengths you can press the '=' key to redisplay "
"the value in the default format."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:147
-#: ../../../../build/work/app/i18n/custmsg.h:116
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:147
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:116
msgid ""
"You can also press the 's' key to convert a Prototype measurement to a Scale "
"measurement by dividing by the ratio for the current scale."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:148
-#: ../../../../build/work/app/i18n/custmsg.h:118
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:118
msgid ""
"The 'p' key will convert a Scale measurement to a Prototype measurement."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:150
-#: ../../../../build/work/app/i18n/custmsg.h:120
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:150
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:120
msgid ""
"You can place cars on the layout using the Train Simulation command to check "
"clearance points, track to track separation and coupling."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:152
-#: ../../../../build/work/app/i18n/custmsg.h:122
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:152
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:122
msgid ""
"Use the MoveTo button on the Custom Management dialog to move your custom "
"Turnout, Structure and Car definitions to a .XTP parameter file."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:154
-#: ../../../../build/work/app/i18n/custmsg.h:124
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:154
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:124
msgid ""
"If you are printing multiple pages on a continuous feed printer (such a Dot "
"Matrix) you can change the Page Order if necessary to print pages out in "
"proper order."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:156
-#: ../../../../build/work/app/i18n/custmsg.h:126
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:126
msgid ""
"On the Car Item and Car Part dialogs, you can enter custom values for "
"Manufacturer, Part and Road by typing the new value directly into the Drop "
"Down List."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:158
-#: ../../../../build/work/app/i18n/custmsg.h:128
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:128
msgid ""
"On the Car Item dialog, you can change the Road, Number, Color and other "
"values for a Car. This is useful if you repaint or renumber a car. \n"
@@ -10473,20 +8772,20 @@ msgid ""
"the couplers."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:161
-#: ../../../../build/work/app/i18n/custmsg.h:130
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:161
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:130
msgid ""
"You can Export your Car Inventory to a file in Comma-Separated-Value format "
"which can be read by most spread-sheet programs."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:163
-#: ../../../../build/work/app/i18n/custmsg.h:132
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:132
msgid "Use the Train Odometer to measure distances along the track."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:165
-#: ../../../../build/work/app/i18n/custmsg.h:134
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:134
msgid ""
"Holding down the Shift key when clicking the Zoom In or Zoom Out button will "
"zoom to a programmed Drawing Scale. \n"
@@ -10494,23 +8793,23 @@ msgid ""
"it's program Zoom to the current Drawing Scale."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:168
-#: ../../../../build/work/app/i18n/custmsg.h:136
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:168
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:136
msgid ""
"You can trim the ends of turnouts by holding down the Shift key when using "
"the Split command."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:170
-#: ../../../../build/work/app/i18n/custmsg.h:138
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:138
msgid ""
"The Split command can be used to create Block Gaps at end points between two "
"tracks. \n"
"Either rail or both rails can be gapped, which are drawn as thick lines."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:173
-#: ../../../../build/work/app/i18n/custmsg.h:140
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:173
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:140
msgid ""
"Trains will 'crash' if they hit another car when travelling faster than the "
"'Max Coupling Speed' (on the Command Options dialog). \n"
@@ -10519,15 +8818,15 @@ msgid ""
"Crashed trains must be manually moved back onto the track."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:177
-#: ../../../../build/work/app/i18n/custmsg.h:142
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:177
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:142
msgid ""
"You can add new track segments to a turnout definition or create a "
"definition from individual tracks using the Group command."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:179
-#: ../../../../build/work/app/i18n/custmsg.h:144
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:179
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:144
msgid ""
"The center point and radius of Curved and Circle tracks can optionally be "
"drawn. \n"
@@ -10535,27 +8834,27 @@ msgid ""
"Left-Click on the track."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:182
-#: ../../../../build/work/app/i18n/custmsg.h:146
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:146
msgid ""
"Turnout, Curved and Helix track labels can be individually turned on and off "
"by doing a Shift-Right-Click on the track when using the Move Label command."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:184
-#: ../../../../build/work/app/i18n/custmsg.h:148
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:148
msgid ""
"You can use the Describe command to change the font size of Text objects."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:186
-#: ../../../../build/work/app/i18n/custmsg.h:150
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:186
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:150
msgid ""
"You can use the Describe command to change the size of Dimension Line labels."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:188
-#: ../../../../build/work/app/i18n/custmsg.h:152
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:188
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:152
msgid ""
"Normally Right-Click displays a popup menu of commands and Shift-Right-Click "
"displays options for the current command. \n"
@@ -10563,8 +8862,8 @@ msgid ""
"Options dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:191
-#: ../../../../build/work/app/i18n/custmsg.h:154
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:191
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:154
msgid ""
"The Align item on the Rotate command options menu will let you Align "
"selected objects with any unselected object. \n"
@@ -10572,23 +8871,23 @@ msgid ""
"second point you selected."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:194
-#: ../../../../build/work/app/i18n/custmsg.h:156
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:194
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:156
msgid ""
"Print To Bitmap allows you to print the track center line. \n"
"This is useful if you later print the bitmap full size as a template when "
"laying track."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:197
-#: ../../../../build/work/app/i18n/custmsg.h:158
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:197
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:158
msgid ""
"You can export the selected tracks to a DXF file which can be read by most "
"CAD programs."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:199
-#: ../../../../build/work/app/i18n/custmsg.h:160
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:199
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:160
msgid ""
"Lengths and distances can be displayed in a variety of units and formats "
"such as 1' 10 3/4\", 1ft 10.75in or 22.750. In Metric mode, distances can "
@@ -10596,8 +8895,8 @@ msgid ""
"item on the Preferences dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:201
-#: ../../../../build/work/app/i18n/custmsg.h:162
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:201
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:162
msgid ""
"Tracks that are too steep or curve too tightly are drawn in the Exception "
"color (Yellow by default). \n"
@@ -10605,16 +8904,16 @@ msgid ""
"The maximum grade and minimum radius are set on the Preferences dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:205
-#: ../../../../build/work/app/i18n/custmsg.h:164
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:164
msgid ""
"The Flip command produces a mirror-image of the selected tracks. \n"
"If possible, right-hand turnouts are relabeled as left-hand turnouts (and "
"vice versa)."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:208
-#: ../../../../build/work/app/i18n/custmsg.h:166
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:208
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:166
msgid ""
"Then Ungroup command will break turnouts and structures into individual "
"track, line and shape segments. \n"
@@ -10622,21 +8921,21 @@ msgid ""
"Then use the Group command to update the definition."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:212
-#: ../../../../build/work/app/i18n/custmsg.h:168
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:212
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:168
msgid "Dimension lines show the distance between two points."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:214
-#: ../../../../build/work/app/i18n/custmsg.h:170
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:214
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:170
msgid ""
"A variety of Benchwork (rectangular, L-girder and T-girder) can be drawn. \n"
"Use the Below command to move the Benchwork below the track for proper "
"display."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:217
-#: ../../../../build/work/app/i18n/custmsg.h:172
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:217
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:172
msgid ""
"The Turnout Designer dialogs allow you to specify the width of any attached "
"roadbed. \n"
@@ -10644,8 +8943,8 @@ msgid ""
"can be specified."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:220
-#: ../../../../build/work/app/i18n/custmsg.h:174
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:220
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:174
msgid ""
"The Color dialog (on the Options menu) is used to change the color of "
"different objects on the display. \n"
@@ -10653,8 +8952,8 @@ msgid ""
"Selected and Exception tracks."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:223
-#: ../../../../build/work/app/i18n/custmsg.h:176
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:223
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:176
msgid ""
"You can set the elevation (height) of track end-points. \n"
"Elevations of intermediate end points can be computed automatically based on "
@@ -10663,8 +8962,8 @@ msgid ""
"Please see the Elevations help and demo."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:228
-#: ../../../../build/work/app/i18n/custmsg.h:178
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:228
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:178
msgid ""
"Once you have elevations on some endpoints, you can use the Profile command "
"to produce an elevation graph. \n"
@@ -10672,15 +8971,15 @@ msgid ""
"Please see the Profile help and demo for details."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:232
-#: ../../../../build/work/app/i18n/custmsg.h:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:232
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:180
msgid ""
"You can draw tracks with wider lines for rails. \n"
"Select the tracks and use Medium or Thick Tracks on the Edit menu."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:235
-#: ../../../../build/work/app/i18n/custmsg.h:182
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:235
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:182
msgid ""
"The Helix command is used to create a Helix track. \n"
"You specify some parameters: height, radius, number of turns, grade and "
@@ -10690,8 +8989,8 @@ msgid ""
"track."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:240
-#: ../../../../build/work/app/i18n/custmsg.h:184
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:240
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:184
msgid ""
"Many objects on the layout have labels: Turnouts/Helix/Curved Titles, Track "
"Lenghts, End-Point Elevations, Track Elevations and Cars. \n"
@@ -10699,876 +8998,871 @@ msgid ""
"the Display options dialog."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:243
-#: ../../../../build/work/app/i18n/custmsg.h:186
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:186
msgid ""
"If you hold down the Control key when using the Rotate command, the rotation "
"will be done in increments of 15ᅵ."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:245
-#: ../../../../build/work/app/i18n/custmsg.h:188
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:245
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:188
msgid ""
"When using the Rotate command, Shift-Right-Click displays a menu allowing "
"you to rotate by specific amounts or to align the selected objects with "
"another object."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:247
-#: ../../../../build/work/app/i18n/custmsg.h:190
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/help/xtrkcad.tip:247
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:190
msgid ""
"This is last tip. If you have any additions or comments, please let us know."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:25
-#: ../../../../build/work/app/i18n/custmsg.h:192
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:192
msgid ""
"The unconnected endpoints of a straight or curved track can be changed with "
"the 'Modify Track' command.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:31
-#: ../../../../build/work/app/i18n/custmsg.h:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:194
msgid ""
"The endpoint of a straight track is selected and then Left-Dragged to change "
"its length. A blue anchor shows that the length can be extended.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:48
-#: ../../../../build/work/app/i18n/custmsg.h:196
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:196
msgid ""
"If you try to drag the selected endpoint beyond the far endpoint, the track "
"extends in the opposite direction.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:68
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:73
-#: ../../../../build/work/app/i18n/custmsg.h:199
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:68
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:199
msgid ""
"A curved track is selected and it's new endpoint is determined by the angle "
"to the cursor. \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:105
-#: ../../../../build/work/app/i18n/custmsg.h:201
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:105
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:201
msgid "It's possible to almost create a complete circle.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:202
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:202
msgid ""
"If you drag the mouse beyond the start of the curve the track becomes very "
"short.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:113
-#: ../../../../build/work/app/i18n/custmsg.h:204
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:114
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:204
msgid "Here you are warned that the track will be too short.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:147
-#: ../../../../build/work/app/i18n/custmsg.h:206
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:121
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:206
+msgid ""
+"Because the modified track is too short, the modification is abandoned the "
+"original track is restored.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:208
msgid ""
"If you move the cursor away from the curve, you will create a straight track "
"tangent to the curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:169
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:174
-#: ../../../../build/work/app/i18n/custmsg.h:209
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:185
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:211
msgid ""
"If you adjust the endpoint of a turnout or sectional track the track is "
-"extended by a similar track segment. The extension can be \n"
+"extended by a similar track segment. The extension can be a straight or a "
+"curve.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:210
-#, fuzzy
-msgid "a straight or a curve.\n"
-msgstr "Добавить прÑмой трек"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:190
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:195
-#: ../../../../build/work/app/i18n/custmsg.h:213
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:200
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:214
msgid ""
"You can change the radius of a straight or curved track that is connected at "
"one endpoint by holding down the Shift key while Left-dragging on it.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:214
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:215
msgid ""
"The blue cross anchor shows that this is possible when shift is held down "
"with no buttons.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:209
-#: ../../../../build/work/app/i18n/custmsg.h:216
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:219
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:217
msgid ""
"This lets you change a straight track into a curved track (and vice versa) "
"as well as changing the radius of a curved track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:252
-#: ../../../../build/work/app/i18n/custmsg.h:218
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:262
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:219
msgid ""
"You can form an extension of a straight or curved Track that is connected at "
"one endpoint using an easement by holding down the Ctrl key while Left-"
"dragging on it.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:219
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:220
msgid ""
"The blue half cross anchor shows that this is possible when the Ctrl key is "
"held down with no mouse button.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:267
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmbench.xtr:9
-#: ../../../../build/work/app/i18n/custmsg.h:222
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmadjend.xtr:277
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:9
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:223
msgid "You can draw a variety of different types of benchwork:\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:223
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:224
msgid "- rectangular (1x2, 2x4 etc)\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:225
msgid "- L girders\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:226
msgid "- T girders\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:226
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:227
msgid "You can also draw them in different orientations.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmbench.xtr:25
-#: ../../../../build/work/app/i18n/custmsg.h:228
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:25
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:229
msgid "We will draw two 3x6 inch L-girders.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmbench.xtr:43
-#: ../../../../build/work/app/i18n/custmsg.h:230
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:43
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:231
msgid ""
"The flange of the top L-Girders is on the outside edge of the girders. We "
"want to change the girder so both flanges are on the inside.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:231
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:232
msgid "We will use the <Describe> command for this.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmbench.xtr:54
-#: ../../../../build/work/app/i18n/custmsg.h:233
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:234
msgid "Change the Orientation to Right.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmbench.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:235
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmbench.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:236
msgid "Now both flanges are on the inside of the two girders.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:34
-#: ../../../../build/work/app/i18n/custmsg.h:237
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:238
msgid ""
"Pushing the <Describe> button will cancel any other command in progress.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:238
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:239
msgid ""
"Here we will begin to create a curved track which is a two step process.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:47
-#: ../../../../build/work/app/i18n/custmsg.h:240
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:241
msgid ""
"When we clicked on the <Describe> button, the current command was "
"cancelled.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:241
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:242
msgid ""
"When in <Describe> mode, selecting any object will print a description in "
"the Status Bar and display a dialog showing properties of the clicked-on "
"object.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:57
-#: ../../../../build/work/app/i18n/custmsg.h:243
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:244
msgid ""
"Certain parameters of the object can be changed. In this case we'll change "
"the length\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:65
-#: ../../../../build/work/app/i18n/custmsg.h:245
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:246
msgid "Let's look at the Turnout...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:73
-#: ../../../../build/work/app/i18n/custmsg.h:247
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:248
msgid "and change the turnout name and part no.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:84
-#: ../../../../build/work/app/i18n/custmsg.h:249
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:250
msgid "You can change the contents of text...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:93
-#: ../../../../build/work/app/i18n/custmsg.h:251
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:93
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:252
msgid "and its size.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:100
-#: ../../../../build/work/app/i18n/custmsg.h:253
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:100
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:254
msgid ""
"If you select a note, the Description dialog appears which displays the "
"contents of the note.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:112
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcircle.xtr:7
-#: ../../../../build/work/app/i18n/custmsg.h:256
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcancel.xtr:112
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:257
msgid ""
"Like the <Curve> track command, there are several ways to create a Circle "
"track.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:257
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:258
msgid ""
"The first is to specify a fixed radius and simply drag the Circle into "
"position.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:259
msgid "We will change the Radius before proceeding.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcircle.xtr:24
-#: ../../../../build/work/app/i18n/custmsg.h:260
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:261
msgid "The next method is to drag from the edge of the Circle to the center.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcircle.xtr:37
-#: ../../../../build/work/app/i18n/custmsg.h:262
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:263
msgid ""
"The last is similar, but you drag from the center of the Circle to the "
"edge.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcircle.xtr:50
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:157
-#: ../../../../build/work/app/i18n/custmsg.h:265
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcircle.xtr:50
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:157
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:266
msgid ""
"We have built a siding using Sectional track and have 2 End-Points that "
"don't line up and are not connected automatically when placing the sectional "
"track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:162
-#: ../../../../build/work/app/i18n/custmsg.h:267
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:162
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:268
msgid ""
"We use the <Connect> command to adjust neighboring tracks so the gap is "
"closed.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:268
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:269
msgid ""
"Note: the adjustments are only done on tracks which have only 1 or 2 "
"connections. In this example the Turnouts would not be affected.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:175
-#: ../../../../build/work/app/i18n/custmsg.h:270
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:175
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:271
msgid "And now the gap is closed.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:181
-#: ../../../../build/work/app/i18n/custmsg.h:272
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:181
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:273
msgid "Other tracks have been shifted slightly to close the gap.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:188
-#: ../../../../build/work/app/i18n/custmsg.h:274
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:188
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:275
msgid "You can see these slight mis-alignments.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:275
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:276
msgid "But they will have no effect when the layout is actually built.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:196
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:353
-#: ../../../../build/work/app/i18n/custmsg.h:278
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:196
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:353
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:279
msgid ""
"After working with Sectional track you might get to point where these mis-"
"alignments have accumulated and you wish to remove them.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:279
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:280
msgid ""
"You can remove these slight mis-alignments by tightening the tracks starting "
"from a unconnected End-Point. Use Shift-Left-Click with the <Connect> "
"command.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:280
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:281
msgid "First use the <Split> command to disconnect the tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:363
-#: ../../../../build/work/app/i18n/custmsg.h:282
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:363
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:283
msgid ""
"Then with the <Connect> command, Shift-Left-Click on the 2 End-Points.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn1.xtr:378
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn2.xtr:199
-#: ../../../../build/work/app/i18n/custmsg.h:285
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn1.xtr:378
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:199
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:286
msgid "In example shows a simple figure-8 layout using Sectional track.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:286
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:287
msgid ""
"You will notice that the tracks do not line up exactly in one location.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn2.xtr:211
-#: ../../../../build/work/app/i18n/custmsg.h:288
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:211
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:289
msgid ""
"We can use the <Connect> command to move the connecting tracks slightly and "
"connect the 2 End-Points.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn2.xtr:224
-#: ../../../../build/work/app/i18n/custmsg.h:290
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:291
msgid "The two End-Points are now aligned and connected.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn2.xtr:231
-#: ../../../../build/work/app/i18n/custmsg.h:292
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:231
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:293
msgid "The connection was made by adding small gaps in other tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmconn2.xtr:238
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:7
-#: ../../../../build/work/app/i18n/custmsg.h:295
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmconn2.xtr:238
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:296
msgid "There are several ways to create a Curved track.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:296
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:297
msgid ""
"You can choose which to use by clicking on the small button to the left of "
"<Curve> command button if the current Curve command is not the one you "
"want.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:297
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:298
msgid ""
"The first is by clicking on the first End-Point and dragging in the "
"direction of the Curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:20
-#: ../../../../build/work/app/i18n/custmsg.h:299
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:20
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:300
msgid ""
"You will see a straight track with a double ended Red arrow at the end.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:300
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:301
msgid "Click and drag on one of the Red arrows to complete the Curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:39
-#: ../../../../build/work/app/i18n/custmsg.h:302
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:303
msgid ""
"The next method is to click at one End-Point and drag to the center of the "
"Curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:50
-#: ../../../../build/work/app/i18n/custmsg.h:304
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:305
msgid ""
"Now you will see the double ended Red arrow connected to the center of the "
"Curve marked by a small circle.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:306
msgid "As before, drag on one of the Red arrows to complete the Curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:307
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:308
msgid ""
"The next method is similar to the last except that you drag first from the "
"center of the Curve to one End-Point.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:80
-#: ../../../../build/work/app/i18n/custmsg.h:309
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:310
msgid "Once again, drag on a Red arrow to complete the Curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:90
-#: ../../../../build/work/app/i18n/custmsg.h:311
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:90
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:312
msgid ""
"The last method begins by drawing a line between the two End-Points of the "
"Curve. This forms the Chord of the Curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:108
-#: ../../../../build/work/app/i18n/custmsg.h:313
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:108
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:314
msgid "Now drag on a Red arrow to complete the Curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcrvtrk.xtr:118
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:112
-#: ../../../../build/work/app/i18n/custmsg.h:316
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmcrvtrk.xtr:118
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:317
msgid "This demo will construct a control panel for part of a bigger layout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:117
-#: ../../../../build/work/app/i18n/custmsg.h:318
-msgid "For our control panel we will use Å’\" lines. \n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:319
+msgid "For our control panel we will use Œ\" lines. \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:319
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:320
msgid "Also, we will use a 1/8\" grid to lay out our controls.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:320
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:321
msgid ""
"First, we will set up the Snap Grid for 1\" grid lines and 8 divisions.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:132
-#: ../../../../build/work/app/i18n/custmsg.h:322
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:323
msgid "Now, clear the layout and turn on the Snap Grid.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:147
-#: ../../../../build/work/app/i18n/custmsg.h:324
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:147
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:325
msgid "First step: draw the lines representing the tracks.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:325
-msgid "We specify the line width in pixels when at 1:1 zoom.\n"
-msgstr ""
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:326
+#, fuzzy
+msgid "We specify the line width in inches.\n"
+msgstr "Это ÑпиÑок компонентов Ð´Ð»Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°"
-#: ../../../../build/work/app/i18n/custmsg.h:326
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:327
msgid ""
-"To create a 1/4\" line, divide the dots-per-inch (DPI) of your display by "
-"4.\n"
+"To create a 1/4\" line, enter 0.250 in the \"Straight Line Width\" box at "
+"the bottom of the window.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:327
-msgid ""
-"For MS-Windows the DPI is usually 98, so choose: 98/4 = 24 (approximately).\n"
-msgstr ""
-
-#: ../../../../build/work/app/i18n/custmsg.h:328
-msgid "For Linux, the DPI is usually 72, so choose: 72/4 = 18.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:495
-#: ../../../../build/work/app/i18n/custmsg.h:330
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:492
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:329
msgid ""
"Notice how the Snap Grid keeps the main line and siding track parallel and "
-"the connecting tracks and spur at a 45° angle.\n"
+"the connecting tracks and spur at a 45° angle.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:503
-#: ../../../../build/work/app/i18n/custmsg.h:332
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:500
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:331
msgid "Second step: add LEDs for the turnout position indicators.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:333
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:332
msgid "We will use T1 red and green LEDs.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:334
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:333
msgid "We will zoom in to show positioning.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:513
-#: ../../../../build/work/app/i18n/custmsg.h:336
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:510
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:335
msgid ""
"Notice that when we are in the correct position (on the 1/8\" grid), the "
"Marker lines on the bottom and left rulers will high-light the tick marks. "
"When both ticks are high-lighted, press the space bar to finalize the LED.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:558
-#: ../../../../build/work/app/i18n/custmsg.h:338
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:555
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:337
msgid "Now we'll add push buttons to control the turnouts.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:595
-#: ../../../../build/work/app/i18n/custmsg.h:340
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:592
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:339
msgid "Let's add signals to our siding.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:341
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:340
msgid ""
"The entrance to the siding will be protected by double headed signals.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:342
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:341
msgid "We'll select a signal from the HotBar and place it into position.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:608
-#: ../../../../build/work/app/i18n/custmsg.h:344
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:605
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:343
msgid ""
-"We rotate the signals by Shift-Right-Click and select 90° CW on the popup "
+"We rotate the signals by Shift-Right-Click and select 90° CW on the popup "
"menu. We can not show the popup menu in demo mode, but will simulate the "
"effect.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:657
-#: ../../../../build/work/app/i18n/custmsg.h:346
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:654
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:345
msgid "The exits from the siding will be protected by single headed signals.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:711
-#: ../../../../build/work/app/i18n/custmsg.h:348
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:708
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:347
msgid "Now for some touch-ups.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:349
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:348
msgid "Notice when the line meet at an angle there is a gap.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:350
-msgid "We will fill this gap with the Å’\" dot.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:349
+msgid "We will fill this gap with the Œ\" dot.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:351
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:350
msgid ""
"Note: Win95/Win98/WinME does not support drawing lines with flat end-caps, "
"but only with round end-caps.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:352
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:351
msgid "Users on those platforms will not see the gap.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:734
-#: ../../../../build/work/app/i18n/custmsg.h:354
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:731
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:353
msgid ""
"Add an arrow head to indicate the tracks that connect to the rest of the "
"layout.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:355
-msgid "The second arrow will be flipped 180°\"\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:354
+msgid "The second arrow will be flipped 180°\"\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:772
-#: ../../../../build/work/app/i18n/custmsg.h:357
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:769
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:356
msgid "And add some labels.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:831
-#: ../../../../build/work/app/i18n/custmsg.h:359
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:830
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:358
msgid ""
-"We want to print our control panel onto a 8Å“x11 page, but the control panel "
+"We want to print our control panel onto a 8Âœx11 page, but the control panel "
"is a bit too wide.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:360
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:359
msgid "Lets tighten it up a bit.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:361
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:360
msgid ""
"First turn the Snap Grid on again so any moves we make will keep objects on "
"the grid.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:840
-#: ../../../../build/work/app/i18n/custmsg.h:363
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:839
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:362
msgid "Lets move the spur track to the left 3/4\"\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:862
-#: ../../../../build/work/app/i18n/custmsg.h:365
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:861
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:364
msgid "Now move the right side of the siding over.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:882
-#: ../../../../build/work/app/i18n/custmsg.h:367
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:881
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:366
msgid "Now, adjust the ends of the mainline and siding tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:902
-#: ../../../../build/work/app/i18n/custmsg.h:369
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:901
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:368
msgid "And move the title over as well.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:919
-#: ../../../../build/work/app/i18n/custmsg.h:371
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmctlpnl.xtr:918
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:370
msgid "Now you can print it.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:372
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:371
msgid "The cross-hairs on the LEDs and switch show the centers for drilling.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdelund.xtr:33
-#: ../../../../build/work/app/i18n/custmsg.h:374
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:33
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:373
msgid ""
"Pressing the <Delete> button lets you delete selected tracks from the "
"layout.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:375
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:374
msgid ""
"First you select the tracks you want to delete, and then press the <Delete> "
"button.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdelund.xtr:47
-#: ../../../../build/work/app/i18n/custmsg.h:377
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:376
msgid ""
"If you delete a track connected to an easement curve, then the easement "
"curve is deleted as well.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdelund.xtr:57
-#: ../../../../build/work/app/i18n/custmsg.h:379
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:57
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:378
msgid "You can use the <Undo> command to undelete tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdelund.xtr:67
-#: ../../../../build/work/app/i18n/custmsg.h:381
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:67
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:380
msgid ""
"If you Left-Drag on the layout you can select all tracks within an area.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:382
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:381
msgid ""
"Note, only tracks within the selected area are deleted. Since the easement "
"curve is connected to a deleted track, it is deleted as well.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdelund.xtr:80
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:6
-#: ../../../../build/work/app/i18n/custmsg.h:385
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdelund.xtr:80
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:384
msgid ""
"The demo also simulates entering values and selecting options on various "
"dialogs.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:386
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:385
msgid ""
"This is simulated by drawing a rectangle around the control when values are "
"entered or changed.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:13
-#: ../../../../build/work/app/i18n/custmsg.h:388
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:13
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:387
msgid ""
"Here we are going to make some changes to the Display dialog. Notice how "
"this is simulated.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:389
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:388
msgid "First we are setting 'Draw Tunnel' to 'Normal'\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:21
-#: ../../../../build/work/app/i18n/custmsg.h:391
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:390
msgid "Now we're changing 'Label Font Size' to '56'\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:26
-#: ../../../../build/work/app/i18n/custmsg.h:393
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:392
msgid "We'll change some other options\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:38
-#: ../../../../build/work/app/i18n/custmsg.h:395
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:394
msgid ""
"This effect is only used in demonstration mode. During normal operation you "
"will not see this.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdialog.xtr:45
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdimlin.xtr:117
-#: ../../../../build/work/app/i18n/custmsg.h:398
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdialog.xtr:45
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:117
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:397
msgid "Dimension Lines are used to mark the distances between two points.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:399
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:398
msgid ""
"Here we will create a Dimension Line to show the separation between two "
"tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdimlin.xtr:132
-#: ../../../../build/work/app/i18n/custmsg.h:401
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:400
msgid ""
"We might also want to measure the distance between two structures. In this "
"case we will use a larger dimension line.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdimlin.xtr:143
-#: ../../../../build/work/app/i18n/custmsg.h:403
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:402
msgid ""
"We can use the <Describe> command to change the position of the Dimension "
"Line and the size of the numbers.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmdimlin.xtr:161
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:406
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmdimlin.xtr:162
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:405
msgid ""
"This example will show the effect of using easements while joining tracks.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:407
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:406
msgid "First, we will enable Cornu Easements and select Join\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:28
-#: ../../../../build/work/app/i18n/custmsg.h:409
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:408
msgid "First select one end of the track\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:39
-#: ../../../../build/work/app/i18n/custmsg.h:411
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:410
msgid "Now the end of different track\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:49
-#: ../../../../build/work/app/i18n/custmsg.h:413
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:412
msgid "You can reposition the ends by dragging them \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:65
-#: ../../../../build/work/app/i18n/custmsg.h:415
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:414
msgid "When you are happy, Hit Enter or Space, if not use Esc\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:73
-#: ../../../../build/work/app/i18n/custmsg.h:417
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:73
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:416
msgid ""
"The Curve is made up of Beziers parts that smooth the shape the best way it "
"can be in the space available\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:87
-#: ../../../../build/work/app/i18n/custmsg.h:419
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:87
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:418
msgid "Now, we'll show traditional easements instead.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:142
-#: ../../../../build/work/app/i18n/custmsg.h:421
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:142
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:420
msgid ""
"We've selected sharp easements. The minimum radius curve we can use will be "
"9.75\"\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:422
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:421
msgid "Notice the label on the Easement button has changed to 'Sharp'.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:157
-#: ../../../../build/work/app/i18n/custmsg.h:424
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:157
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:423
msgid ""
"Note the connecting curve does not quite meet the straight tracks. This the "
"'Offset'.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:165
-#: ../../../../build/work/app/i18n/custmsg.h:426
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:425
msgid "Here the connecting curve is too small.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:175
-#: ../../../../build/work/app/i18n/custmsg.h:428
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmease.xtr:175
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:427
msgid ""
"The connecting curve is made of three tracks, the curve and two easement "
"segments on each end.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:112
-#: ../../../../build/work/app/i18n/custmsg.h:430
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:429
msgid ""
"We have designed part of the layout with a siding, 2 branches and a spiral "
"loop. We want to set elevations.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:431
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:430
msgid "Note: make sure you set endpoint elevations on the Display dialog.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:122
-#: ../../../../build/work/app/i18n/custmsg.h:433
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:122
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:432
msgid "First we will set elevations at the end of the branches.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:132
-#: ../../../../build/work/app/i18n/custmsg.h:435
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:434
msgid "We'll select the end of the top branch and set the Elevation to 4\"\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:436
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:435
msgid "First, click on the End-Point.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:142
-#: ../../../../build/work/app/i18n/custmsg.h:438
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:142
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:437
msgid "Next, pick Defined on the Elevation dialog Radio box.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:148
-#: ../../../../build/work/app/i18n/custmsg.h:440
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:439
msgid "And set the Elevation to 4.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:156
-#: ../../../../build/work/app/i18n/custmsg.h:442
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:441
msgid "Now, select the other branch and set it's elevation to 2\"\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:170
-#: ../../../../build/work/app/i18n/custmsg.h:444
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:443
msgid "We can move the Elevation label by using Ctrl-Left-Drag\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:182
-#: ../../../../build/work/app/i18n/custmsg.h:446
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:445
msgid "Now, we set the Elevation at one end of the Siding.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:209
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:215
-#: ../../../../build/work/app/i18n/custmsg.h:449
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:209
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:215
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:448
msgid "We want to find the elevations where the 2 tracks cross.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:224
-#: ../../../../build/work/app/i18n/custmsg.h:451
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:224
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:450
msgid "We picked an End-Point on the upper track.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:452
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:451
msgid ""
"XTrackCAD has computed the Elevation (2.33\") at this point based on the "
"Elevation at the siding and a combination of the of the first Elevations.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:453
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:452
msgid ""
"We create a Computed Elevation here that will be automatically adjusted "
"whenever the other Elevations are changed.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:243
-#: ../../../../build/work/app/i18n/custmsg.h:455
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:454
msgid ""
"The Compute Elevation is based on Elevations at end of both of the "
"branches. We may want to base the Elevation on only one branch. For "
@@ -11576,616 +9870,616 @@ msgid ""
"affecting this Computed Elevation.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:455
msgid "We do this by Ignoring the branch we don't want.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:457
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:456
msgid "We'll ignore the lower branch.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:258
-#: ../../../../build/work/app/i18n/custmsg.h:459
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:458
msgid ""
"Notice at the endpoint where the tracks cross, we see the elevation has "
"changed from 2.33 to 2.64.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:264
-#: ../../../../build/work/app/i18n/custmsg.h:461
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:264
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:460
msgid "Now we want to know the elevation of the lower track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:274
-#: ../../../../build/work/app/i18n/custmsg.h:463
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:274
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:462
msgid "There is no endpoint on the lower track here.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:463
msgid ""
"Use Shift-Left-Click to Split the track and create an endpoint we can use "
"for an elevation,\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:287
-#: ../../../../build/work/app/i18n/custmsg.h:466
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:287
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:465
msgid "and create another Computed Elevation point.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:302
-#: ../../../../build/work/app/i18n/custmsg.h:468
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:467
msgid "Now we want to label the grade on this section of track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:311
-#: ../../../../build/work/app/i18n/custmsg.h:470
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:311
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:469
msgid ""
"Again, since there is no endpoint nearby, we split the track to create an "
"endpoint we can use,\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:321
-#: ../../../../build/work/app/i18n/custmsg.h:472
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:321
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:471
msgid "and create a grade marker.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:335
-#: ../../../../build/work/app/i18n/custmsg.h:474
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:335
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:473
msgid "Note the marker has an arrow pointing in the upwards direction.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:344
-#: ../../../../build/work/app/i18n/custmsg.h:476
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:344
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:475
msgid ""
"The last thing we want to do is to create a Station label that we'll use in "
"the <Profile> command.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:358
-#: ../../../../build/work/app/i18n/custmsg.h:478
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:358
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:477
msgid "Now, set the Elevation to Station and enter the its name.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:376
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:31
-#: ../../../../build/work/app/i18n/custmsg.h:481
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmelev.xtr:376
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:480
msgid ""
"XTrackCAD can help find tracks that are curved too sharply or are too "
"steep. These tracks are Exception tracks and are drawn in the Exception "
"track color.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:482
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:481
msgid ""
-"In this example we have a curved track with radius of 9\" and a straight "
-"track with a grade of 3.8%.\n"
+"In this example we have a curved track with radius of 9 inches and a "
+"straight track with a grade of 3.8 percent.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:483
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:482
msgid " \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:39
-#: ../../../../build/work/app/i18n/custmsg.h:485
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:484
msgid ""
-"The Layout dialog shows the Minimum Track Radius is 9\" and the Maximum "
-"Track Grade is 5%.\n"
+"The Layout dialog shows the Minimum Track Radius is 9 inches and the Maximum "
+"Track Grade is 5 percent.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:48
-#: ../../../../build/work/app/i18n/custmsg.h:487
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:486
msgid ""
"If we make the curved track sharper it will be drawn in the Exception "
"color.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:61
-#: ../../../../build/work/app/i18n/custmsg.h:489
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:61
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:488
msgid ""
"If we make the straight track steeper it will also be drawn in the Exception "
"color.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:78
-#: ../../../../build/work/app/i18n/custmsg.h:491
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:78
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:490
msgid ""
"You can change the Exception color on the Colors dialog from the Options "
"menu.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmexcept.xtr:85
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:21
-#: ../../../../build/work/app/i18n/custmsg.h:494
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmexcept.xtr:85
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:493
msgid ""
"The unconnected endpoint of any track can also be extended with the <Modify> "
"command using Right-Drag.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:26
-#: ../../../../build/work/app/i18n/custmsg.h:496
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:495
msgid "Select the endoint and Right-Drag.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:34
-#: ../../../../build/work/app/i18n/custmsg.h:498
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:497
msgid "The extending track can be straight...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:44
-#: ../../../../build/work/app/i18n/custmsg.h:500
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:44
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:499
msgid "... or curved.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:51
-#: ../../../../build/work/app/i18n/custmsg.h:502
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:501
msgid ""
"If you extend a straight or curved flex track and enable Easements then an "
"Easement curve will be automatically generated when you extend the track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:65
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:124
-#: ../../../../build/work/app/i18n/custmsg.h:505
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmextend.xtr:65
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:124
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:504
msgid ""
"The <Flip> command will create a mirror image of the selected objects.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:131
-#: ../../../../build/work/app/i18n/custmsg.h:507
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:506
msgid "After selecting the object, drag a line which will form the mirror.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:140
-#: ../../../../build/work/app/i18n/custmsg.h:509
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:140
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:508
msgid "The mirror line does not have to be vertical or horizontal.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:149
-#: ../../../../build/work/app/i18n/custmsg.h:511
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:149
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:510
msgid "You can also flip any number of objects.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:512
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:511
msgid "Watch what happens to the structure and turnout titles.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:163
-#: ../../../../build/work/app/i18n/custmsg.h:514
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:513
msgid ""
"Note that the turnout title has been changed from the Medium Right to Medium "
"Left. When turnouts are flipped, XTrackCAD will try to find a matching "
"turnout and if found will change the name.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:170
-#: ../../../../build/work/app/i18n/custmsg.h:516
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:515
msgid ""
"Structures do not have Right and Left hand versions. Their title is changed "
"to indicate that they were flipped.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:517
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:516
msgid "You can use the <Describe> command to change their title.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmflip.xtr:187
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:21
-#: ../../../../build/work/app/i18n/custmsg.h:520
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmflip.xtr:187
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:519
msgid ""
"The <Group> and <Ungroup> commands (on the Tools menu) are a powerful way to "
"manipulate Turnout and Structure definitions.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:521
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:520
msgid "We'll start with a simple turnout and add a switch machine.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:50
-#: ../../../../build/work/app/i18n/custmsg.h:523
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:55
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:522
msgid ""
"Now that we have drawn a rough outline of a switch machine we will group it "
"with the turnout definition.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:524
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:523
msgid "First we Select the objects in the new definition.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:526
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:68
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:525
msgid "Now do the <Group> command.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:70
-#: ../../../../build/work/app/i18n/custmsg.h:528
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:527
msgid ""
"The <Group> command dialog shows the Title (Manufacturer, Description and "
"Part Number) of the new definition. This information is taken from the "
"Selected objects you are grouping.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:76
-#: ../../../../build/work/app/i18n/custmsg.h:530
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:529
msgid ""
"The 'Replace with new group?' toggle will replace the Selected objects with "
"the new definition.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:83
-#: ../../../../build/work/app/i18n/custmsg.h:532
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:88
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:531
msgid ""
"If we don't change the Title then the new definition will replace the "
"existing definition.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:533
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:532
msgid "We'll give this definition a new Description.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:94
-#: ../../../../build/work/app/i18n/custmsg.h:535
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:534
msgid "We're done with this definition. Press Ok.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:101
-#: ../../../../build/work/app/i18n/custmsg.h:537
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:106
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:536
msgid "You will see the updated image on the HotBar.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:108
-#: ../../../../build/work/app/i18n/custmsg.h:539
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:113
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:538
msgid ""
"The <Ungroup> command replaces any Selected turnouts or structures with "
"their parts.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:540
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:539
msgid ""
"Structures and non-track segements of turnouts are composed of Lines, "
"Circles and other shapes. In this turnout these are the two lines and the "
"two squares.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:541
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:540
msgid ""
"We will Ungroup this turnout and see how the individual parts can be "
"changed.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:542
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:541
msgid "First Select the turnout and then Ungroup it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:123
-#: ../../../../build/work/app/i18n/custmsg.h:544
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:543
msgid "Notice that the Title now indicates the turnout is Ungrouped.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:545
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:544
msgid "Hit Escape to deselect everything.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:133
-#: ../../../../build/work/app/i18n/custmsg.h:547
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:138
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:546
msgid "Now Select the lines and squares.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:158
-#: ../../../../build/work/app/i18n/custmsg.h:549
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:548
msgid ""
"We could modify these object or add new ones. For now we'll just delete "
"them.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:165
-#: ../../../../build/work/app/i18n/custmsg.h:551
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:170
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:550
msgid "And move the Label out of the way.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:176
-#: ../../../../build/work/app/i18n/custmsg.h:553
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:181
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:552
msgid "Notice that the turnout has been broken into three parts.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:198
-#: ../../../../build/work/app/i18n/custmsg.h:555
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:203
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:554
msgid ""
"Two ends of the turnout, from the frog to the end of the diverging leg and "
"from the points to the left, are now straight track sections.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:556
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:555
msgid ""
"The a turnout is made of a number of individual straight and curved track "
"segements. This turnout had four segments:\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:557
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:556
msgid " 1 a short straight segment to the left of the points\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:558
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:557
msgid " 2 a long straight segment to the right of the points\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:559
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:558
msgid " 3 a curved segment from the points to the frog\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:560
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:559
msgid ""
" 4 a straight segment from the frog to the end of the diverging leg.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:561
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:560
msgid "The first and last segments have be converted to straight tracks.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:562
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:561
msgid ""
"The second and third segments form the the body of the turnout and can not "
"be ungrouped further.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:563
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:562
msgid ""
"You can later Group this turnout with the straight segments to recreate the "
"turnout definition. You can also add other track segments to turnout "
"definitions.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:242
-#: ../../../../build/work/app/i18n/custmsg.h:565
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:247
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:564
msgid "Now, create a track and place the new turnout on it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:260
-#: ../../../../build/work/app/i18n/custmsg.h:567
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:265
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:566
msgid "Now suppose we want to replace the black squares with green circles.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:568
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:567
msgid "First we Select the turnout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:272
-#: ../../../../build/work/app/i18n/custmsg.h:570
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:277
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:569
msgid "And now Ungroup it (from the Tools Menu)\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:277
-#: ../../../../build/work/app/i18n/custmsg.h:572
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:282
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:571
msgid ""
"Notice that the name has changed to indicate the turnout was Ungrouped.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:283
-#: ../../../../build/work/app/i18n/custmsg.h:574
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:288
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:573
msgid ""
"Now, hit escape to deselect everything and then Select the 2 squares and "
"delete them.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:300
-#: ../../../../build/work/app/i18n/custmsg.h:576
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:575
msgid "Now draw the green circles...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:321
-#: ../../../../build/work/app/i18n/custmsg.h:578
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:326
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:577
msgid "and Group the new definition.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:340
-#: ../../../../build/work/app/i18n/custmsg.h:580
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:345
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:579
msgid ""
"Notice that the turnout in the HotBar is angled the same as the turnout on "
"the layout. Make sure your new definition is rotated the way you want it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:379
-#: ../../../../build/work/app/i18n/custmsg.h:582
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:384
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:581
msgid "We can also create turnouts from simple straight and curved tracks.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:583
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:582
msgid "We'll create two tracks that have a common endpoint.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:390
-#: ../../../../build/work/app/i18n/custmsg.h:585
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:395
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:584
msgid ""
"When we create the curve from the straight track endpoint we need to hold "
-"down the Shift key to prevent XTrackCAD from trying to join the two tracks.\n"
+"down the <Shift> key to prevent XTrackCAD from trying to join the two "
+"tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:408
-#: ../../../../build/work/app/i18n/custmsg.h:587
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:413
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:586
msgid "At this point we can modify the tracks if necessary.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:588
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:587
msgid "We will use the <Describe> command to change the tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:420
-#: ../../../../build/work/app/i18n/custmsg.h:590
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:425
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:589
msgid "We'll make the Length 7.5\".\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:591
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:590
msgid ""
"If we change the Length, each End-Point will be moved to shorten the track. "
-"We want to just move the Right End-Point. To control this, change the Pivot "
+"We want to just move the Right End-Point. To control this, change the Lock "
"to First which means the Left End-Point will be unchanged when we change the "
"length (or angle) of the track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:430
-#: ../../../../build/work/app/i18n/custmsg.h:593
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:435
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:592
msgid "Now when change the Length only the Right End-Point will move.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:441
-#: ../../../../build/work/app/i18n/custmsg.h:595
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:446
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:594
msgid "Now let's look at the curved track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:451
-#: ../../../../build/work/app/i18n/custmsg.h:597
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:596
msgid ""
"Here the Left End-Point (which we don't want to move) is the Second End-"
-"Point, so we'll make that the Pivot.\n"
+"Point, so we'll make that the Lock.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:459
-#: ../../../../build/work/app/i18n/custmsg.h:599
-msgid "We want the curve to have a radius of 20\" and an angle of 17.5ᅵ.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:598
+msgid "We want the curve to have a radius of 20\" and an angle of 17.5°.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:600
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:599
msgid "First change the Radius...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:468
-#: ../../../../build/work/app/i18n/custmsg.h:602
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:473
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:601
msgid "and the the Angular Length.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:476
-#: ../../../../build/work/app/i18n/custmsg.h:604
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:481
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:603
msgid "Now Select both tracks...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:492
-#: ../../../../build/work/app/i18n/custmsg.h:606
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:497
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:605
msgid "and Group them.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:503
-#: ../../../../build/work/app/i18n/custmsg.h:608
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:508
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:607
msgid ""
"If the two tracks have a common End-Point then they will form a Turnout and "
"can be switched with the <Train> command. Otherwise they will just be two "
"track segments grouped together.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:510
-#: ../../../../build/work/app/i18n/custmsg.h:610
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:515
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:609
msgid ""
"We have created a left hand turnout and we also want a right hand version.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:611
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:610
msgid "We'll use the <Flip> command.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:523
-#: ../../../../build/work/app/i18n/custmsg.h:613
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:528
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:612
msgid ""
"Drag a horizontal line that will be the mirror for the <Flip> command.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:533
-#: ../../../../build/work/app/i18n/custmsg.h:615
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:538
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:614
msgid "Notice the title has changed to Flipped Left.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:616
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:615
msgid "Now Group the turnout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:542
-#: ../../../../build/work/app/i18n/custmsg.h:618
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:547
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:617
msgid "We'll change the Title and Part No for the new defintion.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:555
-#: ../../../../build/work/app/i18n/custmsg.h:620
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:560
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:619
msgid ""
"To Remove the definitions, use the Custom Management dialog on the Tools "
"menu.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:560
-#: ../../../../build/work/app/i18n/custmsg.h:622
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:565
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:621
msgid "Select the definitions you added and Delete them.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmgroup.xtr:573
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:16
-#: ../../../../build/work/app/i18n/custmsg.h:625
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmgroup.xtr:578
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:624
msgid ""
"Now we will create a helix in the corner of the layout connected to 2 "
"tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:28
-#: ../../../../build/work/app/i18n/custmsg.h:627
-#, c-format
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:626
msgid ""
-"We will be creating a helix with a Elevation Difference of 12\", Grade of "
-"1.5% and limit the Vertical Separation to at least 2\".\n"
+"We will be creating a helix with a Elevation Difference of 12 inches, Grade "
+"of 1.5 percent and limit the Vertical Separation to at least 2 inches.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:34
-#: ../../../../build/work/app/i18n/custmsg.h:629
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:628
msgid "First set the Elevation Difference to 12\"\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:43
-#: ../../../../build/work/app/i18n/custmsg.h:631
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:43
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:630
msgid "Next set the Vertical Separation to 2\"\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:632
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:631
msgid "Notice how this causes the number of Turns to be set to 6\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:52
-#: ../../../../build/work/app/i18n/custmsg.h:634
-msgid "Next set the Grade to 1.5%\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:52
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:633
+msgid "Next set the Grade to 1.5 percent\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:635
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:634
msgid "Notice how this causes the Radius to change.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:60
-#: ../../../../build/work/app/i18n/custmsg.h:637
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:60
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:636
msgid ""
"Setting these values changes the Radius to 21.2\" and the number of Turns to "
"6.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:66
-#: ../../../../build/work/app/i18n/custmsg.h:639
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:66
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:638
msgid ""
"Now we specify the Angular Separation between the enterance and exit to the "
"helix.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:640
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:639
msgid "Note: this will decrease the Radius slightly.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:76
-#: ../../../../build/work/app/i18n/custmsg.h:642
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:76
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:641
msgid "Next we can fine tune the helix by decreasing the Radius to 15\".\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:643
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:642
msgid "Note the change to the Grade.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:85
-#: ../../../../build/work/app/i18n/custmsg.h:645
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:85
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:644
msgid ""
-"Lastly change the Vertical Separation to 2.5\". The number of Turns will "
-"change to 4 and the grade increase to almost 3%.\n"
+"Lastly change the Vertical Separation to 2.5 inches. The number of Turns "
+"will change to 4 and the grade increase to almost 3 percent.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:646
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:645
msgid ""
"Note: the Vertical Separation will be increased. This value is the "
"Elevation Difference (12.0) divided by the total number of turns. The total "
@@ -12193,165 +10487,165 @@ msgid ""
"Separation.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:94
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:99
-#: ../../../../build/work/app/i18n/custmsg.h:649
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:94
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:648
msgid ""
"Now that the helix parameters are set we can place the helix on the layout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:112
-#: ../../../../build/work/app/i18n/custmsg.h:651
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:650
msgid ""
"Next, join the 2 straight tracks to the helix in the same way we join to a "
"circle.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:145
-#: ../../../../build/work/app/i18n/custmsg.h:653
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:145
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:652
msgid ""
"Notice that the length has increased because we have more than 4 turns in "
"the helix. It is closer to 4.25 turns.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:155
-#: ../../../../build/work/app/i18n/custmsg.h:655
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:155
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:654
msgid ""
"Next, we assign elevations to the 2 End-Points of the helix. This will "
"determine the grade and separation between the helix coils.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:656
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:655
msgid ""
"Note: we could set the elevations anywhere along the connecting tracks "
"instead. XTrackCAD treats a helix as a single length of track for "
"elevations.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:176
-#: ../../../../build/work/app/i18n/custmsg.h:658
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:176
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:657
msgid ""
-"We have set the elevations to 1\" and 13\" to produce a grade of 3.0% with "
-"2.8\" between coils.\n"
+"We have set the elevations to 1 inch and 13 inches to produce a grade of 3.0 "
+"percent with 2.8 inches between coils.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:659
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:658
msgid ""
"You can use the <Describe> command to change the number of Turns or the "
"Elevations at either end of the Helix. This will affect the Grade and "
"Vertical Separation.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:184
-#: ../../../../build/work/app/i18n/custmsg.h:661
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:660
msgid "The helix description can be moved by the <Move Label> command.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhelix.xtr:194
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:16
-#: ../../../../build/work/app/i18n/custmsg.h:664
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhelix.xtr:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:663
msgid ""
"In addition to using the turnout definitions you can create 'Hand Laid "
"Turnout'.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:665
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:664
msgid "This is two step process:\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:23
-#: ../../../../build/work/app/i18n/custmsg.h:667
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:666
msgid "1 - click on the frog and drag away to set the frog angle\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:29
-#: ../../../../build/work/app/i18n/custmsg.h:669
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:29
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:668
msgid ""
" Hint: the further you drag from the frog, the more accurate the angle.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:34
-#: ../../../../build/work/app/i18n/custmsg.h:671
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:34
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:670
msgid "2 - click and drag to set the position of the points\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:42
-#: ../../../../build/work/app/i18n/custmsg.h:673
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:42
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:672
msgid "We can create Hand Laid Turnouts on curved tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:58
-#: ../../../../build/work/app/i18n/custmsg.h:675
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:58
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:674
msgid "A Hand Laid Turnout is composed of several parts.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:67
-#: ../../../../build/work/app/i18n/custmsg.h:677
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:67
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:676
msgid "The actual Turnout is a short portion at the points.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:77
-#: ../../../../build/work/app/i18n/custmsg.h:679
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:77
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:678
msgid "The other parts are various straight and curved segments.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:81
-#: ../../../../build/work/app/i18n/custmsg.h:681
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:680
msgid "The new curved turnout is also composed of several segments.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmhndld.xtr:107
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:7
-#: ../../../../build/work/app/i18n/custmsg.h:684
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmhndld.xtr:107
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:7
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:683
msgid "Welcome to the XTrackCAD demonstration.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:685
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:684
msgid ""
"This will show some the features of XTrackCAD in an automated presentation. "
"This window contains a number of controls and a message area (which I hope "
"you are reading now). \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:686
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:685
msgid "The controls are:\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:687
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:686
msgid "Step - advances to the next step of the demo.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:688
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:687
msgid "Next - skips ahead to the next demo.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:689
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:688
msgid "Quit - exits the demo and returns to XTrackCAD.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:690
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:689
msgid "Speed - controls the speed of the demo.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:691
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:690
msgid "Click Step now for the next message.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:23
-#: ../../../../build/work/app/i18n/custmsg.h:693
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:692
msgid ""
"If this is the first time you have used the demo you may want to rearrange "
"the windows so the demo window does not obscure the main window.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:694
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:693
msgid ""
"You can move the demo window now by dragging on the title bar at the top of "
"the window. I suggest you move it to the top of your screen.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:31
-#: ../../../../build/work/app/i18n/custmsg.h:696
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:31
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:695
msgid ""
"The various controls are disabled when it would be inappropiate to click on "
"them. When the demo is running the Step button is disabled. When the demo "
@@ -12359,500 +10653,500 @@ msgid ""
"to view the next part of the demo.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:697
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:696
msgid "You can click on Quit to return to XTrackCAD at any time.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:698
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:697
msgid "You can adjust the speed of the demonstration with the Speed control.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:60
-#: ../../../../build/work/app/i18n/custmsg.h:700
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:60
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:699
msgid "The demos are designed to fit within a certain sized window.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:701
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:700
msgid ""
"For best results, change the size of the main XTrackCAD window so the box "
"shape is completely visible.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:702
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:701
msgid "You can do this by clicking and dragging on a corner of the window.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:67
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmintro.xtr:72
-#: ../../../../build/work/app/i18n/custmsg.h:705
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:67
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmintro.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:704
msgid "This is the end of the introductory demo.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:706
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:705
msgid ""
"Please click Step for the next demo or click Quit to return to XTrackCAD.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjcir.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:708
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:707
msgid ""
"You can also join to and from circles. This will change the circles to "
"curves.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:709
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:708
msgid "In this example we will join two circles.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjcir.xtr:24
-#: ../../../../build/work/app/i18n/custmsg.h:711
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:710
msgid ""
"Here we've selected points on the two circles. The direction of the "
"connections (whether clockwise or counter clockwise) is controlled by where "
"on the circle you select the connection points.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjcir.xtr:133
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjcir.xtr:152
-#: ../../../../build/work/app/i18n/custmsg.h:714
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:133
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:152
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:713
msgid "Now let's try a cross connection.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjcir.xtr:246
-#: ../../../../build/work/app/i18n/custmsg.h:716
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjcir.xtr:246
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:715
msgid ""
"Note that the connection is from different 'ends' of the circle than in the "
"last example.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnabut.xtr:22
-#: ../../../../build/work/app/i18n/custmsg.h:718
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:22
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:717
msgid "This examples shows joining tracks whose End-Points are aligned.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:719
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:718
msgid ""
"Note the 2 pairs of tracks have End-Points that are close and aligned but "
"not connected.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnabut.xtr:30
-#: ../../../../build/work/app/i18n/custmsg.h:721
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:720
msgid "The first case joins the curve and straight track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnabut.xtr:40
-#: ../../../../build/work/app/i18n/custmsg.h:723
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:722
msgid "The second case will join the two straight tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnabut.xtr:50
-#: ../../../../build/work/app/i18n/custmsg.h:725
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:724
msgid "Note that the two straight tracks were combined to form one track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnabut.xtr:55
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:728
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnabut.xtr:55
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:727
msgid ""
"The <Join> command can also join straight and curved tracks (in either "
"order).\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:729
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:728
msgid "We will enable Cornu easements\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:32
-#: ../../../../build/work/app/i18n/custmsg.h:731
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:730
msgid "A connecting cornu track is drawn between the two tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:41
-#: ../../../../build/work/app/i18n/custmsg.h:733
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:41
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:732
msgid ""
"Notice that the curved track is extended as the connection point moves past "
"the End-Point.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:54
-#: ../../../../build/work/app/i18n/custmsg.h:735
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:734
msgid ""
"Here the connection makes the curved track wrap around. This is not a "
"useful shape, there is a discontinuity at the end. \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:736
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:735
msgid "Adjusting the end point will fix it. \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:64
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnmove.xtr:18
-#: ../../../../build/work/app/i18n/custmsg.h:739
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjncs.xtr:64
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:18
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:738
msgid "The <Join> command can move one group of tracks to join with another.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:740
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:739
msgid ""
"First <Select> the tracks you want to move with Ctrl so that they are both "
"selected.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnmove.xtr:36
-#: ../../../../build/work/app/i18n/custmsg.h:742
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:36
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:741
msgid "Click <Join> and Shift-Left-Click on the two End-Points.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnmove.xtr:51
-#: ../../../../build/work/app/i18n/custmsg.h:744
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnmove.xtr:51
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:743
msgid "The selected tracks are moved into position.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:746
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:745
msgid ""
"Two straight tracks can be joined by selecting the two endoints. The "
"selected endpoints will be those closest to the cursor when the track is "
"selected.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:747
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:746
msgid "First, we will select Easements None and then select Join\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:26
-#: ../../../../build/work/app/i18n/custmsg.h:749
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:26
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:748
msgid "Now we select two points on the tracks\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:36
-#: ../../../../build/work/app/i18n/custmsg.h:751
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:36
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:750
msgid ""
"A connecting track is drawn between the two tracks. Notice how it moves as "
"the cursor is dragged along the second track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:47
-#: ../../../../build/work/app/i18n/custmsg.h:753
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:752
msgid ""
"Note that two tracks are extended if you move past the end of the track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:55
-#: ../../../../build/work/app/i18n/custmsg.h:755
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:55
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:754
msgid ""
"Notice what happens if you drag past the intersection points of the two "
"tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:757
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:756
msgid "This is probably not a very useful thing to do.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:70
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:90
-#: ../../../../build/work/app/i18n/custmsg.h:760
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:70
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:90
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:759
msgid "Now we will do this with Cornu Easements \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:761
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:760
msgid "First, we will select Easements Cornu and then select Join\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:102
-#: ../../../../build/work/app/i18n/custmsg.h:763
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:102
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:762
msgid "Now we again select two points on the tracks\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:112
-#: ../../../../build/work/app/i18n/custmsg.h:765
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:764
msgid ""
"A connecting cornu is drawn between the two tracks. Notice how it behaves "
"as the cursor is dragged along the second track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:123
-#: ../../../../build/work/app/i18n/custmsg.h:767
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:123
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:766
msgid ""
"Note that either tracks can be extended if you move past the end of it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:131
-#: ../../../../build/work/app/i18n/custmsg.h:769
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:131
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:768
msgid ""
"Notice this time what happens if you drag past the intersection points of "
"the two tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:139
-#: ../../../../build/work/app/i18n/custmsg.h:771
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:139
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:770
msgid "This is more useful because you can move the other end as well.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:150
-#: ../../../../build/work/app/i18n/custmsg.h:773
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:150
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:772
msgid "You can add a pin to constrain the Cornu Curve to pass through it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:161
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:16
-#: ../../../../build/work/app/i18n/custmsg.h:776
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjnss.xtr:161
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:775
msgid "You can connect from any track to a turntable\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:777
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:776
msgid "With a Cornu Easement you can have a turntable as the first point.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:38
-#: ../../../../build/work/app/i18n/custmsg.h:779
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:778
msgid ""
"You cannot place the connecting track too close to an existing stall track. "
"How close you can get is controlled by the Turntable Angle on the Setup "
"dialog.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:780
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:779
msgid "In this example it is set to 15 degrees.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:54
-#: ../../../../build/work/app/i18n/custmsg.h:782
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:781
msgid "You can drag the connecting point all round the turntable.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:103
-#: ../../../../build/work/app/i18n/custmsg.h:784
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:103
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:783
msgid ""
"As you drag away from the turntable a straight track will be drawn to the "
"cursor postion and a curve will be drawn from the cursor to the connecting "
"track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:111
-#: ../../../../build/work/app/i18n/custmsg.h:786
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:111
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:785
msgid ""
"Now the cursor will be moved within the turntable, but the end stays on the "
"edge of the well.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:161
-#: ../../../../build/work/app/i18n/custmsg.h:788
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:161
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:787
msgid "All done.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:169
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:38
-#: ../../../../build/work/app/i18n/custmsg.h:791
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmjntt.xtr:169
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:790
msgid ""
"The Draw Commands are used to draw straight and curved lines on the layout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:46
-#: ../../../../build/work/app/i18n/custmsg.h:793
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:46
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:792
msgid ""
"Lines are drawn by clicking at the starting postion and dragging to the "
"final position.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:794
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:793
msgid ""
-"By default, the new line will snap to existing objects. Hold down the "
-"<Ctrl> and <Alt> keys to prevent this from happening.\n"
+"By default, the new line will snap to existing objects. Hold down the <Alt> "
+"keys to prevent this from happening.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:91
-#: ../../../../build/work/app/i18n/custmsg.h:796
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:795
msgid "You also draw in various colors and line widths.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:109
-#: ../../../../build/work/app/i18n/custmsg.h:798
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:110
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:797
msgid ""
"Like Curved Tracks, Curved Lines can be drawn by a variety of methods.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:799
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:798
msgid ""
"Here we will draw a Curve by dragging from one End-Point to the other to "
"define the chord of the Curve. Then we will drag from the center to shape "
"the curve.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:184
-#: ../../../../build/work/app/i18n/custmsg.h:801
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:185
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:800
msgid "Boxes are useful for drawing rectangular shapes.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:194
-#: ../../../../build/work/app/i18n/custmsg.h:803
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:195
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:802
msgid ""
"Circles can be drawn by clicking on the center or edge and dragging to set "
"the radius.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:804
-msgid "Here we will drag from the Center.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:803
+msgid "Here we will drag from the edge to the Center.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:204
-#: ../../../../build/work/app/i18n/custmsg.h:806
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:805
msgid "Lines and Shapes can be deleted by Selecting and Deleting.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines.xtr:227
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:91
-#: ../../../../build/work/app/i18n/custmsg.h:809
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines.xtr:228
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:808
msgid "We also draw Polylines and filled shapes.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:98
-#: ../../../../build/work/app/i18n/custmsg.h:811
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:810
msgid ""
"A Polyline is drawn by dragging to place each of the point in the Polyline.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:125
-#: ../../../../build/work/app/i18n/custmsg.h:813
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:125
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:812
msgid ""
"To finish off the Polyline press the <Space> key or choose another drawing "
"type.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:132
-#: ../../../../build/work/app/i18n/custmsg.h:815
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:132
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:814
msgid "A filled Polygon is drawn in the same way.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:158
-#: ../../../../build/work/app/i18n/custmsg.h:817
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:816
msgid "When you are finished, press the <Space> key to complete the polygon.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:165
-#: ../../../../build/work/app/i18n/custmsg.h:819
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:165
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:818
msgid ""
"You can use the Above and Below Commands to move lines and shapes to the "
"front or back of the drawing.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:182
-#: ../../../../build/work/app/i18n/custmsg.h:821
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:182
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:820
msgid "Filled Boxes and Circles work the same as line Boxes and Circles.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:199
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:8
-#: ../../../../build/work/app/i18n/custmsg.h:824
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmlines2.xtr:199
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:8
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:823
msgid ""
"In the drawing area of the main window you can see an hollow upwards arrow "
"which represents the mouse cursor. In this demo the mouse will move about "
"to show you the actions of different commands.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:825
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:824
msgid ""
"The hollow arrow represents the mouse cursor without a mouse button being "
"pressed.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:16
-#: ../../../../build/work/app/i18n/custmsg.h:827
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:826
msgid ""
"When the left mouse button would be pressed, the mouse cursor appears to "
"flash and the hollow arrow is replaced by a solid left-pointing red arrow "
"while the button is pressed.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:828
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:827
msgid ""
"Note: these color changes occur only during the demo to simulate mouse "
"button presses.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:24
-#: ../../../../build/work/app/i18n/custmsg.h:830
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:829
msgid ""
"Moving the mouse while a mouse button is pressed is called 'dragging'.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:32
-#: ../../../../build/work/app/i18n/custmsg.h:832
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:831
msgid ""
"When the left mouse button is released, the mouse cursor flashes and the "
"hollow up black arrow is restored.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:40
-#: ../../../../build/work/app/i18n/custmsg.h:834
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:833
msgid ""
"Dragging with the right button is simulated by a blue right-facing solid "
"cursor.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:49
-#: ../../../../build/work/app/i18n/custmsg.h:836
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:835
#, fuzzy
msgid "Release Right Click\n"
msgstr "Правый клик"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:57
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:62
-#: ../../../../build/work/app/i18n/custmsg.h:839
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:57
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:62
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:838
msgid "Sometimes the Shift key is held down while using the mouse \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:840
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:839
msgid ""
"This is indicated by an outlined arrow with the letter S near the arrow.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:71
-#: ../../../../build/work/app/i18n/custmsg.h:842
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:71
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:841
msgid ""
"The left mouse button is held down with the Shift and dragged for a Left-"
"Shift-Drag. \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:86
-#: ../../../../build/work/app/i18n/custmsg.h:844
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:843
msgid "Sometimes the Control key is held down while using the mouse. \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:845
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:844
msgid ""
"This is indicated with an upward filled arrow head with the letter C near "
"the arrow \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:98
-#: ../../../../build/work/app/i18n/custmsg.h:847
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:846
msgid ""
"If while the Control is held the Left mouse button is held down it is a Ctrl-"
"Move and a Ctrl-Left-Drag. \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:848
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:847
msgid ""
"This is indicated by an an left-facing open-headed arrow with the letter C "
"near it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:114
-#: ../../../../build/work/app/i18n/custmsg.h:850
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:114
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:849
msgid "You can also use the Control key with the Right mouse button. \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:851
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:850
msgid ""
"This is indicated with a right-facing filled arrow with an open arrow head "
"and the letter C near the arrow \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:130
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:23
-#: ../../../../build/work/app/i18n/custmsg.h:854
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmouse.xtr:130
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:853
msgid ""
"The main drawing area shows a portion of total layout. You can zoom in or "
"zoom out by choosing 'Zoom In' or 'Zoom Out' in the 'Edit' menu, by using "
@@ -12860,18 +11154,18 @@ msgid ""
"keys.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:855
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:854
msgid "You can see the entire layout in the Map window.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:33
-#: ../../../../build/work/app/i18n/custmsg.h:857
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:33
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:856
msgid "As you Zoom Out tracks are drawn with one line instead of two.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:49
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:54
-#: ../../../../build/work/app/i18n/custmsg.h:860
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:49
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:859
msgid ""
"You can change what portion of the layout is shown by using the 'Map' window "
"which shows a compressed version of the entire layout. A hilighted area of "
@@ -12879,1180 +11173,3865 @@ msgid ""
"in the main drawing area.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:861
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:860
msgid ""
"You can Left-Drag the hilighted area in the Map window to change the "
"displayed portion of the layout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:863
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:862
msgid ""
"You can also Right-Drag on the Map window to set the scale and position of "
"the Main window.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmovabt.xtr:72
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmnotes.xtr:6
-#: ../../../../build/work/app/i18n/custmsg.h:866
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmmovabt.xtr:72
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:865
msgid ""
-"The <Note> command lets you attach notes to various spots on the layout.\n"
+"The <Text Note> command lets you attach notes to various spots on the "
+"layout.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:867
+msgid ""
+"When you place a note, the Text Note editor window is displayed which lets "
+"you enter the note.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:869
+msgid ""
+"If you click on a note in <Describe> mode the Text Note editor displays the "
+"note allowing you to modify the note..\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:871
+msgid "You can also create a reference to a file or web link.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmnotes.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:868
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:872
msgid ""
-"When you place a note, the Note editor window is displayed which lets you "
-"enter the note.\n"
+"Choose the type of link by clicking on the down arrow beside the Note "
+"commmand.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmnotes.xtr:22
-#: ../../../../build/work/app/i18n/custmsg.h:870
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:50
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:874
msgid ""
-"If you click on a note in <Describe> mode the Note editor displays the "
-"note.\n"
+"This is a File Note. You can specify the Title of the File and its "
+"location\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmnotes.xtr:39
-#: ../../../../build/work/app/i18n/custmsg.h:872
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:64
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:876
+msgid ""
+"This is a Web Link Note. You can specify the Title of the Link and its URL\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmnotes.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:878
msgid "This is the end of the XTrackCAD Demos.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:873
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:879
msgid "Click Step to return to XTrackCAD.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:874
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:880
msgid "Thanks for watching.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:32
-#: ../../../../build/work/app/i18n/custmsg.h:876
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:882
msgid "This example shows how to create parallel tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:37
-#: ../../../../build/work/app/i18n/custmsg.h:878
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:884
msgid ""
"The separation is set in the <Parallel Separation> window. You should set "
"this value before you begin to select tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:49
-#: ../../../../build/work/app/i18n/custmsg.h:880
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:886
msgid ""
"You control which side the parallel track will be on by moving the cursor "
"from one side of the track centerline to the other.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:81
-#: ../../../../build/work/app/i18n/custmsg.h:882
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:81
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:888
msgid "When you release the mouse button the new parallel track is created.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:883
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:889
msgid ""
"Note that the <Parallel> command remains active after you created the "
"track. This is controlled by the Sticky dialog in the Options menu.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:92
-#: ../../../../build/work/app/i18n/custmsg.h:885
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:92
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:891
msgid "You cannot create a track parallel to a turnout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:172
-#: ../../../../build/work/app/i18n/custmsg.h:887
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:172
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:893
msgid ""
"Note that the new curved track is automatically connected to the short "
"parallel track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmparall.xtr:180
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:19
-#: ../../../../build/work/app/i18n/custmsg.h:890
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmparall.xtr:180
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:19
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:896
msgid ""
"Polylines and polygons (created with the <Draw> command) can be modified by "
"dragging on their corners or edges.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:891
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:897
msgid "First Left Click on the shape you want to modify.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:29
-#: ../../../../build/work/app/i18n/custmsg.h:893
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:29
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:899
msgid "Then drag on the point you want to move\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:39
-#: ../../../../build/work/app/i18n/custmsg.h:895
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:39
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:901
msgid "And finally press the Space bar to finish the change\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:54
-#: ../../../../build/work/app/i18n/custmsg.h:897
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:54
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:903
msgid "If you select the middle of an Edge a new Corner is created.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:72
-#: ../../../../build/work/app/i18n/custmsg.h:899
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:905
msgid "To delete a corner, select and then press Delete or Backspace\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:98
-#: ../../../../build/work/app/i18n/custmsg.h:901
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:98
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:907
msgid "But you cannot have a Poly-shape with less than 3 sides.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:126
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:126
-#: ../../../../build/work/app/i18n/custmsg.h:904
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmplymod.xtr:126
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:126
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:910
msgid ""
"To use the <Profile> command you first need to define Elevations on your "
"layout.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:905
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:911
msgid "In this example we'll use the Elevations defined in the last example.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:906
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:912
msgid "You can move or resize the Profile dialog now if you want.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:135
-#: ../../../../build/work/app/i18n/custmsg.h:908
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:135
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:914
msgid ""
"To show the Profile you need to select a Path on the tracks of your layout.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:909
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:915
msgid "Select a Defined Elevation point (marked by Gold dots).\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:910
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:916
msgid "We will start with the right end of the siding.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:148
-#: ../../../../build/work/app/i18n/custmsg.h:912
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:148
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:918
msgid ""
"The second Point is at the left end of the siding. The Path will be drawn "
"in Purple on the layout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:160
-#: ../../../../build/work/app/i18n/custmsg.h:914
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:160
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:920
msgid "Now select the end of one of the Branches\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:169
-#: ../../../../build/work/app/i18n/custmsg.h:916
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:169
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:922
msgid ""
"The Profile line is drawn in Red. This indicates that there some turnouts "
"on that section of the Path which have more than 2 connections.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:917
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:923
msgid ""
"The grade on this part of the Path is the average and may be affected by "
"other Elevations, such the end of the lower branch.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:178
-#: ../../../../build/work/app/i18n/custmsg.h:919
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:178
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:925
msgid "Now try to select the End-Point of the other branch.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:920
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:926
msgid ""
"You will get an error message because there is no route to one of the ends "
"of the existing Path.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:187
-#: ../../../../build/work/app/i18n/custmsg.h:922
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:187
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:928
msgid ""
"In this case remove the last part of the Path by clicking on current end of "
"the Path and reselect the End-Point.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:198
-#: ../../../../build/work/app/i18n/custmsg.h:924
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:198
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:930
msgid "Notice that the Grade has changed on the Profile.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:205
-#: ../../../../build/work/app/i18n/custmsg.h:926
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:205
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:932
msgid ""
"You can Ignore End-Points on the Path by using Shift-Right-Click to display "
"the Profile Options popup menu and chosing Ignore.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:927
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:933
msgid ""
"Note: We can't show the menu in demo mode but we will show the effect of a "
"Shift Right Click and selecting ignore. We will be Ignoring the End-Point "
"of the Turnout that is not on the Path.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:217
-#: ../../../../build/work/app/i18n/custmsg.h:929
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:217
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:935
msgid "Notice that part of the Profile line is redrawn in Blue.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:930
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:936
msgid ""
"Also, the Computed Elevations and Grade marker on the right side of the "
"layout have been updated.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:225
-#: ../../../../build/work/app/i18n/custmsg.h:932
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:938
msgid ""
"You can set additional Defined Elevation points using the Profile Options "
"popup menu. These points are added to the Profile if they are on the Path.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:933
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:939
msgid ""
"We do this by Shift Right Click to display the Profile Options popup menu "
"and selecting Define.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:237
-#: ../../../../build/work/app/i18n/custmsg.h:935
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:237
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:941
msgid ""
"We've just added a Defined Elevation point to the middle of the lower "
"branch. Notice the addition on the Profile dialog.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:246
-#: ../../../../build/work/app/i18n/custmsg.h:937
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:246
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:943
msgid ""
"For the siding we defined a Station name but it's not on the Path, since the "
"Path takes the shortest distance between points.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:938
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:944
msgid ""
"We can Ignore one of the End-Points on a Turnout to force the Path to take "
"the other route.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:939
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:945
msgid ""
"Again we use Shift-Right-Click to display the Profile Options menu and "
"select ignore.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:258
-#: ../../../../build/work/app/i18n/custmsg.h:941
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:258
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:947
msgid "Now remove the First section of the Path,\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:268
-#: ../../../../build/work/app/i18n/custmsg.h:943
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:268
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:949
msgid "and reselect it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:277
-#: ../../../../build/work/app/i18n/custmsg.h:945
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:277
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:951
msgid ""
"Now the Path goes through the Station End-Point and the name appears on the "
"Profile dialog.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:286
-#: ../../../../build/work/app/i18n/custmsg.h:947
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:286
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:953
msgid "Now we need to increase the separation where the tracks cross.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:948
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:954
msgid ""
"The two Elevations you see here are Computed Elevations which means "
"XTrackCAD dynamically computes the Elevation based on the Elevations of "
"connecting tracks.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:949
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:955
msgid ""
"First make the lower End-Point a Defined Elevation point using Shift-Right-"
"Click and the Profile Options menu. You will see the End-Point marked by a "
"Gold dot and a new line is added to the Profile dialog.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:297
-#: ../../../../build/work/app/i18n/custmsg.h:951
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:297
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:957
msgid "Now, drag the point on the Profile Dialog to change the Elevation.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:952
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:958
msgid ""
"Note the grade on each side of the point will be displayed at the bottom of "
"the Profile dialog.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:319
-#: ../../../../build/work/app/i18n/custmsg.h:954
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:319
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:960
msgid ""
"After we release the Profile is updated to show the new Elevation and "
"Grade.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmprof.xtr:326
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:119
-#: ../../../../build/work/app/i18n/custmsg.h:957
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmprof.xtr:326
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:119
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:963
msgid "The <Rescale> command will change the size of the selected objects.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:958
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:964
+msgid ""
+"Note: due to technical reasons, the To Scale drop down list is blank. For "
+"this demo it should show 'DEMO'.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:965
msgid "First we will try rescaling by ratio.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:126
-#: ../../../../build/work/app/i18n/custmsg.h:960
-msgid "We are going to make everything 150% bigger.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:967
+msgid "We are going to make everything 150 percent bigger.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:136
-#: ../../../../build/work/app/i18n/custmsg.h:962
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:138
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:969
msgid "Note the track gauge did not change.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:143
-#: ../../../../build/work/app/i18n/custmsg.h:964
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:144
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:971
msgid "Let's try that again.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:965
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:972
msgid "Now we are going to convert from one scale to another.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:154
-#: ../../../../build/work/app/i18n/custmsg.h:967
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:156
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:974
msgid "We will convert everything from N scale to HO scale...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:161
-#: ../../../../build/work/app/i18n/custmsg.h:969
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:163
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:976
msgid "and change the track gauge as well.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:169
-#: ../../../../build/work/app/i18n/custmsg.h:971
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:171
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:978
msgid "Note that the Title of the turnout did not change.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrescal.xtr:177
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrotate.xtr:72
-#: ../../../../build/work/app/i18n/custmsg.h:974
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrescal.xtr:179
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:72
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:981
msgid ""
"The <Rotate> command will pivot the Selected objects. First Click on the "
"pivot point and then drag to Rotate the objects.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:975
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:982
msgid ""
"In this example we will rotate the selected structure about it's center.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrotate.xtr:135
-#: ../../../../build/work/app/i18n/custmsg.h:977
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:135
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:984
msgid ""
-"The <Rotate> command will restrict the rotation to increments of 15° if you "
+"The <Rotate> command will restrict the rotation to increments of 15° if you "
"hold down the <Shift> and <Ctrl> keys.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrotate.xtr:316
-#: ../../../../build/work/app/i18n/custmsg.h:979
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:316
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:986
msgid ""
"There are Rotate options that you can access by Shift-Right-Click command "
"menu and choosing 'Rotate...'.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:980
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:987
msgid ""
"You can rotate the selected object by a fixed rotatation (15, 30, 45, 90, "
"180) either clockwise or counter-clockwise, or by manually entering any "
"angle.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:981
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:988
msgid ""
"The other option is 'Align' which allows you align selected objects with an "
"unselected object. This is useful to align railside buildings with track.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:982
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:989
msgid "Unfortunately, we can not currently demonstrate these features.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrotate.xtr:529
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmruler.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:985
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmrotate.xtr:529
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:14
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:992
msgid ""
"The <Ruler> command draws a Ruler on the layout you can use to measure "
"distances.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmruler.xtr:24
-#: ../../../../build/work/app/i18n/custmsg.h:987
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:24
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:994
msgid "If you press the <Ruler> command again the Ruler is removed.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmruler.xtr:32
-#: ../../../../build/work/app/i18n/custmsg.h:989
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:32
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:996
msgid "But you can place it somewhere else.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmruler.xtr:42
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:173
-#: ../../../../build/work/app/i18n/custmsg.h:992
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmruler.xtr:42
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:173
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:999
msgid "The <Select> command is used to select tracks.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:993
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1000
msgid "Selected tracks can be moved or rotated during the <Select> command.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:994
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1001
msgid "Selected tracks can also be deleted, hidden, listed and exported.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:995
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1002
msgid ""
"When you move the cursor near a track that could be selected, the track is "
-"drawn with think blue lines.\n"
+"drawn with thick blue lines.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:184
-#: ../../../../build/work/app/i18n/custmsg.h:997
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:184
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1004
+msgid ""
+"The Select operates in two modes which are controled by the Options|Command "
+"menu.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:191
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1006
+msgid ""
+"In 'classic' mode, clicking on an object adds it to set of selected "
+"objects.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:197
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1008
+msgid ""
+"In the 'new' mode, clicking on an object deselectes all other objects, "
+"leaving just the newly selected object.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1009
+msgid "Holding down the Ctrl key reverses this behavior.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1010
+msgid "This demo will use the 'new' mode.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1011
+msgid ""
+"There is also an option to the control the behavior of clicking on empty "
+"space: do nothing or deselecting all objects.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:208
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1013
#, fuzzy
msgid "A Left-Click selects a track\n"
msgstr "Выберите трек"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:192
-#: ../../../../build/work/app/i18n/custmsg.h:999
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:216
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1015
msgid ""
"The selected track will have red X's drawn where it is connected to "
"unselected tracks. This indicates where the track will be disconnected if "
"the selected tracks are moved, rotated or deleted.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1000
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1016
msgid "A Ctrl-Left-Click adds tracks to the selection\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:211
-#: ../../../../build/work/app/i18n/custmsg.h:1002
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:235
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1018
msgid "Selecting a selected track re-selects only it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:219
-#: ../../../../build/work/app/i18n/custmsg.h:1004
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:243
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1020
msgid "Selecting off all tracks de-selects them.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:227
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:232
-#: ../../../../build/work/app/i18n/custmsg.h:1007
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:251
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:256
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1023
msgid ""
"To demonstrate Select Connected, first select two tracks at the end of a "
"part to be selected \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:248
-#: ../../../../build/work/app/i18n/custmsg.h:1009
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:272
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1025
msgid ""
"Shift-Left-Click on a track will select all unselected tracks connected to "
"the track. Selection stops at a previously selected track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:260
-#: ../../../../build/work/app/i18n/custmsg.h:1011
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:284
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1027
msgid ""
"Be careful with this because its very easy to select all tracks this way\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:274
-#: ../../../../build/work/app/i18n/custmsg.h:1013
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1029
msgid "The <esc> key will deselect all objects.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:282
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:287
-#: ../../../../build/work/app/i18n/custmsg.h:1016
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:310
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:315
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1032
msgid "Left-Drag is used to select all objects within an area.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:295
-#: ../../../../build/work/app/i18n/custmsg.h:1018
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:323
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1034
msgid "Shift-Left-Drag is used to move selected tracks.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1019
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1035
msgid ""
"When you move selected tracks that are connected to unselected tracks, the "
"tracks will be disconnected. These points are marked by a Red cross on the "
"layout.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1020
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1036
msgid ""
"If the unconnected end point of a track and one being moved are close "
"enough, two circles are displayed, showing where the tracks will be snapped "
"together. \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:313
-#: ../../../../build/work/app/i18n/custmsg.h:1022
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:341
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1038
msgid "Let's move the Main window to see what's going on next\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:320
-#: ../../../../build/work/app/i18n/custmsg.h:1024
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:348
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1040
msgid ""
"Ctrl-Left-Drag rotates the selected tracks about the pivot point (which is "
"where you started the drag)\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:382
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:387
-#: ../../../../build/work/app/i18n/custmsg.h:1027
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:410
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:415
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1043
msgid ""
"Next we select the <Join Tracks> command to demonstrate \"Move To Join\" \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:392
-#: ../../../../build/work/app/i18n/custmsg.h:1029
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:420
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1045
msgid ""
"You can use Shift-Left-Click to select an open endpoint of a selected track "
"to join with an unselected track. \n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1030
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1046
msgid "We'll move the Main window again.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:415
-#: ../../../../build/work/app/i18n/custmsg.h:1032
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:443
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1048
msgid ""
"You then Left-Click on an endpoint of a unselected track to move the "
"selected tracks to join. \n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:430
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:30
-#: ../../../../build/work/app/i18n/custmsg.h:1035
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmselect.xtr:458
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1051
msgid "The <Split> command is used to split and disconnect tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:35
-#: ../../../../build/work/app/i18n/custmsg.h:1037
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:35
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1053
msgid "Simply select the spot on the track you want to split.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1038
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1054
msgid "You cannot split turnouts (unless you hold down the Shift key).\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:48
-#: ../../../../build/work/app/i18n/custmsg.h:1040
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:48
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1056
msgid ""
"If you split at spot that is already an End-Point between two tracks, or "
"split twice at the same spot, the track is disconnected.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:60
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:65
-#: ../../../../build/work/app/i18n/custmsg.h:1043
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:60
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1059
msgid "The <Tunnel> command marks selected tracks as hidden.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1044
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1060
msgid ""
"A tunnel portal is drawn at the boundary between hidden and normal track.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1045
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1061
msgid ""
"How the hidden tracks are drawn (solid, dashed or invisible) is controlled "
"by the Draw EndPts radio button group on the Setup dialog.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:86
-#: ../../../../build/work/app/i18n/custmsg.h:1047
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:86
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1063
msgid ""
"To 'un-hide' a track just Select it again and click the Tunnel button.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmsplit.xtr:100
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmstrtrk.xtr:6
-#: ../../../../build/work/app/i18n/custmsg.h:1050
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmsplit.xtr:100
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1066
msgid ""
"Straight tracks are created by selecting the first End-Point of the track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmstrtrk.xtr:12
-#: ../../../../build/work/app/i18n/custmsg.h:1052
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1068
msgid "Then the other End-Point is dragged to its final postion.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmstrtrk.xtr:20
-#: ../../../../build/work/app/i18n/custmsg.h:1054
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:20
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1070
msgid "The left mouse button is released at the final end postion.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmstrtrk.xtr:27
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtbledg.xtr:23
-#: ../../../../build/work/app/i18n/custmsg.h:1057
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmstrtrk.xtr:27
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:23
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1073
msgid ""
"Table Edges are used to mark the edges of the layout, either for aisles or "
"room walls.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtbledg.xtr:47
-#: ../../../../build/work/app/i18n/custmsg.h:1059
-msgid "A Table Edge is attracted to the ends of other Table Edges.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:47
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1075
+msgid ""
+"A Table Edge is attracted to other objects, unless you hold down the Alt "
+"key.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtbledg.xtr:132
-#: ../../../../build/work/app/i18n/custmsg.h:1061
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:145
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1077
msgid "Table Edges can be modified by dragging on their ends.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtbledg.xtr:180
-#: ../../../../build/work/app/i18n/custmsg.h:1063
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:193
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1079
msgid ""
-"If you hold down the Control key while dragging then the Table Edge will be "
+"Unless you hold down the Alt key while dragging then the Table Edge will be "
"attracted to other objects.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtbledg.xtr:218
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtodes.xtr:6
-#: ../../../../build/work/app/i18n/custmsg.h:1066
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtbledg.xtr:231
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1082
msgid ""
"These examples shows some of the various Turnout Designer windows. Each "
"window defines a different type of turnout.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1067
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1083
msgid ""
"In each window there are a number of parameters to fill in and one or two "
"description lines.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1068
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1084
msgid "You can print the design to check the dimensions before saving them.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtodes.xtr:16
-#: ../../../../build/work/app/i18n/custmsg.h:1070
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:16
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1086
msgid "This is the regular turnout.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1071
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1087
msgid ""
"In addition to the dimensions, you also enter the Title (Manufacturer, "
"Description and Part Number). For Turnouts with Left and Right hand "
"versions there are separate Descriptions and Part Numbers.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1072
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1088
msgid ""
"Some Turnouts and Sectional track are pre-mounted on roadbed. For these "
"parts you can specify the width of the roadbed, the thickness of the lines "
"drawn for the edge of the roadbed and the color.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtodes.xtr:30
-#: ../../../../build/work/app/i18n/custmsg.h:1074
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1090
msgid "The double slip switch is described by only a few parameters.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtodes.xtr:40
-#: ../../../../build/work/app/i18n/custmsg.h:1076
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1092
msgid "The double crossover only needs length and track separation.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtodes.xtr:48
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:30
-#: ../../../../build/work/app/i18n/custmsg.h:1079
-msgid ""
-"Pressing the turnout button displays the Turnout Selection window to let you "
-"choose a turnout to place.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtodes.xtr:48
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:30
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1095
+msgid "We chose the turnout we want to place by clicking on the HotBar.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1080
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:40
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1097
msgid ""
-"Note that once you start to place the turnout on the Main window the Turnout "
-"Selection window disappears. This feature is enabled by the Hide toggle "
-"button on the dialog.\n"
+"You can place the turnout on a arbitrary position on the layout. Left-drag "
+"the turnout into place...\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1099
+msgid "We are moving the Turnout by dragging on the 'Active End Point'\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1100
+msgid "We can change the 'Active End Point' by a Shift-Left-Click\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:38
-#: ../../../../build/work/app/i18n/custmsg.h:1082
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:75
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1102
+msgid "Notice the Turnout has rotated to the next End Point.\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:80
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1104
msgid ""
-"You can place the turnout on a arbitrary position on the layout. Left-drag "
-"the turnout into place...\n"
+"If we continue to Shift-Left-Click 2 more times, we will return to the "
+"original position.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:85
-#: ../../../../build/work/app/i18n/custmsg.h:1084
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:123
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1106
msgid "Then you can rotate the turnout by Right dragging.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1085
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1107
msgid ""
"You can also use Shift-Right-Click to display a popup menu that lets you "
"rotate the Turnout by specific angles.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:136
-#: ../../../../build/work/app/i18n/custmsg.h:1087
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:174
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1109
msgid ""
"When you are satisfied with the position and orientation of the turnout "
"press Space bar or the Return key on the keyboard to finish placing the "
"turnout.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1088
-msgid ""
-"Pressing the Close button on the Turnout dialog will end the <Turnout> "
-"command as well as placing the turnout.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:146
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:189
-#: ../../../../build/work/app/i18n/custmsg.h:1091
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:182
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:225
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1112
msgid ""
"If you drag along an existing track the new turnout will be attached to the "
"track.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1092
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1113
msgid ""
"Note that the status line tells you the number of End-Points that would be "
"connected and, the maximum displacement of the End-Points. This will be "
"useful when building complex track, as we will see later.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:220
-#: ../../../../build/work/app/i18n/custmsg.h:1094
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:256
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1115
msgid ""
"By moving the cursor from one side to the other of the track centerline you "
-"can flip the turnout 180ᅵ.\n"
+"can flip the turnout 180°.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:236
-#: ../../../../build/work/app/i18n/custmsg.h:1096
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:272
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1117
msgid ""
"If you try to drag across another turnout the new turnout will placed at the "
"nearest End-Point of the existing turnout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:299
-#: ../../../../build/work/app/i18n/custmsg.h:1098
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:335
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1119
msgid ""
"When you press Space or Return while the turnout is on a track, the track "
"will be split and the new turnout attached automatically.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:307
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:366
-#: ../../../../build/work/app/i18n/custmsg.h:1101
-msgid "Pressing Close ends the <Turnout> command.\n"
-msgstr ""
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:372
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:21
-#: ../../../../build/work/app/i18n/custmsg.h:1104
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:343
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtosel.xtr:408
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:21
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1123
msgid "Sometimes it's useful to modify turnouts triming one of the ends.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1105
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1124
msgid "We use the <Split> command for this.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:28
-#: ../../../../build/work/app/i18n/custmsg.h:1107
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:28
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1126
msgid "Normally, if we try to Split a turnout we get an error message.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:37
-#: ../../../../build/work/app/i18n/custmsg.h:1109
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:37
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1128
msgid "Hold down the Shift key and try again.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:52
-#: ../../../../build/work/app/i18n/custmsg.h:1111
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:52
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1130
msgid ""
"The end of the turnout has been replaced by a piece of straight flex track "
"which we can modify.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:63
-#: ../../../../build/work/app/i18n/custmsg.h:1113
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:63
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1132
msgid "We can try splitting the diverging leg.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:74
-#: ../../../../build/work/app/i18n/custmsg.h:1115
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:74
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1134
msgid ""
"Notice that the tail of the diverging leg has been changed to a curved "
"track...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:84
-#: ../../../../build/work/app/i18n/custmsg.h:1117
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:84
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1136
msgid "and a straight track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtotrim.xtr:92
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:12
-#: ../../../../build/work/app/i18n/custmsg.h:1120
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtotrim.xtr:92
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:12
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1139
msgid ""
-"This example show how to layout a yard using the <Turnout> and <Parallel> "
-"commands.\n"
+"This example show how to layout a yard using Turnouts from the HotBar and "
+"the <Parallel> command.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:17
-#: ../../../../build/work/app/i18n/custmsg.h:1122
-msgid ""
-"You can resize and move the Turnout Selection dialog if it obscures the "
-"other windows.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:19
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1141
+msgid "We'll choose a Turnout from the HotBar\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1123
-msgid "First we place a turnout on the main line.\n"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1142
+msgid "Then we place the Turnout on the main line.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:35
-#: ../../../../build/work/app/i18n/custmsg.h:1125
-msgid "Next extend the turnout with the <Modify> command.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:38
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1144
+msgid "Next extend the Turnout with the <Modify> command.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:46
-#: ../../../../build/work/app/i18n/custmsg.h:1127
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:49
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1146
msgid ""
"Now create a track parallel to the main line. Make sure the separation is "
"reasonable for your scale.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:62
-#: ../../../../build/work/app/i18n/custmsg.h:1129
-msgid "And place a turnout to connect the new track.\n"
-msgstr ""
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:65
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1148
+#, fuzzy
+msgid "And place a Turnout to connect the new track.\n"
+msgstr "РазмеÑтить Ñтрелку или ÑоÑтавной трек"
-#: ../../../../build/work/app/i18n/custmsg.h:1130
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1149
msgid "We'll zoom in here to see what's going on.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:78
-#: ../../../../build/work/app/i18n/custmsg.h:1132
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:83
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1151
msgid ""
-"Notice how we control which way the turnout is facing by moving the mouse "
+"Notice how we control which way the Turnout is facing by moving the mouse "
"across the center line of the track.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:94
-#: ../../../../build/work/app/i18n/custmsg.h:1134
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:99
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1153
msgid ""
-"The Status bar displays the number of auto-connections that will be made and "
-"the maximum offset.\n"
+"The Status bar displays the number of auto-connections that will be made (3) "
+"and the maximum offset (0.000).\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1135
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1154
msgid ""
-"XTrackCAD adjusts the turnout position for the best fit to minimize any "
+"XTrackCAD adjusts the Turnout position for the best fit to minimize any "
"connection offset\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:106
-#: ../../../../build/work/app/i18n/custmsg.h:1137
-msgid "Note that placing the turnout splits the parallel track.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:112
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1156
+msgid "Note that placing the Turnout splits the parallel track.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1138
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1157
msgid "We have to delete the leftover piece by Selecting and Deleting it.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:120
-#: ../../../../build/work/app/i18n/custmsg.h:1140
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:126
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1159
msgid "Repeat the process for the other tracks in the yard.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:149
-#: ../../../../build/work/app/i18n/custmsg.h:1142
-msgid "For the last track we will join with a curve instead of a turnout.\n"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:158
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1161
+msgid "For the last track we will join with a curve instead of a Turnout.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:185
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrkwid.xtr:91
-#: ../../../../build/work/app/i18n/custmsg.h:1145
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtoyard.xtr:194
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:91
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1164
msgid "We can indicate the mainline by making the rails wider.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1146
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1165
msgid "First we select the mainline tracks...\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrkwid.xtr:128
-#: ../../../../build/work/app/i18n/custmsg.h:1148
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:128
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1167
msgid "And then select Medium Tracks from the Edit menu.\n"
msgstr ""
-#: ../../../../build/work/app/i18n/custmsg.h:1149
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1168
msgid "We can't show the Edit menu, but we can show the effect.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrkwid.xtr:137
-#: ../../../../build/work/app/i18n/custmsg.h:1151
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:137
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1170
msgid "We can make the rail thicker by selecting Thick Tracks.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrkwid.xtr:148
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrntab.xtr:6
-#: ../../../../build/work/app/i18n/custmsg.h:1154
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrkwid.xtr:148
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:6
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1173
msgid ""
"Turntables are created by specifying the radius in a dialog box on the "
"Status Bar. The radius in the dialog can be changed before proceeding.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrntab.xtr:15
-#: ../../../../build/work/app/i18n/custmsg.h:1156
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:15
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1175
msgid "Then the turntable is dragged to its final location.\n"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtrntab.xtr:22
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:317
-#: ../../../../build/work/app/i18n/custmsg.h:1159
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/demos/dmtrntab.xtr:22
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:433
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1178
msgid "Introduction"
msgstr "Ð’Ñтупление"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:318
-#: ../../../../build/work/app/i18n/custmsg.h:1161
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:434
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1180
msgid "Mouse Actions"
msgstr "Ð¡Ð¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¼Ñ‹ÑˆÐ¸"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:319
-#: ../../../../build/work/app/i18n/custmsg.h:1163
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:435
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1182
msgid "Dialogs"
msgstr "Диалоговые окна"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:320
-#: ../../../../build/work/app/i18n/custmsg.h:1165
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:436
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1184
msgid "Moving about"
msgstr "ПеремещениÑ"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:321
-#: ../../../../build/work/app/i18n/custmsg.h:1167
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:437
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1186
msgid "Describe and Select"
msgstr "ПодпиÑÑŒ и выбор"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:322
-#: ../../../../build/work/app/i18n/custmsg.h:1169
-msgid "Describe"
-msgstr "ПодпиÑÑŒ"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:324
-#: ../../../../build/work/app/i18n/custmsg.h:1173
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:440
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1192
msgid "Simple tracks"
msgstr "ПроÑтые трек"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:325
-#: ../../../../build/work/app/i18n/custmsg.h:1175
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:441
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1194
msgid "Straight tracks"
msgstr "ПрÑмые треки"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:326
-#: ../../../../build/work/app/i18n/custmsg.h:1177
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:442
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1196
msgid "Curved tracks"
msgstr "Кривые треки"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:327
-#: ../../../../build/work/app/i18n/custmsg.h:1179
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:443
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1198
msgid "Circles"
msgstr "ОкружноÑти"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:328
-#: ../../../../build/work/app/i18n/custmsg.h:1181
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:444
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1200
msgid "Turntables"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:329
-#: ../../../../build/work/app/i18n/custmsg.h:1183
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:445
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1202
msgid "Modifying tracks"
msgstr "Изменение треков"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:330
-#: ../../../../build/work/app/i18n/custmsg.h:1185
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:446
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1204
msgid "Modifying end points "
msgstr "Изменение конечных точек "
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:331
-#: ../../../../build/work/app/i18n/custmsg.h:1187
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:447
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1206
msgid "Extending"
msgstr "РаÑширение"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:332
-#: ../../../../build/work/app/i18n/custmsg.h:1189
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:448
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1208
msgid "Medium and Thick Tracks"
msgstr "Средние и толÑтые треки"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:333
-#: ../../../../build/work/app/i18n/custmsg.h:1191
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:449
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1210
msgid "Joining Tracks"
msgstr "Соединение треков"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:334
-#: ../../../../build/work/app/i18n/custmsg.h:1193
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:450
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1212
msgid "Straight to straight"
msgstr "ПрÑÐ¼Ð°Ñ Ðº прÑмой"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:335
-#: ../../../../build/work/app/i18n/custmsg.h:1195
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:451
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1214
msgid "Curve to straight"
msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ðº прÑмой"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:336
-#: ../../../../build/work/app/i18n/custmsg.h:1197
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:452
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1216
msgid "Circle to circle"
msgstr "Круг к кругу"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:337
-#: ../../../../build/work/app/i18n/custmsg.h:1199
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:453
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1218
msgid "Joining to turntables"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:338
-#: ../../../../build/work/app/i18n/custmsg.h:1201
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:454
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1220
msgid "Easements"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:339
-#: ../../../../build/work/app/i18n/custmsg.h:1203
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:455
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1222
msgid "Abutting tracks"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:340
-#: ../../../../build/work/app/i18n/custmsg.h:1205
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:456
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1224
msgid "Move to Join"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:342
-#: ../../../../build/work/app/i18n/custmsg.h:1209
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:458
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1228
msgid "Select and Placement"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:343
-#: ../../../../build/work/app/i18n/custmsg.h:1211
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:459
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1230
msgid "Building a yard throat."
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:344
-#: ../../../../build/work/app/i18n/custmsg.h:1213
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:460
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1232
msgid "Designing turnouts"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:345
-#: ../../../../build/work/app/i18n/custmsg.h:1215
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:461
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1234
msgid "Group and Ungroup"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:346
-#: ../../../../build/work/app/i18n/custmsg.h:1217
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:462
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1236
msgid "Triming Turnout Ends"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:347
-#: ../../../../build/work/app/i18n/custmsg.h:1219
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:463
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1238
msgid "Handlaid Turnouts"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:348
-#: ../../../../build/work/app/i18n/custmsg.h:1221
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:464
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1240
msgid "Elevations and Profile"
msgstr "Ð’Ñ‹Ñоты и профиль"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:349
-#: ../../../../build/work/app/i18n/custmsg.h:1223
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:465
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1242
msgid "Elevations"
msgstr "Ð’Ñ‹Ñоты"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:351
-#: ../../../../build/work/app/i18n/custmsg.h:1227
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:467
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1246
msgid "Misc track commands"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:352
-#: ../../../../build/work/app/i18n/custmsg.h:1229
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:468
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1248
msgid "Delete and Undo"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:353
-#: ../../../../build/work/app/i18n/custmsg.h:1231
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:469
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1250
msgid "Splitting and Tunnels"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:355
-#: ../../../../build/work/app/i18n/custmsg.h:1235
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:471
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1254
msgid "Helix tracks"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:356
-#: ../../../../build/work/app/i18n/custmsg.h:1237
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:472
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1256
msgid "Exception Tracks"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:358
-#: ../../../../build/work/app/i18n/custmsg.h:1241
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:474
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1260
msgid "Connect and Tighten - a siding"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:359
-#: ../../../../build/work/app/i18n/custmsg.h:1243
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:475
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1262
msgid "Connect and Tighten - figure-8"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:360
-#: ../../../../build/work/app/i18n/custmsg.h:1245
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:476
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1264
msgid "Other commands"
msgstr "ОÑтальные команды"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:362
-#: ../../../../build/work/app/i18n/custmsg.h:1249
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:478
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1268
msgid "Table Edges"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:364
-#: ../../../../build/work/app/i18n/custmsg.h:1253
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:480
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1272
msgid "Dimension Lines"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:365
-#: ../../../../build/work/app/i18n/custmsg.h:1255
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:481
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1274
msgid "Lines"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:366
-#: ../../../../build/work/app/i18n/custmsg.h:1257
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:482
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1276
msgid "Poly-Shapes"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:367
-#: ../../../../build/work/app/i18n/custmsg.h:1259
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:483
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1278
msgid "Modifying Poly-Shapes"
msgstr ""
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:370
-#: ../../../../build/work/app/i18n/custmsg.h:1265
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/lib/xtrkcad.xtq:486
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1284
#, fuzzy
msgid "Control Panels"
msgstr "Цвета Ñлементов управлениÑ"
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:9
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1288
+#, fuzzy
+msgid "Test Turnout Designer\n"
+msgstr "%s Редактор Ñтрелок"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1289
+msgid ""
+"This demo invokes each Turnout Designer and generates the turnout "
+"definition.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1290
+msgid ""
+"Each definition is placed on the layout and Regression checks that each "
+"matches.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1291
+#, fuzzy
+msgid "Instructions:\n"
+msgstr "Ð’Ñтупление"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1292
+msgid " Run xtrkcad with the regression option set to 2:\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1293
+msgid " xtrkcad -d regression=2\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1294
+msgid ""
+" Select the recording (Macro|Playback) from $(SRCDIR)/app/tools/"
+"TurnoutDesigner.xtr\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1295
+#, fuzzy
+msgid " \n"
+msgstr " dpi"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1296
+msgid ""
+" Playback the demo. You probably want to choose a faster playback Speed.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1297
+msgid "Check the log file (Linux: stdout, Windows: xtclog.txt)\n"
+msgstr ""
+
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:497
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:594
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:867
+#. i18n: C:/Users/mf/Documents/XTrackCAD/src/v5_3_0_beta1/app/tools/TurnoutDesigner.xtr:913
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1299
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1302
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1305
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1308
+msgid "-----------------------------------------------------\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1300
+msgid "Create an instance of each turnout\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1303
+msgid "Run Regression Checks\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1306
+msgid "Remove the parameter definitions\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:9
+#, fuzzy
+msgid "Invokes online help for this dialog"
+msgstr "Вызывает online помощь по Ñтому окну"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:10
+msgid "Cancels this command"
+msgstr "Отменить Ñту команду"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:11
+msgid "Closes the dialog"
+msgstr "Закрыть окно"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:12
+#, fuzzy
+msgid "About program dialog"
+msgstr "О программе"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:13
+#, fuzzy
+msgid "Move selected object to top"
+msgstr "ПеремеÑтить выбранные объекты наверх"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:14
+#, fuzzy
+msgid "Raise or lower all selected tracks"
+msgstr "ПоднÑÑ‚ÑŒ или опуÑтить вÑе выбранные треки"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:15
+#, fuzzy
+msgid "Show a protractor"
+msgstr "Добавить линейку"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:16
+msgid "Turn magnetic snap on or off"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:18
+#, fuzzy
+msgid "Move selected object to bottom"
+msgstr "ПеремеÑтить выбранные объекты вниз"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:19
+msgid "Create a section of track for automation"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:20
+#, fuzzy
+msgid "Edit a block definition "
+msgstr "Редактировать блок %d"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:21
+msgid "Create a new Car/Loco description"
+msgstr "Создать новое опиÑание машины"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:22
+msgid "Manage your Car and Loco Inventory"
+msgstr "УправлÑÑ‚ÑŒ вашими машинами"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:23
+msgid "Create track circle from center"
+msgstr "Добавить круговой трек от центра"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:24
+msgid "Create fixed radius track circle"
+msgstr "Добавить круговой трек по радиуÑу"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:25
+msgid "Set Circle Track creation mode"
+msgstr "Выбрать тип круговых треков"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:26
+msgid "Create track circle from tangent"
+msgstr "Добавить круговой трек по каÑательной"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:27
+msgid "Removes elevation from Selected tracks"
+msgstr "Убрать выÑоту у выбранных треков"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:28
+msgid "Copy objects to clipboard and duplicate them in exactly the same place"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:29
+msgid "Command Options dialog"
+msgstr "Окно команд"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:30
+msgid "Controls colors"
+msgstr "Цвета Ñлементов управлениÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:31
+msgid "Connect two tracks"
+msgstr "Соединить два трека"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:32
+msgid "Create a control for layout automation"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:33
+#, fuzzy
+msgid "Select control element to create"
+msgstr "Выберите второй конец Ð´Ð»Ñ ÑоединениÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:34
+msgid "Manage control elements"
+msgstr "Изменить Ñлементы управлениÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:35
+#, fuzzy
+msgid "Set Convert mode"
+msgstr "Выбрать тип изогнутых треков"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:36
+msgid "Convert from Fixed Track to Cornu"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:37
+msgid "Convert from Cornu and Bezier to Fixed Track"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:38
+msgid "Copy selected objects to clipboard"
+msgstr "Скопировать выбранные объекты в буфер обмена"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:39
+#, fuzzy
+msgid "Create Cornu track"
+msgstr "Добавить изогнутый трек"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:40
+msgid "Create curved track from center"
+msgstr "Добавить изогнутый трек от центра"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:41
+msgid "Create curved track from chord"
+msgstr "Добавить изогнутый трек по хорде"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:42
+msgid "Create curved track from end-point"
+msgstr "Добавить изогнутый трек от конечной точки"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:43
+msgid "Create Bezier track"
+msgstr "Добавить трек Безье"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:44
+msgid "Set Curve Track creation mode"
+msgstr "Выбрать тип изогнутых треков"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:45
+msgid "Create curved track from tangent"
+msgstr "Добавить изогнутый трек по каÑательной"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:46
+msgid "Manipulate Custom designer entries"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:47
+msgid "Moves selected objects to clipboard"
+msgstr "ПеремеÑтить выбранные треки в буфер обмена"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:48
+msgid "Delete objects"
+msgstr "Удалить объекты"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:49
+msgid "Playback demos"
+msgstr "ВоÑпроизведение демонÑтраций"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:50
+msgid "Change Object Properties"
+msgstr "Изменить ÑвойÑтва объекта"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:51
+#, fuzzy
+msgid "Change to properties mode"
+msgstr "Изменить ÑвойÑтва объекта"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:52
+msgid "Deselect all selected objects"
+msgstr "Убрать выделение Ñо вÑех объектов"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:53
+msgid "Change Display parameters"
+msgstr "Изменить параметры отображениÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:54
+msgid "Create benchwork"
+msgstr "Создать доÑку"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:55
+msgid "Create a box"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:56
+msgid "Set Circle drawing command"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:57
+msgid "Create a circle"
+msgstr "Добавить окружноÑÑ‚ÑŒ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:58
+msgid "Draw a circle line from center"
+msgstr "ÐариÑовать окружноÑÑ‚ÑŒ к центру"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:59
+msgid "Draw a fixed radius circle line"
+msgstr "ÐариÑовать фикÑированный Ñ€Ð°Ð´Ð¸ÑƒÑ Ð¾ÐºÑ€ÑƒÐ¶Ð½Ð¾Ñти"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:60
+msgid "Draw a circle line from tangent"
+msgstr "ÐариÑовать окружноÑÑ‚ÑŒ к краю"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:61
+msgid "Set Curve drawing command"
+msgstr "УÑтановить команду риÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐšÑ€Ð¸Ð²Ð¾Ð¹"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:62
+msgid "Create a curved line"
+msgstr "Создать кривую линию"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:63
+msgid "Create a curved line from End"
+msgstr "Создать кривую линию от каÑательной"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:64
+msgid "Create a curved line from center"
+msgstr "Создать кривую линию от центра"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:65
+msgid "Create a curved line from chord"
+msgstr "Создать кривую линию по хорде"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:66
+msgid "Create a curved line from tangent"
+msgstr "Создать кривую линию от краÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:67
+msgid "Create a Bezier line"
+msgstr "Создать кривую Безье"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:68
+msgid "Create a dimension line"
+msgstr "Создать выноÑку Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:69
+msgid "Create a filled box"
+msgstr "Создать закрашенный прÑмоугольник"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:70
+msgid "Create a filled circle"
+msgstr "Создать закрашенный круг"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:71
+msgid "Draw a filled circle from center"
+msgstr "ÐариÑовать закрашенный круг к центру"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:72
+msgid "Draw a fixed radius filled circle"
+msgstr "ÐариÑовать закрашенный круг Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼ радиуÑом"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:73
+msgid "Draw a filled circle from tangent"
+msgstr "ÐариÑовать закрашенный круг к краю"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:74
+#, fuzzy
+msgid "Create a polygon"
+msgstr "Создать полилинию"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:75
+msgid "Create a filled polygon"
+msgstr "Создать закрашенный многоугольник"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:76
+msgid "Create a polyline"
+msgstr "Создать полилинию"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:77
+msgid "Create a straight line"
+msgstr "Создать прÑмую линию"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:78
+msgid "Set Line drawing command"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:79
+msgid "Set Shape drawing command"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:80
+msgid "Draw table edge"
+msgstr "РиÑовать край Ñтола"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:81
+msgid "Easement menu"
+msgstr "Меню упрощений"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:83
+msgid "Generate a Parts List of selected objects"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:84
+msgid "Set Import/Export mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:85
+#, fuzzy
+msgid "Export an .xti file"
+msgstr "ЭкÑпортировать в .xti файл"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:86
+#, fuzzy
+msgid "Export a Bitmap image"
+msgstr "ЭкÑпорт в изображение"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:87
+msgid "Export a DXF file"
+msgstr "ЭкÑпортировать в DXF файл"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:88
+#, fuzzy
+msgid "Export an SVG file"
+msgstr "ЭкÑпортировать в DXF файл"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:90
+msgid "Flip selected objects"
+msgstr "Развернуть выбранные объекты"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:91
+msgid "Adjust snap grid"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:92
+msgid "Enable snap grid"
+msgstr "Прилипать к Ñетке"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:93
+msgid "Show snap grid"
+msgstr "Показать Ñетку"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:94
+msgid "Create a structure from a Group of objects"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:95
+msgid "Create a hand-laid turnout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:96
+msgid "Create a track helix"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:97
+#, fuzzy
+msgid "Import an .xti file"
+msgstr "Ипортировать .xti файл"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:98
+#, fuzzy
+msgid "Import an .xti file as a Module"
+msgstr "Ипортировать .xti файл"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:99
+msgid "Join two tracks"
+msgstr "Соединить два трека"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:100
+msgid "Join two lines or polylines"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:101
+msgid "Set Join mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:102
+msgid "Change Layers"
+msgstr "Изменить Ñлои"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:103
+msgid "Selects the current drawing layer"
+msgstr "Выбрать текущий Ñлой"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:104
+msgid "Layout parameters"
+msgstr "Параметры проекта"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:106
+msgid "Show/Hide Map Window"
+msgstr "Показать/СпрÑтать окно миникарты"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:107
+#, fuzzy
+msgid "Select Measurement Tool"
+msgstr "Сохранить текущий Ñлой"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:108
+msgid "Modify or extend a track"
+msgstr "Изменить или раÑширить трек"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:109
+msgid "Change To modify mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:110
+msgid "Move selected objects"
+msgstr "Двигать выбранные объекты"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:111
+msgid "Move a label"
+msgstr "ПеремеÑтить подпиÑÑŒ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:112
+msgid "Move selected objects to current layer"
+msgstr "ПеремеÑтить выбранные объекты на текущий Ñлой"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:114
+#, fuzzy
+msgid "Print a bitmap"
+msgstr "Печать изображениÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:115
+#, fuzzy
+msgid "Pan or zoom the layout"
+msgstr "Перемещение или маÑштабирование"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:116
+msgid "Change to zoom/pan mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:117
+msgid "Create a parallel track"
+msgstr "Добавить параллельный трек"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:118
+#, fuzzy
+msgid "Create a parallel line"
+msgstr "Добавить параллельный трек"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:119
+#, fuzzy
+msgid "Set Parallel mode"
+msgstr "Параллель"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:120
+msgid "Register"
+msgstr "РегиÑтрациÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:121
+msgid "Copy objects from clipboard"
+msgstr "Скопировать объекты из буфера обмена"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:122
+msgid "Perferences dialog"
+msgstr "Окно ÑвойÑтв"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:123
+msgid "Display prices of turnouts, sectional tracks and structures"
+msgstr "Показать цены Ñтрелок, ÑоÑтавных треков и Ñтруктур"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:124
+msgid "Print the layout"
+msgstr "Ðапечатать Ñлой"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:125
+#, fuzzy
+msgid "Loads and unloads parameter files into/from toolbar"
+msgstr "Загрузить или выгрузить файлы параметров"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:126
+msgid "Elevation Profile Command"
+msgstr "Команды Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ð²Ñ‹Ñоты"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:128
+msgid "Command recorder"
+msgstr "ЗапиÑÑŒ команд"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:130
+msgid "Update selected Turnout and Structure definitions"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:131
+msgid "Rescale selected objects"
+msgstr "Изменить маÑштаб выбранных объектов"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:132
+msgid "Rotate selected object(s)"
+msgstr "Повернуть выбранные объекты"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:133
+msgid "Show a ruler"
+msgstr "Добавить линейку"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:134
+msgid "Select objects"
+msgstr "Выбрать объекты"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:135
+#, fuzzy
+msgid "Change To Select Mode"
+msgstr "Изменить маÑштаб"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:136
+msgid "Selects all objects on the layout"
+msgstr "Выбрать вÑе объекты на Ñтом Ñлое"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:137
+msgid "Selects all objects in the current Layer"
+msgstr "Выбрать вÑе объекты на текущем Ñлое"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:138
+msgid "Choose objects by Index number"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:139
+msgid "Invert current selection"
+msgstr "Инвертировать выделение"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:140
+#, fuzzy
+msgid "Configure the Printer"
+msgstr "Центр кривой"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:141
+msgid "Set Split mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:142
+msgid "Split a track"
+msgstr "Разделить трек"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:143
+msgid "Split a straight, curved, circle, polygon or polyline Draw Object "
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:144
+msgid "Select stranded (unconnected) track pieces"
+msgstr "Выбрать проблемные (неÑоединённые) чаÑти треков"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:145
+msgid "Create a sensor (ie. a occupancy detector or a toggle switch)"
+msgstr "Создать ÑенÑор (Ñ‚.е. детектор Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ переключатель)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:146
+msgid "Create a signal for train control"
+msgstr "Добавить Ñигнал Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ÐµÐ·Ð´Ð¾Ð¼"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:147
+msgid "Choose which commands are sticky"
+msgstr "Выберите какие команды будут прилипать"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:148
+msgid "Create straight track"
+msgstr "Добавить прÑмой трек"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:149
+msgid "Place a structure on the layout"
+msgstr "РазмеÑтить Ñтруктуру на Ñлое"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:150
+msgid "Create a switchmotor for turnout control"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:151
+msgid "Edit a switchmotor definition"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:152
+msgid "Enter text on the layout"
+msgstr "ÐапиÑать текÑÑ‚ на рабочую облаÑÑ‚ÑŒ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:153
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:612
+msgid "Controls the size of the entered text"
+msgstr "УÑтанавливает размер вводимого текÑта"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:155
+msgid "Tip of the Day window"
+msgstr "Совет днÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:157
+msgid "Change To Run Trains Mode"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:158
+msgid "Pause/Resume Trains"
+msgstr "ОÑтановить/ЗапуÑтить поезда"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:159
+msgid "Place a car on the layout"
+msgstr "Добавить машину на Ñлой"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:160
+msgid "Exit Trains"
+msgstr "Выйти из поездов"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:161
+msgid "Trim a line, circle or polyline Draw Object using a second Object"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:162
+msgid "Hide/Unhide a track"
+msgstr "СпрÑтать/Показать треки"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:163
+msgid "Make/Unmake a track a bridge"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:164
+msgid "Place a turnout or sectional track"
+msgstr "РазмеÑтить Ñтрелку или ÑоÑтавной трек"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:165
+msgid "Create a new turnout definition"
+msgstr "Создать новую Ñтрелку"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:166
+msgid "Place a turntable"
+msgstr "УÑтановить разворотный рельÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:167
+msgid "Updates old source files with 3 part titles"
+msgstr "Обновить Ñтарые файлы Ñ‚Ñ€ÐµÐ¼Ñ Ð½Ð¾Ð²Ñ‹Ð¼Ð¸ заголовками"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:169
+msgid "Ungroup objects"
+msgstr "Разгруппировать объекты"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:170
+msgid "Draw tracks with thin lines"
+msgstr "РиÑовать треки тонкими линиÑми"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:171
+msgid "Draw tracks with medium lines"
+msgstr "РиÑовать треки Ñредними линиÑми"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:172
+msgid "Draw tracks with thick lines"
+msgstr "РиÑовать треки толÑтыми линиÑми"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:173
+msgid "Change drawing scale"
+msgstr "Изменить маÑштаб риÑованиÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:174
+#, fuzzy
+msgid "Zoom to Fit"
+msgstr "Отдалить"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:175
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:206
+msgid "Zoom in"
+msgstr "Приблизить"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:176
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:207
+msgid "Zoom out"
+msgstr "Отдалить"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:180
+#, fuzzy
+msgid "Curved Fixed"
+msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:181
+#, fuzzy
+msgid "Preferred Radius"
+msgstr "Ð Ð°Ð´Ð¸ÑƒÑ Ð¾ÐºÑ€ÑƒÐ¶Ð½Ð¾Ñти"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:182
+#, fuzzy
+msgid "Modify Draw"
+msgstr "Изменить трек"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:189
+#, fuzzy
+msgid "Rotation Angle"
+msgstr "Угол Ñправа"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:190
+#, fuzzy
+msgid "Rot Center X"
+msgstr "Центр: X,Y"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:191
+#, fuzzy
+msgid "Rot Center Y"
+msgstr "Центр: X,Y"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:193
+msgid "File Menu"
+msgstr "Файл"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:194
+msgid "Save layout"
+msgstr "Сохранить проект"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:195
+msgid "Save layout under a new name "
+msgstr "Сохранить проект под другим именем "
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:196
+msgid "New layout"
+msgstr "Ðовый проект"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:197
+msgid "Generate parts list"
+msgstr "Создать ÑпиÑок компонентов"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:198
+msgid "Load a layout"
+msgstr "Загрузить проект"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:199
+#, fuzzy
+msgid "Manage Parameter Files"
+msgstr "Файлы параметров"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:200
+#, fuzzy
+msgid "Print layout"
+msgstr "Ðапечатать Ñлой"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:201
+msgid "Exit the program"
+msgstr "Выйти из программы"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:202
+msgid "Revert to last saved state of layout plan"
+msgstr "СброÑить вÑÑ‘ до поÑледнего Ñохранённого ÑоÑтоÑниÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:203
+#, fuzzy
+msgid "Printer Setup"
+msgstr "ÐаÑтройки печати"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:204
+msgid "Edit menu"
+msgstr "Правка"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:205
+msgid "Redraw layout"
+msgstr "ПерериÑовать Ñлой"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:208
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:211
+msgid "Tools menu"
+msgstr "Меню ИнÑтрументы"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:209
+msgid "View menu"
+msgstr "Меню Вид"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:210
+msgid "Toolbar configuration"
+msgstr "ÐаÑтройки тулбара"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:212
+msgid "Options menu"
+msgstr "Меню Опций"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:213
+msgid "Playback/Record commands"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:214
+msgid "Window menu"
+msgstr "Меню Окна"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:215
+msgid "Help menu"
+msgstr "Меню Помощь"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:216
+msgid "Recent error messages and explanations"
+msgstr "ПоÑледние ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках и объÑÑнениÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:217
+msgid "Move Hot Bar left"
+msgstr "ПеремеÑтить панель подÑказок влево"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:218
+msgid "Move Hot Bar right"
+msgstr "ПеремеÑтить панель подÑказок вправо"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:219
+msgid "Total track count"
+msgstr "Общее кол-во треков"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:220
+msgid "X Position of cursor"
+msgstr "X координата курÑора"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:221
+msgid "Y Position of cursor"
+msgstr "Y координата курÑора"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:222
+msgid "Drawing scale"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:223
+msgid "Message and status line"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:224
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:225
+msgid "Main layout canvas"
+msgstr "Главный Ñлой"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:226
+msgid "Main drawing canvas"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:227
+msgid "Command buttons"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:228
+msgid "Menus"
+msgstr "Меню"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:229
+msgid "Tile, Filename and Window Manager buttons"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:230
+msgid "Turnout and Structure Hot Bar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:231
+msgid "Active layer list and layer buttons"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:232
+msgid "Map window"
+msgstr "Окно миникарты"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:233
+msgid "This is the portion of the layout shown in the Main Window canvas"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:234
+msgid "Raise or Lower all Selected Track"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:235
+msgid "Name of block"
+msgstr "Ð˜Ð¼Ñ Ð±Ð»Ð¾ÐºÐ°"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:236
+msgid "Script that the block will run"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:237
+msgid "List of tracks in the Block"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:238
+msgid "Add or Update car object"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:239
+msgid "Manufacturer name"
+msgstr "Ðазвание производителÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:242
+msgid "Is the Car a Locomotive?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:243
+msgid "Part Number and Description"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:244
+msgid "Manufacturer Part Number"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:245
+msgid "Use the Selected figure as the car image"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:246
+msgid "Use the default figure as the car image"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:247
+msgid "Optional description of the Car Part"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:248
+msgid "Flip car image"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:249
+msgid "Display Car Item information or reporting marks and dimensions"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:250
+msgid "Full Roadname"
+msgstr "Полное Ð¸Ð¼Ñ Ð¿ÑƒÑ‚Ð¸"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:251
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:252
+msgid "Car Type"
+msgstr "Тип вагона"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:253
+msgid "Reporting Marks (Roadname abbreviation)"
+msgstr "Метки отчёта (аббревиатура пути)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:254
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:489
+msgid "Car Number"
+msgstr "Ðомер вагона"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:255
+msgid "Car body Color"
+msgstr "Цвет вагона"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:256
+msgid "Length of car body"
+msgstr "Длина вагона"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:257
+msgid "Width of car body"
+msgstr "Ширина вагона"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:258
+msgid "Distance between Trucks "
+msgstr "РаÑÑтоÑние между колёÑами "
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:259
+msgid "Distance Trucks are displaced along Car"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:260
+msgid "Coupler are mounted on body or truck"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:261
+msgid "Overall Coupled Length"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:262
+msgid "Coupler Length from end of car"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:263
+msgid "Diagram of Car"
+msgstr "Схема вагона"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:264
+msgid "Item Index Number"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:265
+msgid "Original Purchase Price"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:267
+msgid "Condition of car"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:268
+#, fuzzy
+msgid "Original Purchase Date - yyyymmdd"
+msgstr "Дата покупки"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:269
+#, fuzzy
+msgid "Last Service Date - yyyymmdd"
+msgstr "Дата поÑледнего обÑлуживаниÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:270
+msgid "Number of identical cars to be entered"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:271
+msgid "Do all the cars have the same Number?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:272
+msgid "Notes about the car"
+msgstr "Заметки об Ñтом вагоне"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:273
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:274
+msgid "Create a new car Part or Prototype definitions"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:275
+msgid "Finds the selected Car Item on the layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:276
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:277
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:278
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:279
+msgid "Sort the Item list"
+msgstr "Сортировать ÑпиÑок"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:281
+msgid "Edit the selected Car Item"
+msgstr "Изменить выбранные машины"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:282
+msgid "Add a new Car Item"
+msgstr "Добавить новую машину"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:283
+msgid "Delete from Inventory or return to Shelf"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:284
+msgid "Import a Car Item .csv file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:285
+msgid "Export a Car Item .csv file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:286
+msgid "Create a text list of the Car Items"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:287
+msgid "Specifies the radius of the circle track"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:288
+msgid "Default command is Describe or Select"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:289
+msgid "Action to invoke on Right-Click"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:290
+msgid ""
+"Replace current selection with clicked object or add clicked object to "
+"selection"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:291
+msgid "Clicking into an empty area clears selection if select mode is <add>"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:293
+msgid "The list of control elements"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:294
+msgid "Edit the element"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:295
+msgid "Delete the element"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:296
+msgid "Contents Label for new Parameter file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:297
+#, fuzzy
+msgid "Desired curve radius for new track"
+msgstr "Добавить прÑмой трек"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:298
+msgid "List of custom designed turnouts and structures"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:299
+msgid "Change description, manufacturer or part number."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:300
+msgid "Remove selected entries"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:301
+#, fuzzy
+msgid "Copy selected entries to parameter file"
+msgstr "Скопировать выбранные объекты в буфер обмена"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:302
+#, fuzzy
+msgid "Create the selected type"
+msgstr "Удалить выбранные машины"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:303
+#, fuzzy
+msgid "Create a new part or prototype?"
+msgstr "Создать новое опиÑание машины"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:304
+msgid "Update custom file and close"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:305
+msgid "Executes the next step of the demo"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:306
+msgid "Skip to next demo"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:307
+msgid "Stops the demonstration and returns you to XTrackCAD"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:308
+msgid "Select speed of Playback"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:309
+msgid "This is where comments about the demo are displayed"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:346
+msgid "Move the Main canvas if you drag near the edge"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:347
+msgid "Color tracks by layer or individually"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:348
+#, fuzzy
+msgid "Color draw objects by layer or individually"
+msgstr "Выделение цветом треков или других объектов на Ñлое"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:349
+msgid "Controls the drawing of hidden tracks"
+msgstr "Отображение Ñкрытых треков"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:350
+msgid "Controls the drawing of End-Points"
+msgstr "Отображение конечных точек"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:351
+msgid "How to draw track ties"
+msgstr "Как риÑовать шпалы"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:352
+msgid "Show crosshair at center of curves"
+msgstr "Показывать перекреÑтие в центрах кривых"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:353
+msgid "Drawing scale when to draw tracks with 2 rails"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:354
+msgid "Drawing scale of the map window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:355
+msgid "Whether the main layout is updated while dragging on the Map"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:356
+msgid "Enable labels for Turnouts, Flextrack Lengths and Elevations"
+msgstr "Отображать надпиÑи Ð´Ð»Ñ Ñтрелок, гибких треков и подъемов"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:357
+msgid "When to label Turnout, Flextrack Lengths and Elevations"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:358
+msgid "Font size for labels on layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:359
+msgid "Label elements on the Hot Bar"
+msgstr "ПодпиÑи Ñлементов в панели быÑтрых команд"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:360
+msgid "Label elements on layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:361
+msgid "Label elements for lists"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:362
+msgid "How to group cars on the Train Hot Bar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:363
+msgid "Delay (in mS) between updating train movements"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:364
+msgid "Don't show trains in tunnels when tunnels are hidden"
+msgstr "Ðе показывать поезда в тоннелÑÑ…, когда они Ñкрыты"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:365
+msgid "Display unconnected endpoints of track with special marks"
+msgstr "Отображение неÑоединённых концов трека в виде Ñпециальных значков"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:366
+msgid "Whether the Main Drawing Area shows as much of the room as possible"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:367
+msgid "Don't hide system cursor when program cursors are showing"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:369
+msgid "Width of the lines"
+msgstr "Ширина Ñтой линий"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:370
+msgid "Color of the lines"
+msgstr "Цвет Ñтой линий"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:371
+msgid "List of types of Lumber"
+msgstr "СпиÑок типов древеÑины"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:372
+msgid "Color of Benchwork"
+msgstr "Цвет доÑки"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:373
+msgid "Orientation of Benchwork"
+msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð´Ð¾Ñки"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:374
+msgid "Size of Dimension Arrows"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:375
+#, fuzzy
+msgid "Width of Box"
+msgstr "Ширина вагона"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:376
+#, fuzzy
+msgid "Height of Box"
+msgstr "Ð’Ñ‹Ñота конечной точки"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:377
+msgid "Angle of Line"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:378
+#, fuzzy
+msgid "Radius of Curve"
+msgstr "Ð Ð°Ð´Ð¸ÑƒÑ "
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:380
+msgid "This controls the sharpness of the easement curve"
+msgstr "Это значение контролирует оÑтроту упрощённой кривой"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:381
+msgid "Minimum radius"
+msgstr "Минимальный радиуÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:382
+msgid "Maximum offset"
+msgstr "МакÑимальное Ñмещение"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:383
+msgid "Easement length"
+msgstr "Длина упрощениÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:384
+msgid ""
+"These radio buttons are a short-cut for Values of 0.0, 0.5, 1.0 and 2.0. "
+"None turns Easements off"
+msgstr ""
+"Эти радиокнопки подÑтавлÑÑŽÑ‚ шаблоны Ð´Ð»Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ 0.0, 0.5, 1.0 и 2.0. Ðет - "
+"выключает упрощениÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:385
+msgid "Complete easement selection"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:386
+msgid "Type of elevation"
+msgstr "Тип выÑоты"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:387
+msgid "Height of End Point"
+msgstr "Ð’Ñ‹Ñота конечной точки"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:388
+msgid "Compute elevation based on neighbors"
+msgstr "ВычиÑлить выÑоту по ÑоÑедÑм"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:389
+msgid "Compute grade based on neighbors"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:390
+msgid "Specify a name for an End-Point"
+msgstr "Укажите Ð¸Ð¼Ñ ÐºÐ¾Ð½ÐµÑ‡Ð½Ð¾Ð¹ точки"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:392
+msgid "Print parts list"
+msgstr "Печатать ÑпиÑок чаÑтей"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:393
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:543
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:666
+msgid "Invoke the Print Setup dialog"
+msgstr "Открыть диалог наÑтроек печати"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:394
+msgid "Save parts list to file"
+msgstr "Сохранить ÑпиÑок компонентов в файл"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:395
+msgid "This is the list of parts for the layout"
+msgstr "Это ÑпиÑок компонентов Ð´Ð»Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:396
+msgid "Enable prices on the Parts List"
+msgstr "Добавить цены в ÑпиÑке компонентов"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:397
+#, fuzzy
+msgid "Enable index listing on the Parts List"
+msgstr "Добавить цены в ÑпиÑке компонентов"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:398
+msgid "Save the note and close window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:399
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:400
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:480
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:481
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:617
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:618
+#, fuzzy
+msgid "Set the position for the note"
+msgstr "Это ÑпиÑок компонентов Ð´Ð»Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:401
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:482
+#, fuzzy
+msgid "Set the layer for the note"
+msgstr "Это ÑпиÑок компонентов Ð´Ð»Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:402
+#, fuzzy
+msgid "Enter the title of the file"
+msgstr "ÐапиÑать текÑÑ‚ на рабочую облаÑÑ‚ÑŒ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:403
+msgid "Enter the path and name of the file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:404
+msgid "Open the document in the default application"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:405
+msgid "Select the file from your system"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:406
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:409
+msgid "Spacing between major grid lines"
+msgstr "РаÑÑтоÑние между главными линиÑми Ñетки"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:407
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:410
+msgid "Allows the spacing to be subdivided"
+msgstr "Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ€Ð°Ð·Ð±Ð¸Ð²ÐºÐ° Ñетки"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:408
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:411
+msgid "Specifies if positions are snaped in this direction"
+msgstr "Включите, чтобы курÑор прилипал к Ñетке"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:412
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:413
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:414
+msgid "Shows the origin and angle of the grid"
+msgstr "ОтÑтупы и угол поворота Ñетки"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:415
+msgid "Specifies if the grid is shown"
+msgstr "Включите, чтобы отображать Ñетку"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:416
+msgid "Completes the grid specification"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:420
+msgid "Number of segments in Group"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:421
+msgid "Replace the Selected object with the new definition?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:422
+msgid "Creates a new Structure (or Turnout)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:423
+msgid "Elevation difference of Helix End-Points"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:424
+msgid "Helix Radius"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:425
+msgid "Number of turns in the helix"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:426
+msgid "Angle between helix entrance and exit"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:427
+msgid "Grade in helix"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:428
+msgid "Separation between helix layers including baseboard, track, etc"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:429
+msgid "Index numbers of objects, separated by commas"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:430
+#, fuzzy
+msgid "Desired curve radius between straight tracks"
+msgstr "Добавить прÑмой трек"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:431
+msgid "Layer list"
+msgstr "СпиÑок Ñлоёв"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:432
+msgid "Layer Name"
+msgstr "Ðазвание ÑлоÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:433
+msgid "Hide Layer Button on MenuBar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:434
+msgid "Color of layer"
+msgstr "Цвет ÑлоÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:435
+msgid "Layer is drawn on Main window"
+msgstr "Слой отриÑовываетÑÑ Ð² главном окне"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:436
+msgid "Layer cannot be changed"
+msgstr "Слой не может быть изменён"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:437
+msgid "Use color for this Layer if color-by-layer is set"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:438
+msgid "Other Layers this Layer also shows/hides"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:439
+msgid "Layer is a Module"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:440
+msgid "Layer is drawn on Map window"
+msgstr "Слой отриÑовываетÑÑ Ð½Ð° миникарте"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:441
+msgid "Layer inherits settings from Layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:442
+#, fuzzy
+msgid "Specifies the Modelling Scale for this Layer"
+msgstr "ОпределÑет маÑштаб модели"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:443
+#, fuzzy
+msgid "Specifies the rail gauge for this Layer"
+msgstr "ОпределÑет ширину колеи, Ñ‚.е. раÑÑтоÑние между рельÑами"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:444
+#, fuzzy
+msgid ""
+"Specifies minimum track radius for this layer. Tracks with a smaller radius "
+"are considered exceptional."
+msgstr ""
+"ОпределÑет минимальную кривизну трека(в дюймах или Ñантиметрах). Треки Ñ "
+"меньшим радиуÑом иÑключаютÑÑ."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:445
+#, fuzzy
+msgid ""
+"Specifies maximum track grade percent (%) for this layer. Tracks with a "
+"larger grade are considered exceptional."
+msgstr ""
+"ОпределÑет макÑимальный подъем трека в процентах (%). Треки Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ "
+"подъемом иÑключаютÑÑ."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:446
+#, fuzzy
+msgid "Specifies the tie length for this layer."
+msgstr "ОпределÑет маÑштаб модели"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:447
+msgid "Specifies the tie width for this layer."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:448
+#, fuzzy
+msgid "Specifies the tie spacing for this layer."
+msgstr "ОпределÑет маÑштаб модели"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:449
+#, fuzzy
+msgid "Add a new layer after the selected layer"
+msgstr "Удалить выбранные машины"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:450
+msgid "Delete the selected layer. There must be no objects in it."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:451
+msgid "Reset the layer to layout defaults"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:452
+msgid "Number of layer buttons to show"
+msgstr "Кол-во кнопок Ñлоёв в меню"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:453
+msgid "Number of objects in this layer"
+msgstr "Кол-во объектов в Ñтом Ñлое"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:454
+msgid "Settings File to load when this layer is made current"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:456
+msgid "Load layer configuration from default"
+msgstr "Загрузить наÑтройки ÑÐ»Ð¾Ñ Ð¸Ð· оÑновных"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:457
+msgid "Save current layer configuration as default"
+msgstr "Сохранить текущие наÑтройки ÑÐ»Ð¾Ñ ÐºÐ°Ðº оÑновные"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:458
+msgid "Overwrite layer configuration with system default values"
+msgstr "ПерезапиÑать наÑтроки ÑÐ»Ð¾Ñ ÑиÑтемными значениÑми по-умолчанию"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:459
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:460
+msgid "Specifies the size of the room (in inches or centimeters)"
+msgstr "ОпределÑет размер комнаты (в дюймах или Ñантиметрах)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:461
+msgid "Specifies the layout Title that will appear on printouts"
+msgstr "ОпределÑет заголовок ÑлоÑ, который будет виден при печати"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:462
+msgid "Specifies the layout Subtitle that will appear on printouts"
+msgstr "ОпределÑет подзаголовок ÑлоÑ, который будет виден при печати"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:463
+msgid "Specifies the Modelling Scale"
+msgstr "ОпределÑет маÑштаб модели"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:464
+msgid "Specifies the rail gauge, ie. the distance between the rails"
+msgstr "ОпределÑет ширину колеи, Ñ‚.е. раÑÑтоÑние между рельÑами"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:465
+msgid ""
+"Specifies minimum track radius (in inches or centimeters). Tracks with a "
+"smaller radius are considered exceptional."
+msgstr ""
+"ОпределÑет минимальную кривизну трека(в дюймах или Ñантиметрах). Треки Ñ "
+"меньшим радиуÑом иÑключаютÑÑ."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:466
+#, fuzzy
+msgid ""
+"Specifies maximum track grade expressed as a percent (%). Tracks with a "
+"larger grade are considered exceptional."
+msgstr ""
+"ОпределÑет макÑимальный подъем трека в процентах (%). Треки Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ "
+"подъемом иÑключаютÑÑ."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:467
+#, fuzzy
+msgid "Specifies the tie length for the layout."
+msgstr "Это ÑпиÑок компонентов Ð´Ð»Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:468
+#, fuzzy
+msgid "Specifies the tie width for the layout."
+msgstr "Это ÑпиÑок компонентов Ð´Ð»Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:469
+#, fuzzy
+msgid "Specifies the tie spacing for the layout."
+msgstr "Это ÑпиÑок компонентов Ð´Ð»Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:470
+#, fuzzy
+msgid "Select the background image"
+msgstr "Выбрать текущий Ñлой"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:471
+msgid "Remove the background image"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:472
+#, fuzzy
+msgid "Specifies the x offset of the bottom left of the background image"
+msgstr "ОпределÑет размер комнаты (в дюймах или Ñантиметрах)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:473
+#, fuzzy
+msgid "Specifies the y offset of the bottom left of the background image"
+msgstr "ОпределÑет размер комнаты (в дюймах или Ñантиметрах)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:474
+msgid ""
+"Specifies how large the bottom edge of the background image should be in "
+"model units"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:475
+msgid ""
+"Specifies the screening of the background image from 0 (none) to 100% "
+"(vanishes)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:476
+#, fuzzy
+msgid "Specifies the rotation angle of the background image in degrees"
+msgstr "ОпределÑет ширину колеи, Ñ‚.е. раÑÑтоÑние между рельÑами"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:477
+msgid "Write a copy of current settings to a named file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:478
+msgid "Override current settings from a named file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:479
+msgid "Save the link and close window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:483
+#, fuzzy
+msgid "Enter the title of the linked webpage"
+msgstr "УÑтанавливает размер вводимого текÑта"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:484
+#, fuzzy
+msgid "Enter the URL for the webpage"
+msgstr "ÐапиÑать текÑÑ‚ на рабочую облаÑÑ‚ÑŒ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:485
+msgid "Open the webpage in your browser"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:486
+#, fuzzy
+msgid "Move by X"
+msgstr "Двигать X:"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:487
+#, fuzzy
+msgid "Move by Y"
+msgstr "Двигать Y:"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:490
+msgid ""
+"This is the body of the Note. To change this select Modify from the File "
+"Menu"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:492
+msgid "Specifies number of pixels per inch (or centimeter)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:494
+msgid ""
+"Specifies whether Layout Titles, Borders or Track Centerlines are printed on "
+"the BitMap"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:495
+msgid ""
+"Specifies the separation between the original track and the parallel track/"
+"line"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:496
+msgid ""
+"Specifies the a factor that increases the seperation as the radius of the "
+"original track reduces. 0.0 means no increase."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:497
+msgid "Enter your name as specified in the XTrackCAD Registration Notice"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:498
+msgid "Enter the key value as specified in the XTrackCAD Registration Notice"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:499
+msgid "Validates the name and key. Terminates the registration command"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:500
+msgid "0 degrees is up or to the right"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:501
+msgid "Choose english (inches) or metric (centimeters)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:502
+msgid "How to display length measurements"
+msgstr "Как отображать единицы измерениÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:503
+msgid "Do not create tracks to be shorter than this value"
+msgstr "Ðе Ñоздавать треки короче Ñтого значениÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:504
+msgid "Maximum distance between connected end points"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:505
+msgid "Minimum angle between connected End-Points"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:506
+msgid "Specifies the minimum angle between tracks connected to a turntable"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:507
+msgid "Trains will crash above this speed"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:508
+msgid "Enable/Disable balloon popup help windows"
+msgstr "Включить или выключить вÑплывающую подÑказку"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:509
+msgid "Enable/Disable show of flextrack on hotbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:510
+msgid "How far you can move the mouse before its considered a drag"
+msgstr "Как далеко вы должны передвинуть мышь, чтобы начать перетаÑкивание"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:511
+msgid "How long you can hold a mouse button down before its considered a drag"
+msgstr "Как долго вы должны держать кнопку мыши, чтобы начать перетаÑкивание"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:512
+msgid "Minimum distance (in pixels) between grid lines/ticks"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:513
+msgid ""
+"Specifies the Check Point frequency; number of modifications made since the "
+"last checkpoint."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:514
+msgid "Specifies the number of checkpoints after save before auto-saving."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:515
+msgid "Resume work on last layout or start with new layout"
+msgstr "Возобновить работу поÑледнего проекта или начать Ñ Ñ‡Ð¸Ñтого лиÑта"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:517
+msgid "Updated cost of current selected item"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:519
+msgid "Selection list for prices"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:520
+msgid "Length of a piece of flex-track"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:521
+msgid "Price of specified length of flex-track"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:523
+msgid "Controls the printing of a centerline of track cmdPrint"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:524
+msgid "Controls the reduction (scale) of the printout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:525
+msgid "Scaled page width (Scale times physical page width)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:526
+msgid "Sets page size to the maximum (based on scale and physical page size)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:527
+msgid "Scaled page height (Scale times physical page height)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:528
+msgid "Sets scale, origin and angle for a one page printout of the layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:529
+msgid "Print page in Portrait or Landscape format"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:530
+msgid "Order of printing pages"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:531
+msgid "Print Title, Date, Author and other information at bottom of page?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:532
+msgid "Ignore unprintable page margins?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:533
+msgid "Print Registration Marks at 1:1?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:534
+msgid "Print Snap Grid?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:535
+msgid "Print Rulers at the layout edge only, or on all page edges, or nowhere?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:536
+msgid "Print Roadbed Outline?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:537
+msgid "Print Roadbed Outline"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:538
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:539
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:541
+msgid ""
+"Origin of the print grid. This is useful if you want to reprint a set of "
+"pages"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:540
+msgid "Resets the origin and angle to 0"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:542
+msgid "Deselects all pages"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:544
+msgid "Print selected pages and terminates the print command"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:545
+#, fuzzy
+msgid "List of loaded, shown or hidden parameter files"
+msgstr "Загрузить или выгрузить файлы параметров"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:546
+msgid "Show parameter files by names or descriptions"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:547
+msgid "Toggle the shown status of the selected parameter file"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:548
+msgid "Find extra parameter files from the filesystem"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:549
+#, fuzzy
+msgid "Bookmark parameter files"
+msgstr "Чтение файлов Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:550
+msgid "Find parameter files from the system library"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:551
+msgid "Update parameter file list"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:552
+#, fuzzy
+msgid "Reload parameter file from list"
+msgstr "Чтение файлов Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:553
+msgid "Select all parameter files shown"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:554
+#, fuzzy
+msgid "Remove parameter files from active list"
+msgstr "Чтение файлов Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:555
+msgid "Profile of specified path"
+msgstr "Профиль выбранного пути"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:556
+msgid "Clear the profile"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:557
+msgid "Print the profile"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:559
+msgid "Stop recording"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:560
+msgid "Insert a message"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:561
+msgid "End a message"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:562
+msgid "Message body"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:563
+msgid "Possible turnouts"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:564
+msgid "Skip this turnout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:566
+msgid "Manufacturer of Object"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:567
+msgid "Description of Object"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:568
+msgid "Part Nuber of Object"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:570
+msgid "Rescale by Scale Conversion or by Ratio"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:571
+msgid "Original Scale of the selected objects"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:572
+msgid "Original Gauge of the selected objects"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:573
+msgid "New Scale of the selected objects"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:574
+msgid "New Gauge of the selected objects"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:575
+msgid "Change track dimensions to new scale"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:576
+msgid "Change size by this amount"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:578
+msgid "Snap Grid Line and Division"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:579
+msgid "X and Y position markers"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:580
+msgid "Border rulers, room boundaries and table edges"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:581
+msgid "Primary Axis of grid rotation"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:582
+msgid "Secondary Axis of grid rotation"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:583
+msgid "Unselected tracks"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:584
+msgid "Selected tracks"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:585
+msgid "Color of tracks on the Profile path"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:586
+msgid "Color of Exceptional tracks"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:587
+msgid "Color of track ties"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:588
+msgid "Updates the colors"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:589
+msgid "Angle in degrees"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:590
+msgid "Rotate object(s) by specified amount"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:591
+msgid "Enter one or more words as search terms"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:592
+msgid "Remove the current filter and show all files"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:593
+#, fuzzy
+msgid "Find matching file descriptions"
+msgstr "Выберите и перемеÑтите подпиÑÑŒ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:594
+msgid "Search results"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:595
+msgid "Show descriptions or filenames in results"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:596
+msgid "Select how well the definitions must fit the current layout scale"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:597
+msgid "Add selected entries into parameter file list"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:598
+#, fuzzy
+msgid "Select All found entries"
+msgstr "Выберите второй трек"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:599
+msgid "Reload the system library contents for finding"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:600
+msgid "Choose commands to be sticky"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:601
+msgid "Make the commands sticky"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:602
+msgid "List of available structure"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:603
+msgid "Diagram of the selected structure"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:604
+msgid "Hide Selection window when placing Structure"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:605
+msgid "Drawing scale and size"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:606
+msgid "Complete structure placement"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:607
+msgid "Choose a Pier number"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:608
+msgid "Name of the Motor"
+msgstr "Ðазвание поезда"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:609
+msgid "Value when switch is normal"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:610
+msgid "Value when the switch is reversed"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:611
+msgid "Value for a positive comfirmation of switch position"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:613
+#, fuzzy
+msgid "Controls the color of the entered text"
+msgstr "УÑтанавливает размер вводимого текÑта"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:614
+msgid "If the text is boxed"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:615
+msgid "Save and close editor dialog"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:616
+msgid "Set layer for the note"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:619
+msgid "Enter your addiional information here"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:620
+msgid "Useful information about the program"
+msgstr "ÐŸÐ¾Ð»ÐµÐ·Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ программе"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:621
+msgid "Show Tip of the Day every time the program starts"
+msgstr "Показывать Ñовет Ð´Ð½Ñ ÐºÐ°Ð¶Ð´Ñ‹Ð¹ раз при запуÑке программы"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:622
+msgid "Show the next Tip of the Day"
+msgstr "Показать Ñледующий Ñовет днÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:623
+msgid "Show the previous Tip of the Day"
+msgstr "Показать предыдущий Ñовет днÑ"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:625
+msgid "List of butten groups and their state in the toolbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:626
+msgid "Set all button groups visible in toolbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:627
+msgid "Invert the visibility of button groups"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:628
+msgid "Close dialog and configure the toolbar"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:629
+msgid "List of Cars"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:630
+msgid "List of active trains"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:632
+msgid "Train odometer"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:633
+msgid "Reset odometer to 0"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:634
+msgid "Find train on layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:635
+msgid "Follow train around layout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:636
+msgid "Flip direction at End Of Track"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:637
+msgid "Change direction of train"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:638
+msgid "Stop the train"
+msgstr "ОÑтановить поезд"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:639
+msgid "List of available turnouts for the current scale"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:640
+msgid ""
+"Diagram of the currently selected turnout. Click on a End-Point to select "
+"the Active End-Point"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:641
+msgid ""
+"A menu list of various type of turnouts and sectional tracks you can define"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:642
+msgid "Hide Selection window when placing Turnout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:643
+msgid "The selected Active End-Point"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:644
+msgid "Current selected turnout, (displayed in the diagram window)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:645
+msgid "One the End-Points that can be selected"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:647
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:648
+msgid "Angle of the specified track to the center line of the turnout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:649
+msgid "Specifies if angles are entered as Frog Numbers or in degrees"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:652
+msgid "Turnout description (Manuf., Size, Part Number, etc)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:653
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:654
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:655
+msgid "Length from the base to the end of the specified track"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:657
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:658
+msgid "Offset of the track End-Point from the center line of the turnout"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:661
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:662
+msgid "Prints a full size diagram of the turnout for checking"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:663
+msgid "Color of Roadbed lines"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:664
+msgid "Width of Roadbed lines"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:665
+msgid "Width of Roadbed"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:667
+msgid "Closes the window and returns to the Turnout Selection window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:668
+msgid "Specifies the diameter of the turntable"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:669
+msgid "Old Turnout title"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:670
+msgid "List of available titles"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:671
+msgid "Leave the Turnouts' title unchanged"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:672
+msgid "Invoke the Parameter Files dialog"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:673
+msgid "List of available turnouts"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:674
+msgid "Update the Turnouts' title"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:678
+msgid "Sample"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:680
+msgid "Slant"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:681
+msgid "Font selection dialog"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:682
+msgid "Weight"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:683
+msgid "Printer Abort Window"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:684
+msgid "Print to filename"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:685
+msgid "Specify Postscript font alias mapping"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:686
+msgid ""
+"Displays the Print Setup window to change printers, orientation, paper size, "
+"etc."
+msgstr ""
+"Открыть оно наÑтроек печати Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° принтера, ориентации Ñтраницы, бумаги "
+"и др."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:687
+msgid "Closes this dialog"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:688
+msgid "Page orientation"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:689
+msgid "Unprintable margins"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:690
+msgid "Updates and closes this dialog"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:691
+msgid "Choose paper size"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:692
+msgid "Choose printer"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:693
+msgid "Print test page"
+msgstr ""
+
+#~ msgid "Controls which Command Buttons are displayed"
+#~ msgstr "Показать или ÑпрÑтать панель"
+
+#, fuzzy
+#~ msgid "Predefined Track"
+#~ msgstr "Выбранный трек"
+
+#~ msgid "Layout"
+#~ msgstr "Проект"
+
+#, fuzzy
+#~ msgid "Re-edit"
+#~ msgstr "СброÑить"
+
+#, fuzzy
+#~ msgid "Update comment"
+#~ msgstr "Отменить поÑледнюю команду"
+
+#, fuzzy
+#~ msgid "Comment"
+#~ msgstr "Содержание"
+
+#, fuzzy
+#~ msgid "a straight or a curve.\n"
+#~ msgstr "Добавить прÑмой трек"
+
+#, fuzzy
+#~ msgid "Track Point elevation %0.3f"
+#~ msgstr "Ð’Ñ‹Ñоты трека"
+
+#~ msgid "Bridge"
+#~ msgstr "МоÑÑ‚"
+
+#~ msgid "Angle = %0.3f"
+#~ msgstr "Угол = %0.3f"
+
+#~ msgid "Train"
+#~ msgstr "Поезд"
+
+#~ msgid "Print Titles"
+#~ msgstr "Печатать заголовки"
+
+#~ msgid "Print Borders"
+#~ msgstr "Печатать границы"
+
+#~ msgid "Print Centerline"
+#~ msgstr "Печатать центральную линию"
+
+#~ msgid "Approximate file size: 999.9Mb"
+#~ msgstr "Примерный размер файла: 999.9Мб"
+
+#~ msgid "Approximate file size : %0.1fKb"
+#~ msgstr "Примерный размер файла: %0.1fКб"
+
+#~ msgid "Approximate file size : %0.1fMb"
+#~ msgstr "Примерный размер файла: %0.1fМб"
+
+#, fuzzy
+#~ msgid "Bitmap files (*.png)|*.png"
+#~ msgstr "Файлы изображений|*.bmp"
+
+#~ msgid "BitMap"
+#~ msgstr "Изображение"
+
+#~ msgid "Enter a 8 digit date"
+#~ msgstr "Введите 8 цифр даты"
+
+#~ msgid "Enter a Prototype name"
+#~ msgstr "Введите название прототипа"
+
+#~ msgid "Enter a Part Number"
+#~ msgstr "Введите номер запчаÑти"
+
+#~ msgid "Enter the Car Length"
+#~ msgstr "Введите длину вагона"
+
+#~ msgid "Enter the Car Width"
+#~ msgstr "Введите ширину вагона"
+
+#~ msgid "Enter the Truck Centers"
+#~ msgstr "Введите центры треков"
+
+#~ msgid "Personal Preferences"
+#~ msgstr "ПерÑональные наÑтройки"
+
+#~ msgid "Drag to place next end point"
+#~ msgstr "Тащите, чтобы Ñоздать Ñледующую точку"
+
+#~ msgid "&Loosen Tracks"
+#~ msgstr "ПотерÑнные треки"
+
+#, fuzzy
+#~ msgid "Reload Library"
+#~ msgstr "Перезагрузить"
+
+#, fuzzy
+#~ msgid "Bezier: len=%0.2f min_rad=%0.2f"
+#~ msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ð‘ÐµÐ·ÑŒÐµ: длина=%s мин. радиуÑ=%s"
+
+#, fuzzy
+#~ msgid "Save format:"
+#~ msgstr "Сохранить изображение"
+
+#, fuzzy
+#~ msgid "Image files"
+#~ msgstr "Ð’Ñе файлы"
+
+#~ msgid "Font Select"
+#~ msgstr "Выбор шрифта"
+
+#~ msgid "Home"
+#~ msgstr "Домой"
+
+#~ msgid "Contents"
+#~ msgstr "Содержание"
+
+#~ msgid "<Empty List>"
+#~ msgstr "СпиÑок поÑледних файлов пуÑÑ‚"
+
+#~ msgid "%d of %d"
+#~ msgstr "%d из %d"
+
+#~ msgid "HOME is not set"
+#~ msgstr "Папка HOME не задана"
+
+#~ msgid "Exit"
+#~ msgstr "Выход"
+
+#~ msgid "Cannot create %s"
+#~ msgstr "Ðевозможно Ñоздать %s"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
+#~ msgid "Alt+"
+#~ msgstr "Alt+"
+
+#~ msgid "Shift+"
+#~ msgstr "Shift+"
+
+#~ msgid "Space"
+#~ msgstr "Пробел"
+
#~ msgid "Modify Bezier Complete - select another"
#~ msgstr "Изменение Безье закончено - выберите другую"
@@ -14101,9 +15080,6 @@ msgstr "Цвета Ñлементов управлениÑ"
#~ msgid "%s Files|*.xtc"
#~ msgstr "%s Файлы|*.xtc"
-#~ msgid "Bitmap files|*.xpm"
-#~ msgstr "Файлы изображений|*.xpm"
-
#~ msgid "Zoom keeps lower corner in view"
#~ msgstr "ФикÑированный нижний левый угол"
diff --git a/app/i18n/stripmsg.c b/app/i18n/stripmsg.c
index b3b37dd..1271519 100644
--- a/app/i18n/stripmsg.c
+++ b/app/i18n/stripmsg.c
@@ -13,7 +13,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 <stdlib.h>
diff --git a/app/lib/CHANGELOG.md b/app/lib/CHANGELOG.md
index 7c46388..3644e99 100644
--- a/app/lib/CHANGELOG.md
+++ b/app/lib/CHANGELOG.md
@@ -4,6 +4,175 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
+## [5.3.0 GA]
+
+## Bugs
++ BUG 543: Removal of user info from xtrkcad files
++ Bug fix #551 Spliting a bezier line aborts
++ BUG 552 Xtrk/cAD crashes when downsizing layout dimensions#552 Xtrk/cAD crashes when downsizing layout dimensions
+
+## [5.3.0 Beta 2]
+
+## Bugs
++ BUG 544 In 'Run Trains' mode, stock summary no longer displayed in Status Bar when left-click on object
++ BUG fix 547 Fleischmann HO turntable error
++ BUG 541 New Car Protoype dialog box has stopped working.
++ Add german translations
++ UTF-8 fixes for main note
++ Initial window size on multi monitor setups spans all monitors, …
++ BUG 535 simple line not visible
++ Improve tooltips for custom management
+
+## Parameters
++ Any-DCC-Concepts Point Motors.xtp'
++ Any-ModelRailroadBenchwork.xtp
++ 'HO-Atlas Code 100 Track.xtp'
++ 'HO - Atlas Custom Line Track Assemblies.xtp'
++ HO-Busch.xtp
++ HO-fl-model.xtp
++ HO-fl-profi.xtp
++ HO-Peco-Code70USA.xtp
++ 'HO-Walthers Cornerstone 1.xtp'
++ 'HO-Walthers DCC Code 83.xtp'
++ N-walthers-n.xtp
++ params.xtc
++ ProcessXTP.log
++ 'S_ACG_All Aboard Panels.xtp'
++ 'S_ACG_American Flyer Track.xtp'
++ 'S_ACG_Pike-Master Track.xtp'
+
+## [5.3.0 Beta 1]
+
+## Bugs
+
++ Fixed Layout Background handling in Dialog (if Cancelled)
++ Fixed Fault if Run Trains with no Cars and no Prototype loaded
++ Made sure UTF-8 handled correctly in Windows Macros (demos)
++ Add > Structure dialog caused weird artifact when closed
++ Cornu Turnout Designer misplaces points or fails
++ Add check for max connect angle to Bezier Segment
++ Remember largest font size used so we don't nag the user
++ BUG FIX: saving to xtce without background
++ Add context help text to note ui
++ all wNotice() if pref file can't be opened
++ Re-enable HotBar jumps on numeric keys to match docs
++ FIX #527 No change detection or undo when text changed in Change Object Properties
++ BUG #526 Labels indicating grades and elevations display inconsistently.
++ Cancel Save to file if any step fails so only valid files are created
++ do not store info about user's directory structure in archive file
++ BUG FIX: If deleting all files from Parameter Files dialog list when 'Add Fixed-Track' dialog had been invoked: causes *curTurnout to be overwritten.BUG #525 Save As for xtce fails
++ BUG 515: Error when trying to save as *.xtce file Due to trying to do rename() across devices`
++ BUG 522 Truck Offset is invalid for New Cars
++ BUG #521 Change "Cannot split Turnout track" message to explain Split
++ Removed range checks for comment icons on trackplan …
++ In Train mode, Describe Car, not track it is on.
++ Correctly Suppress ruler numbers for RHS and top of window and all sides of layout in English measurements
++ Fix "Fill/Unfill" in Dsscribe alters a Rectangle into a Polygon.
++ Fix #518.Map Mac KeyPad Enter (and Fn+Return on non-keypad keyboards) to Return.
++ ix #520 - Fix error message when selecting end point in Join for Cornu
++ Changing Units doesn't repopulate the Length Format list
++ BUg 516 Fix Color Draw reverts back to By Object after any change in Display Options
++ Fix #514 Train Mode issues
++ Fix #511 Lost properties window
++ Fix MapW resizing
++ FIX: Trains on the layout jump when layout is loaded
++ Simplify middle button pan (MBP) code
++ #509 Bug: Lower Limit on room size
++ BUG 504, 505 - Scale Unknown
++ Layer Links are accesses by 0-based indices
++ Fix bit-rot in demos. Update some MESSAGEs. Add info about old/new Select behavior.
++ Do not change filled rectangle to filled polygon when reading from file
++ CURRENT LAYER in .xtc files was 1-based, should be 0-based
++ Enable local language in demos
++ Auto connect EPs after move/rotate
++ BUG #501 - Unable to delete car from inventory
++ Restore Ctl-Alt-N for text note
++ Fix BUG #496 Sticky options not saved
++ Fix BUG #343 Error when grouping objects
++ Fix BUG #454 XTrack cursor and System cursor conflict
++ Temp drawing of Curve from Chord when tied to an existing EP is somethings flipped
++ FIX #493 Extending a sectional track with a curved endpt doesn't allow straight
++ Fix #494 Reducing Main window size is jerky
++ FIX #492 Turntable path not Shown in Train Run Mode
++ Fix #479 Problem with N gauge Tomix 1248 and 1249 turnouts.
++ Linux: beta release improvements
++ Improve 'segment not on path' handling
++ BUG #449 Note behavior when canceled
++ FIX #464 Can't group multiline text objects
++ Deleting a CAR in design mode causes GetTrackExtraData() complaints about deleted track
++ BUG 457 Missing main window icon
++ BUG #477 Disregarding print margins
++ Bug Fix #477 Disregarding print margins
++ Fix #480 bad performance with a 'fine' grid
++ Fix Bug #467 Regression failuresm with high DPI
++ Track down source of 'intersectBox bogus' message
++ Fix #463 Layout scale not set correctly when gauge is the same
++ BUG 485-TrackScaleGauge
++ Fix Bug #451 Two-rail scale
++ Partial Fix #343 Error when grouping objects
++ Fix car csv import/export doc for Options and Color
++ Fix #478 Modifying straight line objects
++ Fix BUG 484 train control: map moving bug
++ Dialog sizing: non-resizable dlg are not resizble, enforce minimum size on resizabl dlg
++ Fix HotBar highlighting in Playback mode
+
+## Added
+
++ Layout has additional settings for Tie data: Length, Width, Spacing
++ Layers have additional settings that can override the layout configuration:
+ Scale, Min Track Radius, Max Track Grade, Tie data: Length, Width, Spacing
++ Enhanced DXF export to include color and DOT line style
++ Bitmap export to JPEG and PNG formats
++ Include background bitmap in bitmap export
++ Improved and Updated Help file
++ Structures snap to grid (if enabled) and respect grid angle
++ Refactored Windows arc drawing
++ Draw centers enabled for sectional curved tracks
++ Roadbed option to track
++ Color selection for Bridge fill and Roadbed
++ Graphics improvements and additions
+
+## Parameters
+
++ Mianne Benchwork components
++ Walthers HO DCC Code 83 Turnouts
++ Walthers HO DCC Code 100 Turnouts
++ HO Piko A Roadbed Track Components
++ HO Piko A Track update
++ Sn3 Fast Tracks Turnouts
++ HO Lionel MagLock FasTrack
++ O LionelFasTrack update
++ HOn30_Minitrains update
++ G Lionel Ready-To-Play Track
++ S Jakks PowerTrains Track (2012)
++ Jouef Points & Track Sections
++ Walthers HO DCC Code 70 Turnouts
++ Design Preservation Models Modular Custom Structures
++ Minitrix N-Scale Code 60 Concrete Tie Track
++ Modellbahn Union N Scale Track
++ Hornby OO Scale Points & Track Sections
++ Hornby PlayTrains Track Components
++ Peco O Scale Bullhead Turnouts
++ Peco O Scale Code 124 Setrack
++ Peco O Scale Code 143 Flatbottom Track
++ Modellbahn Union TT Scale Track
++ Roco TT Track System
++ Micro Trains Z Scale Micro-Track Components
+
+## Examples
+
++ Ondaville Franklin and Carolina RR
++ A Scale Folded Dogbone
++ Mianne Benchwork
+
+
+## [5.2.2 GA]
+
+## Bugs
+
++ Windows circle drawing fix
+
+
## [5.2.2 Beta 3]
## Bugs
diff --git a/app/lib/CMakeLists.txt b/app/lib/CMakeLists.txt
index 54c4606..c25c149 100644
--- a/app/lib/CMakeLists.txt
+++ b/app/lib/CMakeLists.txt
@@ -6,8 +6,6 @@
#
project(lib)
-add_subdirectory(demos)
-add_subdirectory(examples)
add_subdirectory(params)
install(FILES
@@ -17,7 +15,28 @@ install(FILES
xtrkcad.upd
DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}
)
-
+
+# install parameter files
+install(DIRECTORY params
+ DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}
+ FILES_MATCHING
+ PATTERN "*.xtp")
+
+# install demos
+install(DIRECTORY demos
+ DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}
+ FILES_MATCHING
+ PATTERN "*.xtr")
+
+# install example layouts
+install(DIRECTORY examples
+ DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}
+ FILES_MATCHING
+ PATTERN "*.xtc")
+
+# install release documentation Readme and CHANGELOG
+# depends on pandoc
+#
set( infile "${CMAKE_CURRENT_SOURCE_DIR}/Readme.md" )
set( outfile "${CMAKE_CURRENT_BINARY_DIR}/Readme.txt" )
set( changelogin "${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG.md" )
@@ -38,7 +57,7 @@ if(PANDOC_FOUND)
DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}
)
else()
- message(STATUS "Pandoc is not available on this system, Readme.txt is not generated!")
+ message(STATUS "Pandoc is not available on this system, Readme.txt and CHANGELOG.txt are not generated!")
endif()
if(UNIX AND NOT APPLE)
@@ -47,7 +66,12 @@ if(UNIX AND NOT APPLE)
DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}
)
install(FILES
- xtrkcad.desktop xtrkcad.xml
+ xtrkcad${XTRKCAD_BETA}.desktop
+ DESTINATION "${XTRKCAD_SHARE_INSTALL_DIR}/applications"
+ RENAME xtrkcad.desktop
+ )
+ install(FILES
+ xtrkcad.xml
DESTINATION "${XTRKCAD_SHARE_INSTALL_DIR}/applications"
)
install(FILES
diff --git a/app/lib/COPYING b/app/lib/COPYING
index 5b6e7c6..d159169 100644
--- a/app/lib/COPYING
+++ b/app/lib/COPYING
@@ -1,12 +1,12 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
- Preamble
+ Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
+the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
@@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
-
- GNU GENERAL PUBLIC LICENSE
+
+ GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
-
+
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
-
+
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
@@ -225,7 +225,7 @@ impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
-
+
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
@@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
- NO WARRANTY
+ NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
@@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
@@ -303,10 +303,9 @@ the "copyright" line and a pointer to where the full notice is found.
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
-
+ 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.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
@@ -336,5 +335,5 @@ necessary. Here is a sample; alter the names:
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
+library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
diff --git a/app/lib/Readme.md b/app/lib/Readme.md
index ba3819e..b586bc9 100755
--- a/app/lib/Readme.md
+++ b/app/lib/Readme.md
@@ -1,8 +1,8 @@
-# V5.2.2 GA Release Notes
+# XTrackCAD Version 5.3.0 GA Release Notes
-Welcome to the XtrackCAD V5.2.2 GA release!
+Welcome to the XtrackCAD V5.3.0 GA Release!
-V5.2.2 GA contains many bug fixes, new and updated parameter files, new features and enhancements.
+V5.3.0 GA contains many bug fixes, new and updated parameter files, new features and enhancements.
Enjoy!
@@ -18,21 +18,22 @@ To report bugs, please use the SourceForge bugs reporting page https://sourcefor
To discuss the Release, please use the user forum https://xtrackcad.groups.io/g/main/topics
-# XTrackCAD 5.2.2 GA Notes#
+# V5.3.0 GA Notes
This file contains installation instructions and up-to-date information regarding XTrackCad.
## Contents ##
-* About XTrackCad
-* License Information
-* Installation
-* Upgrading from earlier releases
-* Bugs fixed
-* Building
-* Where to go for support
+* [About XTrackCad](#About)
+* [License Information](#License)
+* [Installation](#Installation)
+* [Upgrading from earlier releases](#Upgrading)
+* [Building](#Building)
+* [Where to go for support](#Support)
-## About XTrackCad ##
+<a name='About' />
+
+## About XTrackCAD ##
XTrackCad is a powerful CAD program for designing Model Railroad layouts.
@@ -48,6 +49,9 @@ Availability:
XTrkCad Fork is a project for further development of the original XTrkCad
software. See the project homepage at <http://www.xtrackcad.org/> for news and current releases.
+
+<a name='License' />
+
## License Information ##
**Copying:**
@@ -57,13 +61,20 @@ free software under the terms of the GNU General Public License v2 which
you can find in the file COPYING.
+<a name='Installation' />
+
## Installation ##
-Please see http://xtrkcad-fork.sourceforge.net/Wikka/DownloadInstall.
+Please see https://sourceforge.net/p/xtrkcad-fork/wiki/DownloadInstall/
+
+**Note:** The Linux version has intrduced changes to make co-existance of Beta and GA releases easier. Please see https://sourceforge.net/p/xtrkcad-fork/wiki/LinuxInstall/ for details.
+
+
+<a name='Upgrading' />
## Upgrade Information ##
-**Note:** The 5.2 version of XTrackCAD comes with the several new features
+**Note:** The 5.2 version of XTrackCAD came with the several new features
like background images or extensions to notes. In order to support
this feature, an additional file format for layout files (.xtce) was added.
The old .xtc format is still supported for reading and writing. So
@@ -71,9 +82,15 @@ files from earlier versions of XTrackCAD can be read without problems.
Layouts that were saved in the new format cannot be read by older
versions of XTrackCAD.
+
+<a name='Building' />
+
## Building ##
-Please see http://xtrkcad-fork.sourceforge.net/Wikka/BuildNotes
+Please see <https://sourceforge.net/p/xtrkcad-fork/wiki/BuildNotes/>
+
+
+<a name='Support' />
## Where to go for support ##
diff --git a/app/lib/demos/CMakeLists.txt b/app/lib/demos/CMakeLists.txt
deleted file mode 100644
index 712902c..0000000
--- a/app/lib/demos/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-FILE(GLOB DEMO_FILES *.xtr)
-INSTALL(
- FILES ${DEMO_FILES}
- DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}/demos
- )
diff --git a/app/lib/demos/dmadjend.xtr b/app/lib/demos/dmadjend.xtr
index c74122a..8e3ea40 100644
--- a/app/lib/demos/dmadjend.xtr
+++ b/app/lib/demos/dmadjend.xtr
@@ -109,15 +109,26 @@ It's possible to almost create a complete circle.
If you drag the mouse beyond the start of the curve the track becomes very short.
END
STEP
-MOUSE 4 7.500 3.167
+#MOUSE 4 7.500 3.167
+MOUSE 3 7.500 3.167
MESSAGE
_________________________________________
Here you are warned that the track will be too short.
END
-MOUSE 1 7.60 3.167
-BIGPAUSE
+STEP
+MOUSE 4 7.500 3.167
+MESSAGE
+_________________________________________
+
+Because the modified track is too short, the modification is abandoned the original track is restored.
+END
+STEP
MOUSE 2 7.60 3.167
+MOUSE 3 7.60 3.167
+BIGPAUSE
+#MOUSE 2 7.60 3.167
+MOUSE 3 7.60 3.167
STEP
MOUSE 3 8.417 3.167
PAUSE 60
@@ -172,8 +183,7 @@ END
STEP
CLEAR
MESSAGE
-If you adjust the endpoint of a turnout or sectional track the track is extended by a similar track segment. The extension can be
-a straight or a curve.
+If you adjust the endpoint of a turnout or sectional track the track is extended by a similar track segment. The extension can be a straight or a curve.
END
STEP
MOUSE 1 19.750 10.583
diff --git a/app/lib/demos/dmcancel.xtr b/app/lib/demos/dmcancel.xtr
index e4afbf7..f6544dd 100644
--- a/app/lib/demos/dmcancel.xtr
+++ b/app/lib/demos/dmcancel.xtr
@@ -27,7 +27,7 @@ This is a note about something important
but I can't remember what.
END
DRAW 5 0 0 0 0 4.125000 5.750000 0 0.000000
- Z 0 0.000000 0.000000 0.000000 0 140.000000 "This is some text"
+ Z 0 0.000000 0.000000 0.000000 0 140.000000 "Hello"
END
REDRAW
RESET
@@ -79,8 +79,8 @@ STEP
PARAMETER describe S2 Medium Left
PARAMETER describe S3 SL-E396F2
STEP
-MOUSE 2 11.500 6.625
-MOUSE 4 11.500 6.625
+MOUSE 2 6.000 6.625
+MOUSE 4 6.000 6.625
MESSAGE
_________________________________________
@@ -95,7 +95,7 @@ and its size.
END
STEP
#DESCRIBE Font Size 19
-PARAMETER describe LE1 -1 19
+PARAMETER describe LE1 -1 60
STEP
MESSAGE
_________________________________________
@@ -140,7 +140,7 @@ but I can't remember what.
END
DRAW 5 0 0 0 0 4.125000 5.750000 0 0.000000
- Z 0 0.000000 0.000000 0.000000 0 19.000000 "This is some text"
+ Z 0 0.000000 0.000000 0.000000 0 60.000000 "Goodbye"
END
REGRESSION END
CLEAR
diff --git a/app/lib/demos/dmconn1.xtr b/app/lib/demos/dmconn1.xtr
index 5d5ea12..d793aec 100644
--- a/app/lib/demos/dmconn1.xtr
+++ b/app/lib/demos/dmconn1.xtr
@@ -62,7 +62,7 @@ TURNOUT 6 0 0 0 0 HO 2 48.889351 1.684210 180.000000 "Kato Unitrack #4-R Turnou
L 11579568 0.053333 0.000000 0.723334 7.283465 0.723334
A 11579568 0.053333 20.930666 0.000000 -21.654000 0.000000 19.000000
END
-TURNOUT 7 0 0 0 0 HO 2 40.576601 3.256112 15.500000 "Kato Unitrack R550-3.5° (incl w/#4 TO) "
+TURNOUT 7 0 0 0 0 HO 2 40.576601 3.256112 15.500000 "Kato Unitrack R550-3.°5° (incl w/#4 TO) "
T 8 40.576601 3.256112 285.500000
T 6 41.839647 2.863926 109.000000
D 0.000000 0.000000
@@ -71,7 +71,7 @@ TURNOUT 7 0 0 0 0 HO 2 40.576601 3.256112 15.500000 "Kato Unitrack R550-3.5° (i
A 11579568 0.053333 20.930666 0.000000 -21.654000 0.000000 3.500000
A 11579568 0.053333 22.377334 0.000000 -21.654000 0.000000 3.500000
END
-TURNOUT 8 0 0 0 0 HO 2 34.789943 4.043642 0.000000 "Kato Unitrack R550-15.5° (incl w/#4 TO) "
+TURNOUT 8 0 0 0 0 HO 2 34.789943 4.043642 0.000000 "Kato Unitrack R550-15.5° (incl w/#4 TO) "
T 14 34.789943 4.043642 270.000000
T 7 40.576601 3.256112 105.500000
D 0.000000 0.000000
@@ -80,7 +80,7 @@ TURNOUT 8 0 0 0 0 HO 2 34.789943 4.043642 0.000000 "Kato Unitrack R550-15.5° (i
A 11579568 0.053333 20.930666 0.000000 -21.654000 0.000000 15.500000
A 11579568 0.053333 22.377334 0.000000 -21.654000 0.000000 15.500000
END
-TURNOUT 9 0 0 0 0 HO 2 15.302497 3.256113 344.500000 "Kato Unitrack R550-15.5° (incl w/#4 TO) "
+TURNOUT 9 0 0 0 0 HO 2 15.302497 3.256113 344.500000 "Kato Unitrack R550-15.5° (incl w/#4 TO) "
E 15.302497 3.256113 254.500000
T 15 21.089155 4.043642 90.000000
D 0.000000 0.000000
@@ -89,7 +89,7 @@ TURNOUT 9 0 0 0 0 HO 2 15.302497 3.256113 344.500000 "Kato Unitrack R550-15.5°
A 11579568 0.053333 20.930666 0.000000 -21.654000 0.000000 15.500000
A 11579568 0.053333 22.377334 0.000000 -21.654000 0.000000 15.500000
END
-TURNOUT 10 0 0 0 0 HO 2 13.891809 2.863926 341.000000 "Kato Unitrack R550-3.5° (incl w/#4 TO) "
+TURNOUT 10 0 0 0 0 HO 2 13.891809 2.863926 341.000000 "Kato Unitrack R550-3.5° (incl w/#4 TO) "
T 1 13.891809 2.863926 251.000000
E 15.154856 3.256113 74.500000
D 0.000000 0.000000
@@ -504,7 +504,7 @@ TURNOUT 13 0 0 0 0 HO 2 27.865728 1.684210 0 0.000000 "Kato Unitrack Straight 6
END
TURNOUT 14 0 0 0 0 HO 2 34.789943 4.043642 0 180.000000 "Kato Unitrack Straight 6 7/8 2-130"
T4 8 34.789943 4.043642 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
- T4 15 27.939549 4.043642 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 27.939549 4.043642 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
D 0.000000 0.000000
P "Normal" 1
S 0 0.000000 0.000000 0.000000 6.850394 0.000000
@@ -512,7 +512,7 @@ TURNOUT 14 0 0 0 0 HO 2 34.789943 4.043642 0 180.000000 "Kato Unitrack Straight
L3 11579568 0.053333 0.000000 -0.723334 0 6.850394 -0.723334 0
END
TURNOUT 15 0 0 0 0 HO 2 27.791908 4.043642 0 180.000000 "Kato Unitrack Straight 6 7/8 2-130"
- T4 14 27.791908 4.043642 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 27.791908 4.043642 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
T4 9 20.941514 4.043642 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
D 0.000000 0.000000
P "Normal" 1
diff --git a/app/lib/demos/dmconn2.xtr b/app/lib/demos/dmconn2.xtr
index 720c677..3cd9837 100644
--- a/app/lib/demos/dmconn2.xtr
+++ b/app/lib/demos/dmconn2.xtr
@@ -2,7 +2,7 @@ VERSION 7
DEMOINIT
ORIG 8.000 5.000 0.000
PARAMETER display description-fontsize 24
-TURNOUT 1 0 0 0 0 N 2 17.157895 20.894737 0.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
+TURNOUT 1 0 0 0 0 N 2 17.157895 20.894737 0.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
T 2 17.157895 20.894737 270.000000
T 8 24.061930 18.034992 135.000000
D 0.000000 0.000000
@@ -11,7 +11,7 @@ TURNOUT 1 0 0 0 0 N 2 17.157895 20.894737 0.000000 "Kato Unitrack Curve 9.75R 2
A 11579568 0.053333 9.290666 0.000000 -9.764000 0.000000 45.000000
A 11579568 0.053333 10.237334 0.000000 -9.764000 0.000000 45.000000
END
-TURNOUT 2 0 0 0 0 N 2 10.253860 18.034992 315.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
+TURNOUT 2 0 0 0 0 N 2 10.253860 18.034992 315.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
T 3 10.253860 18.034992 225.000000
T 1 17.157895 20.894737 90.000000
D 0.000000 0.000000
@@ -20,7 +20,7 @@ TURNOUT 2 0 0 0 0 N 2 10.253860 18.034992 315.000000 "Kato Unitrack Curve 9.75R
A 11579568 0.053333 9.290666 0.000000 -9.764000 0.000000 45.000000
A 11579568 0.053333 10.237334 0.000000 -9.764000 0.000000 45.000000
END
-TURNOUT 3 0 0 0 0 N 2 7.394115 11.130957 270.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
+TURNOUT 3 0 0 0 0 N 2 7.394115 11.130957 270.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
T 4 7.394115 11.130957 180.000000
T 2 10.253860 18.034992 45.000000
D 0.000000 0.000000
@@ -29,7 +29,7 @@ TURNOUT 3 0 0 0 0 N 2 7.394115 11.130957 270.000000 "Kato Unitrack Curve 9.75R
A 11579568 0.053333 9.290666 0.000000 -9.764000 0.000000 45.000000
A 11579568 0.053333 10.237334 0.000000 -9.764000 0.000000 45.000000
END
-TURNOUT 4 0 0 0 0 N 2 10.253860 4.226922 225.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
+TURNOUT 4 0 0 0 0 N 2 10.253860 4.226922 225.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
T 5 10.253860 4.226922 135.000000
T 3 7.394115 11.130957 0.000000
D 0.000000 0.000000
@@ -38,7 +38,7 @@ TURNOUT 4 0 0 0 0 N 2 10.253860 4.226922 225.000000 "Kato Unitrack Curve 9.75R
A 11579568 0.053333 9.290666 0.000000 -9.764000 0.000000 45.000000
A 11579568 0.053333 10.237334 0.000000 -9.764000 0.000000 45.000000
END
-TURNOUT 5 0 0 0 0 N 2 17.157895 1.367177 180.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
+TURNOUT 5 0 0 0 0 N 2 17.157895 1.367177 180.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
T 6 17.157895 1.367177 90.000000
T 4 10.253860 4.226922 315.000000
D 0.000000 0.000000
@@ -47,7 +47,7 @@ TURNOUT 5 0 0 0 0 N 2 17.157895 1.367177 180.000000 "Kato Unitrack Curve 9.75R
A 11579568 0.053333 9.290666 0.000000 -9.764000 0.000000 45.000000
A 11579568 0.053333 10.237334 0.000000 -9.764000 0.000000 45.000000
END
-TURNOUT 6 0 0 0 0 N 2 24.061930 4.226922 135.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
+TURNOUT 6 0 0 0 0 N 2 24.061930 4.226922 135.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
T 7 24.061930 4.226922 45.000000
T 5 17.157895 1.367177 270.000000
D 0.000000 0.000000
@@ -131,7 +131,7 @@ TURNOUT 14 0 0 0 0 N 2 37.310072 3.423450 60.000000 "Kato Unitrack S60L {incl w
L 11579568 0.053333 0.000000 0.473340 2.362204 0.473340
L 11579568 0.053333 0.000000 -0.473340 2.362204 -0.473340
END
-TURNOUT 15 0 0 0 0 N 2 44.895807 1.245404 180.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
+TURNOUT 15 0 0 0 0 N 2 44.895807 1.245404 180.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
T 16 44.895807 1.245404 90.000000
T 13 37.991772 4.105149 315.000000
D 0.000000 0.000000
@@ -140,7 +140,7 @@ TURNOUT 15 0 0 0 0 N 2 44.895807 1.245404 180.000000 "Kato Unitrack Curve 9.75R
A 11579568 0.053333 9.290666 0.000000 -9.764000 0.000000 45.000000
A 11579568 0.053333 10.237334 0.000000 -9.764000 0.000000 45.000000
END
-TURNOUT 16 0 0 0 0 N 2 51.799842 4.105149 135.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
+TURNOUT 16 0 0 0 0 N 2 51.799842 4.105149 135.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
T 17 51.799842 4.105149 45.000000
T 15 44.895807 1.245404 270.000000
D 0.000000 0.000000
@@ -149,7 +149,7 @@ TURNOUT 16 0 0 0 0 N 2 51.799842 4.105149 135.000000 "Kato Unitrack Curve 9.75R
A 11579568 0.053333 9.290666 0.000000 -9.764000 0.000000 45.000000
A 11579568 0.053333 10.237334 0.000000 -9.764000 0.000000 45.000000
END
-TURNOUT 17 0 0 0 0 N 2 54.659587 11.009184 90.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
+TURNOUT 17 0 0 0 0 N 2 54.659587 11.009184 90.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
T 18 54.659587 11.009184 0.000000
T 16 51.799842 4.105149 225.000000
D 0.000000 0.000000
@@ -158,7 +158,7 @@ TURNOUT 17 0 0 0 0 N 2 54.659587 11.009184 90.000000 "Kato Unitrack Curve 9.75R
A 11579568 0.053333 9.290666 0.000000 -9.764000 0.000000 45.000000
A 11579568 0.053333 10.237334 0.000000 -9.764000 0.000000 45.000000
END
-TURNOUT 18 0 0 0 0 N 2 51.799842 17.913219 45.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
+TURNOUT 18 0 0 0 0 N 2 51.799842 17.913219 45.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
T 19 51.799842 17.913219 315.000000
T 17 54.659587 11.009184 180.000000
D 0.000000 0.000000
@@ -167,7 +167,7 @@ TURNOUT 18 0 0 0 0 N 2 51.799842 17.913219 45.000000 "Kato Unitrack Curve 9.75R
A 11579568 0.053333 9.290666 0.000000 -9.764000 0.000000 45.000000
A 11579568 0.053333 10.237334 0.000000 -9.764000 0.000000 45.000000
END
-TURNOUT 19 0 0 0 0 N 2 44.895807 20.772964 0.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
+TURNOUT 19 0 0 0 0 N 2 44.895807 20.772964 0.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
T 20 44.895807 20.772964 270.000000
T 18 51.799842 17.913219 135.000000
D 0.000000 0.000000
@@ -176,7 +176,7 @@ TURNOUT 19 0 0 0 0 N 2 44.895807 20.772964 0.000000 "Kato Unitrack Curve 9.75R
A 11579568 0.053333 9.290666 0.000000 -9.764000 0.000000 45.000000
A 11579568 0.053333 10.237334 0.000000 -9.764000 0.000000 45.000000
END
-TURNOUT 20 0 0 0 0 N 2 37.991772 17.913220 315.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
+TURNOUT 20 0 0 0 0 N 2 37.991772 17.913220 315.000000 "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
T 21 37.991772 17.913220 225.000000
T 19 44.895807 20.772964 90.000000
D 0.000000 0.000000
diff --git a/app/lib/demos/dmctlpnl.xtr b/app/lib/demos/dmctlpnl.xtr
index c045345..f06f1a3 100644
--- a/app/lib/demos/dmctlpnl.xtr
+++ b/app/lib/demos/dmctlpnl.xtr
@@ -117,7 +117,7 @@ RESET
MESSAGE
_________________________________________
-For our control panel we will use ¼" lines.
+For our control panel we will use ¼" lines.
Also, we will use a 1/8" grid to lay out our controls.
First, we will set up the Snap Grid for 1" grid lines and 8 divisions.
@@ -147,19 +147,16 @@ PARAMETER misc cmdDelete
MESSAGE
First step: draw the lines representing the tracks.
-We specify the line width in pixels when at 1:1 zoom.
+We specify the line width in inches.
-To create a 1/4" line, divide the dots-per-inch (DPI) of your display by 4.
-
-For MS-Windows the DPI is usually 98, so choose: 98/4 = 24 (approximately).
-For Linux, the DPI is usually 72, so choose: 72/4 = 18.
+To create a 1/4" line, enter 0.250 in the "Straight Line Width" box at the bottom of the window.
END
STEP
COMMAND DrawLine
PARAMETER draw linewidth 0
PARAMETER draw linecolor 0
PARAMETER GROUP draw
-PARAMETER draw linewidth 24
+PARAMETER draw linewidth 0.250
STEP
KEYSTATE 2
MOUSE 2 1.000 6.000
@@ -495,7 +492,7 @@ MOUSE 4 8.000 3.000
MESSAGE
_________________________________________
-Notice how the Snap Grid keeps the main line and siding track parallel and the connecting tracks and spur at a 45° angle.
+Notice how the Snap Grid keeps the main line and siding track parallel and the connecting tracks and spur at a 45° angle.
END
STEP
RESET
@@ -562,7 +559,7 @@ Now we'll add push buttons to control the turnouts.
END
STEP
ORIG 1 0.0000000 4.000000
-HOTBARSELECT Switch ¼" Push Button
+HOTBARSELECT Switch ¼" Push Button
MOUSE 2 2.750 6.000
MOUSE 4 2.750 6.000
BIGPAUSE
@@ -607,7 +604,7 @@ MOUSE 2 2.953 7.344
MOUSE 4 1.625 5.578
MESSAGE
-We rotate the signals by Shift-Right-Click and select 90° CW on the popup menu. We can not show the popup menu in demo mode, but will simulate the effect.
+We rotate the signals by Shift-Right-Click and select 90° CW on the popup menu. We can not show the popup menu in demo mode, but will simulate the effect.
END
BIGPAUSE
MENU 1.625 5.578 "Structure Rotate" "90 CW"
@@ -712,20 +709,20 @@ MESSAGE
Now for some touch-ups.
Notice when the line meet at an angle there is a gap.
-We will fill this gap with the ¼" dot.
+We will fill this gap with the ¼" dot.
Note: Win95/Win98/WinME does not support drawing lines with flat end-caps, but only with round end-caps.
Users on those platforms will not see the gap.
END
STEP
ORIG 1 2.000 4.000
-HOTBARSELECT Symbols ¼" DOT
+HOTBARSELECT Symbols ¼" DOT
MOUSE 2 3.000 5.000
MOUSE 4 3.000 5.000
BIGPAUSE
MOUSE 8200 3.000 5.000
ORIG 1 8.000 4.000
-HOTBARSELECT Symbols ¼" DOT
+HOTBARSELECT Symbols ¼" DOT
MOUSE 2 9.000 5.000
MOUSE 4 9.000 5.000
BIGPAUSE
@@ -736,7 +733,7 @@ _________________________________________
Add an arrow head to indicate the tracks that connect to the rest of the layout.
-The second arrow will be flipped 180°"
+The second arrow will be flipped 180°"
END
STEP
HOTBARSELECT Symbols Arrow
@@ -755,7 +752,7 @@ MOUSE 6920 0.500 6.000
#MESSAGE
#_________________________________________
#
-#Rotate the arrow head by 180° and move into position.
+#Rotate the arrow head by 180° and move into position.
#END
#MOUSE 2 0.500 6.000
#MOUSE 4 0.500 6.000
@@ -831,7 +828,7 @@ PARAMETER text fontsize -1 24
PARAMETER GROUP text
CLEAR
MESSAGE
-We want to print our control panel onto a 8½x11 page, but the control panel is a bit too wide.
+We want to print our control panel onto a 8½x11 page, but the control panel is a bit too wide.
Lets tighten it up a bit.
@@ -989,7 +986,7 @@ STRUCTURE 28 0 0 0 0 DEMO 2 5.437000 4.750000 0 0.000000 "LED T1 Red LED "
L3 0 0.000000 0.059000 0.000000 0 -0.059000 0.000000 0
L3 0 0.000000 0.000000 0.059000 0 0.000000 -0.059000 0
END
-STRUCTURE 29 0 0 0 0 DEMO 2 2.750000 6.000000 0 0.000000 "Switch ¼"" Push Button "
+STRUCTURE 29 0 0 0 0 DEMO 2 2.750000 6.000000 0 0.000000 "Switch ¼"" Push Button "
D 0.000000 0.000000
G3 16448250 0.000000 0.125000 0.000000 0.000000 0
A3 0 0.013889 0.125000 0.000000 0.000000 0 0.000000 360.000000
@@ -997,7 +994,7 @@ STRUCTURE 29 0 0 0 0 DEMO 2 2.750000 6.000000 0 0.000000 "Switch ¼"" Push Button
L3 0 0.000000 0.125000 0.000000 0 -0.125000 0.000000 0
L3 0 0.000000 0.000000 0.125000 0 0.000000 -0.125000 0
END
-STRUCTURE 30 0 0 0 0 DEMO 2 2.500000 5.500000 0 0.000000 "Switch ¼"" Push Button "
+STRUCTURE 30 0 0 0 0 DEMO 2 2.500000 5.500000 0 0.000000 "Switch ¼"" Push Button "
D 0.000000 0.000000
G3 16448250 0.000000 0.125000 0.000000 0.000000 0
A3 0 0.013889 0.125000 0.000000 0.000000 0 0.000000 360.000000
@@ -1005,7 +1002,7 @@ STRUCTURE 30 0 0 0 0 DEMO 2 2.500000 5.500000 0 0.000000 "Switch ¼"" Push Button
L3 0 0.000000 0.125000 0.000000 0 -0.125000 0.000000 0
L3 0 0.000000 0.000000 0.125000 0 0.000000 -0.125000 0
END
-STRUCTURE 31 0 0 0 0 DEMO 2 8.000000 6.000000 0 0.000000 "Switch ¼"" Push Button "
+STRUCTURE 31 0 0 0 0 DEMO 2 8.000000 6.000000 0 0.000000 "Switch ¼"" Push Button "
D 0.000000 0.000000
G3 16448250 0.000000 0.125000 0.000000 0.000000 0
A3 0 0.013889 0.125000 0.000000 0.000000 0 0.000000 360.000000
@@ -1013,7 +1010,7 @@ STRUCTURE 31 0 0 0 0 DEMO 2 8.000000 6.000000 0 0.000000 "Switch ¼"" Push Button
L3 0 0.000000 0.125000 0.000000 0 -0.125000 0.000000 0
L3 0 0.000000 0.000000 0.125000 0 0.000000 -0.125000 0
END
-STRUCTURE 32 0 0 0 0 DEMO 2 8.250000 5.500000 0 0.000000 "Switch ¼"" Push Button "
+STRUCTURE 32 0 0 0 0 DEMO 2 8.250000 5.500000 0 0.000000 "Switch ¼"" Push Button "
D 0.000000 0.000000
G3 16448250 0.000000 0.125000 0.000000 0.000000 0
A3 0 0.013889 0.125000 0.000000 0.000000 0 0.000000 360.000000
@@ -1021,7 +1018,7 @@ STRUCTURE 32 0 0 0 0 DEMO 2 8.250000 5.500000 0 0.000000 "Switch ¼"" Push Button
L3 0 0.000000 0.125000 0.000000 0 -0.125000 0.000000 0
L3 0 0.000000 0.000000 0.125000 0 0.000000 -0.125000 0
END
-STRUCTURE 33 0 0 0 0 DEMO 2 5.937000 5.000000 0 0.000000 "Switch ¼"" Push Button "
+STRUCTURE 33 0 0 0 0 DEMO 2 5.937000 5.000000 0 0.000000 "Switch ¼"" Push Button "
D 0.000000 0.000000
G3 16448250 0.000000 0.125000 0.000000 0.000000 0
A3 0 0.013889 0.125000 0.000000 0.000000 0 0.000000 360.000000
@@ -1029,7 +1026,7 @@ STRUCTURE 33 0 0 0 0 DEMO 2 5.937000 5.000000 0 0.000000 "Switch ¼"" Push Button
L3 0 0.000000 0.125000 0.000000 0 -0.125000 0.000000 0
L3 0 0.000000 0.000000 0.125000 0 0.000000 -0.125000 0
END
-STRUCTURE 34 0 0 0 0 DEMO 2 5.687000 4.500000 0 0.000000 "Switch ¼"" Push Button "
+STRUCTURE 34 0 0 0 0 DEMO 2 5.687000 4.500000 0 0.000000 "Switch ¼"" Push Button "
D 0.000000 0.000000
G3 16448250 0.000000 0.125000 0.000000 0.000000 0
A3 0 0.013889 0.125000 0.000000 0.000000 0 0.000000 360.000000
@@ -1107,11 +1104,11 @@ STRUCTURE 40 0 0 0 0 DEMO 2 7.500000 4.625000 0 90.000000 "Signals Sgl Signal 1
L3 0 0.027778 0.000000 -0.109375 0 0.000000 -0.600000 0
L3 0 0.027778 -0.100000 -0.600000 0 0.100000 -0.600000 0
END
-STRUCTURE 41 0 0 0 0 DEMO 2 3.000000 5.000000 0 0.000000 "Symbols ¼"" DOT "
+STRUCTURE 41 0 0 0 0 DEMO 2 3.000000 5.000000 0 0.000000 "Symbols ¼"" DOT "
D 0.000000 0.000000
G3 0 0.000000 0.125000 0.000000 0.000000 0
END
-STRUCTURE 42 0 0 0 0 DEMO 2 7.750000 5.000000 0 0.000000 "Symbols ¼"" DOT "
+STRUCTURE 42 0 0 0 0 DEMO 2 7.750000 5.000000 0 0.000000 "Symbols ¼"" DOT "
D 0.000000 0.000000
G3 0 0.000000 0.125000 0.000000 0.000000 0
END
diff --git a/app/lib/demos/dmdelund.xtr b/app/lib/demos/dmdelund.xtr
index 5215c06..de76430 100644
--- a/app/lib/demos/dmdelund.xtr
+++ b/app/lib/demos/dmdelund.xtr
@@ -84,7 +84,7 @@ STEP
REGRESSION START 10 - delete
CURVE 2 0 0 0 0 DEMO 2 21.833333 25.924310 0 24.125000 0 0.000000 0.000000
E4 40.128499 10.198454 40.681260 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
- T4 3 23.852360 1.883945 265.199288 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 23.852360 1.883945 265.199288 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
END
REGRESSION END
CLEAR
diff --git a/app/lib/demos/dmexcept.xtr b/app/lib/demos/dmexcept.xtr
index ae1c8aa..ff98734 100644
--- a/app/lib/demos/dmexcept.xtr
+++ b/app/lib/demos/dmexcept.xtr
@@ -31,7 +31,7 @@ RESET
MESSAGE
XTrackCAD can help find tracks that are curved too sharply or are too steep. These tracks are Exception tracks and are drawn in the Exception track color.
-In this example we have a curved track with radius of 9" and a straight track with a grade of 3.8%.
+In this example we have a curved track with radius of 9 inches and a straight track with a grade of 3.8 percent.
END
STEP
@@ -39,7 +39,7 @@ PARAMETER misc cmdLayout
MESSAGE
_________________________________________
-The Layout dialog shows the Minimum Track Radius is 9" and the Maximum Track Grade is 5%.
+The Layout dialog shows the Minimum Track Radius is 9 inches and the Maximum Track Grade is 5 percent.
END
STEP
PARAMETER layout mintrackradius 9.000000
diff --git a/app/lib/demos/dmgroup.xtr b/app/lib/demos/dmgroup.xtr
index 2c7741b..7c6c7cd 100644
--- a/app/lib/demos/dmgroup.xtr
+++ b/app/lib/demos/dmgroup.xtr
@@ -28,7 +28,7 @@ COMMAND DrawLine
PARAMETER draw linewidth 0
PARAMETER draw linecolor 0
PARAMETER GROUP draw
-PARAMETER draw linewidth 4
+PARAMETER draw linewidth 0.055555
MOUSE 1 2.500 3.000
COMMAND DrawLine
MOUSE 2 2.500 3.000
@@ -256,7 +256,7 @@ MOUSE 4 11.156 4.281
BIGPAUSE
COMMAND TurnoutHotBar
#PARAMETER turnout list 0
-PARAMETER GROUP turnout
+PARAMETER GROUP newFixedTrack
HOTBARSELECT Peco-55 Modified Medium Right SL-E395F
MOUSE 1 4.750 1.906
MOUSE 2 4.750 1.906
@@ -464,7 +464,7 @@ PARAMETER describe P1 2
MESSAGE
_________________________________________
-We want the curve to have a radius of 20" and an angle of 17.5�.
+We want the curve to have a radius of 20" and an angle of 17.5°.
First change the Radius...
END
STEP
diff --git a/app/lib/demos/dmhelix.xtr b/app/lib/demos/dmhelix.xtr
index f02c1d6..88707da 100644
--- a/app/lib/demos/dmhelix.xtr
+++ b/app/lib/demos/dmhelix.xtr
@@ -28,7 +28,7 @@ PARAMETER helix vertSep 0.0
MESSAGE
_________________________________________
-We will be creating a helix with a Elevation Difference of 12", Grade of 1.5% and limit the Vertical Separation to at least 2".
+We will be creating a helix with a Elevation Difference of 12 inches, Grade of 1.5 percent and limit the Vertical Separation to at least 2 inches.
END
STEP
MESSAGE
@@ -52,7 +52,7 @@ STEP
MESSAGE
_________________________________________
-Next set the Grade to 1.5%
+Next set the Grade to 1.5 percent
Notice how this causes the Radius to change.
END
STEP
@@ -85,7 +85,7 @@ BIGPAUSE
MESSAGE
_________________________________________
-Lastly change the Vertical Separation to 2.5". The number of Turns will change to 4 and the grade increase to almost 3%.
+Lastly change the Vertical Separation to 2.5 inches. The number of Turns will change to 4 and the grade increase to almost 3 percent.
Note: the Vertical Separation will be increased. This value is the Elevation Difference (12.0) divided by the total number of turns. The total number of turns is 4.25: 4 whole Turns plus a quarter turn for the Angular Separation.
END
@@ -176,7 +176,7 @@ REDRAW
MESSAGE
_________________________________________
-We have set the elevations to 1" and 13" to produce a grade of 3.0% with 2.8" between coils.
+We have set the elevations to 1 inch and 13 inches to produce a grade of 3.0 percent with 2.8 inches between coils.
You can use the <Describe> command to change the number of Turns or the Elevations at either end of the Helix. This will affect the Grade and Vertical Separation.
END
diff --git a/app/lib/demos/dmlines.xtr b/app/lib/demos/dmlines.xtr
index 082a324..32555fb 100644
--- a/app/lib/demos/dmlines.xtr
+++ b/app/lib/demos/dmlines.xtr
@@ -94,7 +94,7 @@ _________________________________________
You also draw in various colors and line widths.
END
PARAMETER draw linecolor 255
-PARAMETER draw linewidth 6
+PARAMETER draw linewidth 0.055555
STEP
KEYSTATE A
MOUSE 2 0.747 4.693
diff --git a/app/lib/demos/dmlines2.xtr b/app/lib/demos/dmlines2.xtr
index 580dafe..f90ba88 100644
--- a/app/lib/demos/dmlines2.xtr
+++ b/app/lib/demos/dmlines2.xtr
@@ -91,7 +91,7 @@ RESET
MESSAGE
We also draw Polylines and filled shapes.
END
-PARAMETER draw linewidth 2
+PARAMETER draw linewidth 0.027777
PARAMETER draw linecolor 11591910
COMMAND DrawPolyline
STEP
@@ -102,7 +102,7 @@ A Polyline is drawn by dragging to place each of the point in the Polyline.
END
STEP
PARAMETER draw linecolor 0
-PARAMETER draw linewidth 3
+PARAMETER draw linewidth 0.041667
PARAMETER draw linecolor 32768
MOUSE 2 0.64 6.07
MOUSE 4 0.64 6.07
diff --git a/app/lib/demos/dmnotes.xtr b/app/lib/demos/dmnotes.xtr
index 6125354..aa1b4cd 100644
--- a/app/lib/demos/dmnotes.xtr
+++ b/app/lib/demos/dmnotes.xtr
@@ -4,7 +4,7 @@ ORIG 8.000 0.000 0.000
REDRAW
RESET
MESSAGE
-The <Note> command lets you attach notes to various spots on the layout.
+The <Text Note> command lets you attach notes to various spots on the layout.
END
STEP
COMMAND TextNote
@@ -14,22 +14,63 @@ MOUSE 4 9.917 7.167
MESSAGE
_________________________________________
-When you place a note, the Note editor window is displayed which lets you enter the note.
+When you place a note, the Text Note editor window is displayed which lets you enter the note.
END
STEP
-RESET
-MOUSE 6920 9.917 7.167
+#RESET
+#MOUSE 6920 9.917 7.167
+#MOUSE 3336 9.917 7.167
+PARAMETER textNote ok
MESSAGE
_________________________________________
-If you click on a note in <Describe> mode the Note editor displays the note.
+If you click on a note in <Describe> mode the Text Note editor displays the note allowing you to modify the note..
END
STEP
COMMAND Describe
MOUSE 2 9.917 7.167
MOUSE 4 9.917 7.167
STEP
-MOUSE 6920 9.917 7.167
+#MOUSE 6920 9.917 7.167
+PARAMETER textNote ok
+
+MESSAGE
+_________________________________________
+
+You can also create a reference to a file or web link.
+
+Choose the type of link by clicking on the down arrow beside the Note commmand.
+END
+STEP
+
+COMMAND FileNote
+MOUSE 2 9.917 7.167
+MOUSE 3 7.917 7.167
+MOUSE 4 7.917 7.167
+MESSAGE
+_________________________________________
+
+This is a File Note. You can specify the Title of the File and its location
+END
+STEP
+PARAMETER fileNote cancel
+MOUSE 6920 7.917 7.167
+RESET
+
+COMMAND LinkNote
+MOUSE 2 7.917 7.167
+MOUSE 3 5.917 7.167
+MOUSE 4 5.917 7.167
+MESSAGE
+_________________________________________
+
+This is a Web Link Note. You can specify the Title of the Link and its URL
+END
+STEP
+PARAMETER linkNote cancel
+MOUSE 6920 5.917 7.167
+RESET
+
REGRESSION START 10 - notes
NOTE 1 0 0 0 9.917000 7.167000 0 32
Replace this text with your note
diff --git a/app/lib/demos/dmrescal.xtr b/app/lib/demos/dmrescal.xtr
index 015a735..c4ac3a6 100644
--- a/app/lib/demos/dmrescal.xtr
+++ b/app/lib/demos/dmrescal.xtr
@@ -119,6 +119,8 @@ PARAMETER misc cmdRescale
MESSAGE
The <Rescale> command will change the size of the selected objects.
+Note: due to technical reasons, the To Scale drop down list is blank. For this demo it should show 'DEMO'.
+
First we will try rescaling by ratio.
END
STEP
@@ -126,7 +128,7 @@ PARAMETER rescale toggle 1
MESSAGE
_________________________________________
-We are going to make everything 150% bigger.
+We are going to make everything 150 percent bigger.
END
STEP
@@ -139,7 +141,6 @@ END
STEP
PARAMETER misc cmdUndo
RESET
-PARAMETER misc cmdRescale
MESSAGE
_________________________________________
@@ -148,9 +149,10 @@ Let's try that again.
Now we are going to convert from one scale to another.
END
STEP
+PARAMETER misc cmdSelectAll
+PARAMETER misc cmdRescale
PARAMETER rescale toggle 0
PARAMETER rescale toS 5 HO
-PARAMETER misc cmdSelectAll
MESSAGE
_________________________________________
diff --git a/app/lib/demos/dmrotate.xtr b/app/lib/demos/dmrotate.xtr
index ed04a77..895c5b6 100644
--- a/app/lib/demos/dmrotate.xtr
+++ b/app/lib/demos/dmrotate.xtr
@@ -135,7 +135,7 @@ MOUSE 4 1.000 10.000
MESSAGE
_________________________________________
-The <Rotate> command will restrict the rotation to increments of 15° if you hold down the <Shift> and <Ctrl> keys.
+The <Rotate> command will restrict the rotation to increments of 15° if you hold down the <Shift> and <Ctrl> keys.
END
STEP
PARAMETER misc cmdUndo
@@ -327,7 +327,7 @@ END
#MESSAGE
#_________________________________________
#
-#Shift-Right-Click will display a popup-menu that you can use to rotate by fixed amount (15°, 30°, 45°, 90° or 180°).
+#Shift-Right-Click will display a popup-menu that you can use to rotate by fixed amount (15°, 30°, 45°, 90° or 180°).
#
#We can not currently show this command.
#END
@@ -362,7 +362,7 @@ END
#MESSAGE
#_________________________________________
#
-#If we drag the mouse across the track, we can flip the structure by 180°. This is similar to how we place turnouts.
+#If we drag the mouse across the track, we can flip the structure by 180°. This is similar to how we place turnouts.
#END
#STEP
#MOUSE 3 6.750 2.750
diff --git a/app/lib/demos/dmselect.xtr b/app/lib/demos/dmselect.xtr
index 06bed0c..cff9af7 100644
--- a/app/lib/demos/dmselect.xtr
+++ b/app/lib/demos/dmselect.xtr
@@ -177,12 +177,36 @@ Selected tracks can be moved or rotated during the <Select> command.
Selected tracks can also be deleted, hidden, listed and exported.
-When you move the cursor near a track that could be selected, the track is drawn with think blue lines.
+When you move the cursor near a track that could be selected, the track is drawn with thick blue lines.
END
STEP
COMMAND Select
MESSAGE
_________________________________________
+The Select operates in two modes which are controled by the Options|Command menu.
+END
+PARAMETER misc cmdCmdopt
+BIGPAUSE
+PARAMETER cmdopt selectmode 1
+MESSAGE
+
+In 'classic' mode, clicking on an object adds it to set of selected objects.
+END
+STEP
+PARAMETER cmdopt selectmode 0
+MESSAGE
+
+In the 'new' mode, clicking on an object deselectes all other objects, leaving just the newly selected object.
+Holding down the Ctrl key reverses this behavior.
+
+This demo will use the 'new' mode.
+
+There is also an option to the control the behavior of clicking on empty space: do nothing or deselecting all objects.
+END
+STEP
+PARAMETER cmdopt ok
+MESSAGE
+_________________________________________
A Left-Click selects a track
END
@@ -263,8 +287,12 @@ _________________________________________
Be careful with this because its very easy to select all tracks this way
END
STEP
-MOUSE 2 19.840 2.560
-MOUSE 4 19.840 2.560
+MOUSE 2 12.000 5.560
+MOUSE 4 12.000 5.560
+#KEYSTATE C
+#MOUSE 2 19.840 2.560
+#KEYSTATE C
+#MOUSE 4 19.840 2.560
BIGPAUSE
KEYSTATE 2
MOUSE 2 19.840 2.560
diff --git a/app/lib/demos/dmtosel.xtr b/app/lib/demos/dmtosel.xtr
index df3d067..14c404c 100644
--- a/app/lib/demos/dmtosel.xtr
+++ b/app/lib/demos/dmtosel.xtr
@@ -1,7 +1,7 @@
VERSION 2
DEMOINIT
ORIG 4.000 0.000 0.000
-PARAMETER turnout hide 1
+PARAMETER newFixedTrack hide 1
STRAIGHT 1 DEMO 1
E 2.050000 1.050000 270.000000
T 3 14.883333 1.050017 90.000000
@@ -28,19 +28,22 @@ STRAIGHT 4 DEMO 1
REDRAW
RESET
MESSAGE
-Pressing the turnout button displays the Turnout Selection window to let you choose a turnout to place.
-
-Note that once you start to place the turnout on the Main window the Turnout Selection window disappears. This feature is enabled by the Hide toggle button on the dialog.
+We chose the turnout we want to place by clicking on the HotBar.
END
STEP
-COMMAND Turnout
-MOUSE 2 5.750 6.583
+##COMMAND Turnout
+COMMAND TurnoutHotBar
+##PARAMETER turnout list 0
+##PARAMETER turnout hide 0
+PARAMETER GROUP newFixedTrack
+HOTBARSELECT Peco-55 Medium Right SL-E395F
MESSAGE
_________________________________________
You can place the turnout on a arbitrary position on the layout. Left-drag the turnout into place...
END
STEP
+MOUSE 2 5.750 6.583
MOUSE 3 5.833 6.583
PAUSE 110
MOUSE 3 6.333 6.583
@@ -57,6 +60,41 @@ MOUSE 3 8.333 6.750
PAUSE 110
MOUSE 3 8.750 6.917
PAUSE 110
+MESSAGE
+_________________________________________
+
+We are moving the Turnout by dragging on the 'Active End Point'
+We can change the 'Active End Point' by a Shift-Left-Click
+END$MESSAGE
+STEP
+KEYSTATE 2
+MOUSE 2 8.750 6.917
+KEYSTATE 2
+MOUSE 4 8.750 6.917
+MOUSE 525 8.750 6.917
+MESSAGE
+
+Notice the Turnout has rotated to the next End Point.
+END$MESSAGE
+STEP
+MESSAGE
+
+If we continue to Shift-Left-Click 2 more times, we will return to the original position.
+END$MESSAGE
+STEP
+KEYSTATE 2
+MOUSE 2 8.750 6.917
+KEYSTATE 2
+MOUSE 4 8.750 6.917
+MOUSE 525 8.750 6.917
+BIGPAUSE
+KEYSTATE 2
+MOUSE 2 8.750 6.917
+KEYSTATE 2
+MOUSE 4 8.750 6.917
+MOUSE 525 8.750 6.917
+BIGPAUSE
+MOUSE 2 8.750 6.917
MOUSE 3 9.250 6.917
PAUSE 110
MOUSE 3 9.750 6.917
@@ -137,8 +175,6 @@ MESSAGE
_________________________________________
When you are satisfied with the position and orientation of the turnout press Space bar or the Return key on the keyboard to finish placing the turnout.
-
-Pressing the Close button on the Turnout dialog will end the <Turnout> command as well as placing the turnout.
END
STEP
MOUSE 3336 10.500 10.250
@@ -220,7 +256,7 @@ PAUSE 170
MESSAGE
_________________________________________
-By moving the cursor from one side to the other of the track centerline you can flip the turnout 180�.
+By moving the cursor from one side to the other of the track centerline you can flip the turnout 180°.
END
STEP
MOUSE 3 10.667 1.333
@@ -363,12 +399,12 @@ TURNOUT 7 0 0 0 0 DEMO 2 30.934023 6.328592 0 304.064054 "Peco-55 Medium Right
END
REGRESSION END
CLEAR
-MESSAGE
-
-Pressing Close ends the <Turnout> command.
-END
-STEP
-PARAMETER turnout ok
+##MESSAGE
+##
+##Pressing Close ends the <Turnout> command.
+##END
+##STEP
+##PARAMETER turnout ok
MESSAGE
=========================================
END
diff --git a/app/lib/demos/dmtoyard.xtr b/app/lib/demos/dmtoyard.xtr
index bff62af..df4afe6 100644
--- a/app/lib/demos/dmtoyard.xtr
+++ b/app/lib/demos/dmtoyard.xtr
@@ -2,7 +2,7 @@ VERSION 2
DEMOINIT
ORIG 4.000 0.000 0.000
PARAMETER display description-fontsize 24
-PARAMETER turnout hide 1
+##PARAMETER turnout hide 1
STRAIGHT 1 DEMO 1
E 3.666667 1.833333 270.000000
E 41.833333 1.833333 90.000000
@@ -10,19 +10,21 @@ STRAIGHT 1 DEMO 1
REDRAW
RESET
MESSAGE
-This example show how to layout a yard using the <Turnout> and <Parallel> commands.
+This example show how to layout a yard using Turnouts from the HotBar and the <Parallel> command.
END
STEP
-COMMAND Turnout
+##COMMAND Turnout
+COMMAND TurnoutHotBar
+HOTBARSELECT Peco-55 Medium Right SL-E395F
MESSAGE
_________________________________________
-You can resize and move the Turnout Selection dialog if it obscures the other windows.
+We'll choose a Turnout from the HotBar
-First we place a turnout on the main line.
+Then we place the Turnout on the main line.
END
STEP
-PARAMETER turnout list 0 Peco-55 SL-E395F Medium Right
+##PARAMETER turnout list 0 Peco-55 SL-E395F Medium Right
MOUSE 2 35.417 1.917
#BIGPAUSE
MOUSE 3 36.5 1.917
@@ -30,12 +32,13 @@ MOUSE 3 36.5 1.917
MOUSE 3 36.5 1.917
BIGPAUSE
MOUSE 4 36.5 1.917
-PARAMETER turnout ok
+##PARAMETER turnout ok
+MOUSE 3336 36.5 1.917
RESET
MESSAGE
_________________________________________
-Next extend the turnout with the <Modify> command.
+Next extend the Turnout with the <Modify> command.
END
STEP
COMMAND Modify
@@ -62,7 +65,7 @@ RESET
MESSAGE
_________________________________________
-And place a turnout to connect the new track.
+And place a Turnout to connect the new track.
We'll zoom in here to see what's going on.
END
@@ -71,14 +74,16 @@ STEP
#PAN 7 23.333 1.000
ORIG 2.000 21.333 1.000
BIGPAUSE
-COMMAND Turnout
-PARAMETER turnout list 0 Peco-55 SL-E396F Medium Left
+##COMMAND Turnout
+##PARAMETER turnout list 0 Peco-55 SL-E396F Medium Left
+COMMAND TurnoutHotBar
+HOTBARSELECT Peco-55 Medium Left SL-E396F
MOUSE 1 29.500 2.542
MOUSE 2 29.500 2.542
MESSAGE
_________________________________________
-Notice how we control which way the turnout is facing by moving the mouse across the center line of the track.
+Notice how we control which way the Turnout is facing by moving the mouse across the center line of the track.
END
STEP
@@ -94,19 +99,20 @@ MOUSE 3 29.625 2.667
MESSAGE
_________________________________________
-The Status bar displays the number of auto-connections that will be made and the maximum offset.
+The Status bar displays the number of auto-connections that will be made (3) and the maximum offset (0.000).
-XTrackCAD adjusts the turnout position for the best fit to minimize any connection offset
+XTrackCAD adjusts the Turnout position for the best fit to minimize any connection offset
END
STEP
MOUSE 4 29.625 2.667
#MOUSE 4 27.625 2.9
-PARAMETER turnout ok
-#RESET
+##PARAMETER turnout ok
+MOUSE 3336 29.625 2.667
+RESET
MESSAGE
_________________________________________
-Note that placing the turnout splits the parallel track.
+Note that placing the Turnout splits the parallel track.
We have to delete the leftover piece by Selecting and Deleting it.
END
@@ -132,14 +138,17 @@ MOUSE 4 16.417 3.583
RESET
BIGPAUSE
ORIG 2.000 16.000 2.000
-COMMAND Turnout
-PARAMETER turnout list 0 Peco-55 SL-E396F Medium Left
+##COMMAND Turnout
+##PARAMETER turnout list 0 Peco-55 SL-E396F Medium Left
+COMMAND TurnoutHotBar
+HOTBARSELECT Peco-55 Medium Left SL-E396F
MOUSE 2 22.167 3.938
MOUSE 3 21.750 4.000
BIGPAUSE
MOUSE 4 21.750 4.000
-PARAMETER turnout ok
-#RESET
+##PARAMETER turnout ok
+MOUSE 3336 21.750 4.000
+RESET
#COMMAND Select
MOUSE 2 22.688 4.438
MOUSE 4 22.688 4.438
@@ -149,7 +158,7 @@ ORIG 4.000 0.000 0.000
MESSAGE
_________________________________________
-For the last track we will join with a curve instead of a turnout.
+For the last track we will join with a curve instead of a Turnout.
END
STEP
BIGPAUSE
diff --git a/app/lib/examples/CMakeLists.txt b/app/lib/examples/CMakeLists.txt
deleted file mode 100644
index df91164..0000000
--- a/app/lib/examples/CMakeLists.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-FILE(GLOB EXAMPLE_FILES *.xtc)
-INSTALL(
- FILES ${EXAMPLE_FILES}
- DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}/examples
- )
-
diff --git a/app/lib/examples/G Scale Folded Dogbone.xtc b/app/lib/examples/G Scale Folded Dogbone.xtc
new file mode 100644
index 0000000..5c17524
--- /dev/null
+++ b/app/lib/examples/G Scale Folded Dogbone.xtc
@@ -0,0 +1,15282 @@
+#XTrackCAD Version: 5.3.0Beta1, Date: Tue Dec 7 14:21:34 2021
+
+VERSION 12 5.2.0
+TITLE1 Folded Dogbone
+TITLE2
+MAPSCALE 424
+ROOMSIZE 600.000000 x 240.000000
+SCALE A
+LAYERS 0 1 0 1 255 0 0 0 0 "Main"
+LAYERS 1 1 0 0 128 0 0 0 0 "Yard"
+LAYERS 2 0 0 1 32768 0 0 0 0 "Structure"
+LAYERS 3 1 0 0 32768 0 0 0 0 "Vegetation"
+LAYERS 4 1 0 0 12632256 0 0 0 0 "Hardscape"
+LAYERS 5 0 0 1 32960 0 0 0 0 "Water Feature"
+LAYERS 6 0 0 1 8388608 0 1 0 0 ""
+LAYERS 7 0 0 1 8388736 0 0 0 0 ""
+LAYERS 8 0 0 1 8421376 0 0 0 0 ""
+LAYERS 9 0 0 1 8404992 0 1 0 0 ""
+LAYERS CURRENT 1
+DRAW 1 4 0 0 0 0.000000 0.000000 0 0.000000
+ F4 13033643 0.000000 4 0
+ 0.000000 240.000000 0
+ 600.000000 240.000000 0
+ 600.000000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 2 4 0 0 0 0.000000 0.000000 0 0.000000
+ F4 15850383 0.000000 11 0
+ 222.000000 198.000000 0
+ 258.000000 198.000000 0
+ 306.000000 186.000000 0
+ 342.000000 144.000000 0
+ 384.000000 132.000000 0
+ 438.000000 78.000000 0
+ 498.000000 42.000000 0
+ 516.000000 0.000000 0
+ 300.000000 0.000000 0
+ 198.000000 90.000000 0
+ 180.000000 156.000000 0
+ END$SEGS
+DRAW 3 0 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12165698 0.000000 4 0
+ 325.931804 141.850347 0
+ 332.096547 131.554913 0
+ 328.664736 129.499999 0
+ 322.499993 139.795433 0
+ END$SEGS
+DRAW 4 0 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12165698 0.000000 4 0
+ 231.431804 82.350347 0
+ 237.596547 72.054913 0
+ 234.164736 69.999999 0
+ 227.999993 80.295433 0
+ END$SEGS
+DRAW 5 0 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12165698 0.000000 4 0
+ 296.181804 122.850347 0
+ 302.346547 112.554913 0
+ 298.914736 110.499999 0
+ 292.749993 120.795433 0
+ END$SEGS
+DRAW 6 0 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12165698 0.000000 4 0
+ 261.056804 100.850347 0
+ 267.221547 90.554913 0
+ 263.789736 88.499999 0
+ 257.624993 98.795433 0
+ END$SEGS
+DRAW 7 0 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12165698 0.000000 4 0
+ 355.181804 160.100347 0
+ 361.346547 149.804913 0
+ 357.914736 147.749999 0
+ 351.749993 158.045433 0
+ END$SEGS
+DRAW 8 0 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12165698 0.000000 4 1
+ 202.334041 64.206434 0
+ 208.498784 53.911000 0
+ 205.066973 51.856086 0
+ 198.902230 62.151519 0
+ END$SEGS
+DRAW 9 4 0 0 0 0.000000 0.000000 0 0.000000
+ F4 10013184 0.000000 11 0
+ 18.000000 132.000000 0
+ 78.000000 138.000000 0
+ 108.000000 144.000000 0
+ 120.000000 150.000000 0
+ 138.000000 174.000000 0
+ 156.000000 192.000000 0
+ 180.000000 210.000000 0
+ 186.000000 228.000000 0
+ 186.000000 240.000000 0
+ 0.000000 240.000000 0
+ 0.000000 127.500000 0
+ END$SEGS
+TURNOUT 10 0 0 0 0 A 18 252.275805 132.144545 0 54.594068 "USA Trains 60"" Straight R81065"
+ T4 90 252.275805 132.144545 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 109 287.037778 83.240504 144.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 11 0 2 0 0 A 18 230.494997 110.192150 0 54.594068 "USA Trains 60"" Straight R81065"
+ T4 52 230.494997 110.192150 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 37 265.256971 61.288109 144.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 12 0 0 0 0 A 18 257.166209 135.620742 0 54.594068 "USA Trains 60"" Straight R81065"
+ T4 91 257.166209 135.620742 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 106 291.928182 86.716701 144.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 13 0 0 0 0 A 18 280.851806 123.011520 0 54.594068 "USA Trains 24"" Straight R81060"
+ T4 96 280.851806 123.011520 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 98 294.756596 103.449903 144.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ END$SEGS
+TURNOUT 14 0 0 0 0 A 18 262.056613 139.096939 0 54.594068 "USA Trains 60"" Straight R81065"
+ T4 92 262.056613 139.096939 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 102 296.818586 90.192898 144.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 15 0 0 0 0 A 18 247.385401 128.668347 0 414.594068 "USA Trains 60"" Straight R81065"
+ T4 89 247.385401 128.668347 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 112 282.147375 79.764306 144.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 16 0 2 0 0 A 18 494.496445 22.251496 0 350.405828 "USA Trains 16' Diameter R81800"
+ T4 41 494.496445 22.251496 260.405828 9 -4.496445 14.748504 0.000000 0.000000 1 1 0 0.534370
+ T4 17 529.502267 35.579846 57.905828 0 0.0 0.0 0.0 0.0 0 0 0 0.534370
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 17 0 2 0 0 A 18 529.502267 35.579846 0 327.905828 "USA Trains 16' Diameter R81800"
+ T4 16 529.502267 35.579846 237.905828 0 0.0 0.0 0.0 0.0 0 0 0 1.603111
+ T4 18 556.742900 61.289774 35.405828 0 0.0 0.0 0.0 0.0 0 0 0 1.603111
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 18 0 2 0 0 A 18 556.742900 61.289774 0 305.405828 "USA Trains 16' Diameter R81800"
+ T4 17 556.742900 61.289774 215.405828 0 0.0 0.0 0.0 0.0 0 0 0 2.671851
+ T4 19 572.071210 95.467185 12.905828 0 0.0 0.0 0.0 0.0 0 0 0 2.671851
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 19 0 2 0 0 A 18 572.071210 95.467185 0 282.905828 "USA Trains 16' Diameter R81800"
+ T4 18 572.071210 95.467185 192.905828 0 0.0 0.0 0.0 0.0 0 0 0 3.740592
+ T4 20 573.153606 132.908885 350.405828 0 0.0 0.0 0.0 0.0 0 0 0 3.740592
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 20 0 2 0 0 A 18 573.153606 132.908885 0 260.405828 "USA Trains 16' Diameter R81800"
+ T4 19 573.153606 132.908885 170.405828 0 0.0 0.0 0.0 0.0 0 0 0 4.809333
+ T4 21 559.825303 167.914725 327.905828 0 0.0 0.0 0.0 0.0 0 0 0 4.809333
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 21 0 2 0 0 A 18 559.825303 167.914725 0 237.905828 "USA Trains 16' Diameter R81800"
+ T4 20 559.825303 167.914725 147.905828 0 0.0 0.0 0.0 0.0 0 0 0 5.878073
+ T4 22 534.115410 195.155392 305.405828 0 0.0 0.0 0.0 0.0 0 0 0 5.878073
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 22 0 2 0 0 A 18 534.115410 195.155392 0 215.405828 "USA Trains 16' Diameter R81800"
+ T4 21 534.115410 195.155392 125.405828 0 0.0 0.0 0.0 0.0 0 0 0 6.946814
+ T4 23 499.938020 210.483747 282.905828 0 0.0 0.0 0.0 0.0 0 0 0 6.946814
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 23 0 2 0 0 A 18 499.938020 210.483747 0 192.905828 "USA Trains 16' Diameter R81800"
+ T4 22 499.938020 210.483747 102.905828 0 0.0 0.0 0.0 0.0 0 0 0 8.015554
+ T4 32 462.496321 211.566193 260.405828 0 0.0 0.0 0.0 0.0 0 0 0 8.015554
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 24 0 2 0 0 A 18 483.000000 12.001386 0 359.999896 "USA Trains 20' Diameter R81900"
+ T4 42 483.000000 12.001386 269.999896 9 1.000000 -6.001386 0.000000 0.000000 1 1 0 0.576999
+ T4 25 528.921995 21.135925 67.499896 0 0.0 0.0 0.0 0.0 0 0 0 0.576999
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -120.000000 0.000000 120.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 25 0 2 0 0 A 18 528.921995 21.135925 0 337.499896 "USA Trains 16' Diameter R81800"
+ T4 24 528.921995 21.135925 247.499896 0 0.0 0.0 0.0 0.0 0 0 0 1.615596
+ T4 26 560.066606 41.946156 44.999896 0 0.0 0.0 0.0 0.0 0 0 0 1.615596
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 26 0 2 0 0 A 18 560.066606 41.946156 0 314.999896 "USA Trains 16' Diameter R81800"
+ T4 25 560.066606 41.946156 224.999896 0 0.0 0.0 0.0 0.0 0 0 0 2.538793
+ T4 116 580.876755 73.090822 22.499896 0 0.0 0.0 0.0 0.0 0 0 0 2.538793
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 27 0 2 0 0 A 18 580.876695 164.934849 0 247.499896 "USA Trains 16' Diameter R81800"
+ T4 30 580.876695 164.934849 157.499896 0 0.0 0.0 0.0 0.0 0 0 0 5.769985
+ T4 28 560.066506 196.079487 314.999896 0 0.0 0.0 0.0 0.0 0 0 0 5.769985
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 28 0 2 0 0 A 18 560.066506 196.079487 0 224.999896 "USA Trains 16' Diameter R81800"
+ T4 27 560.066506 196.079487 134.999896 0 0.0 0.0 0.0 0.0 0 0 0 6.693183
+ T4 29 528.921868 216.889677 292.499896 0 0.0 0.0 0.0 0.0 0 0 0 6.693183
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 29 0 2 0 0 A 18 528.921868 216.889677 0 202.499896 "USA Trains 20' Diameter R81900"
+ T4 28 528.921868 216.889677 112.499896 0 0.0 0.0 0.0 0.0 0 0 0 7.731780
+ T4 77 482.999860 226.024157 269.999896 0 0.0 0.0 0.0 0.0 0 0 0 7.731780
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -120.000000 0.000000 120.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 30 0 2 0 0 A 18 590.011174 119.012841 0 269.999896 "USA Trains 20' Diameter R81900"
+ T4 116 590.011174 119.012841 179.999896 0 0.0 0.0 0.0 0.0 0 0 0 4.731388
+ T4 27 580.876695 164.934849 337.499896 0 0.0 0.0 0.0 0.0 0 0 0 4.731388
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -120.000000 0.000000 120.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 31 0 2 0 0 A 18 423.000000 12.001277 0 359.999896 "USA Trains #6 Left-hand R81615"
+ T4 34 423.000000 12.001277 269.999896 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 42 459.000000 12.001342 89.999896 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 41 458.999992 16.251342 80.405828 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 1.770000 0.000000
+ S 0 0.000000 1.770000 0.000000 36.000000 0.000000
+ C 0 0.000000 -108.280640 1.770144 108.280640 170.405856 9.594220
+ S 0 0.000000 19.817041 1.514534 36.000000 4.250000
+ END$SEGS
+TURNOUT 32 0 2 0 0 A 18 462.496321 211.566193 0 170.405828 "USA Trains 16' Diameter R81800"
+ T4 23 462.496321 211.566193 80.405828 0 0.0 0.0 0.0 0.0 0 0 0 9.084295
+ T4 86 427.490535 198.237750 237.905828 3 7.509465 -12.237750 0.0 0.0 0 3 0 9.084295
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 33 0 2 0 0 A 18 399.000000 12.000065 0 180.000000 "USA Trains #6 Right-hand R81605"
+ T4 34 399.000000 12.000065 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 51 363.000000 11.999970 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 35 362.999989 16.249970 279.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 1.770000 0.000000
+ S 0 0.000000 1.770000 0.000000 36.000000 0.000000
+ C 0 0.000000 108.280640 1.770144 -108.280640 0.000000 9.594220
+ S 0 0.000000 19.817041 -1.514534 36.000000 -4.250000
+ END$SEGS
+TURNOUT 34 0 2 0 0 A 18 399.000000 12.000065 0 0.000000 "USA Trains 24"" Straight R81060"
+ T4 33 399.000000 12.000065 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 31 423.000000 12.000065 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ END$SEGS
+TURNOUT 35 0 2 0 0 A 18 327.503509 22.249965 0 9.594068 "USA Trains #6 Left-hand R81615"
+ T4 36 327.503509 22.249965 279.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 33 362.999989 16.249970 99.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 93 363.708321 20.440527 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 1.770000 0.000000
+ S 0 0.000000 1.770000 0.000000 36.000000 0.000000
+ C 0 0.000000 -108.280640 1.770144 108.280640 170.405856 9.594220
+ S 0 0.000000 19.817041 1.514534 36.000000 4.250000
+ END$SEGS
+TURNOUT 36 0 2 0 0 A 18 292.497658 35.578239 0 32.094068 "USA Trains 16' Diameter R81800"
+ T4 37 292.497658 35.578239 302.094068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 35 327.503509 22.249965 99.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 37 0 2 0 0 A 18 265.256971 61.288109 0 54.594068 "USA Trains 16' Diameter R81800"
+ T4 11 265.256971 61.288109 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 36 292.497658 35.578239 122.094068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 38 0 2 0 0 A 18 188.780630 168.877000 0 54.594068 "USA Trains 60"" Straight R81065"
+ T4 39 188.780630 168.877000 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 52 223.542603 119.972959 144.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 39 0 2 0 0 A 18 188.780630 168.877000 0 234.594068 "USA Trains 16' Diameter R81800"
+ T4 38 188.780630 168.877000 144.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 40 161.540010 194.586942 302.094068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 40 0 2 0 0 A 0 161.540010 194.586942 0 212.094068 "USA Trains 16' Diameter R81800"
+ T4 39 161.540010 194.586942 122.094068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 43 126.534195 207.915310 279.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 41 0 2 0 0 A 18 494.496445 22.251496 0 170.405828 "USA Trains #6 Right-hand R81605"
+ T4 16 494.496445 22.251496 80.405828 9 -4.496445 14.748504 0.000000 0.000000 1 1 0 0.000000
+ T4 31 458.999992 16.251342 260.405828 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 82 458.291641 20.441896 269.999896 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 1.770000 0.000000
+ S 0 0.000000 1.770000 0.000000 36.000000 0.000000
+ C 0 0.000000 108.280640 1.770144 -108.280640 0.000000 9.594220
+ S 0 0.000000 19.817041 -1.514534 36.000000 -4.250000
+ END$SEGS
+TURNOUT 42 0 2 0 0 A 18 459.000000 12.001342 0 359.999896 "USA Trains 24"" Straight R81060"
+ T4 31 459.000000 12.001342 269.999896 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 24 483.000000 12.001386 89.999896 9 1.000000 -6.001386 0.000000 0.000000 1 1 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ END$SEGS
+TURNOUT 43 0 2 0 0 A 0 126.534195 207.915310 0 189.594068 "USA Trains 16' Diameter R81800"
+ T4 40 126.534195 207.915310 99.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 44 89.092493 206.832982 257.094068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 44 0 2 0 0 A 0 89.092493 206.832982 0 167.094068 "USA Trains 16' Diameter R81800"
+ T4 43 89.092493 206.832982 77.094068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 45 54.915054 191.504734 234.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 45 0 2 0 0 A 0 54.915054 191.504734 0 144.594068 "USA Trains 16' Diameter R81800"
+ T4 44 54.915054 191.504734 54.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 46 29.205220 164.264012 212.094068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 46 0 2 0 0 A 0 29.205220 164.264012 0 122.094068 "USA Trains 16' Diameter R81800"
+ T4 45 29.205220 164.264012 32.094068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 47 15.876992 129.258144 189.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 47 0 2 0 0 A 18 15.876992 129.258144 0 99.594068 "USA Trains 16' Diameter R81800"
+ T4 46 15.876992 129.258144 9.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 48 16.959468 91.816446 167.094068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 48 0 2 0 0 A 18 16.959468 91.816446 0 77.094068 "USA Trains 16' Diameter R81800"
+ T4 47 16.959468 91.816446 347.094068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 49 32.287852 57.639068 144.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 49 0 2 0 0 A 18 32.287852 57.639068 0 54.594068 "USA Trains 16' Diameter R81800"
+ T4 48 32.287852 57.639068 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 50 59.528540 31.929198 122.094068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 50 0 2 0 0 A 18 59.528540 31.929198 0 32.094068 "USA Trains 16' Diameter R81800"
+ T4 49 59.528540 31.929198 302.094068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 56 94.534391 18.600924 99.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 51 0 2 0 0 A 18 363.000000 11.999970 0 180.000000 "USA Trains 60"" Straight R81065"
+ T4 33 363.000000 11.999970 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 53 303.000000 12.000129 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 52 0 2 0 0 A 18 223.542603 119.972959 0 54.594068 "USA Trains 12"" Straight R81000"
+ T4 38 223.542603 119.972959 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 11 230.494997 110.192150 144.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 12.000000 0.000000
+ END$SEGS
+TURNOUT 53 0 2 0 0 A 18 243.000000 12.000129 0 0.000000 "USA Trains 60"" Straight R81065"
+ T4 54 243.000000 12.000129 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 51 303.000000 12.000129 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 54 0 2 0 0 A 18 183.000000 12.000129 0 0.000000 "USA Trains 60"" Straight R81065"
+ T4 55 183.000000 12.000129 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 53 243.000000 12.000129 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 55 0 2 0 0 A 18 159.000000 12.000129 0 0.000000 "USA Trains 24"" Straight R81060"
+ T4 59 159.000000 12.000129 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 54 183.000000 12.000129 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ END$SEGS
+TURNOUT 56 0 2 0 0 A 18 118.198700 14.600864 0 189.594068 "USA Trains 24"" Straight R81060"
+ T4 58 118.198700 14.600864 99.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 50 94.534391 18.600924 279.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ END$SEGS
+CURVE 57 0 2 0 0 A 18 143.000001 124.190810 0 112.190659 0 0.000000 0.000000
+ T4 59 142.999704 12.000150 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 58 124.301281 13.569375 279.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+STRAIGHT 58 0 2 0 0 A 18 0.000000 0.000000
+ T4 56 118.198700 14.600864 279.593683 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 57 124.301281 13.569375 99.593683 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+STRAIGHT 59 0 2 0 0 A 18 0.000000 0.000000
+ T4 55 159.000000 12.000129 90.000152 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 57 142.999704 12.000150 270.000152 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+TURNOUT 60 0 2 0 0 A 26 254.666585 89.850101 0 327.905828 "USA Trains 60"" Straight R81065"
+ T4 61 254.666585 89.850101 237.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ T4 114 305.497158 121.728821 57.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 61 0 2 0 0 A 26 203.836012 57.971380 0 327.905828 "USA Trains 60"" Straight R81065"
+ T4 71 203.836012 57.971380 237.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ T4 60 254.666585 89.850101 57.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 62 0 2 0 0 A 18 148.497961 31.891542 0 350.405828 "USA Trains 16' Diameter R81800"
+ T4 63 148.497961 31.891542 260.405828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ T4 71 183.503783 45.219892 57.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 63 0 2 0 0 A 18 111.056259 32.973889 0 12.905828 "USA Trains 16' Diameter R81800"
+ T4 64 111.056259 32.973889 282.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ T4 62 148.497961 31.891542 80.405828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 64 0 2 0 0 A 18 76.878828 48.302154 0 35.405828 "USA Trains 16' Diameter R81800"
+ T4 65 76.878828 48.302154 305.405828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ T4 63 111.056259 32.973889 102.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 65 0 2 0 0 A 18 51.168863 75.542752 0 57.905828 "USA Trains 16' Diameter R81800"
+ T4 66 51.168863 75.542752 327.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ T4 64 76.878828 48.302154 125.405828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 66 0 2 0 0 A 18 37.840467 110.548557 0 80.405828 "USA Trains 16' Diameter R81800"
+ T4 67 37.840467 110.548557 350.405828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ T4 65 51.168863 75.542752 147.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 67 0 2 0 0 A 18 38.922764 147.990260 0 102.905828 "USA Trains 16' Diameter R81800"
+ T4 68 38.922764 147.990260 12.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ T4 66 37.840467 110.548557 170.405828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 68 0 2 0 0 A 18 54.250984 182.167711 0 125.405828 "USA Trains 16' Diameter R81800"
+ T4 69 54.250984 182.167711 35.405828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ T4 67 38.922764 147.990260 192.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 69 0 2 0 0 A 18 81.491548 207.877712 0 147.905828 "USA Trains 16' Diameter R81800"
+ T4 70 81.491548 207.877712 57.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ T4 68 54.250984 182.167711 215.405828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 70 0 2 0 0 A 18 116.497335 221.206155 0 170.405828 "USA Trains 16' Diameter R81800"
+ T4 72 116.497335 221.206155 80.405828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ T4 69 81.491548 207.877712 237.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 71 0 2 0 0 A 18 183.503783 45.219892 0 327.905828 "USA Trains 24"" Straight R81060"
+ T4 62 183.503783 45.219892 237.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ T4 61 203.836012 57.971380 57.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ END$SEGS
+TURNOUT 72 0 2 0 0 A 18 140.161637 225.206257 0 170.405828 "USA Trains 24"" Straight R81060"
+ T4 73 140.161637 225.206257 80.405828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ T4 70 116.497335 221.206155 260.405828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ END$SEGS
+TURNOUT 73 0 2 0 0 A 18 177.603335 224.123811 0 192.905828 "USA Trains 16' Diameter R81800"
+ T4 74 177.603335 224.123811 102.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ T4 72 140.161637 225.206257 260.405828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 74 0 2 0 0 A 18 236.087611 210.722711 0 192.905828 "USA Trains 60"" Straight R81065"
+ T4 75 236.087611 210.722711 102.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ T4 73 177.603335 224.123811 282.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 75 0 2 0 0 A 18 236.087611 210.722711 0 12.905828 "USA Trains 16' Diameter R81800"
+ T4 74 236.087611 210.722711 282.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ T4 76 273.529313 209.640365 80.405828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT 76 0 2 0 0 A 18 332.690068 219.640621 0 170.405828 "USA Trains 60"" Straight R81065"
+ T4 81 332.690068 219.640621 80.405828 9 -2.190068 10.859379 12.000000 12.000000 1 1 0 12.000000
+ T4 75 273.529313 209.640365 260.405828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 77 0 2 0 0 A 18 422.999860 226.024048 0 359.999896 "USA Trains 60"" Straight R81065"
+ T4 78 422.999860 226.024048 269.999896 0 0.0 0.0 0.0 0.0 0 0 0 9.043436
+ T4 29 482.999860 226.024157 89.999896 0 0.0 0.0 0.0 0.0 0 0 0 9.043436
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 78 0 2 0 0 A 18 398.999860 226.024004 0 359.999896 "USA Trains 24"" Straight R81060"
+ T4 80 398.999860 226.024004 269.999896 0 0.0 0.0 0.0 0.0 0 0 0 10.071956
+ T4 77 422.999860 226.024048 89.999896 0 0.0 0.0 0.0 0.0 0 0 0 10.071956
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ END$SEGS
+CURVE 79 0 130 0 0 A 18 394.660619 -62.414573 0 288.438639 0 0.000000 0.000000
+ T4 81 346.587038 221.989680 260.405828 0 0.0 0.0 0.0 0.0 0 0 0 11.063475
+ T4 80 394.660095 226.024066 89.999896 11 -0.660095 -11.024066 0.0 0.0 1 3 0 11.063475
+ END$SEGS
+STRAIGHT 80 0 2 0 0 A 18 0.000000 0.000000
+ T4 78 398.999860 226.024004 90.000890 0 0.0 0.0 0.0 0.0 0 0 0 10.418957
+ T4 79 394.660095 226.024066 270.000890 11 -0.660095 -11.024066 0.0 0.0 1 3 0 10.418957
+ END$SEGS
+STRAIGHT 81 0 2 0 0 A 18 0.000000 0.000000
+ T4 76 332.690068 219.640621 260.405676 9 -2.190068 10.859379 12.000000 12.000000 1 1 0 11.827428
+ T4 79 346.587038 221.989680 80.405676 0 0.0 0.0 0.0 0.0 0 0 0 11.827428
+ END$SEGS
+TURNOUT 82 0 2 0 0 A 18 458.291641 20.441896 0 179.999896 "USA Trains #6 Right-hand R81605"
+ T4 41 458.291641 20.441896 89.999896 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 87 422.291641 20.441735 269.999896 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 83 422.291622 24.691735 279.593964 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 1.770000 0.000000
+ S 0 0.000000 1.770000 0.000000 36.000000 0.000000
+ C 0 0.000000 108.280640 1.770144 -108.280640 0.000000 9.594220
+ S 0 0.000000 19.817041 -1.514534 36.000000 -4.250000
+ END$SEGS
+TURNOUT 83 0 0 0 0 A 18 422.291622 24.691735 0 189.593964 "USA Trains #6 Right-hand R81605"
+ T4 82 422.291622 24.691735 99.593964 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 94 386.795147 30.691760 279.593964 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 84 387.503484 34.882316 289.188032 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 1.770000 0.000000
+ S 0 0.000000 1.770000 0.000000 36.000000 0.000000
+ C 0 0.000000 108.280640 1.770144 -108.280640 0.000000 9.594220
+ S 0 0.000000 19.817041 -1.514534 36.000000 -4.250000
+ END$SEGS
+TURNOUT 84 0 0 0 0 A 18 387.503484 34.882316 0 199.188032 "USA Trains #6 Right-hand R81605"
+ T4 83 387.503484 34.882316 109.188032 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 103 353.503489 46.714494 289.188032 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 85 354.900345 50.728381 298.782100 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 1.770000 0.000000
+ S 0 0.000000 1.770000 0.000000 36.000000 0.000000
+ C 0 0.000000 108.280640 1.770144 -108.280640 0.000000 9.594220
+ S 0 0.000000 19.817041 -1.514534 36.000000 -4.250000
+ END$SEGS
+TURNOUT 85 0 0 0 0 A 18 354.900345 50.728381 0 208.782100 "USA Trains #6 Right-hand R81605"
+ T4 84 354.900345 50.728381 118.782100 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 101 323.347925 68.061728 298.782100 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 99 325.394223 71.786666 308.376168 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 1.770000 0.000000
+ S 0 0.000000 1.770000 0.000000 36.000000 0.000000
+ C 0 0.000000 108.280640 1.770144 -108.280640 0.000000 9.594220
+ S 0 0.000000 19.817041 -1.514534 36.000000 -4.250000
+ END$SEGS
+TURNOUT 86 0 2 0 0 A 18 407.158304 185.486263 0 327.905828 "USA Trains 24"" Straight R81060"
+ T4 115 407.158304 185.486263 237.905828 3 -8.158304 10.013737 0.0 0.0 0 3 0 9.958856
+ T4 32 427.490534 198.237751 57.905828 3 0.000000 0.000000 0.0 0.0 0 3 0 9.958856
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ END$SEGS
+TURNOUT 87 0 2 0 0 A 18 398.291641 20.441691 0 359.999896 "USA Trains 24"" Straight R81060"
+ T4 88 398.291641 20.441691 269.999896 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 82 422.291641 20.441735 89.999896 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ END$SEGS
+TURNOUT 88 0 2 0 0 A 18 374.291641 20.441647 0 359.999896 "USA Trains 24"" Straight R81060"
+ T4 93 374.291641 20.441647 269.999896 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 87 398.291641 20.441691 89.999896 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ END$SEGS
+TURNOUT 89 0 0 0 0 A 18 212.623428 177.572388 0 54.594068 "USA Trains 60"" Straight R81065"
+ E4 212.623428 177.572388 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 15 247.385401 128.668347 144.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 90 0 0 0 0 A 18 217.513832 181.048586 0 414.594068 "USA Trains 60"" Straight R81065"
+ E4 217.513832 181.048586 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 10 252.275805 132.144545 144.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 91 0 0 0 0 A 18 222.404236 184.524783 0 414.594068 "USA Trains 60"" Straight R81065"
+ E4 222.404236 184.524783 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 12 257.166209 135.620742 144.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 92 0 0 0 0 A 18 227.294640 188.000980 0 414.594068 "USA Trains 60"" Straight R81065"
+ E4 227.294640 188.000980 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 14 262.056613 139.096939 144.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+STRAIGHT 93 0 2 0 0 A 18 0.000000 0.000000
+ T4 35 363.708321 20.440527 269.993858 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 88 374.291641 20.441647 89.993858 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+TURNOUT 94 0 0 0 0 A 18 386.795147 30.691760 0 189.593964 "USA Trains #6 Right-hand R81605"
+ T4 83 386.795147 30.691760 99.593964 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 113 351.298672 36.691785 279.593964 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 104 352.007009 40.882341 289.188032 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 1.770000 0.000000
+ S 0 0.000000 1.770000 0.000000 36.000000 0.000000
+ C 0 0.000000 108.280640 1.770144 -108.280640 0.000000 9.594220
+ S 0 0.000000 19.817041 -1.514534 36.000000 -4.250000
+ END$SEGS
+TURNOUT 95 0 0 0 0 A 18 232.185044 191.477177 0 414.594068 "USA Trains 60"" Straight R81065"
+ E4 232.185044 191.477177 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 96 266.947017 142.573136 144.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 96 0 0 0 0 A 18 266.947017 142.573136 0 54.594068 "USA Trains 24"" Straight R81060"
+ T4 95 266.947017 142.573136 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 13 280.851806 123.011520 144.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ END$SEGS
+CURVE 97 0 0 0 0 A 18 375.539370 151.790150 0 93.850061 0 0.000000 0.000000
+ T4 99 317.275057 78.216351 128.376168 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 98 299.045105 97.416798 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+STRAIGHT 98 0 0 0 0 A 18 0.000000 0.000000
+ T4 13 294.756596 103.449903 324.593636 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 97 299.045105 97.416798 144.593636 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+STRAIGHT 99 0 0 0 0 A 18 0.000000 0.000000
+ T4 85 325.394223 71.786666 128.376320 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 97 317.275057 78.216351 308.376320 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+CURVE 100 0 0 0 0 A 18 349.636324 127.204133 0 64.493073 0 0.000000 0.000000
+ T4 101 318.584081 70.678788 118.782100 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 102 297.070027 89.839165 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+STRAIGHT 101 0 0 0 0 A 18 0.000000 0.000000
+ T4 85 323.347925 68.061728 118.782686 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 100 318.584081 70.678788 298.782686 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+STRAIGHT 102 0 0 0 0 A 18 0.000000 0.000000
+ T4 14 296.818586 90.192898 324.593916 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 100 297.070027 89.839165 144.593916 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+TURNOUT 103 0 0 0 0 A 18 353.503489 46.714494 0 199.188032 "USA Trains 24"" Straight R81060"
+ T4 84 353.503489 46.714494 109.188032 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 107 330.836827 54.602613 289.188032 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ END$SEGS
+TURNOUT 104 0 0 0 0 A 18 352.007009 40.882341 0 199.188032 "USA Trains 24"" Straight R81060"
+ T4 94 352.007009 40.882341 109.188032 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 110 329.340346 48.770459 289.188032 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ END$SEGS
+CURVE 105 0 0 0 0 A 18 352.637885 119.550956 0 68.505480 0 0.000000 0.000000
+ T4 107 330.122078 54.851348 109.188032 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 106 296.801199 79.861343 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+STRAIGHT 106 0 0 0 0 A 18 0.000000 0.000000
+ T4 12 291.928182 86.716701 324.593484 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 105 296.801199 79.861343 144.593484 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+STRAIGHT 107 0 0 0 0 A 18 0.000000 0.000000
+ T4 103 330.836827 54.602613 109.188184 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 105 330.122078 54.851348 289.188184 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+CURVE 108 0 0 0 0 A 18 350.288712 116.421136 0 70.777430 0 0.000000 0.000000
+ T4 110 327.026179 49.575798 109.188032 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 109 292.600231 75.415237 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+STRAIGHT 109 0 0 0 0 A 18 0.000000 0.000000
+ T4 10 287.037778 83.240504 324.593525 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 108 292.600231 75.415237 144.593525 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+STRAIGHT 110 0 0 0 0 A 18 0.000000 0.000000
+ T4 104 329.340346 48.770459 109.188184 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 108 327.026179 49.575798 289.188184 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+CURVE 111 0 0 0 0 A 18 359.782608 127.456149 0 90.908863 0 0.000000 0.000000
+ T4 113 344.631069 37.818811 99.593964 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 112 285.685622 74.786821 324.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+STRAIGHT 112 0 0 0 0 A 18 0.000000 0.000000
+ T4 15 282.147375 79.764306 324.592841 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 111 285.685622 74.786821 144.592841 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+STRAIGHT 113 0 0 0 0 A 18 0.000000 0.000000
+ T4 94 351.298672 36.691785 99.594116 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 111 344.631069 37.818811 279.594116 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+TURNOUT 114 0 2 0 0 A 26 356.327716 153.607566 0 147.905828 "USA Trains 60"" Straight R81065"
+ T4 115 356.327716 153.607566 57.905828 9 14.172284 -8.107566 12.000000 12.000000 1 1 0 12.000000
+ T4 60 305.497158 121.728821 237.905828 0 0.0 0.0 0.0 0.0 0 0 0 12.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 115 0 2 0 0 A 18 407.158274 185.486310 0 147.905828 "USA Trains 60"" Straight R81065"
+ T4 86 407.158274 185.486310 57.905828 3 0.000000 0.000000 0.0 0.0 0 3 0 11.149523
+ T4 114 356.327716 153.607566 237.905828 9 14.172284 -8.107566 12.000000 12.000000 1 1 0 11.149523
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+TURNOUT 116 0 2 0 0 A 18 580.876755 73.090822 0 292.499896 "USA Trains 20' Diameter R81900"
+ T4 26 580.876755 73.090822 202.499896 0 0.0 0.0 0.0 0.0 0 0 0 3.577391
+ T4 30 590.011174 119.012841 359.999896 0 0.0 0.0 0.0 0.0 0 0 0 3.577391
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -120.000000 0.000000 120.000000 157.500000 22.500000
+ END$SEGS
+DRAW 117 3 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12632256 0.000000 4 0
+ 25.500000 240.000000 0
+ 25.500000 240.000000 0
+ 25.500000 240.000000 0
+ 25.500000 240.000000 0
+ END$SEGS
+STRUCTURE 118 3 0 0 0 A 2 117.000000 114.000000 0 0.000000 "Lg Fall 8"" Fall-8a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -2.419782 -2.295585 0
+ -2.076517 -3.593556 0
+ -1.304171 -3.926095 0
+ -0.435281 -2.853391 0
+ 0.562333 -3.786643 0
+ 1.763761 -3.218110 0
+ 1.484858 3.164475 0
+ 0.347793 3.765189 0
+ -0.124197 3.035751 0
+ -1.078903 3.046478 0
+ -1.314898 3.786643 0
+ -2.784501 3.314654 0
+ -2.602142 2.445764 0
+ -3.814297 2.359948 0
+ -4.436465 1.104885 0
+ -3.749934 0.396900 0
+ -4.651005 0.000000 0
+ -4.415011 -0.901071 0
+ -3.460304 -1.244336 0
+ -4.146835 -1.802142 0
+ -3.589029 -2.810483 0
+ F4 6842368 0.000000 28 0
+ -3.346835 -1.802142 0
+ -2.789029 -2.810483 0
+ -1.619782 -2.295585 0
+ -1.276517 -3.593556 0
+ -0.504171 -3.926095 0
+ 0.364719 -2.853391 0
+ 1.362333 -3.786643 0
+ 2.563761 -3.218110 0
+ 2.113226 -2.027409 0
+ 3.550648 -1.630509 0
+ 3.765189 -0.278903 0
+ 3.014297 0.418354 0
+ 3.722281 1.426696 0
+ 3.185929 2.327766 0
+ 2.317039 2.005955 0
+ 2.284858 3.164475 0
+ 1.147793 3.765189 0
+ 0.675803 3.035751 0
+ -0.278903 3.046478 0
+ -0.514898 3.786643 0
+ -1.984501 3.314654 0
+ -1.802142 2.445764 0
+ -3.014297 2.359948 0
+ -3.636465 1.104885 0
+ -2.949934 0.396900 0
+ -3.851005 0.000000 0
+ -3.615011 -0.901071 0
+ -2.660304 -1.244336 0
+ F4 12434688 0.000000 26 0
+ 0.536352 -2.510126 0
+ 1.287244 -3.261018 0
+ 2.005955 -2.821210 0
+ 1.684144 -1.566147 0
+ 3.121567 -1.169247 0
+ 3.218110 -0.547079 0
+ 2.317039 0.075089 0
+ 3.100113 1.255063 0
+ 2.756848 1.662690 0
+ 1.898685 1.641236 0
+ 1.855777 2.628123 0
+ 1.115612 3.035751 0
+ 0.504171 2.317039 0
+ -0.418354 2.445764 0
+ -0.632895 2.939207 0
+ -1.415969 2.735394 0
+ -1.426696 1.877231 0
+ -2.081045 1.855777 0
+ -2.510126 0.997614 0
+ -1.748507 0.278903 0
+ -2.467218 -0.096543 0
+ -2.349220 -0.611441 0
+ -1.201428 -0.825982 0
+ -1.641236 -1.609055 0
+ -0.922525 -2.166861 0
+ -0.632895 -2.799756 0
+ L3 12434688 0.000000 -0.972167 -3.110933 0 -1.069383 -2.624850 0
+ L3 12434688 0.000000 -2.041550 -1.652683 0 -1.652683 -1.361033 0
+ L3 12434688 0.000000 -3.305367 -0.194433 0 -2.722067 -0.486083 0
+ L3 12434688 0.000000 -2.235983 0.291650 0 -2.722067 0.194433 0
+ L3 12434688 0.000000 -3.013717 1.458250 0 -2.527633 1.555467 0
+ L3 12434688 0.000000 -1.458250 2.916500 0 -1.652683 3.208150 0
+ L3 12434688 0.000000 0.486083 2.624850 0 0.194433 2.819283 0
+ L3 12434688 0.000000 1.847117 2.916500 0 2.138767 3.013717 0
+ L3 12434688 0.000000 3.402583 1.361033 0 3.110933 1.458250 0
+ L3 12434688 0.000000 -2.722067 -2.430417 0 -2.527633 -2.041550 0
+ L3 12434688 0.000000 -3.110933 -1.847117 0 -2.819283 -2.041550 0
+ L3 16755200 0.000000 -0.680517 -3.305367 0 -0.291650 -3.013717 0
+ L3 16755200 0.000000 -2.235983 -2.041550 0 -1.555467 -2.041550 0
+ L3 16755200 0.000000 -2.722067 -1.847117 0 -2.430417 -1.555467 0
+ L3 16755200 0.000000 -1.847117 -1.069383 0 -2.430417 -0.972167 0
+ L3 16755200 0.000000 -3.305367 -0.777733 0 -2.624850 -0.777733 0
+ L3 16755200 0.000000 -2.624850 0.680517 0 -3.305367 1.069383 0
+ L3 16755200 0.000000 -2.333200 2.235983 0 -2.138767 1.944333 0
+ L3 16755200 0.000000 -0.874950 3.110933 0 -0.680517 3.402583 0
+ L3 16755200 0.000000 -0.097217 2.624850 0 0.000000 2.916500 0
+ L3 16755200 0.000000 1.263817 3.110933 0 1.166600 3.499800 0
+ L3 16755200 0.000000 2.916500 1.847117 0 3.110933 2.138767 0
+ L3 16755200 0.000000 3.402583 -0.291650 0 3.013717 -0.194433 0
+ F4 6842368 0.000000 4 0
+ 1.497698 -1.539301 0
+ 0.887525 -1.359023 0
+ 0.818187 -0.901393 0
+ 1.220347 -1.067803 0
+ F4 6842368 0.000000 4 0
+ 1.899858 0.069338 0
+ 1.178744 0.235749 0
+ 1.026201 -0.124808 0
+ 2.010799 -0.180279 0
+ F4 6842368 0.000000 4 0
+ 0.457630 1.844388 0
+ 0.097073 1.567036 0
+ 0.194146 0.984598 0
+ 0.416027 1.067803 0
+ F4 6842368 0.000000 5 0
+ -1.456096 0.166411 0
+ -1.261950 0.027735 0
+ -0.596306 -0.138676 0
+ -0.235749 0.235749 0
+ -1.067803 0.360557 0
+ L3 6842368 0.000000 0.194433 -2.138767 0 0.388867 -1.847117 0
+ L3 6842368 0.000000 1.361033 -1.847117 0 0.874950 -1.652683 0
+ L3 6842368 0.000000 1.555467 -2.333200 0 1.263817 -2.138767 0
+ L3 6842368 0.000000 0.874950 -2.527633 0 0.680517 -2.138767 0
+ L3 6842368 0.000000 -0.388867 -2.430417 0 -0.194433 -2.138767 0
+ L3 6842368 0.000000 -1.166600 -1.555467 0 -0.777733 -1.555467 0
+ L3 6842368 0.000000 -0.874950 -1.069383 0 -0.388867 -1.263817 0
+ L3 6842368 0.000000 -1.166600 -0.583300 0 -0.777733 -0.291650 0
+ L3 6842368 0.000000 -1.749900 -0.486083 0 -1.361033 -0.291650 0
+ L3 6842368 0.000000 -2.235983 -0.194433 0 -1.749900 0.000000 0
+ L3 6842368 0.000000 -1.555467 0.486083 0 -1.944333 0.874950 0
+ L3 6842368 0.000000 -1.749900 1.361033 0 -1.458250 0.972167 0
+ L3 6842368 0.000000 -1.069383 2.138767 0 -0.777733 1.749900 0
+ L3 6842368 0.000000 -0.388867 1.749900 0 -0.486083 2.333200 0
+ L3 6842368 0.000000 -0.291650 1.069383 0 -0.194433 1.458250 0
+ L3 6842368 0.000000 0.680517 1.749900 0 0.874950 2.333200 0
+ L3 6842368 0.000000 1.166600 1.652683 0 1.749900 1.944333 0
+ L3 6842368 0.000000 2.624850 0.680517 0 2.138767 0.777733 0
+ L3 6842368 0.000000 2.624850 1.555467 0 2.138767 1.361033 0
+ L3 6842368 0.000000 2.819283 1.166600 0 2.333200 1.069383 0
+ L3 6842368 0.000000 1.166600 2.819283 0 1.069383 2.430417 0
+ L3 6842368 0.000000 1.749900 2.527633 0 1.458250 2.235983 0
+ L3 6842368 0.000000 1.361033 2.624850 0 1.166600 2.041550 0
+ L3 6842368 0.000000 2.916500 -0.486083 0 2.333200 -0.583300 0
+ L3 6842368 0.000000 2.430417 -1.263817 0 1.944333 -0.972167 0
+ L3 6842368 0.000000 2.916500 -0.972167 0 2.430417 -0.874950 0
+ L3 6842368 0.000000 -0.972167 2.722067 0 -0.874950 2.333200 0
+ L3 6842368 0.000000 -2.138767 1.361033 0 -1.847117 1.166600 0
+ L3 6842368 0.000000 1.361033 -3.110933 0 1.166600 -2.624850 0
+ L3 6842368 0.000000 1.749900 -2.819283 0 1.458250 -2.527633 0
+ F4 16755200 0.000000 5 0
+ -0.582438 -1.844388 0
+ -0.526968 -1.525433 0
+ 0.069338 -1.261950 0
+ 0.235749 -1.650242 0
+ -0.069338 -1.941461 0
+ F4 16755200 0.000000 3 0
+ 1.691844 1.386758 0
+ 1.497698 0.956863 0
+ 1.192612 1.220347 0
+ F4 16755200 0.000000 4 0
+ -1.275817 1.608639 0
+ -0.887525 1.511566 0
+ -0.610173 0.859790 0
+ -1.040068 0.970730 0
+ END$SEGS
+STRUCTURE 119 3 0 0 0 A 2 72.000000 122.500000 0 0.000000 "Lg Fall 8"" Fall-8a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -2.419782 -2.295585 0
+ -2.076517 -3.593556 0
+ -1.304171 -3.926095 0
+ -0.435281 -2.853391 0
+ 0.562333 -3.786643 0
+ 1.763761 -3.218110 0
+ 1.484858 3.164475 0
+ 0.347793 3.765189 0
+ -0.124197 3.035751 0
+ -1.078903 3.046478 0
+ -1.314898 3.786643 0
+ -2.784501 3.314654 0
+ -2.602142 2.445764 0
+ -3.814297 2.359948 0
+ -4.436465 1.104885 0
+ -3.749934 0.396900 0
+ -4.651005 0.000000 0
+ -4.415011 -0.901071 0
+ -3.460304 -1.244336 0
+ -4.146835 -1.802142 0
+ -3.589029 -2.810483 0
+ F4 6842368 0.000000 28 0
+ -3.346835 -1.802142 0
+ -2.789029 -2.810483 0
+ -1.619782 -2.295585 0
+ -1.276517 -3.593556 0
+ -0.504171 -3.926095 0
+ 0.364719 -2.853391 0
+ 1.362333 -3.786643 0
+ 2.563761 -3.218110 0
+ 2.113226 -2.027409 0
+ 3.550648 -1.630509 0
+ 3.765189 -0.278903 0
+ 3.014297 0.418354 0
+ 3.722281 1.426696 0
+ 3.185929 2.327766 0
+ 2.317039 2.005955 0
+ 2.284858 3.164475 0
+ 1.147793 3.765189 0
+ 0.675803 3.035751 0
+ -0.278903 3.046478 0
+ -0.514898 3.786643 0
+ -1.984501 3.314654 0
+ -1.802142 2.445764 0
+ -3.014297 2.359948 0
+ -3.636465 1.104885 0
+ -2.949934 0.396900 0
+ -3.851005 0.000000 0
+ -3.615011 -0.901071 0
+ -2.660304 -1.244336 0
+ F4 12434688 0.000000 26 0
+ 0.536352 -2.510126 0
+ 1.287244 -3.261018 0
+ 2.005955 -2.821210 0
+ 1.684144 -1.566147 0
+ 3.121567 -1.169247 0
+ 3.218110 -0.547079 0
+ 2.317039 0.075089 0
+ 3.100113 1.255063 0
+ 2.756848 1.662690 0
+ 1.898685 1.641236 0
+ 1.855777 2.628123 0
+ 1.115612 3.035751 0
+ 0.504171 2.317039 0
+ -0.418354 2.445764 0
+ -0.632895 2.939207 0
+ -1.415969 2.735394 0
+ -1.426696 1.877231 0
+ -2.081045 1.855777 0
+ -2.510126 0.997614 0
+ -1.748507 0.278903 0
+ -2.467218 -0.096543 0
+ -2.349220 -0.611441 0
+ -1.201428 -0.825982 0
+ -1.641236 -1.609055 0
+ -0.922525 -2.166861 0
+ -0.632895 -2.799756 0
+ L3 12434688 0.000000 -0.972167 -3.110933 0 -1.069383 -2.624850 0
+ L3 12434688 0.000000 -2.041550 -1.652683 0 -1.652683 -1.361033 0
+ L3 12434688 0.000000 -3.305367 -0.194433 0 -2.722067 -0.486083 0
+ L3 12434688 0.000000 -2.235983 0.291650 0 -2.722067 0.194433 0
+ L3 12434688 0.000000 -3.013717 1.458250 0 -2.527633 1.555467 0
+ L3 12434688 0.000000 -1.458250 2.916500 0 -1.652683 3.208150 0
+ L3 12434688 0.000000 0.486083 2.624850 0 0.194433 2.819283 0
+ L3 12434688 0.000000 1.847117 2.916500 0 2.138767 3.013717 0
+ L3 12434688 0.000000 3.402583 1.361033 0 3.110933 1.458250 0
+ L3 12434688 0.000000 -2.722067 -2.430417 0 -2.527633 -2.041550 0
+ L3 12434688 0.000000 -3.110933 -1.847117 0 -2.819283 -2.041550 0
+ L3 16755200 0.000000 -0.680517 -3.305367 0 -0.291650 -3.013717 0
+ L3 16755200 0.000000 -2.235983 -2.041550 0 -1.555467 -2.041550 0
+ L3 16755200 0.000000 -2.722067 -1.847117 0 -2.430417 -1.555467 0
+ L3 16755200 0.000000 -1.847117 -1.069383 0 -2.430417 -0.972167 0
+ L3 16755200 0.000000 -3.305367 -0.777733 0 -2.624850 -0.777733 0
+ L3 16755200 0.000000 -2.624850 0.680517 0 -3.305367 1.069383 0
+ L3 16755200 0.000000 -2.333200 2.235983 0 -2.138767 1.944333 0
+ L3 16755200 0.000000 -0.874950 3.110933 0 -0.680517 3.402583 0
+ L3 16755200 0.000000 -0.097217 2.624850 0 0.000000 2.916500 0
+ L3 16755200 0.000000 1.263817 3.110933 0 1.166600 3.499800 0
+ L3 16755200 0.000000 2.916500 1.847117 0 3.110933 2.138767 0
+ L3 16755200 0.000000 3.402583 -0.291650 0 3.013717 -0.194433 0
+ F4 6842368 0.000000 4 0
+ 1.497698 -1.539301 0
+ 0.887525 -1.359023 0
+ 0.818187 -0.901393 0
+ 1.220347 -1.067803 0
+ F4 6842368 0.000000 4 0
+ 1.899858 0.069338 0
+ 1.178744 0.235749 0
+ 1.026201 -0.124808 0
+ 2.010799 -0.180279 0
+ F4 6842368 0.000000 4 0
+ 0.457630 1.844388 0
+ 0.097073 1.567036 0
+ 0.194146 0.984598 0
+ 0.416027 1.067803 0
+ F4 6842368 0.000000 5 0
+ -1.456096 0.166411 0
+ -1.261950 0.027735 0
+ -0.596306 -0.138676 0
+ -0.235749 0.235749 0
+ -1.067803 0.360557 0
+ L3 6842368 0.000000 0.194433 -2.138767 0 0.388867 -1.847117 0
+ L3 6842368 0.000000 1.361033 -1.847117 0 0.874950 -1.652683 0
+ L3 6842368 0.000000 1.555467 -2.333200 0 1.263817 -2.138767 0
+ L3 6842368 0.000000 0.874950 -2.527633 0 0.680517 -2.138767 0
+ L3 6842368 0.000000 -0.388867 -2.430417 0 -0.194433 -2.138767 0
+ L3 6842368 0.000000 -1.166600 -1.555467 0 -0.777733 -1.555467 0
+ L3 6842368 0.000000 -0.874950 -1.069383 0 -0.388867 -1.263817 0
+ L3 6842368 0.000000 -1.166600 -0.583300 0 -0.777733 -0.291650 0
+ L3 6842368 0.000000 -1.749900 -0.486083 0 -1.361033 -0.291650 0
+ L3 6842368 0.000000 -2.235983 -0.194433 0 -1.749900 0.000000 0
+ L3 6842368 0.000000 -1.555467 0.486083 0 -1.944333 0.874950 0
+ L3 6842368 0.000000 -1.749900 1.361033 0 -1.458250 0.972167 0
+ L3 6842368 0.000000 -1.069383 2.138767 0 -0.777733 1.749900 0
+ L3 6842368 0.000000 -0.388867 1.749900 0 -0.486083 2.333200 0
+ L3 6842368 0.000000 -0.291650 1.069383 0 -0.194433 1.458250 0
+ L3 6842368 0.000000 0.680517 1.749900 0 0.874950 2.333200 0
+ L3 6842368 0.000000 1.166600 1.652683 0 1.749900 1.944333 0
+ L3 6842368 0.000000 2.624850 0.680517 0 2.138767 0.777733 0
+ L3 6842368 0.000000 2.624850 1.555467 0 2.138767 1.361033 0
+ L3 6842368 0.000000 2.819283 1.166600 0 2.333200 1.069383 0
+ L3 6842368 0.000000 1.166600 2.819283 0 1.069383 2.430417 0
+ L3 6842368 0.000000 1.749900 2.527633 0 1.458250 2.235983 0
+ L3 6842368 0.000000 1.361033 2.624850 0 1.166600 2.041550 0
+ L3 6842368 0.000000 2.916500 -0.486083 0 2.333200 -0.583300 0
+ L3 6842368 0.000000 2.430417 -1.263817 0 1.944333 -0.972167 0
+ L3 6842368 0.000000 2.916500 -0.972167 0 2.430417 -0.874950 0
+ L3 6842368 0.000000 -0.972167 2.722067 0 -0.874950 2.333200 0
+ L3 6842368 0.000000 -2.138767 1.361033 0 -1.847117 1.166600 0
+ L3 6842368 0.000000 1.361033 -3.110933 0 1.166600 -2.624850 0
+ L3 6842368 0.000000 1.749900 -2.819283 0 1.458250 -2.527633 0
+ F4 16755200 0.000000 5 0
+ -0.582438 -1.844388 0
+ -0.526968 -1.525433 0
+ 0.069338 -1.261950 0
+ 0.235749 -1.650242 0
+ -0.069338 -1.941461 0
+ F4 16755200 0.000000 3 0
+ 1.691844 1.386758 0
+ 1.497698 0.956863 0
+ 1.192612 1.220347 0
+ F4 16755200 0.000000 4 0
+ -1.275817 1.608639 0
+ -0.887525 1.511566 0
+ -0.610173 0.859790 0
+ -1.040068 0.970730 0
+ END$SEGS
+STRUCTURE 120 3 0 0 0 A 2 138.000000 154.500000 0 0.000000 "Lg Fall 8"" Fall-8a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -2.419782 -2.295585 0
+ -2.076517 -3.593556 0
+ -1.304171 -3.926095 0
+ -0.435281 -2.853391 0
+ 0.562333 -3.786643 0
+ 1.763761 -3.218110 0
+ 1.484858 3.164475 0
+ 0.347793 3.765189 0
+ -0.124197 3.035751 0
+ -1.078903 3.046478 0
+ -1.314898 3.786643 0
+ -2.784501 3.314654 0
+ -2.602142 2.445764 0
+ -3.814297 2.359948 0
+ -4.436465 1.104885 0
+ -3.749934 0.396900 0
+ -4.651005 0.000000 0
+ -4.415011 -0.901071 0
+ -3.460304 -1.244336 0
+ -4.146835 -1.802142 0
+ -3.589029 -2.810483 0
+ F4 6842368 0.000000 28 0
+ -3.346835 -1.802142 0
+ -2.789029 -2.810483 0
+ -1.619782 -2.295585 0
+ -1.276517 -3.593556 0
+ -0.504171 -3.926095 0
+ 0.364719 -2.853391 0
+ 1.362333 -3.786643 0
+ 2.563761 -3.218110 0
+ 2.113226 -2.027409 0
+ 3.550648 -1.630509 0
+ 3.765189 -0.278903 0
+ 3.014297 0.418354 0
+ 3.722281 1.426696 0
+ 3.185929 2.327766 0
+ 2.317039 2.005955 0
+ 2.284858 3.164475 0
+ 1.147793 3.765189 0
+ 0.675803 3.035751 0
+ -0.278903 3.046478 0
+ -0.514898 3.786643 0
+ -1.984501 3.314654 0
+ -1.802142 2.445764 0
+ -3.014297 2.359948 0
+ -3.636465 1.104885 0
+ -2.949934 0.396900 0
+ -3.851005 0.000000 0
+ -3.615011 -0.901071 0
+ -2.660304 -1.244336 0
+ F4 12434688 0.000000 26 0
+ 0.536352 -2.510126 0
+ 1.287244 -3.261018 0
+ 2.005955 -2.821210 0
+ 1.684144 -1.566147 0
+ 3.121567 -1.169247 0
+ 3.218110 -0.547079 0
+ 2.317039 0.075089 0
+ 3.100113 1.255063 0
+ 2.756848 1.662690 0
+ 1.898685 1.641236 0
+ 1.855777 2.628123 0
+ 1.115612 3.035751 0
+ 0.504171 2.317039 0
+ -0.418354 2.445764 0
+ -0.632895 2.939207 0
+ -1.415969 2.735394 0
+ -1.426696 1.877231 0
+ -2.081045 1.855777 0
+ -2.510126 0.997614 0
+ -1.748507 0.278903 0
+ -2.467218 -0.096543 0
+ -2.349220 -0.611441 0
+ -1.201428 -0.825982 0
+ -1.641236 -1.609055 0
+ -0.922525 -2.166861 0
+ -0.632895 -2.799756 0
+ L3 12434688 0.000000 -0.972167 -3.110933 0 -1.069383 -2.624850 0
+ L3 12434688 0.000000 -2.041550 -1.652683 0 -1.652683 -1.361033 0
+ L3 12434688 0.000000 -3.305367 -0.194433 0 -2.722067 -0.486083 0
+ L3 12434688 0.000000 -2.235983 0.291650 0 -2.722067 0.194433 0
+ L3 12434688 0.000000 -3.013717 1.458250 0 -2.527633 1.555467 0
+ L3 12434688 0.000000 -1.458250 2.916500 0 -1.652683 3.208150 0
+ L3 12434688 0.000000 0.486083 2.624850 0 0.194433 2.819283 0
+ L3 12434688 0.000000 1.847117 2.916500 0 2.138767 3.013717 0
+ L3 12434688 0.000000 3.402583 1.361033 0 3.110933 1.458250 0
+ L3 12434688 0.000000 -2.722067 -2.430417 0 -2.527633 -2.041550 0
+ L3 12434688 0.000000 -3.110933 -1.847117 0 -2.819283 -2.041550 0
+ L3 16755200 0.000000 -0.680517 -3.305367 0 -0.291650 -3.013717 0
+ L3 16755200 0.000000 -2.235983 -2.041550 0 -1.555467 -2.041550 0
+ L3 16755200 0.000000 -2.722067 -1.847117 0 -2.430417 -1.555467 0
+ L3 16755200 0.000000 -1.847117 -1.069383 0 -2.430417 -0.972167 0
+ L3 16755200 0.000000 -3.305367 -0.777733 0 -2.624850 -0.777733 0
+ L3 16755200 0.000000 -2.624850 0.680517 0 -3.305367 1.069383 0
+ L3 16755200 0.000000 -2.333200 2.235983 0 -2.138767 1.944333 0
+ L3 16755200 0.000000 -0.874950 3.110933 0 -0.680517 3.402583 0
+ L3 16755200 0.000000 -0.097217 2.624850 0 0.000000 2.916500 0
+ L3 16755200 0.000000 1.263817 3.110933 0 1.166600 3.499800 0
+ L3 16755200 0.000000 2.916500 1.847117 0 3.110933 2.138767 0
+ L3 16755200 0.000000 3.402583 -0.291650 0 3.013717 -0.194433 0
+ F4 6842368 0.000000 4 0
+ 1.497698 -1.539301 0
+ 0.887525 -1.359023 0
+ 0.818187 -0.901393 0
+ 1.220347 -1.067803 0
+ F4 6842368 0.000000 4 0
+ 1.899858 0.069338 0
+ 1.178744 0.235749 0
+ 1.026201 -0.124808 0
+ 2.010799 -0.180279 0
+ F4 6842368 0.000000 4 0
+ 0.457630 1.844388 0
+ 0.097073 1.567036 0
+ 0.194146 0.984598 0
+ 0.416027 1.067803 0
+ F4 6842368 0.000000 5 0
+ -1.456096 0.166411 0
+ -1.261950 0.027735 0
+ -0.596306 -0.138676 0
+ -0.235749 0.235749 0
+ -1.067803 0.360557 0
+ L3 6842368 0.000000 0.194433 -2.138767 0 0.388867 -1.847117 0
+ L3 6842368 0.000000 1.361033 -1.847117 0 0.874950 -1.652683 0
+ L3 6842368 0.000000 1.555467 -2.333200 0 1.263817 -2.138767 0
+ L3 6842368 0.000000 0.874950 -2.527633 0 0.680517 -2.138767 0
+ L3 6842368 0.000000 -0.388867 -2.430417 0 -0.194433 -2.138767 0
+ L3 6842368 0.000000 -1.166600 -1.555467 0 -0.777733 -1.555467 0
+ L3 6842368 0.000000 -0.874950 -1.069383 0 -0.388867 -1.263817 0
+ L3 6842368 0.000000 -1.166600 -0.583300 0 -0.777733 -0.291650 0
+ L3 6842368 0.000000 -1.749900 -0.486083 0 -1.361033 -0.291650 0
+ L3 6842368 0.000000 -2.235983 -0.194433 0 -1.749900 0.000000 0
+ L3 6842368 0.000000 -1.555467 0.486083 0 -1.944333 0.874950 0
+ L3 6842368 0.000000 -1.749900 1.361033 0 -1.458250 0.972167 0
+ L3 6842368 0.000000 -1.069383 2.138767 0 -0.777733 1.749900 0
+ L3 6842368 0.000000 -0.388867 1.749900 0 -0.486083 2.333200 0
+ L3 6842368 0.000000 -0.291650 1.069383 0 -0.194433 1.458250 0
+ L3 6842368 0.000000 0.680517 1.749900 0 0.874950 2.333200 0
+ L3 6842368 0.000000 1.166600 1.652683 0 1.749900 1.944333 0
+ L3 6842368 0.000000 2.624850 0.680517 0 2.138767 0.777733 0
+ L3 6842368 0.000000 2.624850 1.555467 0 2.138767 1.361033 0
+ L3 6842368 0.000000 2.819283 1.166600 0 2.333200 1.069383 0
+ L3 6842368 0.000000 1.166600 2.819283 0 1.069383 2.430417 0
+ L3 6842368 0.000000 1.749900 2.527633 0 1.458250 2.235983 0
+ L3 6842368 0.000000 1.361033 2.624850 0 1.166600 2.041550 0
+ L3 6842368 0.000000 2.916500 -0.486083 0 2.333200 -0.583300 0
+ L3 6842368 0.000000 2.430417 -1.263817 0 1.944333 -0.972167 0
+ L3 6842368 0.000000 2.916500 -0.972167 0 2.430417 -0.874950 0
+ L3 6842368 0.000000 -0.972167 2.722067 0 -0.874950 2.333200 0
+ L3 6842368 0.000000 -2.138767 1.361033 0 -1.847117 1.166600 0
+ L3 6842368 0.000000 1.361033 -3.110933 0 1.166600 -2.624850 0
+ L3 6842368 0.000000 1.749900 -2.819283 0 1.458250 -2.527633 0
+ F4 16755200 0.000000 5 0
+ -0.582438 -1.844388 0
+ -0.526968 -1.525433 0
+ 0.069338 -1.261950 0
+ 0.235749 -1.650242 0
+ -0.069338 -1.941461 0
+ F4 16755200 0.000000 3 0
+ 1.691844 1.386758 0
+ 1.497698 0.956863 0
+ 1.192612 1.220347 0
+ F4 16755200 0.000000 4 0
+ -1.275817 1.608639 0
+ -0.887525 1.511566 0
+ -0.610173 0.859790 0
+ -1.040068 0.970730 0
+ END$SEGS
+STRUCTURE 121 3 0 0 0 A 2 89.500000 176.500000 0 0.000000 "Lg Fall 8"" Fall-8a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -2.419782 -2.295585 0
+ -2.076517 -3.593556 0
+ -1.304171 -3.926095 0
+ -0.435281 -2.853391 0
+ 0.562333 -3.786643 0
+ 1.763761 -3.218110 0
+ 1.484858 3.164475 0
+ 0.347793 3.765189 0
+ -0.124197 3.035751 0
+ -1.078903 3.046478 0
+ -1.314898 3.786643 0
+ -2.784501 3.314654 0
+ -2.602142 2.445764 0
+ -3.814297 2.359948 0
+ -4.436465 1.104885 0
+ -3.749934 0.396900 0
+ -4.651005 0.000000 0
+ -4.415011 -0.901071 0
+ -3.460304 -1.244336 0
+ -4.146835 -1.802142 0
+ -3.589029 -2.810483 0
+ F4 6842368 0.000000 28 0
+ -3.346835 -1.802142 0
+ -2.789029 -2.810483 0
+ -1.619782 -2.295585 0
+ -1.276517 -3.593556 0
+ -0.504171 -3.926095 0
+ 0.364719 -2.853391 0
+ 1.362333 -3.786643 0
+ 2.563761 -3.218110 0
+ 2.113226 -2.027409 0
+ 3.550648 -1.630509 0
+ 3.765189 -0.278903 0
+ 3.014297 0.418354 0
+ 3.722281 1.426696 0
+ 3.185929 2.327766 0
+ 2.317039 2.005955 0
+ 2.284858 3.164475 0
+ 1.147793 3.765189 0
+ 0.675803 3.035751 0
+ -0.278903 3.046478 0
+ -0.514898 3.786643 0
+ -1.984501 3.314654 0
+ -1.802142 2.445764 0
+ -3.014297 2.359948 0
+ -3.636465 1.104885 0
+ -2.949934 0.396900 0
+ -3.851005 0.000000 0
+ -3.615011 -0.901071 0
+ -2.660304 -1.244336 0
+ F4 12434688 0.000000 26 0
+ 0.536352 -2.510126 0
+ 1.287244 -3.261018 0
+ 2.005955 -2.821210 0
+ 1.684144 -1.566147 0
+ 3.121567 -1.169247 0
+ 3.218110 -0.547079 0
+ 2.317039 0.075089 0
+ 3.100113 1.255063 0
+ 2.756848 1.662690 0
+ 1.898685 1.641236 0
+ 1.855777 2.628123 0
+ 1.115612 3.035751 0
+ 0.504171 2.317039 0
+ -0.418354 2.445764 0
+ -0.632895 2.939207 0
+ -1.415969 2.735394 0
+ -1.426696 1.877231 0
+ -2.081045 1.855777 0
+ -2.510126 0.997614 0
+ -1.748507 0.278903 0
+ -2.467218 -0.096543 0
+ -2.349220 -0.611441 0
+ -1.201428 -0.825982 0
+ -1.641236 -1.609055 0
+ -0.922525 -2.166861 0
+ -0.632895 -2.799756 0
+ L3 12434688 0.000000 -0.972167 -3.110933 0 -1.069383 -2.624850 0
+ L3 12434688 0.000000 -2.041550 -1.652683 0 -1.652683 -1.361033 0
+ L3 12434688 0.000000 -3.305367 -0.194433 0 -2.722067 -0.486083 0
+ L3 12434688 0.000000 -2.235983 0.291650 0 -2.722067 0.194433 0
+ L3 12434688 0.000000 -3.013717 1.458250 0 -2.527633 1.555467 0
+ L3 12434688 0.000000 -1.458250 2.916500 0 -1.652683 3.208150 0
+ L3 12434688 0.000000 0.486083 2.624850 0 0.194433 2.819283 0
+ L3 12434688 0.000000 1.847117 2.916500 0 2.138767 3.013717 0
+ L3 12434688 0.000000 3.402583 1.361033 0 3.110933 1.458250 0
+ L3 12434688 0.000000 -2.722067 -2.430417 0 -2.527633 -2.041550 0
+ L3 12434688 0.000000 -3.110933 -1.847117 0 -2.819283 -2.041550 0
+ L3 16755200 0.000000 -0.680517 -3.305367 0 -0.291650 -3.013717 0
+ L3 16755200 0.000000 -2.235983 -2.041550 0 -1.555467 -2.041550 0
+ L3 16755200 0.000000 -2.722067 -1.847117 0 -2.430417 -1.555467 0
+ L3 16755200 0.000000 -1.847117 -1.069383 0 -2.430417 -0.972167 0
+ L3 16755200 0.000000 -3.305367 -0.777733 0 -2.624850 -0.777733 0
+ L3 16755200 0.000000 -2.624850 0.680517 0 -3.305367 1.069383 0
+ L3 16755200 0.000000 -2.333200 2.235983 0 -2.138767 1.944333 0
+ L3 16755200 0.000000 -0.874950 3.110933 0 -0.680517 3.402583 0
+ L3 16755200 0.000000 -0.097217 2.624850 0 0.000000 2.916500 0
+ L3 16755200 0.000000 1.263817 3.110933 0 1.166600 3.499800 0
+ L3 16755200 0.000000 2.916500 1.847117 0 3.110933 2.138767 0
+ L3 16755200 0.000000 3.402583 -0.291650 0 3.013717 -0.194433 0
+ F4 6842368 0.000000 4 0
+ 1.497698 -1.539301 0
+ 0.887525 -1.359023 0
+ 0.818187 -0.901393 0
+ 1.220347 -1.067803 0
+ F4 6842368 0.000000 4 0
+ 1.899858 0.069338 0
+ 1.178744 0.235749 0
+ 1.026201 -0.124808 0
+ 2.010799 -0.180279 0
+ F4 6842368 0.000000 4 0
+ 0.457630 1.844388 0
+ 0.097073 1.567036 0
+ 0.194146 0.984598 0
+ 0.416027 1.067803 0
+ F4 6842368 0.000000 5 0
+ -1.456096 0.166411 0
+ -1.261950 0.027735 0
+ -0.596306 -0.138676 0
+ -0.235749 0.235749 0
+ -1.067803 0.360557 0
+ L3 6842368 0.000000 0.194433 -2.138767 0 0.388867 -1.847117 0
+ L3 6842368 0.000000 1.361033 -1.847117 0 0.874950 -1.652683 0
+ L3 6842368 0.000000 1.555467 -2.333200 0 1.263817 -2.138767 0
+ L3 6842368 0.000000 0.874950 -2.527633 0 0.680517 -2.138767 0
+ L3 6842368 0.000000 -0.388867 -2.430417 0 -0.194433 -2.138767 0
+ L3 6842368 0.000000 -1.166600 -1.555467 0 -0.777733 -1.555467 0
+ L3 6842368 0.000000 -0.874950 -1.069383 0 -0.388867 -1.263817 0
+ L3 6842368 0.000000 -1.166600 -0.583300 0 -0.777733 -0.291650 0
+ L3 6842368 0.000000 -1.749900 -0.486083 0 -1.361033 -0.291650 0
+ L3 6842368 0.000000 -2.235983 -0.194433 0 -1.749900 0.000000 0
+ L3 6842368 0.000000 -1.555467 0.486083 0 -1.944333 0.874950 0
+ L3 6842368 0.000000 -1.749900 1.361033 0 -1.458250 0.972167 0
+ L3 6842368 0.000000 -1.069383 2.138767 0 -0.777733 1.749900 0
+ L3 6842368 0.000000 -0.388867 1.749900 0 -0.486083 2.333200 0
+ L3 6842368 0.000000 -0.291650 1.069383 0 -0.194433 1.458250 0
+ L3 6842368 0.000000 0.680517 1.749900 0 0.874950 2.333200 0
+ L3 6842368 0.000000 1.166600 1.652683 0 1.749900 1.944333 0
+ L3 6842368 0.000000 2.624850 0.680517 0 2.138767 0.777733 0
+ L3 6842368 0.000000 2.624850 1.555467 0 2.138767 1.361033 0
+ L3 6842368 0.000000 2.819283 1.166600 0 2.333200 1.069383 0
+ L3 6842368 0.000000 1.166600 2.819283 0 1.069383 2.430417 0
+ L3 6842368 0.000000 1.749900 2.527633 0 1.458250 2.235983 0
+ L3 6842368 0.000000 1.361033 2.624850 0 1.166600 2.041550 0
+ L3 6842368 0.000000 2.916500 -0.486083 0 2.333200 -0.583300 0
+ L3 6842368 0.000000 2.430417 -1.263817 0 1.944333 -0.972167 0
+ L3 6842368 0.000000 2.916500 -0.972167 0 2.430417 -0.874950 0
+ L3 6842368 0.000000 -0.972167 2.722067 0 -0.874950 2.333200 0
+ L3 6842368 0.000000 -2.138767 1.361033 0 -1.847117 1.166600 0
+ L3 6842368 0.000000 1.361033 -3.110933 0 1.166600 -2.624850 0
+ L3 6842368 0.000000 1.749900 -2.819283 0 1.458250 -2.527633 0
+ F4 16755200 0.000000 5 0
+ -0.582438 -1.844388 0
+ -0.526968 -1.525433 0
+ 0.069338 -1.261950 0
+ 0.235749 -1.650242 0
+ -0.069338 -1.941461 0
+ F4 16755200 0.000000 3 0
+ 1.691844 1.386758 0
+ 1.497698 0.956863 0
+ 1.192612 1.220347 0
+ F4 16755200 0.000000 4 0
+ -1.275817 1.608639 0
+ -0.887525 1.511566 0
+ -0.610173 0.859790 0
+ -1.040068 0.970730 0
+ END$SEGS
+STRUCTURE 122 3 0 0 0 A 2 120.500000 177.500000 0 0.000000 "Lg Fall 8"" Fall-8b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -2.419782 2.295585 0
+ -2.076517 3.593556 0
+ -1.304171 3.926095 0
+ -0.435281 2.853391 0
+ 0.562333 3.786643 0
+ 1.763761 3.218110 0
+ 1.484858 -3.164475 0
+ 0.347793 -3.765189 0
+ -0.124197 -3.035751 0
+ -1.078903 -3.046478 0
+ -1.314898 -3.786643 0
+ -2.784501 -3.314654 0
+ -2.602142 -2.445764 0
+ -3.814297 -2.359948 0
+ -4.436465 -1.104885 0
+ -3.749934 -0.396900 0
+ -4.651005 0.000000 0
+ -4.415011 0.901071 0
+ -3.460304 1.244336 0
+ -4.146835 1.802142 0
+ -3.589029 2.810483 0
+ F4 6815744 0.000000 28 0
+ -3.346835 1.802142 0
+ -2.789029 2.810483 0
+ -1.619782 2.295585 0
+ -1.276517 3.593556 0
+ -0.504171 3.926095 0
+ 0.364719 2.853391 0
+ 1.362333 3.786643 0
+ 2.563761 3.218110 0
+ 2.113226 2.027409 0
+ 3.550648 1.630509 0
+ 3.765189 0.278903 0
+ 3.014297 -0.418354 0
+ 3.722281 -1.426696 0
+ 3.185929 -2.327766 0
+ 2.317039 -2.005955 0
+ 2.284858 -3.164475 0
+ 1.147793 -3.765189 0
+ 0.675803 -3.035751 0
+ -0.278903 -3.046478 0
+ -0.514898 -3.786643 0
+ -1.984501 -3.314654 0
+ -1.802142 -2.445764 0
+ -3.014297 -2.359948 0
+ -3.636465 -1.104885 0
+ -2.949934 -0.396900 0
+ -3.851005 0.000000 0
+ -3.615011 0.901071 0
+ -2.660304 1.244336 0
+ F4 12410368 0.000000 26 0
+ 0.536352 2.510126 0
+ 1.287244 3.261018 0
+ 2.005955 2.821210 0
+ 1.684144 1.566147 0
+ 3.121567 1.169247 0
+ 3.218110 0.547079 0
+ 2.317039 -0.075089 0
+ 3.100113 -1.255063 0
+ 2.756848 -1.662690 0
+ 1.898685 -1.641236 0
+ 1.855777 -2.628123 0
+ 1.115612 -3.035751 0
+ 0.504171 -2.317039 0
+ -0.418354 -2.445764 0
+ -0.632895 -2.939207 0
+ -1.415969 -2.735394 0
+ -1.426696 -1.877231 0
+ -2.081045 -1.855777 0
+ -2.510126 -0.997614 0
+ -1.748507 -0.278903 0
+ -2.467218 0.096543 0
+ -2.349220 0.611441 0
+ -1.201428 0.825982 0
+ -1.641236 1.609055 0
+ -0.922525 2.166861 0
+ -0.632895 2.799756 0
+ L3 12410368 0.000000 -0.680517 3.305367 0 -0.291650 3.013717 0
+ L3 12410368 0.000000 -2.722067 1.847117 0 -2.430417 1.555467 0
+ L3 12410368 0.000000 -2.041550 1.652683 0 -1.652683 1.361033 0
+ L3 12410368 0.000000 -3.305367 0.777733 0 -2.624850 0.777733 0
+ L3 12410368 0.000000 -2.235983 -0.291650 0 -2.722067 -0.194433 0
+ L3 12410368 0.000000 -3.013717 -1.458250 0 -2.527633 -1.555467 0
+ L3 12410368 0.000000 -1.458250 -2.916500 0 -1.652683 -3.208150 0
+ L3 12410368 0.000000 -0.097217 -2.624850 0 0.000000 -2.916500 0
+ L3 12410368 0.000000 1.263817 -3.110933 0 1.166600 -3.499800 0
+ L3 12410368 0.000000 2.916500 -1.847117 0 3.110933 -2.138767 0
+ L3 12410368 0.000000 -2.722067 2.430417 0 -2.527633 2.041550 0
+ L3 14915328 0.000000 -3.110933 1.847117 0 -2.819283 2.041550 0
+ L3 16755200 0.000000 3.402583 0.291650 0 3.013717 0.194433 0
+ L3 16755200 0.000000 -0.972167 3.110933 0 -1.069383 2.624850 0
+ L3 16755200 0.000000 -2.235983 2.041550 0 -1.555467 2.041550 0
+ L3 16755200 0.000000 -1.847117 1.069383 0 -2.430417 0.972167 0
+ L3 16755200 0.000000 -3.305367 0.194433 0 -2.722067 0.486083 0
+ L3 16755200 0.000000 -2.624850 -0.680517 0 -3.305367 -1.069383 0
+ L3 16755200 0.000000 -2.333200 -2.235983 0 -2.138767 -1.944333 0
+ L3 16755200 0.000000 -0.874950 -3.110933 0 -0.680517 -3.402583 0
+ L3 16755200 0.000000 0.486083 -2.624850 0 0.194433 -2.819283 0
+ L3 16755200 0.000000 1.847117 -2.916500 0 2.138767 -3.013717 0
+ L3 16755200 0.000000 3.402583 -1.361033 0 3.110933 -1.458250 0
+ F4 6815744 0.000000 5 0
+ -0.582438 1.844388 0
+ -0.526968 1.525433 0
+ 0.069338 1.261950 0
+ 0.235749 1.650242 0
+ -0.069338 1.941461 0
+ F4 6815744 0.000000 4 0
+ 1.899858 -0.069338 0
+ 1.178744 -0.235749 0
+ 1.026201 0.124808 0
+ 2.010799 0.180279 0
+ F4 6815744 0.000000 4 0
+ 0.457630 -1.844388 0
+ 0.097073 -1.567036 0
+ 0.194146 -0.984598 0
+ 0.416027 -1.067803 0
+ F4 6815744 0.000000 5 0
+ -1.456096 -0.166411 0
+ -1.261950 -0.027735 0
+ -0.596306 0.138676 0
+ -0.235749 -0.235749 0
+ -1.067803 -0.360557 0
+ L3 6815744 0.000000 1.361033 1.847117 0 0.874950 1.652683 0
+ L3 6815744 0.000000 0.874950 2.527633 0 0.680517 2.138767 0
+ L3 6815744 0.000000 -0.388867 2.430417 0 -0.194433 2.138767 0
+ L3 6815744 0.000000 -0.874950 1.069383 0 -0.388867 1.263817 0
+ L3 6815744 0.000000 -1.166600 0.583300 0 -0.777733 0.291650 0
+ L3 6815744 0.000000 -2.235983 0.194433 0 -1.749900 0.000000 0
+ L3 6815744 0.000000 -1.555467 -0.486083 0 -1.944333 -0.874950 0
+ L3 6815744 0.000000 -0.388867 -1.749900 0 -0.486083 -2.333200 0
+ L3 6815744 0.000000 -0.291650 -1.069383 0 -0.194433 -1.458250 0
+ L3 6815744 0.000000 0.680517 -1.749900 0 0.874950 -2.333200 0
+ L3 6815744 0.000000 1.166600 -1.652683 0 1.749900 -1.944333 0
+ L3 6815744 0.000000 2.624850 -0.680517 0 2.138767 -0.777733 0
+ L3 6815744 0.000000 2.624850 -1.555467 0 2.138767 -1.361033 0
+ L3 6815744 0.000000 2.819283 -1.166600 0 2.333200 -1.069383 0
+ L3 6815744 0.000000 1.166600 -2.819283 0 1.069383 -2.430417 0
+ L3 6815744 0.000000 1.749900 -2.527633 0 1.458250 -2.235983 0
+ L3 6815744 0.000000 2.916500 0.486083 0 2.333200 0.583300 0
+ L3 6815744 0.000000 2.916500 0.972167 0 2.430417 0.874950 0
+ L3 6815744 0.000000 -0.972167 -2.722067 0 -0.874950 -2.333200 0
+ L3 6815744 0.000000 -2.138767 -1.361033 0 -1.847117 -1.166600 0
+ L3 6815744 0.000000 1.361033 3.110933 0 1.166600 2.624850 0
+ L3 6815744 0.000000 1.749900 2.819283 0 1.458250 2.527633 0
+ L3 11184640 0.000000 1.361033 -2.624850 0 1.166600 -2.041550 0
+ L3 14915328 0.000000 1.555467 2.333200 0 1.263817 2.138767 0
+ L3 14915328 0.000000 -1.749900 0.486083 0 -1.361033 0.291650 0
+ F4 16755200 0.000000 4 0
+ 1.497698 1.539301 0
+ 0.887525 1.359023 0
+ 0.818187 0.901393 0
+ 1.220347 1.067803 0
+ F4 16755200 0.000000 3 0
+ 1.691844 -1.386758 0
+ 1.497698 -0.956863 0
+ 1.192612 -1.220347 0
+ F4 16755200 0.000000 4 0
+ -1.275817 -1.608639 0
+ -0.887525 -1.511566 0
+ -0.610173 -0.859790 0
+ -1.040068 -0.970730 0
+ L3 16755200 0.000000 0.194433 2.138767 0 0.388867 1.847117 0
+ L3 16755200 0.000000 -1.166600 1.555467 0 -0.777733 1.555467 0
+ L3 16755200 0.000000 -1.749900 -1.361033 0 -1.458250 -0.972167 0
+ L3 16755200 0.000000 -1.069383 -2.138767 0 -0.777733 -1.749900 0
+ L3 16755200 0.000000 2.430417 1.263817 0 1.944333 0.972167 0
+ END$SEGS
+STRUCTURE 123 3 0 0 0 A 2 93.000000 129.500000 0 0.000000 "Lg Fall 8"" Fall-8b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -2.419782 2.295585 0
+ -2.076517 3.593556 0
+ -1.304171 3.926095 0
+ -0.435281 2.853391 0
+ 0.562333 3.786643 0
+ 1.763761 3.218110 0
+ 1.484858 -3.164475 0
+ 0.347793 -3.765189 0
+ -0.124197 -3.035751 0
+ -1.078903 -3.046478 0
+ -1.314898 -3.786643 0
+ -2.784501 -3.314654 0
+ -2.602142 -2.445764 0
+ -3.814297 -2.359948 0
+ -4.436465 -1.104885 0
+ -3.749934 -0.396900 0
+ -4.651005 0.000000 0
+ -4.415011 0.901071 0
+ -3.460304 1.244336 0
+ -4.146835 1.802142 0
+ -3.589029 2.810483 0
+ F4 6815744 0.000000 28 0
+ -3.346835 1.802142 0
+ -2.789029 2.810483 0
+ -1.619782 2.295585 0
+ -1.276517 3.593556 0
+ -0.504171 3.926095 0
+ 0.364719 2.853391 0
+ 1.362333 3.786643 0
+ 2.563761 3.218110 0
+ 2.113226 2.027409 0
+ 3.550648 1.630509 0
+ 3.765189 0.278903 0
+ 3.014297 -0.418354 0
+ 3.722281 -1.426696 0
+ 3.185929 -2.327766 0
+ 2.317039 -2.005955 0
+ 2.284858 -3.164475 0
+ 1.147793 -3.765189 0
+ 0.675803 -3.035751 0
+ -0.278903 -3.046478 0
+ -0.514898 -3.786643 0
+ -1.984501 -3.314654 0
+ -1.802142 -2.445764 0
+ -3.014297 -2.359948 0
+ -3.636465 -1.104885 0
+ -2.949934 -0.396900 0
+ -3.851005 0.000000 0
+ -3.615011 0.901071 0
+ -2.660304 1.244336 0
+ F4 12410368 0.000000 26 0
+ 0.536352 2.510126 0
+ 1.287244 3.261018 0
+ 2.005955 2.821210 0
+ 1.684144 1.566147 0
+ 3.121567 1.169247 0
+ 3.218110 0.547079 0
+ 2.317039 -0.075089 0
+ 3.100113 -1.255063 0
+ 2.756848 -1.662690 0
+ 1.898685 -1.641236 0
+ 1.855777 -2.628123 0
+ 1.115612 -3.035751 0
+ 0.504171 -2.317039 0
+ -0.418354 -2.445764 0
+ -0.632895 -2.939207 0
+ -1.415969 -2.735394 0
+ -1.426696 -1.877231 0
+ -2.081045 -1.855777 0
+ -2.510126 -0.997614 0
+ -1.748507 -0.278903 0
+ -2.467218 0.096543 0
+ -2.349220 0.611441 0
+ -1.201428 0.825982 0
+ -1.641236 1.609055 0
+ -0.922525 2.166861 0
+ -0.632895 2.799756 0
+ L3 12410368 0.000000 -0.680517 3.305367 0 -0.291650 3.013717 0
+ L3 12410368 0.000000 -2.722067 1.847117 0 -2.430417 1.555467 0
+ L3 12410368 0.000000 -2.041550 1.652683 0 -1.652683 1.361033 0
+ L3 12410368 0.000000 -3.305367 0.777733 0 -2.624850 0.777733 0
+ L3 12410368 0.000000 -2.235983 -0.291650 0 -2.722067 -0.194433 0
+ L3 12410368 0.000000 -3.013717 -1.458250 0 -2.527633 -1.555467 0
+ L3 12410368 0.000000 -1.458250 -2.916500 0 -1.652683 -3.208150 0
+ L3 12410368 0.000000 -0.097217 -2.624850 0 0.000000 -2.916500 0
+ L3 12410368 0.000000 1.263817 -3.110933 0 1.166600 -3.499800 0
+ L3 12410368 0.000000 2.916500 -1.847117 0 3.110933 -2.138767 0
+ L3 12410368 0.000000 -2.722067 2.430417 0 -2.527633 2.041550 0
+ L3 14915328 0.000000 -3.110933 1.847117 0 -2.819283 2.041550 0
+ L3 16755200 0.000000 3.402583 0.291650 0 3.013717 0.194433 0
+ L3 16755200 0.000000 -0.972167 3.110933 0 -1.069383 2.624850 0
+ L3 16755200 0.000000 -2.235983 2.041550 0 -1.555467 2.041550 0
+ L3 16755200 0.000000 -1.847117 1.069383 0 -2.430417 0.972167 0
+ L3 16755200 0.000000 -3.305367 0.194433 0 -2.722067 0.486083 0
+ L3 16755200 0.000000 -2.624850 -0.680517 0 -3.305367 -1.069383 0
+ L3 16755200 0.000000 -2.333200 -2.235983 0 -2.138767 -1.944333 0
+ L3 16755200 0.000000 -0.874950 -3.110933 0 -0.680517 -3.402583 0
+ L3 16755200 0.000000 0.486083 -2.624850 0 0.194433 -2.819283 0
+ L3 16755200 0.000000 1.847117 -2.916500 0 2.138767 -3.013717 0
+ L3 16755200 0.000000 3.402583 -1.361033 0 3.110933 -1.458250 0
+ F4 6815744 0.000000 5 0
+ -0.582438 1.844388 0
+ -0.526968 1.525433 0
+ 0.069338 1.261950 0
+ 0.235749 1.650242 0
+ -0.069338 1.941461 0
+ F4 6815744 0.000000 4 0
+ 1.899858 -0.069338 0
+ 1.178744 -0.235749 0
+ 1.026201 0.124808 0
+ 2.010799 0.180279 0
+ F4 6815744 0.000000 4 0
+ 0.457630 -1.844388 0
+ 0.097073 -1.567036 0
+ 0.194146 -0.984598 0
+ 0.416027 -1.067803 0
+ F4 6815744 0.000000 5 0
+ -1.456096 -0.166411 0
+ -1.261950 -0.027735 0
+ -0.596306 0.138676 0
+ -0.235749 -0.235749 0
+ -1.067803 -0.360557 0
+ L3 6815744 0.000000 1.361033 1.847117 0 0.874950 1.652683 0
+ L3 6815744 0.000000 0.874950 2.527633 0 0.680517 2.138767 0
+ L3 6815744 0.000000 -0.388867 2.430417 0 -0.194433 2.138767 0
+ L3 6815744 0.000000 -0.874950 1.069383 0 -0.388867 1.263817 0
+ L3 6815744 0.000000 -1.166600 0.583300 0 -0.777733 0.291650 0
+ L3 6815744 0.000000 -2.235983 0.194433 0 -1.749900 0.000000 0
+ L3 6815744 0.000000 -1.555467 -0.486083 0 -1.944333 -0.874950 0
+ L3 6815744 0.000000 -0.388867 -1.749900 0 -0.486083 -2.333200 0
+ L3 6815744 0.000000 -0.291650 -1.069383 0 -0.194433 -1.458250 0
+ L3 6815744 0.000000 0.680517 -1.749900 0 0.874950 -2.333200 0
+ L3 6815744 0.000000 1.166600 -1.652683 0 1.749900 -1.944333 0
+ L3 6815744 0.000000 2.624850 -0.680517 0 2.138767 -0.777733 0
+ L3 6815744 0.000000 2.624850 -1.555467 0 2.138767 -1.361033 0
+ L3 6815744 0.000000 2.819283 -1.166600 0 2.333200 -1.069383 0
+ L3 6815744 0.000000 1.166600 -2.819283 0 1.069383 -2.430417 0
+ L3 6815744 0.000000 1.749900 -2.527633 0 1.458250 -2.235983 0
+ L3 6815744 0.000000 2.916500 0.486083 0 2.333200 0.583300 0
+ L3 6815744 0.000000 2.916500 0.972167 0 2.430417 0.874950 0
+ L3 6815744 0.000000 -0.972167 -2.722067 0 -0.874950 -2.333200 0
+ L3 6815744 0.000000 -2.138767 -1.361033 0 -1.847117 -1.166600 0
+ L3 6815744 0.000000 1.361033 3.110933 0 1.166600 2.624850 0
+ L3 6815744 0.000000 1.749900 2.819283 0 1.458250 2.527633 0
+ L3 11184640 0.000000 1.361033 -2.624850 0 1.166600 -2.041550 0
+ L3 14915328 0.000000 1.555467 2.333200 0 1.263817 2.138767 0
+ L3 14915328 0.000000 -1.749900 0.486083 0 -1.361033 0.291650 0
+ F4 16755200 0.000000 4 0
+ 1.497698 1.539301 0
+ 0.887525 1.359023 0
+ 0.818187 0.901393 0
+ 1.220347 1.067803 0
+ F4 16755200 0.000000 3 0
+ 1.691844 -1.386758 0
+ 1.497698 -0.956863 0
+ 1.192612 -1.220347 0
+ F4 16755200 0.000000 4 0
+ -1.275817 -1.608639 0
+ -0.887525 -1.511566 0
+ -0.610173 -0.859790 0
+ -1.040068 -0.970730 0
+ L3 16755200 0.000000 0.194433 2.138767 0 0.388867 1.847117 0
+ L3 16755200 0.000000 -1.166600 1.555467 0 -0.777733 1.555467 0
+ L3 16755200 0.000000 -1.749900 -1.361033 0 -1.458250 -0.972167 0
+ L3 16755200 0.000000 -1.069383 -2.138767 0 -0.777733 -1.749900 0
+ L3 16755200 0.000000 2.430417 1.263817 0 1.944333 0.972167 0
+ END$SEGS
+STRUCTURE 124 3 0 0 0 A 2 133.500000 115.500000 0 0.000000 "Lg Fall 8"" Fall-8b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -2.419782 2.295585 0
+ -2.076517 3.593556 0
+ -1.304171 3.926095 0
+ -0.435281 2.853391 0
+ 0.562333 3.786643 0
+ 1.763761 3.218110 0
+ 1.484858 -3.164475 0
+ 0.347793 -3.765189 0
+ -0.124197 -3.035751 0
+ -1.078903 -3.046478 0
+ -1.314898 -3.786643 0
+ -2.784501 -3.314654 0
+ -2.602142 -2.445764 0
+ -3.814297 -2.359948 0
+ -4.436465 -1.104885 0
+ -3.749934 -0.396900 0
+ -4.651005 0.000000 0
+ -4.415011 0.901071 0
+ -3.460304 1.244336 0
+ -4.146835 1.802142 0
+ -3.589029 2.810483 0
+ F4 6815744 0.000000 28 0
+ -3.346835 1.802142 0
+ -2.789029 2.810483 0
+ -1.619782 2.295585 0
+ -1.276517 3.593556 0
+ -0.504171 3.926095 0
+ 0.364719 2.853391 0
+ 1.362333 3.786643 0
+ 2.563761 3.218110 0
+ 2.113226 2.027409 0
+ 3.550648 1.630509 0
+ 3.765189 0.278903 0
+ 3.014297 -0.418354 0
+ 3.722281 -1.426696 0
+ 3.185929 -2.327766 0
+ 2.317039 -2.005955 0
+ 2.284858 -3.164475 0
+ 1.147793 -3.765189 0
+ 0.675803 -3.035751 0
+ -0.278903 -3.046478 0
+ -0.514898 -3.786643 0
+ -1.984501 -3.314654 0
+ -1.802142 -2.445764 0
+ -3.014297 -2.359948 0
+ -3.636465 -1.104885 0
+ -2.949934 -0.396900 0
+ -3.851005 0.000000 0
+ -3.615011 0.901071 0
+ -2.660304 1.244336 0
+ F4 12410368 0.000000 26 0
+ 0.536352 2.510126 0
+ 1.287244 3.261018 0
+ 2.005955 2.821210 0
+ 1.684144 1.566147 0
+ 3.121567 1.169247 0
+ 3.218110 0.547079 0
+ 2.317039 -0.075089 0
+ 3.100113 -1.255063 0
+ 2.756848 -1.662690 0
+ 1.898685 -1.641236 0
+ 1.855777 -2.628123 0
+ 1.115612 -3.035751 0
+ 0.504171 -2.317039 0
+ -0.418354 -2.445764 0
+ -0.632895 -2.939207 0
+ -1.415969 -2.735394 0
+ -1.426696 -1.877231 0
+ -2.081045 -1.855777 0
+ -2.510126 -0.997614 0
+ -1.748507 -0.278903 0
+ -2.467218 0.096543 0
+ -2.349220 0.611441 0
+ -1.201428 0.825982 0
+ -1.641236 1.609055 0
+ -0.922525 2.166861 0
+ -0.632895 2.799756 0
+ L3 12410368 0.000000 -0.680517 3.305367 0 -0.291650 3.013717 0
+ L3 12410368 0.000000 -2.722067 1.847117 0 -2.430417 1.555467 0
+ L3 12410368 0.000000 -2.041550 1.652683 0 -1.652683 1.361033 0
+ L3 12410368 0.000000 -3.305367 0.777733 0 -2.624850 0.777733 0
+ L3 12410368 0.000000 -2.235983 -0.291650 0 -2.722067 -0.194433 0
+ L3 12410368 0.000000 -3.013717 -1.458250 0 -2.527633 -1.555467 0
+ L3 12410368 0.000000 -1.458250 -2.916500 0 -1.652683 -3.208150 0
+ L3 12410368 0.000000 -0.097217 -2.624850 0 0.000000 -2.916500 0
+ L3 12410368 0.000000 1.263817 -3.110933 0 1.166600 -3.499800 0
+ L3 12410368 0.000000 2.916500 -1.847117 0 3.110933 -2.138767 0
+ L3 12410368 0.000000 -2.722067 2.430417 0 -2.527633 2.041550 0
+ L3 14915328 0.000000 -3.110933 1.847117 0 -2.819283 2.041550 0
+ L3 16755200 0.000000 3.402583 0.291650 0 3.013717 0.194433 0
+ L3 16755200 0.000000 -0.972167 3.110933 0 -1.069383 2.624850 0
+ L3 16755200 0.000000 -2.235983 2.041550 0 -1.555467 2.041550 0
+ L3 16755200 0.000000 -1.847117 1.069383 0 -2.430417 0.972167 0
+ L3 16755200 0.000000 -3.305367 0.194433 0 -2.722067 0.486083 0
+ L3 16755200 0.000000 -2.624850 -0.680517 0 -3.305367 -1.069383 0
+ L3 16755200 0.000000 -2.333200 -2.235983 0 -2.138767 -1.944333 0
+ L3 16755200 0.000000 -0.874950 -3.110933 0 -0.680517 -3.402583 0
+ L3 16755200 0.000000 0.486083 -2.624850 0 0.194433 -2.819283 0
+ L3 16755200 0.000000 1.847117 -2.916500 0 2.138767 -3.013717 0
+ L3 16755200 0.000000 3.402583 -1.361033 0 3.110933 -1.458250 0
+ F4 6815744 0.000000 5 0
+ -0.582438 1.844388 0
+ -0.526968 1.525433 0
+ 0.069338 1.261950 0
+ 0.235749 1.650242 0
+ -0.069338 1.941461 0
+ F4 6815744 0.000000 4 0
+ 1.899858 -0.069338 0
+ 1.178744 -0.235749 0
+ 1.026201 0.124808 0
+ 2.010799 0.180279 0
+ F4 6815744 0.000000 4 0
+ 0.457630 -1.844388 0
+ 0.097073 -1.567036 0
+ 0.194146 -0.984598 0
+ 0.416027 -1.067803 0
+ F4 6815744 0.000000 5 0
+ -1.456096 -0.166411 0
+ -1.261950 -0.027735 0
+ -0.596306 0.138676 0
+ -0.235749 -0.235749 0
+ -1.067803 -0.360557 0
+ L3 6815744 0.000000 1.361033 1.847117 0 0.874950 1.652683 0
+ L3 6815744 0.000000 0.874950 2.527633 0 0.680517 2.138767 0
+ L3 6815744 0.000000 -0.388867 2.430417 0 -0.194433 2.138767 0
+ L3 6815744 0.000000 -0.874950 1.069383 0 -0.388867 1.263817 0
+ L3 6815744 0.000000 -1.166600 0.583300 0 -0.777733 0.291650 0
+ L3 6815744 0.000000 -2.235983 0.194433 0 -1.749900 0.000000 0
+ L3 6815744 0.000000 -1.555467 -0.486083 0 -1.944333 -0.874950 0
+ L3 6815744 0.000000 -0.388867 -1.749900 0 -0.486083 -2.333200 0
+ L3 6815744 0.000000 -0.291650 -1.069383 0 -0.194433 -1.458250 0
+ L3 6815744 0.000000 0.680517 -1.749900 0 0.874950 -2.333200 0
+ L3 6815744 0.000000 1.166600 -1.652683 0 1.749900 -1.944333 0
+ L3 6815744 0.000000 2.624850 -0.680517 0 2.138767 -0.777733 0
+ L3 6815744 0.000000 2.624850 -1.555467 0 2.138767 -1.361033 0
+ L3 6815744 0.000000 2.819283 -1.166600 0 2.333200 -1.069383 0
+ L3 6815744 0.000000 1.166600 -2.819283 0 1.069383 -2.430417 0
+ L3 6815744 0.000000 1.749900 -2.527633 0 1.458250 -2.235983 0
+ L3 6815744 0.000000 2.916500 0.486083 0 2.333200 0.583300 0
+ L3 6815744 0.000000 2.916500 0.972167 0 2.430417 0.874950 0
+ L3 6815744 0.000000 -0.972167 -2.722067 0 -0.874950 -2.333200 0
+ L3 6815744 0.000000 -2.138767 -1.361033 0 -1.847117 -1.166600 0
+ L3 6815744 0.000000 1.361033 3.110933 0 1.166600 2.624850 0
+ L3 6815744 0.000000 1.749900 2.819283 0 1.458250 2.527633 0
+ L3 11184640 0.000000 1.361033 -2.624850 0 1.166600 -2.041550 0
+ L3 14915328 0.000000 1.555467 2.333200 0 1.263817 2.138767 0
+ L3 14915328 0.000000 -1.749900 0.486083 0 -1.361033 0.291650 0
+ F4 16755200 0.000000 4 0
+ 1.497698 1.539301 0
+ 0.887525 1.359023 0
+ 0.818187 0.901393 0
+ 1.220347 1.067803 0
+ F4 16755200 0.000000 3 0
+ 1.691844 -1.386758 0
+ 1.497698 -0.956863 0
+ 1.192612 -1.220347 0
+ F4 16755200 0.000000 4 0
+ -1.275817 -1.608639 0
+ -0.887525 -1.511566 0
+ -0.610173 -0.859790 0
+ -1.040068 -0.970730 0
+ L3 16755200 0.000000 0.194433 2.138767 0 0.388867 1.847117 0
+ L3 16755200 0.000000 -1.166600 1.555467 0 -0.777733 1.555467 0
+ L3 16755200 0.000000 -1.749900 -1.361033 0 -1.458250 -0.972167 0
+ L3 16755200 0.000000 -1.069383 -2.138767 0 -0.777733 -1.749900 0
+ L3 16755200 0.000000 2.430417 1.263817 0 1.944333 0.972167 0
+ END$SEGS
+STRUCTURE 125 3 0 0 0 A 2 150.000000 165.000000 0 0.000000 "Lg Fall 8"" Fall-8b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -2.419782 2.295585 0
+ -2.076517 3.593556 0
+ -1.304171 3.926095 0
+ -0.435281 2.853391 0
+ 0.562333 3.786643 0
+ 1.763761 3.218110 0
+ 1.484858 -3.164475 0
+ 0.347793 -3.765189 0
+ -0.124197 -3.035751 0
+ -1.078903 -3.046478 0
+ -1.314898 -3.786643 0
+ -2.784501 -3.314654 0
+ -2.602142 -2.445764 0
+ -3.814297 -2.359948 0
+ -4.436465 -1.104885 0
+ -3.749934 -0.396900 0
+ -4.651005 0.000000 0
+ -4.415011 0.901071 0
+ -3.460304 1.244336 0
+ -4.146835 1.802142 0
+ -3.589029 2.810483 0
+ F4 6815744 0.000000 28 0
+ -3.346835 1.802142 0
+ -2.789029 2.810483 0
+ -1.619782 2.295585 0
+ -1.276517 3.593556 0
+ -0.504171 3.926095 0
+ 0.364719 2.853391 0
+ 1.362333 3.786643 0
+ 2.563761 3.218110 0
+ 2.113226 2.027409 0
+ 3.550648 1.630509 0
+ 3.765189 0.278903 0
+ 3.014297 -0.418354 0
+ 3.722281 -1.426696 0
+ 3.185929 -2.327766 0
+ 2.317039 -2.005955 0
+ 2.284858 -3.164475 0
+ 1.147793 -3.765189 0
+ 0.675803 -3.035751 0
+ -0.278903 -3.046478 0
+ -0.514898 -3.786643 0
+ -1.984501 -3.314654 0
+ -1.802142 -2.445764 0
+ -3.014297 -2.359948 0
+ -3.636465 -1.104885 0
+ -2.949934 -0.396900 0
+ -3.851005 0.000000 0
+ -3.615011 0.901071 0
+ -2.660304 1.244336 0
+ F4 12410368 0.000000 26 0
+ 0.536352 2.510126 0
+ 1.287244 3.261018 0
+ 2.005955 2.821210 0
+ 1.684144 1.566147 0
+ 3.121567 1.169247 0
+ 3.218110 0.547079 0
+ 2.317039 -0.075089 0
+ 3.100113 -1.255063 0
+ 2.756848 -1.662690 0
+ 1.898685 -1.641236 0
+ 1.855777 -2.628123 0
+ 1.115612 -3.035751 0
+ 0.504171 -2.317039 0
+ -0.418354 -2.445764 0
+ -0.632895 -2.939207 0
+ -1.415969 -2.735394 0
+ -1.426696 -1.877231 0
+ -2.081045 -1.855777 0
+ -2.510126 -0.997614 0
+ -1.748507 -0.278903 0
+ -2.467218 0.096543 0
+ -2.349220 0.611441 0
+ -1.201428 0.825982 0
+ -1.641236 1.609055 0
+ -0.922525 2.166861 0
+ -0.632895 2.799756 0
+ L3 12410368 0.000000 -0.680517 3.305367 0 -0.291650 3.013717 0
+ L3 12410368 0.000000 -2.722067 1.847117 0 -2.430417 1.555467 0
+ L3 12410368 0.000000 -2.041550 1.652683 0 -1.652683 1.361033 0
+ L3 12410368 0.000000 -3.305367 0.777733 0 -2.624850 0.777733 0
+ L3 12410368 0.000000 -2.235983 -0.291650 0 -2.722067 -0.194433 0
+ L3 12410368 0.000000 -3.013717 -1.458250 0 -2.527633 -1.555467 0
+ L3 12410368 0.000000 -1.458250 -2.916500 0 -1.652683 -3.208150 0
+ L3 12410368 0.000000 -0.097217 -2.624850 0 0.000000 -2.916500 0
+ L3 12410368 0.000000 1.263817 -3.110933 0 1.166600 -3.499800 0
+ L3 12410368 0.000000 2.916500 -1.847117 0 3.110933 -2.138767 0
+ L3 12410368 0.000000 -2.722067 2.430417 0 -2.527633 2.041550 0
+ L3 14915328 0.000000 -3.110933 1.847117 0 -2.819283 2.041550 0
+ L3 16755200 0.000000 3.402583 0.291650 0 3.013717 0.194433 0
+ L3 16755200 0.000000 -0.972167 3.110933 0 -1.069383 2.624850 0
+ L3 16755200 0.000000 -2.235983 2.041550 0 -1.555467 2.041550 0
+ L3 16755200 0.000000 -1.847117 1.069383 0 -2.430417 0.972167 0
+ L3 16755200 0.000000 -3.305367 0.194433 0 -2.722067 0.486083 0
+ L3 16755200 0.000000 -2.624850 -0.680517 0 -3.305367 -1.069383 0
+ L3 16755200 0.000000 -2.333200 -2.235983 0 -2.138767 -1.944333 0
+ L3 16755200 0.000000 -0.874950 -3.110933 0 -0.680517 -3.402583 0
+ L3 16755200 0.000000 0.486083 -2.624850 0 0.194433 -2.819283 0
+ L3 16755200 0.000000 1.847117 -2.916500 0 2.138767 -3.013717 0
+ L3 16755200 0.000000 3.402583 -1.361033 0 3.110933 -1.458250 0
+ F4 6815744 0.000000 5 0
+ -0.582438 1.844388 0
+ -0.526968 1.525433 0
+ 0.069338 1.261950 0
+ 0.235749 1.650242 0
+ -0.069338 1.941461 0
+ F4 6815744 0.000000 4 0
+ 1.899858 -0.069338 0
+ 1.178744 -0.235749 0
+ 1.026201 0.124808 0
+ 2.010799 0.180279 0
+ F4 6815744 0.000000 4 0
+ 0.457630 -1.844388 0
+ 0.097073 -1.567036 0
+ 0.194146 -0.984598 0
+ 0.416027 -1.067803 0
+ F4 6815744 0.000000 5 0
+ -1.456096 -0.166411 0
+ -1.261950 -0.027735 0
+ -0.596306 0.138676 0
+ -0.235749 -0.235749 0
+ -1.067803 -0.360557 0
+ L3 6815744 0.000000 1.361033 1.847117 0 0.874950 1.652683 0
+ L3 6815744 0.000000 0.874950 2.527633 0 0.680517 2.138767 0
+ L3 6815744 0.000000 -0.388867 2.430417 0 -0.194433 2.138767 0
+ L3 6815744 0.000000 -0.874950 1.069383 0 -0.388867 1.263817 0
+ L3 6815744 0.000000 -1.166600 0.583300 0 -0.777733 0.291650 0
+ L3 6815744 0.000000 -2.235983 0.194433 0 -1.749900 0.000000 0
+ L3 6815744 0.000000 -1.555467 -0.486083 0 -1.944333 -0.874950 0
+ L3 6815744 0.000000 -0.388867 -1.749900 0 -0.486083 -2.333200 0
+ L3 6815744 0.000000 -0.291650 -1.069383 0 -0.194433 -1.458250 0
+ L3 6815744 0.000000 0.680517 -1.749900 0 0.874950 -2.333200 0
+ L3 6815744 0.000000 1.166600 -1.652683 0 1.749900 -1.944333 0
+ L3 6815744 0.000000 2.624850 -0.680517 0 2.138767 -0.777733 0
+ L3 6815744 0.000000 2.624850 -1.555467 0 2.138767 -1.361033 0
+ L3 6815744 0.000000 2.819283 -1.166600 0 2.333200 -1.069383 0
+ L3 6815744 0.000000 1.166600 -2.819283 0 1.069383 -2.430417 0
+ L3 6815744 0.000000 1.749900 -2.527633 0 1.458250 -2.235983 0
+ L3 6815744 0.000000 2.916500 0.486083 0 2.333200 0.583300 0
+ L3 6815744 0.000000 2.916500 0.972167 0 2.430417 0.874950 0
+ L3 6815744 0.000000 -0.972167 -2.722067 0 -0.874950 -2.333200 0
+ L3 6815744 0.000000 -2.138767 -1.361033 0 -1.847117 -1.166600 0
+ L3 6815744 0.000000 1.361033 3.110933 0 1.166600 2.624850 0
+ L3 6815744 0.000000 1.749900 2.819283 0 1.458250 2.527633 0
+ L3 11184640 0.000000 1.361033 -2.624850 0 1.166600 -2.041550 0
+ L3 14915328 0.000000 1.555467 2.333200 0 1.263817 2.138767 0
+ L3 14915328 0.000000 -1.749900 0.486083 0 -1.361033 0.291650 0
+ F4 16755200 0.000000 4 0
+ 1.497698 1.539301 0
+ 0.887525 1.359023 0
+ 0.818187 0.901393 0
+ 1.220347 1.067803 0
+ F4 16755200 0.000000 3 0
+ 1.691844 -1.386758 0
+ 1.497698 -0.956863 0
+ 1.192612 -1.220347 0
+ F4 16755200 0.000000 4 0
+ -1.275817 -1.608639 0
+ -0.887525 -1.511566 0
+ -0.610173 -0.859790 0
+ -1.040068 -0.970730 0
+ L3 16755200 0.000000 0.194433 2.138767 0 0.388867 1.847117 0
+ L3 16755200 0.000000 -1.166600 1.555467 0 -0.777733 1.555467 0
+ L3 16755200 0.000000 -1.749900 -1.361033 0 -1.458250 -0.972167 0
+ L3 16755200 0.000000 -1.069383 -2.138767 0 -0.777733 -1.749900 0
+ L3 16755200 0.000000 2.430417 1.263817 0 1.944333 0.972167 0
+ END$SEGS
+STRUCTURE 126 3 0 0 0 A 2 108.000000 184.000000 0 0.000000 "Lg Fall 10"" Fall-10a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.024728 -2.869482 0
+ -2.595646 -4.491946 0
+ -1.630213 -4.907618 0
+ -0.544101 -3.566739 0
+ 0.702917 -4.733304 0
+ 2.204701 -4.022638 0
+ 1.856073 3.955594 0
+ 0.434741 4.706486 0
+ -0.155246 3.794688 0
+ -1.348629 3.808097 0
+ -1.643622 4.733304 0
+ -3.480627 4.143317 0
+ -3.252677 3.057205 0
+ -4.767871 2.949934 0
+ -5.545581 1.381106 0
+ -4.687418 0.496125 0
+ -5.813757 0.000000 0
+ -5.518763 -1.126339 0
+ -4.325381 -1.555420 0
+ -5.183543 -2.252677 0
+ -4.486286 -3.513104 0
+ F4 6842368 0.000000 28 0
+ -4.183543 -2.252677 0
+ -3.486286 -3.513104 0
+ -2.024728 -2.869482 0
+ -1.595646 -4.491946 0
+ -0.630213 -4.907618 0
+ 0.455899 -3.566739 0
+ 1.702917 -4.733304 0
+ 3.204701 -4.022638 0
+ 2.641532 -2.534262 0
+ 4.438310 -2.038136 0
+ 4.706486 -0.348629 0
+ 3.767871 0.522943 0
+ 4.652851 1.783369 0
+ 3.982411 2.909708 0
+ 2.896299 2.507444 0
+ 2.856073 3.955594 0
+ 1.434741 4.706486 0
+ 0.844754 3.794688 0
+ -0.348629 3.808097 0
+ -0.643622 4.733304 0
+ -2.480627 4.143317 0
+ -2.252677 3.057205 0
+ -3.767871 2.949934 0
+ -4.545581 1.381106 0
+ -3.687418 0.496125 0
+ -4.813757 0.000000 0
+ -4.518763 -1.126339 0
+ -3.325381 -1.555420 0
+ F4 12434688 0.000000 26 0
+ 0.670440 -3.137657 0
+ 1.609055 -4.076273 0
+ 2.507444 -3.526512 0
+ 2.105180 -1.957684 0
+ 3.901959 -1.461558 0
+ 4.022638 -0.683848 0
+ 2.896299 0.093862 0
+ 3.875141 1.568829 0
+ 3.446060 2.078363 0
+ 2.373356 2.051545 0
+ 2.319721 3.285154 0
+ 1.394514 3.794688 0
+ 0.630213 2.896299 0
+ -0.522943 3.057205 0
+ -0.791119 3.674009 0
+ -1.769961 3.419242 0
+ -1.783369 2.346539 0
+ -2.601306 2.319721 0
+ -3.137657 1.247018 0
+ -2.185633 0.348629 0
+ -3.084022 -0.120679 0
+ -2.936526 -0.764301 0
+ -1.501785 -1.032477 0
+ -2.051545 -2.011319 0
+ -1.153156 -2.708576 0
+ -0.791119 -3.499695 0
+ L3 12434688 0.000000 -1.215208 -3.888667 0 -1.336729 -3.281062 0
+ L3 12434688 0.000000 -2.551937 -2.065854 0 -2.065854 -1.701292 0
+ L3 12434688 0.000000 -4.131708 -0.243042 0 -3.402583 -0.607604 0
+ L3 12434688 0.000000 -2.794979 0.364562 0 -3.402583 0.243042 0
+ L3 12434688 0.000000 -3.767146 1.822812 0 -3.159542 1.944333 0
+ L3 12434688 0.000000 -1.822812 3.645625 0 -2.065854 4.010187 0
+ L3 12434688 0.000000 0.607604 3.281062 0 0.243042 3.524104 0
+ L3 12434688 0.000000 2.308896 3.645625 0 2.673458 3.767146 0
+ L3 12434688 0.000000 4.253229 1.701292 0 3.888667 1.822812 0
+ L3 12434688 0.000000 -3.402583 -3.038021 0 -3.159542 -2.551937 0
+ L3 12434688 0.000000 -3.888667 -2.308896 0 -3.524104 -2.551937 0
+ L3 16755200 0.000000 -0.850646 -4.131708 0 -0.364562 -3.767146 0
+ L3 16755200 0.000000 -2.794979 -2.551937 0 -1.944333 -2.551937 0
+ L3 16755200 0.000000 -3.402583 -2.308896 0 -3.038021 -1.944333 0
+ L3 16755200 0.000000 -2.308896 -1.336729 0 -3.038021 -1.215208 0
+ L3 16755200 0.000000 -4.131708 -0.972167 0 -3.281062 -0.972167 0
+ L3 16755200 0.000000 -3.281062 0.850646 0 -4.131708 1.336729 0
+ L3 16755200 0.000000 -2.916500 2.794979 0 -2.673458 2.430417 0
+ L3 16755200 0.000000 -1.093687 3.888667 0 -0.850646 4.253229 0
+ L3 16755200 0.000000 -0.121521 3.281062 0 0.000000 3.645625 0
+ L3 16755200 0.000000 1.579771 3.888667 0 1.458250 4.374750 0
+ L3 16755200 0.000000 3.645625 2.308896 0 3.888667 2.673458 0
+ L3 16755200 0.000000 4.253229 -0.364562 0 3.767146 -0.243042 0
+ F4 6842368 0.000000 4 0
+ 1.872123 -1.924126 0
+ 1.109406 -1.698778 0
+ 1.022734 -1.126741 0
+ 1.525433 -1.334754 0
+ F4 6842368 0.000000 4 0
+ 2.374823 0.086672 0
+ 1.473430 0.294686 0
+ 1.282751 -0.156010 0
+ 2.513498 -0.225348 0
+ F4 6842368 0.000000 4 0
+ 0.572038 2.305485 0
+ 0.121341 1.958795 0
+ 0.242683 1.230747 0
+ 0.520034 1.334754 0
+ F4 6842368 0.000000 5 0
+ -1.820120 0.208014 0
+ -1.577437 0.034669 0
+ -0.745382 -0.173345 0
+ -0.294686 0.294686 0
+ -1.334754 0.450696 0
+ L3 6842368 0.000000 0.243042 -2.673458 0 0.486083 -2.308896 0
+ L3 6842368 0.000000 1.701292 -2.308896 0 1.093687 -2.065854 0
+ L3 6842368 0.000000 1.944333 -2.916500 0 1.579771 -2.673458 0
+ L3 6842368 0.000000 1.093687 -3.159542 0 0.850646 -2.673458 0
+ L3 6842368 0.000000 -0.486083 -3.038021 0 -0.243042 -2.673458 0
+ L3 6842368 0.000000 -1.458250 -1.944333 0 -0.972167 -1.944333 0
+ L3 6842368 0.000000 -1.093687 -1.336729 0 -0.486083 -1.579771 0
+ L3 6842368 0.000000 -1.458250 -0.729125 0 -0.972167 -0.364562 0
+ L3 6842368 0.000000 -2.187375 -0.607604 0 -1.701292 -0.364562 0
+ L3 6842368 0.000000 -2.794979 -0.243042 0 -2.187375 0.000000 0
+ L3 6842368 0.000000 -1.944333 0.607604 0 -2.430417 1.093687 0
+ L3 6842368 0.000000 -2.187375 1.701292 0 -1.822812 1.215208 0
+ L3 6842368 0.000000 -1.336729 2.673458 0 -0.972167 2.187375 0
+ L3 6842368 0.000000 -0.486083 2.187375 0 -0.607604 2.916500 0
+ L3 6842368 0.000000 -0.364562 1.336729 0 -0.243042 1.822812 0
+ L3 6842368 0.000000 0.850646 2.187375 0 1.093687 2.916500 0
+ L3 6842368 0.000000 1.458250 2.065854 0 2.187375 2.430417 0
+ L3 6842368 0.000000 3.281062 0.850646 0 2.673458 0.972167 0
+ L3 6842368 0.000000 3.281062 1.944333 0 2.673458 1.701292 0
+ L3 6842368 0.000000 3.524104 1.458250 0 2.916500 1.336729 0
+ L3 6842368 0.000000 1.458250 3.524104 0 1.336729 3.038021 0
+ L3 6842368 0.000000 2.187375 3.159542 0 1.822812 2.794979 0
+ L3 6842368 0.000000 1.701292 3.281062 0 1.458250 2.551937 0
+ L3 6842368 0.000000 3.645625 -0.607604 0 2.916500 -0.729125 0
+ L3 6842368 0.000000 3.038021 -1.579771 0 2.430417 -1.215208 0
+ L3 6842368 0.000000 3.645625 -1.215208 0 3.038021 -1.093687 0
+ L3 6842368 0.000000 -1.215208 3.402583 0 -1.093687 2.916500 0
+ L3 6842368 0.000000 -2.673458 1.701292 0 -2.308896 1.458250 0
+ L3 6842368 0.000000 1.701292 -3.888667 0 1.458250 -3.281062 0
+ L3 6842368 0.000000 2.187375 -3.524104 0 1.822812 -3.159542 0
+ F4 16755200 0.000000 5 0
+ -0.728048 -2.305485 0
+ -0.658710 -1.906792 0
+ 0.086672 -1.577437 0
+ 0.294686 -2.062802 0
+ -0.086672 -2.426826 0
+ F4 16755200 0.000000 3 0
+ 2.114806 1.733447 0
+ 1.872123 1.196079 0
+ 1.490765 1.525433 0
+ F4 16755200 0.000000 4 0
+ -1.594771 2.010799 0
+ -1.109406 1.889457 0
+ -0.762717 1.074737 0
+ -1.300085 1.213413 0
+ END$SEGS
+STRUCTURE 127 3 0 0 0 A 2 84.000000 163.500000 0 0.000000 "Lg Fall 10"" Fall-10a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.024728 -2.869482 0
+ -2.595646 -4.491946 0
+ -1.630213 -4.907618 0
+ -0.544101 -3.566739 0
+ 0.702917 -4.733304 0
+ 2.204701 -4.022638 0
+ 1.856073 3.955594 0
+ 0.434741 4.706486 0
+ -0.155246 3.794688 0
+ -1.348629 3.808097 0
+ -1.643622 4.733304 0
+ -3.480627 4.143317 0
+ -3.252677 3.057205 0
+ -4.767871 2.949934 0
+ -5.545581 1.381106 0
+ -4.687418 0.496125 0
+ -5.813757 0.000000 0
+ -5.518763 -1.126339 0
+ -4.325381 -1.555420 0
+ -5.183543 -2.252677 0
+ -4.486286 -3.513104 0
+ F4 6842368 0.000000 28 0
+ -4.183543 -2.252677 0
+ -3.486286 -3.513104 0
+ -2.024728 -2.869482 0
+ -1.595646 -4.491946 0
+ -0.630213 -4.907618 0
+ 0.455899 -3.566739 0
+ 1.702917 -4.733304 0
+ 3.204701 -4.022638 0
+ 2.641532 -2.534262 0
+ 4.438310 -2.038136 0
+ 4.706486 -0.348629 0
+ 3.767871 0.522943 0
+ 4.652851 1.783369 0
+ 3.982411 2.909708 0
+ 2.896299 2.507444 0
+ 2.856073 3.955594 0
+ 1.434741 4.706486 0
+ 0.844754 3.794688 0
+ -0.348629 3.808097 0
+ -0.643622 4.733304 0
+ -2.480627 4.143317 0
+ -2.252677 3.057205 0
+ -3.767871 2.949934 0
+ -4.545581 1.381106 0
+ -3.687418 0.496125 0
+ -4.813757 0.000000 0
+ -4.518763 -1.126339 0
+ -3.325381 -1.555420 0
+ F4 12434688 0.000000 26 0
+ 0.670440 -3.137657 0
+ 1.609055 -4.076273 0
+ 2.507444 -3.526512 0
+ 2.105180 -1.957684 0
+ 3.901959 -1.461558 0
+ 4.022638 -0.683848 0
+ 2.896299 0.093862 0
+ 3.875141 1.568829 0
+ 3.446060 2.078363 0
+ 2.373356 2.051545 0
+ 2.319721 3.285154 0
+ 1.394514 3.794688 0
+ 0.630213 2.896299 0
+ -0.522943 3.057205 0
+ -0.791119 3.674009 0
+ -1.769961 3.419242 0
+ -1.783369 2.346539 0
+ -2.601306 2.319721 0
+ -3.137657 1.247018 0
+ -2.185633 0.348629 0
+ -3.084022 -0.120679 0
+ -2.936526 -0.764301 0
+ -1.501785 -1.032477 0
+ -2.051545 -2.011319 0
+ -1.153156 -2.708576 0
+ -0.791119 -3.499695 0
+ L3 12434688 0.000000 -1.215208 -3.888667 0 -1.336729 -3.281062 0
+ L3 12434688 0.000000 -2.551937 -2.065854 0 -2.065854 -1.701292 0
+ L3 12434688 0.000000 -4.131708 -0.243042 0 -3.402583 -0.607604 0
+ L3 12434688 0.000000 -2.794979 0.364562 0 -3.402583 0.243042 0
+ L3 12434688 0.000000 -3.767146 1.822812 0 -3.159542 1.944333 0
+ L3 12434688 0.000000 -1.822812 3.645625 0 -2.065854 4.010187 0
+ L3 12434688 0.000000 0.607604 3.281062 0 0.243042 3.524104 0
+ L3 12434688 0.000000 2.308896 3.645625 0 2.673458 3.767146 0
+ L3 12434688 0.000000 4.253229 1.701292 0 3.888667 1.822812 0
+ L3 12434688 0.000000 -3.402583 -3.038021 0 -3.159542 -2.551937 0
+ L3 12434688 0.000000 -3.888667 -2.308896 0 -3.524104 -2.551937 0
+ L3 16755200 0.000000 -0.850646 -4.131708 0 -0.364562 -3.767146 0
+ L3 16755200 0.000000 -2.794979 -2.551937 0 -1.944333 -2.551937 0
+ L3 16755200 0.000000 -3.402583 -2.308896 0 -3.038021 -1.944333 0
+ L3 16755200 0.000000 -2.308896 -1.336729 0 -3.038021 -1.215208 0
+ L3 16755200 0.000000 -4.131708 -0.972167 0 -3.281062 -0.972167 0
+ L3 16755200 0.000000 -3.281062 0.850646 0 -4.131708 1.336729 0
+ L3 16755200 0.000000 -2.916500 2.794979 0 -2.673458 2.430417 0
+ L3 16755200 0.000000 -1.093687 3.888667 0 -0.850646 4.253229 0
+ L3 16755200 0.000000 -0.121521 3.281062 0 0.000000 3.645625 0
+ L3 16755200 0.000000 1.579771 3.888667 0 1.458250 4.374750 0
+ L3 16755200 0.000000 3.645625 2.308896 0 3.888667 2.673458 0
+ L3 16755200 0.000000 4.253229 -0.364562 0 3.767146 -0.243042 0
+ F4 6842368 0.000000 4 0
+ 1.872123 -1.924126 0
+ 1.109406 -1.698778 0
+ 1.022734 -1.126741 0
+ 1.525433 -1.334754 0
+ F4 6842368 0.000000 4 0
+ 2.374823 0.086672 0
+ 1.473430 0.294686 0
+ 1.282751 -0.156010 0
+ 2.513498 -0.225348 0
+ F4 6842368 0.000000 4 0
+ 0.572038 2.305485 0
+ 0.121341 1.958795 0
+ 0.242683 1.230747 0
+ 0.520034 1.334754 0
+ F4 6842368 0.000000 5 0
+ -1.820120 0.208014 0
+ -1.577437 0.034669 0
+ -0.745382 -0.173345 0
+ -0.294686 0.294686 0
+ -1.334754 0.450696 0
+ L3 6842368 0.000000 0.243042 -2.673458 0 0.486083 -2.308896 0
+ L3 6842368 0.000000 1.701292 -2.308896 0 1.093687 -2.065854 0
+ L3 6842368 0.000000 1.944333 -2.916500 0 1.579771 -2.673458 0
+ L3 6842368 0.000000 1.093687 -3.159542 0 0.850646 -2.673458 0
+ L3 6842368 0.000000 -0.486083 -3.038021 0 -0.243042 -2.673458 0
+ L3 6842368 0.000000 -1.458250 -1.944333 0 -0.972167 -1.944333 0
+ L3 6842368 0.000000 -1.093687 -1.336729 0 -0.486083 -1.579771 0
+ L3 6842368 0.000000 -1.458250 -0.729125 0 -0.972167 -0.364562 0
+ L3 6842368 0.000000 -2.187375 -0.607604 0 -1.701292 -0.364562 0
+ L3 6842368 0.000000 -2.794979 -0.243042 0 -2.187375 0.000000 0
+ L3 6842368 0.000000 -1.944333 0.607604 0 -2.430417 1.093687 0
+ L3 6842368 0.000000 -2.187375 1.701292 0 -1.822812 1.215208 0
+ L3 6842368 0.000000 -1.336729 2.673458 0 -0.972167 2.187375 0
+ L3 6842368 0.000000 -0.486083 2.187375 0 -0.607604 2.916500 0
+ L3 6842368 0.000000 -0.364562 1.336729 0 -0.243042 1.822812 0
+ L3 6842368 0.000000 0.850646 2.187375 0 1.093687 2.916500 0
+ L3 6842368 0.000000 1.458250 2.065854 0 2.187375 2.430417 0
+ L3 6842368 0.000000 3.281062 0.850646 0 2.673458 0.972167 0
+ L3 6842368 0.000000 3.281062 1.944333 0 2.673458 1.701292 0
+ L3 6842368 0.000000 3.524104 1.458250 0 2.916500 1.336729 0
+ L3 6842368 0.000000 1.458250 3.524104 0 1.336729 3.038021 0
+ L3 6842368 0.000000 2.187375 3.159542 0 1.822812 2.794979 0
+ L3 6842368 0.000000 1.701292 3.281062 0 1.458250 2.551937 0
+ L3 6842368 0.000000 3.645625 -0.607604 0 2.916500 -0.729125 0
+ L3 6842368 0.000000 3.038021 -1.579771 0 2.430417 -1.215208 0
+ L3 6842368 0.000000 3.645625 -1.215208 0 3.038021 -1.093687 0
+ L3 6842368 0.000000 -1.215208 3.402583 0 -1.093687 2.916500 0
+ L3 6842368 0.000000 -2.673458 1.701292 0 -2.308896 1.458250 0
+ L3 6842368 0.000000 1.701292 -3.888667 0 1.458250 -3.281062 0
+ L3 6842368 0.000000 2.187375 -3.524104 0 1.822812 -3.159542 0
+ F4 16755200 0.000000 5 0
+ -0.728048 -2.305485 0
+ -0.658710 -1.906792 0
+ 0.086672 -1.577437 0
+ 0.294686 -2.062802 0
+ -0.086672 -2.426826 0
+ F4 16755200 0.000000 3 0
+ 2.114806 1.733447 0
+ 1.872123 1.196079 0
+ 1.490765 1.525433 0
+ F4 16755200 0.000000 4 0
+ -1.594771 2.010799 0
+ -1.109406 1.889457 0
+ -0.762717 1.074737 0
+ -1.300085 1.213413 0
+ END$SEGS
+STRUCTURE 128 3 0 0 0 A 2 78.500000 136.000000 0 0.000000 "Lg Fall 10"" Fall-10a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.024728 -2.869482 0
+ -2.595646 -4.491946 0
+ -1.630213 -4.907618 0
+ -0.544101 -3.566739 0
+ 0.702917 -4.733304 0
+ 2.204701 -4.022638 0
+ 1.856073 3.955594 0
+ 0.434741 4.706486 0
+ -0.155246 3.794688 0
+ -1.348629 3.808097 0
+ -1.643622 4.733304 0
+ -3.480627 4.143317 0
+ -3.252677 3.057205 0
+ -4.767871 2.949934 0
+ -5.545581 1.381106 0
+ -4.687418 0.496125 0
+ -5.813757 0.000000 0
+ -5.518763 -1.126339 0
+ -4.325381 -1.555420 0
+ -5.183543 -2.252677 0
+ -4.486286 -3.513104 0
+ F4 6842368 0.000000 28 0
+ -4.183543 -2.252677 0
+ -3.486286 -3.513104 0
+ -2.024728 -2.869482 0
+ -1.595646 -4.491946 0
+ -0.630213 -4.907618 0
+ 0.455899 -3.566739 0
+ 1.702917 -4.733304 0
+ 3.204701 -4.022638 0
+ 2.641532 -2.534262 0
+ 4.438310 -2.038136 0
+ 4.706486 -0.348629 0
+ 3.767871 0.522943 0
+ 4.652851 1.783369 0
+ 3.982411 2.909708 0
+ 2.896299 2.507444 0
+ 2.856073 3.955594 0
+ 1.434741 4.706486 0
+ 0.844754 3.794688 0
+ -0.348629 3.808097 0
+ -0.643622 4.733304 0
+ -2.480627 4.143317 0
+ -2.252677 3.057205 0
+ -3.767871 2.949934 0
+ -4.545581 1.381106 0
+ -3.687418 0.496125 0
+ -4.813757 0.000000 0
+ -4.518763 -1.126339 0
+ -3.325381 -1.555420 0
+ F4 12434688 0.000000 26 0
+ 0.670440 -3.137657 0
+ 1.609055 -4.076273 0
+ 2.507444 -3.526512 0
+ 2.105180 -1.957684 0
+ 3.901959 -1.461558 0
+ 4.022638 -0.683848 0
+ 2.896299 0.093862 0
+ 3.875141 1.568829 0
+ 3.446060 2.078363 0
+ 2.373356 2.051545 0
+ 2.319721 3.285154 0
+ 1.394514 3.794688 0
+ 0.630213 2.896299 0
+ -0.522943 3.057205 0
+ -0.791119 3.674009 0
+ -1.769961 3.419242 0
+ -1.783369 2.346539 0
+ -2.601306 2.319721 0
+ -3.137657 1.247018 0
+ -2.185633 0.348629 0
+ -3.084022 -0.120679 0
+ -2.936526 -0.764301 0
+ -1.501785 -1.032477 0
+ -2.051545 -2.011319 0
+ -1.153156 -2.708576 0
+ -0.791119 -3.499695 0
+ L3 12434688 0.000000 -1.215208 -3.888667 0 -1.336729 -3.281062 0
+ L3 12434688 0.000000 -2.551937 -2.065854 0 -2.065854 -1.701292 0
+ L3 12434688 0.000000 -4.131708 -0.243042 0 -3.402583 -0.607604 0
+ L3 12434688 0.000000 -2.794979 0.364562 0 -3.402583 0.243042 0
+ L3 12434688 0.000000 -3.767146 1.822812 0 -3.159542 1.944333 0
+ L3 12434688 0.000000 -1.822812 3.645625 0 -2.065854 4.010187 0
+ L3 12434688 0.000000 0.607604 3.281062 0 0.243042 3.524104 0
+ L3 12434688 0.000000 2.308896 3.645625 0 2.673458 3.767146 0
+ L3 12434688 0.000000 4.253229 1.701292 0 3.888667 1.822812 0
+ L3 12434688 0.000000 -3.402583 -3.038021 0 -3.159542 -2.551937 0
+ L3 12434688 0.000000 -3.888667 -2.308896 0 -3.524104 -2.551937 0
+ L3 16755200 0.000000 -0.850646 -4.131708 0 -0.364562 -3.767146 0
+ L3 16755200 0.000000 -2.794979 -2.551937 0 -1.944333 -2.551937 0
+ L3 16755200 0.000000 -3.402583 -2.308896 0 -3.038021 -1.944333 0
+ L3 16755200 0.000000 -2.308896 -1.336729 0 -3.038021 -1.215208 0
+ L3 16755200 0.000000 -4.131708 -0.972167 0 -3.281062 -0.972167 0
+ L3 16755200 0.000000 -3.281062 0.850646 0 -4.131708 1.336729 0
+ L3 16755200 0.000000 -2.916500 2.794979 0 -2.673458 2.430417 0
+ L3 16755200 0.000000 -1.093687 3.888667 0 -0.850646 4.253229 0
+ L3 16755200 0.000000 -0.121521 3.281062 0 0.000000 3.645625 0
+ L3 16755200 0.000000 1.579771 3.888667 0 1.458250 4.374750 0
+ L3 16755200 0.000000 3.645625 2.308896 0 3.888667 2.673458 0
+ L3 16755200 0.000000 4.253229 -0.364562 0 3.767146 -0.243042 0
+ F4 6842368 0.000000 4 0
+ 1.872123 -1.924126 0
+ 1.109406 -1.698778 0
+ 1.022734 -1.126741 0
+ 1.525433 -1.334754 0
+ F4 6842368 0.000000 4 0
+ 2.374823 0.086672 0
+ 1.473430 0.294686 0
+ 1.282751 -0.156010 0
+ 2.513498 -0.225348 0
+ F4 6842368 0.000000 4 0
+ 0.572038 2.305485 0
+ 0.121341 1.958795 0
+ 0.242683 1.230747 0
+ 0.520034 1.334754 0
+ F4 6842368 0.000000 5 0
+ -1.820120 0.208014 0
+ -1.577437 0.034669 0
+ -0.745382 -0.173345 0
+ -0.294686 0.294686 0
+ -1.334754 0.450696 0
+ L3 6842368 0.000000 0.243042 -2.673458 0 0.486083 -2.308896 0
+ L3 6842368 0.000000 1.701292 -2.308896 0 1.093687 -2.065854 0
+ L3 6842368 0.000000 1.944333 -2.916500 0 1.579771 -2.673458 0
+ L3 6842368 0.000000 1.093687 -3.159542 0 0.850646 -2.673458 0
+ L3 6842368 0.000000 -0.486083 -3.038021 0 -0.243042 -2.673458 0
+ L3 6842368 0.000000 -1.458250 -1.944333 0 -0.972167 -1.944333 0
+ L3 6842368 0.000000 -1.093687 -1.336729 0 -0.486083 -1.579771 0
+ L3 6842368 0.000000 -1.458250 -0.729125 0 -0.972167 -0.364562 0
+ L3 6842368 0.000000 -2.187375 -0.607604 0 -1.701292 -0.364562 0
+ L3 6842368 0.000000 -2.794979 -0.243042 0 -2.187375 0.000000 0
+ L3 6842368 0.000000 -1.944333 0.607604 0 -2.430417 1.093687 0
+ L3 6842368 0.000000 -2.187375 1.701292 0 -1.822812 1.215208 0
+ L3 6842368 0.000000 -1.336729 2.673458 0 -0.972167 2.187375 0
+ L3 6842368 0.000000 -0.486083 2.187375 0 -0.607604 2.916500 0
+ L3 6842368 0.000000 -0.364562 1.336729 0 -0.243042 1.822812 0
+ L3 6842368 0.000000 0.850646 2.187375 0 1.093687 2.916500 0
+ L3 6842368 0.000000 1.458250 2.065854 0 2.187375 2.430417 0
+ L3 6842368 0.000000 3.281062 0.850646 0 2.673458 0.972167 0
+ L3 6842368 0.000000 3.281062 1.944333 0 2.673458 1.701292 0
+ L3 6842368 0.000000 3.524104 1.458250 0 2.916500 1.336729 0
+ L3 6842368 0.000000 1.458250 3.524104 0 1.336729 3.038021 0
+ L3 6842368 0.000000 2.187375 3.159542 0 1.822812 2.794979 0
+ L3 6842368 0.000000 1.701292 3.281062 0 1.458250 2.551937 0
+ L3 6842368 0.000000 3.645625 -0.607604 0 2.916500 -0.729125 0
+ L3 6842368 0.000000 3.038021 -1.579771 0 2.430417 -1.215208 0
+ L3 6842368 0.000000 3.645625 -1.215208 0 3.038021 -1.093687 0
+ L3 6842368 0.000000 -1.215208 3.402583 0 -1.093687 2.916500 0
+ L3 6842368 0.000000 -2.673458 1.701292 0 -2.308896 1.458250 0
+ L3 6842368 0.000000 1.701292 -3.888667 0 1.458250 -3.281062 0
+ L3 6842368 0.000000 2.187375 -3.524104 0 1.822812 -3.159542 0
+ F4 16755200 0.000000 5 0
+ -0.728048 -2.305485 0
+ -0.658710 -1.906792 0
+ 0.086672 -1.577437 0
+ 0.294686 -2.062802 0
+ -0.086672 -2.426826 0
+ F4 16755200 0.000000 3 0
+ 2.114806 1.733447 0
+ 1.872123 1.196079 0
+ 1.490765 1.525433 0
+ F4 16755200 0.000000 4 0
+ -1.594771 2.010799 0
+ -1.109406 1.889457 0
+ -0.762717 1.074737 0
+ -1.300085 1.213413 0
+ END$SEGS
+STRUCTURE 129 3 0 0 0 A 2 151.500000 149.000000 0 0.000000 "Lg Fall 10"" Fall-10b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.024728 2.869482 0
+ -2.595646 4.491946 0
+ -1.630213 4.907618 0
+ -0.544101 3.566739 0
+ 0.702917 4.733304 0
+ 2.204701 4.022638 0
+ 1.856073 -3.955594 0
+ 0.434741 -4.706486 0
+ -0.155246 -3.794688 0
+ -1.348629 -3.808097 0
+ -1.643622 -4.733304 0
+ -3.480627 -4.143317 0
+ -3.252677 -3.057205 0
+ -4.767871 -2.949934 0
+ -5.545581 -1.381106 0
+ -4.687418 -0.496125 0
+ -5.813757 0.000000 0
+ -5.518763 1.126339 0
+ -4.325381 1.555420 0
+ -5.183543 2.252677 0
+ -4.486286 3.513104 0
+ F4 6815744 0.000000 28 0
+ -4.183543 2.252677 0
+ -3.486286 3.513104 0
+ -2.024728 2.869482 0
+ -1.595646 4.491946 0
+ -0.630213 4.907618 0
+ 0.455899 3.566739 0
+ 1.702917 4.733304 0
+ 3.204701 4.022638 0
+ 2.641532 2.534262 0
+ 4.438310 2.038136 0
+ 4.706486 0.348629 0
+ 3.767871 -0.522943 0
+ 4.652851 -1.783369 0
+ 3.982411 -2.909708 0
+ 2.896299 -2.507444 0
+ 2.856073 -3.955594 0
+ 1.434741 -4.706486 0
+ 0.844754 -3.794688 0
+ -0.348629 -3.808097 0
+ -0.643622 -4.733304 0
+ -2.480627 -4.143317 0
+ -2.252677 -3.057205 0
+ -3.767871 -2.949934 0
+ -4.545581 -1.381106 0
+ -3.687418 -0.496125 0
+ -4.813757 0.000000 0
+ -4.518763 1.126339 0
+ -3.325381 1.555420 0
+ F4 12410368 0.000000 26 0
+ 0.670440 3.137657 0
+ 1.609055 4.076273 0
+ 2.507444 3.526512 0
+ 2.105180 1.957684 0
+ 3.901959 1.461558 0
+ 4.022638 0.683848 0
+ 2.896299 -0.093862 0
+ 3.875141 -1.568829 0
+ 3.446060 -2.078363 0
+ 2.373356 -2.051545 0
+ 2.319721 -3.285154 0
+ 1.394514 -3.794688 0
+ 0.630213 -2.896299 0
+ -0.522943 -3.057205 0
+ -0.791119 -3.674009 0
+ -1.769961 -3.419242 0
+ -1.783369 -2.346539 0
+ -2.601306 -2.319721 0
+ -3.137657 -1.247018 0
+ -2.185633 -0.348629 0
+ -3.084022 0.120679 0
+ -2.936526 0.764301 0
+ -1.501785 1.032477 0
+ -2.051545 2.011319 0
+ -1.153156 2.708576 0
+ -0.791119 3.499695 0
+ L3 12410368 0.000000 -0.850646 4.131708 0 -0.364562 3.767146 0
+ L3 12410368 0.000000 -3.402583 2.308896 0 -3.038021 1.944333 0
+ L3 12410368 0.000000 -2.551937 2.065854 0 -2.065854 1.701292 0
+ L3 12410368 0.000000 -4.131708 0.972167 0 -3.281062 0.972167 0
+ L3 12410368 0.000000 -2.794979 -0.364562 0 -3.402583 -0.243042 0
+ L3 12410368 0.000000 -3.767146 -1.822812 0 -3.159542 -1.944333 0
+ L3 12410368 0.000000 -1.822812 -3.645625 0 -2.065854 -4.010187 0
+ L3 12410368 0.000000 -0.121521 -3.281062 0 0.000000 -3.645625 0
+ L3 12410368 0.000000 1.579771 -3.888667 0 1.458250 -4.374750 0
+ L3 12410368 0.000000 3.645625 -2.308896 0 3.888667 -2.673458 0
+ L3 12410368 0.000000 -3.402583 3.038021 0 -3.159542 2.551937 0
+ L3 14915328 0.000000 -3.888667 2.308896 0 -3.524104 2.551937 0
+ L3 16755200 0.000000 4.253229 0.364562 0 3.767146 0.243042 0
+ L3 16755200 0.000000 -1.215208 3.888667 0 -1.336729 3.281062 0
+ L3 16755200 0.000000 -2.794979 2.551937 0 -1.944333 2.551937 0
+ L3 16755200 0.000000 -2.308896 1.336729 0 -3.038021 1.215208 0
+ L3 16755200 0.000000 -4.131708 0.243042 0 -3.402583 0.607604 0
+ L3 16755200 0.000000 -3.281062 -0.850646 0 -4.131708 -1.336729 0
+ L3 16755200 0.000000 -2.916500 -2.794979 0 -2.673458 -2.430417 0
+ L3 16755200 0.000000 -1.093687 -3.888667 0 -0.850646 -4.253229 0
+ L3 16755200 0.000000 0.607604 -3.281062 0 0.243042 -3.524104 0
+ L3 16755200 0.000000 2.308896 -3.645625 0 2.673458 -3.767146 0
+ L3 16755200 0.000000 4.253229 -1.701292 0 3.888667 -1.822812 0
+ F4 6815744 0.000000 5 0
+ -0.728048 2.305485 0
+ -0.658710 1.906792 0
+ 0.086672 1.577437 0
+ 0.294686 2.062802 0
+ -0.086672 2.426826 0
+ F4 6815744 0.000000 4 0
+ 2.374823 -0.086672 0
+ 1.473430 -0.294686 0
+ 1.282751 0.156010 0
+ 2.513498 0.225348 0
+ F4 6815744 0.000000 4 0
+ 0.572038 -2.305485 0
+ 0.121341 -1.958795 0
+ 0.242683 -1.230747 0
+ 0.520034 -1.334754 0
+ F4 6815744 0.000000 5 0
+ -1.820120 -0.208014 0
+ -1.577437 -0.034669 0
+ -0.745382 0.173345 0
+ -0.294686 -0.294686 0
+ -1.334754 -0.450696 0
+ L3 6815744 0.000000 1.701292 2.308896 0 1.093687 2.065854 0
+ L3 6815744 0.000000 1.093687 3.159542 0 0.850646 2.673458 0
+ L3 6815744 0.000000 -0.486083 3.038021 0 -0.243042 2.673458 0
+ L3 6815744 0.000000 -1.093687 1.336729 0 -0.486083 1.579771 0
+ L3 6815744 0.000000 -1.458250 0.729125 0 -0.972167 0.364562 0
+ L3 6815744 0.000000 -2.794979 0.243042 0 -2.187375 0.000000 0
+ L3 6815744 0.000000 -1.944333 -0.607604 0 -2.430417 -1.093687 0
+ L3 6815744 0.000000 -0.486083 -2.187375 0 -0.607604 -2.916500 0
+ L3 6815744 0.000000 -0.364562 -1.336729 0 -0.243042 -1.822812 0
+ L3 6815744 0.000000 0.850646 -2.187375 0 1.093687 -2.916500 0
+ L3 6815744 0.000000 1.458250 -2.065854 0 2.187375 -2.430417 0
+ L3 6815744 0.000000 3.281062 -0.850646 0 2.673458 -0.972167 0
+ L3 6815744 0.000000 3.281062 -1.944333 0 2.673458 -1.701292 0
+ L3 6815744 0.000000 3.524104 -1.458250 0 2.916500 -1.336729 0
+ L3 6815744 0.000000 1.458250 -3.524104 0 1.336729 -3.038021 0
+ L3 6815744 0.000000 2.187375 -3.159542 0 1.822812 -2.794979 0
+ L3 6815744 0.000000 3.645625 0.607604 0 2.916500 0.729125 0
+ L3 6815744 0.000000 3.645625 1.215208 0 3.038021 1.093687 0
+ L3 6815744 0.000000 -1.215208 -3.402583 0 -1.093687 -2.916500 0
+ L3 6815744 0.000000 -2.673458 -1.701292 0 -2.308896 -1.458250 0
+ L3 6815744 0.000000 1.701292 3.888667 0 1.458250 3.281062 0
+ L3 6815744 0.000000 2.187375 3.524104 0 1.822812 3.159542 0
+ L3 11184640 0.000000 1.701292 -3.281062 0 1.458250 -2.551937 0
+ L3 14915328 0.000000 1.944333 2.916500 0 1.579771 2.673458 0
+ L3 14915328 0.000000 -2.187375 0.607604 0 -1.701292 0.364562 0
+ F4 16755200 0.000000 4 0
+ 1.872123 1.924126 0
+ 1.109406 1.698778 0
+ 1.022734 1.126741 0
+ 1.525433 1.334754 0
+ F4 16755200 0.000000 3 0
+ 2.114806 -1.733447 0
+ 1.872123 -1.196079 0
+ 1.490765 -1.525433 0
+ F4 16755200 0.000000 4 0
+ -1.594771 -2.010799 0
+ -1.109406 -1.889457 0
+ -0.762717 -1.074737 0
+ -1.300085 -1.213413 0
+ L3 16755200 0.000000 0.243042 2.673458 0 0.486083 2.308896 0
+ L3 16755200 0.000000 -1.458250 1.944333 0 -0.972167 1.944333 0
+ L3 16755200 0.000000 -2.187375 -1.701292 0 -1.822812 -1.215208 0
+ L3 16755200 0.000000 -1.336729 -2.673458 0 -0.972167 -2.187375 0
+ L3 16755200 0.000000 3.038021 1.579771 0 2.430417 1.215208 0
+ END$SEGS
+STRUCTURE 130 3 0 0 0 A 2 103.500000 168.000000 0 0.000000 "Lg Fall 10"" Fall-10b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.024728 2.869482 0
+ -2.595646 4.491946 0
+ -1.630213 4.907618 0
+ -0.544101 3.566739 0
+ 0.702917 4.733304 0
+ 2.204701 4.022638 0
+ 1.856073 -3.955594 0
+ 0.434741 -4.706486 0
+ -0.155246 -3.794688 0
+ -1.348629 -3.808097 0
+ -1.643622 -4.733304 0
+ -3.480627 -4.143317 0
+ -3.252677 -3.057205 0
+ -4.767871 -2.949934 0
+ -5.545581 -1.381106 0
+ -4.687418 -0.496125 0
+ -5.813757 0.000000 0
+ -5.518763 1.126339 0
+ -4.325381 1.555420 0
+ -5.183543 2.252677 0
+ -4.486286 3.513104 0
+ F4 6815744 0.000000 28 0
+ -4.183543 2.252677 0
+ -3.486286 3.513104 0
+ -2.024728 2.869482 0
+ -1.595646 4.491946 0
+ -0.630213 4.907618 0
+ 0.455899 3.566739 0
+ 1.702917 4.733304 0
+ 3.204701 4.022638 0
+ 2.641532 2.534262 0
+ 4.438310 2.038136 0
+ 4.706486 0.348629 0
+ 3.767871 -0.522943 0
+ 4.652851 -1.783369 0
+ 3.982411 -2.909708 0
+ 2.896299 -2.507444 0
+ 2.856073 -3.955594 0
+ 1.434741 -4.706486 0
+ 0.844754 -3.794688 0
+ -0.348629 -3.808097 0
+ -0.643622 -4.733304 0
+ -2.480627 -4.143317 0
+ -2.252677 -3.057205 0
+ -3.767871 -2.949934 0
+ -4.545581 -1.381106 0
+ -3.687418 -0.496125 0
+ -4.813757 0.000000 0
+ -4.518763 1.126339 0
+ -3.325381 1.555420 0
+ F4 12410368 0.000000 26 0
+ 0.670440 3.137657 0
+ 1.609055 4.076273 0
+ 2.507444 3.526512 0
+ 2.105180 1.957684 0
+ 3.901959 1.461558 0
+ 4.022638 0.683848 0
+ 2.896299 -0.093862 0
+ 3.875141 -1.568829 0
+ 3.446060 -2.078363 0
+ 2.373356 -2.051545 0
+ 2.319721 -3.285154 0
+ 1.394514 -3.794688 0
+ 0.630213 -2.896299 0
+ -0.522943 -3.057205 0
+ -0.791119 -3.674009 0
+ -1.769961 -3.419242 0
+ -1.783369 -2.346539 0
+ -2.601306 -2.319721 0
+ -3.137657 -1.247018 0
+ -2.185633 -0.348629 0
+ -3.084022 0.120679 0
+ -2.936526 0.764301 0
+ -1.501785 1.032477 0
+ -2.051545 2.011319 0
+ -1.153156 2.708576 0
+ -0.791119 3.499695 0
+ L3 12410368 0.000000 -0.850646 4.131708 0 -0.364562 3.767146 0
+ L3 12410368 0.000000 -3.402583 2.308896 0 -3.038021 1.944333 0
+ L3 12410368 0.000000 -2.551937 2.065854 0 -2.065854 1.701292 0
+ L3 12410368 0.000000 -4.131708 0.972167 0 -3.281062 0.972167 0
+ L3 12410368 0.000000 -2.794979 -0.364562 0 -3.402583 -0.243042 0
+ L3 12410368 0.000000 -3.767146 -1.822812 0 -3.159542 -1.944333 0
+ L3 12410368 0.000000 -1.822812 -3.645625 0 -2.065854 -4.010187 0
+ L3 12410368 0.000000 -0.121521 -3.281062 0 0.000000 -3.645625 0
+ L3 12410368 0.000000 1.579771 -3.888667 0 1.458250 -4.374750 0
+ L3 12410368 0.000000 3.645625 -2.308896 0 3.888667 -2.673458 0
+ L3 12410368 0.000000 -3.402583 3.038021 0 -3.159542 2.551937 0
+ L3 14915328 0.000000 -3.888667 2.308896 0 -3.524104 2.551937 0
+ L3 16755200 0.000000 4.253229 0.364562 0 3.767146 0.243042 0
+ L3 16755200 0.000000 -1.215208 3.888667 0 -1.336729 3.281062 0
+ L3 16755200 0.000000 -2.794979 2.551937 0 -1.944333 2.551937 0
+ L3 16755200 0.000000 -2.308896 1.336729 0 -3.038021 1.215208 0
+ L3 16755200 0.000000 -4.131708 0.243042 0 -3.402583 0.607604 0
+ L3 16755200 0.000000 -3.281062 -0.850646 0 -4.131708 -1.336729 0
+ L3 16755200 0.000000 -2.916500 -2.794979 0 -2.673458 -2.430417 0
+ L3 16755200 0.000000 -1.093687 -3.888667 0 -0.850646 -4.253229 0
+ L3 16755200 0.000000 0.607604 -3.281062 0 0.243042 -3.524104 0
+ L3 16755200 0.000000 2.308896 -3.645625 0 2.673458 -3.767146 0
+ L3 16755200 0.000000 4.253229 -1.701292 0 3.888667 -1.822812 0
+ F4 6815744 0.000000 5 0
+ -0.728048 2.305485 0
+ -0.658710 1.906792 0
+ 0.086672 1.577437 0
+ 0.294686 2.062802 0
+ -0.086672 2.426826 0
+ F4 6815744 0.000000 4 0
+ 2.374823 -0.086672 0
+ 1.473430 -0.294686 0
+ 1.282751 0.156010 0
+ 2.513498 0.225348 0
+ F4 6815744 0.000000 4 0
+ 0.572038 -2.305485 0
+ 0.121341 -1.958795 0
+ 0.242683 -1.230747 0
+ 0.520034 -1.334754 0
+ F4 6815744 0.000000 5 0
+ -1.820120 -0.208014 0
+ -1.577437 -0.034669 0
+ -0.745382 0.173345 0
+ -0.294686 -0.294686 0
+ -1.334754 -0.450696 0
+ L3 6815744 0.000000 1.701292 2.308896 0 1.093687 2.065854 0
+ L3 6815744 0.000000 1.093687 3.159542 0 0.850646 2.673458 0
+ L3 6815744 0.000000 -0.486083 3.038021 0 -0.243042 2.673458 0
+ L3 6815744 0.000000 -1.093687 1.336729 0 -0.486083 1.579771 0
+ L3 6815744 0.000000 -1.458250 0.729125 0 -0.972167 0.364562 0
+ L3 6815744 0.000000 -2.794979 0.243042 0 -2.187375 0.000000 0
+ L3 6815744 0.000000 -1.944333 -0.607604 0 -2.430417 -1.093687 0
+ L3 6815744 0.000000 -0.486083 -2.187375 0 -0.607604 -2.916500 0
+ L3 6815744 0.000000 -0.364562 -1.336729 0 -0.243042 -1.822812 0
+ L3 6815744 0.000000 0.850646 -2.187375 0 1.093687 -2.916500 0
+ L3 6815744 0.000000 1.458250 -2.065854 0 2.187375 -2.430417 0
+ L3 6815744 0.000000 3.281062 -0.850646 0 2.673458 -0.972167 0
+ L3 6815744 0.000000 3.281062 -1.944333 0 2.673458 -1.701292 0
+ L3 6815744 0.000000 3.524104 -1.458250 0 2.916500 -1.336729 0
+ L3 6815744 0.000000 1.458250 -3.524104 0 1.336729 -3.038021 0
+ L3 6815744 0.000000 2.187375 -3.159542 0 1.822812 -2.794979 0
+ L3 6815744 0.000000 3.645625 0.607604 0 2.916500 0.729125 0
+ L3 6815744 0.000000 3.645625 1.215208 0 3.038021 1.093687 0
+ L3 6815744 0.000000 -1.215208 -3.402583 0 -1.093687 -2.916500 0
+ L3 6815744 0.000000 -2.673458 -1.701292 0 -2.308896 -1.458250 0
+ L3 6815744 0.000000 1.701292 3.888667 0 1.458250 3.281062 0
+ L3 6815744 0.000000 2.187375 3.524104 0 1.822812 3.159542 0
+ L3 11184640 0.000000 1.701292 -3.281062 0 1.458250 -2.551937 0
+ L3 14915328 0.000000 1.944333 2.916500 0 1.579771 2.673458 0
+ L3 14915328 0.000000 -2.187375 0.607604 0 -1.701292 0.364562 0
+ F4 16755200 0.000000 4 0
+ 1.872123 1.924126 0
+ 1.109406 1.698778 0
+ 1.022734 1.126741 0
+ 1.525433 1.334754 0
+ F4 16755200 0.000000 3 0
+ 2.114806 -1.733447 0
+ 1.872123 -1.196079 0
+ 1.490765 -1.525433 0
+ F4 16755200 0.000000 4 0
+ -1.594771 -2.010799 0
+ -1.109406 -1.889457 0
+ -0.762717 -1.074737 0
+ -1.300085 -1.213413 0
+ L3 16755200 0.000000 0.243042 2.673458 0 0.486083 2.308896 0
+ L3 16755200 0.000000 -1.458250 1.944333 0 -0.972167 1.944333 0
+ L3 16755200 0.000000 -2.187375 -1.701292 0 -1.822812 -1.215208 0
+ L3 16755200 0.000000 -1.336729 -2.673458 0 -0.972167 -2.187375 0
+ L3 16755200 0.000000 3.038021 1.579771 0 2.430417 1.215208 0
+ END$SEGS
+STRUCTURE 131 3 0 0 0 A 2 97.000000 186.500000 0 0.000000 "Lg Fall 10"" Fall-10b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.024728 2.869482 0
+ -2.595646 4.491946 0
+ -1.630213 4.907618 0
+ -0.544101 3.566739 0
+ 0.702917 4.733304 0
+ 2.204701 4.022638 0
+ 1.856073 -3.955594 0
+ 0.434741 -4.706486 0
+ -0.155246 -3.794688 0
+ -1.348629 -3.808097 0
+ -1.643622 -4.733304 0
+ -3.480627 -4.143317 0
+ -3.252677 -3.057205 0
+ -4.767871 -2.949934 0
+ -5.545581 -1.381106 0
+ -4.687418 -0.496125 0
+ -5.813757 0.000000 0
+ -5.518763 1.126339 0
+ -4.325381 1.555420 0
+ -5.183543 2.252677 0
+ -4.486286 3.513104 0
+ F4 6815744 0.000000 28 0
+ -4.183543 2.252677 0
+ -3.486286 3.513104 0
+ -2.024728 2.869482 0
+ -1.595646 4.491946 0
+ -0.630213 4.907618 0
+ 0.455899 3.566739 0
+ 1.702917 4.733304 0
+ 3.204701 4.022638 0
+ 2.641532 2.534262 0
+ 4.438310 2.038136 0
+ 4.706486 0.348629 0
+ 3.767871 -0.522943 0
+ 4.652851 -1.783369 0
+ 3.982411 -2.909708 0
+ 2.896299 -2.507444 0
+ 2.856073 -3.955594 0
+ 1.434741 -4.706486 0
+ 0.844754 -3.794688 0
+ -0.348629 -3.808097 0
+ -0.643622 -4.733304 0
+ -2.480627 -4.143317 0
+ -2.252677 -3.057205 0
+ -3.767871 -2.949934 0
+ -4.545581 -1.381106 0
+ -3.687418 -0.496125 0
+ -4.813757 0.000000 0
+ -4.518763 1.126339 0
+ -3.325381 1.555420 0
+ F4 12410368 0.000000 26 0
+ 0.670440 3.137657 0
+ 1.609055 4.076273 0
+ 2.507444 3.526512 0
+ 2.105180 1.957684 0
+ 3.901959 1.461558 0
+ 4.022638 0.683848 0
+ 2.896299 -0.093862 0
+ 3.875141 -1.568829 0
+ 3.446060 -2.078363 0
+ 2.373356 -2.051545 0
+ 2.319721 -3.285154 0
+ 1.394514 -3.794688 0
+ 0.630213 -2.896299 0
+ -0.522943 -3.057205 0
+ -0.791119 -3.674009 0
+ -1.769961 -3.419242 0
+ -1.783369 -2.346539 0
+ -2.601306 -2.319721 0
+ -3.137657 -1.247018 0
+ -2.185633 -0.348629 0
+ -3.084022 0.120679 0
+ -2.936526 0.764301 0
+ -1.501785 1.032477 0
+ -2.051545 2.011319 0
+ -1.153156 2.708576 0
+ -0.791119 3.499695 0
+ L3 12410368 0.000000 -0.850646 4.131708 0 -0.364562 3.767146 0
+ L3 12410368 0.000000 -3.402583 2.308896 0 -3.038021 1.944333 0
+ L3 12410368 0.000000 -2.551937 2.065854 0 -2.065854 1.701292 0
+ L3 12410368 0.000000 -4.131708 0.972167 0 -3.281062 0.972167 0
+ L3 12410368 0.000000 -2.794979 -0.364562 0 -3.402583 -0.243042 0
+ L3 12410368 0.000000 -3.767146 -1.822812 0 -3.159542 -1.944333 0
+ L3 12410368 0.000000 -1.822812 -3.645625 0 -2.065854 -4.010187 0
+ L3 12410368 0.000000 -0.121521 -3.281062 0 0.000000 -3.645625 0
+ L3 12410368 0.000000 1.579771 -3.888667 0 1.458250 -4.374750 0
+ L3 12410368 0.000000 3.645625 -2.308896 0 3.888667 -2.673458 0
+ L3 12410368 0.000000 -3.402583 3.038021 0 -3.159542 2.551937 0
+ L3 14915328 0.000000 -3.888667 2.308896 0 -3.524104 2.551937 0
+ L3 16755200 0.000000 4.253229 0.364562 0 3.767146 0.243042 0
+ L3 16755200 0.000000 -1.215208 3.888667 0 -1.336729 3.281062 0
+ L3 16755200 0.000000 -2.794979 2.551937 0 -1.944333 2.551937 0
+ L3 16755200 0.000000 -2.308896 1.336729 0 -3.038021 1.215208 0
+ L3 16755200 0.000000 -4.131708 0.243042 0 -3.402583 0.607604 0
+ L3 16755200 0.000000 -3.281062 -0.850646 0 -4.131708 -1.336729 0
+ L3 16755200 0.000000 -2.916500 -2.794979 0 -2.673458 -2.430417 0
+ L3 16755200 0.000000 -1.093687 -3.888667 0 -0.850646 -4.253229 0
+ L3 16755200 0.000000 0.607604 -3.281062 0 0.243042 -3.524104 0
+ L3 16755200 0.000000 2.308896 -3.645625 0 2.673458 -3.767146 0
+ L3 16755200 0.000000 4.253229 -1.701292 0 3.888667 -1.822812 0
+ F4 6815744 0.000000 5 0
+ -0.728048 2.305485 0
+ -0.658710 1.906792 0
+ 0.086672 1.577437 0
+ 0.294686 2.062802 0
+ -0.086672 2.426826 0
+ F4 6815744 0.000000 4 0
+ 2.374823 -0.086672 0
+ 1.473430 -0.294686 0
+ 1.282751 0.156010 0
+ 2.513498 0.225348 0
+ F4 6815744 0.000000 4 0
+ 0.572038 -2.305485 0
+ 0.121341 -1.958795 0
+ 0.242683 -1.230747 0
+ 0.520034 -1.334754 0
+ F4 6815744 0.000000 5 0
+ -1.820120 -0.208014 0
+ -1.577437 -0.034669 0
+ -0.745382 0.173345 0
+ -0.294686 -0.294686 0
+ -1.334754 -0.450696 0
+ L3 6815744 0.000000 1.701292 2.308896 0 1.093687 2.065854 0
+ L3 6815744 0.000000 1.093687 3.159542 0 0.850646 2.673458 0
+ L3 6815744 0.000000 -0.486083 3.038021 0 -0.243042 2.673458 0
+ L3 6815744 0.000000 -1.093687 1.336729 0 -0.486083 1.579771 0
+ L3 6815744 0.000000 -1.458250 0.729125 0 -0.972167 0.364562 0
+ L3 6815744 0.000000 -2.794979 0.243042 0 -2.187375 0.000000 0
+ L3 6815744 0.000000 -1.944333 -0.607604 0 -2.430417 -1.093687 0
+ L3 6815744 0.000000 -0.486083 -2.187375 0 -0.607604 -2.916500 0
+ L3 6815744 0.000000 -0.364562 -1.336729 0 -0.243042 -1.822812 0
+ L3 6815744 0.000000 0.850646 -2.187375 0 1.093687 -2.916500 0
+ L3 6815744 0.000000 1.458250 -2.065854 0 2.187375 -2.430417 0
+ L3 6815744 0.000000 3.281062 -0.850646 0 2.673458 -0.972167 0
+ L3 6815744 0.000000 3.281062 -1.944333 0 2.673458 -1.701292 0
+ L3 6815744 0.000000 3.524104 -1.458250 0 2.916500 -1.336729 0
+ L3 6815744 0.000000 1.458250 -3.524104 0 1.336729 -3.038021 0
+ L3 6815744 0.000000 2.187375 -3.159542 0 1.822812 -2.794979 0
+ L3 6815744 0.000000 3.645625 0.607604 0 2.916500 0.729125 0
+ L3 6815744 0.000000 3.645625 1.215208 0 3.038021 1.093687 0
+ L3 6815744 0.000000 -1.215208 -3.402583 0 -1.093687 -2.916500 0
+ L3 6815744 0.000000 -2.673458 -1.701292 0 -2.308896 -1.458250 0
+ L3 6815744 0.000000 1.701292 3.888667 0 1.458250 3.281062 0
+ L3 6815744 0.000000 2.187375 3.524104 0 1.822812 3.159542 0
+ L3 11184640 0.000000 1.701292 -3.281062 0 1.458250 -2.551937 0
+ L3 14915328 0.000000 1.944333 2.916500 0 1.579771 2.673458 0
+ L3 14915328 0.000000 -2.187375 0.607604 0 -1.701292 0.364562 0
+ F4 16755200 0.000000 4 0
+ 1.872123 1.924126 0
+ 1.109406 1.698778 0
+ 1.022734 1.126741 0
+ 1.525433 1.334754 0
+ F4 16755200 0.000000 3 0
+ 2.114806 -1.733447 0
+ 1.872123 -1.196079 0
+ 1.490765 -1.525433 0
+ F4 16755200 0.000000 4 0
+ -1.594771 -2.010799 0
+ -1.109406 -1.889457 0
+ -0.762717 -1.074737 0
+ -1.300085 -1.213413 0
+ L3 16755200 0.000000 0.243042 2.673458 0 0.486083 2.308896 0
+ L3 16755200 0.000000 -1.458250 1.944333 0 -0.972167 1.944333 0
+ L3 16755200 0.000000 -2.187375 -1.701292 0 -1.822812 -1.215208 0
+ L3 16755200 0.000000 -1.336729 -2.673458 0 -0.972167 -2.187375 0
+ L3 16755200 0.000000 3.038021 1.579771 0 2.430417 1.215208 0
+ END$SEGS
+STRUCTURE 132 3 0 0 0 A 2 65.000000 131.000000 0 0.000000 "Lg Fall 10"" Fall-10b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.024728 2.869482 0
+ -2.595646 4.491946 0
+ -1.630213 4.907618 0
+ -0.544101 3.566739 0
+ 0.702917 4.733304 0
+ 2.204701 4.022638 0
+ 1.856073 -3.955594 0
+ 0.434741 -4.706486 0
+ -0.155246 -3.794688 0
+ -1.348629 -3.808097 0
+ -1.643622 -4.733304 0
+ -3.480627 -4.143317 0
+ -3.252677 -3.057205 0
+ -4.767871 -2.949934 0
+ -5.545581 -1.381106 0
+ -4.687418 -0.496125 0
+ -5.813757 0.000000 0
+ -5.518763 1.126339 0
+ -4.325381 1.555420 0
+ -5.183543 2.252677 0
+ -4.486286 3.513104 0
+ F4 6815744 0.000000 28 0
+ -4.183543 2.252677 0
+ -3.486286 3.513104 0
+ -2.024728 2.869482 0
+ -1.595646 4.491946 0
+ -0.630213 4.907618 0
+ 0.455899 3.566739 0
+ 1.702917 4.733304 0
+ 3.204701 4.022638 0
+ 2.641532 2.534262 0
+ 4.438310 2.038136 0
+ 4.706486 0.348629 0
+ 3.767871 -0.522943 0
+ 4.652851 -1.783369 0
+ 3.982411 -2.909708 0
+ 2.896299 -2.507444 0
+ 2.856073 -3.955594 0
+ 1.434741 -4.706486 0
+ 0.844754 -3.794688 0
+ -0.348629 -3.808097 0
+ -0.643622 -4.733304 0
+ -2.480627 -4.143317 0
+ -2.252677 -3.057205 0
+ -3.767871 -2.949934 0
+ -4.545581 -1.381106 0
+ -3.687418 -0.496125 0
+ -4.813757 0.000000 0
+ -4.518763 1.126339 0
+ -3.325381 1.555420 0
+ F4 12410368 0.000000 26 0
+ 0.670440 3.137657 0
+ 1.609055 4.076273 0
+ 2.507444 3.526512 0
+ 2.105180 1.957684 0
+ 3.901959 1.461558 0
+ 4.022638 0.683848 0
+ 2.896299 -0.093862 0
+ 3.875141 -1.568829 0
+ 3.446060 -2.078363 0
+ 2.373356 -2.051545 0
+ 2.319721 -3.285154 0
+ 1.394514 -3.794688 0
+ 0.630213 -2.896299 0
+ -0.522943 -3.057205 0
+ -0.791119 -3.674009 0
+ -1.769961 -3.419242 0
+ -1.783369 -2.346539 0
+ -2.601306 -2.319721 0
+ -3.137657 -1.247018 0
+ -2.185633 -0.348629 0
+ -3.084022 0.120679 0
+ -2.936526 0.764301 0
+ -1.501785 1.032477 0
+ -2.051545 2.011319 0
+ -1.153156 2.708576 0
+ -0.791119 3.499695 0
+ L3 12410368 0.000000 -0.850646 4.131708 0 -0.364562 3.767146 0
+ L3 12410368 0.000000 -3.402583 2.308896 0 -3.038021 1.944333 0
+ L3 12410368 0.000000 -2.551937 2.065854 0 -2.065854 1.701292 0
+ L3 12410368 0.000000 -4.131708 0.972167 0 -3.281062 0.972167 0
+ L3 12410368 0.000000 -2.794979 -0.364562 0 -3.402583 -0.243042 0
+ L3 12410368 0.000000 -3.767146 -1.822812 0 -3.159542 -1.944333 0
+ L3 12410368 0.000000 -1.822812 -3.645625 0 -2.065854 -4.010187 0
+ L3 12410368 0.000000 -0.121521 -3.281062 0 0.000000 -3.645625 0
+ L3 12410368 0.000000 1.579771 -3.888667 0 1.458250 -4.374750 0
+ L3 12410368 0.000000 3.645625 -2.308896 0 3.888667 -2.673458 0
+ L3 12410368 0.000000 -3.402583 3.038021 0 -3.159542 2.551937 0
+ L3 14915328 0.000000 -3.888667 2.308896 0 -3.524104 2.551937 0
+ L3 16755200 0.000000 4.253229 0.364562 0 3.767146 0.243042 0
+ L3 16755200 0.000000 -1.215208 3.888667 0 -1.336729 3.281062 0
+ L3 16755200 0.000000 -2.794979 2.551937 0 -1.944333 2.551937 0
+ L3 16755200 0.000000 -2.308896 1.336729 0 -3.038021 1.215208 0
+ L3 16755200 0.000000 -4.131708 0.243042 0 -3.402583 0.607604 0
+ L3 16755200 0.000000 -3.281062 -0.850646 0 -4.131708 -1.336729 0
+ L3 16755200 0.000000 -2.916500 -2.794979 0 -2.673458 -2.430417 0
+ L3 16755200 0.000000 -1.093687 -3.888667 0 -0.850646 -4.253229 0
+ L3 16755200 0.000000 0.607604 -3.281062 0 0.243042 -3.524104 0
+ L3 16755200 0.000000 2.308896 -3.645625 0 2.673458 -3.767146 0
+ L3 16755200 0.000000 4.253229 -1.701292 0 3.888667 -1.822812 0
+ F4 6815744 0.000000 5 0
+ -0.728048 2.305485 0
+ -0.658710 1.906792 0
+ 0.086672 1.577437 0
+ 0.294686 2.062802 0
+ -0.086672 2.426826 0
+ F4 6815744 0.000000 4 0
+ 2.374823 -0.086672 0
+ 1.473430 -0.294686 0
+ 1.282751 0.156010 0
+ 2.513498 0.225348 0
+ F4 6815744 0.000000 4 0
+ 0.572038 -2.305485 0
+ 0.121341 -1.958795 0
+ 0.242683 -1.230747 0
+ 0.520034 -1.334754 0
+ F4 6815744 0.000000 5 0
+ -1.820120 -0.208014 0
+ -1.577437 -0.034669 0
+ -0.745382 0.173345 0
+ -0.294686 -0.294686 0
+ -1.334754 -0.450696 0
+ L3 6815744 0.000000 1.701292 2.308896 0 1.093687 2.065854 0
+ L3 6815744 0.000000 1.093687 3.159542 0 0.850646 2.673458 0
+ L3 6815744 0.000000 -0.486083 3.038021 0 -0.243042 2.673458 0
+ L3 6815744 0.000000 -1.093687 1.336729 0 -0.486083 1.579771 0
+ L3 6815744 0.000000 -1.458250 0.729125 0 -0.972167 0.364562 0
+ L3 6815744 0.000000 -2.794979 0.243042 0 -2.187375 0.000000 0
+ L3 6815744 0.000000 -1.944333 -0.607604 0 -2.430417 -1.093687 0
+ L3 6815744 0.000000 -0.486083 -2.187375 0 -0.607604 -2.916500 0
+ L3 6815744 0.000000 -0.364562 -1.336729 0 -0.243042 -1.822812 0
+ L3 6815744 0.000000 0.850646 -2.187375 0 1.093687 -2.916500 0
+ L3 6815744 0.000000 1.458250 -2.065854 0 2.187375 -2.430417 0
+ L3 6815744 0.000000 3.281062 -0.850646 0 2.673458 -0.972167 0
+ L3 6815744 0.000000 3.281062 -1.944333 0 2.673458 -1.701292 0
+ L3 6815744 0.000000 3.524104 -1.458250 0 2.916500 -1.336729 0
+ L3 6815744 0.000000 1.458250 -3.524104 0 1.336729 -3.038021 0
+ L3 6815744 0.000000 2.187375 -3.159542 0 1.822812 -2.794979 0
+ L3 6815744 0.000000 3.645625 0.607604 0 2.916500 0.729125 0
+ L3 6815744 0.000000 3.645625 1.215208 0 3.038021 1.093687 0
+ L3 6815744 0.000000 -1.215208 -3.402583 0 -1.093687 -2.916500 0
+ L3 6815744 0.000000 -2.673458 -1.701292 0 -2.308896 -1.458250 0
+ L3 6815744 0.000000 1.701292 3.888667 0 1.458250 3.281062 0
+ L3 6815744 0.000000 2.187375 3.524104 0 1.822812 3.159542 0
+ L3 11184640 0.000000 1.701292 -3.281062 0 1.458250 -2.551937 0
+ L3 14915328 0.000000 1.944333 2.916500 0 1.579771 2.673458 0
+ L3 14915328 0.000000 -2.187375 0.607604 0 -1.701292 0.364562 0
+ F4 16755200 0.000000 4 0
+ 1.872123 1.924126 0
+ 1.109406 1.698778 0
+ 1.022734 1.126741 0
+ 1.525433 1.334754 0
+ F4 16755200 0.000000 3 0
+ 2.114806 -1.733447 0
+ 1.872123 -1.196079 0
+ 1.490765 -1.525433 0
+ F4 16755200 0.000000 4 0
+ -1.594771 -2.010799 0
+ -1.109406 -1.889457 0
+ -0.762717 -1.074737 0
+ -1.300085 -1.213413 0
+ L3 16755200 0.000000 0.243042 2.673458 0 0.486083 2.308896 0
+ L3 16755200 0.000000 -1.458250 1.944333 0 -0.972167 1.944333 0
+ L3 16755200 0.000000 -2.187375 -1.701292 0 -1.822812 -1.215208 0
+ L3 16755200 0.000000 -1.336729 -2.673458 0 -0.972167 -2.187375 0
+ L3 16755200 0.000000 3.038021 1.579771 0 2.430417 1.215208 0
+ END$SEGS
+STRUCTURE 133 3 0 0 0 A 2 124.500000 191.500000 0 0.000000 "Lg Fall 12"" Fall-12a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.629673 -3.443378 0
+ -3.114776 -5.390335 0
+ -1.956256 -5.889142 0
+ -0.652921 -4.280087 0
+ 0.843500 -5.679965 0
+ 2.645642 -4.827165 0
+ 2.227287 4.746713 0
+ 0.521689 5.647783 0
+ -0.186295 4.553626 0
+ -1.618354 4.569717 0
+ -1.972346 5.679965 0
+ -4.176752 4.971980 0
+ -3.903213 3.668646 0
+ -5.721445 3.539921 0
+ -6.654697 1.657327 0
+ -5.624902 0.595350 0
+ -6.976508 0.000000 0
+ -6.622516 -1.351606 0
+ -5.190457 -1.866504 0
+ -6.220252 -2.703213 0
+ -5.383543 -4.215724 0
+ F4 6842368 0.000000 28 0
+ -5.020252 -2.703213 0
+ -4.183543 -4.215724 0
+ -2.429673 -3.443378 0
+ -1.914776 -5.390335 0
+ -0.756256 -5.889142 0
+ 0.547079 -4.280087 0
+ 2.043500 -5.679965 0
+ 3.845642 -4.827165 0
+ 3.169839 -3.041114 0
+ 5.325972 -2.445764 0
+ 5.647783 -0.418354 0
+ 4.521445 0.627531 0
+ 5.583421 2.140043 0
+ 4.778894 3.491650 0
+ 3.475559 3.008933 0
+ 3.427287 4.746713 0
+ 1.721689 5.647783 0
+ 1.013705 4.553626 0
+ -0.418354 4.569717 0
+ -0.772346 5.679965 0
+ -2.976752 4.971980 0
+ -2.703213 3.668646 0
+ -4.521445 3.539921 0
+ -5.454697 1.657327 0
+ -4.424902 0.595350 0
+ -5.776508 0.000000 0
+ -5.422516 -1.351606 0
+ -3.990457 -1.866504 0
+ F4 12434688 0.000000 26 0
+ 0.804528 -3.765189 0
+ 1.930866 -4.891528 0
+ 3.008933 -4.231815 0
+ 2.526217 -2.349220 0
+ 4.682350 -1.753870 0
+ 4.827165 -0.820618 0
+ 3.475559 0.112634 0
+ 4.650169 1.882594 0
+ 4.135272 2.494035 0
+ 2.848028 2.461854 0
+ 2.783665 3.942185 0
+ 1.673417 4.553626 0
+ 0.756256 3.475559 0
+ -0.627531 3.668646 0
+ -0.949343 4.408811 0
+ -2.123953 4.103091 0
+ -2.140043 2.815846 0
+ -3.121567 2.783665 0
+ -3.765189 1.496421 0
+ -2.622760 0.418354 0
+ -3.700827 -0.144815 0
+ -3.523831 -0.917161 0
+ -1.802142 -1.238972 0
+ -2.461854 -2.413583 0
+ -1.383787 -3.250291 0
+ -0.949343 -4.199634 0
+ L3 12434688 0.000000 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 12434688 0.000000 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 12434688 0.000000 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 12434688 0.000000 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 12434688 0.000000 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 12434688 0.000000 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 12434688 0.000000 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 12434688 0.000000 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 12434688 0.000000 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 12434688 0.000000 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 12434688 0.000000 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ L3 16755200 0.000000 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 16755200 0.000000 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 16755200 0.000000 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 16755200 0.000000 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 16755200 0.000000 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 16755200 0.000000 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 16755200 0.000000 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 16755200 0.000000 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 16755200 0.000000 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 16755200 0.000000 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 16755200 0.000000 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 16755200 0.000000 5.103875 -0.437475 0 4.520575 -0.291650 0
+ F4 6842368 0.000000 4 0
+ 2.246548 -2.308952 0
+ 1.331287 -2.038534 0
+ 1.227281 -1.352089 0
+ 1.830520 -1.601705 0
+ F4 6842368 0.000000 4 0
+ 2.849787 0.104007 0
+ 1.768116 0.353623 0
+ 1.539301 -0.187212 0
+ 3.016198 -0.270418 0
+ F4 6842368 0.000000 4 0
+ 0.686445 2.766582 0
+ 0.145610 2.350554 0
+ 0.291219 1.476897 0
+ 0.624041 1.601705 0
+ F4 6842368 0.000000 5 0
+ -2.184143 0.249616 0
+ -1.892924 0.041603 0
+ -0.894459 -0.208014 0
+ -0.353623 0.353623 0
+ -1.601705 0.540836 0
+ L3 6842368 0.000000 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 6842368 0.000000 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 6842368 0.000000 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 6842368 0.000000 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 6842368 0.000000 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 6842368 0.000000 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 6842368 0.000000 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 6842368 0.000000 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 6842368 0.000000 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 6842368 0.000000 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 6842368 0.000000 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 6842368 0.000000 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 6842368 0.000000 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 6842368 0.000000 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 6842368 0.000000 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 6842368 0.000000 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 6842368 0.000000 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 6842368 0.000000 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 6842368 0.000000 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 6842368 0.000000 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 6842368 0.000000 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 6842368 0.000000 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 6842368 0.000000 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 6842368 0.000000 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 6842368 0.000000 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 6842368 0.000000 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 6842368 0.000000 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 6842368 0.000000 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 6842368 0.000000 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 6842368 0.000000 2.624850 -4.228925 0 2.187375 -3.791450 0
+ F4 16755200 0.000000 5 0
+ -0.873657 -2.766582 0
+ -0.790452 -2.288150 0
+ 0.104007 -1.892924 0
+ 0.353623 -2.475363 0
+ -0.104007 -2.912191 0
+ F4 16755200 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 16755200 0.000000 4 0
+ -1.913726 2.412958 0
+ -1.331287 2.267349 0
+ -0.915260 1.289685 0
+ -1.560102 1.456096 0
+ END$SEGS
+STRUCTURE 134 3 0 0 0 A 2 83.000000 189.500000 0 0.000000 "Lg Fall 12"" Fall-12a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.629673 -3.443378 0
+ -3.114776 -5.390335 0
+ -1.956256 -5.889142 0
+ -0.652921 -4.280087 0
+ 0.843500 -5.679965 0
+ 2.645642 -4.827165 0
+ 2.227287 4.746713 0
+ 0.521689 5.647783 0
+ -0.186295 4.553626 0
+ -1.618354 4.569717 0
+ -1.972346 5.679965 0
+ -4.176752 4.971980 0
+ -3.903213 3.668646 0
+ -5.721445 3.539921 0
+ -6.654697 1.657327 0
+ -5.624902 0.595350 0
+ -6.976508 0.000000 0
+ -6.622516 -1.351606 0
+ -5.190457 -1.866504 0
+ -6.220252 -2.703213 0
+ -5.383543 -4.215724 0
+ F4 6842368 0.000000 28 0
+ -5.020252 -2.703213 0
+ -4.183543 -4.215724 0
+ -2.429673 -3.443378 0
+ -1.914776 -5.390335 0
+ -0.756256 -5.889142 0
+ 0.547079 -4.280087 0
+ 2.043500 -5.679965 0
+ 3.845642 -4.827165 0
+ 3.169839 -3.041114 0
+ 5.325972 -2.445764 0
+ 5.647783 -0.418354 0
+ 4.521445 0.627531 0
+ 5.583421 2.140043 0
+ 4.778894 3.491650 0
+ 3.475559 3.008933 0
+ 3.427287 4.746713 0
+ 1.721689 5.647783 0
+ 1.013705 4.553626 0
+ -0.418354 4.569717 0
+ -0.772346 5.679965 0
+ -2.976752 4.971980 0
+ -2.703213 3.668646 0
+ -4.521445 3.539921 0
+ -5.454697 1.657327 0
+ -4.424902 0.595350 0
+ -5.776508 0.000000 0
+ -5.422516 -1.351606 0
+ -3.990457 -1.866504 0
+ F4 12434688 0.000000 26 0
+ 0.804528 -3.765189 0
+ 1.930866 -4.891528 0
+ 3.008933 -4.231815 0
+ 2.526217 -2.349220 0
+ 4.682350 -1.753870 0
+ 4.827165 -0.820618 0
+ 3.475559 0.112634 0
+ 4.650169 1.882594 0
+ 4.135272 2.494035 0
+ 2.848028 2.461854 0
+ 2.783665 3.942185 0
+ 1.673417 4.553626 0
+ 0.756256 3.475559 0
+ -0.627531 3.668646 0
+ -0.949343 4.408811 0
+ -2.123953 4.103091 0
+ -2.140043 2.815846 0
+ -3.121567 2.783665 0
+ -3.765189 1.496421 0
+ -2.622760 0.418354 0
+ -3.700827 -0.144815 0
+ -3.523831 -0.917161 0
+ -1.802142 -1.238972 0
+ -2.461854 -2.413583 0
+ -1.383787 -3.250291 0
+ -0.949343 -4.199634 0
+ L3 12434688 0.000000 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 12434688 0.000000 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 12434688 0.000000 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 12434688 0.000000 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 12434688 0.000000 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 12434688 0.000000 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 12434688 0.000000 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 12434688 0.000000 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 12434688 0.000000 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 12434688 0.000000 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 12434688 0.000000 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ L3 16755200 0.000000 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 16755200 0.000000 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 16755200 0.000000 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 16755200 0.000000 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 16755200 0.000000 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 16755200 0.000000 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 16755200 0.000000 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 16755200 0.000000 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 16755200 0.000000 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 16755200 0.000000 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 16755200 0.000000 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 16755200 0.000000 5.103875 -0.437475 0 4.520575 -0.291650 0
+ F4 6842368 0.000000 4 0
+ 2.246548 -2.308952 0
+ 1.331287 -2.038534 0
+ 1.227281 -1.352089 0
+ 1.830520 -1.601705 0
+ F4 6842368 0.000000 4 0
+ 2.849787 0.104007 0
+ 1.768116 0.353623 0
+ 1.539301 -0.187212 0
+ 3.016198 -0.270418 0
+ F4 6842368 0.000000 4 0
+ 0.686445 2.766582 0
+ 0.145610 2.350554 0
+ 0.291219 1.476897 0
+ 0.624041 1.601705 0
+ F4 6842368 0.000000 5 0
+ -2.184143 0.249616 0
+ -1.892924 0.041603 0
+ -0.894459 -0.208014 0
+ -0.353623 0.353623 0
+ -1.601705 0.540836 0
+ L3 6842368 0.000000 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 6842368 0.000000 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 6842368 0.000000 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 6842368 0.000000 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 6842368 0.000000 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 6842368 0.000000 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 6842368 0.000000 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 6842368 0.000000 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 6842368 0.000000 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 6842368 0.000000 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 6842368 0.000000 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 6842368 0.000000 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 6842368 0.000000 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 6842368 0.000000 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 6842368 0.000000 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 6842368 0.000000 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 6842368 0.000000 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 6842368 0.000000 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 6842368 0.000000 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 6842368 0.000000 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 6842368 0.000000 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 6842368 0.000000 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 6842368 0.000000 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 6842368 0.000000 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 6842368 0.000000 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 6842368 0.000000 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 6842368 0.000000 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 6842368 0.000000 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 6842368 0.000000 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 6842368 0.000000 2.624850 -4.228925 0 2.187375 -3.791450 0
+ F4 16755200 0.000000 5 0
+ -0.873657 -2.766582 0
+ -0.790452 -2.288150 0
+ 0.104007 -1.892924 0
+ 0.353623 -2.475363 0
+ -0.104007 -2.912191 0
+ F4 16755200 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 16755200 0.000000 4 0
+ -1.913726 2.412958 0
+ -1.331287 2.267349 0
+ -0.915260 1.289685 0
+ -1.560102 1.456096 0
+ END$SEGS
+STRUCTURE 135 3 0 0 0 A 2 67.500000 147.000000 0 0.000000 "Lg Fall 12"" Fall-12a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.629673 -3.443378 0
+ -3.114776 -5.390335 0
+ -1.956256 -5.889142 0
+ -0.652921 -4.280087 0
+ 0.843500 -5.679965 0
+ 2.645642 -4.827165 0
+ 2.227287 4.746713 0
+ 0.521689 5.647783 0
+ -0.186295 4.553626 0
+ -1.618354 4.569717 0
+ -1.972346 5.679965 0
+ -4.176752 4.971980 0
+ -3.903213 3.668646 0
+ -5.721445 3.539921 0
+ -6.654697 1.657327 0
+ -5.624902 0.595350 0
+ -6.976508 0.000000 0
+ -6.622516 -1.351606 0
+ -5.190457 -1.866504 0
+ -6.220252 -2.703213 0
+ -5.383543 -4.215724 0
+ F4 6842368 0.000000 28 0
+ -5.020252 -2.703213 0
+ -4.183543 -4.215724 0
+ -2.429673 -3.443378 0
+ -1.914776 -5.390335 0
+ -0.756256 -5.889142 0
+ 0.547079 -4.280087 0
+ 2.043500 -5.679965 0
+ 3.845642 -4.827165 0
+ 3.169839 -3.041114 0
+ 5.325972 -2.445764 0
+ 5.647783 -0.418354 0
+ 4.521445 0.627531 0
+ 5.583421 2.140043 0
+ 4.778894 3.491650 0
+ 3.475559 3.008933 0
+ 3.427287 4.746713 0
+ 1.721689 5.647783 0
+ 1.013705 4.553626 0
+ -0.418354 4.569717 0
+ -0.772346 5.679965 0
+ -2.976752 4.971980 0
+ -2.703213 3.668646 0
+ -4.521445 3.539921 0
+ -5.454697 1.657327 0
+ -4.424902 0.595350 0
+ -5.776508 0.000000 0
+ -5.422516 -1.351606 0
+ -3.990457 -1.866504 0
+ F4 12434688 0.000000 26 0
+ 0.804528 -3.765189 0
+ 1.930866 -4.891528 0
+ 3.008933 -4.231815 0
+ 2.526217 -2.349220 0
+ 4.682350 -1.753870 0
+ 4.827165 -0.820618 0
+ 3.475559 0.112634 0
+ 4.650169 1.882594 0
+ 4.135272 2.494035 0
+ 2.848028 2.461854 0
+ 2.783665 3.942185 0
+ 1.673417 4.553626 0
+ 0.756256 3.475559 0
+ -0.627531 3.668646 0
+ -0.949343 4.408811 0
+ -2.123953 4.103091 0
+ -2.140043 2.815846 0
+ -3.121567 2.783665 0
+ -3.765189 1.496421 0
+ -2.622760 0.418354 0
+ -3.700827 -0.144815 0
+ -3.523831 -0.917161 0
+ -1.802142 -1.238972 0
+ -2.461854 -2.413583 0
+ -1.383787 -3.250291 0
+ -0.949343 -4.199634 0
+ L3 12434688 0.000000 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 12434688 0.000000 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 12434688 0.000000 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 12434688 0.000000 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 12434688 0.000000 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 12434688 0.000000 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 12434688 0.000000 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 12434688 0.000000 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 12434688 0.000000 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 12434688 0.000000 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 12434688 0.000000 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ L3 16755200 0.000000 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 16755200 0.000000 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 16755200 0.000000 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 16755200 0.000000 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 16755200 0.000000 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 16755200 0.000000 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 16755200 0.000000 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 16755200 0.000000 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 16755200 0.000000 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 16755200 0.000000 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 16755200 0.000000 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 16755200 0.000000 5.103875 -0.437475 0 4.520575 -0.291650 0
+ F4 6842368 0.000000 4 0
+ 2.246548 -2.308952 0
+ 1.331287 -2.038534 0
+ 1.227281 -1.352089 0
+ 1.830520 -1.601705 0
+ F4 6842368 0.000000 4 0
+ 2.849787 0.104007 0
+ 1.768116 0.353623 0
+ 1.539301 -0.187212 0
+ 3.016198 -0.270418 0
+ F4 6842368 0.000000 4 0
+ 0.686445 2.766582 0
+ 0.145610 2.350554 0
+ 0.291219 1.476897 0
+ 0.624041 1.601705 0
+ F4 6842368 0.000000 5 0
+ -2.184143 0.249616 0
+ -1.892924 0.041603 0
+ -0.894459 -0.208014 0
+ -0.353623 0.353623 0
+ -1.601705 0.540836 0
+ L3 6842368 0.000000 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 6842368 0.000000 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 6842368 0.000000 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 6842368 0.000000 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 6842368 0.000000 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 6842368 0.000000 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 6842368 0.000000 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 6842368 0.000000 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 6842368 0.000000 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 6842368 0.000000 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 6842368 0.000000 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 6842368 0.000000 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 6842368 0.000000 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 6842368 0.000000 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 6842368 0.000000 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 6842368 0.000000 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 6842368 0.000000 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 6842368 0.000000 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 6842368 0.000000 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 6842368 0.000000 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 6842368 0.000000 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 6842368 0.000000 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 6842368 0.000000 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 6842368 0.000000 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 6842368 0.000000 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 6842368 0.000000 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 6842368 0.000000 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 6842368 0.000000 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 6842368 0.000000 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 6842368 0.000000 2.624850 -4.228925 0 2.187375 -3.791450 0
+ F4 16755200 0.000000 5 0
+ -0.873657 -2.766582 0
+ -0.790452 -2.288150 0
+ 0.104007 -1.892924 0
+ 0.353623 -2.475363 0
+ -0.104007 -2.912191 0
+ F4 16755200 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 16755200 0.000000 4 0
+ -1.913726 2.412958 0
+ -1.331287 2.267349 0
+ -0.915260 1.289685 0
+ -1.560102 1.456096 0
+ END$SEGS
+STRUCTURE 136 3 0 0 0 A 2 106.500000 198.500000 0 0.000000 "Lg Fall 12"" Fall-12b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.629673 3.443378 0
+ -3.114776 5.390335 0
+ -1.956256 5.889142 0
+ -0.652921 4.280087 0
+ 0.843500 5.679965 0
+ 2.645642 4.827165 0
+ 2.227287 -4.746713 0
+ 0.521689 -5.647783 0
+ -0.186295 -4.553626 0
+ -1.618354 -4.569717 0
+ -1.972346 -5.679965 0
+ -4.176752 -4.971980 0
+ -3.903213 -3.668646 0
+ -5.721445 -3.539921 0
+ -6.654697 -1.657327 0
+ -5.624902 -0.595350 0
+ -6.976508 0.000000 0
+ -6.622516 1.351606 0
+ -5.190457 1.866504 0
+ -6.220252 2.703213 0
+ -5.383543 4.215724 0
+ F4 6815744 0.000000 28 0
+ -5.020252 2.703213 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.914776 5.390335 0
+ -0.756256 5.889142 0
+ 0.547079 4.280087 0
+ 2.043500 5.679965 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 5.325972 2.445764 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 4.778894 -3.491650 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 1.721689 -5.647783 0
+ 1.013705 -4.553626 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -2.976752 -4.971980 0
+ -2.703213 -3.668646 0
+ -4.521445 -3.539921 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -5.422516 1.351606 0
+ -3.990457 1.866504 0
+ F4 12410368 0.000000 26 0
+ 0.804528 3.765189 0
+ 1.930866 4.891528 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.682350 1.753870 0
+ 4.827165 0.820618 0
+ 3.475559 -0.112634 0
+ 4.650169 -1.882594 0
+ 4.135272 -2.494035 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 1.673417 -4.553626 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.123953 -4.103091 0
+ -2.140043 -2.815846 0
+ -3.121567 -2.783665 0
+ -3.765189 -1.496421 0
+ -2.622760 -0.418354 0
+ -3.700827 0.144815 0
+ -3.523831 0.917161 0
+ -1.802142 1.238972 0
+ -2.461854 2.413583 0
+ -1.383787 3.250291 0
+ -0.949343 4.199634 0
+ L3 12410368 0.000000 -1.020775 4.958050 0 -0.437475 4.520575 0
+ L3 12410368 0.000000 -4.083100 2.770675 0 -3.645625 2.333200 0
+ L3 12410368 0.000000 -3.062325 2.479025 0 -2.479025 2.041550 0
+ L3 12410368 0.000000 -4.958050 1.166600 0 -3.937275 1.166600 0
+ L3 12410368 0.000000 -3.353975 -0.437475 0 -4.083100 -0.291650 0
+ L3 12410368 0.000000 -4.520575 -2.187375 0 -3.791450 -2.333200 0
+ L3 12410368 0.000000 -2.187375 -4.374750 0 -2.479025 -4.812225 0
+ L3 12410368 0.000000 -0.145825 -3.937275 0 0.000000 -4.374750 0
+ L3 12410368 0.000000 1.895725 -4.666400 0 1.749900 -5.249700 0
+ L3 12410368 0.000000 4.374750 -2.770675 0 4.666400 -3.208150 0
+ L3 12410368 0.000000 -4.083100 3.645625 0 -3.791450 3.062325 0
+ L3 14915328 0.000000 -4.666400 2.770675 0 -4.228925 3.062325 0
+ L3 16755200 0.000000 5.103875 0.437475 0 4.520575 0.291650 0
+ L3 16755200 0.000000 -1.458250 4.666400 0 -1.604075 3.937275 0
+ L3 16755200 0.000000 -3.353975 3.062325 0 -2.333200 3.062325 0
+ L3 16755200 0.000000 -2.770675 1.604075 0 -3.645625 1.458250 0
+ L3 16755200 0.000000 -4.958050 0.291650 0 -4.083100 0.729125 0
+ L3 16755200 0.000000 -3.937275 -1.020775 0 -4.958050 -1.604075 0
+ L3 16755200 0.000000 -3.499800 -3.353975 0 -3.208150 -2.916500 0
+ L3 16755200 0.000000 -1.312425 -4.666400 0 -1.020775 -5.103875 0
+ L3 16755200 0.000000 0.729125 -3.937275 0 0.291650 -4.228925 0
+ L3 16755200 0.000000 2.770675 -4.374750 0 3.208150 -4.520575 0
+ L3 16755200 0.000000 5.103875 -2.041550 0 4.666400 -2.187375 0
+ F4 6815744 0.000000 5 0
+ -0.873657 2.766582 0
+ -0.790452 2.288150 0
+ 0.104007 1.892924 0
+ 0.353623 2.475363 0
+ -0.104007 2.912191 0
+ F4 6815744 0.000000 4 0
+ 2.849787 -0.104007 0
+ 1.768116 -0.353623 0
+ 1.539301 0.187212 0
+ 3.016198 0.270418 0
+ F4 6815744 0.000000 4 0
+ 0.686445 -2.766582 0
+ 0.145610 -2.350554 0
+ 0.291219 -1.476897 0
+ 0.624041 -1.601705 0
+ F4 6815744 0.000000 5 0
+ -2.184143 -0.249616 0
+ -1.892924 -0.041603 0
+ -0.894459 0.208014 0
+ -0.353623 -0.353623 0
+ -1.601705 -0.540836 0
+ L3 6815744 0.000000 2.041550 2.770675 0 1.312425 2.479025 0
+ L3 6815744 0.000000 1.312425 3.791450 0 1.020775 3.208150 0
+ L3 6815744 0.000000 -0.583300 3.645625 0 -0.291650 3.208150 0
+ L3 6815744 0.000000 -1.312425 1.604075 0 -0.583300 1.895725 0
+ L3 6815744 0.000000 -1.749900 0.874950 0 -1.166600 0.437475 0
+ L3 6815744 0.000000 -3.353975 0.291650 0 -2.624850 0.000000 0
+ L3 6815744 0.000000 -2.333200 -0.729125 0 -2.916500 -1.312425 0
+ L3 6815744 0.000000 -0.583300 -2.624850 0 -0.729125 -3.499800 0
+ L3 6815744 0.000000 -0.437475 -1.604075 0 -0.291650 -2.187375 0
+ L3 6815744 0.000000 1.020775 -2.624850 0 1.312425 -3.499800 0
+ L3 6815744 0.000000 1.749900 -2.479025 0 2.624850 -2.916500 0
+ L3 6815744 0.000000 3.937275 -1.020775 0 3.208150 -1.166600 0
+ L3 6815744 0.000000 3.937275 -2.333200 0 3.208150 -2.041550 0
+ L3 6815744 0.000000 4.228925 -1.749900 0 3.499800 -1.604075 0
+ L3 6815744 0.000000 1.749900 -4.228925 0 1.604075 -3.645625 0
+ L3 6815744 0.000000 2.624850 -3.791450 0 2.187375 -3.353975 0
+ L3 6815744 0.000000 4.374750 0.729125 0 3.499800 0.874950 0
+ L3 6815744 0.000000 4.374750 1.458250 0 3.645625 1.312425 0
+ L3 6815744 0.000000 -1.458250 -4.083100 0 -1.312425 -3.499800 0
+ L3 6815744 0.000000 -3.208150 -2.041550 0 -2.770675 -1.749900 0
+ L3 6815744 0.000000 2.041550 4.666400 0 1.749900 3.937275 0
+ L3 6815744 0.000000 2.624850 4.228925 0 2.187375 3.791450 0
+ L3 11184640 0.000000 2.041550 -3.937275 0 1.749900 -3.062325 0
+ L3 14915328 0.000000 2.333200 3.499800 0 1.895725 3.208150 0
+ L3 14915328 0.000000 -2.624850 0.729125 0 -2.041550 0.437475 0
+ F4 16755200 0.000000 4 0
+ 2.246548 2.308952 0
+ 1.331287 2.038534 0
+ 1.227281 1.352089 0
+ 1.830520 1.601705 0
+ F4 16755200 0.000000 3 0
+ 2.537767 -2.080137 0
+ 2.246548 -1.435294 0
+ 1.788917 -1.830520 0
+ F4 16755200 0.000000 4 0
+ -1.913726 -2.412958 0
+ -1.331287 -2.267349 0
+ -0.915260 -1.289685 0
+ -1.560102 -1.456096 0
+ L3 16755200 0.000000 0.291650 3.208150 0 0.583300 2.770675 0
+ L3 16755200 0.000000 -1.749900 2.333200 0 -1.166600 2.333200 0
+ L3 16755200 0.000000 -2.624850 -2.041550 0 -2.187375 -1.458250 0
+ L3 16755200 0.000000 -1.604075 -3.208150 0 -1.166600 -2.624850 0
+ L3 16755200 0.000000 3.645625 1.895725 0 2.916500 1.458250 0
+ END$SEGS
+STRUCTURE 137 3 0 0 0 A 2 123.000000 208.500000 0 0.000000 "Lg Fall 12"" Fall-12b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.629673 3.443378 0
+ -3.114776 5.390335 0
+ -1.956256 5.889142 0
+ -0.652921 4.280087 0
+ 0.843500 5.679965 0
+ 2.645642 4.827165 0
+ 2.227287 -4.746713 0
+ 0.521689 -5.647783 0
+ -0.186295 -4.553626 0
+ -1.618354 -4.569717 0
+ -1.972346 -5.679965 0
+ -4.176752 -4.971980 0
+ -3.903213 -3.668646 0
+ -5.721445 -3.539921 0
+ -6.654697 -1.657327 0
+ -5.624902 -0.595350 0
+ -6.976508 0.000000 0
+ -6.622516 1.351606 0
+ -5.190457 1.866504 0
+ -6.220252 2.703213 0
+ -5.383543 4.215724 0
+ F4 6815744 0.000000 28 0
+ -5.020252 2.703213 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.914776 5.390335 0
+ -0.756256 5.889142 0
+ 0.547079 4.280087 0
+ 2.043500 5.679965 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 5.325972 2.445764 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 4.778894 -3.491650 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 1.721689 -5.647783 0
+ 1.013705 -4.553626 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -2.976752 -4.971980 0
+ -2.703213 -3.668646 0
+ -4.521445 -3.539921 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -5.422516 1.351606 0
+ -3.990457 1.866504 0
+ F4 12410368 0.000000 26 0
+ 0.804528 3.765189 0
+ 1.930866 4.891528 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.682350 1.753870 0
+ 4.827165 0.820618 0
+ 3.475559 -0.112634 0
+ 4.650169 -1.882594 0
+ 4.135272 -2.494035 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 1.673417 -4.553626 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.123953 -4.103091 0
+ -2.140043 -2.815846 0
+ -3.121567 -2.783665 0
+ -3.765189 -1.496421 0
+ -2.622760 -0.418354 0
+ -3.700827 0.144815 0
+ -3.523831 0.917161 0
+ -1.802142 1.238972 0
+ -2.461854 2.413583 0
+ -1.383787 3.250291 0
+ -0.949343 4.199634 0
+ L3 12410368 0.000000 -1.020775 4.958050 0 -0.437475 4.520575 0
+ L3 12410368 0.000000 -4.083100 2.770675 0 -3.645625 2.333200 0
+ L3 12410368 0.000000 -3.062325 2.479025 0 -2.479025 2.041550 0
+ L3 12410368 0.000000 -4.958050 1.166600 0 -3.937275 1.166600 0
+ L3 12410368 0.000000 -3.353975 -0.437475 0 -4.083100 -0.291650 0
+ L3 12410368 0.000000 -4.520575 -2.187375 0 -3.791450 -2.333200 0
+ L3 12410368 0.000000 -2.187375 -4.374750 0 -2.479025 -4.812225 0
+ L3 12410368 0.000000 -0.145825 -3.937275 0 0.000000 -4.374750 0
+ L3 12410368 0.000000 1.895725 -4.666400 0 1.749900 -5.249700 0
+ L3 12410368 0.000000 4.374750 -2.770675 0 4.666400 -3.208150 0
+ L3 12410368 0.000000 -4.083100 3.645625 0 -3.791450 3.062325 0
+ L3 14915328 0.000000 -4.666400 2.770675 0 -4.228925 3.062325 0
+ L3 16755200 0.000000 5.103875 0.437475 0 4.520575 0.291650 0
+ L3 16755200 0.000000 -1.458250 4.666400 0 -1.604075 3.937275 0
+ L3 16755200 0.000000 -3.353975 3.062325 0 -2.333200 3.062325 0
+ L3 16755200 0.000000 -2.770675 1.604075 0 -3.645625 1.458250 0
+ L3 16755200 0.000000 -4.958050 0.291650 0 -4.083100 0.729125 0
+ L3 16755200 0.000000 -3.937275 -1.020775 0 -4.958050 -1.604075 0
+ L3 16755200 0.000000 -3.499800 -3.353975 0 -3.208150 -2.916500 0
+ L3 16755200 0.000000 -1.312425 -4.666400 0 -1.020775 -5.103875 0
+ L3 16755200 0.000000 0.729125 -3.937275 0 0.291650 -4.228925 0
+ L3 16755200 0.000000 2.770675 -4.374750 0 3.208150 -4.520575 0
+ L3 16755200 0.000000 5.103875 -2.041550 0 4.666400 -2.187375 0
+ F4 6815744 0.000000 5 0
+ -0.873657 2.766582 0
+ -0.790452 2.288150 0
+ 0.104007 1.892924 0
+ 0.353623 2.475363 0
+ -0.104007 2.912191 0
+ F4 6815744 0.000000 4 0
+ 2.849787 -0.104007 0
+ 1.768116 -0.353623 0
+ 1.539301 0.187212 0
+ 3.016198 0.270418 0
+ F4 6815744 0.000000 4 0
+ 0.686445 -2.766582 0
+ 0.145610 -2.350554 0
+ 0.291219 -1.476897 0
+ 0.624041 -1.601705 0
+ F4 6815744 0.000000 5 0
+ -2.184143 -0.249616 0
+ -1.892924 -0.041603 0
+ -0.894459 0.208014 0
+ -0.353623 -0.353623 0
+ -1.601705 -0.540836 0
+ L3 6815744 0.000000 2.041550 2.770675 0 1.312425 2.479025 0
+ L3 6815744 0.000000 1.312425 3.791450 0 1.020775 3.208150 0
+ L3 6815744 0.000000 -0.583300 3.645625 0 -0.291650 3.208150 0
+ L3 6815744 0.000000 -1.312425 1.604075 0 -0.583300 1.895725 0
+ L3 6815744 0.000000 -1.749900 0.874950 0 -1.166600 0.437475 0
+ L3 6815744 0.000000 -3.353975 0.291650 0 -2.624850 0.000000 0
+ L3 6815744 0.000000 -2.333200 -0.729125 0 -2.916500 -1.312425 0
+ L3 6815744 0.000000 -0.583300 -2.624850 0 -0.729125 -3.499800 0
+ L3 6815744 0.000000 -0.437475 -1.604075 0 -0.291650 -2.187375 0
+ L3 6815744 0.000000 1.020775 -2.624850 0 1.312425 -3.499800 0
+ L3 6815744 0.000000 1.749900 -2.479025 0 2.624850 -2.916500 0
+ L3 6815744 0.000000 3.937275 -1.020775 0 3.208150 -1.166600 0
+ L3 6815744 0.000000 3.937275 -2.333200 0 3.208150 -2.041550 0
+ L3 6815744 0.000000 4.228925 -1.749900 0 3.499800 -1.604075 0
+ L3 6815744 0.000000 1.749900 -4.228925 0 1.604075 -3.645625 0
+ L3 6815744 0.000000 2.624850 -3.791450 0 2.187375 -3.353975 0
+ L3 6815744 0.000000 4.374750 0.729125 0 3.499800 0.874950 0
+ L3 6815744 0.000000 4.374750 1.458250 0 3.645625 1.312425 0
+ L3 6815744 0.000000 -1.458250 -4.083100 0 -1.312425 -3.499800 0
+ L3 6815744 0.000000 -3.208150 -2.041550 0 -2.770675 -1.749900 0
+ L3 6815744 0.000000 2.041550 4.666400 0 1.749900 3.937275 0
+ L3 6815744 0.000000 2.624850 4.228925 0 2.187375 3.791450 0
+ L3 11184640 0.000000 2.041550 -3.937275 0 1.749900 -3.062325 0
+ L3 14915328 0.000000 2.333200 3.499800 0 1.895725 3.208150 0
+ L3 14915328 0.000000 -2.624850 0.729125 0 -2.041550 0.437475 0
+ F4 16755200 0.000000 4 0
+ 2.246548 2.308952 0
+ 1.331287 2.038534 0
+ 1.227281 1.352089 0
+ 1.830520 1.601705 0
+ F4 16755200 0.000000 3 0
+ 2.537767 -2.080137 0
+ 2.246548 -1.435294 0
+ 1.788917 -1.830520 0
+ F4 16755200 0.000000 4 0
+ -1.913726 -2.412958 0
+ -1.331287 -2.267349 0
+ -0.915260 -1.289685 0
+ -1.560102 -1.456096 0
+ L3 16755200 0.000000 0.291650 3.208150 0 0.583300 2.770675 0
+ L3 16755200 0.000000 -1.749900 2.333200 0 -1.166600 2.333200 0
+ L3 16755200 0.000000 -2.624850 -2.041550 0 -2.187375 -1.458250 0
+ L3 16755200 0.000000 -1.604075 -3.208150 0 -1.166600 -2.624850 0
+ L3 16755200 0.000000 3.645625 1.895725 0 2.916500 1.458250 0
+ END$SEGS
+STRUCTURE 138 3 0 0 0 A 2 31.000000 176.500000 0 0.000000 "Lg Fall 12"" Fall-12b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.629673 3.443378 0
+ -3.114776 5.390335 0
+ -1.956256 5.889142 0
+ -0.652921 4.280087 0
+ 0.843500 5.679965 0
+ 2.645642 4.827165 0
+ 2.227287 -4.746713 0
+ 0.521689 -5.647783 0
+ -0.186295 -4.553626 0
+ -1.618354 -4.569717 0
+ -1.972346 -5.679965 0
+ -4.176752 -4.971980 0
+ -3.903213 -3.668646 0
+ -5.721445 -3.539921 0
+ -6.654697 -1.657327 0
+ -5.624902 -0.595350 0
+ -6.976508 0.000000 0
+ -6.622516 1.351606 0
+ -5.190457 1.866504 0
+ -6.220252 2.703213 0
+ -5.383543 4.215724 0
+ F4 6815744 0.000000 28 0
+ -5.020252 2.703213 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.914776 5.390335 0
+ -0.756256 5.889142 0
+ 0.547079 4.280087 0
+ 2.043500 5.679965 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 5.325972 2.445764 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 4.778894 -3.491650 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 1.721689 -5.647783 0
+ 1.013705 -4.553626 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -2.976752 -4.971980 0
+ -2.703213 -3.668646 0
+ -4.521445 -3.539921 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -5.422516 1.351606 0
+ -3.990457 1.866504 0
+ F4 12410368 0.000000 26 0
+ 0.804528 3.765189 0
+ 1.930866 4.891528 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.682350 1.753870 0
+ 4.827165 0.820618 0
+ 3.475559 -0.112634 0
+ 4.650169 -1.882594 0
+ 4.135272 -2.494035 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 1.673417 -4.553626 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.123953 -4.103091 0
+ -2.140043 -2.815846 0
+ -3.121567 -2.783665 0
+ -3.765189 -1.496421 0
+ -2.622760 -0.418354 0
+ -3.700827 0.144815 0
+ -3.523831 0.917161 0
+ -1.802142 1.238972 0
+ -2.461854 2.413583 0
+ -1.383787 3.250291 0
+ -0.949343 4.199634 0
+ L3 12410368 0.000000 -1.020775 4.958050 0 -0.437475 4.520575 0
+ L3 12410368 0.000000 -4.083100 2.770675 0 -3.645625 2.333200 0
+ L3 12410368 0.000000 -3.062325 2.479025 0 -2.479025 2.041550 0
+ L3 12410368 0.000000 -4.958050 1.166600 0 -3.937275 1.166600 0
+ L3 12410368 0.000000 -3.353975 -0.437475 0 -4.083100 -0.291650 0
+ L3 12410368 0.000000 -4.520575 -2.187375 0 -3.791450 -2.333200 0
+ L3 12410368 0.000000 -2.187375 -4.374750 0 -2.479025 -4.812225 0
+ L3 12410368 0.000000 -0.145825 -3.937275 0 0.000000 -4.374750 0
+ L3 12410368 0.000000 1.895725 -4.666400 0 1.749900 -5.249700 0
+ L3 12410368 0.000000 4.374750 -2.770675 0 4.666400 -3.208150 0
+ L3 12410368 0.000000 -4.083100 3.645625 0 -3.791450 3.062325 0
+ L3 14915328 0.000000 -4.666400 2.770675 0 -4.228925 3.062325 0
+ L3 16755200 0.000000 5.103875 0.437475 0 4.520575 0.291650 0
+ L3 16755200 0.000000 -1.458250 4.666400 0 -1.604075 3.937275 0
+ L3 16755200 0.000000 -3.353975 3.062325 0 -2.333200 3.062325 0
+ L3 16755200 0.000000 -2.770675 1.604075 0 -3.645625 1.458250 0
+ L3 16755200 0.000000 -4.958050 0.291650 0 -4.083100 0.729125 0
+ L3 16755200 0.000000 -3.937275 -1.020775 0 -4.958050 -1.604075 0
+ L3 16755200 0.000000 -3.499800 -3.353975 0 -3.208150 -2.916500 0
+ L3 16755200 0.000000 -1.312425 -4.666400 0 -1.020775 -5.103875 0
+ L3 16755200 0.000000 0.729125 -3.937275 0 0.291650 -4.228925 0
+ L3 16755200 0.000000 2.770675 -4.374750 0 3.208150 -4.520575 0
+ L3 16755200 0.000000 5.103875 -2.041550 0 4.666400 -2.187375 0
+ F4 6815744 0.000000 5 0
+ -0.873657 2.766582 0
+ -0.790452 2.288150 0
+ 0.104007 1.892924 0
+ 0.353623 2.475363 0
+ -0.104007 2.912191 0
+ F4 6815744 0.000000 4 0
+ 2.849787 -0.104007 0
+ 1.768116 -0.353623 0
+ 1.539301 0.187212 0
+ 3.016198 0.270418 0
+ F4 6815744 0.000000 4 0
+ 0.686445 -2.766582 0
+ 0.145610 -2.350554 0
+ 0.291219 -1.476897 0
+ 0.624041 -1.601705 0
+ F4 6815744 0.000000 5 0
+ -2.184143 -0.249616 0
+ -1.892924 -0.041603 0
+ -0.894459 0.208014 0
+ -0.353623 -0.353623 0
+ -1.601705 -0.540836 0
+ L3 6815744 0.000000 2.041550 2.770675 0 1.312425 2.479025 0
+ L3 6815744 0.000000 1.312425 3.791450 0 1.020775 3.208150 0
+ L3 6815744 0.000000 -0.583300 3.645625 0 -0.291650 3.208150 0
+ L3 6815744 0.000000 -1.312425 1.604075 0 -0.583300 1.895725 0
+ L3 6815744 0.000000 -1.749900 0.874950 0 -1.166600 0.437475 0
+ L3 6815744 0.000000 -3.353975 0.291650 0 -2.624850 0.000000 0
+ L3 6815744 0.000000 -2.333200 -0.729125 0 -2.916500 -1.312425 0
+ L3 6815744 0.000000 -0.583300 -2.624850 0 -0.729125 -3.499800 0
+ L3 6815744 0.000000 -0.437475 -1.604075 0 -0.291650 -2.187375 0
+ L3 6815744 0.000000 1.020775 -2.624850 0 1.312425 -3.499800 0
+ L3 6815744 0.000000 1.749900 -2.479025 0 2.624850 -2.916500 0
+ L3 6815744 0.000000 3.937275 -1.020775 0 3.208150 -1.166600 0
+ L3 6815744 0.000000 3.937275 -2.333200 0 3.208150 -2.041550 0
+ L3 6815744 0.000000 4.228925 -1.749900 0 3.499800 -1.604075 0
+ L3 6815744 0.000000 1.749900 -4.228925 0 1.604075 -3.645625 0
+ L3 6815744 0.000000 2.624850 -3.791450 0 2.187375 -3.353975 0
+ L3 6815744 0.000000 4.374750 0.729125 0 3.499800 0.874950 0
+ L3 6815744 0.000000 4.374750 1.458250 0 3.645625 1.312425 0
+ L3 6815744 0.000000 -1.458250 -4.083100 0 -1.312425 -3.499800 0
+ L3 6815744 0.000000 -3.208150 -2.041550 0 -2.770675 -1.749900 0
+ L3 6815744 0.000000 2.041550 4.666400 0 1.749900 3.937275 0
+ L3 6815744 0.000000 2.624850 4.228925 0 2.187375 3.791450 0
+ L3 11184640 0.000000 2.041550 -3.937275 0 1.749900 -3.062325 0
+ L3 14915328 0.000000 2.333200 3.499800 0 1.895725 3.208150 0
+ L3 14915328 0.000000 -2.624850 0.729125 0 -2.041550 0.437475 0
+ F4 16755200 0.000000 4 0
+ 2.246548 2.308952 0
+ 1.331287 2.038534 0
+ 1.227281 1.352089 0
+ 1.830520 1.601705 0
+ F4 16755200 0.000000 3 0
+ 2.537767 -2.080137 0
+ 2.246548 -1.435294 0
+ 1.788917 -1.830520 0
+ F4 16755200 0.000000 4 0
+ -1.913726 -2.412958 0
+ -1.331287 -2.267349 0
+ -0.915260 -1.289685 0
+ -1.560102 -1.456096 0
+ L3 16755200 0.000000 0.291650 3.208150 0 0.583300 2.770675 0
+ L3 16755200 0.000000 -1.749900 2.333200 0 -1.166600 2.333200 0
+ L3 16755200 0.000000 -2.624850 -2.041550 0 -2.187375 -1.458250 0
+ L3 16755200 0.000000 -1.604075 -3.208150 0 -1.166600 -2.624850 0
+ L3 16755200 0.000000 3.645625 1.895725 0 2.916500 1.458250 0
+ END$SEGS
+STRUCTURE 139 3 0 0 0 A 2 40.500000 201.000000 0 0.000000 "Lg Fall 14"" Fall-14a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.234619 -4.017274 0
+ -3.633905 -6.288724 0
+ -2.282299 -6.870665 0
+ -0.761741 -4.993434 0
+ 0.984083 -6.626625 0
+ 3.086582 -5.631693 0
+ 2.598502 5.537831 0
+ 0.608637 6.589081 0
+ -0.217344 5.312564 0
+ -1.888080 5.331336 0
+ -2.301071 6.626625 0
+ -4.872877 5.800644 0
+ -4.553748 4.280087 0
+ -6.675019 4.129908 0
+ -7.763813 1.933548 0
+ -6.562385 0.694575 0
+ -8.139259 0.000000 0
+ -7.726268 -1.576874 0
+ -6.055533 -2.177588 0
+ -7.256961 -3.153748 0
+ -6.280801 -4.918345 0
+ F4 6842368 0.000000 28 0
+ -5.856961 -3.153748 0
+ -4.880801 -4.918345 0
+ -2.834619 -4.017274 0
+ -2.233905 -6.288724 0
+ -0.882299 -6.870665 0
+ 0.638259 -4.993434 0
+ 2.384083 -6.626625 0
+ 4.486582 -5.631693 0
+ 3.698145 -3.547967 0
+ 6.213635 -2.853391 0
+ 6.589081 -0.488080 0
+ 5.275019 0.732120 0
+ 6.513991 2.496717 0
+ 5.575376 4.073591 0
+ 4.054819 3.510422 0
+ 3.998502 5.537831 0
+ 2.008637 6.589081 0
+ 1.182656 5.312564 0
+ -0.488080 5.331336 0
+ -0.901071 6.626625 0
+ -3.472877 5.800644 0
+ -3.153748 4.280087 0
+ -5.275019 4.129908 0
+ -6.363813 1.933548 0
+ -5.162385 0.694575 0
+ -6.739259 0.000000 0
+ -6.326268 -1.576874 0
+ -4.655533 -2.177588 0
+ F4 12434688 0.000000 26 0
+ 0.938615 -4.392720 0
+ 2.252677 -5.706782 0
+ 3.510422 -4.937117 0
+ 2.947253 -2.740757 0
+ 5.462742 -2.046182 0
+ 5.631693 -0.957388 0
+ 4.054819 0.131406 0
+ 5.425198 2.196360 0
+ 4.824484 2.909708 0
+ 3.322699 2.872163 0
+ 3.247610 4.599216 0
+ 1.952320 5.312564 0
+ 0.882299 4.054819 0
+ -0.732120 4.280087 0
+ -1.107566 5.143613 0
+ -2.477945 4.786939 0
+ -2.496717 3.285154 0
+ -3.641828 3.247610 0
+ -4.392720 1.745825 0
+ -3.059886 0.488080 0
+ -4.317631 -0.168951 0
+ -4.111136 -1.070022 0
+ -2.102499 -1.445468 0
+ -2.872163 -2.815846 0
+ -1.614419 -3.792007 0
+ -1.107566 -4.899573 0
+ L3 12434688 0.000000 -1.701292 -5.444133 0 -1.871421 -4.593487 0
+ L3 12434688 0.000000 -3.572712 -2.892196 0 -2.892196 -2.381808 0
+ L3 12434688 0.000000 -5.784392 -0.340258 0 -4.763617 -0.850646 0
+ L3 12434688 0.000000 -3.912971 0.510387 0 -4.763617 0.340258 0
+ L3 12434688 0.000000 -5.274004 2.551937 0 -4.423358 2.722067 0
+ L3 12434688 0.000000 -2.551937 5.103875 0 -2.892196 5.614262 0
+ L3 12434688 0.000000 0.850646 4.593487 0 0.340258 4.933746 0
+ L3 12434688 0.000000 3.232454 5.103875 0 3.742842 5.274004 0
+ L3 12434688 0.000000 5.954521 2.381808 0 5.444133 2.551937 0
+ L3 12434688 0.000000 -4.763617 -4.253229 0 -4.423358 -3.572712 0
+ L3 12434688 0.000000 -5.444133 -3.232454 0 -4.933746 -3.572712 0
+ L3 16755200 0.000000 -1.190904 -5.784392 0 -0.510387 -5.274004 0
+ L3 16755200 0.000000 -3.912971 -3.572712 0 -2.722067 -3.572712 0
+ L3 16755200 0.000000 -4.763617 -3.232454 0 -4.253229 -2.722067 0
+ L3 16755200 0.000000 -3.232454 -1.871421 0 -4.253229 -1.701292 0
+ L3 16755200 0.000000 -5.784392 -1.361033 0 -4.593487 -1.361033 0
+ L3 16755200 0.000000 -4.593487 1.190904 0 -5.784392 1.871421 0
+ L3 16755200 0.000000 -4.083100 3.912971 0 -3.742842 3.402583 0
+ L3 16755200 0.000000 -1.531162 5.444133 0 -1.190904 5.954521 0
+ L3 16755200 0.000000 -0.170129 4.593487 0 0.000000 5.103875 0
+ L3 16755200 0.000000 2.211679 5.444133 0 2.041550 6.124650 0
+ L3 16755200 0.000000 5.103875 3.232454 0 5.444133 3.742842 0
+ L3 16755200 0.000000 5.954521 -0.510387 0 5.274004 -0.340258 0
+ F4 6842368 0.000000 4 0
+ 2.620972 -2.693777 0
+ 1.553169 -2.378289 0
+ 1.431827 -1.577437 0
+ 2.135607 -1.868656 0
+ F4 6842368 0.000000 4 0
+ 3.324752 0.121341 0
+ 2.062802 0.412560 0
+ 1.795851 -0.218414 0
+ 3.518898 -0.315487 0
+ F4 6842368 0.000000 4 0
+ 0.800853 3.227679 0
+ 0.169878 2.742313 0
+ 0.339756 1.723046 0
+ 0.728048 1.868656 0
+ F4 6842368 0.000000 5 0
+ -2.548167 0.291219 0
+ -2.208412 0.048537 0
+ -1.043535 -0.242683 0
+ -0.412560 0.412560 0
+ -1.868656 0.630975 0
+ L3 6842368 0.000000 0.340258 -3.742842 0 0.680517 -3.232454 0
+ L3 6842368 0.000000 2.381808 -3.232454 0 1.531162 -2.892196 0
+ L3 6842368 0.000000 2.722067 -4.083100 0 2.211679 -3.742842 0
+ L3 6842368 0.000000 1.531162 -4.423358 0 1.190904 -3.742842 0
+ L3 6842368 0.000000 -0.680517 -4.253229 0 -0.340258 -3.742842 0
+ L3 6842368 0.000000 -2.041550 -2.722067 0 -1.361033 -2.722067 0
+ L3 6842368 0.000000 -1.531162 -1.871421 0 -0.680517 -2.211679 0
+ L3 6842368 0.000000 -2.041550 -1.020775 0 -1.361033 -0.510387 0
+ L3 6842368 0.000000 -3.062325 -0.850646 0 -2.381808 -0.510387 0
+ L3 6842368 0.000000 -3.912971 -0.340258 0 -3.062325 0.000000 0
+ L3 6842368 0.000000 -2.722067 0.850646 0 -3.402583 1.531162 0
+ L3 6842368 0.000000 -3.062325 2.381808 0 -2.551937 1.701292 0
+ L3 6842368 0.000000 -1.871421 3.742842 0 -1.361033 3.062325 0
+ L3 6842368 0.000000 -0.680517 3.062325 0 -0.850646 4.083100 0
+ L3 6842368 0.000000 -0.510387 1.871421 0 -0.340258 2.551937 0
+ L3 6842368 0.000000 1.190904 3.062325 0 1.531162 4.083100 0
+ L3 6842368 0.000000 2.041550 2.892196 0 3.062325 3.402583 0
+ L3 6842368 0.000000 4.593487 1.190904 0 3.742842 1.361033 0
+ L3 6842368 0.000000 4.593487 2.722067 0 3.742842 2.381808 0
+ L3 6842368 0.000000 4.933746 2.041550 0 4.083100 1.871421 0
+ L3 6842368 0.000000 2.041550 4.933746 0 1.871421 4.253229 0
+ L3 6842368 0.000000 3.062325 4.423358 0 2.551937 3.912971 0
+ L3 6842368 0.000000 2.381808 4.593487 0 2.041550 3.572712 0
+ L3 6842368 0.000000 5.103875 -0.850646 0 4.083100 -1.020775 0
+ L3 6842368 0.000000 4.253229 -2.211679 0 3.402583 -1.701292 0
+ L3 6842368 0.000000 5.103875 -1.701292 0 4.253229 -1.531162 0
+ L3 6842368 0.000000 -1.701292 4.763617 0 -1.531162 4.083100 0
+ L3 6842368 0.000000 -3.742842 2.381808 0 -3.232454 2.041550 0
+ L3 6842368 0.000000 2.381808 -5.444133 0 2.041550 -4.593487 0
+ L3 6842368 0.000000 3.062325 -4.933746 0 2.551937 -4.423358 0
+ F4 16755200 0.000000 5 0
+ -1.019267 -3.227679 0
+ -0.922194 -2.669509 0
+ 0.121341 -2.208412 0
+ 0.412560 -2.887923 0
+ -0.121341 -3.397556 0
+ F4 16755200 0.000000 3 0
+ 2.960728 2.426826 0
+ 2.620972 1.674510 0
+ 2.087070 2.135607 0
+ F4 16755200 0.000000 4 0
+ -2.232680 2.815118 0
+ -1.553169 2.645240 0
+ -1.067803 1.504632 0
+ -1.820120 1.698778 0
+ END$SEGS
+STRUCTURE 140 3 0 0 0 A 2 16.500000 169.000000 0 0.000000 "Lg Fall 14"" Fall-14a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.234619 -4.017274 0
+ -3.633905 -6.288724 0
+ -2.282299 -6.870665 0
+ -0.761741 -4.993434 0
+ 0.984083 -6.626625 0
+ 3.086582 -5.631693 0
+ 2.598502 5.537831 0
+ 0.608637 6.589081 0
+ -0.217344 5.312564 0
+ -1.888080 5.331336 0
+ -2.301071 6.626625 0
+ -4.872877 5.800644 0
+ -4.553748 4.280087 0
+ -6.675019 4.129908 0
+ -7.763813 1.933548 0
+ -6.562385 0.694575 0
+ -8.139259 0.000000 0
+ -7.726268 -1.576874 0
+ -6.055533 -2.177588 0
+ -7.256961 -3.153748 0
+ -6.280801 -4.918345 0
+ F4 6842368 0.000000 28 0
+ -5.856961 -3.153748 0
+ -4.880801 -4.918345 0
+ -2.834619 -4.017274 0
+ -2.233905 -6.288724 0
+ -0.882299 -6.870665 0
+ 0.638259 -4.993434 0
+ 2.384083 -6.626625 0
+ 4.486582 -5.631693 0
+ 3.698145 -3.547967 0
+ 6.213635 -2.853391 0
+ 6.589081 -0.488080 0
+ 5.275019 0.732120 0
+ 6.513991 2.496717 0
+ 5.575376 4.073591 0
+ 4.054819 3.510422 0
+ 3.998502 5.537831 0
+ 2.008637 6.589081 0
+ 1.182656 5.312564 0
+ -0.488080 5.331336 0
+ -0.901071 6.626625 0
+ -3.472877 5.800644 0
+ -3.153748 4.280087 0
+ -5.275019 4.129908 0
+ -6.363813 1.933548 0
+ -5.162385 0.694575 0
+ -6.739259 0.000000 0
+ -6.326268 -1.576874 0
+ -4.655533 -2.177588 0
+ F4 12434688 0.000000 26 0
+ 0.938615 -4.392720 0
+ 2.252677 -5.706782 0
+ 3.510422 -4.937117 0
+ 2.947253 -2.740757 0
+ 5.462742 -2.046182 0
+ 5.631693 -0.957388 0
+ 4.054819 0.131406 0
+ 5.425198 2.196360 0
+ 4.824484 2.909708 0
+ 3.322699 2.872163 0
+ 3.247610 4.599216 0
+ 1.952320 5.312564 0
+ 0.882299 4.054819 0
+ -0.732120 4.280087 0
+ -1.107566 5.143613 0
+ -2.477945 4.786939 0
+ -2.496717 3.285154 0
+ -3.641828 3.247610 0
+ -4.392720 1.745825 0
+ -3.059886 0.488080 0
+ -4.317631 -0.168951 0
+ -4.111136 -1.070022 0
+ -2.102499 -1.445468 0
+ -2.872163 -2.815846 0
+ -1.614419 -3.792007 0
+ -1.107566 -4.899573 0
+ L3 12434688 0.000000 -1.701292 -5.444133 0 -1.871421 -4.593487 0
+ L3 12434688 0.000000 -3.572712 -2.892196 0 -2.892196 -2.381808 0
+ L3 12434688 0.000000 -5.784392 -0.340258 0 -4.763617 -0.850646 0
+ L3 12434688 0.000000 -3.912971 0.510387 0 -4.763617 0.340258 0
+ L3 12434688 0.000000 -5.274004 2.551937 0 -4.423358 2.722067 0
+ L3 12434688 0.000000 -2.551937 5.103875 0 -2.892196 5.614262 0
+ L3 12434688 0.000000 0.850646 4.593487 0 0.340258 4.933746 0
+ L3 12434688 0.000000 3.232454 5.103875 0 3.742842 5.274004 0
+ L3 12434688 0.000000 5.954521 2.381808 0 5.444133 2.551937 0
+ L3 12434688 0.000000 -4.763617 -4.253229 0 -4.423358 -3.572712 0
+ L3 12434688 0.000000 -5.444133 -3.232454 0 -4.933746 -3.572712 0
+ L3 16755200 0.000000 -1.190904 -5.784392 0 -0.510387 -5.274004 0
+ L3 16755200 0.000000 -3.912971 -3.572712 0 -2.722067 -3.572712 0
+ L3 16755200 0.000000 -4.763617 -3.232454 0 -4.253229 -2.722067 0
+ L3 16755200 0.000000 -3.232454 -1.871421 0 -4.253229 -1.701292 0
+ L3 16755200 0.000000 -5.784392 -1.361033 0 -4.593487 -1.361033 0
+ L3 16755200 0.000000 -4.593487 1.190904 0 -5.784392 1.871421 0
+ L3 16755200 0.000000 -4.083100 3.912971 0 -3.742842 3.402583 0
+ L3 16755200 0.000000 -1.531162 5.444133 0 -1.190904 5.954521 0
+ L3 16755200 0.000000 -0.170129 4.593487 0 0.000000 5.103875 0
+ L3 16755200 0.000000 2.211679 5.444133 0 2.041550 6.124650 0
+ L3 16755200 0.000000 5.103875 3.232454 0 5.444133 3.742842 0
+ L3 16755200 0.000000 5.954521 -0.510387 0 5.274004 -0.340258 0
+ F4 6842368 0.000000 4 0
+ 2.620972 -2.693777 0
+ 1.553169 -2.378289 0
+ 1.431827 -1.577437 0
+ 2.135607 -1.868656 0
+ F4 6842368 0.000000 4 0
+ 3.324752 0.121341 0
+ 2.062802 0.412560 0
+ 1.795851 -0.218414 0
+ 3.518898 -0.315487 0
+ F4 6842368 0.000000 4 0
+ 0.800853 3.227679 0
+ 0.169878 2.742313 0
+ 0.339756 1.723046 0
+ 0.728048 1.868656 0
+ F4 6842368 0.000000 5 0
+ -2.548167 0.291219 0
+ -2.208412 0.048537 0
+ -1.043535 -0.242683 0
+ -0.412560 0.412560 0
+ -1.868656 0.630975 0
+ L3 6842368 0.000000 0.340258 -3.742842 0 0.680517 -3.232454 0
+ L3 6842368 0.000000 2.381808 -3.232454 0 1.531162 -2.892196 0
+ L3 6842368 0.000000 2.722067 -4.083100 0 2.211679 -3.742842 0
+ L3 6842368 0.000000 1.531162 -4.423358 0 1.190904 -3.742842 0
+ L3 6842368 0.000000 -0.680517 -4.253229 0 -0.340258 -3.742842 0
+ L3 6842368 0.000000 -2.041550 -2.722067 0 -1.361033 -2.722067 0
+ L3 6842368 0.000000 -1.531162 -1.871421 0 -0.680517 -2.211679 0
+ L3 6842368 0.000000 -2.041550 -1.020775 0 -1.361033 -0.510387 0
+ L3 6842368 0.000000 -3.062325 -0.850646 0 -2.381808 -0.510387 0
+ L3 6842368 0.000000 -3.912971 -0.340258 0 -3.062325 0.000000 0
+ L3 6842368 0.000000 -2.722067 0.850646 0 -3.402583 1.531162 0
+ L3 6842368 0.000000 -3.062325 2.381808 0 -2.551937 1.701292 0
+ L3 6842368 0.000000 -1.871421 3.742842 0 -1.361033 3.062325 0
+ L3 6842368 0.000000 -0.680517 3.062325 0 -0.850646 4.083100 0
+ L3 6842368 0.000000 -0.510387 1.871421 0 -0.340258 2.551937 0
+ L3 6842368 0.000000 1.190904 3.062325 0 1.531162 4.083100 0
+ L3 6842368 0.000000 2.041550 2.892196 0 3.062325 3.402583 0
+ L3 6842368 0.000000 4.593487 1.190904 0 3.742842 1.361033 0
+ L3 6842368 0.000000 4.593487 2.722067 0 3.742842 2.381808 0
+ L3 6842368 0.000000 4.933746 2.041550 0 4.083100 1.871421 0
+ L3 6842368 0.000000 2.041550 4.933746 0 1.871421 4.253229 0
+ L3 6842368 0.000000 3.062325 4.423358 0 2.551937 3.912971 0
+ L3 6842368 0.000000 2.381808 4.593487 0 2.041550 3.572712 0
+ L3 6842368 0.000000 5.103875 -0.850646 0 4.083100 -1.020775 0
+ L3 6842368 0.000000 4.253229 -2.211679 0 3.402583 -1.701292 0
+ L3 6842368 0.000000 5.103875 -1.701292 0 4.253229 -1.531162 0
+ L3 6842368 0.000000 -1.701292 4.763617 0 -1.531162 4.083100 0
+ L3 6842368 0.000000 -3.742842 2.381808 0 -3.232454 2.041550 0
+ L3 6842368 0.000000 2.381808 -5.444133 0 2.041550 -4.593487 0
+ L3 6842368 0.000000 3.062325 -4.933746 0 2.551937 -4.423358 0
+ F4 16755200 0.000000 5 0
+ -1.019267 -3.227679 0
+ -0.922194 -2.669509 0
+ 0.121341 -2.208412 0
+ 0.412560 -2.887923 0
+ -0.121341 -3.397556 0
+ F4 16755200 0.000000 3 0
+ 2.960728 2.426826 0
+ 2.620972 1.674510 0
+ 2.087070 2.135607 0
+ F4 16755200 0.000000 4 0
+ -2.232680 2.815118 0
+ -1.553169 2.645240 0
+ -1.067803 1.504632 0
+ -1.820120 1.698778 0
+ END$SEGS
+STRUCTURE 141 3 0 0 0 A 2 121.500000 164.500000 0 0.000000 "Lg Fall 14"" Fall-14a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.234619 -4.017274 0
+ -3.633905 -6.288724 0
+ -2.282299 -6.870665 0
+ -0.761741 -4.993434 0
+ 0.984083 -6.626625 0
+ 3.086582 -5.631693 0
+ 2.598502 5.537831 0
+ 0.608637 6.589081 0
+ -0.217344 5.312564 0
+ -1.888080 5.331336 0
+ -2.301071 6.626625 0
+ -4.872877 5.800644 0
+ -4.553748 4.280087 0
+ -6.675019 4.129908 0
+ -7.763813 1.933548 0
+ -6.562385 0.694575 0
+ -8.139259 0.000000 0
+ -7.726268 -1.576874 0
+ -6.055533 -2.177588 0
+ -7.256961 -3.153748 0
+ -6.280801 -4.918345 0
+ F4 6842368 0.000000 28 0
+ -5.856961 -3.153748 0
+ -4.880801 -4.918345 0
+ -2.834619 -4.017274 0
+ -2.233905 -6.288724 0
+ -0.882299 -6.870665 0
+ 0.638259 -4.993434 0
+ 2.384083 -6.626625 0
+ 4.486582 -5.631693 0
+ 3.698145 -3.547967 0
+ 6.213635 -2.853391 0
+ 6.589081 -0.488080 0
+ 5.275019 0.732120 0
+ 6.513991 2.496717 0
+ 5.575376 4.073591 0
+ 4.054819 3.510422 0
+ 3.998502 5.537831 0
+ 2.008637 6.589081 0
+ 1.182656 5.312564 0
+ -0.488080 5.331336 0
+ -0.901071 6.626625 0
+ -3.472877 5.800644 0
+ -3.153748 4.280087 0
+ -5.275019 4.129908 0
+ -6.363813 1.933548 0
+ -5.162385 0.694575 0
+ -6.739259 0.000000 0
+ -6.326268 -1.576874 0
+ -4.655533 -2.177588 0
+ F4 12434688 0.000000 26 0
+ 0.938615 -4.392720 0
+ 2.252677 -5.706782 0
+ 3.510422 -4.937117 0
+ 2.947253 -2.740757 0
+ 5.462742 -2.046182 0
+ 5.631693 -0.957388 0
+ 4.054819 0.131406 0
+ 5.425198 2.196360 0
+ 4.824484 2.909708 0
+ 3.322699 2.872163 0
+ 3.247610 4.599216 0
+ 1.952320 5.312564 0
+ 0.882299 4.054819 0
+ -0.732120 4.280087 0
+ -1.107566 5.143613 0
+ -2.477945 4.786939 0
+ -2.496717 3.285154 0
+ -3.641828 3.247610 0
+ -4.392720 1.745825 0
+ -3.059886 0.488080 0
+ -4.317631 -0.168951 0
+ -4.111136 -1.070022 0
+ -2.102499 -1.445468 0
+ -2.872163 -2.815846 0
+ -1.614419 -3.792007 0
+ -1.107566 -4.899573 0
+ L3 12434688 0.000000 -1.701292 -5.444133 0 -1.871421 -4.593487 0
+ L3 12434688 0.000000 -3.572712 -2.892196 0 -2.892196 -2.381808 0
+ L3 12434688 0.000000 -5.784392 -0.340258 0 -4.763617 -0.850646 0
+ L3 12434688 0.000000 -3.912971 0.510387 0 -4.763617 0.340258 0
+ L3 12434688 0.000000 -5.274004 2.551937 0 -4.423358 2.722067 0
+ L3 12434688 0.000000 -2.551937 5.103875 0 -2.892196 5.614262 0
+ L3 12434688 0.000000 0.850646 4.593487 0 0.340258 4.933746 0
+ L3 12434688 0.000000 3.232454 5.103875 0 3.742842 5.274004 0
+ L3 12434688 0.000000 5.954521 2.381808 0 5.444133 2.551937 0
+ L3 12434688 0.000000 -4.763617 -4.253229 0 -4.423358 -3.572712 0
+ L3 12434688 0.000000 -5.444133 -3.232454 0 -4.933746 -3.572712 0
+ L3 16755200 0.000000 -1.190904 -5.784392 0 -0.510387 -5.274004 0
+ L3 16755200 0.000000 -3.912971 -3.572712 0 -2.722067 -3.572712 0
+ L3 16755200 0.000000 -4.763617 -3.232454 0 -4.253229 -2.722067 0
+ L3 16755200 0.000000 -3.232454 -1.871421 0 -4.253229 -1.701292 0
+ L3 16755200 0.000000 -5.784392 -1.361033 0 -4.593487 -1.361033 0
+ L3 16755200 0.000000 -4.593487 1.190904 0 -5.784392 1.871421 0
+ L3 16755200 0.000000 -4.083100 3.912971 0 -3.742842 3.402583 0
+ L3 16755200 0.000000 -1.531162 5.444133 0 -1.190904 5.954521 0
+ L3 16755200 0.000000 -0.170129 4.593487 0 0.000000 5.103875 0
+ L3 16755200 0.000000 2.211679 5.444133 0 2.041550 6.124650 0
+ L3 16755200 0.000000 5.103875 3.232454 0 5.444133 3.742842 0
+ L3 16755200 0.000000 5.954521 -0.510387 0 5.274004 -0.340258 0
+ F4 6842368 0.000000 4 0
+ 2.620972 -2.693777 0
+ 1.553169 -2.378289 0
+ 1.431827 -1.577437 0
+ 2.135607 -1.868656 0
+ F4 6842368 0.000000 4 0
+ 3.324752 0.121341 0
+ 2.062802 0.412560 0
+ 1.795851 -0.218414 0
+ 3.518898 -0.315487 0
+ F4 6842368 0.000000 4 0
+ 0.800853 3.227679 0
+ 0.169878 2.742313 0
+ 0.339756 1.723046 0
+ 0.728048 1.868656 0
+ F4 6842368 0.000000 5 0
+ -2.548167 0.291219 0
+ -2.208412 0.048537 0
+ -1.043535 -0.242683 0
+ -0.412560 0.412560 0
+ -1.868656 0.630975 0
+ L3 6842368 0.000000 0.340258 -3.742842 0 0.680517 -3.232454 0
+ L3 6842368 0.000000 2.381808 -3.232454 0 1.531162 -2.892196 0
+ L3 6842368 0.000000 2.722067 -4.083100 0 2.211679 -3.742842 0
+ L3 6842368 0.000000 1.531162 -4.423358 0 1.190904 -3.742842 0
+ L3 6842368 0.000000 -0.680517 -4.253229 0 -0.340258 -3.742842 0
+ L3 6842368 0.000000 -2.041550 -2.722067 0 -1.361033 -2.722067 0
+ L3 6842368 0.000000 -1.531162 -1.871421 0 -0.680517 -2.211679 0
+ L3 6842368 0.000000 -2.041550 -1.020775 0 -1.361033 -0.510387 0
+ L3 6842368 0.000000 -3.062325 -0.850646 0 -2.381808 -0.510387 0
+ L3 6842368 0.000000 -3.912971 -0.340258 0 -3.062325 0.000000 0
+ L3 6842368 0.000000 -2.722067 0.850646 0 -3.402583 1.531162 0
+ L3 6842368 0.000000 -3.062325 2.381808 0 -2.551937 1.701292 0
+ L3 6842368 0.000000 -1.871421 3.742842 0 -1.361033 3.062325 0
+ L3 6842368 0.000000 -0.680517 3.062325 0 -0.850646 4.083100 0
+ L3 6842368 0.000000 -0.510387 1.871421 0 -0.340258 2.551937 0
+ L3 6842368 0.000000 1.190904 3.062325 0 1.531162 4.083100 0
+ L3 6842368 0.000000 2.041550 2.892196 0 3.062325 3.402583 0
+ L3 6842368 0.000000 4.593487 1.190904 0 3.742842 1.361033 0
+ L3 6842368 0.000000 4.593487 2.722067 0 3.742842 2.381808 0
+ L3 6842368 0.000000 4.933746 2.041550 0 4.083100 1.871421 0
+ L3 6842368 0.000000 2.041550 4.933746 0 1.871421 4.253229 0
+ L3 6842368 0.000000 3.062325 4.423358 0 2.551937 3.912971 0
+ L3 6842368 0.000000 2.381808 4.593487 0 2.041550 3.572712 0
+ L3 6842368 0.000000 5.103875 -0.850646 0 4.083100 -1.020775 0
+ L3 6842368 0.000000 4.253229 -2.211679 0 3.402583 -1.701292 0
+ L3 6842368 0.000000 5.103875 -1.701292 0 4.253229 -1.531162 0
+ L3 6842368 0.000000 -1.701292 4.763617 0 -1.531162 4.083100 0
+ L3 6842368 0.000000 -3.742842 2.381808 0 -3.232454 2.041550 0
+ L3 6842368 0.000000 2.381808 -5.444133 0 2.041550 -4.593487 0
+ L3 6842368 0.000000 3.062325 -4.933746 0 2.551937 -4.423358 0
+ F4 16755200 0.000000 5 0
+ -1.019267 -3.227679 0
+ -0.922194 -2.669509 0
+ 0.121341 -2.208412 0
+ 0.412560 -2.887923 0
+ -0.121341 -3.397556 0
+ F4 16755200 0.000000 3 0
+ 2.960728 2.426826 0
+ 2.620972 1.674510 0
+ 2.087070 2.135607 0
+ F4 16755200 0.000000 4 0
+ -2.232680 2.815118 0
+ -1.553169 2.645240 0
+ -1.067803 1.504632 0
+ -1.820120 1.698778 0
+ END$SEGS
+STRUCTURE 142 3 0 0 0 A 2 136.500000 174.500000 0 0.000000 "Lg Fall 14"" Fall-14b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.234619 4.017274 0
+ -3.633905 6.288724 0
+ -2.282299 6.870665 0
+ -0.761741 4.993434 0
+ 0.984083 6.626625 0
+ 3.086582 5.631693 0
+ 2.598502 -5.537831 0
+ 0.608637 -6.589081 0
+ -0.217344 -5.312564 0
+ -1.888080 -5.331336 0
+ -2.301071 -6.626625 0
+ -4.872877 -5.800644 0
+ -4.553748 -4.280087 0
+ -6.675019 -4.129908 0
+ -7.763813 -1.933548 0
+ -6.562385 -0.694575 0
+ -8.139259 0.000000 0
+ -7.726268 1.576874 0
+ -6.055533 2.177588 0
+ -7.256961 3.153748 0
+ -6.280801 4.918345 0
+ F4 6815744 0.000000 28 0
+ -5.856961 3.153748 0
+ -4.880801 4.918345 0
+ -2.834619 4.017274 0
+ -2.233905 6.288724 0
+ -0.882299 6.870665 0
+ 0.638259 4.993434 0
+ 2.384083 6.626625 0
+ 4.486582 5.631693 0
+ 3.698145 3.547967 0
+ 6.213635 2.853391 0
+ 6.589081 0.488080 0
+ 5.275019 -0.732120 0
+ 6.513991 -2.496717 0
+ 5.575376 -4.073591 0
+ 4.054819 -3.510422 0
+ 3.998502 -5.537831 0
+ 2.008637 -6.589081 0
+ 1.182656 -5.312564 0
+ -0.488080 -5.331336 0
+ -0.901071 -6.626625 0
+ -3.472877 -5.800644 0
+ -3.153748 -4.280087 0
+ -5.275019 -4.129908 0
+ -6.363813 -1.933548 0
+ -5.162385 -0.694575 0
+ -6.739259 0.000000 0
+ -6.326268 1.576874 0
+ -4.655533 2.177588 0
+ F4 12410368 0.000000 26 0
+ 0.938615 4.392720 0
+ 2.252677 5.706782 0
+ 3.510422 4.937117 0
+ 2.947253 2.740757 0
+ 5.462742 2.046182 0
+ 5.631693 0.957388 0
+ 4.054819 -0.131406 0
+ 5.425198 -2.196360 0
+ 4.824484 -2.909708 0
+ 3.322699 -2.872163 0
+ 3.247610 -4.599216 0
+ 1.952320 -5.312564 0
+ 0.882299 -4.054819 0
+ -0.732120 -4.280087 0
+ -1.107566 -5.143613 0
+ -2.477945 -4.786939 0
+ -2.496717 -3.285154 0
+ -3.641828 -3.247610 0
+ -4.392720 -1.745825 0
+ -3.059886 -0.488080 0
+ -4.317631 0.168951 0
+ -4.111136 1.070022 0
+ -2.102499 1.445468 0
+ -2.872163 2.815846 0
+ -1.614419 3.792007 0
+ -1.107566 4.899573 0
+ L3 12410368 0.000000 -1.190904 5.784392 0 -0.510387 5.274004 0
+ L3 12410368 0.000000 -4.763617 3.232454 0 -4.253229 2.722067 0
+ L3 12410368 0.000000 -3.572712 2.892196 0 -2.892196 2.381808 0
+ L3 12410368 0.000000 -5.784392 1.361033 0 -4.593487 1.361033 0
+ L3 12410368 0.000000 -3.912971 -0.510387 0 -4.763617 -0.340258 0
+ L3 12410368 0.000000 -5.274004 -2.551937 0 -4.423358 -2.722067 0
+ L3 12410368 0.000000 -2.551937 -5.103875 0 -2.892196 -5.614262 0
+ L3 12410368 0.000000 -0.170129 -4.593487 0 0.000000 -5.103875 0
+ L3 12410368 0.000000 2.211679 -5.444133 0 2.041550 -6.124650 0
+ L3 12410368 0.000000 5.103875 -3.232454 0 5.444133 -3.742842 0
+ L3 12410368 0.000000 -4.763617 4.253229 0 -4.423358 3.572712 0
+ L3 14915328 0.000000 -5.444133 3.232454 0 -4.933746 3.572712 0
+ L3 16755200 0.000000 5.954521 0.510387 0 5.274004 0.340258 0
+ L3 16755200 0.000000 -1.701292 5.444133 0 -1.871421 4.593487 0
+ L3 16755200 0.000000 -3.912971 3.572712 0 -2.722067 3.572712 0
+ L3 16755200 0.000000 -3.232454 1.871421 0 -4.253229 1.701292 0
+ L3 16755200 0.000000 -5.784392 0.340258 0 -4.763617 0.850646 0
+ L3 16755200 0.000000 -4.593487 -1.190904 0 -5.784392 -1.871421 0
+ L3 16755200 0.000000 -4.083100 -3.912971 0 -3.742842 -3.402583 0
+ L3 16755200 0.000000 -1.531162 -5.444133 0 -1.190904 -5.954521 0
+ L3 16755200 0.000000 0.850646 -4.593487 0 0.340258 -4.933746 0
+ L3 16755200 0.000000 3.232454 -5.103875 0 3.742842 -5.274004 0
+ L3 16755200 0.000000 5.954521 -2.381808 0 5.444133 -2.551937 0
+ F4 6815744 0.000000 5 0
+ -1.019267 3.227679 0
+ -0.922194 2.669509 0
+ 0.121341 2.208412 0
+ 0.412560 2.887923 0
+ -0.121341 3.397556 0
+ F4 6815744 0.000000 4 0
+ 3.324752 -0.121341 0
+ 2.062802 -0.412560 0
+ 1.795851 0.218414 0
+ 3.518898 0.315487 0
+ F4 6815744 0.000000 4 0
+ 0.800853 -3.227679 0
+ 0.169878 -2.742313 0
+ 0.339756 -1.723046 0
+ 0.728048 -1.868656 0
+ F4 6815744 0.000000 5 0
+ -2.548167 -0.291219 0
+ -2.208412 -0.048537 0
+ -1.043535 0.242683 0
+ -0.412560 -0.412560 0
+ -1.868656 -0.630975 0
+ L3 6815744 0.000000 2.381808 3.232454 0 1.531162 2.892196 0
+ L3 6815744 0.000000 1.531162 4.423358 0 1.190904 3.742842 0
+ L3 6815744 0.000000 -0.680517 4.253229 0 -0.340258 3.742842 0
+ L3 6815744 0.000000 -1.531162 1.871421 0 -0.680517 2.211679 0
+ L3 6815744 0.000000 -2.041550 1.020775 0 -1.361033 0.510387 0
+ L3 6815744 0.000000 -3.912971 0.340258 0 -3.062325 0.000000 0
+ L3 6815744 0.000000 -2.722067 -0.850646 0 -3.402583 -1.531162 0
+ L3 6815744 0.000000 -0.680517 -3.062325 0 -0.850646 -4.083100 0
+ L3 6815744 0.000000 -0.510387 -1.871421 0 -0.340258 -2.551937 0
+ L3 6815744 0.000000 1.190904 -3.062325 0 1.531162 -4.083100 0
+ L3 6815744 0.000000 2.041550 -2.892196 0 3.062325 -3.402583 0
+ L3 6815744 0.000000 4.593487 -1.190904 0 3.742842 -1.361033 0
+ L3 6815744 0.000000 4.593487 -2.722067 0 3.742842 -2.381808 0
+ L3 6815744 0.000000 4.933746 -2.041550 0 4.083100 -1.871421 0
+ L3 6815744 0.000000 2.041550 -4.933746 0 1.871421 -4.253229 0
+ L3 6815744 0.000000 3.062325 -4.423358 0 2.551937 -3.912971 0
+ L3 6815744 0.000000 5.103875 0.850646 0 4.083100 1.020775 0
+ L3 6815744 0.000000 5.103875 1.701292 0 4.253229 1.531162 0
+ L3 6815744 0.000000 -1.701292 -4.763617 0 -1.531162 -4.083100 0
+ L3 6815744 0.000000 -3.742842 -2.381808 0 -3.232454 -2.041550 0
+ L3 6815744 0.000000 2.381808 5.444133 0 2.041550 4.593487 0
+ L3 6815744 0.000000 3.062325 4.933746 0 2.551937 4.423358 0
+ L3 11184640 0.000000 2.381808 -4.593487 0 2.041550 -3.572712 0
+ L3 14915328 0.000000 2.722067 4.083100 0 2.211679 3.742842 0
+ L3 14915328 0.000000 -3.062325 0.850646 0 -2.381808 0.510387 0
+ F4 16755200 0.000000 4 0
+ 2.620972 2.693777 0
+ 1.553169 2.378289 0
+ 1.431827 1.577437 0
+ 2.135607 1.868656 0
+ F4 16755200 0.000000 3 0
+ 2.960728 -2.426826 0
+ 2.620972 -1.674510 0
+ 2.087070 -2.135607 0
+ F4 16755200 0.000000 4 0
+ -2.232680 -2.815118 0
+ -1.553169 -2.645240 0
+ -1.067803 -1.504632 0
+ -1.820120 -1.698778 0
+ L3 16755200 0.000000 0.340258 3.742842 0 0.680517 3.232454 0
+ L3 16755200 0.000000 -2.041550 2.722067 0 -1.361033 2.722067 0
+ L3 16755200 0.000000 -3.062325 -2.381808 0 -2.551937 -1.701292 0
+ L3 16755200 0.000000 -1.871421 -3.742842 0 -1.361033 -3.062325 0
+ L3 16755200 0.000000 4.253229 2.211679 0 3.402583 1.701292 0
+ END$SEGS
+STRUCTURE 143 3 0 0 0 A 2 139.500000 196.500000 0 0.000000 "Lg Fall 14"" Fall-14b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.234619 4.017274 0
+ -3.633905 6.288724 0
+ -2.282299 6.870665 0
+ -0.761741 4.993434 0
+ 0.984083 6.626625 0
+ 3.086582 5.631693 0
+ 2.598502 -5.537831 0
+ 0.608637 -6.589081 0
+ -0.217344 -5.312564 0
+ -1.888080 -5.331336 0
+ -2.301071 -6.626625 0
+ -4.872877 -5.800644 0
+ -4.553748 -4.280087 0
+ -6.675019 -4.129908 0
+ -7.763813 -1.933548 0
+ -6.562385 -0.694575 0
+ -8.139259 0.000000 0
+ -7.726268 1.576874 0
+ -6.055533 2.177588 0
+ -7.256961 3.153748 0
+ -6.280801 4.918345 0
+ F4 6815744 0.000000 28 0
+ -5.856961 3.153748 0
+ -4.880801 4.918345 0
+ -2.834619 4.017274 0
+ -2.233905 6.288724 0
+ -0.882299 6.870665 0
+ 0.638259 4.993434 0
+ 2.384083 6.626625 0
+ 4.486582 5.631693 0
+ 3.698145 3.547967 0
+ 6.213635 2.853391 0
+ 6.589081 0.488080 0
+ 5.275019 -0.732120 0
+ 6.513991 -2.496717 0
+ 5.575376 -4.073591 0
+ 4.054819 -3.510422 0
+ 3.998502 -5.537831 0
+ 2.008637 -6.589081 0
+ 1.182656 -5.312564 0
+ -0.488080 -5.331336 0
+ -0.901071 -6.626625 0
+ -3.472877 -5.800644 0
+ -3.153748 -4.280087 0
+ -5.275019 -4.129908 0
+ -6.363813 -1.933548 0
+ -5.162385 -0.694575 0
+ -6.739259 0.000000 0
+ -6.326268 1.576874 0
+ -4.655533 2.177588 0
+ F4 12410368 0.000000 26 0
+ 0.938615 4.392720 0
+ 2.252677 5.706782 0
+ 3.510422 4.937117 0
+ 2.947253 2.740757 0
+ 5.462742 2.046182 0
+ 5.631693 0.957388 0
+ 4.054819 -0.131406 0
+ 5.425198 -2.196360 0
+ 4.824484 -2.909708 0
+ 3.322699 -2.872163 0
+ 3.247610 -4.599216 0
+ 1.952320 -5.312564 0
+ 0.882299 -4.054819 0
+ -0.732120 -4.280087 0
+ -1.107566 -5.143613 0
+ -2.477945 -4.786939 0
+ -2.496717 -3.285154 0
+ -3.641828 -3.247610 0
+ -4.392720 -1.745825 0
+ -3.059886 -0.488080 0
+ -4.317631 0.168951 0
+ -4.111136 1.070022 0
+ -2.102499 1.445468 0
+ -2.872163 2.815846 0
+ -1.614419 3.792007 0
+ -1.107566 4.899573 0
+ L3 12410368 0.000000 -1.190904 5.784392 0 -0.510387 5.274004 0
+ L3 12410368 0.000000 -4.763617 3.232454 0 -4.253229 2.722067 0
+ L3 12410368 0.000000 -3.572712 2.892196 0 -2.892196 2.381808 0
+ L3 12410368 0.000000 -5.784392 1.361033 0 -4.593487 1.361033 0
+ L3 12410368 0.000000 -3.912971 -0.510387 0 -4.763617 -0.340258 0
+ L3 12410368 0.000000 -5.274004 -2.551937 0 -4.423358 -2.722067 0
+ L3 12410368 0.000000 -2.551937 -5.103875 0 -2.892196 -5.614262 0
+ L3 12410368 0.000000 -0.170129 -4.593487 0 0.000000 -5.103875 0
+ L3 12410368 0.000000 2.211679 -5.444133 0 2.041550 -6.124650 0
+ L3 12410368 0.000000 5.103875 -3.232454 0 5.444133 -3.742842 0
+ L3 12410368 0.000000 -4.763617 4.253229 0 -4.423358 3.572712 0
+ L3 14915328 0.000000 -5.444133 3.232454 0 -4.933746 3.572712 0
+ L3 16755200 0.000000 5.954521 0.510387 0 5.274004 0.340258 0
+ L3 16755200 0.000000 -1.701292 5.444133 0 -1.871421 4.593487 0
+ L3 16755200 0.000000 -3.912971 3.572712 0 -2.722067 3.572712 0
+ L3 16755200 0.000000 -3.232454 1.871421 0 -4.253229 1.701292 0
+ L3 16755200 0.000000 -5.784392 0.340258 0 -4.763617 0.850646 0
+ L3 16755200 0.000000 -4.593487 -1.190904 0 -5.784392 -1.871421 0
+ L3 16755200 0.000000 -4.083100 -3.912971 0 -3.742842 -3.402583 0
+ L3 16755200 0.000000 -1.531162 -5.444133 0 -1.190904 -5.954521 0
+ L3 16755200 0.000000 0.850646 -4.593487 0 0.340258 -4.933746 0
+ L3 16755200 0.000000 3.232454 -5.103875 0 3.742842 -5.274004 0
+ L3 16755200 0.000000 5.954521 -2.381808 0 5.444133 -2.551937 0
+ F4 6815744 0.000000 5 0
+ -1.019267 3.227679 0
+ -0.922194 2.669509 0
+ 0.121341 2.208412 0
+ 0.412560 2.887923 0
+ -0.121341 3.397556 0
+ F4 6815744 0.000000 4 0
+ 3.324752 -0.121341 0
+ 2.062802 -0.412560 0
+ 1.795851 0.218414 0
+ 3.518898 0.315487 0
+ F4 6815744 0.000000 4 0
+ 0.800853 -3.227679 0
+ 0.169878 -2.742313 0
+ 0.339756 -1.723046 0
+ 0.728048 -1.868656 0
+ F4 6815744 0.000000 5 0
+ -2.548167 -0.291219 0
+ -2.208412 -0.048537 0
+ -1.043535 0.242683 0
+ -0.412560 -0.412560 0
+ -1.868656 -0.630975 0
+ L3 6815744 0.000000 2.381808 3.232454 0 1.531162 2.892196 0
+ L3 6815744 0.000000 1.531162 4.423358 0 1.190904 3.742842 0
+ L3 6815744 0.000000 -0.680517 4.253229 0 -0.340258 3.742842 0
+ L3 6815744 0.000000 -1.531162 1.871421 0 -0.680517 2.211679 0
+ L3 6815744 0.000000 -2.041550 1.020775 0 -1.361033 0.510387 0
+ L3 6815744 0.000000 -3.912971 0.340258 0 -3.062325 0.000000 0
+ L3 6815744 0.000000 -2.722067 -0.850646 0 -3.402583 -1.531162 0
+ L3 6815744 0.000000 -0.680517 -3.062325 0 -0.850646 -4.083100 0
+ L3 6815744 0.000000 -0.510387 -1.871421 0 -0.340258 -2.551937 0
+ L3 6815744 0.000000 1.190904 -3.062325 0 1.531162 -4.083100 0
+ L3 6815744 0.000000 2.041550 -2.892196 0 3.062325 -3.402583 0
+ L3 6815744 0.000000 4.593487 -1.190904 0 3.742842 -1.361033 0
+ L3 6815744 0.000000 4.593487 -2.722067 0 3.742842 -2.381808 0
+ L3 6815744 0.000000 4.933746 -2.041550 0 4.083100 -1.871421 0
+ L3 6815744 0.000000 2.041550 -4.933746 0 1.871421 -4.253229 0
+ L3 6815744 0.000000 3.062325 -4.423358 0 2.551937 -3.912971 0
+ L3 6815744 0.000000 5.103875 0.850646 0 4.083100 1.020775 0
+ L3 6815744 0.000000 5.103875 1.701292 0 4.253229 1.531162 0
+ L3 6815744 0.000000 -1.701292 -4.763617 0 -1.531162 -4.083100 0
+ L3 6815744 0.000000 -3.742842 -2.381808 0 -3.232454 -2.041550 0
+ L3 6815744 0.000000 2.381808 5.444133 0 2.041550 4.593487 0
+ L3 6815744 0.000000 3.062325 4.933746 0 2.551937 4.423358 0
+ L3 11184640 0.000000 2.381808 -4.593487 0 2.041550 -3.572712 0
+ L3 14915328 0.000000 2.722067 4.083100 0 2.211679 3.742842 0
+ L3 14915328 0.000000 -3.062325 0.850646 0 -2.381808 0.510387 0
+ F4 16755200 0.000000 4 0
+ 2.620972 2.693777 0
+ 1.553169 2.378289 0
+ 1.431827 1.577437 0
+ 2.135607 1.868656 0
+ F4 16755200 0.000000 3 0
+ 2.960728 -2.426826 0
+ 2.620972 -1.674510 0
+ 2.087070 -2.135607 0
+ F4 16755200 0.000000 4 0
+ -2.232680 -2.815118 0
+ -1.553169 -2.645240 0
+ -1.067803 -1.504632 0
+ -1.820120 -1.698778 0
+ L3 16755200 0.000000 0.340258 3.742842 0 0.680517 3.232454 0
+ L3 16755200 0.000000 -2.041550 2.722067 0 -1.361033 2.722067 0
+ L3 16755200 0.000000 -3.062325 -2.381808 0 -2.551937 -1.701292 0
+ L3 16755200 0.000000 -1.871421 -3.742842 0 -1.361033 -3.062325 0
+ L3 16755200 0.000000 4.253229 2.211679 0 3.402583 1.701292 0
+ END$SEGS
+STRUCTURE 144 3 0 0 0 A 2 57.000000 213.500000 0 0.000000 "Lg Fall 14"" Fall-14b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.234619 4.017274 0
+ -3.633905 6.288724 0
+ -2.282299 6.870665 0
+ -0.761741 4.993434 0
+ 0.984083 6.626625 0
+ 3.086582 5.631693 0
+ 2.598502 -5.537831 0
+ 0.608637 -6.589081 0
+ -0.217344 -5.312564 0
+ -1.888080 -5.331336 0
+ -2.301071 -6.626625 0
+ -4.872877 -5.800644 0
+ -4.553748 -4.280087 0
+ -6.675019 -4.129908 0
+ -7.763813 -1.933548 0
+ -6.562385 -0.694575 0
+ -8.139259 0.000000 0
+ -7.726268 1.576874 0
+ -6.055533 2.177588 0
+ -7.256961 3.153748 0
+ -6.280801 4.918345 0
+ F4 6815744 0.000000 28 0
+ -5.856961 3.153748 0
+ -4.880801 4.918345 0
+ -2.834619 4.017274 0
+ -2.233905 6.288724 0
+ -0.882299 6.870665 0
+ 0.638259 4.993434 0
+ 2.384083 6.626625 0
+ 4.486582 5.631693 0
+ 3.698145 3.547967 0
+ 6.213635 2.853391 0
+ 6.589081 0.488080 0
+ 5.275019 -0.732120 0
+ 6.513991 -2.496717 0
+ 5.575376 -4.073591 0
+ 4.054819 -3.510422 0
+ 3.998502 -5.537831 0
+ 2.008637 -6.589081 0
+ 1.182656 -5.312564 0
+ -0.488080 -5.331336 0
+ -0.901071 -6.626625 0
+ -3.472877 -5.800644 0
+ -3.153748 -4.280087 0
+ -5.275019 -4.129908 0
+ -6.363813 -1.933548 0
+ -5.162385 -0.694575 0
+ -6.739259 0.000000 0
+ -6.326268 1.576874 0
+ -4.655533 2.177588 0
+ F4 12410368 0.000000 26 0
+ 0.938615 4.392720 0
+ 2.252677 5.706782 0
+ 3.510422 4.937117 0
+ 2.947253 2.740757 0
+ 5.462742 2.046182 0
+ 5.631693 0.957388 0
+ 4.054819 -0.131406 0
+ 5.425198 -2.196360 0
+ 4.824484 -2.909708 0
+ 3.322699 -2.872163 0
+ 3.247610 -4.599216 0
+ 1.952320 -5.312564 0
+ 0.882299 -4.054819 0
+ -0.732120 -4.280087 0
+ -1.107566 -5.143613 0
+ -2.477945 -4.786939 0
+ -2.496717 -3.285154 0
+ -3.641828 -3.247610 0
+ -4.392720 -1.745825 0
+ -3.059886 -0.488080 0
+ -4.317631 0.168951 0
+ -4.111136 1.070022 0
+ -2.102499 1.445468 0
+ -2.872163 2.815846 0
+ -1.614419 3.792007 0
+ -1.107566 4.899573 0
+ L3 12410368 0.000000 -1.190904 5.784392 0 -0.510387 5.274004 0
+ L3 12410368 0.000000 -4.763617 3.232454 0 -4.253229 2.722067 0
+ L3 12410368 0.000000 -3.572712 2.892196 0 -2.892196 2.381808 0
+ L3 12410368 0.000000 -5.784392 1.361033 0 -4.593487 1.361033 0
+ L3 12410368 0.000000 -3.912971 -0.510387 0 -4.763617 -0.340258 0
+ L3 12410368 0.000000 -5.274004 -2.551937 0 -4.423358 -2.722067 0
+ L3 12410368 0.000000 -2.551937 -5.103875 0 -2.892196 -5.614262 0
+ L3 12410368 0.000000 -0.170129 -4.593487 0 0.000000 -5.103875 0
+ L3 12410368 0.000000 2.211679 -5.444133 0 2.041550 -6.124650 0
+ L3 12410368 0.000000 5.103875 -3.232454 0 5.444133 -3.742842 0
+ L3 12410368 0.000000 -4.763617 4.253229 0 -4.423358 3.572712 0
+ L3 14915328 0.000000 -5.444133 3.232454 0 -4.933746 3.572712 0
+ L3 16755200 0.000000 5.954521 0.510387 0 5.274004 0.340258 0
+ L3 16755200 0.000000 -1.701292 5.444133 0 -1.871421 4.593487 0
+ L3 16755200 0.000000 -3.912971 3.572712 0 -2.722067 3.572712 0
+ L3 16755200 0.000000 -3.232454 1.871421 0 -4.253229 1.701292 0
+ L3 16755200 0.000000 -5.784392 0.340258 0 -4.763617 0.850646 0
+ L3 16755200 0.000000 -4.593487 -1.190904 0 -5.784392 -1.871421 0
+ L3 16755200 0.000000 -4.083100 -3.912971 0 -3.742842 -3.402583 0
+ L3 16755200 0.000000 -1.531162 -5.444133 0 -1.190904 -5.954521 0
+ L3 16755200 0.000000 0.850646 -4.593487 0 0.340258 -4.933746 0
+ L3 16755200 0.000000 3.232454 -5.103875 0 3.742842 -5.274004 0
+ L3 16755200 0.000000 5.954521 -2.381808 0 5.444133 -2.551937 0
+ F4 6815744 0.000000 5 0
+ -1.019267 3.227679 0
+ -0.922194 2.669509 0
+ 0.121341 2.208412 0
+ 0.412560 2.887923 0
+ -0.121341 3.397556 0
+ F4 6815744 0.000000 4 0
+ 3.324752 -0.121341 0
+ 2.062802 -0.412560 0
+ 1.795851 0.218414 0
+ 3.518898 0.315487 0
+ F4 6815744 0.000000 4 0
+ 0.800853 -3.227679 0
+ 0.169878 -2.742313 0
+ 0.339756 -1.723046 0
+ 0.728048 -1.868656 0
+ F4 6815744 0.000000 5 0
+ -2.548167 -0.291219 0
+ -2.208412 -0.048537 0
+ -1.043535 0.242683 0
+ -0.412560 -0.412560 0
+ -1.868656 -0.630975 0
+ L3 6815744 0.000000 2.381808 3.232454 0 1.531162 2.892196 0
+ L3 6815744 0.000000 1.531162 4.423358 0 1.190904 3.742842 0
+ L3 6815744 0.000000 -0.680517 4.253229 0 -0.340258 3.742842 0
+ L3 6815744 0.000000 -1.531162 1.871421 0 -0.680517 2.211679 0
+ L3 6815744 0.000000 -2.041550 1.020775 0 -1.361033 0.510387 0
+ L3 6815744 0.000000 -3.912971 0.340258 0 -3.062325 0.000000 0
+ L3 6815744 0.000000 -2.722067 -0.850646 0 -3.402583 -1.531162 0
+ L3 6815744 0.000000 -0.680517 -3.062325 0 -0.850646 -4.083100 0
+ L3 6815744 0.000000 -0.510387 -1.871421 0 -0.340258 -2.551937 0
+ L3 6815744 0.000000 1.190904 -3.062325 0 1.531162 -4.083100 0
+ L3 6815744 0.000000 2.041550 -2.892196 0 3.062325 -3.402583 0
+ L3 6815744 0.000000 4.593487 -1.190904 0 3.742842 -1.361033 0
+ L3 6815744 0.000000 4.593487 -2.722067 0 3.742842 -2.381808 0
+ L3 6815744 0.000000 4.933746 -2.041550 0 4.083100 -1.871421 0
+ L3 6815744 0.000000 2.041550 -4.933746 0 1.871421 -4.253229 0
+ L3 6815744 0.000000 3.062325 -4.423358 0 2.551937 -3.912971 0
+ L3 6815744 0.000000 5.103875 0.850646 0 4.083100 1.020775 0
+ L3 6815744 0.000000 5.103875 1.701292 0 4.253229 1.531162 0
+ L3 6815744 0.000000 -1.701292 -4.763617 0 -1.531162 -4.083100 0
+ L3 6815744 0.000000 -3.742842 -2.381808 0 -3.232454 -2.041550 0
+ L3 6815744 0.000000 2.381808 5.444133 0 2.041550 4.593487 0
+ L3 6815744 0.000000 3.062325 4.933746 0 2.551937 4.423358 0
+ L3 11184640 0.000000 2.381808 -4.593487 0 2.041550 -3.572712 0
+ L3 14915328 0.000000 2.722067 4.083100 0 2.211679 3.742842 0
+ L3 14915328 0.000000 -3.062325 0.850646 0 -2.381808 0.510387 0
+ F4 16755200 0.000000 4 0
+ 2.620972 2.693777 0
+ 1.553169 2.378289 0
+ 1.431827 1.577437 0
+ 2.135607 1.868656 0
+ F4 16755200 0.000000 3 0
+ 2.960728 -2.426826 0
+ 2.620972 -1.674510 0
+ 2.087070 -2.135607 0
+ F4 16755200 0.000000 4 0
+ -2.232680 -2.815118 0
+ -1.553169 -2.645240 0
+ -1.067803 -1.504632 0
+ -1.820120 -1.698778 0
+ L3 16755200 0.000000 0.340258 3.742842 0 0.680517 3.232454 0
+ L3 16755200 0.000000 -2.041550 2.722067 0 -1.361033 2.722067 0
+ L3 16755200 0.000000 -3.062325 -2.381808 0 -2.551937 -1.701292 0
+ L3 16755200 0.000000 -1.871421 -3.742842 0 -1.361033 -3.062325 0
+ L3 16755200 0.000000 4.253229 2.211679 0 3.402583 1.701292 0
+ END$SEGS
+STRUCTURE 145 3 0 0 0 A 2 25.000000 150.500000 0 0.000000 "Lg Fall 14"" Fall-14b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.234619 4.017274 0
+ -3.633905 6.288724 0
+ -2.282299 6.870665 0
+ -0.761741 4.993434 0
+ 0.984083 6.626625 0
+ 3.086582 5.631693 0
+ 2.598502 -5.537831 0
+ 0.608637 -6.589081 0
+ -0.217344 -5.312564 0
+ -1.888080 -5.331336 0
+ -2.301071 -6.626625 0
+ -4.872877 -5.800644 0
+ -4.553748 -4.280087 0
+ -6.675019 -4.129908 0
+ -7.763813 -1.933548 0
+ -6.562385 -0.694575 0
+ -8.139259 0.000000 0
+ -7.726268 1.576874 0
+ -6.055533 2.177588 0
+ -7.256961 3.153748 0
+ -6.280801 4.918345 0
+ F4 6815744 0.000000 28 0
+ -5.856961 3.153748 0
+ -4.880801 4.918345 0
+ -2.834619 4.017274 0
+ -2.233905 6.288724 0
+ -0.882299 6.870665 0
+ 0.638259 4.993434 0
+ 2.384083 6.626625 0
+ 4.486582 5.631693 0
+ 3.698145 3.547967 0
+ 6.213635 2.853391 0
+ 6.589081 0.488080 0
+ 5.275019 -0.732120 0
+ 6.513991 -2.496717 0
+ 5.575376 -4.073591 0
+ 4.054819 -3.510422 0
+ 3.998502 -5.537831 0
+ 2.008637 -6.589081 0
+ 1.182656 -5.312564 0
+ -0.488080 -5.331336 0
+ -0.901071 -6.626625 0
+ -3.472877 -5.800644 0
+ -3.153748 -4.280087 0
+ -5.275019 -4.129908 0
+ -6.363813 -1.933548 0
+ -5.162385 -0.694575 0
+ -6.739259 0.000000 0
+ -6.326268 1.576874 0
+ -4.655533 2.177588 0
+ F4 12410368 0.000000 26 0
+ 0.938615 4.392720 0
+ 2.252677 5.706782 0
+ 3.510422 4.937117 0
+ 2.947253 2.740757 0
+ 5.462742 2.046182 0
+ 5.631693 0.957388 0
+ 4.054819 -0.131406 0
+ 5.425198 -2.196360 0
+ 4.824484 -2.909708 0
+ 3.322699 -2.872163 0
+ 3.247610 -4.599216 0
+ 1.952320 -5.312564 0
+ 0.882299 -4.054819 0
+ -0.732120 -4.280087 0
+ -1.107566 -5.143613 0
+ -2.477945 -4.786939 0
+ -2.496717 -3.285154 0
+ -3.641828 -3.247610 0
+ -4.392720 -1.745825 0
+ -3.059886 -0.488080 0
+ -4.317631 0.168951 0
+ -4.111136 1.070022 0
+ -2.102499 1.445468 0
+ -2.872163 2.815846 0
+ -1.614419 3.792007 0
+ -1.107566 4.899573 0
+ L3 12410368 0.000000 -1.190904 5.784392 0 -0.510387 5.274004 0
+ L3 12410368 0.000000 -4.763617 3.232454 0 -4.253229 2.722067 0
+ L3 12410368 0.000000 -3.572712 2.892196 0 -2.892196 2.381808 0
+ L3 12410368 0.000000 -5.784392 1.361033 0 -4.593487 1.361033 0
+ L3 12410368 0.000000 -3.912971 -0.510387 0 -4.763617 -0.340258 0
+ L3 12410368 0.000000 -5.274004 -2.551937 0 -4.423358 -2.722067 0
+ L3 12410368 0.000000 -2.551937 -5.103875 0 -2.892196 -5.614262 0
+ L3 12410368 0.000000 -0.170129 -4.593487 0 0.000000 -5.103875 0
+ L3 12410368 0.000000 2.211679 -5.444133 0 2.041550 -6.124650 0
+ L3 12410368 0.000000 5.103875 -3.232454 0 5.444133 -3.742842 0
+ L3 12410368 0.000000 -4.763617 4.253229 0 -4.423358 3.572712 0
+ L3 14915328 0.000000 -5.444133 3.232454 0 -4.933746 3.572712 0
+ L3 16755200 0.000000 5.954521 0.510387 0 5.274004 0.340258 0
+ L3 16755200 0.000000 -1.701292 5.444133 0 -1.871421 4.593487 0
+ L3 16755200 0.000000 -3.912971 3.572712 0 -2.722067 3.572712 0
+ L3 16755200 0.000000 -3.232454 1.871421 0 -4.253229 1.701292 0
+ L3 16755200 0.000000 -5.784392 0.340258 0 -4.763617 0.850646 0
+ L3 16755200 0.000000 -4.593487 -1.190904 0 -5.784392 -1.871421 0
+ L3 16755200 0.000000 -4.083100 -3.912971 0 -3.742842 -3.402583 0
+ L3 16755200 0.000000 -1.531162 -5.444133 0 -1.190904 -5.954521 0
+ L3 16755200 0.000000 0.850646 -4.593487 0 0.340258 -4.933746 0
+ L3 16755200 0.000000 3.232454 -5.103875 0 3.742842 -5.274004 0
+ L3 16755200 0.000000 5.954521 -2.381808 0 5.444133 -2.551937 0
+ F4 6815744 0.000000 5 0
+ -1.019267 3.227679 0
+ -0.922194 2.669509 0
+ 0.121341 2.208412 0
+ 0.412560 2.887923 0
+ -0.121341 3.397556 0
+ F4 6815744 0.000000 4 0
+ 3.324752 -0.121341 0
+ 2.062802 -0.412560 0
+ 1.795851 0.218414 0
+ 3.518898 0.315487 0
+ F4 6815744 0.000000 4 0
+ 0.800853 -3.227679 0
+ 0.169878 -2.742313 0
+ 0.339756 -1.723046 0
+ 0.728048 -1.868656 0
+ F4 6815744 0.000000 5 0
+ -2.548167 -0.291219 0
+ -2.208412 -0.048537 0
+ -1.043535 0.242683 0
+ -0.412560 -0.412560 0
+ -1.868656 -0.630975 0
+ L3 6815744 0.000000 2.381808 3.232454 0 1.531162 2.892196 0
+ L3 6815744 0.000000 1.531162 4.423358 0 1.190904 3.742842 0
+ L3 6815744 0.000000 -0.680517 4.253229 0 -0.340258 3.742842 0
+ L3 6815744 0.000000 -1.531162 1.871421 0 -0.680517 2.211679 0
+ L3 6815744 0.000000 -2.041550 1.020775 0 -1.361033 0.510387 0
+ L3 6815744 0.000000 -3.912971 0.340258 0 -3.062325 0.000000 0
+ L3 6815744 0.000000 -2.722067 -0.850646 0 -3.402583 -1.531162 0
+ L3 6815744 0.000000 -0.680517 -3.062325 0 -0.850646 -4.083100 0
+ L3 6815744 0.000000 -0.510387 -1.871421 0 -0.340258 -2.551937 0
+ L3 6815744 0.000000 1.190904 -3.062325 0 1.531162 -4.083100 0
+ L3 6815744 0.000000 2.041550 -2.892196 0 3.062325 -3.402583 0
+ L3 6815744 0.000000 4.593487 -1.190904 0 3.742842 -1.361033 0
+ L3 6815744 0.000000 4.593487 -2.722067 0 3.742842 -2.381808 0
+ L3 6815744 0.000000 4.933746 -2.041550 0 4.083100 -1.871421 0
+ L3 6815744 0.000000 2.041550 -4.933746 0 1.871421 -4.253229 0
+ L3 6815744 0.000000 3.062325 -4.423358 0 2.551937 -3.912971 0
+ L3 6815744 0.000000 5.103875 0.850646 0 4.083100 1.020775 0
+ L3 6815744 0.000000 5.103875 1.701292 0 4.253229 1.531162 0
+ L3 6815744 0.000000 -1.701292 -4.763617 0 -1.531162 -4.083100 0
+ L3 6815744 0.000000 -3.742842 -2.381808 0 -3.232454 -2.041550 0
+ L3 6815744 0.000000 2.381808 5.444133 0 2.041550 4.593487 0
+ L3 6815744 0.000000 3.062325 4.933746 0 2.551937 4.423358 0
+ L3 11184640 0.000000 2.381808 -4.593487 0 2.041550 -3.572712 0
+ L3 14915328 0.000000 2.722067 4.083100 0 2.211679 3.742842 0
+ L3 14915328 0.000000 -3.062325 0.850646 0 -2.381808 0.510387 0
+ F4 16755200 0.000000 4 0
+ 2.620972 2.693777 0
+ 1.553169 2.378289 0
+ 1.431827 1.577437 0
+ 2.135607 1.868656 0
+ F4 16755200 0.000000 3 0
+ 2.960728 -2.426826 0
+ 2.620972 -1.674510 0
+ 2.087070 -2.135607 0
+ F4 16755200 0.000000 4 0
+ -2.232680 -2.815118 0
+ -1.553169 -2.645240 0
+ -1.067803 -1.504632 0
+ -1.820120 -1.698778 0
+ L3 16755200 0.000000 0.340258 3.742842 0 0.680517 3.232454 0
+ L3 16755200 0.000000 -2.041550 2.722067 0 -1.361033 2.722067 0
+ L3 16755200 0.000000 -3.062325 -2.381808 0 -2.551937 -1.701292 0
+ L3 16755200 0.000000 -1.871421 -3.742842 0 -1.361033 -3.062325 0
+ L3 16755200 0.000000 4.253229 2.211679 0 3.402583 1.701292 0
+ END$SEGS
+STRUCTURE 146 3 0 0 0 A 2 10.500000 142.500000 0 0.000000 "Lg Fall 16"" Fall-16a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.839564 -4.591171 0
+ -4.153034 -7.187113 0
+ -2.608341 -7.852189 0
+ -0.870562 -5.706782 0
+ 1.124667 -7.573286 0
+ 3.527522 -6.436220 0
+ 2.969717 6.328950 0
+ 0.695585 7.530378 0
+ -0.248394 6.071501 0
+ -2.157806 6.092955 0
+ -2.629795 7.573286 0
+ -5.569003 6.629307 0
+ -5.204283 4.891528 0
+ -7.628593 4.719895 0
+ -8.872929 2.209769 0
+ -7.499869 0.793801 0
+ -9.302011 0.000000 0
+ -8.830021 -1.802142 0
+ -6.920609 -2.488672 0
+ -8.293669 -3.604283 0
+ -7.178058 -5.620966 0
+ F4 6842368 0.000000 28 0
+ -6.693669 -3.604283 0
+ -5.578058 -5.620966 0
+ -3.239564 -4.591171 0
+ -2.553034 -7.187113 0
+ -1.008341 -7.852189 0
+ 0.729438 -5.706782 0
+ 2.724667 -7.573286 0
+ 5.127522 -6.436220 0
+ 4.226451 -4.054819 0
+ 7.101297 -3.261018 0
+ 7.530378 -0.557806 0
+ 6.028593 0.836709 0
+ 7.444562 2.853391 0
+ 6.371858 4.655533 0
+ 4.634079 4.011911 0
+ 4.569717 6.328950 0
+ 2.295585 7.530378 0
+ 1.351606 6.071501 0
+ -0.557806 6.092955 0
+ -1.029795 7.573286 0
+ -3.969003 6.629307 0
+ -3.604283 4.891528 0
+ -6.028593 4.719895 0
+ -7.272929 2.209769 0
+ -5.899869 0.793801 0
+ -7.702011 0.000000 0
+ -7.230021 -1.802142 0
+ -5.320609 -2.488672 0
+ F4 12434688 0.000000 26 0
+ 1.072703 -5.020252 0
+ 2.574488 -6.522037 0
+ 4.011911 -5.642420 0
+ 3.368289 -3.132294 0
+ 6.243134 -2.338493 0
+ 6.436220 -1.094157 0
+ 4.634079 0.150178 0
+ 6.200226 2.510126 0
+ 5.513696 3.325381 0
+ 3.797370 3.282472 0
+ 3.711554 5.256247 0
+ 2.231223 6.071501 0
+ 1.008341 4.634079 0
+ -0.836709 4.891528 0
+ -1.265790 5.878415 0
+ -2.831937 5.470787 0
+ -2.853391 3.754462 0
+ -4.162089 3.711554 0
+ -5.020252 1.995228 0
+ -3.497013 0.557806 0
+ -4.934436 -0.193087 0
+ -4.698441 -1.222882 0
+ -2.402856 -1.651963 0
+ -3.282472 -3.218110 0
+ -1.845050 -4.333722 0
+ -1.265790 -5.599512 0
+ L3 12434688 0.000000 -1.944333 -6.221867 0 -2.138767 -5.249700 0
+ L3 12434688 0.000000 -4.083100 -3.305367 0 -3.305367 -2.722067 0
+ L3 12434688 0.000000 -6.610733 -0.388867 0 -5.444133 -0.972167 0
+ L3 12434688 0.000000 -4.471967 0.583300 0 -5.444133 0.388867 0
+ L3 12434688 0.000000 -6.027433 2.916500 0 -5.055267 3.110933 0
+ L3 12434688 0.000000 -2.916500 5.833000 0 -3.305367 6.416300 0
+ L3 12434688 0.000000 0.972167 5.249700 0 0.388867 5.638567 0
+ L3 12434688 0.000000 3.694233 5.833000 0 4.277533 6.027433 0
+ L3 12434688 0.000000 6.805167 2.722067 0 6.221867 2.916500 0
+ L3 12434688 0.000000 -5.444133 -4.860833 0 -5.055267 -4.083100 0
+ L3 12434688 0.000000 -6.221867 -3.694233 0 -5.638567 -4.083100 0
+ L3 16755200 0.000000 -1.361033 -6.610733 0 -0.583300 -6.027433 0
+ L3 16755200 0.000000 -4.471967 -4.083100 0 -3.110933 -4.083100 0
+ L3 16755200 0.000000 -5.444133 -3.694233 0 -4.860833 -3.110933 0
+ L3 16755200 0.000000 -3.694233 -2.138767 0 -4.860833 -1.944333 0
+ L3 16755200 0.000000 -6.610733 -1.555467 0 -5.249700 -1.555467 0
+ L3 16755200 0.000000 -5.249700 1.361033 0 -6.610733 2.138767 0
+ L3 16755200 0.000000 -4.666400 4.471967 0 -4.277533 3.888667 0
+ L3 16755200 0.000000 -1.749900 6.221867 0 -1.361033 6.805167 0
+ L3 16755200 0.000000 -0.194433 5.249700 0 0.000000 5.833000 0
+ L3 16755200 0.000000 2.527633 6.221867 0 2.333200 6.999600 0
+ L3 16755200 0.000000 5.833000 3.694233 0 6.221867 4.277533 0
+ L3 16755200 0.000000 6.805167 -0.583300 0 6.027433 -0.388867 0
+ F4 6842368 0.000000 4 0
+ 2.995397 -3.078602 0
+ 1.775050 -2.718045 0
+ 1.636374 -1.802785 0
+ 2.440694 -2.135607 0
+ F4 6842368 0.000000 4 0
+ 3.799716 0.138676 0
+ 2.357488 0.471498 0
+ 2.052401 -0.249616 0
+ 4.021597 -0.360557 0
+ F4 6842368 0.000000 4 0
+ 0.915260 3.688776 0
+ 0.194146 3.134072 0
+ 0.388292 1.969196 0
+ 0.832055 2.135607 0
+ F4 6842368 0.000000 5 0
+ -2.912191 0.332822 0
+ -2.523899 0.055470 0
+ -1.192612 -0.277352 0
+ -0.471498 0.471498 0
+ -2.135607 0.721114 0
+ L3 6842368 0.000000 0.388867 -4.277533 0 0.777733 -3.694233 0
+ L3 6842368 0.000000 2.722067 -3.694233 0 1.749900 -3.305367 0
+ L3 6842368 0.000000 3.110933 -4.666400 0 2.527633 -4.277533 0
+ L3 6842368 0.000000 1.749900 -5.055267 0 1.361033 -4.277533 0
+ L3 6842368 0.000000 -0.777733 -4.860833 0 -0.388867 -4.277533 0
+ L3 6842368 0.000000 -2.333200 -3.110933 0 -1.555467 -3.110933 0
+ L3 6842368 0.000000 -1.749900 -2.138767 0 -0.777733 -2.527633 0
+ L3 6842368 0.000000 -2.333200 -1.166600 0 -1.555467 -0.583300 0
+ L3 6842368 0.000000 -3.499800 -0.972167 0 -2.722067 -0.583300 0
+ L3 6842368 0.000000 -4.471967 -0.388867 0 -3.499800 0.000000 0
+ L3 6842368 0.000000 -3.110933 0.972167 0 -3.888667 1.749900 0
+ L3 6842368 0.000000 -3.499800 2.722067 0 -2.916500 1.944333 0
+ L3 6842368 0.000000 -2.138767 4.277533 0 -1.555467 3.499800 0
+ L3 6842368 0.000000 -0.777733 3.499800 0 -0.972167 4.666400 0
+ L3 6842368 0.000000 -0.583300 2.138767 0 -0.388867 2.916500 0
+ L3 6842368 0.000000 1.361033 3.499800 0 1.749900 4.666400 0
+ L3 6842368 0.000000 2.333200 3.305367 0 3.499800 3.888667 0
+ L3 6842368 0.000000 5.249700 1.361033 0 4.277533 1.555467 0
+ L3 6842368 0.000000 5.249700 3.110933 0 4.277533 2.722067 0
+ L3 6842368 0.000000 5.638567 2.333200 0 4.666400 2.138767 0
+ L3 6842368 0.000000 2.333200 5.638567 0 2.138767 4.860833 0
+ L3 6842368 0.000000 3.499800 5.055267 0 2.916500 4.471967 0
+ L3 6842368 0.000000 2.722067 5.249700 0 2.333200 4.083100 0
+ L3 6842368 0.000000 5.833000 -0.972167 0 4.666400 -1.166600 0
+ L3 6842368 0.000000 4.860833 -2.527633 0 3.888667 -1.944333 0
+ L3 6842368 0.000000 5.833000 -1.944333 0 4.860833 -1.749900 0
+ L3 6842368 0.000000 -1.944333 5.444133 0 -1.749900 4.666400 0
+ L3 6842368 0.000000 -4.277533 2.722067 0 -3.694233 2.333200 0
+ L3 6842368 0.000000 2.722067 -6.221867 0 2.333200 -5.249700 0
+ L3 6842368 0.000000 3.499800 -5.638567 0 2.916500 -5.055267 0
+ F4 16755200 0.000000 5 0
+ -1.164876 -3.688776 0
+ -1.053936 -3.050867 0
+ 0.138676 -2.523899 0
+ 0.471498 -3.300483 0
+ -0.138676 -3.882922 0
+ F4 16755200 0.000000 3 0
+ 3.383689 2.773515 0
+ 2.995397 1.913726 0
+ 2.385223 2.440694 0
+ F4 16755200 0.000000 4 0
+ -2.551634 3.217278 0
+ -1.775050 3.023132 0
+ -1.220347 1.719580 0
+ -2.080137 1.941461 0
+ END$SEGS
+STRUCTURE 147 3 0 0 0 A 2 25.500000 192.000000 0 0.000000 "Lg Fall 16"" Fall-16a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.839564 -4.591171 0
+ -4.153034 -7.187113 0
+ -2.608341 -7.852189 0
+ -0.870562 -5.706782 0
+ 1.124667 -7.573286 0
+ 3.527522 -6.436220 0
+ 2.969717 6.328950 0
+ 0.695585 7.530378 0
+ -0.248394 6.071501 0
+ -2.157806 6.092955 0
+ -2.629795 7.573286 0
+ -5.569003 6.629307 0
+ -5.204283 4.891528 0
+ -7.628593 4.719895 0
+ -8.872929 2.209769 0
+ -7.499869 0.793801 0
+ -9.302011 0.000000 0
+ -8.830021 -1.802142 0
+ -6.920609 -2.488672 0
+ -8.293669 -3.604283 0
+ -7.178058 -5.620966 0
+ F4 6842368 0.000000 28 0
+ -6.693669 -3.604283 0
+ -5.578058 -5.620966 0
+ -3.239564 -4.591171 0
+ -2.553034 -7.187113 0
+ -1.008341 -7.852189 0
+ 0.729438 -5.706782 0
+ 2.724667 -7.573286 0
+ 5.127522 -6.436220 0
+ 4.226451 -4.054819 0
+ 7.101297 -3.261018 0
+ 7.530378 -0.557806 0
+ 6.028593 0.836709 0
+ 7.444562 2.853391 0
+ 6.371858 4.655533 0
+ 4.634079 4.011911 0
+ 4.569717 6.328950 0
+ 2.295585 7.530378 0
+ 1.351606 6.071501 0
+ -0.557806 6.092955 0
+ -1.029795 7.573286 0
+ -3.969003 6.629307 0
+ -3.604283 4.891528 0
+ -6.028593 4.719895 0
+ -7.272929 2.209769 0
+ -5.899869 0.793801 0
+ -7.702011 0.000000 0
+ -7.230021 -1.802142 0
+ -5.320609 -2.488672 0
+ F4 12434688 0.000000 26 0
+ 1.072703 -5.020252 0
+ 2.574488 -6.522037 0
+ 4.011911 -5.642420 0
+ 3.368289 -3.132294 0
+ 6.243134 -2.338493 0
+ 6.436220 -1.094157 0
+ 4.634079 0.150178 0
+ 6.200226 2.510126 0
+ 5.513696 3.325381 0
+ 3.797370 3.282472 0
+ 3.711554 5.256247 0
+ 2.231223 6.071501 0
+ 1.008341 4.634079 0
+ -0.836709 4.891528 0
+ -1.265790 5.878415 0
+ -2.831937 5.470787 0
+ -2.853391 3.754462 0
+ -4.162089 3.711554 0
+ -5.020252 1.995228 0
+ -3.497013 0.557806 0
+ -4.934436 -0.193087 0
+ -4.698441 -1.222882 0
+ -2.402856 -1.651963 0
+ -3.282472 -3.218110 0
+ -1.845050 -4.333722 0
+ -1.265790 -5.599512 0
+ L3 12434688 0.000000 -1.944333 -6.221867 0 -2.138767 -5.249700 0
+ L3 12434688 0.000000 -4.083100 -3.305367 0 -3.305367 -2.722067 0
+ L3 12434688 0.000000 -6.610733 -0.388867 0 -5.444133 -0.972167 0
+ L3 12434688 0.000000 -4.471967 0.583300 0 -5.444133 0.388867 0
+ L3 12434688 0.000000 -6.027433 2.916500 0 -5.055267 3.110933 0
+ L3 12434688 0.000000 -2.916500 5.833000 0 -3.305367 6.416300 0
+ L3 12434688 0.000000 0.972167 5.249700 0 0.388867 5.638567 0
+ L3 12434688 0.000000 3.694233 5.833000 0 4.277533 6.027433 0
+ L3 12434688 0.000000 6.805167 2.722067 0 6.221867 2.916500 0
+ L3 12434688 0.000000 -5.444133 -4.860833 0 -5.055267 -4.083100 0
+ L3 12434688 0.000000 -6.221867 -3.694233 0 -5.638567 -4.083100 0
+ L3 16755200 0.000000 -1.361033 -6.610733 0 -0.583300 -6.027433 0
+ L3 16755200 0.000000 -4.471967 -4.083100 0 -3.110933 -4.083100 0
+ L3 16755200 0.000000 -5.444133 -3.694233 0 -4.860833 -3.110933 0
+ L3 16755200 0.000000 -3.694233 -2.138767 0 -4.860833 -1.944333 0
+ L3 16755200 0.000000 -6.610733 -1.555467 0 -5.249700 -1.555467 0
+ L3 16755200 0.000000 -5.249700 1.361033 0 -6.610733 2.138767 0
+ L3 16755200 0.000000 -4.666400 4.471967 0 -4.277533 3.888667 0
+ L3 16755200 0.000000 -1.749900 6.221867 0 -1.361033 6.805167 0
+ L3 16755200 0.000000 -0.194433 5.249700 0 0.000000 5.833000 0
+ L3 16755200 0.000000 2.527633 6.221867 0 2.333200 6.999600 0
+ L3 16755200 0.000000 5.833000 3.694233 0 6.221867 4.277533 0
+ L3 16755200 0.000000 6.805167 -0.583300 0 6.027433 -0.388867 0
+ F4 6842368 0.000000 4 0
+ 2.995397 -3.078602 0
+ 1.775050 -2.718045 0
+ 1.636374 -1.802785 0
+ 2.440694 -2.135607 0
+ F4 6842368 0.000000 4 0
+ 3.799716 0.138676 0
+ 2.357488 0.471498 0
+ 2.052401 -0.249616 0
+ 4.021597 -0.360557 0
+ F4 6842368 0.000000 4 0
+ 0.915260 3.688776 0
+ 0.194146 3.134072 0
+ 0.388292 1.969196 0
+ 0.832055 2.135607 0
+ F4 6842368 0.000000 5 0
+ -2.912191 0.332822 0
+ -2.523899 0.055470 0
+ -1.192612 -0.277352 0
+ -0.471498 0.471498 0
+ -2.135607 0.721114 0
+ L3 6842368 0.000000 0.388867 -4.277533 0 0.777733 -3.694233 0
+ L3 6842368 0.000000 2.722067 -3.694233 0 1.749900 -3.305367 0
+ L3 6842368 0.000000 3.110933 -4.666400 0 2.527633 -4.277533 0
+ L3 6842368 0.000000 1.749900 -5.055267 0 1.361033 -4.277533 0
+ L3 6842368 0.000000 -0.777733 -4.860833 0 -0.388867 -4.277533 0
+ L3 6842368 0.000000 -2.333200 -3.110933 0 -1.555467 -3.110933 0
+ L3 6842368 0.000000 -1.749900 -2.138767 0 -0.777733 -2.527633 0
+ L3 6842368 0.000000 -2.333200 -1.166600 0 -1.555467 -0.583300 0
+ L3 6842368 0.000000 -3.499800 -0.972167 0 -2.722067 -0.583300 0
+ L3 6842368 0.000000 -4.471967 -0.388867 0 -3.499800 0.000000 0
+ L3 6842368 0.000000 -3.110933 0.972167 0 -3.888667 1.749900 0
+ L3 6842368 0.000000 -3.499800 2.722067 0 -2.916500 1.944333 0
+ L3 6842368 0.000000 -2.138767 4.277533 0 -1.555467 3.499800 0
+ L3 6842368 0.000000 -0.777733 3.499800 0 -0.972167 4.666400 0
+ L3 6842368 0.000000 -0.583300 2.138767 0 -0.388867 2.916500 0
+ L3 6842368 0.000000 1.361033 3.499800 0 1.749900 4.666400 0
+ L3 6842368 0.000000 2.333200 3.305367 0 3.499800 3.888667 0
+ L3 6842368 0.000000 5.249700 1.361033 0 4.277533 1.555467 0
+ L3 6842368 0.000000 5.249700 3.110933 0 4.277533 2.722067 0
+ L3 6842368 0.000000 5.638567 2.333200 0 4.666400 2.138767 0
+ L3 6842368 0.000000 2.333200 5.638567 0 2.138767 4.860833 0
+ L3 6842368 0.000000 3.499800 5.055267 0 2.916500 4.471967 0
+ L3 6842368 0.000000 2.722067 5.249700 0 2.333200 4.083100 0
+ L3 6842368 0.000000 5.833000 -0.972167 0 4.666400 -1.166600 0
+ L3 6842368 0.000000 4.860833 -2.527633 0 3.888667 -1.944333 0
+ L3 6842368 0.000000 5.833000 -1.944333 0 4.860833 -1.749900 0
+ L3 6842368 0.000000 -1.944333 5.444133 0 -1.749900 4.666400 0
+ L3 6842368 0.000000 -4.277533 2.722067 0 -3.694233 2.333200 0
+ L3 6842368 0.000000 2.722067 -6.221867 0 2.333200 -5.249700 0
+ L3 6842368 0.000000 3.499800 -5.638567 0 2.916500 -5.055267 0
+ F4 16755200 0.000000 5 0
+ -1.164876 -3.688776 0
+ -1.053936 -3.050867 0
+ 0.138676 -2.523899 0
+ 0.471498 -3.300483 0
+ -0.138676 -3.882922 0
+ F4 16755200 0.000000 3 0
+ 3.383689 2.773515 0
+ 2.995397 1.913726 0
+ 2.385223 2.440694 0
+ F4 16755200 0.000000 4 0
+ -2.551634 3.217278 0
+ -1.775050 3.023132 0
+ -1.220347 1.719580 0
+ -2.080137 1.941461 0
+ END$SEGS
+STRUCTURE 148 3 0 0 0 A 2 75.000000 175.000000 0 0.000000 "Lg Fall 16"" Fall-16a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.839564 -4.591171 0
+ -4.153034 -7.187113 0
+ -2.608341 -7.852189 0
+ -0.870562 -5.706782 0
+ 1.124667 -7.573286 0
+ 3.527522 -6.436220 0
+ 2.969717 6.328950 0
+ 0.695585 7.530378 0
+ -0.248394 6.071501 0
+ -2.157806 6.092955 0
+ -2.629795 7.573286 0
+ -5.569003 6.629307 0
+ -5.204283 4.891528 0
+ -7.628593 4.719895 0
+ -8.872929 2.209769 0
+ -7.499869 0.793801 0
+ -9.302011 0.000000 0
+ -8.830021 -1.802142 0
+ -6.920609 -2.488672 0
+ -8.293669 -3.604283 0
+ -7.178058 -5.620966 0
+ F4 6842368 0.000000 28 0
+ -6.693669 -3.604283 0
+ -5.578058 -5.620966 0
+ -3.239564 -4.591171 0
+ -2.553034 -7.187113 0
+ -1.008341 -7.852189 0
+ 0.729438 -5.706782 0
+ 2.724667 -7.573286 0
+ 5.127522 -6.436220 0
+ 4.226451 -4.054819 0
+ 7.101297 -3.261018 0
+ 7.530378 -0.557806 0
+ 6.028593 0.836709 0
+ 7.444562 2.853391 0
+ 6.371858 4.655533 0
+ 4.634079 4.011911 0
+ 4.569717 6.328950 0
+ 2.295585 7.530378 0
+ 1.351606 6.071501 0
+ -0.557806 6.092955 0
+ -1.029795 7.573286 0
+ -3.969003 6.629307 0
+ -3.604283 4.891528 0
+ -6.028593 4.719895 0
+ -7.272929 2.209769 0
+ -5.899869 0.793801 0
+ -7.702011 0.000000 0
+ -7.230021 -1.802142 0
+ -5.320609 -2.488672 0
+ F4 12434688 0.000000 26 0
+ 1.072703 -5.020252 0
+ 2.574488 -6.522037 0
+ 4.011911 -5.642420 0
+ 3.368289 -3.132294 0
+ 6.243134 -2.338493 0
+ 6.436220 -1.094157 0
+ 4.634079 0.150178 0
+ 6.200226 2.510126 0
+ 5.513696 3.325381 0
+ 3.797370 3.282472 0
+ 3.711554 5.256247 0
+ 2.231223 6.071501 0
+ 1.008341 4.634079 0
+ -0.836709 4.891528 0
+ -1.265790 5.878415 0
+ -2.831937 5.470787 0
+ -2.853391 3.754462 0
+ -4.162089 3.711554 0
+ -5.020252 1.995228 0
+ -3.497013 0.557806 0
+ -4.934436 -0.193087 0
+ -4.698441 -1.222882 0
+ -2.402856 -1.651963 0
+ -3.282472 -3.218110 0
+ -1.845050 -4.333722 0
+ -1.265790 -5.599512 0
+ L3 12434688 0.000000 -1.944333 -6.221867 0 -2.138767 -5.249700 0
+ L3 12434688 0.000000 -4.083100 -3.305367 0 -3.305367 -2.722067 0
+ L3 12434688 0.000000 -6.610733 -0.388867 0 -5.444133 -0.972167 0
+ L3 12434688 0.000000 -4.471967 0.583300 0 -5.444133 0.388867 0
+ L3 12434688 0.000000 -6.027433 2.916500 0 -5.055267 3.110933 0
+ L3 12434688 0.000000 -2.916500 5.833000 0 -3.305367 6.416300 0
+ L3 12434688 0.000000 0.972167 5.249700 0 0.388867 5.638567 0
+ L3 12434688 0.000000 3.694233 5.833000 0 4.277533 6.027433 0
+ L3 12434688 0.000000 6.805167 2.722067 0 6.221867 2.916500 0
+ L3 12434688 0.000000 -5.444133 -4.860833 0 -5.055267 -4.083100 0
+ L3 12434688 0.000000 -6.221867 -3.694233 0 -5.638567 -4.083100 0
+ L3 16755200 0.000000 -1.361033 -6.610733 0 -0.583300 -6.027433 0
+ L3 16755200 0.000000 -4.471967 -4.083100 0 -3.110933 -4.083100 0
+ L3 16755200 0.000000 -5.444133 -3.694233 0 -4.860833 -3.110933 0
+ L3 16755200 0.000000 -3.694233 -2.138767 0 -4.860833 -1.944333 0
+ L3 16755200 0.000000 -6.610733 -1.555467 0 -5.249700 -1.555467 0
+ L3 16755200 0.000000 -5.249700 1.361033 0 -6.610733 2.138767 0
+ L3 16755200 0.000000 -4.666400 4.471967 0 -4.277533 3.888667 0
+ L3 16755200 0.000000 -1.749900 6.221867 0 -1.361033 6.805167 0
+ L3 16755200 0.000000 -0.194433 5.249700 0 0.000000 5.833000 0
+ L3 16755200 0.000000 2.527633 6.221867 0 2.333200 6.999600 0
+ L3 16755200 0.000000 5.833000 3.694233 0 6.221867 4.277533 0
+ L3 16755200 0.000000 6.805167 -0.583300 0 6.027433 -0.388867 0
+ F4 6842368 0.000000 4 0
+ 2.995397 -3.078602 0
+ 1.775050 -2.718045 0
+ 1.636374 -1.802785 0
+ 2.440694 -2.135607 0
+ F4 6842368 0.000000 4 0
+ 3.799716 0.138676 0
+ 2.357488 0.471498 0
+ 2.052401 -0.249616 0
+ 4.021597 -0.360557 0
+ F4 6842368 0.000000 4 0
+ 0.915260 3.688776 0
+ 0.194146 3.134072 0
+ 0.388292 1.969196 0
+ 0.832055 2.135607 0
+ F4 6842368 0.000000 5 0
+ -2.912191 0.332822 0
+ -2.523899 0.055470 0
+ -1.192612 -0.277352 0
+ -0.471498 0.471498 0
+ -2.135607 0.721114 0
+ L3 6842368 0.000000 0.388867 -4.277533 0 0.777733 -3.694233 0
+ L3 6842368 0.000000 2.722067 -3.694233 0 1.749900 -3.305367 0
+ L3 6842368 0.000000 3.110933 -4.666400 0 2.527633 -4.277533 0
+ L3 6842368 0.000000 1.749900 -5.055267 0 1.361033 -4.277533 0
+ L3 6842368 0.000000 -0.777733 -4.860833 0 -0.388867 -4.277533 0
+ L3 6842368 0.000000 -2.333200 -3.110933 0 -1.555467 -3.110933 0
+ L3 6842368 0.000000 -1.749900 -2.138767 0 -0.777733 -2.527633 0
+ L3 6842368 0.000000 -2.333200 -1.166600 0 -1.555467 -0.583300 0
+ L3 6842368 0.000000 -3.499800 -0.972167 0 -2.722067 -0.583300 0
+ L3 6842368 0.000000 -4.471967 -0.388867 0 -3.499800 0.000000 0
+ L3 6842368 0.000000 -3.110933 0.972167 0 -3.888667 1.749900 0
+ L3 6842368 0.000000 -3.499800 2.722067 0 -2.916500 1.944333 0
+ L3 6842368 0.000000 -2.138767 4.277533 0 -1.555467 3.499800 0
+ L3 6842368 0.000000 -0.777733 3.499800 0 -0.972167 4.666400 0
+ L3 6842368 0.000000 -0.583300 2.138767 0 -0.388867 2.916500 0
+ L3 6842368 0.000000 1.361033 3.499800 0 1.749900 4.666400 0
+ L3 6842368 0.000000 2.333200 3.305367 0 3.499800 3.888667 0
+ L3 6842368 0.000000 5.249700 1.361033 0 4.277533 1.555467 0
+ L3 6842368 0.000000 5.249700 3.110933 0 4.277533 2.722067 0
+ L3 6842368 0.000000 5.638567 2.333200 0 4.666400 2.138767 0
+ L3 6842368 0.000000 2.333200 5.638567 0 2.138767 4.860833 0
+ L3 6842368 0.000000 3.499800 5.055267 0 2.916500 4.471967 0
+ L3 6842368 0.000000 2.722067 5.249700 0 2.333200 4.083100 0
+ L3 6842368 0.000000 5.833000 -0.972167 0 4.666400 -1.166600 0
+ L3 6842368 0.000000 4.860833 -2.527633 0 3.888667 -1.944333 0
+ L3 6842368 0.000000 5.833000 -1.944333 0 4.860833 -1.749900 0
+ L3 6842368 0.000000 -1.944333 5.444133 0 -1.749900 4.666400 0
+ L3 6842368 0.000000 -4.277533 2.722067 0 -3.694233 2.333200 0
+ L3 6842368 0.000000 2.722067 -6.221867 0 2.333200 -5.249700 0
+ L3 6842368 0.000000 3.499800 -5.638567 0 2.916500 -5.055267 0
+ F4 16755200 0.000000 5 0
+ -1.164876 -3.688776 0
+ -1.053936 -3.050867 0
+ 0.138676 -2.523899 0
+ 0.471498 -3.300483 0
+ -0.138676 -3.882922 0
+ F4 16755200 0.000000 3 0
+ 3.383689 2.773515 0
+ 2.995397 1.913726 0
+ 2.385223 2.440694 0
+ F4 16755200 0.000000 4 0
+ -2.551634 3.217278 0
+ -1.775050 3.023132 0
+ -1.220347 1.719580 0
+ -2.080137 1.941461 0
+ END$SEGS
+STRUCTURE 149 3 0 0 0 A 2 77.500000 222.000000 0 0.000000 "Lg Fall 16"" Fall-16b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.839564 4.591171 0
+ -4.153034 7.187113 0
+ -2.608341 7.852189 0
+ -0.870562 5.706782 0
+ 1.124667 7.573286 0
+ 3.527522 6.436220 0
+ 2.969717 -6.328950 0
+ 0.695585 -7.530378 0
+ -0.248394 -6.071501 0
+ -2.157806 -6.092955 0
+ -2.629795 -7.573286 0
+ -5.569003 -6.629307 0
+ -5.204283 -4.891528 0
+ -7.628593 -4.719895 0
+ -8.872929 -2.209769 0
+ -7.499869 -0.793801 0
+ -9.302011 0.000000 0
+ -8.830021 1.802142 0
+ -6.920609 2.488672 0
+ -8.293669 3.604283 0
+ -7.178058 5.620966 0
+ F4 6815744 0.000000 28 0
+ -6.693669 3.604283 0
+ -5.578058 5.620966 0
+ -3.239564 4.591171 0
+ -2.553034 7.187113 0
+ -1.008341 7.852189 0
+ 0.729438 5.706782 0
+ 2.724667 7.573286 0
+ 5.127522 6.436220 0
+ 4.226451 4.054819 0
+ 7.101297 3.261018 0
+ 7.530378 0.557806 0
+ 6.028593 -0.836709 0
+ 7.444562 -2.853391 0
+ 6.371858 -4.655533 0
+ 4.634079 -4.011911 0
+ 4.569717 -6.328950 0
+ 2.295585 -7.530378 0
+ 1.351606 -6.071501 0
+ -0.557806 -6.092955 0
+ -1.029795 -7.573286 0
+ -3.969003 -6.629307 0
+ -3.604283 -4.891528 0
+ -6.028593 -4.719895 0
+ -7.272929 -2.209769 0
+ -5.899869 -0.793801 0
+ -7.702011 0.000000 0
+ -7.230021 1.802142 0
+ -5.320609 2.488672 0
+ F4 12410368 0.000000 26 0
+ 1.072703 5.020252 0
+ 2.574488 6.522037 0
+ 4.011911 5.642420 0
+ 3.368289 3.132294 0
+ 6.243134 2.338493 0
+ 6.436220 1.094157 0
+ 4.634079 -0.150178 0
+ 6.200226 -2.510126 0
+ 5.513696 -3.325381 0
+ 3.797370 -3.282472 0
+ 3.711554 -5.256247 0
+ 2.231223 -6.071501 0
+ 1.008341 -4.634079 0
+ -0.836709 -4.891528 0
+ -1.265790 -5.878415 0
+ -2.831937 -5.470787 0
+ -2.853391 -3.754462 0
+ -4.162089 -3.711554 0
+ -5.020252 -1.995228 0
+ -3.497013 -0.557806 0
+ -4.934436 0.193087 0
+ -4.698441 1.222882 0
+ -2.402856 1.651963 0
+ -3.282472 3.218110 0
+ -1.845050 4.333722 0
+ -1.265790 5.599512 0
+ L3 12410368 0.000000 -1.361033 6.610733 0 -0.583300 6.027433 0
+ L3 12410368 0.000000 -5.444133 3.694233 0 -4.860833 3.110933 0
+ L3 12410368 0.000000 -4.083100 3.305367 0 -3.305367 2.722067 0
+ L3 12410368 0.000000 -6.610733 1.555467 0 -5.249700 1.555467 0
+ L3 12410368 0.000000 -4.471967 -0.583300 0 -5.444133 -0.388867 0
+ L3 12410368 0.000000 -6.027433 -2.916500 0 -5.055267 -3.110933 0
+ L3 12410368 0.000000 -2.916500 -5.833000 0 -3.305367 -6.416300 0
+ L3 12410368 0.000000 -0.194433 -5.249700 0 0.000000 -5.833000 0
+ L3 12410368 0.000000 2.527633 -6.221867 0 2.333200 -6.999600 0
+ L3 12410368 0.000000 5.833000 -3.694233 0 6.221867 -4.277533 0
+ L3 12410368 0.000000 -5.444133 4.860833 0 -5.055267 4.083100 0
+ L3 14915328 0.000000 -6.221867 3.694233 0 -5.638567 4.083100 0
+ L3 16755200 0.000000 6.805167 0.583300 0 6.027433 0.388867 0
+ L3 16755200 0.000000 -1.944333 6.221867 0 -2.138767 5.249700 0
+ L3 16755200 0.000000 -4.471967 4.083100 0 -3.110933 4.083100 0
+ L3 16755200 0.000000 -3.694233 2.138767 0 -4.860833 1.944333 0
+ L3 16755200 0.000000 -6.610733 0.388867 0 -5.444133 0.972167 0
+ L3 16755200 0.000000 -5.249700 -1.361033 0 -6.610733 -2.138767 0
+ L3 16755200 0.000000 -4.666400 -4.471967 0 -4.277533 -3.888667 0
+ L3 16755200 0.000000 -1.749900 -6.221867 0 -1.361033 -6.805167 0
+ L3 16755200 0.000000 0.972167 -5.249700 0 0.388867 -5.638567 0
+ L3 16755200 0.000000 3.694233 -5.833000 0 4.277533 -6.027433 0
+ L3 16755200 0.000000 6.805167 -2.722067 0 6.221867 -2.916500 0
+ F4 6815744 0.000000 5 0
+ -1.164876 3.688776 0
+ -1.053936 3.050867 0
+ 0.138676 2.523899 0
+ 0.471498 3.300483 0
+ -0.138676 3.882922 0
+ F4 6815744 0.000000 4 0
+ 3.799716 -0.138676 0
+ 2.357488 -0.471498 0
+ 2.052401 0.249616 0
+ 4.021597 0.360557 0
+ F4 6815744 0.000000 4 0
+ 0.915260 -3.688776 0
+ 0.194146 -3.134072 0
+ 0.388292 -1.969196 0
+ 0.832055 -2.135607 0
+ F4 6815744 0.000000 5 0
+ -2.912191 -0.332822 0
+ -2.523899 -0.055470 0
+ -1.192612 0.277352 0
+ -0.471498 -0.471498 0
+ -2.135607 -0.721114 0
+ L3 6815744 0.000000 2.722067 3.694233 0 1.749900 3.305367 0
+ L3 6815744 0.000000 1.749900 5.055267 0 1.361033 4.277533 0
+ L3 6815744 0.000000 -0.777733 4.860833 0 -0.388867 4.277533 0
+ L3 6815744 0.000000 -1.749900 2.138767 0 -0.777733 2.527633 0
+ L3 6815744 0.000000 -2.333200 1.166600 0 -1.555467 0.583300 0
+ L3 6815744 0.000000 -4.471967 0.388867 0 -3.499800 0.000000 0
+ L3 6815744 0.000000 -3.110933 -0.972167 0 -3.888667 -1.749900 0
+ L3 6815744 0.000000 -0.777733 -3.499800 0 -0.972167 -4.666400 0
+ L3 6815744 0.000000 -0.583300 -2.138767 0 -0.388867 -2.916500 0
+ L3 6815744 0.000000 1.361033 -3.499800 0 1.749900 -4.666400 0
+ L3 6815744 0.000000 2.333200 -3.305367 0 3.499800 -3.888667 0
+ L3 6815744 0.000000 5.249700 -1.361033 0 4.277533 -1.555467 0
+ L3 6815744 0.000000 5.249700 -3.110933 0 4.277533 -2.722067 0
+ L3 6815744 0.000000 5.638567 -2.333200 0 4.666400 -2.138767 0
+ L3 6815744 0.000000 2.333200 -5.638567 0 2.138767 -4.860833 0
+ L3 6815744 0.000000 3.499800 -5.055267 0 2.916500 -4.471967 0
+ L3 6815744 0.000000 5.833000 0.972167 0 4.666400 1.166600 0
+ L3 6815744 0.000000 5.833000 1.944333 0 4.860833 1.749900 0
+ L3 6815744 0.000000 -1.944333 -5.444133 0 -1.749900 -4.666400 0
+ L3 6815744 0.000000 -4.277533 -2.722067 0 -3.694233 -2.333200 0
+ L3 6815744 0.000000 2.722067 6.221867 0 2.333200 5.249700 0
+ L3 6815744 0.000000 3.499800 5.638567 0 2.916500 5.055267 0
+ L3 11184640 0.000000 2.722067 -5.249700 0 2.333200 -4.083100 0
+ L3 14915328 0.000000 3.110933 4.666400 0 2.527633 4.277533 0
+ L3 14915328 0.000000 -3.499800 0.972167 0 -2.722067 0.583300 0
+ F4 16755200 0.000000 4 0
+ 2.995397 3.078602 0
+ 1.775050 2.718045 0
+ 1.636374 1.802785 0
+ 2.440694 2.135607 0
+ F4 16755200 0.000000 3 0
+ 3.383689 -2.773515 0
+ 2.995397 -1.913726 0
+ 2.385223 -2.440694 0
+ F4 16755200 0.000000 4 0
+ -2.551634 -3.217278 0
+ -1.775050 -3.023132 0
+ -1.220347 -1.719580 0
+ -2.080137 -1.941461 0
+ L3 16755200 0.000000 0.388867 4.277533 0 0.777733 3.694233 0
+ L3 16755200 0.000000 -2.333200 3.110933 0 -1.555467 3.110933 0
+ L3 16755200 0.000000 -3.499800 -2.722067 0 -2.916500 -1.944333 0
+ L3 16755200 0.000000 -2.138767 -4.277533 0 -1.555467 -3.499800 0
+ L3 16755200 0.000000 4.860833 2.527633 0 3.888667 1.944333 0
+ END$SEGS
+STRUCTURE 150 3 0 0 0 A 2 63.000000 228.000000 0 0.000000 "Lg Fall 16"" Fall-16b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.839564 4.591171 0
+ -4.153034 7.187113 0
+ -2.608341 7.852189 0
+ -0.870562 5.706782 0
+ 1.124667 7.573286 0
+ 3.527522 6.436220 0
+ 2.969717 -6.328950 0
+ 0.695585 -7.530378 0
+ -0.248394 -6.071501 0
+ -2.157806 -6.092955 0
+ -2.629795 -7.573286 0
+ -5.569003 -6.629307 0
+ -5.204283 -4.891528 0
+ -7.628593 -4.719895 0
+ -8.872929 -2.209769 0
+ -7.499869 -0.793801 0
+ -9.302011 0.000000 0
+ -8.830021 1.802142 0
+ -6.920609 2.488672 0
+ -8.293669 3.604283 0
+ -7.178058 5.620966 0
+ F4 6815744 0.000000 28 0
+ -6.693669 3.604283 0
+ -5.578058 5.620966 0
+ -3.239564 4.591171 0
+ -2.553034 7.187113 0
+ -1.008341 7.852189 0
+ 0.729438 5.706782 0
+ 2.724667 7.573286 0
+ 5.127522 6.436220 0
+ 4.226451 4.054819 0
+ 7.101297 3.261018 0
+ 7.530378 0.557806 0
+ 6.028593 -0.836709 0
+ 7.444562 -2.853391 0
+ 6.371858 -4.655533 0
+ 4.634079 -4.011911 0
+ 4.569717 -6.328950 0
+ 2.295585 -7.530378 0
+ 1.351606 -6.071501 0
+ -0.557806 -6.092955 0
+ -1.029795 -7.573286 0
+ -3.969003 -6.629307 0
+ -3.604283 -4.891528 0
+ -6.028593 -4.719895 0
+ -7.272929 -2.209769 0
+ -5.899869 -0.793801 0
+ -7.702011 0.000000 0
+ -7.230021 1.802142 0
+ -5.320609 2.488672 0
+ F4 12410368 0.000000 26 0
+ 1.072703 5.020252 0
+ 2.574488 6.522037 0
+ 4.011911 5.642420 0
+ 3.368289 3.132294 0
+ 6.243134 2.338493 0
+ 6.436220 1.094157 0
+ 4.634079 -0.150178 0
+ 6.200226 -2.510126 0
+ 5.513696 -3.325381 0
+ 3.797370 -3.282472 0
+ 3.711554 -5.256247 0
+ 2.231223 -6.071501 0
+ 1.008341 -4.634079 0
+ -0.836709 -4.891528 0
+ -1.265790 -5.878415 0
+ -2.831937 -5.470787 0
+ -2.853391 -3.754462 0
+ -4.162089 -3.711554 0
+ -5.020252 -1.995228 0
+ -3.497013 -0.557806 0
+ -4.934436 0.193087 0
+ -4.698441 1.222882 0
+ -2.402856 1.651963 0
+ -3.282472 3.218110 0
+ -1.845050 4.333722 0
+ -1.265790 5.599512 0
+ L3 12410368 0.000000 -1.361033 6.610733 0 -0.583300 6.027433 0
+ L3 12410368 0.000000 -5.444133 3.694233 0 -4.860833 3.110933 0
+ L3 12410368 0.000000 -4.083100 3.305367 0 -3.305367 2.722067 0
+ L3 12410368 0.000000 -6.610733 1.555467 0 -5.249700 1.555467 0
+ L3 12410368 0.000000 -4.471967 -0.583300 0 -5.444133 -0.388867 0
+ L3 12410368 0.000000 -6.027433 -2.916500 0 -5.055267 -3.110933 0
+ L3 12410368 0.000000 -2.916500 -5.833000 0 -3.305367 -6.416300 0
+ L3 12410368 0.000000 -0.194433 -5.249700 0 0.000000 -5.833000 0
+ L3 12410368 0.000000 2.527633 -6.221867 0 2.333200 -6.999600 0
+ L3 12410368 0.000000 5.833000 -3.694233 0 6.221867 -4.277533 0
+ L3 12410368 0.000000 -5.444133 4.860833 0 -5.055267 4.083100 0
+ L3 14915328 0.000000 -6.221867 3.694233 0 -5.638567 4.083100 0
+ L3 16755200 0.000000 6.805167 0.583300 0 6.027433 0.388867 0
+ L3 16755200 0.000000 -1.944333 6.221867 0 -2.138767 5.249700 0
+ L3 16755200 0.000000 -4.471967 4.083100 0 -3.110933 4.083100 0
+ L3 16755200 0.000000 -3.694233 2.138767 0 -4.860833 1.944333 0
+ L3 16755200 0.000000 -6.610733 0.388867 0 -5.444133 0.972167 0
+ L3 16755200 0.000000 -5.249700 -1.361033 0 -6.610733 -2.138767 0
+ L3 16755200 0.000000 -4.666400 -4.471967 0 -4.277533 -3.888667 0
+ L3 16755200 0.000000 -1.749900 -6.221867 0 -1.361033 -6.805167 0
+ L3 16755200 0.000000 0.972167 -5.249700 0 0.388867 -5.638567 0
+ L3 16755200 0.000000 3.694233 -5.833000 0 4.277533 -6.027433 0
+ L3 16755200 0.000000 6.805167 -2.722067 0 6.221867 -2.916500 0
+ F4 6815744 0.000000 5 0
+ -1.164876 3.688776 0
+ -1.053936 3.050867 0
+ 0.138676 2.523899 0
+ 0.471498 3.300483 0
+ -0.138676 3.882922 0
+ F4 6815744 0.000000 4 0
+ 3.799716 -0.138676 0
+ 2.357488 -0.471498 0
+ 2.052401 0.249616 0
+ 4.021597 0.360557 0
+ F4 6815744 0.000000 4 0
+ 0.915260 -3.688776 0
+ 0.194146 -3.134072 0
+ 0.388292 -1.969196 0
+ 0.832055 -2.135607 0
+ F4 6815744 0.000000 5 0
+ -2.912191 -0.332822 0
+ -2.523899 -0.055470 0
+ -1.192612 0.277352 0
+ -0.471498 -0.471498 0
+ -2.135607 -0.721114 0
+ L3 6815744 0.000000 2.722067 3.694233 0 1.749900 3.305367 0
+ L3 6815744 0.000000 1.749900 5.055267 0 1.361033 4.277533 0
+ L3 6815744 0.000000 -0.777733 4.860833 0 -0.388867 4.277533 0
+ L3 6815744 0.000000 -1.749900 2.138767 0 -0.777733 2.527633 0
+ L3 6815744 0.000000 -2.333200 1.166600 0 -1.555467 0.583300 0
+ L3 6815744 0.000000 -4.471967 0.388867 0 -3.499800 0.000000 0
+ L3 6815744 0.000000 -3.110933 -0.972167 0 -3.888667 -1.749900 0
+ L3 6815744 0.000000 -0.777733 -3.499800 0 -0.972167 -4.666400 0
+ L3 6815744 0.000000 -0.583300 -2.138767 0 -0.388867 -2.916500 0
+ L3 6815744 0.000000 1.361033 -3.499800 0 1.749900 -4.666400 0
+ L3 6815744 0.000000 2.333200 -3.305367 0 3.499800 -3.888667 0
+ L3 6815744 0.000000 5.249700 -1.361033 0 4.277533 -1.555467 0
+ L3 6815744 0.000000 5.249700 -3.110933 0 4.277533 -2.722067 0
+ L3 6815744 0.000000 5.638567 -2.333200 0 4.666400 -2.138767 0
+ L3 6815744 0.000000 2.333200 -5.638567 0 2.138767 -4.860833 0
+ L3 6815744 0.000000 3.499800 -5.055267 0 2.916500 -4.471967 0
+ L3 6815744 0.000000 5.833000 0.972167 0 4.666400 1.166600 0
+ L3 6815744 0.000000 5.833000 1.944333 0 4.860833 1.749900 0
+ L3 6815744 0.000000 -1.944333 -5.444133 0 -1.749900 -4.666400 0
+ L3 6815744 0.000000 -4.277533 -2.722067 0 -3.694233 -2.333200 0
+ L3 6815744 0.000000 2.722067 6.221867 0 2.333200 5.249700 0
+ L3 6815744 0.000000 3.499800 5.638567 0 2.916500 5.055267 0
+ L3 11184640 0.000000 2.722067 -5.249700 0 2.333200 -4.083100 0
+ L3 14915328 0.000000 3.110933 4.666400 0 2.527633 4.277533 0
+ L3 14915328 0.000000 -3.499800 0.972167 0 -2.722067 0.583300 0
+ F4 16755200 0.000000 4 0
+ 2.995397 3.078602 0
+ 1.775050 2.718045 0
+ 1.636374 1.802785 0
+ 2.440694 2.135607 0
+ F4 16755200 0.000000 3 0
+ 3.383689 -2.773515 0
+ 2.995397 -1.913726 0
+ 2.385223 -2.440694 0
+ F4 16755200 0.000000 4 0
+ -2.551634 -3.217278 0
+ -1.775050 -3.023132 0
+ -1.220347 -1.719580 0
+ -2.080137 -1.941461 0
+ L3 16755200 0.000000 0.388867 4.277533 0 0.777733 3.694233 0
+ L3 16755200 0.000000 -2.333200 3.110933 0 -1.555467 3.110933 0
+ L3 16755200 0.000000 -3.499800 -2.722067 0 -2.916500 -1.944333 0
+ L3 16755200 0.000000 -2.138767 -4.277533 0 -1.555467 -3.499800 0
+ L3 16755200 0.000000 4.860833 2.527633 0 3.888667 1.944333 0
+ END$SEGS
+STRUCTURE 151 3 0 0 0 A 2 28.000000 208.500000 0 0.000000 "Lg Fall 16"" Fall-16b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.839564 4.591171 0
+ -4.153034 7.187113 0
+ -2.608341 7.852189 0
+ -0.870562 5.706782 0
+ 1.124667 7.573286 0
+ 3.527522 6.436220 0
+ 2.969717 -6.328950 0
+ 0.695585 -7.530378 0
+ -0.248394 -6.071501 0
+ -2.157806 -6.092955 0
+ -2.629795 -7.573286 0
+ -5.569003 -6.629307 0
+ -5.204283 -4.891528 0
+ -7.628593 -4.719895 0
+ -8.872929 -2.209769 0
+ -7.499869 -0.793801 0
+ -9.302011 0.000000 0
+ -8.830021 1.802142 0
+ -6.920609 2.488672 0
+ -8.293669 3.604283 0
+ -7.178058 5.620966 0
+ F4 6815744 0.000000 28 0
+ -6.693669 3.604283 0
+ -5.578058 5.620966 0
+ -3.239564 4.591171 0
+ -2.553034 7.187113 0
+ -1.008341 7.852189 0
+ 0.729438 5.706782 0
+ 2.724667 7.573286 0
+ 5.127522 6.436220 0
+ 4.226451 4.054819 0
+ 7.101297 3.261018 0
+ 7.530378 0.557806 0
+ 6.028593 -0.836709 0
+ 7.444562 -2.853391 0
+ 6.371858 -4.655533 0
+ 4.634079 -4.011911 0
+ 4.569717 -6.328950 0
+ 2.295585 -7.530378 0
+ 1.351606 -6.071501 0
+ -0.557806 -6.092955 0
+ -1.029795 -7.573286 0
+ -3.969003 -6.629307 0
+ -3.604283 -4.891528 0
+ -6.028593 -4.719895 0
+ -7.272929 -2.209769 0
+ -5.899869 -0.793801 0
+ -7.702011 0.000000 0
+ -7.230021 1.802142 0
+ -5.320609 2.488672 0
+ F4 12410368 0.000000 26 0
+ 1.072703 5.020252 0
+ 2.574488 6.522037 0
+ 4.011911 5.642420 0
+ 3.368289 3.132294 0
+ 6.243134 2.338493 0
+ 6.436220 1.094157 0
+ 4.634079 -0.150178 0
+ 6.200226 -2.510126 0
+ 5.513696 -3.325381 0
+ 3.797370 -3.282472 0
+ 3.711554 -5.256247 0
+ 2.231223 -6.071501 0
+ 1.008341 -4.634079 0
+ -0.836709 -4.891528 0
+ -1.265790 -5.878415 0
+ -2.831937 -5.470787 0
+ -2.853391 -3.754462 0
+ -4.162089 -3.711554 0
+ -5.020252 -1.995228 0
+ -3.497013 -0.557806 0
+ -4.934436 0.193087 0
+ -4.698441 1.222882 0
+ -2.402856 1.651963 0
+ -3.282472 3.218110 0
+ -1.845050 4.333722 0
+ -1.265790 5.599512 0
+ L3 12410368 0.000000 -1.361033 6.610733 0 -0.583300 6.027433 0
+ L3 12410368 0.000000 -5.444133 3.694233 0 -4.860833 3.110933 0
+ L3 12410368 0.000000 -4.083100 3.305367 0 -3.305367 2.722067 0
+ L3 12410368 0.000000 -6.610733 1.555467 0 -5.249700 1.555467 0
+ L3 12410368 0.000000 -4.471967 -0.583300 0 -5.444133 -0.388867 0
+ L3 12410368 0.000000 -6.027433 -2.916500 0 -5.055267 -3.110933 0
+ L3 12410368 0.000000 -2.916500 -5.833000 0 -3.305367 -6.416300 0
+ L3 12410368 0.000000 -0.194433 -5.249700 0 0.000000 -5.833000 0
+ L3 12410368 0.000000 2.527633 -6.221867 0 2.333200 -6.999600 0
+ L3 12410368 0.000000 5.833000 -3.694233 0 6.221867 -4.277533 0
+ L3 12410368 0.000000 -5.444133 4.860833 0 -5.055267 4.083100 0
+ L3 14915328 0.000000 -6.221867 3.694233 0 -5.638567 4.083100 0
+ L3 16755200 0.000000 6.805167 0.583300 0 6.027433 0.388867 0
+ L3 16755200 0.000000 -1.944333 6.221867 0 -2.138767 5.249700 0
+ L3 16755200 0.000000 -4.471967 4.083100 0 -3.110933 4.083100 0
+ L3 16755200 0.000000 -3.694233 2.138767 0 -4.860833 1.944333 0
+ L3 16755200 0.000000 -6.610733 0.388867 0 -5.444133 0.972167 0
+ L3 16755200 0.000000 -5.249700 -1.361033 0 -6.610733 -2.138767 0
+ L3 16755200 0.000000 -4.666400 -4.471967 0 -4.277533 -3.888667 0
+ L3 16755200 0.000000 -1.749900 -6.221867 0 -1.361033 -6.805167 0
+ L3 16755200 0.000000 0.972167 -5.249700 0 0.388867 -5.638567 0
+ L3 16755200 0.000000 3.694233 -5.833000 0 4.277533 -6.027433 0
+ L3 16755200 0.000000 6.805167 -2.722067 0 6.221867 -2.916500 0
+ F4 6815744 0.000000 5 0
+ -1.164876 3.688776 0
+ -1.053936 3.050867 0
+ 0.138676 2.523899 0
+ 0.471498 3.300483 0
+ -0.138676 3.882922 0
+ F4 6815744 0.000000 4 0
+ 3.799716 -0.138676 0
+ 2.357488 -0.471498 0
+ 2.052401 0.249616 0
+ 4.021597 0.360557 0
+ F4 6815744 0.000000 4 0
+ 0.915260 -3.688776 0
+ 0.194146 -3.134072 0
+ 0.388292 -1.969196 0
+ 0.832055 -2.135607 0
+ F4 6815744 0.000000 5 0
+ -2.912191 -0.332822 0
+ -2.523899 -0.055470 0
+ -1.192612 0.277352 0
+ -0.471498 -0.471498 0
+ -2.135607 -0.721114 0
+ L3 6815744 0.000000 2.722067 3.694233 0 1.749900 3.305367 0
+ L3 6815744 0.000000 1.749900 5.055267 0 1.361033 4.277533 0
+ L3 6815744 0.000000 -0.777733 4.860833 0 -0.388867 4.277533 0
+ L3 6815744 0.000000 -1.749900 2.138767 0 -0.777733 2.527633 0
+ L3 6815744 0.000000 -2.333200 1.166600 0 -1.555467 0.583300 0
+ L3 6815744 0.000000 -4.471967 0.388867 0 -3.499800 0.000000 0
+ L3 6815744 0.000000 -3.110933 -0.972167 0 -3.888667 -1.749900 0
+ L3 6815744 0.000000 -0.777733 -3.499800 0 -0.972167 -4.666400 0
+ L3 6815744 0.000000 -0.583300 -2.138767 0 -0.388867 -2.916500 0
+ L3 6815744 0.000000 1.361033 -3.499800 0 1.749900 -4.666400 0
+ L3 6815744 0.000000 2.333200 -3.305367 0 3.499800 -3.888667 0
+ L3 6815744 0.000000 5.249700 -1.361033 0 4.277533 -1.555467 0
+ L3 6815744 0.000000 5.249700 -3.110933 0 4.277533 -2.722067 0
+ L3 6815744 0.000000 5.638567 -2.333200 0 4.666400 -2.138767 0
+ L3 6815744 0.000000 2.333200 -5.638567 0 2.138767 -4.860833 0
+ L3 6815744 0.000000 3.499800 -5.055267 0 2.916500 -4.471967 0
+ L3 6815744 0.000000 5.833000 0.972167 0 4.666400 1.166600 0
+ L3 6815744 0.000000 5.833000 1.944333 0 4.860833 1.749900 0
+ L3 6815744 0.000000 -1.944333 -5.444133 0 -1.749900 -4.666400 0
+ L3 6815744 0.000000 -4.277533 -2.722067 0 -3.694233 -2.333200 0
+ L3 6815744 0.000000 2.722067 6.221867 0 2.333200 5.249700 0
+ L3 6815744 0.000000 3.499800 5.638567 0 2.916500 5.055267 0
+ L3 11184640 0.000000 2.722067 -5.249700 0 2.333200 -4.083100 0
+ L3 14915328 0.000000 3.110933 4.666400 0 2.527633 4.277533 0
+ L3 14915328 0.000000 -3.499800 0.972167 0 -2.722067 0.583300 0
+ F4 16755200 0.000000 4 0
+ 2.995397 3.078602 0
+ 1.775050 2.718045 0
+ 1.636374 1.802785 0
+ 2.440694 2.135607 0
+ F4 16755200 0.000000 3 0
+ 3.383689 -2.773515 0
+ 2.995397 -1.913726 0
+ 2.385223 -2.440694 0
+ F4 16755200 0.000000 4 0
+ -2.551634 -3.217278 0
+ -1.775050 -3.023132 0
+ -1.220347 -1.719580 0
+ -2.080137 -1.941461 0
+ L3 16755200 0.000000 0.388867 4.277533 0 0.777733 3.694233 0
+ L3 16755200 0.000000 -2.333200 3.110933 0 -1.555467 3.110933 0
+ L3 16755200 0.000000 -3.499800 -2.722067 0 -2.916500 -1.944333 0
+ L3 16755200 0.000000 -2.138767 -4.277533 0 -1.555467 -3.499800 0
+ L3 16755200 0.000000 4.860833 2.527633 0 3.888667 1.944333 0
+ END$SEGS
+STRUCTURE 152 3 0 0 0 A 2 42.000000 220.500000 0 0.000000 "Lg Fall 18"" Fall-18a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -5.444510 -5.165067 0
+ -4.672163 -8.085502 0
+ -2.934384 -8.833713 0
+ -0.979382 -6.420130 0
+ 1.265250 -8.519947 0
+ 3.968463 -7.240748 0
+ 3.340931 7.120069 0
+ 0.782533 8.471675 0
+ -0.279443 6.830439 0
+ -2.427531 6.854575 0
+ -2.958520 8.519947 0
+ -6.265128 7.457970 0
+ -5.854819 5.502969 0
+ -8.582167 5.309882 0
+ -9.982045 2.485990 0
+ -8.437352 0.893026 0
+ -10.464762 0.000000 0
+ -9.933774 -2.027409 0
+ -7.785685 -2.799756 0
+ -9.330378 -4.054819 0
+ -8.075315 -6.323587 0
+ F4 6842368 0.000000 28 0
+ -7.530378 -4.054819 0
+ -6.275315 -6.323587 0
+ -3.644510 -5.165067 0
+ -2.872163 -8.085502 0
+ -1.134384 -8.833713 0
+ 0.820618 -6.420130 0
+ 3.065250 -8.519947 0
+ 5.768463 -7.240748 0
+ 4.754758 -4.561671 0
+ 7.988959 -3.668646 0
+ 8.471675 -0.627531 0
+ 6.782167 0.941297 0
+ 8.375132 3.210065 0
+ 7.168341 5.237474 0
+ 5.213339 4.513400 0
+ 5.140931 7.120069 0
+ 2.582533 8.471675 0
+ 1.520557 6.830439 0
+ -0.627531 6.854575 0
+ -1.158520 8.519947 0
+ -4.465128 7.457970 0
+ -4.054819 5.502969 0
+ -6.782167 5.309882 0
+ -8.182045 2.485990 0
+ -6.637352 0.893026 0
+ -8.664762 0.000000 0
+ -8.133774 -2.027409 0
+ -5.985685 -2.799756 0
+ F4 12434688 0.000000 26 0
+ 1.206791 -5.647783 0
+ 2.896299 -7.337291 0
+ 4.513400 -6.347722 0
+ 3.789325 -3.523831 0
+ 7.023526 -2.630805 0
+ 7.240748 -1.230927 0
+ 5.213339 0.168951 0
+ 6.975254 2.823892 0
+ 6.202908 3.741053 0
+ 4.272041 3.692782 0
+ 4.175498 5.913278 0
+ 2.510126 6.830439 0
+ 1.134384 5.213339 0
+ -0.941297 5.502969 0
+ -1.424014 6.613217 0
+ -3.185929 6.154636 0
+ -3.210065 4.223770 0
+ -4.682350 4.175498 0
+ -5.647783 2.244632 0
+ -3.934140 0.627531 0
+ -5.551240 -0.217222 0
+ -5.285746 -1.375742 0
+ -2.703213 -1.858459 0
+ -3.692782 -3.620374 0
+ -2.075681 -4.875437 0
+ -1.424014 -6.299451 0
+ L3 12434688 0.000000 -2.187375 -6.999600 0 -2.406112 -5.905912 0
+ L3 12434688 0.000000 -4.593487 -3.718537 0 -3.718537 -3.062325 0
+ L3 12434688 0.000000 -7.437075 -0.437475 0 -6.124650 -1.093687 0
+ L3 12434688 0.000000 -5.030962 0.656212 0 -6.124650 0.437475 0
+ L3 12434688 0.000000 -6.780862 3.281062 0 -5.687175 3.499800 0
+ L3 12434688 0.000000 -3.281062 6.562125 0 -3.718537 7.218337 0
+ L3 12434688 0.000000 1.093687 5.905912 0 0.437475 6.343387 0
+ L3 12434688 0.000000 4.156012 6.562125 0 4.812225 6.780862 0
+ L3 12434688 0.000000 7.655812 3.062325 0 6.999600 3.281062 0
+ L3 12434688 0.000000 -6.124650 -5.468437 0 -5.687175 -4.593487 0
+ L3 12434688 0.000000 -6.999600 -4.156012 0 -6.343387 -4.593487 0
+ L3 16755200 0.000000 -1.531162 -7.437075 0 -0.656212 -6.780862 0
+ L3 16755200 0.000000 -5.030962 -4.593487 0 -3.499800 -4.593487 0
+ L3 16755200 0.000000 -6.124650 -4.156012 0 -5.468437 -3.499800 0
+ L3 16755200 0.000000 -4.156012 -2.406112 0 -5.468437 -2.187375 0
+ L3 16755200 0.000000 -7.437075 -1.749900 0 -5.905912 -1.749900 0
+ L3 16755200 0.000000 -5.905912 1.531162 0 -7.437075 2.406112 0
+ L3 16755200 0.000000 -5.249700 5.030962 0 -4.812225 4.374750 0
+ L3 16755200 0.000000 -1.968637 6.999600 0 -1.531162 7.655812 0
+ L3 16755200 0.000000 -0.218737 5.905912 0 0.000000 6.562125 0
+ L3 16755200 0.000000 2.843587 6.999600 0 2.624850 7.874550 0
+ L3 16755200 0.000000 6.562125 4.156012 0 6.999600 4.812225 0
+ L3 16755200 0.000000 7.655812 -0.656212 0 6.780862 -0.437475 0
+ F4 6842368 0.000000 4 0
+ 3.369821 -3.463427 0
+ 1.996931 -3.057801 0
+ 1.840921 -2.028133 0
+ 2.745780 -2.402558 0
+ F4 6842368 0.000000 4 0
+ 4.274681 0.156010 0
+ 2.652174 0.530435 0
+ 2.308952 -0.280818 0
+ 4.524297 -0.405627 0
+ F4 6842368 0.000000 4 0
+ 1.029668 4.149872 0
+ 0.218414 3.525832 0
+ 0.436829 2.215345 0
+ 0.936061 2.402558 0
+ F4 6842368 0.000000 5 0
+ -3.276215 0.374425 0
+ -2.839386 0.062404 0
+ -1.341688 -0.312020 0
+ -0.530435 0.530435 0
+ -2.402558 0.811253 0
+ L3 6842368 0.000000 0.437475 -4.812225 0 0.874950 -4.156012 0
+ L3 6842368 0.000000 3.062325 -4.156012 0 1.968637 -3.718537 0
+ L3 6842368 0.000000 3.499800 -5.249700 0 2.843587 -4.812225 0
+ L3 6842368 0.000000 1.968637 -5.687175 0 1.531162 -4.812225 0
+ L3 6842368 0.000000 -0.874950 -5.468437 0 -0.437475 -4.812225 0
+ L3 6842368 0.000000 -2.624850 -3.499800 0 -1.749900 -3.499800 0
+ L3 6842368 0.000000 -1.968637 -2.406112 0 -0.874950 -2.843587 0
+ L3 6842368 0.000000 -2.624850 -1.312425 0 -1.749900 -0.656212 0
+ L3 6842368 0.000000 -3.937275 -1.093687 0 -3.062325 -0.656212 0
+ L3 6842368 0.000000 -5.030962 -0.437475 0 -3.937275 0.000000 0
+ L3 6842368 0.000000 -3.499800 1.093687 0 -4.374750 1.968637 0
+ L3 6842368 0.000000 -3.937275 3.062325 0 -3.281062 2.187375 0
+ L3 6842368 0.000000 -2.406112 4.812225 0 -1.749900 3.937275 0
+ L3 6842368 0.000000 -0.874950 3.937275 0 -1.093687 5.249700 0
+ L3 6842368 0.000000 -0.656212 2.406112 0 -0.437475 3.281062 0
+ L3 6842368 0.000000 1.531162 3.937275 0 1.968637 5.249700 0
+ L3 6842368 0.000000 2.624850 3.718537 0 3.937275 4.374750 0
+ L3 6842368 0.000000 5.905912 1.531162 0 4.812225 1.749900 0
+ L3 6842368 0.000000 5.905912 3.499800 0 4.812225 3.062325 0
+ L3 6842368 0.000000 6.343387 2.624850 0 5.249700 2.406112 0
+ L3 6842368 0.000000 2.624850 6.343387 0 2.406112 5.468437 0
+ L3 6842368 0.000000 3.937275 5.687175 0 3.281062 5.030962 0
+ L3 6842368 0.000000 3.062325 5.905912 0 2.624850 4.593487 0
+ L3 6842368 0.000000 6.562125 -1.093687 0 5.249700 -1.312425 0
+ L3 6842368 0.000000 5.468437 -2.843587 0 4.374750 -2.187375 0
+ L3 6842368 0.000000 6.562125 -2.187375 0 5.468437 -1.968637 0
+ L3 6842368 0.000000 -2.187375 6.124650 0 -1.968637 5.249700 0
+ L3 6842368 0.000000 -4.812225 3.062325 0 -4.156012 2.624850 0
+ L3 6842368 0.000000 3.062325 -6.999600 0 2.624850 -5.905912 0
+ L3 6842368 0.000000 3.937275 -6.343387 0 3.281062 -5.687175 0
+ F4 16755200 0.000000 5 0
+ -1.310486 -4.149872 0
+ -1.185678 -3.432225 0
+ 0.156010 -2.839386 0
+ 0.530435 -3.713044 0
+ -0.156010 -4.368287 0
+ F4 16755200 0.000000 3 0
+ 3.806650 3.120205 0
+ 3.369821 2.152941 0
+ 2.683376 2.745780 0
+ F4 16755200 0.000000 4 0
+ -2.870588 3.619438 0
+ -1.996931 3.401023 0
+ -1.372890 1.934527 0
+ -2.340154 2.184143 0
+ END$SEGS
+STRUCTURE 153 3 0 0 0 A 2 10.500000 202.000000 0 0.000000 "Lg Fall 18"" Fall-18a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -5.444510 -5.165067 0
+ -4.672163 -8.085502 0
+ -2.934384 -8.833713 0
+ -0.979382 -6.420130 0
+ 1.265250 -8.519947 0
+ 3.968463 -7.240748 0
+ 3.340931 7.120069 0
+ 0.782533 8.471675 0
+ -0.279443 6.830439 0
+ -2.427531 6.854575 0
+ -2.958520 8.519947 0
+ -6.265128 7.457970 0
+ -5.854819 5.502969 0
+ -8.582167 5.309882 0
+ -9.982045 2.485990 0
+ -8.437352 0.893026 0
+ -10.464762 0.000000 0
+ -9.933774 -2.027409 0
+ -7.785685 -2.799756 0
+ -9.330378 -4.054819 0
+ -8.075315 -6.323587 0
+ F4 6842368 0.000000 28 0
+ -7.530378 -4.054819 0
+ -6.275315 -6.323587 0
+ -3.644510 -5.165067 0
+ -2.872163 -8.085502 0
+ -1.134384 -8.833713 0
+ 0.820618 -6.420130 0
+ 3.065250 -8.519947 0
+ 5.768463 -7.240748 0
+ 4.754758 -4.561671 0
+ 7.988959 -3.668646 0
+ 8.471675 -0.627531 0
+ 6.782167 0.941297 0
+ 8.375132 3.210065 0
+ 7.168341 5.237474 0
+ 5.213339 4.513400 0
+ 5.140931 7.120069 0
+ 2.582533 8.471675 0
+ 1.520557 6.830439 0
+ -0.627531 6.854575 0
+ -1.158520 8.519947 0
+ -4.465128 7.457970 0
+ -4.054819 5.502969 0
+ -6.782167 5.309882 0
+ -8.182045 2.485990 0
+ -6.637352 0.893026 0
+ -8.664762 0.000000 0
+ -8.133774 -2.027409 0
+ -5.985685 -2.799756 0
+ F4 12434688 0.000000 26 0
+ 1.206791 -5.647783 0
+ 2.896299 -7.337291 0
+ 4.513400 -6.347722 0
+ 3.789325 -3.523831 0
+ 7.023526 -2.630805 0
+ 7.240748 -1.230927 0
+ 5.213339 0.168951 0
+ 6.975254 2.823892 0
+ 6.202908 3.741053 0
+ 4.272041 3.692782 0
+ 4.175498 5.913278 0
+ 2.510126 6.830439 0
+ 1.134384 5.213339 0
+ -0.941297 5.502969 0
+ -1.424014 6.613217 0
+ -3.185929 6.154636 0
+ -3.210065 4.223770 0
+ -4.682350 4.175498 0
+ -5.647783 2.244632 0
+ -3.934140 0.627531 0
+ -5.551240 -0.217222 0
+ -5.285746 -1.375742 0
+ -2.703213 -1.858459 0
+ -3.692782 -3.620374 0
+ -2.075681 -4.875437 0
+ -1.424014 -6.299451 0
+ L3 12434688 0.000000 -2.187375 -6.999600 0 -2.406112 -5.905912 0
+ L3 12434688 0.000000 -4.593487 -3.718537 0 -3.718537 -3.062325 0
+ L3 12434688 0.000000 -7.437075 -0.437475 0 -6.124650 -1.093687 0
+ L3 12434688 0.000000 -5.030962 0.656212 0 -6.124650 0.437475 0
+ L3 12434688 0.000000 -6.780862 3.281062 0 -5.687175 3.499800 0
+ L3 12434688 0.000000 -3.281062 6.562125 0 -3.718537 7.218337 0
+ L3 12434688 0.000000 1.093687 5.905912 0 0.437475 6.343387 0
+ L3 12434688 0.000000 4.156012 6.562125 0 4.812225 6.780862 0
+ L3 12434688 0.000000 7.655812 3.062325 0 6.999600 3.281062 0
+ L3 12434688 0.000000 -6.124650 -5.468437 0 -5.687175 -4.593487 0
+ L3 12434688 0.000000 -6.999600 -4.156012 0 -6.343387 -4.593487 0
+ L3 16755200 0.000000 -1.531162 -7.437075 0 -0.656212 -6.780862 0
+ L3 16755200 0.000000 -5.030962 -4.593487 0 -3.499800 -4.593487 0
+ L3 16755200 0.000000 -6.124650 -4.156012 0 -5.468437 -3.499800 0
+ L3 16755200 0.000000 -4.156012 -2.406112 0 -5.468437 -2.187375 0
+ L3 16755200 0.000000 -7.437075 -1.749900 0 -5.905912 -1.749900 0
+ L3 16755200 0.000000 -5.905912 1.531162 0 -7.437075 2.406112 0
+ L3 16755200 0.000000 -5.249700 5.030962 0 -4.812225 4.374750 0
+ L3 16755200 0.000000 -1.968637 6.999600 0 -1.531162 7.655812 0
+ L3 16755200 0.000000 -0.218737 5.905912 0 0.000000 6.562125 0
+ L3 16755200 0.000000 2.843587 6.999600 0 2.624850 7.874550 0
+ L3 16755200 0.000000 6.562125 4.156012 0 6.999600 4.812225 0
+ L3 16755200 0.000000 7.655812 -0.656212 0 6.780862 -0.437475 0
+ F4 6842368 0.000000 4 0
+ 3.369821 -3.463427 0
+ 1.996931 -3.057801 0
+ 1.840921 -2.028133 0
+ 2.745780 -2.402558 0
+ F4 6842368 0.000000 4 0
+ 4.274681 0.156010 0
+ 2.652174 0.530435 0
+ 2.308952 -0.280818 0
+ 4.524297 -0.405627 0
+ F4 6842368 0.000000 4 0
+ 1.029668 4.149872 0
+ 0.218414 3.525832 0
+ 0.436829 2.215345 0
+ 0.936061 2.402558 0
+ F4 6842368 0.000000 5 0
+ -3.276215 0.374425 0
+ -2.839386 0.062404 0
+ -1.341688 -0.312020 0
+ -0.530435 0.530435 0
+ -2.402558 0.811253 0
+ L3 6842368 0.000000 0.437475 -4.812225 0 0.874950 -4.156012 0
+ L3 6842368 0.000000 3.062325 -4.156012 0 1.968637 -3.718537 0
+ L3 6842368 0.000000 3.499800 -5.249700 0 2.843587 -4.812225 0
+ L3 6842368 0.000000 1.968637 -5.687175 0 1.531162 -4.812225 0
+ L3 6842368 0.000000 -0.874950 -5.468437 0 -0.437475 -4.812225 0
+ L3 6842368 0.000000 -2.624850 -3.499800 0 -1.749900 -3.499800 0
+ L3 6842368 0.000000 -1.968637 -2.406112 0 -0.874950 -2.843587 0
+ L3 6842368 0.000000 -2.624850 -1.312425 0 -1.749900 -0.656212 0
+ L3 6842368 0.000000 -3.937275 -1.093687 0 -3.062325 -0.656212 0
+ L3 6842368 0.000000 -5.030962 -0.437475 0 -3.937275 0.000000 0
+ L3 6842368 0.000000 -3.499800 1.093687 0 -4.374750 1.968637 0
+ L3 6842368 0.000000 -3.937275 3.062325 0 -3.281062 2.187375 0
+ L3 6842368 0.000000 -2.406112 4.812225 0 -1.749900 3.937275 0
+ L3 6842368 0.000000 -0.874950 3.937275 0 -1.093687 5.249700 0
+ L3 6842368 0.000000 -0.656212 2.406112 0 -0.437475 3.281062 0
+ L3 6842368 0.000000 1.531162 3.937275 0 1.968637 5.249700 0
+ L3 6842368 0.000000 2.624850 3.718537 0 3.937275 4.374750 0
+ L3 6842368 0.000000 5.905912 1.531162 0 4.812225 1.749900 0
+ L3 6842368 0.000000 5.905912 3.499800 0 4.812225 3.062325 0
+ L3 6842368 0.000000 6.343387 2.624850 0 5.249700 2.406112 0
+ L3 6842368 0.000000 2.624850 6.343387 0 2.406112 5.468437 0
+ L3 6842368 0.000000 3.937275 5.687175 0 3.281062 5.030962 0
+ L3 6842368 0.000000 3.062325 5.905912 0 2.624850 4.593487 0
+ L3 6842368 0.000000 6.562125 -1.093687 0 5.249700 -1.312425 0
+ L3 6842368 0.000000 5.468437 -2.843587 0 4.374750 -2.187375 0
+ L3 6842368 0.000000 6.562125 -2.187375 0 5.468437 -1.968637 0
+ L3 6842368 0.000000 -2.187375 6.124650 0 -1.968637 5.249700 0
+ L3 6842368 0.000000 -4.812225 3.062325 0 -4.156012 2.624850 0
+ L3 6842368 0.000000 3.062325 -6.999600 0 2.624850 -5.905912 0
+ L3 6842368 0.000000 3.937275 -6.343387 0 3.281062 -5.687175 0
+ F4 16755200 0.000000 5 0
+ -1.310486 -4.149872 0
+ -1.185678 -3.432225 0
+ 0.156010 -2.839386 0
+ 0.530435 -3.713044 0
+ -0.156010 -4.368287 0
+ F4 16755200 0.000000 3 0
+ 3.806650 3.120205 0
+ 3.369821 2.152941 0
+ 2.683376 2.745780 0
+ F4 16755200 0.000000 4 0
+ -2.870588 3.619438 0
+ -1.996931 3.401023 0
+ -1.372890 1.934527 0
+ -2.340154 2.184143 0
+ END$SEGS
+STRUCTURE 154 3 0 0 0 A 2 19.500000 229.000000 0 0.000000 "Lg Fall 18"" Fall-18a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -5.444510 -5.165067 0
+ -4.672163 -8.085502 0
+ -2.934384 -8.833713 0
+ -0.979382 -6.420130 0
+ 1.265250 -8.519947 0
+ 3.968463 -7.240748 0
+ 3.340931 7.120069 0
+ 0.782533 8.471675 0
+ -0.279443 6.830439 0
+ -2.427531 6.854575 0
+ -2.958520 8.519947 0
+ -6.265128 7.457970 0
+ -5.854819 5.502969 0
+ -8.582167 5.309882 0
+ -9.982045 2.485990 0
+ -8.437352 0.893026 0
+ -10.464762 0.000000 0
+ -9.933774 -2.027409 0
+ -7.785685 -2.799756 0
+ -9.330378 -4.054819 0
+ -8.075315 -6.323587 0
+ F4 6842368 0.000000 28 0
+ -7.530378 -4.054819 0
+ -6.275315 -6.323587 0
+ -3.644510 -5.165067 0
+ -2.872163 -8.085502 0
+ -1.134384 -8.833713 0
+ 0.820618 -6.420130 0
+ 3.065250 -8.519947 0
+ 5.768463 -7.240748 0
+ 4.754758 -4.561671 0
+ 7.988959 -3.668646 0
+ 8.471675 -0.627531 0
+ 6.782167 0.941297 0
+ 8.375132 3.210065 0
+ 7.168341 5.237474 0
+ 5.213339 4.513400 0
+ 5.140931 7.120069 0
+ 2.582533 8.471675 0
+ 1.520557 6.830439 0
+ -0.627531 6.854575 0
+ -1.158520 8.519947 0
+ -4.465128 7.457970 0
+ -4.054819 5.502969 0
+ -6.782167 5.309882 0
+ -8.182045 2.485990 0
+ -6.637352 0.893026 0
+ -8.664762 0.000000 0
+ -8.133774 -2.027409 0
+ -5.985685 -2.799756 0
+ F4 12434688 0.000000 26 0
+ 1.206791 -5.647783 0
+ 2.896299 -7.337291 0
+ 4.513400 -6.347722 0
+ 3.789325 -3.523831 0
+ 7.023526 -2.630805 0
+ 7.240748 -1.230927 0
+ 5.213339 0.168951 0
+ 6.975254 2.823892 0
+ 6.202908 3.741053 0
+ 4.272041 3.692782 0
+ 4.175498 5.913278 0
+ 2.510126 6.830439 0
+ 1.134384 5.213339 0
+ -0.941297 5.502969 0
+ -1.424014 6.613217 0
+ -3.185929 6.154636 0
+ -3.210065 4.223770 0
+ -4.682350 4.175498 0
+ -5.647783 2.244632 0
+ -3.934140 0.627531 0
+ -5.551240 -0.217222 0
+ -5.285746 -1.375742 0
+ -2.703213 -1.858459 0
+ -3.692782 -3.620374 0
+ -2.075681 -4.875437 0
+ -1.424014 -6.299451 0
+ L3 12434688 0.000000 -2.187375 -6.999600 0 -2.406112 -5.905912 0
+ L3 12434688 0.000000 -4.593487 -3.718537 0 -3.718537 -3.062325 0
+ L3 12434688 0.000000 -7.437075 -0.437475 0 -6.124650 -1.093687 0
+ L3 12434688 0.000000 -5.030962 0.656212 0 -6.124650 0.437475 0
+ L3 12434688 0.000000 -6.780862 3.281062 0 -5.687175 3.499800 0
+ L3 12434688 0.000000 -3.281062 6.562125 0 -3.718537 7.218337 0
+ L3 12434688 0.000000 1.093687 5.905912 0 0.437475 6.343387 0
+ L3 12434688 0.000000 4.156012 6.562125 0 4.812225 6.780862 0
+ L3 12434688 0.000000 7.655812 3.062325 0 6.999600 3.281062 0
+ L3 12434688 0.000000 -6.124650 -5.468437 0 -5.687175 -4.593487 0
+ L3 12434688 0.000000 -6.999600 -4.156012 0 -6.343387 -4.593487 0
+ L3 16755200 0.000000 -1.531162 -7.437075 0 -0.656212 -6.780862 0
+ L3 16755200 0.000000 -5.030962 -4.593487 0 -3.499800 -4.593487 0
+ L3 16755200 0.000000 -6.124650 -4.156012 0 -5.468437 -3.499800 0
+ L3 16755200 0.000000 -4.156012 -2.406112 0 -5.468437 -2.187375 0
+ L3 16755200 0.000000 -7.437075 -1.749900 0 -5.905912 -1.749900 0
+ L3 16755200 0.000000 -5.905912 1.531162 0 -7.437075 2.406112 0
+ L3 16755200 0.000000 -5.249700 5.030962 0 -4.812225 4.374750 0
+ L3 16755200 0.000000 -1.968637 6.999600 0 -1.531162 7.655812 0
+ L3 16755200 0.000000 -0.218737 5.905912 0 0.000000 6.562125 0
+ L3 16755200 0.000000 2.843587 6.999600 0 2.624850 7.874550 0
+ L3 16755200 0.000000 6.562125 4.156012 0 6.999600 4.812225 0
+ L3 16755200 0.000000 7.655812 -0.656212 0 6.780862 -0.437475 0
+ F4 6842368 0.000000 4 0
+ 3.369821 -3.463427 0
+ 1.996931 -3.057801 0
+ 1.840921 -2.028133 0
+ 2.745780 -2.402558 0
+ F4 6842368 0.000000 4 0
+ 4.274681 0.156010 0
+ 2.652174 0.530435 0
+ 2.308952 -0.280818 0
+ 4.524297 -0.405627 0
+ F4 6842368 0.000000 4 0
+ 1.029668 4.149872 0
+ 0.218414 3.525832 0
+ 0.436829 2.215345 0
+ 0.936061 2.402558 0
+ F4 6842368 0.000000 5 0
+ -3.276215 0.374425 0
+ -2.839386 0.062404 0
+ -1.341688 -0.312020 0
+ -0.530435 0.530435 0
+ -2.402558 0.811253 0
+ L3 6842368 0.000000 0.437475 -4.812225 0 0.874950 -4.156012 0
+ L3 6842368 0.000000 3.062325 -4.156012 0 1.968637 -3.718537 0
+ L3 6842368 0.000000 3.499800 -5.249700 0 2.843587 -4.812225 0
+ L3 6842368 0.000000 1.968637 -5.687175 0 1.531162 -4.812225 0
+ L3 6842368 0.000000 -0.874950 -5.468437 0 -0.437475 -4.812225 0
+ L3 6842368 0.000000 -2.624850 -3.499800 0 -1.749900 -3.499800 0
+ L3 6842368 0.000000 -1.968637 -2.406112 0 -0.874950 -2.843587 0
+ L3 6842368 0.000000 -2.624850 -1.312425 0 -1.749900 -0.656212 0
+ L3 6842368 0.000000 -3.937275 -1.093687 0 -3.062325 -0.656212 0
+ L3 6842368 0.000000 -5.030962 -0.437475 0 -3.937275 0.000000 0
+ L3 6842368 0.000000 -3.499800 1.093687 0 -4.374750 1.968637 0
+ L3 6842368 0.000000 -3.937275 3.062325 0 -3.281062 2.187375 0
+ L3 6842368 0.000000 -2.406112 4.812225 0 -1.749900 3.937275 0
+ L3 6842368 0.000000 -0.874950 3.937275 0 -1.093687 5.249700 0
+ L3 6842368 0.000000 -0.656212 2.406112 0 -0.437475 3.281062 0
+ L3 6842368 0.000000 1.531162 3.937275 0 1.968637 5.249700 0
+ L3 6842368 0.000000 2.624850 3.718537 0 3.937275 4.374750 0
+ L3 6842368 0.000000 5.905912 1.531162 0 4.812225 1.749900 0
+ L3 6842368 0.000000 5.905912 3.499800 0 4.812225 3.062325 0
+ L3 6842368 0.000000 6.343387 2.624850 0 5.249700 2.406112 0
+ L3 6842368 0.000000 2.624850 6.343387 0 2.406112 5.468437 0
+ L3 6842368 0.000000 3.937275 5.687175 0 3.281062 5.030962 0
+ L3 6842368 0.000000 3.062325 5.905912 0 2.624850 4.593487 0
+ L3 6842368 0.000000 6.562125 -1.093687 0 5.249700 -1.312425 0
+ L3 6842368 0.000000 5.468437 -2.843587 0 4.374750 -2.187375 0
+ L3 6842368 0.000000 6.562125 -2.187375 0 5.468437 -1.968637 0
+ L3 6842368 0.000000 -2.187375 6.124650 0 -1.968637 5.249700 0
+ L3 6842368 0.000000 -4.812225 3.062325 0 -4.156012 2.624850 0
+ L3 6842368 0.000000 3.062325 -6.999600 0 2.624850 -5.905912 0
+ L3 6842368 0.000000 3.937275 -6.343387 0 3.281062 -5.687175 0
+ F4 16755200 0.000000 5 0
+ -1.310486 -4.149872 0
+ -1.185678 -3.432225 0
+ 0.156010 -2.839386 0
+ 0.530435 -3.713044 0
+ -0.156010 -4.368287 0
+ F4 16755200 0.000000 3 0
+ 3.806650 3.120205 0
+ 3.369821 2.152941 0
+ 2.683376 2.745780 0
+ F4 16755200 0.000000 4 0
+ -2.870588 3.619438 0
+ -1.996931 3.401023 0
+ -1.372890 1.934527 0
+ -2.340154 2.184143 0
+ END$SEGS
+STRUCTURE 155 3 0 0 0 A 2 50.000000 234.500000 0 0.000000 "Lg Fall 8"" Fall-8b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -2.419782 2.295585 0
+ -2.076517 3.593556 0
+ -1.304171 3.926095 0
+ -0.435281 2.853391 0
+ 0.562333 3.786643 0
+ 1.763761 3.218110 0
+ 1.484858 -3.164475 0
+ 0.347793 -3.765189 0
+ -0.124197 -3.035751 0
+ -1.078903 -3.046478 0
+ -1.314898 -3.786643 0
+ -2.784501 -3.314654 0
+ -2.602142 -2.445764 0
+ -3.814297 -2.359948 0
+ -4.436465 -1.104885 0
+ -3.749934 -0.396900 0
+ -4.651005 0.000000 0
+ -4.415011 0.901071 0
+ -3.460304 1.244336 0
+ -4.146835 1.802142 0
+ -3.589029 2.810483 0
+ F4 6815744 0.000000 28 0
+ -3.346835 1.802142 0
+ -2.789029 2.810483 0
+ -1.619782 2.295585 0
+ -1.276517 3.593556 0
+ -0.504171 3.926095 0
+ 0.364719 2.853391 0
+ 1.362333 3.786643 0
+ 2.563761 3.218110 0
+ 2.113226 2.027409 0
+ 3.550648 1.630509 0
+ 3.765189 0.278903 0
+ 3.014297 -0.418354 0
+ 3.722281 -1.426696 0
+ 3.185929 -2.327766 0
+ 2.317039 -2.005955 0
+ 2.284858 -3.164475 0
+ 1.147793 -3.765189 0
+ 0.675803 -3.035751 0
+ -0.278903 -3.046478 0
+ -0.514898 -3.786643 0
+ -1.984501 -3.314654 0
+ -1.802142 -2.445764 0
+ -3.014297 -2.359948 0
+ -3.636465 -1.104885 0
+ -2.949934 -0.396900 0
+ -3.851005 0.000000 0
+ -3.615011 0.901071 0
+ -2.660304 1.244336 0
+ F4 12410368 0.000000 26 0
+ 0.536352 2.510126 0
+ 1.287244 3.261018 0
+ 2.005955 2.821210 0
+ 1.684144 1.566147 0
+ 3.121567 1.169247 0
+ 3.218110 0.547079 0
+ 2.317039 -0.075089 0
+ 3.100113 -1.255063 0
+ 2.756848 -1.662690 0
+ 1.898685 -1.641236 0
+ 1.855777 -2.628123 0
+ 1.115612 -3.035751 0
+ 0.504171 -2.317039 0
+ -0.418354 -2.445764 0
+ -0.632895 -2.939207 0
+ -1.415969 -2.735394 0
+ -1.426696 -1.877231 0
+ -2.081045 -1.855777 0
+ -2.510126 -0.997614 0
+ -1.748507 -0.278903 0
+ -2.467218 0.096543 0
+ -2.349220 0.611441 0
+ -1.201428 0.825982 0
+ -1.641236 1.609055 0
+ -0.922525 2.166861 0
+ -0.632895 2.799756 0
+ L3 12410368 0.000000 -0.680517 3.305367 0 -0.291650 3.013717 0
+ L3 12410368 0.000000 -2.722067 1.847117 0 -2.430417 1.555467 0
+ L3 12410368 0.000000 -2.041550 1.652683 0 -1.652683 1.361033 0
+ L3 12410368 0.000000 -3.305367 0.777733 0 -2.624850 0.777733 0
+ L3 12410368 0.000000 -2.235983 -0.291650 0 -2.722067 -0.194433 0
+ L3 12410368 0.000000 -3.013717 -1.458250 0 -2.527633 -1.555467 0
+ L3 12410368 0.000000 -1.458250 -2.916500 0 -1.652683 -3.208150 0
+ L3 12410368 0.000000 -0.097217 -2.624850 0 0.000000 -2.916500 0
+ L3 12410368 0.000000 1.263817 -3.110933 0 1.166600 -3.499800 0
+ L3 12410368 0.000000 2.916500 -1.847117 0 3.110933 -2.138767 0
+ L3 12410368 0.000000 -2.722067 2.430417 0 -2.527633 2.041550 0
+ L3 14915328 0.000000 -3.110933 1.847117 0 -2.819283 2.041550 0
+ L3 16755200 0.000000 3.402583 0.291650 0 3.013717 0.194433 0
+ L3 16755200 0.000000 -0.972167 3.110933 0 -1.069383 2.624850 0
+ L3 16755200 0.000000 -2.235983 2.041550 0 -1.555467 2.041550 0
+ L3 16755200 0.000000 -1.847117 1.069383 0 -2.430417 0.972167 0
+ L3 16755200 0.000000 -3.305367 0.194433 0 -2.722067 0.486083 0
+ L3 16755200 0.000000 -2.624850 -0.680517 0 -3.305367 -1.069383 0
+ L3 16755200 0.000000 -2.333200 -2.235983 0 -2.138767 -1.944333 0
+ L3 16755200 0.000000 -0.874950 -3.110933 0 -0.680517 -3.402583 0
+ L3 16755200 0.000000 0.486083 -2.624850 0 0.194433 -2.819283 0
+ L3 16755200 0.000000 1.847117 -2.916500 0 2.138767 -3.013717 0
+ L3 16755200 0.000000 3.402583 -1.361033 0 3.110933 -1.458250 0
+ F4 6815744 0.000000 5 0
+ -0.582438 1.844388 0
+ -0.526968 1.525433 0
+ 0.069338 1.261950 0
+ 0.235749 1.650242 0
+ -0.069338 1.941461 0
+ F4 6815744 0.000000 4 0
+ 1.899858 -0.069338 0
+ 1.178744 -0.235749 0
+ 1.026201 0.124808 0
+ 2.010799 0.180279 0
+ F4 6815744 0.000000 4 0
+ 0.457630 -1.844388 0
+ 0.097073 -1.567036 0
+ 0.194146 -0.984598 0
+ 0.416027 -1.067803 0
+ F4 6815744 0.000000 5 0
+ -1.456096 -0.166411 0
+ -1.261950 -0.027735 0
+ -0.596306 0.138676 0
+ -0.235749 -0.235749 0
+ -1.067803 -0.360557 0
+ L3 6815744 0.000000 1.361033 1.847117 0 0.874950 1.652683 0
+ L3 6815744 0.000000 0.874950 2.527633 0 0.680517 2.138767 0
+ L3 6815744 0.000000 -0.388867 2.430417 0 -0.194433 2.138767 0
+ L3 6815744 0.000000 -0.874950 1.069383 0 -0.388867 1.263817 0
+ L3 6815744 0.000000 -1.166600 0.583300 0 -0.777733 0.291650 0
+ L3 6815744 0.000000 -2.235983 0.194433 0 -1.749900 0.000000 0
+ L3 6815744 0.000000 -1.555467 -0.486083 0 -1.944333 -0.874950 0
+ L3 6815744 0.000000 -0.388867 -1.749900 0 -0.486083 -2.333200 0
+ L3 6815744 0.000000 -0.291650 -1.069383 0 -0.194433 -1.458250 0
+ L3 6815744 0.000000 0.680517 -1.749900 0 0.874950 -2.333200 0
+ L3 6815744 0.000000 1.166600 -1.652683 0 1.749900 -1.944333 0
+ L3 6815744 0.000000 2.624850 -0.680517 0 2.138767 -0.777733 0
+ L3 6815744 0.000000 2.624850 -1.555467 0 2.138767 -1.361033 0
+ L3 6815744 0.000000 2.819283 -1.166600 0 2.333200 -1.069383 0
+ L3 6815744 0.000000 1.166600 -2.819283 0 1.069383 -2.430417 0
+ L3 6815744 0.000000 1.749900 -2.527633 0 1.458250 -2.235983 0
+ L3 6815744 0.000000 2.916500 0.486083 0 2.333200 0.583300 0
+ L3 6815744 0.000000 2.916500 0.972167 0 2.430417 0.874950 0
+ L3 6815744 0.000000 -0.972167 -2.722067 0 -0.874950 -2.333200 0
+ L3 6815744 0.000000 -2.138767 -1.361033 0 -1.847117 -1.166600 0
+ L3 6815744 0.000000 1.361033 3.110933 0 1.166600 2.624850 0
+ L3 6815744 0.000000 1.749900 2.819283 0 1.458250 2.527633 0
+ L3 11184640 0.000000 1.361033 -2.624850 0 1.166600 -2.041550 0
+ L3 14915328 0.000000 1.555467 2.333200 0 1.263817 2.138767 0
+ L3 14915328 0.000000 -1.749900 0.486083 0 -1.361033 0.291650 0
+ F4 16755200 0.000000 4 0
+ 1.497698 1.539301 0
+ 0.887525 1.359023 0
+ 0.818187 0.901393 0
+ 1.220347 1.067803 0
+ F4 16755200 0.000000 3 0
+ 1.691844 -1.386758 0
+ 1.497698 -0.956863 0
+ 1.192612 -1.220347 0
+ F4 16755200 0.000000 4 0
+ -1.275817 -1.608639 0
+ -0.887525 -1.511566 0
+ -0.610173 -0.859790 0
+ -1.040068 -0.970730 0
+ L3 16755200 0.000000 0.194433 2.138767 0 0.388867 1.847117 0
+ L3 16755200 0.000000 -1.166600 1.555467 0 -0.777733 1.555467 0
+ L3 16755200 0.000000 -1.749900 -1.361033 0 -1.458250 -0.972167 0
+ L3 16755200 0.000000 -1.069383 -2.138767 0 -0.777733 -1.749900 0
+ L3 16755200 0.000000 2.430417 1.263817 0 1.944333 0.972167 0
+ END$SEGS
+STRUCTURE 156 3 0 0 0 A 2 9.000000 217.500000 0 0.000000 "Lg Fall 8"" Fall-8b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -2.419782 2.295585 0
+ -2.076517 3.593556 0
+ -1.304171 3.926095 0
+ -0.435281 2.853391 0
+ 0.562333 3.786643 0
+ 1.763761 3.218110 0
+ 1.484858 -3.164475 0
+ 0.347793 -3.765189 0
+ -0.124197 -3.035751 0
+ -1.078903 -3.046478 0
+ -1.314898 -3.786643 0
+ -2.784501 -3.314654 0
+ -2.602142 -2.445764 0
+ -3.814297 -2.359948 0
+ -4.436465 -1.104885 0
+ -3.749934 -0.396900 0
+ -4.651005 0.000000 0
+ -4.415011 0.901071 0
+ -3.460304 1.244336 0
+ -4.146835 1.802142 0
+ -3.589029 2.810483 0
+ F4 6815744 0.000000 28 0
+ -3.346835 1.802142 0
+ -2.789029 2.810483 0
+ -1.619782 2.295585 0
+ -1.276517 3.593556 0
+ -0.504171 3.926095 0
+ 0.364719 2.853391 0
+ 1.362333 3.786643 0
+ 2.563761 3.218110 0
+ 2.113226 2.027409 0
+ 3.550648 1.630509 0
+ 3.765189 0.278903 0
+ 3.014297 -0.418354 0
+ 3.722281 -1.426696 0
+ 3.185929 -2.327766 0
+ 2.317039 -2.005955 0
+ 2.284858 -3.164475 0
+ 1.147793 -3.765189 0
+ 0.675803 -3.035751 0
+ -0.278903 -3.046478 0
+ -0.514898 -3.786643 0
+ -1.984501 -3.314654 0
+ -1.802142 -2.445764 0
+ -3.014297 -2.359948 0
+ -3.636465 -1.104885 0
+ -2.949934 -0.396900 0
+ -3.851005 0.000000 0
+ -3.615011 0.901071 0
+ -2.660304 1.244336 0
+ F4 12410368 0.000000 26 0
+ 0.536352 2.510126 0
+ 1.287244 3.261018 0
+ 2.005955 2.821210 0
+ 1.684144 1.566147 0
+ 3.121567 1.169247 0
+ 3.218110 0.547079 0
+ 2.317039 -0.075089 0
+ 3.100113 -1.255063 0
+ 2.756848 -1.662690 0
+ 1.898685 -1.641236 0
+ 1.855777 -2.628123 0
+ 1.115612 -3.035751 0
+ 0.504171 -2.317039 0
+ -0.418354 -2.445764 0
+ -0.632895 -2.939207 0
+ -1.415969 -2.735394 0
+ -1.426696 -1.877231 0
+ -2.081045 -1.855777 0
+ -2.510126 -0.997614 0
+ -1.748507 -0.278903 0
+ -2.467218 0.096543 0
+ -2.349220 0.611441 0
+ -1.201428 0.825982 0
+ -1.641236 1.609055 0
+ -0.922525 2.166861 0
+ -0.632895 2.799756 0
+ L3 12410368 0.000000 -0.680517 3.305367 0 -0.291650 3.013717 0
+ L3 12410368 0.000000 -2.722067 1.847117 0 -2.430417 1.555467 0
+ L3 12410368 0.000000 -2.041550 1.652683 0 -1.652683 1.361033 0
+ L3 12410368 0.000000 -3.305367 0.777733 0 -2.624850 0.777733 0
+ L3 12410368 0.000000 -2.235983 -0.291650 0 -2.722067 -0.194433 0
+ L3 12410368 0.000000 -3.013717 -1.458250 0 -2.527633 -1.555467 0
+ L3 12410368 0.000000 -1.458250 -2.916500 0 -1.652683 -3.208150 0
+ L3 12410368 0.000000 -0.097217 -2.624850 0 0.000000 -2.916500 0
+ L3 12410368 0.000000 1.263817 -3.110933 0 1.166600 -3.499800 0
+ L3 12410368 0.000000 2.916500 -1.847117 0 3.110933 -2.138767 0
+ L3 12410368 0.000000 -2.722067 2.430417 0 -2.527633 2.041550 0
+ L3 14915328 0.000000 -3.110933 1.847117 0 -2.819283 2.041550 0
+ L3 16755200 0.000000 3.402583 0.291650 0 3.013717 0.194433 0
+ L3 16755200 0.000000 -0.972167 3.110933 0 -1.069383 2.624850 0
+ L3 16755200 0.000000 -2.235983 2.041550 0 -1.555467 2.041550 0
+ L3 16755200 0.000000 -1.847117 1.069383 0 -2.430417 0.972167 0
+ L3 16755200 0.000000 -3.305367 0.194433 0 -2.722067 0.486083 0
+ L3 16755200 0.000000 -2.624850 -0.680517 0 -3.305367 -1.069383 0
+ L3 16755200 0.000000 -2.333200 -2.235983 0 -2.138767 -1.944333 0
+ L3 16755200 0.000000 -0.874950 -3.110933 0 -0.680517 -3.402583 0
+ L3 16755200 0.000000 0.486083 -2.624850 0 0.194433 -2.819283 0
+ L3 16755200 0.000000 1.847117 -2.916500 0 2.138767 -3.013717 0
+ L3 16755200 0.000000 3.402583 -1.361033 0 3.110933 -1.458250 0
+ F4 6815744 0.000000 5 0
+ -0.582438 1.844388 0
+ -0.526968 1.525433 0
+ 0.069338 1.261950 0
+ 0.235749 1.650242 0
+ -0.069338 1.941461 0
+ F4 6815744 0.000000 4 0
+ 1.899858 -0.069338 0
+ 1.178744 -0.235749 0
+ 1.026201 0.124808 0
+ 2.010799 0.180279 0
+ F4 6815744 0.000000 4 0
+ 0.457630 -1.844388 0
+ 0.097073 -1.567036 0
+ 0.194146 -0.984598 0
+ 0.416027 -1.067803 0
+ F4 6815744 0.000000 5 0
+ -1.456096 -0.166411 0
+ -1.261950 -0.027735 0
+ -0.596306 0.138676 0
+ -0.235749 -0.235749 0
+ -1.067803 -0.360557 0
+ L3 6815744 0.000000 1.361033 1.847117 0 0.874950 1.652683 0
+ L3 6815744 0.000000 0.874950 2.527633 0 0.680517 2.138767 0
+ L3 6815744 0.000000 -0.388867 2.430417 0 -0.194433 2.138767 0
+ L3 6815744 0.000000 -0.874950 1.069383 0 -0.388867 1.263817 0
+ L3 6815744 0.000000 -1.166600 0.583300 0 -0.777733 0.291650 0
+ L3 6815744 0.000000 -2.235983 0.194433 0 -1.749900 0.000000 0
+ L3 6815744 0.000000 -1.555467 -0.486083 0 -1.944333 -0.874950 0
+ L3 6815744 0.000000 -0.388867 -1.749900 0 -0.486083 -2.333200 0
+ L3 6815744 0.000000 -0.291650 -1.069383 0 -0.194433 -1.458250 0
+ L3 6815744 0.000000 0.680517 -1.749900 0 0.874950 -2.333200 0
+ L3 6815744 0.000000 1.166600 -1.652683 0 1.749900 -1.944333 0
+ L3 6815744 0.000000 2.624850 -0.680517 0 2.138767 -0.777733 0
+ L3 6815744 0.000000 2.624850 -1.555467 0 2.138767 -1.361033 0
+ L3 6815744 0.000000 2.819283 -1.166600 0 2.333200 -1.069383 0
+ L3 6815744 0.000000 1.166600 -2.819283 0 1.069383 -2.430417 0
+ L3 6815744 0.000000 1.749900 -2.527633 0 1.458250 -2.235983 0
+ L3 6815744 0.000000 2.916500 0.486083 0 2.333200 0.583300 0
+ L3 6815744 0.000000 2.916500 0.972167 0 2.430417 0.874950 0
+ L3 6815744 0.000000 -0.972167 -2.722067 0 -0.874950 -2.333200 0
+ L3 6815744 0.000000 -2.138767 -1.361033 0 -1.847117 -1.166600 0
+ L3 6815744 0.000000 1.361033 3.110933 0 1.166600 2.624850 0
+ L3 6815744 0.000000 1.749900 2.819283 0 1.458250 2.527633 0
+ L3 11184640 0.000000 1.361033 -2.624850 0 1.166600 -2.041550 0
+ L3 14915328 0.000000 1.555467 2.333200 0 1.263817 2.138767 0
+ L3 14915328 0.000000 -1.749900 0.486083 0 -1.361033 0.291650 0
+ F4 16755200 0.000000 4 0
+ 1.497698 1.539301 0
+ 0.887525 1.359023 0
+ 0.818187 0.901393 0
+ 1.220347 1.067803 0
+ F4 16755200 0.000000 3 0
+ 1.691844 -1.386758 0
+ 1.497698 -0.956863 0
+ 1.192612 -1.220347 0
+ F4 16755200 0.000000 4 0
+ -1.275817 -1.608639 0
+ -0.887525 -1.511566 0
+ -0.610173 -0.859790 0
+ -1.040068 -0.970730 0
+ L3 16755200 0.000000 0.194433 2.138767 0 0.388867 1.847117 0
+ L3 16755200 0.000000 -1.166600 1.555467 0 -0.777733 1.555467 0
+ L3 16755200 0.000000 -1.749900 -1.361033 0 -1.458250 -0.972167 0
+ L3 16755200 0.000000 -1.069383 -2.138767 0 -0.777733 -1.749900 0
+ L3 16755200 0.000000 2.430417 1.263817 0 1.944333 0.972167 0
+ END$SEGS
+STRUCTURE 157 3 0 0 0 A 2 4.500000 234.000000 0 0.000000 "Lg Fall 8"" Fall-8b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -2.419782 2.295585 0
+ -2.076517 3.593556 0
+ -1.304171 3.926095 0
+ -0.435281 2.853391 0
+ 0.562333 3.786643 0
+ 1.763761 3.218110 0
+ 1.484858 -3.164475 0
+ 0.347793 -3.765189 0
+ -0.124197 -3.035751 0
+ -1.078903 -3.046478 0
+ -1.314898 -3.786643 0
+ -2.784501 -3.314654 0
+ -2.602142 -2.445764 0
+ -3.814297 -2.359948 0
+ -4.436465 -1.104885 0
+ -3.749934 -0.396900 0
+ -4.651005 0.000000 0
+ -4.415011 0.901071 0
+ -3.460304 1.244336 0
+ -4.146835 1.802142 0
+ -3.589029 2.810483 0
+ F4 6815744 0.000000 28 0
+ -3.346835 1.802142 0
+ -2.789029 2.810483 0
+ -1.619782 2.295585 0
+ -1.276517 3.593556 0
+ -0.504171 3.926095 0
+ 0.364719 2.853391 0
+ 1.362333 3.786643 0
+ 2.563761 3.218110 0
+ 2.113226 2.027409 0
+ 3.550648 1.630509 0
+ 3.765189 0.278903 0
+ 3.014297 -0.418354 0
+ 3.722281 -1.426696 0
+ 3.185929 -2.327766 0
+ 2.317039 -2.005955 0
+ 2.284858 -3.164475 0
+ 1.147793 -3.765189 0
+ 0.675803 -3.035751 0
+ -0.278903 -3.046478 0
+ -0.514898 -3.786643 0
+ -1.984501 -3.314654 0
+ -1.802142 -2.445764 0
+ -3.014297 -2.359948 0
+ -3.636465 -1.104885 0
+ -2.949934 -0.396900 0
+ -3.851005 0.000000 0
+ -3.615011 0.901071 0
+ -2.660304 1.244336 0
+ F4 12410368 0.000000 26 0
+ 0.536352 2.510126 0
+ 1.287244 3.261018 0
+ 2.005955 2.821210 0
+ 1.684144 1.566147 0
+ 3.121567 1.169247 0
+ 3.218110 0.547079 0
+ 2.317039 -0.075089 0
+ 3.100113 -1.255063 0
+ 2.756848 -1.662690 0
+ 1.898685 -1.641236 0
+ 1.855777 -2.628123 0
+ 1.115612 -3.035751 0
+ 0.504171 -2.317039 0
+ -0.418354 -2.445764 0
+ -0.632895 -2.939207 0
+ -1.415969 -2.735394 0
+ -1.426696 -1.877231 0
+ -2.081045 -1.855777 0
+ -2.510126 -0.997614 0
+ -1.748507 -0.278903 0
+ -2.467218 0.096543 0
+ -2.349220 0.611441 0
+ -1.201428 0.825982 0
+ -1.641236 1.609055 0
+ -0.922525 2.166861 0
+ -0.632895 2.799756 0
+ L3 12410368 0.000000 -0.680517 3.305367 0 -0.291650 3.013717 0
+ L3 12410368 0.000000 -2.722067 1.847117 0 -2.430417 1.555467 0
+ L3 12410368 0.000000 -2.041550 1.652683 0 -1.652683 1.361033 0
+ L3 12410368 0.000000 -3.305367 0.777733 0 -2.624850 0.777733 0
+ L3 12410368 0.000000 -2.235983 -0.291650 0 -2.722067 -0.194433 0
+ L3 12410368 0.000000 -3.013717 -1.458250 0 -2.527633 -1.555467 0
+ L3 12410368 0.000000 -1.458250 -2.916500 0 -1.652683 -3.208150 0
+ L3 12410368 0.000000 -0.097217 -2.624850 0 0.000000 -2.916500 0
+ L3 12410368 0.000000 1.263817 -3.110933 0 1.166600 -3.499800 0
+ L3 12410368 0.000000 2.916500 -1.847117 0 3.110933 -2.138767 0
+ L3 12410368 0.000000 -2.722067 2.430417 0 -2.527633 2.041550 0
+ L3 14915328 0.000000 -3.110933 1.847117 0 -2.819283 2.041550 0
+ L3 16755200 0.000000 3.402583 0.291650 0 3.013717 0.194433 0
+ L3 16755200 0.000000 -0.972167 3.110933 0 -1.069383 2.624850 0
+ L3 16755200 0.000000 -2.235983 2.041550 0 -1.555467 2.041550 0
+ L3 16755200 0.000000 -1.847117 1.069383 0 -2.430417 0.972167 0
+ L3 16755200 0.000000 -3.305367 0.194433 0 -2.722067 0.486083 0
+ L3 16755200 0.000000 -2.624850 -0.680517 0 -3.305367 -1.069383 0
+ L3 16755200 0.000000 -2.333200 -2.235983 0 -2.138767 -1.944333 0
+ L3 16755200 0.000000 -0.874950 -3.110933 0 -0.680517 -3.402583 0
+ L3 16755200 0.000000 0.486083 -2.624850 0 0.194433 -2.819283 0
+ L3 16755200 0.000000 1.847117 -2.916500 0 2.138767 -3.013717 0
+ L3 16755200 0.000000 3.402583 -1.361033 0 3.110933 -1.458250 0
+ F4 6815744 0.000000 5 0
+ -0.582438 1.844388 0
+ -0.526968 1.525433 0
+ 0.069338 1.261950 0
+ 0.235749 1.650242 0
+ -0.069338 1.941461 0
+ F4 6815744 0.000000 4 0
+ 1.899858 -0.069338 0
+ 1.178744 -0.235749 0
+ 1.026201 0.124808 0
+ 2.010799 0.180279 0
+ F4 6815744 0.000000 4 0
+ 0.457630 -1.844388 0
+ 0.097073 -1.567036 0
+ 0.194146 -0.984598 0
+ 0.416027 -1.067803 0
+ F4 6815744 0.000000 5 0
+ -1.456096 -0.166411 0
+ -1.261950 -0.027735 0
+ -0.596306 0.138676 0
+ -0.235749 -0.235749 0
+ -1.067803 -0.360557 0
+ L3 6815744 0.000000 1.361033 1.847117 0 0.874950 1.652683 0
+ L3 6815744 0.000000 0.874950 2.527633 0 0.680517 2.138767 0
+ L3 6815744 0.000000 -0.388867 2.430417 0 -0.194433 2.138767 0
+ L3 6815744 0.000000 -0.874950 1.069383 0 -0.388867 1.263817 0
+ L3 6815744 0.000000 -1.166600 0.583300 0 -0.777733 0.291650 0
+ L3 6815744 0.000000 -2.235983 0.194433 0 -1.749900 0.000000 0
+ L3 6815744 0.000000 -1.555467 -0.486083 0 -1.944333 -0.874950 0
+ L3 6815744 0.000000 -0.388867 -1.749900 0 -0.486083 -2.333200 0
+ L3 6815744 0.000000 -0.291650 -1.069383 0 -0.194433 -1.458250 0
+ L3 6815744 0.000000 0.680517 -1.749900 0 0.874950 -2.333200 0
+ L3 6815744 0.000000 1.166600 -1.652683 0 1.749900 -1.944333 0
+ L3 6815744 0.000000 2.624850 -0.680517 0 2.138767 -0.777733 0
+ L3 6815744 0.000000 2.624850 -1.555467 0 2.138767 -1.361033 0
+ L3 6815744 0.000000 2.819283 -1.166600 0 2.333200 -1.069383 0
+ L3 6815744 0.000000 1.166600 -2.819283 0 1.069383 -2.430417 0
+ L3 6815744 0.000000 1.749900 -2.527633 0 1.458250 -2.235983 0
+ L3 6815744 0.000000 2.916500 0.486083 0 2.333200 0.583300 0
+ L3 6815744 0.000000 2.916500 0.972167 0 2.430417 0.874950 0
+ L3 6815744 0.000000 -0.972167 -2.722067 0 -0.874950 -2.333200 0
+ L3 6815744 0.000000 -2.138767 -1.361033 0 -1.847117 -1.166600 0
+ L3 6815744 0.000000 1.361033 3.110933 0 1.166600 2.624850 0
+ L3 6815744 0.000000 1.749900 2.819283 0 1.458250 2.527633 0
+ L3 11184640 0.000000 1.361033 -2.624850 0 1.166600 -2.041550 0
+ L3 14915328 0.000000 1.555467 2.333200 0 1.263817 2.138767 0
+ L3 14915328 0.000000 -1.749900 0.486083 0 -1.361033 0.291650 0
+ F4 16755200 0.000000 4 0
+ 1.497698 1.539301 0
+ 0.887525 1.359023 0
+ 0.818187 0.901393 0
+ 1.220347 1.067803 0
+ F4 16755200 0.000000 3 0
+ 1.691844 -1.386758 0
+ 1.497698 -0.956863 0
+ 1.192612 -1.220347 0
+ F4 16755200 0.000000 4 0
+ -1.275817 -1.608639 0
+ -0.887525 -1.511566 0
+ -0.610173 -0.859790 0
+ -1.040068 -0.970730 0
+ L3 16755200 0.000000 0.194433 2.138767 0 0.388867 1.847117 0
+ L3 16755200 0.000000 -1.166600 1.555467 0 -0.777733 1.555467 0
+ L3 16755200 0.000000 -1.749900 -1.361033 0 -1.458250 -0.972167 0
+ L3 16755200 0.000000 -1.069383 -2.138767 0 -0.777733 -1.749900 0
+ L3 16755200 0.000000 2.430417 1.263817 0 1.944333 0.972167 0
+ END$SEGS
+STRUCTURE 158 3 0 0 0 A 2 9.000000 181.500000 0 0.000000 "Lg Fall 12"" Fall-12b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.629673 3.443378 0
+ -3.114776 5.390335 0
+ -1.956256 5.889142 0
+ -0.652921 4.280087 0
+ 0.843500 5.679965 0
+ 2.645642 4.827165 0
+ 2.227287 -4.746713 0
+ 0.521689 -5.647783 0
+ -0.186295 -4.553626 0
+ -1.618354 -4.569717 0
+ -1.972346 -5.679965 0
+ -4.176752 -4.971980 0
+ -3.903213 -3.668646 0
+ -5.721445 -3.539921 0
+ -6.654697 -1.657327 0
+ -5.624902 -0.595350 0
+ -6.976508 0.000000 0
+ -6.622516 1.351606 0
+ -5.190457 1.866504 0
+ -6.220252 2.703213 0
+ -5.383543 4.215724 0
+ F4 6815744 0.000000 28 0
+ -5.020252 2.703213 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.914776 5.390335 0
+ -0.756256 5.889142 0
+ 0.547079 4.280087 0
+ 2.043500 5.679965 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 5.325972 2.445764 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 4.778894 -3.491650 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 1.721689 -5.647783 0
+ 1.013705 -4.553626 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -2.976752 -4.971980 0
+ -2.703213 -3.668646 0
+ -4.521445 -3.539921 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -5.422516 1.351606 0
+ -3.990457 1.866504 0
+ F4 12410368 0.000000 26 0
+ 0.804528 3.765189 0
+ 1.930866 4.891528 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.682350 1.753870 0
+ 4.827165 0.820618 0
+ 3.475559 -0.112634 0
+ 4.650169 -1.882594 0
+ 4.135272 -2.494035 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 1.673417 -4.553626 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.123953 -4.103091 0
+ -2.140043 -2.815846 0
+ -3.121567 -2.783665 0
+ -3.765189 -1.496421 0
+ -2.622760 -0.418354 0
+ -3.700827 0.144815 0
+ -3.523831 0.917161 0
+ -1.802142 1.238972 0
+ -2.461854 2.413583 0
+ -1.383787 3.250291 0
+ -0.949343 4.199634 0
+ L3 12410368 0.000000 -1.020775 4.958050 0 -0.437475 4.520575 0
+ L3 12410368 0.000000 -4.083100 2.770675 0 -3.645625 2.333200 0
+ L3 12410368 0.000000 -3.062325 2.479025 0 -2.479025 2.041550 0
+ L3 12410368 0.000000 -4.958050 1.166600 0 -3.937275 1.166600 0
+ L3 12410368 0.000000 -3.353975 -0.437475 0 -4.083100 -0.291650 0
+ L3 12410368 0.000000 -4.520575 -2.187375 0 -3.791450 -2.333200 0
+ L3 12410368 0.000000 -2.187375 -4.374750 0 -2.479025 -4.812225 0
+ L3 12410368 0.000000 -0.145825 -3.937275 0 0.000000 -4.374750 0
+ L3 12410368 0.000000 1.895725 -4.666400 0 1.749900 -5.249700 0
+ L3 12410368 0.000000 4.374750 -2.770675 0 4.666400 -3.208150 0
+ L3 12410368 0.000000 -4.083100 3.645625 0 -3.791450 3.062325 0
+ L3 14915328 0.000000 -4.666400 2.770675 0 -4.228925 3.062325 0
+ L3 16755200 0.000000 5.103875 0.437475 0 4.520575 0.291650 0
+ L3 16755200 0.000000 -1.458250 4.666400 0 -1.604075 3.937275 0
+ L3 16755200 0.000000 -3.353975 3.062325 0 -2.333200 3.062325 0
+ L3 16755200 0.000000 -2.770675 1.604075 0 -3.645625 1.458250 0
+ L3 16755200 0.000000 -4.958050 0.291650 0 -4.083100 0.729125 0
+ L3 16755200 0.000000 -3.937275 -1.020775 0 -4.958050 -1.604075 0
+ L3 16755200 0.000000 -3.499800 -3.353975 0 -3.208150 -2.916500 0
+ L3 16755200 0.000000 -1.312425 -4.666400 0 -1.020775 -5.103875 0
+ L3 16755200 0.000000 0.729125 -3.937275 0 0.291650 -4.228925 0
+ L3 16755200 0.000000 2.770675 -4.374750 0 3.208150 -4.520575 0
+ L3 16755200 0.000000 5.103875 -2.041550 0 4.666400 -2.187375 0
+ F4 6815744 0.000000 5 0
+ -0.873657 2.766582 0
+ -0.790452 2.288150 0
+ 0.104007 1.892924 0
+ 0.353623 2.475363 0
+ -0.104007 2.912191 0
+ F4 6815744 0.000000 4 0
+ 2.849787 -0.104007 0
+ 1.768116 -0.353623 0
+ 1.539301 0.187212 0
+ 3.016198 0.270418 0
+ F4 6815744 0.000000 4 0
+ 0.686445 -2.766582 0
+ 0.145610 -2.350554 0
+ 0.291219 -1.476897 0
+ 0.624041 -1.601705 0
+ F4 6815744 0.000000 5 0
+ -2.184143 -0.249616 0
+ -1.892924 -0.041603 0
+ -0.894459 0.208014 0
+ -0.353623 -0.353623 0
+ -1.601705 -0.540836 0
+ L3 6815744 0.000000 2.041550 2.770675 0 1.312425 2.479025 0
+ L3 6815744 0.000000 1.312425 3.791450 0 1.020775 3.208150 0
+ L3 6815744 0.000000 -0.583300 3.645625 0 -0.291650 3.208150 0
+ L3 6815744 0.000000 -1.312425 1.604075 0 -0.583300 1.895725 0
+ L3 6815744 0.000000 -1.749900 0.874950 0 -1.166600 0.437475 0
+ L3 6815744 0.000000 -3.353975 0.291650 0 -2.624850 0.000000 0
+ L3 6815744 0.000000 -2.333200 -0.729125 0 -2.916500 -1.312425 0
+ L3 6815744 0.000000 -0.583300 -2.624850 0 -0.729125 -3.499800 0
+ L3 6815744 0.000000 -0.437475 -1.604075 0 -0.291650 -2.187375 0
+ L3 6815744 0.000000 1.020775 -2.624850 0 1.312425 -3.499800 0
+ L3 6815744 0.000000 1.749900 -2.479025 0 2.624850 -2.916500 0
+ L3 6815744 0.000000 3.937275 -1.020775 0 3.208150 -1.166600 0
+ L3 6815744 0.000000 3.937275 -2.333200 0 3.208150 -2.041550 0
+ L3 6815744 0.000000 4.228925 -1.749900 0 3.499800 -1.604075 0
+ L3 6815744 0.000000 1.749900 -4.228925 0 1.604075 -3.645625 0
+ L3 6815744 0.000000 2.624850 -3.791450 0 2.187375 -3.353975 0
+ L3 6815744 0.000000 4.374750 0.729125 0 3.499800 0.874950 0
+ L3 6815744 0.000000 4.374750 1.458250 0 3.645625 1.312425 0
+ L3 6815744 0.000000 -1.458250 -4.083100 0 -1.312425 -3.499800 0
+ L3 6815744 0.000000 -3.208150 -2.041550 0 -2.770675 -1.749900 0
+ L3 6815744 0.000000 2.041550 4.666400 0 1.749900 3.937275 0
+ L3 6815744 0.000000 2.624850 4.228925 0 2.187375 3.791450 0
+ L3 11184640 0.000000 2.041550 -3.937275 0 1.749900 -3.062325 0
+ L3 14915328 0.000000 2.333200 3.499800 0 1.895725 3.208150 0
+ L3 14915328 0.000000 -2.624850 0.729125 0 -2.041550 0.437475 0
+ F4 16755200 0.000000 4 0
+ 2.246548 2.308952 0
+ 1.331287 2.038534 0
+ 1.227281 1.352089 0
+ 1.830520 1.601705 0
+ F4 16755200 0.000000 3 0
+ 2.537767 -2.080137 0
+ 2.246548 -1.435294 0
+ 1.788917 -1.830520 0
+ F4 16755200 0.000000 4 0
+ -1.913726 -2.412958 0
+ -1.331287 -2.267349 0
+ -0.915260 -1.289685 0
+ -1.560102 -1.456096 0
+ L3 16755200 0.000000 0.291650 3.208150 0 0.583300 2.770675 0
+ L3 16755200 0.000000 -1.749900 2.333200 0 -1.166600 2.333200 0
+ L3 16755200 0.000000 -2.624850 -2.041550 0 -2.187375 -1.458250 0
+ L3 16755200 0.000000 -1.604075 -3.208150 0 -1.166600 -2.624850 0
+ L3 16755200 0.000000 3.645625 1.895725 0 2.916500 1.458250 0
+ END$SEGS
+STRUCTURE 159 3 0 0 0 A 2 10.000000 157.500000 0 0.000000 "Lg Fall 10"" Fall-10b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.024728 2.869482 0
+ -2.595646 4.491946 0
+ -1.630213 4.907618 0
+ -0.544101 3.566739 0
+ 0.702917 4.733304 0
+ 2.204701 4.022638 0
+ 1.856073 -3.955594 0
+ 0.434741 -4.706486 0
+ -0.155246 -3.794688 0
+ -1.348629 -3.808097 0
+ -1.643622 -4.733304 0
+ -3.480627 -4.143317 0
+ -3.252677 -3.057205 0
+ -4.767871 -2.949934 0
+ -5.545581 -1.381106 0
+ -4.687418 -0.496125 0
+ -5.813757 0.000000 0
+ -5.518763 1.126339 0
+ -4.325381 1.555420 0
+ -5.183543 2.252677 0
+ -4.486286 3.513104 0
+ F4 6815744 0.000000 28 0
+ -4.183543 2.252677 0
+ -3.486286 3.513104 0
+ -2.024728 2.869482 0
+ -1.595646 4.491946 0
+ -0.630213 4.907618 0
+ 0.455899 3.566739 0
+ 1.702917 4.733304 0
+ 3.204701 4.022638 0
+ 2.641532 2.534262 0
+ 4.438310 2.038136 0
+ 4.706486 0.348629 0
+ 3.767871 -0.522943 0
+ 4.652851 -1.783369 0
+ 3.982411 -2.909708 0
+ 2.896299 -2.507444 0
+ 2.856073 -3.955594 0
+ 1.434741 -4.706486 0
+ 0.844754 -3.794688 0
+ -0.348629 -3.808097 0
+ -0.643622 -4.733304 0
+ -2.480627 -4.143317 0
+ -2.252677 -3.057205 0
+ -3.767871 -2.949934 0
+ -4.545581 -1.381106 0
+ -3.687418 -0.496125 0
+ -4.813757 0.000000 0
+ -4.518763 1.126339 0
+ -3.325381 1.555420 0
+ F4 12410368 0.000000 26 0
+ 0.670440 3.137657 0
+ 1.609055 4.076273 0
+ 2.507444 3.526512 0
+ 2.105180 1.957684 0
+ 3.901959 1.461558 0
+ 4.022638 0.683848 0
+ 2.896299 -0.093862 0
+ 3.875141 -1.568829 0
+ 3.446060 -2.078363 0
+ 2.373356 -2.051545 0
+ 2.319721 -3.285154 0
+ 1.394514 -3.794688 0
+ 0.630213 -2.896299 0
+ -0.522943 -3.057205 0
+ -0.791119 -3.674009 0
+ -1.769961 -3.419242 0
+ -1.783369 -2.346539 0
+ -2.601306 -2.319721 0
+ -3.137657 -1.247018 0
+ -2.185633 -0.348629 0
+ -3.084022 0.120679 0
+ -2.936526 0.764301 0
+ -1.501785 1.032477 0
+ -2.051545 2.011319 0
+ -1.153156 2.708576 0
+ -0.791119 3.499695 0
+ L3 12410368 0.000000 -0.850646 4.131708 0 -0.364562 3.767146 0
+ L3 12410368 0.000000 -3.402583 2.308896 0 -3.038021 1.944333 0
+ L3 12410368 0.000000 -2.551937 2.065854 0 -2.065854 1.701292 0
+ L3 12410368 0.000000 -4.131708 0.972167 0 -3.281062 0.972167 0
+ L3 12410368 0.000000 -2.794979 -0.364562 0 -3.402583 -0.243042 0
+ L3 12410368 0.000000 -3.767146 -1.822812 0 -3.159542 -1.944333 0
+ L3 12410368 0.000000 -1.822812 -3.645625 0 -2.065854 -4.010187 0
+ L3 12410368 0.000000 -0.121521 -3.281062 0 0.000000 -3.645625 0
+ L3 12410368 0.000000 1.579771 -3.888667 0 1.458250 -4.374750 0
+ L3 12410368 0.000000 3.645625 -2.308896 0 3.888667 -2.673458 0
+ L3 12410368 0.000000 -3.402583 3.038021 0 -3.159542 2.551937 0
+ L3 14915328 0.000000 -3.888667 2.308896 0 -3.524104 2.551937 0
+ L3 16755200 0.000000 4.253229 0.364562 0 3.767146 0.243042 0
+ L3 16755200 0.000000 -1.215208 3.888667 0 -1.336729 3.281062 0
+ L3 16755200 0.000000 -2.794979 2.551937 0 -1.944333 2.551937 0
+ L3 16755200 0.000000 -2.308896 1.336729 0 -3.038021 1.215208 0
+ L3 16755200 0.000000 -4.131708 0.243042 0 -3.402583 0.607604 0
+ L3 16755200 0.000000 -3.281062 -0.850646 0 -4.131708 -1.336729 0
+ L3 16755200 0.000000 -2.916500 -2.794979 0 -2.673458 -2.430417 0
+ L3 16755200 0.000000 -1.093687 -3.888667 0 -0.850646 -4.253229 0
+ L3 16755200 0.000000 0.607604 -3.281062 0 0.243042 -3.524104 0
+ L3 16755200 0.000000 2.308896 -3.645625 0 2.673458 -3.767146 0
+ L3 16755200 0.000000 4.253229 -1.701292 0 3.888667 -1.822812 0
+ F4 6815744 0.000000 5 0
+ -0.728048 2.305485 0
+ -0.658710 1.906792 0
+ 0.086672 1.577437 0
+ 0.294686 2.062802 0
+ -0.086672 2.426826 0
+ F4 6815744 0.000000 4 0
+ 2.374823 -0.086672 0
+ 1.473430 -0.294686 0
+ 1.282751 0.156010 0
+ 2.513498 0.225348 0
+ F4 6815744 0.000000 4 0
+ 0.572038 -2.305485 0
+ 0.121341 -1.958795 0
+ 0.242683 -1.230747 0
+ 0.520034 -1.334754 0
+ F4 6815744 0.000000 5 0
+ -1.820120 -0.208014 0
+ -1.577437 -0.034669 0
+ -0.745382 0.173345 0
+ -0.294686 -0.294686 0
+ -1.334754 -0.450696 0
+ L3 6815744 0.000000 1.701292 2.308896 0 1.093687 2.065854 0
+ L3 6815744 0.000000 1.093687 3.159542 0 0.850646 2.673458 0
+ L3 6815744 0.000000 -0.486083 3.038021 0 -0.243042 2.673458 0
+ L3 6815744 0.000000 -1.093687 1.336729 0 -0.486083 1.579771 0
+ L3 6815744 0.000000 -1.458250 0.729125 0 -0.972167 0.364562 0
+ L3 6815744 0.000000 -2.794979 0.243042 0 -2.187375 0.000000 0
+ L3 6815744 0.000000 -1.944333 -0.607604 0 -2.430417 -1.093687 0
+ L3 6815744 0.000000 -0.486083 -2.187375 0 -0.607604 -2.916500 0
+ L3 6815744 0.000000 -0.364562 -1.336729 0 -0.243042 -1.822812 0
+ L3 6815744 0.000000 0.850646 -2.187375 0 1.093687 -2.916500 0
+ L3 6815744 0.000000 1.458250 -2.065854 0 2.187375 -2.430417 0
+ L3 6815744 0.000000 3.281062 -0.850646 0 2.673458 -0.972167 0
+ L3 6815744 0.000000 3.281062 -1.944333 0 2.673458 -1.701292 0
+ L3 6815744 0.000000 3.524104 -1.458250 0 2.916500 -1.336729 0
+ L3 6815744 0.000000 1.458250 -3.524104 0 1.336729 -3.038021 0
+ L3 6815744 0.000000 2.187375 -3.159542 0 1.822812 -2.794979 0
+ L3 6815744 0.000000 3.645625 0.607604 0 2.916500 0.729125 0
+ L3 6815744 0.000000 3.645625 1.215208 0 3.038021 1.093687 0
+ L3 6815744 0.000000 -1.215208 -3.402583 0 -1.093687 -2.916500 0
+ L3 6815744 0.000000 -2.673458 -1.701292 0 -2.308896 -1.458250 0
+ L3 6815744 0.000000 1.701292 3.888667 0 1.458250 3.281062 0
+ L3 6815744 0.000000 2.187375 3.524104 0 1.822812 3.159542 0
+ L3 11184640 0.000000 1.701292 -3.281062 0 1.458250 -2.551937 0
+ L3 14915328 0.000000 1.944333 2.916500 0 1.579771 2.673458 0
+ L3 14915328 0.000000 -2.187375 0.607604 0 -1.701292 0.364562 0
+ F4 16755200 0.000000 4 0
+ 1.872123 1.924126 0
+ 1.109406 1.698778 0
+ 1.022734 1.126741 0
+ 1.525433 1.334754 0
+ F4 16755200 0.000000 3 0
+ 2.114806 -1.733447 0
+ 1.872123 -1.196079 0
+ 1.490765 -1.525433 0
+ F4 16755200 0.000000 4 0
+ -1.594771 -2.010799 0
+ -1.109406 -1.889457 0
+ -0.762717 -1.074737 0
+ -1.300085 -1.213413 0
+ L3 16755200 0.000000 0.243042 2.673458 0 0.486083 2.308896 0
+ L3 16755200 0.000000 -1.458250 1.944333 0 -0.972167 1.944333 0
+ L3 16755200 0.000000 -2.187375 -1.701292 0 -1.822812 -1.215208 0
+ L3 16755200 0.000000 -1.336729 -2.673458 0 -0.972167 -2.187375 0
+ L3 16755200 0.000000 3.038021 1.579771 0 2.430417 1.215208 0
+ END$SEGS
+STRUCTURE 160 3 0 0 0 A 2 96.500000 231.500000 0 0.000000 "Lg Fall 10"" Fall-10b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.024728 2.869482 0
+ -2.595646 4.491946 0
+ -1.630213 4.907618 0
+ -0.544101 3.566739 0
+ 0.702917 4.733304 0
+ 2.204701 4.022638 0
+ 1.856073 -3.955594 0
+ 0.434741 -4.706486 0
+ -0.155246 -3.794688 0
+ -1.348629 -3.808097 0
+ -1.643622 -4.733304 0
+ -3.480627 -4.143317 0
+ -3.252677 -3.057205 0
+ -4.767871 -2.949934 0
+ -5.545581 -1.381106 0
+ -4.687418 -0.496125 0
+ -5.813757 0.000000 0
+ -5.518763 1.126339 0
+ -4.325381 1.555420 0
+ -5.183543 2.252677 0
+ -4.486286 3.513104 0
+ F4 6815744 0.000000 28 0
+ -4.183543 2.252677 0
+ -3.486286 3.513104 0
+ -2.024728 2.869482 0
+ -1.595646 4.491946 0
+ -0.630213 4.907618 0
+ 0.455899 3.566739 0
+ 1.702917 4.733304 0
+ 3.204701 4.022638 0
+ 2.641532 2.534262 0
+ 4.438310 2.038136 0
+ 4.706486 0.348629 0
+ 3.767871 -0.522943 0
+ 4.652851 -1.783369 0
+ 3.982411 -2.909708 0
+ 2.896299 -2.507444 0
+ 2.856073 -3.955594 0
+ 1.434741 -4.706486 0
+ 0.844754 -3.794688 0
+ -0.348629 -3.808097 0
+ -0.643622 -4.733304 0
+ -2.480627 -4.143317 0
+ -2.252677 -3.057205 0
+ -3.767871 -2.949934 0
+ -4.545581 -1.381106 0
+ -3.687418 -0.496125 0
+ -4.813757 0.000000 0
+ -4.518763 1.126339 0
+ -3.325381 1.555420 0
+ F4 12410368 0.000000 26 0
+ 0.670440 3.137657 0
+ 1.609055 4.076273 0
+ 2.507444 3.526512 0
+ 2.105180 1.957684 0
+ 3.901959 1.461558 0
+ 4.022638 0.683848 0
+ 2.896299 -0.093862 0
+ 3.875141 -1.568829 0
+ 3.446060 -2.078363 0
+ 2.373356 -2.051545 0
+ 2.319721 -3.285154 0
+ 1.394514 -3.794688 0
+ 0.630213 -2.896299 0
+ -0.522943 -3.057205 0
+ -0.791119 -3.674009 0
+ -1.769961 -3.419242 0
+ -1.783369 -2.346539 0
+ -2.601306 -2.319721 0
+ -3.137657 -1.247018 0
+ -2.185633 -0.348629 0
+ -3.084022 0.120679 0
+ -2.936526 0.764301 0
+ -1.501785 1.032477 0
+ -2.051545 2.011319 0
+ -1.153156 2.708576 0
+ -0.791119 3.499695 0
+ L3 12410368 0.000000 -0.850646 4.131708 0 -0.364562 3.767146 0
+ L3 12410368 0.000000 -3.402583 2.308896 0 -3.038021 1.944333 0
+ L3 12410368 0.000000 -2.551937 2.065854 0 -2.065854 1.701292 0
+ L3 12410368 0.000000 -4.131708 0.972167 0 -3.281062 0.972167 0
+ L3 12410368 0.000000 -2.794979 -0.364562 0 -3.402583 -0.243042 0
+ L3 12410368 0.000000 -3.767146 -1.822812 0 -3.159542 -1.944333 0
+ L3 12410368 0.000000 -1.822812 -3.645625 0 -2.065854 -4.010187 0
+ L3 12410368 0.000000 -0.121521 -3.281062 0 0.000000 -3.645625 0
+ L3 12410368 0.000000 1.579771 -3.888667 0 1.458250 -4.374750 0
+ L3 12410368 0.000000 3.645625 -2.308896 0 3.888667 -2.673458 0
+ L3 12410368 0.000000 -3.402583 3.038021 0 -3.159542 2.551937 0
+ L3 14915328 0.000000 -3.888667 2.308896 0 -3.524104 2.551937 0
+ L3 16755200 0.000000 4.253229 0.364562 0 3.767146 0.243042 0
+ L3 16755200 0.000000 -1.215208 3.888667 0 -1.336729 3.281062 0
+ L3 16755200 0.000000 -2.794979 2.551937 0 -1.944333 2.551937 0
+ L3 16755200 0.000000 -2.308896 1.336729 0 -3.038021 1.215208 0
+ L3 16755200 0.000000 -4.131708 0.243042 0 -3.402583 0.607604 0
+ L3 16755200 0.000000 -3.281062 -0.850646 0 -4.131708 -1.336729 0
+ L3 16755200 0.000000 -2.916500 -2.794979 0 -2.673458 -2.430417 0
+ L3 16755200 0.000000 -1.093687 -3.888667 0 -0.850646 -4.253229 0
+ L3 16755200 0.000000 0.607604 -3.281062 0 0.243042 -3.524104 0
+ L3 16755200 0.000000 2.308896 -3.645625 0 2.673458 -3.767146 0
+ L3 16755200 0.000000 4.253229 -1.701292 0 3.888667 -1.822812 0
+ F4 6815744 0.000000 5 0
+ -0.728048 2.305485 0
+ -0.658710 1.906792 0
+ 0.086672 1.577437 0
+ 0.294686 2.062802 0
+ -0.086672 2.426826 0
+ F4 6815744 0.000000 4 0
+ 2.374823 -0.086672 0
+ 1.473430 -0.294686 0
+ 1.282751 0.156010 0
+ 2.513498 0.225348 0
+ F4 6815744 0.000000 4 0
+ 0.572038 -2.305485 0
+ 0.121341 -1.958795 0
+ 0.242683 -1.230747 0
+ 0.520034 -1.334754 0
+ F4 6815744 0.000000 5 0
+ -1.820120 -0.208014 0
+ -1.577437 -0.034669 0
+ -0.745382 0.173345 0
+ -0.294686 -0.294686 0
+ -1.334754 -0.450696 0
+ L3 6815744 0.000000 1.701292 2.308896 0 1.093687 2.065854 0
+ L3 6815744 0.000000 1.093687 3.159542 0 0.850646 2.673458 0
+ L3 6815744 0.000000 -0.486083 3.038021 0 -0.243042 2.673458 0
+ L3 6815744 0.000000 -1.093687 1.336729 0 -0.486083 1.579771 0
+ L3 6815744 0.000000 -1.458250 0.729125 0 -0.972167 0.364562 0
+ L3 6815744 0.000000 -2.794979 0.243042 0 -2.187375 0.000000 0
+ L3 6815744 0.000000 -1.944333 -0.607604 0 -2.430417 -1.093687 0
+ L3 6815744 0.000000 -0.486083 -2.187375 0 -0.607604 -2.916500 0
+ L3 6815744 0.000000 -0.364562 -1.336729 0 -0.243042 -1.822812 0
+ L3 6815744 0.000000 0.850646 -2.187375 0 1.093687 -2.916500 0
+ L3 6815744 0.000000 1.458250 -2.065854 0 2.187375 -2.430417 0
+ L3 6815744 0.000000 3.281062 -0.850646 0 2.673458 -0.972167 0
+ L3 6815744 0.000000 3.281062 -1.944333 0 2.673458 -1.701292 0
+ L3 6815744 0.000000 3.524104 -1.458250 0 2.916500 -1.336729 0
+ L3 6815744 0.000000 1.458250 -3.524104 0 1.336729 -3.038021 0
+ L3 6815744 0.000000 2.187375 -3.159542 0 1.822812 -2.794979 0
+ L3 6815744 0.000000 3.645625 0.607604 0 2.916500 0.729125 0
+ L3 6815744 0.000000 3.645625 1.215208 0 3.038021 1.093687 0
+ L3 6815744 0.000000 -1.215208 -3.402583 0 -1.093687 -2.916500 0
+ L3 6815744 0.000000 -2.673458 -1.701292 0 -2.308896 -1.458250 0
+ L3 6815744 0.000000 1.701292 3.888667 0 1.458250 3.281062 0
+ L3 6815744 0.000000 2.187375 3.524104 0 1.822812 3.159542 0
+ L3 11184640 0.000000 1.701292 -3.281062 0 1.458250 -2.551937 0
+ L3 14915328 0.000000 1.944333 2.916500 0 1.579771 2.673458 0
+ L3 14915328 0.000000 -2.187375 0.607604 0 -1.701292 0.364562 0
+ F4 16755200 0.000000 4 0
+ 1.872123 1.924126 0
+ 1.109406 1.698778 0
+ 1.022734 1.126741 0
+ 1.525433 1.334754 0
+ F4 16755200 0.000000 3 0
+ 2.114806 -1.733447 0
+ 1.872123 -1.196079 0
+ 1.490765 -1.525433 0
+ F4 16755200 0.000000 4 0
+ -1.594771 -2.010799 0
+ -1.109406 -1.889457 0
+ -0.762717 -1.074737 0
+ -1.300085 -1.213413 0
+ L3 16755200 0.000000 0.243042 2.673458 0 0.486083 2.308896 0
+ L3 16755200 0.000000 -1.458250 1.944333 0 -0.972167 1.944333 0
+ L3 16755200 0.000000 -2.187375 -1.701292 0 -1.822812 -1.215208 0
+ L3 16755200 0.000000 -1.336729 -2.673458 0 -0.972167 -2.187375 0
+ L3 16755200 0.000000 3.038021 1.579771 0 2.430417 1.215208 0
+ END$SEGS
+STRUCTURE 161 3 0 0 0 A 2 82.500000 234.000000 0 0.000000 "Lg Fall 12"" Fall-12a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.629673 -3.443378 0
+ -3.114776 -5.390335 0
+ -1.956256 -5.889142 0
+ -0.652921 -4.280087 0
+ 0.843500 -5.679965 0
+ 2.645642 -4.827165 0
+ 2.227287 4.746713 0
+ 0.521689 5.647783 0
+ -0.186295 4.553626 0
+ -1.618354 4.569717 0
+ -1.972346 5.679965 0
+ -4.176752 4.971980 0
+ -3.903213 3.668646 0
+ -5.721445 3.539921 0
+ -6.654697 1.657327 0
+ -5.624902 0.595350 0
+ -6.976508 0.000000 0
+ -6.622516 -1.351606 0
+ -5.190457 -1.866504 0
+ -6.220252 -2.703213 0
+ -5.383543 -4.215724 0
+ F4 6842368 0.000000 28 0
+ -5.020252 -2.703213 0
+ -4.183543 -4.215724 0
+ -2.429673 -3.443378 0
+ -1.914776 -5.390335 0
+ -0.756256 -5.889142 0
+ 0.547079 -4.280087 0
+ 2.043500 -5.679965 0
+ 3.845642 -4.827165 0
+ 3.169839 -3.041114 0
+ 5.325972 -2.445764 0
+ 5.647783 -0.418354 0
+ 4.521445 0.627531 0
+ 5.583421 2.140043 0
+ 4.778894 3.491650 0
+ 3.475559 3.008933 0
+ 3.427287 4.746713 0
+ 1.721689 5.647783 0
+ 1.013705 4.553626 0
+ -0.418354 4.569717 0
+ -0.772346 5.679965 0
+ -2.976752 4.971980 0
+ -2.703213 3.668646 0
+ -4.521445 3.539921 0
+ -5.454697 1.657327 0
+ -4.424902 0.595350 0
+ -5.776508 0.000000 0
+ -5.422516 -1.351606 0
+ -3.990457 -1.866504 0
+ F4 12434688 0.000000 26 0
+ 0.804528 -3.765189 0
+ 1.930866 -4.891528 0
+ 3.008933 -4.231815 0
+ 2.526217 -2.349220 0
+ 4.682350 -1.753870 0
+ 4.827165 -0.820618 0
+ 3.475559 0.112634 0
+ 4.650169 1.882594 0
+ 4.135272 2.494035 0
+ 2.848028 2.461854 0
+ 2.783665 3.942185 0
+ 1.673417 4.553626 0
+ 0.756256 3.475559 0
+ -0.627531 3.668646 0
+ -0.949343 4.408811 0
+ -2.123953 4.103091 0
+ -2.140043 2.815846 0
+ -3.121567 2.783665 0
+ -3.765189 1.496421 0
+ -2.622760 0.418354 0
+ -3.700827 -0.144815 0
+ -3.523831 -0.917161 0
+ -1.802142 -1.238972 0
+ -2.461854 -2.413583 0
+ -1.383787 -3.250291 0
+ -0.949343 -4.199634 0
+ L3 12434688 0.000000 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 12434688 0.000000 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 12434688 0.000000 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 12434688 0.000000 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 12434688 0.000000 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 12434688 0.000000 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 12434688 0.000000 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 12434688 0.000000 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 12434688 0.000000 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 12434688 0.000000 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 12434688 0.000000 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ L3 16755200 0.000000 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 16755200 0.000000 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 16755200 0.000000 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 16755200 0.000000 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 16755200 0.000000 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 16755200 0.000000 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 16755200 0.000000 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 16755200 0.000000 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 16755200 0.000000 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 16755200 0.000000 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 16755200 0.000000 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 16755200 0.000000 5.103875 -0.437475 0 4.520575 -0.291650 0
+ F4 6842368 0.000000 4 0
+ 2.246548 -2.308952 0
+ 1.331287 -2.038534 0
+ 1.227281 -1.352089 0
+ 1.830520 -1.601705 0
+ F4 6842368 0.000000 4 0
+ 2.849787 0.104007 0
+ 1.768116 0.353623 0
+ 1.539301 -0.187212 0
+ 3.016198 -0.270418 0
+ F4 6842368 0.000000 4 0
+ 0.686445 2.766582 0
+ 0.145610 2.350554 0
+ 0.291219 1.476897 0
+ 0.624041 1.601705 0
+ F4 6842368 0.000000 5 0
+ -2.184143 0.249616 0
+ -1.892924 0.041603 0
+ -0.894459 -0.208014 0
+ -0.353623 0.353623 0
+ -1.601705 0.540836 0
+ L3 6842368 0.000000 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 6842368 0.000000 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 6842368 0.000000 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 6842368 0.000000 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 6842368 0.000000 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 6842368 0.000000 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 6842368 0.000000 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 6842368 0.000000 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 6842368 0.000000 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 6842368 0.000000 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 6842368 0.000000 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 6842368 0.000000 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 6842368 0.000000 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 6842368 0.000000 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 6842368 0.000000 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 6842368 0.000000 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 6842368 0.000000 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 6842368 0.000000 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 6842368 0.000000 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 6842368 0.000000 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 6842368 0.000000 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 6842368 0.000000 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 6842368 0.000000 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 6842368 0.000000 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 6842368 0.000000 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 6842368 0.000000 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 6842368 0.000000 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 6842368 0.000000 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 6842368 0.000000 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 6842368 0.000000 2.624850 -4.228925 0 2.187375 -3.791450 0
+ F4 16755200 0.000000 5 0
+ -0.873657 -2.766582 0
+ -0.790452 -2.288150 0
+ 0.104007 -1.892924 0
+ 0.353623 -2.475363 0
+ -0.104007 -2.912191 0
+ F4 16755200 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 16755200 0.000000 4 0
+ -1.913726 2.412958 0
+ -1.331287 2.267349 0
+ -0.915260 1.289685 0
+ -1.560102 1.456096 0
+ END$SEGS
+STRUCTURE 162 3 0 0 0 A 2 111.500000 234.000000 0 0.000000 "Lg Fall 12"" Fall-12a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.629673 -3.443378 0
+ -3.114776 -5.390335 0
+ -1.956256 -5.889142 0
+ -0.652921 -4.280087 0
+ 0.843500 -5.679965 0
+ 2.645642 -4.827165 0
+ 2.227287 4.746713 0
+ 0.521689 5.647783 0
+ -0.186295 4.553626 0
+ -1.618354 4.569717 0
+ -1.972346 5.679965 0
+ -4.176752 4.971980 0
+ -3.903213 3.668646 0
+ -5.721445 3.539921 0
+ -6.654697 1.657327 0
+ -5.624902 0.595350 0
+ -6.976508 0.000000 0
+ -6.622516 -1.351606 0
+ -5.190457 -1.866504 0
+ -6.220252 -2.703213 0
+ -5.383543 -4.215724 0
+ F4 6842368 0.000000 28 0
+ -5.020252 -2.703213 0
+ -4.183543 -4.215724 0
+ -2.429673 -3.443378 0
+ -1.914776 -5.390335 0
+ -0.756256 -5.889142 0
+ 0.547079 -4.280087 0
+ 2.043500 -5.679965 0
+ 3.845642 -4.827165 0
+ 3.169839 -3.041114 0
+ 5.325972 -2.445764 0
+ 5.647783 -0.418354 0
+ 4.521445 0.627531 0
+ 5.583421 2.140043 0
+ 4.778894 3.491650 0
+ 3.475559 3.008933 0
+ 3.427287 4.746713 0
+ 1.721689 5.647783 0
+ 1.013705 4.553626 0
+ -0.418354 4.569717 0
+ -0.772346 5.679965 0
+ -2.976752 4.971980 0
+ -2.703213 3.668646 0
+ -4.521445 3.539921 0
+ -5.454697 1.657327 0
+ -4.424902 0.595350 0
+ -5.776508 0.000000 0
+ -5.422516 -1.351606 0
+ -3.990457 -1.866504 0
+ F4 12434688 0.000000 26 0
+ 0.804528 -3.765189 0
+ 1.930866 -4.891528 0
+ 3.008933 -4.231815 0
+ 2.526217 -2.349220 0
+ 4.682350 -1.753870 0
+ 4.827165 -0.820618 0
+ 3.475559 0.112634 0
+ 4.650169 1.882594 0
+ 4.135272 2.494035 0
+ 2.848028 2.461854 0
+ 2.783665 3.942185 0
+ 1.673417 4.553626 0
+ 0.756256 3.475559 0
+ -0.627531 3.668646 0
+ -0.949343 4.408811 0
+ -2.123953 4.103091 0
+ -2.140043 2.815846 0
+ -3.121567 2.783665 0
+ -3.765189 1.496421 0
+ -2.622760 0.418354 0
+ -3.700827 -0.144815 0
+ -3.523831 -0.917161 0
+ -1.802142 -1.238972 0
+ -2.461854 -2.413583 0
+ -1.383787 -3.250291 0
+ -0.949343 -4.199634 0
+ L3 12434688 0.000000 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 12434688 0.000000 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 12434688 0.000000 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 12434688 0.000000 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 12434688 0.000000 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 12434688 0.000000 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 12434688 0.000000 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 12434688 0.000000 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 12434688 0.000000 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 12434688 0.000000 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 12434688 0.000000 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ L3 16755200 0.000000 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 16755200 0.000000 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 16755200 0.000000 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 16755200 0.000000 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 16755200 0.000000 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 16755200 0.000000 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 16755200 0.000000 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 16755200 0.000000 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 16755200 0.000000 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 16755200 0.000000 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 16755200 0.000000 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 16755200 0.000000 5.103875 -0.437475 0 4.520575 -0.291650 0
+ F4 6842368 0.000000 4 0
+ 2.246548 -2.308952 0
+ 1.331287 -2.038534 0
+ 1.227281 -1.352089 0
+ 1.830520 -1.601705 0
+ F4 6842368 0.000000 4 0
+ 2.849787 0.104007 0
+ 1.768116 0.353623 0
+ 1.539301 -0.187212 0
+ 3.016198 -0.270418 0
+ F4 6842368 0.000000 4 0
+ 0.686445 2.766582 0
+ 0.145610 2.350554 0
+ 0.291219 1.476897 0
+ 0.624041 1.601705 0
+ F4 6842368 0.000000 5 0
+ -2.184143 0.249616 0
+ -1.892924 0.041603 0
+ -0.894459 -0.208014 0
+ -0.353623 0.353623 0
+ -1.601705 0.540836 0
+ L3 6842368 0.000000 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 6842368 0.000000 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 6842368 0.000000 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 6842368 0.000000 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 6842368 0.000000 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 6842368 0.000000 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 6842368 0.000000 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 6842368 0.000000 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 6842368 0.000000 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 6842368 0.000000 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 6842368 0.000000 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 6842368 0.000000 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 6842368 0.000000 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 6842368 0.000000 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 6842368 0.000000 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 6842368 0.000000 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 6842368 0.000000 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 6842368 0.000000 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 6842368 0.000000 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 6842368 0.000000 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 6842368 0.000000 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 6842368 0.000000 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 6842368 0.000000 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 6842368 0.000000 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 6842368 0.000000 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 6842368 0.000000 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 6842368 0.000000 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 6842368 0.000000 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 6842368 0.000000 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 6842368 0.000000 2.624850 -4.228925 0 2.187375 -3.791450 0
+ F4 16755200 0.000000 5 0
+ -0.873657 -2.766582 0
+ -0.790452 -2.288150 0
+ 0.104007 -1.892924 0
+ 0.353623 -2.475363 0
+ -0.104007 -2.912191 0
+ F4 16755200 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 16755200 0.000000 4 0
+ -1.913726 2.412958 0
+ -1.331287 2.267349 0
+ -0.915260 1.289685 0
+ -1.560102 1.456096 0
+ END$SEGS
+STRUCTURE 163 3 0 0 0 A 2 60.500000 163.000000 0 0.000000 "Lg Fall 20"" Fall-20b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -6.049455 5.738963 0
+ -5.191293 8.983891 0
+ -3.260427 9.815236 0
+ -1.088202 7.133478 0
+ 1.405833 9.466608 0
+ 4.409403 8.045276 0
+ 3.712146 -7.911188 0
+ 0.869482 -9.412972 0
+ -0.310492 -7.589377 0
+ -2.697257 -7.616194 0
+ -3.287244 -9.466608 0
+ -6.961253 -8.286634 0
+ -6.505354 -6.114409 0
+ -9.535741 -5.899869 0
+ -11.091161 -2.762211 0
+ -9.374836 -0.992251 0
+ -11.627513 0.000000 0
+ -11.037526 2.252677 0
+ -8.650761 3.110840 0
+ -10.367087 4.505354 0
+ -8.972572 7.026207 0
+ F4 6815744 0.000000 28 0
+ -8.367087 4.505354 0
+ -6.972572 7.026207 0
+ -4.049455 5.738963 0
+ -3.191293 8.983891 0
+ -1.260427 9.815236 0
+ 0.911798 7.133478 0
+ 3.405833 9.466608 0
+ 6.409403 8.045276 0
+ 5.283064 5.068524 0
+ 8.876621 4.076273 0
+ 9.412972 0.697257 0
+ 7.535741 -1.045886 0
+ 9.305702 -3.566739 0
+ 7.964823 -5.819416 0
+ 5.792598 -5.014888 0
+ 5.712146 -7.911188 0
+ 2.869482 -9.412972 0
+ 1.689508 -7.589377 0
+ -0.697257 -7.616194 0
+ -1.287244 -9.466608 0
+ -4.961253 -8.286634 0
+ -4.505354 -6.114409 0
+ -7.535741 -5.899869 0
+ -9.091161 -2.762211 0
+ -7.374836 -0.992251 0
+ -9.627513 0.000000 0
+ -9.037526 2.252677 0
+ -6.650761 3.110840 0
+ F4 12410368 0.000000 26 0
+ 1.340879 6.275315 0
+ 3.218110 8.152546 0
+ 5.014888 7.053025 0
+ 4.210361 3.915367 0
+ 7.803917 2.923117 0
+ 8.045276 1.367697 0
+ 5.792598 -0.187723 0
+ 7.750282 -3.137657 0
+ 6.892119 -4.156726 0
+ 4.746713 -4.103091 0
+ 4.639442 -6.570308 0
+ 2.789029 -7.589377 0
+ 1.260427 -5.792598 0
+ -1.045886 -6.114409 0
+ -1.582238 -7.348018 0
+ -3.539921 -6.838484 0
+ -3.566739 -4.693077 0
+ -5.202612 -4.639442 0
+ -6.275315 -2.494035 0
+ -4.371266 -0.697257 0
+ -6.168045 0.241358 0
+ -5.873051 1.528602 0
+ -3.003570 2.064954 0
+ -4.103091 4.022638 0
+ -2.306312 5.417152 0
+ -1.582238 6.999390 0
+ L3 12410368 0.000000 -1.701292 8.263417 0 -0.729125 7.534292 0
+ L3 12410368 0.000000 -6.805167 4.617792 0 -6.076042 3.888667 0
+ L3 12410368 0.000000 -5.103875 4.131708 0 -4.131708 3.402583 0
+ L3 12410368 0.000000 -8.263417 1.944333 0 -6.562125 1.944333 0
+ L3 12410368 0.000000 -5.589958 -0.729125 0 -6.805167 -0.486083 0
+ L3 12410368 0.000000 -7.534292 -3.645625 0 -6.319083 -3.888667 0
+ L3 12410368 0.000000 -3.645625 -7.291250 0 -4.131708 -8.020375 0
+ L3 12410368 0.000000 -0.243042 -6.562125 0 0.000000 -7.291250 0
+ L3 12410368 0.000000 3.159542 -7.777333 0 2.916500 -8.749500 0
+ L3 12410368 0.000000 7.291250 -4.617792 0 7.777333 -5.346917 0
+ L3 12410368 0.000000 -6.805167 6.076042 0 -6.319083 5.103875 0
+ L3 14915328 0.000000 -7.777333 4.617792 0 -7.048208 5.103875 0
+ L3 16755200 0.000000 8.506458 0.729125 0 7.534292 0.486083 0
+ L3 16755200 0.000000 -2.430417 7.777333 0 -2.673458 6.562125 0
+ L3 16755200 0.000000 -5.589958 5.103875 0 -3.888667 5.103875 0
+ L3 16755200 0.000000 -4.617792 2.673458 0 -6.076042 2.430417 0
+ L3 16755200 0.000000 -8.263417 0.486083 0 -6.805167 1.215208 0
+ L3 16755200 0.000000 -6.562125 -1.701292 0 -8.263417 -2.673458 0
+ L3 16755200 0.000000 -5.833000 -5.589958 0 -5.346917 -4.860833 0
+ L3 16755200 0.000000 -2.187375 -7.777333 0 -1.701292 -8.506458 0
+ L3 16755200 0.000000 1.215208 -6.562125 0 0.486083 -7.048208 0
+ L3 16755200 0.000000 4.617792 -7.291250 0 5.346917 -7.534292 0
+ L3 16755200 0.000000 8.506458 -3.402583 0 7.777333 -3.645625 0
+ F4 6815744 0.000000 5 0
+ -1.456096 4.610969 0
+ -1.317420 3.813584 0
+ 0.173345 3.154874 0
+ 0.589372 4.125604 0
+ -0.173345 4.853652 0
+ F4 6815744 0.000000 4 0
+ 4.749645 -0.173345 0
+ 2.946860 -0.589372 0
+ 2.565502 0.312020 0
+ 5.026997 0.450696 0
+ F4 6815744 0.000000 4 0
+ 1.144075 -4.610969 0
+ 0.242683 -3.917591 0
+ 0.485365 -2.461495 0
+ 1.040068 -2.669509 0
+ F4 6815744 0.000000 5 0
+ -3.640239 -0.416027 0
+ -3.154874 -0.069338 0
+ -1.490765 0.346689 0
+ -0.589372 -0.589372 0
+ -2.669509 -0.901393 0
+ L3 6815744 0.000000 3.402583 4.617792 0 2.187375 4.131708 0
+ L3 6815744 0.000000 2.187375 6.319083 0 1.701292 5.346917 0
+ L3 6815744 0.000000 -0.972167 6.076042 0 -0.486083 5.346917 0
+ L3 6815744 0.000000 -2.187375 2.673458 0 -0.972167 3.159542 0
+ L3 6815744 0.000000 -2.916500 1.458250 0 -1.944333 0.729125 0
+ L3 6815744 0.000000 -5.589958 0.486083 0 -4.374750 0.000000 0
+ L3 6815744 0.000000 -3.888667 -1.215208 0 -4.860833 -2.187375 0
+ L3 6815744 0.000000 -0.972167 -4.374750 0 -1.215208 -5.833000 0
+ L3 6815744 0.000000 -0.729125 -2.673458 0 -0.486083 -3.645625 0
+ L3 6815744 0.000000 1.701292 -4.374750 0 2.187375 -5.833000 0
+ L3 6815744 0.000000 2.916500 -4.131708 0 4.374750 -4.860833 0
+ L3 6815744 0.000000 6.562125 -1.701292 0 5.346917 -1.944333 0
+ L3 6815744 0.000000 6.562125 -3.888667 0 5.346917 -3.402583 0
+ L3 6815744 0.000000 7.048208 -2.916500 0 5.833000 -2.673458 0
+ L3 6815744 0.000000 2.916500 -7.048208 0 2.673458 -6.076042 0
+ L3 6815744 0.000000 4.374750 -6.319083 0 3.645625 -5.589958 0
+ L3 6815744 0.000000 7.291250 1.215208 0 5.833000 1.458250 0
+ L3 6815744 0.000000 7.291250 2.430417 0 6.076042 2.187375 0
+ L3 6815744 0.000000 -2.430417 -6.805167 0 -2.187375 -5.833000 0
+ L3 6815744 0.000000 -5.346917 -3.402583 0 -4.617792 -2.916500 0
+ L3 6815744 0.000000 3.402583 7.777333 0 2.916500 6.562125 0
+ L3 6815744 0.000000 4.374750 7.048208 0 3.645625 6.319083 0
+ L3 11184640 0.000000 3.402583 -6.562125 0 2.916500 -5.103875 0
+ L3 14915328 0.000000 3.888667 5.833000 0 3.159542 5.346917 0
+ L3 14915328 0.000000 -4.374750 1.215208 0 -3.402583 0.729125 0
+ F4 16755200 0.000000 4 0
+ 3.744246 3.848253 0
+ 2.218812 3.397556 0
+ 2.045468 2.253481 0
+ 3.050867 2.669509 0
+ F4 16755200 0.000000 3 0
+ 4.229611 -3.466894 0
+ 3.744246 -2.392157 0
+ 2.981529 -3.050867 0
+ F4 16755200 0.000000 4 0
+ -3.189543 -4.021597 0
+ -2.218812 -3.778915 0
+ -1.525433 -2.149474 0
+ -2.600171 -2.426826 0
+ L3 16755200 0.000000 0.486083 5.346917 0 0.972167 4.617792 0
+ L3 16755200 0.000000 -2.916500 3.888667 0 -1.944333 3.888667 0
+ L3 16755200 0.000000 -4.374750 -3.402583 0 -3.645625 -2.430417 0
+ L3 16755200 0.000000 -2.673458 -5.346917 0 -1.944333 -4.374750 0
+ L3 16755200 0.000000 6.076042 3.159542 0 4.860833 2.430417 0
+ END$SEGS
+STRUCTURE 164 3 0 0 0 A 2 87.000000 148.500000 0 0.000000 "Lg Fall 20"" Fall-20a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -6.049455 -5.738963 0
+ -5.191293 -8.983891 0
+ -3.260427 -9.815236 0
+ -1.088202 -7.133478 0
+ 1.405833 -9.466608 0
+ 4.409403 -8.045276 0
+ 3.712146 7.911188 0
+ 0.869482 9.412972 0
+ -0.310492 7.589377 0
+ -2.697257 7.616194 0
+ -3.287244 9.466608 0
+ -6.961253 8.286634 0
+ -6.505354 6.114409 0
+ -9.535741 5.899869 0
+ -11.091161 2.762211 0
+ -9.374836 0.992251 0
+ -11.627513 0.000000 0
+ -11.037526 -2.252677 0
+ -8.650761 -3.110840 0
+ -10.367087 -4.505354 0
+ -8.972572 -7.026207 0
+ F4 6842368 0.000000 28 0
+ -8.367087 -4.505354 0
+ -6.972572 -7.026207 0
+ -4.049455 -5.738963 0
+ -3.191293 -8.983891 0
+ -1.260427 -9.815236 0
+ 0.911798 -7.133478 0
+ 3.405833 -9.466608 0
+ 6.409403 -8.045276 0
+ 5.283064 -5.068524 0
+ 8.876621 -4.076273 0
+ 9.412972 -0.697257 0
+ 7.535741 1.045886 0
+ 9.305702 3.566739 0
+ 7.964823 5.819416 0
+ 5.792598 5.014888 0
+ 5.712146 7.911188 0
+ 2.869482 9.412972 0
+ 1.689508 7.589377 0
+ -0.697257 7.616194 0
+ -1.287244 9.466608 0
+ -4.961253 8.286634 0
+ -4.505354 6.114409 0
+ -7.535741 5.899869 0
+ -9.091161 2.762211 0
+ -7.374836 0.992251 0
+ -9.627513 0.000000 0
+ -9.037526 -2.252677 0
+ -6.650761 -3.110840 0
+ F4 12434688 0.000000 26 0
+ 1.340879 -6.275315 0
+ 3.218110 -8.152546 0
+ 5.014888 -7.053025 0
+ 4.210361 -3.915367 0
+ 7.803917 -2.923117 0
+ 8.045276 -1.367697 0
+ 5.792598 0.187723 0
+ 7.750282 3.137657 0
+ 6.892119 4.156726 0
+ 4.746713 4.103091 0
+ 4.639442 6.570308 0
+ 2.789029 7.589377 0
+ 1.260427 5.792598 0
+ -1.045886 6.114409 0
+ -1.582238 7.348018 0
+ -3.539921 6.838484 0
+ -3.566739 4.693077 0
+ -5.202612 4.639442 0
+ -6.275315 2.494035 0
+ -4.371266 0.697257 0
+ -6.168045 -0.241358 0
+ -5.873051 -1.528602 0
+ -3.003570 -2.064954 0
+ -4.103091 -4.022638 0
+ -2.306312 -5.417152 0
+ -1.582238 -6.999390 0
+ L3 12434688 0.000000 -2.430417 -7.777333 0 -2.673458 -6.562125 0
+ L3 12434688 0.000000 -5.103875 -4.131708 0 -4.131708 -3.402583 0
+ L3 12434688 0.000000 -8.263417 -0.486083 0 -6.805167 -1.215208 0
+ L3 12434688 0.000000 -5.589958 0.729125 0 -6.805167 0.486083 0
+ L3 12434688 0.000000 -7.534292 3.645625 0 -6.319083 3.888667 0
+ L3 12434688 0.000000 -3.645625 7.291250 0 -4.131708 8.020375 0
+ L3 12434688 0.000000 1.215208 6.562125 0 0.486083 7.048208 0
+ L3 12434688 0.000000 4.617792 7.291250 0 5.346917 7.534292 0
+ L3 12434688 0.000000 8.506458 3.402583 0 7.777333 3.645625 0
+ L3 12434688 0.000000 -6.805167 -6.076042 0 -6.319083 -5.103875 0
+ L3 12434688 0.000000 -7.777333 -4.617792 0 -7.048208 -5.103875 0
+ L3 16755200 0.000000 -1.701292 -8.263417 0 -0.729125 -7.534292 0
+ L3 16755200 0.000000 -5.589958 -5.103875 0 -3.888667 -5.103875 0
+ L3 16755200 0.000000 -6.805167 -4.617792 0 -6.076042 -3.888667 0
+ L3 16755200 0.000000 -4.617792 -2.673458 0 -6.076042 -2.430417 0
+ L3 16755200 0.000000 -8.263417 -1.944333 0 -6.562125 -1.944333 0
+ L3 16755200 0.000000 -6.562125 1.701292 0 -8.263417 2.673458 0
+ L3 16755200 0.000000 -5.833000 5.589958 0 -5.346917 4.860833 0
+ L3 16755200 0.000000 -2.187375 7.777333 0 -1.701292 8.506458 0
+ L3 16755200 0.000000 -0.243042 6.562125 0 0.000000 7.291250 0
+ L3 16755200 0.000000 3.159542 7.777333 0 2.916500 8.749500 0
+ L3 16755200 0.000000 7.291250 4.617792 0 7.777333 5.346917 0
+ L3 16755200 0.000000 8.506458 -0.729125 0 7.534292 -0.486083 0
+ F4 6842368 0.000000 4 0
+ 3.744246 -3.848253 0
+ 2.218812 -3.397556 0
+ 2.045468 -2.253481 0
+ 3.050867 -2.669509 0
+ F4 6842368 0.000000 4 0
+ 4.749645 0.173345 0
+ 2.946860 0.589372 0
+ 2.565502 -0.312020 0
+ 5.026997 -0.450696 0
+ F4 6842368 0.000000 4 0
+ 1.144075 4.610969 0
+ 0.242683 3.917591 0
+ 0.485365 2.461495 0
+ 1.040068 2.669509 0
+ F4 6842368 0.000000 5 0
+ -3.640239 0.416027 0
+ -3.154874 0.069338 0
+ -1.490765 -0.346689 0
+ -0.589372 0.589372 0
+ -2.669509 0.901393 0
+ L3 6842368 0.000000 0.486083 -5.346917 0 0.972167 -4.617792 0
+ L3 6842368 0.000000 3.402583 -4.617792 0 2.187375 -4.131708 0
+ L3 6842368 0.000000 3.888667 -5.833000 0 3.159542 -5.346917 0
+ L3 6842368 0.000000 2.187375 -6.319083 0 1.701292 -5.346917 0
+ L3 6842368 0.000000 -0.972167 -6.076042 0 -0.486083 -5.346917 0
+ L3 6842368 0.000000 -2.916500 -3.888667 0 -1.944333 -3.888667 0
+ L3 6842368 0.000000 -2.187375 -2.673458 0 -0.972167 -3.159542 0
+ L3 6842368 0.000000 -2.916500 -1.458250 0 -1.944333 -0.729125 0
+ L3 6842368 0.000000 -4.374750 -1.215208 0 -3.402583 -0.729125 0
+ L3 6842368 0.000000 -5.589958 -0.486083 0 -4.374750 0.000000 0
+ L3 6842368 0.000000 -3.888667 1.215208 0 -4.860833 2.187375 0
+ L3 6842368 0.000000 -4.374750 3.402583 0 -3.645625 2.430417 0
+ L3 6842368 0.000000 -2.673458 5.346917 0 -1.944333 4.374750 0
+ L3 6842368 0.000000 -0.972167 4.374750 0 -1.215208 5.833000 0
+ L3 6842368 0.000000 -0.729125 2.673458 0 -0.486083 3.645625 0
+ L3 6842368 0.000000 1.701292 4.374750 0 2.187375 5.833000 0
+ L3 6842368 0.000000 2.916500 4.131708 0 4.374750 4.860833 0
+ L3 6842368 0.000000 6.562125 1.701292 0 5.346917 1.944333 0
+ L3 6842368 0.000000 6.562125 3.888667 0 5.346917 3.402583 0
+ L3 6842368 0.000000 7.048208 2.916500 0 5.833000 2.673458 0
+ L3 6842368 0.000000 2.916500 7.048208 0 2.673458 6.076042 0
+ L3 6842368 0.000000 4.374750 6.319083 0 3.645625 5.589958 0
+ L3 6842368 0.000000 3.402583 6.562125 0 2.916500 5.103875 0
+ L3 6842368 0.000000 7.291250 -1.215208 0 5.833000 -1.458250 0
+ L3 6842368 0.000000 6.076042 -3.159542 0 4.860833 -2.430417 0
+ L3 6842368 0.000000 7.291250 -2.430417 0 6.076042 -2.187375 0
+ L3 6842368 0.000000 -2.430417 6.805167 0 -2.187375 5.833000 0
+ L3 6842368 0.000000 -5.346917 3.402583 0 -4.617792 2.916500 0
+ L3 6842368 0.000000 3.402583 -7.777333 0 2.916500 -6.562125 0
+ L3 6842368 0.000000 4.374750 -7.048208 0 3.645625 -6.319083 0
+ F4 16755200 0.000000 5 0
+ -1.456096 -4.610969 0
+ -1.317420 -3.813584 0
+ 0.173345 -3.154874 0
+ 0.589372 -4.125604 0
+ -0.173345 -4.853652 0
+ F4 16755200 0.000000 3 0
+ 4.229611 3.466894 0
+ 3.744246 2.392157 0
+ 2.981529 3.050867 0
+ F4 16755200 0.000000 4 0
+ -3.189543 4.021597 0
+ -2.218812 3.778915 0
+ -1.525433 2.149474 0
+ -2.600171 2.426826 0
+ END$SEGS
+STRUCTURE 165 3 0 0 0 A 2 508.000000 177.500000 0 0.000000 "Sm Fall 10"" Fall-10a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.024728 -2.869482 0
+ -2.595646 -4.491946 0
+ -1.630213 -4.907618 0
+ -0.544101 -3.566739 0
+ 0.702917 -4.733304 0
+ 2.204701 -4.022638 0
+ 1.856073 3.955594 0
+ 0.434741 4.706486 0
+ -0.155246 3.794688 0
+ -1.348629 3.808097 0
+ -1.643622 4.733304 0
+ -3.480627 4.143317 0
+ -3.252677 3.057205 0
+ -4.767871 2.949934 0
+ -5.545581 1.381106 0
+ -4.687418 0.496125 0
+ -5.813757 0.000000 0
+ -5.518763 -1.126339 0
+ -4.325381 -1.555420 0
+ -5.183543 -2.252677 0
+ -4.486286 -3.513104 0
+ F4 6842368 0.000000 28 0
+ -4.183543 -2.252677 0
+ -3.486286 -3.513104 0
+ -2.024728 -2.869482 0
+ -1.595646 -4.491946 0
+ -0.630213 -4.907618 0
+ 0.455899 -3.566739 0
+ 1.702917 -4.733304 0
+ 3.204701 -4.022638 0
+ 2.641532 -2.534262 0
+ 4.438310 -2.038136 0
+ 4.706486 -0.348629 0
+ 3.767871 0.522943 0
+ 4.652851 1.783369 0
+ 3.982411 2.909708 0
+ 2.896299 2.507444 0
+ 2.856073 3.955594 0
+ 1.434741 4.706486 0
+ 0.844754 3.794688 0
+ -0.348629 3.808097 0
+ -0.643622 4.733304 0
+ -2.480627 4.143317 0
+ -2.252677 3.057205 0
+ -3.767871 2.949934 0
+ -4.545581 1.381106 0
+ -3.687418 0.496125 0
+ -4.813757 0.000000 0
+ -4.518763 -1.126339 0
+ -3.325381 -1.555420 0
+ F4 12434688 0.000000 26 0
+ 0.670440 -3.137657 0
+ 1.609055 -4.076273 0
+ 2.507444 -3.526512 0
+ 2.105180 -1.957684 0
+ 3.901959 -1.461558 0
+ 4.022638 -0.683848 0
+ 2.896299 0.093862 0
+ 3.875141 1.568829 0
+ 3.446060 2.078363 0
+ 2.373356 2.051545 0
+ 2.319721 3.285154 0
+ 1.394514 3.794688 0
+ 0.630213 2.896299 0
+ -0.522943 3.057205 0
+ -0.791119 3.674009 0
+ -1.769961 3.419242 0
+ -1.783369 2.346539 0
+ -2.601306 2.319721 0
+ -3.137657 1.247018 0
+ -2.185633 0.348629 0
+ -3.084022 -0.120679 0
+ -2.936526 -0.764301 0
+ -1.501785 -1.032477 0
+ -2.051545 -2.011319 0
+ -1.153156 -2.708576 0
+ -0.791119 -3.499695 0
+ L3 12434688 0.000000 -1.215208 -3.888667 0 -1.336729 -3.281062 0
+ L3 12434688 0.000000 -2.551937 -2.065854 0 -2.065854 -1.701292 0
+ L3 12434688 0.000000 -4.131708 -0.243042 0 -3.402583 -0.607604 0
+ L3 12434688 0.000000 -2.794979 0.364562 0 -3.402583 0.243042 0
+ L3 12434688 0.000000 -3.767146 1.822812 0 -3.159542 1.944333 0
+ L3 12434688 0.000000 -1.822812 3.645625 0 -2.065854 4.010187 0
+ L3 12434688 0.000000 0.607604 3.281062 0 0.243042 3.524104 0
+ L3 12434688 0.000000 2.308896 3.645625 0 2.673458 3.767146 0
+ L3 12434688 0.000000 4.253229 1.701292 0 3.888667 1.822812 0
+ L3 12434688 0.000000 -3.402583 -3.038021 0 -3.159542 -2.551937 0
+ L3 12434688 0.000000 -3.888667 -2.308896 0 -3.524104 -2.551937 0
+ L3 16755200 0.000000 -0.850646 -4.131708 0 -0.364562 -3.767146 0
+ L3 16755200 0.000000 -2.794979 -2.551937 0 -1.944333 -2.551937 0
+ L3 16755200 0.000000 -3.402583 -2.308896 0 -3.038021 -1.944333 0
+ L3 16755200 0.000000 -2.308896 -1.336729 0 -3.038021 -1.215208 0
+ L3 16755200 0.000000 -4.131708 -0.972167 0 -3.281062 -0.972167 0
+ L3 16755200 0.000000 -3.281062 0.850646 0 -4.131708 1.336729 0
+ L3 16755200 0.000000 -2.916500 2.794979 0 -2.673458 2.430417 0
+ L3 16755200 0.000000 -1.093687 3.888667 0 -0.850646 4.253229 0
+ L3 16755200 0.000000 -0.121521 3.281062 0 0.000000 3.645625 0
+ L3 16755200 0.000000 1.579771 3.888667 0 1.458250 4.374750 0
+ L3 16755200 0.000000 3.645625 2.308896 0 3.888667 2.673458 0
+ L3 16755200 0.000000 4.253229 -0.364562 0 3.767146 -0.243042 0
+ F4 6842368 0.000000 4 0
+ 1.872123 -1.924126 0
+ 1.109406 -1.698778 0
+ 1.022734 -1.126741 0
+ 1.525433 -1.334754 0
+ F4 6842368 0.000000 4 0
+ 2.374823 0.086672 0
+ 1.473430 0.294686 0
+ 1.282751 -0.156010 0
+ 2.513498 -0.225348 0
+ F4 6842368 0.000000 4 0
+ 0.572038 2.305485 0
+ 0.121341 1.958795 0
+ 0.242683 1.230747 0
+ 0.520034 1.334754 0
+ F4 6842368 0.000000 5 0
+ -1.820120 0.208014 0
+ -1.577437 0.034669 0
+ -0.745382 -0.173345 0
+ -0.294686 0.294686 0
+ -1.334754 0.450696 0
+ L3 6842368 0.000000 0.243042 -2.673458 0 0.486083 -2.308896 0
+ L3 6842368 0.000000 1.701292 -2.308896 0 1.093687 -2.065854 0
+ L3 6842368 0.000000 1.944333 -2.916500 0 1.579771 -2.673458 0
+ L3 6842368 0.000000 1.093687 -3.159542 0 0.850646 -2.673458 0
+ L3 6842368 0.000000 -0.486083 -3.038021 0 -0.243042 -2.673458 0
+ L3 6842368 0.000000 -1.458250 -1.944333 0 -0.972167 -1.944333 0
+ L3 6842368 0.000000 -1.093687 -1.336729 0 -0.486083 -1.579771 0
+ L3 6842368 0.000000 -1.458250 -0.729125 0 -0.972167 -0.364562 0
+ L3 6842368 0.000000 -2.187375 -0.607604 0 -1.701292 -0.364562 0
+ L3 6842368 0.000000 -2.794979 -0.243042 0 -2.187375 0.000000 0
+ L3 6842368 0.000000 -1.944333 0.607604 0 -2.430417 1.093687 0
+ L3 6842368 0.000000 -2.187375 1.701292 0 -1.822812 1.215208 0
+ L3 6842368 0.000000 -1.336729 2.673458 0 -0.972167 2.187375 0
+ L3 6842368 0.000000 -0.486083 2.187375 0 -0.607604 2.916500 0
+ L3 6842368 0.000000 -0.364562 1.336729 0 -0.243042 1.822812 0
+ L3 6842368 0.000000 0.850646 2.187375 0 1.093687 2.916500 0
+ L3 6842368 0.000000 1.458250 2.065854 0 2.187375 2.430417 0
+ L3 6842368 0.000000 3.281062 0.850646 0 2.673458 0.972167 0
+ L3 6842368 0.000000 3.281062 1.944333 0 2.673458 1.701292 0
+ L3 6842368 0.000000 3.524104 1.458250 0 2.916500 1.336729 0
+ L3 6842368 0.000000 1.458250 3.524104 0 1.336729 3.038021 0
+ L3 6842368 0.000000 2.187375 3.159542 0 1.822812 2.794979 0
+ L3 6842368 0.000000 1.701292 3.281062 0 1.458250 2.551937 0
+ L3 6842368 0.000000 3.645625 -0.607604 0 2.916500 -0.729125 0
+ L3 6842368 0.000000 3.038021 -1.579771 0 2.430417 -1.215208 0
+ L3 6842368 0.000000 3.645625 -1.215208 0 3.038021 -1.093687 0
+ L3 6842368 0.000000 -1.215208 3.402583 0 -1.093687 2.916500 0
+ L3 6842368 0.000000 -2.673458 1.701292 0 -2.308896 1.458250 0
+ L3 6842368 0.000000 1.701292 -3.888667 0 1.458250 -3.281062 0
+ L3 6842368 0.000000 2.187375 -3.524104 0 1.822812 -3.159542 0
+ F4 16755200 0.000000 5 0
+ -0.728048 -2.305485 0
+ -0.658710 -1.906792 0
+ 0.086672 -1.577437 0
+ 0.294686 -2.062802 0
+ -0.086672 -2.426826 0
+ F4 16755200 0.000000 3 0
+ 2.114806 1.733447 0
+ 1.872123 1.196079 0
+ 1.490765 1.525433 0
+ F4 16755200 0.000000 4 0
+ -1.594771 2.010799 0
+ -1.109406 1.889457 0
+ -0.762717 1.074737 0
+ -1.300085 1.213413 0
+ END$SEGS
+STRUCTURE 166 3 0 0 0 A 2 470.500000 188.000000 0 0.000000 "Sm Fall 10"" Fall-10a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.024728 -2.869482 0
+ -2.595646 -4.491946 0
+ -1.630213 -4.907618 0
+ -0.544101 -3.566739 0
+ 0.702917 -4.733304 0
+ 2.204701 -4.022638 0
+ 1.856073 3.955594 0
+ 0.434741 4.706486 0
+ -0.155246 3.794688 0
+ -1.348629 3.808097 0
+ -1.643622 4.733304 0
+ -3.480627 4.143317 0
+ -3.252677 3.057205 0
+ -4.767871 2.949934 0
+ -5.545581 1.381106 0
+ -4.687418 0.496125 0
+ -5.813757 0.000000 0
+ -5.518763 -1.126339 0
+ -4.325381 -1.555420 0
+ -5.183543 -2.252677 0
+ -4.486286 -3.513104 0
+ F4 6842368 0.000000 28 0
+ -4.183543 -2.252677 0
+ -3.486286 -3.513104 0
+ -2.024728 -2.869482 0
+ -1.595646 -4.491946 0
+ -0.630213 -4.907618 0
+ 0.455899 -3.566739 0
+ 1.702917 -4.733304 0
+ 3.204701 -4.022638 0
+ 2.641532 -2.534262 0
+ 4.438310 -2.038136 0
+ 4.706486 -0.348629 0
+ 3.767871 0.522943 0
+ 4.652851 1.783369 0
+ 3.982411 2.909708 0
+ 2.896299 2.507444 0
+ 2.856073 3.955594 0
+ 1.434741 4.706486 0
+ 0.844754 3.794688 0
+ -0.348629 3.808097 0
+ -0.643622 4.733304 0
+ -2.480627 4.143317 0
+ -2.252677 3.057205 0
+ -3.767871 2.949934 0
+ -4.545581 1.381106 0
+ -3.687418 0.496125 0
+ -4.813757 0.000000 0
+ -4.518763 -1.126339 0
+ -3.325381 -1.555420 0
+ F4 12434688 0.000000 26 0
+ 0.670440 -3.137657 0
+ 1.609055 -4.076273 0
+ 2.507444 -3.526512 0
+ 2.105180 -1.957684 0
+ 3.901959 -1.461558 0
+ 4.022638 -0.683848 0
+ 2.896299 0.093862 0
+ 3.875141 1.568829 0
+ 3.446060 2.078363 0
+ 2.373356 2.051545 0
+ 2.319721 3.285154 0
+ 1.394514 3.794688 0
+ 0.630213 2.896299 0
+ -0.522943 3.057205 0
+ -0.791119 3.674009 0
+ -1.769961 3.419242 0
+ -1.783369 2.346539 0
+ -2.601306 2.319721 0
+ -3.137657 1.247018 0
+ -2.185633 0.348629 0
+ -3.084022 -0.120679 0
+ -2.936526 -0.764301 0
+ -1.501785 -1.032477 0
+ -2.051545 -2.011319 0
+ -1.153156 -2.708576 0
+ -0.791119 -3.499695 0
+ L3 12434688 0.000000 -1.215208 -3.888667 0 -1.336729 -3.281062 0
+ L3 12434688 0.000000 -2.551937 -2.065854 0 -2.065854 -1.701292 0
+ L3 12434688 0.000000 -4.131708 -0.243042 0 -3.402583 -0.607604 0
+ L3 12434688 0.000000 -2.794979 0.364562 0 -3.402583 0.243042 0
+ L3 12434688 0.000000 -3.767146 1.822812 0 -3.159542 1.944333 0
+ L3 12434688 0.000000 -1.822812 3.645625 0 -2.065854 4.010187 0
+ L3 12434688 0.000000 0.607604 3.281062 0 0.243042 3.524104 0
+ L3 12434688 0.000000 2.308896 3.645625 0 2.673458 3.767146 0
+ L3 12434688 0.000000 4.253229 1.701292 0 3.888667 1.822812 0
+ L3 12434688 0.000000 -3.402583 -3.038021 0 -3.159542 -2.551937 0
+ L3 12434688 0.000000 -3.888667 -2.308896 0 -3.524104 -2.551937 0
+ L3 16755200 0.000000 -0.850646 -4.131708 0 -0.364562 -3.767146 0
+ L3 16755200 0.000000 -2.794979 -2.551937 0 -1.944333 -2.551937 0
+ L3 16755200 0.000000 -3.402583 -2.308896 0 -3.038021 -1.944333 0
+ L3 16755200 0.000000 -2.308896 -1.336729 0 -3.038021 -1.215208 0
+ L3 16755200 0.000000 -4.131708 -0.972167 0 -3.281062 -0.972167 0
+ L3 16755200 0.000000 -3.281062 0.850646 0 -4.131708 1.336729 0
+ L3 16755200 0.000000 -2.916500 2.794979 0 -2.673458 2.430417 0
+ L3 16755200 0.000000 -1.093687 3.888667 0 -0.850646 4.253229 0
+ L3 16755200 0.000000 -0.121521 3.281062 0 0.000000 3.645625 0
+ L3 16755200 0.000000 1.579771 3.888667 0 1.458250 4.374750 0
+ L3 16755200 0.000000 3.645625 2.308896 0 3.888667 2.673458 0
+ L3 16755200 0.000000 4.253229 -0.364562 0 3.767146 -0.243042 0
+ F4 6842368 0.000000 4 0
+ 1.872123 -1.924126 0
+ 1.109406 -1.698778 0
+ 1.022734 -1.126741 0
+ 1.525433 -1.334754 0
+ F4 6842368 0.000000 4 0
+ 2.374823 0.086672 0
+ 1.473430 0.294686 0
+ 1.282751 -0.156010 0
+ 2.513498 -0.225348 0
+ F4 6842368 0.000000 4 0
+ 0.572038 2.305485 0
+ 0.121341 1.958795 0
+ 0.242683 1.230747 0
+ 0.520034 1.334754 0
+ F4 6842368 0.000000 5 0
+ -1.820120 0.208014 0
+ -1.577437 0.034669 0
+ -0.745382 -0.173345 0
+ -0.294686 0.294686 0
+ -1.334754 0.450696 0
+ L3 6842368 0.000000 0.243042 -2.673458 0 0.486083 -2.308896 0
+ L3 6842368 0.000000 1.701292 -2.308896 0 1.093687 -2.065854 0
+ L3 6842368 0.000000 1.944333 -2.916500 0 1.579771 -2.673458 0
+ L3 6842368 0.000000 1.093687 -3.159542 0 0.850646 -2.673458 0
+ L3 6842368 0.000000 -0.486083 -3.038021 0 -0.243042 -2.673458 0
+ L3 6842368 0.000000 -1.458250 -1.944333 0 -0.972167 -1.944333 0
+ L3 6842368 0.000000 -1.093687 -1.336729 0 -0.486083 -1.579771 0
+ L3 6842368 0.000000 -1.458250 -0.729125 0 -0.972167 -0.364562 0
+ L3 6842368 0.000000 -2.187375 -0.607604 0 -1.701292 -0.364562 0
+ L3 6842368 0.000000 -2.794979 -0.243042 0 -2.187375 0.000000 0
+ L3 6842368 0.000000 -1.944333 0.607604 0 -2.430417 1.093687 0
+ L3 6842368 0.000000 -2.187375 1.701292 0 -1.822812 1.215208 0
+ L3 6842368 0.000000 -1.336729 2.673458 0 -0.972167 2.187375 0
+ L3 6842368 0.000000 -0.486083 2.187375 0 -0.607604 2.916500 0
+ L3 6842368 0.000000 -0.364562 1.336729 0 -0.243042 1.822812 0
+ L3 6842368 0.000000 0.850646 2.187375 0 1.093687 2.916500 0
+ L3 6842368 0.000000 1.458250 2.065854 0 2.187375 2.430417 0
+ L3 6842368 0.000000 3.281062 0.850646 0 2.673458 0.972167 0
+ L3 6842368 0.000000 3.281062 1.944333 0 2.673458 1.701292 0
+ L3 6842368 0.000000 3.524104 1.458250 0 2.916500 1.336729 0
+ L3 6842368 0.000000 1.458250 3.524104 0 1.336729 3.038021 0
+ L3 6842368 0.000000 2.187375 3.159542 0 1.822812 2.794979 0
+ L3 6842368 0.000000 1.701292 3.281062 0 1.458250 2.551937 0
+ L3 6842368 0.000000 3.645625 -0.607604 0 2.916500 -0.729125 0
+ L3 6842368 0.000000 3.038021 -1.579771 0 2.430417 -1.215208 0
+ L3 6842368 0.000000 3.645625 -1.215208 0 3.038021 -1.093687 0
+ L3 6842368 0.000000 -1.215208 3.402583 0 -1.093687 2.916500 0
+ L3 6842368 0.000000 -2.673458 1.701292 0 -2.308896 1.458250 0
+ L3 6842368 0.000000 1.701292 -3.888667 0 1.458250 -3.281062 0
+ L3 6842368 0.000000 2.187375 -3.524104 0 1.822812 -3.159542 0
+ F4 16755200 0.000000 5 0
+ -0.728048 -2.305485 0
+ -0.658710 -1.906792 0
+ 0.086672 -1.577437 0
+ 0.294686 -2.062802 0
+ -0.086672 -2.426826 0
+ F4 16755200 0.000000 3 0
+ 2.114806 1.733447 0
+ 1.872123 1.196079 0
+ 1.490765 1.525433 0
+ F4 16755200 0.000000 4 0
+ -1.594771 2.010799 0
+ -1.109406 1.889457 0
+ -0.762717 1.074737 0
+ -1.300085 1.213413 0
+ END$SEGS
+STRUCTURE 167 3 0 0 0 A 2 489.000000 153.000000 0 0.000000 "Lg Fall 14"" Fall-14a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.234619 -4.017274 0
+ -3.633905 -6.288724 0
+ -2.282299 -6.870665 0
+ -0.761741 -4.993434 0
+ 0.984083 -6.626625 0
+ 3.086582 -5.631693 0
+ 2.598502 5.537831 0
+ 0.608637 6.589081 0
+ -0.217344 5.312564 0
+ -1.888080 5.331336 0
+ -2.301071 6.626625 0
+ -4.872877 5.800644 0
+ -4.553748 4.280087 0
+ -6.675019 4.129908 0
+ -7.763813 1.933548 0
+ -6.562385 0.694575 0
+ -8.139259 0.000000 0
+ -7.726268 -1.576874 0
+ -6.055533 -2.177588 0
+ -7.256961 -3.153748 0
+ -6.280801 -4.918345 0
+ F4 6842368 0.000000 28 0
+ -5.856961 -3.153748 0
+ -4.880801 -4.918345 0
+ -2.834619 -4.017274 0
+ -2.233905 -6.288724 0
+ -0.882299 -6.870665 0
+ 0.638259 -4.993434 0
+ 2.384083 -6.626625 0
+ 4.486582 -5.631693 0
+ 3.698145 -3.547967 0
+ 6.213635 -2.853391 0
+ 6.589081 -0.488080 0
+ 5.275019 0.732120 0
+ 6.513991 2.496717 0
+ 5.575376 4.073591 0
+ 4.054819 3.510422 0
+ 3.998502 5.537831 0
+ 2.008637 6.589081 0
+ 1.182656 5.312564 0
+ -0.488080 5.331336 0
+ -0.901071 6.626625 0
+ -3.472877 5.800644 0
+ -3.153748 4.280087 0
+ -5.275019 4.129908 0
+ -6.363813 1.933548 0
+ -5.162385 0.694575 0
+ -6.739259 0.000000 0
+ -6.326268 -1.576874 0
+ -4.655533 -2.177588 0
+ F4 12434688 0.000000 26 0
+ 0.938615 -4.392720 0
+ 2.252677 -5.706782 0
+ 3.510422 -4.937117 0
+ 2.947253 -2.740757 0
+ 5.462742 -2.046182 0
+ 5.631693 -0.957388 0
+ 4.054819 0.131406 0
+ 5.425198 2.196360 0
+ 4.824484 2.909708 0
+ 3.322699 2.872163 0
+ 3.247610 4.599216 0
+ 1.952320 5.312564 0
+ 0.882299 4.054819 0
+ -0.732120 4.280087 0
+ -1.107566 5.143613 0
+ -2.477945 4.786939 0
+ -2.496717 3.285154 0
+ -3.641828 3.247610 0
+ -4.392720 1.745825 0
+ -3.059886 0.488080 0
+ -4.317631 -0.168951 0
+ -4.111136 -1.070022 0
+ -2.102499 -1.445468 0
+ -2.872163 -2.815846 0
+ -1.614419 -3.792007 0
+ -1.107566 -4.899573 0
+ L3 12434688 0.000000 -1.701292 -5.444133 0 -1.871421 -4.593487 0
+ L3 12434688 0.000000 -3.572712 -2.892196 0 -2.892196 -2.381808 0
+ L3 12434688 0.000000 -5.784392 -0.340258 0 -4.763617 -0.850646 0
+ L3 12434688 0.000000 -3.912971 0.510387 0 -4.763617 0.340258 0
+ L3 12434688 0.000000 -5.274004 2.551937 0 -4.423358 2.722067 0
+ L3 12434688 0.000000 -2.551937 5.103875 0 -2.892196 5.614262 0
+ L3 12434688 0.000000 0.850646 4.593487 0 0.340258 4.933746 0
+ L3 12434688 0.000000 3.232454 5.103875 0 3.742842 5.274004 0
+ L3 12434688 0.000000 5.954521 2.381808 0 5.444133 2.551937 0
+ L3 12434688 0.000000 -4.763617 -4.253229 0 -4.423358 -3.572712 0
+ L3 12434688 0.000000 -5.444133 -3.232454 0 -4.933746 -3.572712 0
+ L3 16755200 0.000000 -1.190904 -5.784392 0 -0.510387 -5.274004 0
+ L3 16755200 0.000000 -3.912971 -3.572712 0 -2.722067 -3.572712 0
+ L3 16755200 0.000000 -4.763617 -3.232454 0 -4.253229 -2.722067 0
+ L3 16755200 0.000000 -3.232454 -1.871421 0 -4.253229 -1.701292 0
+ L3 16755200 0.000000 -5.784392 -1.361033 0 -4.593487 -1.361033 0
+ L3 16755200 0.000000 -4.593487 1.190904 0 -5.784392 1.871421 0
+ L3 16755200 0.000000 -4.083100 3.912971 0 -3.742842 3.402583 0
+ L3 16755200 0.000000 -1.531162 5.444133 0 -1.190904 5.954521 0
+ L3 16755200 0.000000 -0.170129 4.593487 0 0.000000 5.103875 0
+ L3 16755200 0.000000 2.211679 5.444133 0 2.041550 6.124650 0
+ L3 16755200 0.000000 5.103875 3.232454 0 5.444133 3.742842 0
+ L3 16755200 0.000000 5.954521 -0.510387 0 5.274004 -0.340258 0
+ F4 6842368 0.000000 4 0
+ 2.620972 -2.693777 0
+ 1.553169 -2.378289 0
+ 1.431827 -1.577437 0
+ 2.135607 -1.868656 0
+ F4 6842368 0.000000 4 0
+ 3.324752 0.121341 0
+ 2.062802 0.412560 0
+ 1.795851 -0.218414 0
+ 3.518898 -0.315487 0
+ F4 6842368 0.000000 4 0
+ 0.800853 3.227679 0
+ 0.169878 2.742313 0
+ 0.339756 1.723046 0
+ 0.728048 1.868656 0
+ F4 6842368 0.000000 5 0
+ -2.548167 0.291219 0
+ -2.208412 0.048537 0
+ -1.043535 -0.242683 0
+ -0.412560 0.412560 0
+ -1.868656 0.630975 0
+ L3 6842368 0.000000 0.340258 -3.742842 0 0.680517 -3.232454 0
+ L3 6842368 0.000000 2.381808 -3.232454 0 1.531162 -2.892196 0
+ L3 6842368 0.000000 2.722067 -4.083100 0 2.211679 -3.742842 0
+ L3 6842368 0.000000 1.531162 -4.423358 0 1.190904 -3.742842 0
+ L3 6842368 0.000000 -0.680517 -4.253229 0 -0.340258 -3.742842 0
+ L3 6842368 0.000000 -2.041550 -2.722067 0 -1.361033 -2.722067 0
+ L3 6842368 0.000000 -1.531162 -1.871421 0 -0.680517 -2.211679 0
+ L3 6842368 0.000000 -2.041550 -1.020775 0 -1.361033 -0.510387 0
+ L3 6842368 0.000000 -3.062325 -0.850646 0 -2.381808 -0.510387 0
+ L3 6842368 0.000000 -3.912971 -0.340258 0 -3.062325 0.000000 0
+ L3 6842368 0.000000 -2.722067 0.850646 0 -3.402583 1.531162 0
+ L3 6842368 0.000000 -3.062325 2.381808 0 -2.551937 1.701292 0
+ L3 6842368 0.000000 -1.871421 3.742842 0 -1.361033 3.062325 0
+ L3 6842368 0.000000 -0.680517 3.062325 0 -0.850646 4.083100 0
+ L3 6842368 0.000000 -0.510387 1.871421 0 -0.340258 2.551937 0
+ L3 6842368 0.000000 1.190904 3.062325 0 1.531162 4.083100 0
+ L3 6842368 0.000000 2.041550 2.892196 0 3.062325 3.402583 0
+ L3 6842368 0.000000 4.593487 1.190904 0 3.742842 1.361033 0
+ L3 6842368 0.000000 4.593487 2.722067 0 3.742842 2.381808 0
+ L3 6842368 0.000000 4.933746 2.041550 0 4.083100 1.871421 0
+ L3 6842368 0.000000 2.041550 4.933746 0 1.871421 4.253229 0
+ L3 6842368 0.000000 3.062325 4.423358 0 2.551937 3.912971 0
+ L3 6842368 0.000000 2.381808 4.593487 0 2.041550 3.572712 0
+ L3 6842368 0.000000 5.103875 -0.850646 0 4.083100 -1.020775 0
+ L3 6842368 0.000000 4.253229 -2.211679 0 3.402583 -1.701292 0
+ L3 6842368 0.000000 5.103875 -1.701292 0 4.253229 -1.531162 0
+ L3 6842368 0.000000 -1.701292 4.763617 0 -1.531162 4.083100 0
+ L3 6842368 0.000000 -3.742842 2.381808 0 -3.232454 2.041550 0
+ L3 6842368 0.000000 2.381808 -5.444133 0 2.041550 -4.593487 0
+ L3 6842368 0.000000 3.062325 -4.933746 0 2.551937 -4.423358 0
+ F4 16755200 0.000000 5 0
+ -1.019267 -3.227679 0
+ -0.922194 -2.669509 0
+ 0.121341 -2.208412 0
+ 0.412560 -2.887923 0
+ -0.121341 -3.397556 0
+ F4 16755200 0.000000 3 0
+ 2.960728 2.426826 0
+ 2.620972 1.674510 0
+ 2.087070 2.135607 0
+ F4 16755200 0.000000 4 0
+ -2.232680 2.815118 0
+ -1.553169 2.645240 0
+ -1.067803 1.504632 0
+ -1.820120 1.698778 0
+ END$SEGS
+STRUCTURE 168 3 0 0 0 A 2 526.500000 163.500000 0 0.000000 "Lg Fall 14"" Fall-14a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.234619 -4.017274 0
+ -3.633905 -6.288724 0
+ -2.282299 -6.870665 0
+ -0.761741 -4.993434 0
+ 0.984083 -6.626625 0
+ 3.086582 -5.631693 0
+ 2.598502 5.537831 0
+ 0.608637 6.589081 0
+ -0.217344 5.312564 0
+ -1.888080 5.331336 0
+ -2.301071 6.626625 0
+ -4.872877 5.800644 0
+ -4.553748 4.280087 0
+ -6.675019 4.129908 0
+ -7.763813 1.933548 0
+ -6.562385 0.694575 0
+ -8.139259 0.000000 0
+ -7.726268 -1.576874 0
+ -6.055533 -2.177588 0
+ -7.256961 -3.153748 0
+ -6.280801 -4.918345 0
+ F4 6842368 0.000000 28 0
+ -5.856961 -3.153748 0
+ -4.880801 -4.918345 0
+ -2.834619 -4.017274 0
+ -2.233905 -6.288724 0
+ -0.882299 -6.870665 0
+ 0.638259 -4.993434 0
+ 2.384083 -6.626625 0
+ 4.486582 -5.631693 0
+ 3.698145 -3.547967 0
+ 6.213635 -2.853391 0
+ 6.589081 -0.488080 0
+ 5.275019 0.732120 0
+ 6.513991 2.496717 0
+ 5.575376 4.073591 0
+ 4.054819 3.510422 0
+ 3.998502 5.537831 0
+ 2.008637 6.589081 0
+ 1.182656 5.312564 0
+ -0.488080 5.331336 0
+ -0.901071 6.626625 0
+ -3.472877 5.800644 0
+ -3.153748 4.280087 0
+ -5.275019 4.129908 0
+ -6.363813 1.933548 0
+ -5.162385 0.694575 0
+ -6.739259 0.000000 0
+ -6.326268 -1.576874 0
+ -4.655533 -2.177588 0
+ F4 12434688 0.000000 26 0
+ 0.938615 -4.392720 0
+ 2.252677 -5.706782 0
+ 3.510422 -4.937117 0
+ 2.947253 -2.740757 0
+ 5.462742 -2.046182 0
+ 5.631693 -0.957388 0
+ 4.054819 0.131406 0
+ 5.425198 2.196360 0
+ 4.824484 2.909708 0
+ 3.322699 2.872163 0
+ 3.247610 4.599216 0
+ 1.952320 5.312564 0
+ 0.882299 4.054819 0
+ -0.732120 4.280087 0
+ -1.107566 5.143613 0
+ -2.477945 4.786939 0
+ -2.496717 3.285154 0
+ -3.641828 3.247610 0
+ -4.392720 1.745825 0
+ -3.059886 0.488080 0
+ -4.317631 -0.168951 0
+ -4.111136 -1.070022 0
+ -2.102499 -1.445468 0
+ -2.872163 -2.815846 0
+ -1.614419 -3.792007 0
+ -1.107566 -4.899573 0
+ L3 12434688 0.000000 -1.701292 -5.444133 0 -1.871421 -4.593487 0
+ L3 12434688 0.000000 -3.572712 -2.892196 0 -2.892196 -2.381808 0
+ L3 12434688 0.000000 -5.784392 -0.340258 0 -4.763617 -0.850646 0
+ L3 12434688 0.000000 -3.912971 0.510387 0 -4.763617 0.340258 0
+ L3 12434688 0.000000 -5.274004 2.551937 0 -4.423358 2.722067 0
+ L3 12434688 0.000000 -2.551937 5.103875 0 -2.892196 5.614262 0
+ L3 12434688 0.000000 0.850646 4.593487 0 0.340258 4.933746 0
+ L3 12434688 0.000000 3.232454 5.103875 0 3.742842 5.274004 0
+ L3 12434688 0.000000 5.954521 2.381808 0 5.444133 2.551937 0
+ L3 12434688 0.000000 -4.763617 -4.253229 0 -4.423358 -3.572712 0
+ L3 12434688 0.000000 -5.444133 -3.232454 0 -4.933746 -3.572712 0
+ L3 16755200 0.000000 -1.190904 -5.784392 0 -0.510387 -5.274004 0
+ L3 16755200 0.000000 -3.912971 -3.572712 0 -2.722067 -3.572712 0
+ L3 16755200 0.000000 -4.763617 -3.232454 0 -4.253229 -2.722067 0
+ L3 16755200 0.000000 -3.232454 -1.871421 0 -4.253229 -1.701292 0
+ L3 16755200 0.000000 -5.784392 -1.361033 0 -4.593487 -1.361033 0
+ L3 16755200 0.000000 -4.593487 1.190904 0 -5.784392 1.871421 0
+ L3 16755200 0.000000 -4.083100 3.912971 0 -3.742842 3.402583 0
+ L3 16755200 0.000000 -1.531162 5.444133 0 -1.190904 5.954521 0
+ L3 16755200 0.000000 -0.170129 4.593487 0 0.000000 5.103875 0
+ L3 16755200 0.000000 2.211679 5.444133 0 2.041550 6.124650 0
+ L3 16755200 0.000000 5.103875 3.232454 0 5.444133 3.742842 0
+ L3 16755200 0.000000 5.954521 -0.510387 0 5.274004 -0.340258 0
+ F4 6842368 0.000000 4 0
+ 2.620972 -2.693777 0
+ 1.553169 -2.378289 0
+ 1.431827 -1.577437 0
+ 2.135607 -1.868656 0
+ F4 6842368 0.000000 4 0
+ 3.324752 0.121341 0
+ 2.062802 0.412560 0
+ 1.795851 -0.218414 0
+ 3.518898 -0.315487 0
+ F4 6842368 0.000000 4 0
+ 0.800853 3.227679 0
+ 0.169878 2.742313 0
+ 0.339756 1.723046 0
+ 0.728048 1.868656 0
+ F4 6842368 0.000000 5 0
+ -2.548167 0.291219 0
+ -2.208412 0.048537 0
+ -1.043535 -0.242683 0
+ -0.412560 0.412560 0
+ -1.868656 0.630975 0
+ L3 6842368 0.000000 0.340258 -3.742842 0 0.680517 -3.232454 0
+ L3 6842368 0.000000 2.381808 -3.232454 0 1.531162 -2.892196 0
+ L3 6842368 0.000000 2.722067 -4.083100 0 2.211679 -3.742842 0
+ L3 6842368 0.000000 1.531162 -4.423358 0 1.190904 -3.742842 0
+ L3 6842368 0.000000 -0.680517 -4.253229 0 -0.340258 -3.742842 0
+ L3 6842368 0.000000 -2.041550 -2.722067 0 -1.361033 -2.722067 0
+ L3 6842368 0.000000 -1.531162 -1.871421 0 -0.680517 -2.211679 0
+ L3 6842368 0.000000 -2.041550 -1.020775 0 -1.361033 -0.510387 0
+ L3 6842368 0.000000 -3.062325 -0.850646 0 -2.381808 -0.510387 0
+ L3 6842368 0.000000 -3.912971 -0.340258 0 -3.062325 0.000000 0
+ L3 6842368 0.000000 -2.722067 0.850646 0 -3.402583 1.531162 0
+ L3 6842368 0.000000 -3.062325 2.381808 0 -2.551937 1.701292 0
+ L3 6842368 0.000000 -1.871421 3.742842 0 -1.361033 3.062325 0
+ L3 6842368 0.000000 -0.680517 3.062325 0 -0.850646 4.083100 0
+ L3 6842368 0.000000 -0.510387 1.871421 0 -0.340258 2.551937 0
+ L3 6842368 0.000000 1.190904 3.062325 0 1.531162 4.083100 0
+ L3 6842368 0.000000 2.041550 2.892196 0 3.062325 3.402583 0
+ L3 6842368 0.000000 4.593487 1.190904 0 3.742842 1.361033 0
+ L3 6842368 0.000000 4.593487 2.722067 0 3.742842 2.381808 0
+ L3 6842368 0.000000 4.933746 2.041550 0 4.083100 1.871421 0
+ L3 6842368 0.000000 2.041550 4.933746 0 1.871421 4.253229 0
+ L3 6842368 0.000000 3.062325 4.423358 0 2.551937 3.912971 0
+ L3 6842368 0.000000 2.381808 4.593487 0 2.041550 3.572712 0
+ L3 6842368 0.000000 5.103875 -0.850646 0 4.083100 -1.020775 0
+ L3 6842368 0.000000 4.253229 -2.211679 0 3.402583 -1.701292 0
+ L3 6842368 0.000000 5.103875 -1.701292 0 4.253229 -1.531162 0
+ L3 6842368 0.000000 -1.701292 4.763617 0 -1.531162 4.083100 0
+ L3 6842368 0.000000 -3.742842 2.381808 0 -3.232454 2.041550 0
+ L3 6842368 0.000000 2.381808 -5.444133 0 2.041550 -4.593487 0
+ L3 6842368 0.000000 3.062325 -4.933746 0 2.551937 -4.423358 0
+ F4 16755200 0.000000 5 0
+ -1.019267 -3.227679 0
+ -0.922194 -2.669509 0
+ 0.121341 -2.208412 0
+ 0.412560 -2.887923 0
+ -0.121341 -3.397556 0
+ F4 16755200 0.000000 3 0
+ 2.960728 2.426826 0
+ 2.620972 1.674510 0
+ 2.087070 2.135607 0
+ F4 16755200 0.000000 4 0
+ -2.232680 2.815118 0
+ -1.553169 2.645240 0
+ -1.067803 1.504632 0
+ -1.820120 1.698778 0
+ END$SEGS
+STRUCTURE 169 3 0 0 0 A 2 525.000000 129.000000 0 0.000000 "Lg Fall 14"" Fall-14a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.234619 -4.017274 0
+ -3.633905 -6.288724 0
+ -2.282299 -6.870665 0
+ -0.761741 -4.993434 0
+ 0.984083 -6.626625 0
+ 3.086582 -5.631693 0
+ 2.598502 5.537831 0
+ 0.608637 6.589081 0
+ -0.217344 5.312564 0
+ -1.888080 5.331336 0
+ -2.301071 6.626625 0
+ -4.872877 5.800644 0
+ -4.553748 4.280087 0
+ -6.675019 4.129908 0
+ -7.763813 1.933548 0
+ -6.562385 0.694575 0
+ -8.139259 0.000000 0
+ -7.726268 -1.576874 0
+ -6.055533 -2.177588 0
+ -7.256961 -3.153748 0
+ -6.280801 -4.918345 0
+ F4 6842368 0.000000 28 0
+ -5.856961 -3.153748 0
+ -4.880801 -4.918345 0
+ -2.834619 -4.017274 0
+ -2.233905 -6.288724 0
+ -0.882299 -6.870665 0
+ 0.638259 -4.993434 0
+ 2.384083 -6.626625 0
+ 4.486582 -5.631693 0
+ 3.698145 -3.547967 0
+ 6.213635 -2.853391 0
+ 6.589081 -0.488080 0
+ 5.275019 0.732120 0
+ 6.513991 2.496717 0
+ 5.575376 4.073591 0
+ 4.054819 3.510422 0
+ 3.998502 5.537831 0
+ 2.008637 6.589081 0
+ 1.182656 5.312564 0
+ -0.488080 5.331336 0
+ -0.901071 6.626625 0
+ -3.472877 5.800644 0
+ -3.153748 4.280087 0
+ -5.275019 4.129908 0
+ -6.363813 1.933548 0
+ -5.162385 0.694575 0
+ -6.739259 0.000000 0
+ -6.326268 -1.576874 0
+ -4.655533 -2.177588 0
+ F4 12434688 0.000000 26 0
+ 0.938615 -4.392720 0
+ 2.252677 -5.706782 0
+ 3.510422 -4.937117 0
+ 2.947253 -2.740757 0
+ 5.462742 -2.046182 0
+ 5.631693 -0.957388 0
+ 4.054819 0.131406 0
+ 5.425198 2.196360 0
+ 4.824484 2.909708 0
+ 3.322699 2.872163 0
+ 3.247610 4.599216 0
+ 1.952320 5.312564 0
+ 0.882299 4.054819 0
+ -0.732120 4.280087 0
+ -1.107566 5.143613 0
+ -2.477945 4.786939 0
+ -2.496717 3.285154 0
+ -3.641828 3.247610 0
+ -4.392720 1.745825 0
+ -3.059886 0.488080 0
+ -4.317631 -0.168951 0
+ -4.111136 -1.070022 0
+ -2.102499 -1.445468 0
+ -2.872163 -2.815846 0
+ -1.614419 -3.792007 0
+ -1.107566 -4.899573 0
+ L3 12434688 0.000000 -1.701292 -5.444133 0 -1.871421 -4.593487 0
+ L3 12434688 0.000000 -3.572712 -2.892196 0 -2.892196 -2.381808 0
+ L3 12434688 0.000000 -5.784392 -0.340258 0 -4.763617 -0.850646 0
+ L3 12434688 0.000000 -3.912971 0.510387 0 -4.763617 0.340258 0
+ L3 12434688 0.000000 -5.274004 2.551937 0 -4.423358 2.722067 0
+ L3 12434688 0.000000 -2.551937 5.103875 0 -2.892196 5.614262 0
+ L3 12434688 0.000000 0.850646 4.593487 0 0.340258 4.933746 0
+ L3 12434688 0.000000 3.232454 5.103875 0 3.742842 5.274004 0
+ L3 12434688 0.000000 5.954521 2.381808 0 5.444133 2.551937 0
+ L3 12434688 0.000000 -4.763617 -4.253229 0 -4.423358 -3.572712 0
+ L3 12434688 0.000000 -5.444133 -3.232454 0 -4.933746 -3.572712 0
+ L3 16755200 0.000000 -1.190904 -5.784392 0 -0.510387 -5.274004 0
+ L3 16755200 0.000000 -3.912971 -3.572712 0 -2.722067 -3.572712 0
+ L3 16755200 0.000000 -4.763617 -3.232454 0 -4.253229 -2.722067 0
+ L3 16755200 0.000000 -3.232454 -1.871421 0 -4.253229 -1.701292 0
+ L3 16755200 0.000000 -5.784392 -1.361033 0 -4.593487 -1.361033 0
+ L3 16755200 0.000000 -4.593487 1.190904 0 -5.784392 1.871421 0
+ L3 16755200 0.000000 -4.083100 3.912971 0 -3.742842 3.402583 0
+ L3 16755200 0.000000 -1.531162 5.444133 0 -1.190904 5.954521 0
+ L3 16755200 0.000000 -0.170129 4.593487 0 0.000000 5.103875 0
+ L3 16755200 0.000000 2.211679 5.444133 0 2.041550 6.124650 0
+ L3 16755200 0.000000 5.103875 3.232454 0 5.444133 3.742842 0
+ L3 16755200 0.000000 5.954521 -0.510387 0 5.274004 -0.340258 0
+ F4 6842368 0.000000 4 0
+ 2.620972 -2.693777 0
+ 1.553169 -2.378289 0
+ 1.431827 -1.577437 0
+ 2.135607 -1.868656 0
+ F4 6842368 0.000000 4 0
+ 3.324752 0.121341 0
+ 2.062802 0.412560 0
+ 1.795851 -0.218414 0
+ 3.518898 -0.315487 0
+ F4 6842368 0.000000 4 0
+ 0.800853 3.227679 0
+ 0.169878 2.742313 0
+ 0.339756 1.723046 0
+ 0.728048 1.868656 0
+ F4 6842368 0.000000 5 0
+ -2.548167 0.291219 0
+ -2.208412 0.048537 0
+ -1.043535 -0.242683 0
+ -0.412560 0.412560 0
+ -1.868656 0.630975 0
+ L3 6842368 0.000000 0.340258 -3.742842 0 0.680517 -3.232454 0
+ L3 6842368 0.000000 2.381808 -3.232454 0 1.531162 -2.892196 0
+ L3 6842368 0.000000 2.722067 -4.083100 0 2.211679 -3.742842 0
+ L3 6842368 0.000000 1.531162 -4.423358 0 1.190904 -3.742842 0
+ L3 6842368 0.000000 -0.680517 -4.253229 0 -0.340258 -3.742842 0
+ L3 6842368 0.000000 -2.041550 -2.722067 0 -1.361033 -2.722067 0
+ L3 6842368 0.000000 -1.531162 -1.871421 0 -0.680517 -2.211679 0
+ L3 6842368 0.000000 -2.041550 -1.020775 0 -1.361033 -0.510387 0
+ L3 6842368 0.000000 -3.062325 -0.850646 0 -2.381808 -0.510387 0
+ L3 6842368 0.000000 -3.912971 -0.340258 0 -3.062325 0.000000 0
+ L3 6842368 0.000000 -2.722067 0.850646 0 -3.402583 1.531162 0
+ L3 6842368 0.000000 -3.062325 2.381808 0 -2.551937 1.701292 0
+ L3 6842368 0.000000 -1.871421 3.742842 0 -1.361033 3.062325 0
+ L3 6842368 0.000000 -0.680517 3.062325 0 -0.850646 4.083100 0
+ L3 6842368 0.000000 -0.510387 1.871421 0 -0.340258 2.551937 0
+ L3 6842368 0.000000 1.190904 3.062325 0 1.531162 4.083100 0
+ L3 6842368 0.000000 2.041550 2.892196 0 3.062325 3.402583 0
+ L3 6842368 0.000000 4.593487 1.190904 0 3.742842 1.361033 0
+ L3 6842368 0.000000 4.593487 2.722067 0 3.742842 2.381808 0
+ L3 6842368 0.000000 4.933746 2.041550 0 4.083100 1.871421 0
+ L3 6842368 0.000000 2.041550 4.933746 0 1.871421 4.253229 0
+ L3 6842368 0.000000 3.062325 4.423358 0 2.551937 3.912971 0
+ L3 6842368 0.000000 2.381808 4.593487 0 2.041550 3.572712 0
+ L3 6842368 0.000000 5.103875 -0.850646 0 4.083100 -1.020775 0
+ L3 6842368 0.000000 4.253229 -2.211679 0 3.402583 -1.701292 0
+ L3 6842368 0.000000 5.103875 -1.701292 0 4.253229 -1.531162 0
+ L3 6842368 0.000000 -1.701292 4.763617 0 -1.531162 4.083100 0
+ L3 6842368 0.000000 -3.742842 2.381808 0 -3.232454 2.041550 0
+ L3 6842368 0.000000 2.381808 -5.444133 0 2.041550 -4.593487 0
+ L3 6842368 0.000000 3.062325 -4.933746 0 2.551937 -4.423358 0
+ F4 16755200 0.000000 5 0
+ -1.019267 -3.227679 0
+ -0.922194 -2.669509 0
+ 0.121341 -2.208412 0
+ 0.412560 -2.887923 0
+ -0.121341 -3.397556 0
+ F4 16755200 0.000000 3 0
+ 2.960728 2.426826 0
+ 2.620972 1.674510 0
+ 2.087070 2.135607 0
+ F4 16755200 0.000000 4 0
+ -2.232680 2.815118 0
+ -1.553169 2.645240 0
+ -1.067803 1.504632 0
+ -1.820120 1.698778 0
+ END$SEGS
+STRUCTURE 170 3 0 0 0 A 2 550.500000 139.000000 0 0.000000 "Lg Fall 14"" Fall-14a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.234619 -4.017274 0
+ -3.633905 -6.288724 0
+ -2.282299 -6.870665 0
+ -0.761741 -4.993434 0
+ 0.984083 -6.626625 0
+ 3.086582 -5.631693 0
+ 2.598502 5.537831 0
+ 0.608637 6.589081 0
+ -0.217344 5.312564 0
+ -1.888080 5.331336 0
+ -2.301071 6.626625 0
+ -4.872877 5.800644 0
+ -4.553748 4.280087 0
+ -6.675019 4.129908 0
+ -7.763813 1.933548 0
+ -6.562385 0.694575 0
+ -8.139259 0.000000 0
+ -7.726268 -1.576874 0
+ -6.055533 -2.177588 0
+ -7.256961 -3.153748 0
+ -6.280801 -4.918345 0
+ F4 6842368 0.000000 28 0
+ -5.856961 -3.153748 0
+ -4.880801 -4.918345 0
+ -2.834619 -4.017274 0
+ -2.233905 -6.288724 0
+ -0.882299 -6.870665 0
+ 0.638259 -4.993434 0
+ 2.384083 -6.626625 0
+ 4.486582 -5.631693 0
+ 3.698145 -3.547967 0
+ 6.213635 -2.853391 0
+ 6.589081 -0.488080 0
+ 5.275019 0.732120 0
+ 6.513991 2.496717 0
+ 5.575376 4.073591 0
+ 4.054819 3.510422 0
+ 3.998502 5.537831 0
+ 2.008637 6.589081 0
+ 1.182656 5.312564 0
+ -0.488080 5.331336 0
+ -0.901071 6.626625 0
+ -3.472877 5.800644 0
+ -3.153748 4.280087 0
+ -5.275019 4.129908 0
+ -6.363813 1.933548 0
+ -5.162385 0.694575 0
+ -6.739259 0.000000 0
+ -6.326268 -1.576874 0
+ -4.655533 -2.177588 0
+ F4 12434688 0.000000 26 0
+ 0.938615 -4.392720 0
+ 2.252677 -5.706782 0
+ 3.510422 -4.937117 0
+ 2.947253 -2.740757 0
+ 5.462742 -2.046182 0
+ 5.631693 -0.957388 0
+ 4.054819 0.131406 0
+ 5.425198 2.196360 0
+ 4.824484 2.909708 0
+ 3.322699 2.872163 0
+ 3.247610 4.599216 0
+ 1.952320 5.312564 0
+ 0.882299 4.054819 0
+ -0.732120 4.280087 0
+ -1.107566 5.143613 0
+ -2.477945 4.786939 0
+ -2.496717 3.285154 0
+ -3.641828 3.247610 0
+ -4.392720 1.745825 0
+ -3.059886 0.488080 0
+ -4.317631 -0.168951 0
+ -4.111136 -1.070022 0
+ -2.102499 -1.445468 0
+ -2.872163 -2.815846 0
+ -1.614419 -3.792007 0
+ -1.107566 -4.899573 0
+ L3 12434688 0.000000 -1.701292 -5.444133 0 -1.871421 -4.593487 0
+ L3 12434688 0.000000 -3.572712 -2.892196 0 -2.892196 -2.381808 0
+ L3 12434688 0.000000 -5.784392 -0.340258 0 -4.763617 -0.850646 0
+ L3 12434688 0.000000 -3.912971 0.510387 0 -4.763617 0.340258 0
+ L3 12434688 0.000000 -5.274004 2.551937 0 -4.423358 2.722067 0
+ L3 12434688 0.000000 -2.551937 5.103875 0 -2.892196 5.614262 0
+ L3 12434688 0.000000 0.850646 4.593487 0 0.340258 4.933746 0
+ L3 12434688 0.000000 3.232454 5.103875 0 3.742842 5.274004 0
+ L3 12434688 0.000000 5.954521 2.381808 0 5.444133 2.551937 0
+ L3 12434688 0.000000 -4.763617 -4.253229 0 -4.423358 -3.572712 0
+ L3 12434688 0.000000 -5.444133 -3.232454 0 -4.933746 -3.572712 0
+ L3 16755200 0.000000 -1.190904 -5.784392 0 -0.510387 -5.274004 0
+ L3 16755200 0.000000 -3.912971 -3.572712 0 -2.722067 -3.572712 0
+ L3 16755200 0.000000 -4.763617 -3.232454 0 -4.253229 -2.722067 0
+ L3 16755200 0.000000 -3.232454 -1.871421 0 -4.253229 -1.701292 0
+ L3 16755200 0.000000 -5.784392 -1.361033 0 -4.593487 -1.361033 0
+ L3 16755200 0.000000 -4.593487 1.190904 0 -5.784392 1.871421 0
+ L3 16755200 0.000000 -4.083100 3.912971 0 -3.742842 3.402583 0
+ L3 16755200 0.000000 -1.531162 5.444133 0 -1.190904 5.954521 0
+ L3 16755200 0.000000 -0.170129 4.593487 0 0.000000 5.103875 0
+ L3 16755200 0.000000 2.211679 5.444133 0 2.041550 6.124650 0
+ L3 16755200 0.000000 5.103875 3.232454 0 5.444133 3.742842 0
+ L3 16755200 0.000000 5.954521 -0.510387 0 5.274004 -0.340258 0
+ F4 6842368 0.000000 4 0
+ 2.620972 -2.693777 0
+ 1.553169 -2.378289 0
+ 1.431827 -1.577437 0
+ 2.135607 -1.868656 0
+ F4 6842368 0.000000 4 0
+ 3.324752 0.121341 0
+ 2.062802 0.412560 0
+ 1.795851 -0.218414 0
+ 3.518898 -0.315487 0
+ F4 6842368 0.000000 4 0
+ 0.800853 3.227679 0
+ 0.169878 2.742313 0
+ 0.339756 1.723046 0
+ 0.728048 1.868656 0
+ F4 6842368 0.000000 5 0
+ -2.548167 0.291219 0
+ -2.208412 0.048537 0
+ -1.043535 -0.242683 0
+ -0.412560 0.412560 0
+ -1.868656 0.630975 0
+ L3 6842368 0.000000 0.340258 -3.742842 0 0.680517 -3.232454 0
+ L3 6842368 0.000000 2.381808 -3.232454 0 1.531162 -2.892196 0
+ L3 6842368 0.000000 2.722067 -4.083100 0 2.211679 -3.742842 0
+ L3 6842368 0.000000 1.531162 -4.423358 0 1.190904 -3.742842 0
+ L3 6842368 0.000000 -0.680517 -4.253229 0 -0.340258 -3.742842 0
+ L3 6842368 0.000000 -2.041550 -2.722067 0 -1.361033 -2.722067 0
+ L3 6842368 0.000000 -1.531162 -1.871421 0 -0.680517 -2.211679 0
+ L3 6842368 0.000000 -2.041550 -1.020775 0 -1.361033 -0.510387 0
+ L3 6842368 0.000000 -3.062325 -0.850646 0 -2.381808 -0.510387 0
+ L3 6842368 0.000000 -3.912971 -0.340258 0 -3.062325 0.000000 0
+ L3 6842368 0.000000 -2.722067 0.850646 0 -3.402583 1.531162 0
+ L3 6842368 0.000000 -3.062325 2.381808 0 -2.551937 1.701292 0
+ L3 6842368 0.000000 -1.871421 3.742842 0 -1.361033 3.062325 0
+ L3 6842368 0.000000 -0.680517 3.062325 0 -0.850646 4.083100 0
+ L3 6842368 0.000000 -0.510387 1.871421 0 -0.340258 2.551937 0
+ L3 6842368 0.000000 1.190904 3.062325 0 1.531162 4.083100 0
+ L3 6842368 0.000000 2.041550 2.892196 0 3.062325 3.402583 0
+ L3 6842368 0.000000 4.593487 1.190904 0 3.742842 1.361033 0
+ L3 6842368 0.000000 4.593487 2.722067 0 3.742842 2.381808 0
+ L3 6842368 0.000000 4.933746 2.041550 0 4.083100 1.871421 0
+ L3 6842368 0.000000 2.041550 4.933746 0 1.871421 4.253229 0
+ L3 6842368 0.000000 3.062325 4.423358 0 2.551937 3.912971 0
+ L3 6842368 0.000000 2.381808 4.593487 0 2.041550 3.572712 0
+ L3 6842368 0.000000 5.103875 -0.850646 0 4.083100 -1.020775 0
+ L3 6842368 0.000000 4.253229 -2.211679 0 3.402583 -1.701292 0
+ L3 6842368 0.000000 5.103875 -1.701292 0 4.253229 -1.531162 0
+ L3 6842368 0.000000 -1.701292 4.763617 0 -1.531162 4.083100 0
+ L3 6842368 0.000000 -3.742842 2.381808 0 -3.232454 2.041550 0
+ L3 6842368 0.000000 2.381808 -5.444133 0 2.041550 -4.593487 0
+ L3 6842368 0.000000 3.062325 -4.933746 0 2.551937 -4.423358 0
+ F4 16755200 0.000000 5 0
+ -1.019267 -3.227679 0
+ -0.922194 -2.669509 0
+ 0.121341 -2.208412 0
+ 0.412560 -2.887923 0
+ -0.121341 -3.397556 0
+ F4 16755200 0.000000 3 0
+ 2.960728 2.426826 0
+ 2.620972 1.674510 0
+ 2.087070 2.135607 0
+ F4 16755200 0.000000 4 0
+ -2.232680 2.815118 0
+ -1.553169 2.645240 0
+ -1.067803 1.504632 0
+ -1.820120 1.698778 0
+ END$SEGS
+STRUCTURE 171 3 0 0 0 A 2 504.500000 165.000000 0 0.000000 "Lg Fall 14"" Fall-14b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.234619 4.017274 0
+ -3.633905 6.288724 0
+ -2.282299 6.870665 0
+ -0.761741 4.993434 0
+ 0.984083 6.626625 0
+ 3.086582 5.631693 0
+ 2.598502 -5.537831 0
+ 0.608637 -6.589081 0
+ -0.217344 -5.312564 0
+ -1.888080 -5.331336 0
+ -2.301071 -6.626625 0
+ -4.872877 -5.800644 0
+ -4.553748 -4.280087 0
+ -6.675019 -4.129908 0
+ -7.763813 -1.933548 0
+ -6.562385 -0.694575 0
+ -8.139259 0.000000 0
+ -7.726268 1.576874 0
+ -6.055533 2.177588 0
+ -7.256961 3.153748 0
+ -6.280801 4.918345 0
+ F4 6815744 0.000000 28 0
+ -5.856961 3.153748 0
+ -4.880801 4.918345 0
+ -2.834619 4.017274 0
+ -2.233905 6.288724 0
+ -0.882299 6.870665 0
+ 0.638259 4.993434 0
+ 2.384083 6.626625 0
+ 4.486582 5.631693 0
+ 3.698145 3.547967 0
+ 6.213635 2.853391 0
+ 6.589081 0.488080 0
+ 5.275019 -0.732120 0
+ 6.513991 -2.496717 0
+ 5.575376 -4.073591 0
+ 4.054819 -3.510422 0
+ 3.998502 -5.537831 0
+ 2.008637 -6.589081 0
+ 1.182656 -5.312564 0
+ -0.488080 -5.331336 0
+ -0.901071 -6.626625 0
+ -3.472877 -5.800644 0
+ -3.153748 -4.280087 0
+ -5.275019 -4.129908 0
+ -6.363813 -1.933548 0
+ -5.162385 -0.694575 0
+ -6.739259 0.000000 0
+ -6.326268 1.576874 0
+ -4.655533 2.177588 0
+ F4 12410368 0.000000 26 0
+ 0.938615 4.392720 0
+ 2.252677 5.706782 0
+ 3.510422 4.937117 0
+ 2.947253 2.740757 0
+ 5.462742 2.046182 0
+ 5.631693 0.957388 0
+ 4.054819 -0.131406 0
+ 5.425198 -2.196360 0
+ 4.824484 -2.909708 0
+ 3.322699 -2.872163 0
+ 3.247610 -4.599216 0
+ 1.952320 -5.312564 0
+ 0.882299 -4.054819 0
+ -0.732120 -4.280087 0
+ -1.107566 -5.143613 0
+ -2.477945 -4.786939 0
+ -2.496717 -3.285154 0
+ -3.641828 -3.247610 0
+ -4.392720 -1.745825 0
+ -3.059886 -0.488080 0
+ -4.317631 0.168951 0
+ -4.111136 1.070022 0
+ -2.102499 1.445468 0
+ -2.872163 2.815846 0
+ -1.614419 3.792007 0
+ -1.107566 4.899573 0
+ L3 12410368 0.000000 -1.190904 5.784392 0 -0.510387 5.274004 0
+ L3 12410368 0.000000 -4.763617 3.232454 0 -4.253229 2.722067 0
+ L3 12410368 0.000000 -3.572712 2.892196 0 -2.892196 2.381808 0
+ L3 12410368 0.000000 -5.784392 1.361033 0 -4.593487 1.361033 0
+ L3 12410368 0.000000 -3.912971 -0.510387 0 -4.763617 -0.340258 0
+ L3 12410368 0.000000 -5.274004 -2.551937 0 -4.423358 -2.722067 0
+ L3 12410368 0.000000 -2.551937 -5.103875 0 -2.892196 -5.614262 0
+ L3 12410368 0.000000 -0.170129 -4.593487 0 0.000000 -5.103875 0
+ L3 12410368 0.000000 2.211679 -5.444133 0 2.041550 -6.124650 0
+ L3 12410368 0.000000 5.103875 -3.232454 0 5.444133 -3.742842 0
+ L3 12410368 0.000000 -4.763617 4.253229 0 -4.423358 3.572712 0
+ L3 14915328 0.000000 -5.444133 3.232454 0 -4.933746 3.572712 0
+ L3 16755200 0.000000 5.954521 0.510387 0 5.274004 0.340258 0
+ L3 16755200 0.000000 -1.701292 5.444133 0 -1.871421 4.593487 0
+ L3 16755200 0.000000 -3.912971 3.572712 0 -2.722067 3.572712 0
+ L3 16755200 0.000000 -3.232454 1.871421 0 -4.253229 1.701292 0
+ L3 16755200 0.000000 -5.784392 0.340258 0 -4.763617 0.850646 0
+ L3 16755200 0.000000 -4.593487 -1.190904 0 -5.784392 -1.871421 0
+ L3 16755200 0.000000 -4.083100 -3.912971 0 -3.742842 -3.402583 0
+ L3 16755200 0.000000 -1.531162 -5.444133 0 -1.190904 -5.954521 0
+ L3 16755200 0.000000 0.850646 -4.593487 0 0.340258 -4.933746 0
+ L3 16755200 0.000000 3.232454 -5.103875 0 3.742842 -5.274004 0
+ L3 16755200 0.000000 5.954521 -2.381808 0 5.444133 -2.551937 0
+ F4 6815744 0.000000 5 0
+ -1.019267 3.227679 0
+ -0.922194 2.669509 0
+ 0.121341 2.208412 0
+ 0.412560 2.887923 0
+ -0.121341 3.397556 0
+ F4 6815744 0.000000 4 0
+ 3.324752 -0.121341 0
+ 2.062802 -0.412560 0
+ 1.795851 0.218414 0
+ 3.518898 0.315487 0
+ F4 6815744 0.000000 4 0
+ 0.800853 -3.227679 0
+ 0.169878 -2.742313 0
+ 0.339756 -1.723046 0
+ 0.728048 -1.868656 0
+ F4 6815744 0.000000 5 0
+ -2.548167 -0.291219 0
+ -2.208412 -0.048537 0
+ -1.043535 0.242683 0
+ -0.412560 -0.412560 0
+ -1.868656 -0.630975 0
+ L3 6815744 0.000000 2.381808 3.232454 0 1.531162 2.892196 0
+ L3 6815744 0.000000 1.531162 4.423358 0 1.190904 3.742842 0
+ L3 6815744 0.000000 -0.680517 4.253229 0 -0.340258 3.742842 0
+ L3 6815744 0.000000 -1.531162 1.871421 0 -0.680517 2.211679 0
+ L3 6815744 0.000000 -2.041550 1.020775 0 -1.361033 0.510387 0
+ L3 6815744 0.000000 -3.912971 0.340258 0 -3.062325 0.000000 0
+ L3 6815744 0.000000 -2.722067 -0.850646 0 -3.402583 -1.531162 0
+ L3 6815744 0.000000 -0.680517 -3.062325 0 -0.850646 -4.083100 0
+ L3 6815744 0.000000 -0.510387 -1.871421 0 -0.340258 -2.551937 0
+ L3 6815744 0.000000 1.190904 -3.062325 0 1.531162 -4.083100 0
+ L3 6815744 0.000000 2.041550 -2.892196 0 3.062325 -3.402583 0
+ L3 6815744 0.000000 4.593487 -1.190904 0 3.742842 -1.361033 0
+ L3 6815744 0.000000 4.593487 -2.722067 0 3.742842 -2.381808 0
+ L3 6815744 0.000000 4.933746 -2.041550 0 4.083100 -1.871421 0
+ L3 6815744 0.000000 2.041550 -4.933746 0 1.871421 -4.253229 0
+ L3 6815744 0.000000 3.062325 -4.423358 0 2.551937 -3.912971 0
+ L3 6815744 0.000000 5.103875 0.850646 0 4.083100 1.020775 0
+ L3 6815744 0.000000 5.103875 1.701292 0 4.253229 1.531162 0
+ L3 6815744 0.000000 -1.701292 -4.763617 0 -1.531162 -4.083100 0
+ L3 6815744 0.000000 -3.742842 -2.381808 0 -3.232454 -2.041550 0
+ L3 6815744 0.000000 2.381808 5.444133 0 2.041550 4.593487 0
+ L3 6815744 0.000000 3.062325 4.933746 0 2.551937 4.423358 0
+ L3 11184640 0.000000 2.381808 -4.593487 0 2.041550 -3.572712 0
+ L3 14915328 0.000000 2.722067 4.083100 0 2.211679 3.742842 0
+ L3 14915328 0.000000 -3.062325 0.850646 0 -2.381808 0.510387 0
+ F4 16755200 0.000000 4 0
+ 2.620972 2.693777 0
+ 1.553169 2.378289 0
+ 1.431827 1.577437 0
+ 2.135607 1.868656 0
+ F4 16755200 0.000000 3 0
+ 2.960728 -2.426826 0
+ 2.620972 -1.674510 0
+ 2.087070 -2.135607 0
+ F4 16755200 0.000000 4 0
+ -2.232680 -2.815118 0
+ -1.553169 -2.645240 0
+ -1.067803 -1.504632 0
+ -1.820120 -1.698778 0
+ L3 16755200 0.000000 0.340258 3.742842 0 0.680517 3.232454 0
+ L3 16755200 0.000000 -2.041550 2.722067 0 -1.361033 2.722067 0
+ L3 16755200 0.000000 -3.062325 -2.381808 0 -2.551937 -1.701292 0
+ L3 16755200 0.000000 -1.871421 -3.742842 0 -1.361033 -3.062325 0
+ L3 16755200 0.000000 4.253229 2.211679 0 3.402583 1.701292 0
+ END$SEGS
+STRUCTURE 172 3 0 0 0 A 2 487.000000 189.500000 0 0.000000 "Lg Fall 14"" Fall-14b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.234619 4.017274 0
+ -3.633905 6.288724 0
+ -2.282299 6.870665 0
+ -0.761741 4.993434 0
+ 0.984083 6.626625 0
+ 3.086582 5.631693 0
+ 2.598502 -5.537831 0
+ 0.608637 -6.589081 0
+ -0.217344 -5.312564 0
+ -1.888080 -5.331336 0
+ -2.301071 -6.626625 0
+ -4.872877 -5.800644 0
+ -4.553748 -4.280087 0
+ -6.675019 -4.129908 0
+ -7.763813 -1.933548 0
+ -6.562385 -0.694575 0
+ -8.139259 0.000000 0
+ -7.726268 1.576874 0
+ -6.055533 2.177588 0
+ -7.256961 3.153748 0
+ -6.280801 4.918345 0
+ F4 6815744 0.000000 28 0
+ -5.856961 3.153748 0
+ -4.880801 4.918345 0
+ -2.834619 4.017274 0
+ -2.233905 6.288724 0
+ -0.882299 6.870665 0
+ 0.638259 4.993434 0
+ 2.384083 6.626625 0
+ 4.486582 5.631693 0
+ 3.698145 3.547967 0
+ 6.213635 2.853391 0
+ 6.589081 0.488080 0
+ 5.275019 -0.732120 0
+ 6.513991 -2.496717 0
+ 5.575376 -4.073591 0
+ 4.054819 -3.510422 0
+ 3.998502 -5.537831 0
+ 2.008637 -6.589081 0
+ 1.182656 -5.312564 0
+ -0.488080 -5.331336 0
+ -0.901071 -6.626625 0
+ -3.472877 -5.800644 0
+ -3.153748 -4.280087 0
+ -5.275019 -4.129908 0
+ -6.363813 -1.933548 0
+ -5.162385 -0.694575 0
+ -6.739259 0.000000 0
+ -6.326268 1.576874 0
+ -4.655533 2.177588 0
+ F4 12410368 0.000000 26 0
+ 0.938615 4.392720 0
+ 2.252677 5.706782 0
+ 3.510422 4.937117 0
+ 2.947253 2.740757 0
+ 5.462742 2.046182 0
+ 5.631693 0.957388 0
+ 4.054819 -0.131406 0
+ 5.425198 -2.196360 0
+ 4.824484 -2.909708 0
+ 3.322699 -2.872163 0
+ 3.247610 -4.599216 0
+ 1.952320 -5.312564 0
+ 0.882299 -4.054819 0
+ -0.732120 -4.280087 0
+ -1.107566 -5.143613 0
+ -2.477945 -4.786939 0
+ -2.496717 -3.285154 0
+ -3.641828 -3.247610 0
+ -4.392720 -1.745825 0
+ -3.059886 -0.488080 0
+ -4.317631 0.168951 0
+ -4.111136 1.070022 0
+ -2.102499 1.445468 0
+ -2.872163 2.815846 0
+ -1.614419 3.792007 0
+ -1.107566 4.899573 0
+ L3 12410368 0.000000 -1.190904 5.784392 0 -0.510387 5.274004 0
+ L3 12410368 0.000000 -4.763617 3.232454 0 -4.253229 2.722067 0
+ L3 12410368 0.000000 -3.572712 2.892196 0 -2.892196 2.381808 0
+ L3 12410368 0.000000 -5.784392 1.361033 0 -4.593487 1.361033 0
+ L3 12410368 0.000000 -3.912971 -0.510387 0 -4.763617 -0.340258 0
+ L3 12410368 0.000000 -5.274004 -2.551937 0 -4.423358 -2.722067 0
+ L3 12410368 0.000000 -2.551937 -5.103875 0 -2.892196 -5.614262 0
+ L3 12410368 0.000000 -0.170129 -4.593487 0 0.000000 -5.103875 0
+ L3 12410368 0.000000 2.211679 -5.444133 0 2.041550 -6.124650 0
+ L3 12410368 0.000000 5.103875 -3.232454 0 5.444133 -3.742842 0
+ L3 12410368 0.000000 -4.763617 4.253229 0 -4.423358 3.572712 0
+ L3 14915328 0.000000 -5.444133 3.232454 0 -4.933746 3.572712 0
+ L3 16755200 0.000000 5.954521 0.510387 0 5.274004 0.340258 0
+ L3 16755200 0.000000 -1.701292 5.444133 0 -1.871421 4.593487 0
+ L3 16755200 0.000000 -3.912971 3.572712 0 -2.722067 3.572712 0
+ L3 16755200 0.000000 -3.232454 1.871421 0 -4.253229 1.701292 0
+ L3 16755200 0.000000 -5.784392 0.340258 0 -4.763617 0.850646 0
+ L3 16755200 0.000000 -4.593487 -1.190904 0 -5.784392 -1.871421 0
+ L3 16755200 0.000000 -4.083100 -3.912971 0 -3.742842 -3.402583 0
+ L3 16755200 0.000000 -1.531162 -5.444133 0 -1.190904 -5.954521 0
+ L3 16755200 0.000000 0.850646 -4.593487 0 0.340258 -4.933746 0
+ L3 16755200 0.000000 3.232454 -5.103875 0 3.742842 -5.274004 0
+ L3 16755200 0.000000 5.954521 -2.381808 0 5.444133 -2.551937 0
+ F4 6815744 0.000000 5 0
+ -1.019267 3.227679 0
+ -0.922194 2.669509 0
+ 0.121341 2.208412 0
+ 0.412560 2.887923 0
+ -0.121341 3.397556 0
+ F4 6815744 0.000000 4 0
+ 3.324752 -0.121341 0
+ 2.062802 -0.412560 0
+ 1.795851 0.218414 0
+ 3.518898 0.315487 0
+ F4 6815744 0.000000 4 0
+ 0.800853 -3.227679 0
+ 0.169878 -2.742313 0
+ 0.339756 -1.723046 0
+ 0.728048 -1.868656 0
+ F4 6815744 0.000000 5 0
+ -2.548167 -0.291219 0
+ -2.208412 -0.048537 0
+ -1.043535 0.242683 0
+ -0.412560 -0.412560 0
+ -1.868656 -0.630975 0
+ L3 6815744 0.000000 2.381808 3.232454 0 1.531162 2.892196 0
+ L3 6815744 0.000000 1.531162 4.423358 0 1.190904 3.742842 0
+ L3 6815744 0.000000 -0.680517 4.253229 0 -0.340258 3.742842 0
+ L3 6815744 0.000000 -1.531162 1.871421 0 -0.680517 2.211679 0
+ L3 6815744 0.000000 -2.041550 1.020775 0 -1.361033 0.510387 0
+ L3 6815744 0.000000 -3.912971 0.340258 0 -3.062325 0.000000 0
+ L3 6815744 0.000000 -2.722067 -0.850646 0 -3.402583 -1.531162 0
+ L3 6815744 0.000000 -0.680517 -3.062325 0 -0.850646 -4.083100 0
+ L3 6815744 0.000000 -0.510387 -1.871421 0 -0.340258 -2.551937 0
+ L3 6815744 0.000000 1.190904 -3.062325 0 1.531162 -4.083100 0
+ L3 6815744 0.000000 2.041550 -2.892196 0 3.062325 -3.402583 0
+ L3 6815744 0.000000 4.593487 -1.190904 0 3.742842 -1.361033 0
+ L3 6815744 0.000000 4.593487 -2.722067 0 3.742842 -2.381808 0
+ L3 6815744 0.000000 4.933746 -2.041550 0 4.083100 -1.871421 0
+ L3 6815744 0.000000 2.041550 -4.933746 0 1.871421 -4.253229 0
+ L3 6815744 0.000000 3.062325 -4.423358 0 2.551937 -3.912971 0
+ L3 6815744 0.000000 5.103875 0.850646 0 4.083100 1.020775 0
+ L3 6815744 0.000000 5.103875 1.701292 0 4.253229 1.531162 0
+ L3 6815744 0.000000 -1.701292 -4.763617 0 -1.531162 -4.083100 0
+ L3 6815744 0.000000 -3.742842 -2.381808 0 -3.232454 -2.041550 0
+ L3 6815744 0.000000 2.381808 5.444133 0 2.041550 4.593487 0
+ L3 6815744 0.000000 3.062325 4.933746 0 2.551937 4.423358 0
+ L3 11184640 0.000000 2.381808 -4.593487 0 2.041550 -3.572712 0
+ L3 14915328 0.000000 2.722067 4.083100 0 2.211679 3.742842 0
+ L3 14915328 0.000000 -3.062325 0.850646 0 -2.381808 0.510387 0
+ F4 16755200 0.000000 4 0
+ 2.620972 2.693777 0
+ 1.553169 2.378289 0
+ 1.431827 1.577437 0
+ 2.135607 1.868656 0
+ F4 16755200 0.000000 3 0
+ 2.960728 -2.426826 0
+ 2.620972 -1.674510 0
+ 2.087070 -2.135607 0
+ F4 16755200 0.000000 4 0
+ -2.232680 -2.815118 0
+ -1.553169 -2.645240 0
+ -1.067803 -1.504632 0
+ -1.820120 -1.698778 0
+ L3 16755200 0.000000 0.340258 3.742842 0 0.680517 3.232454 0
+ L3 16755200 0.000000 -2.041550 2.722067 0 -1.361033 2.722067 0
+ L3 16755200 0.000000 -3.062325 -2.381808 0 -2.551937 -1.701292 0
+ L3 16755200 0.000000 -1.871421 -3.742842 0 -1.361033 -3.062325 0
+ L3 16755200 0.000000 4.253229 2.211679 0 3.402583 1.701292 0
+ END$SEGS
+STRUCTURE 173 3 0 0 0 A 2 505.000000 139.000000 0 0.000000 "Lg Fall 14"" Fall-14b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.234619 4.017274 0
+ -3.633905 6.288724 0
+ -2.282299 6.870665 0
+ -0.761741 4.993434 0
+ 0.984083 6.626625 0
+ 3.086582 5.631693 0
+ 2.598502 -5.537831 0
+ 0.608637 -6.589081 0
+ -0.217344 -5.312564 0
+ -1.888080 -5.331336 0
+ -2.301071 -6.626625 0
+ -4.872877 -5.800644 0
+ -4.553748 -4.280087 0
+ -6.675019 -4.129908 0
+ -7.763813 -1.933548 0
+ -6.562385 -0.694575 0
+ -8.139259 0.000000 0
+ -7.726268 1.576874 0
+ -6.055533 2.177588 0
+ -7.256961 3.153748 0
+ -6.280801 4.918345 0
+ F4 6815744 0.000000 28 0
+ -5.856961 3.153748 0
+ -4.880801 4.918345 0
+ -2.834619 4.017274 0
+ -2.233905 6.288724 0
+ -0.882299 6.870665 0
+ 0.638259 4.993434 0
+ 2.384083 6.626625 0
+ 4.486582 5.631693 0
+ 3.698145 3.547967 0
+ 6.213635 2.853391 0
+ 6.589081 0.488080 0
+ 5.275019 -0.732120 0
+ 6.513991 -2.496717 0
+ 5.575376 -4.073591 0
+ 4.054819 -3.510422 0
+ 3.998502 -5.537831 0
+ 2.008637 -6.589081 0
+ 1.182656 -5.312564 0
+ -0.488080 -5.331336 0
+ -0.901071 -6.626625 0
+ -3.472877 -5.800644 0
+ -3.153748 -4.280087 0
+ -5.275019 -4.129908 0
+ -6.363813 -1.933548 0
+ -5.162385 -0.694575 0
+ -6.739259 0.000000 0
+ -6.326268 1.576874 0
+ -4.655533 2.177588 0
+ F4 12410368 0.000000 26 0
+ 0.938615 4.392720 0
+ 2.252677 5.706782 0
+ 3.510422 4.937117 0
+ 2.947253 2.740757 0
+ 5.462742 2.046182 0
+ 5.631693 0.957388 0
+ 4.054819 -0.131406 0
+ 5.425198 -2.196360 0
+ 4.824484 -2.909708 0
+ 3.322699 -2.872163 0
+ 3.247610 -4.599216 0
+ 1.952320 -5.312564 0
+ 0.882299 -4.054819 0
+ -0.732120 -4.280087 0
+ -1.107566 -5.143613 0
+ -2.477945 -4.786939 0
+ -2.496717 -3.285154 0
+ -3.641828 -3.247610 0
+ -4.392720 -1.745825 0
+ -3.059886 -0.488080 0
+ -4.317631 0.168951 0
+ -4.111136 1.070022 0
+ -2.102499 1.445468 0
+ -2.872163 2.815846 0
+ -1.614419 3.792007 0
+ -1.107566 4.899573 0
+ L3 12410368 0.000000 -1.190904 5.784392 0 -0.510387 5.274004 0
+ L3 12410368 0.000000 -4.763617 3.232454 0 -4.253229 2.722067 0
+ L3 12410368 0.000000 -3.572712 2.892196 0 -2.892196 2.381808 0
+ L3 12410368 0.000000 -5.784392 1.361033 0 -4.593487 1.361033 0
+ L3 12410368 0.000000 -3.912971 -0.510387 0 -4.763617 -0.340258 0
+ L3 12410368 0.000000 -5.274004 -2.551937 0 -4.423358 -2.722067 0
+ L3 12410368 0.000000 -2.551937 -5.103875 0 -2.892196 -5.614262 0
+ L3 12410368 0.000000 -0.170129 -4.593487 0 0.000000 -5.103875 0
+ L3 12410368 0.000000 2.211679 -5.444133 0 2.041550 -6.124650 0
+ L3 12410368 0.000000 5.103875 -3.232454 0 5.444133 -3.742842 0
+ L3 12410368 0.000000 -4.763617 4.253229 0 -4.423358 3.572712 0
+ L3 14915328 0.000000 -5.444133 3.232454 0 -4.933746 3.572712 0
+ L3 16755200 0.000000 5.954521 0.510387 0 5.274004 0.340258 0
+ L3 16755200 0.000000 -1.701292 5.444133 0 -1.871421 4.593487 0
+ L3 16755200 0.000000 -3.912971 3.572712 0 -2.722067 3.572712 0
+ L3 16755200 0.000000 -3.232454 1.871421 0 -4.253229 1.701292 0
+ L3 16755200 0.000000 -5.784392 0.340258 0 -4.763617 0.850646 0
+ L3 16755200 0.000000 -4.593487 -1.190904 0 -5.784392 -1.871421 0
+ L3 16755200 0.000000 -4.083100 -3.912971 0 -3.742842 -3.402583 0
+ L3 16755200 0.000000 -1.531162 -5.444133 0 -1.190904 -5.954521 0
+ L3 16755200 0.000000 0.850646 -4.593487 0 0.340258 -4.933746 0
+ L3 16755200 0.000000 3.232454 -5.103875 0 3.742842 -5.274004 0
+ L3 16755200 0.000000 5.954521 -2.381808 0 5.444133 -2.551937 0
+ F4 6815744 0.000000 5 0
+ -1.019267 3.227679 0
+ -0.922194 2.669509 0
+ 0.121341 2.208412 0
+ 0.412560 2.887923 0
+ -0.121341 3.397556 0
+ F4 6815744 0.000000 4 0
+ 3.324752 -0.121341 0
+ 2.062802 -0.412560 0
+ 1.795851 0.218414 0
+ 3.518898 0.315487 0
+ F4 6815744 0.000000 4 0
+ 0.800853 -3.227679 0
+ 0.169878 -2.742313 0
+ 0.339756 -1.723046 0
+ 0.728048 -1.868656 0
+ F4 6815744 0.000000 5 0
+ -2.548167 -0.291219 0
+ -2.208412 -0.048537 0
+ -1.043535 0.242683 0
+ -0.412560 -0.412560 0
+ -1.868656 -0.630975 0
+ L3 6815744 0.000000 2.381808 3.232454 0 1.531162 2.892196 0
+ L3 6815744 0.000000 1.531162 4.423358 0 1.190904 3.742842 0
+ L3 6815744 0.000000 -0.680517 4.253229 0 -0.340258 3.742842 0
+ L3 6815744 0.000000 -1.531162 1.871421 0 -0.680517 2.211679 0
+ L3 6815744 0.000000 -2.041550 1.020775 0 -1.361033 0.510387 0
+ L3 6815744 0.000000 -3.912971 0.340258 0 -3.062325 0.000000 0
+ L3 6815744 0.000000 -2.722067 -0.850646 0 -3.402583 -1.531162 0
+ L3 6815744 0.000000 -0.680517 -3.062325 0 -0.850646 -4.083100 0
+ L3 6815744 0.000000 -0.510387 -1.871421 0 -0.340258 -2.551937 0
+ L3 6815744 0.000000 1.190904 -3.062325 0 1.531162 -4.083100 0
+ L3 6815744 0.000000 2.041550 -2.892196 0 3.062325 -3.402583 0
+ L3 6815744 0.000000 4.593487 -1.190904 0 3.742842 -1.361033 0
+ L3 6815744 0.000000 4.593487 -2.722067 0 3.742842 -2.381808 0
+ L3 6815744 0.000000 4.933746 -2.041550 0 4.083100 -1.871421 0
+ L3 6815744 0.000000 2.041550 -4.933746 0 1.871421 -4.253229 0
+ L3 6815744 0.000000 3.062325 -4.423358 0 2.551937 -3.912971 0
+ L3 6815744 0.000000 5.103875 0.850646 0 4.083100 1.020775 0
+ L3 6815744 0.000000 5.103875 1.701292 0 4.253229 1.531162 0
+ L3 6815744 0.000000 -1.701292 -4.763617 0 -1.531162 -4.083100 0
+ L3 6815744 0.000000 -3.742842 -2.381808 0 -3.232454 -2.041550 0
+ L3 6815744 0.000000 2.381808 5.444133 0 2.041550 4.593487 0
+ L3 6815744 0.000000 3.062325 4.933746 0 2.551937 4.423358 0
+ L3 11184640 0.000000 2.381808 -4.593487 0 2.041550 -3.572712 0
+ L3 14915328 0.000000 2.722067 4.083100 0 2.211679 3.742842 0
+ L3 14915328 0.000000 -3.062325 0.850646 0 -2.381808 0.510387 0
+ F4 16755200 0.000000 4 0
+ 2.620972 2.693777 0
+ 1.553169 2.378289 0
+ 1.431827 1.577437 0
+ 2.135607 1.868656 0
+ F4 16755200 0.000000 3 0
+ 2.960728 -2.426826 0
+ 2.620972 -1.674510 0
+ 2.087070 -2.135607 0
+ F4 16755200 0.000000 4 0
+ -2.232680 -2.815118 0
+ -1.553169 -2.645240 0
+ -1.067803 -1.504632 0
+ -1.820120 -1.698778 0
+ L3 16755200 0.000000 0.340258 3.742842 0 0.680517 3.232454 0
+ L3 16755200 0.000000 -2.041550 2.722067 0 -1.361033 2.722067 0
+ L3 16755200 0.000000 -3.062325 -2.381808 0 -2.551937 -1.701292 0
+ L3 16755200 0.000000 -1.871421 -3.742842 0 -1.361033 -3.062325 0
+ L3 16755200 0.000000 4.253229 2.211679 0 3.402583 1.701292 0
+ END$SEGS
+STRUCTURE 174 3 0 0 0 A 2 533.500000 145.500000 0 0.000000 "Lg Fall 14"" Fall-14b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.234619 4.017274 0
+ -3.633905 6.288724 0
+ -2.282299 6.870665 0
+ -0.761741 4.993434 0
+ 0.984083 6.626625 0
+ 3.086582 5.631693 0
+ 2.598502 -5.537831 0
+ 0.608637 -6.589081 0
+ -0.217344 -5.312564 0
+ -1.888080 -5.331336 0
+ -2.301071 -6.626625 0
+ -4.872877 -5.800644 0
+ -4.553748 -4.280087 0
+ -6.675019 -4.129908 0
+ -7.763813 -1.933548 0
+ -6.562385 -0.694575 0
+ -8.139259 0.000000 0
+ -7.726268 1.576874 0
+ -6.055533 2.177588 0
+ -7.256961 3.153748 0
+ -6.280801 4.918345 0
+ F4 6815744 0.000000 28 0
+ -5.856961 3.153748 0
+ -4.880801 4.918345 0
+ -2.834619 4.017274 0
+ -2.233905 6.288724 0
+ -0.882299 6.870665 0
+ 0.638259 4.993434 0
+ 2.384083 6.626625 0
+ 4.486582 5.631693 0
+ 3.698145 3.547967 0
+ 6.213635 2.853391 0
+ 6.589081 0.488080 0
+ 5.275019 -0.732120 0
+ 6.513991 -2.496717 0
+ 5.575376 -4.073591 0
+ 4.054819 -3.510422 0
+ 3.998502 -5.537831 0
+ 2.008637 -6.589081 0
+ 1.182656 -5.312564 0
+ -0.488080 -5.331336 0
+ -0.901071 -6.626625 0
+ -3.472877 -5.800644 0
+ -3.153748 -4.280087 0
+ -5.275019 -4.129908 0
+ -6.363813 -1.933548 0
+ -5.162385 -0.694575 0
+ -6.739259 0.000000 0
+ -6.326268 1.576874 0
+ -4.655533 2.177588 0
+ F4 12410368 0.000000 26 0
+ 0.938615 4.392720 0
+ 2.252677 5.706782 0
+ 3.510422 4.937117 0
+ 2.947253 2.740757 0
+ 5.462742 2.046182 0
+ 5.631693 0.957388 0
+ 4.054819 -0.131406 0
+ 5.425198 -2.196360 0
+ 4.824484 -2.909708 0
+ 3.322699 -2.872163 0
+ 3.247610 -4.599216 0
+ 1.952320 -5.312564 0
+ 0.882299 -4.054819 0
+ -0.732120 -4.280087 0
+ -1.107566 -5.143613 0
+ -2.477945 -4.786939 0
+ -2.496717 -3.285154 0
+ -3.641828 -3.247610 0
+ -4.392720 -1.745825 0
+ -3.059886 -0.488080 0
+ -4.317631 0.168951 0
+ -4.111136 1.070022 0
+ -2.102499 1.445468 0
+ -2.872163 2.815846 0
+ -1.614419 3.792007 0
+ -1.107566 4.899573 0
+ L3 12410368 0.000000 -1.190904 5.784392 0 -0.510387 5.274004 0
+ L3 12410368 0.000000 -4.763617 3.232454 0 -4.253229 2.722067 0
+ L3 12410368 0.000000 -3.572712 2.892196 0 -2.892196 2.381808 0
+ L3 12410368 0.000000 -5.784392 1.361033 0 -4.593487 1.361033 0
+ L3 12410368 0.000000 -3.912971 -0.510387 0 -4.763617 -0.340258 0
+ L3 12410368 0.000000 -5.274004 -2.551937 0 -4.423358 -2.722067 0
+ L3 12410368 0.000000 -2.551937 -5.103875 0 -2.892196 -5.614262 0
+ L3 12410368 0.000000 -0.170129 -4.593487 0 0.000000 -5.103875 0
+ L3 12410368 0.000000 2.211679 -5.444133 0 2.041550 -6.124650 0
+ L3 12410368 0.000000 5.103875 -3.232454 0 5.444133 -3.742842 0
+ L3 12410368 0.000000 -4.763617 4.253229 0 -4.423358 3.572712 0
+ L3 14915328 0.000000 -5.444133 3.232454 0 -4.933746 3.572712 0
+ L3 16755200 0.000000 5.954521 0.510387 0 5.274004 0.340258 0
+ L3 16755200 0.000000 -1.701292 5.444133 0 -1.871421 4.593487 0
+ L3 16755200 0.000000 -3.912971 3.572712 0 -2.722067 3.572712 0
+ L3 16755200 0.000000 -3.232454 1.871421 0 -4.253229 1.701292 0
+ L3 16755200 0.000000 -5.784392 0.340258 0 -4.763617 0.850646 0
+ L3 16755200 0.000000 -4.593487 -1.190904 0 -5.784392 -1.871421 0
+ L3 16755200 0.000000 -4.083100 -3.912971 0 -3.742842 -3.402583 0
+ L3 16755200 0.000000 -1.531162 -5.444133 0 -1.190904 -5.954521 0
+ L3 16755200 0.000000 0.850646 -4.593487 0 0.340258 -4.933746 0
+ L3 16755200 0.000000 3.232454 -5.103875 0 3.742842 -5.274004 0
+ L3 16755200 0.000000 5.954521 -2.381808 0 5.444133 -2.551937 0
+ F4 6815744 0.000000 5 0
+ -1.019267 3.227679 0
+ -0.922194 2.669509 0
+ 0.121341 2.208412 0
+ 0.412560 2.887923 0
+ -0.121341 3.397556 0
+ F4 6815744 0.000000 4 0
+ 3.324752 -0.121341 0
+ 2.062802 -0.412560 0
+ 1.795851 0.218414 0
+ 3.518898 0.315487 0
+ F4 6815744 0.000000 4 0
+ 0.800853 -3.227679 0
+ 0.169878 -2.742313 0
+ 0.339756 -1.723046 0
+ 0.728048 -1.868656 0
+ F4 6815744 0.000000 5 0
+ -2.548167 -0.291219 0
+ -2.208412 -0.048537 0
+ -1.043535 0.242683 0
+ -0.412560 -0.412560 0
+ -1.868656 -0.630975 0
+ L3 6815744 0.000000 2.381808 3.232454 0 1.531162 2.892196 0
+ L3 6815744 0.000000 1.531162 4.423358 0 1.190904 3.742842 0
+ L3 6815744 0.000000 -0.680517 4.253229 0 -0.340258 3.742842 0
+ L3 6815744 0.000000 -1.531162 1.871421 0 -0.680517 2.211679 0
+ L3 6815744 0.000000 -2.041550 1.020775 0 -1.361033 0.510387 0
+ L3 6815744 0.000000 -3.912971 0.340258 0 -3.062325 0.000000 0
+ L3 6815744 0.000000 -2.722067 -0.850646 0 -3.402583 -1.531162 0
+ L3 6815744 0.000000 -0.680517 -3.062325 0 -0.850646 -4.083100 0
+ L3 6815744 0.000000 -0.510387 -1.871421 0 -0.340258 -2.551937 0
+ L3 6815744 0.000000 1.190904 -3.062325 0 1.531162 -4.083100 0
+ L3 6815744 0.000000 2.041550 -2.892196 0 3.062325 -3.402583 0
+ L3 6815744 0.000000 4.593487 -1.190904 0 3.742842 -1.361033 0
+ L3 6815744 0.000000 4.593487 -2.722067 0 3.742842 -2.381808 0
+ L3 6815744 0.000000 4.933746 -2.041550 0 4.083100 -1.871421 0
+ L3 6815744 0.000000 2.041550 -4.933746 0 1.871421 -4.253229 0
+ L3 6815744 0.000000 3.062325 -4.423358 0 2.551937 -3.912971 0
+ L3 6815744 0.000000 5.103875 0.850646 0 4.083100 1.020775 0
+ L3 6815744 0.000000 5.103875 1.701292 0 4.253229 1.531162 0
+ L3 6815744 0.000000 -1.701292 -4.763617 0 -1.531162 -4.083100 0
+ L3 6815744 0.000000 -3.742842 -2.381808 0 -3.232454 -2.041550 0
+ L3 6815744 0.000000 2.381808 5.444133 0 2.041550 4.593487 0
+ L3 6815744 0.000000 3.062325 4.933746 0 2.551937 4.423358 0
+ L3 11184640 0.000000 2.381808 -4.593487 0 2.041550 -3.572712 0
+ L3 14915328 0.000000 2.722067 4.083100 0 2.211679 3.742842 0
+ L3 14915328 0.000000 -3.062325 0.850646 0 -2.381808 0.510387 0
+ F4 16755200 0.000000 4 0
+ 2.620972 2.693777 0
+ 1.553169 2.378289 0
+ 1.431827 1.577437 0
+ 2.135607 1.868656 0
+ F4 16755200 0.000000 3 0
+ 2.960728 -2.426826 0
+ 2.620972 -1.674510 0
+ 2.087070 -2.135607 0
+ F4 16755200 0.000000 4 0
+ -2.232680 -2.815118 0
+ -1.553169 -2.645240 0
+ -1.067803 -1.504632 0
+ -1.820120 -1.698778 0
+ L3 16755200 0.000000 0.340258 3.742842 0 0.680517 3.232454 0
+ L3 16755200 0.000000 -2.041550 2.722067 0 -1.361033 2.722067 0
+ L3 16755200 0.000000 -3.062325 -2.381808 0 -2.551937 -1.701292 0
+ L3 16755200 0.000000 -1.871421 -3.742842 0 -1.361033 -3.062325 0
+ L3 16755200 0.000000 4.253229 2.211679 0 3.402583 1.701292 0
+ END$SEGS
+STRUCTURE 175 3 0 0 0 A 2 479.500000 171.500000 0 0.000000 "Lg Fall 16"" Fall-16a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.839564 -4.591171 0
+ -4.153034 -7.187113 0
+ -2.608341 -7.852189 0
+ -0.870562 -5.706782 0
+ 1.124667 -7.573286 0
+ 3.527522 -6.436220 0
+ 2.969717 6.328950 0
+ 0.695585 7.530378 0
+ -0.248394 6.071501 0
+ -2.157806 6.092955 0
+ -2.629795 7.573286 0
+ -5.569003 6.629307 0
+ -5.204283 4.891528 0
+ -7.628593 4.719895 0
+ -8.872929 2.209769 0
+ -7.499869 0.793801 0
+ -9.302011 0.000000 0
+ -8.830021 -1.802142 0
+ -6.920609 -2.488672 0
+ -8.293669 -3.604283 0
+ -7.178058 -5.620966 0
+ F4 6842368 0.000000 28 0
+ -6.693669 -3.604283 0
+ -5.578058 -5.620966 0
+ -3.239564 -4.591171 0
+ -2.553034 -7.187113 0
+ -1.008341 -7.852189 0
+ 0.729438 -5.706782 0
+ 2.724667 -7.573286 0
+ 5.127522 -6.436220 0
+ 4.226451 -4.054819 0
+ 7.101297 -3.261018 0
+ 7.530378 -0.557806 0
+ 6.028593 0.836709 0
+ 7.444562 2.853391 0
+ 6.371858 4.655533 0
+ 4.634079 4.011911 0
+ 4.569717 6.328950 0
+ 2.295585 7.530378 0
+ 1.351606 6.071501 0
+ -0.557806 6.092955 0
+ -1.029795 7.573286 0
+ -3.969003 6.629307 0
+ -3.604283 4.891528 0
+ -6.028593 4.719895 0
+ -7.272929 2.209769 0
+ -5.899869 0.793801 0
+ -7.702011 0.000000 0
+ -7.230021 -1.802142 0
+ -5.320609 -2.488672 0
+ F4 12434688 0.000000 26 0
+ 1.072703 -5.020252 0
+ 2.574488 -6.522037 0
+ 4.011911 -5.642420 0
+ 3.368289 -3.132294 0
+ 6.243134 -2.338493 0
+ 6.436220 -1.094157 0
+ 4.634079 0.150178 0
+ 6.200226 2.510126 0
+ 5.513696 3.325381 0
+ 3.797370 3.282472 0
+ 3.711554 5.256247 0
+ 2.231223 6.071501 0
+ 1.008341 4.634079 0
+ -0.836709 4.891528 0
+ -1.265790 5.878415 0
+ -2.831937 5.470787 0
+ -2.853391 3.754462 0
+ -4.162089 3.711554 0
+ -5.020252 1.995228 0
+ -3.497013 0.557806 0
+ -4.934436 -0.193087 0
+ -4.698441 -1.222882 0
+ -2.402856 -1.651963 0
+ -3.282472 -3.218110 0
+ -1.845050 -4.333722 0
+ -1.265790 -5.599512 0
+ L3 12434688 0.000000 -1.944333 -6.221867 0 -2.138767 -5.249700 0
+ L3 12434688 0.000000 -4.083100 -3.305367 0 -3.305367 -2.722067 0
+ L3 12434688 0.000000 -6.610733 -0.388867 0 -5.444133 -0.972167 0
+ L3 12434688 0.000000 -4.471967 0.583300 0 -5.444133 0.388867 0
+ L3 12434688 0.000000 -6.027433 2.916500 0 -5.055267 3.110933 0
+ L3 12434688 0.000000 -2.916500 5.833000 0 -3.305367 6.416300 0
+ L3 12434688 0.000000 0.972167 5.249700 0 0.388867 5.638567 0
+ L3 12434688 0.000000 3.694233 5.833000 0 4.277533 6.027433 0
+ L3 12434688 0.000000 6.805167 2.722067 0 6.221867 2.916500 0
+ L3 12434688 0.000000 -5.444133 -4.860833 0 -5.055267 -4.083100 0
+ L3 12434688 0.000000 -6.221867 -3.694233 0 -5.638567 -4.083100 0
+ L3 16755200 0.000000 -1.361033 -6.610733 0 -0.583300 -6.027433 0
+ L3 16755200 0.000000 -4.471967 -4.083100 0 -3.110933 -4.083100 0
+ L3 16755200 0.000000 -5.444133 -3.694233 0 -4.860833 -3.110933 0
+ L3 16755200 0.000000 -3.694233 -2.138767 0 -4.860833 -1.944333 0
+ L3 16755200 0.000000 -6.610733 -1.555467 0 -5.249700 -1.555467 0
+ L3 16755200 0.000000 -5.249700 1.361033 0 -6.610733 2.138767 0
+ L3 16755200 0.000000 -4.666400 4.471967 0 -4.277533 3.888667 0
+ L3 16755200 0.000000 -1.749900 6.221867 0 -1.361033 6.805167 0
+ L3 16755200 0.000000 -0.194433 5.249700 0 0.000000 5.833000 0
+ L3 16755200 0.000000 2.527633 6.221867 0 2.333200 6.999600 0
+ L3 16755200 0.000000 5.833000 3.694233 0 6.221867 4.277533 0
+ L3 16755200 0.000000 6.805167 -0.583300 0 6.027433 -0.388867 0
+ F4 6842368 0.000000 4 0
+ 2.995397 -3.078602 0
+ 1.775050 -2.718045 0
+ 1.636374 -1.802785 0
+ 2.440694 -2.135607 0
+ F4 6842368 0.000000 4 0
+ 3.799716 0.138676 0
+ 2.357488 0.471498 0
+ 2.052401 -0.249616 0
+ 4.021597 -0.360557 0
+ F4 6842368 0.000000 4 0
+ 0.915260 3.688776 0
+ 0.194146 3.134072 0
+ 0.388292 1.969196 0
+ 0.832055 2.135607 0
+ F4 6842368 0.000000 5 0
+ -2.912191 0.332822 0
+ -2.523899 0.055470 0
+ -1.192612 -0.277352 0
+ -0.471498 0.471498 0
+ -2.135607 0.721114 0
+ L3 6842368 0.000000 0.388867 -4.277533 0 0.777733 -3.694233 0
+ L3 6842368 0.000000 2.722067 -3.694233 0 1.749900 -3.305367 0
+ L3 6842368 0.000000 3.110933 -4.666400 0 2.527633 -4.277533 0
+ L3 6842368 0.000000 1.749900 -5.055267 0 1.361033 -4.277533 0
+ L3 6842368 0.000000 -0.777733 -4.860833 0 -0.388867 -4.277533 0
+ L3 6842368 0.000000 -2.333200 -3.110933 0 -1.555467 -3.110933 0
+ L3 6842368 0.000000 -1.749900 -2.138767 0 -0.777733 -2.527633 0
+ L3 6842368 0.000000 -2.333200 -1.166600 0 -1.555467 -0.583300 0
+ L3 6842368 0.000000 -3.499800 -0.972167 0 -2.722067 -0.583300 0
+ L3 6842368 0.000000 -4.471967 -0.388867 0 -3.499800 0.000000 0
+ L3 6842368 0.000000 -3.110933 0.972167 0 -3.888667 1.749900 0
+ L3 6842368 0.000000 -3.499800 2.722067 0 -2.916500 1.944333 0
+ L3 6842368 0.000000 -2.138767 4.277533 0 -1.555467 3.499800 0
+ L3 6842368 0.000000 -0.777733 3.499800 0 -0.972167 4.666400 0
+ L3 6842368 0.000000 -0.583300 2.138767 0 -0.388867 2.916500 0
+ L3 6842368 0.000000 1.361033 3.499800 0 1.749900 4.666400 0
+ L3 6842368 0.000000 2.333200 3.305367 0 3.499800 3.888667 0
+ L3 6842368 0.000000 5.249700 1.361033 0 4.277533 1.555467 0
+ L3 6842368 0.000000 5.249700 3.110933 0 4.277533 2.722067 0
+ L3 6842368 0.000000 5.638567 2.333200 0 4.666400 2.138767 0
+ L3 6842368 0.000000 2.333200 5.638567 0 2.138767 4.860833 0
+ L3 6842368 0.000000 3.499800 5.055267 0 2.916500 4.471967 0
+ L3 6842368 0.000000 2.722067 5.249700 0 2.333200 4.083100 0
+ L3 6842368 0.000000 5.833000 -0.972167 0 4.666400 -1.166600 0
+ L3 6842368 0.000000 4.860833 -2.527633 0 3.888667 -1.944333 0
+ L3 6842368 0.000000 5.833000 -1.944333 0 4.860833 -1.749900 0
+ L3 6842368 0.000000 -1.944333 5.444133 0 -1.749900 4.666400 0
+ L3 6842368 0.000000 -4.277533 2.722067 0 -3.694233 2.333200 0
+ L3 6842368 0.000000 2.722067 -6.221867 0 2.333200 -5.249700 0
+ L3 6842368 0.000000 3.499800 -5.638567 0 2.916500 -5.055267 0
+ F4 16755200 0.000000 5 0
+ -1.164876 -3.688776 0
+ -1.053936 -3.050867 0
+ 0.138676 -2.523899 0
+ 0.471498 -3.300483 0
+ -0.138676 -3.882922 0
+ F4 16755200 0.000000 3 0
+ 3.383689 2.773515 0
+ 2.995397 1.913726 0
+ 2.385223 2.440694 0
+ F4 16755200 0.000000 4 0
+ -2.551634 3.217278 0
+ -1.775050 3.023132 0
+ -1.220347 1.719580 0
+ -2.080137 1.941461 0
+ END$SEGS
+STRUCTURE 176 3 0 0 0 A 2 457.000000 181.000000 0 0.000000 "Lg Fall 16"" Fall-16a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.839564 -4.591171 0
+ -4.153034 -7.187113 0
+ -2.608341 -7.852189 0
+ -0.870562 -5.706782 0
+ 1.124667 -7.573286 0
+ 3.527522 -6.436220 0
+ 2.969717 6.328950 0
+ 0.695585 7.530378 0
+ -0.248394 6.071501 0
+ -2.157806 6.092955 0
+ -2.629795 7.573286 0
+ -5.569003 6.629307 0
+ -5.204283 4.891528 0
+ -7.628593 4.719895 0
+ -8.872929 2.209769 0
+ -7.499869 0.793801 0
+ -9.302011 0.000000 0
+ -8.830021 -1.802142 0
+ -6.920609 -2.488672 0
+ -8.293669 -3.604283 0
+ -7.178058 -5.620966 0
+ F4 6842368 0.000000 28 0
+ -6.693669 -3.604283 0
+ -5.578058 -5.620966 0
+ -3.239564 -4.591171 0
+ -2.553034 -7.187113 0
+ -1.008341 -7.852189 0
+ 0.729438 -5.706782 0
+ 2.724667 -7.573286 0
+ 5.127522 -6.436220 0
+ 4.226451 -4.054819 0
+ 7.101297 -3.261018 0
+ 7.530378 -0.557806 0
+ 6.028593 0.836709 0
+ 7.444562 2.853391 0
+ 6.371858 4.655533 0
+ 4.634079 4.011911 0
+ 4.569717 6.328950 0
+ 2.295585 7.530378 0
+ 1.351606 6.071501 0
+ -0.557806 6.092955 0
+ -1.029795 7.573286 0
+ -3.969003 6.629307 0
+ -3.604283 4.891528 0
+ -6.028593 4.719895 0
+ -7.272929 2.209769 0
+ -5.899869 0.793801 0
+ -7.702011 0.000000 0
+ -7.230021 -1.802142 0
+ -5.320609 -2.488672 0
+ F4 12434688 0.000000 26 0
+ 1.072703 -5.020252 0
+ 2.574488 -6.522037 0
+ 4.011911 -5.642420 0
+ 3.368289 -3.132294 0
+ 6.243134 -2.338493 0
+ 6.436220 -1.094157 0
+ 4.634079 0.150178 0
+ 6.200226 2.510126 0
+ 5.513696 3.325381 0
+ 3.797370 3.282472 0
+ 3.711554 5.256247 0
+ 2.231223 6.071501 0
+ 1.008341 4.634079 0
+ -0.836709 4.891528 0
+ -1.265790 5.878415 0
+ -2.831937 5.470787 0
+ -2.853391 3.754462 0
+ -4.162089 3.711554 0
+ -5.020252 1.995228 0
+ -3.497013 0.557806 0
+ -4.934436 -0.193087 0
+ -4.698441 -1.222882 0
+ -2.402856 -1.651963 0
+ -3.282472 -3.218110 0
+ -1.845050 -4.333722 0
+ -1.265790 -5.599512 0
+ L3 12434688 0.000000 -1.944333 -6.221867 0 -2.138767 -5.249700 0
+ L3 12434688 0.000000 -4.083100 -3.305367 0 -3.305367 -2.722067 0
+ L3 12434688 0.000000 -6.610733 -0.388867 0 -5.444133 -0.972167 0
+ L3 12434688 0.000000 -4.471967 0.583300 0 -5.444133 0.388867 0
+ L3 12434688 0.000000 -6.027433 2.916500 0 -5.055267 3.110933 0
+ L3 12434688 0.000000 -2.916500 5.833000 0 -3.305367 6.416300 0
+ L3 12434688 0.000000 0.972167 5.249700 0 0.388867 5.638567 0
+ L3 12434688 0.000000 3.694233 5.833000 0 4.277533 6.027433 0
+ L3 12434688 0.000000 6.805167 2.722067 0 6.221867 2.916500 0
+ L3 12434688 0.000000 -5.444133 -4.860833 0 -5.055267 -4.083100 0
+ L3 12434688 0.000000 -6.221867 -3.694233 0 -5.638567 -4.083100 0
+ L3 16755200 0.000000 -1.361033 -6.610733 0 -0.583300 -6.027433 0
+ L3 16755200 0.000000 -4.471967 -4.083100 0 -3.110933 -4.083100 0
+ L3 16755200 0.000000 -5.444133 -3.694233 0 -4.860833 -3.110933 0
+ L3 16755200 0.000000 -3.694233 -2.138767 0 -4.860833 -1.944333 0
+ L3 16755200 0.000000 -6.610733 -1.555467 0 -5.249700 -1.555467 0
+ L3 16755200 0.000000 -5.249700 1.361033 0 -6.610733 2.138767 0
+ L3 16755200 0.000000 -4.666400 4.471967 0 -4.277533 3.888667 0
+ L3 16755200 0.000000 -1.749900 6.221867 0 -1.361033 6.805167 0
+ L3 16755200 0.000000 -0.194433 5.249700 0 0.000000 5.833000 0
+ L3 16755200 0.000000 2.527633 6.221867 0 2.333200 6.999600 0
+ L3 16755200 0.000000 5.833000 3.694233 0 6.221867 4.277533 0
+ L3 16755200 0.000000 6.805167 -0.583300 0 6.027433 -0.388867 0
+ F4 6842368 0.000000 4 0
+ 2.995397 -3.078602 0
+ 1.775050 -2.718045 0
+ 1.636374 -1.802785 0
+ 2.440694 -2.135607 0
+ F4 6842368 0.000000 4 0
+ 3.799716 0.138676 0
+ 2.357488 0.471498 0
+ 2.052401 -0.249616 0
+ 4.021597 -0.360557 0
+ F4 6842368 0.000000 4 0
+ 0.915260 3.688776 0
+ 0.194146 3.134072 0
+ 0.388292 1.969196 0
+ 0.832055 2.135607 0
+ F4 6842368 0.000000 5 0
+ -2.912191 0.332822 0
+ -2.523899 0.055470 0
+ -1.192612 -0.277352 0
+ -0.471498 0.471498 0
+ -2.135607 0.721114 0
+ L3 6842368 0.000000 0.388867 -4.277533 0 0.777733 -3.694233 0
+ L3 6842368 0.000000 2.722067 -3.694233 0 1.749900 -3.305367 0
+ L3 6842368 0.000000 3.110933 -4.666400 0 2.527633 -4.277533 0
+ L3 6842368 0.000000 1.749900 -5.055267 0 1.361033 -4.277533 0
+ L3 6842368 0.000000 -0.777733 -4.860833 0 -0.388867 -4.277533 0
+ L3 6842368 0.000000 -2.333200 -3.110933 0 -1.555467 -3.110933 0
+ L3 6842368 0.000000 -1.749900 -2.138767 0 -0.777733 -2.527633 0
+ L3 6842368 0.000000 -2.333200 -1.166600 0 -1.555467 -0.583300 0
+ L3 6842368 0.000000 -3.499800 -0.972167 0 -2.722067 -0.583300 0
+ L3 6842368 0.000000 -4.471967 -0.388867 0 -3.499800 0.000000 0
+ L3 6842368 0.000000 -3.110933 0.972167 0 -3.888667 1.749900 0
+ L3 6842368 0.000000 -3.499800 2.722067 0 -2.916500 1.944333 0
+ L3 6842368 0.000000 -2.138767 4.277533 0 -1.555467 3.499800 0
+ L3 6842368 0.000000 -0.777733 3.499800 0 -0.972167 4.666400 0
+ L3 6842368 0.000000 -0.583300 2.138767 0 -0.388867 2.916500 0
+ L3 6842368 0.000000 1.361033 3.499800 0 1.749900 4.666400 0
+ L3 6842368 0.000000 2.333200 3.305367 0 3.499800 3.888667 0
+ L3 6842368 0.000000 5.249700 1.361033 0 4.277533 1.555467 0
+ L3 6842368 0.000000 5.249700 3.110933 0 4.277533 2.722067 0
+ L3 6842368 0.000000 5.638567 2.333200 0 4.666400 2.138767 0
+ L3 6842368 0.000000 2.333200 5.638567 0 2.138767 4.860833 0
+ L3 6842368 0.000000 3.499800 5.055267 0 2.916500 4.471967 0
+ L3 6842368 0.000000 2.722067 5.249700 0 2.333200 4.083100 0
+ L3 6842368 0.000000 5.833000 -0.972167 0 4.666400 -1.166600 0
+ L3 6842368 0.000000 4.860833 -2.527633 0 3.888667 -1.944333 0
+ L3 6842368 0.000000 5.833000 -1.944333 0 4.860833 -1.749900 0
+ L3 6842368 0.000000 -1.944333 5.444133 0 -1.749900 4.666400 0
+ L3 6842368 0.000000 -4.277533 2.722067 0 -3.694233 2.333200 0
+ L3 6842368 0.000000 2.722067 -6.221867 0 2.333200 -5.249700 0
+ L3 6842368 0.000000 3.499800 -5.638567 0 2.916500 -5.055267 0
+ F4 16755200 0.000000 5 0
+ -1.164876 -3.688776 0
+ -1.053936 -3.050867 0
+ 0.138676 -2.523899 0
+ 0.471498 -3.300483 0
+ -0.138676 -3.882922 0
+ F4 16755200 0.000000 3 0
+ 3.383689 2.773515 0
+ 2.995397 1.913726 0
+ 2.385223 2.440694 0
+ F4 16755200 0.000000 4 0
+ -2.551634 3.217278 0
+ -1.775050 3.023132 0
+ -1.220347 1.719580 0
+ -2.080137 1.941461 0
+ END$SEGS
+STRUCTURE 177 3 0 0 0 A 2 504.000000 190.500000 0 0.000000 "Lg Fall 16"" Fall-16b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.839564 4.591171 0
+ -4.153034 7.187113 0
+ -2.608341 7.852189 0
+ -0.870562 5.706782 0
+ 1.124667 7.573286 0
+ 3.527522 6.436220 0
+ 2.969717 -6.328950 0
+ 0.695585 -7.530378 0
+ -0.248394 -6.071501 0
+ -2.157806 -6.092955 0
+ -2.629795 -7.573286 0
+ -5.569003 -6.629307 0
+ -5.204283 -4.891528 0
+ -7.628593 -4.719895 0
+ -8.872929 -2.209769 0
+ -7.499869 -0.793801 0
+ -9.302011 0.000000 0
+ -8.830021 1.802142 0
+ -6.920609 2.488672 0
+ -8.293669 3.604283 0
+ -7.178058 5.620966 0
+ F4 6815744 0.000000 28 0
+ -6.693669 3.604283 0
+ -5.578058 5.620966 0
+ -3.239564 4.591171 0
+ -2.553034 7.187113 0
+ -1.008341 7.852189 0
+ 0.729438 5.706782 0
+ 2.724667 7.573286 0
+ 5.127522 6.436220 0
+ 4.226451 4.054819 0
+ 7.101297 3.261018 0
+ 7.530378 0.557806 0
+ 6.028593 -0.836709 0
+ 7.444562 -2.853391 0
+ 6.371858 -4.655533 0
+ 4.634079 -4.011911 0
+ 4.569717 -6.328950 0
+ 2.295585 -7.530378 0
+ 1.351606 -6.071501 0
+ -0.557806 -6.092955 0
+ -1.029795 -7.573286 0
+ -3.969003 -6.629307 0
+ -3.604283 -4.891528 0
+ -6.028593 -4.719895 0
+ -7.272929 -2.209769 0
+ -5.899869 -0.793801 0
+ -7.702011 0.000000 0
+ -7.230021 1.802142 0
+ -5.320609 2.488672 0
+ F4 12410368 0.000000 26 0
+ 1.072703 5.020252 0
+ 2.574488 6.522037 0
+ 4.011911 5.642420 0
+ 3.368289 3.132294 0
+ 6.243134 2.338493 0
+ 6.436220 1.094157 0
+ 4.634079 -0.150178 0
+ 6.200226 -2.510126 0
+ 5.513696 -3.325381 0
+ 3.797370 -3.282472 0
+ 3.711554 -5.256247 0
+ 2.231223 -6.071501 0
+ 1.008341 -4.634079 0
+ -0.836709 -4.891528 0
+ -1.265790 -5.878415 0
+ -2.831937 -5.470787 0
+ -2.853391 -3.754462 0
+ -4.162089 -3.711554 0
+ -5.020252 -1.995228 0
+ -3.497013 -0.557806 0
+ -4.934436 0.193087 0
+ -4.698441 1.222882 0
+ -2.402856 1.651963 0
+ -3.282472 3.218110 0
+ -1.845050 4.333722 0
+ -1.265790 5.599512 0
+ L3 12410368 0.000000 -1.361033 6.610733 0 -0.583300 6.027433 0
+ L3 12410368 0.000000 -5.444133 3.694233 0 -4.860833 3.110933 0
+ L3 12410368 0.000000 -4.083100 3.305367 0 -3.305367 2.722067 0
+ L3 12410368 0.000000 -6.610733 1.555467 0 -5.249700 1.555467 0
+ L3 12410368 0.000000 -4.471967 -0.583300 0 -5.444133 -0.388867 0
+ L3 12410368 0.000000 -6.027433 -2.916500 0 -5.055267 -3.110933 0
+ L3 12410368 0.000000 -2.916500 -5.833000 0 -3.305367 -6.416300 0
+ L3 12410368 0.000000 -0.194433 -5.249700 0 0.000000 -5.833000 0
+ L3 12410368 0.000000 2.527633 -6.221867 0 2.333200 -6.999600 0
+ L3 12410368 0.000000 5.833000 -3.694233 0 6.221867 -4.277533 0
+ L3 12410368 0.000000 -5.444133 4.860833 0 -5.055267 4.083100 0
+ L3 14915328 0.000000 -6.221867 3.694233 0 -5.638567 4.083100 0
+ L3 16755200 0.000000 6.805167 0.583300 0 6.027433 0.388867 0
+ L3 16755200 0.000000 -1.944333 6.221867 0 -2.138767 5.249700 0
+ L3 16755200 0.000000 -4.471967 4.083100 0 -3.110933 4.083100 0
+ L3 16755200 0.000000 -3.694233 2.138767 0 -4.860833 1.944333 0
+ L3 16755200 0.000000 -6.610733 0.388867 0 -5.444133 0.972167 0
+ L3 16755200 0.000000 -5.249700 -1.361033 0 -6.610733 -2.138767 0
+ L3 16755200 0.000000 -4.666400 -4.471967 0 -4.277533 -3.888667 0
+ L3 16755200 0.000000 -1.749900 -6.221867 0 -1.361033 -6.805167 0
+ L3 16755200 0.000000 0.972167 -5.249700 0 0.388867 -5.638567 0
+ L3 16755200 0.000000 3.694233 -5.833000 0 4.277533 -6.027433 0
+ L3 16755200 0.000000 6.805167 -2.722067 0 6.221867 -2.916500 0
+ F4 6815744 0.000000 5 0
+ -1.164876 3.688776 0
+ -1.053936 3.050867 0
+ 0.138676 2.523899 0
+ 0.471498 3.300483 0
+ -0.138676 3.882922 0
+ F4 6815744 0.000000 4 0
+ 3.799716 -0.138676 0
+ 2.357488 -0.471498 0
+ 2.052401 0.249616 0
+ 4.021597 0.360557 0
+ F4 6815744 0.000000 4 0
+ 0.915260 -3.688776 0
+ 0.194146 -3.134072 0
+ 0.388292 -1.969196 0
+ 0.832055 -2.135607 0
+ F4 6815744 0.000000 5 0
+ -2.912191 -0.332822 0
+ -2.523899 -0.055470 0
+ -1.192612 0.277352 0
+ -0.471498 -0.471498 0
+ -2.135607 -0.721114 0
+ L3 6815744 0.000000 2.722067 3.694233 0 1.749900 3.305367 0
+ L3 6815744 0.000000 1.749900 5.055267 0 1.361033 4.277533 0
+ L3 6815744 0.000000 -0.777733 4.860833 0 -0.388867 4.277533 0
+ L3 6815744 0.000000 -1.749900 2.138767 0 -0.777733 2.527633 0
+ L3 6815744 0.000000 -2.333200 1.166600 0 -1.555467 0.583300 0
+ L3 6815744 0.000000 -4.471967 0.388867 0 -3.499800 0.000000 0
+ L3 6815744 0.000000 -3.110933 -0.972167 0 -3.888667 -1.749900 0
+ L3 6815744 0.000000 -0.777733 -3.499800 0 -0.972167 -4.666400 0
+ L3 6815744 0.000000 -0.583300 -2.138767 0 -0.388867 -2.916500 0
+ L3 6815744 0.000000 1.361033 -3.499800 0 1.749900 -4.666400 0
+ L3 6815744 0.000000 2.333200 -3.305367 0 3.499800 -3.888667 0
+ L3 6815744 0.000000 5.249700 -1.361033 0 4.277533 -1.555467 0
+ L3 6815744 0.000000 5.249700 -3.110933 0 4.277533 -2.722067 0
+ L3 6815744 0.000000 5.638567 -2.333200 0 4.666400 -2.138767 0
+ L3 6815744 0.000000 2.333200 -5.638567 0 2.138767 -4.860833 0
+ L3 6815744 0.000000 3.499800 -5.055267 0 2.916500 -4.471967 0
+ L3 6815744 0.000000 5.833000 0.972167 0 4.666400 1.166600 0
+ L3 6815744 0.000000 5.833000 1.944333 0 4.860833 1.749900 0
+ L3 6815744 0.000000 -1.944333 -5.444133 0 -1.749900 -4.666400 0
+ L3 6815744 0.000000 -4.277533 -2.722067 0 -3.694233 -2.333200 0
+ L3 6815744 0.000000 2.722067 6.221867 0 2.333200 5.249700 0
+ L3 6815744 0.000000 3.499800 5.638567 0 2.916500 5.055267 0
+ L3 11184640 0.000000 2.722067 -5.249700 0 2.333200 -4.083100 0
+ L3 14915328 0.000000 3.110933 4.666400 0 2.527633 4.277533 0
+ L3 14915328 0.000000 -3.499800 0.972167 0 -2.722067 0.583300 0
+ F4 16755200 0.000000 4 0
+ 2.995397 3.078602 0
+ 1.775050 2.718045 0
+ 1.636374 1.802785 0
+ 2.440694 2.135607 0
+ F4 16755200 0.000000 3 0
+ 3.383689 -2.773515 0
+ 2.995397 -1.913726 0
+ 2.385223 -2.440694 0
+ F4 16755200 0.000000 4 0
+ -2.551634 -3.217278 0
+ -1.775050 -3.023132 0
+ -1.220347 -1.719580 0
+ -2.080137 -1.941461 0
+ L3 16755200 0.000000 0.388867 4.277533 0 0.777733 3.694233 0
+ L3 16755200 0.000000 -2.333200 3.110933 0 -1.555467 3.110933 0
+ L3 16755200 0.000000 -3.499800 -2.722067 0 -2.916500 -1.944333 0
+ L3 16755200 0.000000 -2.138767 -4.277533 0 -1.555467 -3.499800 0
+ L3 16755200 0.000000 4.860833 2.527633 0 3.888667 1.944333 0
+ END$SEGS
+STRUCTURE 178 3 0 0 0 A 2 527.500000 179.000000 0 0.000000 "Lg Fall 16"" Fall-16b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.839564 4.591171 0
+ -4.153034 7.187113 0
+ -2.608341 7.852189 0
+ -0.870562 5.706782 0
+ 1.124667 7.573286 0
+ 3.527522 6.436220 0
+ 2.969717 -6.328950 0
+ 0.695585 -7.530378 0
+ -0.248394 -6.071501 0
+ -2.157806 -6.092955 0
+ -2.629795 -7.573286 0
+ -5.569003 -6.629307 0
+ -5.204283 -4.891528 0
+ -7.628593 -4.719895 0
+ -8.872929 -2.209769 0
+ -7.499869 -0.793801 0
+ -9.302011 0.000000 0
+ -8.830021 1.802142 0
+ -6.920609 2.488672 0
+ -8.293669 3.604283 0
+ -7.178058 5.620966 0
+ F4 6815744 0.000000 28 0
+ -6.693669 3.604283 0
+ -5.578058 5.620966 0
+ -3.239564 4.591171 0
+ -2.553034 7.187113 0
+ -1.008341 7.852189 0
+ 0.729438 5.706782 0
+ 2.724667 7.573286 0
+ 5.127522 6.436220 0
+ 4.226451 4.054819 0
+ 7.101297 3.261018 0
+ 7.530378 0.557806 0
+ 6.028593 -0.836709 0
+ 7.444562 -2.853391 0
+ 6.371858 -4.655533 0
+ 4.634079 -4.011911 0
+ 4.569717 -6.328950 0
+ 2.295585 -7.530378 0
+ 1.351606 -6.071501 0
+ -0.557806 -6.092955 0
+ -1.029795 -7.573286 0
+ -3.969003 -6.629307 0
+ -3.604283 -4.891528 0
+ -6.028593 -4.719895 0
+ -7.272929 -2.209769 0
+ -5.899869 -0.793801 0
+ -7.702011 0.000000 0
+ -7.230021 1.802142 0
+ -5.320609 2.488672 0
+ F4 12410368 0.000000 26 0
+ 1.072703 5.020252 0
+ 2.574488 6.522037 0
+ 4.011911 5.642420 0
+ 3.368289 3.132294 0
+ 6.243134 2.338493 0
+ 6.436220 1.094157 0
+ 4.634079 -0.150178 0
+ 6.200226 -2.510126 0
+ 5.513696 -3.325381 0
+ 3.797370 -3.282472 0
+ 3.711554 -5.256247 0
+ 2.231223 -6.071501 0
+ 1.008341 -4.634079 0
+ -0.836709 -4.891528 0
+ -1.265790 -5.878415 0
+ -2.831937 -5.470787 0
+ -2.853391 -3.754462 0
+ -4.162089 -3.711554 0
+ -5.020252 -1.995228 0
+ -3.497013 -0.557806 0
+ -4.934436 0.193087 0
+ -4.698441 1.222882 0
+ -2.402856 1.651963 0
+ -3.282472 3.218110 0
+ -1.845050 4.333722 0
+ -1.265790 5.599512 0
+ L3 12410368 0.000000 -1.361033 6.610733 0 -0.583300 6.027433 0
+ L3 12410368 0.000000 -5.444133 3.694233 0 -4.860833 3.110933 0
+ L3 12410368 0.000000 -4.083100 3.305367 0 -3.305367 2.722067 0
+ L3 12410368 0.000000 -6.610733 1.555467 0 -5.249700 1.555467 0
+ L3 12410368 0.000000 -4.471967 -0.583300 0 -5.444133 -0.388867 0
+ L3 12410368 0.000000 -6.027433 -2.916500 0 -5.055267 -3.110933 0
+ L3 12410368 0.000000 -2.916500 -5.833000 0 -3.305367 -6.416300 0
+ L3 12410368 0.000000 -0.194433 -5.249700 0 0.000000 -5.833000 0
+ L3 12410368 0.000000 2.527633 -6.221867 0 2.333200 -6.999600 0
+ L3 12410368 0.000000 5.833000 -3.694233 0 6.221867 -4.277533 0
+ L3 12410368 0.000000 -5.444133 4.860833 0 -5.055267 4.083100 0
+ L3 14915328 0.000000 -6.221867 3.694233 0 -5.638567 4.083100 0
+ L3 16755200 0.000000 6.805167 0.583300 0 6.027433 0.388867 0
+ L3 16755200 0.000000 -1.944333 6.221867 0 -2.138767 5.249700 0
+ L3 16755200 0.000000 -4.471967 4.083100 0 -3.110933 4.083100 0
+ L3 16755200 0.000000 -3.694233 2.138767 0 -4.860833 1.944333 0
+ L3 16755200 0.000000 -6.610733 0.388867 0 -5.444133 0.972167 0
+ L3 16755200 0.000000 -5.249700 -1.361033 0 -6.610733 -2.138767 0
+ L3 16755200 0.000000 -4.666400 -4.471967 0 -4.277533 -3.888667 0
+ L3 16755200 0.000000 -1.749900 -6.221867 0 -1.361033 -6.805167 0
+ L3 16755200 0.000000 0.972167 -5.249700 0 0.388867 -5.638567 0
+ L3 16755200 0.000000 3.694233 -5.833000 0 4.277533 -6.027433 0
+ L3 16755200 0.000000 6.805167 -2.722067 0 6.221867 -2.916500 0
+ F4 6815744 0.000000 5 0
+ -1.164876 3.688776 0
+ -1.053936 3.050867 0
+ 0.138676 2.523899 0
+ 0.471498 3.300483 0
+ -0.138676 3.882922 0
+ F4 6815744 0.000000 4 0
+ 3.799716 -0.138676 0
+ 2.357488 -0.471498 0
+ 2.052401 0.249616 0
+ 4.021597 0.360557 0
+ F4 6815744 0.000000 4 0
+ 0.915260 -3.688776 0
+ 0.194146 -3.134072 0
+ 0.388292 -1.969196 0
+ 0.832055 -2.135607 0
+ F4 6815744 0.000000 5 0
+ -2.912191 -0.332822 0
+ -2.523899 -0.055470 0
+ -1.192612 0.277352 0
+ -0.471498 -0.471498 0
+ -2.135607 -0.721114 0
+ L3 6815744 0.000000 2.722067 3.694233 0 1.749900 3.305367 0
+ L3 6815744 0.000000 1.749900 5.055267 0 1.361033 4.277533 0
+ L3 6815744 0.000000 -0.777733 4.860833 0 -0.388867 4.277533 0
+ L3 6815744 0.000000 -1.749900 2.138767 0 -0.777733 2.527633 0
+ L3 6815744 0.000000 -2.333200 1.166600 0 -1.555467 0.583300 0
+ L3 6815744 0.000000 -4.471967 0.388867 0 -3.499800 0.000000 0
+ L3 6815744 0.000000 -3.110933 -0.972167 0 -3.888667 -1.749900 0
+ L3 6815744 0.000000 -0.777733 -3.499800 0 -0.972167 -4.666400 0
+ L3 6815744 0.000000 -0.583300 -2.138767 0 -0.388867 -2.916500 0
+ L3 6815744 0.000000 1.361033 -3.499800 0 1.749900 -4.666400 0
+ L3 6815744 0.000000 2.333200 -3.305367 0 3.499800 -3.888667 0
+ L3 6815744 0.000000 5.249700 -1.361033 0 4.277533 -1.555467 0
+ L3 6815744 0.000000 5.249700 -3.110933 0 4.277533 -2.722067 0
+ L3 6815744 0.000000 5.638567 -2.333200 0 4.666400 -2.138767 0
+ L3 6815744 0.000000 2.333200 -5.638567 0 2.138767 -4.860833 0
+ L3 6815744 0.000000 3.499800 -5.055267 0 2.916500 -4.471967 0
+ L3 6815744 0.000000 5.833000 0.972167 0 4.666400 1.166600 0
+ L3 6815744 0.000000 5.833000 1.944333 0 4.860833 1.749900 0
+ L3 6815744 0.000000 -1.944333 -5.444133 0 -1.749900 -4.666400 0
+ L3 6815744 0.000000 -4.277533 -2.722067 0 -3.694233 -2.333200 0
+ L3 6815744 0.000000 2.722067 6.221867 0 2.333200 5.249700 0
+ L3 6815744 0.000000 3.499800 5.638567 0 2.916500 5.055267 0
+ L3 11184640 0.000000 2.722067 -5.249700 0 2.333200 -4.083100 0
+ L3 14915328 0.000000 3.110933 4.666400 0 2.527633 4.277533 0
+ L3 14915328 0.000000 -3.499800 0.972167 0 -2.722067 0.583300 0
+ F4 16755200 0.000000 4 0
+ 2.995397 3.078602 0
+ 1.775050 2.718045 0
+ 1.636374 1.802785 0
+ 2.440694 2.135607 0
+ F4 16755200 0.000000 3 0
+ 3.383689 -2.773515 0
+ 2.995397 -1.913726 0
+ 2.385223 -2.440694 0
+ F4 16755200 0.000000 4 0
+ -2.551634 -3.217278 0
+ -1.775050 -3.023132 0
+ -1.220347 -1.719580 0
+ -2.080137 -1.941461 0
+ L3 16755200 0.000000 0.388867 4.277533 0 0.777733 3.694233 0
+ L3 16755200 0.000000 -2.333200 3.110933 0 -1.555467 3.110933 0
+ L3 16755200 0.000000 -3.499800 -2.722067 0 -2.916500 -1.944333 0
+ L3 16755200 0.000000 -2.138767 -4.277533 0 -1.555467 -3.499800 0
+ L3 16755200 0.000000 4.860833 2.527633 0 3.888667 1.944333 0
+ END$SEGS
+STRUCTURE 179 3 0 0 0 A 2 544.000000 121.500000 0 0.000000 "Lg Fall 18"" Fall-18b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -5.444510 5.165067 0
+ -4.672163 8.085502 0
+ -2.934384 8.833713 0
+ -0.979382 6.420130 0
+ 1.265250 8.519947 0
+ 3.968463 7.240748 0
+ 3.340931 -7.120069 0
+ 0.782533 -8.471675 0
+ -0.279443 -6.830439 0
+ -2.427531 -6.854575 0
+ -2.958520 -8.519947 0
+ -6.265128 -7.457970 0
+ -5.854819 -5.502969 0
+ -8.582167 -5.309882 0
+ -9.982045 -2.485990 0
+ -8.437352 -0.893026 0
+ -10.464762 0.000000 0
+ -9.933774 2.027409 0
+ -7.785685 2.799756 0
+ -9.330378 4.054819 0
+ -8.075315 6.323587 0
+ F4 6815744 0.000000 28 0
+ -7.530378 4.054819 0
+ -6.275315 6.323587 0
+ -3.644510 5.165067 0
+ -2.872163 8.085502 0
+ -1.134384 8.833713 0
+ 0.820618 6.420130 0
+ 3.065250 8.519947 0
+ 5.768463 7.240748 0
+ 4.754758 4.561671 0
+ 7.988959 3.668646 0
+ 8.471675 0.627531 0
+ 6.782167 -0.941297 0
+ 8.375132 -3.210065 0
+ 7.168341 -5.237474 0
+ 5.213339 -4.513400 0
+ 5.140931 -7.120069 0
+ 2.582533 -8.471675 0
+ 1.520557 -6.830439 0
+ -0.627531 -6.854575 0
+ -1.158520 -8.519947 0
+ -4.465128 -7.457970 0
+ -4.054819 -5.502969 0
+ -6.782167 -5.309882 0
+ -8.182045 -2.485990 0
+ -6.637352 -0.893026 0
+ -8.664762 0.000000 0
+ -8.133774 2.027409 0
+ -5.985685 2.799756 0
+ F4 12410368 0.000000 26 0
+ 1.206791 5.647783 0
+ 2.896299 7.337291 0
+ 4.513400 6.347722 0
+ 3.789325 3.523831 0
+ 7.023526 2.630805 0
+ 7.240748 1.230927 0
+ 5.213339 -0.168951 0
+ 6.975254 -2.823892 0
+ 6.202908 -3.741053 0
+ 4.272041 -3.692782 0
+ 4.175498 -5.913278 0
+ 2.510126 -6.830439 0
+ 1.134384 -5.213339 0
+ -0.941297 -5.502969 0
+ -1.424014 -6.613217 0
+ -3.185929 -6.154636 0
+ -3.210065 -4.223770 0
+ -4.682350 -4.175498 0
+ -5.647783 -2.244632 0
+ -3.934140 -0.627531 0
+ -5.551240 0.217222 0
+ -5.285746 1.375742 0
+ -2.703213 1.858459 0
+ -3.692782 3.620374 0
+ -2.075681 4.875437 0
+ -1.424014 6.299451 0
+ L3 12410368 0.000000 -1.531162 7.437075 0 -0.656212 6.780862 0
+ L3 12410368 0.000000 -6.124650 4.156012 0 -5.468437 3.499800 0
+ L3 12410368 0.000000 -4.593487 3.718537 0 -3.718537 3.062325 0
+ L3 12410368 0.000000 -7.437075 1.749900 0 -5.905912 1.749900 0
+ L3 12410368 0.000000 -5.030962 -0.656212 0 -6.124650 -0.437475 0
+ L3 12410368 0.000000 -6.780862 -3.281062 0 -5.687175 -3.499800 0
+ L3 12410368 0.000000 -3.281062 -6.562125 0 -3.718537 -7.218337 0
+ L3 12410368 0.000000 -0.218737 -5.905912 0 0.000000 -6.562125 0
+ L3 12410368 0.000000 2.843587 -6.999600 0 2.624850 -7.874550 0
+ L3 12410368 0.000000 6.562125 -4.156012 0 6.999600 -4.812225 0
+ L3 12410368 0.000000 -6.124650 5.468437 0 -5.687175 4.593487 0
+ L3 14915328 0.000000 -6.999600 4.156012 0 -6.343387 4.593487 0
+ L3 16755200 0.000000 7.655812 0.656212 0 6.780862 0.437475 0
+ L3 16755200 0.000000 -2.187375 6.999600 0 -2.406112 5.905912 0
+ L3 16755200 0.000000 -5.030962 4.593487 0 -3.499800 4.593487 0
+ L3 16755200 0.000000 -4.156012 2.406112 0 -5.468437 2.187375 0
+ L3 16755200 0.000000 -7.437075 0.437475 0 -6.124650 1.093687 0
+ L3 16755200 0.000000 -5.905912 -1.531162 0 -7.437075 -2.406112 0
+ L3 16755200 0.000000 -5.249700 -5.030962 0 -4.812225 -4.374750 0
+ L3 16755200 0.000000 -1.968637 -6.999600 0 -1.531162 -7.655812 0
+ L3 16755200 0.000000 1.093687 -5.905912 0 0.437475 -6.343387 0
+ L3 16755200 0.000000 4.156012 -6.562125 0 4.812225 -6.780862 0
+ L3 16755200 0.000000 7.655812 -3.062325 0 6.999600 -3.281062 0
+ F4 6815744 0.000000 5 0
+ -1.310486 4.149872 0
+ -1.185678 3.432225 0
+ 0.156010 2.839386 0
+ 0.530435 3.713044 0
+ -0.156010 4.368287 0
+ F4 6815744 0.000000 4 0
+ 4.274681 -0.156010 0
+ 2.652174 -0.530435 0
+ 2.308952 0.280818 0
+ 4.524297 0.405627 0
+ F4 6815744 0.000000 4 0
+ 1.029668 -4.149872 0
+ 0.218414 -3.525832 0
+ 0.436829 -2.215345 0
+ 0.936061 -2.402558 0
+ F4 6815744 0.000000 5 0
+ -3.276215 -0.374425 0
+ -2.839386 -0.062404 0
+ -1.341688 0.312020 0
+ -0.530435 -0.530435 0
+ -2.402558 -0.811253 0
+ L3 6815744 0.000000 3.062325 4.156012 0 1.968637 3.718537 0
+ L3 6815744 0.000000 1.968637 5.687175 0 1.531162 4.812225 0
+ L3 6815744 0.000000 -0.874950 5.468437 0 -0.437475 4.812225 0
+ L3 6815744 0.000000 -1.968637 2.406112 0 -0.874950 2.843587 0
+ L3 6815744 0.000000 -2.624850 1.312425 0 -1.749900 0.656212 0
+ L3 6815744 0.000000 -5.030962 0.437475 0 -3.937275 0.000000 0
+ L3 6815744 0.000000 -3.499800 -1.093687 0 -4.374750 -1.968637 0
+ L3 6815744 0.000000 -0.874950 -3.937275 0 -1.093687 -5.249700 0
+ L3 6815744 0.000000 -0.656212 -2.406112 0 -0.437475 -3.281062 0
+ L3 6815744 0.000000 1.531162 -3.937275 0 1.968637 -5.249700 0
+ L3 6815744 0.000000 2.624850 -3.718537 0 3.937275 -4.374750 0
+ L3 6815744 0.000000 5.905912 -1.531162 0 4.812225 -1.749900 0
+ L3 6815744 0.000000 5.905912 -3.499800 0 4.812225 -3.062325 0
+ L3 6815744 0.000000 6.343387 -2.624850 0 5.249700 -2.406112 0
+ L3 6815744 0.000000 2.624850 -6.343387 0 2.406112 -5.468437 0
+ L3 6815744 0.000000 3.937275 -5.687175 0 3.281062 -5.030962 0
+ L3 6815744 0.000000 6.562125 1.093687 0 5.249700 1.312425 0
+ L3 6815744 0.000000 6.562125 2.187375 0 5.468437 1.968637 0
+ L3 6815744 0.000000 -2.187375 -6.124650 0 -1.968637 -5.249700 0
+ L3 6815744 0.000000 -4.812225 -3.062325 0 -4.156012 -2.624850 0
+ L3 6815744 0.000000 3.062325 6.999600 0 2.624850 5.905912 0
+ L3 6815744 0.000000 3.937275 6.343387 0 3.281062 5.687175 0
+ L3 11184640 0.000000 3.062325 -5.905912 0 2.624850 -4.593487 0
+ L3 14915328 0.000000 3.499800 5.249700 0 2.843587 4.812225 0
+ L3 14915328 0.000000 -3.937275 1.093687 0 -3.062325 0.656212 0
+ F4 16755200 0.000000 4 0
+ 3.369821 3.463427 0
+ 1.996931 3.057801 0
+ 1.840921 2.028133 0
+ 2.745780 2.402558 0
+ F4 16755200 0.000000 3 0
+ 3.806650 -3.120205 0
+ 3.369821 -2.152941 0
+ 2.683376 -2.745780 0
+ F4 16755200 0.000000 4 0
+ -2.870588 -3.619438 0
+ -1.996931 -3.401023 0
+ -1.372890 -1.934527 0
+ -2.340154 -2.184143 0
+ L3 16755200 0.000000 0.437475 4.812225 0 0.874950 4.156012 0
+ L3 16755200 0.000000 -2.624850 3.499800 0 -1.749900 3.499800 0
+ L3 16755200 0.000000 -3.937275 -3.062325 0 -3.281062 -2.187375 0
+ L3 16755200 0.000000 -2.406112 -4.812225 0 -1.749900 -3.937275 0
+ L3 16755200 0.000000 5.468437 2.843587 0 4.374750 2.187375 0
+ END$SEGS
+STRUCTURE 180 3 0 0 0 A 2 516.000000 152.500000 0 0.000000 "Lg Fall 18"" Fall-18b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -5.444510 5.165067 0
+ -4.672163 8.085502 0
+ -2.934384 8.833713 0
+ -0.979382 6.420130 0
+ 1.265250 8.519947 0
+ 3.968463 7.240748 0
+ 3.340931 -7.120069 0
+ 0.782533 -8.471675 0
+ -0.279443 -6.830439 0
+ -2.427531 -6.854575 0
+ -2.958520 -8.519947 0
+ -6.265128 -7.457970 0
+ -5.854819 -5.502969 0
+ -8.582167 -5.309882 0
+ -9.982045 -2.485990 0
+ -8.437352 -0.893026 0
+ -10.464762 0.000000 0
+ -9.933774 2.027409 0
+ -7.785685 2.799756 0
+ -9.330378 4.054819 0
+ -8.075315 6.323587 0
+ F4 6815744 0.000000 28 0
+ -7.530378 4.054819 0
+ -6.275315 6.323587 0
+ -3.644510 5.165067 0
+ -2.872163 8.085502 0
+ -1.134384 8.833713 0
+ 0.820618 6.420130 0
+ 3.065250 8.519947 0
+ 5.768463 7.240748 0
+ 4.754758 4.561671 0
+ 7.988959 3.668646 0
+ 8.471675 0.627531 0
+ 6.782167 -0.941297 0
+ 8.375132 -3.210065 0
+ 7.168341 -5.237474 0
+ 5.213339 -4.513400 0
+ 5.140931 -7.120069 0
+ 2.582533 -8.471675 0
+ 1.520557 -6.830439 0
+ -0.627531 -6.854575 0
+ -1.158520 -8.519947 0
+ -4.465128 -7.457970 0
+ -4.054819 -5.502969 0
+ -6.782167 -5.309882 0
+ -8.182045 -2.485990 0
+ -6.637352 -0.893026 0
+ -8.664762 0.000000 0
+ -8.133774 2.027409 0
+ -5.985685 2.799756 0
+ F4 12410368 0.000000 26 0
+ 1.206791 5.647783 0
+ 2.896299 7.337291 0
+ 4.513400 6.347722 0
+ 3.789325 3.523831 0
+ 7.023526 2.630805 0
+ 7.240748 1.230927 0
+ 5.213339 -0.168951 0
+ 6.975254 -2.823892 0
+ 6.202908 -3.741053 0
+ 4.272041 -3.692782 0
+ 4.175498 -5.913278 0
+ 2.510126 -6.830439 0
+ 1.134384 -5.213339 0
+ -0.941297 -5.502969 0
+ -1.424014 -6.613217 0
+ -3.185929 -6.154636 0
+ -3.210065 -4.223770 0
+ -4.682350 -4.175498 0
+ -5.647783 -2.244632 0
+ -3.934140 -0.627531 0
+ -5.551240 0.217222 0
+ -5.285746 1.375742 0
+ -2.703213 1.858459 0
+ -3.692782 3.620374 0
+ -2.075681 4.875437 0
+ -1.424014 6.299451 0
+ L3 12410368 0.000000 -1.531162 7.437075 0 -0.656212 6.780862 0
+ L3 12410368 0.000000 -6.124650 4.156012 0 -5.468437 3.499800 0
+ L3 12410368 0.000000 -4.593487 3.718537 0 -3.718537 3.062325 0
+ L3 12410368 0.000000 -7.437075 1.749900 0 -5.905912 1.749900 0
+ L3 12410368 0.000000 -5.030962 -0.656212 0 -6.124650 -0.437475 0
+ L3 12410368 0.000000 -6.780862 -3.281062 0 -5.687175 -3.499800 0
+ L3 12410368 0.000000 -3.281062 -6.562125 0 -3.718537 -7.218337 0
+ L3 12410368 0.000000 -0.218737 -5.905912 0 0.000000 -6.562125 0
+ L3 12410368 0.000000 2.843587 -6.999600 0 2.624850 -7.874550 0
+ L3 12410368 0.000000 6.562125 -4.156012 0 6.999600 -4.812225 0
+ L3 12410368 0.000000 -6.124650 5.468437 0 -5.687175 4.593487 0
+ L3 14915328 0.000000 -6.999600 4.156012 0 -6.343387 4.593487 0
+ L3 16755200 0.000000 7.655812 0.656212 0 6.780862 0.437475 0
+ L3 16755200 0.000000 -2.187375 6.999600 0 -2.406112 5.905912 0
+ L3 16755200 0.000000 -5.030962 4.593487 0 -3.499800 4.593487 0
+ L3 16755200 0.000000 -4.156012 2.406112 0 -5.468437 2.187375 0
+ L3 16755200 0.000000 -7.437075 0.437475 0 -6.124650 1.093687 0
+ L3 16755200 0.000000 -5.905912 -1.531162 0 -7.437075 -2.406112 0
+ L3 16755200 0.000000 -5.249700 -5.030962 0 -4.812225 -4.374750 0
+ L3 16755200 0.000000 -1.968637 -6.999600 0 -1.531162 -7.655812 0
+ L3 16755200 0.000000 1.093687 -5.905912 0 0.437475 -6.343387 0
+ L3 16755200 0.000000 4.156012 -6.562125 0 4.812225 -6.780862 0
+ L3 16755200 0.000000 7.655812 -3.062325 0 6.999600 -3.281062 0
+ F4 6815744 0.000000 5 0
+ -1.310486 4.149872 0
+ -1.185678 3.432225 0
+ 0.156010 2.839386 0
+ 0.530435 3.713044 0
+ -0.156010 4.368287 0
+ F4 6815744 0.000000 4 0
+ 4.274681 -0.156010 0
+ 2.652174 -0.530435 0
+ 2.308952 0.280818 0
+ 4.524297 0.405627 0
+ F4 6815744 0.000000 4 0
+ 1.029668 -4.149872 0
+ 0.218414 -3.525832 0
+ 0.436829 -2.215345 0
+ 0.936061 -2.402558 0
+ F4 6815744 0.000000 5 0
+ -3.276215 -0.374425 0
+ -2.839386 -0.062404 0
+ -1.341688 0.312020 0
+ -0.530435 -0.530435 0
+ -2.402558 -0.811253 0
+ L3 6815744 0.000000 3.062325 4.156012 0 1.968637 3.718537 0
+ L3 6815744 0.000000 1.968637 5.687175 0 1.531162 4.812225 0
+ L3 6815744 0.000000 -0.874950 5.468437 0 -0.437475 4.812225 0
+ L3 6815744 0.000000 -1.968637 2.406112 0 -0.874950 2.843587 0
+ L3 6815744 0.000000 -2.624850 1.312425 0 -1.749900 0.656212 0
+ L3 6815744 0.000000 -5.030962 0.437475 0 -3.937275 0.000000 0
+ L3 6815744 0.000000 -3.499800 -1.093687 0 -4.374750 -1.968637 0
+ L3 6815744 0.000000 -0.874950 -3.937275 0 -1.093687 -5.249700 0
+ L3 6815744 0.000000 -0.656212 -2.406112 0 -0.437475 -3.281062 0
+ L3 6815744 0.000000 1.531162 -3.937275 0 1.968637 -5.249700 0
+ L3 6815744 0.000000 2.624850 -3.718537 0 3.937275 -4.374750 0
+ L3 6815744 0.000000 5.905912 -1.531162 0 4.812225 -1.749900 0
+ L3 6815744 0.000000 5.905912 -3.499800 0 4.812225 -3.062325 0
+ L3 6815744 0.000000 6.343387 -2.624850 0 5.249700 -2.406112 0
+ L3 6815744 0.000000 2.624850 -6.343387 0 2.406112 -5.468437 0
+ L3 6815744 0.000000 3.937275 -5.687175 0 3.281062 -5.030962 0
+ L3 6815744 0.000000 6.562125 1.093687 0 5.249700 1.312425 0
+ L3 6815744 0.000000 6.562125 2.187375 0 5.468437 1.968637 0
+ L3 6815744 0.000000 -2.187375 -6.124650 0 -1.968637 -5.249700 0
+ L3 6815744 0.000000 -4.812225 -3.062325 0 -4.156012 -2.624850 0
+ L3 6815744 0.000000 3.062325 6.999600 0 2.624850 5.905912 0
+ L3 6815744 0.000000 3.937275 6.343387 0 3.281062 5.687175 0
+ L3 11184640 0.000000 3.062325 -5.905912 0 2.624850 -4.593487 0
+ L3 14915328 0.000000 3.499800 5.249700 0 2.843587 4.812225 0
+ L3 14915328 0.000000 -3.937275 1.093687 0 -3.062325 0.656212 0
+ F4 16755200 0.000000 4 0
+ 3.369821 3.463427 0
+ 1.996931 3.057801 0
+ 1.840921 2.028133 0
+ 2.745780 2.402558 0
+ F4 16755200 0.000000 3 0
+ 3.806650 -3.120205 0
+ 3.369821 -2.152941 0
+ 2.683376 -2.745780 0
+ F4 16755200 0.000000 4 0
+ -2.870588 -3.619438 0
+ -1.996931 -3.401023 0
+ -1.372890 -1.934527 0
+ -2.340154 -2.184143 0
+ L3 16755200 0.000000 0.437475 4.812225 0 0.874950 4.156012 0
+ L3 16755200 0.000000 -2.624850 3.499800 0 -1.749900 3.499800 0
+ L3 16755200 0.000000 -3.937275 -3.062325 0 -3.281062 -2.187375 0
+ L3 16755200 0.000000 -2.406112 -4.812225 0 -1.749900 -3.937275 0
+ L3 16755200 0.000000 5.468437 2.843587 0 4.374750 2.187375 0
+ END$SEGS
+STRUCTURE 181 3 0 0 0 A 2 476.000000 198.000000 0 0.000000 "Sm Fall 6"" Fall-6a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -1.814837 -1.721689 0
+ -1.557388 -2.695167 0
+ -0.978128 -2.944571 0
+ -0.326461 -2.140043 0
+ 0.421750 -2.839982 0
+ 1.322821 -2.413583 0
+ 1.113644 2.373356 0
+ 0.260844 2.823892 0
+ -0.093148 2.276813 0
+ -0.809177 2.284858 0
+ -0.986173 2.839982 0
+ -2.088376 2.485990 0
+ -1.951606 1.834323 0
+ -2.860722 1.769961 0
+ -3.327348 0.828663 0
+ -2.812451 0.297675 0
+ -3.488254 0.000000 0
+ -3.311258 -0.675803 0
+ -2.595228 -0.933252 0
+ -3.110126 -1.351606 0
+ -2.691772 -2.107862 0
+ F4 6842368 0.000000 28 0
+ -2.510126 -1.351606 0
+ -2.091772 -2.107862 0
+ -1.214837 -1.721689 0
+ -0.957388 -2.695167 0
+ -0.378128 -2.944571 0
+ 0.273539 -2.140043 0
+ 1.021750 -2.839982 0
+ 1.922821 -2.413583 0
+ 1.584919 -1.520557 0
+ 2.662986 -1.222882 0
+ 2.823892 -0.209177 0
+ 2.260722 0.313766 0
+ 2.791711 1.070022 0
+ 2.389447 1.745825 0
+ 1.737780 1.504467 0
+ 1.713644 2.373356 0
+ 0.860844 2.823892 0
+ 0.506852 2.276813 0
+ -0.209177 2.284858 0
+ -0.386173 2.839982 0
+ -1.488376 2.485990 0
+ -1.351606 1.834323 0
+ -2.260722 1.769961 0
+ -2.727348 0.828663 0
+ -2.212451 0.297675 0
+ -2.888254 0.000000 0
+ -2.711258 -0.675803 0
+ -1.995228 -0.933252 0
+ F4 12434688 0.000000 26 0
+ 0.402264 -1.882594 0
+ 0.965433 -2.445764 0
+ 1.504467 -2.115907 0
+ 1.263108 -1.174610 0
+ 2.341175 -0.876935 0
+ 2.413583 -0.410309 0
+ 1.737780 0.056317 0
+ 2.325085 0.941297 0
+ 2.067636 1.247018 0
+ 1.424014 1.230927 0
+ 1.391833 1.971093 0
+ 0.836709 2.276813 0
+ 0.378128 1.737780 0
+ -0.313766 1.834323 0
+ -0.474671 2.204406 0
+ -1.061976 2.051545 0
+ -1.070022 1.407923 0
+ -1.560783 1.391833 0
+ -1.882594 0.748211 0
+ -1.311380 0.209177 0
+ -1.850413 -0.072407 0
+ -1.761915 -0.458581 0
+ -0.901071 -0.619486 0
+ -1.230927 -1.206791 0
+ -0.691894 -1.625146 0
+ -0.474671 -2.099817 0
+ L3 12434688 0.000000 -0.729125 -2.333200 0 -0.802037 -1.968637 0
+ L3 12434688 0.000000 -1.531162 -1.239512 0 -1.239512 -1.020775 0
+ L3 12434688 0.000000 -2.479025 -0.145825 0 -2.041550 -0.364562 0
+ L3 12434688 0.000000 -1.676987 0.218737 0 -2.041550 0.145825 0
+ L3 12434688 0.000000 -2.260287 1.093687 0 -1.895725 1.166600 0
+ L3 12434688 0.000000 -1.093687 2.187375 0 -1.239512 2.406112 0
+ L3 12434688 0.000000 0.364562 1.968637 0 0.145825 2.114462 0
+ L3 12434688 0.000000 1.385337 2.187375 0 1.604075 2.260287 0
+ L3 12434688 0.000000 2.551937 1.020775 0 2.333200 1.093687 0
+ L3 12434688 0.000000 -2.041550 -1.822812 0 -1.895725 -1.531162 0
+ L3 12434688 0.000000 -2.333200 -1.385337 0 -2.114462 -1.531162 0
+ L3 16755200 0.000000 -0.510387 -2.479025 0 -0.218737 -2.260287 0
+ L3 16755200 0.000000 -1.676987 -1.531162 0 -1.166600 -1.531162 0
+ L3 16755200 0.000000 -2.041550 -1.385337 0 -1.822812 -1.166600 0
+ L3 16755200 0.000000 -1.385337 -0.802037 0 -1.822812 -0.729125 0
+ L3 16755200 0.000000 -2.479025 -0.583300 0 -1.968637 -0.583300 0
+ L3 16755200 0.000000 -1.968637 0.510387 0 -2.479025 0.802037 0
+ L3 16755200 0.000000 -1.749900 1.676987 0 -1.604075 1.458250 0
+ L3 16755200 0.000000 -0.656212 2.333200 0 -0.510387 2.551937 0
+ L3 16755200 0.000000 -0.072912 1.968637 0 0.000000 2.187375 0
+ L3 16755200 0.000000 0.947862 2.333200 0 0.874950 2.624850 0
+ L3 16755200 0.000000 2.187375 1.385337 0 2.333200 1.604075 0
+ L3 16755200 0.000000 2.551937 -0.218737 0 2.260287 -0.145825 0
+ F4 6842368 0.000000 4 0
+ 1.123274 -1.154476 0
+ 0.665644 -1.019267 0
+ 0.613640 -0.676044 0
+ 0.915260 -0.800853 0
+ F4 6842368 0.000000 4 0
+ 1.424894 0.052003 0
+ 0.884058 0.176812 0
+ 0.769651 -0.093606 0
+ 1.508099 -0.135209 0
+ F4 6842368 0.000000 4 0
+ 0.343223 1.383291 0
+ 0.072805 1.175277 0
+ 0.145610 0.738448 0
+ 0.312020 0.800853 0
+ F4 6842368 0.000000 5 0
+ -1.092072 0.124808 0
+ -0.946462 0.020801 0
+ -0.447229 -0.104007 0
+ -0.176812 0.176812 0
+ -0.800853 0.270418 0
+ L3 6842368 0.000000 0.145825 -1.604075 0 0.291650 -1.385337 0
+ L3 6842368 0.000000 1.020775 -1.385337 0 0.656212 -1.239512 0
+ L3 6842368 0.000000 1.166600 -1.749900 0 0.947862 -1.604075 0
+ L3 6842368 0.000000 0.656212 -1.895725 0 0.510387 -1.604075 0
+ L3 6842368 0.000000 -0.291650 -1.822812 0 -0.145825 -1.604075 0
+ L3 6842368 0.000000 -0.874950 -1.166600 0 -0.583300 -1.166600 0
+ L3 6842368 0.000000 -0.656212 -0.802037 0 -0.291650 -0.947862 0
+ L3 6842368 0.000000 -0.874950 -0.437475 0 -0.583300 -0.218737 0
+ L3 6842368 0.000000 -1.312425 -0.364562 0 -1.020775 -0.218737 0
+ L3 6842368 0.000000 -1.676987 -0.145825 0 -1.312425 0.000000 0
+ L3 6842368 0.000000 -1.166600 0.364562 0 -1.458250 0.656212 0
+ L3 6842368 0.000000 -1.312425 1.020775 0 -1.093687 0.729125 0
+ L3 6842368 0.000000 -0.802037 1.604075 0 -0.583300 1.312425 0
+ L3 6842368 0.000000 -0.291650 1.312425 0 -0.364562 1.749900 0
+ L3 6842368 0.000000 -0.218737 0.802037 0 -0.145825 1.093687 0
+ L3 6842368 0.000000 0.510387 1.312425 0 0.656212 1.749900 0
+ L3 6842368 0.000000 0.874950 1.239512 0 1.312425 1.458250 0
+ L3 6842368 0.000000 1.968637 0.510387 0 1.604075 0.583300 0
+ L3 6842368 0.000000 1.968637 1.166600 0 1.604075 1.020775 0
+ L3 6842368 0.000000 2.114462 0.874950 0 1.749900 0.802037 0
+ L3 6842368 0.000000 0.874950 2.114462 0 0.802037 1.822812 0
+ L3 6842368 0.000000 1.312425 1.895725 0 1.093687 1.676987 0
+ L3 6842368 0.000000 1.020775 1.968637 0 0.874950 1.531162 0
+ L3 6842368 0.000000 2.187375 -0.364562 0 1.749900 -0.437475 0
+ L3 6842368 0.000000 1.822812 -0.947862 0 1.458250 -0.729125 0
+ L3 6842368 0.000000 2.187375 -0.729125 0 1.822812 -0.656212 0
+ L3 6842368 0.000000 -0.729125 2.041550 0 -0.656212 1.749900 0
+ L3 6842368 0.000000 -1.604075 1.020775 0 -1.385337 0.874950 0
+ L3 6842368 0.000000 1.020775 -2.333200 0 0.874950 -1.968637 0
+ L3 6842368 0.000000 1.312425 -2.114462 0 1.093687 -1.895725 0
+ F4 16755200 0.000000 5 0
+ -0.436829 -1.383291 0
+ -0.395226 -1.144075 0
+ 0.052003 -0.946462 0
+ 0.176812 -1.237681 0
+ -0.052003 -1.456096 0
+ F4 16755200 0.000000 3 0
+ 1.268883 1.040068 0
+ 1.123274 0.717647 0
+ 0.894459 0.915260 0
+ F4 16755200 0.000000 4 0
+ -0.956863 1.206479 0
+ -0.665644 1.133674 0
+ -0.457630 0.644842 0
+ -0.780051 0.728048 0
+ END$SEGS
+STRUCTURE 182 3 0 0 0 A 2 462.000000 197.000000 0 0.000000 "Sm Fall 6"" Fall-6a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -1.814837 -1.721689 0
+ -1.557388 -2.695167 0
+ -0.978128 -2.944571 0
+ -0.326461 -2.140043 0
+ 0.421750 -2.839982 0
+ 1.322821 -2.413583 0
+ 1.113644 2.373356 0
+ 0.260844 2.823892 0
+ -0.093148 2.276813 0
+ -0.809177 2.284858 0
+ -0.986173 2.839982 0
+ -2.088376 2.485990 0
+ -1.951606 1.834323 0
+ -2.860722 1.769961 0
+ -3.327348 0.828663 0
+ -2.812451 0.297675 0
+ -3.488254 0.000000 0
+ -3.311258 -0.675803 0
+ -2.595228 -0.933252 0
+ -3.110126 -1.351606 0
+ -2.691772 -2.107862 0
+ F4 6842368 0.000000 28 0
+ -2.510126 -1.351606 0
+ -2.091772 -2.107862 0
+ -1.214837 -1.721689 0
+ -0.957388 -2.695167 0
+ -0.378128 -2.944571 0
+ 0.273539 -2.140043 0
+ 1.021750 -2.839982 0
+ 1.922821 -2.413583 0
+ 1.584919 -1.520557 0
+ 2.662986 -1.222882 0
+ 2.823892 -0.209177 0
+ 2.260722 0.313766 0
+ 2.791711 1.070022 0
+ 2.389447 1.745825 0
+ 1.737780 1.504467 0
+ 1.713644 2.373356 0
+ 0.860844 2.823892 0
+ 0.506852 2.276813 0
+ -0.209177 2.284858 0
+ -0.386173 2.839982 0
+ -1.488376 2.485990 0
+ -1.351606 1.834323 0
+ -2.260722 1.769961 0
+ -2.727348 0.828663 0
+ -2.212451 0.297675 0
+ -2.888254 0.000000 0
+ -2.711258 -0.675803 0
+ -1.995228 -0.933252 0
+ F4 12434688 0.000000 26 0
+ 0.402264 -1.882594 0
+ 0.965433 -2.445764 0
+ 1.504467 -2.115907 0
+ 1.263108 -1.174610 0
+ 2.341175 -0.876935 0
+ 2.413583 -0.410309 0
+ 1.737780 0.056317 0
+ 2.325085 0.941297 0
+ 2.067636 1.247018 0
+ 1.424014 1.230927 0
+ 1.391833 1.971093 0
+ 0.836709 2.276813 0
+ 0.378128 1.737780 0
+ -0.313766 1.834323 0
+ -0.474671 2.204406 0
+ -1.061976 2.051545 0
+ -1.070022 1.407923 0
+ -1.560783 1.391833 0
+ -1.882594 0.748211 0
+ -1.311380 0.209177 0
+ -1.850413 -0.072407 0
+ -1.761915 -0.458581 0
+ -0.901071 -0.619486 0
+ -1.230927 -1.206791 0
+ -0.691894 -1.625146 0
+ -0.474671 -2.099817 0
+ L3 12434688 0.000000 -0.729125 -2.333200 0 -0.802037 -1.968637 0
+ L3 12434688 0.000000 -1.531162 -1.239512 0 -1.239512 -1.020775 0
+ L3 12434688 0.000000 -2.479025 -0.145825 0 -2.041550 -0.364562 0
+ L3 12434688 0.000000 -1.676987 0.218737 0 -2.041550 0.145825 0
+ L3 12434688 0.000000 -2.260287 1.093687 0 -1.895725 1.166600 0
+ L3 12434688 0.000000 -1.093687 2.187375 0 -1.239512 2.406112 0
+ L3 12434688 0.000000 0.364562 1.968637 0 0.145825 2.114462 0
+ L3 12434688 0.000000 1.385337 2.187375 0 1.604075 2.260287 0
+ L3 12434688 0.000000 2.551937 1.020775 0 2.333200 1.093687 0
+ L3 12434688 0.000000 -2.041550 -1.822812 0 -1.895725 -1.531162 0
+ L3 12434688 0.000000 -2.333200 -1.385337 0 -2.114462 -1.531162 0
+ L3 16755200 0.000000 -0.510387 -2.479025 0 -0.218737 -2.260287 0
+ L3 16755200 0.000000 -1.676987 -1.531162 0 -1.166600 -1.531162 0
+ L3 16755200 0.000000 -2.041550 -1.385337 0 -1.822812 -1.166600 0
+ L3 16755200 0.000000 -1.385337 -0.802037 0 -1.822812 -0.729125 0
+ L3 16755200 0.000000 -2.479025 -0.583300 0 -1.968637 -0.583300 0
+ L3 16755200 0.000000 -1.968637 0.510387 0 -2.479025 0.802037 0
+ L3 16755200 0.000000 -1.749900 1.676987 0 -1.604075 1.458250 0
+ L3 16755200 0.000000 -0.656212 2.333200 0 -0.510387 2.551937 0
+ L3 16755200 0.000000 -0.072912 1.968637 0 0.000000 2.187375 0
+ L3 16755200 0.000000 0.947862 2.333200 0 0.874950 2.624850 0
+ L3 16755200 0.000000 2.187375 1.385337 0 2.333200 1.604075 0
+ L3 16755200 0.000000 2.551937 -0.218737 0 2.260287 -0.145825 0
+ F4 6842368 0.000000 4 0
+ 1.123274 -1.154476 0
+ 0.665644 -1.019267 0
+ 0.613640 -0.676044 0
+ 0.915260 -0.800853 0
+ F4 6842368 0.000000 4 0
+ 1.424894 0.052003 0
+ 0.884058 0.176812 0
+ 0.769651 -0.093606 0
+ 1.508099 -0.135209 0
+ F4 6842368 0.000000 4 0
+ 0.343223 1.383291 0
+ 0.072805 1.175277 0
+ 0.145610 0.738448 0
+ 0.312020 0.800853 0
+ F4 6842368 0.000000 5 0
+ -1.092072 0.124808 0
+ -0.946462 0.020801 0
+ -0.447229 -0.104007 0
+ -0.176812 0.176812 0
+ -0.800853 0.270418 0
+ L3 6842368 0.000000 0.145825 -1.604075 0 0.291650 -1.385337 0
+ L3 6842368 0.000000 1.020775 -1.385337 0 0.656212 -1.239512 0
+ L3 6842368 0.000000 1.166600 -1.749900 0 0.947862 -1.604075 0
+ L3 6842368 0.000000 0.656212 -1.895725 0 0.510387 -1.604075 0
+ L3 6842368 0.000000 -0.291650 -1.822812 0 -0.145825 -1.604075 0
+ L3 6842368 0.000000 -0.874950 -1.166600 0 -0.583300 -1.166600 0
+ L3 6842368 0.000000 -0.656212 -0.802037 0 -0.291650 -0.947862 0
+ L3 6842368 0.000000 -0.874950 -0.437475 0 -0.583300 -0.218737 0
+ L3 6842368 0.000000 -1.312425 -0.364562 0 -1.020775 -0.218737 0
+ L3 6842368 0.000000 -1.676987 -0.145825 0 -1.312425 0.000000 0
+ L3 6842368 0.000000 -1.166600 0.364562 0 -1.458250 0.656212 0
+ L3 6842368 0.000000 -1.312425 1.020775 0 -1.093687 0.729125 0
+ L3 6842368 0.000000 -0.802037 1.604075 0 -0.583300 1.312425 0
+ L3 6842368 0.000000 -0.291650 1.312425 0 -0.364562 1.749900 0
+ L3 6842368 0.000000 -0.218737 0.802037 0 -0.145825 1.093687 0
+ L3 6842368 0.000000 0.510387 1.312425 0 0.656212 1.749900 0
+ L3 6842368 0.000000 0.874950 1.239512 0 1.312425 1.458250 0
+ L3 6842368 0.000000 1.968637 0.510387 0 1.604075 0.583300 0
+ L3 6842368 0.000000 1.968637 1.166600 0 1.604075 1.020775 0
+ L3 6842368 0.000000 2.114462 0.874950 0 1.749900 0.802037 0
+ L3 6842368 0.000000 0.874950 2.114462 0 0.802037 1.822812 0
+ L3 6842368 0.000000 1.312425 1.895725 0 1.093687 1.676987 0
+ L3 6842368 0.000000 1.020775 1.968637 0 0.874950 1.531162 0
+ L3 6842368 0.000000 2.187375 -0.364562 0 1.749900 -0.437475 0
+ L3 6842368 0.000000 1.822812 -0.947862 0 1.458250 -0.729125 0
+ L3 6842368 0.000000 2.187375 -0.729125 0 1.822812 -0.656212 0
+ L3 6842368 0.000000 -0.729125 2.041550 0 -0.656212 1.749900 0
+ L3 6842368 0.000000 -1.604075 1.020775 0 -1.385337 0.874950 0
+ L3 6842368 0.000000 1.020775 -2.333200 0 0.874950 -1.968637 0
+ L3 6842368 0.000000 1.312425 -2.114462 0 1.093687 -1.895725 0
+ F4 16755200 0.000000 5 0
+ -0.436829 -1.383291 0
+ -0.395226 -1.144075 0
+ 0.052003 -0.946462 0
+ 0.176812 -1.237681 0
+ -0.052003 -1.456096 0
+ F4 16755200 0.000000 3 0
+ 1.268883 1.040068 0
+ 1.123274 0.717647 0
+ 0.894459 0.915260 0
+ F4 16755200 0.000000 4 0
+ -0.956863 1.206479 0
+ -0.665644 1.133674 0
+ -0.457630 0.644842 0
+ -0.780051 0.728048 0
+ END$SEGS
+STRUCTURE 183 3 0 0 0 A 2 541.000000 168.000000 0 0.000000 "Sm Fall 6"" Fall-6b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -1.814837 1.721689 0
+ -1.557388 2.695167 0
+ -0.978128 2.944571 0
+ -0.326461 2.140043 0
+ 0.421750 2.839982 0
+ 1.322821 2.413583 0
+ 1.113644 -2.373356 0
+ 0.260844 -2.823892 0
+ -0.093148 -2.276813 0
+ -0.809177 -2.284858 0
+ -0.986173 -2.839982 0
+ -2.088376 -2.485990 0
+ -1.951606 -1.834323 0
+ -2.860722 -1.769961 0
+ -3.327348 -0.828663 0
+ -2.812451 -0.297675 0
+ -3.488254 0.000000 0
+ -3.311258 0.675803 0
+ -2.595228 0.933252 0
+ -3.110126 1.351606 0
+ -2.691772 2.107862 0
+ F4 6815744 0.000000 28 0
+ -2.510126 1.351606 0
+ -2.091772 2.107862 0
+ -1.214837 1.721689 0
+ -0.957388 2.695167 0
+ -0.378128 2.944571 0
+ 0.273539 2.140043 0
+ 1.021750 2.839982 0
+ 1.922821 2.413583 0
+ 1.584919 1.520557 0
+ 2.662986 1.222882 0
+ 2.823892 0.209177 0
+ 2.260722 -0.313766 0
+ 2.791711 -1.070022 0
+ 2.389447 -1.745825 0
+ 1.737780 -1.504467 0
+ 1.713644 -2.373356 0
+ 0.860844 -2.823892 0
+ 0.506852 -2.276813 0
+ -0.209177 -2.284858 0
+ -0.386173 -2.839982 0
+ -1.488376 -2.485990 0
+ -1.351606 -1.834323 0
+ -2.260722 -1.769961 0
+ -2.727348 -0.828663 0
+ -2.212451 -0.297675 0
+ -2.888254 0.000000 0
+ -2.711258 0.675803 0
+ -1.995228 0.933252 0
+ F4 12410368 0.000000 26 0
+ 0.402264 1.882594 0
+ 0.965433 2.445764 0
+ 1.504467 2.115907 0
+ 1.263108 1.174610 0
+ 2.341175 0.876935 0
+ 2.413583 0.410309 0
+ 1.737780 -0.056317 0
+ 2.325085 -0.941297 0
+ 2.067636 -1.247018 0
+ 1.424014 -1.230927 0
+ 1.391833 -1.971093 0
+ 0.836709 -2.276813 0
+ 0.378128 -1.737780 0
+ -0.313766 -1.834323 0
+ -0.474671 -2.204406 0
+ -1.061976 -2.051545 0
+ -1.070022 -1.407923 0
+ -1.560783 -1.391833 0
+ -1.882594 -0.748211 0
+ -1.311380 -0.209177 0
+ -1.850413 0.072407 0
+ -1.761915 0.458581 0
+ -0.901071 0.619486 0
+ -1.230927 1.206791 0
+ -0.691894 1.625146 0
+ -0.474671 2.099817 0
+ L3 12410368 0.000000 -0.510387 2.479025 0 -0.218737 2.260287 0
+ L3 12410368 0.000000 -2.041550 1.385337 0 -1.822812 1.166600 0
+ L3 12410368 0.000000 -1.531162 1.239512 0 -1.239512 1.020775 0
+ L3 12410368 0.000000 -2.479025 0.583300 0 -1.968637 0.583300 0
+ L3 12410368 0.000000 -1.676987 -0.218737 0 -2.041550 -0.145825 0
+ L3 12410368 0.000000 -2.260287 -1.093687 0 -1.895725 -1.166600 0
+ L3 12410368 0.000000 -1.093687 -2.187375 0 -1.239512 -2.406112 0
+ L3 12410368 0.000000 -0.072912 -1.968637 0 0.000000 -2.187375 0
+ L3 12410368 0.000000 0.947862 -2.333200 0 0.874950 -2.624850 0
+ L3 12410368 0.000000 2.187375 -1.385337 0 2.333200 -1.604075 0
+ L3 12410368 0.000000 -2.041550 1.822812 0 -1.895725 1.531162 0
+ L3 14915328 0.000000 -2.333200 1.385337 0 -2.114462 1.531162 0
+ L3 16755200 0.000000 2.551937 0.218737 0 2.260287 0.145825 0
+ L3 16755200 0.000000 -0.729125 2.333200 0 -0.802037 1.968637 0
+ L3 16755200 0.000000 -1.676987 1.531162 0 -1.166600 1.531162 0
+ L3 16755200 0.000000 -1.385337 0.802037 0 -1.822812 0.729125 0
+ L3 16755200 0.000000 -2.479025 0.145825 0 -2.041550 0.364562 0
+ L3 16755200 0.000000 -1.968637 -0.510387 0 -2.479025 -0.802037 0
+ L3 16755200 0.000000 -1.749900 -1.676987 0 -1.604075 -1.458250 0
+ L3 16755200 0.000000 -0.656212 -2.333200 0 -0.510387 -2.551937 0
+ L3 16755200 0.000000 0.364562 -1.968637 0 0.145825 -2.114462 0
+ L3 16755200 0.000000 1.385337 -2.187375 0 1.604075 -2.260287 0
+ L3 16755200 0.000000 2.551937 -1.020775 0 2.333200 -1.093687 0
+ F4 6815744 0.000000 5 0
+ -0.436829 1.383291 0
+ -0.395226 1.144075 0
+ 0.052003 0.946462 0
+ 0.176812 1.237681 0
+ -0.052003 1.456096 0
+ F4 6815744 0.000000 4 0
+ 1.424894 -0.052003 0
+ 0.884058 -0.176812 0
+ 0.769651 0.093606 0
+ 1.508099 0.135209 0
+ F4 6815744 0.000000 4 0
+ 0.343223 -1.383291 0
+ 0.072805 -1.175277 0
+ 0.145610 -0.738448 0
+ 0.312020 -0.800853 0
+ F4 6815744 0.000000 5 0
+ -1.092072 -0.124808 0
+ -0.946462 -0.020801 0
+ -0.447229 0.104007 0
+ -0.176812 -0.176812 0
+ -0.800853 -0.270418 0
+ L3 6815744 0.000000 1.020775 1.385337 0 0.656212 1.239512 0
+ L3 6815744 0.000000 0.656212 1.895725 0 0.510387 1.604075 0
+ L3 6815744 0.000000 -0.291650 1.822812 0 -0.145825 1.604075 0
+ L3 6815744 0.000000 -0.656212 0.802037 0 -0.291650 0.947862 0
+ L3 6815744 0.000000 -0.874950 0.437475 0 -0.583300 0.218737 0
+ L3 6815744 0.000000 -1.676987 0.145825 0 -1.312425 0.000000 0
+ L3 6815744 0.000000 -1.166600 -0.364562 0 -1.458250 -0.656212 0
+ L3 6815744 0.000000 -0.291650 -1.312425 0 -0.364562 -1.749900 0
+ L3 6815744 0.000000 -0.218737 -0.802037 0 -0.145825 -1.093687 0
+ L3 6815744 0.000000 0.510387 -1.312425 0 0.656212 -1.749900 0
+ L3 6815744 0.000000 0.874950 -1.239512 0 1.312425 -1.458250 0
+ L3 6815744 0.000000 1.968637 -0.510387 0 1.604075 -0.583300 0
+ L3 6815744 0.000000 1.968637 -1.166600 0 1.604075 -1.020775 0
+ L3 6815744 0.000000 2.114462 -0.874950 0 1.749900 -0.802037 0
+ L3 6815744 0.000000 0.874950 -2.114462 0 0.802037 -1.822812 0
+ L3 6815744 0.000000 1.312425 -1.895725 0 1.093687 -1.676987 0
+ L3 6815744 0.000000 2.187375 0.364562 0 1.749900 0.437475 0
+ L3 6815744 0.000000 2.187375 0.729125 0 1.822812 0.656212 0
+ L3 6815744 0.000000 -0.729125 -2.041550 0 -0.656212 -1.749900 0
+ L3 6815744 0.000000 -1.604075 -1.020775 0 -1.385337 -0.874950 0
+ L3 6815744 0.000000 1.020775 2.333200 0 0.874950 1.968637 0
+ L3 6815744 0.000000 1.312425 2.114462 0 1.093687 1.895725 0
+ L3 11184640 0.000000 1.020775 -1.968637 0 0.874950 -1.531162 0
+ L3 14915328 0.000000 1.166600 1.749900 0 0.947862 1.604075 0
+ L3 14915328 0.000000 -1.312425 0.364562 0 -1.020775 0.218737 0
+ F4 16755200 0.000000 4 0
+ 1.123274 1.154476 0
+ 0.665644 1.019267 0
+ 0.613640 0.676044 0
+ 0.915260 0.800853 0
+ F4 16755200 0.000000 3 0
+ 1.268883 -1.040068 0
+ 1.123274 -0.717647 0
+ 0.894459 -0.915260 0
+ F4 16755200 0.000000 4 0
+ -0.956863 -1.206479 0
+ -0.665644 -1.133674 0
+ -0.457630 -0.644842 0
+ -0.780051 -0.728048 0
+ L3 16755200 0.000000 0.145825 1.604075 0 0.291650 1.385337 0
+ L3 16755200 0.000000 -0.874950 1.166600 0 -0.583300 1.166600 0
+ L3 16755200 0.000000 -1.312425 -1.020775 0 -1.093687 -0.729125 0
+ L3 16755200 0.000000 -0.802037 -1.604075 0 -0.583300 -1.312425 0
+ L3 16755200 0.000000 1.822812 0.947862 0 1.458250 0.729125 0
+ END$SEGS
+STRUCTURE 184 3 0 0 0 A 2 544.500000 158.000000 0 0.000000 "Sm Fall 6"" Fall-6b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -1.814837 1.721689 0
+ -1.557388 2.695167 0
+ -0.978128 2.944571 0
+ -0.326461 2.140043 0
+ 0.421750 2.839982 0
+ 1.322821 2.413583 0
+ 1.113644 -2.373356 0
+ 0.260844 -2.823892 0
+ -0.093148 -2.276813 0
+ -0.809177 -2.284858 0
+ -0.986173 -2.839982 0
+ -2.088376 -2.485990 0
+ -1.951606 -1.834323 0
+ -2.860722 -1.769961 0
+ -3.327348 -0.828663 0
+ -2.812451 -0.297675 0
+ -3.488254 0.000000 0
+ -3.311258 0.675803 0
+ -2.595228 0.933252 0
+ -3.110126 1.351606 0
+ -2.691772 2.107862 0
+ F4 6815744 0.000000 28 0
+ -2.510126 1.351606 0
+ -2.091772 2.107862 0
+ -1.214837 1.721689 0
+ -0.957388 2.695167 0
+ -0.378128 2.944571 0
+ 0.273539 2.140043 0
+ 1.021750 2.839982 0
+ 1.922821 2.413583 0
+ 1.584919 1.520557 0
+ 2.662986 1.222882 0
+ 2.823892 0.209177 0
+ 2.260722 -0.313766 0
+ 2.791711 -1.070022 0
+ 2.389447 -1.745825 0
+ 1.737780 -1.504467 0
+ 1.713644 -2.373356 0
+ 0.860844 -2.823892 0
+ 0.506852 -2.276813 0
+ -0.209177 -2.284858 0
+ -0.386173 -2.839982 0
+ -1.488376 -2.485990 0
+ -1.351606 -1.834323 0
+ -2.260722 -1.769961 0
+ -2.727348 -0.828663 0
+ -2.212451 -0.297675 0
+ -2.888254 0.000000 0
+ -2.711258 0.675803 0
+ -1.995228 0.933252 0
+ F4 12410368 0.000000 26 0
+ 0.402264 1.882594 0
+ 0.965433 2.445764 0
+ 1.504467 2.115907 0
+ 1.263108 1.174610 0
+ 2.341175 0.876935 0
+ 2.413583 0.410309 0
+ 1.737780 -0.056317 0
+ 2.325085 -0.941297 0
+ 2.067636 -1.247018 0
+ 1.424014 -1.230927 0
+ 1.391833 -1.971093 0
+ 0.836709 -2.276813 0
+ 0.378128 -1.737780 0
+ -0.313766 -1.834323 0
+ -0.474671 -2.204406 0
+ -1.061976 -2.051545 0
+ -1.070022 -1.407923 0
+ -1.560783 -1.391833 0
+ -1.882594 -0.748211 0
+ -1.311380 -0.209177 0
+ -1.850413 0.072407 0
+ -1.761915 0.458581 0
+ -0.901071 0.619486 0
+ -1.230927 1.206791 0
+ -0.691894 1.625146 0
+ -0.474671 2.099817 0
+ L3 12410368 0.000000 -0.510387 2.479025 0 -0.218737 2.260287 0
+ L3 12410368 0.000000 -2.041550 1.385337 0 -1.822812 1.166600 0
+ L3 12410368 0.000000 -1.531162 1.239512 0 -1.239512 1.020775 0
+ L3 12410368 0.000000 -2.479025 0.583300 0 -1.968637 0.583300 0
+ L3 12410368 0.000000 -1.676987 -0.218737 0 -2.041550 -0.145825 0
+ L3 12410368 0.000000 -2.260287 -1.093687 0 -1.895725 -1.166600 0
+ L3 12410368 0.000000 -1.093687 -2.187375 0 -1.239512 -2.406112 0
+ L3 12410368 0.000000 -0.072912 -1.968637 0 0.000000 -2.187375 0
+ L3 12410368 0.000000 0.947862 -2.333200 0 0.874950 -2.624850 0
+ L3 12410368 0.000000 2.187375 -1.385337 0 2.333200 -1.604075 0
+ L3 12410368 0.000000 -2.041550 1.822812 0 -1.895725 1.531162 0
+ L3 14915328 0.000000 -2.333200 1.385337 0 -2.114462 1.531162 0
+ L3 16755200 0.000000 2.551937 0.218737 0 2.260287 0.145825 0
+ L3 16755200 0.000000 -0.729125 2.333200 0 -0.802037 1.968637 0
+ L3 16755200 0.000000 -1.676987 1.531162 0 -1.166600 1.531162 0
+ L3 16755200 0.000000 -1.385337 0.802037 0 -1.822812 0.729125 0
+ L3 16755200 0.000000 -2.479025 0.145825 0 -2.041550 0.364562 0
+ L3 16755200 0.000000 -1.968637 -0.510387 0 -2.479025 -0.802037 0
+ L3 16755200 0.000000 -1.749900 -1.676987 0 -1.604075 -1.458250 0
+ L3 16755200 0.000000 -0.656212 -2.333200 0 -0.510387 -2.551937 0
+ L3 16755200 0.000000 0.364562 -1.968637 0 0.145825 -2.114462 0
+ L3 16755200 0.000000 1.385337 -2.187375 0 1.604075 -2.260287 0
+ L3 16755200 0.000000 2.551937 -1.020775 0 2.333200 -1.093687 0
+ F4 6815744 0.000000 5 0
+ -0.436829 1.383291 0
+ -0.395226 1.144075 0
+ 0.052003 0.946462 0
+ 0.176812 1.237681 0
+ -0.052003 1.456096 0
+ F4 6815744 0.000000 4 0
+ 1.424894 -0.052003 0
+ 0.884058 -0.176812 0
+ 0.769651 0.093606 0
+ 1.508099 0.135209 0
+ F4 6815744 0.000000 4 0
+ 0.343223 -1.383291 0
+ 0.072805 -1.175277 0
+ 0.145610 -0.738448 0
+ 0.312020 -0.800853 0
+ F4 6815744 0.000000 5 0
+ -1.092072 -0.124808 0
+ -0.946462 -0.020801 0
+ -0.447229 0.104007 0
+ -0.176812 -0.176812 0
+ -0.800853 -0.270418 0
+ L3 6815744 0.000000 1.020775 1.385337 0 0.656212 1.239512 0
+ L3 6815744 0.000000 0.656212 1.895725 0 0.510387 1.604075 0
+ L3 6815744 0.000000 -0.291650 1.822812 0 -0.145825 1.604075 0
+ L3 6815744 0.000000 -0.656212 0.802037 0 -0.291650 0.947862 0
+ L3 6815744 0.000000 -0.874950 0.437475 0 -0.583300 0.218737 0
+ L3 6815744 0.000000 -1.676987 0.145825 0 -1.312425 0.000000 0
+ L3 6815744 0.000000 -1.166600 -0.364562 0 -1.458250 -0.656212 0
+ L3 6815744 0.000000 -0.291650 -1.312425 0 -0.364562 -1.749900 0
+ L3 6815744 0.000000 -0.218737 -0.802037 0 -0.145825 -1.093687 0
+ L3 6815744 0.000000 0.510387 -1.312425 0 0.656212 -1.749900 0
+ L3 6815744 0.000000 0.874950 -1.239512 0 1.312425 -1.458250 0
+ L3 6815744 0.000000 1.968637 -0.510387 0 1.604075 -0.583300 0
+ L3 6815744 0.000000 1.968637 -1.166600 0 1.604075 -1.020775 0
+ L3 6815744 0.000000 2.114462 -0.874950 0 1.749900 -0.802037 0
+ L3 6815744 0.000000 0.874950 -2.114462 0 0.802037 -1.822812 0
+ L3 6815744 0.000000 1.312425 -1.895725 0 1.093687 -1.676987 0
+ L3 6815744 0.000000 2.187375 0.364562 0 1.749900 0.437475 0
+ L3 6815744 0.000000 2.187375 0.729125 0 1.822812 0.656212 0
+ L3 6815744 0.000000 -0.729125 -2.041550 0 -0.656212 -1.749900 0
+ L3 6815744 0.000000 -1.604075 -1.020775 0 -1.385337 -0.874950 0
+ L3 6815744 0.000000 1.020775 2.333200 0 0.874950 1.968637 0
+ L3 6815744 0.000000 1.312425 2.114462 0 1.093687 1.895725 0
+ L3 11184640 0.000000 1.020775 -1.968637 0 0.874950 -1.531162 0
+ L3 14915328 0.000000 1.166600 1.749900 0 0.947862 1.604075 0
+ L3 14915328 0.000000 -1.312425 0.364562 0 -1.020775 0.218737 0
+ F4 16755200 0.000000 4 0
+ 1.123274 1.154476 0
+ 0.665644 1.019267 0
+ 0.613640 0.676044 0
+ 0.915260 0.800853 0
+ F4 16755200 0.000000 3 0
+ 1.268883 -1.040068 0
+ 1.123274 -0.717647 0
+ 0.894459 -0.915260 0
+ F4 16755200 0.000000 4 0
+ -0.956863 -1.206479 0
+ -0.665644 -1.133674 0
+ -0.457630 -0.644842 0
+ -0.780051 -0.728048 0
+ L3 16755200 0.000000 0.145825 1.604075 0 0.291650 1.385337 0
+ L3 16755200 0.000000 -0.874950 1.166600 0 -0.583300 1.166600 0
+ L3 16755200 0.000000 -1.312425 -1.020775 0 -1.093687 -0.729125 0
+ L3 16755200 0.000000 -0.802037 -1.604075 0 -0.583300 -1.312425 0
+ L3 16755200 0.000000 1.822812 0.947862 0 1.458250 0.729125 0
+ END$SEGS
+STRUCTURE 185 3 0 0 0 A 2 544.000000 228.000000 0 0.000000 "Lg Fall 16"" Fall-16b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.839564 4.591171 0
+ -4.153034 7.187113 0
+ -2.608341 7.852189 0
+ -0.870562 5.706782 0
+ 1.124667 7.573286 0
+ 3.527522 6.436220 0
+ 2.969717 -6.328950 0
+ 0.695585 -7.530378 0
+ -0.248394 -6.071501 0
+ -2.157806 -6.092955 0
+ -2.629795 -7.573286 0
+ -5.569003 -6.629307 0
+ -5.204283 -4.891528 0
+ -7.628593 -4.719895 0
+ -8.872929 -2.209769 0
+ -7.499869 -0.793801 0
+ -9.302011 0.000000 0
+ -8.830021 1.802142 0
+ -6.920609 2.488672 0
+ -8.293669 3.604283 0
+ -7.178058 5.620966 0
+ F4 6815744 0.000000 28 0
+ -6.693669 3.604283 0
+ -5.578058 5.620966 0
+ -3.239564 4.591171 0
+ -2.553034 7.187113 0
+ -1.008341 7.852189 0
+ 0.729438 5.706782 0
+ 2.724667 7.573286 0
+ 5.127522 6.436220 0
+ 4.226451 4.054819 0
+ 7.101297 3.261018 0
+ 7.530378 0.557806 0
+ 6.028593 -0.836709 0
+ 7.444562 -2.853391 0
+ 6.371858 -4.655533 0
+ 4.634079 -4.011911 0
+ 4.569717 -6.328950 0
+ 2.295585 -7.530378 0
+ 1.351606 -6.071501 0
+ -0.557806 -6.092955 0
+ -1.029795 -7.573286 0
+ -3.969003 -6.629307 0
+ -3.604283 -4.891528 0
+ -6.028593 -4.719895 0
+ -7.272929 -2.209769 0
+ -5.899869 -0.793801 0
+ -7.702011 0.000000 0
+ -7.230021 1.802142 0
+ -5.320609 2.488672 0
+ F4 12410368 0.000000 26 0
+ 1.072703 5.020252 0
+ 2.574488 6.522037 0
+ 4.011911 5.642420 0
+ 3.368289 3.132294 0
+ 6.243134 2.338493 0
+ 6.436220 1.094157 0
+ 4.634079 -0.150178 0
+ 6.200226 -2.510126 0
+ 5.513696 -3.325381 0
+ 3.797370 -3.282472 0
+ 3.711554 -5.256247 0
+ 2.231223 -6.071501 0
+ 1.008341 -4.634079 0
+ -0.836709 -4.891528 0
+ -1.265790 -5.878415 0
+ -2.831937 -5.470787 0
+ -2.853391 -3.754462 0
+ -4.162089 -3.711554 0
+ -5.020252 -1.995228 0
+ -3.497013 -0.557806 0
+ -4.934436 0.193087 0
+ -4.698441 1.222882 0
+ -2.402856 1.651963 0
+ -3.282472 3.218110 0
+ -1.845050 4.333722 0
+ -1.265790 5.599512 0
+ L3 12410368 0.000000 -1.361033 6.610733 0 -0.583300 6.027433 0
+ L3 12410368 0.000000 -5.444133 3.694233 0 -4.860833 3.110933 0
+ L3 12410368 0.000000 -4.083100 3.305367 0 -3.305367 2.722067 0
+ L3 12410368 0.000000 -6.610733 1.555467 0 -5.249700 1.555467 0
+ L3 12410368 0.000000 -4.471967 -0.583300 0 -5.444133 -0.388867 0
+ L3 12410368 0.000000 -6.027433 -2.916500 0 -5.055267 -3.110933 0
+ L3 12410368 0.000000 -2.916500 -5.833000 0 -3.305367 -6.416300 0
+ L3 12410368 0.000000 -0.194433 -5.249700 0 0.000000 -5.833000 0
+ L3 12410368 0.000000 2.527633 -6.221867 0 2.333200 -6.999600 0
+ L3 12410368 0.000000 5.833000 -3.694233 0 6.221867 -4.277533 0
+ L3 12410368 0.000000 -5.444133 4.860833 0 -5.055267 4.083100 0
+ L3 14915328 0.000000 -6.221867 3.694233 0 -5.638567 4.083100 0
+ L3 16755200 0.000000 6.805167 0.583300 0 6.027433 0.388867 0
+ L3 16755200 0.000000 -1.944333 6.221867 0 -2.138767 5.249700 0
+ L3 16755200 0.000000 -4.471967 4.083100 0 -3.110933 4.083100 0
+ L3 16755200 0.000000 -3.694233 2.138767 0 -4.860833 1.944333 0
+ L3 16755200 0.000000 -6.610733 0.388867 0 -5.444133 0.972167 0
+ L3 16755200 0.000000 -5.249700 -1.361033 0 -6.610733 -2.138767 0
+ L3 16755200 0.000000 -4.666400 -4.471967 0 -4.277533 -3.888667 0
+ L3 16755200 0.000000 -1.749900 -6.221867 0 -1.361033 -6.805167 0
+ L3 16755200 0.000000 0.972167 -5.249700 0 0.388867 -5.638567 0
+ L3 16755200 0.000000 3.694233 -5.833000 0 4.277533 -6.027433 0
+ L3 16755200 0.000000 6.805167 -2.722067 0 6.221867 -2.916500 0
+ F4 6815744 0.000000 5 0
+ -1.164876 3.688776 0
+ -1.053936 3.050867 0
+ 0.138676 2.523899 0
+ 0.471498 3.300483 0
+ -0.138676 3.882922 0
+ F4 6815744 0.000000 4 0
+ 3.799716 -0.138676 0
+ 2.357488 -0.471498 0
+ 2.052401 0.249616 0
+ 4.021597 0.360557 0
+ F4 6815744 0.000000 4 0
+ 0.915260 -3.688776 0
+ 0.194146 -3.134072 0
+ 0.388292 -1.969196 0
+ 0.832055 -2.135607 0
+ F4 6815744 0.000000 5 0
+ -2.912191 -0.332822 0
+ -2.523899 -0.055470 0
+ -1.192612 0.277352 0
+ -0.471498 -0.471498 0
+ -2.135607 -0.721114 0
+ L3 6815744 0.000000 2.722067 3.694233 0 1.749900 3.305367 0
+ L3 6815744 0.000000 1.749900 5.055267 0 1.361033 4.277533 0
+ L3 6815744 0.000000 -0.777733 4.860833 0 -0.388867 4.277533 0
+ L3 6815744 0.000000 -1.749900 2.138767 0 -0.777733 2.527633 0
+ L3 6815744 0.000000 -2.333200 1.166600 0 -1.555467 0.583300 0
+ L3 6815744 0.000000 -4.471967 0.388867 0 -3.499800 0.000000 0
+ L3 6815744 0.000000 -3.110933 -0.972167 0 -3.888667 -1.749900 0
+ L3 6815744 0.000000 -0.777733 -3.499800 0 -0.972167 -4.666400 0
+ L3 6815744 0.000000 -0.583300 -2.138767 0 -0.388867 -2.916500 0
+ L3 6815744 0.000000 1.361033 -3.499800 0 1.749900 -4.666400 0
+ L3 6815744 0.000000 2.333200 -3.305367 0 3.499800 -3.888667 0
+ L3 6815744 0.000000 5.249700 -1.361033 0 4.277533 -1.555467 0
+ L3 6815744 0.000000 5.249700 -3.110933 0 4.277533 -2.722067 0
+ L3 6815744 0.000000 5.638567 -2.333200 0 4.666400 -2.138767 0
+ L3 6815744 0.000000 2.333200 -5.638567 0 2.138767 -4.860833 0
+ L3 6815744 0.000000 3.499800 -5.055267 0 2.916500 -4.471967 0
+ L3 6815744 0.000000 5.833000 0.972167 0 4.666400 1.166600 0
+ L3 6815744 0.000000 5.833000 1.944333 0 4.860833 1.749900 0
+ L3 6815744 0.000000 -1.944333 -5.444133 0 -1.749900 -4.666400 0
+ L3 6815744 0.000000 -4.277533 -2.722067 0 -3.694233 -2.333200 0
+ L3 6815744 0.000000 2.722067 6.221867 0 2.333200 5.249700 0
+ L3 6815744 0.000000 3.499800 5.638567 0 2.916500 5.055267 0
+ L3 11184640 0.000000 2.722067 -5.249700 0 2.333200 -4.083100 0
+ L3 14915328 0.000000 3.110933 4.666400 0 2.527633 4.277533 0
+ L3 14915328 0.000000 -3.499800 0.972167 0 -2.722067 0.583300 0
+ F4 16755200 0.000000 4 0
+ 2.995397 3.078602 0
+ 1.775050 2.718045 0
+ 1.636374 1.802785 0
+ 2.440694 2.135607 0
+ F4 16755200 0.000000 3 0
+ 3.383689 -2.773515 0
+ 2.995397 -1.913726 0
+ 2.385223 -2.440694 0
+ F4 16755200 0.000000 4 0
+ -2.551634 -3.217278 0
+ -1.775050 -3.023132 0
+ -1.220347 -1.719580 0
+ -2.080137 -1.941461 0
+ L3 16755200 0.000000 0.388867 4.277533 0 0.777733 3.694233 0
+ L3 16755200 0.000000 -2.333200 3.110933 0 -1.555467 3.110933 0
+ L3 16755200 0.000000 -3.499800 -2.722067 0 -2.916500 -1.944333 0
+ L3 16755200 0.000000 -2.138767 -4.277533 0 -1.555467 -3.499800 0
+ L3 16755200 0.000000 4.860833 2.527633 0 3.888667 1.944333 0
+ END$SEGS
+STRUCTURE 186 3 0 0 0 A 2 588.500000 196.000000 0 0.000000 "Lg Fall 16"" Fall-16b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -4.839564 4.591171 0
+ -4.153034 7.187113 0
+ -2.608341 7.852189 0
+ -0.870562 5.706782 0
+ 1.124667 7.573286 0
+ 3.527522 6.436220 0
+ 2.969717 -6.328950 0
+ 0.695585 -7.530378 0
+ -0.248394 -6.071501 0
+ -2.157806 -6.092955 0
+ -2.629795 -7.573286 0
+ -5.569003 -6.629307 0
+ -5.204283 -4.891528 0
+ -7.628593 -4.719895 0
+ -8.872929 -2.209769 0
+ -7.499869 -0.793801 0
+ -9.302011 0.000000 0
+ -8.830021 1.802142 0
+ -6.920609 2.488672 0
+ -8.293669 3.604283 0
+ -7.178058 5.620966 0
+ F4 6815744 0.000000 28 0
+ -6.693669 3.604283 0
+ -5.578058 5.620966 0
+ -3.239564 4.591171 0
+ -2.553034 7.187113 0
+ -1.008341 7.852189 0
+ 0.729438 5.706782 0
+ 2.724667 7.573286 0
+ 5.127522 6.436220 0
+ 4.226451 4.054819 0
+ 7.101297 3.261018 0
+ 7.530378 0.557806 0
+ 6.028593 -0.836709 0
+ 7.444562 -2.853391 0
+ 6.371858 -4.655533 0
+ 4.634079 -4.011911 0
+ 4.569717 -6.328950 0
+ 2.295585 -7.530378 0
+ 1.351606 -6.071501 0
+ -0.557806 -6.092955 0
+ -1.029795 -7.573286 0
+ -3.969003 -6.629307 0
+ -3.604283 -4.891528 0
+ -6.028593 -4.719895 0
+ -7.272929 -2.209769 0
+ -5.899869 -0.793801 0
+ -7.702011 0.000000 0
+ -7.230021 1.802142 0
+ -5.320609 2.488672 0
+ F4 12410368 0.000000 26 0
+ 1.072703 5.020252 0
+ 2.574488 6.522037 0
+ 4.011911 5.642420 0
+ 3.368289 3.132294 0
+ 6.243134 2.338493 0
+ 6.436220 1.094157 0
+ 4.634079 -0.150178 0
+ 6.200226 -2.510126 0
+ 5.513696 -3.325381 0
+ 3.797370 -3.282472 0
+ 3.711554 -5.256247 0
+ 2.231223 -6.071501 0
+ 1.008341 -4.634079 0
+ -0.836709 -4.891528 0
+ -1.265790 -5.878415 0
+ -2.831937 -5.470787 0
+ -2.853391 -3.754462 0
+ -4.162089 -3.711554 0
+ -5.020252 -1.995228 0
+ -3.497013 -0.557806 0
+ -4.934436 0.193087 0
+ -4.698441 1.222882 0
+ -2.402856 1.651963 0
+ -3.282472 3.218110 0
+ -1.845050 4.333722 0
+ -1.265790 5.599512 0
+ L3 12410368 0.000000 -1.361033 6.610733 0 -0.583300 6.027433 0
+ L3 12410368 0.000000 -5.444133 3.694233 0 -4.860833 3.110933 0
+ L3 12410368 0.000000 -4.083100 3.305367 0 -3.305367 2.722067 0
+ L3 12410368 0.000000 -6.610733 1.555467 0 -5.249700 1.555467 0
+ L3 12410368 0.000000 -4.471967 -0.583300 0 -5.444133 -0.388867 0
+ L3 12410368 0.000000 -6.027433 -2.916500 0 -5.055267 -3.110933 0
+ L3 12410368 0.000000 -2.916500 -5.833000 0 -3.305367 -6.416300 0
+ L3 12410368 0.000000 -0.194433 -5.249700 0 0.000000 -5.833000 0
+ L3 12410368 0.000000 2.527633 -6.221867 0 2.333200 -6.999600 0
+ L3 12410368 0.000000 5.833000 -3.694233 0 6.221867 -4.277533 0
+ L3 12410368 0.000000 -5.444133 4.860833 0 -5.055267 4.083100 0
+ L3 14915328 0.000000 -6.221867 3.694233 0 -5.638567 4.083100 0
+ L3 16755200 0.000000 6.805167 0.583300 0 6.027433 0.388867 0
+ L3 16755200 0.000000 -1.944333 6.221867 0 -2.138767 5.249700 0
+ L3 16755200 0.000000 -4.471967 4.083100 0 -3.110933 4.083100 0
+ L3 16755200 0.000000 -3.694233 2.138767 0 -4.860833 1.944333 0
+ L3 16755200 0.000000 -6.610733 0.388867 0 -5.444133 0.972167 0
+ L3 16755200 0.000000 -5.249700 -1.361033 0 -6.610733 -2.138767 0
+ L3 16755200 0.000000 -4.666400 -4.471967 0 -4.277533 -3.888667 0
+ L3 16755200 0.000000 -1.749900 -6.221867 0 -1.361033 -6.805167 0
+ L3 16755200 0.000000 0.972167 -5.249700 0 0.388867 -5.638567 0
+ L3 16755200 0.000000 3.694233 -5.833000 0 4.277533 -6.027433 0
+ L3 16755200 0.000000 6.805167 -2.722067 0 6.221867 -2.916500 0
+ F4 6815744 0.000000 5 0
+ -1.164876 3.688776 0
+ -1.053936 3.050867 0
+ 0.138676 2.523899 0
+ 0.471498 3.300483 0
+ -0.138676 3.882922 0
+ F4 6815744 0.000000 4 0
+ 3.799716 -0.138676 0
+ 2.357488 -0.471498 0
+ 2.052401 0.249616 0
+ 4.021597 0.360557 0
+ F4 6815744 0.000000 4 0
+ 0.915260 -3.688776 0
+ 0.194146 -3.134072 0
+ 0.388292 -1.969196 0
+ 0.832055 -2.135607 0
+ F4 6815744 0.000000 5 0
+ -2.912191 -0.332822 0
+ -2.523899 -0.055470 0
+ -1.192612 0.277352 0
+ -0.471498 -0.471498 0
+ -2.135607 -0.721114 0
+ L3 6815744 0.000000 2.722067 3.694233 0 1.749900 3.305367 0
+ L3 6815744 0.000000 1.749900 5.055267 0 1.361033 4.277533 0
+ L3 6815744 0.000000 -0.777733 4.860833 0 -0.388867 4.277533 0
+ L3 6815744 0.000000 -1.749900 2.138767 0 -0.777733 2.527633 0
+ L3 6815744 0.000000 -2.333200 1.166600 0 -1.555467 0.583300 0
+ L3 6815744 0.000000 -4.471967 0.388867 0 -3.499800 0.000000 0
+ L3 6815744 0.000000 -3.110933 -0.972167 0 -3.888667 -1.749900 0
+ L3 6815744 0.000000 -0.777733 -3.499800 0 -0.972167 -4.666400 0
+ L3 6815744 0.000000 -0.583300 -2.138767 0 -0.388867 -2.916500 0
+ L3 6815744 0.000000 1.361033 -3.499800 0 1.749900 -4.666400 0
+ L3 6815744 0.000000 2.333200 -3.305367 0 3.499800 -3.888667 0
+ L3 6815744 0.000000 5.249700 -1.361033 0 4.277533 -1.555467 0
+ L3 6815744 0.000000 5.249700 -3.110933 0 4.277533 -2.722067 0
+ L3 6815744 0.000000 5.638567 -2.333200 0 4.666400 -2.138767 0
+ L3 6815744 0.000000 2.333200 -5.638567 0 2.138767 -4.860833 0
+ L3 6815744 0.000000 3.499800 -5.055267 0 2.916500 -4.471967 0
+ L3 6815744 0.000000 5.833000 0.972167 0 4.666400 1.166600 0
+ L3 6815744 0.000000 5.833000 1.944333 0 4.860833 1.749900 0
+ L3 6815744 0.000000 -1.944333 -5.444133 0 -1.749900 -4.666400 0
+ L3 6815744 0.000000 -4.277533 -2.722067 0 -3.694233 -2.333200 0
+ L3 6815744 0.000000 2.722067 6.221867 0 2.333200 5.249700 0
+ L3 6815744 0.000000 3.499800 5.638567 0 2.916500 5.055267 0
+ L3 11184640 0.000000 2.722067 -5.249700 0 2.333200 -4.083100 0
+ L3 14915328 0.000000 3.110933 4.666400 0 2.527633 4.277533 0
+ L3 14915328 0.000000 -3.499800 0.972167 0 -2.722067 0.583300 0
+ F4 16755200 0.000000 4 0
+ 2.995397 3.078602 0
+ 1.775050 2.718045 0
+ 1.636374 1.802785 0
+ 2.440694 2.135607 0
+ F4 16755200 0.000000 3 0
+ 3.383689 -2.773515 0
+ 2.995397 -1.913726 0
+ 2.385223 -2.440694 0
+ F4 16755200 0.000000 4 0
+ -2.551634 -3.217278 0
+ -1.775050 -3.023132 0
+ -1.220347 -1.719580 0
+ -2.080137 -1.941461 0
+ L3 16755200 0.000000 0.388867 4.277533 0 0.777733 3.694233 0
+ L3 16755200 0.000000 -2.333200 3.110933 0 -1.555467 3.110933 0
+ L3 16755200 0.000000 -3.499800 -2.722067 0 -2.916500 -1.944333 0
+ L3 16755200 0.000000 -2.138767 -4.277533 0 -1.555467 -3.499800 0
+ L3 16755200 0.000000 4.860833 2.527633 0 3.888667 1.944333 0
+ END$SEGS
+STRUCTURE 187 3 0 0 0 A 2 565.500000 225.500000 0 0.000000 "Lg Fall 18"" Fall-18a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -5.444510 -5.165067 0
+ -4.672163 -8.085502 0
+ -2.934384 -8.833713 0
+ -0.979382 -6.420130 0
+ 1.265250 -8.519947 0
+ 3.968463 -7.240748 0
+ 3.340931 7.120069 0
+ 0.782533 8.471675 0
+ -0.279443 6.830439 0
+ -2.427531 6.854575 0
+ -2.958520 8.519947 0
+ -6.265128 7.457970 0
+ -5.854819 5.502969 0
+ -8.582167 5.309882 0
+ -9.982045 2.485990 0
+ -8.437352 0.893026 0
+ -10.464762 0.000000 0
+ -9.933774 -2.027409 0
+ -7.785685 -2.799756 0
+ -9.330378 -4.054819 0
+ -8.075315 -6.323587 0
+ F4 6842368 0.000000 28 0
+ -7.530378 -4.054819 0
+ -6.275315 -6.323587 0
+ -3.644510 -5.165067 0
+ -2.872163 -8.085502 0
+ -1.134384 -8.833713 0
+ 0.820618 -6.420130 0
+ 3.065250 -8.519947 0
+ 5.768463 -7.240748 0
+ 4.754758 -4.561671 0
+ 7.988959 -3.668646 0
+ 8.471675 -0.627531 0
+ 6.782167 0.941297 0
+ 8.375132 3.210065 0
+ 7.168341 5.237474 0
+ 5.213339 4.513400 0
+ 5.140931 7.120069 0
+ 2.582533 8.471675 0
+ 1.520557 6.830439 0
+ -0.627531 6.854575 0
+ -1.158520 8.519947 0
+ -4.465128 7.457970 0
+ -4.054819 5.502969 0
+ -6.782167 5.309882 0
+ -8.182045 2.485990 0
+ -6.637352 0.893026 0
+ -8.664762 0.000000 0
+ -8.133774 -2.027409 0
+ -5.985685 -2.799756 0
+ F4 12434688 0.000000 26 0
+ 1.206791 -5.647783 0
+ 2.896299 -7.337291 0
+ 4.513400 -6.347722 0
+ 3.789325 -3.523831 0
+ 7.023526 -2.630805 0
+ 7.240748 -1.230927 0
+ 5.213339 0.168951 0
+ 6.975254 2.823892 0
+ 6.202908 3.741053 0
+ 4.272041 3.692782 0
+ 4.175498 5.913278 0
+ 2.510126 6.830439 0
+ 1.134384 5.213339 0
+ -0.941297 5.502969 0
+ -1.424014 6.613217 0
+ -3.185929 6.154636 0
+ -3.210065 4.223770 0
+ -4.682350 4.175498 0
+ -5.647783 2.244632 0
+ -3.934140 0.627531 0
+ -5.551240 -0.217222 0
+ -5.285746 -1.375742 0
+ -2.703213 -1.858459 0
+ -3.692782 -3.620374 0
+ -2.075681 -4.875437 0
+ -1.424014 -6.299451 0
+ L3 12434688 0.000000 -2.187375 -6.999600 0 -2.406112 -5.905912 0
+ L3 12434688 0.000000 -4.593487 -3.718537 0 -3.718537 -3.062325 0
+ L3 12434688 0.000000 -7.437075 -0.437475 0 -6.124650 -1.093687 0
+ L3 12434688 0.000000 -5.030962 0.656212 0 -6.124650 0.437475 0
+ L3 12434688 0.000000 -6.780862 3.281062 0 -5.687175 3.499800 0
+ L3 12434688 0.000000 -3.281062 6.562125 0 -3.718537 7.218337 0
+ L3 12434688 0.000000 1.093687 5.905912 0 0.437475 6.343387 0
+ L3 12434688 0.000000 4.156012 6.562125 0 4.812225 6.780862 0
+ L3 12434688 0.000000 7.655812 3.062325 0 6.999600 3.281062 0
+ L3 12434688 0.000000 -6.124650 -5.468437 0 -5.687175 -4.593487 0
+ L3 12434688 0.000000 -6.999600 -4.156012 0 -6.343387 -4.593487 0
+ L3 16755200 0.000000 -1.531162 -7.437075 0 -0.656212 -6.780862 0
+ L3 16755200 0.000000 -5.030962 -4.593487 0 -3.499800 -4.593487 0
+ L3 16755200 0.000000 -6.124650 -4.156012 0 -5.468437 -3.499800 0
+ L3 16755200 0.000000 -4.156012 -2.406112 0 -5.468437 -2.187375 0
+ L3 16755200 0.000000 -7.437075 -1.749900 0 -5.905912 -1.749900 0
+ L3 16755200 0.000000 -5.905912 1.531162 0 -7.437075 2.406112 0
+ L3 16755200 0.000000 -5.249700 5.030962 0 -4.812225 4.374750 0
+ L3 16755200 0.000000 -1.968637 6.999600 0 -1.531162 7.655812 0
+ L3 16755200 0.000000 -0.218737 5.905912 0 0.000000 6.562125 0
+ L3 16755200 0.000000 2.843587 6.999600 0 2.624850 7.874550 0
+ L3 16755200 0.000000 6.562125 4.156012 0 6.999600 4.812225 0
+ L3 16755200 0.000000 7.655812 -0.656212 0 6.780862 -0.437475 0
+ F4 6842368 0.000000 4 0
+ 3.369821 -3.463427 0
+ 1.996931 -3.057801 0
+ 1.840921 -2.028133 0
+ 2.745780 -2.402558 0
+ F4 6842368 0.000000 4 0
+ 4.274681 0.156010 0
+ 2.652174 0.530435 0
+ 2.308952 -0.280818 0
+ 4.524297 -0.405627 0
+ F4 6842368 0.000000 4 0
+ 1.029668 4.149872 0
+ 0.218414 3.525832 0
+ 0.436829 2.215345 0
+ 0.936061 2.402558 0
+ F4 6842368 0.000000 5 0
+ -3.276215 0.374425 0
+ -2.839386 0.062404 0
+ -1.341688 -0.312020 0
+ -0.530435 0.530435 0
+ -2.402558 0.811253 0
+ L3 6842368 0.000000 0.437475 -4.812225 0 0.874950 -4.156012 0
+ L3 6842368 0.000000 3.062325 -4.156012 0 1.968637 -3.718537 0
+ L3 6842368 0.000000 3.499800 -5.249700 0 2.843587 -4.812225 0
+ L3 6842368 0.000000 1.968637 -5.687175 0 1.531162 -4.812225 0
+ L3 6842368 0.000000 -0.874950 -5.468437 0 -0.437475 -4.812225 0
+ L3 6842368 0.000000 -2.624850 -3.499800 0 -1.749900 -3.499800 0
+ L3 6842368 0.000000 -1.968637 -2.406112 0 -0.874950 -2.843587 0
+ L3 6842368 0.000000 -2.624850 -1.312425 0 -1.749900 -0.656212 0
+ L3 6842368 0.000000 -3.937275 -1.093687 0 -3.062325 -0.656212 0
+ L3 6842368 0.000000 -5.030962 -0.437475 0 -3.937275 0.000000 0
+ L3 6842368 0.000000 -3.499800 1.093687 0 -4.374750 1.968637 0
+ L3 6842368 0.000000 -3.937275 3.062325 0 -3.281062 2.187375 0
+ L3 6842368 0.000000 -2.406112 4.812225 0 -1.749900 3.937275 0
+ L3 6842368 0.000000 -0.874950 3.937275 0 -1.093687 5.249700 0
+ L3 6842368 0.000000 -0.656212 2.406112 0 -0.437475 3.281062 0
+ L3 6842368 0.000000 1.531162 3.937275 0 1.968637 5.249700 0
+ L3 6842368 0.000000 2.624850 3.718537 0 3.937275 4.374750 0
+ L3 6842368 0.000000 5.905912 1.531162 0 4.812225 1.749900 0
+ L3 6842368 0.000000 5.905912 3.499800 0 4.812225 3.062325 0
+ L3 6842368 0.000000 6.343387 2.624850 0 5.249700 2.406112 0
+ L3 6842368 0.000000 2.624850 6.343387 0 2.406112 5.468437 0
+ L3 6842368 0.000000 3.937275 5.687175 0 3.281062 5.030962 0
+ L3 6842368 0.000000 3.062325 5.905912 0 2.624850 4.593487 0
+ L3 6842368 0.000000 6.562125 -1.093687 0 5.249700 -1.312425 0
+ L3 6842368 0.000000 5.468437 -2.843587 0 4.374750 -2.187375 0
+ L3 6842368 0.000000 6.562125 -2.187375 0 5.468437 -1.968637 0
+ L3 6842368 0.000000 -2.187375 6.124650 0 -1.968637 5.249700 0
+ L3 6842368 0.000000 -4.812225 3.062325 0 -4.156012 2.624850 0
+ L3 6842368 0.000000 3.062325 -6.999600 0 2.624850 -5.905912 0
+ L3 6842368 0.000000 3.937275 -6.343387 0 3.281062 -5.687175 0
+ F4 16755200 0.000000 5 0
+ -1.310486 -4.149872 0
+ -1.185678 -3.432225 0
+ 0.156010 -2.839386 0
+ 0.530435 -3.713044 0
+ -0.156010 -4.368287 0
+ F4 16755200 0.000000 3 0
+ 3.806650 3.120205 0
+ 3.369821 2.152941 0
+ 2.683376 2.745780 0
+ F4 16755200 0.000000 4 0
+ -2.870588 3.619438 0
+ -1.996931 3.401023 0
+ -1.372890 1.934527 0
+ -2.340154 2.184143 0
+ END$SEGS
+STRUCTURE 188 3 0 0 0 A 2 587.500000 218.500000 0 0.000000 "Lg Fall 18"" Fall-18a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -5.444510 -5.165067 0
+ -4.672163 -8.085502 0
+ -2.934384 -8.833713 0
+ -0.979382 -6.420130 0
+ 1.265250 -8.519947 0
+ 3.968463 -7.240748 0
+ 3.340931 7.120069 0
+ 0.782533 8.471675 0
+ -0.279443 6.830439 0
+ -2.427531 6.854575 0
+ -2.958520 8.519947 0
+ -6.265128 7.457970 0
+ -5.854819 5.502969 0
+ -8.582167 5.309882 0
+ -9.982045 2.485990 0
+ -8.437352 0.893026 0
+ -10.464762 0.000000 0
+ -9.933774 -2.027409 0
+ -7.785685 -2.799756 0
+ -9.330378 -4.054819 0
+ -8.075315 -6.323587 0
+ F4 6842368 0.000000 28 0
+ -7.530378 -4.054819 0
+ -6.275315 -6.323587 0
+ -3.644510 -5.165067 0
+ -2.872163 -8.085502 0
+ -1.134384 -8.833713 0
+ 0.820618 -6.420130 0
+ 3.065250 -8.519947 0
+ 5.768463 -7.240748 0
+ 4.754758 -4.561671 0
+ 7.988959 -3.668646 0
+ 8.471675 -0.627531 0
+ 6.782167 0.941297 0
+ 8.375132 3.210065 0
+ 7.168341 5.237474 0
+ 5.213339 4.513400 0
+ 5.140931 7.120069 0
+ 2.582533 8.471675 0
+ 1.520557 6.830439 0
+ -0.627531 6.854575 0
+ -1.158520 8.519947 0
+ -4.465128 7.457970 0
+ -4.054819 5.502969 0
+ -6.782167 5.309882 0
+ -8.182045 2.485990 0
+ -6.637352 0.893026 0
+ -8.664762 0.000000 0
+ -8.133774 -2.027409 0
+ -5.985685 -2.799756 0
+ F4 12434688 0.000000 26 0
+ 1.206791 -5.647783 0
+ 2.896299 -7.337291 0
+ 4.513400 -6.347722 0
+ 3.789325 -3.523831 0
+ 7.023526 -2.630805 0
+ 7.240748 -1.230927 0
+ 5.213339 0.168951 0
+ 6.975254 2.823892 0
+ 6.202908 3.741053 0
+ 4.272041 3.692782 0
+ 4.175498 5.913278 0
+ 2.510126 6.830439 0
+ 1.134384 5.213339 0
+ -0.941297 5.502969 0
+ -1.424014 6.613217 0
+ -3.185929 6.154636 0
+ -3.210065 4.223770 0
+ -4.682350 4.175498 0
+ -5.647783 2.244632 0
+ -3.934140 0.627531 0
+ -5.551240 -0.217222 0
+ -5.285746 -1.375742 0
+ -2.703213 -1.858459 0
+ -3.692782 -3.620374 0
+ -2.075681 -4.875437 0
+ -1.424014 -6.299451 0
+ L3 12434688 0.000000 -2.187375 -6.999600 0 -2.406112 -5.905912 0
+ L3 12434688 0.000000 -4.593487 -3.718537 0 -3.718537 -3.062325 0
+ L3 12434688 0.000000 -7.437075 -0.437475 0 -6.124650 -1.093687 0
+ L3 12434688 0.000000 -5.030962 0.656212 0 -6.124650 0.437475 0
+ L3 12434688 0.000000 -6.780862 3.281062 0 -5.687175 3.499800 0
+ L3 12434688 0.000000 -3.281062 6.562125 0 -3.718537 7.218337 0
+ L3 12434688 0.000000 1.093687 5.905912 0 0.437475 6.343387 0
+ L3 12434688 0.000000 4.156012 6.562125 0 4.812225 6.780862 0
+ L3 12434688 0.000000 7.655812 3.062325 0 6.999600 3.281062 0
+ L3 12434688 0.000000 -6.124650 -5.468437 0 -5.687175 -4.593487 0
+ L3 12434688 0.000000 -6.999600 -4.156012 0 -6.343387 -4.593487 0
+ L3 16755200 0.000000 -1.531162 -7.437075 0 -0.656212 -6.780862 0
+ L3 16755200 0.000000 -5.030962 -4.593487 0 -3.499800 -4.593487 0
+ L3 16755200 0.000000 -6.124650 -4.156012 0 -5.468437 -3.499800 0
+ L3 16755200 0.000000 -4.156012 -2.406112 0 -5.468437 -2.187375 0
+ L3 16755200 0.000000 -7.437075 -1.749900 0 -5.905912 -1.749900 0
+ L3 16755200 0.000000 -5.905912 1.531162 0 -7.437075 2.406112 0
+ L3 16755200 0.000000 -5.249700 5.030962 0 -4.812225 4.374750 0
+ L3 16755200 0.000000 -1.968637 6.999600 0 -1.531162 7.655812 0
+ L3 16755200 0.000000 -0.218737 5.905912 0 0.000000 6.562125 0
+ L3 16755200 0.000000 2.843587 6.999600 0 2.624850 7.874550 0
+ L3 16755200 0.000000 6.562125 4.156012 0 6.999600 4.812225 0
+ L3 16755200 0.000000 7.655812 -0.656212 0 6.780862 -0.437475 0
+ F4 6842368 0.000000 4 0
+ 3.369821 -3.463427 0
+ 1.996931 -3.057801 0
+ 1.840921 -2.028133 0
+ 2.745780 -2.402558 0
+ F4 6842368 0.000000 4 0
+ 4.274681 0.156010 0
+ 2.652174 0.530435 0
+ 2.308952 -0.280818 0
+ 4.524297 -0.405627 0
+ F4 6842368 0.000000 4 0
+ 1.029668 4.149872 0
+ 0.218414 3.525832 0
+ 0.436829 2.215345 0
+ 0.936061 2.402558 0
+ F4 6842368 0.000000 5 0
+ -3.276215 0.374425 0
+ -2.839386 0.062404 0
+ -1.341688 -0.312020 0
+ -0.530435 0.530435 0
+ -2.402558 0.811253 0
+ L3 6842368 0.000000 0.437475 -4.812225 0 0.874950 -4.156012 0
+ L3 6842368 0.000000 3.062325 -4.156012 0 1.968637 -3.718537 0
+ L3 6842368 0.000000 3.499800 -5.249700 0 2.843587 -4.812225 0
+ L3 6842368 0.000000 1.968637 -5.687175 0 1.531162 -4.812225 0
+ L3 6842368 0.000000 -0.874950 -5.468437 0 -0.437475 -4.812225 0
+ L3 6842368 0.000000 -2.624850 -3.499800 0 -1.749900 -3.499800 0
+ L3 6842368 0.000000 -1.968637 -2.406112 0 -0.874950 -2.843587 0
+ L3 6842368 0.000000 -2.624850 -1.312425 0 -1.749900 -0.656212 0
+ L3 6842368 0.000000 -3.937275 -1.093687 0 -3.062325 -0.656212 0
+ L3 6842368 0.000000 -5.030962 -0.437475 0 -3.937275 0.000000 0
+ L3 6842368 0.000000 -3.499800 1.093687 0 -4.374750 1.968637 0
+ L3 6842368 0.000000 -3.937275 3.062325 0 -3.281062 2.187375 0
+ L3 6842368 0.000000 -2.406112 4.812225 0 -1.749900 3.937275 0
+ L3 6842368 0.000000 -0.874950 3.937275 0 -1.093687 5.249700 0
+ L3 6842368 0.000000 -0.656212 2.406112 0 -0.437475 3.281062 0
+ L3 6842368 0.000000 1.531162 3.937275 0 1.968637 5.249700 0
+ L3 6842368 0.000000 2.624850 3.718537 0 3.937275 4.374750 0
+ L3 6842368 0.000000 5.905912 1.531162 0 4.812225 1.749900 0
+ L3 6842368 0.000000 5.905912 3.499800 0 4.812225 3.062325 0
+ L3 6842368 0.000000 6.343387 2.624850 0 5.249700 2.406112 0
+ L3 6842368 0.000000 2.624850 6.343387 0 2.406112 5.468437 0
+ L3 6842368 0.000000 3.937275 5.687175 0 3.281062 5.030962 0
+ L3 6842368 0.000000 3.062325 5.905912 0 2.624850 4.593487 0
+ L3 6842368 0.000000 6.562125 -1.093687 0 5.249700 -1.312425 0
+ L3 6842368 0.000000 5.468437 -2.843587 0 4.374750 -2.187375 0
+ L3 6842368 0.000000 6.562125 -2.187375 0 5.468437 -1.968637 0
+ L3 6842368 0.000000 -2.187375 6.124650 0 -1.968637 5.249700 0
+ L3 6842368 0.000000 -4.812225 3.062325 0 -4.156012 2.624850 0
+ L3 6842368 0.000000 3.062325 -6.999600 0 2.624850 -5.905912 0
+ L3 6842368 0.000000 3.937275 -6.343387 0 3.281062 -5.687175 0
+ F4 16755200 0.000000 5 0
+ -1.310486 -4.149872 0
+ -1.185678 -3.432225 0
+ 0.156010 -2.839386 0
+ 0.530435 -3.713044 0
+ -0.156010 -4.368287 0
+ F4 16755200 0.000000 3 0
+ 3.806650 3.120205 0
+ 3.369821 2.152941 0
+ 2.683376 2.745780 0
+ F4 16755200 0.000000 4 0
+ -2.870588 3.619438 0
+ -1.996931 3.401023 0
+ -1.372890 1.934527 0
+ -2.340154 2.184143 0
+ END$SEGS
+STRUCTURE 189 3 0 0 0 A 2 575.000000 208.500000 0 0.000000 "Lg Fall 8"" Fall-8b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -2.419782 2.295585 0
+ -2.076517 3.593556 0
+ -1.304171 3.926095 0
+ -0.435281 2.853391 0
+ 0.562333 3.786643 0
+ 1.763761 3.218110 0
+ 1.484858 -3.164475 0
+ 0.347793 -3.765189 0
+ -0.124197 -3.035751 0
+ -1.078903 -3.046478 0
+ -1.314898 -3.786643 0
+ -2.784501 -3.314654 0
+ -2.602142 -2.445764 0
+ -3.814297 -2.359948 0
+ -4.436465 -1.104885 0
+ -3.749934 -0.396900 0
+ -4.651005 0.000000 0
+ -4.415011 0.901071 0
+ -3.460304 1.244336 0
+ -4.146835 1.802142 0
+ -3.589029 2.810483 0
+ F4 6815744 0.000000 28 0
+ -3.346835 1.802142 0
+ -2.789029 2.810483 0
+ -1.619782 2.295585 0
+ -1.276517 3.593556 0
+ -0.504171 3.926095 0
+ 0.364719 2.853391 0
+ 1.362333 3.786643 0
+ 2.563761 3.218110 0
+ 2.113226 2.027409 0
+ 3.550648 1.630509 0
+ 3.765189 0.278903 0
+ 3.014297 -0.418354 0
+ 3.722281 -1.426696 0
+ 3.185929 -2.327766 0
+ 2.317039 -2.005955 0
+ 2.284858 -3.164475 0
+ 1.147793 -3.765189 0
+ 0.675803 -3.035751 0
+ -0.278903 -3.046478 0
+ -0.514898 -3.786643 0
+ -1.984501 -3.314654 0
+ -1.802142 -2.445764 0
+ -3.014297 -2.359948 0
+ -3.636465 -1.104885 0
+ -2.949934 -0.396900 0
+ -3.851005 0.000000 0
+ -3.615011 0.901071 0
+ -2.660304 1.244336 0
+ F4 12410368 0.000000 26 0
+ 0.536352 2.510126 0
+ 1.287244 3.261018 0
+ 2.005955 2.821210 0
+ 1.684144 1.566147 0
+ 3.121567 1.169247 0
+ 3.218110 0.547079 0
+ 2.317039 -0.075089 0
+ 3.100113 -1.255063 0
+ 2.756848 -1.662690 0
+ 1.898685 -1.641236 0
+ 1.855777 -2.628123 0
+ 1.115612 -3.035751 0
+ 0.504171 -2.317039 0
+ -0.418354 -2.445764 0
+ -0.632895 -2.939207 0
+ -1.415969 -2.735394 0
+ -1.426696 -1.877231 0
+ -2.081045 -1.855777 0
+ -2.510126 -0.997614 0
+ -1.748507 -0.278903 0
+ -2.467218 0.096543 0
+ -2.349220 0.611441 0
+ -1.201428 0.825982 0
+ -1.641236 1.609055 0
+ -0.922525 2.166861 0
+ -0.632895 2.799756 0
+ L3 12410368 0.000000 -0.680517 3.305367 0 -0.291650 3.013717 0
+ L3 12410368 0.000000 -2.722067 1.847117 0 -2.430417 1.555467 0
+ L3 12410368 0.000000 -2.041550 1.652683 0 -1.652683 1.361033 0
+ L3 12410368 0.000000 -3.305367 0.777733 0 -2.624850 0.777733 0
+ L3 12410368 0.000000 -2.235983 -0.291650 0 -2.722067 -0.194433 0
+ L3 12410368 0.000000 -3.013717 -1.458250 0 -2.527633 -1.555467 0
+ L3 12410368 0.000000 -1.458250 -2.916500 0 -1.652683 -3.208150 0
+ L3 12410368 0.000000 -0.097217 -2.624850 0 0.000000 -2.916500 0
+ L3 12410368 0.000000 1.263817 -3.110933 0 1.166600 -3.499800 0
+ L3 12410368 0.000000 2.916500 -1.847117 0 3.110933 -2.138767 0
+ L3 12410368 0.000000 -2.722067 2.430417 0 -2.527633 2.041550 0
+ L3 14915328 0.000000 -3.110933 1.847117 0 -2.819283 2.041550 0
+ L3 16755200 0.000000 3.402583 0.291650 0 3.013717 0.194433 0
+ L3 16755200 0.000000 -0.972167 3.110933 0 -1.069383 2.624850 0
+ L3 16755200 0.000000 -2.235983 2.041550 0 -1.555467 2.041550 0
+ L3 16755200 0.000000 -1.847117 1.069383 0 -2.430417 0.972167 0
+ L3 16755200 0.000000 -3.305367 0.194433 0 -2.722067 0.486083 0
+ L3 16755200 0.000000 -2.624850 -0.680517 0 -3.305367 -1.069383 0
+ L3 16755200 0.000000 -2.333200 -2.235983 0 -2.138767 -1.944333 0
+ L3 16755200 0.000000 -0.874950 -3.110933 0 -0.680517 -3.402583 0
+ L3 16755200 0.000000 0.486083 -2.624850 0 0.194433 -2.819283 0
+ L3 16755200 0.000000 1.847117 -2.916500 0 2.138767 -3.013717 0
+ L3 16755200 0.000000 3.402583 -1.361033 0 3.110933 -1.458250 0
+ F4 6815744 0.000000 5 0
+ -0.582438 1.844388 0
+ -0.526968 1.525433 0
+ 0.069338 1.261950 0
+ 0.235749 1.650242 0
+ -0.069338 1.941461 0
+ F4 6815744 0.000000 4 0
+ 1.899858 -0.069338 0
+ 1.178744 -0.235749 0
+ 1.026201 0.124808 0
+ 2.010799 0.180279 0
+ F4 6815744 0.000000 4 0
+ 0.457630 -1.844388 0
+ 0.097073 -1.567036 0
+ 0.194146 -0.984598 0
+ 0.416027 -1.067803 0
+ F4 6815744 0.000000 5 0
+ -1.456096 -0.166411 0
+ -1.261950 -0.027735 0
+ -0.596306 0.138676 0
+ -0.235749 -0.235749 0
+ -1.067803 -0.360557 0
+ L3 6815744 0.000000 1.361033 1.847117 0 0.874950 1.652683 0
+ L3 6815744 0.000000 0.874950 2.527633 0 0.680517 2.138767 0
+ L3 6815744 0.000000 -0.388867 2.430417 0 -0.194433 2.138767 0
+ L3 6815744 0.000000 -0.874950 1.069383 0 -0.388867 1.263817 0
+ L3 6815744 0.000000 -1.166600 0.583300 0 -0.777733 0.291650 0
+ L3 6815744 0.000000 -2.235983 0.194433 0 -1.749900 0.000000 0
+ L3 6815744 0.000000 -1.555467 -0.486083 0 -1.944333 -0.874950 0
+ L3 6815744 0.000000 -0.388867 -1.749900 0 -0.486083 -2.333200 0
+ L3 6815744 0.000000 -0.291650 -1.069383 0 -0.194433 -1.458250 0
+ L3 6815744 0.000000 0.680517 -1.749900 0 0.874950 -2.333200 0
+ L3 6815744 0.000000 1.166600 -1.652683 0 1.749900 -1.944333 0
+ L3 6815744 0.000000 2.624850 -0.680517 0 2.138767 -0.777733 0
+ L3 6815744 0.000000 2.624850 -1.555467 0 2.138767 -1.361033 0
+ L3 6815744 0.000000 2.819283 -1.166600 0 2.333200 -1.069383 0
+ L3 6815744 0.000000 1.166600 -2.819283 0 1.069383 -2.430417 0
+ L3 6815744 0.000000 1.749900 -2.527633 0 1.458250 -2.235983 0
+ L3 6815744 0.000000 2.916500 0.486083 0 2.333200 0.583300 0
+ L3 6815744 0.000000 2.916500 0.972167 0 2.430417 0.874950 0
+ L3 6815744 0.000000 -0.972167 -2.722067 0 -0.874950 -2.333200 0
+ L3 6815744 0.000000 -2.138767 -1.361033 0 -1.847117 -1.166600 0
+ L3 6815744 0.000000 1.361033 3.110933 0 1.166600 2.624850 0
+ L3 6815744 0.000000 1.749900 2.819283 0 1.458250 2.527633 0
+ L3 11184640 0.000000 1.361033 -2.624850 0 1.166600 -2.041550 0
+ L3 14915328 0.000000 1.555467 2.333200 0 1.263817 2.138767 0
+ L3 14915328 0.000000 -1.749900 0.486083 0 -1.361033 0.291650 0
+ F4 16755200 0.000000 4 0
+ 1.497698 1.539301 0
+ 0.887525 1.359023 0
+ 0.818187 0.901393 0
+ 1.220347 1.067803 0
+ F4 16755200 0.000000 3 0
+ 1.691844 -1.386758 0
+ 1.497698 -0.956863 0
+ 1.192612 -1.220347 0
+ F4 16755200 0.000000 4 0
+ -1.275817 -1.608639 0
+ -0.887525 -1.511566 0
+ -0.610173 -0.859790 0
+ -1.040068 -0.970730 0
+ L3 16755200 0.000000 0.194433 2.138767 0 0.388867 1.847117 0
+ L3 16755200 0.000000 -1.166600 1.555467 0 -0.777733 1.555467 0
+ L3 16755200 0.000000 -1.749900 -1.361033 0 -1.458250 -0.972167 0
+ L3 16755200 0.000000 -1.069383 -2.138767 0 -0.777733 -1.749900 0
+ L3 16755200 0.000000 2.430417 1.263817 0 1.944333 0.972167 0
+ END$SEGS
+STRUCTURE 190 3 0 0 0 A 2 525.500000 234.000000 0 0.000000 "Lg Fall 8"" Fall-8b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -2.419782 2.295585 0
+ -2.076517 3.593556 0
+ -1.304171 3.926095 0
+ -0.435281 2.853391 0
+ 0.562333 3.786643 0
+ 1.763761 3.218110 0
+ 1.484858 -3.164475 0
+ 0.347793 -3.765189 0
+ -0.124197 -3.035751 0
+ -1.078903 -3.046478 0
+ -1.314898 -3.786643 0
+ -2.784501 -3.314654 0
+ -2.602142 -2.445764 0
+ -3.814297 -2.359948 0
+ -4.436465 -1.104885 0
+ -3.749934 -0.396900 0
+ -4.651005 0.000000 0
+ -4.415011 0.901071 0
+ -3.460304 1.244336 0
+ -4.146835 1.802142 0
+ -3.589029 2.810483 0
+ F4 6815744 0.000000 28 0
+ -3.346835 1.802142 0
+ -2.789029 2.810483 0
+ -1.619782 2.295585 0
+ -1.276517 3.593556 0
+ -0.504171 3.926095 0
+ 0.364719 2.853391 0
+ 1.362333 3.786643 0
+ 2.563761 3.218110 0
+ 2.113226 2.027409 0
+ 3.550648 1.630509 0
+ 3.765189 0.278903 0
+ 3.014297 -0.418354 0
+ 3.722281 -1.426696 0
+ 3.185929 -2.327766 0
+ 2.317039 -2.005955 0
+ 2.284858 -3.164475 0
+ 1.147793 -3.765189 0
+ 0.675803 -3.035751 0
+ -0.278903 -3.046478 0
+ -0.514898 -3.786643 0
+ -1.984501 -3.314654 0
+ -1.802142 -2.445764 0
+ -3.014297 -2.359948 0
+ -3.636465 -1.104885 0
+ -2.949934 -0.396900 0
+ -3.851005 0.000000 0
+ -3.615011 0.901071 0
+ -2.660304 1.244336 0
+ F4 12410368 0.000000 26 0
+ 0.536352 2.510126 0
+ 1.287244 3.261018 0
+ 2.005955 2.821210 0
+ 1.684144 1.566147 0
+ 3.121567 1.169247 0
+ 3.218110 0.547079 0
+ 2.317039 -0.075089 0
+ 3.100113 -1.255063 0
+ 2.756848 -1.662690 0
+ 1.898685 -1.641236 0
+ 1.855777 -2.628123 0
+ 1.115612 -3.035751 0
+ 0.504171 -2.317039 0
+ -0.418354 -2.445764 0
+ -0.632895 -2.939207 0
+ -1.415969 -2.735394 0
+ -1.426696 -1.877231 0
+ -2.081045 -1.855777 0
+ -2.510126 -0.997614 0
+ -1.748507 -0.278903 0
+ -2.467218 0.096543 0
+ -2.349220 0.611441 0
+ -1.201428 0.825982 0
+ -1.641236 1.609055 0
+ -0.922525 2.166861 0
+ -0.632895 2.799756 0
+ L3 12410368 0.000000 -0.680517 3.305367 0 -0.291650 3.013717 0
+ L3 12410368 0.000000 -2.722067 1.847117 0 -2.430417 1.555467 0
+ L3 12410368 0.000000 -2.041550 1.652683 0 -1.652683 1.361033 0
+ L3 12410368 0.000000 -3.305367 0.777733 0 -2.624850 0.777733 0
+ L3 12410368 0.000000 -2.235983 -0.291650 0 -2.722067 -0.194433 0
+ L3 12410368 0.000000 -3.013717 -1.458250 0 -2.527633 -1.555467 0
+ L3 12410368 0.000000 -1.458250 -2.916500 0 -1.652683 -3.208150 0
+ L3 12410368 0.000000 -0.097217 -2.624850 0 0.000000 -2.916500 0
+ L3 12410368 0.000000 1.263817 -3.110933 0 1.166600 -3.499800 0
+ L3 12410368 0.000000 2.916500 -1.847117 0 3.110933 -2.138767 0
+ L3 12410368 0.000000 -2.722067 2.430417 0 -2.527633 2.041550 0
+ L3 14915328 0.000000 -3.110933 1.847117 0 -2.819283 2.041550 0
+ L3 16755200 0.000000 3.402583 0.291650 0 3.013717 0.194433 0
+ L3 16755200 0.000000 -0.972167 3.110933 0 -1.069383 2.624850 0
+ L3 16755200 0.000000 -2.235983 2.041550 0 -1.555467 2.041550 0
+ L3 16755200 0.000000 -1.847117 1.069383 0 -2.430417 0.972167 0
+ L3 16755200 0.000000 -3.305367 0.194433 0 -2.722067 0.486083 0
+ L3 16755200 0.000000 -2.624850 -0.680517 0 -3.305367 -1.069383 0
+ L3 16755200 0.000000 -2.333200 -2.235983 0 -2.138767 -1.944333 0
+ L3 16755200 0.000000 -0.874950 -3.110933 0 -0.680517 -3.402583 0
+ L3 16755200 0.000000 0.486083 -2.624850 0 0.194433 -2.819283 0
+ L3 16755200 0.000000 1.847117 -2.916500 0 2.138767 -3.013717 0
+ L3 16755200 0.000000 3.402583 -1.361033 0 3.110933 -1.458250 0
+ F4 6815744 0.000000 5 0
+ -0.582438 1.844388 0
+ -0.526968 1.525433 0
+ 0.069338 1.261950 0
+ 0.235749 1.650242 0
+ -0.069338 1.941461 0
+ F4 6815744 0.000000 4 0
+ 1.899858 -0.069338 0
+ 1.178744 -0.235749 0
+ 1.026201 0.124808 0
+ 2.010799 0.180279 0
+ F4 6815744 0.000000 4 0
+ 0.457630 -1.844388 0
+ 0.097073 -1.567036 0
+ 0.194146 -0.984598 0
+ 0.416027 -1.067803 0
+ F4 6815744 0.000000 5 0
+ -1.456096 -0.166411 0
+ -1.261950 -0.027735 0
+ -0.596306 0.138676 0
+ -0.235749 -0.235749 0
+ -1.067803 -0.360557 0
+ L3 6815744 0.000000 1.361033 1.847117 0 0.874950 1.652683 0
+ L3 6815744 0.000000 0.874950 2.527633 0 0.680517 2.138767 0
+ L3 6815744 0.000000 -0.388867 2.430417 0 -0.194433 2.138767 0
+ L3 6815744 0.000000 -0.874950 1.069383 0 -0.388867 1.263817 0
+ L3 6815744 0.000000 -1.166600 0.583300 0 -0.777733 0.291650 0
+ L3 6815744 0.000000 -2.235983 0.194433 0 -1.749900 0.000000 0
+ L3 6815744 0.000000 -1.555467 -0.486083 0 -1.944333 -0.874950 0
+ L3 6815744 0.000000 -0.388867 -1.749900 0 -0.486083 -2.333200 0
+ L3 6815744 0.000000 -0.291650 -1.069383 0 -0.194433 -1.458250 0
+ L3 6815744 0.000000 0.680517 -1.749900 0 0.874950 -2.333200 0
+ L3 6815744 0.000000 1.166600 -1.652683 0 1.749900 -1.944333 0
+ L3 6815744 0.000000 2.624850 -0.680517 0 2.138767 -0.777733 0
+ L3 6815744 0.000000 2.624850 -1.555467 0 2.138767 -1.361033 0
+ L3 6815744 0.000000 2.819283 -1.166600 0 2.333200 -1.069383 0
+ L3 6815744 0.000000 1.166600 -2.819283 0 1.069383 -2.430417 0
+ L3 6815744 0.000000 1.749900 -2.527633 0 1.458250 -2.235983 0
+ L3 6815744 0.000000 2.916500 0.486083 0 2.333200 0.583300 0
+ L3 6815744 0.000000 2.916500 0.972167 0 2.430417 0.874950 0
+ L3 6815744 0.000000 -0.972167 -2.722067 0 -0.874950 -2.333200 0
+ L3 6815744 0.000000 -2.138767 -1.361033 0 -1.847117 -1.166600 0
+ L3 6815744 0.000000 1.361033 3.110933 0 1.166600 2.624850 0
+ L3 6815744 0.000000 1.749900 2.819283 0 1.458250 2.527633 0
+ L3 11184640 0.000000 1.361033 -2.624850 0 1.166600 -2.041550 0
+ L3 14915328 0.000000 1.555467 2.333200 0 1.263817 2.138767 0
+ L3 14915328 0.000000 -1.749900 0.486083 0 -1.361033 0.291650 0
+ F4 16755200 0.000000 4 0
+ 1.497698 1.539301 0
+ 0.887525 1.359023 0
+ 0.818187 0.901393 0
+ 1.220347 1.067803 0
+ F4 16755200 0.000000 3 0
+ 1.691844 -1.386758 0
+ 1.497698 -0.956863 0
+ 1.192612 -1.220347 0
+ F4 16755200 0.000000 4 0
+ -1.275817 -1.608639 0
+ -0.887525 -1.511566 0
+ -0.610173 -0.859790 0
+ -1.040068 -0.970730 0
+ L3 16755200 0.000000 0.194433 2.138767 0 0.388867 1.847117 0
+ L3 16755200 0.000000 -1.166600 1.555467 0 -0.777733 1.555467 0
+ L3 16755200 0.000000 -1.749900 -1.361033 0 -1.458250 -0.972167 0
+ L3 16755200 0.000000 -1.069383 -2.138767 0 -0.777733 -1.749900 0
+ L3 16755200 0.000000 2.430417 1.263817 0 1.944333 0.972167 0
+ END$SEGS
+STRUCTURE 191 3 0 0 0 A 2 582.000000 234.000000 0 0.000000 "Lg Fall 12"" Fall-12b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.629673 3.443378 0
+ -3.114776 5.390335 0
+ -1.956256 5.889142 0
+ -0.652921 4.280087 0
+ 0.843500 5.679965 0
+ 2.645642 4.827165 0
+ 2.227287 -4.746713 0
+ 0.521689 -5.647783 0
+ -0.186295 -4.553626 0
+ -1.618354 -4.569717 0
+ -1.972346 -5.679965 0
+ -4.176752 -4.971980 0
+ -3.903213 -3.668646 0
+ -5.721445 -3.539921 0
+ -6.654697 -1.657327 0
+ -5.624902 -0.595350 0
+ -6.976508 0.000000 0
+ -6.622516 1.351606 0
+ -5.190457 1.866504 0
+ -6.220252 2.703213 0
+ -5.383543 4.215724 0
+ F4 6815744 0.000000 28 0
+ -5.020252 2.703213 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.914776 5.390335 0
+ -0.756256 5.889142 0
+ 0.547079 4.280087 0
+ 2.043500 5.679965 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 5.325972 2.445764 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 4.778894 -3.491650 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 1.721689 -5.647783 0
+ 1.013705 -4.553626 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -2.976752 -4.971980 0
+ -2.703213 -3.668646 0
+ -4.521445 -3.539921 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -5.422516 1.351606 0
+ -3.990457 1.866504 0
+ F4 12410368 0.000000 26 0
+ 0.804528 3.765189 0
+ 1.930866 4.891528 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.682350 1.753870 0
+ 4.827165 0.820618 0
+ 3.475559 -0.112634 0
+ 4.650169 -1.882594 0
+ 4.135272 -2.494035 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 1.673417 -4.553626 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.123953 -4.103091 0
+ -2.140043 -2.815846 0
+ -3.121567 -2.783665 0
+ -3.765189 -1.496421 0
+ -2.622760 -0.418354 0
+ -3.700827 0.144815 0
+ -3.523831 0.917161 0
+ -1.802142 1.238972 0
+ -2.461854 2.413583 0
+ -1.383787 3.250291 0
+ -0.949343 4.199634 0
+ L3 12410368 0.000000 -1.020775 4.958050 0 -0.437475 4.520575 0
+ L3 12410368 0.000000 -4.083100 2.770675 0 -3.645625 2.333200 0
+ L3 12410368 0.000000 -3.062325 2.479025 0 -2.479025 2.041550 0
+ L3 12410368 0.000000 -4.958050 1.166600 0 -3.937275 1.166600 0
+ L3 12410368 0.000000 -3.353975 -0.437475 0 -4.083100 -0.291650 0
+ L3 12410368 0.000000 -4.520575 -2.187375 0 -3.791450 -2.333200 0
+ L3 12410368 0.000000 -2.187375 -4.374750 0 -2.479025 -4.812225 0
+ L3 12410368 0.000000 -0.145825 -3.937275 0 0.000000 -4.374750 0
+ L3 12410368 0.000000 1.895725 -4.666400 0 1.749900 -5.249700 0
+ L3 12410368 0.000000 4.374750 -2.770675 0 4.666400 -3.208150 0
+ L3 12410368 0.000000 -4.083100 3.645625 0 -3.791450 3.062325 0
+ L3 14915328 0.000000 -4.666400 2.770675 0 -4.228925 3.062325 0
+ L3 16755200 0.000000 5.103875 0.437475 0 4.520575 0.291650 0
+ L3 16755200 0.000000 -1.458250 4.666400 0 -1.604075 3.937275 0
+ L3 16755200 0.000000 -3.353975 3.062325 0 -2.333200 3.062325 0
+ L3 16755200 0.000000 -2.770675 1.604075 0 -3.645625 1.458250 0
+ L3 16755200 0.000000 -4.958050 0.291650 0 -4.083100 0.729125 0
+ L3 16755200 0.000000 -3.937275 -1.020775 0 -4.958050 -1.604075 0
+ L3 16755200 0.000000 -3.499800 -3.353975 0 -3.208150 -2.916500 0
+ L3 16755200 0.000000 -1.312425 -4.666400 0 -1.020775 -5.103875 0
+ L3 16755200 0.000000 0.729125 -3.937275 0 0.291650 -4.228925 0
+ L3 16755200 0.000000 2.770675 -4.374750 0 3.208150 -4.520575 0
+ L3 16755200 0.000000 5.103875 -2.041550 0 4.666400 -2.187375 0
+ F4 6815744 0.000000 5 0
+ -0.873657 2.766582 0
+ -0.790452 2.288150 0
+ 0.104007 1.892924 0
+ 0.353623 2.475363 0
+ -0.104007 2.912191 0
+ F4 6815744 0.000000 4 0
+ 2.849787 -0.104007 0
+ 1.768116 -0.353623 0
+ 1.539301 0.187212 0
+ 3.016198 0.270418 0
+ F4 6815744 0.000000 4 0
+ 0.686445 -2.766582 0
+ 0.145610 -2.350554 0
+ 0.291219 -1.476897 0
+ 0.624041 -1.601705 0
+ F4 6815744 0.000000 5 0
+ -2.184143 -0.249616 0
+ -1.892924 -0.041603 0
+ -0.894459 0.208014 0
+ -0.353623 -0.353623 0
+ -1.601705 -0.540836 0
+ L3 6815744 0.000000 2.041550 2.770675 0 1.312425 2.479025 0
+ L3 6815744 0.000000 1.312425 3.791450 0 1.020775 3.208150 0
+ L3 6815744 0.000000 -0.583300 3.645625 0 -0.291650 3.208150 0
+ L3 6815744 0.000000 -1.312425 1.604075 0 -0.583300 1.895725 0
+ L3 6815744 0.000000 -1.749900 0.874950 0 -1.166600 0.437475 0
+ L3 6815744 0.000000 -3.353975 0.291650 0 -2.624850 0.000000 0
+ L3 6815744 0.000000 -2.333200 -0.729125 0 -2.916500 -1.312425 0
+ L3 6815744 0.000000 -0.583300 -2.624850 0 -0.729125 -3.499800 0
+ L3 6815744 0.000000 -0.437475 -1.604075 0 -0.291650 -2.187375 0
+ L3 6815744 0.000000 1.020775 -2.624850 0 1.312425 -3.499800 0
+ L3 6815744 0.000000 1.749900 -2.479025 0 2.624850 -2.916500 0
+ L3 6815744 0.000000 3.937275 -1.020775 0 3.208150 -1.166600 0
+ L3 6815744 0.000000 3.937275 -2.333200 0 3.208150 -2.041550 0
+ L3 6815744 0.000000 4.228925 -1.749900 0 3.499800 -1.604075 0
+ L3 6815744 0.000000 1.749900 -4.228925 0 1.604075 -3.645625 0
+ L3 6815744 0.000000 2.624850 -3.791450 0 2.187375 -3.353975 0
+ L3 6815744 0.000000 4.374750 0.729125 0 3.499800 0.874950 0
+ L3 6815744 0.000000 4.374750 1.458250 0 3.645625 1.312425 0
+ L3 6815744 0.000000 -1.458250 -4.083100 0 -1.312425 -3.499800 0
+ L3 6815744 0.000000 -3.208150 -2.041550 0 -2.770675 -1.749900 0
+ L3 6815744 0.000000 2.041550 4.666400 0 1.749900 3.937275 0
+ L3 6815744 0.000000 2.624850 4.228925 0 2.187375 3.791450 0
+ L3 11184640 0.000000 2.041550 -3.937275 0 1.749900 -3.062325 0
+ L3 14915328 0.000000 2.333200 3.499800 0 1.895725 3.208150 0
+ L3 14915328 0.000000 -2.624850 0.729125 0 -2.041550 0.437475 0
+ F4 16755200 0.000000 4 0
+ 2.246548 2.308952 0
+ 1.331287 2.038534 0
+ 1.227281 1.352089 0
+ 1.830520 1.601705 0
+ F4 16755200 0.000000 3 0
+ 2.537767 -2.080137 0
+ 2.246548 -1.435294 0
+ 1.788917 -1.830520 0
+ F4 16755200 0.000000 4 0
+ -1.913726 -2.412958 0
+ -1.331287 -2.267349 0
+ -0.915260 -1.289685 0
+ -1.560102 -1.456096 0
+ L3 16755200 0.000000 0.291650 3.208150 0 0.583300 2.770675 0
+ L3 16755200 0.000000 -1.749900 2.333200 0 -1.166600 2.333200 0
+ L3 16755200 0.000000 -2.624850 -2.041550 0 -2.187375 -1.458250 0
+ L3 16755200 0.000000 -1.604075 -3.208150 0 -1.166600 -2.624850 0
+ L3 16755200 0.000000 3.645625 1.895725 0 2.916500 1.458250 0
+ END$SEGS
+STRUCTURE 192 3 0 0 0 A 2 594.000000 178.500000 0 0.000000 "Lg Fall 12"" Fall-12b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -3.629673 3.443378 0
+ -3.114776 5.390335 0
+ -1.956256 5.889142 0
+ -0.652921 4.280087 0
+ 0.843500 5.679965 0
+ 2.645642 4.827165 0
+ 2.227287 -4.746713 0
+ 0.521689 -5.647783 0
+ -0.186295 -4.553626 0
+ -1.618354 -4.569717 0
+ -1.972346 -5.679965 0
+ -4.176752 -4.971980 0
+ -3.903213 -3.668646 0
+ -5.721445 -3.539921 0
+ -6.654697 -1.657327 0
+ -5.624902 -0.595350 0
+ -6.976508 0.000000 0
+ -6.622516 1.351606 0
+ -5.190457 1.866504 0
+ -6.220252 2.703213 0
+ -5.383543 4.215724 0
+ F4 6815744 0.000000 28 0
+ -5.020252 2.703213 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.914776 5.390335 0
+ -0.756256 5.889142 0
+ 0.547079 4.280087 0
+ 2.043500 5.679965 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 5.325972 2.445764 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 4.778894 -3.491650 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 1.721689 -5.647783 0
+ 1.013705 -4.553626 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -2.976752 -4.971980 0
+ -2.703213 -3.668646 0
+ -4.521445 -3.539921 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -5.422516 1.351606 0
+ -3.990457 1.866504 0
+ F4 12410368 0.000000 26 0
+ 0.804528 3.765189 0
+ 1.930866 4.891528 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.682350 1.753870 0
+ 4.827165 0.820618 0
+ 3.475559 -0.112634 0
+ 4.650169 -1.882594 0
+ 4.135272 -2.494035 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 1.673417 -4.553626 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.123953 -4.103091 0
+ -2.140043 -2.815846 0
+ -3.121567 -2.783665 0
+ -3.765189 -1.496421 0
+ -2.622760 -0.418354 0
+ -3.700827 0.144815 0
+ -3.523831 0.917161 0
+ -1.802142 1.238972 0
+ -2.461854 2.413583 0
+ -1.383787 3.250291 0
+ -0.949343 4.199634 0
+ L3 12410368 0.000000 -1.020775 4.958050 0 -0.437475 4.520575 0
+ L3 12410368 0.000000 -4.083100 2.770675 0 -3.645625 2.333200 0
+ L3 12410368 0.000000 -3.062325 2.479025 0 -2.479025 2.041550 0
+ L3 12410368 0.000000 -4.958050 1.166600 0 -3.937275 1.166600 0
+ L3 12410368 0.000000 -3.353975 -0.437475 0 -4.083100 -0.291650 0
+ L3 12410368 0.000000 -4.520575 -2.187375 0 -3.791450 -2.333200 0
+ L3 12410368 0.000000 -2.187375 -4.374750 0 -2.479025 -4.812225 0
+ L3 12410368 0.000000 -0.145825 -3.937275 0 0.000000 -4.374750 0
+ L3 12410368 0.000000 1.895725 -4.666400 0 1.749900 -5.249700 0
+ L3 12410368 0.000000 4.374750 -2.770675 0 4.666400 -3.208150 0
+ L3 12410368 0.000000 -4.083100 3.645625 0 -3.791450 3.062325 0
+ L3 14915328 0.000000 -4.666400 2.770675 0 -4.228925 3.062325 0
+ L3 16755200 0.000000 5.103875 0.437475 0 4.520575 0.291650 0
+ L3 16755200 0.000000 -1.458250 4.666400 0 -1.604075 3.937275 0
+ L3 16755200 0.000000 -3.353975 3.062325 0 -2.333200 3.062325 0
+ L3 16755200 0.000000 -2.770675 1.604075 0 -3.645625 1.458250 0
+ L3 16755200 0.000000 -4.958050 0.291650 0 -4.083100 0.729125 0
+ L3 16755200 0.000000 -3.937275 -1.020775 0 -4.958050 -1.604075 0
+ L3 16755200 0.000000 -3.499800 -3.353975 0 -3.208150 -2.916500 0
+ L3 16755200 0.000000 -1.312425 -4.666400 0 -1.020775 -5.103875 0
+ L3 16755200 0.000000 0.729125 -3.937275 0 0.291650 -4.228925 0
+ L3 16755200 0.000000 2.770675 -4.374750 0 3.208150 -4.520575 0
+ L3 16755200 0.000000 5.103875 -2.041550 0 4.666400 -2.187375 0
+ F4 6815744 0.000000 5 0
+ -0.873657 2.766582 0
+ -0.790452 2.288150 0
+ 0.104007 1.892924 0
+ 0.353623 2.475363 0
+ -0.104007 2.912191 0
+ F4 6815744 0.000000 4 0
+ 2.849787 -0.104007 0
+ 1.768116 -0.353623 0
+ 1.539301 0.187212 0
+ 3.016198 0.270418 0
+ F4 6815744 0.000000 4 0
+ 0.686445 -2.766582 0
+ 0.145610 -2.350554 0
+ 0.291219 -1.476897 0
+ 0.624041 -1.601705 0
+ F4 6815744 0.000000 5 0
+ -2.184143 -0.249616 0
+ -1.892924 -0.041603 0
+ -0.894459 0.208014 0
+ -0.353623 -0.353623 0
+ -1.601705 -0.540836 0
+ L3 6815744 0.000000 2.041550 2.770675 0 1.312425 2.479025 0
+ L3 6815744 0.000000 1.312425 3.791450 0 1.020775 3.208150 0
+ L3 6815744 0.000000 -0.583300 3.645625 0 -0.291650 3.208150 0
+ L3 6815744 0.000000 -1.312425 1.604075 0 -0.583300 1.895725 0
+ L3 6815744 0.000000 -1.749900 0.874950 0 -1.166600 0.437475 0
+ L3 6815744 0.000000 -3.353975 0.291650 0 -2.624850 0.000000 0
+ L3 6815744 0.000000 -2.333200 -0.729125 0 -2.916500 -1.312425 0
+ L3 6815744 0.000000 -0.583300 -2.624850 0 -0.729125 -3.499800 0
+ L3 6815744 0.000000 -0.437475 -1.604075 0 -0.291650 -2.187375 0
+ L3 6815744 0.000000 1.020775 -2.624850 0 1.312425 -3.499800 0
+ L3 6815744 0.000000 1.749900 -2.479025 0 2.624850 -2.916500 0
+ L3 6815744 0.000000 3.937275 -1.020775 0 3.208150 -1.166600 0
+ L3 6815744 0.000000 3.937275 -2.333200 0 3.208150 -2.041550 0
+ L3 6815744 0.000000 4.228925 -1.749900 0 3.499800 -1.604075 0
+ L3 6815744 0.000000 1.749900 -4.228925 0 1.604075 -3.645625 0
+ L3 6815744 0.000000 2.624850 -3.791450 0 2.187375 -3.353975 0
+ L3 6815744 0.000000 4.374750 0.729125 0 3.499800 0.874950 0
+ L3 6815744 0.000000 4.374750 1.458250 0 3.645625 1.312425 0
+ L3 6815744 0.000000 -1.458250 -4.083100 0 -1.312425 -3.499800 0
+ L3 6815744 0.000000 -3.208150 -2.041550 0 -2.770675 -1.749900 0
+ L3 6815744 0.000000 2.041550 4.666400 0 1.749900 3.937275 0
+ L3 6815744 0.000000 2.624850 4.228925 0 2.187375 3.791450 0
+ L3 11184640 0.000000 2.041550 -3.937275 0 1.749900 -3.062325 0
+ L3 14915328 0.000000 2.333200 3.499800 0 1.895725 3.208150 0
+ L3 14915328 0.000000 -2.624850 0.729125 0 -2.041550 0.437475 0
+ F4 16755200 0.000000 4 0
+ 2.246548 2.308952 0
+ 1.331287 2.038534 0
+ 1.227281 1.352089 0
+ 1.830520 1.601705 0
+ F4 16755200 0.000000 3 0
+ 2.537767 -2.080137 0
+ 2.246548 -1.435294 0
+ 1.788917 -1.830520 0
+ F4 16755200 0.000000 4 0
+ -1.913726 -2.412958 0
+ -1.331287 -2.267349 0
+ -0.915260 -1.289685 0
+ -1.560102 -1.456096 0
+ L3 16755200 0.000000 0.291650 3.208150 0 0.583300 2.770675 0
+ L3 16755200 0.000000 -1.749900 2.333200 0 -1.166600 2.333200 0
+ L3 16755200 0.000000 -2.624850 -2.041550 0 -2.187375 -1.458250 0
+ L3 16755200 0.000000 -1.604075 -3.208150 0 -1.166600 -2.624850 0
+ L3 16755200 0.000000 3.645625 1.895725 0 2.916500 1.458250 0
+ END$SEGS
+STRUCTURE 193 3 0 0 0 A 2 553.500000 154.500000 0 0.000000 "Sm Fall 5"" Fall-5b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -1.512364 1.434741 0
+ -1.297823 2.245973 0
+ -0.815107 2.453809 0
+ -0.272051 1.783369 0
+ 0.351458 2.366652 0
+ 1.102351 2.011319 0
+ 0.928036 -1.977797 0
+ 0.217370 -2.353243 0
+ -0.077623 -1.897344 0
+ -0.674314 -1.904049 0
+ -0.821811 -2.366652 0
+ -1.740313 -2.071658 0
+ -1.626339 -1.528602 0
+ -2.383935 -1.474967 0
+ -2.772790 -0.690553 0
+ -2.343709 -0.248063 0
+ -2.906878 0.000000 0
+ -2.759382 0.563169 0
+ -2.162690 0.777710 0
+ -2.591772 1.126339 0
+ -2.243143 1.756552 0
+ F4 6815744 0.000000 28 0
+ -2.091772 1.126339 0
+ -1.743143 1.756552 0
+ -1.012364 1.434741 0
+ -0.797823 2.245973 0
+ -0.315107 2.453809 0
+ 0.227949 1.783369 0
+ 0.851458 2.366652 0
+ 1.602351 2.011319 0
+ 1.320766 1.267131 0
+ 2.219155 1.019068 0
+ 2.353243 0.174314 0
+ 1.883935 -0.261471 0
+ 2.326426 -0.891685 0
+ 1.991206 -1.454854 0
+ 1.448150 -1.253722 0
+ 1.428036 -1.977797 0
+ 0.717370 -2.353243 0
+ 0.422377 -1.897344 0
+ -0.174314 -1.904049 0
+ -0.321811 -2.366652 0
+ -1.240313 -2.071658 0
+ -1.126339 -1.528602 0
+ -1.883935 -1.474967 0
+ -2.272790 -0.690553 0
+ -1.843709 -0.248063 0
+ -2.406878 0.000000 0
+ -2.259382 0.563169 0
+ -1.662690 0.777710 0
+ F4 12410368 0.000000 26 0
+ 0.335220 1.568829 0
+ 0.804528 2.038136 0
+ 1.253722 1.763256 0
+ 1.052590 0.978842 0
+ 1.950979 0.730779 0
+ 2.011319 0.341924 0
+ 1.448150 -0.046931 0
+ 1.937571 -0.784414 0
+ 1.723030 -1.039181 0
+ 1.186678 -1.025773 0
+ 1.159861 -1.642577 0
+ 0.697257 -1.897344 0
+ 0.315107 -1.448150 0
+ -0.261471 -1.528602 0
+ -0.395559 -1.837005 0
+ -0.884980 -1.709621 0
+ -0.891685 -1.173269 0
+ -1.300653 -1.159861 0
+ -1.568829 -0.623509 0
+ -1.092817 -0.174314 0
+ -1.542011 0.060340 0
+ -1.468263 0.382151 0
+ -0.750892 0.516239 0
+ -1.025773 1.005659 0
+ -0.576578 1.354288 0
+ -0.395559 1.749847 0
+ L3 12410368 0.000000 -0.425323 2.065854 0 -0.182281 1.883573 0
+ L3 12410368 0.000000 -1.701292 1.154448 0 -1.519010 0.972167 0
+ L3 12410368 0.000000 -1.275969 1.032927 0 -1.032927 0.850646 0
+ L3 12410368 0.000000 -2.065854 0.486083 0 -1.640531 0.486083 0
+ L3 12410368 0.000000 -1.397490 -0.182281 0 -1.701292 -0.121521 0
+ L3 12410368 0.000000 -1.883573 -0.911406 0 -1.579771 -0.972167 0
+ L3 12410368 0.000000 -0.911406 -1.822812 0 -1.032927 -2.005094 0
+ L3 12410368 0.000000 -0.060760 -1.640531 0 0.000000 -1.822812 0
+ L3 12410368 0.000000 0.789885 -1.944333 0 0.729125 -2.187375 0
+ L3 12410368 0.000000 1.822812 -1.154448 0 1.944333 -1.336729 0
+ L3 12410368 0.000000 -1.701292 1.519010 0 -1.579771 1.275969 0
+ L3 14915328 0.000000 -1.944333 1.154448 0 -1.762052 1.275969 0
+ L3 16755200 0.000000 2.126615 0.182281 0 1.883573 0.121521 0
+ L3 16755200 0.000000 -0.607604 1.944333 0 -0.668365 1.640531 0
+ L3 16755200 0.000000 -1.397490 1.275969 0 -0.972167 1.275969 0
+ L3 16755200 0.000000 -1.154448 0.668365 0 -1.519010 0.607604 0
+ L3 16755200 0.000000 -2.065854 0.121521 0 -1.701292 0.303802 0
+ L3 16755200 0.000000 -1.640531 -0.425323 0 -2.065854 -0.668365 0
+ L3 16755200 0.000000 -1.458250 -1.397490 0 -1.336729 -1.215208 0
+ L3 16755200 0.000000 -0.546844 -1.944333 0 -0.425323 -2.126615 0
+ L3 16755200 0.000000 0.303802 -1.640531 0 0.121521 -1.762052 0
+ L3 16755200 0.000000 1.154448 -1.822812 0 1.336729 -1.883573 0
+ L3 16755200 0.000000 2.126615 -0.850646 0 1.944333 -0.911406 0
+ F4 6815744 0.000000 5 0
+ -0.364024 1.152742 0
+ -0.329355 0.953396 0
+ 0.043336 0.788718 0
+ 0.147343 1.031401 0
+ -0.043336 1.213413 0
+ F4 6815744 0.000000 4 0
+ 1.187411 -0.043336 0
+ 0.736715 -0.147343 0
+ 0.641375 0.078005 0
+ 1.256749 0.112674 0
+ F4 6815744 0.000000 4 0
+ 0.286019 -1.152742 0
+ 0.060671 -0.979398 0
+ 0.121341 -0.615374 0
+ 0.260017 -0.667377 0
+ F4 6815744 0.000000 5 0
+ -0.910060 -0.104007 0
+ -0.788718 -0.017334 0
+ -0.372691 0.086672 0
+ -0.147343 -0.147343 0
+ -0.667377 -0.225348 0
+ L3 6815744 0.000000 0.850646 1.154448 0 0.546844 1.032927 0
+ L3 6815744 0.000000 0.546844 1.579771 0 0.425323 1.336729 0
+ L3 6815744 0.000000 -0.243042 1.519010 0 -0.121521 1.336729 0
+ L3 6815744 0.000000 -0.546844 0.668365 0 -0.243042 0.789885 0
+ L3 6815744 0.000000 -0.729125 0.364562 0 -0.486083 0.182281 0
+ L3 6815744 0.000000 -1.397490 0.121521 0 -1.093687 0.000000 0
+ L3 6815744 0.000000 -0.972167 -0.303802 0 -1.215208 -0.546844 0
+ L3 6815744 0.000000 -0.243042 -1.093687 0 -0.303802 -1.458250 0
+ L3 6815744 0.000000 -0.182281 -0.668365 0 -0.121521 -0.911406 0
+ L3 6815744 0.000000 0.425323 -1.093687 0 0.546844 -1.458250 0
+ L3 6815744 0.000000 0.729125 -1.032927 0 1.093687 -1.215208 0
+ L3 6815744 0.000000 1.640531 -0.425323 0 1.336729 -0.486083 0
+ L3 6815744 0.000000 1.640531 -0.972167 0 1.336729 -0.850646 0
+ L3 6815744 0.000000 1.762052 -0.729125 0 1.458250 -0.668365 0
+ L3 6815744 0.000000 0.729125 -1.762052 0 0.668365 -1.519010 0
+ L3 6815744 0.000000 1.093687 -1.579771 0 0.911406 -1.397490 0
+ L3 6815744 0.000000 1.822812 0.303802 0 1.458250 0.364562 0
+ L3 6815744 0.000000 1.822812 0.607604 0 1.519010 0.546844 0
+ L3 6815744 0.000000 -0.607604 -1.701292 0 -0.546844 -1.458250 0
+ L3 6815744 0.000000 -1.336729 -0.850646 0 -1.154448 -0.729125 0
+ L3 6815744 0.000000 0.850646 1.944333 0 0.729125 1.640531 0
+ L3 6815744 0.000000 1.093687 1.762052 0 0.911406 1.579771 0
+ L3 11184640 0.000000 0.850646 -1.640531 0 0.729125 -1.275969 0
+ L3 14915328 0.000000 0.972167 1.458250 0 0.789885 1.336729 0
+ L3 14915328 0.000000 -1.093687 0.303802 0 -0.850646 0.182281 0
+ F4 16755200 0.000000 4 0
+ 0.936061 0.962063 0
+ 0.554703 0.849389 0
+ 0.511367 0.563370 0
+ 0.762717 0.667377 0
+ F4 16755200 0.000000 3 0
+ 1.057403 -0.866724 0
+ 0.936061 -0.598039 0
+ 0.745382 -0.762717 0
+ F4 16755200 0.000000 4 0
+ -0.797386 -1.005399 0
+ -0.554703 -0.944729 0
+ -0.381358 -0.537369 0
+ -0.650043 -0.606707 0
+ L3 16755200 0.000000 0.121521 1.336729 0 0.243042 1.154448 0
+ L3 16755200 0.000000 -0.729125 0.972167 0 -0.486083 0.972167 0
+ L3 16755200 0.000000 -1.093687 -0.850646 0 -0.911406 -0.607604 0
+ L3 16755200 0.000000 -0.668365 -1.336729 0 -0.486083 -1.093687 0
+ L3 16755200 0.000000 1.519010 0.789885 0 1.215208 0.607604 0
+ END$SEGS
+STRUCTURE 194 3 0 0 0 A 2 549.000000 164.500000 0 0.000000 "Sm Fall 5"" Fall-5b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -1.512364 1.434741 0
+ -1.297823 2.245973 0
+ -0.815107 2.453809 0
+ -0.272051 1.783369 0
+ 0.351458 2.366652 0
+ 1.102351 2.011319 0
+ 0.928036 -1.977797 0
+ 0.217370 -2.353243 0
+ -0.077623 -1.897344 0
+ -0.674314 -1.904049 0
+ -0.821811 -2.366652 0
+ -1.740313 -2.071658 0
+ -1.626339 -1.528602 0
+ -2.383935 -1.474967 0
+ -2.772790 -0.690553 0
+ -2.343709 -0.248063 0
+ -2.906878 0.000000 0
+ -2.759382 0.563169 0
+ -2.162690 0.777710 0
+ -2.591772 1.126339 0
+ -2.243143 1.756552 0
+ F4 6815744 0.000000 28 0
+ -2.091772 1.126339 0
+ -1.743143 1.756552 0
+ -1.012364 1.434741 0
+ -0.797823 2.245973 0
+ -0.315107 2.453809 0
+ 0.227949 1.783369 0
+ 0.851458 2.366652 0
+ 1.602351 2.011319 0
+ 1.320766 1.267131 0
+ 2.219155 1.019068 0
+ 2.353243 0.174314 0
+ 1.883935 -0.261471 0
+ 2.326426 -0.891685 0
+ 1.991206 -1.454854 0
+ 1.448150 -1.253722 0
+ 1.428036 -1.977797 0
+ 0.717370 -2.353243 0
+ 0.422377 -1.897344 0
+ -0.174314 -1.904049 0
+ -0.321811 -2.366652 0
+ -1.240313 -2.071658 0
+ -1.126339 -1.528602 0
+ -1.883935 -1.474967 0
+ -2.272790 -0.690553 0
+ -1.843709 -0.248063 0
+ -2.406878 0.000000 0
+ -2.259382 0.563169 0
+ -1.662690 0.777710 0
+ F4 12410368 0.000000 26 0
+ 0.335220 1.568829 0
+ 0.804528 2.038136 0
+ 1.253722 1.763256 0
+ 1.052590 0.978842 0
+ 1.950979 0.730779 0
+ 2.011319 0.341924 0
+ 1.448150 -0.046931 0
+ 1.937571 -0.784414 0
+ 1.723030 -1.039181 0
+ 1.186678 -1.025773 0
+ 1.159861 -1.642577 0
+ 0.697257 -1.897344 0
+ 0.315107 -1.448150 0
+ -0.261471 -1.528602 0
+ -0.395559 -1.837005 0
+ -0.884980 -1.709621 0
+ -0.891685 -1.173269 0
+ -1.300653 -1.159861 0
+ -1.568829 -0.623509 0
+ -1.092817 -0.174314 0
+ -1.542011 0.060340 0
+ -1.468263 0.382151 0
+ -0.750892 0.516239 0
+ -1.025773 1.005659 0
+ -0.576578 1.354288 0
+ -0.395559 1.749847 0
+ L3 12410368 0.000000 -0.425323 2.065854 0 -0.182281 1.883573 0
+ L3 12410368 0.000000 -1.701292 1.154448 0 -1.519010 0.972167 0
+ L3 12410368 0.000000 -1.275969 1.032927 0 -1.032927 0.850646 0
+ L3 12410368 0.000000 -2.065854 0.486083 0 -1.640531 0.486083 0
+ L3 12410368 0.000000 -1.397490 -0.182281 0 -1.701292 -0.121521 0
+ L3 12410368 0.000000 -1.883573 -0.911406 0 -1.579771 -0.972167 0
+ L3 12410368 0.000000 -0.911406 -1.822812 0 -1.032927 -2.005094 0
+ L3 12410368 0.000000 -0.060760 -1.640531 0 0.000000 -1.822812 0
+ L3 12410368 0.000000 0.789885 -1.944333 0 0.729125 -2.187375 0
+ L3 12410368 0.000000 1.822812 -1.154448 0 1.944333 -1.336729 0
+ L3 12410368 0.000000 -1.701292 1.519010 0 -1.579771 1.275969 0
+ L3 14915328 0.000000 -1.944333 1.154448 0 -1.762052 1.275969 0
+ L3 16755200 0.000000 2.126615 0.182281 0 1.883573 0.121521 0
+ L3 16755200 0.000000 -0.607604 1.944333 0 -0.668365 1.640531 0
+ L3 16755200 0.000000 -1.397490 1.275969 0 -0.972167 1.275969 0
+ L3 16755200 0.000000 -1.154448 0.668365 0 -1.519010 0.607604 0
+ L3 16755200 0.000000 -2.065854 0.121521 0 -1.701292 0.303802 0
+ L3 16755200 0.000000 -1.640531 -0.425323 0 -2.065854 -0.668365 0
+ L3 16755200 0.000000 -1.458250 -1.397490 0 -1.336729 -1.215208 0
+ L3 16755200 0.000000 -0.546844 -1.944333 0 -0.425323 -2.126615 0
+ L3 16755200 0.000000 0.303802 -1.640531 0 0.121521 -1.762052 0
+ L3 16755200 0.000000 1.154448 -1.822812 0 1.336729 -1.883573 0
+ L3 16755200 0.000000 2.126615 -0.850646 0 1.944333 -0.911406 0
+ F4 6815744 0.000000 5 0
+ -0.364024 1.152742 0
+ -0.329355 0.953396 0
+ 0.043336 0.788718 0
+ 0.147343 1.031401 0
+ -0.043336 1.213413 0
+ F4 6815744 0.000000 4 0
+ 1.187411 -0.043336 0
+ 0.736715 -0.147343 0
+ 0.641375 0.078005 0
+ 1.256749 0.112674 0
+ F4 6815744 0.000000 4 0
+ 0.286019 -1.152742 0
+ 0.060671 -0.979398 0
+ 0.121341 -0.615374 0
+ 0.260017 -0.667377 0
+ F4 6815744 0.000000 5 0
+ -0.910060 -0.104007 0
+ -0.788718 -0.017334 0
+ -0.372691 0.086672 0
+ -0.147343 -0.147343 0
+ -0.667377 -0.225348 0
+ L3 6815744 0.000000 0.850646 1.154448 0 0.546844 1.032927 0
+ L3 6815744 0.000000 0.546844 1.579771 0 0.425323 1.336729 0
+ L3 6815744 0.000000 -0.243042 1.519010 0 -0.121521 1.336729 0
+ L3 6815744 0.000000 -0.546844 0.668365 0 -0.243042 0.789885 0
+ L3 6815744 0.000000 -0.729125 0.364562 0 -0.486083 0.182281 0
+ L3 6815744 0.000000 -1.397490 0.121521 0 -1.093687 0.000000 0
+ L3 6815744 0.000000 -0.972167 -0.303802 0 -1.215208 -0.546844 0
+ L3 6815744 0.000000 -0.243042 -1.093687 0 -0.303802 -1.458250 0
+ L3 6815744 0.000000 -0.182281 -0.668365 0 -0.121521 -0.911406 0
+ L3 6815744 0.000000 0.425323 -1.093687 0 0.546844 -1.458250 0
+ L3 6815744 0.000000 0.729125 -1.032927 0 1.093687 -1.215208 0
+ L3 6815744 0.000000 1.640531 -0.425323 0 1.336729 -0.486083 0
+ L3 6815744 0.000000 1.640531 -0.972167 0 1.336729 -0.850646 0
+ L3 6815744 0.000000 1.762052 -0.729125 0 1.458250 -0.668365 0
+ L3 6815744 0.000000 0.729125 -1.762052 0 0.668365 -1.519010 0
+ L3 6815744 0.000000 1.093687 -1.579771 0 0.911406 -1.397490 0
+ L3 6815744 0.000000 1.822812 0.303802 0 1.458250 0.364562 0
+ L3 6815744 0.000000 1.822812 0.607604 0 1.519010 0.546844 0
+ L3 6815744 0.000000 -0.607604 -1.701292 0 -0.546844 -1.458250 0
+ L3 6815744 0.000000 -1.336729 -0.850646 0 -1.154448 -0.729125 0
+ L3 6815744 0.000000 0.850646 1.944333 0 0.729125 1.640531 0
+ L3 6815744 0.000000 1.093687 1.762052 0 0.911406 1.579771 0
+ L3 11184640 0.000000 0.850646 -1.640531 0 0.729125 -1.275969 0
+ L3 14915328 0.000000 0.972167 1.458250 0 0.789885 1.336729 0
+ L3 14915328 0.000000 -1.093687 0.303802 0 -0.850646 0.182281 0
+ F4 16755200 0.000000 4 0
+ 0.936061 0.962063 0
+ 0.554703 0.849389 0
+ 0.511367 0.563370 0
+ 0.762717 0.667377 0
+ F4 16755200 0.000000 3 0
+ 1.057403 -0.866724 0
+ 0.936061 -0.598039 0
+ 0.745382 -0.762717 0
+ F4 16755200 0.000000 4 0
+ -0.797386 -1.005399 0
+ -0.554703 -0.944729 0
+ -0.381358 -0.537369 0
+ -0.650043 -0.606707 0
+ L3 16755200 0.000000 0.121521 1.336729 0 0.243042 1.154448 0
+ L3 16755200 0.000000 -0.729125 0.972167 0 -0.486083 0.972167 0
+ L3 16755200 0.000000 -1.093687 -0.850646 0 -0.911406 -0.607604 0
+ L3 16755200 0.000000 -0.668365 -1.336729 0 -0.486083 -1.093687 0
+ L3 16755200 0.000000 1.519010 0.789885 0 1.215208 0.607604 0
+ END$SEGS
+STRUCTURE 195 3 0 0 0 A 2 537.000000 157.500000 0 0.000000 "Sm Fall 5"" Fall-5b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -1.512364 1.434741 0
+ -1.297823 2.245973 0
+ -0.815107 2.453809 0
+ -0.272051 1.783369 0
+ 0.351458 2.366652 0
+ 1.102351 2.011319 0
+ 0.928036 -1.977797 0
+ 0.217370 -2.353243 0
+ -0.077623 -1.897344 0
+ -0.674314 -1.904049 0
+ -0.821811 -2.366652 0
+ -1.740313 -2.071658 0
+ -1.626339 -1.528602 0
+ -2.383935 -1.474967 0
+ -2.772790 -0.690553 0
+ -2.343709 -0.248063 0
+ -2.906878 0.000000 0
+ -2.759382 0.563169 0
+ -2.162690 0.777710 0
+ -2.591772 1.126339 0
+ -2.243143 1.756552 0
+ F4 6815744 0.000000 28 0
+ -2.091772 1.126339 0
+ -1.743143 1.756552 0
+ -1.012364 1.434741 0
+ -0.797823 2.245973 0
+ -0.315107 2.453809 0
+ 0.227949 1.783369 0
+ 0.851458 2.366652 0
+ 1.602351 2.011319 0
+ 1.320766 1.267131 0
+ 2.219155 1.019068 0
+ 2.353243 0.174314 0
+ 1.883935 -0.261471 0
+ 2.326426 -0.891685 0
+ 1.991206 -1.454854 0
+ 1.448150 -1.253722 0
+ 1.428036 -1.977797 0
+ 0.717370 -2.353243 0
+ 0.422377 -1.897344 0
+ -0.174314 -1.904049 0
+ -0.321811 -2.366652 0
+ -1.240313 -2.071658 0
+ -1.126339 -1.528602 0
+ -1.883935 -1.474967 0
+ -2.272790 -0.690553 0
+ -1.843709 -0.248063 0
+ -2.406878 0.000000 0
+ -2.259382 0.563169 0
+ -1.662690 0.777710 0
+ F4 12410368 0.000000 26 0
+ 0.335220 1.568829 0
+ 0.804528 2.038136 0
+ 1.253722 1.763256 0
+ 1.052590 0.978842 0
+ 1.950979 0.730779 0
+ 2.011319 0.341924 0
+ 1.448150 -0.046931 0
+ 1.937571 -0.784414 0
+ 1.723030 -1.039181 0
+ 1.186678 -1.025773 0
+ 1.159861 -1.642577 0
+ 0.697257 -1.897344 0
+ 0.315107 -1.448150 0
+ -0.261471 -1.528602 0
+ -0.395559 -1.837005 0
+ -0.884980 -1.709621 0
+ -0.891685 -1.173269 0
+ -1.300653 -1.159861 0
+ -1.568829 -0.623509 0
+ -1.092817 -0.174314 0
+ -1.542011 0.060340 0
+ -1.468263 0.382151 0
+ -0.750892 0.516239 0
+ -1.025773 1.005659 0
+ -0.576578 1.354288 0
+ -0.395559 1.749847 0
+ L3 12410368 0.000000 -0.425323 2.065854 0 -0.182281 1.883573 0
+ L3 12410368 0.000000 -1.701292 1.154448 0 -1.519010 0.972167 0
+ L3 12410368 0.000000 -1.275969 1.032927 0 -1.032927 0.850646 0
+ L3 12410368 0.000000 -2.065854 0.486083 0 -1.640531 0.486083 0
+ L3 12410368 0.000000 -1.397490 -0.182281 0 -1.701292 -0.121521 0
+ L3 12410368 0.000000 -1.883573 -0.911406 0 -1.579771 -0.972167 0
+ L3 12410368 0.000000 -0.911406 -1.822812 0 -1.032927 -2.005094 0
+ L3 12410368 0.000000 -0.060760 -1.640531 0 0.000000 -1.822812 0
+ L3 12410368 0.000000 0.789885 -1.944333 0 0.729125 -2.187375 0
+ L3 12410368 0.000000 1.822812 -1.154448 0 1.944333 -1.336729 0
+ L3 12410368 0.000000 -1.701292 1.519010 0 -1.579771 1.275969 0
+ L3 14915328 0.000000 -1.944333 1.154448 0 -1.762052 1.275969 0
+ L3 16755200 0.000000 2.126615 0.182281 0 1.883573 0.121521 0
+ L3 16755200 0.000000 -0.607604 1.944333 0 -0.668365 1.640531 0
+ L3 16755200 0.000000 -1.397490 1.275969 0 -0.972167 1.275969 0
+ L3 16755200 0.000000 -1.154448 0.668365 0 -1.519010 0.607604 0
+ L3 16755200 0.000000 -2.065854 0.121521 0 -1.701292 0.303802 0
+ L3 16755200 0.000000 -1.640531 -0.425323 0 -2.065854 -0.668365 0
+ L3 16755200 0.000000 -1.458250 -1.397490 0 -1.336729 -1.215208 0
+ L3 16755200 0.000000 -0.546844 -1.944333 0 -0.425323 -2.126615 0
+ L3 16755200 0.000000 0.303802 -1.640531 0 0.121521 -1.762052 0
+ L3 16755200 0.000000 1.154448 -1.822812 0 1.336729 -1.883573 0
+ L3 16755200 0.000000 2.126615 -0.850646 0 1.944333 -0.911406 0
+ F4 6815744 0.000000 5 0
+ -0.364024 1.152742 0
+ -0.329355 0.953396 0
+ 0.043336 0.788718 0
+ 0.147343 1.031401 0
+ -0.043336 1.213413 0
+ F4 6815744 0.000000 4 0
+ 1.187411 -0.043336 0
+ 0.736715 -0.147343 0
+ 0.641375 0.078005 0
+ 1.256749 0.112674 0
+ F4 6815744 0.000000 4 0
+ 0.286019 -1.152742 0
+ 0.060671 -0.979398 0
+ 0.121341 -0.615374 0
+ 0.260017 -0.667377 0
+ F4 6815744 0.000000 5 0
+ -0.910060 -0.104007 0
+ -0.788718 -0.017334 0
+ -0.372691 0.086672 0
+ -0.147343 -0.147343 0
+ -0.667377 -0.225348 0
+ L3 6815744 0.000000 0.850646 1.154448 0 0.546844 1.032927 0
+ L3 6815744 0.000000 0.546844 1.579771 0 0.425323 1.336729 0
+ L3 6815744 0.000000 -0.243042 1.519010 0 -0.121521 1.336729 0
+ L3 6815744 0.000000 -0.546844 0.668365 0 -0.243042 0.789885 0
+ L3 6815744 0.000000 -0.729125 0.364562 0 -0.486083 0.182281 0
+ L3 6815744 0.000000 -1.397490 0.121521 0 -1.093687 0.000000 0
+ L3 6815744 0.000000 -0.972167 -0.303802 0 -1.215208 -0.546844 0
+ L3 6815744 0.000000 -0.243042 -1.093687 0 -0.303802 -1.458250 0
+ L3 6815744 0.000000 -0.182281 -0.668365 0 -0.121521 -0.911406 0
+ L3 6815744 0.000000 0.425323 -1.093687 0 0.546844 -1.458250 0
+ L3 6815744 0.000000 0.729125 -1.032927 0 1.093687 -1.215208 0
+ L3 6815744 0.000000 1.640531 -0.425323 0 1.336729 -0.486083 0
+ L3 6815744 0.000000 1.640531 -0.972167 0 1.336729 -0.850646 0
+ L3 6815744 0.000000 1.762052 -0.729125 0 1.458250 -0.668365 0
+ L3 6815744 0.000000 0.729125 -1.762052 0 0.668365 -1.519010 0
+ L3 6815744 0.000000 1.093687 -1.579771 0 0.911406 -1.397490 0
+ L3 6815744 0.000000 1.822812 0.303802 0 1.458250 0.364562 0
+ L3 6815744 0.000000 1.822812 0.607604 0 1.519010 0.546844 0
+ L3 6815744 0.000000 -0.607604 -1.701292 0 -0.546844 -1.458250 0
+ L3 6815744 0.000000 -1.336729 -0.850646 0 -1.154448 -0.729125 0
+ L3 6815744 0.000000 0.850646 1.944333 0 0.729125 1.640531 0
+ L3 6815744 0.000000 1.093687 1.762052 0 0.911406 1.579771 0
+ L3 11184640 0.000000 0.850646 -1.640531 0 0.729125 -1.275969 0
+ L3 14915328 0.000000 0.972167 1.458250 0 0.789885 1.336729 0
+ L3 14915328 0.000000 -1.093687 0.303802 0 -0.850646 0.182281 0
+ F4 16755200 0.000000 4 0
+ 0.936061 0.962063 0
+ 0.554703 0.849389 0
+ 0.511367 0.563370 0
+ 0.762717 0.667377 0
+ F4 16755200 0.000000 3 0
+ 1.057403 -0.866724 0
+ 0.936061 -0.598039 0
+ 0.745382 -0.762717 0
+ F4 16755200 0.000000 4 0
+ -0.797386 -1.005399 0
+ -0.554703 -0.944729 0
+ -0.381358 -0.537369 0
+ -0.650043 -0.606707 0
+ L3 16755200 0.000000 0.121521 1.336729 0 0.243042 1.154448 0
+ L3 16755200 0.000000 -0.729125 0.972167 0 -0.486083 0.972167 0
+ L3 16755200 0.000000 -1.093687 -0.850646 0 -0.911406 -0.607604 0
+ L3 16755200 0.000000 -0.668365 -1.336729 0 -0.486083 -1.093687 0
+ L3 16755200 0.000000 1.519010 0.789885 0 1.215208 0.607604 0
+ END$SEGS
+STRUCTURE 196 3 0 0 0 A 2 545.000000 150.500000 0 0.000000 "Sm Fall 5"" Fall-5b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -1.512364 1.434741 0
+ -1.297823 2.245973 0
+ -0.815107 2.453809 0
+ -0.272051 1.783369 0
+ 0.351458 2.366652 0
+ 1.102351 2.011319 0
+ 0.928036 -1.977797 0
+ 0.217370 -2.353243 0
+ -0.077623 -1.897344 0
+ -0.674314 -1.904049 0
+ -0.821811 -2.366652 0
+ -1.740313 -2.071658 0
+ -1.626339 -1.528602 0
+ -2.383935 -1.474967 0
+ -2.772790 -0.690553 0
+ -2.343709 -0.248063 0
+ -2.906878 0.000000 0
+ -2.759382 0.563169 0
+ -2.162690 0.777710 0
+ -2.591772 1.126339 0
+ -2.243143 1.756552 0
+ F4 6815744 0.000000 28 0
+ -2.091772 1.126339 0
+ -1.743143 1.756552 0
+ -1.012364 1.434741 0
+ -0.797823 2.245973 0
+ -0.315107 2.453809 0
+ 0.227949 1.783369 0
+ 0.851458 2.366652 0
+ 1.602351 2.011319 0
+ 1.320766 1.267131 0
+ 2.219155 1.019068 0
+ 2.353243 0.174314 0
+ 1.883935 -0.261471 0
+ 2.326426 -0.891685 0
+ 1.991206 -1.454854 0
+ 1.448150 -1.253722 0
+ 1.428036 -1.977797 0
+ 0.717370 -2.353243 0
+ 0.422377 -1.897344 0
+ -0.174314 -1.904049 0
+ -0.321811 -2.366652 0
+ -1.240313 -2.071658 0
+ -1.126339 -1.528602 0
+ -1.883935 -1.474967 0
+ -2.272790 -0.690553 0
+ -1.843709 -0.248063 0
+ -2.406878 0.000000 0
+ -2.259382 0.563169 0
+ -1.662690 0.777710 0
+ F4 12410368 0.000000 26 0
+ 0.335220 1.568829 0
+ 0.804528 2.038136 0
+ 1.253722 1.763256 0
+ 1.052590 0.978842 0
+ 1.950979 0.730779 0
+ 2.011319 0.341924 0
+ 1.448150 -0.046931 0
+ 1.937571 -0.784414 0
+ 1.723030 -1.039181 0
+ 1.186678 -1.025773 0
+ 1.159861 -1.642577 0
+ 0.697257 -1.897344 0
+ 0.315107 -1.448150 0
+ -0.261471 -1.528602 0
+ -0.395559 -1.837005 0
+ -0.884980 -1.709621 0
+ -0.891685 -1.173269 0
+ -1.300653 -1.159861 0
+ -1.568829 -0.623509 0
+ -1.092817 -0.174314 0
+ -1.542011 0.060340 0
+ -1.468263 0.382151 0
+ -0.750892 0.516239 0
+ -1.025773 1.005659 0
+ -0.576578 1.354288 0
+ -0.395559 1.749847 0
+ L3 12410368 0.000000 -0.425323 2.065854 0 -0.182281 1.883573 0
+ L3 12410368 0.000000 -1.701292 1.154448 0 -1.519010 0.972167 0
+ L3 12410368 0.000000 -1.275969 1.032927 0 -1.032927 0.850646 0
+ L3 12410368 0.000000 -2.065854 0.486083 0 -1.640531 0.486083 0
+ L3 12410368 0.000000 -1.397490 -0.182281 0 -1.701292 -0.121521 0
+ L3 12410368 0.000000 -1.883573 -0.911406 0 -1.579771 -0.972167 0
+ L3 12410368 0.000000 -0.911406 -1.822812 0 -1.032927 -2.005094 0
+ L3 12410368 0.000000 -0.060760 -1.640531 0 0.000000 -1.822812 0
+ L3 12410368 0.000000 0.789885 -1.944333 0 0.729125 -2.187375 0
+ L3 12410368 0.000000 1.822812 -1.154448 0 1.944333 -1.336729 0
+ L3 12410368 0.000000 -1.701292 1.519010 0 -1.579771 1.275969 0
+ L3 14915328 0.000000 -1.944333 1.154448 0 -1.762052 1.275969 0
+ L3 16755200 0.000000 2.126615 0.182281 0 1.883573 0.121521 0
+ L3 16755200 0.000000 -0.607604 1.944333 0 -0.668365 1.640531 0
+ L3 16755200 0.000000 -1.397490 1.275969 0 -0.972167 1.275969 0
+ L3 16755200 0.000000 -1.154448 0.668365 0 -1.519010 0.607604 0
+ L3 16755200 0.000000 -2.065854 0.121521 0 -1.701292 0.303802 0
+ L3 16755200 0.000000 -1.640531 -0.425323 0 -2.065854 -0.668365 0
+ L3 16755200 0.000000 -1.458250 -1.397490 0 -1.336729 -1.215208 0
+ L3 16755200 0.000000 -0.546844 -1.944333 0 -0.425323 -2.126615 0
+ L3 16755200 0.000000 0.303802 -1.640531 0 0.121521 -1.762052 0
+ L3 16755200 0.000000 1.154448 -1.822812 0 1.336729 -1.883573 0
+ L3 16755200 0.000000 2.126615 -0.850646 0 1.944333 -0.911406 0
+ F4 6815744 0.000000 5 0
+ -0.364024 1.152742 0
+ -0.329355 0.953396 0
+ 0.043336 0.788718 0
+ 0.147343 1.031401 0
+ -0.043336 1.213413 0
+ F4 6815744 0.000000 4 0
+ 1.187411 -0.043336 0
+ 0.736715 -0.147343 0
+ 0.641375 0.078005 0
+ 1.256749 0.112674 0
+ F4 6815744 0.000000 4 0
+ 0.286019 -1.152742 0
+ 0.060671 -0.979398 0
+ 0.121341 -0.615374 0
+ 0.260017 -0.667377 0
+ F4 6815744 0.000000 5 0
+ -0.910060 -0.104007 0
+ -0.788718 -0.017334 0
+ -0.372691 0.086672 0
+ -0.147343 -0.147343 0
+ -0.667377 -0.225348 0
+ L3 6815744 0.000000 0.850646 1.154448 0 0.546844 1.032927 0
+ L3 6815744 0.000000 0.546844 1.579771 0 0.425323 1.336729 0
+ L3 6815744 0.000000 -0.243042 1.519010 0 -0.121521 1.336729 0
+ L3 6815744 0.000000 -0.546844 0.668365 0 -0.243042 0.789885 0
+ L3 6815744 0.000000 -0.729125 0.364562 0 -0.486083 0.182281 0
+ L3 6815744 0.000000 -1.397490 0.121521 0 -1.093687 0.000000 0
+ L3 6815744 0.000000 -0.972167 -0.303802 0 -1.215208 -0.546844 0
+ L3 6815744 0.000000 -0.243042 -1.093687 0 -0.303802 -1.458250 0
+ L3 6815744 0.000000 -0.182281 -0.668365 0 -0.121521 -0.911406 0
+ L3 6815744 0.000000 0.425323 -1.093687 0 0.546844 -1.458250 0
+ L3 6815744 0.000000 0.729125 -1.032927 0 1.093687 -1.215208 0
+ L3 6815744 0.000000 1.640531 -0.425323 0 1.336729 -0.486083 0
+ L3 6815744 0.000000 1.640531 -0.972167 0 1.336729 -0.850646 0
+ L3 6815744 0.000000 1.762052 -0.729125 0 1.458250 -0.668365 0
+ L3 6815744 0.000000 0.729125 -1.762052 0 0.668365 -1.519010 0
+ L3 6815744 0.000000 1.093687 -1.579771 0 0.911406 -1.397490 0
+ L3 6815744 0.000000 1.822812 0.303802 0 1.458250 0.364562 0
+ L3 6815744 0.000000 1.822812 0.607604 0 1.519010 0.546844 0
+ L3 6815744 0.000000 -0.607604 -1.701292 0 -0.546844 -1.458250 0
+ L3 6815744 0.000000 -1.336729 -0.850646 0 -1.154448 -0.729125 0
+ L3 6815744 0.000000 0.850646 1.944333 0 0.729125 1.640531 0
+ L3 6815744 0.000000 1.093687 1.762052 0 0.911406 1.579771 0
+ L3 11184640 0.000000 0.850646 -1.640531 0 0.729125 -1.275969 0
+ L3 14915328 0.000000 0.972167 1.458250 0 0.789885 1.336729 0
+ L3 14915328 0.000000 -1.093687 0.303802 0 -0.850646 0.182281 0
+ F4 16755200 0.000000 4 0
+ 0.936061 0.962063 0
+ 0.554703 0.849389 0
+ 0.511367 0.563370 0
+ 0.762717 0.667377 0
+ F4 16755200 0.000000 3 0
+ 1.057403 -0.866724 0
+ 0.936061 -0.598039 0
+ 0.745382 -0.762717 0
+ F4 16755200 0.000000 4 0
+ -0.797386 -1.005399 0
+ -0.554703 -0.944729 0
+ -0.381358 -0.537369 0
+ -0.650043 -0.606707 0
+ L3 16755200 0.000000 0.121521 1.336729 0 0.243042 1.154448 0
+ L3 16755200 0.000000 -0.729125 0.972167 0 -0.486083 0.972167 0
+ L3 16755200 0.000000 -1.093687 -0.850646 0 -0.911406 -0.607604 0
+ L3 16755200 0.000000 -0.668365 -1.336729 0 -0.486083 -1.093687 0
+ L3 16755200 0.000000 1.519010 0.789885 0 1.215208 0.607604 0
+ END$SEGS
+STRUCTURE 197 3 0 0 0 A 2 540.000000 175.500000 0 0.000000 "Sm Fall 6"" Fall-6a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -1.814837 -1.721689 0
+ -1.557388 -2.695167 0
+ -0.978128 -2.944571 0
+ -0.326461 -2.140043 0
+ 0.421750 -2.839982 0
+ 1.322821 -2.413583 0
+ 1.113644 2.373356 0
+ 0.260844 2.823892 0
+ -0.093148 2.276813 0
+ -0.809177 2.284858 0
+ -0.986173 2.839982 0
+ -2.088376 2.485990 0
+ -1.951606 1.834323 0
+ -2.860722 1.769961 0
+ -3.327348 0.828663 0
+ -2.812451 0.297675 0
+ -3.488254 0.000000 0
+ -3.311258 -0.675803 0
+ -2.595228 -0.933252 0
+ -3.110126 -1.351606 0
+ -2.691772 -2.107862 0
+ F4 6842368 0.000000 28 0
+ -2.510126 -1.351606 0
+ -2.091772 -2.107862 0
+ -1.214837 -1.721689 0
+ -0.957388 -2.695167 0
+ -0.378128 -2.944571 0
+ 0.273539 -2.140043 0
+ 1.021750 -2.839982 0
+ 1.922821 -2.413583 0
+ 1.584919 -1.520557 0
+ 2.662986 -1.222882 0
+ 2.823892 -0.209177 0
+ 2.260722 0.313766 0
+ 2.791711 1.070022 0
+ 2.389447 1.745825 0
+ 1.737780 1.504467 0
+ 1.713644 2.373356 0
+ 0.860844 2.823892 0
+ 0.506852 2.276813 0
+ -0.209177 2.284858 0
+ -0.386173 2.839982 0
+ -1.488376 2.485990 0
+ -1.351606 1.834323 0
+ -2.260722 1.769961 0
+ -2.727348 0.828663 0
+ -2.212451 0.297675 0
+ -2.888254 0.000000 0
+ -2.711258 -0.675803 0
+ -1.995228 -0.933252 0
+ F4 12434688 0.000000 26 0
+ 0.402264 -1.882594 0
+ 0.965433 -2.445764 0
+ 1.504467 -2.115907 0
+ 1.263108 -1.174610 0
+ 2.341175 -0.876935 0
+ 2.413583 -0.410309 0
+ 1.737780 0.056317 0
+ 2.325085 0.941297 0
+ 2.067636 1.247018 0
+ 1.424014 1.230927 0
+ 1.391833 1.971093 0
+ 0.836709 2.276813 0
+ 0.378128 1.737780 0
+ -0.313766 1.834323 0
+ -0.474671 2.204406 0
+ -1.061976 2.051545 0
+ -1.070022 1.407923 0
+ -1.560783 1.391833 0
+ -1.882594 0.748211 0
+ -1.311380 0.209177 0
+ -1.850413 -0.072407 0
+ -1.761915 -0.458581 0
+ -0.901071 -0.619486 0
+ -1.230927 -1.206791 0
+ -0.691894 -1.625146 0
+ -0.474671 -2.099817 0
+ L3 12434688 0.000000 -0.729125 -2.333200 0 -0.802037 -1.968637 0
+ L3 12434688 0.000000 -1.531162 -1.239512 0 -1.239512 -1.020775 0
+ L3 12434688 0.000000 -2.479025 -0.145825 0 -2.041550 -0.364562 0
+ L3 12434688 0.000000 -1.676987 0.218737 0 -2.041550 0.145825 0
+ L3 12434688 0.000000 -2.260287 1.093687 0 -1.895725 1.166600 0
+ L3 12434688 0.000000 -1.093687 2.187375 0 -1.239512 2.406112 0
+ L3 12434688 0.000000 0.364562 1.968637 0 0.145825 2.114462 0
+ L3 12434688 0.000000 1.385337 2.187375 0 1.604075 2.260287 0
+ L3 12434688 0.000000 2.551937 1.020775 0 2.333200 1.093687 0
+ L3 12434688 0.000000 -2.041550 -1.822812 0 -1.895725 -1.531162 0
+ L3 12434688 0.000000 -2.333200 -1.385337 0 -2.114462 -1.531162 0
+ L3 16755200 0.000000 -0.510387 -2.479025 0 -0.218737 -2.260287 0
+ L3 16755200 0.000000 -1.676987 -1.531162 0 -1.166600 -1.531162 0
+ L3 16755200 0.000000 -2.041550 -1.385337 0 -1.822812 -1.166600 0
+ L3 16755200 0.000000 -1.385337 -0.802037 0 -1.822812 -0.729125 0
+ L3 16755200 0.000000 -2.479025 -0.583300 0 -1.968637 -0.583300 0
+ L3 16755200 0.000000 -1.968637 0.510387 0 -2.479025 0.802037 0
+ L3 16755200 0.000000 -1.749900 1.676987 0 -1.604075 1.458250 0
+ L3 16755200 0.000000 -0.656212 2.333200 0 -0.510387 2.551937 0
+ L3 16755200 0.000000 -0.072912 1.968637 0 0.000000 2.187375 0
+ L3 16755200 0.000000 0.947862 2.333200 0 0.874950 2.624850 0
+ L3 16755200 0.000000 2.187375 1.385337 0 2.333200 1.604075 0
+ L3 16755200 0.000000 2.551937 -0.218737 0 2.260287 -0.145825 0
+ F4 6842368 0.000000 4 0
+ 1.123274 -1.154476 0
+ 0.665644 -1.019267 0
+ 0.613640 -0.676044 0
+ 0.915260 -0.800853 0
+ F4 6842368 0.000000 4 0
+ 1.424894 0.052003 0
+ 0.884058 0.176812 0
+ 0.769651 -0.093606 0
+ 1.508099 -0.135209 0
+ F4 6842368 0.000000 4 0
+ 0.343223 1.383291 0
+ 0.072805 1.175277 0
+ 0.145610 0.738448 0
+ 0.312020 0.800853 0
+ F4 6842368 0.000000 5 0
+ -1.092072 0.124808 0
+ -0.946462 0.020801 0
+ -0.447229 -0.104007 0
+ -0.176812 0.176812 0
+ -0.800853 0.270418 0
+ L3 6842368 0.000000 0.145825 -1.604075 0 0.291650 -1.385337 0
+ L3 6842368 0.000000 1.020775 -1.385337 0 0.656212 -1.239512 0
+ L3 6842368 0.000000 1.166600 -1.749900 0 0.947862 -1.604075 0
+ L3 6842368 0.000000 0.656212 -1.895725 0 0.510387 -1.604075 0
+ L3 6842368 0.000000 -0.291650 -1.822812 0 -0.145825 -1.604075 0
+ L3 6842368 0.000000 -0.874950 -1.166600 0 -0.583300 -1.166600 0
+ L3 6842368 0.000000 -0.656212 -0.802037 0 -0.291650 -0.947862 0
+ L3 6842368 0.000000 -0.874950 -0.437475 0 -0.583300 -0.218737 0
+ L3 6842368 0.000000 -1.312425 -0.364562 0 -1.020775 -0.218737 0
+ L3 6842368 0.000000 -1.676987 -0.145825 0 -1.312425 0.000000 0
+ L3 6842368 0.000000 -1.166600 0.364562 0 -1.458250 0.656212 0
+ L3 6842368 0.000000 -1.312425 1.020775 0 -1.093687 0.729125 0
+ L3 6842368 0.000000 -0.802037 1.604075 0 -0.583300 1.312425 0
+ L3 6842368 0.000000 -0.291650 1.312425 0 -0.364562 1.749900 0
+ L3 6842368 0.000000 -0.218737 0.802037 0 -0.145825 1.093687 0
+ L3 6842368 0.000000 0.510387 1.312425 0 0.656212 1.749900 0
+ L3 6842368 0.000000 0.874950 1.239512 0 1.312425 1.458250 0
+ L3 6842368 0.000000 1.968637 0.510387 0 1.604075 0.583300 0
+ L3 6842368 0.000000 1.968637 1.166600 0 1.604075 1.020775 0
+ L3 6842368 0.000000 2.114462 0.874950 0 1.749900 0.802037 0
+ L3 6842368 0.000000 0.874950 2.114462 0 0.802037 1.822812 0
+ L3 6842368 0.000000 1.312425 1.895725 0 1.093687 1.676987 0
+ L3 6842368 0.000000 1.020775 1.968637 0 0.874950 1.531162 0
+ L3 6842368 0.000000 2.187375 -0.364562 0 1.749900 -0.437475 0
+ L3 6842368 0.000000 1.822812 -0.947862 0 1.458250 -0.729125 0
+ L3 6842368 0.000000 2.187375 -0.729125 0 1.822812 -0.656212 0
+ L3 6842368 0.000000 -0.729125 2.041550 0 -0.656212 1.749900 0
+ L3 6842368 0.000000 -1.604075 1.020775 0 -1.385337 0.874950 0
+ L3 6842368 0.000000 1.020775 -2.333200 0 0.874950 -1.968637 0
+ L3 6842368 0.000000 1.312425 -2.114462 0 1.093687 -1.895725 0
+ F4 16755200 0.000000 5 0
+ -0.436829 -1.383291 0
+ -0.395226 -1.144075 0
+ 0.052003 -0.946462 0
+ 0.176812 -1.237681 0
+ -0.052003 -1.456096 0
+ F4 16755200 0.000000 3 0
+ 1.268883 1.040068 0
+ 1.123274 0.717647 0
+ 0.894459 0.915260 0
+ F4 16755200 0.000000 4 0
+ -0.956863 1.206479 0
+ -0.665644 1.133674 0
+ -0.457630 0.644842 0
+ -0.780051 0.728048 0
+ END$SEGS
+STRUCTURE 198 3 0 0 0 A 2 541.000000 162.500000 0 0.000000 "Sm Fall 6"" Fall-6a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -1.814837 -1.721689 0
+ -1.557388 -2.695167 0
+ -0.978128 -2.944571 0
+ -0.326461 -2.140043 0
+ 0.421750 -2.839982 0
+ 1.322821 -2.413583 0
+ 1.113644 2.373356 0
+ 0.260844 2.823892 0
+ -0.093148 2.276813 0
+ -0.809177 2.284858 0
+ -0.986173 2.839982 0
+ -2.088376 2.485990 0
+ -1.951606 1.834323 0
+ -2.860722 1.769961 0
+ -3.327348 0.828663 0
+ -2.812451 0.297675 0
+ -3.488254 0.000000 0
+ -3.311258 -0.675803 0
+ -2.595228 -0.933252 0
+ -3.110126 -1.351606 0
+ -2.691772 -2.107862 0
+ F4 6842368 0.000000 28 0
+ -2.510126 -1.351606 0
+ -2.091772 -2.107862 0
+ -1.214837 -1.721689 0
+ -0.957388 -2.695167 0
+ -0.378128 -2.944571 0
+ 0.273539 -2.140043 0
+ 1.021750 -2.839982 0
+ 1.922821 -2.413583 0
+ 1.584919 -1.520557 0
+ 2.662986 -1.222882 0
+ 2.823892 -0.209177 0
+ 2.260722 0.313766 0
+ 2.791711 1.070022 0
+ 2.389447 1.745825 0
+ 1.737780 1.504467 0
+ 1.713644 2.373356 0
+ 0.860844 2.823892 0
+ 0.506852 2.276813 0
+ -0.209177 2.284858 0
+ -0.386173 2.839982 0
+ -1.488376 2.485990 0
+ -1.351606 1.834323 0
+ -2.260722 1.769961 0
+ -2.727348 0.828663 0
+ -2.212451 0.297675 0
+ -2.888254 0.000000 0
+ -2.711258 -0.675803 0
+ -1.995228 -0.933252 0
+ F4 12434688 0.000000 26 0
+ 0.402264 -1.882594 0
+ 0.965433 -2.445764 0
+ 1.504467 -2.115907 0
+ 1.263108 -1.174610 0
+ 2.341175 -0.876935 0
+ 2.413583 -0.410309 0
+ 1.737780 0.056317 0
+ 2.325085 0.941297 0
+ 2.067636 1.247018 0
+ 1.424014 1.230927 0
+ 1.391833 1.971093 0
+ 0.836709 2.276813 0
+ 0.378128 1.737780 0
+ -0.313766 1.834323 0
+ -0.474671 2.204406 0
+ -1.061976 2.051545 0
+ -1.070022 1.407923 0
+ -1.560783 1.391833 0
+ -1.882594 0.748211 0
+ -1.311380 0.209177 0
+ -1.850413 -0.072407 0
+ -1.761915 -0.458581 0
+ -0.901071 -0.619486 0
+ -1.230927 -1.206791 0
+ -0.691894 -1.625146 0
+ -0.474671 -2.099817 0
+ L3 12434688 0.000000 -0.729125 -2.333200 0 -0.802037 -1.968637 0
+ L3 12434688 0.000000 -1.531162 -1.239512 0 -1.239512 -1.020775 0
+ L3 12434688 0.000000 -2.479025 -0.145825 0 -2.041550 -0.364562 0
+ L3 12434688 0.000000 -1.676987 0.218737 0 -2.041550 0.145825 0
+ L3 12434688 0.000000 -2.260287 1.093687 0 -1.895725 1.166600 0
+ L3 12434688 0.000000 -1.093687 2.187375 0 -1.239512 2.406112 0
+ L3 12434688 0.000000 0.364562 1.968637 0 0.145825 2.114462 0
+ L3 12434688 0.000000 1.385337 2.187375 0 1.604075 2.260287 0
+ L3 12434688 0.000000 2.551937 1.020775 0 2.333200 1.093687 0
+ L3 12434688 0.000000 -2.041550 -1.822812 0 -1.895725 -1.531162 0
+ L3 12434688 0.000000 -2.333200 -1.385337 0 -2.114462 -1.531162 0
+ L3 16755200 0.000000 -0.510387 -2.479025 0 -0.218737 -2.260287 0
+ L3 16755200 0.000000 -1.676987 -1.531162 0 -1.166600 -1.531162 0
+ L3 16755200 0.000000 -2.041550 -1.385337 0 -1.822812 -1.166600 0
+ L3 16755200 0.000000 -1.385337 -0.802037 0 -1.822812 -0.729125 0
+ L3 16755200 0.000000 -2.479025 -0.583300 0 -1.968637 -0.583300 0
+ L3 16755200 0.000000 -1.968637 0.510387 0 -2.479025 0.802037 0
+ L3 16755200 0.000000 -1.749900 1.676987 0 -1.604075 1.458250 0
+ L3 16755200 0.000000 -0.656212 2.333200 0 -0.510387 2.551937 0
+ L3 16755200 0.000000 -0.072912 1.968637 0 0.000000 2.187375 0
+ L3 16755200 0.000000 0.947862 2.333200 0 0.874950 2.624850 0
+ L3 16755200 0.000000 2.187375 1.385337 0 2.333200 1.604075 0
+ L3 16755200 0.000000 2.551937 -0.218737 0 2.260287 -0.145825 0
+ F4 6842368 0.000000 4 0
+ 1.123274 -1.154476 0
+ 0.665644 -1.019267 0
+ 0.613640 -0.676044 0
+ 0.915260 -0.800853 0
+ F4 6842368 0.000000 4 0
+ 1.424894 0.052003 0
+ 0.884058 0.176812 0
+ 0.769651 -0.093606 0
+ 1.508099 -0.135209 0
+ F4 6842368 0.000000 4 0
+ 0.343223 1.383291 0
+ 0.072805 1.175277 0
+ 0.145610 0.738448 0
+ 0.312020 0.800853 0
+ F4 6842368 0.000000 5 0
+ -1.092072 0.124808 0
+ -0.946462 0.020801 0
+ -0.447229 -0.104007 0
+ -0.176812 0.176812 0
+ -0.800853 0.270418 0
+ L3 6842368 0.000000 0.145825 -1.604075 0 0.291650 -1.385337 0
+ L3 6842368 0.000000 1.020775 -1.385337 0 0.656212 -1.239512 0
+ L3 6842368 0.000000 1.166600 -1.749900 0 0.947862 -1.604075 0
+ L3 6842368 0.000000 0.656212 -1.895725 0 0.510387 -1.604075 0
+ L3 6842368 0.000000 -0.291650 -1.822812 0 -0.145825 -1.604075 0
+ L3 6842368 0.000000 -0.874950 -1.166600 0 -0.583300 -1.166600 0
+ L3 6842368 0.000000 -0.656212 -0.802037 0 -0.291650 -0.947862 0
+ L3 6842368 0.000000 -0.874950 -0.437475 0 -0.583300 -0.218737 0
+ L3 6842368 0.000000 -1.312425 -0.364562 0 -1.020775 -0.218737 0
+ L3 6842368 0.000000 -1.676987 -0.145825 0 -1.312425 0.000000 0
+ L3 6842368 0.000000 -1.166600 0.364562 0 -1.458250 0.656212 0
+ L3 6842368 0.000000 -1.312425 1.020775 0 -1.093687 0.729125 0
+ L3 6842368 0.000000 -0.802037 1.604075 0 -0.583300 1.312425 0
+ L3 6842368 0.000000 -0.291650 1.312425 0 -0.364562 1.749900 0
+ L3 6842368 0.000000 -0.218737 0.802037 0 -0.145825 1.093687 0
+ L3 6842368 0.000000 0.510387 1.312425 0 0.656212 1.749900 0
+ L3 6842368 0.000000 0.874950 1.239512 0 1.312425 1.458250 0
+ L3 6842368 0.000000 1.968637 0.510387 0 1.604075 0.583300 0
+ L3 6842368 0.000000 1.968637 1.166600 0 1.604075 1.020775 0
+ L3 6842368 0.000000 2.114462 0.874950 0 1.749900 0.802037 0
+ L3 6842368 0.000000 0.874950 2.114462 0 0.802037 1.822812 0
+ L3 6842368 0.000000 1.312425 1.895725 0 1.093687 1.676987 0
+ L3 6842368 0.000000 1.020775 1.968637 0 0.874950 1.531162 0
+ L3 6842368 0.000000 2.187375 -0.364562 0 1.749900 -0.437475 0
+ L3 6842368 0.000000 1.822812 -0.947862 0 1.458250 -0.729125 0
+ L3 6842368 0.000000 2.187375 -0.729125 0 1.822812 -0.656212 0
+ L3 6842368 0.000000 -0.729125 2.041550 0 -0.656212 1.749900 0
+ L3 6842368 0.000000 -1.604075 1.020775 0 -1.385337 0.874950 0
+ L3 6842368 0.000000 1.020775 -2.333200 0 0.874950 -1.968637 0
+ L3 6842368 0.000000 1.312425 -2.114462 0 1.093687 -1.895725 0
+ F4 16755200 0.000000 5 0
+ -0.436829 -1.383291 0
+ -0.395226 -1.144075 0
+ 0.052003 -0.946462 0
+ 0.176812 -1.237681 0
+ -0.052003 -1.456096 0
+ F4 16755200 0.000000 3 0
+ 1.268883 1.040068 0
+ 1.123274 0.717647 0
+ 0.894459 0.915260 0
+ F4 16755200 0.000000 4 0
+ -0.956863 1.206479 0
+ -0.665644 1.133674 0
+ -0.457630 0.644842 0
+ -0.780051 0.728048 0
+ END$SEGS
+STRUCTURE 199 3 0 0 0 A 2 550.000000 157.500000 0 0.000000 "Sm Fall 6"" Fall-6a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -1.814837 -1.721689 0
+ -1.557388 -2.695167 0
+ -0.978128 -2.944571 0
+ -0.326461 -2.140043 0
+ 0.421750 -2.839982 0
+ 1.322821 -2.413583 0
+ 1.113644 2.373356 0
+ 0.260844 2.823892 0
+ -0.093148 2.276813 0
+ -0.809177 2.284858 0
+ -0.986173 2.839982 0
+ -2.088376 2.485990 0
+ -1.951606 1.834323 0
+ -2.860722 1.769961 0
+ -3.327348 0.828663 0
+ -2.812451 0.297675 0
+ -3.488254 0.000000 0
+ -3.311258 -0.675803 0
+ -2.595228 -0.933252 0
+ -3.110126 -1.351606 0
+ -2.691772 -2.107862 0
+ F4 6842368 0.000000 28 0
+ -2.510126 -1.351606 0
+ -2.091772 -2.107862 0
+ -1.214837 -1.721689 0
+ -0.957388 -2.695167 0
+ -0.378128 -2.944571 0
+ 0.273539 -2.140043 0
+ 1.021750 -2.839982 0
+ 1.922821 -2.413583 0
+ 1.584919 -1.520557 0
+ 2.662986 -1.222882 0
+ 2.823892 -0.209177 0
+ 2.260722 0.313766 0
+ 2.791711 1.070022 0
+ 2.389447 1.745825 0
+ 1.737780 1.504467 0
+ 1.713644 2.373356 0
+ 0.860844 2.823892 0
+ 0.506852 2.276813 0
+ -0.209177 2.284858 0
+ -0.386173 2.839982 0
+ -1.488376 2.485990 0
+ -1.351606 1.834323 0
+ -2.260722 1.769961 0
+ -2.727348 0.828663 0
+ -2.212451 0.297675 0
+ -2.888254 0.000000 0
+ -2.711258 -0.675803 0
+ -1.995228 -0.933252 0
+ F4 12434688 0.000000 26 0
+ 0.402264 -1.882594 0
+ 0.965433 -2.445764 0
+ 1.504467 -2.115907 0
+ 1.263108 -1.174610 0
+ 2.341175 -0.876935 0
+ 2.413583 -0.410309 0
+ 1.737780 0.056317 0
+ 2.325085 0.941297 0
+ 2.067636 1.247018 0
+ 1.424014 1.230927 0
+ 1.391833 1.971093 0
+ 0.836709 2.276813 0
+ 0.378128 1.737780 0
+ -0.313766 1.834323 0
+ -0.474671 2.204406 0
+ -1.061976 2.051545 0
+ -1.070022 1.407923 0
+ -1.560783 1.391833 0
+ -1.882594 0.748211 0
+ -1.311380 0.209177 0
+ -1.850413 -0.072407 0
+ -1.761915 -0.458581 0
+ -0.901071 -0.619486 0
+ -1.230927 -1.206791 0
+ -0.691894 -1.625146 0
+ -0.474671 -2.099817 0
+ L3 12434688 0.000000 -0.729125 -2.333200 0 -0.802037 -1.968637 0
+ L3 12434688 0.000000 -1.531162 -1.239512 0 -1.239512 -1.020775 0
+ L3 12434688 0.000000 -2.479025 -0.145825 0 -2.041550 -0.364562 0
+ L3 12434688 0.000000 -1.676987 0.218737 0 -2.041550 0.145825 0
+ L3 12434688 0.000000 -2.260287 1.093687 0 -1.895725 1.166600 0
+ L3 12434688 0.000000 -1.093687 2.187375 0 -1.239512 2.406112 0
+ L3 12434688 0.000000 0.364562 1.968637 0 0.145825 2.114462 0
+ L3 12434688 0.000000 1.385337 2.187375 0 1.604075 2.260287 0
+ L3 12434688 0.000000 2.551937 1.020775 0 2.333200 1.093687 0
+ L3 12434688 0.000000 -2.041550 -1.822812 0 -1.895725 -1.531162 0
+ L3 12434688 0.000000 -2.333200 -1.385337 0 -2.114462 -1.531162 0
+ L3 16755200 0.000000 -0.510387 -2.479025 0 -0.218737 -2.260287 0
+ L3 16755200 0.000000 -1.676987 -1.531162 0 -1.166600 -1.531162 0
+ L3 16755200 0.000000 -2.041550 -1.385337 0 -1.822812 -1.166600 0
+ L3 16755200 0.000000 -1.385337 -0.802037 0 -1.822812 -0.729125 0
+ L3 16755200 0.000000 -2.479025 -0.583300 0 -1.968637 -0.583300 0
+ L3 16755200 0.000000 -1.968637 0.510387 0 -2.479025 0.802037 0
+ L3 16755200 0.000000 -1.749900 1.676987 0 -1.604075 1.458250 0
+ L3 16755200 0.000000 -0.656212 2.333200 0 -0.510387 2.551937 0
+ L3 16755200 0.000000 -0.072912 1.968637 0 0.000000 2.187375 0
+ L3 16755200 0.000000 0.947862 2.333200 0 0.874950 2.624850 0
+ L3 16755200 0.000000 2.187375 1.385337 0 2.333200 1.604075 0
+ L3 16755200 0.000000 2.551937 -0.218737 0 2.260287 -0.145825 0
+ F4 6842368 0.000000 4 0
+ 1.123274 -1.154476 0
+ 0.665644 -1.019267 0
+ 0.613640 -0.676044 0
+ 0.915260 -0.800853 0
+ F4 6842368 0.000000 4 0
+ 1.424894 0.052003 0
+ 0.884058 0.176812 0
+ 0.769651 -0.093606 0
+ 1.508099 -0.135209 0
+ F4 6842368 0.000000 4 0
+ 0.343223 1.383291 0
+ 0.072805 1.175277 0
+ 0.145610 0.738448 0
+ 0.312020 0.800853 0
+ F4 6842368 0.000000 5 0
+ -1.092072 0.124808 0
+ -0.946462 0.020801 0
+ -0.447229 -0.104007 0
+ -0.176812 0.176812 0
+ -0.800853 0.270418 0
+ L3 6842368 0.000000 0.145825 -1.604075 0 0.291650 -1.385337 0
+ L3 6842368 0.000000 1.020775 -1.385337 0 0.656212 -1.239512 0
+ L3 6842368 0.000000 1.166600 -1.749900 0 0.947862 -1.604075 0
+ L3 6842368 0.000000 0.656212 -1.895725 0 0.510387 -1.604075 0
+ L3 6842368 0.000000 -0.291650 -1.822812 0 -0.145825 -1.604075 0
+ L3 6842368 0.000000 -0.874950 -1.166600 0 -0.583300 -1.166600 0
+ L3 6842368 0.000000 -0.656212 -0.802037 0 -0.291650 -0.947862 0
+ L3 6842368 0.000000 -0.874950 -0.437475 0 -0.583300 -0.218737 0
+ L3 6842368 0.000000 -1.312425 -0.364562 0 -1.020775 -0.218737 0
+ L3 6842368 0.000000 -1.676987 -0.145825 0 -1.312425 0.000000 0
+ L3 6842368 0.000000 -1.166600 0.364562 0 -1.458250 0.656212 0
+ L3 6842368 0.000000 -1.312425 1.020775 0 -1.093687 0.729125 0
+ L3 6842368 0.000000 -0.802037 1.604075 0 -0.583300 1.312425 0
+ L3 6842368 0.000000 -0.291650 1.312425 0 -0.364562 1.749900 0
+ L3 6842368 0.000000 -0.218737 0.802037 0 -0.145825 1.093687 0
+ L3 6842368 0.000000 0.510387 1.312425 0 0.656212 1.749900 0
+ L3 6842368 0.000000 0.874950 1.239512 0 1.312425 1.458250 0
+ L3 6842368 0.000000 1.968637 0.510387 0 1.604075 0.583300 0
+ L3 6842368 0.000000 1.968637 1.166600 0 1.604075 1.020775 0
+ L3 6842368 0.000000 2.114462 0.874950 0 1.749900 0.802037 0
+ L3 6842368 0.000000 0.874950 2.114462 0 0.802037 1.822812 0
+ L3 6842368 0.000000 1.312425 1.895725 0 1.093687 1.676987 0
+ L3 6842368 0.000000 1.020775 1.968637 0 0.874950 1.531162 0
+ L3 6842368 0.000000 2.187375 -0.364562 0 1.749900 -0.437475 0
+ L3 6842368 0.000000 1.822812 -0.947862 0 1.458250 -0.729125 0
+ L3 6842368 0.000000 2.187375 -0.729125 0 1.822812 -0.656212 0
+ L3 6842368 0.000000 -0.729125 2.041550 0 -0.656212 1.749900 0
+ L3 6842368 0.000000 -1.604075 1.020775 0 -1.385337 0.874950 0
+ L3 6842368 0.000000 1.020775 -2.333200 0 0.874950 -1.968637 0
+ L3 6842368 0.000000 1.312425 -2.114462 0 1.093687 -1.895725 0
+ F4 16755200 0.000000 5 0
+ -0.436829 -1.383291 0
+ -0.395226 -1.144075 0
+ 0.052003 -0.946462 0
+ 0.176812 -1.237681 0
+ -0.052003 -1.456096 0
+ F4 16755200 0.000000 3 0
+ 1.268883 1.040068 0
+ 1.123274 0.717647 0
+ 0.894459 0.915260 0
+ F4 16755200 0.000000 4 0
+ -0.956863 1.206479 0
+ -0.665644 1.133674 0
+ -0.457630 0.644842 0
+ -0.780051 0.728048 0
+ END$SEGS
+STRUCTURE 200 3 0 0 0 A 2 551.000000 149.000000 0 0.000000 "Sm Fall 6"" Fall-6a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -1.814837 -1.721689 0
+ -1.557388 -2.695167 0
+ -0.978128 -2.944571 0
+ -0.326461 -2.140043 0
+ 0.421750 -2.839982 0
+ 1.322821 -2.413583 0
+ 1.113644 2.373356 0
+ 0.260844 2.823892 0
+ -0.093148 2.276813 0
+ -0.809177 2.284858 0
+ -0.986173 2.839982 0
+ -2.088376 2.485990 0
+ -1.951606 1.834323 0
+ -2.860722 1.769961 0
+ -3.327348 0.828663 0
+ -2.812451 0.297675 0
+ -3.488254 0.000000 0
+ -3.311258 -0.675803 0
+ -2.595228 -0.933252 0
+ -3.110126 -1.351606 0
+ -2.691772 -2.107862 0
+ F4 6842368 0.000000 28 0
+ -2.510126 -1.351606 0
+ -2.091772 -2.107862 0
+ -1.214837 -1.721689 0
+ -0.957388 -2.695167 0
+ -0.378128 -2.944571 0
+ 0.273539 -2.140043 0
+ 1.021750 -2.839982 0
+ 1.922821 -2.413583 0
+ 1.584919 -1.520557 0
+ 2.662986 -1.222882 0
+ 2.823892 -0.209177 0
+ 2.260722 0.313766 0
+ 2.791711 1.070022 0
+ 2.389447 1.745825 0
+ 1.737780 1.504467 0
+ 1.713644 2.373356 0
+ 0.860844 2.823892 0
+ 0.506852 2.276813 0
+ -0.209177 2.284858 0
+ -0.386173 2.839982 0
+ -1.488376 2.485990 0
+ -1.351606 1.834323 0
+ -2.260722 1.769961 0
+ -2.727348 0.828663 0
+ -2.212451 0.297675 0
+ -2.888254 0.000000 0
+ -2.711258 -0.675803 0
+ -1.995228 -0.933252 0
+ F4 12434688 0.000000 26 0
+ 0.402264 -1.882594 0
+ 0.965433 -2.445764 0
+ 1.504467 -2.115907 0
+ 1.263108 -1.174610 0
+ 2.341175 -0.876935 0
+ 2.413583 -0.410309 0
+ 1.737780 0.056317 0
+ 2.325085 0.941297 0
+ 2.067636 1.247018 0
+ 1.424014 1.230927 0
+ 1.391833 1.971093 0
+ 0.836709 2.276813 0
+ 0.378128 1.737780 0
+ -0.313766 1.834323 0
+ -0.474671 2.204406 0
+ -1.061976 2.051545 0
+ -1.070022 1.407923 0
+ -1.560783 1.391833 0
+ -1.882594 0.748211 0
+ -1.311380 0.209177 0
+ -1.850413 -0.072407 0
+ -1.761915 -0.458581 0
+ -0.901071 -0.619486 0
+ -1.230927 -1.206791 0
+ -0.691894 -1.625146 0
+ -0.474671 -2.099817 0
+ L3 12434688 0.000000 -0.729125 -2.333200 0 -0.802037 -1.968637 0
+ L3 12434688 0.000000 -1.531162 -1.239512 0 -1.239512 -1.020775 0
+ L3 12434688 0.000000 -2.479025 -0.145825 0 -2.041550 -0.364562 0
+ L3 12434688 0.000000 -1.676987 0.218737 0 -2.041550 0.145825 0
+ L3 12434688 0.000000 -2.260287 1.093687 0 -1.895725 1.166600 0
+ L3 12434688 0.000000 -1.093687 2.187375 0 -1.239512 2.406112 0
+ L3 12434688 0.000000 0.364562 1.968637 0 0.145825 2.114462 0
+ L3 12434688 0.000000 1.385337 2.187375 0 1.604075 2.260287 0
+ L3 12434688 0.000000 2.551937 1.020775 0 2.333200 1.093687 0
+ L3 12434688 0.000000 -2.041550 -1.822812 0 -1.895725 -1.531162 0
+ L3 12434688 0.000000 -2.333200 -1.385337 0 -2.114462 -1.531162 0
+ L3 16755200 0.000000 -0.510387 -2.479025 0 -0.218737 -2.260287 0
+ L3 16755200 0.000000 -1.676987 -1.531162 0 -1.166600 -1.531162 0
+ L3 16755200 0.000000 -2.041550 -1.385337 0 -1.822812 -1.166600 0
+ L3 16755200 0.000000 -1.385337 -0.802037 0 -1.822812 -0.729125 0
+ L3 16755200 0.000000 -2.479025 -0.583300 0 -1.968637 -0.583300 0
+ L3 16755200 0.000000 -1.968637 0.510387 0 -2.479025 0.802037 0
+ L3 16755200 0.000000 -1.749900 1.676987 0 -1.604075 1.458250 0
+ L3 16755200 0.000000 -0.656212 2.333200 0 -0.510387 2.551937 0
+ L3 16755200 0.000000 -0.072912 1.968637 0 0.000000 2.187375 0
+ L3 16755200 0.000000 0.947862 2.333200 0 0.874950 2.624850 0
+ L3 16755200 0.000000 2.187375 1.385337 0 2.333200 1.604075 0
+ L3 16755200 0.000000 2.551937 -0.218737 0 2.260287 -0.145825 0
+ F4 6842368 0.000000 4 0
+ 1.123274 -1.154476 0
+ 0.665644 -1.019267 0
+ 0.613640 -0.676044 0
+ 0.915260 -0.800853 0
+ F4 6842368 0.000000 4 0
+ 1.424894 0.052003 0
+ 0.884058 0.176812 0
+ 0.769651 -0.093606 0
+ 1.508099 -0.135209 0
+ F4 6842368 0.000000 4 0
+ 0.343223 1.383291 0
+ 0.072805 1.175277 0
+ 0.145610 0.738448 0
+ 0.312020 0.800853 0
+ F4 6842368 0.000000 5 0
+ -1.092072 0.124808 0
+ -0.946462 0.020801 0
+ -0.447229 -0.104007 0
+ -0.176812 0.176812 0
+ -0.800853 0.270418 0
+ L3 6842368 0.000000 0.145825 -1.604075 0 0.291650 -1.385337 0
+ L3 6842368 0.000000 1.020775 -1.385337 0 0.656212 -1.239512 0
+ L3 6842368 0.000000 1.166600 -1.749900 0 0.947862 -1.604075 0
+ L3 6842368 0.000000 0.656212 -1.895725 0 0.510387 -1.604075 0
+ L3 6842368 0.000000 -0.291650 -1.822812 0 -0.145825 -1.604075 0
+ L3 6842368 0.000000 -0.874950 -1.166600 0 -0.583300 -1.166600 0
+ L3 6842368 0.000000 -0.656212 -0.802037 0 -0.291650 -0.947862 0
+ L3 6842368 0.000000 -0.874950 -0.437475 0 -0.583300 -0.218737 0
+ L3 6842368 0.000000 -1.312425 -0.364562 0 -1.020775 -0.218737 0
+ L3 6842368 0.000000 -1.676987 -0.145825 0 -1.312425 0.000000 0
+ L3 6842368 0.000000 -1.166600 0.364562 0 -1.458250 0.656212 0
+ L3 6842368 0.000000 -1.312425 1.020775 0 -1.093687 0.729125 0
+ L3 6842368 0.000000 -0.802037 1.604075 0 -0.583300 1.312425 0
+ L3 6842368 0.000000 -0.291650 1.312425 0 -0.364562 1.749900 0
+ L3 6842368 0.000000 -0.218737 0.802037 0 -0.145825 1.093687 0
+ L3 6842368 0.000000 0.510387 1.312425 0 0.656212 1.749900 0
+ L3 6842368 0.000000 0.874950 1.239512 0 1.312425 1.458250 0
+ L3 6842368 0.000000 1.968637 0.510387 0 1.604075 0.583300 0
+ L3 6842368 0.000000 1.968637 1.166600 0 1.604075 1.020775 0
+ L3 6842368 0.000000 2.114462 0.874950 0 1.749900 0.802037 0
+ L3 6842368 0.000000 0.874950 2.114462 0 0.802037 1.822812 0
+ L3 6842368 0.000000 1.312425 1.895725 0 1.093687 1.676987 0
+ L3 6842368 0.000000 1.020775 1.968637 0 0.874950 1.531162 0
+ L3 6842368 0.000000 2.187375 -0.364562 0 1.749900 -0.437475 0
+ L3 6842368 0.000000 1.822812 -0.947862 0 1.458250 -0.729125 0
+ L3 6842368 0.000000 2.187375 -0.729125 0 1.822812 -0.656212 0
+ L3 6842368 0.000000 -0.729125 2.041550 0 -0.656212 1.749900 0
+ L3 6842368 0.000000 -1.604075 1.020775 0 -1.385337 0.874950 0
+ L3 6842368 0.000000 1.020775 -2.333200 0 0.874950 -1.968637 0
+ L3 6842368 0.000000 1.312425 -2.114462 0 1.093687 -1.895725 0
+ F4 16755200 0.000000 5 0
+ -0.436829 -1.383291 0
+ -0.395226 -1.144075 0
+ 0.052003 -0.946462 0
+ 0.176812 -1.237681 0
+ -0.052003 -1.456096 0
+ F4 16755200 0.000000 3 0
+ 1.268883 1.040068 0
+ 1.123274 0.717647 0
+ 0.894459 0.915260 0
+ F4 16755200 0.000000 4 0
+ -0.956863 1.206479 0
+ -0.665644 1.133674 0
+ -0.457630 0.644842 0
+ -0.780051 0.728048 0
+ END$SEGS
+STRUCTURE 201 3 0 0 0 A 2 539.000000 152.500000 0 0.000000 "Sm Fall 6"" Fall-6a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -1.814837 -1.721689 0
+ -1.557388 -2.695167 0
+ -0.978128 -2.944571 0
+ -0.326461 -2.140043 0
+ 0.421750 -2.839982 0
+ 1.322821 -2.413583 0
+ 1.113644 2.373356 0
+ 0.260844 2.823892 0
+ -0.093148 2.276813 0
+ -0.809177 2.284858 0
+ -0.986173 2.839982 0
+ -2.088376 2.485990 0
+ -1.951606 1.834323 0
+ -2.860722 1.769961 0
+ -3.327348 0.828663 0
+ -2.812451 0.297675 0
+ -3.488254 0.000000 0
+ -3.311258 -0.675803 0
+ -2.595228 -0.933252 0
+ -3.110126 -1.351606 0
+ -2.691772 -2.107862 0
+ F4 6842368 0.000000 28 0
+ -2.510126 -1.351606 0
+ -2.091772 -2.107862 0
+ -1.214837 -1.721689 0
+ -0.957388 -2.695167 0
+ -0.378128 -2.944571 0
+ 0.273539 -2.140043 0
+ 1.021750 -2.839982 0
+ 1.922821 -2.413583 0
+ 1.584919 -1.520557 0
+ 2.662986 -1.222882 0
+ 2.823892 -0.209177 0
+ 2.260722 0.313766 0
+ 2.791711 1.070022 0
+ 2.389447 1.745825 0
+ 1.737780 1.504467 0
+ 1.713644 2.373356 0
+ 0.860844 2.823892 0
+ 0.506852 2.276813 0
+ -0.209177 2.284858 0
+ -0.386173 2.839982 0
+ -1.488376 2.485990 0
+ -1.351606 1.834323 0
+ -2.260722 1.769961 0
+ -2.727348 0.828663 0
+ -2.212451 0.297675 0
+ -2.888254 0.000000 0
+ -2.711258 -0.675803 0
+ -1.995228 -0.933252 0
+ F4 12434688 0.000000 26 0
+ 0.402264 -1.882594 0
+ 0.965433 -2.445764 0
+ 1.504467 -2.115907 0
+ 1.263108 -1.174610 0
+ 2.341175 -0.876935 0
+ 2.413583 -0.410309 0
+ 1.737780 0.056317 0
+ 2.325085 0.941297 0
+ 2.067636 1.247018 0
+ 1.424014 1.230927 0
+ 1.391833 1.971093 0
+ 0.836709 2.276813 0
+ 0.378128 1.737780 0
+ -0.313766 1.834323 0
+ -0.474671 2.204406 0
+ -1.061976 2.051545 0
+ -1.070022 1.407923 0
+ -1.560783 1.391833 0
+ -1.882594 0.748211 0
+ -1.311380 0.209177 0
+ -1.850413 -0.072407 0
+ -1.761915 -0.458581 0
+ -0.901071 -0.619486 0
+ -1.230927 -1.206791 0
+ -0.691894 -1.625146 0
+ -0.474671 -2.099817 0
+ L3 12434688 0.000000 -0.729125 -2.333200 0 -0.802037 -1.968637 0
+ L3 12434688 0.000000 -1.531162 -1.239512 0 -1.239512 -1.020775 0
+ L3 12434688 0.000000 -2.479025 -0.145825 0 -2.041550 -0.364562 0
+ L3 12434688 0.000000 -1.676987 0.218737 0 -2.041550 0.145825 0
+ L3 12434688 0.000000 -2.260287 1.093687 0 -1.895725 1.166600 0
+ L3 12434688 0.000000 -1.093687 2.187375 0 -1.239512 2.406112 0
+ L3 12434688 0.000000 0.364562 1.968637 0 0.145825 2.114462 0
+ L3 12434688 0.000000 1.385337 2.187375 0 1.604075 2.260287 0
+ L3 12434688 0.000000 2.551937 1.020775 0 2.333200 1.093687 0
+ L3 12434688 0.000000 -2.041550 -1.822812 0 -1.895725 -1.531162 0
+ L3 12434688 0.000000 -2.333200 -1.385337 0 -2.114462 -1.531162 0
+ L3 16755200 0.000000 -0.510387 -2.479025 0 -0.218737 -2.260287 0
+ L3 16755200 0.000000 -1.676987 -1.531162 0 -1.166600 -1.531162 0
+ L3 16755200 0.000000 -2.041550 -1.385337 0 -1.822812 -1.166600 0
+ L3 16755200 0.000000 -1.385337 -0.802037 0 -1.822812 -0.729125 0
+ L3 16755200 0.000000 -2.479025 -0.583300 0 -1.968637 -0.583300 0
+ L3 16755200 0.000000 -1.968637 0.510387 0 -2.479025 0.802037 0
+ L3 16755200 0.000000 -1.749900 1.676987 0 -1.604075 1.458250 0
+ L3 16755200 0.000000 -0.656212 2.333200 0 -0.510387 2.551937 0
+ L3 16755200 0.000000 -0.072912 1.968637 0 0.000000 2.187375 0
+ L3 16755200 0.000000 0.947862 2.333200 0 0.874950 2.624850 0
+ L3 16755200 0.000000 2.187375 1.385337 0 2.333200 1.604075 0
+ L3 16755200 0.000000 2.551937 -0.218737 0 2.260287 -0.145825 0
+ F4 6842368 0.000000 4 0
+ 1.123274 -1.154476 0
+ 0.665644 -1.019267 0
+ 0.613640 -0.676044 0
+ 0.915260 -0.800853 0
+ F4 6842368 0.000000 4 0
+ 1.424894 0.052003 0
+ 0.884058 0.176812 0
+ 0.769651 -0.093606 0
+ 1.508099 -0.135209 0
+ F4 6842368 0.000000 4 0
+ 0.343223 1.383291 0
+ 0.072805 1.175277 0
+ 0.145610 0.738448 0
+ 0.312020 0.800853 0
+ F4 6842368 0.000000 5 0
+ -1.092072 0.124808 0
+ -0.946462 0.020801 0
+ -0.447229 -0.104007 0
+ -0.176812 0.176812 0
+ -0.800853 0.270418 0
+ L3 6842368 0.000000 0.145825 -1.604075 0 0.291650 -1.385337 0
+ L3 6842368 0.000000 1.020775 -1.385337 0 0.656212 -1.239512 0
+ L3 6842368 0.000000 1.166600 -1.749900 0 0.947862 -1.604075 0
+ L3 6842368 0.000000 0.656212 -1.895725 0 0.510387 -1.604075 0
+ L3 6842368 0.000000 -0.291650 -1.822812 0 -0.145825 -1.604075 0
+ L3 6842368 0.000000 -0.874950 -1.166600 0 -0.583300 -1.166600 0
+ L3 6842368 0.000000 -0.656212 -0.802037 0 -0.291650 -0.947862 0
+ L3 6842368 0.000000 -0.874950 -0.437475 0 -0.583300 -0.218737 0
+ L3 6842368 0.000000 -1.312425 -0.364562 0 -1.020775 -0.218737 0
+ L3 6842368 0.000000 -1.676987 -0.145825 0 -1.312425 0.000000 0
+ L3 6842368 0.000000 -1.166600 0.364562 0 -1.458250 0.656212 0
+ L3 6842368 0.000000 -1.312425 1.020775 0 -1.093687 0.729125 0
+ L3 6842368 0.000000 -0.802037 1.604075 0 -0.583300 1.312425 0
+ L3 6842368 0.000000 -0.291650 1.312425 0 -0.364562 1.749900 0
+ L3 6842368 0.000000 -0.218737 0.802037 0 -0.145825 1.093687 0
+ L3 6842368 0.000000 0.510387 1.312425 0 0.656212 1.749900 0
+ L3 6842368 0.000000 0.874950 1.239512 0 1.312425 1.458250 0
+ L3 6842368 0.000000 1.968637 0.510387 0 1.604075 0.583300 0
+ L3 6842368 0.000000 1.968637 1.166600 0 1.604075 1.020775 0
+ L3 6842368 0.000000 2.114462 0.874950 0 1.749900 0.802037 0
+ L3 6842368 0.000000 0.874950 2.114462 0 0.802037 1.822812 0
+ L3 6842368 0.000000 1.312425 1.895725 0 1.093687 1.676987 0
+ L3 6842368 0.000000 1.020775 1.968637 0 0.874950 1.531162 0
+ L3 6842368 0.000000 2.187375 -0.364562 0 1.749900 -0.437475 0
+ L3 6842368 0.000000 1.822812 -0.947862 0 1.458250 -0.729125 0
+ L3 6842368 0.000000 2.187375 -0.729125 0 1.822812 -0.656212 0
+ L3 6842368 0.000000 -0.729125 2.041550 0 -0.656212 1.749900 0
+ L3 6842368 0.000000 -1.604075 1.020775 0 -1.385337 0.874950 0
+ L3 6842368 0.000000 1.020775 -2.333200 0 0.874950 -1.968637 0
+ L3 6842368 0.000000 1.312425 -2.114462 0 1.093687 -1.895725 0
+ F4 16755200 0.000000 5 0
+ -0.436829 -1.383291 0
+ -0.395226 -1.144075 0
+ 0.052003 -0.946462 0
+ 0.176812 -1.237681 0
+ -0.052003 -1.456096 0
+ F4 16755200 0.000000 3 0
+ 1.268883 1.040068 0
+ 1.123274 0.717647 0
+ 0.894459 0.915260 0
+ F4 16755200 0.000000 4 0
+ -0.956863 1.206479 0
+ -0.665644 1.133674 0
+ -0.457630 0.644842 0
+ -0.780051 0.728048 0
+ END$SEGS
+STRUCTURE 202 3 0 0 0 A 2 77.500000 106.500000 0 0.000000 "Lg Fall 24"" Fall-24a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -7.259346 -6.886756 0
+ -6.229551 -10.780669 0
+ -3.912512 -11.778284 0
+ -1.305843 -8.560173 0
+ 1.687000 -11.359929 0
+ 5.291283 -9.654331 0
+ 4.454575 9.493425 0
+ 1.043378 11.295567 0
+ -0.372591 9.107252 0
+ -3.236709 9.139433 0
+ -3.944693 11.359929 0
+ -8.353504 9.943961 0
+ -7.806425 7.337291 0
+ -11.442890 7.079843 0
+ -13.309394 3.314654 0
+ -11.249803 1.190701 0
+ -13.953016 0.000000 0
+ -13.245032 -2.703213 0
+ -10.380913 -3.733008 0
+ -12.440504 -5.406425 0
+ -10.767087 -8.431449 0
+ F4 6842368 0.000000 28 0
+ -10.040504 -5.406425 0
+ -8.367087 -8.431449 0
+ -4.859346 -6.886756 0
+ -3.829551 -10.780669 0
+ -1.512512 -11.778284 0
+ 1.094157 -8.560173 0
+ 4.087000 -11.359929 0
+ 7.691283 -9.654331 0
+ 6.339677 -6.082228 0
+ 10.651945 -4.891528 0
+ 11.295567 -0.836709 0
+ 9.042890 1.255063 0
+ 11.166843 4.280087 0
+ 9.557787 6.983299 0
+ 6.951118 6.017866 0
+ 6.854575 9.493425 0
+ 3.443378 11.295567 0
+ 2.027409 9.107252 0
+ -0.836709 9.139433 0
+ -1.544693 11.359929 0
+ -5.953504 9.943961 0
+ -5.406425 7.337291 0
+ -9.042890 7.079843 0
+ -10.909394 3.314654 0
+ -8.849803 1.190701 0
+ -11.553016 0.000000 0
+ -10.845032 -2.703213 0
+ -7.980913 -3.733008 0
+ F4 12434688 0.000000 26 0
+ 1.609055 -7.530378 0
+ 3.861732 -9.783055 0
+ 6.017866 -8.463630 0
+ 5.052433 -4.698441 0
+ 9.364701 -3.507740 0
+ 9.654331 -1.641236 0
+ 6.951118 0.225268 0
+ 9.300339 3.765189 0
+ 8.270543 4.988071 0
+ 5.696055 4.923709 0
+ 5.567331 7.884370 0
+ 3.346835 9.107252 0
+ 1.512512 6.951118 0
+ -1.255063 7.337291 0
+ -1.898685 8.817622 0
+ -4.247906 8.206181 0
+ -4.280087 5.631693 0
+ -6.243134 5.567331 0
+ -7.530378 2.992843 0
+ -5.245520 0.836709 0
+ -7.401654 -0.289630 0
+ -7.047661 -1.834323 0
+ -3.604283 -2.477945 0
+ -4.923709 -4.827165 0
+ -2.767575 -6.500583 0
+ -1.898685 -8.399268 0
+ L3 12434688 0.000000 -2.916500 -9.332800 0 -3.208150 -7.874550 0
+ L3 12434688 0.000000 -6.124650 -4.958050 0 -4.958050 -4.083100 0
+ L3 12434688 0.000000 -9.916100 -0.583300 0 -8.166200 -1.458250 0
+ L3 12434688 0.000000 -6.707950 0.874950 0 -8.166200 0.583300 0
+ L3 12434688 0.000000 -9.041150 4.374750 0 -7.582900 4.666400 0
+ L3 12434688 0.000000 -4.374750 8.749500 0 -4.958050 9.624450 0
+ L3 12434688 0.000000 1.458250 7.874550 0 0.583300 8.457850 0
+ L3 12434688 0.000000 5.541350 8.749500 0 6.416300 9.041150 0
+ L3 12434688 0.000000 10.207750 4.083100 0 9.332800 4.374750 0
+ L3 12434688 0.000000 -8.166200 -7.291250 0 -7.582900 -6.124650 0
+ L3 12434688 0.000000 -9.332800 -5.541350 0 -8.457850 -6.124650 0
+ L3 16755200 0.000000 -2.041550 -9.916100 0 -0.874950 -9.041150 0
+ L3 16755200 0.000000 -6.707950 -6.124650 0 -4.666400 -6.124650 0
+ L3 16755200 0.000000 -8.166200 -5.541350 0 -7.291250 -4.666400 0
+ L3 16755200 0.000000 -5.541350 -3.208150 0 -7.291250 -2.916500 0
+ L3 16755200 0.000000 -9.916100 -2.333200 0 -7.874550 -2.333200 0
+ L3 16755200 0.000000 -7.874550 2.041550 0 -9.916100 3.208150 0
+ L3 16755200 0.000000 -6.999600 6.707950 0 -6.416300 5.833000 0
+ L3 16755200 0.000000 -2.624850 9.332800 0 -2.041550 10.207750 0
+ L3 16755200 0.000000 -0.291650 7.874550 0 0.000000 8.749500 0
+ L3 16755200 0.000000 3.791450 9.332800 0 3.499800 10.499400 0
+ L3 16755200 0.000000 8.749500 5.541350 0 9.332800 6.416300 0
+ L3 16755200 0.000000 10.207750 -0.874950 0 9.041150 -0.583300 0
+ F4 6842368 0.000000 4 0
+ 4.493095 -4.617903 0
+ 2.662575 -4.077068 0
+ 2.454561 -2.704178 0
+ 3.661040 -3.203410 0
+ F4 6842368 0.000000 4 0
+ 5.699574 0.208014 0
+ 3.536232 0.707246 0
+ 3.078602 -0.374425 0
+ 6.032396 -0.540836 0
+ F4 6842368 0.000000 4 0
+ 1.372890 5.533163 0
+ 0.291219 4.701109 0
+ 0.582438 2.953794 0
+ 1.248082 3.203410 0
+ F4 6842368 0.000000 5 0
+ -4.368287 0.499233 0
+ -3.785849 0.083205 0
+ -1.788917 -0.416027 0
+ -0.707246 0.707246 0
+ -3.203410 1.081671 0
+ L3 6842368 0.000000 0.583300 -6.416300 0 1.166600 -5.541350 0
+ L3 6842368 0.000000 4.083100 -5.541350 0 2.624850 -4.958050 0
+ L3 6842368 0.000000 4.666400 -6.999600 0 3.791450 -6.416300 0
+ L3 6842368 0.000000 2.624850 -7.582900 0 2.041550 -6.416300 0
+ L3 6842368 0.000000 -1.166600 -7.291250 0 -0.583300 -6.416300 0
+ L3 6842368 0.000000 -3.499800 -4.666400 0 -2.333200 -4.666400 0
+ L3 6842368 0.000000 -2.624850 -3.208150 0 -1.166600 -3.791450 0
+ L3 6842368 0.000000 -3.499800 -1.749900 0 -2.333200 -0.874950 0
+ L3 6842368 0.000000 -5.249700 -1.458250 0 -4.083100 -0.874950 0
+ L3 6842368 0.000000 -6.707950 -0.583300 0 -5.249700 0.000000 0
+ L3 6842368 0.000000 -4.666400 1.458250 0 -5.833000 2.624850 0
+ L3 6842368 0.000000 -5.249700 4.083100 0 -4.374750 2.916500 0
+ L3 6842368 0.000000 -3.208150 6.416300 0 -2.333200 5.249700 0
+ L3 6842368 0.000000 -1.166600 5.249700 0 -1.458250 6.999600 0
+ L3 6842368 0.000000 -0.874950 3.208150 0 -0.583300 4.374750 0
+ L3 6842368 0.000000 2.041550 5.249700 0 2.624850 6.999600 0
+ L3 6842368 0.000000 3.499800 4.958050 0 5.249700 5.833000 0
+ L3 6842368 0.000000 7.874550 2.041550 0 6.416300 2.333200 0
+ L3 6842368 0.000000 7.874550 4.666400 0 6.416300 4.083100 0
+ L3 6842368 0.000000 8.457850 3.499800 0 6.999600 3.208150 0
+ L3 6842368 0.000000 3.499800 8.457850 0 3.208150 7.291250 0
+ L3 6842368 0.000000 5.249700 7.582900 0 4.374750 6.707950 0
+ L3 6842368 0.000000 4.083100 7.874550 0 3.499800 6.124650 0
+ L3 6842368 0.000000 8.749500 -1.458250 0 6.999600 -1.749900 0
+ L3 6842368 0.000000 7.291250 -3.791450 0 5.833000 -2.916500 0
+ L3 6842368 0.000000 8.749500 -2.916500 0 7.291250 -2.624850 0
+ L3 6842368 0.000000 -2.916500 8.166200 0 -2.624850 6.999600 0
+ L3 6842368 0.000000 -6.416300 4.083100 0 -5.541350 3.499800 0
+ L3 6842368 0.000000 4.083100 -9.332800 0 3.499800 -7.874550 0
+ L3 6842368 0.000000 5.249700 -8.457850 0 4.374750 -7.582900 0
+ F4 16755200 0.000000 5 0
+ -1.747315 -5.533163 0
+ -1.580904 -4.576300 0
+ 0.208014 -3.785849 0
+ 0.707246 -4.950725 0
+ -0.208014 -5.824382 0
+ F4 16755200 0.000000 3 0
+ 5.075533 4.160273 0
+ 4.493095 2.870588 0
+ 3.577835 3.661040 0
+ F4 16755200 0.000000 4 0
+ -3.827451 4.825917 0
+ -2.662575 4.534698 0
+ -1.830520 2.579369 0
+ -3.120205 2.912191 0
+ END$SEGS
+END$TRACKS
diff --git a/app/lib/examples/Mianne Benchwork.xtc b/app/lib/examples/Mianne Benchwork.xtc
new file mode 100644
index 0000000..5bc7583
--- /dev/null
+++ b/app/lib/examples/Mianne Benchwork.xtc
@@ -0,0 +1,818 @@
+#XTrackCAD Version: 5.3.0Beta1, Date: Mon Dec 13 12:19:22 2021
+
+VERSION 12 5.2.0
+TITLE1 Mianne Benchwork
+TITLE2
+MAPSCALE 256
+ROOMSIZE 156.000000 x 108.000000
+SCALE HO
+LAYERS 0 1 0 1 255 0 0 0 0 "Main"
+LAYERS 1 0 0 0 128 0 0 0 0 "Branch"
+LAYERS 2 0 0 1 32768 0 0 0 0 "Structure"
+LAYERS 3 0 0 0 32768 0 0 0 0 "Vegetation"
+LAYERS 4 0 0 0 12632256 0 0 0 0 "Hardscape"
+LAYERS 5 0 0 1 32960 0 0 0 0 "Water Feature"
+LAYERS 6 1 0 1 8388608 0 1 0 0 "Seven"
+LAYERS 7 0 0 1 8388736 0 0 0 0 ""
+LAYERS 8 0 0 1 8421376 0 0 0 0 "Stonework"
+LAYERS 9 0 0 1 8404992 0 1 0 0 "Benchwork"
+LAYERS CURRENT 0
+STRUCTURE 1 0 0 0 0 HO 2 54.000000 102.000000 0 90.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 2 0 0 0 0 HO 2 30.000000 54.000000 0 0.000000 "Benchwork 34""/45 I-Beam 2445"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.618718 0.618718 0 23.381282 23.381282 0 133120
+ END$SEGS
+STRUCTURE 3 0 0 0 0 HO 2 30.000000 102.000000 0 90.000000 "Benchwork 48"" I-Beam 0048"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 47.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 4 0 0 0 0 HO 2 30.000000 102.000000 0 0.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 5 0 0 0 0 HO 2 6.000000 102.000000 0 0.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 6 0 0 0 0 HO 2 6.000000 102.000000 0 90.000000 "Benchwork 48"" I-Beam 0048"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 47.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 7 0 0 0 0 HO 2 6.000000 78.000000 0 0.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 8 0 0 0 0 HO 2 6.000000 54.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 -1.000000 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 -1.000000 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 9 0 0 0 0 HO 2 6.000000 102.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 -1.000000 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 -1.000000 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 10 0 0 0 0 HO 2 30.000000 101.875000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 -1.000000 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 -1.000000 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 11 0 0 0 0 HO 2 30.000000 54.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 -1.000000 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 -1.000000 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 12 0 0 0 0 HO 2 30.000000 78.000000 0 0.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 13 0 0 0 0 HO 2 54.000000 102.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 -1.000000 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 -1.000000 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 14 0 0 0 0 HO 2 54.000000 78.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 -1.000000 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 -1.000000 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 15 0 0 0 0 HO 2 6.000000 54.000000 0 0.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 16 0 0 0 0 HO 2 30.000000 78.000000 0 0.000000 "Benchwork Double Adapter 10yy"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ F4 16760832 0.062500 4 0
+ -0.375000 0.375000 0
+ -0.875000 0.375000 0
+ -0.875000 -0.375000 0
+ -0.375000 -0.375000 0
+ Y4 0 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ Y4 0 0.062500 4 0
+ -0.375000 0.375000 0
+ -0.875000 0.375000 0
+ -0.875000 -0.375000 0
+ -0.375000 -0.375000 0
+ L3 16760832 0.062500 -0.350000 0.000000 0 0.350000 0.000000 0
+ END$SEGS
+STRUCTURE 17 0 0 0 0 HO 2 6.000000 78.000000 0 0.000000 "Benchwork Single Adapter 10xx"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ Y4 0 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ END$SEGS
+STRUCTURE 18 0 0 0 0 HO 2 78.000000 102.000000 0 90.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 19 0 0 0 0 HO 2 102.000000 102.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 20 0 0 0 0 HO 2 102.000000 78.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 21 0 0 0 0 HO 2 102.000000 102.000000 0 90.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 22 0 0 0 0 HO 2 102.000000 102.000000 0 0.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 23 0 0 0 0 HO 2 126.000000 102.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 24 0 0 0 0 HO 2 126.000000 102.000000 0 0.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 25 0 0 0 0 HO 2 150.000000 102.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 26 0 0 0 0 HO 2 6.000000 54.000000 0 90.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 27 0 0 0 0 HO 2 6.000000 30.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 28 0 0 0 0 HO 2 6.000000 30.000000 0 0.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 29 0 0 0 0 HO 2 30.000000 54.000000 0 90.000000 "Benchwork 34""/45 I-Beam 2445"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.618718 0.618718 0 23.381282 23.381282 0 133120
+ END$SEGS
+STRUCTURE 30 0 0 0 0 HO 2 54.000000 30.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 31 0 0 0 0 HO 2 30.000000 30.000000 0 0.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 32 0 0 0 0 HO 2 6.000000 6.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 33 0 0 0 0 HO 2 30.000000 6.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 34 0 0 0 0 HO 2 54.000000 6.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 35 0 0 0 0 HO 2 102.000000 6.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 36 0 0 0 0 HO 2 102.000000 30.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 37 0 0 0 0 HO 2 6.000000 6.000000 0 0.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 38 0 0 0 0 HO 2 30.000000 6.000000 0 0.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 39 0 0 0 0 HO 2 102.000000 30.000000 0 90.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 40 0 0 0 0 HO 2 54.000000 30.000000 0 90.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 41 0 0 0 0 HO 2 6.000000 30.000000 0 90.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 42 0 0 0 0 HO 2 30.000000 54.000000 0 90.000000 "Benchwork 48"" I-Beam 0048"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 47.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 43 0 0 0 0 HO 2 30.000000 30.000000 0 0.000000 "Benchwork Double Adapter 10yy"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ F4 16760832 0.062500 4 0
+ -0.375000 0.375000 0
+ -0.875000 0.375000 0
+ -0.875000 -0.375000 0
+ -0.375000 -0.375000 0
+ Y4 0 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ Y4 0 0.062500 4 0
+ -0.375000 0.375000 0
+ -0.875000 0.375000 0
+ -0.875000 -0.375000 0
+ -0.375000 -0.375000 0
+ L3 16760832 0.062500 -0.350000 0.000000 0 0.350000 0.000000 0
+ END$SEGS
+STRUCTURE 44 0 0 0 0 HO 2 54.000000 102.000000 0 0.000000 "Benchwork 48"" I-Beam 0048"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 47.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 45 0 0 0 0 HO 2 54.000000 78.000000 0 0.000000 "Benchwork 48"" I-Beam 0048"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 47.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 46 0 0 0 0 HO 2 78.000000 102.000000 0 90.000000 "Benchwork Single Adapter 10xx"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ Y4 0 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ END$SEGS
+STRUCTURE 47 0 0 0 0 HO 2 78.000000 78.000000 0 270.000000 "Benchwork Single Adapter 10xx"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ Y4 0 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ END$SEGS
+STRUCTURE 48 0 0 0 0 HO 2 78.000000 30.000000 0 90.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 49 0 0 0 0 HO 2 54.000000 30.000000 0 0.000000 "Benchwork 48"" I-Beam 0048"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 47.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 50 0 0 0 0 HO 2 54.000000 6.000000 0 0.000000 "Benchwork 48"" I-Beam 0048"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 47.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 51 0 0 0 0 HO 2 78.000000 30.000000 0 90.000000 "Benchwork Single Adapter 10xx"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ Y4 0 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ END$SEGS
+STRUCTURE 52 0 0 0 0 HO 2 78.000000 6.000000 0 270.000000 "Benchwork Single Adapter 10xx"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ Y4 0 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ END$SEGS
+STRUCTURE 53 0 0 0 0 HO 2 102.000000 30.000000 0 0.000000 "Benchwork 17""/45 I-Beam 1245"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.618718 0.618718 0 11.381282 11.381282 0 133120
+ END$SEGS
+STRUCTURE 54 0 0 0 0 HO 2 114.000000 42.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 55 0 0 0 0 HO 2 150.000000 42.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 56 0 0 0 0 HO 2 150.000000 6.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 57 0 0 0 0 HO 2 102.000000 6.000000 0 0.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 58 0 0 0 0 HO 2 126.000000 6.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 59 0 0 0 0 HO 2 126.000000 6.000000 0 0.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 60 0 0 0 0 HO 2 126.000000 42.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 61 0 0 0 0 HO 2 114.000000 66.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 62 0 0 0 0 HO 2 126.000000 66.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 63 0 0 0 0 HO 2 150.000000 66.000000 0 0.000000 "Benchwork 40"" Leg 1040"
+ D 0.000000 0.000000
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE 64 0 0 0 0 HO 2 126.000000 102.000000 0 90.000000 "Benchwork 36"" I-Beam 0036"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 35.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 65 0 0 0 0 HO 2 150.000000 102.000000 0 90.000000 "Benchwork 36"" I-Beam 0036"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 35.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 66 0 0 0 0 HO 2 102.000000 78.000000 0 90.000000 "Benchwork 17""/45 I-Beam 1245"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.618718 0.618718 0 11.381282 11.381282 0 133120
+ END$SEGS
+STRUCTURE 67 0 0 0 0 HO 2 114.000000 42.000000 0 0.000000 "Benchwork 12"" I-Beam 0012"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 11.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 68 0 0 0 0 HO 2 114.000000 66.000000 0 0.000000 "Benchwork 12"" I-Beam 0012"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 11.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 69 0 0 0 0 HO 2 126.000000 66.000000 0 0.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 70 0 0 0 0 HO 2 126.000000 42.000000 0 0.000000 "Benchwork 24"" I-Beam 0024"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 71 0 0 0 0 HO 2 126.000000 42.000000 0 90.000000 "Benchwork 36"" I-Beam 0036"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 35.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE 72 0 0 0 0 HO 2 150.000000 42.000000 0 90.000000 "Benchwork 36"" I-Beam 0036"
+ D 0.000000 0.000000
+ B3 16760832 0.062500 0.875000 0.000000 0 35.125000 0.000000 0 133120
+ END$SEGS
+END$TRACKS
diff --git a/app/lib/examples/Ondaville Franklin and Carolina RR.xtc b/app/lib/examples/Ondaville Franklin and Carolina RR.xtc
new file mode 100644
index 0000000..1d020fa
--- /dev/null
+++ b/app/lib/examples/Ondaville Franklin and Carolina RR.xtc
@@ -0,0 +1,22474 @@
+#XTrackCAD Version: 5.2.2Beta3, Date: Sat Dec 25 21:23:25 2021
+
+VERSION 12 5.2.0
+TITLE1 Ondaville, Franklin and Carolina RR
+TITLE2 by ScenicRme
+MAPSCALE 63
+ROOMSIZE 216.000000 x 100.000000
+SCALE N
+LAYERS 0 1 0 0 4794375 0 0 1 0 "Main"
+LAYERS 1 0 1 0 16744640 0 0 1 0 "helix"
+LAYERS 2 0 1 0 1756743 0 0 1 0 "lower level"
+LAYERS 3 0 0 0 16316482 0 0 1 0 "access openings in benchwork"
+LAYERS 4 1 1 1 8421376 0 0 1 0 "benchwork"
+LAYERS 5 1 0 0 16744703 0 0 1 0 "structures"
+LAYERS 6 1 0 0 12632256 0 0 1 0 "roads and bridges"
+LAYERS 7 1 0 0 12311876 0 1 1 0 "scenic"
+LAYERS 8 0 1 0 1826806 0 0 1 0 "lower level benchwork"
+LAYERS 9 0 1 0 65526 0 0 1 0 "upper level benchwork"
+LAYERS 10 0 0 0 255 0 0 1 0 "lower level temp test"
+LAYERS 11 0 0 1 657931 0 0 1 0 "construction lines"
+LAYERS 12 1 1 1 16744964 0 0 1 0 "hidden track level 1"
+LAYERS 13 1 0 0 3249396 0 0 1 0 "water, lakes and rivers"
+LAYERS CURRENT 7
+LAYERS LINK 0 "6;7;8;13;14"
+LAYERS LINK 2 "2;5"
+DRAW 1 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 13934408 0.000000 26 0
+ 138.431743 92.552083 0
+ 136.431743 90.739583 0
+ 127.431743 89.489583 0
+ 125.551339 90.731360 0
+ 123.745089 90.225110 0
+ 119.370089 88.475110 2
+ 116.245089 85.600110 0
+ 118.056743 83.177083 0
+ 117.119243 81.427083 0
+ 120.056743 82.302083 0
+ 123.494243 80.239583 0
+ 125.494243 79.802083 0
+ 148.937500 79.648026 2
+ 153.250000 80.898026 2
+ 148.806743 83.239583 2
+ 147.556743 85.802083 0
+ 148.588542 90.781250 0
+ 148.588542 90.781250 0
+ 149.401042 91.531250 0
+ 149.625000 91.835526 0
+ 150.151042 92.281250 0
+ 150.276042 92.656250 0
+ 151.088542 93.156250 2
+ 151.062500 93.656250 0
+ 149.401042 93.406250 0
+ 145.026042 93.218750 0
+ END$SEGS
+DRAW 2 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 13934408 0.000000 56 0
+ 0.125000 63.966557 0
+ 0.015625 73.328125 0
+ 5.078125 78.578125 0
+ 5.062500 84.270833 2
+ 6.687500 87.770833 2
+ 9.046875 90.911458 0
+ 9.609375 90.286458 2
+ 10.687500 90.708333 0
+ 21.125000 74.841557 0
+ 35.000000 78.966557 0
+ 64.500000 85.341557 0
+ 83.500000 88.758224 0
+ 102.125000 85.008224 0
+ 115.212500 87.968750 0
+ 118.750000 84.758224 0
+ 117.750000 82.258224 0
+ 126.000000 79.883224 0
+ 134.500000 76.758224 0
+ 136.375000 73.383224 0
+ 132.875000 72.258224 0
+ 123.250000 72.633224 0
+ 121.250000 67.383224 0
+ 117.250000 65.133224 0
+ 120.000000 59.633224 0
+ 124.125000 48.716557 0
+ 125.390625 50.640625 0
+ 132.500000 46.662281 0
+ 132.750000 15.591557 0
+ 129.973684 11.098136 0
+ 127.098684 8.035636 0
+ 123.536184 5.223136 0
+ 119.911184 2.910636 0
+ 113.473684 0.910636 0
+ 107.973684 0.348136 0
+ 102.661184 0.973136 0
+ 97.500000 2.549890 0
+ 94.286184 4.223136 0
+ 91.473684 5.910636 0
+ 88.911184 8.223136 0
+ 86.723684 10.723136 0
+ 85.036184 13.160636 0
+ 83.625000 15.506031 0
+ 83.500000 28.591557 0
+ 83.500000 28.591557 0
+ 83.693182 52.716557 2
+ 81.943182 62.841557 2
+ 68.193182 66.091557 2
+ 48.875000 64.875000 2
+ 42.250000 61.750000 2
+ 41.625000 56.000000 2
+ 47.125000 44.750000 2
+ 46.625000 36.000000 0
+ 44.250000 27.875000 2
+ 34.625000 17.000000 2
+ 21.500000 15.500000 0
+ -0.250000 15.875000 0
+ END$SEGS
+DRAW 3 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 30 0
+ 188.083134 70.336349 0
+ 178.921875 77.523026 0
+ 172.790625 79.464583 0
+ 163.228125 86.402083 0
+ 194.370536 87.671053 2
+ 191.870536 88.796053 2
+ 190.120536 92.171053 2
+ 186.370536 91.671053 0
+ 184.745536 92.671053 0
+ 178.120536 91.546053 0
+ 177.745536 93.296053 0
+ 180.619243 94.864583 2
+ 179.119243 95.177083 0
+ 172.931743 96.864583 2
+ 184.745536 98.546053 0
+ 192.495536 98.421053 0
+ 196.171875 98.462719 0
+ 193.567434 95.860746 0
+ 196.942434 94.298246 0
+ 196.442434 92.735746 0
+ 197.484375 89.057292 0
+ 198.296875 88.432292 0
+ 198.171875 87.244792 0
+ 196.109375 84.682292 0
+ 195.004934 79.735746 0
+ 192.879934 77.173246 0
+ 195.046875 78.684485 0
+ 197.546875 79.059485 0
+ 196.004934 75.673246 0
+ 190.578606 72.075439 0
+ END$SEGS
+DRAW 4 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 4216377 0.000000 21 0
+ 194.379934 98.548246 0
+ 187.051884 98.341557 0
+ 192.504934 95.360746 0
+ 195.629934 94.985746 0
+ 195.754934 92.548246 0
+ 197.379934 89.048246 0
+ 197.754934 86.173246 0
+ 200.504934 85.173246 0
+ 199.129934 80.485746 0
+ 201.379934 77.548246 0
+ 195.754934 72.360746 0
+ 197.692434 71.735746 0
+ 195.442434 69.048246 0
+ 199.692434 70.173246 0
+ 202.879934 69.735746 0
+ 197.672420 67.414474 0
+ 206.380009 65.648849 0
+ 208.770634 63.133224 0
+ 205.145634 56.133224 0
+ 216.172420 54.164474 0
+ 216.067434 98.423246 0
+ END$SEGS
+DRAW 5 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 13934408 0.000000 64 0
+ 174.250000 55.875000 2
+ 174.937500 60.541667 2
+ 171.250000 63.541667 0
+ 172.250000 64.791667 2
+ 173.187500 67.354167 0
+ 165.187500 71.854167 2
+ 148.937500 72.791667 2
+ 140.562500 69.791667 0
+ 147.937500 73.666667 2
+ 154.312500 76.663651 2
+ 156.187500 79.038651 2
+ 158.036184 82.875000 2
+ 157.036184 83.375000 0
+ 153.750000 83.663651 0
+ 150.866071 84.250000 0
+ 149.629934 85.970943 0
+ 150.098684 87.937500 0
+ 150.187500 89.273026 0
+ 150.687500 89.773026 2
+ 152.991071 90.625000 2
+ 155.366071 92.125000 2
+ 163.241071 92.125000 2
+ 178.120536 93.671053 2
+ 178.495536 91.546053 2
+ 183.995536 92.921053 0
+ 190.718750 92.270833 2
+ 196.062500 88.250000 2
+ 194.406250 83.708333 2
+ 188.656250 84.562500 0
+ 181.234375 84.773026 2
+ 177.421875 84.148026 2
+ 167.915625 85.402083 2
+ 163.665625 85.714583 2
+ 167.603125 84.402083 2
+ 170.228125 82.777083 0
+ 179.796875 82.088542 2
+ 178.421875 79.338542 2
+ 179.781250 80.458333 0
+ 182.093750 81.645833 0
+ 180.609375 79.526042 0
+ 179.921875 78.588542 2
+ 179.609375 77.776042 0
+ 179.671875 77.338542 2
+ 180.421875 76.401042 0
+ 182.270559 77.052083 2
+ 182.067434 75.048246 2
+ 183.520559 75.364583 2
+ 184.458059 74.927083 0
+ 185.958059 75.239583 2
+ 185.958059 75.239583 0
+ 188.145634 74.258224 2
+ 190.145634 74.633224 2
+ 191.145634 74.258224 0
+ 187.520634 71.836349 2
+ 187.708134 70.148849 2
+ 191.067434 70.298246 2
+ 196.692434 65.735746 2
+ 194.317434 63.235746 2
+ 192.187500 59.194079 0
+ 214.937500 45.444079 0
+ 216.125000 14.875000 0
+ 192.375000 15.125000 0
+ 176.750000 19.125000 2
+ 167.500000 40.000000 2
+ END$SEGS
+DRAW 6 8 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16632567 0.000000 3 0
+ 132.625000 65.750000 0
+ 139.375000 65.875000 0
+ 132.625000 59.000000 0
+ END$SEGS
+DRAW 7 8 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16632567 0.000000 3 0
+ 77.000000 65.500000 0
+ 83.625000 65.750000 0
+ 83.500000 59.125000 0
+ END$SEGS
+DRAW 8 8 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16632567 0.000000 4 0
+ 133.125000 82.375000 0
+ 181.375000 82.375000 0
+ 181.375000 66.625000 0
+ 133.125000 66.625000 0
+ END$SEGS
+DRAW 9 8 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16632567 0.000000 6 0
+ 84.125000 82.750000 0
+ 84.250000 16.125000 0
+ 98.250000 3.375000 0
+ 118.875000 3.500000 0
+ 131.500000 16.125000 0
+ 131.625000 82.500000 0
+ END$SEGS
+DRAW 10 8 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16632567 0.000000 4 0
+ 35.306250 82.756250 0
+ 82.431250 82.756250 0
+ 82.431250 66.506250 0
+ 35.306250 66.506250 0
+ END$SEGS
+DRAW 11 8 0 0 0 -0.250000 4.125000 0 0.000000
+ B3 16760832 0.055556 84.500000 12.211806 0 132.250000 11.961806 0 133120
+ END$SEGS
+DRAW 12 8 0 0 0 -0.250000 7.625000 0 0.000000
+ B3 16760832 0.055556 108.000000 74.875000 0 108.250000 -4.236111 0 133120
+ END$SEGS
+DRAW 13 8 0 0 0 -0.250000 7.625000 0 0.000000
+ B3 16760832 0.055556 131.625000 8.763889 0 108.375000 57.763889 0 133120
+ END$SEGS
+DRAW 14 8 0 0 0 -0.250000 7.625000 0 0.000000
+ B3 16760832 0.055556 84.750000 9.138889 0 107.750000 57.888889 0 133120
+ END$SEGS
+DRAW 15 8 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14482912 0.000000 5 0
+ 38.350000 64.775000 0
+ 43.850000 39.025000 0
+ 37.725000 18.400000 0
+ 0.725000 18.025000 0
+ 0.850000 64.900000 0
+ END$SEGS
+DRAW 16 8 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14482912 0.000000 5 0
+ 177.410714 64.833333 0
+ 171.910714 38.833333 0
+ 177.910714 18.083333 0
+ 215.160714 17.708333 0
+ 214.910714 64.583333 0
+ END$SEGS
+DRAW 17 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 38 0
+ 83.500000 27.287281 0
+ 83.625000 42.037281 0
+ 84.000000 55.412281 0
+ 91.875000 52.037281 0
+ 87.687500 39.880208 0
+ 86.218750 33.411458 0
+ 85.234375 28.651042 2
+ 85.437500 25.562500 2
+ 85.937500 22.875000 2
+ 86.687500 21.187500 2
+ 87.937500 18.000000 2
+ 90.187500 13.687500 0
+ 90.823661 12.628125 2
+ 92.323661 11.753125 0
+ 98.573661 8.565625 0
+ 98.823661 8.815625 0
+ 102.312500 7.625000 2
+ 106.833059 6.937500 0
+ 111.520559 6.875000 2
+ 118.772321 9.233333 2
+ 124.397321 7.858333 2
+ 128.647321 12.858333 2
+ 131.522321 20.483333 2
+ 131.147321 24.733333 2
+ 132.522321 23.858333 0
+ 132.661184 15.285636 0
+ 130.098684 11.223136 0
+ 127.098684 7.910636 0
+ 124.098684 5.473136 0
+ 120.098684 3.035636 0
+ 114.411184 1.035636 0
+ 108.098684 0.223136 0
+ 101.848684 1.035636 0
+ 97.474432 2.645833 0
+ 93.786184 4.410636 0
+ 89.286184 7.848136 0
+ 85.911184 11.660636 0
+ 83.625000 15.756031 0
+ END$SEGS
+DRAW 18 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 10187826 0.000000 14 0
+ 150.911184 93.773026 0
+ 154.348684 93.648026 0
+ 156.306743 94.489583 0
+ 163.213542 95.093750 2
+ 163.588542 95.968750 0
+ 162.776042 97.093750 2
+ 158.776042 97.906250 0
+ 156.588542 98.218750 0
+ 158.401042 97.531250 0
+ 160.026042 96.906250 0
+ 160.213542 96.406250 0
+ 159.026042 95.718750 0
+ 157.056743 95.677083 0
+ 154.848684 95.523026 2
+ END$SEGS
+DRAW 19 5 3 0 0 0.000000 0.000000 0 0.000000
+ Y4 0 0.053333 7 0
+ 167.821875 79.338542 0
+ 166.042425 74.827585 0
+ 157.196875 78.322917 0
+ 159.196875 83.010417 0
+ 160.904539 83.117593 0
+ 164.813212 81.500230 0
+ 165.383687 80.260921 0
+ END$SEGS
+DRAW 20 3 0 0 0 0.000000 7.875000 0 0.000000
+ F4 16316482 0.000000 6 0
+ 215.312500 89.256944 0
+ 215.437500 58.631944 0
+ 182.312500 58.506944 0
+ 182.312500 75.381944 0
+ 107.750000 75.250000 0
+ 107.812500 89.631944 0
+ END$SEGS
+DRAW 21 3 0 0 0 0.500000 12.625000 0 0.000000
+ G3 16316482 0.055556 15.000000 21.583333 27.689601 0
+ END$SEGS
+DRAW 22 7 0 0 0 0.000000 7.625000 0 0.000000
+ F4 15195549 0.000000 8 0
+ 122.812500 49.451389 0
+ 122.375000 51.701389 0
+ 124.468449 50.022681 0
+ 125.375000 42.888889 0
+ 125.009804 42.032271 0
+ 123.675654 44.307802 0
+ 123.062500 46.263889 0
+ 123.020352 47.943104 0
+ END$SEGS
+DRAW 23 7 0 0 0 0.000000 7.625000 0 0.000000
+ F4 5030474 0.000000 18 0
+ 120.406250 53.468750 0
+ 122.946429 50.768640 0
+ 127.781250 51.093750 0
+ 128.031250 52.593750 0
+ 129.437500 56.281250 0
+ 131.437500 59.468750 0
+ 135.312500 63.138889 1
+ 137.562500 64.638889 0
+ 136.750000 65.451389 0
+ 132.343750 63.875000 0
+ 127.968750 64.687500 0
+ 123.937500 64.312500 0
+ 122.687500 62.562500 0
+ 121.750000 59.812500 0
+ 120.718750 58.750000 0
+ 119.281250 58.218750 0
+ 118.531250 57.031250 0
+ 118.875000 55.687500 0
+ END$SEGS
+DRAW 24 3 0 0 0 0.250000 7.875000 0 0.000000
+ F4 16316482 0.000000 6 0
+ 107.660714 89.708333 0
+ 107.750000 75.541667 0
+ 34.785714 75.958333 0
+ 34.910714 58.833333 0
+ 0.910714 58.583333 0
+ 0.910714 89.958333 0
+ END$SEGS
+DRAW 25 5 6 0 0 145.846465 60.265303 0 0.000000
+ Y4 10040985 0.040000 4 1
+ 57.639710 -14.158965 0
+ 63.744255 -20.772174 0
+ 57.865840 -26.198428 0
+ 51.761295 -19.585220 0
+ END$SEGS
+DRAW 26 6 0 0 0 1.250000 25.125000 0 0.000000
+ L3 16744703 0.010417 1.500000 43.250000 0 1.500000 43.250000 0
+ END$SEGS
+DRAW 27 6 0 0 0 1.250000 25.125000 0 0.000000
+ L3 16744703 0.010417 121.750000 47.250000 0 121.750000 47.250000 0
+ END$SEGS
+DRAW 28 6 0 0 0 1.250000 25.125000 0 0.000000
+ L3 16744703 0.010417 45.500000 20.500000 0 45.500000 20.500000 0
+ END$SEGS
+DRAW 29 0 0 0 0 108.750000 25.312500 0 0.000000
+ L3 16744703 0.010417 124.250000 42.750000 0 124.250000 42.750000 0
+ END$SEGS
+TURNOUT 30 0 0 0 0 N 2 15.849515 38.781270 0 282.387424 "Atlas 5in Straight 2501"
+ E4 15.849515 38.781270 192.387424 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 89 16.896789 43.549505 12.387424 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 4.881890 0.000000
+ END$SEGS
+TURNOUT 31 0 0 0 0 N 2 16.728490 50.335020 0 131.387424 "Atlas 5in Straight 2501"
+ T4 91 16.728490 50.335020 41.387424 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 32 13.500849 46.672345 221.387424 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 4.881890 0.000000
+ END$SEGS
+STRAIGHT 32 0 0 0 0 N 2 0.000000 0.000000
+ T4 31 13.500849 46.672345 41.387576 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ E4 6.820712 39.091895 221.387576 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ END$SEGS
+TURNOUT 33 0 0 0 0 N 2 187.039383 50.252264 0 91.338949 "Peco-80 Medium Left SL-1739/396"
+ T4 46 187.039383 50.252264 1.338949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ T4 34 186.925589 45.383515 181.338949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ T4 35 187.447445 45.371317 167.338949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.973080 0.000000
+ S 0 0.000000 0.973080 0.000000 4.870079 0.000000
+ C 0 0.000000 -14.687496 0.973099 14.687496 165.999924 14.000152
+ S 0 0.000000 4.526342 0.436290 4.870079 0.522000
+ END$SEGS
+TURNOUT 34 0 0 0 0 N 2 186.811506 40.502958 0 271.338949 "Atlas 5in Straight 2501"
+ T4 417 186.811506 40.502958 181.338949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ T4 33 186.925589 45.383515 1.338949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 4.881890 0.000000
+ END$SEGS
+TURNOUT 35 0 0 0 0 N 2 188.517466 40.608135 0 257.338949 "Atlas 5in Straight 2501"
+ T4 418 188.517466 40.608135 167.338949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ T4 33 187.447445 45.371317 347.338949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 4.881890 0.000000
+ END$SEGS
+DRAW 36 5 0 0 0 25.459782 51.264054 0 359.999869
+ L3 16744703 0.010417 49.567673 33.687931 0 49.567673 33.687931 0
+ END$SEGS
+DRAW 37 5 0 0 0 25.459782 51.264054 0 359.999869
+ L3 16744703 0.010417 49.562500 33.000002 0 49.562500 33.000002 0
+ END$SEGS
+STRUCTURE 38 5 0 0 0 N 2 21.047127 42.064245 0 94.619303 "Walthers Shady Jct Water Tower 933-3205a"
+ D 0.000000 0.000000
+ L3 0 0.000000 0.000000 0.000000 0 1.562500 0.000000 0
+ L3 0 0.000000 1.562500 0.000000 0 1.562500 1.562500 0
+ L3 0 0.000000 1.562500 1.562500 0 0.000000 1.562500 0
+ L3 0 0.000000 0.000000 1.562500 0 0.000000 0.000000 0
+ L3 0 0.000000 0.000000 0.375000 0 1.250000 0.375000 0
+ L3 0 0.000000 1.250000 0.375000 0 1.250000 1.562500 0
+ L3 0 0.000000 0.625000 1.000000 0 0.625000 0.375000 0
+ L3 0 0.000000 0.625000 1.000000 0 1.250000 1.000000 0
+ L3 0 0.000000 0.625000 1.000000 0 0.000000 1.000000 0
+ L3 0 0.000000 0.625000 1.000000 0 0.625000 1.562500 0
+ L3 0 0.000000 0.625000 1.000000 0 1.062500 1.437500 0
+ L3 0 0.000000 0.625000 1.000000 0 1.062500 0.562500 0
+ L3 0 0.000000 0.625000 1.000000 0 0.187500 0.562500 0
+ L3 0 0.000000 0.625000 1.000000 0 0.187500 1.437500 0
+ L3 0 0.000000 0.625000 1.562500 0 1.062500 1.437500 0
+ L3 0 0.000000 1.062500 1.437500 0 1.250000 1.000000 0
+ L3 0 0.000000 1.250000 1.000000 0 1.062500 0.562500 0
+ L3 0 0.000000 1.062500 0.562500 0 0.625000 0.375000 0
+ L3 0 0.000000 0.625000 0.375000 0 0.187500 0.562500 0
+ L3 0 0.000000 0.187500 0.562500 0 0.000000 1.000000 0
+ L3 0 0.000000 0.000000 1.000000 0 0.187500 1.437500 0
+ L3 0 0.000000 0.187500 1.437500 0 0.625000 1.562500 0
+ L3 0 0.000000 1.250000 1.500000 0 1.750000 1.500000 0
+ L3 0 0.000000 1.750000 1.500000 0 1.750000 1.062500 0
+ L3 0 0.000000 1.750000 1.062500 0 1.250000 1.062500 0
+ END$SEGS
+STRUCTURE 39 5 0 0 0 N 2 18.994314 42.178808 0 12.610422 "Walthers Shady Jct Water Crane 933-3205d"
+ D 0.000000 0.000000
+ L3 0 0.000000 0.000000 0.000000 0 0.500000 0.000000 0
+ L3 0 0.000000 0.500000 0.000000 0 0.500000 1.125000 0
+ L3 0 0.000000 0.500000 1.125000 0 0.000000 1.125000 0
+ L3 0 0.000000 0.000000 1.125000 0 0.000000 0.000000 0
+ A3 0 0.000000 0.000000 0.250000 0.937500 0 0.000000 360.000000
+ A3 0 0.000000 0.062500 0.250000 0.937500 0 0.000000 360.000000
+ L3 0 0.000000 0.312500 0.875000 0 0.312500 0.187500 0
+ L3 0 0.000000 0.187500 0.875000 0 0.187500 0.187500 0
+ L3 0 0.000000 0.187500 0.187500 0 0.312500 0.187500 0
+ END$SEGS
+STRUCTURE 40 5 0 0 0 N 2 9.981198 59.591173 0 41.061147 "Walthers Shady Jct Interlocking Tower 933-3205b"
+ D 0.000000 0.000000
+ L3 0 0.000000 0.000000 0.000000 0 1.500000 0.000000 0
+ L3 0 0.000000 1.500000 0.000000 0 1.500000 1.000000 0
+ L3 0 0.000000 1.500000 1.000000 0 0.000000 1.000000 0
+ L3 0 0.000000 0.000000 1.000000 0 0.000000 0.000000 0
+ L3 0 0.000000 0.125000 0.062500 0 1.125000 0.062500 0
+ L3 0 0.000000 1.125000 0.062500 0 1.125000 0.625000 0
+ L3 0 0.000000 1.125000 0.625000 0 0.125000 0.625000 0
+ L3 0 0.000000 0.125000 0.625000 0 0.125000 0.062500 0
+ L3 0 0.000000 0.250000 0.625000 0 0.250000 0.062500 0
+ L3 0 0.000000 0.250000 0.312500 0 1.125000 0.312500 0
+ END$SEGS
+STRUCTURE 41 5 0 0 0 N 2 21.689761 42.851133 0 358.705377 "Walther's Cornerstone Structure Cinder Conveyor & Ash Pit 933-3816"
+ D 0.000000 0.000000
+ F4 8421504 0.000000 4 0
+ 0.125000 0.375000 0
+ 1.000000 0.375000 0
+ 1.000000 2.125000 0
+ 0.125000 2.125000 0
+ F4 8421504 0.000000 4 0
+ 0.000000 1.750000 0
+ 1.125000 1.750000 0
+ 1.125000 1.375000 0
+ 0.000000 1.375000 0
+ F4 0 0.000000 4 0
+ 0.046875 1.687500 0
+ 1.062500 1.687500 0
+ 1.062500 1.437500 0
+ 0.046875 1.437500 0
+ F4 14737632 0.000000 4 0
+ 0.421875 0.640625 0
+ 1.000000 0.640625 0
+ 1.000000 1.203125 0
+ 0.421875 1.203125 0
+ L3 0 0.000000 0.468750 1.218750 0 0.468750 0.625000 0
+ L3 0 0.000000 0.531250 1.218750 0 0.531250 0.640625 0
+ L3 0 0.000000 0.593750 1.203125 0 0.593750 0.640625 0
+ L3 0 0.000000 0.656250 1.218750 0 0.656250 0.609375 0
+ L3 0 0.000000 0.718750 1.218750 0 0.718750 0.640625 0
+ L3 0 0.000000 0.781250 1.203125 0 0.781250 0.640625 0
+ L3 0 0.000000 0.843750 1.218750 0 0.843750 0.640625 0
+ L3 0 0.000000 0.906250 1.218750 0 0.906250 0.640625 0
+ F4 0 0.000000 4 0
+ 0.125000 0.375000 0
+ 1.000000 0.375000 0
+ 1.000000 0.406250 0
+ 0.125000 0.406250 0
+ F4 14342874 0.000000 4 0
+ 0.312500 0.375000 0
+ 0.812500 0.375000 0
+ 0.812500 0.000000 0
+ 0.312500 0.000000 0
+ F4 0 0.000000 4 0
+ 0.406250 1.234375 0
+ 0.125000 1.234375 0
+ 0.125000 1.218750 0
+ 0.406250 1.218750 0
+ F4 0 0.000000 4 0
+ 0.109375 0.406250 0
+ 0.140625 0.406250 0
+ 0.140625 1.234375 0
+ 0.109375 1.234375 0
+ F4 0 0.000000 4 0
+ 0.984375 0.390625 0
+ 0.953125 0.390625 0
+ 0.953125 0.656250 0
+ 0.984375 0.656250 0
+ L3 0 0.000000 0.453125 0.000000 0 0.453125 0.390625 0
+ L3 0 0.000000 0.640625 0.000000 0 0.640625 0.406250 0
+ END$SEGS
+STRUCTURE 42 5 0 0 0 N 2 131.027426 86.232753 0 356.553423 "Walthers Interstate Fuel - Loading Rack 933-32000a"
+ D 0.000000 0.000000
+ L3 0 0.000000 0.750000 0.000000 0 3.750000 0.000000 0
+ L3 0 0.000000 3.750000 0.000000 0 3.750000 3.125000 0
+ L3 0 0.000000 3.750000 3.125000 0 0.750000 3.125000 0
+ L3 0 0.000000 3.687500 0.062500 0 1.687500 0.062500 0
+ L3 0 0.000000 1.687500 0.062500 0 1.687500 0.812500 0
+ L3 0 0.000000 1.687500 0.812500 0 3.687500 0.812500 0
+ L3 0 0.000000 3.687500 0.812500 0 3.687500 0.062500 0
+ L3 0 0.000000 3.687500 3.062500 0 1.687500 3.062500 0
+ L3 0 0.000000 1.687500 3.062500 0 1.687500 2.312500 0
+ L3 0 0.000000 1.687500 2.312500 0 3.687500 2.312500 0
+ L3 0 0.000000 3.687500 2.312500 0 3.687500 3.062500 0
+ L3 0 0.000000 3.687500 1.187500 0 1.687500 1.187500 0
+ L3 0 0.000000 1.687500 1.187500 0 1.687500 1.937500 0
+ L3 0 0.000000 1.687500 1.937500 0 3.687500 1.937500 0
+ L3 0 0.000000 3.687500 1.937500 0 3.687500 1.187500 0
+ A3 0 0.000000 0.088388 3.000000 2.687500 0 0.000000 360.000000
+ A3 0 0.000000 0.088388 3.000000 1.562500 0 0.000000 360.000000
+ A3 0 0.000000 0.088388 3.000000 0.437500 0 0.000000 360.000000
+ L3 0 0.000000 0.750000 2.875000 0 0.000000 2.875000 0
+ L3 0 0.000000 0.000000 2.875000 0 0.000000 0.250000 0
+ L3 0 0.000000 0.000000 0.250000 0 0.750000 0.250000 0
+ L3 0 0.000000 1.500000 2.187500 0 0.437500 2.187500 0
+ L3 0 0.000000 0.437500 2.187500 0 0.437500 0.937500 0
+ L3 0 0.000000 0.437500 0.937500 0 1.500000 0.937500 0
+ L3 0 0.000000 1.500000 0.937500 0 1.500000 2.187500 0
+ L3 0 0.000000 0.750000 3.125000 0 0.750000 2.187500 0
+ L3 0 0.000000 0.750000 0.000000 0 0.750000 0.937500 0
+ END$SEGS
+STRUCTURE 43 5 0 0 0 N 0 127.686371 88.477135 0 87.200256 "Walthers Interstate Fuel - Office 933-3200b"
+ D 0.000000 0.000000
+ L3 0 0.000000 0.000000 3.000000 0 2.000000 3.000000 0
+ L3 0 0.000000 2.000000 3.000000 0 2.000000 0.500000 0
+ L3 0 0.000000 2.000000 0.500000 0 0.000000 0.500000 0
+ L3 0 0.000000 0.000000 0.500000 0 0.000000 3.000000 0
+ L3 0 0.000000 2.000000 2.250000 0 2.500000 2.250000 0
+ L3 0 0.000000 2.500000 2.250000 0 2.500000 0.000000 0
+ L3 0 0.000000 2.500000 0.000000 0 0.375000 0.000000 0
+ L3 0 0.000000 0.375000 0.000000 0 0.375000 0.500000 0
+ A3 0 0.000000 0.088388 1.000000 2.375000 0 0.000000 360.000000
+ A3 0 0.000000 0.088388 1.000000 1.125000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 44 5 0 0 0 N 2 135.375782 86.388797 0 357.220062 "Walthers Interstate Fuel - Shed 933-3200c"
+ D 0.000000 0.000000
+ L3 0 0.000000 0.000000 0.000000 0 1.000000 0.000000 0
+ L3 0 0.000000 1.000000 0.000000 0 1.000000 0.625000 0
+ L3 0 0.000000 1.000000 0.625000 0 0.000000 0.625000 0
+ L3 0 0.000000 0.000000 0.625000 0 0.000000 0.000000 0
+ L3 0 0.000000 0.000000 0.312500 0 1.000000 0.312500 0
+ END$SEGS
+STRUCTURE 45 5 0 0 0 N 2 135.233066 87.400552 0 356.575594 "Walthers Interstate Fuel - Tanks 933-3200d"
+ D 0.000000 0.000000
+ L3 0 0.000000 1.000000 2.062500 0 1.000000 1.125000 0
+ L3 0 0.000000 0.062500 0.000000 0 0.937500 0.000000 0
+ L3 0 0.000000 0.000000 0.062500 0 0.062500 0.000000 0
+ L3 0 0.000000 1.000000 0.062500 0 0.937500 0.000000 0
+ L3 0 0.000000 1.000000 0.062500 0 1.000000 1.000000 0
+ L3 0 0.000000 0.000000 1.000000 0 0.000000 0.062500 0
+ L3 0 0.000000 0.000000 2.062500 0 0.000000 1.125000 0
+ L3 0 0.000000 0.000000 1.125000 0 0.062500 1.062500 0
+ L3 0 0.000000 0.062500 1.062500 0 0.000000 1.000000 0
+ L3 0 0.000000 1.000000 1.000000 0 0.937500 1.062500 0
+ L3 0 0.000000 0.937500 1.062500 0 1.000000 1.125000 0
+ L3 0 0.000000 0.062500 2.125000 0 0.937500 2.125000 0
+ L3 0 0.000000 0.937500 2.125000 0 1.000000 2.062500 0
+ L3 0 0.000000 0.062500 2.125000 0 0.000000 2.062500 0
+ A3 0 0.000000 0.455007 0.500000 0.500000 0 0.000000 360.000000
+ A3 0 0.000000 0.437500 0.500000 1.625000 0 0.000000 360.000000
+ END$SEGS
+TURNOUT 46 0 0 0 0 N 2 186.655822 56.399884 0 81.523949 "Peco-80 Curved Right SL-1734/386"
+ T4 247 186.655822 56.399884 351.523949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ T4 33 187.039383 50.252264 181.338949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ T4 248 186.512257 50.263668 191.156949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ D 0.000000 0.000000
+ P "Normal" 1 2 3
+ P "Reverse" 1 4 5 6
+ C 0 0.000000 35.984252 0.000000 -35.984252 0.000000 0.079612
+ C 0 0.000000 35.880126 0.011345 -35.880140 0.061728 9.688447
+ C 0 0.000000 36.000000 0.002864 -35.984333 9.735388 0.079612
+ C 0 0.000000 17.185618 0.172609 -17.185215 359.591225 10.119708
+ C 0 0.000000 18.699999 -0.281647 -18.642768 10.329528 9.301755
+ C 0 0.000000 18.000000 0.000137 -18.000011 19.473845 0.159155
+ END$SEGS
+DRAW 47 6 0 0 0 1.250000 25.125000 0 0.000000
+ L3 16744703 0.010204 46.855898 55.370513 0 46.855898 55.370513 0
+ END$SEGS
+DRAW 48 6 0 0 0 1.250000 25.125000 0 0.000000
+ L3 16744703 0.010204 53.047199 56.643350 0 53.047199 56.643350 0
+ END$SEGS
+DRAW 49 6 0 0 0 1.250000 25.125000 0 0.000000
+ L3 16744703 0.010526 46.855898 55.370513 0 46.855898 55.370513 0
+ END$SEGS
+DRAW 50 6 0 0 0 1.250000 25.125000 0 0.000000
+ L3 16744703 0.010526 37.549342 70.814145 0 37.549342 70.814145 0
+ END$SEGS
+DRAW 51 5 0 0 0 4.935280 23.836895 0 358.278644
+ L3 16744703 0.010417 29.346627 59.250836 0 29.346627 59.250836 0
+ END$SEGS
+DRAW 52 6 0 0 0 31.404901 10.720848 0 0.000000
+ L3 16744703 0.010417 64.257827 75.661845 0 64.257827 75.661845 0
+ END$SEGS
+DRAW 53 6 0 0 0 1.250000 25.125000 0 0.000000
+ L3 16744703 0.010417 46.331700 68.966865 0 46.331700 68.966865 0
+ END$SEGS
+DRAW 54 6 0 0 0 1.250000 25.125000 0 0.000000
+ L3 16744703 0.010417 46.750000 68.500000 0 46.750000 68.500000 0
+ END$SEGS
+DRAW 55 5 0 0 0 1.250029 25.499963 0 359.999869
+ L3 16744703 0.010417 111.912614 65.580541 0 111.912614 65.580541 0
+ END$SEGS
+TURNOUT 56 0 0 0 0 N 2 17.685748 38.377973 0 282.387424 "Atlas 5in Straight 2501"
+ T4 79 17.685748 38.377973 192.387424 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 87 18.733022 43.146208 12.387424 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 4.881890 0.000000
+ END$SEGS
+TURNOUT 57 0 0 0 0 N 2 19.521981 37.974677 0 282.387424 "Atlas 5in Straight 2501"
+ T4 68 19.521981 37.974677 192.387424 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 58 20.569255 42.742912 12.387424 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 4.881890 0.000000
+ END$SEGS
+CORNU 58 0 0 0 0 N 2 22.444483 49.552649 20.352716 0.000000 1.250000 25.500000 20.569255 42.742912 192.387424 0.000000 1.250000 25.500000
+ T4 86 22.444483 49.552649 20.352716 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 57 20.569255 42.742912 192.387424 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ W3 0 0.000000 22.444483 49.552649 22.034548 48.447576 21.655079 47.330210 21.359069 46.189327
+ SUBSEGS
+ C 0 0.000000 -34.886393 55.059480 37.170306 284.982586 5.806770
+ SUBSEND
+ W3 0 0.000000 21.359069 46.189327 21.063059 45.048445 20.822102 43.894130 20.569255 42.742912
+ SUBSEGS
+ C 0 0.000000 -93.903368 112.478526 23.493798 281.828828 2.157494
+ SUBSEND
+ END$SEGS
+STRAIGHT 59 0 0 0 0 N 2 0.000000 0.000000
+ T4 85 23.681232 38.161683 358.459582 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ E4 23.840576 32.236321 178.459582 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ END$SEGS
+DRAW 60 5 0 0 0 22.613850 2.675673 0 0.000000
+ G3 16744703 0.000000 0.250000 -4.949316 45.300735 0
+ END$SEGS
+DRAW 61 5 0 0 0 22.838161 3.063711 0 0.000000
+ L3 16744703 0.010417 -6.696367 46.061061 0 -3.487117 44.664380 0
+ END$SEGS
+DRAW 62 0 0 0 0 23.286078 2.230378 0 0.000000
+ G3 16744703 0.000000 0.125000 -6.810983 46.110942 0
+ END$SEGS
+DRAW 63 0 0 0 0 22.859389 3.190797 0 0.000000
+ G3 16744703 0.010417 0.125000 -3.536999 44.549764 0
+ END$SEGS
+DRAW 64 5 0 0 0 18.700582 3.318739 0 0.000000
+ G3 16744703 0.000000 0.250000 -0.881595 45.561772 0
+ END$SEGS
+DRAW 65 5 0 0 0 18.953630 3.162707 0 0.000000
+ L3 16744703 0.010417 -2.553664 46.475171 0 -0.592383 45.374036 0
+ END$SEGS
+STRAIGHT 66 0 0 0 0 N 2 0.000000 0.000000
+ T4 67 11.625214 48.325219 41.387577 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ E4 5.758649 41.668025 221.387577 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ END$SEGS
+TURNOUT 67 0 0 0 0 N 2 14.852851 51.987889 0 131.387424 "Atlas 5in Straight 2501"
+ T4 241 14.852851 51.987889 41.387424 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 66 11.625210 48.325214 221.387424 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 4.881890 0.000000
+ END$SEGS
+STRAIGHT 68 0 0 0 0 N 2 0.000000 0.000000
+ T4 57 19.521979 37.974668 12.387566 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ E4 18.250392 32.185163 192.387566 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ END$SEGS
+DRAW 69 5 0 0 0 -3.604704 78.082656 0 86.393585
+ F4 16744703 0.000000 4 0
+ 34.625000 28.364583 0
+ 39.375000 28.364590 0
+ 39.374993 25.614590 0
+ 34.624993 25.614583 0
+ END$SEGS
+STRUCTURE 70 5 0 0 0 N 2 55.367539 68.574185 0 359.337520 "Gloor craft store and warehouse 2003"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.125000 0
+ 5.000000 2.125000 0
+ 5.000000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE 71 5 0 0 0 N 2 88.980712 68.921952 0 194.761104 "Gloor craft C&C lumber storeage rack 201 B"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 3.476202 0.443647 0
+ 0.256625 0.000000 0
+ 0.000000 1.862403 0
+ 3.219577 2.306049 0
+ END$SEGS
+STRUCTURE 72 5 0 0 0 N 0 83.412062 67.680419 0 282.640520 "Gloor craft C&C lumber storage shed 201 C"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.491604 0
+ 1.869477 1.690243 0
+ 2.027960 0.198639 0
+ 0.158483 0.000000 0
+ END$SEGS
+STRUCTURE 73 5 0 0 0 N 2 85.363547 48.009809 0 16.981993 "showcase miniatures JJ valu fuel and oil 1101"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.627036 0
+ 3.104679 3.588008 0
+ 3.917809 0.960972 0
+ 0.813130 0.000000 0
+ END$SEGS
+STRUCTURE 74 5 0 0 0 N 2 67.051623 68.576078 0 359.365545 "gloor craft freight house (produce) 211 A"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.250000 0
+ 4.125000 2.250000 0
+ 4.125000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE 75 5 0 0 0 N 2 61.447205 70.801726 0 89.926482 "gloor craft yardmasters office (produce office) 211 B"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.375000 0
+ 2.250000 1.375000 0
+ 2.250000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE 76 5 0 0 0 N 2 47.047784 72.501904 0 346.604068 "Ukn Prebuilt freight house (team track) 000"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000006 2.000020 0
+ 5.000003 2.000006 0
+ 5.000008 0.000000 0
+ 0.000000 0.000013 0
+ END$SEGS
+STRUCTURE 77 5 0 0 0 N 2 62.873024 68.557625 0 359.745533 "gloor craft freight house (produce) 211 A"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.250000 0
+ 4.125000 2.250000 0
+ 4.125000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE 78 5 0 0 0 N 2 24.675453 37.052086 0 178.616702 "Quality craft Single stall engine house with office 206"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 5.000000 0
+ 2.000000 5.000000 0
+ 2.000000 0.000000 0
+ 0.000000 0.000000 0
+ F4 16744703 0.000000 4 0
+ 2.000000 4.656250 0
+ 3.500000 4.656250 0
+ 3.500000 3.156250 0
+ 2.000000 3.156250 0
+ END$SEGS
+STRAIGHT 79 0 0 0 0 N 2 0.000000 0.000000
+ T4 56 17.685748 38.377973 12.387424 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ E4 16.414174 32.588465 192.387426 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ END$SEGS
+STRAIGHT 80 0 0 0 0 N 2 0.000000 0.000000
+ E4 15.849515 38.781273 12.387426 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 14.577941 32.991765 192.387426 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+STRUCTURE 81 5 0 0 0 N 2 12.253104 35.648622 0 13.240389 "Gloor craft 3 stall modern diesel facility 221"
+ D 0.000000 0.000000
+ F4 16744703 0.027778 10 0
+ 5.640625 5.656250 0
+ 1.875000 5.679688 0
+ 1.890625 4.796875 0
+ 0.015625 4.796875 0
+ 0.000000 0.914062 0
+ 1.875000 0.914062 0
+ 1.875000 0.015625 0
+ 7.453125 0.000000 0
+ 7.515625 3.859375 0
+ 5.632812 3.851562 0
+ END$SEGS
+TURNOUT 82 0 0 0 0 N 2 37.296190 64.526967 0 165.604686 "Peco-80 Curved Left SL-1735/387"
+ T4 237 37.296190 64.526967 75.604686 9 0.000000 0.000000 16.167712 16.167712 1 1 0 16.167712
+ T4 234 31.482824 62.491008 245.789686 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 235 31.698206 62.009759 235.971686 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ D 0.000000 0.000000
+ P "Normal" 1 2 3
+ P "Reverse" 1 4 5 6
+ C 0 0.000000 35.984252 0.000000 35.984252 179.920388 0.079612
+ C 0 0.000000 -35.880126 0.011345 35.880140 170.249825 9.688447
+ C 0 0.000000 36.000000 0.002864 35.984333 170.185000 0.079612
+ C 0 0.000000 -17.185618 0.172609 17.185215 170.289067 10.119708
+ C 0 0.000000 -18.699999 -0.281647 18.642768 160.368717 9.301755
+ C 0 0.000000 18.000000 0.000137 18.000011 160.367000 0.159155
+ END$SEGS
+TURNOUT 83 0 0 0 0 N 2 29.745859 60.508499 0 139.112226 "Peco-80 Medium Left SL-1739/396"
+ T4 235 29.745859 60.508499 49.112226 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 88 26.064113 57.320645 229.112226 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 84 26.405803 56.926017 215.112226 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.973080 0.000000
+ S 0 0.000000 0.973080 0.000000 4.870079 0.000000
+ C 0 0.000000 -14.687496 0.973099 14.687496 165.999924 14.000152
+ S 0 0.000000 4.526342 0.436290 4.870079 0.522000
+ END$SEGS
+TURNOUT 84 0 0 0 0 N 2 26.405803 56.926017 0 125.112226 "Peco-80 Curved Left SL-1735/387"
+ T4 83 26.405803 56.926017 35.112226 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 86 23.306834 51.602790 205.297226 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 85 23.783128 51.376663 195.479226 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ D 0.000000 0.000000
+ P "Normal" 1 2 3
+ P "Reverse" 1 4 5 6
+ C 0 0.000000 35.984252 0.000000 35.984252 179.920388 0.079612
+ C 0 0.000000 -35.880126 0.011345 35.880140 170.249825 9.688447
+ C 0 0.000000 36.000000 0.002864 35.984333 170.185000 0.079612
+ C 0 0.000000 -17.185618 0.172609 17.185215 170.289067 10.119708
+ C 0 0.000000 -18.699999 -0.281647 18.642768 160.368717 9.301755
+ C 0 0.000000 18.000000 0.000137 18.000011 160.367000 0.159155
+ END$SEGS
+CORNU 85 0 0 0 0 N 2 23.783128 51.376663 15.479226 18.000000 41.130219 46.572662 23.681232 38.161683 178.459582 0.000000 1.250000 25.500000
+ T4 84 23.783128 51.376663 15.479226 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 59 23.681232 38.161683 178.459582 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ W3 0 0.000000 23.783128 51.376663 23.487672 50.309781 23.300884 49.212909 23.229101 48.108202
+ SUBSEGS
+ C 0 0.000000 -16.191010 39.385542 47.050757 273.744688 11.751812
+ SUBSEND
+ W3 0 0.000000 23.229101 48.108202 23.157318 47.003495 23.194954 45.894330 23.270759 44.789891
+ SUBSEGS
+ C 0 0.000000 -24.902307 48.094937 46.760950 265.460196 7.641105
+ SUBSEND
+ W3 0 0.000000 23.270759 44.789891 23.422367 42.581015 23.621713 40.374956 23.681232 38.161683
+ SUBSEGS
+ C 0 0.000000 325.156713 -300.935427 19.945627 85.617928 0.877752
+ C 0 0.000000 63.074349 -39.368804 36.410558 86.901003 1.508098
+ SUBSEND
+ END$SEGS
+CORNU 86 0 0 0 0 N 2 23.306834 51.602790 25.297226 36.000000 55.840312 36.226212 22.444483 49.552649 200.352716 0.000000 1.250000 25.500000
+ T4 84 23.306834 51.602790 25.297226 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 58 22.444483 49.552649 200.352716 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ W3 0 0.000000 23.306834 51.602790 22.989908 50.932244 22.702435 50.248016 22.444483 49.552649
+ SUBSEGS
+ C 0 0.000000 -25.782345 46.619052 40.590534 290.340999 4.944176
+ SUBSEND
+ END$SEGS
+CORNU 87 0 0 0 0 N 2 22.176832 52.570614 29.479226 18.000000 37.846447 43.712670 18.733022 43.146208 192.387424 0.000000 1.250000 25.500000
+ T4 88 22.176832 52.570614 29.479226 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 56 18.733022 43.146208 192.387424 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ W3 0 0.000000 22.176832 52.570614 21.350726 51.109241 20.680353 49.563202 20.097335 47.988988
+ SUBSEGS
+ C 0 0.000000 -31.538259 49.764168 37.286612 289.837022 9.150413
+ SUBSEND
+ W3 0 0.000000 20.097335 47.988988 19.514317 46.414774 19.093140 44.785835 18.733022 43.146208
+ SUBSEGS
+ C 0 0.000000 -36.369285 54.337960 35.729115 281.767360 7.932572
+ SUBSEND
+ END$SEGS
+TURNOUT 88 0 0 0 0 N 2 26.064113 57.320645 0 139.112226 "Peco-80 Curved Left SL-1735/387"
+ T4 83 26.064113 57.320645 49.112226 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 89 21.769391 52.905249 219.297226 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 87 22.176832 52.570614 209.479226 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ D 0.000000 0.000000
+ P "Normal" 1 2 3
+ P "Reverse" 1 4 5 6
+ C 0 0.000000 35.984252 0.000000 35.984252 179.920388 0.079612
+ C 0 0.000000 -35.880126 0.011345 35.880140 170.249825 9.688447
+ C 0 0.000000 36.000000 0.002864 35.984333 170.185000 0.079612
+ C 0 0.000000 -17.185618 0.172609 17.185215 170.289067 10.119708
+ C 0 0.000000 -18.699999 -0.281647 18.642768 160.368717 9.301755
+ C 0 0.000000 18.000000 0.000137 18.000011 160.367000 0.159155
+ END$SEGS
+CORNU 89 0 0 0 0 N 2 21.769391 52.905249 39.297226 36.000000 49.616555 30.114861 16.896789 43.549505 192.387424 0.000000 1.250000 25.500000
+ T4 88 21.769391 52.905249 39.297226 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 30 16.896789 43.549505 192.387424 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ W3 0 0.000000 21.769391 52.905249 20.642151 51.527895 19.557334 50.105815 18.681483 48.556410
+ SUBSEGS
+ C 0 0.000000 -36.760765 49.992419 29.350748 303.603811 6.244041
+ C 0 0.000000 -21.421508 37.318450 37.994947 299.539980 3.568341
+ SUBSEND
+ W3 0 0.000000 18.681483 48.556410 18.243557 47.781707 17.870543 46.969767 17.580286 46.128521
+ SUBSEGS
+ C 0 0.000000 -14.657188 31.423927 41.313255 289.179328 10.435759
+ SUBSEND
+ W3 0 0.000000 17.580286 46.128521 17.290030 45.287275 17.087694 44.418699 16.896789 43.549505
+ SUBSEGS
+ C 0 0.000000 -23.012756 39.445938 38.953551 281.520195 6.646478
+ SUBSEND
+ END$SEGS
+TURNOUT 90 0 0 0 0 N 2 30.336688 61.919389 0 150.724001 "Peco-80 Wye SL-1741/397"
+ T4 234 30.336688 61.919389 60.724001 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 91 26.102950 59.246640 236.724001 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 240 25.847684 59.701967 244.724001 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ D 0.000000 0.000000
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ C 0 0.000000 -26.154032 0.354335 26.154032 175.999924 4.000152
+ S 0 0.000000 2.178781 0.063715 5.000000 0.261000
+ C 0 0.000000 26.154032 0.354196 -26.154032 0.000076 4.000152
+ S 0 0.000000 2.178781 -0.063715 5.000000 -0.261000
+ END$SEGS
+CORNU 91 0 0 0 0 N 2 26.102950 59.246640 56.724001 0.000000 0.000000 7.625000 16.728490 50.335020 221.387424 0.000000 0.000000 7.625000
+ T4 90 26.102950 59.246640 56.724001 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 31 16.728490 50.335020 221.387424 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ W3 0 0.000000 26.102950 59.246640 25.197484 58.652403 24.297260 58.047797 23.448661 57.374845
+ SUBSEGS
+ C 0 0.000000 -36.230933 45.635032 28.731426 322.239663 5.137970
+ SUBSEND
+ W3 0 0.000000 23.448661 57.374845 22.600061 56.701893 21.802496 55.965888 21.047706 55.189178
+ SUBSEGS
+ C 0 0.000000 -25.147496 39.141545 37.724656 313.986077 7.402626
+ SUBSEND
+ W3 0 0.000000 21.047706 55.189178 19.538127 53.635758 18.160594 51.960142 16.728490 50.335020
+ SUBSEGS
+ C 0 0.000000 -83.225697 81.368390 -2.151312 310.193940 3.355148
+ S 0 0.000000 17.795252 51.560631 16.728490 50.335020
+ SUBSEND
+ END$SEGS
+STRAIGHT 92 0 0 0 0 N 2 0.000000 0.000000
+ T4 242 12.067419 52.272702 41.387692 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ E4 5.455697 44.769927 221.387692 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ END$SEGS
+STRUCTURE 93 5 0 0 0 N 2 7.784678 46.388061 0 40.094508 "Gloor craft coal loading tower 214"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 12 0
+ 3.312500 2.523438 0
+ 0.000000 2.507812 0
+ 0.000000 0.039062 0
+ 3.293403 0.000000 0
+ 3.293403 0.617188 0
+ 4.301215 0.617188 0
+ 4.293403 0.875000 0
+ 3.285590 0.890625 0
+ 3.293403 1.625000 0
+ 4.296875 1.648438 0
+ 4.293403 1.875000 0
+ 3.309028 1.867188 0
+ END$SEGS
+STRUCTURE 94 5 0 0 0 N 2 14.895249 45.937373 0 38.140109 "Bar mills Diesel oil tanks 2002"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.500000 0
+ 0.625000 1.500000 0
+ 0.625000 0.000000 0
+ 0.000000 0.000000 0
+ F4 16744703 0.000000 4 0
+ 0.751735 1.500000 0
+ 1.376735 1.500000 0
+ 1.376735 0.000000 0
+ 0.751735 0.000000 0
+ END$SEGS
+STRUCTURE 95 5 0 0 0 N 2 15.999601 47.050978 0 39.157354 "Walthers Cornerstone Structures Pump House 933-3246D"
+ D 0.000000 0.000000
+ F4 32768 0.000000 4 0
+ 0.000000 0.125000 0
+ 0.812500 0.125000 0
+ 0.812500 0.687500 0
+ 0.000000 0.687500 0
+ F4 12632256 0.000000 4 0
+ 0.265625 0.125000 0
+ 0.531250 0.125000 0
+ 0.531250 0.000000 0
+ 0.265625 0.000000 0
+ END$SEGS
+DRAW 96 5 0 0 0 -11.143693 29.292395 0 0.000000
+ F4 16744703 0.027778 4 0
+ 29.341524 17.030819 0
+ 28.827420 15.098024 0
+ 29.575351 14.931419 0
+ 30.077406 16.818914 0
+ END$SEGS
+TURNOUT 97 0 0 0 0 N 2 188.382172 58.964663 0 47.890949 "Peco-80 Medium Left SL-1739/396"
+ T4 98 188.382172 58.964663 317.890949 0 0.0 0.0 0.0 0.0 0 0 0 15.495623
+ T4 99 191.647774 55.351697 137.890949 0 0.0 0.0 0.0 0.0 0 0 0 15.495623
+ T4 102 192.035030 55.701721 123.890949 0 0.0 0.0 0.0 0.0 0 0 0 15.495623
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.973080 0.000000
+ S 0 0.000000 0.973080 0.000000 4.870079 0.000000
+ C 0 0.000000 -14.687496 0.973099 14.687496 165.999924 14.000152
+ S 0 0.000000 4.526342 0.436290 4.870079 0.522000
+ END$SEGS
+TURNOUT 98 0 0 0 0 N 2 185.116571 62.577628 0 47.890949 "Peco-80 Medium Left SL-1739/396"
+ T4 569 185.116571 62.577628 317.890949 9 -2.330387 -0.242102 15.495623 15.495623 1 1 0 15.495623
+ T4 97 188.382172 58.964663 137.890949 0 0.0 0.0 0.0 0.0 0 0 0 15.495623
+ T4 103 188.769428 59.314686 123.890949 10 2.579256 -0.354160 0.0 0.0 1 2 0 15.495623
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.973080 0.000000
+ S 0 0.000000 0.973080 0.000000 4.870079 0.000000
+ C 0 0.000000 -14.687496 0.973099 14.687496 165.999924 14.000152
+ S 0 0.000000 4.526342 0.436290 4.870079 0.522000
+ END$SEGS
+STRAIGHT 99 0 0 0 0 N 2 0.000000 0.000000
+ T4 97 191.647774 55.351697 317.890949 0 0.0 0.0 0.0 0.0 0 0 0 15.495623
+ E4 207.953423 37.311608 137.890949 0 0.0 0.0 0.0 0.0 0 0 0 15.495623
+ END$SEGS
+STRAIGHT 100 0 0 0 0 N 2 0.000000 0.000000
+ T4 102 197.333701 51.745344 317.890949 0 0.0 0.0 0.0 0.0 0 0 0 15.495623
+ E4 209.221378 38.593168 137.890949 0 0.0 0.0 0.0 0.0 0 0 0 15.495623
+ END$SEGS
+STRAIGHT 101 0 0 0 0 N 2 0.000000 0.000000
+ T4 103 199.738370 51.769277 317.890949 0 0.0 0.0 0.0 0.0 0 0 0 15.495623
+ E4 210.511183 39.850554 137.890949 0 0.0 0.0 0.0 0.0 0 0 0 15.495623
+ END$SEGS
+CORNU 102 0 0 0 0 N 2 192.035030 55.701721 303.890949 0.000000 113.141404 -25.126851 197.333701 51.745344 137.890949 0.000000 113.141404 -25.126851
+ T4 97 192.035030 55.701721 303.890949 0 0.0 0.0 0.0 0.0 0 0 0 15.495623
+ T4 100 197.333701 51.745344 137.890949 0 0.0 0.0 0.0 0.0 0 0 0 15.495623
+ W3 0 0.000000 192.035030 55.701721 192.954259 55.084235 193.913029 54.528129 194.840315 53.922808
+ SUBSEGS
+ C 0 0.000000 -252.135427 328.461245 267.739834 212.002548 0.754851
+ SUBSEND
+ W3 0 0.000000 194.840315 53.922808 195.303957 53.620148 195.752676 53.293322 196.168376 52.927589
+ SUBSEGS
+ C 0 0.000000 11.603234 188.563922 44.163611 32.746124 8.201870
+ SUBSEND
+ W3 0 0.000000 196.168376 52.927589 196.584077 52.561856 196.962430 52.156107 197.333701 51.745344
+ SUBSEGS
+ C 0 0.000000 14.533919 186.417095 42.150422 42.139090 6.547734
+ SUBSEND
+ END$SEGS
+CORNU 103 0 0 0 0 N 2 188.769428 59.314686 303.890949 0.000000 113.141404 -25.126851 199.738370 51.769277 137.890949 0.000000 113.141404 -25.126851
+ T4 98 188.769428 59.314686 303.890949 10 2.579256 -0.354160 0.0 0.0 1 2 0 15.495623
+ T4 101 199.738370 51.769277 137.890949 0 0.0 0.0 0.0 0.0 0 0 0 15.495623
+ W3 0 0.000000 188.769428 59.314686 189.696183 58.692145 190.635252 58.086781 191.608146 57.539142
+ SUBSEGS
+ C 0 0.000000 -42.496174 212.706492 94.427957 209.767150 4.515491
+ SUBSEND
+ W3 0 0.000000 191.608146 57.539142 192.581041 56.991503 193.580482 56.492369 194.557188 55.951557
+ SUBSEGS
+ S 0 0.000000 191.608146 57.539142 194.557188 55.951557
+ SUBSEND
+ W3 0 0.000000 194.557188 55.951557 195.533894 55.410745 196.484343 54.816487 197.351977 54.113890
+ SUBSEGS
+ C 0 0.000000 19.150844 185.473200 39.092257 28.316306 10.019867
+ SUBSEND
+ W3 0 0.000000 197.351977 54.113890 198.219612 53.411294 198.989750 52.597528 199.738370 51.769277
+ SUBSEGS
+ C 0 0.000000 21.591956 183.458251 37.585825 40.050885 8.886310
+ SUBSEND
+ END$SEGS
+TURNOUT 104 0 0 0 0 N 2 132.153222 83.838179 0 357.244904 "Peco-80 Large Left SL-1737/389"
+ T4 556 132.153222 83.838179 267.244904 9 0.226712 -0.908903 15.300000 15.300000 1 1 0 15.294290
+ T4 1384 138.445154 84.140963 87.244904 0 0.0 0.0 0.0 0.0 0 0 0 15.294290
+ T4 331 138.420063 84.662359 79.244904 0 0.0 0.0 0.0 0.0 0 0 0 15.294290
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+TURNOUT 105 0 0 0 0 N 2 155.910762 86.344296 0 358.173410 "Peco-80 Medium Right SL-1738/395"
+ T4 973 155.910762 86.344296 268.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.387213
+ T4 106 160.778366 86.499527 88.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.387213
+ T4 560 160.795004 85.977793 102.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.387213
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.973080 0.000000
+ S 0 0.000000 0.973080 0.000000 4.870079 0.000000
+ C 0 0.000000 14.687496 0.973021 -14.687496 0.000076 14.000152
+ S 0 0.000000 4.526342 -0.436290 4.870079 -0.522000
+ END$SEGS
+TURNOUT 106 0 0 0 0 N 2 160.778366 86.499527 0 358.173410 "Peco-80 Wye SL-1741/397"
+ T4 105 160.778366 86.499527 268.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.387213
+ T4 332 165.767506 86.919767 84.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.387213
+ T4 333 165.784145 86.398033 92.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.387213
+ D 0.000000 0.000000
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ C 0 0.000000 -26.154032 0.354335 26.154032 175.999924 4.000152
+ S 0 0.000000 2.178781 0.063715 5.000000 0.261000
+ C 0 0.000000 26.154032 0.354196 -26.154032 0.000076 4.000152
+ S 0 0.000000 2.178781 -0.063715 5.000000 -0.261000
+ END$SEGS
+DRAW 107 4 0 0 0 0.000000 25.250000 0 0.000000
+ Q3 0 0.437500 43.250000 6.250000 0 43.250000 6.250000 0
+ END$SEGS
+DRAW 108 4 0 0 0 8.141541 37.966291 0 8.853987
+ Q3 0 0.437500 73.750000 33.750000 0 73.750000 33.750000 0
+ END$SEGS
+DRAW 109 4 0 0 0 11.338786 28.244937 0 359.337651
+ Q3 0 0.272727 55.250000 41.500000 0 55.250000 41.500000 0
+ END$SEGS
+DRAW 110 4 0 0 0 7.625000 19.875000 0 0.000000
+ Q3 0 0.437500 79.750000 28.250000 0 79.750000 28.250000 0
+ END$SEGS
+DRAW 111 11 5 0 0 -5.750000 11.375000 0 0.000000
+ L3 0 0.013889 183.247000 3.263889 0 183.374778 82.361111 0
+ END$SEGS
+DRAW 112 11 5 0 0 -0.097222 3.750000 0 0.000000
+ L3 0 0.013333 108.125000 -9.375000 0 108.087500 83.770833 0
+ END$SEGS
+DRAW 113 11 5 0 0 8.500000 10.000000 0 0.000000
+ L3 0 0.013333 29.983333 -2.458333 0 29.983333 84.291667 0
+ END$SEGS
+STRUCTURE 114 5 0 0 0 N 2 60.203560 71.602726 0 359.582616 "JV models ponty-pool farm supply (furniture) 1023"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.130000 0
+ 4.000000 1.130000 0
+ 4.000000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE 115 5 0 0 0 N 2 118.987208 67.604774 0 308.886650 "Mike Brasher southern farm house fh-1"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.500000 0
+ 1.500000 2.500000 0
+ 1.500000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 116 5 0 0 0 47.939535 73.740463 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "FREIGHT OFFICE"
+ END$SEGS
+DRAW 117 5 0 0 0 60.661218 72.267995 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 " FURNITURE\nSHIPPING and RECEIVING "
+ END$SEGS
+DRAW 118 5 0 0 0 63.049886 69.755209 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "DAIRY AND EGGS \nDISTRIBUTOR"
+ END$SEGS
+DRAW 119 5 0 0 0 67.176055 69.677902 0 359.337651
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "FRUIT & PRODUCE \nDISTRIBUTOR"
+ END$SEGS
+DRAW 120 5 0 0 0 56.049000 69.799281 0 359.337651
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "GENERAL DRY GOODS \nWHOLESALER"
+ END$SEGS
+DRAW 121 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 13684944 0.000000 22 0
+ 81.713816 73.737390 2
+ 84.963816 73.174890 2
+ 87.276316 72.362390 0
+ 89.338816 71.362390 0
+ 88.406250 68.277778 1
+ 84.468750 69.715278 0
+ 78.343750 71.663194 1
+ 75.562500 72.343750 0
+ 74.468750 72.562500 2
+ 74.406250 72.156250 0
+ 74.281250 71.218750 2
+ 73.312500 71.093750 0
+ 70.343750 70.777778 0
+ 70.125000 71.437500 0
+ 73.687500 71.812500 2
+ 73.812500 72.062500 0
+ 74.093750 73.312500 2
+ 75.000000 73.218750 0
+ 75.843750 73.062500 1
+ 78.187500 72.500000 2
+ 78.593750 72.718750 2
+ 78.838816 73.924890 0
+ END$SEGS
+DRAW 122 8 0 0 0 -0.250000 7.625000 0 0.000000
+ B3 16760832 0.055556 0.750000 58.461806 0 215.750000 58.461806 0 133120
+ END$SEGS
+DRAW 123 8 0 0 0 -0.250000 8.305556 0 0.000000
+ B3 16760832 0.055556 215.750000 58.000000 0 215.780014 88.750105 0 133120
+ END$SEGS
+DRAW 124 8 0 0 0 -0.250000 8.500000 0 0.000000
+ B3 16760832 0.055556 215.778266 89.250099 0 0.000000 89.500000 0 133120
+ END$SEGS
+DRAW 125 8 0 0 0 -0.444444 7.625000 0 0.000000
+ B3 16760832 0.055556 0.631944 90.020833 0 0.750000 58.000000 0 133120
+ END$SEGS
+DRAW 126 8 0 0 0 -4.375000 8.125000 0 0.000000
+ B3 16760832 0.055556 39.312500 89.270833 0 39.312500 58.520833 0 133120
+ END$SEGS
+DRAW 127 8 0 0 0 4.625000 7.875000 0 0.000000
+ B3 16760832 0.055556 177.312500 89.270833 0 177.125000 58.711806 0 133120
+ END$SEGS
+DRAW 128 8 0 0 0 -0.250000 7.625000 0 0.000000
+ B3 16760832 0.055556 35.687500 75.631944 0 181.812500 75.256944 0 133120
+ END$SEGS
+DRAW 129 8 0 0 0 -0.250000 7.625000 0 0.000000
+ B3 16760832 0.055556 84.000000 8.263889 0 83.937500 89.770833 0 133120
+ END$SEGS
+DRAW 130 8 0 0 0 -0.250000 7.625000 0 0.000000
+ B3 16760832 0.055556 132.250000 8.263889 0 132.437500 89.645833 0 133120
+ END$SEGS
+DRAW 131 8 0 0 0 3.125000 7.250000 0 0.000000
+ B3 16760832 0.055556 41.041667 32.041667 0 35.152994 58.454270 0 133120
+ END$SEGS
+DRAW 132 8 0 0 0 3.125000 7.250000 0 0.000000
+ B3 16760832 0.055556 40.987253 31.854398 0 34.716102 10.271865 0 133120
+ END$SEGS
+DRAW 133 8 0 0 0 -0.250000 7.625000 0 0.000000
+ B3 16760832 0.055556 0.562500 57.895833 0 0.499544 10.209307 0 133120
+ END$SEGS
+DRAW 134 8 0 0 0 211.875000 7.250000 0 0.000000
+ B3 16760832 0.055556 -40.687500 31.843750 0 -34.625000 58.336806 0 133120
+ END$SEGS
+DRAW 135 8 0 0 0 212.166667 7.250000 0 0.000000
+ B3 16760832 0.055556 -40.937500 31.593750 0 -34.562500 10.218750 0 133120
+ END$SEGS
+DRAW 136 8 0 0 0 216.250000 7.375000 0 0.000000
+ B3 16760832 0.055556 -0.875000 58.000000 0 -0.750000 10.500000 0 133120
+ END$SEGS
+DRAW 137 8 0 0 0 -0.250000 7.625000 0 0.000000
+ L3 12632256 0.055556 -17.625000 65.138889 0 -17.625000 65.138889 0
+ END$SEGS
+DRAW 138 8 0 0 0 -0.250000 4.125000 0 0.000000
+ B3 16760832 0.055556 84.125000 11.763889 0 98.437500 -1.281250 0 133120
+ END$SEGS
+DRAW 139 8 0 0 0 -0.250000 4.125000 0 0.000000
+ B3 16760832 0.055556 132.250000 11.888889 0 119.312500 -1.156250 0 133120
+ END$SEGS
+DRAW 140 8 0 0 0 0.000000 3.958333 0 0.000000
+ B3 16760832 0.055556 98.000000 -0.944444 0 119.187500 -0.906250 0 133120
+ END$SEGS
+DRAW 141 9 0 0 0 -0.347221 25.655833 0 0.000000
+ Q3 0 0.437500 43.250000 6.250000 0 43.250000 6.250000 0
+ END$SEGS
+DRAW 142 9 0 0 0 8.329334 19.274856 0 357.958060
+ Q3 0 0.437500 73.750000 33.750000 0 73.750000 33.750000 0
+ END$SEGS
+DRAW 143 4 0 0 0 -0.097221 26.155833 0 0.000000
+ Q3 0 0.437500 -0.027779 72.344167 0 216.222221 72.344167 0
+ END$SEGS
+DRAW 144 9 0 0 0 7.277779 20.280833 0 0.000000
+ Q3 0 0.272727 55.250000 41.500000 0 55.250000 41.500000 0
+ END$SEGS
+DRAW 145 9 0 0 0 7.277779 20.280833 0 0.000000
+ Q3 0 0.437500 79.750000 28.250000 0 79.750000 28.250000 0
+ END$SEGS
+DRAW 146 9 0 0 0 -0.097221 14.280833 0 0.000000
+ L3 0 0.027778 107.847221 -7.780833 0 107.930740 83.109640 0
+ END$SEGS
+DRAW 147 9 0 0 0 -0.347221 8.030833 0 0.000000
+ L3 0 0.375000 165.531250 57.739583 0 165.531250 57.739583 0
+ END$SEGS
+DRAW 148 9 0 0 0 -0.347221 8.030833 0 0.000000
+ L3 12632256 0.055556 -2.000000 58.000000 0 225.000000 58.000000 0
+ END$SEGS
+DRAW 149 9 0 0 0 -0.347221 8.030833 0 0.000000
+ B3 16760832 0.055556 0.751157 89.499130 0 0.750000 58.000000 0 133120
+ END$SEGS
+DRAW 150 9 0 0 0 -0.347221 8.030833 0 0.000000
+ L3 12632256 0.055556 -17.625000 65.138889 0 -17.625000 65.138889 0
+ END$SEGS
+DRAW 151 9 0 0 0 -0.194443 2.822499 0 0.000000
+ B3 16760832 0.055556 98.361110 0.260834 0 119.486110 0.260834 0 133120
+ END$SEGS
+TURNOUT 152 0 0 0 0 N 2 36.441300 69.223843 0 345.932085 "Peco-80 Large Right SL-1736/388"
+ T4 266 36.441300 69.223843 255.932085 0 0.0 0.0 0.0 0.0 0 0 0 15.702360
+ T4 227 42.551589 70.755004 75.932085 10 0.000000 0.000000 0.0 0.0 1 2 0 15.702360
+ T4 157 42.678472 70.248660 83.932085 10 0.000000 0.000000 0.0 0.0 1 2 0 15.702360
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 31.901195 0.354173 -31.901195 0.000076 8.000152
+ S 0 0.000000 4.794168 -0.310471 6.299213 -0.522000
+ END$SEGS
+STRAIGHT 153 0 0 0 0 N 2 0.000000 0.000000
+ T4 324 81.140625 65.710069 296.460306 0 0.0 0.0 0.0 0.0 0 0 0 15.982078
+ E4 93.262332 59.676891 116.460306 0 0.0 0.0 0.0 0.0 0 0 0 15.982078
+ END$SEGS
+TURNOUT 154 0 0 0 0 N 2 51.639490 71.511205 0 165.932085 "Peco-55 Double Slip SL-390F"
+ T4 280 51.639490 71.511205 75.932085 0 0.0 0.0 0.0 0.0 0 0 0 15.894936
+ T4 161 45.758337 70.037462 255.932085 10 0.000000 0.000000 0.0 0.0 1 2 0 15.894936
+ T4 156 51.722772 70.989389 85.932085 0 0.0 0.0 0.0 0.0 0 0 0 15.894936
+ T4 157 45.675055 70.559277 265.932085 0 0.0 0.0 0.0 0.0 0 0 0 15.894936
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 0 4 5 6
+ P "Reverse" 1 7 6 0 4 8 3
+ S 0 0.000000 0.000000 0.000000 0.706327 0.000000
+ S 0 0.000000 0.706327 0.000000 5.356665 0.000000
+ S 0 0.000000 5.356665 0.000000 6.062992 0.000000
+ S 0 0.000000 0.046054 0.526409 0.741456 0.403784
+ S 0 0.000000 0.741456 0.403784 5.321536 -0.403784
+ S 0 0.000000 5.321536 -0.403784 6.016938 -0.526409
+ C 0 0.000000 26.577552 0.706221 -26.577552 0.000076 10.000152
+ C 0 0.000000 -26.577552 5.356700 26.577546 180.000076 10.000152
+ END$SEGS
+STRAIGHT 155 0 0 0 0 N 2 0.000000 0.000000
+ T4 265 60.810828 71.191142 269.569213 0 0.0 0.0 0.0 0.0 0 0 0 15.894936
+ T4 220 70.078213 71.260822 89.569213 0 0.0 0.0 0.0 0.0 0 0 0 15.894936
+ END$SEGS
+CORNU 156 0 0 0 0 N 2 51.722772 70.989389 265.932085 0.000000 0.000000 7.625000 55.015625 71.147569 89.569213 0.000000 0.000000 7.625000
+ T4 154 51.722772 70.989389 265.932085 0 0.0 0.0 0.0 0.0 0 0 0 15.894936
+ T4 265 55.015625 71.147569 89.569213 0 0.0 0.0 0.0 0.0 0 0 0 15.894936
+ W3 0 0.000000 51.722772 70.989389 52.819173 71.067363 53.916486 71.139305 55.015625 71.147569
+ SUBSEGS
+ C 0 0.000000 51.942449 55.860248 19.211987 355.431264 3.637022
+ SUBSEND
+ END$SEGS
+CORNU 157 0 0 0 0 N 2 45.675055 70.559277 85.932085 0.000000 0.000000 7.625000 42.678472 70.248660 263.932085 0.000000 0.000000 7.625000
+ T4 154 45.675055 70.559277 85.932085 0 0.0 0.0 0.0 0.0 0 0 0 15.800098
+ T4 152 42.678472 70.248660 263.932085 10 0.000000 0.000000 0.0 0.0 1 2 0 15.800098
+ W3 0 0.000000 45.675055 70.559277 45.174153 70.523654 44.673922 70.478576 44.175145 70.420321
+ SUBSEGS
+ C 0 0.000000 -33.277452 47.994091 37.362728 353.410173 2.593765
+ SUBSEND
+ W3 0 0.000000 44.175145 70.420321 43.676368 70.362066 43.177826 70.301743 42.678472 70.248660
+ SUBSEGS
+ S 0 0.000000 44.175145 70.420321 42.678472 70.248660
+ SUBSEND
+ END$SEGS
+STRAIGHT 158 0 0 0 0 N 2 0.000000 0.000000
+ T4 220 77.097176 70.918876 276.465812 0 0.0 0.0 0.0 0.0 0 0 0 15.894936
+ E4 93.696928 69.037606 96.465812 0 0.0 0.0 0.0 0.0 0 0 0 15.894936
+ END$SEGS
+TURNOUT 159 0 0 0 0 N 2 71.184488 68.196610 0 1.735504 "Peco-80 Medium Right SL-1738/395"
+ T4 230 71.184488 68.196610 271.735504 0 0.0 0.0 0.0 0.0 0 0 0 15.982078
+ T4 1274 76.052333 68.049117 91.735504 0 0.0 0.0 0.0 0.0 0 0 0 15.982078
+ T4 324 76.036524 67.527356 105.735504 0 0.0 0.0 0.0 0.0 0 0 0 15.982078
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.973080 0.000000
+ S 0 0.000000 0.973080 0.000000 4.870079 0.000000
+ C 0 0.000000 14.687496 0.973021 -14.687496 0.000076 14.000152
+ S 0 0.000000 4.526342 -0.436290 4.870079 -0.522000
+ END$SEGS
+STRUCTURE 160 5 0 0 0 N 0 85.455891 63.088333 0 206.275494 "Brasher loading ramp (team track) 001"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 0.750000 0
+ 3.250000 0.750000 0
+ 3.250000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+CORNU 161 0 0 0 0 N 2 45.758337 70.037462 75.932085 0.000000 0.000000 7.625000 35.412371 67.279179 247.071923 0.000000 0.000000 0.000000
+ T4 154 45.758337 70.037462 75.932085 10 0.000000 0.000000 0.0 0.0 1 2 0 15.842584
+ T4 162 35.412371 67.279179 247.071923 2 0.000000 0.000000 0.0 0.0 0 2 0 15.842584
+ W3 0 0.000000 45.758337 70.037462 44.023345 69.602695 42.264554 69.273257 40.513775 68.907206
+ SUBSEGS
+ C 0 0.000000 89.779982 24.599990 157.288649 166.368947 2.567955
+ S 0 0.000000 41.827865 69.177097 40.513775 68.907206
+ SUBSEND
+ W3 0 0.000000 40.513775 68.907206 39.638386 68.724181 38.768316 68.511940 37.916721 68.238830
+ SUBSEGS
+ C 0 0.000000 -25.745596 45.623309 43.673729 342.582264 5.970677
+ SUBSEND
+ W3 0 0.000000 37.916721 68.238830 37.065125 67.965720 36.236033 67.627583 35.412371 67.279179
+ SUBSEGS
+ C 0 0.000000 -29.871052 47.342300 39.893844 336.460517 5.145931
+ SUBSEND
+ END$SEGS
+TURNOUT 162 0 0 0 0 N 2 29.828388 64.917188 0 337.071923 "Peco-55 Long Crossing 10d SL-394F"
+ T4 224 29.828388 64.917188 247.071923 2 0.000000 0.000000 0.0 0.0 0 2 0 15.790232
+ T4 161 35.412371 67.279179 67.071923 2 0.000000 0.000000 0.0 0.0 0 2 0 15.790232
+ T4 1311 29.665728 65.419949 257.071923 0 0.0 0.0 0.0 0.0 0 0 0 15.790232
+ T4 317 35.575032 66.776419 77.071923 2 0.000000 0.000000 0.0 0.0 0 2 0 15.790232
+ D 0.000000 0.000000
+ P "Normal" 1 0 2
+ S 0 0.000000 0.000000 0.000000 6.062992 0.000000
+ S 0 0.000000 0.046054 0.526409 6.016938 -0.526409
+ END$SEGS
+DRAW 163 8 0 0 0 -0.250000 7.625000 0 0.000000
+ B3 16760832 0.055556 0.499544 10.209307 0 37.999646 10.282431 0 131584
+ END$SEGS
+DRAW 164 8 0 0 0 -0.250000 7.625000 0 0.000000
+ B3 16760832 0.055556 215.812500 9.718750 0 177.562500 9.843750 0 131584
+ END$SEGS
+DRAW 165 8 0 0 0 -0.250000 7.625000 0 0.000000
+ B3 16760832 0.055556 40.433740 50.681975 0 46.250043 57.992645 0 131584
+ END$SEGS
+DRAW 166 8 0 0 0 -0.916667 7.625000 0 0.000000
+ B3 16760832 0.055556 77.172729 58.150693 0 84.331402 51.316909 0 131584
+ END$SEGS
+DRAW 167 8 0 0 0 -0.472222 7.625000 0 0.000000
+ B3 16760832 0.055556 133.000000 51.000000 0 139.750000 57.961806 0 131584
+ END$SEGS
+DRAW 168 8 0 0 0 -0.250000 7.625000 0 0.000000
+ B3 16760832 0.055556 175.687500 51.843750 0 171.437500 57.843750 0 131584
+ END$SEGS
+DRAW 169 9 0 0 0 0.001271 25.905833 0 0.000000
+ Q3 0 0.437500 43.250000 6.250000 0 43.250000 6.250000 0
+ END$SEGS
+DRAW 170 9 0 0 0 8.677826 19.524856 0 357.958060
+ Q3 0 0.437500 73.750000 33.750000 0 73.750000 33.750000 0
+ END$SEGS
+DRAW 171 9 0 0 0 11.340057 28.900770 0 359.337651
+ Q3 0 0.272727 55.250000 41.500000 0 55.250000 41.500000 0
+ END$SEGS
+DRAW 172 9 0 0 0 7.626271 20.530833 0 0.000000
+ Q3 0 0.437500 79.750000 28.250000 0 79.750000 28.250000 0
+ END$SEGS
+DRAW 173 9 0 0 0 0.001271 8.280833 0 0.000000
+ L3 0 0.375000 165.531250 57.739583 0 165.531250 57.739583 0
+ END$SEGS
+DRAW 174 9 0 0 0 0.042938 4.739166 0 0.000000
+ B3 16760832 0.055556 84.373587 11.750253 0 132.154167 11.595833 0 133120
+ END$SEGS
+DRAW 175 9 0 0 0 -0.998729 -0.552500 0 0.000000
+ L3 12632256 0.055556 216.373981 18.012979 0 0.250000 18.125000 0
+ END$SEGS
+DRAW 176 9 0 0 0 0.042938 4.739166 0 0.000000
+ B3 16760832 0.055556 83.873729 11.094167 0 97.914299 -1.925254 0 133120
+ END$SEGS
+DRAW 177 9 0 0 0 0.042938 4.739166 0 0.000000
+ B3 16760832 0.055556 131.998729 11.469167 0 119.123729 -1.655833 0 133120
+ END$SEGS
+DRAW 178 9 0 0 0 0.001271 8.280833 0 0.000000
+ B3 16760832 0.055556 131.248729 8.469167 0 108.248729 57.219167 0 133120
+ END$SEGS
+DRAW 179 9 0 0 0 0.001271 8.280833 0 0.000000
+ B3 16760832 0.055556 84.623729 8.719167 0 107.373729 57.219167 0 133120
+ END$SEGS
+DRAW 180 9 0 0 0 0.167938 1.905833 0 0.000000
+ B3 16760832 0.055556 -0.417938 15.927500 0 37.748759 16.001924 0 131584
+ END$SEGS
+DRAW 181 9 0 0 0 1.404049 8.280833 0 0.000000
+ B3 16760832 0.055556 38.569944 49.744332 0 44.220954 57.336873 0 131584
+ END$SEGS
+DRAW 182 9 0 0 0 5.151389 0.776564 0 0.000000
+ B3 16760832 0.055556 71.348611 64.848436 0 78.223611 58.223436 0 131584
+ END$SEGS
+DRAW 183 9 0 0 0 0.001271 8.280833 0 0.000000
+ B3 16760832 0.055556 132.248729 49.969167 0 139.500000 57.500000 0 131584
+ END$SEGS
+DRAW 184 0 0 0 0 0.000000 7.625000 0 0.000000
+ Q3 0 0.333333 -0.015495 90.116319 0 -0.107077 9.749618 0
+ END$SEGS
+DRAW 185 0 0 0 0 0.000000 7.625000 0 0.000000
+ Q3 0 0.375000 215.984505 15.866319 0 216.297005 90.359375 0
+ END$SEGS
+STRUCTURE 186 5 16 0 0 N 2 110.740542 53.210151 0 305.248726 "PPP 2 story company house (makes 2) CH-1"
+ D 0.000000 0.000000
+ F4 16744703 0.055556 4 0
+ 0.000000 -2.763889 0
+ 1.313000 -2.763889 0
+ 1.313000 -0.513889 0
+ 0.000000 -0.513889 0
+ Y4 16744703 0.055556 4 0
+ 0.097222 -0.527778 0
+ 1.222222 -0.527778 0
+ 1.222222 -0.027778 0
+ 0.097222 -0.027778 0
+ END$SEGS
+STRUCTURE 187 5 16 0 0 N 2 109.629435 51.434898 0 305.841159 "PPP 2 story company house (makes 2) CH-1"
+ D 0.000000 0.000000
+ F4 16744703 0.055556 4 0
+ 0.000000 -2.763889 0
+ 1.313000 -2.763889 0
+ 1.313000 -0.513889 0
+ 0.000000 -0.513889 0
+ Y4 16744703 0.055556 4 0
+ 0.097222 -0.527778 0
+ 1.222222 -0.527778 0
+ 1.222222 -0.027778 0
+ 0.097222 -0.027778 0
+ END$SEGS
+STRUCTURE 188 5 0 0 0 N 2 86.134083 52.085454 0 20.267858 "Bar mills oil storage tanks 2002"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.039149 1.207357 0
+ 1.539149 1.207357 0
+ 1.539149 0.707357 0
+ 0.039149 0.707357 0
+ F4 16744703 0.000000 4 0
+ 0.036140 0.525019 0
+ 1.535930 0.499930 0
+ 1.527567 0.000000 0
+ 0.027776 0.025089 0
+ L3 12632256 0.055556 0.039149 1.158746 0 0.027776 0.025089 0
+ L3 12632256 0.055556 1.539149 1.158746 0 1.528666 0.065694 0
+ END$SEGS
+DRAW 189 5 0 0 0 24.625000 43.510417 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "FOUNDARY"
+ END$SEGS
+STRUCTURE 190 5 0 0 0 N 2 125.471681 75.653211 0 20.635589 "Blair line 6 room section house (house) 094"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.750000 0
+ 3.630000 1.750000 0
+ 3.630000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 191 7 0 0 0 0.000000 7.625000 0 0.000000
+ F4 14592682 0.000000 36 0
+ 124.781250 53.562500 0
+ 125.000000 54.000000 2
+ 124.281250 53.968750 2
+ 122.218750 55.625000 2
+ 122.843750 56.406250 0
+ 123.968750 57.843750 2
+ 124.718750 57.375000 0
+ 126.437500 56.062500 2
+ 126.781250 56.500000 0
+ 127.750000 58.406250 2
+ 127.062500 58.750000 2
+ 123.437500 60.750000 2
+ 123.968750 61.656250 2
+ 126.531250 60.272569 2
+ 126.625000 60.531250 2
+ 123.968750 62.553819 2
+ 124.546875 63.225694 2
+ 126.343750 61.772569 2
+ 126.515625 61.944444 2
+ 125.421875 63.725694 2
+ 126.109375 64.053819 2
+ 127.218750 62.256944 2
+ 128.031250 62.500000 2
+ 127.703125 63.819444 2
+ 128.406250 63.991319 2
+ 128.921875 62.725694 2
+ 129.546875 62.647569 0
+ 130.953125 62.928819 2
+ 132.187500 63.788194 0
+ 133.843750 62.125000 0
+ 132.687500 61.000000 0
+ 131.765625 61.131944 2
+ 130.093750 59.631944 2
+ 129.156250 58.375000 2
+ 127.812500 55.906250 0
+ 126.343750 53.218750 0
+ END$SEGS
+DRAW 192 7 0 0 0 0.000000 7.625000 0 0.000000
+ F4 898314 0.055556 7 0
+ 128.250000 59.694444 2
+ 127.296875 61.069444 2
+ 127.703125 61.616319 2
+ 128.328125 61.756944 2
+ 131.406250 62.366319 2
+ 131.531250 62.006944 2
+ 128.828125 59.631944 2
+ END$SEGS
+STRUCTURE 193 7 0 0 0 N 2 121.593750 65.656250 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 194 7 0 0 0 N 2 125.312500 64.906250 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 195 7 0 0 0 N 2 120.468750 62.875000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 196 7 0 0 0 N 2 129.843750 68.843750 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 197 7 0 0 0 N 2 130.937500 67.000000 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 198 7 0 0 0 N 2 128.125000 64.000000 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 199 7 0 0 0 N 2 126.875000 60.593750 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 200 7 0 0 0 N 2 130.031250 70.687500 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 201 7 0 0 0 N 2 128.593750 70.875000 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 202 7 0 0 0 N 2 125.968750 70.312500 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 203 7 0 0 0 N 2 128.281250 68.343750 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 204 7 0 0 0 N 2 129.031250 67.750000 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 205 7 0 0 0 N 2 123.906250 64.468750 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 206 7 0 0 0 N 2 119.093750 64.406250 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 207 7 0 0 0 N 2 129.312500 65.250000 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 208 7 0 0 0 N 2 123.437500 69.718750 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 209 7 0 0 0 N 2 122.906250 68.062500 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 210 7 0 0 0 N 2 119.312500 63.187500 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 211 7 0 0 0 N 2 119.593750 61.187500 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 212 7 0 0 0 N 2 123.687500 66.156250 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 213 7 0 0 0 N 2 126.343750 58.562500 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+DRAW 214 7 0 0 0 123.500000 63.392361 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "DEEP GORGE PARK\n and \nCAMPGROUND"
+ END$SEGS
+STRAIGHT 215 0 0 0 0 N 2 0.000000 0.000000
+ T4 558 170.977416 89.526309 260.965646 0 0.0 0.0 0.0 0.0 0 0 0 15.349704
+ E4 185.254308 91.796323 80.965646 0 0.0 0.0 0.0 0.0 0 0 0 15.349704
+ END$SEGS
+STRAIGHT 216 0 0 0 0 N 2 0.000000 0.000000
+ T4 332 177.809498 88.553887 261.656234 0 0.0 0.0 0.0 0.0 0 0 0 15.387213
+ E4 190.062085 90.350905 81.656234 0 0.0 0.0 0.0 0.0 0 0 0 15.387213
+ END$SEGS
+STRAIGHT 217 0 0 0 0 N 2 0.000000 0.000000
+ T4 333 178.444315 86.168626 267.169851 0 0.0 0.0 0.0 0.0 0 0 0 15.387213
+ E4 194.132936 86.944203 87.169851 0 0.0 0.0 0.0 0.0 0 0 0 15.387213
+ END$SEGS
+STRUCTURE 218 5 0 0 0 N 2 85.921038 70.345308 0 6.572510 "Manguson models Tickners watchworks M526"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.500000 0
+ 5.313000 2.500000 0
+ 5.313000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 219 5 0 0 0 87.610712 71.315842 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "ICE PLANT"
+ END$SEGS
+CORNU 220 0 0 0 0 N 2 70.078213 71.260822 269.569213 0.000000 0.000000 7.625000 77.097176 70.918876 96.465812 0.000000 0.000000 7.625000
+ T4 155 70.078213 71.260822 269.569213 0 0.0 0.0 0.0 0.0 0 0 0 15.894936
+ T4 158 77.097176 70.918876 96.465812 0 0.0 0.0 0.0 0.0 0 0 0 15.894936
+ W3 0 0.000000 70.078213 71.260822 72.422646 71.278449 74.767590 71.182891 77.097176 70.918876
+ SUBSEGS
+ C 0 0.000000 58.418547 70.750209 12.846141 359.340904 6.896390
+ SUBSEND
+ END$SEGS
+DRAW 221 8 5 0 0 -0.250000 7.625000 0 0.000000
+ L3 12632256 0.013333 65.437500 73.590278 0 182.312500 73.465278 0
+ END$SEGS
+STRUCTURE 222 7 0 0 0 N 2 132.177083 70.072917 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+TURNOUT 223 0 0 0 0 N 2 35.000097 58.807323 0 123.751216 "PECO Curved Left ST45"
+ T4 238 35.000097 58.807323 33.751216 0 0.0 0.0 0.0 0.0 0 0 0 16.145071
+ T4 239 32.764036 53.850851 191.251216 9 0.000000 0.000000 16.179525 16.179525 1 1 0 16.145071
+ T4 1520 33.251638 53.043867 180.001216 0 0.0 0.0 0.0 0.0 0 0 0 16.145071
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 3
+ S 0 0.000000 0.000000 0.000000 0.866142 0.000000
+ C 0 0.000000 -11.751969 0.866142 11.751969 157.500000 22.500000
+ C 0 0.000000 -10.374016 0.000000 10.374016 146.250000 33.750000
+ END$SEGS
+CORNU 224 0 0 0 0 N 2 29.828388 64.917188 67.071923 0.000000 0.000000 0.000000 22.838653 62.143533 247.200584 0.000000 0.000000 0.000000
+ T4 162 29.828388 64.917188 67.071923 2 0.000000 0.000000 0.0 0.0 0 2 0 15.847330
+ T4 225 22.838653 62.143533 247.200584 0 0.0 0.0 0.0 0.0 0 0 0 15.847330
+ W3 0 0.000000 29.828388 64.917188 28.673971 64.428876 27.507988 63.968456 26.334510 63.527914
+ SUBSEGS
+ C 0 0.000000 91.632650 -5.768957 149.352794 157.140119 2.351178
+ SUBSEND
+ W3 0 0.000000 26.334510 63.527914 25.161032 63.087373 23.994164 62.629251 22.838653 62.143533
+ SUBSEGS
+ C 0 0.000000 -96.937255 60.270955 -27.274890 337.284860 2.222521
+ SUBSEND
+ END$SEGS
+TURNOUT 225 0 0 0 0 N 2 17.031616 59.702549 0 337.200584 "Peco-80 Large Right SL-1736/388"
+ T4 1314 17.031616 59.702549 247.200584 2 0.000000 0.000000 0.0 0.0 0 2 0 15.904640
+ T4 224 22.838653 62.143533 67.200584 0 0.0 0.0 0.0 0.0 0 0 0 15.904640
+ T4 1312 23.040931 61.662318 75.200584 0 0.0 0.0 0.0 0.0 0 0 0 15.904640
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 31.901195 0.354173 -31.901195 0.000076 8.000152
+ S 0 0.000000 4.794168 -0.310471 6.299213 -0.522000
+ END$SEGS
+TURNOUT 226 0 0 0 0 N 2 3.755397 45.904593 0 277.432049 "Peco-80 Curved Right SL-1734/386"
+ E4 3.755397 45.904593 187.432049 0 0.0 0.0 0.0 0.0 0 0 0 16.184343
+ T4 245 5.071567 51.921906 17.247049 9 0.000000 0.000000 16.225325 16.225325 1 1 0 16.184343
+ T4 1314 5.575377 51.766455 27.065049 2 0.000000 0.000000 0.0 0.0 0 2 0 16.184343
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 2 5 6 7
+ C 0 0.000000 35.984252 0.000000 -35.984252 0.000000 0.318449
+ S 0 0.000000 0.199999 -0.000556 0.249998 -0.000732
+ C 0 0.000000 35.417758 0.050634 -35.417928 0.322516 9.248991
+ C 0 0.000000 35.984252 0.002864 -35.984333 9.496551 0.318449
+ C 0 0.000000 16.099920 0.301422 -16.100570 359.816995 10.181213
+ C 0 0.000000 19.147709 -0.432227 -19.064875 10.620177 8.562309
+ C 0 0.000000 17.992126 0.002783 -17.992594 18.996102 0.636898
+ END$SEGS
+CORNU 227 0 0 0 0 N 2 52.437500 73.250000 76.396206 421.587068 -46.722510 483.009623 42.551589 70.755004 255.932085 0.000000 0.000000 7.625000
+ T4 1421 52.437500 73.250000 76.396206 0 0.0 0.0 0.0 0.0 0 0 0 15.828809
+ T4 152 42.551589 70.755004 255.932085 10 0.000000 0.000000 0.0 0.0 1 2 0 15.828809
+ W3 0 0.000000 52.437500 73.250000 49.134166 72.450608 45.848340 71.581128 42.551589 70.755004
+ SUBSEGS
+ C 0 0.000000 -1258.694940 355.502188 -1148.414745 345.603483 0.464118
+ SUBSEND
+ END$SEGS
+DRAW 228 0 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 21.416667 13.333333 0 21.375000 13.423611 0
+ END$SEGS
+DRAW 229 11 5 0 0 0.000000 5.125000 0 0.000000
+ L3 1905684 0.013333 0.083438 31.547696 0 217.750000 31.166667 0
+ END$SEGS
+CORNU 230 0 0 0 0 N 2 61.406250 68.211806 269.533806 0.000000 0.000000 7.625000 71.184488 68.196610 91.735504 0.000000 0.000000 7.625000
+ T4 231 61.406250 68.211806 269.533806 0 0.0 0.0 0.0 0.0 0 0 0 15.982078
+ T4 159 71.184488 68.196610 91.735504 0 0.0 0.0 0.0 0.0 0 0 0 15.982078
+ W3 0 0.000000 61.406250 68.211806 64.665914 68.238329 67.926211 68.295334 71.184488 68.196610
+ SUBSEGS
+ C 0 0.000000 405.093016 66.871519 -336.844342 359.226977 1.037362
+ C 0 0.000000 120.303266 67.612464 -52.053615 0.537220 1.164246
+ SUBSEND
+ END$SEGS
+TURNOUT 231 0 0 0 0 N 2 61.406250 68.211806 0 179.533806 "Peco-80 Large Left SL-1737/389"
+ T4 230 61.406250 68.211806 89.533806 0 0.0 0.0 0.0 0.0 0 0 0 15.982078
+ T4 316 55.107246 68.160552 269.533806 0 0.0 0.0 0.0 0.0 0 0 0 15.982078
+ T4 233 55.111493 67.638569 261.533806 0 0.0 0.0 0.0 0.0 0 0 0 15.982078
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+TURNOUT 232 0 0 0 0 N 2 52.372683 68.122536 0 179.533806 "Peco-80 Large Left SL-1737/389"
+ T4 316 52.372683 68.122536 89.533806 0 0.0 0.0 0.0 0.0 0 0 0 15.915895
+ T4 317 46.073679 68.071283 269.533806 0 0.0 0.0 0.0 0.0 0 0 0 15.915895
+ T4 1313 46.077926 67.549300 261.533806 0 0.0 0.0 0.0 0.0 0 0 0 15.915895
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+CORNU 233 0 0 0 0 N 2 55.111493 67.638569 81.533806 0.000000 0.000000 7.625000 50.791348 67.014313 260.172382 38.509525 57.364325 29.069887
+ T4 231 55.111493 67.638569 81.533806 0 0.0 0.0 0.0 0.0 0 0 0 16.021253
+ T4 236 50.791348 67.014313 260.172382 0 0.0 0.0 0.0 0.0 0 0 0 16.021253
+ W3 0 0.000000 55.111493 67.638569 53.672272 67.424344 52.225073 67.262672 50.791348 67.014313
+ SUBSEGS
+ S 0 0.000000 55.111493 67.638569 51.868833 67.186504
+ S 0 0.000000 51.868833 67.186504 50.791348 67.014313
+ SUBSEND
+ END$SEGS
+CORNU 234 0 0 0 0 N 2 31.482824 62.491008 65.789686 36.000000 46.239505 29.671704 30.336688 61.919389 240.724001 0.000000 0.000000 7.625000
+ T4 82 31.482824 62.491008 65.789686 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 90 30.336688 61.919389 240.724001 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ W3 0 0.000000 31.482824 62.491008 31.093275 62.315854 30.709249 62.128255 30.336688 61.919389
+ SUBSEGS
+ C 0 0.000000 -14.491693 37.371201 49.249551 330.960210 5.065434
+ SUBSEND
+ END$SEGS
+CORNU 235 0 0 0 0 N 2 31.698206 62.009759 55.971686 18.000000 41.771052 47.092059 29.745859 60.508499 229.112226 0.000000 0.000000 7.625000
+ T4 82 31.698206 62.009759 55.971686 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 83 29.745859 60.508499 229.112226 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ W3 0 0.000000 31.698206 62.009759 31.017364 61.550035 30.366921 61.046248 29.745859 60.508499
+ SUBSEGS
+ C 0 0.000000 -20.587605 43.249183 44.967917 319.012388 6.858155
+ SUBSEND
+ END$SEGS
+TURNOUT 236 0 0 0 0 N 2 50.677402 67.023882 0 170.920426 "Peco-80 Large Left SL-1737/389"
+ T4 233 50.677402 67.023882 80.920426 0 0.0 0.0 0.0 0.0 0 0 0 16.060737
+ T4 237 44.457118 66.029828 260.920426 0 0.0 0.0 0.0 0.0 0 0 0 16.060737
+ T4 238 44.539492 65.514369 252.920426 0 0.0 0.0 0.0 0.0 0 0 0 16.060737
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+CORNU 237 0 0 0 0 N 2 44.457118 66.029828 80.920426 0.000000 0.000000 7.625000 37.296190 64.526967 255.604686 35.984252 46.242259 29.672494
+ T4 236 44.457118 66.029828 80.920426 0 0.0 0.0 0.0 0.0 0 0 0 16.130208
+ T4 82 37.296190 64.526967 255.604686 9 0.000000 0.000000 16.167712 16.167712 1 1 0 16.130208
+ W3 0 0.000000 44.457118 66.029828 43.252477 65.837316 42.051722 65.619754 40.859878 65.359509
+ SUBSEGS
+ C 0 0.000000 -64.761316 54.517329 2.054675 347.825543 3.237773
+ SUBSEND
+ W3 0 0.000000 40.859878 65.359509 39.668033 65.099265 38.477815 64.830254 37.296190 64.526967
+ SUBSEGS
+ C 0 0.000000 -100.923475 62.033616 -33.317847 345.811623 2.077749
+ SUBSEND
+ END$SEGS
+CORNU 238 0 0 0 0 N 2 44.539492 65.514369 72.920426 0.000000 0.000000 7.625000 35.000097 58.807323 213.751216 0.000000 0.000000 7.625000
+ T4 236 44.539492 65.514369 72.920426 0 0.0 0.0 0.0 0.0 0 0 0 16.102972
+ T4 223 35.000097 58.807323 213.751216 0 0.0 0.0 0.0 0.0 0 0 0 16.102972
+ W3 0 0.000000 44.539492 65.514369 43.583506 65.220642 42.626462 64.926202 41.696493 64.558312
+ SUBSEGS
+ C 0 0.000000 -38.174677 55.276560 28.880759 339.161505 4.502984
+ SUBSEND
+ W3 0 0.000000 41.696493 64.558312 40.766524 64.190422 39.864168 63.745971 39.033017 63.189759
+ SUBSEGS
+ C 0 0.000000 -14.094839 46.769958 51.408238 326.707038 12.195716
+ SUBSEND
+ W3 0 0.000000 39.033017 63.189759 38.201866 62.633547 37.446905 61.965396 36.784384 61.216230
+ SUBSEGS
+ C 0 0.000000 -11.691546 45.557466 53.488016 311.376847 14.702213
+ SUBSEND
+ W3 0 0.000000 36.784384 61.216230 36.121863 60.467063 35.555736 59.638857 35.000097 58.807323
+ SUBSEGS
+ C 0 0.000000 -22.228505 53.713774 46.811293 302.661092 7.732815
+ SUBSEND
+ END$SEGS
+CORNU 239 0 0 0 0 N 2 32.764036 53.850851 11.251216 11.751969 44.290146 51.557911 32.171875 50.352431 188.612155 102.166631 133.186540 35.053477
+ T4 223 32.764036 53.850851 11.251216 9 0.000000 0.000000 16.179525 16.179525 1 1 0 16.179525
+ T4 1226 32.171875 50.352431 188.612155 0 0.0 0.0 0.0 0.0 0 0 0 16.179525
+ W3 0 0.000000 32.764036 53.850851 32.648651 53.270833 32.561856 52.685539 32.461181 52.102788
+ SUBSEGS
+ C 0 0.000000 -70.127403 101.705119 41.006409 279.104273 1.449524
+ SUBSEND
+ W3 0 0.000000 32.461181 52.102788 32.360506 51.520037 32.260432 50.937146 32.171875 50.352431
+ SUBSEGS
+ S 0 0.000000 32.461181 52.102788 32.171875 50.352431
+ SUBSEND
+ END$SEGS
+TURNOUT 240 0 0 0 0 N 2 25.847684 59.701967 0 154.724001 "Peco-80 Wye SL-1741/397"
+ T4 90 25.847684 59.701967 64.724001 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 241 21.437818 57.331059 240.724001 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 242 21.214935 57.803084 248.724001 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ D 0.000000 0.000000
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ C 0 0.000000 -26.154032 0.354335 26.154032 175.999924 4.000152
+ S 0 0.000000 2.178781 0.063715 5.000000 0.261000
+ C 0 0.000000 26.154032 0.354196 -26.154032 0.000076 4.000152
+ S 0 0.000000 2.178781 -0.063715 5.000000 -0.261000
+ END$SEGS
+CORNU 241 0 0 0 0 N 2 21.437818 57.331059 60.724001 0.000000 0.000000 7.625000 14.852851 51.987889 221.387424 0.000000 0.000000 7.625000
+ T4 240 21.437818 57.331059 60.724001 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 67 14.852851 51.987889 221.387424 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ W3 0 0.000000 21.437818 57.331059 20.196426 56.635106 18.966310 55.906816 17.862713 55.008217
+ SUBSEGS
+ C 0 0.000000 -30.330344 35.958922 30.702741 325.345608 6.049627
+ C 0 0.000000 -15.984479 27.939468 42.600050 320.919719 3.822510
+ SUBSEND
+ W3 0 0.000000 17.862713 55.008217 16.759117 54.109618 15.793774 53.055629 14.852851 51.987889
+ SUBSEGS
+ C 0 0.000000 -21.682306 31.753268 38.359646 311.701870 8.458566
+ S 0 0.000000 15.564901 52.783902 14.852851 51.987889
+ SUBSEND
+ END$SEGS
+CORNU 242 0 0 0 0 N 2 21.214935 57.803084 68.724001 0.000000 0.000000 7.625000 12.067419 52.272702 221.387692 0.000000 0.000000 7.625000
+ T4 240 21.214935 57.803084 68.724001 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ T4 92 12.067419 52.272702 221.387692 0 0.0 0.0 0.0 0.0 0 0 0 16.167712
+ W3 0 0.000000 21.214935 57.803084 19.530064 57.146993 17.809503 56.562148 16.211394 55.716398
+ SUBSEGS
+ S 0 0.000000 21.214935 57.803084 18.680629 56.830863
+ C 0 0.000000 -24.952354 27.695781 33.563998 332.596588 6.223685
+ SUBSEND
+ W3 0 0.000000 16.211394 55.716398 15.412339 55.293523 14.653291 54.792848 13.964537 54.207247
+ SUBSEGS
+ C 0 0.000000 -12.458837 21.993579 44.680595 319.875882 12.471925
+ SUBSEND
+ W3 0 0.000000 13.964537 54.207247 13.275783 53.621646 12.665134 52.950970 12.067419 52.272702
+ SUBSEGS
+ C 0 0.000000 -18.865819 26.451014 40.064863 310.322382 8.235954
+ SUBSEND
+ END$SEGS
+CORNU 243 0 0 0 0 N 2 184.781242 44.184510 19.156949 0.000000 0.000000 7.625000 183.432826 37.602960 181.338801 0.000000 -6.071259 63.197210
+ T4 248 184.781242 44.184510 19.156949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ T4 419 183.432826 37.602960 181.338801 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ W3 0 0.000000 184.781242 44.184510 184.411592 43.120446 184.034039 42.055861 183.785710 40.957132
+ SUBSEGS
+ C 0 0.000000 -41.892845 224.190456 29.974502 286.361101 3.466974
+ C 0 0.000000 -16.388216 199.766046 37.323612 282.809807 2.952056
+ SUBSEND
+ W3 0 0.000000 183.785710 40.957132 183.537381 39.858402 183.459145 38.729096 183.432826 37.602960
+ SUBSEGS
+ C 0 0.000000 -16.994804 200.427380 37.510656 270.311193 11.389307
+ SUBSEND
+ END$SEGS
+CORNU 244 1 0 0 0 N 2 3.505397 48.404593 7.432049 35.984252 39.187344 43.750020 3.441348 39.259211 177.003902 19.000000 22.415377 40.252302
+ E4 3.505397 48.404593 7.432049 0 0.0 0.0 0.0 0.0 0 0 0 2.148934
+ T4 1100 3.441348 39.259211 177.003902 10 0.000000 0.000000 0.0 0.0 1 2 0 2.148934
+ W3 0 0.000000 3.505397 48.404593 3.307994 46.891302 3.276064 45.361310 3.318493 43.835788
+ SUBSEGS
+ C 0 0.000000 -29.069273 32.366951 44.935679 267.831587 9.022004
+ SUBSEND
+ W3 0 0.000000 3.318493 43.835788 3.360922 42.310266 3.361581 40.783237 3.441348 39.259211
+ SUBSEGS
+ C 0 0.000000 -186.995741 190.294315 46.565077 267.760902 1.402810
+ SUBSEND
+ END$SEGS
+CORNU 245 0 0 0 0 N 2 12.090703 63.186799 42.831742 0.000000 0.000000 7.625000 5.071567 51.921906 197.247049 35.984252 39.437795 41.252849
+ T4 909 12.090703 63.186799 42.831742 9 0.000000 0.000000 16.579279 16.579279 1 1 0 16.402302
+ T4 226 5.071567 51.921906 197.247049 9 0.000000 0.000000 16.225325 16.225325 1 1 0 16.402302
+ W3 0 0.000000 12.090703 63.186799 10.570855 61.547335 9.067635 59.877381 7.853394 58.000309
+ SUBSEGS
+ C 0 0.000000 -66.483860 60.576513 17.698011 310.281432 2.891920
+ C 0 0.000000 -27.254580 30.647936 43.059728 303.242658 7.043410
+ SUBSEND
+ W3 0 0.000000 7.853394 58.000309 6.639153 56.123237 5.734397 54.056956 5.071567 51.921906
+ SUBSEGS
+ C 0 0.000000 -24.582491 28.607700 44.826182 286.777122 15.628868
+ SUBSEND
+ END$SEGS
+DRAW 246 9 0 0 0 213.731097 8.068777 0 179.955406
+ B3 16760832 0.055556 38.512618 -51.510834 0 42.748859 -57.781667 0 131584
+ END$SEGS
+TURNOUT 247 0 0 0 0 N 2 184.729315 62.227604 0 61.890949 "Peco-80 Curved Right SL-1734/386"
+ T4 569 184.729315 62.227604 331.890949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ T4 416 187.156133 56.566252 161.705949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ T4 46 186.655822 56.399884 171.523949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 2 5 6 7
+ C 0 0.000000 35.984252 0.000000 -35.984252 0.000000 0.318449
+ S 0 0.000000 0.199999 -0.000556 0.249998 -0.000732
+ C 0 0.000000 35.417758 0.050634 -35.417928 0.322516 9.248991
+ C 0 0.000000 35.984252 0.002864 -35.984333 9.496551 0.318449
+ C 0 0.000000 16.099920 0.301422 -16.100570 359.816995 10.181213
+ C 0 0.000000 19.147709 -0.432227 -19.064875 10.620177 8.562309
+ C 0 0.000000 17.992126 0.002783 -17.992594 18.996102 0.636898
+ END$SEGS
+TURNOUT 248 0 0 0 0 N 2 186.512257 50.263668 0 101.156949 "Peco-80 Large Right SL-1736/388"
+ T4 46 186.512257 50.263668 11.156949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ T4 249 185.293377 44.083505 191.156949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ T4 243 184.781242 44.184510 199.156949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 31.901195 0.354173 -31.901195 0.000076 8.000152
+ S 0 0.000000 4.794168 -0.310471 6.299213 -0.522000
+ END$SEGS
+CORNU 249 0 0 0 0 N 2 185.293377 44.083505 11.156949 0.000000 0.000000 7.625000 184.996110 37.725234 181.338804 0.000000 0.000000 7.625000
+ T4 248 185.293377 44.083505 11.156949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ T4 420 184.996110 37.725234 181.338804 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ W3 0 0.000000 185.293377 44.083505 185.190471 43.561733 185.094264 43.037991 185.039969 42.508946
+ SUBSEGS
+ C 0 0.000000 -17.259382 202.188587 40.556730 276.494651 5.296192
+ SUBSEND
+ W3 0 0.000000 185.039969 42.508946 184.985673 41.979902 184.970385 41.447469 184.974488 40.915661
+ SUBSEGS
+ C 0 0.000000 -14.509142 199.482227 41.117412 269.203270 6.300278
+ SUBSEND
+ W3 0 0.000000 184.974488 40.915661 184.982695 39.852046 185.020961 38.788590 184.996110 37.725234
+ SUBSEGS
+ C 0 0.000000 102.653781 82.346271 38.624845 88.721285 1.780836
+ SUBSEND
+ END$SEGS
+DRAW 250 5 0 0 0 27.216537 33.513459 0 8.587168
+ F4 16744703 0.000000 4 0
+ 146.916667 39.916667 0
+ 148.666667 39.916667 0
+ 148.666667 38.791667 0
+ 146.916667 38.791667 0
+ END$SEGS
+DRAW 251 5 0 0 0 26.994315 31.874570 0 8.587168
+ F4 16744703 0.000000 4 0
+ 146.916667 39.916667 0
+ 148.666667 39.916667 0
+ 148.666667 38.791667 0
+ 146.916667 38.791667 0
+ END$SEGS
+DRAW 252 5 0 0 0 26.772093 30.235681 0 8.587168
+ F4 16744703 0.000000 4 0
+ 146.916667 39.916667 0
+ 148.666667 39.916667 0
+ 148.666667 38.791667 0
+ 146.916667 38.791667 0
+ END$SEGS
+DRAW 253 5 0 0 0 26.466538 28.596792 0 8.587168
+ F4 16744703 0.000000 4 0
+ 146.916667 39.916667 0
+ 148.666667 39.916667 0
+ 148.666667 38.791667 0
+ 146.916667 38.791667 0
+ END$SEGS
+DRAW 254 5 0 0 0 26.160983 26.957903 0 8.587168
+ F4 16744703 0.000000 4 0
+ 146.916667 39.916667 0
+ 148.666667 39.916667 0
+ 148.666667 38.791667 0
+ 146.916667 38.791667 0
+ END$SEGS
+DRAW 255 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 14592682 0.000000 35 0
+ 179.156250 28.434028 0
+ 181.906250 28.184028 1
+ 187.750000 28.333333 1
+ 193.343750 29.246528 2
+ 194.156250 30.309028 0
+ 196.474499 33.522615 2
+ 195.468750 34.559028 2
+ 193.526786 33.101151 2
+ 191.464286 32.663651 0
+ 191.901786 31.226151 2
+ 189.776786 30.726151 2
+ 189.339286 31.476151 0
+ 188.901786 33.351151 0
+ 192.026786 34.038651 0
+ 191.214286 37.413651 0
+ 193.276786 38.038651 0
+ 191.901786 42.413651 0
+ 194.776786 43.351151 2
+ 200.974499 36.460115 0
+ 197.599499 33.460115 2
+ 194.656250 29.053819 2
+ 195.093750 26.496528 0
+ 195.656250 24.684028 2
+ 197.843750 24.934028 0
+ 198.843750 24.871528 2
+ 200.468750 18.684028 0
+ 200.833333 17.000000 2
+ 196.781250 16.059028 2
+ 196.343750 17.621528 0
+ 195.343750 22.434028 0
+ 193.656250 27.996528 2
+ 192.656250 27.934028 0
+ 188.031250 27.184028 1
+ 181.718750 26.934028 1
+ 179.156250 27.059028 0
+ END$SEGS
+STRUCTURE 256 7 0 0 0 N 2 125.587156 33.342784 0 170.565772 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+CORNU 257 0 0 0 0 N 0 213.062500 75.194444 0.720954 23.887555 189.176836 75.495014 210.562500 65.444444 211.164517 15.837645 197.010466 73.640381
+ T4 1293 213.062500 75.194444 0.720954 0 0.0 0.0 0.0 0.0 0 0 0 19.007902
+ T4 258 210.562500 65.444444 211.164517 0 0.0 0.0 0.0 0.0 0 0 0 19.007902
+ W3 0 0.000000 213.062500 75.194444 213.041140 73.497000 212.855457 71.798707 212.461498 70.147474
+ SUBSEGS
+ C 0 0.000000 23.005697 190.057509 75.374651 90.448810 12.684191
+ SUBSEND
+ W3 0 0.000000 212.461498 70.147474 212.067539 68.496242 211.440992 66.897036 210.562500 65.444444
+ SUBSEGS
+ C 0 0.000000 16.473035 196.419260 73.890132 103.132222 17.711470
+ SUBSEND
+ END$SEGS
+CORNU 258 0 0 0 0 N 0 210.562500 65.444444 31.164517 15.837645 197.010466 73.640381 201.843487 59.450923 261.039272 12.505465 199.895667 71.803762
+ T4 257 210.562500 65.444444 31.164517 0 0.0 0.0 0.0 0.0 0 0 0 19.231949
+ T4 504 201.843487 59.450923 261.039272 9 0.000000 0.000000 19.347954 19.347954 1 1 0 19.231949
+ W3 0 0.000000 210.562500 65.444444 210.090870 64.664601 209.549929 63.925638 208.934622 63.253338
+ SUBSEGS
+ C 0 0.000000 13.872692 198.666849 72.582026 120.964434 11.291984
+ SUBSEND
+ W3 0 0.000000 208.934622 63.253338 208.319315 62.581038 207.630308 61.975835 206.880985 61.457081
+ SUBSEGS
+ C 0 0.000000 12.213210 199.917377 71.490558 132.411581 12.826323
+ SUBSEND
+ W3 0 0.000000 206.880985 61.457081 205.382341 60.419573 203.643975 59.734827 201.843487 59.450923
+ SUBSEGS
+ C 0 0.000000 12.224532 199.951981 71.528232 145.471828 25.627017
+ SUBSEND
+ END$SEGS
+BZRLIN 259 3 128 0 0.208333 N 2 -96.187497 167.687502 -74.187497 167.687502 -74.812497 163.288196 -74.687497 146.187502 0 0.000000 0.000000
+ A3 0 0.208333 100.440800 -95.654382 67.248117 0 359.695886 4.130063
+ A3 0 0.208333 40.097933 -91.584345 127.453608 0 3.763497 6.926629
+ A3 0 0.208333 18.453950 -87.566635 148.721425 0 10.681245 10.307203
+ A3 0 0.208333 9.446473 -84.277924 157.107587 0 20.583520 21.110445
+ A3 0 0.208333 7.879550 -83.360890 158.391590 0 42.925120 25.059178
+ A3 0 0.208333 13.480104 -88.547863 156.279332 0 67.925461 12.328748
+ A3 0 0.208333 31.407241 -106.215431 153.239715 0 80.245022 7.149387
+ A3 0 0.208333 130.990432 -205.693238 148.659473 0 87.371140 2.674343
+ L3 0 0.208333 -74.702847 148.555489 0 -74.687497 146.187502 0
+ END$SEGS
+STRUCTURE 260 5 0 0 0 N 2 85.528266 43.574553 0 18.262358 "Mainline and siding garage (welding shop) N2006"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.555556 0
+ 2.880000 2.555556 0
+ 2.880000 0.555556 0
+ 0.000000 0.555556 0
+ Y4 16744703 0.055556 4 0
+ 1.562500 0.527778 0
+ 2.812500 0.527778 0
+ 2.812500 0.027778 0
+ 1.562500 0.027778 0
+ L3 12632256 0.055556 0.906250 2.534722 0 0.937500 0.565972 0
+ L3 12632256 0.055556 1.937500 2.503472 0 1.937500 0.565972 0
+ END$SEGS
+DRAW 261 5 0 0 0 86.397273 44.957598 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 " WELDING\n AND \nFABRICATION"
+ END$SEGS
+DRAW 262 11 5 0 0 0.000000 3.500000 0 0.000000
+ L3 1247497 0.055556 83.625000 13.000000 0 132.875000 13.000000 0
+ END$SEGS
+STRUCTURE 263 5 0 0 0 N 2 187.852341 45.986005 0 75.023233 "Gloor craft store and warehouse 2003"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.125000 0
+ 5.000000 2.125000 0
+ 5.000000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 264 5 0 0 0 189.503938 44.989233 0 77.761314
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "COMPANY STORE\n & SUPPLY"
+ END$SEGS
+STRAIGHT 265 0 0 0 0 N 2 0.000000 0.000000
+ T4 156 55.015625 71.147569 269.569211 0 0.0 0.0 0.0 0.0 0 0 0 15.894936
+ T4 155 60.810828 71.191142 89.569211 0 0.0 0.0 0.0 0.0 0 0 0 15.894936
+ END$SEGS
+CORNU 266 0 0 0 0 N 2 31.922321 68.144100 254.787050 0.000000 0.000000 6.000000 36.441300 69.223843 75.932085 0.000000 0.000000 6.000000
+ T4 267 31.922321 68.144100 254.787050 0 0.0 0.0 0.0 0.0 0 0 0 15.587552
+ T4 152 36.441300 69.223843 75.932085 0 0.0 0.0 0.0 0.0 0 0 0 15.587552
+ W3 0 0.000000 31.922321 68.144100 32.669638 68.347323 33.421916 68.531943 34.178346 68.698061
+ SUBSEGS
+ C 0 0.000000 47.087447 44.275553 22.705951 344.790653 2.826953
+ SUBSEND
+ W3 0 0.000000 34.178346 68.698061 34.934776 68.864178 35.690072 69.035595 36.441300 69.223843
+ SUBSEGS
+ C 0 0.000000 -79.143784 17.400320 146.042978 166.078801 1.681954
+ SUBSEND
+ END$SEGS
+TURNOUT 267 0 0 0 0 N 2 25.843850 66.491141 0 344.787050 "Peco-80 Large Left SL-1737/389"
+ T4 1310 25.843850 66.491141 254.787050 0 0.0 0.0 0.0 0.0 0 0 0 15.472979
+ T4 266 31.922321 68.144100 74.787050 0 0.0 0.0 0.0 0.0 0 0 0 15.472979
+ T4 1066 31.785344 68.647808 66.787050 0 0.0 0.0 0.0 0.0 0 0 0 15.472979
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+TURNOUT 268 0 0 0 0 N 2 92.450495 74.529800 0 190.334248 "Peco-80 Large Right SL-1736/388"
+ T4 1364 92.450495 74.529800 100.334248 0 0.0 0.0 0.0 0.0 0 0 0 16.469858
+ T4 272 86.253468 75.659817 280.334248 0 0.0 0.0 0.0 0.0 0 0 0 16.469858
+ T4 269 86.347109 76.173349 288.334248 0 0.0 0.0 0.0 0.0 0 0 0 16.469858
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 31.901195 0.354173 -31.901195 0.000076 8.000152
+ S 0 0.000000 4.794168 -0.310471 6.299213 -0.522000
+ END$SEGS
+CORNU 269 0 0 0 0 N 2 86.347109 76.173349 108.334248 0.000000 0.000000 6.000000 73.562500 79.899306 279.843613 31.393159 68.195540 48.968315
+ T4 268 86.347109 76.173349 108.334248 0 0.0 0.0 0.0 0.0 0 0 0 16.312481
+ T4 270 73.562500 79.899306 279.843613 0 0.0 0.0 0.0 0.0 0 0 0 16.312481
+ W3 0 0.000000 86.347109 76.173349 82.129742 77.570907 77.939991 79.139750 73.562500 79.899306
+ SUBSEGS
+ C 0 0.000000 -378.753333 -36.151159 -282.223444 17.860845 1.009332
+ C 0 0.000000 -50.959312 64.379072 29.774301 10.382050 7.486167
+ SUBSEND
+ END$SEGS
+CORNU 270 0 0 0 0 N 2 73.562500 79.899306 99.843613 31.393159 68.195540 48.968315 65.626717 79.593351 255.811507 0.000000 0.000000 2.500000
+ T4 269 73.562500 79.899306 99.843613 0 0.0 0.0 0.0 0.0 0 0 0 16.148057
+ T4 275 65.626717 79.593351 255.811507 0 0.0 0.0 0.0 0.0 0 0 0 16.148057
+ W3 0 0.000000 73.562500 79.899306 72.245786 80.127774 70.910303 80.278867 69.574563 80.237244
+ SUBSEGS
+ C 0 0.000000 -19.772286 69.907585 60.467762 359.034930 11.617480
+ SUBSEND
+ W3 0 0.000000 69.574563 80.237244 68.906694 80.216432 68.240560 80.146195 67.582261 80.031630
+ SUBSEGS
+ C 0 0.000000 -14.206637 70.033221 66.038012 350.065501 8.084397
+ SUBSEND
+ W3 0 0.000000 67.582261 80.031630 66.923961 79.917064 66.274527 79.757134 65.626717 79.593351
+ SUBSEGS
+ C 0 0.000000 -26.614243 72.420788 53.860910 345.209852 4.315399
+ SUBSEND
+ END$SEGS
+TURNOUT 271 0 0 0 0 N 2 84.448669 75.988919 0 190.334248 "Peco-80 Wye SL-1741/397"
+ T4 272 84.448669 75.988919 100.334248 0 0.0 0.0 0.0 0.0 0 0 0 16.365928
+ T4 273 79.482959 76.629105 276.334248 0 0.0 0.0 0.0 0.0 0 0 0 16.365928
+ T4 1422 79.576600 77.142637 284.334248 0 0.0 0.0 0.0 0.0 0 0 0 16.365928
+ D 0.000000 0.000000
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ C 0 0.000000 -26.154032 0.354335 26.154032 175.999924 4.000152
+ S 0 0.000000 2.178781 0.063715 5.000000 0.261000
+ C 0 0.000000 26.154032 0.354196 -26.154032 0.000076 4.000152
+ S 0 0.000000 2.178781 -0.063715 5.000000 -0.261000
+ END$SEGS
+STRAIGHT 272 0 0 0 0 N 2 0.000000 0.000000
+ T4 268 86.253468 75.659817 100.334248 0 0.0 0.0 0.0 0.0 0 0 0 16.413441
+ T4 271 84.448669 75.988919 280.334248 0 0.0 0.0 0.0 0.0 0 0 0 16.413441
+ END$SEGS
+CORNU 273 0 0 0 0 N 2 69.629410 75.991973 256.013864 0.000000 0.000000 2.500000 79.482959 76.629105 96.334248 0.000000 0.000000 6.000000
+ T4 328 69.629410 75.991973 256.013864 0 0.0 0.0 0.0 0.0 0 0 0 16.262275
+ T4 271 79.482959 76.629105 96.334248 0 0.0 0.0 0.0 0.0 0 0 0 16.262275
+ W3 0 0.000000 69.629410 75.991973 71.238577 76.392770 72.865274 76.755023 74.520349 76.858859
+ SUBSEGS
+ C 0 0.000000 33.570900 78.143026 43.518543 345.309293 6.368863
+ C 0 0.000000 17.707069 75.652939 59.188048 352.312268 4.020440
+ SUBSEND
+ W3 0 0.000000 74.520349 76.858859 76.175424 76.962695 77.834754 76.812066 79.482959 76.629105
+ SUBSEGS
+ C 0 0.000000 24.071801 75.725236 52.817231 357.130925 8.877536
+ S 0 0.000000 78.244959 76.756793 79.482959 76.629105
+ SUBSEND
+ END$SEGS
+DRAW 274 6 0 0 0 0.000000 6.000000 0 0.000000
+ F4 14592682 0.000000 12 0
+ 82.593750 58.600694 0
+ 82.078125 57.930556 0
+ 85.203125 56.430556 0
+ 85.578125 57.118056 0
+ 87.379464 56.156250 0
+ 85.316964 52.093750 0
+ 84.441964 52.843750 0
+ 83.691964 54.906250 2
+ 83.125000 55.194444 0
+ 82.328125 56.305556 0
+ 80.578125 58.055556 2
+ 81.343750 59.225694 0
+ END$SEGS
+STRAIGHT 275 0 0 0 0 N 2 0.000000 0.000000
+ T4 270 65.626717 79.593351 75.811507 0 0.0 0.0 0.0 0.0 0 0 0 15.939046
+ T4 1066 46.969790 74.876409 255.811507 0 0.0 0.0 0.0 0.0 0 0 0 15.939046
+ END$SEGS
+STRUCTURE 276 5 0 0 0 N 2 183.023120 49.449586 0 99.161005 "American Model Builders Railroad rooming house 613"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.250000 0
+ 6.250000 1.250000 0
+ 6.250000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 277 5 0 0 0 -7.604486 37.705153 0 12.314420
+ Z 0 184.368131 50.122040 87.731148 0 18.000000 "ROOMING HOUSE"
+ END$SEGS
+DRAW 278 5 0 0 0 77.468750 94.295139 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "ALBION"
+ END$SEGS
+DRAW 279 5 0 0 0 -1.056190 7.013070 0 0.000000
+ F4 13684944 0.083333 5 0
+ 65.056190 71.627555 0
+ 65.490467 69.739935 0
+ 71.379345 71.332991 0
+ 71.083269 72.485064 2
+ 69.735331 72.885423 2
+ END$SEGS
+CORNU 280 0 0 0 0 N 2 51.639490 71.511205 255.932085 0.000000 0.000000 6.000000 58.521539 73.287592 76.013864 0.000000 0.000000 2.500000
+ T4 154 51.639490 71.511205 255.932085 0 0.0 0.0 0.0 0.0 0 0 0 15.986063
+ T4 318 58.521539 73.287592 76.013864 0 0.0 0.0 0.0 0.0 0 0 0 15.986063
+ W3 0 0.000000 51.639490 71.511205 53.937668 72.087099 56.222542 72.714978 58.521539 73.287592
+ SUBSEGS
+ S 0 0.000000 51.639490 71.511205 58.521539 73.287592
+ SUBSEND
+ END$SEGS
+DRAW 281 5 0 0 0 82.451084 64.057865 0 25.121359
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "TEAM LOAD DOCK"
+ END$SEGS
+STRUCTURE 282 5 0 0 0 N 2 115.390251 61.717910 0 112.122826 "Blair line Shotgun house 079"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.038194 2.520833 0
+ 1.038194 2.520833 0
+ 1.038194 0.020833 0
+ 0.038194 0.020833 0
+ F4 16744703 0.000000 4 0
+ 0.197917 3.000000 0
+ 0.822917 3.000000 0
+ 0.822917 2.500000 0
+ 0.197917 2.500000 0
+ F4 8749701 0.000000 4 0
+ 0.222222 0.500000 0
+ 0.847222 0.500000 0
+ 0.847222 0.000000 0
+ 0.222222 0.000000 0
+ L3 263172 0.027778 0.038194 2.496528 0 1.038194 2.496528 0
+ L3 263172 0.027778 0.000000 0.524306 0 1.000000 0.524306 0
+ L3 263172 0.055556 0.538194 2.496528 0 0.569444 0.524306 0
+ END$SEGS
+DRAW 283 5 0 0 0 61.515625 69.690972 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "OFFICE"
+ END$SEGS
+STRUCTURE 284 5 0 0 0 N 2 122.945246 59.863463 0 309.750075 "AMB Dill's market 622"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.484375 0
+ 1.500000 2.484375 0
+ 1.500000 0.234375 0
+ 0.000000 0.234375 0
+ F4 12632256 0.000000 4 0
+ 0.218750 0.234375 0
+ 1.296875 0.234375 0
+ 1.296875 0.000000 0
+ 0.218750 0.000000 0
+ L3 0 0.055556 0.734375 2.484375 0 0.734375 0.234375 0
+ END$SEGS
+DRAW 285 5 0 0 0 121.375000 61.112847 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "PARK OFFICE"
+ END$SEGS
+STRUCTURE 286 5 0 0 0 N 2 188.150856 55.622638 0 75.259565 "Tichy wood water tower 2600"
+ D 0.000000 0.000000
+ G3 16744703 0.000000 0.750000 0.750000 0.750000 0
+ Y4 0 0.055556 4 0
+ 0.250000 1.235014 0
+ 1.250000 1.235014 0
+ 1.250000 0.235014 0
+ 0.250000 0.235014 0
+ END$SEGS
+STRUCTURE 287 7 0 0 0 N 2 23.421875 96.958333 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+DRAW 288 1 0 0 0 14.375000 -7.875000 0 0.000000
+ A3 9206651 0.083333 20.500000 7.984375 48.136245 0 0.000000 360.000000
+ END$SEGS
+DRAW 289 1 0 0 0 -0.250000 6.000000 0 0.000000
+ A3 10325646 0.055556 17.500000 22.484375 34.290483 0 0.000000 360.000000
+ END$SEGS
+DRAW 290 8 0 0 0 -0.250000 6.000000 0 0.000000
+ B3 16760832 0.055556 4.546875 52.798611 0 40.127049 52.531991 0 131584
+ END$SEGS
+DRAW 291 8 0 0 0 -0.250000 6.000000 0 0.000000
+ B3 16760832 0.055556 38.046875 51.923611 0 37.921875 12.298611 0 131584
+ END$SEGS
+DRAW 292 8 0 0 0 -0.250000 6.000000 0 0.000000
+ B3 16760832 0.055556 37.796875 16.923611 0 1.046875 16.923611 0 131584
+ END$SEGS
+DRAW 293 8 0 0 0 -0.250000 6.000000 0 0.000000
+ B3 16760832 0.055556 4.046875 17.048611 0 4.046875 59.548611 0 131584
+ END$SEGS
+DRAW 294 8 0 0 0 215.790177 4.978809 0 0.000000
+ B3 16760832 0.055556 -3.863046 52.853044 0 -40.118302 53.069802 0 131584
+ END$SEGS
+DRAW 295 8 0 0 0 215.790177 4.978809 0 180.741683
+ B3 16760832 0.055556 38.046875 -51.923611 0 37.921875 -12.298611 0 131584
+ END$SEGS
+DRAW 296 8 0 0 0 215.790177 4.978809 0 180.741683
+ B3 16760832 0.055556 37.796875 -16.923611 0 1.046875 -16.923611 0 131584
+ END$SEGS
+DRAW 297 8 0 0 0 215.790177 4.978809 0 0.000000
+ B3 16760832 0.055556 -3.825851 17.099567 0 -3.243302 60.194802 0 131584
+ END$SEGS
+DRAW 298 9 0 0 0 -0.222222 6.180556 0 0.000000
+ B3 16760832 0.055556 112.222222 49.819444 0 121.347222 29.819444 0 131584
+ END$SEGS
+DRAW 299 9 0 0 0 1.138888 6.972222 0 0.000000
+ B3 16760832 0.055556 111.861112 50.402778 0 121.361112 30.277778 0 131584
+ END$SEGS
+DRAW 300 9 0 0 0 -0.750000 5.750000 0 0.000000
+ L3 0 0.083333 115.187500 49.770833 0 113.812500 46.895833 0
+ END$SEGS
+DRAW 301 9 0 0 0 -0.500000 4.250000 0 0.000000
+ L3 0 0.083333 120.562500 33.270833 0 122.187500 35.645833 0
+ END$SEGS
+DRAW 302 8 0 0 0 0.027778 55.041666 0 0.000000
+ B3 16760832 0.055556 0.499544 10.209307 0 37.999646 10.282431 0 131584
+ END$SEGS
+DRAW 303 8 0 0 0 -0.180555 55.416667 0 0.000000
+ B3 16760832 0.055556 215.812500 9.718750 0 177.562500 9.843750 0 131584
+ END$SEGS
+DRAW 304 2 0 0 0 1.631944 19.937500 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 1 90.000000 "HELIX BASE UP 1.5"""
+ END$SEGS
+DRAW 305 2 0 0 0 201.875000 18.562500 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 1 100.000000 "HELIX BASE UP 1.5"""
+ END$SEGS
+DRAW 306 8 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.055556 181.848743 64.849483 0 181.995954 58.010801 0 131584
+ END$SEGS
+STRUCTURE 307 5 0 0 0 N 2 193.137571 45.739129 0 252.343489 "model tech studios small town station & shed JN 1027"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.500000 0
+ 1.250000 1.500000 0
+ 1.250000 0.000000 0
+ 0.000000 0.000000 0
+ F4 16744703 0.000000 4 0
+ 1.937500 1.250000 0
+ 3.937500 1.250000 0
+ 3.937500 0.000000 0
+ 1.937500 0.000000 0
+ F4 12632256 0.055556 10 0
+ 0.031250 1.479167 0
+ 0.000000 1.947917 0
+ 4.375000 1.916667 0
+ 4.375000 0.010417 0
+ 3.906250 0.041667 0
+ 3.906250 1.291667 0
+ 1.968750 1.291667 0
+ 1.906250 0.072917 0
+ 1.187500 0.041667 0
+ 1.187500 1.479167 0
+ END$SEGS
+DRAW 308 5 0 0 0 192.037680 47.954848 0 73.601065
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "LOBOLLY PINES\nSTATION & FREIGHT"
+ END$SEGS
+STRUCTURE 309 5 0 0 0 N 2 190.823080 52.167769 0 332.550473 "GC laser west end shack 0901"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.313000 0
+ 1.188000 1.313000 0
+ 1.188000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 310 5 3 0 0 82.559146 168.578286 0 0.000000
+ F4 16744703 0.083333 4 0
+ 107.217167 -115.200371 0
+ 108.214383 -117.492872 0
+ 107.526632 -117.792037 0
+ 106.529417 -115.499536 0
+ END$SEGS
+STRUCTURE 311 5 0 0 0 N 2 72.344991 72.214697 0 0.269534 "Blair scale Boston depot 093"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.430000 0
+ 3.000000 1.430000 0
+ 3.000000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE 312 5 0 0 0 N 2 181.091291 37.021703 0 359.844793 "Gloor craft coal loading tower 214"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 12 0
+ 3.312500 2.523438 0
+ 0.000000 2.507812 0
+ 0.000000 0.039062 0
+ 3.293403 0.000000 0
+ 3.293403 0.617188 0
+ 4.301215 0.617188 0
+ 4.293403 0.875000 0
+ 3.285590 0.890625 0
+ 3.293403 1.625000 0
+ 4.296875 1.648438 0
+ 4.293403 1.875000 0
+ 3.309028 1.867188 0
+ END$SEGS
+DRAW 313 5 0 0 0 72.397240 73.248153 0 0.543072
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "RETAIL AND WHOLESALE\n FURNITURE\n SHOWROOM"
+ END$SEGS
+CORNU 314 10 0 0 0 N 2 38.500498 81.509478 90.045947 0.000000 0.000000 0.000000 3.753375 43.388467 182.036780 0.000000 3.753375 43.388467
+ T4 404 38.500498 81.509478 90.045947 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 3.753375 43.388467 182.036780 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ W3 0 0.000000 38.500498 81.509478 36.005010 81.511479 33.505970 81.505643 31.019857 81.289521
+ SUBSEGS
+ C 0 0.000000 -111.497396 37.562228 -29.983970 357.596609 2.885551
+ C 0 0.000000 -50.384005 35.341028 31.091161 355.079999 2.127774
+ SUBSEND
+ W3 0 0.000000 31.019857 81.289521 28.533745 81.073400 26.060079 80.646325 23.677845 79.903070
+ SUBSEGS
+ C 0 0.000000 -34.738191 33.757433 46.659367 343.132543 12.347523
+ SUBSEND
+ W3 0 0.000000 23.677845 79.903070 21.295611 79.159815 19.008978 78.100526 16.927080 76.724601
+ SUBSEGS
+ C 0 0.000000 -26.630797 31.534694 54.457653 326.734232 16.106509
+ SUBSEND
+ W3 0 0.000000 16.927080 76.724601 14.845183 75.348676 12.972032 73.659121 11.381296 71.736356
+ SUBSEGS
+ C 0 0.000000 -25.369516 30.935602 55.573391 309.576048 16.907300
+ SUBSEND
+ W3 0 0.000000 11.381296 71.736356 9.790559 69.813592 8.483143 67.661715 7.459253 65.385948
+ SUBSEGS
+ C 0 0.000000 -27.934119 32.973960 54.014284 294.022083 15.355186
+ SUBSEND
+ W3 0 0.000000 7.459253 65.385948 6.435364 63.110181 5.693342 60.712926 5.167439 58.273481
+ SUBSEGS
+ C 0 0.000000 -35.607045 40.017302 50.969459 281.837025 12.046422
+ SUBSEND
+ W3 0 0.000000 5.167439 58.273481 4.115632 53.394591 3.930759 48.376292 3.753375 43.388467
+ SUBSEGS
+ C 0 0.000000 -56.548862 60.531597 46.758976 274.170855 7.577898
+ C 0 0.000000 -168.113966 171.799874 38.626140 271.623290 2.553924
+ SUBSEND
+ END$SEGS
+CORNU 315 10 0 0 0 N 2 177.999955 81.397610 270.045947 0.000000 0.000000 0.000000 212.911637 36.882292 180.262610 0.000000 212.911637 36.882292
+ T4 404 177.999955 81.397610 270.045947 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 212.911637 36.882292 180.262610 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ W3 0 0.000000 177.999955 81.397610 180.763303 81.395394 183.532402 81.380679 186.279778 81.083994
+ SUBSEGS
+ C 0 0.000000 100.821014 178.842432 -19.419884 359.521221 3.533756
+ C 0 0.000000 45.971042 181.390431 35.373700 3.523358 2.582003
+ SUBSEND
+ W3 0 0.000000 186.279778 81.083994 189.027154 80.787310 191.752122 80.207825 194.336604 79.229790
+ SUBSEGS
+ C 0 0.000000 34.387088 182.744110 46.879157 5.901560 10.360816
+ C 0 0.000000 28.312529 184.330278 52.744459 16.504803 4.192080
+ SUBSEND
+ W3 0 0.000000 194.336604 79.229790 196.921085 78.251755 199.357695 76.876926 201.508823 75.142353
+ SUBSEGS
+ C 0 0.000000 26.218056 185.103081 54.691482 20.620822 18.115855
+ SUBSEND
+ W3 0 0.000000 201.508823 75.142353 203.659952 73.407780 205.521002 71.319593 207.031603 69.005683
+ SUBSEGS
+ C 0 0.000000 26.468628 184.836616 54.584488 39.041680 17.944520
+ SUBSEND
+ W3 0 0.000000 207.031603 69.005683 208.542205 66.691772 209.703514 64.157615 210.557089 61.529401
+ SUBSEGS
+ C 0 0.000000 31.406492 180.634798 51.988738 57.191773 15.123447
+ SUBSEND
+ W3 0 0.000000 210.557089 61.529401 211.410663 58.901187 211.960162 56.180289 212.308803 53.439021
+ SUBSEGS
+ C 0 0.000000 44.240651 168.383845 48.163298 72.414860 10.736286
+ SUBSEND
+ W3 0 0.000000 212.308803 53.439021 213.006085 47.956487 212.936968 42.408932 212.911637 36.882292
+ SUBSEGS
+ C 0 0.000000 80.906338 131.987923 43.723481 83.103061 5.867400
+ C 0 0.000000 288.944796 -76.016665 39.969610 88.967315 1.644890
+ SUBSEND
+ END$SEGS
+STRAIGHT 316 0 0 0 0 N 2 0.000000 0.000000
+ T4 231 55.107246 68.160552 89.533806 0 0.0 0.0 0.0 0.0 0 0 0 15.949002
+ T4 232 52.405123 68.138565 269.533806 0 0.0 0.0 0.0 0.0 0 0 0 15.949002
+ END$SEGS
+CORNU 317 0 0 0 0 N 2 46.073679 68.071283 89.533806 0.000000 0.000000 2.500000 35.575032 66.776419 257.071923 0.000000 0.000000 0.000000
+ T4 232 46.073679 68.071283 89.533806 0 0.0 0.0 0.0 0.0 0 0 0 15.852589
+ T4 162 35.575032 66.776419 257.071923 2 0.000000 0.000000 0.0 0.0 0 2 0 15.852589
+ W3 0 0.000000 46.073679 68.071283 44.305617 68.056897 42.534633 68.006644 40.780933 67.781288
+ SUBSEGS
+ C 0 0.000000 -53.167753 46.111937 14.903544 355.671520 4.287252
+ C 0 0.000000 -29.583711 44.527448 38.435768 352.724461 2.567243
+ SUBSEND
+ W3 0 0.000000 40.780933 67.781288 39.027232 67.555933 37.298333 67.171997 35.575032 66.776419
+ SUBSEGS
+ C 0 0.000000 -44.660309 46.821022 23.531310 347.124025 5.103180
+ S 0 0.000000 36.868858 67.068623 35.575032 66.776419
+ SUBSEND
+ END$SEGS
+TURNOUT 318 0 0 0 0 N 2 58.521539 73.287592 0 346.013864 "Peco-80 Large Right SL-1736/388"
+ T4 280 58.521539 73.287592 256.013864 0 0.0 0.0 0.0 0.0 0 0 0 16.078824
+ T4 328 64.634007 74.810031 76.013864 0 0.0 0.0 0.0 0.0 0 0 0 16.078824
+ T4 327 64.760168 74.303506 84.013864 0 0.0 0.0 0.0 0.0 0 0 0 16.078824
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 31.901195 0.354173 -31.901195 0.000076 8.000152
+ S 0 0.000000 4.794168 -0.310471 6.299213 -0.522000
+ END$SEGS
+DRAW 319 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16744703 0.000000 4 0
+ 64.406288 78.131708 0
+ 68.632939 79.261331 0
+ 68.923414 78.174478 0
+ 64.696763 77.044855 0
+ END$SEGS
+DRAW 320 5 0 0 0 0.000000 0.000000 0 0.000000
+ L3 0 0.041667 64.531166 77.643360 0 68.760501 78.762890 0
+ END$SEGS
+STRUCTURE 321 5 0 0 0 N 2 57.895833 75.067493 0 0.000000 "Quality craft Haydenton covered Depot M FRANKLINTON DEPOT 204"
+ D 0.000000 0.000000
+ F4 16744703 0.052083 4 0
+ 5.814938 4.504998 0
+ 0.586737 3.236020 0
+ 1.117442 1.049504 0
+ 6.345644 2.318483 0
+ Y4 16744703 0.083333 4 0
+ 0.524044 0.041667 0
+ 6.545988 1.670739 0
+ 6.104167 3.541882 0
+ 0.041667 1.979382 0
+ END$SEGS
+DRAW 322 5 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 60.125000 77.869792 0.000000 0 18.000000 " FRANKLIN\nPASSENGER DEPOT"
+ END$SEGS
+STRUCTURE 323 5 0 0 0 N 2 32.020073 66.754293 0 0.000000 "Walthers Shady Jct Xing Shanty 933-3205c"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.014203 0.730531 0
+ 0.971083 1.021012 0
+ 1.174420 0.351196 0
+ 0.217540 0.060714 0
+ L3 0 0.000000 0.212681 0.024488 0 1.171631 0.308062 0
+ L3 0 0.000000 1.171631 0.308062 0 0.958950 1.027275 0
+ L3 0 0.000000 0.958950 1.027275 0 0.000000 0.743700 0
+ L3 0 0.000000 0.000000 0.743700 0 0.212681 0.024488 0
+ L3 0 0.000000 0.719213 0.956381 0 0.666042 1.136184 0
+ L3 0 0.000000 0.666042 1.136184 0 0.186567 0.994397 0
+ L3 0 0.000000 0.186567 0.994397 0 0.239738 0.814594 0
+ L3 0 0.000000 0.332550 0.059934 0 0.350273 0.000000 0
+ L3 0 0.000000 0.350273 0.000000 0 0.590011 0.070894 0
+ L3 0 0.000000 0.590011 0.070894 0 0.572287 0.130828 0
+ L3 16744703 0.000000 0.106340 0.384094 0 1.065291 0.667668 0
+ L3 7959154 0.041667 0.073677 0.386332 0 1.042427 0.636332 0
+ END$SEGS
+CORNU 324 0 0 0 0 N 2 76.036524 67.527356 285.735504 0.000000 0.000000 2.500000 81.140625 65.710069 116.460306 0.000000 0.000000 2.500000
+ T4 159 76.036524 67.527356 285.735504 0 0.0 0.0 0.0 0.0 0 0 0 15.982078
+ T4 153 81.140625 65.710069 116.460306 0 0.0 0.0 0.0 0.0 0 0 0 15.982078
+ W3 0 0.000000 76.036524 67.527356 76.907657 67.281909 77.783676 67.051739 78.643012 66.767733
+ SUBSEGS
+ C 0 0.000000 60.944655 60.291973 8.651554 14.971692 2.552586
+ SUBSEND
+ W3 0 0.000000 78.643012 66.767733 79.502348 66.483728 80.330384 66.113340 81.140625 65.710069
+ SUBSEGS
+ C 0 0.000000 19.038482 72.486677 48.752092 18.866409 8.169594
+ SUBSEND
+ END$SEGS
+STRUCTURE 325 5 0 0 0 N 2 85.406916 74.810424 0 185.928158 "Laser art meat packing plant 882"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 6 0
+ 1.531250 4.036042 0
+ 1.593750 1.848542 0
+ 0.093750 1.973542 0
+ 0.031250 0.411042 0
+ 6.093750 0.473542 0
+ 6.093750 4.036042 0
+ Y4 0 0.052083 4 0
+ 0.531059 0.411042 0
+ 6.031059 0.411042 0
+ 6.031059 0.026042 0
+ 0.531059 0.026042 0
+ Y4 0 0.041667 4 0
+ 0.031250 0.411042 0
+ 6.031250 0.411042 0
+ 6.031250 1.911042 0
+ 0.031250 1.911042 0
+ Y4 0 0.052083 4 0
+ 1.531250 4.036042 0
+ 6.031250 4.036042 0
+ 6.031250 1.911042 0
+ 1.531250 1.911042 0
+ Y4 0 0.041667 4 0
+ 1.750000 4.067292 0
+ 6.000000 4.067292 0
+ 6.000000 4.452292 0
+ 1.750000 4.452292 0
+ Y4 0 0.041667 4 0
+ 4.500000 4.036042 0
+ 6.000000 4.036042 0
+ 6.000000 2.651042 0
+ 4.500000 2.651042 0
+ L3 0 0.041667 1.468750 3.286042 0 4.531250 3.286042 0
+ L3 0 0.041667 0.000000 1.192292 0 6.000000 1.192292 0
+ END$SEGS
+STRAIGHT 326 0 0 0 0 N 2 0.000000 0.000000
+ T4 327 78.812500 74.312500 276.033253 0 0.0 0.0 0.0 0.0 0 0 0 16.078824
+ E4 94.061607 72.700806 96.033253 0 0.0 0.0 0.0 0.0 0 0 0 16.078824
+ END$SEGS
+CORNU 327 0 0 0 0 N 2 78.812500 74.312500 96.033253 0.000000 0.000000 2.500000 64.760168 74.303506 264.013864 0.000000 0.000000 2.500000
+ T4 326 78.812500 74.312500 96.033253 0 0.0 0.0 0.0 0.0 0 0 0 16.078824
+ T4 318 64.760168 74.303506 264.013864 0 0.0 0.0 0.0 0.0 0 0 0 16.078824
+ W3 0 0.000000 78.812500 74.312500 76.477181 74.559322 74.134514 74.772943 71.786191 74.769286
+ SUBSEGS
+ C 0 0.000000 -80.748830 69.737868 -5.924802 2.703329 3.749257
+ C 0 0.000000 -42.531660 71.817980 32.237639 359.957176 2.371804
+ SUBSEND
+ W3 0 0.000000 71.786191 74.769286 69.437867 74.765629 67.095689 74.548408 64.760168 74.303506
+ SUBSEGS
+ C 0 0.000000 -57.422203 72.301641 17.349397 354.214325 5.271352
+ S 0 0.000000 66.513049 74.479088 64.760168 74.303506
+ SUBSEND
+ END$SEGS
+CORNU 328 0 0 0 0 N 2 69.629410 75.991973 76.013864 0.000000 0.000000 2.500000 64.634007 74.810031 256.013864 0.000000 0.000000 2.500000
+ T4 273 69.629410 75.991973 76.013864 0 0.0 0.0 0.0 0.0 0 0 0 16.157925
+ T4 318 64.634007 74.810031 256.013864 0 0.0 0.0 0.0 0.0 0 0 0 16.157925
+ W3 0 0.000000 69.629410 75.991973 67.968979 75.578408 66.294438 75.223596 64.634007 74.810031
+ SUBSEGS
+ S 0 0.000000 69.629410 75.991973 64.634007 74.810031
+ SUBSEND
+ END$SEGS
+DRAW 329 11 5 0 0 0.000000 0.000000 0 0.000000
+ L3 920074 0.013333 71.952017 86.035790 0 29.886550 75.890730 0
+ END$SEGS
+DRAW 330 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 7959154 0.160000 104.625000 81.953125 0 104.724432 83.890625 0
+ END$SEGS
+CORNU 331 0 0 0 0 N 2 142.020316 85.397514 74.173410 0.000000 -4.031250 2.218750 138.420063 84.662359 259.244904 0.000000 -4.031250 2.218750
+ T4 1552 142.020316 85.397514 74.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.286702
+ T4 104 138.420063 84.662359 259.244904 0 0.0 0.0 0.0 0.0 0 0 0 15.286702
+ W3 0 0.000000 142.020316 85.397514 141.430710 85.230377 140.834343 85.086756 140.230835 84.980228
+ SUBSEGS
+ C 0 0.000000 18.110787 137.017986 102.803758 163.966032 5.815629
+ SUBSEND
+ W3 0 0.000000 140.230835 84.980228 139.627327 84.873700 139.022136 84.776722 138.420063 84.662359
+ SUBSEGS
+ S 0 0.000000 140.230835 84.980228 138.420063 84.662359
+ SUBSEND
+ END$SEGS
+CORNU 332 0 0 0 0 N 2 177.809498 88.553887 81.656234 0.000000 0.000000 2.500000 165.767506 86.919767 264.173410 0.000000 0.000000 2.500000
+ T4 216 177.809498 88.553887 81.656234 0 0.0 0.0 0.0 0.0 0 0 0 15.387213
+ T4 106 165.767506 86.919767 264.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.387213
+ W3 0 0.000000 177.809498 88.553887 173.801009 87.965984 169.797947 87.331054 165.767506 86.919767
+ SUBSEGS
+ C 0 0.000000 448.444782 109.937183 531.832661 171.294805 1.164632
+ C 0 0.000000 128.710130 152.611559 214.955773 172.780930 1.352407
+ SUBSEND
+ END$SEGS
+CORNU 333 0 0 0 0 N 2 178.444315 86.168626 87.169851 0.000000 0.000000 2.500000 165.784145 86.398033 272.173410 0.000000 0.000000 2.500000
+ T4 217 178.444315 86.168626 87.169851 0 0.0 0.0 0.0 0.0 0 0 0 15.387213
+ T4 106 165.784145 86.398033 272.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.387213
+ W3 0 0.000000 178.444315 86.168626 176.335281 86.064365 174.222393 86.028230 172.112387 86.110513
+ SUBSEGS
+ C 0 0.000000 71.682788 174.621128 157.749387 176.942691 5.062946
+ SUBSEND
+ W3 0 0.000000 172.112387 86.110513 170.002382 86.192795 167.894235 86.317952 165.784145 86.398033
+ SUBSEGS
+ S 0 0.000000 172.112387 86.110513 165.784145 86.398033
+ SUBSEND
+ END$SEGS
+STRUCTURE 334 7 0 0 0 N 2 124.338542 92.343750 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+DRAW 335 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 10187826 0.000000 48 0
+ 146.656250 92.625000 2
+ 146.093750 91.093750 2
+ 145.656250 90.593750 0
+ 145.656250 89.468750 0
+ 145.781250 88.312500 0
+ 145.468750 87.218750 0
+ 144.750000 85.812500 0
+ 143.812500 85.125000 0
+ 143.406250 83.843750 0
+ 143.906250 83.218750 0
+ 145.406250 82.218750 0
+ 148.000000 81.968750 0
+ 149.062500 81.718750 0
+ 150.062500 81.343750 2
+ 150.734375 81.171875 0
+ 150.765625 80.796875 2
+ 150.587054 80.680099 0
+ 150.587054 80.680099 0
+ 150.587054 80.680099 0
+ 150.234375 80.427083 0
+ 150.156250 80.203125 0
+ 149.843750 80.015625 0
+ 149.437500 80.036458 0
+ 148.359375 80.140625 0
+ 147.640625 80.343750 0
+ 148.625000 79.848958 0
+ 150.062500 79.848958 2
+ 150.375000 80.348958 0
+ 151.125000 80.630208 0
+ 151.125000 80.630208 0
+ 151.484375 81.046875 2
+ 150.218750 81.640625 0
+ 147.828125 82.203125 0
+ 144.921875 82.703125 0
+ 144.062500 83.484375 0
+ 144.062500 83.484375 0
+ 144.062500 83.484375 0
+ 144.156250 83.875000 0
+ 144.718750 84.843750 2
+ 145.906250 85.781250 0
+ 146.343750 86.968750 2
+ 148.750000 89.460526 0
+ 149.312500 90.648026 2
+ 150.312500 91.710526 2
+ 151.598684 92.812500 2
+ 154.786184 93.812500 0
+ 154.786184 93.812500 2
+ 150.848684 93.687500 0
+ END$SEGS
+DRAW 336 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 7 0
+ 142.776042 92.656250 2
+ 144.338542 92.031250 0
+ 146.156250 91.250000 0
+ 146.250000 91.875000 0
+ 146.718750 92.437500 0
+ 148.218750 93.000000 2
+ 146.651042 93.031250 0
+ END$SEGS
+STRUCTURE 337 7 0 0 0 N 2 143.151042 91.656250 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 338 7 0 0 0 N 2 144.151042 91.656250 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 339 7 0 0 0 N 2 144.651042 90.593750 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 340 7 0 0 0 N 2 145.463542 90.593750 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 341 7 0 0 0 N 2 147.963542 90.843750 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 342 7 0 0 0 N 2 144.776042 91.531250 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 343 7 0 0 0 N 2 148.713542 92.281250 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 344 5 0 0 0 N 2 64.229167 71.651042 0 0.000000 "quality craft Con-cor grain elevator with silos (FINE FURNITURE FACTORY) CC-01"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.020833 0
+ 8.000000 2.020833 0
+ 8.000000 0.020833 0
+ 0.000000 0.020833 0
+ Y4 0 0.041667 4 0
+ 0.062500 0.020833 0
+ 3.562500 0.020833 0
+ 3.562500 2.020833 0
+ 0.062500 2.020833 0
+ L3 0 0.041667 0.015625 1.067708 0 3.515625 1.067708 0
+ END$SEGS
+DRAW 345 5 0 0 0 68.872072 73.061885 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "FURNITURE\nMAUFACTURING\n AND\nSALES"
+ END$SEGS
+STRUCTURE 346 7 0 0 0 N 2 5.182186 46.607869 0 234.201837 "custom TUNNEL PORTAL CF003"
+ D 0.000000 0.000000
+ Y4 0 0.187500 4 2
+ 1.687500 1.406250 0
+ 0.750000 1.718750 0
+ 0.093750 1.031250 0
+ 0.562500 0.093750 0
+ END$SEGS
+STRUCTURE 347 7 0 0 0 N 2 13.761364 27.239583 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 348 7 0 0 0 N 2 12.886364 25.177083 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 349 7 0 0 0 N 2 11.823864 23.614583 0 0.000000 " 5"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.500000 2.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.514880 3.048215 4.433333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.433562 3.913385 4.058010 0 298.767649 215.737855
+ A3 2263842 0.000000 0.428345 4.384758 3.319875 0 324.057888 227.354676
+ A3 2263842 0.000000 0.616908 4.287665 2.283218 0 1.145763 180.804790
+ A3 2263842 0.000000 0.578692 3.959532 1.258235 0 40.236358 182.520220
+ A3 2263842 0.000000 0.583217 2.981513 0.611220 0 71.113913 194.504907
+ A3 2263842 0.000000 0.705998 1.776358 0.897580 0 117.950969 168.710472
+ A3 2263842 0.000000 0.538760 0.801150 1.548275 0 146.309932 187.890372
+ A3 2263842 0.000000 0.527253 0.524620 2.558908 0 175.426079 200.202923
+ A3 2263842 0.000000 0.637937 1.020533 3.597465 0 213.690068 179.169641
+ A3 2263842 0.000000 0.334523 1.585317 4.386507 0 220.815084 209.352786
+ A3 2263842 0.000000 0.372677 2.233332 4.666667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.149070 2.500000 2.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 350 7 0 0 0 N 2 17.386364 28.677083 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 351 7 0 0 0 N 2 4.875000 56.927083 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 352 7 0 0 0 N 2 4.812500 59.802083 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 353 7 0 0 0 N 2 5.937500 83.322917 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 354 7 0 0 0 N 2 8.062500 87.760417 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 355 7 0 0 0 N 2 13.562500 70.822917 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 356 7 0 0 0 N 2 13.062500 70.197917 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 357 7 0 0 0 N 2 14.312500 70.072917 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+DRAW 358 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 20 0
+ 29.625000 16.625000 0
+ 33.167411 17.802083 2
+ 34.625000 19.500000 0
+ 35.167411 24.177083 0
+ 40.500000 29.625000 2
+ 41.350000 35.243750 0
+ 42.100000 38.243750 0
+ 42.475000 43.993750 2
+ 41.600000 49.118750 0
+ 41.030682 53.704167 0
+ 40.968182 57.516667 0
+ 40.905682 59.391667 0
+ 41.280682 60.641667 0
+ 43.530682 61.641667 0
+ 42.375000 60.250000 0
+ 41.655682 57.016667 0
+ 43.375000 52.625000 0
+ 47.500000 44.125000 2
+ 45.750000 30.625000 2
+ 37.375000 19.000000 2
+ END$SEGS
+DRAW 359 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 4105019 0.000000 12 0
+ 32.167411 17.177083 0
+ 35.167411 18.552083 2
+ 37.350000 23.618750 0
+ 39.225000 25.118750 2
+ 39.225000 25.118750 2
+ 41.475000 29.493750 0
+ 42.850000 35.118750 2
+ 43.850000 43.118750 0
+ 46.250000 41.125000 2
+ 45.250000 33.875000 2
+ 40.125000 23.000000 2
+ 37.875000 20.500000 2
+ END$SEGS
+DRAW 360 11 5 0 0 0.000000 0.000000 0 0.000000
+ Y4 0 0.013333 6 2
+ 0.000000 63.000000 0
+ 35.000000 63.000000 0
+ 34.750000 81.000000 0
+ 182.250000 80.750000 0
+ 182.750000 63.000000 0
+ 215.750000 63.250000 0
+ END$SEGS
+STRUCTURE 361 7 0 0 0 N 2 83.781250 18.187500 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 362 7 0 0 0 N 2 85.781250 13.000000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 363 7 0 0 0 N 2 82.906250 23.625000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 364 7 0 0 0 N 2 88.093750 7.625000 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 365 7 0 0 0 N 2 93.718750 3.125000 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 366 7 0 0 0 N 2 106.531250 5.500000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 367 7 0 0 0 N 2 109.468750 5.562500 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 368 7 0 0 0 N 2 128.531250 14.250000 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 369 7 0 0 0 N 2 116.281250 7.875000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 370 7 0 0 0 N 2 83.343750 15.437500 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 371 7 0 0 0 N 2 112.968750 6.500000 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+DRAW 372 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 12 0
+ 171.750000 49.875000 0
+ 177.589286 50.979167 2
+ 176.714286 47.229167 2
+ 176.474432 43.020833 2
+ 178.099432 41.520833 2
+ 177.474432 39.020833 0
+ 177.474432 39.020833 0
+ 177.224432 35.020833 2
+ 177.224432 27.895833 2
+ 174.500000 24.375000 0
+ 171.875000 29.000000 0
+ 168.500000 38.750000 2
+ END$SEGS
+DRAW 373 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 4105019 0.000000 12 0
+ 176.370536 48.770833 2
+ 175.745536 44.395833 0
+ 175.995536 41.770833 0
+ 177.120536 41.520833 2
+ 176.370536 37.895833 2
+ 176.995536 35.270833 2
+ 176.745536 31.270833 0
+ 176.495536 26.770833 2
+ 173.375000 26.250000 0
+ 168.500000 37.125000 2
+ 170.750000 47.375000 0
+ 173.589286 47.291667 2
+ END$SEGS
+DRAW 374 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 4216377 0.000000 17 0
+ 172.214286 44.479167 0
+ 175.464286 46.041667 2
+ 173.995536 42.520833 2
+ 175.245536 41.520833 2
+ 174.245536 37.645833 0
+ 174.620536 33.270833 0
+ 174.995536 29.770833 0
+ 173.000000 27.125000 0
+ 170.125000 33.250000 2
+ 169.250000 40.125000 0
+ 169.250000 40.125000 0
+ 169.250000 40.125000 0
+ 169.250000 40.125000 0
+ 169.250000 40.125000 0
+ 169.250000 40.125000 0
+ 169.250000 40.125000 0
+ 169.250000 40.125000 0
+ END$SEGS
+STRUCTURE 375 7 0 0 0 N 2 174.245536 33.020833 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 376 7 0 0 0 N 2 176.870536 40.520833 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 377 7 0 0 0 N 2 174.495536 37.770833 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 378 7 0 0 0 N 2 174.245536 27.145833 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 379 7 0 0 0 N 2 171.245536 34.520833 0 0.000000 " 5"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.500000 2.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.514880 3.048215 4.433333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.433562 3.913385 4.058010 0 298.767649 215.737855
+ A3 2263842 0.000000 0.428345 4.384758 3.319875 0 324.057888 227.354676
+ A3 2263842 0.000000 0.616908 4.287665 2.283218 0 1.145763 180.804790
+ A3 2263842 0.000000 0.578692 3.959532 1.258235 0 40.236358 182.520220
+ A3 2263842 0.000000 0.583217 2.981513 0.611220 0 71.113913 194.504907
+ A3 2263842 0.000000 0.705998 1.776358 0.897580 0 117.950969 168.710472
+ A3 2263842 0.000000 0.538760 0.801150 1.548275 0 146.309932 187.890372
+ A3 2263842 0.000000 0.527253 0.524620 2.558908 0 175.426079 200.202923
+ A3 2263842 0.000000 0.637937 1.020533 3.597465 0 213.690068 179.169641
+ A3 2263842 0.000000 0.334523 1.585317 4.386507 0 220.815084 209.352786
+ A3 2263842 0.000000 0.372677 2.233332 4.666667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.149070 2.500000 2.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 380 7 0 0 0 N 2 172.995536 29.770833 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 381 7 0 0 0 N 2 171.120536 31.645833 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 382 7 0 0 0 N 2 172.245536 40.270833 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 383 7 0 0 0 N 2 170.370536 37.145833 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 384 7 0 0 0 N 2 172.745536 43.770833 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 385 7 0 0 0 N 2 175.745536 35.145833 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 386 7 0 0 0 N 2 174.495536 25.520833 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+DRAW 387 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 73 0
+ 176.000000 23.000000 0
+ 178.312500 25.427083 2
+ 179.937500 30.052083 2
+ 181.187500 26.302083 2
+ 183.062500 23.427083 2
+ 187.937500 21.927083 2
+ 196.370536 22.520833 2
+ 202.245536 24.645833 2
+ 199.995536 28.520833 2
+ 199.187500 33.302083 2
+ 195.812500 33.177083 2
+ 195.437500 35.927083 2
+ 196.687500 37.427083 2
+ 201.245536 32.145833 2
+ 201.245536 32.145833 0
+ 203.870536 30.520833 2
+ 205.724499 32.460115 0
+ 208.599499 35.335115 2
+ 214.187500 37.552083 2
+ 214.506497 43.830729 2
+ 207.631497 49.705729 2
+ 203.506497 52.455729 2
+ 199.870536 54.270833 2
+ 196.495536 56.645833 2
+ 191.870536 59.145833 2
+ 190.745536 60.020833 2
+ 188.687500 60.302083 2
+ 186.250470 62.148026 0
+ 182.937970 63.773026 0
+ 182.187970 64.648026 0
+ 188.453125 61.681250 0
+ 188.953125 61.681250 0
+ 195.203125 59.431250 2
+ 198.515625 58.931250 2
+ 200.703125 58.931250 0
+ 201.078125 58.306250 0
+ 201.937500 58.677083 0
+ 202.062500 60.052083 0
+ 200.453125 60.243750 0
+ 200.515625 59.681250 2
+ 197.453125 59.743750 2
+ 194.078125 60.618750 0
+ 191.801809 61.512610 0
+ 188.864309 62.825110 0
+ 187.223684 63.671053 0
+ 186.604911 63.703125 2
+ 187.411184 64.921053 0
+ 191.379934 63.673246 2
+ 193.067434 63.860746 2
+ 197.442509 62.961349 2
+ 199.854911 62.953125 2
+ 201.958134 65.461349 2
+ 203.973684 66.358553 2
+ 206.005009 65.836349 0
+ 207.098684 66.421053 2
+ 208.703125 64.868750 2
+ 208.953125 60.743750 2
+ 206.265625 59.931250 0
+ 206.265625 59.931250 2
+ 205.453125 59.181250 0
+ 202.817509 55.148849 2
+ 205.630009 53.836349 2
+ 208.067509 54.398849 2
+ 208.880009 55.086349 2
+ 210.437500 55.427083 0
+ 211.703125 55.306250 2
+ 213.187500 54.552083 2
+ 214.005009 53.711349 2
+ 215.005009 53.773849 0
+ 216.130009 54.086349 0
+ 216.130009 54.086349 0
+ 216.125000 14.875000 0
+ 184.625000 15.750000 2
+ END$SEGS
+DRAW 388 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 4105019 0.000000 42 0
+ 176.625000 22.375000 0
+ 178.187500 24.052083 2
+ 179.937500 26.927083 2
+ 182.562500 22.552083 0
+ 185.754934 22.043860 0
+ 188.687500 21.177083 0
+ 190.754934 21.793860 0
+ 194.504934 22.043860 0
+ 197.567434 22.356360 2
+ 202.192434 23.981360 2
+ 201.192434 27.981360 0
+ 201.437500 28.802083 2
+ 199.192434 32.856360 2
+ 205.754934 28.981360 2
+ 210.349499 34.460115 2
+ 214.312500 37.677083 2
+ 214.879934 44.293860 2
+ 211.506497 48.455729 2
+ 209.506497 49.330729 0
+ 204.756497 52.580729 2
+ 200.312500 55.552083 2
+ 190.130009 60.648849 2
+ 188.255009 61.336349 0
+ 187.130009 61.711349 2
+ 188.020634 63.711349 0
+ 189.270634 62.961349 2
+ 191.880009 61.898849 0
+ 195.067509 61.086349 2
+ 199.676809 60.567708 2
+ 201.255009 57.961349 0
+ 206.817509 60.273849 0
+ 205.692509 59.461349 0
+ 203.505009 56.398849 2
+ 203.631497 54.705729 2
+ 205.942509 53.898849 2
+ 207.942509 54.273849 2
+ 211.218750 55.843750 2
+ 213.968750 53.218750 2
+ 216.093750 53.093750 0
+ 216.125000 14.625000 0
+ 192.625000 15.125000 0
+ 184.500000 16.375000 2
+ END$SEGS
+DRAW 389 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 4216377 0.000000 52 0
+ 177.875000 21.375000 0
+ 180.187500 22.677083 0
+ 185.812500 20.677083 0
+ 194.312500 20.927083 0
+ 198.687500 21.802083 0
+ 202.562500 23.677083 2
+ 202.687500 25.802083 2
+ 201.937500 27.677083 0
+ 202.187500 28.927083 2
+ 201.812500 30.302083 2
+ 205.786999 29.272615 2
+ 208.661999 30.585115 0
+ 211.286999 34.085115 0
+ 214.375000 34.444079 2
+ 215.125000 37.256579 0
+ 215.562500 40.756579 2
+ 215.375000 43.194079 0
+ 215.006497 48.955729 2
+ 207.812500 50.319079 2
+ 202.937500 53.177083 0
+ 200.687970 55.523026 2
+ 197.067509 57.836349 2
+ 193.505009 59.023849 0
+ 189.317509 60.586349 0
+ 188.317509 61.023849 0
+ 187.005009 61.711349 2
+ 188.005009 63.648849 2
+ 189.005009 63.211349 0
+ 191.692509 62.023849 2
+ 196.942509 60.898849 2
+ 200.630009 61.023849 2
+ 200.630009 60.086349 0
+ 201.755009 59.836349 0
+ 202.005009 59.148849 0
+ 200.880009 58.398849 2
+ 201.005009 57.523849 2
+ 202.880009 56.961349 2
+ 204.380009 58.961349 2
+ 206.005009 59.898849 0
+ 207.130009 60.523849 0
+ 205.567509 59.523849 2
+ 203.442509 56.273849 2
+ 203.005009 54.148849 2
+ 204.437500 52.927083 0
+ 208.062500 52.052083 2
+ 209.843750 54.218750 2
+ 211.625000 54.631579 2
+ 214.255009 53.648849 2
+ 216.093750 53.718750 0
+ 216.125000 14.750000 0
+ 193.000000 14.875000 0
+ 184.500000 16.500000 2
+ END$SEGS
+DRAW 390 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 4216377 0.000000 18 0
+ 178.875000 20.250000 0
+ 180.687500 22.052083 2
+ 189.312500 19.302083 2
+ 199.062500 20.677083 2
+ 202.562500 23.802083 0
+ 204.437500 27.552083 2
+ 212.437500 30.427083 2
+ 214.812500 36.927083 0
+ 215.937500 43.177083 2
+ 213.843750 48.093750 2
+ 208.312500 49.177083 2
+ 206.562500 52.302083 2
+ 210.468750 51.968750 2
+ 212.218750 53.343750 2
+ 214.343750 53.218750 2
+ 216.093750 54.093750 0
+ 216.000000 14.750000 0
+ 188.125000 15.000000 2
+ END$SEGS
+STRUCTURE 391 7 0 0 0 N 2 178.593750 42.156250 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+DRAW 392 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 6573132 0.000000 17 0
+ 201.125000 14.750000 0
+ 189.875000 15.250000 0
+ 187.558036 17.177083 2
+ 194.183036 18.177083 2
+ 197.808036 19.427083 0
+ 200.558036 19.552083 0
+ 203.808036 19.427083 0
+ 206.058036 20.552083 0
+ 206.933036 22.052083 2
+ 208.933036 23.427083 0
+ 209.433036 24.802083 0
+ 212.933036 26.802083 0
+ 212.558036 28.802083 2
+ 214.558036 30.552083 0
+ 214.933036 31.552083 2
+ 216.058036 35.427083 0
+ 216.250000 14.875000 0
+ END$SEGS
+TURNOUT 393 0 0 0 0 N 2 176.150980 72.309867 0 226.348117 "Peco-80 Medium Right SL-1738/395"
+ T4 571 176.150980 72.309867 136.348117 9 1.447704 0.713159 15.506461 15.506461 1 1 0 15.514147
+ T4 557 172.789286 75.833599 316.348117 0 0.0 0.0 0.0 0.0 0 0 0 15.514147
+ T4 560 173.166977 76.193922 330.348117 9 0.931707 1.016604 15.532111 15.532111 1 1 0 15.514147
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.973080 0.000000
+ S 0 0.000000 0.973080 0.000000 4.870079 0.000000
+ C 0 0.000000 14.687496 0.973021 -14.687496 0.000076 14.000152
+ S 0 0.000000 4.526342 -0.436290 4.870079 -0.522000
+ END$SEGS
+DRAW 394 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 49.500000 61.500000 0.000000 1 160.000000 "FRANKLIN"
+ END$SEGS
+DRAW 395 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 134.625000 41.250000 0.000000 1 160.000000 "ONDAVILLE"
+ END$SEGS
+DRAW 396 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 152.750000 42.250000 0.000000 1 160.000000 "LOBOLLY PINES"
+ END$SEGS
+DRAW 397 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 4.000000 9.750000 0.000000 1 160.000000 "FRANKLIN LOCOMOTIVE YARD\n AND SHOPS"
+ END$SEGS
+DRAW 398 3 0 0 0 -14.958333 8.875000 0 0.000000
+ G3 16316482 0.000000 15.000000 208.916667 31.000000 0
+ END$SEGS
+CURVE 399 1 0 0 0 N 0 193.591667 39.580902 0 19.000000 1 0.000000 0.000000
+ T4 1297 212.574116 38.764431 2.462882 0 0.0 0.0 0.0 0.0 0 0 0 4.232403
+ T4 451 175.872349 46.438437 21.156883 9 0.000000 0.000000 2.109633 2.109633 1 1 0 4.232403
+ END$SEGS
+DRAW 400 1 0 0 0 185.807292 -8.469579 0 0.000000
+ A3 9206651 0.083333 20.500000 7.984375 48.136245 0 0.000000 360.000000
+ END$SEGS
+DRAW 401 1 0 0 0 171.182292 5.405421 0 0.000000
+ A3 10325646 0.055556 17.500000 22.484375 34.290483 0 0.000000 360.000000
+ END$SEGS
+DRAW 402 8 0 0 0 43.694444 7.444445 0 0.000000
+ B3 16760832 0.055556 39.118056 90.437500 0 39.118056 58.312500 0 133120
+ END$SEGS
+DRAW 403 8 0 0 0 -43.736111 7.944445 0 0.000000
+ B3 16760832 0.055556 176.590278 89.812500 0 176.618056 57.812500 0 133120
+ END$SEGS
+STRAIGHT 404 10 0 0 0 N 2 0.000000 0.000000
+ T4 314 38.500498 81.509478 270.045947 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 315 177.999955 81.397610 90.045947 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+DRAW 405 11 5 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.013333 72.406250 86.781250 0 29.343750 76.593750 0
+ END$SEGS
+DRAW 406 0 0 0 0 0.000000 0.000000 0 0.000000
+ A3 12632256 0.000000 -0.125000 95.000000 94.289728 0 0.000000 360.000000
+ END$SEGS
+DRAW 407 0 0 0 0 0.000000 0.000000 0 0.000000
+ A3 12632256 0.000000 -0.125000 95.000000 94.289728 0 0.000000 360.000000
+ END$SEGS
+DRAW 408 7 0 0 0 0.000000 0.000000 0 0.000000
+ G3 10002084 0.000000 0.425000 95.000000 94.289728 0
+ END$SEGS
+DRAW 409 0 0 0 0 0.000000 0.000000 0 0.000000
+ L3 984325 0.106667 160.171471 52.821053 0 159.921471 59.446053 0
+ END$SEGS
+DRAW 410 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 160.546471 59.821053 180.000000 0 120.000000 "V"
+ END$SEGS
+DRAW 411 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 160.980682 58.025000 0.000000 0 72.000000 "RELATIVE\nSURFACE \nELEVATION\nnot to scale\nTrack elevations \nare accurate"
+ END$SEGS
+DRAW 412 0 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 12632256 0.040404 4 1
+ 142.071591 61.990909 0
+ 169.259091 61.990909 0
+ 169.259091 50.303409 0
+ 142.071591 50.303409 0
+ END$SEGS
+DRAW 413 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 210.193182 38.191667 0.000000 1 40.000000 "SILICA\n MINE"
+ END$SEGS
+DRAW 414 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 187.630682 25.316667 0.000000 1 40.000000 "FELDSPAR\n MINE"
+ END$SEGS
+STRAIGHT 415 0 0 0 0 N 2 0.000000 0.000000
+ T4 416 191.746979 41.333630 347.338949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ E4 195.751769 23.506480 167.338949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ END$SEGS
+CORNU 416 0 0 0 0 N 2 187.156133 56.566252 341.705949 35.984252 152.990595 45.271015 191.746979 41.333630 167.338949 0.000000 0.000000 7.625000
+ T4 247 187.156133 56.566252 341.705949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ T4 415 191.746979 41.333630 167.338949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ W3 0 0.000000 187.156133 56.566252 187.988863 54.047432 188.730579 51.499422 189.580953 48.986505
+ SUBSEGS
+ C 0 0.000000 623.908009 -406.653793 -134.878193 72.130668 0.548132
+ S 0 0.000000 188.960426 50.876768 189.580953 48.986505
+ SUBSEND
+ W3 0 0.000000 189.580953 48.986505 190.431327 46.473587 191.165508 43.922024 191.746979 41.333630
+ SUBSEGS
+ C 0 0.000000 75.550120 118.070254 24.613559 71.179383 6.034572
+ SUBSEND
+ END$SEGS
+STRAIGHT 417 0 0 0 0 N 2 0.000000 0.000000
+ T4 34 186.811506 40.502958 1.338797 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ E4 186.492730 26.863043 181.338797 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ END$SEGS
+STRAIGHT 418 0 0 0 0 N 2 0.000000 0.000000
+ T4 35 188.517466 40.608135 347.338949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ E4 192.473956 22.995988 167.338949 10 0.000000 0.000000 0.0 0.0 1 2 0 15.497812
+ END$SEGS
+STRAIGHT 419 0 0 0 0 N 2 0.000000 0.000000
+ T4 243 183.432826 37.602960 1.338801 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ E4 183.183634 26.940378 181.338801 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ END$SEGS
+STRAIGHT 420 0 0 0 0 N 2 0.000000 0.000000
+ T4 249 184.996110 37.725234 1.338804 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ E4 184.743208 26.903930 181.338804 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ END$SEGS
+CORNU 421 3 0 0 0 N 0 223.582077 110.560838 270.123101 0.000000 34.332642 20.455558 245.206058 95.112460 168.170891 45.477224 200.694617 85.789931
+ E4 223.582077 110.560838 270.123101 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 245.206058 95.112460 168.170891 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ W3 0 0.000000 223.582077 110.560838 226.045498 110.555545 228.522787 110.532010 230.947392 110.096397
+ SUBSEGS
+ C 0 0.000000 78.105886 223.934617 32.455748 359.741388 2.712899
+ C 0 0.000000 28.772031 226.050010 81.744229 2.448699 7.351523
+ SUBSEND
+ W3 0 0.000000 230.947392 110.096397 232.159695 109.878590 233.355405 109.561017 234.505771 109.120817
+ SUBSEGS
+ C 0 0.000000 19.700340 227.540564 90.692868 9.958363 10.746711
+ SUBSEND
+ W3 0 0.000000 234.505771 109.120817 235.656136 108.680617 236.760354 108.117643 237.783845 107.432382
+ SUBSEGS
+ C 0 0.000000 16.475377 228.648140 93.721914 20.826450 12.850287
+ SUBSEND
+ W3 0 0.000000 237.783845 107.432382 238.807337 106.747121 239.749136 105.939963 240.582602 105.033072
+ SUBSEGS
+ C 0 0.000000 15.571275 229.119911 94.494034 33.807537 13.596382
+ SUBSEND
+ W3 0 0.000000 240.582602 105.033072 241.416069 104.126181 242.140557 103.120418 242.749856 102.049964
+ SUBSEGS
+ C 0 0.000000 16.383784 228.495445 93.972828 47.540208 12.922116
+ SUBSEND
+ W3 0 0.000000 242.749856 102.049964 243.968456 99.909056 244.701072 97.523572 245.206058 95.112460
+ SUBSEGS
+ C 0 0.000000 19.627067 225.639632 92.434249 60.664601 10.772190
+ C 0 0.000000 30.094783 215.719299 89.093571 71.420174 7.042997
+ SUBSEND
+ END$SEGS
+STRUCTURE 422 7 0 0 0 N 2 180.787500 19.503125 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 423 7 0 0 0 N 2 184.787500 18.378125 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 424 7 0 0 0 N 2 197.537500 16.753125 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 425 7 0 0 0 N 2 194.412500 17.378125 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 426 7 0 0 0 N 2 205.662500 17.378125 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 427 7 0 0 0 N 2 212.662500 17.253125 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 428 7 0 0 0 N 2 211.662500 18.378125 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 429 7 0 0 0 N 2 212.162500 19.003125 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 430 7 0 0 0 N 2 214.912500 22.003125 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 431 7 0 0 0 N 2 214.787500 24.628125 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 432 7 0 0 0 N 2 213.162500 31.878125 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 433 7 0 0 0 N 2 212.537500 50.878125 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 434 7 0 0 0 N 2 192.412500 18.628125 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 435 7 0 0 0 N 2 208.912500 17.378125 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 436 7 0 0 0 N 2 212.162500 20.128125 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 437 7 0 0 0 N 2 177.662500 19.378125 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 438 7 0 0 0 N 2 182.037500 17.628125 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 439 7 0 0 0 N 2 187.412500 18.128125 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 440 7 0 0 0 N 2 200.287500 28.628125 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 441 7 0 0 0 N 2 179.912500 20.878125 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 442 7 0 0 0 N 2 177.412500 21.878125 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 443 7 0 0 0 N 2 196.662500 19.878125 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+TURNOUT 444 2 0 0 0 N 2 179.446713 55.890996 0 279.310911 "Peco-80 Curved Left SL-1735/387"
+ T4 451 179.446713 55.890996 189.310911 9 0.000000 0.000000 1.879092 1.879092 1 1 0 1.792799
+ T4 1502 179.919799 62.032377 359.495911 0 0.0 0.0 0.0 0.0 0 0 0 1.792799
+ T4 464 179.392564 62.028652 349.677911 0 0.0 0.0 0.0 0.0 0 0 0 1.792799
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 2 5 6 7
+ C 0 0.000000 -35.984252 0.000000 35.984252 179.681551 0.318449
+ S 0 0.000000 0.199999 0.000556 0.249998 0.000732
+ C 0 0.000000 -35.417758 0.050634 35.417928 170.428493 9.248991
+ C 0 0.000000 -35.984252 0.002864 35.984333 170.185000 0.318449
+ C 0 0.000000 -16.099920 0.301422 16.100570 170.001792 10.181213
+ C 0 0.000000 -19.147709 -0.432227 19.064875 160.817514 8.562309
+ C 0 0.000000 -17.992126 0.002783 17.992594 160.367000 0.636898
+ END$SEGS
+STRAIGHT 445 2 0 0 0 N 2 0.000000 0.000000
+ T4 1472 156.347272 71.247660 270.296405 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ E4 170.142367 71.176294 90.296405 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ END$SEGS
+STRAIGHT 446 2 0 0 0 N 2 0.000000 0.000000
+ T4 1473 157.028738 68.762380 270.296407 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ E4 172.637275 68.681633 90.296407 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ END$SEGS
+STRAIGHT 447 2 0 0 0 N 2 0.000000 0.000000
+ T4 1471 153.597341 73.899230 270.296407 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ E4 168.019366 73.824620 90.296407 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ END$SEGS
+TURNOUT 448 2 0 0 0 N 2 130.007765 53.747302 0 278.083067 "Peco-80 Curved Right SL-1734/386"
+ T4 449 130.007765 53.747302 188.083067 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ T4 1471 131.392220 59.749272 17.898067 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ T4 450 131.894231 59.588107 27.716067 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 2 5 6 7
+ C 0 0.000000 35.984252 0.000000 -35.984252 0.000000 0.318449
+ S 0 0.000000 0.199999 -0.000556 0.249998 -0.000732
+ C 0 0.000000 35.417758 0.050634 -35.417928 0.322516 9.248991
+ C 0 0.000000 35.984252 0.002864 -35.984333 9.496551 0.318449
+ C 0 0.000000 16.099920 0.301422 -16.100570 359.816995 10.181213
+ C 0 0.000000 19.147709 -0.432227 -19.064875 10.620177 8.562309
+ C 0 0.000000 17.992126 0.002783 -17.992594 18.996102 0.636898
+ END$SEGS
+TURNOUT 449 2 0 0 0 N 2 129.476633 47.448853 0 270.083067 "Peco-80 Large Right SL-1736/388"
+ T4 1464 129.476633 47.448853 180.083067 9 0.000000 0.000000 -0.034431 -0.034431 1 1 0 0.061814
+ T4 1470 129.485765 53.748059 0.083067 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ T4 448 130.007765 53.747302 8.083067 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 31.901195 0.354173 -31.901195 0.000076 8.000152
+ S 0 0.000000 4.794168 -0.310471 6.299213 -0.522000
+ END$SEGS
+TURNOUT 450 2 0 0 0 N 2 131.894231 59.588107 0 297.716067 "Peco-80 Curved Right SL-1734/386"
+ T4 448 131.894231 59.588107 207.716067 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ T4 1472 135.214826 64.775978 37.531067 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ T4 1473 135.633501 64.455510 47.349067 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 2 5 6 7
+ C 0 0.000000 35.984252 0.000000 -35.984252 0.000000 0.318449
+ S 0 0.000000 0.199999 -0.000556 0.249998 -0.000732
+ C 0 0.000000 35.417758 0.050634 -35.417928 0.322516 9.248991
+ C 0 0.000000 35.984252 0.002864 -35.984333 9.496551 0.318449
+ C 0 0.000000 16.099920 0.301422 -16.100570 359.816995 10.181213
+ C 0 0.000000 19.147709 -0.432227 -19.064875 10.620177 8.562309
+ C 0 0.000000 17.992126 0.002783 -17.992594 18.996102 0.636898
+ END$SEGS
+CORNU 451 2 0 0 0 N 2 179.446713 55.890996 9.310911 35.984252 143.936556 61.712951 175.872349 46.438437 201.156883 19.000000 193.591667 39.580902
+ T4 444 179.446713 55.890996 9.310911 9 0.000000 0.000000 1.879092 1.879092 1 1 0 1.994363
+ T4 399 175.872349 46.438437 201.156883 9 0.000000 0.000000 2.109633 2.109633 1 1 0 1.994363
+ W3 0 0.000000 179.446713 55.890996 179.173019 54.221637 178.694353 52.586792 178.005348 51.041819
+ SUBSEGS
+ C 0 0.000000 19.758267 159.942550 59.049593 99.198889 14.710240
+ SUBSEND
+ W3 0 0.000000 178.005348 51.041819 177.316343 49.496846 176.482903 48.016060 175.872349 46.438437
+ SUBSEGS
+ C 0 0.000000 74.338263 110.415077 81.989074 114.601411 1.956420
+ C 0 0.000000 -30.045100 203.783788 35.318204 291.722898 4.837018
+ SUBSEND
+ END$SEGS
+STRAIGHT 452 2 0 0 0 N 2 0.000000 0.000000
+ T4 1337 65.303358 68.077643 89.834796 0 0.0 0.0 0.0 0.0 0 0 0 0.078316
+ E4 45.680722 68.021064 269.834796 10 0.000000 0.000000 0.0 0.0 1 2 0 0.078316
+ END$SEGS
+TURNOUT 453 2 0 0 0 N 2 86.595774 48.647548 0 269.957980 "Peco-80 Large Left SL-1737/389"
+ T4 1463 86.595774 48.647548 179.957980 9 0.000000 0.000000 -0.014000 -0.014000 1 1 0 0.078316
+ T4 1428 86.591153 54.946759 359.957980 0 0.0 0.0 0.0 0.0 0 0 0 0.078316
+ T4 1338 86.069154 54.946377 351.957980 0 0.0 0.0 0.0 0.0 0 0 0 0.078316
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+TURNOUT 454 2 0 0 0 N 2 36.762213 59.026440 0 266.795644 "Peco-80 Curved Right SL-1734/386"
+ T4 467 36.762213 59.026440 176.795644 0 0.0 0.0 0.0 0.0 0 0 0 1.602807
+ T4 1498 36.945119 65.183298 6.610644 0 0.0 0.0 0.0 0.0 0 0 0 1.602807
+ T4 455 37.468965 65.123509 16.428644 0 0.0 0.0 0.0 0.0 0 0 0 1.602807
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 2 5 6 7
+ C 0 0.000000 35.984252 0.000000 -35.984252 0.000000 0.318449
+ S 0 0.000000 0.199999 -0.000556 0.249998 -0.000732
+ C 0 0.000000 35.417758 0.050634 -35.417928 0.322516 9.248991
+ C 0 0.000000 35.984252 0.002864 -35.984333 9.496551 0.318449
+ C 0 0.000000 16.099920 0.301422 -16.100570 359.816995 10.181213
+ C 0 0.000000 19.147709 -0.432227 -19.064875 10.620177 8.562309
+ C 0 0.000000 17.992126 0.002783 -17.992594 18.996102 0.636898
+ END$SEGS
+CORNU 455 2 0 0 0 N 2 63.175026 76.656987 93.163923 0.000000 0.000000 0.000000 37.468965 65.123509 196.428644 17.992126 54.726520 60.034958
+ T4 1426 63.175026 76.656987 93.163923 0 0.0 0.0 0.0 0.0 0 0 0 1.238179
+ T4 454 37.468965 65.123509 196.428644 0 0.0 0.0 0.0 0.0 0 0 0 1.238179
+ W3 0 0.000000 63.175026 76.656987 60.605434 76.799027 58.032498 76.952076 55.460027 76.878770
+ SUBSEGS
+ C 0 0.000000 -127.361974 55.048115 -50.445435 1.053326 2.605177
+ C 0 0.000000 -50.480100 56.849695 26.417802 358.422503 2.190091
+ SUBSEND
+ W3 0 0.000000 55.460027 76.878770 52.887557 76.805465 50.303839 76.490879 47.860722 75.682079
+ SUBSEGS
+ C 0 0.000000 -29.286653 56.009418 47.597271 347.593010 11.332110
+ C 0 0.000000 -20.720327 54.350890 56.004434 341.746183 5.331053
+ SUBSEND
+ W3 0 0.000000 47.860722 75.682079 46.639164 75.277679 45.456732 74.750910 44.352020 74.091095
+ SUBSEGS
+ C 0 0.000000 -17.667116 53.358825 58.892265 329.349080 12.519030
+ SUBSEND
+ W3 0 0.000000 44.352020 74.091095 43.247308 73.431280 42.221360 72.638165 41.314157 71.725625
+ SUBSEGS
+ C 0 0.000000 -15.465880 52.261048 60.800470 314.943061 14.300771
+ SUBSEND
+ W3 0 0.000000 41.314157 71.725625 40.406954 70.813086 39.619752 69.781735 38.976044 68.667560
+ SUBSEGS
+ C 0 0.000000 -14.949546 51.922311 61.192060 300.003218 14.794643
+ SUBSEND
+ W3 0 0.000000 38.976044 68.667560 38.332337 67.553386 37.832887 66.357732 37.468965 65.123509
+ SUBSEGS
+ C 0 0.000000 -16.295692 53.113564 60.563232 286.250986 13.572489
+ SUBSEND
+ END$SEGS
+DRAW 456 2 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 100.800000 3.552083 0.000000 1 100.000000 " CAROLINA YARD \n(STAGING AND STORAGE)"
+ END$SEGS
+DRAW 457 2 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 98.800000 35.052083 0.000000 1 100.000000 "LOWER REVERSE LOOP"
+ END$SEGS
+DRAW 458 2 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 49.800000 62.302083 0.000000 1 100.000000 " CABOOSE STORAGE\n (and PROGRAMMING) TRACK"
+ END$SEGS
+DRAW 459 2 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 143.050000 61.802083 0.000000 1 100.000000 "LOCOMOTIVE STORAGE TRACKS:\n 1-ACL, 2-SAL, 3-Srr"
+ END$SEGS
+DRAW 460 2 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 27.050000 60.802083 0.000000 1 100.000000 "to helix up -->"
+ END$SEGS
+DRAW 461 2 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 181.175000 60.677083 0.000000 1 100.000000 "<-- to helix up"
+ END$SEGS
+CORNU 462 2 0 0 0 N 2 161.860297 77.069369 270.235041 0.000000 -0.325000 2.261458 164.862500 76.947917 95.436088 16.046229 163.342355 60.973856
+ T4 466 161.860297 77.069369 270.235041 0 0.0 0.0 0.0 0.0 0 0 0 1.224040
+ T4 463 164.862500 76.947917 95.436088 0 0.0 0.0 0.0 0.0 0 0 0 1.224040
+ W3 0 0.000000 161.860297 77.069369 162.862185 77.065259 163.865109 77.042832 164.862500 76.947917
+ SUBSEGS
+ C 0 0.000000 33.118332 162.024093 43.951442 359.716627 5.199941
+ SUBSEND
+ END$SEGS
+CORNU 463 2 0 0 0 N 2 164.862500 76.947917 275.436088 16.046229 163.342355 60.973856 177.940541 66.786380 157.105589 20.182681 159.347784 58.934630
+ T4 462 164.862500 76.947917 275.436088 0 0.0 0.0 0.0 0.0 0 0 0 1.439299
+ T4 464 177.940541 66.786380 157.105589 0 0.0 0.0 0.0 0.0 0 0 0 1.439299
+ W3 0 0.000000 164.862500 76.947917 166.307953 76.810363 167.735345 76.471554 169.081537 75.927475
+ SUBSEGS
+ C 0 0.000000 15.086899 163.462168 61.926147 5.325731 16.542103
+ SUBSEND
+ W3 0 0.000000 169.081537 75.927475 170.427730 75.383396 171.690572 74.636038 172.822771 73.726982
+ SUBSEGS
+ C 0 0.000000 14.921897 163.467483 62.101941 22.100309 16.725171
+ SUBSEND
+ W3 0 0.000000 172.822771 73.726982 173.954970 72.817927 174.956657 71.749286 175.811453 70.575582
+ SUBSEGS
+ C 0 0.000000 16.472388 162.469213 60.915137 38.942505 15.151087
+ SUBSEND
+ W3 0 0.000000 175.811453 70.575582 176.666248 69.401878 177.375670 68.123981 177.940541 66.786380
+ SUBSEGS
+ C 0 0.000000 18.969997 160.446735 59.449657 54.090888 13.156434
+ SUBSEND
+ END$SEGS
+CORNU 464 2 0 0 0 N 2 177.940541 66.786380 337.105589 20.182681 159.347784 58.934630 179.392564 62.028652 169.677911 17.992126 161.691623 58.804796
+ T4 463 177.940541 66.786380 337.105589 0 0.0 0.0 0.0 0.0 0 0 0 1.675407
+ T4 444 179.392564 62.028652 169.677911 0 0.0 0.0 0.0 0.0 0 0 0 1.675407
+ W3 0 0.000000 177.940541 66.786380 178.586810 65.256031 179.094905 63.662980 179.392564 62.028652
+ SUBSEGS
+ C 0 0.000000 22.741619 157.045840 57.809036 66.749371 12.557664
+ SUBSEND
+ END$SEGS
+STRAIGHT 465 2 0 0 0 N 2 0.000000 0.000000
+ T4 1499 75.013378 80.404494 269.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.693496
+ T4 1500 137.012947 80.485353 89.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.693496
+ END$SEGS
+CORNU 466 2 0 0 0 N 2 152.469739 77.027100 266.636185 0.000000 0.000000 0.000000 161.860297 77.069369 90.235041 0.000000 -0.325000 2.261458
+ T4 1429 152.469739 77.027100 266.636185 0 0.0 0.0 0.0 0.0 0 0 0 1.093390
+ T4 462 161.860297 77.069369 90.235041 0 0.0 0.0 0.0 0.0 0 0 0 1.093390
+ W3 0 0.000000 152.469739 77.027100 154.032700 77.118966 155.598475 77.164588 157.163946 77.140406
+ SUBSEGS
+ C 0 0.000000 63.338109 156.344167 13.807602 356.492995 4.248599
+ SUBSEND
+ W3 0 0.000000 157.163946 77.140406 158.729418 77.116224 160.294652 77.075792 161.860297 77.069369
+ SUBSEGS
+ C 0 0.000000 -414.053943 165.774297 491.104813 180.541618 0.649947
+ SUBSEND
+ END$SEGS
+CORNU 467 2 0 0 0 N 2 36.762213 59.026440 356.795644 35.984252 72.690204 61.037867 41.311184 42.498026 173.501664 19.000000 22.433256 40.347713
+ T4 454 36.762213 59.026440 356.795644 0 0.0 0.0 0.0 0.0 0 0 0 1.917455
+ T4 1100 41.311184 42.498026 173.501664 9 0.000000 0.000000 2.148934 2.148934 1 1 0 1.917455
+ W3 0 0.000000 36.762213 59.026440 36.842481 57.592703 37.030639 56.162724 37.381505 54.770266
+ SUBSEGS
+ C 0 0.000000 -22.578497 59.313498 60.134609 256.255871 10.930881
+ SUBSEND
+ W3 0 0.000000 37.381505 54.770266 37.732371 53.377808 38.234831 52.028290 38.775497 50.697980
+ SUBSEGS
+ C 0 0.000000 -30.961978 67.300903 62.737302 247.117526 7.971565
+ SUBSEND
+ W3 0 0.000000 38.775497 50.697980 39.316163 49.367670 39.888035 48.048489 40.348589 46.688366
+ SUBSEGS
+ C 0 0.000000 130.156938 -81.312293 0.500855 67.314898 1.422389
+ S 0 0.000000 39.984528 47.701595 40.348589 46.688366
+ SUBSEND
+ W3 0 0.000000 40.348589 46.688366 40.809142 45.328242 41.148668 43.924782 41.311184 42.498026
+ SUBSEGS
+ C 0 0.000000 20.234244 21.220897 40.088663 70.963829 12.197535
+ SUBSEND
+ END$SEGS
+STRUCTURE 468 7 0 0 0 N 2 138.337500 81.975000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 469 7 0 0 0 N 2 137.087500 82.225000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 470 7 0 0 0 N 2 136.087500 82.725000 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 471 7 0 0 0 N 2 134.087500 80.725000 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 472 5 0 0 0 N 2 170.057077 90.008674 0 0.000000 "Piko Transformer station 60016"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.343977 0
+ 7.155296 3.511983 0
+ 7.537916 1.168006 0
+ 0.382620 0.000000 0
+ END$SEGS
+DRAW 473 9 0 0 0 -0.623729 8.280833 0 0.000000
+ B3 16760832 0.055556 38.941911 89.219167 0 38.936229 58.240000 0 133120
+ END$SEGS
+DRAW 474 9 0 0 0 0.001271 8.280833 0 0.000000
+ B3 16760832 0.055556 0.623729 74.844167 0 131.623729 74.719167 0 133120
+ END$SEGS
+DRAW 475 9 0 0 0 0.001271 8.280833 0 0.000000
+ B3 16760832 0.055556 0.750000 58.000000 0 131.373729 57.969167 0 133120
+ END$SEGS
+DRAW 476 9 0 0 0 0.001271 8.280833 0 0.000000
+ B3 16760832 0.055556 0.248729 89.094167 0 0.248729 58.219167 0 133120
+ END$SEGS
+DRAW 477 9 0 0 0 4.626271 8.072500 0 0.000000
+ B3 16760832 0.055556 39.540396 30.969167 0 33.623729 57.677500 0 133120
+ END$SEGS
+DRAW 478 9 0 0 0 3.376271 7.905833 0 0.000000
+ B3 16760832 0.055556 40.790396 31.385834 0 34.623729 9.969167 0 133120
+ END$SEGS
+DRAW 479 9 0 0 0 0.001271 8.280833 0 0.000000
+ B3 16760832 0.055556 0.165396 57.510834 0 0.164419 8.928311 0 133120
+ END$SEGS
+DRAW 480 9 0 0 0 0.140160 49.475277 0 0.000000
+ B3 16760832 0.055556 -0.417938 15.927500 0 37.748759 16.001924 0 131584
+ END$SEGS
+DRAW 481 9 0 0 0 -0.347221 8.758106 0 0.000000
+ B3 16760832 0.055556 215.778266 89.250099 0 0.597221 89.469167 0 133120
+ END$SEGS
+DRAW 482 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.040404 60.693182 83.250000 0 60.693182 97.625000 0 131584
+ END$SEGS
+DRAW 483 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.040404 38.568182 82.625000 0 82.443182 66.875000 0 131584
+ END$SEGS
+DRAW 484 9 0 0 0 43.987382 8.128055 0 0.000000
+ B3 16760832 0.055556 39.080800 89.621945 0 38.955800 58.371945 0 133120
+ END$SEGS
+DRAW 485 9 0 0 0 0.001271 8.280833 0 0.000000
+ B3 16760832 0.055556 83.873729 7.594167 0 83.691911 90.344167 0 133120
+ END$SEGS
+DRAW 486 9 0 0 0 0.001271 8.280833 0 0.000000
+ B3 16760832 0.055556 131.873729 7.969167 0 131.623729 90.344167 0 133120
+ END$SEGS
+DRAW 487 9 0 0 0 93.612383 8.225278 0 0.000000
+ B3 16760832 0.055556 38.887617 89.524722 0 38.887617 58.024722 0 133120
+ END$SEGS
+DRAW 488 9 0 0 0 0.001271 8.280833 0 0.000000
+ B3 16760832 0.055556 215.332107 9.179667 0 215.373729 57.344167 0 133120
+ END$SEGS
+DRAW 489 9 0 0 0 0.376271 8.530833 0 0.000000
+ B3 16760832 0.055556 176.373729 89.344167 0 176.748729 57.844167 0 133120
+ END$SEGS
+DRAW 490 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.040404 177.250000 82.875000 0 215.125000 82.875000 0 131584
+ END$SEGS
+DRAW 491 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.040404 132.875000 82.875000 0 176.375000 82.875000 0 131584
+ END$SEGS
+DRAW 492 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.040404 132.125000 66.125000 0 216.250000 66.125000 0 131584
+ END$SEGS
+DRAW 493 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.040404 215.375000 66.625000 0 215.750000 98.375000 0 131584
+ END$SEGS
+DRAW 494 9 0 0 0 210.509038 7.857936 0 0.000000
+ B3 16760832 0.055556 -39.259038 30.892064 0 -33.259038 57.767064 0 133120
+ END$SEGS
+DRAW 495 9 0 0 0 211.981390 7.692242 0 0.000000
+ B3 16760832 0.055556 -40.814812 31.354077 0 -34.509070 9.787998 0 133120
+ END$SEGS
+DRAW 496 9 0 0 0 214.972170 1.694741 0 0.000000
+ B3 16760832 0.055556 0.405541 15.927820 0 -37.761202 15.972539 0 131584
+ END$SEGS
+DRAW 497 9 0 0 0 215.097170 49.472519 0 0.000000
+ B3 16760832 0.055556 0.405541 15.927820 0 -37.761202 15.972539 0 131584
+ END$SEGS
+DRAW 498 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.040404 171.500000 39.000000 0 215.000000 39.000000 0 131584
+ END$SEGS
+DRAW 499 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.040404 195.750000 18.000000 0 194.625000 65.000000 0 131584
+ END$SEGS
+DRAW 500 9 0 0 0 0.001271 8.280833 0 0.000000
+ B3 16760832 0.055556 107.790595 89.492193 0 107.748729 -4.780833 0 133120
+ END$SEGS
+DRAW 501 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 12632256 0.000000 24 0
+ 171.625000 42.125000 0
+ 175.964286 45.101151 0
+ 177.901786 46.101151 0
+ 180.589286 46.101151 2
+ 182.214286 44.413651 2
+ 182.151786 42.601151 2
+ 182.151786 42.601151 2
+ 182.151786 42.601151 0
+ 181.093750 34.809028 2
+ 180.031250 31.934028 2
+ 179.406250 29.496528 2
+ 179.218750 27.996528 0
+ 179.218750 21.371528 0
+ 177.968750 17.496528 2
+ 176.125000 15.125000 0
+ 175.000000 16.416667 0
+ 177.031250 19.184028 2
+ 177.843750 21.934028 0
+ 177.656250 28.309028 1
+ 178.343750 31.371528 2
+ 179.656250 35.309028 0
+ 180.964286 44.351151 2
+ 177.589286 44.726151 2
+ 170.625000 39.250000 0
+ END$SEGS
+DRAW 502 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 144.866071 56.500000 0.000000 0 56.000000 "BASE\n LEVEL"
+ END$SEGS
+STRUCTURE 503 7 0 0 0 N 2 201.011877 60.619628 0 123.226353 "custom TUNNEL PORTAL CF003"
+ D 0.000000 0.000000
+ Y4 0 0.187500 4 2
+ 1.687500 1.406250 0
+ 0.750000 1.718750 0
+ 0.093750 1.031250 0
+ 0.562500 0.093750 0
+ END$SEGS
+CORNU 504 0 128 0 0 N 2 201.843487 59.450923 81.039272 12.505465 199.895667 71.803762 189.050476 62.135786 293.706439 59.865118 213.119287 116.949330
+ T4 258 201.843487 59.450923 81.039272 9 0.000000 0.000000 19.347954 19.347954 1 1 0 19.348939
+ T4 574 189.050476 62.135786 293.706439 0 0.0 0.0 0.0 0.0 0 0 0 19.348939
+ W3 0 0.000000 201.843487 59.450923 200.752767 59.278936 199.641136 59.253203 198.540439 59.341053
+ SUBSEGS
+ C 0 0.000000 14.050198 199.728109 73.340964 171.340703 13.508324
+ SUBSEND
+ W3 0 0.000000 198.540439 59.341053 197.439743 59.428904 196.349724 59.628934 195.279381 59.900257
+ SUBSEGS
+ C 0 0.000000 19.657377 200.220463 78.926507 184.902783 9.655234
+ SUBSEND
+ W3 0 0.000000 195.279381 59.900257 193.138695 60.442904 191.072519 61.247900 189.050476 62.135786
+ SUBSEGS
+ C 0 0.000000 35.665876 204.308237 94.404380 194.664057 7.981627
+ C 0 0.000000 63.301199 214.548787 120.074357 202.254026 1.499892
+ SUBSEND
+ END$SEGS
+DRAW 505 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 30 0
+ 171.833134 70.346765 2
+ 168.015625 71.390625 0
+ 161.828125 72.765625 2
+ 151.687500 73.354167 2
+ 148.687500 72.916667 2
+ 143.406250 71.735197 0
+ 138.281250 69.360197 2
+ 133.156250 64.985197 2
+ 129.531250 60.360197 2
+ 129.781250 64.860197 0
+ 128.281250 60.985197 0
+ 127.156250 56.610197 0
+ 126.531250 53.360197 0
+ 124.781250 49.985197 2
+ 128.156250 48.985197 0
+ 130.031250 48.110197 0
+ 130.656250 46.860197 2
+ 132.536184 45.773026 0
+ 132.786184 57.148026 2
+ 137.411184 62.585526 2
+ 142.536184 64.585526 2
+ 148.786184 65.585526 2
+ 160.286184 65.648026 2
+ 167.286184 64.898026 2
+ 171.286184 63.523026 0
+ 172.973684 65.835526 2
+ 173.411184 67.460526 2
+ 174.953125 68.203125 2
+ 175.703125 69.203125 2
+ 173.505009 69.987390 2
+ END$SEGS
+DRAW 506 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 1340433 0.000000 14 0
+ 170.489384 70.628015 2
+ 174.489384 69.487390 2
+ 174.036259 68.471765 0
+ 173.520634 67.221765 2
+ 171.312500 68.291667 2
+ 166.000000 70.104167 2
+ 160.515625 71.140625 0
+ 155.890625 71.640625 2
+ 150.500000 71.604167 0
+ 150.500000 72.666667 0
+ 153.890625 72.765625 2
+ 161.078125 72.390625 2
+ 163.895634 72.049890 2
+ 167.551884 71.253015 2
+ END$SEGS
+CORNU 507 0 128 0 0 N 2 170.062500 69.569444 104.877814 82.208574 148.954744 -9.883135 156.562500 72.069444 275.251893 65.965750 150.524357 6.380625
+ T4 576 170.062500 69.569444 104.877814 9 -0.151316 -1.483918 19.187493 19.187493 1 1 0 18.989055
+ T4 1358 156.562500 72.069444 275.251893 9 -1.088816 -1.108918 18.790617 18.790617 1 1 0 18.989055
+ W3 0 0.000000 170.062500 69.569444 165.634412 70.745831 161.124952 71.650062 156.562500 72.069444
+ SUBSEGS
+ C 0 0.000000 -87.723204 147.189375 -15.119284 8.380004 6.734091
+ C 0 0.000000 -68.159012 150.291825 4.199498 5.278715 2.887898
+ SUBSEND
+ END$SEGS
+STRUCTURE 508 5 0 0 0 N 2 142.814618 66.230157 0 297.244172 "custom tobacco barn 001"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.562500 1.125000 0
+ 1.687500 1.125000 0
+ 1.687500 0.000000 0
+ 0.562500 0.000000 0
+ Y4 16744703 0.055556 4 0
+ 0.527778 1.055556 0
+ 0.027778 1.055556 0
+ 0.027778 0.055556 0
+ 0.527778 0.055556 0
+ END$SEGS
+DRAW 509 7 3 0 0 0.000000 7.625000 0 0.000000
+ Y4 10308170 0.083333 7 0
+ 149.906250 58.031250 0
+ 151.531250 63.781250 0
+ 155.781250 64.000000 0
+ 158.500000 63.562500 0
+ 159.375000 63.281250 0
+ 159.312500 61.093750 0
+ 158.375000 58.156250 0
+ END$SEGS
+DRAW 510 5 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 151.892426 63.799840 0 150.345499 58.037733 0
+ END$SEGS
+DRAW 511 5 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 152.436710 63.827855 0 150.806276 58.002938 0
+ END$SEGS
+DRAW 512 5 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 152.971369 63.855374 0 151.406479 58.022875 0
+ END$SEGS
+DRAW 513 5 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 153.517945 63.883506 0 151.966127 58.035109 0
+ END$SEGS
+DRAW 514 5 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 154.035874 63.910164 0 152.369234 58.041037 0
+ END$SEGS
+DRAW 515 5 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 154.584054 63.938380 0 152.966294 58.048648 0
+ END$SEGS
+DRAW 516 5 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 155.090754 63.964460 0 153.404562 58.051529 0
+ END$SEGS
+DRAW 517 5 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 155.593750 64.031250 0 153.937500 58.031250 0
+ END$SEGS
+DRAW 518 5 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 156.093750 63.875000 0 154.500000 58.031250 0
+ END$SEGS
+DRAW 519 5 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 156.593750 63.812500 0 155.000000 58.093750 0
+ END$SEGS
+DRAW 520 5 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 157.031250 63.781250 0 155.593750 58.218750 0
+ END$SEGS
+DRAW 521 5 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 157.593750 63.750000 0 156.093750 58.187500 0
+ END$SEGS
+DRAW 522 5 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 158.062500 63.656250 0 156.593750 58.125000 0
+ END$SEGS
+DRAW 523 5 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 158.562500 63.562500 0 157.062500 58.156250 0
+ END$SEGS
+DRAW 524 5 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 159.093750 63.437500 0 157.625000 58.125000 0
+ END$SEGS
+DRAW 525 5 0 0 0 0.000000 7.625000 0 0.000000
+ L3 12632256 0.055556 159.343750 62.437500 0 158.125000 58.156250 0
+ END$SEGS
+DRAW 526 5 0 0 0 142.408367 -85.529480 0 0.000000
+ F4 16744703 0.000000 4 0
+ 4.588911 154.954254 0
+ 5.257951 156.571315 0
+ 6.533119 156.043729 0
+ 5.864079 154.426668 0
+ END$SEGS
+DRAW 527 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 14592682 0.000000 13 0
+ 158.739309 57.950932 0
+ 160.046405 60.794682 2
+ 159.687500 62.250000 0
+ 160.171405 63.169682 2
+ 160.983905 63.294682 2
+ 162.551809 62.825932 2
+ 161.608905 61.544682 0
+ 161.608905 60.169682 0
+ 160.233905 59.482182 2
+ 165.421405 58.294682 2
+ 165.921405 57.732182 0
+ 160.546405 58.857182 2
+ 159.858905 57.919682 0
+ END$SEGS
+STRUCTURE 528 5 0 0 0 N 2 144.902083 66.780000 0 0.000000 "Animek Dorothy's farmhouse AM-4001"
+ D 0.000000 0.000000
+ F4 16744703 0.055556 4 0
+ 2.035417 0.268611 0
+ 0.765417 0.268611 0
+ 0.765417 1.708611 0
+ 2.035417 1.708611 0
+ F4 12632256 0.055556 4 0
+ 0.736806 1.706111 0
+ 1.736806 1.706111 0
+ 1.736806 2.018611 0
+ 0.736806 2.018611 0
+ F4 12632256 0.000000 4 0
+ 0.750694 0.331111 0
+ 1.630694 0.331111 0
+ 1.630694 0.051111 0
+ 0.750694 0.051111 0
+ F4 16744703 0.055556 4 0
+ 0.775000 1.525556 0
+ 0.000000 1.525556 0
+ 0.000000 0.715556 0
+ 0.775000 0.715556 0
+ F4 16744703 0.055556 4 0
+ 0.778472 0.720000 0
+ 0.058472 0.720000 0
+ 0.058472 0.000000 0
+ 0.778472 0.000000 0
+ L3 0 0.055556 0.775000 1.494306 0 0.750694 0.306806 0
+ L3 0 0.055556 2.035417 1.025556 0 0.785417 1.048125 0
+ L3 2894892 0.055556 0.000000 1.110625 0 0.775000 1.110625 0
+ Y4 0 0.055556 3 2
+ 0.097917 0.720000 0
+ 0.097917 0.845000 0
+ 0.785417 0.829375 0
+ END$SEGS
+DRAW 529 7 3 0 0 0.000000 0.000000 0 0.000000
+ Y4 6573132 0.000000 6 0
+ 165.322917 66.677083 0
+ 165.947917 69.364583 0
+ 172.447917 67.177083 0
+ 171.635417 64.427083 0
+ 170.447917 63.864583 0
+ 166.697917 65.489583 0
+ END$SEGS
+DRAW 530 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 165.781250 68.843750 0 172.406250 66.656250 0
+ END$SEGS
+DRAW 531 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 165.677084 68.364583 0 172.302084 66.177083 0
+ END$SEGS
+DRAW 532 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 165.614584 67.927083 0 172.239584 65.739583 0
+ END$SEGS
+DRAW 533 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 165.510417 67.447916 0 172.135417 65.260416 0
+ END$SEGS
+DRAW 534 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 165.385417 67.010416 0 172.010417 64.822916 0
+ END$SEGS
+DRAW 535 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 165.281250 66.531249 0 171.906250 64.343749 0
+ END$SEGS
+DRAW 536 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 11833945 0.000000 72 0
+ 174.241071 60.750000 2
+ 174.741071 57.625000 2
+ 172.625000 51.375000 0
+ 176.625470 54.460526 0
+ 178.750470 56.085526 2
+ 181.187970 61.335526 2
+ 180.125470 64.523026 2
+ 180.786259 67.143640 2
+ 182.020634 66.878015 0
+ 182.786259 66.685307 0
+ 187.083134 64.711349 2
+ 187.770634 64.023849 2
+ 189.833134 62.773849 2
+ 192.020634 61.961349 0
+ 194.208134 61.523849 0
+ 195.270634 62.211349 2
+ 194.583134 63.086349 0
+ 191.833134 63.898849 2
+ 193.083134 64.023849 0
+ 193.214286 64.979167 0
+ 192.089286 65.666667 0
+ 190.718750 68.958333 0
+ 188.156250 69.833333 2
+ 184.708134 70.398849 2
+ 182.964286 72.104167 2
+ 181.817434 71.110746 0
+ 180.116071 68.750000 2
+ 179.616071 71.000000 0
+ 178.520634 71.315515 2
+ 177.223759 70.096765 0
+ 176.942509 70.065515 2
+ 175.973759 70.753015 2
+ 173.176884 71.815515 2
+ 171.536184 72.381579 2
+ 169.270634 72.596765 2
+ 166.411184 72.944079 2
+ 165.286184 73.256579 0
+ 161.399554 73.805099 0
+ 154.962054 75.617599 2
+ 153.149554 74.430099 2
+ 149.899554 74.305099 0
+ 146.536184 73.756579 2
+ 141.578125 72.788651 0
+ 142.578125 73.976151 0
+ 142.265625 74.601151 0
+ 140.828125 74.663651 0
+ 138.828125 73.976151 2
+ 138.015625 73.609375 0
+ 136.828125 72.296875 2
+ 135.640625 71.484375 2
+ 131.036184 66.756579 0
+ 128.703125 62.515625 2
+ 126.453125 55.328125 2
+ 126.453125 50.703125 0
+ 125.453125 50.453125 0
+ 125.015625 49.828125 0
+ 127.140625 48.578125 0
+ 128.140625 48.078125 0
+ 129.828125 57.578125 2
+ 132.036184 63.444079 2
+ 135.348684 67.131579 2
+ 140.161184 70.256579 2
+ 145.598684 72.569079 2
+ 150.786184 73.506579 0
+ 156.286184 73.256579 0
+ 164.098684 72.694079 2
+ 174.926884 69.659265 2
+ 175.708134 69.346765 2
+ 175.973684 68.444079 2
+ 176.536184 66.546053 2
+ 174.536184 63.921053 2
+ 172.598684 62.358553 0
+ END$SEGS
+CORNU 537 0 0 0 0 N 2 176.116005 69.832077 107.757116 108.522242 143.018612 -33.519941 160.408377 73.396261 276.460854 64.662006 153.132326 9.144926
+ T4 566 176.116005 69.832077 107.757116 0 0.0 0.0 0.0 0.0 0 0 0 13.410502
+ T4 540 160.408377 73.396261 276.460854 0 0.0 0.0 0.0 0.0 0 0 0 13.410502
+ W3 0 0.000000 176.116005 69.832077 170.994471 71.472194 165.751963 72.791134 160.408377 73.396261
+ SUBSEGS
+ C 0 0.000000 -99.778240 145.413006 -25.104865 13.287312 4.634109
+ C 0 0.000000 -69.359613 152.399353 4.500605 6.630793 6.660674
+ SUBSEND
+ END$SEGS
+CORNU 538 0 0 0 0 N 2 146.375000 73.104167 79.809256 39.810478 153.418499 33.921731 136.319444 68.847222 231.795042 19.682762 148.492768 53.380441
+ T4 1230 146.375000 73.104167 79.809256 0 0.0 0.0 0.0 0.0 0 0 0 14.273671
+ T4 539 136.319444 68.847222 231.795042 0 0.0 0.0 0.0 0.0 0 0 0 14.273671
+ W3 0 0.000000 146.375000 73.104167 144.564686 72.778742 142.773992 72.314210 141.073025 71.614317
+ SUBSEGS
+ C 0 0.000000 -25.991026 150.715576 47.478148 338.222980 12.163415
+ SUBSEND
+ W3 0 0.000000 141.073025 71.614317 139.372057 70.914424 137.764797 69.984805 136.319444 68.847222
+ SUBSEGS
+ C 0 0.000000 -19.990798 148.657590 53.118200 321.888685 15.814617
+ SUBSEND
+ END$SEGS
+CORNU 539 0 0 0 0 N 2 136.319444 68.847222 51.795042 19.682762 148.492768 53.380441 129.474647 60.802338 209.730745 17.992126 145.098388 51.879599
+ T4 538 136.319444 68.847222 51.795042 0 0.0 0.0 0.0 0.0 0 0 0 14.611388
+ T4 611 129.474647 60.802338 209.730745 0 0.0 0.0 0.0 0.0 0 0 0 14.611388
+ W3 0 0.000000 136.319444 68.847222 134.928970 67.752832 133.692029 66.473559 132.555109 65.117639
+ SUBSEGS
+ C 0 0.000000 -25.765530 152.475438 48.776189 309.363411 11.804581
+ SUBSEND
+ W3 0 0.000000 132.555109 65.117639 131.418189 63.761719 130.352182 62.338905 129.474647 60.802338
+ SUBSEGS
+ C 0 0.000000 -29.705728 155.095978 45.769784 300.401012 10.239983
+ SUBSEND
+ END$SEGS
+CORNU 540 0 0 0 0 N 2 160.408377 73.396261 96.460854 64.662006 153.132326 9.144926 156.753422 73.705461 272.911605 49.076087 154.260591 24.692727
+ T4 537 160.408377 73.396261 96.460854 0 0.0 0.0 0.0 0.0 0 0 0 13.719346
+ T4 1230 156.753422 73.705461 272.911605 0 0.0 0.0 0.0 0.0 0 0 0 13.719346
+ W3 0 0.000000 160.408377 73.396261 159.193281 73.533863 157.974705 73.643345 156.753422 73.705461
+ SUBSEGS
+ C 0 0.000000 -59.227522 153.590628 14.562447 3.061093 3.548943
+ SUBSEND
+ END$SEGS
+DRAW 541 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 4105019 0.000000 69 0
+ 197.254934 94.423246 0
+ 194.567434 95.048246 2
+ 192.301884 96.466557 2
+ 186.801884 98.341557 0
+ 183.370536 98.546053 0
+ 179.745536 97.421053 2
+ 177.119243 96.614583 2
+ 180.343750 95.025219 2
+ 180.031250 94.400219 0
+ 179.995536 92.296053 2
+ 181.995536 92.921053 0
+ 184.370536 93.171053 2
+ 186.734375 92.932292 2
+ 188.421875 92.682292 2
+ 193.796875 91.057292 2
+ 196.421875 89.119792 2
+ 195.671875 87.744792 2
+ 195.734375 86.682292 0
+ 195.234375 85.432292 2
+ 194.171875 84.369792 2
+ 192.692434 83.360746 0
+ 191.692434 82.235746 2
+ 189.906250 79.437500 2
+ 188.156250 78.562500 2
+ 186.781250 80.312500 0
+ 186.254934 82.423246 2
+ 183.004934 80.298246 0
+ 178.754934 77.235746 2
+ 183.817434 78.048246 2
+ 184.504934 75.798246 0
+ 186.879934 75.798246 2
+ 190.817434 73.610746 2
+ 190.067434 77.798246 2
+ 191.817434 78.735746 2
+ 191.692434 79.985746 2
+ 194.046875 80.853344 2
+ 195.171875 84.682292 0
+ 196.109375 86.994792 2
+ 197.609375 87.682292 0
+ 198.296875 88.369792 0
+ 197.734375 86.869792 0
+ 196.671875 86.057292 0
+ 195.796875 84.682292 2
+ 195.359375 82.744792 2
+ 195.171875 80.665844 2
+ 194.421875 79.603344 2
+ 192.359375 77.853344 2
+ 191.671875 76.228344 2
+ 195.046875 76.603344 2
+ 195.796875 78.228344 2
+ 196.546875 79.790844 2
+ 197.817434 81.360746 2
+ 200.567434 82.548246 0
+ 202.692434 83.735746 2
+ 199.629934 86.360746 2
+ 198.254934 86.423246 0
+ 200.046875 88.432292 0
+ 200.629934 89.548246 2
+ 203.129934 90.110746 0
+ 205.942434 91.235746 2
+ 208.817434 90.860746 2
+ 213.317434 93.048246 0
+ 207.192434 92.423246 0
+ 204.442434 92.548246 2
+ 202.629934 91.485746 0
+ 199.817434 91.360746 2
+ 198.504934 88.735746 2
+ 196.692434 90.860746 2
+ 196.620536 92.671053 2
+ END$SEGS
+STRAIGHT 542 0 0 0 0 N 2 0.000000 0.000000
+ T4 1042 181.665891 94.121577 270.123101 9 0.745293 1.378423 18.000000 18.000000 1 1 0 18.087741
+ T4 1293 189.937305 94.103806 90.123101 0 0.0 0.0 0.0 0.0 0 0 0 18.087741
+ END$SEGS
+STRUCTURE 543 7 0 0 0 N 2 196.554687 95.100071 0 148.324531 "custom TUNNEL PORTAL CF003"
+ D 0.000000 0.000000
+ Y4 0 0.187500 4 2
+ 1.687500 1.406250 0
+ 0.750000 1.718750 0
+ 0.093750 1.031250 0
+ 0.562500 0.093750 0
+ END$SEGS
+DRAW 544 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 4105019 0.000000 113 0
+ 198.879934 78.548246 2
+ 200.379934 78.923246 0
+ 202.968750 79.333333 0
+ 202.629934 80.048246 2
+ 201.629934 81.798246 0
+ 202.942434 81.485746 0
+ 205.254934 81.298246 2
+ 205.754934 81.985746 2
+ 206.879934 82.610746 2
+ 208.442434 86.048246 2
+ 211.504934 85.985746 0
+ 214.129934 86.548246 2
+ 216.067434 89.235746 0
+ 216.317434 90.298246 0
+ 214.817434 89.423246 2
+ 214.067434 88.048246 2
+ 211.442434 87.298246 2
+ 206.504934 87.173246 2
+ 205.879934 83.860746 2
+ 202.192434 84.048246 2
+ 198.046875 81.434485 0
+ 195.796875 79.559485 2
+ 195.879934 75.360746 2
+ 193.004934 75.173246 2
+ 191.458134 73.461349 2
+ 190.520634 72.773849 2
+ 189.629934 72.360746 2
+ 188.458134 71.836349 2
+ 188.333134 70.461349 2
+ 187.583134 69.961349 0
+ 190.833134 69.836349 2
+ 187.504934 68.798246 0
+ 187.395634 67.836349 0
+ 187.317434 66.298246 0
+ 189.004934 65.985746 2
+ 193.129934 65.360746 0
+ 192.895634 64.086349 0
+ 191.833134 63.961349 0
+ 191.442434 63.735746 2
+ 194.880009 63.211349 0
+ 196.692509 63.023849 2
+ 198.192509 62.273849 2
+ 197.317509 61.336349 2
+ 193.567509 61.648849 0
+ 196.755009 60.961349 0
+ 199.505009 61.023849 0
+ 199.505009 61.023849 2
+ 202.505009 61.836349 2
+ 203.692509 63.773849 2
+ 205.192509 64.586349 2
+ 208.504934 65.423246 2
+ 209.672420 63.164474 0
+ 209.817509 61.773849 2
+ 209.067509 60.586349 2
+ 208.505009 60.211349 0
+ 206.442434 58.985746 2
+ 205.630009 58.086349 0
+ 205.129934 57.173246 2
+ 204.422420 55.664474 0
+ 205.067509 54.898849 2
+ 206.817509 55.086349 0
+ 209.645634 56.633224 2
+ 212.797420 56.164474 0
+ 210.645634 56.883224 0
+ 206.895634 56.008224 2
+ 205.880009 56.773849 2
+ 206.005009 57.836349 2
+ 206.380009 58.523849 0
+ 207.505009 59.586349 0
+ 210.567509 61.336349 0
+ 212.672420 64.664474 2
+ 214.422420 66.414474 2
+ 214.422420 69.664474 0
+ 212.895634 66.883224 0
+ 210.692509 62.773849 2
+ 208.145634 66.883224 2
+ 206.255009 65.461349 2
+ 203.270634 67.258224 2
+ 201.270634 66.883224 2
+ 199.672420 67.664474 2
+ 203.422420 68.789474 0
+ 206.145634 68.133224 2
+ 208.520634 71.258224 2
+ 205.926884 71.268640 2
+ 202.426884 70.456140 2
+ 203.171875 71.809485 2
+ 203.796875 72.934485 0
+ 205.921875 74.684485 2
+ 205.817434 75.610746 2
+ 204.421875 75.934485 0
+ 203.296875 75.434485 0
+ 202.629934 73.860746 2
+ 202.067434 72.798246 2
+ 200.879934 72.173246 2
+ 198.942434 70.360746 0
+ 195.254934 69.048246 2
+ 197.942434 71.173246 0
+ 198.317434 72.610746 0
+ 196.567434 72.048246 2
+ 199.218750 74.083333 0
+ 202.781250 78.458333 2
+ 202.192434 80.423246 2
+ 198.692434 79.110746 0
+ 198.942434 78.048246 2
+ 197.192434 75.548246 2
+ 196.504934 73.985746 2
+ 195.442434 73.173246 2
+ 195.343750 73.208333 0
+ 195.156250 72.958333 0
+ 194.817434 72.485746 2
+ 193.817434 72.735746 0
+ 194.629934 73.735746 2
+ 195.692434 74.173246 0
+ END$SEGS
+DRAW 545 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 10187826 0.000000 44 0
+ 183.083134 70.148849 0
+ 183.520634 69.461349 2
+ 187.895634 67.836349 2
+ 190.833134 67.336349 0
+ 193.958134 67.023849 0
+ 191.395634 66.648849 0
+ 187.395634 66.336349 2
+ 184.549892 67.478763 0
+ 182.807698 67.874335 0
+ 181.655726 67.970529 0
+ 180.736629 67.329658 0
+ 179.973684 65.483553 0
+ 180.473684 62.921053 2
+ 179.348684 61.858553 0
+ 178.348684 61.421053 0
+ 177.661184 60.233553 0
+ 176.765457 59.550131 2
+ 176.348684 57.296053 0
+ 173.375000 53.125000 0
+ 174.536184 56.108553 0
+ 174.411259 59.372807 0
+ 173.973759 60.622807 2
+ 173.411184 61.671053 0
+ 176.161184 63.546053 0
+ 177.473684 64.671053 2
+ 177.380009 66.060307 0
+ 177.411259 68.247807 2
+ 176.692509 68.685307 0
+ 177.286259 70.185307 0
+ 179.348759 70.935307 0
+ 179.583134 71.471765 2
+ 179.598684 72.546053 2
+ 184.129934 74.110746 0
+ 187.796875 74.103344 0
+ 190.296875 74.353344 0
+ 191.359375 73.915844 0
+ 187.192434 72.610746 2
+ 184.958134 71.836349 2
+ 183.895634 71.211349 0
+ 183.333134 71.773849 0
+ 183.018038 71.788817 2
+ 182.848684 70.421053 2
+ 184.065265 69.445704 0
+ 184.065265 69.445704 0
+ END$SEGS
+STRUCTURE 546 7 0 0 0 N 2 192.430755 66.134929 0 143.187831 "custom TUNNEL PORTAL CF003"
+ D 0.000000 0.000000
+ Y4 0 0.187500 4 2
+ 1.687500 1.406250 0
+ 0.750000 1.718750 0
+ 0.093750 1.031250 0
+ 0.562500 0.093750 0
+ END$SEGS
+DRAW 547 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 6183507 0.000000 32 0
+ 186.442509 67.966557 0
+ 186.999827 66.938164 2
+ 184.624448 67.718174 0
+ 182.739309 68.263432 0
+ 181.614309 68.513432 2
+ 180.532930 67.517003 2
+ 179.946531 65.623298 0
+ 179.865602 62.682292 2
+ 178.115602 62.432292 0
+ 177.306551 61.493988 0
+ 176.553102 59.682292 0
+ 175.428102 57.994792 0
+ 174.490602 55.557292 0
+ 174.615602 58.494792 0
+ 173.928102 60.744792 0
+ 176.334695 62.746638 0
+ 177.990602 64.244792 0
+ 178.682078 65.429902 0
+ 179.226786 66.971122 0
+ 179.365602 67.369792 0
+ 179.553102 70.619792 0
+ 180.115602 71.557292 0
+ 180.053102 72.307292 2
+ 182.359375 73.103344 0
+ 184.859375 73.728344 2
+ 186.546875 73.540844 0
+ 187.359375 73.165844 0
+ 184.395634 72.273849 2
+ 183.395634 71.586349 0
+ 182.458134 70.836349 2
+ 182.770634 70.023849 0
+ 184.145634 68.961349 0
+ END$SEGS
+DRAW 548 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 28 0
+ 193.270634 66.898849 2
+ 189.958134 67.648849 0
+ 192.067434 67.485746 2
+ 194.129934 68.110746 2
+ 195.754934 68.360746 2
+ 197.067434 69.235746 0
+ 198.567434 69.548246 2
+ 199.458134 69.836349 0
+ 200.770634 70.523849 2
+ 200.942434 71.360746 2
+ 202.833134 73.023849 0
+ 201.895634 70.461349 0
+ 200.442434 69.173246 0
+ 200.442434 69.173246 0
+ 200.442434 69.173246 0
+ 199.004934 68.360746 2
+ 198.129934 67.985746 0
+ 197.067434 67.360746 0
+ 197.067434 67.360746 0
+ 197.067434 67.360746 2
+ 197.067434 67.360746 0
+ 197.067434 67.360746 0
+ 195.692434 66.423246 2
+ 194.442434 66.360746 0
+ 193.504934 66.298246 2
+ 193.504934 66.298246 0
+ 191.317434 66.360746 2
+ 189.958134 66.398849 0
+ END$SEGS
+DRAW 549 13 0 0 0 0.000000 0.000000 0 0.000000
+ F4 3249396 0.000000 124 0
+ 213.839286 86.703125 2
+ 211.151786 86.015625 2
+ 209.276786 86.390625 2
+ 207.589286 85.640625 2
+ 206.214286 82.703125 2
+ 205.609375 82.369792 0
+ 204.964286 81.953125 2
+ 204.421875 82.182292 0
+ 203.089286 81.890625 0
+ 202.526786 82.078125 2
+ 201.296875 82.026042 2
+ 200.109375 81.463542 2
+ 198.484375 81.276042 2
+ 197.089286 79.328125 2
+ 195.589286 75.453125 2
+ 193.214286 75.765625 2
+ 190.464286 73.015625 2
+ 188.151786 72.953125 0
+ 187.026786 73.140625 2
+ 182.678102 72.307292 2
+ 181.303102 69.932292 0
+ 182.428102 69.869792 0
+ 183.740602 68.994792 0
+ 186.865602 67.682292 2
+ 191.053102 67.119792 0
+ 193.740602 67.244792 0
+ 196.740602 68.307292 2
+ 197.740602 69.119792 2
+ 198.615602 68.932292 0
+ 198.615602 68.932292 0
+ 198.615602 68.932292 0
+ 201.615602 70.744792 2
+ 201.115602 72.057292 2
+ 202.115602 72.432292 0
+ 202.115602 72.432292 0
+ 203.053102 73.619792 0
+ 204.115602 75.807292 2
+ 205.740602 75.307292 0
+ 207.240602 75.932292 2
+ 208.240602 76.807292 2
+ 209.115602 76.807292 2
+ 209.490602 77.432292 2
+ 210.490602 78.244792 2
+ 211.178102 79.807292 2
+ 210.865602 82.432292 0
+ 211.365602 80.807292 0
+ 211.365602 78.932292 2
+ 210.428102 77.807292 2
+ 209.115602 76.432292 2
+ 207.865602 76.057292 0
+ 206.365602 74.807292 2
+ 204.303102 75.182292 2
+ 203.240602 73.182292 0
+ 201.740602 71.557292 0
+ 201.303102 69.807292 2
+ 197.990602 68.619792 0
+ 195.428102 67.057292 2
+ 192.865602 66.869792 0
+ 188.740602 66.682292 2
+ 184.740602 67.994792 0
+ 181.990602 69.182292 0
+ 181.365602 68.869792 0
+ 180.276786 67.703125 0
+ 179.651786 65.703125 0
+ 179.464286 63.265625 2
+ 178.214286 63.078125 0
+ 177.089286 61.703125 0
+ 174.464286 58.351151 0
+ 174.214286 59.976151 0
+ 176.526786 62.515625 0
+ 178.964286 64.328125 0
+ 178.964286 65.328125 2
+ 179.526786 66.890625 0
+ 179.526786 66.890625 2
+ 180.526786 71.140625 2
+ 183.464286 73.140625 0
+ 187.839286 73.890625 0
+ 190.776786 74.203125 2
+ 190.776786 77.453125 0
+ 190.776786 77.453125 0
+ 190.776786 77.453125 0
+ 192.089286 78.578125 2
+ 192.589286 80.203125 2
+ 193.776786 80.265625 2
+ 194.901786 80.953125 2
+ 195.214286 84.640625 2
+ 196.339286 86.703125 2
+ 196.339286 86.703125 0
+ 196.339286 86.703125 0
+ 196.339286 86.703125 0
+ 196.339286 86.703125 0
+ 198.089286 88.078125 0
+ 198.089286 88.078125 0
+ 198.089286 88.078125 2
+ 199.776786 89.265625 2
+ 200.339286 91.015625 2
+ 211.464286 92.765625 0
+ 208.151786 91.578125 2
+ 206.339286 92.078125 2
+ 204.776786 91.015625 2
+ 200.276786 90.140625 2
+ 199.651786 88.078125 2
+ 196.026786 85.828125 2
+ 195.464286 84.078125 2
+ 195.089286 82.078125 0
+ 194.964286 80.203125 2
+ 192.964286 78.890625 2
+ 190.964286 76.640625 2
+ 191.339286 74.515625 0
+ 191.339286 74.515625 0
+ 191.339286 74.515625 0
+ 191.339286 74.515625 2
+ 192.089286 76.078125 2
+ 195.339286 76.078125 2
+ 197.296875 81.401042 2
+ 200.359375 82.088542 2
+ 201.046875 82.401042 2
+ 203.651786 82.828125 2
+ 205.464286 83.515625 2
+ 207.089286 86.515625 2
+ 211.401786 86.703125 2
+ 214.026786 87.640625 2
+ 214.776786 88.890625 2
+ 216.401786 90.203125 0
+ END$SEGS
+DRAW 550 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.026667 3 0
+ 176.859375 78.353344 2
+ 178.609375 77.790844 0
+ 179.276786 76.413651 2
+ END$SEGS
+DRAW 551 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 13534340 0.000000 50 0
+ 189.020634 61.586349 0
+ 189.083134 56.711349 2
+ 190.458134 55.211349 2
+ 192.812500 54.483553 2
+ 197.000000 54.159722 1
+ 201.812500 54.020833 2
+ 202.937500 57.395833 2
+ 206.062500 57.145833 2
+ 208.062500 57.201389 2
+ 209.437500 53.451389 2
+ 206.062500 52.395833 2
+ 204.687500 50.534722 0
+ 202.687500 47.284722 2
+ 206.562500 45.909722 2
+ 209.687500 47.909722 2
+ 211.937500 47.784722 2
+ 214.437500 45.826389 2
+ 216.125000 46.354167 0
+ 216.115944 47.198543 0
+ 214.562500 47.020833 2
+ 213.062500 48.395833 0
+ 210.437500 49.145833 2
+ 207.562500 48.020833 0
+ 206.812500 47.395833 2
+ 204.187500 47.520833 2
+ 205.812500 50.520833 2
+ 207.062500 51.722222 2
+ 208.375000 52.097222 0
+ 209.500000 52.972222 0
+ 212.562500 56.645833 2
+ 213.562500 58.270833 0
+ 213.937500 59.645833 0
+ 215.125000 64.979167 2
+ 214.390625 65.665625 2
+ 214.078125 62.665625 0
+ 213.687500 61.145833 0
+ 213.187500 59.270833 0
+ 212.312500 57.395833 0
+ 209.937500 54.534722 2
+ 209.562500 56.270833 0
+ 208.187500 58.201389 2
+ 206.000000 58.034722 0
+ 203.937500 58.284722 2
+ 202.062500 57.409722 2
+ 200.937500 55.201389 2
+ 198.687500 54.972222 1
+ 195.750000 55.222222 1
+ 193.000000 55.409722 2
+ 190.270634 56.211349 2
+ 190.208134 61.648849 0
+ END$SEGS
+DRAW 552 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 13534340 0.000000 30 0
+ 178.030780 77.591557 0
+ 179.738369 79.430099 0
+ 181.738369 79.367599 2
+ 181.675869 78.305099 0
+ 182.488369 77.867599 2
+ 182.175869 79.805099 2
+ 180.238369 79.992599 2
+ 182.155780 81.529057 0
+ 182.155780 81.529057 0
+ 182.155780 81.529057 0
+ 184.530780 82.716557 0
+ 186.125000 82.722222 2
+ 187.780780 81.966557 0
+ 189.781250 79.937500 2
+ 190.906250 82.812500 2
+ 189.171875 83.901042 2
+ 187.405780 83.341557 0
+ 185.530780 83.404057 0
+ 183.359375 82.901042 2
+ 180.734375 81.338542 0
+ 177.780780 78.466557 0
+ 177.905780 79.216557 0
+ 178.468280 79.904057 2
+ 178.921875 81.713542 2
+ 177.593280 81.966557 2
+ 177.405780 81.341557 0
+ 177.405780 81.341557 0
+ 177.280780 81.029057 2
+ 176.906250 78.437500 0
+ 176.906250 78.437500 0
+ END$SEGS
+DRAW 553 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 86 0
+ 176.031250 78.708333 2
+ 173.968750 78.645833 0
+ 172.859931 78.183541 0
+ 170.812500 76.847222 2
+ 169.500000 75.222222 2
+ 167.937500 74.284722 2
+ 166.312500 74.159722 2
+ 164.603125 74.652083 2
+ 162.228125 75.089583 0
+ 161.728125 73.964583 0
+ 164.915625 73.527083 0
+ 166.687500 73.034722 2
+ 168.625000 73.222222 2
+ 170.531250 74.895833 0
+ 171.843750 76.083333 0
+ 173.312500 77.159722 0
+ 175.062500 77.597222 0
+ 175.062500 77.597222 2
+ 177.375000 77.208333 0
+ 177.375000 77.208333 2
+ 178.625000 75.722222 2
+ 178.875000 73.847222 2
+ 183.937500 69.608553 2
+ 184.875470 69.210526 2
+ 186.625470 68.773026 2
+ 189.281250 69.270833 2
+ 191.750000 69.222222 2
+ 193.875000 70.784722 2
+ 195.312500 73.222222 2
+ 195.312500 73.222222 0
+ 196.562500 73.722222 2
+ 198.254934 76.673246 2
+ 200.567434 77.360746 2
+ 200.567434 77.360746 0
+ 202.067434 78.735746 2
+ 202.004934 80.860746 2
+ 197.254934 83.673246 2
+ 198.192434 85.235746 2
+ 201.004934 83.235746 2
+ 203.067434 80.423246 2
+ 204.004934 79.610746 2
+ 205.379934 78.735746 2
+ 207.062500 78.909722 2
+ 209.750000 80.597222 2
+ 209.250000 85.222222 2
+ 210.812500 83.659722 2
+ 212.000000 82.222222 2
+ 214.937500 79.972222 2
+ 215.312500 82.097222 2
+ 215.312500 82.097222 2
+ 215.312500 82.097222 2
+ 214.500000 85.097222 2
+ 216.187500 84.409722 0
+ 216.187500 84.409722 0
+ 216.187500 85.659722 0
+ 214.500000 86.159722 2
+ 214.500000 86.159722 0
+ 213.562500 85.472222 2
+ 214.937500 81.097222 2
+ 212.500000 82.909722 2
+ 211.312500 84.597222 2
+ 210.000000 85.722222 2
+ 208.500000 85.159722 2
+ 208.781250 80.958333 2
+ 206.312500 79.472222 2
+ 204.187500 80.722222 2
+ 201.879934 84.048246 2
+ 197.937500 86.784722 2
+ 195.937500 83.784722 2
+ 197.129934 82.485746 2
+ 200.692434 80.235746 2
+ 200.379934 78.735746 2
+ 198.625000 78.159722 0
+ 198.625000 78.159722 2
+ 197.125000 76.847222 2
+ 195.875000 74.409722 2
+ 194.791667 74.208333 2
+ 192.526786 70.538651 2
+ 188.687500 70.233553 2
+ 186.812500 69.858553 2
+ 184.812500 70.483553 2
+ 184.812500 70.483553 0
+ 180.031250 74.458333 2
+ 179.781250 75.583333 2
+ 179.781250 75.583333 0
+ 178.531250 77.958333 2
+ END$SEGS
+DRAW 554 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 655617 0.160000 151.114309 72.950932 0 152.239309 74.700932 0
+ END$SEGS
+DRAW 555 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 655617 0.160000 150.051809 73.013432 0 151.176809 74.763432 0
+ END$SEGS
+CORNU 556 0 0 0 0 N 2 132.153222 83.838179 87.244904 0.000000 0.000000 2.500000 119.248177 83.028716 267.573648 0.000000 0.000000 2.500000
+ T4 104 132.153222 83.838179 87.244904 9 0.000000 0.000000 15.300000 15.300000 1 1 0 15.150000
+ T4 765 119.248177 83.028716 267.573648 9 0.000000 0.000000 15.000000 15.000000 1 1 0 15.150000
+ W3 0 0.000000 132.153222 83.838179 130.000501 83.734584 127.850040 83.589574 125.701362 83.421874
+ SUBSEGS
+ C 0 0.000000 -216.931318 142.894143 -132.827068 355.454285 1.707669
+ SUBSEND
+ W3 0 0.000000 125.701362 83.421874 123.552684 83.254174 121.401457 83.119957 119.248177 83.028716
+ SUBSEGS
+ C 0 0.000000 181.911348 111.414144 264.771299 175.495381 2.036406
+ SUBSEND
+ END$SEGS
+CORNU 557 0 0 0 0 N 2 164.725947 82.267326 296.369204 21.675150 155.098849 62.847461 172.789286 75.833599 136.348117 0.000000 0.000000 7.625000
+ T4 974 164.725947 82.267326 296.369204 0 0.0 0.0 0.0 0.0 0 0 0 15.475370
+ T4 393 172.789286 75.833599 136.348117 0 0.0 0.0 0.0 0.0 0 0 0 15.475370
+ W3 0 0.000000 164.725947 82.267326 166.275405 81.499206 167.726345 80.537279 169.057532 79.433300
+ SUBSEGS
+ C 0 0.000000 22.372937 154.724843 62.254175 26.552518 13.286010
+ SUBSEND
+ W3 0 0.000000 169.057532 79.433300 170.388720 78.329320 171.595523 77.084903 172.789286 75.833599
+ SUBSEGS
+ C 0 0.000000 36.622434 145.414535 51.465257 40.209761 6.086677
+ S 0 0.000000 171.889779 76.768699 172.789286 75.833599
+ SUBSEND
+ END$SEGS
+CORNU 558 0 0 0 0 N 2 170.977416 89.526309 80.965646 0.000000 0.000000 2.500000 164.181743 88.677083 263.270964 0.000000 0.000000 2.500000
+ T4 215 170.977416 89.526309 80.965646 0 0.0 0.0 0.0 0.0 0 0 0 15.349704
+ T4 559 164.181743 88.677083 263.270964 0 0.0 0.0 0.0 0.0 0 0 0 15.349704
+ W3 0 0.000000 170.977416 89.526309 169.850001 89.347051 168.719425 89.187418 167.585095 89.058993
+ SUBSEGS
+ C 0 0.000000 76.202725 158.884626 164.763399 170.868996 2.574944
+ SUBSEND
+ W3 0 0.000000 167.585095 89.058993 166.450766 88.930567 165.315456 88.810846 164.181743 88.677083
+ SUBSEGS
+ S 0 0.000000 167.585095 89.058993 164.181743 88.677083
+ SUBSEND
+ END$SEGS
+CORNU 559 0 0 0 0 N 2 164.181743 88.677083 83.270964 0.000000 0.000000 2.500000 155.894123 86.866030 254.173410 0.000000 0.000000 2.500000
+ T4 558 164.181743 88.677083 83.270964 0 0.0 0.0 0.0 0.0 0 0 0 15.349704
+ T4 973 155.894123 86.866030 254.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.349704
+ W3 0 0.000000 164.181743 88.677083 162.775364 88.511149 161.372616 88.302016 159.994142 87.977601
+ SUBSEGS
+ C 0 0.000000 -37.369826 168.234821 51.527703 347.260604 6.512930
+ SUBSEND
+ W3 0 0.000000 159.994142 87.977601 158.615668 87.653186 157.256573 87.252248 155.894123 86.866030
+ SUBSEGS
+ C 0 0.000000 -94.232888 182.595559 -3.504709 343.539407 2.583119
+ SUBSEND
+ END$SEGS
+CORNU 560 0 128 0 0 N 2 160.795004 85.977793 282.173410 0.000000 0.000000 2.500000 173.166977 76.193922 150.348117 0.000000 0.000000 2.500000
+ T4 105 160.795004 85.977793 282.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.469041
+ T4 393 173.166977 76.193922 150.348117 9 0.931707 1.016604 15.532111 15.532111 1 1 0 15.469041
+ W3 0 0.000000 160.795004 85.977793 162.137201 85.688252 163.481829 85.379027 164.756298 84.868093
+ SUBSEGS
+ C 0 0.000000 30.967169 154.666833 55.623040 11.413746 5.717222
+ C 0 0.000000 14.927190 159.221928 71.004769 17.813407 3.948945
+ SUBSEND
+ W3 0 0.000000 164.756298 84.868093 166.030768 84.357159 167.227527 83.650084 168.278215 82.766127
+ SUBSEGS
+ C 0 0.000000 12.972177 159.952754 72.818058 21.733868 18.191832
+ SUBSEND
+ W3 0 0.000000 168.278215 82.766127 169.328904 81.882170 170.230733 80.831131 171.018963 79.706844
+ SUBSEGS
+ C 0 0.000000 15.870220 157.927550 70.735848 40.708194 14.870602
+ SUBSEND
+ W3 0 0.000000 171.018963 79.706844 171.807193 78.582558 172.487679 77.387186 173.166977 76.193922
+ SUBSEGS
+ C 0 0.000000 43.862160 134.713251 55.094157 55.865525 5.380663
+ SUBSEND
+ END$SEGS
+DRAW 561 7 0 0 0 146.359849 51.358333 0 0.000000
+ L3 984325 0.041667 2.881222 5.042983 0 1.006222 5.042983 0
+ END$SEGS
+DRAW 562 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 6573132 0.000000 23 0
+ 216.181818 90.312500 0
+ 214.306818 89.312500 0
+ 212.681818 88.000000 2
+ 206.931818 87.500000 2
+ 205.369318 85.687500 2
+ 203.931818 85.312500 0
+ 203.306818 86.562500 2
+ 202.994318 87.562500 2
+ 200.181818 87.437500 0
+ 210.306818 90.750000 2
+ 211.744318 91.875000 0
+ 214.431818 93.375000 0
+ 210.931818 93.062500 2
+ 209.994318 93.437500 2
+ 206.681818 93.000000 2
+ 202.672420 93.164474 2
+ 198.047420 90.539474 2
+ 197.922420 92.664474 0
+ 198.172420 93.414474 2
+ 197.672420 95.039474 0
+ 196.119318 96.812500 2
+ 193.426884 98.466557 0
+ 216.244318 98.437500 0
+ END$SEGS
+DRAW 563 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 6573132 0.000000 26 0
+ 216.098759 88.680099 0
+ 215.176884 87.591557 2
+ 214.676884 86.872807 2
+ 213.770634 86.404057 2
+ 212.833134 85.466557 2
+ 212.301884 84.372807 2
+ 210.801884 85.654057 2
+ 208.770634 86.216557 2
+ 207.395634 82.216557 2
+ 206.145634 81.591557 2
+ 205.458134 81.216557 2
+ 204.458134 81.341557 2
+ 205.520634 80.497807 2
+ 207.208134 80.029057 2
+ 208.645634 81.529057 2
+ 208.426884 84.216557 0
+ 208.551884 84.966557 0
+ 209.083134 85.404057 2
+ 209.458134 85.591557 0
+ 210.051884 85.591557 0
+ 210.958134 85.029057 2
+ 212.708134 82.935307 0
+ 214.833134 81.247807 2
+ 213.364384 85.654057 2
+ 214.770634 86.216557 2
+ 216.020634 85.716557 0
+ END$SEGS
+DRAW 564 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 6573132 0.000000 49 0
+ 216.130009 84.305099 0
+ 214.567509 85.117599 2
+ 215.380009 82.055099 0
+ 215.255009 79.742599 2
+ 212.630009 81.555099 2
+ 209.067509 85.305099 2
+ 209.880009 81.492599 2
+ 208.489384 79.206140 2
+ 206.005009 78.617599 2
+ 204.317509 79.117599 0
+ 204.567509 78.055099 0
+ 205.755009 77.430099 0
+ 207.067509 76.367599 2
+ 208.067509 77.742599 2
+ 209.567509 77.992599 2
+ 211.192509 78.867599 2
+ 210.942509 82.805099 0
+ 211.926884 79.768640 2
+ 210.676884 77.706140 2
+ 209.755009 76.617599 0
+ 208.317509 75.367599 2
+ 205.692509 73.367599 2
+ 210.005009 72.930099 2
+ 208.051884 72.206140 2
+ 211.239384 71.581140 0
+ 210.255009 70.430099 2
+ 208.130009 70.117599 2
+ 206.567509 66.211349 2
+ 205.817509 65.648849 0
+ 207.380009 65.773849 2
+ 208.255009 65.523849 2
+ 209.567509 64.023849 2
+ 209.942509 62.023849 2
+ 212.380009 64.898849 2
+ 213.380009 67.523849 2
+ 212.817509 67.242599 2
+ 213.317509 68.492599 2
+ 212.067509 70.992599 0
+ 212.880009 73.117599 2
+ 214.317509 73.242599 2
+ 213.864384 74.018640 2
+ 215.317509 71.805099 2
+ 215.380009 69.617599 2
+ 214.755009 68.430099 0
+ 213.942509 63.242599 2
+ 211.630009 60.805099 2
+ 212.005009 57.930099 2
+ 214.880009 54.742599 2
+ 216.067509 54.617599 0
+ END$SEGS
+DRAW 565 6 0 0 0 177.745194 -120.098441 0 0.000000
+ F4 5061178 0.055556 4 0
+ -1.544886 189.183838 0
+ -1.083937 190.479279 0
+ 5.884018 187.999910 0
+ 5.423070 186.704473 0
+ END$SEGS
+CORNU 566 0 0 0 0 N 2 177.908438 69.240835 108.545596 220.198245 107.872352 -139.522701 176.116005 69.832077 287.757116 108.522242 143.018612 -33.519941
+ T4 568 177.908438 69.240835 108.545596 9 0.000000 0.000000 13.100000 13.100000 1 1 0 13.129438
+ T4 537 176.116005 69.832077 287.757116 0 0.0 0.0 0.0 0.0 0 0 0 13.129438
+ W3 0 0.000000 177.908438 69.240835 177.311961 69.440941 176.715179 69.640198 176.116005 69.832077
+ SUBSEGS
+ S 0 0.000000 177.908438 69.240835 176.116005 69.832077
+ SUBSEND
+ END$SEGS
+CORNU 567 0 0 0 0 N 2 183.015960 67.454086 109.761115 100.643675 217.043514 162.170899 182.156250 67.767361 289.715509 220.198245 107.872352 -139.522701
+ T4 577 183.015960 67.454086 109.761115 0 0.0 0.0 0.0 0.0 0 0 0 13.098010
+ T4 568 182.156250 67.767361 289.715509 0 0.0 0.0 0.0 0.0 0 0 0 13.098010
+ W3 0 0.000000 183.015960 67.454086 182.728917 67.557208 182.443375 67.664468 182.156250 67.767361
+ SUBSEGS
+ S 0 0.000000 183.015960 67.454086 182.156250 67.767361
+ SUBSEND
+ END$SEGS
+CORNU 568 0 0 0 0 N 2 182.156250 67.767361 109.715509 220.198245 107.872352 -139.522701 177.908438 69.240835 288.545596 220.198245 107.872352 -139.522701
+ T4 567 182.156250 67.767361 109.715509 0 0.0 0.0 0.0 0.0 0 0 0 13.099097
+ T4 566 177.908438 69.240835 288.545596 9 0.000000 0.000000 13.100000 13.100000 1 1 0 13.099097
+ W3 0 0.000000 182.156250 67.767361 180.745376 68.272958 179.329341 68.764150 177.908438 69.240835
+ SUBSEGS
+ C 0 0.000000 -220.200158 107.871725 -139.524508 18.545601 1.169903
+ SUBSEND
+ END$SEGS
+TURNOUT 569 0 0 0 0 N 2 181.850970 66.190593 0 47.890949 "Peco-80 Medium Right SL-1738/395"
+ T4 572 181.850970 66.190593 317.890949 9 2.122714 0.394933 15.500000 15.500000 1 1 0 15.497812
+ T4 98 185.116571 62.577628 137.890949 9 -2.330387 -0.242102 15.495623 15.495623 1 1 0 15.497812
+ T4 247 184.729315 62.227604 151.890949 0 0.0 0.0 0.0 0.0 0 0 0 15.497812
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.973080 0.000000
+ S 0 0.000000 0.973080 0.000000 4.870079 0.000000
+ C 0 0.000000 14.687496 0.973021 -14.687496 0.000076 14.000152
+ S 0 0.000000 4.526342 -0.436290 4.870079 -0.522000
+ END$SEGS
+DRAW 570 6 0 0 0 93.577173 -99.344839 0 0.000000
+ F4 5061178 0.055556 4 0
+ 83.382848 169.824069 0
+ 84.375359 170.775670 0
+ 88.957238 165.996812 0
+ 87.964724 165.045209 0
+ END$SEGS
+CORNU 571 0 0 0 0 N 2 176.150980 72.309867 316.348117 0.000000 0.000000 7.625000 180.914137 67.219249 137.546433 310.575006 -48.235741 -142.416548
+ T4 393 176.150980 72.309867 316.348117 9 1.447704 0.713159 15.506461 15.506461 1 1 0 15.503768
+ T4 572 180.914137 67.219249 137.546433 0 0.0 0.0 0.0 0.0 0 0 0 15.503768
+ W3 0 0.000000 176.150980 72.309867 177.755103 70.628423 179.345529 68.933872 180.914137 67.219249
+ SUBSEGS
+ C 0 0.000000 333.341280 -64.860697 -157.972092 46.304200 1.198309
+ SUBSEND
+ END$SEGS
+CORNU 572 0 0 0 0 N 2 180.914137 67.219249 317.546433 310.575006 -48.235741 -142.416548 181.850970 66.190593 137.890949 0.000000 0.000000 7.625000
+ T4 571 180.914137 67.219249 317.546433 0 0.0 0.0 0.0 0.0 0 0 0 15.500537
+ T4 569 181.850970 66.190593 137.890949 9 2.122714 0.394933 15.500000 15.500000 1 1 0 15.500537
+ W3 0 0.000000 180.914137 67.219249 181.227183 66.877063 181.539988 66.534655 181.850970 66.190593
+ SUBSEGS
+ S 0 0.000000 180.914137 67.219249 181.850970 66.190593
+ SUBSEND
+ END$SEGS
+DRAW 573 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 5061178 0.000000 12 0
+ 186.134868 55.145833 1
+ 182.884868 56.770833 1
+ 179.697368 58.083333 1
+ 176.384868 59.270833 2
+ 173.259868 60.270833 0
+ 174.009868 61.520833 0
+ 177.009868 60.520833 2
+ 180.009868 59.333333 2
+ 183.259868 57.958333 2
+ 186.572368 56.270833 2
+ 189.509868 55.020833 0
+ 188.947368 53.833333 0
+ END$SEGS
+CORNU 574 0 0 0 0 N 2 189.050476 62.135786 113.706439 59.865118 213.119287 116.949330 183.812500 64.569444 295.161818 0.000000 0.000000 7.625000
+ T4 504 189.050476 62.135786 113.706439 0 0.0 0.0 0.0 0.0 0 0 0 19.350354
+ T4 575 183.812500 64.569444 295.161818 9 2.911184 -0.171418 19.350783 19.350783 1 1 0 19.350354
+ W3 0 0.000000 189.050476 62.135786 187.287643 62.909852 185.555104 63.750855 183.812500 64.569444
+ SUBSEGS
+ C 0 0.000000 227.398257 282.240111 269.562060 204.192777 1.455306
+ SUBSEND
+ END$SEGS
+CORNU 575 0 128 0 0 N 2 183.812500 64.569444 115.161818 0.000000 0.000000 7.625000 177.495095 67.257685 290.460003 75.931474 150.952988 -3.883760
+ T4 574 183.812500 64.569444 115.161818 9 2.911184 -0.171418 19.350783 19.350783 1 1 0 19.370055
+ T4 576 177.495095 67.257685 290.460003 9 -0.333911 -1.172159 19.389328 19.389328 1 1 0 19.370055
+ W3 0 0.000000 183.812500 64.569444 181.740435 65.542798 179.639973 66.457454 177.495095 67.257685
+ SUBSEGS
+ C 0 0.000000 -83.694620 147.910483 -11.033695 20.700490 4.701370
+ SUBSEND
+ END$SEGS
+CORNU 576 0 0 0 0 N 2 177.495095 67.257685 110.460003 75.931474 150.952988 -3.883760 170.062500 69.569444 284.877814 82.208574 148.954744 -9.883135
+ T4 575 177.495095 67.257685 110.460003 9 -0.333911 -1.172159 19.389328 19.389328 1 1 0 19.288410
+ T4 507 170.062500 69.569444 284.877814 9 -0.151316 -1.483918 19.187493 19.187493 1 1 0 19.288410
+ W3 0 0.000000 177.495095 67.257685 175.063189 68.165003 172.571131 68.902989 170.062500 69.569444
+ SUBSEGS
+ C 0 0.000000 -79.941954 150.064525 -7.830795 14.486755 5.580997
+ SUBSEND
+ END$SEGS
+CORNU 577 0 0 0 0 N 2 192.912356 64.788309 95.872561 16.614855 194.612324 81.315968 183.015960 67.454086 289.761115 100.643675 217.043514 162.170899
+ E4 192.912356 64.788309 95.872561 9 0.000000 0.000000 13.093700 13.093700 1 1 0 13.095763
+ T4 567 183.015960 67.454086 289.761115 0 0.0 0.0 0.0 0.0 0 0 0 13.095763
+ W3 0 0.000000 192.912356 64.788309 191.209473 64.963461 189.540487 65.381323 187.895965 65.856753
+ SUBSEGS
+ C 0 0.000000 24.970242 195.718340 89.600392 186.452133 8.836626
+ S 0 0.000000 189.134091 65.513867 187.895965 65.856753
+ SUBSEND
+ W3 0 0.000000 187.895965 65.856753 186.251443 66.332183 184.627016 66.875305 183.015960 67.454086
+ SUBSEGS
+ C 0 0.000000 80.922100 210.616645 143.523715 196.306301 3.636217
+ SUBSEND
+ END$SEGS
+DRAW 578 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 655617 0.160000 190.208134 68.273849 0 190.208134 66.086349 0
+ END$SEGS
+DRAW 579 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 655617 0.160000 189.020634 68.305098 0 189.020634 66.117598 0
+ END$SEGS
+DRAW 580 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 655617 0.160000 180.770634 73.836349 0 184.583134 70.711349 0
+ END$SEGS
+DRAW 581 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 655617 0.160000 179.895634 72.961349 0 183.708134 69.836349 0
+ END$SEGS
+DRAW 582 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 6573132 0.000000 19 0
+ 200.880009 56.086349 2
+ 200.005009 57.898849 2
+ 201.192509 58.273849 0
+ 202.192509 59.023849 0
+ 202.005009 60.086349 0
+ 202.005009 60.086349 0
+ 200.692509 60.211349 0
+ 198.630009 60.898849 0
+ 201.005009 61.461349 2
+ 202.942509 62.461349 2
+ 203.817509 64.086349 2
+ 205.505009 64.836349 0
+ 206.755009 64.773849 2
+ 207.567509 64.773849 2
+ 208.317509 64.086349 2
+ 209.380009 61.086349 2
+ 205.942509 60.086349 2
+ 204.630009 58.211349 2
+ 202.255009 56.086349 2
+ END$SEGS
+DRAW 583 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 149.781250 36.450188 0.000000 1 80.000000 "Upper Level base \nelevation = 16"" \nLower Level surface \nelevation = 0""\nLower level surface = 32"" above floor."
+ END$SEGS
+STRUCTURE 584 7 0 0 0 N 2 146.359849 51.358333 0 0.000000 "me elevation key 01"
+ D 0.000000 0.000000
+ F4 6183507 0.000000 4 0
+ 0.000000 1.812500 0
+ 2.875000 1.812500 0
+ 2.875000 0.000000 0
+ 0.000000 0.000000 0
+ F4 10187826 0.000000 4 0
+ 1.104166 2.916667 0
+ 3.979166 2.916667 0
+ 3.979166 1.104167 0
+ 1.104166 1.104167 0
+ F4 11833945 0.000000 4 0
+ 2.208333 4.020834 0
+ 5.083333 4.020834 0
+ 5.083333 2.208334 0
+ 2.208333 2.208334 0
+ F4 13934408 0.000000 4 0
+ 3.260965 5.073465 0
+ 6.135965 5.073465 0
+ 6.135965 3.260965 0
+ 3.260965 3.260965 0
+ F4 5030474 0.000000 4 0
+ 4.313596 6.126097 0
+ 7.188596 6.126097 0
+ 7.188596 4.313597 0
+ 4.313596 4.313597 0
+ F4 4105019 0.000000 4 0
+ 5.366228 7.178728 0
+ 8.241228 7.178728 0
+ 8.241228 5.366228 0
+ 5.366228 5.366228 0
+ F4 4216377 0.000000 4 0
+ 6.794799 8.607299 0
+ 9.669799 8.607299 0
+ 9.669799 6.794799 0
+ 6.794799 6.794799 0
+ F4 6573132 0.000000 4 0
+ 8.473151 9.785871 0
+ 11.348151 9.785871 0
+ 11.348151 7.973371 0
+ 8.473151 7.973371 0
+ END$SEGS
+DRAW 585 7 0 0 0 63.625000 44.966557 0 0.000000
+ F4 6183507 0.000000 4 0
+ 0.000000 1.812500 0
+ 2.875000 1.812500 0
+ 2.875000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 586 7 0 0 0 63.625000 44.966557 0 0.000000
+ F4 10187826 0.000000 4 0
+ 1.104166 2.916667 0
+ 3.979166 2.916667 0
+ 3.979166 1.104167 0
+ 1.104166 1.104167 0
+ END$SEGS
+DRAW 587 7 0 0 0 63.625000 44.966557 0 0.000000
+ F4 11833945 0.000000 4 0
+ 2.208333 4.020834 0
+ 5.083333 4.020834 0
+ 5.083333 2.208334 0
+ 2.208333 2.208334 0
+ END$SEGS
+DRAW 588 7 0 0 0 63.625000 44.966557 0 0.000000
+ F4 13934408 0.000000 4 0
+ 3.260965 5.073465 0
+ 6.135965 5.073465 0
+ 6.135965 3.260965 0
+ 3.260965 3.260965 0
+ END$SEGS
+DRAW 589 7 0 0 0 63.625000 44.966557 0 0.000000
+ F4 5030474 0.000000 4 0
+ 4.313596 6.126097 0
+ 7.188596 6.126097 0
+ 7.188596 4.313597 0
+ 4.313596 4.313597 0
+ END$SEGS
+DRAW 590 7 0 0 0 63.625000 44.966557 0 0.000000
+ F4 4105019 0.000000 4 0
+ 5.366228 7.178728 0
+ 8.241228 7.178728 0
+ 8.241228 5.366228 0
+ 5.366228 5.366228 0
+ END$SEGS
+DRAW 591 7 0 0 0 63.625000 44.966557 0 0.000000
+ F4 6573132 0.000000 4 0
+ 6.794799 8.607299 0
+ 9.669799 8.607299 0
+ 9.669799 6.794799 0
+ 6.794799 6.794799 0
+ END$SEGS
+DRAW 592 7 0 0 0 63.625000 44.966557 0 0.000000
+ F4 6573132 0.000000 4 0
+ 8.473151 9.785871 0
+ 11.348151 9.785871 0
+ 11.348151 7.973371 0
+ 8.473151 7.973371 0
+ END$SEGS
+DRAW 593 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 13290186 0.000000 8 0
+ 127.375000 50.138889 0
+ 126.765625 48.140625 0
+ 126.453125 46.015625 2
+ 126.416667 43.166667 0
+ 125.375000 42.888889 0
+ 124.750000 44.263889 1
+ 124.125000 47.951389 2
+ 124.457883 50.134993 0
+ END$SEGS
+CORNU 594 0 0 0 0 N 2 127.384010 55.031464 10.097745 35.984252 162.810869 48.722417 126.995612 50.075259 181.332044 0.000000 0.000000 6.000000
+ T4 611 127.384010 55.031464 10.097745 9 0.000000 0.000000 15.016000 15.016000 1 1 0 15.015932
+ T4 971 126.995612 50.075259 181.332044 10 0.000000 0.000000 0.0 0.0 1 2 0 15.015932
+ W3 0 0.000000 127.384010 55.031464 127.238554 54.214692 127.134843 53.390390 127.082028 52.562450
+ SUBSEGS
+ C 0 0.000000 -22.119853 149.154522 51.115765 273.749941 6.446402
+ SUBSEND
+ W3 0 0.000000 127.082028 52.562450 127.029213 51.734510 127.014898 50.904658 126.995612 50.075259
+ SUBSEGS
+ C 0 0.000000 -61.524497 188.513638 49.182949 270.831009 2.317796
+ SUBSEND
+ END$SEGS
+STRUCTURE 595 7 0 0 0 N 2 141.522977 75.270606 0 119.158938 "custom TUNNEL PORTAL CF003"
+ D 0.000000 0.000000
+ Y4 0 0.187500 4 2
+ 1.687500 1.406250 0
+ 0.750000 1.718750 0
+ 0.093750 1.031250 0
+ 0.562500 0.093750 0
+ END$SEGS
+STRUCTURE 596 5 0 0 0 N 2 164.362881 89.248194 0 0.000000 "Walthers Nothern Light Powerhouse 933-3214"
+ D 0.000000 0.000000
+ G3 16744703 0.000000 0.534000 4.894317 2.663750 0
+ A3 0 0.000000 0.000000 4.968996 2.545622 0 354.264349 360.000000
+ G3 8220013 0.000000 0.364434 4.894317 2.663750 0
+ F4 16744703 0.000000 4 0
+ 4.104349 3.024106 0
+ 0.000000 2.611858 0
+ 0.262340 0.000000 0
+ 4.366688 0.412248 0
+ A3 0 0.000000 0.125000 0.709867 0.547466 0 0.000000 360.000000
+ A3 0 0.000000 0.125000 3.819222 0.859775 0 0.000000 360.000000
+ A3 0 0.000000 0.125000 1.704860 0.647405 0 0.000000 360.000000
+ A3 0 0.000000 0.139754 2.824228 0.759836 0 0.000000 360.000000
+ END$SEGS
+DRAW 597 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 178.770089 9.746985 0.000000 1 160.000000 "LOBOLLY PINES \nFELDSPAR MINE"
+ END$SEGS
+DRAW 598 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 199.270089 11.496985 0.000000 1 160.000000 " LOBOLLY\nQUARTZ MINE"
+ END$SEGS
+STRUCTURE 599 5 0 0 0 N 2 175.154134 79.375127 0 8.074583 "PPP 2 story company house (makes 2) CH-1"
+ D 0.000000 0.000000
+ F4 16744703 0.055556 4 0
+ 0.000000 2.763889 0
+ 1.313000 2.763889 0
+ 1.313000 0.513889 0
+ 0.000000 0.513889 0
+ Y4 16744703 0.055556 4 0
+ 0.097222 0.527778 0
+ 1.222222 0.527778 0
+ 1.222222 0.027778 0
+ 0.097222 0.027778 0
+ END$SEGS
+STRUCTURE 600 5 0 0 0 N 2 172.909525 79.045493 0 349.969572 "PPP 2 story company house (makes 2) CH-1"
+ D 0.000000 0.000000
+ F4 16744703 0.055556 4 0
+ 0.000000 2.763889 0
+ 1.313000 2.763889 0
+ 1.313000 0.513889 0
+ 0.000000 0.513889 0
+ Y4 16744703 0.055556 4 0
+ 0.097222 0.527778 0
+ 1.222222 0.527778 0
+ 1.222222 0.027778 0
+ 0.097222 0.027778 0
+ END$SEGS
+DRAW 601 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 4105019 0.000000 24 0
+ 150.198661 72.602210 0
+ 147.170113 72.523026 0
+ 143.295113 71.273026 0
+ 140.170113 69.835526 0
+ 136.848512 67.876626 0
+ 134.579904 65.859683 0
+ 131.498080 62.399541 0
+ 130.295113 60.023026 2
+ 129.515625 58.515625 2
+ 128.578125 54.703125 2
+ 128.203125 48.765625 0
+ 130.078125 48.390625 0
+ 130.328125 47.703125 0
+ 131.328125 47.453125 0
+ 131.890625 46.890625 0
+ 132.578125 47.453125 0
+ 132.640625 52.765625 0
+ 133.388559 57.540426 0
+ 134.795113 60.585526 0
+ 137.920113 65.460526 0
+ 141.982613 68.835526 0
+ 145.961552 70.592420 0
+ 148.068402 71.211120 0
+ 149.940236 71.268922 0
+ END$SEGS
+DRAW 602 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 1340433 0.000000 19 0
+ 150.045000 72.460526 0
+ 147.045113 72.148026 2
+ 143.357613 71.085526 2
+ 140.170113 69.335526 2
+ 136.920113 67.773026 2
+ 134.670113 65.773026 2
+ 131.607613 62.335526 2
+ 129.703125 57.390625 2
+ 129.015625 53.703125 2
+ 128.515625 49.515625 0
+ 130.578125 49.453125 2
+ 132.578125 49.203125 2
+ 133.295113 57.648026 0
+ 134.545113 61.023026 2
+ 137.795113 65.773026 2
+ 142.232613 69.335526 2
+ 145.920113 70.710526 2
+ 148.045113 71.335526 0
+ 149.843892 71.385080 0
+ END$SEGS
+CORNU 603 0 128 0 0 N 2 148.312500 71.819444 79.446118 23.485158 152.614044 48.731583 145.184616 70.998269 251.409737 23.894552 152.802157 48.350473
+ T4 1358 148.312500 71.819444 79.446118 0 0.0 0.0 0.0 0.0 0 0 0 18.534786
+ T4 604 145.184616 70.998269 251.409737 9 -0.148432 -1.287743 18.492961 18.492961 1 1 0 18.534786
+ W3 0 0.000000 148.312500 71.819444 147.251896 71.621841 146.207179 71.342206 145.184616 70.998269
+ SUBSEGS
+ C 0 0.000000 -23.084308 152.595927 49.136024 341.273317 8.033145
+ SUBSEND
+ END$SEGS
+TURNOUT 604 0 0 0 0 N 2 145.184616 70.998269 0 161.409737 "Peco-80 Curved Left SL-1735/387"
+ T4 603 145.184616 70.998269 71.409737 9 -0.148432 -1.287743 18.492961 18.492961 1 1 0 18.428235
+ T4 605 139.535755 68.542516 241.594737 9 0.000000 0.000000 18.363509 18.363509 1 1 0 18.428235
+ T4 1331 139.785764 68.078312 231.776737 0 0.0 0.0 0.0 0.0 0 0 0 18.428235
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 2 5 6 7
+ C 0 0.000000 -35.984252 0.000000 35.984252 179.681551 0.318449
+ S 0 0.000000 0.199999 0.000556 0.249998 0.000732
+ C 0 0.000000 -35.417758 0.050634 35.417928 170.428493 9.248991
+ C 0 0.000000 -35.984252 0.002864 35.984333 170.185000 0.318449
+ C 0 0.000000 -16.099920 0.301422 16.100570 170.001792 10.181213
+ C 0 0.000000 -19.147709 -0.432227 19.064875 160.817514 8.562309
+ C 0 0.000000 -17.992126 0.002783 17.992594 160.367000 0.636898
+ END$SEGS
+CORNU 605 0 0 0 0 N 2 139.535755 68.542516 61.594737 35.984252 156.653643 36.890592 134.194444 64.347222 220.262802 16.328382 146.654438 53.794279
+ T4 604 139.535755 68.542516 61.594737 9 0.000000 0.000000 18.363509 18.363509 1 1 0 18.239657
+ T4 1095 134.194444 64.347222 220.262802 0 0.0 0.0 0.0 0.0 0 0 0 18.239657
+ W3 0 0.000000 139.535755 68.542516 138.533823 68.000655 137.559985 67.402320 136.659365 66.704921
+ SUBSEGS
+ C 0 0.000000 -20.956765 149.342553 50.021914 322.756235 9.342208
+ SUBSEND
+ W3 0 0.000000 136.659365 66.704921 135.758745 66.007522 134.930619 65.216433 134.194444 64.347222
+ SUBSEGS
+ C 0 0.000000 -16.351410 146.667595 53.774184 310.286735 11.973837
+ SUBSEND
+ END$SEGS
+STRUCTURE 606 7 0 0 0 N 2 148.875000 76.012610 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 607 7 0 0 0 N 2 140.712054 76.242599 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 608 7 0 0 0 N 2 139.837054 76.555099 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 609 7 0 0 0 N 2 141.087054 75.117599 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+DRAW 610 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 13290186 0.000000 18 0
+ 133.750000 50.031250 0
+ 132.156250 49.687500 2
+ 126.625000 51.406250 2
+ 126.468750 53.062500 0
+ 124.781250 53.625000 0
+ 124.625000 53.093750 2
+ 124.031250 53.406250 0
+ 122.640625 51.906250 0
+ 124.258929 51.081140 0
+ 122.321429 50.893640 0
+ 122.633929 50.018640 0
+ 123.640625 50.031250 0
+ 123.640625 49.531250 0
+ 124.383929 49.081140 0
+ 126.890625 48.515625 0
+ 127.140625 49.828125 2
+ 132.031250 48.375000 2
+ 133.375000 48.656250 0
+ END$SEGS
+TURNOUT 611 0 0 0 0 N 2 127.384010 55.031464 0 280.097745 "Peco-80 Curved Right SL-1734/386"
+ T4 594 127.384010 55.031464 190.097745 9 0.000000 0.000000 15.016000 15.016000 1 1 0 14.870102
+ T4 1549 128.978612 60.981052 19.912745 0 0.0 0.0 0.0 0.0 0 0 0 14.870102
+ T4 539 129.474647 60.802338 29.730745 0 0.0 0.0 0.0 0.0 0 0 0 14.870102
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 2 5 6 7
+ C 0 0.000000 35.984252 0.000000 -35.984252 0.000000 0.318449
+ S 0 0.000000 0.199999 -0.000556 0.249998 -0.000732
+ C 0 0.000000 35.417758 0.050634 -35.417928 0.322516 9.248991
+ C 0 0.000000 35.984252 0.002864 -35.984333 9.496551 0.318449
+ C 0 0.000000 16.099920 0.301422 -16.100570 359.816995 10.181213
+ C 0 0.000000 19.147709 -0.432227 -19.064875 10.620177 8.562309
+ C 0 0.000000 17.992126 0.002783 -17.992594 18.996102 0.636898
+ END$SEGS
+DRAW 612 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 4 0
+ 95.312500 50.520833 0
+ 96.156250 50.302083 0
+ 95.718750 49.427083 0
+ 94.843750 49.270833 0
+ END$SEGS
+DRAW 613 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 77 0
+ 91.078125 27.244792 0
+ 92.203125 26.432292 2
+ 94.890625 25.057292 0
+ 94.640625 23.619792 0
+ 96.011161 22.164474 2
+ 98.437500 24.083333 2
+ 100.125000 26.770833 2
+ 102.187500 29.083333 0
+ 104.511161 31.539474 0
+ 107.318182 32.828947 0
+ 106.318182 35.703947 2
+ 108.818182 54.953947 2
+ 114.068182 58.828947 2
+ 112.818182 66.453947 2
+ 117.193182 70.703947 2
+ 118.943182 74.203947 0
+ 119.453125 75.437500 2
+ 120.546875 76.343750 2
+ 121.203125 77.093750 0
+ 122.265625 77.656250 2
+ 121.546875 78.156250 2
+ 121.390625 78.875000 2
+ 121.890625 80.031250 2
+ 120.015625 80.812500 2
+ 117.292681 80.723547 2
+ 116.105181 79.411047 0
+ 113.230181 78.473547 0
+ 106.167681 79.286047 0
+ 106.884375 81.303125 0
+ 106.759375 83.303125 0
+ 114.980181 86.348547 2
+ 119.212500 85.843750 0
+ 120.634375 85.678125 2
+ 124.962500 89.468750 0
+ 126.665625 90.214583 0
+ 128.915625 91.089583 2
+ 131.790625 91.839583 0
+ 134.040625 92.214583 0
+ 136.415625 92.464583 0
+ 138.165625 92.464583 0
+ 139.593750 92.567708 2
+ 141.995089 92.475110 0
+ 150.848684 93.335526 0
+ 154.098684 94.858553 0
+ 158.661184 95.421053 0
+ 161.973684 96.546053 2
+ 157.661184 98.421053 0
+ 154.223684 98.483553 0
+ 148.223684 94.835526 2
+ 141.218750 95.817708 2
+ 132.348684 94.835526 2
+ 130.536184 95.398026 0
+ 128.661184 95.210526 0
+ 127.786184 94.648026 0
+ 127.973684 93.835526 0
+ 131.911184 92.960526 2
+ 123.911184 92.483553 2
+ 117.786184 92.171053 0
+ 118.473684 98.585526 0
+ 93.473684 98.398026 0
+ 13.875000 98.489583 0
+ 10.750000 89.739583 0
+ 29.109375 77.536458 2
+ 34.546875 80.911458 0
+ 63.750000 84.989583 0
+ 77.375000 88.114583 2
+ 89.443182 83.578947 0
+ 95.891373 81.988761 2
+ 98.516373 79.363761 0
+ 101.078873 75.738761 2
+ 102.891373 69.301261 2
+ 98.943997 59.481771 0
+ 96.037747 51.544271 0
+ 92.943182 44.078947 0
+ 91.316964 39.403235 2
+ 90.504464 35.965735 2
+ 90.316964 30.278235 2
+ END$SEGS
+DRAW 614 6 0 0 0 6.083333 5.958333 0 0.000000
+ F4 14592682 0.000000 10 0
+ 84.302084 28.541667 2
+ 84.854167 28.652778 2
+ 87.229167 27.746528 2
+ 87.354167 28.184028 0
+ 88.489584 31.541667 0
+ 89.552084 31.854167 0
+ 87.270834 24.666667 1
+ 86.854167 24.246528 2
+ 84.229167 25.277778 2
+ 84.177084 26.385417 2
+ END$SEGS
+STRUCTURE 615 5 0 0 0 N 0 98.586700 39.065523 0 289.377682 "gloor craft yardmasters office (produce office) 211 B"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.375000 0
+ 2.250000 1.375000 0
+ 2.250000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+TURNOUT 616 0 0 0 0 N 2 92.910571 27.618417 0 288.499982 "Peco-80 Medium Right SL-1738/395"
+ T4 1328 92.910571 27.618417 198.499982 2 0.000000 0.000000 0.0 0.0 0 2 0 16.991015
+ T4 1050 94.455868 32.236828 18.499982 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1049 94.950893 32.071194 32.499982 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.973080 0.000000
+ S 0 0.000000 0.973080 0.000000 4.870079 0.000000
+ C 0 0.000000 14.687496 0.973021 -14.687496 0.000076 14.000152
+ S 0 0.000000 4.526342 -0.436290 4.870079 -0.522000
+ END$SEGS
+DRAW 617 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 4 0
+ 102.209622 40.437089 0
+ 100.693997 34.577714 0
+ 99.240872 34.952714 0
+ 100.740872 40.796464 0
+ END$SEGS
+DRAW 618 6 0 0 0 0.083333 7.958333 0 0.000000
+ F4 14592682 0.000000 6 0
+ 97.048164 35.108964 0
+ 100.766914 33.843339 0
+ 101.829414 33.546464 0
+ 101.657539 32.713131 0
+ 100.626289 32.994381 0
+ 96.802084 34.302084 0
+ END$SEGS
+DRAW 619 6 0 0 0 0.000000 6.000000 0 0.000000
+ F4 14592682 0.000000 12 0
+ 107.125000 48.788194 0
+ 108.218750 50.788194 0
+ 110.125000 52.569444 0
+ 112.125000 54.600694 0
+ 112.843750 54.475694 0
+ 112.875000 53.506944 0
+ 112.750000 52.819444 0
+ 110.660515 51.101872 0
+ 109.656250 50.225694 0
+ 108.687500 48.975694 0
+ 108.475247 48.645422 0
+ 108.053372 48.301672 0
+ END$SEGS
+TURNOUT 620 0 0 0 0 N 2 102.566182 64.581646 0 91.493328 "Peco-80 Wye SL-1741/397"
+ T4 1362 102.566182 64.581646 1.493328 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1047 102.696791 59.576542 177.493328 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1045 102.174969 59.590145 185.493328 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ D 0.000000 0.000000
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ C 0 0.000000 -26.154032 0.354335 26.154032 175.999924 4.000152
+ S 0 0.000000 2.178781 0.063715 5.000000 0.261000
+ C 0 0.000000 26.154032 0.354196 -26.154032 0.000076 4.000152
+ S 0 0.000000 2.178781 -0.063715 5.000000 -0.261000
+ END$SEGS
+STRAIGHT 621 0 0 0 0 N 2 0.000000 0.000000
+ T4 1045 99.504167 49.491445 16.062942 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1050 97.726610 43.317975 196.062942 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ END$SEGS
+STRUCTURE 622 5 0 0 0 N 2 107.579250 59.112839 0 48.426488 "Blair line Tourist trap (gen store &bait shop) 070-M"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 1.519815 1.586176 0
+ 1.627906 0.090075 0
+ 0.381155 0.000000 0
+ 0.273065 1.496100 0
+ F4 16744703 0.000000 4 0
+ 1.745354 4.360993 0
+ 1.945608 1.618294 0
+ 0.200254 1.490860 0
+ 0.000000 4.233559 0
+ END$SEGS
+STRUCTURE 623 5 0 0 0 N 2 101.496836 41.968792 0 21.946642 "DPM Roadkill cafe (diner) 512"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.190190 0
+ 2.676896 2.820052 0
+ 3.192229 0.629862 0
+ 0.515332 0.000000 0
+ END$SEGS
+STRUCTURE 624 5 0 0 0 N 2 104.809665 43.005309 0 293.492289 "DPM crickets saloon 511"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.667892 0
+ 1.309691 2.995320 0
+ 1.976664 0.327428 0
+ 0.666973 0.000000 0
+ END$SEGS
+STRUCTURE 625 5 0 0 0 N 2 102.807294 60.192408 0 3.144957 "Gloor craft Nland sporting supply (main only) 208-A"
+ D 0.000000 0.000000
+ F4 16744703 0.083333 4 0
+ 2.992197 5.951282 0
+ 3.406653 0.216238 0
+ 0.414457 0.000000 0
+ 0.000000 5.735044 0
+ END$SEGS
+STRUCTURE 626 5 0 0 0 N 2 103.574726 50.204635 0 8.564222 "DPM Hayes hardware (altered-shortened) 502A"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.482639 0
+ 2.500000 2.482639 0
+ 2.500000 0.076389 0
+ 0.000000 0.076389 0
+ F4 12632256 0.000000 4 0
+ 2.507444 2.500000 0
+ 2.632444 2.500000 0
+ 2.632444 0.000000 0
+ 2.507444 0.000000 0
+ END$SEGS
+DRAW 627 5 0 0 0 103.968630 51.818460 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "BARBER\n BEAUTY PARLOR\n POOL HALL\n- UPSTAIRS"
+ END$SEGS
+STRUCTURE 628 5 0 0 0 N 2 107.028657 54.863628 0 297.416006 "gloor craft yardmasters office (produce office) 211 B"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.375000 0
+ 2.250000 1.375000 0
+ 2.250000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 629 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 14592682 0.000000 16 0
+ 103.062500 58.401042 0
+ 103.593750 61.307292 2
+ 104.437500 63.119792 0
+ 105.968750 62.838542 0
+ 105.906250 59.807292 2
+ 106.843750 59.838542 2
+ 106.937500 62.557292 0
+ 109.680556 62.413194 0
+ 109.680556 60.100694 2
+ 111.368056 59.913194 0
+ 111.843750 59.864583 0
+ 113.031250 62.145833 0
+ 113.531250 61.489583 0
+ 112.718750 59.958333 2
+ 112.343750 58.614583 0
+ 109.812500 58.750000 0
+ END$SEGS
+STRUCTURE 630 5 0 0 0 N 2 104.429996 52.581026 0 7.920740 "dpm BRUCE'S BAKERY shortened (THRIFT SHOP) 501M"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.750000 0
+ 2.125000 1.750000 0
+ 2.125000 0.000000 0
+ 0.000000 0.000000 0
+ L3 12632256 0.055556 1.961806 1.750000 0 1.961806 0.000000 0
+ END$SEGS
+STRUCTURE 631 5 0 0 0 N 2 97.442708 42.494792 0 0.000000 "Quality craft Haydenton covered Depot M Ondaville depot 204"
+ D 0.000000 0.000000
+ F4 16744703 0.052083 4 0
+ 1.537496 6.816837 0
+ 0.049328 1.646755 0
+ 2.211537 1.024379 0
+ 3.699705 6.194462 0
+ Y4 16744703 0.083333 7 0
+ 2.604167 0.041667 0
+ 4.358281 6.028383 0
+ 1.516059 6.830235 0
+ 1.148685 5.553931 0
+ 0.041667 1.697917 0
+ 0.966900 1.395069 0
+ 0.742153 0.614271 0
+ END$SEGS
+STRUCTURE 632 5 0 0 0 N 2 115.856617 78.083745 0 325.886513 "Nu comp miniatures 44' single wide mobile home 610"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 0.500000 0
+ 3.250000 0.500000 0
+ 3.250000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE 633 5 0 0 0 N 2 116.475806 73.326129 0 307.539547 "Blair line company house (door&porch on long side) 076"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.500000 0
+ 2.250000 1.500000 0
+ 2.250000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE 634 5 0 0 0 N 0 111.771767 72.432738 0 46.727438 "PPP Farm house FM1"
+ D 0.000000 0.000000
+ Y4 16744703 0.083333 4 0
+ 0.041667 2.421667 0
+ 2.791667 2.421667 0
+ 2.791667 0.041667 0
+ 0.041667 0.041667 0
+ F4 16744703 0.000000 4 0
+ 0.072917 2.411250 0
+ 2.197917 2.411250 0
+ 2.197917 0.531250 0
+ 0.072917 0.531250 0
+ L3 12632256 0.055556 2.135417 0.511944 0 2.760417 0.074444 0
+ END$SEGS
+STRUCTURE 635 5 0 0 0 N 2 111.920347 68.129816 0 296.119905 "osborn models Pete's market (veg stand) RR 3062"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.650000 0
+ 1.650000 1.650000 0
+ 1.650000 0.000000 0
+ 0.000000 0.000000 0
+ L3 0 0.055556 0.000000 0.650000 0 1.626201 0.650000 0
+ END$SEGS
+STRUCTURE 636 5 0 0 0 N 2 109.879155 62.811774 0 268.300672 "Quality craft Bryan's farm supply (farm and tractor) 215"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.034722 2.548611 0
+ 3.284722 2.548611 0
+ 3.284722 0.798611 0
+ 0.034722 0.798611 0
+ Y4 0 0.055556 4 0
+ 0.027778 0.777778 0
+ 3.277778 0.777778 0
+ 3.277778 0.027778 0
+ 0.027778 0.027778 0
+ Y4 0 0.055556 4 0
+ 0.062500 2.527778 0
+ 0.942500 2.527778 0
+ 0.942500 2.907778 0
+ 0.062500 2.907778 0
+ END$SEGS
+DRAW 637 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 4105019 0.000000 45 0
+ 128.088542 94.531250 0
+ 129.661184 95.460526 2
+ 132.223684 94.835526 2
+ 137.973684 95.335526 2
+ 141.911184 95.523026 0
+ 149.723684 94.773026 0
+ 151.911184 96.273026 2
+ 155.348684 96.710526 2
+ 154.598684 98.398026 0
+ 81.036184 98.421053 0
+ 66.625000 98.489583 0
+ 33.546875 98.536458 0
+ 36.484375 96.661458 2
+ 38.546875 97.848958 2
+ 41.796875 96.411458 2
+ 43.296875 97.723958 2
+ 45.671875 97.098958 2
+ 47.484375 97.786458 2
+ 48.796875 98.161458 0
+ 52.000000 96.114583 0
+ 54.625000 96.364583 2
+ 56.046875 94.848958 2
+ 59.984375 95.473958 2
+ 60.671875 97.098958 0
+ 64.234375 98.348958 2
+ 65.234375 98.161458 0
+ 67.125000 96.989583 2
+ 70.875000 97.739583 0
+ 79.125000 97.614583 2
+ 80.125000 95.364583 0
+ 80.281250 90.255208 0
+ 88.968750 90.255208 2
+ 93.093750 89.755208 2
+ 98.906250 89.317708 2
+ 104.718750 89.380208 2
+ 111.343750 89.817708 2
+ 117.406250 90.442708 2
+ 118.468750 90.567708 0
+ 121.156250 92.005208 0
+ 127.156250 92.567708 0
+ 129.526042 92.781250 0
+ 130.651042 92.968750 0
+ 131.276042 93.343750 2
+ 130.276042 93.468750 0
+ 128.536184 93.671053 0
+ END$SEGS
+STRUCTURE 638 5 0 0 0 N 2 42.252174 92.170981 0 0.000000 "laser art FINLEY HOUSE 825"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 1.524842 2.896030 0
+ 2.713517 1.981125 0
+ 1.188675 0.000000 0
+ 0.000000 0.914905 0
+ Z 16744703 0.675118 1.455686 0.000000 0 18.000000 "FINLEY"
+ Z 16744703 0.675118 1.066797 0.000000 0 18.000000 "HOUSE"
+ END$SEGS
+DRAW 639 5 0 0 0 77.374717 20.263103 0 0.000000
+ F4 16744703 0.000000 4 0
+ -32.378055 74.308094 0
+ -31.385234 75.588214 0
+ -30.444902 74.858916 0
+ -31.437723 73.578796 0
+ END$SEGS
+DRAW 640 6 0 0 0 1.812500 26.125000 0 0.000000
+ F4 12632256 0.000000 14 0
+ 47.490625 68.207182 2
+ 47.896875 68.738432 0
+ 48.693750 69.472807 0
+ 48.318750 70.175932 0
+ 47.912500 70.566557 0
+ 44.943750 67.701974 0
+ 47.193750 65.358224 0
+ 47.411458 65.078125 2
+ 47.959375 63.545724 0
+ 49.084375 63.795724 0
+ 48.756250 64.530099 2
+ 49.796875 65.270833 0
+ 49.656250 65.770833 0
+ 49.328125 66.114583 2
+ END$SEGS
+STRUCTURE 641 5 0 0 0 N 2 56.019620 90.665072 0 293.157660 "Atlas Kates Colonial house 2844"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 2.281540 3.609401 0
+ 3.677252 1.535277 0
+ 1.395712 0.000000 0
+ 0.000000 2.074124 0
+ END$SEGS
+STRUCTURE 642 5 0 0 0 N 2 43.494473 95.121854 0 303.831282 "New rail models 1920s single garage NR006N"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.125000 0
+ 1.625000 1.125000 0
+ 1.625000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+TURNOUT 643 0 0 0 0 N 2 134.184271 92.986636 0 172.334008 "Peco-80 Large Left SL-1737/389"
+ T4 998 134.184271 92.986636 82.334008 0 0.0 0.0 0.0 0.0 0 0 0 17.122946
+ T4 1353 127.941355 92.146333 262.334008 2 -1.328327 -1.786309 0.0 0.0 0 2 0 17.122946
+ T4 1365 128.010990 91.628999 254.334008 0 0.0 0.0 0.0 0.0 0 0 0 17.122946
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+STRUCTURE 644 5 0 0 0 N 2 45.140301 89.929139 0 0.000000 "DPM credit union (A&P store) 508"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 1.638986 3.908916 0
+ 3.865608 1.541501 0
+ 2.226622 0.000000 0
+ 0.000000 2.367415 0
+ END$SEGS
+STRUCTURE 645 5 0 0 0 N 2 38.455551 95.583996 0 33.849554 "laser art Drayton house 824"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.000000 0
+ 1.250000 2.000000 0
+ 1.250000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 646 5 0 0 0 38.872977 96.383363 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 " DRAY-\n TON\nHOUSE"
+ END$SEGS
+DRAW 647 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 12632256 0.000000 10 0
+ 45.146042 84.642292 0
+ 44.021875 83.623849 0
+ 43.833542 83.439167 0
+ 44.927292 82.470417 0
+ 45.161667 82.673542 2
+ 45.630417 82.189167 0
+ 46.350000 81.373849 0
+ 47.396875 81.623849 0
+ 47.114792 82.032917 2
+ 47.349167 82.298542 0
+ END$SEGS
+STRUCTURE 648 5 0 0 0 N 2 61.046894 96.821463 0 71.789582 "Mike Brasher section house #1 01"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 3.500000 0
+ 2.000000 3.500000 0
+ 2.000000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE 649 5 0 0 0 N 2 82.841722 96.263521 0 103.002643 "Laser art country feed (steak house) 884"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 6 0
+ 0.618100 0.000000 0
+ 0.000000 4.141661 0
+ 2.935598 4.584366 0
+ 3.090754 3.517464 0
+ 2.615919 3.416831 0
+ 3.069867 0.403922 0
+ END$SEGS
+DRAW 650 5 0 0 0 83.302992 94.508368 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "TRACKSIDE\nSTEAK HOUSE"
+ END$SEGS
+STRUCTURE 651 5 0 0 0 N 2 57.722499 92.099536 0 349.165451 "P-3 farm house large 2 story FM-1"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.380000 0
+ 2.750000 2.380000 0
+ 2.750000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+TURNOUT 652 0 0 0 0 N 2 145.986713 94.198235 0 180.123101 "Peco-80 Large Left SL-1737/389"
+ T4 653 145.986713 94.198235 90.123101 9 0.299471 0.926765 17.849482 17.849482 1 1 0 17.621924
+ T4 675 139.687515 94.211768 270.123101 0 0.0 0.0 0.0 0.0 0 0 0 17.621924
+ T4 998 139.686393 93.689770 262.123101 0 0.0 0.0 0.0 0.0 0 0 0 17.621924
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+STRAIGHT 653 0 0 0 0 N 2 0.000000 0.000000
+ T4 652 145.986713 94.198235 270.123101 9 0.299471 0.926765 17.849482 17.849482 1 1 0 17.921741
+ T4 1043 152.376303 94.184507 90.123101 9 0.000000 0.000000 17.994000 17.994000 1 1 0 17.921741
+ END$SEGS
+DRAW 654 6 0 0 0 -0.250000 8.625000 0 0.000000
+ F4 12632256 0.000000 6 0
+ 81.515755 87.211806 0
+ 87.234505 86.758681 0
+ 87.406380 88.977431 0
+ 81.906380 89.383681 0
+ 81.828255 88.086806 0
+ 81.359505 88.055556 0
+ END$SEGS
+STRUCTURE 655 5 0 0 0 N 0 110.248658 96.444622 0 81.152374 "PPP Farm house FM1"
+ D 0.000000 0.000000
+ Y4 16744703 0.083333 4 0
+ 0.041667 2.421667 0
+ 2.791667 2.421667 0
+ 2.791667 0.041667 0
+ 0.041667 0.041667 0
+ F4 16744703 0.000000 4 0
+ 0.072917 2.411250 0
+ 2.197917 2.411250 0
+ 2.197917 0.531250 0
+ 0.072917 0.531250 0
+ L3 12632256 0.055556 2.135417 0.511944 0 2.760417 0.074444 0
+ END$SEGS
+STRUCTURE 656 5 0 0 0 N 2 94.365687 94.581517 0 11.309932 "prebuilt custom large house 01"
+ D 0.000000 0.000000
+ F4 12632256 0.000000 4 0
+ 5.968750 0.000000 0
+ 4.562500 0.000000 0
+ 4.562500 3.625000 0
+ 5.968750 3.625000 0
+ F4 12632256 0.000000 4 0
+ 4.531250 2.750000 0
+ 2.031250 2.750000 0
+ 2.031250 0.750000 0
+ 4.531250 0.750000 0
+ F4 12632256 0.000000 4 0
+ 2.062500 3.531250 0
+ 0.125000 3.531250 0
+ 0.125000 1.500000 0
+ 2.062500 1.500000 0
+ F4 16744703 0.000000 12 0
+ 6.031250 3.593750 0
+ 6.031250 0.031250 0
+ 4.531250 0.062500 0
+ 4.531250 0.750000 0
+ 2.031250 0.781250 0
+ 2.031250 1.437500 0
+ 0.000000 1.468750 0
+ 0.031250 3.625000 0
+ 2.062500 3.593750 0
+ 2.125000 2.750000 0
+ 4.500000 2.718750 0
+ 4.500000 3.625000 0
+ Y4 656645 0.055556 4 0
+ 3.562500 1.843750 0
+ 4.812500 1.843750 0
+ 4.812500 0.593750 0
+ 3.562500 0.593750 0
+ L3 12632256 0.055556 3.562500 1.812500 0 4.812500 0.593750 0
+ L3 12632256 0.055556 4.812500 1.843750 0 3.562500 0.593750 0
+ END$SEGS
+DRAW 657 6 0 0 0 -1.968750 7.437500 0 0.000000
+ G3 12632256 0.000000 1.125000 96.968750 86.852228 0
+ END$SEGS
+DRAW 658 6 0 0 0 1.000000 6.875000 0 0.000000
+ F4 12632256 0.000000 13 0
+ 97.531250 85.423611 0
+ 97.937500 87.361111 0
+ 97.000000 87.548611 0
+ 97.000000 87.642361 0
+ 96.937500 87.548611 0
+ 95.718750 87.736111 2
+ 94.156250 88.517361 0
+ 94.500000 86.423611 0
+ 94.968750 86.798611 0
+ 95.500000 86.861111 0
+ 95.500000 86.861111 2
+ 96.656250 86.642361 2
+ 96.718750 85.517361 0
+ END$SEGS
+STRUCTURE 659 5 0 0 0 N 2 48.993361 96.691773 0 223.372686 "American model builder COMPANY HOUSES (3) 698"
+ D 0.000000 0.000000
+ F4 16744703 0.031250 4 0
+ 0.000000 1.660038 0
+ 1.500000 1.660038 0
+ 1.500000 0.160038 0
+ 0.000000 0.160038 0
+ L3 0 0.000000 0.977273 1.656250 0 0.977273 0.156250 0
+ L3 0 0.000000 0.560606 1.677083 0 0.560606 0.177083 0
+ Y4 0 0.000000 4 0
+ 0.248106 0.187500 0
+ 0.810606 0.187500 0
+ 0.810606 0.000000 0
+ 0.248106 0.000000 0
+ END$SEGS
+STRUCTURE 660 5 0 0 0 N 2 64.320594 93.107478 0 350.180448 "American model builder COMPANY HOUSES (3) 698"
+ D 0.000000 0.000000
+ F4 16744703 0.031250 4 0
+ 0.000000 1.660038 0
+ 1.500000 1.660038 0
+ 1.500000 0.160038 0
+ 0.000000 0.160038 0
+ L3 0 0.000000 0.977273 1.656250 0 0.977273 0.156250 0
+ L3 0 0.000000 0.560606 1.677083 0 0.560606 0.177083 0
+ Y4 0 0.000000 4 0
+ 0.248106 0.187500 0
+ 0.810606 0.187500 0
+ 0.810606 0.000000 0
+ 0.248106 0.000000 0
+ END$SEGS
+STRUCTURE 661 5 0 0 0 N 2 62.403572 92.841812 0 350.943111 "American model builder COMPANY HOUSES (3) 698"
+ D 0.000000 0.000000
+ F4 16744703 0.031250 4 0
+ 0.000000 1.660038 0
+ 1.500000 1.660038 0
+ 1.500000 0.160038 0
+ 0.000000 0.160038 0
+ L3 0 0.000000 0.977273 1.656250 0 0.977273 0.156250 0
+ L3 0 0.000000 0.560606 1.677083 0 0.560606 0.177083 0
+ Y4 0 0.000000 4 0
+ 0.248106 0.187500 0
+ 0.810606 0.187500 0
+ 0.810606 0.000000 0
+ 0.248106 0.000000 0
+ END$SEGS
+STRUCTURE 662 5 0 0 0 N 2 77.073182 94.206389 0 0.000000 "Laser art structures albion house 821"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.020568 2.620000 0
+ 1.900568 2.620000 0
+ 1.900568 0.000000 0
+ 0.020568 0.000000 0
+ L3 0 0.055556 0.030985 0.526250 0 1.874735 0.526250 0
+ L3 0 0.055556 0.020568 2.588750 0 1.864318 0.557500 0
+ L3 0 0.055556 1.833068 2.588750 0 0.114318 0.526250 0
+ END$SEGS
+STRUCTURE 663 5 0 0 0 N 2 70.500000 93.852639 0 0.000000 "American model builders 2 story section house 628"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.505000 0
+ 2.125000 1.505000 0
+ 2.125000 0.380000 0
+ 0.000000 0.380000 0
+ F4 16744703 0.000000 4 0
+ 0.006944 1.505000 0
+ 1.131944 1.505000 0
+ 1.131944 2.385000 0
+ 0.006944 2.385000 0
+ F4 12632256 0.000000 4 0
+ 0.267361 0.380000 0
+ 1.887361 0.380000 0
+ 1.887361 0.000000 0
+ 0.267361 0.000000 0
+ L3 0 0.027778 2.140625 0.952917 0 0.000000 0.952917 0
+ L3 0 0.027778 1.093750 1.496319 0 0.015625 1.511944 0
+ L3 0 0.027778 0.625000 2.355694 0 0.625000 1.480694 0
+ L3 0 0.027778 0.250000 2.371319 0 0.250000 1.496319 0
+ END$SEGS
+STRUCTURE 664 5 0 0 0 N 2 73.687500 94.218750 0 0.000000 "American model builders 2 story farmhouse with front porch 640"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.500000 0
+ 2.620000 2.500000 0
+ 2.620000 0.000000 0
+ 0.000000 0.000000 0
+ L3 656645 0.027778 2.500000 0.506944 0 0.062500 0.506944 0
+ L3 656645 0.027778 2.562500 1.562500 0 0.062500 1.562500 0
+ END$SEGS
+STRUCTURE 665 5 0 0 0 N 2 56.934438 95.452204 0 350.450866 "Kestral designs small bungalow (plastic) KD3"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.380000 0
+ 2.125000 1.380000 0
+ 2.125000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 666 5 3 0 0 1.000000 6.937500 0 0.000000
+ Y4 0 0.138889 6 2
+ 90.004934 91.658443 0
+ 89.754934 86.720943 0
+ 94.078125 86.026042 0
+ 98.078125 85.588542 0
+ 101.640625 85.401042 0
+ 102.140625 91.588542 0
+ END$SEGS
+STRUCTURE 667 5 0 0 0 N 2 104.803471 93.347056 0 356.477197 "RS laser Brick farmhouse 3055"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.500000 0
+ 3.000000 2.500000 0
+ 3.000000 0.000000 0
+ 0.000000 0.000000 0
+ L3 263172 0.055556 1.312500 2.444444 0 1.312500 0.069444 0
+ L3 263172 0.055556 0.708333 2.465278 0 0.708333 0.090278 0
+ L3 263172 0.055556 1.312500 0.694444 0 2.937500 0.694444 0
+ L3 263172 0.055556 1.270834 1.590278 0 2.895834 1.590278 0
+ END$SEGS
+STRUCTURE 668 5 0 0 0 N 2 39.846464 94.818243 0 34.845733 "RS laser cape cod (colonial) 3032"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.031250 1.750000 0
+ 2.031250 1.750000 0
+ 2.031250 0.000000 0
+ 0.031250 0.000000 0
+ L3 263172 0.055556 0.000000 0.295139 0 2.093750 0.295139 0
+ L3 263172 0.055556 0.031250 0.951389 0 2.031250 0.951389 0
+ END$SEGS
+DRAW 669 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 13290186 0.000000 21 0
+ 126.791667 98.447917 0
+ 121.291667 97.760417 2
+ 117.791667 96.885417 2
+ 116.729167 94.197917 2
+ 115.979167 92.135417 2
+ 113.479167 91.260417 2
+ 107.979167 90.697917 2
+ 101.666667 90.572917 2
+ 92.541667 91.510417 0
+ 91.666667 91.572917 2
+ 91.291667 88.197917 0
+ 89.791667 88.572917 0
+ 90.166667 93.322917 2
+ 93.666667 92.822917 2
+ 101.806881 91.955964 2
+ 108.035611 92.094785 2
+ 114.041667 92.947917 2
+ 115.166667 93.822917 2
+ 116.104167 96.947917 2
+ 118.166667 98.447917 0
+ 125.854167 98.447917 0
+ END$SEGS
+DRAW 670 6 0 0 0 17.576372 67.236060 0 0.000000
+ F4 7959154 0.000000 4 0
+ 71.892378 24.331648 0
+ 71.642378 22.956648 0
+ 74.579878 22.644148 0
+ 74.647312 23.934993 0
+ END$SEGS
+STRUCTURE 671 5 0 0 0 N 2 63.720485 87.649501 0 347.127762 "American model builders hillview volunteer fire Co. 647"
+ D 0.000000 0.000000
+ F4 65535 0.000000 4 0
+ 0.000000 0.000000 0
+ 1.500000 0.000000 0
+ 1.500000 2.000000 0
+ 0.000000 2.000000 0
+ END$SEGS
+DRAW 672 5 0 0 0 -5.782810 130.597840 0 0.000000
+ F4 16744703 0.000000 4 0
+ 63.518462 -42.104001 0
+ 64.243036 -45.272202 0
+ 61.252947 -45.956040 0
+ 60.528364 -42.787855 0
+ END$SEGS
+DRAW 673 5 0 0 0 47.640833 85.619722 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "MERCHANTS ROW"
+ END$SEGS
+DRAW 674 5 0 0 0 55.832940 87.020378 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "ATLANTIC \nGAS"
+ END$SEGS
+STRAIGHT 675 0 0 0 0 N 2 0.000000 0.000000
+ T4 879 127.473694 94.238010 270.123101 0 0.0 0.0 0.0 0.0 0 0 0 17.414984
+ T4 652 139.687515 94.211768 90.123101 0 0.0 0.0 0.0 0.0 0 0 0 17.414984
+ END$SEGS
+DRAW 676 5 0 0 0 57.783736 86.201660 0 0.000000
+ F4 16744703 0.000000 4 0
+ 0.169389 2.277507 0
+ 3.106889 2.965007 0
+ 3.582373 0.704516 0
+ 0.663277 0.012506 0
+ END$SEGS
+DRAW 677 5 0 0 0 58.734583 87.525972 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "LIBRARY"
+ END$SEGS
+DRAW 678 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14601163 0.000000 4 0
+ 58.312500 86.166667 0
+ 58.453125 85.325932 0
+ 63.025493 86.401042 2
+ 62.837993 87.338542 0
+ END$SEGS
+STRUCTURE 679 5 0 0 0 N 2 44.991019 85.930344 0 166.552226 "Design Preservations Models Bruce's Bakery 501"
+ D 0.000000 0.000000
+ F4 8421504 0.000000 4 0
+ 0.005075 0.015625 0
+ 1.630075 0.015625 0
+ 1.630075 3.031250 0
+ 0.005075 3.031250 0
+ F4 0 0.000000 4 0
+ 0.005075 0.015625 0
+ 0.005075 0.015625 0
+ 0.005075 0.015625 0
+ 0.005075 0.015625 0
+ L3 12632256 0.062500 0.005075 0.031250 0 1.614450 0.031250 0
+ L3 12632256 0.062500 1.598825 0.015625 0 1.598825 3.046875 0
+ L3 12632256 0.062500 0.031250 0.010550 0 0.031250 3.041800 0
+ F4 15132390 0.000000 4 0
+ 0.005075 0.890625 0
+ 0.161325 0.890625 0
+ 0.161325 1.046875 0
+ 0.005075 1.046875 0
+ F4 15132390 0.000000 4 0
+ 0.000000 1.948050 0
+ 0.156250 1.948050 0
+ 0.156250 2.104300 0
+ 0.000000 2.104300 0
+ F4 15132390 0.000000 4 0
+ 1.468750 1.948050 0
+ 1.625000 1.948050 0
+ 1.625000 2.104300 0
+ 1.468750 2.104300 0
+ F4 15132390 0.000000 4 0
+ 1.468750 0.885550 0
+ 1.625000 0.885550 0
+ 1.625000 1.041800 0
+ 1.468750 1.041800 0
+ L3 0 0.208333 0.015625 3.010550 0 1.625000 3.010550 0
+ END$SEGS
+STRUCTURE 680 5 0 0 0 N 2 40.961549 81.817830 0 346.410408 "DPM eriks emporium (JC Penney) 516"
+ D 0.000000 0.000000
+ F4 12632256 0.000000 4 0
+ 0.000000 3.000000 0
+ 3.250000 3.000000 0
+ 3.250000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 681 5 0 0 0 41.015833 84.025972 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "PENNEYS"
+ END$SEGS
+STRUCTURE 682 5 0 0 0 N 2 38.901464 81.797060 0 0.322301 "DPM crickets saloon (jewelry store) 511"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.667892 0
+ 1.309691 2.995320 0
+ 1.976664 0.327428 0
+ 0.666973 0.000000 0
+ END$SEGS
+DRAW 683 5 0 0 0 39.251713 83.697171 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "CHARLES\n & CO.\nJEWELERS"
+ END$SEGS
+STRUCTURE 684 5 0 0 0 N 2 36.642398 84.737669 0 90.000000 "DPM Roadkill cafe (diner) 512"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.190190 0
+ 2.676896 2.820052 0
+ 3.192229 0.629862 0
+ 0.515332 0.000000 0
+ END$SEGS
+STRUCTURE 685 5 0 0 0 N 2 32.690325 79.925713 0 347.570642 "DPM Roadkill cafe M shortened antiques 512M"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.250000 0
+ 2.250000 2.250000 0
+ 2.250000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 686 5 0 0 0 43.840278 84.472222 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "JINNIE'S\nBAKERY"
+ END$SEGS
+DRAW 687 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14601163 0.000000 6 0
+ 36.140625 95.088542 0
+ 41.078125 91.776042 0
+ 42.531250 90.541667 0
+ 44.593750 88.916667 2
+ 37.093750 87.166667 0
+ 32.515625 89.963542 0
+ END$SEGS
+STRUCTURE 688 5 0 0 0 N 2 33.263875 90.619169 0 32.332021 "DPM Wilhe. merchantile (SEARS) 516"
+ D 0.000000 0.000000
+ F4 65535 0.000000 4 0
+ 0.000000 2.562500 0
+ 5.250000 2.562500 0
+ 5.250000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 689 5 0 0 0 -27.103054 51.845337 0 0.000000
+ F4 16744703 0.000000 4 0
+ 52.206456 46.374742 0
+ 56.724134 43.700217 0
+ 55.450551 41.548942 0
+ 50.932873 44.223467 0
+ END$SEGS
+DRAW 690 5 0 0 0 58.265144 25.634811 0 0.000000
+ F4 16744703 0.000000 4 0
+ 7.991887 64.409756 0
+ 11.733908 64.654257 0
+ 11.856477 62.778257 0
+ 8.114456 62.533755 0
+ END$SEGS
+DRAW 691 6 0 0 0 1.468750 25.437500 0 0.000000
+ F4 12632256 0.000000 8 0
+ 38.046875 64.347222 0
+ 33.171875 67.378472 0
+ 33.750000 68.250000 0
+ 34.312500 67.875000 2
+ 34.750000 68.750000 2
+ 38.062500 66.812500 2
+ 38.312500 67.187500 0
+ 39.625000 66.375000 0
+ END$SEGS
+DRAW 692 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 12632256 0.000000 5 0
+ 36.098958 87.359375 0
+ 32.921875 82.575932 0
+ 32.875000 82.057292 0
+ 30.921875 83.294682 0
+ 34.359375 88.450932 0
+ END$SEGS
+STRUCTURE 693 5 0 0 0 N 2 28.914312 94.828516 0 44.490060 "DPM Reeds books (Grants) 515"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 3.053773 0
+ 2.931622 3.690633 0
+ 3.595017 0.636859 0
+ 0.663395 0.000000 0
+ END$SEGS
+DRAW 694 7 0 0 0 0.906250 7.484375 0 0.000000
+ F4 5030474 0.000000 7 0
+ 41.671875 82.291667 0
+ 40.234375 83.354167 2
+ 39.401042 82.383681 0
+ 38.359375 80.916667 2
+ 38.671875 80.666667 0
+ 42.046875 81.416667 2
+ 42.234375 81.729167 2
+ END$SEGS
+STRUCTURE 695 7 0 0 0 N 2 40.494792 88.961806 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 696 5 0 0 0 N 2 21.873335 88.229278 0 246.804291 "Atlas Kates Colonial house 2844"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 2.281540 3.609401 0
+ 3.677252 1.535277 0
+ 1.395712 0.000000 0
+ 0.000000 2.074124 0
+ END$SEGS
+STRUCTURE 697 5 0 0 0 N 2 31.302384 86.826652 0 301.738332 "DPM corner drugs 7"
+ D 0.000000 0.000000
+ F4 16744703 0.055556 5 0
+ 0.031250 0.031250 0
+ 0.000000 3.343750 0
+ 1.343750 3.343750 0
+ 1.343750 0.531250 0
+ 1.000000 0.000000 0
+ END$SEGS
+STRUCTURE 698 5 0 0 0 N 2 26.617747 91.316948 0 121.781215 "DPM Chars soda shop 504"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 3.000000 0
+ 2.620000 3.000000 0
+ 2.620000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 699 5 0 0 0 29.418640 88.459232 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "PHARMACY\n doctor's \n office\n\t dentist\n"
+ END$SEGS
+DRAW 700 5 0 0 0 26.292406 89.695456 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "WOOLWORTHS"
+ END$SEGS
+DRAW 701 5 0 0 0 67.389921 89.260592 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "SS DINER"
+ END$SEGS
+DRAW 702 5 0 0 0 18.353118 89.247994 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "KATES HOUSE #2"
+ END$SEGS
+STRUCTURE 703 5 0 0 0 N 2 30.474348 91.279881 0 316.567209 "DPM crickets saloon 511"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.667892 0
+ 1.309691 2.995320 0
+ 1.976664 0.327428 0
+ 0.666973 0.000000 0
+ END$SEGS
+DRAW 704 7 0 0 0 -0.500000 6.750000 0 0.000000
+ F4 5030474 0.138889 4 0
+ 19.562500 91.723958 0
+ 22.218750 90.411458 0
+ 23.687500 89.598958 2
+ 24.937500 91.755208 0
+ END$SEGS
+DRAW 705 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12632256 0.000000 14 0
+ 24.625000 88.312500 0
+ 29.343750 84.791667 0
+ 27.843750 82.729167 0
+ 29.062500 81.822917 0
+ 30.561184 82.855208 0
+ 31.654934 83.636458 0
+ 33.436184 84.667708 1
+ 35.031250 85.401042 1
+ 35.921875 85.713542 2
+ 34.453125 86.557292 0
+ 31.029934 85.230208 0
+ 28.031250 87.166667 0
+ 28.218750 87.510417 0
+ 25.343750 89.322917 0
+ END$SEGS
+DRAW 706 5 0 0 0 37.286667 82.831528 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "DINER"
+ END$SEGS
+DRAW 707 5 0 0 0 32.941812 81.176987 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "ANTIQUES"
+ END$SEGS
+DRAW 708 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14601163 0.000000 28 0
+ 44.875000 86.437500 0
+ 45.343750 86.541667 0
+ 46.093750 83.479167 0
+ 46.218750 82.541667 2
+ 45.718750 82.291667 0
+ 45.093750 82.072917 0
+ 31.406250 78.666667 2
+ 30.281250 78.791667 2
+ 29.031250 79.572917 0
+ 12.093750 91.796875 0
+ 12.218750 92.359375 0
+ 19.906250 87.010417 0
+ 22.687500 85.135417 0
+ 23.312500 86.010417 0
+ 28.698480 82.163288 0
+ 28.031250 81.229167 0
+ 29.687500 79.947917 0
+ 30.593750 79.609375 2
+ 31.437500 79.635417 0
+ 34.843750 80.468750 0
+ 37.343750 81.031250 0
+ 37.156250 81.656250 0
+ 39.468750 82.218750 0
+ 39.531250 81.843750 0
+ 40.843750 82.156250 0
+ 40.968750 81.906250 0
+ 45.703125 83.057292 0
+ 45.703125 83.057292 0
+ END$SEGS
+STRUCTURE 709 5 0 0 0 N 2 19.213201 94.839259 0 88.655659 "DPM credit union (bank) 508"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 1.250392 3.676678 0
+ 3.952329 1.870567 0
+ 2.701937 0.000000 0
+ 0.000000 1.806111 0
+ END$SEGS
+DRAW 710 5 0 0 0 20.887018 93.383902 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "BANK"
+ END$SEGS
+DRAW 711 5 0 0 0 35.026250 90.508611 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "SEARS"
+ END$SEGS
+DRAW 712 5 0 0 0 26.339847 95.693612 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "HOTEL"
+ END$SEGS
+DRAW 713 5 0 0 0 30.432500 94.789861 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "GRANTS"
+ END$SEGS
+DRAW 714 5 0 0 0 54.048168 93.700808 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "KATE'S \nHOUSE #1"
+ END$SEGS
+DRAW 715 5 0 0 0 42.974167 93.736042 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "FINLEY\n HOUSE"
+ END$SEGS
+DRAW 716 5 0 0 0 62.635683 96.743397 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "SECT\nHOUSE\n#1"
+ END$SEGS
+DRAW 717 5 0 0 0 46.718958 91.729097 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "A&P"
+ END$SEGS
+DRAW 718 5 0 0 0 57.694419 93.403763 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "2 story house"
+ END$SEGS
+DRAW 719 5 0 0 0 29.638889 93.097222 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "POST\nOFFICE"
+ END$SEGS
+DRAW 720 5 0 0 0 56.864583 96.286458 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "BUNGALOW"
+ END$SEGS
+DRAW 721 5 0 0 0 70.468750 94.857639 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 " 2 STORY\nSECT HOUSE"
+ END$SEGS
+DRAW 722 5 0 0 0 73.875000 95.906250 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "2 STORY \nHOUSE \nW/ PORCH"
+ END$SEGS
+STRUCTURE 723 7 0 0 0 N 2 21.328125 96.427083 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 724 5 0 0 0 N 2 61.682699 92.938045 0 259.456219 "New rail models 1920s single garage NR006N"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.125000 0
+ 1.625000 1.125000 0
+ 1.625000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 725 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12691841 0.000000 109 0
+ 6.687500 78.791667 0
+ 7.437500 77.541667 2
+ 17.500000 68.979167 2
+ 13.437500 70.229167 0
+ 9.062500 72.916667 0
+ 7.187500 75.541667 0
+ 6.687500 76.541667 0
+ 6.187500 78.229167 0
+ 5.187500 77.729167 0
+ 6.125000 75.229167 0
+ 7.453125 72.078125 2
+ 5.875000 74.666667 0
+ 4.765625 77.265625 0
+ 3.453125 76.078125 0
+ 4.687500 73.354167 0
+ 5.937500 70.541667 0
+ 4.500000 72.604167 2
+ 2.937500 75.604167 0
+ 1.875000 74.541667 0
+ 4.250000 69.464364 0
+ 10.531250 63.875000 2
+ 17.781250 63.000000 2
+ 23.750000 64.589364 2
+ 27.250000 68.839364 2
+ 32.250000 71.839364 2
+ 38.250000 73.464364 2
+ 67.000000 80.589364 2
+ 77.500000 81.964364 2
+ 86.500000 81.089364 2
+ 92.375000 77.339364 2
+ 96.750000 70.714364 2
+ 96.750000 63.797697 2
+ 94.500000 57.422697 2
+ 88.625000 41.589364 2
+ 87.500000 37.047697 2
+ 86.046875 30.213542 0
+ 85.921875 27.463542 0
+ 86.171875 24.088542 2
+ 87.562500 20.312500 2
+ 88.948661 17.315625 2
+ 89.823661 16.003125 0
+ 90.823661 14.190625 2
+ 95.511161 11.628125 0
+ 99.073661 9.003125 0
+ 105.073661 8.128125 2
+ 112.136161 7.940625 2
+ 120.270559 10.812500 2
+ 126.625000 17.125000 2
+ 129.250000 24.125000 2
+ 129.875000 36.125000 2
+ 127.750000 38.250000 2
+ 128.031250 45.703947 0
+ 126.281250 46.703947 0
+ 123.531250 46.828947 0
+ 122.031250 43.453947 0
+ 120.281250 37.828947 0
+ 118.156250 34.703947 2
+ 115.843750 34.864583 0
+ 113.781250 33.953947 0
+ 109.031250 33.078947 2
+ 108.312500 32.895833 2
+ 107.562500 33.583333 0
+ 106.511161 31.414474 0
+ 104.761161 29.789474 2
+ 101.625000 28.520833 0
+ 98.625000 24.833333 0
+ 98.261161 23.164474 0
+ 97.781250 21.828947 0
+ 95.312500 19.645833 2
+ 94.187500 23.083333 0
+ 94.812500 25.020833 2
+ 93.625000 25.458333 0
+ 91.562500 26.458333 2
+ 90.812500 27.395833 0
+ 89.750000 31.422697 2
+ 90.000000 36.422697 2
+ 92.349432 42.970943 0
+ 96.005682 52.762610 2
+ 100.750000 66.214364 2
+ 98.625000 74.714364 2
+ 94.750000 79.589364 2
+ 90.781998 82.531250 2
+ 86.281998 84.656250 0
+ 86.281998 85.656250 0
+ 96.500000 83.589364 2
+ 104.000000 82.339364 2
+ 109.015625 82.187500 2
+ 114.265625 81.406250 2
+ 115.712500 81.718750 2
+ 116.837500 82.031250 0
+ 118.462500 82.406250 0
+ 119.025000 82.406250 0
+ 118.337500 83.531250 2
+ 118.712500 84.218750 2
+ 110.025000 83.343750 0
+ 105.400000 83.406250 2
+ 99.525000 84.281250 0
+ 95.750000 85.214364 2
+ 86.312500 87.029057 2
+ 79.750000 87.339364 2
+ 72.250000 85.964364 2
+ 67.750000 84.589364 2
+ 59.750000 82.339364 0
+ 33.875000 76.089364 0
+ 29.906250 77.187500 0
+ 23.890625 81.822917 2
+ 11.515625 90.572917 0
+ 8.406250 82.000000 0
+ 7.156250 79.125000 2
+ END$SEGS
+DRAW 726 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 49 0
+ 10.640625 73.640625 2
+ 16.235048 70.148026 2
+ 11.078125 72.078125 0
+ 8.203125 74.390625 2
+ 6.140625 78.390625 0
+ 1.625000 74.416667 0
+ 3.015625 71.453125 2
+ 6.015625 67.015625 2
+ 8.260417 65.000000 2
+ 8.140625 63.765625 2
+ 7.385417 61.406250 2
+ 3.260417 52.031250 2
+ 2.760417 47.031250 2
+ 4.010417 45.531250 2
+ 5.225649 48.750000 2
+ 6.385417 50.781250 0
+ 8.260417 53.406250 2
+ 10.760417 54.281250 2
+ 9.885417 52.031250 0
+ 6.850649 47.750000 0
+ 5.437500 45.625000 2
+ 4.750000 44.750000 2
+ 5.975649 39.375000 2
+ 11.510417 32.812500 2
+ 23.635417 29.187500 2
+ 25.260417 27.687500 2
+ 28.598684 26.437500 0
+ 30.473684 24.937500 2
+ 30.411184 22.562500 0
+ 30.161184 18.312500 2
+ 32.375000 17.375000 2
+ 26.000000 15.750000 2
+ 18.625000 15.500000 2
+ -0.125000 15.625000 0
+ 0.010417 80.750000 0
+ -0.015625 89.723958 0
+ -0.015625 98.473958 0
+ 14.312500 98.583333 0
+ 11.062500 90.208333 0
+ 10.187500 90.458333 2
+ 9.375000 88.583333 0
+ 8.187500 85.958333 2
+ 6.375000 82.583333 0
+ 5.636364 80.416667 2
+ 7.328125 78.703125 0
+ 6.812500 78.104167 2
+ 7.937500 76.416667 2
+ 9.360048 75.273026 0
+ 9.360048 75.273026 2
+ END$SEGS
+CORNU 727 0 0 0 0 N 2 34.687500 74.208333 75.441971 133.423303 68.224836 -54.931223 28.125000 71.770833 242.896270 102.304329 74.735145 -19.298756
+ T4 743 34.687500 74.208333 75.441971 0 0.0 0.0 0.0 0.0 0 0 0 13.335697
+ T4 744 28.125000 71.770833 242.896270 0 0.0 0.0 0.0 0.0 0 0 0 13.335697
+ W3 0 0.000000 34.687500 74.208333 33.555205 73.914278 32.426085 73.602063 31.326841 73.201786
+ SUBSEGS
+ C 0 0.000000 -36.900060 43.582420 38.396396 340.601953 5.449270
+ SUBSEND
+ W3 0 0.000000 31.326841 73.201786 30.227596 72.801509 29.166385 72.303822 28.125000 71.770833
+ SUBSEGS
+ C 0 0.000000 -28.346506 41.269761 46.656303 332.372769 7.093207
+ SUBSEND
+ END$SEGS
+CORNU 728 0 0 0 0 N 2 33.332061 75.936184 97.804630 0.000000 0.000000 7.625000 27.001389 78.246875 304.215085 60.900250 61.245667 128.607274
+ T4 734 33.332061 75.936184 97.804630 9 0.000000 0.000000 13.921482 13.921482 1 1 0 13.912210
+ T4 735 27.001389 78.246875 304.215085 0 0.0 0.0 0.0 0.0 0 0 0 13.912210
+ W3 0 0.000000 33.332061 75.936184 32.205347 76.090617 31.073840 76.266146 30.001316 76.644333
+ SUBSEGS
+ C 0 0.000000 21.284502 35.891915 97.066190 186.907595 6.889847
+ C 9713590 0.000000 10.343361 33.424252 86.404897 194.607074 4.718204
+ SUBSEND
+ W3 0 0.000000 30.001316 76.644333 29.465054 76.833426 28.945426 77.068860 28.446873 77.342315
+ SUBSEGS
+ C 9713590 0.000000 10.490934 33.507239 86.532113 199.523048 9.316351
+ SUBSEND
+ W3 0 0.000000 28.446873 77.342315 27.948319 77.615770 27.471603 77.927137 27.001389 78.246875
+ SUBSEGS
+ C 0 0.000000 17.870226 37.193071 92.925928 209.303026 5.469262
+ SUBSEND
+ END$SEGS
+CORNU 729 0 0 0 0 N 2 37.063306 73.587647 75.932087 0.000000 0.000000 7.625000 25.875000 68.590278 241.672469 81.256102 -12.681933 140.115916
+ T4 731 37.063306 73.587647 75.932087 0 0.0 0.0 0.0 0.0 0 0 0 14.002675
+ T4 736 25.875000 68.590278 241.672469 9 0.000000 0.000000 14.000000 14.000000 1 1 0 14.002675
+ W3 0 0.000000 37.063306 73.587647 36.068195 73.338285 35.074367 73.079093 34.104159 72.745737
+ SUBSEGS
+ C 0 0.000000 -36.032614 45.435108 38.541076 341.671560 4.893589
+ SUBSEND
+ W3 0 0.000000 34.104159 72.745737 33.133952 72.412380 32.188486 72.008953 31.268797 71.554421
+ SUBSEGS
+ C 0 0.000000 -24.040112 41.979597 50.032207 333.542189 7.334901
+ SUBSEND
+ W3 0 0.000000 31.268797 71.554421 29.429417 70.645358 27.681059 69.563860 25.875000 68.590278
+ SUBSEGS
+ C 0 0.000000 -54.583912 55.767920 22.777414 330.101082 3.230009
+ C 0 0.000000 146.795810 -44.612682 197.355555 150.101723 1.201443
+ SUBSEND
+ END$SEGS
+CORNU 730 0 0 0 0 N 2 33.506466 75.271174 75.304630 0.000000 0.000000 6.000000 30.093750 74.116319 246.989307 23.942246 39.452844 52.079112
+ T4 734 33.506466 75.271174 75.304630 0 0.0 0.0 0.0 0.0 0 0 0 13.955402
+ T4 741 30.093750 74.116319 246.989307 0 0.0 0.0 0.0 0.0 0 0 0 13.955402
+ W3 0 0.000000 33.506466 75.271174 32.925023 75.118685 32.345607 74.957145 31.776663 74.763154
+ SUBSEGS
+ C 0 0.000000 -25.005006 39.683035 51.041020 341.567239 4.131918
+ SUBSEND
+ W3 0 0.000000 31.776663 74.763154 31.207719 74.569163 30.647028 74.351293 30.093750 74.116319
+ SUBSEGS
+ C 0 0.000000 -24.703817 39.792216 51.395880 336.884260 4.182503
+ SUBSEND
+ END$SEGS
+STRAIGHT 731 0 0 0 0 N 2 0.000000 0.000000
+ T4 750 53.103350 77.607079 75.932087 9 0.000000 0.000000 14.012536 14.012536 1 1 0 14.008943
+ T4 729 37.063306 73.587647 255.932087 0 0.0 0.0 0.0 0.0 0 0 0 14.008943
+ END$SEGS
+TURNOUT 732 0 0 0 0 N 2 36.819619 76.140077 0 345.304630 "Peco-80 Large Right SL-1736/388"
+ T4 734 36.819619 76.140077 255.304630 9 0.000000 0.000000 13.989322 13.989322 1 1 0 13.951307
+ T4 758 42.912773 77.738060 75.304630 9 0.000000 0.000000 13.989322 13.989322 1 1 0 13.951307
+ T4 753 43.045194 77.233136 83.304630 0 0.0 0.0 0.0 0.0 0 0 0 13.951307
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 31.901195 0.354173 -31.901195 0.000076 8.000152
+ S 0 0.000000 4.794168 -0.310471 6.299213 -0.522000
+ END$SEGS
+STRAIGHT 733 0 0 0 0 N 2 0.000000 0.000000
+ T4 735 21.675571 81.825067 124.333001 0 0.0 0.0 0.0 0.0 0 0 0 13.869571
+ E4 11.997149 88.435411 304.333001 9 0.000000 0.000000 13.853643 13.853643 1 1 0 13.869571
+ END$SEGS
+TURNOUT 734 0 0 0 0 N 2 36.819619 76.140077 0 165.304630 "PECO Right ST5"
+ T4 732 36.819619 76.140077 75.304630 9 0.000000 0.000000 13.989322 13.989322 1 1 0 13.955402
+ T4 730 33.506466 75.271174 255.304630 0 0.0 0.0 0.0 0.0 0 0 0 13.955402
+ T4 728 33.332061 75.936184 277.804630 9 0.000000 0.000000 13.921482 13.921482 1 1 0 13.955402
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 3.425197 0.000000
+ C 0 0.000000 7.094263 0.354272 -7.094263 0.000076 22.500152
+ S 0 0.000000 3.069172 -0.540025 3.425197 -0.687500
+ END$SEGS
+CORNU 735 0 0 0 0 N 2 27.001389 78.246875 124.215085 60.900250 61.245667 128.607274 21.675571 81.825067 304.333001 0.000000 0.000000 7.625000
+ T4 728 27.001389 78.246875 124.215085 0 0.0 0.0 0.0 0.0 0 0 0 13.894218
+ T4 733 21.675571 81.825067 304.333001 0 0.0 0.0 0.0 0.0 0 0 0 13.894218
+ W3 0 0.000000 27.001389 78.246875 26.117071 78.848197 25.236256 79.454723 24.343223 80.043024
+ SUBSEGS
+ C 0 0.000000 -218.960208 -96.915155 -102.275320 33.627540 0.839482
+ SUBSEND
+ W3 0 0.000000 24.343223 80.043024 23.450190 80.631325 22.558649 81.221926 21.675571 81.825067
+ SUBSEGS
+ C 0 0.000000 191.993129 129.653758 240.576674 213.264990 0.957399
+ SUBSEND
+ END$SEGS
+CORNU 736 0 0 0 0 N 2 25.875000 68.590278 61.672469 81.256102 -12.681933 140.115916 17.937500 66.152778 266.051200 17.168408 16.755197 83.280428
+ T4 729 25.875000 68.590278 61.672469 9 0.000000 0.000000 14.000000 14.000000 1 1 0 14.005188
+ T4 737 17.937500 66.152778 266.051200 0 0.0 0.0 0.0 0.0 0 0 0 14.005188
+ W3 0 0.000000 25.875000 68.590278 24.646393 67.927980 23.378919 67.327443 22.045557 66.914818
+ SUBSEGS
+ C 0 0.000000 21.562941 15.357798 87.414435 150.807570 11.124123
+ SUBSEND
+ W3 0 0.000000 22.045557 66.914818 20.712196 66.502192 19.329935 66.248896 17.937500 66.152778
+ SUBSEGS
+ C 0 0.000000 18.133172 16.706287 84.244103 162.875581 13.231134
+ SUBSEND
+ END$SEGS
+CORNU 737 0 0 0 0 N 2 17.937500 66.152778 86.051200 17.168408 16.755197 83.280428 13.250000 66.652778 286.793049 12.117345 16.750891 78.253373
+ T4 736 17.937500 66.152778 86.051200 0 0.0 0.0 0.0 0.0 0 0 0 14.013311
+ T4 738 13.250000 66.652778 286.793049 0 0.0 0.0 0.0 0.0 0 0 0 14.013311
+ W3 0 0.000000 17.937500 66.152778 16.360997 66.043954 14.762864 66.196218 13.250000 66.652778
+ SUBSEGS
+ C 0 0.000000 13.126477 16.963380 79.243061 175.744151 20.688755
+ SUBSEND
+ END$SEGS
+CORNU 738 0 0 0 0 N 2 13.250000 66.652778 106.793049 12.117345 16.750891 78.253373 8.375000 69.465278 312.710897 15.007652 18.554682 80.492684
+ T4 737 13.250000 66.652778 106.793049 0 0.0 0.0 0.0 0.0 0 0 0 14.019765
+ T4 739 8.375000 69.465278 312.710897 9 0.000000 0.000000 14.023282 14.023282 1 1 0 14.019765
+ W3 0 0.000000 13.250000 66.652778 12.344078 66.926172 11.469700 67.304213 10.650367 67.777639
+ SUBSEGS
+ C 0 0.000000 12.310846 16.806582 78.438687 196.792008 13.212246
+ SUBSEND
+ W3 0 0.000000 10.650367 67.777639 9.831034 68.251064 9.070310 68.823419 8.375000 69.465278
+ SUBSEGS
+ C 0 0.000000 12.828714 17.108339 78.862336 210.225182 12.678266
+ SUBSEND
+ END$SEGS
+CORNU 739 0 0 0 0 N 2 8.375000 69.465278 132.710897 15.007652 18.554682 80.492684 6.809483 71.149230 321.444207 15.132970 18.643489 80.581253
+ T4 738 8.375000 69.465278 132.710897 9 0.000000 0.000000 14.023282 14.023282 1 1 0 14.050436
+ T4 884 6.809483 71.149230 321.444207 0 0.0 0.0 0.0 0.0 0 0 0 14.050436
+ W3 0 0.000000 8.375000 69.465278 7.811304 69.985641 7.287634 70.549312 6.809483 71.149230
+ SUBSEGS
+ C 0 0.000000 15.106368 18.623952 80.563086 222.722825 8.729077
+ SUBSEND
+ END$SEGS
+STRAIGHT 740 0 0 0 0 N 2 0.000000 0.000000
+ E4 7.185975 78.224885 302.594933 0 0.0 0.0 0.0 0.0 0 0 0 13.955402
+ T4 742 13.954824 73.896869 122.594933 0 0.0 0.0 0.0 0.0 0 0 0 13.955402
+ END$SEGS
+CORNU 741 0 0 0 0 N 2 30.093750 74.116319 66.989307 23.942246 39.452844 52.079112 26.218750 72.491319 251.451636 18.072310 20.469857 89.624872
+ T4 730 30.093750 74.116319 66.989307 0 0.0 0.0 0.0 0.0 0 0 0 13.955402
+ T4 742 26.218750 72.491319 251.451636 0 0.0 0.0 0.0 0.0 0 0 0 13.955402
+ W3 0 0.000000 30.093750 74.116319 28.803982 73.568561 27.547226 72.937068 26.218750 72.491319
+ SUBSEGS
+ C 0 0.000000 160.288941 -35.403069 220.412975 155.882001 1.127130
+ C 0 0.000000 18.045551 20.441944 89.587238 157.995311 3.334293
+ SUBSEND
+ END$SEGS
+CORNU 742 0 0 0 0 N 2 26.218750 72.491319 71.451636 18.072310 20.469857 89.624872 13.954824 73.896869 302.594933 0.000000 0.000000 6.000000
+ T4 741 26.218750 72.491319 71.451636 0 0.0 0.0 0.0 0.0 0 0 0 13.955402
+ T4 740 13.954824 73.896869 302.594933 0 0.0 0.0 0.0 0.0 0 0 0 13.955402
+ W3 0 0.000000 26.218750 72.491319 25.201202 72.149897 24.155608 71.890637 23.095172 71.724960
+ SUBSEGS
+ C 0 0.000000 19.094016 20.123409 90.586298 161.383766 9.662407
+ SUBSEND
+ W3 0 0.000000 23.095172 71.724960 22.034737 71.559283 20.955453 71.494053 19.886078 71.585754
+ SUBSEGS
+ C 0 0.000000 13.403272 20.913942 84.949556 170.634108 13.764084
+ SUBSEND
+ W3 0 0.000000 19.886078 71.585754 18.816702 71.677455 17.761714 71.933382 16.769779 72.343304
+ SUBSEGS
+ C 0 0.000000 10.529531 20.786135 82.076746 184.903593 17.519154
+ SUBSEND
+ W3 0 0.000000 16.769779 72.343304 15.777843 72.753226 14.859079 73.318686 13.954824 73.896869
+ SUBSEGS
+ C 0 0.000000 15.127022 22.735200 86.244403 203.225771 9.143208
+ S 0 0.000000 14.636652 73.467849 13.954824 73.896869
+ SUBSEND
+ END$SEGS
+CORNU 743 0 0 0 0 N 2 44.294647 76.476008 76.311145 226.230108 -9.242516 296.280089 34.687500 74.208333 255.441971 133.423303 68.224836 -54.931223
+ T4 764 44.294647 76.476008 76.311145 0 0.0 0.0 0.0 0.0 0 0 0 13.543890
+ T4 727 34.687500 74.208333 255.441971 0 0.0 0.0 0.0 0.0 0 0 0 13.543890
+ W3 0 0.000000 44.294647 76.476008 41.097604 75.697312 37.872362 75.035437 34.687500 74.208333
+ SUBSEGS
+ S 0 0.000000 44.294647 76.476008 37.082646 74.802087
+ C 0 0.000000 -121.357356 65.084067 -43.280630 345.494581 1.165056
+ SUBSEND
+ END$SEGS
+CORNU 744 0 0 0 0 N 2 28.125000 71.770833 62.896270 102.304329 74.735145 -19.298756 23.000000 69.145833 246.092806 14.814632 16.996276 82.689415
+ T4 727 28.125000 71.770833 62.896270 0 0.0 0.0 0.0 0.0 0 0 0 13.178190
+ T4 745 23.000000 69.145833 246.092806 0 0.0 0.0 0.0 0.0 0 0 0 13.178190
+ W3 0 0.000000 28.125000 71.770833 26.416200 70.896255 24.754909 69.923765 23.000000 69.145833
+ SUBSEGS
+ C 0 0.000000 -200.169701 120.576293 -105.769776 331.668004 0.824506
+ C 0 0.000000 41.008247 6.117257 106.517604 151.666660 4.022210
+ SUBSEND
+ END$SEGS
+CORNU 745 0 0 0 0 N 2 23.000000 69.145833 66.092806 14.814632 16.996276 82.689415 13.375000 68.833333 293.373579 10.901771 17.700001 78.840479
+ T4 744 23.000000 69.145833 66.092806 0 0.0 0.0 0.0 0.0 0 0 0 12.984987
+ T4 746 13.375000 68.833333 293.373579 0 0.0 0.0 0.0 0.0 0 0 0 12.984987
+ W3 0 0.000000 23.000000 69.145833 21.489316 68.476163 19.862965 68.051182 18.212457 67.970894
+ SUBSEGS
+ C 0 0.000000 13.486610 17.445926 81.435704 155.680700 21.061056
+ SUBSEND
+ W3 0 0.000000 18.212457 67.970894 17.387203 67.930750 16.557210 67.978490 15.743550 68.122061
+ SUBSEGS
+ C 0 0.000000 11.113625 17.652981 79.070428 177.114430 12.778641
+ SUBSEND
+ W3 0 0.000000 15.743550 68.122061 14.929890 68.265633 14.133427 68.505547 13.375000 68.833333
+ SUBSEGS
+ C 0 0.000000 10.636550 17.597711 78.595756 190.039078 13.351695
+ SUBSEND
+ END$SEGS
+CORNU 746 0 0 0 0 N 2 13.375000 68.833333 113.373579 10.901771 17.700001 78.840479 9.687500 71.340278 314.243393 13.970712 19.434975 81.348650
+ T4 745 13.375000 68.833333 113.373579 0 0.0 0.0 0.0 0.0 0 0 0 12.807508
+ T4 747 9.687500 71.340278 314.243393 0 0.0 0.0 0.0 0.0 0 0 0 12.807508
+ W3 0 0.000000 13.375000 68.833333 12.003085 69.426263 10.758178 70.297510 9.687500 71.340278
+ SUBSEGS
+ C 0 0.000000 12.343507 18.356937 80.126803 203.803922 20.811765
+ SUBSEND
+ END$SEGS
+CORNU 747 0 0 0 0 N 2 9.687500 71.340278 134.243393 13.970712 19.434975 81.348650 8.227929 73.007013 323.338923 13.970712 19.434975 81.348650
+ T4 746 9.687500 71.340278 134.243393 0 0.0 0.0 0.0 0.0 0 0 0 12.724905
+ T4 881 8.227929 73.007013 323.338923 0 0.0 0.0 0.0 0.0 0 0 0 12.724905
+ W3 0 0.000000 9.687500 71.340278 9.157900 71.856072 8.669332 72.413985 8.227929 73.007013
+ SUBSEGS
+ C 0 0.000000 13.978028 19.440495 81.353487 224.245769 9.090761
+ SUBSEND
+ END$SEGS
+CORNU 748 0 0 0 0 N 2 90.500000 79.708333 302.020561 15.956316 82.039586 66.179646 97.500000 69.708333 168.815354 14.888136 82.894632 66.820460
+ T4 760 90.500000 79.708333 302.020561 0 0.0 0.0 0.0 0.0 0 0 0 14.341241
+ T4 773 97.500000 69.708333 168.815354 0 0.0 0.0 0.0 0.0 0 0 0 14.341241
+ W3 0 0.000000 90.500000 79.708333 92.273850 78.599023 93.830283 77.140028 95.037458 75.431274
+ SUBSEGS
+ C 0 0.000000 15.866470 82.097808 66.249208 31.975492 22.664729
+ SUBSEND
+ W3 0 0.000000 95.037458 75.431274 96.244633 73.722521 97.094182 71.760752 97.500000 69.708333
+ SUBSEGS
+ C 0 0.000000 15.002513 82.788200 66.769225 54.734001 23.968245
+ SUBSEND
+ END$SEGS
+CORNU 749 0 0 0 0 N 2 96.125000 76.958333 323.927568 16.933469 82.438129 66.987779 99.250000 68.833333 174.468363 16.510658 82.816230 67.241782
+ T4 763 96.125000 76.958333 323.927568 0 0.0 0.0 0.0 0.0 0 0 0 14.361228
+ T4 774 99.250000 68.833333 174.468363 0 0.0 0.0 0.0 0.0 0 0 0 14.361228
+ W3 0 0.000000 96.125000 76.958333 96.989533 75.771563 97.702603 74.473887 98.233974 73.105133
+ SUBSEGS
+ C 0 0.000000 17.013251 82.380293 66.931683 53.889559 14.834420
+ SUBSEND
+ W3 0 0.000000 98.233974 73.105133 98.765344 71.736379 99.108465 70.294774 99.250000 68.833333
+ SUBSEGS
+ C 0 0.000000 16.114120 83.211373 67.275355 68.790402 15.661342
+ SUBSEND
+ END$SEGS
+TURNOUT 750 0 0 0 0 N 2 53.103350 77.607079 0 345.932087 "Peco-55 Scissors Crossover SL-E383F"
+ T4 731 53.103350 77.607079 255.932087 9 0.000000 0.000000 14.012536 14.012536 1 1 0 14.015019
+ T4 759 63.443639 80.198222 75.932087 0 0.0 0.0 0.0 0.0 0 0 0 14.015019
+ T4 752 52.849583 78.619767 255.932087 0 0.0 0.0 0.0 0.0 0 0 0 14.015019
+ T4 754 63.189872 81.210911 75.932087 9 0.000000 0.000000 14.087755 14.087755 1 1 0 14.015019
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 0 4 5 6
+ P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
+ S 0 0.000000 0.000000 0.000000 0.652040 0.000000
+ S 0 0.000000 0.652040 0.000000 10.007960 0.000000
+ S 0 0.000000 10.007960 0.000000 10.660000 0.000000
+ S 0 0.000000 0.000000 1.044000 0.652040 1.044000
+ S 0 0.000000 0.652040 1.044000 10.007960 1.044000
+ S 0 0.000000 10.007960 1.044000 10.660000 1.044000
+ C 0 0.000000 -21.102603 0.652040 21.102603 168.152890 11.847110
+ S 0 0.000000 4.984421 0.449508 5.675579 0.594492
+ C 0 0.000000 21.102603 10.007960 -20.058603 348.152890 11.847110
+ C 0 0.000000 21.102603 0.652040 -20.058603 0.000000 11.847110
+ S 0 0.000000 4.984421 0.594492 5.675579 0.449508
+ C 0 0.000000 -21.102603 10.007960 21.102603 180.000000 11.847110
+ END$SEGS
+STRAIGHT 751 0 0 0 0 N 2 0.000000 0.000000
+ T4 757 63.027384 82.716574 75.932086 0 0.0 0.0 0.0 0.0 0 0 0 14.101753
+ T4 758 51.246390 79.764406 255.932086 9 0.000000 0.000000 14.100000 14.100000 1 1 0 14.101753
+ END$SEGS
+TURNOUT 752 0 0 0 0 N 2 52.849583 78.619767 0 165.932087 "Peco-80 Large Right SL-1736/388"
+ T4 750 52.849583 78.619767 75.932087 0 0.0 0.0 0.0 0.0 0 0 0 13.805345
+ T4 764 46.739294 77.088606 255.932087 0 0.0 0.0 0.0 0.0 0 0 0 13.805345
+ T4 753 46.612411 77.594950 263.932087 0 0.0 0.0 0.0 0.0 0 0 0 13.805345
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 31.901195 0.354173 -31.901195 0.000076 8.000152
+ S 0 0.000000 4.794168 -0.310471 6.299213 -0.522000
+ END$SEGS
+CORNU 753 0 0 0 0 N 2 46.612411 77.594950 83.932087 0.000000 2.444647 8.237598 43.045194 77.233136 263.304630 0.000000 2.444647 8.237598
+ T4 752 46.612411 77.594950 83.932087 0 0.0 0.0 0.0 0.0 0 0 0 13.878346
+ T4 732 43.045194 77.233136 263.304630 0 0.0 0.0 0.0 0.0 0 0 0 13.878346
+ W3 0 0.000000 46.612411 77.594950 45.423899 77.468608 44.232252 77.372486 43.045194 77.233136
+ SUBSEGS
+ S 0 0.000000 46.612411 77.594950 43.045194 77.233136
+ SUBSEND
+ END$SEGS
+TURNOUT 754 0 0 0 0 N 2 63.189872 81.210911 0 345.932087 "Peco-80 Large Left SL-1737/389"
+ T4 750 63.189872 81.210911 255.932087 9 0.000000 0.000000 14.087755 14.087755 1 1 0 14.060593
+ T4 761 69.300161 82.742072 75.932087 0 0.0 0.0 0.0 0.0 0 0 0 14.060593
+ T4 756 69.173277 83.248416 67.932087 9 0.000000 0.000000 14.000000 14.000000 1 1 0 14.060593
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+TURNOUT 755 0 0 0 0 N 2 79.101547 86.418662 0 175.747086 "Peco-80 Curved Left SL-1735/387"
+ T4 767 79.101547 86.418662 85.747086 0 0.0 0.0 0.0 0.0 0 0 0 14.107378
+ T4 757 73.020503 85.438225 255.932086 0 0.0 0.0 0.0 0.0 0 0 0 14.107378
+ T4 756 73.147775 84.926570 246.114086 9 0.000000 0.000000 14.046784 14.046784 1 1 0 14.107378
+ D 0.000000 0.000000
+ P "Normal" 1 2 3
+ P "Reverse" 1 4 5 6
+ C 0 0.000000 35.984252 0.000000 35.984252 179.920388 0.079612
+ C 0 0.000000 -35.880126 0.011345 35.880140 170.249825 9.688447
+ C 0 0.000000 36.000000 0.002864 35.984333 170.185000 0.079612
+ C 0 0.000000 -17.185618 0.172609 17.185215 170.289067 10.119708
+ C 0 0.000000 -18.699999 -0.281647 18.642768 160.368717 9.301755
+ C 0 0.000000 18.000000 0.000137 18.000011 160.367000 0.159155
+ END$SEGS
+CORNU 756 0 0 0 0 N 2 69.173277 83.248416 247.932087 0.000000 0.000000 7.625000 73.147775 84.926570 66.114086 18.000000 80.436277 68.468206
+ T4 754 69.173277 83.248416 247.932087 9 0.000000 0.000000 14.000000 14.000000 1 1 0 14.023392
+ T4 755 73.147775 84.926570 66.114086 9 0.000000 0.000000 14.046784 14.046784 1 1 0 14.023392
+ W3 0 0.000000 69.173277 83.248416 69.839771 83.518617 70.510226 83.779025 71.175207 84.052928
+ SUBSEGS
+ S 0 0.000000 69.173277 83.248416 71.175207 84.052928
+ SUBSEND
+ W3 0 0.000000 71.175207 84.052928 71.840188 84.326831 72.490188 84.635361 73.147775 84.926570
+ SUBSEGS
+ C 0 0.000000 -82.447993 38.776567 159.868492 155.362015 1.499274
+ SUBSEND
+ END$SEGS
+CORNU 757 0 0 0 0 N 2 63.027384 82.716574 255.932086 0.000000 0.000000 7.625000 73.020503 85.438225 75.932086 36.000000 81.767261 50.533203
+ T4 751 63.027384 82.716574 255.932086 0 0.0 0.0 0.0 0.0 0 0 0 14.105002
+ T4 755 73.020503 85.438225 75.932086 0 0.0 0.0 0.0 0.0 0 0 0 14.105002
+ W3 0 0.000000 63.027384 82.716574 66.376497 83.555819 69.671390 84.598980 73.020503 85.438225
+ SUBSEGS
+ C 0 0.000000 -169.475575 20.995930 246.897351 163.889460 1.750819
+ C 0 0.000000 169.475555 115.051952 -78.742532 343.889460 1.750819
+ SUBSEND
+ END$SEGS
+CORNU 758 0 0 0 0 N 2 51.246390 79.764406 75.932086 0.000000 0.000000 7.625000 42.912773 77.738060 255.304630 0.000000 0.000000 7.625000
+ T4 751 51.246390 79.764406 75.932086 9 0.000000 0.000000 14.100000 14.100000 1 1 0 14.044661
+ T4 732 42.912773 77.738060 255.304630 9 0.000000 0.000000 13.989322 13.989322 1 1 0 14.044661
+ W3 0 0.000000 51.246390 79.764406 48.473206 79.069481 45.678181 78.463312 42.912773 77.738060
+ SUBSEGS
+ S 0 0.000000 51.246390 79.764406 44.991578 78.262919
+ S 0 0.000000 44.991578 78.262919 42.912773 77.738060
+ SUBSEND
+ END$SEGS
+CORNU 759 0 0 0 0 N 2 63.443639 80.198222 255.932087 0.000000 0.000000 6.000000 74.146042 82.368056 82.861803 61.868913 81.834059 20.978669
+ T4 750 63.443639 80.198222 255.932087 0 0.0 0.0 0.0 0.0 0 0 0 14.104459
+ T4 760 74.146042 82.368056 82.861803 0 0.0 0.0 0.0 0.0 0 0 0 14.104459
+ W3 0 0.000000 63.443639 80.198222 66.976991 81.083635 70.531674 81.915416 74.146042 82.368056
+ SUBSEGS
+ C 0 0.000000 143.772018 98.909129 -59.130857 345.718941 2.178049
+ C 0 0.000000 65.851634 82.573050 17.057848 347.895671 4.752050
+ SUBSEND
+ END$SEGS
+CORNU 760 0 0 0 0 N 2 74.146042 82.368056 262.861803 61.868913 81.834059 20.978669 90.500000 79.708333 122.020561 15.956316 82.039586 66.179646
+ T4 759 74.146042 82.368056 262.861803 0 0.0 0.0 0.0 0.0 0 0 0 14.219491
+ T4 748 90.500000 79.708333 122.020561 0 0.0 0.0 0.0 0.0 0 0 0 14.219491
+ W3 0 0.000000 74.146042 82.368056 76.941455 82.718136 79.781527 82.841558 82.572138 82.455056
+ SUBSEGS
+ C 0 0.000000 35.746429 78.915260 46.941206 352.332848 10.162146
+ C 0 0.000000 24.958408 79.173763 57.729095 2.980212 4.845580
+ SUBSEND
+ W3 0 0.000000 82.572138 82.455056 83.967444 82.261806 85.347082 81.947727 86.681308 81.495994
+ SUBSEGS
+ C 0 0.000000 22.395579 79.559134 60.263081 7.731770 10.811272
+ SUBSEND
+ W3 0 0.000000 86.681308 81.495994 88.015535 81.044261 89.305687 80.455219 90.500000 79.708333
+ SUBSEGS
+ C 0 0.000000 18.204116 80.924464 64.226119 18.435604 13.300616
+ SUBSEND
+ END$SEGS
+CORNU 761 0 0 0 0 N 2 69.300161 82.742072 255.932087 0.000000 0.000000 6.000000 81.000000 84.333333 91.868768 31.957645 79.957849 52.392685
+ T4 754 69.300161 82.742072 255.932087 0 0.0 0.0 0.0 0.0 0 0 0 14.134304
+ T4 762 81.000000 84.333333 91.868768 0 0.0 0.0 0.0 0.0 0 0 0 14.134304
+ W3 0 0.000000 69.300161 82.742072 71.216244 83.222218 73.139303 83.687061 75.092846 83.979608
+ SUBSEGS
+ C 0 0.000000 77.188773 88.624420 8.011357 345.501738 3.299268
+ C 0 0.000000 37.704110 80.707858 46.695945 349.184877 2.250600
+ SUBSEND
+ W3 0 0.000000 75.092846 83.979608 77.046390 84.272155 79.025724 84.397749 81.000000 84.333333
+ SUBSEGS
+ C 0 0.000000 32.713457 79.993812 51.635354 351.383796 10.378764
+ SUBSEND
+ END$SEGS
+CORNU 762 0 0 0 0 N 2 81.000000 84.333333 271.868768 31.957645 79.957849 52.392685 89.125000 82.583333 113.794178 18.764459 81.554435 65.413841
+ T4 761 81.000000 84.333333 271.868768 0 0.0 0.0 0.0 0.0 0 0 0 14.216870
+ T4 763 89.125000 82.583333 113.794178 0 0.0 0.0 0.0 0.0 0 0 0 14.216870
+ W3 0 0.000000 81.000000 84.333333 82.393243 84.287875 83.784994 84.142714 85.149044 83.855383
+ SUBSEGS
+ C 0 0.000000 23.911702 80.348561 60.430506 1.561131 10.020200
+ SUBSEND
+ W3 0 0.000000 85.149044 83.855383 86.513095 83.568053 87.849503 83.145739 89.125000 82.583333
+ SUBSEGS
+ C 0 0.000000 20.155297 81.028318 64.125821 11.797236 11.888191
+ SUBSEND
+ END$SEGS
+CORNU 763 0 0 0 0 N 2 89.125000 82.583333 293.794178 18.764459 81.554435 65.413841 96.125000 76.958333 143.927568 16.933469 82.438129 66.987779
+ T4 762 89.125000 82.583333 293.794178 0 0.0 0.0 0.0 0.0 0 0 0 14.288139
+ T4 749 96.125000 76.958333 143.927568 0 0.0 0.0 0.0 0.0 0 0 0 14.288139
+ W3 0 0.000000 89.125000 82.583333 90.510555 81.972398 91.819762 81.186249 92.999703 80.237174
+ SUBSEGS
+ C 0 0.000000 17.356081 82.149545 66.690675 23.697177 14.996037
+ SUBSEND
+ W3 0 0.000000 92.999703 80.237174 94.179643 79.288098 95.233388 78.182274 96.125000 76.958333
+ SUBSEGS
+ C 0 0.000000 17.243968 82.188399 66.803256 38.826298 15.094285
+ SUBSEND
+ END$SEGS
+CORNU 764 0 0 0 0 N 2 46.739294 77.088606 75.932087 0.000000 0.000000 2.500000 44.294647 76.476008 256.311145 226.230108 -9.242516 296.280089
+ T4 752 46.739294 77.088606 75.932087 0 0.0 0.0 0.0 0.0 0 0 0 13.696633
+ T4 743 44.294647 76.476008 256.311145 0 0.0 0.0 0.0 0.0 0 0 0 13.696633
+ W3 0 0.000000 46.739294 77.088606 45.924408 76.884406 45.110866 76.674812 44.294647 76.476008
+ SUBSEGS
+ S 0 0.000000 46.739294 77.088606 44.294647 76.476008
+ SUBSEND
+ END$SEGS
+TURNOUT 765 0 0 0 0 N 2 114.382464 82.822540 0 357.573648 "Peco-80 Medium Left SL-1739/396"
+ T4 766 114.382464 82.822540 267.573648 0 0.0 0.0 0.0 0.0 0 0 0 14.988703
+ T4 556 119.248177 83.028716 87.573648 9 0.225507 -0.818190 15.000000 15.000000 1 1 0 14.988703
+ T4 1342 119.226078 83.550248 73.573648 0 0.0 0.0 0.0 0.0 0 0 0 14.988703
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.973080 0.000000
+ S 0 0.000000 0.973080 0.000000 4.870079 0.000000
+ C 0 0.000000 -14.687496 0.973099 14.687496 165.999924 14.000152
+ S 0 0.000000 4.526342 0.436290 4.870079 0.522000
+ END$SEGS
+CORNU 766 0 0 0 0 N 2 93.583542 85.055556 282.442041 72.412354 77.982162 14.343846 114.382464 82.822540 87.573648 0.000000 0.000000 2.500000
+ T4 767 93.583542 85.055556 282.442041 0 0.0 0.0 0.0 0.0 0 0 0 14.711324
+ T4 765 114.382464 82.822540 87.573648 0 0.0 0.0 0.0 0.0 0 0 0 14.711324
+ W3 0 0.000000 93.583542 85.055556 97.005078 84.300650 100.404191 83.400276 103.884896 82.998427
+ SUBSEGS
+ S 0 0.000000 93.583542 85.055556 98.712031 83.894595
+ C 0 0.000000 -53.748697 110.462486 136.343134 187.029290 5.598609
+ SUBSEND
+ W3 0 0.000000 103.884896 82.998427 107.365601 82.596579 110.881780 82.674205 114.382464 82.822540
+ SUBSEGS
+ C 0 0.000000 -48.642728 109.228230 131.346785 180.120194 6.186392
+ C 0 0.000000 -106.588420 109.355214 189.292339 177.296638 2.826473
+ SUBSEND
+ END$SEGS
+CORNU 767 0 0 0 0 N 2 79.101547 86.418662 265.747086 35.984252 81.770111 50.533496 93.583542 85.055556 102.442041 72.412354 77.982162 14.343846
+ T4 755 79.101547 86.418662 265.747086 0 0.0 0.0 0.0 0.0 0 0 0 14.330461
+ T4 766 93.583542 85.055556 102.442041 0 0.0 0.0 0.0 0.0 0 0 0 14.330461
+ W3 0 0.000000 79.101547 86.418662 81.527783 86.599087 83.969415 86.520056 86.388439 86.260250
+ SUBSEGS
+ C 0 0.000000 40.302008 81.872653 46.212035 356.057317 10.376109
+ SUBSEND
+ W3 0 0.000000 86.388439 86.260250 88.807463 86.000444 91.207745 85.579737 93.583542 85.055556
+ SUBSEGS
+ C 0 0.000000 66.274105 79.058479 20.392742 6.349943 6.310139
+ SUBSEND
+ END$SEGS
+TURNOUT 768 0 0 0 0 N 2 93.434648 49.240760 0 282.488967 "Atlas 15 Degree Crossover 2564"
+ T4 776 93.434648 49.240760 192.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ T4 775 94.524420 54.160887 12.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ T4 777 92.816506 49.465609 207.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ T4 778 95.142561 53.936037 27.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ D 0.000000 0.000000
+ P "Normal" 1 0 2
+ S 0 0.000000 0.000000 0.000000 5.039370 0.000000
+ S 0 0.000000 0.085855 0.652139 4.953515 -0.652139
+ END$SEGS
+CORNU 769 0 0 0 0 N 2 95.634654 53.761885 19.488967 0.000000 -1.862096 10.039121 93.926835 49.042941 200.338198 0.000000 -1.862096 10.039121
+ T4 778 95.634654 53.761885 19.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ T4 776 93.926835 49.042941 200.338198 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ W3 0 0.000000 95.634654 53.761885 95.076550 52.184883 94.508251 50.611498 93.926835 49.042941
+ SUBSEGS
+ C 0 0.000000 338.588812 -223.590510 166.623208 109.470931 0.849231
+ SUBSEND
+ END$SEGS
+CORNU 770 0 0 0 0 N 2 94.035441 54.343601 20.488967 0.000000 -1.862096 10.039121 92.324414 49.639762 199.488967 0.000000 -1.862096 10.039121
+ T4 775 94.035441 54.343601 20.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ T4 777 92.324414 49.639762 199.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ W3 0 0.000000 94.035441 54.343601 93.451425 52.780663 92.881064 51.212654 92.324414 49.639762
+ SUBSEGS
+ C 0 0.000000 -286.790291 362.683355 -46.040509 289.488917 0.999999
+ SUBSEND
+ END$SEGS
+CORNU 771 0 0 0 0 N 2 90.222837 43.701457 19.488967 0.000000 0.000000 6.000000 87.907528 35.179207 190.272694 35.984252 123.314957 28.762017
+ T4 777 90.222837 43.701457 19.488967 9 0.000000 0.000000 14.500000 14.500000 1 1 0 14.642898
+ T4 804 87.907528 35.179207 190.272694 0 0.0 0.0 0.0 0.0 0 0 0 14.642898
+ W3 0 0.000000 90.222837 43.701457 89.731204 42.312279 89.265958 40.912899 88.883621 39.489756
+ SUBSEGS
+ C 0 0.000000 -56.908015 143.744681 24.364076 285.414003 4.450726
+ SUBSEND
+ W3 0 0.000000 88.883621 39.489756 88.501285 38.066613 88.170321 36.629192 87.907528 35.179207
+ SUBSEGS
+ C 0 0.000000 -53.167060 140.204995 25.602607 280.376912 4.764268
+ SUBSEND
+ END$SEGS
+CORNU 772 0 0 0 0 N 2 91.737475 43.136437 20.338198 0.000000 0.000000 6.000000 91.800639 22.979011 150.645254 18.507890 107.932140 32.051865
+ T4 776 91.737475 43.136437 20.338198 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ T4 806 91.800639 22.979011 150.645254 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ W3 0 0.000000 91.737475 43.136437 91.131847 41.502561 90.535076 39.861929 90.100836 38.174395
+ SUBSEGS
+ C 0 0.000000 -65.107092 152.590675 19.988618 287.375641 3.450567
+ C 0 0.000000 -30.480199 119.612242 30.550785 284.484425 2.455723
+ SUBSEND
+ W3 0 0.000000 90.100836 38.174395 89.666596 36.486862 89.393346 34.754657 89.348042 33.012738
+ SUBSEGS
+ C 0 0.000000 -23.168821 112.504992 32.271171 271.834184 12.927060
+ SUBSEND
+ W3 0 0.000000 89.348042 33.012738 89.302738 31.270819 89.483103 29.522433 89.894756 27.829247
+ SUBSEGS
+ C 0 0.000000 -19.792142 109.132983 32.478920 256.412787 15.132736
+ SUBSEND
+ W3 0 0.000000 89.894756 27.829247 90.306408 26.136062 90.946435 24.497783 91.800639 22.979011
+ SUBSEGS
+ C 0 0.000000 -19.119601 108.476730 32.331396 240.715159 15.665337
+ SUBSEND
+ END$SEGS
+CORNU 773 0 0 0 0 N 2 97.500000 69.708333 348.815354 14.888136 82.894632 66.820460 96.240336 60.244323 200.488967 0.000000 0.000000 6.000000
+ T4 748 97.500000 69.708333 348.815354 0 0.0 0.0 0.0 0.0 0 0 0 14.433190
+ T4 775 96.240336 60.244323 200.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.433190
+ W3 0 0.000000 97.500000 69.708333 97.813397 68.123333 97.849483 66.483820 97.598129 64.887806
+ SUBSEGS
+ C 0 0.000000 13.824450 83.939256 67.021022 78.791010 20.085626
+ SUBSEND
+ W3 0 0.000000 97.598129 64.887806 97.346774 63.291791 96.805870 61.757800 96.240336 60.244323
+ SUBSEGS
+ C 0 0.000000 19.969565 77.922432 68.301087 99.841556 10.424819
+ S 0 0.000000 96.655729 61.383926 96.240336 60.244323
+ SUBSEND
+ END$SEGS
+CORNU 774 0 0 0 0 N 2 99.250000 68.833333 354.468363 16.510658 82.816230 67.241782 97.736231 59.700189 199.488967 0.000000 0.000000 6.000000
+ T4 749 99.250000 68.833333 354.468363 0 0.0 0.0 0.0 0.0 0 0 0 14.435371
+ T4 778 97.736231 59.700189 199.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.435371
+ W3 0 0.000000 99.250000 68.833333 99.400124 67.283211 99.323058 65.712705 99.038948 64.181464
+ SUBSEGS
+ C 0 0.000000 16.711559 82.612912 67.257423 84.588934 16.017501
+ SUBSEND
+ W3 0 0.000000 99.038948 64.181464 98.754838 62.650224 98.255811 61.168335 97.736231 59.700189
+ SUBSEGS
+ C 0 0.000000 24.807983 74.702821 68.996952 101.192760 8.090416
+ S 0 0.000000 98.119025 60.804432 97.736231 59.700189
+ SUBSEND
+ END$SEGS
+TURNOUT 775 0 0 0 0 N 2 96.240336 60.244323 0 110.488967 "Peco-80 Large Left SL-1737/389"
+ T4 773 96.240336 60.244323 20.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ T4 770 94.035441 54.343601 200.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ T4 768 94.524420 54.160887 192.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+TURNOUT 776 0 0 0 0 N 2 91.737475 43.136437 0 290.338198 "Peco-80 Large Left SL-1737/389"
+ T4 772 91.737475 43.136437 200.338198 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ T4 769 93.926835 49.042941 20.338198 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ T4 768 93.437378 49.224367 12.338198 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+TURNOUT 777 0 0 0 0 N 2 90.222837 43.701457 0 289.488967 "Peco-80 Large Right SL-1736/388"
+ T4 771 90.222837 43.701457 199.488967 9 0.000000 0.000000 14.500000 14.500000 1 1 0 14.500000
+ T4 770 92.324414 49.639762 19.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ T4 768 92.816506 49.465609 27.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 31.901195 0.354173 -31.901195 0.000076 8.000152
+ S 0 0.000000 4.794168 -0.310471 6.299213 -0.522000
+ END$SEGS
+TURNOUT 778 0 0 0 0 N 2 97.736231 59.700189 0 109.488967 "Peco-80 Large Right SL-1736/388"
+ T4 774 97.736231 59.700189 19.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ T4 769 95.634654 53.761885 199.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ T4 768 95.142561 53.936037 207.488967 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 31.901195 0.354173 -31.901195 0.000076 8.000152
+ S 0 0.000000 4.794168 -0.310471 6.299213 -0.522000
+ END$SEGS
+DRAW 779 7 3 0 0 69.958888 -50.212984 0 0.000000
+ Y4 6573132 0.040000 4 1
+ 38.031937 123.933192 0
+ 41.397728 126.690707 0
+ 42.988889 124.748554 0
+ 39.623098 121.991039 0
+ END$SEGS
+DRAW 780 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 108.343750 73.338542 0 111.625000 76.078125 0
+ END$SEGS
+DRAW 781 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 108.437500 73.182292 0 111.828125 75.984375 0
+ END$SEGS
+DRAW 782 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 108.578125 73.057292 0 111.890625 75.796875 0
+ END$SEGS
+DRAW 783 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 108.671875 72.885417 0 112.078125 75.734375 0
+ END$SEGS
+DRAW 784 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 108.765625 72.807292 0 112.140625 75.546875 0
+ END$SEGS
+DRAW 785 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 108.703125 72.546875 0 112.328125 75.484375 0
+ END$SEGS
+DRAW 786 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 108.890625 72.421875 0 112.390625 75.296875 0
+ END$SEGS
+DRAW 787 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 109.062500 72.354167 0 112.578125 75.234375 0
+ END$SEGS
+DRAW 788 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 109.203125 72.276042 0 112.578125 75.046875 0
+ END$SEGS
+DRAW 789 7 4 0 0 0.000000 7.625000 0 0.000000
+ Y4 11626343 0.138889 9 2
+ 120.562500 53.586806 0
+ 122.062500 55.461806 0
+ 124.125000 53.774306 0
+ 128.062500 52.649306 0
+ 129.437500 56.274306 0
+ 131.562500 59.586806 0
+ 134.000000 62.149306 0
+ 135.328125 63.421875 0
+ 134.828125 64.109375 0
+ END$SEGS
+DRAW 790 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 109.177084 72.036458 0 112.677084 74.911458 0
+ END$SEGS
+DRAW 791 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 109.348959 71.968750 0 112.864584 74.848958 0
+ END$SEGS
+DRAW 792 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 109.489584 71.890625 0 112.864584 74.661458 0
+ END$SEGS
+DRAW 793 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 108.052083 73.578125 0 111.442709 76.380208 0
+ END$SEGS
+DRAW 794 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 108.192708 73.453125 0 111.505209 76.192708 0
+ END$SEGS
+DRAW 795 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.026667 4 0
+ 110.752477 72.055797 0
+ 111.206450 72.478063 0
+ 113.978279 69.498110 0
+ 113.524307 69.075844 0
+ END$SEGS
+DRAW 796 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.026667 4 0
+ 116.438507 76.557051 0
+ 116.826696 77.040485 0
+ 118.717610 75.522119 0
+ 118.329419 75.038683 0
+ END$SEGS
+DRAW 797 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.026667 4 0
+ 117.698924 70.911218 0
+ 118.087113 71.394652 0
+ 119.978027 69.876286 0
+ 119.589836 69.392850 0
+ END$SEGS
+DRAW 798 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 4 0
+ 123.312500 75.520833 0
+ 127.125000 74.145833 0
+ 127.343750 74.677083 0
+ 124.125000 75.895833 0
+ END$SEGS
+DRAW 799 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.026667 4 0
+ 118.486701 81.018208 0
+ 119.092999 81.147831 0
+ 119.427064 79.585279 0
+ 118.820765 79.455656 0
+ END$SEGS
+DRAW 800 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5345359 0.000000 40 0
+ -0.125000 15.875000 0
+ 9.625000 15.625000 2
+ 21.500000 15.500000 2
+ 20.437500 18.687500 0
+ 18.937500 20.500000 0
+ 20.812500 19.500000 0
+ 21.937500 19.937500 0
+ 23.937500 20.687500 0
+ 26.562500 24.062500 2
+ 20.500000 26.312500 0
+ 14.286184 29.562500 0
+ 11.000000 30.937500 0
+ 7.937500 31.562500 0
+ 8.812500 32.687500 0
+ 7.350649 33.875000 2
+ 3.975649 40.250000 2
+ 4.975649 45.750000 2
+ 3.350649 45.625000 0
+ 1.829545 47.187500 2
+ 1.204545 53.062500 0
+ 2.579545 57.937500 0
+ 2.954545 61.562500 2
+ 5.485048 62.398026 2
+ 5.265625 65.343750 0
+ 4.765625 68.031250 2
+ 3.125000 70.416667 2
+ 1.625000 73.416667 2
+ 0.437500 76.479167 2
+ 1.562500 77.479167 0
+ 5.062500 80.604167 2
+ 4.562500 82.083333 2
+ 4.562500 83.208333 0
+ 3.562500 84.854167 2
+ 2.750000 83.541667 0
+ 2.125000 83.354167 2
+ 1.000000 84.666667 2
+ 0.015625 82.906250 0
+ 0.015625 74.218750 0
+ 0.015625 74.218750 0
+ -0.077452 61.898026 2
+ END$SEGS
+DRAW 801 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 4216377 0.000000 36 0
+ 16.125000 15.500000 0
+ 14.250000 19.937500 0
+ 11.625000 20.812500 0
+ 11.062500 22.062500 0
+ 10.000000 23.562500 0
+ 11.875000 21.750000 0
+ 13.562500 21.187500 0
+ 16.125000 18.437500 0
+ 19.875000 17.250000 0
+ 17.750000 20.000000 0
+ 17.062500 21.812500 0
+ 14.750000 24.000000 0
+ 16.875000 23.000000 0
+ 18.875000 23.250000 0
+ 21.625000 22.500000 0
+ 23.598684 23.750000 2
+ 11.036184 30.062500 0
+ 9.437500 30.687500 0
+ 6.750000 31.312500 0
+ 6.223684 31.875000 0
+ 6.223684 31.875000 0
+ 3.375000 32.125000 0
+ 5.348684 32.125000 0
+ 8.036184 32.125000 0
+ 5.223684 35.500000 0
+ 4.000000 38.299890 0
+ 4.000000 38.299890 0
+ 3.850649 40.875000 2
+ 4.625000 44.799890 0
+ 5.750000 48.049890 2
+ 4.250000 45.799890 0
+ 3.250000 45.924890 0
+ 2.750000 47.299890 0
+ 1.875000 48.674890 2
+ 0.350649 48.875000 0
+ -0.250000 15.625000 0
+ END$SEGS
+STRUCTURE 802 5 0 0 0 N 2 0.798733 95.164174 0 11.750444 "DPM Wilhe. merchantile (chesterfied cigarettes) 516 X2M "
+ D 0.000000 0.000000
+ F4 65535 0.000000 4 0
+ 0.000000 2.562500 0
+ 5.250000 2.562500 0
+ 5.250000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE 803 5 0 0 0 N 2 6.132907 95.053266 0 11.750444 "DPM Wilhe. merchantile (chesterfield cigarettes) 516x2M"
+ D 0.000000 0.000000
+ F4 65535 0.000000 4 0
+ 0.000000 2.562500 0
+ 5.250000 2.562500 0
+ 5.250000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+TURNOUT 804 0 0 0 0 N 2 87.907528 35.179207 0 100.272694 "Peco-80 Curved Left SL-1735/387"
+ T4 771 87.907528 35.179207 10.272694 0 0.0 0.0 0.0 0.0 0 0 0 14.885362
+ T4 809 87.331423 29.046633 180.457694 4 0.000000 0.000000 0.0 0.0 0 4 0 14.885362
+ T4 993 87.858645 29.041507 170.639694 0 0.0 0.0 0.0 0.0 0 0 0 14.885362
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 2 5 6 7
+ C 0 0.000000 -35.984252 0.000000 35.984252 179.681551 0.318449
+ S 0 0.000000 0.199999 0.000556 0.249998 0.000732
+ C 0 0.000000 -35.417758 0.050634 35.417928 170.428493 9.248991
+ C 0 0.000000 -35.984252 0.002864 35.984333 170.185000 0.318449
+ C 0 0.000000 -16.099920 0.301422 16.100570 170.001792 10.181213
+ C 0 0.000000 -19.147709 -0.432227 19.064875 160.817514 8.562309
+ C 0 0.000000 -17.992126 0.002783 17.992594 160.367000 0.636898
+ END$SEGS
+CORNU 805 0 0 0 0 N 2 108.048230 14.034224 86.592923 18.481881 106.949858 32.483438 94.809107 19.000888 314.932247 17.022575 106.831643 31.051891
+ T4 820 108.048230 14.034224 86.592923 9 0.000000 0.000000 14.500000 14.500000 1 1 0 14.500000
+ T4 806 94.809107 19.000888 314.932247 9 0.000000 0.000000 14.500000 14.500000 1 1 0 14.500000
+ W3 0 0.000000 108.048230 14.034224 105.623720 13.889881 103.167421 14.240183 100.892634 15.091315
+ SUBSEGS
+ C 0 0.000000 17.513236 106.974702 31.514527 176.485676 23.835612
+ SUBSEND
+ W3 0 0.000000 100.892634 15.091315 98.617847 15.942446 96.528559 17.285497 94.809107 19.000888
+ SUBSEGS
+ C 0 0.000000 17.160781 106.920296 31.158664 200.563567 24.326448
+ SUBSEND
+ END$SEGS
+CORNU 806 0 0 0 0 N 2 91.800639 22.979011 330.645254 18.507890 107.932140 32.051865 94.809107 19.000888 134.932247 17.022575 106.831643 31.051891
+ T4 772 91.800639 22.979011 330.645254 0 0.0 0.0 0.0 0.0 0 0 0 14.500000
+ T4 805 94.809107 19.000888 134.932247 9 0.000000 0.000000 14.500000 14.500000 1 1 0 14.500000
+ W3 0 0.000000 91.800639 22.979011 92.618172 21.525440 93.628470 20.178736 94.809107 19.000888
+ SUBSEGS
+ C 0 0.000000 -18.272978 107.743027 31.908849 225.057556 15.687871
+ SUBSEND
+ END$SEGS
+CORNU 807 0 0 0 0 N 2 108.125000 9.250000 89.785059 21.650315 108.043781 30.900163 100.125000 10.750000 291.843667 22.194477 108.383018 31.350970
+ T4 821 108.125000 9.250000 89.785059 10 0.000000 0.000000 0.0 0.0 1 2 0 15.837265
+ T4 808 100.125000 10.750000 291.843667 10 0.000000 0.000000 0.0 0.0 1 2 0 15.837265
+ W3 0 0.000000 108.125000 9.250000 106.759923 9.244879 105.394035 9.363830 104.051522 9.611052
+ SUBSEGS
+ C 0 0.000000 22.050763 108.026706 31.300543 179.744595 10.641138
+ SUBSEND
+ W3 0 0.000000 104.051522 9.611052 102.709008 9.858274 101.392077 10.242085 100.125000 10.750000
+ SUBSEGS
+ C 0 0.000000 20.580889 107.793382 29.848924 190.475345 11.400540
+ SUBSEND
+ END$SEGS
+CORNU 808 0 0 0 0 N 2 100.125000 10.750000 111.843667 22.194477 108.383018 31.350970 95.360606 13.379502 305.917535 22.254068 108.415292 31.402229
+ T4 807 100.125000 10.750000 111.843667 10 0.000000 0.000000 0.0 0.0 1 2 0 15.682892
+ T4 985 95.360606 13.379502 305.917535 0 0.0 0.0 0.0 0.0 0 0 0 15.682892
+ W3 0 0.000000 100.125000 10.750000 98.437046 11.426626 96.833356 12.312722 95.360606 13.379502
+ SUBSEGS
+ C 0 0.000000 22.237714 108.407329 31.387804 201.866497 14.056225
+ SUBSEND
+ END$SEGS
+CORNU 809 0 0 0 0 N 2 93.375000 15.000000 132.547801 22.194477 108.383018 31.350970 87.331423 29.046633 0.457694 35.984252 123.314526 28.759184
+ T4 985 93.375000 15.000000 132.547801 0 0.0 0.0 0.0 0.0 0 0 0 15.331595
+ T4 804 87.331423 29.046633 0.457694 4 0.000000 0.000000 0.0 0.0 0 4 0 15.331595
+ W3 0 0.000000 93.375000 15.000000 92.404544 15.890749 91.511646 16.867389 90.727192 17.925618
+ SUBSEGS
+ C 0 0.000000 20.782942 107.390650 30.345756 222.406209 10.894724
+ SUBSEND
+ W3 0 0.000000 90.727192 17.925618 89.942737 18.983848 89.268784 20.125471 88.742004 21.332832
+ SUBSEGS
+ C 0 0.000000 17.466136 104.729549 28.365919 233.291412 12.963395
+ SUBSEND
+ W3 0 0.000000 88.742004 21.332832 88.215225 22.540194 87.838759 23.812343 87.614628 25.110413
+ SUBSEGS
+ C 0 0.000000 16.455418 103.832974 27.893579 246.503171 13.759371
+ SUBSEND
+ W3 0 0.000000 87.614628 25.110413 87.390497 26.408482 87.320900 27.729398 87.331423 29.046633
+ SUBSEGS
+ C 0 0.000000 22.095203 109.423205 28.657804 260.761162 10.247176
+ SUBSEND
+ END$SEGS
+TURNOUT 810 0 0 0 0 N 2 126.879507 45.082103 0 91.332044 "Peco-80 Medium Right SL-1738/395"
+ T4 971 126.879507 45.082103 1.332044 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ T4 1538 126.766295 40.213341 181.332044 9 -3.516295 0.432492 15.015595 15.015595 1 1 0 15.015662
+ T4 812 126.244436 40.225475 195.332044 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.973080 0.000000
+ S 0 0.000000 0.973080 0.000000 4.870079 0.000000
+ C 0 0.000000 14.687496 0.973021 -14.687496 0.000076 14.000152
+ S 0 0.000000 4.526342 -0.436290 4.870079 -0.522000
+ END$SEGS
+TURNOUT 811 0 0 0 0 N 2 123.963553 35.289470 0 127.832044 "Peco-80 Wye SL-1741/397"
+ T4 812 123.963553 35.289470 37.832044 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ T4 822 121.102950 31.180325 213.832044 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ T4 819 120.690668 31.500494 221.832044 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ D 0.000000 0.000000
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ C 0 0.000000 -26.154032 0.354335 26.154032 175.999924 4.000152
+ S 0 0.000000 2.178781 0.063715 5.000000 0.261000
+ C 0 0.000000 26.154032 0.354196 -26.154032 0.000076 4.000152
+ S 0 0.000000 2.178781 -0.063715 5.000000 -0.261000
+ END$SEGS
+TURNOUT 812 0 0 0 0 N 2 126.244436 40.225475 0 105.332044 "PECO Curved Right ST44"
+ T4 810 126.244436 40.225475 15.332044 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ T4 811 123.963553 35.289470 217.832044 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ T4 1555 123.034383 35.129387 229.082044 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 3
+ S 0 0.000000 0.000000 0.000000 0.866142 0.000000
+ C 0 0.000000 11.751969 0.866142 -11.751969 0.000000 22.500000
+ C 0 0.000000 10.374016 0.000000 -10.374016 0.000000 33.750000
+ END$SEGS
+DRAW 813 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 10187826 0.000000 30 0
+ 117.390625 36.046875 0
+ 116.703125 34.859375 0
+ 118.203125 32.734375 0
+ 118.828125 32.234375 0
+ 120.015625 30.609375 0
+ 120.202257 29.748652 0
+ 121.015625 28.171875 0
+ 121.687921 27.400382 0
+ 122.265625 27.421875 0
+ 123.640625 26.859375 0
+ 125.578125 26.046875 0
+ 127.328125 25.734375 0
+ 127.765625 26.109375 0
+ 128.953125 26.359375 0
+ 130.765625 27.171875 0
+ 132.548918 26.206938 0
+ 132.562500 25.164207 0
+ 131.265625 25.546875 0
+ 129.953125 25.421875 0
+ 128.202245 24.505881 0
+ 127.078125 23.734375 0
+ 126.640625 24.296875 0
+ 125.640625 24.796875 0
+ 122.765625 25.234375 0
+ 119.453125 27.421875 0
+ 119.703125 27.859375 0
+ 119.390625 28.734375 0
+ 118.578125 30.234375 0
+ 117.953125 31.921875 0
+ 115.328125 35.484375 0
+ END$SEGS
+DRAW 814 13 0 0 0 0.000000 7.625000 0 0.000000
+ F4 3249396 0.000000 37 0
+ 115.296875 27.901042 0
+ 115.531250 27.526042 0
+ 115.734375 27.369792 0
+ 116.562500 26.307292 0
+ 116.984375 25.885417 0
+ 118.178819 24.192708 2
+ 119.624132 21.997396 0
+ 120.139757 20.716146 0
+ 120.312500 19.666667 2
+ 123.000000 18.229167 2
+ 126.139757 17.372396 0
+ 127.062500 16.791667 2
+ 127.687500 16.791667 0
+ 128.125000 16.979167 2
+ 130.022569 18.505208 2
+ 131.381944 18.270833 2
+ 132.437500 17.722222 0
+ 132.437500 18.472222 0
+ 131.381944 18.630208 0
+ 130.562500 19.291667 2
+ 127.928819 17.583333 2
+ 126.506944 17.692708 2
+ 125.678819 17.989583 0
+ 123.250000 18.854167 0
+ 122.031250 19.520833 2
+ 121.375000 19.479167 2
+ 121.375000 19.479167 2
+ 120.687500 20.166667 2
+ 120.092882 22.059896 2
+ 119.522569 22.755208 0
+ 118.467882 24.372396 2
+ 118.140625 25.072917 0
+ 117.374132 26.231771 0
+ 116.625000 27.213542 0
+ 116.937500 27.776042 0
+ 117.062500 27.885417 0
+ 117.375000 28.463542 0
+ END$SEGS
+STRAIGHT 815 0 0 0 0 N 2 0.000000 0.000000
+ T4 822 114.988370 23.546331 54.557013 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ E4 104.627674 16.171663 234.557013 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ END$SEGS
+DRAW 816 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 13290186 0.000000 65 0
+ 132.475000 15.322697 0
+ 117.750000 15.750000 2
+ 112.135417 20.239583 1
+ 109.635417 23.489583 0
+ 107.609375 25.473958 2
+ 107.234375 27.348958 0
+ 107.484375 30.036458 0
+ 107.796875 33.161458 1
+ 108.593750 40.468750 1
+ 109.375000 45.444444 2
+ 110.880208 47.473958 1
+ 113.817708 49.786458 1
+ 114.817708 51.161458 2
+ 114.119792 56.505208 1
+ 114.029514 59.036458 2
+ 115.375000 60.921875 1
+ 117.623264 62.630208 2
+ 118.560764 65.130208 1
+ 119.651042 66.796875 2
+ 123.015625 67.880208 1
+ 124.526042 68.227431 2
+ 125.463542 70.102431 2
+ 123.713542 72.359375 2
+ 123.401042 73.796875 2
+ 120.473684 74.883224 2
+ 116.906250 74.531250 2
+ 113.917681 73.286047 2
+ 106.855181 74.036047 0
+ 106.275000 72.343750 0
+ 113.855181 71.598547 2
+ 116.730181 72.911047 2
+ 118.542681 73.473547 2
+ 121.605181 73.098547 2
+ 122.703125 71.348958 2
+ 124.026042 69.671875 2
+ 121.338542 68.859375 1
+ 118.526042 67.859375 1
+ 117.151042 65.546875 1
+ 116.310764 63.848958 2
+ 113.250000 61.296875 1
+ 112.000000 57.796875 1
+ 113.062500 51.475694 1
+ 109.380208 48.411458 1
+ 108.256497 46.676672 2
+ 107.053372 46.395422 0
+ 106.381497 41.926672 2
+ 105.553372 42.051672 0
+ 103.437500 42.350694 0
+ 99.312500 43.395833 0
+ 98.812500 42.020833 0
+ 103.022122 40.885005 0
+ 106.093750 40.413194 2
+ 105.928372 39.416255 0
+ 105.006497 33.280839 2
+ 104.084622 33.483964 0
+ 101.912747 33.890214 0
+ 101.725247 33.046464 0
+ 105.287747 32.265214 2
+ 105.225247 31.405839 0
+ 105.140625 25.838542 2
+ 108.479167 22.552083 1
+ 111.041667 19.083333 0
+ 116.100000 15.072697 2
+ 121.725000 14.322697 0
+ 132.600000 13.822697 0
+ END$SEGS
+STRUCTURE 817 5 0 0 0 N 2 123.725000 39.813738 0 290.091197 "RSLaser Keystone Mill 3041"
+ D 0.000000 0.000000
+ F4 13078341 0.000000 4 0
+ 0.000000 0.000000 0
+ 6.500000 0.000000 0
+ 6.500000 2.500000 0
+ 0.000000 2.500000 0
+ F4 8405056 0.000000 4 0
+ 0.000000 0.000000 0
+ 0.750000 0.000000 0
+ 0.750000 0.500000 0
+ 0.000000 0.500000 0
+ F4 16711680 0.000000 4 0
+ 0.000000 0.500000 0
+ 0.750000 0.500000 0
+ 0.750000 2.500000 0
+ 0.000000 2.500000 0
+ F4 8405056 0.000000 4 0
+ 3.250000 0.000000 0
+ 4.250000 0.000000 0
+ 4.250000 1.750000 0
+ 3.250000 1.750000 0
+ L3 0 0.072917 0.000000 0.000000 0 6.500000 0.000000 0
+ L3 0 0.072917 6.500000 0.000000 0 6.500000 2.500000 0
+ L3 0 0.072917 6.500000 2.500000 0 0.000000 2.500000 0
+ L3 0 0.072917 0.000000 2.500000 0 0.000000 0.000000 0
+ L3 0 0.072917 0.750000 2.500000 0 0.750000 0.000000 0
+ L3 0 0.072917 3.250000 1.750000 0 4.250000 1.750000 0
+ L3 0 0.072917 3.250000 0.000000 0 3.250000 1.750000 0
+ L3 0 0.072917 4.250000 0.000000 0 4.250000 1.750000 0
+ L3 0 0.000000 3.250000 0.750000 0 4.250000 0.750000 0
+ L3 0 0.000000 3.750000 0.000000 0 3.750000 0.000000 0
+ L3 0 0.000000 3.750000 0.000000 0 3.750000 0.750000 0
+ L3 0 0.000000 0.750000 1.250000 0 6.500000 1.250000 0
+ F4 16711680 0.000000 4 0
+ 1.125000 1.150000 0
+ 1.375000 1.150000 0
+ 1.375000 1.400000 0
+ 1.125000 1.400000 0
+ END$SEGS
+STRUCTURE 818 5 0 0 0 N 2 111.401042 29.340179 0 0.000000 "N scale architect WALLY'S WATERSIDE WAREHOUSE WWW15"
+ D 0.000000 0.000000
+ F4 12632256 0.000000 6 0
+ 1.625000 4.279613 0
+ 1.984375 3.842113 0
+ 0.781250 2.967113 0
+ 1.468750 2.045238 0
+ 1.015625 1.717113 0
+ 0.000000 3.060863 0
+ F4 0 0.052083 4 0
+ 2.770536 0.375000 0
+ 2.270536 0.000000 0
+ 0.995536 1.700000 0
+ 1.495536 2.075000 0
+ Y4 263172 0.052083 4 0
+ 6.248065 2.873958 0
+ 3.648065 0.923958 0
+ 4.023065 0.423958 0
+ 6.623065 2.373958 0
+ F4 16744703 0.000000 4 0
+ 0.814732 2.965625 0
+ 4.314732 5.590625 0
+ 6.302232 2.940625 0
+ 2.802232 0.315625 0
+ L3 0 0.041667 5.239732 4.253125 0 1.789732 1.665625 0
+ F4 12632256 0.000000 4 0
+ 2.789732 3.040625 0
+ 3.589732 3.640625 0
+ 4.189732 2.840625 0
+ 3.389732 2.240625 0
+ L3 263172 0.052083 2.802232 3.023958 0 4.183482 2.848958 0
+ L3 0 0.052083 3.380357 2.227083 0 3.592857 3.636458 0
+ END$SEGS
+CORNU 819 0 0 0 0 N 2 120.690668 31.500494 41.832044 0.000000 0.000000 7.625000 115.554517 27.017951 234.557013 0.000000 0.000000 7.625000
+ T4 811 120.690668 31.500494 41.832044 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ T4 824 115.554517 27.017951 234.557013 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ W3 0 0.000000 120.690668 31.500494 119.930590 30.651349 119.145557 29.821541 118.279079 29.081283
+ SUBSEGS
+ C 0 0.000000 25.578645 101.409958 48.308864 131.080983 7.657252
+ SUBSEND
+ W3 0 0.000000 118.279079 29.081283 117.412600 28.341026 116.482969 27.678816 115.554517 27.017951
+ SUBSEGS
+ C 0 0.000000 38.681243 93.586877 58.856000 140.331048 5.064024
+ SUBSEND
+ END$SEGS
+CORNU 820 0 0 0 0 N 2 126.278937 33.005358 7.539716 37.364692 89.237295 37.908107 108.049558 14.042726 266.592923 18.481881 106.951186 32.491940
+ T4 1538 126.278937 33.005358 7.539716 0 0.0 0.0 0.0 0.0 0 0 0 14.705894
+ T4 805 108.049558 14.042726 266.592923 9 0.000000 0.000000 14.500000 14.500000 1 1 0 14.705894
+ W3 0 0.000000 126.278937 33.005358 125.965400 30.636499 125.411921 28.290353 124.494127 26.084122
+ SUBSEGS
+ C 0 0.000000 29.098150 97.411061 36.658859 97.212971 10.588048
+ C 0 0.000000 23.081013 103.177633 34.935124 108.103133 4.445995
+ SUBSEND
+ W3 0 0.000000 124.494127 26.084122 123.576333 23.877891 122.295336 21.817708 120.676138 20.060438
+ SUBSEGS
+ C 0 0.000000 20.514405 105.521831 33.887506 112.357568 20.020329
+ SUBSEND
+ W3 0 0.000000 120.676138 20.060438 119.056939 18.303169 117.104002 16.852841 114.947607 15.823394
+ SUBSEGS
+ C 0 0.000000 18.877137 106.788204 32.846039 132.633492 21.756878
+ SUBSEND
+ W3 0 0.000000 114.947607 15.823394 112.791212 14.793948 110.434853 14.184734 108.049558 14.042726
+ SUBSEGS
+ C 0 0.000000 18.631478 106.927597 32.640392 154.503570 22.044071
+ SUBSEND
+ END$SEGS
+CORNU 821 0 0 0 0 N 2 128.967831 33.260112 0.988107 0.000000 0.000000 2.500000 108.125000 9.250000 269.785059 21.650315 108.043781 30.900163
+ T4 1141 128.967831 33.260112 0.988107 0 0.0 0.0 0.0 0.0 0 0 0 16.296452
+ T4 807 108.125000 9.250000 269.785059 10 0.000000 0.000000 0.0 0.0 1 2 0 16.296452
+ W3 0 0.000000 128.967831 33.260112 128.916131 30.262582 128.808350 27.239225 128.071598 24.333188
+ SUBSEGS
+ C 0 0.000000 67.727079 61.243648 33.886443 90.529871 3.809165
+ C 0 0.000000 27.272408 101.581963 30.820366 94.327759 9.432865
+ SUBSEND
+ W3 0 0.000000 128.071598 24.333188 127.703222 22.880169 127.188208 21.463013 126.514804 20.123800
+ SUBSEGS
+ C 0 0.000000 20.684167 108.007798 29.360980 104.068066 12.456541
+ SUBSEND
+ W3 0 0.000000 126.514804 20.123800 125.841400 18.784588 125.010438 17.524411 124.041145 16.380979
+ SUBSEGS
+ C 0 0.000000 18.976630 109.557507 28.642167 116.672309 13.577420
+ SUBSEND
+ W3 0 0.000000 124.041145 16.380979 122.102560 14.094116 119.612039 12.290632 116.865887 11.087923
+ SUBSEGS
+ C 0 0.000000 19.856349 108.966998 29.305556 130.609794 25.949382
+ SUBSEND
+ W3 0 0.000000 116.865887 11.087923 114.119736 9.885214 111.122954 9.261247 108.125000 9.250000
+ SUBSEGS
+ C 0 0.000000 22.066194 108.048899 31.316062 156.448702 23.353698
+ SUBSEND
+ END$SEGS
+CORNU 822 0 0 0 0 N 2 121.102950 31.180325 33.832044 0.000000 0.000000 7.625000 114.988370 23.546331 234.557013 0.000000 0.000000 7.625000
+ T4 811 121.102950 31.180325 33.832044 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ T4 815 114.988370 23.546331 234.557013 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ W3 0 0.000000 121.102950 31.180325 120.644625 30.496515 120.196597 29.805725 119.769042 29.102266
+ SUBSEGS
+ C 0 0.000000 -55.680051 167.281705 0.070991 301.425841 2.541204
+ SUBSEND
+ W3 0 0.000000 119.769042 29.102266 119.341487 28.398806 118.927921 27.686239 118.468549 27.003131
+ SUBSEGS
+ C 0 0.000000 53.827645 73.373102 56.393879 120.465438 2.628672
+ SUBSEND
+ W3 0 0.000000 118.468549 27.003131 118.009177 26.320024 117.497091 25.670066 116.909549 25.093480
+ SUBSEGS
+ C 0 0.000000 12.186966 108.296933 33.715834 123.422597 11.609777
+ SUBSEND
+ W3 0 0.000000 116.909549 25.093480 116.322007 24.516893 115.659025 24.023699 114.988370 23.546331
+ SUBSEGS
+ C 0 0.000000 15.697413 106.133751 36.507986 136.648702 9.012771
+ SUBSEND
+ END$SEGS
+STRUCTURE 823 5 0 0 0 N 2 122.397140 24.633191 0 271.675742 "Nu comp Miniatures sm. single wide (redneck) 613"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 0.263800 0
+ 0.989244 1.856603 0
+ 1.413991 1.592803 0
+ 0.424746 0.000000 0
+ END$SEGS
+STRAIGHT 824 0 0 0 0 N 2 0.000000 0.000000
+ T4 819 115.554517 27.017951 54.557013 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ E4 101.447341 16.976565 234.557013 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ END$SEGS
+DRAW 825 6 0 0 0 229.368976 55.704143 0 0.000000
+ F4 14592682 0.000000 16 0
+ -110.984032 -31.813518 0
+ -110.796532 -31.657268 2
+ -110.765282 -31.876018 0
+ -110.280907 -31.985393 0
+ -110.280907 -31.501018 2
+ -109.780907 -30.657268 2
+ -108.390282 -31.235393 2
+ -108.046532 -30.797893 2
+ -109.468407 -29.876018 2
+ -109.452782 -29.407268 2
+ -109.448163 -28.886490 2
+ -110.216191 -28.839877 2
+ -110.171532 -29.594768 2
+ -110.265282 -30.297893 2
+ -110.609032 -31.110393 2
+ -111.452782 -31.610393 0
+ END$SEGS
+STRUCTURE 826 5 0 0 0 N 2 100.485562 19.151062 0 324.913946 "Laser art meat packing plant 882"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 6 0
+ 1.531250 4.036042 0
+ 1.593750 1.848542 0
+ 0.093750 1.973542 0
+ 0.031250 0.411042 0
+ 6.093750 0.473542 0
+ 6.093750 4.036042 0
+ Y4 0 0.052083 4 0
+ 0.531059 0.411042 0
+ 6.031059 0.411042 0
+ 6.031059 0.026042 0
+ 0.531059 0.026042 0
+ Y4 0 0.041667 4 0
+ 0.031250 0.411042 0
+ 6.031250 0.411042 0
+ 6.031250 1.911042 0
+ 0.031250 1.911042 0
+ Y4 0 0.052083 4 0
+ 1.531250 4.036042 0
+ 6.031250 4.036042 0
+ 6.031250 1.911042 0
+ 1.531250 1.911042 0
+ Y4 0 0.041667 4 0
+ 1.750000 4.067292 0
+ 6.000000 4.067292 0
+ 6.000000 4.452292 0
+ 1.750000 4.452292 0
+ Y4 0 0.041667 4 0
+ 4.500000 4.036042 0
+ 6.000000 4.036042 0
+ 6.000000 2.651042 0
+ 4.500000 2.651042 0
+ L3 0 0.041667 1.468750 3.286042 0 4.531250 3.286042 0
+ L3 0 0.041667 0.000000 1.192292 0 6.000000 1.192292 0
+ END$SEGS
+DRAW 827 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 18 0
+ 109.213542 29.197917 0
+ 108.572917 30.057292 0
+ 107.250000 31.333333 0
+ 103.750000 28.395833 0
+ 102.046875 28.060307 0
+ 99.375000 26.270833 2
+ 98.859375 24.935307 2
+ 99.265625 23.810307 0
+ 102.875000 26.333333 0
+ 104.125000 24.458333 2
+ 103.875000 26.208333 2
+ 105.260417 24.552083 0
+ 106.729167 25.520833 0
+ 106.510417 25.708333 0
+ 107.104167 26.182292 0
+ 106.791667 26.666667 0
+ 108.432292 27.791667 0
+ 108.026042 28.385417 0
+ END$SEGS
+STRUCTURE 828 5 0 0 0 N 2 95.968605 29.709445 0 12.266765 "JL Design brookside ice platform uk"
+ D 0.000000 0.000000
+ F4 16744703 0.013889 4 0
+ 1.092901 5.312814 0
+ 0.000000 0.690253 0
+ 2.919512 0.000000 0
+ 4.012413 4.622561 0
+ END$SEGS
+DRAW 829 6 0 0 0 22.995271 112.044752 0 0.000000
+ F4 12632256 0.055556 8 0
+ 81.723479 -76.753085 0
+ 82.223479 -76.690585 0
+ 82.176603 -75.799960 0
+ 82.261226 -72.154538 2
+ 81.308101 -71.951413 0
+ 79.136226 -71.482663 0
+ 77.707854 -77.478779 0
+ 81.473479 -78.378085 0
+ END$SEGS
+DRAW 830 6 3 0 0 0.000000 0.000000 0 0.000000
+ Y4 1904399 0.111111 4 2
+ 102.459622 40.405839 0
+ 100.693997 40.874589 0
+ 99.162747 34.921464 0
+ 103.881497 33.760005 0
+ END$SEGS
+STRUCTURE 831 5 0 0 0 N 2 102.630717 35.485549 0 283.028086 "N scale architect Andrews auto and gas AAG 404"
+ D 0.000000 0.000000
+ F4 16744448 0.000000 16 0
+ 0.515625 2.023438 0
+ 0.507812 1.679688 0
+ 0.000000 1.671875 0
+ 0.000000 0.664062 0
+ 0.500000 0.656250 0
+ 0.507812 0.007812 0
+ 1.765625 0.000000 0
+ 1.765625 0.460938 0
+ 2.781250 0.460938 0
+ 2.773438 1.593750 0
+ 1.750000 1.593750 0
+ 1.750000 2.031250 0
+ 1.609375 2.031250 0
+ 1.609375 2.265625 0
+ 0.984375 2.281250 0
+ 0.992188 2.015625 0
+ END$SEGS
+DRAW 832 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14601163 0.000000 5 0
+ 104.240872 40.093339 2
+ 104.865872 39.968339 0
+ 105.240872 39.890214 2
+ 105.193997 38.530839 0
+ 105.193997 37.624589 2
+ END$SEGS
+DRAW 833 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14601163 0.055556 9 0
+ 104.093750 35.072917 0
+ 103.850247 33.765214 2
+ 104.506497 33.702714 0
+ 105.084622 33.640214 0
+ 105.647122 33.765214 2
+ 105.421875 34.510417 0
+ 105.171875 35.541667 2
+ 104.662747 35.577714 0
+ 104.250000 35.588542 2
+ END$SEGS
+DRAW 834 5 0 0 0 51.110849 78.541813 0 0.000000
+ F4 0 0.000000 4 0
+ 52.390837 -39.433243 0
+ 52.713003 -40.252150 0
+ 52.480359 -40.343675 0
+ 52.158193 -39.524768 0
+ END$SEGS
+STRUCTURE 835 5 0 0 0 N 2 106.050485 23.343037 0 326.282116 "period miniatures Berghoff brewery (tex mill) 203"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 12 0
+ 1.765625 0.171875 0
+ 0.031250 0.171875 0
+ 0.000000 1.421875 0
+ 1.765625 1.421875 0
+ 1.765625 1.718750 0
+ 2.468750 1.750000 0
+ 2.484375 2.343750 0
+ 4.468750 2.359375 0
+ 4.468750 3.093750 0
+ 5.718750 3.093750 0
+ 5.750000 0.015625 0
+ 1.765625 0.000000 0
+ END$SEGS
+STRUCTURE 836 5 0 0 0 N 2 91.318349 33.492732 0 334.812074 "Bar Mills wicked wandas 0961"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 1.949121 3.534685 0
+ 3.536363 1.939956 0
+ 1.587243 0.000000 0
+ 0.000000 1.594729 0
+ END$SEGS
+DRAW 837 5 0 0 0 91.511084 36.113306 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "CATE'S\nCAT HOUSE"
+ END$SEGS
+STRUCTURE 838 5 0 0 0 N 2 96.644085 25.056007 0 288.156268 "gloor craft freight house (produce) 211 A"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.250000 0
+ 4.125000 2.250000 0
+ 4.125000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE 839 5 0 0 0 N 2 97.084494 39.248128 0 105.416304 "Brasher loading ramp (team track) 001"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 0.750000 0
+ 3.250000 0.750000 0
+ 3.250000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 840 5 0 0 0 98.570146 46.093616 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "ONDAVILLE\nCOVERED\nDEPOT"
+ END$SEGS
+DRAW 841 5 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 118.939379 35.098704 318.955645 0 18.000000 "FUTURE CANNERY"
+ END$SEGS
+DRAW 842 5 6 0 0 0.000000 0.000000 0 0.000000
+ Y4 12664257 0.053333 8 0
+ 117.390625 33.796875 0
+ 116.750000 34.832292 0
+ 117.375000 35.957292 0
+ 118.687500 36.144792 0
+ 120.375000 39.332292 0
+ 122.500000 38.207292 0
+ 120.062500 33.957292 0
+ 118.187500 32.832292 0
+ END$SEGS
+DRAW 843 5 0 0 0 107.547790 25.355313 0 322.331115
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "COTTON MILL"
+ END$SEGS
+DRAW 844 5 0 0 0 100.610382 22.064256 0 323.338769
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "ACME MANUFACTURING\n Purveyers of Fine Anvils \n and\n Explosives"
+ END$SEGS
+DRAW 845 5 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 114.343452 30.643750 323.130102 0 18.000000 "POP'S BOTTLING CO."
+ END$SEGS
+STRUCTURE 846 5 0 0 0 N 2 109.591567 17.631140 0 233.097269 "Gloor craft coal loading tower 214"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 12 0
+ 3.312500 2.523438 0
+ 0.000000 2.507812 0
+ 0.000000 0.039062 0
+ 3.293403 0.000000 0
+ 3.293403 0.617188 0
+ 4.301215 0.617188 0
+ 4.293403 0.875000 0
+ 3.285590 0.890625 0
+ 3.293403 1.625000 0
+ 4.296875 1.648438 0
+ 4.293403 1.875000 0
+ 3.309028 1.867188 0
+ END$SEGS
+STRUCTURE 847 5 0 0 0 N 2 108.125000 20.072917 0 0.000000 "RSLaser Madden Water Tower 3053"
+ D 0.000000 0.000000
+ A3 0 0.000000 0.000000 0.812500 1.281250 0 0.000000 360.000000
+ L3 0 0.000000 0.687500 1.250000 0 0.687500 0.000000 0
+ L3 8405056 0.000000 0.062500 0.625000 0 1.296875 0.625000 0
+ L3 0 0.000000 1.125000 1.046875 0 0.250000 0.187500 0
+ L3 0 0.000000 0.265625 1.062500 0 1.125000 0.218750 0
+ F4 8405056 0.000000 4 0
+ 0.703125 0.000000 0
+ 0.703125 0.000000 0
+ 0.703125 0.609375 0
+ 1.109375 0.218750 0
+ F4 8405056 0.000000 4 0
+ 1.125000 0.250000 0
+ 1.125000 0.250000 0
+ 0.750000 0.609375 0
+ 1.281250 0.593750 0
+ F4 8405056 0.000000 4 0
+ 1.281250 0.640625 0
+ 1.281250 0.640625 0
+ 0.734375 0.640625 0
+ 1.125000 1.000000 0
+ F4 8405056 0.000000 4 0
+ 1.109375 1.031250 0
+ 1.109375 1.031250 0
+ 0.703125 0.656250 0
+ 0.703125 1.218750 0
+ F4 8405056 0.000000 4 0
+ 0.656250 1.234375 0
+ 0.656250 1.234375 0
+ 0.671875 0.687500 0
+ 0.281250 1.062500 0
+ F4 8405056 0.000000 4 0
+ 0.265625 1.046875 0
+ 0.265625 1.046875 0
+ 0.656250 0.656250 0
+ 0.078125 0.640625 0
+ F4 8405056 0.000000 4 0
+ 0.062500 0.625000 0
+ 0.062500 0.625000 0
+ 0.640625 0.625000 0
+ 0.250000 0.203125 0
+ F4 8405056 0.000000 4 0
+ 0.656250 0.593750 0
+ 0.656250 0.593750 0
+ 0.281250 0.171875 0
+ 0.656250 0.015625 0
+ END$SEGS
+DRAW 848 5 0 0 0 97.874920 32.090662 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "BROOKSIDE\n ICE\n PLATFORM"
+ END$SEGS
+DRAW 849 5 0 0 0 95.336805 27.590632 0 4.182552
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "FREIGHT\nDEPOT"
+ END$SEGS
+DRAW 850 5 0 0 0 96.795005 36.569126 0 285.484170
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "TEAM DOCK"
+ END$SEGS
+DRAW 851 5 0 0 0 97.658003 40.526907 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "YARD\nOFFICE"
+ END$SEGS
+DRAW 852 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 10187826 0.000000 99 0
+ 147.774554 79.930099 0
+ 148.426339 80.106360 0
+ 147.035714 80.528235 2
+ 145.098214 81.153235 2
+ 142.676339 81.356360 0
+ 138.723214 80.840735 0
+ 134.535714 81.528235 2
+ 130.051339 81.356360 2
+ 124.801339 81.231360 2
+ 124.301339 79.731360 2
+ 125.410714 77.903235 2
+ 129.973214 77.278235 2
+ 133.223214 75.840735 2
+ 135.660714 73.996985 2
+ 131.910714 73.153235 2
+ 125.473214 73.840735 2
+ 121.910714 74.090735 2
+ 119.473214 72.278235 2
+ 120.051339 70.481360 2
+ 120.051339 70.481360 2
+ 121.535714 67.371985 2
+ 117.426339 67.231360 2
+ 114.660714 65.715735 2
+ 115.551339 63.856360 2
+ 117.410714 62.856360 2
+ 118.910714 60.543860 2
+ 117.937500 59.187500 0
+ 117.062500 58.375000 2
+ 115.312500 58.500000 2
+ 115.000000 53.750000 2
+ 113.660714 51.918860 2
+ 113.973214 50.856360 0
+ 113.640625 50.265625 0
+ 112.578125 50.015625 2
+ 111.660714 48.590735 0
+ 111.098214 47.809485 0
+ 109.098214 45.371985 2
+ 108.051339 41.637610 0
+ 108.035714 37.871985 0
+ 107.973214 35.668860 2
+ 110.348214 33.762610 0
+ 111.848214 33.325110 0
+ 113.285714 33.825110 0
+ 114.656250 34.197917 0
+ 115.781250 34.963542 0
+ 115.640625 34.963542 0
+ 114.703125 34.432292 0
+ 113.535714 34.231360 2
+ 112.285714 33.481360 2
+ 110.598214 33.793860 0
+ 108.223214 36.043860 2
+ 108.348214 37.418860 2
+ 108.473214 38.606360 2
+ 108.223214 40.856360 2
+ 109.035714 44.043860 2
+ 110.723214 47.215735 0
+ 112.723214 49.528235 2
+ 113.953125 50.828125 0
+ 113.703125 51.203125 2
+ 115.312500 53.562500 2
+ 115.562500 55.625000 0
+ 115.750000 56.625000 2
+ 116.125000 58.125000 2
+ 117.500000 58.125000 2
+ 119.223214 60.075110 2
+ 118.473214 62.637610 2
+ 115.410714 64.700110 2
+ 115.848214 66.637610 2
+ 118.473214 66.887610 2
+ 119.848214 66.950110 2
+ 120.973214 67.434485 2
+ 121.160714 68.684485 2
+ 120.848214 69.996985 2
+ 119.973214 71.559485 2
+ 120.535714 72.809485 2
+ 122.285714 73.825110 2
+ 129.348214 73.059485 2
+ 131.348214 73.059485 0
+ 133.910714 73.184485 2
+ 135.785714 74.309485 2
+ 133.598214 76.059485 0
+ 132.160714 76.684485 2
+ 130.660714 77.434485 2
+ 128.848214 77.809485 0
+ 126.223214 77.871985 2
+ 125.098214 78.559485 2
+ 124.910714 79.684485 2
+ 124.785714 80.371985 2
+ 125.473214 80.996985 2
+ 129.598214 81.184485 2
+ 133.098214 81.309485 2
+ 135.098214 80.934485 2
+ 136.598214 80.621985 2
+ 138.160714 80.559485 2
+ 139.848214 80.746985 2
+ 141.785714 81.121985 2
+ 143.473214 81.184485 2
+ 145.125000 80.911458 0
+ 146.765625 80.208333 2
+ END$SEGS
+STRUCTURE 853 7 0 0 0 N 2 122.718835 24.810925 0 160.557793 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 854 7 0 0 0 N 2 123.360184 25.434987 0 160.557793 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 855 7 0 0 0 N 2 124.716984 30.311040 0 170.565772 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 856 7 0 0 0 N 2 126.633385 27.664625 0 170.565772 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+DRAW 857 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 14 0
+ 109.697917 31.088542 0
+ 111.854167 28.307292 0
+ 112.510417 27.583333 0
+ 115.432292 29.713542 0
+ 115.026042 30.260417 0
+ 114.119792 29.572917 0
+ 114.057292 29.604167 0
+ 113.682292 29.338542 0
+ 112.447917 31.041667 0
+ 111.385417 32.385417 0
+ 111.869792 32.744792 0
+ 111.437500 33.333333 0
+ 110.000000 33.770833 0
+ 108.260417 32.463542 0
+ END$SEGS
+DRAW 858 7 0 0 0 0.000000 0.000000 0 0.000000
+ A3 1246469 0.106667 27.473068 108.192434 27.902570 0 116.612388 126.775224
+ END$SEGS
+DRAW 859 5 0 0 0 103.593750 63.875000 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "tobacco \nwarehouse"
+ END$SEGS
+DRAW 860 5 0 0 0 107.187500 65.166667 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "FARM \nSUPPLY\nAND\nTRACTOR\nSALES"
+ END$SEGS
+DRAW 861 5 0 0 0 109.965969 60.972286 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "GENERAL\n STORE\n AND\n BAIT"
+ END$SEGS
+DRAW 862 5 0 0 0 106.555399 55.726084 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "BBQ\n SHACK"
+ END$SEGS
+DRAW 863 5 0 0 0 102.968750 44.500000 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "DINER"
+ END$SEGS
+DRAW 864 5 0 0 0 103.000000 42.812500 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "WESTERN\n AUTO"
+ END$SEGS
+DRAW 865 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 656645 0.160000 200.921875 82.901042 0 202.234375 81.401042 0
+ END$SEGS
+DRAW 866 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 656645 0.160000 202.484375 83.151042 0 203.796875 81.651042 0
+ END$SEGS
+DRAW 867 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 656645 0.160000 4 2
+ 197.437391 81.509509 0
+ 198.049330 81.687781 0
+ 198.850288 81.129576 0
+ 198.859375 80.588542 0
+ END$SEGS
+DRAW 868 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 656645 0.160000 4 2
+ 201.674955 81.876695 0
+ 201.074540 81.662796 0
+ 200.242186 82.173004 0
+ 200.201344 82.712571 0
+ END$SEGS
+CORNU 869 0 0 0 0 N 0 195.961323 90.660654 280.228415 15.444285 193.218838 75.461815 207.000000 81.493056 160.163078 13.721914 194.092313 76.836605
+ T4 1547 195.961323 90.660654 280.228415 0 0.0 0.0 0.0 0.0 0 0 0 13.562522
+ T4 870 207.000000 81.493056 160.163078 0 0.0 0.0 0.0 0.0 0 0 0 13.562522
+ W3 0 0.000000 195.961323 90.660654 197.193766 90.438272 198.399332 90.064527 199.537984 89.543145
+ SUBSEGS
+ C 0 0.000000 14.994856 193.312828 75.901549 10.173350 14.355589
+ SUBSEND
+ W3 0 0.000000 199.537984 89.543145 200.676636 89.021763 201.747961 88.352998 202.714050 87.556104
+ SUBSEGS
+ C 0 0.000000 14.452507 193.525316 76.400741 24.584160 14.894312
+ SUBSEND
+ W3 0 0.000000 202.714050 87.556104 203.680139 86.759210 204.540851 85.834476 205.264559 84.812412
+ SUBSEGS
+ C 0 0.000000 14.201020 193.679039 76.599940 39.510728 15.158097
+ SUBSEND
+ W3 0 0.000000 205.264559 84.812412 205.988266 83.790348 206.575024 82.671090 207.000000 81.493056
+ SUBSEGS
+ C 0 0.000000 13.940545 193.890299 76.752325 54.677651 15.441341
+ SUBSEND
+ END$SEGS
+CORNU 870 0 0 0 0 N 0 207.000000 81.493056 340.163078 13.721914 194.092313 76.836605 201.500000 66.368056 241.420554 13.382520 195.098112 78.119978
+ T4 869 207.000000 81.493056 340.163078 0 0.0 0.0 0.0 0.0 0 0 0 13.316700
+ T4 871 201.500000 66.368056 241.420554 0 0.0 0.0 0.0 0.0 0 0 0 13.316700
+ W3 0 0.000000 207.000000 81.493056 207.497144 80.114972 207.773277 78.656063 207.798741 77.191270
+ SUBSEGS
+ C 0 0.000000 13.395488 194.405810 76.929562 70.082058 18.798481
+ SUBSEND
+ W3 0 0.000000 207.798741 77.191270 207.824206 75.726477 207.596635 74.255832 207.109931 72.874027
+ SUBSEGS
+ C 0 0.000000 12.376459 195.424595 76.951979 88.892152 20.345829
+ SUBSEND
+ W3 0 0.000000 207.109931 72.874027 206.623226 71.492222 205.876132 70.202277 204.916339 69.095450
+ SUBSEGS
+ C 0 0.000000 11.731229 196.045070 76.771537 109.404412 21.464401
+ SUBSEND
+ W3 0 0.000000 204.916339 69.095450 203.956547 67.988624 202.786509 67.068885 201.500000 66.368056
+ SUBSEGS
+ C 0 0.000000 12.321247 195.642833 77.208108 131.180114 20.436359
+ SUBSEND
+ END$SEGS
+CORNU 871 0 0 0 0 N 0 201.500000 66.368056 61.420554 13.382520 195.098112 78.119978 192.912356 64.788309 275.872561 16.614855 194.612324 81.315968
+ T4 870 201.500000 66.368056 61.420554 0 0.0 0.0 0.0 0.0 0 0 0 13.117340
+ E4 192.912356 64.788309 275.872561 9 0.000000 0.000000 13.050508 13.050508 1 1 0 13.117340
+ W3 0 0.000000 201.500000 66.368056 200.202486 65.661232 198.784850 65.180301 197.329095 64.927479
+ SUBSEGS
+ C 0 0.000000 13.590042 195.036756 78.322793 151.602441 18.686607
+ SUBSEND
+ W3 0 0.000000 197.329095 64.927479 195.873339 64.674656 194.382148 64.637132 192.912356 64.788309
+ SUBSEGS
+ C 0 0.000000 16.177537 194.616004 80.875891 170.345459 15.699539
+ SUBSEND
+ END$SEGS
+CORNU 872 7 0 0 0 N 0 196.876161 93.858773 277.197829 32.570431 192.795228 61.545015 212.380682 81.262626 166.126604 16.812341 196.058792 77.231408
+ E4 196.876161 93.858773 277.197829 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 873 212.380682 81.262626 166.126604 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ W3 0 0.000000 196.876161 93.858773 198.641037 93.635885 200.392097 93.260760 202.060680 92.644078
+ SUBSEGS
+ C 0 0.000000 23.391520 194.167132 70.624652 6.650488 13.071310
+ SUBSEND
+ W3 0 0.000000 202.060680 92.644078 203.729264 92.027396 205.311904 91.169554 206.712668 90.073046
+ SUBSEGS
+ C 0 0.000000 17.240410 196.146915 76.449662 20.060834 17.734893
+ SUBSEND
+ W3 0 0.000000 206.712668 90.073046 208.113431 88.976538 209.329341 87.644016 210.289553 86.146531
+ SUBSEGS
+ C 0 0.000000 15.897722 196.913812 77.554261 38.051429 19.232808
+ SUBSEND
+ W3 0 0.000000 210.289553 86.146531 211.249764 84.649046 211.954143 82.989627 212.380682 81.262626
+ SUBSEGS
+ C 0 0.000000 16.304332 196.547145 77.372851 57.444277 18.753384
+ SUBSEND
+ END$SEGS
+CORNU 873 7 0 0 0 N 0 212.380682 81.262626 346.126604 16.812341 196.058792 77.231408 213.005682 75.262626 181.738764 22.553361 190.462705 75.946951
+ T4 872 212.380682 81.262626 346.126604 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 874 213.005682 75.262626 181.738764 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ W3 0 0.000000 212.380682 81.262626 212.864237 79.304774 213.066873 77.278381 213.005682 75.262626
+ SUBSEGS
+ C 0 0.000000 22.245668 190.771556 75.979123 76.260550 15.585175
+ SUBSEND
+ END$SEGS
+CORNU 874 7 0 0 0 N 0 213.005682 75.262626 1.738764 22.553361 190.462705 75.946951 210.505682 65.512626 210.406073 16.714451 196.090136 73.972231
+ T4 873 213.005682 75.262626 1.738764 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 875 210.505682 65.512626 210.406073 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ W3 0 0.000000 213.005682 75.262626 212.954251 73.568398 212.745136 71.877210 212.358079 70.226985
+ SUBSEGS
+ C 0 0.000000 25.447234 187.568407 75.974498 91.603027 11.450430
+ SUBSEND
+ W3 0 0.000000 212.358079 70.226985 211.971021 68.576761 211.363569 66.974503 210.505682 65.512626
+ SUBSEGS
+ C 0 0.000000 16.960143 195.823562 74.002727 102.863224 17.175907
+ SUBSEND
+ END$SEGS
+CORNU 875 7 0 0 0 N 0 210.505682 65.512626 30.406073 16.714451 196.090136 73.972231 201.786669 59.519105 261.039272 12.505465 199.838849 71.871944
+ T4 874 210.505682 65.512626 30.406073 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 201.786669 59.519105 261.039272 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ W3 0 0.000000 210.505682 65.512626 210.043740 64.725456 209.513411 63.976787 208.901350 63.299728
+ SUBSEGS
+ C 0 0.000000 13.411239 198.902115 72.237102 120.093064 11.697464
+ SUBSEND
+ W3 0 0.000000 208.901350 63.299728 208.289289 62.622670 207.597311 62.017827 206.843442 61.503329
+ SUBSEGS
+ C 0 0.000000 11.570836 200.316394 71.057485 132.102402 13.558148
+ SUBSEND
+ W3 0 0.000000 206.843442 61.503329 205.335703 60.474332 203.589797 59.803426 201.786669 59.519105
+ SUBSEGS
+ C 0 0.000000 12.428108 199.885112 71.800878 145.952056 25.246862
+ SUBSEND
+ END$SEGS
+DRAW 876 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 10187826 0.000000 42 0
+ 146.036000 76.421053 0
+ 139.598500 76.171053 0
+ 136.786000 72.733553 2
+ 134.598500 71.233553 0
+ 135.615887 75.500000 2
+ 132.240887 77.750000 0
+ 128.490887 78.875000 2
+ 125.615887 80.000000 2
+ 126.115887 80.250000 2
+ 132.115887 80.500000 2
+ 136.865887 80.000000 0
+ 142.740887 80.250000 2
+ 150.240887 78.125000 2
+ 152.615887 77.125000 2
+ 154.375000 80.031250 2
+ 152.115887 82.000000 0
+ 149.093750 82.968750 0
+ 145.218750 83.125000 2
+ 145.281250 83.968750 2
+ 148.593750 87.500000 2
+ 148.990887 88.875000 0
+ 150.687500 90.812500 0
+ 152.740887 92.000000 0
+ 152.740887 92.000000 2
+ 156.365887 92.625000 0
+ 161.490887 93.000000 2
+ 173.115887 93.750000 0
+ 176.240887 95.000000 2
+ 172.615887 96.250000 2
+ 175.115887 98.500000 0
+ 191.615887 98.500000 0
+ 177.744059 97.427083 0
+ 174.119059 96.927083 2
+ 177.619059 95.489583 0
+ 181.306559 94.864583 2
+ 178.119059 93.052083 2
+ 167.115887 92.500000 0
+ 154.115887 91.750000 2
+ 151.115887 87.875000 2
+ 149.687500 85.281250 2
+ 152.615887 83.125000 0
+ 158.240887 76.875000 2
+ END$SEGS
+STRAIGHT 877 0 0 0 0 N 0 0.000000 0.000000
+ T4 883 27.873494 94.452003 270.123101 0 0.0 0.0 0.0 0.0 0 0 0 16.114104
+ T4 879 122.781380 94.248091 90.123101 0 0.0 0.0 0.0 0.0 0 0 0 16.114104
+ END$SEGS
+STRAIGHT 878 0 0 0 0 N 0 0.000000 0.000000
+ T4 888 28.688811 92.950247 270.123101 0 0.0 0.0 0.0 0.0 0 0 0 10.579579
+ T4 880 125.499551 92.742247 90.123101 9 0.000000 0.000000 9.386258 9.386258 1 1 0 10.579579
+ END$SEGS
+STRAIGHT 879 0 0 0 0 N 0 0.000000 0.000000
+ T4 877 122.781380 94.248091 270.123100 0 0.0 0.0 0.0 0.0 0 0 0 17.226215
+ T4 675 127.473694 94.238010 90.123100 0 0.0 0.0 0.0 0.0 0 0 0 17.226215
+ END$SEGS
+STRAIGHT 880 0 0 0 0 N 0 0.000000 0.000000
+ T4 878 125.499551 92.742247 270.123101 9 0.000000 0.000000 9.386258 9.386258 1 1 0 9.230119
+ T4 889 139.126905 92.712969 90.123101 0 0.0 0.0 0.0 0.0 0 0 0 9.230119
+ END$SEGS
+CORNU 881 0 0 0 0 N 2 8.227929 73.007013 143.338923 13.970712 19.434975 81.348650 5.905877 78.026789 347.697974 11.489033 17.131100 80.474699
+ T4 747 8.227929 73.007013 143.338923 0 0.0 0.0 0.0 0.0 0 0 0 12.628881
+ T4 1300 5.905877 78.026789 347.697974 0 0.0 0.0 0.0 0.0 0 0 0 12.628881
+ W3 0 0.000000 8.227929 73.007013 7.118940 74.496947 6.301614 76.212084 5.905877 78.026789
+ SUBSEGS
+ C 0 0.000000 13.157940 18.742306 80.917718 233.043283 24.264723
+ SUBSEND
+ END$SEGS
+TURNOUT 882 0 0 0 0 N 0 25.125710 94.458386 0 180.133102 "Peco-80 Large Left SL-1737/389"
+ T4 883 25.125710 94.458386 90.133102 0 0.0 0.0 0.0 0.0 0 0 0 14.922460
+ T4 886 18.826514 94.473019 270.133102 0 0.0 0.0 0.0 0.0 0 0 0 14.922460
+ T4 885 18.825301 93.951021 262.133102 0 0.0 0.0 0.0 0.0 0 0 0 14.922460
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+CORNU 883 0 0 0 0 N 0 25.125710 94.458386 270.133102 0.000000 0.000000 7.625000 27.873494 94.452003 90.123101 0.000000 0.000000 7.625000
+ T4 882 25.125710 94.458386 270.133102 0 0.0 0.0 0.0 0.0 0 0 0 15.023705
+ T4 877 27.873494 94.452003 90.123101 0 0.0 0.0 0.0 0.0 0 0 0 15.023705
+ W3 0 0.000000 25.125710 94.458386 26.041638 94.456258 26.957566 94.453971 27.873494 94.452003
+ SUBSEGS
+ S 0 0.000000 25.125710 94.458386 27.873494 94.452003
+ SUBSEND
+ END$SEGS
+CORNU 884 0 0 0 0 N 2 6.809483 71.149230 141.444207 15.132970 18.643489 80.581253 4.196720 76.088480 342.848566 14.215456 17.779996 80.280592
+ T4 739 6.809483 71.149230 141.444207 0 0.0 0.0 0.0 0.0 0 0 0 14.143900
+ T4 1307 4.196720 76.088480 342.848566 0 0.0 0.0 0.0 0.0 0 0 0 14.143900
+ W3 0 0.000000 6.809483 71.149230 5.641876 72.614183 4.749164 74.298452 4.196720 76.088480
+ SUBSEGS
+ C 0 0.000000 15.088756 18.610109 80.552196 231.451489 21.341160
+ SUBSEND
+ END$SEGS
+CORNU 885 0 0 0 0 N 0 3.625000 81.590278 185.441037 13.776823 17.339748 80.283941 18.825301 93.951021 82.133102 0.000000 0.000000 7.625000
+ T4 1301 3.625000 81.590278 185.441037 0 0.0 0.0 0.0 0.0 0 0 0 14.594726
+ T4 882 18.825301 93.951021 82.133102 0 0.0 0.0 0.0 0.0 0 0 0 14.594726
+ W3 0 0.000000 3.625000 81.590278 3.794551 83.370334 4.321266 85.119555 5.198492 86.677702
+ SUBSEGS
+ C 0 0.000000 12.884482 16.455222 80.409058 275.260134 23.852411
+ SUBSEND
+ W3 0 0.000000 5.198492 86.677702 6.075717 88.235849 7.300633 89.593451 8.745147 90.647360
+ SUBSEGS
+ C 0 0.000000 12.587318 16.146202 80.465761 299.571407 24.415001
+ SUBSEND
+ W3 0 0.000000 8.745147 90.647360 10.189661 91.701269 11.844240 92.447669 13.560820 92.948366
+ SUBSEGS
+ C 0 0.000000 15.518380 17.743742 78.004361 324.558820 19.803910
+ SUBSEND
+ W3 0 0.000000 13.560820 92.948366 15.277400 93.449063 17.054017 93.706278 18.825301 93.951021
+ SUBSEGS
+ C 0 0.000000 29.799837 21.544172 64.237804 344.460707 7.733452
+ S 0 0.000000 17.496860 93.761516 18.825301 93.951021
+ SUBSEND
+ END$SEGS
+CORNU 886 0 0 0 0 N 0 1.921468 81.746376 187.644189 15.000000 16.788167 79.751064 18.826514 94.473019 90.133102 0.000000 0.000000 7.625000
+ T4 1436 1.921468 81.746376 187.644189 0 0.0 0.0 0.0 0.0 0 0 0 14.835395
+ T4 882 18.826514 94.473019 90.133102 0 0.0 0.0 0.0 0.0 0 0 0 14.835395
+ W3 0 0.000000 1.921468 81.746376 2.182216 83.689164 2.816431 85.581966 3.782717 87.287459
+ SUBSEGS
+ C 0 0.000000 15.440057 17.223897 79.689430 277.655785 21.822818
+ SUBSEND
+ W3 0 0.000000 3.782717 87.287459 4.749003 88.992951 6.060393 90.507484 7.639377 91.669045
+ SUBSEGS
+ C 0 0.000000 14.015942 16.001351 80.420755 299.335385 24.037517
+ SUBSEND
+ W3 0 0.000000 7.639377 91.669045 9.218361 92.830605 11.058687 93.621365 12.974788 94.034854
+ SUBSEGS
+ C 0 0.000000 13.992282 15.854180 80.342043 324.048847 24.075736
+ SUBSEND
+ W3 0 0.000000 12.974788 94.034854 14.890888 94.448343 16.866312 94.477573 18.826514 94.473019
+ SUBSEGS
+ C 0 0.000000 19.189057 16.880814 75.247548 348.255084 8.767569
+ C 0 0.000000 47.557858 18.361826 46.917431 357.013599 3.546247
+ SUBSEND
+ END$SEGS
+CORNU 887 0 0 0 0 N 0 5.937500 82.965278 193.438882 10.773595 16.416097 80.461408 20.062500 92.652778 84.326371 27.777929 22.808675 65.010928
+ T4 1300 5.937500 82.965278 193.438882 0 0.0 0.0 0.0 0.0 0 0 0 12.211602
+ T4 888 20.062500 92.652778 84.326371 0 0.0 0.0 0.0 0.0 0 0 0 12.211602
+ W3 0 0.000000 5.937500 82.965278 6.292331 84.450233 6.974911 85.854562 7.915713 87.057012
+ SUBSEGS
+ C 0 0.000000 10.706200 16.345799 80.457288 283.547762 24.508830
+ SUBSEND
+ W3 0 0.000000 7.915713 87.057012 8.856516 88.259463 10.045704 89.257931 11.356756 90.040323
+ SUBSEGS
+ C 0 0.000000 12.452483 17.655878 79.298563 308.538789 21.073240
+ SUBSEND
+ W3 0 0.000000 11.356756 90.040323 12.667809 90.822716 14.097505 91.395216 15.565836 91.813547
+ SUBSEGS
+ C 0 0.000000 17.608801 20.239987 74.836439 329.703378 14.903285
+ SUBSEND
+ W3 0 0.000000 15.565836 91.813547 17.034167 92.231878 18.543219 92.501840 20.062500 92.652778
+ SUBSEGS
+ C 0 0.000000 25.674543 22.505852 67.094762 344.317446 10.221660
+ SUBSEND
+ END$SEGS
+CORNU 888 0 0 0 0 N 0 20.062500 92.652778 264.326371 27.777929 22.808675 65.010928 28.688811 92.950247 90.123101 0.000000 0.000000 2.500000
+ T4 887 20.062500 92.652778 264.326371 0 0.0 0.0 0.0 0.0 0 0 0 11.879340
+ T4 878 28.688811 92.950247 90.123101 0 0.0 0.0 0.0 0.0 0 0 0 11.879340
+ W3 0 0.000000 20.062500 92.652778 22.926558 92.937318 25.810661 92.956431 28.688811 92.950247
+ SUBSEGS
+ C 0 0.000000 70.724254 26.500323 22.222142 354.777302 5.246325
+ S 0 0.000000 26.529488 92.946390 28.688811 92.950247
+ SUBSEND
+ END$SEGS
+STRAIGHT 889 0 0 0 0 N 0 0.000000 0.000000
+ T4 880 139.126905 92.712969 270.123101 0 0.0 0.0 0.0 0.0 0 0 0 8.499690
+ T4 1295 189.249435 92.605280 90.123101 0 0.0 0.0 0.0 0.0 0 0 0 8.499690
+ END$SEGS
+DRAW 890 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 0 0.160000 5 2
+ 26.343750 74.635417 0
+ 29.281250 75.890625 0
+ 30.312500 75.328125 0
+ 30.312500 75.328125 0
+ 31.426809 70.788651 0
+ END$SEGS
+DRAW 891 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 0 0.160000 3 2
+ 32.250000 76.984375 2
+ 31.625000 75.609375 0
+ 32.625000 71.447917 0
+ END$SEGS
+DRAW 892 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 4216377 0.000000 21 0
+ 0.015625 76.281250 0
+ -0.109375 82.906250 0
+ 1.265625 82.031250 0
+ 4.042411 81.802083 2
+ 4.250000 80.479167 2
+ 0.187500 77.104167 0
+ 0.765625 72.828125 0
+ 2.515625 69.578125 0
+ 3.640625 67.390625 0
+ 3.265625 66.453125 0
+ 2.453125 67.203125 0
+ 1.640625 68.015625 0
+ 0.578125 68.703125 0
+ 1.703125 67.640625 0
+ 2.453125 66.640625 0
+ 3.828125 66.203125 0
+ 4.136364 63.166667 2
+ 2.640625 61.343750 2
+ 1.511364 58.270833 0
+ -0.051136 50.958333 2
+ -0.051136 57.645833 0
+ END$SEGS
+STRUCTURE 893 7 0 0 0 N 2 2.687500 53.802083 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 894 7 0 0 0 N 2 5.187500 58.177083 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 895 7 0 0 0 N 2 -0.312500 78.197917 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 896 7 0 0 0 N 2 11.406250 70.979167 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 897 7 0 0 0 N 2 9.531250 72.354167 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 898 7 0 0 0 N 2 5.750000 84.447917 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 899 7 0 0 0 N 2 6.437500 86.135417 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 900 7 0 0 0 N 2 6.937500 87.885417 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 901 7 0 0 0 N 2 7.000000 88.447917 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 902 7 0 0 0 N 2 1.937500 78.822917 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 903 7 0 0 0 N 2 4.312500 81.572917 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 904 7 0 0 0 N 2 0.562500 83.197917 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 905 7 0 0 0 N 2 3.312500 83.072917 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 906 7 0 0 0 N 2 1.812500 80.760417 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 907 7 0 0 0 N 2 3.312500 76.697917 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+DRAW 908 5 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 3.020917 96.381074 12.105656 0 18.000000 "CHESTERFIELD CIGARETTES"
+ END$SEGS
+TURNOUT 909 0 0 0 0 N 2 12.090703 63.186799 0 312.831742 "Kato Unitrack Single Track Truss Bridge 9.75 248mm 20-430/1/2/3/4"
+ T4 245 12.090703 63.186799 222.831742 9 0.000000 0.000000 16.579279 16.579279 1 1 0 16.561089
+ T4 1225 18.728586 70.347099 42.831742 0 0.0 0.0 0.0 0.0 0 0 0 16.561089
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 9.763779 0.000000
+ L3 0 0.053333 0.000000 0.473340 0 9.763779 0.473340 0
+ L3 0 0.053333 0.000000 -0.473340 0 9.763779 -0.473340 0
+ L3 0 0.053333 1.220474 -0.473340 0 1.220474 0.473340 0
+ L3 0 0.053333 1.220474 -0.473340 0 2.440948 0.473340 0
+ L3 0 0.053333 2.440948 -0.473340 0 1.220474 0.473340 0
+ L3 0 0.053333 2.440948 -0.473340 0 2.440948 0.473340 0
+ L3 0 0.053333 2.440948 -0.473340 0 3.661422 0.473340 0
+ L3 0 0.053333 3.661422 -0.473340 0 2.440948 0.473340 0
+ L3 0 0.053333 3.661422 -0.473340 0 3.661422 0.473340 0
+ L3 0 0.053333 3.661422 -0.473340 0 4.881896 0.473340 0
+ L3 0 0.053333 4.881896 -0.473340 0 3.661422 0.473340 0
+ L3 0 0.053333 4.881896 -0.473340 0 4.881896 0.473340 0
+ L3 0 0.053333 4.881896 -0.473340 0 6.102370 0.473340 0
+ L3 0 0.053333 6.102370 -0.473340 0 4.881896 0.473340 0
+ L3 0 0.053333 6.102370 -0.473340 0 6.102370 0.473340 0
+ L3 0 0.053333 6.102370 -0.473340 0 7.322844 0.473340 0
+ L3 0 0.053333 7.322844 -0.473340 0 6.102370 0.473340 0
+ L3 0 0.053333 7.322844 -0.473340 0 7.322844 0.473340 0
+ L3 0 0.053333 7.322844 -0.473340 0 8.543318 0.473340 0
+ L3 0 0.053333 8.543318 -0.473340 0 7.322844 0.473340 0
+ L3 0 0.053333 8.543318 -0.473340 0 8.543318 0.473340 0
+ END$SEGS
+DRAW 910 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 0 0.053333 31.366464 70.763266 0 31.297408 70.724947 0
+ END$SEGS
+DRAW 911 7 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 0 0.000000 4 0
+ 19.000000 69.302083 2
+ 17.609375 70.489583 2
+ 18.359375 71.380208 2
+ 19.781250 70.208333 2
+ END$SEGS
+DRAW 912 7 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 0 0.000000 4 0
+ 12.416666 62.125000 2
+ 11.026041 63.312500 2
+ 11.776041 64.203125 2
+ 13.197916 63.031250 2
+ END$SEGS
+DRAW 913 7 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 0 0.000000 4 0
+ 25.666666 76.437500 2
+ 24.276041 77.625000 2
+ 25.026041 78.515625 2
+ 26.447916 77.343750 2
+ END$SEGS
+DRAW 914 5 0 0 0 54.756996 0.087526 0 0.000000
+ F4 16744703 0.000000 4 0
+ -23.362710 80.086000 0
+ -22.771299 80.547230 0
+ -22.156326 79.758682 0
+ -22.747737 79.297452 0
+ END$SEGS
+STRUCTURE 915 7 0 0 0 N 2 39.447917 87.914931 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 916 5 0 0 0 N 2 22.943843 85.030973 0 37.125711 "DPM Wilhelmi's merchantile (theater) 516 M"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.065972 0
+ 5.250000 1.065972 0
+ 5.250000 3.645972 0
+ 0.000000 3.645972 0
+ Y4 4605510 0.083333 5 0
+ 0.786458 0.119792 2
+ 0.395833 1.057292 0
+ 4.911458 1.088542 0
+ 4.536458 0.119792 2
+ 2.645833 0.041667 0
+ L3 4605510 0.166667 2.614583 1.010417 0 2.614583 0.260417 0
+ Z 0 1.598958 2.222222 0.000000 0 18.000000 "THEATER"
+ END$SEGS
+DRAW 917 5 0 0 0 31.661788 79.912845 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "NEWS"
+ END$SEGS
+STRUCTURE 918 7 0 0 0 N 2 29.687500 80.010417 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 919 7 0 0 0 N 2 30.843750 80.572917 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 920 7 0 0 0 N 2 30.156250 81.041667 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 921 7 0 0 0 N 2 2.812500 67.552083 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+DRAW 922 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 6 0
+ 35.062500 77.510417 2
+ 35.718750 76.791667 0
+ 34.656250 76.635417 2
+ 33.062500 76.760417 2
+ 32.312500 77.177083 0
+ 34.281250 77.619792 2
+ END$SEGS
+DRAW 923 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 0 0.000000 4 0
+ 29.812500 80.479167 0
+ 28.437500 81.760417 0
+ 27.312500 80.697917 0
+ 28.843750 79.510417 0
+ END$SEGS
+STRUCTURE 924 5 0 0 0 N 2 46.812500 82.916667 0 0.000000 "walthers cornerstone Merchants Row II 933-3224"
+ D 0.000000 0.000000
+ F4 14601163 0.000000 11 0
+ 1.000000 0.375000 0
+ 0.000000 3.875000 0
+ 0.750000 4.062500 0
+ 0.906250 3.531250 0
+ 6.468750 4.656250 0
+ 7.062500 1.750000 0
+ 7.000000 1.406250 2
+ 6.718750 1.125000 0
+ 6.718750 1.125000 0
+ 1.781250 0.000000 0
+ 1.375000 0.031250 2
+ F4 16744703 0.000000 5 0
+ 0.911932 3.418669 0
+ 1.467218 1.109496 0
+ 2.210391 0.802092 0
+ 7.044619 1.983562 0
+ 6.410830 4.676708 0
+ END$SEGS
+DRAW 925 5 0 0 0 48.734583 85.088472 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "barber, hair dresser, \ndress shop"
+ END$SEGS
+DRAW 926 5 0 0 0 29.212370 86.979627 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "SHOES\nand \nREPAIR"
+ END$SEGS
+DRAW 927 5 0 0 0 63.734619 88.949514 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "FIRE\nSTATION"
+ END$SEGS
+STRUCTURE 928 5 0 0 0 N 2 68.831012 93.438726 0 321.874204 "laser art FINLEY HOUSE 825"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 1.524842 2.896030 0
+ 2.713517 1.981125 0
+ 1.188675 0.000000 0
+ 0.000000 0.914905 0
+ Z 16744703 0.675118 1.455686 0.000000 0 18.000000 "FINLEY"
+ Z 16744703 0.675118 1.066797 0.000000 0 18.000000 "HOUSE"
+ END$SEGS
+DRAW 929 5 0 0 0 68.468750 95.638889 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "FINLEY"
+ END$SEGS
+DRAW 930 5 4 0 0 0.000000 5.777778 0 0.000000
+ L3 8421504 0.083333 49.187500 90.638889 0 43.906250 85.576389 0
+ END$SEGS
+DRAW 931 6 0 0 0 -43.988819 41.672776 0 0.000000
+ F4 12096146 0.000000 4 0
+ 87.269999 53.547989 0
+ 86.854279 53.825796 0
+ 85.187435 51.331476 0
+ 85.603155 51.053668 0
+ END$SEGS
+DRAW 932 5 0 0 0 -45.643075 47.854162 0 0.000000
+ F4 12096146 0.000000 4 0
+ 91.380423 46.185040 0
+ 90.988974 46.496115 0
+ 88.811455 43.755967 0
+ 89.202904 43.444893 0
+ END$SEGS
+DRAW 933 7 1 0 0 0.000000 0.000000 0 0.000000
+ A3 788231 0.041667 0.534000 28.093750 76.244792 0 0.000000 360.000000
+ END$SEGS
+DRAW 934 7 1 0 0 0.000000 0.000000 0 0.000000
+ A3 788231 0.041667 0.534000 30.968750 75.369792 0 0.000000 360.000000
+ END$SEGS
+DRAW 935 7 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 12169906 0.160000 3 2
+ 31.281250 76.744792 0
+ 34.593750 77.744792 2
+ 35.656250 76.869792 0
+ END$SEGS
+DRAW 936 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 13684944 0.000000 26.863901 91.636355 0 26.863901 91.636355 0
+ END$SEGS
+DRAW 937 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 13684944 0.000000 78 0
+ 16.422000 98.609375 0
+ 34.905309 86.823958 0
+ 38.030309 85.011458 2
+ 39.624059 85.261458 0
+ 45.478500 86.490625 0
+ 46.281375 83.072917 0
+ 46.225000 82.608224 0
+ 45.687625 82.135417 0
+ 48.625125 82.854167 0
+ 47.975000 83.139474 0
+ 47.781375 83.385417 0
+ 46.978500 86.803125 0
+ 53.103500 88.053125 2
+ 53.140625 87.763432 0
+ 53.959375 84.358224 2
+ 53.506250 83.983224 0
+ 55.928125 84.670724 0
+ 55.396875 84.811349 2
+ 54.603500 88.303125 2
+ 55.171875 88.419682 0
+ 63.666000 90.115625 0
+ 66.859500 90.526042 0
+ 70.484500 90.526042 0
+ 75.250000 90.453125 2
+ 78.797000 90.276042 0
+ 80.000000 90.328125 2
+ 80.062500 89.453125 0
+ 81.703125 89.479167 0
+ 81.005059 98.595943 0
+ 79.922250 98.411458 0
+ 80.067559 93.595943 2
+ 78.984375 93.018640 2
+ 68.082118 93.060526 2
+ 67.484375 94.643640 0
+ 66.109750 98.598958 0
+ 65.047250 98.473958 0
+ 66.144618 92.935526 2
+ 64.484375 92.706140 0
+ 61.207118 92.060526 0
+ 54.016000 90.659722 2
+ 53.296875 92.143640 0
+ 52.359375 95.044682 2
+ 51.953125 95.950932 0
+ 51.578125 96.450932 2
+ 52.953125 96.763432 0
+ 62.484750 98.536458 0
+ 56.484750 98.411458 0
+ 50.982048 97.499060 2
+ 50.328125 97.888432 0
+ 49.359750 98.473958 0
+ 47.984750 98.473958 0
+ 50.734375 95.794682 2
+ 52.391000 90.347222 2
+ 51.234375 90.018640 0
+ 45.922250 88.940972 2
+ 45.553125 89.405099 0
+ 45.141000 89.953125 0
+ 43.161833 91.640625 0
+ 41.568083 92.828125 0
+ 38.849333 94.734375 0
+ 35.297380 96.751736 0
+ 31.859750 98.473958 0
+ 30.297250 98.348958 0
+ 32.266130 97.251736 0
+ 34.661833 95.859375 0
+ 37.068083 94.390625 0
+ 38.943083 93.171875 0
+ 41.031250 91.744792 0
+ 42.328125 90.744792 0
+ 43.890625 89.447917 0
+ 43.968750 89.088542 0
+ 43.890625 88.791667 2
+ 43.515625 88.604167 0
+ 37.406250 87.130208 0
+ 36.781250 87.223958 0
+ 31.046875 90.869792 2
+ 23.093750 95.598958 0
+ 17.859500 98.484375 0
+ END$SEGS
+STRAIGHT 938 0 0 0 0 N 2 0.000000 0.000000
+ T4 939 55.833692 89.804509 78.571803 9 0.000000 0.000000 17.380113 17.380113 1 1 0 17.229356
+ T4 1285 44.440397 87.501368 258.571803 0 0.0 0.0 0.0 0.0 0 0 0 17.229356
+ END$SEGS
+STRAIGHT 939 0 0 0 0 N 2 0.000000 0.000000
+ T4 1351 59.560545 90.568866 78.571734 0 0.0 0.0 0.0 0.0 0 0 0 17.373685
+ T4 938 55.859751 89.820755 258.571734 9 0.000000 0.000000 17.380113 17.380113 1 1 0 17.373685
+ END$SEGS
+DRAW 940 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 12169906 0.160000 14 2
+ 35.000000 92.557292 0
+ 34.546875 92.822917 2
+ 33.078125 90.463542 0
+ 32.734375 89.854167 2
+ 36.062500 87.729167 0
+ 36.062500 87.729167 0
+ 37.093750 87.104167 2
+ 44.531250 88.822917 2
+ 42.875000 90.322917 2
+ 41.843750 91.135417 0
+ 41.078125 91.729167 2
+ 40.734375 91.463542 0
+ 39.437500 89.661458 2
+ 39.093750 89.911458 0
+ END$SEGS
+DRAW 941 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12632256 0.000000 18 0
+ 26.875000 91.739583 2
+ 24.671875 88.046875 0
+ 22.109375 84.484375 0
+ 20.984375 85.421875 0
+ 21.421875 85.921875 2
+ 20.062500 86.937500 0
+ 22.015625 89.864583 0
+ 23.578125 88.864583 2
+ 23.781250 89.192708 0
+ 25.078125 91.208333 2
+ 24.765625 91.364583 2
+ 23.500000 89.395833 0
+ 21.171875 90.911458 0
+ 22.937500 93.677083 0
+ 25.515625 92.020833 2
+ 25.796875 92.411458 0
+ 25.718750 92.661458 0
+ 27.250000 91.713542 0
+ END$SEGS
+DRAW 942 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 12169906 0.160000 10 0
+ 38.250000 93.588542 0
+ 39.734375 92.604167 2
+ 39.484375 92.229167 2
+ 36.609375 93.947917 0
+ 36.296875 94.104167 2
+ 35.828125 93.432292 2
+ 35.234375 93.729167 2
+ 36.062500 94.979167 2
+ 36.656250 94.619792 0
+ 37.765625 93.916667 0
+ END$SEGS
+STRUCTURE 943 7 0 0 0 N 2 22.875000 97.536458 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 944 5 0 0 0 N 2 28.543737 88.519433 0 122.170996 "Design Preservations Models Bruce's Bakery 501"
+ D 0.000000 0.000000
+ F4 8421504 0.000000 4 0
+ 0.005075 0.015625 0
+ 1.630075 0.015625 0
+ 1.630075 3.031250 0
+ 0.005075 3.031250 0
+ F4 0 0.000000 4 0
+ 0.005075 0.015625 0
+ 0.005075 0.015625 0
+ 0.005075 0.015625 0
+ 0.005075 0.015625 0
+ L3 12632256 0.062500 0.005075 0.031250 0 1.614450 0.031250 0
+ L3 12632256 0.062500 1.598825 0.015625 0 1.598825 3.046875 0
+ L3 12632256 0.062500 0.031250 0.010550 0 0.031250 3.041800 0
+ F4 15132390 0.000000 4 0
+ 0.005075 0.890625 0
+ 0.161325 0.890625 0
+ 0.161325 1.046875 0
+ 0.005075 1.046875 0
+ F4 15132390 0.000000 4 0
+ 0.000000 1.948050 0
+ 0.156250 1.948050 0
+ 0.156250 2.104300 0
+ 0.000000 2.104300 0
+ F4 15132390 0.000000 4 0
+ 1.468750 1.948050 0
+ 1.625000 1.948050 0
+ 1.625000 2.104300 0
+ 1.468750 2.104300 0
+ F4 15132390 0.000000 4 0
+ 1.468750 0.885550 0
+ 1.625000 0.885550 0
+ 1.625000 1.041800 0
+ 1.468750 1.041800 0
+ L3 0 0.208333 0.015625 3.010550 0 1.625000 3.010550 0
+ END$SEGS
+DRAW 945 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14601163 0.000000 12 0
+ 26.984375 91.838542 2
+ 27.593750 91.447917 0
+ 33.625000 87.651042 0
+ 34.687500 86.963542 2
+ 34.609375 86.635417 0
+ 34.609375 86.635417 0
+ 34.609375 86.635417 0
+ 30.875000 85.182292 2
+ 30.375000 85.510417 0
+ 31.843750 87.682292 0
+ 31.593750 88.213542 0
+ 26.656250 91.307292 0
+ END$SEGS
+DRAW 946 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 12169906 0.160000 6 2
+ 26.671875 91.307292 0
+ 27.000000 91.807292 2
+ 34.640625 86.963542 2
+ 34.640625 86.619792 2
+ 30.812500 85.197917 2
+ 30.375000 85.463542 0
+ END$SEGS
+DRAW 947 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 5 0
+ 31.718750 86.036458 2
+ 32.843750 86.348958 1
+ 33.718750 86.755208 2
+ 32.968750 87.317708 0
+ 32.625000 87.317708 2
+ END$SEGS
+STRUCTURE 948 6 0 0 0 N 2 32.102430 86.232638 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+DRAW 949 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 13934408 0.000000 44 0
+ 148.837054 74.117599 2
+ 145.640625 73.538651 0
+ 141.187500 72.406250 2
+ 142.890625 73.788651 0
+ 142.453125 74.788651 0
+ 141.578125 74.726151 0
+ 139.453125 74.234375 2
+ 137.390625 72.859375 2
+ 135.515625 71.296875 2
+ 135.453125 71.671875 2
+ 136.140625 72.296875 0
+ 136.140625 72.296875 0
+ 136.656250 72.718750 0
+ 137.265625 73.421875 2
+ 136.625000 75.593750 0
+ 134.937500 77.343750 2
+ 131.857613 78.812500 2
+ 127.232613 79.937500 2
+ 135.687500 78.593750 2
+ 139.420113 79.500000 2
+ 144.482613 79.062500 2
+ 151.232613 76.500000 2
+ 154.312500 76.843750 2
+ 155.062500 79.656250 0
+ 154.212054 81.430099 2
+ 152.567434 82.470943 2
+ 151.125000 84.038651 2
+ 149.442434 85.470943 2
+ 149.504934 87.970943 2
+ 150.442434 89.158443 0
+ 153.129934 90.720943 0
+ 152.129934 88.095943 0
+ 152.129934 85.470943 0
+ 153.192434 83.658443 0
+ 155.312500 83.762610 0
+ 157.379934 83.783443 0
+ 158.125000 83.137610 0
+ 157.437500 81.512610 2
+ 156.375000 79.093750 0
+ 156.254934 77.783443 0
+ 155.754934 76.970943 0
+ 154.149554 76.367599 2
+ 152.000000 75.968750 0
+ 151.170113 74.750000 2
+ END$SEGS
+DRAW 950 13 0 0 0 0.000000 7.625000 0 0.000000
+ F4 3249396 0.000000 117 0
+ 132.562500 34.097222 0
+ 132.500000 36.222222 0
+ 130.562500 38.479167 0
+ 127.822917 40.843750 2
+ 125.197917 41.718750 2
+ 123.697917 44.218750 0
+ 122.947917 47.218750 2
+ 123.322917 50.968750 2
+ 120.528000 53.250000 2
+ 119.278000 55.500000 0
+ 118.528000 57.750000 2
+ 122.278000 59.000000 2
+ 123.028000 63.000000 2
+ 124.497396 64.372396 2
+ 127.872396 64.434896 0
+ 133.622396 63.622396 2
+ 135.309896 64.122396 0
+ 137.028000 65.250000 2
+ 136.062500 68.395833 2
+ 132.528000 70.500000 2
+ 132.528000 70.500000 2
+ 127.536184 72.098136 2
+ 129.729167 72.625000 1
+ 135.729167 71.750000 2
+ 139.604167 72.375000 2
+ 144.479167 71.875000 2
+ 148.213542 70.852431 0
+ 151.125000 69.500000 2
+ 154.625000 70.750000 2
+ 153.000000 74.375000 2
+ 149.000000 75.500000 0
+ 143.875000 75.250000 2
+ 147.875000 78.375000 0
+ 149.673611 82.125000 2
+ 152.111111 83.000000 0
+ 155.750000 84.250000 2
+ 158.750000 84.000000 2
+ 160.750000 84.500000 0
+ 163.541667 84.734375 0
+ 169.791667 85.234375 2
+ 172.916667 85.734375 0
+ 178.541667 86.359375 2
+ 179.666667 87.359375 2
+ 176.791667 87.734375 2
+ 172.291667 89.234375 2
+ 177.041667 90.109375 2
+ 187.453125 90.718750 0
+ 154.916667 90.859375 0
+ 162.541667 89.484375 2
+ 164.041667 87.734375 2
+ 157.541667 87.234375 0
+ 153.375000 85.750000 0
+ 147.500000 85.000000 0
+ 145.625000 83.125000 2
+ 146.625000 80.375000 2
+ 146.375000 78.750000 2
+ 144.125000 76.750000 0
+ 144.000000 75.500000 2
+ 145.875000 74.625000 0
+ 145.875000 74.625000 0
+ 147.750000 74.625000 2
+ 151.875000 73.375000 2
+ 148.750000 71.625000 2
+ 145.593750 73.098958 2
+ 144.729167 73.375000 0
+ 142.604167 73.625000 2
+ 136.854167 72.750000 2
+ 133.729167 73.750000 2
+ 128.104167 73.500000 0
+ 128.104167 73.500000 0
+ 127.312500 73.380208 2
+ 125.406250 73.505208 2
+ 124.406250 72.473958 2
+ 125.000000 70.911458 2
+ 126.468750 70.098958 2
+ 129.375000 70.270833 2
+ 132.125000 69.145833 0
+ 133.437500 68.520833 2
+ 136.125000 66.208333 2
+ 131.528000 65.250000 2
+ 121.997396 66.372396 2
+ 119.684896 64.372396 2
+ 120.872396 62.184896 0
+ 121.278000 59.500000 2
+ 116.028000 59.000000 2
+ 115.278000 57.250000 2
+ 119.278000 54.000000 2
+ 118.062500 51.375000 0
+ 116.937500 50.687500 0
+ 115.937500 50.562500 2
+ 115.187500 48.875000 2
+ 115.375000 46.750000 2
+ 113.828125 43.953125 2
+ 113.953125 43.203125 0
+ 113.578125 42.765625 0
+ 113.078125 42.515625 0
+ 110.875000 39.770833 0
+ 110.875000 39.770833 0
+ 108.937500 36.270833 2
+ 108.199653 33.348958 0
+ 108.449653 30.661458 1
+ 108.322917 28.770833 0
+ 108.574653 27.973958 0
+ 111.260417 25.520833 2
+ 113.824653 26.536458 0
+ 114.572917 26.520833 0
+ 115.572917 27.239583 0
+ 116.949653 27.786458 0
+ 117.370660 27.942708 0
+ 117.855035 28.286458 2
+ 119.042535 28.630208 2
+ 121.012153 35.036458 2
+ 122.447917 37.468750 1
+ 123.197917 39.093750 2
+ 124.000000 39.729167 0
+ 126.500000 39.041667 2
+ 129.895833 38.062500 2
+ END$SEGS
+DRAW 951 7 0 0 0 -16.958333 8.229167 0 0.000000
+ F4 11626343 0.000000 4 0
+ 137.375000 46.826389 0
+ 138.375000 46.826389 0
+ 138.375000 45.826389 0
+ 137.375000 45.826389 0
+ END$SEGS
+DRAW 952 7 0 0 0 -4.885225 80.989379 0 0.000000
+ F4 11626343 0.000000 4 0
+ 118.250649 -29.757413 0
+ 119.870263 -30.930807 0
+ 119.576915 -31.335710 0
+ 117.957301 -30.162317 0
+ END$SEGS
+DRAW 953 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 33 0
+ 151.093750 74.968750 0
+ 150.906250 74.500000 2
+ 147.432566 74.708333 2
+ 142.953125 72.913651 0
+ 141.015625 72.101151 0
+ 138.390625 71.476151 2
+ 141.953125 73.038651 0
+ 142.703125 73.663651 0
+ 142.515625 74.851151 0
+ 141.265625 74.851151 0
+ 139.078125 74.976151 2
+ 136.437500 76.450110 0
+ 134.812500 78.450110 2
+ 137.875000 77.887610 0
+ 141.415625 78.839583 2
+ 151.500000 76.562500 0
+ 154.165625 76.589583 2
+ 155.353125 78.777083 2
+ 155.103125 80.027083 2
+ 154.087500 80.907292 2
+ 151.718750 82.781250 2
+ 148.656250 84.281250 2
+ 152.853125 84.277083 0
+ 155.165625 84.152083 2
+ 158.478125 83.714583 2
+ 161.728125 83.089583 0
+ 159.009375 83.192708 2
+ 158.603125 82.161458 0
+ 157.040625 79.152083 2
+ 156.790625 78.161458 2
+ 155.415625 76.464583 2
+ 152.728125 76.339583 0
+ 151.468750 75.343750 2
+ END$SEGS
+DRAW 954 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 4105019 0.000000 16 0
+ 141.337054 74.867599 0
+ 139.524554 74.805099 2
+ 139.274554 75.805099 0
+ 139.337054 76.680099 2
+ 141.774554 77.055099 2
+ 143.524554 76.555099 2
+ 145.587054 76.680099 2
+ 150.524554 76.430099 2
+ 151.899554 75.055099 2
+ 149.149554 74.555099 2
+ 145.399554 73.680099 2
+ 143.587054 73.242599 2
+ 140.587054 71.930099 0
+ 141.212054 72.555099 2
+ 142.712054 73.680099 0
+ 142.462054 74.742599 0
+ END$SEGS
+STRUCTURE 955 7 0 0 0 N 2 136.812500 74.825110 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 956 7 0 0 0 N 2 135.750000 77.200110 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 957 7 0 0 0 N 2 137.687500 77.262610 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 958 7 0 0 0 N 2 145.750000 75.325110 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 959 7 0 0 0 N 2 140.812500 76.637610 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 960 7 0 0 0 N 2 139.524554 77.055099 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 961 7 0 0 0 N 2 138.649554 74.055099 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 962 7 0 0 0 N 2 148.212054 73.680099 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 963 7 0 0 0 N 2 147.087054 74.367599 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 964 7 0 0 0 N 2 144.087054 75.555099 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 965 7 0 0 0 N 2 143.024554 74.305099 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 966 7 0 0 0 N 2 144.649554 73.180099 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 967 7 0 0 0 N 2 141.962054 75.742599 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 968 7 0 0 0 N 2 143.837054 77.555099 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 969 7 0 0 0 N 2 142.087054 74.430099 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 970 6 0 0 0 N 2 126.234565 50.067387 0 91.430069 "Laser art stoney brook bridge 874"
+ D 0.000000 0.000000
+ F4 11626343 0.000000 4 0
+ 0.000000 1.500000 0
+ 5.250000 1.500000 0
+ 5.250000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+STRAIGHT 971 0 0 0 0 N 2 0.000000 0.000000
+ T4 810 126.879507 45.082103 181.332044 0 0.0 0.0 0.0 0.0 0 0 0 15.015796
+ T4 594 126.995612 50.075259 1.332044 10 0.000000 0.000000 0.0 0.0 1 2 0 15.015796
+ END$SEGS
+DRAW 972 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 7495519 0.000000 4 0
+ 145.161600 86.552511 0
+ 148.660602 86.701771 0
+ 148.708548 85.577793 0
+ 145.209547 85.428531 0
+ END$SEGS
+TURNOUT 973 0 0 0 0 N 2 151.043157 86.189064 0 358.173410 "Peco-80 Medium Left SL-1739/396"
+ T4 1383 151.043157 86.189064 268.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.349704
+ T4 105 155.910762 86.344296 88.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.349704
+ T4 559 155.894123 86.866030 74.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.349704
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.973080 0.000000
+ S 0 0.000000 0.973080 0.000000 4.870079 0.000000
+ C 0 0.000000 -14.687496 0.973099 14.687496 165.999924 14.000152
+ S 0 0.000000 4.526342 0.436290 4.870079 0.522000
+ END$SEGS
+CORNU 974 0 0 0 0 N 2 150.990528 84.789035 268.475256 45.394650 152.198419 39.410458 164.725947 82.267326 116.369204 21.675150 155.098849 62.847461
+ T4 1384 150.990528 84.789035 268.475256 0 0.0 0.0 0.0 0.0 0 0 0 15.412047
+ T4 557 164.725947 82.267326 116.369204 0 0.0 0.0 0.0 0.0 0 0 0 15.412047
+ W3 0 0.000000 150.990528 84.789035 153.340793 84.851595 155.700659 84.747713 158.021107 84.369319
+ SUBSEGS
+ C 0 0.000000 37.496986 152.281153 47.314267 358.027522 10.777807
+ SUBSEND
+ W3 0 0.000000 158.021107 84.369319 160.341554 83.990925 162.619480 83.311575 164.725947 82.267326
+ SUBSEGS
+ C 0 0.000000 23.663242 154.373183 60.988949 8.868078 17.076658
+ SUBSEND
+ END$SEGS
+DRAW 975 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 15195549 0.000000 7 0
+ 122.946429 70.143640 0
+ 121.758929 67.581140 2
+ 120.383929 66.393640 2
+ 119.133929 65.518640 0
+ 120.258929 65.581140 0
+ 121.258929 66.393640 0
+ 122.571429 67.893640 2
+ END$SEGS
+STRUCTURE 976 7 0 0 0 N 2 136.312500 75.762610 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 977 7 0 0 0 N 2 134.899554 77.367599 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 978 7 0 0 0 N 2 135.712054 76.805099 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 979 7 0 0 0 N 2 137.274554 73.055099 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 980 7 0 0 0 N 2 137.337054 72.492599 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 981 7 0 0 0 N 2 143.962054 73.367599 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 982 7 0 0 0 N 2 142.712054 72.805099 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 983 7 0 0 0 N 2 140.399554 72.055099 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 984 7 0 0 0 N 2 139.399554 71.742599 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+CORNU 985 0 0 0 0 N 2 95.360606 13.379502 125.917535 22.254068 108.415292 31.402229 93.375000 15.000000 312.547801 22.194477 108.383018 31.350970
+ T4 808 95.360606 13.379502 125.917535 0 0.0 0.0 0.0 0.0 0 0 0 15.585703
+ T4 809 93.375000 15.000000 312.547801 0 0.0 0.0 0.0 0.0 0 0 0 15.585703
+ W3 0 0.000000 95.360606 13.379502 94.668344 13.880939 94.004735 14.421987 93.375000 15.000000
+ SUBSEGS
+ C 0 0.000000 22.166269 108.359689 31.334093 215.904452 6.628422
+ SUBSEND
+ END$SEGS
+DRAW 986 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 11626343 0.000000 4 0
+ 91.672580 21.659276 2
+ 91.356218 21.429609 2
+ 92.592331 19.837437 2
+ 92.918371 20.054836 2
+ END$SEGS
+DRAW 987 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 11626343 0.000000 4 0
+ 91.557859 18.486385 2
+ 91.282646 18.208735 2
+ 92.759196 16.836588 2
+ 93.045937 17.103690 2
+ END$SEGS
+DRAW 988 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 11626343 0.000000 4 0
+ 91.924562 24.379649 2
+ 91.695928 24.062540 2
+ 93.368090 22.936989 2
+ 93.609753 23.245474 2
+ END$SEGS
+CORNU 989 0 0 0 0 N 2 128.445909 33.269114 8.988107 0.000000 0.000000 2.500000 108.737099 11.813297 268.372657 19.876586 108.172630 31.681866
+ T4 1141 128.445909 33.269114 8.988107 0 0.0 0.0 0.0 0.0 0 0 0 16.462456
+ T4 990 108.737099 11.813297 268.372657 0 0.0 0.0 0.0 0.0 0 0 0 16.462456
+ W3 0 0.000000 128.445909 33.269114 128.027989 30.626924 127.579285 27.975332 126.711188 25.445068
+ SUBSEGS
+ C 0 0.000000 82.666386 46.714899 45.669657 98.627337 2.783213
+ C 0 0.000000 32.049645 96.330629 35.652978 101.405492 7.166927
+ SUBSEND
+ W3 0 0.000000 126.711188 25.445068 125.843090 22.914805 124.558637 20.514947 122.822780 18.479602
+ SUBSEGS
+ C 0 0.000000 22.253359 105.629416 32.570436 108.674592 15.498621
+ C 0 0.000000 19.174997 108.225310 30.913200 124.433179 5.989977
+ SUBSEND
+ W3 0 0.000000 122.822780 18.479602 121.086924 16.444257 118.913425 14.784179 116.492217 13.646825
+ SUBSEGS
+ C 0 0.000000 18.929153 108.428395 30.772467 130.497464 24.288551
+ SUBSEND
+ W3 0 0.000000 116.492217 13.646825 114.071008 12.509470 111.411058 11.889265 108.737099 11.813297
+ SUBSEGS
+ C 0 0.000000 19.605708 108.197820 31.411587 154.972052 23.451759
+ SUBSEND
+ END$SEGS
+CORNU 990 0 0 0 0 N 2 108.737099 11.813297 88.372657 19.876586 108.172630 31.681866 95.250000 16.140625 307.598134 20.639616 107.842629 32.493589
+ T4 989 108.737099 11.813297 88.372657 0 0.0 0.0 0.0 0.0 0 0 0 15.710306
+ T4 991 95.250000 16.140625 307.598134 0 0.0 0.0 0.0 0.0 0 0 0 15.710306
+ W3 0 0.000000 108.737099 11.813297 106.331388 11.744950 103.916062 12.097683 101.621700 12.824333
+ SUBSEGS
+ C 0 0.000000 21.597934 108.175411 33.403926 178.509766 19.154663
+ SUBSEND
+ W3 0 0.000000 101.621700 12.824333 99.327338 13.550984 97.156837 14.672262 95.250000 16.140625
+ SUBSEGS
+ C 0 0.000000 20.708809 107.851856 32.573762 197.508405 19.974621
+ SUBSEND
+ END$SEGS
+CORNU 991 0 0 0 0 N 2 95.250000 16.140625 127.598134 20.639616 107.842629 32.493589 94.103758 17.103606 312.290163 19.016556 106.899723 31.171040
+ T4 990 95.250000 16.140625 127.598134 0 0.0 0.0 0.0 0.0 0 0 0 15.452723
+ T4 992 94.103758 17.103606 312.290163 0 0.0 0.0 0.0 0.0 0 0 0 15.452723
+ W3 0 0.000000 95.250000 16.140625 94.854506 16.445176 94.473014 16.767725 94.103758 17.103606
+ SUBSEGS
+ C 0 0.000000 18.288630 106.431110 30.613247 217.688590 4.691410
+ SUBSEND
+ END$SEGS
+CORNU 992 0 0 0 0 N 2 94.103758 17.103606 132.290163 19.016556 106.899723 31.171040 90.625000 21.390625 329.520639 18.505669 106.573406 30.777218
+ T4 991 94.103758 17.103606 132.290163 0 0.0 0.0 0.0 0.0 0 0 0 15.338956
+ T4 993 90.625000 21.390625 329.520639 0 0.0 0.0 0.0 0.0 0 0 0 15.338956
+ W3 0 0.000000 94.103758 17.103606 92.737223 18.346628 91.562003 19.798599 90.625000 21.390625
+ SUBSEGS
+ C 0 0.000000 18.461686 106.538866 30.749189 222.342655 17.198577
+ SUBSEND
+ END$SEGS
+CORNU 993 0 0 0 0 N 2 90.625000 21.390625 149.520639 18.505669 106.573406 30.777218 87.858645 29.041507 350.639694 17.992126 105.611207 31.967790
+ T4 992 90.625000 21.390625 149.520639 0 0.0 0.0 0.0 0.0 0 0 0 15.117159
+ T4 804 87.858645 29.041507 350.639694 0 0.0 0.0 0.0 0.0 0 0 0 15.117159
+ W3 0 0.000000 90.625000 21.390625 89.242297 23.739923 88.302008 26.351805 87.858645 29.041507
+ SUBSEGS
+ C 0 0.000000 22.269752 109.832287 32.661029 239.596547 21.049626
+ SUBSEND
+ END$SEGS
+STRUCTURE 994 5 0 0 0 N 2 99.553582 86.484524 0 10.485590 "American model builders NINE MILE HOUSE 645"
+ D 0.000000 0.000000
+ F4 16744703 0.041667 4 0
+ 0.031828 2.644750 0
+ 2.281828 2.644750 0
+ 2.281828 0.394750 0
+ 0.031828 0.394750 0
+ L3 3217689 0.041667 0.031828 2.639541 0 2.250578 0.426000 0
+ L3 3217689 0.041667 0.031828 0.405166 0 2.250578 2.613500 0
+ L3 3217689 0.041667 1.162037 2.655166 0 1.146412 0.389541 0
+ L3 3217689 0.041667 0.000578 1.551000 0 2.250578 1.488500 0
+ L3 3217689 0.041667 0.531828 0.389541 0 2.281828 2.123916 0
+ L3 3217689 0.041667 0.016203 0.905166 0 1.781828 2.655166 0
+ L3 3217689 0.041667 0.531828 2.639541 0 2.281828 0.905166 0
+ L3 3217689 0.041667 0.031828 2.139541 0 1.797453 0.389541 0
+ F4 12632256 0.000000 4 0
+ 0.656828 2.035375 0
+ 1.656828 2.035375 0
+ 1.656828 1.035375 0
+ 0.656828 1.035375 0
+ F4 12632256 0.000000 4 0
+ 0.031828 0.405166 0
+ 2.281828 0.405166 0
+ 2.281828 0.020166 0
+ 0.031828 0.020166 0
+ L3 3217689 0.041667 0.031828 0.030166 0 0.427662 0.426000 0
+ L3 3217689 0.041667 1.880787 0.425999 0 2.281828 0.014541 0
+ END$SEGS
+DRAW 995 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 9 0
+ 99.281250 86.270833 0
+ 99.671875 88.406250 0
+ 99.703125 88.968750 2
+ 95.546875 89.333333 2
+ 95.484375 88.520833 2
+ 95.375000 87.645833 2
+ 98.078125 87.031250 2
+ 98.578125 86.906250 2
+ 98.484375 86.411458 0
+ END$SEGS
+DRAW 996 5 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 100.078125 87.840735 0.000000 0 18.000000 "GENERAL\n STORE"
+ END$SEGS
+DRAW 997 5 0 0 0 80.852589 72.923309 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 " MEAT \nPACKING HOUSE"
+ END$SEGS
+CORNU 998 0 0 0 0 N 2 134.184271 92.986636 262.334008 0.000000 0.000000 2.500000 139.686393 93.689770 82.123101 0.000000 0.000000 2.500000
+ T4 643 134.184271 92.986636 262.334008 0 0.0 0.0 0.0 0.0 0 0 0 17.373137
+ T4 652 139.686393 93.689770 82.123101 0 0.0 0.0 0.0 0.0 0 0 0 17.373137
+ W3 0 0.000000 134.184271 92.986636 136.016732 93.233287 137.854852 93.436375 139.686393 93.689770
+ SUBSEGS
+ S 0 0.000000 134.184271 92.986636 139.686393 93.689770
+ SUBSEND
+ END$SEGS
+STRAIGHT 999 0 0 0 0 N 2 0.000000 0.000000
+ E4 106.719200 57.995804 178.465659 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1363 106.500000 66.179276 358.465659 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ END$SEGS
+STRUCTURE 1000 7 0 0 0 N 2 128.450541 93.015862 0 314.696851 "custom TUNNEL PORTAL CF003"
+ D 0.000000 0.000000
+ Y4 0 0.187500 4 2
+ 1.687500 1.406250 0
+ 0.750000 1.718750 0
+ 0.093750 1.031250 0
+ 0.562500 0.093750 0
+ END$SEGS
+STRUCTURE 1001 7 0 0 0 N 2 121.854167 95.234375 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1002 7 0 0 0 N 2 120.291667 92.859375 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1003 7 0 0 0 N 2 118.479167 94.609375 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1004 7 0 0 0 N 2 122.416667 92.109375 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1005 7 0 0 0 N 2 117.666667 94.609375 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1006 7 0 0 0 N 2 126.791667 96.234375 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1007 7 0 0 0 N 2 128.541667 95.359375 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1008 7 0 0 0 N 2 130.541667 95.484375 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1009 7 0 0 0 N 2 126.416667 92.609375 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1010 7 0 0 0 N 2 135.666667 95.234375 0 0.000000 " 5"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.500000 2.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.514880 3.048215 4.433333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.433562 3.913385 4.058010 0 298.767649 215.737855
+ A3 2263842 0.000000 0.428345 4.384758 3.319875 0 324.057888 227.354676
+ A3 2263842 0.000000 0.616908 4.287665 2.283218 0 1.145763 180.804790
+ A3 2263842 0.000000 0.578692 3.959532 1.258235 0 40.236358 182.520220
+ A3 2263842 0.000000 0.583217 2.981513 0.611220 0 71.113913 194.504907
+ A3 2263842 0.000000 0.705998 1.776358 0.897580 0 117.950969 168.710472
+ A3 2263842 0.000000 0.538760 0.801150 1.548275 0 146.309932 187.890372
+ A3 2263842 0.000000 0.527253 0.524620 2.558908 0 175.426079 200.202923
+ A3 2263842 0.000000 0.637937 1.020533 3.597465 0 213.690068 179.169641
+ A3 2263842 0.000000 0.334523 1.585317 4.386507 0 220.815084 209.352786
+ A3 2263842 0.000000 0.372677 2.233332 4.666667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.149070 2.500000 2.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1011 7 0 0 0 N 2 155.916667 95.109375 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1012 7 0 0 0 N 2 143.791667 95.484375 0 0.000000 " 5"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.500000 2.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.514880 3.048215 4.433333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.433562 3.913385 4.058010 0 298.767649 215.737855
+ A3 2263842 0.000000 0.428345 4.384758 3.319875 0 324.057888 227.354676
+ A3 2263842 0.000000 0.616908 4.287665 2.283218 0 1.145763 180.804790
+ A3 2263842 0.000000 0.578692 3.959532 1.258235 0 40.236358 182.520220
+ A3 2263842 0.000000 0.583217 2.981513 0.611220 0 71.113913 194.504907
+ A3 2263842 0.000000 0.705998 1.776358 0.897580 0 117.950969 168.710472
+ A3 2263842 0.000000 0.538760 0.801150 1.548275 0 146.309932 187.890372
+ A3 2263842 0.000000 0.527253 0.524620 2.558908 0 175.426079 200.202923
+ A3 2263842 0.000000 0.637937 1.020533 3.597465 0 213.690068 179.169641
+ A3 2263842 0.000000 0.334523 1.585317 4.386507 0 220.815084 209.352786
+ A3 2263842 0.000000 0.372677 2.233332 4.666667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.149070 2.500000 2.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1013 7 0 0 0 N 2 147.166667 95.609375 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1014 7 0 0 0 N 2 142.041667 96.734375 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1015 7 0 0 0 N 2 133.291667 96.359375 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1016 7 0 0 0 N 2 133.041667 95.234375 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1017 7 0 0 0 N 2 118.666667 93.484375 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1018 7 0 0 0 N 2 116.666667 93.609375 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1019 7 0 0 0 N 2 115.541667 90.359375 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1020 7 0 0 0 N 2 124.838542 91.968750 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1021 7 0 0 0 N 2 127.776042 92.781250 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 1022 7 0 0 0 N 2 138.041667 94.609375 0 0.000000 " 5"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.500000 2.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.514880 3.048215 4.433333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.433562 3.913385 4.058010 0 298.767649 215.737855
+ A3 2263842 0.000000 0.428345 4.384758 3.319875 0 324.057888 227.354676
+ A3 2263842 0.000000 0.616908 4.287665 2.283218 0 1.145763 180.804790
+ A3 2263842 0.000000 0.578692 3.959532 1.258235 0 40.236358 182.520220
+ A3 2263842 0.000000 0.583217 2.981513 0.611220 0 71.113913 194.504907
+ A3 2263842 0.000000 0.705998 1.776358 0.897580 0 117.950969 168.710472
+ A3 2263842 0.000000 0.538760 0.801150 1.548275 0 146.309932 187.890372
+ A3 2263842 0.000000 0.527253 0.524620 2.558908 0 175.426079 200.202923
+ A3 2263842 0.000000 0.637937 1.020533 3.597465 0 213.690068 179.169641
+ A3 2263842 0.000000 0.334523 1.585317 4.386507 0 220.815084 209.352786
+ A3 2263842 0.000000 0.372677 2.233332 4.666667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.149070 2.500000 2.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1023 7 0 0 0 N 2 142.416667 95.359375 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1024 7 0 0 0 N 2 153.791667 94.984375 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1025 7 0 0 0 N 2 152.666667 95.109375 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1026 7 0 0 0 N 2 150.791667 95.234375 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1027 7 0 0 0 N 2 150.166667 95.359375 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1028 7 0 0 0 N 2 133.666667 94.109375 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 1029 7 0 0 0 N 2 132.041667 94.609375 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1030 7 0 0 0 N 2 123.791667 93.859375 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 1031 7 0 0 0 N 2 119.166667 90.984375 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1032 7 0 0 0 N 2 129.151042 92.343750 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1033 7 0 0 0 N 2 127.151042 94.218750 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+DRAW 1034 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 13534340 0.055556 38 0
+ 123.229167 73.625000 0
+ 123.229167 73.625000 0
+ 125.088542 74.609375 2
+ 130.463542 74.859375 1
+ 134.151042 75.234375 2
+ 137.588542 74.796875 1
+ 140.151042 74.421875 2
+ 145.026042 74.859375 2
+ 146.088542 75.859375 0
+ 147.443000 76.196181 2
+ 147.750000 75.416667 0
+ 148.218750 74.197917 2
+ 149.937500 73.791667 0
+ 150.656250 73.942708 2
+ 150.828125 73.848958 2
+ 151.343750 73.223958 2
+ 151.718750 73.473958 0
+ 151.406250 73.067708 0
+ 151.125000 73.041667 2
+ 150.875000 73.666667 2
+ 149.375000 73.697917 0
+ 147.937500 73.885417 2
+ 148.875000 73.197917 0
+ 150.093750 72.833333 2
+ 150.265625 72.536458 2
+ 150.031250 72.364583 0
+ 149.234375 72.317708 2
+ 150.328125 72.567708 2
+ 149.312500 72.854167 0
+ 148.343750 73.067708 2
+ 147.781250 72.755208 2
+ 146.140625 73.302083 0
+ 144.328125 73.880208 2
+ 137.463542 73.359375 1
+ 134.651042 74.484375 2
+ 128.854167 74.000000 2
+ 125.229167 73.750000 2
+ 123.604167 72.625000 0
+ END$SEGS
+STRUCTURE 1035 7 0 0 0 N 2 150.500000 75.950110 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 1036 7 0 0 0 N 2 143.037500 82.128125 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1037 7 0 0 0 N 2 141.337500 81.725000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1038 7 0 0 0 N 2 147.587500 81.225000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1039 7 0 0 0 N 2 147.587500 79.475000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+TURNOUT 1040 0 0 0 0 N 2 167.021938 94.153040 0 180.123101 "Kato Unitrack Single Track Truss Bridge 9.75 248mm 20-430/1/2/3/4"
+ T4 1041 167.021938 94.153040 90.123101 0 0.0 0.0 0.0 0.0 0 0 0 17.996000
+ T4 1043 157.258181 94.174018 270.123101 0 0.0 0.0 0.0 0.0 0 0 0 17.996000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 9.763779 0.000000
+ L3 0 0.053333 0.000000 0.473340 0 9.763779 0.473340 0
+ L3 0 0.053333 0.000000 -0.473340 0 9.763779 -0.473340 0
+ L3 0 0.053333 1.220474 -0.473340 0 1.220474 0.473340 0
+ L3 0 0.053333 1.220474 -0.473340 0 2.440948 0.473340 0
+ L3 0 0.053333 2.440948 -0.473340 0 1.220474 0.473340 0
+ L3 0 0.053333 2.440948 -0.473340 0 2.440948 0.473340 0
+ L3 0 0.053333 2.440948 -0.473340 0 3.661422 0.473340 0
+ L3 0 0.053333 3.661422 -0.473340 0 2.440948 0.473340 0
+ L3 0 0.053333 3.661422 -0.473340 0 3.661422 0.473340 0
+ L3 0 0.053333 3.661422 -0.473340 0 4.881896 0.473340 0
+ L3 0 0.053333 4.881896 -0.473340 0 3.661422 0.473340 0
+ L3 0 0.053333 4.881896 -0.473340 0 4.881896 0.473340 0
+ L3 0 0.053333 4.881896 -0.473340 0 6.102370 0.473340 0
+ L3 0 0.053333 6.102370 -0.473340 0 4.881896 0.473340 0
+ L3 0 0.053333 6.102370 -0.473340 0 6.102370 0.473340 0
+ L3 0 0.053333 6.102370 -0.473340 0 7.322844 0.473340 0
+ L3 0 0.053333 7.322844 -0.473340 0 6.102370 0.473340 0
+ L3 0 0.053333 7.322844 -0.473340 0 7.322844 0.473340 0
+ L3 0 0.053333 7.322844 -0.473340 0 8.543318 0.473340 0
+ L3 0 0.053333 8.543318 -0.473340 0 7.322844 0.473340 0
+ L3 0 0.053333 8.543318 -0.473340 0 8.543318 0.473340 0
+ END$SEGS
+TURNOUT 1041 0 0 0 0 N 2 167.021938 94.153040 0 0.123101 "Kato Unitrack Single Track Truss Bridge 9.75 248mm 20-430/1/2/3/4"
+ T4 1040 167.021938 94.153040 270.123101 0 0.0 0.0 0.0 0.0 0 0 0 17.998000
+ T4 1042 176.785694 94.132063 90.123101 0 0.0 0.0 0.0 0.0 0 0 0 17.998000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 9.763779 0.000000
+ L3 0 0.053333 0.000000 0.473340 0 9.763779 0.473340 0
+ L3 0 0.053333 0.000000 -0.473340 0 9.763779 -0.473340 0
+ L3 0 0.053333 1.220474 -0.473340 0 1.220474 0.473340 0
+ L3 0 0.053333 1.220474 -0.473340 0 2.440948 0.473340 0
+ L3 0 0.053333 2.440948 -0.473340 0 1.220474 0.473340 0
+ L3 0 0.053333 2.440948 -0.473340 0 2.440948 0.473340 0
+ L3 0 0.053333 2.440948 -0.473340 0 3.661422 0.473340 0
+ L3 0 0.053333 3.661422 -0.473340 0 2.440948 0.473340 0
+ L3 0 0.053333 3.661422 -0.473340 0 3.661422 0.473340 0
+ L3 0 0.053333 3.661422 -0.473340 0 4.881896 0.473340 0
+ L3 0 0.053333 4.881896 -0.473340 0 3.661422 0.473340 0
+ L3 0 0.053333 4.881896 -0.473340 0 4.881896 0.473340 0
+ L3 0 0.053333 4.881896 -0.473340 0 6.102370 0.473340 0
+ L3 0 0.053333 6.102370 -0.473340 0 4.881896 0.473340 0
+ L3 0 0.053333 6.102370 -0.473340 0 6.102370 0.473340 0
+ L3 0 0.053333 6.102370 -0.473340 0 7.322844 0.473340 0
+ L3 0 0.053333 7.322844 -0.473340 0 6.102370 0.473340 0
+ L3 0 0.053333 7.322844 -0.473340 0 7.322844 0.473340 0
+ L3 0 0.053333 7.322844 -0.473340 0 8.543318 0.473340 0
+ L3 0 0.053333 8.543318 -0.473340 0 7.322844 0.473340 0
+ L3 0 0.053333 8.543318 -0.473340 0 8.543318 0.473340 0
+ END$SEGS
+TURNOUT 1042 0 0 0 0 N 2 176.785694 94.132063 0 0.123101 "Atlas Deck Truss Bridge 2547"
+ T4 1041 176.785694 94.132063 270.123101 0 0.0 0.0 0.0 0.0 0 0 0 17.999500
+ T4 542 181.667573 94.121574 90.123101 9 0.745293 1.378423 18.000000 18.000000 1 1 0 17.999500
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 4.881890 0.000000
+ L3 0 0.020833 0.000000 0.365000 0 0.000000 -0.365000 0
+ L3 0 0.020833 0.000000 0.365000 0 4.881890 0.365000 0
+ L3 0 0.020833 0.000000 0.315000 0 4.881890 0.315000 0
+ L3 0 0.020833 0.000000 -0.315000 0 4.881890 -0.315000 0
+ L3 0 0.020833 0.000000 -0.365000 0 4.881890 -0.365000 0
+ L3 0 0.020833 4.881890 0.365000 0 4.881890 -0.365000 0
+ END$SEGS
+TURNOUT 1043 0 0 0 0 N 2 157.258181 94.174018 0 180.123101 "Atlas Deck Truss Bridge 2547"
+ T4 1040 157.258181 94.174018 90.123101 0 0.0 0.0 0.0 0.0 0 0 0 17.994500
+ T4 653 152.376303 94.184507 270.123101 9 0.000000 0.000000 17.994000 17.994000 1 1 0 17.994500
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 4.881890 0.000000
+ L3 0 0.020833 0.000000 0.365000 0 0.000000 -0.365000 0
+ L3 0 0.020833 0.000000 0.365000 0 4.881890 0.365000 0
+ L3 0 0.020833 0.000000 0.315000 0 4.881890 0.315000 0
+ L3 0 0.020833 0.000000 -0.315000 0 4.881890 -0.315000 0
+ L3 0 0.020833 0.000000 -0.365000 0 4.881890 -0.365000 0
+ L3 0 0.020833 4.881890 0.365000 0 4.881890 -0.365000 0
+ END$SEGS
+DRAW 1044 13 0 0 0 0.000000 0.000000 0 0.000000
+ Z 16773617 165.093750 96.343750 0.000000 1 80.000000 "DAR LAKE"
+ END$SEGS
+CORNU 1045 0 0 0 0 N 2 102.174969 59.590145 5.493328 0.000000 0.000000 2.500000 99.504167 49.491445 196.062942 0.000000 0.000000 2.500000
+ T4 620 102.174969 59.590145 5.493328 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 621 99.504167 49.491445 196.062942 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 102.174969 59.590145 102.091376 58.720936 101.994864 57.851672 101.822312 56.995671
+ SUBSEGS
+ C 0 0.000000 25.428635 76.835125 61.713294 94.789453 5.902233
+ SUBSEND
+ W3 0 0.000000 101.822312 56.995671 101.649759 56.139670 101.407416 55.299027 101.132690 54.470149
+ SUBSEGS
+ C 0 0.000000 21.631962 80.647776 61.420695 101.803716 6.938396
+ SUBSEND
+ W3 0 0.000000 101.132690 54.470149 100.583238 52.812394 99.987395 51.169700 99.504167 49.491445
+ SUBSEGS
+ C 0 0.000000 -331.560956 414.910060 -52.657950 288.171651 0.678990
+ S 0 0.000000 99.885219 50.744260 99.504167 49.491445
+ SUBSEND
+ END$SEGS
+STRAIGHT 1046 0 0 0 0 N 2 0.000000 0.000000
+ T4 1048 100.083733 40.984883 195.871179 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1047 102.250000 48.604167 15.871179 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ END$SEGS
+CORNU 1047 0 0 0 0 N 2 102.696791 59.576542 357.493328 0.000000 0.000000 2.500000 102.250000 48.604167 195.871179 0.000000 0.000000 2.500000
+ T4 620 102.696791 59.576542 357.493328 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1046 102.250000 48.604167 195.871179 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 102.696791 59.576542 102.777439 57.734313 102.978004 55.898132 103.024678 54.054729
+ SUBSEGS
+ C 0 0.000000 -295.323569 397.529119 76.603247 265.889840 0.804973
+ C 0 0.000000 42.561449 60.478581 52.911647 86.599565 1.861444
+ SUBSEND
+ W3 0 0.000000 103.024678 54.054729 103.048015 53.133028 103.010112 52.208389 102.875025 51.296343
+ SUBSEGS
+ C 0 0.000000 16.056693 86.976168 53.542166 88.170690 9.869541
+ SUBSEND
+ W3 0 0.000000 102.875025 51.296343 102.739939 50.384296 102.502143 49.491016 102.250000 48.604167
+ SUBSEGS
+ C 0 0.000000 21.289533 81.868266 54.754707 99.348803 7.443291
+ SUBSEND
+ END$SEGS
+TURNOUT 1048 0 0 0 0 N 2 100.083733 40.984883 0 105.871179 "Peco-80 Curved Right SL-1734/386"
+ T4 1046 100.083733 40.984883 15.871179 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1229 97.898721 35.225883 205.686179 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1049 97.423180 35.453589 215.504179 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 2 5 6 7
+ C 0 0.000000 35.984252 0.000000 -35.984252 0.000000 0.318449
+ S 0 0.000000 0.199999 -0.000556 0.249998 -0.000732
+ C 0 0.000000 35.417758 0.050634 -35.417928 0.322516 9.248991
+ C 0 0.000000 35.984252 0.002864 -35.984333 9.496551 0.318449
+ C 0 0.000000 16.099920 0.301422 -16.100570 359.816995 10.181213
+ C 0 0.000000 19.147709 -0.432227 -19.064875 10.620177 8.562309
+ C 0 0.000000 17.992126 0.002783 -17.992594 18.996102 0.636898
+ END$SEGS
+CORNU 1049 0 0 0 0 N 2 97.423180 35.453589 35.504179 17.992126 82.776274 45.902738 94.950893 32.071194 212.499982 0.000000 0.000000 2.500000
+ T4 1048 97.423180 35.453589 35.504179 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 616 94.950893 32.071194 212.499982 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 97.423180 35.453589 97.017433 34.884840 96.573445 34.344616 96.146799 33.791372
+ SUBSEGS
+ C 0 0.000000 56.275262 52.158454 68.890241 126.452953 2.133865
+ SUBSEND
+ W3 0 0.000000 96.146799 33.791372 95.720154 33.238127 95.326275 32.660426 94.950893 32.071194
+ SUBSEGS
+ C 0 0.000000 -23.370916 114.718733 19.603949 302.238942 5.137895
+ SUBSEND
+ END$SEGS
+CORNU 1050 0 0 0 0 N 2 97.726610 43.317975 16.062942 0.000000 0.000000 2.500000 94.455868 32.236828 198.499982 0.000000 0.000000 2.500000
+ T4 621 97.726610 43.317975 16.062942 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 616 94.455868 32.236828 198.499982 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 97.726610 43.317975 97.193719 41.467239 96.686351 39.609288 96.164790 37.755327
+ SUBSEGS
+ S 0 0.000000 97.726610 43.317975 96.164790 37.755327
+ SUBSEND
+ W3 0 0.000000 96.164790 37.755327 95.643228 35.901366 95.066973 34.063231 94.455868 32.236828
+ SUBSEGS
+ C 0 0.000000 118.759566 -18.100716 70.116241 105.812551 2.787421
+ SUBSEND
+ END$SEGS
+DRAW 1051 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 11 0
+ 105.687500 33.520833 0
+ 100.812500 33.395833 0
+ 98.687500 29.083333 0
+ 97.875000 28.833333 0
+ 96.500000 25.020833 0
+ 98.187500 23.833333 2
+ 99.812500 27.333333 2
+ 99.812500 28.083333 2
+ 101.125000 28.208333 2
+ 103.250000 32.020833 0
+ 106.312500 32.333333 0
+ END$SEGS
+STRUCTURE 1052 7 0 0 0 N 2 91.187500 5.375000 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1053 7 0 0 0 N 2 96.812500 2.125000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1054 7 0 0 0 N 2 100.937500 0.687500 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1055 7 0 0 0 N 2 103.812500 0.687500 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1056 7 0 0 0 N 2 105.312500 6.687500 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 1057 7 0 0 0 N 2 104.937500 5.812500 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 1058 7 0 0 0 N 2 102.187500 6.875000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1059 7 0 0 0 N 2 99.187500 6.812500 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1060 7 0 0 0 N 2 103.687500 6.375000 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1061 7 0 0 0 N 2 111.437500 6.812500 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1062 7 0 0 0 N 2 113.062500 1.125000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1063 7 0 0 0 N 2 115.062500 1.812500 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 1064 7 0 0 0 N 2 115.875000 2.625000 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 1065 7 0 0 0 N 2 117.687500 2.500000 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+CORNU 1066 0 0 0 0 N 2 46.969790 74.876409 75.811507 0.000000 0.000000 2.500000 31.785344 68.647808 246.787050 0.000000 0.000000 2.500000
+ T4 275 46.969790 74.876409 75.811507 0 0.0 0.0 0.0 0.0 0 0 0 15.656447
+ T4 267 31.785344 68.647808 246.787050 0 0.0 0.0 0.0 0.0 0 0 0 15.656447
+ W3 0 0.000000 46.969790 74.876409 45.640699 74.540381 44.314476 74.186597 43.021364 73.731340
+ SUBSEGS
+ C 0 0.000000 -45.262526 57.589547 30.877352 341.224571 5.205863
+ SUBSEND
+ W3 0 0.000000 43.021364 73.731340 41.728252 73.276083 40.469383 72.728260 39.231509 72.139137
+ SUBSEGS
+ C 0 0.000000 -38.924036 56.181788 37.099607 334.184748 6.053770
+ SUBSEND
+ W3 0 0.000000 39.231509 72.139137 36.755760 70.960892 34.305206 69.728497 31.785344 68.647808
+ SUBSEGS
+ C 0 0.000000 447.216690 -156.072828 474.456157 154.105798 0.790313
+ C 0 0.000000 81.403515 -0.364022 143.433840 155.290784 1.447090
+ SUBSEND
+ END$SEGS
+DRAW 1067 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14601163 0.000000 20 0
+ 31.015625 97.950932 2
+ 34.828125 95.763432 2
+ 34.203125 94.825932 0
+ 32.078125 91.638432 0
+ 31.390625 90.607182 2
+ 22.796875 95.763432 1
+ 17.828125 98.513432 0
+ 19.015625 98.513432 0
+ 23.140625 96.357182 2
+ 23.890625 97.575932 0
+ 24.421875 98.482182 0
+ 25.234375 98.450932 0
+ 23.812500 96.055099 0
+ 28.546875 93.273849 0
+ 30.953125 91.763432 0
+ 31.671875 92.898849 0
+ 31.921875 92.763432 0
+ 33.593750 95.414474 0
+ 31.046875 97.013432 0
+ 30.734375 97.294682 2
+ END$SEGS
+DRAW 1068 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 12169906 0.160000 10 2
+ 30.984375 97.013432 0
+ 30.703125 97.367599 2
+ 31.015625 97.851974 2
+ 31.437500 97.711349 0
+ 34.796875 95.742599 2
+ 34.390625 95.164474 0
+ 31.406250 90.617599 2
+ 30.343750 91.226974 0
+ 22.750000 95.742599 1
+ 17.859375 98.508224 0
+ END$SEGS
+DRAW 1069 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12632256 0.000000 8 0
+ 25.266000 98.473958 0
+ 25.125375 98.223958 0
+ 29.984750 95.348958 0
+ 30.984750 96.942708 0
+ 30.609750 97.333333 2
+ 30.937875 97.864583 2
+ 31.312875 97.833333 0
+ 30.094125 98.473958 0
+ END$SEGS
+DRAW 1070 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14601163 0.000000 4 0
+ 21.015625 94.911458 0
+ 21.375000 95.442708 0
+ 25.906250 92.536458 2
+ 25.593750 91.958333 2
+ END$SEGS
+DRAW 1071 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 852739 0.160000 3 2
+ 31.218750 78.609375 0
+ 29.667418 79.029095 0
+ 22.346150 84.572795 0
+ END$SEGS
+STRUCTURE 1072 7 0 0 0 N 2 3.437500 55.239583 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1073 7 0 0 0 N 2 3.062500 57.614583 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1074 7 0 0 0 N 2 4.531250 60.979167 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 1075 7 0 0 0 N 2 -0.687500 55.177083 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1076 7 0 0 0 N 2 0.500000 58.614583 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1077 7 0 0 0 N 2 2.156250 62.979167 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1078 7 0 0 0 N 2 -0.062500 66.677083 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+DRAW 1079 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 7916407 0.000000 10 0
+ 92.062500 82.244792 0
+ 91.312500 82.947917 2
+ 90.750000 84.072917 2
+ 90.468750 84.635417 0
+ 86.312500 85.291667 0
+ 86.171875 84.791667 0
+ 88.218750 84.010417 1
+ 90.078125 83.166667 1
+ 91.406250 82.510417 1
+ 92.968750 81.442708 2
+ END$SEGS
+STRUCTURE 1080 5 0 0 0 N 2 96.571580 81.408552 0 45.823429 "Osborn BUNGALOW 3102"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.031583 2.000000 0
+ 2.281583 2.000000 0
+ 2.281583 0.000000 0
+ 0.031583 0.000000 0
+ L3 852739 0.041667 0.000333 0.973958 0 2.281583 1.010417 0
+ END$SEGS
+STRUCTURE 1081 5 0 0 0 N 2 103.663679 78.458626 0 303.092410 "Osborn BUNGALOW 3102"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.031583 2.000000 0
+ 2.281583 2.000000 0
+ 2.281583 0.000000 0
+ 0.031583 0.000000 0
+ L3 852739 0.041667 0.000333 0.973958 0 2.281583 1.010417 0
+ END$SEGS
+STRUCTURE 1082 5 0 0 0 N 2 98.459661 79.447348 0 47.944822 "Osborn BUNGALOW 3102"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.031583 2.000000 0
+ 2.281583 2.000000 0
+ 2.281583 0.000000 0
+ 0.031583 0.000000 0
+ L3 852739 0.041667 0.000333 0.973958 0 2.281583 1.010417 0
+ END$SEGS
+DRAW 1083 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 4 0
+ 95.340868 81.502282 0
+ 96.981380 82.996126 0
+ 97.444262 82.487799 0
+ 95.847895 80.991889 0
+ END$SEGS
+DRAW 1084 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 4 0
+ 103.624937 77.482184 0
+ 101.789631 78.728981 0
+ 102.175963 79.297668 0
+ 104.002980 78.094280 0
+ END$SEGS
+DRAW 1085 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 4 0
+ 99.494927 77.177851 0
+ 101.167598 78.635598 0
+ 101.619295 78.117305 0
+ 99.990713 76.656532 0
+ END$SEGS
+DRAW 1086 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 13290186 0.000000 142.275799 89.375800 0 142.173253 89.406802 0
+ END$SEGS
+DRAW 1087 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 13290186 0.000000 142.359034 89.350636 0 142.275799 89.375800 0
+ END$SEGS
+DRAW 1088 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 13290186 0.000000 142.359034 89.350636 0 142.359034 89.350636 0
+ END$SEGS
+DRAW 1089 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 22 0
+ 128.125000 89.692708 2
+ 125.875000 88.442708 2
+ 123.531250 86.786458 0
+ 124.406250 86.848958 2
+ 124.500000 85.348958 0
+ 127.625000 85.880208 0
+ 127.531250 88.567708 2
+ 128.750000 88.723958 0
+ 130.656250 88.880208 0
+ 130.750000 89.505208 2
+ 136.093750 89.755208 2
+ 136.312500 89.380208 0
+ 136.500000 86.255208 0
+ 140.343750 86.317708 0
+ 140.218750 89.380208 2
+ 142.000000 89.411458 2
+ 144.093750 88.880208 0
+ 141.343750 90.317708 0
+ 139.156250 91.098958 2
+ 136.406250 91.255208 0
+ 132.875000 90.942708 2
+ 130.218750 90.317708 2
+ END$SEGS
+DRAW 1090 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 15195549 0.000000 10 0
+ 150.750000 79.057292 2
+ 149.468750 79.203125 2
+ 148.187500 79.557292 0
+ 145.937500 80.494792 0
+ 146.625000 80.557292 2
+ 148.640625 79.968750 0
+ 149.968750 79.890625 2
+ 150.437500 80.187500 0
+ 150.859375 80.812500 0
+ 150.875000 80.234375 2
+ END$SEGS
+DRAW 1091 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 11626343 0.000000 4 0
+ 92.290364 14.635117 2
+ 92.058278 14.320525 2
+ 93.718038 13.176766 2
+ 93.963058 13.482591 2
+ END$SEGS
+DRAW 1092 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 7 0
+ 132.397321 39.858333 0
+ 131.522321 42.858333 0
+ 130.272321 44.108333 0
+ 127.772321 45.608333 0
+ 128.147321 40.608333 2
+ 130.022321 38.358333 0
+ 132.296875 33.177083 0
+ END$SEGS
+STRUCTURE 1093 6 0 0 0 N 2 128.541845 49.070298 0 91.722890 "Laser art stoney brook bridge 874"
+ D 0.000000 0.000000
+ F4 11626343 0.000000 4 0
+ 0.000000 1.500000 0
+ 5.250000 1.500000 0
+ 5.250000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+STRAIGHT 1094 0 0 0 0 N 2 0.000000 0.000000
+ T4 1141 129.076460 39.558389 180.988107 9 0.000000 0.000000 17.185540 17.185540 1 1 0 17.285586
+ T4 1095 129.175119 45.278621 0.988107 9 0.000000 0.000000 17.385632 17.385632 1 1 0 17.285586
+ END$SEGS
+CORNU 1095 0 0 0 0 N 2 134.194444 64.347222 40.262802 16.328382 146.654438 53.794279 129.175119 45.278621 180.988107 0.000000 0.000000 6.000000
+ T4 605 134.194444 64.347222 40.262802 0 0.0 0.0 0.0 0.0 0 0 0 17.750718
+ T4 1094 129.175119 45.278621 180.988107 9 0.000000 0.000000 17.385632 17.385632 1 1 0 17.750718
+ W3 0 0.000000 134.194444 64.347222 133.109415 63.066115 132.225729 61.619352 131.536242 60.088623
+ SUBSEGS
+ C 0 0.000000 -18.048516 148.027194 52.753950 293.978040 15.988441
+ SUBSEND
+ W3 0 0.000000 131.536242 60.088623 130.846755 58.557894 130.350460 56.943759 130.004237 55.301002
+ SUBSEGS
+ C 0 0.000000 -23.394567 152.922873 50.606125 281.576865 12.334886
+ SUBSEND
+ W3 0 0.000000 130.004237 55.301002 129.311790 52.015487 129.233022 48.635813 129.175119 45.278621
+ SUBSEGS
+ C 0 0.000000 -35.888775 165.175742 48.161717 273.442447 8.031836
+ C 0 0.000000 -100.147976 229.318218 44.290326 270.565424 2.884411
+ SUBSEND
+ END$SEGS
+DRAW 1096 6 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 164.500000 91.000000 0.000000 0 18.000000 "DUKE POWER"
+ END$SEGS
+DRAW 1097 6 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 171.000000 91.250000 0.000000 0 18.000000 "POWER DISTRIBUTION"
+ END$SEGS
+DRAW 1098 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 13684944 0.000000 23 0
+ 25.848684 14.500000 2
+ 27.281250 19.343750 1
+ 27.406250 24.468750 0
+ 32.218750 24.420139 0
+ 32.218750 25.638889 0
+ 34.625000 25.607639 0
+ 34.625000 23.170139 0
+ 37.125000 23.107639 0
+ 37.187500 34.045139 0
+ 34.687500 34.107639 0
+ 34.687500 35.795139 0
+ 32.343750 35.826389 0
+ 32.281250 38.163194 0
+ 40.593750 37.982639 0
+ 40.375000 20.618056 2
+ 37.125000 20.430556 0
+ 35.031250 20.343750 0
+ 34.906250 16.343750 0
+ 29.906250 16.218750 0
+ 28.656250 15.343750 1
+ 27.348684 13.000000 2
+ 24.161184 9.562500 0
+ 21.848684 9.625000 0
+ END$SEGS
+DRAW 1099 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 6573132 0.000000 57 0
+ 0.125000 47.312500 0
+ 1.500000 46.687500 0
+ 3.187500 45.062500 2
+ 4.687500 44.625000 0
+ 4.312500 41.875000 0
+ 4.250000 38.937500 0
+ 4.625000 35.687500 2
+ 7.437500 32.437500 0
+ 4.125000 32.250000 0
+ 3.125000 32.500000 0
+ 0.937500 33.937500 0
+ 3.187500 31.937500 0
+ 3.750000 31.062500 0
+ 5.250000 31.312500 0
+ 8.000000 30.562500 0
+ 8.750000 29.937500 0
+ 9.937500 28.687500 0
+ 13.000000 27.312500 0
+ 15.000000 25.937500 0
+ 18.750000 24.375000 0
+ 15.750000 24.000000 0
+ 13.937500 25.000000 0
+ 15.937500 22.312500 0
+ 16.437500 18.625000 0
+ 15.437500 21.250000 0
+ 13.312500 21.750000 0
+ 12.000000 22.562500 0
+ 10.687500 23.812500 0
+ 9.187500 24.187500 0
+ 7.812500 25.500000 0
+ 7.000000 26.187500 0
+ 5.875000 27.000000 0
+ 8.187500 24.625000 0
+ 8.187500 24.625000 0
+ 9.625000 23.250000 0
+ 9.625000 23.250000 0
+ 9.625000 23.250000 0
+ 10.625000 22.250000 0
+ 10.750000 20.562500 0
+ 15.375000 17.500000 2
+ 13.062500 17.187500 0
+ 12.500000 15.750000 0
+ 10.625000 17.875000 0
+ 8.812500 19.625000 0
+ 10.062500 17.125000 0
+ 9.375000 15.875000 0
+ 8.062500 17.250000 0
+ 7.187500 19.000000 0
+ 5.750000 19.562500 0
+ 5.125000 21.437500 0
+ 2.500000 24.187500 0
+ 4.187500 21.937500 0
+ 4.500000 20.500000 0
+ 6.437500 18.562500 0
+ 6.625000 17.187500 0
+ 6.250000 15.875000 0
+ 0.125000 16.625000 0
+ END$SEGS
+CURVE 1100 1 0 0 0 N 2 22.415377 40.252302 0 19.000000 4 0.000000 0.000000
+ T4 467 41.293305 42.402615 353.501664 9 0.000000 0.000000 2.148934 2.148934 1 1 0 2.148934
+ T4 244 3.441348 39.259211 357.003902 10 0.000000 0.000000 0.0 0.0 1 2 0 2.148934
+ END$SEGS
+STRUCTURE 1101 7 0 0 0 N 2 1.198864 26.989583 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1102 7 0 0 0 N 2 15.261364 27.927083 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1103 7 0 0 0 N 2 3.448864 38.864583 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1104 7 0 0 0 N 2 20.323864 19.114583 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1105 7 0 0 0 N 2 3.250000 43.177083 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1106 7 0 0 0 N 2 4.187500 45.489583 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1107 7 0 0 0 N 2 2.687500 49.739583 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+STRUCTURE 1108 7 0 0 0 N 2 1.136364 27.614583 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1109 7 0 0 0 N 2 4.573864 25.927083 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1110 7 0 0 0 N 2 1.073864 31.552083 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1111 7 0 0 0 N 2 10.323864 26.489583 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1112 7 0 0 0 N 2 12.323864 27.552083 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1113 7 0 0 0 N 2 7.323864 33.427083 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1114 7 0 0 0 N 2 5.261364 30.239583 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1115 7 0 0 0 N 2 7.823864 28.677083 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1116 7 0 0 0 N 2 17.198864 25.364583 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1117 7 0 0 0 N 2 0.823864 41.114583 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 1118 7 0 0 0 N 2 -0.051136 36.177083 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1119 7 0 0 0 N 2 3.448864 35.614583 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1120 7 0 0 0 N 2 10.011364 27.489583 0 0.000000 " 5"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.500000 2.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.514880 3.048215 4.433333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.433562 3.913385 4.058010 0 298.767649 215.737855
+ A3 2263842 0.000000 0.428345 4.384758 3.319875 0 324.057888 227.354676
+ A3 2263842 0.000000 0.616908 4.287665 2.283218 0 1.145763 180.804790
+ A3 2263842 0.000000 0.578692 3.959532 1.258235 0 40.236358 182.520220
+ A3 2263842 0.000000 0.583217 2.981513 0.611220 0 71.113913 194.504907
+ A3 2263842 0.000000 0.705998 1.776358 0.897580 0 117.950969 168.710472
+ A3 2263842 0.000000 0.538760 0.801150 1.548275 0 146.309932 187.890372
+ A3 2263842 0.000000 0.527253 0.524620 2.558908 0 175.426079 200.202923
+ A3 2263842 0.000000 0.637937 1.020533 3.597465 0 213.690068 179.169641
+ A3 2263842 0.000000 0.334523 1.585317 4.386507 0 220.815084 209.352786
+ A3 2263842 0.000000 0.372677 2.233332 4.666667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.149070 2.500000 2.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1121 7 0 0 0 N 2 1.198864 25.864583 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1122 7 0 0 0 N 2 3.386364 23.614583 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1123 7 0 0 0 N 2 7.573864 23.489583 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1124 7 0 0 0 N 2 11.823864 22.927083 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1125 7 0 0 0 N 2 7.698864 19.114583 0 0.000000 " 6"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.126492 3.000000 3.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 3.159999 2.840001 0 5.000001 0.840000 0
+ L3 2263842 0.000000 3.080001 3.080001 0 5.559999 4.520001 0
+ L3 2263842 0.000000 2.960001 3.159999 0 1.920000 5.799999 0
+ L3 2263842 0.000000 2.880000 3.039999 0 0.080001 3.399999 0
+ L3 2263842 0.000000 2.880000 2.919999 0 0.759999 1.080000 0
+ L3 2263842 0.000000 3.000000 2.880000 0 2.799999 0.039999 0
+ L3 2263842 0.000000 3.039999 3.159999 0 4.040001 5.799999 0
+ L3 2263842 0.000000 3.480000 2.960001 0 5.880000 2.520000 0
+ L3 2263842 0.000000 3.360000 1.920000 0 3.999999 0.279999 0
+ L3 2263842 0.000000 2.319999 1.760001 0 1.400001 0.560001 0
+ L3 2263842 0.000000 1.839999 2.720001 0 0.080001 2.319999 0
+ L3 2263842 0.000000 2.079999 3.560001 0 0.680001 4.839999 0
+ L3 2263842 0.000000 3.000000 5.960001 0 2.960001 4.239999 0
+ L3 2263842 0.000000 5.000001 5.240001 0 3.720000 3.920001 0
+ L3 2263842 0.000000 4.239999 3.240000 0 5.919999 3.480000 0
+ L3 2263842 0.000000 5.559999 1.520001 0 4.040001 2.319999 0
+ L3 2263842 0.000000 4.800000 2.280000 0 5.720001 2.040000 0
+ L3 2263842 0.000000 5.079999 2.880000 0 5.919999 2.919999 0
+ L3 2263842 0.000000 5.840001 4.040001 0 4.920000 3.720000 0
+ L3 2263842 0.000000 5.240001 4.959999 0 4.520001 4.280001 0
+ L3 2263842 0.000000 3.440001 5.919999 0 3.240000 4.959999 0
+ L3 2263842 0.000000 1.200000 5.360001 0 1.880001 4.520001 0
+ L3 2263842 0.000000 0.320001 4.200000 0 1.359999 3.680001 0
+ L3 2263842 0.000000 0.320001 1.680000 0 1.719999 2.360001 0
+ L3 2263842 0.000000 2.600001 1.560000 0 2.079999 0.200001 0
+ END$SEGS
+STRUCTURE 1126 7 0 0 0 N 2 0.323864 22.302083 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1127 7 0 0 0 N 2 13.511364 20.552083 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1128 7 0 0 0 N 2 20.636364 24.239583 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 1129 7 0 0 0 N 2 2.323864 19.114583 0 0.000000 " 6"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.126492 3.000000 3.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 3.159999 2.840001 0 5.000001 0.840000 0
+ L3 2263842 0.000000 3.080001 3.080001 0 5.559999 4.520001 0
+ L3 2263842 0.000000 2.960001 3.159999 0 1.920000 5.799999 0
+ L3 2263842 0.000000 2.880000 3.039999 0 0.080001 3.399999 0
+ L3 2263842 0.000000 2.880000 2.919999 0 0.759999 1.080000 0
+ L3 2263842 0.000000 3.000000 2.880000 0 2.799999 0.039999 0
+ L3 2263842 0.000000 3.039999 3.159999 0 4.040001 5.799999 0
+ L3 2263842 0.000000 3.480000 2.960001 0 5.880000 2.520000 0
+ L3 2263842 0.000000 3.360000 1.920000 0 3.999999 0.279999 0
+ L3 2263842 0.000000 2.319999 1.760001 0 1.400001 0.560001 0
+ L3 2263842 0.000000 1.839999 2.720001 0 0.080001 2.319999 0
+ L3 2263842 0.000000 2.079999 3.560001 0 0.680001 4.839999 0
+ L3 2263842 0.000000 3.000000 5.960001 0 2.960001 4.239999 0
+ L3 2263842 0.000000 5.000001 5.240001 0 3.720000 3.920001 0
+ L3 2263842 0.000000 4.239999 3.240000 0 5.919999 3.480000 0
+ L3 2263842 0.000000 5.559999 1.520001 0 4.040001 2.319999 0
+ L3 2263842 0.000000 4.800000 2.280000 0 5.720001 2.040000 0
+ L3 2263842 0.000000 5.079999 2.880000 0 5.919999 2.919999 0
+ L3 2263842 0.000000 5.840001 4.040001 0 4.920000 3.720000 0
+ L3 2263842 0.000000 5.240001 4.959999 0 4.520001 4.280001 0
+ L3 2263842 0.000000 3.440001 5.919999 0 3.240000 4.959999 0
+ L3 2263842 0.000000 1.200000 5.360001 0 1.880001 4.520001 0
+ L3 2263842 0.000000 0.320001 4.200000 0 1.359999 3.680001 0
+ L3 2263842 0.000000 0.320001 1.680000 0 1.719999 2.360001 0
+ L3 2263842 0.000000 2.600001 1.560000 0 2.079999 0.200001 0
+ END$SEGS
+STRUCTURE 1130 7 0 0 0 N 2 16.573864 20.239583 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1131 7 0 0 0 N 2 22.761364 22.677083 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1132 7 0 0 0 N 2 20.948864 21.427083 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1133 7 0 0 0 N 2 15.511364 17.427083 0 0.000000 " 5"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.500000 2.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.514880 3.048215 4.433333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.433562 3.913385 4.058010 0 298.767649 215.737855
+ A3 2263842 0.000000 0.428345 4.384758 3.319875 0 324.057888 227.354676
+ A3 2263842 0.000000 0.616908 4.287665 2.283218 0 1.145763 180.804790
+ A3 2263842 0.000000 0.578692 3.959532 1.258235 0 40.236358 182.520220
+ A3 2263842 0.000000 0.583217 2.981513 0.611220 0 71.113913 194.504907
+ A3 2263842 0.000000 0.705998 1.776358 0.897580 0 117.950969 168.710472
+ A3 2263842 0.000000 0.538760 0.801150 1.548275 0 146.309932 187.890372
+ A3 2263842 0.000000 0.527253 0.524620 2.558908 0 175.426079 200.202923
+ A3 2263842 0.000000 0.637937 1.020533 3.597465 0 213.690068 179.169641
+ A3 2263842 0.000000 0.334523 1.585317 4.386507 0 220.815084 209.352786
+ A3 2263842 0.000000 0.372677 2.233332 4.666667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.149070 2.500000 2.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1134 7 0 0 0 N 2 12.886364 18.114583 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1135 7 0 0 0 N 2 5.886364 17.364583 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1136 7 0 0 0 N 2 0.823864 18.864583 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1137 7 0 0 0 N 2 -0.687500 44.052083 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 1138 7 0 0 0 N 2 1.250000 48.114583 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1139 7 0 0 0 N 2 -0.125000 49.552083 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1140 7 0 0 0 N 2 0.312500 52.302083 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+TURNOUT 1141 0 0 0 0 N 2 129.076460 39.558389 0 90.988107 "Peco-80 Large Right SL-1736/388"
+ T4 1094 129.076460 39.558389 0.988107 9 0.000000 0.000000 17.185540 17.185540 1 1 0 17.083238
+ T4 821 128.967831 33.260112 180.988107 0 0.0 0.0 0.0 0.0 0 0 0 17.083238
+ T4 989 128.445909 33.269114 188.988107 0 0.0 0.0 0.0 0.0 0 0 0 17.083238
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 31.901195 0.354173 -31.901195 0.000076 8.000152
+ S 0 0.000000 4.794168 -0.310471 6.299213 -0.522000
+ END$SEGS
+DRAW 1142 5 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 160.213388 79.048117 355.377807 0 18.000000 "STOCKYARD"
+ END$SEGS
+DRAW 1143 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 57.098214 12.562500 0.000000 1 400.000000 "UPPER\n"
+ END$SEGS
+DRAW 1144 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 139.098214 12.312500 0.000000 1 400.000000 "LEVEL"
+ END$SEGS
+STRUCTURE 1145 7 0 0 0 N 2 130.343750 22.875000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1146 7 0 0 0 N 2 129.718750 18.500000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1147 7 0 0 0 N 2 184.535714 96.000000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1148 7 0 0 0 N 2 180.035714 95.625000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1149 7 0 0 0 N 2 180.910714 94.500000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1150 7 0 0 0 N 2 186.785714 95.375000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1151 7 0 0 0 N 2 189.035714 94.125000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1152 7 0 0 0 N 2 198.785714 93.125000 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1153 7 0 0 0 N 2 202.660714 86.375000 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1154 7 0 0 0 N 2 211.785714 89.625000 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1155 7 0 0 0 N 2 206.535714 94.000000 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1156 7 0 0 0 N 2 211.285714 75.125000 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1157 7 0 0 0 N 2 205.410714 66.250000 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 1158 7 0 0 0 N 2 210.285714 66.750000 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 1159 7 0 0 0 N 2 197.910714 64.125000 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 1160 7 0 0 0 N 2 196.160714 63.625000 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 1161 7 0 0 0 N 2 209.535714 74.250000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1162 7 0 0 0 N 2 212.160714 73.000000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1163 7 0 0 0 N 2 211.035714 89.125000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1164 7 0 0 0 N 2 203.785714 71.125000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1165 7 0 0 0 N 2 202.035714 69.125000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1166 7 0 0 0 N 2 192.785714 67.500000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1167 7 0 0 0 N 2 194.785714 69.875000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1168 7 0 0 0 N 2 186.535714 70.250000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1169 7 0 0 0 N 2 182.785714 74.500000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1170 7 0 0 0 N 2 185.785714 74.500000 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1171 7 0 0 0 N 2 179.785714 75.125000 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1172 7 0 0 0 N 2 194.285714 79.125000 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1173 7 0 0 0 N 2 212.785714 61.500000 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1174 7 0 0 0 N 2 212.035714 59.250000 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1175 7 0 0 0 N 2 204.160714 54.875000 0 0.000000 " 5"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.105410 2.500000 2.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.633333 2.366668 0 4.166667 0.700000 0
+ L3 2263842 0.000000 2.566667 2.566667 0 4.633332 3.766668 0
+ L3 2263842 0.000000 2.466667 2.633333 0 1.600000 4.833333 0
+ L3 2263842 0.000000 2.400000 2.533333 0 0.066668 2.833333 0
+ L3 2263842 0.000000 2.400000 2.433333 0 0.633332 0.900000 0
+ L3 2263842 0.000000 2.500000 2.400000 0 2.333333 0.033333 0
+ L3 2263842 0.000000 2.533333 2.633333 0 3.366668 4.833333 0
+ L3 2263842 0.000000 2.900000 2.466667 0 4.900000 2.100000 0
+ L3 2263842 0.000000 2.800000 1.600000 0 3.333333 0.233332 0
+ L3 2263842 0.000000 1.933333 1.466668 0 1.166667 0.466668 0
+ L3 2263842 0.000000 1.533332 2.266668 0 0.066668 1.933333 0
+ L3 2263842 0.000000 1.733332 2.966667 0 0.566667 4.033333 0
+ L3 2263842 0.000000 2.500000 4.966667 0 2.466667 3.533332 0
+ L3 2263842 0.000000 4.166667 4.366668 0 3.100000 3.266668 0
+ L3 2263842 0.000000 3.533332 2.700000 0 4.933332 2.900000 0
+ L3 2263842 0.000000 4.633332 1.266668 0 3.366668 1.933333 0
+ L3 2263842 0.000000 4.000000 1.900000 0 4.766667 1.700000 0
+ L3 2263842 0.000000 4.233332 2.400000 0 4.933332 2.433333 0
+ L3 2263842 0.000000 4.866668 3.366668 0 4.100000 3.100000 0
+ L3 2263842 0.000000 4.366668 4.133332 0 3.766668 3.566667 0
+ L3 2263842 0.000000 2.866668 4.933332 0 2.700000 4.133332 0
+ L3 2263842 0.000000 1.000000 4.466667 0 1.566667 3.766668 0
+ L3 2263842 0.000000 0.266668 3.500000 0 1.133332 3.066667 0
+ L3 2263842 0.000000 0.266668 1.400000 0 1.433332 1.966668 0
+ L3 2263842 0.000000 2.166667 1.300000 0 1.733332 0.166668 0
+ END$SEGS
+STRUCTURE 1176 7 0 0 0 N 2 200.035714 56.250000 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 1177 7 0 0 0 N 2 203.285714 61.875000 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 1178 7 0 0 0 N 2 209.660714 57.125000 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 1179 7 0 0 0 N 2 209.660714 64.500000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1180 7 0 0 0 N 2 208.910714 52.625000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1181 7 0 0 0 N 2 204.660714 93.250000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1182 7 0 0 0 N 2 199.535714 86.125000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1183 7 0 0 0 N 2 195.785714 88.375000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1184 7 0 0 0 N 2 191.285714 80.875000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1185 7 0 0 0 N 2 192.285714 82.375000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1186 7 0 0 0 N 2 178.535714 80.125000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1187 7 0 0 0 N 2 181.785714 82.500000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1188 7 0 0 0 N 2 178.410714 81.500000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1189 7 0 0 0 N 2 190.535714 83.375000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1190 7 0 0 0 N 2 185.410714 79.000000 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1191 7 0 0 0 N 2 195.285714 88.000000 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1192 7 0 0 0 N 2 185.785714 94.625000 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1193 7 0 0 0 N 2 201.785714 68.500000 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1194 7 0 0 0 N 2 194.410714 63.250000 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1195 7 0 0 0 N 2 197.410714 55.250000 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1196 7 0 0 0 N 2 203.035714 59.250000 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1197 7 0 0 0 N 2 206.785714 48.000000 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1198 7 0 0 0 N 2 211.785714 46.500000 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1199 7 0 0 0 N 2 212.535714 55.625000 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1200 7 0 0 0 N 2 207.785714 71.375000 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1201 7 0 0 0 N 2 196.160714 89.875000 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1202 7 0 0 0 N 2 202.785714 93.875000 0 0.000000 " 5"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.500000 2.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.514880 3.048215 4.433333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.433562 3.913385 4.058010 0 298.767649 215.737855
+ A3 2263842 0.000000 0.428345 4.384758 3.319875 0 324.057888 227.354676
+ A3 2263842 0.000000 0.616908 4.287665 2.283218 0 1.145763 180.804790
+ A3 2263842 0.000000 0.578692 3.959532 1.258235 0 40.236358 182.520220
+ A3 2263842 0.000000 0.583217 2.981513 0.611220 0 71.113913 194.504907
+ A3 2263842 0.000000 0.705998 1.776358 0.897580 0 117.950969 168.710472
+ A3 2263842 0.000000 0.538760 0.801150 1.548275 0 146.309932 187.890372
+ A3 2263842 0.000000 0.527253 0.524620 2.558908 0 175.426079 200.202923
+ A3 2263842 0.000000 0.637937 1.020533 3.597465 0 213.690068 179.169641
+ A3 2263842 0.000000 0.334523 1.585317 4.386507 0 220.815084 209.352786
+ A3 2263842 0.000000 0.372677 2.233332 4.666667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.149070 2.500000 2.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1203 7 0 0 0 N 2 183.535714 77.625000 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1204 7 0 0 0 N 2 175.535714 54.750000 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1205 7 0 0 0 N 2 178.160714 56.250000 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1206 7 0 0 0 N 2 174.785714 73.625000 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1207 7 0 0 0 N 2 176.410714 72.250000 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1208 7 0 0 0 N 2 169.535714 72.000000 0 0.000000 " 4"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.000000 2.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.411904 2.438572 3.546666 0 270.000000 215.637778
+ A3 2263842 0.000000 0.346850 3.130708 3.246408 0 298.767649 215.737855
+ A3 2263842 0.000000 0.342676 3.507806 2.655900 0 324.057888 227.354676
+ A3 2263842 0.000000 0.493526 3.430132 1.826574 0 1.145763 180.804790
+ A3 2263842 0.000000 0.462954 3.167626 1.006588 0 40.236358 182.520220
+ A3 2263842 0.000000 0.466574 2.385210 0.488976 0 71.113913 194.504907
+ A3 2263842 0.000000 0.564798 1.421086 0.718064 0 117.950969 168.710472
+ A3 2263842 0.000000 0.431008 0.640920 1.238620 0 146.309932 187.890372
+ A3 2263842 0.000000 0.421802 0.419696 2.047126 0 175.426079 200.202923
+ A3 2263842 0.000000 0.510350 0.816426 2.877972 0 213.690068 179.169641
+ A3 2263842 0.000000 0.267618 1.268254 3.509206 0 220.815084 209.352786
+ A3 2263842 0.000000 0.298142 1.786666 3.733334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.119256 2.000000 2.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1209 7 0 0 0 N 2 172.785714 71.250000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1210 7 0 0 0 N 2 190.535714 71.750000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1211 7 0 0 0 N 2 192.785714 76.875000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1212 7 0 0 0 N 2 196.660714 78.000000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1213 7 0 0 0 N 2 198.035714 71.375000 0 0.000000 " 5"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 2.500000 2.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.514880 3.048215 4.433333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.433562 3.913385 4.058010 0 298.767649 215.737855
+ A3 2263842 0.000000 0.428345 4.384758 3.319875 0 324.057888 227.354676
+ A3 2263842 0.000000 0.616908 4.287665 2.283218 0 1.145763 180.804790
+ A3 2263842 0.000000 0.578692 3.959532 1.258235 0 40.236358 182.520220
+ A3 2263842 0.000000 0.583217 2.981513 0.611220 0 71.113913 194.504907
+ A3 2263842 0.000000 0.705998 1.776358 0.897580 0 117.950969 168.710472
+ A3 2263842 0.000000 0.538760 0.801150 1.548275 0 146.309932 187.890372
+ A3 2263842 0.000000 0.527253 0.524620 2.558908 0 175.426079 200.202923
+ A3 2263842 0.000000 0.637937 1.020533 3.597465 0 213.690068 179.169641
+ A3 2263842 0.000000 0.334523 1.585317 4.386507 0 220.815084 209.352786
+ A3 2263842 0.000000 0.372677 2.233332 4.666667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.149070 2.500000 2.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1214 7 0 0 0 N 2 176.660714 57.625000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+DRAW 1215 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 8421504 0.000000 54 0
+ 113.980181 82.223547 0
+ 115.792681 82.286047 0
+ 115.167681 81.786047 0
+ 109.828873 81.801261 2
+ 103.891373 81.988761 2
+ 98.828873 82.738761 2
+ 93.453873 84.113761 2
+ 88.980181 84.723547 0
+ 86.294540 85.328116 0
+ 86.135417 84.770833 0
+ 89.569361 83.440674 2
+ 92.544326 81.859244 2
+ 97.087568 77.695597 2
+ 99.170800 73.484974 2
+ 99.953873 71.113761 2
+ 100.250502 67.411271 2
+ 100.061522 64.691009 0
+ 99.271307 60.788651 2
+ 92.646307 42.866776 0
+ 91.521307 39.679276 0
+ 90.685761 37.217457 2
+ 90.078125 33.109375 2
+ 90.723684 28.252193 2
+ 91.203125 27.057292 0
+ 91.703125 26.557292 0
+ 94.515625 25.182292 0
+ 94.890625 24.869792 0
+ 94.573191 24.120614 0
+ 95.698191 22.995614 0
+ 95.510691 22.683114 0
+ 94.510691 23.808114 0
+ 93.859375 24.154057 0
+ 91.203125 25.557292 2
+ 91.015625 26.216557 0
+ 90.828125 26.869792 0
+ 90.328125 28.494792 2
+ 89.953125 31.994792 0
+ 90.015625 34.182292 0
+ 90.328125 37.182292 2
+ 91.443182 40.273026 0
+ 98.849432 60.387610 2
+ 99.890625 64.713542 2
+ 100.015625 68.203125 2
+ 99.640625 70.901042 2
+ 98.828125 73.510417 2
+ 96.953125 77.322917 2
+ 92.828125 81.322917 2
+ 89.500000 83.265625 2
+ 85.828125 84.635417 0
+ 86.104167 85.552083 0
+ 93.375000 84.390625 2
+ 99.000000 83.078125 2
+ 103.875000 82.328125 2
+ 110.141373 82.113761 2
+ END$SEGS
+DRAW 1216 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 8421504 0.000000 61 0
+ 32.609375 71.713542 0
+ 33.484375 72.151042 0
+ 37.170305 73.074899 0
+ 67.238438 80.546651 0
+ 72.641373 81.551261 2
+ 76.516373 81.988761 2
+ 79.203873 81.863761 0
+ 81.953873 81.676261 2
+ 84.453873 81.238761 2
+ 86.502383 80.536947 0
+ 88.995733 79.525487 2
+ 90.179594 78.724208 0
+ 92.453125 77.015625 2
+ 95.765625 72.765625 2
+ 97.140625 66.140625 2
+ 95.457507 60.457077 0
+ 88.584563 41.443661 0
+ 87.462346 37.078727 0
+ 86.652791 33.153508 0
+ 85.859375 29.588542 2
+ 85.843750 25.812500 2
+ 86.281250 23.437500 2
+ 87.218750 20.937500 0
+ 88.937500 16.937500 2
+ 90.948661 14.128125 0
+ 91.401786 13.852083 0
+ 91.401786 13.852083 0
+ 91.401786 13.852083 0
+ 95.683036 11.477083 0
+ 96.468750 10.378015 0
+ 98.968750 9.072917 0
+ 98.968750 9.072917 0
+ 98.968750 9.072917 0
+ 98.558036 8.602083 0
+ 97.323661 9.253125 0
+ 90.698661 12.690625 0
+ 89.937500 14.312500 0
+ 88.718750 16.640625 0
+ 87.562500 19.062500 0
+ 85.921875 23.151042 0
+ 85.421875 26.338542 0
+ 85.468750 29.505208 2
+ 86.046875 32.213542 0
+ 87.093750 37.223958 0
+ 88.255682 41.127193 0
+ 89.130682 43.752193 0
+ 95.279934 60.518860 0
+ 96.713816 65.393640 2
+ 95.890625 72.015625 2
+ 92.401316 76.664474 2
+ 90.057566 78.581140 0
+ 88.901316 79.362390 2
+ 86.432566 80.362390 0
+ 84.526316 80.914474 2
+ 81.463816 81.414474 2
+ 78.963816 81.601974 2
+ 76.401316 81.664474 2
+ 72.578873 81.238761 2
+ 67.276316 80.362390 0
+ 37.212500 72.891667 0
+ 34.171875 72.088542 0
+ END$SEGS
+DRAW 1217 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 8421504 0.000000 29 0
+ 31.932292 76.807292 0
+ 32.818182 76.515625 0
+ 34.193182 76.328125 0
+ 35.541667 76.526042 0
+ 62.921875 83.307292 0
+ 67.887823 84.620604 0
+ 72.984375 86.182292 2
+ 80.203873 87.363761 2
+ 88.375000 86.718750 2
+ 92.484375 85.932292 0
+ 94.796875 85.432292 2
+ 98.797192 84.449974 0
+ 104.078125 83.380208 2
+ 109.138951 83.265379 0
+ 118.275000 84.093750 0
+ 118.337500 84.343750 0
+ 109.145564 83.453573 0
+ 103.484375 83.723958 2
+ 98.839948 84.633366 0
+ 94.846411 85.613713 2
+ 92.526034 86.115629 0
+ 88.403578 86.904693 2
+ 80.307218 87.658053 2
+ 72.943692 86.366025 2
+ 67.839523 84.802432 0
+ 62.875864 83.489587 0
+ 34.608056 76.500626 0
+ 32.818182 76.828125 0
+ 32.193182 77.203125 0
+ END$SEGS
+DRAW 1218 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 8421504 0.000000 4 0
+ 31.409155 71.111536 0
+ 24.296875 67.177083 0
+ 24.453125 66.927083 0
+ 31.297408 70.724947 0
+ END$SEGS
+DRAW 1219 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 13684944 0.055556 215 0
+ 11.078255 81.095486 2
+ 11.437500 82.387153 0
+ 11.687500 82.546875 2
+ 11.703125 82.739583 0
+ 10.687500 83.512153 0
+ 6.250000 74.583333 0
+ 5.687500 73.645833 2
+ -0.062500 68.083333 0
+ -0.093750 65.156250 0
+ 6.932566 71.432292 0
+ 10.781250 68.906250 0
+ 17.297005 64.782986 2
+ 22.047005 65.376736 1
+ 29.312500 68.359375 0
+ 30.312500 67.796875 0
+ 31.239309 63.788651 2
+ 31.718750 61.656250 2
+ 36.812500 63.854167 0
+ 37.343750 64.093750 2
+ 38.906250 62.781250 2
+ 46.959622 64.635005 0
+ 46.459622 66.635005 0
+ 39.500000 64.135417 1
+ 38.156250 65.072917 0
+ 37.500000 65.385417 2
+ 32.625000 63.791667 0
+ 31.801809 66.913651 0
+ 31.531250 67.984375 0
+ 32.095356 69.408285 0
+ 34.739309 70.288651 2
+ 35.728125 69.178125 0
+ 40.853125 70.428125 1
+ 66.415625 76.803125 0
+ 72.603125 78.678125 2
+ 76.525000 79.428125 2
+ 81.775000 79.865625 2
+ 85.224432 79.703125 2
+ 89.724432 79.203125 0
+ 91.141373 75.676261 1
+ 95.500000 72.140625 2
+ 98.197917 69.052083 2
+ 99.197917 67.052083 0
+ 100.368056 64.163194 2
+ 100.493056 59.288194 2
+ 100.180556 56.350694 0
+ 96.156250 57.225694 0
+ 96.187500 59.500000 0
+ 95.750000 62.875000 2
+ 94.937500 64.625000 0
+ 91.625000 65.000000 0
+ 91.250000 62.024306 0
+ 93.812500 61.774306 0
+ 93.709622 60.997396 0
+ 92.381497 61.153646 0
+ 91.975247 58.075521 0
+ 88.897122 58.466146 0
+ 89.022122 59.419271 0
+ 85.240872 59.856771 0
+ 85.506497 61.867188 0
+ 83.756497 62.054688 0
+ 83.475247 60.304688 0
+ 82.006497 60.398438 0
+ 81.600247 58.273438 0
+ 94.687500 51.750000 0
+ 95.437500 54.000000 0
+ 95.843750 55.663194 0
+ 100.187500 54.750000 0
+ 99.562500 50.906250 0
+ 98.937500 47.718750 0
+ 97.453125 43.703125 0
+ 92.453125 45.515625 0
+ 94.687500 51.812500 0
+ 93.562500 52.312500 0
+ 93.187500 51.562500 0
+ 92.500130 51.354167 0
+ 90.750000 47.944444 0
+ 85.437500 50.600694 0
+ 85.875000 48.600694 0
+ 89.375000 47.000000 0
+ 89.812500 46.500000 2
+ 85.062500 48.593750 0
+ 84.943997 48.981771 0
+ 83.787747 52.231771 0
+ 83.100247 53.669271 0
+ 82.475247 54.544271 0
+ 80.600247 56.200521 0
+ 75.750000 58.531250 2
+ 69.437500 59.593750 1
+ 57.250000 59.986111 2
+ 48.125000 58.486111 0
+ 42.500000 56.736111 0
+ 38.375000 54.343750 2
+ 38.375000 40.531250 1
+ 28.968182 40.516667 0
+ 28.468182 41.391667 0
+ 25.405682 41.329167 0
+ 25.218182 40.516667 0
+ 23.875000 40.420139 0
+ 23.875000 40.420139 2
+ 24.062500 37.607639 0
+ 26.968750 37.795139 0
+ 27.359505 32.401042 0
+ 24.922005 32.276042 0
+ 25.156250 24.420139 0
+ 28.531250 24.482639 0
+ 32.281250 24.420139 0
+ 32.343750 38.076389 0
+ 40.625000 37.868056 0
+ 40.500000 49.305556 2
+ 40.437500 50.493056 0
+ 40.562500 53.343750 2
+ 43.281250 55.125000 0
+ 48.406250 56.625000 1
+ 54.406250 57.750000 1
+ 64.000000 58.152778 1
+ 72.875000 57.652778 2
+ 80.437500 54.805556 2
+ 82.843750 50.631944 2
+ 83.375000 47.027778 0
+ 83.625000 45.277778 1
+ 85.250000 45.093750 0
+ 85.250000 45.093750 0
+ 85.375000 46.718750 2
+ 97.437500 42.131944 2
+ 94.943182 41.345943 0
+ 91.724432 32.554276 0
+ 85.437500 34.718750 2
+ 85.312500 35.281250 2
+ 85.229911 45.203125 0
+ 83.604911 45.328125 0
+ 83.750000 42.277778 0
+ 83.750000 39.027778 1
+ 83.625000 33.652778 0
+ 83.875000 31.343750 0
+ 85.218750 26.559028 2
+ 83.625000 23.902778 0
+ 83.625000 21.656250 0
+ 85.812500 24.843750 0
+ 86.312500 26.843750 0
+ 86.250000 28.093750 0
+ 85.187500 31.531250 0
+ 85.125000 33.218750 0
+ 93.093750 30.309028 2
+ 95.500000 29.614583 2
+ 97.250000 35.864583 0
+ 98.968750 42.020833 1
+ 101.468750 49.184028 2
+ 102.118056 56.350694 2
+ 102.243056 63.350694 2
+ 100.822917 67.802083 1
+ 98.947917 70.552083 2
+ 96.625000 73.015625 1
+ 92.703873 76.238761 0
+ 91.391373 79.176261 0
+ 91.266373 80.676261 0
+ 86.588542 81.484375 1
+ 81.338542 82.046875 2
+ 73.447917 81.302083 1
+ 65.796875 79.482182 2
+ 65.234375 80.416667 0
+ 63.650493 80.057292 0
+ 63.400493 81.088542 0
+ 62.650493 80.932292 0
+ 62.869243 79.776042 0
+ 63.025493 78.807292 2
+ 54.150493 76.713542 0
+ 31.937500 71.104167 0
+ 31.937500 71.104167 0
+ 30.968750 70.885417 2
+ 29.687500 71.322917 2
+ 25.968750 74.375000 2
+ 12.531250 83.918403 1
+ 12.093750 84.105903 2
+ 12.890625 88.458333 1
+ 14.453125 90.833333 0
+ 13.515625 90.895833 0
+ 13.578125 90.770833 0
+ 11.953125 88.708333 1
+ 11.031250 84.543403 0
+ 11.031250 84.543403 0
+ 7.281250 85.512153 2
+ 7.281250 85.512153 0
+ 7.281250 85.512153 2
+ 7.312500 85.762153 2
+ 7.312500 85.762153 0
+ 10.906250 84.855903 0
+ 11.218750 86.256944 0
+ 6.125000 87.418403 0
+ 5.875000 86.012153 0
+ 5.500000 85.887153 2
+ 0.062500 87.012153 0
+ 0.031250 86.012153 0
+ 1.437500 85.699653 0
+ 0.031250 79.762153 0
+ 0.062500 75.512153 0
+ 2.468750 85.449653 0
+ 4.656250 84.881944 2
+ 4.656250 84.444444 0
+ 4.218750 82.506944 0
+ 6.531250 81.944444 0
+ 7.093750 84.006944 0
+ 5.718750 84.381944 0
+ 5.656250 84.756944 2
+ 7.656250 84.256944 0
+ 10.531250 83.015625 2
+ 12.156250 82.546875 0
+ 25.656250 72.828125 2
+ 27.781250 71.291667 0
+ 28.562500 70.578125 0
+ 28.489309 69.726151 0
+ 28.489309 69.726151 0
+ 25.672005 68.376736 2
+ 24.187500 69.347222 0
+ 23.687500 70.222222 2
+ 24.797005 71.720486 0
+ END$SEGS
+DRAW 1220 6 0 0 0 7.208561 -0.757585 0 0.000000
+ F4 7959154 0.000000 4 0
+ 87.369564 74.067070 0
+ 86.369564 75.942070 0
+ 91.432812 75.746346 0
+ 92.182812 73.933846 0
+ END$SEGS
+DRAW 1221 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 13290186 0.000000 52 0
+ 131.218750 90.208333 0
+ 135.281250 90.843750 2
+ 139.792681 90.598547 2
+ 143.906250 88.406250 2
+ 146.531250 87.562500 2
+ 147.843750 87.656250 0
+ 155.229167 87.875000 0
+ 163.750000 89.026042 0
+ 163.375000 91.901042 0
+ 156.125000 91.776042 0
+ 155.979167 89.375000 0
+ 146.906250 88.958333 2
+ 144.656250 89.718750 0
+ 140.104167 92.250000 2
+ 136.718750 92.593750 2
+ 132.812500 92.062500 0
+ 130.171875 91.437500 0
+ 125.968750 90.171875 2
+ 123.980181 87.973547 0
+ 122.792681 86.973547 2
+ 119.167681 85.973547 2
+ 113.417681 85.661047 0
+ 115.042681 87.536047 2
+ 116.531250 93.421875 0
+ 115.281250 94.171875 0
+ 114.156250 90.234375 2
+ 112.781250 86.984375 2
+ 109.093750 85.359375 0
+ 105.224432 85.281250 0
+ 101.974432 85.656250 0
+ 97.349432 86.718750 0
+ 91.036932 88.156250 0
+ 91.036932 88.156250 0
+ 90.974432 86.531250 0
+ 95.286932 85.593750 0
+ 99.224432 84.718750 0
+ 102.036932 84.156250 0
+ 105.531250 83.671875 0
+ 105.281250 80.546875 0
+ 104.406250 78.359375 2
+ 102.891373 77.441886 0
+ 99.885417 76.317708 0
+ 100.635417 75.067708 0
+ 103.656250 76.359375 0
+ 106.031250 77.859375 2
+ 106.843750 80.796875 0
+ 106.968750 83.609375 0
+ 109.480181 83.723547 2
+ 119.167681 84.473547 2
+ 123.542681 85.411047 2
+ 126.355181 88.036047 0
+ 128.031250 89.500000 2
+ END$SEGS
+DRAW 1222 6 0 0 0 -10.780012 14.577458 0 0.000000
+ F4 13684944 0.000000 4 0
+ 94.431633 73.587667 0
+ 95.977707 73.361703 0
+ 94.848377 65.634706 0
+ 93.302306 65.860669 0
+ END$SEGS
+DRAW 1223 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 7959154 0.194444 83.619792 87.401042 0 82.750000 81.187500 0
+ END$SEGS
+DRAW 1224 6 0 0 0 1.423611 2.298611 0 0.000000
+ L3 7959154 0.194444 83.638889 84.888889 0 82.726389 78.718056 0
+ END$SEGS
+TURNOUT 1225 0 0 0 0 N 2 18.728586 70.347099 0 312.831742 "Kato Unitrack Single Track Truss Bridge 9.75 248mm 20-430/1/2/3/4"
+ T4 909 18.728586 70.347099 222.831742 0 0.0 0.0 0.0 0.0 0 0 0 16.524709
+ T4 1285 25.366468 77.507399 42.831742 9 0.000000 0.000000 16.506519 16.506519 1 1 0 16.524709
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 9.763779 0.000000
+ L3 0 0.053333 0.000000 0.473340 0 9.763779 0.473340 0
+ L3 0 0.053333 0.000000 -0.473340 0 9.763779 -0.473340 0
+ L3 0 0.053333 1.220474 -0.473340 0 1.220474 0.473340 0
+ L3 0 0.053333 1.220474 -0.473340 0 2.440948 0.473340 0
+ L3 0 0.053333 2.440948 -0.473340 0 1.220474 0.473340 0
+ L3 0 0.053333 2.440948 -0.473340 0 2.440948 0.473340 0
+ L3 0 0.053333 2.440948 -0.473340 0 3.661422 0.473340 0
+ L3 0 0.053333 3.661422 -0.473340 0 2.440948 0.473340 0
+ L3 0 0.053333 3.661422 -0.473340 0 3.661422 0.473340 0
+ L3 0 0.053333 3.661422 -0.473340 0 4.881896 0.473340 0
+ L3 0 0.053333 4.881896 -0.473340 0 3.661422 0.473340 0
+ L3 0 0.053333 4.881896 -0.473340 0 4.881896 0.473340 0
+ L3 0 0.053333 4.881896 -0.473340 0 6.102370 0.473340 0
+ L3 0 0.053333 6.102370 -0.473340 0 4.881896 0.473340 0
+ L3 0 0.053333 6.102370 -0.473340 0 6.102370 0.473340 0
+ L3 0 0.053333 6.102370 -0.473340 0 7.322844 0.473340 0
+ L3 0 0.053333 7.322844 -0.473340 0 6.102370 0.473340 0
+ L3 0 0.053333 7.322844 -0.473340 0 7.322844 0.473340 0
+ L3 0 0.053333 7.322844 -0.473340 0 8.543318 0.473340 0
+ L3 0 0.053333 8.543318 -0.473340 0 7.322844 0.473340 0
+ L3 0 0.053333 8.543318 -0.473340 0 8.543318 0.473340 0
+ END$SEGS
+CORNU 1226 0 0 0 0 N 2 32.171875 50.352431 8.612155 102.166631 133.186540 35.053477 31.760258 42.776428 180.602603 0.000000 0.000000 7.625000
+ T4 239 32.171875 50.352431 8.612155 0 0.0 0.0 0.0 0.0 0 0 0 16.179525
+ T4 1521 31.760258 42.776428 180.602603 0 0.0 0.0 0.0 0.0 0 0 0 16.179525
+ W3 0 0.000000 32.171875 50.352431 31.982290 49.100655 31.852094 47.839504 31.809364 46.574174
+ SUBSEGS
+ C 0 0.000000 -32.590018 64.376605 45.355973 272.142191 6.676751
+ SUBSEND
+ W3 0 0.000000 31.809364 46.574174 31.766633 45.308844 31.773573 44.042409 31.760258 42.776428
+ SUBSEGS
+ C 0 0.000000 -163.438494 195.198612 42.562331 270.075055 1.331497
+ SUBSEND
+ END$SEGS
+CORNU 1227 0 0 0 0 N 2 93.359623 23.349656 12.091003 51.635038 143.849197 12.533921 93.150455 15.564649 167.892010 13.639255 106.486291 18.425550
+ T4 1229 93.359623 23.349656 12.091003 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1228 93.150455 15.564649 167.892010 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 93.359623 23.349656 93.085582 22.070388 92.876583 20.773653 92.828020 19.466263
+ SUBSEGS
+ C 0 0.000000 -22.581790 115.382540 18.356828 272.816055 9.957581
+ SUBSEND
+ W3 0 0.000000 92.828020 19.466263 92.779458 18.158873 92.876034 16.843836 93.150455 15.564649
+ SUBSEGS
+ C 0 0.000000 -15.818705 108.633035 18.808281 258.167550 14.216366
+ SUBSEND
+ END$SEGS
+CORNU 1228 0 0 0 0 N 2 93.150455 15.564649 347.892010 13.639255 106.486291 18.425550 101.656250 5.947917 110.378636 17.303197 107.681613 22.168139
+ T4 1227 93.150455 15.564649 347.892010 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1319 101.656250 5.947917 110.378636 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 93.150455 15.564649 93.385083 14.470952 93.754807 13.405847 94.254690 12.405176
+ SUBSEGS
+ C 0 0.000000 -13.336010 106.192330 18.350082 243.526845 14.417275
+ SUBSEND
+ W3 0 0.000000 94.254690 12.405176 94.754574 11.404506 95.385227 10.468949 96.128656 9.633163
+ SUBSEGS
+ C 0 0.000000 -12.744002 105.658103 18.094796 228.396661 15.086893
+ SUBSEND
+ W3 0 0.000000 96.128656 9.633163 96.872085 8.797378 97.728049 8.062600 98.662233 7.447357
+ SUBSEGS
+ C 0 0.000000 -12.854203 105.720754 18.190160 213.306773 14.957454
+ SUBSEND
+ W3 0 0.000000 98.662233 7.447357 99.596417 6.832114 100.607678 6.337432 101.656250 5.947917
+ SUBSEGS
+ C 0 0.000000 -14.816991 106.751714 19.861201 200.114253 12.976021
+ SUBSEND
+ END$SEGS
+CORNU 1229 0 0 0 0 N 2 97.898721 35.225883 25.686179 35.984252 65.470376 50.822958 93.359623 23.349656 192.091003 51.635038 143.849197 12.533921
+ T4 1048 97.898721 35.225883 25.686179 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1227 93.359623 23.349656 192.091003 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 97.898721 35.225883 96.976765 33.309017 95.950453 31.439205 95.167060 29.461662
+ SUBSEGS
+ S 0 0.000000 97.898721 35.225883 96.480929 32.366526
+ C 0 0.000000 -39.718373 131.983662 14.559080 292.037062 4.600347
+ SUBSEND
+ W3 0 0.000000 95.167060 29.461662 94.383667 27.484120 93.805167 25.429528 93.359623 23.349656
+ SUBSEGS
+ C 0 0.000000 -38.426583 130.985525 15.546211 281.716783 9.514333
+ SUBSEND
+ END$SEGS
+CORNU 1230 0 0 0 0 N 2 156.753422 73.705461 92.911605 49.076087 154.260591 24.692727 146.375000 73.104167 259.809256 39.810478 153.418499 33.921731
+ T4 540 156.753422 73.705461 92.911605 0 0.0 0.0 0.0 0.0 0 0 0 13.939059
+ T4 538 146.375000 73.104167 259.809256 0 0.0 0.0 0.0 0.0 0 0 0 13.939059
+ W3 0 0.000000 156.753422 73.705461 153.285163 73.881860 149.792956 73.718584 146.375000 73.104167
+ SUBSEGS
+ C 0 0.000000 -45.610869 154.185154 28.166957 350.140397 13.087535
+ SUBSEND
+ END$SEGS
+STRUCTURE 1231 7 0 0 0 N 2 37.875000 25.250000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1232 7 0 0 0 N 2 35.500000 20.500000 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 1233 7 0 0 0 N 2 35.250000 19.750000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1234 7 0 0 0 N 2 27.750000 20.000000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1235 7 0 0 0 N 2 26.750000 17.500000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1236 5 0 0 0 N 2 23.838183 79.671876 0 215.511855 "Campbell scale models grain elevator 445"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 8 0
+ 0.000000 3.734375 0
+ 0.000000 2.750000 0
+ 2.000000 2.734375 0
+ 2.000000 0.000000 0
+ 4.296875 0.015625 0
+ 4.281250 2.718750 0
+ 6.296875 2.734375 0
+ 6.296875 3.750000 0
+ END$SEGS
+STRUCTURE 1237 5 0 0 0 N 2 11.843548 84.358155 0 34.860294 "Micro trains Grain coop 2 stories (store) 499 90 914"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 6 0
+ 0.031250 3.000000 0
+ 0.000000 0.843750 0
+ 1.953125 0.890625 0
+ 1.953125 0.000000 0
+ 4.453125 0.015625 0
+ 4.453125 3.015625 0
+ END$SEGS
+DRAW 1238 5 0 0 0 18.673624 79.430807 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "GRAIN AND FEED\n STORE"
+ END$SEGS
+DRAW 1239 5 0 0 0 14.188889 84.215625 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "TRACTOR AND \nFARM SUPPLY"
+ END$SEGS
+DRAW 1240 2 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 169.000000 73.250000 0.000000 1 100.000000 "1"
+ END$SEGS
+DRAW 1241 2 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 171.000000 70.750000 0.000000 1 100.000000 "2"
+ END$SEGS
+DRAW 1242 2 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 173.250000 68.500000 0.000000 1 100.000000 "3"
+ END$SEGS
+DRAW 1243 2 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 58.750000 29.750000 0.000000 1 200.000000 "LOWER"
+ END$SEGS
+DRAW 1244 2 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 147.250000 30.875000 0.000000 1 200.000000 "LEVEL"
+ END$SEGS
+DRAW 1245 4 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 0 0.266667 47 2
+ -0.125000 15.750000 0
+ -0.125000 15.750000 0
+ 22.250000 15.500000 2
+ 31.875000 16.500000 2
+ 40.250000 22.375000 2
+ 44.500000 29.000000 2
+ 46.625000 34.500000 2
+ 47.500000 44.500000 2
+ 43.375000 52.875000 0
+ 41.312500 57.979167 2
+ 43.546875 62.218750 2
+ 46.656250 63.750000 0
+ 52.046875 65.093750 2
+ 59.406250 65.625000 0
+ 63.031250 65.750000 0
+ 69.317464 65.349020 0
+ 74.177937 64.591255 2
+ 81.421875 62.218750 2
+ 83.140192 55.990004 0
+ 83.140192 55.990004 0
+ 83.140192 55.990004 0
+ 83.421875 54.093750 2
+ 83.437500 15.885417 0
+ 89.281250 7.020833 2
+ 98.031250 2.145833 0
+ 108.781250 -0.604167 2
+ 122.156250 3.020833 2
+ 130.031250 10.770833 2
+ 132.656250 15.520833 0
+ 132.562500 50.500000 0
+ 132.812500 57.000000 2
+ 137.671875 63.468750 2
+ 145.312500 65.250000 2
+ 154.583333 65.708333 0
+ 161.736040 65.485555 0
+ 166.488933 64.941709 0
+ 169.619064 64.165910 0
+ 171.653553 63.235477 0
+ 172.897101 62.276559 0
+ 173.828840 61.012519 0
+ 174.376859 59.540918 0
+ 174.608879 57.409229 0
+ 172.875000 52.250000 0
+ 169.000000 43.500000 2
+ 170.125000 29.875000 2
+ 182.625000 15.125000 2
+ 216.000000 14.875000 0
+ END$SEGS
+DRAW 1246 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 458752 0.160000 8 2
+ 94.323661 24.565625 0
+ 93.765625 21.840735 0
+ 93.578125 19.840735 0
+ 93.515625 18.278235 0
+ 93.703125 16.465735 0
+ 94.011161 14.940625 2
+ 94.886161 12.565625 2
+ 95.886161 10.815625 0
+ END$SEGS
+DRAW 1247 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 328194 0.160000 9 2
+ 91.636161 25.940625 0
+ 91.140625 23.340735 0
+ 90.890625 21.965735 0
+ 90.765625 20.715735 0
+ 90.703125 19.278235 0
+ 90.828125 17.590735 0
+ 90.953125 16.278235 0
+ 91.265625 14.528235 0
+ 91.828125 12.778235 0
+ END$SEGS
+DRAW 1248 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 328194 0.160000 7 2
+ 92.973877 25.309346 0
+ 92.573661 23.628125 2
+ 92.136161 20.753125 2
+ 92.198661 17.628125 2
+ 92.448661 15.940625 0
+ 92.761161 14.128125 2
+ 93.798954 11.860268 0
+ END$SEGS
+DRAW 1249 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 146.026786 59.625000 0.000000 0 64.000000 "Above \nbase"
+ END$SEGS
+DRAW 1250 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 143.026786 54.000000 0.000000 0 72.000000 "Below \nbase"
+ END$SEGS
+DRAW 1251 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 656645 0.160000 4 2
+ 145.604366 87.335526 0
+ 146.229366 87.648026 0
+ 148.791866 87.648026 0
+ 149.604366 87.335526 0
+ END$SEGS
+DRAW 1252 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 656645 0.160000 4 2
+ 145.937700 89.476973 0
+ 146.562700 89.164473 0
+ 149.125200 89.164473 0
+ 149.937700 89.476973 0
+ END$SEGS
+DRAW 1253 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 8090740 0.166667 96.031250 64.781250 0 100.281250 63.906250 0
+ END$SEGS
+DRAW 1254 6 0 0 0 -0.201388 1.111111 0 0.000000
+ L3 8090740 0.166667 96.031250 62.281250 0 100.281250 61.406250 0
+ END$SEGS
+DRAW 1255 6 0 0 0 -11.939016 5.965866 0 0.000000
+ L3 8090740 0.166667 104.195615 47.373292 0 108.269176 45.878559 0
+ END$SEGS
+DRAW 1256 6 0 0 0 -12.515405 4.576977 0 0.000000
+ L3 8090740 0.166667 104.195615 47.373292 0 108.269176 45.878559 0
+ END$SEGS
+DRAW 1257 6 0 0 0 -16.140405 -5.839690 0 0.000000
+ L3 8090740 0.166667 104.195615 47.373292 0 107.796655 45.982051 0
+ END$SEGS
+DRAW 1258 6 0 0 0 -16.504988 -7.360524 0 0.000000
+ L3 8090740 0.166667 104.195615 47.373292 0 107.796655 45.982051 0
+ END$SEGS
+DRAW 1259 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 7959154 0.194444 89.671875 86.651042 0 90.734375 84.338542 0
+ END$SEGS
+DRAW 1260 6 0 0 0 1.736112 2.736111 0 0.000000
+ L3 7959154 0.194444 89.873263 83.602431 0 90.873263 81.477431 0
+ END$SEGS
+DRAW 1261 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 7959154 0.160000 105.469686 84.069537 0 105.344878 81.823001 0
+ END$SEGS
+DRAW 1262 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 7959154 0.160000 106.991071 81.756696 0 107.090503 83.694196 0
+ END$SEGS
+DRAW 1263 7 0 0 0 15.002230 -1.716624 0 0.000000
+ F4 11626343 0.000000 4 0
+ 106.645224 59.122888 0
+ 108.629430 59.373747 0
+ 108.692144 58.877696 0
+ 106.707939 58.626836 0
+ END$SEGS
+DRAW 1264 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 525059 0.133333 122.765625 58.531250 0 124.203125 58.781250 0
+ END$SEGS
+DRAW 1265 7 0 0 0 0.000000 0.000000 0 0.000000
+ L3 525059 0.133333 122.890625 57.593750 0 124.328125 57.843750 0
+ END$SEGS
+DRAW 1266 5 0 0 0 104.916667 53.350694 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "THRIFT \nSHOP"
+ END$SEGS
+STRUCTURE 1267 7 0 0 0 N 2 83.718750 28.000000 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1268 7 0 0 0 N 2 82.906250 25.312500 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1269 7 0 0 0 N 2 83.968750 21.500000 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1270 7 0 0 0 N 2 84.343750 18.562500 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1271 7 0 0 0 N 2 87.343750 11.000000 0 0.000000 " 4"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.084328 2.000000 2.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 2.106666 1.893334 0 3.333334 0.560000 0
+ L3 2263842 0.000000 2.053334 2.053334 0 3.706666 3.013334 0
+ L3 2263842 0.000000 1.973334 2.106666 0 1.280000 3.866666 0
+ L3 2263842 0.000000 1.920000 2.026666 0 0.053334 2.266666 0
+ L3 2263842 0.000000 1.920000 1.946666 0 0.506666 0.720000 0
+ L3 2263842 0.000000 2.000000 1.920000 0 1.866666 0.026666 0
+ L3 2263842 0.000000 2.026666 2.106666 0 2.693334 3.866666 0
+ L3 2263842 0.000000 2.320000 1.973334 0 3.920000 1.680000 0
+ L3 2263842 0.000000 2.240000 1.280000 0 2.666666 0.186666 0
+ L3 2263842 0.000000 1.546666 1.173334 0 0.933334 0.373334 0
+ L3 2263842 0.000000 1.226666 1.813334 0 0.053334 1.546666 0
+ L3 2263842 0.000000 1.386666 2.373334 0 0.453334 3.226666 0
+ L3 2263842 0.000000 2.000000 3.973334 0 1.973334 2.826666 0
+ L3 2263842 0.000000 3.333334 3.493334 0 2.480000 2.613334 0
+ L3 2263842 0.000000 2.826666 2.160000 0 3.946666 2.320000 0
+ L3 2263842 0.000000 3.706666 1.013334 0 2.693334 1.546666 0
+ L3 2263842 0.000000 3.200000 1.520000 0 3.813334 1.360000 0
+ L3 2263842 0.000000 3.386666 1.920000 0 3.946666 1.946666 0
+ L3 2263842 0.000000 3.893334 2.693334 0 3.280000 2.480000 0
+ L3 2263842 0.000000 3.493334 3.306666 0 3.013334 2.853334 0
+ L3 2263842 0.000000 2.293334 3.946666 0 2.160000 3.306666 0
+ L3 2263842 0.000000 0.800000 3.573334 0 1.253334 3.013334 0
+ L3 2263842 0.000000 0.213334 2.800000 0 0.906666 2.453334 0
+ L3 2263842 0.000000 0.213334 1.120000 0 1.146666 1.573334 0
+ L3 2263842 0.000000 1.733334 1.040000 0 1.386666 0.133334 0
+ END$SEGS
+STRUCTURE 1272 7 0 0 0 N 2 87.093750 14.375000 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRAIGHT 1273 0 0 0 0 N 2 0.000000 0.000000
+ T4 1274 87.731718 65.449366 295.318537 0 0.0 0.0 0.0 0.0 0 0 0 15.982078
+ E4 94.029643 62.469857 115.318537 0 0.0 0.0 0.0 0.0 0 0 0 15.982078
+ END$SEGS
+CORNU 1274 0 0 0 0 N 2 76.052333 68.049117 271.735504 0.000000 0.000000 2.500000 87.731718 65.449366 115.318537 0.000000 0.000000 0.000000
+ T4 159 76.052333 68.049117 271.735504 0 0.0 0.0 0.0 0.0 0 0 0 15.982078
+ T4 1273 87.731718 65.449366 115.318537 0 0.0 0.0 0.0 0.0 0 0 0 15.982078
+ W3 0 0.000000 76.052333 68.049117 78.066409 67.988091 80.091115 67.912451 82.064233 67.503755
+ SUBSEGS
+ C 0 0.000000 64.649839 74.522162 3.417389 1.356237 2.680842
+ C 0 0.000000 23.738967 77.404593 44.226593 4.031703 7.288189
+ SUBSEND
+ W3 0 0.000000 82.064233 67.503755 83.050792 67.299407 84.020390 67.014898 84.963425 66.660298
+ SUBSEGS
+ C 0 0.000000 19.456069 78.095227 48.456823 11.770870 8.900694
+ SUBSEND
+ W3 0 0.000000 84.963425 66.660298 85.906460 66.305697 86.820994 65.880224 87.731718 65.449366
+ SUBSEGS
+ C 0 0.000000 36.763450 71.626544 32.401301 21.270750 4.710417
+ SUBSEND
+ END$SEGS
+DRAW 1275 2 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 145.146307 57.570724 0.000000 0 90.000000 "19 turnouts includes lower helix, 4 manual?"
+ END$SEGS
+STRUCTURE 1276 5 0 0 0 N 2 5.588340 85.785797 0 283.852677 "Design Preservation Goodnight Mattress Co. 505"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.035719 0.002590 0
+ 3.926344 0.002590 0
+ 3.926344 3.627590 0
+ 0.035719 3.611965 0
+ F4 12474302 0.000000 5 0
+ 2.270094 2.533840 0
+ 3.988844 2.533840 0
+ 6.145094 2.533840 0
+ 6.145094 4.643215 0
+ 2.270094 4.643215 0
+ L3 16766720 0.062500 2.269456 4.643215 0 2.269453 2.544385 0
+ L3 16766720 0.062500 2.254455 2.567575 0 6.129469 2.565090 0
+ G3 3684408 0.000000 0.098821 2.443675 2.410546 0
+ G3 3684408 0.000000 0.098821 2.879465 2.408836 0
+ L3 16766720 0.062500 6.119117 4.658853 0 6.119114 2.523672 0
+ L3 16766720 0.062500 2.218760 4.634113 0 6.145104 4.634113 0
+ L3 16766720 0.062500 3.900367 2.575651 0 3.900363 0.002579 0
+ L3 16766720 0.062500 0.000021 0.031250 0 3.926344 0.033840 0
+ L3 16766720 0.062500 0.048805 3.638142 0 0.048800 0.002588 0
+ L3 16766720 0.062500 0.004469 3.611965 0 2.296910 3.606890 0
+ END$SEGS
+DRAW 1277 5 0 0 0 3.091545 88.073640 0 15.945396
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "HANES HOSIERY"
+ END$SEGS
+DRAW 1278 5 0 0 0 0.000000 0.000000 0 0.000000
+ A3 11744051 0.053333 0.336573 6.021875 97.228015 0 0.000000 360.000000
+ END$SEGS
+DRAW 1279 5 0 0 0 0.000000 0.000000 0 0.000000
+ A3 11744051 0.053333 0.336573 5.214583 97.405099 0 0.000000 360.000000
+ END$SEGS
+DRAW 1280 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 12169906 0.160000 8 2
+ 46.896875 86.811349 0
+ 47.781250 83.322917 0
+ 48.225000 82.920724 2
+ 48.687500 82.885417 0
+ 53.562500 84.010417 0
+ 53.850000 84.201974 2
+ 53.906250 84.541667 0
+ 53.865625 84.889474 0
+ END$SEGS
+DRAW 1281 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 12169906 0.160000 5 2
+ 23.671875 86.052083 0
+ 23.359375 86.145833 2
+ 22.796875 85.395833 0
+ 22.296875 84.645833 2
+ 27.421875 80.802083 0
+ END$SEGS
+DRAW 1282 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 12169906 0.160000 5 2
+ 12.218750 92.421875 0
+ 12.093750 91.796875 2
+ 20.953125 85.364583 2
+ 21.421875 86.020833 2
+ 20.046875 87.020833 0
+ END$SEGS
+DRAW 1283 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 0 0.160000 8 2
+ 25.286932 76.109375 0
+ 25.849432 76.109375 0
+ 28.390625 77.260417 0
+ 28.515625 78.197917 0
+ 21.875000 83.171875 0
+ 12.218750 90.052083 0
+ 11.781250 90.296875 0
+ 11.546875 90.005208 0
+ END$SEGS
+DRAW 1284 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 7959154 0.000000 4 0
+ 24.781000 70.281250 0
+ 25.859125 69.388889 0
+ 29.500000 72.850694 0
+ 28.406250 73.913194 0
+ END$SEGS
+CORNU 1285 0 0 0 0 N 2 44.440397 87.501368 78.571803 0.000000 0.000000 2.500000 25.366468 77.507399 222.831742 0.000000 0.000000 7.625000
+ T4 938 44.440397 87.501368 78.571803 0 0.0 0.0 0.0 0.0 0 0 0 16.792559
+ T4 1225 25.366468 77.507399 222.831742 9 0.000000 0.000000 16.506519 16.506519 1 1 0 16.792559
+ W3 0 0.000000 44.440397 87.501368 42.638904 87.137201 40.835599 86.773457 39.062779 86.288581
+ SUBSEGS
+ C 0 0.000000 -81.676520 59.710154 7.264915 345.357062 3.867858
+ SUBSEND
+ W3 0 0.000000 39.062779 86.288581 37.289959 85.803705 35.547738 85.191836 33.899314 84.379008
+ SUBSEGS
+ C 0 0.000000 -28.869508 46.449207 58.379995 334.233093 10.942613
+ SUBSEND
+ W3 0 0.000000 33.899314 84.379008 32.250889 83.566179 30.704171 82.550086 29.293514 81.371935
+ SUBSEGS
+ C 0 0.000000 -23.219374 44.200795 63.569904 320.057458 13.604976
+ SUBSEND
+ W3 0 0.000000 29.293514 81.371935 27.882856 80.193783 26.615982 78.855253 25.366468 77.507399
+ SUBSEGS
+ C 0 0.000000 -35.764980 52.494275 54.153219 312.932799 6.623503
+ S 0 0.000000 26.308834 78.514181 25.366468 77.507399
+ SUBSEND
+ END$SEGS
+DRAW 1286 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14601163 0.000000 6 0
+ 49.006250 91.451974 0
+ 49.271875 91.139474 2
+ 49.740625 89.733224 0
+ 47.412500 89.264474 0
+ 47.100000 89.686349 2
+ 47.334375 89.936349 0
+ END$SEGS
+DRAW 1287 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 6 0
+ 48.537500 90.608224 0
+ 47.568750 89.701974 2
+ 48.193750 89.826974 0
+ 48.850000 89.951974 0
+ 49.287500 90.061349 2
+ 48.975000 90.951974 2
+ END$SEGS
+STRUCTURE 1288 7 0 0 0 N 2 48.397570 89.871527 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+DRAW 1289 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14601163 0.000000 12 0
+ 50.490625 95.576974 0
+ 51.115625 94.483224 2
+ 52.318750 90.561349 2
+ 51.881250 90.186349 2
+ 51.475000 90.076974 0
+ 50.865625 89.951974 0
+ 50.709375 90.358224 0
+ 51.537500 90.576974 0
+ 51.740625 90.733224 2
+ 51.678125 91.045724 0
+ 50.740625 94.186349 2
+ 50.146875 95.233224 0
+ END$SEGS
+STRUCTURE 1290 6 0 0 0 N 2 49.331598 93.361112 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1291 6 0 0 0 N 2 50.970486 90.381944 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1292 6 0 0 0 N 2 50.296875 92.612847 0 0.000000 " 1"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.021082 0.500000 0.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 0.526667 0.473334 0 0.833333 0.140000 0
+ L3 2263842 0.000000 0.513333 0.513333 0 0.926666 0.753333 0
+ L3 2263842 0.000000 0.493333 0.526667 0 0.320000 0.966666 0
+ L3 2263842 0.000000 0.480000 0.506667 0 0.013333 0.566666 0
+ L3 2263842 0.000000 0.480000 0.486667 0 0.126666 0.180000 0
+ L3 2263842 0.000000 0.500000 0.480000 0 0.466666 0.006666 0
+ L3 2263842 0.000000 0.506667 0.526667 0 0.673334 0.966666 0
+ L3 2263842 0.000000 0.580000 0.493333 0 0.980000 0.420000 0
+ L3 2263842 0.000000 0.560000 0.320000 0 0.666667 0.046666 0
+ L3 2263842 0.000000 0.386667 0.293334 0 0.233333 0.093333 0
+ L3 2263842 0.000000 0.306667 0.453334 0 0.013333 0.386667 0
+ L3 2263842 0.000000 0.346666 0.593333 0 0.113334 0.806666 0
+ L3 2263842 0.000000 0.500000 0.993333 0 0.493333 0.706666 0
+ L3 2263842 0.000000 0.833333 0.873333 0 0.620000 0.653334 0
+ L3 2263842 0.000000 0.706666 0.540000 0 0.986667 0.580000 0
+ L3 2263842 0.000000 0.926666 0.253333 0 0.673334 0.386667 0
+ L3 2263842 0.000000 0.800000 0.380000 0 0.953333 0.340000 0
+ L3 2263842 0.000000 0.846666 0.480000 0 0.986667 0.486667 0
+ L3 2263842 0.000000 0.973333 0.673334 0 0.820000 0.620000 0
+ L3 2263842 0.000000 0.873333 0.826666 0 0.753333 0.713333 0
+ L3 2263842 0.000000 0.573334 0.986667 0 0.540000 0.826666 0
+ L3 2263842 0.000000 0.200000 0.893334 0 0.313333 0.753333 0
+ L3 2263842 0.000000 0.053333 0.700000 0 0.226666 0.613333 0
+ L3 2263842 0.000000 0.053333 0.280000 0 0.286666 0.393334 0
+ L3 2263842 0.000000 0.433333 0.260000 0 0.346666 0.033334 0
+ END$SEGS
+CORNU 1293 0 0 0 0 N 0 189.937305 94.103806 270.123101 0.000000 0.000000 0.000000 213.062500 75.194444 180.720954 23.887555 189.176836 75.495014
+ T4 542 189.937305 94.103806 270.123101 0 0.0 0.0 0.0 0.0 0 0 0 18.537671
+ T4 257 213.062500 75.194444 180.720954 0 0.0 0.0 0.0 0.0 0 0 0 18.537671
+ W3 0 0.000000 189.937305 94.103806 192.782692 94.097693 195.647810 94.061550 198.436743 93.497535
+ SUBSEGS
+ C 0 0.000000 78.736795 190.342284 15.368053 359.705301 3.109005
+ C 0 0.000000 29.773992 192.750297 64.271606 2.806637 8.203756
+ SUBSEND
+ W3 0 0.000000 198.436743 93.497535 199.831210 93.215528 201.201765 92.806993 202.509981 92.247854
+ SUBSEGS
+ C 0 0.000000 20.902650 194.374351 72.993445 11.206651 11.699029
+ SUBSEND
+ W3 0 0.000000 202.509981 92.247854 203.818198 91.688716 205.063091 90.978991 206.200056 90.123786
+ SUBSEGS
+ C 0 0.000000 17.731670 195.573159 75.929379 23.029865 13.791157
+ SUBSEND
+ W3 0 0.000000 206.200056 90.123786 207.337022 89.268580 208.365101 88.268462 209.248616 87.153353
+ SUBSEGS
+ C 0 0.000000 16.703473 196.162492 76.772632 36.936304 14.640076
+ SUBSEND
+ W3 0 0.000000 209.248616 87.153353 210.132131 86.038244 210.870601 84.809082 211.448335 83.508970
+ SUBSEGS
+ C 0 0.000000 16.967553 195.936727 76.632351 51.679050 14.412241
+ SUBSEND
+ W3 0 0.000000 211.448335 83.508970 212.026068 82.208859 212.443172 80.838693 212.706636 79.440604
+ SUBSEGS
+ C 0 0.000000 18.425049 194.593063 76.067046 66.177625 13.272213
+ SUBSEND
+ W3 0 0.000000 212.706636 79.440604 212.970100 78.042515 213.080401 76.617028 213.062500 75.194444
+ SUBSEGS
+ C 0 0.000000 21.482037 191.583119 75.532284 79.517551 11.383555
+ SUBSEND
+ END$SEGS
+CORNU 1294 0 0 0 0 N 0 211.949507 69.238432 179.494965 0.000000 0.000000 0.000000 211.199507 77.988432 348.264146 31.803214 180.061115 71.519658
+ T4 1296 211.949507 69.238432 179.494965 0 0.0 0.0 0.0 0.0 0 0 0 7.154488
+ T4 1295 211.199507 77.988432 348.264146 0 0.0 0.0 0.0 0.0 0 0 0 7.154488
+ W3 0 0.000000 211.949507 69.238432 211.923657 72.171071 211.796029 75.116986 211.199507 77.988432
+ SUBSEGS
+ C 0 0.000000 -66.662451 145.287482 69.000018 86.011869 3.783216
+ C 0 0.000000 -33.806066 178.064105 71.288041 78.568230 7.448510
+ SUBSEND
+ END$SEGS
+CORNU 1295 0 0 0 0 N 0 211.199507 77.988432 168.264146 31.803214 180.061115 71.519658 189.249435 92.605280 270.123101 0.000000 0.000000 0.000000
+ T4 1294 211.199507 77.988432 168.264146 0 0.0 0.0 0.0 0.0 0 0 0 7.590337
+ T4 889 189.249435 92.605280 270.123101 0 0.0 0.0 0.0 0.0 0 0 0 7.590337
+ W3 0 0.000000 211.199507 77.988432 210.951660 79.181481 210.633132 80.361388 210.206981 81.502962
+ SUBSEGS
+ C 0 0.000000 -23.990113 187.683085 73.244658 69.864724 8.730520
+ SUBSEND
+ W3 0 0.000000 210.206981 81.502962 209.780831 82.644536 209.246964 83.747144 208.595148 84.776674
+ SUBSEGS
+ C 0 0.000000 -17.663524 193.638940 75.379231 57.857597 11.857534
+ SUBSEND
+ W3 0 0.000000 208.595148 84.776674 207.943332 85.806203 207.173929 86.761725 206.301606 87.612516
+ SUBSEGS
+ C 0 0.000000 -15.674564 195.343669 76.404681 44.354071 13.362133
+ SUBSEND
+ W3 0 0.000000 206.301606 87.612516 205.429282 88.463308 204.454851 89.208720 203.408821 89.833713
+ SUBSEGS
+ C 0 0.000000 -15.617512 195.408936 76.420715 30.813023 13.410958
+ SUBSEND
+ W3 0 0.000000 203.408821 89.833713 201.316760 91.083697 198.949902 91.831940 196.542061 92.208077
+ SUBSEGS
+ C 0 0.000000 -18.121388 194.243228 74.201163 13.055010 17.328709
+ C 0 0.000000 -22.621142 193.066138 69.855582 8.838981 4.634100
+ SUBSEND
+ W3 0 0.000000 196.542061 92.208077 194.134219 92.584214 191.686473 92.600044 189.249435 92.605280
+ SUBSEGS
+ C 0 0.000000 -32.431381 191.729494 60.135757 2.080194 6.453575
+ C 0 0.000000 -90.985689 189.597979 1.620259 359.780513 2.303522
+ SUBSEND
+ END$SEGS
+CORNU 1296 0 0 0 0 N 0 212.279403 54.229856 178.208354 807.713473 1019.598008 79.483042 211.949507 69.238432 359.494965 0.000000 0.000000 0.000000
+ T4 1297 212.279403 54.229856 178.208354 0 0.0 0.0 0.0 0.0 0 0 0 6.881691
+ T4 1294 211.949507 69.238432 359.494965 0 0.0 0.0 0.0 0.0 0 0 0 6.881691
+ W3 0 0.000000 212.279403 54.229856 212.122946 59.231615 211.993616 64.234421 211.949507 69.238432
+ SUBSEGS
+ C 0 0.000000 668.545985 880.456869 76.424644 268.097511 1.286604
+ SUBSEND
+ END$SEGS
+CORNU 1297 1 0 0 0 N 0 212.574116 38.764431 182.462882 19.000000 193.591667 39.580902 212.279403 54.229856 358.208354 807.713473 1019.598008 79.483042
+ T4 399 212.574116 38.764431 182.462882 0 0.0 0.0 0.0 0.0 0 0 0 6.532427
+ T4 1296 212.279403 54.229856 358.208354 0 0.0 0.0 0.0 0.0 0 0 0 6.532427
+ W3 0 0.000000 212.574116 38.764431 212.684911 41.340351 212.452256 43.918353 212.414078 46.496372
+ SUBSEGS
+ C 0 0.000000 -47.686154 164.915994 40.399276 87.319230 4.645451
+ C 0 0.000000 166.405497 378.773624 50.406741 267.321249 1.332231
+ SUBSEND
+ W3 0 0.000000 212.414078 46.496372 212.375900 49.074391 212.360014 51.652814 212.279403 54.229856
+ SUBSEGS
+ C 0 0.000000 -469.849161 -257.415278 42.182428 88.530715 0.943214
+ SUBSEND
+ END$SEGS
+STRUCTURE 1298 7 0 0 0 N 2 85.968750 16.265625 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+DRAW 1299 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 48.781250 52.700188 0.000000 1 80.000000 "Upper Level base \nelevation = 16"" \nLower Level surface \nelevation = 0"""
+ END$SEGS
+CORNU 1300 0 0 0 0 N 0 5.905877 78.026789 167.697974 11.489033 17.131100 80.474699 5.937500 82.965278 13.438882 10.773595 16.416097 80.461408
+ T4 881 5.905877 78.026789 167.697974 0 0.0 0.0 0.0 0.0 0 0 0 12.498809
+ T4 887 5.937500 82.965278 13.438882 0 0.0 0.0 0.0 0.0 0 0 0 12.498809
+ W3 0 0.000000 5.905877 78.026789 5.552159 79.648812 5.551669 81.350593 5.937500 82.965278
+ SUBSEGS
+ C 0 0.000000 11.131242 16.775365 80.426533 257.550068 25.633627
+ SUBSEND
+ END$SEGS
+CORNU 1301 0 0 0 0 N 0 4.035691 76.649634 165.169440 14.164657 17.728481 80.275239 3.625000 81.590278 5.441037 13.776823 17.339748 80.283941
+ T4 1307 4.035691 76.649634 165.169440 0 0.0 0.0 0.0 0.0 0 0 0 14.282784
+ T4 885 3.625000 81.590278 5.441037 0 0.0 0.0 0.0 0.0 0 0 0 14.282784
+ W3 0 0.000000 4.035691 76.649634 3.610492 78.255478 3.467484 79.936580 3.625000 81.590278
+ SUBSEGS
+ C 0 0.000000 14.122311 17.685617 80.271675 255.138905 20.218616
+ SUBSEND
+ END$SEGS
+DRAW 1302 0 0 0 0 0.000000 0.000000 0 0.000000
+ L3 6573132 0.000000 -0.857198 75.726758 0 -0.861984 75.688008 0
+ END$SEGS
+DRAW 1303 0 0 0 0 0.000000 0.000000 0 0.000000
+ L3 6573132 0.000000 -0.882564 74.521497 0 -0.882564 74.521497 0
+ END$SEGS
+DRAW 1304 0 0 0 0 0.000000 0.000000 0 0.000000
+ L3 6573132 0.000000 -0.882564 74.521497 0 -0.882564 74.521497 0
+ END$SEGS
+DRAW 1305 0 0 0 0 0.000000 0.000000 0 0.000000
+ L3 6573132 0.000000 -0.882564 74.521497 0 -0.882564 74.521497 0
+ END$SEGS
+DRAW 1306 0 0 0 0 0.000000 0.000000 0 0.000000
+ L3 6573132 0.000000 -0.852502 75.764776 0 -0.857198 75.726758 0
+ END$SEGS
+CORNU 1307 0 0 0 0 N 0 4.196720 76.088480 162.848566 14.215456 17.779996 80.280592 4.035691 76.649634 345.169440 14.164657 17.728481 80.275239
+ T4 884 4.196720 76.088480 162.848566 0 0.0 0.0 0.0 0.0 0 0 0 14.217098
+ T4 1301 4.035691 76.649634 345.169440 0 0.0 0.0 0.0 0.0 0 0 0 14.217098
+ W3 0 0.000000 4.196720 76.088480 4.139329 76.274439 4.085505 76.461503 4.035691 76.649634
+ SUBSEGS
+ S 0 0.000000 4.196720 76.088480 4.035691 76.649634
+ SUBSEND
+ END$SEGS
+CURVE 1308 0 0 0 0 N 2 16.788167 79.751064 0 15.000000 0 0.000000 0.000000
+ T4 1309 7.168361 68.241966 129.890351 0 0.0 0.0 0.0 0.0 0 0 0 14.703639
+ T4 1436 2.462800 75.303158 342.750869 9 0.000000 0.000000 14.500000 14.500000 1 1 0 14.703639
+ END$SEGS
+TURNOUT 1309 0 0 0 0 N 2 7.168361 68.241966 0 39.890351 "Peco-80 Curved Left SL-1735/387"
+ T4 1308 7.168361 68.241966 309.890351 0 0.0 0.0 0.0 0.0 0 0 0 15.058265
+ T4 1311 12.214952 64.710356 120.075351 0 0.0 0.0 0.0 0.0 0 0 0 15.058265
+ T4 1310 12.479967 65.166159 110.257351 0 0.0 0.0 0.0 0.0 0 0 0 15.058265
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 2 5 6 7
+ C 0 0.000000 -35.984252 0.000000 35.984252 179.681551 0.318449
+ S 0 0.000000 0.199999 0.000556 0.249998 0.000732
+ C 0 0.000000 -35.417758 0.050634 35.417928 170.428493 9.248991
+ C 0 0.000000 -35.984252 0.002864 35.984333 170.185000 0.318449
+ C 0 0.000000 -16.099920 0.301422 16.100570 170.001792 10.181213
+ C 0 0.000000 -19.147709 -0.432227 19.064875 160.817514 8.562309
+ C 0 0.000000 -17.992126 0.002783 17.992594 160.367000 0.636898
+ END$SEGS
+CORNU 1310 0 0 0 0 N 2 25.843850 66.491141 74.787050 0.000000 0.000000 0.000000 12.479967 65.166159 290.257351 17.992126 18.709514 82.045416
+ T4 267 25.843850 66.491141 74.787050 0 0.0 0.0 0.0 0.0 0 0 0 15.263557
+ T4 1309 12.479967 65.166159 290.257351 0 0.0 0.0 0.0 0.0 0 0 0 15.263557
+ W3 0 0.000000 25.843850 66.491141 24.740210 66.191021 23.640463 65.876817 22.543477 65.553221
+ SUBSEGS
+ C 0 0.000000 -160.822764 68.153970 -88.666247 343.524388 1.222394
+ SUBSEND
+ W3 0 0.000000 22.543477 65.553221 21.446491 65.229625 20.348080 64.904209 19.226630 64.679614
+ SUBSEGS
+ C 0 0.000000 38.477993 11.094512 102.288451 162.689742 5.109093
+ SUBSEND
+ W3 0 0.000000 19.226630 64.679614 18.105180 64.455020 16.956953 64.340346 15.815819 64.417202
+ SUBSEGS
+ C 0 0.000000 12.970235 16.534982 77.367483 168.022650 15.155869
+ SUBSEND
+ W3 0 0.000000 15.815819 64.417202 14.674686 64.494057 13.552943 64.770161 12.479967 65.166159
+ SUBSEGS
+ C 0 0.000000 12.001185 16.750115 76.381964 184.465009 16.378118
+ SUBSEND
+ END$SEGS
+CORNU 1311 0 0 0 0 N 2 12.214952 64.710356 300.075351 35.984252 30.248046 95.849943 29.665728 65.419949 77.071923 0.000000 0.000000 0.000000
+ T4 1309 12.214952 64.710356 300.075351 0 0.0 0.0 0.0 0.0 0 0 0 15.423349
+ T4 162 29.665728 65.419949 77.071923 0 0.0 0.0 0.0 0.0 0 0 0 15.423349
+ W3 0 0.000000 12.214952 64.710356 12.868402 64.331940 13.536621 63.976353 14.234390 63.687711
+ SUBSEGS
+ C 0 0.000000 -17.079313 20.923734 79.402533 203.058048 7.599278
+ SUBSEND
+ W3 0 0.000000 14.234390 63.687711 14.932159 63.399069 15.658303 63.177510 16.400764 63.039863
+ SUBSEGS
+ C 0 0.000000 -10.852495 18.410008 73.704739 190.669363 11.959547
+ SUBSEND
+ W3 0 0.000000 16.400764 63.039863 17.143226 62.902217 17.900525 62.848114 18.655378 62.867890
+ SUBSEGS
+ C 0 0.000000 -10.822409 18.346667 73.685895 178.365406 11.992885
+ SUBSEND
+ W3 0 0.000000 18.655378 62.867890 19.410232 62.887667 20.162110 62.980422 20.904168 63.120225
+ SUBSEGS
+ C 0 0.000000 -14.163835 18.205422 77.024577 169.015830 9.163694
+ SUBSEND
+ W3 0 0.000000 20.904168 63.120225 22.388284 63.399831 23.831479 63.859121 25.280581 64.284425
+ SUBSEGS
+ C 0 0.000000 -33.444835 14.265836 95.899632 162.731144 5.820416
+ S 0 0.000000 24.194131 63.962413 25.280581 64.284425
+ SUBSEND
+ W3 0 0.000000 25.280581 64.284425 26.729683 64.709729 28.193784 65.082070 29.665728 65.419949
+ SUBSEGS
+ C 0 0.000000 75.710761 46.443804 -8.408335 343.768007 3.428523
+ SUBSEND
+ END$SEGS
+CORNU 1312 0 0 0 0 N 2 23.040931 61.662318 255.200584 0.000000 0.000000 0.000000 34.062500 65.041667 72.009129 0.000000 0.000000 0.000000
+ T4 225 23.040931 61.662318 255.200584 0 0.0 0.0 0.0 0.0 0 0 0 15.907955
+ T4 1313 34.062500 65.041667 72.009129 0 0.0 0.0 0.0 0.0 0 0 0 15.907955
+ W3 0 0.000000 23.040931 61.662318 24.898929 62.153202 26.749155 62.674371 28.580789 63.255954
+ SUBSEGS
+ C 0 0.000000 -117.289677 -6.604763 175.143599 162.543088 2.816241
+ SUBSEND
+ W3 0 0.000000 28.580789 63.255954 30.412424 63.837536 32.234713 64.448105 34.062500 65.041667
+ SUBSEGS
+ S 0 0.000000 28.580789 63.255954 34.062500 65.041667
+ SUBSEND
+ END$SEGS
+CORNU 1313 0 0 0 0 N 2 34.062500 65.041667 252.009129 0.000000 0.000000 0.000000 46.077926 67.549300 81.533806 0.000000 0.000000 0.000000
+ T4 1312 34.062500 65.041667 252.009129 0 0.0 0.0 0.0 0.0 0 0 0 15.912412
+ T4 232 46.077926 67.549300 81.533806 0 0.0 0.0 0.0 0.0 0 0 0 15.912412
+ W3 0 0.000000 34.062500 65.041667 36.011726 65.674666 37.987647 66.232800 40.002562 66.607355
+ SUBSEGS
+ C 0 0.000000 47.222577 49.042947 20.258210 341.504474 7.458576
+ SUBSEND
+ W3 0 0.000000 40.002562 66.607355 42.017476 66.981911 44.050827 67.247571 46.077926 67.549300
+ SUBSEGS
+ C 0 0.000000 113.925627 60.069568 -45.537033 349.854919 2.319054
+ S 0 0.000000 44.556815 67.327501 46.077926 67.549300
+ SUBSEND
+ END$SEGS
+CORNU 1314 0 0 0 0 N 2 17.031616 59.702549 67.200584 0.000000 0.000000 0.000000 5.575377 51.766455 207.065049 17.992126 21.597195 43.580006
+ T4 225 17.031616 59.702549 67.200584 2 0.000000 0.000000 0.0 0.0 0 2 0 16.046039
+ T4 226 5.575377 51.766455 207.065049 2 0.000000 0.000000 0.0 0.0 0 2 0 16.046039
+ W3 0 0.000000 17.031616 59.702549 15.931297 59.240031 14.825673 58.790292 13.722433 58.334787
+ SUBSEGS
+ S 0 0.000000 17.031616 59.702549 13.722433 58.334787
+ SUBSEND
+ W3 0 0.000000 13.722433 58.334787 12.619192 57.879283 11.519016 57.409098 10.476808 56.827354
+ SUBSEGS
+ C 0 0.000000 -30.473840 24.914111 29.990453 331.721322 6.732237
+ SUBSEND
+ W3 0 0.000000 10.476808 56.827354 9.434600 56.245610 8.454201 55.542989 7.621363 54.688001
+ SUBSEGS
+ C 0 0.000000 -12.392518 16.402238 45.943247 314.881908 16.553723
+ SUBSEND
+ W3 0 0.000000 7.621363 54.688001 6.788524 53.833013 6.118456 52.829323 5.575377 51.766455
+ SUBSEGS
+ C 0 0.000000 -11.958564 16.284250 46.444117 296.427497 17.152822
+ SUBSEND
+ END$SEGS
+DRAW 1315 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 788231 0.186667 7.627500 79.684167 0 -0.043784 72.916645 0
+ END$SEGS
+DRAW 1316 6 0 0 0 0.000000 0.000000 0 0.000000
+ L3 788231 0.186667 5.972159 81.716327 0 -0.078048 75.805333 0
+ END$SEGS
+STRUCTURE 1317 5 0 0 0 N 2 191.131487 23.508785 0 0.000000 "Blair line Cash mine works (bon ami mine) 086"
+ D 0.000000 0.000000
+ F4 16744703 0.051020 4 0
+ 3.728124 5.322086 0
+ 4.698533 0.800036 0
+ 0.970408 0.000000 0
+ 0.000000 4.522050 0
+ Y4 788231 0.051020 4 0
+ 0.746412 4.653815 0
+ 1.716820 0.131766 0
+ 3.916736 0.603856 0
+ 2.946328 5.125906 0
+ L3 525059 0.051020 1.898766 4.844285 0 2.860432 0.362975 0
+ Y4 786432 0.051020 4 0
+ 2.511895 4.634937 0
+ 3.309203 0.919523 0
+ 2.331463 0.709705 0
+ 1.534154 4.425119 0
+ Y4 656645 0.051020 4 0
+ 1.868348 2.735404 0
+ 2.248119 0.965694 0
+ 0.478408 0.585923 0
+ 0.098638 2.355633 0
+ Y4 656645 0.051020 4 0
+ 4.333559 4.883805 0
+ 4.713330 3.114095 0
+ 2.943620 2.734324 0
+ 2.563849 4.504034 0
+ END$SEGS
+STRUCTURE 1318 5 16 0 0 N 2 164.762335 66.053813 0 193.084494 "Muir models Ponderosa barn 610"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 6 0
+ 0.000000 -3.619687 0
+ 3.241110 -3.697179 0
+ 3.678610 -2.197179 0
+ 3.241110 -0.884679 0
+ 3.241110 -0.072179 0
+ 0.047637 -0.000000 0
+ Y4 788231 0.040816 4 0
+ 0.053610 -0.051345 0
+ 3.178610 -0.051345 0
+ 3.178610 -0.901345 0
+ 0.053610 -0.901345 0
+ L3 788231 0.040816 0.053610 -2.259679 0 3.616110 -2.259679 0
+ END$SEGS
+CORNU 1319 0 0 0 0 N 2 101.656250 5.947917 290.378636 17.303197 107.681613 22.168139 118.118394 6.664695 66.066439 20.840872 109.663731 25.713596
+ T4 1228 101.656250 5.947917 290.378636 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1321 118.118394 6.664695 66.066439 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 101.656250 5.947917 104.291982 4.968816 107.141574 4.620183 109.949903 4.758050
+ SUBSEGS
+ C 0 0.000000 -20.102739 108.529866 24.839013 181.966876 18.027284
+ C 0 0.000000 -23.543412 108.784193 28.272586 177.161941 5.136714
+ SUBSEND
+ W3 0 0.000000 109.949903 4.758050 112.758232 4.895918 115.548443 5.524048 118.118394 6.664695
+ SUBSEGS
+ C 0 0.000000 -22.947544 108.905923 27.681834 156.330654 21.061821
+ SUBSEND
+ END$SEGS
+TURNOUT 1320 0 0 0 0 N 2 131.022018 40.287133 0 90.614415 "Peco-80 Wye SL-1741/397"
+ T4 1329 131.022018 40.287133 0.614415 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1322 131.229386 35.284622 176.614415 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1321 130.707416 35.290219 184.614415 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ D 0.000000 0.000000
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ C 0 0.000000 -26.154032 0.354335 26.154032 175.999924 4.000152
+ S 0 0.000000 2.178781 0.063715 5.000000 0.261000
+ C 0 0.000000 26.154032 0.354196 -26.154032 0.000076 4.000152
+ S 0 0.000000 2.178781 -0.063715 5.000000 -0.261000
+ END$SEGS
+CORNU 1321 0 0 0 0 N 2 130.707416 35.290219 4.614415 0.000000 0.000000 0.000000 118.118394 6.664695 246.066439 20.840872 109.663731 25.713596
+ T4 1320 130.707416 35.290219 4.614415 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1319 118.118394 6.664695 246.066439 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 130.707416 35.290219 130.485090 32.535637 130.290399 29.778295 130.001217 27.029927
+ SUBSEGS
+ C 0 0.000000 341.232469 -209.612811 60.224959 94.190486 1.392066
+ SUBSEND
+ W3 0 0.000000 130.001217 27.029927 129.712035 24.281559 129.308848 21.532278 128.503334 18.888739
+ SUBSEGS
+ C 0 0.000000 50.811860 79.416686 31.831008 95.421818 7.013228
+ C 0 0.000000 30.277750 99.530366 27.681309 102.962605 3.919125
+ SUBSEND
+ W3 0 0.000000 128.503334 18.888739 128.100576 17.566970 127.596360 16.274585 126.966528 15.044707
+ SUBSEGS
+ C 0 0.000000 23.367211 106.122744 25.607056 106.708968 10.164123
+ SUBSEND
+ W3 0 0.000000 126.966528 15.044707 126.336697 13.814828 125.580607 12.648341 124.697836 11.585325
+ SUBSEGS
+ C 0 0.000000 18.883215 110.136735 23.608227 116.968401 12.577621
+ SUBSEND
+ W3 0 0.000000 124.697836 11.585325 123.815065 10.522309 122.805857 9.564283 121.697106 8.739688
+ SUBSEGS
+ C 0 0.000000 17.415293 111.298659 22.709826 129.700735 13.637708
+ SUBSEND
+ W3 0 0.000000 121.697106 8.739688 120.588354 7.915092 119.381355 7.225247 118.118394 6.664695
+ SUBSEGS
+ C 0 0.000000 18.712414 110.579144 23.791112 143.548011 12.692330
+ SUBSEND
+ END$SEGS
+CORNU 1322 0 0 0 0 N 2 131.229386 35.284622 356.614415 0.000000 0.000000 0.000000 130.733553 21.000000 190.448100 43.129228 88.319425 28.821261
+ T4 1320 131.229386 35.284622 356.614415 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1323 130.733553 21.000000 190.448100 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 131.229386 35.284622 131.370465 32.899866 131.498260 30.511658 131.446746 28.123288
+ SUBSEGS
+ C 0 0.000000 113.284850 18.188150 27.859253 86.241796 2.718678
+ C 0 0.000000 53.965937 77.492532 29.248109 89.292490 1.901822
+ SUBSEND
+ W3 0 0.000000 131.446746 28.123288 131.395231 25.734918 131.166772 23.349316 130.733553 21.000000
+ SUBSEGS
+ C 0 0.000000 44.594850 86.860319 28.989990 91.113615 9.207713
+ SUBSEND
+ END$SEGS
+CORNU 1323 0 0 0 0 N 2 130.733553 21.000000 10.448100 43.129228 88.319425 28.821261 124.656250 8.645833 225.265732 19.566952 110.884644 22.545778
+ T4 1322 130.733553 21.000000 10.448100 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1324 124.656250 8.645833 225.265732 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 130.733553 21.000000 130.310535 18.706004 129.674809 16.440306 128.672165 14.334109
+ SUBSEGS
+ C 0 0.000000 28.994867 102.181727 26.049308 100.028901 10.372987
+ C 0 0.000000 21.674219 109.094476 23.633886 110.787580 4.621035
+ SUBSEND
+ W3 0 0.000000 128.672165 14.334109 127.669521 12.227912 126.313331 10.287614 124.656250 8.645833
+ SUBSEGS
+ C 0 0.000000 20.289854 110.334791 23.018515 115.341792 19.760489
+ SUBSEND
+ END$SEGS
+CORNU 1324 0 0 0 0 N 2 124.656250 8.645833 45.265732 19.566952 110.884644 22.545778 105.375000 3.140625 277.900980 26.591373 109.030290 29.479569
+ T4 1323 124.656250 8.645833 45.265732 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1325 105.375000 3.140625 277.900980 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 124.656250 8.645833 123.426170 7.427110 122.028783 6.377066 120.512726 5.540434
+ SUBSEGS
+ C 0 0.000000 18.816061 111.407405 22.006681 135.241162 15.817614
+ SUBSEND
+ W3 0 0.000000 120.512726 5.540434 118.996668 4.703802 117.366745 4.079123 115.689146 3.650118
+ SUBSEGS
+ C 0 0.000000 20.486863 110.685832 23.516632 151.336274 14.527946
+ SUBSEND
+ W3 0 0.000000 115.689146 3.650118 112.333948 2.792107 108.805293 2.664573 105.375000 3.140625
+ SUBSEGS
+ C 0 0.000000 26.155482 109.322209 29.018826 165.911138 17.070045
+ C 0 0.000000 28.921316 109.358223 31.786331 182.767289 5.149003
+ SUBSEND
+ END$SEGS
+CORNU 1325 0 0 0 0 N 2 105.375000 3.140625 97.900980 26.591373 109.030290 29.479569 97.046053 6.500000 308.651492 14.706937 106.231736 17.985521
+ T4 1324 105.375000 3.140625 97.900980 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1326 97.046053 6.500000 308.651492 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 105.375000 3.140625 103.873594 3.348988 102.386522 3.693215 100.974524 4.244481
+ SUBSEGS
+ C 0 0.000000 19.428252 107.869535 22.408066 187.376987 13.410090
+ SUBSEND
+ W3 0 0.000000 100.974524 4.244481 99.562525 4.795748 98.229827 5.553262 97.046053 6.500000
+ SUBSEGS
+ C 0 0.000000 15.066113 106.426675 18.289473 201.215807 17.292681
+ SUBSEND
+ END$SEGS
+CORNU 1326 0 0 0 0 N 2 97.046053 6.500000 128.651492 14.706937 106.231736 17.985521 92.283120 13.505110 341.129014 16.796952 108.177224 18.937888
+ T4 1325 97.046053 6.500000 128.651492 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1327 92.283120 13.505110 341.129014 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 97.046053 6.500000 95.928324 7.393917 94.953723 8.464771 94.162335 9.657294
+ SUBSEGS
+ C 0 0.000000 13.861480 105.716649 17.314870 218.720166 17.745566
+ SUBSEND
+ W3 0 0.000000 94.162335 9.657294 93.370946 10.849817 92.746033 12.150814 92.283120 13.505110
+ SUBSEGS
+ C 0 0.000000 16.762331 108.161360 18.877003 236.631241 14.677161
+ SUBSEND
+ END$SEGS
+CORNU 1327 0 0 0 0 N 2 92.283120 13.505110 161.129014 16.796952 108.177224 18.937888 91.801596 15.138066 346.220896 18.407265 109.679122 19.522295
+ T4 1326 92.283120 13.505110 161.129014 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1328 91.801596 15.138066 346.220896 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 92.283120 13.505110 92.099513 14.042268 91.936804 14.586732 91.801596 15.138066
+ SUBSEGS
+ C 0 0.000000 19.166551 110.408154 19.737271 251.024842 5.090981
+ SUBSEND
+ END$SEGS
+CORNU 1328 0 0 0 0 N 2 91.801596 15.138066 166.220896 18.407265 109.679122 19.522295 92.910571 27.618417 18.499982 0.000000 0.000000 0.000000
+ T4 1327 91.801596 15.138066 166.220896 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 616 92.910571 27.618417 18.499982 2 0.000000 0.000000 0.0 0.0 0 2 0 16.991015
+ W3 0 0.000000 91.801596 15.138066 91.296389 17.198144 91.154874 19.346424 91.383654 21.455172
+ SUBSEGS
+ C 0 0.000000 18.300226 109.577682 19.486517 256.254044 19.921525
+ SUBSEND
+ W3 0 0.000000 91.383654 21.455172 91.612434 23.563919 92.237530 25.606907 92.910571 27.618417
+ SUBSEGS
+ C 0 0.000000 21.396631 112.639260 19.002616 276.581906 8.509006
+ C 0 0.000000 47.999171 138.326090 12.082939 285.083086 3.801409
+ SUBSEND
+ END$SEGS
+STRAIGHT 1329 0 0 0 0 N 2 0.000000 0.000000
+ T4 1320 131.022018 40.287133 180.614415 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ E4 131.050186 42.913759 0.614415 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ END$SEGS
+TURNOUT 1330 0 0 0 0 N 2 131.040817 47.701462 0 0.000000 "Atlas Deck Truss Bridge 2547"
+ T4 1331 131.040817 47.701462 359.805727 0 0.0 0.0 0.0 0.0 0 0 0 18.428235
+ E4 131.057370 42.819600 179.805727 0 0.0 0.0 0.0 0.0 0 0 0 18.428235
+ D 0.000000 0.000000
+ P "P0" 7
+ L3 0 0.020408 -0.348445 -4.883100 0 0.381551 -4.880624 0
+ L3 5061178 0.020408 -0.348445 -4.883100 0 -0.364998 -0.001238 0
+ L3 0 0.020408 -0.298445 -4.882930 0 -0.314998 -0.001068 0
+ L3 0 0.020408 0.331551 -4.880794 0 0.314998 0.001068 0
+ L3 0 0.020408 0.381551 -4.880624 0 0.364998 0.001238 0
+ L3 0 0.020408 -0.364998 -0.001238 0 0.364998 0.001238 0
+ S 0 0.000000 0.016553 -4.881862 0.000000 0.000000
+ END$SEGS
+CORNU 1331 0 0 0 0 N 2 139.785764 68.078312 51.776737 17.992126 150.917985 53.943595 131.040817 47.701462 179.805727 0.000000 0.000000 0.000000
+ T4 604 139.785764 68.078312 51.776737 0 0.0 0.0 0.0 0.0 0 0 0 18.428235
+ T4 1330 131.040817 47.701462 179.805727 0 0.0 0.0 0.0 0.0 0 0 0 18.428235
+ W3 0 0.000000 139.785764 68.078312 138.276546 66.889682 136.951127 65.476409 135.792445 63.944078
+ SUBSEGS
+ C 0 0.000000 -22.525522 153.858368 50.489652 306.676550 14.660312
+ SUBSEND
+ W3 0 0.000000 135.792445 63.944078 134.633764 62.411746 133.645776 60.747873 132.885798 58.983499
+ SUBSEGS
+ C 0 0.000000 -23.972055 154.872835 49.432077 293.480682 13.774902
+ SUBSEND
+ W3 0 0.000000 132.885798 58.983499 132.125821 57.219125 131.605855 55.352852 131.330283 53.451631
+ SUBSEGS
+ C 0 0.000000 -21.961405 153.067815 50.323850 278.188004 15.035078
+ SUBSEND
+ W3 0 0.000000 131.330283 53.451631 131.054710 51.550410 131.034303 49.622540 131.040817 47.701462
+ SUBSEGS
+ C 0 0.000000 -32.508067 163.552612 49.150940 269.986044 7.616252
+ S 0 0.000000 131.044546 49.143021 131.040817 47.701462
+ SUBSEND
+ END$SEGS
+STRUCTURE 1332 5 0 0 0 N 2 61.847889 87.070455 0 347.465877 "RS Laser GUS'S SHOES 3073"
+ D 0.000000 0.000000
+ F4 16744703 0.040816 7 0
+ 0.009375 1.718750 0
+ 0.884375 1.734375 0
+ 0.868750 0.000000 0
+ 0.181250 0.015625 0
+ 0.181250 0.171875 0
+ 0.150000 0.171875 0
+ 0.000000 0.171875 0
+ END$SEGS
+DRAW 1333 5 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 61.692160 88.203125 0.000000 0 18.000000 "GUS'S\nSHOE \nREPAIR"
+ END$SEGS
+DRAW 1334 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 12169906 0.160000 7 2
+ 58.400493 85.338542 0
+ 62.462993 86.338542 0
+ 62.775493 86.557292 0
+ 62.900493 86.932292 0
+ 62.900493 86.932292 0
+ 62.837993 87.307292 0
+ 62.837993 87.307292 0
+ END$SEGS
+DRAW 1335 7 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 12169906 0.160000 10 2
+ 50.150000 95.239583 0
+ 50.509375 95.536458 2
+ 50.634375 95.317708 0
+ 51.009375 94.661458 0
+ 51.259375 93.989583 0
+ 52.212500 90.817708 0
+ 52.187007 90.437500 2
+ 51.827632 90.250000 0
+ 50.874507 90.015625 2
+ 50.765132 90.390625 0
+ END$SEGS
+DRAW 1336 7 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 12169906 0.160000 8 2
+ 49.000000 91.453125 0
+ 49.328125 90.968750 2
+ 49.744263 89.747949 2
+ 49.187500 89.625000 0
+ 47.454788 89.272988 2
+ 47.312500 89.437500 0
+ 47.127861 89.716068 2
+ 47.340094 89.941533 0
+ END$SEGS
+CORNU 1337 2 0 0 0 N 2 65.303358 68.077643 269.834796 0.000000 0.000000 0.000000 69.015625 67.953125 94.351075 32.202788 66.572476 35.843148
+ T4 452 65.303358 68.077643 269.834796 0 0.0 0.0 0.0 0.0 0 0 0 0.078316
+ T4 1338 69.015625 67.953125 94.351075 0 0.0 0.0 0.0 0.0 0 0 0 0.078316
+ W3 0 0.000000 65.303358 68.077643 66.541828 68.081214 67.780719 68.047085 69.015625 67.953125
+ SUBSEGS
+ C 0 0.000000 47.139293 65.580446 20.939165 359.663209 4.515807
+ SUBSEND
+ END$SEGS
+CORNU 1338 2 0 0 0 N 2 69.015625 67.953125 274.351075 32.202788 66.572476 35.843148 86.069154 54.946377 171.957980 0.000000 0.000000 0.000000
+ T4 1337 69.015625 67.953125 274.351075 0 0.0 0.0 0.0 0.0 0 0 0 0.078316
+ T4 453 86.069154 54.946377 171.957980 0 0.0 0.0 0.0 0.0 0 0 0 0.078316
+ W3 0 0.000000 69.015625 67.953125 70.997773 67.802309 72.970386 67.510670 74.907692 67.065132
+ SUBSEGS
+ C 0 0.000000 39.755320 66.053701 28.308296 4.272715 8.595663
+ SUBSEND
+ W3 0 0.000000 74.907692 67.065132 76.844998 66.619593 78.758741 65.982892 80.452204 64.941817
+ SUBSEGS
+ C 0 0.000000 20.583803 70.542934 46.949420 12.242408 12.456521
+ C 0 0.000000 13.887247 73.195864 53.101161 25.360209 6.141119
+ SUBSEND
+ W3 0 0.000000 80.452204 64.941817 81.298936 64.421279 82.085572 63.800433 82.772285 63.081865
+ SUBSEGS
+ C 0 0.000000 11.624330 74.401039 55.016675 31.369847 14.696909
+ SUBSEND
+ W3 0 0.000000 82.772285 63.081865 83.458998 62.363297 84.043571 61.547566 84.505176 60.667318
+ SUBSEGS
+ C 0 0.000000 10.675359 75.050248 55.710743 46.331882 16.003155
+ SUBSEND
+ W3 0 0.000000 84.505176 60.667318 84.966780 59.787070 85.303834 58.844514 85.544745 57.880213
+ SUBSEGS
+ C 0 0.000000 12.534314 73.363957 54.924299 62.730032 13.629667
+ SUBSEND
+ W3 0 0.000000 85.544745 57.880213 85.785655 56.915912 85.930103 55.930541 86.069154 54.946377
+ SUBSEGS
+ C 0 0.000000 28.553174 57.737568 51.396025 76.874093 5.983161
+ SUBSEND
+ END$SEGS
+DRAW 1339 0 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12632256 0.000000 4 0
+ 102.885691 96.529057 0
+ 102.885691 96.529057 0
+ 102.885691 96.529057 0
+ 102.885691 96.529057 0
+ END$SEGS
+STRUCTURE 1340 5 0 0 0 N 2 180.035783 78.250000 0 0.000000 "unk run down shack 001"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000217 1.000000 0
+ 1.500217 1.000000 0
+ 1.500217 0.000000 0
+ 0.000217 0.000000 0
+ L3 723209 0.041667 0.000217 0.518640 0 1.500217 0.503015 0
+ END$SEGS
+CORNU 1341 0 0 0 0 N 2 142.003678 85.919249 88.173410 0.000000 0.000000 0.000000 125.036184 84.898026 261.379451 60.005820 134.030453 25.570111
+ T4 1552 142.003678 85.919249 88.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.165661
+ T4 1342 125.036184 84.898026 261.379451 0 0.0 0.0 0.0 0.0 0 0 0 15.165661
+ W3 0 0.000000 142.003678 85.919249 139.170218 85.828888 136.335771 85.766288 133.503348 85.647780
+ SUBSEGS
+ C 0 0.000000 -855.996200 165.076609 -769.765936 357.886176 0.569259
+ SUBSEND
+ W3 0 0.000000 133.503348 85.647780 130.670925 85.529271 127.839058 85.322949 125.036184 84.898026
+ SUBSEGS
+ C 0 0.000000 -78.299797 136.165883 7.393264 351.828180 6.223138
+ SUBSEND
+ END$SEGS
+CORNU 1342 0 0 0 0 N 2 125.036184 84.898026 81.379451 60.005820 134.030453 25.570111 119.226078 83.550248 253.573648 0.000000 0.000000 0.000000
+ T4 1341 125.036184 84.898026 81.379451 0 0.0 0.0 0.0 0.0 0 0 0 15.045443
+ T4 765 119.226078 83.550248 253.573648 0 0.0 0.0 0.0 0.0 0 0 0 15.045443
+ W3 0 0.000000 125.036184 84.898026 123.068556 84.599728 121.134961 84.113017 119.226078 83.550248
+ SUBSEGS
+ C 0 0.000000 -43.822370 132.010766 41.634239 343.037912 7.804191
+ SUBSEND
+ END$SEGS
+DRAW 1343 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 7959154 0.000000 8 0
+ 115.786263 86.750919 0
+ 112.629776 84.545309 1
+ 109.148454 81.469203 2
+ 106.542681 78.723547 0
+ 109.792681 78.036047 0
+ 113.667681 81.723547 1
+ 116.939195 84.296880 2
+ 121.230181 87.348547 0
+ END$SEGS
+DRAW 1344 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 4 0
+ 111.614897 89.271844 0
+ 112.722970 87.349599 0
+ 112.127346 87.006253 0
+ 111.007805 88.885816 0
+ END$SEGS
+DRAW 1345 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 4 0
+ 107.855428 87.510388 0
+ 108.334376 85.343949 0
+ 107.663086 85.195543 0
+ 107.160370 87.324722 0
+ END$SEGS
+DRAW 1346 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 4 0
+ 105.353318 87.534412 0
+ 105.148482 85.325139 0
+ 104.463919 85.388608 0
+ 104.634753 87.569651 0
+ END$SEGS
+DRAW 1347 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 4 0
+ 103.155710 87.741102 0
+ 102.872068 85.540559 0
+ 102.190210 85.628447 0
+ 102.438863 87.801993 0
+ END$SEGS
+CORNU 1348 0 0 0 0 N 2 103.468750 90.005208 88.948325 82.737602 101.950170 172.728873 91.906250 90.692708 275.328090 331.883931 122.724576 421.142666
+ T4 1354 103.468750 90.005208 88.948325 0 0.0 0.0 0.0 0.0 0 0 0 17.236991
+ T4 1349 91.906250 90.692708 275.328090 0 0.0 0.0 0.0 0.0 0 0 0 17.236991
+ W3 0 0.000000 103.468750 90.005208 101.537350 89.969753 99.604815 90.033772 97.678580 90.179293
+ SUBSEGS
+ C 0 0.000000 61.814997 102.429291 151.811464 179.036489 5.371250
+ SUBSEND
+ W3 0 0.000000 97.678580 90.179293 95.752344 90.324814 93.829629 90.513330 91.906250 90.692708
+ SUBSEGS
+ C 0 0.000000 329.485751 123.981879 418.613452 184.578873 1.007752
+ SUBSEND
+ END$SEGS
+CORNU 1349 0 0 0 0 N 2 91.906250 90.692708 95.328090 331.883931 122.724576 421.142666 80.822682 91.420576 273.067665 272.347112 66.247948 -180.536271
+ T4 1348 91.906250 90.692708 95.328090 0 0.0 0.0 0.0 0.0 0 0 0 17.275635
+ T4 1350 80.822682 91.420576 273.067665 0 0.0 0.0 0.0 0.0 0 0 0 17.275635
+ W3 0 0.000000 91.906250 90.692708 88.219354 91.036554 84.520271 91.222414 80.822682 91.420576
+ SUBSEGS
+ C 0 0.000000 -217.857107 72.614716 -126.308573 2.889254 2.191017
+ S 0 0.000000 83.595940 91.271601 80.822682 91.420576
+ SUBSEND
+ END$SEGS
+CORNU 1350 0 0 0 0 N 2 80.822682 91.420576 93.067665 272.347112 66.247948 -180.536271 70.331743 91.748026 269.989625 51.610320 70.341088 40.137707
+ T4 1349 80.822682 91.420576 93.067665 0 0.0 0.0 0.0 0.0 0 0 0 17.312418
+ T4 1351 70.331743 91.748026 269.989625 0 0.0 0.0 0.0 0.0 0 0 0 17.312418
+ W3 0 0.000000 80.822682 91.420576 77.328762 91.607822 73.830677 91.748660 70.331743 91.748026
+ SUBSEGS
+ C 0 0.000000 -195.424058 69.482678 -103.674188 0.248936 3.077674
+ SUBSEND
+ END$SEGS
+CORNU 1351 0 0 0 0 N 2 70.331743 91.748026 89.989625 51.610320 70.341088 40.137707 59.560545 90.568866 258.571734 0.000000 0.000000 0.000000
+ T4 1350 70.331743 91.748026 89.989625 0 0.0 0.0 0.0 0.0 0 0 0 17.348773
+ T4 939 59.560545 90.568866 258.571734 0 0.0 0.0 0.0 0.0 0 0 0 17.348773
+ W3 0 0.000000 70.331743 91.748026 68.522215 91.747698 66.712080 91.658369 64.913593 91.458780
+ SUBSEGS
+ C 0 0.000000 -49.210535 70.242032 42.537573 353.783916 6.320534
+ SUBSEND
+ W3 0 0.000000 64.913593 91.458780 63.115106 91.259190 61.334196 90.927407 59.560545 90.568866
+ SUBSEGS
+ C 0 0.000000 -61.045367 72.238225 30.854435 348.013784 5.094881
+ SUBSEND
+ END$SEGS
+DRAW 1352 0 0 0 0 49.395688 50.955468 0 346.614606
+ F4 7959154 0.000000 4 0
+ 71.892378 24.331648 0
+ 71.642378 22.956648 0
+ 74.579878 22.644148 0
+ 74.647312 23.934993 0
+ END$SEGS
+CORNU 1353 0 0 0 0 N 2 127.941355 92.146333 82.334008 0.000000 0.000000 0.000000 115.968750 90.942708 264.644386 0.000000 0.000000 0.000000
+ T4 643 127.941355 92.146333 82.334008 2 0.000000 0.000000 0.0 0.0 0 2 0 17.154077
+ T4 1354 115.968750 90.942708 264.644386 0 0.0 0.0 0.0 0.0 0 0 0 17.154077
+ W3 0 0.000000 127.941355 92.146333 125.953513 91.878768 123.960883 91.646265 121.962953 91.469114
+ SUBSEGS
+ C 0 0.000000 132.653917 110.024766 223.584750 172.237758 2.598924
+ SUBSEND
+ W3 0 0.000000 121.962953 91.469114 119.965024 91.291963 117.965762 91.129920 115.968750 90.942708
+ SUBSEGS
+ S 0 0.000000 121.962953 91.469114 115.968750 90.942708
+ SUBSEND
+ END$SEGS
+CORNU 1354 0 0 0 0 N 2 115.968750 90.942708 84.644386 0.000000 0.000000 0.000000 103.468750 90.005208 268.948325 82.737602 101.950170 172.728873
+ T4 1353 115.968750 90.942708 84.644386 0 0.0 0.0 0.0 0.0 0 0 0 17.195912
+ T4 1348 103.468750 90.005208 268.948325 0 0.0 0.0 0.0 0.0 0 0 0 17.195912
+ W3 0 0.000000 115.968750 90.942708 111.807450 90.552602 107.647592 90.081920 103.468750 90.005208
+ SUBSEGS
+ C 0 0.000000 685.623847 48.747907 773.263320 174.373492 0.524043
+ C 0 0.000000 94.987099 101.276003 184.966994 174.896661 3.780567
+ SUBSEND
+ END$SEGS
+DRAW 1355 13 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 127.291170 72.577634 1.957188 1 28.000000 "DEEP GORGE RIVER"
+ END$SEGS
+DRAW 1356 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5030474 0.000000 8 0
+ 152.540625 85.527083 2
+ 157.228125 85.214583 2
+ 163.665625 83.777083 2
+ 169.228125 80.402083 2
+ 167.728125 82.464583 2
+ 164.915625 84.089583 2
+ 161.228125 85.214583 2
+ 157.540625 85.777083 2
+ END$SEGS
+DRAW 1357 6 0 0 0 0.000000 7.625000 0 0.000000
+ F4 14592682 0.000000 17 0
+ 147.250000 57.781250 0
+ 149.926809 63.950932 2
+ 150.301809 65.575932 0
+ 151.676809 67.888432 0
+ 152.165625 68.286458 2
+ 152.739309 68.638432 2
+ 155.801809 68.450932 2
+ 157.165625 70.598958 0
+ 162.634375 68.411458 0
+ 162.000000 66.968750 0
+ 161.687500 66.406250 0
+ 155.426809 66.950932 1
+ 153.239309 67.575932 2
+ 152.478125 67.442708 2
+ 151.103125 65.380208 0
+ 150.801809 63.888432 2
+ 148.250000 57.843750 0
+ END$SEGS
+CORNU 1358 0 0 0 0 N 2 156.562500 72.069444 95.251893 65.965750 150.524357 6.380625 148.312500 71.819444 259.446118 23.485158 152.614044 48.731583
+ T4 507 156.562500 72.069444 95.251893 9 -1.088816 -1.108918 18.790617 18.790617 1 1 0 18.683614
+ T4 603 148.312500 71.819444 259.446118 0 0.0 0.0 0.0 0.0 0 0 0 18.683614
+ W3 0 0.000000 156.562500 72.069444 153.813547 72.322129 151.026342 72.325065 148.312500 71.819444
+ SUBSEGS
+ C 0 0.000000 -32.946591 153.260752 39.288713 354.948720 10.802841
+ C 0 0.000000 -23.767552 152.642705 48.449680 349.502667 4.985726
+ SUBSEND
+ END$SEGS
+DRAW 1359 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 4105019 0.000000 45 0
+ 152.312500 83.031250 2
+ 152.562500 82.531250 0
+ 153.681250 81.376042 0
+ 153.915625 80.850000 0
+ 154.118750 81.354167 0
+ 154.275000 81.729167 0
+ 154.056250 82.151042 0
+ 154.009375 82.604167 0
+ 154.493750 82.010417 0
+ 154.884375 82.416667 0
+ 155.150000 82.688542 0
+ 155.556250 83.282292 0
+ 155.431250 82.844792 0
+ 155.181250 82.282292 0
+ 154.743750 82.063542 0
+ 154.243750 81.001042 0
+ 154.681250 81.001042 0
+ 154.946875 81.151042 0
+ 155.134375 81.541667 2
+ 155.556250 81.563542 0
+ 155.993750 81.760417 0
+ 156.603125 82.354167 0
+ 157.556250 82.854167 0
+ 157.056250 82.322917 0
+ 156.650000 82.010417 0
+ 156.587500 81.916667 0
+ 157.087500 81.938542 0
+ 156.571875 81.682292 0
+ 156.087500 81.594792 0
+ 155.478125 81.354167 0
+ 155.118750 80.938542 0
+ 154.681250 80.760417 0
+ 154.056250 80.678125 0
+ 154.400000 80.271875 0
+ 154.728125 80.089583 2
+ 154.900000 78.751042 0
+ 154.775000 78.084375 2
+ 154.431250 77.251042 2
+ 155.790625 77.964583 2
+ 156.493750 79.907292 0
+ 158.056250 81.813542 2
+ 159.650000 83.448958 2
+ 156.650000 83.636458 0
+ 155.025000 83.907292 0
+ 151.000000 84.031250 2
+ END$SEGS
+DRAW 1360 13 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 152.243750 79.740625 0.000000 1 18.000000 "SKINNY DIP \nFALLS"
+ END$SEGS
+TURNOUT 1361 0 0 0 0 N 2 108.368426 77.382536 0 126.594501 "PECO Left ST6"
+ T4 1368 108.368426 77.382536 36.594501 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1362 106.326502 74.632532 216.594501 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1363 106.878478 74.222681 194.094501 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 3.425197 0.000000
+ C 0 0.000000 -7.094263 0.354309 7.094263 157.499924 22.500152
+ S 0 0.000000 3.069172 0.540025 3.425197 0.687500
+ END$SEGS
+CORNU 1362 0 0 0 0 N 2 106.326502 74.632532 36.594501 0.000000 0.000000 0.000000 102.566182 64.581646 181.493328 0.000000 0.000000 0.000000
+ T4 1361 106.326502 74.632532 36.594501 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 620 102.566182 64.581646 181.493328 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 106.326502 74.632532 105.780950 73.897798 105.234928 73.162333 104.741322 72.391740
+ SUBSEGS
+ C 0 0.000000 -39.800363 138.006657 50.540278 303.300266 3.952145
+ SUBSEND
+ W3 0 0.000000 104.741322 72.391740 104.247716 71.621148 103.808376 70.813581 103.469014 69.963702
+ SUBSEGS
+ C 0 0.000000 -14.475265 116.869172 64.489301 292.221615 10.866426
+ SUBSEND
+ W3 0 0.000000 103.469014 69.963702 103.129652 69.113823 102.893647 68.223454 102.758229 67.318400
+ SUBSEGS
+ C 0 0.000000 -11.876980 114.507241 65.579616 278.418328 13.243312
+ SUBSEND
+ W3 0 0.000000 102.758229 67.318400 102.622811 66.413346 102.590031 65.496464 102.566182 64.581646
+ SUBSEGS
+ C 0 0.000000 -22.426115 124.991418 64.383110 270.507239 7.013620
+ SUBSEND
+ END$SEGS
+CORNU 1363 0 0 0 0 N 2 106.878478 74.222681 14.094501 0.000000 0.000000 0.000000 106.500000 66.179276 178.465659 0.000000 0.000000 0.000000
+ T4 1361 106.878478 74.222681 14.094501 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 999 106.500000 66.179276 178.465659 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 106.878478 74.222681 106.714191 73.568360 106.558745 72.910626 106.466271 72.242363
+ SUBSEGS
+ C 0 0.000000 -18.659040 124.913016 69.435697 278.651185 6.214288
+ SUBSEND
+ W3 0 0.000000 106.466271 72.242363 106.373797 71.574101 106.340826 70.898506 106.345879 70.223895
+ SUBSEGS
+ C 0 0.000000 -13.963600 120.308319 70.403929 269.261261 8.304213
+ SUBSEND
+ W3 0 0.000000 106.345879 70.223895 106.355986 68.874672 106.463872 67.528053 106.500000 66.179276
+ SUBSEGS
+ C 0 0.000000 -79.819340 186.150388 71.762582 266.716299 2.179135
+ S 0 0.000000 106.462098 67.190529 106.500000 66.179276
+ SUBSEND
+ END$SEGS
+CORNU 1364 0 0 0 0 N 2 107.790625 78.751042 47.117666 23.522424 91.783734 95.987163 92.450495 74.529800 280.334248 0.000000 0.000000 0.000000
+ T4 1367 107.790625 78.751042 47.117666 0 0.0 0.0 0.0 0.0 0 0 0 16.628857
+ T4 268 92.450495 74.529800 280.334248 0 0.0 0.0 0.0 0.0 0 0 0 16.628857
+ W3 0 0.000000 107.790625 78.751042 106.773220 77.806195 105.673754 76.946774 104.489697 76.221612
+ SUBSEGS
+ C 0 0.000000 20.958081 93.455564 94.039834 136.843982 11.387691
+ SUBSEND
+ W3 0 0.000000 104.489697 76.221612 103.305641 75.496450 102.032524 74.910711 100.696958 74.531087
+ SUBSEGS
+ C 0 0.000000 15.304684 96.420143 89.226059 148.179459 15.593464
+ SUBSEND
+ W3 0 0.000000 100.696958 74.531087 99.361393 74.151463 97.967497 73.985490 96.579383 74.016911
+ SUBSEGS
+ C 0 0.000000 13.928469 96.931535 87.940928 164.315496 17.133263
+ SUBSEND
+ W3 0 0.000000 96.579383 74.016911 95.191268 74.048332 93.816441 74.280722 92.450495 74.529800
+ SUBSEGS
+ C 0 0.000000 21.825927 97.344906 95.829409 182.010008 8.198472
+ S 0 0.000000 93.476689 74.349000 92.450495 74.529800
+ SUBSEND
+ END$SEGS
+CORNU 1365 0 0 0 0 N 2 128.010990 91.628999 74.334008 0.000000 0.000000 0.000000 124.996845 90.429122 243.535977 0.000000 0.000000 0.000000
+ T4 643 128.010990 91.628999 74.334008 0 0.0 0.0 0.0 0.0 0 0 0 17.057189
+ T4 1366 124.996845 90.429122 243.535977 0 0.0 0.0 0.0 0.0 0 0 0 17.057189
+ W3 0 0.000000 128.010990 91.628999 127.489239 91.482675 126.970327 91.323377 126.468854 91.118048
+ SUBSEGS
+ C 0 0.000000 -14.112683 131.671188 77.999224 338.368954 6.599238
+ SUBSEND
+ W3 0 0.000000 126.468854 91.118048 125.967381 90.912718 125.481945 90.670604 124.996845 90.429122
+ SUBSEGS
+ C 0 0.000000 -22.194722 135.134657 70.684997 332.821331 4.196522
+ SUBSEND
+ END$SEGS
+TURNOUT 1366 0 0 0 0 N 2 124.996845 90.429122 0 153.535977 "Peco-80 Large Left SL-1737/389"
+ T4 1365 124.996845 90.429122 63.535977 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1367 119.357699 87.621967 243.535977 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1368 119.590321 87.154665 235.535977 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+CORNU 1367 0 0 0 0 N 2 119.357699 87.621967 63.535977 0.000000 0.000000 0.000000 107.790625 78.751042 227.117666 23.522424 91.783734 95.987163
+ T4 1366 119.357699 87.621967 63.535977 0 0.0 0.0 0.0 0.0 0 0 0 16.845734
+ T4 1364 107.790625 78.751042 227.117666 0 0.0 0.0 0.0 0.0 0 0 0 16.845734
+ W3 0 0.000000 119.357699 87.621967 118.262184 87.076622 117.167959 86.526260 116.113790 85.904743
+ SUBSEGS
+ C 0 0.000000 -51.832019 141.970562 40.982749 330.075583 4.058151
+ SUBSEND
+ W3 0 0.000000 116.113790 85.904743 115.059621 85.283227 114.046860 84.590728 113.093395 83.823617
+ SUBSEGS
+ C 0 0.000000 -25.366100 128.958170 64.030994 321.286085 8.292237
+ SUBSEND
+ W3 0 0.000000 113.093395 83.823617 112.139929 83.056506 111.247695 82.216050 110.384852 81.348261
+ SUBSEGS
+ C 0 0.000000 -33.157821 134.073680 58.147388 314.403777 6.343645
+ SUBSEND
+ W3 0 0.000000 110.384852 81.348261 109.522009 80.480473 108.687329 79.583795 107.790625 78.751042
+ SUBSEGS
+ C 0 0.000000 92.214192 43.857811 145.204427 133.826471 2.281009
+ SUBSEND
+ END$SEGS
+CORNU 1368 0 0 0 0 N 2 119.590321 87.154665 55.535977 0.000000 0.000000 0.000000 108.368426 77.382536 216.594501 0.000000 0.000000 0.000000
+ T4 1366 119.590321 87.154665 55.535977 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ T4 1361 108.368426 77.382536 216.594501 0 0.0 0.0 0.0 0.0 0 0 0 16.991015
+ W3 0 0.000000 119.590321 87.154665 117.530809 85.741105 115.417308 84.398839 113.463542 82.842387
+ SUBSEGS
+ S 0 0.000000 119.590321 87.154665 116.487277 85.052110
+ C 0 0.000000 -52.539257 145.955402 41.554947 321.798416 4.085030
+ SUBSEND
+ W3 0 0.000000 113.463542 82.842387 112.486660 82.064161 111.561323 81.219842 110.716125 80.300289
+ SUBSEGS
+ C 0 0.000000 -24.213087 128.484908 63.852070 312.789836 8.866120
+ SUBSEND
+ W3 0 0.000000 110.716125 80.300289 109.870928 79.380737 109.112999 78.385306 108.368426 77.382536
+ SUBSEGS
+ C 0 0.000000 -35.830248 137.419750 56.410478 305.825397 5.991310
+ SUBSEND
+ END$SEGS
+DRAW 1369 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 16776148 113.286161 44.390625 0.000000 1 56.000000 "LAKE ONDA"
+ END$SEGS
+DRAW 1370 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 1340433 0.000000 56 0
+ 153.587500 81.885417 0
+ 153.618750 81.572917 0
+ 153.900000 80.947917 2
+ 154.228125 81.416667 0
+ 154.384375 81.697917 0
+ 154.056250 82.307292 0
+ 154.056250 82.791667 0
+ 154.118750 82.479167 0
+ 154.321875 81.979167 0
+ 154.493750 81.947917 0
+ 154.759375 82.276042 0
+ 155.040625 82.572917 0
+ 155.353125 83.088542 2
+ 155.587500 83.494792 0
+ 155.571875 83.151042 0
+ 155.337500 82.447917 0
+ 155.025000 82.026042 0
+ 154.806250 81.994792 0
+ 154.806250 81.994792 0
+ 154.681250 81.635417 0
+ 154.275000 80.916667 2
+ 154.946875 81.541667 0
+ 155.556250 81.682292 0
+ 156.243750 81.932292 0
+ 156.837500 82.479167 0
+ 157.290625 82.651042 0
+ 157.400000 82.760417 0
+ 157.165625 82.385417 0
+ 156.712500 82.197917 0
+ 156.400000 81.885417 0
+ 156.650000 81.916667 0
+ 157.493750 82.182292 0
+ 157.150000 81.994792 0
+ 156.650000 81.729167 0
+ 155.587500 81.307292 0
+ 154.962500 80.760417 0
+ 154.321875 80.541667 0
+ 154.696875 80.072917 2
+ 154.884375 79.322917 2
+ 154.946875 78.729167 2
+ 155.431250 79.010417 2
+ 155.681250 79.854167 0
+ 155.915625 80.635417 0
+ 157.525000 81.666667 0
+ 157.821875 82.291667 0
+ 158.181250 82.979167 2
+ 158.150000 83.322917 0
+ 157.587500 83.354167 0
+ 156.743750 83.010417 2
+ 156.431250 83.432292 0
+ 155.275000 83.713542 0
+ 154.243750 83.791667 0
+ 153.712500 83.713542 2
+ 153.025000 83.479167 2
+ 153.493750 82.869792 0
+ 153.368750 82.151042 0
+ END$SEGS
+STRUCTURE 1371 7 0 0 0 N 2 155.687500 80.950110 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1372 7 0 0 0 N 2 152.500000 82.387610 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1373 7 0 0 0 N 2 155.812500 81.700110 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1374 7 0 0 0 N 2 154.265625 80.981360 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1375 7 0 0 0 N 2 154.562500 79.200110 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+DRAW 1376 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 8745586 0.053333 4 0
+ 162.238139 82.943730 0
+ 162.703389 82.760583 0
+ 161.970801 80.899585 0
+ 161.505552 81.082732 0
+ END$SEGS
+DRAW 1377 5 3 0 0 0.000000 0.000000 0 0.000000
+ L3 525059 0.041667 158.861624 82.210431 0 165.077945 79.583037 0
+ END$SEGS
+DRAW 1378 5 3 0 0 0.000000 0.000000 0 0.000000
+ L3 526344 0.041667 158.687236 81.652898 0 163.863158 79.484824 0
+ END$SEGS
+DRAW 1379 5 3 0 0 0.000000 0.000000 0 0.000000
+ L3 525059 0.041667 159.125212 81.406140 0 157.790991 78.131723 0
+ END$SEGS
+DRAW 1380 5 3 0 0 0.000000 0.000000 0 0.000000
+ L3 525059 0.041667 164.053960 80.033233 0 162.492178 76.212660 0
+ END$SEGS
+DRAW 1381 5 3 0 0 0.000000 0.000000 0 0.000000
+ L3 852739 0.041667 161.531231 80.471991 0 160.197011 77.197574 0
+ END$SEGS
+DRAW 1382 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 7495519 0.000000 4 0
+ 143.661600 85.052510 0
+ 147.160602 85.201771 0
+ 147.208548 84.077793 0
+ 143.709547 83.928531 0
+ END$SEGS
+CORNU 1383 0 0 0 0 N 2 151.043157 86.189064 88.173410 0.000000 0.000000 2.500000 146.871282 86.074481 268.173410 0.000000 0.000000 2.500000
+ T4 973 151.043157 86.189064 88.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.314979
+ T4 1552 146.871282 86.074481 268.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.314979
+ W3 0 0.000000 151.043157 86.189064 149.652709 86.144721 148.261730 86.118824 146.871282 86.074481
+ SUBSEGS
+ S 0 0.000000 151.043157 86.189064 146.871282 86.074481
+ SUBSEND
+ END$SEGS
+CORNU 1384 0 0 0 0 N 2 138.445154 84.140963 267.244904 0.000000 0.000000 2.500000 150.990528 84.789035 88.475256 45.394650 152.198419 39.410458
+ T4 104 138.445154 84.140963 267.244904 0 0.0 0.0 0.0 0.0 0 0 0 15.343068
+ T4 974 150.990528 84.789035 88.475256 0 0.0 0.0 0.0 0.0 0 0 0 15.343068
+ W3 0 0.000000 138.445154 84.140963 142.627772 84.342241 146.804552 84.677612 150.990528 84.789035
+ SUBSEGS
+ C 0 0.000000 -589.446526 108.012974 672.801383 176.430002 0.610593
+ C 0 0.000000 195.468904 156.888454 -110.590869 356.429875 1.841064
+ SUBSEND
+ END$SEGS
+DRAW 1385 5 0 0 0 0.000000 0.000000 0 0.000000
+ L3 788231 0.041667 157.243750 78.291667 0 157.368750 77.979167 0
+ END$SEGS
+DRAW 1386 5 0 0 0 0.000000 0.000000 0 0.000000
+ L3 788231 0.041667 158.681250 81.666667 0 159.290625 81.645833 0
+ END$SEGS
+STRUCTURE 1387 5 0 0 0 N 2 163.843738 75.586873 0 0.000000 "AMB Feeder barn 617"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 10 0
+ 1.491592 4.673421 0
+ 0.962512 3.329793 0
+ 0.181262 3.079793 0
+ 0.571887 2.267293 0
+ 0.057475 0.939347 0
+ 2.503294 0.000000 0
+ 3.025012 1.361043 0
+ 3.931262 1.642293 0
+ 3.415637 2.392293 0
+ 3.937411 3.734074 0
+ L3 0 0.052083 3.931262 1.626668 0 0.009387 3.142293 0
+ Y4 0 0.052083 10 0
+ 3.946086 1.621785 0
+ 3.433229 2.421314 0
+ 3.962512 3.736043 0
+ 1.525012 4.673543 0
+ 0.987411 3.360660 0
+ 0.155416 3.078169 0
+ 0.572861 2.281280 0
+ 0.079883 0.997692 0
+ 2.525012 0.048543 0
+ 3.029883 1.371105 0
+ L3 0 0.052083 3.618762 2.845418 0 1.170183 3.797442 0
+ L3 0 0.052083 2.873027 0.962691 0 0.446887 1.892293 0
+ END$SEGS
+STRUCTURE 1388 5 0 0 0 N 2 86.878788 63.330104 0 26.048222 "Dimi trains freight depot 1002"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.750000 0
+ 5.500000 1.750000 0
+ 5.500000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 1389 5 0 0 0 87.925705 63.913868 0 24.723800
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "team freight depot storage"
+ END$SEGS
+STRUCTURE 1390 5 0 0 0 N 2 88.511369 66.230424 0 16.417924 "Gloor craft cash and carry lumber main 201 A"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 2.844497 0
+ 2.963016 3.314111 0
+ 3.413834 0.469614 0
+ 0.450818 0.000000 0
+ END$SEGS
+DRAW 1391 5 0 0 0 89.448217 67.712972 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "LUMBER YARD\nSALES and\n SHOWROOM"
+ END$SEGS
+DRAW 1392 5 0 0 0 86.226697 68.205747 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "LUMBER YARD"
+ END$SEGS
+DRAW 1393 5 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 82.193997 69.023438 0.000000 0 18.000000 "LUMBER \nYARD \nSTORAGE"
+ END$SEGS
+DRAW 1394 5 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 86.939524 49.226593 348.959060 0 18.000000 " VALUE \nFUEL and OIL"
+ END$SEGS
+DRAW 1395 0 0 0 0 103.750157 48.341816 0 98.925592
+ L3 12632256 0.062500 0.312500 0.036325 0 3.000000 0.036325 0
+ END$SEGS
+DRAW 1396 0 0 0 0 103.750157 48.341816 0 0.000000
+ L3 12632256 0.062500 -0.427146 -2.953872 0 1.347970 -3.232660 0
+ END$SEGS
+DRAW 1397 5 0 0 0 103.720827 47.444719 0 0.000000
+ Z 16383137 0.000000 0.000000 0.000000 0 18.000000 "PHARMACY\n SHOE STORE\n- SHOE REPAIR\n OFFICES \nUPSTAIRS"
+ END$SEGS
+DRAW 1398 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14601163 0.000000 7 0
+ 106.787747 54.051672 0
+ 107.100247 54.004797 0
+ 106.475247 49.504797 2
+ 105.772122 49.614172 0
+ 103.522122 49.957922 0
+ 103.568997 50.286047 0
+ 106.193997 49.879797 0
+ END$SEGS
+DRAW 1399 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14601163 0.000000 10 0
+ 103.787747 48.447505 0
+ 106.100247 48.072505 2
+ 105.975247 47.181880 0
+ 105.006497 40.921464 2
+ 104.287747 41.046464 0
+ 101.912747 41.515214 0
+ 101.975247 41.827714 0
+ 104.693997 41.353755 0
+ 105.662747 47.806880 0
+ 103.725247 48.135005 0
+ END$SEGS
+STRUCTURE 1400 5 0 0 0 N 2 103.287291 44.989118 0 0.000000 "Design Preservations Models Corner Turret Building 513"
+ D 0.000000 0.000000
+ F4 8421504 0.000000 4 0
+ 0.446061 3.150489 0
+ 0.000000 0.310303 0
+ 1.975781 0.000000 0
+ 2.421842 2.840186 0
+ F4 0 0.000000 4 0
+ 0.390550 2.557413 0
+ 0.390550 2.557413 0
+ 0.390550 2.557413 0
+ 0.390550 2.557413 0
+ G3 16119285 0.000000 0.312500 2.225382 2.697059 0
+ L3 0 0.000000 2.273867 3.005774 0 2.179321 2.403779 0
+ L3 0 0.000000 2.518662 2.650998 0 1.885795 2.750392 0
+ L3 0 0.000000 2.444551 2.884069 0 1.972917 2.499461 0
+ L3 0 0.000000 2.412392 2.477890 0 2.043220 2.947099 0
+ F4 15132390 0.000000 4 0
+ 0.344243 2.502186 0
+ 0.320000 2.347828 0
+ 0.458922 2.326010 0
+ 0.483165 2.480368 0
+ F4 15132390 0.000000 4 0
+ 0.121835 1.118765 0
+ 0.097592 0.964408 0
+ 0.236514 0.942589 0
+ 0.260757 1.096947 0
+ END$SEGS
+STRUCTURE 1401 5 0 0 0 N 2 109.152411 48.806943 0 16.008613 "Grandt Line Reese st house 8023"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 1.851091 0.000000 0
+ 2.050075 1.234060 0
+ 0.198985 1.532537 0
+ 0.000000 0.298477 0
+ L3 329479 0.010417 0.099491 0.915507 0 1.950582 0.617030 0
+ END$SEGS
+STRUCTURE 1402 5 0 0 0 N 2 112.373936 54.024131 0 30.097346 "Grandt Line Reese st house 8023"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 1.851091 0.000000 0
+ 2.050075 1.234060 0
+ 0.198985 1.532537 0
+ 0.000000 0.298477 0
+ L3 329479 0.010417 0.099491 0.915507 0 1.950582 0.617030 0
+ END$SEGS
+DRAW 1403 5 6 0 0 0.000000 0.000000 0 0.000000
+ Y4 10040985 0.041667 4 1
+ 207.298539 49.747107 0
+ 212.787203 43.926921 0
+ 210.240872 41.525630 0
+ 204.752207 47.345816 0
+ END$SEGS
+DRAW 1404 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 13684944 0.040000 5 0
+ 52.933036 75.904057 2
+ 57.839286 77.122807 0
+ 58.339286 75.060307 0
+ 52.808036 73.716557 0
+ 52.620536 74.779057 2
+ END$SEGS
+DRAW 1405 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16744703 0.000000 4 0
+ 53.645871 75.215042 0
+ 57.872522 76.344665 0
+ 58.162997 75.257812 0
+ 53.936346 74.128189 0
+ END$SEGS
+DRAW 1406 5 0 0 0 0.000000 0.000000 0 0.000000
+ L3 0 0.041667 53.770749 74.726694 0 58.000084 75.846224 0
+ END$SEGS
+DRAW 1407 6 0 0 0 123.777064 -44.557372 0 0.000000
+ F4 13684944 0.083333 5 0
+ -23.973694 93.695392 0
+ -21.911193 93.101643 0
+ -21.114319 96.257893 2
+ -21.145569 98.820392 0
+ -22.223694 99.164142 0
+ END$SEGS
+DRAW 1408 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16744703 0.000000 4 0
+ 100.558014 50.936481 0
+ 101.307775 53.396968 0
+ 102.383920 53.069045 0
+ 101.634161 50.608557 0
+ END$SEGS
+DRAW 1409 5 0 0 0 0.000000 0.000000 0 0.000000
+ L3 0 0.041667 101.084622 50.778646 0 101.834622 53.231771 0
+ END$SEGS
+DRAW 1410 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14538954 0.000000 24 0
+ 214.724499 32.397615 2
+ 211.661999 33.022615 0
+ 209.911999 30.960115 0
+ 206.599499 29.210115 2
+ 205.161999 29.460115 0
+ 204.141440 31.161047 2
+ 204.203940 32.004797 2
+ 206.766440 34.473547 2
+ 207.828940 36.192297 0
+ 206.235190 36.192297 0
+ 203.985190 33.879797 2
+ 203.391440 33.911047 2
+ 201.828940 35.911047 0
+ 200.110190 36.098547 0
+ 202.578940 32.098547 2
+ 202.661999 31.210115 0
+ 203.474499 28.022615 0
+ 202.974499 25.897615 0
+ 202.911999 23.147615 0
+ 197.724499 19.147615 2
+ 198.536999 17.397615 2
+ 203.911999 17.897615 2
+ 211.911999 20.460115 2
+ 215.724499 25.085115 2
+ END$SEGS
+DRAW 1411 7 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 6708059 0.080000 31 2
+ 207.224499 29.460115 0
+ 208.661999 29.397615 0
+ 209.661999 30.397615 0
+ 210.161999 30.835115 0
+ 210.974499 31.772615 0
+ 211.786999 32.335115 0
+ 213.099499 32.397615 0
+ 213.974499 31.772615 0
+ 214.536999 30.647615 0
+ 214.536999 28.772615 0
+ 214.911999 27.397615 0
+ 214.849499 25.772615 0
+ 214.286999 24.147615 0
+ 213.349499 22.897615 0
+ 212.411999 21.960115 0
+ 211.724499 21.460115 0
+ 210.786999 20.710115 0
+ 208.099499 19.647615 0
+ 207.036999 19.210115 0
+ 206.224499 18.460115 0
+ 204.286999 18.522615 0
+ 202.286999 18.210115 0
+ 199.724499 17.710115 0
+ 198.599499 18.210115 0
+ 198.474499 18.897615 0
+ 199.349499 20.022615 0
+ 200.599499 20.960115 0
+ 201.661999 21.960115 0
+ 203.536999 22.460115 0
+ 203.224499 23.585115 0
+ 203.161999 25.460115 0
+ END$SEGS
+DRAW 1412 7 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 6708059 0.080000 18 2
+ 206.141440 29.254797 0
+ 207.078940 28.379797 0
+ 209.360190 27.598547 2
+ 210.828940 27.817297 0
+ 211.578940 29.536047 0
+ 212.485190 29.848547 2
+ 212.766440 26.629797 0
+ 212.016440 25.504797 0
+ 211.266440 24.567297 2
+ 209.891440 23.567297 0
+ 209.016440 22.567297 0
+ 208.016440 22.348547 2
+ 206.235190 21.379797 0
+ 205.047690 21.192297 2
+ 206.141440 23.067297 2
+ 205.266440 25.286047 0
+ 204.110190 26.692297 0
+ 203.516440 28.004797 0
+ END$SEGS
+DRAW 1413 7 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 6708059 0.080000 30 2
+ 206.516440 29.192297 0
+ 208.828940 28.223547 0
+ 209.828940 28.192297 2
+ 210.703940 28.723547 0
+ 210.953940 29.661047 0
+ 211.422690 30.442297 0
+ 212.078940 30.911047 2
+ 212.641440 30.504797 2
+ 213.172690 30.379797 2
+ 213.391440 29.536047 0
+ 213.141440 28.661047 0
+ 213.516440 27.348547 2
+ 213.266440 25.661047 2
+ 212.891440 25.161047 0
+ 212.016440 24.036047 0
+ 211.328940 22.911047 2
+ 210.578940 22.661047 2
+ 209.453940 21.817297 0
+ 208.078940 21.442297 2
+ 206.453940 20.692297 0
+ 204.985190 19.817297 2
+ 203.516440 19.692297 0
+ 201.953940 19.723547 2
+ 202.391440 20.254797 0
+ 202.641440 20.942297 0
+ 204.610190 21.598547 0
+ 205.078940 23.223547 0
+ 204.453940 24.754797 0
+ 203.453940 26.536047 0
+ 203.516440 27.379797 0
+ END$SEGS
+DRAW 1414 7 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 6708059 0.080000 34 2
+ 207.203940 29.442297 0
+ 209.610190 28.504797 2
+ 210.110190 29.754797 2
+ 210.797690 30.536047 2
+ 211.431828 31.358076 0
+ 212.087091 31.747176 0
+ 212.828940 31.379797 2
+ 213.703940 30.817297 0
+ 213.922690 30.067297 2
+ 213.860190 28.379797 2
+ 214.141440 26.973547 0
+ 214.078940 25.629797 0
+ 213.141440 24.379797 2
+ 212.641440 23.504797 0
+ 211.828940 22.692297 2
+ 210.985190 21.942297 2
+ 210.328940 21.629797 0
+ 209.641440 21.067297 0
+ 207.516440 20.411047 0
+ 206.235190 19.754797 0
+ 205.703940 19.317297 0
+ 204.360190 19.317297 2
+ 201.953940 19.004797 0
+ 200.453940 18.661047 2
+ 199.922690 19.067297 2
+ 199.922690 19.254797 0
+ 200.641440 19.879797 0
+ 201.453940 20.442297 2
+ 202.020402 21.435931 0
+ 204.328940 22.036047 2
+ 203.953940 23.098547 0
+ 203.820136 23.725195 0
+ 203.828940 24.754797 2
+ 203.266440 26.067297 0
+ END$SEGS
+DRAW 1415 7 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 6708059 0.080000 32 2
+ 206.797690 29.254797 0
+ 209.110360 28.502848 0
+ 210.453940 28.911047 2
+ 210.985190 30.379797 0
+ 211.706296 31.114001 0
+ 212.203940 31.254797 2
+ 212.641440 30.754797 2
+ 213.266440 30.817297 2
+ 213.588261 30.260514 0
+ 213.735190 29.567297 0
+ 213.453940 28.379797 0
+ 213.952245 27.194040 2
+ 213.547690 25.661047 0
+ 212.672690 24.379797 0
+ 211.860190 23.254797 0
+ 211.485190 22.692297 0
+ 210.485190 22.286047 2
+ 209.578940 21.379797 0
+ 207.485190 20.786047 0
+ 206.078940 20.129797 0
+ 205.578940 19.567297 2
+ 204.142915 19.461623 0
+ 201.828940 19.379797 0
+ 201.016440 19.004797 2
+ 200.641440 19.629797 2
+ 201.453940 19.817297 0
+ 201.953940 20.442297 0
+ 202.244827 21.137962 0
+ 204.670083 21.919785 2
+ 204.641440 23.473547 0
+ 204.266440 24.129797 0
+ 203.328940 26.317297 0
+ END$SEGS
+DRAW 1416 7 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 6708059 0.080000 19 2
+ 204.078940 31.254797 0
+ 205.266440 29.192297 0
+ 206.828940 28.004797 0
+ 209.353173 27.243642 2
+ 210.703940 27.223547 0
+ 211.266440 27.536047 0
+ 211.766440 28.254797 2
+ 212.078940 27.629797 2
+ 212.203940 26.692297 2
+ 211.328940 25.629797 0
+ 210.422690 24.879797 2
+ 209.078940 23.629797 0
+ 207.891440 22.754797 2
+ 206.485190 22.473547 2
+ 206.504435 23.100866 2
+ 206.141440 24.567297 0
+ 205.235190 26.223547 0
+ 204.266440 27.629797 0
+ 202.703940 31.317297 0
+ END$SEGS
+DRAW 1417 7 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 6708059 0.080000 16 2
+ 203.703940 31.223547 0
+ 204.828940 28.723547 0
+ 205.985190 27.817297 0
+ 208.578940 26.942297 2
+ 210.453940 26.879797 0
+ 211.578940 26.692297 2
+ 211.078940 26.254797 0
+ 210.422690 25.911047 2
+ 209.485190 24.629797 0
+ 208.547690 23.879797 0
+ 207.891440 23.254797 2
+ 207.071236 23.426821 2
+ 206.735190 24.254797 2
+ 206.422690 25.442297 2
+ 205.078940 27.254797 0
+ 203.235190 31.129797 0
+ END$SEGS
+DRAW 1418 7 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 6708059 0.080000 31 2
+ 207.215812 29.260304 0
+ 208.752539 29.205312 0
+ 209.808828 30.260336 0
+ 210.323844 30.716483 0
+ 211.122797 31.632031 0
+ 211.877028 32.139176 0
+ 213.054819 32.183749 0
+ 213.827593 31.619213 0
+ 214.336999 30.582371 0
+ 214.339928 28.735091 0
+ 214.710417 27.360336 0
+ 214.646536 25.797693 0
+ 214.100859 24.232762 0
+ 213.188666 23.019625 0
+ 212.269138 22.103515 0
+ 211.584395 21.604157 0
+ 210.669331 20.878658 0
+ 208.018158 19.830413 0
+ 206.914728 19.369431 0
+ 206.127670 18.663343 0
+ 204.263902 18.721433 0
+ 202.242767 18.405256 0
+ 199.740299 17.921956 0
+ 198.773252 18.372508 0
+ 198.714433 18.880337 0
+ 199.503592 19.888185 0
+ 200.737973 20.815793 0
+ 201.776598 21.783686 0
+ 203.778329 22.338589 0
+ 203.423090 23.630717 0
+ 203.359993 25.488373 0
+ END$SEGS
+DRAW 1419 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 3249396 0.000000 7 0
+ 207.235190 26.379797 2
+ 207.047690 25.817297 0
+ 207.391440 24.973547 0
+ 208.016440 24.786047 0
+ 208.672690 25.317297 0
+ 208.985190 25.973547 2
+ 208.266440 26.286047 0
+ END$SEGS
+DRAW 1420 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 13684944 0.000000 16 0
+ 69.214000 78.091557 0
+ 69.339000 77.247807 0
+ 67.807750 76.872807 2
+ 63.589000 75.747807 0
+ 62.432750 75.435307 0
+ 62.182750 76.091557 0
+ 60.589000 75.654057 0
+ 60.714000 74.966557 0
+ 58.182750 74.279057 0
+ 58.182750 74.279057 0
+ 54.089000 73.279057 0
+ 53.901500 74.091557 0
+ 52.839000 73.810307 0
+ 53.151500 72.279057 0
+ 70.714000 76.654057 0
+ 70.339000 78.404057 0
+ END$SEGS
+CORNU 1421 0 0 0 0 N 2 61.312500 75.500000 74.425589 169.691317 106.872859 -87.960688 52.437500 73.250000 256.396206 421.587068 -46.722510 483.009623
+ T4 1422 61.312500 75.500000 74.425589 0 0.0 0.0 0.0 0.0 0 0 0 15.977693
+ T4 227 52.437500 73.250000 256.396206 0 0.0 0.0 0.0 0.0 0 0 0 15.977693
+ W3 0 0.000000 61.312500 75.500000 58.372342 74.680508 55.404099 73.967904 52.437500 73.250000
+ SUBSEGS
+ C 0 0.000000 266.216081 -8.537042 332.389166 164.788722 1.970628
+ SUBSEND
+ END$SEGS
+CORNU 1422 0 0 0 0 N 2 61.312500 75.500000 254.425589 169.691317 106.872859 -87.960688 79.576600 77.142637 104.334248 0.000000 0.000000 6.000000
+ T4 1421 61.312500 75.500000 254.425589 0 0.0 0.0 0.0 0.0 0 0 0 16.188729
+ T4 271 79.576600 77.142637 104.334248 0 0.0 0.0 0.0 0.0 0 0 0 16.188729
+ W3 0 0.000000 61.312500 75.500000 62.810399 75.917500 64.308726 76.333495 65.808630 76.743733
+ SUBSEGS
+ S 0 0.000000 61.312500 75.500000 65.808630 76.743733
+ SUBSEND
+ W3 0 0.000000 65.808630 76.743733 67.308534 77.153972 68.816188 77.546766 70.351084 77.795973
+ SUBSEGS
+ C 0 0.000000 44.012712 77.998268 34.452699 343.921315 6.072794
+ SUBSEND
+ W3 0 0.000000 70.351084 77.795973 71.885979 78.045181 73.449533 78.136921 74.999355 78.010192
+ SUBSEGS
+ C 0 0.000000 19.254343 73.555131 58.810089 350.421052 13.880612
+ SUBSEND
+ W3 0 0.000000 74.999355 78.010192 76.549177 77.883462 78.070016 77.527620 79.576600 77.142637
+ SUBSEGS
+ C 0 0.000000 23.240600 72.825587 54.871475 5.366903 8.622329
+ S 0 0.000000 78.443759 77.422786 79.576600 77.142637
+ SUBSEND
+ END$SEGS
+DRAW 1423 7 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 12632256 0.041667 4 1
+ 87.450984 62.660719 0
+ 87.450984 62.660719 0
+ 87.450984 62.660719 0
+ 87.450984 62.660719 0
+ END$SEGS
+STRUCTURE 1424 7 0 0 0 N 2 85.393742 58.142346 0 26.216882 "Gloor craft SUNSET FIREWORKS (Morton hardware and auto supply) 200"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 6 0
+ 5.859395 0.000000 0
+ 5.872258 3.874979 0
+ 3.005777 3.863430 0
+ 2.990152 4.472805 0
+ 0.037027 4.472805 0
+ 0.000000 0.003827 0
+ F4 12632256 0.000000 4 0
+ 0.014180 4.275172 0
+ 0.014180 4.275172 0
+ 0.014180 4.275172 0
+ 0.014180 4.275172 0
+ L3 525059 0.041667 0.661076 1.899755 0 5.865699 1.899005 0
+ Y4 0 0.000000 8 2
+ 0.037027 4.457180 0
+ 0.005777 0.035305 0
+ 0.646402 0.004055 0
+ 0.662027 3.816555 0
+ 0.037027 4.472805 0
+ 3.005777 4.457180 0
+ 3.005777 3.847805 0
+ 0.662027 3.847805 0
+ END$SEGS
+DRAW 1425 5 0 0 0 88.848171 60.025274 0 27.758541
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "MORTON HARDWARE\nand\nAUTO PARTS SUPPLY"
+ END$SEGS
+TURNOUT 1426 2 0 0 0 N 2 63.175026 76.656987 0 3.163923 "Peco-80 Large Right SL-1736/388"
+ T4 455 63.175026 76.656987 273.163923 0 0.0 0.0 0.0 0.0 0 0 0 0.871232
+ T4 1459 69.464637 76.309315 93.163923 0 0.0 0.0 0.0 0.0 0 0 0 0.871232
+ T4 1460 69.435826 75.788111 101.163923 0 0.0 0.0 0.0 0.0 0 0 0 0.871232
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 31.901195 0.354173 -31.901195 0.000076 8.000152
+ S 0 0.000000 4.794168 -0.310471 6.299213 -0.522000
+ END$SEGS
+TURNOUT 1427 2 0 0 0 N 2 73.586619 74.729756 0 18.749995 "Peco-80 Curved Right SL-1734/386"
+ T4 1460 73.586619 74.729756 288.749995 0 0.0 0.0 0.0 0.0 0 0 0 0.661593
+ T4 1457 79.228611 72.258264 118.564995 0 0.0 0.0 0.0 0.0 0 0 0 0.661593
+ T4 1428 78.977309 71.794759 128.382995 0 0.0 0.0 0.0 0.0 0 0 0 0.661593
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 2 5 6 7
+ C 0 0.000000 35.984252 0.000000 -35.984252 0.000000 0.318449
+ S 0 0.000000 0.199999 -0.000556 0.249998 -0.000732
+ C 0 0.000000 35.417758 0.050634 -35.417928 0.322516 9.248991
+ C 0 0.000000 35.984252 0.002864 -35.984333 9.496551 0.318449
+ C 0 0.000000 16.099920 0.301422 -16.100570 359.816995 10.181213
+ C 0 0.000000 19.147709 -0.432227 -19.064875 10.620177 8.562309
+ C 0 0.000000 17.992126 0.002783 -17.992594 18.996102 0.636898
+ END$SEGS
+CORNU 1428 2 0 0 0 N 2 78.977309 71.794759 308.382995 17.992126 67.805726 57.691132 86.591153 54.946759 179.957980 0.000000 0.000000 0.000000
+ T4 1427 78.977309 71.794759 308.382995 0 0.0 0.0 0.0 0.0 0 0 0 0.372266
+ T4 453 86.591153 54.946759 179.957980 0 0.0 0.0 0.0 0.0 0 0 0 0.372266
+ W3 0 0.000000 78.977309 71.794759 80.234272 70.799110 81.365002 69.647388 82.368277 68.396503
+ SUBSEGS
+ C 0 0.000000 21.415282 65.609180 55.064324 38.625923 12.871162
+ SUBSEND
+ W3 0 0.000000 82.368277 68.396503 83.371551 67.145619 84.243039 65.785582 84.918376 64.331211
+ SUBSEGS
+ C 0 0.000000 19.963083 66.854661 55.832570 50.997201 13.806689
+ SUBSEND
+ W3 0 0.000000 84.918376 64.331211 85.593712 62.876841 86.062137 61.327493 86.313489 59.743796
+ SUBSEGS
+ C 0 0.000000 17.371843 69.154713 57.031359 65.152044 15.865045
+ SUBSEND
+ W3 0 0.000000 86.313489 59.743796 86.564841 58.160100 86.589977 56.550277 86.591153 54.946759
+ SUBSEGS
+ C 0 0.000000 25.517056 61.065774 56.046088 81.667861 8.098652
+ S 0 0.000000 86.582618 56.150073 86.591153 54.946759
+ SUBSEND
+ END$SEGS
+TURNOUT 1429 2 0 0 0 N 2 152.469739 77.027100 0 176.636185 "Peco-80 Large Left SL-1737/389"
+ T4 466 152.469739 77.027100 86.636185 0 0.0 0.0 0.0 0.0 0 0 0 0.927810
+ T4 1456 146.181379 76.657488 266.636185 0 0.0 0.0 0.0 0.0 0 0 0 0.927810
+ T4 1430 146.212008 76.136388 258.636185 0 0.0 0.0 0.0 0.0 0 0 0 0.927810
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+CORNU 1430 2 0 0 0 N 2 146.212008 76.136388 78.636185 0.000000 0.000000 0.000000 137.629781 73.053284 238.844672 35.984252 156.246592 42.259117
+ T4 1429 146.212008 76.136388 78.636185 0 0.0 0.0 0.0 0.0 0 0 0 0.764511
+ T4 1431 137.629781 73.053284 238.844672 0 0.0 0.0 0.0 0.0 0 0 0 0.764511
+ W3 0 0.000000 146.212008 76.136388 144.712325 75.834984 143.210658 75.520129 141.763564 75.024337
+ SUBSEGS
+ C 0 0.000000 -44.645345 154.536652 32.274023 344.836046 4.417593
+ C 0 0.000000 -21.004031 148.547696 55.146086 341.156038 3.127631
+ SUBSEND
+ W3 0 0.000000 141.763564 75.024337 140.316469 74.528544 138.938824 73.844675 137.629781 73.053284
+ SUBSEGS
+ C 0 0.000000 -21.490684 148.893472 54.750859 328.390999 12.232917
+ SUBSEND
+ END$SEGS
+TURNOUT 1431 2 0 0 0 N 2 137.629781 73.053284 0 148.844672 "Peco-80 Curved Left SL-1735/387"
+ T4 1430 137.629781 73.053284 58.844672 0 0.0 0.0 0.0 0.0 0 0 0 0.600351
+ T4 1480 132.650458 69.427448 229.029672 0 0.0 0.0 0.0 0.0 0 0 0 0.600351
+ T4 1470 132.995466 69.028751 219.211672 0 0.0 0.0 0.0 0.0 0 0 0 0.600351
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 2 5 6 7
+ C 0 0.000000 -35.984252 0.000000 35.984252 179.681551 0.318449
+ S 0 0.000000 0.199999 0.000556 0.249998 0.000732
+ C 0 0.000000 -35.417758 0.050634 35.417928 170.428493 9.248991
+ C 0 0.000000 -35.984252 0.002864 35.984333 170.185000 0.318449
+ C 0 0.000000 -16.099920 0.301422 16.100570 170.001792 10.181213
+ C 0 0.000000 -19.147709 -0.432227 19.064875 160.817514 8.562309
+ C 0 0.000000 -17.992126 0.002783 17.992594 160.367000 0.636898
+ END$SEGS
+TURNOUT 1432 2 0 0 0 N 2 135.761871 74.567268 0 153.316456 "Peco-80 Curved Left SL-1735/387"
+ T4 1456 135.761871 74.567268 63.316456 0 0.0 0.0 0.0 0.0 0 0 0 0.916544
+ T4 1492 130.515005 71.340697 233.501456 0 0.0 0.0 0.0 0.0 0 0 0 0.916544
+ T4 1482 130.827877 70.916315 223.683456 0 0.0 0.0 0.0 0.0 0 0 0 0.916544
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 2 5 6 7
+ C 0 0.000000 -35.984252 0.000000 35.984252 179.681551 0.318449
+ S 0 0.000000 0.199999 0.000556 0.249998 0.000732
+ C 0 0.000000 -35.417758 0.050634 35.417928 170.428493 9.248991
+ C 0 0.000000 -35.984252 0.002864 35.984333 170.185000 0.318449
+ C 0 0.000000 -16.099920 0.301422 16.100570 170.001792 10.181213
+ C 0 0.000000 -19.147709 -0.432227 19.064875 160.817514 8.562309
+ C 0 0.000000 -17.992126 0.002783 17.992594 160.367000 0.636898
+ END$SEGS
+TURNOUT 1433 2 0 0 0 N 2 78.686439 74.586049 0 20.512588 "Peco-80 Curved Right SL-1734/386"
+ T4 1459 78.686439 74.586049 290.512588 0 0.0 0.0 0.0 0.0 0 0 0 0.881729
+ T4 1490 84.249743 71.942189 120.327588 0 0.0 0.0 0.0 0.0 0 0 0 0.881729
+ T4 1483 83.984303 71.486633 130.145588 0 0.0 0.0 0.0 0.0 0 0 0 0.881729
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 2 5 6 7
+ C 0 0.000000 35.984252 0.000000 -35.984252 0.000000 0.318449
+ S 0 0.000000 0.199999 -0.000556 0.249998 -0.000732
+ C 0 0.000000 35.417758 0.050634 -35.417928 0.322516 9.248991
+ C 0 0.000000 35.984252 0.002864 -35.984333 9.496551 0.318449
+ C 0 0.000000 16.099920 0.301422 -16.100570 359.816995 10.181213
+ C 0 0.000000 19.147709 -0.432227 -19.064875 10.620177 8.562309
+ C 0 0.000000 17.992126 0.002783 -17.992594 18.996102 0.636898
+ END$SEGS
+TURNOUT 1434 2 0 0 0 N 2 91.403371 46.270935 0 89.601799 "Peco-80 Large Left SL-1737/389"
+ T4 1491 91.403371 46.270935 359.601799 0 0.0 0.0 0.0 0.0 0 0 0 0.893008
+ T4 1495 91.447150 39.971874 179.601799 0 0.0 0.0 0.0 0.0 0 0 0 0.893008
+ T4 1497 91.969137 39.975502 171.601799 0 0.0 0.0 0.0 0.0 0 0 0 0.893008
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+TURNOUT 1435 2 0 0 0 N 2 124.292824 46.264033 0 89.707690 "Peco-80 Large Right SL-1736/388"
+ T4 1493 124.292824 46.264033 359.707690 0 0.0 0.0 0.0 0.0 0 0 0 0.905943
+ T4 1494 124.324961 39.964901 179.707690 0 0.0 0.0 0.0 0.0 0 0 0 0.905943
+ T4 1496 123.802968 39.962239 187.707690 0 0.0 0.0 0.0 0.0 0 0 0 0.905943
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 31.901195 0.354173 -31.901195 0.000076 8.000152
+ S 0 0.000000 4.794168 -0.310471 6.299213 -0.522000
+ END$SEGS
+CURVE 1436 0 0 0 0 N 0 16.788167 79.751064 0 15.000000 0 0.000000 0.000000
+ T4 1308 2.462800 75.303158 162.750869 0 0.0 0.0 0.0 0.0 0 0 0 14.747755
+ T4 886 1.921468 81.746376 7.644189 0 0.0 0.0 0.0 0.0 0 0 0 14.747755
+ END$SEGS
+STRUCTURE 1437 7 0 0 0 N 2 33.975947 80.516395 0 3.179830 "Design Preservations Models Hayes Hardware (Oui Dresses) 502"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 2.377688 3.888989 0
+ 0.019322 3.213762 0
+ 0.896688 0.149388 0
+ 3.255054 0.824616 0
+ L3 12632256 0.062500 0.045064 3.237385 0 0.922430 0.173011 0
+ L3 12632256 0.062500 2.366149 3.890964 0 3.243515 0.826591 0
+ L3 12632256 0.062500 2.397010 3.878269 0 0.008602 3.194439 0
+ L3 9002759 0.208333 3.284808 0.795205 0 0.894334 0.100023 0
+ F4 15132390 0.000000 4 0
+ 2.628676 3.050694 0
+ 2.478461 3.007686 0
+ 2.521469 2.857472 0
+ 2.671684 2.900480 0
+ F4 15132390 0.000000 4 0
+ 2.920312 2.050534 0
+ 2.770098 2.007526 0
+ 2.813106 1.857311 0
+ 2.963320 1.900319 0
+ F4 15132390 0.000000 4 0
+ 0.697139 1.414014 0
+ 0.546925 1.371005 0
+ 0.589933 1.220791 0
+ 0.740147 1.263799 0
+ F4 15132390 0.000000 4 0
+ 0.408985 2.420450 0
+ 0.258770 2.377442 0
+ 0.301778 2.227228 0
+ 0.451993 2.270236 0
+ END$SEGS
+DRAW 1438 5 0 0 0 35.375018 82.038323 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 " OUI \nDRESSES"
+ END$SEGS
+DRAW 1439 6 0 0 0 0.000000 0.000000 0 0.000000
+ Y4 12169906 0.160000 7 2
+ 29.000000 79.572917 0
+ 29.843750 78.885417 2
+ 31.125000 78.541667 2
+ 45.718750 82.229167 0
+ 46.187500 82.479167 2
+ 46.250000 82.916667 0
+ 45.406250 86.510417 0
+ END$SEGS
+DRAW 1440 7 0 0 0 36.009830 -6.300771 0 0.000000
+ F4 12096146 0.000000 4 0
+ 25.375137 99.194466 0
+ 24.883297 99.104509 0
+ 25.020066 98.356726 0
+ 25.511906 98.446684 0
+ END$SEGS
+DRAW 1441 5 0 0 0 0.000000 0.000000 0 0.000000
+ L3 986381 0.013333 61.109375 92.854167 0 60.828125 94.432292 0
+ END$SEGS
+DRAW 1442 7 0 0 0 53.508605 94.550681 0 6.235796
+ F4 16744703 0.000000 4 0
+ -0.342669 1.071542 0
+ 1.205114 1.566509 0
+ 1.547783 0.494967 0
+ 0.000000 0.000000 0
+ END$SEGS
+DRAW 1443 5 0 0 0 0.000000 0.000000 0 0.000000
+ L3 986381 0.013333 53.380190 95.111289 0 54.986058 95.423079 0
+ END$SEGS
+DRAW 1444 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12096146 0.000000 4 0
+ 53.328125 95.338542 0
+ 52.265625 95.197917 0
+ 52.453125 94.729167 0
+ 53.437500 94.854167 0
+ END$SEGS
+STRUCTURE 1445 5 0 0 0 N 2 8.245803 78.108501 0 32.535787 "DPM (BASHED) REA TRANSFER KITTS TRANSFER; GRIPPS LUGGAGE 6; 506"
+ D 0.000000 0.000000
+ F4 16744703 0.041667 4 0
+ 0.020833 2.885000 0
+ 7.645833 2.885000 0
+ 7.645833 0.385000 0
+ 0.020833 0.385000 0
+ F4 12632256 0.000000 4 0
+ 0.020833 2.858958 0
+ 3.817708 2.858958 0
+ 3.817708 1.624583 0
+ 0.020833 1.624583 0
+ Y4 458752 0.041667 6 0
+ 7.630208 0.390208 0
+ 7.645833 2.874583 0
+ 3.813600 2.869091 0
+ 3.800226 1.603537 0
+ 0.020833 1.640208 0
+ 0.020833 0.405833 0
+ F4 12632256 0.000000 4 0
+ 0.010417 0.385000 0
+ 7.660417 0.385000 0
+ 7.660417 0.000000 0
+ 0.010417 0.000000 0
+ A3 788231 0.041667 0.178152 4.262077 2.426827 0 0.000000 360.000000
+ A3 788231 0.041667 0.178152 4.236071 1.937492 0 0.000000 360.000000
+ END$SEGS
+DRAW 1446 5 0 0 0 13.160787 76.236661 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "REA FREIGHT \n DEPOT"
+ END$SEGS
+STRUCTURE 1447 5 0 0 0 N 2 13.461000 48.600854 0 0.000000 "walthers sand sand drying house 939-3813"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.135045 0
+ 1.215635 2.476064 0
+ 2.467742 1.341019 0
+ 1.252107 0.000000 0
+ F4 15718850 0.010526 4 0
+ 1.238275 2.494109 0
+ 3.588951 5.087239 0
+ 4.841059 3.952193 0
+ 2.490383 1.359064 0
+ END$SEGS
+DRAW 1448 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 4 0
+ 108.700244 96.326976 0
+ 108.867925 92.278185 0
+ 108.181210 92.245363 0
+ 107.950289 96.318699 0
+ END$SEGS
+DRAW 1449 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.000000 4 0
+ 110.076417 96.465547 0
+ 110.566641 92.443048 0
+ 109.884735 92.355533 0
+ 109.329514 96.397454 0
+ END$SEGS
+STRUCTURE 1450 5 0 0 0 N 2 105.328057 85.896145 0 0.000000 "Grandt Line Reese st house 8023"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 0.131714 0
+ 1.243041 0.000000 0
+ 1.440612 1.864562 0
+ 0.197570 1.996275 0
+ L3 659986 0.010526 0.819091 1.930420 0 0.621521 0.065858 0
+ END$SEGS
+STRUCTURE 1451 5 0 0 0 N 2 103.088474 86.156562 0 0.000000 "Grandt Line Reese st house 8023"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 0.131714 0
+ 1.243041 0.000000 0
+ 1.440612 1.864562 0
+ 0.197570 1.996275 0
+ L3 659986 0.010526 0.819091 1.930420 0 0.621521 0.065858 0
+ END$SEGS
+STRUCTURE 1452 5 0 0 0 N 2 108.391474 85.896381 0 340.726482 "Grandt Line Reese st house 8023"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 0.131714 0
+ 1.243041 0.000000 0
+ 1.440612 1.864562 0
+ 0.197570 1.996275 0
+ L3 659986 0.010526 0.819091 1.930420 0 0.621521 0.065858 0
+ END$SEGS
+STRUCTURE 1453 5 0 0 0 N 2 110.668102 86.714821 0 323.556273 "Grandt Line Reese st house 8023"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 0.131714 0
+ 1.243041 0.000000 0
+ 1.440612 1.864562 0
+ 0.197570 1.996275 0
+ L3 659986 0.010526 0.819091 1.930420 0 0.621521 0.065858 0
+ END$SEGS
+DRAW 1454 5 0 0 0 -27.343480 83.476914 0 38.027231
+ F4 11626343 0.000000 4 0
+ 137.375000 47.263889 0
+ 138.375000 47.263889 0
+ 138.375000 45.826389 0
+ 137.375000 45.826389 0
+ END$SEGS
+DRAW 1455 5 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 109.510691 35.238213 0.000000 0 18.000000 "SCUBA \nPIER"
+ END$SEGS
+CORNU 1456 2 0 0 0 N 2 146.181379 76.657488 86.636185 0.000000 0.000000 0.000000 135.761871 74.567268 243.316456 35.984252 151.921045 42.415324
+ T4 1429 146.181379 76.657488 86.636185 0 0.0 0.0 0.0 0.0 0 0 0 0.922082
+ T4 1432 135.761871 74.567268 243.316456 0 0.0 0.0 0.0 0.0 0 0 0 0.922082
+ W3 0 0.000000 146.181379 76.657488 144.396379 76.552571 142.603988 76.497037 140.836406 76.227063
+ SUBSEGS
+ C 0 0.000000 -96.437756 150.500376 -19.683506 355.042324 2.390807
+ C 0 0.000000 -26.229412 144.756814 50.292290 351.404011 2.927875
+ SUBSEND
+ W3 0 0.000000 140.836406 76.227063 139.952615 76.092076 139.077577 75.894135 138.228619 75.613818
+ SUBSEGS
+ C 0 0.000000 -16.035320 143.190408 60.365469 341.975192 9.583218
+ SUBSEND
+ W3 0 0.000000 138.228619 75.613818 137.379661 75.333501 136.560696 74.968748 135.761871 74.567268
+ SUBSEGS
+ C 0 0.000000 -18.277930 144.114776 58.309602 332.806692 8.407191
+ SUBSEND
+ END$SEGS
+CORNU 1457 2 0 0 0 N 2 79.228611 72.258264 298.564995 35.984252 62.022549 40.654185 88.031250 58.370614 173.746312 20.969639 67.186395 56.086373
+ T4 1427 79.228611 72.258264 298.564995 0 0.0 0.0 0.0 0.0 0 0 0 0.656925
+ T4 1458 88.031250 58.370614 173.746312 0 0.0 0.0 0.0 0.0 0 0 0 0.656925
+ W3 0 0.000000 79.228611 72.258264 80.486933 71.573202 81.701013 70.793068 82.764651 69.833194
+ SUBSEGS
+ C 0 0.000000 18.261444 70.739656 56.089838 27.700949 13.483934
+ SUBSEND
+ W3 0 0.000000 82.764651 69.833194 83.828290 68.873320 84.737478 67.745141 85.465771 66.511336
+ SUBSEGS
+ C 0 0.000000 14.192463 73.229649 59.320833 42.208896 17.350664
+ SUBSEND
+ W3 0 0.000000 85.465771 66.511336 86.194063 65.277531 86.747265 63.944799 87.165404 62.574454
+ SUBSEGS
+ C 0 0.000000 18.150928 69.767980 57.398951 59.865332 13.567624
+ SUBSEND
+ W3 0 0.000000 87.165404 62.574454 87.583543 61.204109 87.875183 59.794808 88.031250 58.370614
+ SUBSEGS
+ C 0 0.000000 23.001881 65.167610 55.852581 73.008402 10.706790
+ SUBSEND
+ END$SEGS
+CORNU 1458 2 0 0 0 N 2 88.031250 58.370614 353.746312 20.969639 67.186395 56.086373 88.281250 52.308114 180.496072 0.000000 0.000000 0.000000
+ T4 1457 88.031250 58.370614 353.746312 0 0.0 0.0 0.0 0.0 0 0 0 0.652241
+ T4 1469 88.281250 52.308114 180.496072 0 0.0 0.0 0.0 0.0 0 0 0 0.652241
+ W3 0 0.000000 88.031250 58.370614 88.251685 56.359033 88.298770 54.331661 88.281250 52.308114
+ SUBSEGS
+ C 0 0.000000 51.554915 36.734380 53.218875 84.265020 6.747210
+ SUBSEND
+ END$SEGS
+CORNU 1459 2 0 0 0 N 2 69.464637 76.309315 273.163923 0.000000 0.000000 0.000000 78.686439 74.586049 110.512588 35.984252 66.077083 40.883371
+ T4 1426 69.464637 76.309315 273.163923 0 0.0 0.0 0.0 0.0 0 0 0 0.876542
+ T4 1433 78.686439 74.586049 110.512588 0 0.0 0.0 0.0 0.0 0 0 0 0.876542
+ W3 0 0.000000 69.464637 76.309315 71.033354 76.222601 72.604696 76.118644 74.152125 75.846882
+ SUBSEGS
+ C 0 0.000000 50.001036 67.158405 26.361493 2.643631 4.051087
+ C 0 0.000000 24.595559 69.922037 51.617810 7.159630 2.743670
+ SUBSEND
+ W3 0 0.000000 74.152125 75.846882 75.699554 75.575120 77.214944 75.136587 78.686439 74.586049
+ SUBSEGS
+ C 0 0.000000 25.608020 69.587908 50.648893 10.266906 10.544930
+ SUBSEND
+ END$SEGS
+CORNU 1460 2 0 0 0 N 2 69.435826 75.788111 281.163923 0.000000 0.000000 0.000000 73.586619 74.729756 108.749995 35.984252 62.019863 40.655183
+ T4 1426 69.435826 75.788111 281.163923 0 0.0 0.0 0.0 0.0 0 0 0 0.766604
+ T4 1427 73.586619 74.729756 108.749995 0 0.0 0.0 0.0 0.0 0 0 0 0.766604
+ W3 0 0.000000 69.435826 75.788111 70.837959 75.511398 72.233288 75.189150 73.586619 74.729756
+ SUBSEGS
+ C 0 0.000000 32.384445 63.527464 43.947201 10.512174 7.584236
+ SUBSEND
+ END$SEGS
+TURNOUT 1461 2 0 0 0 N 2 129.452479 33.476317 0 90.083067 "Peco-80 Large Right SL-1736/388"
+ T4 1464 129.452479 33.476317 0.083067 0 0.0 0.0 0.0 0.0 0 0 0 -0.031085
+ T4 1465 129.443347 27.177110 180.083067 0 0.0 0.0 0.0 0.0 0 0 0 -0.031085
+ T4 1467 128.921347 27.177867 188.083067 0 0.0 0.0 0.0 0.0 0 0 0 -0.031085
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 31.901195 0.354173 -31.901195 0.000076 8.000152
+ S 0 0.000000 4.794168 -0.310471 6.299213 -0.522000
+ END$SEGS
+TURNOUT 1462 2 0 0 0 N 2 86.608914 33.417532 0 89.957980 "Peco-80 Large Left SL-1737/389"
+ T4 1463 86.608914 33.417532 359.957980 0 0.0 0.0 0.0 0.0 0 0 0 -0.017578
+ T4 1466 86.613534 27.118321 179.957980 0 0.0 0.0 0.0 0.0 0 0 0 -0.017578
+ T4 1468 87.135534 27.118703 171.957980 0 0.0 0.0 0.0 0.0 0 0 0 -0.017578
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+STRAIGHT 1463 2 0 0 0 N 2 0.000000 0.000000
+ T4 453 86.595774 48.647548 359.957980 9 0.000000 0.000000 -0.014000 -0.014000 1 1 0 -0.015483
+ T4 1462 86.607005 33.333294 179.957980 0 0.0 0.0 0.0 0.0 0 0 0 -0.015483
+ END$SEGS
+STRAIGHT 1464 2 0 0 0 N 2 0.000000 0.000000
+ T4 449 129.476633 47.448853 0.083067 9 0.000000 0.000000 -0.034431 -0.034431 1 1 0 -0.033064
+ T4 1461 129.456168 33.333267 180.083067 0 0.0 0.0 0.0 0.0 0 0 0 -0.033064
+ END$SEGS
+CORNU 1465 2 0 0 0 N 2 129.443347 27.177110 0.083067 0.000000 0.000000 0.000000 108.035714 5.333333 269.917102 31.395291 107.990290 36.728591
+ T4 1461 129.443347 27.177110 0.083067 0 0.0 0.0 0.0 0.0 0 0 0 -0.026562
+ T4 1466 108.035714 5.333333 269.917102 0 0.0 0.0 0.0 0.0 0 0 0 -0.026562
+ W3 0 0.000000 129.443347 27.177110 129.441231 25.717603 129.434464 24.256322 129.313721 22.801816
+ SUBSEGS
+ C 0 0.000000 53.816976 75.629663 26.581867 89.366266 4.661448
+ SUBSEND
+ W3 0 0.000000 129.313721 22.801816 129.192979 21.347311 128.958283 19.899490 128.554781 18.496867
+ SUBSEGS
+ C 0 0.000000 22.210859 107.166870 24.486820 94.350865 11.294706
+ SUBSEND
+ W3 0 0.000000 128.554781 18.496867 128.151278 17.094244 127.579401 15.738756 126.836761 14.482312
+ SUBSEGS
+ C 0 0.000000 17.280482 111.936233 23.233845 105.909760 14.517253
+ SUBSEND
+ W3 0 0.000000 126.836761 14.482312 126.094122 13.225867 125.182207 12.070052 124.136456 11.051931
+ SUBSEGS
+ C 0 0.000000 16.548721 112.596888 22.913573 120.629276 15.159245
+ SUBSEND
+ W3 0 0.000000 124.136456 11.051931 123.090704 10.033811 121.912802 9.153559 120.651051 8.419972
+ SUBSEGS
+ C 0 0.000000 17.866167 111.707960 23.886743 135.921422 14.041510
+ SUBSEND
+ W3 0 0.000000 120.651051 8.419972 119.389300 7.686384 118.044633 7.098582 116.658003 6.643141
+ SUBSEGS
+ C 0 0.000000 20.940551 110.187675 26.559003 150.021796 11.980096
+ SUBSEND
+ W3 0 0.000000 116.658003 6.643141 113.884745 5.732261 110.954729 5.337556 108.035714 5.333333
+ SUBSEGS
+ C 0 0.000000 26.680024 108.463346 32.033518 162.112692 14.102628
+ C 0 0.000000 31.491563 108.004198 36.824880 175.957178 3.985482
+ SUBSEND
+ END$SEGS
+CORNU 1466 2 0 0 0 N 2 108.035714 5.333333 89.917102 31.395291 107.990290 36.728591 86.613534 27.118321 359.957980 0.000000 0.000000 0.000000
+ T4 1465 108.035714 5.333333 89.917102 0 0.0 0.0 0.0 0.0 0 0 0 -0.022095
+ T4 1462 86.613534 27.118321 359.957980 0 0.0 0.0 0.0 0.0 0 0 0 -0.022095
+ W3 0 0.000000 108.035714 5.333333 105.117689 5.329111 102.187491 5.714871 99.412516 6.617313
+ SUBSEGS
+ C 0 0.000000 28.985521 107.863306 34.318341 179.659198 12.981465
+ C 0 0.000000 24.600593 107.007077 30.016284 192.887470 5.094310
+ SUBSEND
+ W3 0 0.000000 99.412516 6.617313 98.025029 7.068534 96.679119 7.652291 95.415847 8.382268
+ SUBSEGS
+ C 0 0.000000 20.906772 105.813646 26.520043 197.828864 11.995385
+ SUBSEND
+ W3 0 0.000000 95.415847 8.382268 94.152575 9.112244 92.972875 9.989333 91.925332 11.004899
+ SUBSEGS
+ C 0 0.000000 17.820056 104.294392 23.833023 209.883182 14.073069
+ SUBSEND
+ W3 0 0.000000 91.925332 11.004899 90.877789 12.020466 89.964104 13.174343 89.220064 14.429383
+ SUBSEGS
+ C 0 0.000000 16.493772 103.401437 22.851566 224.089737 15.204589
+ SUBSEND
+ W3 0 0.000000 89.220064 14.429383 88.476025 15.684424 87.903133 17.039032 87.499187 18.441012
+ SUBSEGS
+ C 0 0.000000 17.213578 104.051427 23.166542 239.497653 14.568733
+ SUBSEND
+ W3 0 0.000000 87.499187 18.441012 87.095242 19.842993 86.860677 21.290388 86.740513 22.744446
+ SUBSEGS
+ C 0 0.000000 22.115672 108.793105 24.413619 254.332033 11.339471
+ SUBSEND
+ W3 0 0.000000 86.740513 22.744446 86.620348 24.198503 86.614604 25.659307 86.613534 27.118321
+ SUBSEGS
+ C 0 0.000000 53.570466 140.180252 26.484647 265.996446 4.681309
+ SUBSEND
+ END$SEGS
+CORNU 1467 2 0 0 0 N 2 128.921347 27.177867 8.083067 0.000000 0.000000 0.000000 108.035714 7.833333 269.529559 25.036929 107.830145 32.869419
+ T4 1461 128.921347 27.177867 8.083067 0 0.0 0.0 0.0 0.0 0 0 0 -0.027405
+ T4 1468 108.035714 7.833333 269.529559 0 0.0 0.0 0.0 0.0 0 0 0 -0.027405
+ W3 0 0.000000 128.921347 27.177867 128.735718 25.870799 128.546211 24.563031 128.267796 23.272538
+ SUBSEGS
+ C 0 0.000000 55.469287 73.920923 34.374753 97.454882 4.090888
+ SUBSEND
+ W3 0 0.000000 128.267796 23.272538 127.989382 21.982046 127.622238 20.708746 127.126347 19.485236
+ SUBSEGS
+ C 0 0.000000 22.962597 105.793015 27.980519 101.831152 9.882107
+ SUBSEND
+ W3 0 0.000000 127.126347 19.485236 126.630456 18.261726 126.006420 17.089213 125.253918 16.004489
+ SUBSEGS
+ C 0 0.000000 17.903669 110.519376 26.174772 111.940310 12.674448
+ SUBSEND
+ W3 0 0.000000 125.253918 16.004489 124.501416 14.919765 123.621610 13.923705 122.640307 13.040570
+ SUBSEGS
+ C 0 0.000000 17.126998 111.186944 25.774561 124.781512 13.249252
+ SUBSEND
+ W3 0 0.000000 122.640307 13.040570 120.677699 11.274298 118.317849 9.973136 115.817463 9.124838
+ SUBSEGS
+ C 0 0.000000 18.958122 110.037839 27.203486 138.336625 17.948927
+ C 0 0.000000 21.540098 108.904699 29.525562 156.010060 5.271044
+ SUBSEND
+ W3 0 0.000000 115.817463 9.124838 113.317077 8.276540 110.675993 7.855012 108.035714 7.833333
+ SUBSEGS
+ C 0 0.000000 24.897158 107.901742 32.730130 161.461806 18.229882
+ SUBSEND
+ END$SEGS
+CORNU 1468 2 0 0 0 N 2 108.035714 7.833333 89.529559 25.036929 107.830145 32.869419 87.135534 27.118703 351.957980 0.000000 0.000000 0.000000
+ T4 1467 108.035714 7.833333 89.529559 0 0.0 0.0 0.0 0.0 0 0 0 -0.021264
+ T4 1462 87.135534 27.118703 351.957980 0 0.0 0.0 0.0 0.0 0 0 0 -0.021264
+ W3 0 0.000000 108.035714 7.833333 105.390657 7.811615 102.736966 8.194619 100.225622 9.025253
+ SUBSEGS
+ C 0 0.000000 24.277224 107.744466 32.108809 179.312620 18.728997
+ SUBSEND
+ W3 0 0.000000 100.225622 9.025253 97.714279 9.855887 95.346721 11.158684 93.385322 12.933426
+ SUBSEGS
+ C 0 0.000000 19.750606 106.354449 27.800874 198.077962 17.268204
+ C 0 0.000000 17.407789 105.056975 25.848674 215.580065 6.524408
+ SUBSEND
+ W3 0 0.000000 93.385322 12.933426 92.404622 13.820797 91.527382 14.822503 90.778422 15.912575
+ SUBSEGS
+ C 0 0.000000 17.024452 104.806884 25.558001 222.135919 13.353179
+ SUBSEND
+ W3 0 0.000000 90.778422 15.912575 90.029463 17.002648 89.409866 18.180186 88.917877 19.407845
+ SUBSEGS
+ C 0 0.000000 17.984153 105.626813 26.059252 235.653176 12.640566
+ SUBSEND
+ W3 0 0.000000 88.917877 19.407845 88.425888 20.635504 88.062029 21.912130 87.785662 23.205506
+ SUBSEGS
+ C 0 0.000000 23.265273 110.566267 27.929590 248.513250 9.771202
+ SUBSEND
+ W3 0 0.000000 87.785662 23.205506 87.509296 24.498882 87.320561 25.809136 87.135534 27.118703
+ SUBSEGS
+ C 0 0.000000 56.565322 143.226756 34.426949 258.557743 4.018885
+ SUBSEND
+ END$SEGS
+STRAIGHT 1469 2 0 0 0 N 2 0.000000 0.000000
+ T4 1458 88.196898 52.210526 0.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.647207
+ T4 1489 88.196898 33.280272 180.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.647207
+ END$SEGS
+CORNU 1470 2 0 0 0 N 2 132.995466 69.028751 39.211672 17.992126 146.936047 57.654360 129.485765 53.748059 180.083067 0.000000 0.000000 0.000000
+ T4 1431 132.995466 69.028751 39.211672 0 0.0 0.0 0.0 0.0 0 0 0 0.333745
+ T4 449 129.485765 53.748059 180.083067 0 0.0 0.0 0.0 0.0 0 0 0 0.333745
+ W3 0 0.000000 132.995466 69.028751 132.149281 67.991657 131.428282 66.849128 130.896914 65.620616
+ SUBSEGS
+ C 0 0.000000 -14.562088 144.228452 59.761905 293.723690 15.797828
+ SUBSEND
+ W3 0 0.000000 130.896914 65.620616 130.365545 64.392104 130.021945 63.087153 129.817576 61.764343
+ SUBSEGS
+ C 0 0.000000 -15.770726 145.421421 59.476147 278.342568 14.587811
+ SUBSEND
+ W3 0 0.000000 129.817576 61.764343 129.408837 59.118723 129.489646 56.425064 129.485765 53.748059
+ SUBSEGS
+ C 0 0.000000 -30.872625 160.369289 57.324546 270.822970 7.445414
+ C 0 0.000000 -183.014730 312.495376 55.116865 269.571469 1.258533
+ SUBSEND
+ END$SEGS
+CORNU 1471 2 0 0 0 N 2 153.597341 73.899230 90.296407 0.000000 0.000000 0.000000 131.392220 59.749272 197.898067 35.984252 165.635005 48.690429
+ T4 447 153.597341 73.899230 90.296407 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ T4 448 131.392220 59.749272 197.898067 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ W3 0 0.000000 153.597341 73.899230 151.199891 73.911633 148.790021 73.902829 146.424818 73.510741
+ SUBSEGS
+ C 0 0.000000 -77.272767 152.711819 -3.368463 357.988091 2.668515
+ C 0 0.000000 -29.233573 151.022822 44.641030 350.950655 7.042289
+ SUBSEND
+ W3 0 0.000000 146.424818 73.510741 144.059615 73.118652 141.747074 72.339259 139.695135 71.099313
+ SUBSEGS
+ C 0 0.000000 -19.802107 149.567040 53.959529 335.259583 15.610061
+ C 0 0.000000 -16.915004 148.433620 56.616349 328.894772 6.085315
+ SUBSEND
+ W3 0 0.000000 139.695135 71.099313 137.643197 69.859366 135.871291 68.170017 134.492447 66.208715
+ SUBSEGS
+ C 0 0.000000 -17.410969 148.765426 56.237561 304.938286 23.665537
+ SUBSEND
+ W3 0 0.000000 134.492447 66.208715 133.113603 64.247412 132.129025 62.030727 131.392220 59.749272
+ SUBSEGS
+ C 0 0.000000 -22.296437 152.843369 53.544800 290.752784 13.856653
+ C 0 0.000000 -30.800649 160.710295 50.308377 287.849399 3.347791
+ SUBSEND
+ END$SEGS
+CORNU 1472 2 0 0 0 N 2 156.347272 71.247660 90.296405 0.000000 0.000000 0.000000 135.214826 64.775978 217.531067 35.984252 163.751170 42.854677
+ T4 445 156.347272 71.247660 90.296405 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ T4 450 135.214826 64.775978 217.531067 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ W3 0 0.000000 156.347272 71.247660 154.411384 71.257675 152.475632 71.295320 150.539721 71.291658
+ SUBSEGS
+ C 0 0.000000 -822.100714 147.215434 -750.802335 0.231685 0.404766
+ SUBSEND
+ W3 0 0.000000 150.539721 71.291658 148.603810 71.287997 146.658674 71.223701 144.755842 70.867335
+ SUBSEGS
+ C 0 0.000000 -38.061937 150.181684 33.231406 353.980270 6.558703
+ C 0 0.000000 -21.132741 148.620060 50.090893 349.463927 3.933262
+ SUBSEND
+ W3 0 0.000000 144.755842 70.867335 143.804427 70.689152 142.865855 70.437134 141.961072 70.093173
+ SUBSEGS
+ C 0 0.000000 -16.310912 147.695438 54.823501 339.416857 10.200416
+ SUBSEND
+ W3 0 0.000000 141.961072 70.093173 141.056289 69.749212 140.186283 69.312820 139.373721 68.786813
+ SUBSEGS
+ C 0 0.000000 -13.760483 146.834910 57.224739 327.165207 12.090927
+ SUBSEND
+ W3 0 0.000000 139.373721 68.786813 138.561159 68.260805 137.807484 67.645511 137.118083 66.966050
+ SUBSEGS
+ C 0 0.000000 -14.272312 147.164104 56.828182 315.260724 11.657270
+ SUBSEND
+ W3 0 0.000000 137.118083 66.966050 136.428682 66.286589 135.804497 65.543590 135.214826 64.775978
+ SUBSEGS
+ C 0 0.000000 -21.108972 152.061883 52.057278 307.051011 7.881761
+ SUBSEND
+ END$SEGS
+CORNU 1473 2 0 0 0 N 2 157.028738 68.762380 90.296407 0.000000 0.000000 0.000000 135.633501 64.455510 227.349067 17.992126 147.823708 51.222389
+ T4 446 157.028738 68.762380 90.296407 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ T4 450 135.633501 64.455510 227.349067 0 0.0 0.0 0.0 0.0 0 0 0 0.061814
+ W3 0 0.000000 157.028738 68.762380 155.156496 68.772066 153.284460 68.802714 151.412405 68.830935
+ SUBSEGS
+ C 0 0.000000 567.351854 161.145229 636.099300 180.415720 0.567227
+ SUBSEND
+ W3 0 0.000000 151.412405 68.830935 149.540350 68.859155 147.664226 68.873400 145.799836 68.701827
+ SUBSEGS
+ C 0 0.000000 -67.054850 149.824661 1.794884 357.756825 3.599967
+ C 0 0.000000 -31.915633 148.694284 36.917714 354.796662 2.519926
+ SUBSEND
+ W3 0 0.000000 145.799836 68.701827 143.935447 68.530253 142.079646 68.158267 140.343162 67.458262
+ SUBSEGS
+ C 0 0.000000 -20.753353 147.552177 48.022587 343.523783 11.632594
+ C 0 0.000000 -15.932519 146.287564 52.676204 338.093150 5.045261
+ SUBSEND
+ W3 0 0.000000 140.343162 67.458262 138.606677 66.758257 137.010544 65.724027 135.633501 64.455510
+ SUBSEGS
+ C 0 0.000000 -15.587105 146.232378 53.026528 317.158132 20.642770
+ SUBSEND
+ END$SEGS
+STRAIGHT 1474 2 0 0 0 N 2 0.000000 0.000000
+ T4 1480 127.458442 55.376735 359.907076 0 0.0 0.0 0.0 0.0 0 0 0 0.612291
+ T4 1486 127.494328 33.250351 179.907076 0 0.0 0.0 0.0 0.0 0 0 0 0.612291
+ END$SEGS
+STRAIGHT 1475 2 0 0 0 N 2 0.000000 0.000000
+ T4 1483 89.781250 55.250000 0.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.891819
+ T4 1485 89.781250 36.639753 180.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.891819
+ END$SEGS
+TURNOUT 1476 2 0 0 0 N 2 58.118088 80.377080 0 359.925276 "Peco-80 Large Right SL-1736/388"
+ T4 1498 58.118088 80.377080 269.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.643075
+ T4 1499 64.417295 80.385295 89.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.643075
+ T4 1479 64.417976 79.863296 97.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.643075
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 31.901195 0.354173 -31.901195 0.000076 8.000152
+ S 0 0.000000 4.794168 -0.310471 6.299213 -0.522000
+ END$SEGS
+TURNOUT 1477 2 0 0 0 N 2 158.172470 80.410586 0 180.000000 "Peco-80 Large Left SL-1737/389"
+ T4 1502 158.172470 80.410586 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 1.748806
+ T4 1500 151.873257 80.410586 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 1.748806
+ T4 1504 151.873257 79.888586 262.000000 0 0.0 0.0 0.0 0.0 0 0 0 1.748806
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+STRAIGHT 1478 2 0 0 0 N 2 0.000000 0.000000
+ T4 1479 75.012883 78.784492 269.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.693467
+ T4 1501 136.888430 78.865189 89.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.693467
+ END$SEGS
+CORNU 1479 2 0 0 0 N 2 64.417976 79.863296 277.925276 0.000000 4.125000 0.000000 74.955210 78.779037 89.925276 0.000000 4.125000 0.000000
+ T4 1476 64.417976 79.863296 277.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.652608
+ T4 1478 74.955210 78.779037 89.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.652608
+ W3 0 0.000000 64.417976 79.863296 66.169097 79.619520 67.912807 79.324059 69.665371 79.090877
+ SUBSEGS
+ S 0 0.000000 64.417976 79.863296 69.665371 79.090877
+ SUBSEND
+ W3 0 0.000000 69.665371 79.090877 71.417935 78.857695 73.187203 78.776731 74.955210 78.779037
+ SUBSEGS
+ C 0 0.000000 -39.706639 74.641763 118.484439 179.547698 7.652055
+ SUBSEND
+ END$SEGS
+CORNU 1480 2 0 0 0 N 2 132.650458 69.427448 49.029672 35.984252 156.244183 42.257565 127.458442 55.376735 179.907076 0.000000 0.000000 0.000000
+ T4 1431 132.650458 69.427448 49.029672 0 0.0 0.0 0.0 0.0 0 0 0 0.604691
+ T4 1474 127.458442 55.376735 179.907076 0 0.0 0.0 0.0 0.0 0 0 0 0.604691
+ W3 0 0.000000 132.650458 69.427448 131.667599 68.573955 130.736820 67.650522 129.977199 66.593432
+ SUBSEGS
+ C 0 0.000000 -16.804125 143.455369 56.557618 306.671287 13.313457
+ SUBSEND
+ W3 0 0.000000 129.977199 66.593432 129.217579 65.536343 128.632761 64.355471 128.240745 63.114188
+ SUBSEGS
+ C 0 0.000000 -12.335158 140.007929 59.414255 287.454610 18.137384
+ SUBSEND
+ W3 0 0.000000 128.240745 63.114188 127.848729 61.872905 127.645505 60.577954 127.548791 59.279837
+ SUBSEGS
+ C 0 0.000000 -16.884855 144.400250 58.218403 273.604168 13.250871
+ SUBSEND
+ W3 0 0.000000 127.548791 59.279837 127.452077 57.981721 127.456331 56.678448 127.458442 55.376735
+ SUBSEGS
+ C 0 0.000000 -51.401103 178.853883 56.139631 269.149584 4.352922
+ SUBSEND
+ END$SEGS
+STRAIGHT 1481 2 0 0 0 N 2 0.000000 0.000000
+ T4 1482 125.838444 55.374107 359.907076 0 0.0 0.0 0.0 0.0 0 0 0 0.907101
+ T4 1484 125.868829 36.639779 179.907076 0 0.0 0.0 0.0 0.0 0 0 0 0.907101
+ END$SEGS
+CORNU 1482 2 0 0 0 N 2 130.827877 70.916315 43.683456 17.992126 143.839182 58.489628 125.838444 55.374107 179.907076 0.000000 0.000000 0.000000
+ T4 1432 130.827877 70.916315 43.683456 0 0.0 0.0 0.0 0.0 0 0 0 0.911840
+ T4 1481 125.838444 55.374107 179.907076 0 0.0 0.0 0.0 0.0 0 0 0 0.911840
+ W3 0 0.000000 130.827877 70.916315 129.860797 69.903738 129.012915 68.776693 128.316056 67.562220
+ SUBSEGS
+ C 0 0.000000 -17.415223 143.410373 58.875933 299.919025 13.819718
+ SUBSEND
+ W3 0 0.000000 128.316056 67.562220 127.619196 66.347748 127.075109 65.046644 126.688089 63.700995
+ SUBSEGS
+ C 0 0.000000 -17.459071 143.473445 58.897770 285.968776 13.784897
+ SUBSEND
+ W3 0 0.000000 126.688089 63.700995 126.301068 62.355346 126.072248 60.967041 125.955884 59.571686
+ SUBSEGS
+ C 0 0.000000 -21.355780 147.248141 57.925738 274.420326 11.269568
+ SUBSEND
+ W3 0 0.000000 125.955884 59.571686 125.839521 58.176331 125.836173 56.774304 125.838444 55.374107
+ SUBSEGS
+ C 0 0.000000 -49.530728 175.364014 56.088909 269.173108 4.859000
+ SUBSEND
+ END$SEGS
+CORNU 1483 2 0 0 0 N 2 83.984303 71.486633 310.145588 17.992126 72.384204 57.733296 89.781250 55.250000 180.000000 0.000000 0.000000 0.000000
+ T4 1433 83.984303 71.486633 310.145588 0 0.0 0.0 0.0 0.0 0 0 0 0.886810
+ T4 1475 89.781250 55.250000 180.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.886810
+ W3 0 0.000000 83.984303 71.486633 85.125598 70.524021 86.143649 69.411551 86.969163 68.167484
+ SUBSEGS
+ C 0 0.000000 15.781484 73.860224 59.380509 39.904980 16.260912
+ SUBSEND
+ W3 0 0.000000 86.969163 68.167484 87.794678 66.923417 88.425330 65.552967 88.860647 64.124795
+ SUBSEGS
+ C 0 0.000000 15.471765 74.047709 59.657987 56.632872 16.586563
+ SUBSEND
+ W3 0 0.000000 88.860647 64.124795 89.295964 62.696623 89.537438 61.214268 89.658236 59.726120
+ SUBSEGS
+ C 0 0.000000 20.865914 68.846454 58.224080 73.573084 12.298890
+ SUBSEND
+ W3 0 0.000000 89.658236 59.726120 89.779033 58.237971 89.781250 56.743043 89.781250 55.250000
+ SUBSEGS
+ C 0 0.000000 55.310929 34.475005 55.969802 86.105889 4.639765
+ SUBSEND
+ END$SEGS
+CORNU 1484 2 0 0 0 N 2 125.868829 36.639779 359.907076 0.000000 0.000000 0.000000 108.102686 14.764753 269.280304 18.784989 107.866733 33.548260
+ T4 1481 125.868829 36.639779 359.907076 0 0.0 0.0 0.0 0.0 0 0 0 0.901938
+ T4 1485 108.102686 14.764753 269.280304 0 0.0 0.0 0.0 0.0 0 0 0 0.901938
+ W3 0 0.000000 125.868829 36.639779 125.873145 33.978677 125.836092 31.296414 125.271399 28.695913
+ SUBSEGS
+ C 0 0.000000 65.311223 60.560390 36.036704 89.470931 3.505753
+ C 0 0.000000 25.830457 99.987667 33.982260 92.967300 8.842037
+ SUBSEND
+ W3 0 0.000000 125.271399 28.695913 124.989052 27.395663 124.582512 26.121118 124.036515 24.907752
+ SUBSEGS
+ C 0 0.000000 19.114658 106.579507 32.693828 102.072803 11.964756
+ SUBSEND
+ W3 0 0.000000 124.036515 24.907752 123.490518 23.694385 122.805527 22.543103 121.992684 21.489701
+ SUBSEGS
+ C 0 0.000000 17.051084 108.480345 31.889517 114.171022 13.412776
+ SUBSEND
+ W3 0 0.000000 121.992684 21.489701 121.179841 20.436299 120.239901 19.481246 119.200963 18.649995
+ SUBSEGS
+ C 0 0.000000 16.735710 108.747250 31.719190 127.679019 13.665565
+ SUBSEND
+ W3 0 0.000000 119.200963 18.649995 118.162025 17.818744 117.024757 17.111200 115.823177 16.539732
+ SUBSEGS
+ C 0 0.000000 17.309068 108.401848 32.177113 141.398554 13.212944
+ SUBSEND
+ W3 0 0.000000 115.823177 16.539732 113.420017 15.396797 110.763581 14.798178 108.102686 14.764753
+ SUBSEGS
+ C 0 0.000000 18.578752 107.895888 33.342354 154.742585 24.619648
+ SUBSEND
+ END$SEGS
+CORNU 1485 2 0 0 0 N 2 108.102686 14.764753 89.280304 18.784989 107.866733 33.548260 89.781250 36.639753 0.000000 0.000000 0.000000 0.000000
+ T4 1484 108.102686 14.764753 89.280304 0 0.0 0.0 0.0 0.0 0 0 0 0.897060
+ T4 1475 89.781250 36.639753 0.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.897060
+ W3 0 0.000000 108.102686 14.764753 105.398130 14.730779 102.684167 15.278966 100.216897 16.387280
+ SUBSEGS
+ C 0 0.000000 18.738189 107.847959 33.501210 179.221096 24.810884
+ SUBSEND
+ W3 0 0.000000 100.216897 16.387280 98.983262 16.941437 97.812241 17.635986 96.739419 18.459391
+ SUBSEGS
+ C 0 0.000000 17.475491 107.363350 32.334725 204.138356 13.301852
+ SUBSEND
+ W3 0 0.000000 96.739419 18.459391 95.666597 19.282797 94.692670 20.235219 93.848010 21.291389
+ SUBSEGS
+ C 0 0.000000 16.813068 106.972781 31.799464 217.492333 13.825882
+ SUBSEND
+ W3 0 0.000000 93.848010 21.291389 93.003351 22.347559 92.288793 23.507021 91.717620 24.732870
+ SUBSEGS
+ C 0 0.000000 17.027393 107.158086 31.910899 231.415211 13.651816
+ SUBSEND
+ W3 0 0.000000 91.717620 24.732870 91.146446 25.958719 90.719197 27.249987 90.421390 28.569174
+ SUBSEGS
+ C 0 0.000000 18.976101 108.944493 32.690712 245.205731 12.249862
+ SUBSEND
+ W3 0 0.000000 90.421390 28.569174 89.825777 31.207549 89.781250 33.934983 89.781250 36.639753
+ SUBSEGS
+ C 0 0.000000 25.503741 115.342778 33.988142 257.732429 9.101505
+ C 0 0.000000 64.230485 154.009779 36.138455 266.823723 3.623457
+ SUBSEND
+ END$SEGS
+CORNU 1486 2 0 0 0 N 2 127.494328 33.250351 359.907076 0.000000 0.000000 0.000000 127.406250 30.541667 184.309837 31.732522 95.763460 32.926363
+ T4 1474 127.494328 33.250351 359.907076 0 0.0 0.0 0.0 0.0 0 0 0 0.617292
+ T4 1487 127.406250 30.541667 184.309837 0 0.0 0.0 0.0 0.0 0 0 0 0.617292
+ W3 0 0.000000 127.494328 33.250351 127.495794 32.346715 127.474158 31.442749 127.406250 30.541667
+ SUBSEGS
+ C 0 0.000000 35.280043 92.214901 33.041754 89.661231 4.402387
+ SUBSEND
+ END$SEGS
+CORNU 1487 2 0 0 0 N 2 127.406250 30.541667 4.309837 31.732522 95.763460 32.926363 108.102686 11.139753 269.087007 18.513890 107.807685 29.651292
+ T4 1486 127.406250 30.541667 4.309837 0 0.0 0.0 0.0 0.0 0 0 0 0.623915
+ T4 1488 108.102686 11.139753 269.087007 0 0.0 0.0 0.0 0.0 0 0 0 0.623915
+ W3 0 0.000000 127.406250 30.541667 127.217204 28.033202 126.709163 25.537365 125.751949 23.211020
+ SUBSEGS
+ C 0 0.000000 25.316523 102.150835 32.299615 93.981751 12.811693
+ C 0 0.000000 20.685308 106.617192 31.068695 107.103688 5.221782
+ SUBSEND
+ W3 0 0.000000 125.751949 23.211020 124.794735 20.884675 123.394575 18.738859 121.630050 16.945932
+ SUBSEGS
+ C 0 0.000000 19.555968 107.656899 30.627560 112.287041 22.108998
+ SUBSEND
+ W3 0 0.000000 121.630050 16.945932 119.865525 15.153005 117.745203 13.713584 115.433361 12.721857
+ SUBSEGS
+ C 0 0.000000 19.503073 107.751520 30.648351 134.634158 22.169797
+ SUBSEND
+ W3 0 0.000000 115.433361 12.721857 113.121519 11.730130 110.617946 11.179836 108.102686 11.139753
+ SUBSEGS
+ C 0 0.000000 19.447207 107.742380 30.583622 156.704086 22.234311
+ SUBSEND
+ END$SEGS
+CORNU 1488 2 0 0 0 N 2 108.102686 11.139753 89.087007 18.513890 107.807685 29.651292 88.281250 30.666667 355.478587 23.242189 111.451108 32.498887
+ T4 1487 108.102686 11.139753 89.087007 0 0.0 0.0 0.0 0.0 0 0 0 0.636168
+ T4 1489 88.281250 30.666667 355.478587 0 0.0 0.0 0.0 0.0 0 0 0 0.636168
+ W3 0 0.000000 108.102686 11.139753 105.547389 11.099032 102.985163 11.600224 100.632726 12.598843
+ SUBSEGS
+ C 0 0.000000 18.433320 107.825335 29.570986 179.137886 23.828814
+ SUBSEND
+ W3 0 0.000000 100.632726 12.598843 98.280289 13.597461 96.142255 15.087239 94.360122 16.918960
+ SUBSEGS
+ C 0 0.000000 19.341723 108.252596 30.376352 203.201142 22.710243
+ SUBSEND
+ W3 0 0.000000 94.360122 16.918960 92.577988 18.750680 91.149451 20.919435 90.126739 23.261498
+ SUBSEGS
+ C 0 0.000000 21.356080 109.720886 31.755708 225.994150 20.568756
+ SUBSEND
+ W3 0 0.000000 90.126739 23.261498 89.104027 25.603561 88.482714 28.118999 88.281250 30.666667
+ SUBSEGS
+ C 0 0.000000 23.090765 111.301402 32.471118 246.494050 19.023943
+ SUBSEND
+ END$SEGS
+CORNU 1489 2 0 0 0 N 2 88.281250 30.666667 175.478587 23.242189 111.451108 32.498887 88.196898 33.280272 0.000000 0.000000 0.000000 0.000000
+ T4 1488 88.281250 30.666667 175.478587 0 0.0 0.0 0.0 0.0 0 0 0 0.642869
+ T4 1469 88.196898 33.280272 0.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.642869
+ W3 0 0.000000 88.281250 30.666667 88.212516 31.535866 88.196898 32.408360 88.196898 33.280272
+ SUBSEGS
+ C 0 0.000000 33.149703 121.345744 33.041961 265.891033 4.520866
+ SUBSEND
+ END$SEGS
+CORNU 1490 2 0 0 0 N 2 84.249743 71.942189 300.327588 35.984252 66.079738 40.882291 91.341691 55.145721 179.601799 0.000000 0.000000 0.000000
+ T4 1433 84.249743 71.942189 300.327588 0 0.0 0.0 0.0 0.0 0 0 0 0.887296
+ T4 1491 91.341691 55.145721 179.601799 0 0.0 0.0 0.0 0.0 0 0 0 0.887296
+ W3 0 0.000000 84.249743 71.942189 84.947707 71.533881 85.631701 71.099460 86.274045 70.608273
+ SUBSEGS
+ C 0 0.000000 19.646762 74.472212 54.901205 29.845723 7.074408
+ SUBSEND
+ W3 0 0.000000 86.274045 70.608273 86.916388 70.117087 87.516632 69.569578 88.051849 68.963433
+ SUBSEGS
+ C 0 0.000000 12.473341 78.732013 60.673385 37.203807 11.142913
+ SUBSEND
+ W3 0 0.000000 88.051849 68.963433 89.122283 67.751144 89.914349 66.303111 90.412948 64.764646
+ SUBSEGS
+ C 0 0.000000 11.873056 79.098554 61.165487 48.945495 23.408408
+ SUBSEND
+ W3 0 0.000000 90.412948 64.764646 90.911548 63.226181 91.130170 61.609633 91.231434 59.995563
+ SUBSEGS
+ C 0 0.000000 17.476172 73.733533 59.547970 72.632337 11.925846
+ C 0 0.000000 28.511621 62.773872 58.240667 84.031565 2.439638
+ SUBSEND
+ W3 0 0.000000 91.231434 59.995563 91.332698 58.381493 91.330451 56.762925 91.341691 55.145721
+ SUBSEGS
+ C 0 0.000000 87.106385 4.236448 55.591636 87.102003 3.191307
+ SUBSEND
+ END$SEGS
+STRAIGHT 1491 2 0 0 0 N 2 0.000000 0.000000
+ T4 1490 91.341691 55.145721 359.601799 0 0.0 0.0 0.0 0.0 0 0 0 0.891621
+ T4 1434 91.403371 46.270935 179.601799 0 0.0 0.0 0.0 0.0 0 0 0 0.891621
+ END$SEGS
+CORNU 1492 2 0 0 0 N 2 130.515005 71.340697 53.501456 35.984252 151.918523 42.413966 124.246232 55.396616 179.707690 0.000000 0.000000 0.000000
+ T4 1432 130.515005 71.340697 53.501456 0 0.0 0.0 0.0 0.0 0 0 0 0.911338
+ T4 1493 124.246232 55.396616 179.707690 0 0.0 0.0 0.0 0.0 0 0 0 0.911338
+ W3 0 0.000000 130.515005 71.340697 129.308041 70.447638 128.162929 69.454902 127.232920 68.276174
+ SUBSEGS
+ C 0 0.000000 -18.999121 141.657749 55.952199 313.901972 10.189897
+ C 0 0.000000 -12.834023 137.299308 60.315019 308.339242 5.021317
+ SUBSEND
+ W3 0 0.000000 127.232920 68.276174 126.302912 67.097446 125.594547 65.747727 125.129062 64.320268
+ SUBSEGS
+ C 0 0.000000 -12.798605 137.306479 60.381384 287.924224 20.162079
+ SUBSEND
+ W3 0 0.000000 125.129062 64.320268 124.663576 62.892810 124.434447 61.396867 124.330248 59.899049
+ SUBSEGS
+ C 0 0.000000 -18.350783 142.652237 58.871456 273.210084 14.062940
+ SUBSEND
+ W3 0 0.000000 124.330248 59.899049 124.226049 58.401232 124.238572 56.898034 124.246232 55.396616
+ SUBSEGS
+ C 0 0.000000 -60.425605 184.661370 56.521262 268.933545 4.270956
+ SUBSEND
+ END$SEGS
+STRAIGHT 1493 2 0 0 0 N 2 0.000000 0.000000
+ T4 1492 124.246232 55.396616 359.707690 0 0.0 0.0 0.0 0.0 0 0 0 0.907318
+ T4 1435 124.292824 46.264033 179.707690 0 0.0 0.0 0.0 0.0 0 0 0 0.907318
+ END$SEGS
+CORNU 1494 2 0 0 0 N 2 124.324961 39.964901 359.707690 0.000000 0.000000 0.000000 108.102686 18.139753 269.512415 15.835243 107.967930 33.974422
+ T4 1435 124.324961 39.964901 359.707690 0 0.0 0.0 0.0 0.0 0 0 0 0.901922
+ T4 1495 108.102686 18.139753 269.512415 0 0.0 0.0 0.0 0.0 0 0 0 0.901922
+ W3 0 0.000000 124.324961 39.964901 124.338041 37.401049 124.324322 34.821777 123.869317 32.298588
+ SUBSEGS
+ C 0 0.000000 75.718532 48.611728 39.069090 89.322129 2.912649
+ C 0 0.000000 28.948247 95.346322 37.242243 92.228696 7.604222
+ SUBSEND
+ W3 0 0.000000 123.869317 32.298588 123.641815 31.036994 123.308881 29.793154 122.849561 28.596324
+ SUBSEGS
+ C 0 0.000000 20.467699 103.713620 35.858725 100.016937 10.765633
+ SUBSEND
+ W3 0 0.000000 122.849561 28.596324 122.390241 27.399493 121.804607 26.250281 121.092984 25.183993
+ SUBSEGS
+ C 0 0.000000 17.337019 106.651445 34.776395 110.883368 12.709659
+ SUBSEND
+ W3 0 0.000000 121.092984 25.183993 120.381362 24.117705 119.544079 23.134882 118.599714 22.267961
+ SUBSEGS
+ C 0 0.000000 16.068002 107.721167 34.093269 123.674435 13.713443
+ SUBSEND
+ W3 0 0.000000 118.599714 22.267961 117.655349 21.401039 116.604362 20.650282 115.477485 20.039116
+ SUBSEGS
+ C 0 0.000000 15.671134 108.001962 33.812314 137.447974 14.060748
+ SUBSEND
+ W3 0 0.000000 115.477485 20.039116 113.223729 18.816783 110.666479 18.161571 108.102686 18.139753
+ SUBSEGS
+ C 0 0.000000 15.823828 107.959450 33.962933 151.633586 27.847769
+ SUBSEND
+ END$SEGS
+CORNU 1495 2 0 0 0 N 2 108.102686 18.139753 89.512415 15.835243 107.967930 33.974422 91.447150 39.971874 359.601799 0.000000 0.000000 0.000000
+ T4 1494 108.102686 18.139753 89.512415 0 0.0 0.0 0.0 0.0 0 0 0 0.897099
+ T4 1434 91.447150 39.971874 359.601799 0 0.0 0.0 0.0 0.0 0 0 0 0.897099
+ W3 0 0.000000 108.102686 18.139753 105.512185 18.117707 102.917791 18.742462 100.624481 19.947413
+ SUBSEGS
+ C 0 0.000000 15.865055 107.979953 34.004333 179.556753 28.064666
+ SUBSEND
+ W3 0 0.000000 100.624481 19.947413 99.477826 20.549889 98.406408 21.295159 97.441642 22.159463
+ SUBSEGS
+ C 0 0.000000 15.767942 107.963589 33.903254 207.739019 14.119996
+ SUBSEND
+ W3 0 0.000000 97.441642 22.159463 96.476876 23.023768 95.619223 24.006841 94.887722 25.075814
+ SUBSEGS
+ C 0 0.000000 16.200005 108.264505 34.213749 221.918876 13.743394
+ SUBSEND
+ W3 0 0.000000 94.887722 25.075814 94.156222 26.144786 93.551201 27.299113 93.073219 28.502993
+ SUBSEGS
+ C 0 0.000000 17.508680 109.359043 34.931511 235.743166 12.716153
+ SUBSEND
+ W3 0 0.000000 93.073219 28.502993 92.595237 29.706874 92.244366 30.959700 91.999647 32.231670
+ SUBSEGS
+ C 0 0.000000 20.698307 112.339137 36.068991 248.559365 10.756590
+ SUBSEND
+ W3 0 0.000000 91.999647 32.231670 91.510208 34.775610 91.465154 37.381342 91.447150 39.971874
+ SUBSEGS
+ C 0 0.000000 29.306211 120.814983 37.573056 259.498502 7.589618
+ C 0 0.000000 76.714866 168.162014 39.989504 267.082072 2.904761
+ SUBSEND
+ END$SEGS
+CORNU 1496 2 0 0 0 N 2 123.802968 39.962239 7.707690 0.000000 0.000000 0.000000 107.977686 21.264753 270.097189 14.299939 108.001943 35.564671
+ T4 1435 123.802968 39.962239 7.707690 0 0.0 0.0 0.0 0.0 0 0 0 0.901917
+ T4 1497 107.977686 21.264753 270.097189 0 0.0 0.0 0.0 0.0 0 0 0 0.901917
+ W3 0 0.000000 123.802968 39.962239 123.499632 37.720981 123.180603 35.472614 122.548239 33.301125
+ SUBSEGS
+ C 0 0.000000 59.227020 65.014656 47.157671 96.978045 4.923900
+ C 0 0.000000 26.974935 96.638592 40.806943 102.555820 3.600061
+ SUBSEND
+ W3 0 0.000000 122.548239 33.301125 121.915874 31.129636 120.967146 29.036677 119.617170 27.222065
+ SUBSEGS
+ C 0 0.000000 20.148045 103.168432 38.811731 105.872988 14.474434
+ C 0 0.000000 16.444055 106.415880 37.026803 120.697225 5.904437
+ SUBSEND
+ W3 0 0.000000 119.617170 27.222065 118.267194 25.407454 116.519123 23.882840 114.509629 22.844966
+ SUBSEGS
+ C 0 0.000000 14.992534 107.556052 36.127429 126.440418 25.926819
+ SUBSEND
+ W3 0 0.000000 114.509629 22.844966 112.500135 21.807091 110.239375 21.260916 107.977686 21.264753
+ SUBSEGS
+ C 0 0.000000 14.246863 107.988190 35.511612 152.758268 27.283976
+ SUBSEND
+ END$SEGS
+CORNU 1497 2 0 0 0 N 2 107.977686 21.264753 90.097189 14.299939 108.001943 35.564671 91.969137 39.975502 351.601799 0.000000 0.000000 0.000000
+ T4 1496 107.977686 21.264753 90.097189 0 0.0 0.0 0.0 0.0 0 0 0 0.897068
+ T4 1434 91.969137 39.975502 351.601799 0 0.0 0.0 0.0 0.0 0 0 0 0.897068
+ W3 0 0.000000 107.977686 21.264753 105.709963 21.268600 103.445894 21.824193 101.431434 22.865604
+ SUBSEGS
+ C 0 0.000000 14.374727 108.024064 35.639405 180.184857 27.113652
+ SUBSEND
+ W3 0 0.000000 101.431434 22.865604 99.416975 23.907014 97.661223 25.429800 96.296704 27.241062
+ SUBSEGS
+ C 0 0.000000 15.245899 108.507347 36.370006 207.653226 25.564180
+ SUBSEND
+ W3 0 0.000000 96.296704 27.241062 94.932184 29.052324 93.962207 31.141223 93.304868 33.311589
+ SUBSEGS
+ C 0 0.000000 18.449647 111.111130 38.237527 233.414209 15.839684
+ C 0 0.000000 22.735204 115.068028 39.888394 248.895575 4.289662
+ SUBSEND
+ W3 0 0.000000 93.304868 33.311589 92.647530 35.481955 92.300343 37.732093 91.969137 39.975502
+ SUBSEGS
+ C 0 0.000000 37.534102 129.362649 43.734893 253.876885 7.786741
+ S 0 0.000000 92.225134 38.293035 91.969137 39.975502
+ SUBSEND
+ END$SEGS
+CORNU 1498 2 0 0 0 N 2 36.945119 65.183298 186.610644 35.984252 72.690125 61.040731 58.118088 80.377080 89.925276 0.000000 0.000000 0.000000
+ T4 454 36.945119 65.183298 186.610644 0 0.0 0.0 0.0 0.0 0 0 0 1.622896
+ T4 1476 58.118088 80.377080 89.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.622896
+ W3 0 0.000000 36.945119 65.183298 37.086158 66.400281 37.292141 67.611744 37.616403 68.793181
+ SUBSEGS
+ C 0 0.000000 24.114050 60.919580 62.592429 276.167896 8.732692
+ SUBSEND
+ W3 0 0.000000 37.616403 68.793181 37.940665 69.974618 38.383377 71.125225 38.962323 72.204929
+ SUBSEGS
+ C 0 0.000000 16.401001 53.450429 64.518082 285.109280 12.839470
+ SUBSEND
+ W3 0 0.000000 38.962323 72.204929 39.541268 73.284634 40.255966 74.292069 41.090511 75.188994
+ SUBSEGS
+ C 0 0.000000 14.309552 51.580707 65.456623 298.137852 14.716039
+ SUBSEND
+ W3 0 0.000000 41.090511 75.188994 41.925056 76.085919 42.878285 76.871433 43.913324 77.526898
+ SUBSEGS
+ C 0 0.000000 14.326936 51.565372 65.414621 313.018742 14.698214
+ SUBSEND
+ W3 0 0.000000 43.913324 77.526898 44.948363 78.182362 46.064010 78.707756 47.220891 79.110951
+ SUBSEGS
+ C 0 0.000000 16.054884 52.456441 63.933722 327.851224 13.116343
+ SUBSEND
+ W3 0 0.000000 47.220891 79.110951 48.377771 79.514146 49.575257 79.795699 50.785603 79.985444
+ SUBSEGS
+ C 0 0.000000 20.449478 53.855776 59.767750 341.067589 10.297687
+ SUBSEND
+ W3 0 0.000000 50.785603 79.985444 53.206293 80.364936 55.667834 80.373884 58.118088 80.377080
+ SUBSEGS
+ C 0 0.000000 32.024362 55.547861 48.317154 351.447976 6.570878
+ C 0 0.000000 93.002311 57.662578 -12.624116 358.014742 2.265884
+ SUBSEND
+ END$SEGS
+STRAIGHT 1499 2 0 0 0 N 2 0.000000 0.000000
+ T4 1476 64.417295 80.385295 269.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.652560
+ T4 465 74.888386 80.398951 89.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.652560
+ END$SEGS
+STRAIGHT 1500 2 0 0 0 N 2 0.000000 0.000000
+ T4 465 136.980697 80.490733 269.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.736876
+ T4 1477 151.779057 80.510033 89.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.736876
+ END$SEGS
+STRAIGHT 1501 2 0 0 0 N 2 0.000000 0.000000
+ T4 1478 136.855528 78.870569 269.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.730139
+ T4 1515 140.162171 78.874881 89.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.730139
+ END$SEGS
+CORNU 1502 2 0 0 0 N 2 158.172470 80.410586 270.000000 0.000000 0.000000 0.000000 179.919799 62.032377 179.495911 35.984252 143.936940 61.715790
+ T4 1477 158.172470 80.410586 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 1.770847
+ T4 444 179.919799 62.032377 179.495911 0 0.0 0.0 0.0 0.0 0 0 0 1.770847
+ W3 0 0.000000 158.172470 80.410586 160.897450 80.410586 163.642494 80.384963 166.312325 79.839512
+ SUBSEGS
+ C 0 0.000000 74.801615 158.737569 5.611106 359.567147 3.134288
+ C 0 0.000000 27.794151 160.957142 52.566140 2.693091 8.415729
+ SUBSEND
+ W3 0 0.000000 166.312325 79.839512 167.647241 79.566786 168.958370 79.168663 170.205506 78.620000
+ SUBSEGS
+ C 0 0.000000 19.214434 162.547777 60.997467 11.298645 12.188321
+ SUBSEND
+ W3 0 0.000000 170.205506 78.620000 171.452642 78.071337 172.634613 77.372012 173.704657 76.528576
+ SUBSEGS
+ C 0 0.000000 16.173037 163.723826 63.802613 23.626371 14.480327
+ SUBSEND
+ W3 0 0.000000 173.704657 76.528576 174.774702 75.685140 175.731555 74.698264 176.540893 73.602203
+ SUBSEGS
+ C 0 0.000000 15.317642 164.221248 64.499648 38.251665 15.288937
+ SUBSEND
+ W3 0 0.000000 176.540893 73.602203 177.350232 72.506142 178.011383 71.302170 178.517501 70.037171
+ SUBSEGS
+ C 0 0.000000 16.022200 163.630501 64.113648 53.685796 14.616644
+ SUBSEND
+ W3 0 0.000000 178.517501 70.037171 179.023619 68.772171 179.374831 67.447349 179.595748 66.102888
+ SUBSEGS
+ C 0 0.000000 18.791771 161.040244 63.132380 68.442369 12.462456
+ SUBSEND
+ W3 0 0.000000 179.595748 66.102888 179.816666 64.758427 179.907812 63.394814 179.919799 62.032377
+ SUBSEGS
+ C 0 0.000000 26.544184 153.375694 61.967372 81.036952 8.822735
+ SUBSEND
+ END$SEGS
+TURNOUT 1503 2 0 0 0 N 2 139.538180 77.659141 0 167.678901 "Peco-80 Medium Left SL-1739/396"
+ T4 1513 139.538180 77.659141 77.678901 0 0.0 0.0 0.0 0.0 0 0 0 1.728406
+ T4 1516 134.780274 76.619914 257.678901 0 0.0 0.0 0.0 0.0 0 0 0 1.728406
+ T4 1514 134.891663 76.109937 243.678901 0 0.0 0.0 0.0 0.0 0 0 0 1.728406
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.973080 0.000000
+ S 0 0.000000 0.973080 0.000000 4.870079 0.000000
+ C 0 0.000000 -14.687496 0.973099 14.687496 165.999924 14.000152
+ S 0 0.000000 4.526342 0.436290 4.870079 0.522000
+ END$SEGS
+STRAIGHT 1504 2 0 0 0 N 2 0.000000 0.000000
+ T4 1477 151.873257 79.888586 82.000000 0 0.0 0.0 0.0 0.0 0 0 0 1.742952
+ T4 1512 147.845106 79.322466 262.000000 0 0.0 0.0 0.0 0.0 0 0 0 1.742952
+ END$SEGS
+CORNU 1505 2 0 0 0 N 2 121.576173 55.439757 0.335532 126.900200 -5.321851 56.182898 121.406336 46.145647 180.149227 199.899089 -78.492075 46.666286
+ T4 1514 121.576173 55.439757 0.335532 0 0.0 0.0 0.0 0.0 0 0 0 1.706565
+ T4 1506 121.406336 46.145647 180.149227 0 0.0 0.0 0.0 0.0 0 0 0 1.706565
+ W3 0 0.000000 121.576173 55.439757 121.558027 52.341097 121.414407 49.244349 121.406336 46.145647
+ SUBSEGS
+ C 0 0.000000 521.935803 -400.310261 62.618388 90.788063 0.765344
+ S 0 0.000000 121.433726 48.469368 121.406336 46.145647
+ SUBSEND
+ END$SEGS
+CORNU 1506 2 0 0 0 N 2 121.406336 46.145647 0.149227 199.899089 -78.492075 46.666286 121.250333 39.771331 183.650347 22.499390 98.796591 41.203810
+ T4 1505 121.406336 46.145647 0.149227 0 0.0 0.0 0.0 0.0 0 0 0 1.704887
+ T4 1507 121.250333 39.771331 183.650347 0 0.0 0.0 0.0 0.0 0 0 0 1.704887
+ W3 0 0.000000 121.406336 46.145647 121.400800 44.020071 121.385663 41.892601 121.250333 39.771331
+ SUBSEGS
+ C 0 0.000000 104.382831 17.025434 45.511165 89.651731 3.500457
+ SUBSEND
+ END$SEGS
+CORNU 1507 2 0 0 0 N 2 121.250333 39.771331 3.650347 22.499390 98.796591 41.203810 117.074925 29.416515 226.370919 12.154310 108.688609 38.214069
+ T4 1506 121.250333 39.771331 3.650347 0 0.0 0.0 0.0 0.0 0 0 0 1.702237
+ T4 1508 117.074925 29.416515 226.370919 0 0.0 0.0 0.0 0.0 0 0 0 1.702237
+ W3 0 0.000000 121.250333 39.771331 121.128994 37.869370 120.795727 35.971514 120.139904 34.182080
+ SUBSEGS
+ C 0 0.000000 19.921049 101.356835 40.818685 93.013730 16.446067
+ SUBSEND
+ W3 0 0.000000 120.139904 34.182080 119.811993 33.287364 119.397822 32.423011 118.886151 31.619123
+ SUBSEGS
+ C 0 0.000000 13.276587 107.655978 38.700859 109.898621 12.336871
+ SUBSEND
+ W3 0 0.000000 118.886151 31.619123 118.374480 30.815234 117.764665 30.074013 117.074925 29.416515
+ SUBSEGS
+ C 0 0.000000 11.802264 108.931329 37.959072 122.491929 13.877737
+ SUBSEND
+ END$SEGS
+CORNU 1508 2 0 0 0 N 2 117.074925 29.416515 46.370919 12.154310 108.688609 38.214069 107.558016 25.962758 271.565338 15.330759 107.976805 41.287796
+ T4 1507 117.074925 29.416515 46.370919 0 0.0 0.0 0.0 0.0 0 0 0 1.698017
+ T4 1509 107.558016 25.962758 271.565338 0 0.0 0.0 0.0 0.0 0 0 0 1.698017
+ W3 0 0.000000 117.074925 29.416515 115.820898 28.221107 114.303827 27.307575 112.669051 26.733907
+ SUBSEGS
+ C 0 0.000000 12.302208 108.616332 38.349405 136.562170 24.203632
+ SUBSEND
+ W3 0 0.000000 112.669051 26.733907 111.034276 26.160239 109.289878 25.915431 107.558016 25.962758
+ SUBSEGS
+ C 0 0.000000 14.287090 108.017197 40.242467 160.998165 20.843614
+ SUBSEND
+ END$SEGS
+CORNU 1509 2 0 0 0 N 2 107.558016 25.962758 91.565338 15.330759 107.976805 41.287796 94.687599 35.045794 341.084704 13.517038 107.474701 39.427611
+ T4 1508 107.558016 25.962758 91.565338 0 0.0 0.0 0.0 0.0 0 0 0 1.692220
+ T4 1510 94.687599 35.045794 341.084704 0 0.0 0.0 0.0 0.0 0 0 0 1.692220
+ W3 0 0.000000 107.558016 25.962758 106.160283 26.000954 104.767263 26.230445 103.433807 26.651171
+ SUBSEGS
+ C 0 0.000000 15.096690 107.957513 41.054161 181.516368 15.920146
+ SUBSEND
+ W3 0 0.000000 103.433807 26.651171 102.100350 27.071896 100.826595 27.685175 99.675092 28.478369
+ SUBSEGS
+ C 0 0.000000 14.122840 107.661013 40.126531 197.416589 17.017751
+ SUBSEND
+ W3 0 0.000000 99.675092 28.478369 98.523590 29.271563 97.495822 30.245322 96.649645 31.358471
+ SUBSEGS
+ C 0 0.000000 13.233795 107.172651 39.383411 214.509744 18.160784
+ SUBSEND
+ W3 0 0.000000 96.649645 31.358471 95.803468 32.471620 95.140871 33.723047 94.687599 35.045794
+ SUBSEGS
+ C 0 0.000000 13.142387 107.123332 39.297249 232.838833 18.286935
+ SUBSEND
+ END$SEGS
+CORNU 1510 2 0 0 0 N 2 94.687599 35.045794 161.084704 13.517038 107.474701 39.427611 93.712536 40.175596 356.047749 46.147394 139.750183 43.356311
+ T4 1509 94.687599 35.045794 161.084704 0 0.0 0.0 0.0 0.0 0 0 0 1.687496
+ T4 1511 93.712536 40.175596 356.047749 0 0.0 0.0 0.0 0.0 0 0 0 1.687496
+ W3 0 0.000000 94.687599 35.045794 94.121729 36.697128 93.832852 38.434149 93.712536 40.175596
+ SUBSEGS
+ C 0 0.000000 20.080036 113.759447 41.328505 251.766914 14.941601
+ SUBSEND
+ END$SEGS
+CORNU 1511 2 0 0 0 N 2 93.712536 40.175596 176.047749 46.147394 139.750183 43.356311 94.307189 51.527503 9.040094 36.060312 129.919583 45.861506
+ T4 1510 93.712536 40.175596 176.047749 0 0.0 0.0 0.0 0.0 0 0 0 1.685721
+ T4 1516 94.307189 51.527503 9.040094 0 0.0 0.0 0.0 0.0 0 0 0 1.685721
+ W3 0 0.000000 93.712536 40.175596 93.581695 42.069386 93.590597 43.971505 93.707110 45.866231
+ SUBSEGS
+ C 0 0.000000 43.685893 137.302938 43.062476 266.210982 7.468783
+ SUBSEND
+ W3 0 0.000000 93.707110 45.866231 93.823624 47.760957 94.008917 49.652778 94.307189 51.527503
+ SUBSEGS
+ C 0 0.000000 59.116019 152.725657 42.472874 273.290681 5.519828
+ SUBSEND
+ END$SEGS
+TURNOUT 1512 2 0 0 0 N 2 147.711591 79.312500 0 172.000000 "Peco-80 Wye SL-1741/397"
+ T4 1504 147.711591 79.312500 82.000000 0 0.0 0.0 0.0 0.0 0 0 0 1.737661
+ T4 1513 142.796575 78.358175 258.000000 0 0.0 0.0 0.0 0.0 0 0 0 1.737661
+ T4 1515 142.723927 78.875094 266.000000 0 0.0 0.0 0.0 0.0 0 0 0 1.737661
+ D 0.000000 0.000000
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ C 0 0.000000 -26.154032 0.354335 26.154032 175.999924 4.000152
+ S 0 0.000000 2.178781 0.063715 5.000000 0.261000
+ C 0 0.000000 26.154032 0.354196 -26.154032 0.000076 4.000152
+ S 0 0.000000 2.178781 -0.063715 5.000000 -0.261000
+ END$SEGS
+CORNU 1513 2 0 0 0 N 2 142.796575 78.358175 78.000000 0.000000 0.000000 0.000000 139.538180 77.659141 257.678901 448.673548 235.280706 -360.680136
+ T4 1512 142.796575 78.358175 78.000000 0 0.0 0.0 0.0 0.0 0 0 0 1.733027
+ T4 1503 139.538180 77.659141 257.678901 0 0.0 0.0 0.0 0.0 0 0 0 1.733027
+ W3 0 0.000000 142.796575 78.358175 141.710003 78.127217 140.623441 77.896185 139.538180 77.659141
+ SUBSEGS
+ S 0 0.000000 142.796575 78.358175 139.538180 77.659141
+ SUBSEND
+ END$SEGS
+CORNU 1514 2 0 0 0 N 2 134.891663 76.109937 63.678901 0.000000 0.000000 0.000000 121.576173 55.439757 180.335532 126.900200 -5.321851 56.182898
+ T4 1503 134.891663 76.109937 63.678901 0 0.0 0.0 0.0 0.0 0 0 0 1.716300
+ T4 1505 121.576173 55.439757 180.335532 0 0.0 0.0 0.0 0.0 0 0 0 1.716300
+ W3 0 0.000000 134.891663 76.109937 132.905520 75.127414 130.914874 74.132599 129.098502 72.863383
+ SUBSEGS
+ C 0 0.000000 -84.198242 171.778864 0.421904 331.754047 2.263274
+ C 0 0.000000 -29.915009 146.087226 48.240406 325.396107 6.361621
+ SUBSEND
+ W3 0 0.000000 129.098502 72.863383 127.282130 71.594168 125.648598 70.040866 124.416817 68.198902
+ SUBSEGS
+ C 0 0.000000 -18.879868 139.816463 57.320709 310.277354 15.133168
+ C 0 0.000000 -15.555837 137.340843 59.541327 303.817426 6.114795
+ SUBSEND
+ W3 0 0.000000 124.416817 68.198902 123.185036 66.356938 122.377508 64.244993 121.978205 62.065389
+ SUBSEGS
+ C 0 0.000000 -16.334422 138.063196 59.221727 280.025714 23.312924
+ SUBSEND
+ W3 0 0.000000 121.978205 62.065389 121.578903 59.885785 121.589149 57.655597 121.576173 55.439757
+ SUBSEGS
+ C 0 0.000000 -24.217330 145.834031 57.896618 272.057695 7.854571
+ C 0 0.000000 -86.827052 208.402999 55.637942 269.869221 2.195488
+ SUBSEND
+ END$SEGS
+CORNU 1515 2 0 0 0 N 2 142.723927 78.875094 86.000000 0.000000 0.000000 0.000000 140.162171 78.874881 269.925276 0.000000 0.000000 0.000000
+ T4 1512 142.723927 78.875094 86.000000 0 0.0 0.0 0.0 0.0 0 0 0 1.733434
+ T4 1501 140.162171 78.874881 269.925276 0 0.0 0.0 0.0 0.0 0 0 0 1.733434
+ W3 0 0.000000 142.723927 78.875094 142.297771 78.845294 141.870347 78.834342 141.443355 78.847561
+ SUBSEGS
+ C 0 0.000000 12.718181 141.810600 91.560439 175.881892 5.772787
+ SUBSEND
+ W3 0 0.000000 141.443355 78.847561 141.016364 78.860780 140.589367 78.875438 140.162171 78.874881
+ SUBSEGS
+ C 0 0.000000 -39.734118 139.955766 39.141299 0.297633 1.847942
+ SUBSEND
+ END$SEGS
+CORNU 1516 2 0 0 0 N 2 134.780274 76.619914 77.678901 0.000000 0.000000 0.000000 94.307189 51.527503 189.040094 36.060312 129.919583 45.861506
+ T4 1503 134.780274 76.619914 77.678901 0 0.0 0.0 0.0 0.0 0 0 0 1.702382
+ T4 1511 94.307189 51.527503 189.040094 0 0.0 0.0 0.0 0.0 0 0 0 1.702382
+ W3 0 0.000000 134.780274 76.619914 130.578298 75.702114 126.357934 74.872148 122.139725 74.032104
+ SUBSEGS
+ C 0 0.000000 698.645606 -11.656555 759.746503 167.901028 1.058165
+ SUBSEND
+ W3 0 0.000000 122.139725 74.032104 117.921516 73.192060 113.688647 72.281774 109.708599 70.651380
+ SUBSEGS
+ C 0 0.000000 -116.572951 144.143660 -40.445317 345.945662 3.174098
+ C 0 0.000000 -47.097834 127.266639 26.948735 338.111638 7.840977
+ SUBSEND
+ W3 0 0.000000 109.708599 70.651380 107.718575 69.836183 105.799222 68.837613 104.033857 67.609513
+ SUBSEGS
+ C 0 0.000000 -29.485847 120.718298 43.298104 325.538959 12.536246
+ SUBSEND
+ W3 0 0.000000 104.033857 67.609513 102.268493 66.381414 100.660596 64.922339 99.300357 63.256659
+ SUBSEGS
+ C 0 0.000000 -23.227609 117.238300 48.500236 309.441994 15.913671
+ SUBSEND
+ W3 0 0.000000 99.300357 63.256659 97.940119 61.590978 96.832399 59.721373 96.008073 57.735113
+ SUBSEGS
+ C 0 0.000000 -22.176348 116.500483 49.258585 292.472059 16.667864
+ SUBSEND
+ W3 0 0.000000 96.008073 57.735113 95.183748 55.748853 94.645091 53.651312 94.307189 51.527503
+ SUBSEGS
+ C 0 0.000000 -27.413613 121.413917 47.437090 278.581205 13.483510
+ SUBSEND
+ END$SEGS
+DRAW 1517 2 0 0 0 0.000000 0.000000 0 0.000000
+ Z 263172 90.750000 83.000000 0.000000 1 100.000000 "MAINLINE YARD and REVERSE LOOP BY-PASS "
+ END$SEGS
+DRAW 1518 2 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 96.750000 75.750000 0.000000 1 100.000000 "MAINLINE PASSING SIDING"
+ END$SEGS
+STRAIGHT 1519 0 0 0 0 N 2 0.000000 0.000000
+ T4 1524 33.251182 33.297423 0.001216 0 0.0 0.0 0.0 0.0 0 0 0 16.145071
+ E4 33.250877 18.909615 180.001216 0 0.0 0.0 0.0 0.0 0 0 0 16.145071
+ END$SEGS
+STRAIGHT 1520 0 0 0 0 N 2 0.000000 0.000000
+ T4 1524 33.251400 43.545140 180.001216 0 0.0 0.0 0.0 0.0 0 0 0 16.145071
+ T4 223 33.251601 53.039930 0.001216 0 0.0 0.0 0.0 0.0 0 0 0 16.145071
+ END$SEGS
+STRAIGHT 1521 0 0 0 0 N 2 0.000000 0.000000
+ T4 1226 31.760258 42.776428 0.602603 0 0.0 0.0 0.0 0.0 0 0 0 16.179525
+ E4 31.509424 18.927885 180.602603 0 0.0 0.0 0.0 0.0 0 0 0 16.179525
+ END$SEGS
+STRUCTURE 1522 0 0 0 0 N 2 0.000000 0.000000 0 0.000000 "Northeastern scale models Valley hardware & plumbing (machine tool) 30017"
+ D 0.000000 0.000000
+ END$SEGS
+DRAW 1523 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16744703 0.000000 8 0
+ 32.390625 43.364583 0
+ 34.687500 43.420139 0
+ 34.677089 41.655503 0
+ 37.140481 41.671314 0
+ 37.125400 30.802706 0
+ 34.670891 30.793992 0
+ 34.624416 33.239685 0
+ 32.287290 33.364770 0
+ END$SEGS
+STRAIGHT 1524 0 0 0 0 N 0 0.000000 0.000000
+ T4 1520 33.251400 43.545140 0.001216 0 0.0 0.0 0.0 0.0 0 0 0 16.145071
+ T4 1519 33.251179 33.154977 180.001216 0 0.0 0.0 0.0 0.0 0 0 0 16.145071
+ END$SEGS
+STRUCTURE 1525 5 0 0 0 N 2 34.597771 33.068583 0 0.000000 "DPM mod (2) paragon HC modular HENNIS-SCHMIDT TRANSFER 933-3296"
+ D 0.000000 0.000000
+ L3 0 0.052632 0.088727 0.104056 0 2.525788 0.026302 0
+ L3 0 0.052632 0.079318 8.586920 0 0.026315 0.118336 0
+ END$SEGS
+DRAW 1526 5 0 0 0 32.842296 37.828798 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "HENNIS-SCHMIDT\n TRUCKING \nAND TRANSFER \nCOMPANY"
+ END$SEGS
+STRUCTURE 1527 5 0 0 0 N 2 24.275000 51.123298 0 63.217095 "Northeastern scale models Valley hardware & plumbing (woodenware) 30017"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 3.747031 2.874517 0
+ 1.380896 4.011190 0
+ 0.000000 1.136673 0
+ 2.366136 0.000000 0
+ END$SEGS
+DRAW 1528 5 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 25.843750 50.500000 0.000000 0 18.000000 "MACHINING\nTOOL AND DIE\nWORKS"
+ END$SEGS
+DRAW 1529 7 0 0 0 0.000000 0.000000 0 0.000000
+ F4 5345359 0.000000 5 0
+ 9.422548 52.898026 2
+ 6.850649 52.437500 2
+ 5.047548 46.710526 2
+ 6.797548 49.835526 2
+ 7.975649 50.812500 0
+ END$SEGS
+STRUCTURE 1530 7 0 0 0 N 2 7.875000 51.239583 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1531 7 0 0 0 N 2 6.500000 50.552083 0 0.000000 " 2"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.042164 1.000000 1.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.053333 0.946667 0 1.666667 0.280000 0
+ L3 2263842 0.000000 1.026667 1.026667 0 1.853333 1.506667 0
+ L3 2263842 0.000000 0.986667 1.053333 0 0.640000 1.933333 0
+ L3 2263842 0.000000 0.960000 1.013333 0 0.026667 1.133333 0
+ L3 2263842 0.000000 0.960000 0.973333 0 0.253333 0.360000 0
+ L3 2263842 0.000000 1.000000 0.960000 0 0.933333 0.013333 0
+ L3 2263842 0.000000 1.013333 1.053333 0 1.346667 1.933333 0
+ L3 2263842 0.000000 1.160000 0.986667 0 1.960000 0.840000 0
+ L3 2263842 0.000000 1.120000 0.640000 0 1.333333 0.093333 0
+ L3 2263842 0.000000 0.773333 0.586667 0 0.466667 0.186667 0
+ L3 2263842 0.000000 0.613333 0.906667 0 0.026667 0.773333 0
+ L3 2263842 0.000000 0.693333 1.186667 0 0.226667 1.613333 0
+ L3 2263842 0.000000 1.000000 1.986667 0 0.986667 1.413333 0
+ L3 2263842 0.000000 1.666667 1.746667 0 1.240000 1.306667 0
+ L3 2263842 0.000000 1.413333 1.080000 0 1.973333 1.160000 0
+ L3 2263842 0.000000 1.853333 0.506667 0 1.346667 0.773333 0
+ L3 2263842 0.000000 1.600000 0.760000 0 1.906667 0.680000 0
+ L3 2263842 0.000000 1.693333 0.960000 0 1.973333 0.973333 0
+ L3 2263842 0.000000 1.946667 1.346667 0 1.640000 1.240000 0
+ L3 2263842 0.000000 1.746667 1.653333 0 1.506667 1.426667 0
+ L3 2263842 0.000000 1.146667 1.973333 0 1.080000 1.653333 0
+ L3 2263842 0.000000 0.400000 1.786667 0 0.626667 1.506667 0
+ L3 2263842 0.000000 0.106667 1.400000 0 0.453333 1.226667 0
+ L3 2263842 0.000000 0.106667 0.560000 0 0.573333 0.786667 0
+ L3 2263842 0.000000 0.866667 0.520000 0 0.693333 0.066667 0
+ END$SEGS
+STRUCTURE 1532 7 0 0 0 N 2 5.375000 48.177083 0 0.000000 " 3"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.063246 1.500000 1.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 1.580000 1.420000 0 2.500000 0.420000 0
+ L3 2263842 0.000000 1.540001 1.540001 0 2.779999 2.260000 0
+ L3 2263842 0.000000 1.480001 1.580000 0 0.960000 2.899999 0
+ L3 2263842 0.000000 1.440000 1.519999 0 0.040001 1.699999 0
+ L3 2263842 0.000000 1.440000 1.459999 0 0.379999 0.540000 0
+ L3 2263842 0.000000 1.500000 1.440000 0 1.399999 0.019999 0
+ L3 2263842 0.000000 1.519999 1.580000 0 2.020001 2.899999 0
+ L3 2263842 0.000000 1.740000 1.480001 0 2.940000 1.260000 0
+ L3 2263842 0.000000 1.680000 0.960000 0 2.000000 0.139999 0
+ L3 2263842 0.000000 1.160000 0.880001 0 0.700001 0.280000 0
+ L3 2263842 0.000000 0.920000 1.360000 0 0.040001 1.160000 0
+ L3 2263842 0.000000 1.039999 1.780000 0 0.340001 2.419999 0
+ L3 2263842 0.000000 1.500000 2.980001 0 1.480001 2.120000 0
+ L3 2263842 0.000000 2.500000 2.620000 0 1.860000 1.960001 0
+ L3 2263842 0.000000 2.120000 1.620000 0 2.959999 1.740000 0
+ L3 2263842 0.000000 2.779999 0.760000 0 2.020001 1.160000 0
+ L3 2263842 0.000000 2.400000 1.140000 0 2.860000 1.020000 0
+ L3 2263842 0.000000 2.539999 1.440000 0 2.959999 1.459999 0
+ L3 2263842 0.000000 2.920000 2.020001 0 2.460000 1.860000 0
+ L3 2263842 0.000000 2.620000 2.479999 0 2.260000 2.140000 0
+ L3 2263842 0.000000 1.720001 2.959999 0 1.620000 2.479999 0
+ L3 2263842 0.000000 0.600000 2.680001 0 0.940001 2.260000 0
+ L3 2263842 0.000000 0.160000 2.100000 0 0.679999 1.840000 0
+ L3 2263842 0.000000 0.160000 0.840000 0 0.860000 1.180001 0
+ L3 2263842 0.000000 1.300000 0.780000 0 1.039999 0.100001 0
+ END$SEGS
+STRUCTURE 1533 7 0 0 0 N 2 4.687500 46.802083 0 0.000000 " 3"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.500000 1.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.308928 1.828929 2.660000 0 270.000000 215.637778
+ A3 2263842 0.000000 0.260138 2.348031 2.434806 0 298.767649 215.737855
+ A3 2263842 0.000000 0.257007 2.630854 1.991925 0 324.057888 227.354676
+ A3 2263842 0.000000 0.370144 2.572599 1.369930 0 1.145763 180.804790
+ A3 2263842 0.000000 0.347216 2.375719 0.754941 0 40.236358 182.520220
+ A3 2263842 0.000000 0.349930 1.788907 0.366732 0 71.113913 194.504907
+ A3 2263842 0.000000 0.423598 1.065815 0.538548 0 117.950969 168.710472
+ A3 2263842 0.000000 0.323256 0.480690 0.928965 0 146.309932 187.890372
+ A3 2263842 0.000000 0.316352 0.314772 1.535344 0 175.426079 200.202923
+ A3 2263842 0.000000 0.382763 0.612320 2.158479 0 213.690068 179.169641
+ A3 2263842 0.000000 0.200714 0.951191 2.631905 0 220.815084 209.352786
+ A3 2263842 0.000000 0.223607 1.340000 2.800001 0 243.434949 233.130102
+ A3 2263842 0.000000 0.089442 1.500000 1.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1534 5 0 0 0 N 2 180.500000 75.687995 0 0.000000 "unk abandoned junk cars 001"
+ D 0.000000 0.000000
+ F4 10381066 0.000000 4 0
+ 0.000000 2.062005 0
+ 1.300000 2.062005 0
+ 1.300000 1.562005 0
+ 0.000000 1.562005 0
+ F4 10381066 0.000000 4 0
+ 2.153081 0.393224 0
+ 3.014587 1.366778 0
+ 3.389031 1.035430 0
+ 2.527525 0.061876 0
+ F4 10381066 0.000000 4 0
+ 1.664651 2.291127 0
+ 2.919541 1.951640 0
+ 2.788969 1.468990 0
+ 1.534079 1.808477 0
+ F4 10381066 0.000000 4 0
+ 1.222275 1.409279 0
+ 2.522275 1.409279 0
+ 2.522275 0.909279 0
+ 1.222275 0.909279 0
+ F4 10381066 0.000000 4 0
+ 0.234007 0.481906 0
+ 1.486962 0.828468 0
+ 1.620255 0.346562 0
+ 0.367300 0.000000 0
+ END$SEGS
+STRUCTURE 1535 5 0 0 0 N 2 157.437793 77.905486 0 0.000000 "me stockyard gates 001"
+ D 0.000000 0.000000
+ L3 655617 0.042105 0.355835 0.184804 0 0.009082 0.018993 0
+ L3 788231 0.042105 4.108041 2.578889 0 4.805957 2.545035 0
+ L3 788231 0.042105 3.360644 3.170035 0 4.050749 3.177847 0
+ L3 788231 0.042105 4.509082 2.724722 0 4.075037 3.147103 0
+ L3 788231 0.042105 4.076535 2.606682 0 3.587207 3.084097 0
+ L3 788231 0.042105 5.016894 2.513785 0 4.517745 2.996062 0
+ L3 788231 0.042105 6.688769 1.474722 0 6.637789 2.060810 0
+ END$SEGS
+STRUCTURE 1536 0 0 0 0 N 2 0.000000 0.000000 0 0.000000 "unk group of trees2 02"
+ D 0.000000 0.000000
+ END$SEGS
+STRUCTURE 1537 0 0 0 0 N 2 30.000000 31.000000 0 0.000000 "MONROE MODELS Gantry crane (modified) 9301M"
+ D 0.000000 0.000000
+ F4 16744703 0.041667 4 0
+ 0.000000 1.500000 0
+ 0.250000 1.500000 0
+ 0.250000 0.000000 0
+ 0.000000 0.000000 0
+ F4 16744703 0.041667 4 0
+ 4.000000 1.541667 0
+ 4.250000 1.541667 0
+ 4.250000 0.041667 0
+ 4.000000 0.041667 0
+ F4 16744703 0.041667 4 0
+ 0.250000 0.968750 0
+ 4.031250 0.932292 0
+ 4.015625 0.562500 0
+ 0.250000 0.583750 0
+ END$SEGS
+CORNU 1538 0 0 0 0 N 2 126.766295 40.213341 1.332044 0.000000 0.000000 0.000000 126.278937 33.005358 187.539716 37.364692 89.237295 37.908107
+ T4 810 126.766295 40.213341 1.332044 9 0.000000 0.000000 15.015595 15.015595 1 1 0 14.963692
+ T4 820 126.278937 33.005358 187.539716 0 0.0 0.0 0.0 0.0 0 0 0 14.963692
+ W3 0 0.000000 126.766295 40.213341 126.710285 37.804602 126.595081 35.393917 126.278937 33.005358
+ SUBSEGS
+ C 0 0.000000 77.357625 49.420780 41.582047 91.013800 4.015447
+ C 0 0.000000 47.245417 79.438184 39.175713 95.313491 2.190902
+ SUBSEND
+ END$SEGS
+STRUCTURE 1539 7 0 0 0 N 2 118.916193 23.364583 0 0.000000 " 2"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 1.000000 1.000000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.205952 1.219286 1.773333 0 270.000000 215.637778
+ A3 2263842 0.000000 0.173425 1.565354 1.623204 0 298.767649 215.737855
+ A3 2263842 0.000000 0.171338 1.753903 1.327950 0 324.057888 227.354676
+ A3 2263842 0.000000 0.246763 1.715066 0.913287 0 1.145763 180.804790
+ A3 2263842 0.000000 0.231477 1.583813 0.503294 0 40.236358 182.520220
+ A3 2263842 0.000000 0.233287 1.192605 0.244488 0 71.113913 194.504907
+ A3 2263842 0.000000 0.282399 0.710543 0.359032 0 117.950969 168.710472
+ A3 2263842 0.000000 0.215504 0.320460 0.619310 0 146.309932 187.890372
+ A3 2263842 0.000000 0.210901 0.209848 1.023563 0 175.426079 200.202923
+ A3 2263842 0.000000 0.255175 0.408213 1.438986 0 213.690068 179.169641
+ A3 2263842 0.000000 0.133809 0.634127 1.754603 0 220.815084 209.352786
+ A3 2263842 0.000000 0.149071 0.893333 1.866667 0 243.434949 233.130102
+ A3 2263842 0.000000 0.059628 1.000000 1.000000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1540 7 0 0 0 N 2 118.197443 25.239583 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1541 7 0 0 0 N 2 117.728693 24.677083 0 0.000000 " 1"" Shade Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.000000 0.500000 0.500000 0 0.000000 360.000000
+ A3 2263842 0.000000 0.102976 0.609643 0.886667 0 270.000000 215.637778
+ A3 2263842 0.000000 0.086712 0.782677 0.811602 0 298.767649 215.737855
+ A3 2263842 0.000000 0.085669 0.876951 0.663975 0 324.057888 227.354676
+ A3 2263842 0.000000 0.123382 0.857533 0.456643 0 1.145763 180.804790
+ A3 2263842 0.000000 0.115738 0.791906 0.251647 0 40.236358 182.520220
+ A3 2263842 0.000000 0.116643 0.596302 0.122244 0 71.113913 194.504907
+ A3 2263842 0.000000 0.141200 0.355272 0.179516 0 117.950969 168.710472
+ A3 2263842 0.000000 0.107752 0.160230 0.309655 0 146.309932 187.890372
+ A3 2263842 0.000000 0.105451 0.104924 0.511782 0 175.426079 200.202923
+ A3 2263842 0.000000 0.127587 0.204106 0.719493 0 213.690068 179.169641
+ A3 2263842 0.000000 0.066905 0.317063 0.877301 0 220.815084 209.352786
+ A3 2263842 0.000000 0.074536 0.446667 0.933334 0 243.434949 233.130102
+ A3 2263842 0.000000 0.029814 0.500000 0.500000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE 1542 0 0 0 0 N 2 110.595130 17.827939 0 0.000000 "MUIR MODELS kearsarge truck rail terminal (Barrel and crate) 584"
+ D 0.000000 0.000000
+ F4 16744703 0.000000 4 0
+ 0.000000 1.985803 0
+ 3.697814 4.616319 0
+ 5.110456 2.630516 0
+ 1.412642 0.000000 0
+ L3 1115911 0.041667 0.535566 1.232937 0 4.279083 3.799207 0
+ END$SEGS
+DRAW 1543 6 0 0 0 0.000000 0.000000 0 0.000000
+ F4 14592682 0.041667 9 0
+ 116.978693 22.854167 0
+ 116.666193 21.791667 2
+ 115.853693 20.291667 2
+ 113.041193 18.416667 0
+ 114.041193 16.854167 0
+ 116.166193 18.541667 2
+ 116.666193 19.291667 2
+ 118.103693 21.354167 2
+ 118.978693 22.229167 0
+ END$SEGS
+DRAW 1544 5 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 112.267659 19.422210 325.669511 0 18.000000 "BUDDY'S WOOD BOX \n AND BARREL"
+ END$SEGS
+DRAW 1545 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12474302 0.080000 4 0
+ 14.531250 96.203125 0
+ 17.231250 96.203125 0
+ 17.231250 91.863125 0
+ 14.531250 91.863125 0
+ END$SEGS
+DRAW 1546 6 0 0 0 79.555502 150.086657 0 0.000000
+ F4 12632256 0.000000 15 0
+ -62.836752 -59.628324 2
+ -63.836752 -61.034574 0
+ -62.774252 -61.722074 0
+ -58.164876 -54.534574 0
+ -59.480005 -53.827466 0
+ -59.702063 -54.080390 2
+ -61.649252 -52.909574 0
+ -64.743002 -52.472074 2
+ -65.086752 -53.847074 0
+ -62.305502 -53.909574 0
+ -62.336752 -58.315824 0
+ -65.118002 -58.284574 0
+ -66.836752 -58.784574 0
+ -65.586752 -59.659574 0
+ -65.024252 -59.440824 1
+ END$SEGS
+CORNU 1547 0 0 0 0 N 0 195.961323 90.660654 100.228415 15.444285 193.218838 75.461815 149.875000 76.750000 256.890791 77.129368 167.368546 1.630660
+ T4 869 195.961323 90.660654 100.228415 0 0.0 0.0 0.0 0.0 0 0 0 14.042599
+ T4 1550 149.875000 76.750000 256.890791 0 0.0 0.0 0.0 0.0 0 0 0 14.042599
+ W3 0 0.000000 195.961323 90.660654 193.966272 91.020642 191.911075 90.983789 189.907330 90.675851
+ SUBSEGS
+ C 0 0.000000 -18.415678 192.888729 72.503111 350.683117 18.921409
+ SUBSEND
+ W3 0 0.000000 189.907330 90.675851 187.903585 90.367912 185.947740 89.792776 184.049861 89.080122
+ SUBSEGS
+ C 0 0.000000 -29.447524 194.677561 61.617262 338.844338 11.833189
+ SUBSEND
+ W3 0 0.000000 184.049861 89.080122 180.254104 87.654814 176.679276 85.709713 173.024655 83.953859
+ SUBSEGS
+ C 0 0.000000 -66.167151 207.799030 27.321974 333.701990 5.263704
+ S 0 0.000000 178.484332 86.640945 173.024655 83.953859
+ SUBSEND
+ W3 0 0.000000 173.024655 83.953859 169.370034 82.198005 165.610360 80.645039 161.719100 79.506014
+ SUBSEGS
+ C 0 0.000000 80.943270 137.626714 156.746707 154.067123 6.457540
+ C 0 0.000000 60.360462 144.731589 137.426733 160.768681 2.885485
+ SUBSEND
+ W3 0 0.000000 161.719100 79.506014 157.827841 78.366988 153.823875 77.669601 149.875000 76.750000
+ SUBSEGS
+ C 0 0.000000 86.575355 137.982814 162.763931 164.087497 4.023567
+ C 0 0.000000 -427.134049 243.823385 -339.923970 347.293869 0.816014
+ SUBSEND
+ END$SEGS
+CORNU 1548 0 0 0 0 N 2 141.843733 74.275260 67.360415 38.057383 156.493278 39.150408 133.202040 68.348783 221.591241 20.412175 148.468297 54.798939
+ T4 1550 141.843733 74.275260 67.360415 0 0.0 0.0 0.0 0.0 0 0 0 14.615939
+ T4 1549 133.202040 68.348783 221.591241 0 0.0 0.0 0.0 0.0 0 0 0 14.615939
+ W3 0 0.000000 141.843733 74.275260 140.217498 73.597005 138.638234 72.796159 137.176304 71.812580
+ SUBSEGS
+ C 0 0.000000 -26.839806 151.974331 49.420760 326.540577 11.283802
+ SUBSEND
+ W3 0 0.000000 137.176304 71.812580 135.714375 70.829000 134.371681 69.666587 133.202040 68.348783
+ SUBSEGS
+ C 0 0.000000 -20.948506 148.843639 54.413924 311.697351 14.457305
+ SUBSEND
+ END$SEGS
+CORNU 1549 0 0 0 0 N 2 133.202040 68.348783 41.591241 20.412175 148.468297 54.798939 128.978612 60.981052 199.912745 35.984252 162.811451 48.725223
+ T4 1548 133.202040 68.348783 41.591241 0 0.0 0.0 0.0 0.0 0 0 0 14.760064
+ T4 611 128.978612 60.981052 199.912745 0 0.0 0.0 0.0 0.0 0 0 0 14.760064
+ W3 0 0.000000 133.202040 68.348783 132.256521 67.283491 131.427883 66.115123 130.729983 64.873434
+ SUBSEGS
+ C 0 0.000000 -19.999591 148.170335 55.084779 299.303964 12.241474
+ SUBSEND
+ W3 0 0.000000 130.729983 64.873434 130.032083 63.631746 129.463739 62.320270 128.978612 60.981052
+ SUBSEGS
+ C 0 0.000000 -25.989298 153.474914 52.299187 289.515106 9.420349
+ SUBSEND
+ END$SEGS
+CORNU 1550 0 0 0 0 N 0 149.875000 76.750000 76.890791 77.129368 167.368546 1.630660 141.843733 74.275260 247.360415 38.057383 156.493278 39.150408
+ T4 1547 149.875000 76.750000 76.890791 0 0.0 0.0 0.0 0.0 0 0 0 14.472812
+ T4 1548 141.843733 74.275260 247.360415 0 0.0 0.0 0.0 0.0 0 0 0 14.472812
+ W3 0 0.000000 149.875000 76.750000 147.143486 76.113894 144.432226 75.354844 141.843733 74.275260
+ SUBSEGS
+ C 0 0.000000 -57.394433 162.485372 20.758041 341.007335 6.300418
+ C 0 0.000000 -37.347262 156.192000 39.794176 337.406830 3.225417
+ SUBSEND
+ END$SEGS
+DRAW 1551 11 0 0 0 0.000000 0.000000 0 0.000000
+ L3 12632256 0.041667 0.241574 15.745904 0 216.000000 14.875000 0
+ END$SEGS
+TURNOUT 1552 0 0 0 0 N 2 146.871282 86.074481 0 178.173410 "Peco-80 Medium Left SL-1739/396"
+ T4 1383 146.871282 86.074481 88.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.280190
+ T4 1341 142.003678 85.919249 268.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.280190
+ T4 331 142.020316 85.397514 254.173410 0 0.0 0.0 0.0 0.0 0 0 0 15.280190
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.973080 0.000000
+ S 0 0.000000 0.973080 0.000000 4.870079 0.000000
+ C 0 0.000000 -14.687496 0.973099 14.687496 165.999924 14.000152
+ S 0 0.000000 4.526342 0.436290 4.870079 0.522000
+ END$SEGS
+STRAIGHT 1553 0 0 0 0 N 2 0.000000 0.000000
+ E4 126.005896 44.379884 20.155323 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ T4 1556 124.535723 40.374435 200.155323 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ END$SEGS
+TURNOUT 1554 0 0 0 0 N 2 115.547424 29.317015 0 322.749832 "Peco-80 Large Left SL-1737/389"
+ T4 1558 115.547424 29.317015 232.749832 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ T4 1555 120.561599 33.129905 52.749832 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ T4 1556 120.245635 33.545417 44.749832 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.299213 0.000000
+ C 0 0.000000 -31.901195 0.354342 31.901195 171.999924 8.000152
+ S 0 0.000000 4.794168 0.310471 6.299213 0.522000
+ END$SEGS
+CORNU 1555 0 0 0 0 N 2 123.034383 35.129387 49.082044 10.374016 116.239634 42.968494 120.561599 33.129905 232.749832 0.000000 0.000000 0.000000
+ T4 812 123.034383 35.129387 49.082044 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ T4 1554 120.561599 33.129905 232.749832 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ W3 0 0.000000 123.034383 35.129387 122.633843 34.782209 122.217983 34.453160 121.808376 34.116727
+ SUBSEGS
+ C 0 0.000000 59.954684 84.243593 80.844141 139.684068 1.519672
+ SUBSEND
+ W3 0 0.000000 121.808376 34.116727 121.398769 33.780294 120.983528 33.450749 120.561599 33.129905
+ SUBSEGS
+ C 0 0.000000 42.415918 94.865366 66.876219 140.564447 2.147984
+ SUBSEND
+ END$SEGS
+CORNU 1556 0 0 0 0 N 2 124.535723 40.374435 20.155323 0.000000 0.000000 0.000000 120.245635 33.545417 224.749832 0.000000 0.000000 0.000000
+ T4 1553 124.535723 40.374435 20.155323 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ T4 1554 120.245635 33.545417 224.749832 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ W3 0 0.000000 124.535723 40.374435 124.067354 39.098377 123.568654 37.824044 122.851050 36.669602
+ SUBSEGS
+ C 0 0.000000 24.974121 100.963402 48.623825 109.288049 7.018206
+ C 0 0.000000 12.461191 112.256981 43.230622 117.089273 4.681102
+ SUBSEND
+ W3 0 0.000000 122.851050 36.669602 122.492247 36.092381 122.085086 35.545773 121.642999 35.029553
+ SUBSEGS
+ C 0 0.000000 13.416438 111.475934 43.783500 122.021502 8.707284
+ SUBSEND
+ W3 0 0.000000 121.642999 35.029553 121.200912 34.513334 120.724116 34.028096 120.245635 33.545417
+ SUBSEGS
+ C 0 0.000000 27.996511 100.574410 53.466450 131.188823 4.172682
+ SUBSEND
+ END$SEGS
+STRAIGHT 1557 0 0 0 0 N 2 0.000000 0.000000
+ T4 1558 112.327539 26.960588 55.345032 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ E4 98.935521 17.703079 235.345032 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ END$SEGS
+CORNU 1558 0 0 0 0 N 2 115.547424 29.317015 52.749832 0.000000 0.000000 0.000000 112.327539 26.960588 235.345032 0.000000 0.000000 0.000000
+ T4 1554 115.547424 29.317015 52.749832 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ T4 1557 112.327539 26.960588 235.345032 0 0.0 0.0 0.0 0.0 0 0 0 15.015662
+ W3 0 0.000000 115.547424 29.317015 114.488597 28.511859 113.421736 27.716974 112.327539 26.960588
+ SUBSEGS
+ C 0 0.000000 88.098803 61.921653 99.214624 142.504412 2.595176
+ SUBSEND
+ END$SEGS
+CAR 1 N "Kato F3A EMD Cab A 176-1203 Western Pacific WP 803" 6 10101 3.631 0.750 0 0 2.881 4.031 16744512 0.000 0.000 0 0 0 0 0 0 0 0 0 ""
+CAR 5 N "Kato F3A EMD Cab A 176-1203 Western Pacific WP 803" 2 10101 3.631 0.750 0 0 2.881 4.031 16744512 0.000 0.000 0 0 0 0 0 0 0 0 0 ""
+CAR 2 N "Kato F3B EMD 176-1208 Western Pacific WP " 2 10101 3.525 0.750 0 0 2.775 3.925 16744512 0.000 0.000 0 0 0 0 0 0 0 0 0 ""
+CAR 3 N "Kato F7A EMD Double Headlight 106-0416 (1) Great Northern GN 3648" 2 10101 3.000 0.667 0 0 1.917 3.400 8388608 0.010 0.020 0 0 0 0 0 0 0 0 0 ""
+CAR 4 N "Kato F7B EMD 106-0416 (2) Great Northern GN " 6 10101 3.000 0.667 0 0 1.917 3.400 8388608 0.010 0.020 0 0 0 0 0 0 0 0 0 ""
+CAR 6 N "Kato Coach, 85' California Zephyr Vista Dome Silver Bridle 106-055 (2) Chicago Burlington & Quincy CB&Q 4716" 0 50100 6.450 0.750 0 0 5.713 6.850 12632256 0.000 0.000 0 0 0 0 0 0 0 0 0 ""
+CAR 7 N "Kato Coach, 85' California Zephyr Vista Dome Silver Bridle 106-055 (2) Chicago Burlington & Quincy CB&Q 4716" 0 50100 6.450 0.750 0 0 5.713 6.850 12632256 0.000 0.000 0 0 0 0 0 0 0 0 0 ""
+CAR 8 N "Kato Coach, 85' California Zephyr Vista Dome Silver Bridle 106-055 (2) Chicago Burlington & Quincy CB&Q 4716" 0 50100 6.450 0.750 0 0 5.713 6.850 12632256 0.000 0.000 0 0 0 0 0 0 0 0 0 ""
+CAR 9 N "Kato Coach, 85' California Zephyr Vista Dome Silver Bridle 106-055 (2) Chicago Burlington & Quincy CB&Q 4716" 0 50100 6.450 0.750 0 0 5.713 6.850 12632256 0.000 0.000 0 0 0 0 0 0 0 0 0 ""
+CAR 10 N "Kato Coach, 85' California Zephyr Vista Dome Silver Bridle 106-055 (2) Chicago Burlington & Quincy CB&Q 4716" 0 50100 6.450 0.750 0 0 5.713 6.850 12632256 0.000 0.000 0 0 0 0 0 0 0 0 0 ""
+CAR 11 N "Kato Coach, 85' California Zephyr Vista Dome Silver Bridle 106-055 (2) Chicago Burlington & Quincy CB&Q 4716" 0 50100 6.450 0.750 0 0 5.713 6.850 12632256 0.000 0.000 0 0 0 0 0 0 0 0 0 ""
+END$TRACKS
diff --git a/app/lib/examples/PrinterMarginTest-A4.xtc b/app/lib/examples/PrinterMarginTest-A4.xtc
new file mode 100644
index 0000000..e74d294
--- /dev/null
+++ b/app/lib/examples/PrinterMarginTest-A4.xtc
@@ -0,0 +1,207 @@
+#XTrackCAD Version: 5.3.0Beta1, Date: Sun Aug 14 20:41:38 2022
+
+VERSION 12 5.2.0
+TITLE1 Printer Margins Test
+TITLE2
+MAPSCALE 41
+ROOMSIZE 96.000000 x 48.000000
+SCALE HO
+LAYERS 0 1 0 1 255 0 0 0 0 "Main" 1 0 9.750000 0.000000 0.616800 0.100000 0.200000
+LAYERS CURRENT 1
+DRAW 1 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 1.000000 8.000000 0.000000 0 60.000000 "XTrkCad"
+ END$SEGS
+DRAW 2 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 1.000000 6.968750 0.000000 0 48.000000 "Printer Margin"
+ END$SEGS
+DRAW 3 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 1.000000 5.937500 0.000000 0 48.000000 "Page Size: A4"
+ END$SEGS
+DRAW 4 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 1.031250 4.968750 0.000000 0 24.000000 "Print with 'Ignore Page Margins'\nand Print Scale = 1"
+ END$SEGS
+STRUCTURE 5 0 0 0 0 HO 2 0.000000 0.000000 0 0.000000 "test Printer Margin test A4"
+ D 0.000000 0.000000
+ L3 0 0.000000 0.000000 0.000000 0 3.937008 0.000000 0
+ L3 0 0.000000 0.000000 0.039370 0 3.897638 0.039370 0
+ L3 0 0.000000 0.000000 0.078740 0 3.858268 0.078740 0
+ L3 0 0.000000 0.000000 0.118110 0 3.818898 0.118110 0
+ L3 0 0.000000 0.000000 0.157480 0 3.779528 0.157480 0
+ L3 0 0.000000 0.000000 0.196850 0 3.740157 0.196850 0
+ L3 0 0.000000 0.000000 0.236220 0 3.700787 0.236220 0
+ L3 0 0.000000 0.000000 0.275591 0 3.661417 0.275591 0
+ L3 0 0.000000 0.000000 0.314961 0 3.622047 0.314961 0
+ L3 0 0.000000 0.000000 0.354331 0 3.582677 0.354331 0
+ L3 0 0.000000 0.000000 0.393701 0 3.543307 0.393701 0
+ L3 0 0.000000 0.000000 0.433071 0 3.503937 0.433071 0
+ L3 0 0.000000 0.000000 0.472441 0 3.464567 0.472441 0
+ L3 0 0.000000 0.000000 0.511811 0 3.425197 0.511811 0
+ L3 0 0.000000 0.000000 0.551181 0 3.385827 0.551181 0
+ L3 0 0.000000 0.000000 0.590551 0 3.346457 0.590551 0
+ L3 0 0.000000 0.000000 0.629921 0 3.307087 0.629921 0
+ L3 0 0.000000 0.000000 0.669291 0 3.267717 0.669291 0
+ L3 0 0.000000 0.000000 0.708661 0 3.228346 0.708661 0
+ L3 0 0.000000 0.000000 0.748031 0 3.188976 0.748031 0
+ L3 0 0.000000 0.000000 0.787402 0 3.149606 0.787402 0
+ L3 0 0.000000 0.000000 0.826772 0 3.110236 0.826772 0
+ L3 0 0.000000 0.000000 0.866142 0 3.070866 0.866142 0
+ L3 0 0.000000 0.000000 0.905512 0 3.031496 0.905512 0
+ L3 0 0.000000 0.000000 0.944882 0 2.992126 0.944882 0
+ L3 0 0.000000 0.000000 0.984252 0 2.952756 0.984252 0
+ L3 0 0.000000 0.000000 1.023622 0 2.913386 1.023622 0
+ L3 0 0.000000 0.000000 1.062992 0 2.874016 1.062992 0
+ L3 0 0.000000 0.000000 1.102362 0 2.834646 1.102362 0
+ L3 0 0.000000 0.000000 1.141732 0 2.795276 1.141732 0
+ L3 0 0.000000 0.000000 1.181102 0 2.755906 1.181102 0
+ L3 0 0.000000 3.937008 0.039370 0 3.937008 1.181102 0
+ L3 0 0.000000 3.740157 0.236220 0 3.740157 1.181102 0
+ L3 0 0.000000 3.543307 0.433071 0 3.543307 1.181102 0
+ L3 0 0.000000 3.346457 0.629921 0 3.346457 1.181102 0
+ L3 0 0.000000 3.149606 0.826772 0 3.149606 1.181102 0
+ L3 0 0.000000 2.952756 1.023622 0 2.952756 1.181102 0
+ Z 0 3.901575 1.181102 0.000000 0 4.000000 "0.0"
+ Z 0 3.704724 1.181102 0.000000 0 4.000000 "0.5"
+ Z 0 3.503937 1.181102 0.000000 0 4.000000 "1.0"
+ Z 0 3.311024 1.181102 0.000000 0 4.000000 "1.5"
+ Z 0 3.118110 1.181102 0.000000 0 4.000000 "2.0"
+ Z 0 2.913386 1.181102 0.000000 0 4.000000 "2.5"
+ END$SEGS
+STRUCTURE 6 0 16 0 0 HO 2 -0.000000 0.000000 0 270.000000 "test Printer Margin test A4"
+ D 0.000000 0.000000
+ L3 0 0.000000 0.000000 -0.000000 0 3.937008 -0.000000 0
+ L3 0 0.000000 0.000000 -0.039370 0 3.897638 -0.039370 0
+ L3 0 0.000000 0.000000 -0.078740 0 3.858268 -0.078740 0
+ L3 0 0.000000 0.000000 -0.118110 0 3.818898 -0.118110 0
+ L3 0 0.000000 0.000000 -0.157480 0 3.779528 -0.157480 0
+ L3 0 0.000000 0.000000 -0.196850 0 3.740157 -0.196850 0
+ L3 0 0.000000 0.000000 -0.236220 0 3.700787 -0.236220 0
+ L3 0 0.000000 0.000000 -0.275591 0 3.661417 -0.275591 0
+ L3 0 0.000000 0.000000 -0.314961 0 3.622047 -0.314961 0
+ L3 0 0.000000 0.000000 -0.354331 0 3.582677 -0.354331 0
+ L3 0 0.000000 0.000000 -0.393701 0 3.543307 -0.393701 0
+ L3 0 0.000000 0.000000 -0.433071 0 3.503937 -0.433071 0
+ L3 0 0.000000 0.000000 -0.472441 0 3.464567 -0.472441 0
+ L3 0 0.000000 0.000000 -0.511811 0 3.425197 -0.511811 0
+ L3 0 0.000000 0.000000 -0.551181 0 3.385827 -0.551181 0
+ L3 0 0.000000 0.000000 -0.590551 0 3.346457 -0.590551 0
+ L3 0 0.000000 0.000000 -0.629921 0 3.307087 -0.629921 0
+ L3 0 0.000000 0.000000 -0.669291 0 3.267717 -0.669291 0
+ L3 0 0.000000 0.000000 -0.708661 0 3.228346 -0.708661 0
+ L3 0 0.000000 0.000000 -0.748031 0 3.188976 -0.748031 0
+ L3 0 0.000000 0.000000 -0.787402 0 3.149606 -0.787402 0
+ L3 0 0.000000 0.000000 -0.826772 0 3.110236 -0.826772 0
+ L3 0 0.000000 0.000000 -0.866142 0 3.070866 -0.866142 0
+ L3 0 0.000000 0.000000 -0.905512 0 3.031496 -0.905512 0
+ L3 0 0.000000 0.000000 -0.944882 0 2.992126 -0.944882 0
+ L3 0 0.000000 0.000000 -0.984252 0 2.952756 -0.984252 0
+ L3 0 0.000000 0.000000 -1.023622 0 2.913386 -1.023622 0
+ L3 0 0.000000 0.000000 -1.062992 0 2.874016 -1.062992 0
+ L3 0 0.000000 0.000000 -1.102362 0 2.834646 -1.102362 0
+ L3 0 0.000000 0.000000 -1.141732 0 2.795276 -1.141732 0
+ L3 0 0.000000 0.000000 -1.181102 0 2.755906 -1.181102 0
+ L3 0 0.000000 3.937008 -0.039370 0 3.937008 -1.181102 0
+ L3 0 0.000000 3.740157 -0.236220 0 3.740157 -1.181102 0
+ L3 0 0.000000 3.543307 -0.433071 0 3.543307 -1.181102 0
+ L3 0 0.000000 3.346457 -0.629921 0 3.346457 -1.181102 0
+ L3 0 0.000000 3.149606 -0.826772 0 3.149606 -1.181102 0
+ L3 0 0.000000 2.952756 -1.023622 0 2.952756 -1.181102 0
+ Z 0 3.901575 -1.181102 0.000000 0 4.000000 "0.0"
+ Z 0 3.704724 -1.181102 0.000000 0 4.000000 "0.5"
+ Z 0 3.503937 -1.181102 0.000000 0 4.000000 "1.0"
+ Z 0 3.311024 -1.181102 0.000000 0 4.000000 "1.5"
+ Z 0 3.118110 -1.181102 0.000000 0 4.000000 "2.0"
+ Z 0 2.913386 -1.181102 0.000000 0 4.000000 "2.5"
+ END$SEGS
+STRUCTURE 9 0 16 0 0 HO 2 8.2677165 11.692913 0 90.000000 "test Printer Margin test A4"
+ D 0.000000 0.000000
+ L3 0 0.000000 0.000000 -0.000000 0 3.937008 -0.000000 0
+ L3 0 0.000000 0.000000 -0.039370 0 3.897638 -0.039370 0
+ L3 0 0.000000 0.000000 -0.078740 0 3.858268 -0.078740 0
+ L3 0 0.000000 0.000000 -0.118110 0 3.818898 -0.118110 0
+ L3 0 0.000000 0.000000 -0.157480 0 3.779528 -0.157480 0
+ L3 0 0.000000 0.000000 -0.196850 0 3.740157 -0.196850 0
+ L3 0 0.000000 0.000000 -0.236220 0 3.700787 -0.236220 0
+ L3 0 0.000000 0.000000 -0.275591 0 3.661417 -0.275591 0
+ L3 0 0.000000 0.000000 -0.314961 0 3.622047 -0.314961 0
+ L3 0 0.000000 0.000000 -0.354331 0 3.582677 -0.354331 0
+ L3 0 0.000000 0.000000 -0.393701 0 3.543307 -0.393701 0
+ L3 0 0.000000 0.000000 -0.433071 0 3.503937 -0.433071 0
+ L3 0 0.000000 0.000000 -0.472441 0 3.464567 -0.472441 0
+ L3 0 0.000000 0.000000 -0.511811 0 3.425197 -0.511811 0
+ L3 0 0.000000 0.000000 -0.551181 0 3.385827 -0.551181 0
+ L3 0 0.000000 0.000000 -0.590551 0 3.346457 -0.590551 0
+ L3 0 0.000000 0.000000 -0.629921 0 3.307087 -0.629921 0
+ L3 0 0.000000 0.000000 -0.669291 0 3.267717 -0.669291 0
+ L3 0 0.000000 0.000000 -0.708661 0 3.228346 -0.708661 0
+ L3 0 0.000000 0.000000 -0.748031 0 3.188976 -0.748031 0
+ L3 0 0.000000 0.000000 -0.787402 0 3.149606 -0.787402 0
+ L3 0 0.000000 0.000000 -0.826772 0 3.110236 -0.826772 0
+ L3 0 0.000000 0.000000 -0.866142 0 3.070866 -0.866142 0
+ L3 0 0.000000 0.000000 -0.905512 0 3.031496 -0.905512 0
+ L3 0 0.000000 0.000000 -0.944882 0 2.992126 -0.944882 0
+ L3 0 0.000000 0.000000 -0.984252 0 2.952756 -0.984252 0
+ L3 0 0.000000 0.000000 -1.023622 0 2.913386 -1.023622 0
+ L3 0 0.000000 0.000000 -1.062992 0 2.874016 -1.062992 0
+ L3 0 0.000000 0.000000 -1.102362 0 2.834646 -1.102362 0
+ L3 0 0.000000 0.000000 -1.141732 0 2.795276 -1.141732 0
+ L3 0 0.000000 0.000000 -1.181102 0 2.755906 -1.181102 0
+ L3 0 0.000000 3.937008 -0.039370 0 3.937008 -1.181102 0
+ L3 0 0.000000 3.740157 -0.236220 0 3.740157 -1.181102 0
+ L3 0 0.000000 3.543307 -0.433071 0 3.543307 -1.181102 0
+ L3 0 0.000000 3.346457 -0.629921 0 3.346457 -1.181102 0
+ L3 0 0.000000 3.149606 -0.826772 0 3.149606 -1.181102 0
+ L3 0 0.000000 2.952756 -1.023622 0 2.952756 -1.181102 0
+ Z 0 3.901575 -1.181102 0.000000 0 4.000000 "0.0"
+ Z 0 3.704724 -1.181102 0.000000 0 4.000000 "0.5"
+ Z 0 3.503937 -1.181102 0.000000 0 4.000000 "1.0"
+ Z 0 3.311024 -1.181102 0.000000 0 4.000000 "1.5"
+ Z 0 3.118110 -1.181102 0.000000 0 4.000000 "2.0"
+ Z 0 2.913386 -1.181102 0.000000 0 4.000000 "2.5"
+ END$SEGS
+STRUCTURE 10 0 0 0 0 HO 2 8.2677165 11.692913 0 180.000000 "test Printer Margin test A4"
+ D 0.000000 0.000000
+ L3 0 0.000000 0.000000 0.000000 0 3.937008 0.000000 0
+ L3 0 0.000000 0.000000 0.039370 0 3.897638 0.039370 0
+ L3 0 0.000000 0.000000 0.078740 0 3.858268 0.078740 0
+ L3 0 0.000000 0.000000 0.118110 0 3.818898 0.118110 0
+ L3 0 0.000000 0.000000 0.157480 0 3.779528 0.157480 0
+ L3 0 0.000000 0.000000 0.196850 0 3.740157 0.196850 0
+ L3 0 0.000000 0.000000 0.236220 0 3.700787 0.236220 0
+ L3 0 0.000000 0.000000 0.275591 0 3.661417 0.275591 0
+ L3 0 0.000000 0.000000 0.314961 0 3.622047 0.314961 0
+ L3 0 0.000000 0.000000 0.354331 0 3.582677 0.354331 0
+ L3 0 0.000000 0.000000 0.393701 0 3.543307 0.393701 0
+ L3 0 0.000000 0.000000 0.433071 0 3.503937 0.433071 0
+ L3 0 0.000000 0.000000 0.472441 0 3.464567 0.472441 0
+ L3 0 0.000000 0.000000 0.511811 0 3.425197 0.511811 0
+ L3 0 0.000000 0.000000 0.551181 0 3.385827 0.551181 0
+ L3 0 0.000000 0.000000 0.590551 0 3.346457 0.590551 0
+ L3 0 0.000000 0.000000 0.629921 0 3.307087 0.629921 0
+ L3 0 0.000000 0.000000 0.669291 0 3.267717 0.669291 0
+ L3 0 0.000000 0.000000 0.708661 0 3.228346 0.708661 0
+ L3 0 0.000000 0.000000 0.748031 0 3.188976 0.748031 0
+ L3 0 0.000000 0.000000 0.787402 0 3.149606 0.787402 0
+ L3 0 0.000000 0.000000 0.826772 0 3.110236 0.826772 0
+ L3 0 0.000000 0.000000 0.866142 0 3.070866 0.866142 0
+ L3 0 0.000000 0.000000 0.905512 0 3.031496 0.905512 0
+ L3 0 0.000000 0.000000 0.944882 0 2.992126 0.944882 0
+ L3 0 0.000000 0.000000 0.984252 0 2.952756 0.984252 0
+ L3 0 0.000000 0.000000 1.023622 0 2.913386 1.023622 0
+ L3 0 0.000000 0.000000 1.062992 0 2.874016 1.062992 0
+ L3 0 0.000000 0.000000 1.102362 0 2.834646 1.102362 0
+ L3 0 0.000000 0.000000 1.141732 0 2.795276 1.141732 0
+ L3 0 0.000000 0.000000 1.181102 0 2.755906 1.181102 0
+ L3 0 0.000000 3.937008 0.039370 0 3.937008 1.181102 0
+ L3 0 0.000000 3.740157 0.236220 0 3.740157 1.181102 0
+ L3 0 0.000000 3.543307 0.433071 0 3.543307 1.181102 0
+ L3 0 0.000000 3.346457 0.629921 0 3.346457 1.181102 0
+ L3 0 0.000000 3.149606 0.826772 0 3.149606 1.181102 0
+ L3 0 0.000000 2.952756 1.023622 0 2.952756 1.181102 0
+ Z 0 3.901575 1.181102 0.000000 0 4.000000 "0.0"
+ Z 0 3.704724 1.181102 0.000000 0 4.000000 "0.5"
+ Z 0 3.503937 1.181102 0.000000 0 4.000000 "1.0"
+ Z 0 3.311024 1.181102 0.000000 0 4.000000 "1.5"
+ Z 0 3.118110 1.181102 0.000000 0 4.000000 "2.0"
+ Z 0 2.913386 1.181102 0.000000 0 4.000000 "2.5"
+ END$SEGS
+END$TRACKS
diff --git a/app/lib/examples/PrinterMarginTest-Letter.xtc b/app/lib/examples/PrinterMarginTest-Letter.xtc
new file mode 100644
index 0000000..717b251
--- /dev/null
+++ b/app/lib/examples/PrinterMarginTest-Letter.xtc
@@ -0,0 +1,167 @@
+#XTrackCAD Version: 5.3.0Beta1, Date: Thu Aug 11 18:47:13 2022
+
+VERSION 12 5.2.0
+TITLE1 Printer Margins Test
+TITLE2
+MAPSCALE 41
+ROOMSIZE 96.000000 x 48.000000
+SCALE HO
+LAYERS 0 1 0 1 255 0 0 0 0 "Main" 1 0 9.750000 0.000000 0.616800 0.100000 0.200000
+LAYERS CURRENT 1
+STRUCTURE 1 0 0 0 0 HO 2 0.000000 0.000000 0 0.000000 "test printer margin - letter 0"
+ D 0.000000 0.000000
+ L3 0 0.000000 0.000000 0.000000 0 4.000000 0.000000 0
+ L3 0 0.000000 0.000000 0.050000 0 3.950000 0.050000 0
+ L3 0 0.000000 0.000000 0.100000 0 3.900000 0.100000 0
+ L3 0 0.000000 0.000000 0.150000 0 3.850000 0.150000 0
+ L3 0 0.000000 0.000000 0.200000 0 3.800000 0.200000 0
+ L3 0 0.000000 0.000000 0.250000 0 3.750000 0.250000 0
+ L3 0 0.000000 0.000000 0.300000 0 3.700000 0.300000 0
+ L3 0 0.000000 0.000000 0.350000 0 3.650000 0.350000 0
+ L3 0 0.000000 0.000000 0.400000 0 3.600000 0.400000 0
+ L3 0 0.000000 0.000000 0.450000 0 3.550000 0.450000 0
+ L3 0 0.000000 0.000000 0.500000 0 3.500000 0.500000 0
+ L3 0 0.000000 0.000000 0.550000 0 3.450000 0.550000 0
+ L3 0 0.000000 0.000000 0.550000 0 1.445312 0.550000 0
+ L3 0 0.000000 0.000000 0.600000 0 3.400000 0.600000 0
+ L3 0 0.000000 0.000000 0.650000 0 3.350000 0.650000 0
+ L3 0 0.000000 0.000000 0.700000 0 3.300000 0.700000 0
+ L3 0 0.000000 0.000000 0.750000 0 3.250000 0.750000 0
+ L3 0 0.000000 0.000000 0.800000 0 3.200000 0.800000 0
+ L3 0 0.000000 0.000000 0.850000 0 3.150000 0.850000 0
+ L3 0 0.000000 0.000000 0.900000 0 3.100000 0.900000 0
+ L3 0 0.000000 0.000000 0.950000 0 3.050000 0.950000 0
+ L3 0 0.000000 0.000000 1.000000 0 3.000000 1.000000 0
+ Z 0 2.964844 1.050000 0.000000 0 4.000000 "1.0"
+ Z 0 3.156250 1.050000 0.000000 0 4.000000 "0.8"
+ Z 0 3.359375 1.050000 0.000000 0 4.000000 "0.6"
+ Z 0 3.558594 1.050000 0.000000 0 4.000000 "0.4"
+ Z 0 3.964844 1.050000 0.000000 0 4.000000 "0.0"
+ L3 0 0.000000 3.200000 1.000000 0 3.200000 0.850000 0
+ Z 0 3.761719 1.050000 0.000000 0 4.000000 "0.2"
+ L3 0 0.000000 3.400000 1.000000 0 3.400000 0.650000 0
+ L3 0 0.000000 3.600000 0.999972 0 3.600000 0.450028 0
+ L3 0 0.000000 3.800000 1.000005 0 3.800000 0.250000 0
+ L3 0 0.000000 4.000000 1.000000 0 3.998047 0.050000 0
+ END$SEGS
+STRUCTURE 2 0 16 0 0 HO 2 0.000000 0.000000 0 270.000000 "test printer margin - letter 0"
+ D 0.000000 0.000000
+ L3 0 0.000000 0.000000 -0.000000 0 4.000000 -0.000000 0
+ L3 0 0.000000 0.000000 -0.050000 0 3.950000 -0.050000 0
+ L3 0 0.000000 0.000000 -0.100000 0 3.900000 -0.100000 0
+ L3 0 0.000000 0.000000 -0.150000 0 3.850000 -0.150000 0
+ L3 0 0.000000 0.000000 -0.200000 0 3.800000 -0.200000 0
+ L3 0 0.000000 0.000000 -0.250000 0 3.750000 -0.250000 0
+ L3 0 0.000000 0.000000 -0.300000 0 3.700000 -0.300000 0
+ L3 0 0.000000 0.000000 -0.350000 0 3.650000 -0.350000 0
+ L3 0 0.000000 0.000000 -0.400000 0 3.600000 -0.400000 0
+ L3 0 0.000000 0.000000 -0.450000 0 3.550000 -0.450000 0
+ L3 0 0.000000 0.000000 -0.500000 0 3.500000 -0.500000 0
+ L3 0 0.000000 0.000000 -0.550000 0 3.450000 -0.550000 0
+ L3 0 0.000000 0.000000 -0.550000 0 1.445312 -0.550000 0
+ L3 0 0.000000 0.000000 -0.600000 0 3.400000 -0.600000 0
+ L3 0 0.000000 0.000000 -0.650000 0 3.350000 -0.650000 0
+ L3 0 0.000000 0.000000 -0.700000 0 3.300000 -0.700000 0
+ L3 0 0.000000 0.000000 -0.750000 0 3.250000 -0.750000 0
+ L3 0 0.000000 0.000000 -0.800000 0 3.200000 -0.800000 0
+ L3 0 0.000000 0.000000 -0.850000 0 3.150000 -0.850000 0
+ L3 0 0.000000 0.000000 -0.900000 0 3.100000 -0.900000 0
+ L3 0 0.000000 0.000000 -0.950000 0 3.050000 -0.950000 0
+ L3 0 0.000000 0.000000 -1.000000 0 3.000000 -1.000000 0
+ Z 0 2.964844 -1.050000 0.000000 0 4.000000 "1.0"
+ Z 0 3.156250 -1.050000 0.000000 0 4.000000 "0.8"
+ Z 0 3.359375 -1.050000 0.000000 0 4.000000 "0.6"
+ Z 0 3.558594 -1.050000 0.000000 0 4.000000 "0.4"
+ Z 0 3.964844 -1.050000 0.000000 0 4.000000 "0.0"
+ L3 0 0.000000 3.200000 -1.000000 0 3.200000 -0.850000 0
+ Z 0 3.761719 -1.050000 0.000000 0 4.000000 "0.2"
+ L3 0 0.000000 3.400000 -1.000000 0 3.400000 -0.650000 0
+ L3 0 0.000000 3.600000 -0.999972 0 3.600000 -0.450028 0
+ L3 0 0.000000 3.800000 -1.000005 0 3.800000 -0.250000 0
+ L3 0 0.000000 4.000000 -1.000000 0 3.998047 -0.050000 0
+ END$SEGS
+STRUCTURE 3 0 0 0 0 HO 2 8.500000 11.000000 0 180.000000 "test printer margin - letter 0"
+ D 0.000000 0.000000
+ L3 0 0.000000 0.000000 0.000000 0 4.000000 0.000000 0
+ L3 0 0.000000 0.000000 0.050000 0 3.950000 0.050000 0
+ L3 0 0.000000 0.000000 0.100000 0 3.900000 0.100000 0
+ L3 0 0.000000 0.000000 0.150000 0 3.850000 0.150000 0
+ L3 0 0.000000 0.000000 0.200000 0 3.800000 0.200000 0
+ L3 0 0.000000 0.000000 0.250000 0 3.750000 0.250000 0
+ L3 0 0.000000 0.000000 0.300000 0 3.700000 0.300000 0
+ L3 0 0.000000 0.000000 0.350000 0 3.650000 0.350000 0
+ L3 0 0.000000 0.000000 0.400000 0 3.600000 0.400000 0
+ L3 0 0.000000 0.000000 0.450000 0 3.550000 0.450000 0
+ L3 0 0.000000 0.000000 0.500000 0 3.500000 0.500000 0
+ L3 0 0.000000 0.000000 0.550000 0 3.450000 0.550000 0
+ L3 0 0.000000 0.000000 0.550000 0 1.445312 0.550000 0
+ L3 0 0.000000 0.000000 0.600000 0 3.400000 0.600000 0
+ L3 0 0.000000 0.000000 0.650000 0 3.350000 0.650000 0
+ L3 0 0.000000 0.000000 0.700000 0 3.300000 0.700000 0
+ L3 0 0.000000 0.000000 0.750000 0 3.250000 0.750000 0
+ L3 0 0.000000 0.000000 0.800000 0 3.200000 0.800000 0
+ L3 0 0.000000 0.000000 0.850000 0 3.150000 0.850000 0
+ L3 0 0.000000 0.000000 0.900000 0 3.100000 0.900000 0
+ L3 0 0.000000 0.000000 0.950000 0 3.050000 0.950000 0
+ L3 0 0.000000 0.000000 1.000000 0 3.000000 1.000000 0
+ Z 0 2.964844 1.050000 0.000000 0 4.000000 "1.0"
+ Z 0 3.156250 1.050000 0.000000 0 4.000000 "0.8"
+ Z 0 3.359375 1.050000 0.000000 0 4.000000 "0.6"
+ Z 0 3.558594 1.050000 0.000000 0 4.000000 "0.4"
+ Z 0 3.964844 1.050000 0.000000 0 4.000000 "0.0"
+ L3 0 0.000000 3.200000 1.000000 0 3.200000 0.850000 0
+ Z 0 3.761719 1.050000 0.000000 0 4.000000 "0.2"
+ L3 0 0.000000 3.400000 1.000000 0 3.400000 0.650000 0
+ L3 0 0.000000 3.600000 0.999972 0 3.600000 0.450028 0
+ L3 0 0.000000 3.800000 1.000005 0 3.800000 0.250000 0
+ L3 0 0.000000 4.000000 1.000000 0 3.998047 0.050000 0
+ END$SEGS
+STRUCTURE 4 0 16 0 0 HO 2 8.500000 11.000000 0 90.000000 "test printer margin - letter 0"
+ D 0.000000 0.000000
+ L3 0 0.000000 0.000000 -0.000000 0 4.000000 -0.000000 0
+ L3 0 0.000000 0.000000 -0.050000 0 3.950000 -0.050000 0
+ L3 0 0.000000 0.000000 -0.100000 0 3.900000 -0.100000 0
+ L3 0 0.000000 0.000000 -0.150000 0 3.850000 -0.150000 0
+ L3 0 0.000000 0.000000 -0.200000 0 3.800000 -0.200000 0
+ L3 0 0.000000 0.000000 -0.250000 0 3.750000 -0.250000 0
+ L3 0 0.000000 0.000000 -0.300000 0 3.700000 -0.300000 0
+ L3 0 0.000000 0.000000 -0.350000 0 3.650000 -0.350000 0
+ L3 0 0.000000 0.000000 -0.400000 0 3.600000 -0.400000 0
+ L3 0 0.000000 0.000000 -0.450000 0 3.550000 -0.450000 0
+ L3 0 0.000000 0.000000 -0.500000 0 3.500000 -0.500000 0
+ L3 0 0.000000 0.000000 -0.550000 0 3.450000 -0.550000 0
+ L3 0 0.000000 0.000000 -0.550000 0 1.445312 -0.550000 0
+ L3 0 0.000000 0.000000 -0.600000 0 3.400000 -0.600000 0
+ L3 0 0.000000 0.000000 -0.650000 0 3.350000 -0.650000 0
+ L3 0 0.000000 0.000000 -0.700000 0 3.300000 -0.700000 0
+ L3 0 0.000000 0.000000 -0.750000 0 3.250000 -0.750000 0
+ L3 0 0.000000 0.000000 -0.800000 0 3.200000 -0.800000 0
+ L3 0 0.000000 0.000000 -0.850000 0 3.150000 -0.850000 0
+ L3 0 0.000000 0.000000 -0.900000 0 3.100000 -0.900000 0
+ L3 0 0.000000 0.000000 -0.950000 0 3.050000 -0.950000 0
+ L3 0 0.000000 0.000000 -1.000000 0 3.000000 -1.000000 0
+ Z 0 2.964844 -1.050000 0.000000 0 4.000000 "1.0"
+ Z 0 3.156250 -1.050000 0.000000 0 4.000000 "0.8"
+ Z 0 3.359375 -1.050000 0.000000 0 4.000000 "0.6"
+ Z 0 3.558594 -1.050000 0.000000 0 4.000000 "0.4"
+ Z 0 3.964844 -1.050000 0.000000 0 4.000000 "0.0"
+ L3 0 0.000000 3.200000 -1.000000 0 3.200000 -0.850000 0
+ Z 0 3.761719 -1.050000 0.000000 0 4.000000 "0.2"
+ L3 0 0.000000 3.400000 -1.000000 0 3.400000 -0.650000 0
+ L3 0 0.000000 3.600000 -0.999972 0 3.600000 -0.450028 0
+ L3 0 0.000000 3.800000 -1.000005 0 3.800000 -0.250000 0
+ L3 0 0.000000 4.000000 -1.000000 0 3.998047 -0.050000 0
+ END$SEGS
+DRAW 5 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 1.000000 8.000000 0.000000 0 60.000000 "XTrkCad"
+ END$SEGS
+DRAW 6 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 1.000000 6.968750 0.000000 0 48.000000 "Printer Margin"
+ END$SEGS
+DRAW 7 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 1.000000 5.937500 0.000000 0 48.000000 "Page Size: Letter"
+ END$SEGS
+DRAW 8 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 1.031250 4.968750 0.000000 0 24.000000 "Print with 'Ignore Page Margins'\nand Print Scale = 1"
+ END$SEGS
+END$TRACKS
diff --git a/app/lib/params/1-mrkln.xtp b/app/lib/params/1-mrkln.xtp
new file mode 100644
index 0000000..0b3929b
--- /dev/null
+++ b/app/lib/params/1-mrkln.xtp
@@ -0,0 +1,281 @@
+CONTENTS Märklin 1 Scale Turnouts
+#Update per webiste 08/2023
+SUBCONTENTS Märklin 1-Scale - Straight Tracks
+TURNOUT 1 "Märklin Straight 900mm 59033/59061"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 35.433071 0.000000 90.000000
+ S 0 0 0.000000 0.000000 35.433071 0.000000
+ END$SEGS
+TURNOUT 1 "Märklin Straight 600mm 59059"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 23.622047 0.000000 90.000000
+ S 0 0 0.000000 0.000000 23.622047 0.000000
+ END$SEGS
+TURNOUT 1 "Märklin Straight 300mm 5903/59058"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.811024 0.000000 90.000000
+ S 0 0 0.000000 0.000000 11.811024 0.000000
+ END$SEGS
+TURNOUT 1 "Märklin Straight 200mm 59057"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.874016 0.000000 90.000000
+ S 0 0 0.000000 0.000000 7.874016 0.000000
+ END$SEGS
+TURNOUT 1 "Märklin Straight 152.2mm 59056"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.992126 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.992126 0.000000
+ END$SEGS
+TURNOUT 1 "Märklin Straight 150mm 5917/59055"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.905512 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.905512 0.000000
+ END$SEGS
+TURNOUT 1 "Märklin Straight 116mm 59054"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.566929 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.566929 0.000000
+ END$SEGS
+TURNOUT 1 "Märklin Straight 100mm 59053"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.937008 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.937008 0.000000
+ END$SEGS
+TURNOUT 1 "Märklin Straight 80.4mm 5904"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.165354 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.165354 0.000000
+ END$SEGS
+TURNOUT 1 "Märklin Straight 79mm 59052"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.110236 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.110236 0.000000
+ END$SEGS
+TURNOUT 1 "Märklin Isolation Straight 80.4mm 5905"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.165354 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.165354 0.000000
+ END$SEGS
+TURNOUT 1 "Märklin Straight 59.5mm 5916/59051"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.342520 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.342520 0.000000
+ END$SEGS
+
+SUBCONTENTS Märklin 1-Scale - Curved Tracks
+TURNOUT 1 "Märklin Curved R600mm 30° 5922"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.811024 -3.164754 120.000000
+ C 0 0 23.622047 0.000000 -23.622047 0.000000 30.000000
+ END$SEGS
+TURNOUT 1 "Märklin Curved R760.8mm 30° 59230"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 14.976378 -4.012908 120.000000
+ C 0 0 29.952756 0.000000 -29.952756 0.000000 30.000000
+ END$SEGS
+TURNOUT 1 "Märklin Curved R1020mm 22.5° 5935"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 15.367602 -3.056806 112.500000
+ C 0 0 40.157480 0.000000 -40.157480 0.000000 22.500000
+ END$SEGS
+TURNOUT 1 "Märklin Curved R1176mm 22.5° 5936/59072"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 17.717942 -3.524318 112.500000
+ C 0 0 46.299213 0.000000 -46.299213 0.000000 22.500000
+ END$SEGS
+TURNOUT 1 "Märklin Curved R1394mm 15° 59075"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 14.204478 -1.870055 105.000000
+ C 0 0 54.881890 0.000000 -54.881890 0.000000 15.000000
+ END$SEGS
+TURNOUT 1 "Märklin Curved R1394mm 22.5° 59073"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 21.002390 -4.177635 112.500000
+ C 0 0 54.881890 0.000000 -54.881890 0.000000 22.500000
+ END$SEGS
+TURNOUT 1 "Märklin Curved R1550mm 15° 59074"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 15.794076 -2.079329 105.000000
+ C 0 0 61.023622 0.000000 -61.023622 0.000000 15.000000
+ END$SEGS
+TURNOUT 1 "Märklin Curved R1550mm 22.5° 59076"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 23.352729 -4.645147 112.500000
+ C 0 0 61.023622 0.000000 -61.023622 0.000000 22.500000
+ END$SEGS
+TURNOUT 1 "Märklin Curved R1715mm 22.5° 59077"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 25.838665 -5.139630 112.500000
+ C 0 0 67.519685 0.000000 -67.519685 0.000000 22.500000
+ END$SEGS
+TURNOUT 1 "Märklin Curved R2321mm 10° 59078"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 15.867615 -1.388236 100.000000
+ C 0 0 91.377953 0.000000 -91.377953 0.000000 10.000000
+ END$SEGS
+TURNOUT 1 "Märklin Curved R2461mm 10° 59071"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 16.824731 -1.471973 100.000000
+ C 0 0 96.889764 0.000000 -96.889764 0.000000 10.000000
+ END$SEGS
+
+SUBCONTENTS Märklin 1-Scale - Turnouts
+TURNOUT 1 "Märklin Short Right Turnout 5966"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 11.811024 0.000000 90.000000
+ E 11.811024 -3.164754 120.000000
+ S 0 0 0.000000 0.000000 11.811024 0.000000
+ C 0 0 23.622047 0.000000 -23.622047 0.000000 30.000000
+ END$SEGS
+TURNOUT 1 "Märklin Short Left Turnout 5965"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 11.811024 0.000000 90.000000
+ E 11.811024 3.164754 60.000000
+ S 0 0 0.000000 0.000000 11.811024 0.000000
+ C 0 0 -23.622047 0.000000 23.622047 150.000000 30.000000
+ END$SEGS
+TURNOUT 1 "Märklin Medium Right Turnout 5977"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 15.374016 0.000000 90.000000
+ E 15.367602 -3.056806 112.500000
+ S 0 0 0.000000 0.000000 15.374000 0.000000
+ C 0 0 40.157480 0.000000 -40.157480 0.000000 22.500000
+ END$SEGS
+TURNOUT 1 "Märklin Medium Left Turnout 5976"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 15.374016 0.000000 90.000000
+ E 15.367602 3.056806 67.500000
+ S 0 0 0.000000 0.000000 15.374000 0.000000
+ C 0 0 -40.157480 0.000000 40.157480 157.500000 22.500000
+ END$SEGS
+TURNOUT 1 "Märklin Right Turnout Set 600mm 59083"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 23.622047 0.000000 90.000000
+ E 23.622047 -2.986654 100.000000
+ S 0 0.000000 0.000000 0.000000 1.770000 -0.000000
+ S 0 0.000000 1.770000 -0.000000 23.622047 0.000000
+ C 0 0.000000 56.166025 1.770000 -56.166025 0.000000 10.000000
+ S 0 0.000000 11.523128 -0.853288 23.622047 -2.986654
+ END$SEGS
+TURNOUT 1 "Märklin Left Turnout Set 600mm 59084"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 23.622047 0.000000 90.000000
+ E 23.622047 2.986654 80.000000
+ S 0 0.000000 0.000000 0.000000 1.770000 0.000000
+ S 0 0.000000 1.770000 0.000000 23.622047 0.000000
+ C 0 0.000000 -56.166025 1.770000 56.166025 170.000000 10.000000
+ S 0 0.000000 11.523128 0.853288 23.622047 2.986654
+ END$SEGS
+TURNOUT 1 "Marklin Left Turnout 59088/92"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 19.291339 0.000000 90.000000
+ E 18.898138 2.986654 75.000000
+ S 0 0.000000 0.000000 0.000000 1.770000 0.000000
+ S 0 0.000000 1.770000 0.000000 19.291339 0.000000
+ C 0 0.000000 -45.436233 1.770000 45.436233 165.000000 15.000000
+ S 0 0.000000 13.529762 1.548202 18.898138 2.986654
+ END$SEGS
+TURNOUT 1 "Marklin Right Turnout 59087/92"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 19.291339 0.000000 90.000000
+ E 18.898138 -2.986654 105.000000
+ S 0 0.000000 0.000000 0.000000 1.770000 -0.000000
+ S 0 0.000000 1.770000 -0.000000 19.291339 0.000000
+ C 0 0.000000 45.436233 1.770000 -45.436233 0.000000 15.000000
+ S 0 0.000000 13.529762 -1.548202 18.898138 -2.986654
+ END$SEGS
+
+SUBCONTENTS Märklin 1-Scale - 3W,Slip & Crossovers
+TURNOUT 1 "Marklin 3 Way Turnout 59091/92"
+ P "Left" 1 2 3
+ P "Normal" 1 4 7
+ P "Right" 1 4 5 6
+ E 0.000000 0.000000 270.000000
+ E 18.898138 2.986654 75.000000
+ E 24.528059 -2.986654 105.000000
+ E 24.921260 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.770000 0.000000
+ C 0 0.000000 -45.436233 1.770000 45.436233 165.000000 15.000000
+ S 0 0.000000 13.529762 1.548202 18.898138 2.986654
+ S 0 0.000000 1.770000 0.000000 3.612170 -0.000000
+ C 0 0.000000 74.207061 3.612170 -74.207061 0.000000 15.000000
+ S 0 0.000000 22.818370 -2.528544 24.528059 -2.986654
+ S 0 0.000000 3.612170 -0.000000 24.921260 0.000000
+ END$SEGS
+TURNOUT 1 "Marklin Double-Slip 59093/92"
+ P "Cross1" 1 2 3
+ P "Cross2" 4 5 6
+ P "Slip1" 1 7 6
+ P "Slip2" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 23.079092 0.000000 90.000000
+ E 0.393200 2.986654 285.000000
+ E 22.685892 -2.986654 105.000000
+ S 0 0.000000 0.000000 0.000000 3.540000 0.000000
+ S 0 0.000000 3.540000 0.000000 19.539092 0.000000
+ S 0 0.000000 19.539092 0.000000 23.079092 0.000000
+ S 0 0.000000 0.393200 2.986654 3.812578 2.070435
+ S 0 0.000000 3.812578 2.070435 19.266514 -2.070435
+ S 0 0.000000 19.266514 -2.070435 22.685892 -2.986654
+ C 0 0.000000 60.762584 3.540000 -60.762584 0.000000 15.000000
+ C 0 0.000000 -60.762584 19.539092 60.762584 180.000000 15.000000
+ END$SEGS
+TURNOUT 1 "Marklin Dbl Crossover 59094/88/87"
+ P "Normal" 1 2 3 0 4 5 6
+ P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
+ E 0.000000 0.000000 270.000000
+ E 37.795276 0.000000 90.000000
+ E 0.000000 5.973309 270.000000
+ E 37.795276 5.973309 90.000000
+ S 0 0.000000 0.000000 0.000000 3.034139 0.000000
+ S 0 0.000000 3.034139 0.000000 34.761137 0.000000
+ S 0 0.000000 34.761137 0.000000 37.795276 0.000000
+ S 0 0.000000 0.000000 5.973309 3.034139 5.973309
+ S 0 0.000000 3.034139 5.973309 34.761137 5.973309
+ S 0 0.000000 34.761137 5.973309 37.795276 5.973309
+ C 0 0.000000 -43.098023 3.034139 43.098023 160.773647 19.226353
+ S 0 0.000000 17.226360 2.403792 20.568916 3.569517
+ C 0 0.000000 43.098023 34.761137 -37.124714 340.773647 19.226353
+ C 0 0.000000 43.098023 3.034139 -37.124714 0.000000 19.226353
+ S 0 0.000000 17.226360 3.569517 20.568916 2.403792
+ C 0 0.000000 -43.098023 34.761137 43.098023 180.000000 19.226353
+ END$SEGS
diff --git a/app/lib/params/Any-DCC-Concepts Point Motors.xtp b/app/lib/params/Any-DCC-Concepts Point Motors.xtp
new file mode 100644
index 0000000..c74ae31
--- /dev/null
+++ b/app/lib/params/Any-DCC-Concepts Point Motors.xtp
@@ -0,0 +1,115 @@
+CONTENTS DCC-Concepts Cobalt Points Motor
+STRUCTURE * "DCC Concepts Cobalt iP Digital Point Motor DCP-CB1DiP"
+ A3 32768 0.010000 0.039370 0.000000 0.000000 0 0.000000 360.000000
+ A3 32768 0.010000 0.157480 0.000000 0.472441 0 270.000000 180.000000
+ L3 32768 0.010000 -0.157480 0.472441 0 -0.157480 -0.472441 0
+ L3 32768 0.010000 0.157480 0.472441 0 0.157480 -0.472441 0
+ A3 32768 0.010000 0.157480 0.000000 -0.472441 0 90.000000 180.000000
+
+ L3 32768 0.010000 0.177165 -0.531496 0 0.177165 0.531496 0
+ L3 32768 0.010000 0.177165 -0.531496 0 0.334646 -0.531496 0
+ L3 32768 0.010000 0.334646 -0.531496 0 0.334646 -0.944882 0
+ L3 32768 0.010000 0.334646 -0.944882 0 0.570866 -0.944882 0
+ L3 32768 0.010000 0.570866 -0.944882 0 0.570866 -0.807087 0
+ A3 32768 0.010000 0.078740 0.649606 -0.807087 0 270.000000 180.000000
+ L3 32768 0.010000 0.728346 -0.807087 0 0.728346 -0.944882 0
+ L3 32768 0.010000 0.728346 -0.944882 0 1.830709 -0.944882 0
+ L3 32768 0.010000 1.830709 -0.944882 0 1.830709 -0.807087 0
+ A3 32768 0.010000 0.078740 1.909449 -0.807087 0 270.000000 180.000000
+ L3 32768 0.010000 1.988189 -0.807087 0 1.988189 -0.944882 0
+ L3 32768 0.010000 1.988189 -0.944882 0 2.539370 -0.944882 0
+ L3 32768 0.010000 2.539370 -0.944882 0 2.539370 -0.866142 0
+ L3 32768 0.010000 2.539370 -0.866142 0 2.224409 -0.866142 0
+ L3 32768 0.010000 2.224409 -0.866142 0 2.224409 0.944882 0
+ L3 32768 0.010000 1.988189 0.944882 0 2.224409 0.944882 0
+ L3 32768 0.010000 1.988189 0.807087 0 1.988189 0.944882 0
+ A3 32768 0.010000 0.078740 1.909449 0.807087 0 90.000000 180.000000
+ L3 32768 0.010000 1.830709 0.944882 0 1.830709 0.807087 0
+ L3 32768 0.010000 0.728346 0.944882 0 1.830709 0.944882 0
+ L3 32768 0.010000 0.728346 0.807087 0 0.728346 0.944882 0
+ A3 32768 0.010000 0.078740 0.649606 0.807087 0 90.000000 180.000000
+ L3 32768 0.010000 0.570866 0.944882 0 0.570866 0.807087 0
+ L3 32768 0.010000 0.334646 0.944882 0 0.570866 0.944882 0
+ L3 32768 0.010000 0.334646 0.531496 0 0.334646 0.944882 0
+ L3 32768 0.010000 0.177165 0.531496 0 0.334646 0.531496 0
+
+ L3 32768 0.010000 0.019685 -0.866142 0 0.334646 -0.866142 0
+ L3 32768 0.010000 0.019685 -0.944882 0 0.019685 -0.866142 0
+ L3 32768 0.010000 0.019685 -0.944882 0 0.334646 -0.944882 0
+ END$SEGS
+STRUCTURE * "DCC Concepts Cobalt Classic Ω Analog Point Motor DCP-CB1omega"
+ A3 32768 0.010000 0.039370 0.000000 0.000000 0 0.000000 360.000000
+ A3 32768 0.010000 0.157480 0.000000 0.472441 0 270.000000 180.000000
+ L3 32768 0.010000 -0.157480 0.472441 0 -0.157480 -0.472441 0
+ L3 32768 0.010000 0.157480 0.472441 0 0.157480 -0.472441 0
+ A3 32768 0.010000 0.157480 0.000000 -0.472441 0 90.000000 180.000000
+
+ L3 32768 0.010000 0.177165 -0.531496 0 0.177165 0.531496 0
+ L3 32768 0.010000 0.177165 -0.531496 0 0.334646 -0.531496 0
+ L3 32768 0.010000 0.334646 -0.531496 0 0.334646 -0.944882 0
+ L3 32768 0.010000 0.334646 -0.944882 0 0.570866 -0.944882 0
+ L3 32768 0.010000 0.570866 -0.944882 0 0.570866 -0.807087 0
+ A3 32768 0.010000 0.078740 0.649606 -0.807087 0 270.000000 180.000000
+ L3 32768 0.010000 0.728346 -0.807087 0 0.728346 -0.944882 0
+ L3 32768 0.010000 0.728346 -0.944882 0 1.830709 -0.944882 0
+ L3 32768 0.010000 1.830709 -0.944882 0 1.830709 -0.807087 0
+ A3 32768 0.010000 0.078740 1.909449 -0.807087 0 270.000000 180.000000
+ L3 32768 0.010000 1.988189 -0.807087 0 1.988189 -0.944882 0
+ L3 32768 0.010000 1.988189 -0.944882 0 2.539370 -0.944882 0
+ L3 32768 0.010000 2.539370 -0.944882 0 2.539370 -0.866142 0
+ L3 32768 0.010000 2.539370 -0.866142 0 2.224409 -0.866142 0
+ L3 32768 0.010000 2.224409 -0.866142 0 2.224409 0.944882 0
+ L3 32768 0.010000 1.988189 0.944882 0 2.224409 0.944882 0
+ L3 32768 0.010000 1.988189 0.807087 0 1.988189 0.944882 0
+ A3 32768 0.010000 0.078740 1.909449 0.807087 0 90.000000 180.000000
+ L3 32768 0.010000 1.830709 0.944882 0 1.830709 0.807087 0
+ L3 32768 0.010000 0.728346 0.944882 0 1.830709 0.944882 0
+ L3 32768 0.010000 0.728346 0.807087 0 0.728346 0.944882 0
+ A3 32768 0.010000 0.078740 0.649606 0.807087 0 90.000000 180.000000
+ L3 32768 0.010000 0.570866 0.944882 0 0.570866 0.807087 0
+ L3 32768 0.010000 0.334646 0.944882 0 0.570866 0.944882 0
+ L3 32768 0.010000 0.334646 0.531496 0 0.334646 0.944882 0
+ L3 32768 0.010000 0.177165 0.531496 0 0.334646 0.531496 0
+
+ L3 32768 0.010000 0.019685 -0.866142 0 0.334646 -0.866142 0
+ L3 32768 0.010000 0.019685 -0.944882 0 0.019685 -0.866142 0
+ L3 32768 0.010000 0.019685 -0.944882 0 0.334646 -0.944882 0
+ END$SEGS
+STRUCTURE * "DCC Concepts Cobalt iP Analog Point Motor DCP-CB1iPmi"
+ A3 32768 0.010000 0.039370 0.000000 0.000000 0 0.000000 360.000000
+ A3 32768 0.010000 0.157480 0.000000 0.472441 0 270.000000 180.000000
+ L3 32768 0.010000 -0.157480 0.472441 0 -0.157480 -0.472441 0
+ L3 32768 0.010000 0.157480 0.472441 0 0.157480 -0.472441 0
+ A3 32768 0.010000 0.157480 0.000000 -0.472441 0 90.000000 180.000000
+
+ L3 32768 0.010000 0.177165 -0.531496 0 0.177165 0.531496 0
+ L3 32768 0.010000 0.177165 -0.531496 0 0.334646 -0.531496 0
+ L3 32768 0.010000 0.334646 -0.531496 0 0.334646 -0.944882 0
+ L3 32768 0.010000 0.334646 -0.944882 0 0.570866 -0.944882 0
+ L3 32768 0.010000 0.570866 -0.944882 0 0.570866 -0.807087 0
+ A3 32768 0.010000 0.078740 0.649606 -0.807087 0 270.000000 180.000000
+ L3 32768 0.010000 0.728346 -0.807087 0 0.728346 -0.944882 0
+ L3 32768 0.010000 0.728346 -0.944882 0 1.830709 -0.944882 0
+ L3 32768 0.010000 1.830709 -0.944882 0 1.830709 -0.807087 0
+ A3 32768 0.010000 0.078740 1.909449 -0.807087 0 270.000000 180.000000
+ L3 32768 0.010000 1.988189 -0.807087 0 1.988189 -0.944882 0
+ L3 32768 0.010000 1.988189 -0.944882 0 2.539370 -0.944882 0
+ L3 32768 0.010000 2.539370 -0.944882 0 2.539370 -0.866142 0
+ L3 32768 0.010000 2.539370 -0.866142 0 2.224409 -0.866142 0
+ L3 32768 0.010000 2.224409 -0.866142 0 2.224409 0.944882 0
+ L3 32768 0.010000 1.988189 0.944882 0 2.224409 0.944882 0
+ L3 32768 0.010000 1.988189 0.807087 0 1.988189 0.944882 0
+ A3 32768 0.010000 0.078740 1.909449 0.807087 0 90.000000 180.000000
+ L3 32768 0.010000 1.830709 0.944882 0 1.830709 0.807087 0
+ L3 32768 0.010000 0.728346 0.944882 0 1.830709 0.944882 0
+ L3 32768 0.010000 0.728346 0.807087 0 0.728346 0.944882 0
+ A3 32768 0.010000 0.078740 0.649606 0.807087 0 90.000000 180.000000
+ L3 32768 0.010000 0.570866 0.944882 0 0.570866 0.807087 0
+ L3 32768 0.010000 0.334646 0.944882 0 0.570866 0.944882 0
+ L3 32768 0.010000 0.334646 0.531496 0 0.334646 0.944882 0
+ L3 32768 0.010000 0.177165 0.531496 0 0.334646 0.531496 0
+
+ L3 32768 0.010000 0.019685 -0.866142 0 0.334646 -0.866142 0
+ L3 32768 0.010000 0.019685 -0.944882 0 0.019685 -0.866142 0
+ L3 32768 0.010000 0.019685 -0.944882 0 0.334646 -0.944882 0
+ END$SEGS
diff --git a/app/lib/params/Any-ModelRailroadBenchwork.xtp b/app/lib/params/Any-ModelRailroadBenchwork.xtp
new file mode 100644
index 0000000..58f93b1
--- /dev/null
+++ b/app/lib/params/Any-ModelRailroadBenchwork.xtp
@@ -0,0 +1,975 @@
+CONTENTS Model Railroad BenchWork
+#www.modelrailroadbenchwork.com
+SUBCONTENTS Model Railroad BenchWork - Inside Corner
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 60""x60"" 36""R IC6060-36R"
+ B3 16760832 0.000000 0.750000 38.000000 0 22.000000 38.000000 0 132608
+ B3 16760832 0.000000 22.000000 59.250000 0 22.000000 38.000000 0 132608
+ B3 16760832 0.000000 0.750000 27.000000 0 33.000000 27.000000 0 132608
+ B3 16760832 0.000000 33.000000 59.250000 0 33.000000 27.000000 0 132608
+ B3 16760832 0.000000 0.750000 15.000000 0 26.599148 15.000000 0 132608
+ B3 16760832 0.000000 45.000000 59.250000 0 45.000000 33.400852 0 132608
+ B3 16760832 0.000000 5.687500 54.312500 0 34.059321 25.940679 0 132608
+ B3 16760832 0.000000 0.375000 49.000000 0 11.000000 59.625000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 60.000000 0 132608
+ B3 16760832 0.000000 0.750000 59.625000 0 59.250000 59.625000 0 132608
+ A3 16760832 0.750000 35.625000 59.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 36.000000 59.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 35.250000 59.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 24.000000 0.375000 0 132608
+ B3 16760832 0.000000 59.625000 36.000000 0 59.625000 60.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 60""x60"" 30""R IC6060-30R"
+ B3 16760832 0.000000 0.750000 30.000000 0 30.000000 30.000000 0 132608
+ B3 16760832 0.000000 30.000000 59.250000 0 30.000000 30.000000 0 132608
+ B3 16760832 0.000000 0.750000 15.000000 0 33.277358 15.000000 0 132608
+ B3 16760832 0.000000 45.000000 59.250000 0 45.000000 26.722642 0 132608
+ B3 16760832 0.000000 7.687500 52.312500 0 38.301962 21.698038 0 132608
+ B3 16760832 0.000000 0.375000 45.000000 0 15.000000 59.625000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 60.000000 0 132608
+ B3 16760832 0.000000 0.750000 59.625000 0 59.250000 59.625000 0 132608
+ A3 16760832 0.750000 29.625000 59.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 30.000000 59.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 29.250000 59.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 30.000000 0.375000 0 132608
+ B3 16760832 0.000000 59.625000 30.000000 0 59.625000 60.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 54""x54"" 30""R IC5454-30R"
+ B3 16760832 0.000000 0.750000 36.000000 0 18.000000 36.000000 0 132608
+ B3 16760832 0.000000 18.000000 53.250000 0 18.000000 36.000000 0 132608
+ B3 16760832 0.000000 0.750000 24.000000 0 30.000000 24.000000 0 132608
+ B3 16760832 0.000000 30.000000 53.250000 0 30.000000 24.000000 0 132608
+ B3 16760832 0.000000 0.750000 12.000000 0 25.844195 12.000000 0 132608
+ B3 16760832 0.000000 42.000000 53.250000 0 42.000000 28.155805 0 132608
+ B3 16760832 0.000000 4.687500 49.312500 0 32.301962 21.698038 0 132608
+ B3 16760832 0.000000 0.375000 45.000000 0 9.000000 53.625000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 54.000000 0 132608
+ B3 16760832 0.000000 0.750000 53.625000 0 53.250000 53.625000 0 132608
+ A3 16760832 0.750000 29.625000 53.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 30.000000 53.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 29.250000 53.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 24.000000 0.375000 0 132608
+ B3 16760832 0.000000 53.625000 30.000000 0 53.625000 54.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 54""x54"" 24""R IC5454-24R"
+ B3 16760832 0.000000 0.750000 30.000000 0 24.000000 30.000000 0 132608
+ B3 16760832 0.000000 24.000000 53.250000 0 24.000000 30.000000 0 132608
+ B3 16760832 0.000000 0.750000 15.000000 0 34.406483 15.000000 0 132608
+ B3 16760832 0.000000 39.000000 53.250000 0 39.000000 19.593517 0 132608
+ B3 16760832 0.000000 9.187500 44.812500 0 36.544602 17.455398 0 132608
+ B3 16760832 0.000000 0.375000 36.000000 0 18.000000 53.625000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 54.000000 0 132608
+ B3 16760832 0.000000 0.750000 53.625000 0 53.250000 53.625000 0 132608
+ A3 16760832 0.750000 23.625000 53.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 24.000000 53.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 23.250000 53.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 30.000000 0.375000 0 132608
+ B3 16760832 0.000000 53.625000 24.000000 0 53.625000 54.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 48""x48"" 36""R IC4848-36R"
+ B3 16760832 0.000000 0.750000 18.000000 0 16.079852 18.000000 0 132608
+ B3 16760832 0.000000 30.000000 47.250000 0 30.000000 31.920148 0 132608
+ B3 16760832 0.000000 0.750000 47.250000 0 22.059321 25.940679 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 48.000000 0 132608
+ B3 16760832 0.000000 0.750000 47.625000 0 47.250000 47.625000 0 132608
+ A3 16760832 0.750000 35.625000 47.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 36.000000 47.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 35.250000 47.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 12.000000 0.375000 0 132608
+ B3 16760832 0.000000 47.625000 36.000000 0 47.625000 48.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 48""x48"" 30""R IC4848-30R"
+ B3 16760832 0.000000 0.750000 30.000000 0 18.000000 30.000000 0 132608
+ B3 16760832 0.000000 18.000000 47.250000 0 18.000000 30.000000 0 132608
+ B3 16760832 0.000000 0.750000 15.000000 0 21.277358 15.000000 0 132608
+ B3 16760832 0.000000 33.000000 47.250000 0 33.000000 26.722642 0 132608
+ B3 16760832 0.000000 4.687500 43.312500 0 26.301962 21.698038 0 132608
+ B3 16760832 0.000000 0.375000 39.000000 0 9.000000 47.625000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 48.000000 0 132608
+ B3 16760832 0.000000 0.750000 47.625000 0 47.250000 47.625000 0 132608
+ A3 16760832 0.750000 29.625000 47.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 30.000000 47.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 29.250000 47.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 18.000000 0.375000 0 132608
+ B3 16760832 0.000000 47.625000 30.000000 0 47.625000 48.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 48""x48"" 24""R IC4848-24R"
+ B3 16760832 0.000000 0.750000 30.000000 0 18.000000 30.000000 0 132608
+ B3 16760832 0.000000 18.000000 47.250000 0 18.000000 30.000000 0 132608
+ B3 16760832 0.000000 0.750000 15.000000 0 28.406483 15.000000 0 132608
+ B3 16760832 0.000000 33.000000 47.250000 0 33.000000 19.593517 0 132608
+ B3 16760832 0.000000 4.687500 43.312500 0 30.544602 17.455398 0 132608
+ B3 16760832 0.000000 0.375000 39.000000 0 9.000000 47.625000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 48.000000 0 132608
+ B3 16760832 0.000000 0.750000 47.625000 0 47.250000 47.625000 0 132608
+ A3 16760832 0.750000 23.625000 47.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 24.000000 47.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 23.250000 47.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 24.000000 0.375000 0 132608
+ B3 16760832 0.000000 47.625000 24.000000 0 47.625000 48.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 48""x48"" 18""R IC4848-18R"
+ B3 16760832 0.000000 0.750000 30.000000 0 18.000000 30.000000 0 132608
+ B3 16760832 0.000000 18.000000 47.250000 0 18.000000 30.000000 0 132608
+ B3 16760832 0.000000 0.750000 15.000000 0 33.000000 15.000000 0 132608
+ B3 16760832 0.000000 33.000000 47.250000 0 33.000000 15.000000 0 132608
+ B3 16760832 0.000000 9.187500 38.812500 0 34.787243 13.212757 0 132608
+ B3 16760832 0.000000 0.375000 30.000000 0 18.000000 47.625000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 48.000000 0 132608
+ B3 16760832 0.000000 0.750000 47.625000 0 47.250000 47.625000 0 132608
+ A3 16760832 0.750000 17.625000 47.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 18.000000 47.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 17.250000 47.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 30.000000 0.375000 0 132608
+ B3 16760832 0.000000 47.625000 18.000000 0 47.625000 48.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 42""x42"" 30""R IC4242-30R"
+ B3 16760832 0.000000 0.750000 18.000000 0 17.165189 18.000000 0 132608
+ B3 16760832 0.000000 24.000000 41.250000 0 24.000000 24.834811 0 132608
+ B3 16760832 0.000000 0.750000 41.250000 0 20.036797 21.963203 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 42.000000 0 132608
+ B3 16760832 0.000000 0.750000 41.625000 0 41.250000 41.625000 0 132608
+ A3 16760832 0.750000 29.625000 41.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 30.000000 41.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 29.250000 41.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 12.000000 0.375000 0 132608
+ B3 16760832 0.000000 41.625000 30.000000 0 41.625000 42.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 42""x42"" 24""R IC4242-24R"
+ B3 16760832 0.000000 0.750000 24.000000 0 18.000000 24.000000 0 132608
+ B3 16760832 0.000000 18.000000 41.250000 0 18.000000 24.000000 0 132608
+ B3 16760832 0.000000 0.750000 12.000000 0 20.475542 12.000000 0 132608
+ B3 16760832 0.000000 30.000000 41.250000 0 30.000000 21.524458 0 132608
+ B3 16760832 0.000000 4.687500 37.312500 0 24.279437 17.720563 0 132608
+ B3 16760832 0.000000 0.375000 33.000000 0 9.000000 41.625000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 42.000000 0 132608
+ B3 16760832 0.000000 0.750000 41.625000 0 41.250000 41.625000 0 132608
+ A3 16760832 0.750000 23.625000 41.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 24.000000 41.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 23.250000 41.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 18.000000 0.375000 0 132608
+ B3 16760832 0.000000 41.625000 24.000000 0 41.625000 42.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 42""x42"" 18""R IC4242-18R"
+ B3 16760832 0.000000 0.750000 24.000000 0 18.000000 24.000000 0 132608
+ B3 16760832 0.000000 18.000000 41.250000 0 18.000000 24.000000 0 132608
+ B3 16760832 0.000000 0.750000 12.000000 0 27.682461 12.000000 0 132608
+ B3 16760832 0.000000 30.000000 41.250000 0 30.000000 14.317539 0 132608
+ B3 16760832 0.000000 4.687500 37.312500 0 28.522078 13.477922 0 132608
+ B3 16760832 0.000000 0.375000 33.000000 0 9.000000 41.625000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 42.000000 0 132608
+ B3 16760832 0.000000 0.750000 41.625000 0 41.250000 41.625000 0 132608
+ A3 16760832 0.750000 17.625000 41.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 18.000000 41.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 17.250000 41.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 24.000000 0.375000 0 132608
+ B3 16760832 0.000000 41.625000 18.000000 0 41.625000 42.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 36""x36"" 24""R IC3636-24R"
+ B3 16760832 0.000000 0.750000 35.250000 0 18.279437 17.720563 0 132608
+ B3 16760832 0.000000 0.750000 15.000000 0 16.406483 15.000000 0 132608
+ B3 16760832 0.000000 21.000000 35.250000 0 21.000000 19.593517 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 36.000000 0 132608
+ B3 16760832 0.000000 0.750000 35.625000 0 35.250000 35.625000 0 132608
+ A3 16760832 0.750000 23.625000 35.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 24.000000 35.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 23.250000 35.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 12.000000 0.375000 0 132608
+ B3 16760832 0.000000 35.625000 24.000000 0 35.625000 36.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 36""x36"" 18""R IC3636-18R"
+ B3 16760832 0.000000 4.687500 31.312500 0 22.522078 13.477922 0 132608
+ B3 16760832 0.000000 0.375000 27.000000 0 9.000000 35.625000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 36.000000 0 132608
+ B3 16760832 0.000000 0.750000 35.625000 0 35.250000 35.625000 0 132608
+ A3 16760832 0.750000 17.625000 35.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 18.000000 35.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 17.250000 35.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 18.000000 0.375000 0 132608
+ B3 16760832 0.000000 35.625000 18.000000 0 35.625000 36.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 36""x36"" 12""R IC3636-12R"
+ B3 16760832 0.000000 0.750000 12.000000 0 24.000000 12.000000 0 132608
+ B3 16760832 0.000000 24.000000 35.250000 0 24.000000 12.000000 0 132608
+ B3 16760832 0.000000 4.687500 31.312500 0 26.764719 9.235281 0 132608
+ B3 16760832 0.000000 0.375000 27.000000 0 9.000000 35.625000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 36.000000 0 132608
+ B3 16760832 0.000000 0.750000 35.625000 0 35.250000 35.625000 0 132608
+ A3 16760832 0.750000 11.625000 35.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 12.000000 35.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 11.250000 35.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 24.000000 0.375000 0 132608
+ B3 16760832 0.000000 35.625000 12.000000 0 35.625000 36.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 30""x30"" 18""R IC3030-18R"
+ B3 16760832 0.000000 4.687500 25.312500 0 16.522078 13.477922 0 132608
+ B3 16760832 0.000000 0.375000 21.000000 0 9.000000 29.625000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 30.000000 0 132608
+ B3 16760832 0.000000 0.750000 29.625000 0 29.250000 29.625000 0 132608
+ A3 16760832 0.750000 17.625000 29.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 18.000000 29.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 17.250000 29.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 12.000000 0.375000 0 132608
+ B3 16760832 0.000000 29.625000 18.000000 0 29.625000 30.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 30""x30"" 12""R IC3030-12R"
+ B3 16760832 0.000000 0.750000 29.250000 0 20.764719 9.235281 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 30.000000 0 132608
+ B3 16760832 0.000000 0.750000 29.625000 0 29.250000 29.625000 0 132608
+ A3 16760832 0.750000 11.625000 29.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 12.000000 29.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 11.250000 29.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 18.000000 0.375000 0 132608
+ B3 16760832 0.000000 29.625000 12.000000 0 29.625000 30.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Inside Corner Benchwork 24""x24"" 12""R IC2424-12R"
+ B3 16760832 0.000000 0.750000 23.250000 0 14.764719 9.235281 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 24.000000 0 132608
+ B3 16760832 0.000000 0.750000 23.625000 0 23.250000 23.625000 0 132608
+ A3 16760832 0.750000 11.625000 23.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 12.000000 23.250000 0.750000 0 270.000000 90.000000
+ A3 0 0.000000 11.250000 23.250000 0.750000 0 270.000000 90.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 12.000000 0.375000 0 132608
+ B3 16760832 0.000000 23.625000 12.000000 0 23.625000 24.000000 0 132608
+ END$SEGS
+
+
+SUBCONTENTS Model Railroad BenchWork - Outside Corner
+STRUCTURE * "Model Railroad Benchwork Outside Corner Benchwork 36""x36"" 3636OC"
+ A3 16760832 0.750000 34.875000 0.750000 35.250000 0 90.000000 90.000000
+ B3 16760832 0.000000 0.750000 35.250000 0 25.145184 10.854816 0 132608
+ B3 16760832 0.000000 0.375000 0.000000 0 0.3750000 36.000000 0 132608
+ B3 16760832 0.000000 0.000000 35.625000 0 36.000000 35.625000 0 132608
+ A3 0 0.000000 34.500000 0.750000 35.250000 0 90.000000 90.000000
+ A3 0 0.000000 35.250000 0.750000 35.250000 0 90.000000 90.000000
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Outside Corner Benchwork 30""x30"" 3030OC"
+ A3 16760832 0.750000 28.875000 0.750000 29.250000 0 90.000000 90.000000
+ B3 16760832 0.000000 0.750000 29.250000 0 20.902543 9.097457 0 132608
+ B3 16760832 0.000000 0.375000 0.000000 0 0.3750000 30.000000 0 132608
+ B3 16760832 0.000000 0.000000 29.625000 0 30.000000 29.625000 0 132608
+ A3 0 0.000000 28.500000 0.750000 29.250000 0 90.000000 90.000000
+ A3 0 0.000000 29.250000 0.750000 29.250000 0 90.000000 90.000000
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Outside Corner Benchwork 24""x24"" 2424OC"
+ A3 16760832 0.750000 22.875000 0.750000 23.250000 0 90.000000 90.000000
+ B3 16760832 0.000000 0.750000 23.250000 0 16.659903 7.340097 0 132608
+ B3 16760832 0.000000 0.375000 0.000000 0 0.3750000 24.000000 0 132608
+ B3 16760832 0.000000 0.000000 23.625000 0 24.000000 23.625000 0 132608
+ A3 0 0.000000 22.500000 0.750000 23.250000 0 90.000000 90.000000
+ A3 0 0.000000 23.250000 0.750000 23.250000 0 90.000000 90.000000
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Outside Corner Benchwork 18""x18"" 1818OC"
+ A3 16760832 0.750000 16.875000 0.750000 17.250000 0 90.000000 90.000000
+ B3 16760832 0.000000 0.750000 17.250000 0 12.417262 5.582738 0 132608
+ B3 16760832 0.000000 0.375000 0.000000 0 0.3750000 18.000000 0 132608
+ B3 16760832 0.000000 0.000000 17.625000 0 18.000000 17.625000 0 132608
+ A3 0 0.000000 16.500000 0.750000 17.250000 0 90.000000 90.000000
+ A3 0 0.000000 17.250000 0.750000 17.250000 0 90.000000 90.000000
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Outside Corner Benchwork 12""x12"" 1212OC"
+ A3 16760832 0.750000 10.875000 0.750000 11.250000 0 90.000000 90.000000
+ B3 16760832 0.000000 0.750000 11.250000 0 8.174621 3.825379 0 132608
+ B3 16760832 0.000000 0.375000 0.000000 0 0.3750000 12.000000 0 132608
+ B3 16760832 0.000000 0.000000 11.625000 0 12.000000 11.625000 0 132608
+ A3 0 0.000000 10.500000 0.750000 11.250000 0 90.000000 90.000000
+ A3 0 0.000000 11.250000 0.750000 11.250000 0 90.000000 90.000000
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Outside Corner Benchwork 24"" Half-Circle 24-Half-C"
+ A3 16760832 0.750000 11.625000 12.000000 0.750000 0 270.000000 180.000000
+ A3 0 0.000000 12.000000 12.000000 0.750000 0 270.000000 180.000000
+ A3 0 0.000000 11.250000 12.000000 0.750000 0 270.000000 180.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 24.000000 0.3750000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 12.000000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Outside Corner Benchwork 36"" Half-Circle 36-Half-C"
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 17.322285 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 17.322285 0 132608
+ A3 16760832 0.750000 17.625000 18.000000 0.750000 0 270.000000 180.000000
+ A3 0 0.000000 18.000000 18.000000 0.750000 0 270.000000 180.000000
+ A3 0 0.000000 17.250000 18.000000 0.750000 0 270.000000 180.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 36.000000 0.3750000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Outside Corner Benchwork 48"" Half-Circle 48-Half-C"
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 21.100445 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 24.000000 0 132608
+ B3 16760832 0.000000 36.000000 0.750000 0 36.000000 21.100445 0 132608
+ A3 16760832 0.750000 23.625000 24.000000 0.750000 0 270.000000 180.000000
+ A3 0 0.000000 24.000000 24.000000 0.750000 0 270.000000 180.000000
+ A3 0 0.000000 23.250000 24.000000 0.750000 0 270.000000 180.000000
+ B3 16760832 0.000000 0.000000 0.375000 0 48.000000 0.3750000 0 132608
+ END$SEGS
+
+
+SUBCONTENTS Model Railroad BenchWork - Triangular 12"" Benchwork
+STRUCTURE * "Model Railroad Benchwork Tri. Benchwork 12""x24"" 1224T"
+ F4 16760832 0.000000 8 0
+ 0.000000 0.000000 0
+ 0.000000 12.000000 0
+ 24.000000 12.000000 0
+ 0.000000 0.000000 0
+ 0.750000 1.213525 0
+ 20.822949 11.250000 0
+ 0.750000 11.250000 0
+ 0.750000 1.213525 0
+ Y4 0 0.000000 3 0
+ 0.750000 1.213525 0
+ 0.750000 11.250000 0
+ 20.822949 11.250000 0
+ Y4 0 0.000000 3 0
+ 0.000000 0.000000 0
+ 0.000000 12.000000 0
+ 24.000000 12.000000 0
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Tri. Benchwork 12""x18"" 1218T"
+ F4 16760832 0.000000 8 0
+ 0.000000 0.000000 0
+ 0.000000 12.000000 0
+ 18.000000 12.000000 0
+ 0.000000 0.000000 0
+ 0.750000 1.401388 0
+ 15.522918 11.250000 0
+ 0.750000 11.250000 0
+ 0.750000 1.401388 0
+ Y4 0 0.000000 3 0
+ 0.750000 1.401388 0
+ 0.750000 11.250000 0
+ 15.522918 11.250000 0
+ Y4 0 0.000000 3 0
+ 0.000000 0.000000 0
+ 0.000000 12.000000 0
+ 18.000000 12.000000 0
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Tri. Benchwork 12""x12"" 1212T"
+ F4 16760832 0.000000 8 0
+ 0.000000 0.000000 0
+ 0.000000 12.000000 0
+ 12.000000 12.000000 0
+ 0.000000 0.000000 0
+ 0.750000 1.810660 0
+ 10.189340 11.250000 0
+ 0.750000 11.250000 0
+ 0.750000 1.810660 0
+ Y4 0 0.000000 3 0
+ 0.750000 1.810660 0
+ 0.750000 11.250000 0
+ 10.189340 11.250000 0
+ Y4 0 0.000000 3 0
+ 0.000000 0.000000 0
+ 0.000000 12.000000 0
+ 12.000000 12.000000 0
+ END$SEGS
+
+
+SUBCONTENTS Model Railroad BenchWork - Triangular 18"" Benchwork
+STRUCTURE * "Model Railroad Benchwork Tri. Benchwork 18""x18"" 1818T"
+ F4 16760832 0.000000 8 0
+ 0.000000 0.000000 0
+ 0.000000 18.000000 0
+ 18.000000 18.000000 0
+ 0.000000 0.000000 0
+ 0.750000 1.810660 0
+ 16.189340 17.250000 0
+ 0.750000 17.250000 0
+ 0.750000 1.810660 0
+ Y4 0 0.000000 3 0
+ 0.750000 1.810660 0
+ 0.750000 17.250000 0
+ 16.189340 17.250000 0
+ Y4 0 0.000000 3 0
+ 0.000000 0.000000 0
+ 0.000000 18.000000 0
+ 18.000000 18.000000 0
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Tri. Benchwork 18""x24"" 1824T"
+ F4 16760832 0.000000 8 0
+ 0.000000 0.000000 0
+ 0.000000 18.000000 0
+ 24.000000 18.000000 0
+ 0.000000 0.000000 0
+ 0.750000 1.500000 0
+ 21.750000 17.250000 0
+ 0.750000 17.250000 0
+ 0.750000 1.500000 0
+ Y4 0 0.000000 3 0
+ 0.750000 1.500000 0
+ 0.750000 17.250000 0
+ 21.750000 17.250000 0
+ Y4 0 0.000000 3 0
+ 0.000000 0.000000 0
+ 0.000000 18.000000 0
+ 24.000000 18.000000 0
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Tri. Benchwork 18""x30"" 1830T"
+ F4 16760832 0.000000 8 0
+ 0.000000 0.000000 0
+ 0.000000 18.000000 0
+ 30.000000 18.000000 0
+ 0.000000 0.000000 0
+ 0.750000 1.324643 0
+ 27.292262 17.250000 0
+ 0.750000 17.250000 0
+ 0.750000 1.324643 0
+ Y4 0 0.000000 3 0
+ 0.750000 1.324643 0
+ 0.750000 17.250000 0
+ 27.292262 17.250000 0
+ Y4 0 0.000000 3 0
+ 0.000000 0.000000 0
+ 0.000000 18.000000 0
+ 30.000000 18.000000 0
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Tri. Benchwork 18""x36"" 1836T"
+ F4 16760832 0.000000 8 0
+ 0.000000 0.000000 0
+ 0.000000 18.000000 0
+ 36.000000 18.000000 0
+ 0.000000 0.000000 0
+ 0.750000 1.213525 0
+ 32.822949 17.250000 0
+ 0.750000 17.250000 0
+ 0.750000 1.213525 0
+ Y4 0 0.000000 3 0
+ 0.750000 1.213525 0
+ 0.750000 17.250000 0
+ 32.822949 17.250000 0
+ Y4 0 0.000000 3 0
+ 0.000000 0.000000 0
+ 0.000000 18.000000 0
+ 36.000000 18.000000 0
+ END$SEGS
+
+
+SUBCONTENTS Model Railroad BenchWork - Triangular 24"" Benchwork
+STRUCTURE * "Model Railroad Benchwork Tri. Benchwork 24""x24"" 2424T"
+ F4 16760832 0.000000 8 0
+ 0.000000 0.000000 0
+ 0.000000 24.000000 0
+ 24.000000 24.000000 0
+ 0.000000 0.000000 0
+ 0.750000 1.810660 0
+ 22.189340 23.250000 0
+ 0.750000 23.250000 0
+ 0.750000 1.810660 0
+ Y4 0 0.000000 3 0
+ 0.750000 1.810660 0
+ 0.750000 23.250000 0
+ 22.189340 23.250000 0
+ Y4 0 0.000000 3 0
+ 0.000000 0.000000 0
+ 0.000000 24.000000 0
+ 24.000000 24.000000 0
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Tri. Benchwork 24""x30"" 2430T"
+ F4 16760832 0.000000 8 0
+ 0.000000 0.000000 0
+ 0.000000 24.000000 0
+ 30.000000 24.000000 0
+ 0.000000 0.000000 0
+ 0.750000 1.560469 0
+ 27.861914 23.250000 0
+ 0.750000 23.250000 0
+ 0.750000 1.560469 0
+ Y4 0 0.000000 3 0
+ 0.750000 1.560469 0
+ 0.750000 23.250000 0
+ 27.861914 23.250000 0
+ Y4 0 0.000000 3 0
+ 0.000000 0.000000 0
+ 0.000000 24.000000 0
+ 30.000000 24.000000 0
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Tri. Benchwork 24""x36"" 2436T"
+ B3 16760832 0.000000 0.437981 23.041987 0 10.521956 7.916025 0 132608
+ F4 16760832 0.000000 8 0
+ 0.000000 0.000000 0
+ 0.000000 24.000000 0
+ 36.000000 24.000000 0
+ 0.000000 0.000000 0
+ 0.750000 1.401388 0
+ 33.522918 23.250000 0
+ 0.750000 23.250000 0
+ 0.750000 1.401388 0
+ Y4 0 0.000000 3 0
+ 0.750000 1.401388 0
+ 0.750000 23.250000 0
+ 33.522918 23.250000 0
+ Y4 0 0.000000 3 0
+ 0.000000 0.000000 0
+ 0.000000 24.000000 0
+ 36.000000 24.000000 0
+ END$SEGS
+
+
+SUBCONTENTS Model Railroad BenchWork - Triangular 30"" Benchwork
+STRUCTURE * "Model Railroad Benchwork Tri. Benchwork 30""x30"" 3030T"
+ B3 16760832 0.000000 0.484835 28.984835 0 14.204505 15.265165 0 132608
+ F4 16760832 0.000000 8 0
+ 0.000000 0.000000 0
+ 0.000000 30.000000 0
+ 30.000000 30.000000 0
+ 0.000000 0.000000 0
+ 0.750000 1.810660 0
+ 28.189340 29.250000 0
+ 0.750000 29.250000 0
+ 0.750000 1.810660 0
+ Y4 0 0.000000 3 0
+ 0.750000 1.810660 0
+ 0.750000 29.250000 0
+ 28.189340 29.250000 0
+ Y4 0 0.000000 3 0
+ 0.000000 0.000000 0
+ 0.000000 30.000000 0
+ 30.000000 30.000000 0
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Tri. Benchwork 30""x36"" 3036T"
+ B3 16760832 0.000000 0.461917 29.009931 0 14.059648 12.692654 0 132608
+ F4 16760832 0.000000 8 0
+ 0.000000 0.000000 0
+ 0.000000 30.000000 0
+ 36.000000 30.000000 0
+ 0.000000 0.000000 0
+ 0.750000 1.601281 0
+ 33.928463 29.250000 0
+ 0.750000 29.250000 0
+ 0.750000 1.601281 0
+ Y4 0 0.000000 3 0
+ 0.750000 1.601281 0
+ 0.750000 29.250000 0
+ 33.928463 29.250000 0
+ Y4 0 0.000000 3 0
+ 0.000000 0.000000 0
+ 0.000000 30.000000 0
+ 36.000000 30.000000 0
+ END$SEGS
+
+
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 12""x60"" 131260"
+ B3 16760832 0.000000 0.000000 0.375000 0 60.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 11.250000 0 132608
+ B3 16760832 0.000000 15.000000 0.750000 0 15.000000 11.250000 0 132608
+ B3 16760832 0.000000 30.000000 0.750000 0 30.000000 11.250000 0 132608
+ B3 16760832 0.000000 45.000000 0.750000 0 45.000000 11.250000 0 132608
+ B3 16760832 0.000000 59.625000 0.750000 0 59.625000 11.250000 0 132608
+ B3 16760832 0.000000 0.000000 11.625000 0 60.000000 11.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 12""x54"" 131254"
+ B3 16760832 0.000000 0.000000 0.375000 0 54.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 11.250000 0 132608
+ B3 16760832 0.000000 18.000000 0.750000 0 18.000000 11.250000 0 132608
+ B3 16760832 0.000000 36.000000 0.750000 0 36.000000 11.250000 0 132608
+ B3 16760832 0.000000 53.625000 0.750000 0 53.625000 11.250000 0 132608
+ B3 16760832 0.000000 0.000000 11.625000 0 54.000000 11.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 12""x48"" 131248"
+ B3 16760832 0.000000 0.000000 0.375000 0 48.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 11.250000 0 132608
+ B3 16760832 0.000000 16.000000 0.750000 0 16.000000 11.250000 0 132608
+ B3 16760832 0.000000 32.000000 0.750000 0 32.000000 11.250000 0 132608
+ B3 16760832 0.000000 47.625000 0.750000 0 47.625000 11.250000 0 132608
+ B3 16760832 0.000000 0.000000 11.625000 0 48.000000 11.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 12""x42"" 131242"
+ B3 16760832 0.000000 0.000000 0.375000 0 42.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 11.250000 0 132608
+ B3 16760832 0.000000 14.000000 0.750000 0 14.000000 11.250000 0 132608
+ B3 16760832 0.000000 28.000000 0.750000 0 28.000000 11.250000 0 132608
+ B3 16760832 0.000000 41.625000 0.750000 0 41.625000 11.250000 0 132608
+ B3 16760832 0.000000 0.000000 11.625000 0 42.000000 11.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 12""x36"" 131236"
+ B3 16760832 0.000000 0.000000 0.375000 0 36.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 11.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 11.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 11.250000 0 132608
+ B3 16760832 0.000000 35.625000 0.750000 0 35.625000 11.250000 0 132608
+ B3 16760832 0.000000 0.000000 11.625000 0 36.000000 11.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 12""x30"" 131230"
+ B3 16760832 0.000000 0.000000 0.375000 0 30.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 11.250000 0 132608
+ B3 16760832 0.000000 15.000000 0.750000 0 15.000000 11.250000 0 132608
+ B3 16760832 0.000000 29.625000 0.750000 0 29.625000 11.250000 0 132608
+ B3 16760832 0.000000 0.000000 11.625000 0 30.000000 11.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 12""x24"" 131224"
+ B3 16760832 0.000000 0.000000 0.375000 0 24.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 11.250000 0 132608
+ B3 16760832 0.000000 23.625000 0.750000 0 23.625000 11.250000 0 132608
+ B3 16760832 0.000000 0.000000 11.625000 0 24.000000 11.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 12""x18"" 131218"
+ B3 16760832 0.000000 0.000000 0.375000 0 18.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 11.250000 0 132608
+ B3 16760832 0.000000 17.625000 0.750000 0 17.625000 11.250000 0 132608
+ B3 16760832 0.000000 0.000000 11.625000 0 18.000000 11.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 12""x12"" 131212"
+ B3 16760832 0.000000 0.000000 0.375000 0 12.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 11.250000 0 132608
+ B3 16760832 0.000000 11.625000 0.750000 0 11.625000 11.250000 0 132608
+ B3 16760832 0.000000 0.000000 11.625000 0 12.000000 11.625000 0 132608
+ END$SEGS
+
+
+SUBCONTENTS Model Railroad BenchWork - Rectangular 18"" Benchwork
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 18""x60"" 131860"
+ B3 16760832 0.000000 0.000000 0.375000 0 60.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 17.250000 0 132608
+ B3 16760832 0.000000 15.000000 0.750000 0 15.000000 17.250000 0 132608
+ B3 16760832 0.000000 30.000000 0.750000 0 30.000000 17.250000 0 132608
+ B3 16760832 0.000000 45.000000 0.750000 0 45.000000 17.250000 0 132608
+ B3 16760832 0.000000 59.625000 0.750000 0 59.625000 17.250000 0 132608
+ B3 16760832 0.000000 0.000000 17.625000 0 60.000000 17.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 18""x54"" 131854"
+ B3 16760832 0.000000 0.000000 0.375000 0 54.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 17.250000 0 132608
+ B3 16760832 0.000000 18.000000 0.750000 0 18.000000 17.250000 0 132608
+ B3 16760832 0.000000 36.000000 0.750000 0 36.000000 17.250000 0 132608
+ B3 16760832 0.000000 53.625000 0.750000 0 53.625000 17.250000 0 132608
+ B3 16760832 0.000000 0.000000 17.625000 0 54.000000 17.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 18""x48"" 131848"
+ B3 16760832 0.000000 0.000000 0.375000 0 48.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 17.250000 0 132608
+ B3 16760832 0.000000 16.000000 0.750000 0 16.000000 17.250000 0 132608
+ B3 16760832 0.000000 32.000000 0.750000 0 32.000000 17.250000 0 132608
+ B3 16760832 0.000000 47.625000 0.750000 0 47.625000 17.250000 0 132608
+ B3 16760832 0.000000 0.000000 17.625000 0 48.000000 17.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 18""x42"" 131842"
+ B3 16760832 0.000000 0.000000 0.375000 0 42.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 17.250000 0 132608
+ B3 16760832 0.000000 14.000000 0.750000 0 14.000000 17.250000 0 132608
+ B3 16760832 0.000000 28.000000 0.750000 0 28.000000 17.250000 0 132608
+ B3 16760832 0.000000 41.625000 0.750000 0 41.625000 17.250000 0 132608
+ B3 16760832 0.000000 0.000000 17.625000 0 42.000000 17.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 18""x36"" 131836"
+ B3 16760832 0.000000 0.000000 0.375000 0 36.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 17.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 17.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 17.250000 0 132608
+ B3 16760832 0.000000 35.625000 0.750000 0 35.625000 17.250000 0 132608
+ B3 16760832 0.000000 0.000000 17.625000 0 36.000000 17.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 18""x30"" 131830"
+ B3 16760832 0.000000 0.000000 0.375000 0 30.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 17.250000 0 132608
+ B3 16760832 0.000000 15.000000 0.750000 0 15.000000 17.250000 0 132608
+ B3 16760832 0.000000 29.625000 0.750000 0 29.625000 17.250000 0 132608
+ B3 16760832 0.000000 0.000000 17.625000 0 30.000000 17.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 18""x24"" 131824"
+ B3 16760832 0.000000 0.000000 0.375000 0 24.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 17.250000 0 132608
+ B3 16760832 0.000000 23.625000 0.750000 0 23.625000 17.250000 0 132608
+ B3 16760832 0.000000 0.000000 17.625000 0 24.000000 17.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 18""x18"" 131818"
+ B3 16760832 0.000000 0.000000 0.375000 0 18.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 17.250000 0 132608
+ B3 16760832 0.000000 17.625000 0.750000 0 17.625000 17.250000 0 132608
+ B3 16760832 0.000000 0.000000 17.625000 0 18.000000 17.625000 0 132608
+ END$SEGS
+
+
+SUBCONTENTS Model Railroad BenchWork - Rectangular 24"" Benchwork
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 24""x60"" 132460"
+ B3 16760832 0.000000 0.000000 0.375000 0 60.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 23.250000 0 132608
+ B3 16760832 0.000000 15.000000 0.750000 0 15.000000 23.250000 0 132608
+ B3 16760832 0.000000 30.000000 0.750000 0 30.000000 23.250000 0 132608
+ B3 16760832 0.000000 45.000000 0.750000 0 45.000000 23.250000 0 132608
+ B3 16760832 0.000000 59.625000 0.750000 0 59.625000 23.250000 0 132608
+ B3 16760832 0.000000 0.000000 23.625000 0 60.000000 23.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 24""x54"" 132454"
+ B3 16760832 0.000000 0.000000 0.375000 0 54.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 23.250000 0 132608
+ B3 16760832 0.000000 18.000000 0.750000 0 18.000000 23.250000 0 132608
+ B3 16760832 0.000000 36.000000 0.750000 0 36.000000 23.250000 0 132608
+ B3 16760832 0.000000 53.625000 0.750000 0 53.625000 23.250000 0 132608
+ B3 16760832 0.000000 0.000000 23.625000 0 54.000000 23.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 24""x48"" 132448"
+ B3 16760832 0.000000 0.000000 0.375000 0 48.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 23.250000 0 132608
+ B3 16760832 0.000000 16.000000 0.750000 0 16.000000 23.250000 0 132608
+ B3 16760832 0.000000 32.000000 0.750000 0 32.000000 23.250000 0 132608
+ B3 16760832 0.000000 47.625000 0.750000 0 47.625000 23.250000 0 132608
+ B3 16760832 0.000000 0.000000 23.625000 0 48.000000 23.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 24""x42"" 132442"
+ B3 16760832 0.000000 0.000000 0.375000 0 42.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 23.250000 0 132608
+ B3 16760832 0.000000 14.000000 0.750000 0 14.000000 23.250000 0 132608
+ B3 16760832 0.000000 28.000000 0.750000 0 28.000000 23.250000 0 132608
+ B3 16760832 0.000000 41.625000 0.750000 0 41.625000 23.250000 0 132608
+ B3 16760832 0.000000 0.000000 23.625000 0 42.000000 23.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 24""x36"" 132436"
+ B3 16760832 0.000000 0.000000 0.375000 0 36.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 23.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 23.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 23.250000 0 132608
+ B3 16760832 0.000000 35.625000 0.750000 0 35.625000 23.250000 0 132608
+ B3 16760832 0.000000 0.000000 23.625000 0 36.000000 23.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 24""x30"" 132430"
+ B3 16760832 0.000000 0.000000 0.375000 0 30.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 23.250000 0 132608
+ B3 16760832 0.000000 15.000000 0.750000 0 15.000000 23.250000 0 132608
+ B3 16760832 0.000000 29.625000 0.750000 0 29.625000 23.250000 0 132608
+ B3 16760832 0.000000 0.000000 23.625000 0 30.000000 23.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 24""x24"" 132424"
+ B3 16760832 0.000000 0.000000 0.375000 0 24.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 23.250000 0 132608
+ B3 16760832 0.000000 23.625000 0.750000 0 23.625000 23.250000 0 132608
+ B3 16760832 0.000000 0.000000 23.625000 0 24.000000 23.625000 0 132608
+ END$SEGS
+
+
+SUBCONTENTS Model Railroad BenchWork - Rectangular 30"" Benchwork
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 30""x60"" 133060"
+ B3 16760832 0.000000 0.000000 0.375000 0 60.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 29.250000 0 132608
+ B3 16760832 0.000000 15.000000 0.750000 0 15.000000 29.250000 0 132608
+ B3 16760832 0.000000 30.000000 0.750000 0 30.000000 29.250000 0 132608
+ B3 16760832 0.000000 45.000000 0.750000 0 45.000000 29.250000 0 132608
+ B3 16760832 0.000000 59.625000 0.750000 0 59.625000 29.250000 0 132608
+ B3 16760832 0.000000 0.000000 29.625000 0 60.000000 29.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 30""x54"" 133054"
+ B3 16760832 0.000000 0.000000 0.375000 0 54.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 29.250000 0 132608
+ B3 16760832 0.000000 18.000000 0.750000 0 18.000000 29.250000 0 132608
+ B3 16760832 0.000000 36.000000 0.750000 0 36.000000 29.250000 0 132608
+ B3 16760832 0.000000 53.625000 0.750000 0 53.625000 29.250000 0 132608
+ B3 16760832 0.000000 0.000000 29.625000 0 54.000000 29.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 30""x48"" 133048"
+ B3 16760832 0.000000 0.000000 0.375000 0 48.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 29.250000 0 132608
+ B3 16760832 0.000000 16.000000 0.750000 0 16.000000 29.250000 0 132608
+ B3 16760832 0.000000 32.000000 0.750000 0 32.000000 29.250000 0 132608
+ B3 16760832 0.000000 47.625000 0.750000 0 47.625000 29.250000 0 132608
+ B3 16760832 0.000000 0.000000 29.625000 0 48.000000 29.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 30""x42"" 133042"
+ B3 16760832 0.000000 0.000000 0.375000 0 42.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 29.250000 0 132608
+ B3 16760832 0.000000 14.000000 0.750000 0 14.000000 29.250000 0 132608
+ B3 16760832 0.000000 28.000000 0.750000 0 28.000000 29.250000 0 132608
+ B3 16760832 0.000000 41.625000 0.750000 0 41.625000 29.250000 0 132608
+ B3 16760832 0.000000 0.000000 29.625000 0 42.000000 29.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 30""x36"" 133036"
+ B3 16760832 0.000000 0.000000 0.375000 0 36.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 29.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 29.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 29.250000 0 132608
+ B3 16760832 0.000000 35.625000 0.750000 0 35.625000 29.250000 0 132608
+ B3 16760832 0.000000 0.000000 29.625000 0 36.000000 29.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 30""x30"" 133030"
+ B3 16760832 0.000000 0.000000 0.375000 0 30.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 29.250000 0 132608
+ B3 16760832 0.000000 15.000000 0.750000 0 15.000000 29.250000 0 132608
+ B3 16760832 0.000000 29.625000 0.750000 0 29.625000 29.250000 0 132608
+ B3 16760832 0.000000 0.000000 29.625000 0 30.000000 29.625000 0 132608
+ END$SEGS
+
+
+SUBCONTENTS Model Railroad BenchWork - Rectangular 36"" Benchwork
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 36""x60"" 133660"
+ B3 16760832 0.000000 0.000000 0.375000 0 60.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 35.250000 0 132608
+ B3 16760832 0.000000 15.000000 0.750000 0 15.000000 35.250000 0 132608
+ B3 16760832 0.000000 30.000000 0.750000 0 30.000000 35.250000 0 132608
+ B3 16760832 0.000000 45.000000 0.750000 0 45.000000 35.250000 0 132608
+ B3 16760832 0.000000 59.625000 0.750000 0 59.625000 35.250000 0 132608
+ B3 16760832 0.000000 0.000000 35.625000 0 60.000000 35.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 36""x54"" 133654"
+ B3 16760832 0.000000 0.000000 0.375000 0 54.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 35.250000 0 132608
+ B3 16760832 0.000000 18.000000 0.750000 0 18.000000 35.250000 0 132608
+ B3 16760832 0.000000 36.000000 0.750000 0 36.000000 35.250000 0 132608
+ B3 16760832 0.000000 53.625000 0.750000 0 53.625000 35.250000 0 132608
+ B3 16760832 0.000000 0.000000 35.625000 0 54.000000 35.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 36""x48"" 133648"
+ B3 16760832 0.000000 0.000000 0.375000 0 48.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 35.250000 0 132608
+ B3 16760832 0.000000 16.000000 0.750000 0 16.000000 35.250000 0 132608
+ B3 16760832 0.000000 32.000000 0.750000 0 32.000000 35.250000 0 132608
+ B3 16760832 0.000000 47.625000 0.750000 0 47.625000 35.250000 0 132608
+ B3 16760832 0.000000 0.000000 35.625000 0 48.000000 35.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 36""x42"" 133642"
+ B3 16760832 0.000000 0.000000 0.375000 0 42.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 35.250000 0 132608
+ B3 16760832 0.000000 14.000000 0.750000 0 14.000000 35.250000 0 132608
+ B3 16760832 0.000000 28.000000 0.750000 0 28.000000 35.250000 0 132608
+ B3 16760832 0.000000 41.625000 0.750000 0 41.625000 35.250000 0 132608
+ B3 16760832 0.000000 0.000000 35.625000 0 42.000000 35.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 36""x36"" 133636"
+ B3 16760832 0.000000 0.000000 0.375000 0 36.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 35.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 35.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 35.250000 0 132608
+ B3 16760832 0.000000 35.625000 0.750000 0 35.625000 35.250000 0 132608
+ B3 16760832 0.000000 0.000000 35.625000 0 36.000000 35.625000 0 132608
+ END$SEGS
+
+
+SUBCONTENTS Model Railroad BenchWork - Rectangular 42"" Benchwork
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 42""x60"" 134260"
+ B3 16760832 0.000000 0.000000 0.375000 0 60.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 41.250000 0 132608
+ B3 16760832 0.000000 15.000000 0.750000 0 15.000000 41.250000 0 132608
+ B3 16760832 0.000000 30.000000 0.750000 0 30.000000 41.250000 0 132608
+ B3 16760832 0.000000 45.000000 0.750000 0 45.000000 41.250000 0 132608
+ B3 16760832 0.000000 59.625000 0.750000 0 59.625000 41.250000 0 132608
+ B3 16760832 0.000000 0.000000 41.625000 0 60.000000 41.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 42""x54"" 134254"
+ B3 16760832 0.000000 0.000000 0.375000 0 54.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 41.250000 0 132608
+ B3 16760832 0.000000 18.000000 0.750000 0 18.000000 41.250000 0 132608
+ B3 16760832 0.000000 36.000000 0.750000 0 36.000000 41.250000 0 132608
+ B3 16760832 0.000000 53.625000 0.750000 0 53.625000 41.250000 0 132608
+ B3 16760832 0.000000 0.000000 41.625000 0 54.000000 41.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 42""x48"" 134248"
+ B3 16760832 0.000000 0.000000 0.375000 0 48.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 41.250000 0 132608
+ B3 16760832 0.000000 16.000000 0.750000 0 16.000000 41.250000 0 132608
+ B3 16760832 0.000000 32.000000 0.750000 0 32.000000 41.250000 0 132608
+ B3 16760832 0.000000 47.625000 0.750000 0 47.625000 41.250000 0 132608
+ B3 16760832 0.000000 0.000000 41.625000 0 48.000000 41.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 42""x42"" 134242"
+ B3 16760832 0.000000 0.000000 0.375000 0 42.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 41.250000 0 132608
+ B3 16760832 0.000000 14.000000 0.750000 0 14.000000 41.250000 0 132608
+ B3 16760832 0.000000 28.000000 0.750000 0 28.000000 41.250000 0 132608
+ B3 16760832 0.000000 41.625000 0.750000 0 41.625000 41.250000 0 132608
+ B3 16760832 0.000000 0.000000 41.625000 0 42.000000 41.625000 0 132608
+ END$SEGS
+
+
+SUBCONTENTS Model Railroad BenchWork - Rectangular 48"" Benchwork
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 48""x60"" 134860"
+ B3 16760832 0.000000 0.000000 0.375000 0 60.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 47.250000 0 132608
+ B3 16760832 0.000000 15.000000 0.750000 0 15.000000 47.250000 0 132608
+ B3 16760832 0.000000 30.000000 0.750000 0 30.000000 47.250000 0 132608
+ B3 16760832 0.000000 45.000000 0.750000 0 45.000000 47.250000 0 132608
+ B3 16760832 0.000000 59.625000 0.750000 0 59.625000 47.250000 0 132608
+ B3 16760832 0.000000 0.000000 47.625000 0 60.000000 47.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 48""x54"" 134854"
+ B3 16760832 0.000000 0.000000 0.375000 0 54.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 47.250000 0 132608
+ B3 16760832 0.000000 18.000000 0.750000 0 18.000000 47.250000 0 132608
+ B3 16760832 0.000000 36.000000 0.750000 0 36.000000 47.250000 0 132608
+ B3 16760832 0.000000 53.625000 0.750000 0 53.625000 47.250000 0 132608
+ B3 16760832 0.000000 0.000000 47.625000 0 54.000000 47.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 48""x48"" 134848"
+ B3 16760832 0.000000 0.000000 0.375000 0 48.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 47.250000 0 132608
+ B3 16760832 0.000000 16.000000 0.750000 0 16.000000 47.250000 0 132608
+ B3 16760832 0.000000 32.000000 0.750000 0 32.000000 47.250000 0 132608
+ B3 16760832 0.000000 47.625000 0.750000 0 47.625000 47.250000 0 132608
+ B3 16760832 0.000000 0.000000 47.625000 0 48.000000 47.625000 0 132608
+ END$SEGS
+
+
+SUBCONTENTS Model Railroad BenchWork - Rectangular 54"" Benchwork
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 54""x60"" 135460"
+ B3 16760832 0.000000 0.000000 0.375000 0 60.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 53.250000 0 132608
+ B3 16760832 0.000000 15.000000 0.750000 0 15.000000 53.250000 0 132608
+ B3 16760832 0.000000 30.000000 0.750000 0 30.000000 53.250000 0 132608
+ B3 16760832 0.000000 45.000000 0.750000 0 45.000000 53.250000 0 132608
+ B3 16760832 0.000000 59.625000 0.750000 0 59.625000 53.250000 0 132608
+ B3 16760832 0.000000 0.000000 53.625000 0 60.000000 53.625000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 54""x54"" 135454"
+ B3 16760832 0.000000 0.000000 0.375000 0 54.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 53.250000 0 132608
+ B3 16760832 0.000000 18.000000 0.750000 0 18.000000 53.250000 0 132608
+ B3 16760832 0.000000 36.000000 0.750000 0 36.000000 53.250000 0 132608
+ B3 16760832 0.000000 53.625000 0.750000 0 53.625000 53.250000 0 132608
+ B3 16760832 0.000000 0.000000 53.625000 0 54.000000 53.625000 0 132608
+ END$SEGS
+
+
+SUBCONTENTS Model Railroad BenchWork - Rectangular 60"" Benchwork
+STRUCTURE * "Model Railroad Benchwork Rect. Benchwork 60""x60"" 136060"
+ B3 16760832 0.000000 0.000000 0.375000 0 60.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 59.250000 0 132608
+ B3 16760832 0.000000 15.000000 0.750000 0 15.000000 59.250000 0 132608
+ B3 16760832 0.000000 30.000000 0.750000 0 30.000000 59.250000 0 132608
+ B3 16760832 0.000000 45.000000 0.750000 0 45.000000 59.250000 0 132608
+ B3 16760832 0.000000 59.625000 0.750000 0 59.625000 59.250000 0 132608
+ B3 16760832 0.000000 0.000000 59.625000 0 60.000000 59.625000 0 132608
+ END$SEGS
+
+
+
+SUBCONTENTS Model Railroad BenchWork - Legs
+STRUCTURE * "Model Railroad Benchwork H-Style Leg 12"" Width H-12-2430364248"
+ B3 12092939 0.000000 0.875000 -1.750000 0 0.875000 1.750000 0 132608
+ B3 12092939 0.000000 1.250000 0.000000 0 10.750000 0.000000 0 132608
+ B3 12092939 0.000000 11.125000 -1.750000 0 11.125000 1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork H-Style Leg 18"" Width H-18-2430364248"
+ B3 12092939 0.000000 0.875000 -1.750000 0 0.875000 1.750000 0 132608
+ B3 12092939 0.000000 1.250000 0.000000 0 16.750000 0.000000 0 132608
+ B3 12092939 0.000000 17.125000 -1.750000 0 17.125000 1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork H-Style Leg 24"" Width H-24-2430364248"
+ B3 12092939 0.000000 0.875000 -1.750000 0 0.875000 1.750000 0 132608
+ B3 12092939 0.000000 1.250000 0.000000 0 22.750000 0.000000 0 132608
+ B3 12092939 0.000000 23.125000 -1.750000 0 23.125000 1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork H-Style Leg 30"" Width H-30-2430364248"
+ B3 12092939 0.000000 0.875000 -1.750000 0 0.875000 1.750000 0 132608
+ B3 12092939 0.000000 1.250000 0.000000 0 28.750000 0.000000 0 132608
+ B3 12092939 0.000000 29.125000 -1.750000 0 29.125000 1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork H-Style Leg 36"" Width H-36-2430364248"
+ B3 12092939 0.000000 0.875000 -1.750000 0 0.875000 1.750000 0 132608
+ B3 12092939 0.000000 1.250000 0.000000 0 34.750000 0.000000 0 132608
+ B3 12092939 0.000000 35.125000 -1.750000 0 35.125000 1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork H-Style Leg 42"" Width H-42-2430364248"
+ B3 12092939 0.000000 0.875000 -1.750000 0 0.875000 1.750000 0 132608
+ B3 12092939 0.000000 1.250000 0.000000 0 40.750000 0.000000 0 132608
+ B3 12092939 0.000000 41.125000 -1.750000 0 41.125000 1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork H-Style Leg 48"" Width H-48-2430364248"
+ B3 12092939 0.000000 0.875000 -1.750000 0 0.875000 1.750000 0 132608
+ B3 12092939 0.000000 1.250000 0.000000 0 46.750000 0.000000 0 132608
+ B3 12092939 0.000000 47.125000 -1.750000 0 47.125000 1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork H-Style Leg 54"" Width H-54-2430364248"
+ B3 12092939 0.000000 0.875000 -1.750000 0 0.875000 1.750000 0 132608
+ B3 12092939 0.000000 1.250000 0.000000 0 52.750000 0.000000 0 132608
+ B3 12092939 0.000000 53.125000 -1.750000 0 53.125000 1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Model Railroad Benchwork H-Style Leg 60"" Width H-60-2430364248"
+ B3 12092939 0.000000 0.875000 -1.750000 0 0.875000 1.750000 0 132608
+ B3 12092939 0.000000 1.250000 0.000000 0 58.750000 0.000000 0 132608
+ B3 12092939 0.000000 59.125000 -1.750000 0 59.125000 1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork L-Style Leg L-243036404248"
+ B3 16760832 0.000000 0.000000 0.375000 0 3.500000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 3.500000 0 132608
+ END$SEGS
diff --git a/app/lib/params/Any-Sievers-Benchwork.xtp b/app/lib/params/Any-Sievers-Benchwork.xtp
new file mode 100644
index 0000000..05fc209
--- /dev/null
+++ b/app/lib/params/Any-Sievers-Benchwork.xtp
@@ -0,0 +1,539 @@
+CONTENTS Sievers Benchwork
+SUBCONTENTS Sievers - Risers
+STRUCTURE * "Sievers Benchwork 7.5"" Riser R-4"
+ B3 12092939 0.000000 0.375000 1.750000 0 0.375000 -1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 9.5"" Riser R-6"
+ B3 12092939 0.000000 0.375000 1.750000 0 0.375000 -1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 11.5"" Riser R-8"
+ B3 12092939 0.000000 0.375000 1.750000 0 0.375000 -1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 13.5"" Riser R-10"
+ B3 12092939 0.000000 0.375000 1.750000 0 0.375000 -1.750000 0 132608
+ END$SEGS
+
+
+
+SUBCONTENTS Sievers - L-Girders
+STRUCTURE * "Sievers Benchwork 6"" L-Girder EX-6"
+ B3 16760832 0.000000 0.000000 0.000000 0 6.000000 0.000000 0 132608
+ B3 16760832 0.000000 0.375000 -0.375000 0 0.375000 -4.875000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 8"" L-Girder EX-8"
+ B3 16760832 0.000000 0.000000 0.000000 0 8.000000 0.000000 0 132608
+ B3 16760832 0.000000 0.375000 -0.375000 0 0.375000 -4.875000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 12"" L-Girder EX-12"
+ B3 16760832 0.000000 0.000000 0.000000 0 12.000000 0.000000 0 132608
+ B3 16760832 0.000000 0.375000 -0.375000 0 0.375000 -4.875000 0 132608
+ END$SEGS
+
+
+
+SUBCONTENTS Sievers - 30d Angle Sections
+STRUCTURE * "Sievers Benchwork 30"" 30d Section 3030A"
+ B3 16760832 0.000000 0.375000 0.000000 0 0.375000 30.000000 0 132608
+ B3 16760832 0.000000 0.750000 0.375000 0 17.500000 0.375000 0 132608
+ F4 16760832 0.000000 4 0
+ 0.750000 30.000000 0
+ 17.500000 0.750000 0
+ 16.635732 0.750000 0
+ 0.750000 28.490756 0
+ Y4 0 0.000000 4 0
+ 0.750000 30.000000 0
+ 17.500000 0.750000 0
+ 16.635732 0.750000 0
+ 0.750000 28.490756 0
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 24"" 30d Section 2430A"
+ B3 16760832 0.000000 0.375000 0.000000 0 0.375000 24.000000 0 132608
+ B3 16760832 0.000000 0.750000 0.375000 0 14.125000 0.375000 0 132608
+ F4 16760832 0.000000 4 0
+ 0.750000 24.000000 0
+ 14.125000 0.750000 0
+ 13.260732 0.750000 0
+ 0.750000 22.490756 0
+ Y4 0 0.000000 4 0
+ 0.750000 24.000000 0
+ 14.125000 0.750000 0
+ 13.260732 0.750000 0
+ 0.750000 22.490756 0
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 20"" 30d Section 2030A"
+ B3 16760832 0.000000 0.375000 0.000000 0 0.375000 20.000000 0 132608
+ B3 16760832 0.000000 0.750000 0.375000 0 12.000000 0.375000 0 132608
+ F4 16760832 0.000000 4 0
+ 0.750000 20.000000 0
+ 12.000000 0.750000 0
+ 11.135732 0.750000 0
+ 0.750000 18.490756 0
+ Y4 0 0.000000 4 0
+ 0.750000 20.000000 0
+ 12.000000 0.750000 0
+ 11.135732 0.750000 0
+ 0.750000 18.490756 0
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 18"" 30d Section 1830A"
+ B3 16760832 0.000000 0.375000 0.000000 0 0.375000 18.000000 0 132608
+ B3 16760832 0.000000 0.750000 0.375000 0 10.812500 0.375000 0 132608
+ F4 16760832 0.000000 4 0
+ 0.750000 18.000000 0
+ 10.812500 0.750000 0
+ 9.948232 0.750000 0
+ 0.750000 16.490756 0
+ Y4 0 0.000000 4 0
+ 0.750000 18.000000 0
+ 10.812500 0.750000 0
+ 9.948232 0.750000 0
+ 0.750000 16.490756 0
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 16"" 30d Section 1630A"
+ B3 16760832 0.000000 0.375000 0.000000 0 0.375000 16.000000 0 132608
+ B3 16760832 0.000000 0.750000 0.375000 0 9.625000 0.375000 0 132608
+ F4 16760832 0.000000 4 0
+ 0.750000 16.000000 0
+ 9.625000 0.750000 0
+ 8.760732 0.750000 0
+ 0.750000 14.490756 0
+ Y4 0 0.000000 4 0
+ 0.750000 16.000000 0
+ 9.625000 0.750000 0
+ 8.760732 0.750000 0
+ 0.750000 14.490756 0
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 12"" 30d Section 1230A"
+ B3 16760832 0.000000 0.375000 0.000000 0 0.375000 12.000000 0 132608
+ B3 16760832 0.000000 0.750000 0.375000 0 7.250000 0.375000 0 132608
+ F4 16760832 0.000000 4 0
+ 0.750000 12.000000 0
+ 7.250000 0.750000 0
+ 6.385732 0.750000 0
+ 0.750000 10.490756 0
+ Y4 0 0.000000 4 0
+ 0.750000 12.000000 0
+ 7.250000 0.750000 0
+ 6.385732 0.750000 0
+ 0.750000 10.490756 0
+ END$SEGS
+
+
+
+SUBCONTENTS Sievers - 45d Angle Sections
+STRUCTURE * "Sievers Benchwork 30"" 45d Section 3045A"
+ B3 16760832 0.000000 0.375000 0.000000 0 0.375000 30.000000 0 132608
+ B3 16760832 0.000000 0.750000 0.375000 0 30.000000 0.375000 0 132608
+ F4 16760832 0.000000 4 0
+ 0.750000 30.000000 0
+ 30.000000 0.750000 0
+ 28.939340 0.750000 0
+ 0.750000 28.939340 0
+ Y4 0 0.000000 4 0
+ 0.750000 30.000000 0
+ 30.000000 0.750000 0
+ 28.939340 0.750000 0
+ 0.750000 28.939340 0
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 24"" 45d Section 2445A"
+ B3 16760832 0.000000 0.375000 0.000000 0 0.375000 24.000000 0 132608
+ B3 16760832 0.000000 0.750000 0.375000 0 24.000000 0.375000 0 132608
+ F4 16760832 0.000000 4 0
+ 0.750000 24.000000 0
+ 24.000000 0.750000 0
+ 22.939340 0.750000 0
+ 0.750000 22.939340 0
+ Y4 0 0.000000 4 0
+ 0.750000 24.000000 0
+ 24.000000 0.750000 0
+ 22.939340 0.750000 0
+ 0.750000 22.939340 0
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 20"" 45d Section 2045A"
+ B3 16760832 0.000000 0.375000 0.000000 0 0.375000 20.000000 0 132608
+ B3 16760832 0.000000 0.750000 0.375000 0 20.000000 0.375000 0 132608
+ F4 16760832 0.000000 4 0
+ 0.750000 20.000000 0
+ 20.000000 0.750000 0
+ 18.939340 0.750000 0
+ 0.750000 18.939340 0
+ Y4 0 0.000000 4 0
+ 0.750000 20.000000 0
+ 20.000000 0.750000 0
+ 18.939340 0.750000 0
+ 0.750000 18.939340 0
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 18"" 45d Section 1845A"
+ B3 16760832 0.000000 0.375000 0.000000 0 0.375000 18.000000 0 132608
+ B3 16760832 0.000000 0.750000 0.375000 0 18.000000 0.375000 0 132608
+ F4 16760832 0.000000 4 0
+ 0.750000 18.000000 0
+ 18.000000 0.750000 0
+ 16.939340 0.750000 0
+ 0.750000 16.939340 0
+ Y4 0 0.000000 4 0
+ 0.750000 18.000000 0
+ 18.000000 0.750000 0
+ 16.939340 0.750000 0
+ 0.750000 16.939340 0
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 16"" 45d Section 1645A"
+ B3 16760832 0.000000 0.375000 0.000000 0 0.375000 16.000000 0 132608
+ B3 16760832 0.000000 0.750000 0.375000 0 16.000000 0.375000 0 132608
+ F4 16760832 0.000000 4 0
+ 0.750000 16.000000 0
+ 16.000000 0.750000 0
+ 14.939340 0.750000 0
+ 0.750000 14.939340 0
+ Y4 0 0.000000 4 0
+ 0.750000 16.000000 0
+ 16.000000 0.750000 0
+ 14.939340 0.750000 0
+ 0.750000 14.939340 0
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 12"" 45d Section 1245A"
+ B3 16760832 0.000000 0.375000 0.000000 0 0.375000 12.000000 0 132608
+ B3 16760832 0.000000 0.750000 0.375000 0 12.000000 0.375000 0 132608
+ F4 16760832 0.000000 4 0
+ 0.750000 12.000000 0
+ 12.000000 0.750000 0
+ 10.939340 0.750000 0
+ 0.750000 10.939340 0
+ Y4 0 0.000000 4 0
+ 0.750000 12.000000 0
+ 12.000000 0.750000 0
+ 10.939340 0.750000 0
+ 0.750000 10.939340 0
+ END$SEGS
+
+
+
+SUBCONTENTS Sievers - 36"" Benchwork Sections
+STRUCTURE * "Sievers Benchwork 36"" Leg L-36"
+ B3 12092939 0.000000 0.875000 -1.750000 0 0.875000 1.750000 0 132608
+ B3 12092939 0.000000 1.250000 0.000000 0 34.750000 0.000000 0 132608
+ B3 12092939 0.000000 35.125000 -1.750000 0 35.125000 1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 36""x48"" Section 3648"
+ B3 16760832 0.000000 0.000000 0.375000 0 48.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 35.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 35.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 35.250000 0 132608
+ B3 16760832 0.000000 36.000000 0.750000 0 36.000000 35.250000 0 132608
+ B3 16760832 0.000000 47.625000 0.750000 0 47.625000 35.250000 0 132608
+ B3 16760832 0.000000 0.000000 35.625000 0 48.000000 35.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 36""x36"" Section 3636"
+ B3 16760832 0.000000 0.000000 0.375000 0 36.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 35.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 35.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 35.250000 0 132608
+ B3 16760832 0.000000 35.625000 0.750000 0 35.625000 35.250000 0 132608
+ B3 16760832 0.000000 0.000000 35.625000 0 36.000000 35.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 36""x30"" Section 3630"
+ B3 16760832 0.000000 0.000000 0.375000 0 30.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 35.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 35.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 35.250000 0 132608
+ B3 16760832 0.000000 29.625000 0.750000 0 29.625000 35.250000 0 132608
+ B3 16760832 0.000000 0.000000 35.625000 0 30.000000 35.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 36""x24"" Section 3624"
+ B3 16760832 0.000000 0.000000 0.375000 0 24.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 35.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 35.250000 0 132608
+ B3 16760832 0.000000 23.625000 0.750000 0 23.625000 35.250000 0 132608
+ B3 16760832 0.000000 0.000000 35.625000 0 24.000000 35.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 36""x16"" Section 3616"
+ B3 16760832 0.000000 0.000000 0.375000 0 16.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 35.250000 0 132608
+ B3 16760832 0.000000 15.625000 0.750000 0 15.625000 35.250000 0 132608
+ B3 16760832 0.000000 0.000000 35.625000 0 16.000000 35.625000 0 132608
+ END$SEGS
+
+
+
+SUBCONTENTS Sievers - 30"" Benchwork Sections
+STRUCTURE * "Sievers Benchwork 30"" Leg L-30"
+ B3 12092939 0.000000 0.875000 -1.750000 0 0.875000 1.750000 0 132608
+ B3 12092939 0.000000 1.250000 0.000000 0 28.750000 0.000000 0 132608
+ B3 12092939 0.000000 29.125000 -1.750000 0 29.125000 1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 30""x48"" Section 3048"
+ B3 16760832 0.000000 0.000000 0.375000 0 48.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 29.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 29.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 29.250000 0 132608
+ B3 16760832 0.000000 36.000000 0.750000 0 36.000000 29.250000 0 132608
+ B3 16760832 0.000000 47.625000 0.750000 0 47.625000 29.250000 0 132608
+ B3 16760832 0.000000 0.000000 29.625000 0 48.000000 29.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 30""x36"" Section 3036"
+ B3 16760832 0.000000 0.000000 0.375000 0 36.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 29.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 29.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 29.250000 0 132608
+ B3 16760832 0.000000 35.625000 0.750000 0 35.625000 29.250000 0 132608
+ B3 16760832 0.000000 0.000000 29.625000 0 36.000000 29.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 30""x30"" Section 3030"
+ B3 16760832 0.000000 0.000000 0.375000 0 30.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 29.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 29.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 29.250000 0 132608
+ B3 16760832 0.000000 29.625000 0.750000 0 29.625000 29.250000 0 132608
+ B3 16760832 0.000000 0.000000 29.625000 0 30.000000 29.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 30""x24"" Section 3024"
+ B3 16760832 0.000000 0.000000 0.375000 0 24.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 29.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 29.250000 0 132608
+ B3 16760832 0.000000 23.625000 0.750000 0 23.625000 29.250000 0 132608
+ B3 16760832 0.000000 0.000000 29.625000 0 24.000000 29.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 30""x16"" Section 3016"
+ B3 16760832 0.000000 0.000000 0.375000 0 16.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 29.250000 0 132608
+ B3 16760832 0.000000 15.625000 0.750000 0 15.625000 29.250000 0 132608
+ B3 16760832 0.000000 0.000000 29.625000 0 16.000000 29.625000 0 132608
+ END$SEGS
+
+
+
+SUBCONTENTS Sievers - 24"" Benchwork Sections
+STRUCTURE * "Sievers Benchwork 24"" Leg L-24"
+ B3 12092939 0.000000 0.875000 -1.750000 0 0.875000 1.750000 0 132608
+ B3 12092939 0.000000 1.250000 0.000000 0 22.750000 0.000000 0 132608
+ B3 12092939 0.000000 23.125000 -1.750000 0 23.125000 1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 24""x48"" Section 2448"
+ B3 16760832 0.000000 0.000000 0.375000 0 48.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 23.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 23.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 23.250000 0 132608
+ B3 16760832 0.000000 36.000000 0.750000 0 36.000000 23.250000 0 132608
+ B3 16760832 0.000000 47.625000 0.750000 0 47.625000 23.250000 0 132608
+ B3 16760832 0.000000 0.000000 23.625000 0 48.000000 23.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 24""x36"" Section 2436"
+ B3 16760832 0.000000 0.000000 0.375000 0 36.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 23.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 23.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 23.250000 0 132608
+ B3 16760832 0.000000 35.625000 0.750000 0 35.625000 23.250000 0 132608
+ B3 16760832 0.000000 0.000000 23.625000 0 36.000000 23.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 24""x30"" Section 2430"
+ B3 16760832 0.000000 0.000000 0.375000 0 30.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 23.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 23.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 23.250000 0 132608
+ B3 16760832 0.000000 29.625000 0.750000 0 29.625000 23.250000 0 132608
+ B3 16760832 0.000000 0.000000 23.625000 0 30.000000 23.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 24""x24"" Section 2424"
+ B3 16760832 0.000000 0.000000 0.375000 0 24.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 23.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 23.250000 0 132608
+ B3 16760832 0.000000 23.625000 0.750000 0 23.625000 23.250000 0 132608
+ B3 16760832 0.000000 0.000000 23.625000 0 24.000000 23.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 24""x16"" Section 2416"
+ B3 16760832 0.000000 0.000000 0.375000 0 16.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 23.250000 0 132608
+ B3 16760832 0.000000 15.625000 0.750000 0 15.625000 23.250000 0 132608
+ B3 16760832 0.000000 0.000000 23.625000 0 16.000000 23.625000 0 132608
+ END$SEGS
+
+
+
+SUBCONTENTS Sievers - 20"" Benchwork Sections
+STRUCTURE * "Sievers Benchwork 20"" Leg L-20"
+ B3 12092939 0.000000 0.875000 -1.750000 0 0.875000 1.750000 0 132608
+ B3 12092939 0.000000 1.250000 0.000000 0 18.750000 0.000000 0 132608
+ B3 12092939 0.000000 19.125000 -1.750000 0 19.125000 1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 20""x48"" Section 2048"
+ B3 16760832 0.000000 0.000000 0.375000 0 48.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 19.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 19.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 19.250000 0 132608
+ B3 16760832 0.000000 36.000000 0.750000 0 36.000000 19.250000 0 132608
+ B3 16760832 0.000000 47.625000 0.750000 0 47.625000 19.250000 0 132608
+ B3 16760832 0.000000 0.000000 19.625000 0 48.000000 19.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 20""x36"" Section 2036"
+ B3 16760832 0.000000 0.000000 0.375000 0 36.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 19.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 19.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 19.250000 0 132608
+ B3 16760832 0.000000 35.625000 0.750000 0 35.625000 19.250000 0 132608
+ B3 16760832 0.000000 0.000000 19.625000 0 36.000000 19.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 20""x30"" Section 2030"
+ B3 16760832 0.000000 0.000000 0.375000 0 30.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 19.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 19.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 19.250000 0 132608
+ B3 16760832 0.000000 29.625000 0.750000 0 29.625000 19.250000 0 132608
+ B3 16760832 0.000000 0.000000 19.625000 0 30.000000 19.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 20""x24"" Section 2024"
+ B3 16760832 0.000000 0.000000 0.375000 0 24.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 19.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 19.250000 0 132608
+ B3 16760832 0.000000 23.625000 0.750000 0 23.625000 19.250000 0 132608
+ B3 16760832 0.000000 0.000000 19.625000 0 24.000000 19.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 20""x16"" Section 2016"
+ B3 16760832 0.000000 0.000000 0.375000 0 16.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 19.250000 0 132608
+ B3 16760832 0.000000 15.625000 0.750000 0 15.625000 19.250000 0 132608
+ B3 16760832 0.000000 0.000000 19.625000 0 16.000000 19.625000 0 132608
+ END$SEGS
+
+
+
+SUBCONTENTS Sievers - 18"" Benchwork Sections
+STRUCTURE * "Sievers Benchwork 18"" Leg L-18"
+ B3 12092939 0.000000 0.875000 -1.750000 0 0.875000 1.750000 0 132608
+ B3 12092939 0.000000 1.250000 0.000000 0 16.750000 0.000000 0 132608
+ B3 12092939 0.000000 17.125000 -1.750000 0 17.125000 1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 18""x48"" Section 1848"
+ B3 16760832 0.000000 0.000000 0.375000 0 48.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 17.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 17.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 17.250000 0 132608
+ B3 16760832 0.000000 36.000000 0.750000 0 36.000000 17.250000 0 132608
+ B3 16760832 0.000000 47.625000 0.750000 0 47.625000 17.250000 0 132608
+ B3 16760832 0.000000 0.000000 17.625000 0 48.000000 17.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 18""x36"" Section 1836"
+ B3 16760832 0.000000 0.000000 0.375000 0 36.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 17.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 17.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 17.250000 0 132608
+ B3 16760832 0.000000 35.625000 0.750000 0 35.625000 17.250000 0 132608
+ B3 16760832 0.000000 0.000000 17.625000 0 36.000000 17.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 18""x30"" Section 1830"
+ B3 16760832 0.000000 0.000000 0.375000 0 30.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 17.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 17.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 17.250000 0 132608
+ B3 16760832 0.000000 29.625000 0.750000 0 29.625000 17.250000 0 132608
+ B3 16760832 0.000000 0.000000 17.625000 0 30.000000 17.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 18""x24"" Section 1824"
+ B3 16760832 0.000000 0.000000 0.375000 0 24.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 17.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 17.250000 0 132608
+ B3 16760832 0.000000 23.625000 0.750000 0 23.625000 17.250000 0 132608
+ B3 16760832 0.000000 0.000000 17.625000 0 24.000000 17.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 18""x16"" Section 1816"
+ B3 16760832 0.000000 0.000000 0.375000 0 16.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 17.250000 0 132608
+ B3 16760832 0.000000 15.625000 0.750000 0 15.625000 17.250000 0 132608
+ B3 16760832 0.000000 0.000000 17.625000 0 16.000000 17.625000 0 132608
+ END$SEGS
+
+
+
+SUBCONTENTS Sievers - 16"" Benchwork Sections
+STRUCTURE * "Sievers Benchwork 16"" Leg L-16"
+ B3 12092939 0.000000 0.875000 -1.750000 0 0.875000 1.750000 0 132608
+ B3 12092939 0.000000 1.250000 0.000000 0 14.750000 0.000000 0 132608
+ B3 12092939 0.000000 15.125000 -1.750000 0 15.125000 1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 16""x48"" Section 1648"
+ B3 16760832 0.000000 0.000000 0.375000 0 48.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 15.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 15.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 15.250000 0 132608
+ B3 16760832 0.000000 36.000000 0.750000 0 36.000000 15.250000 0 132608
+ B3 16760832 0.000000 47.625000 0.750000 0 47.625000 15.250000 0 132608
+ B3 16760832 0.000000 0.000000 15.625000 0 48.000000 15.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 16""x36"" Section 1636"
+ B3 16760832 0.000000 0.000000 0.375000 0 36.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 15.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 15.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 15.250000 0 132608
+ B3 16760832 0.000000 35.625000 0.750000 0 35.625000 15.250000 0 132608
+ B3 16760832 0.000000 0.000000 15.625000 0 36.000000 15.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 16""x30"" Section 1630"
+ B3 16760832 0.000000 0.000000 0.375000 0 30.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 15.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 15.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 15.250000 0 132608
+ B3 16760832 0.000000 29.625000 0.750000 0 29.625000 15.250000 0 132608
+ B3 16760832 0.000000 0.000000 15.625000 0 30.000000 15.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 16""x24"" Section 1624"
+ B3 16760832 0.000000 0.000000 0.375000 0 24.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 15.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 15.250000 0 132608
+ B3 16760832 0.000000 23.625000 0.750000 0 23.625000 15.250000 0 132608
+ B3 16760832 0.000000 0.000000 15.625000 0 24.000000 15.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 16""x16"" Section 1616"
+ B3 16760832 0.000000 0.000000 0.375000 0 16.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 15.250000 0 132608
+ B3 16760832 0.000000 15.625000 0.750000 0 15.625000 15.250000 0 132608
+ B3 16760832 0.000000 0.000000 15.625000 0 16.000000 15.625000 0 132608
+ END$SEGS
+
+
+
+SUBCONTENTS Sievers - 12"" Benchwork Sections
+STRUCTURE * "Sievers Benchwork 12"" Leg L-12"
+ B3 12092939 0.000000 0.875000 -1.750000 0 0.875000 1.750000 0 132608
+ B3 12092939 0.000000 1.250000 0.000000 0 10.750000 0.000000 0 132608
+ B3 12092939 0.000000 11.125000 -1.750000 0 11.125000 1.750000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 12""x48"" Section 1248"
+ B3 16760832 0.000000 0.000000 0.375000 0 48.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 11.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 11.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 11.250000 0 132608
+ B3 16760832 0.000000 36.000000 0.750000 0 36.000000 11.250000 0 132608
+ B3 16760832 0.000000 47.625000 0.750000 0 47.625000 11.250000 0 132608
+ B3 16760832 0.000000 0.000000 11.625000 0 48.000000 11.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 12""x36"" Section 1236"
+ B3 16760832 0.000000 0.000000 0.375000 0 36.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 11.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 11.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 11.250000 0 132608
+ B3 16760832 0.000000 35.625000 0.750000 0 35.625000 11.250000 0 132608
+ B3 16760832 0.000000 0.000000 11.625000 0 36.000000 11.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 12""x30"" Section 1230"
+ B3 16760832 0.000000 0.000000 0.375000 0 30.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 11.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 11.250000 0 132608
+ B3 16760832 0.000000 24.000000 0.750000 0 24.000000 11.250000 0 132608
+ B3 16760832 0.000000 29.625000 0.750000 0 29.625000 11.250000 0 132608
+ B3 16760832 0.000000 0.000000 11.625000 0 30.000000 11.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 12""x24"" Section 1224"
+ B3 16760832 0.000000 0.000000 0.375000 0 24.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 11.250000 0 132608
+ B3 16760832 0.000000 12.000000 0.750000 0 12.000000 11.250000 0 132608
+ B3 16760832 0.000000 23.625000 0.750000 0 23.625000 11.250000 0 132608
+ B3 16760832 0.000000 0.000000 11.625000 0 24.000000 11.625000 0 132608
+ END$SEGS
+STRUCTURE * "Sievers Benchwork 12""x16"" Section 1216"
+ B3 16760832 0.000000 0.000000 0.375000 0 16.000000 0.375000 0 132608
+ B3 16760832 0.000000 0.375000 0.750000 0 0.375000 11.250000 0 132608
+ B3 16760832 0.000000 15.625000 0.750000 0 15.625000 11.250000 0 132608
+ B3 16760832 0.000000 0.000000 11.625000 0 16.000000 11.625000 0 132608
+ END$SEGS
+
+
+
+
diff --git a/app/lib/params/CMakeLists.txt b/app/lib/params/CMakeLists.txt
index 22229ac..8729af5 100644
--- a/app/lib/params/CMakeLists.txt
+++ b/app/lib/params/CMakeLists.txt
@@ -1,63 +1,99 @@
-# $Header: /home/dmarkle/xtrkcad-fork-cvs/xtrkcad/app/lib/params/CMakeLists.txt,v 1.9 2008-06-04 18:53:04 m_fischer Exp $
-#
# CMakeList for the params directory
#
-# Several xtp files are created from text definitions, all xtp files and the
-# created xtp files are installed.
+# Several xtp files are created from text definitions, the created xtp files are installed.
#
-FILE(GLOB XTP_FILES *.xtp)
-
-SET( outFiles )
+add_custom_target(xtpfiles ALL "")
+set_target_properties(
+ xtpfiles
+ PROPERTIES FOLDER "Param Files"
+)
+#
# create param files from car definitions
-ADD_EXECUTABLE( mkcarpart mkcarpart.c )
+add_executable( mkcarpart mkcarpart.c )
+set_target_properties(
+ mkcarpart
+ PROPERTIES FOLDER "Param Files"
+)
-FILE(GLOB inFiles RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*.cars")
+set(infiles
+ "AccucraftFn3.cars"
+ "AccucraftOn3.cars"
+ "accurail.cars"
+ "atlascho.cars"
+ "atlaseho.cars"
+)
-FOREACH(infileName ${inFiles})
+foreach(infile ${infiles})
# Generate output file name
- STRING(REGEX REPLACE ".cars\$" ".xtp" outfileName "${infileName}")
- SET(outfile "${CMAKE_CURRENT_BINARY_DIR}/${outfileName}")
- # Generate input file name
- SET(infile "${CMAKE_CURRENT_SOURCE_DIR}/${infileName}")
+ cmake_path(REPLACE_EXTENSION infile
+ "xtp"
+ OUTPUT_VARIABLE outfile
+ )
# Custom command to do the processing
- ADD_CUSTOM_COMMAND(OUTPUT "${outfile}"
- COMMAND mkcarpart "${infile}" "${outfile}"
- DEPENDS "${infile}" mkcarpart
- WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
- # Finally remember the output file for dependencies
- SET(outFiles ${outFiles} "${outfile}")
-ENDFOREACH(infileName)
+ add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${outfile}"
+ DEPENDS "${infile}" mkcarpart
+ COMMAND mkcarpart "${infile}" "${CMAKE_CURRENT_BINARY_DIR}/${outfile}"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+ )
+ target_sources(xtpfiles
+ PRIVATE
+ "${CMAKE_CURRENT_BINARY_DIR}/${outfile}"
+ )
+ install(
+ FILES "${CMAKE_CURRENT_BINARY_DIR}/${outfile}"
+ DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}/params
+ )
+endforeach()
# create param files from structure definitions
-ADD_EXECUTABLE( mkstruct mkstruct.c )
+add_executable( mkstruct mkstruct.c )
+set_target_properties(
+ mkstruct
+ PROPERTIES FOLDER "Param Files"
+)
-FILE(GLOB inFiles RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*.struct")
+set(infiles
+ "fallerho.struct"
+ "revell.struct"
+ "pikestuf.struct"
+)
# define build commands for all struct files
-FOREACH(infileName ${inFiles})
+foreach(infile ${infiles})
# Generate output file name
- STRING(REGEX REPLACE ".struct\$" ".xtp" outfileName "${infileName}")
- SET(outfile "${CMAKE_CURRENT_BINARY_DIR}/${outfileName}")
- # Generate input file name
- SET(infile "${CMAKE_CURRENT_SOURCE_DIR}/${infileName}")
- # Custom command to do the processing
- ADD_CUSTOM_COMMAND(OUTPUT "${outfile}"
+ cmake_path(REPLACE_EXTENSION infile
+ "xtp"
+ OUTPUT_VARIABLE outfile
+ )
+ cmake_path(ABSOLUTE_PATH
+ outfile
+ BASE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
+ )
+
+ add_custom_command(
+ OUTPUT "${outfile}"
COMMAND mkstruct "${infile}" "${outfile}"
DEPENDS "${infile}" mkstruct
- WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" )
- # Finally remember the output file for dependencies
- SET(outFiles ${outFiles} "${outfile}")
-ENDFOREACH(infileName)
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+ )
+ target_sources(xtpfiles
+ PRIVATE
+ "${outfile}"
+ )
+ install(
+ FILES "${outfile}"
+ DESTINATION "${XTRKCAD_SHARE_INSTALL_DIR}/params"
+ )
+endforeach()
-ADD_CUSTOM_TARGET(xtpfiles ALL DEPENDS ${outFiles})
-
-INSTALL(
- FILES ${XTP_FILES} t-trak-notes.txt ${outFiles}
- DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}/params
- )
+install(
+ FILES t-trak-notes.txt
+ DESTINATION "${XTRKCAD_SHARE_INSTALL_DIR}/params"
+)
diff --git a/app/lib/params/G-Bachmann.xtp b/app/lib/params/G-Bachmann.xtp
new file mode 100644
index 0000000..4ab8e5b
--- /dev/null
+++ b/app/lib/params/G-Bachmann.xtp
@@ -0,0 +1,113 @@
+CONTENTS Bachmann G Track
+
+SUBCONTENTS Bachmann G Track (Brass) - Straight Track (Brass)
+TURNOUT G "Bachmann G Track (Brass) 1' Straight 94651"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 12.000000 0.000000
+ END$SEGS
+
+SUBCONTENTS Bachmann G Track (Brass) - Curve Track (Brass)
+TURNOUT G "Bachmann G Track (Brass) 4' Diameter 94653"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.000000 3.215390 60.000000
+ C 0 0.000000 -24.000000 0.000000 24.000000 150.000000 30.000000
+ END$SEGS
+TURNOUT G "Bachmann G Track (Brass) 5' Diameter 94654"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 15.000000 4.019238 60.000000
+ C 0 0.000000 -30.000000 0.000000 30.000000 150.000000 30.000000
+ END$SEGS
+
+SUBCONTENTS Bachmann G Track (Brass) - Turnouts (Brass)
+TURNOUT G "Bachmann G Track (Brass) 4' Diameter Left-hand Turnout 94659"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 12.000000 0.000000 90.000000
+ E 12.000000 3.215390 60.000000
+ S 0 0.000000 0.000000 0.000000 12.000000 0.000000
+ C 0 0.000000 -24.000000 0.000000 24.000000 150.000000 30.000000
+ END$SEGS
+TURNOUT G "Bachmann G Track (Brass) 4' Diameter Right-hand Turnout 94658"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 12.000000 0.000000 90.000000
+ E 12.000000 -3.215390 120.000000
+ S 0 0.000000 0.000000 0.000000 12.000000 0.000000
+ C 0 0.000000 24.000000 0.000000 -24.000000 0.000000 30.000000
+ END$SEGS
+
+####################################
+
+SUBCONTENTS Bachmann G Track (Steel) - Straight Track (Steel)
+TURNOUT G "Bachmann G Track (Steel) 1' Straight 94511/611"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 12.000000 0.000000
+ END$SEGS
+
+SUBCONTENTS Bachmann G Track (Steel) - Curve Track (Steel)
+TURNOUT G "Bachmann G Track (Steel) 4' Diameter 94501/601"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.000000 3.215390 60.000000
+ C 0 0.000000 -24.000000 0.000000 24.000000 150.000000 30.000000
+ END$SEGS
+
+SUBCONTENTS Bachmann G Track (Steel) - Crossings (Steel)
+TURNOUT G "Bachmann G Track (Steel) 90d Crossing 94358A"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 12.000000 0.000000 90.000000
+ E 6.000000 6.000000 0.000000
+ E 6.000000 -6.000000 180.000000
+ S 0 0.000000 0.000000 0.000000 12.000000 0.000000
+ S 0 0.000000 6.000000 6.000000 6.000000 -6.000000
+ END$SEGS
+TURNOUT G "Bachmann G Track (Steel) 90d Crossing Straight 94358B"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 6.000000 0.000000
+ END$SEGS
+
+SUBCONTENTS Bachmann G Track (Steel) - Crossing Gate (Steel)
+TURNOUT G "Bachmann G Track (Steel) Crossing Gate 96214"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 12.000000 0.000000
+ L3 0 1.500000 0.000000 0.000000 0 12.000000 0.000000 0
+ L3 0 6.000000 6.000000 1.000000 0 6.000000 6.000000 0
+ L3 8424071 3.000000 1.500000 2.000000 0 1.500000 6.000000 0
+ L3 8424071 3.000000 10.500000 2.000000 0 10.500000 6.000000 0
+ L3 0 6.000000 6.000000 -1.000000 0 6.000000 -6.000000 0
+ L3 8424071 3.000000 1.500000 -2.000000 0 1.500000 -6.000000 0
+ L3 8424071 3.000000 10.500000 -2.000000 0 10.500000 -6.000000 0
+ END$SEGS
+
+SUBCONTENTS Bachmann G Track (Steel) - Turnouts (Steel)
+TURNOUT G "Bachmann G Track (Steel) 4' Diameter Left-hand Turnout 94351"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 12.000000 0.000000 90.000000
+ E 12.000000 3.215390 60.000000
+ S 0 0.000000 0.000000 0.000000 12.000000 0.000000
+ C 0 0.000000 -24.000000 0.000000 24.000000 150.000000 30.000000
+ END$SEGS
+TURNOUT G "Bachmann G Track (Steel) 4' Diameter Right-hand Turnout 94352"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 12.000000 0.000000 90.000000
+ E 12.000000 -3.215390 120.000000
+ S 0 0.000000 0.000000 0.000000 12.000000 0.000000
+ C 0 0.000000 24.000000 0.000000 -24.000000 0.000000 30.000000
+ END$SEGS \ No newline at end of file
diff --git a/app/lib/params/G-Lionel Ready-To-Play Track.xtp b/app/lib/params/G-Lionel Ready-To-Play Track.xtp
new file mode 100644
index 0000000..633f50f
--- /dev/null
+++ b/app/lib/params/G-Lionel Ready-To-Play Track.xtp
@@ -0,0 +1,37 @@
+CONTENTS Lionel Ready-To-Play Track
+SUBCONTENTS Lionel RTP Track - Straights
+TURNOUT G "Lionel RTP Straight Track 7-11826"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.141732 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 6.141732 0.000000
+ END$SEGS
+
+SUBCONTENTS Lionel RTP Track - Curves
+TURNOUT G "Lionel RTP Curve Track 7-11827"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.011938 -0.791487 105.000000
+ C 0 0 23.228346 0.000000 -23.228346 0.000000 15.000000
+ END$SEGS
+
+SUBCONTENTS Lionel RTP Track - Switches
+TURNOUT G "Lionel RTP Left Switch 7-11832-LH"
+ P "Normal" 1
+ P "Route" 2
+ E 0.000000 0.000000 270.000000
+ E 13.818898 0.000000 90.000000
+ E 11.614173 3.112008 60.000000
+ S 0 0.000000 0.000000 0.000000 13.818898 0.000000
+ C 0 0 23.228346 0.000000 23.228346 150.000000 30.000000
+ END$SEGS
+TURNOUT G "Lionel RTP Right Switch 7-11832-RH"
+ P "Normal" 1
+ P "Route" 2
+ E 0.000000 0.000000 270.000000
+ E 13.818898 0.000000 90.000000
+ E 11.614173 -3.112008 120.000000
+ S 0 0.000000 0.000000 0.000000 13.818898 0.000000
+ C 0 0 23.228346 0.000000 -23.228346 0.000000 30.000000
+ END$SEGS
+
diff --git a/app/lib/params/G-Piko.xtp b/app/lib/params/G-Piko.xtp
index 309c0cf..f55e459 100644
--- a/app/lib/params/G-Piko.xtp
+++ b/app/lib/params/G-Piko.xtp
@@ -1,269 +1,248 @@
-CONTENTS Piko G Scale Track
-
-SUBCONTENTS Piko G Scale Track - Straights
-TURNOUT G "Piko G-G1200 1200mm (47.24) Straight 35208"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 47.244094 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 47.244094 0.000000
- END
-TURNOUT G "Piko G-G600 600mm (23.62) Straight 35209"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 23.622047 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 23.622047 0.000000
- END
-TURNOUT G "Piko G-G320 320mm (12.60) Straight 35200"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 12.598425 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 12.598425 0.000000
- END
-TURNOUT G "Piko G-G280 280mm (11.02) Straight 35201"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 11.023622 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 11.023622 0.000000
- END
-TURNOUT G "Piko G-G160 160mm (6.30) Straight 35202"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.299212 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 6.299212 0.000000
- END
-TURNOUT G "Piko G-G140 140mm (5.51) Straight 35203"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 5.511811 0.000000
- END
-TURNOUT G "Piko G-G95 95mm (3.74) Straight 35204"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.740157 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 3.740157 0.000000
- END
-
-
-SUBCONTENTS Piko G Scale Track - Curves
-TURNOUT G "Piko G-R1 600mm (23.62) Dia. 30° Curve 35211"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 11.811024 -3.164754 120.000000
- C 0 0.000000 23.622047 0.000000 -23.622047 0.000000 30.000000
- END
-TURNOUT G "Piko G-R3 921.54mm (36.28) Dia. 30° Curve 35213"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 18.140551 -4.860746 120.000000
- C 0 0.000000 36.281102 0.000000 -36.281102 0.000000 30.000000
- END
-TURNOUT G "Piko G-R3 921.54mm (36.28) Dia. 7.5° Curve 35214"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.735634 -0.310390 97.500000
- C 0 0.000000 36.281102 0.000000 -36.281102 0.000000 7.500000
- END
-TURNOUT G "Piko G-R5 1243.08mm (48.94) Dia. 15° Curve 35215"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 12.666645 -1.667595 105.000000
- C 0 0.000000 48.940157 0.000000 -48.940157 0.000000 15.000000
- END
-TURNOUT G "Piko G-R5 1243.08mm (48.94) Dia. 7.5° Curve 35216"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.387972 -0.418690 97.500000
- C 0 0.000000 48.940157 0.000000 -48.940157 0.000000 7.500000
- END
-TURNOUT G "Piko G-R7 1564.62mm (61.60) Dia. 15° Curve 35217"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 15.943049 -2.098942 105.000000
- C 0 0.000000 61.599213 0.000000 -61.599213 0.000000 15.000000
- END
-TURNOUT G "Piko G-R7 1564.62mm (61.60) Dia. 7.5° Curve 35218"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.040311 -0.526990 97.500000
- C 0 0.000000 61.599213 0.000000 -61.599213 0.000000 7.500000
- END
-
-
-SUBCONTENTS Piko G Scale Track - Crossings
-TURNOUT G "Piko K30 30° Crossing 35240"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 12.598425 0.000000 90.000000
- E 0.843934 3.149606 300.000000
- E 11.754491 -3.149606 120.000000
- S 0 0.000000 0.000000 0.000000 12.598425 0.000000
- S 0 0.000000 0.843934 3.149606 11.754491 -3.149606
- END
-TURNOUT G "Piko K60 60° Crossing 35241"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 6.162992 0.000000 90.000000
- E 1.540742 2.668650 330.000000
- E 4.622250 -2.668650 150.000000
- S 0 0.000000 0.000000 0.000000 6.162992 0.000000
- S 0 0.000000 1.540742 2.668650 4.622250 -2.668650
- END
-
-
-SUBCONTENTS Piko G Scale Track - Switches
-TURNOUT G "Piko R1 Switch Left G-WLR1/35220"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 12.598425 0.000000 90.000000
- E 11.811024 3.164754 60.000000
- S 0 0.000000 0.000000 0.000000 1.770054 0.000000
- S 0 0.000000 1.770054 0.000000 12.598425 0.000000
- C 0 0.000000 -17.016232 1.770076 17.016232 149.999924 30.000152
- S 0 0.000000 10.278202 2.279762 11.811024 3.164754
- END
-TURNOUT G "Piko R1 Switch Right G-WRR1/35221"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 12.598425 0.000000 90.000000
- E 11.811024 -3.164754 120.000000
- S 0 0.000000 0.000000 0.000000 1.770054 0.000000
- S 0 0.000000 1.770054 0.000000 12.598425 0.000000
- C 0 0.000000 17.016232 1.769986 -17.016232 0.000076 30.000152
- S 0 0.000000 10.278202 -2.279762 11.811024 -3.164754
- END
-TURNOUT G "Piko R3 Switch Left G-WLR3/35228"
- P "Normal" 1 2
- P "Reverse" 1 3
- E 0.000000 0.000000 270.000000
- E 16.535433 0.000000 90.000000
- E 15.198204 2.757119 67.500000
- S 0 0.000000 0.000000 0.000000 1.337229 0.000000
- S 0 0.000000 1.337229 0.000000 16.535433 0.000000
- C 0 0.000000 -36.220472 1.337229 36.220472 157.500000 22.500000
- END
-TURNOUT G "Piko R3 Switch Right G-WRR3/35229"
- P "Normal" 1 2
- P "Reverse" 1 3
- E 0.000000 0.000000 270.000000
- E 12.598425 0.000000 90.000000
- E 15.198204 -2.757119 112.500000
- S 0 0.000000 0.000000 0.000000 1.337229 0.000000
- S 0 0.000000 1.337229 0.000000 12.598425 0.000000
- C 0 0.000000 36.220472 1.337229 -36.220472 0.000000 22.500000
- END
-TURNOUT G "Piko R5 Switch Left G-WLR5/35222"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 26.771654 0.000000 90.000000
- E 24.409579 6.299213 60.000000
- S 0 0.000000 0.000000 0.000000 2.670704 0.000000
- S 0 0.000000 2.670704 0.000000 26.771654 0.000000
- C 0 0.000000 -40.412066 2.670758 40.412066 149.999924 30.000152
- S 0 0.000000 22.876815 5.414235 24.409579 6.299213
- END
-TURNOUT G "Piko R5 Switch Right G-WRR5/35223"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 26.771654 0.000000 90.000000
- E 24.409579 -6.299213 120.000000
- S 0 0.000000 0.000000 0.000000 2.670704 0.000000
- S 0 0.000000 2.670704 0.000000 26.771654 0.000000
- C 0 0.000000 40.412066 2.670544 -40.412066 0.000076 30.000152
- S 0 0.000000 22.876815 -5.414235 24.409579 -6.299213
- END
-TURNOUT G "Piko G-DKW Double-Slip Switch G-DKW"
- P "P1" 1 2 3
- P "P2" 4 5 6
- P "P3" 1 7 6
- P "P4" 4 8 3
- E 0.000000 0.000000 270.000000
- E 12.598425 0.000000 90.000000
- E 0.843929 3.149597 300.000000
- E 11.754496 -3.149597 120.000000
- S 0 0.000000 0.000000 0.000000 3.540076 0.000000
- S 0 0.000000 3.540076 0.000000 9.058349 0.000000
- S 0 0.000000 9.058349 0.000000 12.598425 0.000000
- S 0 0.000000 0.843929 3.149597 3.909634 1.379600
- S 0 0.000000 3.909634 1.379600 8.688791 -1.379600
- S 0 0.000000 8.688791 -1.379600 11.754496 -3.149597
- C 0 0.000000 10.297390 3.540035 -10.297390 0.000076 30.000152
- C 0 0.000000 -10.297390 9.058361 10.297383 180.000076 30.000152
- END
-TURNOUT G "Piko G-WY Wye Switch G-WY"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 11.811024 3.164754 60.000000
- E 11.811024 -3.164754 120.000000
- S 0 0.000000 0.000000 0.000000 1.770054 0.000000
- C 0 0.000000 -17.016232 1.770076 17.016232 149.999924 30.000152
- S 0 0.000000 10.278202 2.279762 11.811024 3.164754
- C 0 0.000000 17.016232 1.769986 -17.016232 0.000076 30.000152
- S 0 0.000000 10.278202 -2.279762 11.811024 -3.164754
- END
-TURNOUT G "Piko G-W3 3-Way Switch G-W3"
- P "Left" 1 2 3
- P "Normal" 1 6
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 11.811024 3.164754 60.000000
- E 11.811024 -3.164754 120.000000
- E 12.598425 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 1.770054 0.000000
- C 0 0.000000 -17.016232 1.770076 17.016232 149.999924 30.000152
- S 0 0.000000 10.278202 2.279762 11.811024 3.164754
- C 0 0.000000 17.016232 1.769986 -17.016232 0.000076 30.000152
- S 0 0.000000 10.278202 -2.279762 11.811024 -3.164754
- S 0 0.000000 1.770054 0.000000 12.598425 0.000000
- END
-TURNOUT G "Piko R7 Switch Left G-WLR7/35226"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 23.622047 0.000000 90.000000
- E 23.572998 4.688961 67.500000
- S 0 0.000000 0.000000 0.000000 1.770142 0.000000
- S 0 0.000000 1.770142 0.000000 23.622047 0.000000
- C 0 0.000000 -52.700508 1.770212 52.700508 157.499924 22.500152
- S 0 0.000000 21.937866 4.011634 23.572998 4.688961
- END$SEGS
-TURNOUT G "Piko R7 Switch Right G-WRR7/35227"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 23.622047 0.000000 90.000000
- E 23.572998 -4.688961 112.500000
- S 0 0.000000 0.000000 0.000000 1.770142 -0.000000
- S 0 0.000000 1.770142 -0.000000 23.622047 0.000000
- C 0 0.000000 52.700508 1.769932 -52.700508 0.000076 22.500152
- S 0 0.000000 21.937866 -4.011634 23.572998 -4.688961
- END$SEGS
-TURNOUT G "Piko R3/R5 Curve Switch Left G-BWL/35224"
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 29.792880 10.113320 52.500000
- E 28.783734 14.194567 37.500000
- S 0 0.000000 0.000000 0.000000 1.770068 0.000000
- C 0 0.000000 -32.691854 1.770111 32.691854 127.499924 52.500152
- S 0 0.000000 27.706297 12.790363 28.783734 14.194567
- C 0 0.000000 -43.725789 1.770161 43.725789 142.499924 37.500198
- S 0 0.000000 28.388749 9.035844 29.792880 10.113320
-END$SEGS
-TURNOUT G "Piko R3/R5 Curve Switch Right G-BWR/35225"
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 29.792880 -10.113320 127.500000
- E 28.783734 -14.194567 142.500000
- S 0 0.000000 0.000000 0.000000 1.770068 -0.000000
- C 0 0.000000 32.691854 1.769938 -32.691854 0.000076 52.500152
- S 0 0.000000 27.706297 -12.790363 28.783734 -14.194567
- C 0 0.000000 43.725789 1.769929 -43.725789 0.000030 37.500198
- S 0 0.000000 28.388749 -9.035844 29.792880 -10.113320
-END$SEGS
+CONTENTS Piko G Scale Track
+CONTENTS G Scale - Piko
+
+SUBCONTENTS Piko G Scale Track - Straights
+TURNOUT G "Piko G-G1200 1200mm (47.24) Straight 35208"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 47.244094 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 47.244094 0.000000
+ END$SEGS
+TURNOUT G "Piko G-G600 600mm (23.62) Straight 35209"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 23.622047 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 23.622047 0.000000
+ END$SEGS
+TURNOUT G "Piko G-G320 320mm (321.54/12.66) Straight 35200"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.659055 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 12.659055 0.000000
+ END$SEGS
+TURNOUT G "Piko G-G280 280mm (278.46/10.96) Straight 35201"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.962992 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 10.962992 0.000000
+ END$SEGS
+TURNOUT G "Piko G-G160 160mm (160.77/6.33) Straight 35202"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.329528 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 6.329528 0.000000
+ END$SEGS
+TURNOUT G "Piko G-G140 140mm (139.23/5.48) Straight 35203"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.481496 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 5.481496 0.000000
+ END$SEGS
+TURNOUT G "Piko G-G95 95mm (96.15/3.79) Straight 35204"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.785433 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.785433 0.000000
+ END$SEGS
+
+
+SUBCONTENTS Piko G Scale Track - Curves
+TURNOUT G "Piko G-R1 600mm (23.62) Rad. 30° Curve 35211"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.811024 -3.164754 120.000000
+ C 0 0.000000 23.622047 0.000000 -23.622047 0.000000 30.000000
+ END$SEGS
+TURNOUT G "Piko G-R3 921.54mm (36.28) Rad. 30° Curve 35213"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 18.140551 -4.860746 120.000000
+ C 0 0.000000 36.281102 0.000000 -36.281102 0.000000 30.000000
+ END$SEGS
+TURNOUT G "Piko G-R3 921.54mm (36.28) Rad. 7.5° Curve 35214"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.735634 -0.310390 97.500000
+ C 0 0.000000 36.281102 0.000000 -36.281102 0.000000 7.500000
+ END$SEGS
+TURNOUT G "Piko G-R5 1243.08mm (48.94) Rad. 15° Curve 35215"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.666645 -1.667595 105.000000
+ C 0 0.000000 48.940157 0.000000 -48.940157 0.000000 15.000000
+ END$SEGS
+TURNOUT G "Piko G-R5 1243.08mm (48.94) Rad. 7.5° Curve 35216"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.387972 -0.418690 97.500000
+ C 0 0.000000 48.940157 0.000000 -48.940157 0.000000 7.500000
+ END$SEGS
+TURNOUT G "Piko G-R7 1564.62mm (61.60) Rad. 15° Curve 35217"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 15.943049 -2.098942 105.000000
+ C 0 0.000000 61.599213 0.000000 -61.599213 0.000000 15.000000
+ END$SEGS
+TURNOUT G "Piko G-R7 1564.62mm (61.60) Rad. 7.5° Curve 35218"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.040311 -0.526990 97.500000
+ C 0 0.000000 61.599213 0.000000 -61.599213 0.000000 7.500000
+ END$SEGS
+
+
+SUBCONTENTS Piko G Scale Track - Crossings
+TURNOUT G "Piko K30 30° Crossing 35240"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 12.659055 0.000000 90.000000
+ E 0.847996 3.164764 300.000000
+ E 11.811059 -3.164764 120.000000
+ S 0 0.000000 0.000000 0.000000 12.659055 0.000000
+ S 0 0.000000 0.847996 3.164764 11.811059 -3.164764
+ END$SEGS
+TURNOUT G "Piko K60 60° Crossing 35241"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 6.329528 0.000000 90.000000
+ E 1.582382 2.740766 330.000000
+ E 4.747146 -2.740766 150.000000
+ S 0 0.000000 0.000000 0.000000 6.329528 0.000000
+ S 0 0.000000 1.582382 2.740766 4.747146 -2.740766
+ END$SEGS
+
+
+SUBCONTENTS Piko G Scale Track - Switches
+TURNOUT G "Piko R1 Switch Left G-WLR1/35220"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 12.659055 0.000000 90.000000
+ E 11.811024 3.164754 60.000000
+ S 0 0.000000 0.000000 0.000000 12.659055 0.000000
+ C 0 0.000000 23.622047 0.000000 23.622047 150.000000 30.000000
+ END$SEGS
+TURNOUT G "Piko R1 Switch Right G-WRR1/35221"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 12.659055 0.000000 90.000000
+ E 11.811024 -3.164754 120.000000
+ S 0 0.000000 0.000000 0.000000 12.659055 0.000000
+ C 0 0.000000 23.622047 0.000000 -23.622047 0.000000 30.000000
+ END$SEGS
+TURNOUT G "Piko R3 Switch Left G-WLR3/35228"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 16.444488 0.000000 90.000000
+ E 13.884177 2.761734 67.500000
+ S 0 0.000000 0.000000 0.000000 16.444488 0.000000
+ C 0 0.000000 36.281102 0.000000 36.281102 157.500000 22.500000
+ END$SEGS
+TURNOUT G "Piko R3 Switch Right G-WRR3/35229"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 16.444488 0.000000 90.000000
+ E 13.884177 -2.761734 112.500000
+ S 0 0.000000 0.000000 0.000000 16.444488 0.000000
+ C 0 0.000000 36.281102 0.000000 -36.281102 0.000000 22.500000
+ END$SEGS
+TURNOUT G "Piko R5 Switch Left G-WLR5/35222"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 18.988583 0.000000 90.000000
+ E 18.728587 3.725348 67.500000
+ S 0 0.000000 0.000000 0.000000 18.988583 0.000000
+ C 0 0.000000 48.940157 0.000000 48.940157 157.500000 22.500000
+ END$SEGS
+TURNOUT G "Piko R5 Switch Right G-WRR5/35223"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 18.988583 0.000000 90.000000
+ E 18.728587 -3.725348 112.500000
+ S 0 0.000000 0.000000 0.000000 18.988583 0.000000
+ C 0 0.000000 48.940157 0.000000 -48.940157 0.000000 22.500000
+ END$SEGS
+TURNOUT G "Piko R7 Switch Left G-WLR7/35226"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 23.622047 0.000000 90.000000
+ E 23.572998 4.688961 67.500000
+ S 0 0.000000 0.000000 0.000000 23.622047 0.000000
+ C 0 0.000000 61.599213 0.000000 61.599213 157.500000 22.500000
+ END$SEGS
+TURNOUT G "Piko R7 Switch Right G-WRR7/35227"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 23.622047 0.000000 90.000000
+ E 23.572998 -4.688961 112.500000
+ S 0 0.000000 0.000000 0.000000 23.622047 0.000000
+ C 0 0.000000 61.599213 0.000000 -61.599213 0.000000 22.500000
+ END$SEGS
+
+SUBCONTENTS Piko G Scale Track - Wye and Slip Switches
+TURNOUT G "Piko G-DKW Double-Slip Switch G-DKW" 512
+ P "Cross1" 1 2 3
+ P "Cross2" 4 5 6
+ P "Slip1" 1 7 6
+ P "Slip2" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 12.659055 0.000000 90.000000
+ E 0.847996 3.164764 300.000000
+ E 11.811059 -3.164764 120.000000
+ S 0 0.000000 0.000000 0.000000 3.540000 0.000000
+ S 0 0.000000 3.540000 0.000000 9.119055 0.000000
+ S 0 0.000000 9.119055 0.000000 12.659055 0.000000
+ S 0 0.000000 0.847996 3.164764 3.913726 1.394764
+ S 0 0.000000 3.913726 1.394764 8.745329 -1.394764
+ S 0 0.000000 8.745329 -1.394764 11.811059 -3.164764
+ C 0 0.000000 10.410658 3.540000 -10.410658 0.000000 30.000000
+ C 0 0.000000 -10.410658 9.119055 10.410658 180.000000 30.000000
+ END$SEGS
+TURNOUT G "Piko G-WY Wye Switch G-WY"
+ P "Left" 1
+ P "Right" 2
+ E 0.000000 0.000000 270.000000
+ E 11.811024 3.164754 60.000000
+ E 11.811024 -3.164754 120.000000
+ C 0 0.000000 23.622047 0.000000 23.622047 150.000000 30.000000
+ C 0 0.000000 23.622047 0.000000 -23.622047 0.000000 30.000000
+ END$SEGS
+TURNOUT G "Piko G-W3 3-Way Switch G-W3"
+ P "Left" 1
+ P "Normal" 2
+ P "Right" 3
+ E 0.000000 0.000000 270.000000
+ E 12.659055 0.000000 90.000000
+ E 11.811024 3.164754 60.000000
+ E 11.811024 -3.164754 120.000000
+ C 0 0.000000 23.622047 0.000000 23.622047 150.000000 30.000000
+ S 0 0.000000 0.000000 0.000000 12.659055 0.000000
+ C 0 0.000000 23.622047 0.000000 -23.622047 0.000000 30.000000
+ END$SEGS
+
+SUBCONTENTS Piko G Scale Track - Curve Switches
+TURNOUT G "Piko R3/R5 Curve Switch Left G-BWL/35224"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 28.783734 14.194567 37.500000
+ E 29.792880 10.113320 52.500000
+ C 0 0.000000 36.281102 0.000000 36.281102 127.500000 52.500000
+ C 0 0.000000 48.940157 0.000000 48.940157 142.500000 37.500000
+ END$SEGS
+TURNOUT G "Piko R3/R5 Curve Switch Right G-BWR/35225"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 29.792880 -10.113320 127.500000
+ E 28.783734 -14.194567 142.500000
+ C 0 0.000000 36.281102 0.000000 -36.281102 0.000000 52.500000
+ C 0 0.000000 48.940157 0.000000 -48.940157 0.000000 37.500000
+ END$SEGS \ No newline at end of file
diff --git a/app/lib/params/G-Playmobil RC Track.xtp b/app/lib/params/G-Playmobil RC Track.xtp
index bf61e31..8ef81de 100644
--- a/app/lib/params/G-Playmobil RC Track.xtp
+++ b/app/lib/params/G-Playmobil RC Track.xtp
@@ -1,4 +1,4 @@
-CONTENTS Playmobil RC Track
+CONTENTS Playmobil RC Track
SUBCONTENTS Playmobil RC Track - STRAIGHTS
TURNOUT G "Playmobil Straight Track 4384/4386"
P "Normal" 1
diff --git a/app/lib/params/G-USA.xtp b/app/lib/params/G-USA.xtp
index 45f5a04..ab57287 100644
--- a/app/lib/params/G-USA.xtp
+++ b/app/lib/params/G-USA.xtp
@@ -84,43 +84,91 @@ TURNOUT G "USA Trains Right-hand Remote Switch R81205"
C 0 0.000000 24.000000 0.000000 -24.000000 0.000000 30.000000
END$SEGS
-TURNOUT G "USA Trains Left-hand 8' Switch R81625"
+TURNOUT G "USA Trains 8' DIA Lefthand R81625"
P "Normal" 1
P "Reverse" 2
E 0.000000 0.000000 270.000000
- E 24.000000 0.000000 90.000000
+ E 19.000000 0.000000 90.000000
E 18.368805 3.653782 67.500000
- S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ S 0 0.000000 0.000000 0.000000 19.000000 0.000000
C 0 0.000000 -48.000000 0.000000 48.000000 157.500000 22.500000
END$SEGS
-TURNOUT G "USA Trains Right-hand 8' Switch R81620"
+TURNOUT G "USA Trains 5"" Straight R81620/25"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 5.000000 0.000000
+ END$SEGS
+TURNOUT G "USA Trains 8' DIA Righthand R81620"
P "Normal" 1
P "Reverse" 2
E 0.000000 0.000000 270.000000
- E 24.000000 0.000000 90.000000
+ E 19.000000 0.000000 90.000000
E 18.368805 -3.653782 112.500000
- S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ S 0 0.000000 0.000000 0.000000 19.000000 0.000000
C 0 0.000000 48.000000 0.000000 -48.000000 0.000000 22.500000
END$SEGS
+#TURNOUT G "USA Trains Left-hand 8' Switch R81625"
+# P "Normal" 1
+# P "Reverse" 2
+# E 0.000000 0.000000 270.000000
+# E 24.000000 0.000000 90.000000
+# E 18.368805 3.653782 67.500000
+# S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+# C 0 0.000000 -48.000000 0.000000 48.000000 157.500000 22.500000
+# END$SEGS
+#TURNOUT G "USA Trains Right-hand 8' Switch R81620"
+# P "Normal" 1
+# P "Reverse" 2
+# E 0.000000 0.000000 270.000000
+# E 24.000000 0.000000 90.000000
+# E 18.368805 -3.653782 112.500000
+# S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+# C 0 0.000000 48.000000 0.000000 -48.000000 0.000000 22.500000
+# END$SEGS
-TURNOUT G "USA Trains Left-hand 10' Switch R81725"
+TURNOUT G "USA Trains 10' DIA Lefthand R81725"
P "Normal" 1
P "Reverse" 2
E 0.000000 0.000000 270.000000
E 24.000000 0.000000 90.000000
- E 30.000000 8.038476 60.000000
+ E 22.961006 4.567228 67.500000
S 0 0.000000 0.000000 0.000000 24.000000 0.000000
- C 0 0.000000 -60.000000 0.000000 60.000000 150.000000 30.000000
+ C 0 0.000000 -60.000000 0.000000 60.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT G "USA Trains 10' Diameter 7.5d R81720/25"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.831572 0.513308 82.500000
+ C 0 0.000000 -60.000000 0.000000 60.000000 172.500000 7.500000
END$SEGS
-TURNOUT G "USA Trains Right-hand 10' Switch R81720"
+TURNOUT G "USA Trains 10' DIA Righthand R81720"
P "Normal" 1
P "Reverse" 2
E 0.000000 0.000000 270.000000
E 24.000000 0.000000 90.000000
- E 30.000000 -8.038476 120.000000
+ E 22.961006 -4.567228 112.500000
S 0 0.000000 0.000000 0.000000 24.000000 0.000000
- C 0 0.000000 60.000000 0.000000 -60.000000 0.000000 30.000000
- END$SEGS
+ C 0 0.000000 60.000000 0.000000 -60.000000 0.000000 22.500000
+ END$SEGS
+#TURNOUT G "USA Trains Left-hand 10' Switch R81725"
+# P "Normal" 1
+# P "Reverse" 2
+# E 0.000000 0.000000 270.000000
+# E 24.000000 0.000000 90.000000
+# E 30.000000 8.038476 60.000000
+# S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+# C 0 0.000000 -60.000000 0.000000 60.000000 150.000000 30.000000
+# END$SEGS
+#TURNOUT G "USA Trains Right-hand 10' Switch R81720"
+# P "Normal" 1
+# P "Reverse" 2
+# E 0.000000 0.000000 270.000000
+# E 24.000000 0.000000 90.000000
+# E 30.000000 -8.038476 120.000000
+# S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+# C 0 0.000000 60.000000 0.000000 -60.000000 0.000000 30.000000
+# END$SEGS
TURNOUT G "USA Trains #6 Left-hand R81615"
P "Normal" 1 2
diff --git a/app/lib/params/HO - Atlas Custom Line Track Assemblies.xtp b/app/lib/params/HO - Atlas Custom Line Track Assemblies.xtp
new file mode 100644
index 0000000..e8bb832
--- /dev/null
+++ b/app/lib/params/HO - Atlas Custom Line Track Assemblies.xtp
@@ -0,0 +1,80 @@
+CONTENTS Atlas Custom Line Track Assemblies
+#From Atlas Book Custon-Line Layouts 10 HO Plans
+TURNOUT HO "Atlas Atlas 15d Snap Sw Double Crossover Using Avaiilable Parts 851-850-173-2.5S" 0
+ P "P0" 1 3 0 11 13
+ P "P1" 2 6 7 9 14 0 12 10 8 5 4
+ E 0.000000 0.000000 270.000000
+ E 18.000000 0.000000 90.000000
+ E 18.000000 -3.553141 90.000000
+ E 0.000000 -3.553141 270.000000
+ S 0 0.000000 0.000000 -3.553141 9.000000 -3.553141
+ C 0 0.000000 -18.000000 0.000000 14.446859 165.000000 15.000000
+ S 0 0.000000 9.000000 -3.553141 18.000000 -3.553141
+ C 0 0.000000 -18.000000 18.000000 14.446859 180.000000 15.000000
+ S 0 0.000000 10.931850 -2.294207 13.341257 -2.939806
+ S 0 0.000000 4.658743 -2.939806 7.068146 -2.294208
+ S 0 0.000000 7.068146 -2.294208 10.931850 -1.258932
+ S 0 0.000000 7.068146 -1.258933 10.931850 -2.294207
+ S 0 0.000000 10.931850 -1.258932 13.341253 -0.613334
+ S 0 0.000000 4.658743 -0.613335 7.068146 -1.258933
+ S 0 0.000000 0.000000 0.000000 9.000000 0.000000
+ C 0 0.000000 18.000000 0.000000 -18.000000 0.000000 15.000000
+ S 0 0.000000 9.000000 0.000000 18.000000 0.000000
+ C 0 0.000000 18.000000 18.000000 -18.000000 345.000000 15.000000
+ END$SEGS
+TURNOUT HO "Atlas Atlas #4 Sw Double Crossover Using Avaiilable Parts 281-282-172-2.5S" 0
+ P "P0" 1 2 5 8 7 0 11 12 6 16 15
+ P "P1" 1 3 4 19 18 17 15 0 11 13 14 20 10 9 7
+ E 0.000000 0.000000 270.000000
+ E 20.500000 -0.000000 90.000000
+ E 20.500000 3.000000 90.000000
+ E 0.000000 3.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 9.000000 0.000000
+ C 0 0.000000 -25.929038 0.649600 25.929038 167.500000 12.500000
+ S 0 0.000000 6.261671 0.614622 8.000000 1.000000
+ S 0 0.000000 9.000000 0.000000 11.500000 -0.000000
+ S 0 0.000000 9.000000 3.000000 11.500000 3.000000
+ S 0 0.000000 19.850400 -0.000000 20.500000 -0.000000
+ S 0 0.000000 11.500000 -0.000000 19.850400 -0.000000
+ C 0 0.000000 -25.929038 19.850400 25.929038 180.000000 12.500000
+ S 0 0.000000 12.500000 1.000000 14.238329 0.614622
+ S 0 0.000000 0.000000 3.000000 0.649600 3.000000
+ S 0 0.000000 0.649600 3.000000 9.000000 3.000000
+ C 0 0.000000 25.929038 0.649600 -22.929038 0.000000 12.500000
+ S 0 0.000000 6.261671 2.385378 8.000000 2.000000
+ S 0 0.000000 19.850400 3.000000 20.500000 3.000000
+ S 0 0.000000 11.500000 3.000000 19.850400 3.000000
+ C 0 0.000000 25.929038 19.850400 -22.929038 347.500000 12.500000
+ S 0 0.000000 12.500000 2.000000 14.238329 2.385378
+ S 0 0.000000 8.000000 1.000000 12.510708 2.000000
+ S 0 0.000000 7.999999 2.000000 12.510708 1.000000
+ END$SEGS
+TURNOUT HO "Atlas Atlas #6 Sw Double Crossover Using Avaiilable Parts 283-284-171-2.0S" 0
+ P "P0" 1 2 5 16 15 0 11 12 6 8 7
+ P "P1" 1 3 4 19 10 9 7 0 11 13 14 20 18 17 15
+ E 0.000000 0.000000 270.000000
+ E 26.000000 -0.000000 90.000000
+ E 26.000000 3.000000 90.000000
+ E 0.000000 3.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 0.648600 0.000000
+ S 0 0.000000 0.648600 0.000000 12.000000 0.000000
+ C 0 0.000000 -40.624473 0.648708 40.624473 170.500000 9.500000
+ S 0 0.000000 7.353673 0.557148 10.000000 1.000000
+ S 0 0.000000 12.000000 0.000000 14.000000 -0.000000
+ S 0 0.000000 12.000000 3.000000 14.000000 3.000000
+ S 0 0.000000 25.351400 3.000000 26.000000 3.000000
+ S 0 0.000000 14.000000 3.000000 25.351400 3.000000
+ C 0 0.000000 40.624473 25.351292 -37.624473 350.500000 9.500000
+ S 0 0.000000 16.000000 2.000000 18.646327 2.442852
+ S 0 0.000000 0.000000 3.000000 0.648600 3.000000
+ S 0 0.000000 0.648600 3.000000 12.000000 3.000000
+ C 0 0.000000 40.624473 0.648708 -37.624473 0.000000 9.500000
+ S 0 0.000000 7.353673 2.442852 10.000000 2.000000
+ S 0 0.000000 25.351400 -0.000000 26.000000 -0.000000
+ S 0 0.000000 14.000000 -0.000000 25.351400 -0.000000
+ C 0 0.000000 -40.624473 25.351292 40.624473 180.000000 9.500000
+ S 0 0.000000 16.000000 1.000000 18.646327 0.557148
+ S 0 0.000000 10.000000 1.000000 15.975764 2.000000
+ S 0 0.000000 10.000000 2.000000 15.975764 1.000000
+ END$SEGS
diff --git a/app/lib/params/HO-atl100ho.xtp b/app/lib/params/HO-Atlas Code 100 Track.xtp
index f8891e1..0c263b4 100644
--- a/app/lib/params/HO-atl100ho.xtp
+++ b/app/lib/params/HO-Atlas Code 100 Track.xtp
@@ -1,676 +1,679 @@
-CONTENTS Atlas Code 100 HO Scale
-#########################################################################################
-#########################################################################################
-SUBCONTENTS Atlas HO-Scale C100 - Crossings
-# Crossing Design by Dave Bullis - 6.000000 19.000000 6.000000
-TURNOUT HO "Atlas 19D Crossing 171"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 6.000000 0.000000 90.000000
- E 0.163444 0.976704 289.000000
- E 5.836556 -0.976704 109.000000
- S 0 0 0.000000 0.000000 6.000000 0.000000
- S 0 0 0.163444 0.976704 5.836556 -0.976704
- END
-# Crossing Design by Dave Bullis - 4.500000 25.000000 4.500000
-TURNOUT HO "Atlas 25D Crossing 172"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.500000 0.000000 90.000000
- E 0.210807 0.950890 295.000000
- E 4.289193 -0.950890 115.000000
- S 0 0 0.000000 0.000000 4.500000 0.000000
- S 0 0 0.210807 0.950890 4.289193 -0.950890
- END
-# Crossing Design by Dave Bullis - 4.000000 30.000000 4.000000
-TURNOUT HO "Atlas 30D Crossing 173"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.000000 0.000000 90.000000
- E 0.267949 0.999999 300.000000
- E 3.732051 -0.999999 120.000000
- S 0 0 0.000000 0.000000 4.000000 0.000000
- S 0 0 0.267949 0.999999 3.732051 -0.999999
- END
-# Crossing Design by Dave Bullis - 3.000000 45.000000 3.000000
-TURNOUT HO "Atlas 45D Crossing 174"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 3.000000 0.000000 90.000000
- E 0.439339 1.060659 315.000000
- E 2.560661 -1.060659 135.000000
- S 0 0 0.000000 0.000000 3.000000 0.000000
- S 0 0 0.439339 1.060659 2.560661 -1.060659
- END
-# Crossing Design by Dave Bullis - 3.000000 60.000000 3.000000
-TURNOUT HO "Atlas 60D Crossing 175"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 3.000000 0.000000 90.000000
- E 0.749999 1.299037 330.000000
- E 2.250001 -1.299037 150.000000
- S 0 0 0.000000 0.000000 3.000000 0.000000
- S 0 0 0.749999 1.299037 2.250001 -1.299037
- END
-# Crossing Design by Dave Bullis - 6.000000 90.000000 6.000000
-TURNOUT HO "Atlas 90D Crossing 176"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 6.000000 0.000000 90.000000
- E 2.999996 3.000000 0.000000
- E 3.000004 -3.000000 180.000000
- S 0 0 0.000000 0.000000 6.000000 0.000000
- S 0 0 2.999996 3.000000 3.000004 -3.000000
- END
-# Crossing Design by Dave Bullis - 9.000000 12.500000 9.000000
-TURNOUT HO "Atlas 12.5D Crossing 177"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- E 0.106668 0.973977 282.500000
- E 8.893332 -0.973977 102.500000
- S 0 0 0.000000 0.000000 9.000000 0.000000
- S 0 0 0.106668 0.973977 8.893332 -0.973977
- END
-# Crossing Design by Dave Bullis - 6.000000 30.000000 6.000000
-TURNOUT HO "Atlas 30D Snap Crossing 839"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 6.000000 0.000000 90.000000
- E 0.401923 1.499999 300.000000
- E 5.598077 -1.499999 120.000000
- S 0 0 0.000000 0.000000 6.000000 0.000000
- S 0 0 0.401923 1.499999 5.598077 -1.499999
- END
-
-#########################################################################################
-#########################################################################################
-SUBCONTENTS Atlas HO-Scale C100 - Turnouts
-# Wye Turnout Design by Dave Bullis - 7.800000 0.670000 9.600000 9.600000 0.670000 7.800000
-TURNOUT HO "Atlas Mark IV Wye 280"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 7.800000 -0.670000 99.600000
- E 7.800000 0.670000 80.400000
- S 0 0 0.000000 0.000000 0.648600 0.000000
- C 0 0 -37.990143 0.648701 37.990143 170.399924 9.600152
- S 0 0 6.984263 0.532020 7.800000 0.670000
- C 0 0 37.990143 0.648701 -37.990143 359.999924 9.600152
- S 0 0 6.984263 -0.532020 7.800000 -0.670000
- END
-# Regular Turnout Design by Dave Bullis - 8.000000 1.000000 12.800000 9.000000
-TURNOUT HO "Atlas #4 Mark IV Left 281"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- E 8.000000 1.000000 77.200000
- S 0 0 0.000000 0.000000 0.648600 0.000000
- S 0 0 0.648600 0.000000 9.000000 0.000000
- C 0 0 -26.298793 0.648670 26.298793 167.199924 12.800152
- S 0 0 6.475122 0.653549 8.000000 1.000000
- END
-TURNOUT HO "Atlas #4 Mark IV Right 282"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- E 8.000000 -1.000000 102.800000
- S 0 0 0.000000 0.000000 0.648600 0.000000
- S 0 0 0.648600 0.000000 9.000000 0.000000
- C 0 0 26.298793 0.648670 -26.298793 359.999924 12.800152
- S 0 0 6.475122 -0.653549 8.000000 -1.000000
- END
-# Regular Turnout Design by Dave Bullis - 10.000000 1.000000 9.500000 12.000000
-TURNOUT HO "Atlas #6 Mark IV Left 283"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 12.000000 0.000000 90.000000
- E 10.000000 1.000000 80.500000
- S 0 0 0.000000 0.000000 0.648600 0.000000
- S 0 0 0.648600 0.000000 12.000000 0.000000
- C 0 0 -40.624473 0.648708 40.624473 170.499924 9.500152
- S 0 0 7.353673 0.557148 10.000000 1.000000
- END
-TURNOUT HO "Atlas #6 Mark IV Right 284"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 12.000000 0.000000 90.000000
- E 10.000000 -1.000000 99.500000
- S 0 0 0.000000 0.000000 0.648600 0.000000
- S 0 0 0.648600 0.000000 12.000000 0.000000
- C 0 0 40.624473 0.648708 -40.624473 359.999924 9.500152
- S 0 0 7.353673 -0.557148 10.000000 -1.000000
- END
-TURNOUT HO "Atlas #8 Mark IV Left 285"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 13.500000 0.000000 90.000000
- E 12.200000 1.000000 82.819238
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 13.500000 0.000000
- C 0 0.000000 -57.585695 0.649676 57.585695 172.819162 7.180914
- S 0 0.000000 7.847964 0.451679 12.200000 1.000000
- END
-TURNOUT HO "Atlas #8 Mark IV Right 286"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 13.500000 0.000000 90.000000
- E 12.200000 -1.000000 97.180762
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 13.500000 0.000000
- C 0 0.000000 57.585695 0.649371 -57.585695 0.000076 7.180914
- S 0 0.000000 7.847964 -0.451679 12.200000 -1.000000
- END
-TURNOUT HO "Atlas Customline Mark IV Curve Left 287"
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 14.840000 3.960000 60.000000
- E 13.320000 4.510000 52.500000
- S 0 0.000000 0.000000 0.000000 0.683614 0.000000
- C 0 0.000000 -19.910982 0.683641 19.910982 142.499924 37.500152
- S 0 0.000000 12.804685 4.114563 13.320000 4.510000
- C 0 0.000000 -27.133402 0.710757 27.133388 149.999867 30.057448
- S 0 0.000000 14.277497 3.635217 14.840000 3.960000
-END
-TURNOUT HO "Atlas Customline Mark IV Curve Right 288"
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 14.840000 -3.960000 120.000000
- E 13.320000 -4.510000 127.500000
- S 0 0.000000 0.000000 0.000000 0.683614 0.000000
- C 0 0.000000 19.910982 0.683535 -19.910982 0.000076 37.500152
- S 0 0.000000 12.804685 -4.114563 13.320000 -4.510000
- C 0 0.000000 27.133402 0.710757 -27.133388 359.942837 30.057448
- S 0 0.000000 14.277497 -3.635217 14.840000 -3.960000
-END
-TURNOUT HO "Atlas Left Snap Switch 850"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- E 6.156363 1.085533 70.000000
- S 0 0.000000 0.000000 0.000000 9.000000 0.000000
- C 0 0.000000 -18.000000 0.000000 18.000000 160.000000 20.000000
- END
-TURNOUT HO "Atlas Right Snap Switch 851"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- E 6.156363 -1.085533 110.000000
- S 0 0.000000 0.000000 0.000000 9.000000 0.000000
- C 0 0.000000 18.000000 0.000000 -18.000000 0.000000 20.000000
- END
-TURNOUT HO "Atlas Left Snap Switch 850/15"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- E 4.658743 0.613335 75.000000
- S 0 0.000000 0.000000 0.000000 9.000000 0.000000
- C 0 0.000000 -18.000000 0.000000 18.000000 165.000000 15.000000
- END
-TURNOUT HO "Atlas Right Snap Switch 851/15"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- E 4.658743 -0.613335 105.000000
- S 0 0.000000 0.000000 0.000000 9.000000 0.000000
- C 0 0.000000 18.000000 0.000000 -18.000000 0.000000 15.000000
- END
-
-#########################################################################################
-#########################################################################################
-SUBCONTENTS Atlas HO-Scale C100 - Straight Track
-TURNOUT HO "Atlas 0.75"" Straight 847a"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.750000 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.750000 0.000000
- END
-TURNOUT HO "Atlas 1"" Straight 847b"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.000000 0.000000
- END
-TURNOUT HO "Atlas 1.25"" Straight 847c"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.250000 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.250000 0.000000
- END
-TURNOUT HO "Atlas 1.5"" Straight 847d"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.500000 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.500000 0.000000
- END
-TURNOUT HO "Atlas 2.0"" Straight 847e"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.000000 0.000000
- END
-# Straight Section Design by Dave Bullis - 2.500000
-TURNOUT HO "Atlas 2.5"" Straight 847f"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.500000 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.500000 0.000000
- END
-# Straight Section Design by Dave Bullis - 3.000000
-TURNOUT HO "Atlas 3"" Straight 823"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 3.000000 0.000000
- END
-# Straight Section Design by Dave Bullis - 6.000000
-TURNOUT HO "Atlas 6"" Straight 822"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 6.000000 0.000000
- END
-# Straight Section Design by Dave Bullis - 9.000000
-TURNOUT HO "Atlas 9"" Straight 150/821"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.000000 0.000000
- END
-TURNOUT HO "Atlas 36"" Super-Flex 168/178"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 36.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 36.000000 0.000000
- END
-
-#########################################################################################
-#########################################################################################
-SUBCONTENTS Atlas HO-Scale C100 - Curve Track
-# Curved Section Design by Dave Bullis - 15.000000 30.000000
-TURNOUT HO "Atlas 15"" 30D Curve 151/831"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.500000 -2.009619 120.000000
- C 0 0 15.000000 0.000000 -15.000000 0.000000 30.000000
- END
-TURNOUT HO "Atlas 15"" 15D Curve 832"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.882286 -0.511113 105.000000
- C 0 0.000000 15.000000 0.000000 -15.000000 0.000000 15.000000
- END
-# Curved Section Design by Dave Bullis - 18.000000 30.000000
-TURNOUT HO "Atlas 18"" 30D Curve 152/833"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.999993 -2.411539 120.000000
- C 0 0 18.000000 0.000000 -18.000000 0.000000 30.000000
- END
-# Curved Section Design by Dave Bullis - 18.000000 15.000000
-TURNOUT HO "Atlas 18"" 15D Curve 834"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.658739 -0.613334 105.000000
- C 0 0 18.000000 0.000000 -18.000000 0.000000 15.000000
- END
-# Curved Section Design by Dave Bullis - 18.000000 10.000000
-TURNOUT HO "Atlas 18"" 10D Curve 835"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.125665 -0.273460 100.000000
- C 0 0 18.000000 0.000000 -18.000000 0.000000 10.000000
- END
-# Curved Section Design by Dave Bullis - 22.000000 22.500000
-TURNOUT HO "Atlas 22"" 22.5D Curve 153/836"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.419029 -1.674647 112.500000
- C 0 0 22.000000 0.000000 -22.000000 0.000000 22.500000
- END
-TURNOUT HO "Atlas 24"" 22.5D Curve 837"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.184402 -1.826891 112.500000
- C 0 0 24.000000 0.000000 -24.000000 0.000000 22.500000
- END
-
-#########################################################################################
-#########################################################################################
-SUBCONTENTS Atlas HO-Scale C100 - Misc. Track
-TURNOUT HO "Atlas 9"" Straight Terminal 840"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.000000 0.000000
- L 16711680 0 3.800000 0.500000 3.800000 1.300000
- L 16711680 0 5.200000 0.500000 5.200000 1.300000
- L 16711680 0 3.800000 1.300000 5.200000 1.300000
- A 15611680 0 0.200000 4.100000 1.000000 0.000000 360.000000
- A 15611680 0 0.200000 4.900000 1.000000 0.000000 360.000000
- END
-TURNOUT HO "Atlas 9"" Rerailer 844"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.000000 0.000000
- END
-# Straight Section Design by Victor Bobier - 3.750000
-TURNOUT HO "Atlas Bumper Track 843"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 3.750000 0.000000
- END
-TURNOUT HO "Atlas 18"" 30D Curve Terminal 845"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.999993 -2.411539 120.000000
- C 0 0 18.000000 0.000000 -18.000000 0.000000 30.000000
- L 16711680 0 0.500000 0.500000 0.500000 1.300000
- L 16711680 0 1.900000 0.500000 1.900000 1.300000
- L 16711680 0 0.500000 1.300000 1.900000 1.300000
- A 15611680 0 0.200000 0.800000 1.000000 0.000000 360.000000
- A 15611680 0 0.200000 1.600000 1.000000 0.000000 360.000000
- END
-
-#########################################################################################
-#########################################################################################
-SUBCONTENTS Atlas HO-Scale C100 - Bridges
-TURNOUT HO "Atlas C100 9"" Single-Track Thru-Girder Bridge 880"
- P "P0" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 9.000000 0.000000
- L 11579568 0.100000 0.500000 1.000000 8.500000 1.000000
- L 11579568 0.050000 0.750000 1.000000 0.750000 0.625000
- L 11579568 0.050000 2.000000 1.000000 2.000000 0.625000
- L 11579568 0.050000 3.250000 1.000000 3.250000 0.625000
- L 11579568 0.050000 4.500000 1.000000 4.500000 0.625000
- L 11579568 0.050000 5.750000 1.000000 5.750000 0.625000
- L 11579568 0.050000 7.000000 1.000000 7.000000 0.625000
- L 11579568 0.050000 8.250000 1.000000 8.250000 0.625000
- L 11579568 0.100000 0.500000 -1.000000 8.500000 -1.000000
- L 11579568 0.050000 0.750000 -1.000000 0.750000 -0.625000
- L 11579568 0.050000 2.000000 -1.000000 2.000000 -0.625000
- L 11579568 0.050000 3.250000 -1.000000 3.250000 -0.625000
- L 11579568 0.050000 4.500000 -1.000000 4.500000 -0.625000
- L 11579568 0.050000 5.750000 -1.000000 5.750000 -0.625000
- L 11579568 0.050000 7.000000 -1.000000 7.000000 -0.625000
- L 11579568 0.050000 8.250000 -1.000000 8.250000 -0.625000
-END
-TURNOUT HO "Atlas C100 9"" Double-Track Thru-Girder Bridge 881"
- P "P0" 1 0 2
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- E 0.000000 -2.000000 270.000000
- E 9.000000 -2.000000 90.000000
- S 0 0.000000 0.000000 0.000000 9.000000 0.000000
- S 0 0.000000 0.000000 -2.000000 9.000000 -2.000000
- L 11579568 0.100000 0.500000 1.000000 8.500000 1.000000
-
- L 11579568 0.050000 0.750000 1.000000 0.750000 0.625000
- L 11579568 0.050000 2.000000 1.000000 2.000000 0.625000
- L 11579568 0.050000 3.250000 1.000000 3.250000 0.625000
- L 11579568 0.050000 4.500000 1.000000 4.500000 0.625000
- L 11579568 0.050000 5.750000 1.000000 5.750000 0.625000
- L 11579568 0.050000 7.000000 1.000000 7.000000 0.625000
- L 11579568 0.050000 8.250000 1.000000 8.250000 0.625000
-
- L 11579568 0.050000 0.750000 -1.000000 0.750000 -0.625000
- L 11579568 0.050000 2.000000 -1.000000 2.000000 -0.625000
- L 11579568 0.050000 3.250000 -1.000000 3.250000 -0.625000
- L 11579568 0.050000 4.500000 -1.000000 4.500000 -0.625000
- L 11579568 0.050000 5.750000 -1.000000 5.750000 -0.625000
- L 11579568 0.050000 7.000000 -1.000000 7.000000 -0.625000
- L 11579568 0.050000 8.250000 -1.000000 8.250000 -0.625000
-
- L 11579568 0.100000 0.500000 -1.000000 8.500000 -1.000000
-
- L 11579568 0.050000 0.750000 -1.000000 0.750000 -1.375000
- L 11579568 0.050000 2.000000 -1.000000 2.000000 -1.375000
- L 11579568 0.050000 3.250000 -1.000000 3.250000 -1.375000
- L 11579568 0.050000 4.500000 -1.000000 4.500000 -1.375000
- L 11579568 0.050000 5.750000 -1.000000 5.750000 -1.375000
- L 11579568 0.050000 7.000000 -1.000000 7.000000 -1.375000
- L 11579568 0.050000 8.250000 -1.000000 8.250000 -1.375000
-
- L 11579568 0.050000 0.750000 -3.000000 0.750000 -2.625000
- L 11579568 0.050000 2.000000 -3.000000 2.000000 -2.625000
- L 11579568 0.050000 3.250000 -3.000000 3.250000 -2.625000
- L 11579568 0.050000 4.500000 -3.000000 4.500000 -2.625000
- L 11579568 0.050000 5.750000 -3.000000 5.750000 -2.625000
- L 11579568 0.050000 7.000000 -3.000000 7.000000 -2.625000
- L 11579568 0.050000 8.250000 -3.000000 8.250000 -2.625000
-
- L 11579568 0.100000 0.500000 -3.000000 8.500000 -3.000000
-END
-TURNOUT HO "Atlas C100 9"" Single-Track Add-On Thru-Girder Bridge 882"
- P "P0" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 9.000000 0.000000
- #L 11579568 0.100000 0.500000 1.000000 8.500000 1.000000
- L 11579568 0.050000 0.750000 1.000000 0.750000 0.625000
- L 11579568 0.050000 2.000000 1.000000 2.000000 0.625000
- L 11579568 0.050000 3.250000 1.000000 3.250000 0.625000
- L 11579568 0.050000 4.500000 1.000000 4.500000 0.625000
- L 11579568 0.050000 5.750000 1.000000 5.750000 0.625000
- L 11579568 0.050000 7.000000 1.000000 7.000000 0.625000
- L 11579568 0.050000 8.250000 1.000000 8.250000 0.625000
- L 11579568 0.100000 0.500000 -1.000000 8.500000 -1.000000
- L 11579568 0.050000 0.750000 -1.000000 0.750000 -0.625000
- L 11579568 0.050000 2.000000 -1.000000 2.000000 -0.625000
- L 11579568 0.050000 3.250000 -1.000000 3.250000 -0.625000
- L 11579568 0.050000 4.500000 -1.000000 4.500000 -0.625000
- L 11579568 0.050000 5.750000 -1.000000 5.750000 -0.625000
- L 11579568 0.050000 7.000000 -1.000000 7.000000 -0.625000
- L 11579568 0.050000 8.250000 -1.000000 8.250000 -0.625000
-END
-TURNOUT HO "Atlas C100 9"" Warren Truss Bridge 883"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.000000 0.000000
- F 11579568 0.000000 4
- 0.000000 1.200000 0
- 9.000000 1.200000 0
- 9.000000 0.625000 0
- 0.000000 0.625000 0
- F 11579568 0.000000 4
- 0.000000 -1.200000 0
- 9.000000 -1.200000 0
- 9.000000 -0.625000 0
- 0.000000 -0.625000 0
- L 8421504 0.100000 0.000000 1.200000 9.000000 1.200000
- L 8421504 0.100000 0.000000 -1.200000 9.000000 -1.200000
- END
-TURNOUT HO "Atlas C100 9"" Deck Truss Bridge 884"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.000000 0.000000
- L 11579568 0.050000 0.000000 0.700000 9.000000 0.700000
- L 11579568 0.050000 0.000000 0.600000 0.000000 0.700000
- L 11579568 0.050000 9.000000 0.600000 9.000000 0.700000
- L 11579568 0.050000 0.000000 -0.700000 9.000000 -0.700000
- L 11579568 0.050000 0.000000 -0.600000 0.000000 -0.700000
- L 11579568 0.050000 9.000000 -0.600000 9.000000 -0.700000
- END
-TURNOUT HO "Atlas C100 9"" Plate Girder Bridge 885"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.000000 0.000000
- F 11579568 0.000000 4
- 0.000000 1.300000 0
- 9.000000 1.300000 0
- 9.000000 0.625000 0
- 0.000000 0.625000 0
- F 11579568 0.000000 4
- 0.000000 -1.300000 0
- 9.000000 -1.300000 0
- 9.000000 -0.625000 0
- 0.000000 -0.625000 0
- L 8421504 0.100000 0.000000 1.300000 9.000000 1.300000
- L 8421504 0.050000 0.900000 1.000000 0.900000 1.300000
- L 8421504 0.050000 2.700000 1.000000 2.700000 1.300000
- L 8421504 0.050000 4.500000 1.000000 4.500000 1.300000
- L 8421504 0.050000 6.300000 1.000000 6.300000 1.300000
- L 8421504 0.050000 8.100000 1.000000 8.100000 1.300000
- L 8421504 0.100000 0.000000 -1.300000 9.000000 -1.300000
- L 8421504 0.050000 0.900000 -1.000000 0.900000 -1.300000
- L 8421504 0.050000 2.700000 -1.000000 2.700000 -1.300000
- L 8421504 0.050000 4.500000 -1.000000 4.500000 -1.300000
- L 8421504 0.050000 6.300000 -1.000000 6.300000 -1.300000
- L 8421504 0.050000 8.100000 -1.000000 8.100000 -1.300000
- END
-TURNOUT HO "Atlas C100 18"" Through Truss Bridge 888/889"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 18.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 18.000000 0.000000
- L 11579568 0.050000 0.000000 1.200000 18.000000 1.200000
- L 11579568 0.050000 0.000000 0.750000 0.000000 1.200000
- L 11579568 0.050000 18.000000 0.750000 18.000000 1.200000
- L 11579568 0.050000 0.000000 -1.200000 18.000000 -1.200000
- L 11579568 0.050000 0.000000 -0.750000 0.000000 -1.200000
- L 11579568 0.050000 18.000000 -0.750000 18.000000 -1.200000
- L 11579568 0.050000 3.000000 -1.200000 3.000000 1.200000
- L 11579568 0.050000 6.000000 -1.200000 6.000000 1.200000
- L 11579568 0.050000 9.000000 -1.200000 9.000000 1.200000
- L 11579568 0.050000 12.000000 -1.200000 12.000000 1.200000
- L 11579568 0.050000 15.000000 -1.200000 15.000000 1.200000
- L 11579568 0.050000 3.000000 -1.200000 6.000000 1.200000
- L 11579568 0.050000 3.000000 1.200000 6.000000 -1.200000
- L 11579568 0.050000 6.000000 -1.200000 9.000000 1.200000
- L 11579568 0.050000 6.000000 1.200000 9.000000 -1.200000
- L 11579568 0.050000 9.000000 -1.200000 12.000000 1.200000
- L 11579568 0.050000 9.000000 1.200000 12.000000 -1.200000
- L 11579568 0.050000 12.000000 -1.200000 15.000000 1.200000
- L 11579568 0.050000 12.000000 1.200000 15.000000 -1.200000
- END
-TURNOUT HO "Atlas C100 9"" Decorate Plate Girder Bridge (Various Roads) 890-898"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.000000 0.000000
- F 11579568 0.000000 4
- 0.000000 1.300000 0
- 9.000000 1.300000 0
- 9.000000 0.625000 0
- 0.000000 0.625000 0
- F 11579568 0.000000 4
- 0.000000 -1.300000 0
- 9.000000 -1.300000 0
- 9.000000 -0.625000 0
- 0.000000 -0.625000 0
- L 8421504 0.100000 0.000000 1.300000 9.000000 1.300000
- L 8421504 0.050000 0.900000 1.000000 0.900000 1.300000
- L 8421504 0.050000 2.700000 1.000000 2.700000 1.300000
- L 8421504 0.050000 4.500000 1.000000 4.500000 1.300000
- L 8421504 0.050000 6.300000 1.000000 6.300000 1.300000
- L 8421504 0.050000 8.100000 1.000000 8.100000 1.300000
- L 8421504 0.100000 0.000000 -1.300000 9.000000 -1.300000
- L 8421504 0.050000 0.900000 -1.000000 0.900000 -1.300000
- L 8421504 0.050000 2.700000 -1.000000 2.700000 -1.300000
- L 8421504 0.050000 4.500000 -1.000000 4.500000 -1.300000
- L 8421504 0.050000 6.300000 -1.000000 6.300000 -1.300000
- L 8421504 0.050000 8.100000 -1.000000 8.100000 -1.300000
-END
-TURNOUT HO "Atlas C100 9"" Decorate Plate Girder Bridge (Various Roads) 70000001-70000012"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.000000 0.000000
- F 11579568 0.000000 4
- 0.000000 1.300000 0
- 9.000000 1.300000 0
- 9.000000 0.625000 0
- 0.000000 0.625000 0
- F 11579568 0.000000 4
- 0.000000 -1.300000 0
- 9.000000 -1.300000 0
- 9.000000 -0.625000 0
- 0.000000 -0.625000 0
- L 8421504 0.100000 0.000000 1.300000 9.000000 1.300000
- L 8421504 0.050000 0.900000 1.000000 0.900000 1.300000
- L 8421504 0.050000 2.700000 1.000000 2.700000 1.300000
- L 8421504 0.050000 4.500000 1.000000 4.500000 1.300000
- L 8421504 0.050000 6.300000 1.000000 6.300000 1.300000
- L 8421504 0.050000 8.100000 1.000000 8.100000 1.300000
- L 8421504 0.100000 0.000000 -1.300000 9.000000 -1.300000
- L 8421504 0.050000 0.900000 -1.000000 0.900000 -1.300000
- L 8421504 0.050000 2.700000 -1.000000 2.700000 -1.300000
- L 8421504 0.050000 4.500000 -1.000000 4.500000 -1.300000
- L 8421504 0.050000 6.300000 -1.000000 6.300000 -1.300000
- L 8421504 0.050000 8.100000 -1.000000 8.100000 -1.300000
-END
-
-#########################################################################################
-#########################################################################################
-SUBCONTENTS Atlas HO-Scale C100 - Turntable
-TURNOUT HO "Atlas Turntable 9"" Dia 15d 21 Positions 305" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- P "7" 7
- P "8" 8
- P "9" 9
- P "10" 10
- P "11" 11
- P "12" 12
- E 3.897114 -2.250000 120.000000
- E 3.181981 -3.181981 135.000000
- E 2.250000 -3.897114 150.000000
- E 1.164686 -4.346666 165.000000
- E 0.000000 -4.500000 180.000000
- E -1.164686 -4.346666 195.000000
- E -2.250000 -3.897114 210.000000
- E -3.181981 -3.181981 225.000000
- E -3.897114 -2.250000 240.000000
- E -4.346666 -1.164686 255.000000
- E -4.500000 0.000000 270.000000
- E -4.346666 1.164686 285.000000
- E -3.897114 2.250000 300.000000
- E -3.181981 3.181981 315.000000
- E -2.250000 3.897114 330.000000
- E -1.164686 4.346666 345.000000
- E 0.000000 4.500000 360.000000
- E 1.164686 4.346666 375.000000
- E 2.250000 3.897114 390.000000
- E 3.181981 3.181981 405.000000
- E 3.897114 2.250000 420.000000
- S 16777215 0 3.897114 -2.250000 -3.897114 2.250000
- S 16777215 0 3.181981 -3.181981 -3.181981 3.181981
- S 16777215 0 2.250000 -3.897114 -2.250000 3.897114
- S 16777215 0 1.164686 -4.346666 -1.164686 4.346666
- S 16777215 0 0.000000 -4.500000 0.000000 4.500000
- S 16777215 0 -1.164686 -4.346666 1.164686 4.346666
- S 16777215 0 -2.250000 -3.897114 2.250000 3.897114
- S 16777215 0 -3.181981 -3.181981 3.181981 3.181981
- S 16777215 0 -3.897114 -2.250000 3.897114 2.250000
- S 16777215 0 -4.346666 -1.164686 4.346666 1.164686
- S 16777215 0 -4.500000 0.000000 4.500000 0.000000
- S 16777215 0 -4.346666 1.164686 4.346666 -1.164686
- G 0 0.000000 0.500000 0.000000 0.000000 0.000000 360.000000
- A 0 0.031250 4.500000 0.000000 0.000000 0.000000 360.000000
- A 0 0.031250 5.000000 0.000000 0.000000 0.000000 360.000000
- L 0 0.031250 7.000000 1.750000 7.000000 -1.750000
- L 0 0.031250 4.625000 1.750000 7.000000 1.750000
- L 0 0.031250 4.625000 -1.750000 7.000000 -1.750000
-END
+CONTENTS Atlas Code 100 HO Scale
+#########################################################################################
+#########################################################################################
+SUBCONTENTS Atlas HO-Scale C100 - Crossings
+# Crossing Design by Dave Bullis - 6.000000 19.000000 6.000000
+#Updated Length
+TURNOUT HO "Atlas 19D Crossing 171"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 6.058858 0.000000 90.000000
+ E 0.165048 0.986286 289.000000
+ E 5.893810 -0.986286 109.000000
+ S 0 0 0.000000 0.000000 6.058858 0.000000
+ S 0 0 0.165048 0.986286 5.893810 -0.986286
+ END$SEGS
+# Crossing Design by Dave Bullis - 4.500000 25.000000 4.500000
+#Updated Length
+TURNOUT HO "Atlas 25D Crossing 172"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.620226 0.000000 90.000000
+ E 0.216440 0.976296 295.000000
+ E 4.403787 -0.976296 115.000000
+ S 0 0 0.000000 0.000000 4.620226 0.000000
+ S 0 0 0.216440 0.976296 4.403787 -0.976296e
+ END$SEGS
+# Crossing Design by Dave Bullis - 4.000000 30.000000 4.000000
+TURNOUT HO "Atlas 30D Crossing 173"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.000000 0.000000 90.000000
+ E 0.267949 0.999999 300.000000
+ E 3.732051 -0.999999 120.000000
+ S 0 0 0.000000 0.000000 4.000000 0.000000
+ S 0 0 0.267949 0.999999 3.732051 -0.999999
+ END$SEGS
+# Crossing Design by Dave Bullis - 3.000000 45.000000 3.000000
+TURNOUT HO "Atlas 45D Crossing 174"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 3.000000 0.000000 90.000000
+ E 0.439339 1.060659 315.000000
+ E 2.560661 -1.060659 135.000000
+ S 0 0 0.000000 0.000000 3.000000 0.000000
+ S 0 0 0.439339 1.060659 2.560661 -1.060659
+ END$SEGS
+# Crossing Design by Dave Bullis - 3.000000 60.000000 3.000000
+TURNOUT HO "Atlas 60D Crossing 175"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 3.000000 0.000000 90.000000
+ E 0.749999 1.299037 330.000000
+ E 2.250001 -1.299037 150.000000
+ S 0 0 0.000000 0.000000 3.000000 0.000000
+ S 0 0 0.749999 1.299037 2.250001 -1.299037
+ END$SEGS
+# Crossing Design by Dave Bullis - 6.000000 90.000000 6.000000
+TURNOUT HO "Atlas 90D Crossing 176"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 6.000000 0.000000 90.000000
+ E 2.999996 3.000000 0.000000
+ E 3.000004 -3.000000 180.000000
+ S 0 0 0.000000 0.000000 6.000000 0.000000
+ S 0 0 3.000000 3.000000 3.000000 -3.000000
+ END$SEGS
+# Crossing Design by Dave Bullis - 9.000000 12.500000 9.000000
+TURNOUT HO "Atlas 12.5D Crossing 177"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 0.106668 0.973977 282.500000
+ E 8.893332 -0.973977 102.500000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ S 0 0 0.106668 0.973977 8.893332 -0.973977
+ END$SEGS
+# Crossing Design by Dave Bullis - 6.000000 30.000000 6.000000
+TURNOUT HO "Atlas 30D Snap Crossing 839"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 6.000000 0.000000 90.000000
+ E 0.401923 1.499999 300.000000
+ E 5.598077 -1.499999 120.000000
+ S 0 0 0.000000 0.000000 6.000000 0.000000
+ S 0 0 0.401923 1.499999 5.598077 -1.499999
+ END$SEGS
+
+#########################################################################################
+#########################################################################################
+SUBCONTENTS Atlas HO-Scale C100 - Turnouts
+# Wye Turnout Design by Dave Bullis - 7.800000 0.670000 9.600000 9.600000 0.670000 7.800000
+TURNOUT HO "Atlas Mark IV/V Wye 280/390"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 7.800000 -0.670000 99.600000
+ E 7.800000 0.670000 80.400000
+ S 0 0 0.000000 0.000000 0.648600 0.000000
+ C 0 0 -37.990143 0.648701 37.990143 170.399924 9.600152
+ S 0 0 6.984263 0.532020 7.800000 0.670000
+ C 0 0 37.990143 0.648701 -37.990143 359.999924 9.600152
+ S 0 0 6.984263 -0.532020 7.800000 -0.670000
+ END$SEGS
+# Regular Turnout Design by Dave Bullis - 8.000000 1.000000 12.800000 9.000000
+# Updated to correct diverge angle
+TURNOUT HO "Atlas #4 Mark IV/V Left 281/391"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 8.000000 1.000000 77.500000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 9.000000 0.000000
+ C 0 0.000000 -25.929038 0.649600 25.929038 167.500000 12.500000
+ S 0 0.000000 6.261671 0.614622 8.000000 1.000000
+ END$SEGS
+TURNOUT HO "Atlas #4 Mark IV/V Right 282/392"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 8.000000 -1.000000 102.500000
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 9.000000 0.000000
+ C 0 0.000000 25.929038 0.649600 -25.929038 0.000000 12.500000
+ S 0 0.000000 6.261671 -0.614622 8.000000 -1.000000
+ END$SEGS
+# Regular Turnout Design by Dave Bullis - 10.000000 1.000000 9.500000 12.000000
+TURNOUT HO "Atlas #6 Mark IV/V Left 283/393"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 12.000000 0.000000 90.000000
+ E 10.000000 1.000000 80.500000
+ S 0 0 0.000000 0.000000 0.648600 0.000000
+ S 0 0 0.648600 0.000000 12.000000 0.000000
+ C 0 0 -40.624473 0.648708 40.624473 170.500000 9.500000
+ S 0 0 7.353673 0.557148 10.000000 1.000000
+ END$SEGS
+TURNOUT HO "Atlas #6 Mark IV/V Right 284/394"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 12.000000 0.000000 90.000000
+ E 10.000000 -1.000000 99.500000
+ S 0 0 0.000000 0.000000 0.648600 0.000000
+ S 0 0 0.648600 0.000000 12.000000 0.000000
+ C 0 0 40.624473 0.648708 -40.624473 0.000000 9.500000
+ S 0 0 7.353673 -0.557148 10.000000 -1.000000
+ END$SEGS
+TURNOUT HO "Atlas #8 Mark IV Left 285"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 13.500000 0.000000 90.000000
+ E 12.200000 1.000000 82.819238
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 13.500000 0.000000
+ C 0 0.000000 -57.585695 0.649676 57.585695 172.819162 7.180914
+ S 0 0.000000 7.847964 0.451679 12.200000 1.000000
+ END$SEGS
+TURNOUT HO "Atlas #8 Mark IV Right 286"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 13.500000 0.000000 90.000000
+ E 12.200000 -1.000000 97.180762
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 13.500000 0.000000
+ C 0 0.000000 57.585695 0.649371 -57.585695 0.000076 7.180914
+ S 0 0.000000 7.847964 -0.451679 12.200000 -1.000000
+ END$SEGS
+TURNOUT HO "Atlas Customline Mark IV Curve Left 287"
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 14.840000 3.960000 60.000000
+ E 13.320000 4.510000 52.500000
+ S 0 0.000000 0.000000 0.000000 0.683614 0.000000
+ C 0 0.000000 -19.910982 0.683641 19.910982 142.499924 37.500152
+ S 0 0.000000 12.804685 4.114563 13.320000 4.510000
+ C 0 0.000000 -27.133402 0.710757 27.133388 149.999867 30.057448
+ S 0 0.000000 14.277497 3.635217 14.840000 3.960000
+END$SEGS
+TURNOUT HO "Atlas Customline Mark IV Curve Right 288"
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 14.840000 -3.960000 120.000000
+ E 13.320000 -4.510000 127.500000
+ S 0 0.000000 0.000000 0.000000 0.683614 0.000000
+ C 0 0.000000 19.910982 0.683535 -19.910982 0.000076 37.500152
+ S 0 0.000000 12.804685 -4.114563 13.320000 -4.510000
+ C 0 0.000000 27.133402 0.710757 -27.133388 359.942837 30.057448
+ S 0 0.000000 14.277497 -3.635217 14.840000 -3.960000
+END$SEGS
+TURNOUT HO "Atlas Left Snap Switch 850"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 6.156363 1.085533 70.000000
+ S 0 0.000000 0.000000 0.000000 9.000000 0.000000
+ C 0 0.000000 -18.000000 0.000000 18.000000 160.000000 20.000000
+ END$SEGS
+TURNOUT HO "Atlas Right Snap Switch 851"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 6.156363 -1.085533 110.000000
+ S 0 0.000000 0.000000 0.000000 9.000000 0.000000
+ C 0 0.000000 18.000000 0.000000 -18.000000 0.000000 20.000000
+ END$SEGS
+TURNOUT HO "Atlas Left Snap Switch 850/15"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 4.658743 0.613335 75.000000
+ S 0 0.000000 0.000000 0.000000 9.000000 0.000000
+ C 0 0.000000 18.000000 0.000000 18.000000 165.000000 15.000000
+ END$SEGS
+TURNOUT HO "Atlas Right Snap Switch 851/15"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 4.658743 -0.613335 105.000000
+ S 0 0.000000 0.000000 0.000000 9.000000 0.000000
+ C 0 0.000000 18.000000 0.000000 -18.000000 0.000000 15.000000
+ END$SEGS
+
+#########################################################################################
+#########################################################################################
+SUBCONTENTS Atlas HO-Scale C100 - Straight Track
+TURNOUT HO "Atlas 0.75"" Straight 847a"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.750000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.750000 0.000000
+ END$SEGS
+TURNOUT HO "Atlas 1"" Straight 847b"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.000000 0.000000
+ END$SEGS
+TURNOUT HO "Atlas 1.25"" Straight 847c"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.250000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.250000 0.000000
+ END$SEGS
+TURNOUT HO "Atlas 1.5"" Straight 847d"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.500000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.500000 0.000000
+ END$SEGS
+TURNOUT HO "Atlas 2.0"" Straight 847e"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.000000 0.000000
+ END$SEGS
+# Straight Section Design by Dave Bullis - 2.500000
+TURNOUT HO "Atlas 2.5"" Straight 847f"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.500000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.500000 0.000000
+ END$SEGS
+# Straight Section Design by Dave Bullis - 3.000000
+TURNOUT HO "Atlas 3"" Straight 823"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.000000 0.000000
+ END$SEGS
+# Straight Section Design by Dave Bullis - 6.000000
+TURNOUT HO "Atlas 6"" Straight 822"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 6.000000 0.000000
+ END$SEGS
+# Straight Section Design by Dave Bullis - 9.000000
+TURNOUT HO "Atlas 9"" Straight 150/821"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ END$SEGS
+TURNOUT HO "Atlas 36"" Super-Flex 168/178"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 36.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 36.000000 0.000000
+ END$SEGS
+
+#########################################################################################
+#########################################################################################
+SUBCONTENTS Atlas HO-Scale C100 - Curve Track
+# Curved Section Design by Dave Bullis - 15.000000 30.000000
+TURNOUT HO "Atlas 15"" 30D Curve 151/831"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.500000 -2.009619 120.000000
+ C 0 0 15.000000 0.000000 -15.000000 0.000000 30.000000
+ END$SEGS
+TURNOUT HO "Atlas 15"" 15D Curve 832"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.882286 -0.511113 105.000000
+ C 0 0.000000 15.000000 0.000000 -15.000000 0.000000 15.000000
+ END$SEGS
+# Curved Section Design by Dave Bullis - 18.000000 30.000000
+TURNOUT HO "Atlas 18"" 30D Curve 152/833"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.999993 -2.411539 120.000000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 30.000000
+ END$SEGS
+# Curved Section Design by Dave Bullis - 18.000000 15.000000
+TURNOUT HO "Atlas 18"" 15D Curve 834"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.658739 -0.613334 105.000000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 15.000000
+ END$SEGS
+# Curved Section Design by Dave Bullis - 18.000000 10.000000
+TURNOUT HO "Atlas 18"" 10D Curve 835"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.125665 -0.273460 100.000000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 10.000000
+ END$SEGS
+# Curved Section Design by Dave Bullis - 22.000000 22.500000
+TURNOUT HO "Atlas 22"" 22.5D Curve 153/836"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.419029 -1.674647 112.500000
+ C 0 0 22.000000 0.000000 -22.000000 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Atlas 24"" 22.5D Curve 837"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.184402 -1.826891 112.500000
+ C 0 0 24.000000 0.000000 -24.000000 0.000000 22.500000
+ END$SEGS
+
+#########################################################################################
+#########################################################################################
+SUBCONTENTS Atlas HO-Scale C100 - Misc. Track
+TURNOUT HO "Atlas 9"" Straight Terminal 840"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ L3 16711680 0 3.800000 0.500000 0 3.800000 1.300000 0
+ L3 16711680 0 5.200000 0.500000 0 5.200000 1.300000 0
+ L3 16711680 0 3.800000 1.300000 0 5.200000 1.300000 0
+ A3 15611680 0 0.200000 4.100000 1.000000 0 0.000000 360.000000
+ A3 15611680 0 0.200000 4.900000 1.000000 0 0.000000 360.000000
+ END$SEGS
+TURNOUT HO "Atlas 9"" Rerailer 844"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ END$SEGS
+# Straight Section Design by Victor Bobier - 3.750000
+TURNOUT HO "Atlas Bumper Track 843"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 3.750000 0.000000
+ END$SEGS
+TURNOUT HO "Atlas 18"" 30D Curve Terminal 845"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.999993 -2.411539 120.000000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 30.000000
+ L3 16711680 0 0.500000 0.500000 0 0.500000 1.300000 0
+ L3 16711680 0 1.900000 0.500000 0 1.900000 1.300000 0
+ L3 16711680 0 0.500000 1.300000 0 1.900000 1.300000 0
+ A3 15611680 0 0.200000 0.800000 1.000000 0 0.000000 360.000000
+ A3 15611680 0 0.200000 1.600000 1.000000 0 0.000000 360.000000
+ END$SEGS
+
+#########################################################################################
+#########################################################################################
+SUBCONTENTS Atlas HO-Scale C100 - Bridges
+TURNOUT HO "Atlas C100 9"" Single-Track Thru-Girder Bridge 880"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 9.000000 0.000000
+ L3 11579568 0.100000 0.500000 1.000000 0 8.500000 1.000000 0
+ L3 11579568 0.050000 0.750000 1.000000 0 0.750000 0.625000 0
+ L3 11579568 0.050000 2.000000 1.000000 0 2.000000 0.625000 0
+ L3 11579568 0.050000 3.250000 1.000000 0 3.250000 0.625000 0
+ L3 11579568 0.050000 4.500000 1.000000 0 4.500000 0.625000 0
+ L3 11579568 0.050000 5.750000 1.000000 0 5.750000 0.625000 0
+ L3 11579568 0.050000 7.000000 1.000000 0 7.000000 0.625000 0
+ L3 11579568 0.050000 8.250000 1.000000 0 8.250000 0.625000 0
+ L3 11579568 0.100000 0.500000 -1.000000 0 8.500000 -1.000000 0
+ L3 11579568 0.050000 0.750000 -1.000000 0 0.750000 -0.625000 0
+ L3 11579568 0.050000 2.000000 -1.000000 0 2.000000 -0.625000 0
+ L3 11579568 0.050000 3.250000 -1.000000 0 3.250000 -0.625000 0
+ L3 11579568 0.050000 4.500000 -1.000000 0 4.500000 -0.625000 0
+ L3 11579568 0.050000 5.750000 -1.000000 0 5.750000 -0.625000 0
+ L3 11579568 0.050000 7.000000 -1.000000 0 7.000000 -0.625000 0
+ L3 11579568 0.050000 8.250000 -1.000000 0 8.250000 -0.625000 0
+END$SEGS
+TURNOUT HO "Atlas C100 9"" Double-Track Thru-Girder Bridge 881"
+ P "P0" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 0.000000 -2.000000 270.000000
+ E 9.000000 -2.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 9.000000 0.000000
+ S 0 0.000000 0.000000 -2.000000 9.000000 -2.000000
+ L3 11579568 0.100000 0.500000 1.000000 0 8.500000 1.000000 0
+
+ L3 11579568 0.050000 0.750000 1.000000 0 0.750000 0.625000 0
+ L3 11579568 0.050000 2.000000 1.000000 0 2.000000 0.625000 0
+ L3 11579568 0.050000 3.250000 1.000000 0 3.250000 0.625000 0
+ L3 11579568 0.050000 4.500000 1.000000 0 4.500000 0.625000 0
+ L3 11579568 0.050000 5.750000 1.000000 0 5.750000 0.625000 0
+ L3 11579568 0.050000 7.000000 1.000000 0 7.000000 0.625000 0
+ L3 11579568 0.050000 8.250000 1.000000 0 8.250000 0.625000 0
+
+ L3 11579568 0.050000 0.750000 -1.000000 0 0.750000 -0.625000 0
+ L3 11579568 0.050000 2.000000 -1.000000 0 2.000000 -0.625000 0
+ L3 11579568 0.050000 3.250000 -1.000000 0 3.250000 -0.625000 0
+ L3 11579568 0.050000 4.500000 -1.000000 0 4.500000 -0.625000 0
+ L3 11579568 0.050000 5.750000 -1.000000 0 5.750000 -0.625000 0
+ L3 11579568 0.050000 7.000000 -1.000000 0 7.000000 -0.625000 0
+ L3 11579568 0.050000 8.250000 -1.000000 0 8.250000 -0.625000 0
+
+ L3 11579568 0.100000 0.500000 -1.000000 0 8.500000 -1.000000 0
+
+ L3 11579568 0.050000 0.750000 -1.000000 0 0.750000 -1.375000 0
+ L3 11579568 0.050000 2.000000 -1.000000 0 2.000000 -1.375000 0
+ L3 11579568 0.050000 3.250000 -1.000000 0 3.250000 -1.375000 0
+ L3 11579568 0.050000 4.500000 -1.000000 0 4.500000 -1.375000 0
+ L3 11579568 0.050000 5.750000 -1.000000 0 5.750000 -1.375000 0
+ L3 11579568 0.050000 7.000000 -1.000000 0 7.000000 -1.375000 0
+ L3 11579568 0.050000 8.250000 -1.000000 0 8.250000 -1.375000 0
+
+ L3 11579568 0.050000 0.750000 -3.000000 0 0.750000 -2.625000 0
+ L3 11579568 0.050000 2.000000 -3.000000 0 2.000000 -2.625000 0
+ L3 11579568 0.050000 3.250000 -3.000000 0 3.250000 -2.625000 0
+ L3 11579568 0.050000 4.500000 -3.000000 0 4.500000 -2.625000 0
+ L3 11579568 0.050000 5.750000 -3.000000 0 5.750000 -2.625000 0
+ L3 11579568 0.050000 7.000000 -3.000000 0 7.000000 -2.625000 0
+ L3 11579568 0.050000 8.250000 -3.000000 0 8.250000 -2.625000 0
+
+ L3 11579568 0.100000 0.500000 -3.000000 0 8.500000 -3.000000 0
+END$SEGS
+TURNOUT HO "Atlas C100 9"" Single-Track Add-On Thru-Girder Bridge 882"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 9.000000 0.000000
+ #L3 11579568 0.100000 0.500000 1.000000 0 8.500000 1.000000 0
+ L3 11579568 0.050000 0.750000 1.000000 0 0.750000 0.625000 0
+ L3 11579568 0.050000 2.000000 1.000000 0 2.000000 0.625000 0
+ L3 11579568 0.050000 3.250000 1.000000 0 3.250000 0.625000 0
+ L3 11579568 0.050000 4.500000 1.000000 0 4.500000 0.625000 0
+ L3 11579568 0.050000 5.750000 1.000000 0 5.750000 0.625000 0
+ L3 11579568 0.050000 7.000000 1.000000 0 7.000000 0.625000 0
+ L3 11579568 0.050000 8.250000 1.000000 0 8.250000 0.625000 0
+ L3 11579568 0.100000 0.500000 -1.000000 0 8.500000 -1.000000 0
+ L3 11579568 0.050000 0.750000 -1.000000 0 0.750000 -0.625000 0
+ L3 11579568 0.050000 2.000000 -1.000000 0 2.000000 -0.625000 0
+ L3 11579568 0.050000 3.250000 -1.000000 0 3.250000 -0.625000 0
+ L3 11579568 0.050000 4.500000 -1.000000 0 4.500000 -0.625000 0
+ L3 11579568 0.050000 5.750000 -1.000000 0 5.750000 -0.625000 0
+ L3 11579568 0.050000 7.000000 -1.000000 0 7.000000 -0.625000 0
+ L3 11579568 0.050000 8.250000 -1.000000 0 8.250000 -0.625000 0
+END$SEGS
+TURNOUT HO "Atlas C100 9"" Warren Truss Bridge 883"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ F4 11579568 0.000000 4 0
+ 0.000000 1.200000 0
+ 9.000000 1.200000 0
+ 9.000000 0.625000 0
+ 0.000000 0.625000 0
+ F4 11579568 0.000000 4 0
+ 0.000000 -1.200000 0
+ 9.000000 -1.200000 0
+ 9.000000 -0.625000 0
+ 0.000000 -0.625000 0
+ L3 8421504 0.100000 0.000000 1.200000 0 9.000000 1.200000 0
+ L3 8421504 0.100000 0.000000 -1.200000 0 9.000000 -1.200000 0
+ END$SEGS
+TURNOUT HO "Atlas C100 9"" Deck Truss Bridge 884"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ L3 11579568 0.050000 0.000000 0.700000 0 9.000000 0.700000 0
+ L3 11579568 0.050000 0.000000 0.600000 0 0.000000 0.700000 0
+ L3 11579568 0.050000 9.000000 0.600000 0 9.000000 0.700000 0
+ L3 11579568 0.050000 0.000000 -0.700000 0 9.000000 -0.700000 0
+ L3 11579568 0.050000 0.000000 -0.600000 0 0.000000 -0.700000 0
+ L3 11579568 0.050000 9.000000 -0.600000 0 9.000000 -0.700000 0
+ END$SEGS
+TURNOUT HO "Atlas C100 9"" Plate Girder Bridge 885"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ F4 11579568 0.000000 4 0
+ 0.000000 1.300000 0
+ 9.000000 1.300000 0
+ 9.000000 0.625000 0
+ 0.000000 0.625000 0
+ F4 11579568 0.000000 4 0
+ 0.000000 -1.300000 0
+ 9.000000 -1.300000 0
+ 9.000000 -0.625000 0
+ 0.000000 -0.625000 0
+ L3 8421504 0.100000 0.000000 1.300000 0 9.000000 1.300000 0
+ L3 8421504 0.050000 0.900000 1.000000 0 0.900000 1.300000 0
+ L3 8421504 0.050000 2.700000 1.000000 0 2.700000 1.300000 0
+ L3 8421504 0.050000 4.500000 1.000000 0 4.500000 1.300000 0
+ L3 8421504 0.050000 6.300000 1.000000 0 6.300000 1.300000 0
+ L3 8421504 0.050000 8.100000 1.000000 0 8.100000 1.300000 0
+ L3 8421504 0.100000 0.000000 -1.300000 0 9.000000 -1.300000 0
+ L3 8421504 0.050000 0.900000 -1.000000 0 0.900000 -1.300000 0
+ L3 8421504 0.050000 2.700000 -1.000000 0 2.700000 -1.300000 0
+ L3 8421504 0.050000 4.500000 -1.000000 0 4.500000 -1.300000 0
+ L3 8421504 0.050000 6.300000 -1.000000 0 6.300000 -1.300000 0
+ L3 8421504 0.050000 8.100000 -1.000000 0 8.100000 -1.300000 0
+ END$SEGS
+TURNOUT HO "Atlas C100 18"" Through Truss Bridge 888/889"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 18.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 18.000000 0.000000
+ L3 11579568 0.050000 0.000000 1.200000 0 18.000000 1.200000 0
+ L3 11579568 0.050000 0.000000 0.750000 0 0.000000 1.200000 0
+ L3 11579568 0.050000 18.000000 0.750000 0 18.000000 1.200000 0
+ L3 11579568 0.050000 0.000000 -1.200000 0 18.000000 -1.200000 0
+ L3 11579568 0.050000 0.000000 -0.750000 0 0.000000 -1.200000 0
+ L3 11579568 0.050000 18.000000 -0.750000 0 18.000000 -1.200000 0
+ L3 11579568 0.050000 3.000000 -1.200000 0 3.000000 1.200000 0
+ L3 11579568 0.050000 6.000000 -1.200000 0 6.000000 1.200000 0
+ L3 11579568 0.050000 9.000000 -1.200000 0 9.000000 1.200000 0
+ L3 11579568 0.050000 12.000000 -1.200000 0 12.000000 1.200000 0
+ L3 11579568 0.050000 15.000000 -1.200000 0 15.000000 1.200000 0
+ L3 11579568 0.050000 3.000000 -1.200000 0 6.000000 1.200000 0
+ L3 11579568 0.050000 3.000000 1.200000 0 6.000000 -1.200000 0
+ L3 11579568 0.050000 6.000000 -1.200000 0 9.000000 1.200000 0
+ L3 11579568 0.050000 6.000000 1.200000 0 9.000000 -1.200000 0
+ L3 11579568 0.050000 9.000000 -1.200000 0 12.000000 1.200000 0
+ L3 11579568 0.050000 9.000000 1.200000 0 12.000000 -1.200000 0
+ L3 11579568 0.050000 12.000000 -1.200000 0 15.000000 1.200000 0
+ L3 11579568 0.050000 12.000000 1.200000 0 15.000000 -1.200000 0
+ END$SEGS
+TURNOUT HO "Atlas C100 9"" Decorate Plate Girder Bridge (Various Roads) 890-898"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ F4 11579568 0.000000 4 0
+ 0.000000 1.300000 0
+ 9.000000 1.300000 0
+ 9.000000 0.625000 0
+ 0.000000 0.625000 0
+ F4 11579568 0.000000 4 0
+ 0.000000 -1.300000 0
+ 9.000000 -1.300000 0
+ 9.000000 -0.625000 0
+ 0.000000 -0.625000 0
+ L3 8421504 0.100000 0.000000 1.300000 0 9.000000 1.300000 0
+ L3 8421504 0.050000 0.900000 1.000000 0 0.900000 1.300000 0
+ L3 8421504 0.050000 2.700000 1.000000 0 2.700000 1.300000 0
+ L3 8421504 0.050000 4.500000 1.000000 0 4.500000 1.300000 0
+ L3 8421504 0.050000 6.300000 1.000000 0 6.300000 1.300000 0
+ L3 8421504 0.050000 8.100000 1.000000 0 8.100000 1.300000 0
+ L3 8421504 0.100000 0.000000 -1.300000 0 9.000000 -1.300000 0
+ L3 8421504 0.050000 0.900000 -1.000000 0 0.900000 -1.300000 0
+ L3 8421504 0.050000 2.700000 -1.000000 0 2.700000 -1.300000 0
+ L3 8421504 0.050000 4.500000 -1.000000 0 4.500000 -1.300000 0
+ L3 8421504 0.050000 6.300000 -1.000000 0 6.300000 -1.300000 0
+ L3 8421504 0.050000 8.100000 -1.000000 0 8.100000 -1.300000 0
+END$SEGS
+TURNOUT HO "Atlas C100 9"" Decorate Plate Girder Bridge (Various Roads) 70000001-70000012"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ F4 11579568 0.000000 4 0
+ 0.000000 1.300000 0
+ 9.000000 1.300000 0
+ 9.000000 0.625000 0
+ 0.000000 0.625000 0
+ F4 11579568 0.000000 4 0
+ 0.000000 -1.300000 0
+ 9.000000 -1.300000 0
+ 9.000000 -0.625000 0
+ 0.000000 -0.625000 0
+ L3 8421504 0.100000 0.000000 1.300000 0 9.000000 1.300000 0
+ L3 8421504 0.050000 0.900000 1.000000 0 0.900000 1.300000 0
+ L3 8421504 0.050000 2.700000 1.000000 0 2.700000 1.300000 0
+ L3 8421504 0.050000 4.500000 1.000000 0 4.500000 1.300000 0
+ L3 8421504 0.050000 6.300000 1.000000 0 6.300000 1.300000 0
+ L3 8421504 0.050000 8.100000 1.000000 0 8.100000 1.300000 0
+ L3 8421504 0.100000 0.000000 -1.300000 0 9.000000 -1.300000 0
+ L3 8421504 0.050000 0.900000 -1.000000 0 0.900000 -1.300000 0
+ L3 8421504 0.050000 2.700000 -1.000000 0 2.700000 -1.300000 0
+ L3 8421504 0.050000 4.500000 -1.000000 0 4.500000 -1.300000 0
+ L3 8421504 0.050000 6.300000 -1.000000 0 6.300000 -1.300000 0
+ L3 8421504 0.050000 8.100000 -1.000000 0 8.100000 -1.300000 0
+END$SEGS
+
+#########################################################################################
+#########################################################################################
+SUBCONTENTS Atlas HO-Scale C100 - Turntable
+TURNOUT HO "Atlas Turntable 9"" Dia 15d 21 Positions 305" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ E 3.897114 -2.250000 120.000000
+ E 3.181981 -3.181981 135.000000
+ E 2.250000 -3.897114 150.000000
+ E 1.164686 -4.346666 165.000000
+ E 0.000000 -4.500000 180.000000
+ E -1.164686 -4.346666 195.000000
+ E -2.250000 -3.897114 210.000000
+ E -3.181981 -3.181981 225.000000
+ E -3.897114 -2.250000 240.000000
+ E -4.346666 -1.164686 255.000000
+ E -4.500000 0.000000 270.000000
+ E -4.346666 1.164686 285.000000
+ E -3.897114 2.250000 300.000000
+ E -3.181981 3.181981 315.000000
+ E -2.250000 3.897114 330.000000
+ E -1.164686 4.346666 345.000000
+ E 0.000000 4.500000 360.000000
+ E 1.164686 4.346666 375.000000
+ E 2.250000 3.897114 390.000000
+ E 3.181981 3.181981 405.000000
+ E 3.897114 2.250000 420.000000
+ S 16777215 0 3.897114 -2.250000 -3.897114 2.250000
+ S 16777215 0 3.181981 -3.181981 -3.181981 3.181981
+ S 16777215 0 2.250000 -3.897114 -2.250000 3.897114
+ S 16777215 0 1.164686 -4.346666 -1.164686 4.346666
+ S 16777215 0 0.000000 -4.500000 0.000000 4.500000
+ S 16777215 0 -1.164686 -4.346666 1.164686 4.346666
+ S 16777215 0 -2.250000 -3.897114 2.250000 3.897114
+ S 16777215 0 -3.181981 -3.181981 3.181981 3.181981
+ S 16777215 0 -3.897114 -2.250000 3.897114 2.250000
+ S 16777215 0 -4.346666 -1.164686 4.346666 1.164686
+ S 16777215 0 -4.500000 0.000000 4.500000 0.000000
+ S 16777215 0 -4.346666 1.164686 4.346666 -1.164686
+ G3 0 0.000000 0.500000 0.000000 0.000000 0 0.000000 360.000000
+ A3 0 0.031250 4.500000 0.000000 0.000000 0 0.000000 360.000000
+ A3 0 0.031250 5.000000 0.000000 0.000000 0 0.000000 360.000000
+ L3 0 0.031250 7.000000 1.750000 0 7.000000 -1.750000 0
+ L3 0 0.031250 4.625000 1.750000 0 7.000000 1.750000 0
+ L3 0 0.031250 4.625000 -1.750000 0 7.000000 -1.750000 0
+END$SEGS
diff --git a/app/lib/params/HO-AtlasTrainKidsTrk.xtp b/app/lib/params/HO-AtlasTrainKidsTrk.xtp
new file mode 100644
index 0000000..179f44d
--- /dev/null
+++ b/app/lib/params/HO-AtlasTrainKidsTrk.xtp
@@ -0,0 +1,99 @@
+CONTENTS Atlas Trainkids Track Components
+
+SUBCONTENTS Altas Trainkids Track - Straight Track
+TURNOUT HO "Altas Trainkids Track Straight 9in 15000005"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ L3 11579568 0.040000 0.000000 0.984252 0 9.000000 0.984252 0
+ L3 11579568 0.040000 0.000000 -0.984252 0 9.000000 -0.984252 0
+ END$SEGS
+
+
+SUBCONTENTS Altas Trainkids Track - Curve Track
+TURNOUT HO "Altas Trainkids Track Curved 18in 30d 15000006/07"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 -2.411543 120.000000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 30.000000
+ A3 11579568 0.040000 18.984252 0.000000 -18.000000 0 0.000000 30.000000
+ A3 11579568 0.040000 17.015748 0.000000 -18.000000 0 0.000000 30.000000
+ END$SEGS
+
+
+SUBCONTENTS Altas Trainkids Track - Track Turnouts
+TURNOUT HO "Altas Trainkids Track Left Hand Turnout 15000008/07"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 9.00000 2.411543 60.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ C 0 0 -18.000000 0.000000 18.000000 150.000000 30.000000
+ A3 11579568 0.040000 17.015748 0.000000 18.000000 0 150.000000 30.000000
+ A3 11579568 0.040000 18.984252 0.000000 18.000000 0 150.000000 3.750000
+ L3 11579568 0.040000 8.375000 0.984252 0 9.000000 0.984252 0
+ L3 11579568 0.040000 0.000000 -0.984252 0 9.000000 -0.984252 0
+ END$SEGS
+TURNOUT HO "Altas Trainkids Track Right Hand Turnout 15000009"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 9.00000 -2.411543 120.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 30.000000
+ A3 11579568 0.040000 17.015748 0.000000 -18.000000 0 0.000000 30.000000
+ A3 11579568 0.040000 18.984252 0.000000 -18.000000 0 26.250000 3.750000
+ L3 11579568 0.040000 8.375000 -0.984252 0 9.000000 -0.984252 0
+ L3 11579568 0.040000 0.000000 0.984252 0 9.000000 0.984252 0
+ END$SEGS
+
+
+
+SUBCONTENTS Altas Trainkids Track - Misc Track
+TURNOUT HO "Altas Trainkids Track Crossing 30d 150000xx"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 9.646171 0.000000 90.000000
+ E 0.646171 2.411543 300.000000
+ E 9.000000 -2.411543 120.000000
+ S 0 0 0.000000 0.000000 9.646171 0.000000
+ S 0 0 0.646171 2.411543 9.000000 -2.411543
+ L3 11579568 0.040000 0.000000 0.984252 0 1.149807 0.984252 0
+ L3 11579568 0.040000 5.086815 0.984252 0 9.646171 0.984252 0
+ L3 11579568 0.040000 0.000000 -0.984252 0 4.559356 -0.984252 0
+ L3 11579568 0.040000 8.496364 -0.984252 0 9.646171 -0.984252 0
+ L3 11579568 0.040000 1.138297 3.263930 0 5.086815 0.984252 0
+ L3 11579568 0.040000 8.496364 -0.984252 0 9.492126 -1.559155 0
+ L3 11579568 0.040000 0.154045 1.559155 0 1.149807 0.984252 0
+ L3 11579568 0.040000 4.559356 -0.984252 0 8.507874 -3.263930 0
+ END$SEGS
+TURNOUT HO "Altas Trainkids Track Rerailer 15000010"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ L3 11579568 0.040000 0.000000 0.984252 0 9.000000 0.984252 0
+ L3 11579568 0.040000 0.000000 -0.984252 0 9.000000 -0.984252 0
+ F4 12566463 0.000000 4 0
+ 2.000000 0.984252 0 0
+ 3.000000 0.384375 0 0
+ 6.000000 0.384375 0 0
+ 7.000000 0.984252 0 0
+ F4 12566463 0.000000 6 0
+ 2.000000 0.000000 0 0
+ 3.000000 -0.250000 0 0
+ 6.000000 -0.250000 0 0
+ 7.000000 0.000000 0 0
+ 6.000000 0.250000 0 0
+ 3.000000 0.250000 0 0
+ F4 12566463 0.000000 4 0
+ 2.000000 -0.984252 0 0
+ 3.000000 -0.384375 0 0
+ 6.000000 -0.384375 0 0
+ 7.000000 -0.984252 0 0
+ END$SEGS
+
+
diff --git a/app/lib/params/HO-Bachmann EZ.xtp b/app/lib/params/HO-Bachmann EZ.xtp
index 2754fa8..5d677bc 100644
--- a/app/lib/params/HO-Bachmann EZ.xtp
+++ b/app/lib/params/HO-Bachmann EZ.xtp
@@ -1,705 +1,705 @@
-CONTENTS Bachmann E-Z Track Components
-
-SUBCONTENTS Bachmann E-Z Track - Straight Track
-TURNOUT HO "Bachmann E-Z Track Straight 2.25in 44513"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.250000 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.250000 0.000000
- L 11579568 0.053333 0.000000 0.984375 2.250000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 2.250000 -0.984375
- END
-TURNOUT HO "Bachmann E-Z Track Straight 3in 44512/44412"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 3.000000 0.000000
- L 11579568 0.053333 0.000000 0.984375 3.000000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 3.000000 -0.984375
- END
-TURNOUT HO "Bachmann E-Z Track Straight 4.5in 44514"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.500000 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.500000 0.000000
- L 11579568 0.053333 0.000000 0.984375 4.500000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 4.500000 -0.984375
- END
-TURNOUT HO "Bachmann E-Z Track Straight 9in 44511/44411"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.000000 0.000000
- L 11579568 0.053333 0.000000 0.984375 9.000000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 9.000000 -0.984375
- END
-TURNOUT HO "Bachmann E-Z Track Straight 36in 44584"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 36.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 36.000000 0.000000
- L 11579568 0.053333 0.000000 0.984375 36.000000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 36.000000 -0.984375
- END
-TURNOUT HO "Bachmann E-Z Track Straight 2in 44592A"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.000000 0.000000
- L 11579568 0.053333 0.000000 0.984375 2.000000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 2.000000 -0.984375
- END
-TURNOUT HO "Bachmann E-Z Track Straight 1.5in 44592B"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.500000 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.500000 0.000000
- L 11579568 0.053333 0.000000 0.984375 1.500000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 1.500000 -0.984375
- END
-TURNOUT HO "Bachmann E-Z Track Straight 1.25in 44592C"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.250000 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.250000 0.000000
- L 11579568 0.053333 0.000000 0.984375 1.250000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 1.250000 -0.984375
- END
-TURNOUT HO "Bachmann E-Z Track Straight 1in 44592D"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.000000 0.000000
- L 11579568 0.053333 0.000000 0.984375 1.000000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 1.000000 -0.984375
- END
-TURNOUT HO "Bachmann E-Z Track Straight 0.75in 44592E"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.750000 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.7500000 0.000000
- L 11579568 0.053333 0.000000 0.984375 0.750000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 0.750000 -0.984375
- END
-
-
-
-SUBCONTENTS Bachmann E-Z Track - Curve Track
-TURNOUT HO "Bachmann E-Z Track Curved 15in 30° 44505"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.500000 -2.009619 120.000000
- C 0 0 15.000000 0.000000 -15.000000 0.000000 30.000000
- A 11579568 0.053333 15.984375 0.000000 -15.000000 0.000000 30.000000
- A 11579568 0.053333 14.015625 0.000000 -15.000000 0.000000 30.000000
- END
-TURNOUT HO "Bachmann E-Z Track Curved 18in 30° 44501/44401"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 -2.411543 120.000000
- C 0 0 18.000000 0.000000 -18.000000 0.000000 30.000000
- A 11579568 0.053333 18.984375 0.000000 -18.000000 0.000000 30.000000
- A 11579568 0.053333 17.015625 0.000000 -18.000000 0.000000 30.000000
- END
-TURNOUT HO "Bachmann E-Z Track Curved 18in 15° 44531"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.658743 -0.613335 105.000000
- C 0 0 18.000000 0.000000 -18.000000 0.000000 15.000000
- A 11579568 0.053333 18.984375 0.000000 -18.000000 0.000000 15.000000
- A 11579568 0.053333 17.015625 0.000000 -18.000000 0.000000 15.000000
- END
-TURNOUT HO "Bachmann E-Z Track Curved 18in 10° 44530"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.125667 -0.273460 100.000000
- C 0 0 18.000000 0.000000 -18.000000 0.000000 10.000000
- A 11579568 0.053333 18.984375 0.000000 -18.000000 0.000000 10.000000
- A 11579568 0.053333 17.015625 0.000000 -18.000000 0.000000 10.000000
- END
-TURNOUT HO "Bachmann E-Z Track Curved 22in 22.5° 44503/44403"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.419036 -1.674650 112.500000
- C 0 0 22.000000 0.000000 -22.000000 0.000000 22.500000
- A 11579568 0.053333 22.984375 0.000000 -22.000000 0.000000 22.500000
- A 11579568 0.053333 21.015625 0.000000 -22.000000 0.000000 22.500000
- END
-TURNOUT HO "Bachmann E-Z Track Curved 22in 11.25° 44532"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.291987 -0.422724 101.250000
- C 0 0 22.000000 0.000000 -22.000000 0.000000 11.250000
- A 11579568 0.053333 22.984375 0.000000 -22.000000 0.000000 11.250000
- A 11579568 0.053333 21.015625 0.000000 -22.000000 0.000000 11.250000
- END
-TURNOUT HO "Bachmann E-Z Track Curved 26in 18° 44519"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.034442 -1.272531 108.000000
- C 0 0 26.000000 0.000000 -26.000000 0.000000 18.000000
- A 11579568 0.053333 26.984375 0.000000 -26.000000 0.000000 18.000000
- A 11579568 0.053333 25.015625 0.000000 -26.000000 0.000000 18.000000
- END
-TURNOUT HO "Bachmann E-Z Track Curved 28in 18° 44506"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.652476 -1.370418 108.000000
- C 0 0 28.000000 0.000000 -28.000000 0.000000 18.000000
- A 11579568 0.053333 28.984375 0.000000 -28.000000 0.000000 18.000000
- A 11579568 0.053333 27.015625 0.000000 -28.000000 0.000000 18.000000
- END
-TURNOUT HO "Bachmann E-Z Track Curved 33.25in 18° 44504"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.274815 -1.627371 108.000000
- C 0 0 33.250000 0.000000 -33.250000 0.000000 18.000000
- A 11579568 0.053333 34.234375 0.000000 -33.250000 0.000000 18.000000
- A 11579568 0.053333 32.265625 0.000000 -33.250000 0.000000 18.000000
- END
-TURNOUT HO "Bachmann E-Z Track Curved 33.25in 12° 44509"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.913064 -0.726592 102.000000
- C 0 0 33.250000 0.000000 -33.250000 0.000000 12.000000
- A 11579568 0.053333 34.234375 0.000000 -33.250000 0.000000 12.000000
- A 11579568 0.053333 32.265625 0.000000 -33.250000 0.000000 12.000000
- END
-TURNOUT HO "Bachmann E-Z Track Curved 33.25in 6° 44508"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.475571 -0.182147 96.000000
- C 0 0 33.250000 0.000000 -33.250000 0.000000 6.000000
- A 11579568 0.053333 34.234375 0.000000 -33.250000 0.000000 6.000000
- A 11579568 0.053333 32.265625 0.000000 -33.250000 0.000000 6.000000
- END
-TURNOUT HO "Bachmann E-Z Track Curved 35.5in 18° 44507"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.970103 -1.737494 108.000000
- C 0 0 35.500000 0.000000 -35.500000 0.000000 18.000000
- A 11579568 0.053333 36.484375 0.000000 -35.500000 0.000000 18.000000
- A 11579568 0.053333 34.515625 0.000000 -35.500000 0.000000 18.000000
- END
-
-
-
-
-
-
-SUBCONTENTS Bachmann E-Z Track - Track Turnouts
-TURNOUT HO "Bachmann E-Z Track Left Snap Manual Turnout 44130/44561/44461"
- P "Normal" 1 2
- P "Reverse" 1 3
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- E 10.375000 2.411543 60.000000
- S 0 0 0.000000 0.000000 1.375000 0.000000
- S 0 0 1.375000 0.000000 9.000000 0.000000
- C 0 0 -18.000000 1.375000 18.000000 150.000000 30.000000
- A 11579568 0.053333 17.015625 1.375000 18.000000 150.000000 30.000000
- A 11579568 0.053333 18.984375 1.375000 18.000000 150.000000 3.800000
- L 11579568 0.053333 0.000000 0.984375 1.375000 0.984375
- L 11579568 0.053333 9.000000 0.984375 9.750000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 9.000000 -0.984375
- END
-TURNOUT HO "Bachmann E-Z Track Right Snap Manual Turnout 44131/44562/44462"
- P "Normal" 1 2
- P "Reverse" 1 3
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- E 10.375000 -2.411543 120.000000
- S 0 0 0.000000 0.000000 1.375000 0.000000
- S 0 0 1.375000 0.000000 9.000000 0.000000
- C 0 0 18.000000 1.375000 -18.000000 0.000000 30.000000
- A 11579568 0.053333 17.015625 1.375000 -18.000000 0.000000 30.000000
- A 11579568 0.053333 18.984375 1.375000 -18.000000 26.000000 3.800000
- L 11579568 0.053333 0.000000 -0.984375 1.375000 -0.984375
- L 11579568 0.053333 9.000000 -0.984375 9.750000 -0.984375
- L 11579568 0.053333 0.000000 0.984375 9.000000 0.984375
- END
-TURNOUT HO "Bachmann E-Z Track #4 Left Turnout 44139/44557"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 10.000000 0.000000 90.000000
- E 9.781250 1.593750 76.000000
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 10.000000 0.000000
- C 0 0.000000 -22.311590 0.649630 22.311590 165.999924 14.000152
- S 0 0.000000 6.047315 0.662763 9.781250 1.593750
- L3 0 0.000000 -0.000003 -0.984375 0 9.999997 -0.984363 0
- L3 0 0.000000 0.000000 0.984375 0 0.649600 0.984376 0
- A3 0 0.000000 21.327215 0.649630 22.311590 0 165.999924 14.000152
- L3 0 0.000000 5.809171 1.617897 0 9.543106 2.548884 0
- L3 0 0.000000 -0.000001 -0.492187 0 9.999999 -0.492175 0
- L3 0 0.000000 0.000000 0.492188 0 0.649600 0.492188 0
- L3 0 0.000000 7.370200 0.492196 0 10.000000 0.492200 0
- A3 0 0.000000 21.819402 0.649630 22.311590 0 165.999924 14.000152
- L3 0 0.000000 7.449928 0.505223 0 9.900323 1.116183 0
- L3 0 0.000000 5.928243 1.140330 0 9.662178 2.071317 0
- END$SEGS
-TURNOUT HO "Bachmann E-Z Track #4 Right Turnout 44140/44558"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 10.000000 0.000000 90.000000
- E 9.781250 -1.593750 104.000000
- S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
- S 0 0.000000 0.649600 -0.000000 10.000000 0.000000
- C 0 0.000000 22.311590 0.649511 -22.311590 0.000076 14.000152
- S 0 0.000000 6.047315 -0.662763 9.781250 -1.593750
- L3 0 0.000000 -0.000003 -0.984375 0 0.649597 -0.984374 0
- L3 0 0.000000 0.000000 0.984375 0 10.000000 0.984387 0
- A3 0 0.000000 21.327215 0.649511 -22.311590 0 0.000076 14.000152
- L3 0 0.000000 5.809166 -1.617896 0 9.543101 -2.548883 0
- L3 0 0.000000 -0.000001 -0.492187 0 0.649599 -0.492187 0
- L3 0 0.000000 0.000000 0.492188 0 10.000000 0.492200 0
- L3 0 0.000000 7.370199 -0.492179 0 9.999999 -0.492175 0
- A3 0 0.000000 21.819402 0.649511 -22.311590 0 0.000076 14.000152
- L3 0 0.000000 5.928241 -1.140329 0 9.662176 -2.071317 0
- L3 0 0.000000 7.449928 -0.505223 0 9.900323 -1.116183 0
- END$SEGS
-TURNOUT HO "Bachmann E-Z Track #5 Left Turnout 44132/44565"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 11.500000 0.000000 90.000000
- E 11.340000 1.620000 78.463031
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 11.500000 0.000000
- C 0 0.000000 -27.263067 0.649636 27.263067 168.462955 11.537121
- S 0 0.000000 6.102284 0.550840 11.340000 1.620000
- L 11579568 0.053333 -0.000003 -0.984375 11.499997 -0.984361 0
- L 11579568 0.053333 0.000000 0.984375 0.649600 0.984376 0
- A 11579568 0.053333 26.278692 0.649636 27.263067 168.462955 11.537121
- L 11579568 0.053333 5.905408 1.515327 11.143124 2.584486 0
- END
-TURNOUT HO "Bachmann E-Z Track #5 Right Turnout 44133/44566"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 11.500000 0.000000 90.000000
- E 11.340000 -1.620000 101.536969
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 11.500000 0.000000
- C 0 0.000000 27.263067 0.649491 -27.263067 0.000076 11.537121
- S 0 0.000000 6.102284 -0.550840 11.340000 -1.620000
- L 11579568 0.053333 -0.000003 -0.984375 0.649597 -0.984374 0
- L 11579568 0.053333 0.000000 0.984375 11.500000 0.984389 0
- A 11579568 0.053333 26.278692 0.649491 -27.263067 0.000076 11.537121
- L 11579568 0.053333 5.905403 -1.515326 11.143118 -2.584485 0
- END
-TURNOUT HO "Bachmann E-Z Track #5 Wye Turnout 44134/44569"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 11.340000 0.762000 78.463031
- E 11.340000 -0.762000 101.536969
- S 0 0.000000 0.000000 0.000000 4.446728 0.000000
- C 0 0.000000 -31.283990 4.446769 31.283990 168.462955 11.537121
- S 0 0.000000 10.703607 0.632082 11.340000 0.762000
- C 0 0.000000 31.283990 4.446603 -31.283990 0.000076 11.537121
- S 0 0.000000 10.703607 -0.632082 11.340000 -0.762000
- L 11579568 0.053333 -0.000003 -0.984375 4.446725 -0.984369 0
- L 11579568 0.053333 0.000000 0.984375 4.446728 0.984381 0
- A 11579568 0.053333 30.299615 4.446769 31.283990 168.462955 11.537121
- L 11579568 0.053333 10.506711 1.596564 11.143104 1.726482 0
- A 11579568 0.053333 30.299615 4.446603 -31.283990 0.000076 11.537121
- L 11579568 0.053333 10.506706 -1.596563 11.143099 -1.726481 0
- END
-TURNOUT HO "Bachmann E-Z Track #6 Left Turnout 44135"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 11.500000 0.000000 90.000000
- E 11.388000 1.320000 80.405924
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 11.500000 0.000000
- C 0 0.000000 -34.905365 0.649646 34.905365 170.405848 9.594228
- S 0 0.000000 6.467252 0.488226 11.388000 1.320000
- L 11579568 0.053333 -0.000003 -0.984375 11.499997 -0.984361 0
- L 11579568 0.053333 0.000000 0.984375 0.649600 0.984376 0
- A 11579568 0.053333 33.920990 0.649646 34.905365 170.405848 9.594228
- L 11579568 0.053333 6.303188 1.458833 11.223936 2.290607 0
- END
-TURNOUT HO "Bachmann E-Z Track #6 Right Turnout 44136"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 11.500000 0.000000 90.000000
- E 11.388000 -1.320000 99.594076
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 11.500000 0.000000
- C 0 0.000000 34.905365 0.649461 -34.905365 0.000076 9.594228
- S 0 0.000000 6.467252 -0.488226 11.388000 -1.320000
- L 11579568 0.053333 -0.000003 -0.984375 0.649597 -0.984374 0
- L 11579568 0.053333 0.000000 0.984375 11.500000 0.984389 0
- A 11579568 0.053333 33.920990 0.649461 -34.905365 0.000076 9.594228
- L 11579568 0.053333 6.303183 -1.458832 11.223931 -2.290606 0
- END
-TURNOUT HO "Bachmann E-Z Track #6 Right Crossover Turnout 44138/44576"
- P "Normal" 1 2 0 3 4
- P "Reverse" 3 5 6 7 2
- E 0.000000 0.000000 270.000000
- E 21.250000 0.000000 90.000000
- E 0.000000 2.375000 270.000000
- E 21.250000 2.375000 90.000000
- S 0 0.000000 0.000000 0.000000 20.090093 0.000000
- S 0 0.000000 20.090093 0.000000 21.250000 0.000000
- S 0 0.000000 0.000000 2.375000 1.159907 2.375000
- S 0 0.000000 1.159907 2.375000 21.250000 2.375000
- C 0 0.000000 38.137785 1.159755 -35.762785 0.000076 13.392143
- S 0 0.000000 9.993164 1.337946 11.256836 1.037054
- C 0 0.000000 -38.137785 20.090143 38.137773 180.000076 13.392143
- L 11579568 0.053333 -0.000003 -0.984375 21.249997 -0.984373 0
- L 11579568 0.053333 0.000000 0.984375 6.905970 0.984384 0
- L 11579568 0.053333 20.090093 0.984375 21.250000 0.984377 0
- L 11579568 0.053333 -0.000003 1.390625 1.159904 1.390627 0
- L 11579568 0.053333 0.000000 3.359375 21.250000 3.359402 0
- L 11579568 0.053333 14.344028 1.390642 21.249997 1.390652 0
- A 11579568 0.053333 37.153410 1.159755 -35.762785 0.000076 8.370090
- A 11579568 0.053333 37.153410 20.090143 38.137773 180.000076 8.370090
- END
-TURNOUT HO "Bachmann E-Z Track #6 Left Crossover Turnout 44137/44575"
- P "Normal" 1 2 0 3 4
- P "Reverse" 1 5 6 7 4
- E 0.000000 0.000000 270.000000
- E 21.250000 0.000000 90.000000
- E 0.000000 2.375000 270.000000
- E 21.250000 2.375000 90.000000
- S 0 0.000000 0.000000 0.000000 1.159907 0.000000
- S 0 0.000000 1.159907 0.000000 21.250000 0.000000
- S 0 0.000000 0.000000 2.375000 20.090093 2.375000
- S 0 0.000000 20.090093 2.375000 21.250000 2.375000
- C 0 0.000000 -38.137785 1.159957 38.137785 166.607933 13.392143
- S 0 0.000000 9.993164 1.037054 11.256836 1.337946
- C 0 0.000000 38.137785 20.090143 -35.762773 346.607933 13.392143
- L 11579568 0.053333 -0.000003 -0.984375 21.249997 -0.984348 0
- L 11579568 0.053333 0.000000 0.984375 1.159907 0.984377 0
- L 11579568 0.053333 14.344030 0.984392 21.250000 0.984402 0
- L 11579568 0.053333 -0.000003 1.390625 6.905967 1.390634 0
- L 11579568 0.053333 0.000000 3.359375 21.250000 3.359377 0
- L 11579568 0.053333 20.090091 1.390625 21.249997 1.390627 0
- A 11579568 0.053333 37.153410 1.159957 38.137785 171.629986 8.370090
- A 11579568 0.053333 37.153410 20.090143 -35.762773 351.629986 8.370090
- END
-
-
-
-
-SUBCONTENTS Bachmann E-Z Track - Crossings
-TURNOUT HO "Bachmann E-Z Track Crossing 90° w/ext 44541/44411"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.000000 0.000000 90.000000
- E 2.000000 2.000000 0.000000
- E 2.000000 -2.000000 180.000000
- S 0 0 0.000000 0.000000 4.000000 0.000000
- S 0 0 2.000000 2.000000 2.000000 -2.000000
- L 11579568 0.053333 0.000000 0.984375 1.015625 0.984375
- L 11579568 0.053333 0.000000 -0.984375 1.015625 -0.984375
- L 11579568 0.053333 2.984375 0.984375 4.000000 0.984375
- L 11579568 0.053333 2.984375 -0.984375 4.000000 -0.984375
- L 11579568 0.053333 1.015625 2.000000 1.015625 0.984375
- L 11579568 0.053333 2.984375 2.000000 2.984375 0.984375
- L 11579568 0.053333 1.015625 -0.984375 1.015625 -2.000000
- L 11579568 0.053333 2.984375 -0.984375 2.984375 -2.000000
- END
-TURNOUT HO "Bachmann E-Z Track Crossing 90° w/o ext 44541/44411"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 2.000000 0.000000 90.000000
- E 1.000000 1.000000 0.000000
- E 1.000000 -1.000000 180.000000
- S 0 0 0.000000 0.000000 2.000000 0.000000
- S 0 0 1.000000 1.000000 1.000000 -1.000000
- END
-TURNOUT HO "Bachmann E-Z Track Crossing 90° 2in Str 44541/44411"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.000000 0.000000
- L 11579568 0.053333 0.000000 0.984375 2.000000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 2.000000 -0.984375
- END
-TURNOUT HO "Bachmann E-Z Track Crossing 60° 476"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.000000 0.000000 90.000000
- E 3.000000 1.732051 30.000000
- E 1.000000 -1.732051 210.000000
- S 0 0 0.000000 0.000000 4.000000 0.000000
- S 0 0 1.000000 -1.732051 3.000000 1.732051
- L 11579568 0.053333 0.000000 0.984375 1.431671 0.984375
- L 11579568 0.053333 0.000000 -0.984375 0.312750 -0.984375
- L 11579568 0.053333 3.687500 0.984375 4.000000 0.984375
- L 11579568 0.053333 2.568329 -0.984375 4.000000 -0.984375
- L 11579568 0.053333 3.687500 0.984375 3.852494 1.239863
- L 11579568 0.053333 1.431671 0.984375 2.147506 2.224238
- L 11579568 0.053333 0.147506 -1.239863 0.312750 -0.984375
- L 11579568 0.053333 1.852494 -2.224238 2.568329 -0.984375
- END
-TURNOUT HO "Bachmann E-Z Track Crossing 45° 476"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 5.000000 0.000000 90.000000
- E 4.267767 1.767767 45.000000
- E 0.732233 -1.767767 225.000000
- S 0 0 0.000000 0.000000 5.000000 0.000000
- S 0 0 0.732233 -1.767767 4.267767 1.767767
- L 11579568 0.053333 0.000000 0.984375 2.056084 0.984375
- L 11579568 0.053333 2.943916 -0.984375 5.000000 -0.984375
- L 11579568 0.053333 2.056084 0.984375 3.571709 2.463825
- L 11579568 0.053333 1.428291 -2.463825 2.943916 -0.984375
- END
-TURNOUT HO "Bachmann E-Z Track Crossing 30° 44540/44440"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 10.000000 0.000000 90.000000
- E 9.330127 2.500000 60.000000
- E 0.669873 -2.500000 240.000000
- S 0 0 0.000000 0.000000 10.000000 0.000000
- S 0 0 0.669873 -2.500000 9.330127 2.500000
- L 11579568 0.053333 0.000000 0.984375 4.800000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 1.400000 -0.984375
- L 11579568 0.053333 8.600000 0.984375 10.000000 0.984375
- L 11579568 0.053333 5.300000 -0.984375 10.000000 -0.984375
- L 11579568 0.053333 4.800000 0.984375 8.837940 3.352494
- L 11579568 0.053333 8.600000 0.984375 9.800000 1.647506
- L 11579568 0.053333 0.200000 -1.647506 1.400000 -0.984375
- L 11579568 0.053333 1.162060 -3.352494 5.300000 -0.984375
- END
-
-
-SUBCONTENTS Bachmann E-Z Track - Misc Track
-TURNOUT HO "Bachmann E-Z Track Power Terminal 9in 44597"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.000000 0.000000
- L 11579568 0.053333 0.000000 0.984375 9.000000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 9.000000 -0.984375
- F 12566463 0.000000 4
- 4.000000 1.234375 0
- 4.000000 0.984375 0
- 5.000000 0.984375 0
- 5.000000 1.234375 0
- END
-TURNOUT HO "Bachmann E-Z Track Rerailer 9in 44528/44428"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.000000 0.000000
- L 11579568 0.053333 0.000000 0.984375 9.000000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 9.000000 -0.984375
- F 12566463 0.000000 4
- 0.500000 0.584375 0
- 1.000000 0.334375 0
- 8.000000 0.334375 0
- 8.500000 0.584375 0
- F 12566463 0.000000 6
- 0.500000 0.000000 0
- 1.000000 -0.250000 0
- 8.000000 -0.250000 0
- 8.500000 0.000000 0
- 8.000000 0.250000 0
- 1.000000 0.250000 0
- F 12566463 0.000000 4
- 0.500000 -0.584375 0
- 1.000000 -0.334375 0
- 8.000000 -0.334375 0
- 8.500000 -0.584375 0
- END
-TURNOUT HO "Bachmann E-Z Track Terminal/Rerailer 9in 44510/44410"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.000000 0.000000
- L 11579568 0.053333 0.000000 0.984375 9.000000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 9.000000 -0.984375
- F 12566463 0.000000 4
- 0.500000 0.584375 0
- 1.000000 0.334375 0
- 8.000000 0.334375 0
- 8.500000 0.584375 0
- F 12566463 0.000000 6
- 0.500000 0.000000 0
- 1.000000 -0.250000 0
- 8.000000 -0.250000 0
- 8.500000 0.000000 0
- 8.000000 0.250000 0
- 1.000000 0.250000 0
- F 12566463 0.000000 4
- 0.500000 -0.584375 0
- 1.000000 -0.334375 0
- 8.000000 -0.334375 0
- 8.500000 -0.584375 0
- F 12566463 0.000000 4
- 4.000000 1.234375 0
- 4.000000 0.984375 0
- 5.000000 0.984375 0
- 5.000000 1.234375 0
- END
-TURNOUT HO "Bachmann E-Z Track Auto-Reverse Str 9in 44548"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.000000 0.000000
- L 11579568 0.053333 0.000000 0.984375 9.000000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 9.000000 -0.984375
- END
-TURNOUT HO "Bachmann E-Z Track Terminal/Rerailer 10in 44820"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 10.000000 0.000000
- L 11579568 0.053333 0.000000 0.984375 10.000000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 10.000000 -0.984375
- F 12566463 0.000000 4
- 1.000000 0.584375 0
- 1.500000 0.334375 0
- 8.500000 0.334375 0
- 9.000000 0.584375 0
- F 12566463 0.000000 6
- 1.000000 0.000000 0
- 1.500000 -0.250000 0
- 8.500000 -0.250000 0
- 9.000000 0.000000 0
- 8.500000 0.250000 0
- 1.500000 0.250000 0
- F 12566463 0.000000 4
- 1.000000 -0.584375 0
- 1.500000 -0.334375 0
- 8.500000 -0.334375 0
- 9.000000 -0.584375 0
- F 12566463 0.000000 4
- 4.500000 1.234375 0
- 4.500000 0.984375 0
- 5.500000 0.984375 0
- 5.500000 1.234375 0
- END
-TURNOUT HO "Bachmann E-Z Track Hayes Bumper 44591/44491"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 2.50000 0.000000
- L 11579568 0.053333 0.000000 0.984375 2.500000 0.984375
- L 11579568 0.053333 0.000000 -0.984375 2.500000 -0.984375
- END
-TURNOUT HO "Bachmann E-Z Track Auto-Reverse Curved 18in 30° 44549"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 -2.411543 120.000000
- C 0 0 18.000000 0.000000 -18.000000 0.000000 30.000000
- A 11579568 0.053333 18.984375 0.000000 -18.000000 0.000000 30.000000
- A 11579568 0.053333 17.015625 0.000000 -18.000000 0.000000 30.000000
- END
-TURNOUT HO "Bachmann E-Z Track Rerailer Curved 18in 30° 44529/44429"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 -2.411543 120.000000
- C 0 0 18.000000 0.000000 -18.000000 0.000000 30.000000
- A 11579568 0.053333 18.984375 0.000000 -18.000000 0.000000 30.000000
- A 11579568 0.053333 17.015625 0.000000 -18.000000 0.000000 30.000000
- END
-TURNOUT HO "Bachmann E-Z Track Terminal Curved 18in 30° 44502/44402"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 -2.411543 120.000000
- C 0 0 18.000000 0.000000 -18.000000 0.000000 30.000000
- A 11579568 0.053333 18.984375 0.000000 -18.000000 0.000000 30.000000
- A 11579568 0.053333 17.015625 0.000000 -18.000000 0.000000 30.000000
- F 12566463 0.000000 4
- 0.000000 1.234375 0
- 0.000000 0.984375 0
- 1.000000 0.984375 0
- 1.000000 1.234375 0
- END
-
-SUBCONTENTS Bachmann E-Z Track - Turntable
-TURNOUT HO "Bachmann Turntable 16 Pos 20d 46299" 512
- P "1" 1 2 3
- P "2" 4 5 6
- P "3" 7 8 9
- P "4" 10 11 12
- P "5" 13 14 15
- P "6" 16 17 18
- P "7" 19 20 21
- P "8" 22 23
- P "9" 24 25
- E 0.000000 7.000000 0.000000
- E 2.394141 6.577848 20.000000
- E 4.499513 5.362311 40.000000
- E 6.062178 3.500000 60.000000
- E 6.893654 1.215537 80.000000
- E 6.893654 -1.215537 100.000000
- E 6.062178 -3.500000 120.000000
- E 4.499513 -5.362311 140.000000
- E 2.394141 -6.577848 160.000000
- E 0.000000 -7.000000 180.000000
- E -2.394141 -6.577848 200.000000
- E -4.499513 -5.362311 220.000000
- E -6.062178 -3.500000 240.000000
- E -6.893654 -1.215537 260.000000
- E -6.893654 1.215537 280.000000
- E -6.062178 3.500000 300.000000
- S 0 0 0.000000 7.000000 0.000000 5.000000
- S 16777215 0 0.000000 5.000000 0.000000 -5.000000
- S 0 0 0.000000 -5.000000 0.000000 -7.000000
- S 0 0 2.394141 6.577848 1.710101 4.698463
- S 16777215 0 1.710101 4.698463 -1.710101 -4.698463
- S 0 0 -1.710101 -4.698463 -2.394141 -6.577848
- S 0 0 4.499513 5.362311 3.213938 3.830222
- S 16777215 0 3.213938 3.830222 -3.213938 -3.830222
- S 0 0 -3.213938 -3.830222 -4.499513 -5.362311
- S 0 0 6.062178 3.500000 4.330127 2.500000
- S 16777215 0 4.330127 2.500000 -4.330127 -2.500000
- S 0 0 -4.330127 -2.500000 -6.062178 -3.500000
- S 0 0 6.893654 1.215537 4.924039 0.868241
- S 16777215 0 4.924039 0.868241 -4.924039 -0.868241
- S 0 0 -4.924039 -0.868241 -6.893654 -1.215537
- S 0 0 6.893654 -1.215537 4.924039 -0.868241
- S 16777215 0 4.924039 -0.868241 -4.924039 0.868241
- S 0 0 -4.924039 0.868241 -6.893654 1.215537
- S 0 0 6.062178 -3.500000 4.330127 -2.500000
- S 16777215 0 4.330127 -2.500000 -4.330127 2.500000
- S 0 0 -4.330127 2.500000 -6.062178 3.500000
- S 0 0 4.499513 -5.362311 3.213938 -3.830222
- S 16777215 0 3.213938 -3.830222 -3.213938 3.830222
- S 0 0 2.394141 -6.577848 1.710101 -4.698463
- S 16777215 0 1.710101 -4.698463 -1.710101 4.698463
- A3 8424071 0.031250 4.000000 0.000000 0.000000 0 0.000000 360.000000
- A3 8424071 0.031250 5.000000 0.000000 0.000000 0 0.000000 360.000000
- L3 8424071 0.031250 -0.984375 7.000000 0 1.234289 7.000000 0
- L3 8424071 0.031250 1.234289 7.000000 0 3.553993 6.155697 0
- L3 8424071 0.031250 3.553993 6.155697 0 5.445033 4.568926 0
- L3 8424071 0.031250 5.445033 4.568926 0 6.679322 2.431074 0
- L3 8424071 0.031250 6.679322 2.431074 0 7.107986 0.000000 0
- L3 8424071 0.031250 7.107986 0.000000 0 6.679322 -2.431074 0
- L3 8424071 0.031250 6.679322 -2.431074 0 5.445033 -4.568926 0
- L3 8424071 0.031250 5.445033 -4.568926 0 3.553993 -6.155697 0
- L3 8424071 0.031250 3.553993 -6.155697 0 1.234289 -7.000000 0
- L3 8424071 0.031250 1.234289 -7.000000 0 -1.234289 -7.000000 0
- L3 8424071 0.031250 -1.234289 -7.000000 0 -3.553993 -6.155697 0
- L3 8424071 0.031250 -3.553993 -6.155697 0 -5.445033 -4.568926 0
- L3 8424071 0.031250 -5.445033 -4.568926 0 -6.679322 -2.431074 0
- L3 8424071 0.031250 -6.679322 -2.431074 0 -7.107986 0.000000 0
- L3 8424071 0.031250 -7.107986 0.000000 0 -6.679322 2.431074 0
- L3 8424071 0.031250 -6.679322 2.431074 0 -5.569990 4.352494 0
- L3 8424071 0.031250 -5.569990 4.352494 0 -7.215439 5.302494 0
- L3 8424071 0.031250 -7.215439 5.302494 0 -6.510492 6.523497 0
- L3 8424071 0.031250 -6.510492 6.523497 0 -2.375232 8.900000 0
- L3 8424071 0.031250 -2.375232 8.900000 0 -0.984375 8.900000 0
- L3 8424071 0.031250 -0.984375 8.900000 0 -0.984375 7.000000 0
- F4 13882323 0.000000 4 0
- -1.257836 6.197374 0
- -4.725934 4.204284 0
- -6.052343 6.498448 0
- -2.584246 8.491538 0
- L3 8424071 0.031250 -1.257836 6.197374 0 -4.725934 4.204284 0
- L3 8424071 0.031250 -4.725934 4.204284 0 -6.052343 6.498448 0
- L3 8424071 0.031250 -6.052343 6.498448 0 -2.584246 8.491538 0
- L3 8424071 0.031250 -2.584246 8.491538 0 -1.257836 6.197374 0
-END$SEGS
-
-
+CONTENTS Bachmann E-Z Track Components
+
+SUBCONTENTS Bachmann E-Z Track - Straight Track
+TURNOUT HO "Bachmann E-Z Track Straight 2.25in 44513"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.250000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.250000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 2.250000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 2.250000 -0.984375
+ END
+TURNOUT HO "Bachmann E-Z Track Straight 3in 44512/44412"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.000000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 3.000000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 3.000000 -0.984375
+ END
+TURNOUT HO "Bachmann E-Z Track Straight 4.5in 44514"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.500000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.500000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 4.500000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 4.500000 -0.984375
+ END
+TURNOUT HO "Bachmann E-Z Track Straight 9in 44511/44411"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 9.000000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 9.000000 -0.984375
+ END
+TURNOUT HO "Bachmann E-Z Track Straight 36in 44584"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 36.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 36.000000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 36.000000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 36.000000 -0.984375
+ END
+TURNOUT HO "Bachmann E-Z Track Straight 2in 44592A"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.000000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 2.000000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 2.000000 -0.984375
+ END
+TURNOUT HO "Bachmann E-Z Track Straight 1.5in 44592B"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.500000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.500000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 1.500000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 1.500000 -0.984375
+ END
+TURNOUT HO "Bachmann E-Z Track Straight 1.25in 44592C"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.250000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.250000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 1.250000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 1.250000 -0.984375
+ END
+TURNOUT HO "Bachmann E-Z Track Straight 1in 44592D"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.000000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 1.000000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 1.000000 -0.984375
+ END
+TURNOUT HO "Bachmann E-Z Track Straight 0.75in 44592E"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.750000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.7500000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 0.750000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 0.750000 -0.984375
+ END
+
+
+
+SUBCONTENTS Bachmann E-Z Track - Curve Track
+TURNOUT HO "Bachmann E-Z Track Curved 15in 30° 44505"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.500000 -2.009619 120.000000
+ C 0 0 15.000000 0.000000 -15.000000 0.000000 30.000000
+ A 11579568 0.053333 15.984375 0.000000 -15.000000 0.000000 30.000000
+ A 11579568 0.053333 14.015625 0.000000 -15.000000 0.000000 30.000000
+ END
+TURNOUT HO "Bachmann E-Z Track Curved 18in 30° 44501/44401"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 -2.411543 120.000000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 30.000000
+ A 11579568 0.053333 18.984375 0.000000 -18.000000 0.000000 30.000000
+ A 11579568 0.053333 17.015625 0.000000 -18.000000 0.000000 30.000000
+ END
+TURNOUT HO "Bachmann E-Z Track Curved 18in 15° 44531"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.658743 -0.613335 105.000000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 15.000000
+ A 11579568 0.053333 18.984375 0.000000 -18.000000 0.000000 15.000000
+ A 11579568 0.053333 17.015625 0.000000 -18.000000 0.000000 15.000000
+ END
+TURNOUT HO "Bachmann E-Z Track Curved 18in 10° 44530"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.125667 -0.273460 100.000000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 10.000000
+ A 11579568 0.053333 18.984375 0.000000 -18.000000 0.000000 10.000000
+ A 11579568 0.053333 17.015625 0.000000 -18.000000 0.000000 10.000000
+ END
+TURNOUT HO "Bachmann E-Z Track Curved 22in 22.5° 44503/44403"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.419036 -1.674650 112.500000
+ C 0 0 22.000000 0.000000 -22.000000 0.000000 22.500000
+ A 11579568 0.053333 22.984375 0.000000 -22.000000 0.000000 22.500000
+ A 11579568 0.053333 21.015625 0.000000 -22.000000 0.000000 22.500000
+ END
+TURNOUT HO "Bachmann E-Z Track Curved 22in 11.25° 44532"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.291987 -0.422724 101.250000
+ C 0 0 22.000000 0.000000 -22.000000 0.000000 11.250000
+ A 11579568 0.053333 22.984375 0.000000 -22.000000 0.000000 11.250000
+ A 11579568 0.053333 21.015625 0.000000 -22.000000 0.000000 11.250000
+ END
+TURNOUT HO "Bachmann E-Z Track Curved 26in 18° 44519"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.034442 -1.272531 108.000000
+ C 0 0 26.000000 0.000000 -26.000000 0.000000 18.000000
+ A 11579568 0.053333 26.984375 0.000000 -26.000000 0.000000 18.000000
+ A 11579568 0.053333 25.015625 0.000000 -26.000000 0.000000 18.000000
+ END
+TURNOUT HO "Bachmann E-Z Track Curved 28in 18° 44506"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.652476 -1.370418 108.000000
+ C 0 0 28.000000 0.000000 -28.000000 0.000000 18.000000
+ A 11579568 0.053333 28.984375 0.000000 -28.000000 0.000000 18.000000
+ A 11579568 0.053333 27.015625 0.000000 -28.000000 0.000000 18.000000
+ END
+TURNOUT HO "Bachmann E-Z Track Curved 33.25in 18° 44504"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.274815 -1.627371 108.000000
+ C 0 0 33.250000 0.000000 -33.250000 0.000000 18.000000
+ A 11579568 0.053333 34.234375 0.000000 -33.250000 0.000000 18.000000
+ A 11579568 0.053333 32.265625 0.000000 -33.250000 0.000000 18.000000
+ END
+TURNOUT HO "Bachmann E-Z Track Curved 33.25in 12° 44509"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.913064 -0.726592 102.000000
+ C 0 0 33.250000 0.000000 -33.250000 0.000000 12.000000
+ A 11579568 0.053333 34.234375 0.000000 -33.250000 0.000000 12.000000
+ A 11579568 0.053333 32.265625 0.000000 -33.250000 0.000000 12.000000
+ END
+TURNOUT HO "Bachmann E-Z Track Curved 33.25in 6° 44508"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.475571 -0.182147 96.000000
+ C 0 0 33.250000 0.000000 -33.250000 0.000000 6.000000
+ A 11579568 0.053333 34.234375 0.000000 -33.250000 0.000000 6.000000
+ A 11579568 0.053333 32.265625 0.000000 -33.250000 0.000000 6.000000
+ END
+TURNOUT HO "Bachmann E-Z Track Curved 35.5in 18° 44507"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.970103 -1.737494 108.000000
+ C 0 0 35.500000 0.000000 -35.500000 0.000000 18.000000
+ A 11579568 0.053333 36.484375 0.000000 -35.500000 0.000000 18.000000
+ A 11579568 0.053333 34.515625 0.000000 -35.500000 0.000000 18.000000
+ END
+
+
+
+
+
+
+SUBCONTENTS Bachmann E-Z Track - Track Turnouts
+TURNOUT HO "Bachmann E-Z Track Left Snap Manual Turnout 44130/44561/44461"
+ P "Normal" 1 2
+ P "Reverse" 1 3
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 10.375000 2.411543 60.000000
+ S 0 0 0.000000 0.000000 1.375000 0.000000
+ S 0 0 1.375000 0.000000 9.000000 0.000000
+ C 0 0 -18.000000 1.375000 18.000000 150.000000 30.000000
+ A 11579568 0.053333 17.015625 1.375000 18.000000 150.000000 30.000000
+ A 11579568 0.053333 18.984375 1.375000 18.000000 150.000000 3.800000
+ L 11579568 0.053333 0.000000 0.984375 1.375000 0.984375
+ L 11579568 0.053333 9.000000 0.984375 9.750000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 9.000000 -0.984375
+ END
+TURNOUT HO "Bachmann E-Z Track Right Snap Manual Turnout 44131/44562/44462"
+ P "Normal" 1 2
+ P "Reverse" 1 3
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 10.375000 -2.411543 120.000000
+ S 0 0 0.000000 0.000000 1.375000 0.000000
+ S 0 0 1.375000 0.000000 9.000000 0.000000
+ C 0 0 18.000000 1.375000 -18.000000 0.000000 30.000000
+ A 11579568 0.053333 17.015625 1.375000 -18.000000 0.000000 30.000000
+ A 11579568 0.053333 18.984375 1.375000 -18.000000 26.000000 3.800000
+ L 11579568 0.053333 0.000000 -0.984375 1.375000 -0.984375
+ L 11579568 0.053333 9.000000 -0.984375 9.750000 -0.984375
+ L 11579568 0.053333 0.000000 0.984375 9.000000 0.984375
+ END
+TURNOUT HO "Bachmann E-Z Track #4 Left Turnout 44139/44557"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ E 9.781250 1.593750 76.000000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 10.000000 0.000000
+ C 0 0.000000 -22.311590 0.649630 22.311590 165.999924 14.000152
+ S 0 0.000000 6.047315 0.662763 9.781250 1.593750
+ L3 0 0.000000 -0.000003 -0.984375 0 9.999997 -0.984363 0
+ L3 0 0.000000 0.000000 0.984375 0 0.649600 0.984376 0
+ A3 0 0.000000 21.327215 0.649630 22.311590 0 165.999924 14.000152
+ L3 0 0.000000 5.809171 1.617897 0 9.543106 2.548884 0
+ L3 0 0.000000 -0.000001 -0.492187 0 9.999999 -0.492175 0
+ L3 0 0.000000 0.000000 0.492188 0 0.649600 0.492188 0
+ L3 0 0.000000 7.370200 0.492196 0 10.000000 0.492200 0
+ A3 0 0.000000 21.819402 0.649630 22.311590 0 165.999924 14.000152
+ L3 0 0.000000 7.449928 0.505223 0 9.900323 1.116183 0
+ L3 0 0.000000 5.928243 1.140330 0 9.662178 2.071317 0
+ END$SEGS
+TURNOUT HO "Bachmann E-Z Track #4 Right Turnout 44140/44558"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ E 9.781250 -1.593750 104.000000
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 10.000000 0.000000
+ C 0 0.000000 22.311590 0.649511 -22.311590 0.000076 14.000152
+ S 0 0.000000 6.047315 -0.662763 9.781250 -1.593750
+ L3 0 0.000000 -0.000003 -0.984375 0 0.649597 -0.984374 0
+ L3 0 0.000000 0.000000 0.984375 0 10.000000 0.984387 0
+ A3 0 0.000000 21.327215 0.649511 -22.311590 0 0.000076 14.000152
+ L3 0 0.000000 5.809166 -1.617896 0 9.543101 -2.548883 0
+ L3 0 0.000000 -0.000001 -0.492187 0 0.649599 -0.492187 0
+ L3 0 0.000000 0.000000 0.492188 0 10.000000 0.492200 0
+ L3 0 0.000000 7.370199 -0.492179 0 9.999999 -0.492175 0
+ A3 0 0.000000 21.819402 0.649511 -22.311590 0 0.000076 14.000152
+ L3 0 0.000000 5.928241 -1.140329 0 9.662176 -2.071317 0
+ L3 0 0.000000 7.449928 -0.505223 0 9.900323 -1.116183 0
+ END$SEGS
+TURNOUT HO "Bachmann E-Z Track #5 Left Turnout 44132/44565"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.500000 0.000000 90.000000
+ E 11.340000 1.620000 78.463031
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 11.500000 0.000000
+ C 0 0.000000 -27.263067 0.649636 27.263067 168.462955 11.537121
+ S 0 0.000000 6.102284 0.550840 11.340000 1.620000
+ L 11579568 0.053333 -0.000003 -0.984375 11.499997 -0.984361 0
+ L 11579568 0.053333 0.000000 0.984375 0.649600 0.984376 0
+ A 11579568 0.053333 26.278692 0.649636 27.263067 168.462955 11.537121
+ L 11579568 0.053333 5.905408 1.515327 11.143124 2.584486 0
+ END
+TURNOUT HO "Bachmann E-Z Track #5 Right Turnout 44133/44566"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.500000 0.000000 90.000000
+ E 11.340000 -1.620000 101.536969
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 11.500000 0.000000
+ C 0 0.000000 27.263067 0.649491 -27.263067 0.000076 11.537121
+ S 0 0.000000 6.102284 -0.550840 11.340000 -1.620000
+ L 11579568 0.053333 -0.000003 -0.984375 0.649597 -0.984374 0
+ L 11579568 0.053333 0.000000 0.984375 11.500000 0.984389 0
+ A 11579568 0.053333 26.278692 0.649491 -27.263067 0.000076 11.537121
+ L 11579568 0.053333 5.905403 -1.515326 11.143118 -2.584485 0
+ END
+TURNOUT HO "Bachmann E-Z Track #5 Wye Turnout 44134/44569"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 11.340000 0.762000 78.463031
+ E 11.340000 -0.762000 101.536969
+ S 0 0.000000 0.000000 0.000000 4.446728 0.000000
+ C 0 0.000000 -31.283990 4.446769 31.283990 168.462955 11.537121
+ S 0 0.000000 10.703607 0.632082 11.340000 0.762000
+ C 0 0.000000 31.283990 4.446603 -31.283990 0.000076 11.537121
+ S 0 0.000000 10.703607 -0.632082 11.340000 -0.762000
+ L 11579568 0.053333 -0.000003 -0.984375 4.446725 -0.984369 0
+ L 11579568 0.053333 0.000000 0.984375 4.446728 0.984381 0
+ A 11579568 0.053333 30.299615 4.446769 31.283990 168.462955 11.537121
+ L 11579568 0.053333 10.506711 1.596564 11.143104 1.726482 0
+ A 11579568 0.053333 30.299615 4.446603 -31.283990 0.000076 11.537121
+ L 11579568 0.053333 10.506706 -1.596563 11.143099 -1.726481 0
+ END
+TURNOUT HO "Bachmann E-Z Track #6 Left Turnout 44135"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.500000 0.000000 90.000000
+ E 11.388000 1.320000 80.405924
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 11.500000 0.000000
+ C 0 0.000000 -34.905365 0.649646 34.905365 170.405848 9.594228
+ S 0 0.000000 6.467252 0.488226 11.388000 1.320000
+ L 11579568 0.053333 -0.000003 -0.984375 11.499997 -0.984361 0
+ L 11579568 0.053333 0.000000 0.984375 0.649600 0.984376 0
+ A 11579568 0.053333 33.920990 0.649646 34.905365 170.405848 9.594228
+ L 11579568 0.053333 6.303188 1.458833 11.223936 2.290607 0
+ END
+TURNOUT HO "Bachmann E-Z Track #6 Right Turnout 44136"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.500000 0.000000 90.000000
+ E 11.388000 -1.320000 99.594076
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 11.500000 0.000000
+ C 0 0.000000 34.905365 0.649461 -34.905365 0.000076 9.594228
+ S 0 0.000000 6.467252 -0.488226 11.388000 -1.320000
+ L 11579568 0.053333 -0.000003 -0.984375 0.649597 -0.984374 0
+ L 11579568 0.053333 0.000000 0.984375 11.500000 0.984389 0
+ A 11579568 0.053333 33.920990 0.649461 -34.905365 0.000076 9.594228
+ L 11579568 0.053333 6.303183 -1.458832 11.223931 -2.290606 0
+ END
+TURNOUT HO "Bachmann E-Z Track #6 Right Crossover Turnout 44138/44576"
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 3 5 6 7 2
+ E 0.000000 0.000000 270.000000
+ E 21.250000 0.000000 90.000000
+ E 0.000000 2.375000 270.000000
+ E 21.250000 2.375000 90.000000
+ S 0 0.000000 0.000000 0.000000 20.090093 0.000000
+ S 0 0.000000 20.090093 0.000000 21.250000 0.000000
+ S 0 0.000000 0.000000 2.375000 1.159907 2.375000
+ S 0 0.000000 1.159907 2.375000 21.250000 2.375000
+ C 0 0.000000 38.137785 1.159755 -35.762785 0.000076 13.392143
+ S 0 0.000000 9.993164 1.337946 11.256836 1.037054
+ C 0 0.000000 -38.137785 20.090143 38.137773 180.000076 13.392143
+ L 11579568 0.053333 -0.000003 -0.984375 21.249997 -0.984373 0
+ L 11579568 0.053333 0.000000 0.984375 6.905970 0.984384 0
+ L 11579568 0.053333 20.090093 0.984375 21.250000 0.984377 0
+ L 11579568 0.053333 -0.000003 1.390625 1.159904 1.390627 0
+ L 11579568 0.053333 0.000000 3.359375 21.250000 3.359402 0
+ L 11579568 0.053333 14.344028 1.390642 21.249997 1.390652 0
+ A 11579568 0.053333 37.153410 1.159755 -35.762785 0.000076 8.370090
+ A 11579568 0.053333 37.153410 20.090143 38.137773 180.000076 8.370090
+ END
+TURNOUT HO "Bachmann E-Z Track #6 Left Crossover Turnout 44137/44575"
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 1 5 6 7 4
+ E 0.000000 0.000000 270.000000
+ E 21.250000 0.000000 90.000000
+ E 0.000000 2.375000 270.000000
+ E 21.250000 2.375000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.159907 0.000000
+ S 0 0.000000 1.159907 0.000000 21.250000 0.000000
+ S 0 0.000000 0.000000 2.375000 20.090093 2.375000
+ S 0 0.000000 20.090093 2.375000 21.250000 2.375000
+ C 0 0.000000 -38.137785 1.159957 38.137785 166.607933 13.392143
+ S 0 0.000000 9.993164 1.037054 11.256836 1.337946
+ C 0 0.000000 38.137785 20.090143 -35.762773 346.607933 13.392143
+ L 11579568 0.053333 -0.000003 -0.984375 21.249997 -0.984348 0
+ L 11579568 0.053333 0.000000 0.984375 1.159907 0.984377 0
+ L 11579568 0.053333 14.344030 0.984392 21.250000 0.984402 0
+ L 11579568 0.053333 -0.000003 1.390625 6.905967 1.390634 0
+ L 11579568 0.053333 0.000000 3.359375 21.250000 3.359377 0
+ L 11579568 0.053333 20.090091 1.390625 21.249997 1.390627 0
+ A 11579568 0.053333 37.153410 1.159957 38.137785 171.629986 8.370090
+ A 11579568 0.053333 37.153410 20.090143 -35.762773 351.629986 8.370090
+ END
+
+
+
+
+SUBCONTENTS Bachmann E-Z Track - Crossings
+TURNOUT HO "Bachmann E-Z Track Crossing 90° w/ext 44541/44411"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.000000 0.000000 90.000000
+ E 2.000000 2.000000 0.000000
+ E 2.000000 -2.000000 180.000000
+ S 0 0 0.000000 0.000000 4.000000 0.000000
+ S 0 0 2.000000 2.000000 2.000000 -2.000000
+ L 11579568 0.053333 0.000000 0.984375 1.015625 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 1.015625 -0.984375
+ L 11579568 0.053333 2.984375 0.984375 4.000000 0.984375
+ L 11579568 0.053333 2.984375 -0.984375 4.000000 -0.984375
+ L 11579568 0.053333 1.015625 2.000000 1.015625 0.984375
+ L 11579568 0.053333 2.984375 2.000000 2.984375 0.984375
+ L 11579568 0.053333 1.015625 -0.984375 1.015625 -2.000000
+ L 11579568 0.053333 2.984375 -0.984375 2.984375 -2.000000
+ END
+TURNOUT HO "Bachmann E-Z Track Crossing 90° w/o ext 44541/44411"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 2.000000 0.000000 90.000000
+ E 1.000000 1.000000 0.000000
+ E 1.000000 -1.000000 180.000000
+ S 0 0 0.000000 0.000000 2.000000 0.000000
+ S 0 0 1.000000 1.000000 1.000000 -1.000000
+ END
+TURNOUT HO "Bachmann E-Z Track Crossing 90° 2in Str 44541/44411"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.000000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 2.000000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 2.000000 -0.984375
+ END
+TURNOUT HO "Bachmann E-Z Track Crossing 60° 476"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.000000 0.000000 90.000000
+ E 3.000000 1.732051 30.000000
+ E 1.000000 -1.732051 210.000000
+ S 0 0 0.000000 0.000000 4.000000 0.000000
+ S 0 0 1.000000 -1.732051 3.000000 1.732051
+ L 11579568 0.053333 0.000000 0.984375 1.431671 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 0.312750 -0.984375
+ L 11579568 0.053333 3.687500 0.984375 4.000000 0.984375
+ L 11579568 0.053333 2.568329 -0.984375 4.000000 -0.984375
+ L 11579568 0.053333 3.687500 0.984375 3.852494 1.239863
+ L 11579568 0.053333 1.431671 0.984375 2.147506 2.224238
+ L 11579568 0.053333 0.147506 -1.239863 0.312750 -0.984375
+ L 11579568 0.053333 1.852494 -2.224238 2.568329 -0.984375
+ END
+TURNOUT HO "Bachmann E-Z Track Crossing 45° 476"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 5.000000 0.000000 90.000000
+ E 4.267767 1.767767 45.000000
+ E 0.732233 -1.767767 225.000000
+ S 0 0 0.000000 0.000000 5.000000 0.000000
+ S 0 0 0.732233 -1.767767 4.267767 1.767767
+ L 11579568 0.053333 0.000000 0.984375 2.056084 0.984375
+ L 11579568 0.053333 2.943916 -0.984375 5.000000 -0.984375
+ L 11579568 0.053333 2.056084 0.984375 3.571709 2.463825
+ L 11579568 0.053333 1.428291 -2.463825 2.943916 -0.984375
+ END
+TURNOUT HO "Bachmann E-Z Track Crossing 30° 44540/44440"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ E 9.330127 2.500000 60.000000
+ E 0.669873 -2.500000 240.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ S 0 0 0.669873 -2.500000 9.330127 2.500000
+ L 11579568 0.053333 0.000000 0.984375 4.800000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 1.400000 -0.984375
+ L 11579568 0.053333 8.600000 0.984375 10.000000 0.984375
+ L 11579568 0.053333 5.300000 -0.984375 10.000000 -0.984375
+ L 11579568 0.053333 4.800000 0.984375 8.837940 3.352494
+ L 11579568 0.053333 8.600000 0.984375 9.800000 1.647506
+ L 11579568 0.053333 0.200000 -1.647506 1.400000 -0.984375
+ L 11579568 0.053333 1.162060 -3.352494 5.300000 -0.984375
+ END
+
+
+SUBCONTENTS Bachmann E-Z Track - Misc Track
+TURNOUT HO "Bachmann E-Z Track Power Terminal 9in 44597"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 9.000000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 9.000000 -0.984375
+ F 12566463 0.000000 4
+ 4.000000 1.234375 0
+ 4.000000 0.984375 0
+ 5.000000 0.984375 0
+ 5.000000 1.234375 0
+ END
+TURNOUT HO "Bachmann E-Z Track Rerailer 9in 44528/44428"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 9.000000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 9.000000 -0.984375
+ F 12566463 0.000000 4
+ 0.500000 0.584375 0
+ 1.000000 0.334375 0
+ 8.000000 0.334375 0
+ 8.500000 0.584375 0
+ F 12566463 0.000000 6
+ 0.500000 0.000000 0
+ 1.000000 -0.250000 0
+ 8.000000 -0.250000 0
+ 8.500000 0.000000 0
+ 8.000000 0.250000 0
+ 1.000000 0.250000 0
+ F 12566463 0.000000 4
+ 0.500000 -0.584375 0
+ 1.000000 -0.334375 0
+ 8.000000 -0.334375 0
+ 8.500000 -0.584375 0
+ END
+TURNOUT HO "Bachmann E-Z Track Terminal/Rerailer 9in 44510/44410"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 9.000000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 9.000000 -0.984375
+ F 12566463 0.000000 4
+ 0.500000 0.584375 0
+ 1.000000 0.334375 0
+ 8.000000 0.334375 0
+ 8.500000 0.584375 0
+ F 12566463 0.000000 6
+ 0.500000 0.000000 0
+ 1.000000 -0.250000 0
+ 8.000000 -0.250000 0
+ 8.500000 0.000000 0
+ 8.000000 0.250000 0
+ 1.000000 0.250000 0
+ F 12566463 0.000000 4
+ 0.500000 -0.584375 0
+ 1.000000 -0.334375 0
+ 8.000000 -0.334375 0
+ 8.500000 -0.584375 0
+ F 12566463 0.000000 4
+ 4.000000 1.234375 0
+ 4.000000 0.984375 0
+ 5.000000 0.984375 0
+ 5.000000 1.234375 0
+ END
+TURNOUT HO "Bachmann E-Z Track Auto-Reverse Str 9in 44548"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 9.000000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 9.000000 -0.984375
+ END
+TURNOUT HO "Bachmann E-Z Track Terminal/Rerailer 10in 44820"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 10.000000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 10.000000 -0.984375
+ F 12566463 0.000000 4
+ 1.000000 0.584375 0
+ 1.500000 0.334375 0
+ 8.500000 0.334375 0
+ 9.000000 0.584375 0
+ F 12566463 0.000000 6
+ 1.000000 0.000000 0
+ 1.500000 -0.250000 0
+ 8.500000 -0.250000 0
+ 9.000000 0.000000 0
+ 8.500000 0.250000 0
+ 1.500000 0.250000 0
+ F 12566463 0.000000 4
+ 1.000000 -0.584375 0
+ 1.500000 -0.334375 0
+ 8.500000 -0.334375 0
+ 9.000000 -0.584375 0
+ F 12566463 0.000000 4
+ 4.500000 1.234375 0
+ 4.500000 0.984375 0
+ 5.500000 0.984375 0
+ 5.500000 1.234375 0
+ END
+TURNOUT HO "Bachmann E-Z Track Hayes Bumper 44591/44491"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 2.50000 0.000000
+ L 11579568 0.053333 0.000000 0.984375 2.500000 0.984375
+ L 11579568 0.053333 0.000000 -0.984375 2.500000 -0.984375
+ END
+TURNOUT HO "Bachmann E-Z Track Auto-Reverse Curved 18in 30° 44549"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 -2.411543 120.000000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 30.000000
+ A 11579568 0.053333 18.984375 0.000000 -18.000000 0.000000 30.000000
+ A 11579568 0.053333 17.015625 0.000000 -18.000000 0.000000 30.000000
+ END
+TURNOUT HO "Bachmann E-Z Track Rerailer Curved 18in 30° 44529/44429"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 -2.411543 120.000000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 30.000000
+ A 11579568 0.053333 18.984375 0.000000 -18.000000 0.000000 30.000000
+ A 11579568 0.053333 17.015625 0.000000 -18.000000 0.000000 30.000000
+ END
+TURNOUT HO "Bachmann E-Z Track Terminal Curved 18in 30° 44502/44402"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 -2.411543 120.000000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 30.000000
+ A 11579568 0.053333 18.984375 0.000000 -18.000000 0.000000 30.000000
+ A 11579568 0.053333 17.015625 0.000000 -18.000000 0.000000 30.000000
+ F 12566463 0.000000 4
+ 0.000000 1.234375 0
+ 0.000000 0.984375 0
+ 1.000000 0.984375 0
+ 1.000000 1.234375 0
+ END
+
+SUBCONTENTS Bachmann E-Z Track - Turntable
+TURNOUT HO "Bachmann Turntable 16 Pos 20d 46299" 512
+ P "1" 1 2 3
+ P "2" 4 5 6
+ P "3" 7 8 9
+ P "4" 10 11 12
+ P "5" 13 14 15
+ P "6" 16 17 18
+ P "7" 19 20 21
+ P "8" 22 23
+ P "9" 24 25
+ E 0.000000 7.000000 0.000000
+ E 2.394141 6.577848 20.000000
+ E 4.499513 5.362311 40.000000
+ E 6.062178 3.500000 60.000000
+ E 6.893654 1.215537 80.000000
+ E 6.893654 -1.215537 100.000000
+ E 6.062178 -3.500000 120.000000
+ E 4.499513 -5.362311 140.000000
+ E 2.394141 -6.577848 160.000000
+ E 0.000000 -7.000000 180.000000
+ E -2.394141 -6.577848 200.000000
+ E -4.499513 -5.362311 220.000000
+ E -6.062178 -3.500000 240.000000
+ E -6.893654 -1.215537 260.000000
+ E -6.893654 1.215537 280.000000
+ E -6.062178 3.500000 300.000000
+ S 0 0 0.000000 7.000000 0.000000 5.000000
+ S 16777215 0 0.000000 5.000000 0.000000 -5.000000
+ S 0 0 0.000000 -5.000000 0.000000 -7.000000
+ S 0 0 2.394141 6.577848 1.710101 4.698463
+ S 16777215 0 1.710101 4.698463 -1.710101 -4.698463
+ S 0 0 -1.710101 -4.698463 -2.394141 -6.577848
+ S 0 0 4.499513 5.362311 3.213938 3.830222
+ S 16777215 0 3.213938 3.830222 -3.213938 -3.830222
+ S 0 0 -3.213938 -3.830222 -4.499513 -5.362311
+ S 0 0 6.062178 3.500000 4.330127 2.500000
+ S 16777215 0 4.330127 2.500000 -4.330127 -2.500000
+ S 0 0 -4.330127 -2.500000 -6.062178 -3.500000
+ S 0 0 6.893654 1.215537 4.924039 0.868241
+ S 16777215 0 4.924039 0.868241 -4.924039 -0.868241
+ S 0 0 -4.924039 -0.868241 -6.893654 -1.215537
+ S 0 0 6.893654 -1.215537 4.924039 -0.868241
+ S 16777215 0 4.924039 -0.868241 -4.924039 0.868241
+ S 0 0 -4.924039 0.868241 -6.893654 1.215537
+ S 0 0 6.062178 -3.500000 4.330127 -2.500000
+ S 16777215 0 4.330127 -2.500000 -4.330127 2.500000
+ S 0 0 -4.330127 2.500000 -6.062178 3.500000
+ S 0 0 4.499513 -5.362311 3.213938 -3.830222
+ S 16777215 0 3.213938 -3.830222 -3.213938 3.830222
+ S 0 0 2.394141 -6.577848 1.710101 -4.698463
+ S 16777215 0 1.710101 -4.698463 -1.710101 4.698463
+ A3 8424071 0.031250 4.000000 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 5.000000 0.000000 0.000000 0 0.000000 360.000000
+ L3 8424071 0.031250 -0.984375 7.000000 0 1.234289 7.000000 0
+ L3 8424071 0.031250 1.234289 7.000000 0 3.553993 6.155697 0
+ L3 8424071 0.031250 3.553993 6.155697 0 5.445033 4.568926 0
+ L3 8424071 0.031250 5.445033 4.568926 0 6.679322 2.431074 0
+ L3 8424071 0.031250 6.679322 2.431074 0 7.107986 0.000000 0
+ L3 8424071 0.031250 7.107986 0.000000 0 6.679322 -2.431074 0
+ L3 8424071 0.031250 6.679322 -2.431074 0 5.445033 -4.568926 0
+ L3 8424071 0.031250 5.445033 -4.568926 0 3.553993 -6.155697 0
+ L3 8424071 0.031250 3.553993 -6.155697 0 1.234289 -7.000000 0
+ L3 8424071 0.031250 1.234289 -7.000000 0 -1.234289 -7.000000 0
+ L3 8424071 0.031250 -1.234289 -7.000000 0 -3.553993 -6.155697 0
+ L3 8424071 0.031250 -3.553993 -6.155697 0 -5.445033 -4.568926 0
+ L3 8424071 0.031250 -5.445033 -4.568926 0 -6.679322 -2.431074 0
+ L3 8424071 0.031250 -6.679322 -2.431074 0 -7.107986 0.000000 0
+ L3 8424071 0.031250 -7.107986 0.000000 0 -6.679322 2.431074 0
+ L3 8424071 0.031250 -6.679322 2.431074 0 -5.569990 4.352494 0
+ L3 8424071 0.031250 -5.569990 4.352494 0 -7.215439 5.302494 0
+ L3 8424071 0.031250 -7.215439 5.302494 0 -6.510492 6.523497 0
+ L3 8424071 0.031250 -6.510492 6.523497 0 -2.375232 8.900000 0
+ L3 8424071 0.031250 -2.375232 8.900000 0 -0.984375 8.900000 0
+ L3 8424071 0.031250 -0.984375 8.900000 0 -0.984375 7.000000 0
+ F4 13882323 0.000000 4 0
+ -1.257836 6.197374 0
+ -4.725934 4.204284 0
+ -6.052343 6.498448 0
+ -2.584246 8.491538 0
+ L3 8424071 0.031250 -1.257836 6.197374 0 -4.725934 4.204284 0
+ L3 8424071 0.031250 -4.725934 4.204284 0 -6.052343 6.498448 0
+ L3 8424071 0.031250 -6.052343 6.498448 0 -2.584246 8.491538 0
+ L3 8424071 0.031250 -2.584246 8.491538 0 -1.257836 6.197374 0
+END$SEGS
+
+
diff --git a/app/lib/params/HO-Busch.xtp b/app/lib/params/HO-Busch.xtp
new file mode 100644
index 0000000..fd59f60
--- /dev/null
+++ b/app/lib/params/HO-Busch.xtp
@@ -0,0 +1,10 @@
+CONTENTS Busch
+STRUCTURE HO "Busch Trailer Park Airstream Camper 1054"
+ F4 8421504 0.000000 4 0
+ 0.000000 1.102000 0
+ 3.189000 1.102000 0
+ 3.189000 0.000000 0
+ 0.000000 0.000000 0
+ L3 0 0.000000 3.189000 0.846000 0 3.779000 0.551000 0
+ L3 0 0.000000 3.189000 0.256000 0 3.779000 0.551000 0
+ END$SEGS
diff --git a/app/lib/params/HO-ITLA Modular Building System.xtp b/app/lib/params/HO-ITLA Modular Building System.xtp
new file mode 100644
index 0000000..314fa2b
--- /dev/null
+++ b/app/lib/params/HO-ITLA Modular Building System.xtp
@@ -0,0 +1,75 @@
+CONTENTS ITLA HO-Scale Models - Modular Wall System
+STRUCTURE HO "ITLA Scale Models 4051 4 Brick Panles Modular Wall HO4051"
+ Z3 0 1.000000 0.150000 0.000000 0 36.000000 "4051"
+ L3 0 0.250000 0.000000 0.000000 0 3.000000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 3.000000 -0.200000 0 3.000000 0.200000 0
+ END$SEGS
+STRUCTURE HO "ITLA Scale Models 4052 2 Brick Panels/2 Window Panels Modular Wall HO4052"
+ Z3 0 1.000000 0.150000 0.000000 0 36.000000 "4052"
+ L3 0 0.250000 0.000000 0.000000 0 3.000000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 3.000000 -0.200000 0 3.000000 0.200000 0
+ END$SEGS
+STRUCTURE HO "ITLA Scale Models 4053 3 Window Panel w/ Rollup Door Modular Wall HO4053"
+ Z3 0 1.000000 0.150000 0.000000 0 36.000000 "4053"
+ L3 0 0.250000 0.000000 0.000000 0 3.000000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 3.000000 -0.200000 0 3.000000 0.200000 0
+ END$SEGS
+STRUCTURE HO "ITLA Scale Models 4053+4061 Loading Dock Interior Modular Wall HO4053/4061"
+ Z3 0 1.000000 0.150000 0.000000 0 36.000000 "4053"
+ Z3 0 1.000000 0.650000 0.000000 0 36.000000 "4061"
+ L3 0 0.250000 0.000000 0.000000 0 3.000000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 3.000000 -0.200000 0 3.000000 0.200000 0
+ END$SEGS
+STRUCTURE HO "ITLA Scale Models 4053+4062 Entryway Modular Wall HO4053/4062"
+ Z3 0 1.000000 0.150000 0.000000 0 36.000000 "4053"
+ Z3 0 1.000000 0.650000 0.000000 0 36.000000 "4062"
+ L3 0 0.250000 0.000000 0.000000 0 3.000000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 3.000000 -0.200000 0 3.000000 0.200000 0
+ END$SEGS
+STRUCTURE HO "ITLA Scale Models 4054 Large Window Modular Wall HO4054"
+ Z3 0 1.000000 0.150000 0.000000 0 36.000000 "4054"
+ L3 0 0.250000 0.000000 0.000000 0 3.000000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 3.000000 -0.200000 0 3.000000 0.200000 0
+ END$SEGS
+STRUCTURE HO "ITLA Scale Models 4056 Fire Exit Door Modular Wall HO4056"
+ Z3 0 1.000000 0.150000 0.000000 0 36.000000 "4056"
+ L3 0 0.250000 0.000000 0.000000 0 3.000000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 3.000000 -0.200000 0 3.000000 0.200000 0
+#Need to add fire escape
+ END$SEGS
+STRUCTURE HO "ITLA Scale Models 4057 3"" Filler Panel Modular Wall HO4057A"
+ Z3 0 1.000000 0.150000 0.000000 0 36.000000 "4057A"
+ L3 0 0.250000 0.000000 0.000000 0 3.000000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 3.000000 -0.200000 0 3.000000 0.200000 0
+ END$SEGS
+STRUCTURE HO "ITLA Scale Models 4057 1.5"" Filler Panel Modular Wall HO4057B"
+ Z3 0 0.000000 0.150000 0.000000 0 36.000000 "4057B"
+ L3 0 0.250000 0.000000 0.000000 0 1.500000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.100000 0
+ L3 0 0.020000 1.500000 -0.200000 0 1.500000 0.100000 0
+ END$SEGS
+STRUCTURE HO "ITLA Scale Models 4058 8 Window Panels Modular Wall HO4058"
+ Z3 0 1.000000 0.150000 0.000000 0 36.000000 "4058"
+ L3 0 0.250000 0.000000 0.000000 0 3.000000 0.000000 0
+ L3 0 0.020000 0.000000 -0.100000 0 0.000000 0.100000 0
+ L3 0 0.020000 3.000000 -0.100000 0 3.000000 0.100000 0
+ END$SEGS
+STRUCTURE HO "ITLA Scale Models 4060 Rail/Truck Loading Dock Modular Wall HO4060"
+ Z3 0 4.000000 0.150000 0.000000 0 36.000000 "4060"
+ L3 0 0.100000 0.000000 0.000000 0 9.000000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 3.000000 -0.200000 0 3.000000 0.200000 0
+ L3 0 0.020000 6.000000 -0.200000 0 6.000000 0.200000 0
+ L3 0 0.020000 9.000000 -0.200000 0 9.000000 0.200000 0
+ L3 0 0.250000 0.000000 0.000000 0 0.000000 -3.000000 0
+ L3 0 0.250000 9.000000 -3.000000 0 9.000000 0.000000 0
+ L3 0 0.250000 0.000000 -3.000000 0 9.000000 -3.000000 0
+ END$SEGS
diff --git a/app/lib/params/JouefHO.xtp b/app/lib/params/HO-Jouef(Hornby)HO.xtp
index 510e900..0a3579e 100644
--- a/app/lib/params/JouefHO.xtp
+++ b/app/lib/params/HO-Jouef(Hornby)HO.xtp
@@ -1,69 +1,91 @@
CONTENTS Jouef Points & Track Sections
-#Created By Dwyane Ward 31MAR09
SUBCONTENTS Jouef Track - Crossings
TURNOUT HO "Jouef Left Hand Diamond Crossing R.614"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
- E 7.125984 0.000000 90.000000
- E 0.507640 1.265562 292.500000
- E 6.618344 -1.265562 112.500000
- S 0 0.000000 0.000000 0.000000 7.125984 0.000000
- S 0 0.000000 0.507640 1.265562 6.618344 -1.265562
- END
+ E 6.614173 0.000000 90.000000
+ E 0.015311 -1.363498 247.500000
+ E 6.598862 1.363498 67.500000
+ S 0 0.000000 0.000000 0.000000 6.614173 0.000000
+ S 0 0.000000 0.015311 -1.363498 6.598862 1.363498
+ END$SEGS
TURNOUT HO "Jouef Right Hand Diamond Crossing R.615"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 6.614173 0.000000 90.000000
- E 0.015309 1.363493 292.500000
- E 6.598864 -1.363493 112.500000
+ E 0.015311 1.363498 292.500000
+ E 6.598862 -1.363498 112.500000
S 0 0.000000 0.000000 0.000000 6.614173 0.000000
- S 0 0.000000 0.015309 1.363493 6.598864 -1.363493
- END
-
+ S 0 0.000000 0.015311 1.363498 6.598862 -1.363498
+ END$SEGS
SUBCONTENTS Jouef Track - Curves
-TURNOUT HO "Jouef Curve 1st Radius R.604"
+TURNOUT HO "Jouef 22.5d Curve 1st Radius (371mm) R.604"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.589589 -1.111838 112.500000
+ C 0 0.000000 14.606299 0.000000 -14.606299 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Jouef 45d Curve 1st Radius (371mm) R.605"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.328213 -4.278086 135.000000
+ C 0 0.000000 14.606299 0.000000 -14.606299 0.000000 45.000000
+ END$SEGS
+TURNOUT HO "Jouef 11.25d Curve 2nd Radius (438mm) R.643"
P "Normal" 1
E 0.000000 0.000000 270.000000
- E 5.589584 1.111836 67.500000
- C 0 0.000000 -14.606299 0.000019 14.606299 157.500076 22.500000
- END
-TURNOUT HO "Jouef Curve 2nd Radius R.606"
+ E 3.364156 -0.331340 101.250000
+ C 0 0.000000 17.244094 0.000000 -17.244094 0.000000 11.250000
+ END$SEGS
+TURNOUT HO "Jouef 22.5d Curve 2nd Radius (438mm) R.606"
P "Normal" 1
E 0.000000 0.000000 270.000000
- E 6.599024 1.312626 67.500000
- C 0 0.000000 -17.244094 0.000023 17.244094 157.500076 22.500000
- END
-TURNOUT HO "Jouef Curve 3rd Radius R.608"
+ E 6.599029 -1.312626 112.500000
+ C 0 0.000000 17.244094 0.000023 -17.244094 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Jouef 45d Curve 2nd Radius (438mm) R.607"
P "Normal" 1
E 0.000000 0.000000 270.000000
- E 7.608464 1.513416 67.500000
- C 0 0.000000 -19.881890 0.000026 19.881890 157.500076 22.500000
- END
-TURNOUT HO "Jouef Double Curve 3rd Radius R.609"
+ E 12.193416 -5.050678 135.000000
+ C 0 0.000000 17.244094 0.000000 -17.244094 0.000000 45.000000
+ END$SEGS
+TURNOUT HO "Jouef 22.5d Curve 3rd Radius (505mm) R.608"
P "Normal" 1
E 0.000000 0.000000 270.000000
- E 14.058610 5.823261 45.000000
- C 0 0.000000 -19.881890 0.000026 19.881890 135.000076 45.000000
- END
-TURNOUT HO "Jouef 2nd Radius Half Curve R.628"
+ E 7.608470 -1.513419 112.500000
+ C 0 0.000000 19.881890 0.000000 -19.881890 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Jouef 45d Curve 3rd Radius (505mm) R.609"
P "Normal" 1
E 0.000000 0.000000 270.000000
- E 6.543969 0.644524 78.750000
- C 0 0.000000 -33.543307 0.000045 33.543307 168.750076 11.250000
- END
-TURNOUT HO "Jouef 2nd Radius Half Curve R.643"
+ E 14.058619 -5.823271 135.000000
+ C 0 0.000000 19.881890 0.000000 -19.881890 0.000000 45.000000
+ END$SEGS
+TURNOUT HO "Jouef 22.5d Curve 4th Radius (572mm) R.8261"
P "Normal" 1
E 0.000000 0.000000 270.000000
- E 3.364153 0.331340 78.750000
- C 0 0.000000 -17.244094 0.000023 17.244094 168.750076 11.250000
- END
+ E 8.617910 -1.714209 112.500000
+ C 0 0.000000 22.519685 0.000023 -22.519685 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Jouef 45d Curve 4th Radius (572mm) R.8262"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 15.923822 -6.595863 135.000000
+ C 0 0.000000 22.519685 0.000000 -22.519685 0.000000 45.000000
+ END$SEGS
+TURNOUT HO "Jouef 11.25d Large Radius Curve (852mm) R.628"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.543975 -0.644525 101.250000
+ C 0 0.000000 33.543307 0.000000 -33.543307 0.000000 11.250000
+ END$SEGS
-SUBCONTENTS Jouef Track - Points
+SUBCONTENTS Jouef Track - Wye Points
TURNOUT HO "Jouef WYE Point R.8076"
P "Left" 1 2 3
P "Right" 1 4 5
@@ -75,7 +97,9 @@ TURNOUT HO "Jouef WYE Point R.8076"
S 0 0.000000 5.702401 0.497762 6.614173 0.679134
C 0 0.000000 25.904606 0.648497 -25.904606 0.000076 11.250152
S 0 0.000000 5.702401 -0.497762 6.614173 -0.679134
- END
+ END$SEGS
+
+SUBCONTENTS Jouef Track - Straight Points
TURNOUT HO "Jouef Left Hand Std Point R.8073"
P "Normal" 1 2
P "Reverse" 1 3 4
@@ -86,7 +110,7 @@ TURNOUT HO "Jouef Left Hand Std Point R.8073"
S 0 0.000000 0.648600 0.000000 6.614173 0.000000
C 0 0.000000 -13.983514 0.648619 13.983514 157.499924 22.500152
S 0 0.000000 5.999889 1.064444 6.614173 1.318898
- END
+ END$SEGS
TURNOUT HO "Jouef Right Hand Std Point R.8072"
P "Normal" 1 2
P "Reverse" 1 3 4
@@ -97,8 +121,32 @@ TURNOUT HO "Jouef Right Hand Std Point R.8072"
S 0 0.000000 0.648600 0.000000 6.614173 0.000000
C 0 0.000000 13.983514 0.648544 -13.983514 0.000076 22.500152
S 0 0.000000 5.999889 -1.064444 6.614173 -1.318898
- END
+ END$SEGS
+TURNOUT HO "Jouef Left Hand Express(Long) Point R.8077"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 9.645669 0.000000 90.000000
+ E 9.645669 1.318898 78.750000
+ S 0 0.000000 0.000000 0.000000 0.648600 0.000000
+ S 0 0.000000 0.648600 0.000000 9.645669 0.000000
+ C 0 0.000000 -27.625934 0.648637 27.625934 168.749924 11.250152
+ S 0 0.000000 6.038220 0.530838 9.645669 1.318898
+ END$SEGS
+TURNOUT HO "Jouef Right Hand Express(Long) Point R.8078"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 9.645669 0.000000 90.000000
+ E 9.645669 -1.318898 101.250000
+ S 0 0.000000 0.000000 0.000000 0.648600 0.000000
+ S 0 0.000000 0.648600 0.000000 9.645669 0.000000
+ C 0 0.000000 27.625934 0.648490 -27.625934 0.000076 11.250152
+ S 0 0.000000 6.038220 -0.530838 9.645669 -1.318898
+ END$SEGS
+
+SUBCONTENTS Jouef Track - Curve Points
TURNOUT HO "Jouef Left Hand Curved Point R.8074"
P "Normal" 1 6 4 5
P "Reverse" 1 2 3
@@ -111,7 +159,7 @@ TURNOUT HO "Jouef Left Hand Curved Point R.8074"
C 0 0.000000 -14.065585 3.270099 14.065585 157.499924 22.500152
S 0 0.000000 8.652776 1.070691 9.251969 1.318898
S 0 0.000000 1.598662 0.000000 3.270080 0.000000
- END
+ END$SEGS
TURNOUT HO "Jouef Right Hand Curved Point R.8075"
P "Normal" 1 6 4 5
P "Reverse" 1 2 3
@@ -124,30 +172,8 @@ TURNOUT HO "Jouef Right Hand Curved Point R.8075"
C 0 0.000000 14.065585 3.270024 -14.065585 0.000076 22.500152
S 0 0.000000 8.652776 -1.070691 9.251969 -1.318898
S 0 0.000000 1.598662 0.000000 3.270080 0.000000
- END
+ END$SEGS
-TURNOUT HO "Jouef Left Hand Express Point R.8077"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 9.645669 0.000000 90.000000
- E 9.645669 1.318898 78.750000
- S 0 0.000000 0.000000 0.000000 0.648600 0.000000
- S 0 0.000000 0.648600 0.000000 9.645669 0.000000
- C 0 0.000000 -27.625934 0.648637 27.625934 168.749924 11.250152
- S 0 0.000000 6.038220 0.530838 9.645669 1.318898
- END
-TURNOUT HO "Jouef Right Hand Express Point R.8078"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 9.645669 0.000000 90.000000
- E 9.645669 -1.318898 101.250000
- S 0 0.000000 0.000000 0.000000 0.648600 0.000000
- S 0 0.000000 0.648600 0.000000 9.645669 0.000000
- C 0 0.000000 27.625934 0.648490 -27.625934 0.000076 11.250152
- S 0 0.000000 6.038220 -0.530838 9.645669 -1.318898
- END
@@ -157,59 +183,60 @@ TURNOUT HO "Jouef Straight R.600"
E 0.000000 0.000000 270.000000
E 6.614173 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 6.614173 0.000000
- END
+ END$SEGS
TURNOUT HO "Jouef Double Straight R.601"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 13.188976 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 13.188976 0.000000
- END
+ END$SEGS
TURNOUT HO "Jouef Long straight R.603"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 26.377953 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 26.377953 0.000000
- END
+ END$SEGS
TURNOUT HO "Jouef Short Straight R.610"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 1.496063 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 1.496063 0.000000
- END
+ END$SEGS
SUBCONTENTS Jouef Track - Misc
TURNOUT HO "Jouef Power Track R.8206"
P "Normal" 1
E 0.000000 0.000000 270.000000
- E 14.606299 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 14.60629 0.000000
- F 12566463 0.000000 4
- 7.000000 -0.625000 0
- 7.909450 -0.625000 0
- 7.909450 -1.125000 0
- 7.000000 -1.125000 0
- END
+ E 6.614173 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 6.614173 0.000000
+#14.60629
+ F4 12566463 0.000000 4 0
+ 3.500000 -0.625000 0
+ 4.409450 -0.625000 0
+ 4.409450 -1.125000 0
+ 3.500000 -1.125000 0
+ END$SEGS
TURNOUT HO "Jouef Isolating Track R.618"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 6.614173 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 6.614173 0.000000
- L 0 0.050000 0.500000 0.750000 1.500000 0.750000
- L 0 0.050000 1.500000 0.750000 1.500000 -0.750000
- L 0 0.050000 0.500000 -0.750000 1.500000 -0.750000
- L 0 0.050000 0.500000 0.750000 0.500000 -0.750000
- END
+ L3 0 0.050000 0.500000 0.750000 0 1.500000 0.750000 0
+ L3 0 0.050000 1.500000 0.750000 0 1.500000 -0.750000 0
+ L3 0 0.050000 0.500000 -0.750000 0 1.500000 -0.750000 0
+ L3 0 0.050000 0.500000 0.750000 0 0.500000 -0.750000 0
+ END$SEGS
TURNOUT HO "Jouef Railer/Uncoupler Track R.620"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 6.614173 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 6.614173 0.000000
- F 12566463 0.000000 6
+ F4 12566463 0.000000 6 0
0.000000 0.000000 0
0.600000 0.250000 0
6.014173 0.250000 0
6.614173 0.000000 0
6.014173 -0.250000 0
0.600000 -0.250000 0
- END
+ END$SEGS
diff --git a/app/lib/params/HO-Kato.xtp b/app/lib/params/HO-Kato.xtp
index a07776f..5faab01 100644
--- a/app/lib/params/HO-Kato.xtp
+++ b/app/lib/params/HO-Kato.xtp
@@ -1,556 +1,733 @@
-CONTENTS Kato Unitrack HO Scale
-SUBCONTENTS Kato Unitrack HO-Scale Straight Track
-TURNOUT HO "Kato Unitrack Straight 2 3/8 60mm 2-105"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.362205 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.362205 0.000000
- L 11579568 0.053333 0.000000 0.723334 2.362205 0.723334
- L 11579568 0.053333 0.000000 -0.723334 2.362205 -0.723334
- END
-TURNOUT HO "Kato Unitrack Straight 3 11/16 94mm 2-111"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.700787 0.000000 90.000000
- S 0 0 0.000000 0.000000 3.700787 0.000000
- L 11579568 0.053333 0.000000 0.723334 3.700787 0.723334
- L 11579568 0.053333 0.000000 -0.723334 3.700787 -0.723334
- END
-TURNOUT HO "Kato Unitrack Straight 4 1/2 114mm 2-120"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.488189 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.488189 0.000000
- L 11579568 0.053333 0.000000 0.723334 4.488189 0.723334
- L 11579568 0.053333 0.000000 -0.723334 4.488189 -0.723334
- END
-TURNOUT HO "Kato Unitrack Straight 4 7/8 123mm 2-140"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.842520 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.842520 0.000000
- L 11579568 0.053333 0.000000 0.723334 4.842520 0.723334
- L 11579568 0.053333 0.000000 -0.723334 4.842520 -0.723334
- END
-TURNOUT HO "Kato Unitrack Straight 6 7/8 174mm 2-130"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.850394 0.000000 90.000000
- S 0 0 0.000000 0.000000 6.850394 0.000000
- L 11579568 0.053333 0.000000 0.723334 6.850394 0.723334
- L 11579568 0.053333 0.000000 -0.723334 6.850394 -0.723334
- END
-TURNOUT HO "Kato Unitrack Straight 9 3/4 246mm 2-150"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.685039 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.685039 0.000000
- L 11579568 0.053333 0.000000 0.723334 9.685039 0.723334
- L 11579568 0.053333 0.000000 -0.723334 9.685039 -0.723334
- END
-TURNOUT HO "Kato Unitrack Straight 8 15/16 227mm 2-160"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.937008 0.000000 90.000000
- S 0 0 0.000000 0.000000 8.937008 0.000000
- L 11579568 0.053333 0.000000 0.723334 8.937008 0.723334
- L 11579568 0.053333 0.000000 -0.723334 8.937008 -0.723334
- END
-TURNOUT HO "Kato Unitrack Straight 14 1/2 369mm 2-180"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 14.527559 0.000000 90.000000
- S 0 0 0.000000 0.000000 14.527559 0.000000
- L 11579568 0.053333 0.000000 0.723334 14.527559 0.723334
- L 11579568 0.053333 0.000000 -0.723334 14.527559 -0.723334
- END
-TURNOUT HO "Kato Unitrack Straight 5 7/8 149mm 2-193"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.826772 0.000000 90.000000
- S 0 0 0.000000 0.000000 5.826772 0.000000
- L 11579568 0.053333 0.000000 0.723334 5.826772 0.723334
- L 11579568 0.053333 0.000000 -0.723334 5.826772 -0.723334
- END
-
-###############################################################################
-###############################################################################
-SUBCONTENTS Kato Unitrack HO-Scale Concrete-Tie Straight Track
-TURNOUT HO "Kato Unitrack Concrete-Tie Straight 4 7/8 123mm 2-141"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.842520 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.842520 0.000000
- L 11579568 0.053333 0.000000 0.723334 4.842520 0.723334
- L 11579568 0.053333 0.000000 -0.723334 4.842520 -0.723334
- END
-TURNOUT HO "Kato Unitrack Concrete-Tie Straight 9 3/4 246mm 2-152"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.685039 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.685039 0.000000
- L 11579568 0.053333 0.000000 0.723334 9.685039 0.723334
- L 11579568 0.053333 0.000000 -0.723334 9.685039 -0.723334
- END
-TURNOUT HO "Kato Unitrack Concrete-Tie Feeder Trk 9 3/4 246mm 2-153"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.685039 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.685039 0.000000
- L 11579568 0.053333 0.000000 0.723334 9.685039 0.723334
- L 11579568 0.053333 0.000000 -0.723334 9.685039 -0.723334
- END
-TURNOUT HO "Kato Unitrack Concrete-Tie Straight 14 1/2 369mm 2-181"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 14.527559 0.000000 90.000000
- S 0 0 0.000000 0.000000 14.527559 0.000000
- L 11579568 0.053333 0.000000 0.723334 14.527559 0.723334
- L 11579568 0.053333 0.000000 -0.723334 14.527559 -0.723334
- END
-
-###############################################################################
-###############################################################################
-SUBCONTENTS Kato Unitrack HO-Scale Curve Track
-TURNOUT HO "Kato Unitrack Curved R21 5/8 550mm 22.5° 2-210"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.286452 -1.648278 112.500000
- C 0 0 21.653543 0.000000 -21.653543 0.000000 22.500000
- A 11579568 0.053333 20.930209 0.000000 -21.653543 0.000000 22.500000
- A 11579568 0.053333 22.376877 0.000000 -21.653543 0.000000 22.500000
- END
-TURNOUT HO "Kato Unitrack Curved R24 610mm 22.5° 2-220"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.190429 -1.828090 112.500000
- C 0 0 24.015748 0.000000 -24.015748 0.000000 22.500000
- A 11579568 0.053333 23.292414 0.000000 -24.015748 0.000000 22.500000
- A 11579568 0.053333 24.739082 0.000000 -24.015748 0.000000 22.500000
- END
-TURNOUT HO "Kato Unitrack Curved R26 3/8 670mm 22.5° 2-230"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.094406 -2.007902 112.500000
- C 0 0 26.377953 0.000000 -26.377953 0.000000 22.500000
- A 11579568 0.053333 25.654619 0.000000 -26.377953 0.000000 22.500000
- A 11579568 0.053333 27.101287 0.000000 -26.377953 0.000000 22.500000
- END
-TURNOUT HO "Kato Unitrack Curved 28 3/4 730mm 22.5° 2-240"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.998382 -2.187714 112.500000
- C 0 0 28.740157 0.000000 -28.740157 0.000000 22.500000
- A 11579568 0.053333 28.016823 0.000000 -28.740157 0.000000 22.500000
- A 11579568 0.053333 29.463491 0.000000 -28.740157 0.000000 22.500000
- END
-TURNOUT HO "Kato Unitrack Curved 31 1/8 790mm 22.5° 2-250"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 11.902359 -2.367526 112.500000
- C 0 0 31.102362 0.000000 -31.102362 0.000000 22.500000
- A 11579568 0.053333 30.379028 0.000000 -31.102362 0.000000 22.500000
- A 11579568 0.053333 31.825696 0.000000 -31.102362 0.000000 22.500000
- END
-TURNOUT HO "Kato Unitrack Curved R16 7/8 430mm 22.5° 2-260"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.478499 -1.288654 112.500000
- C 0 0 16.929134 0.000000 -16.929134 0.000000 22.500000
- A 11579568 0.053333 16.205800 0.000000 -16.929134 0.000000 22.500000
- A 11579568 0.053333 17.652468 0.000000 -16.929134 0.000000 22.500000
- END
-TURNOUT HO "Kato Unitrack Curved R19 1/4 490mm 22.5° 2-270"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.382476 -1.468466 112.500000
- C 0 0 19.291339 0.000000 -19.291339 0.000000 22.500000
- A 11579568 0.053333 18.568005 0.000000 -19.291339 0.000000 22.500000
- A 11579568 0.053333 20.014673 0.000000 -19.291339 0.000000 22.500000
- END
-TURNOUT HO "Kato Unitrack Curved R34 1/8 867mm 22.5° 2-290"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.927282 -0.518570 100.000000
- C 0 0 34.133858 0.000000 -34.133858 0.000000 10.000000
- A 11579568 0.053333 33.410524 0.000000 -34.133858 0.000000 10.000000
- A 11579568 0.053333 34.857192 0.000000 -34.133858 0.000000 10.000000
- END
-
-###############################################################################
-###############################################################################
-SUBCONTENTS Kato Unitrack HO-Scale Superelevated Concrete-Tie Curve Track
-TURNOUT HO "Kato Unitrack Superelevated CT Curved 28 3/4 730mm 22.5° 2-241"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.998382 -2.187714 112.500000
- C 0 0 28.740157 0.000000 -28.740157 0.000000 22.500000
- A 11579568 0.053333 28.016823 0.000000 -28.740157 0.000000 22.500000
- A 11579568 0.053333 29.463491 0.000000 -28.740157 0.000000 22.500000
- END
-TURNOUT HO "Kato Unitrack Superelevated CT Easement Curved (L) 28 3/4 730mm 22.5° 2-242 Left"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.998382 -2.187714 112.500000
- C 0 0 28.740157 0.000000 -28.740157 0.000000 22.500000
- A 11579568 0.053333 28.016823 0.000000 -28.740157 0.000000 22.500000
- A 11579568 0.053333 29.463491 0.000000 -28.740157 0.000000 22.500000
- END
-TURNOUT HO "Kato Unitrack Superelevated CT Easement Curved (R) 28 3/4 730mm 22.5° 2-242 Right"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.998382 -2.187714 112.500000
- C 0 0 28.740157 0.000000 -28.740157 0.000000 22.500000
- A 11579568 0.053333 28.016823 0.000000 -28.740157 0.000000 22.500000
- A 11579568 0.053333 29.463491 0.000000 -28.740157 0.000000 22.500000
- END
-TURNOUT HO "Kato Unitrack Superelevated CT Curved 31 1/8 790mm 22.5° 2-251"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 11.902359 -2.367526 112.500000
- C 0 0 31.102362 0.000000 -31.102362 0.000000 22.500000
- A 11579568 0.053333 30.379028 0.000000 -31.102362 0.000000 22.500000
- A 11579568 0.053333 31.825696 0.000000 -31.102362 0.000000 22.500000
- END
-TURNOUT HO "Kato Unitrack Superelevated CT Curved (L) 31 1/8 790mm 22.5° 2-252 Left"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 11.902359 -2.367526 112.500000
- C 0 0 31.102362 0.000000 -31.102362 0.000000 22.500000
- A 11579568 0.053333 30.379028 0.000000 -31.102362 0.000000 22.500000
- A 11579568 0.053333 31.825696 0.000000 -31.102362 0.000000 22.500000
- END
-TURNOUT HO "Kato Unitrack Superelevated CT Curved (R) 31 1/8 790mm 22.5° 2-252 Right"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 11.902359 -2.367526 112.500000
- C 0 0 31.102362 0.000000 -31.102362 0.000000 22.500000
- A 11579568 0.053333 30.379028 0.000000 -31.102362 0.000000 22.500000
- A 11579568 0.053333 31.825696 0.000000 -31.102362 0.000000 22.500000
- END
-
-###############################################################################
-###############################################################################
-SUBCONTENTS Kato Unitrack HO-Scale #4 Turnouts
-TURNOUT HO "Kato Unitrack #4-L Man Turnout 2-840"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 9.685039 0.000000 90.000000
- E 7.382476 1.468466 67.500000
- S 0 0 0.000000 0.000000 9.685039 0.000000
- C 0 0 -19.291339 0.000000 19.291339 157.500000 22.500000
- L 11579568 0.053333 0.000000 -0.723334 9.685039 -0.723334
- L 11579568 0.053333 7.685039 0.723334 9.685039 0.723334
- A 11579568 0.053333 -18.568005 0.000000 19.291339 157.500000 22.500000
- END
-TURNOUT HO "Kato Unitrack #4-R Man Turnout 2-841"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 9.685039 0.000000 90.000000
- E 7.382476 -1.468466 112.500000
- S 0 0 0.000000 0.000000 9.685039 0.000000
- C 0 0 19.291339 0.000000 -19.291339 0.000000 22.500000
- L 11579568 0.053333 0.000000 0.723334 9.685039 0.723334
- L 11579568 0.053333 7.685039 -0.723334 9.685039 -0.723334
- A 11579568 0.053333 18.568005 0.000000 -19.291339 0.000000 22.500000
- END
-TURNOUT HO "Kato Unitrack #4-L Powered Turnout 2-850"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 7.283465 0.000000 90.000000
- E 7.049704 1.179716 71.000000
- S 0 0 0.000000 0.000000 7.283465 0.000000
- C 0 0 -21.653543 0.000000 21.653543 161.000000 19.000000
- L 11579568 0.053333 0.000000 -0.723334 7.283465 -0.723334
- A 11579568 0.053333 -20.930209 0.000000 21.653543 161.000000 19.000000
- END
-TURNOUT HO "Kato Unitrack #4-R Powered Turnout 2-851"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 7.283465 0.000000 90.000000
- E 7.049704 -1.179716 109.000000
- S 0 0 0.000000 0.000000 7.283465 0.000000
- C 0 0 21.653543 0.000000 -21.653543 0.000000 19.000000
- L 11579568 0.053333 0.000000 0.723334 7.283465 0.723334
- A 11579568 0.053333 20.930209 0.000000 -21.653543 0.000000 19.000000
- END
-TURNOUT HO "Kato Unitrack S61L (incl w/#4 TO) "
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.401575 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.401575 0.000000
- L 11579568 0.053333 0.000000 0.723334 2.401575 0.723334
- L 11579568 0.053333 0.000000 -0.723334 2.401575 -0.723334
- END
-TURNOUT HO "Kato Unitrack S61R (incl w/#4 TO) "
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.401575 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.401575 0.000000
- L 11579568 0.053333 0.000000 0.723334 2.401575 0.723334
- L 11579568 0.053333 0.000000 -0.723334 2.401575 -0.723334
- END
-TURNOUT HO "Kato Unitrack S114 (incl w/#4 TO) "
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.488189 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.488189 0.000000
- L 11579568 0.053333 0.000000 0.723334 4.488189 0.723334
- L 11579568 0.053333 0.000000 -0.723334 4.488189 -0.723334
- END
-TURNOUT HO "Kato Unitrack R550-3.5° (incl w/#4 TO) "
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.321917 -0.040388 93.500000
- C 0 0 21.653543 0.000000 -21.654000 0.000000 3.500000
- A 11579568 0.053333 20.930209 0.000000 -21.653543 0.000000 3.500000
- A 11579568 0.053333 22.376877 0.000000 -21.653543 0.000000 3.500000
- END
-TURNOUT HO "Kato Unitrack R550-15.5° (incl w/#4 TO) "
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.786658 -0.787530 105.500000
- C 0 0 21.653543 0.000000 -21.653543 0.000000 15.500000
- A 11579568 0.053333 20.930209 0.000000 -21.653543 0.000000 15.500000
- A 11579568 0.053333 22.376877 0.000000 -21.653543 0.000000 15.500000
- END
-TURNOUT HO "Kato Unitrack R550-3.5+15.5° (incl w/#4 TO) "
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.049704 -1.179716 109.000000
- C 0 0 21.653543 0.000000 -21.653543 0.000000 19.000000
- A 11579568 0.053333 20.930209 0.000000 -21.653543 0.000000 19.000000
- A 11579568 0.053333 22.376877 0.000000 -21.653543 0.000000 19.000000
- END
-TURNOUT HO "Kato Unitrack #4 Single LH Crossover Turnout 3-113"
- P "Normal" 1 2 0 3 4
- P "Reverse" 1 5 6 7 4
- E 0.000000 0.000000 270.000000
- E 14.173228 0.000000 90.000000
- E 0.000000 2.362205 270.000000
- E 14.173228 2.362205 90.000000
- S 0 0.000000 0.000000 0.000000 1.089381 0.000000
- S 0 0.000000 1.089381 0.000000 14.173228 0.000000
- S 0 0.000000 0.000000 2.362205 13.083847 2.362205
- S 0 0.000000 13.083847 2.362205 14.173228 2.362205
- C 0 0.000000 -15.637979 1.089402 15.637979 159.848175 20.151901
- S 0 0.000000 6.476821 0.957315 7.696407 1.404890
- C 0 0.000000 15.637979 13.083866 -13.275767 339.848175 20.151901
- L 11579568 0.053333 -0.000000 -0.723334 14.173226 -0.723317
- L 11579568 0.053333 0.000000 0.723334 1.089381 0.723335
- L 11579568 0.053333 8.040175 0.723343 14.173228 0.723351
- L 11579568 0.053333 -0.000002 1.638871 6.133051 1.638879
- L 11579568 0.053333 0.000000 3.085539 14.173228 3.085540
- L 11579568 0.053333 13.083845 1.638871 14.173226 1.638872
- A 11579568 0.053333 14.914645 1.089402 15.637979 159.848175 20.151901
- A 11579568 0.053333 14.914645 13.083866 -13.275767 339.848175 20.151901
-END
-TURNOUT HO "Kato Unitrack Straight 114mm(incl w/ #4 Slip) 3-113B"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.488189 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.488189 0.000000
- L 11579568 0.053333 0.000000 0.723334 4.488189 0.723334
- L 11579568 0.053333 0.000000 -0.723334 4.488189 -0.723334
-END
-TURNOUT HO "Kato Unitrack Straight 246mm(incl w/ #4 Slip) 3-113C"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.685039 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.685039 0.000000
- L 11579568 0.053333 0.000000 0.723334 9.685039 0.723334
- L 11579568 0.053333 0.000000 -0.723334 9.685039 -0.723334
-END
-
-###############################################################################
-###############################################################################
-SUBCONTENTS Kato Unitrack HO-Scale #6 Turnouts
-TURNOUT HO "Kato Unitrack #6-L Powered Turnout 2-860"
- P "Normal" 1
- P "Reverse" 2 3
- E 0.000000 0.000000 270.000000
- E 9.803150 0.000000 90.000000
- E 9.803150 1.181102 80.000000
- S 0 0.000000 0.000000 0.000000 9.803150 0.000000
- C 0 0.000000 -34.133858 0.000000 34.133858 170.000000 10.000000
- S 0 0.000000 5.927282 0.518570 9.803150 1.181102
- L 11579568 0.053333 0.000000 -0.723334 9.803150 -0.723334
- A 11579568 0.053333 -33.410524 0.000000 34.133858 170.000000 10.000000
- L 11579568 0.053333 5.801677 1.230915 9.560039 1.903665
- END
-TURNOUT HO "Kato Unitrack #6-R Powered Turnout 2-861"
- P "Normal" 1
- P "Reverse" 2 3
- E 0.000000 0.000000 270.000000
- E 9.803150 0.000000 90.000000
- E 9.803150 -1.181102 100.000000
- S 0 0.000000 0.000000 0.000000 9.803150 0.000000
- C 0 0.000000 34.133858 0.000000 -34.133858 0.000000 10.000000
- S 0 0.000000 5.927282 -0.518570 9.803150 -1.181102
- L 11579568 0.053333 0.000000 0.723334 9.803150 0.723334
- A 11579568 0.053333 33.410524 0.000000 -34.133858 0.000000 10.000000
- L 11579568 0.053333 5.801677 -1.230915 9.560039 -1.903665
- END
-TURNOUT HO "Kato Unitrack S97 (incl w/ #6 TO) "
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.818898 0.000000 90.000000
- S 0 0 0.000000 0.000000 3.818898 0.000000
- L 11579568 0.053333 0.000000 0.723334 3.818898 0.723334
- L 11579568 0.053333 0.000000 -0.723334 3.818898 -0.723334
- END
-TURNOUT HO "Kato Unitrack S94 (incl w/ #6 TO) "
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.700787 0.000000 90.000000
- S 0 0 0.000000 0.000000 3.700787 0.000000
- L 11579568 0.053333 0.000000 0.723334 3.700787 0.723334
- L 11579568 0.053333 0.000000 -0.723334 3.700787 -0.723334
- END
-TURNOUT HO "Kato Unitrack S149 (incl w/ #6 TO) "
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.866142 0.000000 90.000000
- S 0 0 0.000000 0.000000 5.866142 0.000000
- L 11579568 0.053333 0.000000 0.723334 5.866142 0.723334
- L 11579568 0.053333 0.000000 -0.723334 5.866142 -0.723334
- END
-TURNOUT HO "Kato Unitrack R867-10° (incl w/ #6 TO) "
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.927282 -0.518570 100.000000
- C 0 0 34.134000 0.000000 -34.134000 0.000000 10.000000
- A 11579568 0.053333 33.410666 0.000000 -34.134000 0.000000 10.000000
- A 11579568 0.053333 34.857334 0.000000 -34.134000 0.000000 10.000000
- END
-TURNOUT HO "Kato Unitrack #6-L Man Turnout 2-862"
- P "Normal" 1
- P "Reverse" 2 3
- E 0.000000 0.000000 270.000000
- E 9.803150 0.000000 90.000000
- E 9.803150 1.181102 80.000000
- S 0 0.000000 0.000000 0.000000 9.803150 0.000000
- C 0 0.000000 -34.133858 0.000000 34.133858 170.000000 10.000000
- S 0 0.000000 5.927282 0.518570 9.803150 1.181102
- L 11579568 0.053333 0.000000 -0.723334 9.803150 -0.723334
- A 11579568 0.053333 -33.410524 0.000000 34.133858 170.000000 10.000000
- L 11579568 0.053333 5.801677 1.230915 9.560039 1.903665
-END
-TURNOUT HO "Kato Unitrack #6-R Man Turnout 2-863"
- P "Normal" 1
- P "Reverse" 2 3
- E 0.000000 0.000000 270.000000
- E 9.803150 0.000000 90.000000
- E 9.803150 -1.181102 100.000000
- S 0 0.000000 0.000000 0.000000 9.803150 0.000000
- C 0 0.000000 34.133858 0.000000 -34.133858 0.000000 10.000000
- S 0 0.000000 5.927282 -0.518570 9.803150 -1.181102
- L 11579568 0.053333 0.000000 0.723334 9.803150 0.723334
- A 11579568 0.053333 33.410524 0.000000 -34.133858 0.000000 10.000000
- L 11579568 0.053333 5.801677 -1.230915 9.560039 -1.903665
-END
-TURNOUT HO "Kato Unitrack #6 Single LH Crossover Turnout 3-114"
- P "Normal" 1 2 0 3 4
- P "Reverse" 1 5 6 7 4
- E 0.000000 0.000000 270.000000
- E 19.370079 0.000000 90.000000
- E 0.000000 2.362205 270.000000
- E 19.370079 2.362205 90.000000
- S 0 0.000000 0.000000 0.000000 1.147461 0.000000
- S 0 0.000000 1.147461 0.000000 19.370079 0.000000
- S 0 0.000000 0.000000 2.362205 18.222618 2.362205
- S 0 0.000000 18.222618 2.362205 19.370079 2.362205
- C 0 0.000000 -31.269120 1.147502 31.269120 165.348561 14.651515
- S 0 0.000000 9.056644 1.016803 10.313435 1.345402
- C 0 0.000000 31.269120 18.222658 -28.906905 345.348561 14.651515
- L 11579568 0.053333 -0.000002 -0.723334 19.370077 -0.723310
- L 11579568 0.053333 0.000000 0.723334 1.147461 0.723336
- L 11579568 0.053333 10.828227 0.723347 19.370079 0.723358
- L 11579568 0.053333 -0.000002 1.638871 8.541850 1.638882
- L 11579568 0.053333 0.000000 3.085539 19.370079 3.085541
- L 11579568 0.053333 18.222616 1.638871 19.370077 1.638873
- A 11579568 0.053333 30.545786 1.147502 31.269120 165.806421 14.193655
- A 11579568 0.053333 30.545786 18.222658 -28.906905 345.806421 14.193655
-END
-
-###############################################################################
-###############################################################################
-SUBCONTENTS Kato Unitrack HO-Scale Misc Tracks
-TURNOUT HO "Kato Unitrack Feeder 9 3/4 246mm 2-151"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.685039 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.685039 0.000000
- L 11579568 0.053333 0.000000 0.723334 9.685039 0.723334
- L 11579568 0.053333 0.000000 -0.723334 9.685039 -0.723334
-END
-TURNOUT HO "Kato Unitrack Bumper 4 1/4 109mm 2-170"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 3.291339 0.000000
- L 11579568 0.053333 0.000000 0.723334 4.291339 0.723334
- L 11579568 0.053333 0.000000 -0.723334 4.291339 -0.723334
- L 11579568 0.053333 4.291339 0.723334 4.291339 -0.723334
-END
-TURNOUT HO "Kato Unitrack Crossing 2 3/8 60mm 90° 2-401"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 2.362205 0.000000 90.000000
- E 1.181025 1.181025 0.000000
- E 1.181025 -1.181025 180.000000
- S 0 0 0.000000 0.000000 2.362205 0.000000
- S 0 0 1.181025 1.181025 1.181025 -1.181025
- L 11579568 0.053333 0.000000 0.723334 0.457769 0.723334
- L 11579568 0.053333 0.000000 -0.723334 0.457769 -0.723334
- L 11579568 0.053333 1.904437 0.723334 2.362205 0.723334
- L 11579568 0.053333 1.904437 -0.723334 2.362205 -0.723334
- L 11579568 0.053333 0.457769 1.181025 0.457769 0.723334
- L 11579568 0.053333 1.904437 1.181025 1.904437 0.723334
- L 11579568 0.053333 0.457769 -0.723334 0.457769 -1.181025
- L 11579568 0.053333 1.904437 -0.723334 1.904437 -1.181025
-END
-TURNOUT HO "Kato Unitrack RoadCrossing+Rerailer 4 7/8 123mm 2-142"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.842520 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.842520 0.000000
- L 11579568 0.053333 0.000000 0.723334 4.842520 0.723334
- L 11579568 0.053333 0.000000 -0.723334 4.842520 -0.723334
- F 12632256 0.000000 4
- 0.000000 0.723334 0
- 0.500000 1.123334 0
- 4.342520 1.123334 0
- 4.842520 0.723334 0
- F 12632256 0.000000 4
- 0.000000 -0.723334 0
- 0.500000 -1.123334 0
- 4.342520 -1.123334 0
- 4.842520 -0.723334 0
-END
-TURNOUT HO "Kato Unitrack Uncoupler Track 4 7/8 123mm 2-143"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.842520 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.842520 0.000000
- L 11579568 0.053333 0.000000 0.723334 4.842520 0.723334
- L 11579568 0.053333 0.000000 -0.723334 4.842520 -0.723334
- L 0 0.53333 1.000000 0.000000 3.842520 0.000000
-END
-TURNOUT HO "Kato Unitrack 3-Lamp Automatic Signal 4 7/8 123mm 2-601"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.842520 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.842520 0.000000
- L 11579568 0.053333 0.000000 0.723334 4.842520 0.723334
- L 11579568 0.053333 0.000000 -0.723334 4.842520 -0.723334
- F 12632256 0.000000 4
- 1.929134 0.723334 0
- 1.929134 1.707586 0
- 2.913386 1.707586 0
- 2.913386 0.723334 0
- G 0 0.053333 0.200000 2.421260 1.215460 0
-END
+CONTENTS Kato Unitrack HO-Scale
+
+SUBCONTENTS Kato Unitrack HO-Scale Wood-Tie Straight Track
+TURNOUT HO "Kato Unitrack Straight 2 3/8 60mm 2-105"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.362205 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.362205 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 2.362205 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 2.362205 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 2.362205 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 2.362205 -0.807087 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack Straight 3 11/16 94mm 2-111"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.700787 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.700787 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 3.700787 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 3.700787 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 3.700787 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 3.700787 -0.807087 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack Straight 4 1/2 114mm 2-120"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.488189 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 4.488189 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 4.488189 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 4.488189 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 4.488189 -0.807087 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack Straight 4 7/8 123mm 2-140"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.842520 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.842520 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 4.842520 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 4.842520 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 4.842520 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 4.842520 -0.807087 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack Straight 6 7/8 174mm 2-130"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.850394 0.000000 90.000000
+ S 0 0 0.000000 0.000000 6.850394 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 6.850394 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 6.850394 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 6.850394 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 6.850394 -0.807087 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack Straight 9 3/4 246mm 2-150"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.685039 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.685039 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 9.685039 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 9.685039 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 9.685039 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 9.685039 -0.807087 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack Straight 8 15/16 227mm 2-160"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.937008 0.000000 90.000000
+ S 0 0 0.000000 0.000000 8.937008 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 8.937008 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 8.937008 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 8.937008 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 8.937008 -0.807087 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack Straight 14 1/2 369mm 2-180"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 14.527559 0.000000 90.000000
+ S 0 0 0.000000 0.000000 14.527559 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 14.527559 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 14.527559 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 14.527559 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 14.527559 -0.807087 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack Straight 5 7/8 149mm 2-193"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.826772 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.826772 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 5.826772 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 5.826772 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 5.826772 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 5.826772 -0.807087 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack Straight 97mm 2-192"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.818898 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.818898 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 3.818898 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 3.818898 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 3.818898 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 3.818898 -0.807087 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack Expansion Straight 212-252mm 2-194"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.346457 0.000000 90.000000
+ X adjustable 8.346457 9.921260
+ S 0 0 0.000000 0.000000 8.346457 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 8.346457 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 8.346457 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 8.346457 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 8.346457 -0.807087 0
+ END$SEGS
+
+###############################################################################
+###############################################################################
+SUBCONTENTS Kato Unitrack HO-Scale Wood-Tie Curve Track
+TURNOUT HO "Kato Unitrack Curved R21 5/8 550mm 22.5d 2-210"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.286452 -1.648278 112.500000
+ C 0 0 21.653543 0.000000 -21.653543 0.000000 22.500000
+ A3 11579568 0.020000 22.460630 0.000000 -21.653543 0 0.000000 22.500000
+ A3 11579568 0.010000 22.263780 0.000000 -21.653543 0 0.000000 22.500000
+ A3 11579568 0.010000 21.043307 0.000000 -21.653543 0 0.000000 22.500000
+ A3 11579568 0.020000 20.846457 0.000000 -21.653543 0 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack Curved R24 610mm 22.5d 2-220"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.190429 -1.828090 112.500000
+ C 0 0 24.015748 0.000000 -24.015748 0.000000 22.500000
+ A3 11579568 0.020000 24.822835 0.000000 -24.015748 0 0.000000 22.500000
+ A3 11579568 0.010000 24.625984 0.000000 -24.015748 0 0.000000 22.500000
+ A3 11579568 0.010000 23.405512 0.000000 -24.015748 0 0.000000 22.500000
+ A3 11579568 0.020000 23.208661 0.000000 -24.015748 0 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack Curved R26 3/8 670mm 22.5d 2-230"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.094406 -2.007902 112.500000
+ C 0 0 26.377953 0.000000 -26.377953 0.000000 22.500000
+ A3 11579568 0.020000 27.185039 0.000000 -26.377953 0 0.000000 22.500000
+ A3 11579568 0.010000 26.988189 0.000000 -26.377953 0 0.000000 22.500000
+ A3 11579568 0.010000 25.767717 0.000000 -26.377953 0 0.000000 22.500000
+ A3 11579568 0.020000 25.570866 0.000000 -26.377953 0 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack Curved 28 3/4 730mm 22.5d 2-240"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.998382 -2.187714 112.500000
+ C 0 0 28.740157 0.000000 -28.740157 0.000000 22.500000
+ A3 11579568 0.020000 29.547244 0.000000 -28.740157 0 0.000000 22.500000
+ A3 11579568 0.010000 29.350394 0.000000 -28.740157 0 0.000000 22.500000
+ A3 11579568 0.010000 28.129921 0.000000 -28.740157 0 0.000000 22.500000
+ A3 11579568 0.020000 27.933071 0.000000 -28.740157 0 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack Curved 31 1/8 790mm 22.5d 2-250"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.902359 -2.367526 112.500000
+ C 0 0 31.102362 0.000000 -31.102362 0.000000 22.500000
+ A3 11579568 0.020000 31.909449 0.000000 -31.102362 0 0.000000 22.500000
+ A3 11579568 0.010000 31.712598 0.000000 -31.102362 0 0.000000 22.500000
+ A3 11579568 0.010000 30.492126 0.000000 -31.102362 0 0.000000 22.500000
+ A3 11579568 0.020000 30.295276 0.000000 -31.102362 0 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack Curved R16 7/8 430mm 22.5d 2-260"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.478499 -1.288654 112.500000
+ C 0 0 16.929134 0.000000 -16.929134 0.000000 22.500000
+ A3 11579568 0.020000 17.736220 0.000000 -16.929134 0 0.000000 22.500000
+ A3 11579568 0.010000 17.539370 0.000000 -16.929134 0 0.000000 22.500000
+ A3 11579568 0.010000 16.318898 0.000000 -16.929134 0 0.000000 22.500000
+ A3 11579568 0.020000 16.122047 0.000000 -16.929134 0 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack Curved R19 1/4 490mm 22.5d 2-270"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.382476 -1.468466 112.500000
+ C 0 0 19.291339 0.000000 -19.291339 0.000000 22.500000
+ A3 11579568 0.020000 20.098425 0.000000 -19.291339 0 0.000000 22.500000
+ A3 11579568 0.010000 19.901575 0.000000 -19.291339 0 0.000000 22.500000
+ A3 11579568 0.010000 18.681102 0.000000 -19.291339 0 0.000000 22.500000
+ A3 11579568 0.020000 18.484252 0.000000 -19.291339 0 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack Curved R14 9/16 370mm 22.5d 2-280"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.574522 -1.108841 112.500000
+ C 0 0 14.566929 0.000000 -14.566929 0.000000 22.500000
+ A3 11579568 0.020000 15.374016 0.000000 -14.566929 0 0.000000 22.500000
+ A3 11579568 0.010000 15.177165 0.000000 -14.566929 0 0.000000 22.500000
+ A3 11579568 0.010000 13.956693 0.000000 -14.566929 0 0.000000 22.500000
+ A3 11579568 0.020000 13.759843 0.000000 -14.566929 0 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack Curved R34 1/8 867mm 10.0d 2-290"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.927282 -0.518570 100.000000
+ C 0 0 34.133858 0.000000 -34.133858 0.000000 10.000000
+ A3 11579568 0.020000 34.940945 0.000000 -34.133858 0 0.000000 10.000000
+ A3 11579568 0.010000 34.744094 0.000000 -34.133858 0 0.000000 10.000000
+ A3 11579568 0.010000 33.523622 0.000000 -34.133858 0 0.000000 10.000000
+ A3 11579568 0.020000 33.326772 0.000000 -34.133858 0 0.000000 10.000000
+ END$SEGS
+
+###############################################################################
+###############################################################################
+SUBCONTENTS Kato Unitrack HO-Scale Wood-Tie #4 Turnouts
+TURNOUT HO "Kato Unitrack #4-L Man Turnout 2-840"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 9.685039 0.000000 90.000000
+ E 7.382476 1.468466 67.500000
+ S 0 0 0.000000 0.000000 9.685039 0.000000
+ C 0 0 -19.291339 0.000000 19.291339 157.500000 22.500000
+ L3 11579568 0.020000 0.000000 -0.807087 0 9.685039 -0.807087 0
+ L3 11579568 0.010000 0.000000 -0.607974 0 9.685039 -0.607974 0
+ L3 11579568 0.020000 7.685039 0.807087 0 9.685039 0.807087 0
+ L3 11579568 0.010000 7.685039 0.607974 0 9.685039 0.607974 0
+ A3 11579568 0.010000 18.681102 0.000000 19.291339 0 157.500000 22.500000
+ A3 11579568 0.020000 18.484252 0.000000 19.291339 0 157.500000 22.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack #4-R Man Turnout 2-841"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 9.685039 0.000000 90.000000
+ E 7.382476 -1.468466 112.500000
+ S 0 0 0.000000 0.000000 9.685039 0.000000
+ C 0 0 19.291339 0.000000 -19.291339 0.000000 22.500000
+ L3 11579568 0.020000 0.000000 0.807087 0 9.685039 0.807087 0
+ L3 11579568 0.010000 0.000000 0.607974 0 9.685039 0.607974 0
+ L3 11579568 0.020000 7.685039 -0.807087 0 9.685039 -0.807087 0
+ L3 11579568 0.010000 7.685039 -0.607974 0 9.685039 -0.607974 0
+ A3 11579568 0.010000 18.681102 0.000000 -19.291339 0 0.000000 22.500000
+ A3 11579568 0.020000 18.484252 0.000000 -19.291339 0 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack #4-L Man Turnout 2-852"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 7.283465 0.000000 90.000000
+ E 7.049704 1.179716 71.000000
+ S 0 0 0.000000 0.000000 7.283465 0.000000
+ C 0 0 -21.653543 0.000000 21.653543 161.000000 19.000000
+ L3 11579568 0.020000 0.000000 -0.807087 0 7.283465 -0.807087 0
+ L3 11579568 0.010000 0.000000 -0.607974 0 7.283465 -0.607974 0
+ A3 11579568 0.010000 21.043307 0.000000 21.653543 0 161.000000 19.000000
+ A3 11579568 0.020000 20.846457 0.000000 21.653543 0 161.000000 19.000000
+ END$SEGS
+TURNOUT HO "Kato Unitrack #4-R Man Turnout 2-853"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 7.283465 0.000000 90.000000
+ E 7.049704 -1.179716 109.000000
+ S 0 0 0.000000 0.000000 7.283465 0.000000
+ C 0 0 21.653543 0.000000 -21.653543 0.000000 19.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 7.283465 0.807087 0
+ L3 11579568 0.010000 0.000000 0.607974 0 7.283465 0.607974 0
+ A3 11579568 0.010000 21.043307 0.000000 -21.653543 0 0.000000 19.000000
+ A3 11579568 0.020000 20.846457 0.000000 -21.653543 0 0.000000 19.000000
+ END$SEGS
+TURNOUT HO "Kato Unitrack S61L (incl w/#4 TO) "
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.401575 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.401575 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 2.401575 0.807087 0
+ L3 11579568 0.010000 0.000000 0.607974 0 2.401575 0.607974 0
+ L3 11579568 0.010000 0.000000 -0.607974 0 2.401575 -0.607974 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 2.401575 -0.807087 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack S61R (incl w/#4 TO) "
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.401575 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.401575 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 2.401575 0.807087 0
+ L3 11579568 0.010000 0.000000 0.607974 0 2.401575 0.607974 0
+ L3 11579568 0.010000 0.000000 -0.607974 0 2.401575 -0.607974 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 2.401575 -0.807087 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack S114 (incl w/#4 TO) "
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.488189 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 4.488189 0.807087 0
+ L3 11579568 0.010000 0.000000 0.607974 0 4.488189 0.607974 0
+ L3 11579568 0.010000 0.000000 -0.607974 0 4.488189 -0.607974 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 4.488189 -0.807087 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack R550-3.5d (incl w/#4 TO) "
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.321917 -0.040388 93.500000
+ C 0 0 21.653543 0.000000 -21.654000 0.000000 3.500000
+ A3 11579568 0.020000 22.460630 0.000000 -21.653543 0 0.000000 3.500000
+ A3 11579568 0.010000 22.263780 0.000000 -21.653543 0 0.000000 3.500000
+ A3 11579568 0.010000 21.043307 0.000000 -21.653543 0 0.000000 3.500000
+ A3 11579568 0.020000 20.846457 0.000000 -21.653543 0 0.000000 3.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack R550-15.5d (incl w/#4 TO) "
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.786658 -0.787530 105.500000
+ C 0 0 21.653543 0.000000 -21.653543 0.000000 15.500000
+ A3 11579568 0.020000 22.460630 0.000000 -21.653543 0 0.000000 15.500000
+ A3 11579568 0.010000 22.263780 0.000000 -21.653543 0 0.000000 15.500000
+ A3 11579568 0.010000 21.043307 0.000000 -21.653543 0 0.000000 15.500000
+ A3 11579568 0.020000 20.846457 0.000000 -21.653543 0 0.000000 15.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack #4 Single LH Crossover Turnout 3-113"
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 1 5 6 7 4
+ E 0.000000 0.000000 270.000000
+ E 14.173228 0.000000 90.000000
+ E 0.000000 2.362205 270.000000
+ E 14.173228 2.362205 90.000000
+ S 0 0.000000 0.000000 0.000000 1.089381 0.000000
+ S 0 0.000000 1.089381 0.000000 14.173228 0.000000
+ S 0 0.000000 0.000000 2.362205 13.083847 2.362205
+ S 0 0.000000 13.083847 2.362205 14.173228 2.362205
+ C 0 0.000000 -15.637979 1.089402 15.637979 159.848175 20.151901
+ S 0 0.000000 6.476821 0.957315 7.696407 1.404890
+ C 0 0.000000 15.637979 13.083866 -13.275767 339.848175 20.151901
+ L3 11579568 0.020000 0.000000 -0.807087 0 14.173228 -0.807087 0
+ L3 11579568 0.010000 0.000000 -0.607974 0 14.173228 -0.607974 0
+ L3 11579568 0.010000 0.000000 0.607974 0 1.089381 0.607974 0
+ L3 11579568 0.020000 0.000000 0.807087 0 1.089381 0.807087 0
+ L3 11579568 0.010000 8.423228 0.607974 0 14.173228 0.607974 0
+ L3 11579568 0.020000 8.423228 0.807087 0 14.173228 0.807087 0
+ L3 11579568 0.010000 0.000000 1.754231 0 5.750000 1.754231 0
+ L3 11579568 0.020000 0.000000 1.555118 0 5.750000 1.555118 0
+ L3 11579568 0.010000 13.083845 1.754231 0 14.173228 1.754231 0
+ L3 11579568 0.020000 13.083845 1.555118 0 14.173228 1.555118 0
+ L3 11579568 0.010000 0.000000 2.970179 0 14.173228 2.970179 0
+ L3 11579568 0.020000 0.000000 3.169292 0 14.173228 3.169292 0
+ A3 11579568 0.020000 14.830892 1.089402 15.637979 0 161.750000 18.250000
+ A3 11579568 0.010000 15.030005 1.089402 15.637979 0 161.750000 18.250000
+ A3 11579568 0.020000 14.830892 13.083866 -13.275767 0 341.750000 18.250000
+ A3 11579568 0.010000 15.030005 13.083866 -13.275767 0 341.750000 18.250000
+END$SEGS
+TURNOUT HO "Kato Unitrack Straight 114mm(incl w/ 3-113) 3-113B"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.488189 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 4.488189 0.807087 0
+ L3 11579568 0.010000 0.000000 0.607974 0 4.488189 0.607974 0
+ L3 11579568 0.010000 0.000000 -0.607974 0 4.488189 -0.607974 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 4.488189 -0.807087 0
+END$SEGS
+TURNOUT HO "Kato Unitrack Straight 246mm(incl w/ 3-113) 3-113C"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.685039 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.685039 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 9.685039 0.807087 0
+ L3 11579568 0.010000 0.000000 0.607974 0 9.685039 0.607974 0
+ L3 11579568 0.010000 0.000000 -0.607974 0 9.685039 -0.607974 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 9.685039 -0.807087 0
+END$SEGS
+
+###############################################################################
+###############################################################################
+SUBCONTENTS Kato Unitrack HO-Scale Wood-Tie #6 Turnouts
+TURNOUT HO "Kato Unitrack #6-L Powered Turnout 2-860"
+ P "Normal" 1
+ P "Reverse" 2 3
+ E 0.000000 0.000000 270.000000
+ E 9.803150 0.000000 90.000000
+ E 9.803150 1.181102 80.000000
+ S 0 0.000000 0.000000 0.000000 9.803150 0.000000
+ C 0 0.000000 -34.133858 0.000000 34.133858 170.000000 10.000000
+ S 0 0.000000 5.927282 0.518570 9.803150 1.181102
+ L3 11579568 0.020000 0.000000 -0.807087 0 9.803150 -0.807087 0
+ L3 11579568 0.010000 0.000000 -0.607974 0 9.803150 -0.607974 0
+ A3 11579568 0.020000 -33.326771 0.000000 34.133858 0 170.000000 10.000000
+ A3 11579568 0.010000 -33.525884 0.000000 34.133858 0 170.000000 10.000000
+ L3 11579568 0.010000 5.824842 1.117852 0 9.700710 1.780384 0
+ L3 11579568 0.020000 5.791293 1.314118 0 9.667161 1.976650 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack #6-R Powered Turnout 2-861"
+ P "Normal" 1
+ P "Reverse" 2 3
+ E 0.000000 0.000000 270.000000
+ E 9.803150 0.000000 90.000000
+ E 9.803150 -1.181102 100.000000
+ S 0 0.000000 0.000000 0.000000 9.803150 0.000000
+ C 0 0.000000 34.133858 0.000000 -34.133858 0.000000 10.000000
+ S 0 0.000000 5.927282 -0.518570 9.803150 -1.181102
+ L3 11579568 0.020000 0.000000 0.807087 0 9.803150 0.807087 0
+ L3 11579568 0.010000 0.000000 0.607974 0 9.803150 0.607974 0
+ A3 11579568 0.020000 33.326771 0.000000 -34.133858 0 0.000000 10.000000
+ A3 11579568 0.010000 33.525884 0.000000 -34.133858 0 0.000000 10.000000
+ L3 11579568 0.010000 5.824842 -1.117852 0 9.700710 -1.780384 0
+ L3 11579568 0.020000 5.791293 -1.314118 0 9.667161 -1.976650 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack S97 (incl w/ #6 TO) "
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.818898 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.818898 0.000000
+ L 11579568 0.020000 0.000000 0.807087 3.818898 0.807087
+ L 11579568 0.010000 0.000000 0.607974 3.818898 0.607974
+ L 11579568 0.010000 0.000000 -0.607974 3.818898 -0.607974
+ L 11579568 0.020000 0.000000 -0.807087 3.818898 -0.807087
+ END$SEGS
+TURNOUT HO "Kato Unitrack S94 (incl w/ #6 TO) "
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.700787 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.700787 0.000000
+ L 11579568 0.020000 0.000000 0.807087 3.700787 0.807087
+ L 11579568 0.010000 0.000000 0.607974 3.700787 0.607974
+ L 11579568 0.010000 0.000000 -0.607974 3.700787 -0.607974
+ L 11579568 0.020000 0.000000 -0.807087 3.700787 -0.807087
+ END$SEGS
+TURNOUT HO "Kato Unitrack S149 (incl w/ #6 TO) "
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.866142 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.866142 0.000000
+ L 11579568 0.020000 0.000000 0.807087 5.866142 0.807087
+ L 11579568 0.010000 0.000000 0.607974 5.866142 0.607974
+ L 11579568 0.010000 0.000000 -0.607974 5.866142 -0.607974
+ L 11579568 0.020000 0.000000 -0.807087 5.866142 -0.807087
+ END$SEGS
+TURNOUT HO "Kato Unitrack R867-10d (incl w/ #6 TO) "
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.927282 -0.518570 100.000000
+ C 0 0 34.134000 0.000000 -34.134000 0.000000 10.000000
+ A3 11579568 0.020000 34.940945 0.000000 -34.133858 0 0.000000 10.000000
+ A3 11579568 0.010000 34.744094 0.000000 -34.133858 0 0.000000 10.000000
+ A3 11579568 0.010000 33.523622 0.000000 -34.133858 0 0.000000 10.000000
+ A3 11579568 0.020000 33.326772 0.000000 -34.133858 0 0.000000 10.000000
+ END$SEGS
+TURNOUT HO "Kato Unitrack #6-L Man Turnout 2-862"
+ P "Normal" 1
+ P "Reverse" 2 3
+ E 0.000000 0.000000 270.000000
+ E 9.803150 0.000000 90.000000
+ E 9.803150 1.181102 80.000000
+ S 0 0.000000 0.000000 0.000000 9.803150 0.000000
+ C 0 0.000000 -34.133858 0.000000 34.133858 170.000000 10.000000
+ S 0 0.000000 5.927282 0.518570 9.803150 1.181102
+ L3 11579568 0.020000 0.000000 -0.807087 0 9.803150 -0.807087 0
+ L3 11579568 0.010000 0.000000 -0.607974 0 9.803150 -0.607974 0
+ A3 11579568 0.020000 -33.326771 0.000000 34.133858 0 170.000000 10.000000
+ A3 11579568 0.010000 -33.525884 0.000000 34.133858 0 170.000000 10.000000
+ L3 11579568 0.010000 5.824842 1.117852 0 9.700710 1.780384 0
+ L3 11579568 0.020000 5.791293 1.314118 0 9.667161 1.976650 0
+END$SEGS
+TURNOUT HO "Kato Unitrack #6-R Man Turnout 2-863"
+ P "Normal" 1
+ P "Reverse" 2 3
+ E 0.000000 0.000000 270.000000
+ E 9.803150 0.000000 90.000000
+ E 9.803150 -1.181102 100.000000
+ S 0 0.000000 0.000000 0.000000 9.803150 0.000000
+ C 0 0.000000 34.133858 0.000000 -34.133858 0.000000 10.000000
+ S 0 0.000000 5.927282 -0.518570 9.803150 -1.181102
+ L3 11579568 0.020000 0.000000 0.807087 0 9.803150 0.807087 0
+ L3 11579568 0.010000 0.000000 0.607974 0 9.803150 0.607974 0
+ A3 11579568 0.020000 33.326771 0.000000 -34.133858 0 0.000000 10.000000
+ A3 11579568 0.010000 33.525884 0.000000 -34.133858 0 0.000000 10.000000
+ L3 11579568 0.010000 5.824842 -1.117852 0 9.700710 -1.780384 0
+ L3 11579568 0.020000 5.791293 -1.314118 0 9.667161 -1.976650 0
+END$SEGS
+TURNOUT HO "Kato Unitrack #6 Single LH Crossover Turnout 3-114"
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 1 5 6 7 4
+ E 0.000000 0.000000 270.000000
+ E 19.370079 0.000000 90.000000
+ E 0.000000 2.362205 270.000000
+ E 19.370079 2.362205 90.000000
+ S 0 0.000000 0.000000 0.000000 1.147461 0.000000
+ S 0 0.000000 1.147461 0.000000 19.370079 0.000000
+ S 0 0.000000 0.000000 2.362205 18.222618 2.362205
+ S 0 0.000000 18.222618 2.362205 19.370079 2.362205
+ C 0 0.000000 -31.269120 1.147502 31.269120 165.348561 14.651515
+ S 0 0.000000 9.056644 1.016803 10.313435 1.345402
+ C 0 0.000000 31.269120 18.222658 -28.906905 345.348561 14.651515
+ L3 11579568 0.020000 0.000000 -0.807087 0 19.370079 -0.807087 0
+ L3 11579568 0.010000 0.000000 -0.607974 0 19.370079 -0.607974 0
+ L3 11579568 0.010000 0.000000 0.607974 0 1.147461 0.607974 0
+ L3 11579568 0.020000 0.000000 0.807087 0 1.147461 0.807087 0
+ L3 11579568 0.010000 11.470079 0.607974 0 19.370079 0.607974 0
+ L3 11579568 0.020000 11.470079 0.807087 0 19.370079 0.807087 0
+ L3 11579568 0.020000 0.000000 1.555118 0 7.900000 1.555118 0
+ L3 11579568 0.010000 0.000000 1.751969 0 7.900000 1.751969 0
+ L3 11579568 0.010000 18.222616 1.751969 0 19.370077 1.751969 0
+ L3 11579568 0.020000 18.222616 1.555118 0 19.370077 1.555118 0
+ L3 11579568 0.010000 0.000000 2.972441 0 19.370079 2.972441 0
+ L3 11579568 0.020000 0.000000 3.169291 0 19.370079 3.169291 0
+ A3 11579568 0.020000 30.462033 1.147502 31.269120 0 167.250000 12.750000
+ A3 11579568 0.010000 30.661146 1.147502 31.269120 0 167.250000 12.750000
+ A3 11579568 0.020000 30.462033 18.222658 -28.906905 0 347.250000 12.750000
+ A3 11579568 0.010000 30.661146 18.222658 -28.906905 0 347.250000 12.750000
+END$SEGS
+
+###############################################################################
+###############################################################################
+SUBCONTENTS Kato Unitrack HO-Scale Wood-Tie Misc Tracks
+TURNOUT HO "Kato Unitrack Feeder 9 3/4 246mm 2-151"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.685039 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.685039 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 9.685039 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 9.685039 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 9.685039 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 9.685039 -0.807087 0
+END$SEGS
+TURNOUT HO "Kato Unitrack Bumper 4 1/4 109mm 2-170"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 3.267717 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 4.291339 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 3.346457 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 3.346457 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 4.291339 -0.807087 0
+ L3 11579568 0.020000 4.291339 0.807087 0 4.291339 -0.807087 0
+ L3 11579568 0.010000 3.346457 0.610236 0 3.346457 -0.610236 0
+#Bumper
+ L3 0 0.030000 1.600000 0.314960 0 2.100000 0.000000 0
+ L3 0 0.030000 1.600000 -0.314960 0 2.100000 -0.000000 0
+ L3 0 0.080000 2.100000 0.300000 0 2.100000 -0.300000 0
+ L3 0 0.030000 2.100000 0.000000 0 3.267717 0.314960 0
+ L3 0 0.030000 2.100000 0.000000 0 3.267717 -0.314960 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack Crossing 2 3/8 60mm 90d 2-401"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 2.362205 0.000000 90.000000
+ E 1.181025 1.181025 0.000000
+ E 1.181025 -1.181025 180.000000
+ S 0 0 0.000000 0.000000 2.362205 0.000000
+ S 0 0 1.181025 1.181025 1.181025 -1.181025
+ L3 11579568 0.020000 0.000000 0.807087 0 0.457769 0.807087 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 0.457769 -0.807087 0
+ L3 11579568 0.020000 1.904437 0.807087 0 2.362205 0.807087 0
+ L3 11579568 0.020000 1.904437 -0.807087 0 2.362205 -0.807087 0
+ L3 11579568 0.020000 0.457769 1.181025 0 0.457769 0.807087 0
+ L3 11579568 0.020000 1.904437 1.181025 0 1.904437 0.807087 0
+ L3 11579568 0.020000 0.457769 -0.807087 0 0.457769 -1.181025 0
+ L3 11579568 0.020000 1.904437 -0.807087 0 1.904437 -1.181025 0
+END$SEGS
+TURNOUT HO "Kato Unitrack RoadCrossing+Rerailer 4 7/8 123mm 2-142"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.842520 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.842520 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 4.842520 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 4.842520 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 4.842520 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 4.842520 -0.807087 0
+ F4 12632256 0.000000 4 0
+ 0.000000 0.807087 0
+ 0.500000 1.123334 0
+ 4.342520 1.123334 0
+ 4.842520 0.807087 0
+ F4 12632256 0.000000 4 0
+ 0.000000 -0.807087 0
+ 0.500000 -1.123334 0
+ 4.342520 -1.123334 0
+ 4.842520 -0.807087 0
+END$SEGS
+TURNOUT HO "Kato Unitrack Uncoupler Track 4 7/8 123mm 2-143"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.842520 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.842520 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 4.842520 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 4.842520 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 4.842520 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 4.842520 -0.807087 0
+ L3 0 0.53333 1.000000 0.000000 0 3.842520 0.000000 0
+END$SEGS
+TURNOUT HO "Kato Unitrack 3-Lamp Automatic Signal 4 7/8 123mm 2-601"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.842520 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.842520 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 4.842520 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 4.842520 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 4.842520 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 4.842520 -0.807087 0
+ F4 12632256 0.000000 4 0
+ 1.929134 0.807087 0
+ 1.929134 1.707586 0
+ 2.913386 1.707586 0
+ 2.913386 0.807087 0
+ G3 0 0.020000 0.200000 2.421260 1.215460 0
+END$SEGS
+
+###############################################################################
+###############################################################################
+SUBCONTENTS Kato Unitrack HO-Scale Concrete-Tie Straight Track
+TURNOUT HO "Kato Unitrack Concrete-Tie Straight 4 7/8 123mm 2-141"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.842520 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.842520 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 4.842520 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 4.842520 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 4.842520 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 4.842520 -0.807087 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack Concrete-Tie Straight 9 3/4 246mm 2-152"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.685039 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.685039 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 9.685039 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 9.685039 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 9.685039 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 9.685039 -0.807087 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack Concrete-Tie Feeder Trk 9 3/4 246mm 2-153"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.685039 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.685039 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 9.685039 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 9.685039 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 9.685039 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 9.685039 -0.807087 0
+ END$SEGS
+TURNOUT HO "Kato Unitrack Concrete-Tie Straight 14 1/2 369mm 2-181"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 14.527559 0.000000 90.000000
+ S 0 0 0.000000 0.000000 14.527559 0.000000
+ L3 11579568 0.020000 0.000000 0.807087 0 14.527559 0.807087 0
+ L3 11579568 0.010000 0.000000 0.610236 0 14.527559 0.610236 0
+ L3 11579568 0.010000 0.000000 -0.610236 0 14.527559 -0.610236 0
+ L3 11579568 0.020000 0.000000 -0.807087 0 14.527559 -0.807087 0
+ END$SEGS
+
+
+SUBCONTENTS Kato Unitrack HO-Scale Concrete-Tie Curve Track
+TURNOUT HO "Kato Unitrack CT Flat Curved 60 7/8 1546mm 11.25d 2-321"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.874395 -1.169526 101.250000
+ C 0 0 60.866142 0.000000 -60.866142 0.000000 11.250000
+ A3 11579568 0.020000 61.673228 0.000000 -60.866142 0 0.000000 11.250000
+ A3 11579568 0.010000 61.476378 0.000000 -60.866142 0 0.000000 11.250000
+ A3 11579568 0.010000 60.255906 0.000000 -60.866142 0 0.000000 11.250000
+ A3 11579568 0.020000 60.059055 0.000000 -60.866142 0 0.000000 11.250000
+ END$SEGS
+TURNOUT HO "Kato Unitrack CT Flat Curved 63 1/4 1606mm 11.25d 2-331"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.335238 -1.214915 101.250000
+ C 0 0 63.228346 0.000000 -63.228346 0.000000 11.250000
+ A3 11579568 0.020000 64.035433 0.000000 -63.228346 0 0.000000 11.250000
+ A3 11579568 0.010000 63.838583 0.000000 -63.228346 0 0.000000 11.250000
+ A3 11579568 0.010000 62.618110 0.000000 -63.228346 0 0.000000 11.250000
+ A3 11579568 0.020000 62.421260 0.000000 -63.228346 0 0.000000 11.250000
+ END$SEGS
+
+
+SUBCONTENTS Kato Unitrack HO-Scale Superelevated Concrete-Tie Curve Track
+TURNOUT HO "Kato Unitrack Superelevated CT Curved 28 3/4 730mm 22.5d 2-241"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.998382 -2.187714 112.500000
+ C 0 0 28.740157 0.000000 -28.740157 0.000000 22.500000
+ A3 11579568 0.020000 29.547244 0.000000 -28.740157 0 0.000000 22.500000
+ A3 11579568 0.010000 29.350394 0.000000 -28.740157 0 0.000000 22.500000
+ A3 11579568 0.010000 28.129921 0.000000 -28.740157 0 0.000000 22.500000
+ A3 11579568 0.020000 27.933071 0.000000 -28.740157 0 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack Superelevated CT Easement Curved (L) 28 3/4 730mm 22.5d 2-242 Left"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.998382 -2.187714 112.500000
+ C 0 0 28.740157 0.000000 -28.740157 0.000000 22.500000
+ A3 11579568 0.020000 29.547244 0.000000 -28.740157 0 0.000000 22.500000
+ A3 11579568 0.010000 29.350394 0.000000 -28.740157 0 0.000000 22.500000
+ A3 11579568 0.010000 28.129921 0.000000 -28.740157 0 0.000000 22.500000
+ A3 11579568 0.020000 27.933071 0.000000 -28.740157 0 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack Superelevated CT Easement Curved (R) 28 3/4 730mm 22.5d 2-242 Right"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.998382 -2.187714 112.500000
+ C 0 0 28.740157 0.000000 -28.740157 0.000000 22.500000
+ A3 11579568 0.020000 29.547244 0.000000 -28.740157 0 0.000000 22.500000
+ A3 11579568 0.010000 29.350394 0.000000 -28.740157 0 0.000000 22.500000
+ A3 11579568 0.010000 28.129921 0.000000 -28.740157 0 0.000000 22.500000
+ A3 11579568 0.020000 27.933071 0.000000 -28.740157 0 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack Superelevated CT Curved 31 1/8 790mm 22.5d 2-251"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.902359 -2.367526 112.500000
+ C 0 0 31.102362 0.000000 -31.102362 0.000000 22.500000
+ A3 11579568 0.020000 31.909449 0.000000 -31.102362 0 0.000000 22.500000
+ A3 11579568 0.010000 31.712598 0.000000 -31.102362 0 0.000000 22.500000
+ A3 11579568 0.010000 30.492126 0.000000 -31.102362 0 0.000000 22.500000
+ A3 11579568 0.020000 30.295276 0.000000 -31.102362 0 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack Superelevated CT Easement Curved (L) 31 1/8 790mm 22.5d 2-252 Left"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.902359 -2.367526 112.500000
+ C 0 0 31.102362 0.000000 -31.102362 0.000000 22.500000
+ A3 11579568 0.020000 31.909449 0.000000 -31.102362 0 0.000000 22.500000
+ A3 11579568 0.010000 31.712598 0.000000 -31.102362 0 0.000000 22.500000
+ A3 11579568 0.010000 30.492126 0.000000 -31.102362 0 0.000000 22.500000
+ A3 11579568 0.020000 30.295276 0.000000 -31.102362 0 0.000000 22.500000
+ END$SEGS
+TURNOUT HO "Kato Unitrack Superelevated CT Easement Curved (R) 31 1/8 790mm 22.5d 2-252 Right"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.902359 -2.367526 112.500000
+ C 0 0 31.102362 0.000000 -31.102362 0.000000 22.500000
+ A3 11579568 0.020000 31.909449 0.000000 -31.102362 0 0.000000 22.500000
+ A3 11579568 0.010000 31.712598 0.000000 -31.102362 0 0.000000 22.500000
+ A3 11579568 0.010000 30.492126 0.000000 -31.102362 0 0.000000 22.500000
+ A3 11579568 0.020000 30.295276 0.000000 -31.102362 0 0.000000 22.500000
+ END$SEGS
diff --git a/app/lib/params/HO-Lionel MagLock FasTrack.xtp b/app/lib/params/HO-Lionel MagLock FasTrack.xtp
new file mode 100644
index 0000000..f9d09b1
--- /dev/null
+++ b/app/lib/params/HO-Lionel MagLock FasTrack.xtp
@@ -0,0 +1,95 @@
+CONTENTS Lionel MagLock FasTrack HO Scale
+SUBCONTENTS Lionel ML FasTrack - Straight Track
+TURNOUT HO "Lionel ML FasTrack Straight 9"" 871818020"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ L 11579568 0.053333 0.000000 1.000000 9.000000 1.000000
+ L 11579568 0.053333 0.000000 -1.000000 9.000000 -1.000000
+ END$SEGS
+TURNOUT HO "Lionel ML FasTrack Straight 5"" 8768054"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.000000 0.000000
+ L 11579568 0.053333 0.000000 1.000000 5.000000 1.000000
+ L 11579568 0.053333 0.000000 -1.000000 5.000000 -1.000000
+ END$SEGS
+TURNOUT HO "Lionel ML FasTrack Straight 4.5"" 8768044"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.500000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.500000 0.000000
+ L 11579568 0.053333 0.000000 1.000000 4.500000 1.000000
+ L 11579568 0.053333 0.000000 -1.000000 4.500000 -1.000000
+ END$SEGS
+TURNOUT HO "Lionel ML FasTrack Straight 3"" 8768034"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.000000 0.000000
+ L 11579568 0.053333 0.000000 1.000000 3.000000 1.000000
+ L 11579568 0.053333 0.000000 -1.000000 3.000000 -1.000000
+ END$SEGS
+TURNOUT HO "Lionel ML FasTrack Straight 1.5"" 8768024"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.500000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.500000 0.000000
+ L 11579568 0.053333 0.000000 1.000000 1.500000 1.000000
+ L 11579568 0.053333 0.000000 -1.000000 1.500000 -1.000000
+ END$SEGS
+TURNOUT HO "Lionel ML FasTrack Straight 1"" 8768014"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.000000 0.000000
+ L 11579568 0.053333 0.000000 1.000000 1.000000 1.000000
+ L 11579568 0.053333 0.000000 -1.000000 1.000000 -1.000000
+ END$SEGS
+
+SUBCONTENTS Lionel ML FasTrack - Curve Track
+TURNOUT HO "Lionel ML FasTrack Curved 20""R 30.0d 871818010"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.500000 -2.545517 120.000000
+ C 0 0 19.000000 0.000000 -19.000000 0.000000 30.000000
+ A 11579568 0.053333 18.000000 0.000000 -19.000000 0.000000 30.000000
+ A 11579568 0.053333 20.000000 0.000000 -19.000000 0.000000 30.000000
+ END$SEGS
+TURNOUT HO "Lionel ML FasTrack Curved 20""R 15.0d 8768064"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.917562 -0.647409 105.000000
+ C 0 0 19.000000 0.000000 -19.000000 0.000000 15.000000
+ A 11579568 0.053333 18.000000 0.000000 -19.000000 0.000000 15.000000
+ A 11579568 0.053333 20.000000 0.000000 -19.000000 0.000000 15.000000
+ END$SEGS
+TURNOUT HO "Lionel ML FasTrack Curved 20""R 7.5d 8768074"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.479998 -0.162548 97.500000
+ C 0 0 19.000000 0.000000 -19.000000 0.000000 7.500000
+ A 11579568 0.053333 18.000000 0.000000 -19.000000 0.000000 7.500000
+ A 11579568 0.053333 20.000000 0.000000 -19.000000 0.000000 7.500000
+ END$SEGS
+
+SUBCONTENTS Lionel ML FasTrack - Crossings
+TURNOUT HO "Lionel ML FasTrack 90d Cross 8768090"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 5.000000 0.000000 90.000000
+ E 2.500000 2.500000 0.000000
+ E 2.500000 -2.500000 180.000000
+ S 0 0 0.000000 0.000000 5.000000 0.000000
+ S 0 0 2.500000 -2.500000 2.500000 2.500000
+ L 11579568 0.053333 0.000000 1.000000 1.500000 1.000000
+ L 11579568 0.053333 0.000000 -1.000000 1.500000 -1.000000
+ L 11579568 0.053333 3.500000 1.000000 5.000000 1.000000
+ L 11579568 0.053333 3.500000 -1.000000 5.000000 -1.000000
+ L 11579568 0.053333 1.500000 2.500000 1.500000 1.000000
+ L 11579568 0.053333 3.500000 2.500000 3.500000 1.000000
+ L 11579568 0.053333 1.500000 -2.500000 1.500000 -1.000000
+ L 11579568 0.053333 3.500000 -2.500000 3.500000 -1.000000
+ END$SEGS
diff --git a/app/lib/params/HO-Mehano.xtp b/app/lib/params/HO-Mehano.xtp
index 5ff9743..04f571f 100644
--- a/app/lib/params/HO-Mehano.xtp
+++ b/app/lib/params/HO-Mehano.xtp
@@ -1,135 +1,135 @@
-CONTENTS Mehano HO Track
-SUBCONTENTS Mehano Track - Straights
-TURNOUT HO "Mehano Flex Section 914.4mm F245"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 36.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 36.000000 0.000000
- END
-TURNOUT HO "Mehano Straight Track 228.6mm F223"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 9.000000 0.000000
- END
-TURNOUT HO "Mehano Straight Track 152.4mm F238"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 6.000000 0.000000
- END
-TURNOUT HO "Mehano Straight Track 76.2mm F239"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 3.000000 0.000000
- END
-
-SUBCONTENTS Mehano Track - Curves
-TURNOUT HO "Mehano Curve Track 457.2mm 30d F210"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 2.411542 60.000000
- C 0 0.000000 -18.000000 0.000000 18.000000 150.000000 30.000000
- END
-TURNOUT HO "Mehano Curved Terminal/Rerailer Track F269"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 2.411542 60.000000
- C 0 0.000000 -18.000000 0.000000 18.000000 150.000000 30.000000
- A 7960953 0.600000 -17.300000 0.000000 18.000000 155.000000 20.000000
- A 7960953 0.500000 -18.000000 0.000000 18.000000 155.000000 20.000000
- A 7960953 0.600000 -18.700000 0.000000 18.000000 155.000000 20.000000
- A 7960953 0.500000 -19.200000 0.000000 18.000000 163.750000 2.500000
- END
-TURNOUT HO "Mehano Curved Track 457.2mm 10d F233"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.125667 0.273460 80.000000
- C 0 0.000000 -18.000000 0.000000 18.000000 170.000000 10.000000
- END
-
-SUBCONTENTS Mehano Track - Crossings
-TURNOUT HO "Mehano 45d Crossing Track 76.2mm F228"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 3.000000 0.000000 90.000000
- E 0.439338 1.060658 315.000000
- E 2.560662 -1.060658 135.000000
- S 0 0.000000 0.000000 0.000000 3.000000 0.000000
- S 0 0.000000 0.439338 1.060658 2.560662 -1.060658
- END
-
-SUBCONTENTS Mehano Track - Switches
-TURNOUT HO "Mehano Left Remote Switch F278"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- E 7.656415 1.085533 70.000000
- S 0 0.000000 0.000000 0.000000 2.149705 0.000000
- S 0 0.000000 2.149705 0.000000 9.000000 0.000000
- C 0 0.000000 -14.315797 2.149724 14.315797 160.000000 20.000000
- S 0 0.000000 7.046027 0.863360 7.656415 1.085533
- F4 7960953 0.000000 6 1
- 1.500000 -0.600000 0
- 1.500000 -1.000000 0
- 1.850000 -1.200000 0
- 5.650000 -1.200000 0
- 6.000000 -1.000000 0
- 6.000000 -0.600000 0
- END
-TURNOUT HO "Mehano Right Remote Switch F279"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- E 7.656415 -1.085533 110.000000
- S 0 0.000000 0.000000 0.000000 2.149705 0.000000
- S 0 0.000000 2.149705 0.000000 9.000000 0.000000
- C 0 0.000000 14.315797 2.149648 -14.315797 0.000000 20.000000
- S 0 0.000000 7.046027 -0.863360 7.656415 -1.085533
- F4 7960953 0.000000 6 1
- 1.500000 0.600000 0
- 1.500000 1.000000 0
- 1.850000 1.200000 0
- 5.650000 1.200000 0
- 6.000000 1.000000 0
- 6.000000 0.600000 0
- END
-TURNOUT HO "Mehano Left Manual Switch F282"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- E 7.656415 1.085533 70.000000
- S 0 0.000000 0.000000 0.000000 2.149705 0.000000
- S 0 0.000000 2.149705 0.000000 9.000000 0.000000
- C 0 0.000000 -14.315797 2.149724 14.315797 160.000000 20.000000
- S 0 0.000000 7.046027 0.863360 7.656415 1.085533
- F4 7960953 0.000000 6 1
- 1.500000 -0.600000 0
- 1.500000 -1.000000 0
- 1.850000 -1.200000 0
- 5.650000 -1.200000 0
- 6.000000 -1.000000 0
- 6.000000 -0.600000 0
- END
-TURNOUT HO "Mehano Right Manual Switch F283"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- E 7.656415 -1.085533 110.000000
- S 0 0.000000 0.000000 0.000000 2.149705 0.000000
- S 0 0.000000 2.149705 0.000000 9.000000 0.000000
- C 0 0.000000 14.315797 2.149648 -14.315797 0.000000 20.000000
- S 0 0.000000 7.046027 -0.863360 7.656415 -1.085533
- F4 7960953 0.000000 6 1
- 1.500000 0.600000 0
- 1.500000 1.000000 0
- 1.850000 1.200000 0
- 5.650000 1.200000 0
- 6.000000 1.000000 0
- 6.000000 0.600000 0
- END
+CONTENTS Mehano HO Track
+SUBCONTENTS Mehano Track - Straights
+TURNOUT HO "Mehano Flex Section 914.4mm F245"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 36.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 36.000000 0.000000
+ END$SEGS
+TURNOUT HO "Mehano Straight Track 228.6mm F223"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 9.000000 0.000000
+ END$SEGS
+TURNOUT HO "Mehano Straight Track 152.4mm F238"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 6.000000 0.000000
+ END$SEGS
+TURNOUT HO "Mehano Straight Track 76.2mm F239"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.000000 0.000000
+ END$SEGS
+
+SUBCONTENTS Mehano Track - Curves
+TURNOUT HO "Mehano Curve Track 457.2mm 30d F210"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 2.411542 60.000000
+ C 0 0.000000 -18.000000 0.000000 18.000000 150.000000 30.000000
+ END$SEGS
+TURNOUT HO "Mehano Curved Terminal/Rerailer Track F269"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 2.411542 60.000000
+ C 0 0.000000 -18.000000 0.000000 18.000000 150.000000 30.000000
+ A 7960953 0.600000 -17.300000 0.000000 18.000000 155.000000 20.000000
+ A 7960953 0.500000 -18.000000 0.000000 18.000000 155.000000 20.000000
+ A 7960953 0.600000 -18.700000 0.000000 18.000000 155.000000 20.000000
+ A 7960953 0.500000 -19.200000 0.000000 18.000000 163.750000 2.500000
+ END$SEGS
+TURNOUT HO "Mehano Curved Track 457.2mm 10d F233"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.125667 0.273460 80.000000
+ C 0 0.000000 -18.000000 0.000000 18.000000 170.000000 10.000000
+ END$SEGS
+
+SUBCONTENTS Mehano Track - Crossings
+TURNOUT HO "Mehano 45d Crossing Track 152.4mm F228"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 6.000000 0.000000 90.000000
+ E 0.878680 2.121320 315.000000
+ E 5.121320 -2.121320 135.000000
+ S 0 0.000000 0.000000 0.000000 6.000000 0.000000
+ S 0 0.000000 0.878680 2.121320 5.121320 -2.121320
+ END$SEGS
+
+SUBCONTENTS Mehano Track - Switches
+TURNOUT HO "Mehano Left Remote Switch F278"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 7.656415 1.085533 70.000000
+ S 0 0.000000 0.000000 0.000000 2.149705 0.000000
+ S 0 0.000000 2.149705 0.000000 9.000000 0.000000
+ C 0 0.000000 -14.315797 2.149724 14.315797 160.000000 20.000000
+ S 0 0.000000 7.046027 0.863360 7.656415 1.085533
+ F4 7960953 0.000000 6 1
+ 1.500000 -0.600000 0
+ 1.500000 -1.000000 0
+ 1.850000 -1.200000 0
+ 5.650000 -1.200000 0
+ 6.000000 -1.000000 0
+ 6.000000 -0.600000 0
+ END$SEGS
+TURNOUT HO "Mehano Right Remote Switch F279"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 7.656415 -1.085533 110.000000
+ S 0 0.000000 0.000000 0.000000 2.149705 0.000000
+ S 0 0.000000 2.149705 0.000000 9.000000 0.000000
+ C 0 0.000000 14.315797 2.149648 -14.315797 0.000000 20.000000
+ S 0 0.000000 7.046027 -0.863360 7.656415 -1.085533
+ F4 7960953 0.000000 6 1
+ 1.500000 0.600000 0
+ 1.500000 1.000000 0
+ 1.850000 1.200000 0
+ 5.650000 1.200000 0
+ 6.000000 1.000000 0
+ 6.000000 0.600000 0
+ END$SEGS
+TURNOUT HO "Mehano Left Manual Switch F282"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 7.656415 1.085533 70.000000
+ S 0 0.000000 0.000000 0.000000 2.149705 0.000000
+ S 0 0.000000 2.149705 0.000000 9.000000 0.000000
+ C 0 0.000000 -14.315797 2.149724 14.315797 160.000000 20.000000
+ S 0 0.000000 7.046027 0.863360 7.656415 1.085533
+ F4 7960953 0.000000 6 1
+ 1.500000 -0.600000 0
+ 1.500000 -1.000000 0
+ 1.850000 -1.200000 0
+ 5.650000 -1.200000 0
+ 6.000000 -1.000000 0
+ 6.000000 -0.600000 0
+ END$SEGS
+TURNOUT HO "Mehano Right Manual Switch F283"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 7.656415 -1.085533 110.000000
+ S 0 0.000000 0.000000 0.000000 2.149705 0.000000
+ S 0 0.000000 2.149705 0.000000 9.000000 0.000000
+ C 0 0.000000 14.315797 2.149648 -14.315797 0.000000 20.000000
+ S 0 0.000000 7.046027 -0.863360 7.656415 -1.085533
+ F4 7960953 0.000000 6 1
+ 1.500000 0.600000 0
+ 1.500000 1.000000 0
+ 1.850000 1.200000 0
+ 5.650000 1.200000 0
+ 6.000000 1.000000 0
+ 6.000000 0.600000 0
+ END$SEGS
diff --git a/app/lib/params/HO-Peco-Code100Setrack.xtp b/app/lib/params/HO-Peco-Code100Setrack.xtp
index 3b16768..b331055 100644
--- a/app/lib/params/HO-Peco-Code100Setrack.xtp
+++ b/app/lib/params/HO-Peco-Code100Setrack.xtp
@@ -6,37 +6,37 @@ TURNOUT HO "Peco Setrack Straight standard ST-200"
E 0.000000 0.000000 270.000000
E 6.614173 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 6.614173 0.000000
- END
+ END$SEGS
TURNOUT HO "Peco Setrack Straight double ST-201"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 13.188976 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 13.188976 0.000000
- END
+ END$SEGS
TURNOUT HO "Peco Setrack Straight half ST-202"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.110236 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 3.110236 0.000000
- END
+ END$SEGS
TURNOUT HO "Peco Setrack Straight Quart ST-203"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 1.614173 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 1.614173 0.000000
- END
+ END$SEGS
TURNOUT HO "Peco Setrack Straight long ST-204"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 26.377953 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 26.377953 0.000000
- END
+ END$SEGS
TURNOUT HO "Peco Setrack straight isolation ST-205"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 6.614173 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 6.614173 0.000000
- END
+ END$SEGS
SUBCONTENTS Peco HO Setrack - Curve Track
TURNOUT HO "Peco Setrack Curve no1 Std ST-220"
@@ -44,107 +44,126 @@ TURNOUT HO "Peco Setrack Curve no1 Std ST-220"
E 0.000000 0.000000 270.000000
E 5.589589 1.111838 67.500000
C 0 0.000000 -14.606299 0.000000 14.606299 157.500000 22.500000
- END
+ END$SEGS
TURNOUT HO "Peco Setrack Curve no1 Dbl ST-221"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 10.328213 4.278086 45.000000
C 0 0.000000 -14.606299 0.000000 14.606299 135.000000 45.000000
- END
+ END$SEGS
TURNOUT HO "Peco Setrack Curve no1 half ST-222"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 2.849548 0.280656 78.750000
C 0 0.000000 -14.606299 0.000000 14.606299 168.750000 11.250000
- END
+ END$SEGS
TURNOUT HO "Peco Setrack curve no2 Std ST-225"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 6.599029 1.312629 67.500000
C 0 0.000000 -17.244094 0.000000 17.244094 157.500000 22.500000
- END
+ END$SEGS
TURNOUT HO "Peco Setrack curve no2 dbl ST-226"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 12.193416 5.050678 45.000000
C 0 0.000000 -17.244094 0.000000 17.244094 135.000000 45.000000
- END
+ END$SEGS
TURNOUT HO "Peco Setrack curve no2 half ST-227"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.364156 0.331340 78.750000
C 0 0.000000 -17.244094 0.000000 17.244094 168.750000 11.250000
- END
+ END$SEGS
TURNOUT HO "Peco Setrack curve no3 Std ST-230"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.608470 1.513419 67.500000
C 0 0.000000 -19.881890 0.000000 19.881890 157.500000 22.500000
- END
+ END$SEGS
TURNOUT HO "Peco Setrack curve no3 dbl ST-231"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 14.058619 5.823271 45.000000
C 0 0.000000 -19.881890 0.000000 19.881890 135.000000 45.000000
- END
+ END$SEGS
TURNOUT HO "Peco Setrack curve no4 Std ST-235"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 8.610377 1.712711 67.500000
C 0 0.000000 -22.500000 0.000000 22.500000 157.500000 22.500000
- END
+ END$SEGS
TURNOUT HO "Peco Setrack Special Curve ST-238"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 6.602348 0.650275 78.750000
C 0 0.000000 -33.842520 0.000000 33.842520 168.750000 11.250000
- END
+ END$SEGS
SUBCONTENTS Peco HO Setrack - Turnouts
-TURNOUT HO "Peco Setrack No.2 Radius LH Turnout, Insulfrog ST-241"
+TURNOUT HO "Peco Setrack No.2 Radius RH Turnout, Insulfrog ST-240"
P "Normal" 1 2
P "Reverse" 1 3 4
E 0.000000 0.000000 270.000000
E 6.614173 0.000000 90.000000
- E 6.599029 1.312629 67.500000
+ E 6.599029 -1.312629 112.500000
S 0 0.000000 0.000000 0.000000 0.649637 0.000000
S 0 0.000000 0.649637 0.000000 6.614173 0.000000
- C 0 0.000000 -13.978252 0.649656 13.978252 157.499924 22.500152
- S 0 0.000000 5.998913 1.064043 6.599029 1.312629
- END
-TURNOUT HO "Peco Setrack No.2 Radius RH Turnout, Insulfrog ST-240"
+ C 0 0.000000 13.978252 0.649582 -13.978252 0.000076 22.500152
+ S 0 0.000000 5.998913 -1.064043 6.599029 -1.312629
+ END$SEGS
+TURNOUT HO "Peco Setrack No.2 Radius LH Turnout, Insulfrog ST-241"
P "Normal" 1 2
P "Reverse" 1 3 4
E 0.000000 0.000000 270.000000
E 6.614173 0.000000 90.000000
- E 6.599029 -1.312629 112.500000
+ E 6.599029 1.312629 67.500000
S 0 0.000000 0.000000 0.000000 0.649637 0.000000
S 0 0.000000 0.649637 0.000000 6.614173 0.000000
- C 0 0.000000 13.978252 0.649582 -13.978252 0.000076 22.500152
- S 0 0.000000 5.998913 -1.064043 6.599029 -1.312629
- END
-TURNOUT HO "Peco Setrack Curved Double Radius LH Turnout, Insulfrog ST-245"
- P "Normal" 2 3 4
- P "Reverse" 1
- E 0.000000 0.000000 270.000000
- E 9.237000 1.313000 67.500000
- E 9.580306 2.906154 56.250000
- C 0 0.000000 -17.244094 0.000000 17.244094 146.250000 33.750000
- S 0 0.000000 0.000000 0.000000 3.000000 0.000000
- C 0 0.000000 -15.424000 3.000000 15.424000 157.500000 22.500000
- S 0 0.000000 8.902509 1.174082 9.237000 1.313000
- END
+ C 0 0.000000 -13.978252 0.649656 13.978252 157.499924 22.500152
+ S 0 0.000000 5.998913 1.064043 6.599029 1.312629
+ END$SEGS
+TURNOUT HO "Peco Setrack Curved Double Radius RH Turnout(Obsolete), Insulfrog ST-242"
+ P "Normal" 1 2
+ P "Reverse" 3
+ E 0.000000 0.000000 270.000000
+ E 7.917927 -1.312629 112.500000
+ E 8.114825 -2.461605 123.750000
+ S 0 0.000000 0.000000 0.000000 1.318898 0.000000
+ C 0 0.000000 17.244094 1.318898 -17.244094 0.000000 22.500000
+ C 0 0.000000 14.606299 0.000000 -14.606299 0.000000 33.750000
+ END$SEGS
+TURNOUT HO "Peco Setrack Curved Double Radius LH Turnout(Obsolete), Insulfrog ST-243"
+ P "Normal" 1 2
+ P "Reverse" 3
+ E 0.000000 0.000000 270.000000
+ E 7.917927 1.312629 67.500000
+ E 8.114825 2.461605 56.250000
+ S 0 0.000000 0.000000 0.000000 1.318898 0.000000
+ C 0 0.000000 -17.244094 1.318898 17.244094 157.500000 22.500000
+ C 0 0.000000 14.606299 0.000000 14.606299 146.250000 33.750000
+ END$SEGS
TURNOUT HO "Peco Setrack Curved Double Radius RH Turnout, Insulfrog ST-244"
- P "Normal" 2 3 4
- P "Reverse" 1
+ P "Normal" 1 2
+ P "Reverse" 3
E 0.000000 0.000000 270.000000
- E 9.237000 -1.313000 112.500000
+ E 9.236824 -1.312629 112.500000
E 9.580306 -2.906154 123.750000
+ S 0 0.000000 0.000000 0.000000 2.637795 0.000000
+ C 0 0.000000 17.244094 2.637795 -17.244094 0.000000 22.500000
C 0 0.000000 17.244094 0.000000 -17.244094 0.000000 33.750000
- S 0 0.000000 0.000000 0.000000 3.000000 0.000000
- C 0 0.000000 15.424000 3.000000 -15.424000 0.000000 22.500000
- S 0 0.000000 8.902509 -1.174082 9.237000 -1.313000
- END
+ END$SEGS
+TURNOUT HO "Peco Setrack Curved Double Radius LH Turnout, Insulfrog ST-245"
+ P "Normal" 1 2
+ P "Reverse" 3
+ E 0.000000 0.000000 270.000000
+ E 9.236824 1.312629 67.500000
+ E 9.580306 2.906154 56.250000
+ S 0 0.000000 0.000000 0.000000 2.637795 0.000000
+ C 0 0.000000 -17.244094 2.637795 17.244094 157.500000 22.500000
+ C 0 0.000000 17.244094 0.000000 17.244094 146.250000 33.750000
+ END$SEGS
+
TURNOUT HO "Peco Setrack Medium Radius Y Turnout, Insulfrog ST-247"
P "Left" 1 2 3
P "Right" 1 4 5
@@ -156,7 +175,7 @@ TURNOUT HO "Peco Setrack Medium Radius Y Turnout, Insulfrog ST-247"
S 0 0.000000 6.055867 0.523550 6.692913 0.650275
C 0 0.000000 27.246634 0.740137 -27.246634 0.000076 11.250152
S 0 0.000000 6.055867 -0.523550 6.692913 -0.650275
- END
+ END$SEGS
SUBCONTENTS Peco HO Setrack - Crossing
TURNOUT HO "Peco Setrack Medium Diamond Crossing, Insulfrog ST-250"
@@ -167,4 +186,4 @@ TURNOUT HO "Peco Setrack Medium Diamond Crossing, Insulfrog ST-250"
E 6.438181 -1.280628 112.500000
S 0 0.000000 0.000000 0.000000 6.692913 0.000000
S 0 0.000000 0.254732 1.280628 6.438181 -1.280628
- END
+ END$SEGS
diff --git a/app/lib/params/HO-Peco-Code100Streamline.xtp b/app/lib/params/HO-Peco-Code100Streamline.xtp
index 95ceed8..b041330 100644
--- a/app/lib/params/HO-Peco-Code100Streamline.xtp
+++ b/app/lib/params/HO-Peco-Code100Streamline.xtp
@@ -10,7 +10,7 @@ TURNOUT HO "Peco LH Small Turnout SL-92"
S 0 0.000000 0.648600 0.000000 7.283465 0.000000
C 0 0.000000 -18.365376 0.648624 18.365376 167.999924 12.000152
S 0 0.000000 4.467021 0.401337 7.283465 1.000000
- END
+ END$SEGS
TURNOUT HO "Peco RH Small Turnout SL-91"
P "Normal" 1 2
P "Reverse" 1 3 4
@@ -21,7 +21,7 @@ TURNOUT HO "Peco RH Small Turnout SL-91"
S 0 0.000000 0.648600 0.000000 7.283465 0.000000
C 0 0.000000 18.365376 0.648527 -18.365376 0.000076 12.000152
S 0 0.000000 4.467021 -0.401337 7.283465 -1.000000
- END
+ END$SEGS
TURNOUT HO "Peco LH Medium Turnout SL-96"
P "Normal" 1 2
P "Reverse" 1 3 4
@@ -32,7 +32,7 @@ TURNOUT HO "Peco LH Medium Turnout SL-96"
S 0 0.000000 0.648600 0.000000 8.622047 0.000000
C 0 0.000000 -31.101230 0.648641 31.101230 167.999924 12.000152
S 0 0.000000 7.114985 0.679653 8.622047 1.000000
- END
+ END$SEGS
TURNOUT HO "Peco RH Medium Turnout SL-95"
P "Normal" 1 2
P "Reverse" 1 3 4
@@ -43,7 +43,7 @@ TURNOUT HO "Peco RH Medium Turnout SL-95"
S 0 0.000000 0.648600 0.000000 8.622047 0.000000
C 0 0.000000 31.101230 0.648476 -31.101230 0.000076 12.000152
S 0 0.000000 7.114985 -0.679653 8.622047 -1.000000
- END
+ END$SEGS
TURNOUT HO "Peco LH Long Turnout, Insulfrog SL-89"
P "Normal" 1 2
P "Reverse" 1 3 4
@@ -54,7 +54,7 @@ TURNOUT HO "Peco LH Long Turnout, Insulfrog SL-89"
S 0 0.000000 1.291837 0.000000 10.157480 0.000000
C 0 0.000000 -39.590004 1.291890 39.590004 167.999924 12.000152
S 0 0.000000 9.523158 0.865157 10.157480 1.000000
- END
+ END$SEGS
TURNOUT HO "Peco RH Long Turnout, Insulfrog SL-88"
P "Normal" 1 2
P "Reverse" 1 3 4
@@ -65,7 +65,7 @@ TURNOUT HO "Peco RH Long Turnout, Insulfrog SL-88"
S 0 0.000000 1.291837 0.000000 10.157480 0.000000
C 0 0.000000 39.590004 1.291680 -39.590004 0.000076 12.000152
S 0 0.000000 9.523158 -0.865157 10.157480 -1.000000
- END
+ END$SEGS
SUBCONTENTS Peco HO Scale Code 100 Curved Turnouts
TURNOUT HO "Peco Curved Left Turnout SL-87"
@@ -80,7 +80,7 @@ TURNOUT HO "Peco Curved Left Turnout SL-87"
C 0 0.000000 -19.394467 1.124778 19.396246 167.192625 12.571261
C 0 0.000000 -36.267775 -3.099537 35.736252 159.681969 6.725371
C 0 0.000000 -28.764567 -0.326204 28.761504 159.640000 0.398377
- END
+END$SEGS
TURNOUT HO "Peco Curved Right Turnout SL-86"
P "Normal" 1 2 3
P "Reverse" 1 4 5 6
@@ -93,7 +93,28 @@ TURNOUT HO "Peco Curved Right Turnout SL-86"
C 0 0.000000 19.394467 1.124778 -19.396246 0.236114 12.571261
C 0 0.000000 36.267775 -3.099537 -35.736252 13.592659 6.725371
C 0 0.000000 28.764567 -0.326204 -28.761504 19.961623 0.398377
- END
+END$SEGS
+TURNOUT HO "Peco Small Radius Curved RH Turnout, Unifrog SL-U76"
+ P "Normal" 1 2
+ P "Reverse" 3
+ E 0.000000 0.000000 270.000000
+ E 9.236824 -1.312629 112.500000
+ E 9.580306 -2.906154 123.750000
+ S 0 0.000000 0.000000 0.000000 2.637795 0.000000
+ C 0 0.000000 17.244094 2.637795 -17.244094 0.000000 22.500000
+ C 0 0.000000 17.244094 0.000000 -17.244094 0.000000 33.750000
+ END$SEGS
+TURNOUT HO "Peco Small Radius Curved LH Turnout, Unifrog SL-U77"
+ P "Normal" 1 2
+ P "Reverse" 3
+ E 0.000000 0.000000 270.000000
+ E 9.236824 1.312629 67.500000
+ E 9.580306 2.906154 56.250000
+ S 0 0.000000 0.000000 0.000000 2.637795 0.000000
+ C 0 0.000000 -17.244094 2.637795 17.244094 157.500000 22.500000
+ C 0 0.000000 17.244094 0.000000 17.244094 146.250000 33.750000
+ END$SEGS
+
SUBCONTENTS Peco HO Scale Code 100 WYE Turnouts
TURNOUT HO "Peco Short Y Turnout SL-97"
@@ -110,7 +131,7 @@ TURNOUT HO "Peco Short Y Turnout SL-97"
C 0 0.000000 20.114739 1.173703 -20.113873 359.468200 6.530097
C 0 0.000000 26.357793 0.179320 -26.284552 6.746334 4.984102
C 0 0.000000 23.701000 0.806143 -23.701076 11.516512 0.483488
- END
+ END$SEGS
TURNOUT HO "Peco Large Y Turnout SL-98"
P "Left" 1 2 3 4
P "Right" 1 2 5 6
@@ -123,8 +144,8 @@ TURNOUT HO "Peco Large Y Turnout SL-98"
S 0 0.000000 8.441286 0.457359 8.640000 0.480000
C 0 0.000000 65.701925 0.696301 -65.701195 0.269994 6.499810
S 0 0.000000 8.441286 -0.457359 8.640000 -0.480000
- END
-TURNOUT HO "Peco Medium Radius 3 Way Turnout, Insulfrog SL-99" 0
+END$SEGS
+TURNOUT HO "Peco Medium Radius 3 Way Turnout, Insulfrog SL-99"
P "Normal" 1 2 3 4 5
P "Left" 1 2 3 6 7 8
P "Right" 1 2 9 10 11
@@ -143,7 +164,7 @@ TURNOUT HO "Peco Medium Radius 3 Way Turnout, Insulfrog SL-99" 0
C 0 0.000000 24.157933 1.281406 -24.156353 359.344709 8.801153
C 0 0.000000 66.554731 -6.449712 -65.855553 9.647932 3.195314
S 0 0.000000 8.344370 -0.965898 8.540000 -1.007480
- END
+END$SEGS
SUBCONTENTS Peco HO Scale Code 100 Slip Turnouts
TURNOUT HO "Peco Single Slip, Insulfrog SL-80"
@@ -158,12 +179,12 @@ TURNOUT HO "Peco Single Slip, Insulfrog SL-80"
S 0 0.000000 0.107110 1.019087 8.427277 -0.749392
S 0 0.000000 8.427277 -0.749392 9.696040 -1.019087
C 0 0.000000 34.292562 1.297233 -34.292562 0.000076 12.000152
-END
+END$SEGS
TURNOUT HO "Peco Double Slip, Insulfrog SL-90" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 7 6
- P "Slip2" 4 8 3
+ P "P1" 1 2 3
+ P "P2" 4 5 6
+ P "P3" 1 7 6
+ P "P4" 4 8 3
E 0.000000 0.000000 270.000000
E 9.803150 0.000000 90.000000
E 0.107110 1.019087 282.000000
@@ -176,11 +197,10 @@ TURNOUT HO "Peco Double Slip, Insulfrog SL-90" 512
S 0 0.000000 8.427277 -0.749392 9.696040 -1.019087
C 0 0.000000 34.292562 1.297233 -34.292562 0.000076 12.000152
C 0 0.000000 -34.292562 8.505825 34.292552 180.000076 12.000152
-END
+END$SEGS
SUBCONTENTS Peco HO Scale Code 100 CatchPoints
TURNOUT HO "PECO RH CatchPoint SL-84"
-# tighten angle for diverging path
P "Closed" 1 2 4
P "Open" 1 3
E 0.000000 0.000000 270.000000
@@ -189,9 +209,8 @@ TURNOUT HO "PECO RH CatchPoint SL-84"
S 0 0.000000 0.649000 0.000000 3.441000 0.000000
S 0 0.000000 0.649000 -0.000000 3.600000 -0.073273
S 0 0.000000 3.441000 0.000000 4.090000 0.000000
- END
+END$SEGS
TURNOUT HO "PECO LH CatchPoint SL-85"
-# tighten angle for diverging path
P "Closed" 1 2 4
P "Open" 1 3
E 0.000000 0.000000 270.000000
@@ -200,7 +219,7 @@ TURNOUT HO "PECO LH CatchPoint SL-85"
S 0 0.000000 0.649000 0.000000 3.441000 0.000000
S 0 0.000000 0.649000 -0.000000 3.600000 0.073273
S 0 0.000000 3.441000 0.000000 4.090000 0.000000
- END
+END$SEGS
SUBCONTENTS Peco HO Scale Crossings
TURNOUT HO "Peco Short Crossing, Insulfrog SL-93"
@@ -211,7 +230,7 @@ TURNOUT HO "Peco Short Crossing, Insulfrog SL-93"
E 4.783865 -1.016838 114.000000
S 0 0.000000 0.000000 0.000000 5.000000 0.000000
S 0 0.000000 0.216135 1.016838 4.783865 -1.016838
-END
+END$SEGS
TURNOUT HO "Peco Long Crossing, Insulfrog SL-94"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
@@ -220,7 +239,7 @@ TURNOUT HO "Peco Long Crossing, Insulfrog SL-94"
E 9.696040 -1.019087 102.000000
S 0 0.000000 0.000000 0.000000 9.803150 0.000000
S 0 0.000000 0.107110 1.019087 9.696040 -1.019087
-END
+END$SEGS
SUBCONTENTS Peco HO Scale Code 100 Inspection Pit
TURNOUT HO "Peco Inspection Pit (Code 100) LK-56"
@@ -228,84 +247,84 @@ TURNOUT HO "Peco Inspection Pit (Code 100) LK-56"
E 0.000000 0.000000 270.000000
E 11.692913 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 11.692913 0.000000
- F 15720651 0.000000 4
+ F 15720651 0.000000 4 0
0.000000 0.551091 0
11.692913 0.551091 0
11.692913 -0.551091 0
0.000000 -0.551091 0
- F 12632256 0.000000 4
+ F4 12632256 0.000000 4 0
0.000000 0.280000 0
0.560000 0.280000 0
0.560000 -0.280000 0
0.000000 -0.280000 0
- L 0 0.020000 0.000000 0.280000 0.000000 -0.280000
- L 0 0.020000 0.112000 0.280000 0.112000 -0.280000
- L 0 0.020000 0.224000 0.280000 0.224000 -0.280000
- L 0 0.020000 0.336000 0.280000 0.336000 -0.280000
- L 0 0.020000 0.448000 0.280000 0.448000 -0.280000
- L 0 0.020000 0.560000 0.280000 0.560000 -0.280000
- F 12632256 0.000000 4
+ L3 0 0.020000 0.000000 0.280000 0 0.000000 -0.280000 0
+ L3 0 0.020000 0.112000 0.280000 0 0.112000 -0.280000 0
+ L3 0 0.020000 0.224000 0.280000 0 0.224000 -0.280000 0
+ L3 0 0.020000 0.336000 0.280000 0 0.336000 -0.280000 0
+ L3 0 0.020000 0.448000 0.280000 0 0.448000 -0.280000 0
+ L3 0 0.020000 0.560000 0.280000 0 0.560000 -0.280000 0
+ F4 12632256 0.000000 4 0
11.132913 0.280000 0
11.692913 0.280000 0
11.692913 -0.280000 0
11.132913 -0.280000 0
- L 0 0.020000 11.132913 0.280000 11.132913 -0.280000
- L 0 0.020000 11.244913 0.280000 11.244913 -0.280000
- L 0 0.020000 11.356913 0.280000 11.356913 -0.280000
- L 0 0.020000 11.468913 0.280000 11.468913 -0.280000
- L 0 0.020000 11.580913 0.280000 11.580913 -0.280000
- L 0 0.020000 11.692913 0.280000 11.692913 -0.280000
- A 0 0.020000 0.062500 0.974409 0.000000 0.000000 360.000000
- A 0 0.020000 0.062500 2.923228 0.000000 0.000000 360.000000
- A 0 0.020000 0.062500 4.872047 0.000000 0.000000 360.000000
- A 0 0.020000 0.062500 6.820866 0.000000 0.000000 360.000000
- A 0 0.020000 0.062500 8.769685 0.000000 0.000000 360.000000
- A 0 0.020000 0.062500 10.718504 0.000000 0.000000 360.000000
- L 0 0.020000 0.000000 0.551091 11.692913 0.551091
- L 0 0.020000 0.000000 0.280000 11.692913 0.28000
- L 0 0.020000 0.000000 -0.280000 11.692913 -0.280000
- L 0 0.020000 0.000000 -0.551091 11.692913 -0.551091
-END
-TURNOUT HO "Peco Code 100 Inspection Pit(Stair End) LK-56A"
+ L3 0 0.020000 11.132913 0.280000 0 11.132913 -0.280000 0
+ L3 0 0.020000 11.244913 0.280000 0 11.244913 -0.280000 0
+ L3 0 0.020000 11.356913 0.280000 0 11.356913 -0.280000 0
+ L3 0 0.020000 11.468913 0.280000 0 11.468913 -0.280000 0
+ L3 0 0.020000 11.580913 0.280000 0 11.580913 -0.280000 0
+ L3 0 0.020000 11.692913 0.280000 0 11.692913 -0.280000 0
+ A3 0 0.020000 0.062500 0.974409 0.000000 0 0.000000 360.000000
+ A3 0 0.020000 0.062500 2.923228 0.000000 0 0.000000 360.000000
+ A3 0 0.020000 0.062500 4.872047 0.000000 0 0.000000 360.000000
+ A3 0 0.020000 0.062500 6.820866 0.000000 0 0.000000 360.000000
+ A3 0 0.020000 0.062500 8.769685 0.000000 0 0.000000 360.000000
+ A3 0 0.020000 0.062500 10.718504 0.000000 0 0.000000 360.000000
+ L3 0 0.020000 0.000000 0.551091 0 11.692913 0.551091 0
+ L3 0 0.020000 0.000000 0.280000 0 11.692913 0.28000 0
+ L3 0 0.020000 0.000000 -0.280000 0 11.692913 -0.280000 0
+ L3 0 0.020000 0.000000 -0.551091 0 11.692913 -0.551091 0
+END$SEGS
+TURNOUT HO "Peco Code 100 Inspection Pit(Stair END$SEGS) LK-56A"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 1.948819 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 1.948819 0.000000
- F 15720651 0.000000 4
+ F4 15720651 0.000000 4 0
0.000000 0.551091 0
1.948819 0.551091 0
1.948819 -0.551091 0
0.000000 -0.551091 0
- F 12632256 0.000000 4
+ F4 12632256 0.000000 4 0
0.000000 0.280000 0
0.560000 0.280000 0
0.560000 -0.280000 0
0.000000 -0.280000 0
- L 0 0.020000 0.000000 0.280000 0.000000 -0.280000
- L 0 0.020000 0.112000 0.280000 0.112000 -0.280000
- L 0 0.020000 0.224000 0.280000 0.224000 -0.280000
- L 0 0.020000 0.336000 0.280000 0.336000 -0.280000
- L 0 0.020000 0.448000 0.280000 0.448000 -0.280000
- L 0 0.020000 0.560000 0.280000 0.560000 -0.280000
- A 0 0.020000 0.062500 0.974409 0.000000 0.000000 360.000000
- L 0 0.020000 0.000000 0.551091 1.948819 0.551091
- L 0 0.020000 0.000000 0.280000 1.948819 0.28000
- L 0 0.020000 0.000000 -0.280000 1.948819 -0.280000
- L 0 0.020000 0.000000 -0.551091 1.948819 -0.551091
-END
+ L3 0 0.020000 0.000000 0.280000 0 0.000000 -0.280000 0
+ L3 0 0.020000 0.112000 0.280000 0 0.112000 -0.280000 0
+ L3 0 0.020000 0.224000 0.280000 0 0.224000 -0.280000 0
+ L3 0 0.020000 0.336000 0.280000 0 0.336000 -0.280000 0
+ L3 0 0.020000 0.448000 0.280000 0 0.448000 -0.280000 0
+ L3 0 0.020000 0.560000 0.280000 0 0.560000 -0.280000 0
+ A3 0 0.020000 0.062500 0.974409 0.000000 0 0.000000 360.000000
+ L3 0 0.020000 0.000000 0.551091 0 1.948819 0.551091 0
+ L3 0 0.020000 0.000000 0.280000 0 1.948819 0.280000 0
+ L3 0 0.020000 0.000000 -0.280000 0 1.948819 -0.280000 0
+ L3 0 0.020000 0.000000 -0.551091 0 1.948819 -0.551091 0
+END$SEGS
TURNOUT HO "Peco Code 100 Inspection Pit(Mid Section) LK-56B"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 1.948819 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 1.948819 0.000000
- F 15720651 0.000000 4
+ F4 15720651 0.000000 4 0
0.000000 0.551091 0
1.948819 0.551091 0
1.948819 -0.551091 0
0.000000 -0.551091 0
- A 0 0.020000 0.062500 0.974409 0.000000 0.000000 360.000000
- L 0 0.020000 0.000000 0.551091 1.948819 0.551091
- L 0 0.020000 0.000000 0.280000 1.948819 0.28000
- L 0 0.020000 0.000000 -0.280000 1.948819 -0.280000
- L 0 0.020000 0.000000 -0.551091 1.948819 -0.551091
-END
+ A3 0 0.020000 0.062500 0.974409 0.000000 0 0.000000 360.000000
+ L3 0 0.020000 0.000000 0.551091 0 1.948819 0.551091 0
+ L3 0 0.020000 0.000000 0.280000 0 1.948819 0.280000 0
+ L3 0 0.020000 0.000000 -0.280000 0 1.948819 -0.280000 0
+ L3 0 0.020000 0.000000 -0.551091 0 1.948819 -0.551091 0
+END$SEGS
diff --git a/app/lib/params/HO-Peco-Code70USA.xtp b/app/lib/params/HO-Peco-Code70USA.xtp
new file mode 100644
index 0000000..e429a6b
--- /dev/null
+++ b/app/lib/params/HO-Peco-Code70USA.xtp
@@ -0,0 +1,54 @@
+CONTENTS Peco North American Code 70 HO Scale Track
+SUBCONTENTS Peco Code 70 HO USA - Track
+TURNOUT HO "PECO Code 70 USA Flex Track SL-7000"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 36.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 36.000000 0.000000
+END$SEGS
+
+SUBCONTENTS Peco Code 70 HO USA - Turnouts
+TURNOUT HO "PECO Code 70 USA #6 Left Hand Turnout SL-U7062"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.799213 0.000000 90.000000
+ E 8.799213 1.000000 80.500000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 8.799213 0.000000
+ C 0 0.000000 -26.161447 0.649600 26.161447 170.500000 9.500000
+ S 0 0.000000 4.967484 0.358789 8.799213 1.000000
+END$SEGS
+TURNOUT HO "PECO Code 70 USA #6 Right Hand Turnout SL-U7061"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.799213 0.000000 90.000000
+ E 8.799213 -1.000000 99.500000
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 8.799213 0.000000
+ C 0 0.000000 26.161447 0.649600 -26.161447 0.000000 9.500000
+ S 0 0.000000 4.967484 -0.358789 8.799213 -1.000000
+END$SEGS
+TURNOUT HO "PECO Code 70 USA #8 Left Hand Turnout SL-U7082"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 12.677165 0.000000 90.000000
+ E 12.677165 1.000000 82.850000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 12.677165 0.000000
+ C 0 0.000000 -64.917237 0.649600 64.917237 172.850000 7.150000
+ S 0 0.000000 8.729680 0.504816 12.677165 1.000000
+END$SEGS
+TURNOUT HO "PECO Code 70 USA #8 Right Hand Turnout SL-U7081"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 12.677165 0.000000 90.000000
+ E 12.677165 -1.000000 97.150000
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 12.677165 0.000000
+ C 0 0.000000 64.917237 0.649600 -64.917237 0.000000 7.150000
+ S 0 0.000000 8.729680 -0.504816 12.677165 -1.000000
+END$SEGS
diff --git a/app/lib/params/HO-Peco70USA.xtp b/app/lib/params/HO-Peco70USA.xtp
deleted file mode 100644
index 0b87bc5..0000000
--- a/app/lib/params/HO-Peco70USA.xtp
+++ /dev/null
@@ -1,32 +0,0 @@
-CONTENTS Peco North American Code 70 HO Scale Track
-SUBCONTENTS Peco Code 70 HO USA - Track
-TURNOUT HO "PECO Code 70 USA Flex Track SL-7000"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 36.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 36.000000 0.000000
-END
-
-SUBCONTENTS Peco Code 70 HO USA - Turnouts
-TURNOUT HO "PECO Code 70 USA #6 Left Hand Turnout SL-U7062"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 12.035433 0.000000 90.000000
- E 12.035433 1.000000 80.500000
- S 0 0.000000 0.000000 0.000000 0.650594 0.000000
- S 0 0.000000 0.650594 0.000000 12.035433 0.000000
- C 0 0.000000 -65.097328 0.650680 65.097328 170.500000 9.500000
- S 0 0.000000 11.394914 0.892798 12.035433 1.000000
-END
-TURNOUT HO "PECO Code 70 USA #6 Right Hand Turnout SL-U7061"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 12.035433 0.000000 90.000000
- E 12.035433 -1.000000 99.500000
- S 0 0.000000 0.000000 0.000000 0.650594 0.000000
- S 0 0.000000 0.650594 0.000000 12.035433 0.000000
- C 0 0.000000 65.097328 0.650335 -65.097328 0.000000 9.500000
- S 0 0.000000 11.394914 -0.892798 12.035433 -1.000000
-END
diff --git a/app/lib/params/HO-Roco HO Code 83.xtp b/app/lib/params/HO-Roco HO Code 83.xtp
index b8d2ce7..cd9d91d 100644
--- a/app/lib/params/HO-Roco HO Code 83.xtp
+++ b/app/lib/params/HO-Roco HO Code 83.xtp
@@ -1,473 +1,473 @@
-CONTENTS Roco HO Scale Code-83 Tracks
-#Original Designs by Peter Klapwijk, Dave Bullis and Mats Wikström
-SUBCONTENTS Roco HO - Straight Tracks
-TURNOUT HO "Roco G1 straight, 230mm 42410"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.055118 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.055118 0.000000
-END
-TURNOUT HO "Roco G1/2 straight, 115mm 42412"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.527559 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.527559 0.000000
-END
-TURNOUT HO "Roco G1/4 straight, 57.5mm 42413"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.263780 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.263780 0.000000
-END
-TURNOUT HO "Roco G4 straight, 920mm 42406"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 36.220472 0.000000 90.000000
- S 0 0 0.000000 0.000000 36.220472 0.000000
-END
-TURNOUT HO "Roco DG1 straight, 119mm 42411"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.685039 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.685039 0.000000
-END
-TURNOUT HO "Roco D2 straight 2mm c/w 493/496 98000"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.078740 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.078740 0.000000
-END
-TURNOUT HO "Roco D4 straight 4mm c/w 497/448/451/454 98001"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.157480 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.157480 0.000000
-END
-TURNOUT HO "Roco D5 straight 5mm c/w 493/496/488/489 98002"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.196850 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.196850 0.000000
-END
-TURNOUT HO "Roco D8 straight 8mm c/w 440/441 98003"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.314961 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 0.314961 0.000000
-END
-TURNOUT HO "Roco D12 straight 12mm c/w 497/448/451/454 98008"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.472441 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.472441 0.000000
-END
-
-SUBCONTENTS Roco HO - Misc Tracks
-TURNOUT HO "Roco Uncoupler Track 115mm 42419"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.527559 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.527559 0.000000
- L3 8424071 0.550000 1.000000 0.000000 0 2.500000 0.000000 0
- L3 8424071 0.600000 1.000000 1.000000 0 4.000000 1.000000 0
-END
-TURNOUT HO "Roco Feeder Track 115mm 42421"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.527559 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.527559 0.000000
- L3 10249759 0.550000 0.500000 0.000000 0 4.000000 0.000000 0
-END
-
-
-SUBCONTENTS Roco HO - Curve Tracks
-TURNOUT HO "Roco R2, R358mm/30d 42422"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.047244 -1.888303 120.000000
- C 0 0 14.094488 0.000000 -14.094488 0.000000 30.000000
-END
-TURNOUT HO "Roco R2 1/4, R358mm/7.5d 42408"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.839700 -0.120580 97.500000
- C 0 0 14.094488 0.000000 -14.094488 0.000000 7.500000
-END
-TURNOUT HO "Roco R3, R419.6mm/30d 42423"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.259843 -2.213218 120.000000
- C 0 0 16.519685 0.000000 -16.519685 0.000000 30.000000
-END
-TURNOUT HO "Roco R3 1/4, R419.6mm/7.5d 42409"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.156252 -0.141328 97.500000
- C 0 0 16.519685 0.000000 -16.519685 0.000000 7.500000
-END
-TURNOUT HO "Roco R4, R481.2mm/30d 42424"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.472441 -2.538133 120.000000
- C 0 0 18.944882 0.000000 -18.944882 0.000000 30.000000
-END
-TURNOUT HO "Roco R5, R542.8mm/30d 42425"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.685039 -2.863048 120.000000
- C 0 0 21.370079 0.000000 -21.370079 0.000000 30.000000
-END
-TURNOUT HO "Roco R6, R604.4mm/30d 42426"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 11.897638 -3.187962 120.000000
- C 0 0 23.795276 0.000000 -23.795276 0.000000 30.000000
-END
-TURNOUT HO "Roco R9, R826.4mm/15d 42427"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.420790 -1.108618 105.000000
-# fix sign on X and R
- C 0 0 32.535433 0.000046 -32.535433 0.000000 15.000000
-END
-TURNOUT HO "Roco R10, R888.0mm/15d 42428"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.048477 -1.191255 105.000000
- C 0 0 34.960630 0.000000 -34.960630 0.000000 15.000000
-END
-TURNOUT HO "Roco R20, R1962.0mm/5d 42430"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.732266 -0.293937 95.000000
- C 0 0 77.244094 0.000000 -77.244094 0.000000 5.000000
-END
-
-
-SUBCONTENTS Roco HO - Turnouts
-TURNOUT HO "Roco WL15, 230mm, R873.5mm/15d 42440"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 9.055118 0.000000 90.000000
- E 9.055118 1.212598 75.000000
- S 0 0 0.000000 0.000000 0.648600 0.000000
- S 0 0 0.648600 0.000000 9.055118 0.000000
- C 0 0 -29.479767 0.648639 29.479767 164.999924 15.000152
- S 0 0 8.278594 1.004517 9.055118 1.212598
- END
-TURNOUT HO "Roco WR15, 230mm, R873.5mm/15d 42441"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 9.055118 0.000000 90.000000
- E 9.055118 -1.212598 105.000000
- S 0 0 0.000000 0.000000 0.648600 0.000000
- S 0 0 0.648600 0.000000 9.055118 0.000000
- C 0 0 29.479767 0.648483 -29.479767 0.000076 15.000152
- S 0 0 8.278594 -1.004517 9.055118 -1.212598
- END
-TURNOUT HO "Roco WL10, 345mm, R1946mm/10d 42488"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 13.582677 0.000000 90.000000
- E 13.582677 1.212598 80.000000
- S 0 0 0.000000 0.000000 0.648600 0.000000
- S 0 0 0.648600 0.000000 13.582677 0.000000
- C 0 0 -69.234030 0.648692 69.234030 169.999924 10.000152
- S 0 0 12.671134 1.051851 13.582677 1.212598
- END
-TURNOUT HO "Roco WR10, 345mm, R1946mm/10d 42489"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 13.582677 0.000000 90.000000
- E 13.582677 -1.212598 100.000000
- S 0 0 0.000000 0.000000 0.648600 0.000000
- S 0 0 0.648600 0.000000 13.582677 0.000000
- C 0 0 69.234030 0.648324 -69.234030 0.000076 10.000152
- S 0 0 12.671134 -1.051851 13.582677 -1.212598
- END
-
-
-SUBCONTENTS Roco HO - Curved Turnouts
-TURNOUT HO "Roco BWL R2/R3 Curved Left 30d 42464"
- P "Normal" 1 6 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 9.472441 1.888303 60.000000
- E 7.047244 1.888303 60.000000
- S 0 0.000000 0.000000 0.000000 0.649632 0.000000
- C 0 0.000000 -11.670097 0.649648 11.670097 149.999924 30.000152
- S 0 0.000000 6.484703 1.563509 7.047244 1.888303
- C 0 0.000000 -11.670073 3.074857 11.670073 149.999924 30.000152
- S 0 0.000000 8.909900 1.563506 9.472441 1.888303
- S 0 0.000000 0.649632 0.000000 3.074841 0.000000
-END
-TURNOUT HO "Roco BWR R2/R3 Curved Right 30d 42465"
- P "Normal" 1 6 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 9.472441 -1.888303 120.000000
- E 7.047244 -1.888303 120.000000
- S 0 0.000000 0.000000 0.000000 0.649632 0.000000
- C 0 0.000000 11.670097 0.649586 -11.670097 0.000076 30.000152
- S 0 0.000000 6.484703 -1.563509 7.047244 -1.888303
- C 0 0.000000 11.670073 3.074795 -11.670073 0.000076 30.000152
- S 0 0.000000 8.909900 -1.563506 9.472441 -1.888303
- S 0 0.000000 0.649632 0.000000 3.074841 0.000000
-END
-TURNOUT HO "Roco BWL R5/R6 Curved Left 30d 42470"
- P "Normal" 1 6 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 13.110236 2.863048 60.000000
- E 10.685039 2.863048 60.000000
- S 0 0.000000 0.000000 0.000000 0.649646 0.000000
- C 0 0.000000 -18.945668 0.649671 18.945668 149.999924 30.000152
- S 0 0.000000 10.122516 2.538259 10.685039 2.863048
- C 0 0.000000 -18.945644 3.074880 18.945644 149.999924 30.000152
- S 0 0.000000 12.547713 2.538256 13.110236 2.863048
- S 0 0.000000 0.649646 0.000000 3.074855 0.000000
-END
-TURNOUT HO "Roco BWR R5/R6 Curved Right 30d 42471"
- P "Normal" 1 6 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 13.110236 -2.863048 120.000000
- E 10.685039 -2.863048 120.000000
- S 0 0.000000 0.000000 0.000000 0.649646 0.000000
- C 0 0.000000 18.945668 0.649570 -18.945668 0.000076 30.000152
- S 0 0.000000 10.122516 -2.538259 10.685039 -2.863048
- C 0 0.000000 18.945644 3.074779 -18.945644 0.000076 30.000152
- S 0 0.000000 12.547713 -2.538256 13.110236 -2.863048
- S 0 0.000000 0.649646 0.000000 3.074855 0.000000
-END
-TURNOUT HO "Roco BWL R9/R10 Curved Left 30d 42476"
- P "Normal" 1 6 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 18.692913 4.358921 60.000000
- E 16.267717 4.358921 60.000000
- S 0 0.000000 0.000000 0.000000 0.649673 0.000000
- C 0 0.000000 -30.110981 0.649713 30.110981 149.999924 30.000152
- S 0 0.000000 15.705221 4.034140 16.267717 4.358921
- C 0 0.000000 -30.110957 3.074922 30.110957 149.999924 30.000152
- S 0 0.000000 18.130418 4.034137 18.692913 4.358921
- S 0 0.000000 0.649673 0.000000 3.074882 0.000000
-END
-TURNOUT HO "Roco BWR R9/R10 Curved Right 30d 42477"
- P "Normal" 1 6 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 18.692913 -4.358922 120.000000
- E 16.267717 -4.358922 120.000000
- S 0 0.000000 0.000000 0.000000 0.649673 0.000000
- C 0 0.000000 30.110981 0.649553 -30.110981 0.000076 30.000152
- S 0 0.000000 15.705221 -4.034140 16.267717 -4.358921
- C 0 0.000000 30.110957 3.074762 -30.110957 0.000076 30.000152
- S 0 0.000000 18.130418 -4.034137 18.692913 -4.358921
- S 0 0.000000 0.649673 0.000000 3.074882 0.000000
-END
-
-
-SUBCONTENTS Roco HO - SingleSlip Turnouts
-TURNOUT HO "Roco EKW15, 230mm, R531mm/15d 42448"
- P "Normal" 1 2 0 3 4
- P "Reverse" 1 5 4
- E 0.000000 0.000000 270.000000
- E 9.055118 0.000000 90.000000
- E 0.154271 1.171812 285.000000
- E 8.900847 -1.171812 105.000000
- S 0 0 0.000000 0.000000 1.297324 0.000000
- S 0 0 1.297324 0.000000 9.055118 0.000000
- S 0 0 0.154271 1.171812 7.647912 -0.836079
- S 0 0 7.647912 -0.836079 8.900847 -1.171812
- C 0 0 24.536566 1.297226 -24.536566 0.000076 15.000152
- END
-TURNOUT HO "Roco EKW10, 345mm, R959mm/10d 42493"
- P "Normal" 1 2 0 3 4
- P "Reverse" 1 5 4
- E 0.000000 0.000000 270.000000
- E 13.582677 0.000000 90.000000
- E 0.103174 1.179294 280.000000
- E 13.479503 -1.179294 100.000000
- S 0 0.000000 0.000000 0.000000 1.297489 0.000000
- S 0 0.000000 1.297489 0.000000 13.582677 0.000000
- S 0 0.000000 0.103174 1.179294 12.202176 -0.954050
- S 0 0.000000 12.202176 -0.954050 13.479503 -1.179294
- C 0 0.000000 62.796695 1.297239 -62.796695 0.000076 10.000152
- END
-SUBCONTENTS Roco HO - DoubleSlip Turnouts
-TURNOUT HO "Roco DKW15, 230mm, R531mm/15d 42451" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 7 6
- P "Slip2" 4 8 3
- E 0.000000 0.000000 270.000000
- E 9.055118 0.000000 90.000000
- E 0.154271 1.171812 285.000000
- E 8.900847 -1.171812 105.000000
- S 0 0.000000 0.000000 0.000000 1.297324 0.000000
- S 0 0.000000 1.297324 0.000000 7.757794 0.000000
- S 0 0.000000 7.757794 0.000000 9.055118 0.000000
- S 0 0.000000 0.154271 1.171812 1.407206 0.836079
- S 0 0.000000 1.407206 0.836079 7.647912 -0.836079
- S 0 0.000000 7.647912 -0.836079 8.900847 -1.171812
- C 0 0.000000 24.536566 1.297226 -24.536566 0.000076 15.000152
- C 0 0.000000 -24.536566 7.757826 24.536558 180.000076 15.000152
- END
-TURNOUT HO "Roco DKW10, 345mm, R959mm/10d 42496"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
- E 0.000000 0.000000 270.000000
- E 13.582677 0.000000 90.000000
- E 0.103174 1.179294 280.000000
- E 13.479503 -1.179294 100.000000
- S 0 0.000000 0.000000 0.000000 1.297489 0.000000
- S 0 0.000000 1.297489 0.000000 12.285188 0.000000
- S 0 0.000000 12.285188 0.000000 13.582677 0.000000
- S 0 0.000000 0.103174 1.179294 1.380501 0.954050
- S 0 0.000000 1.380501 0.954050 12.202176 -0.954050
- S 0 0.000000 12.202176 -0.954050 13.479503 -1.179294
- C 0 0.000000 62.796695 1.297239 -62.796695 0.000076 10.000152
- C 0 0.000000 -62.796695 12.285270 62.796680 180.000076 10.000152
- END
-
-
-SUBCONTENTS Roco HO - Wye Turnouts
-TURNOUT HO "Roco DWW15 3-WAY 287.5mm, R873.5mm/15d 42454"
- P "Left" 1 2 3
- P "Normal" 1 4 7
- P "Right" 1 4 5 6
- E 0.000000 0.000000 270.000000
- E 9.055118 1.212598 75.000000
- E 11.318898 -1.212598 105.000000
- E 11.318898 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.648600 0.000000
- C 0 0 -29.479767 0.648639 29.479767 164.999924 15.000152
- S 0 0 8.278594 1.004517 9.055118 1.212598
- S 0 0 0.648600 0.000000 2.757006 0.000000
- C 0 0 30.660032 2.756884 -30.660032 0.000076 15.000152
- S 0 0 10.692478 -1.044735 11.318898 -1.212598
- S 0 0 2.757006 0.000000 11.318898 0.000000
- END
-
-
-SUBCONTENTS Roco HO - Crossings
-TURNOUT HO "Roco K15, 230mm, 15d 42497"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 9.055118 0.000000 90.000000
- E 0.154271 1.171812 285.000000
- E 8.900847 -1.171812 105.000000
- S 0 0.000000 0.000000 0.000000 9.055118 0.000000
- S 0 0.000000 0.154271 1.171812 8.900847 -1.171812
- END
-TURNOUT HO "Roco K30, 119mm, 30d 42498"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.685039 0.000000 90.000000
- E 0.313836 1.171256 300.000000
- E 4.371203 -1.171256 120.000000
- S 0 0.000000 0.000000 0.000000 4.685039 0.000000
- S 0 0.000000 0.313836 1.171256 4.371203 -1.171256
- END
-
-
-SUBCONTENTS Roco HO - Turn Table
-TURNOUT HO "ROCO Turntable 253mm Dia 9d 40P 42615" 512
-# Move non-track segs to end
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- P "7" 7
- P "8" 8
- P "9" 9
- P "10" 10
- P "11" 11
- P "12" 12
- P "13" 13
- P "14" 14
- P "15" 15
- P "16" 16
- P "17" 17
- P "18" 18
- P "19" 19
- P "20" 20
- E 0.000000 4.980315 0.000000
- E 0.779093 4.918999 9.000000
- E 1.539002 4.736561 18.000000
- E 2.261016 4.437493 27.000000
- E 2.927356 4.029159 36.000000
- E 3.521614 3.521614 45.000000
- E 4.029159 2.927356 54.000000
- E 4.437493 2.261016 63.000000
- E 4.736561 1.539002 72.000000
- E 4.918999 0.779093 81.000000
- E 4.980315 0.000000 90.000000
- E 4.918999 -0.779093 99.000000
- E 4.736561 -1.539002 108.000000
- E 4.437493 -2.261016 117.000000
- E 4.029159 -2.927356 126.000000
- E 3.521614 -3.521614 135.000000
- E 2.927356 -4.029159 144.000000
- E 2.261016 -4.437493 153.000000
- E 1.539002 -4.736561 162.000000
- E 0.779093 -4.918999 171.000000
- E 0.000000 -4.980315 180.000000
- E -0.779093 -4.918999 189.000000
- E -1.539002 -4.736561 198.000000
- E -2.261016 -4.437493 207.000000
- E -2.927356 -4.029159 216.000000
- E -3.521614 -3.521614 225.000000
- E -4.029159 -2.927356 234.000000
- E -4.437493 -2.261016 243.000000
- E -4.736561 -1.539002 252.000000
- E -4.918999 -0.779093 261.000000
- E -4.980315 0.000000 270.000000
- E -4.918999 0.779093 279.000000
- E -4.736561 1.539002 288.000000
- E -4.437493 2.261016 297.000000
- E -4.029159 2.927356 306.000000
- E -3.521614 3.521614 315.000000
- E -2.927356 4.029159 324.000000
- E -2.261016 4.437493 333.000000
- E -1.539002 4.736561 342.000000
- E -0.779093 4.918999 351.000000
- S 16777215 0 0.000000 4.980315 0.000000 -4.980315
- S 16777215 0 0.779093 4.918999 -0.779093 -4.918999
- S 16777215 0 1.539002 4.736561 -1.539002 -4.736561
- S 16777215 0 2.261016 4.437493 -2.261016 -4.437493
- S 16777215 0 2.927356 4.029159 -2.927356 -4.029159
- S 16777215 0 3.521614 3.521614 -3.521614 -3.521614
- S 16777215 0 4.029159 2.927356 -4.029159 -2.927356
- S 16777215 0 4.437493 2.261016 -4.437493 -2.261016
- S 16777215 0 4.736561 1.539002 -4.736561 -1.539002
- S 16777215 0 4.918999 0.779093 -4.918999 -0.779093
- S 16777215 0 4.980315 0.000000 -4.980315 0.000000
- S 16777215 0 4.918999 -0.779093 -4.918999 0.779093
- S 16777215 0 4.736561 -1.539002 -4.736561 1.539002
- S 16777215 0 4.437493 -2.261016 -4.437493 2.261016
- S 16777215 0 4.029159 -2.927356 -4.029159 2.927356
- S 16777215 0 3.521614 -3.521614 -3.521614 3.521614
- S 16777215 0 2.927356 -4.029159 -2.927356 4.029159
- S 16777215 0 2.261016 -4.437493 -2.261016 4.437493
- S 16777215 0 1.539002 -4.736561 -1.539002 4.736561
- S 16777215 0 0.779093 -4.918999 -0.779093 4.918999
- G3 0 0.000000 0.129736 0.000000 0.000000 0
- A3 8424071 0.031250 4.980315 0.000000 0.000000 0 0.000000 360.000000
- A3 8424071 0.031250 6.043307 0.000000 0.000000 0 0.000000 360.000000
- A3 8424071 0.031250 1.245079 0.000000 0.000000 0 0.000000 360.000000
-END
-TURNOUT HO "Roco TurnTable Track Connector 42616/617"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.657480 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.657480 0.000000
-END
-
+CONTENTS Roco HO Scale Code-83 Tracks
+#Original Designs by Peter Klapwijk, Dave Bullis and Mats Wikström
+SUBCONTENTS Roco HO - Straight Tracks
+TURNOUT HO "Roco G1 straight, 230mm 42410"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.055118 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.055118 0.000000
+END
+TURNOUT HO "Roco G1/2 straight, 115mm 42412"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.527559 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.527559 0.000000
+END
+TURNOUT HO "Roco G1/4 straight, 57.5mm 42413"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.263780 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.263780 0.000000
+END
+TURNOUT HO "Roco G4 straight, 920mm 42406"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 36.220472 0.000000 90.000000
+ S 0 0 0.000000 0.000000 36.220472 0.000000
+END
+TURNOUT HO "Roco DG1 straight, 119mm 42411"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.685039 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.685039 0.000000
+END
+TURNOUT HO "Roco D2 straight 2mm c/w 493/496 98000"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.078740 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.078740 0.000000
+END
+TURNOUT HO "Roco D4 straight 4mm c/w 497/448/451/454 98001"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.157480 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.157480 0.000000
+END
+TURNOUT HO "Roco D5 straight 5mm c/w 493/496/488/489 98002"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.196850 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.196850 0.000000
+END
+TURNOUT HO "Roco D8 straight 8mm c/w 440/441 98003"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.314961 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.314961 0.000000
+END
+TURNOUT HO "Roco D12 straight 12mm c/w 497/448/451/454 98008"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.472441 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.472441 0.000000
+END
+
+SUBCONTENTS Roco HO - Misc Tracks
+TURNOUT HO "Roco Uncoupler Track 115mm 42419"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.527559 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.527559 0.000000
+ L3 8424071 0.550000 1.000000 0.000000 0 2.500000 0.000000 0
+ L3 8424071 0.600000 1.000000 1.000000 0 4.000000 1.000000 0
+END
+TURNOUT HO "Roco Feeder Track 115mm 42421"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.527559 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.527559 0.000000
+ L3 10249759 0.550000 0.500000 0.000000 0 4.000000 0.000000 0
+END
+
+
+SUBCONTENTS Roco HO - Curve Tracks
+TURNOUT HO "Roco R2, R358mm/30d 42422"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.047244 -1.888303 120.000000
+ C 0 0 14.094488 0.000000 -14.094488 0.000000 30.000000
+END
+TURNOUT HO "Roco R2 1/4, R358mm/7.5d 42408"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.839700 -0.120580 97.500000
+ C 0 0 14.094488 0.000000 -14.094488 0.000000 7.500000
+END
+TURNOUT HO "Roco R3, R419.6mm/30d 42423"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.259843 -2.213218 120.000000
+ C 0 0 16.519685 0.000000 -16.519685 0.000000 30.000000
+END
+TURNOUT HO "Roco R3 1/4, R419.6mm/7.5d 42409"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.156252 -0.141328 97.500000
+ C 0 0 16.519685 0.000000 -16.519685 0.000000 7.500000
+END
+TURNOUT HO "Roco R4, R481.2mm/30d 42424"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.472441 -2.538133 120.000000
+ C 0 0 18.944882 0.000000 -18.944882 0.000000 30.000000
+END
+TURNOUT HO "Roco R5, R542.8mm/30d 42425"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.685039 -2.863048 120.000000
+ C 0 0 21.370079 0.000000 -21.370079 0.000000 30.000000
+END
+TURNOUT HO "Roco R6, R604.4mm/30d 42426"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.897638 -3.187962 120.000000
+ C 0 0 23.795276 0.000000 -23.795276 0.000000 30.000000
+END
+TURNOUT HO "Roco R9, R826.4mm/15d 42427"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.420790 -1.108618 105.000000
+# fix sign on X and R
+ C 0 0 32.535433 0.000046 -32.535433 0.000000 15.000000
+END
+TURNOUT HO "Roco R10, R888.0mm/15d 42428"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.048477 -1.191255 105.000000
+ C 0 0 34.960630 0.000000 -34.960630 0.000000 15.000000
+END
+TURNOUT HO "Roco R20, R1962.0mm/5d 42430"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.732266 -0.293937 95.000000
+ C 0 0 77.244094 0.000000 -77.244094 0.000000 5.000000
+END
+
+
+SUBCONTENTS Roco HO - Turnouts
+TURNOUT HO "Roco WL15, 230mm, R873.5mm/15d 42440"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 9.055118 0.000000 90.000000
+ E 9.055118 1.212598 75.000000
+ S 0 0 0.000000 0.000000 0.648600 0.000000
+ S 0 0 0.648600 0.000000 9.055118 0.000000
+ C 0 0 -29.479767 0.648639 29.479767 164.999924 15.000152
+ S 0 0 8.278594 1.004517 9.055118 1.212598
+ END
+TURNOUT HO "Roco WR15, 230mm, R873.5mm/15d 42441"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 9.055118 0.000000 90.000000
+ E 9.055118 -1.212598 105.000000
+ S 0 0 0.000000 0.000000 0.648600 0.000000
+ S 0 0 0.648600 0.000000 9.055118 0.000000
+ C 0 0 29.479767 0.648483 -29.479767 0.000076 15.000152
+ S 0 0 8.278594 -1.004517 9.055118 -1.212598
+ END
+TURNOUT HO "Roco WL10, 345mm, R1946mm/10d 42488"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 13.582677 0.000000 90.000000
+ E 13.582677 1.212598 80.000000
+ S 0 0 0.000000 0.000000 0.648600 0.000000
+ S 0 0 0.648600 0.000000 13.582677 0.000000
+ C 0 0 -69.234030 0.648692 69.234030 169.999924 10.000152
+ S 0 0 12.671134 1.051851 13.582677 1.212598
+ END
+TURNOUT HO "Roco WR10, 345mm, R1946mm/10d 42489"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 13.582677 0.000000 90.000000
+ E 13.582677 -1.212598 100.000000
+ S 0 0 0.000000 0.000000 0.648600 0.000000
+ S 0 0 0.648600 0.000000 13.582677 0.000000
+ C 0 0 69.234030 0.648324 -69.234030 0.000076 10.000152
+ S 0 0 12.671134 -1.051851 13.582677 -1.212598
+ END
+
+
+SUBCONTENTS Roco HO - Curved Turnouts
+TURNOUT HO "Roco BWL R2/R3 Curved Left 30d 42464"
+ P "Normal" 1 6 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 9.472441 1.888303 60.000000
+ E 7.047244 1.888303 60.000000
+ S 0 0.000000 0.000000 0.000000 0.649632 0.000000
+ C 0 0.000000 -11.670097 0.649648 11.670097 149.999924 30.000152
+ S 0 0.000000 6.484703 1.563509 7.047244 1.888303
+ C 0 0.000000 -11.670073 3.074857 11.670073 149.999924 30.000152
+ S 0 0.000000 8.909900 1.563506 9.472441 1.888303
+ S 0 0.000000 0.649632 0.000000 3.074841 0.000000
+END
+TURNOUT HO "Roco BWR R2/R3 Curved Right 30d 42465"
+ P "Normal" 1 6 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 9.472441 -1.888303 120.000000
+ E 7.047244 -1.888303 120.000000
+ S 0 0.000000 0.000000 0.000000 0.649632 0.000000
+ C 0 0.000000 11.670097 0.649586 -11.670097 0.000076 30.000152
+ S 0 0.000000 6.484703 -1.563509 7.047244 -1.888303
+ C 0 0.000000 11.670073 3.074795 -11.670073 0.000076 30.000152
+ S 0 0.000000 8.909900 -1.563506 9.472441 -1.888303
+ S 0 0.000000 0.649632 0.000000 3.074841 0.000000
+END
+TURNOUT HO "Roco BWL R5/R6 Curved Left 30d 42470"
+ P "Normal" 1 6 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 13.110236 2.863048 60.000000
+ E 10.685039 2.863048 60.000000
+ S 0 0.000000 0.000000 0.000000 0.649646 0.000000
+ C 0 0.000000 -18.945668 0.649671 18.945668 149.999924 30.000152
+ S 0 0.000000 10.122516 2.538259 10.685039 2.863048
+ C 0 0.000000 -18.945644 3.074880 18.945644 149.999924 30.000152
+ S 0 0.000000 12.547713 2.538256 13.110236 2.863048
+ S 0 0.000000 0.649646 0.000000 3.074855 0.000000
+END
+TURNOUT HO "Roco BWR R5/R6 Curved Right 30d 42471"
+ P "Normal" 1 6 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 13.110236 -2.863048 120.000000
+ E 10.685039 -2.863048 120.000000
+ S 0 0.000000 0.000000 0.000000 0.649646 0.000000
+ C 0 0.000000 18.945668 0.649570 -18.945668 0.000076 30.000152
+ S 0 0.000000 10.122516 -2.538259 10.685039 -2.863048
+ C 0 0.000000 18.945644 3.074779 -18.945644 0.000076 30.000152
+ S 0 0.000000 12.547713 -2.538256 13.110236 -2.863048
+ S 0 0.000000 0.649646 0.000000 3.074855 0.000000
+END
+TURNOUT HO "Roco BWL R9/R10 Curved Left 30d 42476"
+ P "Normal" 1 6 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 18.692913 4.358921 60.000000
+ E 16.267717 4.358921 60.000000
+ S 0 0.000000 0.000000 0.000000 0.649673 0.000000
+ C 0 0.000000 -30.110981 0.649713 30.110981 149.999924 30.000152
+ S 0 0.000000 15.705221 4.034140 16.267717 4.358921
+ C 0 0.000000 -30.110957 3.074922 30.110957 149.999924 30.000152
+ S 0 0.000000 18.130418 4.034137 18.692913 4.358921
+ S 0 0.000000 0.649673 0.000000 3.074882 0.000000
+END
+TURNOUT HO "Roco BWR R9/R10 Curved Right 30d 42477"
+ P "Normal" 1 6 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 18.692913 -4.358922 120.000000
+ E 16.267717 -4.358922 120.000000
+ S 0 0.000000 0.000000 0.000000 0.649673 0.000000
+ C 0 0.000000 30.110981 0.649553 -30.110981 0.000076 30.000152
+ S 0 0.000000 15.705221 -4.034140 16.267717 -4.358921
+ C 0 0.000000 30.110957 3.074762 -30.110957 0.000076 30.000152
+ S 0 0.000000 18.130418 -4.034137 18.692913 -4.358921
+ S 0 0.000000 0.649673 0.000000 3.074882 0.000000
+END
+
+
+SUBCONTENTS Roco HO - SingleSlip Turnouts
+TURNOUT HO "Roco EKW15, 230mm, R531mm/15d 42448"
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 1 5 4
+ E 0.000000 0.000000 270.000000
+ E 9.055118 0.000000 90.000000
+ E 0.154271 1.171812 285.000000
+ E 8.900847 -1.171812 105.000000
+ S 0 0 0.000000 0.000000 1.297324 0.000000
+ S 0 0 1.297324 0.000000 9.055118 0.000000
+ S 0 0 0.154271 1.171812 7.647912 -0.836079
+ S 0 0 7.647912 -0.836079 8.900847 -1.171812
+ C 0 0 24.536566 1.297226 -24.536566 0.000076 15.000152
+ END
+TURNOUT HO "Roco EKW10, 345mm, R959mm/10d 42493"
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 1 5 4
+ E 0.000000 0.000000 270.000000
+ E 13.582677 0.000000 90.000000
+ E 0.103174 1.179294 280.000000
+ E 13.479503 -1.179294 100.000000
+ S 0 0.000000 0.000000 0.000000 1.297489 0.000000
+ S 0 0.000000 1.297489 0.000000 13.582677 0.000000
+ S 0 0.000000 0.103174 1.179294 12.202176 -0.954050
+ S 0 0.000000 12.202176 -0.954050 13.479503 -1.179294
+ C 0 0.000000 62.796695 1.297239 -62.796695 0.000076 10.000152
+ END
+SUBCONTENTS Roco HO - DoubleSlip Turnouts
+TURNOUT HO "Roco DKW15, 230mm, R531mm/15d 42451" 512
+ P "Cross1" 1 2 3
+ P "Cross2" 4 5 6
+ P "Slip1" 1 7 6
+ P "Slip2" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 9.055118 0.000000 90.000000
+ E 0.154271 1.171812 285.000000
+ E 8.900847 -1.171812 105.000000
+ S 0 0.000000 0.000000 0.000000 1.297324 0.000000
+ S 0 0.000000 1.297324 0.000000 7.757794 0.000000
+ S 0 0.000000 7.757794 0.000000 9.055118 0.000000
+ S 0 0.000000 0.154271 1.171812 1.407206 0.836079
+ S 0 0.000000 1.407206 0.836079 7.647912 -0.836079
+ S 0 0.000000 7.647912 -0.836079 8.900847 -1.171812
+ C 0 0.000000 24.536566 1.297226 -24.536566 0.000076 15.000152
+ C 0 0.000000 -24.536566 7.757826 24.536558 180.000076 15.000152
+ END
+TURNOUT HO "Roco DKW10, 345mm, R959mm/10d 42496"
+ P "Normal" 1 2 3 0 4 5 6
+ P "Reverse" 1 7 6 0 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 13.582677 0.000000 90.000000
+ E 0.103174 1.179294 280.000000
+ E 13.479503 -1.179294 100.000000
+ S 0 0.000000 0.000000 0.000000 1.297489 0.000000
+ S 0 0.000000 1.297489 0.000000 12.285188 0.000000
+ S 0 0.000000 12.285188 0.000000 13.582677 0.000000
+ S 0 0.000000 0.103174 1.179294 1.380501 0.954050
+ S 0 0.000000 1.380501 0.954050 12.202176 -0.954050
+ S 0 0.000000 12.202176 -0.954050 13.479503 -1.179294
+ C 0 0.000000 62.796695 1.297239 -62.796695 0.000076 10.000152
+ C 0 0.000000 -62.796695 12.285270 62.796680 180.000076 10.000152
+ END
+
+
+SUBCONTENTS Roco HO - Wye Turnouts
+TURNOUT HO "Roco DWW15 3-WAY 287.5mm, R873.5mm/15d 42454"
+ P "Left" 1 2 3
+ P "Normal" 1 4 7
+ P "Right" 1 4 5 6
+ E 0.000000 0.000000 270.000000
+ E 9.055118 1.212598 75.000000
+ E 11.318898 -1.212598 105.000000
+ E 11.318898 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.648600 0.000000
+ C 0 0 -29.479767 0.648639 29.479767 164.999924 15.000152
+ S 0 0 8.278594 1.004517 9.055118 1.212598
+ S 0 0 0.648600 0.000000 2.757006 0.000000
+ C 0 0 30.660032 2.756884 -30.660032 0.000076 15.000152
+ S 0 0 10.692478 -1.044735 11.318898 -1.212598
+ S 0 0 2.757006 0.000000 11.318898 0.000000
+ END
+
+
+SUBCONTENTS Roco HO - Crossings
+TURNOUT HO "Roco K15, 230mm, 15d 42497"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 9.055118 0.000000 90.000000
+ E 0.154271 1.171812 285.000000
+ E 8.900847 -1.171812 105.000000
+ S 0 0.000000 0.000000 0.000000 9.055118 0.000000
+ S 0 0.000000 0.154271 1.171812 8.900847 -1.171812
+ END
+TURNOUT HO "Roco K30, 119mm, 30d 42498"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.685039 0.000000 90.000000
+ E 0.313836 1.171256 300.000000
+ E 4.371203 -1.171256 120.000000
+ S 0 0.000000 0.000000 0.000000 4.685039 0.000000
+ S 0 0.000000 0.313836 1.171256 4.371203 -1.171256
+ END
+
+
+SUBCONTENTS Roco HO - Turn Table
+TURNOUT HO "ROCO Turntable 253mm Dia 9d 40P 42615" 512
+# Move non-track segs to end
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ P "13" 13
+ P "14" 14
+ P "15" 15
+ P "16" 16
+ P "17" 17
+ P "18" 18
+ P "19" 19
+ P "20" 20
+ E 0.000000 4.980315 0.000000
+ E 0.779093 4.918999 9.000000
+ E 1.539002 4.736561 18.000000
+ E 2.261016 4.437493 27.000000
+ E 2.927356 4.029159 36.000000
+ E 3.521614 3.521614 45.000000
+ E 4.029159 2.927356 54.000000
+ E 4.437493 2.261016 63.000000
+ E 4.736561 1.539002 72.000000
+ E 4.918999 0.779093 81.000000
+ E 4.980315 0.000000 90.000000
+ E 4.918999 -0.779093 99.000000
+ E 4.736561 -1.539002 108.000000
+ E 4.437493 -2.261016 117.000000
+ E 4.029159 -2.927356 126.000000
+ E 3.521614 -3.521614 135.000000
+ E 2.927356 -4.029159 144.000000
+ E 2.261016 -4.437493 153.000000
+ E 1.539002 -4.736561 162.000000
+ E 0.779093 -4.918999 171.000000
+ E 0.000000 -4.980315 180.000000
+ E -0.779093 -4.918999 189.000000
+ E -1.539002 -4.736561 198.000000
+ E -2.261016 -4.437493 207.000000
+ E -2.927356 -4.029159 216.000000
+ E -3.521614 -3.521614 225.000000
+ E -4.029159 -2.927356 234.000000
+ E -4.437493 -2.261016 243.000000
+ E -4.736561 -1.539002 252.000000
+ E -4.918999 -0.779093 261.000000
+ E -4.980315 0.000000 270.000000
+ E -4.918999 0.779093 279.000000
+ E -4.736561 1.539002 288.000000
+ E -4.437493 2.261016 297.000000
+ E -4.029159 2.927356 306.000000
+ E -3.521614 3.521614 315.000000
+ E -2.927356 4.029159 324.000000
+ E -2.261016 4.437493 333.000000
+ E -1.539002 4.736561 342.000000
+ E -0.779093 4.918999 351.000000
+ S 16777215 0 0.000000 4.980315 0.000000 -4.980315
+ S 16777215 0 0.779093 4.918999 -0.779093 -4.918999
+ S 16777215 0 1.539002 4.736561 -1.539002 -4.736561
+ S 16777215 0 2.261016 4.437493 -2.261016 -4.437493
+ S 16777215 0 2.927356 4.029159 -2.927356 -4.029159
+ S 16777215 0 3.521614 3.521614 -3.521614 -3.521614
+ S 16777215 0 4.029159 2.927356 -4.029159 -2.927356
+ S 16777215 0 4.437493 2.261016 -4.437493 -2.261016
+ S 16777215 0 4.736561 1.539002 -4.736561 -1.539002
+ S 16777215 0 4.918999 0.779093 -4.918999 -0.779093
+ S 16777215 0 4.980315 0.000000 -4.980315 0.000000
+ S 16777215 0 4.918999 -0.779093 -4.918999 0.779093
+ S 16777215 0 4.736561 -1.539002 -4.736561 1.539002
+ S 16777215 0 4.437493 -2.261016 -4.437493 2.261016
+ S 16777215 0 4.029159 -2.927356 -4.029159 2.927356
+ S 16777215 0 3.521614 -3.521614 -3.521614 3.521614
+ S 16777215 0 2.927356 -4.029159 -2.927356 4.029159
+ S 16777215 0 2.261016 -4.437493 -2.261016 4.437493
+ S 16777215 0 1.539002 -4.736561 -1.539002 4.736561
+ S 16777215 0 0.779093 -4.918999 -0.779093 4.918999
+ G3 0 0.000000 0.129736 0.000000 0.000000 0
+ A3 8424071 0.031250 4.980315 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 6.043307 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 1.245079 0.000000 0.000000 0 0.000000 360.000000
+END
+TURNOUT HO "Roco TurnTable Track Connector 42616/617"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.657480 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.657480 0.000000
+END
+
diff --git a/app/lib/params/HO-WalthCornerstone 1.xtp b/app/lib/params/HO-Walthers Cornerstone 1.xtp
index bea84b2..84bbdd2 100644
--- a/app/lib/params/HO-WalthCornerstone 1.xtp
+++ b/app/lib/params/HO-Walthers Cornerstone 1.xtp
@@ -1,4385 +1,4455 @@
-CONTENTS Walthers Cornerstone HO Structures 1
-
-SUBCONTENTS Walthers Cornerstone HO Structures - Dairy Facilities
-STRUCTURE HO "Walthers Cornerstone Structures Sterling Consolidated Dairy Bottling Plant 933-3298"
- F3 0 0.000000 4
- 27.554530 4.822044 0
- 27.554530 4.822044 0
- 27.554530 4.822044 0
- 27.554530 4.822044 0
- F3 12632256 0.000000 4
- 27.554530 4.850746 0
- 30.051660 4.850746 0
- 30.051660 0.229621 0
- 27.554530 0.229621 0
- F3 0 0.000000 4
- 22.962110 5.051665 0
- 22.962110 5.051665 0
- 22.962110 5.051665 0
- 22.962110 5.051665 0
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 4.592422 0.000000 0
- 4.592422 10.562570 0
- 0.000000 10.562570 0
- F3 32768 0.000000 4
- 0.000000 10.562570 0
- 0.918485 10.562570 0
- 0.918485 0.057405 0
- 0.000000 0.057405 0
- F3 8388608 0.000000 4
- 0.918485 0.000000 0
- 1.148106 0.000000 0
- 1.148106 10.562570 0
- 0.918485 10.562570 0
- F3 8388608 0.000000 4
- 1.033295 10.562570 0
- 4.535017 10.562570 0
- 4.535017 10.332950 0
- 1.033295 10.332950 0
- F3 0 0.000000 4
- 22.847300 10.562570 0
- 22.847300 10.562570 0
- 22.847300 10.562570 0
- 22.847300 10.562570 0
- F3 8388608 0.000000 4
- 4.592422 10.562570 0
- 4.362802 10.562570 0
- 4.362802 5.051665 0
- 4.592422 5.051665 0
- F3 8388608 0.000000 4
- 22.962110 5.051665 0
- 4.362802 5.051665 0
- 4.362802 4.822044 0
- 22.962110 4.822044 0
- F3 8388608 0.000000 4
- 22.962110 10.562570 0
- 27.525830 10.562570 0
- 27.525830 10.332950 0
- 22.962110 10.332950 0
- F3 8388608 0.000000 4
- 30.309990 0.000000 0
- 7.347876 0.000000 0
- 7.347876 0.229621 0
- 30.309990 0.229621 0
- F3 8388608 0.000000 4
- 7.319173 0.000000 0
- 1.119403 0.000000 0
- 1.119403 0.229621 0
- 7.319173 0.229621 0
- F3 0 0.000000 4
- 27.554530 10.591270 0
- 27.554530 10.591270 0
- 27.554530 10.591270 0
- 27.554530 10.591270 0
- F3 8388608 0.000000 4
- 27.554530 10.562570 0
- 27.324910 10.562570 0
- 27.324910 5.080368 0
- 27.554530 5.080368 0
- F3 8388608 0.000000 4
- 30.309990 5.080368 0
- 27.324910 5.080368 0
- 27.324910 4.822044 0
- 30.309990 4.822044 0
- F3 8388608 0.000000 4
- 30.309990 5.080368 0
- 30.080370 5.080368 0
- 30.080370 0.258324 0
- 30.309990 0.258324 0
- F3 8388608 0.000000 4
- 22.962110 10.562570 0
- 23.191730 10.562570 0
- 23.191730 0.258324 0
- 22.962110 0.258324 0
- F3 11316396 0.000000 4
- 23.191730 10.332950 0
- 27.267510 10.332950 0
- 27.267510 0.287026 0
- 23.191730 0.287026 0
- G3 8421504 0.000000 1.320634 25.287030 8.352468 0
- G3 15790320 0.000000 1.092210 25.315730 8.352468 0
- L3 0 0.000000 25.258320 9.414466 0 25.258320 7.233066 0
- L3 0 0.000000 24.196330 8.323766 0 26.406430 8.323766 0
- L3 0 0.000000 24.540760 7.577497 0 26.062000 9.127439 0
- L3 0 0.000000 24.483350 9.070035 0 26.033290 7.548795 0
- F3 8388608 0.000000 4
- 23.880600 6.027555 0
- 24.339840 6.027555 0
- 24.339840 6.486797 0
- 23.880600 6.486797 0
- F3 0 0.000000 4
- 23.966710 6.400689 0
- 24.282430 6.400689 0
- 24.282430 6.084960 0
- 23.966710 6.084960 0
- L3 0 0.000000 25.258320 10.332950 0 25.258320 9.672790 0
- L3 0 0.000000 25.258320 7.003444 0 25.258320 0.229621 0
- F3 8388608 0.000000 4
- 27.324910 4.822044 0
- 27.554530 4.822044 0
- 27.554530 0.229621 0
- 27.324910 0.229621 0
- L3 0 0.000000 23.191730 0.688863 0 27.324910 0.688863 0
- L3 0 0.000000 23.163030 1.148106 0 27.324910 1.148106 0
- L3 0 0.000000 23.191730 1.607348 0 27.296210 1.607348 0
- L3 0 0.000000 23.191730 2.066590 0 27.324910 2.066590 0
- L3 0 0.000000 23.191730 2.525832 0 27.324910 2.525832 0
- L3 0 0.000000 23.191730 2.985075 0 23.191730 2.985075 0
- L3 0 0.000000 23.191730 2.985075 0 27.324910 2.985075 0
- F3 12632256 0.000000 4
- 4.563720 4.822044 0
- 22.962110 4.822044 0
- 22.962110 0.229621 0
- 4.563720 0.229621 0
- L3 0 0.000000 17.451210 10.390360 0 17.451210 10.390360 0
- F3 4210752 0.000000 4
- 21.584390 3.444317 0
- 20.780710 3.444317 0
- 20.780710 1.664753 0
- 21.584390 1.664753 0
- F3 4210752 0.000000 4
- 8.323766 3.444317 0
- 11.136620 3.444317 0
- 11.136620 1.894374 0
- 8.323766 1.894374 0
- G3 4210752 0.000000 0.292710 21.986220 4.133180 0
- G3 4210752 0.000000 0.462817 5.970150 2.353616 0
- F3 4210752 0.000000 4
- 14.236510 4.133180 0
- 15.154990 4.133180 0
- 15.154990 3.329506 0
- 14.236510 3.329506 0
- F3 4210752 0.000000 4
- 14.236510 1.377727 0
- 15.154990 1.377727 0
- 15.154990 0.631458 0
- 14.236510 0.631458 0
- F3 4210752 0.000000 4
- 2.181401 2.525832 0
- 2.870264 2.525832 0
- 2.870264 1.836969 0
- 2.181401 1.836969 0
- F3 4473924 0.000000 4
- 2.066590 8.725603 0
- 3.329506 8.725603 0
- 3.329506 7.634902 0
- 2.066590 7.634902 0
- L3 0 0.000000 32.950630 12.858780 0 32.950630 12.858780 0
- L3 0 0.000000 23.163030 3.444317 0 27.296210 3.444317 0
- L3 0 0.000000 23.163030 3.960964 0 27.267510 3.960964 0
- L3 0 0.000000 23.163030 4.420207 0 27.296210 4.420207 0
- L3 0 0.000000 23.134330 4.850746 0 27.267510 4.850746 0
- L3 0 0.000000 23.134330 5.281286 0 27.267510 5.281286 0
- L3 0 0.000000 23.163030 5.740528 0 27.296210 5.740528 0
- L3 0 0.000000 23.134330 6.199770 0 23.851890 6.199770 0
- L3 0 0.000000 24.339840 6.199770 0 27.296210 6.199770 0
- L3 0 0.000000 23.134330 6.659013 0 27.296210 6.659013 0
- L3 0 0.000000 23.134330 7.118255 0 24.856490 7.118255 0
- L3 0 0.000000 25.688860 7.118255 0 27.296210 7.118255 0
- L3 0 0.000000 23.163030 7.577497 0 24.196330 7.577497 0
- L3 0 0.000000 26.320320 7.577497 0 27.324910 7.577497 0
- L3 0 0.000000 23.134330 8.036739 0 23.995410 8.036739 0
- L3 0 0.000000 26.549940 8.036739 0 27.267510 8.036739 0
- L3 0 0.000000 23.134330 8.467279 0 23.134330 8.495982 0
- L3 0 0.000000 23.163030 8.495982 0 23.938000 8.495982 0
- L3 0 0.000000 26.578650 8.495982 0 27.267510 8.495982 0
- L3 0 0.000000 23.134330 8.955224 0 24.110220 8.955224 0
- L3 0 0.000000 26.435130 8.955224 0 27.296210 8.955224 0
- L3 0 0.000000 23.134330 9.414466 0 24.483350 9.414466 0
- L3 0 0.000000 26.033290 9.414466 0 27.238810 9.414466 0
- L3 0 0.000000 23.134330 9.873709 0 27.267510 9.873709 0
- END
-STRUCTURE HO "Walthers Cornerstone Structures Sterling Consolidated Dairy Power House 933-3298"
- L3 0 0.000000 0.000000 0.000000 0 4.822044 0.000000 0
- L3 0 0.000000 4.822044 0.000000 0 4.822044 4.822044 0
- L3 8388608 0.000000 4.822044 4.822044 0 0.000000 4.822044 0
- L3 8388608 0.000000 0.000000 4.822044 0 0.000000 0.000000 0
- F3 8388608 0.000000 4
- 0.000000 0.000000 0
- 4.822044 0.000000 0
- 4.822044 0.229621 0
- 0.000000 0.229621 0
- F3 8388608 0.000000 4
- 0.000000 0.000000 0
- 0.229621 0.000000 0
- 0.229621 4.822044 0
- 0.000000 4.822044 0
- F3 8388608 0.000000 4
- 0.000000 4.822044 0
- 4.822044 4.822044 0
- 4.822044 4.592422 0
- 0.000000 4.592422 0
- F3 8388608 0.000000 4
- 4.822044 4.822044 0
- 4.592422 4.822044 0
- 4.592422 0.000000 0
- 4.822044 0.000000 0
- F3 12632256 0.000000 4
- 0.229621 4.592422 0
- 4.592422 4.592422 0
- 4.592422 0.229621 0
- 0.229621 0.229621 0
- L3 0 0.000000 2.324914 4.592422 0 2.324914 4.592422 0
- L3 0 0.000000 2.296211 4.592422 0 2.296211 0.229621 0
- L3 0 0.000000 0.200919 4.133180 0 4.592422 4.133180 0
- L3 0 0.000000 0.200919 3.673938 0 4.592422 3.673938 0
- L3 0 0.000000 0.200919 3.214696 0 4.592422 3.214696 0
- L3 0 0.000000 0.229621 2.755454 0 4.592422 2.755454 0
- L3 0 0.000000 0.229621 2.296211 0 4.592422 2.296211 0
- L3 0 0.000000 0.229621 1.836969 0 4.592422 1.836969 0
- L3 0 0.000000 0.229621 1.377727 0 4.592422 1.377727 0
- L3 0 0.000000 0.229621 0.918485 0 4.592422 0.889782 0
- L3 0 0.000000 0.229621 0.459242 0 4.592422 0.459242 0
- F3 0 0.000000 4
- 1.492537 2.640643 0
- 1.865672 2.640643 0
- 1.865672 2.382319 0
- 1.492537 2.382319 0
- F3 0 0.000000 4
- 2.755454 2.611940 0
- 3.157290 2.611940 0
- 3.157290 2.353616 0
- 2.755454 2.353616 0
- END
-STRUCTURE HO "Walthers Cornerstone Structures Sterling Consolidated Dairy Smoke Stack 933-3298"
- G3 8388608 0.000000 0.689460 0.689460 0.689460 0
- G3 0 0.000000 0.516648 0.689460 0.689460 0
- END
-STRUCTURE HO "Walthers Cornerstone Structures Sterling Consolidated Dairy Office/Freight House 933-3298"
- F3 8388608 0.000000 4
- 0.172216 0.229621 0
- 15.614240 0.229621 0
- 15.614240 0.000000 0
- 0.172216 0.000000 0
- F3 8388608 0.000000 4
- 0.000000 0.000000 0
- 0.200919 0.000000 0
- 0.200919 6.888634 0
- 0.000000 6.888634 0
- F3 8388608 0.000000 4
- 15.614240 0.000000 0
- 15.355910 0.000000 0
- 15.355910 6.888634 0
- 15.614240 6.888634 0
- F3 8388608 0.000000 4
- 0.000000 6.888634 0
- 15.585530 6.888634 0
- 15.585530 6.659013 0
- 0.000000 6.659013 0
- F3 12632256 0.000000 4
- 0.200919 6.659013 0
- 15.327210 6.659013 0
- 15.327210 0.258324 0
- 0.200919 0.258324 0
- F3 8388608 0.000000 4
- 4.592422 6.659013 0
- 4.822044 6.659013 0
- 4.822044 0.000000 0
- 4.592422 0.000000 0
- L3 0 0.000000 0.000000 3.444317 0 4.649828 3.444317 0
- F3 7039851 0.000000 4
- 1.262916 5.740528 0
- 1.664753 5.740528 0
- 1.664753 5.281286 0
- 1.262916 5.281286 0
- G3 7105644 0.000000 0.243551 1.148106 1.894374 0
- L3 0 0.000000 0.459242 6.659013 0 0.459242 0.229621 0
- L3 0 0.000000 0.918485 6.659013 0 0.889782 0.258324 0
- L3 0 0.000000 1.377727 6.659013 0 1.377727 5.740528 0
- L3 0 0.000000 1.377727 5.281286 0 1.377727 0.229621 0
- L3 0 0.000000 1.836969 6.659013 0 1.836969 0.229621 0
- L3 0 0.000000 2.296211 6.659013 0 2.296211 0.229621 0
- L3 0 0.000000 2.755454 6.659013 0 2.755454 0.287026 0
- L3 0 0.000000 3.214696 6.659013 0 3.214696 0.229621 0
- L3 0 0.000000 3.673938 6.659013 0 3.673938 0.229621 0
- L3 0 0.000000 4.133180 6.659013 0 4.133180 0.258324 0
- F3 7368816 0.000000 4
- 9.816303 3.903559 0
- 10.505170 3.903559 0
- 10.505170 3.214696 0
- 9.816303 3.214696 0
- G3 7631988 0.000000 0.317031 6.429391 5.510907 0
- G3 7039851 0.000000 0.344432 6.429391 1.377727 0
- G3 6776679 0.000000 0.345626 13.777270 1.377727 0
- G3 0 0.000000 0.344432 13.777270 5.510907 0
- END
-STRUCTURE HO "Walthers Cornerstone Structures Sterling Consolidated Dairy Store 933-3298"
- F3 16776960 0.000000 4
- 0.000000 0.000000 0
- 0.229621 0.000000 0
- 0.229621 5.051665 0
- 0.000000 5.051665 0
- F3 16776960 0.000000 4
- 0.000000 0.000000 0
- 3.444317 0.000000 0
- 3.444317 0.229621 0
- 0.000000 0.229621 0
- F3 16776960 0.000000 4
- 0.000000 5.051665 0
- 3.444317 5.051665 0
- 3.444317 4.822044 0
- 0.000000 4.822044 0
- F3 16776960 0.000000 4
- 3.444317 0.000000 0
- 3.214696 0.000000 0
- 3.214696 5.051665 0
- 3.444317 5.051665 0
- F3 15000804 0.000000 4
- 0.229621 4.822044 0
- 3.185993 4.822044 0
- 3.185993 0.229621 0
- 0.229621 0.229621 0
- F3 0 0.000000 4
- 0.459242 4.133180 0
- 0.774971 4.133180 0
- 0.774971 3.817451 0
- 0.459242 3.817451 0
- END
-
-
-SUBCONTENTS Walthers Cornerstone HO Structures - Railroad Facilities
-STRUCTURE HO "Walther's Trackside Interlocking Tower 933-2600A"
- F3 8421504 0.000000 4
- 0.028703 0.000000 0
- 2.324914 0.000000 0
- 2.324914 2.296211 0
- 0.028703 2.296211 0
- L3 0 0.000000 0.000000 0.000000 0 2.296211 2.296211 0
- L3 0 0.000000 2.296211 0.000000 0 0.028703 2.296211 0
- F3 12976128 0.000000 4
- 2.324914 2.296211 0
- 1.865672 2.296211 0
- 1.865672 3.673938 0
- 2.324914 3.673938 0
- F3 13369344 0.000000 4
- 1.865672 2.296211 0
- 0.028703 2.296211 0
- 0.028703 2.611940 0
- 1.865672 2.611940 0
- F3 15790320 0.000000 4
- 0.028703 1.377727 0
- 0.373134 1.377727 0
- 0.373134 0.918485 0
- 0.028703 0.918485 0
- F3 0 0.000000 4
- 0.086108 1.262916 0
- 0.258324 1.262916 0
- 0.258324 1.033295 0
- 0.086108 1.033295 0
- L3 0 0.000000 0.717566 2.296211 0 0.717566 2.640643 0
- L3 0 0.000000 1.865672 2.640643 0 2.324914 2.640643 0
- L3 0 0.000000 2.324914 2.640643 0 2.324914 2.296211 0
- L3 0 0.000000 2.324914 2.296211 0 1.865672 2.296211 0
- L3 0 0.000000 1.865672 2.296211 0 1.865672 2.640643 0
- L3 0 0.000000 1.865672 3.444317 0 2.296211 3.444317 0
- L3 0 0.000000 1.865672 3.214696 0 2.324914 3.214696 0
- L3 0 0.000000 1.865672 2.985075 0 2.324914 2.985075 0
- L3 0 0.000000 1.865672 2.755454 0 2.267509 2.755454 0
- L3 0 0.000000 0.947187 2.296211 0 0.947187 2.669346 0
- L3 0 0.000000 1.176808 2.296211 0 1.176808 2.669346 0
- L3 0 0.000000 1.406429 2.296211 0 1.406429 2.640643 0
- L3 0 0.000000 1.636051 2.296211 0 1.636051 2.669346 0
- END
-STRUCTURE HO "Walther's Speeder Shed 933-2600B"
- F3 10724259 0.000000 4
- 0.000000 1.836969 0
- 2.066590 1.836969 0
- 2.066590 4.822044 0
- 0.000000 4.822044 0
- L3 0 0.000000 1.004592 1.836969 0 1.031238 4.822062 0
- F3 12632256 0.000000 4
- 0.315729 0.000000 0
- 1.693456 0.000000 0
- 1.693456 1.836969 0
- 0.315729 1.836969 0
- L3 0 0.000000 0.631458 0.000000 0 0.631458 1.836969 0
- L3 0 0.000000 1.377727 0.000000 0 1.377727 1.836969 0
- L3 0 0.000000 0.631458 0.229621 0 1.377727 0.229621 0
- L3 0 0.000000 0.602756 0.459242 0 1.377727 0.459242 0
- L3 0 0.000000 0.631458 0.688863 0 1.349024 0.688863 0
- L3 0 0.000000 0.631458 0.918485 0 1.406429 0.918485 0
- L3 0 0.000000 0.631458 1.148106 0 1.377727 1.148106 0
- L3 0 0.000000 0.631458 1.377727 0 1.377727 1.377727 0
- L3 0 0.000000 0.602756 1.607348 0 1.377727 1.607348 0
- END
-STRUCTURE HO "Walther's Crossing Shanty 933-2600C"
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 1.148106 0.000000 0
- 1.148106 0.459242 0
- 0.000000 0.459242 0
- F3 11053224 0.000000 4
- 0.000000 0.459242 0
- 1.119403 0.459242 0
- 1.119403 1.377727 0
- 0.000000 1.377727 0
- L3 0 0.000000 0.000000 0.918485 0 1.119403 0.918485 0
- G3 0 0.000000 0.057405 0.344432 1.148106 0
- F3 16776960 0.000000 4
- 1.119403 1.205511 0
- 1.607348 1.205511 0
- 1.607348 0.545350 0
- 1.119403 0.545350 0
- L3 0 0.000000 1.119403 1.234214 0 1.578645 1.234214 0
- L3 0 0.000000 1.578645 1.234214 0 1.578645 0.516648 0
- L3 0 0.000000 1.578645 0.516648 0 1.119403 0.516648 0
- L3 0 0.000000 1.119403 0.516648 0 1.119403 1.234214 0
- END
-STRUCTURE HO "Walther's Speeder 933-2600D"
- F3 16776960 0.000000 4
- 0.000000 0.000000 0
- 0.918485 0.000000 0
- 0.918485 0.688863 0
- 0.000000 0.688863 0
- L3 0 0.000000 0.000000 0.000000 0 0.918485 0.000000 0
- L3 0 0.000000 0.918485 0.000000 0 0.918485 0.688863 0
- L3 0 0.000000 0.918485 0.688863 0 0.000000 0.688863 0
- L3 0 0.000000 0.000000 0.688863 0 0.000000 0.000000 0
- G3 0 0.000000 0.028703 0.057405 0.344432 0
- END
-STRUCTURE HO "Walther's Icing Platform 292-3061"
- F3 13816530 0.000000 4
- 0.000000 0.028703 0
- 18.369690 0.028703 0
- 18.369690 2.669346 0
- 0.000000 2.669346 0
- F3 8404992 0.000000 4
- 0.000000 2.669346 0
- 0.086108 2.669346 0
- 0.086108 0.057405 0
- 0.000000 0.057405 0
- F3 8404992 0.000000 4
- 0.000000 2.669346 0
- 18.369690 2.669346 0
- 18.369690 2.583238 0
- 0.000000 2.583238 0
- F3 8404992 0.000000 4
- 0.000000 0.028703 0
- 18.369690 0.028703 0
- 18.369690 0.114811 0
- 0.000000 0.114811 0
- F3 8404992 0.000000 4
- 18.369690 1.636051 0
- 21.785310 1.636051 0
- 21.785310 0.947187 0
- 18.369690 0.947187 0
- F3 8404992 0.000000 4
- 19.833520 0.918485 0
- 19.747420 0.918485 0
- 19.747420 0.000000 0
- 19.833520 0.000000 0
- F3 8404992 0.000000 4
- 19.833520 2.583238 0
- 19.747420 2.583238 0
- 19.747420 1.607348 0
- 19.833520 1.607348 0
- L3 0 0.000000 18.599310 1.664753 0 18.599310 0.918485 0
- L3 12632256 0.000000 18.828930 1.664753 0 18.828930 0.947187 0
- L3 0 0.000000 19.058550 1.636051 0 19.058550 0.947187 0
- L3 0 0.000000 19.288180 1.664753 0 19.288180 0.975890 0
- L3 0 0.000000 19.517800 1.664753 0 19.517800 0.975890 0
- L3 0 0.000000 19.747420 1.636051 0 19.747420 0.975890 0
- L3 0 0.000000 19.977040 1.636051 0 19.977040 0.947187 0
- L3 0 0.000000 20.206660 1.636051 0 20.206660 0.918485 0
- L3 0 0.000000 20.436280 1.664753 0 20.436280 0.975890 0
- L3 0 0.000000 20.665900 1.664753 0 20.665900 0.918485 0
- L3 0 0.000000 20.895520 1.664753 0 20.895520 0.975890 0
- L3 0 0.000000 21.125140 1.636051 0 21.125140 0.947187 0
- L3 0 0.000000 21.354760 1.636051 0 21.354760 0.975890 0
- L3 0 0.000000 21.584390 1.664753 0 21.584390 0.947187 0
- F3 13816530 0.000000 4
- 18.340990 0.143513 0
- 19.747420 0.143513 0
- 19.747420 2.583238 0
- 18.340990 2.583238 0
- F3 8404992 0.000000 4
- 18.312280 2.669346 0
- 19.804820 2.669346 0
- 19.804820 2.583238 0
- 18.312280 2.583238 0
- F3 8404992 0.000000 4
- 18.369690 0.028703 0
- 19.747420 0.028703 0
- 19.747420 0.114811 0
- 18.369690 0.114811 0
- END
-STRUCTURE HO "Walther's Icing Platform Add-On 292-3062"
- F3 13816530 0.000000 4
- 0.000000 0.028703 0
- 18.369690 0.028703 0
- 18.369690 2.669346 0
- 0.000000 2.669346 0
- F3 8404992 0.000000 4
- 0.000000 2.669346 0
- 0.086108 2.669346 0
- 0.086108 0.057405 0
- 0.000000 0.057405 0
- F3 8404992 0.000000 4
- 0.000000 2.669346 0
- 18.369690 2.669346 0
- 18.369690 2.583238 0
- 0.000000 2.583238 0
- F3 8404992 0.000000 4
- 0.000000 0.028703 0
- 18.369690 0.028703 0
- 18.369690 0.114811 0
- 0.000000 0.114811 0
- F3 13684944 0.000000 4
- 19.833520 0.918485 0
- 19.747420 0.918485 0
- 19.747420 0.000000 0
- 19.833520 0.000000 0
- F3 13684944 0.000000 4
- 19.833520 2.583238 0
- 19.747420 2.583238 0
- 19.747420 1.607348 0
- 19.833520 1.607348 0
- F3 13816530 0.000000 4
- 18.340990 0.143513 0
- 19.747420 0.143513 0
- 19.747420 2.583238 0
- 18.340990 2.583238 0
- F3 8404992 0.000000 4
- 18.312280 2.669346 0
- 19.804820 2.669346 0
- 19.804820 2.583238 0
- 18.312280 2.583238 0
- F3 8404992 0.000000 4
- 18.369690 0.028703 0
- 19.747420 0.028703 0
- 19.747420 0.114811 0
- 18.369690 0.114811 0
- F3 13816530 0.000000 4
- 19.833520 1.636051 0
- 19.747420 1.636051 0
- 19.747420 0.918485 0
- 19.833520 0.918485 0
- END
-STRUCTURE HO "Walther's Ice House 292-526"
- F3 8421504 0.000000 4
- 3.673938 1.808266 0
- 12.858780 1.808266 0
- 12.858780 7.319173 0
- 3.673938 7.319173 0
- F3 8421504 0.000000 4
- 0.000000 5.482204 0
- 3.673938 5.482204 0
- 3.673938 3.645235 0
- 0.000000 3.645235 0
- L3 0 0.000000 0.000000 4.563720 0 12.887490 4.563720 0
- L3 0 0.000000 3.673938 5.482204 0 3.673938 3.645235 0
- F3 8421504 0.000000 4
- 12.858780 6.859931 0
- 16.532720 6.859931 0
- 16.532720 2.267509 0
- 12.858780 2.267509 0
- L3 0 0.000000 12.858780 6.859931 0 12.858780 2.267509 0
- L3 0 0.000000 12.858780 4.563720 0 16.532720 4.563720 0
- F3 14737632 0.000000 4
- 12.858780 2.267509 0
- 16.532720 2.267509 0
- 16.532720 1.808266 0
- 12.858780 1.808266 0
- F3 15132390 0.000000 4
- 12.858780 6.859931 0
- 16.532720 6.859931 0
- 16.532720 7.319173 0
- 12.858780 7.319173 0
- F3 8421504 0.000000 4
- 16.532720 6.859931 0
- 18.369690 6.859931 0
- 18.369690 2.296211 0
- 16.532720 2.296211 0
- L3 0 0.000000 16.532720 2.267509 0 16.532720 6.859931 0
- F3 8421504 0.000000 4
- 16.532720 0.889782 0
- 15.154990 0.889782 0
- 15.154990 2.267509 0
- 16.532720 2.267509 0
- L3 0 0.000000 15.154990 2.267509 0 16.532720 2.267509 0
- F3 8421504 0.000000 4
- 16.532720 2.296211 0
- 18.369690 2.296211 0
- 18.369690 0.000000 0
- 16.532720 0.000000 0
- L3 0 0.000000 16.532720 2.267509 0 18.369690 2.267509 0
- L3 0 0.000000 16.532720 2.411022 0 16.532720 0.889782 0
- G3 15790320 0.000000 0.516648 17.451210 1.578645 0
- G3 0 0.000000 0.345626 17.451210 1.578645 0
- END
-STRUCTURE HO "Walther's Icing Platform 933-3245B"
- F3 8421504 0.000000 4
- 0.000000 0.000000 0
- 16.991960 0.000000 0
- 16.991960 1.607348 0
- 0.000000 1.607348 0
- L3 0 0.000000 0.000000 0.803674 0 16.991960 0.803674 0
- F3 13882323 0.000000 4
- 16.991960 1.033295 0
- 18.140070 1.033295 0
- 18.140070 0.574053 0
- 16.991960 0.574053 0
- L3 0 0.000000 17.221580 1.033295 0 17.221580 0.574053 0
- L3 0 0.000000 17.451210 1.033295 0 17.451210 0.574053 0
- L3 0 0.000000 17.680830 1.033295 0 17.680830 0.602756 0
- L3 0 0.000000 17.910450 1.033295 0 17.910450 0.574053 0
- END
-STRUCTURE HO "Walther's Ice House 933-3245A"
- F3 8421504 0.000000 4
- 0.000000 0.000000 0
- 11.940300 0.000000 0
- 11.940300 5.281286 0
- 0.000000 5.281286 0
- L3 0 0.000000 0.000000 2.640643 0 11.940300 2.640643 0
- L3 0 0.000000 2.755454 2.640643 0 2.755454 0.000000 0
- L3 0 0.000000 9.184845 2.640643 0 9.184845 0.000000 0
- L3 0 0.000000 2.296211 1.836969 0 2.296211 0.000000 0
- L3 0 0.000000 3.214696 1.836969 0 3.214696 0.000000 0
- L3 0 0.000000 8.725603 1.836969 0 8.725603 0.000000 0
- L3 0 0.000000 9.644088 1.836969 0 9.644088 0.000000 0
- L3 0 0.000000 2.755454 2.640643 0 2.296211 1.836969 0
- L3 0 0.000000 2.755454 2.640643 0 3.214696 1.836969 0
- L3 0 0.000000 9.184845 2.640643 0 8.725603 1.836969 0
- L3 0 0.000000 9.184845 2.640643 0 9.644088 1.836969 0
- L3 0 0.000000 0.918485 2.985075 0 1.549943 2.985075 0
- L3 0 0.000000 1.549943 2.985075 0 1.549943 2.296211 0
- L3 0 0.000000 1.549943 2.296211 0 0.918485 2.296211 0
- L3 0 0.000000 0.918485 2.296211 0 0.918485 2.985075 0
- L3 0 0.000000 5.625718 2.296211 0 6.314581 2.296211 0
- L3 0 0.000000 6.314581 2.296211 0 6.314581 2.985075 0
- L3 0 0.000000 6.314581 2.985075 0 5.625718 2.985075 0
- L3 0 0.000000 5.625718 2.985075 0 5.625718 2.296211 0
- L3 0 0.000000 11.021810 2.296211 0 10.332950 2.296211 0
- L3 0 0.000000 10.332950 2.296211 0 10.332950 2.985075 0
- L3 0 0.000000 10.332950 2.985075 0 11.021810 2.985075 0
- L3 0 0.000000 11.021810 2.985075 0 11.021810 2.296211 0
- END
-STRUCTURE HO "Walther's Cornerstone Structure The Bralick Building 933-3255"
- F3 12632256 0.000000 4
- 0.000000 0.688863 0
- 12.399540 0.688863 0
- 12.399540 9.931114 0
- 0.000000 9.931114 0
- F3 12632256 0.000000 4
- 4.822044 0.000000 0
- 6.773823 0.000000 0
- 6.773823 0.688863 0
- 4.822044 0.688863 0
- F3 12632256 0.000000 4
- 13.088400 1.836969 0
- 12.399540 1.836969 0
- 12.399540 2.985075 0
- 13.088400 2.985075 0
- F3 8421504 0.000000 4
- 0.229621 9.758898 0
- 12.227330 9.758898 0
- 12.227330 0.861079 0
- 0.229621 0.861079 0
- L3 0 0.000000 4.822044 0.688863 0 6.745121 0.688863 0
- L3 0 0.000000 12.399540 2.985075 0 12.399540 1.836969 0
- F3 12632256 0.000000 4
- 4.362802 3.673938 0
- 7.347876 3.673938 0
- 7.347876 7.347876 0
- 4.362802 7.347876 0
- F3 12632256 0.000000 4
- 9.471871 7.577497 0
- 10.074630 7.577497 0
- 10.074630 7.032147 0
- 9.471871 7.032147 0
- END
-STRUCTURE HO "Walther's Cornerstone Structure Yard Office 933-3822"
- F3 8421504 0.000000 4
- 0.000000 0.688863 0
- 5.281286 0.688863 0
- 5.281286 4.822044 0
- 0.000000 4.822044 0
- F3 12632256 0.000000 4
- 5.051665 0.746269 0
- 4.362802 0.746269 0
- 4.362802 0.000000 0
- 5.051665 0.000000 0
- F3 12632256 0.000000 4
- 1.836969 0.660161 0
- 2.554535 0.660161 0
- 2.554535 0.000000 0
- 1.836969 0.000000 0
- L3 0 0.000000 1.836969 0.229621 0 2.525832 0.229621 0
- L3 0 0.000000 1.836969 0.459242 0 2.525832 0.459242 0
- L3 0 0.000000 1.836969 0.688863 0 2.583238 0.688863 0
- L3 0 0.000000 4.362802 0.688863 0 5.051665 0.688863 0
- L3 0 0.000000 4.362802 0.459242 0 5.022962 0.459242 0
- L3 0 0.000000 4.362802 0.229621 0 5.051665 0.229621 0
- F3 12632256 0.000000 4
- 0.459242 4.822044 0
- 2.755454 4.822044 0
- 2.755454 5.970150 0
- 0.459242 5.970150 0
- F3 12632256 0.000000 4
- 0.688863 5.970150 0
- 1.836969 5.970150 0
- 1.836969 6.400689 0
- 0.688863 6.400689 0
- F3 12632256 0.000000 4
- 0.918485 6.429391 0
- 1.549943 6.429391 0
- 1.549943 7.347876 0
- 0.918485 7.347876 0
- L3 0 0.000000 0.688863 5.970150 0 1.865672 5.970150 0
- L3 0 0.000000 0.918485 6.429391 0 1.549943 6.429391 0
- F3 8388608 0.000000 4
- 0.000000 4.822044 0
- 0.114811 4.822044 0
- 0.114811 0.688863 0
- 0.000000 0.688863 0
- F3 8388608 0.000000 4
- 0.000000 0.688863 0
- 5.252584 0.688863 0
- 5.252584 0.832377 0
- 0.000000 0.832377 0
- F3 8388608 0.000000 4
- 5.252584 0.688863 0
- 5.109070 0.688863 0
- 5.109070 4.822044 0
- 5.252584 4.822044 0
- F3 12632256 0.000000 4
- 0.459242 1.377727 0
- 0.803674 1.377727 0
- 0.803674 1.664753 0
- 0.459242 1.664753 0
- F3 12632256 0.000000 4
- 0.459242 4.247991 0
- 0.803674 4.247991 0
- 0.803674 3.903559 0
- 0.459242 3.903559 0
- F3 16777215 0.000000 4
- 2.296211 3.214696 0
- 2.755454 3.214696 0
- 2.755454 2.755454 0
- 2.296211 2.755454 0
- F3 0 0.000000 4
- 2.353616 3.128588 0
- 2.669346 3.128588 0
- 2.669346 2.870264 0
- 2.353616 2.870264 0
- G3 0 0.000000 0.143513 4.133180 3.099885 0
- END
-STRUCTURE HO "Walther's Cornerstone Structure Shed 933-3822"
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 7.577497 0.000000 0
- 7.577497 4.822044 0
- 0.000000 4.822044 0
- L3 0 0.000000 0.000000 2.411022 0 7.520092 2.411022 0
- F3 0 0.000000 4
- 3.559128 2.525832 0
- 3.788749 2.525832 0
- 3.788749 2.296211 0
- 3.559128 2.296211 0
- L3 0 0.000000 0.229621 4.822044 0 0.229621 0.000000 0
- L3 0 0.000000 0.459242 4.822044 0 0.430540 0.000000 0
- L3 0 0.000000 0.688863 4.822044 0 0.688863 0.000000 0
- L3 0 0.000000 0.918485 4.822044 0 0.918485 0.000000 0
- L3 0 0.000000 1.148106 4.822044 0 1.119403 0.000000 0
- L3 0 0.000000 1.377727 4.822044 0 1.349024 0.000000 0
- L3 0 0.000000 1.607348 0.000000 0 1.607348 4.822044 0
- L3 0 0.000000 1.836969 0.000000 0 1.836969 4.822044 0
- L3 0 0.000000 2.066590 0.000000 0 2.066590 4.822044 0
- L3 0 0.000000 2.296211 4.822044 0 2.296211 0.000000 0
- L3 0 0.000000 2.525832 4.822044 0 2.525832 0.000000 0
- L3 0 0.000000 2.755454 4.822044 0 2.726751 0.028703 0
- L3 0 0.000000 2.985075 4.822044 0 2.985075 0.000000 0
- L3 0 0.000000 3.214696 4.822044 0 3.214696 0.000000 0
- L3 0 0.000000 3.444317 4.822044 0 3.444317 0.000000 0
- L3 0 0.000000 3.673938 4.822044 0 3.673938 0.000000 0
- L3 0 0.000000 3.903559 4.822044 0 3.874856 0.028703 0
- L3 0 0.000000 4.133180 4.822044 0 4.104478 0.000000 0
- L3 0 0.000000 4.362802 0.000000 0 4.334099 4.822044 0
- L3 0 0.000000 4.592422 0.000000 0 4.592422 4.822044 0
- L3 0 0.000000 5.510907 0.000000 0 5.510907 4.822044 0
- L3 0 0.000000 5.051665 0.000000 0 5.051665 4.822044 0
- L3 0 0.000000 4.822044 4.822044 0 4.822044 0.000000 0
- L3 0 0.000000 5.281286 4.822044 0 5.281286 0.000000 0
- L3 0 0.000000 5.740528 4.822044 0 5.740528 0.000000 0
- L3 0 0.000000 5.970150 4.822044 0 5.970150 0.000000 0
- L3 0 0.000000 6.199770 4.822044 0 6.171068 0.000000 0
- L3 0 0.000000 6.429391 4.822044 0 6.429391 0.028703 0
- L3 0 0.000000 6.659013 4.822044 0 6.659013 0.000000 0
- L3 0 0.000000 6.888634 4.822044 0 6.859931 0.057405 0
- L3 0 0.000000 7.118255 4.822044 0 7.118255 0.000000 0
- L3 0 0.000000 7.347876 4.822044 0 7.347876 0.000000 0
- END
-STRUCTURE HO "Walther's Cornerstone Structures Shed 933-3822"
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 7.577497 0.000000 0
- 7.577497 4.822044 0
- 0.000000 4.822044 0
- L3 0 0.000000 0.000000 2.411022 0 7.520092 2.411022 0
- F3 0 0.000000 4
- 3.559128 2.525832 0
- 3.788749 2.525832 0
- 3.788749 2.296211 0
- 3.559128 2.296211 0
- L3 0 0.000000 0.229621 4.822044 0 0.229621 0.000000 0
- L3 0 0.000000 0.459242 4.822044 0 0.430540 0.000000 0
- L3 0 0.000000 0.688863 4.822044 0 0.688863 0.000000 0
- L3 0 0.000000 0.918485 4.822044 0 0.918485 0.000000 0
- L3 0 0.000000 1.148106 4.822044 0 1.119403 0.000000 0
- L3 0 0.000000 1.377727 4.822044 0 1.349024 0.000000 0
- L3 0 0.000000 1.607348 0.000000 0 1.607348 4.822044 0
- L3 0 0.000000 1.836969 0.000000 0 1.836969 4.822044 0
- L3 0 0.000000 2.066590 0.000000 0 2.066590 4.822044 0
- L3 0 0.000000 2.296211 4.822044 0 2.296211 0.000000 0
- L3 0 0.000000 2.525832 4.822044 0 2.525832 0.000000 0
- L3 0 0.000000 2.755454 4.822044 0 2.726751 0.028703 0
- L3 0 0.000000 2.985075 4.822044 0 2.985075 0.000000 0
- L3 0 0.000000 3.214696 4.822044 0 3.214696 0.000000 0
- L3 0 0.000000 3.444317 4.822044 0 3.444317 0.000000 0
- L3 0 0.000000 3.673938 4.822044 0 3.673938 0.000000 0
- L3 0 0.000000 3.903559 4.822044 0 3.874856 0.028703 0
- L3 0 0.000000 4.133180 4.822044 0 4.104478 0.000000 0
- L3 0 0.000000 4.362802 0.000000 0 4.334099 4.822044 0
- L3 0 0.000000 4.592422 0.000000 0 4.592422 4.822044 0
- L3 0 0.000000 5.510907 0.000000 0 5.510907 4.822044 0
- L3 0 0.000000 5.051665 0.000000 0 5.051665 4.822044 0
- L3 0 0.000000 4.822044 4.822044 0 4.822044 0.000000 0
- L3 0 0.000000 5.281286 4.822044 0 5.281286 0.000000 0
- L3 0 0.000000 5.740528 4.822044 0 5.740528 0.000000 0
- L3 0 0.000000 5.970150 4.822044 0 5.970150 0.000000 0
- L3 0 0.000000 6.199770 4.822044 0 6.171068 0.000000 0
- L3 0 0.000000 6.429391 4.822044 0 6.429391 0.028703 0
- L3 0 0.000000 6.659013 4.822044 0 6.659013 0.000000 0
- L3 0 0.000000 6.888634 4.822044 0 6.859931 0.057405 0
- L3 0 0.000000 7.118255 4.822044 0 7.118255 0.000000 0
- L3 0 0.000000 7.347876 4.822044 0 7.347876 0.000000 0
- END
-STRUCTURE HO "Walthers Shady Jct Water Tower 933-3205a"
- L 0 0 0.000000 0.000000 2.870264 0.000000
- L 0 0 2.870264 0.000000 2.870264 2.870264
- L 0 0 2.870264 2.870264 0.000000 2.870264
- L 0 0 0.000000 2.870264 0.000000 0.000000
- L 0 0 0.000000 0.688863 2.296211 0.688863
- L 0 0 2.296211 0.688863 2.296211 2.870264
- L 0 0 1.148106 1.836969 1.148106 0.688863
- L 0 0 1.148106 1.836969 2.296211 1.836969
- L 0 0 1.148106 1.836969 0.000000 1.836969
- L 0 0 1.148106 1.836969 1.148106 2.870264
- L 0 0 1.148106 1.836969 1.951780 2.640643
- L 0 0 1.148106 1.836969 1.951780 1.033295
- L 0 0 1.148106 1.836969 0.344432 1.033295
- L 0 0 1.148106 1.836969 0.344432 2.640643
- L 0 0 1.148106 2.870264 1.951780 2.640643
- L 0 0 1.951780 2.640643 2.296211 1.836969
- L 0 0 2.296211 1.836969 1.951780 1.033295
- L 0 0 1.951780 1.033295 1.148106 0.688863
- L 0 0 1.148106 0.688863 0.344432 1.033295
- L 0 0 0.344432 1.033295 0.000000 1.836969
- L 0 0 0.000000 1.836969 0.344432 2.640643
- L 0 0 0.344432 2.640643 1.148106 2.870264
- L 0 0 2.296211 2.755454 3.214696 2.755454
- L 0 0 3.214696 2.755454 3.214696 1.951780
- L 0 0 3.214696 1.951780 2.296211 1.951780
- END
-STRUCTURE HO "Walthers Shady Jct Interlocking Tower 933-3205b"
- L 0 0 0.000000 0.000000 2.755454 0.000000
- L 0 0 2.755454 0.000000 2.755454 1.836969
- L 0 0 2.755454 1.836969 0.000000 1.836969
- L 0 0 0.000000 1.836969 0.000000 0.000000
- L 0 0 0.229621 0.114811 2.066590 0.114811
- L 0 0 2.066590 0.114811 2.066590 1.148106
- L 0 0 2.066590 1.148106 0.229621 1.148106
- L 0 0 0.229621 1.148106 0.229621 0.114811
- L 0 0 0.459242 1.148106 0.459242 0.114811
- L 0 0 0.459242 0.574053 2.066590 0.574053
- END
-STRUCTURE HO "Walthers Shady Jct Xing Shanty 933-3205c"
- L 0 0 0.000000 0.000000 1.836969 0.000000
- L 0 0 1.836969 0.000000 1.836969 1.377727
- L 0 0 1.836969 1.377727 0.000000 1.377727
- L 0 0 0.000000 1.377727 0.000000 0.000000
- L 0 0 0.000000 0.688863 1.836969 0.688863
- L 0 0 1.377727 1.377727 1.377727 1.722158
- L 0 0 1.377727 1.722158 0.459242 1.722158
- L 0 0 0.459242 1.722158 0.459242 1.377727
- L 0 0 0.229621 0.000000 0.229621 -0.114811
- L 0 0 0.229621 -0.114811 0.688863 -0.114811
- L 0 0 0.688863 -0.114811 0.688863 0.000000
- END
-STRUCTURE HO "Walthers Shady Jct Water Crane 933-3205d"
- L 0 0 0.000000 0.000000 0.918485 0.000000
- L 0 0 0.918485 0.000000 0.918485 2.066590
- L 0 0 0.918485 2.066590 0.000000 2.066590
- L 0 0 0.000000 2.066590 0.000000 0.000000
- A 0 0 0.000000 0.459242 1.722158 0.000000 360.000000
- A 0 0 0.114811 0.459242 1.722158 0.000000 360.000000
- L 0 0 0.574053 1.607348 0.574053 0.344432
- L 0 0 0.344432 1.607348 0.344432 0.344432
- L 0 0 0.344432 0.344432 0.574053 0.344432
- END
-STRUCTURE HO "Walthers Water St Freight Terminal 933-3201"
- L 0 0 0.918485 0.000000 20.206660 0.000000
- L 0 0 20.206660 0.000000 20.206660 0.918485
- L 0 0 20.206660 0.918485 18.369690 0.918485
- L 0 0 17.451210 0.000000 17.451210 6.429391
- L 0 0 17.451210 6.429391 7.347876 6.429391
- L 0 0 7.347876 6.429391 7.347876 0.000000
- L 0 0 7.347876 3.214696 17.451210 3.214696
- L 0 0 7.347876 5.970150 0.918485 5.970150
- L 0 0 7.347876 0.918485 0.918485 0.918485
- L 0 0 0.918485 3.903559 -0.114811 3.903559
- L 0 0 0.000000 3.903559 0.000000 2.985075
- L 0 0 0.000000 2.985075 0.918485 2.985075
- L 0 0 0.918485 2.985075 0.918485 0.000000
- L 0 0 0.918485 5.970150 0.918485 3.903559
- L 0 0 17.451210 3.903559 18.369690 3.903559
- L 0 0 18.369690 3.903559 18.369690 0.918485
- END
-STRUCTURE HO "Walthers Mi-Jack Crane (Intermodal) 3222"
- F3 16776960 0.000000 4
- 0.000000 0.000000 0
- 7.347876 0.000000 0
- 7.347876 0.459242 0
- 0.000000 0.459242 0
- F3 0 0.000000 4
- 0.000000 5.510907 0
- 0.000000 5.510907 0
- 0.000000 5.510907 0
- 0.000000 5.510907 0
- F3 16776960 0.000000 4
- 0.000000 5.510907 0
- 7.347876 5.510907 0
- 7.347876 5.970150 0
- 0.000000 5.970150 0
- F3 16776960 0.000000 4
- 4.592422 5.510907 0
- 5.051665 5.510907 0
- 5.051665 0.516648 0
- 4.592422 0.516648 0
- L3 0 0.000000 0.459242 5.510907 0 0.688863 5.510907 0
- L3 0 0.000000 0.688863 0.516648 0 0.459242 0.516648 0
- L3 0 0.000000 0.000000 5.970150 0 7.347876 5.970150 0
- L3 0 0.000000 7.347876 5.970150 0 7.347876 5.510907 0
- L3 0 0.000000 7.347876 5.510907 0 0.000000 5.510907 0
- L3 0 0.000000 0.000000 5.510907 0 0.000000 5.970150 0
- L3 0 0.000000 0.000000 0.459242 0 7.290471 0.459242 0
- L3 0 0.000000 7.290471 0.459242 0 7.290471 0.000000 0
- L3 0 0.000000 7.290471 0.000000 0 0.000000 0.000000 0
- L3 0 0.000000 0.000000 0.000000 0 0.000000 0.459242 0
- L3 0 0.000000 4.592422 5.510907 0 5.051665 5.510907 0
- L3 0 0.000000 5.051665 5.510907 0 5.051665 0.459242 0
- L3 0 0.000000 5.051665 0.459242 0 4.592422 0.459242 0
- L3 0 0.000000 4.592422 0.459242 0 4.592422 5.510907 0
- Z 0 0.487941 5.510907 90.000000 0 36.000000 "xxxxxxxxxxxxxxxxxxxxxx"
- L3 0 0.000000 0.746269 5.510907 0 0.746269 0.487945 0
- L3 0 0.000000 0.459242 5.510907 0 0.459242 0.459242 0
- END
-STRUCTURE HO "Walthers Golden Valley Freight House 933-3533"
- F3 16755285 0.000000 4
- 0.776042 3.401042 0
- 6.401042 3.401042 0
- 6.401042 0.776042 0
- 0.776042 0.776042 0
- F3 15720651 0.000000 4
- 0.026042 3.151042 0
- 0.776042 3.151042 0
- 0.776042 0.026042 0
- 0.026042 0.026042 0
- F3 15720651 0.000000 4
- 0.776042 0.776042 0
- 6.401042 0.776042 0
- 6.401042 0.026042 0
- 0.776042 0.026042 0
- F3 15720651 0.000000 4
- 6.401042 1.151042 0
- 8.401042 1.151042 0
- 8.401042 0.026042 0
- 6.401042 0.026042 0
- L3 0 0.052083 0.026042 0.026042 0 8.401042 0.026042 0
- L3 0 0.052083 8.401042 0.026042 0 8.401042 1.126042 0
- L3 0 0.052083 6.401042 3.401050 0 0.776042 3.401042 0
- L3 0 0.052083 0.026042 3.151042 0 0.026042 0.026042 0
- L3 0 0.052083 6.401042 3.401042 0 6.401035 0.776042 0
- L3 0 0.052083 6.401042 1.126042 0 8.401042 1.126042 0
- L3 0 0.052083 6.401042 1.151042 0 6.401042 1.151042 0
- L3 0 0.052083 0.776042 3.401042 0 0.776042 0.776042 0
- L3 0 0.052083 0.776042 0.776042 0 6.401042 0.776042 0
- L3 0 0.052083 0.026042 3.151042 0 0.776042 3.151042 0
- L3 0 0.010417 0.026042 3.026042 0 0.776042 3.026042 0
- L3 0 0.010417 0.026042 2.901042 0 0.776042 2.901042 0
- L3 0 0.010417 0.026042 2.776042 0 0.776042 2.776042 0
- L3 0 0.010417 0.026042 2.651042 0 0.776042 2.651042 0
- L3 0 0.010417 0.026042 2.526042 0 0.776042 2.526042 0
- L3 0 0.010417 0.026042 2.401042 0 0.776042 2.401042 0
- L3 0 0.010417 6.401042 0.776042 0 6.401042 0.026042 0
- L3 0 0.052083 6.401042 2.088542 0 0.776042 2.088542 0
- END
-STRUCTURE HO "Walthers Wood Water Tank 933-3531"
- F3 16755285 0.000000 8
- 1.026042 3.901042 0
- 0.026042 2.901042 0
- 0.026042 1.401042 0
- 1.026042 0.401042 0
- 2.526042 0.401042 0
- 3.526042 1.401042 0
- 3.526042 2.901042 0
- 2.526042 3.901042 0
- F3 13541990 0.000000 4
- 1.401042 0.401042 0
- 2.151042 0.401042 0
- 2.151042 0.026042 0
- 1.401042 0.026042 0
- L3 0 0.052083 1.401042 0.401042 0 1.401042 0.026042 0
- L3 0 0.052083 1.713542 0.088542 0 1.713542 0.088542 0
- L3 0 0.052083 1.401042 0.026042 0 1.401042 0.026042 0
- L3 0 0.052083 1.401042 0.026042 0 2.151042 0.026042 0
- L3 0 0.052083 2.151042 0.026042 0 2.151042 0.401042 0
- L3 0 0.052083 0.026042 2.901042 0 0.026042 1.401042 0
- L3 0 0.052083 0.026042 1.401042 0 1.026042 0.401042 0
- L3 0 0.052083 1.026042 0.401042 0 2.526042 0.401042 0
- L3 0 0.052083 2.526042 0.401042 0 3.526042 1.401042 0
- L3 0 0.052083 3.526042 1.401042 0 3.526042 2.901042 0
- L3 0 0.052083 3.526042 2.901042 0 2.526042 3.901042 0
- L3 0 0.052083 2.526042 3.901042 0 1.026042 3.901042 0
- L3 0 0.052083 1.026042 3.901042 0 0.026042 2.901042 0
- L3 0 0.052083 1.026042 3.901042 0 1.776042 2.151042 0
- L3 0 0.052083 1.776042 2.151042 0 1.026042 0.401042 0
- L3 0 0.052083 1.776042 2.151042 0 2.526042 0.401042 0
- L3 0 0.052083 1.776042 2.151042 0 3.526042 1.401042 0
- L3 0 0.052083 1.776042 2.151042 0 3.526042 2.901042 0
- L3 0 0.052083 1.776042 2.151042 0 2.526042 3.901042 0
- L3 0 0.052083 1.776042 2.151042 0 0.026042 2.901042 0
- L3 0 0.052083 1.776042 2.151042 0 0.026042 1.401042 0
- END
-STRUCTURE HO "Walthers Santa Fe Freight House circa 1908 933-3804"
- F3 16379605 0.000000 4
- 0.000000 6.888634 0
- 12.399540 6.888634 0
- 12.399540 0.000000 0
- 0.000000 0.000000 0
- L3 0 0.000000 0.000000 0.000000 0 12.399540 0.000000 0
- L3 0 0.000000 12.399540 0.000000 0 12.399540 6.888634 0
- L3 0 0.000000 12.399540 6.888634 0 0.000000 6.888634 0
- L3 0 0.000000 0.000000 6.888634 0 0.000000 0.000000 0
- L3 0 0.000000 0.688863 0.688863 0 11.710680 0.688863 0
- L3 0 0.000000 11.710680 0.688863 0 11.710680 6.199770 0
- L3 0 0.000000 11.710680 6.199770 0 0.688863 6.199770 0
- L3 0 0.000000 0.688863 6.199770 0 0.688863 0.688863 0
- L3 0 0.000000 0.688863 1.377727 0 0.918485 1.377727 0
- L3 0 0.000000 0.889782 0.918485 0 1.148106 0.918485 0
- L3 0 0.000000 1.119403 0.918485 0 1.119403 0.688863 0
- L3 0 0.000000 1.148106 5.998852 0 0.889782 5.998852 0
- L3 0 0.000000 0.889782 5.998852 0 0.889782 5.797934 0
- L3 0 0.000000 0.889782 5.797934 0 0.717566 5.797934 0
- L3 0 0.000000 11.021810 6.171068 0 11.021810 5.970150 0
- L3 0 0.000000 11.021810 5.970150 0 11.481060 5.970150 0
- L3 0 0.000000 11.710680 5.740528 0 11.481060 5.740528 0
- L3 0 0.000000 11.481060 5.740528 0 11.481060 5.970150 0
- L3 0 0.000000 11.021810 0.688863 0 11.021810 0.918485 0
- L3 0 0.000000 11.021810 0.918485 0 11.481060 0.918485 0
- L3 0 0.000000 11.481060 0.918485 0 11.481060 1.377727 0
- L3 0 0.000000 11.710680 4.592422 0 11.452350 4.592422 0
- L3 0 0.000000 11.452350 4.592422 0 11.452350 2.755454 0
- L3 0 0.000000 11.452350 2.755454 0 11.710680 2.755454 0
- L3 0 0.000000 11.710680 2.755454 0 11.710680 4.592422 0
- L3 0 0.000000 4.133180 6.199770 0 7.807118 6.199770 0
- L3 0 0.000000 7.807118 6.199770 0 7.807118 5.970150 0
- L3 0 0.000000 7.807118 5.970150 0 4.133180 5.970150 0
- L3 0 0.000000 4.133180 5.970150 0 4.133180 6.199770 0
- L3 0 0.000000 4.133180 0.688863 0 7.807118 0.688863 0
- L3 0 0.000000 7.807118 0.688863 0 7.807118 0.918485 0
- L3 0 0.000000 7.807118 0.918485 0 4.133180 0.918485 0
- L3 0 0.000000 4.133180 0.918485 0 4.133180 0.688863 0
- END
-
-
-
-SUBCONTENTS Walthers Cornerstone HO Structures - Passenger Facilities
-STRUCTURE HO "Walther's Cornerstone Structures Butterfly-Style Station Platform Shelter 933-3258"
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 11.251440 0.000000 0
- 11.251440 2.296211 0
- 0.000000 2.296211 0
- END
-STRUCTURE HO "Walthers Amtrak Station 933-3038"
- L 16711935 0 0.000000 0.000000 0.000000 8.500000
- L 16711935 0 0.000000 8.500000 11.812500 8.500000
- L 16711935 0 11.812500 8.500000 11.812500 0.000000
- L 16711935 0 11.812500 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Santa Fe Depot circa 1908 933-3803"
- F3 16379605 0.000000 4
- 0.000000 7.118255 0
- 12.399540 7.118255 0
- 12.399540 0.000000 0
- 0.000000 0.000000 0
- L3 0 0.000000 0.000000 0.000000 0 12.399540 0.000000 0
- L3 0 0.000000 12.399540 0.000000 0 12.399540 7.118255 0
- L3 0 0.000000 12.399540 7.118255 0 0.000000 7.118255 0
- L3 0 0.000000 0.688863 0.688863 0 11.710680 0.688863 0
- L3 0 0.000000 11.710680 0.688863 0 11.710680 6.429391 0
- L3 0 0.000000 11.710680 6.429391 0 0.688863 6.429391 0
- L3 0 0.000000 0.688863 6.429391 0 0.688863 0.688863 0
- L3 0 0.000000 0.660161 3.559128 0 11.681970 3.559128 0
- L3 0 0.000000 11.681970 4.822044 0 11.452350 4.822044 0
- L3 0 0.000000 11.452350 4.822044 0 11.452350 2.525832 0
- L3 0 0.000000 11.452350 2.525832 0 11.681970 2.525832 0
- L3 0 0.000000 11.681970 2.525832 0 11.681970 4.822044 0
- L3 0 0.000000 0.918485 4.822044 0 0.918485 2.296211 0
- L3 0 0.000000 0.918485 2.296211 0 0.688863 2.296211 0
- L3 0 0.000000 0.688863 2.296211 0 0.688863 5.051665 0
- L3 0 0.000000 0.688863 4.822044 0 0.889782 4.822044 0
- L3 0 0.000000 3.903559 0.688863 0 7.577497 0.688863 0
- L3 0 0.000000 7.577497 0.688863 0 7.577497 0.918485 0
- L3 0 0.000000 7.577497 0.918485 0 3.903559 0.918485 0
- L3 0 0.000000 3.903559 0.918485 0 3.903559 0.688863 0
- L3 0 0.000000 3.903559 6.429391 0 7.577497 6.429391 0
- L3 0 0.000000 7.577497 6.429391 0 7.577497 6.199770 0
- L3 0 0.000000 7.577497 6.199770 0 3.903559 6.199770 0
- L3 0 0.000000 3.903559 6.199770 0 3.903559 6.429391 0
- L3 0 0.000000 10.103330 4.391504 0 10.619980 4.391504 0
- L3 0 0.000000 10.619980 4.391504 0 10.619980 3.960964 0
- L3 0 0.000000 10.619980 3.960964 0 10.103330 3.960964 0
- L3 0 0.000000 10.103330 3.960964 0 10.103330 4.391504 0
- L3 0 0.000000 1.693456 4.391504 0 2.210103 4.391504 0
- L3 0 0.000000 2.210103 4.391504 0 2.210103 3.932262 0
- L3 0 0.000000 2.210103 3.932262 0 1.693456 3.932262 0
- L3 0 0.000000 1.693456 3.932262 0 1.693456 4.391504 0
- L3 0 0.000000 0.028703 7.089552 0 0.028703 0.028703 0
- END
-STRUCTURE HO "Walthers Union Station (Cornerstone Series) 3257"
- F3 14211288 0.000000 4
- 0.000000 11.021810 0
- 29.391500 11.021810 0
- 29.391500 0.000000 0
- 0.000000 0.000000 0
- L3 0 0.000000 0.000000 0.005684 0 29.391500 0.005684 0
- L3 0 0.000000 29.391500 0.005684 0 29.391500 11.027500 0
- L3 0 0.000000 29.391500 11.027500 0 0.000000 11.027500 0
- L3 0 0.000000 0.000000 11.027500 0 0.000000 0.005684 0
- L3 0 0.000000 0.000000 0.924168 0 8.266360 0.924168 0
- L3 0 0.000000 8.266360 0.924168 0 8.266360 10.223820 0
- L3 0 0.000000 8.266360 10.223820 0 0.000000 10.223820 0
- L3 0 0.000000 0.000000 10.223820 0 0.000000 0.924168 0
- L3 0 0.000000 29.391500 0.005684 0 21.010330 0.005684 0
- L3 0 0.000000 29.391500 9.821987 0 29.391500 0.005684 0
- L3 0 0.000000 29.391500 0.924168 0 21.125140 0.924168 0
- L3 0 0.000000 21.125140 0.924168 0 21.125140 10.223820 0
- L3 0 0.000000 21.125140 10.223820 0 29.391500 10.223820 0
- L3 0 0.000000 29.391500 10.223820 0 29.391500 0.924168 0
- L3 0 0.000000 8.208956 10.223820 0 8.208956 11.027500 0
- L3 0 0.000000 21.125140 10.223820 0 21.125140 11.027500 0
- L3 0 0.000000 21.125140 0.924168 0 21.125140 0.005684 0
- L3 0 0.000000 8.266360 0.924168 0 8.266360 0.005684 0
- A3 0 0.000000 0.292710 14.695750 0.292710 0 0.000000 360.000000
- A3 0 0.000000 0.287026 19.288180 0.350115 0 0.000000 360.000000
- A3 0 0.000000 0.287026 16.991960 0.292710 0 0.000000 360.000000
- A3 0 0.000000 0.292710 10.103330 0.292710 0 0.000000 360.000000
- A3 0 0.000000 0.292710 12.399540 0.292710 0 0.000000 360.000000
- L3 0 0.000000 0.229621 9.879393 0 7.979334 9.879393 0
- L3 0 0.000000 7.979334 9.879393 0 7.979334 1.211195 0
- L3 0 0.000000 7.979334 1.211195 0 0.229621 1.211195 0
- L3 0 0.000000 0.229621 1.211195 0 0.229621 9.879393 0
- L3 0 0.000000 21.469580 9.879393 0 29.104480 9.879393 0
- L3 0 0.000000 29.104480 9.879393 0 29.104480 1.268600 0
- L3 0 0.000000 29.104480 1.268600 0 21.469580 1.268600 0
- L3 0 0.000000 21.469580 1.268600 0 21.469580 9.879393 0
- L3 0 0.000000 8.495982 10.683070 0 20.895520 10.683070 0
- L3 0 0.000000 20.895520 10.683070 0 20.895520 0.924168 0
- L3 0 0.000000 20.895520 0.924168 0 8.495982 0.924168 0
- L3 0 0.000000 8.495982 0.924168 0 8.495982 10.683070 0
- L3 0 0.000000 13.777270 0.924168 0 15.614240 0.924168 0
- L3 0 0.000000 15.614240 0.924168 0 15.614240 1.268600 0
- L3 0 0.000000 15.614240 1.268600 0 13.777270 1.268600 0
- L3 0 0.000000 13.777270 1.268600 0 13.777270 0.924168 0
- END
-
-
-SUBCONTENTS Walthers Cornerstone HO Structures - Gas Works
-STRUCTURE HO "Walthers Central Gas & Supply, Office 933-3011a"
- L 16711935 0 0.000000 0.000000 0.000000 3.000000
- L 16711935 0 0.000000 3.000000 4.375000 3.000000
- L 16711935 0 4.375000 3.000000 4.375000 0.000000
- L 16711935 0 4.375000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Central Gas & Supply, Tank 933-3011b"
- L 16711935 0 0.000000 0.000000 0.000000 1.500000
- L 16711935 0 0.000000 1.500000 9.000000 1.500000
- L 16711935 0 9.000000 1.500000 9.000000 0.000000
- L 16711935 0 9.000000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Central Gas & Supply, Shed 933-3011c"
- L 16711935 0 0.000000 0.000000 0.000000 1.000000
- L 16711935 0 0.000000 1.000000 0.825000 1.000000
- L 16711935 0 0.825000 1.000000 0.825000 0.000000
- L 16711935 0 0.825000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Central Gas & Supply, Pump House 933-3011d"
- L 16711935 0 0.000000 0.000000 0.000000 1.375000
- L 16711935 0 0.000000 1.375000 1.375000 1.375000
- L 16711935 0 1.375000 1.375000 1.375000 0.000000
- L 16711935 0 1.375000 0.000000 0.000000 0.000000
- END
-
-
-SUBCONTENTS Walthers Cornerstone HO Structures - Power Industries
-STRUCTURE HO "Walthers Northern Light & Power, Substation 933-3025"
- L 0 0.000000 0.000000 0.000000 12.500000 0.000000
- L 0 0.000000 12.500000 0.000000 12.500000 8.500000
- L 0 0.000000 12.500000 8.500000 0.000000 8.500000
- L 0 0.000000 0.000000 8.500000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Northern Light & Power, Powerhouse 933-3021"
- L 0 0.000000 0.000000 0.000000 10.250000 0.000000
- L 0 0.000000 10.250000 0.000000 10.250000 6.500000
- L 0 0.000000 10.250000 6.500000 0.000000 6.500000
- L 0 0.000000 0.000000 6.500000 0.000000 0.000000
- A 0 0.000000 0.625000 12.125000 4.875000 0.000000 360.000000
- END
-STRUCTURE HO "Walthers Nothern Light Powerhouse 933-3214"
- L 0 0 0.000000 0.000000 7.577497 0.000000
- L 0 0 7.577497 0.000000 7.577497 4.822044
- L 0 0 7.577497 4.822044 0.000000 4.822044
- L 0 0 0.000000 4.822044 0.000000 0.000000
- A 0 0 0.229621 0.918485 0.918485 0.000000 360.000000
- A 0 0 0.229621 6.659013 0.918485 0.000000 360.000000
- A 0 0 0.229621 2.755454 0.918485 0.000000 360.000000
- A 0 0 0.256724 4.822044 0.918485 0.000000 360.000000
- A 0 0 0.980941 8.955224 4.018370 0.000000 360.000000
- A 0 0 0.000000 9.070035 3.788749 0.000000 360.000000
- A 0 0 0.669454 8.955224 4.018370 0.000000 360.000000
- END
-
-
-SUBCONTENTS Walthers Cornerstone HO Structures - Aggregate Industries
-STRUCTURE HO "Walthers Glacier Gravel 933-3062"
- F3 14737632 0.000000 4
- 16.250000 3.687500 0
- 16.250000 3.187500 0
- 3.000000 1.187500 0
- 3.000000 1.687500 0
- F3 15720651 0.000000 7
- 16.875000 4.000000 0
- 16.875000 4.000000 0
- 16.875000 4.250000 0
- 18.312500 4.250000 0
- 18.312500 2.625000 0
- 16.250000 2.625000 0
- 16.250000 4.000000 0
- F3 14737632 0.000000 4
- 16.250000 4.000000 0
- 18.000000 4.000000 0
- 18.000000 2.875000 0
- 16.250000 2.875000 0
- L3 0 0.041667 13.000000 5.875000 0 13.000000 5.375000 0
- L3 0 0.041667 4.500000 5.375000 0 4.500000 5.875000 0
- F3 14737632 0.000000 4
- 4.500000 5.875000 0
- 13.000000 5.875000 0
- 13.000000 5.375000 0
- 4.500000 5.375000 0
- F3 14531987 0.000000 4
- 13.000000 7.250000 0
- 14.250000 7.250000 0
- 14.250000 4.000000 0
- 13.000000 4.000000 0
- F3 16755285 0.000000 4
- 8.500000 -1.250000 0
- 11.000000 -1.250000 0
- 11.000000 -2.750000 0
- 8.500000 -2.750000 0
- F3 14737632 0.000000 6
- 0.000000 6.625000 0
- 5.000000 6.625000 0
- 5.000000 1.000000 0
- 8.500000 1.000000 0
- 8.500000 -2.750000 0
- 0.000000 -2.750000 0
- L3 0 0.041667 0.000000 -2.750000 0 11.000000 -2.750000 0
- L3 0 0.041667 0.000000 -2.750000 0 0.000000 6.625000 0
- L3 0 0.041667 0.000000 1.937500 0 3.000000 1.937500 0
- L3 0 0.041667 3.000000 1.937500 0 3.000000 -2.750000 0
- L3 0 0.041667 1.500000 1.937500 0 1.500000 -2.750000 0
- L3 0 0.041667 2.500000 1.937500 0 2.500000 6.625000 0
- L3 0 0.041667 0.000000 6.625000 0 5.000000 6.625000 0
- L3 0 0.041667 0.875000 5.312500 0 0.875000 5.312500 0
- L3 0 0.041667 11.000000 -1.250000 0 8.500000 -1.250000 0
- L3 0 0.041667 11.000000 -1.250000 0 11.000000 -2.750000 0
- L3 0 0.041667 8.500000 -2.750000 0 8.500000 1.000000 0
- L3 0 0.041667 8.500000 1.000000 0 3.000000 1.000000 0
- L3 0 0.041667 8.500000 -0.875000 0 3.000000 -0.875000 0
- L3 0 0.041667 4.000000 -0.875000 0 4.000000 0.625000 0
- L3 0 0.041667 4.000000 0.625000 0 7.000000 0.625000 0
- L3 0 0.041667 7.000000 0.625000 0 7.000000 -0.875000 0
- L3 0 0.041667 4.000000 -0.125000 0 7.000000 -0.125000 0
- L3 0 0.041667 3.000000 6.250000 0 4.500000 6.250000 0
- L3 0 0.041667 4.500000 6.250000 0 4.500000 5.000000 0
- L3 0 0.041667 4.500000 5.000000 0 3.000000 5.000000 0
- L3 0 0.041667 3.000000 5.000000 0 3.000000 6.250000 0
- L3 0 0.041667 5.375000 5.187500 0 5.375000 5.187500 0
- L3 0 0.041667 5.375000 5.187500 0 5.375000 5.187500 0
- L3 0 0.041667 5.375000 5.187500 0 5.375000 5.187500 0
- L3 0 0.041667 5.375000 5.187500 0 5.375000 5.187500 0
- L3 0 0.041667 4.500000 5.875000 0 13.000000 5.875000 0
- L3 0 0.041667 13.000000 5.375000 0 4.500000 5.375000 0
- L3 0 0.041667 13.000000 7.250000 0 14.250000 7.250000 0
- L3 0 0.041667 14.250000 7.250000 0 14.250000 4.000000 0
- L3 0 0.041667 14.250000 4.000000 0 13.000000 4.000000 0
- L3 0 0.041667 13.000000 4.000000 0 13.000000 7.250000 0
- L3 0 0.041667 5.000000 6.625000 0 5.000000 5.875000 0
- L3 0 0.041667 16.250000 2.625000 0 18.312500 2.625000 0
- L3 0 0.041667 18.312500 2.625000 0 18.312500 4.250000 0
- L3 0 0.041667 16.250000 2.875000 0 18.000000 2.875000 0
- L3 0 0.041667 18.000000 2.875000 0 18.000000 4.000000 0
- L3 0 0.041667 18.000000 4.000000 0 16.250000 4.000000 0
- L3 0 0.041667 16.250000 4.000000 0 16.250000 2.875000 0
- L3 0 0.041667 18.312500 4.250000 0 16.875000 4.250000 0
- L3 0 0.041667 16.875000 4.250000 0 16.875000 4.000000 0
- L3 0 0.041667 16.250000 2.875000 0 16.250000 2.625000 0
- L3 0 0.041667 12.250000 1.125000 0 12.250000 1.125000 0
- L3 0 0.041667 16.250000 3.187500 0 3.000000 1.187500 0
- L3 0 0.041667 16.250000 3.687500 0 3.000000 1.687500 0
- L3 0 0.041667 5.000000 1.000000 0 5.000000 1.437500 0
- L3 0 0.041667 5.000000 5.375000 0 5.000000 2.000000 0
- END
-STRUCTURE HO "Walthers Medusa Cement Co 933-3019"
- F3 14737632 0.000000 4
- -1.312500 -1.750000 0
- -0.812500 -1.750000 0
- -0.812500 -3.125000 0
- -1.312500 -3.125000 0
- F3 14737632 0.000000 4
- -1.312500 -3.875000 0
- -0.812500 -3.875000 0
- -0.812500 -5.250000 0
- -1.312500 -5.250000 0
- F3 14737632 0.000000 4
- 7.687500 -3.875000 0
- 7.125000 -3.875000 0
- 7.125000 -5.250000 0
- 7.687500 -5.250000 0
- F3 14737632 0.000000 4
- 7.687500 -1.750000 0
- 7.187500 -1.750000 0
- 7.187500 -3.125000 0
- 7.687500 -3.125000 0
- F3 14737632 0.000000 4
- 0.000000 1.375000 0
- 6.375000 1.375000 0
- 6.375000 -1.687500 0
- 0.000000 -1.687500 0
- F3 13092749 0.000000 4
- 2.937500 -1.125000 0
- 3.437500 -1.125000 0
- 3.437500 -1.625000 0
- 2.937500 -1.625000 0
- G3 15720651 0.000000 1.069828 0.000000 -4.562500 0
- G3 15720651 0.000000 1.062500 2.125000 -4.562500 0
- G3 15720651 0.000000 1.062500 4.250000 -4.562500 0
- G3 15720651 0.000000 1.064337 6.375000 -4.562500 0
- G3 15720651 0.000000 1.062500 6.375000 -2.437500 0
- G3 15720651 0.000000 1.062500 4.250000 -2.437500 0
- G3 15720651 0.000000 1.062500 2.125000 -2.437500 0
- G3 15720651 0.000000 1.062500 0.000000 -2.437500 0
- A3 0 0.041667 1.062500 0.000000 -4.562000 0 0.000000 360.000000
- A3 0 0.041667 1.062500 2.125000 -4.562000 0 0.000000 360.000000
- A3 0 0.041667 1.062500 4.250000 -4.562000 0 0.000000 360.000000
- A3 0 0.041667 1.062500 6.375000 -4.562000 0 0.000000 360.000000
- A3 0 0.041667 1.062500 0.000500 -2.437500 0 0.000000 360.000000
- A3 0 0.041667 1.062500 2.125500 -2.437500 0 0.000000 360.000000
- A3 0 0.041667 1.062500 4.250500 -2.437500 0 0.000000 360.000000
- A3 0 0.041667 1.062500 6.375500 -2.437500 0 0.000000 360.000000
- L3 0 0.041667 6.375500 -1.375000 0 6.375500 1.375000 0
- L3 0 0.041667 6.375500 1.375000 0 0.000500 1.375000 0
- L3 0 0.041667 0.000500 1.375000 0 0.000500 -1.375000 0
- L3 0 0.041667 -1.312500 -5.250000 0 -0.812500 -5.250000 0
- L3 0 0.041667 -1.312500 -3.875000 0 -0.812500 -3.875000 0
- L3 0 0.041667 -1.312500 -3.875000 0 -1.312500 -5.250000 0
- L3 0 0.041667 -1.312500 -3.125000 0 -0.812500 -3.125000 0
- L3 0 0.041667 -1.312500 -1.750000 0 -0.812500 -1.750000 0
- L3 0 0.041667 -1.312500 -1.750000 0 -1.312504 -3.125000 0
- L3 0 0.041667 7.687515 -5.249994 0 7.187515 -5.249992 0
- L3 0 0.041667 7.687530 -3.874994 0 7.187530 -3.874992 0
- L3 0 0.041667 7.687516 -3.874994 0 7.687508 -5.249994 0
- L3 0 0.041667 7.687513 -3.124994 0 7.187513 -3.124992 0
- L3 0 0.041667 7.687528 -1.749994 0 7.187528 -1.749992 0
- L3 0 0.041667 7.687514 -1.749994 0 7.687513 -3.124994 0
- L3 0 0.041667 -1.062500 -3.125000 0 -1.062500 -1.750000 0
- L3 0 0.041667 -1.062500 -3.875000 0 -1.062500 -5.250000 0
- L3 0 0.041667 7.437500 -3.875000 0 7.437500 -5.250000 0
- L3 0 0.041667 7.437500 -3.125000 0 7.437500 -1.750000 0
- L3 0 0.041667 2.937500 -1.625000 0 3.437500 -1.625000 0
- L3 0 0.041667 3.437500 -1.625000 0 3.437500 -1.125000 0
- L3 0 0.041667 3.437500 -1.125000 0 2.937500 -1.125000 0
- L3 0 0.041667 2.937500 -1.125000 0 2.937500 -1.625000 0
- G3 15720651 0.000000 0.000000 6.312500 -2.437500 0
- F3 12632256 0.000000 4
- -0.625000 -1.687500 0
- 7.000000 -1.687500 0
- 7.000000 -5.312500 0
- -0.625000 -5.312500 0
- L3 0 0.041667 -0.625000 -1.687500 0 7.000000 -1.687500 0
- L3 0 0.041667 7.000000 -1.687500 0 7.000000 -5.312500 0
- L3 0 0.041667 7.000000 -5.312500 0 -0.625000 -5.312500 0
- L3 0 0.041667 -0.625000 -5.312500 0 -0.625000 -1.687500 0
- F3 13092749 0.000000 4
- -0.500000 -5.187500 0
- 0.625000 -5.187500 0
- 0.625000 -4.062500 0
- -0.500000 -4.062500 0
- L3 0 0.041667 -0.500000 -5.187500 0 0.625000 -5.187500 0
- L3 0 0.041667 0.625000 -5.187500 0 0.625000 -4.062500 0
- L3 0 0.041667 0.625000 -4.062500 0 -0.500000 -4.062500 0
- L3 0 0.041667 -0.500000 -4.062500 0 -0.500000 -5.187500 0
- L3 0 0.041667 -0.500000 -4.062500 0 0.625000 -5.187500 0
- L3 0 0.041667 0.625000 -4.062500 0 -0.500000 -5.187500 0
- F3 13092749 0.000000 4
- 2.937500 -1.125000 0
- 2.750000 -1.125000 0
- 2.750000 -2.625000 0
- 2.937500 -2.625000 0
- L3 0 0.041667 2.937500 -1.125000 0 2.750000 -1.125000 0
- L3 0 0.041667 2.750000 -1.125000 0 2.750000 -2.625000 0
- L3 0 0.041667 2.750000 -2.625000 0 2.937500 -2.625000 0
- L3 0 0.041667 2.937500 -2.625000 0 2.937500 -1.125000 0
- L3 0 0.020833 0.687500 1.375000 0 0.687500 -1.625000 0
- L3 0 0.020833 1.687500 1.375000 0 1.687500 -1.437500 0
- L3 0 0.020833 2.687500 1.375000 0 2.687500 -1.500000 0
- L3 0 0.020833 3.687500 1.375000 0 3.687500 -1.500000 0
- L3 0 0.020833 4.687500 1.375000 0 4.687500 -1.437500 0
- L3 0 0.020833 5.687500 1.375000 0 5.687500 -1.625000 0
- L3 0 0.020833 1.187500 1.375000 0 1.187500 -0.875000 0
- L3 0 0.020833 2.187500 1.375000 0 2.187500 -0.875000 0
- L3 0 0.020833 3.187500 1.375000 0 3.187500 -0.875000 0
- L3 0 0.020833 4.187500 1.375000 0 4.187500 -0.875000 0
- L3 0 0.020833 5.187500 1.375000 0 5.187500 -0.875000 0
- L3 0 0.020833 6.062500 1.375000 0 6.062500 -0.875000 0
- L3 0 0.020833 0.312500 1.375000 0 0.312500 -0.875000 0
- F3 13092749 0.000000 4
- 1.687500 -2.125000 0
- 4.687500 -2.125000 0
- 4.687500 -2.875000 0
- 1.687500 -2.875000 0
- F3 13092749 0.000000 4
- 1.687500 -3.000000 0
- 1.687500 -3.000000 0
- 1.687500 -3.125000 0
- 1.687500 -3.125000 0
- F3 13092749 0.000000 4
- 1.687500 -3.125000 0
- 1.687500 -3.125000 0
- 1.687500 -3.125000 0
- 1.687500 -3.125000 0
- F3 13092749 0.000000 4
- 1.687500 -3.125000 0
- 4.687500 -3.125000 0
- 4.687500 -3.875000 0
- 1.687500 -3.875000 0
- F3 13092749 0.000000 4
- 1.687500 -3.875000 0
- 4.687500 -3.875000 0
- 4.687500 -5.187500 0
- 1.687500 -5.187500 0
- L3 0 0.041667 1.687500 -2.125000 0 4.687500 -2.125000 0
- L3 0 0.041667 4.687500 -2.125000 0 4.687500 -2.875000 0
- L3 0 0.041667 4.687500 -2.875000 0 1.687500 -2.875000 0
- L3 0 0.041667 1.687500 -2.875000 0 1.687500 -2.125000 0
- L3 0 0.041667 1.687500 -3.125000 0 4.687500 -3.125000 0
- L3 0 0.041667 4.687500 -3.125000 0 4.687500 -3.875000 0
- L3 0 0.041667 4.687500 -3.875000 0 1.687500 -3.875000 0
- L3 0 0.041667 1.687500 -3.875000 0 1.687500 -3.125000 0
- L3 0 0.041667 1.687500 -3.875000 0 4.687500 -3.875000 0
- L3 0 0.041667 4.687500 -3.875000 0 4.687500 -5.187500 0
- L3 0 0.041667 4.687500 -5.187500 0 1.687500 -5.187500 0
- L3 0 0.041667 1.687500 -5.187500 0 1.687500 -3.875000 0
- L3 0 0.041667 1.687500 -2.125000 0 4.687500 -2.875000 0
- L3 0 0.041667 4.687500 -2.125000 0 1.687500 -2.875000 0
- L3 0 0.041667 1.687500 -3.125000 0 4.687500 -3.875000 0
- L3 0 0.041667 4.687500 -3.125000 0 1.687500 -3.875000 0
- L3 0 0.041667 1.750000 -3.875000 0 1.750000 -3.875000 0
- END
-STRUCTURE HO "Walthers Cornerstone Valley Cement Plant 933-3098"
-#Created by Howard Hayes
- G3 8029321 0.000000 1.050000 1.514583 4.014583 0
- G3 8029321 0.000000 1.050000 5.714583 4.014583 0
- G3 8029321 0.000000 1.050000 3.614583 4.014583 0
- G3 8029321 0.000000 1.050000 7.814583 4.014583 0
- L3 0 0.125000 8.062500 2.062500 0 1.062500 2.062500 0
- L3 0 0.000000 8.062500 1.062500 0 1.062500 1.062500 0
- F3 12632256 0.000000 4
- 1.114583 0.114583 0
- 8.114583 0.114583 0
- 8.114583 3.114583 0
- 1.114583 3.114583 0
- F3 12632256 0.000000 4
- 0.114583 23.114583 0
- 8.114583 23.114583 0
- 8.114583 18.114583 0
- 0.114583 18.114583 0
- F3 12632256 0.000000 4
- 1.114583 18.114583 0
- 2.114583 18.114583 0
- 2.114583 7.114583 0
- 1.114583 7.114583 0
- F3 0 0.000000 4
- 28.114583 21.114583 0
- 39.114583 21.114583 0
- 39.114583 14.114583 0
- 28.114583 14.114583 0
- F3 12632256 0.000000 4
- 20.114583 17.114583 0
- 26.114583 17.114583 0
- 26.114583 22.114583 0
- 20.114583 22.114583 0
- L3 8029321 0.125000 20.062500 22.062500 0 26.062500 22.062500 0
- F3 8388608 0.000000 4
- 9.114583 23.114583 0
- 12.114583 23.114583 0
- 12.114583 20.114583 0
- 9.114583 20.114583 0
- L3 255 0.000000 0.114583 0.114583 0 0.114583 0.114583 0
- L3 255 0.000000 0.114583 0.114583 0 0.114583 0.114583 0
- L3 255 0.000000 0.114583 0.114583 0 0.114583 0.114583 0
- L3 255 0.000000 0.114583 0.114583 0 0.114583 0.114583 0
- F3 0 0.000000 4
- 0.114583 7.114583 0
- 0.114583 7.114583 0
- 0.114583 6.114583 0
- 0.114583 6.114583 0
- G3 8029321 0.000000 1.050000 3.614583 6.114583 0
- G3 8029321 0.000000 1.050000 1.514583 6.114583 0
- G3 8029321 0.000000 1.050000 5.714583 6.114583 0
- G3 8029321 0.000000 1.050000 7.824583 6.114583 0
- F3 0 0.000000 4
- 0.114583 3.114583 0
- 0.114583 3.114583 0
- 0.114583 3.114583 0
- 0.114583 3.114583 0
- F3 0 0.000000 4
- 0.114583 7.114583 0
- 0.114583 7.114583 0
- 0.114583 8.114583 0
- 0.114583 8.114583 0
- F3 0 0.000000 4
- 8.114583 18.114583 0
- 20.114583 18.114583 0
- 20.114583 20.114583 0
- 8.114583 20.114583 0
- F3 12632256 0.000000 4
- 27.114583 15.114583 0
- 40.114583 15.114583 0
- 40.114583 16.114583 0
- 27.114583 16.114583 0
- F3 12632256 0.000000 4
- 27.114583 17.114583 0
- 40.114583 17.114583 0
- 40.114583 18.114583 0
- 27.114583 18.114583 0
- F3 12632256 0.000000 4
- 27.114583 20.114583 0
- 40.114583 20.114583 0
- 40.114583 19.114583 0
- 27.114583 19.114583 0
- F3 0 0.000000 4
- 27.114583 20.114583 0
- 26.114583 20.114583 0
- 26.114583 19.114583 0
- 27.114583 19.114583 0
- G3 16777215 0.000000 1.000000 10.614583 21.614583 0
- F3 8029321 0.000000 4
- 1.062500 6.062500 0
- 8.062500 6.062500 0
- 8.062500 4.062500 0
- 1.062500 4.062500 0
- L3 0 0.000000 9.062500 3.062500 0 9.062500 3.062500 0
- L3 0 0.000000 9.062500 3.062500 0 9.062500 3.062500 0
- L3 0 0.000000 9.062500 3.062500 0 9.062500 3.062500 0
- L3 0 0.000000 9.062500 3.062500 0 9.062500 3.062500 0
- L3 0 0.125000 1.062500 3.062500 0 8.062500 3.062500 0
- L3 0 0.125000 8.062500 3.062500 0 8.062500 2.062500 0
- L3 0 0.125000 1.062500 2.062500 0 1.062500 3.062500 0
- L3 0 0.125000 1.062500 1.062500 0 1.062500 2.062500 0
- L3 0 0.125000 1.062500 1.062500 0 8.062500 1.062500 0
- L3 0 0.125000 8.062500 1.062500 0 8.062500 0.062500 0
- L3 0 0.125000 8.062500 0.062500 0 1.062500 0.062500 0
- L3 0 0.125000 1.062500 0.062500 0 1.062500 1.062500 0
- L3 8029321 0.125000 1.062500 6.062500 0 1.062500 18.062500 0
- L3 8029321 0.125000 1.062500 18.062500 0 20.062500 18.062500 0
- L3 8029321 0.125000 1.062500 18.062500 0 0.062500 18.062500 0
- L3 8029321 0.125000 0.062500 18.062500 0 0.062500 23.062500 0
- L3 8029321 0.125000 0.062500 23.062500 0 8.062500 23.062500 0
- L3 8029321 0.125000 8.062500 23.062500 0 8.062500 18.062500 0
- L3 8029321 0.125000 8.062500 20.062500 0 20.062500 20.062500 0
- L3 8029321 0.125000 20.062500 18.062500 0 20.062500 22.062500 0
- L3 8029321 0.125000 26.062500 22.062500 0 26.062500 19.062500 0
- L3 8029321 0.125000 26.062500 19.062500 0 26.062500 17.062500 0
- L3 8029321 0.125000 20.062500 17.062500 0 26.062500 17.062500 0
- L3 8029321 0.125000 20.062500 18.062500 0 20.062500 17.062500 0
- L3 0 0.000000 20.062500 20.062500 0 19.062500 18.062500 0
- L3 8029321 0.125000 2.062500 6.062500 0 2.062500 18.062500 0
- Z 0 11.375000 16.625000 0.000000 0 64.000000 "Drying Cylinder"
- L3 0 0.125000 1.062500 2.062500 0 8.062500 2.062500 0
- L3 0 0.125000 8.062500 2.062500 0 8.062500 1.062500 0
- Z 0 3.712100 7.712100 0.000000 0 64.000000 "Silos"
- Z 0 8.712100 2.712100 0.000000 0 64.000000 "Loading Facility"
- Z 0 2.712100 16.712100 0.000000 0 64.000000 "Crusher"
- Z 0 20.712100 15.712100 0.000000 0 64.000000 "Kiln Building"
- Z 0 2.712101 11.712100 0.000000 0 64.000000 "Conveyor"
- Z 0 29.712100 12.712100 0.000000 0 64.000000 "Bulk Storage Building"
- Z 0 12.712100 21.712100 0.000000 0 64.000000 "Smoke Stack"
- END
-
-
-SUBCONTENTS Walthers Cornerstone HO Structures - Oil Industries
-STRUCTURE HO "Walthers Cornerstone Structures Walking Beam/"Horse Head" Oil Pump 933-3248"
- L3 0 0.000000 0.000000 0.000000 0 5.051665 0.000000 0
- L3 0 0.000000 5.051665 0.000000 0 5.051665 1.836969 0
- L3 0 0.000000 5.051665 1.836969 0 0.000000 1.836969 0
- L3 0 0.000000 0.000000 1.836969 0 0.000000 0.000000 0
- F3 0 0.000000 4
- 4.994259 1.377727 0
- 4.994259 1.377727 0
- 4.994259 1.377727 0
- 4.994259 1.377727 0
- F3 0 0.000000 4
- 3.673938 1.377727 0
- 4.592422 1.377727 0
- 4.592422 0.459242 0
- 3.673938 0.459242 0
- F3 0 0.000000 4
- 0.459242 1.033295 0
- 3.185993 1.033295 0
- 3.185993 0.803674 0
- 0.459242 0.803674 0
- F3 0 0.000000 4
- 3.214696 1.377727 0
- 3.444317 1.377727 0
- 3.444317 0.459242 0
- 3.214696 0.459242 0
- F3 0 0.000000 4
- 3.444317 1.234214 0
- 3.645235 1.234214 0
- 3.645235 1.176808 0
- 3.444317 1.176808 0
- F3 0 0.000000 4
- 3.415614 0.574053 0
- 3.645235 0.574053 0
- 3.645235 0.631458 0
- 3.415614 0.631458 0
- END
-STRUCTURE HO "Walthers North Island Refinery 933-3013"
- L 16711935 0 0.000000 0.000000 0.000000 8.250000
- L 16711935 0 0.000000 8.250000 13.500000 8.250000
- L 16711935 0 13.500000 8.250000 13.500000 0.000000
- L 16711935 0 13.500000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Interstate Fuel & Oil, Loading Rack 933-3006a"
- L 16711935 0 0.000000 0.000000 0.000000 5.750000
- L 16711935 0 0.000000 5.750000 7.000000 5.750000
- L 16711935 0 7.000000 5.750000 7.000000 0.000000
- L 16711935 0 7.000000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Interstate Fuel & Oil, Office 933-3006b"
- L 16711935 0 0.000000 0.000000 0.000000 5.750000
- L 16711935 0 0.000000 5.750000 4.500000 5.750000
- L 16711935 0 4.500000 5.750000 4.500000 0.000000
- L 16711935 0 4.500000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Interstate Fuel & Oil, Tanks 933-3006c"
- L 16711935 0 0.000000 0.000000 0.000000 4.000000
- L 16711935 0 0.000000 4.000000 2.000000 4.000000
- L 16711935 0 2.000000 4.000000 2.000000 0.000000
- L 16711935 0 2.000000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Interstate Fuel & Oil, Shed 933-3006d"
- L 16711935 0 0.000000 0.000000 0.000000 1.250000
- L 16711935 0 0.000000 1.250000 1.500000 1.250000
- L 16711935 0 1.500000 1.250000 1.500000 0.000000
- L 16711935 0 1.500000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Interstate Fuel - Loading Rack 933-32000a"
- L 0 0 1.377727 0.000000 6.888634 0.000000
- L 0 0 6.888634 0.000000 6.888634 5.740528
- L 0 0 6.888634 5.740528 1.377727 5.740528
- L 0 0 6.773823 0.114811 3.099885 0.114811
- L 0 0 3.099885 0.114811 3.099885 1.492537
- L 0 0 3.099885 1.492537 6.773823 1.492537
- L 0 0 6.773823 1.492537 6.773823 0.114811
- L 0 0 6.773823 5.625718 3.099885 5.625718
- L 0 0 3.099885 5.625718 3.099885 4.247991
- L 0 0 3.099885 4.247991 6.773823 4.247991
- L 0 0 6.773823 4.247991 6.773823 5.625718
- L 0 0 6.773823 2.181401 3.099885 2.181401
- L 0 0 3.099885 2.181401 3.099885 3.559128
- L 0 0 3.099885 3.559128 6.773823 3.559128
- L 0 0 6.773823 3.559128 6.773823 2.181401
- A 0 0 0.162366 5.510907 4.936854 0.000000 360.000000
- A 0 0 0.162366 5.510907 2.870264 0.000000 360.000000
- A 0 0 0.162366 5.510907 0.803674 0.000000 360.000000
- L 0 0 1.377727 5.281286 0.000000 5.281286
- L 0 0 0.000000 5.281286 0.000000 0.459242
- L 0 0 0.000000 0.459242 1.377727 0.459242
- L 0 0 2.755454 4.018370 0.803674 4.018370
- L 0 0 0.803674 4.018370 0.803674 1.722158
- L 0 0 0.803674 1.722158 2.755454 1.722158
- L 0 0 2.755454 1.722158 2.755454 4.018370
- L 0 0 1.377727 5.740528 1.377727 4.018370
- L 0 0 1.377727 0.000000 1.377727 1.722158
- END
-STRUCTURE HO "Walthers Interstate Fuel - Office 933-3200b"
- L 0 0 0.000000 5.510907 3.673938 5.510907
- L 0 0 3.673938 5.510907 3.673938 0.918485
- L 0 0 3.673938 0.918485 0.000000 0.918485
- L 0 0 0.000000 0.918485 0.000000 5.510907
- L 0 0 3.673938 4.133180 4.592422 4.133180
- L 0 0 4.592422 4.133180 4.592422 0.000000
- L 0 0 4.592422 0.000000 0.688863 0.000000
- L 0 0 0.688863 0.000000 0.688863 0.918485
- A 0 0 0.162366 1.836969 4.362802 0.000000 360.000000
- A 0 0 0.162366 1.836969 2.066590 0.000000 360.000000
- END
-STRUCTURE HO "Walthers Interstate Fuel - Shed 933-3200c"
- L 0 0 0.000000 0.000000 1.836969 0.000000
- L 0 0 1.836969 0.000000 1.836969 1.148106
- L 0 0 1.836969 1.148106 0.000000 1.148106
- L 0 0 0.000000 1.148106 0.000000 0.000000
- L 0 0 0.000000 0.574053 1.836969 0.574053
- END
-STRUCTURE HO "Walthers Interstate Fuel - Tanks 933-3200d"
- L 0 0 1.836969 3.788749 1.836969 2.066590
- L 0 0 0.114811 0.000000 1.722158 0.000000
- L 0 0 0.000000 0.114811 0.114811 0.000000
- L 0 0 1.836969 0.114811 1.722158 0.000000
- L 0 0 1.836969 0.114811 1.836969 1.836969
- L 0 0 0.000000 1.836969 0.000000 0.114811
- L 0 0 0.000000 3.788749 0.000000 2.066590
- L 0 0 0.000000 2.066590 0.114811 1.951780
- L 0 0 0.114811 1.951780 0.000000 1.836969
- L 0 0 1.836969 1.836969 1.722158 1.951780
- L 0 0 1.722158 1.951780 1.836969 2.066590
- L 0 0 0.114811 3.903559 1.722158 3.903559
- L 0 0 1.722158 3.903559 1.836969 3.788749
- L 0 0 0.114811 3.903559 0.000000 3.788749
- A 0 0 0.835834 0.918485 0.918485 0.000000 360.000000
- A 0 0 0.803674 0.918485 2.985075 0.000000 360.000000
- END
-STRUCTURE HO "Walthers Cornerstone McGraw Oil Company 933-3170"
-#Created by Howard Hayes
- F3 12632256 0.000000 4
- 0.000000 6.500000 0
- 6.500000 6.500000 0
- 6.500000 0.000000 0
- 0.000000 0.000000 0
- F3 8029321 0.000000 4
- 0.250000 6.250000 0
- 6.250000 6.250000 0
- 6.250000 0.250000 0
- 0.250000 0.250000 0
- G3 12632256 0.000000 1.118034 2.000000 4.500000 0
- G3 12632256 0.000000 1.118034 1.995891 1.995891 0
- G3 12632256 0.000000 1.118034 4.495891 4.495891 0
- G3 12632256 0.000000 1.118034 4.495891 1.995891 0
- F3 0 0.000000 4
- 2.750000 2.000000 0
- 3.750000 2.000000 0
- 3.750000 1.750000 0
- 2.750000 1.750000 0
- F3 0 0.000000 4
- 2.750000 4.500000 0
- 3.750000 4.500000 0
- 3.750000 4.250000 0
- 2.750000 4.250000 0
- F3 0 0.000000 4
- 2.000000 3.750000 0
- 2.250000 3.750000 0
- 2.250000 2.750000 0
- 2.000000 2.750000 0
- F3 0 0.000000 4
- 8.125000 6.875000 0
- 8.125000 6.875000 0
- 8.125000 7.000000 0
- 8.125000 7.000000 0
- F3 0 0.000000 4
- 9.875000 6.375000 0
- 7.625000 6.375000 0
- 7.625000 4.125000 0
- 9.875000 4.125000 0
- F3 0 0.000000 4
- 7.625000 4.125000 0
- 8.000000 4.125000 0
- 8.000000 3.750000 0
- 7.625000 3.750000 0
- F3 0 0.000000 4
- 9.875000 0.875000 0
- 7.500000 0.875000 0
- 7.500000 3.125000 0
- 9.875000 3.125000 0
- F3 0 0.000000 4
- 7.500000 3.125000 0
- 7.875000 3.125000 0
- 7.875000 3.500000 0
- 7.500000 3.500000 0
- F3 0 0.000000 4
- 8.625000 0.875000 0
- 8.625000 0.875000 0
- 8.625000 0.875000 0
- 8.625000 0.875000 0
- F3 0 0.000000 4
- 8.625000 0.750000 0
- 9.000000 0.750000 0
- 9.000000 0.875000 0
- 8.625000 0.875000 0
- L3 0 0.000000 7.625000 6.375000 0 9.875000 6.375000 0
- L3 0 0.000000 9.875000 6.375000 0 9.875000 5.250000 0
- L3 16777215 0.000000 9.875000 5.250000 0 7.625000 5.250000 0
- L3 0 0.000000 7.625000 5.250000 0 7.625000 6.375000 0
- L3 16777215 0.000000 9.899600 5.274600 0 7.649600 5.274600 0
- L3 16777215 0.000000 9.875000 6.375000 0 9.875000 4.500000 0
- L3 16777215 0.000000 9.625000 6.375000 0 9.625000 4.000000 0
- L3 16777215 0.000000 9.399600 6.399600 0 9.399600 4.024600 0
- L3 16777215 0.000000 9.149600 6.399600 0 9.149600 4.024600 0
- L3 16777215 0.000000 8.899600 6.399600 0 8.899600 4.024600 0
- L3 16777215 0.000000 8.649600 6.399600 0 8.649600 4.024600 0
- L3 16777215 0.000000 8.399600 6.399600 0 8.399600 4.024600 0
- L3 16777215 0.000000 8.149600 6.399600 0 8.149600 4.024600 0
- L3 16777215 0.000000 7.625000 6.375000 0 7.625000 3.625000 0
- L3 16777215 0.000000 7.875000 6.375000 0 7.875000 3.750000 0
- L3 16777215 0.000000 9.625000 3.875000 0 9.625000 0.750000 0
- L3 16777215 0.000000 9.399600 4.024600 0 9.399600 0.899600 0
- L3 16777215 0.000000 9.149600 4.024600 0 9.149600 0.899600 0
- L3 16777215 0.000000 8.899600 4.024600 0 8.899600 0.899600 0
- L3 16777215 0.000000 8.649600 4.024600 0 8.649600 0.899600 0
- L3 16777215 0.000000 8.399600 4.024600 0 8.399600 0.899600 0
- L3 16777215 0.000000 8.149600 4.024600 0 8.149600 0.899600 0
- L3 16777215 0.000000 7.649600 3.649600 0 7.649600 0.524600 0
- L3 16777215 0.000000 7.899600 3.649600 0 7.899600 0.524600 0
- L3 16777215 0.000000 7.500000 2.125000 0 9.875000 2.125000 0
- L3 16777215 0.000000 7.524600 2.149600 0 9.899600 2.149600 0
- END
-
-
-SUBCONTENTS Walthers Cornerstone HO Structures - Steel Industries
-STRUCTURE HO "Walthers Blast Furnace 933-3054"
- L 0 0.000000 0.000000 0.041667 12.666667 0.041667
- L 0 0.000000 12.666667 0.041667 12.666667 11.791667
- L 0 0.000000 12.666667 11.791667 0.000000 11.791667
- L 0 0.000000 0.000000 11.791667 0.000000 0.041667
- L 0 0.000000 -0.041667 6.208334 12.625000 6.208334
- L 0 0.000000 12.625000 6.208334 12.625000 5.375000
- L 0 0.000000 12.625000 5.375000 -0.041667 5.375000
- L 0 0.000000 -0.041667 5.375000 -0.041667 6.208334
- END
-
-
-SUBCONTENTS Walthers Cornerstone HO Structures - Trackside Industries
-STRUCTURE HO "Walthers R.J. Frost Ice & Storage 933-3020"
- L 0 0.000000 0.000000 0.000000 11.000000 0.000000
- L 0 0.000000 11.000000 0.000000 11.000000 11.000000
- L 0 0.000000 11.000000 11.000000 0.000000 11.000000
- L 0 0.000000 0.000000 11.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Brook Hill Farm Dairy 933-3010"
- L 16711935 0 0.000000 0.000000 0.000000 7.250000
- L 16711935 0 0.000000 7.250000 7.375000 7.250000
- L 16711935 0 7.375000 7.250000 7.375000 0.000000
- L 16711935 0 7.375000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Golden Valley Canning Co, Main Bldg 933-3018a"
- L 16711935 0 0.000000 0.000000 0.000000 8.000000
- L 16711935 0 0.000000 8.000000 10.500000 8.000000
- L 16711935 0 10.500000 8.000000 10.500000 0.000000
- L 16711935 0 10.500000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Golden Valley Canning Co, Boiler House 933-3018b"
- L 16711935 0 0.000000 0.000000 0.000000 3.000000
- L 16711935 0 0.000000 3.000000 4.750000 3.000000
- L 16711935 0 4.750000 3.000000 4.750000 0.000000
- L 16711935 0 4.750000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers United Trucking Transfer Terminal 933-3005"
- L 16711935 0 0.000000 0.000000 0.000000 6.000000
- L 16711935 0 0.000000 6.000000 2.625000 6.000000
- L 16711935 0 2.625000 6.000000 2.625000 0.000000
- L 16711935 0 2.625000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Hardwood Furniture Co 933-3044"
- L 16711935 0 0.000000 0.000000 0.000000 10.625000
- L 16711935 0 0.000000 10.625000 11.875000 10.625000
- L 16711935 0 11.875000 10.625000 11.875000 0.000000
- L 16711935 0 11.875000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Geo. Roberts Printing Inc 933-3046"
- L 16711935 0 0.000000 0.000000 0.000000 7.500000
- L 16711935 0 0.000000 7.500000 12.750000 7.500000
- L 16711935 0 12.750000 7.500000 12.750000 0.000000
- L 16711935 0 12.750000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Water St Freight Terminal 933-3009"
- L 16711935 0 0.000000 0.000000 0.000000 6.250000
- L 16711935 0 0.000000 6.250000 20.500000 6.250000
- L 16711935 0 20.500000 6.250000 20.500000 0.000000
- L 16711935 0 20.500000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Vulcan Mfg Co, Main Bldg 933-3045a"
- L 0 0.000000 0.000000 0.000000 9.250000 0.000000
- L 0 0.000000 9.250000 0.000000 9.250000 8.500000
- L 0 0.000000 9.250000 8.500000 0.000000 8.500000
- L 0 0.000000 0.000000 8.500000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Vulcan Mfg Co, Crane Canopy 933-3045"
- L 0 0.000000 0.000000 0.000000 9.125000 0.000000
- L 0 0.000000 9.125000 0.000000 9.125000 8.375000
- L 0 0.000000 9.125000 8.375000 0.000000 8.375000
- L 0 0.000000 0.000000 8.375000 0.000000 0.000000
- END
-STRUCTURE HO "Walther Champion Packing Co. 933-3048"
- L 0 0.000000 0.000000 1.250000 16.375000 1.250000
- L 0 0.000000 16.375000 1.250000 16.375000 4.750000
- L 0 0.000000 10.625000 1.250000 10.625000 7.250000
- L 0 0.000000 16.375000 4.750000 10.562500 4.750000
- L 0 0.000000 16.375000 4.750000 16.375000 5.250000
- L 0 0.000000 16.375000 5.250000 17.000000 5.250000
- L 0 0.000000 17.000000 5.250000 17.000000 0.000000
- L 0 0.000000 17.000000 0.000000 0.500000 0.000000
- L 0 0.000000 0.500000 0.000000 0.500000 1.250000
- L 0 0.000000 0.000000 1.250000 0.000000 7.250000
- L 0 0.000000 0.000000 7.250000 11.500000 7.250000
- L 0 0.000000 11.500000 7.250000 11.500000 8.500000
- L 0 0.000000 11.500000 8.500000 0.000000 8.500000
- L 0 0.000000 0.000000 8.500000 0.000000 7.250000
- A 0 0.000000 0.951972 12.750000 6.250000 0.000000 360.000000
- END
-STRUCTURE HO "Walthers Stockyard 933-3047"
- L 0 0.000000 0.000000 0.000000 12.500000 0.000000
- L 0 0.000000 12.500000 0.000000 12.500000 7.250000
- L 0 0.000000 12.500000 7.250000 13.000000 7.250000
- L 0 0.000000 13.000000 7.250000 13.000000 8.000000
- L 0 0.000000 13.000000 8.000000 11.000000 8.000000
- L 0 0.000000 11.000000 8.000000 11.000000 7.625000
- L 0 0.000000 11.000000 7.625000 10.500000 7.625000
- L 0 0.000000 10.500000 7.625000 10.500000 7.250000
- L 0 0.000000 10.500000 7.250000 6.000000 7.250000
- L 0 0.000000 6.500000 7.250000 6.500000 8.000000
- L 0 0.000000 6.500000 8.000000 4.500000 8.000000
- L 0 0.000000 4.500000 8.000000 4.500000 7.687500
- L 0 0.000000 4.500000 7.687500 4.000000 7.687500
- L 0 0.000000 4.000000 7.687500 4.000000 7.250000
- L 0 0.000000 4.000000 7.250000 0.000000 7.250000
- L 0 0.000000 0.000000 7.250000 0.000000 0.000000
- L 0 0.000000 6.000000 7.250000 6.000000 -0.062500
- END
-STRUCTURE HO "Walthers Ice House and Platform 933-3049"
- L 0 0.000000 2.000000 0.000000 18.500000 0.000000
- L 0 0.000000 18.500000 0.000000 18.500000 1.500000
- L 0 0.000000 18.500000 1.500000 2.000000 1.500000
- L 0 0.000000 2.000000 1.500000 2.000000 0.000000
- L 0 0.000000 2.125000 0.125000 18.375000 0.125000
- L 0 0.000000 18.375000 0.125000 18.375000 1.375000
- L 0 0.000000 18.375000 1.375000 2.125000 1.375000
- L 0 0.000000 2.125000 1.375000 2.125000 0.125000
- L 0 0.000000 2.000000 0.562500 0.000000 0.562500
- L 0 0.000000 2.000000 0.937500 0.000000 0.937500
- L 0 0.000000 0.000000 0.937500 0.000000 0.562500
- L 0 0.000000 4.875000 1.625000 15.625000 1.625000
- L 0 0.000000 15.625000 1.625000 15.625000 6.375000
- L 0 0.000000 15.625000 6.375000 4.875000 6.375000
- L 0 0.000000 4.875000 6.375000 4.875000 1.625000
- END
-STRUCTURE HO "Walthers Overhead Traveling Crane 933-3102"
- L 0 0.000000 0.000000 8.625000 0.125000 8.625000
- L 0 0.000000 0.125000 8.625000 0.125000 7.125000
- L 0 0.000000 0.125000 7.125000 0.000000 7.125000
- L 0 0.000000 0.000000 7.125000 0.000000 8.625000
- L 0 0.000000 12.187500 8.625000 12.062500 8.625000
- L 0 0.000000 12.062500 8.625000 12.062500 7.125000
- L 0 0.000000 12.062500 7.125000 12.187500 7.125000
- L 0 0.000000 12.187500 7.125000 12.187500 8.625000
- L 0 0.000000 12.187500 0.000000 12.062500 0.000000
- L 0 0.000000 12.062500 0.000000 12.062500 1.500000
- L 0 0.000000 12.062500 1.500000 12.187500 1.500000
- L 0 0.000000 12.187500 1.500000 12.187500 0.000000
- L 0 0.000000 0.000000 0.000000 0.125000 0.000000
- L 0 0.000000 0.125000 0.000000 0.125000 1.500000
- L 0 0.000000 0.125000 1.500000 0.000000 1.500000
- L 0 0.000000 0.000000 1.500000 0.000000 0.000000
- L 0 0.000000 0.000000 1.500000 12.187500 1.500000
- L 0 0.000000 12.187500 1.500000 12.187500 1.625000
- L 0 0.000000 12.187500 1.625000 0.000000 1.625000
- L 0 0.000000 0.000000 1.625000 0.000000 1.500000
- L 0 0.000000 0.000000 7.125000 12.187500 7.125000
- L 0 0.000000 12.187500 7.125000 12.187500 7.000000
- L 0 0.000000 12.187500 7.000000 0.000000 7.000000
- L 0 0.000000 0.000000 7.000000 0.000000 7.125000
- L 0 0.000000 6.000000 8.625000 6.125000 8.625000
- L 0 0.000000 6.125000 8.625000 6.125000 7.125000
- L 0 0.000000 6.125000 7.125000 6.000000 7.125000
- L 0 0.000000 6.000000 7.125000 6.000000 8.625000
- L 0 0.000000 6.000000 1.500000 6.125000 1.500000
- L 0 0.000000 6.125000 1.500000 6.125000 0.000000
- L 0 0.000000 6.125000 0.000000 6.000000 0.000000
- L 0 0.000000 6.000000 0.000000 6.000000 1.500000
- L 0 0.000000 2.937500 8.625000 3.062500 8.625000
- L 0 0.000000 3.062500 8.625000 3.062500 7.125000
- L 0 0.000000 3.062500 7.125000 2.937500 7.125000
- L 0 0.000000 2.937500 7.125000 2.937500 8.625000
- L 0 0.000000 8.937500 8.625000 9.062500 8.625000
- L 0 0.000000 9.062500 8.625000 9.062500 7.125000
- L 0 0.000000 9.062500 7.125000 8.937500 7.125000
- L 0 0.000000 8.937500 7.125000 8.937500 8.625000
- L 0 0.000000 2.937500 1.500000 3.062500 1.500000
- L 0 0.000000 3.062500 1.500000 3.062500 0.000000
- L 0 0.000000 3.062500 0.000000 2.937500 0.000000
- L 0 0.000000 2.937500 0.000000 2.937500 1.500000
- L 0 0.000000 8.937500 1.500000 9.062500 1.500000
- L 0 0.000000 9.062500 1.500000 9.062500 0.000000
- L 0 0.000000 9.062500 0.000000 8.937500 0.000000
- L 0 0.000000 8.937500 0.000000 8.937500 1.500000
- L 0 0.000000 11.000000 7.125000 11.125000 7.125000
- L 0 0.000000 11.125000 7.125000 11.125000 1.500000
- L 0 0.000000 11.125000 1.500000 11.000000 1.500000
- L 0 0.000000 11.000000 1.500000 11.000000 7.125000
- L 0 0.000000 10.250000 7.125000 10.375000 7.125000
- L 0 0.000000 10.375000 7.125000 10.375000 1.500000
- L 0 0.000000 10.375000 1.500000 10.250000 1.500000
- L 0 0.000000 10.250000 1.500000 10.250000 7.125000
- L 0 0.000000 10.062500 5.000000 11.312500 5.000000
- L 0 0.000000 11.312500 5.000000 11.312500 3.687500
- L 0 0.000000 11.312500 3.687500 10.062500 3.687500
- L 0 0.000000 10.062500 3.687500 10.062500 5.000000
- L 0 0.000000 10.062500 4.375000 11.312500 4.375000
- END
-
-
-SUBCONTENTS Walthers Cornerstone HO Structures - Grain Industries
-STRUCTURE HO "Walthers ADM Scalehouse 933-3027a"
- L 0 0.000000 0.000000 0.000000 5.875000 0.000000
- L 0 0.000000 5.875000 0.000000 5.875000 3.875000
- L 0 0.000000 5.875000 3.875000 0.000000 3.875000
- L 0 0.000000 0.000000 3.875000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers ADM Rail Car Scale 933-3027b"
- L 0 0.000000 0.000000 0.000000 8.000000 0.000000
- L 0 0.000000 8.000000 0.000000 8.000000 1.875000
- L 0 0.000000 8.000000 1.875000 0.000000 1.875000
- L 0 0.000000 0.000000 1.875000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers ADM Truck Scale 933-3027c"
- L 0 0.000000 0.000000 0.000000 4.000000 0.000000
- L 0 0.000000 4.000000 0.000000 4.000000 1.562500
- L 0 0.000000 4.000000 1.562500 0.000000 1.562500
- L 0 0.000000 0.000000 1.562500 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Coop Grain Elevator, Main Bldg 933-3036a"
- L 0 0.000000 0.750000 0.000000 0.750000 7.250000
- L 0 0.000000 1.750000 0.000000 1.750000 3.375000
- L 0 0.000000 2.750000 0.000000 2.750000 3.375000
- L 0 0.000000 3.750000 0.000000 3.750000 3.375000
- L 0 0.000000 4.750000 0.000000 4.750000 7.250000
- L 0 0.000000 0.000000 6.250000 8.812500 6.250000
- L 0 0.000000 8.812500 6.250000 8.812500 4.000000
- L 0 0.000000 8.812500 4.000000 8.000000 4.000000
- L 0 0.000000 8.000000 4.000000 8.000000 2.937500
- L 0 0.000000 8.000000 2.937500 7.687500 2.937500
- L 0 0.000000 7.687500 3.812500 7.687500 2.562500
- L 0 0.000000 7.687500 2.562500 5.500000 2.562500
- L 0 0.000000 5.500000 2.562500 5.500000 4.000000
- L 0 0.000000 7.687500 3.812500 5.500000 3.812500
- L 0 0.000000 5.500000 4.000000 0.000000 4.000000
- L 0 0.000000 0.000000 6.250000 0.000000 4.000000
- L 0 0.000000 0.750000 0.000000 4.750000 0.000000
- L 0 0.000000 0.750000 6.562500 4.750000 6.562500
- L 0 0.000000 1.750000 3.375000 1.750000 4.000000
- L 0 0.000000 2.750000 3.375000 2.750000 4.000000
- L 0 0.000000 3.750000 3.312500 3.750000 4.000000
- END
-STRUCTURE HO "Walthers Coop Grain Elevator, Shed 933-3036b"
- L 0 0.000000 0.000000 0.000000 7.000000 0.000000
- L 0 0.000000 7.000000 0.000000 7.000000 4.500000
- L 0 0.000000 7.000000 4.500000 0.000000 4.500000
- L 0 0.000000 0.000000 4.500000 0.000000 0.000000
- L 0 0.000000 0.000000 2.250000 6.937500 2.250000
- L 0 0.000000 3.250000 2.000000 3.750000 2.000000
- L 0 0.000000 3.750000 2.000000 3.750000 2.500000
- L 0 0.000000 3.750000 2.500000 3.250000 2.500000
- L 0 0.000000 3.250000 2.500000 3.250000 2.000000
- END
-STRUCTURE HO "Walthers ADM Grain Elevator 933-3022"
- L 0 0.000000 0.000000 0.000000 13.500000 0.000000
- L 0 0.000000 13.500000 0.000000 13.500000 9.500000
- L 0 0.000000 13.500000 9.500000 0.000000 9.500000
- L 0 0.000000 0.000000 9.500000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers ADM Grain Elevator 933-3225"
- L 0 0 14.925370 10.792190 6.659013 10.792190
- L 0 0 14.925370 0.000000 9.184845 0.000000
- L 0 0 9.184845 0.000000 9.184845 7.692308
- L 0 0 14.925370 7.692308 6.659013 7.692308
- L 0 0 6.659013 10.792190 6.659013 7.692308
- L 0 0 9.184845 2.870264 14.925370 2.870264
- L 0 0 13.432840 7.692308 13.432840 2.870264
- L 0 0 10.332950 7.692308 10.332950 2.870264
- L 0 0 14.925370 6.888634 14.006890 6.888634
- L 0 0 14.006890 6.888634 14.006890 5.970150
- L 0 0 14.006890 5.970150 14.925370 5.970150
- L 0 0 14.006890 4.362802 14.925370 4.362802
- L 0 0 14.925370 10.792190 14.925370 0.000000
- A 0 0 0.363062 14.466130 6.429391 0.000000 360.000000
- A 0 0 0.363062 14.466130 3.903559 0.000000 360.000000
- L 0 0 14.925370 3.444317 14.006890 3.444317
- L 0 0 14.006890 4.362802 14.006890 3.444317
- A 0 0 0.229621 14.466130 6.429391 0.000000 360.000000
- A 0 0 0.229621 14.466130 3.903559 0.000000 360.000000
- A 0 0 0.114811 11.825490 6.888634 0.000000 360.000000
- A 0 0 0.114811 11.825490 5.970150 0.000000 360.000000
- A 0 0 0.114811 11.825490 4.362802 0.000000 360.000000
- A 0 0 0.114811 11.825490 3.559128 0.000000 360.000000
- A 0 0 1.148106 8.036739 6.429391 270.000000 180.000000
- L 0 0 6.888634 6.429391 6.888634 6.429391
- A 0 0 1.148106 5.740528 6.429391 270.000000 180.000000
- A 0 0 1.148106 3.444317 6.429391 270.000000 180.000000
- A 0 0 1.139042 1.157169 6.429391 246.222684 203.777316
- A 0 0 1.148106 8.036739 4.133180 90.000000 180.000000
- A 0 0 1.148106 5.740528 4.133180 90.000000 180.000000
- A 0 0 1.148106 3.444317 4.133180 90.000000 180.000000
- A 0 0 1.139042 1.157169 4.133180 90.000000 203.777316
- L 0 0 9.184845 5.281286 0.114811 5.281286
- L 0 0 0.114811 5.281286 0.114811 6.199770
- L 0 0 0.114811 6.199770 9.070035 6.199770
- L 0 0 0.114811 5.281286 0.114811 4.362802
- L 0 0 0.114811 4.362802 9.184845 4.362802
- END
-STRUCTURE HO "Walthers ADM Grain Elevator (concrete) 933-3022"
- G3 15720651 0.000000 1.148106 1.148106 5.442971 0
- G3 15720651 0.000000 1.148106 3.444317 5.442971 0
- G3 15720651 0.000000 1.148106 3.444317 5.442971 0
- G3 15720651 0.000000 1.148106 5.740528 5.442971 0
- G3 15720651 0.000000 1.148106 8.036739 5.442971 0
- G3 15720651 0.000000 1.148106 1.148106 7.739183 0
- G3 15720651 0.000000 1.148106 3.444317 7.739183 0
- G3 15720651 0.000000 1.148106 5.740528 7.739183 0
- G3 15720651 0.000000 1.148106 8.036739 7.739183 0
- A3 0 0.093750 1.148106 1.148106 5.442971 0 0.000000 360.000000
- A3 0 0.093750 1.148106 1.148106 7.739183 0 0.000000 360.000000
- A3 0 0.093750 1.148106 3.444317 5.442971 0 0.000000 360.000000
- A3 0 0.093750 1.148106 5.740528 5.442971 0 0.000000 360.000000
- A3 0 0.093750 1.148106 8.036739 5.442971 0 0.000000 360.000000
- A3 0 0.093750 1.148106 3.444317 7.739183 0 0.000000 360.000000
- A3 0 0.093750 1.148106 5.740528 7.739183 0 0.000000 360.000000
- A3 0 0.093750 1.148106 8.036739 7.739183 0 0.000000 360.000000
- F3 12632256 0.000000 4
- 1.148106 7.739183 0
- 9.184845 7.739183 0
- 9.184845 5.442971 0
- 1.148106 5.442971 0
- G3 0 0.000000 0.000000 1.148106 5.442971 0
- G3 0 0.000000 0.000000 1.148106 7.739183 0
- L3 0 0.093750 1.148106 7.739183 0 1.148106 5.442971 0
- L3 0 0.093750 1.148106 5.442971 0 9.184845 5.442971 0
- L3 0 0.093750 1.148106 6.591077 0 9.184845 6.591077 0
- L3 0 0.093750 9.184845 7.739183 0 1.148106 7.739183 0
- F3 12632256 0.000000 4
- 9.184845 9.231720 0
- 14.466131 9.231720 0
- 14.466131 3.950434 0
- 9.184845 3.950434 0
- L3 0 0.093750 14.466131 3.950434 0 14.466131 9.231720 0
- L3 0 0.093750 9.184845 9.231720 0 9.184845 3.950434 0
- L3 0 0.093750 10.447761 3.950434 0 10.447761 9.231720 0
- L3 0 0.093750 13.203215 3.950434 0 13.203215 9.231720 0
- A3 0 0.093750 0.459242 13.826866 5.442971 0 0.000000 360.000000
- A3 0 0.093750 0.229621 13.826866 5.442971 0 0.000000 360.000000
- A3 0 0.093750 0.459242 13.826866 7.853993 0 0.000000 360.000000
- A3 0 0.093750 0.229621 13.826866 7.853993 0 0.000000 360.000000
- L3 0 0.093750 9.184845 5.442971 0 9.184845 7.739183 0
- F3 12632256 0.000000 4
- 9.184845 11.757552 0
- 14.466131 11.757552 0
- 14.466131 9.231720 0
- 9.184845 9.231720 0
- L3 0 0.093750 9.184845 9.231720 0 9.184845 11.757552 0
- L3 0 0.093750 9.184845 11.757552 0 14.466131 11.757552 0
- L3 0 0.093750 14.466131 11.757552 0 14.466131 9.231720 0
- L3 0 0.093750 14.466131 9.231720 0 9.184845 9.231720 0
- F3 12632256 0.000000 4
- 13.088404 9.346531 0
- 13.088404 9.346531 0
- 13.088404 9.346531 0
- 13.088404 9.346531 0
- G3 0 0.000000 0.114811 11.825488 8.428046 0
- G3 0 0.000000 0.114811 11.825488 7.279940 0
- G3 0 0.000000 0.114811 11.825488 5.672593 0
- G3 0 0.000000 0.114811 11.825488 4.754108 0
- F3 12632256 0.000000 4
- 5.855339 3.950434 0
- 14.466131 3.950434 0
- 14.466131 0.046875 0
- 5.855339 0.046875 0
- L3 0 0.093750 9.184845 3.950434 0 14.466131 3.950434 0
- L3 0 0.093750 14.466131 3.950434 0 14.466131 0.046875 0
- L3 0 0.093750 14.466131 0.046875 0 5.855339 0.046875 0
- L3 0 0.093750 5.855339 0.046875 0 5.855339 3.950434 0
- L3 0 0.093750 5.855339 3.950434 0 9.184845 3.950434 0
- L3 0 0.187500 11.825488 3.950434 0 11.825488 1.769033 0
- END
-STRUCTURE HO "Walthers ADM Grain Elevator Silo Add-on 933-"
- G3 15720651 0.000000 1.148106 1.148106 1.148106 0
- G3 15720651 0.000000 1.148106 3.444317 1.148106 0
- G3 15720651 0.000000 1.148106 3.444317 1.148106 0
- G3 15720651 0.000000 1.148106 5.740528 1.148106 0
- G3 15720651 0.000000 1.148106 8.036739 1.148106 0
- G3 15720651 0.000000 1.148106 1.148106 3.444317 0
- G3 15720651 0.000000 1.148106 3.444317 3.444317 0
- G3 15720651 0.000000 1.148106 5.740528 3.444317 0
- G3 15720651 0.000000 1.148106 8.036739 3.444317 0
- A3 0 0.093750 1.148106 1.148106 1.148106 0 0.000000 360.000000
- A3 0 0.093750 1.148106 1.148106 3.444317 0 0.000000 360.000000
- A3 0 0.093750 1.148106 3.444317 1.148106 0 0.000000 360.000000
- A3 0 0.093750 1.148106 5.740528 1.148106 0 0.000000 360.000000
- A3 0 0.093750 1.148106 8.036739 1.148106 0 0.000000 360.000000
- A3 0 0.093750 1.148106 3.444317 3.444317 0 0.000000 360.000000
- A3 0 0.093750 1.148106 5.740528 3.444317 0 0.000000 360.000000
- A3 0 0.093750 1.148106 8.036739 3.444317 0 0.000000 360.000000
- F3 12632256 0.000000 4
- 1.148106 3.444317 0
- 9.184845 3.444317 0
- 9.184845 1.148106 0
- 1.148106 1.148106 0
- G3 0 0.000000 0.000000 1.148106 1.148106 0
- G3 0 0.000000 0.000000 1.148106 3.444317 0
- L3 0 0.093750 1.148106 3.444317 0 1.148106 1.148106 0
- L3 0 0.093750 1.148106 1.148106 0 9.184845 1.148106 0
- L3 0 0.093750 1.148106 2.296211 0 9.184845 2.296211 0
- L3 0 0.093750 9.184845 3.444317 0 1.148106 3.444317 0
- L3 0 0.093750 9.184845 1.148106 0 9.184845 3.444317 0
- END
-STRUCTURE HO "Walthers Redwing Flour Mill 933-3026"
- L 0 0.000000 0.000000 0.000000 11.000000 0.000000
- L 0 0.000000 11.000000 0.000000 11.000000 8.000000
- L 0 0.000000 11.000000 8.000000 0.000000 8.000000
- L 0 0.000000 0.000000 8.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Red Wing Milling Co 933-3212"
- L 0 0 8.266360 0.000000 8.266360 0.688863
- L 0 0 12.169920 0.688863 8.266360 0.688863
- L 0 0 12.169920 8.955224 3.788749 8.955224
- L 0 0 3.788749 8.955224 3.788749 8.266360
- L 0 0 3.788749 8.151550 0.000000 8.151550
- L 0 0 0.688863 1.377727 5.970150 1.377727
- L 0 0 5.970150 1.377727 5.970150 2.985075
- L 0 0 5.970150 2.985075 0.688863 2.985075
- L 0 0 0.688863 2.985075 0.688863 1.377727
- L 0 0 5.625718 2.640643 4.822044 2.640643
- L 0 0 4.822044 2.640643 4.822044 1.951780
- L 0 0 4.822044 1.951780 5.625718 1.951780
- L 0 0 5.625718 1.951780 5.625718 2.640643
- L 0 0 8.266360 0.000000 8.266360 -1.262916
- L 0 0 8.266360 -1.262916 3.673938 -1.262916
- L 0 0 3.673938 -1.262916 3.673938 0.688863
- L 0 0 3.673938 0.688863 0.000000 0.688863
- L 0 0 8.266360 0.688863 3.673938 0.688863
- L 0 0 3.673938 0.000000 0.000000 0.000000
- L 0 0 4.133180 0.688863 4.133180 -0.114811
- L 0 0 4.133180 -0.114811 7.462687 -0.114811
- L 0 0 7.462687 -0.114811 7.462687 0.688863
- A 0 0 0.256724 5.855339 0.229621 0.000000 360.000000
- A 0 0 0.256724 7.003444 0.229621 0.000000 360.000000
- A 0 0 0.256724 4.822044 0.229621 0.000000 360.000000
- A 0 0 0.114811 7.003444 0.229621 0.000000 360.000000
- A 0 0 0.114811 5.855339 0.229621 0.000000 360.000000
- A 0 0 0.000000 4.822044 0.229621 0.000000 360.000000
- A 0 0 0.114811 4.822044 0.229621 0.000000 360.000000
- L 0 0 12.169920 8.955224 12.169920 0.688863
- L 0 0 3.788749 8.151550 12.169920 8.151550
- L 0 4 5.396097 -0.114811 5.396097 -1.033295
- L 0 4 2.411022 0.688863 2.411022 -0.114811
- L 0 0 0.000000 8.151550 0.000000 8.151550
- L 0 0 0.000000 8.151550 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Grain Bin 933-3123"
- A 0 0.000000 2.765424 2.843750 2.770833 0.000000 360.000000
- A 0 0.000000 0.192074 2.739583 2.750000 0.000000 360.000000
- A 0 0.000000 2.458157 2.781250 2.770833 0.000000 360.000000
- END
-STRUCTURE HO "Walthers Grain Dryer 933-3128"
- L 0 0.000000 -0.010417 0.000000 2.864583 0.000000
- L 0 0.000000 2.864583 0.000000 2.864583 1.145833
- L 0 0.000000 -0.010417 1.145833 -0.010417 0.000000
- L 0 0.000000 -0.010417 0.593750 2.864583 0.593750
- L 0 0.000000 2.864583 0.468750 -0.010417 0.468750
- L 0 0.000000 2.864583 0.697917 3.072916 0.697917
- L 0 0.000000 3.072916 0.697917 3.072916 0.322917
- L 0 0.000000 3.072916 0.322917 2.864583 0.322917
- L 0 0.000000 2.864583 0.322917 2.864583 0.697917
- L 0 0.000000 2.593750 0.718750 2.593750 1.072917
- L 0 0.000000 2.593750 0.093750 2.593750 0.364583
- L 0 0.000000 2.218750 0.718750 2.218750 1.072917
- L 0 0.000000 2.218750 0.114583 2.218750 0.406250
- L 0 0.000000 2.593750 0.343750 2.593750 0.385417
- L 0 0.000000 1.864583 0.718750 1.864583 1.052083
- L 0 0.000000 1.864583 0.093750 1.864583 0.385417
- L 0 0.000000 1.489583 0.093750 1.489583 0.385417
- L 0 0.000000 2.864583 1.135417 -0.010417 1.135417
- L 0 0.000000 1.489583 0.677083 1.489583 1.052083
- L 0 0.000000 1.156250 0.677083 1.156250 1.031250
- L 0 0.000000 1.156250 0.093750 1.156250 0.385417
- L 0 0.000000 0.802083 0.677083 0.802083 1.031250
- L 0 0.000000 0.802083 0.072917 0.802083 0.364583
- L 0 0.000000 0.385416 0.697917 0.385416 1.052083
- L 0 0.000000 0.385416 0.072917 0.385416 0.406250
- END
-
-
-SUBCONTENTS Walthers Cornerstone HO Structures - Coal Industries
-STRUCTURE HO "Walthers Cornerstone Structures Coal Bunkers 933-3246A"
- F3 8421504 0.000000 4
- 0.000000 0.000000 0
- 8.840413 0.000000 0
- 8.840413 3.444317 0
- 0.000000 3.444317 0
- G3 13289984 0.000000 0.918933 1.435132 1.607348 0
- G3 13289984 0.000000 0.918933 3.720264 1.596269 0
- G3 13289984 0.000000 0.918933 7.394203 1.567567 0
- F3 10309376 0.000000 4
- 4.822044 2.755454 0
- 6.199770 2.755454 0
- 6.199770 0.459242 0
- 4.822044 0.459242 0
- END
-STRUCTURE HO "Walther's Cornerstone Structures New River Mine Tipple 933-3221"
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 9.184845 0.000000 0
- 9.184845 9.184845 0
- 0.000000 9.184845 0
- L3 0 0.000000 4.477612 9.184845 0 4.477612 0.000000 0
- L3 0 0.000000 2.066590 0.000000 0 2.066590 9.156142 0
- L3 0 0.000000 4.477612 4.592422 0 9.156142 4.592422 0
- END
-STRUCTURE HO "Walther's Cornerstone Structures New River Mine Conveyor 933-3221"
- F3 12632256 0.000000 4
- 5.510907 0.000000 0
- 0.000000 0.000000 0
- 0.000000 4.707233 0
- 5.510907 4.707233 0
- F3 8421504 0.000000 4
- 2.296211 4.707233 0
- 3.214696 4.707233 0
- 3.214696 5.281286 0
- 2.296211 5.281286 0
- L3 0 0.000000 0.000000 0.000000 0 5.510907 0.000000 0
- L3 0 0.000000 5.510907 0.000000 0 5.510907 4.707233 0
- L3 0 0.000000 5.510907 4.707233 0 0.000000 4.707233 0
- L3 0 0.000000 0.000000 4.707233 0 0.000000 0.000000 0
- L3 0 0.000000 2.755454 4.707233 0 2.755454 0.028703 0
- L3 0 0.000000 0.000000 2.755454 0 5.482204 2.784156 0
- END
-STRUCTURE HO "Walther's Cornerstone Structures New River Mine Track Coaling Bldg. 933-3221"
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 7.577497 0.000000 0
- 7.577497 2.985075 0
- 0.000000 2.985075 0
- L3 0 0.000000 0.000000 1.492537 0 7.520092 1.463835 0
- END
-STRUCTURE HO "Walthers Coal Flood Loader 933-3051"
- L 0 0.000000 0.000000 0.000000 6.000000 0.000000
- L 0 0.000000 6.000000 0.000000 6.000000 4.000000
- L 0 0.000000 6.000000 4.000000 0.000000 4.000000
- L 0 0.000000 0.000000 4.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Cornerstone Structure Western (coal) Flood Loader 933-3247"
- G3 0 0.000000 0.000000 2.440384 2.440384 0
- G3 15132390 0.000000 2.497789 2.497789 2.497789 0
- F3 8421504 0.000000 4
- 4.363461 3.330166 0
- 2.870924 3.330166 0
- 2.870924 1.550602 0
- 4.363461 1.550602 0
- L3 0 0.000000 3.559787 3.330166 0 3.559787 1.550602 0
- F3 0 0.000000 4
- 34.874370 1.464494 0
- 34.816960 1.464494 0
- 34.816960 1.464494 0
- 34.874370 1.464494 0
- F3 12632256 0.000000 4
- 34.931770 1.464494 0
- 33.037400 1.464494 0
- 33.037400 3.301463 0
- 34.931770 3.301463 0
- L3 0 0.000000 4.908811 1.981142 0 32.979990 1.981142 0
- L3 0 0.000000 32.979990 1.981142 0 32.979990 2.842221 0
- L3 0 0.000000 32.979990 2.842221 0 4.908811 2.842221 0
- L3 0 0.000000 4.908811 2.842221 0 4.908811 1.981142 0
- A3 0 0.000000 2.285423 2.469087 2.497789 0 0.000000 360.000000
- G3 0 0.000000 0.118345 3.186653 2.124655 0
- G3 8421504 0.000000 0.192544 1.005252 2.583897 0
- F3 8421504 0.000000 4
- 4.966217 2.497789 0
- 32.979990 2.497789 0
- 32.979990 2.210763 0
- 4.966217 2.210763 0
- END
-STRUCTURE HO "Walthers Rotary Dumper 933-3145"
- L 0 0.000000 -0.020833 0.020833 7.229167 0.020833
- L 0 0.000000 7.229167 0.020833 7.229167 9.520833
- L 0 0.000000 7.229167 9.520833 -0.020833 9.520833
- L 0 0.000000 -0.020833 9.520833 -0.020833 0.020833
- L 0 0.000000 3.895833 0.020833 3.895833 9.520833
- L 0 0.000000 3.354167 -0.020833 3.354167 9.520833
- END
-STRUCTURE HO "Walthers O.L. King Coal Yard, Shed 933-3015a"
- L 16711935 0 0.000000 0.000000 0.000000 2.875000
- L 16711935 0 0.000000 2.875000 5.000000 2.875000
- L 16711935 0 5.000000 2.875000 5.000000 0.000000
- L 16711935 0 5.000000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers O.L. King Coal Yard, Office 933-3015b"
- L 16711935 0 0.000000 0.000000 0.000000 4.500000
- L 16711935 0 0.000000 4.500000 6.500000 4.500000
- L 16711935 0 6.500000 4.500000 6.500000 0.000000
- L 16711935 0 6.500000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers O.L. King Coal Yard, Trestle 933-3015c"
- L 16711935 0 0.000000 0.000000 0.000000 2.000000
- L 16711935 0 0.000000 2.000000 15.750000 2.000000
- L 16711935 0 15.750000 2.000000 15.750000 0.000000
- L 16711935 0 15.750000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Western Flood Loader 933-3089"
- F3 16755285 0.000000 4
- 29.250868 3.375868 0
- 32.000868 3.375868 0
- 32.000868 1.125868 0
- 29.250868 1.125868 0
- G3 12632256 0.000000 2.250868 2.250868 2.250868 0
- F3 16755285 0.000000 4
- 1.938368 3.375868 0
- 4.188368 3.375868 0
- 4.188368 1.125868 0
- 1.938368 1.125868 0
- L3 0 0.052083 28.563368 2.063368 0 28.563368 2.063368 0
- A3 0 0.052083 2.250000 2.250868 2.250868 0 0.000000 360.000000
- L3 0 0.052083 1.938368 1.125868 0 4.188368 1.125868 0
- L3 0 0.052083 4.188368 3.375868 0 1.938368 3.375868 0
- L3 0 0.052083 1.938368 3.375868 0 1.938368 1.125868 0
- L3 12632256 0.052083 3.063368 3.438368 0 3.063368 3.438368 0
- L3 0 0.052083 3.063368 3.375868 0 3.063368 1.125868 0
- L3 0 0.052083 32.000868 1.125868 0 29.250868 1.125868 0
- L3 0 0.052083 29.250868 3.375868 0 32.000868 3.375868 0
- L3 0 0.052083 32.000868 3.375868 0 32.000868 1.125868 0
- F3 16755285 0.000000 4
- 29.250868 3.000868 0
- 4.188368 3.000868 0
- 4.188368 1.500868 0
- 29.250868 1.500868 0
- L3 0 0.052083 4.188368 1.125868 0 4.188368 3.375868 0
- L3 0 0.052083 29.250868 3.000868 0 4.188368 3.000868 0
- L3 0 0.052083 29.250868 1.500868 0 4.188368 1.500868 0
- L3 0 0.052083 29.250868 1.125868 0 29.250868 3.375868 0
- END
-STRUCTURE HO "Walthers New River Mining Co.- Stack Loading Building 933-3017B"
- L3 0 0.052083 4.526042 2.463542 0 4.526042 2.463542 0
- L3 0 0.052083 4.526042 2.463542 0 4.526042 2.463542 0
- L3 0 0.052083 4.526042 2.463542 0 4.526042 2.463542 0
- L3 0 0.052083 4.526042 2.463542 0 4.526042 2.463542 0
- F3 16755285 0.000000 4
- 0.026042 0.026042 0
- 7.026042 0.026042 0
- 7.026042 2.776042 0
- 0.026042 2.776042 0
- L3 0 0.052083 0.026042 0.026042 0 7.026042 0.026042 0
- L3 0 0.052083 7.026042 0.026042 0 7.026042 2.776042 0
- L3 0 0.052083 7.026042 2.776042 0 0.026042 2.776042 0
- L3 0 0.052083 0.026042 2.776042 0 0.026042 0.026042 0
- L3 0 0.052083 0.026042 1.401042 0 7.026042 1.401042 0
- END
-STRUCTURE HO "Walthers New River Mining Co.- Tripple Building 933-3017A"
- F3 16755285 0.000000 4
- 0.026042 0.026042 0
- 7.526042 0.026042 0
- 7.526042 5.026042 0
- 0.026042 5.026042 0
- F3 16755285 0.000000 4
- 7.526042 3.026042 0
- 12.526042 3.026042 0
- 12.526042 5.026042 0
- 7.526042 5.026042 0
- L3 0 0.052083 7.526042 3.026042 0 12.526042 3.026042 0
- L3 0 0.052083 12.526042 5.026042 0 7.526042 5.026042 0
- L3 0 0.052083 10.026042 3.026042 0 10.026042 5.026042 0
- F3 16755285 0.000000 4
- 7.526042 9.026042 0
- 12.526042 9.026042 0
- 12.526042 7.526042 0
- 7.526042 7.526042 0
- F3 16755285 0.000000 4
- 0.026042 7.526042 0
- 12.526042 7.526042 0
- 12.526042 5.026042 0
- 0.026042 5.026042 0
- L3 0 0.052083 0.026042 0.026042 0 7.526042 0.026042 0
- L3 0 0.052083 7.526042 0.026042 0 7.526042 7.526042 0
- L3 0 0.052083 7.526042 7.526042 0 0.026042 7.526042 0
- L3 0 0.052083 0.026042 7.526042 0 0.026042 0.026042 0
- L3 0 0.052083 12.401042 9.401042 0 12.401042 9.401042 0
- L3 0 0.052083 12.401042 9.401042 0 12.401042 9.401042 0
- L3 0 0.052083 12.401042 9.401042 0 12.401042 9.401042 0
- L3 0 0.052083 12.401042 9.401042 0 12.401042 9.401042 0
- L3 0 0.052083 12.526042 9.026042 0 7.526042 9.026042 0
- L3 0 0.052083 7.526042 9.026042 0 7.526042 3.026042 0
- L3 0 0.052083 12.526042 3.026042 0 12.526042 9.026042 0
- L3 0 0.052083 0.026042 7.526042 0 2.526042 7.526042 0
- L3 0 0.052083 2.526042 7.526042 0 2.526042 5.026042 0
- L3 0 0.052083 2.526042 5.026042 0 0.026042 5.026042 0
- L3 0 0.052083 0.026042 5.026042 0 0.026042 7.526042 0
- L3 0 0.052083 2.526042 7.526042 0 7.526042 7.526042 0
- L3 0 0.052083 7.526042 7.526042 0 7.526042 5.026042 0
- L3 0 0.052083 7.526042 5.026042 0 2.526042 5.026042 0
- L3 0 0.052083 2.526042 5.026042 0 2.526042 7.526042 0
- L3 0 0.052083 7.526042 7.526042 0 12.526042 7.526042 0
- L3 0 0.052083 12.526042 7.526042 0 12.526042 5.026042 0
- L3 0 0.052083 7.526042 5.026042 0 7.526042 7.526042 0
- L3 0 0.052083 0.026042 6.276042 0 12.526042 6.276042 0
- L3 0 0.104167 3.151042 3.651042 0 3.151042 3.651042 0
- L3 0 0.052083 3.776042 0.026042 0 3.776042 5.026042 0
- L3 8421504 0.010417 0.026042 4.526042 0 3.776042 4.526042 0
- L3 8421504 0.010417 0.026042 4.026042 0 3.776042 4.026042 0
- L3 8421504 0.010417 0.026042 3.526042 0 3.776042 3.526042 0
- L3 8421504 0.010417 0.026042 3.026042 0 3.776042 3.026042 0
- L3 8421504 0.010417 0.026042 2.526042 0 3.776042 2.526042 0
- L3 8421504 0.010417 0.026042 2.026042 0 3.776042 2.026042 0
- L3 8421504 0.010417 0.026042 1.526042 0 3.776042 1.526042 0
- L3 8421504 0.010417 0.026042 1.026042 0 3.776042 1.026042 0
- L3 8421504 0.010417 0.026042 0.526042 0 3.776042 0.526042 0
- L3 8421504 0.010417 3.776042 4.526042 0 7.526042 4.526042 0
- L3 8421504 0.010417 3.776042 4.026042 0 7.526042 4.026042 0
- L3 8421504 0.010417 3.776042 3.526042 0 7.526042 3.526042 0
- L3 8421504 0.010417 3.776042 3.026042 0 7.526042 3.026042 0
- L3 8421504 0.010417 3.776042 2.526042 0 7.526042 2.526042 0
- L3 8421504 0.010417 3.776042 2.026042 0 7.526042 2.026042 0
- L3 8421504 0.010417 3.776042 1.526042 0 7.526042 1.526042 0
- L3 8421504 0.010417 3.776042 1.026042 0 7.526042 1.026042 0
- L3 8421504 0.010417 3.776042 0.526042 0 7.526042 0.526042 0
- L3 8421504 0.010417 0.276042 6.276042 0 0.276042 5.026042 0
- L3 8421504 0.010417 0.526042 6.276042 0 0.526042 5.026042 0
- L3 8421504 0.010417 0.776042 6.276042 0 0.776042 5.088542 0
- L3 8421504 0.010417 1.026042 6.276042 0 1.026042 5.026042 0
- L3 8421504 0.010417 1.276042 6.276042 0 1.276042 5.088542 0
- L3 8421504 0.010417 1.526042 6.276042 0 1.526042 5.088542 0
- L3 8421504 0.010417 1.776042 6.276042 0 1.776042 5.026042 0
- L3 8421504 0.010417 2.026042 6.276042 0 2.026042 5.026042 0
- L3 8421504 0.010417 2.276042 6.276042 0 2.276042 5.026042 0
- L3 8421504 0.010417 0.276042 6.276042 0 0.276042 7.526042 0
- L3 8421504 0.010417 0.526042 6.276042 0 0.526042 7.526042 0
- L3 8421504 0.010417 0.776042 6.276042 0 0.776042 7.526042 0
- L3 8421504 0.010417 1.026042 6.276042 0 1.026042 7.526042 0
- L3 8421504 0.010417 1.276042 6.276042 0 1.276042 7.526042 0
- L3 8421504 0.010417 1.526042 6.276042 0 1.526042 7.526042 0
- L3 8421504 0.010417 1.776042 6.276042 0 1.776042 7.526042 0
- L3 8421504 0.010417 2.026042 6.276042 0 2.026042 7.526042 0
- L3 8421504 0.010417 2.276042 6.276042 0 2.276042 7.526042 0
- L3 8421504 0.010417 2.765625 6.260417 0 2.765625 7.510417 0
- L3 8421504 0.010417 3.015625 6.260417 0 3.015625 7.510417 0
- L3 8421504 0.010417 3.265625 6.260417 0 3.265625 7.510417 0
- L3 8421504 0.010417 3.515625 6.260417 0 3.515625 7.510417 0
- L3 8421504 0.010417 3.765625 6.260417 0 3.765625 7.510417 0
- L3 8421504 0.010417 4.015625 6.260417 0 4.015625 7.510417 0
- L3 8421504 0.010417 4.265625 6.260417 0 4.265625 7.510417 0
- L3 8421504 0.010417 4.515625 6.260417 0 4.515625 7.510417 0
- L3 8421504 0.010417 4.765625 6.260417 0 4.765625 7.510417 0
- L3 8421504 0.010417 4.968750 6.307292 0 4.968750 7.557292 0
- L3 8421504 0.010417 5.218750 6.307292 0 5.218750 7.557292 0
- L3 8421504 0.010417 5.468750 6.307292 0 5.468750 7.557292 0
- L3 8421504 0.010417 5.718750 6.307292 0 5.718750 7.557292 0
- L3 8421504 0.010417 5.968750 6.307292 0 5.968750 7.557292 0
- L3 8421504 0.010417 6.218750 6.307292 0 6.218750 7.557292 0
- L3 8421504 0.010417 6.468750 6.307292 0 6.468750 7.557292 0
- L3 8421504 0.010417 6.718750 6.307292 0 6.718750 7.557292 0
- L3 8421504 0.010417 6.968750 6.307292 0 6.968750 7.557292 0
- L3 8421504 0.010417 2.750000 5.041667 0 2.750000 6.291667 0
- L3 8421504 0.010417 3.000000 5.041667 0 3.000000 6.291667 0
- L3 8421504 0.010417 3.250000 5.041667 0 3.250000 6.291667 0
- L3 8421504 0.010417 3.500000 5.041667 0 3.500000 6.291667 0
- L3 8421504 0.010417 3.750000 5.041667 0 3.750000 6.291667 0
- L3 8421504 0.010417 4.000000 5.041667 0 4.000000 6.291667 0
- L3 8421504 0.010417 4.250000 5.041667 0 4.250000 6.291667 0
- L3 8421504 0.010417 4.500000 5.041667 0 4.500000 6.291667 0
- L3 8421504 0.010417 4.750000 5.041667 0 4.750000 6.291667 0
- L3 8421504 0.010417 4.984375 5.041667 0 4.984375 6.291667 0
- L3 8421504 0.010417 5.234375 5.041667 0 5.234375 6.291667 0
- L3 8421504 0.010417 5.484375 5.041667 0 5.484375 6.291667 0
- L3 8421504 0.010417 5.734375 5.041667 0 5.734375 6.291667 0
- L3 8421504 0.010417 5.984375 5.041667 0 5.984375 6.291667 0
- L3 8421504 0.010417 6.234375 5.041667 0 6.234375 6.291667 0
- L3 8421504 0.010417 6.484375 5.041667 0 6.484375 6.291667 0
- L3 8421504 0.010417 6.734375 5.041667 0 6.734375 6.291667 0
- L3 8421504 0.010417 6.984375 5.041667 0 6.984375 6.291667 0
- L3 8421504 0.010417 7.781250 6.276042 0 7.781250 7.526042 0
- L3 8421504 0.010417 8.031250 6.276042 0 8.031250 7.526042 0
- L3 8421504 0.010417 8.281250 6.276042 0 8.281250 7.526042 0
- L3 8421504 0.010417 8.531250 6.276042 0 8.531250 7.526042 0
- L3 8421504 0.010417 8.781250 6.276042 0 8.781250 7.526042 0
- L3 8421504 0.010417 9.031250 6.276042 0 9.031250 7.526042 0
- L3 8421504 0.010417 9.281250 6.276042 0 9.281250 7.526042 0
- L3 8421504 0.010417 9.531250 6.276042 0 9.531250 7.526042 0
- L3 8421504 0.010417 9.781250 6.276042 0 9.781250 7.526042 0
- L3 8421504 0.010417 10.031250 6.291667 0 10.031250 7.541667 0
- L3 8421504 0.010417 10.281250 6.291667 0 10.281250 7.541667 0
- L3 8421504 0.010417 10.531250 6.291667 0 10.531250 7.541667 0
- L3 8421504 0.010417 10.781250 6.291667 0 10.781250 7.541667 0
- L3 8421504 0.010417 11.031250 6.291667 0 11.031250 7.541667 0
- L3 8421504 0.010417 11.281250 6.291667 0 11.281250 7.541667 0
- L3 8421504 0.010417 11.531250 6.291667 0 11.531250 7.541667 0
- L3 8421504 0.010417 11.781250 6.291667 0 11.781250 7.541667 0
- L3 8421504 0.010417 12.031250 6.291667 0 12.031250 7.541667 0
- L3 8421504 0.010417 7.796875 5.026042 0 7.796875 6.276042 0
- L3 8421504 0.010417 8.046875 5.026042 0 8.046875 6.276042 0
- L3 8421504 0.010417 8.296875 5.026042 0 8.296875 6.276042 0
- L3 8421504 0.010417 8.546875 5.026042 0 8.546875 6.276042 0
- L3 8421504 0.010417 8.796875 5.026042 0 8.796875 6.276042 0
- L3 8421504 0.010417 9.046875 5.026042 0 9.046875 6.276042 0
- L3 8421504 0.010417 9.296875 5.026042 0 9.296875 6.276042 0
- L3 8421504 0.010417 9.546875 5.026042 0 9.546875 6.276042 0
- L3 8421504 0.010417 9.796875 5.026042 0 9.796875 6.276042 0
- L3 8421504 0.010417 10.046875 5.026042 0 10.046875 6.276042 0
- L3 8421504 0.010417 10.296875 5.026042 0 10.296875 6.276042 0
- L3 8421504 0.010417 10.546875 5.026042 0 10.546875 6.276042 0
- L3 8421504 0.010417 10.796875 5.026042 0 10.796875 6.276042 0
- L3 8421504 0.010417 11.046875 5.026042 0 11.046875 6.276042 0
- L3 8421504 0.010417 11.296875 5.026042 0 11.296875 6.276042 0
- L3 8421504 0.010417 11.546875 5.026042 0 11.546875 6.276042 0
- L3 8421504 0.010417 11.796875 5.026042 0 11.796875 6.276042 0
- L3 8421504 0.010417 12.046875 5.026042 0 12.046875 6.276042 0
- L3 8421504 0.010417 7.276042 7.526042 0 7.276042 6.276042 0
- L3 8421504 0.010417 7.276042 6.276042 0 7.276042 5.026042 0
- L3 8421504 0.010417 12.276042 7.526042 0 12.276042 6.276042 0
- L3 8421504 0.010417 12.276042 6.276042 0 12.276042 5.026042 0
- END
-STRUCTURE HO "Walthers Diamond Coal Corp. 933-4046"
- F3 14737632 0.000000 5
- 8.650265 6.265639 0
- 0.150265 6.265651 0
- 0.025264 5.765651 0
- 0.150263 5.265651 0
- 8.650263 5.265639 0
- F3 14737632 0.000000 4
- 8.650258 1.140639 0
- 8.650260 2.765639 0
- 11.650260 2.765635 0
- 11.650258 1.140635 0
- F3 14737632 0.000000 4
- 8.650260 2.765639 0
- 8.650268 8.765639 0
- 19.400268 8.765625 0
- 19.400260 2.765625 0
- F3 14737632 0.000000 4
- 13.400268 8.765633 0
- 13.400274 13.390633 0
- 19.400274 13.390625 0
- 19.400268 8.765625 0
- F3 15720651 0.000000 4
- 11.650260 2.390635 0
- 11.650260 2.765635 0
- 19.275260 2.765625 0
- 19.275260 2.390625 0
- F3 15720651 0.000000 4
- 18.900260 2.390626 0
- 18.900257 0.140626 0
- 19.275257 0.140625 0
- 19.275260 2.390625 0
- F3 15720651 0.000000 4
- 13.275260 2.390633 0
- 13.275258 0.890633 0
- 13.650258 0.890633 0
- 13.650260 2.390633 0
- L3 0 0.031250 13.400275 14.015633 0 13.400278 16.515633 0
- L3 0 0.031250 13.400278 16.515633 0 10.900278 16.515636 0
- L3 0 0.031250 10.900278 16.515636 0 10.900275 14.015636 0
- L3 0 0.031250 10.900275 14.015636 0 13.400275 14.015633 0
- A3 0 0.052083 1.125000 12.150277 15.265635 0 270.000000 360.000000
- F3 14737632 0.000000 4
- 11.150275 14.265636 0
- 11.150278 16.265636 0
- 12.900278 16.265634 0
- 12.900275 14.265634 0
- F3 14737632 0.000000 4
- 11.900268 8.765635 0
- 11.900275 14.265635 0
- 12.650275 14.265634 0
- 12.650268 8.765634 0
- L3 0 0.052083 19.400274 13.390625 0 13.400274 13.390633 0
- L3 0 0.052083 13.400274 13.390633 0 13.400268 8.765633 0
- L3 0 0.052083 19.400274 13.390625 0 19.400268 8.765625 0
- L3 0 0.052083 8.650268 8.765639 0 8.650260 2.765639 0
- L3 0 0.052083 8.650260 2.765639 0 19.400260 2.765625 0
- L3 0 0.052083 19.400260 2.765625 0 19.400268 8.765625 0
- L3 8421504 0.020833 16.400274 13.390629 0 16.400268 8.765629 0
- L3 8421504 0.020833 19.400264 5.765625 0 8.650264 5.765639 0
- L3 0 0.052083 8.650260 2.765639 0 8.650258 1.140639 0
- L3 0 0.052083 8.650258 1.140639 0 11.650258 1.140627 0
- L3 0 0.052083 11.900268 8.765635 0 11.900268 14.265635 0
- L3 0 0.052083 11.900275 14.265635 0 12.650275 14.265634 0
- L3 0 0.052083 12.650268 14.265634 0 12.650268 8.765634 0
- L3 0 0.052083 13.275274 13.390633 0 13.275274 13.390633 0
- L3 8421504 0.010417 17.900275 13.640627 0 17.900275 14.640627 0
- L3 8421504 0.010417 14.900275 13.640631 0 14.900276 14.640631 0
- L3 0 0.052083 12.900275 14.265634 0 12.900278 16.265634 0
- L3 0 0.052083 12.900278 16.265634 0 11.150278 16.265636 0
- L3 0 0.052083 11.150278 16.265636 0 11.150275 14.265636 0
- L3 0 0.052083 11.150275 14.265636 0 12.900275 14.265634 0
- L3 8421504 0.020833 12.275268 8.765634 0 12.275275 14.265634 0
- L3 8421504 0.020833 12.025275 14.265635 0 12.025278 16.265635 0
- F3 14737632 0.000000 4
- 8.650268 8.765639 0
- 8.650270 10.390639 0
- 11.650270 10.390635 0
- 11.650268 8.765635 0
- L3 0 0.052083 8.650268 8.765639 0 8.650270 10.390639 0
- L3 0 0.052083 8.650270 10.390639 0 11.650270 10.390635 0
- L3 0 0.052083 11.650270 10.390635 0 11.650268 8.765635 0
- L3 8421504 0.020833 11.400268 8.890636 0 11.400270 10.265636 0
- L3 8421504 0.020833 11.150268 8.890636 0 11.150270 10.265636 0
- L3 8421504 0.020833 10.900268 8.890636 0 10.900270 10.265636 0
- L3 8421504 0.020833 10.650268 8.890637 0 10.650270 10.265637 0
- L3 8421504 0.020833 10.400268 8.890637 0 10.400270 10.265637 0
- L3 8421504 0.020833 10.150270 10.265637 0 10.150268 8.890637 0
- L3 8421504 0.020833 9.900270 10.265638 0 9.900268 8.890638 0
- L3 8421504 0.020833 9.775270 10.265638 0 9.775270 10.265638 0
- L3 8421504 0.020833 9.650270 10.265638 0 9.650268 8.890638 0
- L3 8421504 0.020833 9.400270 10.265638 0 9.400268 8.890638 0
- L3 8421504 0.020833 9.150268 8.890639 0 9.150270 10.265639 0
- L3 8421504 0.020833 8.900268 8.890639 0 8.900270 10.265639 0
- L3 8421504 0.020833 11.275276 14.515636 0 11.900276 14.515635 0
- L3 8421504 0.020833 11.900276 14.765635 0 11.275276 14.765636 0
- L3 8421504 0.020833 11.275276 15.015636 0 11.900276 15.015635 0
- L3 8421504 0.020833 11.275277 15.265636 0 11.900277 15.265635 0
- L3 8421504 0.020833 11.275277 15.515636 0 11.900277 15.515635 0
- L3 8421504 0.020833 11.275277 15.765636 0 11.900277 15.765635 0
- L3 8421504 0.020833 11.275278 16.015636 0 11.900278 16.015635 0
- L3 8421504 0.020833 12.150278 16.015635 0 12.775278 16.015634 0
- L3 8421504 0.020833 12.150277 15.765635 0 12.775277 15.765634 0
- L3 8421504 0.020833 12.150277 15.515635 0 12.775277 15.515634 0
- L3 8421504 0.020833 12.150277 15.265635 0 12.775277 15.265634 0
- L3 8421504 0.020833 12.150276 15.015635 0 12.775276 15.015634 0
- L3 8421504 0.020833 12.150276 14.765635 0 12.775276 14.765634 0
- L3 8421504 0.020833 12.150276 14.515635 0 12.775276 14.515634 0
- L3 8421504 0.020833 12.150276 14.390635 0 12.150276 14.390635 0
- L3 8421504 0.020833 12.150275 14.140635 0 12.025275 14.140635 0
- L3 8421504 0.020833 12.150275 13.890635 0 12.025275 13.890635 0
- L3 8421504 0.020833 12.150275 13.640635 0 12.025275 13.640635 0
- L3 8421504 0.020833 12.150274 13.390635 0 12.025274 13.390635 0
- L3 8421504 0.020833 12.150274 13.140635 0 12.025274 13.140635 0
- L3 8421504 0.020833 12.150274 12.890635 0 12.025274 12.890635 0
- L3 8421504 0.020833 12.150273 12.640635 0 12.025273 12.640635 0
- L3 8421504 0.020833 12.150273 12.390635 0 12.025273 12.390635 0
- L3 8421504 0.020833 12.150273 12.140635 0 12.025273 12.140635 0
- L3 8421504 0.020833 12.150272 11.890635 0 12.025272 11.890635 0
- L3 8421504 0.020833 12.150272 11.640635 0 12.025272 11.640635 0
- L3 8421504 0.020833 12.150272 11.390635 0 12.025272 11.390635 0
- L3 8421504 0.020833 12.150271 11.140635 0 12.025271 11.140635 0
- L3 8421504 0.020833 12.150271 10.890635 0 12.025271 10.890635 0
- L3 8421504 0.020833 12.150271 10.640635 0 12.025271 10.640635 0
- L3 8421504 0.020833 12.150270 10.390635 0 12.025270 10.390635 0
- L3 8421504 0.020833 12.150270 10.140635 0 12.025270 10.140635 0
- L3 8421504 0.020833 12.150270 9.890635 0 12.025270 9.890635 0
- L3 8421504 0.020833 12.150269 9.640635 0 12.025269 9.640635 0
- L3 8421504 0.020833 12.150269 9.390635 0 12.025269 9.390635 0
- L3 8421504 0.020833 12.150269 9.140635 0 12.025269 9.140635 0
- L3 8421504 0.020833 12.150268 8.890635 0 12.025268 8.890635 0
- L3 8421504 0.020833 12.400268 8.890634 0 12.525268 8.890634 0
- L3 8421504 0.020833 12.400269 9.140634 0 12.525269 9.140634 0
- L3 8421504 0.020833 12.400269 9.390634 0 12.525269 9.390634 0
- L3 8421504 0.020833 12.400269 9.640634 0 12.525269 9.640634 0
- L3 8421504 0.020833 12.400270 9.890634 0 12.525270 9.890634 0
- L3 8421504 0.020833 12.400270 10.140634 0 12.525270 10.140634 0
- L3 8421504 0.020833 12.400270 10.390634 0 12.525270 10.390634 0
- L3 8421504 0.020833 12.400271 10.640634 0 12.525271 10.640634 0
- L3 8421504 0.020833 12.400271 10.890634 0 12.525271 10.890634 0
- L3 8421504 0.020833 12.400271 11.140634 0 12.525271 11.140634 0
- L3 8421504 0.020833 12.400272 11.390634 0 12.525272 11.390634 0
- L3 8421504 0.020833 12.400272 11.640634 0 12.525272 11.640634 0
- L3 8421504 0.020833 12.400272 11.890634 0 12.525272 11.890634 0
- L3 8421504 0.020833 12.400273 12.140634 0 12.525273 12.140634 0
- L3 8421504 0.020833 12.400273 12.390634 0 12.525273 12.390634 0
- L3 8421504 0.020833 12.400273 12.640634 0 12.525273 12.640634 0
- L3 8421504 0.020833 12.400274 12.890634 0 12.525274 12.890634 0
- L3 8421504 0.020833 12.400274 13.140634 0 12.525274 13.140634 0
- L3 8421504 0.020833 12.400274 13.390634 0 12.525274 13.390634 0
- L3 8421504 0.020833 12.400275 13.640634 0 12.525275 13.640634 0
- L3 8421504 0.020833 12.400275 13.890634 0 12.525275 13.890634 0
- L3 8421504 0.020833 12.400275 14.140634 0 12.525275 14.140634 0
- L3 8421504 0.020833 8.900258 1.265639 0 8.900260 2.640639 0
- L3 8421504 0.020833 9.150258 1.265639 0 9.150260 2.640639 0
- L3 8421504 0.020833 9.400258 1.265638 0 9.400260 2.640638 0
- L3 8421504 0.020833 9.650258 1.265638 0 9.650260 2.640638 0
- L3 8421504 0.020833 9.900258 1.265638 0 9.900260 2.640638 0
- L3 8421504 0.020833 10.150258 1.265637 0 10.150260 2.640637 0
- L3 8421504 0.020833 10.400258 1.265637 0 10.400260 2.640637 0
- L3 8421504 0.020833 10.650258 1.265637 0 10.650260 2.640637 0
- L3 8421504 0.020833 10.900258 1.265636 0 10.900260 2.640636 0
- L3 8421504 0.020833 11.150258 1.265636 0 11.150260 2.640636 0
- L3 8421504 0.020833 11.400258 1.265636 0 11.400260 2.390636 0
- L3 8421504 0.020833 11.400260 2.390636 0 11.400260 2.640636 0
- L3 0 0.052083 19.400268 8.765625 0 8.650268 8.765639 0
- L3 8421504 0.020833 16.275274 13.140629 0 13.525274 13.140633 0
- L3 8421504 0.020833 16.275274 12.890629 0 13.525274 12.890633 0
- L3 8421504 0.020833 16.275273 12.640629 0 13.525273 12.640633 0
- L3 8421504 0.020833 16.275273 12.390629 0 13.525273 12.390633 0
- L3 8421504 0.020833 16.275273 12.140629 0 13.525273 12.140633 0
- L3 8421504 0.020833 16.275272 11.890629 0 13.525272 11.890633 0
- L3 8421504 0.020833 16.275272 11.640629 0 13.525272 11.640633 0
- L3 8421504 0.020833 16.275272 11.390629 0 13.525272 11.390633 0
- L3 8421504 0.020833 16.275271 11.140629 0 13.525271 11.140633 0
- L3 8421504 0.020833 16.275271 10.890629 0 13.525271 10.890633 0
- L3 8421504 0.020833 16.275271 10.640629 0 13.525271 10.640633 0
- L3 8421504 0.020833 16.275270 10.390629 0 13.525270 10.390633 0
- L3 8421504 0.020833 16.275270 10.140629 0 13.525270 10.140633 0
- L3 8421504 0.020833 16.275270 9.890629 0 13.525270 9.890633 0
- L3 8421504 0.020833 16.275269 9.640629 0 13.525269 9.640633 0
- L3 8421504 0.020833 16.275269 9.390629 0 13.525269 9.390633 0
- L3 8421504 0.020833 16.275269 9.140629 0 13.525269 9.140633 0
- L3 8421504 0.020833 16.275268 8.890629 0 13.525268 8.890633 0
- L3 8421504 0.020833 16.525268 8.890629 0 19.275268 8.890625 0
- L3 8421504 0.020833 16.525269 9.140629 0 19.275269 9.140625 0
- L3 8421504 0.020833 19.275269 9.390625 0 16.525269 9.390629 0
- L3 8421504 0.020833 16.525269 9.640629 0 19.275269 9.640625 0
- L3 8421504 0.020833 16.525270 9.890629 0 19.275270 9.890625 0
- L3 8421504 0.020833 16.525270 10.140629 0 19.275270 10.140625 0
- L3 8421504 0.020833 16.525270 10.390629 0 19.275270 10.390625 0
- L3 8421504 0.020833 16.525271 10.640629 0 19.275271 10.640625 0
- L3 8421504 0.020833 16.525271 10.890629 0 19.275271 10.890625 0
- L3 8421504 0.020833 16.525271 11.140629 0 19.275271 11.140625 0
- L3 8421504 0.020833 16.525272 11.390629 0 19.275272 11.390625 0
- L3 8421504 0.020833 16.525272 11.640629 0 19.275272 11.640625 0
- L3 8421504 0.020833 19.275272 11.640625 0 19.275272 11.640625 0
- L3 8421504 0.020833 19.275272 11.890625 0 16.525272 11.890629 0
- L3 8421504 0.020833 16.525273 12.140629 0 19.275273 12.140625 0
- L3 8421504 0.020833 19.275273 12.390625 0 16.525273 12.390629 0
- L3 8421504 0.020833 19.275273 12.640625 0 16.525273 12.640629 0
- L3 8421504 0.020833 16.525274 12.890629 0 19.275274 12.890625 0
- L3 8421504 0.020833 19.275274 13.140625 0 16.525274 13.140629 0
- L3 8421504 0.020833 8.900264 5.640639 0 8.900260 2.890639 0
- L3 8421504 0.020833 9.150264 5.640639 0 9.150260 2.890639 0
- L3 8421504 0.020833 9.400260 2.890638 0 9.400264 5.640638 0
- L3 8421504 0.020833 9.650264 5.640638 0 9.650260 2.890638 0
- L3 8421504 0.020833 9.900260 2.890638 0 9.900264 5.640638 0
- L3 8421504 0.020833 9.900264 5.890638 0 9.900268 8.640638 0
- L3 8421504 0.020833 9.650264 5.890638 0 9.650268 8.640638 0
- L3 8421504 0.020833 9.400264 5.890638 0 9.400268 8.640638 0
- L3 8421504 0.020833 9.150264 5.890639 0 9.150268 8.640639 0
- L3 8421504 0.020833 8.900264 5.890639 0 8.900268 8.640639 0
- L3 8421504 0.020833 10.150268 8.640637 0 10.150264 5.890637 0
- L3 8421504 0.020833 10.150264 5.640637 0 10.150260 2.890637 0
- L3 8421504 0.020833 10.400268 8.640637 0 10.400264 5.890637 0
- L3 8421504 0.020833 10.400264 5.640637 0 10.400260 2.890637 0
- L3 8421504 0.020833 10.650268 8.640637 0 10.650264 5.890637 0
- L3 8421504 0.020833 10.650264 5.640637 0 10.650260 2.890637 0
- L3 8421504 0.020833 10.900268 8.640636 0 10.900264 5.890636 0
- L3 8421504 0.020833 10.900264 5.640636 0 10.900260 2.890636 0
- L3 8421504 0.020833 11.150260 2.890636 0 11.150264 5.640636 0
- L3 8421504 0.020833 11.150264 5.890636 0 11.150268 8.640636 0
- L3 8421504 0.020833 11.400268 8.640636 0 11.400264 5.890636 0
- L3 8421504 0.020833 11.400264 5.640636 0 11.400260 2.890636 0
- L3 8421504 0.020833 11.650260 2.890635 0 11.650264 5.640635 0
- L3 8421504 0.020833 11.650264 5.890635 0 11.650268 8.640635 0
- L3 8421504 0.020833 11.900260 2.890635 0 11.900264 5.640635 0
- L3 8421504 0.020833 11.900264 5.890635 0 11.900268 8.640635 0
- L3 8421504 0.020833 12.150268 8.640635 0 12.150264 5.890635 0
- L3 8421504 0.020833 12.150264 5.640635 0 12.150260 2.890635 0
- L3 8421504 0.020833 12.400260 2.890634 0 12.400264 5.640634 0
- L3 8421504 0.020833 12.400264 5.890634 0 12.400268 8.640634 0
- L3 8421504 0.020833 12.650268 8.640634 0 12.650264 5.890634 0
- L3 8421504 0.020833 12.650264 5.640634 0 12.650260 2.890634 0
- L3 8421504 0.020833 12.900260 2.890634 0 12.900264 5.640634 0
- L3 8421504 0.020833 12.900264 5.890634 0 12.900268 8.640634 0
- L3 8421504 0.020833 13.150268 8.640633 0 13.150264 5.890633 0
- L3 8421504 0.020833 13.150264 5.640633 0 13.150260 2.890633 0
- L3 8421504 0.020833 13.400260 2.890633 0 13.400264 5.640633 0
- L3 8421504 0.020833 13.650268 8.640633 0 13.650264 5.890633 0
- L3 8421504 0.020833 13.400268 8.640633 0 13.400264 5.890633 0
- L3 8421504 0.020833 13.650264 5.640633 0 13.650260 2.890633 0
- L3 8421504 0.020833 13.900260 2.890632 0 13.900264 5.640632 0
- L3 8421504 0.020833 13.900264 5.890632 0 13.900268 8.640632 0
- L3 8421504 0.020833 14.150268 8.640632 0 14.150264 5.890632 0
- L3 8421504 0.020833 14.150264 5.640632 0 14.150260 2.890632 0
- L3 8421504 0.020833 14.400260 2.890632 0 14.400264 5.640632 0
- L3 8421504 0.020833 14.400264 5.890632 0 14.400268 8.640632 0
- L3 8421504 0.020833 14.650268 8.640631 0 14.650264 5.890631 0
- L3 8421504 0.020833 14.650264 5.640631 0 14.650260 2.890631 0
- L3 8421504 0.020833 14.900260 2.890631 0 14.900264 5.640631 0
- L3 8421504 0.020833 14.900264 5.890631 0 14.900268 8.640631 0
- L3 8421504 0.020833 15.150260 2.890631 0 15.150264 5.640631 0
- L3 8421504 0.020833 15.400264 5.640630 0 15.400260 2.890630 0
- L3 8421504 0.020833 15.650260 2.890630 0 15.650264 5.640630 0
- L3 8421504 0.020833 15.900264 5.640630 0 15.900260 2.890630 0
- L3 8421504 0.020833 16.150260 2.890629 0 16.150264 5.640629 0
- L3 8421504 0.020833 16.400264 5.640629 0 16.400260 2.890629 0
- L3 8421504 0.020833 16.400264 5.890629 0 16.400268 8.640629 0
- L3 8421504 0.020833 16.150268 8.640629 0 16.150264 5.890629 0
- L3 8421504 0.020833 15.900264 5.890630 0 15.900268 8.640630 0
- L3 8421504 0.020833 15.650268 8.640630 0 15.650264 5.890630 0
- L3 8421504 0.020833 15.400264 5.890630 0 15.400268 8.640630 0
- L3 8421504 0.020833 15.150268 8.640631 0 15.150264 5.890631 0
- L3 8421504 0.020833 16.650260 2.890629 0 16.650264 5.640629 0
- L3 8421504 0.020833 16.900264 5.640628 0 16.900260 2.890628 0
- L3 8421504 0.020833 17.150260 2.890628 0 17.150264 5.640628 0
- L3 8421504 0.020833 17.400264 5.640628 0 17.400260 2.890628 0
- L3 8421504 0.020833 17.650260 2.890627 0 17.650264 5.640627 0
- L3 8421504 0.020833 17.900264 5.640627 0 17.900260 2.890627 0
- L3 8421504 0.020833 18.150260 2.890627 0 18.150264 5.640627 0
- L3 8421504 0.020833 18.400264 5.640626 0 18.400260 2.890626 0
- L3 8421504 0.020833 18.650260 2.890626 0 18.650264 5.640626 0
- L3 8421504 0.020833 18.900264 5.640626 0 18.900260 2.890626 0
- L3 8421504 0.020833 19.150260 2.890625 0 19.150264 5.640625 0
- L3 8421504 0.020833 19.150264 5.890625 0 19.150268 8.640625 0
- L3 8421504 0.020833 18.900268 8.640626 0 18.900264 5.890626 0
- L3 8421504 0.020833 18.650264 5.890626 0 18.650268 8.640626 0
- L3 8421504 0.020833 18.400268 8.640626 0 18.400264 5.890626 0
- L3 8421504 0.020833 18.150264 5.890627 0 18.150268 8.640627 0
- L3 8421504 0.020833 17.900268 8.640627 0 17.900264 5.890627 0
- L3 8421504 0.020833 17.650264 5.890627 0 17.650268 8.640627 0
- L3 8421504 0.020833 17.400268 8.640628 0 17.400264 5.890628 0
- L3 8421504 0.020833 17.150264 5.890628 0 17.150268 8.640628 0
- L3 8421504 0.020833 16.900268 8.640628 0 16.900264 5.890628 0
- L3 8421504 0.020833 16.650264 5.890629 0 16.650268 8.640629 0
- L3 8421504 0.020833 16.775268 9.015628 0 16.775268 9.015628 0
- L3 0 0.031250 13.775260 2.390632 0 13.775258 0.765632 0
- L3 0 0.031250 13.775258 0.765632 0 13.150258 0.765633 0
- L3 0 0.031250 13.150258 0.765633 0 13.150258 1.140633 0
- L3 0 0.031250 13.150258 1.140633 0 11.650258 1.140635 0
- L3 0 0.031250 18.775257 0.015626 0 19.400257 0.015625 0
- L3 0 0.031250 19.400257 0.015625 0 19.400257 0.265625 0
- L3 0 0.031250 19.400257 0.265625 0 19.275257 0.265625 0
- L3 0 0.031250 18.900257 0.265626 0 18.775257 0.265626 0
- L3 0 0.031250 18.775257 0.265626 0 18.775257 0.015626 0
-
- L3 0 0.031250 19.275260 2.765625 0 19.275260 2.390625 0
- L3 0 0.031250 19.275260 2.390625 0 11.650260 2.390635 0
- L3 0 0.031250 19.275260 2.390625 0 19.275257 0.140625 0
- L3 0 0.031250 19.275257 0.140625 0 18.900257 0.140626 0
- L3 0 0.031250 18.900257 0.140626 0 18.900260 2.390626 0
- L3 0 0.031250 13.275260 2.390633 0 13.275258 0.890633 0
- L3 0 0.031250 13.275258 0.890633 0 13.650258 0.890633 0
- L3 0 0.031250 13.650258 0.890633 0 13.650260 2.390633 0
- L3 0 0.031250 13.650260 2.390633 0 13.650260 2.765633 0
- L3 0 0.031250 14.150260 2.765632 0 14.150260 2.390632 0
- L3 0 0.052083 11.650258 1.140635 0 11.650260 2.765635 0
- L3 8421504 0.020833 11.650260 2.640635 0 13.650260 2.640633 0
- L3 8421504 0.020833 13.650260 2.515633 0 11.650260 2.515635 0
- L3 8421504 0.020833 14.150260 2.515632 0 19.275260 2.515625 0
- L3 8421504 0.020833 19.275260 2.640625 0 14.150260 2.640632 0
- L3 8421504 0.020833 18.900259 2.265626 0 19.275259 2.265625 0
- L3 8421504 0.020833 18.900259 2.140626 0 19.275259 2.140625 0
- L3 8421504 0.020833 18.900259 2.015626 0 19.275259 2.015625 0
- L3 8421504 0.020833 18.900259 1.890626 0 19.275259 1.890625 0
- L3 8421504 0.020833 18.900259 1.765626 0 19.275259 1.765625 0
- L3 8421504 0.020833 18.900259 1.640626 0 19.275259 1.640625 0
- L3 8421504 0.020833 18.900258 1.515626 0 19.275258 1.515625 0
- L3 8421504 0.020833 18.900258 1.390626 0 19.275258 1.390625 0
- L3 8421504 0.020833 18.900258 1.265626 0 19.275258 1.265625 0
- L3 8421504 0.020833 18.900258 1.140626 0 19.275258 1.140625 0
- L3 8421504 0.020833 19.275258 1.015625 0 18.900258 1.015626 0
- L3 8421504 0.020833 18.900258 0.890626 0 19.275258 0.890625 0
- L3 8421504 0.020833 19.275258 0.765625 0 18.900258 0.765626 0
- L3 8421504 0.020833 18.900257 0.640626 0 19.275257 0.640625 0
- L3 8421504 0.020833 19.275257 0.515625 0 18.900257 0.515626 0
- L3 8421504 0.020833 18.900257 0.390626 0 19.275257 0.390625 0
- L3 8421504 0.020833 19.275257 0.265625 0 18.900257 0.265626 0
- L3 8421504 0.020833 13.275258 1.015633 0 13.650258 1.015633 0
- L3 8421504 0.020833 13.275258 1.140633 0 13.650258 1.140633 0
- L3 8421504 0.020833 13.275258 1.265633 0 13.650258 1.265633 0
- L3 8421504 0.020833 13.650258 1.390633 0 13.275258 1.390633 0
- L3 8421504 0.020833 13.275258 1.515633 0 13.650258 1.515633 0
- L3 8421504 0.020833 13.650259 1.640633 0 13.275259 1.640633 0
- L3 8421504 0.020833 13.275259 1.765633 0 13.650259 1.765633 0
- L3 8421504 0.020833 13.275259 1.890633 0 13.650259 1.890633 0
- L3 8421504 0.020833 13.275259 2.015633 0 13.650259 2.015633 0
- L3 8421504 0.020833 13.275259 2.140633 0 13.650259 2.140633 0
- L3 8421504 0.020833 13.275259 2.265633 0 13.650259 2.265633 0
- L3 8421504 0.020833 13.775260 2.390632 0 13.775260 2.765632 0
- L3 8421504 0.020833 13.900260 2.765632 0 13.900260 2.390632 0
- L3 8421504 0.020833 14.025260 2.390632 0 14.025260 2.765632 0
- L3 8421504 0.020833 8.650264 5.765639 0 0.025264 5.765651 0
- L3 0 0.052083 8.650263 5.265639 0 0.150263 5.265651 0
- L3 0 0.052083 0.150263 5.265651 0 0.025264 5.765651 0
- L3 0 0.052083 0.025264 5.765651 0 0.150265 6.265651 0
- L3 0 0.052083 0.150265 6.265651 0 8.650265 6.265639 0
- L3 0 0.052083 0.400263 5.265650 0 0.400263 4.765650 0
- L3 0 0.052083 0.400263 4.765650 0 0.650263 4.765650 0
- L3 0 0.052083 0.650263 4.765650 0 0.650263 5.265650 0
- L3 0 0.052083 0.400265 6.265650 0 0.400265 6.765650 0
- L3 0 0.052083 0.400265 6.765650 0 0.650265 6.765650 0
- L3 0 0.052083 0.650265 6.765650 0 0.650265 6.265650 0
- L3 8421504 0.020833 0.275264 5.390650 0 0.275264 5.640650 0
- L3 8421504 0.020833 0.525264 5.640650 0 0.525264 5.390650 0
- L3 8421504 0.020833 0.775264 5.390650 0 0.775264 5.640650 0
- L3 8421504 0.020833 1.025264 5.640649 0 1.025264 5.390649 0
- L3 8421504 0.020833 1.275264 5.390649 0 1.275264 5.640649 0
- L3 8421504 0.020833 1.525264 5.640649 0 1.525264 5.390649 0
- L3 8421504 0.020833 1.775264 5.390648 0 1.775264 5.640648 0
- L3 8421504 0.020833 2.025264 5.640648 0 2.025264 5.390648 0
- L3 8421504 0.020833 2.275264 5.390648 0 2.275264 5.640648 0
- L3 8421504 0.020833 2.525264 5.640647 0 2.525264 5.390647 0
- L3 8421504 0.020833 2.775264 5.390647 0 2.775264 5.640647 0
- L3 8421504 0.020833 3.025264 5.640647 0 3.025264 5.390647 0
- L3 8421504 0.020833 3.275264 5.390646 0 3.275264 5.640646 0
- L3 8421504 0.020833 3.525264 5.640646 0 3.525264 5.390646 0
- L3 8421504 0.020833 3.775264 5.390646 0 3.775264 5.640646 0
- L3 8421504 0.020833 4.025264 5.640645 0 4.025264 5.390645 0
- L3 8421504 0.020833 4.275264 5.390645 0 4.275264 5.640645 0
- L3 8421504 0.020833 4.525264 5.640645 0 4.525264 5.390645 0
- L3 8421504 0.020833 4.775264 5.390644 0 4.775264 5.640644 0
- L3 8421504 0.020833 5.025264 5.640644 0 5.025264 5.390644 0
- L3 8421504 0.020833 5.275264 5.390644 0 5.275264 5.640644 0
- L3 8421504 0.020833 5.525264 5.640643 0 5.525264 5.390643 0
- L3 8421504 0.020833 5.775264 5.390643 0 5.775264 5.640643 0
- L3 8421504 0.020833 6.025264 5.640643 0 6.025264 5.390643 0
- L3 8421504 0.020833 6.275264 5.390642 0 6.275264 5.640642 0
- L3 8421504 0.020833 6.525264 5.640642 0 6.525264 5.390642 0
- L3 8421504 0.020833 6.775264 5.390642 0 6.775264 5.640642 0
- L3 8421504 0.020833 7.025264 5.640641 0 7.025264 5.390641 0
- L3 8421504 0.020833 7.275264 5.390641 0 7.275264 5.640641 0
- L3 8421504 0.020833 7.525264 5.640641 0 7.525264 5.390641 0
- L3 8421504 0.020833 7.775264 5.390640 0 7.775264 5.640640 0
- L3 8421504 0.020833 8.025264 5.640640 0 8.025264 5.390640 0
- L3 8421504 0.020833 8.275264 5.390640 0 8.275264 5.640640 0
- L3 8421504 0.020833 8.525264 5.640639 0 8.525264 5.390639 0
- L3 8421504 0.020833 8.525264 5.890639 0 8.525265 6.140639 0
- L3 8421504 0.020833 8.275265 6.140640 0 8.275264 5.890640 0
- L3 8421504 0.020833 8.025264 5.890640 0 8.025265 6.140640 0
- L3 8421504 0.020833 7.775265 6.140640 0 7.775264 5.890640 0
- L3 8421504 0.020833 7.525264 5.890641 0 7.525265 6.140641 0
- L3 8421504 0.020833 7.275265 6.140641 0 7.275264 5.890641 0
- L3 8421504 0.020833 7.025264 5.890641 0 7.025265 6.140641 0
- L3 8421504 0.020833 6.775265 6.140642 0 6.775264 5.890642 0
- L3 8421504 0.020833 6.525264 5.890642 0 6.525265 6.140642 0
- L3 8421504 0.020833 6.275265 6.140642 0 6.275264 5.890642 0
- L3 8421504 0.020833 6.025264 5.890643 0 6.025265 6.140643 0
- L3 8421504 0.020833 5.775265 6.140643 0 5.775264 5.890643 0
- L3 8421504 0.020833 5.525264 5.890643 0 5.525265 6.140643 0
- L3 8421504 0.020833 5.275265 6.140644 0 5.275264 5.890644 0
- L3 8421504 0.020833 5.025264 5.890644 0 5.025265 6.140644 0
- L3 8421504 0.020833 4.775264 5.890644 0 4.775265 6.140644 0
- L3 8421504 0.020833 4.525265 6.140645 0 4.525264 5.890645 0
- L3 8421504 0.020833 4.275264 5.890645 0 4.275265 6.140645 0
- L3 8421504 0.020833 4.025265 6.140645 0 4.025264 5.890645 0
- L3 8421504 0.020833 3.775264 5.890646 0 3.775265 6.140646 0
- L3 8421504 0.020833 3.525264 5.890646 0 3.525265 6.140646 0
- L3 8421504 0.020833 3.275265 6.140646 0 3.275264 5.890646 0
- L3 8421504 0.020833 3.025264 5.890647 0 3.025265 6.140647 0
- L3 8421504 0.020833 2.775265 6.140647 0 2.775264 5.890647 0
- L3 8421504 0.020833 2.525264 5.890647 0 2.525265 6.140647 0
- L3 8421504 0.020833 2.275265 6.140648 0 2.275264 5.890648 0
- L3 8421504 0.020833 2.025264 5.890648 0 2.025265 6.140648 0
- L3 8421504 0.020833 1.775265 6.140648 0 1.775264 5.890648 0
- L3 8421504 0.020833 1.525264 5.890649 0 1.525265 6.140649 0
- L3 8421504 0.020833 1.275265 6.140649 0 1.275264 5.890649 0
- L3 8421504 0.020833 1.025264 5.890649 0 1.025265 6.140649 0
- L3 8421504 0.020833 0.775265 6.140650 0 0.775264 5.890650 0
- L3 8421504 0.020833 0.525264 5.890650 0 0.525265 6.140650 0
- L3 8421504 0.020833 0.275265 6.140650 0 0.275264 5.890650 0
- L3 8421504 0.010417 14.900259 2.140631 0 14.900258 1.140631 0
- L3 8421504 0.010417 17.900259 2.140627 0 17.900258 1.140627 0
- END
-
-SUBCONTENTS Walthers Cornerstone HO Structures - Lumber Industries
-STRUCTURE HO "Walthers Sawmill powerhouse 933-3058a"
- L 0 0.000000 0.020833 0.041667 4.395833 0.041667
- L 0 0.000000 4.395833 0.041667 4.395833 4.208333
- L 0 0.000000 4.395833 4.208333 0.020833 4.208333
- L 0 0.000000 0.020833 4.208333 0.020833 0.041667
- L 0 0.000000 0.020833 2.083333 4.395833 2.083333
- A 0 0.000000 0.356000 3.895833 2.791667 0.000000 360.000000
- A 0 0.000000 0.343592 3.895833 1.250000 0.000000 360.000000
- END
-STRUCTURE HO "Walthers Sawmill main bldg 933-3058b"
- L 0 0.000000 0.041667 -0.041667 13.041667 -0.041667
- L 0 0.000000 13.041667 -0.041667 13.041667 11.958333
- L 0 0.000000 0.041667 11.958333 0.041667 -0.041667
- L 0 0.000000 3.958333 11.958333 3.958333 15.958333
- L 0 0.000000 0.041667 11.958333 0.041667 15.958333
- L 0 0.000000 3.958333 15.875000 0.041667 15.875000
- L 0 0.000000 3.958333 11.958333 13.041667 11.958333
- L 0 0.000000 0.041667 5.958333 13.041667 5.958333
- L 0 0.000000 1.125000 7.458333 11.708333 7.458333
- L 0 0.000000 11.708333 7.458333 11.708333 4.541667
- L 0 0.000000 11.708333 4.541667 1.125000 4.541667
- L 0 0.000000 1.125000 4.541667 1.125000 7.458333
- L 0 0.000000 3.958333 11.958333 2.041667 10.041667
- L 0 0.000000 0.041667 11.958333 1.958333 10.041667
- L 0 0.000000 1.958333 10.041667 1.958333 15.875000
- A 0 0.000000 1.900292 2.312500 -3.979167 0.000000 360.000000
- A 0 0.000000 0.471405 2.229167 -3.979167 0.000000 360.000000
- L 0 0.000000 2.145833 -2.812500 2.145833 0.687500
- L 0 0.000000 2.312500 -2.812500 2.312500 0.687500
- L 0 0.000000 13.062500 0.687500 24.645833 0.687500
- L 0 0.000000 24.645833 0.687500 24.645833 1.687500
- L 0 0.000000 24.645833 1.687500 13.062500 1.687500
- L 0 0.000000 13.062500 1.687500 13.062500 0.687500
- L 0 0.000000 14.062500 1.937500 14.062500 0.437500
- L 0 0.000000 15.145833 1.937500 15.145833 0.520833
- L 0 0.000000 16.229167 1.854167 16.229167 0.354167
- L 0 0.000000 17.729167 2.020833 17.729167 0.520833
- L 0 0.000000 19.062500 1.937500 19.062500 0.354167
- L 0 0.000000 20.395833 1.854167 20.395833 0.437500
- L 0 0.000000 21.979167 1.937500 21.979167 0.520833
- L 0 0.000000 23.062500 1.854167 23.062500 0.437500
- END
-STRUCTURE HO "Walthers Planing Mill 933-3059a"
- L 0 0.000000 0.041667 0.041667 6.041667 0.041667
- L 0 0.000000 6.041667 0.041667 6.041667 8.000000
- L 0 0.000000 6.041667 8.000000 0.041667 8.000000
- L 0 0.000000 0.041667 8.000000 0.041667 0.041667
- L 0 0.000000 7.500000 7.291667 9.458333 7.291667
- L 0 0.000000 9.458333 7.291667 9.458333 5.375000
- L 0 0.000000 9.458333 5.375000 7.500000 5.375000
- L 0 0.000000 7.500000 5.375000 7.500000 7.291667
- L 0 0.000000 5.291667 6.708333 8.333333 6.708333
- L 0 0.000000 5.333333 6.041667 8.291667 6.041667
- A 0 0.000000 0.372678 8.458333 6.375000 0.000000 360.000000
- A 0 0.000000 0.000000 5.291667 5.666667 0.000000 360.000000
- L 0 0.000000 5.291667 6.833333 5.291667 5.958333
- L 0 0.000000 5.291667 6.000000 5.041667 6.000000
- L 0 0.000000 3.000000 0.000000 3.000000 8.000000
- END
-STRUCTURE HO "Walthers Planing Mill Shed 933-3059b"
- L 0 0.000000 0.000000 0.000000 6.000000 0.000000
- L 0 0.000000 6.000000 0.000000 6.000000 9.750000
- L 0 0.000000 6.000000 9.750000 0.000000 9.750000
- L 0 0.000000 0.000000 9.750000 0.000000 0.000000
- L 0 0.000000 2.958333 -0.041667 2.958333 9.750000
- END
-STRUCTURE HO "Walthers Paper Mill Main Bldg 933-3060a"
- L 0 0.000000 0.041667 0.083333 20.958333 0.083333
- L 0 0.000000 20.958333 0.083333 20.958333 10.000000
- L 0 0.000000 20.958333 10.000000 0.041667 10.000000
- L 0 0.000000 0.041667 10.000000 0.041667 0.083333
- L 0 0.000000 20.875000 9.333333 21.041667 9.333333
- L 0 0.000000 21.041667 9.333333 21.041667 7.916667
- L 0 0.000000 21.041667 7.916667 20.875000 7.916667
- L 0 0.000000 20.875000 7.916667 20.875000 9.333333
- END
-STRUCTURE HO "Walthers Paper Mill Kraft Mill 933-3060b"
- L 0 0.000000 0.020833 -0.020833 12.020833 -0.020833
- L 0 0.000000 0.020833 7.979167 0.020833 -0.020833
- L 0 0.000000 0.020833 7.979167 8.354167 7.979167
- L 0 0.000000 12.020833 -0.020833 12.020833 4.937500
- L 0 0.000000 11.979167 4.937500 8.437500 4.937500
- L 0 0.000000 8.354167 7.979167 8.354167 4.979167
- END
-STRUCTURE HO "Walthers Sawmill outbldgs log debarker 933-3144a"
- L 0 0.000000 4.958333 4.833333 0.000000 4.833333
- L 0 0.000000 0.000000 4.833333 0.000000 0.083333
- L 0 0.000000 2.375000 0.083333 2.375000 2.833333
- L 0 0.000000 2.375000 0.083333 0.041667 0.083333
- L 0 0.000000 2.395833 2.833333 4.937500 2.833333
- L 0 0.000000 4.937500 4.812500 4.937500 2.854167
- L 0 0.000000 1.020833 0.062500 1.020833 4.812500
- END
-STRUCTURE HO "Walthers Sawmill outbldgs gondol loader 933-3144b"
- L 0 0.000000 0.020833 -0.062500 2.520833 -0.062500
- L 0 0.000000 2.520833 -0.062500 2.520833 3.645833
- L 0 0.000000 2.520833 3.645833 0.020833 3.645833
- L 0 0.000000 0.020833 3.645833 0.020833 -0.062500
- L 0 0.000000 0.020833 0.937500 2.520833 0.937500
- L 0 0.000000 1.729167 3.645833 2.479167 3.104167
- L 0 0.000000 2.479167 1.520833 1.895833 0.937500
- L 0 0.000000 0.520833 0.937500 0.062500 1.645833
- L 0 0.000000 0.645833 3.645833 0.062500 3.020833
- L 0 0.000000 0.645833 3.604167 0.645833 0.979167
- L 0 0.000000 1.729167 3.604167 1.729167 0.979167
- END
-STRUCTURE HO "Walthers Sawmill outbldgs truck loader 933-3144c"
- L 0 0.000000 0.020833 0.104167 4.770833 0.104167
- L 0 0.000000 4.770833 0.104167 4.770833 3.854167
- L 0 0.000000 4.770833 3.854167 0.020833 3.854167
- L 0 0.000000 0.020833 3.854167 0.020833 0.104167
- L 0 0.000000 0.020833 1.979167 4.770833 1.979167
- A 0 0.000000 0.515388 2.145833 1.979167 0.000000 360.000000
- L 0 0.000000 1.604167 1.479167 2.645833 1.479167
- L 0 0.000000 2.645833 1.479167 2.645833 2.479167
- L 0 0.000000 2.645833 2.479167 1.604167 2.479167
- L 0 0.000000 1.604167 2.479167 1.604167 1.479167
- L 0 0.000000 -0.020833 3.354167 4.770833 3.354167
- L 0 0.000000 0.020833 0.562500 4.770833 0.562500
- END
-STRUCTURE HO "Walthers Sawmill outbldgs wood chipper 933-3144d"
- L 0 0.000000 0.020833 -0.062500 2.270833 -0.062500
- L 0 0.000000 2.270833 -0.062500 2.270833 1.645833
- L 0 0.000000 2.270833 1.645833 0.020833 1.645833
- L 0 0.000000 0.020833 1.645833 0.020833 -0.062500
- L 0 0.000000 0.020833 0.812500 2.270833 0.812500
- L 0 0.000000 2.270833 1.020833 5.270833 1.020833
- L 0 0.000000 5.270833 1.020833 5.270833 0.562500
- L 0 0.000000 5.270833 0.562500 2.270833 0.562500
- L 0 0.000000 2.270833 0.562500 2.270833 1.020833
- END
-
-
-SUBCONTENTS Walthers Cornerstone HO Structures - City Businesses
-STRUCTURE HO "Walthers Bailey Saving & Loan 933-3031"
- L 16711935 0 0.000000 0.000000 0.000000 5.937500
- L 16711935 0 0.000000 5.937500 10.125000 5.937500
- L 16711935 0 10.125000 5.937500 10.125000 0.000000
- L 16711935 0 10.125000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Crown Paint & Hardware 933-3032"
- L 16711935 0 0.000000 0.000000 0.000000 4.125000
- L 16711935 0 0.000000 4.125000 7.625000 4.125000
- L 16711935 0 7.625000 4.125000 7.625000 0.000000
- L 16711935 0 7.625000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Neighborhood Food Mart 933-3033"
- L 16711935 0 0.000000 0.000000 0.000000 8.250000
- L 16711935 0 0.000000 8.250000 5.000000 8.250000
- L 16711935 0 5.000000 8.250000 5.000000 0.000000
- L 16711935 0 5.000000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Bill's Glass Shop 933-3002"
- L 16711935 0 0.000000 0.000000 0.000000 4.000000
- L 16711935 0 0.000000 4.000000 3.000000 4.000000
- L 16711935 0 3.000000 4.000000 3.000000 0.000000
- L 16711935 0 3.000000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Gemini Bldg 933-3001"
- L 16711935 0 0.000000 0.000000 0.000000 3.625000
- L 16711935 0 0.000000 3.625000 4.250000 3.625000
- L 16711935 0 4.250000 3.625000 4.250000 0.000000
- L 16711935 0 4.250000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Wallschlager Motors 933-3004"
- L 16711935 0 0.000000 0.000000 0.000000 5.000000
- L 16711935 0 0.000000 5.000000 5.250000 5.000000
- L 16711935 0 5.250000 5.000000 5.250000 0.000000
- L 16711935 0 5.250000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers White Tower Restaurant 933-3030"
- L 16711935 0 0.000000 0.000000 0.000000 3.000000
- L 16711935 0 0.000000 3.000000 4.625000 3.000000
- L 16711935 0 4.625000 3.000000 4.625000 0.000000
- L 16711935 0 4.625000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Adam's Rib Restaurant 933-3034"
- L 16711935 0 0.000000 0.000000 0.000000 3.000000
- L 16711935 0 0.000000 3.000000 5.500000 3.000000
- L 16711935 0 5.500000 3.000000 5.500000 0.000000
- L 16711935 0 5.500000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Western Ave Fire Station 933-3037"
- L 16711935 0 0.000000 0.000000 0.000000 6.750000
- L 16711935 0 0.000000 6.750000 4.250000 6.750000
- L 16711935 0 4.250000 6.750000 4.250000 0.000000
- L 16711935 0 4.250000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Main St, Merchant's Row 1 933-3028"
- L 16711935 0 0.000000 0.000000 0.000000 5.000000
- L 16711935 0 0.000000 5.000000 11.000000 5.000000
- L 16711935 0 11.000000 5.000000 11.000000 0.000000
- L 16711935 0 11.000000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Don's Shoe Store 933-3000"
- L 16711935 0 0.000000 0.000000 0.000000 3.500000
- L 16711935 0 0.000000 3.500000 2.500000 3.500000
- L 16711935 0 2.500000 3.500000 2.500000 0.000000
- L 16711935 0 2.500000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Interstate Fuel & Oil Gas Station 933-3035"
- L 16711935 0 0.000000 0.000000 0.000000 7.750000
- L 16711935 0 0.000000 7.750000 9.250000 7.750000
- L 16711935 0 9.250000 7.750000 9.250000 0.000000
- L 16711935 0 9.250000 0.000000 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Main St, Merchant's Row 2 933-3029"
- L 16711935 0 0.000000 0.000000 0.000000 5.000000
- L 16711935 0 0.000000 5.000000 10.000000 5.000000
- L 16711935 0 10.000000 5.000000 10.000000 0.000000
- L 16711935 0 10.000000 0.000000 0.000000 0.000000
- END
-
-
-SUBCONTENTS Walthers Cornerstone HO Structures - Engine Servicing Structures
-STRUCTURE HO "Walther's Cornerstone Structure Backshop 933-3227"
- F3 12632256 0.000000 4
- 0.000000 12.858780 0
- 0.000017 0.000000 0
- 9.644104 0.000013 0
- 9.644088 12.858800 0
- F3 8388608 0.000000 4
- 9.644088 12.858800 0
- 9.644088 12.629180 0
- 0.000000 12.629160 0
- 0.000000 12.858780 0
- F3 8388608 0.000000 4
- 9.644088 12.858800 0
- 9.644104 0.000013 0
- 9.414483 0.000013 0
- 9.414466 12.858800 0
- F3 8388608 0.000000 4
- 0.000017 0.000000 0
- 0.000017 0.229621 0
- 9.644104 0.229634 0
- 9.644104 0.000013 0
- F3 8388608 0.000000 4
- 0.000000 12.858780 0
- 0.000017 0.000000 0
- 0.229638 0.000000 0
- 0.229621 12.858780 0
- F3 8388608 0.000000 4
- 9.471873 11.739390 0
- 9.471871 12.657880 0
- 8.926521 12.657880 0
- 8.926523 11.739390 0
- F3 8388608 0.000000 4
- 0.229623 11.768080 0
- 0.229621 12.686570 0
- 0.918485 12.686570 0
- 0.918486 11.768080 0
- F3 8388608 0.000000 4
- 0.229636 1.205511 0
- 0.229638 0.172216 0
- 0.918501 0.172218 0
- 0.918499 1.205513 0
- F3 8388608 0.000000 4
- 9.471887 1.205524 0
- 9.471889 0.200931 0
- 8.926538 0.200930 0
- 8.926537 1.205522 0
- F3 8388608 0.000000 4
- 0.258331 6.888634 0
- 0.258333 5.998852 0
- 0.947196 5.998854 0
- 0.947195 6.888636 0
- F3 8388608 0.000000 4
- 9.500581 6.888647 0
- 9.500583 5.998865 0
- 8.955233 5.998863 0
- 8.955231 6.888645 0
- END
-STRUCTURE HO "Walther's Cornerstone Structure Cinder Conveyor & Ash Pit 933-3816"
- F3 8421504 0.000000 4
- 0.229621 0.688863 0
- 1.836969 0.688863 0
- 1.836969 3.903559 0
- 0.229621 3.903559 0
- F3 8421504 0.000000 4
- 0.000000 3.214696 0
- 2.066590 3.214696 0
- 2.066590 2.525832 0
- 0.000000 2.525832 0
- F3 0 0.000000 4
- 0.086108 3.099885 0
- 1.951780 3.099885 0
- 1.951780 2.640643 0
- 0.086108 2.640643 0
- F3 14803425 0.000000 4
- 0.774971 1.176808 0
- 1.836969 1.176808 0
- 1.836969 2.210103 0
- 0.774971 2.210103 0
- L3 0 0.000000 0.861079 2.238806 0 0.861079 1.148106 0
- L3 0 0.000000 0.975890 2.238806 0 0.975890 1.176808 0
- L3 0 0.000000 1.090700 2.210103 0 1.090700 1.176808 0
- L3 0 0.000000 1.205511 2.238806 0 1.205511 1.119403 0
- L3 0 0.000000 1.320321 2.238806 0 1.320321 1.176808 0
- L3 0 0.000000 1.435132 2.210103 0 1.435132 1.176808 0
- L3 0 0.000000 1.549943 2.238806 0 1.549943 1.176808 0
- L3 0 0.000000 1.664753 2.238806 0 1.664753 1.176808 0
- F3 0 0.000000 4
- 0.229621 0.688863 0
- 1.836969 0.688863 0
- 1.836969 0.746269 0
- 0.229621 0.746269 0
- F3 14342874 0.000000 4
- 0.574053 0.688863 0
- 1.492537 0.688863 0
- 1.492537 0.000000 0
- 0.574053 0.000000 0
- F3 0 0.000000 4
- 0.746269 2.267509 0
- 0.229621 2.267509 0
- 0.229621 2.238806 0
- 0.746269 2.238806 0
- F3 0 0.000000 4
- 0.200919 0.746269 0
- 0.258324 0.746269 0
- 0.258324 2.267509 0
- 0.200919 2.267509 0
- F3 0 0.000000 4
- 1.808266 0.717566 0
- 1.750861 0.717566 0
- 1.750861 1.205511 0
- 1.808266 1.205511 0
- L3 0 0.000000 0.832377 0.000000 0 0.832377 0.717566 0
- L3 0 0.000000 1.176808 0.000000 0 1.176808 0.746269 0
- END
-STRUCTURE HO "Walther's Cornerstone Structure Sand Drying Building 933-3813"
- F3 8421504 0.000000 4
- 0.000000 0.000000 0
- 3.329506 0.000000 0
- 3.329506 3.099885 0
- 0.000000 3.099885 0
- L3 0 0.000000 0.000000 1.549943 0 3.329506 1.549943 0
- L3 0 0.000000 1.406429 1.779564 0 2.066590 1.779564 0
- L3 0 0.000000 2.066590 1.779564 0 2.066590 1.291619 0
- L3 0 0.000000 2.066590 1.291619 0 1.406429 1.291619 0
- L3 0 0.000000 1.406429 1.291619 0 1.406429 1.779564 0
- F3 16777215 0.000000 4
- 2.296211 2.525832 0
- 2.583238 2.525832 0
- 2.583238 2.296211 0
- 2.296211 2.296211 0
- F3 0 0.000000 4
- 2.353616 2.468427 0
- 2.497130 2.468427 0
- 2.497130 2.353616 0
- 2.353616 2.353616 0
- END
-STRUCTURE HO "Walther's Cornerstone Structure Sanding Storage Bin 933-3813"
- F3 8421504 0.000000 4
- 0.000000 0.000000 0
- 6.429391 0.000000 0
- 6.429391 3.099885 0
- 0.000000 3.099885 0
- F3 16777215 0.000000 4
- 0.229621 2.870264 0
- 6.257176 2.870264 0
- 6.257176 0.200919 0
- 0.229621 0.200919 0
- END
-STRUCTURE HO "Walther's Cornerstone Structure Small Sanding Tower 933-3813"
- F3 15790080 0.000000 4
- 0.000000 0.688863 0
- 1.607348 0.688863 0
- 1.607348 1.262916 0
- 0.000000 1.262916 0
- G3 12632256 0.000000 0.344432 0.803674 1.033295 0
- L3 0 0.000000 0.803674 1.377727 0 0.803674 3.903559 0
- L3 0 0.000000 0.803674 0.688863 0 0.803674 0.000000 0
- END
-STRUCTURE HO "Walther's Cornerstone Structure Large Sanding Tower 933-3813"
- F3 14803200 0.000000 4
- 0.000000 2.181401 0
- 1.377727 2.181401 0
- 1.377727 3.559128 0
- 0.000000 3.559128 0
- F3 12895232 0.000000 4
- 0.344432 2.525832 0
- 1.033295 2.525832 0
- 1.033295 3.214696 0
- 0.344432 3.214696 0
- G3 12632256 0.000000 0.315729 0.660161 2.898967 0
- F3 14803200 0.000000 4
- 0.545350 0.000000 0
- 0.889782 0.000000 0
- 0.889782 0.344432 0
- 0.545350 0.344432 0
- F3 14803200 0.000000 4
- 0.536028 5.645098 0
- 0.880459 5.645098 0
- 0.880459 5.989530 0
- 0.536028 5.989530 0
- F3 12632256 0.000000 4
- 0.602756 5.912744 0
- 0.803674 5.912744 0
- 0.803674 5.769231 0
- 0.602756 5.769231 0
- F3 12632256 0.000000 4
- 0.631458 0.287026 0
- 0.803674 0.287026 0
- 0.803674 0.114811 0
- 0.631458 0.114811 0
- L3 0 0.000000 0.688863 3.185993 0 0.688863 5.797934 0
- L3 0 0.000000 0.688863 2.583238 0 0.688858 0.315729 0
- END
-STRUCTURE HO "Walther's Cornerstone Structures Machine Shop 933-3264"
- F3 12632256 0.000000 4
- 5.539610 0.000000 0
- 9.529277 0.000000 0
- 9.529277 3.903559 0
- 5.539610 3.903559 0
- F3 8388608 0.000000 4
- 5.539610 3.903559 0
- 9.529277 3.903559 0
- 9.529277 3.788749 0
- 5.539610 3.788749 0
- F3 8388608 0.000000 4
- 9.529277 0.000000 0
- 9.414466 0.000000 0
- 9.414466 3.846154 0
- 9.529277 3.846154 0
- F3 8388608 0.000000 4
- 5.539610 0.000000 0
- 9.500574 0.000000 0
- 9.500574 0.114811 0
- 5.539610 0.114811 0
- G3 8388608 0.000000 0.634063 7.577497 4.592422 0
- G3 0 0.000000 0.459242 7.577497 4.592422 0
- F3 8388608 0.000000 4
- 5.539610 1.836969 0
- 7.376579 1.836969 0
- 7.376579 1.722158 0
- 5.539610 1.722158 0
- F3 8388608 0.000000 4
- 7.376579 0.114811 0
- 7.261768 0.114811 0
- 7.261768 1.836969 0
- 7.376579 1.836969 0
- F3 12632256 0.000000 4
- 0.028703 0.028703 0
- 5.539610 0.028703 0
- 5.539610 14.954080 0
- 0.028703 14.954080 0
- F3 8388608 0.000000 4
- 5.568312 0.086108 0
- 5.424799 0.086108 0
- 5.424799 14.954080 0
- 5.568312 14.954080 0
- F3 8388608 0.000000 4
- 0.028703 14.954080 0
- 0.172216 14.954080 0
- 0.172216 0.028703 0
- 0.028703 0.028703 0
- G3 0 0.000000 0.344432 3.702641 11.050520 0
- F3 8388608 0.000000 4
- 0.000000 14.925370 0
- 5.510907 14.925370 0
- 5.510907 14.810560 0
- 0.000000 14.810560 0
- F3 8388608 0.000000 4
- 0.057405 0.000000 0
- 5.568312 0.000000 0
- 5.568312 0.114811 0
- 0.057405 0.114811 0
- G3 0 0.000000 0.344432 3.731343 5.510907 0
- G3 0 0.000000 0.344432 3.731343 8.266360 0
- G3 0 0.000000 0.344432 3.731343 2.755454 0
- END
-STRUCTURE HO "Wahther's Cornerstone Structures Machine Shop Engine Room 933-3264A"
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 5.510907 0.000000 0
- 5.510907 11.021810 0
- 0.000000 11.021810 0
- F3 8388608 0.000000 4
- 0.000000 11.021810 0
- 5.424799 11.021810 0
- 5.424799 10.907000 0
- 0.000000 10.907000 0
- F3 8388608 0.000000 4
- 5.510907 11.021810 0
- 5.396097 11.021810 0
- 5.396097 0.000000 0
- 5.510907 0.000000 0
- F3 8388608 0.000000 4
- 0.000000 0.000000 0
- 5.453502 0.000000 0
- 5.453502 0.114811 0
- 0.000000 0.114811 0
- F3 8388608 0.000000 4
- 0.000000 0.000000 0
- 0.114811 0.000000 0
- 0.114811 11.021810 0
- 0.000000 11.021810 0
- G3 0 0.000000 0.344432 2.755454 5.510907 0
- G3 0 0.000000 0.344432 2.755454 9.184845 0
- G3 0 0.000000 0.344432 2.755454 1.836969 0
- END
-STRUCTURE HO "Walthers Modern Coaling Tower 933-3262"
- F3 8421504 0.000000 4
- 0.000000 7.663605 0
- 2.296211 7.663605 0
- 2.296211 1.923077 0
- 0.000000 1.923077 0
- F3 8421504 0.000000 4
- 3.673938 2.037888 0
- 9.184845 2.037888 0
- 9.184845 7.548795 0
- 3.673938 7.548795 0
- F3 8421504 0.000000 4
- 3.673938 3.903559 0
- 2.296211 3.903559 0
- 2.296211 5.740528 0
- 3.673938 5.740528 0
- L3 0 0.000000 1.148106 1.951780 0 1.148106 7.692308 0
- L3 0 0.000000 2.296211 5.740528 0 2.296211 3.903559 0
- L3 0 0.000000 3.673938 5.740528 0 9.184845 5.740528 0
- L3 0 0.000000 3.673938 3.903559 0 9.184845 3.903559 0
- L3 0 0.000000 6.429391 2.066590 0 6.429391 3.903559 0
- L3 0 0.000000 6.429391 5.740528 0 6.429391 7.577497 0
- L3 0 0.000000 3.673938 5.740528 0 3.673938 3.903559 0
- L3 0 0.000000 5.051665 5.740528 0 5.051665 3.903559 0
- L3 0 0.000000 4.362802 3.903559 0 4.362802 5.740528 0
- L3 0 0.000000 8.926521 7.577497 0 8.495982 7.577497 0
- L3 0 0.000000 8.495982 7.577497 0 8.495982 9.644088 0
- L3 0 0.000000 8.495982 9.644088 0 8.926521 9.644088 0
- L3 0 0.000000 8.926521 9.644088 0 8.926521 7.577497 0
- L3 0 0.000000 8.955224 0.000000 0 8.495982 0.000000 0
- L3 0 0.000000 8.495982 0.000000 0 8.495982 2.037888 0
- L3 0 0.000000 8.495982 2.037888 0 8.955224 2.037888 0
- L3 0 0.000000 8.955224 2.037888 0 8.955224 0.000000 0
- L3 0 0.000000 3.673938 0.000000 0 3.214696 0.000000 0
- L3 0 0.000000 3.214696 0.000000 0 3.214696 3.960964 0
- L3 0 0.000000 3.214696 3.960964 0 3.673938 3.960964 0
- L3 0 0.000000 3.673938 3.960964 0 3.673938 0.000000 0
- L3 0 0.000000 8.495982 7.807118 0 8.897819 7.807118 0
- L3 0 0.000000 8.495982 8.036739 0 8.926521 8.036739 0
- L3 0 0.000000 8.495982 8.266360 0 8.955224 8.266360 0
- L3 0 0.000000 8.495982 8.495982 0 8.926521 8.495982 0
- L3 0 0.000000 8.495982 8.725603 0 8.955224 8.725603 0
- L3 0 0.000000 8.495982 8.955224 0 8.926521 8.955224 0
- L3 0 0.000000 8.495982 9.184845 0 8.926521 9.184845 0
- L3 0 0.000000 8.495982 9.414466 0 8.897819 9.414466 0
- L3 0 0.000000 8.495982 9.644088 0 8.926521 9.644088 0
- L3 0 0.000000 8.495982 0.000000 0 8.955224 0.000000 0
- L3 0 0.000000 8.495982 0.229621 0 8.955224 0.229621 0
- L3 0 0.000000 8.495982 0.459242 0 8.955224 0.459242 0
- L3 0 0.000000 8.495982 0.688863 0 8.926521 0.688863 0
- L3 0 0.000000 8.524684 0.918485 0 8.926521 0.918485 0
- L3 0 0.000000 8.495982 1.148106 0 8.926521 1.148106 0
- L3 0 0.000000 8.524684 1.607348 0 8.926521 1.607348 0
- L3 0 0.000000 8.495982 1.377727 0 8.955224 1.377727 0
- L3 0 0.000000 8.495982 1.836969 0 8.955224 1.836969 0
- L3 0 0.000000 3.214696 0.000000 0 3.673938 0.000000 0
- L3 0 0.000000 3.214696 0.229621 0 3.673938 0.229621 0
- L3 0 0.000000 3.214696 0.459242 0 3.673938 0.459242 0
- L3 0 0.000000 3.214696 0.688863 0 3.702641 0.688863 0
- L3 0 0.000000 3.214696 0.918485 0 3.673938 0.918485 0
- L3 0 0.000000 3.214696 1.836969 0 3.673938 1.836969 0
- L3 0 0.000000 3.214696 1.607348 0 3.673938 1.607348 0
- L3 0 0.000000 3.214696 1.148106 0 3.673938 1.148106 0
- L3 0 0.000000 3.214696 1.377727 0 3.673938 1.377727 0
- L3 0 0.000000 3.214696 3.673938 0 3.673938 3.673938 0
- L3 0 0.000000 3.214696 3.444317 0 3.673938 3.444317 0
- L3 0 0.000000 3.214696 3.214696 0 3.645235 3.214696 0
- L3 0 0.000000 3.214696 2.985075 0 3.616533 2.985075 0
- L3 0 0.000000 3.214696 2.755454 0 3.616533 2.755454 0
- L3 0 0.000000 3.214696 2.525832 0 3.645235 2.525832 0
- L3 0 0.000000 3.214696 2.296211 0 3.645235 2.296211 0
- L3 0 0.000000 3.214696 2.066590 0 3.645235 2.066590 0
- END
-STRUCTURE HO "Walthers Modern Coaling Tower Office 933-3262"
- F3 8421504 0.000000 4
- 0.000000 3.673938 0
- 1.377727 3.673938 0
- 1.377727 0.459242 0
- 0.000000 0.459242 0
- F3 12632256 0.000000 4
- 0.229621 0.459242 0
- 1.148106 0.459242 0
- 1.148106 0.000000 0
- 0.229621 0.000000 0
- END
-STRUCTURE HO "Walthers Steel Water Tower B/U 933-2601"
- F3 0 0.000000 4
- 0.459242 0.000000 0
- 0.459242 0.000000 0
- 0.459242 0.000000 0
- 0.459242 0.000000 0
- F3 15395562 0.000000 9
- 0.459242 0.000000 0
- 0.459242 0.000000 0
- 3.214696 0.000000 0
- 3.673938 0.459242 0
- 3.673938 3.214696 0
- 3.214696 3.673938 0
- 0.459242 3.673938 0
- 0.000000 3.214696 0
- 0.028703 0.459242 0
- G3 8421504 0.000000 1.836969 1.836969 1.836969 0
- L3 0 0.000000 0.000000 1.836969 0 3.673938 1.836969 0
- L3 0 0.000000 1.836969 0.000000 0 1.836969 3.673938 0
- L3 0 0.000000 0.516648 3.099885 0 3.157290 0.631458 0
- L3 0 0.000000 0.602756 0.516648 0 3.042480 3.157290 0
- L3 0 0.000000 0.605592 3.229621 0 1.871307 1.898296 0
- L3 0 0.000000 0.439177 3.071407 0 1.704891 1.740082 0
- L3 0 0.000000 0.922021 2.896790 0 0.755606 2.738575 0
- L3 0 0.000000 1.080235 2.730373 0 0.913820 2.572161 0
- L3 0 0.000000 1.238450 2.563959 0 1.030429 2.366191 0
- L3 0 0.000000 1.375862 2.377767 0 1.188644 2.199776 0
- L3 0 0.000000 1.713093 2.064713 0 1.525875 1.886721 0
- L3 0 0.000000 1.871307 1.898296 0 1.704891 1.740082 0
- L3 0 0.000000 1.554878 2.231128 0 1.388462 2.072913 0
- L3 0 0.000000 0.763806 3.063205 0 0.597392 2.904990 0
- L3 0 0.000000 0.605592 3.229621 0 0.439177 3.071407 0
- END
-STRUCTURE HO "Walthers Oil Column B/U 933-2601"
- F3 14803425 0.000000 4
- 0.000000 0.000000 0
- 0.918485 0.000000 0
- 0.918485 0.918485 0
- 0.000000 0.918485 0
- F3 0 0.000000 4
- 0.459242 0.516648 0
- 1.148106 0.516648 0
- 1.148106 0.401837 0
- 0.459242 0.401837 0
- END
-STRUCTURE HO "Walthers Water Column B/U 933-2601"
- F3 14342874 0.000000 4
- 0.000000 0.000000 0
- 1.607348 0.000000 0
- 1.607348 0.918485 0
- 0.000000 0.918485 0
- F3 0 0.000000 4
- 0.459242 0.516648 0
- 1.836969 0.516648 0
- 1.836969 0.401837 0
- 0.459242 0.401837 0
- END
-STRUCTURE HO "Walther's Cornerstone Structures Modern Round House 933-3260"
- F3 15496704 0.000000 10
- 4.592422 0.057405 0
- 0.000000 19.001150 0
- 0.057405 19.001150 0
- 5.625718 20.206660 0
- 11.768080 20.206660 0
- 17.336400 19.058550 0
- 12.858780 0.057405 0
- 10.103330 0.516648 0
- 7.347876 0.516648 0
- 4.592422 0.057405 0
- L3 0 0.000000 8.438577 0.057405 0 8.438577 0.057405 0
- L3 0 0.000000 12.055110 0.057405 0 12.055110 0.057405 0
- L3 0 0.000000 11.710680 0.114811 0 11.710680 0.057405 0
- L3 0 0.000000 11.653270 20.264060 0 17.393800 19.058550 0
- L3 0 0.000000 0.000000 19.001150 0 5.625718 20.206660 0
- L3 0 0.000000 5.568312 20.264060 0 11.710680 20.264060 0
- L3 0 0.000000 6.084960 14.867970 0 11.308840 14.867970 0
- L3 0 0.000000 6.831229 6.314581 0 10.562570 6.314581 0
- L3 0 0.000000 7.347876 0.516648 0 7.347876 0.516648 0
- L3 0 0.000000 7.347876 0.516648 0 10.103330 0.516648 0
- L3 0 0.000000 10.103330 0.516648 0 12.743970 0.057405 0
- L3 0 0.000000 12.858780 0.000000 0 17.336400 19.058550 0
- L3 0 0.000000 10.103330 0.459242 0 11.768080 20.206660 0
- L3 0 0.000000 7.347876 0.516648 0 4.592422 0.057405 0
- L3 0 0.000000 4.592422 0.057405 0 0.000000 19.001150 0
- L3 0 0.000000 7.347876 0.516648 0 5.568312 20.264060 0
- L3 0 0.000000 6.773823 6.314581 0 3.214696 5.510907 0
- L3 0 0.000000 10.562570 6.314581 0 14.121700 5.568312 0
- L3 0 0.000000 11.366250 14.867970 0 16.130880 13.892080 0
- L3 0 0.000000 6.027555 14.867970 0 1.262916 13.719860 0
- END
-STRUCTURE HO "Walthers Union City Roundhouse 933-3202xx"
- L3 32768 0.041667 9.452816 25.353970 0 0.038350 15.595070 0
- L3 32768 0.020833 4.860394 8.419414 0 17.432150 13.643290 0
- L3 32768 0.020833 3.654883 11.060060 0 15.308160 17.833880 0
- L3 32768 0.020833 2.047535 13.413670 0 12.724920 21.622630 0
- L3 32768 0.020833 5.836284 5.606555 0 18.924690 9.223087 0
- L3 32768 0.020833 6.410336 2.908506 0 19.785770 4.630664 0
- A3 32768 0.041667 35.591270 -15.403670 0.038242 0 44.474403 45.525597
- A3 32768 0.041667 22.043630 -15.403670 0.038242 0 44.468552 45.531448
- L3 32768 0.020833 20.072790 0.038242 0 6.525147 0.038242 0
- A3 32768 0.041667 29.162110 -15.403670 0.038242 0 44.521254 45.478746
- A3 32768 0.020833 25.602820 -15.403670 0.038242 0 44.443785 45.556215
- A3 32768 0.020833 32.491390 -15.403670 0.038242 0 44.498085 45.501915
- A3 32768 0.020833 32.491390 -15.403670 0.038242 0 44.354681 45.645319
- L3 32768 0.020833 9.247304 17.592280 0 10.255170 16.056490 0
- L3 32768 0.020833 10.255170 16.056490 0 8.335421 14.796660 0
- L3 32768 0.020833 8.335421 14.796660 0 7.327559 16.332450 0
- L3 32768 0.020833 7.327559 16.332450 0 9.247304 17.592280 0
- L3 32768 0.020833 11.790940 6.352979 0 14.046450 6.783416 0
- L3 32768 0.020833 14.046450 6.783416 0 14.390800 4.979011 0
- L3 32768 0.020833 14.390800 4.979011 0 12.135290 4.548574 0
- L3 32768 0.020833 12.135290 4.548574 0 11.790940 6.352979 0
- L3 32768 0.020833 10.793430 9.823590 0 12.961810 10.579030 0
- L3 32768 0.020833 12.961810 10.579030 0 13.566160 8.844321 0
- L3 32768 0.020833 13.566160 8.844321 0 11.397780 8.088882 0
- L3 32768 0.020833 11.397780 8.088882 0 10.793430 9.823590 0
- L3 32768 0.020833 9.222174 13.236830 0 11.245010 14.323440 0
- L3 32768 0.020833 11.245010 14.323440 0 12.114300 12.705170 0
- L3 32768 0.020833 12.114300 12.705170 0 10.091460 11.618560 0
- L3 32768 0.020833 10.091460 11.618560 0 9.222174 13.236830 0
- L3 32768 0.020833 5.089516 19.357520 0 6.665311 20.694550 0
- L3 32768 0.020833 6.665311 20.694550 0 7.853786 19.293840 0
- L3 32768 0.020833 7.853786 19.293840 0 6.277990 17.956810 0
- L3 32768 0.020833 6.277990 17.956810 0 5.089516 19.357520 0
- L3 32768 0.020833 12.369590 2.753752 0 14.658730 2.933794 0
- L3 32768 0.020833 14.658730 2.933794 0 14.802760 1.102481 0
- L3 32768 0.020833 14.802760 1.102481 0 12.513620 0.922438 0
- L3 32768 0.020833 12.513620 0.922438 0 12.369590 2.753752 0
- A3 32768 0.020833 0.324734 18.580260 2.162237 0 0.000000 360.000000
- A3 32768 0.020833 0.324734 18.061110 6.637327 0 0.000000 360.000000
- A3 32768 0.020833 0.324734 7.670751 4.513332 0 0.000000 360.000000
- A3 32768 0.020833 0.324734 6.924482 7.498406 0 0.000000 360.000000
- A3 32768 0.020833 0.324734 5.718971 10.426080 0 0.000000 360.000000
- A3 32768 0.020833 0.324734 4.169029 13.124120 0 0.000000 360.000000
- A3 32768 0.020833 0.324734 2.274655 15.535150 0 0.000000 360.000000
- A3 32768 0.020833 0.324734 16.913000 10.942720 0 0.000000 360.000000
- A3 32768 0.020833 0.324734 15.190840 15.133310 0 0.000000 360.000000
- A3 32768 0.020833 0.324734 10.196580 22.596000 0 0.000000 360.000000
- A3 32768 0.020833 0.324734 8.072588 1.585662 0 0.000000 360.000000
- A3 32768 0.020833 0.324734 12.952040 18.979460 0 0.000000 360.000000
- END
-STRUCTURE HO "Walthers 2-Stall Engine House 933-3204"
- L 0 0 0.000000 0.000000 14.006890 0.000000
- L 0 0 14.006890 0.000000 14.006890 5.970150
- L 0 0 14.006890 5.970150 0.000000 5.970150
- L 0 0 0.000000 5.970150 0.000000 0.000000
- L 0 0 0.000000 2.985075 14.006890 2.985075
- L 0 0 0.000000 3.673938 14.006890 3.673938
- L 0 0 0.000000 2.296211 14.006890 2.296211
- A 0 0 0.413956 12.169920 1.607348 0.000000 360.000000
- A 0 0 0.256724 12.169920 1.607348 0.000000 360.000000
- A 0 0 0.413956 1.836969 1.607348 0.000000 360.000000
- A 0 0 0.256724 1.836969 1.607348 0.000000 360.000000
- A 0 0 0.413956 1.836969 4.362802 0.000000 360.000000
- A 0 0 0.256724 1.836969 4.362802 0.000000 360.000000
- A 0 0 0.413956 12.169920 4.362802 0.000000 360.000000
- A 0 0 0.256724 12.169920 4.362802 0.000000 360.000000
- END
-STRUCTURE HO "Walthers Backshop 933-3039"
- L 0 0.000000 0.000000 0.000000 11.625000 0.000000
- L 0 0.000000 11.625000 0.000000 11.625000 8.812500
- L 0 0.000000 11.625000 8.812500 0.000000 8.812500
- L 0 0.000000 0.000000 8.812500 0.000000 0.000000
- END
-STRUCTURE HO "Walthers Car Shop 933-3040"
- F3 14803425 0.000000 4
- 0.000000 4.406250 0
- 11.625000 4.406250 0
- 11.620000 -4.406250 0
- 0.000000 -4.406250 0
- L3 0 0.083333 0.000000 -4.406250 0 11.625000 -4.406235 0
- L3 0 0.083333 0.000000 4.406250 0 11.625000 4.406250 0
- L3 0 0.083333 0.000000 4.406500 0 0.000000 -4.406500 0
- L3 0 0.083333 11.625000 4.406500 0 11.625000 -4.406500 0
- END
-STRUCTURE HO "Walthers Rail Shop 933-2970"
- F3 16751128 0.000000 4
- 0.000000 4.406250 0
- 17.125000 4.406250 0
- 17.125000 -4.406250 0
- 0.000000 -4.406250 0
- L3 0 0.053333 0.000000 -4.406250 0 17.125000 -4.406235 0
- L3 0 0.053333 0.000000 4.406250 0 17.125000 4.406250 0
- L3 0 0.053333 0.000000 4.406500 0 0.000000 -4.406500 0
- L3 0 0.053333 17.125000 4.406500 0 17.125000 -4.406500 0
- L3 0 0.053333 11.416700 4.406000 0 11.416700 -4.406000 0
- G3 14803425 0.000000 1.000000 14.500000 0.000000 0
- G3 14803425 0.000000 1.000000 14.500000 2.938000 0
- G3 14803425 0.000000 1.000000 14.500000 -2.937000 0
- G3 14803425 0.000000 1.000000 2.399600 2.938000 0
- G3 14803425 0.000000 1.000000 2.399600 0.000000 0
- G3 14803425 0.000000 1.000000 2.399600 -2.937000 0
- G3 14803425 0.000000 1.000000 9.149600 2.938000 0
- G3 14803425 0.000000 1.000000 9.149601 0.000000 0
- G3 14803425 0.000000 1.000000 9.149601 -2.937000 0
- A3 0 0.053333 1.000000 14.500000 0.000000 0 0.000000 360.000000
- A3 0 0.053333 1.000000 14.500000 2.938000 0 0.000000 360.000000
- A3 0 0.053333 1.000000 14.500000 -2.937000 0 0.000000 360.000000
- A3 0 0.053333 1.000000 2.399600 2.938000 0 0.000000 360.000000
- A3 0 0.053333 1.000000 2.399600 0.000000 0 0.000000 360.000000
- A3 0 0.053333 1.000000 2.399600 -2.937000 0 0.000000 360.000000
- A3 0 0.053333 1.000000 9.149600 2.938000 0 0.000000 360.000000
- A3 0 0.053333 1.000000 9.149601 0.000000 0 0.000000 360.000000
- A3 0 0.053333 1.000000 9.149601 -2.937000 0 0.000000 360.000000
- END
-STRUCTURE HO "Walthers Allied Rail Rebuilders 933-3016"
- F3 14803425 0.000000 4
- 0.000000 5.000000 0
- 0.000000 -5.000000 0
- 10.000000 -5.000000 0
- 10.000000 5.000000 0
- L3 0 0.083333 0.000000 -5.000000 0 10.000000 -5.000000 0
- L3 0 0.083333 10.000000 -5.000000 0 10.000000 5.000000 0
- L3 0 0.083333 10.000000 5.000000 0 0.000000 5.000000 0
- L3 0 0.083333 0.000000 5.000000 0 0.000000 -5.000000 0
- L3 0 0.083333 0.000000 -2.000000 0 10.000000 -2.000000 0
- L3 0 0.083333 0.000000 2.000000 0 10.000000 2.000000 0
- G3 0 0.000000 0.250000 0.500000 -2.500000 0
- G3 0 0.000000 0.250000 1.250000 -2.500000 0
- L3 0 0.000000 0.000000 0.000000 0 10.000000 0.000000 0
- END
-STRUCTURE HO "Walthers Modern Roundhouse 933-2900"
- L 0 0.053333 11.892074 1.040422 11.892074 -1.040422
- L 0 0.053333 11.892074 1.040422 11.530740 3.089652
- L 0 0.053333 11.892074 -1.040422 11.530740 -3.089652
- L 0 0.053333 29.574530 2.587436 29.574530 -2.587436
- L 0 0.053333 29.574530 2.587436 28.675923 7.683690
- L 0 0.053333 31.940493 -2.794431 30.969997 -8.298386
- L 0 0.053333 11.530740 3.089652 28.675923 7.683690
- L 0 0.053333 11.530740 -3.089652 30.969997 -8.298386
- L 0 0.053333 29.574530 -2.587436 31.940493 -2.794431
- L 0 0.053333 17.786226 1.556093 17.786226 -1.556093
- L 0 0.053333 17.786226 1.556093 17.245801 4.620998
- L 0 0.053333 17.786226 -1.556093 17.245801 -4.620998
- L 0 0.053333 23.680378 2.071765 23.680378 -2.071765
- L 0 0.053333 23.680378 2.071765 22.960862 6.152344
- L 0 0.053333 23.680378 -2.071765 22.960862 -6.152344
- A 0 0.053333 0.375000 26.937500 0.000000 0.000000 360.000000
- A 0 0.053333 0.625000 26.937500 0.000000 0.000000 360.000000
- A 0 0.053333 0.375000 26.528259 4.677648 0.000000 360.000000
- A 0 0.053333 0.625000 26.528259 4.677648 0.000000 360.000000
- A 0 0.053333 0.375000 28.867177 -5.090062 0.000000 360.000000
- A 0 0.053333 0.625000 28.867177 -5.090062 0.000000 360.000000
- END
-STRUCTURE HO "Walthers Modern Roundhouse Add-on Stalls 933-2901"
- L 0 0.053333 11.892074 1.040422 11.892074 -1.040422
- L 0 0.053333 11.892074 1.040422 11.530740 3.089652
- L 0 0.053333 11.892074 -1.040422 11.530740 -3.089652
- L 0 0.053333 29.574530 2.587436 29.574530 -2.587436
- L 0 0.053333 29.574530 2.587436 28.675923 7.683690
- L 0 0.053333 29.574530 -2.587436 28.675923 -7.683690
- L 0 0.053333 11.530740 -3.089652 28.675923 -7.683690
- L 0 0.053333 11.530740 3.089652 28.675923 7.683690
- L 0 0.053333 17.786226 1.556093 17.786226 -1.556093
- L 0 0.053333 17.786226 1.556093 17.245801 4.620998
- L 0 0.053333 17.786226 -1.556093 17.245801 -4.620998
- L 0 0.053333 23.680378 2.071765 23.680378 -2.071765
- L 0 0.053333 23.680378 2.071765 22.960862 6.152344
- L 0 0.053333 23.680378 -2.071765 22.960862 -6.152344
- A 0 0.053333 0.375000 26.937500 0.000000 0.000000 360.000000
- A 0 0.053333 0.625000 26.937500 0.000000 0.000000 360.000000
- A 0 0.053333 0.375000 26.528259 4.677648 0.000000 360.000000
- A 0 0.053333 0.625000 26.528259 4.677648 0.000000 360.000000
- A 0 0.053333 0.375000 26.528259 -4.677648 0.000000 360.000000
- A 0 0.053333 0.625000 26.528259 -4.677648 0.000000 360.000000
- END
-STRUCTURE HO "Walthers Sanding Towers & Drying House 933-3182A"
- L3 0 0.052083 3.380214 0.130208 0 9.130214 0.130208 0
- L3 0 0.052083 9.130214 0.130208 0 9.130214 2.880208 0
- L3 0 0.052083 9.130214 2.880208 0 3.380214 2.880208 0
- L3 0 0.052083 3.380210 3.005208 0 3.380218 0.005208 0
- L3 0 0.052083 3.380214 0.005208 0 0.005214 0.005208 0
- L3 0 0.052083 0.005208 0.005208 0 0.005212 3.005208 0
- L3 0 0.052083 0.005214 3.005208 0 3.380214 3.005208 0
- L3 0 0.052083 0.005214 1.505208 0 3.380214 1.505208 0
- F3 13541990 0.000000 4
- 3.442714 2.817708 0
- 9.067714 2.817708 0
- 9.067714 0.192708 0
- 3.442714 0.192708 0
- F3 16755285 0.000000 4
- 0.067714 2.942708 0
- 3.317714 2.942708 0
- 3.317714 1.567708 0
- 0.067714 1.567708 0
- F3 16755285 0.000000 4
- 0.067714 1.442708 0
- 3.317714 1.442708 0
- 3.317714 0.067708 0
- 0.067714 0.067708 0
- END
-STRUCTURE HO "Walthers Diesel Sanding Tower 933-3182B"
- L3 0 0.052083 0.125000 0.026042 0 0.875000 0.026042 0
- L3 0 0.052083 0.875000 1.526042 0 0.125000 1.526042 0
- L3 0 0.052083 0.125000 1.526042 0 0.125000 1.088542 0
- L3 0 0.052083 0.875000 1.526042 0 0.875000 1.088542 0
- L3 0 0.052083 0.125000 0.276042 0 0.125000 0.276042 0
- L3 0 0.052083 0.875000 0.026042 0 0.875000 0.463542 0
- L3 0 0.052083 0.125000 0.026042 0 0.125000 0.463542 0
- G3 8421504 0.000000 0.500000 0.500000 0.776042 0
- A3 0 0.052083 0.500000 0.500000 0.776042 0 0.000000 360.000000
- END
-STRUCTURE HO "Walthers Steam Sanding Tower 933-3182C"
- F3 8421504 0.000000 4
- 5.213542 0.838542 0
- 5.588542 0.838542 0
- 5.588542 0.463542 0
- 5.213542 0.463542 0
- F3 8421504 0.000000 4
- 0.338542 0.838542 0
- 0.713542 0.838542 0
- 0.713542 0.463542 0
- 0.338542 0.463542 0
- L3 0 0.052083 2.338542 0.026042 0 3.588542 0.026042 0
- L3 0 0.052083 3.588542 0.026042 0 3.588542 1.276042 0
- L3 0 0.052083 3.588542 1.276042 0 2.338542 1.276042 0
- L3 0 0.052083 2.338542 1.276042 0 2.338542 0.026042 0
- L3 0 0.052083 0.026042 0.151042 0 1.026042 0.151042 0
- L3 0 0.052083 1.026042 0.151042 0 1.026042 1.151042 0
- L3 0 0.052083 1.026042 1.151042 0 0.026042 1.151042 0
- L3 0 0.052083 0.026042 1.151042 0 0.026042 0.151042 0
- L3 0 0.052083 5.901042 0.151042 0 4.901042 0.151042 0
- L3 0 0.052083 4.901042 0.151042 0 4.901042 1.151042 0
- L3 0 0.052083 4.901042 1.151042 0 5.901042 1.151042 0
- L3 0 0.052083 5.901042 1.151042 0 5.901042 0.151042 0
- L3 0 0.052083 0.338542 0.463542 0 0.713542 0.463542 0
- L3 0 0.052083 0.713542 0.463542 0 0.713542 0.838542 0
- L3 0 0.052083 0.713542 0.838542 0 0.338542 0.838542 0
- L3 0 0.052083 0.338542 0.838542 0 0.338542 0.463542 0
- L3 0 0.052083 5.213542 0.463542 0 5.588542 0.463542 0
- L3 0 0.052083 5.588542 0.463542 0 5.588542 0.838542 0
- L3 0 0.052083 5.588542 0.838542 0 5.213542 0.838542 0
- L3 0 0.052083 5.213542 0.838542 0 5.213542 0.463542 0
- L3 0 0.104167 3.338542 0.651042 0 5.213542 0.651042 0
- L3 0 0.104167 2.588542 0.651042 0 0.713542 0.651042 0
- G3 8421504 0.000000 0.375000 2.963542 0.651042 0
- A3 0 0.052083 0.125000 2.963542 0.651042 0 0.000000 360.000000
- A3 0 0.052083 0.375000 2.963542 0.651042 0 0.000000 360.000000
- END
-STRUCTURE HO "Walthers Steel Water Tower 933-3043"
- G3 12632256 0.000000 1.501302 1.713542 1.713542 0
- A3 0 0.052083 1.500000 1.713542 1.713542 0 0.000000 360.000000
- L3 0 0.052083 0.697070 2.818391 0 0.652875 2.862585 0
- L3 0 0.052083 0.652875 2.862585 0 0.564488 2.774196 0
- L3 0 0.052083 0.564488 2.774196 0 0.608682 2.730002 0
- L3 0 0.052083 0.608693 0.697070 0 0.564499 0.652875 0
- L3 0 0.052083 0.564499 0.652875 0 0.652888 0.564488 0
- L3 0 0.052083 0.652888 0.564488 0 0.697082 0.608682 0
- L3 0 0.052083 2.818401 0.697082 0 2.862596 0.652888 0
- L3 0 0.052083 2.862596 0.652888 0 2.774208 0.564499 0
- L3 0 0.052083 2.774208 0.564499 0 2.730014 0.608693 0
- L3 0 0.052083 2.730002 2.818401 0 2.774196 2.862596 0
- L3 0 0.052083 2.774196 2.862596 0 2.862585 2.774208 0
- L3 0 0.052083 2.862585 2.774208 0 2.818391 2.730014 0
- L3 0 0.052083 0.026042 0.026042 0 3.401042 0.026042 0
- L3 0 0.052083 3.401042 0.026042 0 3.401042 3.401042 0
- L3 0 0.052083 3.401042 3.401042 0 0.026042 3.401042 0
- L3 0 0.052083 0.026042 3.401042 0 0.026042 0.026042 0
- END
-STRUCTURE HO "Walthers Machine Shop 933-2902"
- F3 16755285 0.000000 4
- 0.026042 6.750000 0
- 5.026042 6.750000 0
- 5.026042 2.750000 0
- 0.026042 2.750000 0
- F3 16755285 0.000000 6
- 0.026042 8.750000 0
- 0.026042 6.750000 0
- 5.026042 6.750000 0
- 5.026042 4.750000 0
- 13.651042 4.750000 0
- 13.651042 8.750000 0
- L3 0 0.052083 3.026042 6.750000 0 5.026042 6.750000 0
- L3 0 0.052083 4.776042 7.562500 0 4.776042 7.562500 0
- L3 0 0.052083 0.026042 2.750000 0 0.026042 8.750000 0
- L3 0 0.052083 0.026042 8.750000 0 13.651042 8.750000 0
- L3 0 0.052083 6.651042 8.125000 0 6.651042 8.125000 0
- L3 0 0.052083 0.026042 2.750000 0 0.026042 2.750000 0
- L3 0 0.052083 0.026042 2.750000 0 5.026042 2.750007 0
- L3 0 0.052083 3.963542 9.500000 0 3.963542 9.500000 0
- L3 0 0.052083 4.338542 9.187500 0 4.338542 9.187500 0
- L3 0 0.052083 5.026042 2.750000 0 5.026042 4.750000 0
- L3 0 0.052083 5.026042 4.750000 0 13.651042 4.750000 0
- L3 0 0.052083 13.651042 4.750000 0 13.651042 8.750000 0
- L3 0 0.052083 3.026042 6.750000 0 0.026042 6.750000 0
- L3 0 0.052083 5.026042 4.750000 0 3.026042 4.750000 0
- L3 0 0.052083 3.026042 4.750000 0 3.026042 6.750000 0
- L3 0 0.052083 5.026042 6.750000 0 5.026042 4.750000 0
- G3 15720651 0.000000 1.375000 2.026042 1.375000 0
- A3 0 0.052083 0.877229 2.026042 1.375000 0 0.000000 360.000000
- A3 0 0.052083 0.625000 2.026042 1.375000 0 0.000000 360.000000
- G3 0 0.000000 0.625000 2.026042 1.375000 0
- A3 0 0.052083 1.375000 2.026042 1.375000 0 0.000000 360.000000
- END
-
-
-
-
-SUBCONTENTS Walthers Cornerstone HO Structures - Turn Tables
-TURNOUT HO "Walthers 130' Turn Table 933-2829" 512
-# TT was designed with 18.875" bridge, 19.125" outside dia., 10 degree spacing
- P "1" 1 2 3
- P "2" 4 5 6
- P "3" 7 8 9
- P "4" 10 11 12
- P "5" 13 14 15
- P "6" 16 17 18
- P "7" 19 20 21
- P "8" 22 23 24
- P "9" 25 26 27
- P "10" 28 29 30
- P "11" 31 32 33
- P "12" 34 35 36
- P "13" 37 38 39
- P "14" 40 41 42
- P "15" 43 44 45
- P "16" 46 47 48
- P "17" 49 50 51
- P "18" 52 53 54
- E 0.000000 9.562500 0.000000
- E 1.660511 9.417224 10.000000
- E 3.270568 8.985811 20.000000
- E 4.781250 8.281368 30.000000
- E 6.146657 7.325300 40.000000
- E 7.325300 6.146657 50.000000
- E 8.281368 4.781250 60.000000
- E 8.985811 3.270568 70.000000
- E 9.417224 1.660511 80.000000
- E 9.562500 0.000000 90.000000
- E 9.417224 -1.660511 100.000000
- E 8.985811 -3.270568 110.000000
- E 8.281368 -4.781250 120.000000
- E 7.325300 -6.146657 130.000000
- E 6.146657 -7.325300 140.000000
- E 4.781250 -8.281368 150.000000
- E 3.270568 -8.985811 160.000000
- E 1.660511 -9.417224 170.000000
- E 0.000000 -9.562500 180.000000
- E -1.660511 -9.417224 190.000000
- E -3.270568 -8.985811 200.000000
- E -4.781250 -8.281368 210.000000
- E -6.146657 -7.325300 220.000000
- E -7.325300 -6.146657 230.000000
- E -8.281368 -4.781250 240.000000
- E -8.985811 -3.270568 250.000000
- E -9.417224 -1.660511 260.000000
- E -9.562500 0.000000 270.000000
- E -9.417224 1.660511 280.000000
- E -8.985811 3.270568 290.000000
- E -8.281368 4.781250 300.000000
- E -7.325300 6.146657 310.000000
- E -6.146657 7.325300 320.000000
- E -4.781250 8.281368 330.000000
- E -3.270568 8.985811 340.000000
- E -1.660511 9.417224 350.000000
-
-#0/180
- S 0 0 0.000000 9.562500 0.000000 9.437500
- S 16777215 0 0.000000 9.437500 0.000000 -9.437500
- S 0 0 0.000000 -9.437500 0.000000 -9.562500
-#10/190
- S 0 0 1.660511 9.417224 1.638805 9.294123
- S 16777215 0 1.638805 9.294123 -1.638805 -9.294123
- S 0 0 -1.638805 -9.294123 -1.660511 -9.417224
-#20/200
- S 0 0 3.270568 8.985811 3.227815 8.868349
- S 16777215 0 3.227815 8.868349 -3.227815 -8.868349
- S 0 0 -3.227815 -8.868349 -3.270568 -8.985811
-#30/210
- S 0 0 4.781250 8.281368 4.718750 8.173115
- S 16777215 0 4.718750 8.173115 -4.718750 -8.173115
- S 0 0 -4.718750 -8.173115 -4.781250 -8.281368
-#40/220
- S 0 0 6.146657 7.325300 6.066308 7.229544
- S 16777215 0 6.066308 7.229544 -6.066308 -7.229544
- S 0 0 -6.066308 -7.229544 -6.146657 -7.325300
-#50/230
- S 0 0 7.325300 6.146657 7.229544 6.066308
- S 16777215 0 7.229544 6.066308 -7.229544 -6.066308
- S 0 0 -7.229544 -6.066308 -7.325300 -6.146657
-#60/240
- S 0 0 8.281368 4.781250 8.173115 4.718750
- S 16777215 0 8.173115 4.718750 -8.173115 -4.718750
- S 0 0 -8.173115 -4.718750 -8.281368 -4.781250
-#70/250
- S 0 0 8.985811 3.270568 8.868349 3.227815
- S 16777215 0 8.868349 3.227815 -8.868349 -3.227815
- S 0 0 -8.868349 -3.227815 -8.985811 -3.270568
-#80/260
- S 0 0 9.417224 1.660511 9.294123 1.638805
- S 16777215 0 9.294123 1.638805 -9.294123 -1.638805
- S 0 0 -9.294123 -1.638805 -9.417224 -1.660511
-#90/270
- S 0 0 9.562500 0.000000 9.437500 0.000000
- S 0 0 9.437500 0.000000 -9.437500 0.000000
- S 0 0 -9.437500 0.000000 -9.562500 0.000000
-#100/280
- S 0 0 9.417224 -1.660511 9.294123 -1.638805
- S 16777215 0 9.294123 -1.638805 -9.294123 1.638805
- S 0 0 -9.294123 1.638805 -9.417224 1.660511
-#110/290
- S 0 0 8.985811 -3.270568 8.868349 -3.227815
- S 16777215 0 8.868349 -3.227815 -8.868349 3.227815
- S 0 0 -8.868349 3.227815 -8.985811 3.270568
-#120/300
- S 0 0 8.281368 -4.781250 8.173115 -4.718750
- S 16777215 0 8.173115 -4.718750 -8.173115 4.718750
- S 0 0 -8.173115 4.718750 -8.281368 4.781250
-#130/310
- S 0 0 7.325300 -6.146657 7.229544 -6.066308
- S 16777215 0 7.229544 -6.066308 -7.229544 6.066308
- S 0 0 -7.229544 6.066308 -7.325300 6.146657
-#140/320
- S 0 0 6.146657 -7.325300 6.066308 -7.229544
- S 16777215 0 6.066308 -7.229544 -6.066308 7.229544
- S 0 0 -6.066308 7.229544 -6.146657 7.325300
-#150/330
- S 0 0 4.781250 -8.281368 4.718750 -8.173115
- S 16777215 0 4.718750 -8.173115 -4.718750 8.173115
- S 0 0 -4.718750 8.173115 -4.781250 8.281368
-#160/340
- S 0 0 3.270568 -8.985811 3.227815 -8.868349
- S 16777215 0 3.227815 -8.868349 -3.227815 8.868349
- S 0 0 -3.227815 8.868349 -3.270568 8.985811
-#170/350
- S 0 0 1.660511 -9.417224 1.638805 -9.294123
- S 16777215 0 1.638805 -9.294123 -1.638805 9.294123
- S 0 0 -1.638805 9.294123 -1.660511 9.417224
-
- A 11579568 0.053333 9.562500 0.000000 0.000000 0.000000 360.000000
- A 11579568 0.053333 9.437500 0.000000 0.000000 0.000000 360.000000
- G 11579568 0.000000 0.053333 0.000000 0.000000 0
- END
-TURNOUT HO "Walthers 90' Turn Table 933-2840" 512
-# TT was designed with 12.5" bridge, 13.75" outside dia., 10 degree spacing
- P "1" 1 2 3
- P "2" 4 5 6
- P "3" 7 8 9
- P "4" 10 11 12
- P "5" 13 14 15
- P "6" 16 17 18
- P "7" 19 20 21
- P "8" 22 23 24
- P "9" 25 26 27
- P "10" 28 29 30
- P "11" 31 32 33
- P "12" 34 35 36
- P "13" 37 38 39
- P "14" 40 41 42
- P "15" 43 44 45
- P "16" 46 47 48
- P "17" 49 50 51
- P "18" 52 53 54
- E 0.000000 6.875000 0.000000
- E 1.193831 6.770553 10.000000
- E 2.351388 6.460387 20.000000
- E 3.437500 5.953925 30.000000
- E 4.419165 5.266556 40.000000
- E 5.266556 4.419165 50.000000
- E 5.953925 3.437500 60.000000
- E 6.460387 2.351388 70.000000
- E 6.770553 1.193831 80.000000
- E 6.875000 0.000000 90.000000
- E 6.770553 -1.193831 100.000000
- E 6.460387 -2.351388 110.000000
- E 5.953925 -3.437500 120.000000
- E 5.266556 -4.419165 130.000000
- E 4.419165 -5.266556 140.000000
- E 3.437500 -5.953925 150.000000
- E 2.351388 -6.460387 160.000000
- E 1.193831 -6.770553 170.000000
- E 0.000000 -6.875000 180.000000
- E -1.193831 -6.770553 190.000000
- E -2.351388 -6.460387 200.000000
- E -3.437500 -5.953925 210.000000
- E -4.419165 -5.266556 220.000000
- E -5.266556 -4.419165 230.000000
- E -5.953925 -3.437500 240.000000
- E -6.460387 -2.351388 250.000000
- E -6.770553 -1.193831 260.000000
- E -6.875000 0.000000 270.000000
- E -6.770553 1.193831 280.000000
- E -6.460387 2.351388 290.000000
- E -5.953925 3.437500 300.000000
- E -5.266556 4.419165 310.000000
- E -4.419165 5.266556 320.000000
- E -3.437500 5.953925 330.000000
- E -2.351388 6.460387 340.000000
- E -1.193831 6.770553 350.000000
-
-#0/180
- S 0 0 0.000000 6.875000 0.000000 6.250000
- S 16777215 0 0.000000 6.250000 0.000000 -6.250000
- S 0 0 0.000000 -6.250000 0.000000 -6.875000
-#10/190
- S 0 0 1.193831 6.770553 1.085301 6.155048
- S 16777215 0 1.085301 6.155048 -1.085301 -6.155048
- S 0 0 -1.085301 -6.155048 -1.193831 -6.770553
-#20/200
- S 0 0 2.351388 6.460387 2.137626 5.873079
- S 16777215 0 2.137626 5.873079 -2.137626 -5.873079
- S 0 0 -2.137626 -5.873079 -2.351388 -6.460387
-#30/210
- S 0 0 3.437500 5.953925 3.125000 5.412659
- S 16777215 0 3.125000 5.412659 -3.125000 -5.412659
- S 0 0 -3.125000 -5.412659 -3.437500 -5.953925
-#40/220
- S 0 0 4.419165 5.266556 4.017423 4.787778
- S 16777215 0 4.017423 4.787778 -4.017423 -4.787778
- S 0 0 -4.017423 -4.787778 -4.419165 -5.266556
-#50/230
- S 0 0 5.266556 4.419165 4.787778 4.017423
- S 16777215 0 4.787778 4.017423 -4.787778 -4.017423
- S 0 0 -4.787778 -4.017423 -5.266556 -4.419165
-#60/240
- S 0 0 5.953925 3.437500 5.412659 3.125000
- S 16777215 0 5.412659 3.125000 -5.412659 -3.125000
- S 0 0 -5.412659 -3.125000 -5.953925 -3.437500
-#70/250
- S 0 0 6.460387 2.351388 5.873079 2.137626
- S 16777215 0 5.873079 2.137626 -5.873079 -2.137626
- S 0 0 -5.873079 -2.137626 -6.460387 -2.351388
-#80/260
- S 0 0 6.770553 1.193831 6.155048 1.085301
- S 16777215 0 6.155048 1.085301 -6.155048 -1.085301
- S 0 0 -6.155048 -1.085301 -6.770553 -1.193831
-#90/270
- S 0 0 6.875000 0.000000 6.250000 0.000000
- S 0 0 6.250000 0.000000 -6.250000 0.000000
- S 0 0 -6.250000 0.000000 -6.8750000 0.000000
-#100/280
- S 0 0 6.770553 -1.193831 6.155048 -1.085301
- S 16777215 0 6.155048 -1.085301 -6.155048 1.085301
- S 0 0 -6.155048 1.085301 -6.770553 1.193831
-#110/290
- S 0 0 6.460387 -2.351388 5.873079 -2.137626
- S 16777215 0 5.873079 -2.137626 -5.873079 2.137626
- S 0 0 -5.873079 2.137626 -6.460387 2.351388
-#120/300
- S 0 0 5.953925 -3.437500 5.412659 -3.125000
- S 16777215 0 5.412659 -3.125000 -5.412659 3.125000
- S 0 0 -5.412659 3.125000 -5.953925 3.437500
-#130/310
- S 0 0 5.266556 -4.419165 4.787778 -4.017423
- S 16777215 0 4.787778 -4.017423 -4.787778 4.017423
- S 0 0 -4.787778 4.017423 -5.266556 4.419165
-#140/320
- S 0 0 4.419165 -5.266556 4.017423 -4.787778
- S 16777215 0 4.017423 -4.787778 -4.017423 4.787778
- S 0 0 -4.017423 4.787778 -4.419165 5.266556
-#150/330
- S 0 0 3.437500 -5.953925 3.125000 -5.412659
- S 16777215 0 3.125000 -5.412659 -3.125000 5.412659
- S 0 0 -3.125000 5.412659 -3.437500 5.953925
-#160/340
- S 0 0 2.351388 -6.460387 2.137626 -5.873079
- S 16777215 0 2.137626 -5.873079 -2.137626 5.873079
- S 0 0 -2.137626 5.873079 -2.351388 6.460387
-#170/350
- S 0 0 1.193831 -6.770553 1.085301 -6.155048
- S 16777215 0 1.085301 -6.155048 -1.085301 6.155048
- S 0 0 -1.085301 6.155048 -1.193831 6.770553
-
- A 11579568 0.053333 6.875000 0.000000 0.000000 0.000000 360.000000
- A 11579568 0.053333 6.250000 0.000000 0.000000 0.000000 360.000000
- G 11579568 0.000000 0.053333 0.000000 0.000000 0
- END
-
-TURNOUT HO "Walthers Transfer Table 933-2968" 512
-# TT was designed with 2.1875" Bridge position spacing table has 48 programmable positions
- P "P1" 1
- P "P2" 2
- P "P3" 3
- P "P4" 4
- P "P5" 5
- E 0.000000 4.375000 270.000000
- E 14.812500 4.375000 90.000000
- E 0.000000 0.000000 270.000000
- E 0.000000 2.187500 270.000000
- E 14.812500 2.187500 90.000000
- E 14.812500 0.000000 90.000000
- E 14.812500 -2.187500 90.000000
- E 14.812500 -4.375000 90.000000
- E 0.000006 -4.375000 270.000000
- E 0.000006 -2.187500 270.000000
- S 0 0.000000 0.000006 -4.375500 14.812506 -4.375480
- S 16777215 0.000000 0.000006 -2.188000 14.812506 -2.187980
- S 16777215 0.000000 0.000000 0.000000 14.812500 0.000020
- S 16777215 0.000000 -0.000006 2.188000 14.812494 2.188020
- S 16777215 0.000000 -0.000012 4.376000 14.812488 4.376020
- F3 14803425 0.000000 4
- 4.000000 -5.875000 0
- 7.000000 -5.875000 0
- 7.000000 -7.000000 0
- 4.000000 -7.000000 0
- L3 0 0.083333 -0.562494 -7.562500 0 -0.562494 6.812500 0
- L3 0 0.083333 15.375006 -7.562500 0 15.375006 6.812500 0
- L3 0 0.083333 -0.562494 -7.563000 0 15.375006 -7.563000 0
- L3 0 0.083333 -0.562494 6.812500 0 15.375006 6.812500 0
- L3 0 0.083333 0.000006 -7.313000 0 0.000006 6.562000 0
- L3 0 0.083333 14.812506 -7.313000 0 14.812506 6.562000 0
- L3 0 0.083333 0.000006 -7.313000 0 14.813006 -7.313000 0
- L3 0 0.083333 0.000006 6.562500 0 14.812506 6.562520 0
- L3 0 0.083333 0.000006 -5.875500 0 14.812506 -5.875500 0
- L3 0 0.083333 0.000006 -2.875500 0 14.812506 -2.875500 0
- L3 0 0.083333 4.000006 -5.875500 0 4.000003 -7.063000 0
- L3 0 0.083333 4.000006 -7.062500 0 8.000006 -7.062500 0
- L3 0 0.083333 7.999999 -7.063000 0 8.000002 -5.875500 0
- L3 0 0.083333 7.000006 -7.062500 0 7.000006 -5.875500 0
- L3 0 0.083333 4.000006 -6.469250 0 7.000006 -6.469250 0
- END
-
+CONTENTS Walthers Cornerstone HO Structures 1
+
+SUBCONTENTS Walthers Cornerstone HO Structures - Dairy Facilities
+STRUCTURE HO "Walthers Cornerstone Structures Sterling Consolidated Dairy Bottling Plant 933-3298"
+ F3 0 0.000000 4
+ 27.554530 4.822044 0
+ 27.554530 4.822044 0
+ 27.554530 4.822044 0
+ 27.554530 4.822044 0
+ F3 12632256 0.000000 4
+ 27.554530 4.850746 0
+ 30.051660 4.850746 0
+ 30.051660 0.229621 0
+ 27.554530 0.229621 0
+ F3 0 0.000000 4
+ 22.962110 5.051665 0
+ 22.962110 5.051665 0
+ 22.962110 5.051665 0
+ 22.962110 5.051665 0
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 4.592422 0.000000 0
+ 4.592422 10.562570 0
+ 0.000000 10.562570 0
+ F3 32768 0.000000 4
+ 0.000000 10.562570 0
+ 0.918485 10.562570 0
+ 0.918485 0.057405 0
+ 0.000000 0.057405 0
+ F3 8388608 0.000000 4
+ 0.918485 0.000000 0
+ 1.148106 0.000000 0
+ 1.148106 10.562570 0
+ 0.918485 10.562570 0
+ F3 8388608 0.000000 4
+ 1.033295 10.562570 0
+ 4.535017 10.562570 0
+ 4.535017 10.332950 0
+ 1.033295 10.332950 0
+ F3 0 0.000000 4
+ 22.847300 10.562570 0
+ 22.847300 10.562570 0
+ 22.847300 10.562570 0
+ 22.847300 10.562570 0
+ F3 8388608 0.000000 4
+ 4.592422 10.562570 0
+ 4.362802 10.562570 0
+ 4.362802 5.051665 0
+ 4.592422 5.051665 0
+ F3 8388608 0.000000 4
+ 22.962110 5.051665 0
+ 4.362802 5.051665 0
+ 4.362802 4.822044 0
+ 22.962110 4.822044 0
+ F3 8388608 0.000000 4
+ 22.962110 10.562570 0
+ 27.525830 10.562570 0
+ 27.525830 10.332950 0
+ 22.962110 10.332950 0
+ F3 8388608 0.000000 4
+ 30.309990 0.000000 0
+ 7.347876 0.000000 0
+ 7.347876 0.229621 0
+ 30.309990 0.229621 0
+ F3 8388608 0.000000 4
+ 7.319173 0.000000 0
+ 1.119403 0.000000 0
+ 1.119403 0.229621 0
+ 7.319173 0.229621 0
+ F3 0 0.000000 4
+ 27.554530 10.591270 0
+ 27.554530 10.591270 0
+ 27.554530 10.591270 0
+ 27.554530 10.591270 0
+ F3 8388608 0.000000 4
+ 27.554530 10.562570 0
+ 27.324910 10.562570 0
+ 27.324910 5.080368 0
+ 27.554530 5.080368 0
+ F3 8388608 0.000000 4
+ 30.309990 5.080368 0
+ 27.324910 5.080368 0
+ 27.324910 4.822044 0
+ 30.309990 4.822044 0
+ F3 8388608 0.000000 4
+ 30.309990 5.080368 0
+ 30.080370 5.080368 0
+ 30.080370 0.258324 0
+ 30.309990 0.258324 0
+ F3 8388608 0.000000 4
+ 22.962110 10.562570 0
+ 23.191730 10.562570 0
+ 23.191730 0.258324 0
+ 22.962110 0.258324 0
+ F3 11316396 0.000000 4
+ 23.191730 10.332950 0
+ 27.267510 10.332950 0
+ 27.267510 0.287026 0
+ 23.191730 0.287026 0
+ G3 8421504 0.000000 1.320634 25.287030 8.352468 0
+ G3 15790320 0.000000 1.092210 25.315730 8.352468 0
+ L3 0 0.000000 25.258320 9.414466 0 25.258320 7.233066 0
+ L3 0 0.000000 24.196330 8.323766 0 26.406430 8.323766 0
+ L3 0 0.000000 24.540760 7.577497 0 26.062000 9.127439 0
+ L3 0 0.000000 24.483350 9.070035 0 26.033290 7.548795 0
+ F3 8388608 0.000000 4
+ 23.880600 6.027555 0
+ 24.339840 6.027555 0
+ 24.339840 6.486797 0
+ 23.880600 6.486797 0
+ F3 0 0.000000 4
+ 23.966710 6.400689 0
+ 24.282430 6.400689 0
+ 24.282430 6.084960 0
+ 23.966710 6.084960 0
+ L3 0 0.000000 25.258320 10.332950 0 25.258320 9.672790 0
+ L3 0 0.000000 25.258320 7.003444 0 25.258320 0.229621 0
+ F3 8388608 0.000000 4
+ 27.324910 4.822044 0
+ 27.554530 4.822044 0
+ 27.554530 0.229621 0
+ 27.324910 0.229621 0
+ L3 0 0.000000 23.191730 0.688863 0 27.324910 0.688863 0
+ L3 0 0.000000 23.163030 1.148106 0 27.324910 1.148106 0
+ L3 0 0.000000 23.191730 1.607348 0 27.296210 1.607348 0
+ L3 0 0.000000 23.191730 2.066590 0 27.324910 2.066590 0
+ L3 0 0.000000 23.191730 2.525832 0 27.324910 2.525832 0
+ L3 0 0.000000 23.191730 2.985075 0 23.191730 2.985075 0
+ L3 0 0.000000 23.191730 2.985075 0 27.324910 2.985075 0
+ F3 12632256 0.000000 4
+ 4.563720 4.822044 0
+ 22.962110 4.822044 0
+ 22.962110 0.229621 0
+ 4.563720 0.229621 0
+ L3 0 0.000000 17.451210 10.390360 0 17.451210 10.390360 0
+ F3 4210752 0.000000 4
+ 21.584390 3.444317 0
+ 20.780710 3.444317 0
+ 20.780710 1.664753 0
+ 21.584390 1.664753 0
+ F3 4210752 0.000000 4
+ 8.323766 3.444317 0
+ 11.136620 3.444317 0
+ 11.136620 1.894374 0
+ 8.323766 1.894374 0
+ G3 4210752 0.000000 0.292710 21.986220 4.133180 0
+ G3 4210752 0.000000 0.462817 5.970150 2.353616 0
+ F3 4210752 0.000000 4
+ 14.236510 4.133180 0
+ 15.154990 4.133180 0
+ 15.154990 3.329506 0
+ 14.236510 3.329506 0
+ F3 4210752 0.000000 4
+ 14.236510 1.377727 0
+ 15.154990 1.377727 0
+ 15.154990 0.631458 0
+ 14.236510 0.631458 0
+ F3 4210752 0.000000 4
+ 2.181401 2.525832 0
+ 2.870264 2.525832 0
+ 2.870264 1.836969 0
+ 2.181401 1.836969 0
+ F3 4473924 0.000000 4
+ 2.066590 8.725603 0
+ 3.329506 8.725603 0
+ 3.329506 7.634902 0
+ 2.066590 7.634902 0
+ L3 0 0.000000 32.950630 12.858780 0 32.950630 12.858780 0
+ L3 0 0.000000 23.163030 3.444317 0 27.296210 3.444317 0
+ L3 0 0.000000 23.163030 3.960964 0 27.267510 3.960964 0
+ L3 0 0.000000 23.163030 4.420207 0 27.296210 4.420207 0
+ L3 0 0.000000 23.134330 4.850746 0 27.267510 4.850746 0
+ L3 0 0.000000 23.134330 5.281286 0 27.267510 5.281286 0
+ L3 0 0.000000 23.163030 5.740528 0 27.296210 5.740528 0
+ L3 0 0.000000 23.134330 6.199770 0 23.851890 6.199770 0
+ L3 0 0.000000 24.339840 6.199770 0 27.296210 6.199770 0
+ L3 0 0.000000 23.134330 6.659013 0 27.296210 6.659013 0
+ L3 0 0.000000 23.134330 7.118255 0 24.856490 7.118255 0
+ L3 0 0.000000 25.688860 7.118255 0 27.296210 7.118255 0
+ L3 0 0.000000 23.163030 7.577497 0 24.196330 7.577497 0
+ L3 0 0.000000 26.320320 7.577497 0 27.324910 7.577497 0
+ L3 0 0.000000 23.134330 8.036739 0 23.995410 8.036739 0
+ L3 0 0.000000 26.549940 8.036739 0 27.267510 8.036739 0
+ L3 0 0.000000 23.134330 8.467279 0 23.134330 8.495982 0
+ L3 0 0.000000 23.163030 8.495982 0 23.938000 8.495982 0
+ L3 0 0.000000 26.578650 8.495982 0 27.267510 8.495982 0
+ L3 0 0.000000 23.134330 8.955224 0 24.110220 8.955224 0
+ L3 0 0.000000 26.435130 8.955224 0 27.296210 8.955224 0
+ L3 0 0.000000 23.134330 9.414466 0 24.483350 9.414466 0
+ L3 0 0.000000 26.033290 9.414466 0 27.238810 9.414466 0
+ L3 0 0.000000 23.134330 9.873709 0 27.267510 9.873709 0
+ END$SEGS
+STRUCTURE HO "Walthers Cornerstone Structures Sterling Consolidated Dairy Power House 933-3298"
+ L3 0 0.000000 0.000000 0.000000 0 4.822044 0.000000 0
+ L3 0 0.000000 4.822044 0.000000 0 4.822044 4.822044 0
+ L3 8388608 0.000000 4.822044 4.822044 0 0.000000 4.822044 0
+ L3 8388608 0.000000 0.000000 4.822044 0 0.000000 0.000000 0
+ F3 8388608 0.000000 4
+ 0.000000 0.000000 0
+ 4.822044 0.000000 0
+ 4.822044 0.229621 0
+ 0.000000 0.229621 0
+ F3 8388608 0.000000 4
+ 0.000000 0.000000 0
+ 0.229621 0.000000 0
+ 0.229621 4.822044 0
+ 0.000000 4.822044 0
+ F3 8388608 0.000000 4
+ 0.000000 4.822044 0
+ 4.822044 4.822044 0
+ 4.822044 4.592422 0
+ 0.000000 4.592422 0
+ F3 8388608 0.000000 4
+ 4.822044 4.822044 0
+ 4.592422 4.822044 0
+ 4.592422 0.000000 0
+ 4.822044 0.000000 0
+ F3 12632256 0.000000 4
+ 0.229621 4.592422 0
+ 4.592422 4.592422 0
+ 4.592422 0.229621 0
+ 0.229621 0.229621 0
+ L3 0 0.000000 2.324914 4.592422 0 2.324914 4.592422 0
+ L3 0 0.000000 2.296211 4.592422 0 2.296211 0.229621 0
+ L3 0 0.000000 0.200919 4.133180 0 4.592422 4.133180 0
+ L3 0 0.000000 0.200919 3.673938 0 4.592422 3.673938 0
+ L3 0 0.000000 0.200919 3.214696 0 4.592422 3.214696 0
+ L3 0 0.000000 0.229621 2.755454 0 4.592422 2.755454 0
+ L3 0 0.000000 0.229621 2.296211 0 4.592422 2.296211 0
+ L3 0 0.000000 0.229621 1.836969 0 4.592422 1.836969 0
+ L3 0 0.000000 0.229621 1.377727 0 4.592422 1.377727 0
+ L3 0 0.000000 0.229621 0.918485 0 4.592422 0.889782 0
+ L3 0 0.000000 0.229621 0.459242 0 4.592422 0.459242 0
+ F3 0 0.000000 4
+ 1.492537 2.640643 0
+ 1.865672 2.640643 0
+ 1.865672 2.382319 0
+ 1.492537 2.382319 0
+ F3 0 0.000000 4
+ 2.755454 2.611940 0
+ 3.157290 2.611940 0
+ 3.157290 2.353616 0
+ 2.755454 2.353616 0
+ END$SEGS
+STRUCTURE HO "Walthers Cornerstone Structures Sterling Consolidated Dairy Smoke Stack 933-3298"
+ G3 8388608 0.000000 0.689460 0.689460 0.689460 0
+ G3 0 0.000000 0.516648 0.689460 0.689460 0
+ END$SEGS
+STRUCTURE HO "Walthers Cornerstone Structures Sterling Consolidated Dairy Office/Freight House 933-3298"
+ F3 8388608 0.000000 4
+ 0.172216 0.229621 0
+ 15.614240 0.229621 0
+ 15.614240 0.000000 0
+ 0.172216 0.000000 0
+ F3 8388608 0.000000 4
+ 0.000000 0.000000 0
+ 0.200919 0.000000 0
+ 0.200919 6.888634 0
+ 0.000000 6.888634 0
+ F3 8388608 0.000000 4
+ 15.614240 0.000000 0
+ 15.355910 0.000000 0
+ 15.355910 6.888634 0
+ 15.614240 6.888634 0
+ F3 8388608 0.000000 4
+ 0.000000 6.888634 0
+ 15.585530 6.888634 0
+ 15.585530 6.659013 0
+ 0.000000 6.659013 0
+ F3 12632256 0.000000 4
+ 0.200919 6.659013 0
+ 15.327210 6.659013 0
+ 15.327210 0.258324 0
+ 0.200919 0.258324 0
+ F3 8388608 0.000000 4
+ 4.592422 6.659013 0
+ 4.822044 6.659013 0
+ 4.822044 0.000000 0
+ 4.592422 0.000000 0
+ L3 0 0.000000 0.000000 3.444317 0 4.649828 3.444317 0
+ F3 7039851 0.000000 4
+ 1.262916 5.740528 0
+ 1.664753 5.740528 0
+ 1.664753 5.281286 0
+ 1.262916 5.281286 0
+ G3 7105644 0.000000 0.243551 1.148106 1.894374 0
+ L3 0 0.000000 0.459242 6.659013 0 0.459242 0.229621 0
+ L3 0 0.000000 0.918485 6.659013 0 0.889782 0.258324 0
+ L3 0 0.000000 1.377727 6.659013 0 1.377727 5.740528 0
+ L3 0 0.000000 1.377727 5.281286 0 1.377727 0.229621 0
+ L3 0 0.000000 1.836969 6.659013 0 1.836969 0.229621 0
+ L3 0 0.000000 2.296211 6.659013 0 2.296211 0.229621 0
+ L3 0 0.000000 2.755454 6.659013 0 2.755454 0.287026 0
+ L3 0 0.000000 3.214696 6.659013 0 3.214696 0.229621 0
+ L3 0 0.000000 3.673938 6.659013 0 3.673938 0.229621 0
+ L3 0 0.000000 4.133180 6.659013 0 4.133180 0.258324 0
+ F3 7368816 0.000000 4
+ 9.816303 3.903559 0
+ 10.505170 3.903559 0
+ 10.505170 3.214696 0
+ 9.816303 3.214696 0
+ G3 7631988 0.000000 0.317031 6.429391 5.510907 0
+ G3 7039851 0.000000 0.344432 6.429391 1.377727 0
+ G3 6776679 0.000000 0.345626 13.777270 1.377727 0
+ G3 0 0.000000 0.344432 13.777270 5.510907 0
+ END$SEGS
+STRUCTURE HO "Walthers Cornerstone Structures Sterling Consolidated Dairy Store 933-3298"
+ F3 16776960 0.000000 4
+ 0.000000 0.000000 0
+ 0.229621 0.000000 0
+ 0.229621 5.051665 0
+ 0.000000 5.051665 0
+ F3 16776960 0.000000 4
+ 0.000000 0.000000 0
+ 3.444317 0.000000 0
+ 3.444317 0.229621 0
+ 0.000000 0.229621 0
+ F3 16776960 0.000000 4
+ 0.000000 5.051665 0
+ 3.444317 5.051665 0
+ 3.444317 4.822044 0
+ 0.000000 4.822044 0
+ F3 16776960 0.000000 4
+ 3.444317 0.000000 0
+ 3.214696 0.000000 0
+ 3.214696 5.051665 0
+ 3.444317 5.051665 0
+ F3 15000804 0.000000 4
+ 0.229621 4.822044 0
+ 3.185993 4.822044 0
+ 3.185993 0.229621 0
+ 0.229621 0.229621 0
+ F3 0 0.000000 4
+ 0.459242 4.133180 0
+ 0.774971 4.133180 0
+ 0.774971 3.817451 0
+ 0.459242 3.817451 0
+ END$SEGS
+
+
+SUBCONTENTS Walthers Cornerstone HO Structures - Railroad Facilities
+STRUCTURE HO "Walther's Trackside Interlocking Tower 933-2600A"
+ F3 8421504 0.000000 4
+ 0.028703 0.000000 0
+ 2.324914 0.000000 0
+ 2.324914 2.296211 0
+ 0.028703 2.296211 0
+ L3 0 0.000000 0.000000 0.000000 0 2.296211 2.296211 0
+ L3 0 0.000000 2.296211 0.000000 0 0.028703 2.296211 0
+ F3 12976128 0.000000 4
+ 2.324914 2.296211 0
+ 1.865672 2.296211 0
+ 1.865672 3.673938 0
+ 2.324914 3.673938 0
+ F3 13369344 0.000000 4
+ 1.865672 2.296211 0
+ 0.028703 2.296211 0
+ 0.028703 2.611940 0
+ 1.865672 2.611940 0
+ F3 15790320 0.000000 4
+ 0.028703 1.377727 0
+ 0.373134 1.377727 0
+ 0.373134 0.918485 0
+ 0.028703 0.918485 0
+ F3 0 0.000000 4
+ 0.086108 1.262916 0
+ 0.258324 1.262916 0
+ 0.258324 1.033295 0
+ 0.086108 1.033295 0
+ L3 0 0.000000 0.717566 2.296211 0 0.717566 2.640643 0
+ L3 0 0.000000 1.865672 2.640643 0 2.324914 2.640643 0
+ L3 0 0.000000 2.324914 2.640643 0 2.324914 2.296211 0
+ L3 0 0.000000 2.324914 2.296211 0 1.865672 2.296211 0
+ L3 0 0.000000 1.865672 2.296211 0 1.865672 2.640643 0
+ L3 0 0.000000 1.865672 3.444317 0 2.296211 3.444317 0
+ L3 0 0.000000 1.865672 3.214696 0 2.324914 3.214696 0
+ L3 0 0.000000 1.865672 2.985075 0 2.324914 2.985075 0
+ L3 0 0.000000 1.865672 2.755454 0 2.267509 2.755454 0
+ L3 0 0.000000 0.947187 2.296211 0 0.947187 2.669346 0
+ L3 0 0.000000 1.176808 2.296211 0 1.176808 2.669346 0
+ L3 0 0.000000 1.406429 2.296211 0 1.406429 2.640643 0
+ L3 0 0.000000 1.636051 2.296211 0 1.636051 2.669346 0
+ END$SEGS
+STRUCTURE HO "Walther's Speeder Shed 933-2600B"
+ F3 10724259 0.000000 4
+ 0.000000 1.836969 0
+ 2.066590 1.836969 0
+ 2.066590 4.822044 0
+ 0.000000 4.822044 0
+ L3 0 0.000000 1.004592 1.836969 0 1.031238 4.822062 0
+ F3 12632256 0.000000 4
+ 0.315729 0.000000 0
+ 1.693456 0.000000 0
+ 1.693456 1.836969 0
+ 0.315729 1.836969 0
+ L3 0 0.000000 0.631458 0.000000 0 0.631458 1.836969 0
+ L3 0 0.000000 1.377727 0.000000 0 1.377727 1.836969 0
+ L3 0 0.000000 0.631458 0.229621 0 1.377727 0.229621 0
+ L3 0 0.000000 0.602756 0.459242 0 1.377727 0.459242 0
+ L3 0 0.000000 0.631458 0.688863 0 1.349024 0.688863 0
+ L3 0 0.000000 0.631458 0.918485 0 1.406429 0.918485 0
+ L3 0 0.000000 0.631458 1.148106 0 1.377727 1.148106 0
+ L3 0 0.000000 0.631458 1.377727 0 1.377727 1.377727 0
+ L3 0 0.000000 0.602756 1.607348 0 1.377727 1.607348 0
+ END$SEGS
+STRUCTURE HO "Walther's Crossing Shanty 933-2600C"
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 1.148106 0.000000 0
+ 1.148106 0.459242 0
+ 0.000000 0.459242 0
+ F3 11053224 0.000000 4
+ 0.000000 0.459242 0
+ 1.119403 0.459242 0
+ 1.119403 1.377727 0
+ 0.000000 1.377727 0
+ L3 0 0.000000 0.000000 0.918485 0 1.119403 0.918485 0
+ G3 0 0.000000 0.057405 0.344432 1.148106 0
+ F3 16776960 0.000000 4
+ 1.119403 1.205511 0
+ 1.607348 1.205511 0
+ 1.607348 0.545350 0
+ 1.119403 0.545350 0
+ L3 0 0.000000 1.119403 1.234214 0 1.578645 1.234214 0
+ L3 0 0.000000 1.578645 1.234214 0 1.578645 0.516648 0
+ L3 0 0.000000 1.578645 0.516648 0 1.119403 0.516648 0
+ L3 0 0.000000 1.119403 0.516648 0 1.119403 1.234214 0
+ END$SEGS
+STRUCTURE HO "Walther's Speeder 933-2600D"
+ F3 16776960 0.000000 4
+ 0.000000 0.000000 0
+ 0.918485 0.000000 0
+ 0.918485 0.688863 0
+ 0.000000 0.688863 0
+ L3 0 0.000000 0.000000 0.000000 0 0.918485 0.000000 0
+ L3 0 0.000000 0.918485 0.000000 0 0.918485 0.688863 0
+ L3 0 0.000000 0.918485 0.688863 0 0.000000 0.688863 0
+ L3 0 0.000000 0.000000 0.688863 0 0.000000 0.000000 0
+ G3 0 0.000000 0.028703 0.057405 0.344432 0
+ END$SEGS
+STRUCTURE HO "Walther's Icing Platform 292-3061"
+ F3 13816530 0.000000 4
+ 0.000000 0.028703 0
+ 18.369690 0.028703 0
+ 18.369690 2.669346 0
+ 0.000000 2.669346 0
+ F3 8404992 0.000000 4
+ 0.000000 2.669346 0
+ 0.086108 2.669346 0
+ 0.086108 0.057405 0
+ 0.000000 0.057405 0
+ F3 8404992 0.000000 4
+ 0.000000 2.669346 0
+ 18.369690 2.669346 0
+ 18.369690 2.583238 0
+ 0.000000 2.583238 0
+ F3 8404992 0.000000 4
+ 0.000000 0.028703 0
+ 18.369690 0.028703 0
+ 18.369690 0.114811 0
+ 0.000000 0.114811 0
+ F3 8404992 0.000000 4
+ 18.369690 1.636051 0
+ 21.785310 1.636051 0
+ 21.785310 0.947187 0
+ 18.369690 0.947187 0
+ F3 8404992 0.000000 4
+ 19.833520 0.918485 0
+ 19.747420 0.918485 0
+ 19.747420 0.000000 0
+ 19.833520 0.000000 0
+ F3 8404992 0.000000 4
+ 19.833520 2.583238 0
+ 19.747420 2.583238 0
+ 19.747420 1.607348 0
+ 19.833520 1.607348 0
+ L3 0 0.000000 18.599310 1.664753 0 18.599310 0.918485 0
+ L3 12632256 0.000000 18.828930 1.664753 0 18.828930 0.947187 0
+ L3 0 0.000000 19.058550 1.636051 0 19.058550 0.947187 0
+ L3 0 0.000000 19.288180 1.664753 0 19.288180 0.975890 0
+ L3 0 0.000000 19.517800 1.664753 0 19.517800 0.975890 0
+ L3 0 0.000000 19.747420 1.636051 0 19.747420 0.975890 0
+ L3 0 0.000000 19.977040 1.636051 0 19.977040 0.947187 0
+ L3 0 0.000000 20.206660 1.636051 0 20.206660 0.918485 0
+ L3 0 0.000000 20.436280 1.664753 0 20.436280 0.975890 0
+ L3 0 0.000000 20.665900 1.664753 0 20.665900 0.918485 0
+ L3 0 0.000000 20.895520 1.664753 0 20.895520 0.975890 0
+ L3 0 0.000000 21.125140 1.636051 0 21.125140 0.947187 0
+ L3 0 0.000000 21.354760 1.636051 0 21.354760 0.975890 0
+ L3 0 0.000000 21.584390 1.664753 0 21.584390 0.947187 0
+ F3 13816530 0.000000 4
+ 18.340990 0.143513 0
+ 19.747420 0.143513 0
+ 19.747420 2.583238 0
+ 18.340990 2.583238 0
+ F3 8404992 0.000000 4
+ 18.312280 2.669346 0
+ 19.804820 2.669346 0
+ 19.804820 2.583238 0
+ 18.312280 2.583238 0
+ F3 8404992 0.000000 4
+ 18.369690 0.028703 0
+ 19.747420 0.028703 0
+ 19.747420 0.114811 0
+ 18.369690 0.114811 0
+ END$SEGS
+STRUCTURE HO "Walther's Icing Platform Add-On 292-3062"
+ F3 13816530 0.000000 4
+ 0.000000 0.028703 0
+ 18.369690 0.028703 0
+ 18.369690 2.669346 0
+ 0.000000 2.669346 0
+ F3 8404992 0.000000 4
+ 0.000000 2.669346 0
+ 0.086108 2.669346 0
+ 0.086108 0.057405 0
+ 0.000000 0.057405 0
+ F3 8404992 0.000000 4
+ 0.000000 2.669346 0
+ 18.369690 2.669346 0
+ 18.369690 2.583238 0
+ 0.000000 2.583238 0
+ F3 8404992 0.000000 4
+ 0.000000 0.028703 0
+ 18.369690 0.028703 0
+ 18.369690 0.114811 0
+ 0.000000 0.114811 0
+ F3 13684944 0.000000 4
+ 19.833520 0.918485 0
+ 19.747420 0.918485 0
+ 19.747420 0.000000 0
+ 19.833520 0.000000 0
+ F3 13684944 0.000000 4
+ 19.833520 2.583238 0
+ 19.747420 2.583238 0
+ 19.747420 1.607348 0
+ 19.833520 1.607348 0
+ F3 13816530 0.000000 4
+ 18.340990 0.143513 0
+ 19.747420 0.143513 0
+ 19.747420 2.583238 0
+ 18.340990 2.583238 0
+ F3 8404992 0.000000 4
+ 18.312280 2.669346 0
+ 19.804820 2.669346 0
+ 19.804820 2.583238 0
+ 18.312280 2.583238 0
+ F3 8404992 0.000000 4
+ 18.369690 0.028703 0
+ 19.747420 0.028703 0
+ 19.747420 0.114811 0
+ 18.369690 0.114811 0
+ F3 13816530 0.000000 4
+ 19.833520 1.636051 0
+ 19.747420 1.636051 0
+ 19.747420 0.918485 0
+ 19.833520 0.918485 0
+ END$SEGS
+STRUCTURE HO "Walther's Ice House 292-526"
+ F3 8421504 0.000000 4
+ 3.673938 1.808266 0
+ 12.858780 1.808266 0
+ 12.858780 7.319173 0
+ 3.673938 7.319173 0
+ F3 8421504 0.000000 4
+ 0.000000 5.482204 0
+ 3.673938 5.482204 0
+ 3.673938 3.645235 0
+ 0.000000 3.645235 0
+ L3 0 0.000000 0.000000 4.563720 0 12.887490 4.563720 0
+ L3 0 0.000000 3.673938 5.482204 0 3.673938 3.645235 0
+ F3 8421504 0.000000 4
+ 12.858780 6.859931 0
+ 16.532720 6.859931 0
+ 16.532720 2.267509 0
+ 12.858780 2.267509 0
+ L3 0 0.000000 12.858780 6.859931 0 12.858780 2.267509 0
+ L3 0 0.000000 12.858780 4.563720 0 16.532720 4.563720 0
+ F3 14737632 0.000000 4
+ 12.858780 2.267509 0
+ 16.532720 2.267509 0
+ 16.532720 1.808266 0
+ 12.858780 1.808266 0
+ F3 15132390 0.000000 4
+ 12.858780 6.859931 0
+ 16.532720 6.859931 0
+ 16.532720 7.319173 0
+ 12.858780 7.319173 0
+ F3 8421504 0.000000 4
+ 16.532720 6.859931 0
+ 18.369690 6.859931 0
+ 18.369690 2.296211 0
+ 16.532720 2.296211 0
+ L3 0 0.000000 16.532720 2.267509 0 16.532720 6.859931 0
+ F3 8421504 0.000000 4
+ 16.532720 0.889782 0
+ 15.154990 0.889782 0
+ 15.154990 2.267509 0
+ 16.532720 2.267509 0
+ L3 0 0.000000 15.154990 2.267509 0 16.532720 2.267509 0
+ F3 8421504 0.000000 4
+ 16.532720 2.296211 0
+ 18.369690 2.296211 0
+ 18.369690 0.000000 0
+ 16.532720 0.000000 0
+ L3 0 0.000000 16.532720 2.267509 0 18.369690 2.267509 0
+ L3 0 0.000000 16.532720 2.411022 0 16.532720 0.889782 0
+ G3 15790320 0.000000 0.516648 17.451210 1.578645 0
+ G3 0 0.000000 0.345626 17.451210 1.578645 0
+ END$SEGS
+STRUCTURE HO "Walther's Icing Platform 933-3245B"
+ F3 8421504 0.000000 4
+ 0.000000 0.000000 0
+ 16.991960 0.000000 0
+ 16.991960 1.607348 0
+ 0.000000 1.607348 0
+ L3 0 0.000000 0.000000 0.803674 0 16.991960 0.803674 0
+ F3 13882323 0.000000 4
+ 16.991960 1.033295 0
+ 18.140070 1.033295 0
+ 18.140070 0.574053 0
+ 16.991960 0.574053 0
+ L3 0 0.000000 17.221580 1.033295 0 17.221580 0.574053 0
+ L3 0 0.000000 17.451210 1.033295 0 17.451210 0.574053 0
+ L3 0 0.000000 17.680830 1.033295 0 17.680830 0.602756 0
+ L3 0 0.000000 17.910450 1.033295 0 17.910450 0.574053 0
+ END$SEGS
+STRUCTURE HO "Walther's Ice House 933-3245A"
+ F3 8421504 0.000000 4
+ 0.000000 0.000000 0
+ 11.940300 0.000000 0
+ 11.940300 5.281286 0
+ 0.000000 5.281286 0
+ L3 0 0.000000 0.000000 2.640643 0 11.940300 2.640643 0
+ L3 0 0.000000 2.755454 2.640643 0 2.755454 0.000000 0
+ L3 0 0.000000 9.184845 2.640643 0 9.184845 0.000000 0
+ L3 0 0.000000 2.296211 1.836969 0 2.296211 0.000000 0
+ L3 0 0.000000 3.214696 1.836969 0 3.214696 0.000000 0
+ L3 0 0.000000 8.725603 1.836969 0 8.725603 0.000000 0
+ L3 0 0.000000 9.644088 1.836969 0 9.644088 0.000000 0
+ L3 0 0.000000 2.755454 2.640643 0 2.296211 1.836969 0
+ L3 0 0.000000 2.755454 2.640643 0 3.214696 1.836969 0
+ L3 0 0.000000 9.184845 2.640643 0 8.725603 1.836969 0
+ L3 0 0.000000 9.184845 2.640643 0 9.644088 1.836969 0
+ L3 0 0.000000 0.918485 2.985075 0 1.549943 2.985075 0
+ L3 0 0.000000 1.549943 2.985075 0 1.549943 2.296211 0
+ L3 0 0.000000 1.549943 2.296211 0 0.918485 2.296211 0
+ L3 0 0.000000 0.918485 2.296211 0 0.918485 2.985075 0
+ L3 0 0.000000 5.625718 2.296211 0 6.314581 2.296211 0
+ L3 0 0.000000 6.314581 2.296211 0 6.314581 2.985075 0
+ L3 0 0.000000 6.314581 2.985075 0 5.625718 2.985075 0
+ L3 0 0.000000 5.625718 2.985075 0 5.625718 2.296211 0
+ L3 0 0.000000 11.021810 2.296211 0 10.332950 2.296211 0
+ L3 0 0.000000 10.332950 2.296211 0 10.332950 2.985075 0
+ L3 0 0.000000 10.332950 2.985075 0 11.021810 2.985075 0
+ L3 0 0.000000 11.021810 2.985075 0 11.021810 2.296211 0
+ END$SEGS
+STRUCTURE HO "Walther's Cornerstone Structure The Bralick Building 933-3255"
+ F3 12632256 0.000000 4
+ 0.000000 0.688863 0
+ 12.399540 0.688863 0
+ 12.399540 9.931114 0
+ 0.000000 9.931114 0
+ F3 12632256 0.000000 4
+ 4.822044 0.000000 0
+ 6.773823 0.000000 0
+ 6.773823 0.688863 0
+ 4.822044 0.688863 0
+ F3 12632256 0.000000 4
+ 13.088400 1.836969 0
+ 12.399540 1.836969 0
+ 12.399540 2.985075 0
+ 13.088400 2.985075 0
+ F3 8421504 0.000000 4
+ 0.229621 9.758898 0
+ 12.227330 9.758898 0
+ 12.227330 0.861079 0
+ 0.229621 0.861079 0
+ L3 0 0.000000 4.822044 0.688863 0 6.745121 0.688863 0
+ L3 0 0.000000 12.399540 2.985075 0 12.399540 1.836969 0
+ F3 12632256 0.000000 4
+ 4.362802 3.673938 0
+ 7.347876 3.673938 0
+ 7.347876 7.347876 0
+ 4.362802 7.347876 0
+ F3 12632256 0.000000 4
+ 9.471871 7.577497 0
+ 10.074630 7.577497 0
+ 10.074630 7.032147 0
+ 9.471871 7.032147 0
+ END$SEGS
+STRUCTURE HO "Walther's Cornerstone Structure Yard Office 933-3822"
+ F3 8421504 0.000000 4
+ 0.000000 0.688863 0
+ 5.281286 0.688863 0
+ 5.281286 4.822044 0
+ 0.000000 4.822044 0
+ F3 12632256 0.000000 4
+ 5.051665 0.746269 0
+ 4.362802 0.746269 0
+ 4.362802 0.000000 0
+ 5.051665 0.000000 0
+ F3 12632256 0.000000 4
+ 1.836969 0.660161 0
+ 2.554535 0.660161 0
+ 2.554535 0.000000 0
+ 1.836969 0.000000 0
+ L3 0 0.000000 1.836969 0.229621 0 2.525832 0.229621 0
+ L3 0 0.000000 1.836969 0.459242 0 2.525832 0.459242 0
+ L3 0 0.000000 1.836969 0.688863 0 2.583238 0.688863 0
+ L3 0 0.000000 4.362802 0.688863 0 5.051665 0.688863 0
+ L3 0 0.000000 4.362802 0.459242 0 5.022962 0.459242 0
+ L3 0 0.000000 4.362802 0.229621 0 5.051665 0.229621 0
+ F3 12632256 0.000000 4
+ 0.459242 4.822044 0
+ 2.755454 4.822044 0
+ 2.755454 5.970150 0
+ 0.459242 5.970150 0
+ F3 12632256 0.000000 4
+ 0.688863 5.970150 0
+ 1.836969 5.970150 0
+ 1.836969 6.400689 0
+ 0.688863 6.400689 0
+ F3 12632256 0.000000 4
+ 0.918485 6.429391 0
+ 1.549943 6.429391 0
+ 1.549943 7.347876 0
+ 0.918485 7.347876 0
+ L3 0 0.000000 0.688863 5.970150 0 1.865672 5.970150 0
+ L3 0 0.000000 0.918485 6.429391 0 1.549943 6.429391 0
+ F3 8388608 0.000000 4
+ 0.000000 4.822044 0
+ 0.114811 4.822044 0
+ 0.114811 0.688863 0
+ 0.000000 0.688863 0
+ F3 8388608 0.000000 4
+ 0.000000 0.688863 0
+ 5.252584 0.688863 0
+ 5.252584 0.832377 0
+ 0.000000 0.832377 0
+ F3 8388608 0.000000 4
+ 5.252584 0.688863 0
+ 5.109070 0.688863 0
+ 5.109070 4.822044 0
+ 5.252584 4.822044 0
+ F3 12632256 0.000000 4
+ 0.459242 1.377727 0
+ 0.803674 1.377727 0
+ 0.803674 1.664753 0
+ 0.459242 1.664753 0
+ F3 12632256 0.000000 4
+ 0.459242 4.247991 0
+ 0.803674 4.247991 0
+ 0.803674 3.903559 0
+ 0.459242 3.903559 0
+ F3 16777215 0.000000 4
+ 2.296211 3.214696 0
+ 2.755454 3.214696 0
+ 2.755454 2.755454 0
+ 2.296211 2.755454 0
+ F3 0 0.000000 4
+ 2.353616 3.128588 0
+ 2.669346 3.128588 0
+ 2.669346 2.870264 0
+ 2.353616 2.870264 0
+ G3 0 0.000000 0.143513 4.133180 3.099885 0
+ END$SEGS
+STRUCTURE HO "Walther's Cornerstone Structure Shed 933-3822"
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 7.577497 0.000000 0
+ 7.577497 4.822044 0
+ 0.000000 4.822044 0
+ L3 0 0.000000 0.000000 2.411022 0 7.520092 2.411022 0
+ F3 0 0.000000 4
+ 3.559128 2.525832 0
+ 3.788749 2.525832 0
+ 3.788749 2.296211 0
+ 3.559128 2.296211 0
+ L3 0 0.000000 0.229621 4.822044 0 0.229621 0.000000 0
+ L3 0 0.000000 0.459242 4.822044 0 0.430540 0.000000 0
+ L3 0 0.000000 0.688863 4.822044 0 0.688863 0.000000 0
+ L3 0 0.000000 0.918485 4.822044 0 0.918485 0.000000 0
+ L3 0 0.000000 1.148106 4.822044 0 1.119403 0.000000 0
+ L3 0 0.000000 1.377727 4.822044 0 1.349024 0.000000 0
+ L3 0 0.000000 1.607348 0.000000 0 1.607348 4.822044 0
+ L3 0 0.000000 1.836969 0.000000 0 1.836969 4.822044 0
+ L3 0 0.000000 2.066590 0.000000 0 2.066590 4.822044 0
+ L3 0 0.000000 2.296211 4.822044 0 2.296211 0.000000 0
+ L3 0 0.000000 2.525832 4.822044 0 2.525832 0.000000 0
+ L3 0 0.000000 2.755454 4.822044 0 2.726751 0.028703 0
+ L3 0 0.000000 2.985075 4.822044 0 2.985075 0.000000 0
+ L3 0 0.000000 3.214696 4.822044 0 3.214696 0.000000 0
+ L3 0 0.000000 3.444317 4.822044 0 3.444317 0.000000 0
+ L3 0 0.000000 3.673938 4.822044 0 3.673938 0.000000 0
+ L3 0 0.000000 3.903559 4.822044 0 3.874856 0.028703 0
+ L3 0 0.000000 4.133180 4.822044 0 4.104478 0.000000 0
+ L3 0 0.000000 4.362802 0.000000 0 4.334099 4.822044 0
+ L3 0 0.000000 4.592422 0.000000 0 4.592422 4.822044 0
+ L3 0 0.000000 5.510907 0.000000 0 5.510907 4.822044 0
+ L3 0 0.000000 5.051665 0.000000 0 5.051665 4.822044 0
+ L3 0 0.000000 4.822044 4.822044 0 4.822044 0.000000 0
+ L3 0 0.000000 5.281286 4.822044 0 5.281286 0.000000 0
+ L3 0 0.000000 5.740528 4.822044 0 5.740528 0.000000 0
+ L3 0 0.000000 5.970150 4.822044 0 5.970150 0.000000 0
+ L3 0 0.000000 6.199770 4.822044 0 6.171068 0.000000 0
+ L3 0 0.000000 6.429391 4.822044 0 6.429391 0.028703 0
+ L3 0 0.000000 6.659013 4.822044 0 6.659013 0.000000 0
+ L3 0 0.000000 6.888634 4.822044 0 6.859931 0.057405 0
+ L3 0 0.000000 7.118255 4.822044 0 7.118255 0.000000 0
+ L3 0 0.000000 7.347876 4.822044 0 7.347876 0.000000 0
+ END$SEGS
+STRUCTURE HO "Walther's Cornerstone Structures Shed 933-3822"
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 7.577497 0.000000 0
+ 7.577497 4.822044 0
+ 0.000000 4.822044 0
+ L3 0 0.000000 0.000000 2.411022 0 7.520092 2.411022 0
+ F3 0 0.000000 4
+ 3.559128 2.525832 0
+ 3.788749 2.525832 0
+ 3.788749 2.296211 0
+ 3.559128 2.296211 0
+ L3 0 0.000000 0.229621 4.822044 0 0.229621 0.000000 0
+ L3 0 0.000000 0.459242 4.822044 0 0.430540 0.000000 0
+ L3 0 0.000000 0.688863 4.822044 0 0.688863 0.000000 0
+ L3 0 0.000000 0.918485 4.822044 0 0.918485 0.000000 0
+ L3 0 0.000000 1.148106 4.822044 0 1.119403 0.000000 0
+ L3 0 0.000000 1.377727 4.822044 0 1.349024 0.000000 0
+ L3 0 0.000000 1.607348 0.000000 0 1.607348 4.822044 0
+ L3 0 0.000000 1.836969 0.000000 0 1.836969 4.822044 0
+ L3 0 0.000000 2.066590 0.000000 0 2.066590 4.822044 0
+ L3 0 0.000000 2.296211 4.822044 0 2.296211 0.000000 0
+ L3 0 0.000000 2.525832 4.822044 0 2.525832 0.000000 0
+ L3 0 0.000000 2.755454 4.822044 0 2.726751 0.028703 0
+ L3 0 0.000000 2.985075 4.822044 0 2.985075 0.000000 0
+ L3 0 0.000000 3.214696 4.822044 0 3.214696 0.000000 0
+ L3 0 0.000000 3.444317 4.822044 0 3.444317 0.000000 0
+ L3 0 0.000000 3.673938 4.822044 0 3.673938 0.000000 0
+ L3 0 0.000000 3.903559 4.822044 0 3.874856 0.028703 0
+ L3 0 0.000000 4.133180 4.822044 0 4.104478 0.000000 0
+ L3 0 0.000000 4.362802 0.000000 0 4.334099 4.822044 0
+ L3 0 0.000000 4.592422 0.000000 0 4.592422 4.822044 0
+ L3 0 0.000000 5.510907 0.000000 0 5.510907 4.822044 0
+ L3 0 0.000000 5.051665 0.000000 0 5.051665 4.822044 0
+ L3 0 0.000000 4.822044 4.822044 0 4.822044 0.000000 0
+ L3 0 0.000000 5.281286 4.822044 0 5.281286 0.000000 0
+ L3 0 0.000000 5.740528 4.822044 0 5.740528 0.000000 0
+ L3 0 0.000000 5.970150 4.822044 0 5.970150 0.000000 0
+ L3 0 0.000000 6.199770 4.822044 0 6.171068 0.000000 0
+ L3 0 0.000000 6.429391 4.822044 0 6.429391 0.028703 0
+ L3 0 0.000000 6.659013 4.822044 0 6.659013 0.000000 0
+ L3 0 0.000000 6.888634 4.822044 0 6.859931 0.057405 0
+ L3 0 0.000000 7.118255 4.822044 0 7.118255 0.000000 0
+ L3 0 0.000000 7.347876 4.822044 0 7.347876 0.000000 0
+ END$SEGS
+STRUCTURE HO "Walthers Shady Jct Water Tower 933-3205a"
+ L 0 0 0.000000 0.000000 2.870264 0.000000
+ L 0 0 2.870264 0.000000 2.870264 2.870264
+ L 0 0 2.870264 2.870264 0.000000 2.870264
+ L 0 0 0.000000 2.870264 0.000000 0.000000
+ L 0 0 0.000000 0.688863 2.296211 0.688863
+ L 0 0 2.296211 0.688863 2.296211 2.870264
+ L 0 0 1.148106 1.836969 1.148106 0.688863
+ L 0 0 1.148106 1.836969 2.296211 1.836969
+ L 0 0 1.148106 1.836969 0.000000 1.836969
+ L 0 0 1.148106 1.836969 1.148106 2.870264
+ L 0 0 1.148106 1.836969 1.951780 2.640643
+ L 0 0 1.148106 1.836969 1.951780 1.033295
+ L 0 0 1.148106 1.836969 0.344432 1.033295
+ L 0 0 1.148106 1.836969 0.344432 2.640643
+ L 0 0 1.148106 2.870264 1.951780 2.640643
+ L 0 0 1.951780 2.640643 2.296211 1.836969
+ L 0 0 2.296211 1.836969 1.951780 1.033295
+ L 0 0 1.951780 1.033295 1.148106 0.688863
+ L 0 0 1.148106 0.688863 0.344432 1.033295
+ L 0 0 0.344432 1.033295 0.000000 1.836969
+ L 0 0 0.000000 1.836969 0.344432 2.640643
+ L 0 0 0.344432 2.640643 1.148106 2.870264
+ L 0 0 2.296211 2.755454 3.214696 2.755454
+ L 0 0 3.214696 2.755454 3.214696 1.951780
+ L 0 0 3.214696 1.951780 2.296211 1.951780
+ END$SEGS
+STRUCTURE HO "Walthers Shady Jct Interlocking Tower 933-3205b"
+ L 0 0 0.000000 0.000000 2.755454 0.000000
+ L 0 0 2.755454 0.000000 2.755454 1.836969
+ L 0 0 2.755454 1.836969 0.000000 1.836969
+ L 0 0 0.000000 1.836969 0.000000 0.000000
+ L 0 0 0.229621 0.114811 2.066590 0.114811
+ L 0 0 2.066590 0.114811 2.066590 1.148106
+ L 0 0 2.066590 1.148106 0.229621 1.148106
+ L 0 0 0.229621 1.148106 0.229621 0.114811
+ L 0 0 0.459242 1.148106 0.459242 0.114811
+ L 0 0 0.459242 0.574053 2.066590 0.574053
+ END$SEGS
+STRUCTURE HO "Walthers Shady Jct Xing Shanty 933-3205c"
+ L 0 0 0.000000 0.000000 1.836969 0.000000
+ L 0 0 1.836969 0.000000 1.836969 1.377727
+ L 0 0 1.836969 1.377727 0.000000 1.377727
+ L 0 0 0.000000 1.377727 0.000000 0.000000
+ L 0 0 0.000000 0.688863 1.836969 0.688863
+ L 0 0 1.377727 1.377727 1.377727 1.722158
+ L 0 0 1.377727 1.722158 0.459242 1.722158
+ L 0 0 0.459242 1.722158 0.459242 1.377727
+ L 0 0 0.229621 0.000000 0.229621 -0.114811
+ L 0 0 0.229621 -0.114811 0.688863 -0.114811
+ L 0 0 0.688863 -0.114811 0.688863 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Shady Jct Water Crane 933-3205d"
+ L 0 0 0.000000 0.000000 0.918485 0.000000
+ L 0 0 0.918485 0.000000 0.918485 2.066590
+ L 0 0 0.918485 2.066590 0.000000 2.066590
+ L 0 0 0.000000 2.066590 0.000000 0.000000
+ A 0 0 0.000000 0.459242 1.722158 0.000000 360.000000
+ A 0 0 0.114811 0.459242 1.722158 0.000000 360.000000
+ L 0 0 0.574053 1.607348 0.574053 0.344432
+ L 0 0 0.344432 1.607348 0.344432 0.344432
+ L 0 0 0.344432 0.344432 0.574053 0.344432
+ END$SEGS
+STRUCTURE HO "Walthers Water St Freight Terminal 933-3201"
+ L 0 0 0.918485 0.000000 20.206660 0.000000
+ L 0 0 20.206660 0.000000 20.206660 0.918485
+ L 0 0 20.206660 0.918485 18.369690 0.918485
+ L 0 0 17.451210 0.000000 17.451210 6.429391
+ L 0 0 17.451210 6.429391 7.347876 6.429391
+ L 0 0 7.347876 6.429391 7.347876 0.000000
+ L 0 0 7.347876 3.214696 17.451210 3.214696
+ L 0 0 7.347876 5.970150 0.918485 5.970150
+ L 0 0 7.347876 0.918485 0.918485 0.918485
+ L 0 0 0.918485 3.903559 -0.114811 3.903559
+ L 0 0 0.000000 3.903559 0.000000 2.985075
+ L 0 0 0.000000 2.985075 0.918485 2.985075
+ L 0 0 0.918485 2.985075 0.918485 0.000000
+ L 0 0 0.918485 5.970150 0.918485 3.903559
+ L 0 0 17.451210 3.903559 18.369690 3.903559
+ L 0 0 18.369690 3.903559 18.369690 0.918485
+ END$SEGS
+STRUCTURE HO "Walthers Mi-Jack Crane (Intermodal) 3222"
+ F3 16776960 0.000000 4
+ 0.000000 0.000000 0
+ 7.347876 0.000000 0
+ 7.347876 0.459242 0
+ 0.000000 0.459242 0
+ F3 0 0.000000 4
+ 0.000000 5.510907 0
+ 0.000000 5.510907 0
+ 0.000000 5.510907 0
+ 0.000000 5.510907 0
+ F3 16776960 0.000000 4
+ 0.000000 5.510907 0
+ 7.347876 5.510907 0
+ 7.347876 5.970150 0
+ 0.000000 5.970150 0
+ F3 16776960 0.000000 4
+ 4.592422 5.510907 0
+ 5.051665 5.510907 0
+ 5.051665 0.516648 0
+ 4.592422 0.516648 0
+ L3 0 0.000000 0.459242 5.510907 0 0.688863 5.510907 0
+ L3 0 0.000000 0.688863 0.516648 0 0.459242 0.516648 0
+ L3 0 0.000000 0.000000 5.970150 0 7.347876 5.970150 0
+ L3 0 0.000000 7.347876 5.970150 0 7.347876 5.510907 0
+ L3 0 0.000000 7.347876 5.510907 0 0.000000 5.510907 0
+ L3 0 0.000000 0.000000 5.510907 0 0.000000 5.970150 0
+ L3 0 0.000000 0.000000 0.459242 0 7.290471 0.459242 0
+ L3 0 0.000000 7.290471 0.459242 0 7.290471 0.000000 0
+ L3 0 0.000000 7.290471 0.000000 0 0.000000 0.000000 0
+ L3 0 0.000000 0.000000 0.000000 0 0.000000 0.459242 0
+ L3 0 0.000000 4.592422 5.510907 0 5.051665 5.510907 0
+ L3 0 0.000000 5.051665 5.510907 0 5.051665 0.459242 0
+ L3 0 0.000000 5.051665 0.459242 0 4.592422 0.459242 0
+ L3 0 0.000000 4.592422 0.459242 0 4.592422 5.510907 0
+ Z 0 0.487941 5.510907 90.000000 0 36.000000 "xxxxxxxxxxxxxxxxxxxxxx"
+ L3 0 0.000000 0.746269 5.510907 0 0.746269 0.487945 0
+ L3 0 0.000000 0.459242 5.510907 0 0.459242 0.459242 0
+ END$SEGS
+STRUCTURE HO "Walthers Golden Valley Freight House 933-3533"
+ F3 16755285 0.000000 4
+ 0.776042 3.401042 0
+ 6.401042 3.401042 0
+ 6.401042 0.776042 0
+ 0.776042 0.776042 0
+ F3 15720651 0.000000 4
+ 0.026042 3.151042 0
+ 0.776042 3.151042 0
+ 0.776042 0.026042 0
+ 0.026042 0.026042 0
+ F3 15720651 0.000000 4
+ 0.776042 0.776042 0
+ 6.401042 0.776042 0
+ 6.401042 0.026042 0
+ 0.776042 0.026042 0
+ F3 15720651 0.000000 4
+ 6.401042 1.151042 0
+ 8.401042 1.151042 0
+ 8.401042 0.026042 0
+ 6.401042 0.026042 0
+ L3 0 0.052083 0.026042 0.026042 0 8.401042 0.026042 0
+ L3 0 0.052083 8.401042 0.026042 0 8.401042 1.126042 0
+ L3 0 0.052083 6.401042 3.401050 0 0.776042 3.401042 0
+ L3 0 0.052083 0.026042 3.151042 0 0.026042 0.026042 0
+ L3 0 0.052083 6.401042 3.401042 0 6.401035 0.776042 0
+ L3 0 0.052083 6.401042 1.126042 0 8.401042 1.126042 0
+ L3 0 0.052083 6.401042 1.151042 0 6.401042 1.151042 0
+ L3 0 0.052083 0.776042 3.401042 0 0.776042 0.776042 0
+ L3 0 0.052083 0.776042 0.776042 0 6.401042 0.776042 0
+ L3 0 0.052083 0.026042 3.151042 0 0.776042 3.151042 0
+ L3 0 0.010417 0.026042 3.026042 0 0.776042 3.026042 0
+ L3 0 0.010417 0.026042 2.901042 0 0.776042 2.901042 0
+ L3 0 0.010417 0.026042 2.776042 0 0.776042 2.776042 0
+ L3 0 0.010417 0.026042 2.651042 0 0.776042 2.651042 0
+ L3 0 0.010417 0.026042 2.526042 0 0.776042 2.526042 0
+ L3 0 0.010417 0.026042 2.401042 0 0.776042 2.401042 0
+ L3 0 0.010417 6.401042 0.776042 0 6.401042 0.026042 0
+ L3 0 0.052083 6.401042 2.088542 0 0.776042 2.088542 0
+ END$SEGS
+STRUCTURE HO "Walthers Wood Water Tank 933-3531"
+ F3 16755285 0.000000 8
+ 1.026042 3.901042 0
+ 0.026042 2.901042 0
+ 0.026042 1.401042 0
+ 1.026042 0.401042 0
+ 2.526042 0.401042 0
+ 3.526042 1.401042 0
+ 3.526042 2.901042 0
+ 2.526042 3.901042 0
+ F3 13541990 0.000000 4
+ 1.401042 0.401042 0
+ 2.151042 0.401042 0
+ 2.151042 0.026042 0
+ 1.401042 0.026042 0
+ L3 0 0.052083 1.401042 0.401042 0 1.401042 0.026042 0
+ L3 0 0.052083 1.713542 0.088542 0 1.713542 0.088542 0
+ L3 0 0.052083 1.401042 0.026042 0 1.401042 0.026042 0
+ L3 0 0.052083 1.401042 0.026042 0 2.151042 0.026042 0
+ L3 0 0.052083 2.151042 0.026042 0 2.151042 0.401042 0
+ L3 0 0.052083 0.026042 2.901042 0 0.026042 1.401042 0
+ L3 0 0.052083 0.026042 1.401042 0 1.026042 0.401042 0
+ L3 0 0.052083 1.026042 0.401042 0 2.526042 0.401042 0
+ L3 0 0.052083 2.526042 0.401042 0 3.526042 1.401042 0
+ L3 0 0.052083 3.526042 1.401042 0 3.526042 2.901042 0
+ L3 0 0.052083 3.526042 2.901042 0 2.526042 3.901042 0
+ L3 0 0.052083 2.526042 3.901042 0 1.026042 3.901042 0
+ L3 0 0.052083 1.026042 3.901042 0 0.026042 2.901042 0
+ L3 0 0.052083 1.026042 3.901042 0 1.776042 2.151042 0
+ L3 0 0.052083 1.776042 2.151042 0 1.026042 0.401042 0
+ L3 0 0.052083 1.776042 2.151042 0 2.526042 0.401042 0
+ L3 0 0.052083 1.776042 2.151042 0 3.526042 1.401042 0
+ L3 0 0.052083 1.776042 2.151042 0 3.526042 2.901042 0
+ L3 0 0.052083 1.776042 2.151042 0 2.526042 3.901042 0
+ L3 0 0.052083 1.776042 2.151042 0 0.026042 2.901042 0
+ L3 0 0.052083 1.776042 2.151042 0 0.026042 1.401042 0
+ END$SEGS
+STRUCTURE HO "Walthers Santa Fe Freight House circa 1908 933-3804"
+ F3 16379605 0.000000 4
+ 0.000000 6.888634 0
+ 12.399540 6.888634 0
+ 12.399540 0.000000 0
+ 0.000000 0.000000 0
+ L3 0 0.000000 0.000000 0.000000 0 12.399540 0.000000 0
+ L3 0 0.000000 12.399540 0.000000 0 12.399540 6.888634 0
+ L3 0 0.000000 12.399540 6.888634 0 0.000000 6.888634 0
+ L3 0 0.000000 0.000000 6.888634 0 0.000000 0.000000 0
+ L3 0 0.000000 0.688863 0.688863 0 11.710680 0.688863 0
+ L3 0 0.000000 11.710680 0.688863 0 11.710680 6.199770 0
+ L3 0 0.000000 11.710680 6.199770 0 0.688863 6.199770 0
+ L3 0 0.000000 0.688863 6.199770 0 0.688863 0.688863 0
+ L3 0 0.000000 0.688863 1.377727 0 0.918485 1.377727 0
+ L3 0 0.000000 0.889782 0.918485 0 1.148106 0.918485 0
+ L3 0 0.000000 1.119403 0.918485 0 1.119403 0.688863 0
+ L3 0 0.000000 1.148106 5.998852 0 0.889782 5.998852 0
+ L3 0 0.000000 0.889782 5.998852 0 0.889782 5.797934 0
+ L3 0 0.000000 0.889782 5.797934 0 0.717566 5.797934 0
+ L3 0 0.000000 11.021810 6.171068 0 11.021810 5.970150 0
+ L3 0 0.000000 11.021810 5.970150 0 11.481060 5.970150 0
+ L3 0 0.000000 11.710680 5.740528 0 11.481060 5.740528 0
+ L3 0 0.000000 11.481060 5.740528 0 11.481060 5.970150 0
+ L3 0 0.000000 11.021810 0.688863 0 11.021810 0.918485 0
+ L3 0 0.000000 11.021810 0.918485 0 11.481060 0.918485 0
+ L3 0 0.000000 11.481060 0.918485 0 11.481060 1.377727 0
+ L3 0 0.000000 11.710680 4.592422 0 11.452350 4.592422 0
+ L3 0 0.000000 11.452350 4.592422 0 11.452350 2.755454 0
+ L3 0 0.000000 11.452350 2.755454 0 11.710680 2.755454 0
+ L3 0 0.000000 11.710680 2.755454 0 11.710680 4.592422 0
+ L3 0 0.000000 4.133180 6.199770 0 7.807118 6.199770 0
+ L3 0 0.000000 7.807118 6.199770 0 7.807118 5.970150 0
+ L3 0 0.000000 7.807118 5.970150 0 4.133180 5.970150 0
+ L3 0 0.000000 4.133180 5.970150 0 4.133180 6.199770 0
+ L3 0 0.000000 4.133180 0.688863 0 7.807118 0.688863 0
+ L3 0 0.000000 7.807118 0.688863 0 7.807118 0.918485 0
+ L3 0 0.000000 7.807118 0.918485 0 4.133180 0.918485 0
+ L3 0 0.000000 4.133180 0.918485 0 4.133180 0.688863 0
+ END$SEGS
+
+
+
+SUBCONTENTS Walthers Cornerstone HO Structures - Passenger Facilities
+STRUCTURE HO "Walther's Cornerstone Structures Butterfly-Style Station Platform Shelter 933-3258"
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 11.251440 0.000000 0
+ 11.251440 2.296211 0
+ 0.000000 2.296211 0
+ END$SEGS
+STRUCTURE HO "Walthers Amtrak Station 933-3038"
+ L 16711935 0 0.000000 0.000000 0.000000 8.500000
+ L 16711935 0 0.000000 8.500000 11.812500 8.500000
+ L 16711935 0 11.812500 8.500000 11.812500 0.000000
+ L 16711935 0 11.812500 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Santa Fe Depot circa 1908 933-3803"
+ F3 16379605 0.000000 4
+ 0.000000 7.118255 0
+ 12.399540 7.118255 0
+ 12.399540 0.000000 0
+ 0.000000 0.000000 0
+ L3 0 0.000000 0.000000 0.000000 0 12.399540 0.000000 0
+ L3 0 0.000000 12.399540 0.000000 0 12.399540 7.118255 0
+ L3 0 0.000000 12.399540 7.118255 0 0.000000 7.118255 0
+ L3 0 0.000000 0.688863 0.688863 0 11.710680 0.688863 0
+ L3 0 0.000000 11.710680 0.688863 0 11.710680 6.429391 0
+ L3 0 0.000000 11.710680 6.429391 0 0.688863 6.429391 0
+ L3 0 0.000000 0.688863 6.429391 0 0.688863 0.688863 0
+ L3 0 0.000000 0.660161 3.559128 0 11.681970 3.559128 0
+ L3 0 0.000000 11.681970 4.822044 0 11.452350 4.822044 0
+ L3 0 0.000000 11.452350 4.822044 0 11.452350 2.525832 0
+ L3 0 0.000000 11.452350 2.525832 0 11.681970 2.525832 0
+ L3 0 0.000000 11.681970 2.525832 0 11.681970 4.822044 0
+ L3 0 0.000000 0.918485 4.822044 0 0.918485 2.296211 0
+ L3 0 0.000000 0.918485 2.296211 0 0.688863 2.296211 0
+ L3 0 0.000000 0.688863 2.296211 0 0.688863 5.051665 0
+ L3 0 0.000000 0.688863 4.822044 0 0.889782 4.822044 0
+ L3 0 0.000000 3.903559 0.688863 0 7.577497 0.688863 0
+ L3 0 0.000000 7.577497 0.688863 0 7.577497 0.918485 0
+ L3 0 0.000000 7.577497 0.918485 0 3.903559 0.918485 0
+ L3 0 0.000000 3.903559 0.918485 0 3.903559 0.688863 0
+ L3 0 0.000000 3.903559 6.429391 0 7.577497 6.429391 0
+ L3 0 0.000000 7.577497 6.429391 0 7.577497 6.199770 0
+ L3 0 0.000000 7.577497 6.199770 0 3.903559 6.199770 0
+ L3 0 0.000000 3.903559 6.199770 0 3.903559 6.429391 0
+ L3 0 0.000000 10.103330 4.391504 0 10.619980 4.391504 0
+ L3 0 0.000000 10.619980 4.391504 0 10.619980 3.960964 0
+ L3 0 0.000000 10.619980 3.960964 0 10.103330 3.960964 0
+ L3 0 0.000000 10.103330 3.960964 0 10.103330 4.391504 0
+ L3 0 0.000000 1.693456 4.391504 0 2.210103 4.391504 0
+ L3 0 0.000000 2.210103 4.391504 0 2.210103 3.932262 0
+ L3 0 0.000000 2.210103 3.932262 0 1.693456 3.932262 0
+ L3 0 0.000000 1.693456 3.932262 0 1.693456 4.391504 0
+ L3 0 0.000000 0.028703 7.089552 0 0.028703 0.028703 0
+ END$SEGS
+STRUCTURE HO "Walthers Union Station (Cornerstone Series) 3257"
+ F3 14211288 0.000000 4
+ 0.000000 11.021810 0
+ 29.391500 11.021810 0
+ 29.391500 0.000000 0
+ 0.000000 0.000000 0
+ L3 0 0.000000 0.000000 0.005684 0 29.391500 0.005684 0
+ L3 0 0.000000 29.391500 0.005684 0 29.391500 11.027500 0
+ L3 0 0.000000 29.391500 11.027500 0 0.000000 11.027500 0
+ L3 0 0.000000 0.000000 11.027500 0 0.000000 0.005684 0
+ L3 0 0.000000 0.000000 0.924168 0 8.266360 0.924168 0
+ L3 0 0.000000 8.266360 0.924168 0 8.266360 10.223820 0
+ L3 0 0.000000 8.266360 10.223820 0 0.000000 10.223820 0
+ L3 0 0.000000 0.000000 10.223820 0 0.000000 0.924168 0
+ L3 0 0.000000 29.391500 0.005684 0 21.010330 0.005684 0
+ L3 0 0.000000 29.391500 9.821987 0 29.391500 0.005684 0
+ L3 0 0.000000 29.391500 0.924168 0 21.125140 0.924168 0
+ L3 0 0.000000 21.125140 0.924168 0 21.125140 10.223820 0
+ L3 0 0.000000 21.125140 10.223820 0 29.391500 10.223820 0
+ L3 0 0.000000 29.391500 10.223820 0 29.391500 0.924168 0
+ L3 0 0.000000 8.208956 10.223820 0 8.208956 11.027500 0
+ L3 0 0.000000 21.125140 10.223820 0 21.125140 11.027500 0
+ L3 0 0.000000 21.125140 0.924168 0 21.125140 0.005684 0
+ L3 0 0.000000 8.266360 0.924168 0 8.266360 0.005684 0
+ A3 0 0.000000 0.292710 14.695750 0.292710 0 0.000000 360.000000
+ A3 0 0.000000 0.287026 19.288180 0.350115 0 0.000000 360.000000
+ A3 0 0.000000 0.287026 16.991960 0.292710 0 0.000000 360.000000
+ A3 0 0.000000 0.292710 10.103330 0.292710 0 0.000000 360.000000
+ A3 0 0.000000 0.292710 12.399540 0.292710 0 0.000000 360.000000
+ L3 0 0.000000 0.229621 9.879393 0 7.979334 9.879393 0
+ L3 0 0.000000 7.979334 9.879393 0 7.979334 1.211195 0
+ L3 0 0.000000 7.979334 1.211195 0 0.229621 1.211195 0
+ L3 0 0.000000 0.229621 1.211195 0 0.229621 9.879393 0
+ L3 0 0.000000 21.469580 9.879393 0 29.104480 9.879393 0
+ L3 0 0.000000 29.104480 9.879393 0 29.104480 1.268600 0
+ L3 0 0.000000 29.104480 1.268600 0 21.469580 1.268600 0
+ L3 0 0.000000 21.469580 1.268600 0 21.469580 9.879393 0
+ L3 0 0.000000 8.495982 10.683070 0 20.895520 10.683070 0
+ L3 0 0.000000 20.895520 10.683070 0 20.895520 0.924168 0
+ L3 0 0.000000 20.895520 0.924168 0 8.495982 0.924168 0
+ L3 0 0.000000 8.495982 0.924168 0 8.495982 10.683070 0
+ L3 0 0.000000 13.777270 0.924168 0 15.614240 0.924168 0
+ L3 0 0.000000 15.614240 0.924168 0 15.614240 1.268600 0
+ L3 0 0.000000 15.614240 1.268600 0 13.777270 1.268600 0
+ L3 0 0.000000 13.777270 1.268600 0 13.777270 0.924168 0
+ END$SEGS
+STRUCTURE HO "Walthers Pella Depot 933-4054"
+ Y4 32832 0.041667 4 0
+ 1.594000 4.500000 0
+ 10.469000 4.500000 0
+ 10.469000 1.653000 0
+ 1.594000 1.653000 0
+ L3 0 0.000000 12.000000 6.000000 0 12.000000 6.000000 0
+ Y4 0 0.000000 4 0
+ 4.000000 8.000000 0
+ 4.000000 8.000000 0
+ 4.000000 8.000000 0
+ 4.000000 8.000000 0
+ F4 12632256 0.000000 4 0
+ 0.000000 1.653000 0
+ 12.063000 1.653000 0
+ 12.063000 0.000000 0
+ 0.000000 0.000000 0
+ F4 16384 0.052083 4 0
+ 1.094000 5.000000 0
+ 10.969000 5.000000 0
+ 10.969000 1.153000 0
+ 1.094000 1.153000 0
+ L3 0 0.020833 1.134381 4.959619 0 1.594000 4.500000 0
+ L3 0 0.020833 1.594000 1.654000 0 1.134000 1.194000 0
+ L3 0 0.020833 10.929000 1.194000 0 10.469000 1.654000 0
+ L3 0 0.020833 10.469000 4.500000 0 10.929000 4.960000 0
+ L3 0 0.020833 2.794000 3.077000 0 9.269000 3.077000 0
+ L3 0 0.020833 2.794000 3.077000 0 1.594000 4.500000 0
+ L3 0 0.020833 2.794000 3.077000 0 1.594000 1.654000 0
+ L3 0 0.020833 9.269000 3.077000 0 10.469000 1.654000 0
+ L3 0 0.020833 9.268995 3.077005 0 10.469005 4.499995 0
+ F4 10375736 0.000000 4 0
+ 8.562000 3.284000 0
+ 8.975000 3.284000 0
+ 8.975000 2.871000 0
+ 8.562000 2.871000 0
+ F4 0 0.000000 4 0
+ 8.608000 3.238000 0
+ 8.929000 3.238000 0
+ 8.929000 2.917000 0
+ 8.608000 2.917000 0
+ F4 10375736 0.000000 4 0
+ 4.062500 3.284000 0
+ 4.475500 3.284000 0
+ 4.475500 2.871000 0
+ 4.062500 2.871000 0
+ F4 0 0.000000 4 0
+ 4.108500 3.238000 0
+ 4.429500 3.238000 0
+ 4.429500 2.917000 0
+ 4.108500 2.917000 0
+ L3 0 0.020833 5.000000 3.077000 0 5.000000 2.251000 0
+ L3 0 0.020833 5.000000 3.077000 0 3.821800 2.527597 0
+ L3 0 0.020833 5.000000 3.077000 0 6.178200 2.527597 0
+ L3 0 0.020833 3.822000 2.528000 0 3.822000 1.702000 0
+ L3 0 0.020833 6.178000 2.528000 0 6.178000 1.702000 0
+ L3 0 0.020833 5.000000 2.251000 0 3.821800 1.701597 0
+ L3 0 0.020833 5.000000 2.251000 0 6.178200 1.701597 0
+ Y4 16053492 0.052083 4 0
+ 1.094000 5.000000 0
+ 10.969000 5.000000 0
+ 10.969000 1.153000 0
+ 1.094000 1.153000 0
+ L3 0 0.020833 4.302000 1.155000 0 5.698000 1.155000 0
+ L3 0 0.020833 5.000000 2.251000 0 4.302000 1.155000 0
+ L3 0 0.020833 5.000000 2.251000 0 5.698000 1.155000 0
+ L3 0 0.020833 3.822000 1.702000 0 4.302000 1.155000 0
+ L3 0 0.020833 5.000000 2.251000 0 4.302000 1.155000 0
+ F4 16384 0.020833 3 0
+ 5.000000 2.251000 0
+ 3.822000 1.706078 0
+ 4.301781 1.158565 0
+ F4 16384 0.000000 3 0
+ 5.000000 2.251000 0
+ 5.695313 1.154047 0
+ 6.178200 1.700644 0
+ F4 16384 0.000000 3 0
+ 5.000000 2.251000 0
+ 4.296875 1.157906 0
+ 5.693359 1.157906 0
+ L3 0 0.000000 4.000000 2.000000 0 4.000000 2.000000 0
+ L3 0 0.020833 3.822000 1.702000 0 4.302000 1.155000 0
+ L3 0 0.020833 5.000000 2.251000 0 5.698000 1.155000 0
+ L3 0 0.020833 5.000000 2.251000 0 4.302000 1.155000 0
+ L3 0 0.020833 6.178000 1.702000 0 5.698000 1.155000 0
+ END$SEGS
+
+SUBCONTENTS Walthers Cornerstone HO Structures - Gas Works
+STRUCTURE HO "Walthers Central Gas & Supply, Office 933-3011a"
+ L 16711935 0 0.000000 0.000000 0.000000 3.000000
+ L 16711935 0 0.000000 3.000000 4.375000 3.000000
+ L 16711935 0 4.375000 3.000000 4.375000 0.000000
+ L 16711935 0 4.375000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Central Gas & Supply, Tank 933-3011b"
+ L 16711935 0 0.000000 0.000000 0.000000 1.500000
+ L 16711935 0 0.000000 1.500000 9.000000 1.500000
+ L 16711935 0 9.000000 1.500000 9.000000 0.000000
+ L 16711935 0 9.000000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Central Gas & Supply, Shed 933-3011c"
+ L 16711935 0 0.000000 0.000000 0.000000 1.000000
+ L 16711935 0 0.000000 1.000000 0.825000 1.000000
+ L 16711935 0 0.825000 1.000000 0.825000 0.000000
+ L 16711935 0 0.825000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Central Gas & Supply, Pump House 933-3011d"
+ L 16711935 0 0.000000 0.000000 0.000000 1.375000
+ L 16711935 0 0.000000 1.375000 1.375000 1.375000
+ L 16711935 0 1.375000 1.375000 1.375000 0.000000
+ L 16711935 0 1.375000 0.000000 0.000000 0.000000
+ END$SEGS
+
+
+SUBCONTENTS Walthers Cornerstone HO Structures - Power Industries
+STRUCTURE HO "Walthers Northern Light & Power, Substation 933-3025"
+ L 0 0.000000 0.000000 0.000000 12.500000 0.000000
+ L 0 0.000000 12.500000 0.000000 12.500000 8.500000
+ L 0 0.000000 12.500000 8.500000 0.000000 8.500000
+ L 0 0.000000 0.000000 8.500000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Northern Light & Power, Powerhouse 933-3021"
+ L 0 0.000000 0.000000 0.000000 10.250000 0.000000
+ L 0 0.000000 10.250000 0.000000 10.250000 6.500000
+ L 0 0.000000 10.250000 6.500000 0.000000 6.500000
+ L 0 0.000000 0.000000 6.500000 0.000000 0.000000
+ A 0 0.000000 0.625000 12.125000 4.875000 0.000000 360.000000
+ END$SEGS
+STRUCTURE HO "Walthers Nothern Light Powerhouse 933-3214"
+ L 0 0 0.000000 0.000000 7.577497 0.000000
+ L 0 0 7.577497 0.000000 7.577497 4.822044
+ L 0 0 7.577497 4.822044 0.000000 4.822044
+ L 0 0 0.000000 4.822044 0.000000 0.000000
+ A 0 0 0.229621 0.918485 0.918485 0.000000 360.000000
+ A 0 0 0.229621 6.659013 0.918485 0.000000 360.000000
+ A 0 0 0.229621 2.755454 0.918485 0.000000 360.000000
+ A 0 0 0.256724 4.822044 0.918485 0.000000 360.000000
+ A 0 0 0.980941 8.955224 4.018370 0.000000 360.000000
+ A 0 0 0.000000 9.070035 3.788749 0.000000 360.000000
+ A 0 0 0.669454 8.955224 4.018370 0.000000 360.000000
+ END$SEGS
+
+
+SUBCONTENTS Walthers Cornerstone HO Structures - Aggregate Industries
+STRUCTURE HO "Walthers Glacier Gravel 933-3062"
+ F3 14737632 0.000000 4
+ 16.250000 3.687500 0
+ 16.250000 3.187500 0
+ 3.000000 1.187500 0
+ 3.000000 1.687500 0
+ F3 15720651 0.000000 7
+ 16.875000 4.000000 0
+ 16.875000 4.000000 0
+ 16.875000 4.250000 0
+ 18.312500 4.250000 0
+ 18.312500 2.625000 0
+ 16.250000 2.625000 0
+ 16.250000 4.000000 0
+ F3 14737632 0.000000 4
+ 16.250000 4.000000 0
+ 18.000000 4.000000 0
+ 18.000000 2.875000 0
+ 16.250000 2.875000 0
+ L3 0 0.041667 13.000000 5.875000 0 13.000000 5.375000 0
+ L3 0 0.041667 4.500000 5.375000 0 4.500000 5.875000 0
+ F3 14737632 0.000000 4
+ 4.500000 5.875000 0
+ 13.000000 5.875000 0
+ 13.000000 5.375000 0
+ 4.500000 5.375000 0
+ F3 14531987 0.000000 4
+ 13.000000 7.250000 0
+ 14.250000 7.250000 0
+ 14.250000 4.000000 0
+ 13.000000 4.000000 0
+ F3 16755285 0.000000 4
+ 8.500000 -1.250000 0
+ 11.000000 -1.250000 0
+ 11.000000 -2.750000 0
+ 8.500000 -2.750000 0
+ F3 14737632 0.000000 6
+ 0.000000 6.625000 0
+ 5.000000 6.625000 0
+ 5.000000 1.000000 0
+ 8.500000 1.000000 0
+ 8.500000 -2.750000 0
+ 0.000000 -2.750000 0
+ L3 0 0.041667 0.000000 -2.750000 0 11.000000 -2.750000 0
+ L3 0 0.041667 0.000000 -2.750000 0 0.000000 6.625000 0
+ L3 0 0.041667 0.000000 1.937500 0 3.000000 1.937500 0
+ L3 0 0.041667 3.000000 1.937500 0 3.000000 -2.750000 0
+ L3 0 0.041667 1.500000 1.937500 0 1.500000 -2.750000 0
+ L3 0 0.041667 2.500000 1.937500 0 2.500000 6.625000 0
+ L3 0 0.041667 0.000000 6.625000 0 5.000000 6.625000 0
+ L3 0 0.041667 0.875000 5.312500 0 0.875000 5.312500 0
+ L3 0 0.041667 11.000000 -1.250000 0 8.500000 -1.250000 0
+ L3 0 0.041667 11.000000 -1.250000 0 11.000000 -2.750000 0
+ L3 0 0.041667 8.500000 -2.750000 0 8.500000 1.000000 0
+ L3 0 0.041667 8.500000 1.000000 0 3.000000 1.000000 0
+ L3 0 0.041667 8.500000 -0.875000 0 3.000000 -0.875000 0
+ L3 0 0.041667 4.000000 -0.875000 0 4.000000 0.625000 0
+ L3 0 0.041667 4.000000 0.625000 0 7.000000 0.625000 0
+ L3 0 0.041667 7.000000 0.625000 0 7.000000 -0.875000 0
+ L3 0 0.041667 4.000000 -0.125000 0 7.000000 -0.125000 0
+ L3 0 0.041667 3.000000 6.250000 0 4.500000 6.250000 0
+ L3 0 0.041667 4.500000 6.250000 0 4.500000 5.000000 0
+ L3 0 0.041667 4.500000 5.000000 0 3.000000 5.000000 0
+ L3 0 0.041667 3.000000 5.000000 0 3.000000 6.250000 0
+ L3 0 0.041667 5.375000 5.187500 0 5.375000 5.187500 0
+ L3 0 0.041667 5.375000 5.187500 0 5.375000 5.187500 0
+ L3 0 0.041667 5.375000 5.187500 0 5.375000 5.187500 0
+ L3 0 0.041667 5.375000 5.187500 0 5.375000 5.187500 0
+ L3 0 0.041667 4.500000 5.875000 0 13.000000 5.875000 0
+ L3 0 0.041667 13.000000 5.375000 0 4.500000 5.375000 0
+ L3 0 0.041667 13.000000 7.250000 0 14.250000 7.250000 0
+ L3 0 0.041667 14.250000 7.250000 0 14.250000 4.000000 0
+ L3 0 0.041667 14.250000 4.000000 0 13.000000 4.000000 0
+ L3 0 0.041667 13.000000 4.000000 0 13.000000 7.250000 0
+ L3 0 0.041667 5.000000 6.625000 0 5.000000 5.875000 0
+ L3 0 0.041667 16.250000 2.625000 0 18.312500 2.625000 0
+ L3 0 0.041667 18.312500 2.625000 0 18.312500 4.250000 0
+ L3 0 0.041667 16.250000 2.875000 0 18.000000 2.875000 0
+ L3 0 0.041667 18.000000 2.875000 0 18.000000 4.000000 0
+ L3 0 0.041667 18.000000 4.000000 0 16.250000 4.000000 0
+ L3 0 0.041667 16.250000 4.000000 0 16.250000 2.875000 0
+ L3 0 0.041667 18.312500 4.250000 0 16.875000 4.250000 0
+ L3 0 0.041667 16.875000 4.250000 0 16.875000 4.000000 0
+ L3 0 0.041667 16.250000 2.875000 0 16.250000 2.625000 0
+ L3 0 0.041667 12.250000 1.125000 0 12.250000 1.125000 0
+ L3 0 0.041667 16.250000 3.187500 0 3.000000 1.187500 0
+ L3 0 0.041667 16.250000 3.687500 0 3.000000 1.687500 0
+ L3 0 0.041667 5.000000 1.000000 0 5.000000 1.437500 0
+ L3 0 0.041667 5.000000 5.375000 0 5.000000 2.000000 0
+ END$SEGS
+STRUCTURE HO "Walthers Medusa Cement Co 933-3019"
+ F3 14737632 0.000000 4
+ -1.312500 -1.750000 0
+ -0.812500 -1.750000 0
+ -0.812500 -3.125000 0
+ -1.312500 -3.125000 0
+ F3 14737632 0.000000 4
+ -1.312500 -3.875000 0
+ -0.812500 -3.875000 0
+ -0.812500 -5.250000 0
+ -1.312500 -5.250000 0
+ F3 14737632 0.000000 4
+ 7.687500 -3.875000 0
+ 7.125000 -3.875000 0
+ 7.125000 -5.250000 0
+ 7.687500 -5.250000 0
+ F3 14737632 0.000000 4
+ 7.687500 -1.750000 0
+ 7.187500 -1.750000 0
+ 7.187500 -3.125000 0
+ 7.687500 -3.125000 0
+ F3 14737632 0.000000 4
+ 0.000000 1.375000 0
+ 6.375000 1.375000 0
+ 6.375000 -1.687500 0
+ 0.000000 -1.687500 0
+ F3 13092749 0.000000 4
+ 2.937500 -1.125000 0
+ 3.437500 -1.125000 0
+ 3.437500 -1.625000 0
+ 2.937500 -1.625000 0
+ G3 15720651 0.000000 1.069828 0.000000 -4.562500 0
+ G3 15720651 0.000000 1.062500 2.125000 -4.562500 0
+ G3 15720651 0.000000 1.062500 4.250000 -4.562500 0
+ G3 15720651 0.000000 1.064337 6.375000 -4.562500 0
+ G3 15720651 0.000000 1.062500 6.375000 -2.437500 0
+ G3 15720651 0.000000 1.062500 4.250000 -2.437500 0
+ G3 15720651 0.000000 1.062500 2.125000 -2.437500 0
+ G3 15720651 0.000000 1.062500 0.000000 -2.437500 0
+ A3 0 0.041667 1.062500 0.000000 -4.562000 0 0.000000 360.000000
+ A3 0 0.041667 1.062500 2.125000 -4.562000 0 0.000000 360.000000
+ A3 0 0.041667 1.062500 4.250000 -4.562000 0 0.000000 360.000000
+ A3 0 0.041667 1.062500 6.375000 -4.562000 0 0.000000 360.000000
+ A3 0 0.041667 1.062500 0.000500 -2.437500 0 0.000000 360.000000
+ A3 0 0.041667 1.062500 2.125500 -2.437500 0 0.000000 360.000000
+ A3 0 0.041667 1.062500 4.250500 -2.437500 0 0.000000 360.000000
+ A3 0 0.041667 1.062500 6.375500 -2.437500 0 0.000000 360.000000
+ L3 0 0.041667 6.375500 -1.375000 0 6.375500 1.375000 0
+ L3 0 0.041667 6.375500 1.375000 0 0.000500 1.375000 0
+ L3 0 0.041667 0.000500 1.375000 0 0.000500 -1.375000 0
+ L3 0 0.041667 -1.312500 -5.250000 0 -0.812500 -5.250000 0
+ L3 0 0.041667 -1.312500 -3.875000 0 -0.812500 -3.875000 0
+ L3 0 0.041667 -1.312500 -3.875000 0 -1.312500 -5.250000 0
+ L3 0 0.041667 -1.312500 -3.125000 0 -0.812500 -3.125000 0
+ L3 0 0.041667 -1.312500 -1.750000 0 -0.812500 -1.750000 0
+ L3 0 0.041667 -1.312500 -1.750000 0 -1.312504 -3.125000 0
+ L3 0 0.041667 7.687515 -5.249994 0 7.187515 -5.249992 0
+ L3 0 0.041667 7.687530 -3.874994 0 7.187530 -3.874992 0
+ L3 0 0.041667 7.687516 -3.874994 0 7.687508 -5.249994 0
+ L3 0 0.041667 7.687513 -3.124994 0 7.187513 -3.124992 0
+ L3 0 0.041667 7.687528 -1.749994 0 7.187528 -1.749992 0
+ L3 0 0.041667 7.687514 -1.749994 0 7.687513 -3.124994 0
+ L3 0 0.041667 -1.062500 -3.125000 0 -1.062500 -1.750000 0
+ L3 0 0.041667 -1.062500 -3.875000 0 -1.062500 -5.250000 0
+ L3 0 0.041667 7.437500 -3.875000 0 7.437500 -5.250000 0
+ L3 0 0.041667 7.437500 -3.125000 0 7.437500 -1.750000 0
+ L3 0 0.041667 2.937500 -1.625000 0 3.437500 -1.625000 0
+ L3 0 0.041667 3.437500 -1.625000 0 3.437500 -1.125000 0
+ L3 0 0.041667 3.437500 -1.125000 0 2.937500 -1.125000 0
+ L3 0 0.041667 2.937500 -1.125000 0 2.937500 -1.625000 0
+ G3 15720651 0.000000 0.000000 6.312500 -2.437500 0
+ F3 12632256 0.000000 4
+ -0.625000 -1.687500 0
+ 7.000000 -1.687500 0
+ 7.000000 -5.312500 0
+ -0.625000 -5.312500 0
+ L3 0 0.041667 -0.625000 -1.687500 0 7.000000 -1.687500 0
+ L3 0 0.041667 7.000000 -1.687500 0 7.000000 -5.312500 0
+ L3 0 0.041667 7.000000 -5.312500 0 -0.625000 -5.312500 0
+ L3 0 0.041667 -0.625000 -5.312500 0 -0.625000 -1.687500 0
+ F3 13092749 0.000000 4
+ -0.500000 -5.187500 0
+ 0.625000 -5.187500 0
+ 0.625000 -4.062500 0
+ -0.500000 -4.062500 0
+ L3 0 0.041667 -0.500000 -5.187500 0 0.625000 -5.187500 0
+ L3 0 0.041667 0.625000 -5.187500 0 0.625000 -4.062500 0
+ L3 0 0.041667 0.625000 -4.062500 0 -0.500000 -4.062500 0
+ L3 0 0.041667 -0.500000 -4.062500 0 -0.500000 -5.187500 0
+ L3 0 0.041667 -0.500000 -4.062500 0 0.625000 -5.187500 0
+ L3 0 0.041667 0.625000 -4.062500 0 -0.500000 -5.187500 0
+ F3 13092749 0.000000 4
+ 2.937500 -1.125000 0
+ 2.750000 -1.125000 0
+ 2.750000 -2.625000 0
+ 2.937500 -2.625000 0
+ L3 0 0.041667 2.937500 -1.125000 0 2.750000 -1.125000 0
+ L3 0 0.041667 2.750000 -1.125000 0 2.750000 -2.625000 0
+ L3 0 0.041667 2.750000 -2.625000 0 2.937500 -2.625000 0
+ L3 0 0.041667 2.937500 -2.625000 0 2.937500 -1.125000 0
+ L3 0 0.020833 0.687500 1.375000 0 0.687500 -1.625000 0
+ L3 0 0.020833 1.687500 1.375000 0 1.687500 -1.437500 0
+ L3 0 0.020833 2.687500 1.375000 0 2.687500 -1.500000 0
+ L3 0 0.020833 3.687500 1.375000 0 3.687500 -1.500000 0
+ L3 0 0.020833 4.687500 1.375000 0 4.687500 -1.437500 0
+ L3 0 0.020833 5.687500 1.375000 0 5.687500 -1.625000 0
+ L3 0 0.020833 1.187500 1.375000 0 1.187500 -0.875000 0
+ L3 0 0.020833 2.187500 1.375000 0 2.187500 -0.875000 0
+ L3 0 0.020833 3.187500 1.375000 0 3.187500 -0.875000 0
+ L3 0 0.020833 4.187500 1.375000 0 4.187500 -0.875000 0
+ L3 0 0.020833 5.187500 1.375000 0 5.187500 -0.875000 0
+ L3 0 0.020833 6.062500 1.375000 0 6.062500 -0.875000 0
+ L3 0 0.020833 0.312500 1.375000 0 0.312500 -0.875000 0
+ F3 13092749 0.000000 4
+ 1.687500 -2.125000 0
+ 4.687500 -2.125000 0
+ 4.687500 -2.875000 0
+ 1.687500 -2.875000 0
+ F3 13092749 0.000000 4
+ 1.687500 -3.000000 0
+ 1.687500 -3.000000 0
+ 1.687500 -3.125000 0
+ 1.687500 -3.125000 0
+ F3 13092749 0.000000 4
+ 1.687500 -3.125000 0
+ 1.687500 -3.125000 0
+ 1.687500 -3.125000 0
+ 1.687500 -3.125000 0
+ F3 13092749 0.000000 4
+ 1.687500 -3.125000 0
+ 4.687500 -3.125000 0
+ 4.687500 -3.875000 0
+ 1.687500 -3.875000 0
+ F3 13092749 0.000000 4
+ 1.687500 -3.875000 0
+ 4.687500 -3.875000 0
+ 4.687500 -5.187500 0
+ 1.687500 -5.187500 0
+ L3 0 0.041667 1.687500 -2.125000 0 4.687500 -2.125000 0
+ L3 0 0.041667 4.687500 -2.125000 0 4.687500 -2.875000 0
+ L3 0 0.041667 4.687500 -2.875000 0 1.687500 -2.875000 0
+ L3 0 0.041667 1.687500 -2.875000 0 1.687500 -2.125000 0
+ L3 0 0.041667 1.687500 -3.125000 0 4.687500 -3.125000 0
+ L3 0 0.041667 4.687500 -3.125000 0 4.687500 -3.875000 0
+ L3 0 0.041667 4.687500 -3.875000 0 1.687500 -3.875000 0
+ L3 0 0.041667 1.687500 -3.875000 0 1.687500 -3.125000 0
+ L3 0 0.041667 1.687500 -3.875000 0 4.687500 -3.875000 0
+ L3 0 0.041667 4.687500 -3.875000 0 4.687500 -5.187500 0
+ L3 0 0.041667 4.687500 -5.187500 0 1.687500 -5.187500 0
+ L3 0 0.041667 1.687500 -5.187500 0 1.687500 -3.875000 0
+ L3 0 0.041667 1.687500 -2.125000 0 4.687500 -2.875000 0
+ L3 0 0.041667 4.687500 -2.125000 0 1.687500 -2.875000 0
+ L3 0 0.041667 1.687500 -3.125000 0 4.687500 -3.875000 0
+ L3 0 0.041667 4.687500 -3.125000 0 1.687500 -3.875000 0
+ L3 0 0.041667 1.750000 -3.875000 0 1.750000 -3.875000 0
+ END$SEGS
+STRUCTURE HO "Walthers Cornerstone Valley Cement Plant 933-3098"
+#Created by Howard Hayes
+ G3 8029321 0.000000 1.050000 1.514583 4.014583 0
+ G3 8029321 0.000000 1.050000 5.714583 4.014583 0
+ G3 8029321 0.000000 1.050000 3.614583 4.014583 0
+ G3 8029321 0.000000 1.050000 7.814583 4.014583 0
+ L3 0 0.125000 8.062500 2.062500 0 1.062500 2.062500 0
+ L3 0 0.000000 8.062500 1.062500 0 1.062500 1.062500 0
+ F3 12632256 0.000000 4
+ 1.114583 0.114583 0
+ 8.114583 0.114583 0
+ 8.114583 3.114583 0
+ 1.114583 3.114583 0
+ F3 12632256 0.000000 4
+ 0.114583 23.114583 0
+ 8.114583 23.114583 0
+ 8.114583 18.114583 0
+ 0.114583 18.114583 0
+ F3 12632256 0.000000 4
+ 1.114583 18.114583 0
+ 2.114583 18.114583 0
+ 2.114583 7.114583 0
+ 1.114583 7.114583 0
+ F3 0 0.000000 4
+ 28.114583 21.114583 0
+ 39.114583 21.114583 0
+ 39.114583 14.114583 0
+ 28.114583 14.114583 0
+ F3 12632256 0.000000 4
+ 20.114583 17.114583 0
+ 26.114583 17.114583 0
+ 26.114583 22.114583 0
+ 20.114583 22.114583 0
+ L3 8029321 0.125000 20.062500 22.062500 0 26.062500 22.062500 0
+ F3 8388608 0.000000 4
+ 9.114583 23.114583 0
+ 12.114583 23.114583 0
+ 12.114583 20.114583 0
+ 9.114583 20.114583 0
+ L3 255 0.000000 0.114583 0.114583 0 0.114583 0.114583 0
+ L3 255 0.000000 0.114583 0.114583 0 0.114583 0.114583 0
+ L3 255 0.000000 0.114583 0.114583 0 0.114583 0.114583 0
+ L3 255 0.000000 0.114583 0.114583 0 0.114583 0.114583 0
+ F3 0 0.000000 4
+ 0.114583 7.114583 0
+ 0.114583 7.114583 0
+ 0.114583 6.114583 0
+ 0.114583 6.114583 0
+ G3 8029321 0.000000 1.050000 3.614583 6.114583 0
+ G3 8029321 0.000000 1.050000 1.514583 6.114583 0
+ G3 8029321 0.000000 1.050000 5.714583 6.114583 0
+ G3 8029321 0.000000 1.050000 7.824583 6.114583 0
+ F3 0 0.000000 4
+ 0.114583 3.114583 0
+ 0.114583 3.114583 0
+ 0.114583 3.114583 0
+ 0.114583 3.114583 0
+ F3 0 0.000000 4
+ 0.114583 7.114583 0
+ 0.114583 7.114583 0
+ 0.114583 8.114583 0
+ 0.114583 8.114583 0
+ F3 0 0.000000 4
+ 8.114583 18.114583 0
+ 20.114583 18.114583 0
+ 20.114583 20.114583 0
+ 8.114583 20.114583 0
+ F3 12632256 0.000000 4
+ 27.114583 15.114583 0
+ 40.114583 15.114583 0
+ 40.114583 16.114583 0
+ 27.114583 16.114583 0
+ F3 12632256 0.000000 4
+ 27.114583 17.114583 0
+ 40.114583 17.114583 0
+ 40.114583 18.114583 0
+ 27.114583 18.114583 0
+ F3 12632256 0.000000 4
+ 27.114583 20.114583 0
+ 40.114583 20.114583 0
+ 40.114583 19.114583 0
+ 27.114583 19.114583 0
+ F3 0 0.000000 4
+ 27.114583 20.114583 0
+ 26.114583 20.114583 0
+ 26.114583 19.114583 0
+ 27.114583 19.114583 0
+ G3 16777215 0.000000 1.000000 10.614583 21.614583 0
+ F3 8029321 0.000000 4
+ 1.062500 6.062500 0
+ 8.062500 6.062500 0
+ 8.062500 4.062500 0
+ 1.062500 4.062500 0
+ L3 0 0.000000 9.062500 3.062500 0 9.062500 3.062500 0
+ L3 0 0.000000 9.062500 3.062500 0 9.062500 3.062500 0
+ L3 0 0.000000 9.062500 3.062500 0 9.062500 3.062500 0
+ L3 0 0.000000 9.062500 3.062500 0 9.062500 3.062500 0
+ L3 0 0.125000 1.062500 3.062500 0 8.062500 3.062500 0
+ L3 0 0.125000 8.062500 3.062500 0 8.062500 2.062500 0
+ L3 0 0.125000 1.062500 2.062500 0 1.062500 3.062500 0
+ L3 0 0.125000 1.062500 1.062500 0 1.062500 2.062500 0
+ L3 0 0.125000 1.062500 1.062500 0 8.062500 1.062500 0
+ L3 0 0.125000 8.062500 1.062500 0 8.062500 0.062500 0
+ L3 0 0.125000 8.062500 0.062500 0 1.062500 0.062500 0
+ L3 0 0.125000 1.062500 0.062500 0 1.062500 1.062500 0
+ L3 8029321 0.125000 1.062500 6.062500 0 1.062500 18.062500 0
+ L3 8029321 0.125000 1.062500 18.062500 0 20.062500 18.062500 0
+ L3 8029321 0.125000 1.062500 18.062500 0 0.062500 18.062500 0
+ L3 8029321 0.125000 0.062500 18.062500 0 0.062500 23.062500 0
+ L3 8029321 0.125000 0.062500 23.062500 0 8.062500 23.062500 0
+ L3 8029321 0.125000 8.062500 23.062500 0 8.062500 18.062500 0
+ L3 8029321 0.125000 8.062500 20.062500 0 20.062500 20.062500 0
+ L3 8029321 0.125000 20.062500 18.062500 0 20.062500 22.062500 0
+ L3 8029321 0.125000 26.062500 22.062500 0 26.062500 19.062500 0
+ L3 8029321 0.125000 26.062500 19.062500 0 26.062500 17.062500 0
+ L3 8029321 0.125000 20.062500 17.062500 0 26.062500 17.062500 0
+ L3 8029321 0.125000 20.062500 18.062500 0 20.062500 17.062500 0
+ L3 0 0.000000 20.062500 20.062500 0 19.062500 18.062500 0
+ L3 8029321 0.125000 2.062500 6.062500 0 2.062500 18.062500 0
+ Z 0 11.375000 16.625000 0.000000 0 64.000000 "Drying Cylinder"
+ L3 0 0.125000 1.062500 2.062500 0 8.062500 2.062500 0
+ L3 0 0.125000 8.062500 2.062500 0 8.062500 1.062500 0
+ Z 0 3.712100 7.712100 0.000000 0 64.000000 "Silos"
+ Z 0 8.712100 2.712100 0.000000 0 64.000000 "Loading Facility"
+ Z 0 2.712100 16.712100 0.000000 0 64.000000 "Crusher"
+ Z 0 20.712100 15.712100 0.000000 0 64.000000 "Kiln Building"
+ Z 0 2.712101 11.712100 0.000000 0 64.000000 "Conveyor"
+ Z 0 29.712100 12.712100 0.000000 0 64.000000 "Bulk Storage Building"
+ Z 0 12.712100 21.712100 0.000000 0 64.000000 "Smoke Stack"
+ END$SEGS
+
+
+SUBCONTENTS Walthers Cornerstone HO Structures - Oil Industries
+STRUCTURE HO "Walthers Cornerstone Structures Walking Beam/"Horse Head" Oil Pump 933-3248"
+ L3 0 0.000000 0.000000 0.000000 0 5.051665 0.000000 0
+ L3 0 0.000000 5.051665 0.000000 0 5.051665 1.836969 0
+ L3 0 0.000000 5.051665 1.836969 0 0.000000 1.836969 0
+ L3 0 0.000000 0.000000 1.836969 0 0.000000 0.000000 0
+ F3 0 0.000000 4
+ 4.994259 1.377727 0
+ 4.994259 1.377727 0
+ 4.994259 1.377727 0
+ 4.994259 1.377727 0
+ F3 0 0.000000 4
+ 3.673938 1.377727 0
+ 4.592422 1.377727 0
+ 4.592422 0.459242 0
+ 3.673938 0.459242 0
+ F3 0 0.000000 4
+ 0.459242 1.033295 0
+ 3.185993 1.033295 0
+ 3.185993 0.803674 0
+ 0.459242 0.803674 0
+ F3 0 0.000000 4
+ 3.214696 1.377727 0
+ 3.444317 1.377727 0
+ 3.444317 0.459242 0
+ 3.214696 0.459242 0
+ F3 0 0.000000 4
+ 3.444317 1.234214 0
+ 3.645235 1.234214 0
+ 3.645235 1.176808 0
+ 3.444317 1.176808 0
+ F3 0 0.000000 4
+ 3.415614 0.574053 0
+ 3.645235 0.574053 0
+ 3.645235 0.631458 0
+ 3.415614 0.631458 0
+ END$SEGS
+STRUCTURE HO "Walthers North Island Refinery 933-3013"
+ L 16711935 0 0.000000 0.000000 0.000000 8.250000
+ L 16711935 0 0.000000 8.250000 13.500000 8.250000
+ L 16711935 0 13.500000 8.250000 13.500000 0.000000
+ L 16711935 0 13.500000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Interstate Fuel & Oil, Loading Rack 933-3006a"
+ L 16711935 0 0.000000 0.000000 0.000000 5.750000
+ L 16711935 0 0.000000 5.750000 7.000000 5.750000
+ L 16711935 0 7.000000 5.750000 7.000000 0.000000
+ L 16711935 0 7.000000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Interstate Fuel & Oil, Office 933-3006b"
+ L 16711935 0 0.000000 0.000000 0.000000 5.750000
+ L 16711935 0 0.000000 5.750000 4.500000 5.750000
+ L 16711935 0 4.500000 5.750000 4.500000 0.000000
+ L 16711935 0 4.500000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Interstate Fuel & Oil, Tanks 933-3006c"
+ L 16711935 0 0.000000 0.000000 0.000000 4.000000
+ L 16711935 0 0.000000 4.000000 2.000000 4.000000
+ L 16711935 0 2.000000 4.000000 2.000000 0.000000
+ L 16711935 0 2.000000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Interstate Fuel & Oil, Shed 933-3006d"
+ L 16711935 0 0.000000 0.000000 0.000000 1.250000
+ L 16711935 0 0.000000 1.250000 1.500000 1.250000
+ L 16711935 0 1.500000 1.250000 1.500000 0.000000
+ L 16711935 0 1.500000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Interstate Fuel - Loading Rack 933-32000a"
+ L 0 0 1.377727 0.000000 6.888634 0.000000
+ L 0 0 6.888634 0.000000 6.888634 5.740528
+ L 0 0 6.888634 5.740528 1.377727 5.740528
+ L 0 0 6.773823 0.114811 3.099885 0.114811
+ L 0 0 3.099885 0.114811 3.099885 1.492537
+ L 0 0 3.099885 1.492537 6.773823 1.492537
+ L 0 0 6.773823 1.492537 6.773823 0.114811
+ L 0 0 6.773823 5.625718 3.099885 5.625718
+ L 0 0 3.099885 5.625718 3.099885 4.247991
+ L 0 0 3.099885 4.247991 6.773823 4.247991
+ L 0 0 6.773823 4.247991 6.773823 5.625718
+ L 0 0 6.773823 2.181401 3.099885 2.181401
+ L 0 0 3.099885 2.181401 3.099885 3.559128
+ L 0 0 3.099885 3.559128 6.773823 3.559128
+ L 0 0 6.773823 3.559128 6.773823 2.181401
+ A 0 0 0.162366 5.510907 4.936854 0.000000 360.000000
+ A 0 0 0.162366 5.510907 2.870264 0.000000 360.000000
+ A 0 0 0.162366 5.510907 0.803674 0.000000 360.000000
+ L 0 0 1.377727 5.281286 0.000000 5.281286
+ L 0 0 0.000000 5.281286 0.000000 0.459242
+ L 0 0 0.000000 0.459242 1.377727 0.459242
+ L 0 0 2.755454 4.018370 0.803674 4.018370
+ L 0 0 0.803674 4.018370 0.803674 1.722158
+ L 0 0 0.803674 1.722158 2.755454 1.722158
+ L 0 0 2.755454 1.722158 2.755454 4.018370
+ L 0 0 1.377727 5.740528 1.377727 4.018370
+ L 0 0 1.377727 0.000000 1.377727 1.722158
+ END$SEGS
+STRUCTURE HO "Walthers Interstate Fuel - Office 933-3200b"
+ L 0 0 0.000000 5.510907 3.673938 5.510907
+ L 0 0 3.673938 5.510907 3.673938 0.918485
+ L 0 0 3.673938 0.918485 0.000000 0.918485
+ L 0 0 0.000000 0.918485 0.000000 5.510907
+ L 0 0 3.673938 4.133180 4.592422 4.133180
+ L 0 0 4.592422 4.133180 4.592422 0.000000
+ L 0 0 4.592422 0.000000 0.688863 0.000000
+ L 0 0 0.688863 0.000000 0.688863 0.918485
+ A 0 0 0.162366 1.836969 4.362802 0.000000 360.000000
+ A 0 0 0.162366 1.836969 2.066590 0.000000 360.000000
+ END$SEGS
+STRUCTURE HO "Walthers Interstate Fuel - Shed 933-3200c"
+ L 0 0 0.000000 0.000000 1.836969 0.000000
+ L 0 0 1.836969 0.000000 1.836969 1.148106
+ L 0 0 1.836969 1.148106 0.000000 1.148106
+ L 0 0 0.000000 1.148106 0.000000 0.000000
+ L 0 0 0.000000 0.574053 1.836969 0.574053
+ END$SEGS
+STRUCTURE HO "Walthers Interstate Fuel - Tanks 933-3200d"
+ L 0 0 1.836969 3.788749 1.836969 2.066590
+ L 0 0 0.114811 0.000000 1.722158 0.000000
+ L 0 0 0.000000 0.114811 0.114811 0.000000
+ L 0 0 1.836969 0.114811 1.722158 0.000000
+ L 0 0 1.836969 0.114811 1.836969 1.836969
+ L 0 0 0.000000 1.836969 0.000000 0.114811
+ L 0 0 0.000000 3.788749 0.000000 2.066590
+ L 0 0 0.000000 2.066590 0.114811 1.951780
+ L 0 0 0.114811 1.951780 0.000000 1.836969
+ L 0 0 1.836969 1.836969 1.722158 1.951780
+ L 0 0 1.722158 1.951780 1.836969 2.066590
+ L 0 0 0.114811 3.903559 1.722158 3.903559
+ L 0 0 1.722158 3.903559 1.836969 3.788749
+ L 0 0 0.114811 3.903559 0.000000 3.788749
+ A 0 0 0.835834 0.918485 0.918485 0.000000 360.000000
+ A 0 0 0.803674 0.918485 2.985075 0.000000 360.000000
+ END$SEGS
+STRUCTURE HO "Walthers Cornerstone McGraw Oil Company 933-3170"
+#Created by Howard Hayes
+ F3 12632256 0.000000 4
+ 0.000000 6.500000 0
+ 6.500000 6.500000 0
+ 6.500000 0.000000 0
+ 0.000000 0.000000 0
+ F3 8029321 0.000000 4
+ 0.250000 6.250000 0
+ 6.250000 6.250000 0
+ 6.250000 0.250000 0
+ 0.250000 0.250000 0
+ G3 12632256 0.000000 1.118034 2.000000 4.500000 0
+ G3 12632256 0.000000 1.118034 1.995891 1.995891 0
+ G3 12632256 0.000000 1.118034 4.495891 4.495891 0
+ G3 12632256 0.000000 1.118034 4.495891 1.995891 0
+ F3 0 0.000000 4
+ 2.750000 2.000000 0
+ 3.750000 2.000000 0
+ 3.750000 1.750000 0
+ 2.750000 1.750000 0
+ F3 0 0.000000 4
+ 2.750000 4.500000 0
+ 3.750000 4.500000 0
+ 3.750000 4.250000 0
+ 2.750000 4.250000 0
+ F3 0 0.000000 4
+ 2.000000 3.750000 0
+ 2.250000 3.750000 0
+ 2.250000 2.750000 0
+ 2.000000 2.750000 0
+ F3 0 0.000000 4
+ 8.125000 6.875000 0
+ 8.125000 6.875000 0
+ 8.125000 7.000000 0
+ 8.125000 7.000000 0
+ F3 0 0.000000 4
+ 9.875000 6.375000 0
+ 7.625000 6.375000 0
+ 7.625000 4.125000 0
+ 9.875000 4.125000 0
+ F3 0 0.000000 4
+ 7.625000 4.125000 0
+ 8.000000 4.125000 0
+ 8.000000 3.750000 0
+ 7.625000 3.750000 0
+ F3 0 0.000000 4
+ 9.875000 0.875000 0
+ 7.500000 0.875000 0
+ 7.500000 3.125000 0
+ 9.875000 3.125000 0
+ F3 0 0.000000 4
+ 7.500000 3.125000 0
+ 7.875000 3.125000 0
+ 7.875000 3.500000 0
+ 7.500000 3.500000 0
+ F3 0 0.000000 4
+ 8.625000 0.875000 0
+ 8.625000 0.875000 0
+ 8.625000 0.875000 0
+ 8.625000 0.875000 0
+ F3 0 0.000000 4
+ 8.625000 0.750000 0
+ 9.000000 0.750000 0
+ 9.000000 0.875000 0
+ 8.625000 0.875000 0
+ L3 0 0.000000 7.625000 6.375000 0 9.875000 6.375000 0
+ L3 0 0.000000 9.875000 6.375000 0 9.875000 5.250000 0
+ L3 16777215 0.000000 9.875000 5.250000 0 7.625000 5.250000 0
+ L3 0 0.000000 7.625000 5.250000 0 7.625000 6.375000 0
+ L3 16777215 0.000000 9.899600 5.274600 0 7.649600 5.274600 0
+ L3 16777215 0.000000 9.875000 6.375000 0 9.875000 4.500000 0
+ L3 16777215 0.000000 9.625000 6.375000 0 9.625000 4.000000 0
+ L3 16777215 0.000000 9.399600 6.399600 0 9.399600 4.024600 0
+ L3 16777215 0.000000 9.149600 6.399600 0 9.149600 4.024600 0
+ L3 16777215 0.000000 8.899600 6.399600 0 8.899600 4.024600 0
+ L3 16777215 0.000000 8.649600 6.399600 0 8.649600 4.024600 0
+ L3 16777215 0.000000 8.399600 6.399600 0 8.399600 4.024600 0
+ L3 16777215 0.000000 8.149600 6.399600 0 8.149600 4.024600 0
+ L3 16777215 0.000000 7.625000 6.375000 0 7.625000 3.625000 0
+ L3 16777215 0.000000 7.875000 6.375000 0 7.875000 3.750000 0
+ L3 16777215 0.000000 9.625000 3.875000 0 9.625000 0.750000 0
+ L3 16777215 0.000000 9.399600 4.024600 0 9.399600 0.899600 0
+ L3 16777215 0.000000 9.149600 4.024600 0 9.149600 0.899600 0
+ L3 16777215 0.000000 8.899600 4.024600 0 8.899600 0.899600 0
+ L3 16777215 0.000000 8.649600 4.024600 0 8.649600 0.899600 0
+ L3 16777215 0.000000 8.399600 4.024600 0 8.399600 0.899600 0
+ L3 16777215 0.000000 8.149600 4.024600 0 8.149600 0.899600 0
+ L3 16777215 0.000000 7.649600 3.649600 0 7.649600 0.524600 0
+ L3 16777215 0.000000 7.899600 3.649600 0 7.899600 0.524600 0
+ L3 16777215 0.000000 7.500000 2.125000 0 9.875000 2.125000 0
+ L3 16777215 0.000000 7.524600 2.149600 0 9.899600 2.149600 0
+ END$SEGS
+
+
+SUBCONTENTS Walthers Cornerstone HO Structures - Steel Industries
+STRUCTURE HO "Walthers Cornerstone Structures Blast Furnace 933-3054"
+ L 0 0.000000 0.000000 0.041667 12.666667 0.041667
+ L 0 0.000000 12.666667 0.041667 12.666667 11.791667
+ L 0 0.000000 12.666667 11.791667 0.000000 11.791667
+ L 0 0.000000 0.000000 11.791667 0.000000 0.041667
+ L 0 0.000000 -0.041667 6.208334 12.625000 6.208334
+ L 0 0.000000 12.625000 6.208334 12.625000 5.375000
+ L 0 0.000000 12.625000 5.375000 -0.041667 5.375000
+ L 0 0.000000 -0.041667 5.375000 -0.041667 6.208334
+ END$SEGS
+
+
+SUBCONTENTS Walthers Cornerstone HO Structures - Trackside Industries
+STRUCTURE HO "Walthers R.J. Frost Ice & Storage 933-3020"
+ L 0 0.000000 0.000000 0.000000 11.000000 0.000000
+ L 0 0.000000 11.000000 0.000000 11.000000 11.000000
+ L 0 0.000000 11.000000 11.000000 0.000000 11.000000
+ L 0 0.000000 0.000000 11.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Brook Hill Farm Dairy 933-3010"
+ L 16711935 0 0.000000 0.000000 0.000000 7.250000
+ L 16711935 0 0.000000 7.250000 7.375000 7.250000
+ L 16711935 0 7.375000 7.250000 7.375000 0.000000
+ L 16711935 0 7.375000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Golden Valley Canning Co, Main Bldg 933-3018a"
+ L 16711935 0 0.000000 0.000000 0.000000 8.000000
+ L 16711935 0 0.000000 8.000000 10.500000 8.000000
+ L 16711935 0 10.500000 8.000000 10.500000 0.000000
+ L 16711935 0 10.500000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Golden Valley Canning Co, Boiler House 933-3018b"
+ L 16711935 0 0.000000 0.000000 0.000000 3.000000
+ L 16711935 0 0.000000 3.000000 4.750000 3.000000
+ L 16711935 0 4.750000 3.000000 4.750000 0.000000
+ L 16711935 0 4.750000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers United Trucking Transfer Terminal 933-3005"
+ L 16711935 0 0.000000 0.000000 0.000000 6.000000
+ L 16711935 0 0.000000 6.000000 2.625000 6.000000
+ L 16711935 0 2.625000 6.000000 2.625000 0.000000
+ L 16711935 0 2.625000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Hardwood Furniture Co 933-3044"
+ L 16711935 0 0.000000 0.000000 0.000000 10.625000
+ L 16711935 0 0.000000 10.625000 11.875000 10.625000
+ L 16711935 0 11.875000 10.625000 11.875000 0.000000
+ L 16711935 0 11.875000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Geo. Roberts Printing Inc 933-3046"
+ L 16711935 0 0.000000 0.000000 0.000000 7.500000
+ L 16711935 0 0.000000 7.500000 12.750000 7.500000
+ L 16711935 0 12.750000 7.500000 12.750000 0.000000
+ L 16711935 0 12.750000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Water St Freight Terminal 933-3009"
+ L 16711935 0 0.000000 0.000000 0.000000 6.250000
+ L 16711935 0 0.000000 6.250000 20.500000 6.250000
+ L 16711935 0 20.500000 6.250000 20.500000 0.000000
+ L 16711935 0 20.500000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Vulcan Mfg Co, Main Bldg 933-3045a"
+ L 0 0.000000 0.000000 0.000000 9.250000 0.000000
+ L 0 0.000000 9.250000 0.000000 9.250000 8.500000
+ L 0 0.000000 9.250000 8.500000 0.000000 8.500000
+ L 0 0.000000 0.000000 8.500000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Vulcan Mfg Co, Crane Canopy 933-3045"
+ L 0 0.000000 0.000000 0.000000 9.125000 0.000000
+ L 0 0.000000 9.125000 0.000000 9.125000 8.375000
+ L 0 0.000000 9.125000 8.375000 0.000000 8.375000
+ L 0 0.000000 0.000000 8.375000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walther Champion Packing Co. 933-3048"
+ L 0 0.000000 0.000000 1.250000 16.375000 1.250000
+ L 0 0.000000 16.375000 1.250000 16.375000 4.750000
+ L 0 0.000000 10.625000 1.250000 10.625000 7.250000
+ L 0 0.000000 16.375000 4.750000 10.562500 4.750000
+ L 0 0.000000 16.375000 4.750000 16.375000 5.250000
+ L 0 0.000000 16.375000 5.250000 17.000000 5.250000
+ L 0 0.000000 17.000000 5.250000 17.000000 0.000000
+ L 0 0.000000 17.000000 0.000000 0.500000 0.000000
+ L 0 0.000000 0.500000 0.000000 0.500000 1.250000
+ L 0 0.000000 0.000000 1.250000 0.000000 7.250000
+ L 0 0.000000 0.000000 7.250000 11.500000 7.250000
+ L 0 0.000000 11.500000 7.250000 11.500000 8.500000
+ L 0 0.000000 11.500000 8.500000 0.000000 8.500000
+ L 0 0.000000 0.000000 8.500000 0.000000 7.250000
+ A 0 0.000000 0.951972 12.750000 6.250000 0.000000 360.000000
+ END$SEGS
+STRUCTURE HO "Walthers Stockyard 933-3047"
+ L 0 0.000000 0.000000 0.000000 12.500000 0.000000
+ L 0 0.000000 12.500000 0.000000 12.500000 7.250000
+ L 0 0.000000 12.500000 7.250000 13.000000 7.250000
+ L 0 0.000000 13.000000 7.250000 13.000000 8.000000
+ L 0 0.000000 13.000000 8.000000 11.000000 8.000000
+ L 0 0.000000 11.000000 8.000000 11.000000 7.625000
+ L 0 0.000000 11.000000 7.625000 10.500000 7.625000
+ L 0 0.000000 10.500000 7.625000 10.500000 7.250000
+ L 0 0.000000 10.500000 7.250000 6.000000 7.250000
+ L 0 0.000000 6.500000 7.250000 6.500000 8.000000
+ L 0 0.000000 6.500000 8.000000 4.500000 8.000000
+ L 0 0.000000 4.500000 8.000000 4.500000 7.687500
+ L 0 0.000000 4.500000 7.687500 4.000000 7.687500
+ L 0 0.000000 4.000000 7.687500 4.000000 7.250000
+ L 0 0.000000 4.000000 7.250000 0.000000 7.250000
+ L 0 0.000000 0.000000 7.250000 0.000000 0.000000
+ L 0 0.000000 6.000000 7.250000 6.000000 -0.062500
+ END$SEGS
+STRUCTURE HO "Walthers Ice House and Platform 933-3049"
+ L 0 0.000000 2.000000 0.000000 18.500000 0.000000
+ L 0 0.000000 18.500000 0.000000 18.500000 1.500000
+ L 0 0.000000 18.500000 1.500000 2.000000 1.500000
+ L 0 0.000000 2.000000 1.500000 2.000000 0.000000
+ L 0 0.000000 2.125000 0.125000 18.375000 0.125000
+ L 0 0.000000 18.375000 0.125000 18.375000 1.375000
+ L 0 0.000000 18.375000 1.375000 2.125000 1.375000
+ L 0 0.000000 2.125000 1.375000 2.125000 0.125000
+ L 0 0.000000 2.000000 0.562500 0.000000 0.562500
+ L 0 0.000000 2.000000 0.937500 0.000000 0.937500
+ L 0 0.000000 0.000000 0.937500 0.000000 0.562500
+ L 0 0.000000 4.875000 1.625000 15.625000 1.625000
+ L 0 0.000000 15.625000 1.625000 15.625000 6.375000
+ L 0 0.000000 15.625000 6.375000 4.875000 6.375000
+ L 0 0.000000 4.875000 6.375000 4.875000 1.625000
+ END$SEGS
+STRUCTURE HO "Walthers Overhead Traveling Crane 933-3102"
+ L 0 0.000000 0.000000 8.625000 0.125000 8.625000
+ L 0 0.000000 0.125000 8.625000 0.125000 7.125000
+ L 0 0.000000 0.125000 7.125000 0.000000 7.125000
+ L 0 0.000000 0.000000 7.125000 0.000000 8.625000
+ L 0 0.000000 12.187500 8.625000 12.062500 8.625000
+ L 0 0.000000 12.062500 8.625000 12.062500 7.125000
+ L 0 0.000000 12.062500 7.125000 12.187500 7.125000
+ L 0 0.000000 12.187500 7.125000 12.187500 8.625000
+ L 0 0.000000 12.187500 0.000000 12.062500 0.000000
+ L 0 0.000000 12.062500 0.000000 12.062500 1.500000
+ L 0 0.000000 12.062500 1.500000 12.187500 1.500000
+ L 0 0.000000 12.187500 1.500000 12.187500 0.000000
+ L 0 0.000000 0.000000 0.000000 0.125000 0.000000
+ L 0 0.000000 0.125000 0.000000 0.125000 1.500000
+ L 0 0.000000 0.125000 1.500000 0.000000 1.500000
+ L 0 0.000000 0.000000 1.500000 0.000000 0.000000
+ L 0 0.000000 0.000000 1.500000 12.187500 1.500000
+ L 0 0.000000 12.187500 1.500000 12.187500 1.625000
+ L 0 0.000000 12.187500 1.625000 0.000000 1.625000
+ L 0 0.000000 0.000000 1.625000 0.000000 1.500000
+ L 0 0.000000 0.000000 7.125000 12.187500 7.125000
+ L 0 0.000000 12.187500 7.125000 12.187500 7.000000
+ L 0 0.000000 12.187500 7.000000 0.000000 7.000000
+ L 0 0.000000 0.000000 7.000000 0.000000 7.125000
+ L 0 0.000000 6.000000 8.625000 6.125000 8.625000
+ L 0 0.000000 6.125000 8.625000 6.125000 7.125000
+ L 0 0.000000 6.125000 7.125000 6.000000 7.125000
+ L 0 0.000000 6.000000 7.125000 6.000000 8.625000
+ L 0 0.000000 6.000000 1.500000 6.125000 1.500000
+ L 0 0.000000 6.125000 1.500000 6.125000 0.000000
+ L 0 0.000000 6.125000 0.000000 6.000000 0.000000
+ L 0 0.000000 6.000000 0.000000 6.000000 1.500000
+ L 0 0.000000 2.937500 8.625000 3.062500 8.625000
+ L 0 0.000000 3.062500 8.625000 3.062500 7.125000
+ L 0 0.000000 3.062500 7.125000 2.937500 7.125000
+ L 0 0.000000 2.937500 7.125000 2.937500 8.625000
+ L 0 0.000000 8.937500 8.625000 9.062500 8.625000
+ L 0 0.000000 9.062500 8.625000 9.062500 7.125000
+ L 0 0.000000 9.062500 7.125000 8.937500 7.125000
+ L 0 0.000000 8.937500 7.125000 8.937500 8.625000
+ L 0 0.000000 2.937500 1.500000 3.062500 1.500000
+ L 0 0.000000 3.062500 1.500000 3.062500 0.000000
+ L 0 0.000000 3.062500 0.000000 2.937500 0.000000
+ L 0 0.000000 2.937500 0.000000 2.937500 1.500000
+ L 0 0.000000 8.937500 1.500000 9.062500 1.500000
+ L 0 0.000000 9.062500 1.500000 9.062500 0.000000
+ L 0 0.000000 9.062500 0.000000 8.937500 0.000000
+ L 0 0.000000 8.937500 0.000000 8.937500 1.500000
+ L 0 0.000000 11.000000 7.125000 11.125000 7.125000
+ L 0 0.000000 11.125000 7.125000 11.125000 1.500000
+ L 0 0.000000 11.125000 1.500000 11.000000 1.500000
+ L 0 0.000000 11.000000 1.500000 11.000000 7.125000
+ L 0 0.000000 10.250000 7.125000 10.375000 7.125000
+ L 0 0.000000 10.375000 7.125000 10.375000 1.500000
+ L 0 0.000000 10.375000 1.500000 10.250000 1.500000
+ L 0 0.000000 10.250000 1.500000 10.250000 7.125000
+ L 0 0.000000 10.062500 5.000000 11.312500 5.000000
+ L 0 0.000000 11.312500 5.000000 11.312500 3.687500
+ L 0 0.000000 11.312500 3.687500 10.062500 3.687500
+ L 0 0.000000 10.062500 3.687500 10.062500 5.000000
+ L 0 0.000000 10.062500 4.375000 11.312500 4.375000
+ END$SEGS
+
+
+SUBCONTENTS Walthers Cornerstone HO Structures - Grain Industries
+STRUCTURE HO "Walthers ADM Scalehouse 933-3027a"
+ L 0 0.000000 0.000000 0.000000 5.875000 0.000000
+ L 0 0.000000 5.875000 0.000000 5.875000 3.875000
+ L 0 0.000000 5.875000 3.875000 0.000000 3.875000
+ L 0 0.000000 0.000000 3.875000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers ADM Rail Car Scale 933-3027b"
+ L 0 0.000000 0.000000 0.000000 8.000000 0.000000
+ L 0 0.000000 8.000000 0.000000 8.000000 1.875000
+ L 0 0.000000 8.000000 1.875000 0.000000 1.875000
+ L 0 0.000000 0.000000 1.875000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers ADM Truck Scale 933-3027c"
+ L 0 0.000000 0.000000 0.000000 4.000000 0.000000
+ L 0 0.000000 4.000000 0.000000 4.000000 1.562500
+ L 0 0.000000 4.000000 1.562500 0.000000 1.562500
+ L 0 0.000000 0.000000 1.562500 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Coop Grain Elevator, Main Bldg 933-3036a"
+ L 0 0.000000 0.750000 0.000000 0.750000 7.250000
+ L 0 0.000000 1.750000 0.000000 1.750000 3.375000
+ L 0 0.000000 2.750000 0.000000 2.750000 3.375000
+ L 0 0.000000 3.750000 0.000000 3.750000 3.375000
+ L 0 0.000000 4.750000 0.000000 4.750000 7.250000
+ L 0 0.000000 0.000000 6.250000 8.812500 6.250000
+ L 0 0.000000 8.812500 6.250000 8.812500 4.000000
+ L 0 0.000000 8.812500 4.000000 8.000000 4.000000
+ L 0 0.000000 8.000000 4.000000 8.000000 2.937500
+ L 0 0.000000 8.000000 2.937500 7.687500 2.937500
+ L 0 0.000000 7.687500 3.812500 7.687500 2.562500
+ L 0 0.000000 7.687500 2.562500 5.500000 2.562500
+ L 0 0.000000 5.500000 2.562500 5.500000 4.000000
+ L 0 0.000000 7.687500 3.812500 5.500000 3.812500
+ L 0 0.000000 5.500000 4.000000 0.000000 4.000000
+ L 0 0.000000 0.000000 6.250000 0.000000 4.000000
+ L 0 0.000000 0.750000 0.000000 4.750000 0.000000
+ L 0 0.000000 0.750000 6.562500 4.750000 6.562500
+ L 0 0.000000 1.750000 3.375000 1.750000 4.000000
+ L 0 0.000000 2.750000 3.375000 2.750000 4.000000
+ L 0 0.000000 3.750000 3.312500 3.750000 4.000000
+ END$SEGS
+STRUCTURE HO "Walthers Coop Grain Elevator, Shed 933-3036b"
+ L 0 0.000000 0.000000 0.000000 7.000000 0.000000
+ L 0 0.000000 7.000000 0.000000 7.000000 4.500000
+ L 0 0.000000 7.000000 4.500000 0.000000 4.500000
+ L 0 0.000000 0.000000 4.500000 0.000000 0.000000
+ L 0 0.000000 0.000000 2.250000 6.937500 2.250000
+ L 0 0.000000 3.250000 2.000000 3.750000 2.000000
+ L 0 0.000000 3.750000 2.000000 3.750000 2.500000
+ L 0 0.000000 3.750000 2.500000 3.250000 2.500000
+ L 0 0.000000 3.250000 2.500000 3.250000 2.000000
+ END$SEGS
+STRUCTURE HO "Walthers ADM Grain Elevator 933-3022"
+ L 0 0.000000 0.000000 0.000000 13.500000 0.000000
+ L 0 0.000000 13.500000 0.000000 13.500000 9.500000
+ L 0 0.000000 13.500000 9.500000 0.000000 9.500000
+ L 0 0.000000 0.000000 9.500000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers ADM Grain Elevator 933-3225"
+ L 0 0 14.925370 10.792190 6.659013 10.792190
+ L 0 0 14.925370 0.000000 9.184845 0.000000
+ L 0 0 9.184845 0.000000 9.184845 7.692308
+ L 0 0 14.925370 7.692308 6.659013 7.692308
+ L 0 0 6.659013 10.792190 6.659013 7.692308
+ L 0 0 9.184845 2.870264 14.925370 2.870264
+ L 0 0 13.432840 7.692308 13.432840 2.870264
+ L 0 0 10.332950 7.692308 10.332950 2.870264
+ L 0 0 14.925370 6.888634 14.006890 6.888634
+ L 0 0 14.006890 6.888634 14.006890 5.970150
+ L 0 0 14.006890 5.970150 14.925370 5.970150
+ L 0 0 14.006890 4.362802 14.925370 4.362802
+ L 0 0 14.925370 10.792190 14.925370 0.000000
+ A 0 0 0.363062 14.466130 6.429391 0.000000 360.000000
+ A 0 0 0.363062 14.466130 3.903559 0.000000 360.000000
+ L 0 0 14.925370 3.444317 14.006890 3.444317
+ L 0 0 14.006890 4.362802 14.006890 3.444317
+ A 0 0 0.229621 14.466130 6.429391 0.000000 360.000000
+ A 0 0 0.229621 14.466130 3.903559 0.000000 360.000000
+ A 0 0 0.114811 11.825490 6.888634 0.000000 360.000000
+ A 0 0 0.114811 11.825490 5.970150 0.000000 360.000000
+ A 0 0 0.114811 11.825490 4.362802 0.000000 360.000000
+ A 0 0 0.114811 11.825490 3.559128 0.000000 360.000000
+ A 0 0 1.148106 8.036739 6.429391 270.000000 180.000000
+ L 0 0 6.888634 6.429391 6.888634 6.429391
+ A 0 0 1.148106 5.740528 6.429391 270.000000 180.000000
+ A 0 0 1.148106 3.444317 6.429391 270.000000 180.000000
+ A 0 0 1.139042 1.157169 6.429391 246.222684 203.777316
+ A 0 0 1.148106 8.036739 4.133180 90.000000 180.000000
+ A 0 0 1.148106 5.740528 4.133180 90.000000 180.000000
+ A 0 0 1.148106 3.444317 4.133180 90.000000 180.000000
+ A 0 0 1.139042 1.157169 4.133180 90.000000 203.777316
+ L 0 0 9.184845 5.281286 0.114811 5.281286
+ L 0 0 0.114811 5.281286 0.114811 6.199770
+ L 0 0 0.114811 6.199770 9.070035 6.199770
+ L 0 0 0.114811 5.281286 0.114811 4.362802
+ L 0 0 0.114811 4.362802 9.184845 4.362802
+ END$SEGS
+STRUCTURE HO "Walthers ADM Grain Elevator (concrete) 933-3022"
+ G3 15720651 0.000000 1.148106 1.148106 5.442971 0
+ G3 15720651 0.000000 1.148106 3.444317 5.442971 0
+ G3 15720651 0.000000 1.148106 3.444317 5.442971 0
+ G3 15720651 0.000000 1.148106 5.740528 5.442971 0
+ G3 15720651 0.000000 1.148106 8.036739 5.442971 0
+ G3 15720651 0.000000 1.148106 1.148106 7.739183 0
+ G3 15720651 0.000000 1.148106 3.444317 7.739183 0
+ G3 15720651 0.000000 1.148106 5.740528 7.739183 0
+ G3 15720651 0.000000 1.148106 8.036739 7.739183 0
+ A3 0 0.093750 1.148106 1.148106 5.442971 0 0.000000 360.000000
+ A3 0 0.093750 1.148106 1.148106 7.739183 0 0.000000 360.000000
+ A3 0 0.093750 1.148106 3.444317 5.442971 0 0.000000 360.000000
+ A3 0 0.093750 1.148106 5.740528 5.442971 0 0.000000 360.000000
+ A3 0 0.093750 1.148106 8.036739 5.442971 0 0.000000 360.000000
+ A3 0 0.093750 1.148106 3.444317 7.739183 0 0.000000 360.000000
+ A3 0 0.093750 1.148106 5.740528 7.739183 0 0.000000 360.000000
+ A3 0 0.093750 1.148106 8.036739 7.739183 0 0.000000 360.000000
+ F3 12632256 0.000000 4
+ 1.148106 7.739183 0
+ 9.184845 7.739183 0
+ 9.184845 5.442971 0
+ 1.148106 5.442971 0
+ G3 0 0.000000 0.000000 1.148106 5.442971 0
+ G3 0 0.000000 0.000000 1.148106 7.739183 0
+ L3 0 0.093750 1.148106 7.739183 0 1.148106 5.442971 0
+ L3 0 0.093750 1.148106 5.442971 0 9.184845 5.442971 0
+ L3 0 0.093750 1.148106 6.591077 0 9.184845 6.591077 0
+ L3 0 0.093750 9.184845 7.739183 0 1.148106 7.739183 0
+ F3 12632256 0.000000 4
+ 9.184845 9.231720 0
+ 14.466131 9.231720 0
+ 14.466131 3.950434 0
+ 9.184845 3.950434 0
+ L3 0 0.093750 14.466131 3.950434 0 14.466131 9.231720 0
+ L3 0 0.093750 9.184845 9.231720 0 9.184845 3.950434 0
+ L3 0 0.093750 10.447761 3.950434 0 10.447761 9.231720 0
+ L3 0 0.093750 13.203215 3.950434 0 13.203215 9.231720 0
+ A3 0 0.093750 0.459242 13.826866 5.442971 0 0.000000 360.000000
+ A3 0 0.093750 0.229621 13.826866 5.442971 0 0.000000 360.000000
+ A3 0 0.093750 0.459242 13.826866 7.853993 0 0.000000 360.000000
+ A3 0 0.093750 0.229621 13.826866 7.853993 0 0.000000 360.000000
+ L3 0 0.093750 9.184845 5.442971 0 9.184845 7.739183 0
+ F3 12632256 0.000000 4
+ 9.184845 11.757552 0
+ 14.466131 11.757552 0
+ 14.466131 9.231720 0
+ 9.184845 9.231720 0
+ L3 0 0.093750 9.184845 9.231720 0 9.184845 11.757552 0
+ L3 0 0.093750 9.184845 11.757552 0 14.466131 11.757552 0
+ L3 0 0.093750 14.466131 11.757552 0 14.466131 9.231720 0
+ L3 0 0.093750 14.466131 9.231720 0 9.184845 9.231720 0
+ F3 12632256 0.000000 4
+ 13.088404 9.346531 0
+ 13.088404 9.346531 0
+ 13.088404 9.346531 0
+ 13.088404 9.346531 0
+ G3 0 0.000000 0.114811 11.825488 8.428046 0
+ G3 0 0.000000 0.114811 11.825488 7.279940 0
+ G3 0 0.000000 0.114811 11.825488 5.672593 0
+ G3 0 0.000000 0.114811 11.825488 4.754108 0
+ F3 12632256 0.000000 4
+ 5.855339 3.950434 0
+ 14.466131 3.950434 0
+ 14.466131 0.046875 0
+ 5.855339 0.046875 0
+ L3 0 0.093750 9.184845 3.950434 0 14.466131 3.950434 0
+ L3 0 0.093750 14.466131 3.950434 0 14.466131 0.046875 0
+ L3 0 0.093750 14.466131 0.046875 0 5.855339 0.046875 0
+ L3 0 0.093750 5.855339 0.046875 0 5.855339 3.950434 0
+ L3 0 0.093750 5.855339 3.950434 0 9.184845 3.950434 0
+ L3 0 0.187500 11.825488 3.950434 0 11.825488 1.769033 0
+ END$SEGS
+STRUCTURE HO "Walthers ADM Grain Elevator Silo Add-on 933-"
+ G3 15720651 0.000000 1.148106 1.148106 1.148106 0
+ G3 15720651 0.000000 1.148106 3.444317 1.148106 0
+ G3 15720651 0.000000 1.148106 3.444317 1.148106 0
+ G3 15720651 0.000000 1.148106 5.740528 1.148106 0
+ G3 15720651 0.000000 1.148106 8.036739 1.148106 0
+ G3 15720651 0.000000 1.148106 1.148106 3.444317 0
+ G3 15720651 0.000000 1.148106 3.444317 3.444317 0
+ G3 15720651 0.000000 1.148106 5.740528 3.444317 0
+ G3 15720651 0.000000 1.148106 8.036739 3.444317 0
+ A3 0 0.093750 1.148106 1.148106 1.148106 0 0.000000 360.000000
+ A3 0 0.093750 1.148106 1.148106 3.444317 0 0.000000 360.000000
+ A3 0 0.093750 1.148106 3.444317 1.148106 0 0.000000 360.000000
+ A3 0 0.093750 1.148106 5.740528 1.148106 0 0.000000 360.000000
+ A3 0 0.093750 1.148106 8.036739 1.148106 0 0.000000 360.000000
+ A3 0 0.093750 1.148106 3.444317 3.444317 0 0.000000 360.000000
+ A3 0 0.093750 1.148106 5.740528 3.444317 0 0.000000 360.000000
+ A3 0 0.093750 1.148106 8.036739 3.444317 0 0.000000 360.000000
+ F3 12632256 0.000000 4
+ 1.148106 3.444317 0
+ 9.184845 3.444317 0
+ 9.184845 1.148106 0
+ 1.148106 1.148106 0
+ G3 0 0.000000 0.000000 1.148106 1.148106 0
+ G3 0 0.000000 0.000000 1.148106 3.444317 0
+ L3 0 0.093750 1.148106 3.444317 0 1.148106 1.148106 0
+ L3 0 0.093750 1.148106 1.148106 0 9.184845 1.148106 0
+ L3 0 0.093750 1.148106 2.296211 0 9.184845 2.296211 0
+ L3 0 0.093750 9.184845 3.444317 0 1.148106 3.444317 0
+ L3 0 0.093750 9.184845 1.148106 0 9.184845 3.444317 0
+ END$SEGS
+STRUCTURE HO "Walthers Redwing Flour Mill 933-3026"
+ L 0 0.000000 0.000000 0.000000 11.000000 0.000000
+ L 0 0.000000 11.000000 0.000000 11.000000 8.000000
+ L 0 0.000000 11.000000 8.000000 0.000000 8.000000
+ L 0 0.000000 0.000000 8.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Red Wing Milling Co 933-3212"
+ L 0 0 8.266360 0.000000 8.266360 0.688863
+ L 0 0 12.169920 0.688863 8.266360 0.688863
+ L 0 0 12.169920 8.955224 3.788749 8.955224
+ L 0 0 3.788749 8.955224 3.788749 8.266360
+ L 0 0 3.788749 8.151550 0.000000 8.151550
+ L 0 0 0.688863 1.377727 5.970150 1.377727
+ L 0 0 5.970150 1.377727 5.970150 2.985075
+ L 0 0 5.970150 2.985075 0.688863 2.985075
+ L 0 0 0.688863 2.985075 0.688863 1.377727
+ L 0 0 5.625718 2.640643 4.822044 2.640643
+ L 0 0 4.822044 2.640643 4.822044 1.951780
+ L 0 0 4.822044 1.951780 5.625718 1.951780
+ L 0 0 5.625718 1.951780 5.625718 2.640643
+ L 0 0 8.266360 0.000000 8.266360 -1.262916
+ L 0 0 8.266360 -1.262916 3.673938 -1.262916
+ L 0 0 3.673938 -1.262916 3.673938 0.688863
+ L 0 0 3.673938 0.688863 0.000000 0.688863
+ L 0 0 8.266360 0.688863 3.673938 0.688863
+ L 0 0 3.673938 0.000000 0.000000 0.000000
+ L 0 0 4.133180 0.688863 4.133180 -0.114811
+ L 0 0 4.133180 -0.114811 7.462687 -0.114811
+ L 0 0 7.462687 -0.114811 7.462687 0.688863
+ A 0 0 0.256724 5.855339 0.229621 0.000000 360.000000
+ A 0 0 0.256724 7.003444 0.229621 0.000000 360.000000
+ A 0 0 0.256724 4.822044 0.229621 0.000000 360.000000
+ A 0 0 0.114811 7.003444 0.229621 0.000000 360.000000
+ A 0 0 0.114811 5.855339 0.229621 0.000000 360.000000
+ A 0 0 0.000000 4.822044 0.229621 0.000000 360.000000
+ A 0 0 0.114811 4.822044 0.229621 0.000000 360.000000
+ L 0 0 12.169920 8.955224 12.169920 0.688863
+ L 0 0 3.788749 8.151550 12.169920 8.151550
+ L 0 4 5.396097 -0.114811 5.396097 -1.033295
+ L 0 4 2.411022 0.688863 2.411022 -0.114811
+ L 0 0 0.000000 8.151550 0.000000 8.151550
+ L 0 0 0.000000 8.151550 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Grain Bin 933-3123"
+ A 0 0.000000 2.765424 2.843750 2.770833 0.000000 360.000000
+ A 0 0.000000 0.192074 2.739583 2.750000 0.000000 360.000000
+ A 0 0.000000 2.458157 2.781250 2.770833 0.000000 360.000000
+ END$SEGS
+STRUCTURE HO "Walthers Grain Dryer 933-3128"
+ L 0 0.000000 -0.010417 0.000000 2.864583 0.000000
+ L 0 0.000000 2.864583 0.000000 2.864583 1.145833
+ L 0 0.000000 -0.010417 1.145833 -0.010417 0.000000
+ L 0 0.000000 -0.010417 0.593750 2.864583 0.593750
+ L 0 0.000000 2.864583 0.468750 -0.010417 0.468750
+ L 0 0.000000 2.864583 0.697917 3.072916 0.697917
+ L 0 0.000000 3.072916 0.697917 3.072916 0.322917
+ L 0 0.000000 3.072916 0.322917 2.864583 0.322917
+ L 0 0.000000 2.864583 0.322917 2.864583 0.697917
+ L 0 0.000000 2.593750 0.718750 2.593750 1.072917
+ L 0 0.000000 2.593750 0.093750 2.593750 0.364583
+ L 0 0.000000 2.218750 0.718750 2.218750 1.072917
+ L 0 0.000000 2.218750 0.114583 2.218750 0.406250
+ L 0 0.000000 2.593750 0.343750 2.593750 0.385417
+ L 0 0.000000 1.864583 0.718750 1.864583 1.052083
+ L 0 0.000000 1.864583 0.093750 1.864583 0.385417
+ L 0 0.000000 1.489583 0.093750 1.489583 0.385417
+ L 0 0.000000 2.864583 1.135417 -0.010417 1.135417
+ L 0 0.000000 1.489583 0.677083 1.489583 1.052083
+ L 0 0.000000 1.156250 0.677083 1.156250 1.031250
+ L 0 0.000000 1.156250 0.093750 1.156250 0.385417
+ L 0 0.000000 0.802083 0.677083 0.802083 1.031250
+ L 0 0.000000 0.802083 0.072917 0.802083 0.364583
+ L 0 0.000000 0.385416 0.697917 0.385416 1.052083
+ L 0 0.000000 0.385416 0.072917 0.385416 0.406250
+ END$SEGS
+
+
+SUBCONTENTS Walthers Cornerstone HO Structures - Coal Industries
+STRUCTURE HO "Walther's Cornerstone Structures New River Mine Tipple 933-3221"
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 9.184845 0.000000 0
+ 9.184845 9.184845 0
+ 0.000000 9.184845 0
+ L3 0 0.000000 4.477612 9.184845 0 4.477612 0.000000 0
+ L3 0 0.000000 2.066590 0.000000 0 2.066590 9.156142 0
+ L3 0 0.000000 4.477612 4.592422 0 9.156142 4.592422 0
+ END$SEGS
+STRUCTURE HO "Walther's Cornerstone Structures New River Mine Conveyor 933-3221"
+ F3 12632256 0.000000 4
+ 5.510907 0.000000 0
+ 0.000000 0.000000 0
+ 0.000000 4.707233 0
+ 5.510907 4.707233 0
+ F3 8421504 0.000000 4
+ 2.296211 4.707233 0
+ 3.214696 4.707233 0
+ 3.214696 5.281286 0
+ 2.296211 5.281286 0
+ L3 0 0.000000 0.000000 0.000000 0 5.510907 0.000000 0
+ L3 0 0.000000 5.510907 0.000000 0 5.510907 4.707233 0
+ L3 0 0.000000 5.510907 4.707233 0 0.000000 4.707233 0
+ L3 0 0.000000 0.000000 4.707233 0 0.000000 0.000000 0
+ L3 0 0.000000 2.755454 4.707233 0 2.755454 0.028703 0
+ L3 0 0.000000 0.000000 2.755454 0 5.482204 2.784156 0
+ END$SEGS
+STRUCTURE HO "Walther's Cornerstone Structures New River Mine Track Coaling Bldg. 933-3221"
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 7.577497 0.000000 0
+ 7.577497 2.985075 0
+ 0.000000 2.985075 0
+ L3 0 0.000000 0.000000 1.492537 0 7.520092 1.463835 0
+ END$SEGS
+STRUCTURE HO "Walthers Coal Flood Loader 933-3051"
+ L 0 0.000000 0.000000 0.000000 6.000000 0.000000
+ L 0 0.000000 6.000000 0.000000 6.000000 4.000000
+ L 0 0.000000 6.000000 4.000000 0.000000 4.000000
+ L 0 0.000000 0.000000 4.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Cornerstone Structure Western (coal) Flood Loader 933-3247"
+ G3 0 0.000000 0.000000 2.440384 2.440384 0
+ G3 15132390 0.000000 2.497789 2.497789 2.497789 0
+ F3 8421504 0.000000 4
+ 4.363461 3.330166 0
+ 2.870924 3.330166 0
+ 2.870924 1.550602 0
+ 4.363461 1.550602 0
+ L3 0 0.000000 3.559787 3.330166 0 3.559787 1.550602 0
+ F3 0 0.000000 4
+ 34.874370 1.464494 0
+ 34.816960 1.464494 0
+ 34.816960 1.464494 0
+ 34.874370 1.464494 0
+ F3 12632256 0.000000 4
+ 34.931770 1.464494 0
+ 33.037400 1.464494 0
+ 33.037400 3.301463 0
+ 34.931770 3.301463 0
+ L3 0 0.000000 4.908811 1.981142 0 32.979990 1.981142 0
+ L3 0 0.000000 32.979990 1.981142 0 32.979990 2.842221 0
+ L3 0 0.000000 32.979990 2.842221 0 4.908811 2.842221 0
+ L3 0 0.000000 4.908811 2.842221 0 4.908811 1.981142 0
+ A3 0 0.000000 2.285423 2.469087 2.497789 0 0.000000 360.000000
+ G3 0 0.000000 0.118345 3.186653 2.124655 0
+ G3 8421504 0.000000 0.192544 1.005252 2.583897 0
+ F3 8421504 0.000000 4
+ 4.966217 2.497789 0
+ 32.979990 2.497789 0
+ 32.979990 2.210763 0
+ 4.966217 2.210763 0
+ END$SEGS
+STRUCTURE HO "Walthers Rotary Dumper 933-3145"
+ L 0 0.000000 -0.020833 0.020833 7.229167 0.020833
+ L 0 0.000000 7.229167 0.020833 7.229167 9.520833
+ L 0 0.000000 7.229167 9.520833 -0.020833 9.520833
+ L 0 0.000000 -0.020833 9.520833 -0.020833 0.020833
+ L 0 0.000000 3.895833 0.020833 3.895833 9.520833
+ L 0 0.000000 3.354167 -0.020833 3.354167 9.520833
+ END$SEGS
+STRUCTURE HO "Walthers O.L. King Coal Yard, Shed 933-3015a"
+ L 16711935 0 0.000000 0.000000 0.000000 2.875000
+ L 16711935 0 0.000000 2.875000 5.000000 2.875000
+ L 16711935 0 5.000000 2.875000 5.000000 0.000000
+ L 16711935 0 5.000000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers O.L. King Coal Yard, Office 933-3015b"
+ L 16711935 0 0.000000 0.000000 0.000000 4.500000
+ L 16711935 0 0.000000 4.500000 6.500000 4.500000
+ L 16711935 0 6.500000 4.500000 6.500000 0.000000
+ L 16711935 0 6.500000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers O.L. King Coal Yard, Trestle 933-3015c"
+ L 16711935 0 0.000000 0.000000 0.000000 2.000000
+ L 16711935 0 0.000000 2.000000 15.750000 2.000000
+ L 16711935 0 15.750000 2.000000 15.750000 0.000000
+ L 16711935 0 15.750000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Western Flood Loader 933-3089"
+ F3 16755285 0.000000 4
+ 29.250868 3.375868 0
+ 32.000868 3.375868 0
+ 32.000868 1.125868 0
+ 29.250868 1.125868 0
+ G3 12632256 0.000000 2.250868 2.250868 2.250868 0
+ F3 16755285 0.000000 4
+ 1.938368 3.375868 0
+ 4.188368 3.375868 0
+ 4.188368 1.125868 0
+ 1.938368 1.125868 0
+ L3 0 0.052083 28.563368 2.063368 0 28.563368 2.063368 0
+ A3 0 0.052083 2.250000 2.250868 2.250868 0 0.000000 360.000000
+ L3 0 0.052083 1.938368 1.125868 0 4.188368 1.125868 0
+ L3 0 0.052083 4.188368 3.375868 0 1.938368 3.375868 0
+ L3 0 0.052083 1.938368 3.375868 0 1.938368 1.125868 0
+ L3 12632256 0.052083 3.063368 3.438368 0 3.063368 3.438368 0
+ L3 0 0.052083 3.063368 3.375868 0 3.063368 1.125868 0
+ L3 0 0.052083 32.000868 1.125868 0 29.250868 1.125868 0
+ L3 0 0.052083 29.250868 3.375868 0 32.000868 3.375868 0
+ L3 0 0.052083 32.000868 3.375868 0 32.000868 1.125868 0
+ F3 16755285 0.000000 4
+ 29.250868 3.000868 0
+ 4.188368 3.000868 0
+ 4.188368 1.500868 0
+ 29.250868 1.500868 0
+ L3 0 0.052083 4.188368 1.125868 0 4.188368 3.375868 0
+ L3 0 0.052083 29.250868 3.000868 0 4.188368 3.000868 0
+ L3 0 0.052083 29.250868 1.500868 0 4.188368 1.500868 0
+ L3 0 0.052083 29.250868 1.125868 0 29.250868 3.375868 0
+ END$SEGS
+STRUCTURE HO "Walthers New River Mining Co.- Stack Loading Building 933-3017B"
+ L3 0 0.052083 4.526042 2.463542 0 4.526042 2.463542 0
+ L3 0 0.052083 4.526042 2.463542 0 4.526042 2.463542 0
+ L3 0 0.052083 4.526042 2.463542 0 4.526042 2.463542 0
+ L3 0 0.052083 4.526042 2.463542 0 4.526042 2.463542 0
+ F3 16755285 0.000000 4
+ 0.026042 0.026042 0
+ 7.026042 0.026042 0
+ 7.026042 2.776042 0
+ 0.026042 2.776042 0
+ L3 0 0.052083 0.026042 0.026042 0 7.026042 0.026042 0
+ L3 0 0.052083 7.026042 0.026042 0 7.026042 2.776042 0
+ L3 0 0.052083 7.026042 2.776042 0 0.026042 2.776042 0
+ L3 0 0.052083 0.026042 2.776042 0 0.026042 0.026042 0
+ L3 0 0.052083 0.026042 1.401042 0 7.026042 1.401042 0
+ END$SEGS
+STRUCTURE HO "Walthers New River Mining Co.- Tripple Building 933-3017A"
+ F3 16755285 0.000000 4
+ 0.026042 0.026042 0
+ 7.526042 0.026042 0
+ 7.526042 5.026042 0
+ 0.026042 5.026042 0
+ F3 16755285 0.000000 4
+ 7.526042 3.026042 0
+ 12.526042 3.026042 0
+ 12.526042 5.026042 0
+ 7.526042 5.026042 0
+ L3 0 0.052083 7.526042 3.026042 0 12.526042 3.026042 0
+ L3 0 0.052083 12.526042 5.026042 0 7.526042 5.026042 0
+ L3 0 0.052083 10.026042 3.026042 0 10.026042 5.026042 0
+ F3 16755285 0.000000 4
+ 7.526042 9.026042 0
+ 12.526042 9.026042 0
+ 12.526042 7.526042 0
+ 7.526042 7.526042 0
+ F3 16755285 0.000000 4
+ 0.026042 7.526042 0
+ 12.526042 7.526042 0
+ 12.526042 5.026042 0
+ 0.026042 5.026042 0
+ L3 0 0.052083 0.026042 0.026042 0 7.526042 0.026042 0
+ L3 0 0.052083 7.526042 0.026042 0 7.526042 7.526042 0
+ L3 0 0.052083 7.526042 7.526042 0 0.026042 7.526042 0
+ L3 0 0.052083 0.026042 7.526042 0 0.026042 0.026042 0
+ L3 0 0.052083 12.401042 9.401042 0 12.401042 9.401042 0
+ L3 0 0.052083 12.401042 9.401042 0 12.401042 9.401042 0
+ L3 0 0.052083 12.401042 9.401042 0 12.401042 9.401042 0
+ L3 0 0.052083 12.401042 9.401042 0 12.401042 9.401042 0
+ L3 0 0.052083 12.526042 9.026042 0 7.526042 9.026042 0
+ L3 0 0.052083 7.526042 9.026042 0 7.526042 3.026042 0
+ L3 0 0.052083 12.526042 3.026042 0 12.526042 9.026042 0
+ L3 0 0.052083 0.026042 7.526042 0 2.526042 7.526042 0
+ L3 0 0.052083 2.526042 7.526042 0 2.526042 5.026042 0
+ L3 0 0.052083 2.526042 5.026042 0 0.026042 5.026042 0
+ L3 0 0.052083 0.026042 5.026042 0 0.026042 7.526042 0
+ L3 0 0.052083 2.526042 7.526042 0 7.526042 7.526042 0
+ L3 0 0.052083 7.526042 7.526042 0 7.526042 5.026042 0
+ L3 0 0.052083 7.526042 5.026042 0 2.526042 5.026042 0
+ L3 0 0.052083 2.526042 5.026042 0 2.526042 7.526042 0
+ L3 0 0.052083 7.526042 7.526042 0 12.526042 7.526042 0
+ L3 0 0.052083 12.526042 7.526042 0 12.526042 5.026042 0
+ L3 0 0.052083 7.526042 5.026042 0 7.526042 7.526042 0
+ L3 0 0.052083 0.026042 6.276042 0 12.526042 6.276042 0
+ L3 0 0.104167 3.151042 3.651042 0 3.151042 3.651042 0
+ L3 0 0.052083 3.776042 0.026042 0 3.776042 5.026042 0
+ L3 8421504 0.010417 0.026042 4.526042 0 3.776042 4.526042 0
+ L3 8421504 0.010417 0.026042 4.026042 0 3.776042 4.026042 0
+ L3 8421504 0.010417 0.026042 3.526042 0 3.776042 3.526042 0
+ L3 8421504 0.010417 0.026042 3.026042 0 3.776042 3.026042 0
+ L3 8421504 0.010417 0.026042 2.526042 0 3.776042 2.526042 0
+ L3 8421504 0.010417 0.026042 2.026042 0 3.776042 2.026042 0
+ L3 8421504 0.010417 0.026042 1.526042 0 3.776042 1.526042 0
+ L3 8421504 0.010417 0.026042 1.026042 0 3.776042 1.026042 0
+ L3 8421504 0.010417 0.026042 0.526042 0 3.776042 0.526042 0
+ L3 8421504 0.010417 3.776042 4.526042 0 7.526042 4.526042 0
+ L3 8421504 0.010417 3.776042 4.026042 0 7.526042 4.026042 0
+ L3 8421504 0.010417 3.776042 3.526042 0 7.526042 3.526042 0
+ L3 8421504 0.010417 3.776042 3.026042 0 7.526042 3.026042 0
+ L3 8421504 0.010417 3.776042 2.526042 0 7.526042 2.526042 0
+ L3 8421504 0.010417 3.776042 2.026042 0 7.526042 2.026042 0
+ L3 8421504 0.010417 3.776042 1.526042 0 7.526042 1.526042 0
+ L3 8421504 0.010417 3.776042 1.026042 0 7.526042 1.026042 0
+ L3 8421504 0.010417 3.776042 0.526042 0 7.526042 0.526042 0
+ L3 8421504 0.010417 0.276042 6.276042 0 0.276042 5.026042 0
+ L3 8421504 0.010417 0.526042 6.276042 0 0.526042 5.026042 0
+ L3 8421504 0.010417 0.776042 6.276042 0 0.776042 5.088542 0
+ L3 8421504 0.010417 1.026042 6.276042 0 1.026042 5.026042 0
+ L3 8421504 0.010417 1.276042 6.276042 0 1.276042 5.088542 0
+ L3 8421504 0.010417 1.526042 6.276042 0 1.526042 5.088542 0
+ L3 8421504 0.010417 1.776042 6.276042 0 1.776042 5.026042 0
+ L3 8421504 0.010417 2.026042 6.276042 0 2.026042 5.026042 0
+ L3 8421504 0.010417 2.276042 6.276042 0 2.276042 5.026042 0
+ L3 8421504 0.010417 0.276042 6.276042 0 0.276042 7.526042 0
+ L3 8421504 0.010417 0.526042 6.276042 0 0.526042 7.526042 0
+ L3 8421504 0.010417 0.776042 6.276042 0 0.776042 7.526042 0
+ L3 8421504 0.010417 1.026042 6.276042 0 1.026042 7.526042 0
+ L3 8421504 0.010417 1.276042 6.276042 0 1.276042 7.526042 0
+ L3 8421504 0.010417 1.526042 6.276042 0 1.526042 7.526042 0
+ L3 8421504 0.010417 1.776042 6.276042 0 1.776042 7.526042 0
+ L3 8421504 0.010417 2.026042 6.276042 0 2.026042 7.526042 0
+ L3 8421504 0.010417 2.276042 6.276042 0 2.276042 7.526042 0
+ L3 8421504 0.010417 2.765625 6.260417 0 2.765625 7.510417 0
+ L3 8421504 0.010417 3.015625 6.260417 0 3.015625 7.510417 0
+ L3 8421504 0.010417 3.265625 6.260417 0 3.265625 7.510417 0
+ L3 8421504 0.010417 3.515625 6.260417 0 3.515625 7.510417 0
+ L3 8421504 0.010417 3.765625 6.260417 0 3.765625 7.510417 0
+ L3 8421504 0.010417 4.015625 6.260417 0 4.015625 7.510417 0
+ L3 8421504 0.010417 4.265625 6.260417 0 4.265625 7.510417 0
+ L3 8421504 0.010417 4.515625 6.260417 0 4.515625 7.510417 0
+ L3 8421504 0.010417 4.765625 6.260417 0 4.765625 7.510417 0
+ L3 8421504 0.010417 4.968750 6.307292 0 4.968750 7.557292 0
+ L3 8421504 0.010417 5.218750 6.307292 0 5.218750 7.557292 0
+ L3 8421504 0.010417 5.468750 6.307292 0 5.468750 7.557292 0
+ L3 8421504 0.010417 5.718750 6.307292 0 5.718750 7.557292 0
+ L3 8421504 0.010417 5.968750 6.307292 0 5.968750 7.557292 0
+ L3 8421504 0.010417 6.218750 6.307292 0 6.218750 7.557292 0
+ L3 8421504 0.010417 6.468750 6.307292 0 6.468750 7.557292 0
+ L3 8421504 0.010417 6.718750 6.307292 0 6.718750 7.557292 0
+ L3 8421504 0.010417 6.968750 6.307292 0 6.968750 7.557292 0
+ L3 8421504 0.010417 2.750000 5.041667 0 2.750000 6.291667 0
+ L3 8421504 0.010417 3.000000 5.041667 0 3.000000 6.291667 0
+ L3 8421504 0.010417 3.250000 5.041667 0 3.250000 6.291667 0
+ L3 8421504 0.010417 3.500000 5.041667 0 3.500000 6.291667 0
+ L3 8421504 0.010417 3.750000 5.041667 0 3.750000 6.291667 0
+ L3 8421504 0.010417 4.000000 5.041667 0 4.000000 6.291667 0
+ L3 8421504 0.010417 4.250000 5.041667 0 4.250000 6.291667 0
+ L3 8421504 0.010417 4.500000 5.041667 0 4.500000 6.291667 0
+ L3 8421504 0.010417 4.750000 5.041667 0 4.750000 6.291667 0
+ L3 8421504 0.010417 4.984375 5.041667 0 4.984375 6.291667 0
+ L3 8421504 0.010417 5.234375 5.041667 0 5.234375 6.291667 0
+ L3 8421504 0.010417 5.484375 5.041667 0 5.484375 6.291667 0
+ L3 8421504 0.010417 5.734375 5.041667 0 5.734375 6.291667 0
+ L3 8421504 0.010417 5.984375 5.041667 0 5.984375 6.291667 0
+ L3 8421504 0.010417 6.234375 5.041667 0 6.234375 6.291667 0
+ L3 8421504 0.010417 6.484375 5.041667 0 6.484375 6.291667 0
+ L3 8421504 0.010417 6.734375 5.041667 0 6.734375 6.291667 0
+ L3 8421504 0.010417 6.984375 5.041667 0 6.984375 6.291667 0
+ L3 8421504 0.010417 7.781250 6.276042 0 7.781250 7.526042 0
+ L3 8421504 0.010417 8.031250 6.276042 0 8.031250 7.526042 0
+ L3 8421504 0.010417 8.281250 6.276042 0 8.281250 7.526042 0
+ L3 8421504 0.010417 8.531250 6.276042 0 8.531250 7.526042 0
+ L3 8421504 0.010417 8.781250 6.276042 0 8.781250 7.526042 0
+ L3 8421504 0.010417 9.031250 6.276042 0 9.031250 7.526042 0
+ L3 8421504 0.010417 9.281250 6.276042 0 9.281250 7.526042 0
+ L3 8421504 0.010417 9.531250 6.276042 0 9.531250 7.526042 0
+ L3 8421504 0.010417 9.781250 6.276042 0 9.781250 7.526042 0
+ L3 8421504 0.010417 10.031250 6.291667 0 10.031250 7.541667 0
+ L3 8421504 0.010417 10.281250 6.291667 0 10.281250 7.541667 0
+ L3 8421504 0.010417 10.531250 6.291667 0 10.531250 7.541667 0
+ L3 8421504 0.010417 10.781250 6.291667 0 10.781250 7.541667 0
+ L3 8421504 0.010417 11.031250 6.291667 0 11.031250 7.541667 0
+ L3 8421504 0.010417 11.281250 6.291667 0 11.281250 7.541667 0
+ L3 8421504 0.010417 11.531250 6.291667 0 11.531250 7.541667 0
+ L3 8421504 0.010417 11.781250 6.291667 0 11.781250 7.541667 0
+ L3 8421504 0.010417 12.031250 6.291667 0 12.031250 7.541667 0
+ L3 8421504 0.010417 7.796875 5.026042 0 7.796875 6.276042 0
+ L3 8421504 0.010417 8.046875 5.026042 0 8.046875 6.276042 0
+ L3 8421504 0.010417 8.296875 5.026042 0 8.296875 6.276042 0
+ L3 8421504 0.010417 8.546875 5.026042 0 8.546875 6.276042 0
+ L3 8421504 0.010417 8.796875 5.026042 0 8.796875 6.276042 0
+ L3 8421504 0.010417 9.046875 5.026042 0 9.046875 6.276042 0
+ L3 8421504 0.010417 9.296875 5.026042 0 9.296875 6.276042 0
+ L3 8421504 0.010417 9.546875 5.026042 0 9.546875 6.276042 0
+ L3 8421504 0.010417 9.796875 5.026042 0 9.796875 6.276042 0
+ L3 8421504 0.010417 10.046875 5.026042 0 10.046875 6.276042 0
+ L3 8421504 0.010417 10.296875 5.026042 0 10.296875 6.276042 0
+ L3 8421504 0.010417 10.546875 5.026042 0 10.546875 6.276042 0
+ L3 8421504 0.010417 10.796875 5.026042 0 10.796875 6.276042 0
+ L3 8421504 0.010417 11.046875 5.026042 0 11.046875 6.276042 0
+ L3 8421504 0.010417 11.296875 5.026042 0 11.296875 6.276042 0
+ L3 8421504 0.010417 11.546875 5.026042 0 11.546875 6.276042 0
+ L3 8421504 0.010417 11.796875 5.026042 0 11.796875 6.276042 0
+ L3 8421504 0.010417 12.046875 5.026042 0 12.046875 6.276042 0
+ L3 8421504 0.010417 7.276042 7.526042 0 7.276042 6.276042 0
+ L3 8421504 0.010417 7.276042 6.276042 0 7.276042 5.026042 0
+ L3 8421504 0.010417 12.276042 7.526042 0 12.276042 6.276042 0
+ L3 8421504 0.010417 12.276042 6.276042 0 12.276042 5.026042 0
+ END$SEGS
+STRUCTURE HO "Walthers Diamond Coal Corp. 933-4046"
+ F3 14737632 0.000000 5
+ 8.650265 6.265639 0
+ 0.150265 6.265651 0
+ 0.025264 5.765651 0
+ 0.150263 5.265651 0
+ 8.650263 5.265639 0
+ F3 14737632 0.000000 4
+ 8.650258 1.140639 0
+ 8.650260 2.765639 0
+ 11.650260 2.765635 0
+ 11.650258 1.140635 0
+ F3 14737632 0.000000 4
+ 8.650260 2.765639 0
+ 8.650268 8.765639 0
+ 19.400268 8.765625 0
+ 19.400260 2.765625 0
+ F3 14737632 0.000000 4
+ 13.400268 8.765633 0
+ 13.400274 13.390633 0
+ 19.400274 13.390625 0
+ 19.400268 8.765625 0
+ F3 15720651 0.000000 4
+ 11.650260 2.390635 0
+ 11.650260 2.765635 0
+ 19.275260 2.765625 0
+ 19.275260 2.390625 0
+ F3 15720651 0.000000 4
+ 18.900260 2.390626 0
+ 18.900257 0.140626 0
+ 19.275257 0.140625 0
+ 19.275260 2.390625 0
+ F3 15720651 0.000000 4
+ 13.275260 2.390633 0
+ 13.275258 0.890633 0
+ 13.650258 0.890633 0
+ 13.650260 2.390633 0
+ L3 0 0.031250 13.400275 14.015633 0 13.400278 16.515633 0
+ L3 0 0.031250 13.400278 16.515633 0 10.900278 16.515636 0
+ L3 0 0.031250 10.900278 16.515636 0 10.900275 14.015636 0
+ L3 0 0.031250 10.900275 14.015636 0 13.400275 14.015633 0
+ A3 0 0.052083 1.125000 12.150277 15.265635 0 270.000000 360.000000
+ F3 14737632 0.000000 4
+ 11.150275 14.265636 0
+ 11.150278 16.265636 0
+ 12.900278 16.265634 0
+ 12.900275 14.265634 0
+ F3 14737632 0.000000 4
+ 11.900268 8.765635 0
+ 11.900275 14.265635 0
+ 12.650275 14.265634 0
+ 12.650268 8.765634 0
+ L3 0 0.052083 19.400274 13.390625 0 13.400274 13.390633 0
+ L3 0 0.052083 13.400274 13.390633 0 13.400268 8.765633 0
+ L3 0 0.052083 19.400274 13.390625 0 19.400268 8.765625 0
+ L3 0 0.052083 8.650268 8.765639 0 8.650260 2.765639 0
+ L3 0 0.052083 8.650260 2.765639 0 19.400260 2.765625 0
+ L3 0 0.052083 19.400260 2.765625 0 19.400268 8.765625 0
+ L3 8421504 0.020833 16.400274 13.390629 0 16.400268 8.765629 0
+ L3 8421504 0.020833 19.400264 5.765625 0 8.650264 5.765639 0
+ L3 0 0.052083 8.650260 2.765639 0 8.650258 1.140639 0
+ L3 0 0.052083 8.650258 1.140639 0 11.650258 1.140627 0
+ L3 0 0.052083 11.900268 8.765635 0 11.900268 14.265635 0
+ L3 0 0.052083 11.900275 14.265635 0 12.650275 14.265634 0
+ L3 0 0.052083 12.650268 14.265634 0 12.650268 8.765634 0
+ L3 0 0.052083 13.275274 13.390633 0 13.275274 13.390633 0
+ L3 8421504 0.010417 17.900275 13.640627 0 17.900275 14.640627 0
+ L3 8421504 0.010417 14.900275 13.640631 0 14.900276 14.640631 0
+ L3 0 0.052083 12.900275 14.265634 0 12.900278 16.265634 0
+ L3 0 0.052083 12.900278 16.265634 0 11.150278 16.265636 0
+ L3 0 0.052083 11.150278 16.265636 0 11.150275 14.265636 0
+ L3 0 0.052083 11.150275 14.265636 0 12.900275 14.265634 0
+ L3 8421504 0.020833 12.275268 8.765634 0 12.275275 14.265634 0
+ L3 8421504 0.020833 12.025275 14.265635 0 12.025278 16.265635 0
+ F3 14737632 0.000000 4
+ 8.650268 8.765639 0
+ 8.650270 10.390639 0
+ 11.650270 10.390635 0
+ 11.650268 8.765635 0
+ L3 0 0.052083 8.650268 8.765639 0 8.650270 10.390639 0
+ L3 0 0.052083 8.650270 10.390639 0 11.650270 10.390635 0
+ L3 0 0.052083 11.650270 10.390635 0 11.650268 8.765635 0
+ L3 8421504 0.020833 11.400268 8.890636 0 11.400270 10.265636 0
+ L3 8421504 0.020833 11.150268 8.890636 0 11.150270 10.265636 0
+ L3 8421504 0.020833 10.900268 8.890636 0 10.900270 10.265636 0
+ L3 8421504 0.020833 10.650268 8.890637 0 10.650270 10.265637 0
+ L3 8421504 0.020833 10.400268 8.890637 0 10.400270 10.265637 0
+ L3 8421504 0.020833 10.150270 10.265637 0 10.150268 8.890637 0
+ L3 8421504 0.020833 9.900270 10.265638 0 9.900268 8.890638 0
+ L3 8421504 0.020833 9.775270 10.265638 0 9.775270 10.265638 0
+ L3 8421504 0.020833 9.650270 10.265638 0 9.650268 8.890638 0
+ L3 8421504 0.020833 9.400270 10.265638 0 9.400268 8.890638 0
+ L3 8421504 0.020833 9.150268 8.890639 0 9.150270 10.265639 0
+ L3 8421504 0.020833 8.900268 8.890639 0 8.900270 10.265639 0
+ L3 8421504 0.020833 11.275276 14.515636 0 11.900276 14.515635 0
+ L3 8421504 0.020833 11.900276 14.765635 0 11.275276 14.765636 0
+ L3 8421504 0.020833 11.275276 15.015636 0 11.900276 15.015635 0
+ L3 8421504 0.020833 11.275277 15.265636 0 11.900277 15.265635 0
+ L3 8421504 0.020833 11.275277 15.515636 0 11.900277 15.515635 0
+ L3 8421504 0.020833 11.275277 15.765636 0 11.900277 15.765635 0
+ L3 8421504 0.020833 11.275278 16.015636 0 11.900278 16.015635 0
+ L3 8421504 0.020833 12.150278 16.015635 0 12.775278 16.015634 0
+ L3 8421504 0.020833 12.150277 15.765635 0 12.775277 15.765634 0
+ L3 8421504 0.020833 12.150277 15.515635 0 12.775277 15.515634 0
+ L3 8421504 0.020833 12.150277 15.265635 0 12.775277 15.265634 0
+ L3 8421504 0.020833 12.150276 15.015635 0 12.775276 15.015634 0
+ L3 8421504 0.020833 12.150276 14.765635 0 12.775276 14.765634 0
+ L3 8421504 0.020833 12.150276 14.515635 0 12.775276 14.515634 0
+ L3 8421504 0.020833 12.150276 14.390635 0 12.150276 14.390635 0
+ L3 8421504 0.020833 12.150275 14.140635 0 12.025275 14.140635 0
+ L3 8421504 0.020833 12.150275 13.890635 0 12.025275 13.890635 0
+ L3 8421504 0.020833 12.150275 13.640635 0 12.025275 13.640635 0
+ L3 8421504 0.020833 12.150274 13.390635 0 12.025274 13.390635 0
+ L3 8421504 0.020833 12.150274 13.140635 0 12.025274 13.140635 0
+ L3 8421504 0.020833 12.150274 12.890635 0 12.025274 12.890635 0
+ L3 8421504 0.020833 12.150273 12.640635 0 12.025273 12.640635 0
+ L3 8421504 0.020833 12.150273 12.390635 0 12.025273 12.390635 0
+ L3 8421504 0.020833 12.150273 12.140635 0 12.025273 12.140635 0
+ L3 8421504 0.020833 12.150272 11.890635 0 12.025272 11.890635 0
+ L3 8421504 0.020833 12.150272 11.640635 0 12.025272 11.640635 0
+ L3 8421504 0.020833 12.150272 11.390635 0 12.025272 11.390635 0
+ L3 8421504 0.020833 12.150271 11.140635 0 12.025271 11.140635 0
+ L3 8421504 0.020833 12.150271 10.890635 0 12.025271 10.890635 0
+ L3 8421504 0.020833 12.150271 10.640635 0 12.025271 10.640635 0
+ L3 8421504 0.020833 12.150270 10.390635 0 12.025270 10.390635 0
+ L3 8421504 0.020833 12.150270 10.140635 0 12.025270 10.140635 0
+ L3 8421504 0.020833 12.150270 9.890635 0 12.025270 9.890635 0
+ L3 8421504 0.020833 12.150269 9.640635 0 12.025269 9.640635 0
+ L3 8421504 0.020833 12.150269 9.390635 0 12.025269 9.390635 0
+ L3 8421504 0.020833 12.150269 9.140635 0 12.025269 9.140635 0
+ L3 8421504 0.020833 12.150268 8.890635 0 12.025268 8.890635 0
+ L3 8421504 0.020833 12.400268 8.890634 0 12.525268 8.890634 0
+ L3 8421504 0.020833 12.400269 9.140634 0 12.525269 9.140634 0
+ L3 8421504 0.020833 12.400269 9.390634 0 12.525269 9.390634 0
+ L3 8421504 0.020833 12.400269 9.640634 0 12.525269 9.640634 0
+ L3 8421504 0.020833 12.400270 9.890634 0 12.525270 9.890634 0
+ L3 8421504 0.020833 12.400270 10.140634 0 12.525270 10.140634 0
+ L3 8421504 0.020833 12.400270 10.390634 0 12.525270 10.390634 0
+ L3 8421504 0.020833 12.400271 10.640634 0 12.525271 10.640634 0
+ L3 8421504 0.020833 12.400271 10.890634 0 12.525271 10.890634 0
+ L3 8421504 0.020833 12.400271 11.140634 0 12.525271 11.140634 0
+ L3 8421504 0.020833 12.400272 11.390634 0 12.525272 11.390634 0
+ L3 8421504 0.020833 12.400272 11.640634 0 12.525272 11.640634 0
+ L3 8421504 0.020833 12.400272 11.890634 0 12.525272 11.890634 0
+ L3 8421504 0.020833 12.400273 12.140634 0 12.525273 12.140634 0
+ L3 8421504 0.020833 12.400273 12.390634 0 12.525273 12.390634 0
+ L3 8421504 0.020833 12.400273 12.640634 0 12.525273 12.640634 0
+ L3 8421504 0.020833 12.400274 12.890634 0 12.525274 12.890634 0
+ L3 8421504 0.020833 12.400274 13.140634 0 12.525274 13.140634 0
+ L3 8421504 0.020833 12.400274 13.390634 0 12.525274 13.390634 0
+ L3 8421504 0.020833 12.400275 13.640634 0 12.525275 13.640634 0
+ L3 8421504 0.020833 12.400275 13.890634 0 12.525275 13.890634 0
+ L3 8421504 0.020833 12.400275 14.140634 0 12.525275 14.140634 0
+ L3 8421504 0.020833 8.900258 1.265639 0 8.900260 2.640639 0
+ L3 8421504 0.020833 9.150258 1.265639 0 9.150260 2.640639 0
+ L3 8421504 0.020833 9.400258 1.265638 0 9.400260 2.640638 0
+ L3 8421504 0.020833 9.650258 1.265638 0 9.650260 2.640638 0
+ L3 8421504 0.020833 9.900258 1.265638 0 9.900260 2.640638 0
+ L3 8421504 0.020833 10.150258 1.265637 0 10.150260 2.640637 0
+ L3 8421504 0.020833 10.400258 1.265637 0 10.400260 2.640637 0
+ L3 8421504 0.020833 10.650258 1.265637 0 10.650260 2.640637 0
+ L3 8421504 0.020833 10.900258 1.265636 0 10.900260 2.640636 0
+ L3 8421504 0.020833 11.150258 1.265636 0 11.150260 2.640636 0
+ L3 8421504 0.020833 11.400258 1.265636 0 11.400260 2.390636 0
+ L3 8421504 0.020833 11.400260 2.390636 0 11.400260 2.640636 0
+ L3 0 0.052083 19.400268 8.765625 0 8.650268 8.765639 0
+ L3 8421504 0.020833 16.275274 13.140629 0 13.525274 13.140633 0
+ L3 8421504 0.020833 16.275274 12.890629 0 13.525274 12.890633 0
+ L3 8421504 0.020833 16.275273 12.640629 0 13.525273 12.640633 0
+ L3 8421504 0.020833 16.275273 12.390629 0 13.525273 12.390633 0
+ L3 8421504 0.020833 16.275273 12.140629 0 13.525273 12.140633 0
+ L3 8421504 0.020833 16.275272 11.890629 0 13.525272 11.890633 0
+ L3 8421504 0.020833 16.275272 11.640629 0 13.525272 11.640633 0
+ L3 8421504 0.020833 16.275272 11.390629 0 13.525272 11.390633 0
+ L3 8421504 0.020833 16.275271 11.140629 0 13.525271 11.140633 0
+ L3 8421504 0.020833 16.275271 10.890629 0 13.525271 10.890633 0
+ L3 8421504 0.020833 16.275271 10.640629 0 13.525271 10.640633 0
+ L3 8421504 0.020833 16.275270 10.390629 0 13.525270 10.390633 0
+ L3 8421504 0.020833 16.275270 10.140629 0 13.525270 10.140633 0
+ L3 8421504 0.020833 16.275270 9.890629 0 13.525270 9.890633 0
+ L3 8421504 0.020833 16.275269 9.640629 0 13.525269 9.640633 0
+ L3 8421504 0.020833 16.275269 9.390629 0 13.525269 9.390633 0
+ L3 8421504 0.020833 16.275269 9.140629 0 13.525269 9.140633 0
+ L3 8421504 0.020833 16.275268 8.890629 0 13.525268 8.890633 0
+ L3 8421504 0.020833 16.525268 8.890629 0 19.275268 8.890625 0
+ L3 8421504 0.020833 16.525269 9.140629 0 19.275269 9.140625 0
+ L3 8421504 0.020833 19.275269 9.390625 0 16.525269 9.390629 0
+ L3 8421504 0.020833 16.525269 9.640629 0 19.275269 9.640625 0
+ L3 8421504 0.020833 16.525270 9.890629 0 19.275270 9.890625 0
+ L3 8421504 0.020833 16.525270 10.140629 0 19.275270 10.140625 0
+ L3 8421504 0.020833 16.525270 10.390629 0 19.275270 10.390625 0
+ L3 8421504 0.020833 16.525271 10.640629 0 19.275271 10.640625 0
+ L3 8421504 0.020833 16.525271 10.890629 0 19.275271 10.890625 0
+ L3 8421504 0.020833 16.525271 11.140629 0 19.275271 11.140625 0
+ L3 8421504 0.020833 16.525272 11.390629 0 19.275272 11.390625 0
+ L3 8421504 0.020833 16.525272 11.640629 0 19.275272 11.640625 0
+ L3 8421504 0.020833 19.275272 11.640625 0 19.275272 11.640625 0
+ L3 8421504 0.020833 19.275272 11.890625 0 16.525272 11.890629 0
+ L3 8421504 0.020833 16.525273 12.140629 0 19.275273 12.140625 0
+ L3 8421504 0.020833 19.275273 12.390625 0 16.525273 12.390629 0
+ L3 8421504 0.020833 19.275273 12.640625 0 16.525273 12.640629 0
+ L3 8421504 0.020833 16.525274 12.890629 0 19.275274 12.890625 0
+ L3 8421504 0.020833 19.275274 13.140625 0 16.525274 13.140629 0
+ L3 8421504 0.020833 8.900264 5.640639 0 8.900260 2.890639 0
+ L3 8421504 0.020833 9.150264 5.640639 0 9.150260 2.890639 0
+ L3 8421504 0.020833 9.400260 2.890638 0 9.400264 5.640638 0
+ L3 8421504 0.020833 9.650264 5.640638 0 9.650260 2.890638 0
+ L3 8421504 0.020833 9.900260 2.890638 0 9.900264 5.640638 0
+ L3 8421504 0.020833 9.900264 5.890638 0 9.900268 8.640638 0
+ L3 8421504 0.020833 9.650264 5.890638 0 9.650268 8.640638 0
+ L3 8421504 0.020833 9.400264 5.890638 0 9.400268 8.640638 0
+ L3 8421504 0.020833 9.150264 5.890639 0 9.150268 8.640639 0
+ L3 8421504 0.020833 8.900264 5.890639 0 8.900268 8.640639 0
+ L3 8421504 0.020833 10.150268 8.640637 0 10.150264 5.890637 0
+ L3 8421504 0.020833 10.150264 5.640637 0 10.150260 2.890637 0
+ L3 8421504 0.020833 10.400268 8.640637 0 10.400264 5.890637 0
+ L3 8421504 0.020833 10.400264 5.640637 0 10.400260 2.890637 0
+ L3 8421504 0.020833 10.650268 8.640637 0 10.650264 5.890637 0
+ L3 8421504 0.020833 10.650264 5.640637 0 10.650260 2.890637 0
+ L3 8421504 0.020833 10.900268 8.640636 0 10.900264 5.890636 0
+ L3 8421504 0.020833 10.900264 5.640636 0 10.900260 2.890636 0
+ L3 8421504 0.020833 11.150260 2.890636 0 11.150264 5.640636 0
+ L3 8421504 0.020833 11.150264 5.890636 0 11.150268 8.640636 0
+ L3 8421504 0.020833 11.400268 8.640636 0 11.400264 5.890636 0
+ L3 8421504 0.020833 11.400264 5.640636 0 11.400260 2.890636 0
+ L3 8421504 0.020833 11.650260 2.890635 0 11.650264 5.640635 0
+ L3 8421504 0.020833 11.650264 5.890635 0 11.650268 8.640635 0
+ L3 8421504 0.020833 11.900260 2.890635 0 11.900264 5.640635 0
+ L3 8421504 0.020833 11.900264 5.890635 0 11.900268 8.640635 0
+ L3 8421504 0.020833 12.150268 8.640635 0 12.150264 5.890635 0
+ L3 8421504 0.020833 12.150264 5.640635 0 12.150260 2.890635 0
+ L3 8421504 0.020833 12.400260 2.890634 0 12.400264 5.640634 0
+ L3 8421504 0.020833 12.400264 5.890634 0 12.400268 8.640634 0
+ L3 8421504 0.020833 12.650268 8.640634 0 12.650264 5.890634 0
+ L3 8421504 0.020833 12.650264 5.640634 0 12.650260 2.890634 0
+ L3 8421504 0.020833 12.900260 2.890634 0 12.900264 5.640634 0
+ L3 8421504 0.020833 12.900264 5.890634 0 12.900268 8.640634 0
+ L3 8421504 0.020833 13.150268 8.640633 0 13.150264 5.890633 0
+ L3 8421504 0.020833 13.150264 5.640633 0 13.150260 2.890633 0
+ L3 8421504 0.020833 13.400260 2.890633 0 13.400264 5.640633 0
+ L3 8421504 0.020833 13.650268 8.640633 0 13.650264 5.890633 0
+ L3 8421504 0.020833 13.400268 8.640633 0 13.400264 5.890633 0
+ L3 8421504 0.020833 13.650264 5.640633 0 13.650260 2.890633 0
+ L3 8421504 0.020833 13.900260 2.890632 0 13.900264 5.640632 0
+ L3 8421504 0.020833 13.900264 5.890632 0 13.900268 8.640632 0
+ L3 8421504 0.020833 14.150268 8.640632 0 14.150264 5.890632 0
+ L3 8421504 0.020833 14.150264 5.640632 0 14.150260 2.890632 0
+ L3 8421504 0.020833 14.400260 2.890632 0 14.400264 5.640632 0
+ L3 8421504 0.020833 14.400264 5.890632 0 14.400268 8.640632 0
+ L3 8421504 0.020833 14.650268 8.640631 0 14.650264 5.890631 0
+ L3 8421504 0.020833 14.650264 5.640631 0 14.650260 2.890631 0
+ L3 8421504 0.020833 14.900260 2.890631 0 14.900264 5.640631 0
+ L3 8421504 0.020833 14.900264 5.890631 0 14.900268 8.640631 0
+ L3 8421504 0.020833 15.150260 2.890631 0 15.150264 5.640631 0
+ L3 8421504 0.020833 15.400264 5.640630 0 15.400260 2.890630 0
+ L3 8421504 0.020833 15.650260 2.890630 0 15.650264 5.640630 0
+ L3 8421504 0.020833 15.900264 5.640630 0 15.900260 2.890630 0
+ L3 8421504 0.020833 16.150260 2.890629 0 16.150264 5.640629 0
+ L3 8421504 0.020833 16.400264 5.640629 0 16.400260 2.890629 0
+ L3 8421504 0.020833 16.400264 5.890629 0 16.400268 8.640629 0
+ L3 8421504 0.020833 16.150268 8.640629 0 16.150264 5.890629 0
+ L3 8421504 0.020833 15.900264 5.890630 0 15.900268 8.640630 0
+ L3 8421504 0.020833 15.650268 8.640630 0 15.650264 5.890630 0
+ L3 8421504 0.020833 15.400264 5.890630 0 15.400268 8.640630 0
+ L3 8421504 0.020833 15.150268 8.640631 0 15.150264 5.890631 0
+ L3 8421504 0.020833 16.650260 2.890629 0 16.650264 5.640629 0
+ L3 8421504 0.020833 16.900264 5.640628 0 16.900260 2.890628 0
+ L3 8421504 0.020833 17.150260 2.890628 0 17.150264 5.640628 0
+ L3 8421504 0.020833 17.400264 5.640628 0 17.400260 2.890628 0
+ L3 8421504 0.020833 17.650260 2.890627 0 17.650264 5.640627 0
+ L3 8421504 0.020833 17.900264 5.640627 0 17.900260 2.890627 0
+ L3 8421504 0.020833 18.150260 2.890627 0 18.150264 5.640627 0
+ L3 8421504 0.020833 18.400264 5.640626 0 18.400260 2.890626 0
+ L3 8421504 0.020833 18.650260 2.890626 0 18.650264 5.640626 0
+ L3 8421504 0.020833 18.900264 5.640626 0 18.900260 2.890626 0
+ L3 8421504 0.020833 19.150260 2.890625 0 19.150264 5.640625 0
+ L3 8421504 0.020833 19.150264 5.890625 0 19.150268 8.640625 0
+ L3 8421504 0.020833 18.900268 8.640626 0 18.900264 5.890626 0
+ L3 8421504 0.020833 18.650264 5.890626 0 18.650268 8.640626 0
+ L3 8421504 0.020833 18.400268 8.640626 0 18.400264 5.890626 0
+ L3 8421504 0.020833 18.150264 5.890627 0 18.150268 8.640627 0
+ L3 8421504 0.020833 17.900268 8.640627 0 17.900264 5.890627 0
+ L3 8421504 0.020833 17.650264 5.890627 0 17.650268 8.640627 0
+ L3 8421504 0.020833 17.400268 8.640628 0 17.400264 5.890628 0
+ L3 8421504 0.020833 17.150264 5.890628 0 17.150268 8.640628 0
+ L3 8421504 0.020833 16.900268 8.640628 0 16.900264 5.890628 0
+ L3 8421504 0.020833 16.650264 5.890629 0 16.650268 8.640629 0
+ L3 8421504 0.020833 16.775268 9.015628 0 16.775268 9.015628 0
+ L3 0 0.031250 13.775260 2.390632 0 13.775258 0.765632 0
+ L3 0 0.031250 13.775258 0.765632 0 13.150258 0.765633 0
+ L3 0 0.031250 13.150258 0.765633 0 13.150258 1.140633 0
+ L3 0 0.031250 13.150258 1.140633 0 11.650258 1.140635 0
+ L3 0 0.031250 18.775257 0.015626 0 19.400257 0.015625 0
+ L3 0 0.031250 19.400257 0.015625 0 19.400257 0.265625 0
+ L3 0 0.031250 19.400257 0.265625 0 19.275257 0.265625 0
+ L3 0 0.031250 18.900257 0.265626 0 18.775257 0.265626 0
+ L3 0 0.031250 18.775257 0.265626 0 18.775257 0.015626 0
+
+ L3 0 0.031250 19.275260 2.765625 0 19.275260 2.390625 0
+ L3 0 0.031250 19.275260 2.390625 0 11.650260 2.390635 0
+ L3 0 0.031250 19.275260 2.390625 0 19.275257 0.140625 0
+ L3 0 0.031250 19.275257 0.140625 0 18.900257 0.140626 0
+ L3 0 0.031250 18.900257 0.140626 0 18.900260 2.390626 0
+ L3 0 0.031250 13.275260 2.390633 0 13.275258 0.890633 0
+ L3 0 0.031250 13.275258 0.890633 0 13.650258 0.890633 0
+ L3 0 0.031250 13.650258 0.890633 0 13.650260 2.390633 0
+ L3 0 0.031250 13.650260 2.390633 0 13.650260 2.765633 0
+ L3 0 0.031250 14.150260 2.765632 0 14.150260 2.390632 0
+ L3 0 0.052083 11.650258 1.140635 0 11.650260 2.765635 0
+ L3 8421504 0.020833 11.650260 2.640635 0 13.650260 2.640633 0
+ L3 8421504 0.020833 13.650260 2.515633 0 11.650260 2.515635 0
+ L3 8421504 0.020833 14.150260 2.515632 0 19.275260 2.515625 0
+ L3 8421504 0.020833 19.275260 2.640625 0 14.150260 2.640632 0
+ L3 8421504 0.020833 18.900259 2.265626 0 19.275259 2.265625 0
+ L3 8421504 0.020833 18.900259 2.140626 0 19.275259 2.140625 0
+ L3 8421504 0.020833 18.900259 2.015626 0 19.275259 2.015625 0
+ L3 8421504 0.020833 18.900259 1.890626 0 19.275259 1.890625 0
+ L3 8421504 0.020833 18.900259 1.765626 0 19.275259 1.765625 0
+ L3 8421504 0.020833 18.900259 1.640626 0 19.275259 1.640625 0
+ L3 8421504 0.020833 18.900258 1.515626 0 19.275258 1.515625 0
+ L3 8421504 0.020833 18.900258 1.390626 0 19.275258 1.390625 0
+ L3 8421504 0.020833 18.900258 1.265626 0 19.275258 1.265625 0
+ L3 8421504 0.020833 18.900258 1.140626 0 19.275258 1.140625 0
+ L3 8421504 0.020833 19.275258 1.015625 0 18.900258 1.015626 0
+ L3 8421504 0.020833 18.900258 0.890626 0 19.275258 0.890625 0
+ L3 8421504 0.020833 19.275258 0.765625 0 18.900258 0.765626 0
+ L3 8421504 0.020833 18.900257 0.640626 0 19.275257 0.640625 0
+ L3 8421504 0.020833 19.275257 0.515625 0 18.900257 0.515626 0
+ L3 8421504 0.020833 18.900257 0.390626 0 19.275257 0.390625 0
+ L3 8421504 0.020833 19.275257 0.265625 0 18.900257 0.265626 0
+ L3 8421504 0.020833 13.275258 1.015633 0 13.650258 1.015633 0
+ L3 8421504 0.020833 13.275258 1.140633 0 13.650258 1.140633 0
+ L3 8421504 0.020833 13.275258 1.265633 0 13.650258 1.265633 0
+ L3 8421504 0.020833 13.650258 1.390633 0 13.275258 1.390633 0
+ L3 8421504 0.020833 13.275258 1.515633 0 13.650258 1.515633 0
+ L3 8421504 0.020833 13.650259 1.640633 0 13.275259 1.640633 0
+ L3 8421504 0.020833 13.275259 1.765633 0 13.650259 1.765633 0
+ L3 8421504 0.020833 13.275259 1.890633 0 13.650259 1.890633 0
+ L3 8421504 0.020833 13.275259 2.015633 0 13.650259 2.015633 0
+ L3 8421504 0.020833 13.275259 2.140633 0 13.650259 2.140633 0
+ L3 8421504 0.020833 13.275259 2.265633 0 13.650259 2.265633 0
+ L3 8421504 0.020833 13.775260 2.390632 0 13.775260 2.765632 0
+ L3 8421504 0.020833 13.900260 2.765632 0 13.900260 2.390632 0
+ L3 8421504 0.020833 14.025260 2.390632 0 14.025260 2.765632 0
+ L3 8421504 0.020833 8.650264 5.765639 0 0.025264 5.765651 0
+ L3 0 0.052083 8.650263 5.265639 0 0.150263 5.265651 0
+ L3 0 0.052083 0.150263 5.265651 0 0.025264 5.765651 0
+ L3 0 0.052083 0.025264 5.765651 0 0.150265 6.265651 0
+ L3 0 0.052083 0.150265 6.265651 0 8.650265 6.265639 0
+ L3 0 0.052083 0.400263 5.265650 0 0.400263 4.765650 0
+ L3 0 0.052083 0.400263 4.765650 0 0.650263 4.765650 0
+ L3 0 0.052083 0.650263 4.765650 0 0.650263 5.265650 0
+ L3 0 0.052083 0.400265 6.265650 0 0.400265 6.765650 0
+ L3 0 0.052083 0.400265 6.765650 0 0.650265 6.765650 0
+ L3 0 0.052083 0.650265 6.765650 0 0.650265 6.265650 0
+ L3 8421504 0.020833 0.275264 5.390650 0 0.275264 5.640650 0
+ L3 8421504 0.020833 0.525264 5.640650 0 0.525264 5.390650 0
+ L3 8421504 0.020833 0.775264 5.390650 0 0.775264 5.640650 0
+ L3 8421504 0.020833 1.025264 5.640649 0 1.025264 5.390649 0
+ L3 8421504 0.020833 1.275264 5.390649 0 1.275264 5.640649 0
+ L3 8421504 0.020833 1.525264 5.640649 0 1.525264 5.390649 0
+ L3 8421504 0.020833 1.775264 5.390648 0 1.775264 5.640648 0
+ L3 8421504 0.020833 2.025264 5.640648 0 2.025264 5.390648 0
+ L3 8421504 0.020833 2.275264 5.390648 0 2.275264 5.640648 0
+ L3 8421504 0.020833 2.525264 5.640647 0 2.525264 5.390647 0
+ L3 8421504 0.020833 2.775264 5.390647 0 2.775264 5.640647 0
+ L3 8421504 0.020833 3.025264 5.640647 0 3.025264 5.390647 0
+ L3 8421504 0.020833 3.275264 5.390646 0 3.275264 5.640646 0
+ L3 8421504 0.020833 3.525264 5.640646 0 3.525264 5.390646 0
+ L3 8421504 0.020833 3.775264 5.390646 0 3.775264 5.640646 0
+ L3 8421504 0.020833 4.025264 5.640645 0 4.025264 5.390645 0
+ L3 8421504 0.020833 4.275264 5.390645 0 4.275264 5.640645 0
+ L3 8421504 0.020833 4.525264 5.640645 0 4.525264 5.390645 0
+ L3 8421504 0.020833 4.775264 5.390644 0 4.775264 5.640644 0
+ L3 8421504 0.020833 5.025264 5.640644 0 5.025264 5.390644 0
+ L3 8421504 0.020833 5.275264 5.390644 0 5.275264 5.640644 0
+ L3 8421504 0.020833 5.525264 5.640643 0 5.525264 5.390643 0
+ L3 8421504 0.020833 5.775264 5.390643 0 5.775264 5.640643 0
+ L3 8421504 0.020833 6.025264 5.640643 0 6.025264 5.390643 0
+ L3 8421504 0.020833 6.275264 5.390642 0 6.275264 5.640642 0
+ L3 8421504 0.020833 6.525264 5.640642 0 6.525264 5.390642 0
+ L3 8421504 0.020833 6.775264 5.390642 0 6.775264 5.640642 0
+ L3 8421504 0.020833 7.025264 5.640641 0 7.025264 5.390641 0
+ L3 8421504 0.020833 7.275264 5.390641 0 7.275264 5.640641 0
+ L3 8421504 0.020833 7.525264 5.640641 0 7.525264 5.390641 0
+ L3 8421504 0.020833 7.775264 5.390640 0 7.775264 5.640640 0
+ L3 8421504 0.020833 8.025264 5.640640 0 8.025264 5.390640 0
+ L3 8421504 0.020833 8.275264 5.390640 0 8.275264 5.640640 0
+ L3 8421504 0.020833 8.525264 5.640639 0 8.525264 5.390639 0
+ L3 8421504 0.020833 8.525264 5.890639 0 8.525265 6.140639 0
+ L3 8421504 0.020833 8.275265 6.140640 0 8.275264 5.890640 0
+ L3 8421504 0.020833 8.025264 5.890640 0 8.025265 6.140640 0
+ L3 8421504 0.020833 7.775265 6.140640 0 7.775264 5.890640 0
+ L3 8421504 0.020833 7.525264 5.890641 0 7.525265 6.140641 0
+ L3 8421504 0.020833 7.275265 6.140641 0 7.275264 5.890641 0
+ L3 8421504 0.020833 7.025264 5.890641 0 7.025265 6.140641 0
+ L3 8421504 0.020833 6.775265 6.140642 0 6.775264 5.890642 0
+ L3 8421504 0.020833 6.525264 5.890642 0 6.525265 6.140642 0
+ L3 8421504 0.020833 6.275265 6.140642 0 6.275264 5.890642 0
+ L3 8421504 0.020833 6.025264 5.890643 0 6.025265 6.140643 0
+ L3 8421504 0.020833 5.775265 6.140643 0 5.775264 5.890643 0
+ L3 8421504 0.020833 5.525264 5.890643 0 5.525265 6.140643 0
+ L3 8421504 0.020833 5.275265 6.140644 0 5.275264 5.890644 0
+ L3 8421504 0.020833 5.025264 5.890644 0 5.025265 6.140644 0
+ L3 8421504 0.020833 4.775264 5.890644 0 4.775265 6.140644 0
+ L3 8421504 0.020833 4.525265 6.140645 0 4.525264 5.890645 0
+ L3 8421504 0.020833 4.275264 5.890645 0 4.275265 6.140645 0
+ L3 8421504 0.020833 4.025265 6.140645 0 4.025264 5.890645 0
+ L3 8421504 0.020833 3.775264 5.890646 0 3.775265 6.140646 0
+ L3 8421504 0.020833 3.525264 5.890646 0 3.525265 6.140646 0
+ L3 8421504 0.020833 3.275265 6.140646 0 3.275264 5.890646 0
+ L3 8421504 0.020833 3.025264 5.890647 0 3.025265 6.140647 0
+ L3 8421504 0.020833 2.775265 6.140647 0 2.775264 5.890647 0
+ L3 8421504 0.020833 2.525264 5.890647 0 2.525265 6.140647 0
+ L3 8421504 0.020833 2.275265 6.140648 0 2.275264 5.890648 0
+ L3 8421504 0.020833 2.025264 5.890648 0 2.025265 6.140648 0
+ L3 8421504 0.020833 1.775265 6.140648 0 1.775264 5.890648 0
+ L3 8421504 0.020833 1.525264 5.890649 0 1.525265 6.140649 0
+ L3 8421504 0.020833 1.275265 6.140649 0 1.275264 5.890649 0
+ L3 8421504 0.020833 1.025264 5.890649 0 1.025265 6.140649 0
+ L3 8421504 0.020833 0.775265 6.140650 0 0.775264 5.890650 0
+ L3 8421504 0.020833 0.525264 5.890650 0 0.525265 6.140650 0
+ L3 8421504 0.020833 0.275265 6.140650 0 0.275264 5.890650 0
+ L3 8421504 0.010417 14.900259 2.140631 0 14.900258 1.140631 0
+ L3 8421504 0.010417 17.900259 2.140627 0 17.900258 1.140627 0
+ END$SEGS
+
+SUBCONTENTS Walthers Cornerstone HO Structures - Lumber Industries
+STRUCTURE HO "Walthers Sawmill powerhouse 933-3058a"
+ L 0 0.000000 0.020833 0.041667 4.395833 0.041667
+ L 0 0.000000 4.395833 0.041667 4.395833 4.208333
+ L 0 0.000000 4.395833 4.208333 0.020833 4.208333
+ L 0 0.000000 0.020833 4.208333 0.020833 0.041667
+ L 0 0.000000 0.020833 2.083333 4.395833 2.083333
+ A 0 0.000000 0.356000 3.895833 2.791667 0.000000 360.000000
+ A 0 0.000000 0.343592 3.895833 1.250000 0.000000 360.000000
+ END$SEGS
+STRUCTURE HO "Walthers Sawmill main bldg 933-3058b"
+ L 0 0.000000 0.041667 -0.041667 13.041667 -0.041667
+ L 0 0.000000 13.041667 -0.041667 13.041667 11.958333
+ L 0 0.000000 0.041667 11.958333 0.041667 -0.041667
+ L 0 0.000000 3.958333 11.958333 3.958333 15.958333
+ L 0 0.000000 0.041667 11.958333 0.041667 15.958333
+ L 0 0.000000 3.958333 15.875000 0.041667 15.875000
+ L 0 0.000000 3.958333 11.958333 13.041667 11.958333
+ L 0 0.000000 0.041667 5.958333 13.041667 5.958333
+ L 0 0.000000 1.125000 7.458333 11.708333 7.458333
+ L 0 0.000000 11.708333 7.458333 11.708333 4.541667
+ L 0 0.000000 11.708333 4.541667 1.125000 4.541667
+ L 0 0.000000 1.125000 4.541667 1.125000 7.458333
+ L 0 0.000000 3.958333 11.958333 2.041667 10.041667
+ L 0 0.000000 0.041667 11.958333 1.958333 10.041667
+ L 0 0.000000 1.958333 10.041667 1.958333 15.875000
+ A 0 0.000000 1.900292 2.312500 -3.979167 0.000000 360.000000
+ A 0 0.000000 0.471405 2.229167 -3.979167 0.000000 360.000000
+ L 0 0.000000 2.145833 -2.812500 2.145833 0.687500
+ L 0 0.000000 2.312500 -2.812500 2.312500 0.687500
+ L 0 0.000000 13.062500 0.687500 24.645833 0.687500
+ L 0 0.000000 24.645833 0.687500 24.645833 1.687500
+ L 0 0.000000 24.645833 1.687500 13.062500 1.687500
+ L 0 0.000000 13.062500 1.687500 13.062500 0.687500
+ L 0 0.000000 14.062500 1.937500 14.062500 0.437500
+ L 0 0.000000 15.145833 1.937500 15.145833 0.520833
+ L 0 0.000000 16.229167 1.854167 16.229167 0.354167
+ L 0 0.000000 17.729167 2.020833 17.729167 0.520833
+ L 0 0.000000 19.062500 1.937500 19.062500 0.354167
+ L 0 0.000000 20.395833 1.854167 20.395833 0.437500
+ L 0 0.000000 21.979167 1.937500 21.979167 0.520833
+ L 0 0.000000 23.062500 1.854167 23.062500 0.437500
+ END$SEGS
+STRUCTURE HO "Walthers Planing Mill 933-3059a"
+ L 0 0.000000 0.041667 0.041667 6.041667 0.041667
+ L 0 0.000000 6.041667 0.041667 6.041667 8.000000
+ L 0 0.000000 6.041667 8.000000 0.041667 8.000000
+ L 0 0.000000 0.041667 8.000000 0.041667 0.041667
+ L 0 0.000000 7.500000 7.291667 9.458333 7.291667
+ L 0 0.000000 9.458333 7.291667 9.458333 5.375000
+ L 0 0.000000 9.458333 5.375000 7.500000 5.375000
+ L 0 0.000000 7.500000 5.375000 7.500000 7.291667
+ L 0 0.000000 5.291667 6.708333 8.333333 6.708333
+ L 0 0.000000 5.333333 6.041667 8.291667 6.041667
+ A 0 0.000000 0.372678 8.458333 6.375000 0.000000 360.000000
+ A 0 0.000000 0.000000 5.291667 5.666667 0.000000 360.000000
+ L 0 0.000000 5.291667 6.833333 5.291667 5.958333
+ L 0 0.000000 5.291667 6.000000 5.041667 6.000000
+ L 0 0.000000 3.000000 0.000000 3.000000 8.000000
+ END$SEGS
+STRUCTURE HO "Walthers Planing Mill Shed 933-3059b"
+ L 0 0.000000 0.000000 0.000000 6.000000 0.000000
+ L 0 0.000000 6.000000 0.000000 6.000000 9.750000
+ L 0 0.000000 6.000000 9.750000 0.000000 9.750000
+ L 0 0.000000 0.000000 9.750000 0.000000 0.000000
+ L 0 0.000000 2.958333 -0.041667 2.958333 9.750000
+ END$SEGS
+STRUCTURE HO "Walthers Paper Mill Main Bldg 933-3060a"
+ L 0 0.000000 0.041667 0.083333 20.958333 0.083333
+ L 0 0.000000 20.958333 0.083333 20.958333 10.000000
+ L 0 0.000000 20.958333 10.000000 0.041667 10.000000
+ L 0 0.000000 0.041667 10.000000 0.041667 0.083333
+ L 0 0.000000 20.875000 9.333333 21.041667 9.333333
+ L 0 0.000000 21.041667 9.333333 21.041667 7.916667
+ L 0 0.000000 21.041667 7.916667 20.875000 7.916667
+ L 0 0.000000 20.875000 7.916667 20.875000 9.333333
+ END$SEGS
+STRUCTURE HO "Walthers Paper Mill Kraft Mill 933-3060b"
+ L 0 0.000000 0.020833 -0.020833 12.020833 -0.020833
+ L 0 0.000000 0.020833 7.979167 0.020833 -0.020833
+ L 0 0.000000 0.020833 7.979167 8.354167 7.979167
+ L 0 0.000000 12.020833 -0.020833 12.020833 4.937500
+ L 0 0.000000 11.979167 4.937500 8.437500 4.937500
+ L 0 0.000000 8.354167 7.979167 8.354167 4.979167
+ END$SEGS
+STRUCTURE HO "Walthers Sawmill outbldgs log debarker 933-3144a"
+ L 0 0.000000 4.958333 4.833333 0.000000 4.833333
+ L 0 0.000000 0.000000 4.833333 0.000000 0.083333
+ L 0 0.000000 2.375000 0.083333 2.375000 2.833333
+ L 0 0.000000 2.375000 0.083333 0.041667 0.083333
+ L 0 0.000000 2.395833 2.833333 4.937500 2.833333
+ L 0 0.000000 4.937500 4.812500 4.937500 2.854167
+ L 0 0.000000 1.020833 0.062500 1.020833 4.812500
+ END$SEGS
+STRUCTURE HO "Walthers Sawmill outbldgs gondol loader 933-3144b"
+ L 0 0.000000 0.020833 -0.062500 2.520833 -0.062500
+ L 0 0.000000 2.520833 -0.062500 2.520833 3.645833
+ L 0 0.000000 2.520833 3.645833 0.020833 3.645833
+ L 0 0.000000 0.020833 3.645833 0.020833 -0.062500
+ L 0 0.000000 0.020833 0.937500 2.520833 0.937500
+ L 0 0.000000 1.729167 3.645833 2.479167 3.104167
+ L 0 0.000000 2.479167 1.520833 1.895833 0.937500
+ L 0 0.000000 0.520833 0.937500 0.062500 1.645833
+ L 0 0.000000 0.645833 3.645833 0.062500 3.020833
+ L 0 0.000000 0.645833 3.604167 0.645833 0.979167
+ L 0 0.000000 1.729167 3.604167 1.729167 0.979167
+ END$SEGS
+STRUCTURE HO "Walthers Sawmill outbldgs truck loader 933-3144c"
+ L 0 0.000000 0.020833 0.104167 4.770833 0.104167
+ L 0 0.000000 4.770833 0.104167 4.770833 3.854167
+ L 0 0.000000 4.770833 3.854167 0.020833 3.854167
+ L 0 0.000000 0.020833 3.854167 0.020833 0.104167
+ L 0 0.000000 0.020833 1.979167 4.770833 1.979167
+ A 0 0.000000 0.515388 2.145833 1.979167 0.000000 360.000000
+ L 0 0.000000 1.604167 1.479167 2.645833 1.479167
+ L 0 0.000000 2.645833 1.479167 2.645833 2.479167
+ L 0 0.000000 2.645833 2.479167 1.604167 2.479167
+ L 0 0.000000 1.604167 2.479167 1.604167 1.479167
+ L 0 0.000000 -0.020833 3.354167 4.770833 3.354167
+ L 0 0.000000 0.020833 0.562500 4.770833 0.562500
+ END$SEGS
+STRUCTURE HO "Walthers Sawmill outbldgs wood chipper 933-3144d"
+ L 0 0.000000 0.020833 -0.062500 2.270833 -0.062500
+ L 0 0.000000 2.270833 -0.062500 2.270833 1.645833
+ L 0 0.000000 2.270833 1.645833 0.020833 1.645833
+ L 0 0.000000 0.020833 1.645833 0.020833 -0.062500
+ L 0 0.000000 0.020833 0.812500 2.270833 0.812500
+ L 0 0.000000 2.270833 1.020833 5.270833 1.020833
+ L 0 0.000000 5.270833 1.020833 5.270833 0.562500
+ L 0 0.000000 5.270833 0.562500 2.270833 0.562500
+ L 0 0.000000 2.270833 0.562500 2.270833 1.020833
+ END$SEGS
+
+
+SUBCONTENTS Walthers Cornerstone HO Structures - City Businesses
+STRUCTURE HO "Walthers Bailey Saving & Loan 933-3031"
+ L 16711935 0 0.000000 0.000000 0.000000 5.937500
+ L 16711935 0 0.000000 5.937500 10.125000 5.937500
+ L 16711935 0 10.125000 5.937500 10.125000 0.000000
+ L 16711935 0 10.125000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Crown Paint & Hardware 933-3032"
+ L 16711935 0 0.000000 0.000000 0.000000 4.125000
+ L 16711935 0 0.000000 4.125000 7.625000 4.125000
+ L 16711935 0 7.625000 4.125000 7.625000 0.000000
+ L 16711935 0 7.625000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Neighborhood Food Mart 933-3033"
+ L 16711935 0 0.000000 0.000000 0.000000 8.250000
+ L 16711935 0 0.000000 8.250000 5.000000 8.250000
+ L 16711935 0 5.000000 8.250000 5.000000 0.000000
+ L 16711935 0 5.000000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Bill's Glass Shop 933-3002"
+ L 16711935 0 0.000000 0.000000 0.000000 4.000000
+ L 16711935 0 0.000000 4.000000 3.000000 4.000000
+ L 16711935 0 3.000000 4.000000 3.000000 0.000000
+ L 16711935 0 3.000000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Gemini Bldg 933-3001"
+ L 16711935 0 0.000000 0.000000 0.000000 3.625000
+ L 16711935 0 0.000000 3.625000 4.250000 3.625000
+ L 16711935 0 4.250000 3.625000 4.250000 0.000000
+ L 16711935 0 4.250000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Wallschlager Motors 933-3004"
+ L 16711935 0 0.000000 0.000000 0.000000 5.000000
+ L 16711935 0 0.000000 5.000000 5.250000 5.000000
+ L 16711935 0 5.250000 5.000000 5.250000 0.000000
+ L 16711935 0 5.250000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers White Tower Restaurant 933-3030"
+ L 16711935 0 0.000000 0.000000 0.000000 3.000000
+ L 16711935 0 0.000000 3.000000 4.625000 3.000000
+ L 16711935 0 4.625000 3.000000 4.625000 0.000000
+ L 16711935 0 4.625000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Adam's Rib Restaurant 933-3034"
+ L 16711935 0 0.000000 0.000000 0.000000 3.000000
+ L 16711935 0 0.000000 3.000000 5.500000 3.000000
+ L 16711935 0 5.500000 3.000000 5.500000 0.000000
+ L 16711935 0 5.500000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Western Ave Fire Station 933-3037"
+ L 16711935 0 0.000000 0.000000 0.000000 6.750000
+ L 16711935 0 0.000000 6.750000 4.250000 6.750000
+ L 16711935 0 4.250000 6.750000 4.250000 0.000000
+ L 16711935 0 4.250000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Main St, Merchant's Row 1 933-3028"
+ L 16711935 0 0.000000 0.000000 0.000000 5.000000
+ L 16711935 0 0.000000 5.000000 11.000000 5.000000
+ L 16711935 0 11.000000 5.000000 11.000000 0.000000
+ L 16711935 0 11.000000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Don's Shoe Store 933-3000"
+ L 16711935 0 0.000000 0.000000 0.000000 3.500000
+ L 16711935 0 0.000000 3.500000 2.500000 3.500000
+ L 16711935 0 2.500000 3.500000 2.500000 0.000000
+ L 16711935 0 2.500000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Interstate Fuel & Oil Gas Station 933-3035"
+ L 16711935 0 0.000000 0.000000 0.000000 7.750000
+ L 16711935 0 0.000000 7.750000 9.250000 7.750000
+ L 16711935 0 9.250000 7.750000 9.250000 0.000000
+ L 16711935 0 9.250000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Main St, Merchant's Row 2 933-3029"
+ L 16711935 0 0.000000 0.000000 0.000000 5.000000
+ L 16711935 0 0.000000 5.000000 10.000000 5.000000
+ L 16711935 0 10.000000 5.000000 10.000000 0.000000
+ L 16711935 0 10.000000 0.000000 0.000000 0.000000
+ END$SEGS
+
+
+SUBCONTENTS Walthers Cornerstone HO Structures - Engine Servicing Structures
+STRUCTURE HO "Walther's Cornerstone Structure Backshop 933-3227"
+ F3 12632256 0.000000 4
+ 0.000000 12.858780 0
+ 0.000017 0.000000 0
+ 9.644104 0.000013 0
+ 9.644088 12.858800 0
+ F3 8388608 0.000000 4
+ 9.644088 12.858800 0
+ 9.644088 12.629180 0
+ 0.000000 12.629160 0
+ 0.000000 12.858780 0
+ F3 8388608 0.000000 4
+ 9.644088 12.858800 0
+ 9.644104 0.000013 0
+ 9.414483 0.000013 0
+ 9.414466 12.858800 0
+ F3 8388608 0.000000 4
+ 0.000017 0.000000 0
+ 0.000017 0.229621 0
+ 9.644104 0.229634 0
+ 9.644104 0.000013 0
+ F3 8388608 0.000000 4
+ 0.000000 12.858780 0
+ 0.000017 0.000000 0
+ 0.229638 0.000000 0
+ 0.229621 12.858780 0
+ F3 8388608 0.000000 4
+ 9.471873 11.739390 0
+ 9.471871 12.657880 0
+ 8.926521 12.657880 0
+ 8.926523 11.739390 0
+ F3 8388608 0.000000 4
+ 0.229623 11.768080 0
+ 0.229621 12.686570 0
+ 0.918485 12.686570 0
+ 0.918486 11.768080 0
+ F3 8388608 0.000000 4
+ 0.229636 1.205511 0
+ 0.229638 0.172216 0
+ 0.918501 0.172218 0
+ 0.918499 1.205513 0
+ F3 8388608 0.000000 4
+ 9.471887 1.205524 0
+ 9.471889 0.200931 0
+ 8.926538 0.200930 0
+ 8.926537 1.205522 0
+ F3 8388608 0.000000 4
+ 0.258331 6.888634 0
+ 0.258333 5.998852 0
+ 0.947196 5.998854 0
+ 0.947195 6.888636 0
+ F3 8388608 0.000000 4
+ 9.500581 6.888647 0
+ 9.500583 5.998865 0
+ 8.955233 5.998863 0
+ 8.955231 6.888645 0
+ END$SEGS
+STRUCTURE HO "Walther's Cornerstone Structure Cinder Conveyor & Ash Pit 933-3816"
+ F3 8421504 0.000000 4
+ 0.229621 0.688863 0
+ 1.836969 0.688863 0
+ 1.836969 3.903559 0
+ 0.229621 3.903559 0
+ F3 8421504 0.000000 4
+ 0.000000 3.214696 0
+ 2.066590 3.214696 0
+ 2.066590 2.525832 0
+ 0.000000 2.525832 0
+ F3 0 0.000000 4
+ 0.086108 3.099885 0
+ 1.951780 3.099885 0
+ 1.951780 2.640643 0
+ 0.086108 2.640643 0
+ F3 14803425 0.000000 4
+ 0.774971 1.176808 0
+ 1.836969 1.176808 0
+ 1.836969 2.210103 0
+ 0.774971 2.210103 0
+ L3 0 0.000000 0.861079 2.238806 0 0.861079 1.148106 0
+ L3 0 0.000000 0.975890 2.238806 0 0.975890 1.176808 0
+ L3 0 0.000000 1.090700 2.210103 0 1.090700 1.176808 0
+ L3 0 0.000000 1.205511 2.238806 0 1.205511 1.119403 0
+ L3 0 0.000000 1.320321 2.238806 0 1.320321 1.176808 0
+ L3 0 0.000000 1.435132 2.210103 0 1.435132 1.176808 0
+ L3 0 0.000000 1.549943 2.238806 0 1.549943 1.176808 0
+ L3 0 0.000000 1.664753 2.238806 0 1.664753 1.176808 0
+ F3 0 0.000000 4
+ 0.229621 0.688863 0
+ 1.836969 0.688863 0
+ 1.836969 0.746269 0
+ 0.229621 0.746269 0
+ F3 14342874 0.000000 4
+ 0.574053 0.688863 0
+ 1.492537 0.688863 0
+ 1.492537 0.000000 0
+ 0.574053 0.000000 0
+ F3 0 0.000000 4
+ 0.746269 2.267509 0
+ 0.229621 2.267509 0
+ 0.229621 2.238806 0
+ 0.746269 2.238806 0
+ F3 0 0.000000 4
+ 0.200919 0.746269 0
+ 0.258324 0.746269 0
+ 0.258324 2.267509 0
+ 0.200919 2.267509 0
+ F3 0 0.000000 4
+ 1.808266 0.717566 0
+ 1.750861 0.717566 0
+ 1.750861 1.205511 0
+ 1.808266 1.205511 0
+ L3 0 0.000000 0.832377 0.000000 0 0.832377 0.717566 0
+ L3 0 0.000000 1.176808 0.000000 0 1.176808 0.746269 0
+ END$SEGS
+STRUCTURE HO "Walther's Cornerstone Structure Sand Drying Building 933-3813"
+ F3 8421504 0.000000 4
+ 0.000000 0.000000 0
+ 3.329506 0.000000 0
+ 3.329506 3.099885 0
+ 0.000000 3.099885 0
+ L3 0 0.000000 0.000000 1.549943 0 3.329506 1.549943 0
+ L3 0 0.000000 1.406429 1.779564 0 2.066590 1.779564 0
+ L3 0 0.000000 2.066590 1.779564 0 2.066590 1.291619 0
+ L3 0 0.000000 2.066590 1.291619 0 1.406429 1.291619 0
+ L3 0 0.000000 1.406429 1.291619 0 1.406429 1.779564 0
+ F3 16777215 0.000000 4
+ 2.296211 2.525832 0
+ 2.583238 2.525832 0
+ 2.583238 2.296211 0
+ 2.296211 2.296211 0
+ F3 0 0.000000 4
+ 2.353616 2.468427 0
+ 2.497130 2.468427 0
+ 2.497130 2.353616 0
+ 2.353616 2.353616 0
+ END$SEGS
+STRUCTURE HO "Walther's Cornerstone Structure Sanding Storage Bin 933-3813"
+ F3 8421504 0.000000 4
+ 0.000000 0.000000 0
+ 6.429391 0.000000 0
+ 6.429391 3.099885 0
+ 0.000000 3.099885 0
+ F3 16777215 0.000000 4
+ 0.229621 2.870264 0
+ 6.257176 2.870264 0
+ 6.257176 0.200919 0
+ 0.229621 0.200919 0
+ END$SEGS
+STRUCTURE HO "Walther's Cornerstone Structure Small Sanding Tower 933-3813"
+ F3 15790080 0.000000 4
+ 0.000000 0.688863 0
+ 1.607348 0.688863 0
+ 1.607348 1.262916 0
+ 0.000000 1.262916 0
+ G3 12632256 0.000000 0.344432 0.803674 1.033295 0
+ L3 0 0.000000 0.803674 1.377727 0 0.803674 3.903559 0
+ L3 0 0.000000 0.803674 0.688863 0 0.803674 0.000000 0
+ END$SEGS
+STRUCTURE HO "Walther's Cornerstone Structure Large Sanding Tower 933-3813"
+ F3 14803200 0.000000 4
+ 0.000000 2.181401 0
+ 1.377727 2.181401 0
+ 1.377727 3.559128 0
+ 0.000000 3.559128 0
+ F3 12895232 0.000000 4
+ 0.344432 2.525832 0
+ 1.033295 2.525832 0
+ 1.033295 3.214696 0
+ 0.344432 3.214696 0
+ G3 12632256 0.000000 0.315729 0.660161 2.898967 0
+ F3 14803200 0.000000 4
+ 0.545350 0.000000 0
+ 0.889782 0.000000 0
+ 0.889782 0.344432 0
+ 0.545350 0.344432 0
+ F3 14803200 0.000000 4
+ 0.536028 5.645098 0
+ 0.880459 5.645098 0
+ 0.880459 5.989530 0
+ 0.536028 5.989530 0
+ F3 12632256 0.000000 4
+ 0.602756 5.912744 0
+ 0.803674 5.912744 0
+ 0.803674 5.769231 0
+ 0.602756 5.769231 0
+ F3 12632256 0.000000 4
+ 0.631458 0.287026 0
+ 0.803674 0.287026 0
+ 0.803674 0.114811 0
+ 0.631458 0.114811 0
+ L3 0 0.000000 0.688863 3.185993 0 0.688863 5.797934 0
+ L3 0 0.000000 0.688863 2.583238 0 0.688858 0.315729 0
+ END$SEGS
+STRUCTURE HO "Walther's Cornerstone Structures Machine Shop 933-3264"
+ F3 12632256 0.000000 4
+ 5.539610 0.000000 0
+ 9.529277 0.000000 0
+ 9.529277 3.903559 0
+ 5.539610 3.903559 0
+ F3 8388608 0.000000 4
+ 5.539610 3.903559 0
+ 9.529277 3.903559 0
+ 9.529277 3.788749 0
+ 5.539610 3.788749 0
+ F3 8388608 0.000000 4
+ 9.529277 0.000000 0
+ 9.414466 0.000000 0
+ 9.414466 3.846154 0
+ 9.529277 3.846154 0
+ F3 8388608 0.000000 4
+ 5.539610 0.000000 0
+ 9.500574 0.000000 0
+ 9.500574 0.114811 0
+ 5.539610 0.114811 0
+ G3 8388608 0.000000 0.634063 7.577497 4.592422 0
+ G3 0 0.000000 0.459242 7.577497 4.592422 0
+ F3 8388608 0.000000 4
+ 5.539610 1.836969 0
+ 7.376579 1.836969 0
+ 7.376579 1.722158 0
+ 5.539610 1.722158 0
+ F3 8388608 0.000000 4
+ 7.376579 0.114811 0
+ 7.261768 0.114811 0
+ 7.261768 1.836969 0
+ 7.376579 1.836969 0
+ F3 12632256 0.000000 4
+ 0.028703 0.028703 0
+ 5.539610 0.028703 0
+ 5.539610 14.954080 0
+ 0.028703 14.954080 0
+ F3 8388608 0.000000 4
+ 5.568312 0.086108 0
+ 5.424799 0.086108 0
+ 5.424799 14.954080 0
+ 5.568312 14.954080 0
+ F3 8388608 0.000000 4
+ 0.028703 14.954080 0
+ 0.172216 14.954080 0
+ 0.172216 0.028703 0
+ 0.028703 0.028703 0
+ G3 0 0.000000 0.344432 3.702641 11.050520 0
+ F3 8388608 0.000000 4
+ 0.000000 14.925370 0
+ 5.510907 14.925370 0
+ 5.510907 14.810560 0
+ 0.000000 14.810560 0
+ F3 8388608 0.000000 4
+ 0.057405 0.000000 0
+ 5.568312 0.000000 0
+ 5.568312 0.114811 0
+ 0.057405 0.114811 0
+ G3 0 0.000000 0.344432 3.731343 5.510907 0
+ G3 0 0.000000 0.344432 3.731343 8.266360 0
+ G3 0 0.000000 0.344432 3.731343 2.755454 0
+ END$SEGS
+STRUCTURE HO "Wahther's Cornerstone Structures Machine Shop Engine Room 933-3264A"
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 5.510907 0.000000 0
+ 5.510907 11.021810 0
+ 0.000000 11.021810 0
+ F3 8388608 0.000000 4
+ 0.000000 11.021810 0
+ 5.424799 11.021810 0
+ 5.424799 10.907000 0
+ 0.000000 10.907000 0
+ F3 8388608 0.000000 4
+ 5.510907 11.021810 0
+ 5.396097 11.021810 0
+ 5.396097 0.000000 0
+ 5.510907 0.000000 0
+ F3 8388608 0.000000 4
+ 0.000000 0.000000 0
+ 5.453502 0.000000 0
+ 5.453502 0.114811 0
+ 0.000000 0.114811 0
+ F3 8388608 0.000000 4
+ 0.000000 0.000000 0
+ 0.114811 0.000000 0
+ 0.114811 11.021810 0
+ 0.000000 11.021810 0
+ G3 0 0.000000 0.344432 2.755454 5.510907 0
+ G3 0 0.000000 0.344432 2.755454 9.184845 0
+ G3 0 0.000000 0.344432 2.755454 1.836969 0
+ END$SEGS
+STRUCTURE HO "Walthers Modern Coaling Tower 933-3262"
+ F3 8421504 0.000000 4
+ 0.000000 7.663605 0
+ 2.296211 7.663605 0
+ 2.296211 1.923077 0
+ 0.000000 1.923077 0
+ F3 8421504 0.000000 4
+ 3.673938 2.037888 0
+ 9.184845 2.037888 0
+ 9.184845 7.548795 0
+ 3.673938 7.548795 0
+ F3 8421504 0.000000 4
+ 3.673938 3.903559 0
+ 2.296211 3.903559 0
+ 2.296211 5.740528 0
+ 3.673938 5.740528 0
+ L3 0 0.000000 1.148106 1.951780 0 1.148106 7.692308 0
+ L3 0 0.000000 2.296211 5.740528 0 2.296211 3.903559 0
+ L3 0 0.000000 3.673938 5.740528 0 9.184845 5.740528 0
+ L3 0 0.000000 3.673938 3.903559 0 9.184845 3.903559 0
+ L3 0 0.000000 6.429391 2.066590 0 6.429391 3.903559 0
+ L3 0 0.000000 6.429391 5.740528 0 6.429391 7.577497 0
+ L3 0 0.000000 3.673938 5.740528 0 3.673938 3.903559 0
+ L3 0 0.000000 5.051665 5.740528 0 5.051665 3.903559 0
+ L3 0 0.000000 4.362802 3.903559 0 4.362802 5.740528 0
+ L3 0 0.000000 8.926521 7.577497 0 8.495982 7.577497 0
+ L3 0 0.000000 8.495982 7.577497 0 8.495982 9.644088 0
+ L3 0 0.000000 8.495982 9.644088 0 8.926521 9.644088 0
+ L3 0 0.000000 8.926521 9.644088 0 8.926521 7.577497 0
+ L3 0 0.000000 8.955224 0.000000 0 8.495982 0.000000 0
+ L3 0 0.000000 8.495982 0.000000 0 8.495982 2.037888 0
+ L3 0 0.000000 8.495982 2.037888 0 8.955224 2.037888 0
+ L3 0 0.000000 8.955224 2.037888 0 8.955224 0.000000 0
+ L3 0 0.000000 3.673938 0.000000 0 3.214696 0.000000 0
+ L3 0 0.000000 3.214696 0.000000 0 3.214696 3.960964 0
+ L3 0 0.000000 3.214696 3.960964 0 3.673938 3.960964 0
+ L3 0 0.000000 3.673938 3.960964 0 3.673938 0.000000 0
+ L3 0 0.000000 8.495982 7.807118 0 8.897819 7.807118 0
+ L3 0 0.000000 8.495982 8.036739 0 8.926521 8.036739 0
+ L3 0 0.000000 8.495982 8.266360 0 8.955224 8.266360 0
+ L3 0 0.000000 8.495982 8.495982 0 8.926521 8.495982 0
+ L3 0 0.000000 8.495982 8.725603 0 8.955224 8.725603 0
+ L3 0 0.000000 8.495982 8.955224 0 8.926521 8.955224 0
+ L3 0 0.000000 8.495982 9.184845 0 8.926521 9.184845 0
+ L3 0 0.000000 8.495982 9.414466 0 8.897819 9.414466 0
+ L3 0 0.000000 8.495982 9.644088 0 8.926521 9.644088 0
+ L3 0 0.000000 8.495982 0.000000 0 8.955224 0.000000 0
+ L3 0 0.000000 8.495982 0.229621 0 8.955224 0.229621 0
+ L3 0 0.000000 8.495982 0.459242 0 8.955224 0.459242 0
+ L3 0 0.000000 8.495982 0.688863 0 8.926521 0.688863 0
+ L3 0 0.000000 8.524684 0.918485 0 8.926521 0.918485 0
+ L3 0 0.000000 8.495982 1.148106 0 8.926521 1.148106 0
+ L3 0 0.000000 8.524684 1.607348 0 8.926521 1.607348 0
+ L3 0 0.000000 8.495982 1.377727 0 8.955224 1.377727 0
+ L3 0 0.000000 8.495982 1.836969 0 8.955224 1.836969 0
+ L3 0 0.000000 3.214696 0.000000 0 3.673938 0.000000 0
+ L3 0 0.000000 3.214696 0.229621 0 3.673938 0.229621 0
+ L3 0 0.000000 3.214696 0.459242 0 3.673938 0.459242 0
+ L3 0 0.000000 3.214696 0.688863 0 3.702641 0.688863 0
+ L3 0 0.000000 3.214696 0.918485 0 3.673938 0.918485 0
+ L3 0 0.000000 3.214696 1.836969 0 3.673938 1.836969 0
+ L3 0 0.000000 3.214696 1.607348 0 3.673938 1.607348 0
+ L3 0 0.000000 3.214696 1.148106 0 3.673938 1.148106 0
+ L3 0 0.000000 3.214696 1.377727 0 3.673938 1.377727 0
+ L3 0 0.000000 3.214696 3.673938 0 3.673938 3.673938 0
+ L3 0 0.000000 3.214696 3.444317 0 3.673938 3.444317 0
+ L3 0 0.000000 3.214696 3.214696 0 3.645235 3.214696 0
+ L3 0 0.000000 3.214696 2.985075 0 3.616533 2.985075 0
+ L3 0 0.000000 3.214696 2.755454 0 3.616533 2.755454 0
+ L3 0 0.000000 3.214696 2.525832 0 3.645235 2.525832 0
+ L3 0 0.000000 3.214696 2.296211 0 3.645235 2.296211 0
+ L3 0 0.000000 3.214696 2.066590 0 3.645235 2.066590 0
+ END$SEGS
+STRUCTURE HO "Walthers Modern Coaling Tower Office 933-3262"
+ F3 8421504 0.000000 4
+ 0.000000 3.673938 0
+ 1.377727 3.673938 0
+ 1.377727 0.459242 0
+ 0.000000 0.459242 0
+ F3 12632256 0.000000 4
+ 0.229621 0.459242 0
+ 1.148106 0.459242 0
+ 1.148106 0.000000 0
+ 0.229621 0.000000 0
+ END$SEGS
+STRUCTURE HO "Walthers Steel Water Tower B/U 933-2601"
+ F3 0 0.000000 4
+ 0.459242 0.000000 0
+ 0.459242 0.000000 0
+ 0.459242 0.000000 0
+ 0.459242 0.000000 0
+ F3 15395562 0.000000 9
+ 0.459242 0.000000 0
+ 0.459242 0.000000 0
+ 3.214696 0.000000 0
+ 3.673938 0.459242 0
+ 3.673938 3.214696 0
+ 3.214696 3.673938 0
+ 0.459242 3.673938 0
+ 0.000000 3.214696 0
+ 0.028703 0.459242 0
+ G3 8421504 0.000000 1.836969 1.836969 1.836969 0
+ L3 0 0.000000 0.000000 1.836969 0 3.673938 1.836969 0
+ L3 0 0.000000 1.836969 0.000000 0 1.836969 3.673938 0
+ L3 0 0.000000 0.516648 3.099885 0 3.157290 0.631458 0
+ L3 0 0.000000 0.602756 0.516648 0 3.042480 3.157290 0
+ L3 0 0.000000 0.605592 3.229621 0 1.871307 1.898296 0
+ L3 0 0.000000 0.439177 3.071407 0 1.704891 1.740082 0
+ L3 0 0.000000 0.922021 2.896790 0 0.755606 2.738575 0
+ L3 0 0.000000 1.080235 2.730373 0 0.913820 2.572161 0
+ L3 0 0.000000 1.238450 2.563959 0 1.030429 2.366191 0
+ L3 0 0.000000 1.375862 2.377767 0 1.188644 2.199776 0
+ L3 0 0.000000 1.713093 2.064713 0 1.525875 1.886721 0
+ L3 0 0.000000 1.871307 1.898296 0 1.704891 1.740082 0
+ L3 0 0.000000 1.554878 2.231128 0 1.388462 2.072913 0
+ L3 0 0.000000 0.763806 3.063205 0 0.597392 2.904990 0
+ L3 0 0.000000 0.605592 3.229621 0 0.439177 3.071407 0
+ END$SEGS
+STRUCTURE HO "Walthers Oil Column B/U 933-2601"
+ F3 14803425 0.000000 4
+ 0.000000 0.000000 0
+ 0.918485 0.000000 0
+ 0.918485 0.918485 0
+ 0.000000 0.918485 0
+ F3 0 0.000000 4
+ 0.459242 0.516648 0
+ 1.148106 0.516648 0
+ 1.148106 0.401837 0
+ 0.459242 0.401837 0
+ END$SEGS
+STRUCTURE HO "Walthers Water Column B/U 933-2601"
+ F3 14342874 0.000000 4
+ 0.000000 0.000000 0
+ 1.607348 0.000000 0
+ 1.607348 0.918485 0
+ 0.000000 0.918485 0
+ F3 0 0.000000 4
+ 0.459242 0.516648 0
+ 1.836969 0.516648 0
+ 1.836969 0.401837 0
+ 0.459242 0.401837 0
+ END$SEGS
+STRUCTURE HO "Walther's Cornerstone Structures Modern Round House 933-3260"
+ F3 15496704 0.000000 10
+ 4.592422 0.057405 0
+ 0.000000 19.001150 0
+ 0.057405 19.001150 0
+ 5.625718 20.206660 0
+ 11.768080 20.206660 0
+ 17.336400 19.058550 0
+ 12.858780 0.057405 0
+ 10.103330 0.516648 0
+ 7.347876 0.516648 0
+ 4.592422 0.057405 0
+ L3 0 0.000000 8.438577 0.057405 0 8.438577 0.057405 0
+ L3 0 0.000000 12.055110 0.057405 0 12.055110 0.057405 0
+ L3 0 0.000000 11.710680 0.114811 0 11.710680 0.057405 0
+ L3 0 0.000000 11.653270 20.264060 0 17.393800 19.058550 0
+ L3 0 0.000000 0.000000 19.001150 0 5.625718 20.206660 0
+ L3 0 0.000000 5.568312 20.264060 0 11.710680 20.264060 0
+ L3 0 0.000000 6.084960 14.867970 0 11.308840 14.867970 0
+ L3 0 0.000000 6.831229 6.314581 0 10.562570 6.314581 0
+ L3 0 0.000000 7.347876 0.516648 0 7.347876 0.516648 0
+ L3 0 0.000000 7.347876 0.516648 0 10.103330 0.516648 0
+ L3 0 0.000000 10.103330 0.516648 0 12.743970 0.057405 0
+ L3 0 0.000000 12.858780 0.000000 0 17.336400 19.058550 0
+ L3 0 0.000000 10.103330 0.459242 0 11.768080 20.206660 0
+ L3 0 0.000000 7.347876 0.516648 0 4.592422 0.057405 0
+ L3 0 0.000000 4.592422 0.057405 0 0.000000 19.001150 0
+ L3 0 0.000000 7.347876 0.516648 0 5.568312 20.264060 0
+ L3 0 0.000000 6.773823 6.314581 0 3.214696 5.510907 0
+ L3 0 0.000000 10.562570 6.314581 0 14.121700 5.568312 0
+ L3 0 0.000000 11.366250 14.867970 0 16.130880 13.892080 0
+ L3 0 0.000000 6.027555 14.867970 0 1.262916 13.719860 0
+ END$SEGS
+STRUCTURE HO "Walthers Union City Roundhouse 933-3202xx"
+ L3 32768 0.041667 9.452816 25.353970 0 0.038350 15.595070 0
+ L3 32768 0.020833 4.860394 8.419414 0 17.432150 13.643290 0
+ L3 32768 0.020833 3.654883 11.060060 0 15.308160 17.833880 0
+ L3 32768 0.020833 2.047535 13.413670 0 12.724920 21.622630 0
+ L3 32768 0.020833 5.836284 5.606555 0 18.924690 9.223087 0
+ L3 32768 0.020833 6.410336 2.908506 0 19.785770 4.630664 0
+ A3 32768 0.041667 35.591270 -15.403670 0.038242 0 44.474403 45.525597
+ A3 32768 0.041667 22.043630 -15.403670 0.038242 0 44.468552 45.531448
+ L3 32768 0.020833 20.072790 0.038242 0 6.525147 0.038242 0
+ A3 32768 0.041667 29.162110 -15.403670 0.038242 0 44.521254 45.478746
+ A3 32768 0.020833 25.602820 -15.403670 0.038242 0 44.443785 45.556215
+ A3 32768 0.020833 32.491390 -15.403670 0.038242 0 44.498085 45.501915
+ A3 32768 0.020833 32.491390 -15.403670 0.038242 0 44.354681 45.645319
+ L3 32768 0.020833 9.247304 17.592280 0 10.255170 16.056490 0
+ L3 32768 0.020833 10.255170 16.056490 0 8.335421 14.796660 0
+ L3 32768 0.020833 8.335421 14.796660 0 7.327559 16.332450 0
+ L3 32768 0.020833 7.327559 16.332450 0 9.247304 17.592280 0
+ L3 32768 0.020833 11.790940 6.352979 0 14.046450 6.783416 0
+ L3 32768 0.020833 14.046450 6.783416 0 14.390800 4.979011 0
+ L3 32768 0.020833 14.390800 4.979011 0 12.135290 4.548574 0
+ L3 32768 0.020833 12.135290 4.548574 0 11.790940 6.352979 0
+ L3 32768 0.020833 10.793430 9.823590 0 12.961810 10.579030 0
+ L3 32768 0.020833 12.961810 10.579030 0 13.566160 8.844321 0
+ L3 32768 0.020833 13.566160 8.844321 0 11.397780 8.088882 0
+ L3 32768 0.020833 11.397780 8.088882 0 10.793430 9.823590 0
+ L3 32768 0.020833 9.222174 13.236830 0 11.245010 14.323440 0
+ L3 32768 0.020833 11.245010 14.323440 0 12.114300 12.705170 0
+ L3 32768 0.020833 12.114300 12.705170 0 10.091460 11.618560 0
+ L3 32768 0.020833 10.091460 11.618560 0 9.222174 13.236830 0
+ L3 32768 0.020833 5.089516 19.357520 0 6.665311 20.694550 0
+ L3 32768 0.020833 6.665311 20.694550 0 7.853786 19.293840 0
+ L3 32768 0.020833 7.853786 19.293840 0 6.277990 17.956810 0
+ L3 32768 0.020833 6.277990 17.956810 0 5.089516 19.357520 0
+ L3 32768 0.020833 12.369590 2.753752 0 14.658730 2.933794 0
+ L3 32768 0.020833 14.658730 2.933794 0 14.802760 1.102481 0
+ L3 32768 0.020833 14.802760 1.102481 0 12.513620 0.922438 0
+ L3 32768 0.020833 12.513620 0.922438 0 12.369590 2.753752 0
+ A3 32768 0.020833 0.324734 18.580260 2.162237 0 0.000000 360.000000
+ A3 32768 0.020833 0.324734 18.061110 6.637327 0 0.000000 360.000000
+ A3 32768 0.020833 0.324734 7.670751 4.513332 0 0.000000 360.000000
+ A3 32768 0.020833 0.324734 6.924482 7.498406 0 0.000000 360.000000
+ A3 32768 0.020833 0.324734 5.718971 10.426080 0 0.000000 360.000000
+ A3 32768 0.020833 0.324734 4.169029 13.124120 0 0.000000 360.000000
+ A3 32768 0.020833 0.324734 2.274655 15.535150 0 0.000000 360.000000
+ A3 32768 0.020833 0.324734 16.913000 10.942720 0 0.000000 360.000000
+ A3 32768 0.020833 0.324734 15.190840 15.133310 0 0.000000 360.000000
+ A3 32768 0.020833 0.324734 10.196580 22.596000 0 0.000000 360.000000
+ A3 32768 0.020833 0.324734 8.072588 1.585662 0 0.000000 360.000000
+ A3 32768 0.020833 0.324734 12.952040 18.979460 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE HO "Walthers 2-Stall Engine House 933-3204"
+ L 0 0 0.000000 0.000000 14.006890 0.000000
+ L 0 0 14.006890 0.000000 14.006890 5.970150
+ L 0 0 14.006890 5.970150 0.000000 5.970150
+ L 0 0 0.000000 5.970150 0.000000 0.000000
+ L 0 0 0.000000 2.985075 14.006890 2.985075
+ L 0 0 0.000000 3.673938 14.006890 3.673938
+ L 0 0 0.000000 2.296211 14.006890 2.296211
+ A 0 0 0.413956 12.169920 1.607348 0.000000 360.000000
+ A 0 0 0.256724 12.169920 1.607348 0.000000 360.000000
+ A 0 0 0.413956 1.836969 1.607348 0.000000 360.000000
+ A 0 0 0.256724 1.836969 1.607348 0.000000 360.000000
+ A 0 0 0.413956 1.836969 4.362802 0.000000 360.000000
+ A 0 0 0.256724 1.836969 4.362802 0.000000 360.000000
+ A 0 0 0.413956 12.169920 4.362802 0.000000 360.000000
+ A 0 0 0.256724 12.169920 4.362802 0.000000 360.000000
+ END$SEGS
+STRUCTURE HO "Walthers Backshop 933-3039"
+ L 0 0.000000 0.000000 0.000000 11.625000 0.000000
+ L 0 0.000000 11.625000 0.000000 11.625000 8.812500
+ L 0 0.000000 11.625000 8.812500 0.000000 8.812500
+ L 0 0.000000 0.000000 8.812500 0.000000 0.000000
+ END$SEGS
+STRUCTURE HO "Walthers Car Shop 933-3040"
+ F3 14803425 0.000000 4
+ 0.000000 4.406250 0
+ 11.625000 4.406250 0
+ 11.620000 -4.406250 0
+ 0.000000 -4.406250 0
+ L3 0 0.083333 0.000000 -4.406250 0 11.625000 -4.406235 0
+ L3 0 0.083333 0.000000 4.406250 0 11.625000 4.406250 0
+ L3 0 0.083333 0.000000 4.406500 0 0.000000 -4.406500 0
+ L3 0 0.083333 11.625000 4.406500 0 11.625000 -4.406500 0
+ END$SEGS
+STRUCTURE HO "Walthers Rail Shop 933-2970"
+ F3 16751128 0.000000 4
+ 0.000000 4.406250 0
+ 17.125000 4.406250 0
+ 17.125000 -4.406250 0
+ 0.000000 -4.406250 0
+ L3 0 0.053333 0.000000 -4.406250 0 17.125000 -4.406235 0
+ L3 0 0.053333 0.000000 4.406250 0 17.125000 4.406250 0
+ L3 0 0.053333 0.000000 4.406500 0 0.000000 -4.406500 0
+ L3 0 0.053333 17.125000 4.406500 0 17.125000 -4.406500 0
+ L3 0 0.053333 11.416700 4.406000 0 11.416700 -4.406000 0
+ G3 14803425 0.000000 1.000000 14.500000 0.000000 0
+ G3 14803425 0.000000 1.000000 14.500000 2.938000 0
+ G3 14803425 0.000000 1.000000 14.500000 -2.937000 0
+ G3 14803425 0.000000 1.000000 2.399600 2.938000 0
+ G3 14803425 0.000000 1.000000 2.399600 0.000000 0
+ G3 14803425 0.000000 1.000000 2.399600 -2.937000 0
+ G3 14803425 0.000000 1.000000 9.149600 2.938000 0
+ G3 14803425 0.000000 1.000000 9.149601 0.000000 0
+ G3 14803425 0.000000 1.000000 9.149601 -2.937000 0
+ A3 0 0.053333 1.000000 14.500000 0.000000 0 0.000000 360.000000
+ A3 0 0.053333 1.000000 14.500000 2.938000 0 0.000000 360.000000
+ A3 0 0.053333 1.000000 14.500000 -2.937000 0 0.000000 360.000000
+ A3 0 0.053333 1.000000 2.399600 2.938000 0 0.000000 360.000000
+ A3 0 0.053333 1.000000 2.399600 0.000000 0 0.000000 360.000000
+ A3 0 0.053333 1.000000 2.399600 -2.937000 0 0.000000 360.000000
+ A3 0 0.053333 1.000000 9.149600 2.938000 0 0.000000 360.000000
+ A3 0 0.053333 1.000000 9.149601 0.000000 0 0.000000 360.000000
+ A3 0 0.053333 1.000000 9.149601 -2.937000 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE HO "Walthers Allied Rail Rebuilders 933-3016"
+ F3 14803425 0.000000 4
+ 0.000000 5.000000 0
+ 0.000000 -5.000000 0
+ 10.000000 -5.000000 0
+ 10.000000 5.000000 0
+ L3 0 0.083333 0.000000 -5.000000 0 10.000000 -5.000000 0
+ L3 0 0.083333 10.000000 -5.000000 0 10.000000 5.000000 0
+ L3 0 0.083333 10.000000 5.000000 0 0.000000 5.000000 0
+ L3 0 0.083333 0.000000 5.000000 0 0.000000 -5.000000 0
+ L3 0 0.083333 0.000000 -2.000000 0 10.000000 -2.000000 0
+ L3 0 0.083333 0.000000 2.000000 0 10.000000 2.000000 0
+ G3 0 0.000000 0.250000 0.500000 -2.500000 0
+ G3 0 0.000000 0.250000 1.250000 -2.500000 0
+ L3 0 0.000000 0.000000 0.000000 0 10.000000 0.000000 0
+ END$SEGS
+STRUCTURE HO "Walthers Modern Roundhouse 933-2900"
+ L 0 0.053333 11.892074 1.040422 11.892074 -1.040422
+ L 0 0.053333 11.892074 1.040422 11.530740 3.089652
+ L 0 0.053333 11.892074 -1.040422 11.530740 -3.089652
+ L 0 0.053333 29.574530 2.587436 29.574530 -2.587436
+ L 0 0.053333 29.574530 2.587436 28.675923 7.683690
+ L 0 0.053333 31.940493 -2.794431 30.969997 -8.298386
+ L 0 0.053333 11.530740 3.089652 28.675923 7.683690
+ L 0 0.053333 11.530740 -3.089652 30.969997 -8.298386
+ L 0 0.053333 29.574530 -2.587436 31.940493 -2.794431
+ L 0 0.053333 17.786226 1.556093 17.786226 -1.556093
+ L 0 0.053333 17.786226 1.556093 17.245801 4.620998
+ L 0 0.053333 17.786226 -1.556093 17.245801 -4.620998
+ L 0 0.053333 23.680378 2.071765 23.680378 -2.071765
+ L 0 0.053333 23.680378 2.071765 22.960862 6.152344
+ L 0 0.053333 23.680378 -2.071765 22.960862 -6.152344
+ A 0 0.053333 0.375000 26.937500 0.000000 0.000000 360.000000
+ A 0 0.053333 0.625000 26.937500 0.000000 0.000000 360.000000
+ A 0 0.053333 0.375000 26.528259 4.677648 0.000000 360.000000
+ A 0 0.053333 0.625000 26.528259 4.677648 0.000000 360.000000
+ A 0 0.053333 0.375000 28.867177 -5.090062 0.000000 360.000000
+ A 0 0.053333 0.625000 28.867177 -5.090062 0.000000 360.000000
+ END$SEGS
+STRUCTURE HO "Walthers Modern Roundhouse Add-on Stalls 933-2901"
+ L 0 0.053333 11.892074 1.040422 11.892074 -1.040422
+ L 0 0.053333 11.892074 1.040422 11.530740 3.089652
+ L 0 0.053333 11.892074 -1.040422 11.530740 -3.089652
+ L 0 0.053333 29.574530 2.587436 29.574530 -2.587436
+ L 0 0.053333 29.574530 2.587436 28.675923 7.683690
+ L 0 0.053333 29.574530 -2.587436 28.675923 -7.683690
+ L 0 0.053333 11.530740 -3.089652 28.675923 -7.683690
+ L 0 0.053333 11.530740 3.089652 28.675923 7.683690
+ L 0 0.053333 17.786226 1.556093 17.786226 -1.556093
+ L 0 0.053333 17.786226 1.556093 17.245801 4.620998
+ L 0 0.053333 17.786226 -1.556093 17.245801 -4.620998
+ L 0 0.053333 23.680378 2.071765 23.680378 -2.071765
+ L 0 0.053333 23.680378 2.071765 22.960862 6.152344
+ L 0 0.053333 23.680378 -2.071765 22.960862 -6.152344
+ A 0 0.053333 0.375000 26.937500 0.000000 0.000000 360.000000
+ A 0 0.053333 0.625000 26.937500 0.000000 0.000000 360.000000
+ A 0 0.053333 0.375000 26.528259 4.677648 0.000000 360.000000
+ A 0 0.053333 0.625000 26.528259 4.677648 0.000000 360.000000
+ A 0 0.053333 0.375000 26.528259 -4.677648 0.000000 360.000000
+ A 0 0.053333 0.625000 26.528259 -4.677648 0.000000 360.000000
+ END$SEGS
+STRUCTURE HO "Walthers Sanding Towers & Drying House 933-3182A"
+ L3 0 0.052083 3.380214 0.130208 0 9.130214 0.130208 0
+ L3 0 0.052083 9.130214 0.130208 0 9.130214 2.880208 0
+ L3 0 0.052083 9.130214 2.880208 0 3.380214 2.880208 0
+ L3 0 0.052083 3.380210 3.005208 0 3.380218 0.005208 0
+ L3 0 0.052083 3.380214 0.005208 0 0.005214 0.005208 0
+ L3 0 0.052083 0.005208 0.005208 0 0.005212 3.005208 0
+ L3 0 0.052083 0.005214 3.005208 0 3.380214 3.005208 0
+ L3 0 0.052083 0.005214 1.505208 0 3.380214 1.505208 0
+ F3 13541990 0.000000 4
+ 3.442714 2.817708 0
+ 9.067714 2.817708 0
+ 9.067714 0.192708 0
+ 3.442714 0.192708 0
+ F3 16755285 0.000000 4
+ 0.067714 2.942708 0
+ 3.317714 2.942708 0
+ 3.317714 1.567708 0
+ 0.067714 1.567708 0
+ F3 16755285 0.000000 4
+ 0.067714 1.442708 0
+ 3.317714 1.442708 0
+ 3.317714 0.067708 0
+ 0.067714 0.067708 0
+ END$SEGS
+STRUCTURE HO "Walthers Diesel Sanding Tower 933-3182B"
+ L3 0 0.052083 0.125000 0.026042 0 0.875000 0.026042 0
+ L3 0 0.052083 0.875000 1.526042 0 0.125000 1.526042 0
+ L3 0 0.052083 0.125000 1.526042 0 0.125000 1.088542 0
+ L3 0 0.052083 0.875000 1.526042 0 0.875000 1.088542 0
+ L3 0 0.052083 0.125000 0.276042 0 0.125000 0.276042 0
+ L3 0 0.052083 0.875000 0.026042 0 0.875000 0.463542 0
+ L3 0 0.052083 0.125000 0.026042 0 0.125000 0.463542 0
+ G3 8421504 0.000000 0.500000 0.500000 0.776042 0
+ A3 0 0.052083 0.500000 0.500000 0.776042 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE HO "Walthers Steam Sanding Tower 933-3182C"
+ F3 8421504 0.000000 4
+ 5.213542 0.838542 0
+ 5.588542 0.838542 0
+ 5.588542 0.463542 0
+ 5.213542 0.463542 0
+ F3 8421504 0.000000 4
+ 0.338542 0.838542 0
+ 0.713542 0.838542 0
+ 0.713542 0.463542 0
+ 0.338542 0.463542 0
+ L3 0 0.052083 2.338542 0.026042 0 3.588542 0.026042 0
+ L3 0 0.052083 3.588542 0.026042 0 3.588542 1.276042 0
+ L3 0 0.052083 3.588542 1.276042 0 2.338542 1.276042 0
+ L3 0 0.052083 2.338542 1.276042 0 2.338542 0.026042 0
+ L3 0 0.052083 0.026042 0.151042 0 1.026042 0.151042 0
+ L3 0 0.052083 1.026042 0.151042 0 1.026042 1.151042 0
+ L3 0 0.052083 1.026042 1.151042 0 0.026042 1.151042 0
+ L3 0 0.052083 0.026042 1.151042 0 0.026042 0.151042 0
+ L3 0 0.052083 5.901042 0.151042 0 4.901042 0.151042 0
+ L3 0 0.052083 4.901042 0.151042 0 4.901042 1.151042 0
+ L3 0 0.052083 4.901042 1.151042 0 5.901042 1.151042 0
+ L3 0 0.052083 5.901042 1.151042 0 5.901042 0.151042 0
+ L3 0 0.052083 0.338542 0.463542 0 0.713542 0.463542 0
+ L3 0 0.052083 0.713542 0.463542 0 0.713542 0.838542 0
+ L3 0 0.052083 0.713542 0.838542 0 0.338542 0.838542 0
+ L3 0 0.052083 0.338542 0.838542 0 0.338542 0.463542 0
+ L3 0 0.052083 5.213542 0.463542 0 5.588542 0.463542 0
+ L3 0 0.052083 5.588542 0.463542 0 5.588542 0.838542 0
+ L3 0 0.052083 5.588542 0.838542 0 5.213542 0.838542 0
+ L3 0 0.052083 5.213542 0.838542 0 5.213542 0.463542 0
+ L3 0 0.104167 3.338542 0.651042 0 5.213542 0.651042 0
+ L3 0 0.104167 2.588542 0.651042 0 0.713542 0.651042 0
+ G3 8421504 0.000000 0.375000 2.963542 0.651042 0
+ A3 0 0.052083 0.125000 2.963542 0.651042 0 0.000000 360.000000
+ A3 0 0.052083 0.375000 2.963542 0.651042 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE HO "Walthers Steel Water Tower 933-3043"
+ G3 12632256 0.000000 1.501302 1.713542 1.713542 0
+ A3 0 0.052083 1.500000 1.713542 1.713542 0 0.000000 360.000000
+ L3 0 0.052083 0.697070 2.818391 0 0.652875 2.862585 0
+ L3 0 0.052083 0.652875 2.862585 0 0.564488 2.774196 0
+ L3 0 0.052083 0.564488 2.774196 0 0.608682 2.730002 0
+ L3 0 0.052083 0.608693 0.697070 0 0.564499 0.652875 0
+ L3 0 0.052083 0.564499 0.652875 0 0.652888 0.564488 0
+ L3 0 0.052083 0.652888 0.564488 0 0.697082 0.608682 0
+ L3 0 0.052083 2.818401 0.697082 0 2.862596 0.652888 0
+ L3 0 0.052083 2.862596 0.652888 0 2.774208 0.564499 0
+ L3 0 0.052083 2.774208 0.564499 0 2.730014 0.608693 0
+ L3 0 0.052083 2.730002 2.818401 0 2.774196 2.862596 0
+ L3 0 0.052083 2.774196 2.862596 0 2.862585 2.774208 0
+ L3 0 0.052083 2.862585 2.774208 0 2.818391 2.730014 0
+ L3 0 0.052083 0.026042 0.026042 0 3.401042 0.026042 0
+ L3 0 0.052083 3.401042 0.026042 0 3.401042 3.401042 0
+ L3 0 0.052083 3.401042 3.401042 0 0.026042 3.401042 0
+ L3 0 0.052083 0.026042 3.401042 0 0.026042 0.026042 0
+ END$SEGS
+STRUCTURE HO "Walthers Machine Shop 933-2902"
+ F3 16755285 0.000000 4
+ 0.026042 6.750000 0
+ 5.026042 6.750000 0
+ 5.026042 2.750000 0
+ 0.026042 2.750000 0
+ F3 16755285 0.000000 6
+ 0.026042 8.750000 0
+ 0.026042 6.750000 0
+ 5.026042 6.750000 0
+ 5.026042 4.750000 0
+ 13.651042 4.750000 0
+ 13.651042 8.750000 0
+ L3 0 0.052083 3.026042 6.750000 0 5.026042 6.750000 0
+ L3 0 0.052083 4.776042 7.562500 0 4.776042 7.562500 0
+ L3 0 0.052083 0.026042 2.750000 0 0.026042 8.750000 0
+ L3 0 0.052083 0.026042 8.750000 0 13.651042 8.750000 0
+ L3 0 0.052083 6.651042 8.125000 0 6.651042 8.125000 0
+ L3 0 0.052083 0.026042 2.750000 0 0.026042 2.750000 0
+ L3 0 0.052083 0.026042 2.750000 0 5.026042 2.750007 0
+ L3 0 0.052083 3.963542 9.500000 0 3.963542 9.500000 0
+ L3 0 0.052083 4.338542 9.187500 0 4.338542 9.187500 0
+ L3 0 0.052083 5.026042 2.750000 0 5.026042 4.750000 0
+ L3 0 0.052083 5.026042 4.750000 0 13.651042 4.750000 0
+ L3 0 0.052083 13.651042 4.750000 0 13.651042 8.750000 0
+ L3 0 0.052083 3.026042 6.750000 0 0.026042 6.750000 0
+ L3 0 0.052083 5.026042 4.750000 0 3.026042 4.750000 0
+ L3 0 0.052083 3.026042 4.750000 0 3.026042 6.750000 0
+ L3 0 0.052083 5.026042 6.750000 0 5.026042 4.750000 0
+ G3 15720651 0.000000 1.375000 2.026042 1.375000 0
+ A3 0 0.052083 0.877229 2.026042 1.375000 0 0.000000 360.000000
+ A3 0 0.052083 0.625000 2.026042 1.375000 0 0.000000 360.000000
+ G3 0 0.000000 0.625000 2.026042 1.375000 0
+ A3 0 0.052083 1.375000 2.026042 1.375000 0 0.000000 360.000000
+ END$SEGS
+
+
+
+
+SUBCONTENTS Walthers Cornerstone HO Structures - Turn Tables
+TURNOUT HO "Walthers 130' Turn Table 933-2829" 512
+# TT was designed with 18.875" bridge, 19.125" outside dia., 10 degree spacing
+ P "1" 1 2 3
+ P "2" 4 5 6
+ P "3" 7 8 9
+ P "4" 10 11 12
+ P "5" 13 14 15
+ P "6" 16 17 18
+ P "7" 19 20 21
+ P "8" 22 23 24
+ P "9" 25 26 27
+ P "10" 28 29 30
+ P "11" 31 32 33
+ P "12" 34 35 36
+ P "13" 37 38 39
+ P "14" 40 41 42
+ P "15" 43 44 45
+ P "16" 46 47 48
+ P "17" 49 50 51
+ P "18" 52 53 54
+ E 0.000000 9.562500 0.000000
+ E 1.660511 9.417224 10.000000
+ E 3.270568 8.985811 20.000000
+ E 4.781250 8.281368 30.000000
+ E 6.146657 7.325300 40.000000
+ E 7.325300 6.146657 50.000000
+ E 8.281368 4.781250 60.000000
+ E 8.985811 3.270568 70.000000
+ E 9.417224 1.660511 80.000000
+ E 9.562500 0.000000 90.000000
+ E 9.417224 -1.660511 100.000000
+ E 8.985811 -3.270568 110.000000
+ E 8.281368 -4.781250 120.000000
+ E 7.325300 -6.146657 130.000000
+ E 6.146657 -7.325300 140.000000
+ E 4.781250 -8.281368 150.000000
+ E 3.270568 -8.985811 160.000000
+ E 1.660511 -9.417224 170.000000
+ E 0.000000 -9.562500 180.000000
+ E -1.660511 -9.417224 190.000000
+ E -3.270568 -8.985811 200.000000
+ E -4.781250 -8.281368 210.000000
+ E -6.146657 -7.325300 220.000000
+ E -7.325300 -6.146657 230.000000
+ E -8.281368 -4.781250 240.000000
+ E -8.985811 -3.270568 250.000000
+ E -9.417224 -1.660511 260.000000
+ E -9.562500 0.000000 270.000000
+ E -9.417224 1.660511 280.000000
+ E -8.985811 3.270568 290.000000
+ E -8.281368 4.781250 300.000000
+ E -7.325300 6.146657 310.000000
+ E -6.146657 7.325300 320.000000
+ E -4.781250 8.281368 330.000000
+ E -3.270568 8.985811 340.000000
+ E -1.660511 9.417224 350.000000
+
+#0/180
+ S 0 0 0.000000 9.562500 0.000000 9.437500
+ S 16777215 0 0.000000 9.437500 0.000000 -9.437500
+ S 0 0 0.000000 -9.437500 0.000000 -9.562500
+#10/190
+ S 0 0 1.660511 9.417224 1.638805 9.294123
+ S 16777215 0 1.638805 9.294123 -1.638805 -9.294123
+ S 0 0 -1.638805 -9.294123 -1.660511 -9.417224
+#20/200
+ S 0 0 3.270568 8.985811 3.227815 8.868349
+ S 16777215 0 3.227815 8.868349 -3.227815 -8.868349
+ S 0 0 -3.227815 -8.868349 -3.270568 -8.985811
+#30/210
+ S 0 0 4.781250 8.281368 4.718750 8.173115
+ S 16777215 0 4.718750 8.173115 -4.718750 -8.173115
+ S 0 0 -4.718750 -8.173115 -4.781250 -8.281368
+#40/220
+ S 0 0 6.146657 7.325300 6.066308 7.229544
+ S 16777215 0 6.066308 7.229544 -6.066308 -7.229544
+ S 0 0 -6.066308 -7.229544 -6.146657 -7.325300
+#50/230
+ S 0 0 7.325300 6.146657 7.229544 6.066308
+ S 16777215 0 7.229544 6.066308 -7.229544 -6.066308
+ S 0 0 -7.229544 -6.066308 -7.325300 -6.146657
+#60/240
+ S 0 0 8.281368 4.781250 8.173115 4.718750
+ S 16777215 0 8.173115 4.718750 -8.173115 -4.718750
+ S 0 0 -8.173115 -4.718750 -8.281368 -4.781250
+#70/250
+ S 0 0 8.985811 3.270568 8.868349 3.227815
+ S 16777215 0 8.868349 3.227815 -8.868349 -3.227815
+ S 0 0 -8.868349 -3.227815 -8.985811 -3.270568
+#80/260
+ S 0 0 9.417224 1.660511 9.294123 1.638805
+ S 16777215 0 9.294123 1.638805 -9.294123 -1.638805
+ S 0 0 -9.294123 -1.638805 -9.417224 -1.660511
+#90/270
+ S 0 0 9.562500 0.000000 9.437500 0.000000
+ S 0 0 9.437500 0.000000 -9.437500 0.000000
+ S 0 0 -9.437500 0.000000 -9.562500 0.000000
+#100/280
+ S 0 0 9.417224 -1.660511 9.294123 -1.638805
+ S 16777215 0 9.294123 -1.638805 -9.294123 1.638805
+ S 0 0 -9.294123 1.638805 -9.417224 1.660511
+#110/290
+ S 0 0 8.985811 -3.270568 8.868349 -3.227815
+ S 16777215 0 8.868349 -3.227815 -8.868349 3.227815
+ S 0 0 -8.868349 3.227815 -8.985811 3.270568
+#120/300
+ S 0 0 8.281368 -4.781250 8.173115 -4.718750
+ S 16777215 0 8.173115 -4.718750 -8.173115 4.718750
+ S 0 0 -8.173115 4.718750 -8.281368 4.781250
+#130/310
+ S 0 0 7.325300 -6.146657 7.229544 -6.066308
+ S 16777215 0 7.229544 -6.066308 -7.229544 6.066308
+ S 0 0 -7.229544 6.066308 -7.325300 6.146657
+#140/320
+ S 0 0 6.146657 -7.325300 6.066308 -7.229544
+ S 16777215 0 6.066308 -7.229544 -6.066308 7.229544
+ S 0 0 -6.066308 7.229544 -6.146657 7.325300
+#150/330
+ S 0 0 4.781250 -8.281368 4.718750 -8.173115
+ S 16777215 0 4.718750 -8.173115 -4.718750 8.173115
+ S 0 0 -4.718750 8.173115 -4.781250 8.281368
+#160/340
+ S 0 0 3.270568 -8.985811 3.227815 -8.868349
+ S 16777215 0 3.227815 -8.868349 -3.227815 8.868349
+ S 0 0 -3.227815 8.868349 -3.270568 8.985811
+#170/350
+ S 0 0 1.660511 -9.417224 1.638805 -9.294123
+ S 16777215 0 1.638805 -9.294123 -1.638805 9.294123
+ S 0 0 -1.638805 9.294123 -1.660511 9.417224
+
+ A 11579568 0.053333 9.562500 0.000000 0.000000 0.000000 360.000000
+ A 11579568 0.053333 9.437500 0.000000 0.000000 0.000000 360.000000
+ G 11579568 0.000000 0.053333 0.000000 0.000000 0
+ END$SEGS
+TURNOUT HO "Walthers 90' Turn Table 933-2840" 512
+# TT was designed with 12.5" bridge, 13.75" outside dia., 10 degree spacing
+ P "1" 1 2 3
+ P "2" 4 5 6
+ P "3" 7 8 9
+ P "4" 10 11 12
+ P "5" 13 14 15
+ P "6" 16 17 18
+ P "7" 19 20 21
+ P "8" 22 23 24
+ P "9" 25 26 27
+ P "10" 28 29 30
+ P "11" 31 32 33
+ P "12" 34 35 36
+ P "13" 37 38 39
+ P "14" 40 41 42
+ P "15" 43 44 45
+ P "16" 46 47 48
+ P "17" 49 50 51
+ P "18" 52 53 54
+ E 0.000000 6.875000 0.000000
+ E 1.193831 6.770553 10.000000
+ E 2.351388 6.460387 20.000000
+ E 3.437500 5.953925 30.000000
+ E 4.419165 5.266556 40.000000
+ E 5.266556 4.419165 50.000000
+ E 5.953925 3.437500 60.000000
+ E 6.460387 2.351388 70.000000
+ E 6.770553 1.193831 80.000000
+ E 6.875000 0.000000 90.000000
+ E 6.770553 -1.193831 100.000000
+ E 6.460387 -2.351388 110.000000
+ E 5.953925 -3.437500 120.000000
+ E 5.266556 -4.419165 130.000000
+ E 4.419165 -5.266556 140.000000
+ E 3.437500 -5.953925 150.000000
+ E 2.351388 -6.460387 160.000000
+ E 1.193831 -6.770553 170.000000
+ E 0.000000 -6.875000 180.000000
+ E -1.193831 -6.770553 190.000000
+ E -2.351388 -6.460387 200.000000
+ E -3.437500 -5.953925 210.000000
+ E -4.419165 -5.266556 220.000000
+ E -5.266556 -4.419165 230.000000
+ E -5.953925 -3.437500 240.000000
+ E -6.460387 -2.351388 250.000000
+ E -6.770553 -1.193831 260.000000
+ E -6.875000 0.000000 270.000000
+ E -6.770553 1.193831 280.000000
+ E -6.460387 2.351388 290.000000
+ E -5.953925 3.437500 300.000000
+ E -5.266556 4.419165 310.000000
+ E -4.419165 5.266556 320.000000
+ E -3.437500 5.953925 330.000000
+ E -2.351388 6.460387 340.000000
+ E -1.193831 6.770553 350.000000
+
+#0/180
+ S 0 0 0.000000 6.875000 0.000000 6.250000
+ S 16777215 0 0.000000 6.250000 0.000000 -6.250000
+ S 0 0 0.000000 -6.250000 0.000000 -6.875000
+#10/190
+ S 0 0 1.193831 6.770553 1.085301 6.155048
+ S 16777215 0 1.085301 6.155048 -1.085301 -6.155048
+ S 0 0 -1.085301 -6.155048 -1.193831 -6.770553
+#20/200
+ S 0 0 2.351388 6.460387 2.137626 5.873079
+ S 16777215 0 2.137626 5.873079 -2.137626 -5.873079
+ S 0 0 -2.137626 -5.873079 -2.351388 -6.460387
+#30/210
+ S 0 0 3.437500 5.953925 3.125000 5.412659
+ S 16777215 0 3.125000 5.412659 -3.125000 -5.412659
+ S 0 0 -3.125000 -5.412659 -3.437500 -5.953925
+#40/220
+ S 0 0 4.419165 5.266556 4.017423 4.787778
+ S 16777215 0 4.017423 4.787778 -4.017423 -4.787778
+ S 0 0 -4.017423 -4.787778 -4.419165 -5.266556
+#50/230
+ S 0 0 5.266556 4.419165 4.787778 4.017423
+ S 16777215 0 4.787778 4.017423 -4.787778 -4.017423
+ S 0 0 -4.787778 -4.017423 -5.266556 -4.419165
+#60/240
+ S 0 0 5.953925 3.437500 5.412659 3.125000
+ S 16777215 0 5.412659 3.125000 -5.412659 -3.125000
+ S 0 0 -5.412659 -3.125000 -5.953925 -3.437500
+#70/250
+ S 0 0 6.460387 2.351388 5.873079 2.137626
+ S 16777215 0 5.873079 2.137626 -5.873079 -2.137626
+ S 0 0 -5.873079 -2.137626 -6.460387 -2.351388
+#80/260
+ S 0 0 6.770553 1.193831 6.155048 1.085301
+ S 16777215 0 6.155048 1.085301 -6.155048 -1.085301
+ S 0 0 -6.155048 -1.085301 -6.770553 -1.193831
+#90/270
+ S 0 0 6.875000 0.000000 6.250000 0.000000
+ S 0 0 6.250000 0.000000 -6.250000 0.000000
+ S 0 0 -6.250000 0.000000 -6.875000 0.000000
+#100/280
+ S 0 0 6.770553 -1.193831 6.155048 -1.085301
+ S 16777215 0 6.155048 -1.085301 -6.155048 1.085301
+ S 0 0 -6.155048 1.085301 -6.770553 1.193831
+#110/290
+ S 0 0 6.460387 -2.351388 5.873079 -2.137626
+ S 16777215 0 5.873079 -2.137626 -5.873079 2.137626
+ S 0 0 -5.873079 2.137626 -6.460387 2.351388
+#120/300
+ S 0 0 5.953925 -3.437500 5.412659 -3.125000
+ S 16777215 0 5.412659 -3.125000 -5.412659 3.125000
+ S 0 0 -5.412659 3.125000 -5.953925 3.437500
+#130/310
+ S 0 0 5.266556 -4.419165 4.787778 -4.017423
+ S 16777215 0 4.787778 -4.017423 -4.787778 4.017423
+ S 0 0 -4.787778 4.017423 -5.266556 4.419165
+#140/320
+ S 0 0 4.419165 -5.266556 4.017423 -4.787778
+ S 16777215 0 4.017423 -4.787778 -4.017423 4.787778
+ S 0 0 -4.017423 4.787778 -4.419165 5.266556
+#150/330
+ S 0 0 3.437500 -5.953925 3.125000 -5.412659
+ S 16777215 0 3.125000 -5.412659 -3.125000 5.412659
+ S 0 0 -3.125000 5.412659 -3.437500 5.953925
+#160/340
+ S 0 0 2.351388 -6.460387 2.137626 -5.873079
+ S 16777215 0 2.137626 -5.873079 -2.137626 5.873079
+ S 0 0 -2.137626 5.873079 -2.351388 6.460387
+#170/350
+ S 0 0 1.193831 -6.770553 1.085301 -6.155048
+ S 16777215 0 1.085301 -6.155048 -1.085301 6.155048
+ S 0 0 -1.085301 6.155048 -1.193831 6.770553
+
+ A 11579568 0.053333 6.875000 0.000000 0.000000 0.000000 360.000000
+ A 11579568 0.053333 6.250000 0.000000 0.000000 0.000000 360.000000
+ G 11579568 0.000000 0.053333 0.000000 0.000000 0
+ END$SEGS
+
+TURNOUT HO "Walthers Transfer Table 933-2968" 512
+# TT was designed with 2.1875" Bridge position spacing table has 48 programmable positions
+ P "P1" 1
+ P "P2" 2
+ P "P3" 3
+ P "P4" 4
+ P "P5" 5
+ E 0.000000 4.375000 270.000000
+ E 14.812500 4.375000 90.000000
+ E 0.000000 0.000000 270.000000
+ E 0.000000 2.187500 270.000000
+ E 14.812500 2.187500 90.000000
+ E 14.812500 0.000000 90.000000
+ E 14.812500 -2.187500 90.000000
+ E 14.812500 -4.375000 90.000000
+ E 0.000006 -4.375000 270.000000
+ E 0.000006 -2.187500 270.000000
+ S 0 0.000000 0.000006 -4.375500 14.812506 -4.375480
+ S 16777215 0.000000 0.000006 -2.188000 14.812506 -2.187980
+ S 16777215 0.000000 0.000000 0.000000 14.812500 0.000020
+ S 16777215 0.000000 -0.000006 2.188000 14.812494 2.188020
+ S 16777215 0.000000 -0.000012 4.376000 14.812488 4.376020
+ F3 14803425 0.000000 4
+ 4.000000 -5.875000 0
+ 7.000000 -5.875000 0
+ 7.000000 -7.000000 0
+ 4.000000 -7.000000 0
+ L3 0 0.083333 -0.562494 -7.562500 0 -0.562494 6.812500 0
+ L3 0 0.083333 15.375006 -7.562500 0 15.375006 6.812500 0
+ L3 0 0.083333 -0.562494 -7.563000 0 15.375006 -7.563000 0
+ L3 0 0.083333 -0.562494 6.812500 0 15.375006 6.812500 0
+ L3 0 0.083333 0.000006 -7.313000 0 0.000006 6.562000 0
+ L3 0 0.083333 14.812506 -7.313000 0 14.812506 6.562000 0
+ L3 0 0.083333 0.000006 -7.313000 0 14.813006 -7.313000 0
+ L3 0 0.083333 0.000006 6.562500 0 14.812506 6.562520 0
+ L3 0 0.083333 0.000006 -5.875500 0 14.812506 -5.875500 0
+ L3 0 0.083333 0.000006 -2.875500 0 14.812506 -2.875500 0
+ L3 0 0.083333 4.000006 -5.875500 0 4.000003 -7.063000 0
+ L3 0 0.083333 4.000006 -7.062500 0 8.000006 -7.062500 0
+ L3 0 0.083333 7.999999 -7.063000 0 8.000002 -5.875500 0
+ L3 0 0.083333 7.000006 -7.062500 0 7.000006 -5.875500 0
+ L3 0 0.083333 4.000006 -6.469250 0 7.000006 -6.469250 0
+ END$SEGS
+
diff --git a/app/lib/params/HO-Walthers DCC Code 100.xtp b/app/lib/params/HO-Walthers DCC Code 100.xtp
index f885e9e..0770c25 100644
--- a/app/lib/params/HO-Walthers DCC Code 100.xtp
+++ b/app/lib/params/HO-Walthers DCC Code 100.xtp
@@ -1,229 +1,68 @@
-CONTENTS Walthers HO DCC Code 100 TUrnouts
-
-
-SUBCONTENTS Walthers HO DCC Code 100 - Turnouts
-TURNOUT HO "Walthers DCC #4 Left Hand Turnout 948-10013"
- U "Regular Turnout" "" "Walthers" "#4 Left Hand Turnout" "948-10013" "#4 Right Hand Turnout" "948-10014" 8.751969 14.036137 1.401574 8.751969 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 8.751969 0.000000 90.000000
- E 8.751969 1.401574 75.963863
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 8.751969 0.000000
- C 0 0.000000 -20.275660 0.649600 20.275660 165.963863 14.036137
- S 0 0.000000 5.567133 0.605371 8.751969 1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #4 Right Hand Turnout 948-10014"
- U "Regular Turnout" "" "Walthers" "#4 Left Hand Turnout" "948-10013" "#4 Right Hand Turnout" "948-10014" 8.751969 14.036137 1.401574 8.751969 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 8.751969 0.000000 90.000000
- E 8.751969 -1.401574 104.036137
- S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
- S 0 0.000000 0.649600 -0.000000 8.751969 0.000000
- C 0 0.000000 20.275660 0.649600 -20.275660 0.000000 14.036137
- S 0 0.000000 5.567133 -0.605371 8.751969 -1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #5 Left Hand Turnout 948-10015"
- U "Regular Turnout" "" "Walthers" "#5 Left Hand Turnout" "948-10015" "#5 Right Hand Turnout" "948-10016" 10.031496 11.323340 1.401574 10.031496 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 10.031496 0.000000 90.000000
- E 10.031496 1.401574 78.676660
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 10.031496 0.000000
- C 0 0.000000 -24.032676 0.649600 24.032676 168.676660 11.323340
- S 0 0.000000 5.368310 0.467802 10.031496 1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #5 Right Hand Turnout 948-10016"
- U "Regular Turnout" "" "Walthers" "#5 Left Hand Turnout" "948-10015" "#5 Right Hand Turnout" "948-10016" 10.031496 11.323340 1.401574 10.031496 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 10.031496 0.000000 90.000000
- E 10.031496 -1.401574 101.323340
- S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
- S 0 0.000000 0.649600 -0.000000 10.031496 0.000000
- C 0 0.000000 24.032676 0.649600 -24.032676 0.000000 11.323340
- S 0 0.000000 5.368310 -0.467802 10.031496 -1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #6 Left Hand Turnout 948-10017"
- U "Regular Turnout" "" "Walthers" "#6 Left Hand Turnout" "948-10017" "#6 Right Hand Turnout" "948-10018" 11.311204 9.462340 1.401574 11.311204 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 11.311204 0.000000 90.000000
- E 11.311204 1.401574 80.537660
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 11.311204 0.000000
- C 0 0.000000 -27.212458 0.649600 27.212458 170.537660 9.462340
- S 0 0.000000 5.123309 0.370256 11.311204 1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #6 Right Hand Turnout 948-10018"
- U "Regular Turnout" "" "Walthers" "#6 Left Hand Turnout" "948-10017" "#6 Right Hand Turnout" "948-10018" 11.311204 9.462340 1.401574 11.311204 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 11.311204 0.000000 90.000000
- E 11.311204 -1.401574 99.462340
- S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
- S 0 0.000000 0.649600 -0.000000 11.311204 0.000000
- C 0 0.000000 27.212458 0.649600 -27.212458 0.000000 9.462340
- S 0 0.000000 5.123309 -0.370256 11.311204 -1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #8 Left Hand Turnout 948-10019"
- U "Regular Turnout" "" "Walthers" "#8 Left Hand Turnout" "948-10019" "#8 Right Hand Turnout" "948-10020" 13.862205 7.125015 1.401574 13.862205 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 13.862205 0.000000 90.000000
- E 13.862205 1.401574 82.874985
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 13.862205 0.000000
- C 0 0.000000 -32.124696 0.649600 32.124696 172.874985 7.125015
- S 0 0.000000 4.634177 0.248071 13.862205 1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #8 Right Hand Turnout 948-10020"
- U "Regular Turnout" "" "Walthers" "#8 Left Hand Turnout" "948-10019" "#8 Right Hand Turnout" "948-10020" 13.862205 7.125015 1.401574 13.862205 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 13.862205 0.000000 90.000000
- E 13.862205 -1.401574 97.125015
- S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
- S 0 0.000000 0.649600 -0.000000 13.862205 0.000000
- C 0 0.000000 32.124696 0.649600 -32.124696 0.000000 7.125015
- S 0 0.000000 4.634177 -0.248071 13.862205 -1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #10 Left Hand Turnout 948-10021"
- U "Regular Turnout" "" "Walthers DCC" "#10 Left Hand Turnout" "948-10021" "#10 Right Hand Turnout" "948-10022" 16.760699 5.617940 1.401574 16.760699 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 16.760699 0.000000 90.000000
- E 16.760699 1.401574 84.382060
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 16.760699 0.000000
- C 0 0.000000 -37.963464 0.649600 37.963464 174.382060 5.617940
- S 0 0.000000 4.366015 0.182346 16.760699 1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #10 Right Hand Turnout 948-83022"
- U "Regular Turnout" "" "Walthers DCC" "#10 Left Hand Turnout" "948-10021" "#10 Right Hand Turnout" "948-10022" 16.760699 5.617940 1.401574 16.760699 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 16.760699 0.000000 90.000000
- E 16.760699 -1.401574 95.617940
- S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
- S 0 0.000000 0.649600 -0.000000 16.760699 0.000000
- C 0 0.000000 37.963464 0.649600 -37.963464 0.000000 5.617940
- S 0 0.000000 4.366015 -0.182346 16.760699 -1.401574
- END$SEGS
-
-SUBCONTENTS Walthers HO DCC Code 100 - Double Crossover
-TURNOUT HO "Walthers DCC #6 Double Crossover 948-10051"
- U "Double Crossover" "" "Walthers" "#6 Double Crossover" "948-10051" 18.765354 2.000000 0.000000 0.041667 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
- E 0.000000 0.000000 270.000000
- E 18.765354 0.000000 90.000000
- E 0.000000 2.000000 270.000000
- E 18.765354 2.000000 90.000000
- S 0 0.000000 0.000000 0.000000 1.186156 0.000000
- S 0 0.000000 1.186156 0.000000 17.579198 0.000000
- S 0 0.000000 17.579198 0.000000 18.765354 0.000000
- S 0 0.000000 0.000000 2.000000 1.186156 2.000000
- S 0 0.000000 1.186156 2.000000 17.579198 2.000000
- S 0 0.000000 17.579198 2.000000 18.765354 2.000000
- C 0 0.000000 -33.880487 1.186156 33.880487 167.100883 12.899117
- S 0 0.000000 8.749470 0.854986 10.015884 1.145014
- C 0 0.000000 33.880487 17.579198 -31.880487 347.100883 12.899117
- C 0 0.000000 33.880487 1.186156 -31.880487 0.000000 12.899117
- S 0 0.000000 8.749470 1.145014 10.015884 0.854986
- C 0 0.000000 -33.880487 17.579198 33.880487 180.000000 12.899117
- END$SEGS
-
-SUBCONTENTS Walthers HO DCC Code 100 - Curved Turnouts
-TURNOUT HO "Walthers DCC 20-24 Left Hand Curve Turnout 849-10061"
- U "Curved Turnout" "" "Walthers" "20-24 Left Hand Curve Turnout" "849-10061" "20-24 Right Hand Curve Turnout" "849-10062" 13.373046 40.356540 5.606496 35.896607 4.558036 14.071585 0.000000 0.041667 0
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 14.071585 4.558036 54.103393
- E 13.373046 5.606496 49.643460
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- C 0 0.000000 -16.668677 0.649600 16.668677 139.643460 40.356540
- S 0 0.000000 11.443270 3.966650 13.373046 5.606496
- C 0 0.000000 -21.993891 0.649805 21.993891 144.103393 35.897141
- S 0 0.000000 13.545359 4.177160 14.071585 4.558036
- END$SEGS
-TURNOUT HO "Walthers DCC 20-24 Right Hand Curve Turnout 849-10062"
- U "Curved Turnout" "" "Walthers" "20-24 Left Hand Curve Turnout" "849-10061" "20-24 Right Hand Curve Turnout" "849-10062" 13.373046 40.356540 5.606496 35.896607 4.558036 14.071585 0.000000 0.041667 0
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 14.071585 -4.558036 125.896607
- E 13.373046 -5.606496 130.356540
- S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
- C 0 0.000000 16.668677 0.649600 -16.668677 0.000000 40.356540
- S 0 0.000000 11.443270 -3.966650 13.373046 -5.606496
- C 0 0.000000 21.993891 0.649805 -21.993891 359.999466 35.897141
- S 0 0.000000 13.545359 -4.177160 14.071585 -4.558036
- END$SEGS
-TURNOUT HO "Walthers DCC 24-28 Left Hand Curve Turnout 849-10063"
- U "Curved Turnout" "" "Walthers" "24-28 Left Hand Curve Turnout" "849-10063" "24-28 Right Hand Curve Turnout" "849-10064" 14.074826 38.931215 5.262124 31.632207 4.159901 14.685007 0.000000 0.041667 0
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 14.685007 4.159901 58.367793
- E 14.074826 5.262124 51.068785
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- C 0 0.000000 -19.553551 0.649600 19.553551 141.068785 38.931215
- S 0 0.000000 12.936796 4.342826 14.074826 5.262124
- C 0 0.000000 -25.706793 0.649600 25.706793 148.367793 31.632207
- S 0 0.000000 14.131903 3.819200 14.685007 4.159901
- END$SEGS
-TURNOUT HO "Walthers DCC 24-28 Right Hand Curve Turnout 849-10064"
- U "Curved Turnout" "" "Walthers" "24-28 Left Hand Curve Turnout" "849-10063" "24-28 Right Hand Curve Turnout" "849-10064" 14.074826 38.931215 5.262124 31.632207 4.159901 14.685007 0.000000 0.041667 0
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 14.685007 -4.159901 121.632207
- E 14.074826 -5.262124 128.931215
- S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
- C 0 0.000000 19.553551 0.649600 -19.553551 0.000000 38.931215
- S 0 0.000000 12.936796 -4.342826 14.074826 -5.262124
- C 0 0.000000 25.706793 0.649600 -25.706793 0.000000 31.632207
- S 0 0.000000 14.131903 -3.819200 14.685007 -4.159901
- END$SEGS
-
-SUBCONTENTS Walthers HO DCC Code 100 - Wyes
-TURNOUT HO "Walthers DCC #3 Wye Turnout 948-10033"
- U "Wye Turnout" "" "Walthers DCC" "#3 Wye Turnout" "948-10033" 9.775606 9.462340 1.145669 1.145669 9.462340 9.775606 0.000000 0.041667 0
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 9.775606 1.145669 80.537660
- E 9.775606 -1.145669 99.462340
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- C 0 0.000000 -27.210392 0.649600 27.210392 170.537660 9.462340
- S 0 0.000000 5.122969 0.370228 9.775606 1.145669
- C 0 0.000000 27.210392 0.649600 -27.210392 0.000000 9.462340
- S 0 0.000000 5.122969 -0.370228 9.775606 -1.145669
- END$SEGS
-TURNOUT HO "Walthers DCC #4 Wye Turnout 948-10034"
- U "Wye Turnout" "" "Walthers DCC" "#4 Wye Turnout" "948-10034" 12.838584 7.125015 1.127363 1.127363 7.125015 12.838584 0.000000 0.041667 0
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 12.838584 1.127363 82.874985
- E 12.838584 -1.127363 97.125015
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- C 0 0.000000 -50.918688 0.649600 50.918688 172.874985 7.125015
- S 0 0.000000 6.965285 0.393200 12.838584 1.127363
- C 0 0.000000 50.918688 0.649600 -50.918688 0.000000 7.125015
- S 0 0.000000 6.965285 -0.393200 12.838584 -1.127363
- END$SEGS
+CONTENTS Walthers HO DCC Code 100 Turnouts
+SUBCONTENTS Walthers HO DCC Code 100 - Turnouts
+TURNOUT HO "Walthers DCC #4 Left Hand Turnout 948-10013"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.751969 0.000000 90.000000
+ E 8.751969 1.401574 75.963863
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 8.751969 0.000000
+ C 0 0.000000 -20.275660 0.649600 20.275660 165.963863 14.036137
+ S 0 0.000000 5.567133 0.605371 8.751969 1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #4 Right Hand Turnout 948-10014"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.751969 0.000000 90.000000
+ E 8.751969 -1.401574 104.036137
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 8.751969 0.000000
+ C 0 0.000000 20.275660 0.649600 -20.275660 0.000000 14.036137
+ S 0 0.000000 5.567133 -0.605371 8.751969 -1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #5 Left Hand Turnout 948-10015"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 10.031496 0.000000 90.000000
+ E 10.031496 1.401574 78.676660
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 10.031496 0.000000
+ C 0 0.000000 -24.032676 0.649600 24.032676 168.676660 11.323340
+ S 0 0.000000 5.368310 0.467802 10.031496 1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #5 Right Hand Turnout 948-10016"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 10.031496 0.000000 90.000000
+ E 10.031496 -1.401574 101.323340
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 10.031496 0.000000
+ C 0 0.000000 24.032676 0.649600 -24.032676 0.000000 11.323340
+ S 0 0.000000 5.368310 -0.467802 10.031496 -1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #6 Left Hand Turnout 948-10017"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.311204 0.000000 90.000000
+ E 11.311204 1.401574 80.537660
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 11.311204 0.000000
+ C 0 0.000000 -27.212458 0.649600 27.212458 170.537660 9.462340
+ S 0 0.000000 5.123309 0.370256 11.311204 1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #6 Right Hand Turnout 948-10018"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.311204 0.000000 90.000000
+ E 11.311204 -1.401574 99.462340
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 11.311204 0.000000
+ C 0 0.000000 27.212458 0.649600 -27.212458 0.000000 9.462340
+ S 0 0.000000 5.123309 -0.370256 11.311204 -1.401574
+ END$SEGS
diff --git a/app/lib/params/HO-Walthers DCC Code 70.xtp b/app/lib/params/HO-Walthers DCC Code 70.xtp
new file mode 100644
index 0000000..d747499
--- /dev/null
+++ b/app/lib/params/HO-Walthers DCC Code 70.xtp
@@ -0,0 +1,68 @@
+CONTENTS Walthers HO DCC Code 70 Turnouts
+SUBCONTENTS Walthers HO DCC Code 70 - Turnouts
+TURNOUT HO "Walthers DCC #4 Left Hand Turnout 948-70013"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.751969 0.000000 90.000000
+ E 8.751969 1.401574 75.963863
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 8.751969 0.000000
+ C 0 0.000000 -20.275660 0.649600 20.275660 165.963863 14.036137
+ S 0 0.000000 5.567133 0.605371 8.751969 1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #4 Right Hand Turnout 948-70014"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.751969 0.000000 90.000000
+ E 8.751969 -1.401574 104.036137
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 8.751969 0.000000
+ C 0 0.000000 20.275660 0.649600 -20.275660 0.000000 14.036137
+ S 0 0.000000 5.567133 -0.605371 8.751969 -1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #5 Left Hand Turnout 948-70015"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 10.031496 0.000000 90.000000
+ E 10.031496 1.401574 78.676660
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 10.031496 0.000000
+ C 0 0.000000 -24.032676 0.649600 24.032676 168.676660 11.323340
+ S 0 0.000000 5.368310 0.467802 10.031496 1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #5 Right Hand Turnout 948-70016"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 10.031496 0.000000 90.000000
+ E 10.031496 -1.401574 101.323340
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 10.031496 0.000000
+ C 0 0.000000 24.032676 0.649600 -24.032676 0.000000 11.323340
+ S 0 0.000000 5.368310 -0.467802 10.031496 -1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #6 Left Hand Turnout 948-70017"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.311204 0.000000 90.000000
+ E 11.311204 1.401574 80.537660
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 11.311204 0.000000
+ C 0 0.000000 -27.212458 0.649600 27.212458 170.537660 9.462340
+ S 0 0.000000 5.123309 0.370256 11.311204 1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #6 Right Hand Turnout 948-70018"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.311204 0.000000 90.000000
+ E 11.311204 -1.401574 99.462340
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 11.311204 0.000000
+ C 0 0.000000 27.212458 0.649600 -27.212458 0.000000 9.462340
+ S 0 0.000000 5.123309 -0.370256 11.311204 -1.401574
+ END$SEGS
diff --git a/app/lib/params/HO-Walthers DCC Code 83.xtp b/app/lib/params/HO-Walthers DCC Code 83.xtp
index a840a29..b6fb21e 100644
--- a/app/lib/params/HO-Walthers DCC Code 83.xtp
+++ b/app/lib/params/HO-Walthers DCC Code 83.xtp
@@ -1,231 +1,267 @@
-CONTENTS Walthers HO DCC Code 83 TUrnouts
-
-
-SUBCONTENTS Walthers HO DCC Code 83 - Turnouts
-TURNOUT HO "Walthers DCC #4 Left Hand Turnout 948-83013"
- U "Regular Turnout" "" "Walthers" "#4 Left Hand Turnout" "948-83013" "#4 Right Hand Turnout" "948-83014" 8.751969 14.036137 1.401574 8.751969 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 8.751969 0.000000 90.000000
- E 8.751969 1.401574 75.963863
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 8.751969 0.000000
- C 0 0.000000 -20.275660 0.649600 20.275660 165.963863 14.036137
- S 0 0.000000 5.567133 0.605371 8.751969 1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #4 Right Hand Turnout 948-83014"
- U "Regular Turnout" "" "Walthers" "#4 Left Hand Turnout" "948-83013" "#4 Right Hand Turnout" "948-83014" 8.751969 14.036137 1.401574 8.751969 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 8.751969 0.000000 90.000000
- E 8.751969 -1.401574 104.036137
- S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
- S 0 0.000000 0.649600 -0.000000 8.751969 0.000000
- C 0 0.000000 20.275660 0.649600 -20.275660 0.000000 14.036137
- S 0 0.000000 5.567133 -0.605371 8.751969 -1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #5 Left Hand Turnout 948-83015"
- U "Regular Turnout" "" "Walthers" "#5 Left Hand Turnout" "948-83015" "#5 Right Hand Turnout" "948-83016" 10.031496 11.323340 1.401574 10.031496 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 10.031496 0.000000 90.000000
- E 10.031496 1.401574 78.676660
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 10.031496 0.000000
- C 0 0.000000 -24.032676 0.649600 24.032676 168.676660 11.323340
- S 0 0.000000 5.368310 0.467802 10.031496 1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #5 Right Hand Turnout 948-83016"
- U "Regular Turnout" "" "Walthers" "#5 Left Hand Turnout" "948-83015" "#5 Right Hand Turnout" "948-83016" 10.031496 11.323340 1.401574 10.031496 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 10.031496 0.000000 90.000000
- E 10.031496 -1.401574 101.323340
- S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
- S 0 0.000000 0.649600 -0.000000 10.031496 0.000000
- C 0 0.000000 24.032676 0.649600 -24.032676 0.000000 11.323340
- S 0 0.000000 5.368310 -0.467802 10.031496 -1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #6 Left Hand Turnout 948-83017"
- U "Regular Turnout" "" "Walthers" "#6 Left Hand Turnout" "948-83017" "#6 Right Hand Turnout" "948-83018" 11.311204 9.462340 1.401574 11.311204 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 11.311204 0.000000 90.000000
- E 11.311204 1.401574 80.537660
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 11.311204 0.000000
- C 0 0.000000 -27.212458 0.649600 27.212458 170.537660 9.462340
- S 0 0.000000 5.123309 0.370256 11.311204 1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #6 Right Hand Turnout 948-83018"
- U "Regular Turnout" "" "Walthers" "#6 Left Hand Turnout" "948-83017" "#6 Right Hand Turnout" "948-83018" 11.311204 9.462340 1.401574 11.311204 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 11.311204 0.000000 90.000000
- E 11.311204 -1.401574 99.462340
- S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
- S 0 0.000000 0.649600 -0.000000 11.311204 0.000000
- C 0 0.000000 27.212458 0.649600 -27.212458 0.000000 9.462340
- S 0 0.000000 5.123309 -0.370256 11.311204 -1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #8 Left Hand Turnout 948-83019"
- U "Regular Turnout" "" "Walthers" "#8 Left Hand Turnout" "948-83019" "#8 Right Hand Turnout" "948-83020" 13.862205 7.125015 1.401574 13.862205 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 13.862205 0.000000 90.000000
- E 13.862205 1.401574 82.874985
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 13.862205 0.000000
- C 0 0.000000 -32.124696 0.649600 32.124696 172.874985 7.125015
- S 0 0.000000 4.634177 0.248071 13.862205 1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #8 Right Hand Turnout 948-83020"
- U "Regular Turnout" "" "Walthers" "#8 Left Hand Turnout" "948-83019" "#8 Right Hand Turnout" "948-83020" 13.862205 7.125015 1.401574 13.862205 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 13.862205 0.000000 90.000000
- E 13.862205 -1.401574 97.125015
- S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
- S 0 0.000000 0.649600 -0.000000 13.862205 0.000000
- C 0 0.000000 32.124696 0.649600 -32.124696 0.000000 7.125015
- S 0 0.000000 4.634177 -0.248071 13.862205 -1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #10 Left Hand Turnout 948-83021"
- U "Regular Turnout" "" "Walthers DCC" "#10 Left Hand Turnout" "948-83021" "#10 Right Hand Turnout" "948-83022" 16.760699 5.617940 1.401574 16.760699 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 16.760699 0.000000 90.000000
- E 16.760699 1.401574 84.382060
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 16.760699 0.000000
- C 0 0.000000 -37.963464 0.649600 37.963464 174.382060 5.617940
- S 0 0.000000 4.366015 0.182346 16.760699 1.401574
- END$SEGS
-TURNOUT HO "Walthers DCC #10 Right Hand Turnout 948-83022"
- U "Regular Turnout" "" "Walthers DCC" "#10 Left Hand Turnout" "948-83021" "#10 Right Hand Turnout" "948-83022" 16.760699 5.617940 1.401574 16.760699 0.000000 0.041667 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 16.760699 0.000000 90.000000
- E 16.760699 -1.401574 95.617940
- S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
- S 0 0.000000 0.649600 -0.000000 16.760699 0.000000
- C 0 0.000000 37.963464 0.649600 -37.963464 0.000000 5.617940
- S 0 0.000000 4.366015 -0.182346 16.760699 -1.401574
- END$SEGS
-
-
-SUBCONTENTS Walthers HO DCC Code 83 - Double Crossover
-TURNOUT HO "Walthers DCC #6 Double Crossover 948-83051"
- U "Double Crossover" "" "Walthers" "#6 Double Crossover" "948-83051" 18.765354 2.000000 0.000000 0.041667 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
- E 0.000000 0.000000 270.000000
- E 18.765354 0.000000 90.000000
- E 0.000000 2.000000 270.000000
- E 18.765354 2.000000 90.000000
- S 0 0.000000 0.000000 0.000000 1.186156 0.000000
- S 0 0.000000 1.186156 0.000000 17.579198 0.000000
- S 0 0.000000 17.579198 0.000000 18.765354 0.000000
- S 0 0.000000 0.000000 2.000000 1.186156 2.000000
- S 0 0.000000 1.186156 2.000000 17.579198 2.000000
- S 0 0.000000 17.579198 2.000000 18.765354 2.000000
- C 0 0.000000 -33.880487 1.186156 33.880487 167.100883 12.899117
- S 0 0.000000 8.749470 0.854986 10.015884 1.145014
- C 0 0.000000 33.880487 17.579198 -31.880487 347.100883 12.899117
- C 0 0.000000 33.880487 1.186156 -31.880487 0.000000 12.899117
- S 0 0.000000 8.749470 1.145014 10.015884 0.854986
- C 0 0.000000 -33.880487 17.579198 33.880487 180.000000 12.899117
- END$SEGS
-
-SUBCONTENTS Walthers HO DCC Code 83 - Curved Turnouts
-TURNOUT HO "Walthers DCC 20-24 Left Hand Curve Turnout 849-83061"
- U "Curved Turnout" "" "Walthers" "20-24 Left Hand Curve Turnout" "849-83061" "20-24 Right Hand Curve Turnout" "849-83062" 13.373046 40.356540 5.606496 35.896607 4.558036 14.071585 0.000000 0.041667 0
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 14.071585 4.558036 54.103393
- E 13.373046 5.606496 49.643460
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- C 0 0.000000 -16.668677 0.649600 16.668677 139.643460 40.356540
- S 0 0.000000 11.443270 3.966650 13.373046 5.606496
- C 0 0.000000 -21.993891 0.649805 21.993891 144.103393 35.897141
- S 0 0.000000 13.545359 4.177160 14.071585 4.558036
- END$SEGS
-TURNOUT HO "Walthers DCC 20-24 Right Hand Curve Turnout 849-83062"
- U "Curved Turnout" "" "Walthers" "20-24 Left Hand Curve Turnout" "849-83061" "20-24 Right Hand Curve Turnout" "849-83062" 13.373046 40.356540 5.606496 35.896607 4.558036 14.071585 0.000000 0.041667 0
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 14.071585 -4.558036 125.896607
- E 13.373046 -5.606496 130.356540
- S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
- C 0 0.000000 16.668677 0.649600 -16.668677 0.000000 40.356540
- S 0 0.000000 11.443270 -3.966650 13.373046 -5.606496
- C 0 0.000000 21.993891 0.649805 -21.993891 359.999466 35.897141
- S 0 0.000000 13.545359 -4.177160 14.071585 -4.558036
- END$SEGS
-TURNOUT HO "Walthers DCC 24-28 Left Hand Curve Turnout 849-83063"
- U "Curved Turnout" "" "Walthers" "24-28 Left Hand Curve Turnout" "849-83063" "24-28 Right Hand Curve Turnout" "849-83064" 14.074826 38.931215 5.262124 31.632207 4.159901 14.685007 0.000000 0.041667 0
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 14.685007 4.159901 58.367793
- E 14.074826 5.262124 51.068785
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- C 0 0.000000 -19.553551 0.649600 19.553551 141.068785 38.931215
- S 0 0.000000 12.936796 4.342826 14.074826 5.262124
- C 0 0.000000 -25.706793 0.649600 25.706793 148.367793 31.632207
- S 0 0.000000 14.131903 3.819200 14.685007 4.159901
- END$SEGS
-TURNOUT HO "Walthers DCC 24-28 Right Hand Curve Turnout 849-83064"
- U "Curved Turnout" "" "Walthers" "24-28 Left Hand Curve Turnout" "849-83063" "24-28 Right Hand Curve Turnout" "849-83064" 14.074826 38.931215 5.262124 31.632207 4.159901 14.685007 0.000000 0.041667 0
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 14.685007 -4.159901 121.632207
- E 14.074826 -5.262124 128.931215
- S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
- C 0 0.000000 19.553551 0.649600 -19.553551 0.000000 38.931215
- S 0 0.000000 12.936796 -4.342826 14.074826 -5.262124
- C 0 0.000000 25.706793 0.649600 -25.706793 0.000000 31.632207
- S 0 0.000000 14.131903 -3.819200 14.685007 -4.159901
- END$SEGS
-
-
-SUBCONTENTS Walthers HO DCC Code 83 - Wyes
-TURNOUT HO "Walthers DCC #3 Wye Turnout 948-83033"
- U "Wye Turnout" "" "Walthers DCC" "#3 Wye Turnout" "948-83033" 9.775606 9.462340 1.145669 1.145669 9.462340 9.775606 0.000000 0.041667 0
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 9.775606 1.145669 80.537660
- E 9.775606 -1.145669 99.462340
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- C 0 0.000000 -27.210392 0.649600 27.210392 170.537660 9.462340
- S 0 0.000000 5.122969 0.370228 9.775606 1.145669
- C 0 0.000000 27.210392 0.649600 -27.210392 0.000000 9.462340
- S 0 0.000000 5.122969 -0.370228 9.775606 -1.145669
- END$SEGS
-TURNOUT HO "Walthers DCC #4 Wye Turnout 948-83034"
- U "Wye Turnout" "" "Walthers DCC" "#4 Wye Turnout" "948-83034" 12.838584 7.125015 1.127363 1.127363 7.125015 12.838584 0.000000 0.041667 0
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 12.838584 1.127363 82.874985
- E 12.838584 -1.127363 97.125015
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- C 0 0.000000 -50.918688 0.649600 50.918688 172.874985 7.125015
- S 0 0.000000 6.965285 0.393200 12.838584 1.127363
- C 0 0.000000 50.918688 0.649600 -50.918688 0.000000 7.125015
- S 0 0.000000 6.965285 -0.393200 12.838584 -1.127363
- END$SEGS
+CONTENTS Walthers HO DCC Code 83 TUrnouts
+#948-83091 Adjustable track piece 8.875-9.375
+SUBCONTENTS Walthers HO DCC Code 83 - Turnouts
+TURNOUT HO "Walthers DCC #4 Left Hand Turnout 948-83013"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.751969 0.000000 90.000000
+ E 8.751969 1.401574 75.963863
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 8.751969 0.000000
+ C 0 0.000000 -20.275660 0.649600 20.275660 165.963863 14.036137
+ S 0 0.000000 5.567133 0.605371 8.751969 1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #4 Right Hand Turnout 948-83014"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.751969 0.000000 90.000000
+ E 8.751969 -1.401574 104.036137
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 8.751969 0.000000
+ C 0 0.000000 20.275660 0.649600 -20.275660 0.000000 14.036137
+ S 0 0.000000 5.567133 -0.605371 8.751969 -1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #5 Left Hand Turnout 948-83015"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 10.031496 0.000000 90.000000
+ E 10.031496 1.401574 78.676660
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 10.031496 0.000000
+ C 0 0.000000 -24.032676 0.649600 24.032676 168.676660 11.323340
+ S 0 0.000000 5.368310 0.467802 10.031496 1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #5 Right Hand Turnout 948-83016"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 10.031496 0.000000 90.000000
+ E 10.031496 -1.401574 101.323340
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 10.031496 0.000000
+ C 0 0.000000 24.032676 0.649600 -24.032676 0.000000 11.323340
+ S 0 0.000000 5.368310 -0.467802 10.031496 -1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #6 Left Hand Turnout 948-83017"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.311204 0.000000 90.000000
+ E 11.311204 1.401574 80.537660
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 11.311204 0.000000
+ C 0 0.000000 -27.212458 0.649600 27.212458 170.537660 9.462340
+ S 0 0.000000 5.123309 0.370256 11.311204 1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #6 Right Hand Turnout 948-83018"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.311204 0.000000 90.000000
+ E 11.311204 -1.401574 99.462340
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 11.311204 0.000000
+ C 0 0.000000 27.212458 0.649600 -27.212458 0.000000 9.462340
+ S 0 0.000000 5.123309 -0.370256 11.311204 -1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #8 Left Hand Turnout 948-83019"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 13.862205 0.000000 90.000000
+ E 13.862205 1.401574 82.874985
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 13.862205 0.000000
+ C 0 0.000000 -32.124696 0.649600 32.124696 172.874985 7.125015
+ S 0 0.000000 4.634177 0.248071 13.862205 1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #8 Right Hand Turnout 948-83020"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 13.862205 0.000000 90.000000
+ E 13.862205 -1.401574 97.125015
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 13.862205 0.000000
+ C 0 0.000000 32.124696 0.649600 -32.124696 0.000000 7.125015
+ S 0 0.000000 4.634177 -0.248071 13.862205 -1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #10 Left Hand Turnout 948-83021"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 16.760699 0.000000 90.000000
+ E 16.760699 1.401574 84.382060
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 16.760699 0.000000
+ C 0 0.000000 -37.963464 0.649600 37.963464 174.382060 5.617940
+ S 0 0.000000 4.366015 0.182346 16.760699 1.401574
+ END$SEGS
+TURNOUT HO "Walthers DCC #10 Right Hand Turnout 948-83022"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 16.760699 0.000000 90.000000
+ E 16.760699 -1.401574 95.617940
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 16.760699 0.000000
+ C 0 0.000000 37.963464 0.649600 -37.963464 0.000000 5.617940
+ S 0 0.000000 4.366015 -0.182346 16.760699 -1.401574
+ END$SEGS
+
+
+SUBCONTENTS Walthers HO DCC Code 83 - Crossovers
+TURNOUT HO "Walthers DCC #6 Double Crossover 948-83051"
+ P "Normal" 1 2 3 0 4 5 6
+ P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
+ E 0.000000 0.000000 270.000000
+ E 18.765354 0.000000 90.000000
+ E 0.000000 2.000000 270.000000
+ E 18.765354 2.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.186156 0.000000
+ S 0 0.000000 1.186156 0.000000 17.579198 0.000000
+ S 0 0.000000 17.579198 0.000000 18.765354 0.000000
+ S 0 0.000000 0.000000 2.000000 1.186156 2.000000
+ S 0 0.000000 1.186156 2.000000 17.579198 2.000000
+ S 0 0.000000 17.579198 2.000000 18.765354 2.000000
+ C 0 0.000000 -33.880487 1.186156 33.880487 167.100883 12.899117
+ S 0 0.000000 8.749470 0.854986 10.015884 1.145014
+ C 0 0.000000 33.880487 17.579198 -31.880487 347.100883 12.899117
+ C 0 0.000000 33.880487 1.186156 -31.880487 0.000000 12.899117
+ S 0 0.000000 8.749470 1.145014 10.015884 0.854986
+ C 0 0.000000 -33.880487 17.579198 33.880487 180.000000 12.899117
+ END$SEGS
+TURNOUT HO "Walthers DCC #6 Left Hand Crossover 948-83075"
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 1 5 6 7 4
+ E 0.000000 0.000000 270.000000
+ E 18.717717 0.000000 90.000000
+ E 0.000000 2.000000 270.000000
+ E 18.717717 2.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.185855 0.000000
+ S 0 0.000000 1.185855 0.000000 18.717717 0.000000
+ S 0 0.000000 0.000000 2.000000 17.531862 2.000000
+ S 0 0.000000 17.531862 2.000000 18.717717 2.000000
+ C 0 0.000000 -33.688005 1.185855 33.688005 167.066790 12.933210
+ S 0 0.000000 8.725738 0.854610 9.991979 1.145390
+ C 0 0.000000 33.688005 17.531862 -31.688005 347.066790 12.933210
+ END$SEGS
+TURNOUT HO "Walthers DCC #6 Right Hand Crossover 948-83076"
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 3 5 6 7 2
+ E 0.000000 0.000000 270.000000
+ E 18.717717 0.000000 90.000000
+ E 0.000000 2.000000 270.000000
+ E 18.717717 2.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 17.531862 0.000000
+ S 0 0.000000 17.531862 0.000000 18.717717 0.000000
+ S 0 0.000000 0.000000 2.000000 1.185855 2.000000
+ S 0 0.000000 1.185855 2.000000 18.717717 2.000000
+ C 0 0.000000 33.688005 1.185855 -31.688005 0.000000 12.933210
+ S 0 0.000000 8.725738 1.145390 9.991979 0.854610
+ C 0 0.000000 -33.688005 17.531862 33.688005 180.000000 12.933210
+ END$SEGS
+
+SUBCONTENTS Walthers HO DCC Code 83 - Curved Turnouts
+TURNOUT HO "Walthers DCC 20-24 Left Hand Curve Turnout 849-83061"
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 14.071585 4.558036 54.103393
+ E 13.373046 5.606496 49.643460
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ C 0 0.000000 -16.668677 0.649600 16.668677 139.643460 40.356540
+ S 0 0.000000 11.443270 3.966650 13.373046 5.606496
+ C 0 0.000000 -21.993891 0.649805 21.993891 144.103393 35.897141
+ S 0 0.000000 13.545359 4.177160 14.071585 4.558036
+ END$SEGS
+TURNOUT HO "Walthers DCC 20-24 Right Hand Curve Turnout 849-83062"
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 14.071585 -4.558036 125.896607
+ E 13.373046 -5.606496 130.356540
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ C 0 0.000000 16.668677 0.649600 -16.668677 0.000000 40.356540
+ S 0 0.000000 11.443270 -3.966650 13.373046 -5.606496
+ C 0 0.000000 21.993891 0.649805 -21.993891 359.999466 35.897141
+ S 0 0.000000 13.545359 -4.177160 14.071585 -4.558036
+ END$SEGS
+TURNOUT HO "Walthers DCC 24-28 Left Hand Curve Turnout 849-83063"
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 14.685007 4.159901 58.367793
+ E 14.074826 5.262124 51.068785
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ C 0 0.000000 -19.553551 0.649600 19.553551 141.068785 38.931215
+ S 0 0.000000 12.936796 4.342826 14.074826 5.262124
+ C 0 0.000000 -25.706793 0.649600 25.706793 148.367793 31.632207
+ S 0 0.000000 14.131903 3.819200 14.685007 4.159901
+ END$SEGS
+TURNOUT HO "Walthers DCC 24-28 Right Hand Curve Turnout 849-83064"
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 14.685007 -4.159901 121.632207
+ E 14.074826 -5.262124 128.931215
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ C 0 0.000000 19.553551 0.649600 -19.553551 0.000000 38.931215
+ S 0 0.000000 12.936796 -4.342826 14.074826 -5.262124
+ C 0 0.000000 25.706793 0.649600 -25.706793 0.000000 31.632207
+ S 0 0.000000 14.131903 -3.819200 14.685007 -4.159901
+ END$SEGS
+TURNOUT HO "Walthers DCC 24-36 Left Hand Curve Turnout 849-83067"
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 10.152836 1.461737 73.600000
+ E 9.841751 2.663200 61.000000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ C 0 0.000000 -16.965633 0.649600 16.965633 151.000000 29.000000
+ S 0 0.000000 8.874702 2.127156 9.841751 2.663200
+ C 0 0.000000 -31.419338 0.658679 31.419337 163.599992 16.416566
+ S 0 0.000000 9.529666 1.278328 10.152836 1.461737
+ END$SEGS
+TURNOUT HO "Walthers DCC 24-36 Right Hand Curve Turnout 849-83068"
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 10.152836 -1.461737 106.400000
+ E 9.841751 -2.663200 119.000000
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ C 0 0.000000 16.965633 0.649600 -16.965633 0.000000 29.000000
+ S 0 0.000000 8.874702 -2.127156 9.841751 -2.663200
+ C 0 0.000000 31.419338 0.658679 -31.419337 359.983443 16.416566
+ S 0 0.000000 9.529666 -1.278328 10.152836 -1.461737
+ END$SEGS
+
+
+SUBCONTENTS Walthers HO DCC Code 83 - Wyes
+TURNOUT HO "Walthers DCC #3 Wye Turnout 948-83033"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 7.854936 0.857152 80.537678
+ E 7.854936 -0.857152 99.462322
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ C 0 0.000000 -24.919779 0.649600 24.919779 170.537678 9.462322
+ S 0 0.000000 4.746386 0.339060 7.854936 0.857152
+ C 0 0.000000 24.919779 0.649600 -24.919779 0.000000 9.462322
+ S 0 0.000000 4.746386 -0.339060 7.854936 -0.857152
+ END$SEGS
+TURNOUT HO "Walthers DCC #4 Wye Turnout 948-83034"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 9.743791 0.762535 82.874984
+ E 9.743791 -0.762535 97.125016
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ C 0 0.000000 -48.088968 0.649600 48.088968 172.874984 7.125016
+ S 0 0.000000 6.614302 0.371349 9.743791 0.762535
+ C 0 0.000000 48.088968 0.649600 -48.088968 0.000000 7.125016
+ S 0 0.000000 6.614302 -0.371349 9.743791 -0.762535
+ END$SEGS
diff --git a/app/lib/params/HO-Walthers-Power-Loc.xtp b/app/lib/params/HO-Walthers-Power-Loc.xtp
new file mode 100644
index 0000000..30f1543
--- /dev/null
+++ b/app/lib/params/HO-Walthers-Power-Loc.xtp
@@ -0,0 +1,145 @@
+CONTENTS Walthers HO Power-Loc Track Components
+#Walthers Updated/Revised Life-Like Power-Loc Track
+#
+#Train set tracks come in two confiruations
+#Train Set A - (12)18R Curves, (1)9in Pwr track and (1)9in Straight [38in x 47in Oval]
+#Train Set B - (12)18R Curves, (1)9in Pwr track and (3)9in Straights [38in x 56in Oval]
+#
+#Figure 8 Add-on - (1) 90d Diamond (3)18R Curves, (8)3in Straights and (2)9in Straights
+#Expander Add-on - (4)18R Curves, (2)3in Adapters, (2)Bumpers, (4)9in Straights, (1) RH Turnout and (1) LH Turnout
+
+SUBCONTENTS Walthers HO Power-Loc Track - Straight Track
+TURNOUT HO "Walthers HO Power-Loc Track Straight 3in 931-1362F"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.000000 0.000000
+ L3 11579568 0.053333 0.000000 0.984375 0 3.000000 0.984375 0
+ L3 11579568 0.053333 0.000000 -0.984375 0 3.000000 -0.984375 0
+ END$SEGS
+TURNOUT HO "Walthers HO Power-Loc Track Straight 9in 931-1351"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ L3 11579568 0.053333 0.000000 0.984375 0 9.000000 0.984375 0
+ L3 11579568 0.053333 0.000000 -0.984375 0 9.000000 -0.984375 0
+ END$SEGS
+
+
+
+SUBCONTENTS Walthers HO Power-Loc Track - Curve Track
+TURNOUT HO "Walthers HO Power-Loc Track Curved 18in 30d 931-1352"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 -2.411543 120.000000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 30.000000
+ A3 11579568 0.053333 18.984375 0.000000 -18.000000 0 0.000000 30.000000
+ A3 11579568 0.053333 17.015625 0.000000 -18.000000 0 0.000000 30.000000
+ END$SEGS
+
+
+
+SUBCONTENTS Walthers HO Power-Loc Track - Track Turnouts
+TURNOUT HO "Walthers HO Power-Loc Track Left Turnout 931-1350LT"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 9.000000 2.411543 60.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ C 0 0 -18.000000 0.000000 18.000000 150.000000 30.000000
+ A3 11579568 0.053333 17.015625 0.000000 18.000000 0 150.000000 30.000000
+ A3 11579568 0.053333 18.984375 0.000000 18.000000 0 150.000000 3.700000
+ L3 11579568 0.053333 8.500000 0.984375 0 9.000000 0.984375 0
+ L3 11579568 0.053333 0.000000 -0.984375 0 9.000000 -0.984375 0
+ END$SEGS
+TURNOUT HO "Walthers HO Power-Loc Track Right Turnout 931-1350RT"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 9.000000 -2.411543 120.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 30.000000
+ A3 11579568 0.053333 17.015625 0.000000 -18.000000 0 0.000000 30.000000
+ A3 11579568 0.053333 18.984375 0.000000 -18.000000 0 26.200000 3.800000
+ L3 11579568 0.053333 8.250000 -0.984375 0 9.000000 -0.984375 0
+ L3 11579568 0.053333 0.000000 0.984375 0 9.000000 0.984375 0
+ END$SEGS
+
+
+
+SUBCONTENTS Walthers HO Power-Loc Track - Misc Track
+TURNOUT HO "Walthers HO Power-Loc Track Crossing 90d 931-1362CR"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 6.000000 0.000000 90.000000
+ E 3.000000 3.000000 0.000000
+ E 3.000000 -3.000000 180.000000
+ S 0 0 0.000000 0.000000 6.000000 0.000000
+ S 0 0 3.000000 3.000000 3.000000 -3.000000
+ L3 11579568 0.053333 0.000000 0.984375 0 2.015625 0.984375 0
+ L3 11579568 0.053333 0.000000 -0.984375 0 2.015625 -0.984375 0
+ L3 11579568 0.053333 3.984375 0.984375 0 6.000000 0.984375 0
+ L3 11579568 0.053333 3.984375 -0.984375 0 6.000000 -0.984375 0
+ L3 11579568 0.053333 2.015625 3.000000 0 2.015625 0.984375 0
+ L3 11579568 0.053333 3.984375 3.000000 0 3.984375 0.984375 0
+ L3 11579568 0.053333 2.015625 -0.984375 0 2.015625 -3.000000 0
+ L3 11579568 0.053333 3.984375 -0.984375 0 3.984375 -3.000000 0
+ END$SEGS
+#Power Section available via train sets only
+TURNOUT HO "Walthers HO Power-Loc Track Power Straight 9in 931-135X"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.000000 0.000000
+ L3 11579568 0.053333 0.000000 0.984375 0 9.000000 0.984375 0
+ L3 11579568 0.053333 0.000000 -0.984375 0 9.000000 -0.984375 0
+ F4 9057807 0.000000 4 0
+ 1.000000 0.984375 0
+ 7.000000 0.984375 0
+ 6.500000 0.350000 0
+ 1.500000 0.350000 0
+ F4 6170130 0.000000 4 0
+ 1.500000 0.984375 0
+ 2.250000 0.984375 0
+ 2.250000 0.350000 0
+ 1.500000 0.350000 0
+ L3 16711680 0.040000 1.625000 0.984375 0 1.750000 0.859375 0
+ L3 16711680 0.040000 1.750000 0.859375 0 1.875000 0.984375 0
+ L3 16711680 0.040000 1.750000 0.859375 0 1.750000 0.734375 0
+ L3 32768 0.040000 1.875000 0.984375 0 2.000000 0.859375 0
+ L3 32768 0.040000 2.000000 0.859375 0 2.125000 0.984375 0
+ L3 32768 0.040000 2.000000 0.859375 0 2.000000 0.734375 0
+ F4 9057807 0.000000 6 0
+ 1.000000 0.000000 0
+ 1.500000 0.250000 0
+ 6.500000 0.250000 0
+ 7.000000 0.000000 0
+ 6.500000 -0.250000 0
+ 1.500000 -0.250000 0
+ F4 9057807 0.000000 4 0
+ 1.000000 -0.984375 0
+ 7.000000 -0.984375 0
+ 6.500000 -0.350000 0
+ 1.500000 -0.350000 0
+ END$SEGS
+TURNOUT HO "Walthers HO Power-Loc Track Track Adapter 931-1370/1350"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.000000 0.000000
+ L3 11579568 0.053333 0.000000 0.984375 0 3.000000 0.984375 0
+ L3 11579568 0.053333 0.000000 -0.984375 0 3.000000 -0.984375 0
+ END$SEGS
+TURNOUT HO "Walthers HO Power-Loc Track Track Bumper 931-1350BPR"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 1.500000 0.000000
+ L3 11579568 0.053333 0.000000 0.984375 0 2.000000 0.984375 0
+ L3 11579568 0.053333 0.000000 -0.984375 0 2.000000 -0.984375 0
+ L3 11579568 0.053333 2.000000 0.984375 0 2.000000 -0.984375 0
+ L3 9057807 0.500000 0.125000 0.000000 0 1.375000 0.000000 0
+ G3 0 0.000000 0.125000 1.125000 0.000000 0
+ END$SEGS
diff --git a/app/lib/params/HO-Weinert-Code75.xtp b/app/lib/params/HO-Weinert-Code75.xtp
index c6f33aa..1935bf6 100644
--- a/app/lib/params/HO-Weinert-Code75.xtp
+++ b/app/lib/params/HO-Weinert-Code75.xtp
@@ -1,170 +1,240 @@
-CONTENTS Weinert Mein Gleis HO Scale Code 75
-# ****** http://www.mein-gleis.de *****
-# ****** http://www.mein-gleis.de/images/html5/mg-2017/#issue/Projekt1/landscape/1 ****
-SUBCONTENTS Weinert Mein Gleis HO Scale C75 - Switched
-TURNOUT HO "Weinert Mein Gleis Left Hand 6.3d 74901"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.763780 0.000000 90.000000
- E 14.693754 1.023622 83.700000
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 14.763780 0.000000
- C 0 0.000000 -86.719739 0.649715 86.719739 173.699924 6.300152
- S 0 0.000000 10.165952 0.523729 14.693754 1.023622
-END
-TURNOUT HO "Weinert Mein Gleis Right Hand 6.3d 74902"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.763780 0.000000 90.000000
- E 14.693754 -1.023622 96.300000
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 14.763780 0.000000
- C 0 0.000000 86.719739 0.649255 -86.719739 0.000076 6.300152
- S 0 0.000000 10.165952 -0.523729 14.693754 -1.023622
-END
-TURNOUT HO "Weinert Mein Gleis Left Hand 8.6d 74661"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 13.976378 0.000000 90.000000
- E 13.916604 1.023622 81.400000
- S 0 0.000000 0.000000 0.000000 0.952703 0.000000
- S 0 0.000000 0.952703 0.000000 13.976378 0.000000
- C 0 0.000000 -82.399361 0.952812 82.399361 171.399924 8.600152
- S 0 0.000000 13.274525 0.926498 13.916604 1.023622
-END
-TURNOUT HO "Weinert Mein Gleis Right Hand 8.6d 74662"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 13.976378 0.000000 90.000000
- E 13.916604 -1.023622 98.600000
- S 0 0.000000 0.000000 0.000000 0.952703 0.000000
- S 0 0.000000 0.952703 0.000000 13.976378 0.000000
- C 0 0.000000 82.399361 0.952375 -82.399361 0.000076 8.600152
- S 0 0.000000 13.274525 -0.926498 13.916604 -1.023622
-END
-TURNOUT HO "Weinert Mein Gleis Left Hand 8.6d(Shorten) 74501"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 13.110236 0.000000 90.000000
- E 13.030487 1.023622 81.400000
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 13.110236 0.000000
- C 0 0.000000 -74.645410 0.649699 74.645410 171.399924 8.600152
- S 0 0.000000 11.811914 0.839313 13.030487 1.023622
-END
-TURNOUT HO "Weinert Mein Gleis Right Hand 8.6d(Shorten) 74502"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 13.110236 0.000000 90.000000
- E 13.030487 -1.023622 98.600000
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 13.110236 0.000000
- C 0 0.000000 74.645410 0.649303 -74.645410 0.000076 8.600152
- S 0 0.000000 11.811914 -0.839313 13.030487 -1.023622
-END
-TURNOUT HO "Weinert Mein Gleis Left Hand 8.6d 74401"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 10.393701 0.000000 90.000000
- E 10.304240 1.023622 81.400000
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 10.393701 0.000000
- C 0 0.000000 -38.387137 0.649651 38.387137 171.399924 8.600152
- S 0 0.000000 6.389930 0.431625 10.304240 1.023622
-END
-TURNOUT HO "Weinert Mein Gleis Right Hand 8.6d 74402"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 10.393701 0.000000 90.000000
- E 10.304240 -1.023622 98.600000
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- S 0 0.000000 0.649600 0.000000 10.393701 0.000000
- C 0 0.000000 38.387137 0.649447 -38.387137 0.000076 8.600152
- S 0 0.000000 6.389930 -0.431625 10.304240 -1.023622
-END
-
-SUBCONTENTS Weinert Mein Gleis HO-Scale C75 - Slips
-TURNOUT HO "Weinert Mein Gleis WYE 6.3d 74903"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 14.763780 0.511811 86.850000
- E 14.763780 -0.577811 93.150000
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- C 0 0.000000 -175.099588 0.649832 175.099588 176.849924 3.150152
- S 0 0.000000 10.271810 0.264584 14.763780 0.511811
- C 0 0.000000 131.483018 0.649077 -131.483018 0.000076 3.150152
- S 0 0.000000 7.874958 -0.198677 14.763780 -0.577811
-END
-TURNOUT HO "Weinert Mein Gleis WYE 8.6d 74663"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 13.976378 0.511811 85.700000
- E 13.976378 -0.511811 94.300000
- S 0 0.000000 0.000000 0.000000 0.993510 0.000000
- C 0 0.000000 -164.514766 0.993728 164.514766 175.699924 4.300152
- S 0 0.000000 13.329043 0.463119 13.976378 0.511811
- C 0 0.000000 164.514766 0.992855 -164.514766 0.000076 4.300152
- S 0 0.000000 13.329043 -0.463119 13.976378 -0.511811
-END
-TURNOUT HO "Weinert Mein Gleis WYE 8.6d(Shorten) 74503"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 13.110236 0.511811 85.700000
- E 13.110236 -0.511811 94.300000
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- C 0 0.000000 -150.603813 0.649800 150.603813 175.699924 4.300152
- S 0 0.000000 11.942071 0.423959 13.110236 0.511811
- C 0 0.000000 150.603813 0.649001 -150.603813 0.000076 4.300152
- S 0 0.000000 11.942071 -0.423959 13.110236 -0.511811
-END
-TURNOUT HO "Weinert Mein Gleis WYE 8.6d 74403"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 10.393701 0.511811 85.700000
- E 10.393701 -0.511811 94.300000
- S 0 0.000000 0.000000 0.000000 0.649600 0.000000
- C 0 0.000000 -78.242973 0.649704 78.242973 175.699924 4.300152
- S 0 0.000000 6.516361 0.220259 10.393701 0.511811
- C 0 0.000000 78.242973 0.649289 -78.242973 0.000076 4.300152
- S 0 0.000000 6.516361 -0.220259 10.393701 -0.511811
-END
-
-SUBCONTENTS Weinert Mein Gleis HO-Scale C75 - Slips
-TURNOUT HO "Weinert Mein Gleis Double-Slip 8.6d 74641" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 7 6
- P "Slip2" 4 8 3
- E 0.000000 0.000000 270.000000
- E 13.425197 0.000000 90.000000
- E 0.075472 1.003761 278.600000
- E 13.349725 -1.003761 98.600000
- S 0 0.000000 0.000000 0.000000 1.299532 0.000000
- S 0 0.000000 1.299532 0.000000 12.125665 0.000000
- S 0 0.000000 12.125665 0.000000 13.425197 0.000000
- S 0 0.000000 0.075472 1.003761 1.359875 0.809497
- S 0 0.000000 1.359875 0.809497 12.065322 -0.809497
- S 0 0.000000 12.065322 -0.809497 13.349725 -1.003761
- C 0 0.000000 71.993749 1.299246 -71.993749 0.000076 8.600152
- C 0 0.000000 -71.993749 12.125759 71.993734 180.000076 8.600152
-END
-
-SUBCONTENTS Weinert Mein Gleis HO-Scale C75 - Flex Track
-TURNOUT HO "Weinert Mein Gleis Flex Track 74000"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 36.220472 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 36.220472 0.000000
-END
+CONTENTS Weinert Mein Glies HO Scale Code 75
+#****** http://www.mein-gleis.de *****
+#****** http://www.mein-gleis.de/images/html5/mg-2017/#issue/Projekt1/landscape/1 ****
+SUBCONTENTS Weinert Mein Glies HO Scale C75 - Switched
+TURNOUT HO "Weinert Mein Glies Left Hand 6.3d 74901"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.763780 0.000000 90.000000
+ E 14.693754 1.023622 83.700000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 14.763780 0.000000
+ C 0 0.000000 -86.719739 0.649715 86.719739 173.699924 6.300152
+ S 0 0.000000 10.165952 0.523729 14.693754 1.023622
+END$SEGS
+TURNOUT HO "Weinert Mein Glies Right Hand 6.3d 74902"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.763780 0.000000 90.000000
+ E 14.693754 -1.023622 96.300000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 14.763780 0.000000
+ C 0 0.000000 86.719739 0.649255 -86.719739 0.000076 6.300152
+ S 0 0.000000 10.165952 -0.523729 14.693754 -1.023622
+END$SEGS
+TURNOUT HO "Weinert Mein Glies Left Hand 8.6d 74661"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 13.976378 0.000000 90.000000
+ E 13.916604 1.023622 81.400000
+ S 0 0.000000 0.000000 0.000000 0.952703 0.000000
+ S 0 0.000000 0.952703 0.000000 13.976378 0.000000
+ C 0 0.000000 -82.399361 0.952812 82.399361 171.399924 8.600152
+ S 0 0.000000 13.274525 0.926498 13.916604 1.023622
+END$SEGS
+TURNOUT HO "Weinert Mein Glies Right Hand 8.6d 74662"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 13.976378 0.000000 90.000000
+ E 13.916604 -1.023622 98.600000
+ S 0 0.000000 0.000000 0.000000 0.952703 0.000000
+ S 0 0.000000 0.952703 0.000000 13.976378 0.000000
+ C 0 0.000000 82.399361 0.952375 -82.399361 0.000076 8.600152
+ S 0 0.000000 13.274525 -0.926498 13.916604 -1.023622
+END$SEGS
+TURNOUT HO "Weinert Mein Glies Left Hand 8.6d(Shorten) 74501"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 13.110236 0.000000 90.000000
+ E 13.030487 1.023622 81.400000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 13.110236 0.000000
+ C 0 0.000000 -74.645410 0.649699 74.645410 171.399924 8.600152
+ S 0 0.000000 11.811914 0.839313 13.030487 1.023622
+END$SEGS
+TURNOUT HO "Weinert Mein Glies Right Hand 8.6d(Shorten) 74502"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 13.110236 0.000000 90.000000
+ E 13.030487 -1.023622 98.600000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 13.110236 0.000000
+ C 0 0.000000 74.645410 0.649303 -74.645410 0.000076 8.600152
+ S 0 0.000000 11.811914 -0.839313 13.030487 -1.023622
+END$SEGS
+TURNOUT HO "Weinert Mein Glies Left Hand 8.6d 74401"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 10.393701 0.000000 90.000000
+ E 10.304240 1.023622 81.400000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 10.393701 0.000000
+ C 0 0.000000 -38.387137 0.649651 38.387137 171.399924 8.600152
+ S 0 0.000000 6.389930 0.431625 10.304240 1.023622
+END$SEGS
+TURNOUT HO "Weinert Mein Glies Right Hand 8.6d 74402"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 10.393701 0.000000 90.000000
+ E 10.304240 -1.023622 98.600000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 10.393701 0.000000
+ C 0 0.000000 38.387137 0.649447 -38.387137 0.000076 8.600152
+ S 0 0.000000 6.389930 -0.431625 10.304240 -1.023622
+END$SEGS
+
+SUBCONTENTS Weinert Mein Glies HO-Scale C75 - Wyes
+TURNOUT HO "Weinert Mein Glies WYE 6.3d 74903"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 14.763780 0.511811 86.850000
+ E 14.763780 -0.577811 93.150000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ C 0 0.000000 -175.099588 0.649832 175.099588 176.849924 3.150152
+ S 0 0.000000 10.271810 0.264584 14.763780 0.511811
+ C 0 0.000000 131.483018 0.649077 -131.483018 0.000076 3.150152
+ S 0 0.000000 7.874958 -0.198677 14.763780 -0.577811
+END$SEGS
+TURNOUT HO "Weinert Mein Glies WYE 8.6d 74663"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 13.976378 0.511811 85.700000
+ E 13.976378 -0.511811 94.300000
+ S 0 0.000000 0.000000 0.000000 0.993510 0.000000
+ C 0 0.000000 -164.514766 0.993728 164.514766 175.699924 4.300152
+ S 0 0.000000 13.329043 0.463119 13.976378 0.511811
+ C 0 0.000000 164.514766 0.992855 -164.514766 0.000076 4.300152
+ S 0 0.000000 13.329043 -0.463119 13.976378 -0.511811
+END$SEGS
+TURNOUT HO "Weinert Mein Glies WYE 8.6d(Shorten) 74503"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 13.110236 0.511811 85.700000
+ E 13.110236 -0.511811 94.300000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ C 0 0.000000 -150.603813 0.649800 150.603813 175.699924 4.300152
+ S 0 0.000000 11.942071 0.423959 13.110236 0.511811
+ C 0 0.000000 150.603813 0.649001 -150.603813 0.000076 4.300152
+ S 0 0.000000 11.942071 -0.423959 13.110236 -0.511811
+END$SEGS
+TURNOUT HO "Weinert Mein Glies WYE 8.6d 74403"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 10.393701 0.511811 85.700000
+ E 10.393701 -0.511811 94.300000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ C 0 0.000000 -78.242973 0.649704 78.242973 175.699924 4.300152
+ S 0 0.000000 6.516361 0.220259 10.393701 0.511811
+ C 0 0.000000 78.242973 0.649289 -78.242973 0.000076 4.300152
+ S 0 0.000000 6.516361 -0.220259 10.393701 -0.511811
+END$SEGS
+
+SUBCONTENTS Weinert Mein Glies HO-Scale C75 - Slips
+TURNOUT HO "Weinert Mein Glies Double-Slip 8.6d 74641" 512
+ P "P1" 1 2 3
+ P "P2" 4 5 6
+ P "P3" 1 7 6
+ P "P4" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 13.425197 0.000000 90.000000
+ E 0.075472 1.003761 278.600000
+ E 13.349725 -1.003761 98.600000
+ S 0 0.000000 0.000000 0.000000 1.299532 0.000000
+ S 0 0.000000 1.299532 0.000000 12.125665 0.000000
+ S 0 0.000000 12.125665 0.000000 13.425197 0.000000
+ S 0 0.000000 0.075472 1.003761 1.359875 0.809497
+ S 0 0.000000 1.359875 0.809497 12.065322 -0.809497
+ S 0 0.000000 12.065322 -0.809497 13.349725 -1.003761
+ C 0 0.000000 71.993749 1.299246 -71.993749 0.000076 8.600152
+ C 0 0.000000 -71.993749 12.125759 71.993734 180.000076 8.600152
+END$SEGS
+TURNOUT HO "Weinert Mein Glies Double-Slip 6.3d 74942" 512
+ P "Cross1" 1 2 3
+ P "Cross2" 4 5 6
+ P "Slip1" 1 7 6
+ P "Slip2" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 18.503937 0.000000 90.000000
+ E 0.055873 1.015258 276.300000
+ E 18.448064 -1.015258 96.300000
+ S 0 0.000000 0.000000 0.000000 1.299200 0.000000
+ S 0 0.000000 1.299200 0.000000 17.204737 0.000000
+ S 0 0.000000 17.204737 0.000000 18.503937 0.000000
+ S 0 0.000000 0.055873 1.015258 1.347227 0.872692
+ S 0 0.000000 1.347227 0.872692 17.156710 -0.872692
+ S 0 0.000000 17.156710 -0.872692 18.448064 -1.015258
+ C 0 0.000000 144.508219 1.299200 -144.508219 0.000000 6.300000
+ C 0 0.000000 -144.508219 17.204737 144.508219 180.000000 6.300000
+ END$SEGS
+
+SUBCONTENTS Weinert Mein Glies HO-Scale C75 - Flex Track
+TURNOUT HO "Weinert Mein Glies Flex Track 74000"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 36.220472 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 36.220472 0.000000
+END$SEGS
+
+SUBCONTENTS Weinert Mein Glies HO-Scale C75 - Curve Switches
+TURNOUT HO "Weinert Mein Glies Curve Switch LH R2500/950 74411"
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 10.456693 0.551181 84.901047
+ E 10.281496 1.537402 75.163004
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ C 0 0.000000 -29.401486 0.649600 29.401486 165.163004 14.836996
+ S 0 0.000000 8.178438 0.980297 10.281496 1.537402
+ C 0 0.000000 -81.524142 0.649600 81.524142 174.901047 5.098953
+ S 0 0.000000 7.895147 0.322616 10.456693 0.551181
+END$SEGS
+TURNOUT HO "Weinert Mein Glies Curve Switch RH R2500/950 74412"
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 10.456693 -0.551181 95.098953
+ E 10.281496 -1.537402 104.836996
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ C 0 0.000000 29.401486 0.649600 -29.401486 0.000000 14.836996
+ S 0 0.000000 8.178438 -0.980297 10.281496 -1.537402
+ C 0 0.000000 81.524142 0.649600 -81.524142 0.000000 5.098953
+ S 0 0.000000 7.895147 -0.322616 10.456693 -0.551181
+END$SEGS
+TURNOUT HO "Weinert Mein Glies Curve Switch LH R3605/1450 74601"
+ P "Normal" 1 4 5
+ P "Reverse" 1 6 2 3
+ E 0.000000 0.000000 270.000000
+ E 13.611763 0.454604 85.905975
+ E 13.456934 1.423108 75.607283
+ S 0 0.000000 0.000000 0.000000 1.542434 0.000000
+ C 0 0.000000 -40.198489 2.835713 40.198489 165.607283 14.392717
+ S 0 0.000000 12.827722 1.261639 13.456934 1.423108
+ C 0 0.000000 -159.978129 1.542434 159.978129 175.905975 4.094025
+ S 0 0.000000 12.963821 0.408227 13.611763 0.454604
+ S 0 0.000000 1.542434 0.000000 2.835713 0.000000
+END$SEGS
+TURNOUT HO "Weinert Mein Glies Curve Switch RH R3605/1450 74602"
+ P "Normal" 1 4 5
+ P "Reverse" 1 6 2 3
+ E 0.000000 0.000000 270.000000
+ E 13.611763 -0.454604 94.094025
+ E 13.456934 -1.423108 104.392717
+ S 0 0.000000 0.000000 0.000000 1.542434 -0.000000
+ C 0 0.000000 40.198489 2.835713 -40.198489 0.000000 14.392717
+ S 0 0.000000 12.827722 -1.261639 13.456934 -1.423108
+ C 0 0.000000 159.978129 1.542434 -159.978129 0.000000 4.094025
+ S 0 0.000000 12.963821 -0.408227 13.611763 -0.454604
+ S 0 0.000000 1.542434 -0.000000 2.835713 -0.000000
+END$SEGS
diff --git a/app/lib/params/HO-fl-model.xtp b/app/lib/params/HO-fl-model.xtp
new file mode 100644
index 0000000..844e3de
--- /dev/null
+++ b/app/lib/params/HO-fl-model.xtp
@@ -0,0 +1,847 @@
+CONTENTS Fleischmann HO Modell-Gleis
+SUBCONTENTS Fleischmann-Modell - Straight Tracks
+TURNOUT HO "Fleischmann-Modell Straight 204mm 6001"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.031496 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 8.031496 0.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Straight 102mm 6002"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.015748 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.015748 0.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Straight 55mm 6003"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.165354 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 2.165354 0.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Straight 40mm 6004"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.574803 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.574803 0.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Straight 165mm 6005"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.496063 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 6.496063 0.000000
+ END$SEGS
+
+SUBCONTENTS Fleischmann-Modell - Misc Tracks
+TURNOUT HO "Fleischmann-Modell Terminal 102mm 6008"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.015748 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.015748 0.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Adjustable 80-120mm 6010"
+ P "Normal" 1
+ X adjustable 3.149606 4.724409
+ E 0.000000 0.000000 270.000000
+ E 3.149606 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.149606 0.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Uncoupler Elec 6012"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.015748 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.015748 0.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Uncoupler Elec w/ signal 102mm 6013"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.015748 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.015748 0.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Uncoupler Man 6014"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.015748 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.015748 0.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Bumper 6014"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.165354 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 2.165354 0.000000
+ END$SEGS
+
+SUBCONTENTS Fleischmann-Modell - Curve Tracks
+TURNOUT HO "Fleischmann-Modell Curve 250mm 60d 6020"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.523872 4.921260 30.000000
+ C 0 0.000000 -9.842520 0.000000 9.842520 120.000000 60.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Curve 357mm 45d 6024"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.938469 4.116649 45.000000
+ C 0 0.000000 -14.055118 0.000000 14.055118 135.000000 45.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Curve 357mm 30d 6025"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.027559 1.883029 60.000000
+ C 0 0.000000 -14.055118 0.000000 14.055118 150.000000 30.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Curve 357mm 15d 6026"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.637732 0.478917 75.000000
+ C 0 0.000000 -14.055118 0.000000 14.055118 165.000000 15.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Curve 415mm 30d 6030"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.169291 2.188955 60.000000
+ C 0 0.000000 -16.338583 0.000000 16.338583 150.000000 30.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Curve 415mm 15d 6032"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.228736 0.556724 75.000000
+ C 0 0.000000 -16.338583 0.000000 16.338583 165.000000 15.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Curve 415mm 7.5d 6033"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.132613 0.139779 82.500000
+ C 0 0.000000 -16.338583 0.000000 16.338583 172.500000 7.500000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Curve 738mm 15d 6036"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.520018 0.990029 75.000000
+ C 0 0.000000 -29.055118 0.000000 29.055118 165.000000 15.000000
+ END$SEGS
+
+SUBCONTENTS Fleischmann-Modell - Turntables(Discontinued)
+TURNOUT HO "Fleischmann-Modell Turntable(Discontinued) 165mm Dia 15d 24 Pos 6050" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ E 0.000000 3.248031 0.000000
+ E 0.840652 3.137358 15.000000
+ E 1.624016 2.812878 30.000000
+ E 2.296705 2.296705 45.000000
+ E 2.812878 1.624016 60.000000
+ E 3.137358 0.840652 75.000000
+ E 3.248031 0.000000 90.000000
+ E 3.137358 -0.840652 105.000000
+ E 2.812878 -1.624016 120.000000
+ E 2.296705 -2.296705 135.000000
+ E 1.624016 -2.812878 150.000000
+ E 0.840652 -3.137358 165.000000
+ E 0.000000 -3.248031 180.000000
+ E -0.840652 -3.137358 195.000000
+ E -1.624016 -2.812878 210.000000
+ E -2.296705 -2.296705 225.000000
+ E -2.812878 -1.624016 240.000000
+ E -3.137358 -0.840652 255.000000
+ E -3.248031 0.000000 270.000000
+ E -3.137358 0.840652 285.000000
+ E -2.812878 1.624016 300.000000
+ E -2.296705 2.296705 315.000000
+ E -1.624016 2.812878 330.000000
+ E -0.840652 3.137358 345.000000
+ S 16777215 0 0.000000 3.248031 0.000000 -3.248031
+ S 16777215 0 0.840652 3.137358 -0.840652 -3.137358
+ S 16777215 0 1.624016 2.812878 -1.624016 -2.812878
+ S 16777215 0 2.296705 2.296705 -2.296705 -2.296705
+ S 16777215 0 2.812878 1.624016 -2.812878 -1.624016
+ S 16777215 0 3.137358 0.840652 -3.137358 -0.840652
+ S 16777215 0 3.248031 0.000000 -3.248031 0.000000
+ S 16777215 0 3.137358 -0.840652 -3.137358 0.840652
+ S 16777215 0 2.812878 -1.624016 -2.812878 1.624016
+ S 16777215 0 2.296705 -2.296705 -2.296705 2.296705
+ S 16777215 0 1.624016 -2.812878 -1.624016 2.812878
+ S 16777215 0 0.840652 -3.137358 -0.840652 3.137358
+ A3 8424071 0.031250 3.248031 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 4.370079 0.000000 0.000000 0 0.000000 360.000000
+END$SEGS
+TURNOUT HO "Fleischmann-Modell Turntable Extension(Discontinued) 41.5mm 6051"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.633858 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.633858 0.000000
+END$SEGS
+TURNOUT HO "Fleischmann-Modell Turntable(Discontinued) 310mm Dia 7.5d 48 Pos 6052" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ P "13" 13
+ P "14" 14
+ P "15" 15
+ P "16" 16
+ P "17" 17
+ P "18" 18
+ P "19" 19
+ P "20" 20
+ P "21" 21
+ P "22" 22
+ P "23" 23
+ P "24" 24
+ E 0.000000 6.102362 0.000000
+ E 0.796518 6.050156 7.500000
+ E 1.579408 5.894429 15.000000
+ E 2.335273 5.637848 22.500000
+ E 3.051181 5.284801 30.000000
+ E 3.714883 4.841329 37.500000
+ E 4.315022 4.315022 45.000000
+ E 4.841329 3.714883 52.500000
+ E 5.284801 3.051181 60.000000
+ E 5.637848 2.335273 67.500000
+ E 5.894429 1.579408 75.000000
+ E 6.050156 0.796518 82.500000
+ E 6.102362 0.000000 90.000000
+ E 6.050156 -0.796518 97.500000
+ E 5.894429 -1.579408 105.000000
+ E 5.637848 -2.335273 112.500000
+ E 5.284801 -3.051181 120.000000
+ E 4.841329 -3.714883 127.500000
+ E 4.315022 -4.315022 135.000000
+ E 3.714883 -4.841329 142.500000
+ E 3.051181 -5.284801 150.000000
+ E 2.335273 -5.637848 157.500000
+ E 1.579408 -5.894429 165.000000
+ E 0.796518 -6.050156 172.500000
+ E 0.000000 -6.102362 180.000000
+ E -0.796518 -6.050156 187.500000
+ E -1.579408 -5.894429 195.000000
+ E -2.335273 -5.637848 202.500000
+ E -3.051181 -5.284801 210.000000
+ E -3.714883 -4.841329 217.500000
+ E -4.315022 -4.315022 225.000000
+ E -4.841329 -3.714883 232.500000
+ E -5.284801 -3.051181 240.000000
+ E -5.637848 -2.335273 247.500000
+ E -5.894429 -1.579408 255.000000
+ E -6.050156 -0.796518 262.500000
+ E -6.102362 0.000000 270.000000
+ E -6.050156 0.796518 277.500000
+ E -5.894429 1.579408 285.000000
+ E -5.637848 2.335273 292.500000
+ E -5.284801 3.051181 300.000000
+ E -4.841329 3.714883 307.500000
+ E -4.315022 4.315022 315.000000
+ E -3.714883 4.841329 322.500000
+ E -3.051181 5.284801 330.000000
+ E -2.335273 5.637848 337.500000
+ E -1.579408 5.894429 345.000000
+ E -0.796518 6.050156 352.500000
+ S 16777215 0 0.000000 6.102362 0.000000 -6.102362
+ S 16777215 0 0.796518 6.050156 -0.796518 -6.050156
+ S 16777215 0 1.579408 5.894429 -1.579408 -5.894429
+ S 16777215 0 2.335273 5.637848 -2.335273 -5.637848
+ S 16777215 0 3.051181 5.284801 -3.051181 -5.284801
+ S 16777215 0 3.714883 4.841329 -3.714883 -4.841329
+ S 16777215 0 4.315022 4.315022 -4.315022 -4.315022
+ S 16777215 0 4.841329 3.714883 -4.841329 -3.714883
+ S 16777215 0 5.284801 3.051181 -5.284801 -3.051181
+ S 16777215 0 5.637848 2.335273 -5.637848 -2.335273
+ S 16777215 0 5.894429 1.579408 -5.894429 -1.579408
+ S 16777215 0 6.050156 0.796518 -6.050156 -0.796518
+ S 16777215 0 6.102362 0.000000 -6.102362 0.000000
+ S 16777215 0 6.050156 -0.796518 -6.050156 0.796518
+ S 16777215 0 5.894429 -1.579408 -5.894429 1.579408
+ S 16777215 0 5.637848 -2.335273 -5.637848 2.335273
+ S 16777215 0 5.284801 -3.051181 -5.284801 3.051181
+ S 16777215 0 4.841329 -3.714883 -4.841329 3.714883
+ S 16777215 0 4.315022 -4.315022 -4.315022 4.315022
+ S 16777215 0 3.714883 -4.841329 -3.714883 4.841329
+ S 16777215 0 3.051181 -5.284801 -3.051181 5.284801
+ S 16777215 0 2.335273 -5.637848 -2.335273 5.637848
+ S 16777215 0 1.579408 -5.894429 -1.579408 5.894429
+ S 16777215 0 0.796518 -6.050156 -0.796518 6.050156
+ A3 8424071 0.031250 6.102362 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 7.578740 0.000000 0.000000 0 0.000000 360.000000
+END$SEGS
+TURNOUT HO "Fleischmann-Modell Turntable Extension 77mm 6053"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.031496 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.031496 0.000000
+END$SEGS
+
+SUBCONTENTS Fleischmann-Modell - Turntables
+TURNOUT HO "Fleischmann-Modell Turntable 165mm Dia 15d 24 Pos 6150" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ P "13" 13
+ P "14" 14
+ P "15" 15
+ P "16" 16
+ P "17" 17
+ P "18" 18
+ P "19" 19
+ P "20" 20
+ P "21" 21
+ P "22" 22
+ P "23" 23
+ P "24" 24
+ E 0.000000 3.248031 0.000000
+ E 0.423953 3.220244 7.500000
+ E 0.840652 3.137358 15.000000
+ E 1.242968 3.000790 22.500000
+ E 1.624016 2.812878 30.000000
+ E 1.977276 2.576837 37.500000
+ E 2.296705 2.296705 45.000000
+ E 2.576837 1.977276 52.500000
+ E 2.812878 1.624016 60.000000
+ E 3.000790 1.242968 67.500000
+ E 3.137358 0.840652 75.000000
+ E 3.220244 0.423953 82.500000
+ E 3.248031 0.000000 90.000000
+ E 3.220244 -0.423953 97.500000
+ E 3.137358 -0.840652 105.000000
+ E 3.000790 -1.242968 112.500000
+ E 2.812878 -1.624016 120.000000
+ E 2.576837 -1.977276 127.500000
+ E 2.296705 -2.296705 135.000000
+ E 1.977276 -2.576837 142.500000
+ E 1.624016 -2.812878 150.000000
+ E 1.242968 -3.000790 157.500000
+ E 0.840652 -3.137358 165.000000
+ E 0.423953 -3.220244 172.500000
+ E 0.000000 -3.248031 180.000000
+ E -0.423953 -3.220244 187.500000
+ E -0.840652 -3.137358 195.000000
+ E -1.242968 -3.000790 202.500000
+ E -1.624016 -2.812878 210.000000
+ E -1.977276 -2.576837 217.500000
+ E -2.296705 -2.296705 225.000000
+ E -2.576837 -1.977276 232.500000
+ E -2.812878 -1.624016 240.000000
+ E -3.000790 -1.242968 247.500000
+ E -3.137358 -0.840652 255.000000
+ E -3.220244 -0.423953 262.500000
+ E -3.248031 0.000000 270.000000
+ E -3.220244 0.423953 277.500000
+ E -3.137358 0.840652 285.000000
+ E -3.000790 1.242968 292.500000
+ E -2.812878 1.624016 300.000000
+ E -2.576837 1.977276 307.500000
+ E -2.296705 2.296705 315.000000
+ E -1.977276 2.576837 322.500000
+ E -1.624016 2.812878 330.000000
+ E -1.242968 3.000790 337.500000
+ E -0.840652 3.137358 345.000000
+ E -0.423953 3.220244 352.500000
+ S 16777215 0 0.000000 3.248031 0.000000 -3.248031
+ S 16777215 0 0.423953 3.220244 -0.423953 -3.220244
+ S 16777215 0 0.840652 3.137358 -0.840652 -3.137358
+ S 16777215 0 1.242968 3.000790 -1.242968 -3.000790
+ S 16777215 0 1.624016 2.812878 -1.624016 -2.812878
+ S 16777215 0 1.977276 2.576837 -1.977276 -2.576837
+ S 16777215 0 2.296705 2.296705 -2.296705 -2.296705
+ S 16777215 0 2.576837 1.977276 -2.576837 -1.977276
+ S 16777215 0 2.812878 1.624016 -2.812878 -1.624016
+ S 16777215 0 3.000790 1.242968 -3.000790 -1.242968
+ S 16777215 0 3.137358 0.840652 -3.137358 -0.840652
+ S 16777215 0 3.220244 0.423953 -3.220244 -0.423953
+ S 16777215 0 3.248031 0.000000 -3.248031 0.000000
+ S 16777215 0 3.220244 -0.423953 -3.220244 0.423953
+ S 16777215 0 3.137358 -0.840652 -3.137358 0.840652
+ S 16777215 0 3.000790 -1.242968 -3.000790 1.242968
+ S 16777215 0 2.812878 -1.624016 -2.812878 1.624016
+ S 16777215 0 2.576837 -1.977276 -2.576837 1.977276
+ S 16777215 0 2.296705 -2.296705 -2.296705 2.296705
+ S 16777215 0 1.977276 -2.576837 -1.977276 2.576837
+ S 16777215 0 1.624016 -2.812878 -1.624016 2.812878
+ S 16777215 0 1.242968 -3.000790 -1.242968 3.000790
+ S 16777215 0 0.840652 -3.137358 -0.840652 3.137358
+ S 16777215 0 0.423953 -3.220244 -0.423953 3.220244
+ A3 8424071 0.031250 3.248031 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 4.370079 0.000000 0.000000 0 0.000000 360.000000
+END$SEGS
+TURNOUT HO "Fleischmann-Modell Turntable Extension 28.5mm 6151"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.122047 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.122047 0.000000
+END$SEGS
+TURNOUT HO "Fleischmann-Modell Turntable 310mm Dia 7.5d 48 Pos 6152" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ P "13" 13
+ P "14" 14
+ P "15" 15
+ P "16" 16
+ P "17" 17
+ P "18" 18
+ P "19" 19
+ P "20" 20
+ P "21" 21
+ P "22" 22
+ P "23" 23
+ P "24" 24
+ E 0.000000 6.102362 0.000000
+ E 0.796518 6.050156 7.500000
+ E 1.579408 5.894429 15.000000
+ E 2.335273 5.637848 22.500000
+ E 3.051181 5.284801 30.000000
+ E 3.714883 4.841329 37.500000
+ E 4.315022 4.315022 45.000000
+ E 4.841329 3.714883 52.500000
+ E 5.284801 3.051181 60.000000
+ E 5.637848 2.335273 67.500000
+ E 5.894429 1.579408 75.000000
+ E 6.050156 0.796518 82.500000
+ E 6.102362 0.000000 90.000000
+ E 6.050156 -0.796518 97.500000
+ E 5.894429 -1.579408 105.000000
+ E 5.637848 -2.335273 112.500000
+ E 5.284801 -3.051181 120.000000
+ E 4.841329 -3.714883 127.500000
+ E 4.315022 -4.315022 135.000000
+ E 3.714883 -4.841329 142.500000
+ E 3.051181 -5.284801 150.000000
+ E 2.335273 -5.637848 157.500000
+ E 1.579408 -5.894429 165.000000
+ E 0.796518 -6.050156 172.500000
+ E 0.000000 -6.102362 180.000000
+ E -0.796518 -6.050156 187.500000
+ E -1.579408 -5.894429 195.000000
+ E -2.335273 -5.637848 202.500000
+ E -3.051181 -5.284801 210.000000
+ E -3.714883 -4.841329 217.500000
+ E -4.315022 -4.315022 225.000000
+ E -4.841329 -3.714883 232.500000
+ E -5.284801 -3.051181 240.000000
+ E -5.637848 -2.335273 247.500000
+ E -5.894429 -1.579408 255.000000
+ E -6.050156 -0.796518 262.500000
+ E -6.102362 0.000000 270.000000
+ E -6.050156 0.796518 277.500000
+ E -5.894429 1.579408 285.000000
+ E -5.637848 2.335273 292.500000
+ E -5.284801 3.051181 300.000000
+ E -4.841329 3.714883 307.500000
+ E -4.315022 4.315022 315.000000
+ E -3.714883 4.841329 322.500000
+ E -3.051181 5.284801 330.000000
+ E -2.335273 5.637848 337.500000
+ E -1.579408 5.894429 345.000000
+ E -0.796518 6.050156 352.500000
+ S 16777215 0 0.000000 6.102362 0.000000 -6.102362
+ S 16777215 0 0.796518 6.050156 -0.796518 -6.050156
+ S 16777215 0 1.579408 5.894429 -1.579408 -5.894429
+ S 16777215 0 2.335273 5.637848 -2.335273 -5.637848
+ S 16777215 0 3.051181 5.284801 -3.051181 -5.284801
+ S 16777215 0 3.714883 4.841329 -3.714883 -4.841329
+ S 16777215 0 4.315022 4.315022 -4.315022 -4.315022
+ S 16777215 0 4.841329 3.714883 -4.841329 -3.714883
+ S 16777215 0 5.284801 3.051181 -5.284801 -3.051181
+ S 16777215 0 5.637848 2.335273 -5.637848 -2.335273
+ S 16777215 0 5.894429 1.579408 -5.894429 -1.579408
+ S 16777215 0 6.050156 0.796518 -6.050156 -0.796518
+ S 16777215 0 6.102362 0.000000 -6.102362 0.000000
+ S 16777215 0 6.050156 -0.796518 -6.050156 0.796518
+ S 16777215 0 5.894429 -1.579408 -5.894429 1.579408
+ S 16777215 0 5.637848 -2.335273 -5.637848 2.335273
+ S 16777215 0 5.284801 -3.051181 -5.284801 3.051181
+ S 16777215 0 4.841329 -3.714883 -4.841329 3.714883
+ S 16777215 0 4.315022 -4.315022 -4.315022 4.315022
+ S 16777215 0 3.714883 -4.841329 -3.714883 4.841329
+ S 16777215 0 3.051181 -5.284801 -3.051181 5.284801
+ S 16777215 0 2.335273 -5.637848 -2.335273 5.637848
+ S 16777215 0 1.579408 -5.894429 -1.579408 5.894429
+ S 16777215 0 0.796518 -6.050156 -0.796518 6.050156
+ A3 8424071 0.031250 6.102362 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 7.578740 0.000000 0.000000 0 0.000000 360.000000
+END$SEGS
+TURNOUT HO "Fleischmann-Modell Turntable Extension 77.5mm 6153"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.051181 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.051181 0.000000
+END$SEGS
+TURNOUT HO "Fleischmann-Modell Turntable 340mm Dia 7.5d 48 Positions 665201" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ P "13" 13
+ P "14" 14
+ P "15" 15
+ P "16" 16
+ P "17" 17
+ P "18" 18
+ P "19" 19
+ P "20" 20
+ P "21" 21
+ P "22" 22
+ P "23" 23
+ P "24" 24
+ E 0.000000 6.692913 0.000000
+ E 0.873600 6.635655 7.500000
+ E 1.732253 6.464858 15.000000
+ E 2.561267 6.183446 22.500000
+ E 3.346457 5.796233 30.000000
+ E 4.074388 5.309845 37.500000
+ E 4.732604 4.732604 45.000000
+ E 5.309845 4.074388 52.500000
+ E 5.796233 3.346457 60.000000
+ E 6.183446 2.561267 67.500000
+ E 6.464858 1.732253 75.000000
+ E 6.635655 0.873600 82.500000
+ E 6.692913 0.000000 90.000000
+ E 6.635655 -0.873600 97.500000
+ E 6.464858 -1.732253 105.000000
+ E 6.183446 -2.561267 112.500000
+ E 5.796233 -3.346457 120.000000
+ E 5.309845 -4.074388 127.500000
+ E 4.732604 -4.732604 135.000000
+ E 4.074388 -5.309845 142.500000
+ E 3.346457 -5.796233 150.000000
+ E 2.561267 -6.183446 157.500000
+ E 1.732253 -6.464858 165.000000
+ E 0.873600 -6.635655 172.500000
+ E 0.000000 -6.692913 180.000000
+ E -0.873600 -6.635655 187.500000
+ E -1.732253 -6.464858 195.000000
+ E -2.561267 -6.183446 202.500000
+ E -3.346457 -5.796233 210.000000
+ E -4.074388 -5.309845 217.500000
+ E -4.732604 -4.732604 225.000000
+ E -5.309845 -4.074388 232.500000
+ E -5.796233 -3.346457 240.000000
+ E -6.183446 -2.561267 247.500000
+ E -6.464858 -1.732253 255.000000
+ E -6.635655 -0.873600 262.500000
+ E -6.692913 0.000000 270.000000
+ E -6.635655 0.873600 277.500000
+ E -6.464858 1.732253 285.000000
+ E -6.183446 2.561267 292.500000
+ E -5.796233 3.346457 300.000000
+ E -5.309845 4.074388 307.500000
+ E -4.732604 4.732604 315.000000
+ E -4.074388 5.309845 322.500000
+ E -3.346457 5.796233 330.000000
+ E -2.561267 6.183446 337.500000
+ E -1.732253 6.464858 345.000000
+ E -0.873600 6.635655 352.500000
+ S 16777215 0 0.000000 6.692913 0.000000 -6.692913
+ S 16777215 0 0.873600 6.635655 -0.873600 -6.635655
+ S 16777215 0 1.732253 6.464858 -1.732253 -6.464858
+ S 16777215 0 2.561267 6.183446 -2.561267 -6.183446
+ S 16777215 0 3.346457 5.796233 -3.346457 -5.796233
+ S 16777215 0 4.074388 5.309845 -4.074388 -5.309845
+ S 16777215 0 4.732604 4.732604 -4.732604 -4.732604
+ S 16777215 0 5.309845 4.074388 -5.309845 -4.074388
+ S 16777215 0 5.796233 3.346457 -5.796233 -3.346457
+ S 16777215 0 6.183446 2.561267 -6.183446 -2.561267
+ S 16777215 0 6.464858 1.732253 -6.464858 -1.732253
+ S 16777215 0 6.635655 0.873600 -6.635655 -0.873600
+ S 16777215 0 6.692913 0.000000 -6.692913 0.000000
+ S 16777215 0 6.635655 -0.873600 -6.635655 0.873600
+ S 16777215 0 6.464858 -1.732253 -6.464858 1.732253
+ S 16777215 0 6.183446 -2.561267 -6.183446 2.561267
+ S 16777215 0 5.796233 -3.346457 -5.796233 3.346457
+ S 16777215 0 5.309845 -4.074388 -5.309845 4.074388
+ S 16777215 0 4.732604 -4.732604 -4.732604 4.732604
+ S 16777215 0 4.074388 -5.309845 -4.074388 5.309845
+ S 16777215 0 3.346457 -5.796233 -3.346457 5.796233
+ S 16777215 0 2.561267 -6.183446 -2.561267 6.183446
+ S 16777215 0 1.732253 -6.464858 -1.732253 6.464858
+ S 16777215 0 0.873600 -6.635655 -0.873600 6.635655
+ A3 8424071 0.031250 6.692913 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 7.598425 0.000000 0.000000 0 0.000000 360.000000
+END$SEGS
+TURNOUT HO "Fleischmann-Modell Turntable Extension 77.5mm 665301"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.051181 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.051181 0.000000
+END$SEGS
+
+SUBCONTENTS Fleischmann-Modell - 3-Way Turnouts
+TURNOUT HO "Fleischmann-Modell 3-Way Turnout 6057"
+ P "Left" 1 2 3
+ P "Normal" 1 4 7
+ P "Right" 1 4 5 6
+ E 0.000000 0.000000 270.000000
+ E 6.496063 0.855208 75.000000
+ E 8.070866 -0.855208 105.000000
+ E 8.031496 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.648712 0.000000
+ C 0 0.000000 -20.171819 0.648712 20.171819 165.000000 15.000000
+ S 0 0.000000 5.869564 0.687338 6.496063 0.855208
+ S 0 0.000000 0.648712 0.000000 2.223516 -0.000000
+ C 0 0.000000 20.171819 2.223516 -20.171819 0.000000 15.000000
+ S 0 0.000000 7.444367 -0.687338 8.070866 -0.855208
+ S 0 0.000000 2.223516 -0.000000 8.031496 0.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell 3-Way Turnout Elec 6058"
+ P "Left" 1 2 3
+ P "Normal" 1 4 7
+ P "Right" 1 4 5 6
+ E 0.000000 0.000000 270.000000
+ E 6.496063 0.855208 75.000000
+ E 8.070866 -0.855208 105.000000
+ E 8.031496 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.648712 0.000000
+ C 0 0.000000 -20.171819 0.648712 20.171819 165.000000 15.000000
+ S 0 0.000000 5.869564 0.687338 6.496063 0.855208
+ S 0 0.000000 0.648712 0.000000 2.223516 -0.000000
+ C 0 0.000000 20.171819 2.223516 -20.171819 0.000000 15.000000
+ S 0 0.000000 7.444367 -0.687338 8.070866 -0.855208
+ S 0 0.000000 2.223516 -0.000000 8.031496 0.000000
+ END$SEGS
+
+SUBCONTENTS Fleischmann-Modell - Crossings
+TURNOUT HO "Fleischmann-Modell Crossing 30d 6060"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 6.692913 0.000000 90.000000
+ E 0.448340 1.673228 300.000000
+ E 6.244573 -1.673228 120.000000
+ S 0 0.000000 0.000000 0.000000 6.692913 0.000000
+ S 0 0.000000 0.448340 1.673228 6.244573 -1.673228
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Crossing 15d 6062"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 8.641732 0.000000 90.000000
+ E 0.147230 1.118322 285.000000
+ E 8.494502 -1.118322 105.000000
+ S 0 0.000000 0.000000 0.000000 8.641732 0.000000
+ S 0 0.000000 0.147230 1.118322 8.494502 -1.118322
+ END$SEGS
+
+SUBCONTENTS Fleischmann-Modell - Slip Turnouts
+TURNOUT HO "Fleischmann-Modell DoubleSlip 15d 6065" 512
+ P "P1" 1 2 3
+ P "P2" 4 5 6
+ P "P3" 1 7 6
+ P "P4" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 8.641732 0.000000 90.000000
+ E 0.147230 1.118322 285.000000
+ E 8.494502 -1.118322 105.000000
+ S 0 0.000000 0.000000 0.000000 1.297200 0.000000
+ S 0 0.000000 1.297200 0.000000 7.344532 0.000000
+ S 0 0.000000 7.344532 0.000000 8.641732 0.000000
+ S 0 0.000000 0.147230 1.118322 1.400229 0.782582
+ S 0 0.000000 1.400229 0.782582 7.241503 -0.782582
+ S 0 0.000000 7.241503 -0.782582 8.494502 -1.118322
+ C 0 0.000000 22.967025 1.297200 -22.967025 0.000000 15.000000
+ C 0 0.000000 -22.967025 7.344532 22.967025 180.000000 15.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell DoubleSlip 15d Elec 6066" 512
+ P "P1" 1 2 3
+ P "P2" 4 5 6
+ P "P3" 1 7 6
+ P "P4" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 8.641732 0.000000 90.000000
+ E 0.147230 1.118322 285.000000
+ E 8.494502 -1.118322 105.000000
+ S 0 0.000000 0.000000 0.000000 1.297200 0.000000
+ S 0 0.000000 1.297200 0.000000 7.344532 0.000000
+ S 0 0.000000 7.344532 0.000000 8.641732 0.000000
+ S 0 0.000000 0.147230 1.118322 1.400229 0.782582
+ S 0 0.000000 1.400229 0.782582 7.241503 -0.782582
+ S 0 0.000000 7.241503 -0.782582 8.494502 -1.118322
+ C 0 0.000000 22.967025 1.297200 -22.967025 0.000000 15.000000
+ C 0 0.000000 -22.967025 7.344532 22.967025 180.000000 15.000000
+ END$SEGS
+
+SUBCONTENTS Fleischmann-Modell - Turnouts
+TURNOUT HO "Fleischmann-Modell Turnout Small Left 6070"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 6.496063 0.000000 90.000000
+ E 6.495950 0.855208 75.000000
+ S 0 0.000000 0.000000 0.000000 0.648600 0.000000
+ S 0 0.000000 0.648600 0.000000 6.496063 0.000000
+ C 0 0.000000 -20.171819 0.648600 20.171819 165.000000 15.000000
+ S 0 0.000000 5.869451 0.687338 6.495950 0.855208
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Turnout Small Right 6071"
+ U "Regular Turnout" "Sillub Technology" "Fleischmann-Modell" "Turnout Small Left" "6070" "Turnout Small Right" "6071" 6.495950 15.000000 0.855208 6.496063
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 6.496063 0.000000 90.000000
+ E 6.495950 -0.855208 105.000000
+ S 0 0.000000 0.000000 0.000000 0.648600 0.000000
+ S 0 0.000000 0.648600 0.000000 6.496063 0.000000
+ C 0 0.000000 20.171819 0.648600 -20.171819 0.000000 15.000000
+ S 0 0.000000 5.869451 -0.687338 6.495950 -0.855208
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Turnout Small Left Elec 6072"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 6.496063 0.000000 90.000000
+ E 6.495950 0.855208 75.000000
+ S 0 0.000000 0.000000 0.000000 0.648600 0.000000
+ S 0 0.000000 0.648600 0.000000 6.496063 0.000000
+ C 0 0.000000 -20.171819 0.648600 20.171819 165.000000 15.000000
+ S 0 0.000000 5.869451 0.687338 6.495950 0.855208
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Turnout Small Right Elec 6073"
+ U "Regular Turnout" "Sillub Technology" "Fleischmann-Modell" "Turnout Small Left Elec" "6072" "Turnout Small Right Elec" "6073" 6.495950 15.000000 0.855208 6.496063
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 6.496063 0.000000 90.000000
+ E 6.495950 -0.855208 105.000000
+ S 0 0.000000 0.000000 0.000000 0.648600 0.000000
+ S 0 0.000000 0.648600 0.000000 6.496063 0.000000
+ C 0 0.000000 20.171819 0.648600 -20.171819 0.000000 15.000000
+ S 0 0.000000 5.869451 -0.687338 6.495950 -0.855208
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Curved Turnout Left 6074"
+ P "Normal" 1 4 5
+ P "Reverse" 1 6 2 3
+ E 0.000000 0.000000 270.000000
+ E 7.027559 1.883029 60.000000
+ E 7.487507 0.849715 75.000000
+ S 0 0.000000 0.000000 0.000000 0.648600 0.000000
+ C 0 0.000000 -20.010608 1.681881 20.010608 165.000000 15.000000
+ S 0 0.000000 6.861007 0.681845 7.487507 0.849715
+ C 0 0.000000 -11.634510 0.648600 11.634510 150.000000 30.000000
+ S 0 0.000000 6.465855 1.558729 7.027559 1.883029
+ S 0 0.000000 0.648600 0.000000 1.681881 0.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Curved Turnout Right 6075"
+ U "Curved Turnout" "Sillub Technology" "Fleischmann-Modell" "Curved Turnout Left" "6074" "Curved Turnout Right" "6075" 7.487507 15.000000 0.849715 30.000000 1.883029 7.027559
+ P "Normal" 1 4 5
+ P "Reverse" 1 6 2 3
+ E 0.000000 0.000000 270.000000
+ E 7.027559 -1.883029 120.000000
+ E 7.487507 -0.849715 105.000000
+ S 0 0.000000 0.000000 0.000000 0.648600 0.000000
+ C 0 0.000000 20.010608 1.681881 -20.010608 0.000000 15.000000
+ S 0 0.000000 6.861007 -0.681845 7.487507 -0.849715
+ C 0 0.000000 11.634510 0.648600 -11.634510 0.000000 30.000000
+ S 0 0.000000 6.465855 -1.558729 7.027559 -1.883029
+ S 0 0.000000 0.648600 0.000000 1.681881 0.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Curved Turnout Left Elec 6076"
+ P "Normal" 1 4 5
+ P "Reverse" 1 6 2 3
+ E 0.000000 0.000000 270.000000
+ E 7.027559 1.883029 60.000000
+ E 7.487507 0.849715 75.000000
+ S 0 0.000000 0.000000 0.000000 0.648600 0.000000
+ C 0 0.000000 -20.010608 1.681881 20.010608 165.000000 15.000000
+ S 0 0.000000 6.861007 0.681845 7.487507 0.849715
+ C 0 0.000000 -11.634510 0.648600 11.634510 150.000000 30.000000
+ S 0 0.000000 6.465855 1.558729 7.027559 1.883029
+ S 0 0.000000 0.648600 0.000000 1.681881 0.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Curved Turnout Right Elec 6077"
+ U "Curved Turnout" "Sillub Technology" "Fleischmann-Modell" "Curved Turnout Left Elec" "6076" "Curved Turnout Right Elec" "6077" 7.487507 15.000000 0.849715 30.000000 1.883029 7.027559
+ P "Normal" 1 4 5
+ P "Reverse" 1 6 2 3
+ E 0.000000 0.000000 270.000000
+ E 7.027559 -1.883029 120.000000
+ E 7.487507 -0.849715 105.000000
+ S 0 0.000000 0.000000 0.000000 0.648600 0.000000
+ C 0 0.000000 20.010608 1.681881 -20.010608 0.000000 15.000000
+ S 0 0.000000 6.861007 -0.681845 7.487507 -0.849715
+ C 0 0.000000 11.634510 0.648600 -11.634510 0.000000 30.000000
+ S 0 0.000000 6.465855 -1.558729 7.027559 -1.883029
+ S 0 0.000000 0.648600 0.000000 1.681881 0.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Turnout Medium Left 6078"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.031496 0.000000 90.000000
+ E 8.031496 0.990029 75.000000
+ S 0 0.000000 0.000000 0.000000 1.160081 0.000000
+ S 0 0.000000 1.160081 0.000000 8.031496 0.000000
+ C 0 0.000000 -24.128500 1.160081 24.128500 165.000000 15.000000
+ S 0 0.000000 7.404997 0.822159 8.031496 0.990029
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Turnout Medium Right 6079"
+ U "Regular Turnout" "Sillub Technology" "Fleischmann-Modell" "Turnout Medium Left" "6078" "Turnout Medium Right" "6079" 8.031496 15.000000 0.990029 8.031496
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.031496 0.000000 90.000000
+ E 8.031496 -0.990029 105.000000
+ S 0 0.000000 0.000000 0.000000 1.160081 0.000000
+ S 0 0.000000 1.160081 0.000000 8.031496 0.000000
+ C 0 0.000000 24.128500 1.160081 -24.128500 0.000000 15.000000
+ S 0 0.000000 7.404997 -0.822159 8.031496 -0.990029
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Turnout Medium Left Elec 6080"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.031496 0.000000 90.000000
+ E 8.031496 0.990029 75.000000
+ S 0 0.000000 0.000000 0.000000 1.160081 0.000000
+ S 0 0.000000 1.160081 0.000000 8.031496 0.000000
+ C 0 0.000000 -24.128500 1.160081 24.128500 165.000000 15.000000
+ S 0 0.000000 7.404997 0.822159 8.031496 0.990029
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Turnout Medium Right Elec 6081"
+ U "Regular Turnout" "Sillub Technology" "Fleischmann-Modell" "Turnout Medium Left Elec" "6080" "Turnout Medium Right Elec" "6081" 8.031496 15.000000 0.990029 8.031496
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.031496 0.000000 90.000000
+ E 8.031496 -0.990029 105.000000
+ S 0 0.000000 0.000000 0.000000 1.160081 0.000000
+ S 0 0.000000 1.160081 0.000000 8.031496 0.000000
+ C 0 0.000000 24.128500 1.160081 -24.128500 0.000000 15.000000
+ S 0 0.000000 7.404997 -0.822159 8.031496 -0.990029
+ END$SEGS
diff --git a/app/lib/params/fl-profi.xtp b/app/lib/params/HO-fl-profi.xtp
index 928e72d..4e9d575 100644
--- a/app/lib/params/fl-profi.xtp
+++ b/app/lib/params/HO-fl-profi.xtp
@@ -1,331 +1,280 @@
CONTENTS Fleischmann HO Profi-Gleis
+SUBCONTENTS Fleischmann-Profi - Straight Tracks
TURNOUT HO "Fleischmann-Profi Straight 200mm 6101"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.874016 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 7.874016 0.000000
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Profi Straight 105mm 6102"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 4.133858 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 4.133858 0.000000
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Profi Straight 100mm 6103"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.937008 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 3.937008 0.000000
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Profi Straight 10mm 6107"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 0.393701 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 0.393701 0.000000
- END
+ END$SEGS
+
+SUBCONTENTS Fleischmann-Profi - Misc Tracks
TURNOUT HO "Fleischmann-Profi Adjustable 80-120mm 6110"
P "Normal" 1
X adjustable 3.1496063 4.724409
E 0.000000 0.000000 270.000000
E 3.1496063 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 3.1496063 0.000000
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Profi Uncoupler Elec 6112"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.937008 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 3.937008 0.000000
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Profi Uncoupler Elec w/ Signal 6113"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.937008 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 3.937008 0.000000
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Profi Uncoupler Man 6114"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.937008 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 3.937008 0.000000
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Profi Bumper 6116"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.937008 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 3.937008 0.000000
- END
-TURNOUT HO "Fleischmann-Profi Curve 358.5mm 36° 6120"
+ END$SEGS
+
+SUBCONTENTS Fleischmann-Profi - Curve Tracks
+TURNOUT HO "Fleischmann-Profi Curve 358.5mm 36d 6120"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 8.296103 2.695567 54.000000
C 0 0.000000 -14.114173 0.000000 14.114173 144.000000 36.000000
- END
-TURNOUT HO "Fleischmann-Profi Curve 358.5mm 18° 6122"
+ END$SEGS
+TURNOUT HO "Fleischmann-Profi Curve 358.5mm 18d 6122"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 4.361519 0.690797 72.000000
C 0 0.000000 -14.114173 0.000000 14.114173 162.000000 18.000000
- END
-TURNOUT HO "Fleischmann-Profi Curve 420mm 36° 6125"
+ END$SEGS
+TURNOUT HO "Fleischmann-Profi Curve 420mm 36d 6125"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 9.719284 3.157987 54.000000
C 0 0.000000 -16.535433 0.000000 16.535433 144.000000 36.000000
- END
-TURNOUT HO "Fleischmann-Profi Curve 420mm 18° 6127"
+ END$SEGS
+TURNOUT HO "Fleischmann-Profi Curve 420mm 18d 6127"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 5.109730 0.809302 72.000000
C 0 0.000000 -16.535433 0.000000 16.535433 162.000000 18.000000
- END
-TURNOUT HO "Fleischmann-Profi Curve 483.5m 18° 6131"
+ END$SEGS
+TURNOUT HO "Fleischmann-Profi Curve 483.5m 18d 6131"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 5.882272 0.931660 72.000000
C 0 0.000000 -19.035433 0.000000 19.035433 162.000000 18.000000
- END
-TURNOUT HO "Fleischmann-Profi Curve 547mm 18° 6133"
+ END$SEGS
+TURNOUT HO "Fleischmann-Profi Curve 547mm 18d 6133"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 6.654815 1.054019 72.000000
C 0 0.000000 -21.535433 0.000000 21.535433 162.000000 18.000000
- END
-TURNOUT HO "Fleischmann-Profi Curve 647mm 18° 6138"
+ END$SEGS
+TURNOUT HO "Fleischmann-Profi Curve 647mm 18d 6138"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.871417 1.246710 72.000000
C 0 0.000000 -25.472441 0.000000 25.472441 162.000000 18.000000
- END
-TURNOUT HO "Fleischmann-Profi Curve 788mm 7.5° 6139"
+ END$SEGS
+TURNOUT HO "Fleischmann-Profi Curve 788mm 7.5d 6139"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 4.049395 0.265411 82.500000
C 0 0.000000 -31.023622 0.000000 31.023622 172.500000 7.500000
- END
-TURNOUT HO "Fleischmann-Modell Large Turntable 6154" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- P "7" 7
- P "8" 8
- P "9" 9
- P "10" 10
- P "11" 11
- P "12" 12
- P "13" 13
- P "14" 14
- P "15" 15
- P "16" 16
- P "17" 17
- P "18" 18
- P "19" 19
- P "20" 20
- P "21" 21
- P "22" 22
- P "23" 23
- P "24" 24
- P "25" 25
- P "26" 26
- P "27" 27
- P "28" 28
- P "29" 29
- P "30" 30
- P "31" 31
- P "32" 32
- P "33" 33
- P "34" 34
- P "35" 35
- P "36" 36
- P "37" 37
- P "38" 38
- P "39" 39
- P "40" 40
- P "41" 41
- P "42" 42
- P "43" 43
- P "44" 44
- P "45" 45
- P "46" 46
- P "47" 47
- P "48" 48
- E 0.000000 8.956693 0.000000
- E 1.169083 8.880067 7.500000
- E 2.318163 8.651501 15.000000
- E 3.427578 8.274905 22.500000
- E 4.478346 7.756724 30.000000
- E 5.452489 7.105822 37.500000
- E 6.333338 6.333338 45.000000
- E 7.105822 5.452489 52.500000
- E 7.756724 4.478346 60.000000
- E 8.274905 3.427578 67.500000
- E 8.651501 2.318163 75.000000
- E 8.880067 1.169083 82.500000
- E 8.956693 0.000000 90.000000
- E 8.880067 -1.169083 97.500000
- E 8.651501 -2.318163 105.000000
- E 8.274905 -3.427578 112.500000
- E 7.756724 -4.478346 120.000000
- E 7.105822 -5.452489 127.500000
- E 6.333338 -6.333338 135.000000
- E 5.452489 -7.105822 142.500000
- E 4.478346 -7.756724 150.000000
- E 3.427578 -8.274905 157.500000
- E 2.318163 -8.651501 165.000000
- E 1.169083 -8.880067 172.500000
- E -0.000000 -8.956693 180.000000
- E -1.169083 -8.880067 187.500000
- E -2.318163 -8.651501 195.000000
- E -3.427578 -8.274905 202.500000
- E -4.478346 -7.756724 210.000000
- E -5.452489 -7.105822 217.500000
- E -6.333338 -6.333338 225.000000
- E -7.105822 -5.452489 232.500000
- E -7.756724 -4.478346 240.000000
- E -8.274905 -3.427578 247.500000
- E -8.651501 -2.318163 255.000000
- E -8.880067 -1.169083 262.500000
- E -8.956693 0.000000 270.000000
- E -8.880067 1.169083 277.500000
- E -8.651501 2.318163 285.000000
- E -8.274905 3.427578 292.500000
- E -7.756724 4.478346 300.000000
- E -7.105822 5.452489 307.500000
- E -6.333338 6.333338 315.000000
- E -5.452489 7.105822 322.500000
- E -4.478346 7.756724 330.000000
- E -3.427578 8.274905 337.500000
- E -2.318163 8.651501 345.000000
- E -1.169083 8.880067 352.500000
- S 0 0 0.000000 8.956693 0.000000 6.102362
- S 0 0 1.169083 8.880067 0.796518 6.050156
- S 0 0 2.318163 8.651501 1.579408 5.894429
- S 0 0 3.427578 8.274905 2.335273 5.637848
- S 0 0 4.478346 7.756724 3.051181 5.284801
- S 0 0 5.452489 7.105822 3.714883 4.841329
- S 0 0 6.333338 6.333338 4.315022 4.315022
- S 0 0 7.105822 5.452489 4.841329 3.714883
- S 0 0 7.756724 4.478346 5.284801 3.051181
- S 0 0 8.274905 3.427578 5.637848 2.335273
- S 0 0 8.651501 2.318163 5.894429 1.579408
- S 0 0 8.880067 1.169083 6.050156 0.796518
- S 0 0 8.956693 0.000000 6.102362 0.000000
- S 0 0 8.880067 -1.169083 6.050156 -0.796518
- S 0 0 8.651501 -2.318163 5.894429 -1.579408
- S 0 0 8.274905 -3.427578 5.637848 -2.335273
- S 0 0 7.756724 -4.478346 5.284801 -3.051181
- S 0 0 7.105822 -5.452489 4.841329 -3.714883
- S 0 0 6.333338 -6.333338 4.315022 -4.315022
- S 0 0 5.452489 -7.105822 3.714883 -4.841329
- S 0 0 4.478346 -7.756724 3.051181 -5.284801
- S 0 0 3.427578 -8.274905 2.335273 -5.637848
- S 0 0 2.318163 -8.651501 1.579408 -5.894429
- S 0 0 1.169083 -8.880067 0.796518 -6.050156
- S 0 0 -0.000000 -8.956693 -0.000000 -6.102362
- S 0 0 -1.169083 -8.880067 -0.796518 -6.050156
- S 0 0 -2.318163 -8.651501 -1.579408 -5.894429
- S 0 0 -3.427578 -8.274905 -2.335273 -5.637848
- S 0 0 -4.478346 -7.756724 -3.051181 -5.284801
- S 0 0 -5.452489 -7.105822 -3.714883 -4.841329
- S 0 0 -6.333338 -6.333338 -4.315022 -4.315022
- S 0 0 -7.105822 -5.452489 -4.841329 -3.714883
- S 0 0 -7.756724 -4.478346 -5.284801 -3.051181
- S 0 0 -8.274905 -3.427578 -5.637848 -2.335273
- S 0 0 -8.651501 -2.318163 -5.894429 -1.579408
- S 0 0 -8.880067 -1.169083 -6.050156 -0.796518
- S 0 0 -8.956693 0.000000 -6.102362 0.000000
- S 0 0 -8.880067 1.169083 -6.050156 0.796518
- S 0 0 -8.651501 2.318163 -5.894429 1.579408
- S 0 0 -8.274905 3.427578 -5.637848 2.335273
- S 0 0 -7.756724 4.478346 -5.284801 3.051181
- S 0 0 -7.105822 5.452489 -4.841329 3.714883
- S 0 0 -6.333338 6.333338 -4.315022 4.315022
- S 0 0 -5.452489 7.105822 -3.714883 4.841329
- S 0 0 -4.478346 7.756724 -3.051181 5.284801
- S 0 0 -3.427578 8.274905 -2.335273 5.637848
- S 0 0 -2.318163 8.651501 -1.579408 5.894429
- S 0 0 -1.169083 8.880067 -0.796518 6.050156
- A 16711680 0 8.956693 0.000000 0.000000 0.000000 360.000000
- A 16711680 0 6.102362 0.000000 0.000000 0.000000 360.000000
- END
-TURNOUT HO "Fleischmann-Modell Small Turntable 6154" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- P "7" 7
- P "8" 8
- P "9" 9
- P "10" 10
- P "11" 11
- P "12" 12
- P "13" 13
- P "14" 14
- P "15" 15
- P "16" 16
- P "17" 17
- P "18" 18
- P "19" 19
- P "20" 20
- P "21" 21
- P "22" 22
- P "23" 23
- P "24" 24
- E 0.000000 4.665354 0.000000
- E 1.207483 4.506386 15.000000
- E 2.332677 4.040315 30.000000
- E 3.298904 3.298904 45.000000
- E 4.040315 2.332677 60.000000
- E 4.506386 1.207483 75.000000
- E 4.665354 0.000000 90.000000
- E 4.506386 -1.207483 105.000000
- E 4.040315 -2.332677 120.000000
- E 3.298904 -3.298904 135.000000
- E 2.332677 -4.040315 150.000000
- E 1.207483 -4.506386 165.000000
- E -0.000000 -4.665354 180.000000
- E -1.207483 -4.506386 195.000000
- E -2.332677 -4.040315 210.000000
- E -3.298904 -3.298904 225.000000
- E -4.040315 -2.332677 240.000000
- E -4.506386 -1.207483 255.000000
- E -4.665354 0.000000 270.000000
- E -4.506386 1.207483 285.000000
- E -4.040315 2.332677 300.000000
- E -3.298904 3.298904 315.000000
- E -2.332677 4.040315 330.000000
- E -1.207483 4.506386 345.000000
- S 0 0 0.000000 4.665354 0.000000 3.602362
- S 0 0 1.207483 4.506386 0.932360 3.479615
- S 0 0 2.332677 4.040315 1.801181 3.119737
- S 0 0 3.298904 3.298904 2.547255 2.547255
- S 0 0 4.040315 2.332677 3.119737 1.801181
- S 0 0 4.506386 1.207483 3.479615 0.932360
- S 0 0 4.665354 0.000000 3.602362 0.000000
- S 0 0 4.506386 -1.207483 3.479615 -0.932360
- S 0 0 4.040315 -2.332677 3.119737 -1.801181
- S 0 0 3.298904 -3.298904 2.547255 -2.547255
- S 0 0 2.332677 -4.040315 1.801181 -3.119737
- S 0 0 1.207483 -4.506386 0.932360 -3.479615
- S 0 0 -0.000000 -4.665354 -0.000000 -3.602362
- S 0 0 -1.207483 -4.506386 -0.932360 -3.479615
- S 0 0 -2.332677 -4.040315 -1.801181 -3.119737
- S 0 0 -3.298904 -3.298904 -2.547255 -2.547255
- S 0 0 -4.040315 -2.332677 -3.119737 -1.801181
- S 0 0 -4.506386 -1.207483 -3.479615 -0.932360
- S 0 0 -4.665354 0.000000 -3.602362 0.000000
- S 0 0 -4.506386 1.207483 -3.479615 0.932360
- S 0 0 -4.040315 2.332677 -3.119737 1.801181
- S 0 0 -3.298904 3.298904 -2.547255 2.547255
- S 0 0 -2.332677 4.040315 -1.801181 3.119737
- S 0 0 -1.207483 4.506386 -0.932360 3.479615
- A 16711680 0 4.665354 0.000000 0.000000 0.000000 360.000000
- A 16711680 0 3.602362 0.000000 0.000000 0.000000 360.000000
- END
+ END$SEGS
+
+SUBCONTENTS Fleischmann-Profi - Turntables
+TURNOUT HO "Fleischmann-Profi Turntable 183mm Dia 15d 24 Positions 6154" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ E 0.000000 3.602362 0.000000
+ E 0.932360 3.479615 15.000000
+ E 1.801181 3.119737 30.000000
+ E 2.547255 2.547255 45.000000
+ E 3.119737 1.801181 60.000000
+ E 3.479615 0.932360 75.000000
+ E 3.602362 0.000000 90.000000
+ E 3.479615 -0.932360 105.000000
+ E 3.119737 -1.801181 120.000000
+ E 2.547255 -2.547255 135.000000
+ E 1.801181 -3.119737 150.000000
+ E 0.932360 -3.479615 165.000000
+ E 0.000000 -3.602362 180.000000
+ E -0.932360 -3.479615 195.000000
+ E -1.801181 -3.119737 210.000000
+ E -2.547255 -2.547255 225.000000
+ E -3.119737 -1.801181 240.000000
+ E -3.479615 -0.932360 255.000000
+ E -3.602362 0.000000 270.000000
+ E -3.479615 0.932360 285.000000
+ E -3.119737 1.801181 300.000000
+ E -2.547255 2.547255 315.000000
+ E -1.801181 3.119737 330.000000
+ E -0.932360 3.479615 345.000000
+ S 16777215 0 0.000000 3.602362 0.000000 -3.602362
+ S 16777215 0 0.932360 3.479615 -0.932360 -3.479615
+ S 16777215 0 1.801181 3.119737 -1.801181 -3.119737
+ S 16777215 0 2.547255 2.547255 -2.547255 -2.547255
+ S 16777215 0 3.119737 1.801181 -3.119737 -1.801181
+ S 16777215 0 3.479615 0.932360 -3.479615 -0.932360
+ S 16777215 0 3.602362 0.000000 -3.602362 0.000000
+ S 16777215 0 3.479615 -0.932360 -3.479615 0.932360
+ S 16777215 0 3.119737 -1.801181 -3.119737 1.801181
+ S 16777215 0 2.547255 -2.547255 -2.547255 2.547255
+ S 16777215 0 1.801181 -3.119737 -1.801181 3.119737
+ S 16777215 0 0.932360 -3.479615 -0.932360 3.479615
+ A3 8424071 0.031250 3.602362 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 5.059055 0.000000 0.000000 0 0.000000 360.000000
+END$SEGS
+TURNOUT HO "Fleischmann-Profi Turntable Extension 37mm 6155"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.456693 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.456693 0.000000
+ END$SEGS
+TURNOUT HO "Fleischmann-Modell Turntable 310mm Dia 7.5d 48 Pos 6152" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ P "13" 13
+ P "14" 14
+ P "15" 15
+ P "16" 16
+ P "17" 17
+ P "18" 18
+ P "19" 19
+ P "20" 20
+ P "21" 21
+ P "22" 22
+ P "23" 23
+ P "24" 24
+ E 0.000000 6.102362 0.000000
+ E 0.796518 6.050156 7.500000
+ E 1.579408 5.894429 15.000000
+ E 2.335273 5.637848 22.500000
+ E 3.051181 5.284801 30.000000
+ E 3.714883 4.841329 37.500000
+ E 4.315022 4.315022 45.000000
+ E 4.841329 3.714883 52.500000
+ E 5.284801 3.051181 60.000000
+ E 5.637848 2.335273 67.500000
+ E 5.894429 1.579408 75.000000
+ E 6.050156 0.796518 82.500000
+ E 6.102362 0.000000 90.000000
+ E 6.050156 -0.796518 97.500000
+ E 5.894429 -1.579408 105.000000
+ E 5.637848 -2.335273 112.500000
+ E 5.284801 -3.051181 120.000000
+ E 4.841329 -3.714883 127.500000
+ E 4.315022 -4.315022 135.000000
+ E 3.714883 -4.841329 142.500000
+ E 3.051181 -5.284801 150.000000
+ E 2.335273 -5.637848 157.500000
+ E 1.579408 -5.894429 165.000000
+ E 0.796518 -6.050156 172.500000
+ E 0.000000 -6.102362 180.000000
+ E -0.796518 -6.050156 187.500000
+ E -1.579408 -5.894429 195.000000
+ E -2.335273 -5.637848 202.500000
+ E -3.051181 -5.284801 210.000000
+ E -3.714883 -4.841329 217.500000
+ E -4.315022 -4.315022 225.000000
+ E -4.841329 -3.714883 232.500000
+ E -5.284801 -3.051181 240.000000
+ E -5.637848 -2.335273 247.500000
+ E -5.894429 -1.579408 255.000000
+ E -6.050156 -0.796518 262.500000
+ E -6.102362 0.000000 270.000000
+ E -6.050156 0.796518 277.500000
+ E -5.894429 1.579408 285.000000
+ E -5.637848 2.335273 292.500000
+ E -5.284801 3.051181 300.000000
+ E -4.841329 3.714883 307.500000
+ E -4.315022 4.315022 315.000000
+ E -3.714883 4.841329 322.500000
+ E -3.051181 5.284801 330.000000
+ E -2.335273 5.637848 337.500000
+ E -1.579408 5.894429 345.000000
+ E -0.796518 6.050156 352.500000
+ S 16777215 0 0.000000 6.102362 0.000000 -6.102362
+ S 16777215 0 0.796518 6.050156 -0.796518 -6.050156
+ S 16777215 0 1.579408 5.894429 -1.579408 -5.894429
+ S 16777215 0 2.335273 5.637848 -2.335273 -5.637848
+ S 16777215 0 3.051181 5.284801 -3.051181 -5.284801
+ S 16777215 0 3.714883 4.841329 -3.714883 -4.841329
+ S 16777215 0 4.315022 4.315022 -4.315022 -4.315022
+ S 16777215 0 4.841329 3.714883 -4.841329 -3.714883
+ S 16777215 0 5.284801 3.051181 -5.284801 -3.051181
+ S 16777215 0 5.637848 2.335273 -5.637848 -2.335273
+ S 16777215 0 5.894429 1.579408 -5.894429 -1.579408
+ S 16777215 0 6.050156 0.796518 -6.050156 -0.796518
+ S 16777215 0 6.102362 0.000000 -6.102362 0.000000
+ S 16777215 0 6.050156 -0.796518 -6.050156 0.796518
+ S 16777215 0 5.894429 -1.579408 -5.894429 1.579408
+ S 16777215 0 5.637848 -2.335273 -5.637848 2.335273
+ S 16777215 0 5.284801 -3.051181 -5.284801 3.051181
+ S 16777215 0 4.841329 -3.714883 -4.841329 3.714883
+ S 16777215 0 4.315022 -4.315022 -4.315022 4.315022
+ S 16777215 0 3.714883 -4.841329 -3.714883 4.841329
+ S 16777215 0 3.051181 -5.284801 -3.051181 5.284801
+ S 16777215 0 2.335273 -5.637848 -2.335273 5.637848
+ S 16777215 0 1.579408 -5.894429 -1.579408 5.894429
+ S 16777215 0 0.796518 -6.050156 -0.796518 6.050156
+ A3 8424071 0.031250 6.102362 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 7.578740 0.000000 0.000000 0 0.000000 360.000000
+END$SEGS
+TURNOUT HO "Fleischmann-Profi Turntable Extension 77.5mm 9153"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.051181 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.051181 0.000000
+ END$SEGS
+
+SUBCONTENTS Fleischmann-Profi - 3-Way Turnouts
TURNOUT HO "Fleischmann-Profi 3-Way Turnout 6157"
P "Left" 1 2 3
P "Normal" 1 6
@@ -340,7 +289,7 @@ TURNOUT HO "Fleischmann-Profi 3-Way Turnout 6157"
C 0 0.000000 21.377339 0.651200 -21.377339 0.000000 18.000000
S 0 0.000000 7.257160 -1.046281 7.874016 -1.246710
S 0 0.000000 0.651200 0.000000 7.874016 0.000000
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Profi 3-Way Turnout Elec 6158"
P "Left" 1 2 3
P "Normal" 1 6
@@ -355,8 +304,10 @@ TURNOUT HO "Fleischmann-Profi 3-Way Turnout Elec 6158"
C 0 0.000000 21.377339 0.651200 -21.377339 0.000000 18.000000
S 0 0.000000 7.257160 -1.046281 7.874016 -1.246710
S 0 0.000000 0.651200 0.000000 7.874016 0.000000
- END
-TURNOUT HO "Fleischmann-Profi Crossing 36X 6160"
+ END$SEGS
+
+SUBCONTENTS Fleischmann-Profi - Crossings
+TURNOUT HO "Fleischmann-Profi Crossing 36d 6160"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 4.133858 0.000000 90.000000
@@ -364,8 +315,8 @@ TURNOUT HO "Fleischmann-Profi Crossing 36X 6160"
E 3.739110 -1.214910 126.000000
S 0 0.000000 0.000000 0.000000 4.133858 0.000000
S 0 0.000000 0.394748 1.214910 3.739110 -1.214910
-END
-TURNOUT HO "Fleischmann-Profi Crossing 18° Left 6162"
+ END$SEGS
+TURNOUT HO "Fleischmann-Profi Crossing 18d Left 6162"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 7.874016 0.000000 90.000000
@@ -373,8 +324,8 @@ TURNOUT HO "Fleischmann-Profi Crossing 18° Left 6162"
E 7.868541 1.277432 72.000000
S 0 0.000000 0.000000 0.000000 7.874016 0.000000
S 0 0.000000 0.005475 -1.277432 7.868541 1.277432
- END
-TURNOUT HO "Fleischmann-Profi Crossing 18° Right 6163"
+ END$SEGS
+TURNOUT HO "Fleischmann-Profi Crossing 18d Right 6163"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 7.874016 0.000000 90.000000
@@ -382,12 +333,14 @@ TURNOUT HO "Fleischmann-Profi Crossing 18° Right 6163"
E 7.868541 -1.277432 108.000000
S 0 0.000000 0.000000 0.000000 7.874016 0.000000
S 0 0.000000 0.005475 1.277432 7.868541 -1.277432
- END
-TURNOUT HO "Fleischmann-Profi DoubleSlip 18° Left 6164" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 7 6
- P "Slip2" 4 8 3
+ END$SEGS
+
+SUBCONTENTS Fleischmann-Profi - Slip Turnouts
+TURNOUT HO "Fleischmann-Profi DoubleSlip 18d Left 6164" 512
+ P "P1" 1 2 3
+ P "P2" 4 5 6
+ P "P3" 1 7 6
+ P "P4" 4 8 3
E 0.000000 0.000000 270.000000
E 7.874016 0.000000 90.000000
E 0.005475 -1.277432 252.000000
@@ -400,12 +353,12 @@ TURNOUT HO "Fleischmann-Profi DoubleSlip 18° Left 6164" 512
S 0 0.000000 6.634830 0.876576 7.868541 1.277432
C 0 0.000000 -17.909955 1.100350 17.909955 162.000000 18.000000
C 0 0.000000 17.909955 6.773666 -17.909955 342.000000 18.000000
- END
-TURNOUT HO "Fleischmann-Profi DoubleSlip 18° Right 6165" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 7 6
- P "Slip2" 4 8 3
+ END$SEGS
+TURNOUT HO "Fleischmann-Profi DoubleSlip 18d Right 6165" 512
+ P "P1" 1 2 3
+ P "P2" 4 5 6
+ P "P3" 1 7 6
+ P "P4" 4 8 3
E 0.000000 0.000000 270.000000
E 7.874016 0.000000 90.000000
E 0.005475 1.277432 288.000000
@@ -418,12 +371,12 @@ TURNOUT HO "Fleischmann-Profi DoubleSlip 18° Right 6165" 512
S 0 0.000000 6.634830 -0.876576 7.868541 -1.277432
C 0 0.000000 17.909955 1.100350 -17.909955 0.000000 18.000000
C 0 0.000000 -17.909955 6.773666 17.909955 180.000000 18.000000
- END
-TURNOUT HO "Fleischmann-Profi DoubleSlip 18° Left Elec 6166" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 7 6
- P "Slip2" 4 8 3
+ END$SEGS
+TURNOUT HO "Fleischmann-Profi DoubleSlip 18d Left Elec 6166" 512
+ P "P1" 1 2 3
+ P "P2" 4 5 6
+ P "P3" 1 7 6
+ P "P4" 4 8 3
E 0.000000 0.000000 270.000000
E 7.874016 0.000000 90.000000
E 0.005475 -1.277432 252.000000
@@ -436,12 +389,12 @@ TURNOUT HO "Fleischmann-Profi DoubleSlip 18° Left Elec 6166" 512
S 0 0.000000 6.634830 0.876576 7.868541 1.277432
C 0 0.000000 -17.909955 1.100350 17.909955 162.000000 18.000000
C 0 0.000000 17.909955 6.773666 -17.909955 342.000000 18.000000
- END
-TURNOUT HO "Fleischmann-Profi DoubleSlip 18° Right Elec 6167" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 7 6
- P "Slip2" 4 8 3
+ END$SEGS
+TURNOUT HO "Fleischmann-Profi DoubleSlip 18d Right Elec 6167" 512
+ P "P1" 1 2 3
+ P "P2" 4 5 6
+ P "P3" 1 7 6
+ P "P4" 4 8 3
E 0.000000 0.000000 270.000000
E 7.874016 0.000000 90.000000
E 0.005475 1.277432 288.000000
@@ -454,7 +407,9 @@ TURNOUT HO "Fleischmann-Profi DoubleSlip 18° Right Elec 6167" 512
S 0 0.000000 6.634830 -0.876576 7.868541 -1.277432
C 0 0.000000 17.909955 1.100350 -17.909955 0.000000 18.000000
C 0 0.000000 -17.909955 6.773666 17.909955 180.000000 18.000000
- END
+ END$SEGS
+
+SUBCONTENTS Fleischmann-Profi - Turnouts
TURNOUT HO "Fleischmann-Profi Turnout Left 6170"
P "Normal" 1 2
P "Reverse" 1 3 4
@@ -465,7 +420,7 @@ TURNOUT HO "Fleischmann-Profi Turnout Left 6170"
S 0 0.000000 0.648600 0.000000 7.874016 0.000000
C 0 0.000000 -21.377342 0.648600 21.377342 162.000000 18.000000
S 0 0.000000 7.254562 1.046282 7.871417 1.246710
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Profi Turnout Right 6171"
U "Regular Turnout" "Sillub Technology" "Fleischmann-Profi" "Turnout Left" "6170" "Turnout Right" "6171" 7.871417 18.000000 1.246710 7.874016
P "Normal" 1 2
@@ -477,7 +432,7 @@ TURNOUT HO "Fleischmann-Profi Turnout Right 6171"
S 0 0.000000 0.648600 0.000000 7.874016 0.000000
C 0 0.000000 21.377342 0.648600 -21.377342 0.000000 18.000000
S 0 0.000000 7.254562 -1.046282 7.871417 -1.246710
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Profi Turnout Left Elec 6172"
P "Normal" 1 2
P "Reverse" 1 3 4
@@ -488,7 +443,7 @@ TURNOUT HO "Fleischmann-Profi Turnout Left Elec 6172"
S 0 0.000000 0.648600 0.000000 7.874016 0.000000
C 0 0.000000 -21.377342 0.648600 21.377342 162.000000 18.000000
S 0 0.000000 7.254562 1.046282 7.871417 1.246710
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Profi Turnout Right Elec 6173"
U "Regular Turnout" "Sillub Technology" "Fleischmann-Profi" "Turnout Left Elec" "6172" "Turnout Right Elec" "6173" 7.871417 18.000000 1.246710 7.874016
P "Normal" 1 2
@@ -500,7 +455,7 @@ TURNOUT HO "Fleischmann-Profi Turnout Right Elec 6173"
S 0 0.000000 0.648600 0.000000 7.874016 0.000000
C 0 0.000000 21.377342 0.648600 -21.377342 0.000000 18.000000
S 0 0.000000 7.254562 -1.046282 7.871417 -1.246710
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Profi Curved Left 6174"
P "Normal" 1 4 5
P "Reverse" 1 6 2 3
@@ -513,7 +468,7 @@ TURNOUT HO "Fleischmann-Profi Curved Left 6174"
C 0 0.000000 -12.039245 0.648602 12.039245 144.000000 36.000000
S 0 0.000000 7.725092 2.299291 8.249821 2.680529
S 0 0.000000 0.648602 0.000000 3.148602 0.000000
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Profi Curved Right 6175"
U "Curved Turnout" "Sillub Technology" "Fleischmann-Profi" "Curved Left" "6174" "Curved Right" "6175" 10.749821 36.000000 2.680529 36.000000 2.680529 8.249821
P "Normal" 1 4 5
@@ -527,7 +482,7 @@ TURNOUT HO "Fleischmann-Profi Curved Right 6175"
C 0 0.000000 12.039245 0.648602 -12.039245 0.000000 36.000000
S 0 0.000000 7.725092 -2.299291 8.249821 -2.680529
S 0 0.000000 0.648602 0.000000 3.148602 0.000000
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Profi Curved Left Elec 6176"
P "Normal" 1 4 5
P "Reverse" 1 6 2 3
@@ -537,10 +492,10 @@ TURNOUT HO "Fleischmann-Profi Curved Left Elec 6176"
S 0 0.000000 0.000000 0.000000 0.648602 0.000000
C 0 0.000000 -12.039245 3.148602 12.039245 144.000000 36.000000
S 0 0.000000 10.225092 2.299291 10.749821 2.680529
- C 0 0.000000 -12.039245 0.648602 12.039245 144.000000 36.000000
+ C 1 0.000000 -12.039245 0.648602 12.039245 144.000000 36.000000
S 0 0.000000 7.725092 2.299291 8.249821 2.680529
S 0 0.000000 0.648602 0.000000 3.148602 0.000000
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Profi Curved Right Elec 6177"
U "Curved Turnout" "Sillub Technology" "Fleischmann-Profi" "Curved Left" "6174" "Curved Right" "6175" 10.749821 36.000000 2.680529 36.000000 2.680529 8.249821
P "Normal" 1 4 5
@@ -554,7 +509,7 @@ TURNOUT HO "Fleischmann-Profi Curved Right Elec 6177"
C 0 0.000000 12.039245 0.648602 -12.039245 0.000000 36.000000
S 0 0.000000 7.725092 -2.299291 8.249821 -2.680529
S 0 0.000000 0.648602 0.000000 3.148602 0.000000
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Modell Hi-speed Turnout Left 6178"
P "Normal" 1 2
P "Reverse" 1 3 4
@@ -565,7 +520,7 @@ TURNOUT HO "Fleischmann-Modell Hi-speed Turnout Left 6178"
S 0 0.000000 0.648600 0.000000 11.8110236 0.000000
C 0 0.000000 -44.677084 0.648600 44.677084 170.500000 9.500000
S 0 0.000000 8.022446 0.612719 11.811024 1.246710
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Modell Hi-speed Turnout Right 6179"
U "Regular Turnout" "Sillub Technology" "Fleischmann-Modell" "Hi-speed Turnout Left" "6178" "Hi-speed Turnout Right" "6179" 11.811024 9.500000 1.246710 118.110236
P "Normal" 1 2
@@ -577,7 +532,7 @@ TURNOUT HO "Fleischmann-Modell Hi-speed Turnout Right 6179"
S 0 0.000000 0.648600 0.000000 11.8110236 0.000000
C 0 0.000000 44.677084 0.648600 -44.677084 0.000000 9.500000
S 0 0.000000 8.022446 -0.612719 11.811024 -1.246710
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Modell Hi-speed Turnout Elec Left 6180"
P "Normal" 1 2
P "Reverse" 1 3 4
@@ -588,7 +543,7 @@ TURNOUT HO "Fleischmann-Modell Hi-speed Turnout Elec Left 6180"
S 0 0.000000 0.648600 0.000000 11.811024 0.000000
C 0 0.000000 -44.677084 0.648600 44.677084 170.500000 9.500000
S 0 0.000000 8.022446 0.612719 11.811024 1.246710
- END
+ END$SEGS
TURNOUT HO "Fleischmann-Modell Hi-speed Turnout Elec Right 6181"
U "Regular Turnout" "Sillub Technology" "Fleischmann-Modell" "Hi-speed Turnout Elec Left" "6180" "Hi-speed Turnout Elec Right" "6181" 11.811024 9.500000 1.246710 11.811024
P "Normal" 1 2
@@ -600,4 +555,4 @@ TURNOUT HO "Fleischmann-Modell Hi-speed Turnout Elec Right 6181"
S 0 0.000000 0.648600 0.000000 11.811024 0.000000
C 0 0.000000 44.677084 0.648600 -44.677084 0.000000 9.500000
S 0 0.000000 8.022446 -0.612719 11.811024 -1.246710
- END
+ END$SEGS
diff --git a/app/lib/params/HOn30_Minitrains.xtp b/app/lib/params/HOn30_Minitrains.xtp
index 5582df6..c99b391 100644
--- a/app/lib/params/HOn30_Minitrains.xtp
+++ b/app/lib/params/HOn30_Minitrains.xtp
@@ -1,74 +1,126 @@
-CONTENTS Minitrains HOe 009 HOn30 Gleissystem / Track System
-TURNOUT HOn30 "Minitrains Straight Track 2/1 9311"
- U "Straight Section" "" "Minitrains" "Straight Track 2/1" "9311" 6.062992 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.062992 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 6.062992 0.000000
- END
-TURNOUT HOn30 "Minitrains Straight Track 9301"
- U "Straight Section" "" "Minitrains" "Straight Track" "9301" 3.031496 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.031496 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 3.031496 0.000000
- END
-TURNOUT HOn30 "Minitrains Straight Track 9313"
- U "Straight Section" "" "Minitrains" "Straight Track" "9313" 2.480315 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.480315 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 2.480315 0.000000
- END
-TURNOUT HOn30 "Minitrains Feeder Track 9303"
- U "Straight Section" "" "Minitrains" "Feeder Track" "9303" 6.062992 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.062992 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 6.062992 0.000000
- END
-TURNOUT HOn30 "Minitrains Insulated Track 9304"
- U "Straight Section" "" "Minitrains" "Insulated Track" "9304" 3.031496 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.031496 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 3.031496 0.000000
- END
-TURNOUT HOn30 "Minitrains Curved Track 60° 9321"
- U "Curved Section" "" "Minitrains" "Curved Track 60°" "9321" 5.511811 60.000000 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.773366 2.755901 30.000000
- C 0 0.000000 -5.511811 0.000007 5.511811 120.000076 60.000000
- END
-TURNOUT HOn30 "Minitrains Curved Track 30° 9302"
- U "Curved Section" "" "Minitrains" "Curved Track 30°" "9302" 5.511811 30.000000 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.755903 0.738441 60.000000
- C 0 0.000000 -5.511811 0.000007 5.511811 150.000076 30.000000
- END
-TURNOUT HOn30 "Minitrains Left Hand Turnout 9306"
- U "Regular Turnout" "" "Minitrains" "Left Hand Turnout" "9306" "Right Hand Turnout" "9316" 2.755906 30.000000 0.708661 3.031496 0.000000 0.000000 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 3.031496 0.000000 90.000000
- E 2.755906 0.708661 60.000000
- S 0 0.000000 0.000000 0.000000 0.465457 0.000000
- S 0 0.000000 0.465457 0.000000 3.031496 0.000000
- C 0 0.000000 -3.967235 0.465463 3.967235 149.999924 30.000152
- S 0 0.000000 2.449083 0.531513 2.755906 0.708661
- END
-TURNOUT HOn30 "Minitrains Right Hand Turnout 9316"
- U "Regular Turnout" "" "Minitrains" "Left Hand Turnout" "9306" "Right Hand Turnout" "9316" 2.755906 30.000000 0.708661 3.031496 0.000000 0.000000 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 3.031496 0.000000 90.000000
- E 2.755906 -0.708661 120.000000
- S 0 0.000000 0.000000 0.000000 0.465457 0.000000
- S 0 0.000000 0.465457 0.000000 3.031496 0.000000
- C 0 0.000000 3.967235 0.465442 -3.967235 0.000076 30.000152
- S 0 0.000000 2.449083 -0.531513 2.755906 -0.708661
- END
+CONTENTS Minitrains HOe 009 HOn30 Gleissystem / Track System
+SUBCONTENTS Minitrains - Straight Tracks
+TURNOUT HOn30 "Minitrains 154mm Straight Track 9311"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.062992 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 6.062992 0.000000
+ END$SEGS
+TURNOUT HOn30 "Minitrains 114mm Straight Track 9317"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.488489 0.000000
+ END$SEGS
+TURNOUT HOn30 "Minitrains 77mm Straight Track 9301"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.031496 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.031496 0.000000
+ END$SEGS
+TURNOUT HOn30 "Minitrains 63mm Straight Track 9313"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.480315 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 2.480315 0.000000
+ END$SEGS
+TURNOUT HOn30 "Minitrains 66.5mm Straight Track 9314"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.618110 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 2.618110 0.000000
+ END$SEGS
+TURNOUT HOn30 "Minitrains 38.5mm Straight Track 9315"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.515748 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.515748 0.000000
+ END$SEGS
+TURNOUT HOn30 "Minitrains 154mm Feeder Track 9303"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.062992 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 6.062992 0.000000
+ L3 0 0.020000 2.906496 0.177165 0 2.906496 -0.437500 0
+ L3 0 0.020000 2.906496 -0.437500 0 2.843996 -0.500000 0
+ L3 0 0.020000 2.906496 -0.437500 0 2.968996 -0.500000 0
+ L3 16711680 0.020000 3.156496 -0.177165 0 3.156496 -0.437500 0
+ L3 16711680 0.020000 3.156496 -0.437500 0 3.093996 -0.500000 0
+ L3 16711680 0.020000 3.156496 -0.437500 0 3.218996 -0.500000 0
+ END$SEGS
+TURNOUT HOn30 "Minitrains 77mm Insulated Track 9304"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.031496 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.031496 0.000000
+ END$SEGS
+
+SUBCONTENTS Minitrains - Curve Tracks
+TURNOUT HOn30 "Minitrains 140mm Curved Track 60d 9321"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.773368 -2.755905 150.000000
+ C 0 0.000000 5.511811 0.000000 -5.511811 0.000000 60.000000
+ END$SEGS
+TURNOUT HOn30 "Minitrains 140mm Curved Track 30d 9302"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.755906 -0.738443 120.000000
+ C 0 0.000000 5.511811 0.000000 -5.511811 0.000000 30.000000
+ END$SEGS
+TURNOUT HOn30 "Minitrains 215mm Curved Track 32.5d 9341"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.548008 -1.325624 122.500000
+ C 0 0.000000 8.464567 0.000000 -8.464567 0.000000 32.500000
+ END$SEGS
+TURNOUT HOn30 "Minitrains 215mm Curved Track 30d 9340"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.232283 -1.134037 120.000000
+ C 0 0.000000 8.464567 0.000000 -8.464567 0.000000 30.000000
+ END$SEGS
+TURNOUT HOn30 "Minitrains 215mm Curved Track 15d 9342"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.190791 -0.288423 105.000000
+ C 0 0.000000 8.464567 0.000000 -8.464567 0.000000 15.000000
+ END$SEGS
+
+SUBCONTENTS Minitrains - Turnouts/Switches
+TURNOUT HOn30 "Minitrains Left Hand 30d-R140mm Turnout 9306"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 3.031496 0.000000 90.000000
+ E 2.755906 0.738443 60.000000
+ S 0 0.000000 0.000000 0.000000 3.031496 0.000000
+ C 0 0.000000 5.511811 0.000000 5.511811 150.000000 30.000000
+ END$SEGS
+TURNOUT HOn30 "Minitrains Right Hand 30d-R140mm Turnout 9316"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 3.031496 0.000000 90.000000
+ E 2.755906 -0.738443 120.000000
+ S 0 0.000000 0.000000 0.000000 3.031496 0.000000
+ C 0 0.000000 5.511811 0.000000 -5.511811 0.000000 30.000000
+ END$SEGS
+TURNOUT HOn30 "Minitrains Left Hand 27.5d-R215mm Turnout 9346"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ E 3.908502 0.956404 62.500000
+ S 0 0.000000 0.000000 0.000000 4.488189 0.000000
+ C 0 0.000000 8.464567 0.000000 8.464567 152.500000 27.500000
+ END$SEGS
+TURNOUT HOn30 "Minitrains Right Hand 27.5d-R215mm Turnout 9347"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ E 3.908502 -0.956404 117.500000
+ S 0 0.000000 0.000000 0.000000 4.488189 0.000000
+ C 0 0.000000 8.464567 0.000000 -8.464567 0.000000 27.500000
+ END$SEGS
diff --git a/app/lib/params/Mianne-Bench.xtp b/app/lib/params/Mianne-Bench.xtp
new file mode 100644
index 0000000..e126b45
--- /dev/null
+++ b/app/lib/params/Mianne-Bench.xtp
@@ -0,0 +1,134 @@
+CONTENTS Mianne Benchwork
+
+SUBCONTENTS Rectangular Sections
+STRUCTURE * "Benchwork 40"" Leg 1040"
+# B3 16760832 0.062500 -0.875000 0.000000 0 0.875000 0.000000 0 263168
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE * "Benchwork 48"" Leg 1048"
+# B3 16760832 0.062500 -0.875000 0.000000 0 0.875000 0.000000 0 263168
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE * "Benchwork 58"" Leg 1058"
+# B3 16760832 0.062500 -0.875000 0.000000 0 0.875000 0.000000 0 263168
+ F4 16760832 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ Y4 0 0.062500 8 0
+ 0.875000 0.362437 0
+ 0.362437 0.875000 0
+ -0.362437 0.875000 0
+ -0.875000 0.362437 0
+ -0.875000 -0.362437 0
+ -0.362437 -0.875000 0
+ 0.362437 -0.875000 0
+ 0.875000 -0.362437 0
+ END$SEGS
+STRUCTURE * "Benchwork Single Adapter 10xx"
+ F4 16760832 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ Y4 0 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ END$SEGS
+STRUCTURE * "Benchwork Double Adapter 10yy"
+ F4 16760832 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ F4 16760832 0.062500 4 0
+ -0.375000 0.375000 0
+ -0.875000 0.375000 0
+ -0.875000 -0.375000 0
+ -0.375000 -0.375000 0
+ Y4 0 0.062500 4 0
+ 0.375000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 -0.375000 0
+ 0.375000 -0.375000 0
+ Y4 0 0.062500 4 0
+ -0.375000 0.375000 0
+ -0.875000 0.375000 0
+ -0.875000 -0.375000 0
+ -0.375000 -0.375000 0
+ L3 16760832 0.062500 -0.350000 0.000000 0 0.350000 0.000000 0
+ END$SEGS
+STRUCTURE * "Benchwork 12"" I-Beam 0012"
+ B3 16760832 0.062500 0.875000 0.000000 0 11.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE * "Benchwork 18"" I-Beam 0018"
+ B3 16760832 0.062500 0.875000 0.000000 0 17.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE * "Benchwork 24"" I-Beam 0024"
+ B3 16760832 0.062500 0.875000 0.000000 0 23.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE * "Benchwork 30"" I-Beam 0030"
+ B3 16760832 0.062500 0.875000 0.000000 0 29.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE * "Benchwork 36"" I-Beam 0036"
+ B3 16760832 0.062500 0.875000 0.000000 0 35.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE * "Benchwork 42"" I-Beam 0042"
+ B3 16760832 0.062500 0.875000 0.000000 0 41.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE * "Benchwork 48"" I-Beam 0048"
+ B3 16760832 0.062500 0.875000 0.000000 0 47.125000 0.000000 0 133120
+ END$SEGS
+STRUCTURE * "Benchwork 17""/45 I-Beam 1245"
+ B3 16760832 0.062500 0.618718 0.618718 0 11.381282 11.381282 0 133120
+ END$SEGS
+STRUCTURE * "Benchwork 25""/45 I-Beam 1845"
+ B3 16760832 0.062500 0.618718 0.618718 0 17.381282 17.381282 0 133120
+ END$SEGS
+STRUCTURE * "Benchwork 34""/45 I-Beam 2445"
+ B3 16760832 0.062500 0.618718 0.618718 0 23.381282 23.381282 0 133120
+ END$SEGS
+STRUCTURE * "Benchwork 42""/45 I-Beam 3045"
+ B3 16760832 0.062500 0.618718 0.618718 0 29.381282 29.381282 0 133120
+ END$SEGS
diff --git a/app/lib/params/N-Atlas Code 80 Track.xtp b/app/lib/params/N-Atlas Code 80 Track.xtp
index 1b3586a..6f2223a 100644
--- a/app/lib/params/N-Atlas Code 80 Track.xtp
+++ b/app/lib/params/N-Atlas Code 80 Track.xtp
@@ -1,845 +1,898 @@
-CONTENTS Atlas N Scale Track Code 80
-SUBCONTENTS Atlas N-Scale Track - Straight
-TURNOUT N "Atlas 30in Flex 2500"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 29.500000 0.000000 90.000000
- S 0 0 0.000000 0.000000 29.500000 0.000000
-END
-TURNOUT N "Atlas 5in Straight 2501"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.881890 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.881890 0.000000
-END
-TURNOUT N "Atlas 2 1/2in Straight 2509A"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.440945 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.440945 0.000000
-END
-TURNOUT N "Atlas 1 1/4in Straight 2509B"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.220472 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.220472 0.000000
-END
-TURNOUT N "Atlas 5/8in Straight 2509C"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.610236 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.610236 0.000000
-END
-TURNOUT N "Atlas Custom Adj. Straight CAS"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.250000 0.000000 90.000000
- X adjustable 0.250000 30.000000
- S 0 0 0.000000 0.000000 0.250000 0.000000
-END
-
-SUBCONTENTS Atlas N-Scale Track - Curved
-TURNOUT N "Atlas 9 3/4R full section 2510"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.881890 -1.308098 120.000000
- C 0 0 9.763780 0.000000 -9.763780 0.000000 30.000000
-END
-TURNOUT N "Atlas 9 3/4R half section 2511"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.527052 -0.332693 105.000000
- C 0 0 9.763780 0.000000 -9.763780 0.000000 15.000000
-END
-TURNOUT N "Atlas 11R full section 2520"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.551181 -1.487434 120.000000
- C 0 0 11.102362 0.000000 -11.102362 0.000000 30.000000
-END
-TURNOUT N "Atlas 11R half section 2521"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.873503 -0.378304 105.000000
- C 0 0 11.102362 0.000000 -11.102362 0.000000 15.000000
-END
-TURNOUT N "Atlas 19R section 2526"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.901258 -0.645263 105.000000
- C 0 0 18.937008 0.000000 -18.937008 0.000000 15.000000
-END
-
-SUBCONTENTS Atlas N-Scale Track - Bumper / Rerailer
-TURNOUT N "Atlas Bumper Track 2536"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0.000000 0.000000 0.000000 2.440945 0.000000
- F3 0 0.000000 4
- 1.630000 0.315000 0
- 2.440945 0.315000 0
- 2.440945 -0.315000 0
- 1.630000 -0.315000 0
-END
-TURNOUT N "Atlas Rerailer Track 2532"
- P "NORMAL" 1
- E 0.000000 0.000000 270.000000
- E 4.881890 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 4.881890 0.000000
- F4 14737632 0.000000 4 0
- 1.000000 0.500000 0
- 3.881890 0.500000 0
- 3.256890 0.225000 0
- 1.625000 0.225000 0
- F4 14737632 0.000000 6 0
- 1.312500 0.000000 0
- 1.625000 0.125000 0
- 3.256890 0.125000 0
- 3.569390 0.000000 0
- 3.256890 -0.125000 0
- 1.625000 -0.125000 0
- F4 14737632 0.000000 4 0
- 1.000000 -0.500000 0
- 3.881890 -0.500000 0
- 3.256890 -0.225000 0
- 1.625000 -0.225000 0
- L3 0 0.020833 1.000000 0.500000 0 1.000000 -0.500000 0
- L3 0 0.020833 1.000000 0.500000 0 3.881890 0.500000 0
- L3 0 0.020833 1.000000 0.500000 0 1.625000 0.225000 0
- L3 0 0.020833 3.256890 0.225000 0 3.881890 0.500000 0
- L3 0 0.020833 1.625000 0.225000 0 3.256890 0.225000 0
- L3 0 0.020833 1.625000 0.125000 0 3.256890 0.125000 0
- L3 0 0.020833 1.312500 0.000000 0 1.625000 0.125000 0
- L3 0 0.020833 3.256890 0.125000 0 3.569390 0.000000 0
- L3 0 0.020833 3.256890 -0.125000 0 3.569390 0.000000 0
- L3 0 0.020833 1.312500 0.000000 0 1.625000 -0.125000 0
- L3 0 0.020833 1.625000 -0.125000 0 3.256890 -0.125000 0
- L3 0 0.020833 1.625000 -0.225000 0 3.256890 -0.225000 0
- L3 0 0.020833 3.256890 -0.225000 0 3.881890 -0.500000 0
- L3 0 0.020833 1.000000 -0.500000 0 1.625000 -0.225000 0
- L3 0 0.020833 1.000000 -0.500000 0 3.881890 -0.500000 0
- L3 0 0.020833 3.881890 0.500000 0 3.881890 -0.500000 0
-END
-
-SUBCONTENTS Atlas N-Scale Track - Bridges
-TURNOUT N "Atlas Warren Truss Bridge 2546"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.881890 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 4.881890 0.000000
- L3 0 0.020833 0.000000 0.750000 0 0.000000 -0.750000 0
- L3 0 0.020833 0.000000 0.750000 0 4.881890 0.750000 0
- L3 0 0.020833 0.000000 0.650000 0 4.881890 0.650000 0
- L3 0 0.020833 0.750000 0.650000 0 0.750000 0.750000 0
- L3 0 0.020833 4.131890 0.650000 0 4.131890 0.750000 0
- L3 0 0.020833 4.131890 -0.650000 0 4.131890 -0.750000 0
- L3 0 0.020833 0.750000 -0.650000 0 0.750000 -0.750000 0
- L3 0 0.020833 0.000000 -0.650000 0 4.881890 -0.650000 0
- L3 0 0.020833 0.000000 -0.750000 0 4.881890 -0.750000 0
- L3 0 0.020833 4.881890 0.750000 0 4.881890 -0.750000 0
-END
-TURNOUT N "Atlas Deck Truss Bridge 2547"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.881890 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 4.881890 0.000000
- L3 0 0.020833 0.000000 0.365000 0 0.000000 -0.365000 0
- L3 0 0.020833 0.000000 0.365000 0 4.881890 0.365000 0
- L3 0 0.020833 0.000000 0.315000 0 4.881890 0.315000 0
- L3 0 0.020833 0.000000 -0.315000 0 4.881890 -0.315000 0
- L3 0 0.020833 0.000000 -0.365000 0 4.881890 -0.365000 0
- L3 0 0.020833 4.881890 0.365000 0 4.881890 -0.365000 0
-END
-TURNOUT N "Atlas Plate Girder Bridge 2548"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.881890 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 4.881890 0.000000
- L3 0 0.020833 0.000000 0.750000 0 0.000000 -0.750000 0
- L3 0 0.020833 0.000000 0.750000 0 4.881890 0.750000 0
- L3 0 0.020833 0.000000 0.650000 0 4.881890 0.650000 0
- L3 0 0.020833 0.000000 -0.650000 0 4.881890 -0.650000 0
- L3 0 0.020833 0.000000 -0.750000 0 4.881890 -0.750000 0
- L3 0 0.020833 4.881890 0.750000 0 4.881890 -0.750000 0
-END
-TURNOUT N "Atlas Through Truss Bridge 10in 2570/71"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 10.000000 0.000000
- L 0 0.053333 0.000000 0.84375 10.000000 0.84375
- L 0 0.053333 0.000000 -0.84375 10.000000 -0.84375
- L 0 0.053333 1.625000 -0.84375 1.625000 0.84375
- L 0 0.053333 1.625000 -0.84375 3.312500 0.84375
- L 0 0.053333 3.312500 -0.84375 1.625000 0.84375
- L 0 0.053333 3.312500 -0.84375 3.312500 0.84375
- L 0 0.053333 3.312500 -0.84375 5.000000 0.84375
- L 0 0.053333 5.000000 -0.84375 3.312500 0.84375
- L 0 0.053333 5.000000 -0.84375 5.000000 0.84375
- L 0 0.053333 5.000000 -0.84375 6.687500 0.84375
- L 0 0.053333 6.687500 -0.84375 5.000000 0.84375
- L 0 0.053333 6.687500 -0.84375 6.687500 0.84375
- L 0 0.053333 6.687500 -0.84375 8.375000 0.84375
- L 0 0.053333 8.375000 -0.84375 6.687500 0.84375
- L 0 0.053333 8.375000 -0.84375 8.375000 0.84375
-END
-# Bridge Pier (Base) Design by Bob Blackwell
-STRUCTURE N "Atlas Bridge Pier 2541"
- X pier 0.140625 "1" 0.281250 "2" 0.421875 "3" 0.562500 "4" 0.703125 "5" 0.843750 "6" 0.984375 "7" 1.125000 "8" 1.265625 "9" 1.406250 "10" 1.546875 "11" 1.687500 "12"
- A3 0 0.020833 0.312500 -0.000000 0.687500 0 270.000000 180.000000
- A3 0 0.020833 0.312500 -0.000000 -0.687500 0 90.000000 180.000000
- L3 0 0.020833 0.312500 0.687500 0 0.312500 -0.687500 0
- L3 0 0.020833 -0.312500 0.687500 0 -0.312500 -0.687500 0
- A3 0 0.020833 0.250000 -0.000000 -0.375000 0 90.000000 180.000000
- A3 0 0.020833 0.250000 -0.000000 0.375000 0 270.000000 180.000000
- L3 0 0.020833 -0.250000 0.375000 0 -0.249999 -0.375000 0
- L3 0 0.020833 0.250000 0.375000 0 0.250001 -0.375000 0
- END
-STRUCTURE N "Atlas Bridge Pier (Base) 2543"
- X pier 1.687500 "B"
- A3 0 0.020833 0.312500 -0.000000 0.687500 0 270.000000 180.000000
- A3 0 0.020833 0.312500 -0.000000 -0.687500 0 90.000000 180.000000
- L3 0 0.020833 0.312500 0.687500 0 0.312500 -0.687500 0
- L3 0 0.020833 -0.312500 0.687500 0 -0.312500 -0.687500 0
- A3 0 0.020833 0.250000 -0.000000 -0.375000 0 90.000000 180.000000
- A3 0 0.020833 0.250000 -0.000000 0.375000 0 270.000000 180.000000
- L3 0 0.020833 -0.250000 0.375000 0 -0.249999 -0.375000 0
- L3 0 0.020833 0.250000 0.375000 0 0.250001 -0.375000 0
- END
-# Viaduct Kit Design by Bob Blackwell
-STRUCTURE N "Atlas Viaduct Kit 2826"
- L3 0 0.020833 0.010419 0.010417 0 4.385419 0.010422 0
- L3 0 0.020833 4.385419 0.010417 0 4.385419 1.135417 0
- L3 0 0.020833 4.385419 1.135422 0 0.010419 1.135417 0
- L3 0 0.020833 0.010418 1.135417 0 0.010417 0.010417 0
- L3 0 0.020833 4.385419 0.104172 0 0.010419 0.104167 0
- L3 0 0.020833 4.385419 1.041676 0 0.010419 1.041670 0
- L3 0 0.020833 4.385419 1.088547 0 0.010419 1.088542 0
- L3 0 0.020833 4.385419 0.057297 0 0.010419 0.057292 0
- END
-
-SUBCONTENTS Atlas N-Scale Track - Crossings
-TURNOUT N "Atlas 15 Degree Crossover 2564"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 5.039370 0.000000 90.000000
- E 4.953515 -0.652139 105.000000
- E 0.085855 0.652139 285.000000
- S 0 0.000000 0.000000 0.000000 5.039370 0.000000
- S 0 0.000000 0.085855 0.652139 4.953515 -0.652139
-END
-TURNOUT N "Atlas 20 Degree Crossing 2565"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.901575 0.000000 90.000000
- E 4.753776 -0.838215 110.000000
- E 0.147799 0.838215 290.000000
- S 0 0.000000 0.000000 0.000000 4.901575 0.000000
- S 0 0.000000 0.147799 0.838215 4.753776 -0.838215
-END
-TURNOUT N "Atlas 30 Degree Crossing 2566"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 2.549213 0.000000 90.000000
- E 2.378449 -0.637301 120.000000
- E 0.170764 0.637301 300.000000
- S 0 0.000000 0.000000 0.000000 2.549213 0.000000
- S 0 0.000000 0.170764 0.637301 2.378449 -0.637301
-END
-TURNOUT N "Atlas 45 Degree Crossing 2567"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.000000 0.000000 90.000000
- E 3.414216 -1.414211 135.000000
- E 0.585784 1.414211 315.000000
- S 0 0.000000 0.000000 0.000000 4.000000 0.000000
- S 0 0.000000 0.585784 1.414211 3.414216 -1.414211
-END
-TURNOUT N "Atlas 60 Degree Crossing 2568"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 3.818898 0.000000 90.000000
- E 2.864177 -1.653629 150.000000
- E 0.954721 1.653629 330.000000
- S 0 0.000000 0.000000 0.000000 3.818898 0.000000
- S 0 0.000000 0.954721 1.653629 2.864177 -1.653629
-END
-TURNOUT N "Atlas 90 Degree Crossing 2569"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 2.440945 2.440945 0.000000
- E 4.881890 0.000000 90.000000
- E 2.440945 -2.440945 180.000000
- S 0 0 0.000000 0.000000 4.881890 0.000000
- S 0 0 2.440945 2.440945 2.440945 -2.440945
-END
-
-SUBCONTENTS Atlas N-Scale Track - Custom (Motorless) Switches
-TURNOUT N "Atlas Custom Std #4 LH Switch 2750"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 4.881890 0.000000 90.000000
- E 4.881890 0.649606 75.000000
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 4.881890 0.000000
- C 0 0.000000 -15.975786 0.354321 15.975786 165.000000 15.000000
- S 0 0.000000 4.489175 0.544372 4.881890 0.649606
-END
-TURNOUT N "Atlas Custom Std #4 RH Switch 2751"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 4.881890 0.000000 90.000000
- E 4.881890 -0.649606 105.000000
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 4.881890 0.000000
- C 0 0.000000 15.975786 0.354236 -15.975786 0.000000 15.000000
- S 0 0.000000 4.489175 -0.544372 4.881890 -0.649606
-END
-TURNOUT N "Atlas Custom #6 LH Switch 2752"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 6.102362 0.000000 90.000000
- E 6.102362 0.649606 80.472717
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 6.102362 0.000000
- C 0 0.000000 -22.530482 0.354330 22.530482 170.472717 9.527283
- S 0 0.000000 4.083539 0.310775 6.102362 0.649606
-END
-TURNOUT N "Atlas Custom #6 RH Switch 2753"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 6.102362 0.000000 90.000000
- E 6.102362 -0.649606 99.527283
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 6.102362 0.000000
- C 0 0.000000 22.530482 0.354210 -22.530482 0.000000 9.527283
- S 0 0.000000 4.083539 -0.310775 6.102362 -0.649606
-END
-TURNOUT N "Atlas Custom #8 LH Switch 2755"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 7.322835 0.000000 90.000000
- E 7.322835 0.625000 82.847331
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 7.322835 0.000000
- C 0 0.000000 -31.810273 0.354342 31.810273 172.847331 7.152669
- S 0 0.000000 4.315193 0.247561 7.322835 0.625000
-END
-TURNOUT N "Atlas Custom #8 RH Switch 2756"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 7.322835 0.000000 90.000000
- E 7.322835 -0.625000 97.152669
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 7.322835 0.000000
- C 0 0.000000 31.810273 0.354173 -31.810273 0.000000 7.152669
- S 0 0.000000 4.315193 -0.247561 7.322835 -0.625000
-END
-
-SUBCONTENTS Atlas N-Scale Track - Standard Remote Switches
-TURNOUT N "Atlas Remote Std #4 LH Switch 2700"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 4.881890 0.000000 90.000000
- E 4.881890 0.649606 75.000000
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 4.881890 0.000000
- C 0 0.000000 -15.975786 0.354321 15.975786 165.000000 15.000000
- S 0 0.000000 4.489175 0.544372 4.881890 0.649606
- L3 0 0.020833 0.885417 -0.300000 0 4.479167 -0.300000 0
- L3 0 0.020833 0.885417 -0.300000 0 0.885417 -0.534375 0
- L3 0 0.020833 4.479167 -0.300000 0 4.479167 -0.534375 0
- L3 0 0.020833 1.885417 -0.503125 0 3.479167 -0.503125 0
- L3 0 0.020833 3.479167 -0.768750 0 1.885417 -0.768750 0
- L3 0 0.020833 0.885417 -0.534375 0 1.885417 -0.768750 0
- L3 0 0.020833 3.479167 -0.768750 0 4.479167 -0.534375 0
- L3 0 0.020833 1.885417 -0.768750 0 1.885417 -0.503125 0
- L3 0 0.020833 3.479167 -0.768750 0 3.479167 -0.503125 0
- L3 0 0.020833 1.135417 -0.300000 0 1.135417 -0.581250 0
- L3 0 0.020833 4.229167 -0.300000 0 4.229167 -0.581250 0
- A3 0 0.010417 0.062500 1.010417 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 1.010417 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.062500 4.354167 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 4.354167 -0.438021 0 0.000000 360.000000
-END
-TURNOUT N "Atlas Remote Std #4 RH Switch 2701"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 4.881890 0.000000 90.000000
- E 4.881890 -0.649606 105.000000
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 4.881890 0.000000
- C 0 0.000000 15.975786 0.354236 -15.975786 0.000000 15.000000
- S 0 0.000000 4.489175 -0.544372 4.881890 -0.649606
- L3 0 0.020833 0.885417 0.300000 0 4.479167 0.300000 0
- L3 0 0.020833 0.885417 0.300000 0 0.885417 0.534375 0
- L3 0 0.020833 4.479167 0.300000 0 4.479167 0.534375 0
- L3 0 0.020833 1.885417 0.503125 0 3.479167 0.503125 0
- L3 0 0.020833 3.479167 0.768750 0 1.885417 0.768750 0
- L3 0 0.020833 0.885417 0.534375 0 1.885417 0.768750 0
- L3 0 0.020833 3.479167 0.768750 0 4.479167 0.534375 0
- L3 0 0.020833 1.885417 0.768750 0 1.885417 0.503125 0
- L3 0 0.020833 3.479167 0.768750 0 3.479167 0.503125 0
- L3 0 0.020833 1.135417 0.300000 0 1.135417 0.581250 0
- L3 0 0.020833 4.229167 0.300000 0 4.229167 0.581250 0
- A3 0 0.010417 0.062500 1.010417 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 1.010417 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.062500 4.354167 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 4.354167 0.438021 0 0.000000 360.000000
-END
-TURNOUT N "Atlas Remote #6 LH Switch 2704"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 6.102362 0.000000 90.000000
- E 6.102362 0.649606 80.472717
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 6.102362 0.000000
- C 0 0.000000 -22.530482 0.354330 22.530482 170.472717 9.527283
- S 0 0.000000 4.083539 0.310775 6.102362 0.649606
- L3 0 0.020833 0.885417 -0.300000 0 4.479167 -0.300000 0
- L3 0 0.020833 0.885417 -0.300000 0 0.885417 -0.534375 0
- L3 0 0.020833 4.479167 -0.300000 0 4.479167 -0.534375 0
- L3 0 0.020833 1.885417 -0.503125 0 3.479167 -0.503125 0
- L3 0 0.020833 3.479167 -0.768750 0 1.885417 -0.768750 0
- L3 0 0.020833 0.885417 -0.534375 0 1.885417 -0.768750 0
- L3 0 0.020833 3.479167 -0.768750 0 4.479167 -0.534375 0
- L3 0 0.020833 1.885417 -0.768750 0 1.885417 -0.503125 0
- L3 0 0.020833 3.479167 -0.768750 0 3.479167 -0.503125 0
- L3 0 0.020833 1.135417 -0.300000 0 1.135417 -0.581250 0
- L3 0 0.020833 4.229167 -0.300000 0 4.229167 -0.581250 0
- A3 0 0.010417 0.062500 1.010417 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 1.010417 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.062500 4.354167 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 4.354167 -0.438021 0 0.000000 360.000000
-END
-TURNOUT N "Atlas Remote #6 RH Switch 2705"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 6.102362 0.000000 90.000000
- E 6.102362 -0.649606 99.527283
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 6.102362 0.000000
- C 0 0.000000 22.530482 0.354210 -22.530482 0.000000 9.527283
- S 0 0.000000 4.083539 -0.310775 6.102362 -0.649606
- L3 0 0.020833 0.885417 0.300000 0 4.479167 0.300000 0
- L3 0 0.020833 0.885417 0.300000 0 0.885417 0.534375 0
- L3 0 0.020833 4.479167 0.300000 0 4.479167 0.534375 0
- L3 0 0.020833 1.885417 0.503125 0 3.479167 0.503125 0
- L3 0 0.020833 3.479167 0.768750 0 1.885417 0.768750 0
- L3 0 0.020833 0.885417 0.534375 0 1.885417 0.768750 0
- L3 0 0.020833 3.479167 0.768750 0 4.479167 0.534375 0
- L3 0 0.020833 1.885417 0.768750 0 1.885417 0.503125 0
- L3 0 0.020833 3.479167 0.768750 0 3.479167 0.503125 0
- L3 0 0.020833 1.135417 0.300000 0 1.135417 0.581250 0
- L3 0 0.020833 4.229167 0.300000 0 4.229167 0.581250 0
- A3 0 0.010417 0.062500 1.010417 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 1.010417 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.062500 4.354167 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 4.354167 0.438021 0 0.000000 360.000000
-END
-TURNOUT N "Atlas Remote #8 LH Switch 2720"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 7.322835 0.000000 90.000000
- E 7.322835 0.625000 82.847331
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 7.322835 0.000000
- C 0 0.000000 -31.810273 0.354342 31.810273 172.847331 7.152669
- S 0 0.000000 4.315193 0.247561 7.322835 0.625000
- L3 0 0.020833 0.885417 -0.300000 0 4.479167 -0.300000 0
- L3 0 0.020833 0.885417 -0.300000 0 0.885417 -0.534375 0
- L3 0 0.020833 4.479167 -0.300000 0 4.479167 -0.534375 0
- L3 0 0.020833 1.885417 -0.503125 0 3.479167 -0.503125 0
- L3 0 0.020833 3.479167 -0.768750 0 1.885417 -0.768750 0
- L3 0 0.020833 0.885417 -0.534375 0 1.885417 -0.768750 0
- L3 0 0.020833 3.479167 -0.768750 0 4.479167 -0.534375 0
- L3 0 0.020833 1.885417 -0.768750 0 1.885417 -0.503125 0
- L3 0 0.020833 3.479167 -0.768750 0 3.479167 -0.503125 0
- L3 0 0.020833 1.135417 -0.300000 0 1.135417 -0.581250 0
- L3 0 0.020833 4.229167 -0.300000 0 4.229167 -0.581250 0
- A3 0 0.010417 0.062500 1.010417 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 1.010417 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.062500 4.354167 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 4.354167 -0.438021 0 0.000000 360.000000
-END
-TURNOUT N "Atlas Remote #8 RH Switch 2721"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 7.322835 0.000000 90.000000
- E 7.322835 -0.625000 97.152669
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 7.322835 0.000000
- C 0 0.000000 31.810273 0.354173 -31.810273 0.000000 7.152669
- S 0 0.000000 4.315193 -0.247561 7.322835 -0.625000
- L3 0 0.020833 0.885417 0.300000 0 4.479167 0.300000 0
- L3 0 0.020833 0.885417 0.300000 0 0.885417 0.534375 0
- L3 0 0.020833 4.479167 0.300000 0 4.479167 0.534375 0
- L3 0 0.020833 1.885417 0.503125 0 3.479167 0.503125 0
- L3 0 0.020833 3.479167 0.768750 0 1.885417 0.768750 0
- L3 0 0.020833 0.885417 0.534375 0 1.885417 0.768750 0
- L3 0 0.020833 3.479167 0.768750 0 4.479167 0.534375 0
- L3 0 0.020833 1.885417 0.768750 0 1.885417 0.503125 0
- L3 0 0.020833 3.479167 0.768750 0 3.479167 0.503125 0
- L3 0 0.020833 1.135417 0.300000 0 1.135417 0.581250 0
- L3 0 0.020833 4.229167 0.300000 0 4.229167 0.581250 0
- A3 0 0.010417 0.062500 1.010417 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 1.010417 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.062500 4.354167 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 4.354167 0.438021 0 0.000000 360.000000
-END
-
-SUBCONTENTS Atlas N-Scale Track - Standard Manual Switches
-TURNOUT N "Atlas Manual Std #4 LH Switch 2702"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 4.881890 0.000000 90.000000
- E 4.881890 0.649606 75.000000
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 4.881890 0.000000
- C 0 0.000000 -15.975786 0.354321 15.975786 165.000000 15.000000
- S 0 0.000000 4.489175 0.544372 4.881890 0.649606
- L3 0 0.020833 0.885417 -0.300000 0 4.479167 -0.300000 0
- L3 0 0.020833 0.885417 -0.300000 0 0.885417 -0.534375 0
- L3 0 0.020833 4.479167 -0.300000 0 4.479167 -0.534375 0
- L3 0 0.020833 1.885417 -0.503125 0 3.479167 -0.503125 0
- L3 0 0.020833 3.479167 -0.768750 0 1.885417 -0.768750 0
- L3 0 0.020833 0.885417 -0.534375 0 1.885417 -0.768750 0
- L3 0 0.020833 3.479167 -0.768750 0 4.479167 -0.534375 0
- L3 0 0.020833 1.885417 -0.768750 0 1.885417 -0.503125 0
- L3 0 0.020833 3.479167 -0.768750 0 3.479167 -0.503125 0
- L3 0 0.020833 1.135417 -0.300000 0 1.135417 -0.581250 0
- L3 0 0.020833 4.229167 -0.300000 0 4.229167 -0.581250 0
- A3 0 0.010417 0.062500 1.010417 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 1.010417 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.062500 4.354167 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 4.354167 -0.438021 0 0.000000 360.000000
-END
-TURNOUT N "Atlas Manual Std #4 RH Switch 2703"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 4.881890 0.000000 90.000000
- E 4.881890 -0.649606 105.000000
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 4.881890 0.000000
- C 0 0.000000 15.975786 0.354236 -15.975786 0.000000 15.000000
- S 0 0.000000 4.489175 -0.544372 4.881890 -0.649606
- L3 0 0.020833 0.885417 0.300000 0 4.479167 0.300000 0
- L3 0 0.020833 0.885417 0.300000 0 0.885417 0.534375 0
- L3 0 0.020833 4.479167 0.300000 0 4.479167 0.534375 0
- L3 0 0.020833 1.885417 0.503125 0 3.479167 0.503125 0
- L3 0 0.020833 3.479167 0.768750 0 1.885417 0.768750 0
- L3 0 0.020833 0.885417 0.534375 0 1.885417 0.768750 0
- L3 0 0.020833 3.479167 0.768750 0 4.479167 0.534375 0
- L3 0 0.020833 1.885417 0.768750 0 1.885417 0.503125 0
- L3 0 0.020833 3.479167 0.768750 0 3.479167 0.503125 0
- L3 0 0.020833 1.135417 0.300000 0 1.135417 0.581250 0
- L3 0 0.020833 4.229167 0.300000 0 4.229167 0.581250 0
- A3 0 0.010417 0.062500 1.010417 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 1.010417 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.062500 4.354167 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 4.354167 0.438021 0 0.000000 360.000000
-END
-TURNOUT N "Atlas Manual #6 LH Switch 2706"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 6.102362 0.000000 90.000000
- E 6.102362 0.649606 80.472717
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 6.102362 0.000000
- C 0 0.000000 -22.530482 0.354330 22.530482 170.472717 9.527283
- S 0 0.000000 4.083539 0.310775 6.102362 0.649606
- L3 0 0.020833 0.885417 -0.300000 0 4.479167 -0.300000 0
- L3 0 0.020833 0.885417 -0.300000 0 0.885417 -0.534375 0
- L3 0 0.020833 4.479167 -0.300000 0 4.479167 -0.534375 0
- L3 0 0.020833 1.885417 -0.503125 0 3.479167 -0.503125 0
- L3 0 0.020833 3.479167 -0.768750 0 1.885417 -0.768750 0
- L3 0 0.020833 0.885417 -0.534375 0 1.885417 -0.768750 0
- L3 0 0.020833 3.479167 -0.768750 0 4.479167 -0.534375 0
- L3 0 0.020833 1.885417 -0.768750 0 1.885417 -0.503125 0
- L3 0 0.020833 3.479167 -0.768750 0 3.479167 -0.503125 0
- L3 0 0.020833 1.135417 -0.300000 0 1.135417 -0.581250 0
- L3 0 0.020833 4.229167 -0.300000 0 4.229167 -0.581250 0
- A3 0 0.010417 0.062500 1.010417 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 1.010417 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.062500 4.354167 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 4.354167 -0.438021 0 0.000000 360.000000
-END
-TURNOUT N "Atlas Manual #6 RH Switch 2707"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 6.102362 0.000000 90.000000
- E 6.102362 -0.649606 99.527283
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 6.102362 0.000000
- C 0 0.000000 22.530482 0.354210 -22.530482 0.000000 9.527283
- S 0 0.000000 4.083539 -0.310775 6.102362 -0.649606
- L3 0 0.020833 0.885417 0.300000 0 4.479167 0.300000 0
- L3 0 0.020833 0.885417 0.300000 0 0.885417 0.534375 0
- L3 0 0.020833 4.479167 0.300000 0 4.479167 0.534375 0
- L3 0 0.020833 1.885417 0.503125 0 3.479167 0.503125 0
- L3 0 0.020833 3.479167 0.768750 0 1.885417 0.768750 0
- L3 0 0.020833 0.885417 0.534375 0 1.885417 0.768750 0
- L3 0 0.020833 3.479167 0.768750 0 4.479167 0.534375 0
- L3 0 0.020833 1.885417 0.768750 0 1.885417 0.503125 0
- L3 0 0.020833 3.479167 0.768750 0 3.479167 0.503125 0
- L3 0 0.020833 1.135417 0.300000 0 1.135417 0.581250 0
- L3 0 0.020833 4.229167 0.300000 0 4.229167 0.581250 0
- A3 0 0.010417 0.062500 1.010417 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 1.010417 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.062500 4.354167 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 4.354167 0.438021 0 0.000000 360.000000
-END
-TURNOUT N "Atlas Manual #8 LH Switch 2717"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 7.322835 0.000000 90.000000
- E 7.322835 0.625000 82.847331
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 7.322835 0.000000
- C 0 0.000000 -31.810273 0.354342 31.810273 172.847331 7.152669
- S 0 0.000000 4.315193 0.247561 7.322835 0.625000
- L3 0 0.020833 0.885417 -0.300000 0 4.479167 -0.300000 0
- L3 0 0.020833 0.885417 -0.300000 0 0.885417 -0.534375 0
- L3 0 0.020833 4.479167 -0.300000 0 4.479167 -0.534375 0
- L3 0 0.020833 1.885417 -0.503125 0 3.479167 -0.503125 0
- L3 0 0.020833 3.479167 -0.768750 0 1.885417 -0.768750 0
- L3 0 0.020833 0.885417 -0.534375 0 1.885417 -0.768750 0
- L3 0 0.020833 3.479167 -0.768750 0 4.479167 -0.534375 0
- L3 0 0.020833 1.885417 -0.768750 0 1.885417 -0.503125 0
- L3 0 0.020833 3.479167 -0.768750 0 3.479167 -0.503125 0
- L3 0 0.020833 1.135417 -0.300000 0 1.135417 -0.581250 0
- L3 0 0.020833 4.229167 -0.300000 0 4.229167 -0.581250 0
- A3 0 0.010417 0.062500 1.010417 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 1.010417 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.062500 4.354167 -0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 4.354167 -0.438021 0 0.000000 360.000000
-END
-TURNOUT N "Atlas Manual #8 RH Switch 2718"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 7.322835 0.000000 90.000000
- E 7.322835 -0.625000 97.152669
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 7.322835 0.000000
- C 0 0.000000 31.810273 0.354173 -31.810273 0.000000 7.152669
- S 0 0.000000 4.315193 -0.247561 7.322835 -0.625000
- L3 0 0.020833 0.885417 0.300000 0 4.479167 0.300000 0
- L3 0 0.020833 0.885417 0.300000 0 0.885417 0.534375 0
- L3 0 0.020833 4.479167 0.300000 0 4.479167 0.534375 0
- L3 0 0.020833 1.885417 0.503125 0 3.479167 0.503125 0
- L3 0 0.020833 3.479167 0.768750 0 1.885417 0.768750 0
- L3 0 0.020833 0.885417 0.534375 0 1.885417 0.768750 0
- L3 0 0.020833 3.479167 0.768750 0 4.479167 0.534375 0
- L3 0 0.020833 1.885417 0.768750 0 1.885417 0.503125 0
- L3 0 0.020833 3.479167 0.768750 0 3.479167 0.503125 0
- L3 0 0.020833 1.135417 0.300000 0 1.135417 0.581250 0
- L3 0 0.020833 4.229167 0.300000 0 4.229167 0.581250 0
- A3 0 0.010417 0.062500 1.010417 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 1.010417 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.062500 4.354167 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 4.354167 0.438021 0 0.000000 360.000000
-END
-
-SUBCONTENTS Atlas N-Scale Track - Standard WYE Switches
-TURNOUT N "Atlas Remote Standard Wye 2708"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 4.881890 0.649606 75.000000
- E 4.881890 -0.649606 105.000000
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- C 0 0.000000 -15.975786 0.354321 15.975786 165.000000 15.000000
- S 0 0.000000 4.489175 0.544372 4.881890 0.649606
- C 0 0.000000 15.975786 0.354236 -15.975786 0.000000 15.000000
- S 0 0.000000 4.489175 -0.544372 4.881890 -0.649606
- L3 0 0.020833 0.616960 0.202769 0 4.178616 0.681977 0
- L3 0 0.020833 0.616960 0.202769 0 0.585708 0.435051 0
- L3 0 0.020833 4.178617 0.681973 0 4.147364 0.914255 0
- L3 0 0.020833 1.580944 0.537424 0 3.160462 0.749940 0
- L3 0 0.020833 3.125042 1.013193 0 1.545524 0.800677 0
- L3 0 0.020833 0.585708 0.435051 0 1.545524 0.800677 0
- L3 0 0.020833 3.125042 1.013193 0 4.147364 0.914255 0
- L3 0 0.020833 1.545524 0.800677 0 1.580944 0.537424 0
- L3 0 0.020833 3.125042 1.013193 0 3.160462 0.749940 0
- L3 0 0.020833 0.864727 0.236105 0 0.827224 0.514844 0
- L3 0 0.020833 3.930850 0.648638 0 3.893346 0.927376 0
- A3 0 0.010417 0.064424 0.724175 0.343321 0 352.337139 360.000000
- A3 0 0.010417 0.049411 0.724175 0.343321 0 352.337139 360.000000
- A3 0 0.010417 0.062500 4.038066 0.789189 0 352.337139 360.000000
- A3 0 0.010417 0.044194 4.038066 0.789189 0 352.337139 360.000000
-END
-TURNOUT N "Atlas Manual Standard Wye 2709"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 4.881890 0.649606 75.000000
- E 4.881890 -0.649606 105.000000
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- C 0 0.000000 -15.975786 0.354321 15.975786 165.000000 15.000000
- S 0 0.000000 4.489175 0.544372 4.881890 0.649606
- C 0 0.000000 15.975786 0.354236 -15.975786 0.000000 15.000000
- S 0 0.000000 4.489175 -0.544372 4.881890 -0.649606
- L3 0 0.020833 0.616960 0.202769 0 4.178616 0.681977 0
- L3 0 0.020833 0.616960 0.202769 0 0.585708 0.435051 0
- L3 0 0.020833 4.178617 0.681973 0 4.147364 0.914255 0
- L3 0 0.020833 1.580944 0.537424 0 3.160462 0.749940 0
- L3 0 0.020833 3.125042 1.013193 0 1.545524 0.800677 0
- L3 0 0.020833 0.585708 0.435051 0 1.545524 0.800677 0
- L3 0 0.020833 3.125042 1.013193 0 4.147364 0.914255 0
- L3 0 0.020833 1.545524 0.800677 0 1.580944 0.537424 0
- L3 0 0.020833 3.125042 1.013193 0 3.160462 0.749940 0
- L3 0 0.020833 0.864727 0.236105 0 0.827224 0.514844 0
- L3 0 0.020833 3.930850 0.648638 0 3.893346 0.927376 0
- A3 0 0.010417 0.064424 0.724175 0.343321 0 352.337139 360.000000
- A3 0 0.010417 0.049411 0.724175 0.343321 0 352.337139 360.000000
- A3 0 0.010417 0.062500 4.038066 0.789189 0 352.337139 360.000000
- A3 0 0.010417 0.044194 4.038066 0.789189 0 352.337139 360.000000
-END
-TURNOUT N "Atlas Custom Standard Wye 2754"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 4.881890 0.649606 75.000000
- E 4.881890 -0.649606 105.000000
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- C 0 0.000000 -15.975786 0.354321 15.975786 165.000000 15.000000
- S 0 0.000000 4.489175 0.544372 4.881890 0.649606
- C 0 0.000000 15.975786 0.354236 -15.975786 0.000000 15.000000
- S 0 0.000000 4.489175 -0.544372 4.881890 -0.649606
-END
-
-
-SUBCONTENTS Atlas N-Scale Structures - Switch Machines
-STRUCTURE N "Atlas Remote Switch Machine 271x"
- X pier 0.000000 ""
- L3 0 0.020833 0.300000 0.300000 0 3.893750 0.300000 0
- L3 0 0.020833 0.300000 0.300000 0 0.300000 0.534375 0
- L3 0 0.020833 0.550000 0.300000 0 0.550000 0.581250 0
- L3 0 0.020833 3.643750 0.300000 0 3.643750 0.581250 0
- L3 0 0.020833 3.893750 0.300000 0 3.893750 0.534375 0
- L3 0 0.020833 0.300000 0.534375 0 1.300000 0.768750 0
- L3 0 0.020833 1.300000 0.768750 0 2.893750 0.768750 0
- L3 0 0.020833 2.893750 0.768750 0 3.893750 0.534375 0
- L3 0 0.020833 1.300000 0.768750 0 1.300000 0.503125 0
- L3 0 0.020833 1.300000 0.503125 0 2.893750 0.503125 0
- L3 0 0.020833 2.893750 0.768750 0 2.893750 0.503125 0
- A3 0 0.010417 0.062500 0.425000 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 0.425000 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.062500 3.768750 0.438021 0 0.000000 360.000000
- A3 0 0.010417 0.044194 3.768750 0.438021 0 0.000000 360.000000
-END
-
-
-SUBCONTENTS Atlas N-Scale Structures - Turn Table
-TURNOUT N "Atlas Turn Table 2790"
-# TT was designed with 7.5in bridge, 8.5in outside dia., 15 degree spacing
- P "1" 1 2 3
- P "2" 4 5 6
- P "3" 7 8 9
- P "4" 10 11 12
- P "5" 13 14 15
- P "6" 16 17 18
- P "7" 19 20 21
- P "8" 22 23 24
- P "9" 25 26 27
- P "10" 28 29 30
- P "11" 31 32 33
- P "12" 34 35 36
-
- E 0.000000 4.250000 0.000000
- E 1.099981 4.105185 15.000000
- E 2.125000 3.680608 30.000000
- E 3.005204 3.005204 45.000000
- E 3.680608 2.125000 60.000000
-# E 4.105185 1.099981 75.000000
-# E 4.250000 0.000000 90.000000
-# E 4.105185 -1.099981 105.000000
- E 3.680608 -2.125000 120.000000
- E 3.005204 -3.005204 135.000000
- E 2.125000 -3.680608 150.000000
- E 1.099981 -4.105185 165.000000
- E 0.000000 -4.250000 180.000000
- E -1.099981 -4.105185 195.000000
- E -2.125000 -3.680608 210.000000
- E -3.005204 -3.005204 225.000000
- E -3.680608 -2.125000 240.000000
- E -4.105185 -1.099981 255.000000
- E -4.250000 0.000000 270.000000
- E -4.105185 1.099981 285.000000
- E -3.680608 2.125000 300.000000
- E -3.005204 3.005204 315.000000
- E -2.125000 3.680608 330.000000
- E -1.080111 4.031029 345.000000
-#0/360
- S 0 0 0.000000 4.250000 0.000000 3.750000
- S 16777215 0 0.000000 3.750000 0.000000 -3.750000
- S 0 0 0.000000 -3.750000 0.000000 -4.250000
-#15/195
- S 0 0 1.099981 4.105185 0.970571 3.622222
- S 16777215 0 0.970571 3.622222 -0.970571 -3.622222
- S 0 0 -0.970571 -3.622222 -1.099981 -4.105185
-#30/210
- S 0 0 2.125000 3.680608 1.875000 3.247595
- S 16777215 0 1.836614 3.247595 -1.875000 -3.247595
- S 0 0 -1.875000 -3.247595 -2.125000 -3.680608
-#45/225
- S 0 0 3.005204 3.005204 2.651650 2.651650
- S 16777215 0 2.651650 2.651650 -2.651650 -2.651650
- S 0 0 -2.651650 -2.651650 -3.005204 -3.005204
-#60/240
- S 0 0 3.680608 2.125000 3.247595 1.875000
- S 16777215 0 3.247595 1.875000 -3.247595 -1.875000
- S 0 0 -3.247595 -1.875000 -3.680608 -2.125000
-#75/255
- S 16777215 0 4.105185 1.099981 3.622222 0.970571
- S 16777215 0 3.622222 0.970571 -3.622222 -0.970571
- S 0 0 -3.622222 -0.970571 -4.105185 -1.099981
-#90/270
- S 16777215 0 4.250000 0.000000 3.750000 0.000000
- S 16777215 0 3.750000 0.000000 -3.750000 0.000000
- S 0 0 -3.750000 0.000000 -4.250000 0.000000
-#105/285
- S 16777215 0 4.105185 -1.099981 3.622222 -0.970571
- S 16777215 0 3.622222 -0.970571 -3.622222 0.970571
- S 0 0 -3.622222 0.970571 -4.105185 1.099981
-#120/300
- S 0 0 3.680608 -2.125000 3.247595 -1.875000
- S 16777215 0 3.247595 -1.875000 -3.247595 1.875000
- S 0 0 -3.247595 1.875000 -3.680608 2.125000
-#135/315
- S 0 0 3.005204 -3.005204 2.651650 -2.651650
- S 16777215 0 2.651650 -2.651650 -2.651650 2.651650
- S 0 0 -2.651650 2.651650 -3.005204 3.005204
-#150/330
- S 0 0 2.125000 -3.680608 1.875000 -3.247595
- S 16777215 0 1.836614 -3.247595 -1.875000 3.247595
- S 0 0 -1.875000 3.247595 -2.125000 3.680608
-#165/345
- S 0 0 1.099981 -4.105185 0.970571 -3.622222
- S 16777215 0 0.970571 -3.622222 -0.970571 3.622222
- S 0 0 -0.970571 3.622222 -1.099981 4.105185
-
- A 11579568 0.053333 4.250000 0.000000 0.000000 0.000000 360.000000
- A 11579568 0.053333 3.750000 0.000000 0.000000 0.000000 360.000000
- L 11579568 0.053333 4.000000 1.437500 6.000000 1.437500 0
- L 11579568 0.053333 6.000000 1.437500 6.000000 -1.437500 0
- L 11579568 0.053333 4.000000 -1.437500 6.000000 -1.437500 0
-END
+CONTENTS Atlas N-Scale Track Code 80
+SUBCONTENTS Atlas N-Scale Track - Straight
+TURNOUT N "Atlas 30in Flex 2500"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 29.500000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 29.500000 0.000000
+END$SEGS
+TURNOUT N "Atlas 5in Straight 2501"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.881890 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.881890 0.000000
+END$SEGS
+TURNOUT N "Atlas 2 1/2in Straight 2509A"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.440945 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.440945 0.000000
+END$SEGS
+TURNOUT N "Atlas 1 1/4in Straight 2509B"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.220472 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.220472 0.000000
+END$SEGS
+TURNOUT N "Atlas 5/8in Straight 2509C"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.610236 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.610236 0.000000
+END$SEGS
+TURNOUT N "Atlas Custom Adj. Straight CAS"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.250000 0.000000 90.000000
+ X adjustable 0.250000 30.000000
+ S 0 0 0.000000 0.000000 0.250000 0.000000
+END$SEGS
+
+SUBCONTENTS Atlas N-Scale Track - Curved
+TURNOUT N "Atlas 9 3/4R full section 2510"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.881890 -1.308098 120.000000
+ C 0 0 9.763780 0.000000 -9.763780 0.000000 30.000000
+END$SEGS
+TURNOUT N "Atlas 9 3/4R half section 2511"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.527052 -0.332693 105.000000
+ C 0 0 9.763780 0.000000 -9.763780 0.000000 15.000000
+END$SEGS
+TURNOUT N "Atlas 11R full section 2520"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.551181 -1.487434 120.000000
+ C 0 0 11.102362 0.000000 -11.102362 0.000000 30.000000
+END$SEGS
+TURNOUT N "Atlas 11R half section 2521"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.873503 -0.378304 105.000000
+ C 0 0 11.102362 0.000000 -11.102362 0.000000 15.000000
+END$SEGS
+TURNOUT N "Atlas 17R section 2525"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.505618 -1.294048 112.500000
+ C 0 0 17.000000 0.000000 -17.00000 0.000000 22.500000
+END$SEGS
+TURNOUT N "Atlas 19R section 2526"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.901258 -0.645263 105.000000
+ C 0 0 18.937008 0.000000 -18.937008 0.000000 15.000000
+END$SEGS
+
+SUBCONTENTS Atlas N-Scale Track - Bumper / Rerailer
+TURNOUT N "Atlas Bumper Track 2536"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 2.440945 0.000000
+ F4 0 0.000000 4 0
+ 1.630000 0.315000 0
+ 2.440945 0.315000 0
+ 2.440945 -0.315000 0
+ 1.630000 -0.315000 0
+END$SEGS
+TURNOUT N "Atlas Rerailer Track 2532"
+ P "NORMAL" 1
+ E 0.000000 0.000000 270.000000
+ E 4.881890 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.881890 0.000000
+ F4 14737632 0.000000 4 0
+ 1.000000 0.500000 0
+ 3.881890 0.500000 0
+ 3.256890 0.225000 0
+ 1.625000 0.225000 0
+ F4 14737632 0.000000 6 0
+ 1.312500 0.000000 0
+ 1.625000 0.125000 0
+ 3.256890 0.125000 0
+ 3.569390 0.000000 0
+ 3.256890 -0.125000 0
+ 1.625000 -0.125000 0
+ F4 14737632 0.000000 4 0
+ 1.000000 -0.500000 0
+ 3.881890 -0.500000 0
+ 3.256890 -0.225000 0
+ 1.625000 -0.225000 0
+ L3 0 0.020833 1.000000 0.500000 0 1.000000 -0.500000 0
+ L3 0 0.020833 1.000000 0.500000 0 3.881890 0.500000 0
+ L3 0 0.020833 1.000000 0.500000 0 1.625000 0.225000 0
+ L3 0 0.020833 3.256890 0.225000 0 3.881890 0.500000 0
+ L3 0 0.020833 1.625000 0.225000 0 3.256890 0.225000 0
+ L3 0 0.020833 1.625000 0.125000 0 3.256890 0.125000 0
+ L3 0 0.020833 1.312500 0.000000 0 1.625000 0.125000 0
+ L3 0 0.020833 3.256890 0.125000 0 3.569390 0.000000 0
+ L3 0 0.020833 3.256890 -0.125000 0 3.569390 0.000000 0
+ L3 0 0.020833 1.312500 0.000000 0 1.625000 -0.125000 0
+ L3 0 0.020833 1.625000 -0.125000 0 3.256890 -0.125000 0
+ L3 0 0.020833 1.625000 -0.225000 0 3.256890 -0.225000 0
+ L3 0 0.020833 3.256890 -0.225000 0 3.881890 -0.500000 0
+ L3 0 0.020833 1.000000 -0.500000 0 1.625000 -0.225000 0
+ L3 0 0.020833 1.000000 -0.500000 0 3.881890 -0.500000 0
+ L3 0 0.020833 3.881890 0.500000 0 3.881890 -0.500000 0
+END$SEGS
+
+SUBCONTENTS Atlas N-Scale Track - Bridges
+TURNOUT N "Atlas Warren Truss Bridge 2546"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.881890 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.881890 0.000000
+ L3 0 0.020833 0.000000 0.750000 0 0.000000 -0.750000 0
+ L3 0 0.020833 0.000000 0.750000 0 4.881890 0.750000 0
+ L3 0 0.020833 0.000000 0.650000 0 4.881890 0.650000 0
+ L3 0 0.020833 0.750000 0.650000 0 0.750000 0.750000 0
+ L3 0 0.020833 4.131890 0.650000 0 4.131890 0.750000 0
+ L3 0 0.020833 4.131890 -0.650000 0 4.131890 -0.750000 0
+ L3 0 0.020833 0.750000 -0.650000 0 0.750000 -0.750000 0
+ L3 0 0.020833 0.000000 -0.650000 0 4.881890 -0.650000 0
+ L3 0 0.020833 0.000000 -0.750000 0 4.881890 -0.750000 0
+ L3 0 0.020833 4.881890 0.750000 0 4.881890 -0.750000 0
+END$SEGS
+TURNOUT N "Atlas Deck Truss Bridge 2547"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.881890 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.881890 0.000000
+ L3 0 0.020833 0.000000 0.365000 0 0.000000 -0.365000 0
+ L3 0 0.020833 0.000000 0.365000 0 4.881890 0.365000 0
+ L3 0 0.020833 0.000000 0.315000 0 4.881890 0.315000 0
+ L3 0 0.020833 0.000000 -0.315000 0 4.881890 -0.315000 0
+ L3 0 0.020833 0.000000 -0.365000 0 4.881890 -0.365000 0
+ L3 0 0.020833 4.881890 0.365000 0 4.881890 -0.365000 0
+END$SEGS
+TURNOUT N "Atlas Plate Girder Bridge 2548"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.881890 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.881890 0.000000
+ L3 0 0.020833 0.000000 0.750000 0 0.000000 -0.750000 0
+ L3 0 0.020833 0.000000 0.750000 0 4.881890 0.750000 0
+ L3 0 0.020833 0.000000 0.650000 0 4.881890 0.650000 0
+ L3 0 0.020833 0.000000 -0.650000 0 4.881890 -0.650000 0
+ L3 0 0.020833 0.000000 -0.750000 0 4.881890 -0.750000 0
+ L3 0 0.020833 4.881890 0.750000 0 4.881890 -0.750000 0
+END$SEGS
+TURNOUT N "Atlas Through Truss Bridge 10in 2570/71"
+ P "Normal" 1
+ E 0.118110 0.000000 270.000000
+ E 9.881890 0.000000 90.000000
+ S 0 0 0.118110 0.000000 9.881890 0.000000
+ L 0 0.053333 0.000000 0.84375 10.000000 0.84375
+ L 0 0.053333 0.000000 -0.84375 10.000000 -0.84375
+ L 0 0.053333 1.625000 -0.84375 1.625000 0.84375
+ L 0 0.053333 1.625000 -0.84375 3.312500 0.84375
+ L 0 0.053333 3.312500 -0.84375 1.625000 0.84375
+ L 0 0.053333 3.312500 -0.84375 3.312500 0.84375
+ L 0 0.053333 3.312500 -0.84375 5.000000 0.84375
+ L 0 0.053333 5.000000 -0.84375 3.312500 0.84375
+ L 0 0.053333 5.000000 -0.84375 5.000000 0.84375
+ L 0 0.053333 5.000000 -0.84375 6.687500 0.84375
+ L 0 0.053333 6.687500 -0.84375 5.000000 0.84375
+ L 0 0.053333 6.687500 -0.84375 6.687500 0.84375
+ L 0 0.053333 6.687500 -0.84375 8.375000 0.84375
+ L 0 0.053333 8.375000 -0.84375 6.687500 0.84375
+ L 0 0.053333 8.375000 -0.84375 8.375000 0.84375
+END$SEGS
+# Bridge Pier (Base) Design by Bob Blackwell
+STRUCTURE N "Atlas Bridge Pier 2541"
+ X pier 0.140625 "1" 0.281250 "2" 0.421875 "3" 0.562500 "4" 0.703125 "5" 0.843750 "6" 0.984375 "7" 1.125000 "8" 1.265625 "9" 1.406250 "10" 1.546875 "11" 1.687500 "12"
+ A3 0 0.020833 0.312500 -0.000000 0.687500 0 270.000000 180.000000
+ A3 0 0.020833 0.312500 -0.000000 -0.687500 0 90.000000 180.000000
+ L3 0 0.020833 0.312500 0.687500 0 0.312500 -0.687500 0
+ L3 0 0.020833 -0.312500 0.687500 0 -0.312500 -0.687500 0
+ A3 0 0.020833 0.250000 -0.000000 -0.375000 0 90.000000 180.000000
+ A3 0 0.020833 0.250000 -0.000000 0.375000 0 270.000000 180.000000
+ L3 0 0.020833 -0.250000 0.375000 0 -0.249999 -0.375000 0
+ L3 0 0.020833 0.250000 0.375000 0 0.250001 -0.375000 0
+ END$SEGS
+STRUCTURE N "Atlas Bridge Pier (Base) 2543"
+ X pier 1.687500 "B"
+ A3 0 0.020833 0.312500 -0.000000 0.687500 0 270.000000 180.000000
+ A3 0 0.020833 0.312500 -0.000000 -0.687500 0 90.000000 180.000000
+ L3 0 0.020833 0.312500 0.687500 0 0.312500 -0.687500 0
+ L3 0 0.020833 -0.312500 0.687500 0 -0.312500 -0.687500 0
+ A3 0 0.020833 0.250000 -0.000000 -0.375000 0 90.000000 180.000000
+ A3 0 0.020833 0.250000 -0.000000 0.375000 0 270.000000 180.000000
+ L3 0 0.020833 -0.250000 0.375000 0 -0.249999 -0.375000 0
+ L3 0 0.020833 0.250000 0.375000 0 0.250001 -0.375000 0
+ END$SEGS
+# Viaduct Kit Design by Bob Blackwell
+STRUCTURE N "Atlas Viaduct Kit 2826"
+ L3 0 0.020833 0.010419 0.010417 0 4.385419 0.010422 0
+ L3 0 0.020833 4.385419 0.010417 0 4.385419 1.135417 0
+ L3 0 0.020833 4.385419 1.135422 0 0.010419 1.135417 0
+ L3 0 0.020833 0.010418 1.135417 0 0.010417 0.010417 0
+ L3 0 0.020833 4.385419 0.104172 0 0.010419 0.104167 0
+ L3 0 0.020833 4.385419 1.041676 0 0.010419 1.041670 0
+ L3 0 0.020833 4.385419 1.088547 0 0.010419 1.088542 0
+ L3 0 0.020833 4.385419 0.057297 0 0.010419 0.057292 0
+ END$SEGS
+TURNOUT N "Atlas Rolling Bridge 5918"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.763780 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.763780 0.000000
+ L3 0 0.010000 0.000000 0.787402 0 0.000000 -0.787402 0
+ L3 0 0.010000 2.440945 0.787402 0 2.440945 -0.787402 0
+ L3 0 0.010000 2.480315 0.787402 0 2.480315 -0.787402 0
+ L3 0 0.010000 5.236315 0.787402 0 5.236315 -0.787402 0
+ L3 0 0.010000 7.283465 0.787402 0 7.283465 -0.787402 0
+ L3 0 0.010000 7.322834 0.787402 0 7.322834 -0.787402 0
+ L3 0 0.010000 9.763780 0.787402 0 9.763780 -0.787402 0
+ L3 0 0.010000 0.000000 0.787402 0 2.440945 0.787402 0
+ L3 0 0.010000 0.000000 0.688976 0 2.440945 0.688976 0
+ L3 0 0.010000 0.000000 0.649606 0 2.440945 0.649606 0
+ L3 0 0.010000 0.000000 0.610236 0 2.440945 0.610236 0
+ L3 0 0.010000 2.480315 0.787402 0 5.236315 0.787402 0
+ L3 13789470 0.078740 1.889315 0.649606 0 5.236315 0.649606 0
+ L3 0 0.010000 5.236315 0.787402 0 7.283465 0.787402 0
+ L3 0 0.010000 5.236315 0.688976 0 7.283465 0.688976 0
+ L3 0 0.010000 5.236315 0.649606 0 7.283465 0.649606 0
+ L3 0 0.010000 5.236315 0.610236 0 7.283465 0.610236 0
+ L3 0 0.010000 7.322834 0.787402 0 9.763780 0.787402 0
+ L3 0 0.010000 7.322834 0.688976 0 9.763780 0.688976 0
+ L3 0 0.010000 7.322834 0.649606 0 9.763780 0.649606 0
+ L3 0 0.010000 7.322834 0.610236 0 9.763780 0.610236 0
+ L3 0 0.010000 0.000000 -0.787402 0 2.440945 -0.787402 0
+ L3 0 0.010000 0.000000 -0.688976 0 2.440945 -0.688976 0
+ L3 0 0.010000 0.000000 -0.649606 0 2.440945 -0.649606 0
+ L3 0 0.010000 0.000000 -0.610236 0 2.440945 -0.610236 0
+ L3 0 0.010000 2.480315 -0.787402 0 5.236315 -0.787402 0
+ L3 13789470 0.078740 1.889315 -0.649606 0 5.236315 -0.649606 0
+ L3 0 0.010000 5.236315 -0.787402 0 7.283465 -0.787402 0
+ L3 0 0.010000 5.236315 -0.688976 0 7.283465 -0.688976 0
+ L3 0 0.010000 5.236315 -0.649606 0 7.283465 -0.649606 0
+ L3 0 0.010000 5.236315 -0.610236 0 7.283465 -0.610236 0
+ L3 0 0.010000 7.322834 -0.787402 0 9.763780 -0.787402 0
+ L3 0 0.010000 7.322834 -0.688976 0 9.763780 -0.688976 0
+ L3 0 0.010000 7.322834 -0.649606 0 9.763780 -0.649606 0
+ L3 0 0.010000 7.322834 -0.610236 0 9.763780 -0.610236 0
+ F4 13789470 0.000000 4 0
+ 1.102315 0.747402 0
+ 1.889315 0.747402 0
+ 1.889315 -0.747402 0
+ 1.102315 -0.747402 0
+ END$SEGS
+
+
+SUBCONTENTS Atlas N-Scale Track - Crossings
+TURNOUT N "Atlas 15 Degree Crossover 2564"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 5.039370 0.000000 90.000000
+ E 4.953515 -0.652139 105.000000
+ E 0.085855 0.652139 285.000000
+ S 0 0.000000 0.000000 0.000000 5.039370 0.000000
+ S 0 0.000000 0.085855 0.652139 4.953515 -0.652139
+END$SEGS
+TURNOUT N "Atlas 20 Degree Crossing 2565"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.901575 0.000000 90.000000
+ E 4.753776 -0.838215 110.000000
+ E 0.147799 0.838215 290.000000
+ S 0 0.000000 0.000000 0.000000 4.901575 0.000000
+ S 0 0.000000 0.147799 0.838215 4.753776 -0.838215
+END$SEGS
+TURNOUT N "Atlas 30 Degree Crossing 2566"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 2.549213 0.000000 90.000000
+ E 2.378449 -0.637301 120.000000
+ E 0.170764 0.637301 300.000000
+ S 0 0.000000 0.000000 0.000000 2.549213 0.000000
+ S 0 0.000000 0.170764 0.637301 2.378449 -0.637301
+END$SEGS
+TURNOUT N "Atlas 45 Degree Crossing 2567"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.000000 0.000000 90.000000
+ E 3.414216 -1.414211 135.000000
+ E 0.585784 1.414211 315.000000
+ S 0 0.000000 0.000000 0.000000 4.000000 0.000000
+ S 0 0.000000 0.585784 1.414211 3.414216 -1.414211
+END$SEGS
+TURNOUT N "Atlas 60 Degree Crossing 2568"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 3.818898 0.000000 90.000000
+ E 2.864177 -1.653629 150.000000
+ E 0.954721 1.653629 330.000000
+ S 0 0.000000 0.000000 0.000000 3.818898 0.000000
+ S 0 0.000000 0.954721 1.653629 2.864177 -1.653629
+END$SEGS
+TURNOUT N "Atlas 90 Degree Crossing 2569"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 2.440945 2.440945 0.000000
+ E 4.881890 0.000000 90.000000
+ E 2.440945 -2.440945 180.000000
+ S 0 0 0.000000 0.000000 4.881890 0.000000
+ S 0 0 2.440945 2.440945 2.440945 -2.440945
+END$SEGS
+
+SUBCONTENTS Atlas N-Scale Track - Custom (Motorless) Switches
+TURNOUT N "Atlas Custom Std #4 LH Switch 2750"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 4.881890 0.000000 90.000000
+ E 4.881890 0.649606 75.000000
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 4.881890 0.000000
+ C 0 0.000000 -15.975786 0.354321 15.975786 165.000000 15.000000
+ S 0 0.000000 4.489175 0.544372 4.881890 0.649606
+END$SEGS
+TURNOUT N "Atlas Custom Std #4 RH Switch 2751"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 4.881890 0.000000 90.000000
+ E 4.881890 -0.649606 105.000000
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 4.881890 0.000000
+ C 0 0.000000 15.975786 0.354236 -15.975786 0.000000 15.000000
+ S 0 0.000000 4.489175 -0.544372 4.881890 -0.649606
+END$SEGS
+TURNOUT N "Atlas Custom #6 LH Switch 2752"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 6.102362 0.000000 90.000000
+ E 6.102362 0.649606 80.472717
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.102362 0.000000
+ C 0 0.000000 -22.530482 0.354330 22.530482 170.472717 9.527283
+ S 0 0.000000 4.083539 0.310775 6.102362 0.649606
+END$SEGS
+TURNOUT N "Atlas Custom #6 RH Switch 2753"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 6.102362 0.000000 90.000000
+ E 6.102362 -0.649606 99.527283
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.102362 0.000000
+ C 0 0.000000 22.530482 0.354210 -22.530482 0.000000 9.527283
+ S 0 0.000000 4.083539 -0.310775 6.102362 -0.649606
+END$SEGS
+TURNOUT N "Atlas Custom #8 LH Switch 2755"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 7.322835 0.000000 90.000000
+ E 7.322835 0.625000 82.847331
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 7.322835 0.000000
+ C 0 0.000000 -31.810273 0.354342 31.810273 172.847331 7.152669
+ S 0 0.000000 4.315193 0.247561 7.322835 0.625000
+END$SEGS
+TURNOUT N "Atlas Custom #8 RH Switch 2756"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 7.322835 0.000000 90.000000
+ E 7.322835 -0.625000 97.152669
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 7.322835 0.000000
+ C 0 0.000000 31.810273 0.354173 -31.810273 0.000000 7.152669
+ S 0 0.000000 4.315193 -0.247561 7.322835 -0.625000
+END$SEGS
+
+SUBCONTENTS Atlas N-Scale Track - Standard Remote Switches
+TURNOUT N "Atlas Remote Std #4 LH Switch 2700"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 4.881890 0.000000 90.000000
+ E 4.881890 0.649606 75.000000
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 4.881890 0.000000
+ C 0 0.000000 -15.975786 0.354321 15.975786 165.000000 15.000000
+ S 0 0.000000 4.489175 0.544372 4.881890 0.649606
+ L3 0 0.020833 0.885417 -0.300000 0 4.479167 -0.300000 0
+ L3 0 0.020833 0.885417 -0.300000 0 0.885417 -0.534375 0
+ L3 0 0.020833 4.479167 -0.300000 0 4.479167 -0.534375 0
+ L3 0 0.020833 1.885417 -0.503125 0 3.479167 -0.503125 0
+ L3 0 0.020833 3.479167 -0.768750 0 1.885417 -0.768750 0
+ L3 0 0.020833 0.885417 -0.534375 0 1.885417 -0.768750 0
+ L3 0 0.020833 3.479167 -0.768750 0 4.479167 -0.534375 0
+ L3 0 0.020833 1.885417 -0.768750 0 1.885417 -0.503125 0
+ L3 0 0.020833 3.479167 -0.768750 0 3.479167 -0.503125 0
+ L3 0 0.020833 1.135417 -0.300000 0 1.135417 -0.581250 0
+ L3 0 0.020833 4.229167 -0.300000 0 4.229167 -0.581250 0
+ A3 0 0.010417 0.062500 1.010417 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 1.010417 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.062500 4.354167 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 4.354167 -0.438021 0 0.000000 360.000000
+END$SEGS
+TURNOUT N "Atlas Remote Std #4 RH Switch 2701"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 4.881890 0.000000 90.000000
+ E 4.881890 -0.649606 105.000000
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 4.881890 0.000000
+ C 0 0.000000 15.975786 0.354236 -15.975786 0.000000 15.000000
+ S 0 0.000000 4.489175 -0.544372 4.881890 -0.649606
+ L3 0 0.020833 0.885417 0.300000 0 4.479167 0.300000 0
+ L3 0 0.020833 0.885417 0.300000 0 0.885417 0.534375 0
+ L3 0 0.020833 4.479167 0.300000 0 4.479167 0.534375 0
+ L3 0 0.020833 1.885417 0.503125 0 3.479167 0.503125 0
+ L3 0 0.020833 3.479167 0.768750 0 1.885417 0.768750 0
+ L3 0 0.020833 0.885417 0.534375 0 1.885417 0.768750 0
+ L3 0 0.020833 3.479167 0.768750 0 4.479167 0.534375 0
+ L3 0 0.020833 1.885417 0.768750 0 1.885417 0.503125 0
+ L3 0 0.020833 3.479167 0.768750 0 3.479167 0.503125 0
+ L3 0 0.020833 1.135417 0.300000 0 1.135417 0.581250 0
+ L3 0 0.020833 4.229167 0.300000 0 4.229167 0.581250 0
+ A3 0 0.010417 0.062500 1.010417 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 1.010417 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.062500 4.354167 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 4.354167 0.438021 0 0.000000 360.000000
+END$SEGS
+TURNOUT N "Atlas Remote #6 LH Switch 2704"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 6.102362 0.000000 90.000000
+ E 6.102362 0.649606 80.472717
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.102362 0.000000
+ C 0 0.000000 -22.530482 0.354330 22.530482 170.472717 9.527283
+ S 0 0.000000 4.083539 0.310775 6.102362 0.649606
+ L3 0 0.020833 0.885417 -0.300000 0 4.479167 -0.300000 0
+ L3 0 0.020833 0.885417 -0.300000 0 0.885417 -0.534375 0
+ L3 0 0.020833 4.479167 -0.300000 0 4.479167 -0.534375 0
+ L3 0 0.020833 1.885417 -0.503125 0 3.479167 -0.503125 0
+ L3 0 0.020833 3.479167 -0.768750 0 1.885417 -0.768750 0
+ L3 0 0.020833 0.885417 -0.534375 0 1.885417 -0.768750 0
+ L3 0 0.020833 3.479167 -0.768750 0 4.479167 -0.534375 0
+ L3 0 0.020833 1.885417 -0.768750 0 1.885417 -0.503125 0
+ L3 0 0.020833 3.479167 -0.768750 0 3.479167 -0.503125 0
+ L3 0 0.020833 1.135417 -0.300000 0 1.135417 -0.581250 0
+ L3 0 0.020833 4.229167 -0.300000 0 4.229167 -0.581250 0
+ A3 0 0.010417 0.062500 1.010417 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 1.010417 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.062500 4.354167 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 4.354167 -0.438021 0 0.000000 360.000000
+END$SEGS
+TURNOUT N "Atlas Remote #6 RH Switch 2705"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 6.102362 0.000000 90.000000
+ E 6.102362 -0.649606 99.527283
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.102362 0.000000
+ C 0 0.000000 22.530482 0.354210 -22.530482 0.000000 9.527283
+ S 0 0.000000 4.083539 -0.310775 6.102362 -0.649606
+ L3 0 0.020833 0.885417 0.300000 0 4.479167 0.300000 0
+ L3 0 0.020833 0.885417 0.300000 0 0.885417 0.534375 0
+ L3 0 0.020833 4.479167 0.300000 0 4.479167 0.534375 0
+ L3 0 0.020833 1.885417 0.503125 0 3.479167 0.503125 0
+ L3 0 0.020833 3.479167 0.768750 0 1.885417 0.768750 0
+ L3 0 0.020833 0.885417 0.534375 0 1.885417 0.768750 0
+ L3 0 0.020833 3.479167 0.768750 0 4.479167 0.534375 0
+ L3 0 0.020833 1.885417 0.768750 0 1.885417 0.503125 0
+ L3 0 0.020833 3.479167 0.768750 0 3.479167 0.503125 0
+ L3 0 0.020833 1.135417 0.300000 0 1.135417 0.581250 0
+ L3 0 0.020833 4.229167 0.300000 0 4.229167 0.581250 0
+ A3 0 0.010417 0.062500 1.010417 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 1.010417 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.062500 4.354167 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 4.354167 0.438021 0 0.000000 360.000000
+END$SEGS
+TURNOUT N "Atlas Remote #8 LH Switch 2720"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 7.322835 0.000000 90.000000
+ E 7.322835 0.625000 82.847331
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 7.322835 0.000000
+ C 0 0.000000 -31.810273 0.354342 31.810273 172.847331 7.152669
+ S 0 0.000000 4.315193 0.247561 7.322835 0.625000
+ L3 0 0.020833 0.885417 -0.300000 0 4.479167 -0.300000 0
+ L3 0 0.020833 0.885417 -0.300000 0 0.885417 -0.534375 0
+ L3 0 0.020833 4.479167 -0.300000 0 4.479167 -0.534375 0
+ L3 0 0.020833 1.885417 -0.503125 0 3.479167 -0.503125 0
+ L3 0 0.020833 3.479167 -0.768750 0 1.885417 -0.768750 0
+ L3 0 0.020833 0.885417 -0.534375 0 1.885417 -0.768750 0
+ L3 0 0.020833 3.479167 -0.768750 0 4.479167 -0.534375 0
+ L3 0 0.020833 1.885417 -0.768750 0 1.885417 -0.503125 0
+ L3 0 0.020833 3.479167 -0.768750 0 3.479167 -0.503125 0
+ L3 0 0.020833 1.135417 -0.300000 0 1.135417 -0.581250 0
+ L3 0 0.020833 4.229167 -0.300000 0 4.229167 -0.581250 0
+ A3 0 0.010417 0.062500 1.010417 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 1.010417 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.062500 4.354167 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 4.354167 -0.438021 0 0.000000 360.000000
+END$SEGS
+TURNOUT N "Atlas Remote #8 RH Switch 2721"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 7.322835 0.000000 90.000000
+ E 7.322835 -0.625000 97.152669
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 7.322835 0.000000
+ C 0 0.000000 31.810273 0.354173 -31.810273 0.000000 7.152669
+ S 0 0.000000 4.315193 -0.247561 7.322835 -0.625000
+ L3 0 0.020833 0.885417 0.300000 0 4.479167 0.300000 0
+ L3 0 0.020833 0.885417 0.300000 0 0.885417 0.534375 0
+ L3 0 0.020833 4.479167 0.300000 0 4.479167 0.534375 0
+ L3 0 0.020833 1.885417 0.503125 0 3.479167 0.503125 0
+ L3 0 0.020833 3.479167 0.768750 0 1.885417 0.768750 0
+ L3 0 0.020833 0.885417 0.534375 0 1.885417 0.768750 0
+ L3 0 0.020833 3.479167 0.768750 0 4.479167 0.534375 0
+ L3 0 0.020833 1.885417 0.768750 0 1.885417 0.503125 0
+ L3 0 0.020833 3.479167 0.768750 0 3.479167 0.503125 0
+ L3 0 0.020833 1.135417 0.300000 0 1.135417 0.581250 0
+ L3 0 0.020833 4.229167 0.300000 0 4.229167 0.581250 0
+ A3 0 0.010417 0.062500 1.010417 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 1.010417 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.062500 4.354167 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 4.354167 0.438021 0 0.000000 360.000000
+END$SEGS
+
+SUBCONTENTS Atlas N-Scale Track - Standard Manual Switches
+TURNOUT N "Atlas Manual Std #4 LH Switch 2702"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 4.881890 0.000000 90.000000
+ E 4.881890 0.649606 75.000000
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 4.881890 0.000000
+ C 0 0.000000 -15.975786 0.354321 15.975786 165.000000 15.000000
+ S 0 0.000000 4.489175 0.544372 4.881890 0.649606
+ L3 0 0.020833 0.885417 -0.300000 0 4.479167 -0.300000 0
+ L3 0 0.020833 0.885417 -0.300000 0 0.885417 -0.534375 0
+ L3 0 0.020833 4.479167 -0.300000 0 4.479167 -0.534375 0
+ L3 0 0.020833 1.885417 -0.503125 0 3.479167 -0.503125 0
+ L3 0 0.020833 3.479167 -0.768750 0 1.885417 -0.768750 0
+ L3 0 0.020833 0.885417 -0.534375 0 1.885417 -0.768750 0
+ L3 0 0.020833 3.479167 -0.768750 0 4.479167 -0.534375 0
+ L3 0 0.020833 1.885417 -0.768750 0 1.885417 -0.503125 0
+ L3 0 0.020833 3.479167 -0.768750 0 3.479167 -0.503125 0
+ L3 0 0.020833 1.135417 -0.300000 0 1.135417 -0.581250 0
+ L3 0 0.020833 4.229167 -0.300000 0 4.229167 -0.581250 0
+ A3 0 0.010417 0.062500 1.010417 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 1.010417 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.062500 4.354167 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 4.354167 -0.438021 0 0.000000 360.000000
+END$SEGS
+TURNOUT N "Atlas Manual Std #4 RH Switch 2703"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 4.881890 0.000000 90.000000
+ E 4.881890 -0.649606 105.000000
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 4.881890 0.000000
+ C 0 0.000000 15.975786 0.354236 -15.975786 0.000000 15.000000
+ S 0 0.000000 4.489175 -0.544372 4.881890 -0.649606
+ L3 0 0.020833 0.885417 0.300000 0 4.479167 0.300000 0
+ L3 0 0.020833 0.885417 0.300000 0 0.885417 0.534375 0
+ L3 0 0.020833 4.479167 0.300000 0 4.479167 0.534375 0
+ L3 0 0.020833 1.885417 0.503125 0 3.479167 0.503125 0
+ L3 0 0.020833 3.479167 0.768750 0 1.885417 0.768750 0
+ L3 0 0.020833 0.885417 0.534375 0 1.885417 0.768750 0
+ L3 0 0.020833 3.479167 0.768750 0 4.479167 0.534375 0
+ L3 0 0.020833 1.885417 0.768750 0 1.885417 0.503125 0
+ L3 0 0.020833 3.479167 0.768750 0 3.479167 0.503125 0
+ L3 0 0.020833 1.135417 0.300000 0 1.135417 0.581250 0
+ L3 0 0.020833 4.229167 0.300000 0 4.229167 0.581250 0
+ A3 0 0.010417 0.062500 1.010417 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 1.010417 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.062500 4.354167 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 4.354167 0.438021 0 0.000000 360.000000
+END$SEGS
+TURNOUT N "Atlas Manual #6 LH Switch 2706"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 6.102362 0.000000 90.000000
+ E 6.102362 0.649606 80.472717
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.102362 0.000000
+ C 0 0.000000 -22.530482 0.354330 22.530482 170.472717 9.527283
+ S 0 0.000000 4.083539 0.310775 6.102362 0.649606
+ L3 0 0.020833 0.885417 -0.300000 0 4.479167 -0.300000 0
+ L3 0 0.020833 0.885417 -0.300000 0 0.885417 -0.534375 0
+ L3 0 0.020833 4.479167 -0.300000 0 4.479167 -0.534375 0
+ L3 0 0.020833 1.885417 -0.503125 0 3.479167 -0.503125 0
+ L3 0 0.020833 3.479167 -0.768750 0 1.885417 -0.768750 0
+ L3 0 0.020833 0.885417 -0.534375 0 1.885417 -0.768750 0
+ L3 0 0.020833 3.479167 -0.768750 0 4.479167 -0.534375 0
+ L3 0 0.020833 1.885417 -0.768750 0 1.885417 -0.503125 0
+ L3 0 0.020833 3.479167 -0.768750 0 3.479167 -0.503125 0
+ L3 0 0.020833 1.135417 -0.300000 0 1.135417 -0.581250 0
+ L3 0 0.020833 4.229167 -0.300000 0 4.229167 -0.581250 0
+ A3 0 0.010417 0.062500 1.010417 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 1.010417 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.062500 4.354167 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 4.354167 -0.438021 0 0.000000 360.000000
+END$SEGS
+TURNOUT N "Atlas Manual #6 RH Switch 2707"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 6.102362 0.000000 90.000000
+ E 6.102362 -0.649606 99.527283
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.102362 0.000000
+ C 0 0.000000 22.530482 0.354210 -22.530482 0.000000 9.527283
+ S 0 0.000000 4.083539 -0.310775 6.102362 -0.649606
+ L3 0 0.020833 0.885417 0.300000 0 4.479167 0.300000 0
+ L3 0 0.020833 0.885417 0.300000 0 0.885417 0.534375 0
+ L3 0 0.020833 4.479167 0.300000 0 4.479167 0.534375 0
+ L3 0 0.020833 1.885417 0.503125 0 3.479167 0.503125 0
+ L3 0 0.020833 3.479167 0.768750 0 1.885417 0.768750 0
+ L3 0 0.020833 0.885417 0.534375 0 1.885417 0.768750 0
+ L3 0 0.020833 3.479167 0.768750 0 4.479167 0.534375 0
+ L3 0 0.020833 1.885417 0.768750 0 1.885417 0.503125 0
+ L3 0 0.020833 3.479167 0.768750 0 3.479167 0.503125 0
+ L3 0 0.020833 1.135417 0.300000 0 1.135417 0.581250 0
+ L3 0 0.020833 4.229167 0.300000 0 4.229167 0.581250 0
+ A3 0 0.010417 0.062500 1.010417 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 1.010417 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.062500 4.354167 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 4.354167 0.438021 0 0.000000 360.000000
+END$SEGS
+TURNOUT N "Atlas Manual #8 LH Switch 2717"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 7.322835 0.000000 90.000000
+ E 7.322835 0.625000 82.847331
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 7.322835 0.000000
+ C 0 0.000000 -31.810273 0.354342 31.810273 172.847331 7.152669
+ S 0 0.000000 4.315193 0.247561 7.322835 0.625000
+ L3 0 0.020833 0.885417 -0.300000 0 4.479167 -0.300000 0
+ L3 0 0.020833 0.885417 -0.300000 0 0.885417 -0.534375 0
+ L3 0 0.020833 4.479167 -0.300000 0 4.479167 -0.534375 0
+ L3 0 0.020833 1.885417 -0.503125 0 3.479167 -0.503125 0
+ L3 0 0.020833 3.479167 -0.768750 0 1.885417 -0.768750 0
+ L3 0 0.020833 0.885417 -0.534375 0 1.885417 -0.768750 0
+ L3 0 0.020833 3.479167 -0.768750 0 4.479167 -0.534375 0
+ L3 0 0.020833 1.885417 -0.768750 0 1.885417 -0.503125 0
+ L3 0 0.020833 3.479167 -0.768750 0 3.479167 -0.503125 0
+ L3 0 0.020833 1.135417 -0.300000 0 1.135417 -0.581250 0
+ L3 0 0.020833 4.229167 -0.300000 0 4.229167 -0.581250 0
+ A3 0 0.010417 0.062500 1.010417 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 1.010417 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.062500 4.354167 -0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 4.354167 -0.438021 0 0.000000 360.000000
+END$SEGS
+TURNOUT N "Atlas Manual #8 RH Switch 2718"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 7.322835 0.000000 90.000000
+ E 7.322835 -0.625000 97.152669
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 7.322835 0.000000
+ C 0 0.000000 31.810273 0.354173 -31.810273 0.000000 7.152669
+ S 0 0.000000 4.315193 -0.247561 7.322835 -0.625000
+ L3 0 0.020833 0.885417 0.300000 0 4.479167 0.300000 0
+ L3 0 0.020833 0.885417 0.300000 0 0.885417 0.534375 0
+ L3 0 0.020833 4.479167 0.300000 0 4.479167 0.534375 0
+ L3 0 0.020833 1.885417 0.503125 0 3.479167 0.503125 0
+ L3 0 0.020833 3.479167 0.768750 0 1.885417 0.768750 0
+ L3 0 0.020833 0.885417 0.534375 0 1.885417 0.768750 0
+ L3 0 0.020833 3.479167 0.768750 0 4.479167 0.534375 0
+ L3 0 0.020833 1.885417 0.768750 0 1.885417 0.503125 0
+ L3 0 0.020833 3.479167 0.768750 0 3.479167 0.503125 0
+ L3 0 0.020833 1.135417 0.300000 0 1.135417 0.581250 0
+ L3 0 0.020833 4.229167 0.300000 0 4.229167 0.581250 0
+ A3 0 0.010417 0.062500 1.010417 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 1.010417 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.062500 4.354167 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 4.354167 0.438021 0 0.000000 360.000000
+END$SEGS
+
+SUBCONTENTS Atlas N-Scale Track - Standard WYE Switches
+TURNOUT N "Atlas Remote Standard Wye 2708"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 4.881890 0.649606 75.000000
+ E 4.881890 -0.649606 105.000000
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ C 0 0.000000 -15.975786 0.354321 15.975786 165.000000 15.000000
+ S 0 0.000000 4.489175 0.544372 4.881890 0.649606
+ C 0 0.000000 15.975786 0.354236 -15.975786 0.000000 15.000000
+ S 0 0.000000 4.489175 -0.544372 4.881890 -0.649606
+ L3 0 0.020833 0.616960 0.202769 0 4.178616 0.681977 0
+ L3 0 0.020833 0.616960 0.202769 0 0.585708 0.435051 0
+ L3 0 0.020833 4.178617 0.681973 0 4.147364 0.914255 0
+ L3 0 0.020833 1.580944 0.537424 0 3.160462 0.749940 0
+ L3 0 0.020833 3.125042 1.013193 0 1.545524 0.800677 0
+ L3 0 0.020833 0.585708 0.435051 0 1.545524 0.800677 0
+ L3 0 0.020833 3.125042 1.013193 0 4.147364 0.914255 0
+ L3 0 0.020833 1.545524 0.800677 0 1.580944 0.537424 0
+ L3 0 0.020833 3.125042 1.013193 0 3.160462 0.749940 0
+ L3 0 0.020833 0.864727 0.236105 0 0.827224 0.514844 0
+ L3 0 0.020833 3.930850 0.648638 0 3.893346 0.927376 0
+ A3 0 0.010417 0.064424 0.724175 0.343321 0 352.337139 360.000000
+ A3 0 0.010417 0.049411 0.724175 0.343321 0 352.337139 360.000000
+ A3 0 0.010417 0.062500 4.038066 0.789189 0 352.337139 360.000000
+ A3 0 0.010417 0.044194 4.038066 0.789189 0 352.337139 360.000000
+END$SEGS
+TURNOUT N "Atlas Manual Standard Wye 2709"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 4.881890 0.649606 75.000000
+ E 4.881890 -0.649606 105.000000
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ C 0 0.000000 -15.975786 0.354321 15.975786 165.000000 15.000000
+ S 0 0.000000 4.489175 0.544372 4.881890 0.649606
+ C 0 0.000000 15.975786 0.354236 -15.975786 0.000000 15.000000
+ S 0 0.000000 4.489175 -0.544372 4.881890 -0.649606
+ L3 0 0.020833 0.616960 0.202769 0 4.178616 0.681977 0
+ L3 0 0.020833 0.616960 0.202769 0 0.585708 0.435051 0
+ L3 0 0.020833 4.178617 0.681973 0 4.147364 0.914255 0
+ L3 0 0.020833 1.580944 0.537424 0 3.160462 0.749940 0
+ L3 0 0.020833 3.125042 1.013193 0 1.545524 0.800677 0
+ L3 0 0.020833 0.585708 0.435051 0 1.545524 0.800677 0
+ L3 0 0.020833 3.125042 1.013193 0 4.147364 0.914255 0
+ L3 0 0.020833 1.545524 0.800677 0 1.580944 0.537424 0
+ L3 0 0.020833 3.125042 1.013193 0 3.160462 0.749940 0
+ L3 0 0.020833 0.864727 0.236105 0 0.827224 0.514844 0
+ L3 0 0.020833 3.930850 0.648638 0 3.893346 0.927376 0
+ A3 0 0.010417 0.064424 0.724175 0.343321 0 352.337139 360.000000
+ A3 0 0.010417 0.049411 0.724175 0.343321 0 352.337139 360.000000
+ A3 0 0.010417 0.062500 4.038066 0.789189 0 352.337139 360.000000
+ A3 0 0.010417 0.044194 4.038066 0.789189 0 352.337139 360.000000
+END$SEGS
+TURNOUT N "Atlas Custom Standard Wye 2754"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 4.881890 0.649606 75.000000
+ E 4.881890 -0.649606 105.000000
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ C 0 0.000000 -15.975786 0.354321 15.975786 165.000000 15.000000
+ S 0 0.000000 4.489175 0.544372 4.881890 0.649606
+ C 0 0.000000 15.975786 0.354236 -15.975786 0.000000 15.000000
+ S 0 0.000000 4.489175 -0.544372 4.881890 -0.649606
+END$SEGS
+
+
+SUBCONTENTS Atlas N-Scale Structures - Switch Machines
+STRUCTURE N "Atlas Remote Switch Machine 271x"
+ X pier 0.000000 ""
+ L3 0 0.020833 0.300000 0.300000 0 3.893750 0.300000 0
+ L3 0 0.020833 0.300000 0.300000 0 0.300000 0.534375 0
+ L3 0 0.020833 0.550000 0.300000 0 0.550000 0.581250 0
+ L3 0 0.020833 3.643750 0.300000 0 3.643750 0.581250 0
+ L3 0 0.020833 3.893750 0.300000 0 3.893750 0.534375 0
+ L3 0 0.020833 0.300000 0.534375 0 1.300000 0.768750 0
+ L3 0 0.020833 1.300000 0.768750 0 2.893750 0.768750 0
+ L3 0 0.020833 2.893750 0.768750 0 3.893750 0.534375 0
+ L3 0 0.020833 1.300000 0.768750 0 1.300000 0.503125 0
+ L3 0 0.020833 1.300000 0.503125 0 2.893750 0.503125 0
+ L3 0 0.020833 2.893750 0.768750 0 2.893750 0.503125 0
+ A3 0 0.010417 0.062500 0.425000 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 0.425000 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.062500 3.768750 0.438021 0 0.000000 360.000000
+ A3 0 0.010417 0.044194 3.768750 0.438021 0 0.000000 360.000000
+END$SEGS
+
+
+SUBCONTENTS Atlas N-Scale Structures - Turn Table
+TURNOUT N "Atlas Turn Table 2790"
+# TT was designed with 7.5in bridge, 8.5in outside dia., 15 degree spacing
+ P "1" 1 2 3
+ P "2" 4 5 6
+ P "3" 7 8 9
+ P "4" 10 11 12
+ P "5" 13 14 15
+ P "6" 16 17 18
+ P "7" 19 20 21
+ P "8" 22 23 24
+ P "9" 25 26 27
+ P "10" 28 29 30
+ P "11" 31 32 33
+ P "12" 34 35 36
+
+ E 0.000000 4.250000 0.000000
+ E 1.099981 4.105185 15.000000
+ E 2.125000 3.680608 30.000000
+ E 3.005204 3.005204 45.000000
+ E 3.680608 2.125000 60.000000
+# E 4.105185 1.099981 75.000000
+# E 4.250000 0.000000 90.000000
+# E 4.105185 -1.099981 105.000000
+ E 3.680608 -2.125000 120.000000
+ E 3.005204 -3.005204 135.000000
+ E 2.125000 -3.680608 150.000000
+ E 1.099981 -4.105185 165.000000
+ E 0.000000 -4.250000 180.000000
+ E -1.099981 -4.105185 195.000000
+ E -2.125000 -3.680608 210.000000
+ E -3.005204 -3.005204 225.000000
+ E -3.680608 -2.125000 240.000000
+ E -4.105185 -1.099981 255.000000
+ E -4.250000 0.000000 270.000000
+ E -4.105185 1.099981 285.000000
+ E -3.680608 2.125000 300.000000
+ E -3.005204 3.005204 315.000000
+ E -2.125000 3.680608 330.000000
+ E -1.080111 4.031029 345.000000
+#0/360
+ S 0 0 0.000000 4.250000 0.000000 3.750000
+ S 16777215 0 0.000000 3.750000 0.000000 -3.750000
+ S 0 0 0.000000 -3.750000 0.000000 -4.250000
+#15/195
+ S 0 0 1.099981 4.105185 0.970571 3.622222
+ S 16777215 0 0.970571 3.622222 -0.970571 -3.622222
+ S 0 0 -0.970571 -3.622222 -1.099981 -4.105185
+#30/210
+ S 0 0 2.125000 3.680608 1.875000 3.247595
+ S 16777215 0 1.836614 3.247595 -1.875000 -3.247595
+ S 0 0 -1.875000 -3.247595 -2.125000 -3.680608
+#45/225
+ S 0 0 3.005204 3.005204 2.651650 2.651650
+ S 16777215 0 2.651650 2.651650 -2.651650 -2.651650
+ S 0 0 -2.651650 -2.651650 -3.005204 -3.005204
+#60/240
+ S 0 0 3.680608 2.125000 3.247595 1.875000
+ S 16777215 0 3.247595 1.875000 -3.247595 -1.875000
+ S 0 0 -3.247595 -1.875000 -3.680608 -2.125000
+#75/255
+ S 16777215 0 4.105185 1.099981 3.622222 0.970571
+ S 16777215 0 3.622222 0.970571 -3.622222 -0.970571
+ S 0 0 -3.622222 -0.970571 -4.105185 -1.099981
+#90/270
+ S 16777215 0 4.250000 0.000000 3.750000 0.000000
+ S 16777215 0 3.750000 0.000000 -3.750000 0.000000
+ S 0 0 -3.750000 0.000000 -4.250000 0.000000
+#105/285
+ S 16777215 0 4.105185 -1.099981 3.622222 -0.970571
+ S 16777215 0 3.622222 -0.970571 -3.622222 0.970571
+ S 0 0 -3.622222 0.970571 -4.105185 1.099981
+#120/300
+ S 0 0 3.680608 -2.125000 3.247595 -1.875000
+ S 16777215 0 3.247595 -1.875000 -3.247595 1.875000
+ S 0 0 -3.247595 1.875000 -3.680608 2.125000
+#135/315
+ S 0 0 3.005204 -3.005204 2.651650 -2.651650
+ S 16777215 0 2.651650 -2.651650 -2.651650 2.651650
+ S 0 0 -2.651650 2.651650 -3.005204 3.005204
+#150/330
+ S 0 0 2.125000 -3.680608 1.875000 -3.247595
+ S 16777215 0 1.836614 -3.247595 -1.875000 3.247595
+ S 0 0 -1.875000 3.247595 -2.125000 3.680608
+#165/345
+ S 0 0 1.099981 -4.105185 0.970571 -3.622222
+ S 16777215 0 0.970571 -3.622222 -0.970571 3.622222
+ S 0 0 -0.970571 3.622222 -1.099981 4.105185
+
+ A 11579568 0.053333 4.250000 0.000000 0.000000 0.000000 360.000000
+ A 11579568 0.053333 3.750000 0.000000 0.000000 0.000000 360.000000
+ L 11579568 0.053333 4.000000 1.437500 6.000000 1.437500 0
+ L 11579568 0.053333 6.000000 1.437500 6.000000 -1.437500 0
+ L 11579568 0.053333 4.000000 -1.437500 6.000000 -1.437500 0
+END$SEGS
diff --git a/app/lib/params/N-Bachmann EZ.xtp b/app/lib/params/N-Bachmann EZ.xtp
index 8abd5ea..65c67e9 100644
--- a/app/lib/params/N-Bachmann EZ.xtp
+++ b/app/lib/params/N-Bachmann EZ.xtp
@@ -1,633 +1,633 @@
-CONTENTS Bachmann EZ Track N Scale
-#
-SUBCONTENTS Bachmann EZ Track - Straight Tracks
-TURNOUT N "Bachmann EZ Track Straight 30" 44887"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 30.00000 0.000000 90.000000
- S 0 0 0.000000 0.000000 30.000000 0.000000
- L 11579568 0.053333 0.000000 0.445774 30.000000 0.445774
- L 11579568 0.053333 0.000000 -0.445774 30.000000 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Straight 15" 44883"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.00000 0.000000 90.000000
- S 0 0 0.000000 0.000000 10.000000 0.000000
- L 11579568 0.053333 0.000000 0.445774 10.000000 0.445774
- L 11579568 0.053333 0.000000 -0.445774 10.000000 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Straight 10" 44815"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.00000 0.000000 90.000000
- S 0 0 0.000000 0.000000 10.000000 0.000000
- L 11579568 0.053333 0.000000 0.445774 10.000000 0.445774
- L 11579568 0.053333 0.000000 -0.445774 10.000000 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Terminal Str 10" 44897"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.00000 0.000000 90.000000
- S 0 0 0.000000 0.000000 10.000000 0.000000
- L 11579568 0.053333 0.000000 0.445774 10.000000 0.445774
- L 11579568 0.053333 0.000000 -0.445774 10.000000 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Rerailer Str 10" 44820"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.00000 0.000000 90.000000
- S 0 0 0.000000 0.000000 10.000000 0.000000
- L 11579568 0.053333 0.000000 0.445774 10.000000 0.445774
- L 11579568 0.053333 0.000000 -0.445774 10.000000 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Straight 5" 44811"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 5.000000 0.000000
- L 11579568 0.053333 0.000000 0.445774 5.000000 0.445774
- L 11579568 0.053333 0.000000 -0.445774 5.000000 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Elec.Auto-Reversing Straight 5" 44848"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 5.000000 0.000000
- L 11579568 0.053333 0.000000 0.445774 5.000000 0.445774
- L 11579568 0.053333 0.000000 -0.445774 5.000000 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Straight 4 1/2 44829A"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.500000 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.500000 0.000000
- L 11579568 0.053333 0.000000 0.445774 4.500000 0.445774
- L 11579568 0.053333 0.000000 -0.445774 4.500000 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Straight 2 1/4 44829B"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.250000 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.250000 0.000000
- L 11579568 0.053333 0.000000 0.445774 2.250000 0.445774
- L 11579568 0.053333 0.000000 -0.445774 2.250000 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Straight 1 1/8 44829C"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.125000 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.125000 0.000000
- L 11579568 0.053333 0.000000 0.445774 1.125000 0.445774
- L 11579568 0.053333 0.000000 -0.445774 1.125000 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Straight 1 1/2 44899A"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.500000 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.500000 0.000000
- L 11579568 0.053333 0.000000 0.445774 1.500000 0.445774
- L 11579568 0.053333 0.000000 -0.445774 1.500000 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Straight 1 1/4 44899B"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.250000 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.250000 0.000000
- L 11579568 0.053333 0.000000 0.445774 1.250000 0.445774
- L 11579568 0.053333 0.000000 -0.445774 1.250000 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Straight 7/8 44899C"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.875000 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.875000 0.000000
- L 11579568 0.053333 0.000000 0.445774 0.875000 0.445774
- L 11579568 0.053333 0.000000 -0.445774 0.875000 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Straight 3/4 44899D"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.750000 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.750000 0.000000
- L 11579568 0.053333 0.000000 0.445774 0.750000 0.445774
- L 11579568 0.053333 0.000000 -0.445774 0.750000 -0.445774
- END
-
-SUBCONTENTS Bachmann EZ Track - Curved Tracks
-TURNOUT N "Bachmann EZ Track Curve 11.25R 30° 44801"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.625000 -1.507214 120.000000
- C 0 0 11.250000 0.000000 -11.250000 0.000000 30.000000
- A 11579568 0.053333 10.804226 0.000000 -11.250000 0.000000 30.000000
- A 11579568 0.053333 11.695774 0.000000 -11.250000 0.000000 30.000000
- END
-TURNOUT N "Bachmann EZ Track Curve 11.25R 15° 44821"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.911712 -0.383334 105.000000
- C 0 0 11.250000 0.000000 -11.250000 0.000000 15.000000
- A 11579568 0.053333 11.695774 0.000000 -11.250000 0.000000 15.000000
- A 11579568 0.053333 10.804226 0.000000 -11.250000 0.000000 15.000000
- END
-TURNOUT N "Bachmann EZ Track Curve 11.25R 7.5° 44831"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.468418 -0.096245 97.500000
- C 0 0 11.250000 0.000000 -11.250000 0.000000 7.500000
- A 11579568 0.053333 11.695774 0.000000 -11.250000 0.000000 7.500000
- A 11579568 0.053333 10.804226 0.000000 -11.250000 0.000000 7.500000
- END
-TURNOUT N "Bachmann EZ Track Curve 12.5R 30° 44852"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.250000 -1.674682 120.000000
- C 0 0 12.500000 0.000000 -12.500000 0.000000 30.000000
- A 11579568 0.053333 12.054226 0.000000 -12.500000 0.000000 30.000000
- A 11579568 0.053333 12.945774 0.000000 -12.500000 0.000000 30.000000
- END
-TURNOUT N "Bachmann EZ Track Half-Curve 12.5R 15° 44822"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.235238 -0.425927 105.000000
- C 0 0 12.500000 0.000000 -12.500000 0.000000 15.000000
- A 11579568 0.053333 12.054226 0.000000 -12.500000 0.000000 15.000000
- A 11579568 0.053333 12.945774 0.000000 -12.500000 0.000000 15.000000
- END
-TURNOUT N "Bachmann EZ Track Curve 12.5R 7.5° 44832"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.631576 -0.106939 97.500000
- C 0 0.000000 12.500000 0.000000 -12.500000 0.000000 7.500000
- A 11579568 0.053333 12.945774 0.000000 -12.500000 0.000000 7.500000
- A 11579568 0.053333 12.054226 0.000000 -12.500000 0.000000 7.500000
- END
-TURNOUT N "Bachmann EZ Track Curve 14R 30° 44853"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.999995 -1.875641 120.000000
- C 0 0 14.000000 0.000000 -14.000000 0.000000 30.000000
- A 11579568 0.053333 13.554226 0.000000 -14.000000 0.000000 30.000000
- A 11579568 0.053333 14.445774 0.000000 -14.000000 0.000000 30.000000
- END
-TURNOUT N "Bachmann EZ Track Half-Curve 14R 15° 44823"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.623464 -0.477038 105.000000
- C 0 0 14.000000 0.000000 -14.000000 0.000000 15.000000
- A 11579568 0.053333 13.554226 0.000000 -14.000000 0.000000 15.000000
- A 11579568 0.053333 14.445774 0.000000 -14.000000 0.000000 15.000000
- END
-TURNOUT N "Bachmann EZ Track Curve 15.5R 30° 44854"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.749994 -2.076603 120.000000
- C 0 0.000000 15.500000 0.000000 -15.500000 0.000000 30.000000
- A 11579568 0.053333 15.945774 0.000000 -15.500000 0.000000 30.000000
- A 11579568 0.053333 15.054226 0.000000 -15.500000 0.000000 30.000000
- END
-TURNOUT N "Bachmann EZ Track Curve 15.5R 15° 44824"
- U "Curved Section" "" "Bachmann EZ Track" "Curve 15.5R 15°" "44824" 15.500000 15.000000 0.891548 0.010417 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.011692 -0.528149 105.000000
- C 0 0.000000 15.500000 0.000000 -15.500000 0.000000 15.000000
- A 11579568 0.053333 15.945774 0.000000 -15.500000 0.000000 15.000000
- A 11579568 0.053333 15.054226 0.000000 -15.500000 0.000000 15.000000
- END
-TURNOUT N "Bachmann EZ Track Curve 15.5R 7.5° 44834"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.023154 -0.132604 97.500000
- C 0 0.000000 15.500000 0.000000 -15.500000 0.000000 7.500000
- A 11579568 0.053333 15.945774 0.000000 -15.500000 0.000000 7.500000
- A 11579568 0.053333 15.054226 0.000000 -15.500000 0.000000 7.500000
- END
-TURNOUT N "Bachmann EZ Track Curve 17.5R 15° 44855"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.529330 -0.596297 105.000000
- C 0 0.000000 17.500000 0.000000 -17.500000 0.000000 15.000000
- A 11579568 0.053333 17.945774 0.000000 -17.500000 0.000000 15.000000
- A 11579568 0.053333 17.054226 0.000000 -17.500000 0.000000 15.000000
- END
-TURNOUT N "Bachmann EZ Track Curve 17.5R 7.5° 44825"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.284206 -0.149715 97.500000
- C 0 0.000000 17.500000 0.000000 -17.500000 0.000000 7.500000
- A 11579568 0.053333 17.945774 0.000000 -17.500000 0.000000 7.500000
- A 11579568 0.053333 17.054226 0.000000 -17.500000 0.000000 7.500000
- END
-TURNOUT N "Bachmann EZ Track Curve 17.5R 3.75° 44835"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.144554 -0.037469 93.750000
- C 0 0.000000 -17.500000 0.000000 -17.500000 0.000000 3.750000
- A 11579568 0.053333 17.945774 0.000000 -17.500000 0.000000 3.750000
- A 11579568 0.053333 17.054226 0.000000 -17.500000 0.000000 3.750000
- END
-TURNOUT N "Bachmann EZ Track Curve 19R 15° 44804"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.917562 -0.647409 105.000000
- C 0 0 19.000000 -0.000000 -19.000000 0.000000 15.000000
- A 11579568 0.053333 18.554226 0.000000 -19.000000 0.000000 15.000000
- A 11579568 0.053333 19.445774 0.000000 -19.000000 0.000000 15.000000
- END
-TURNOUT N "Bachmann EZ Track Half-Curve 19R 7.5° 44856"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.479998 -0.162548 97.500000
- C 0 0 19.000000 -0.000000 -19.000000 0.000000 7.500000
- A 11579568 0.053333 18.554226 0.000000 -19.000000 0.000000 7.500000
- A 11579568 0.053333 19.445774 0.000000 -19.000000 0.000000 7.500000
- END
-TURNOUT N "Bachmann EZ Track Curve 19R 3.75° 44836"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.242658 -0.040680 93.750000
- C 0 0.000000 19.000000 0.000000 -19.000000 0.000000 3.750000
- A 11579568 0.053333 19.445774 0.000000 -19.000000 0.000000 3.750000
- A 11579568 0.053333 18.554226 0.000000 -19.000000 0.000000 3.750000
- END
-TURNOUT N "Bachmann EZ Track Terminal/Rerailer Curve 11.25R 30° 44802"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.625000 -1.507214 120.000000
- C 0 0 11.250000 0.000000 -11.250000 0.000000 30.000000
- A 11579568 0.053333 10.804226 0.000000 -11.250000 0.000000 30.000000
- A 11579568 0.053333 11.695774 0.000000 -11.250000 0.000000 30.000000
- END
-TURNOUT N "Bachmann EZ Track Elec.Auto-Reversing Curve 11.25R 30° 44849"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.625000 -1.507214 120.000000
- C 0 0 11.250000 0.000000 -11.250000 0.000000 30.000000
- A 11579568 0.053333 10.804226 0.000000 -11.250000 0.000000 30.000000
- A 11579568 0.053333 11.695774 0.000000 -11.250000 0.000000 30.000000
- END
-
-SUBCONTENTS Bachmann EZ Track - Bumper Track
-TURNOUT N "Bachmann EZ Track Hayes Bumper 44891"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- L 11579568 0.053333 0.000000 0.4457740 1.250000 0.4457740
- L 11579568 0.053333 0.000000 -0.4457740 1.250000 -0.4457740
- L 11579568 0.053333 1.250000 0.4457740 1.250000 -0.4457740
- L 0 0.053333 1.026667 0.080227 1.200000 0.080227
- L 0 0.053333 1.200000 0.080227 1.200000 -0.093107
- L 0 0.053333 1.200000 -0.093107 1.026667 -0.093107
- L 0 0.053333 1.026667 -0.093107 1.026667 0.080227
- L 0 0.053333 0.800000 0.080227 0.800000 -0.093107
- L 0 0.040000 0.826667 -0.066440 1.146667 -0.453107
- L 0 0.040000 0.826667 0.066893 1.160000 0.440227
- L 0 0.040000 0.826667 -0.093107 0.573333 -0.453107
- L 0 0.040000 0.840000 0.080227 0.586667 0.440227
- L 0 0.053333 0.746667 -0.106440 0.746667 0.106893
- END
-
-SUBCONTENTS Bachmann EZ Track - Turnouts
-TURNOUT N "Bachmann EZ Track Turnout Left 44861"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 5.000000 0.000000 90.000000
- E 5.625000 1.507214 60.000000
- S 0 0 0.000000 0.000000 5.000000 0.000000
- C 0 0 11.250000 0.000000 11.250000 150.000000 30.000000
- L 11579568 0.053333 0.000000 -0.445774 5.000000 -0.445774
- A 11579568 0.053333 10.804226 0.000000 11.250000 150.000000 30.000000
- END
-TURNOUT N "Bachmann EZ Track Turnout Right 44862"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 5.000000 0.000000 90.000000
- E 5.625000 -1.507214 120.000000
- S 0 0 0.000000 0.000000 5.000000 0.000000
- C 0 0 11.250000 0.000000 -11.250000 0.000000 30.000000
- L 11579568 0.053333 0.000000 0.445774 5.000000 0.445774
- A 11579568 0.053333 10.804226 0.000000 -11.250000 0.000000 30.000000
- END
-TURNOUT N "Bachmann EZ Track #4 Turnout Left 44863"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 6.250000 0.000000 90.000000
- E 6.140000 0.870000 75.522476
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 6.250000 0.000000
- C 0 0.000000 -19.022995 0.354325 19.022995 165.522400 14.477676
- S 0 0.000000 5.110098 0.604072 6.140000 0.870000
- L 11579568 0.053333 -0.000001 -0.445774 6.249999 -0.445766 0
- L 11579568 0.053333 0.000000 0.445774 0.354300 0.445774 0
- A 11579568 0.053333 18.577221 0.354325 19.022995 165.522400 14.477676
- L 11579568 0.053333 4.998651 1.035690 6.028554 1.301618 0
- END
-TURNOUT N "Bachmann EZ Track #4 Turnout Curve 11.25R 14° 44863/64"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.721619 -0.334173 104.000000
- C 0 0 11.250000 0.000000 -11.250000 0.000000 14.000000
- A 11579568 0.053333 11.695774 0.000000 -11.250000 0.000000 14.000000
- A 11579568 0.053333 10.804226 0.000000 -11.250000 0.000000 14.000000
- END
-TURNOUT N "Bachmann EZ Track #4 Turnout Right 44864"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 6.250000 0.000000 90.000000
- E 6.140000 -0.870000 104.477524
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 6.250000 0.000000
- C 0 0.000000 19.022995 0.354224 -19.022995 0.000076 14.477676
- S 0 0.000000 5.110098 -0.604072 6.140000 -0.870000
- L 11579568 0.053333 -0.000001 -0.445774 0.354299 -0.445774 0
- L 11579568 0.053333 0.000000 0.445774 6.250000 0.445782 0
- A 11579568 0.053333 18.577221 0.354224 -19.022995 0.000076 14.477676
- L 11579568 0.053333 4.998649 -1.035689 6.028551 -1.301618 0
- END
-TURNOUT N "Bachmann EZ Track #6 Turnout Left 44859"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 8.870000 0.000000 90.000000
- E 8.790000 1.050000 80.405924
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 8.870000 0.000000
- C 0 0.000000 -26.500010 0.354335 26.500010 170.405848 9.594228
- S 0 0.000000 4.771038 0.370659 8.790000 1.050000
- L 11579568 0.053333 -0.000001 -0.445774 8.869999 -0.445763 0
- L 11579568 0.053333 0.000000 0.445774 0.354300 0.445774 0
- L 11579568 0.053333 7.805537 0.445784 8.870000 0.445785 0
- A 11579568 0.053333 26.054236 0.354335 26.500010 170.405848 9.594228
- L 11579568 0.053333 7.859557 0.440626 8.864298 0.610461 0
- L 11579568 0.053333 4.696741 0.810198 8.715704 1.489539 0
- END
-TURNOUT N "Bachmann EZ Track #6 Turnout Curve 14R 9.46° 44859/60"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.301024 -0.190391 99.460000
- C 0 0.000000 14.000000 0.000000 -14.000000 0.000000 9.460000
- A 11579568 0.053333 14.445774 0.000000 -14.000000 0.000000 9.460000
- A 11579568 0.053333 13.554226 0.000000 -14.000000 0.000000 9.460000
- END
-TURNOUT N "Bachmann EZ Track #6 Turnout Right 44860"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 8.870000 0.000000 90.000000
- E 8.790000 -1.050000 99.594076
- S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 8.870000 0.000000
- C 0 0.000000 26.500010 0.354195 -26.500010 0.000076 9.594228
- S 0 0.000000 4.771038 -0.370659 8.790000 -1.050000
- L 11579568 0.053333 -0.000001 -0.445774 0.354299 -0.445774 0
- L 11579568 0.053333 0.000000 0.445774 8.870000 0.445785 0
- L 11579568 0.053333 7.805536 -0.445764 8.869999 -0.445763 0
- A 11579568 0.053333 26.054236 0.354195 -26.500010 0.000076 9.594228
- L 11579568 0.053333 4.696739 -0.810198 8.715701 -1.489539 0
- L 11579568 0.053333 7.859557 -0.440626 8.864298 -0.610461 0
- END
-TURNOUT N "Bachmann EZ Track #6 Wye Turnout 44869"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 8.400000 0.550000 80.405924
- E 8.400000 -0.550000 99.594076
- S 0 0.000000 0.000000 0.000000 2.200590 0.000000
- C 0 0.000000 -35.100399 2.200636 35.100399 170.405848 9.594228
- S 0 0.000000 8.050748 0.490954 8.400000 0.550000
- C 0 0.000000 35.100399 2.200450 -35.100399 0.000076 9.594228
- S 0 0.000000 8.050748 -0.490954 8.400000 -0.550000
- L 11579568 0.053333 -0.000001 -0.445774 2.200588 -0.445771 0
- L 11579568 0.053333 0.000000 0.445774 2.200590 0.445777 0
- A 11579568 0.053333 35.546173 2.200636 35.100399 170.405848 0.599639
- A 11579568 0.053333 34.654625 2.200636 35.100399 170.405848 9.594228
- L 11579568 0.053333 8.125058 0.051418 8.474310 0.110463 0
- L 11579568 0.053333 7.976439 0.930491 8.325691 0.989537 0
- A 11579568 0.053333 35.546173 2.200450 -35.100399 8.994665 0.599639
- A 11579568 0.053333 34.654625 2.200450 -35.100399 0.000076 9.594228
- L 11579568 0.053333 7.976437 -0.930491 8.325689 -0.989536 0
- L 11579568 0.053333 8.125058 -0.051418 8.474310 -0.110463 0
- END
-TURNOUT N "Bachmann EZ Track Wye Turnout Curve 19R 4.75° 44869D"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.573355 -0.065255 94.750000
- C 0 0.000000 19.000000 0.000000 -19.000000 0.000000 4.750000
- A 11579568 0.053333 19.445774 0.000000 -19.000000 0.000000 4.750000
- A 11579568 0.053333 18.554226 0.000000 -19.000000 0.000000 4.750000
- END
-TURNOUT N "Bachmann EZ Track #6 Left Crossover Turnout 44875"
- P "Normal" 1 2 0 3 4
- P "Reverse" 1 5 6 7 4
- E 0.000000 0.000000 270.000000
- E 12.700000 0.000000 90.000000
- E 0.000000 1.250000 270.000000
- E 12.700000 1.250000 90.000000
- S 0 0.000000 0.000000 0.000000 0.644225 0.000000
- S 0 0.000000 0.644225 0.000000 12.700000 0.000000
- S 0 0.000000 0.000000 1.250000 12.055775 1.250000
- S 0 0.000000 12.055775 1.250000 12.700000 1.250000
- C 0 0.000000 -26.257128 0.644259 26.257128 168.223421 11.776655
- S 0 0.000000 6.003227 0.552695 6.696773 0.697305
- C 0 0.000000 26.257128 12.055809 -25.007121 348.223421 11.776655
- L 11579568 0.053333 -0.000001 -0.445774 12.699999 -0.445758 0
- L 11579568 0.053333 0.000000 0.445774 0.644225 0.445775 0
- L 11579568 0.053333 7.802341 0.445783 12.700000 0.445790 0
- L 11579568 0.053333 -0.000001 0.804226 4.897658 0.804232 0
- L 11579568 0.053333 0.000000 1.695774 12.700000 1.695775 0
- L 11579568 0.053333 12.055774 0.804226 12.699999 0.804227 0
- A 11579568 0.053333 25.811354 0.644259 26.257128 170.431544 9.568532
- A 11579568 0.053333 25.811354 12.055809 -25.007121 350.431544 9.568532
- END
-TURNOUT N "Bachmann EZ Track #6 Right Crossover Turnout 44876"
- P "Normal" 1 2 0 3 4
- P "Reverse" 3 5 6 7 2
- E 0.000000 0.000000 270.000000
- E 12.700000 0.000000 90.000000
- E 0.000000 1.250000 270.000000
- E 12.700000 1.250000 90.000000
- S 0 0.000000 0.000000 0.000000 12.055775 0.000000
- S 0 0.000000 12.055775 0.000000 12.700000 0.000000
- S 0 0.000000 0.000000 1.250000 0.644225 1.250000
- S 0 0.000000 0.644225 1.250000 12.700000 1.250000
- C 0 0.000000 26.257128 0.644120 -25.007128 0.000076 11.776655
- S 0 0.000000 6.003227 0.697305 6.696773 0.552695
- C 0 0.000000 -26.257128 12.055809 26.257121 180.000076 11.776655
- L 11579568 0.053333 -0.000001 -0.445774 12.699999 -0.445773 0
- L 11579568 0.053333 0.000000 0.445774 4.897659 0.445780 0
- L 11579568 0.053333 12.055775 0.445774 12.700000 0.445775 0
- L 11579568 0.053333 -0.000001 0.804226 0.644223 0.804227 0
- L 11579568 0.053333 0.000000 1.695774 12.700000 1.695790 0
- L 11579568 0.053333 7.802340 0.804235 12.699999 0.804242 0
- A 11579568 0.053333 25.811354 0.644120 -25.007128 0.000076 9.568532
- A 11579568 0.053333 25.811354 12.055809 26.257121 180.000076 9.568532
- END
-
-
-SUBCONTENTS Bachmann EZ Track - Crossings
-TURNOUT N "Bachmann EZ Track Crossing 90° w/1.25 44841"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 3.750000 0.000000 90.000000
- E 1.875000 1.875000 0.000000
- E 1.875000 -1.875000 180.000000
- S 0 0 0.000000 0.000000 3.750000 0.000000
- S 0 0 1.875000 1.875000 1.875000 -1.875000
- L 11579568 0.053333 0.000000 0.445774 1.429226 0.445774
- L 11579568 0.053333 0.000000 -0.445774 1.429226 -0.445774
- L 11579568 0.053333 2.320774 0.445774 3.750000 0.445774
- L 11579568 0.053333 2.320774 -0.445774 3.750000 -0.445774
- L 11579568 0.053333 1.429226 1.875000 1.429226 0.445774
- L 11579568 0.053333 2.320774 1.875000 2.320774 0.445774
- L 11579568 0.053333 1.429226 -1.875000 1.429226 -0.445774
- L 11579568 0.053333 2.320774 -1.875000 2.320774 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Crossing 90° w/o 1.25 44841"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 1.250000 0.000000 90.000000
- E 0.625000 0.625000 0.000000
- E 0.625000 -0.625000 180.000000
- S 0 0 0.000000 0.000000 1.250000 0.000000
- S 0 0 0.625000 0.625000 0.625000 -0.625000
- L 11579568 0.053333 0.000000 0.445774 0.179226 0.445774
- L 11579568 0.053333 0.000000 -0.445774 0.179226 -0.445774
- L 11579568 0.053333 1.070774 0.445774 1.250000 0.445774
- L 11579568 0.053333 1.070774 -0.445774 1.250000 -0.445774
- L 11579568 0.053333 0.179226 0.625000 0.179226 0.445774
- L 11579568 0.053333 1.070774 0.625000 1.070774 0.445774
- L 11579568 0.053333 0.179226 -0.625000 0.179226 -0.445774
- L 11579568 0.053333 1.070774 -0.625000 1.070774 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Straight 1 1/4 44841"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.250000 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.250000 0.000000
- L 11579568 0.053333 0.000000 0.445774 1.250000 0.445774
- L 11579568 0.053333 0.000000 -0.445774 1.250000 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Crossing 60° 44842"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 2.500000 0.000000 90.000000
- E 1.875000 1.082532 30.000000
- E 0.625000 -1.082532 210.000000
- S 0 0 0.000000 0.000000 2.500000 0.000000
- S 0 0 0.625000 -1.082532 1.875000 1.082532
- L 11579568 0.053333 0.000000 0.445774 0.992632 0.445774
- L 11579568 0.053333 0.000000 -0.445774 0.477897 -0.445774
- L 11579568 0.053333 2.022103 0.445774 2.500000 0.445774
- L 11579568 0.053333 1.507368 -0.445774 2.500000 -0.445774
- L 11579568 0.053333 0.992632 0.445774 1.488948 1.305419
- L 11579568 0.053333 2.261052 0.859645 2.022103 0.445774
- L 11579568 0.053333 0.238948 -0.859645 0.477897 -0.445774
- L 11579568 0.053333 1.011052 -1.305419 1.507368 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Crossing 45° 44843"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 2.500000 0.000000 90.000000
- E 2.133883 0.883883 45.000000
- E 0.366117 -0.883883 225.000000
- S 0 0 0.000000 0.000000 2.500000 0.000000
- S 0 0 0.366117 -0.883883 2.133883 0.883883
- L 11579568 0.053333 0.000000 0.445774 1.065354 0.445774
- L 11579568 0.053333 0.000000 -0.445774 0.173806 -0.445774
- L 11579568 0.053333 2.326194 0.445774 2.500000 0.445774
- L 11579568 0.053333 1.434646 -0.445774 2.500000 -0.445774
- L 11579568 0.053333 1.065354 0.445774 1.818674 1.199093
- L 11579568 0.053333 2.449093 0.568674 2.326194 0.445774
- L 11579568 0.053333 0.050907 -0.568674 0.173806 -0.445774
- L 11579568 0.053333 0.681326 -1.199093 1.434646 -0.445774
- END
-TURNOUT N "Bachmann EZ Track Crossing 30° 44840"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 3.500000 0.000000 90.000000
- E 3.265544 0.875000 60.000000
- E 0.234456 -0.875000 240.000000
- S 0 0 0.000000 0.000000 3.500000 0.000000
- S 0 0 0.234456 -0.875000 3.265544 0.875000
- L 11579568 0.053333 0.000000 0.445774 1.630555 0.445774
- L 11579568 0.053333 1.869445 -0.445774 3.500000 -0.445774
- L 11579568 0.053333 1.630555 0.445774 3.042657 1.261052
- L 11579568 0.053333 0.457343 -1.261052 1.869445 -0.445774
- END
-
-
-SUBCONTENTS Bachmann EZ Track - Turntable
-TURNOUT N "Bachmann Turntable 25.71d 12Pos 46799" 512
- P "1" 1 2 3
- P "2" 4 5 6
- P "3" 7 8 9
- P "4" 10 11 12
- P "5" 13 14 15
- P "6" 16 17
- P "7" 18 19
- E 0.000000 3.750000 0.000000
- E 1.627064 3.378633 25.714286
- E 2.931868 2.338087 51.428571
- E 3.655980 0.834454 77.142857
- E 3.655980 -0.834454 102.857143
- E 2.931868 -2.338087 128.571429
- E 1.627064 -3.378633 154.285714
- E 0.000000 -3.750000 180.000000
- E -1.627064 -3.378633 205.714286
- E -2.931868 -2.338087 231.428571
- E -3.655980 -0.834454 257.142857
- E -3.655980 0.834454 282.857143
- S 0 0 0.000000 3.750000 0.000000 2.750000
- S 16777215 0 0.000000 2.750000 0.000000 -2.750000
- S 0 0 0.000000 -2.750000 0.000000 -3.750000
- S 0 0 1.627064 3.378633 1.193180 2.477664
- S 16777215 0 1.193180 2.477664 -1.193180 -2.477664
- S 0 0 -1.193180 -2.477664 -1.627064 -3.378633
- S 0 0 2.931868 2.338087 2.150037 1.714597
- S 16777215 0 2.150037 1.714597 -2.150037 -1.714597
- S 0 0 -2.150037 -1.714597 -2.931868 -2.338087
- S 0 0 3.655980 0.834454 2.681052 0.611933
- S 16777215 0 2.681052 0.611933 -2.681052 -0.611933
- S 0 0 -2.681052 -0.611933 -3.655980 -0.834454
- S 0 0 3.655980 -0.834454 2.681052 -0.611933
- S 16777215 0 2.681052 -0.611933 -2.681052 0.611933
- S 0 0 -2.681052 0.611933 -3.655980 0.834454
- S 0 0 2.931868 -2.338087 2.150037 -1.714597
- S 16777215 0 2.150037 -1.714597 -2.150037 1.714597
- S 0 0 1.627064 -3.378633 1.193180 -2.477664
- S 16777215 0 1.193180 -2.477664 -1.193180 2.477664
- A3 8424071 0.031250 2.750000 0.000000 0.000000 0 0.000000 360.000000
- A3 8424071 0.031250 2.250000 0.000000 0.000000 0 0.000000 360.000000
- L3 8424071 0.031250 -1.231834 3.750000 0 0.855913 3.750000 0
- L3 8424071 0.031250 0.855913 3.750000 0 2.398215 3.007267 0
- L3 8424071 0.031250 2.398215 3.007267 0 3.465521 1.668907 0
- L3 8424071 0.031250 3.465521 1.668907 0 3.846438 0.000000 0
- L3 8424071 0.031250 3.846438 0.000000 0 3.465521 -1.668907 0
- L3 8424071 0.031250 3.465521 -1.668907 0 2.398215 -3.007267 0
- L3 8424071 0.031250 2.398215 -3.007267 0 0.855913 -3.750000 0
- L3 8424071 0.031250 0.855913 -3.750000 0 -0.855913 -3.750000 0
- L3 8424071 0.031250 -0.855913 -3.750000 0 -2.398215 -3.007267 0
- L3 8424071 0.031250 -2.398215 -3.007267 0 -3.465521 -1.668907 0
- L3 8424071 0.031250 -3.465521 -1.668907 0 -3.846438 0.000000 0
- L3 8424071 0.031250 -3.846438 0.000000 0 -3.381871 2.035403 0
- L3 8424071 0.031250 -3.381871 2.035403 0 -4.192467 3.051859 0
- L3 8424071 0.031250 -4.192467 3.051859 0 -2.042431 4.766456 0
- L3 8424071 0.031250 -2.042431 4.766456 0 -1.231834 3.750000 0
- F4 13882323 0.000000 4 0
- -0.893180 3.124857 0
- -2.847759 1.566132 0
- -4.016802 3.032066 0
- -2.062223 4.590791 0
- L3 8424071 0.031250 -0.893180 3.124857 0 -2.847759 1.566132 0
- L3 8424071 0.031250 -2.847759 1.566132 0 -4.016802 3.032066 0
- L3 8424071 0.031250 -4.016802 3.032066 0 -2.062223 4.590791 0
- L3 8424071 0.031250 -2.062223 4.590791 0 -0.893180 3.124857 0
-END$SEGS
-
-
+CONTENTS Bachmann EZ Track N Scale
+#
+SUBCONTENTS Bachmann EZ Track - Straight Tracks
+TURNOUT N "Bachmann EZ Track Straight 30" 44887"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 30.00000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 30.000000 0.000000
+ L 11579568 0.053333 0.000000 0.445774 30.000000 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 30.000000 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Straight 15" 44883"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.00000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ L 11579568 0.053333 0.000000 0.445774 10.000000 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 10.000000 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Straight 10" 44815"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.00000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ L 11579568 0.053333 0.000000 0.445774 10.000000 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 10.000000 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Terminal Str 10" 44897"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.00000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ L 11579568 0.053333 0.000000 0.445774 10.000000 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 10.000000 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Rerailer Str 10" 44820"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.00000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ L 11579568 0.053333 0.000000 0.445774 10.000000 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 10.000000 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Straight 5" 44811"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.000000 0.000000
+ L 11579568 0.053333 0.000000 0.445774 5.000000 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 5.000000 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Elec.Auto-Reversing Straight 5" 44848"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.000000 0.000000
+ L 11579568 0.053333 0.000000 0.445774 5.000000 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 5.000000 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Straight 4 1/2 44829A"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.500000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.500000 0.000000
+ L 11579568 0.053333 0.000000 0.445774 4.500000 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 4.500000 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Straight 2 1/4 44829B"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.250000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.250000 0.000000
+ L 11579568 0.053333 0.000000 0.445774 2.250000 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 2.250000 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Straight 1 1/8 44829C"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.125000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.125000 0.000000
+ L 11579568 0.053333 0.000000 0.445774 1.125000 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 1.125000 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Straight 1 1/2 44899A"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.500000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.500000 0.000000
+ L 11579568 0.053333 0.000000 0.445774 1.500000 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 1.500000 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Straight 1 1/4 44899B"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.250000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.250000 0.000000
+ L 11579568 0.053333 0.000000 0.445774 1.250000 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 1.250000 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Straight 7/8 44899C"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.875000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.875000 0.000000
+ L 11579568 0.053333 0.000000 0.445774 0.875000 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 0.875000 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Straight 3/4 44899D"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.750000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.750000 0.000000
+ L 11579568 0.053333 0.000000 0.445774 0.750000 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 0.750000 -0.445774
+ END
+
+SUBCONTENTS Bachmann EZ Track - Curved Tracks
+TURNOUT N "Bachmann EZ Track Curve 11.25R 30° 44801"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.625000 -1.507214 120.000000
+ C 0 0 11.250000 0.000000 -11.250000 0.000000 30.000000
+ A 11579568 0.053333 10.804226 0.000000 -11.250000 0.000000 30.000000
+ A 11579568 0.053333 11.695774 0.000000 -11.250000 0.000000 30.000000
+ END
+TURNOUT N "Bachmann EZ Track Curve 11.25R 15° 44821"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.911712 -0.383334 105.000000
+ C 0 0 11.250000 0.000000 -11.250000 0.000000 15.000000
+ A 11579568 0.053333 11.695774 0.000000 -11.250000 0.000000 15.000000
+ A 11579568 0.053333 10.804226 0.000000 -11.250000 0.000000 15.000000
+ END
+TURNOUT N "Bachmann EZ Track Curve 11.25R 7.5° 44831"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.468418 -0.096245 97.500000
+ C 0 0 11.250000 0.000000 -11.250000 0.000000 7.500000
+ A 11579568 0.053333 11.695774 0.000000 -11.250000 0.000000 7.500000
+ A 11579568 0.053333 10.804226 0.000000 -11.250000 0.000000 7.500000
+ END
+TURNOUT N "Bachmann EZ Track Curve 12.5R 30° 44852"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.250000 -1.674682 120.000000
+ C 0 0 12.500000 0.000000 -12.500000 0.000000 30.000000
+ A 11579568 0.053333 12.054226 0.000000 -12.500000 0.000000 30.000000
+ A 11579568 0.053333 12.945774 0.000000 -12.500000 0.000000 30.000000
+ END
+TURNOUT N "Bachmann EZ Track Half-Curve 12.5R 15° 44822"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.235238 -0.425927 105.000000
+ C 0 0 12.500000 0.000000 -12.500000 0.000000 15.000000
+ A 11579568 0.053333 12.054226 0.000000 -12.500000 0.000000 15.000000
+ A 11579568 0.053333 12.945774 0.000000 -12.500000 0.000000 15.000000
+ END
+TURNOUT N "Bachmann EZ Track Curve 12.5R 7.5° 44832"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.631576 -0.106939 97.500000
+ C 0 0.000000 12.500000 0.000000 -12.500000 0.000000 7.500000
+ A 11579568 0.053333 12.945774 0.000000 -12.500000 0.000000 7.500000
+ A 11579568 0.053333 12.054226 0.000000 -12.500000 0.000000 7.500000
+ END
+TURNOUT N "Bachmann EZ Track Curve 14R 30° 44853"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.999995 -1.875641 120.000000
+ C 0 0 14.000000 0.000000 -14.000000 0.000000 30.000000
+ A 11579568 0.053333 13.554226 0.000000 -14.000000 0.000000 30.000000
+ A 11579568 0.053333 14.445774 0.000000 -14.000000 0.000000 30.000000
+ END
+TURNOUT N "Bachmann EZ Track Half-Curve 14R 15° 44823"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.623464 -0.477038 105.000000
+ C 0 0 14.000000 0.000000 -14.000000 0.000000 15.000000
+ A 11579568 0.053333 13.554226 0.000000 -14.000000 0.000000 15.000000
+ A 11579568 0.053333 14.445774 0.000000 -14.000000 0.000000 15.000000
+ END
+TURNOUT N "Bachmann EZ Track Curve 15.5R 30° 44854"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.749994 -2.076603 120.000000
+ C 0 0.000000 15.500000 0.000000 -15.500000 0.000000 30.000000
+ A 11579568 0.053333 15.945774 0.000000 -15.500000 0.000000 30.000000
+ A 11579568 0.053333 15.054226 0.000000 -15.500000 0.000000 30.000000
+ END
+TURNOUT N "Bachmann EZ Track Curve 15.5R 15° 44824"
+ U "Curved Section" "" "Bachmann EZ Track" "Curve 15.5R 15°" "44824" 15.500000 15.000000 0.891548 0.010417 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.011692 -0.528149 105.000000
+ C 0 0.000000 15.500000 0.000000 -15.500000 0.000000 15.000000
+ A 11579568 0.053333 15.945774 0.000000 -15.500000 0.000000 15.000000
+ A 11579568 0.053333 15.054226 0.000000 -15.500000 0.000000 15.000000
+ END
+TURNOUT N "Bachmann EZ Track Curve 15.5R 7.5° 44834"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.023154 -0.132604 97.500000
+ C 0 0.000000 15.500000 0.000000 -15.500000 0.000000 7.500000
+ A 11579568 0.053333 15.945774 0.000000 -15.500000 0.000000 7.500000
+ A 11579568 0.053333 15.054226 0.000000 -15.500000 0.000000 7.500000
+ END
+TURNOUT N "Bachmann EZ Track Curve 17.5R 15° 44855"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.529330 -0.596297 105.000000
+ C 0 0.000000 17.500000 0.000000 -17.500000 0.000000 15.000000
+ A 11579568 0.053333 17.945774 0.000000 -17.500000 0.000000 15.000000
+ A 11579568 0.053333 17.054226 0.000000 -17.500000 0.000000 15.000000
+ END
+TURNOUT N "Bachmann EZ Track Curve 17.5R 7.5° 44825"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.284206 -0.149715 97.500000
+ C 0 0.000000 17.500000 0.000000 -17.500000 0.000000 7.500000
+ A 11579568 0.053333 17.945774 0.000000 -17.500000 0.000000 7.500000
+ A 11579568 0.053333 17.054226 0.000000 -17.500000 0.000000 7.500000
+ END
+TURNOUT N "Bachmann EZ Track Curve 17.5R 3.75° 44835"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.144554 -0.037469 93.750000
+ C 0 0.000000 -17.500000 0.000000 -17.500000 0.000000 3.750000
+ A 11579568 0.053333 17.945774 0.000000 -17.500000 0.000000 3.750000
+ A 11579568 0.053333 17.054226 0.000000 -17.500000 0.000000 3.750000
+ END
+TURNOUT N "Bachmann EZ Track Curve 19R 15° 44804"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.917562 -0.647409 105.000000
+ C 0 0 19.000000 -0.000000 -19.000000 0.000000 15.000000
+ A 11579568 0.053333 18.554226 0.000000 -19.000000 0.000000 15.000000
+ A 11579568 0.053333 19.445774 0.000000 -19.000000 0.000000 15.000000
+ END
+TURNOUT N "Bachmann EZ Track Half-Curve 19R 7.5° 44856"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.479998 -0.162548 97.500000
+ C 0 0 19.000000 -0.000000 -19.000000 0.000000 7.500000
+ A 11579568 0.053333 18.554226 0.000000 -19.000000 0.000000 7.500000
+ A 11579568 0.053333 19.445774 0.000000 -19.000000 0.000000 7.500000
+ END
+TURNOUT N "Bachmann EZ Track Curve 19R 3.75° 44836"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.242658 -0.040680 93.750000
+ C 0 0.000000 19.000000 0.000000 -19.000000 0.000000 3.750000
+ A 11579568 0.053333 19.445774 0.000000 -19.000000 0.000000 3.750000
+ A 11579568 0.053333 18.554226 0.000000 -19.000000 0.000000 3.750000
+ END
+TURNOUT N "Bachmann EZ Track Terminal/Rerailer Curve 11.25R 30° 44802"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.625000 -1.507214 120.000000
+ C 0 0 11.250000 0.000000 -11.250000 0.000000 30.000000
+ A 11579568 0.053333 10.804226 0.000000 -11.250000 0.000000 30.000000
+ A 11579568 0.053333 11.695774 0.000000 -11.250000 0.000000 30.000000
+ END
+TURNOUT N "Bachmann EZ Track Elec.Auto-Reversing Curve 11.25R 30° 44849"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.625000 -1.507214 120.000000
+ C 0 0 11.250000 0.000000 -11.250000 0.000000 30.000000
+ A 11579568 0.053333 10.804226 0.000000 -11.250000 0.000000 30.000000
+ A 11579568 0.053333 11.695774 0.000000 -11.250000 0.000000 30.000000
+ END
+
+SUBCONTENTS Bachmann EZ Track - Bumper Track
+TURNOUT N "Bachmann EZ Track Hayes Bumper 44891"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ L 11579568 0.053333 0.000000 0.4457740 1.250000 0.4457740
+ L 11579568 0.053333 0.000000 -0.4457740 1.250000 -0.4457740
+ L 11579568 0.053333 1.250000 0.4457740 1.250000 -0.4457740
+ L 0 0.053333 1.026667 0.080227 1.200000 0.080227
+ L 0 0.053333 1.200000 0.080227 1.200000 -0.093107
+ L 0 0.053333 1.200000 -0.093107 1.026667 -0.093107
+ L 0 0.053333 1.026667 -0.093107 1.026667 0.080227
+ L 0 0.053333 0.800000 0.080227 0.800000 -0.093107
+ L 0 0.040000 0.826667 -0.066440 1.146667 -0.453107
+ L 0 0.040000 0.826667 0.066893 1.160000 0.440227
+ L 0 0.040000 0.826667 -0.093107 0.573333 -0.453107
+ L 0 0.040000 0.840000 0.080227 0.586667 0.440227
+ L 0 0.053333 0.746667 -0.106440 0.746667 0.106893
+ END
+
+SUBCONTENTS Bachmann EZ Track - Turnouts
+TURNOUT N "Bachmann EZ Track Turnout Left 44861"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 5.000000 0.000000 90.000000
+ E 5.625000 1.507214 60.000000
+ S 0 0 0.000000 0.000000 5.000000 0.000000
+ C 0 0 11.250000 0.000000 11.250000 150.000000 30.000000
+ L 11579568 0.053333 0.000000 -0.445774 5.000000 -0.445774
+ A 11579568 0.053333 10.804226 0.000000 11.250000 150.000000 30.000000
+ END
+TURNOUT N "Bachmann EZ Track Turnout Right 44862"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 5.000000 0.000000 90.000000
+ E 5.625000 -1.507214 120.000000
+ S 0 0 0.000000 0.000000 5.000000 0.000000
+ C 0 0 11.250000 0.000000 -11.250000 0.000000 30.000000
+ L 11579568 0.053333 0.000000 0.445774 5.000000 0.445774
+ A 11579568 0.053333 10.804226 0.000000 -11.250000 0.000000 30.000000
+ END
+TURNOUT N "Bachmann EZ Track #4 Turnout Left 44863"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 6.250000 0.000000 90.000000
+ E 6.140000 0.870000 75.522476
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.250000 0.000000
+ C 0 0.000000 -19.022995 0.354325 19.022995 165.522400 14.477676
+ S 0 0.000000 5.110098 0.604072 6.140000 0.870000
+ L 11579568 0.053333 -0.000001 -0.445774 6.249999 -0.445766 0
+ L 11579568 0.053333 0.000000 0.445774 0.354300 0.445774 0
+ A 11579568 0.053333 18.577221 0.354325 19.022995 165.522400 14.477676
+ L 11579568 0.053333 4.998651 1.035690 6.028554 1.301618 0
+ END
+TURNOUT N "Bachmann EZ Track #4 Turnout Curve 11.25R 14° 44863/64"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.721619 -0.334173 104.000000
+ C 0 0 11.250000 0.000000 -11.250000 0.000000 14.000000
+ A 11579568 0.053333 11.695774 0.000000 -11.250000 0.000000 14.000000
+ A 11579568 0.053333 10.804226 0.000000 -11.250000 0.000000 14.000000
+ END
+TURNOUT N "Bachmann EZ Track #4 Turnout Right 44864"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 6.250000 0.000000 90.000000
+ E 6.140000 -0.870000 104.477524
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.250000 0.000000
+ C 0 0.000000 19.022995 0.354224 -19.022995 0.000076 14.477676
+ S 0 0.000000 5.110098 -0.604072 6.140000 -0.870000
+ L 11579568 0.053333 -0.000001 -0.445774 0.354299 -0.445774 0
+ L 11579568 0.053333 0.000000 0.445774 6.250000 0.445782 0
+ A 11579568 0.053333 18.577221 0.354224 -19.022995 0.000076 14.477676
+ L 11579568 0.053333 4.998649 -1.035689 6.028551 -1.301618 0
+ END
+TURNOUT N "Bachmann EZ Track #6 Turnout Left 44859"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.870000 0.000000 90.000000
+ E 8.790000 1.050000 80.405924
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 8.870000 0.000000
+ C 0 0.000000 -26.500010 0.354335 26.500010 170.405848 9.594228
+ S 0 0.000000 4.771038 0.370659 8.790000 1.050000
+ L 11579568 0.053333 -0.000001 -0.445774 8.869999 -0.445763 0
+ L 11579568 0.053333 0.000000 0.445774 0.354300 0.445774 0
+ L 11579568 0.053333 7.805537 0.445784 8.870000 0.445785 0
+ A 11579568 0.053333 26.054236 0.354335 26.500010 170.405848 9.594228
+ L 11579568 0.053333 7.859557 0.440626 8.864298 0.610461 0
+ L 11579568 0.053333 4.696741 0.810198 8.715704 1.489539 0
+ END
+TURNOUT N "Bachmann EZ Track #6 Turnout Curve 14R 9.46° 44859/60"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.301024 -0.190391 99.460000
+ C 0 0.000000 14.000000 0.000000 -14.000000 0.000000 9.460000
+ A 11579568 0.053333 14.445774 0.000000 -14.000000 0.000000 9.460000
+ A 11579568 0.053333 13.554226 0.000000 -14.000000 0.000000 9.460000
+ END
+TURNOUT N "Bachmann EZ Track #6 Turnout Right 44860"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.870000 0.000000 90.000000
+ E 8.790000 -1.050000 99.594076
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 8.870000 0.000000
+ C 0 0.000000 26.500010 0.354195 -26.500010 0.000076 9.594228
+ S 0 0.000000 4.771038 -0.370659 8.790000 -1.050000
+ L 11579568 0.053333 -0.000001 -0.445774 0.354299 -0.445774 0
+ L 11579568 0.053333 0.000000 0.445774 8.870000 0.445785 0
+ L 11579568 0.053333 7.805536 -0.445764 8.869999 -0.445763 0
+ A 11579568 0.053333 26.054236 0.354195 -26.500010 0.000076 9.594228
+ L 11579568 0.053333 4.696739 -0.810198 8.715701 -1.489539 0
+ L 11579568 0.053333 7.859557 -0.440626 8.864298 -0.610461 0
+ END
+TURNOUT N "Bachmann EZ Track #6 Wye Turnout 44869"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 8.400000 0.550000 80.405924
+ E 8.400000 -0.550000 99.594076
+ S 0 0.000000 0.000000 0.000000 2.200590 0.000000
+ C 0 0.000000 -35.100399 2.200636 35.100399 170.405848 9.594228
+ S 0 0.000000 8.050748 0.490954 8.400000 0.550000
+ C 0 0.000000 35.100399 2.200450 -35.100399 0.000076 9.594228
+ S 0 0.000000 8.050748 -0.490954 8.400000 -0.550000
+ L 11579568 0.053333 -0.000001 -0.445774 2.200588 -0.445771 0
+ L 11579568 0.053333 0.000000 0.445774 2.200590 0.445777 0
+ A 11579568 0.053333 35.546173 2.200636 35.100399 170.405848 0.599639
+ A 11579568 0.053333 34.654625 2.200636 35.100399 170.405848 9.594228
+ L 11579568 0.053333 8.125058 0.051418 8.474310 0.110463 0
+ L 11579568 0.053333 7.976439 0.930491 8.325691 0.989537 0
+ A 11579568 0.053333 35.546173 2.200450 -35.100399 8.994665 0.599639
+ A 11579568 0.053333 34.654625 2.200450 -35.100399 0.000076 9.594228
+ L 11579568 0.053333 7.976437 -0.930491 8.325689 -0.989536 0
+ L 11579568 0.053333 8.125058 -0.051418 8.474310 -0.110463 0
+ END
+TURNOUT N "Bachmann EZ Track Wye Turnout Curve 19R 4.75° 44869D"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.573355 -0.065255 94.750000
+ C 0 0.000000 19.000000 0.000000 -19.000000 0.000000 4.750000
+ A 11579568 0.053333 19.445774 0.000000 -19.000000 0.000000 4.750000
+ A 11579568 0.053333 18.554226 0.000000 -19.000000 0.000000 4.750000
+ END
+TURNOUT N "Bachmann EZ Track #6 Left Crossover Turnout 44875"
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 1 5 6 7 4
+ E 0.000000 0.000000 270.000000
+ E 12.700000 0.000000 90.000000
+ E 0.000000 1.250000 270.000000
+ E 12.700000 1.250000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.644225 0.000000
+ S 0 0.000000 0.644225 0.000000 12.700000 0.000000
+ S 0 0.000000 0.000000 1.250000 12.055775 1.250000
+ S 0 0.000000 12.055775 1.250000 12.700000 1.250000
+ C 0 0.000000 -26.257128 0.644259 26.257128 168.223421 11.776655
+ S 0 0.000000 6.003227 0.552695 6.696773 0.697305
+ C 0 0.000000 26.257128 12.055809 -25.007121 348.223421 11.776655
+ L 11579568 0.053333 -0.000001 -0.445774 12.699999 -0.445758 0
+ L 11579568 0.053333 0.000000 0.445774 0.644225 0.445775 0
+ L 11579568 0.053333 7.802341 0.445783 12.700000 0.445790 0
+ L 11579568 0.053333 -0.000001 0.804226 4.897658 0.804232 0
+ L 11579568 0.053333 0.000000 1.695774 12.700000 1.695775 0
+ L 11579568 0.053333 12.055774 0.804226 12.699999 0.804227 0
+ A 11579568 0.053333 25.811354 0.644259 26.257128 170.431544 9.568532
+ A 11579568 0.053333 25.811354 12.055809 -25.007121 350.431544 9.568532
+ END
+TURNOUT N "Bachmann EZ Track #6 Right Crossover Turnout 44876"
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 3 5 6 7 2
+ E 0.000000 0.000000 270.000000
+ E 12.700000 0.000000 90.000000
+ E 0.000000 1.250000 270.000000
+ E 12.700000 1.250000 90.000000
+ S 0 0.000000 0.000000 0.000000 12.055775 0.000000
+ S 0 0.000000 12.055775 0.000000 12.700000 0.000000
+ S 0 0.000000 0.000000 1.250000 0.644225 1.250000
+ S 0 0.000000 0.644225 1.250000 12.700000 1.250000
+ C 0 0.000000 26.257128 0.644120 -25.007128 0.000076 11.776655
+ S 0 0.000000 6.003227 0.697305 6.696773 0.552695
+ C 0 0.000000 -26.257128 12.055809 26.257121 180.000076 11.776655
+ L 11579568 0.053333 -0.000001 -0.445774 12.699999 -0.445773 0
+ L 11579568 0.053333 0.000000 0.445774 4.897659 0.445780 0
+ L 11579568 0.053333 12.055775 0.445774 12.700000 0.445775 0
+ L 11579568 0.053333 -0.000001 0.804226 0.644223 0.804227 0
+ L 11579568 0.053333 0.000000 1.695774 12.700000 1.695790 0
+ L 11579568 0.053333 7.802340 0.804235 12.699999 0.804242 0
+ A 11579568 0.053333 25.811354 0.644120 -25.007128 0.000076 9.568532
+ A 11579568 0.053333 25.811354 12.055809 26.257121 180.000076 9.568532
+ END
+
+
+SUBCONTENTS Bachmann EZ Track - Crossings
+TURNOUT N "Bachmann EZ Track Crossing 90° w/1.25 44841"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 3.750000 0.000000 90.000000
+ E 1.875000 1.875000 0.000000
+ E 1.875000 -1.875000 180.000000
+ S 0 0 0.000000 0.000000 3.750000 0.000000
+ S 0 0 1.875000 1.875000 1.875000 -1.875000
+ L 11579568 0.053333 0.000000 0.445774 1.429226 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 1.429226 -0.445774
+ L 11579568 0.053333 2.320774 0.445774 3.750000 0.445774
+ L 11579568 0.053333 2.320774 -0.445774 3.750000 -0.445774
+ L 11579568 0.053333 1.429226 1.875000 1.429226 0.445774
+ L 11579568 0.053333 2.320774 1.875000 2.320774 0.445774
+ L 11579568 0.053333 1.429226 -1.875000 1.429226 -0.445774
+ L 11579568 0.053333 2.320774 -1.875000 2.320774 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Crossing 90° w/o 1.25 44841"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 1.250000 0.000000 90.000000
+ E 0.625000 0.625000 0.000000
+ E 0.625000 -0.625000 180.000000
+ S 0 0 0.000000 0.000000 1.250000 0.000000
+ S 0 0 0.625000 0.625000 0.625000 -0.625000
+ L 11579568 0.053333 0.000000 0.445774 0.179226 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 0.179226 -0.445774
+ L 11579568 0.053333 1.070774 0.445774 1.250000 0.445774
+ L 11579568 0.053333 1.070774 -0.445774 1.250000 -0.445774
+ L 11579568 0.053333 0.179226 0.625000 0.179226 0.445774
+ L 11579568 0.053333 1.070774 0.625000 1.070774 0.445774
+ L 11579568 0.053333 0.179226 -0.625000 0.179226 -0.445774
+ L 11579568 0.053333 1.070774 -0.625000 1.070774 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Straight 1 1/4 44841"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.250000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.250000 0.000000
+ L 11579568 0.053333 0.000000 0.445774 1.250000 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 1.250000 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Crossing 60° 44842"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 2.500000 0.000000 90.000000
+ E 1.875000 1.082532 30.000000
+ E 0.625000 -1.082532 210.000000
+ S 0 0 0.000000 0.000000 2.500000 0.000000
+ S 0 0 0.625000 -1.082532 1.875000 1.082532
+ L 11579568 0.053333 0.000000 0.445774 0.992632 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 0.477897 -0.445774
+ L 11579568 0.053333 2.022103 0.445774 2.500000 0.445774
+ L 11579568 0.053333 1.507368 -0.445774 2.500000 -0.445774
+ L 11579568 0.053333 0.992632 0.445774 1.488948 1.305419
+ L 11579568 0.053333 2.261052 0.859645 2.022103 0.445774
+ L 11579568 0.053333 0.238948 -0.859645 0.477897 -0.445774
+ L 11579568 0.053333 1.011052 -1.305419 1.507368 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Crossing 45° 44843"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 2.500000 0.000000 90.000000
+ E 2.133883 0.883883 45.000000
+ E 0.366117 -0.883883 225.000000
+ S 0 0 0.000000 0.000000 2.500000 0.000000
+ S 0 0 0.366117 -0.883883 2.133883 0.883883
+ L 11579568 0.053333 0.000000 0.445774 1.065354 0.445774
+ L 11579568 0.053333 0.000000 -0.445774 0.173806 -0.445774
+ L 11579568 0.053333 2.326194 0.445774 2.500000 0.445774
+ L 11579568 0.053333 1.434646 -0.445774 2.500000 -0.445774
+ L 11579568 0.053333 1.065354 0.445774 1.818674 1.199093
+ L 11579568 0.053333 2.449093 0.568674 2.326194 0.445774
+ L 11579568 0.053333 0.050907 -0.568674 0.173806 -0.445774
+ L 11579568 0.053333 0.681326 -1.199093 1.434646 -0.445774
+ END
+TURNOUT N "Bachmann EZ Track Crossing 30° 44840"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 3.500000 0.000000 90.000000
+ E 3.265544 0.875000 60.000000
+ E 0.234456 -0.875000 240.000000
+ S 0 0 0.000000 0.000000 3.500000 0.000000
+ S 0 0 0.234456 -0.875000 3.265544 0.875000
+ L 11579568 0.053333 0.000000 0.445774 1.630555 0.445774
+ L 11579568 0.053333 1.869445 -0.445774 3.500000 -0.445774
+ L 11579568 0.053333 1.630555 0.445774 3.042657 1.261052
+ L 11579568 0.053333 0.457343 -1.261052 1.869445 -0.445774
+ END
+
+
+SUBCONTENTS Bachmann EZ Track - Turntable
+TURNOUT N "Bachmann Turntable 25.71d 12Pos 46799" 512
+ P "1" 1 2 3
+ P "2" 4 5 6
+ P "3" 7 8 9
+ P "4" 10 11 12
+ P "5" 13 14 15
+ P "6" 16 17
+ P "7" 18 19
+ E 0.000000 3.750000 0.000000
+ E 1.627064 3.378633 25.714286
+ E 2.931868 2.338087 51.428571
+ E 3.655980 0.834454 77.142857
+ E 3.655980 -0.834454 102.857143
+ E 2.931868 -2.338087 128.571429
+ E 1.627064 -3.378633 154.285714
+ E 0.000000 -3.750000 180.000000
+ E -1.627064 -3.378633 205.714286
+ E -2.931868 -2.338087 231.428571
+ E -3.655980 -0.834454 257.142857
+ E -3.655980 0.834454 282.857143
+ S 0 0 0.000000 3.750000 0.000000 2.750000
+ S 16777215 0 0.000000 2.750000 0.000000 -2.750000
+ S 0 0 0.000000 -2.750000 0.000000 -3.750000
+ S 0 0 1.627064 3.378633 1.193180 2.477664
+ S 16777215 0 1.193180 2.477664 -1.193180 -2.477664
+ S 0 0 -1.193180 -2.477664 -1.627064 -3.378633
+ S 0 0 2.931868 2.338087 2.150037 1.714597
+ S 16777215 0 2.150037 1.714597 -2.150037 -1.714597
+ S 0 0 -2.150037 -1.714597 -2.931868 -2.338087
+ S 0 0 3.655980 0.834454 2.681052 0.611933
+ S 16777215 0 2.681052 0.611933 -2.681052 -0.611933
+ S 0 0 -2.681052 -0.611933 -3.655980 -0.834454
+ S 0 0 3.655980 -0.834454 2.681052 -0.611933
+ S 16777215 0 2.681052 -0.611933 -2.681052 0.611933
+ S 0 0 -2.681052 0.611933 -3.655980 0.834454
+ S 0 0 2.931868 -2.338087 2.150037 -1.714597
+ S 16777215 0 2.150037 -1.714597 -2.150037 1.714597
+ S 0 0 1.627064 -3.378633 1.193180 -2.477664
+ S 16777215 0 1.193180 -2.477664 -1.193180 2.477664
+ A3 8424071 0.031250 2.750000 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 2.250000 0.000000 0.000000 0 0.000000 360.000000
+ L3 8424071 0.031250 -1.231834 3.750000 0 0.855913 3.750000 0
+ L3 8424071 0.031250 0.855913 3.750000 0 2.398215 3.007267 0
+ L3 8424071 0.031250 2.398215 3.007267 0 3.465521 1.668907 0
+ L3 8424071 0.031250 3.465521 1.668907 0 3.846438 0.000000 0
+ L3 8424071 0.031250 3.846438 0.000000 0 3.465521 -1.668907 0
+ L3 8424071 0.031250 3.465521 -1.668907 0 2.398215 -3.007267 0
+ L3 8424071 0.031250 2.398215 -3.007267 0 0.855913 -3.750000 0
+ L3 8424071 0.031250 0.855913 -3.750000 0 -0.855913 -3.750000 0
+ L3 8424071 0.031250 -0.855913 -3.750000 0 -2.398215 -3.007267 0
+ L3 8424071 0.031250 -2.398215 -3.007267 0 -3.465521 -1.668907 0
+ L3 8424071 0.031250 -3.465521 -1.668907 0 -3.846438 0.000000 0
+ L3 8424071 0.031250 -3.846438 0.000000 0 -3.381871 2.035403 0
+ L3 8424071 0.031250 -3.381871 2.035403 0 -4.192467 3.051859 0
+ L3 8424071 0.031250 -4.192467 3.051859 0 -2.042431 4.766456 0
+ L3 8424071 0.031250 -2.042431 4.766456 0 -1.231834 3.750000 0
+ F4 13882323 0.000000 4 0
+ -0.893180 3.124857 0
+ -2.847759 1.566132 0
+ -4.016802 3.032066 0
+ -2.062223 4.590791 0
+ L3 8424071 0.031250 -0.893180 3.124857 0 -2.847759 1.566132 0
+ L3 8424071 0.031250 -2.847759 1.566132 0 -4.016802 3.032066 0
+ L3 8424071 0.031250 -4.016802 3.032066 0 -2.062223 4.590791 0
+ L3 8424071 0.031250 -2.062223 4.590791 0 -0.893180 3.124857 0
+END$SEGS
+
+
diff --git a/app/lib/params/N-Design Preservation Models Modular Custom Structures.xtp b/app/lib/params/N-Design Preservation Models Modular Custom Structures.xtp
new file mode 100644
index 0000000..4593112
--- /dev/null
+++ b/app/lib/params/N-Design Preservation Models Modular Custom Structures.xtp
@@ -0,0 +1,372 @@
+CONTENTS Design Preservation Models Modular Custom Structures
+# Awning color 16755285
+# Flat Roof Color 8421504
+# Wall Color 8421376
+STRUCTURE N "Design Preservation Models Industrial Building A CS001"
+# Layer: 0
+ F4 8421504 0.000000 6 0
+ 3.656250 7.093750 0
+ 0.000000 7.093750 0
+ 0.000000 0.000000 0
+ 5.375000 0.000000 0
+ 5.375000 5.375000 0
+ 3.656250 5.375000 0
+# Layer: 1
+ Y4 8421376 0.062500 6 0
+ 3.625000 7.062500 0
+ 0.031250 7.062500 0
+ 0.031250 0.031250 0
+ 5.343750 0.031250 0
+ 5.343750 5.343750 0
+ 3.625000 5.343750 0
+ Y4 0 0.020000 6 0
+ 3.656250 7.093750 0
+ 0.000000 7.093750 0
+ 0.000000 0.000000 0
+ 5.375000 0.000000 0
+ 5.375000 5.375000 0
+ 3.656250 5.375000 0
+ Y4 0 0.020000 6 0
+ 3.593750 7.031250 0
+ 0.062500 7.031250 0
+ 0.062500 0.062500 0
+ 5.312500 0.062500 0
+ 5.312500 5.312500 0
+ 3.593750 5.312500 0
+# Layer: 2
+ Y4 8421376 0.062500 4 0
+ 0.031250 7.062500 0
+ 0.031250 5.187500 0
+ 3.625000 5.187500 0
+ 3.625000 7.062500 0
+ Y4 0 0.020000 4 0
+ 0.000000 7.093750 0
+ 0.000000 5.156250 0
+ 3.656250 5.156250 0
+ 3.656250 7.093750 0
+ Y4 0 0.020000 4 0
+ 0.062500 7.031250 0
+ 0.062500 5.218750 0
+ 3.593750 5.218750 0
+ 3.593750 7.031250 0
+ END$SEGS
+STRUCTURE N "Design Preservation Models Industrial Building B CS002"
+# Layer: 0
+ F4 8421504 0.000000 4 0
+ 0.000000 0.000000 0
+ 8.812500 0.000000 0
+ 8.812500 3.656250 0
+ 0.000000 3.656250 0
+# Layer: 1
+ Y4 8421376 0.062500 4 0
+ 0.031250 0.031250 0
+ 8.781250 0.031250 0
+ 8.781250 3.625000 0
+ 0.031250 3.625000 0
+ Y4 0 0.020000 4 0
+ 0.000000 0.000000 0
+ 8.812500 0.000000 0
+ 8.812500 3.656250 0
+ 0.000000 3.656250 0
+ Y4 0 0.020000 4 0
+ 0.062500 0.062500 0
+ 8.750000 0.062500 0
+ 8.750000 3.593750 0
+ 0.062500 3.593750 0
+# Layer: 2
+ Y4 8421376 0.062500 4 0
+ 8.781250 3.625000 0
+ 3.468750 3.625000 0
+ 3.468750 1.750000 0
+ 8.781250 1.750000 0
+ Y4 0 0.020000 4 0
+ 8.812500 3.656250 0
+ 3.437500 3.656250 0
+ 3.437500 1.718750 0
+ 8.812500 1.718750 0
+ Y4 0 0.020000 4 0
+ 8.750000 3.593750 0
+ 3.500000 3.593750 0
+ 3.500000 1.781250 0
+ 8.750000 1.781250 0
+ END$SEGS
+STRUCTURE N "Design Preservation Models Industrial Building C CS003"
+# Layer: 0
+ F4 8421504 0.000000 4 0
+ 0.000000 0.000000 0
+ 7.093750 0.000000 0
+ 7.093750 5.375000 0
+ 0.000000 5.375000 0
+# Layer: 1
+ Y4 8421376 0.062500 4 0
+ 0.031250 0.031250 0
+ 7.062500 0.031250 0
+ 7.062500 5.343750 0
+ 0.031250 5.343750 0
+ Y4 0 0.020000 4 0
+ 0.000000 0.000000 0
+ 7.093750 0.000000 0
+ 7.093750 5.375000 0
+ 0.000000 5.375000 0
+ Y4 0 0.020000 4 0
+ 0.062500 0.062500 0
+ 7.031250 0.062500 0
+ 7.031250 5.312500 0
+ 0.062500 5.312500 0
+# Layer: 2
+ Y4 8421376 0.062500 4 0
+ 5.343750 5.343750 0
+ 0.031250 5.343750 0
+ 0.031250 3.468750 0
+ 5.343750 3.468750 0
+ Y4 0 0.020000 4 0
+ 5.375000 5.375000 0
+ 0.000000 5.375000 0
+ 0.000000 3.437500 0
+ 5.375000 3.437500 0
+ Y4 0 0.020000 4 0
+ 5.312500 5.312500 0
+ 0.062500 5.312500 0
+ 0.062500 3.500000 0
+ 5.312500 3.500000 0
+ END$SEGS
+STRUCTURE N "Design Preservation Models Tera Surplus Window Warehouse CS004"
+#Use DPM N Scale Modular Wall System, based on DPM HO Kit
+# Layer: 0
+# Layer: 1
+ F4 8421504 0.000000 4 0
+ 0.000000 7.093750 0
+ 1.937500 7.093750 0
+ 1.937500 0.000000 0
+ 0.000000 0.000000 0
+ Y4 8421376 0.062500 4 0
+ 0.031250 7.062500 0
+ 1.906250 7.062500 0
+ 1.906250 0.031250 0
+ 0.031250 0.031250 0
+ Y4 0 0.020000 4 0
+ 0.000000 7.093750 0
+ 1.937500 7.093750 0
+ 1.937500 0.000000 0
+ 0.000000 0.000000 0
+ Y4 0 0.020000 4 0
+ 0.062500 7.031250 0
+ 1.875000 7.031250 0
+ 1.875000 0.062500 0
+ 0.062500 0.062500 0
+# Layer: 2
+ F4 8421504 0.020000 4 0
+ 1.718750 1.718750 0
+ 5.375000 1.718750 0
+ 5.375000 7.093750 0
+ 1.718750 7.093750 0
+ Y4 8421376 0.062500 4 0
+ 1.750000 1.750000 0
+ 5.343750 1.750000 0
+ 5.343750 7.062500 0
+ 1.750000 7.062500 0
+ Y4 0 0.020000 4 0
+ 1.718750 1.718750 0
+ 5.375000 1.718750 0
+ 5.375000 7.093750 0
+ 1.718750 7.093750 0
+ Y4 0 0.020000 4 0
+ 1.781250 1.781250 0
+ 5.312500 1.781250 0
+ 5.312500 7.031250 0
+ 1.781250 7.031250 0
+# Layer: 3
+ F4 8421504 0.000000 4 0
+ 0.000000 1.718750 0
+ 5.375000 1.718750 0
+ 5.375000 3.656250 0
+ 0.000000 3.656250 0
+ Y4 8421376 0.062500 4 0
+ 0.031250 1.750000 0
+ 5.343750 1.750000 0
+ 5.343750 3.625000 0
+ 0.031250 3.625000 0
+ Y4 0 0.020000 4 0
+ 0.000000 1.718750 0
+ 5.375000 1.718750 0
+ 5.375000 3.656250 0
+ 0.000000 3.656250 0
+ Y4 0 0.020000 4 0
+ 0.062500 1.781250 0
+ 5.312500 1.781250 0
+ 5.312500 3.593750 0
+ 0.062500 3.593750 0
+# Layer: 4
+ Y4 8421376 0.062500 4 0
+ 0.031250 3.625000 0
+ 1.906250 3.625000 0
+ 1.906250 1.750000 0
+ 0.031250 1.750000 0
+ Y4 0 0.020000 4 0
+ 0.062500 3.593750 0
+ 1.875000 3.593750 0
+ 1.875000 1.781250 0
+ 0.062500 1.781250 0
+ Y4 0 0.020000 4 0
+ 0.000000 3.656250 0
+ 1.937500 3.656250 0
+ 1.937500 1.718750 0
+ 0.000000 1.718750 0
+# Layer: 5
+ F4 16755285 0.000000 4 0
+ 1.937500 1.718750 0
+ 5.375000 1.718750 0
+ 5.375000 0.968750 0
+ 1.937500 0.968750 0
+ Y4 0 0.020000 4 0
+ 1.937500 1.718750 0
+ 5.375000 1.718750 0
+ 5.375000 0.968750 0
+ 1.937500 0.968750 0
+ L3 0 0.000000 4.625000 1.468750 0 4.625000 1.718750 0
+ L3 0 0.000000 4.750000 1.718750 0 4.750000 1.343750 0
+ L3 0 0.000000 4.875000 1.218750 0 4.875000 1.718750 0
+ L3 0 0.000000 5.000000 1.718750 0 5.000000 1.093750 0
+ L3 0 0.000000 5.125000 1.218750 0 5.125000 1.718750 0
+ L3 0 0.000000 5.250000 1.718750 0 5.250000 1.093750 0
+ L3 0 0.000000 2.937500 1.718750 0 2.937500 1.468750 0
+ L3 0 0.000000 2.812500 1.343750 0 2.812500 1.718750 0
+ L3 0 0.000000 2.687500 1.718750 0 2.687500 1.218750 0
+ L3 0 0.000000 2.562500 1.093750 0 2.562500 1.718750 0
+ L3 0 0.000000 2.437500 1.718750 0 2.437500 1.218750 0
+ L3 0 0.000000 2.312500 1.093750 0 2.312500 1.718750 0
+ L3 0 0.000000 2.187500 1.718750 0 2.187500 1.218750 0
+ L3 0 0.000000 2.062500 1.093750 0 2.062500 1.718750 0
+END$SEGS
+STRUCTURE N "Design Preservation Models FEDUPS Freight Co CS005"
+#Use DPM N Scale Modular Wall System, based on DPM HO Kit
+# Layer: 0
+ F4 8421504 0.000000 4 0
+ 0.000000 0.000000 0
+ 12.750000 0.000000 0
+ 12.750000 3.656250 0
+ 0.000000 3.656250 0
+ S 0 0.000000 2.687500 3.656250 2.687500 0.000000
+ S 0 0.000000 0.968750 3.656250 0.968750 0.000000
+# Layer: 1
+ Y4 8421376 0.062500 4 0
+ 0.031250 0.031250 0
+ 12.718750 0.031250 0
+ 12.718750 3.625000 0
+ 0.031250 3.625000 0
+ Y4 0 0.031250 4 0
+ 0.000000 0.000000 0
+ 12.750000 0.000000 0
+ 12.750000 3.656250 0
+ 0.000000 3.656250 0
+ Y4 0 0.031250 4 0
+ 0.062500 0.062500 0
+ 12.687500 0.062500 0
+ 12.687500 3.593750 0
+ 0.062500 3.593750 0
+# Layer: 2
+ F4 8421504 0.000000 4 0
+ 3.437500 -1.718750 0
+ 7.093750 -1.718750 0
+ 7.093750 3.656250 0
+ 3.437500 3.656250 0
+ Y4 8421376 0.062500 4 0
+ 3.468750 -1.687500 0
+ 7.062500 -1.687500 0
+ 7.062500 3.625000 0
+ 3.468750 3.625000 0
+ Y4 0 0.031250 4 0
+ 3.437500 -1.718750 0
+ 7.093750 -1.718750 0
+ 7.093750 3.656250 0
+ 3.437500 3.656250 0
+ Y4 0 0.031250 4 0
+ 3.500000 -1.656250 0
+ 7.031250 -1.656250 0
+ 7.031250 3.593750 0
+ 3.500000 3.593750 0
+# Layer: 3
+ F4 16755285 0.000000 4 0
+ 7.093750 0.000000 0
+ 10.531250 0.000000 0
+ 10.531250 -0.750000 0
+ 7.093750 -0.750000 0
+ Y4 0 0.031250 4 0
+ 7.093750 0.000000 0
+ 10.531250 0.000000 0
+ 10.531250 -0.750000 0
+ 7.093750 -0.750000 0
+ L3 0 0.000000 7.843750 -0.250000 0 7.843750 0.000000 0
+ L3 0 0.000000 7.718750 0.000000 0 7.718750 -0.375000 0
+ L3 0 0.000000 7.593750 -0.500000 0 7.593750 0.000000 0
+ L3 0 0.000000 7.468750 0.000000 0 7.468750 -0.625000 0
+ L3 0 0.000000 7.343750 -0.500000 0 7.343750 0.000000 0
+ L3 0 0.000000 7.218750 0.000000 0 7.218750 -0.625000 0
+ L3 0 0.000000 9.781250 -0.250000 0 9.781250 0.000000 0
+ L3 0 0.000000 9.906250 0.000000 0 9.906250 -0.375000 0
+ L3 0 0.000000 10.031250 -0.500000 0 10.031250 0.000000 0
+ L3 0 0.000000 10.156250 0.000000 0 10.156250 -0.625000 0
+ L3 0 0.000000 10.281250 -0.500000 0 10.281250 0.000000 0
+ L3 0 0.000000 10.406250 0.000000 0 10.406250 -0.625000 0
+ END$SEGS
+STRUCTURE N "Design Preservation Models Powerhouse CS006"
+#Use DPM N Scale Modular Wall System, based on DPM HO Kit
+# Layer: 0
+ F4 8421504 0.000000 4 0
+ 0.000000 0.000000 0
+ 7.093750 0.000000 0
+ 7.093750 3.656250 0
+ 0.000000 3.656250 0
+ S 0 0.000000 0.968750 0.000000 0.968750 3.656250
+# Layer: 1
+ Y4 8421376 0.062500 4 0
+ 0.031250 0.031250 0
+ 7.062500 0.031250 0
+ 7.062500 3.625000 0
+ 0.031250 3.625000 0
+ Y4 0 0.031250 4 0
+ 0.000000 0.000000 0
+ 7.093750 0.000000 0
+ 7.093750 3.656250 0
+ 0.000000 3.656250 0
+ Y4 0 0.031250 4 0
+ 0.062500 0.062500 0
+ 7.031250 0.062500 0
+ 7.031250 3.593750 0
+ 0.062500 3.593750 0
+# Layer: 2
+ Y4 8421376 0.062500 4 0
+ 7.062500 0.031250 0
+ 5.343750 0.031250 0
+ 5.343750 3.625000 0
+ 7.062500 3.625000 0
+ Y4 0 0.031250 4 0
+ 7.093750 0.000000 0
+ 5.312500 0.000000 0
+ 5.312500 3.656250 0
+ 7.093750 3.656250 0
+ Y4 0 0.031250 4 0
+ 7.031250 0.062500 0
+ 5.375000 0.062500 0
+ 5.375000 3.593750 0
+ 7.031250 3.593750 0
+# Layer: 3
+ Y4 8421376 0.062500 4 0
+ 0.031250 3.625000 0
+ 5.343750 3.625000 0
+ 5.343750 1.749650 0
+ 0.031250 1.749650 0
+ Y4 0 0.031250 4 0
+ 0.000000 3.656250 0
+ 5.375000 3.656250 0
+ 5.375000 1.718400 0
+ 0.000000 1.718400 0
+ Y4 0 0.031250 4 0
+ 0.062500 3.593750 0
+ 5.312500 3.593750 0
+ 5.312500 1.780900 0
+ 0.062500 1.780900 0
+# Layer: 4
+ G3 0 0 0.125000 6.203125 3.156075 0
+ G3 0 0 0.125000 6.203125 2.156075 0
+ END$SEGS
diff --git a/app/lib/params/N-ITLA Modular Building System.xtp b/app/lib/params/N-ITLA Modular Building System.xtp
new file mode 100644
index 0000000..c28ce14
--- /dev/null
+++ b/app/lib/params/N-ITLA Modular Building System.xtp
@@ -0,0 +1,62 @@
+CONTENTS ITLA N-Scale Models - Modular Wall System
+STRUCTURE N "ITLA Scale Models 3051 4 Brick Panles Modular Wall N3051"
+ Z3 0 0.200000 0.150000 0.000000 0 36.000000 "3051"
+ L3 0 0.250000 0.000000 0.000000 0 1.500000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 1.500000 -0.200000 0 1.500000 0.200000 0
+ END$SEGS
+STRUCTURE N "ITLA Scale Models 3052 2 Brick Panels/2 Window Panels Modular Wall N3052"
+ Z3 0 0.200000 0.150000 0.000000 0 36.000000 "3052"
+ L3 0 0.250000 0.000000 0.000000 0 1.500000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 1.500000 -0.200000 0 1.500000 0.200000 0
+ END$SEGS
+STRUCTURE N "ITLA Scale Models 3053 3 Window Panel w/ Rollup Door Modular Wall N3053"
+ Z3 0 0.200000 0.150000 0.000000 0 36.000000 "3053"
+ L3 0 0.250000 0.000000 0.000000 0 1.500000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 1.500000 -0.200000 0 1.500000 0.200000 0
+ END$SEGS
+STRUCTURE N "ITLA Scale Models 3053+4062 Entryway Modular Wall N3053/3062"
+ Z3 0 0.200000 0.150000 0.000000 0 36.000000 "3053"
+ Z3 0 0.200000 0.650000 0.000000 0 36.000000 "4062"
+ L3 0 0.250000 0.000000 0.000000 0 1.500000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 1.500000 -0.200000 0 1.500000 0.200000 0
+ END$SEGS
+STRUCTURE N "ITLA Scale Models 3054 Large Window Modular Wall N3054"
+ Z3 0 0.200000 0.150000 0.000000 0 36.000000 "3054"
+ L3 0 0.250000 0.000000 0.000000 0 1.500000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 1.500000 -0.200000 0 1.500000 0.200000 0
+ END$SEGS
+STRUCTURE N "ITLA Scale Models 3056 Fire Exit Door Modular Wall N3056"
+ Z3 0 1.000000 0.150000 0.000000 0 36.000000 "3056"
+ L3 0 0.250000 0.000000 0.000000 0 3.000000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 3.000000 -0.200000 0 3.000000 0.200000 0
+#Need to add fire escape
+ END$SEGS
+STRUCTURE N "ITLA Scale Models 3057 3"" Filler Panel Modular Wall N3057A"
+ Z3 0 0.200000 0.150000 0.000000 0 36.000000 "3057A"
+ L3 0 0.250000 0.000000 0.000000 0 1.500000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 1.500000 -0.200000 0 1.500000 0.200000 0
+ END$SEGS
+STRUCTURE N "ITLA Scale Models 3057 1.5"" Filler Panel Modular Wall N3057B"
+ Z3 0 0.000000 0.150000 0.000000 0 36.000000 "3057B"
+ L3 0 0.250000 0.000000 0.000000 0 0.750000 0.000000 0
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.100000 0
+ L3 0 0.020000 0.750000 -0.200000 0 0.750000 0.100000 0
+ END$SEGS
+STRUCTURE N "ITLA Scale Models 3060 Rail/Truck Loading Dock Modular Wall N3060"
+ Z3 0 1.600000 0.150000 0.000000 0 36.000000 "3060"
+ L3 0 0.020000 0.000000 -0.200000 0 0.000000 0.200000 0
+ L3 0 0.020000 1.500000 -0.200000 0 1.500000 0.200000 0
+ L3 0 0.020000 3.000000 -0.200000 0 3.000000 0.200000 0
+ L3 0 0.020000 4.500000 -0.200000 0 4.500000 0.200000 0
+ L3 0 0.100000 0.000000 0.000000 0 4.500000 0.000000 0
+ L3 0 0.250000 0.000000 0.000000 0 0.000000 -1.500000 0
+ L3 0 0.250000 0.000000 -1.500000 0 4.500000 -1.500000 0
+ L3 0 0.250000 4.500000 -1.500000 0 4.500000 0.000000 0
+ END$SEGS
diff --git a/app/lib/params/N-Kato Track and Structures.xtp b/app/lib/params/N-Kato Track and Structures.xtp
index 934436a..1d64fa8 100644
--- a/app/lib/params/N-Kato Track and Structures.xtp
+++ b/app/lib/params/N-Kato Track and Structures.xtp
@@ -1,1741 +1,1777 @@
-CONTENTS Kato Unitrack N Scale
-#
-#
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Kato Unitrack N-Scale Straight Track
-TURNOUT N "Kato Unitrack Straight 9.75 248mm 20-000"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.763779 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.763779 0.000000
- L 11579568 0.053333 0.000000 0.492126 9.763779 0.492126
- L 11579568 0.053333 0.000000 -0.492126 9.763779 -0.492126
- END
-TURNOUT N "Kato Unitrack Straight 7 5/16 186mm 20-010"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.322834 0.000000 90.000000
- S 0 0 0.000000 0.000000 7.322834 0.000000
- L 11579568 0.053333 0.000000 0.492126 7.322834 0.492126
- L 11579568 0.053333 0.000000 -0.492126 7.322834 -0.492126
- END
-TURNOUT N "Kato Unitrack Straight 4 7/8 124mm 20-020"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.881889 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.881889 0.000000
- L 11579568 0.053333 0.000000 0.492126 4.881889 0.492126
- L 11579568 0.053333 0.000000 -0.492126 4.881889 -0.492126
- END
-TURNOUT N "Kato Unitrack Straight 2 1/2 64mm 20-030"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.519685 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.519685 0.000000
- L 11579568 0.053333 0.000000 0.492126 2.519685 0.492126
- L 11579568 0.053333 0.000000 -0.492126 2.519685 -0.492126
- END
-TURNOUT N "Kato Unitrack Straight 2 7/16 62mm 20-040"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.440944 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.440944 0.000000
- L 11579568 0.053333 0.000000 0.492126 2.440944 0.492126
- L 11579568 0.053333 0.000000 -0.492126 2.440944 -0.492126
- END
-TURNOUT N "Kato Unitrack Straight 1 3/4 45-5mm 20-091A"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.791339 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.791339 0.000000
- L 11579568 0.053333 0.000000 0.492126 1.791339 0.492126
- L 11579568 0.053333 0.000000 -0.492126 1.791339 -0.492126
- END
-TURNOUT N "Kato Unitrack Straight 1 1/8 29mm 20-091B"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.141732 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.141732 0.000000
- L 11579568 0.053333 0.000000 0.492126 1.141732 0.492126
- L 11579568 0.053333 0.000000 -0.492126 1.141732 -0.492126
- END
-TURNOUT N "Kato Unitrack Straight 1 19/64 33mm 20-092A"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.299213 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.299213 0.000000
- L 11579568 0.053333 0.000000 0.492126 1.299213 0.492126
- L 11579568 0.053333 0.000000 -0.492126 1.299213 -0.492126
- END
-TURNOUT N "Kato Unitrack Straight 1 1/2 38mm 20-092B"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.496063 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.496063 0.000000
- L 11579568 0.053333 0.000000 0.492126 1.496063 0.492126
- L 11579568 0.053333 0.000000 -0.492126 1.496063 -0.492126
- END
-TURNOUT N "Kato Unitrack Road Crossing 124mm 20-021"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.881889 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 4.881889 0.000000
- L 11579568 0.053333 0.000000 0.4921260 4.881889 0.4921260
- L 11579568 0.053333 0.000000 -0.4921260 4.881889 -0.4921260
- L 0 0.053333 0.500000 0.548560 4.375000 0.548560
- L 0 0.053333 4.375000 0.548560 4.375000 -0.576440
- L 0 0.053333 4.375000 -0.576440 0.500000 -0.576440
- L 0 0.053333 0.500000 -0.576440 0.500000 0.548560
- L 0 0.053333 1.466667 0.133560 1.000000 -0.013107
- L 0 0.053333 1.440000 -0.133107 1.000000 -0.026440
- L 0 0.053333 1.440000 0.120227 3.320000 0.120227
- L 0 0.053333 1.453333 -0.133107 3.306667 -0.119773
- L 0 0.053333 3.306667 0.120227 3.626667 0.000227
- L 0 0.053333 3.293333 -0.119773 3.600000 0.000227
- END
-TURNOUT N "Kato Unitrack Mag Uncoupler 64mm 20-032"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.519685 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 2.519685 0.000000
- L 11579568 0.053333 0.000000 0.4921260 2.519685 0.4921260
- L 11579568 0.053333 0.000000 -0.4921260 2.519685 -0.4921260
- L 0 0.053333 0.253333 0.133560 2.280000 0.133560
- L 0 0.053333 2.280000 0.133560 2.280000 -0.146440
- L 0 0.053333 2.280000 -0.146440 0.253333 -0.146440
- L 0 0.053333 0.253333 -0.146440 0.253333 0.133560
- END
-TURNOUT N "Kato Unitrack Feeder Track 62mm 20-041"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.440944 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.440944 0.000000
- L 11579568 0.053333 0.000000 0.492126 2.440944 0.492126
- L 11579568 0.053333 0.000000 -0.492126 2.440944 -0.492126
- L 0 0.026667 2.000000 -0.498874 2.000000 -0.698874
- L 0 0.026667 2.000000 -0.698874 2.100000 -0.798874
- L 0 0.026667 2.000000 -0.698874 1.900000 -0.798874
- L 16711680 0.026667 1.800000 -0.498874 1.800000 -0.698874
- L 16711680 0.026667 1.800000 -0.698874 1.900000 -0.798874
- L 16711680 0.026667 1.800000 -0.698874 1.700000 -0.798874
- END
-TURNOUT N "Kato Unitrack Snap Tk. Conv. Tk. 62mm 20-045"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.440944 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.440944 0.000000
- L 11579568 0.053333 0.000000 0.492126 2.440944 0.492126
- L 11579568 0.053333 0.000000 -0.492126 2.440944 -0.492126
- END
-TURNOUT N "Kato Unitrack 78-108mm Adjustable 20-050"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.070866 0.000000 90.000000
- X adjustable 3.070866 4.251968
- S 0 0 0.000000 0.000000 3.070866 0.000000
- L 11579568 0.053333 0.000000 0.492126 3.070866 0.492126
- L 11579568 0.053333 0.000000 -0.492126 3.070866 -0.492126
- END
-TURNOUT N "Kato Unitrack 3-Color Signal 4 7/8 124mm 20-605-1"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.881889 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.881889 0.000000
- L 11579568 0.053333 0.000000 0.492126 4.881889 0.492126
- L 11579568 0.053333 0.000000 -0.492126 4.881889 -0.492126
- F 11579568 0.000000 4
- 1.948819 0.492126 0
- 1.948819 0.992126 0
- 2.948819 0.992126 0
- 2.948819 0.492126 0
- G 0 0.053333 0.100000 2.448819 0.742126 0
- END
-TURNOUT N "Kato Unitrack Ash Pit Track 7 5/16 186mm 20-015"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.322834 0.000000 90.000000
- S 0 0 0.000000 0.000000 7.322834 0.000000
- L 11579568 0.053333 0.000000 0.492126 7.322834 0.492126
- L 11579568 0.053333 0.000000 -0.492126 7.322834 -0.492126
- F 11579568 0.000000 4
- 0.500000 0.150000 0
- 6.822834 0.150000 0
- 6.822834 -0.150000 0
- 0.500000 -0.150000 0
- END
-TURNOUT N "Kato Unitrack Open Pit Track 7 5/16 186mm 20-016"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.322834 0.000000 90.000000
- S 0 0 0.000000 0.000000 7.322834 0.000000
- L 11579568 0.053333 0.000000 0.492126 7.322834 0.492126
- L 11579568 0.053333 0.000000 -0.492126 7.322834 -0.492126
- F 11579568 0.000000 4
- 0.500000 0.150000 0
- 6.822834 0.150000 0
- 6.822834 -0.150000 0
- 0.500000 -0.150000 0
- END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Kato Unitrack N-Scale Curved Track
-TURNOUT N "Kato Unitrack Curve 4.625R 117mm 45° 20-176"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.257145 -1.349154 135.000000
- C 0 0 4.606299 0.000000 -4.606299 0.000000 45.000000
- A 11579568 0.053333 4.114173 0.000000 -4.606299 0.000000 45.000000
- A 11579568 0.053333 5.098425 0.000000 -4.606299 0.000000 45.000000
- END
-TURNOUT N "Kato Unitrack Curve 5.905R 150mm 45° 20-174"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.175827 -1.729684 135.000000
- C 0 0 5.905512 0.000000 -5.905512 0.000000 45.000000
- A 11579568 0.053333 5.413386 0.000000 -5.905512 0.000000 45.000000
- A 11579568 0.053333 6.397638 0.000000 -5.905512 0.000000 45.000000
- END
-TURNOUT N "Kato Unitrack Curve 7.204R 183mm 45° 20-172"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.094509 -2.110215 135.000000
- C 0 0 7.204724 0.000000 -7.204724 0.000000 45.000000
- A 11579568 0.053333 6.712598 0.000000 -7.204724 0.000000 45.000000
- A 11579568 0.053333 7.696850 0.000000 -7.204724 0.000000 45.000000
- END
-TURNOUT N "Kato Unitrack Curve 8.56R 216mm 45° 20-170"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.013192 -2.490745 135.000000
- C 0 0 8.503937 0.000000 -8.503937 0.000000 45.000000
- A 11579568 0.053333 8.011811 0.000000 -8.503937 0.000000 45.000000
- A 11579568 0.053333 8.996063 0.000000 -8.503937 0.000000 45.000000
- END
-TURNOUT N "Kato Unitrack Curve 8.56R 216mm 15° 20-171"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.200981 -0.289765 105.000000
- C 0 0 8.503937 0.000000 -8.503937 0.000000 15.000000
- A 11579568 0.053333 8.011811 0.000000 -8.503937 0.000000 15.000000
- A 11579568 0.053333 8.996063 0.000000 -8.503937 0.000000 15.000000
- END
-TURNOUT N "Kato Unitrack Curve 9.75R 249mm 45° 20-100"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.931874 -2.871276 135.000000
- C 0 0 9.803150 0.000000 -9.803150 0.000000 45.000000
- A 11579568 0.053333 9.311024 0.000000 -9.803150 0.000000 45.000000
- A 11579568 0.053333 10.295276 0.000000 -9.803150 0.000000 45.000000
- END
-TURNOUT N "Kato Unitrack Curve 9.75R 249mm 15° 20-101"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.537242 -0.334034 105.000000
- C 0 0 9.803150 0.000000 -9.803150 0.000000 15.000000
- A 11579568 0.053333 9.311024 0.000000 -9.803150 0.000000 15.000000
- A 11579568 0.053333 10.295276 0.000000 -9.803150 0.000000 15.000000
- END
-TURNOUT N "Kato Unitrack Curve 11R 282mm 45° 20-110"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.850556 -3.251807 135.000000
- C 0 0 11.102362 0.000000 -11.102362 0.000000 45.000000
- A 11579568 0.053333 10.610236 0.000000 -11.102362 0.000000 45.000000
- A 11579568 0.053333 11.594488 0.000000 -11.102362 0.000000 45.000000
- END
-TURNOUT N "Kato Unitrack Curve 11R 282mm 15° 20-111"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.873503 -0.378304 105.000000
- C 0 0 11.102362 0.000000 -11.102362 0.000000 15.000000
- A 11579568 0.053333 10.610236 0.000000 -11.102362 0.000000 15.000000
- A 11579568 0.053333 11.594488 0.000000 -11.102362 0.000000 15.000000
- END
-TURNOUT N "Kato Unitrack Curve 12.375R 315mm 45° 20-120"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.769238 -3.632337 135.000000
- C 0 0 12.401575 0.000000 -12.401575 0.000000 45.000000
- A 11579568 0.053333 11.909449 0.000000 -12.401575 0.000000 45.000000
- A 11579568 0.053333 12.893701 0.000000 -12.401575 0.000000 45.000000
- END
-TURNOUT N "Kato Unitrack Curve 12.375R 315mm 15° 20-121"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.209764 -0.422573 105.000000
- C 0 0 12.401575 0.000000 -12.401575 0.000000 15.000000
- A 11579568 0.053333 11.909449 0.000000 -12.401575 0.000000 15.000000
- A 11579568 0.053333 12.893701 0.000000 -12.401575 0.000000 15.000000
- END
-TURNOUT N "Kato Unitrack Curve 13.75R 348mm 30° 20-130"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.850394 -1.835557 120.000000
- C 0 0 13.700787 0.000000 -13.700787 0.000000 30.000000
- A 11579568 0.053333 13.208661 0.000000 -13.700787 0.000000 30.000000
- A 11579568 0.053333 14.192913 0.000000 -13.700787 0.000000 30.000000
- END
-TURNOUT N "Kato Unitrack Curve 13.75R 348mm 45° 20-132"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.687920 -4.012868 135.000000
- C 0 0 13.700787 0.000000 -13.700787 0.000000 45.000000
- A 11579568 0.053333 13.208661 0.000000 -13.700787 0.000000 45.000000
- A 11579568 0.053333 14.192913 0.000000 -13.700787 0.000000 45.000000
- END
-TURNOUT N "Kato Unitrack Curve 15R 381mm 30° 20-140"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.500000 -2.009619 120.000000
- C 0 0 15.000000 0.000000 -15.000000 0.000000 30.000000
- A 11579568 0.053333 14.507874 0.000000 -15.000000 0.000000 30.000000
- A 11579568 0.053333 15.492126 0.000000 -15.000000 0.000000 30.000000
- END
-TURNOUT N "Kato Unitrack Curve 19R 481mm 15° 20-160"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.901258 -0.645263 105.000000
- C 0 0 18.937008 -0.000000 -18.937008 0.000000 15.000000
- A 11579568 0.053333 18.444882 -0.000000 -18.937008 0.000000 15.000000
- A 11579568 0.053333 19.429134 -0.000000 -18.937008 0.000000 15.000000
- END
-TURNOUT N "Kato Unitrack Curve 28.25R 718mm 15° 20-150"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.316223 -0.963199 105.000000
- C 0 0 28.267717 0.003000 -28.267717 0.000000 15.000000
- A 11579568 0.053333 27.775591 0.000000 -28.267717 0.000000 15.000000
- A 11579568 0.053333 28.759843 0.000000 -28.267717 0.000000 15.000000
- END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Kato Unitrack N-Scale Bumper Track
-TURNOUT N "Kato Unitrack Bumper A 2 1/2 64mm 20-033"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0.000000 0.000000 0.000000 2.440944 0.000000
- L 11579568 0.053333 0.000000 0.492126 3.740157 0.492126
- L 11579568 0.053333 0.000000 -0.492126 3.740157 -0.492126
- L 11579568 0.053333 3.740157 0.492126 3.740157 -0.492126
- L 10824234 0.053333 2.520000 0.320227 3.186667 0.320227
- L 10824234 0.053333 3.186667 0.320227 3.186667 -0.346440
- L 10824234 0.053333 3.186667 -0.346440 2.520000 -0.346440
- L 10824234 0.053333 2.520000 -0.346440 2.520000 0.320227
- L 0 0.053333 2.720000 0.080227 2.866667 0.080227
- L 0 0.053333 2.866667 0.080227 2.866667 -0.106440
- L 0 0.053333 2.866667 -0.106440 2.720000 -0.106440
- L 0 0.053333 2.720000 -0.106440 2.720000 0.080227
- END
-TURNOUT N "Kato Unitrack Bumper B 2 1/2 64mm 20-034"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0.000000 0.000000 0.000000 2.440944 0.000000
- L 11579568 0.053333 0.000000 0.492126 3.740157 0.492126
- L 11579568 0.053333 0.000000 -0.492126 3.740157 -0.492126
- L 11579568 0.053333 3.740157 0.492126 3.740157 -0.492126
- L 0 0.053333 2.720000 0.080227 2.866667 0.080227
- L 0 0.053333 2.866667 0.080227 2.866667 -0.106440
- L 0 0.053333 2.866667 -0.106440 2.720000 -0.106440
- L 0 0.053333 2.720000 -0.106440 2.720000 0.080227
- L 9127187 0.053333 2.520000 0.306893 3.226667 0.306893
- L 9127187 0.053333 3.226667 -0.333107 2.520000 -0.333107
- L 9127187 0.053333 2.520000 -0.333107 2.520000 0.306893
- L 11579568 0.053333 2.573333 0.253560 3.186667 0.253560
- L 11579568 0.053333 3.186667 0.253560 3.186667 -0.293107
- L 11579568 0.053333 3.186667 -0.293107 2.573333 -0.293107
- L 11579568 0.053333 2.573333 -0.293107 2.573333 0.253560
- END
-TURNOUT N "Kato Unitrack Bumper C 2 20-035"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0.000000 0.000000 0.000000 1.338583 0.000000
- L 11579568 0.053333 0.000000 0.492126 1.968504 0.492126
- L 11579568 0.053333 0.000000 -0.492126 1.968504 -0.492126
- L 11579568 0.053333 1.968504 0.492126 1.968504 -0.492126
- L 0 0.053333 1.026667 0.080227 1.200000 0.080227
- L 0 0.053333 1.200000 0.080227 1.200000 -0.093107
- L 0 0.053333 1.200000 -0.093107 1.026667 -0.093107
- L 0 0.053333 1.026667 -0.093107 1.026667 0.080227
- L 0 0.053333 0.800000 0.080227 0.800000 -0.093107
- L 0 0.040000 0.826667 -0.066440 1.146667 -0.453107
- L 0 0.040000 0.826667 0.066893 1.160000 0.440227
- L 0 0.040000 0.826667 -0.093107 0.573333 -0.453107
- L 0 0.040000 0.840000 0.080227 0.586667 0.440227
- L 0 0.053333 0.746667 -0.106440 0.746667 0.106893
-END
-TURNOUT N "Kato Unitrack Buffer Track D 35mm 20-060"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0.000000 0.000000 0.000000 1.377000 0.000000
- L 11579568 0.053333 0.000000 0.492126 1.377953 0.492126
- L 11579568 0.053333 0.000000 -0.492126 1.377953 -0.492126
- L 11579568 0.053333 1.377953 0.492126 1.377953 -0.492126
- L 0 0.053333 0.000000 0.350000 0.000000 -0.350000
- L 0 0.053333 0.000000 0.350000 0.450000 0.350000
- L 0 0.053333 0.000000 -0.350000 0.450000 -0.350000
- L 0 0.053333 0.320000 0.080227 0.466667 0.080227
- L 0 0.053333 0.466667 0.080227 0.466667 -0.106440
- L 0 0.053333 0.466667 -0.106440 0.320000 -0.106440
- L 0 0.053333 0.320000 -0.106440 0.320000 0.080227
-END
-TURNOUT N "Kato Unitrack Buffer Track A 66mm 20-063"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0.000000 0.000000 0.000000 2.200000 0.000000
- L 11579568 0.053333 0.000000 0.492126 2.598425 0.492126
- L 11579568 0.053333 0.000000 -0.492126 2.598425 -0.492126
- L 11579568 0.053333 2.598425 0.492126 2.598425 -0.492126
- F 0 0.000000 4
- 1.800000 0.050000 0
- 1.900000 0.050000 0
- 1.900000 -0.050000 0
- 1.800000 -0.050000 0
- L 0 0.040000 1.700000 0.050000 2.100000 0.170000
- L 0 0.040000 1.700000 -0.050000 2.100000 -0.170000
- L 0 0.040000 1.500000 0.170000 1.700000 0.050000
- L 0 0.040000 1.500000 -0.170000 1.700000 -0.050000
- L 0 0.040000 1.700000 0.050000 1.700000 -0.050000
- L 0 0.050000 1.6600000 0.075000 1.660000 -0.075000
-END
-TURNOUT N "Kato Unitrack Buffer Track C 66mm 20-064"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0.000000 0.000000 0.000000 2.200000 0.000000
- L 11579568 0.053333 0.000000 0.492126 2.598425 0.492126
- L 11579568 0.053333 0.000000 -0.492126 2.598425 -0.492126
- L 11579568 0.053333 2.598425 0.492126 2.598425 -0.492126
- F 12632256 0.000000 4
- 1.650000 0.450000 0
- 2.250000 0.450000 0
- 2.250000 -0.450000 0
- 1.650000 -0.450000 0
- F 0 0.000000 4
- 1.800000 0.050000 0
- 1.900000 0.050000 0
- 1.900000 -0.050000 0
- 1.800000 -0.050000 0
-END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Kato Unitrack N-Scale Turnouts
-TURNOUT N "Kato Unitrack Turnout 150-R 20-240"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 4.881889 0.000000 90.000000
- E 4.175827 -1.729684 135.000000
- S 0 0 0.000000 0.000000 4.881889 0.000000
- C 0 0 5.905512 0.000000 -5.905512 0.000000 45.000000
- L 11579568 0.053333 0.000000 0.492126 4.881889 0.492126
- L 11579568 0.053333 3.380000 -0.492126 4.881889 -0.492126
- A 11579568 0.053333 5.413386 0.000000 -5.905512 0.000000 45.000000
- A 11579568 0.053333 6.397638 0.000000 -5.905512 32.500000 12.500000
- END
-TURNOUT N "Kato Unitrack Turnout 150-L 20-241"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 4.881889 0.000000 90.000000
- E 4.175827 1.729684 45.000000
- S 0 0 0.000000 0.000000 4.881889 0.000000
- C 0 0 5.905512 0.000000 5.905512 135.000000 45.000000
- L 11579568 0.053333 0.000000 -0.492126 4.881889 -0.492126
- L 11579568 0.053333 3.380000 0.492126 4.881889 0.492126
- A 11579568 0.053333 5.413386 0.000000 5.905512 135.000000 45.000000
- A 11579568 0.053333 6.397638 0.000000 5.905512 135.000000 12.500000
- END
-TURNOUT N "Kato Unitrack Turnout 4-L 20-220"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 4.960629 0.000000 90.000000
- E 4.881889 0.642713 75.000000
- S 0 0 0.000000 0.000000 4.960629 0.000000
- C 0 0 -18.862000 0.000000 18.862000 165.000000 15.000000
- L 11579568 0.053333 0.000000 -0.492126 4.960629 -0.492126
- A 11579568 0.053333 -18.369874 0.000000 18.862000 165.000000 15.000000
- END
-TURNOUT N "Kato Unitrack S60L{w/4L Turnout} S60L"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.362204 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.362204 0.000000
- L 11579568 0.053333 0.000000 0.492126 2.362204 0.492126
- L 11579568 0.053333 0.000000 -0.492126 2.362204 -0.492126
- END
-TURNOUT N "Kato Unitrack Turnout 4-R 20-221"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 4.960629 0.000000 90.000000
- E 4.881889 -0.642713 105.000000
- S 0 0 0.000000 0.000000 4.960629 0.000000
- C 0 0 18.862000 0.000000 -18.862000 0.000000 15.000000
- L 11579568 0.053333 0.000000 0.492126 4.960629 0.492126
- A 11579568 0.053333 18.369874 0.000000 -18.862000 0.000000 15.000000
- END
-TURNOUT N "Kato Unitrack S60R{w/4R Turnout} S60R"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.362204 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.362204 0.000000
- L 11579568 0.053333 0.000000 0.492126 2.362204 0.492126
- L 11579568 0.053333 0.000000 -0.492126 2.362204 -0.492126
- END
-TURNOUT N "Kato Unitrack Turnout 2-WYE 20-222"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 4.881889 0.642713 75.000000
- E 4.881889 -0.642713 105.000000
- C 0 0 -18.862000 0.000000 18.862000 165.000000 15.000000
- C 0 0 18.862000 0.000000 -18.862000 0.000000 15.000000
- A 11579568 0.053333 -18.416226 0.000000 18.862000 165.000000 15.000000
- A 11579568 0.053333 18.416226 0.000000 -18.862000 0.000000 15.000000
- L 11579568 0.053333 5.000000 0.200000 5.000000 -0.200000
- END
-TURNOUT N "Kato Unitrack Turnout 6-L 20-202"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 7.322834 0.000000 90.000000
- E 7.322834 0.964069 75.000000
- S 0 0 0.000000 0.000000 7.322834 0.000000
- C 0 0 -28.268000 0.000000 28.268000 165.0000000 15.000000
- L 11579568 0.053333 0.000000 -0.492126 7.322834 -0.492126
- A 11579568 0.053333 27.775874 0.000000 28.268000 165.000000 15.000000
- END
-TURNOUT N "Kato Unitrack Turnout 6-R 20-203"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 7.322834 0.000000 90.000000
- E 7.322834 -0.964069 105.000000
- S 0 0 0.000000 0.000000 7.322834 0.000000
- C 0 0 28.268000 0.000000 -28.268000 0.000000 15.000000
- L 11579568 0.053333 0.000000 0.492126 7.322834 0.492126
- A 11579568 0.053333 27.775874 0.000000 -28.268000 0.000000 15.000000
- END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Kato Unitrack N-Scale Crossings
-TURNOUT N "Kato Unitrack Double Crossover 20-210"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
- E 0.000000 0.000000 270.000000
- E 12.204724 0.000000 90.000000
- E 0.000000 -1.299212 270.000000
- E 12.204724 -1.299212 90.000000
- S 0 0 0.000000 0.000000 0.632000 0.000000
- S 0 0 0.632000 0.000000 11.555000 0.000000
- S 0 0 11.555000 0.000000 12.204724 0.000000
- S 0 0 0.000000 -1.299212 0.632000 -1.299212
- S 0 0 0.632000 -1.299212 11.555000 -1.299212
- S 0 0 11.555000 -1.299212 12.204724 -1.299212
- C 0 0 22.960000 0.631000 -22.960000 0.003000 12.880000
- S 0 0 5.750000 -0.578000 6.438000 -0.735000
- C 0 0 -22.960000 11.497000 21.661000 179.855000 12.874000
- C 0 0 -22.960000 0.691000 21.661000 167.271000 12.876000
- S 0 0 5.750000 -0.735000 6.438000 -0.578000
- C 0 0 22.960000 11.557000 -22.960000 347.117000 12.878000
- L 11579568 0.053333 0.000000 0.492126 12.204724 0.492126
- L 11579568 0.053333 0.000000 -0.492126 0.5 -0.492126
- L 11579568 0.053333 0.000000 -0.825878 0.5 -0.825878
- L 11579568 0.053333 0.5 -0.492126 0.5 -0.825878
- L 11579568 0.053333 12.204724 -0.492126 11.704724 -0.492126
- L 11579568 0.053333 12.204724 -0.825878 11.704724 -0.825878
- L 11579568 0.053333 11.704724 -0.492126 11.704724 -0.825878
- L 11579568 0.053333 0.000000 -1.772546 12.204724 -1.772546
- END
-TURNOUT N "Kato Unitrack Dbl Trk Single Crossover (left) 9.75 248mm 20-230"
- P "Normal" 1 2 0 3 4
- P "Reverse" 1 5 6 7 4
- E 0.000000 0.000000 270.000000
- E 9.763779 0.000000 90.000000
- E 0.000000 1.299212 270.000000
- E 9.763779 1.299212 90.000000
- S 0 0.000000 0.000000 0.000000 0.617287 0.000000
- S 0 0.000000 0.617287 0.000000 9.763779 0.000000
- S 0 0.000000 0.000000 1.299212 9.146492 1.299212
- S 0 0.000000 9.146492 1.299212 9.763779 1.299212
- C 0 0.000000 -14.226684 0.617306 14.226684 163.988842 16.011234
- S 0 0.000000 4.541371 0.551886 5.222408 0.747326
- C 0 0.000000 14.226684 9.146510 -12.927467 343.988842 16.011234
- L 11579568 0.053333 0.000000 -0.445774 9.763799 -0.445774
- L 11579568 0.053333 0.000000 1.744986 9.763799 1.744986
- END
-TURNOUT N "Kato Unitrack Dbl Trk Single Crossover (Right) 9.75 248mm 20-231"
- P "Normal" 1 2 0 3 4
- P "Reverse" 3 5 6 7 2
- E 0.000000 0.000000 270.000000
- E 9.763799 0.000000 90.000000
- E 0.000000 1.299212 270.000000
- E 9.763799 1.299212 90.000000
- S 0 0.000000 0.000000 0.000000 9.146512 0.000000
- S 0 0.000000 9.146512 0.000000 9.763799 0.000000
- S 0 0.000000 0.000000 1.299212 0.617287 1.299212
- S 0 0.000000 0.617287 1.299212 9.763799 1.299212
- C 0 0.000000 14.226749 0.617230 -12.927537 0.000076 16.011200
- S 0 0.000000 4.541380 0.747326 5.222419 0.551886
- C 0 0.000000 -14.226749 9.146530 14.226744 180.000076 16.011200
- L 11579568 0.053333 0.000000 -0.445774 9.763799 -0.445774
- L 11579568 0.053333 0.000000 1.744986 9.763799 1.744986
- END
-TURNOUT N "Kato Unitrack Crossing 15° X15R 20-301"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 7.322834 0.000000 90.000000
- E 0.000000 0.964069 285.000000
- E 7.322834 -0.964069 105.000000
- S 0 0 0.000000 0.000000 7.322834 0.000000
- S 0 0 0.000000 0.964069 7.322834 -0.964069
- L 11579568 0.053333 3.71 0.492126 7.322834 0.492126
- L 11579568 0.053333 0.000000 -0.492126 3.62 -0.492126
- L 11579568 0.053333 0.12 1.43 3.71 0.492126
- L 11579568 0.053333 7.20 -1.43 3.62 -0.492126
- END
-TURNOUT N "Kato Unitrack Crossing 15° X15L 20-300"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 7.322834 0.000000 90.000000
- E 0.000000 -0.964069 255.000000
- E 7.322834 0.964069 75.000000
- S 0 0 0.000000 0.000000 7.322834 0.000000
- S 0 0 0.000000 -0.964069 7.322834 0.964069
- L 11579568 0.053333 3.71 -0.492126 7.322834 -0.492126
- L 11579568 0.053333 0.000000 0.492126 3.62 0.492126
- L 11579568 0.053333 0.12 -1.43 3.71 -0.492126
- L 11579568 0.053333 7.20 1.43 3.62 0.492126
- END
-TURNOUT N "Kato Unitrack Crossing 90° w/S45.5 20-320"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.881889 0.000000 90.000000
- E 2.440944 2.440944 0.000000
- E 2.440944 -2.440944 180.000000
- S 0 0 0.000000 0.000000 4.881889 0.000000
- S 0 0 2.440944 2.440944 2.440944 -2.440944
- L 11579568 0.053333 0.000000 0.492126 1.967610 0.492126
- L 11579568 0.053333 0.000000 -0.492126 1.967610 -0.492126
- L 11579568 0.053333 2.914278 0.492126 4.881889 0.492126
- L 11579568 0.053333 2.914278 -0.492126 4.881889 -0.492126
- L 11579568 0.053333 1.967610 -2.440944 1.967610 -0.500000
- L 11579568 0.053333 2.914278 -2.440944 2.914278 -0.500000
- L 11579568 0.053333 1.967610 2.440944 1.967610 0.500000
- L 11579568 0.053333 2.914278 2.440944 2.914278 0.500000
- END
-TURNOUT N "Kato Unitrack Crossing 90° w/o S45.5 20-320"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 1.299212 0.000000 90.000000
- E 0.649606 0.649606 0.000000
- E 0.649606 -0.649606 180.000000
- S 0 0 0.000000 0.000000 1.299212 0.000000
- S 0 0 0.649606 0.649606 0.649606 -0.650000
- L 11579568 0.053333 0.000000 0.492126 0.176272 0.492126
- L 11579568 0.053333 0.000000 -0.492126 0.176272 -0.492126
- L 11579568 0.053333 1.122940 0.492126 1.299212 0.492126
- L 11579568 0.053333 1.122940 -0.492126 1.299212 -0.492126
- L 11579568 0.053333 0.176272 -0.649606 0.176272 -0.492126
- L 11579568 0.053333 1.122940 -0.649606 1.122940 -0.492126
- L 11579568 0.053333 0.176272 0.649606 0.176272 0.492126
- L 11579568 0.053333 1.122940 0.649606 1.122940 0.492126
- END
-TURNOUT N "Kato Unitrack S45.5 (incl w/20-320) "
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.791339 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.791339 0.000000
- L 11579568 0.053333 0.000000 0.492126 1.791339 0.492126
- L 11579568 0.053333 0.000000 -0.492126 1.791339 -0.492126
- END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Kato Unitrack N-Scale Single Track Viaducts - Straights
-TURNOUT N "Kato Unitrack Viaduct Straight 9.75 248mm 20-400"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.763779 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.763779 0.000000
- L 0 0.053333 0.000000 0.47334 9.763799 0.47334
- L 0 0.053333 0.000000 -0.47334 9.763799 -0.47334
- END
-TURNOUT N "Kato Unitrack Viaduct Straight 7.312 186mm 20-410"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.322834 0.000000 90.000000
- S 0 0 0.000000 0.000000 7.322834 0.000000
- L 0 0.053333 0.000000 0.47334 7.322834 0.47334
- L 0 0.053333 0.000000 -0.47334 7.322834 -0.47334
- END
-TURNOUT N "Kato Unitrack Viaduct Straight 4.875 124mm 20-420"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.881889 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.881889 0.000000
- L 0 0.053333 0.000000 0.47334 4.881889 0.47334
- L 0 0.053333 0.000000 -0.47334 4.881889 -0.47334
- END
-TURNOUT N "Kato Unitrack Viaduct Straight(Platform) 4.875 124mm 20-421"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.881889 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.881889 0.000000
- L 0 0.053333 0.000000 0.47334 4.881889 0.47334
- L 0 0.053333 0.000000 -0.47334 4.881889 -0.47334
- L 0 0.040000 3.000000 -0.526440 3.000000 -0.826440
- L 0 0.040000 3.000000 -0.826440 1.900000 -0.826440
- L 0 0.040000 1.900000 -0.826440 1.900000 -0.526440
- END
-TURNOUT N "Kato Unitrack Viaduct Straight 2.4375 62mm 20-440"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.440944 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.440944 0.000000
- L 0 0.053333 0.000000 0.47334 2.440944 0.47334
- L 0 0.053333 0.000000 -0.47334 2.440944 -0.47334
- END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Kato Unitrack N-Scale Single Track Viaducts - Curves
-TURNOUT N "Kato Unitrack Viaduct Curve 9.75R 249mm 45° Curve 20-505"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.931874 -2.871276 135.000000
- C 0 0 9.803150 0.000000 -9.803150 0.000000 45.000000
- A 0 0.053333 9.329810 0.000000 -9.803150 0.000000 45.000000
- A 0 0.053333 10.276490 0.000000 -9.803150 0.000000 45.000000
- END
-TURNOUT N "Kato Unitrack Viaduct Curve 11R 282mm 45° 20-510"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.850556 -3.251807 135.000000
- C 0 0 11.102362 0.000000 -11.102362 0.000000 45.000000
- A 0 0.053333 10.629022 0.000000 -11.102362 0.000000 45.000000
- A 0 0.053333 11.575702 0.000000 -11.102362 0.000000 45.000000
- END
-TURNOUT N "Kato Unitrack Viaduct Curve 12.375R 315mm 45° 20-520"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.769238 -3.632337 135.000000
- C 0 0 12.401575 0.000000 -12.401575 0.000000 45.000000
- A 0 0.053333 11.928235 0.000000 -12.401575 0.000000 45.000000
- A 0 0.053333 12.874915 0.000000 -12.401575 0.000000 45.000000
- END
-TURNOUT N "Kato Unitrack Viaduct Curve 13.75R 348mm 45° 20-530"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.687920 -4.012868 135.000000
- C 0 0 13.700787 0.000000 -13.700787 0.000000 45.000000
- A 0 0.053333 13.227447 0.000000 -13.700787 0.000000 45.000000
- A 0 0.053333 14.174127 0.000000 -13.700787 0.000000 45.000000
- END
-TURNOUT N "Kato Unitrack Viaduct Curve 13.75R 348mm 30° 20-531"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.850394 -1.835557 120.000000
- C 0 0 13.700787 0.000000 -13.700787 0.000000 30.000000
- A 0 0.053333 13.227447 0.000000 -13.700787 0.000000 30.000000
- A 0 0.053333 14.174127 0.000000 -13.700787 0.000000 30.000000
- END
-TURNOUT N "Kato Unitrack Viaduct Curve 15R 381mm 30° 20-540"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.500000 -2.009619 120.000000
- C 0 0 15.000000 0.000000 -15.000000 0.000000 30.000000
- A 0 0.053333 14.526660 0.000000 -15.000000 0.000000 30.000000
- A 0 0.053333 15.473340 0.000000 -15.000000 0.000000 30.000000
- END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Kato Unitrack N-Scale Double Track Viaducts - Straights
-TURNOUT N "Kato Unitrack Double Viaduct Straight 9.75 248mm 20-401"
- P "Normal" 1 0 2
- E 0.000000 0.649606 270.000000
- E 9.763779 0.649606 90.000000
- E 0.000000 -0.649606 270.000000
- E 9.763779 -0.649606 90.000000
- S 0 0 0.000000 0.649606 9.763779 0.649606
- S 0 0 0.000000 -0.649606 9.763779 -0.649606
- L 0 0.053333 0.000000 1.122946 9.763779 1.122946
- L 0 0.053333 0.000000 -1.122946 9.763779 -1.122946
- END
-TURNOUT N "Kato Unitrack Double Viaduct Straight 7 5/16 186mm 20-411"
- P "Normal" 1 0 2
- E 0.000000 0.649606 270.000000
- E 7.322834 0.649606 90.000000
- E 0.000000 -0.649606 270.000000
- E 7.322834 -0.649606 90.000000
- S 0 0 0.000000 0.649606 7.322834 0.649606
- S 0 0 0.000000 -0.649606 7.322834 -0.649606
- L 0 0.053333 0.000000 1.122946 7.322834 1.122946
- L 0 0.053333 0.000000 -1.122946 7.322834 -1.122946
- END
-TURNOUT N "Kato Unitrack Double Viaduct Straight 4.875 124mm 20-422"
- P "Normal" 1 0 2
- E 0.000000 0.649606 270.000000
- E 4.881889 0.649606 90.000000
- E 0.000000 -0.649606 270.000000
- E 4.881889 -0.649606 90.000000
- S 0 0 0.000000 0.649606 4.881889 0.649606
- S 0 0 0.000000 -0.649606 4.881889 -0.649606
- L 0 0.053333 0.000000 1.122946 4.881889 1.122946
- L 0 0.053333 0.000000 -1.122946 4.881889 -1.122946
- END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Kato Unitrack N-Scale CS Double Track Viaducts - Curves
-TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Viaduct Curve 16.3,15R 414/381mm 45° 20-544"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 10.606602 -4.393398 135.000000
- E 0.000000 1.299213 270.000000
- E 11.525284 -3.474716 135.000000
- C 0 0 15.000000 0.000000 -15.000000 0.000000 45.000000
- C 0 0 16.299213 0.000000 -15.000000 0.000000 45.000000
- A 0 0.053333 14.526660 0.000000 -15.000000 0.000000 45.000000
- A 0 0.053333 16.772553 0.000000 -15.000000 0.000000 45.000000
- END
-TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Viaduct Easement Curve (R) Appr 16.3/15R 414/381mm 22.5° 20-545 Right"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 6.237438 -1.240704 112.500000
- E 0.000000 -1.299212 270.000000
- E 5.740251 -2.441019 112.500000
- C 0 0 16.299212 0.000000 -16.299212 0.000000 22.500000
- C 0 0 15.000000 0.000000 -16.299212 0.000000 22.500000
- A 11579568 0.053333 16.744986 0.000000 -16.299212 0.000000 22.500000
- A 11579568 0.053333 14.554226 0.000000 -16.299212 0.000000 22.500000
- END
-TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Viaduct Easement Curve (L) Appr 16.3/15R 414/381mm 22.5° 20-545 Left"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 6.237438 -1.240704 112.500000
- E 0.000000 -1.299212 270.000000
- E 5.740251 -2.441019 112.500000
- C 0 0 16.299212 0.000000 -16.299212 0.000000 22.500000
- C 0 0 15.000000 0.000000 -16.299212 0.000000 22.500000
- A 11579568 0.053333 16.744986 0.000000 -16.299212 0.000000 22.500000
- A 11579568 0.053333 14.554226 0.000000 -16.299212 0.000000 22.500000
- END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Kato Unitrack N-Scale GL CS Double Track - Straights
-TURNOUT N "Kato Unitrack CS Dbl Trk Straight 9.75 248mm 20-004"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 9.763799 0.000000 90.000000
- E 0.000000 -1.299212 270.000000
- E 9.763799 -1.299212 90.000000
- S 0 0 0.000000 0.000000 9.763799 0.000000
- S 0 0 0.000000 -1.299212 9.763799 -1.299212
- L 11579568 0.053333 0.000000 0.492126 9.763799 0.492126
- L 11579568 0.053333 0.000000 -1.744986 9.763799 -1.744986
- END
-TURNOUT N "Kato Unitrack CS Dbl Trk Straight 7 5/16 186mm 20-012"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 7.322834 0.000000 90.000000
- E 0.000000 -1.299212 270.000000
- E 7.322834 -1.299212 90.000000
- S 0 0 0.000000 0.000000 7.322834 0.000000
- S 0 0 0.000000 -1.299212 7.322834 -1.299212
- L 11579568 0.053333 0.000000 0.492126 7.322834 0.492126
- L 11579568 0.053333 0.000000 -1.744986 7.322834 -1.744986
- END
-TURNOUT N "Kato Unitrack CS Dbl Trk Straight 4 7/8 124mm 20-023"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.881889 0.000000 90.000000
- E 0.000000 -1.299212 270.000000
- E 4.881889 -1.299212 90.000000
- S 0 0 0.000000 0.000000 4.881889 0.000000
- S 0 0 0.000000 -1.299212 4.881889 -1.299212
- L 11579568 0.053333 0.000000 0.492126 4.881889 0.492126
- L 11579568 0.053333 0.000000 -1.744986 4.881889 -1.744986
- END
-TURNOUT N "Kato Unitrack CS Dbl Trk Straight 2 7/16 62mm 20-042"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 2.440944 0.000000 90.000000
- E 0.000000 -1.299212 270.000000
- E 2.440944 -1.299212 90.000000
- S 0 0 0.000000 0.000000 2.440944 0.000000
- S 0 0 0.000000 -1.299212 2.440944 -1.299212
- L 11579568 0.053333 0.000000 0.492126 2.440944 0.492126
- L 11579568 0.053333 0.000000 -1.744986 2.440944 -1.744986
- END
-TURNOUT N "Kato Unitrack CS Dbl Trk Feeder Track 62mm 20-043"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 2.440944 0.000000 90.000000
- E 0.000000 -1.299212 270.000000
- E 2.440944 -1.299212 90.000000
- S 0 0 0.000000 0.000000 2.440944 0.000000
- S 0 0 0.000000 -1.299212 2.440944 -1.299212
- L 11579568 0.053333 0.000000 0.492126 2.440944 0.492126
- L 11579568 0.053333 0.000000 -1.744986 2.440944 -1.744986
- L 0 0.026667 2.000000 -1.798086 2.000000 -1.998086
- L 0 0.026667 2.000000 -1.998086 2.100000 -2.098086
- L 0 0.026667 2.000000 -1.998086 1.900000 -2.098086
- L 16711680 0.026667 1.800000 -1.798086 1.800000 -1.998086
- L 16711680 0.026667 1.800000 -1.998086 1.900000 -2.098086
- L 16711680 0.026667 1.800000 -1.998086 1.700000 -2.098086
- END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Kato Unitrack N-Scale GL CS Double Track - Curves
-TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Curve 16.3/15R 414/381mm 45° 20-181"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 11.525283 -4.773929 135.000000
- E 0.000000 -1.299212 270.000000
- E 10.606602 -5.692610 135.000000
- C 0 0 16.299212 0.000000 -16.299212 0.000000 45.000000
- C 0 0 15.000000 0.000000 -16.299212 0.000000 45.000000
- A 11579568 0.053333 16.744986 0.000000 -16.299212 0.000000 45.000000
- A 11579568 0.053333 14.554226 0.000000 -16.299212 0.000000 45.000000
- END
-TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Easement Curve (R) Appr 16.3/15R 414/381mm 22.5° 20-182 Right"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 6.237438 -1.240704 112.500000
- E 0.000000 -1.299212 270.000000
- E 5.740251 -2.441019 112.500000
- C 0 0 16.299212 0.000000 -16.299212 0.000000 22.500000
- C 0 0 15.000000 0.000000 -16.299212 0.000000 22.500000
- A 11579568 0.053333 16.744986 0.000000 -16.299212 0.000000 22.500000
- A 11579568 0.053333 14.554226 0.000000 -16.299212 0.000000 22.500000
- END
-TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Easement Curve (L) Appr 16.3/15R 414/381mm 22.5° 20-182 Left"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 6.237438 -1.240704 112.500000
- E 0.000000 -1.299212 270.000000
- E 5.740251 -2.441019 112.500000
- C 0 0 16.299212 0.000000 -16.299212 0.000000 22.500000
- C 0 0 15.000000 0.000000 -16.299212 0.000000 22.500000
- A 11579568 0.053333 16.744986 0.000000 -16.299212 0.000000 22.500000
- A 11579568 0.053333 14.554226 0.000000 -16.299212 0.000000 22.500000
- END
-TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Curve 12.375/11R 315/282mm 45° 20-183"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 0.000000 -1.299212 270.000000
- E 8.769238 -3.632337 135.000000
- E 7.850556 -4.551019 135.000000
- C 0 0 12.401575 0.000000 -12.401575 0.000000 45.000000
- C 0 0 11.102362 0.000000 -12.401575 0.000000 45.000000
- A 11579568 0.053333 12.847349 0.000000 -12.401575 0.000000 45.000000
- A 11579568 0.053333 10.656588 0.000000 -12.401575 0.000000 45.000000
- END
-TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Easement Curve 12.375/11R 315/282mm 22.5° 20-184 Right"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 0.000000 -1.299212 270.000000
- E 4.745877 -0.944014 112.500000
- E 4.248690 -2.144330 112.500000
- C 0 0 12.401575 0.000000 -12.401575 0.000000 22.500000
- C 0 0 11.102362 0.000000 -12.401575 0.000000 22.500000
- A 11579568 0.053333 12.847349 0.000000 -12.401575 0.000000 22.500000
- A 11579568 0.053333 10.656588 0.000000 -12.401575 0.000000 22.500000
- END
-TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Easement Curve 12.375/11R 315/282mm 22.5° 20-184 Left"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 0.000000 -1.299212 270.000000
- E 4.745877 -0.944014 112.500000
- E 4.248690 -2.144330 112.500000
- C 0 0 12.401575 0.000000 -12.401575 0.000000 22.500000
- C 0 0 11.102362 0.000000 -12.401575 0.000000 22.500000
- A 11579568 0.053333 12.847349 0.000000 -12.401575 0.000000 22.500000
- A 11579568 0.053333 10.656588 0.000000 -12.401575 0.000000 22.500000
- END
-TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Curve 18.875/17.625R 480/447mm 45° 20-185"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 13.362648 -5.534990 135.000000
- E 0.000000 -1.299212 270.000000
- E 12.443966 -6.453672 135.000000
- C 0 0 18.897638 0.000000 -18.897638 0.000000 45.000000
- C 0 0 17.598425 0.000000 -18.897638 0.000000 45.000000
- A 11579568 0.053333 19.343412 0.000000 -18.897638 0.000000 45.000000
- A 11579568 0.053333 17.152651 0.000000 -18.897638 0.000000 45.000000
- END
-TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Easement Curve (R) Appr 18.875/17.625R 480/447mm 22.5° 20-186 Right"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 7.231813 -1.438497 112.500000
- E 0.000000 -1.299212 270.000000
- E 6.734626 -2.638813 112.500000
- C 0 0 18.897638 0.000000 -18.897638 0.000000 22.500000
- C 0 0 17.598425 0.000000 -18.897638 0.000000 22.500000
- A 11579568 0.053333 19.343412 0.000000 -18.897638 0.000000 22.500000
- A 11579568 0.053333 17.152651 0.000000 -18.897638 0.000000 22.500000
- END
-TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Easement Curve (L) Appr 18.875/17.625R 480/447mm 22.5° 20-186 Left"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 7.231813 -1.438497 112.500000
- E 0.000000 -1.299212 270.000000
- E 6.734626 -2.638813 112.500000
- C 0 0 18.897638 0.000000 -18.897638 0.000000 22.500000
- C 0 0 17.598425 0.000000 -18.897638 0.000000 22.500000
- A 11579568 0.053333 19.343412 0.000000 -18.897638 0.000000 22.500000
- A 11579568 0.053333 17.152651 0.000000 -18.897638 0.000000 22.500000
- END
-
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Kato Unitrack N-Scale V-15 Double Track Widening Sections
-TURNOUT N "Kato Unitrack CS Dbl Trk Widening Section 310mm 20-051 Left"
- P "Normal" 1 0 2 -3 4 5 6
- E 0.000000 0.000000 270.000000
- E 12.204724 0.000000 90.000000
- E 0.000000 1.299212 270.000000
- E 12.204724 2.598425 90.000000
- S 0 0 0.000000 0.000000 12.204724 0.000000
- S 0 0 0.000000 1.299212 0.980334 1.299212
- C 0 0 17.598425 0.980334 18.897637 169.500000 10.500000
- S 0 0 4.187392 1.593899 8.017332 2.303737
- C 0 0 17.598425 11.224390 -15.000001 349.500000 10.500000
- S 0 0 11.224390 2.598425 12.204724 2.598425
- L 11579568 0.053333 0.000000 -0.492126 12.204724 -0.492126
- L 11579568 0.053333 0.000000 1.744986 0.980334 1.744986
- A 11579568 0.053333 17.152651 0.980334 18.897637 169.500000 10.500000
- L 11579568 0.053333 4.187392 2.039673 8.017332 2.749511
- A 11579568 0.053333 18.044199 11.224390 -15.000001 349.500000 10.500000
- L 11579568 0.053333 11.224390 3.044199 12.204724 3.044199
- L 11579568 0.053333 11.704724 0.492126 12.204724 0.492126
- L 11579568 0.053333 11.704724 0.492126 11.704724 2.152651
- L 11579568 0.053333 11.704724 2.152651 12.204724 2.152651
- END
-TURNOUT N "Kato Unitrack CS Dbl Trk Widening Section 310mm 20-052 Right"
- P "Normal" 1 0 2 3 4 -5 6
- E 0.000000 0.000000 270.000000
- E 12.204724 0.000000 90.000000
- E 0.000000 -1.299212 270.000000
- E 12.204724 -2.598425 90.000000
- S 0 0 0.000000 0.000000 12.204724 0.000000
- S 0 0 0.000000 -1.299212 0.980334 -1.299212
- C 0 0 17.598425 0.980334 -18.897637 0.000000 10.500000
- S 0 0 4.187392 -1.593899 8.017332 -2.303737
- C 0 0 17.598425 11.224390 15.000001 180.000000 10.500000
- S 0 0 11.224390 -2.598425 12.204724 -2.598425
- L 11579568 0.053333 0.000000 0.492126 12.204724 0.492126
- L 11579568 0.053333 0.000000 -1.744986 0.980334 -1.744986
- A 11579568 0.053333 17.152651 0.980334 -18.897637 0.000000 10.500000
- L 11579568 0.053333 4.187392 -2.039673 8.017332 -2.749511
- A 11579568 0.053333 18.044199 11.224390 15.000001 180.000000 10.500000
- L 11579568 0.053333 11.224390 -3.044199 12.204724 -3.044199
- L 11579568 0.053333 11.704724 -0.492126 12.204724 -0.492126
- L 11579568 0.053333 11.704724 -0.492126 11.704724 -2.152651
- L 11579568 0.053333 11.704724 -2.152651 12.204724 -2.152651
- END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Kato Unitrack N-Scale Conc Sleeper Straight Track
-TURNOUT N "Kato Unitrack CS Trk Straight 9.75 248mm 20-875"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.763779 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.763779 0.000000
- L 11579568 0.053333 0.000000 0.492126 9.763779 0.492126
- L 11579568 0.053333 0.000000 -0.492126 9.763779 -0.492126
- END
-TURNOUT N "Kato Unitrack CS Trk Straight 4 7/8 124mm 20-XXX"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.881889 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.881889 0.000000
- L 11579568 0.053333 0.000000 0.492126 4.881889 0.492126
- L 11579568 0.053333 0.000000 -0.492126 4.881889 -0.492126
- END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Kato Unitrack N-Scale Bridges
-TURNOUT N "Kato Unitrack Dbl. Track Truss Bridge 9.75 248mm 20-435/6/7/8"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 9.763779 0.000000 90.000000
- E 0.000000 -1.299212 270.000000
- E 9.763779 -1.299212 90.000000
- S 0 0 0.000000 0.000000 9.763779 0.000000
- S 0 0 0.000000 -1.299212 9.763779 -1.299212
- L 0 0.053333 0.000000 0.47334 9.763779 0.47334
- L 0 0.053333 0.000000 -1.772552 9.763779 -1.772552
- L 0 0.053333 1.220474 -1.772552 1.220474 0.47334
- L 0 0.053333 1.220474 -1.772552 2.440948 0.47334
- L 0 0.053333 2.440948 -1.772552 1.220474 0.47334
- L 0 0.053333 2.440948 -1.772552 2.440948 0.47334
- L 0 0.053333 2.440948 -1.772552 3.661422 0.47334
- L 0 0.053333 3.661422 -1.772552 2.440948 0.47334
- L 0 0.053333 3.661422 -1.772552 3.661422 0.47334
- L 0 0.053333 3.661422 -1.772552 4.881896 0.47334
- L 0 0.053333 4.881896 -1.772552 3.661422 0.47334
- L 0 0.053333 4.881896 -1.772552 4.881896 0.47334
- L 0 0.053333 4.881896 -1.772552 6.102370 0.47334
- L 0 0.053333 6.102370 -1.772552 4.881896 0.47334
- L 0 0.053333 6.102370 -1.772552 6.102370 0.47334
- L 0 0.053333 6.102370 -1.772552 7.322844 0.47334
- L 0 0.053333 7.322844 -1.772552 6.102370 0.47334
- L 0 0.053333 7.322844 -1.772552 7.322844 0.47334
- L 0 0.053333 7.322844 -1.772552 8.543318 0.47334
- L 0 0.053333 8.543318 -1.772552 7.322844 0.47334
- L 0 0.053333 8.543318 -1.772552 8.543318 0.47334
- END
-TURNOUT N "Kato Unitrack Single Track Truss Bridge 9.75 248mm 20-430/1/2/3/4"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.763779 0.000000 90.000000
- S 0 0 0.000000 0.000000 9.763779 0.000000
- L 0 0.053333 0.000000 0.47334 9.763779 0.47334
- L 0 0.053333 0.000000 -0.47334 9.763779 -0.47334
- L 0 0.053333 1.220474 -0.47334 1.220474 0.47334
- L 0 0.053333 1.220474 -0.47334 2.440948 0.47334
- L 0 0.053333 2.440948 -0.47334 1.220474 0.47334
- L 0 0.053333 2.440948 -0.47334 2.440948 0.47334
- L 0 0.053333 2.440948 -0.47334 3.661422 0.47334
- L 0 0.053333 3.661422 -0.47334 2.440948 0.47334
- L 0 0.053333 3.661422 -0.47334 3.661422 0.47334
- L 0 0.053333 3.661422 -0.47334 4.881896 0.47334
- L 0 0.053333 4.881896 -0.47334 3.661422 0.47334
- L 0 0.053333 4.881896 -0.47334 4.881896 0.47334
- L 0 0.053333 4.881896 -0.47334 6.102370 0.47334
- L 0 0.053333 6.102370 -0.47334 4.881896 0.47334
- L 0 0.053333 6.102370 -0.47334 6.102370 0.47334
- L 0 0.053333 6.102370 -0.47334 7.322844 0.47334
- L 0 0.053333 7.322844 -0.47334 6.102370 0.47334
- L 0 0.053333 7.322844 -0.47334 7.322844 0.47334
- L 0 0.053333 7.322844 -0.47334 8.543318 0.47334
- L 0 0.053333 8.543318 -0.47334 7.322844 0.47334
- L 0 0.053333 8.543318 -0.47334 8.543318 0.47334
- END
-TURNOUT N "Kato Unitrack Single Track Plate Grider Bridge 7 5/16 186mm 20-450/1/2/3/4"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.322834 0.000000 90.000000
- S 0 0 0.000000 0.000000 7.322834 0.000000
- L 0 0.053333 0.000000 0.47334 7.322834 0.47334
- L 0 0.053333 0.000000 -0.47334 7.322834 -0.47334
- END
-TURNOUT N "Kato Unitrack Double Track Plate Grider Bridge 7 5/16 186mm 20-455/6/7/8"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 7.322834 0.000000 90.000000
- E 0.000000 -1.299212 270.000000
- E 7.322834 -1.299212 90.000000
- S 0 0 0.000000 0.000000 7.322834 0.000000
- S 0 0 0.000000 -1.299212 7.322834 -1.299212
- L 0 0.053333 0.000000 0.47334 7.322834 0.47334
- L 0 0.053333 0.000000 -0.649606 7.322834 -0.649606
- L 0 0.053333 0.000000 -1.772552 7.322834 -1.772552
- END
-TURNOUT N "Kato Unitrack Deck Plate Grider Bridge 4 7/8 124mm 20-460/1/2/3/4"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.881889 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.881889 0.000000
- L 0 0.053333 0.000000 0.47334 4.881889 0.47334
- L 0 0.053333 0.000000 -0.47334 4.881889 -0.47334
- END
-TURNOUT N "Kato Unitrack Curve Deck Plate Grider Bridge 17 5/8 448mm 15d 20-823"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.564997 -0.600993 105.000000
- C 0 0 17.637795 0.000000 -17.637795 0.000000 15.000000
- A 0 0.053333 17.164455 0.000000 -17.637795 0.000000 15.000000
- A 0 0.053333 18.111135 0.000000 -17.637795 0.000000 15.000000
- END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Kato Unitrack N-Scale Structures
-STRUCTURE N "Kato Unitrack Pier 23-015"
- X pier 0.590551 "1" 0.984251 "2" 1.377952 "3" 1.771653 "4" 1.968503 "5"
- L 0 0.000000 -0.250000 -0.5 0.250000 -0.5
- L 0 0.000000 0.250000 -0.5 0.250000 0.5
- L 0 0.000000 0.250000 0.5 -0.250000 0.5
- L 0 0.000000 -0.250000 0.5 -0.250000 -0.5
- A 0 0.000000 0.250000 -0.000000 0.50000 270.000000 180.000000
- A 0 0.000000 0.250000 -0.000000 -0.50000 90.000000 180.000000
- END
-STRUCTURE N "Kato Unitrack Pier 23-016"
- X pier 1.968503 "5"
- L 7368826 0.040000 -0.75 -0.6 0.75 -0.6
- L 7368826 0.040000 0.75 -0.6 0.75 1.899212
- L 7368826 0.040000 0.75 1.899212 -0.75 1.899212
- L 7368826 0.040000 -0.75 1.899212 -0.75 -0.6
- END
-STRUCTURE N "Kato Unitrack Island Platform Type A 23-100"
- L 10824234 0.000000 0.000000 0.000000 0.000000 1.653543
- L 10824234 0.000000 0.000000 1.653543 9.763780 1.653543
- L 10824234 0.000000 9.763780 1.653543 9.763780 0.000000
- L 10824234 0.000000 9.763780 0.000000 0.000000 0.000000
- L 10824234 0.000000 0.000000 0.826772 9.763780 0.826772
- L 10824234 0.000000 0.787402 1.141732 5.157480 1.141732
- L 10824234 0.000000 5.157480 1.141732 5.157480 0.511811
- L 10824234 0.000000 5.157480 0.511811 0.787402 0.511811
- L 10824234 0.000000 0.787402 0.511811 0.787402 1.141732
- L 10824234 0.000000 2.952756 1.141732 2.952756 0.511811
- L 10824234 0.000000 0.078740 1.653543 0.078740 0.866142
- L 10824234 0.000000 0.157480 1.653543 0.157480 0.984252
- L 10824234 0.000000 0.236220 1.653543 0.236220 1.102362
- L 10824234 0.000000 0.314961 1.653543 0.314961 1.220472
- L 10824234 0.000000 0.393701 1.653543 0.393701 1.299213
- L 10824234 0.000000 0.472441 1.653543 0.472441 1.377953
- L 10824234 0.000000 0.551181 1.653543 0.551181 1.496063
- L 10824234 0.000000 0.629921 1.653543 0.629921 1.614173
- L 10824234 0.000000 9.685039 0.000000 9.685039 0.787402
- L 10824234 0.000000 9.606299 0.000000 9.606299 0.669291
- L 10824234 0.000000 9.527559 0.000000 9.527559 0.551181
- L 10824234 0.000000 9.448819 0.000000 9.448819 0.433071
- L 10824234 0.000000 9.370079 0.000000 9.370079 0.354331
- L 10824234 0.000000 9.291339 0.000000 9.291339 0.236220
- L 10824234 0.000000 9.212598 0.000000 9.212598 0.157480
- L 10824234 0.000000 9.133858 0.000000 9.133858 0.039370
- END
-STRUCTURE N "Kato Unitrack Island Platform Type B 23-101"
- L 10824234 0.000000 0.000000 0.000000 0.000000 1.653543
- L 10824234 0.000000 0.000000 1.653543 9.763780 1.653543
- L 10824234 0.000000 9.763780 1.653543 9.763780 0.000000
- L 10824234 0.000000 9.763780 0.000000 0.000000 0.000000
- L 10824234 0.000000 0.000000 0.826772 9.763780 0.826772
- L 10824234 0.000000 0.787402 1.141732 5.157480 1.141732
- L 10824234 0.000000 5.157480 1.141732 5.157480 0.511811
- L 10824234 0.000000 5.157480 0.511811 0.787402 0.511811
- L 10824234 0.000000 0.787402 0.511811 0.787402 1.141732
- L 10824234 0.000000 2.952756 1.141732 2.952756 0.511811
- L 10824234 0.000000 0.078740 1.653543 0.078740 0.866142
- L 10824234 0.000000 0.157480 1.653543 0.157480 0.984252
- L 10824234 0.000000 0.236220 1.653543 0.236220 1.102362
- L 10824234 0.000000 0.314961 1.653543 0.314961 1.220472
- L 10824234 0.000000 0.393701 1.653543 0.393701 1.299213
- L 10824234 0.000000 0.472441 1.653543 0.472441 1.377953
- L 10824234 0.000000 0.551181 1.653543 0.551181 1.496063
- L 10824234 0.000000 0.629921 1.653543 0.629921 1.614173
- L 10824234 0.000000 9.685039 0.000000 9.685039 0.787402
- L 10824234 0.000000 9.606299 0.000000 9.606299 0.669291
- L 10824234 0.000000 9.527559 0.000000 9.527559 0.551181
- L 10824234 0.000000 9.448819 0.000000 9.448819 0.433071
- L 10824234 0.000000 9.370079 0.000000 9.370079 0.354331
- L 10824234 0.000000 9.291339 0.000000 9.291339 0.236220
- L 10824234 0.000000 9.212598 0.000000 9.212598 0.157480
- L 10824234 0.000000 9.133858 0.000000 9.133858 0.039370
- END
-STRUCTURE N "Kato Unitrack Island Platform End, Type 1 23-102"
- L 10824234 0.000000 0.000000 0.000000 0.000000 1.653543
- L 10824234 0.000000 0.000000 0.000000 7.874016 0.000000
- L 10824234 0.000000 7.874016 0.000000 7.874016 1.653543
- L 10824234 0.000000 7.874016 1.653543 0.000000 1.653543
- L 10824234 0.000000 0.787402 1.653543 0.787402 0.000000
- L 10824234 0.000000 0.787402 0.629921 0.196850 0.629921
- L 10824234 0.000000 0.196850 0.629921 0.196850 0.984252
- L 10824234 0.000000 0.196850 0.984252 0.787402 0.984252
- L 10824234 0.000000 0.787402 0.984252 0.787402 0.629921
- L 10824234 0.000000 0.669291 0.629921 0.669291 0.984252
- L 10824234 0.000000 0.551181 0.629921 0.551181 0.984252
- L 10824234 0.000000 0.433071 0.629921 0.433071 0.984252
- L 10824234 0.000000 0.314961 0.629921 0.314961 0.984252
- L 0 0.026667 0.866142 1.614173 0.866142 0.039370
- A 0 0.026667 0.141951 5.196850 0.826772 0.000000 360.000000
- L 0 0.000000 3.031496 0.944882 4.606299 0.944882
- L 0 0.000000 4.606299 0.944882 4.606299 0.708661
- L 0 0.000000 4.606299 0.708661 3.031496 0.708661
- L 0 0.000000 3.031496 0.708661 3.031496 0.944882
- L 0 0.066667 3.543307 0.826772 4.094488 0.826772
- END
-STRUCTURE N "Kato Unitrack Island Platform End, Type 2 23-103"
- L 10824234 0.000000 7.874016 0.000000 7.874016 1.653543
- L 10824234 0.000000 7.874016 1.653543 0.000000 1.653543
- A 0 0.026667 0.141951 5.196850 0.826772 0.000000 360.000000
- L 0 0.000000 3.031496 0.944882 4.606299 0.944882
- L 0 0.000000 4.606299 0.944882 4.606299 0.708661
- L 0 0.000000 4.606299 0.708661 3.031496 0.708661
- L 0 0.000000 3.031496 0.708661 3.031496 0.944882
- L 0 0.066667 3.543307 0.826772 4.094488 0.826772
- A 10824234 0.000000 27.822226 7.874016 27.822226 180.000000 15.000000
- L 0 0.026667 0.866142 1.614173 0.866142 1.023622
- L 10824234 0.000000 0.196850 1.535433 0.196850 1.299213
- L 10824234 0.000000 0.669291 1.535433 0.669291 1.299213
- L 10824234 0.000000 0.551181 1.535433 0.551181 1.299213
- L 10824234 0.000000 0.433071 1.535433 0.433071 1.299213
- L 10824234 0.000000 0.314961 1.535433 0.314961 1.299213
- L 10824234 0.000000 0.196667 1.295000 0.670000 1.298333
- L 10824234 0.000000 0.193333 1.535000 0.670000 1.535000
- L 10824234 0.000000 0.670000 1.535000 0.670000 1.651667
- L 10824234 0.000000 0.670000 1.295833 0.670000 0.949167
- L 10824234 0.000000 0.673333 0.946667 0.000000 1.126667
- L 10824234 0.000000 0.006667 1.125000 0.000000 1.645000
- END
-STRUCTURE N "Kato Unitrack Island Platform End, Type 3 23-104"
- L 10824234 0.000000 0.000000 0.000000 0.000000 1.653543
- L 10824234 0.000000 0.000000 1.653543 7.874016 1.653543
- A 0 0.026667 0.141951 2.677166 0.826772 0.000000 360.000000
- L 0 0.000000 4.842520 0.944882 3.267717 0.944882
- L 0 0.000000 3.267717 0.944882 3.267717 0.708661
- L 0 0.000000 3.267717 0.708661 4.842520 0.708661
- L 0 0.000000 4.842520 0.708661 4.842520 0.944882
- L 0 0.066667 4.330709 0.826772 3.779528 0.826772
- A 10824234 0.000000 27.822226 0.000000 27.822226 165.000000 15.000000
- L 0 0.026667 7.007874 1.614173 7.007874 1.023622
- L 10824234 0.000000 7.677166 1.535433 7.677166 1.299213
- L 10824234 0.000000 7.204725 1.535433 7.204725 1.299213
- L 10824234 0.000000 7.322835 1.535433 7.322835 1.299213
- L 10824234 0.000000 7.440945 1.535433 7.440945 1.299213
- L 10824234 0.000000 7.559055 1.535433 7.559055 1.299213
- L 10824234 0.000000 7.677349 1.295000 7.204016 1.298333
- L 10824234 0.000000 7.680683 1.535000 7.204016 1.535000
- L 10824234 0.000000 7.204016 1.535000 7.204016 1.651667
- L 10824234 0.000000 7.204016 1.295833 7.204016 0.949167
- L 10824234 0.000000 7.200683 0.946667 7.874016 1.126667
- L 10824234 0.000000 7.867349 1.125000 7.874016 1.645000
- END
-STRUCTURE N "Kato Unitrack Island Platform Type D 23-106"
- L 10824234 0 0.000000 0.000000 0.000000 1.653543
- L 10824234 0 0.000000 1.653543 9.763780 1.653543
- L 10824234 0 9.763780 1.653543 9.763780 0.000000
- L 10824234 0 9.763780 0.000000 0.000000 0.000000
- END
-STRUCTURE N "Kato Unitrack One Sided Platform Type A 23-110"
- L 10824234 0.000000 0.000000 0.000000 0.000000 1.653543
- L 10824234 0.000000 0.000000 1.653543 9.763780 1.653543
- L 10824234 0.000000 9.763780 1.653543 9.763780 0.000000
- L 10824234 0.000000 9.763780 0.000000 0.000000 0.000000
- L 10824234 0.000000 5.157480 1.141732 5.157480 0.511811
- L 10824234 0.000000 0.078740 1.653543 0.078740 0.866142
- L 10824234 0.000000 0.157480 1.653543 0.157480 0.984252
- L 10824234 0.000000 0.236220 1.653543 0.236220 1.102362
- L 10824234 0.000000 0.314961 1.653543 0.314961 1.220472
- L 10824234 0.000000 0.393701 1.653543 0.393701 1.299213
- L 10824234 0.000000 0.472441 1.653543 0.472441 1.377953
- L 10824234 0.000000 0.551181 1.653543 0.551181 1.496063
- L 10824234 0.000000 0.629921 1.653543 0.629921 1.614173
- L 10824234 0.000000 9.685039 0.000000 9.685039 0.787402
- L 10824234 0.000000 9.606299 0.000000 9.606299 0.669291
- L 10824234 0.000000 9.527559 0.000000 9.527559 0.551181
- L 10824234 0.000000 9.448819 0.000000 9.448819 0.433071
- L 10824234 0.000000 9.370079 0.000000 9.370079 0.354331
- L 10824234 0.000000 9.291339 0.000000 9.291339 0.236220
- L 10824234 0.000000 9.212598 0.000000 9.212598 0.157480
- L 10824234 0.000000 9.133858 0.000000 9.133858 0.039370
- L 10824234 0.000000 1.181102 1.141732 8.582677 1.141732
- L 10824234 0.000000 8.582677 1.141732 8.582677 0.511811
- L 10824234 0.000000 8.582677 0.511811 1.181102 0.511811
- L 10824234 0.000000 1.181102 0.511811 1.181102 1.141732
- END
-STRUCTURE N "Kato Unitrack One Sided Platform Type B 23-111"
- L 10824234 0.000000 0.000000 0.000000 0.000000 1.653543
- L 10824234 0.000000 0.000000 1.653543 9.763780 1.653543
- L 10824234 0.000000 9.763780 1.653543 9.763780 0.000000
- L 10824234 0.000000 9.763780 0.000000 0.000000 0.000000
- L 10824234 0.000000 5.157480 1.141732 5.157480 0.511811
- L 10824234 0.000000 0.078740 1.653543 0.078740 0.866142
- L 10824234 0.000000 0.157480 1.653543 0.157480 0.984252
- L 10824234 0.000000 0.236220 1.653543 0.236220 1.102362
- L 10824234 0.000000 0.314961 1.653543 0.314961 1.220472
- L 10824234 0.000000 0.393701 1.653543 0.393701 1.299213
- L 10824234 0.000000 0.472441 1.653543 0.472441 1.377953
- L 10824234 0.000000 0.551181 1.653543 0.551181 1.496063
- L 10824234 0.000000 0.629921 1.653543 0.629921 1.614173
- L 10824234 0.000000 9.685039 0.000000 9.685039 0.787402
- L 10824234 0.000000 9.606299 0.000000 9.606299 0.669291
- L 10824234 0.000000 9.527559 0.000000 9.527559 0.551181
- L 10824234 0.000000 9.448819 0.000000 9.448819 0.433071
- L 10824234 0.000000 9.370079 0.000000 9.370079 0.354331
- L 10824234 0.000000 9.291339 0.000000 9.291339 0.236220
- L 10824234 0.000000 9.212598 0.000000 9.212598 0.157480
- L 10824234 0.000000 9.133858 0.000000 9.133858 0.039370
- L 10824234 0.000000 1.181102 1.141732 8.582677 1.141732
- L 10824234 0.000000 8.582677 1.141732 8.582677 0.511811
- L 10824234 0.000000 8.582677 0.511811 1.181102 0.511811
- L 10824234 0.000000 1.181102 0.511811 1.181102 1.141732
- END
-STRUCTURE N "Kato Unitrack One Sided Platform End Type 1 23-112"
- L 10824234 0.000000 0.000000 0.000000 0.000000 1.653543
- L 10824234 0.000000 0.000000 0.000000 7.874016 0.000000
- L 10824234 0.000000 7.874016 0.000000 7.874016 1.653543
- L 10824234 0.000000 7.874016 1.653543 0.000000 1.653543
- L 10824234 0.000000 0.787402 1.653543 0.787402 0.000000
- L 10824234 0.000000 0.787402 0.629921 0.196850 0.629921
- L 10824234 0.000000 0.196850 0.629921 0.196850 0.984252
- L 10824234 0.000000 0.196850 0.984252 0.787402 0.984252
- L 10824234 0.000000 0.787402 0.984252 0.787402 0.629921
- L 10824234 0.000000 0.669291 0.629921 0.669291 0.984252
- L 10824234 0.000000 0.551181 0.629921 0.551181 0.984252
- L 10824234 0.000000 0.433071 0.629921 0.433071 0.984252
- L 10824234 0.000000 0.314961 0.629921 0.314961 0.984252
- L 0 0.026667 0.866142 1.614173 0.866142 0.039370
- A 0 0.026667 0.141951 5.196850 0.826772 0.000000 360.000000
- L 0 0.000000 3.031496 0.944882 4.606299 0.944882
- L 0 0.000000 4.606299 0.944882 4.606299 0.708661
- L 0 0.000000 4.606299 0.708661 3.031496 0.708661
- L 0 0.000000 3.031496 0.708661 3.031496 0.944882
- L 0 0.066667 3.543307 0.826772 4.094488 0.826772
- L 0 0.026667 0.866142 1.614173 7.874016 1.614173
- END
-STRUCTURE N "Kato Unitrack One Sided Platform End Type 2 23-113"
- L 10824234 0.000000 7.874016 0.000000 7.874016 1.653543
- L 10824234 0.000000 7.874016 0.000000 0.000000 0.000000
- L 10824234 0.000000 0.000000 0.000000 0.000000 1.653543
- L 10824234 0.000000 0.000000 1.653543 7.874016 1.653543
- L 10824234 0.000000 7.086614 1.653543 7.086614 0.000000
- L 10824234 0.000000 7.086614 0.629921 7.677166 0.629921
- L 10824234 0.000000 7.677166 0.629921 7.677166 0.984252
- L 10824234 0.000000 7.677166 0.984252 7.086614 0.984252
- L 10824234 0.000000 7.086614 0.984252 7.086614 0.629921
- L 10824234 0.000000 7.204725 0.629921 7.204725 0.984252
- L 10824234 0.000000 7.322835 0.629921 7.322835 0.984252
- L 10824234 0.000000 7.440945 0.629921 7.440945 0.984252
- L 10824234 0.000000 7.559055 0.629921 7.559055 0.984252
- L 0 0.026667 7.007874 1.614173 7.007874 0.039370
- A 0 0.026667 0.141951 2.677166 0.826772 0.000000 360.000000
- L 0 0.000000 4.842520 0.944882 3.267717 0.944882
- L 0 0.000000 3.267717 0.944882 3.267717 0.708661
- L 0 0.000000 3.267717 0.708661 4.842520 0.708661
- L 0 0.000000 4.842520 0.708661 4.842520 0.944882
- L 0 0.066667 4.330709 0.826772 3.779528 0.826772
- L 0 0.026667 7.007874 1.614173 0.000000 1.614173
- END
-STRUCTURE N "Kato Unitrack Overhead Station 23-200"
- L 10824234 0.000000 0.000000 5.393701 13.307087 5.393701
- L 10824234 0.000000 12.952756 1.299213 3.188976 1.299213
- L 10824234 0.000000 3.188976 1.299213 3.188976 2.952756
- L 10824234 0.000000 3.188976 2.952756 12.952756 2.952756
- L 10824234 0.000000 12.952756 2.952756 12.952756 1.299213
- L 10824234 0.000000 12.165354 5.393701 12.165354 4.251969
- L 10824234 0.000000 1.102362 5.393701 1.102362 4.251969
- L 10824234 0.000000 7.874016 5.393701 7.874016 4.251969
- L 10824234 0.000000 5.511811 5.393701 5.511811 4.251969
- L 10824234 0.000000 7.913386 4.251969 7.913386 0.000000
- L 10824234 0.000000 7.913386 0.000000 2.716535 0.000000
- L 10824234 0.000000 2.716535 0.000000 2.716535 4.251969
- L 10824234 0.000000 7.795276 4.251969 7.795276 0.157480
- L 10824234 0.000000 7.795276 0.157480 4.330709 0.157480
- L 10824234 0.000000 4.330709 0.157480 4.330709 4.251969
- L 10824234 0.000000 4.330709 2.165354 7.795276 2.165354
- L 10824234 0.000000 13.307087 5.393701 13.307087 4.251969
- L 10824234 0.000000 0.000000 5.393701 0.000000 4.251969
- L 10824234 0.000000 7.952756 2.637795 11.574803 2.637795
- L 10824234 0.000000 11.574803 2.637795 11.574803 1.692913
- L 10824234 0.000000 11.574803 1.692913 7.952756 1.692913
- L 10824234 0.000000 10.866142 2.637795 10.866142 1.692913
- L 10824234 0.000000 10.118110 2.637795 10.118110 1.692913
- L 10824234 0.000000 0.000000 4.251969 4.330709 4.251969
- L 10824234 0.000000 4.330709 4.251969 7.795276 4.251969
- L 10824234 0.000000 7.874016 4.251969 13.267717 4.251969
- END
-STRUCTURE N "Kato Unitrack Station Entrance 23-210"
- L 10824234 0.000000 0.000000 0.000000 0.000000 2.874016
- L 10824234 0.000000 4.921260 0.000000 0.000000 0.000000
- L 10824234 0.000000 0.000000 1.417323 4.055118 1.417323
- L 10824234 0.000000 4.055118 2.874016 4.055118 0.000000
- L 10824234 0.000000 4.055118 1.574803 4.921260 1.574803
- L 10824234 0.000000 4.921260 1.574803 4.921260 0.000000
- L 10824234 0.000000 0.000000 2.874016 4.055118 2.874016
- L 10824234 0.000000 3.779528 0.000000 3.779528 1.299213
- L 10824234 0.000000 3.503937 0.000000 3.503937 1.181102
- L 10824234 0.000000 3.228346 0.000000 3.228346 1.062992
- L 10824234 0.000000 2.952756 0.000000 2.952756 0.944882
- L 10824234 0.000000 2.677165 0.000000 2.677165 0.826772
- L 10824234 0.000000 0.275591 2.874016 0.275591 1.535433
- L 10824234 0.000000 0.551181 2.874016 0.551181 1.692913
- L 10824234 0.000000 0.826772 2.874016 0.826772 1.811024
- L 10824234 0.000000 1.102362 2.874016 1.102362 1.929134
- L 10824234 0.000000 1.377953 2.874016 1.377953 2.047244
- L 10824234 0.000000 4.055118 0.039370 4.921260 0.039370
- L 10824234 0.000000 4.055118 1.535433 4.921260 1.535433
- L 10824234 0.000000 4.055118 0.275591 4.685039 0.275591
- L 10824234 0.000000 4.055118 0.511811 4.448819 0.511811
- L 10824234 0.000000 4.921260 1.299213 4.330709 1.299213
- L 10824234 0.000000 4.921260 1.062992 4.527559 1.062992
- END
-STRUCTURE N "Kato Unitrack Long Engine House 23-300"
- L 10824234 0.000000 0.000000 0.000000 0.000000 3.779528
- L 10824234 0.000000 0.000000 3.779528 7.362205 3.779528
- L 10824234 0.000000 7.362205 3.779528 7.362205 0.000000
- L 10824234 0.000000 7.362205 0.000000 0.000000 0.000000
- L 10824234 0.000000 0.275591 0.393701 0.787402 0.393701
- L 10824234 0.000000 0.787402 0.393701 0.787402 3.385827
- L 10824234 0.000000 0.787402 3.385827 0.275591 3.385827
- L 10824234 0.000000 0.275591 3.385827 0.275591 0.393701
- L 10824234 0.000000 1.062992 0.393701 1.574803 0.393701
- L 10824234 0.000000 1.574803 0.393701 1.574803 3.385827
- L 10824234 0.000000 1.574803 3.385827 1.062992 3.385827
- L 10824234 0.000000 1.062992 3.385827 1.062992 0.393701
- L 10824234 0.000000 1.850394 0.393701 2.362205 0.393701
- L 10824234 0.000000 2.362205 0.393701 2.362205 3.385827
- L 10824234 0.000000 2.362205 3.385827 1.850394 3.385827
- L 10824234 0.000000 1.850394 3.385827 1.850394 0.393701
- L 10824234 0.000000 2.637795 0.393701 3.149606 0.393701
- L 10824234 0.000000 3.149606 0.393701 3.149606 3.385827
- L 10824234 0.000000 3.149606 3.385827 2.637795 3.385827
- L 10824234 0.000000 2.637795 3.385827 2.637795 0.393701
- L 10824234 0.000000 3.425197 0.393701 3.937008 0.393701
- L 10824234 0.000000 3.937008 0.393701 3.937008 3.385827
- L 10824234 0.000000 3.937008 3.385827 3.425197 3.385827
- L 10824234 0.000000 3.425197 3.385827 3.425197 0.393701
- L 10824234 0.000000 4.212598 0.393701 4.724409 0.393701
- L 10824234 0.000000 4.724409 0.393701 4.724409 3.385827
- L 10824234 0.000000 4.724409 3.385827 4.212598 3.385827
- L 10824234 0.000000 4.212598 3.385827 4.212598 0.393701
- L 10824234 0.000000 5.000000 0.393701 5.511811 0.393701
- L 10824234 0.000000 5.511811 0.393701 5.511811 3.385827
- L 10824234 0.000000 5.511811 3.385827 5.000000 3.385827
- L 10824234 0.000000 5.000000 3.385827 5.000000 0.393701
- L 10824234 0.000000 5.787402 0.393701 6.299213 0.393701
- L 10824234 0.000000 6.299213 0.393701 6.299213 3.385827
- L 10824234 0.000000 6.299213 3.385827 5.787402 3.385827
- L 10824234 0.000000 5.787402 3.385827 5.787402 0.393701
- L 10824234 0.000000 6.574803 0.393701 7.086614 0.393701
- L 10824234 0.000000 7.086614 0.393701 7.086614 3.385827
- L 10824234 0.000000 7.086614 3.385827 6.574803 3.385827
- L 10824234 0.000000 6.574803 3.385827 6.574803 0.393701
- L 10824234 0.000000 0.275591 3.464567 0.472441 3.464567
- L 10824234 0.000000 0.472441 3.464567 0.472441 3.661417
- L 10824234 0.000000 0.472441 3.661417 0.275591 3.661417
- L 10824234 0.000000 0.275591 3.661417 0.275591 3.464567
- L 10824234 0.000000 0.275591 0.314961 0.472441 0.314961
- L 10824234 0.000000 0.472441 0.314961 0.472441 0.118110
- L 10824234 0.000000 0.472441 0.118110 0.275591 0.118110
- L 10824234 0.000000 0.275591 0.118110 0.275591 0.314961
- L 10824234 0.000000 7.086614 0.314961 6.889764 0.314961
- L 10824234 0.000000 6.889764 0.314961 6.889764 0.118110
- L 10824234 0.000000 6.889764 0.118110 7.086614 0.118110
- L 10824234 0.000000 7.086614 0.118110 7.086614 0.314961
- L 10824234 0.000000 7.086614 3.464567 6.889764 3.464567
- L 10824234 0.000000 6.889764 3.464567 6.889764 3.661417
- L 10824234 0.000000 6.889764 3.661417 7.086614 3.661417
- L 10824234 0.000000 7.086614 3.661417 7.086614 3.464567
- L 10824234 0.000000 3.582677 0.314961 3.779528 0.314961
- L 10824234 0.000000 3.779528 0.314961 3.779528 0.118110
- L 10824234 0.000000 3.779528 0.118110 3.582677 0.118110
- L 10824234 0.000000 3.582677 0.118110 3.582677 0.314961
- L 10824234 0.000000 3.582677 3.464567 3.779528 3.464567
- L 10824234 0.000000 3.779528 3.464567 3.779528 3.661417
- L 10824234 0.000000 3.779528 3.661417 3.582677 3.661417
- L 10824234 0.000000 3.582677 3.661417 3.582677 3.464567
- END
-STRUCTURE N "Kato Unitrack Industrial Building 23-310"
- L 10824234 0 0.000000 0.000000 0.000000 2.952756
- L 10824234 0 0.000000 2.952756 5.905512 2.952756
- L 10824234 0 5.905512 2.952756 5.905512 0.000000
- L 10824234 0 5.905512 0.000000 0.000000 0.000000
- END
-STRUCTURE N "Kato Unitrack Station Office 23-315a"
- L 10824234 0 0.000000 0.000000 0.000000 1.574803
- L 10824234 0 0.000000 1.574803 2.421260 1.574803
- L 10824234 0 2.421260 1.574803 2.421260 0.000000
- L 10824234 0 2.421260 0.000000 0.000000 0.000000
- END
-STRUCTURE N "Kato Unitrack Signal Tower 23-315b"
- L 10824234 0 0.000000 0.000000 0.000000 1.102362
- L 10824234 0 0.000000 1.102362 2.283465 1.102362
- L 10824234 0 2.283465 1.102362 2.283465 0.000000
- L 10824234 0 2.283465 0.000000 0.000000 0.000000
- END
-STRUCTURE N "Kato Unitrack Building 2x4 23-2x4"
- L 10824234 0 0.000000 0.000000 0.000000 2.000000
- L 10824234 0 0.000000 2.000000 4.000000 2.000000
- L 10824234 0 4.000000 2.000000 4.000000 0.000000
- L 10824234 0 4.000000 0.000000 0.000000 0.000000
- END
-STRUCTURE N "Kato Unitrack Building 4x5 23-4x5"
- L 10824234 0 0.000000 0.000000 0.000000 4.000000
- L 10824234 0 0.000000 4.000000 5.000000 4.000000
- L 10824234 0 5.000000 4.000000 5.000000 0.000000
- L 10824234 0 5.000000 0.000000 0.000000 0.000000
- END
-STRUCTURE N "Kato Unitrack Building 4x6 23-4x6"
- L 10824234 0 0.000000 0.000000 0.000000 4.000000
- L 10824234 0 0.000000 4.000000 6.000000 4.000000
- L 10824234 0 6.000000 4.000000 6.000000 0.000000
- L 10824234 0 6.000000 0.000000 0.000000 0.000000
- END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Kato Unitrack N-Scale Turntable and Accessories
-TURNOUT N "Kato Unitrack 3 Stall Round House 20-240"
- P "Normal" 1 0 2 0 3
- E -0.148334 1.695463 260.000000
- E 0.000000 0.000000 270.000000
- E -0.148334 -1.695463 280.000000
- S 0 0.000000 -0.148334 1.695463 7.063251 2.967059
- S 0 0.000000 0.000000 0.000000 7.322835 0.000000
- S 0 0.000000 -0.148334 -1.695463 7.063251 -2.967059
- F 12632256 0.000000 8
- -0.296668 2.536705 0
- 7.338100 4.582435 0
- 7.874016 1.543107 0
- 7.874016 -1.543107 0
- 7.338100 -4.582435 0
- -0.296668 -2.536705 0
- 0.000000 -0.854220 0
- 0.000000 0.854220 0
- G 0 0.000000 0.200000 0.750000 0.000000 0
- G 0 0.000000 0.200000 7.125000 0.000000 0
- G 0 0.000000 0.200000 0.590272 1.825699 0
- G 0 0.000000 0.200000 6.868421 2.932706 0
- G 0 0.000000 0.200000 0.590272 -1.825699 0
- G 0 0.000000 0.200000 6.868421 -2.932706 0
- L 0 0.031250 -0.296668 2.536705 7.338100 4.582435
- L 0 0.031250 0.000000 0.854220 7.874016 1.543107
- L 0 0.031250 0.000000 -0.854220 7.874016 -1.543107
- L 0 0.031250 -0.296668 -2.536705 7.338100 -4.582435
- L 0 0.031250 0.000000 0.854220 -0.296668 2.536705
- L 0 0.031250 0.000000 0.854220 0.000000 -0.854220
- L 0 0.031250 0.000000 -0.854220 -0.296668 -2.536705
- L 0 0.031250 7.874016 1.543107 7.338100 4.582435
- L 0 0.031250 7.874016 1.543107 7.874016 -1.543107
- L 0 0.031250 7.874016 -1.543107 7.338100 -4.582435
-END
-TURNOUT N "Kato Unitrack 139.5mm Straight Extension Line 20-285"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.492126 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 5.492126 0.000000
- L 0 0.031250 0.000000 0.372299 5.492126 0.854220
- L 0 0.031250 0.000000 -0.372299 5.492126 -0.854220
- L 0 0.031250 5.492126 0.854220 5.492126 -0.854220
-END
-TURNOUT N "Kato Unitrack Curve (L) Extension Line 20-286L"
- P "Normal" 1 2 3
- E 0.000000 0.000000 270.000000
- E 5.569398 -0.415987 100.000000
- S 0 0.000000 0.000000 0.000000 0.935511 0.000000
- C 0 0 26.000000 0.935511 -26.000000 0.000000 10.000000
- S 0 0.000000 5.450363 -0.394998 5.569398 -0.415987
- L 0 0.031250 0.000000 0.372299 5.492126 0.854220
- L 0 0.031250 0.000000 -0.372299 5.492126 -0.854220
- L 0 0.031250 5.642748 0.000000 5.492126 -0.854220
- L 0 0.031250 5.642748 0.000000 5.492126 0.854220
-END
-TURNOUT N "Kato Unitrack Curve (R) Extension Line 20-286R"
- P "Normal" 1 2 3
- E 0.000000 0.000000 270.000000
- E 5.569398 0.415987 80.000000
- S 0 0.000000 0.000000 0.000000 0.935511 0.000000
- C 0 0 -26.000000 0.935511 26.000000 170.000000 10.000000
- S 0 0.000000 5.450363 0.394998 5.569398 0.415987
- L 0 0.031250 0.000000 -0.372299 5.492126 -0.854220
- L 0 0.031250 0.000000 0.372299 5.492126 0.854220
- L 0 0.031250 5.642748 0.000000 5.492126 -0.854220
- L 0 0.031250 5.642748 0.000000 5.492126 0.854220
-END
-TURNOUT N "Kato Unitrack Curve 15R 381mm 10° 381-10"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.604723 -0.227884 100.000000
- C 0 0 15.000000 0.000000 -15.000000 0.000000 10.000000
- A 11579568 0.053333 14.554226 0.000000 -15.000000 0.000000 10.000000
- A 11579568 0.053333 15.445774 0.000000 -15.000000 0.000000 10.000000
-END
-TURNOUT N "Kato Unitrack Track Turntable Section 20-283A"
- P "Normal" 1 0 2 0 3
- E 3.101756 0.546923 260.000000
- E 4.206758 0.741765 80.000000
- E 3.149606 0.000000 270.000000
- E 4.271654 0.000000 90.000000
- E 3.101756 -0.546923 280.000000
- E 4.206758 -0.741765 100.000000
- S 0 0.000000 3.101756 0.546923 4.206758 0.741765
- S 0 0.000000 3.149606 0.000000 4.271654 0.000000
- S 0 0.000000 3.101756 -0.546923 4.206758 -0.741765
- A 11579568 0.031250 3.149606 0.000000 0.000000 75.000000 30.00000
- A 11579568 0.031250 4.271654 0.000000 0.000000 75.000000 30.000000
- L 0 0.031250 3.042286 0.815178 4.126100 1.105585
- L 0 0.031250 3.042286 -0.815178 4.126100 -1.105585
-END
-TURNOUT N "Kato Unitrack 160mm Turn Table 20-283" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- P "7" 7
- P "8" 8
- P "9" 9
- P "10" 10
- P "11" 11
- P "12" 12
- P "13" 13
- P "14" 14
- P "15" 15
- P "16" 16
- P "17" 17
- P "18" 18
- E 0.000000 0.000000 0.000000
- E 0.000000 3.149606 0.000000
- E 0.546923 3.101757 10.000000
- E 1.077229 2.959662 20.000000
- E 1.574803 2.727639 30.000000
- E 2.024528 2.412738 40.000000
- E 2.412738 2.024528 50.000000
- E 2.727639 1.574803 60.000000
- E 2.959662 1.077229 70.000000
- E 3.101757 0.546923 80.000000
- E 3.149606 0.000000 90.000000
- E 3.101757 -0.546923 100.000000
- E 2.959662 -1.077229 110.000000
- E 2.727639 -1.574803 120.000000
- E 2.412738 -2.024528 130.000000
- E 2.024528 -2.412738 140.000000
- E 1.574803 -2.727639 150.000000
- E 1.077229 -2.959662 160.000000
- E 0.546923 -3.101757 170.000000
- E 0.000000 -3.149606 180.000000
- E -0.546923 -3.101757 190.000000
- E -1.077229 -2.959662 200.000000
- E -1.574803 -2.727639 210.000000
- E -2.024528 -2.412738 220.000000
- E -2.412738 -2.024528 230.000000
- E -2.727639 -1.574803 240.000000
- E -2.959662 -1.077229 250.000000
- E -3.101757 -0.546923 260.000000
- E -3.149606 0.000000 270.000000
- E -3.101757 0.546923 280.000000
- E -2.959662 1.077229 290.000000
- E -2.727639 1.574803 300.000000
- E -2.412738 2.024528 310.000000
- E -2.024528 2.412738 320.000000
- E -1.574803 2.727639 330.000000
- E -1.077229 2.959662 340.000000
- E -0.546923 3.101757 350.000000
- S 16777215 0.000000 0.000000 3.149606 0.000000 -3.149606
- S 16777215 0.000000 0.546923 3.101757 -0.546923 -3.101757
- S 16777215 0.000000 1.077229 2.959662 -1.077229 -2.959662
- S 16777215 0.000000 1.574803 2.727639 -1.574803 -2.727639
- S 16777215 0.000000 2.024528 2.412738 -2.024528 -2.412738
- S 16777215 0.000000 2.412738 2.024528 -2.412738 -2.024528
- S 16777215 0.000000 2.727639 1.574803 -2.727639 -1.574803
- S 16777215 0.000000 2.959662 1.077229 -2.959662 -1.077229
- S 16777215 0.000000 3.101757 0.546923 -3.101757 -0.546923
- S 16777215 0.000000 3.149606 0.000000 -3.149606 0.000000
- S 16777215 0.000000 3.101757 -0.546923 -3.101757 0.546923
- S 16777215 0.000000 2.959662 -1.077229 -2.959662 1.077229
- S 16777215 0.000000 2.727639 -1.574803 -2.727639 1.574803
- S 16777215 0.000000 2.412738 -2.024528 -2.412738 2.024528
- S 16777215 0.000000 2.024528 -2.412738 -2.024528 2.412738
- S 16777215 0.000000 1.574803 -2.727639 -1.574803 2.727639
- S 16777215 0.000000 1.077229 -2.959662 -1.077229 2.959662
- S 16777215 0.000000 0.546923 -3.101757 -0.546923 3.101757
- A 11579568 0.031250 3.149606 0.000000 0.000000 0.000000 360.000000
- A 11579568 0.031250 4.271654 0.000000 0.000000 0.000000 360.000000
-END
+CONTENTS Kato Unitrack N-Scale
+#
+#
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Kato Unitrack N-Scale Straight Track
+TURNOUT N "Kato Unitrack Straight 9.75 248mm 20-000"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.763779 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.763779 0.000000
+ L 11579568 0.053333 0.000000 0.492126 9.763779 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 9.763779 -0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack Straight 7 5/16 186mm 20-010"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.322834 0.000000 90.000000
+ S 0 0 0.000000 0.000000 7.322834 0.000000
+ L 11579568 0.053333 0.000000 0.492126 7.322834 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 7.322834 -0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack Straight 4 7/8 124mm 20-020"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.881889 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.881889 0.000000
+ L 11579568 0.053333 0.000000 0.492126 4.881889 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 4.881889 -0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack Straight 2 1/2 64mm 20-030"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.519685 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.519685 0.000000
+ L 11579568 0.053333 0.000000 0.492126 2.519685 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 2.519685 -0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack Straight 2 7/16 62mm 20-040"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.440944 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.440944 0.000000
+ L 11579568 0.053333 0.000000 0.492126 2.440944 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 2.440944 -0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack Straight 1 3/4 45-5mm 20-091A"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.791339 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.791339 0.000000
+ L 11579568 0.053333 0.000000 0.492126 1.791339 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 1.791339 -0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack Straight 1 1/8 29mm 20-091B"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.141732 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.141732 0.000000
+ L 11579568 0.053333 0.000000 0.492126 1.141732 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 1.141732 -0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack Straight 1 19/64 33mm 20-092A"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.299213 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.299213 0.000000
+ L 11579568 0.053333 0.000000 0.492126 1.299213 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 1.299213 -0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack Straight 1 1/2 38mm 20-092B"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.496063 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.496063 0.000000
+ L 11579568 0.053333 0.000000 0.492126 1.496063 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 1.496063 -0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack Road Crossing 124mm 20-021"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.881889 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.881889 0.000000
+ L 11579568 0.053333 0.000000 0.4921260 4.881889 0.4921260
+ L 11579568 0.053333 0.000000 -0.4921260 4.881889 -0.4921260
+ L 0 0.053333 0.500000 0.548560 4.375000 0.548560
+ L 0 0.053333 4.375000 0.548560 4.375000 -0.576440
+ L 0 0.053333 4.375000 -0.576440 0.500000 -0.576440
+ L 0 0.053333 0.500000 -0.576440 0.500000 0.548560
+ L 0 0.053333 1.466667 0.133560 1.000000 -0.013107
+ L 0 0.053333 1.440000 -0.133107 1.000000 -0.026440
+ L 0 0.053333 1.440000 0.120227 3.320000 0.120227
+ L 0 0.053333 1.453333 -0.133107 3.306667 -0.119773
+ L 0 0.053333 3.306667 0.120227 3.626667 0.000227
+ L 0 0.053333 3.293333 -0.119773 3.600000 0.000227
+ END$SEGS
+TURNOUT N "Kato Unitrack Mag Uncoupler 64mm 20-032"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.519685 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 2.519685 0.000000
+ L 11579568 0.053333 0.000000 0.4921260 2.519685 0.4921260
+ L 11579568 0.053333 0.000000 -0.4921260 2.519685 -0.4921260
+ L 0 0.053333 0.253333 0.133560 2.280000 0.133560
+ L 0 0.053333 2.280000 0.133560 2.280000 -0.146440
+ L 0 0.053333 2.280000 -0.146440 0.253333 -0.146440
+ L 0 0.053333 0.253333 -0.146440 0.253333 0.133560
+ END$SEGS
+TURNOUT N "Kato Unitrack Feeder Track 62mm 20-041"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.440944 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.440944 0.000000
+ L 11579568 0.053333 0.000000 0.492126 2.440944 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 2.440944 -0.492126
+ L 0 0.026667 2.000000 -0.498874 2.000000 -0.698874
+ L 0 0.026667 2.000000 -0.698874 2.100000 -0.798874
+ L 0 0.026667 2.000000 -0.698874 1.900000 -0.798874
+ L 16711680 0.026667 1.800000 -0.498874 1.800000 -0.698874
+ L 16711680 0.026667 1.800000 -0.698874 1.900000 -0.798874
+ L 16711680 0.026667 1.800000 -0.698874 1.700000 -0.798874
+ END$SEGS
+TURNOUT N "Kato Unitrack Snap Tk. Conv. Tk. 62mm 20-045"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.440944 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.440944 0.000000
+ L 11579568 0.053333 0.000000 0.492126 2.440944 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 2.440944 -0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack 78-108mm Adjustable 20-050"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.070866 0.000000 90.000000
+ X adjustable 3.070866 4.251968
+ S 0 0 0.000000 0.000000 3.070866 0.000000
+ L 11579568 0.053333 0.000000 0.492126 3.070866 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 3.070866 -0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack 3-Color Signal 4 7/8 124mm 20-605-1"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.881889 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.881889 0.000000
+ L 11579568 0.053333 0.000000 0.492126 4.881889 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 4.881889 -0.492126
+ F 11579568 0.000000 4
+ 1.948819 0.492126 0
+ 1.948819 0.992126 0
+ 2.948819 0.992126 0
+ 2.948819 0.492126 0
+ G 0 0.053333 0.100000 2.448819 0.742126 0
+ END$SEGS
+TURNOUT N "Kato Unitrack Ash Pit Track 7 5/16 186mm 20-015"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.322834 0.000000 90.000000
+ S 0 0 0.000000 0.000000 7.322834 0.000000
+ L 11579568 0.053333 0.000000 0.492126 7.322834 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 7.322834 -0.492126
+ F 11579568 0.000000 4
+ 0.500000 0.150000 0
+ 6.822834 0.150000 0
+ 6.822834 -0.150000 0
+ 0.500000 -0.150000 0
+ END$SEGS
+TURNOUT N "Kato Unitrack Open Pit Track 7 5/16 186mm 20-016"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.322834 0.000000 90.000000
+ S 0 0 0.000000 0.000000 7.322834 0.000000
+ L 11579568 0.053333 0.000000 0.492126 7.322834 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 7.322834 -0.492126
+ F 11579568 0.000000 4
+ 0.500000 0.150000 0
+ 6.822834 0.150000 0
+ 6.822834 -0.150000 0
+ 0.500000 -0.150000 0
+ END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Kato Unitrack N-Scale Curved Track
+TURNOUT N "Kato Unitrack Curve 4.625R 117mm 45d 20-176"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.257145 -1.349154 135.000000
+ C 0 0 4.606299 0.000000 -4.606299 0.000000 45.000000
+ A 11579568 0.053333 4.114173 0.000000 -4.606299 0.000000 45.000000
+ A 11579568 0.053333 5.098425 0.000000 -4.606299 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve 5.905R 150mm 45d 20-174"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.175827 -1.729684 135.000000
+ C 0 0 5.905512 0.000000 -5.905512 0.000000 45.000000
+ A 11579568 0.053333 5.413386 0.000000 -5.905512 0.000000 45.000000
+ A 11579568 0.053333 6.397638 0.000000 -5.905512 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve 7.204R 183mm 45d 20-172"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.094509 -2.110215 135.000000
+ C 0 0 7.204724 0.000000 -7.204724 0.000000 45.000000
+ A 11579568 0.053333 6.712598 0.000000 -7.204724 0.000000 45.000000
+ A 11579568 0.053333 7.696850 0.000000 -7.204724 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve 8.56R 216mm 45d 20-170"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.013192 -2.490745 135.000000
+ C 0 0 8.503937 0.000000 -8.503937 0.000000 45.000000
+ A 11579568 0.053333 8.011811 0.000000 -8.503937 0.000000 45.000000
+ A 11579568 0.053333 8.996063 0.000000 -8.503937 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve 8.56R 216mm 15d 20-171"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.200981 -0.289765 105.000000
+ C 0 0 8.503937 0.000000 -8.503937 0.000000 15.000000
+ A 11579568 0.053333 8.011811 0.000000 -8.503937 0.000000 15.000000
+ A 11579568 0.053333 8.996063 0.000000 -8.503937 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve 9.75R 249mm 45d 20-100"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.931874 -2.871276 135.000000
+ C 0 0 9.803150 0.000000 -9.803150 0.000000 45.000000
+ A 11579568 0.053333 9.311024 0.000000 -9.803150 0.000000 45.000000
+ A 11579568 0.053333 10.295276 0.000000 -9.803150 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve 9.75R 249mm 15d 20-101"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.537242 -0.334034 105.000000
+ C 0 0 9.803150 0.000000 -9.803150 0.000000 15.000000
+ A 11579568 0.053333 9.311024 0.000000 -9.803150 0.000000 15.000000
+ A 11579568 0.053333 10.295276 0.000000 -9.803150 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve 11R 282mm 45d 20-110"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.850556 -3.251807 135.000000
+ C 0 0 11.102362 0.000000 -11.102362 0.000000 45.000000
+ A 11579568 0.053333 10.610236 0.000000 -11.102362 0.000000 45.000000
+ A 11579568 0.053333 11.594488 0.000000 -11.102362 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve 11R 282mm 15d 20-111"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.873503 -0.378304 105.000000
+ C 0 0 11.102362 0.000000 -11.102362 0.000000 15.000000
+ A 11579568 0.053333 10.610236 0.000000 -11.102362 0.000000 15.000000
+ A 11579568 0.053333 11.594488 0.000000 -11.102362 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve 12.375R 315mm 45d 20-120"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.769238 -3.632337 135.000000
+ C 0 0 12.401575 0.000000 -12.401575 0.000000 45.000000
+ A 11579568 0.053333 11.909449 0.000000 -12.401575 0.000000 45.000000
+ A 11579568 0.053333 12.893701 0.000000 -12.401575 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve 12.375R 315mm 15d 20-121"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.209764 -0.422573 105.000000
+ C 0 0 12.401575 0.000000 -12.401575 0.000000 15.000000
+ A 11579568 0.053333 11.909449 0.000000 -12.401575 0.000000 15.000000
+ A 11579568 0.053333 12.893701 0.000000 -12.401575 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve 13.75R 348mm 30d 20-130"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.850394 -1.835557 120.000000
+ C 0 0 13.700787 0.000000 -13.700787 0.000000 30.000000
+ A 11579568 0.053333 13.208661 0.000000 -13.700787 0.000000 30.000000
+ A 11579568 0.053333 14.192913 0.000000 -13.700787 0.000000 30.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve 13.75R 348mm 45d 20-132"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.687920 -4.012868 135.000000
+ C 0 0 13.700787 0.000000 -13.700787 0.000000 45.000000
+ A 11579568 0.053333 13.208661 0.000000 -13.700787 0.000000 45.000000
+ A 11579568 0.053333 14.192913 0.000000 -13.700787 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve 15R 381mm 30d 20-140"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.500000 -2.009619 120.000000
+ C 0 0 15.000000 0.000000 -15.000000 0.000000 30.000000
+ A 11579568 0.053333 14.507874 0.000000 -15.000000 0.000000 30.000000
+ A 11579568 0.053333 15.492126 0.000000 -15.000000 0.000000 30.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve 19R 481mm 15d 20-160"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.901258 -0.645263 105.000000
+ C 0 0 18.937008 -0.000000 -18.937008 0.000000 15.000000
+ A 11579568 0.053333 18.444882 -0.000000 -18.937008 0.000000 15.000000
+ A 11579568 0.053333 19.429134 -0.000000 -18.937008 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve 28.25R 718mm 15d 20-150"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.316223 -0.963199 105.000000
+ C 0 0 28.267717 0.003000 -28.267717 0.000000 15.000000
+ A 11579568 0.053333 27.775591 0.000000 -28.267717 0.000000 15.000000
+ A 11579568 0.053333 28.759843 0.000000 -28.267717 0.000000 15.000000
+ END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Kato Unitrack N-Scale Bumper Track
+TURNOUT N "Kato Unitrack Bumper A 2 1/2 64mm 20-033"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 2.440944 0.000000
+ L 11579568 0.053333 0.000000 0.492126 3.740157 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 3.740157 -0.492126
+ L 11579568 0.053333 3.740157 0.492126 3.740157 -0.492126
+ L 10824234 0.053333 2.520000 0.320227 3.186667 0.320227
+ L 10824234 0.053333 3.186667 0.320227 3.186667 -0.346440
+ L 10824234 0.053333 3.186667 -0.346440 2.520000 -0.346440
+ L 10824234 0.053333 2.520000 -0.346440 2.520000 0.320227
+ L 0 0.053333 2.720000 0.080227 2.866667 0.080227
+ L 0 0.053333 2.866667 0.080227 2.866667 -0.106440
+ L 0 0.053333 2.866667 -0.106440 2.720000 -0.106440
+ L 0 0.053333 2.720000 -0.106440 2.720000 0.080227
+ END$SEGS
+TURNOUT N "Kato Unitrack Bumper B 2 1/2 64mm 20-034"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 2.440944 0.000000
+ L 11579568 0.053333 0.000000 0.492126 3.740157 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 3.740157 -0.492126
+ L 11579568 0.053333 3.740157 0.492126 3.740157 -0.492126
+ L 0 0.053333 2.720000 0.080227 2.866667 0.080227
+ L 0 0.053333 2.866667 0.080227 2.866667 -0.106440
+ L 0 0.053333 2.866667 -0.106440 2.720000 -0.106440
+ L 0 0.053333 2.720000 -0.106440 2.720000 0.080227
+ L 9127187 0.053333 2.520000 0.306893 3.226667 0.306893
+ L 9127187 0.053333 3.226667 -0.333107 2.520000 -0.333107
+ L 9127187 0.053333 2.520000 -0.333107 2.520000 0.306893
+ L 11579568 0.053333 2.573333 0.253560 3.186667 0.253560
+ L 11579568 0.053333 3.186667 0.253560 3.186667 -0.293107
+ L 11579568 0.053333 3.186667 -0.293107 2.573333 -0.293107
+ L 11579568 0.053333 2.573333 -0.293107 2.573333 0.253560
+ END$SEGS
+TURNOUT N "Kato Unitrack Bumper C 2 20-035"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 1.338583 0.000000
+ L 11579568 0.053333 0.000000 0.492126 1.968504 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 1.968504 -0.492126
+ L 11579568 0.053333 1.968504 0.492126 1.968504 -0.492126
+ L 0 0.053333 1.026667 0.080227 1.200000 0.080227
+ L 0 0.053333 1.200000 0.080227 1.200000 -0.093107
+ L 0 0.053333 1.200000 -0.093107 1.026667 -0.093107
+ L 0 0.053333 1.026667 -0.093107 1.026667 0.080227
+ L 0 0.053333 0.800000 0.080227 0.800000 -0.093107
+ L 0 0.040000 0.826667 -0.066440 1.146667 -0.453107
+ L 0 0.040000 0.826667 0.066893 1.160000 0.440227
+ L 0 0.040000 0.826667 -0.093107 0.573333 -0.453107
+ L 0 0.040000 0.840000 0.080227 0.586667 0.440227
+ L 0 0.053333 0.746667 -0.106440 0.746667 0.106893
+END$SEGS
+TURNOUT N "Kato Unitrack Buffer Track D 35mm 20-060"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 0.000000 0.000000
+ L 11579568 0.053333 0.000000 0.492126 1.377953 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 1.377953 -0.492126
+ L 11579568 0.053333 1.377953 0.492126 1.377953 -0.492126
+ L 0 0.053333 0.000000 0.350000 0.000000 -0.350000
+ L 0 0.053333 0.000000 0.350000 0.450000 0.350000
+ L 0 0.053333 0.000000 -0.350000 0.450000 -0.350000
+ L 0 0.053333 0.320000 0.080227 0.466667 0.080227
+ L 0 0.053333 0.466667 0.080227 0.466667 -0.106440
+ L 0 0.053333 0.466667 -0.106440 0.320000 -0.106440
+ L 0 0.053333 0.320000 -0.106440 0.320000 0.080227
+END$SEGS
+TURNOUT N "Kato Unitrack Buffer Track A 66mm 20-063"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 2.200000 0.000000
+ L 11579568 0.053333 0.000000 0.492126 2.598425 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 2.598425 -0.492126
+ L 11579568 0.053333 2.598425 0.492126 2.598425 -0.492126
+ F 0 0.000000 4
+ 1.800000 0.050000 0
+ 1.900000 0.050000 0
+ 1.900000 -0.050000 0
+ 1.800000 -0.050000 0
+ L 0 0.040000 1.700000 0.050000 2.100000 0.170000
+ L 0 0.040000 1.700000 -0.050000 2.100000 -0.170000
+ L 0 0.040000 1.500000 0.170000 1.700000 0.050000
+ L 0 0.040000 1.500000 -0.170000 1.700000 -0.050000
+ L 0 0.040000 1.700000 0.050000 1.700000 -0.050000
+ L 0 0.050000 1.6600000 0.075000 1.660000 -0.075000
+END$SEGS
+TURNOUT N "Kato Unitrack Buffer Track C 66mm 20-064"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 2.200000 0.000000
+ L 11579568 0.053333 0.000000 0.492126 2.598425 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 2.598425 -0.492126
+ L 11579568 0.053333 2.598425 0.492126 2.598425 -0.492126
+ F 12632256 0.000000 4
+ 1.650000 0.450000 0
+ 2.250000 0.450000 0
+ 2.250000 -0.450000 0
+ 1.650000 -0.450000 0
+ F 0 0.000000 4
+ 1.800000 0.050000 0
+ 1.900000 0.050000 0
+ 1.900000 -0.050000 0
+ 1.800000 -0.050000 0
+END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Kato Unitrack N-Scale Turnouts
+TURNOUT N "Kato Unitrack Turnout 150-R 20-240"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.881889 0.000000 90.000000
+ E 4.175827 -1.729684 135.000000
+ S 0 0 0.000000 0.000000 4.881889 0.000000
+ C 0 0 5.905512 0.000000 -5.905512 0.000000 45.000000
+ L 11579568 0.053333 0.000000 0.492126 4.881889 0.492126
+ L 11579568 0.053333 3.380000 -0.492126 4.881889 -0.492126
+ A 11579568 0.053333 5.413386 0.000000 -5.905512 0.000000 45.000000
+ A 11579568 0.053333 6.397638 0.000000 -5.905512 32.500000 12.500000
+ END$SEGS
+TURNOUT N "Kato Unitrack Turnout 150-L 20-241"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.881889 0.000000 90.000000
+ E 4.175827 1.729684 45.000000
+ S 0 0 0.000000 0.000000 4.881889 0.000000
+ C 0 0 5.905512 0.000000 5.905512 135.000000 45.000000
+ L 11579568 0.053333 0.000000 -0.492126 4.881889 -0.492126
+ L 11579568 0.053333 3.380000 0.492126 4.881889 0.492126
+ A 11579568 0.053333 5.413386 0.000000 5.905512 135.000000 45.000000
+ A 11579568 0.053333 6.397638 0.000000 5.905512 135.000000 12.500000
+ END$SEGS
+TURNOUT N "Kato Unitrack Turnout 4-L 20-220"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.960629 0.000000 90.000000
+ E 4.881889 0.642713 75.000000
+ S 0 0 0.000000 0.000000 4.960629 0.000000
+ C 0 0 -18.862000 0.000000 18.862000 165.000000 15.000000
+ L 11579568 0.053333 0.000000 -0.492126 4.960629 -0.492126
+ A 11579568 0.053333 -18.369874 0.000000 18.862000 165.000000 15.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack S60L{w/4L Turnout} S60L"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.362204 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.362204 0.000000
+ L 11579568 0.053333 0.000000 0.492126 2.362204 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 2.362204 -0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack Turnout 4-R 20-221"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.960629 0.000000 90.000000
+ E 4.881889 -0.642713 105.000000
+ S 0 0 0.000000 0.000000 4.960629 0.000000
+ C 0 0 18.862000 0.000000 -18.862000 0.000000 15.000000
+ L 11579568 0.053333 0.000000 0.492126 4.960629 0.492126
+ A 11579568 0.053333 18.369874 0.000000 -18.862000 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack S60R{w/4R Turnout} S60R"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.362204 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.362204 0.000000
+ L 11579568 0.053333 0.000000 0.492126 2.362204 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 2.362204 -0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack Turnout 2-WYE 20-222"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.881889 0.642713 75.000000
+ E 4.881889 -0.642713 105.000000
+ C 0 0 -18.862000 0.000000 18.862000 165.000000 15.000000
+ C 0 0 18.862000 0.000000 -18.862000 0.000000 15.000000
+ A 11579568 0.053333 -18.416226 0.000000 18.862000 165.000000 15.000000
+ A 11579568 0.053333 18.416226 0.000000 -18.862000 0.000000 15.000000
+ L 11579568 0.053333 5.000000 0.200000 5.000000 -0.200000
+ END$SEGS
+TURNOUT N "Kato Unitrack Turnout 6-L 20-202"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 7.322834 0.000000 90.000000
+ E 7.322834 0.964069 75.000000
+ S 0 0 0.000000 0.000000 7.322834 0.000000
+ C 0 0 -28.268000 0.000000 28.268000 165.0000000 15.000000
+ L 11579568 0.053333 0.000000 -0.492126 7.322834 -0.492126
+ A 11579568 0.053333 27.775874 0.000000 28.268000 165.000000 15.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Turnout 6-R 20-203"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 7.322834 0.000000 90.000000
+ E 7.322834 -0.964069 105.000000
+ S 0 0 0.000000 0.000000 7.322834 0.000000
+ C 0 0 28.268000 0.000000 -28.268000 0.000000 15.000000
+ L 11579568 0.053333 0.000000 0.492126 7.322834 0.492126
+ A 11579568 0.053333 27.775874 0.000000 -28.268000 0.000000 15.000000
+ END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Kato Unitrack N-Scale Crossings
+TURNOUT N "Kato Unitrack Double Crossover 20-210"
+ P "Normal" 1 2 3 0 4 5 6
+ P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
+ E 0.000000 0.000000 270.000000
+ E 12.204724 0.000000 90.000000
+ E 0.000000 -1.299212 270.000000
+ E 12.204724 -1.299212 90.000000
+ S 0 0 0.000000 0.000000 0.632000 0.000000
+ S 0 0 0.632000 0.000000 11.555000 0.000000
+ S 0 0 11.555000 0.000000 12.204724 0.000000
+ S 0 0 0.000000 -1.299212 0.632000 -1.299212
+ S 0 0 0.632000 -1.299212 11.555000 -1.299212
+ S 0 0 11.555000 -1.299212 12.204724 -1.299212
+ C 0 0 22.960000 0.631000 -22.960000 0.003000 12.880000
+ S 0 0 5.750000 -0.578000 6.438000 -0.735000
+ C 0 0 -22.960000 11.497000 21.661000 179.855000 12.874000
+ C 0 0 -22.960000 0.691000 21.661000 167.271000 12.876000
+ S 0 0 5.750000 -0.735000 6.438000 -0.578000
+ C 0 0 22.960000 11.557000 -22.960000 347.117000 12.878000
+ L 11579568 0.053333 0.000000 0.492126 12.204724 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 0.5 -0.492126
+ L 11579568 0.053333 0.000000 -0.825878 0.5 -0.825878
+ L 11579568 0.053333 0.5 -0.492126 0.5 -0.825878
+ L 11579568 0.053333 12.204724 -0.492126 11.704724 -0.492126
+ L 11579568 0.053333 12.204724 -0.825878 11.704724 -0.825878
+ L 11579568 0.053333 11.704724 -0.492126 11.704724 -0.825878
+ L 11579568 0.053333 0.000000 -1.772546 12.204724 -1.772546
+ END$SEGS
+TURNOUT N "Kato Unitrack Dbl Trk Single Crossover (left) 9.75 248mm 20-230"
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 1 5 6 7 4
+ E 0.000000 0.000000 270.000000
+ E 9.763779 0.000000 90.000000
+ E 0.000000 1.299212 270.000000
+ E 9.763779 1.299212 90.000000
+ S 0 0.000000 0.000000 0.000000 0.617287 0.000000
+ S 0 0.000000 0.617287 0.000000 9.763779 0.000000
+ S 0 0.000000 0.000000 1.299212 9.146492 1.299212
+ S 0 0.000000 9.146492 1.299212 9.763779 1.299212
+ C 0 0.000000 -14.226684 0.617306 14.226684 163.988842 16.011234
+ S 0 0.000000 4.541371 0.551886 5.222408 0.747326
+ C 0 0.000000 14.226684 9.146510 -12.927467 343.988842 16.011234
+ L 11579568 0.053333 0.000000 -0.445774 9.763799 -0.445774
+ L 11579568 0.053333 0.000000 1.744986 9.763799 1.744986
+ END$SEGS
+TURNOUT N "Kato Unitrack Dbl Trk Single Crossover (Right) 9.75 248mm 20-231"
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 3 5 6 7 2
+ E 0.000000 0.000000 270.000000
+ E 9.763799 0.000000 90.000000
+ E 0.000000 1.299212 270.000000
+ E 9.763799 1.299212 90.000000
+ S 0 0.000000 0.000000 0.000000 9.146512 0.000000
+ S 0 0.000000 9.146512 0.000000 9.763799 0.000000
+ S 0 0.000000 0.000000 1.299212 0.617287 1.299212
+ S 0 0.000000 0.617287 1.299212 9.763799 1.299212
+ C 0 0.000000 14.226749 0.617230 -12.927537 0.000076 16.011200
+ S 0 0.000000 4.541380 0.747326 5.222419 0.551886
+ C 0 0.000000 -14.226749 9.146530 14.226744 180.000076 16.011200
+ L 11579568 0.053333 0.000000 -0.445774 9.763799 -0.445774
+ L 11579568 0.053333 0.000000 1.744986 9.763799 1.744986
+ END$SEGS
+TURNOUT N "Kato Unitrack Crossing 15d X15R 20-301"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 7.322834 0.000000 90.000000
+ E 0.000000 0.964069 285.000000
+ E 7.322834 -0.964069 105.000000
+ S 0 0 0.000000 0.000000 7.322834 0.000000
+ S 0 0 0.000000 0.964069 7.322834 -0.964069
+ L 11579568 0.053333 3.71 0.492126 7.322834 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 3.62 -0.492126
+ L 11579568 0.053333 0.12 1.43 3.71 0.492126
+ L 11579568 0.053333 7.20 -1.43 3.62 -0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack Crossing 15d X15L 20-300"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 7.322834 0.000000 90.000000
+ E 0.000000 -0.964069 255.000000
+ E 7.322834 0.964069 75.000000
+ S 0 0 0.000000 0.000000 7.322834 0.000000
+ S 0 0 0.000000 -0.964069 7.322834 0.964069
+ L 11579568 0.053333 3.71 -0.492126 7.322834 -0.492126
+ L 11579568 0.053333 0.000000 0.492126 3.62 0.492126
+ L 11579568 0.053333 0.12 -1.43 3.71 -0.492126
+ L 11579568 0.053333 7.20 1.43 3.62 0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack Crossing 90d w/S45.5 20-320"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.881889 0.000000 90.000000
+ E 2.440944 2.440944 0.000000
+ E 2.440944 -2.440944 180.000000
+ S 0 0 0.000000 0.000000 4.881889 0.000000
+ S 0 0 2.440944 2.440944 2.440944 -2.440944
+ L 11579568 0.053333 0.000000 0.492126 1.967610 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 1.967610 -0.492126
+ L 11579568 0.053333 2.914278 0.492126 4.881889 0.492126
+ L 11579568 0.053333 2.914278 -0.492126 4.881889 -0.492126
+ L 11579568 0.053333 1.967610 -2.440944 1.967610 -0.500000
+ L 11579568 0.053333 2.914278 -2.440944 2.914278 -0.500000
+ L 11579568 0.053333 1.967610 2.440944 1.967610 0.500000
+ L 11579568 0.053333 2.914278 2.440944 2.914278 0.500000
+ END$SEGS
+TURNOUT N "Kato Unitrack Crossing 90d w/o S45.5 20-320"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 1.299212 0.000000 90.000000
+ E 0.649606 0.649606 0.000000
+ E 0.649606 -0.649606 180.000000
+ S 0 0 0.000000 0.000000 1.299212 0.000000
+ S 0 0 0.649606 0.649606 0.649606 -0.650000
+ L 11579568 0.053333 0.000000 0.492126 0.176272 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 0.176272 -0.492126
+ L 11579568 0.053333 1.122940 0.492126 1.299212 0.492126
+ L 11579568 0.053333 1.122940 -0.492126 1.299212 -0.492126
+ L 11579568 0.053333 0.176272 -0.649606 0.176272 -0.492126
+ L 11579568 0.053333 1.122940 -0.649606 1.122940 -0.492126
+ L 11579568 0.053333 0.176272 0.649606 0.176272 0.492126
+ L 11579568 0.053333 1.122940 0.649606 1.122940 0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack S45.5 (incl w/20-320) "
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.791339 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.791339 0.000000
+ L 11579568 0.053333 0.000000 0.492126 1.791339 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 1.791339 -0.492126
+ END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Kato Unitrack N-Scale Single Track Viaducts - Straights
+TURNOUT N "Kato Unitrack Viaduct Straight 9.75 248mm 20-400"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.763779 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.763779 0.000000
+ L 0 0.053333 0.000000 0.47334 9.763799 0.47334
+ L 0 0.053333 0.000000 -0.47334 9.763799 -0.47334
+ END$SEGS
+TURNOUT N "Kato Unitrack Viaduct Straight 7.312 186mm 20-410"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.322834 0.000000 90.000000
+ S 0 0 0.000000 0.000000 7.322834 0.000000
+ L 0 0.053333 0.000000 0.47334 7.322834 0.47334
+ L 0 0.053333 0.000000 -0.47334 7.322834 -0.47334
+ END$SEGS
+TURNOUT N "Kato Unitrack Viaduct Straight 4.875 124mm 20-420"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.881889 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.881889 0.000000
+ L 0 0.053333 0.000000 0.47334 4.881889 0.47334
+ L 0 0.053333 0.000000 -0.47334 4.881889 -0.47334
+ END$SEGS
+TURNOUT N "Kato Unitrack Viaduct Straight(Platform) 4.875 124mm 20-421"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.881889 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.881889 0.000000
+ L 0 0.053333 0.000000 0.47334 4.881889 0.47334
+ L 0 0.053333 0.000000 -0.47334 4.881889 -0.47334
+ L 0 0.040000 3.000000 -0.526440 3.000000 -0.826440
+ L 0 0.040000 3.000000 -0.826440 1.900000 -0.826440
+ L 0 0.040000 1.900000 -0.826440 1.900000 -0.526440
+ END$SEGS
+TURNOUT N "Kato Unitrack Viaduct Straight 2.4375 62mm 20-440"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.440944 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.440944 0.000000
+ L 0 0.053333 0.000000 0.47334 2.440944 0.47334
+ L 0 0.053333 0.000000 -0.47334 2.440944 -0.47334
+ END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Kato Unitrack N-Scale Single Track Viaducts - Curves
+TURNOUT N "Kato Unitrack Viaduct Curve 9.75R 249mm 45d Curve 20-505"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.931874 -2.871276 135.000000
+ C 0 0 9.803150 0.000000 -9.803150 0.000000 45.000000
+ A 0 0.053333 9.329810 0.000000 -9.803150 0.000000 45.000000
+ A 0 0.053333 10.276490 0.000000 -9.803150 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Viaduct Curve 11R 282mm 45d 20-510"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.850556 -3.251807 135.000000
+ C 0 0 11.102362 0.000000 -11.102362 0.000000 45.000000
+ A 0 0.053333 10.629022 0.000000 -11.102362 0.000000 45.000000
+ A 0 0.053333 11.575702 0.000000 -11.102362 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Viaduct Curve 12.375R 315mm 45d 20-520"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.769238 -3.632337 135.000000
+ C 0 0 12.401575 0.000000 -12.401575 0.000000 45.000000
+ A 0 0.053333 11.928235 0.000000 -12.401575 0.000000 45.000000
+ A 0 0.053333 12.874915 0.000000 -12.401575 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Viaduct Curve 13.75R 348mm 45d 20-530"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.687920 -4.012868 135.000000
+ C 0 0 13.700787 0.000000 -13.700787 0.000000 45.000000
+ A 0 0.053333 13.227447 0.000000 -13.700787 0.000000 45.000000
+ A 0 0.053333 14.174127 0.000000 -13.700787 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Viaduct Curve 13.75R 348mm 30d 20-531"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.850394 -1.835557 120.000000
+ C 0 0 13.700787 0.000000 -13.700787 0.000000 30.000000
+ A 0 0.053333 13.227447 0.000000 -13.700787 0.000000 30.000000
+ A 0 0.053333 14.174127 0.000000 -13.700787 0.000000 30.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack Viaduct Curve 15R 381mm 30d 20-540"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.500000 -2.009619 120.000000
+ C 0 0 15.000000 0.000000 -15.000000 0.000000 30.000000
+ A 0 0.053333 14.526660 0.000000 -15.000000 0.000000 30.000000
+ A 0 0.053333 15.473340 0.000000 -15.000000 0.000000 30.000000
+ END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Kato Unitrack N-Scale Double Track Viaducts - Straights
+TURNOUT N "Kato Unitrack Double Viaduct Straight 9.75 248mm 20-401"
+ P "Normal" 1 0 2
+ E 0.000000 0.649606 270.000000
+ E 9.763779 0.649606 90.000000
+ E 0.000000 -0.649606 270.000000
+ E 9.763779 -0.649606 90.000000
+ S 0 0 0.000000 0.649606 9.763779 0.649606
+ S 0 0 0.000000 -0.649606 9.763779 -0.649606
+ L 0 0.053333 0.000000 1.122946 9.763779 1.122946
+ L 0 0.053333 0.000000 -1.122946 9.763779 -1.122946
+ END$SEGS
+TURNOUT N "Kato Unitrack Double Viaduct Straight 7 5/16 186mm 20-411"
+ P "Normal" 1 0 2
+ E 0.000000 0.649606 270.000000
+ E 7.322834 0.649606 90.000000
+ E 0.000000 -0.649606 270.000000
+ E 7.322834 -0.649606 90.000000
+ S 0 0 0.000000 0.649606 7.322834 0.649606
+ S 0 0 0.000000 -0.649606 7.322834 -0.649606
+ L 0 0.053333 0.000000 1.122946 7.322834 1.122946
+ L 0 0.053333 0.000000 -1.122946 7.322834 -1.122946
+ END$SEGS
+TURNOUT N "Kato Unitrack Double Viaduct Straight 4.875 124mm 20-422"
+ P "Normal" 1 0 2
+ E 0.000000 0.649606 270.000000
+ E 4.881889 0.649606 90.000000
+ E 0.000000 -0.649606 270.000000
+ E 4.881889 -0.649606 90.000000
+ S 0 0 0.000000 0.649606 4.881889 0.649606
+ S 0 0 0.000000 -0.649606 4.881889 -0.649606
+ L 0 0.053333 0.000000 1.122946 4.881889 1.122946
+ L 0 0.053333 0.000000 -1.122946 4.881889 -1.122946
+ END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Kato Unitrack N-Scale CS Double Track Viaducts - Curves
+TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Viaduct Curve 16.3,15R 414/381mm 45d 20-544"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 10.606602 -4.393398 135.000000
+ E 0.000000 1.299213 270.000000
+ E 11.525284 -3.474716 135.000000
+ C 0 0 15.000000 0.000000 -15.000000 0.000000 45.000000
+ C 0 0 16.299213 0.000000 -15.000000 0.000000 45.000000
+ A 0 0.053333 14.526660 0.000000 -15.000000 0.000000 45.000000
+ A 0 0.053333 16.772553 0.000000 -15.000000 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Viaduct Easement Curve (R) Appr 16.3/15R 414/381mm 22.5d 20-545 Right"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 6.237438 -1.240704 112.500000
+ E 0.000000 -1.299212 270.000000
+ E 5.740251 -2.441019 112.500000
+ C 0 0 16.299212 0.000000 -16.299212 0.000000 22.500000
+ C 0 0 15.000000 0.000000 -16.299212 0.000000 22.500000
+ A 11579568 0.053333 16.744986 0.000000 -16.299212 0.000000 22.500000
+ A 11579568 0.053333 14.554226 0.000000 -16.299212 0.000000 22.500000
+ END$SEGS
+TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Viaduct Easement Curve (L) Appr 16.3/15R 414/381mm 22.5d 20-545 Left"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 6.237438 -1.240704 112.500000
+ E 0.000000 -1.299212 270.000000
+ E 5.740251 -2.441019 112.500000
+ C 0 0 16.299212 0.000000 -16.299212 0.000000 22.500000
+ C 0 0 15.000000 0.000000 -16.299212 0.000000 22.500000
+ A 11579568 0.053333 16.744986 0.000000 -16.299212 0.000000 22.500000
+ A 11579568 0.053333 14.554226 0.000000 -16.299212 0.000000 22.500000
+ END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Kato Unitrack N-Scale GL CS Double Track - Straights
+TURNOUT N "Kato Unitrack CS Dbl Trk Straight 9.75 248mm 20-004"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 9.763799 0.000000 90.000000
+ E 0.000000 -1.299212 270.000000
+ E 9.763799 -1.299212 90.000000
+ S 0 0 0.000000 0.000000 9.763799 0.000000
+ S 0 0 0.000000 -1.299212 9.763799 -1.299212
+ L 11579568 0.053333 0.000000 0.492126 9.763799 0.492126
+ L 11579568 0.053333 0.000000 -1.744986 9.763799 -1.744986
+ END$SEGS
+TURNOUT N "Kato Unitrack CS Dbl Trk Straight 7 5/16 186mm 20-012"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 7.322834 0.000000 90.000000
+ E 0.000000 -1.299212 270.000000
+ E 7.322834 -1.299212 90.000000
+ S 0 0 0.000000 0.000000 7.322834 0.000000
+ S 0 0 0.000000 -1.299212 7.322834 -1.299212
+ L 11579568 0.053333 0.000000 0.492126 7.322834 0.492126
+ L 11579568 0.053333 0.000000 -1.744986 7.322834 -1.744986
+ END$SEGS
+TURNOUT N "Kato Unitrack CS Dbl Trk Straight 4 7/8 124mm 20-023"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.881889 0.000000 90.000000
+ E 0.000000 -1.299212 270.000000
+ E 4.881889 -1.299212 90.000000
+ S 0 0 0.000000 0.000000 4.881889 0.000000
+ S 0 0 0.000000 -1.299212 4.881889 -1.299212
+ L 11579568 0.053333 0.000000 0.492126 4.881889 0.492126
+ L 11579568 0.053333 0.000000 -1.744986 4.881889 -1.744986
+ END$SEGS
+TURNOUT N "Kato Unitrack CS Dbl Trk Straight 2 7/16 62mm 20-042"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 2.440944 0.000000 90.000000
+ E 0.000000 -1.299212 270.000000
+ E 2.440944 -1.299212 90.000000
+ S 0 0 0.000000 0.000000 2.440944 0.000000
+ S 0 0 0.000000 -1.299212 2.440944 -1.299212
+ L 11579568 0.053333 0.000000 0.492126 2.440944 0.492126
+ L 11579568 0.053333 0.000000 -1.744986 2.440944 -1.744986
+ END$SEGS
+TURNOUT N "Kato Unitrack CS Dbl Trk Feeder Track 62mm 20.043"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 2.440944 0.000000 90.000000
+ E 0.000000 -1.299212 270.000000
+ E 2.440944 -1.299212 90.000000
+ S 0 0 0.000000 0.000000 2.440944 0.000000
+ S 0 0 0.000000 -1.299212 2.440944 -1.299212
+ L 11579568 0.053333 0.000000 0.492126 2.440944 0.492126
+ L 11579568 0.053333 0.000000 -1.744986 2.440944 -1.744986
+ L 0 0.026667 2.000000 -1.798086 2.000000 -1.998086
+ L 0 0.026667 2.000000 -1.998086 2.100000 -2.098086
+ L 0 0.026667 2.000000 -1.998086 1.900000 -2.098086
+ L 16711680 0.026667 1.800000 -1.798086 1.800000 -1.998086
+ L 16711680 0.026667 1.800000 -1.998086 1.900000 -2.098086
+ L 16711680 0.026667 1.800000 -1.998086 1.700000 -2.098086
+ END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Kato Unitrack N-Scale GL CS Double Track - Curves
+TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Curve 16.3/15R 414/381mm 45d 20-181"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 11.525283 -4.773929 135.000000
+ E 0.000000 -1.299212 270.000000
+ E 10.606602 -5.692610 135.000000
+ C 0 0 16.299212 0.000000 -16.299212 0.000000 45.000000
+ C 0 0 15.000000 0.000000 -16.299212 0.000000 45.000000
+ A 11579568 0.053333 16.744986 0.000000 -16.299212 0.000000 45.000000
+ A 11579568 0.053333 14.554226 0.000000 -16.299212 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Easement Curve (R) Appr 16.3/15R 414/381mm 22.5d 20-182 Right"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 6.237438 -1.240704 112.500000
+ E 0.000000 -1.299212 270.000000
+ E 5.740251 -2.441019 112.500000
+ C 0 0 16.299212 0.000000 -16.299212 0.000000 22.500000
+ C 0 0 15.000000 0.000000 -16.299212 0.000000 22.500000
+ A 11579568 0.053333 16.744986 0.000000 -16.299212 0.000000 22.500000
+ A 11579568 0.053333 14.554226 0.000000 -16.299212 0.000000 22.500000
+ END$SEGS
+TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Easement Curve (L) Appr 16.3/15R 414/381mm 22.5d 20-182 Left"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 6.237438 -1.240704 112.500000
+ E 0.000000 -1.299212 270.000000
+ E 5.740251 -2.441019 112.500000
+ C 0 0 16.299212 0.000000 -16.299212 0.000000 22.500000
+ C 0 0 15.000000 0.000000 -16.299212 0.000000 22.500000
+ A 11579568 0.053333 16.744986 0.000000 -16.299212 0.000000 22.500000
+ A 11579568 0.053333 14.554226 0.000000 -16.299212 0.000000 22.500000
+ END$SEGS
+TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Curve 12.375/11R 315/282mm 45d 20-183"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 0.000000 -1.299212 270.000000
+ E 8.769238 -3.632337 135.000000
+ E 7.850556 -4.551019 135.000000
+ C 0 0 12.401575 0.000000 -12.401575 0.000000 45.000000
+ C 0 0 11.102362 0.000000 -12.401575 0.000000 45.000000
+ A 11579568 0.053333 12.847349 0.000000 -12.401575 0.000000 45.000000
+ A 11579568 0.053333 10.656588 0.000000 -12.401575 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Easement Curve 12.375/11R 315/282mm 22.5d 20-184 Right"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 0.000000 -1.299212 270.000000
+ E 4.745877 -0.944014 112.500000
+ E 4.248690 -2.144330 112.500000
+ C 0 0 12.401575 0.000000 -12.401575 0.000000 22.500000
+ C 0 0 11.102362 0.000000 -12.401575 0.000000 22.500000
+ A 11579568 0.053333 12.847349 0.000000 -12.401575 0.000000 22.500000
+ A 11579568 0.053333 10.656588 0.000000 -12.401575 0.000000 22.500000
+ END$SEGS
+TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Easement Curve 12.375/11R 315/282mm 22.5d 20-184 Left"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 0.000000 -1.299212 270.000000
+ E 4.745877 -0.944014 112.500000
+ E 4.248690 -2.144330 112.500000
+ C 0 0 12.401575 0.000000 -12.401575 0.000000 22.500000
+ C 0 0 11.102362 0.000000 -12.401575 0.000000 22.500000
+ A 11579568 0.053333 12.847349 0.000000 -12.401575 0.000000 22.500000
+ A 11579568 0.053333 10.656588 0.000000 -12.401575 0.000000 22.500000
+ END$SEGS
+TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Curve 18.875/17.625R 480/447mm 45d 20-185"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 13.362648 -5.534990 135.000000
+ E 0.000000 -1.299212 270.000000
+ E 12.443966 -6.453672 135.000000
+ C 0 0 18.897638 0.000000 -18.897638 0.000000 45.000000
+ C 0 0 17.598425 0.000000 -18.897638 0.000000 45.000000
+ A 11579568 0.053333 19.343412 0.000000 -18.897638 0.000000 45.000000
+ A 11579568 0.053333 17.152651 0.000000 -18.897638 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Easement Curve (R) Appr 18.875/17.625R 480/447mm 22.5d 20-186 Right"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 7.231813 -1.438497 112.500000
+ E 0.000000 -1.299212 270.000000
+ E 6.734626 -2.638813 112.500000
+ C 0 0 18.897638 0.000000 -18.897638 0.000000 22.500000
+ C 0 0 17.598425 0.000000 -18.897638 0.000000 22.500000
+ A 11579568 0.053333 19.343412 0.000000 -18.897638 0.000000 22.500000
+ A 11579568 0.053333 17.152651 0.000000 -18.897638 0.000000 22.500000
+ END$SEGS
+TURNOUT N "Kato Unitrack CS Dbl Trk SupElev Easement Curve (L) Appr 18.875/17.625R 480/447mm 22.5d 20-186 Left"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 7.231813 -1.438497 112.500000
+ E 0.000000 -1.299212 270.000000
+ E 6.734626 -2.638813 112.500000
+ C 0 0 18.897638 0.000000 -18.897638 0.000000 22.500000
+ C 0 0 17.598425 0.000000 -18.897638 0.000000 22.500000
+ A 11579568 0.053333 19.343412 0.000000 -18.897638 0.000000 22.500000
+ A 11579568 0.053333 17.152651 0.000000 -18.897638 0.000000 22.500000
+ END$SEGS
+
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Kato Unitrack N-Scale V-15 Double Track Widening Sections
+TURNOUT N "Kato Unitrack CS Dbl Trk Widening Section 310mm 20-051 Left"
+ P "Normal" 1 0 2 3 4 5 6
+ E 0.000000 0.000000 270.000000
+ E 12.204724 0.000000 90.000000
+ E 0.000000 1.299212 270.000000
+ E 12.204724 2.598425 90.000000
+ S 0 0 0.000000 0.000000 12.204724 0.000000
+ S 0 0 0.000000 1.299212 0.980334 1.299212
+ C 0 0 -17.598425 0.980334 18.897637 169.500000 10.500000
+ S 0 0 4.187392 1.593899 8.017332 2.303737
+ C 0 0 17.598425 11.224390 -15.000001 349.500000 10.500000
+ S 0 0 11.224390 2.598425 12.204724 2.598425
+ L 11579568 0.053333 0.000000 -0.492126 12.204724 -0.492126
+ L 11579568 0.053333 0.000000 1.744986 0.980334 1.744986
+ A 11579568 0.053333 17.152651 0.980334 18.897637 169.500000 10.500000
+ L 11579568 0.053333 4.187392 2.039673 8.017332 2.749511
+ A 11579568 0.053333 18.044199 11.224390 -15.000001 349.500000 10.500000
+ L 11579568 0.053333 11.224390 3.044199 12.204724 3.044199
+ L 11579568 0.053333 11.704724 0.492126 12.204724 0.492126
+ L 11579568 0.053333 11.704724 0.492126 11.704724 2.152651
+ L 11579568 0.053333 11.704724 2.152651 12.204724 2.152651
+ END$SEGS
+TURNOUT N "Kato Unitrack CS Dbl Trk Widening Section 310mm 20-052 Right"
+ P "Normal" 1 0 2 3 4 5 6
+ E 0.000000 0.000000 270.000000
+ E 12.204724 0.000000 90.000000
+ E 0.000000 -1.299212 270.000000
+ E 12.204724 -2.598425 90.000000
+ S 0 0 0.000000 0.000000 12.204724 0.000000
+ S 0 0 0.000000 -1.299212 0.980334 -1.299212
+ C 0 0 17.598425 0.980334 -18.897637 0.000000 10.500000
+ S 0 0 4.187392 -1.593899 8.017332 -2.303737
+ C 0 0 -17.598425 11.224390 15.000001 180.000000 10.500000
+ S 0 0 11.224390 -2.598425 12.204724 -2.598425
+ L 11579568 0.053333 0.000000 0.492126 12.204724 0.492126
+ L 11579568 0.053333 0.000000 -1.744986 0.980334 -1.744986
+ A 11579568 0.053333 17.152651 0.980334 -18.897637 0.000000 10.500000
+ L 11579568 0.053333 4.187392 -2.039673 8.017332 -2.749511
+ A 11579568 0.053333 18.044199 11.224390 15.000001 180.000000 10.500000
+ L 11579568 0.053333 11.224390 -3.044199 12.204724 -3.044199
+ L 11579568 0.053333 11.704724 -0.492126 12.204724 -0.492126
+ L 11579568 0.053333 11.704724 -0.492126 11.704724 -2.152651
+ L 11579568 0.053333 11.704724 -2.152651 12.204724 -2.152651
+ END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Kato Unitrack N-Scale Conc Sleeper Straight Track
+TURNOUT N "Kato Unitrack CS Trk Straight 9.75 248mm 20-875"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.763779 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.763779 0.000000
+ L 11579568 0.053333 0.000000 0.492126 9.763779 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 9.763779 -0.492126
+ END$SEGS
+TURNOUT N "Kato Unitrack CS Trk Straight 4 7/8 124mm 20-XXX"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.881889 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.881889 0.000000
+ L 11579568 0.053333 0.000000 0.492126 4.881889 0.492126
+ L 11579568 0.053333 0.000000 -0.492126 4.881889 -0.492126
+ END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Kato Unitrack N-Scale Bridges
+TURNOUT N "Kato Unitrack Dbl. Track Truss Bridge 9.75 248mm 20-435/6/7/8/9"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 9.763779 0.000000 90.000000
+ E 0.000000 -1.299212 270.000000
+ E 9.763779 -1.299212 90.000000
+ S 0 0 0.000000 0.000000 9.763779 0.000000
+ S 0 0 0.000000 -1.299212 9.763779 -1.299212
+ L 0 0.053333 0.000000 0.47334 9.763779 0.47334
+ L 0 0.053333 0.000000 -1.772552 9.763779 -1.772552
+ L 0 0.053333 1.220474 -1.772552 1.220474 0.47334
+ L 0 0.053333 1.220474 -1.772552 2.440948 0.47334
+ L 0 0.053333 2.440948 -1.772552 1.220474 0.47334
+ L 0 0.053333 2.440948 -1.772552 2.440948 0.47334
+ L 0 0.053333 2.440948 -1.772552 3.661422 0.47334
+ L 0 0.053333 3.661422 -1.772552 2.440948 0.47334
+ L 0 0.053333 3.661422 -1.772552 3.661422 0.47334
+ L 0 0.053333 3.661422 -1.772552 4.881896 0.47334
+ L 0 0.053333 4.881896 -1.772552 3.661422 0.47334
+ L 0 0.053333 4.881896 -1.772552 4.881896 0.47334
+ L 0 0.053333 4.881896 -1.772552 6.102370 0.47334
+ L 0 0.053333 6.102370 -1.772552 4.881896 0.47334
+ L 0 0.053333 6.102370 -1.772552 6.102370 0.47334
+ L 0 0.053333 6.102370 -1.772552 7.322844 0.47334
+ L 0 0.053333 7.322844 -1.772552 6.102370 0.47334
+ L 0 0.053333 7.322844 -1.772552 7.322844 0.47334
+ L 0 0.053333 7.322844 -1.772552 8.543318 0.47334
+ L 0 0.053333 8.543318 -1.772552 7.322844 0.47334
+ L 0 0.053333 8.543318 -1.772552 8.543318 0.47334
+ END$SEGS
+TURNOUT N "Kato Unitrack Single Track Truss Bridge 9.75 248mm 20-430/1/2/3/4"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.763779 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.763779 0.000000
+ L 0 0.053333 0.000000 0.47334 9.763779 0.47334
+ L 0 0.053333 0.000000 -0.47334 9.763779 -0.47334
+ L 0 0.053333 1.220474 -0.47334 1.220474 0.47334
+ L 0 0.053333 1.220474 -0.47334 2.440948 0.47334
+ L 0 0.053333 2.440948 -0.47334 1.220474 0.47334
+ L 0 0.053333 2.440948 -0.47334 2.440948 0.47334
+ L 0 0.053333 2.440948 -0.47334 3.661422 0.47334
+ L 0 0.053333 3.661422 -0.47334 2.440948 0.47334
+ L 0 0.053333 3.661422 -0.47334 3.661422 0.47334
+ L 0 0.053333 3.661422 -0.47334 4.881896 0.47334
+ L 0 0.053333 4.881896 -0.47334 3.661422 0.47334
+ L 0 0.053333 4.881896 -0.47334 4.881896 0.47334
+ L 0 0.053333 4.881896 -0.47334 6.102370 0.47334
+ L 0 0.053333 6.102370 -0.47334 4.881896 0.47334
+ L 0 0.053333 6.102370 -0.47334 6.102370 0.47334
+ L 0 0.053333 6.102370 -0.47334 7.322844 0.47334
+ L 0 0.053333 7.322844 -0.47334 6.102370 0.47334
+ L 0 0.053333 7.322844 -0.47334 7.322844 0.47334
+ L 0 0.053333 7.322844 -0.47334 8.543318 0.47334
+ L 0 0.053333 8.543318 -0.47334 7.322844 0.47334
+ L 0 0.053333 8.543318 -0.47334 8.543318 0.47334
+ END$SEGS
+TURNOUT N "Kato Unitrack Single Track Plate Grider Bridge 7 5/16 186mm 20-450/1/2/3/4"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.322834 0.000000 90.000000
+ S 0 0 0.000000 0.000000 7.322834 0.000000
+ L 0 0.053333 0.000000 0.47334 7.322834 0.47334
+ L 0 0.053333 0.000000 -0.47334 7.322834 -0.47334
+ END$SEGS
+TURNOUT N "Kato Unitrack Double Track Plate Grider Bridge 7 5/16 186mm 20-455/6/7/8"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 7.322834 0.000000 90.000000
+ E 0.000000 -1.299212 270.000000
+ E 7.322834 -1.299212 90.000000
+ S 0 0 0.000000 0.000000 7.322834 0.000000
+ S 0 0 0.000000 -1.299212 7.322834 -1.299212
+ L 0 0.053333 0.000000 0.47334 7.322834 0.47334
+ L 0 0.053333 0.000000 -0.649606 7.322834 -0.649606
+ L 0 0.053333 0.000000 -1.772552 7.322834 -1.772552
+ END$SEGS
+TURNOUT N "Kato Unitrack Deck Plate Grider Bridge 4 7/8 124mm 20-460/1/2/3/4"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.881889 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.881889 0.000000
+ L 0 0.053333 0.000000 0.47334 4.881889 0.47334
+ L 0 0.053333 0.000000 -0.47334 4.881889 -0.47334
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve Deck Plate Grider Bridge 17 5/8 448mm 15d 20-465/6/7/8"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.564997 -0.600993 105.000000
+ C 0 0 17.637795 0.000000 -17.637795 0.000000 15.000000
+ L3 0 0.020000 0.000000 0.492126 0 4.692369 -0.125636 0
+ L3 0 0.020000 0.000000 -0.492126 0 4.437626 -1.076350 0
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve Deck Plate Grider Bridge 481mm 15d 20-470/1/2/3"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.901258 -0.645263 105.000000
+ C 0 0 18.937008 0.000000 -18.937008 0.000000 15.000000
+ L3 0 0.020000 0.000000 0.492126 0 5.028630 -0.169906 0
+ L3 0 0.020000 0.000000 -0.492126 0 4.773887 -1.120620 0
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve Iron Bridge Set 448mm 60d(Green) 20-823"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 15.274778 -8.818896 150.000000
+ C 0 0.000000 17.637795 0.000000 -17.637795 0.000000 60.000000
+ L3 0 0.020000 0.000000 0.492126 0 4.692369 -0.125636 0
+ L3 0 0.020000 0.000000 -0.492126 0 4.437626 -1.076350 0
+ L3 0 0.020000 4.692369 -0.125636 0 9.064960 -1.936823 0
+ L3 0 0.020000 4.437625 -1.076350 0 8.572835 -2.789209 0
+ L3 0 0.020000 9.064960 -1.936822 0 12.819790 -4.818004 0
+ L3 0 0.020000 8.572834 -2.789209 0 12.123819 -5.513975 0
+ L3 0 0.020000 12.819790 -4.818004 0 15.700972 -8.572834 0
+ L3 0 0.020000 12.123818 -5.513975 0 14.848585 -9.064959 0
+ END$SEGS
+TURNOUT N "Kato Unitrack Curve Iron Bridge Set 481mm 60d(Red) 20-824"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 16.399929 -9.468504 150.000000
+ C 0 0.000000 18.937008 0.000000 -18.937008 0.000000 60.000000
+ L3 0 0.020000 0.000000 0.492126 0 5.028630 -0.169906 0
+ L3 0 0.020000 0.000000 -0.492126 0 4.773887 -1.120620 0
+ L3 0 0.020000 5.028630 -0.169906 0 9.714567 -2.110885 0
+ L3 0 0.020000 4.773886 -1.120620 0 9.222441 -2.963272 0
+ L3 0 0.020000 9.714566 -2.110884 0 13.738472 -5.198536 0
+ L3 0 0.020000 9.222440 -2.963272 0 13.042501 -5.894507 0
+ L3 0 0.020000 13.738471 -5.198536 0 16.826122 -9.222441 0
+ L3 0 0.020000 13.042500 -5.894507 0 15.973736 -9.714567 0
+ END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Kato Unitrack N-Scale Structures
+STRUCTURE N "Kato Unitrack Pier 23-015"
+ X pier 0.590551 "1" 0.984251 "2" 1.377952 "3" 1.771653 "4" 1.968503 "5"
+ L 0 0.000000 -0.250000 -0.5 0.250000 -0.5
+ L 0 0.000000 0.250000 -0.5 0.250000 0.5
+ L 0 0.000000 0.250000 0.5 -0.250000 0.5
+ L 0 0.000000 -0.250000 0.5 -0.250000 -0.5
+ A 0 0.000000 0.250000 -0.000000 0.50000 270.000000 180.000000
+ A 0 0.000000 0.250000 -0.000000 -0.50000 90.000000 180.000000
+ END$SEGS
+STRUCTURE N "Kato Unitrack Pier 23-016"
+ X pier 1.968503 "5"
+ L 7368826 0.040000 -0.75 -0.6 0.75 -0.6
+ L 7368826 0.040000 0.75 -0.6 0.75 1.899212
+ L 7368826 0.040000 0.75 1.899212 -0.75 1.899212
+ L 7368826 0.040000 -0.75 1.899212 -0.75 -0.6
+ END$SEGS
+STRUCTURE N "Kato Unitrack Island Platform Type A 23-100"
+ L 10824234 0.000000 0.000000 0.000000 0.000000 1.653543
+ L 10824234 0.000000 0.000000 1.653543 9.763780 1.653543
+ L 10824234 0.000000 9.763780 1.653543 9.763780 0.000000
+ L 10824234 0.000000 9.763780 0.000000 0.000000 0.000000
+ L 10824234 0.000000 0.000000 0.826772 9.763780 0.826772
+ L 10824234 0.000000 0.787402 1.141732 5.157480 1.141732
+ L 10824234 0.000000 5.157480 1.141732 5.157480 0.511811
+ L 10824234 0.000000 5.157480 0.511811 0.787402 0.511811
+ L 10824234 0.000000 0.787402 0.511811 0.787402 1.141732
+ L 10824234 0.000000 2.952756 1.141732 2.952756 0.511811
+ L 10824234 0.000000 0.078740 1.653543 0.078740 0.866142
+ L 10824234 0.000000 0.157480 1.653543 0.157480 0.984252
+ L 10824234 0.000000 0.236220 1.653543 0.236220 1.102362
+ L 10824234 0.000000 0.314961 1.653543 0.314961 1.220472
+ L 10824234 0.000000 0.393701 1.653543 0.393701 1.299213
+ L 10824234 0.000000 0.472441 1.653543 0.472441 1.377953
+ L 10824234 0.000000 0.551181 1.653543 0.551181 1.496063
+ L 10824234 0.000000 0.629921 1.653543 0.629921 1.614173
+ L 10824234 0.000000 9.685039 0.000000 9.685039 0.787402
+ L 10824234 0.000000 9.606299 0.000000 9.606299 0.669291
+ L 10824234 0.000000 9.527559 0.000000 9.527559 0.551181
+ L 10824234 0.000000 9.448819 0.000000 9.448819 0.433071
+ L 10824234 0.000000 9.370079 0.000000 9.370079 0.354331
+ L 10824234 0.000000 9.291339 0.000000 9.291339 0.236220
+ L 10824234 0.000000 9.212598 0.000000 9.212598 0.157480
+ L 10824234 0.000000 9.133858 0.000000 9.133858 0.039370
+ END$SEGS
+STRUCTURE N "Kato Unitrack Island Platform Type B 23-101"
+ L 10824234 0.000000 0.000000 0.000000 0.000000 1.653543
+ L 10824234 0.000000 0.000000 1.653543 9.763780 1.653543
+ L 10824234 0.000000 9.763780 1.653543 9.763780 0.000000
+ L 10824234 0.000000 9.763780 0.000000 0.000000 0.000000
+ L 10824234 0.000000 0.000000 0.826772 9.763780 0.826772
+ L 10824234 0.000000 0.787402 1.141732 5.157480 1.141732
+ L 10824234 0.000000 5.157480 1.141732 5.157480 0.511811
+ L 10824234 0.000000 5.157480 0.511811 0.787402 0.511811
+ L 10824234 0.000000 0.787402 0.511811 0.787402 1.141732
+ L 10824234 0.000000 2.952756 1.141732 2.952756 0.511811
+ L 10824234 0.000000 0.078740 1.653543 0.078740 0.866142
+ L 10824234 0.000000 0.157480 1.653543 0.157480 0.984252
+ L 10824234 0.000000 0.236220 1.653543 0.236220 1.102362
+ L 10824234 0.000000 0.314961 1.653543 0.314961 1.220472
+ L 10824234 0.000000 0.393701 1.653543 0.393701 1.299213
+ L 10824234 0.000000 0.472441 1.653543 0.472441 1.377953
+ L 10824234 0.000000 0.551181 1.653543 0.551181 1.496063
+ L 10824234 0.000000 0.629921 1.653543 0.629921 1.614173
+ L 10824234 0.000000 9.685039 0.000000 9.685039 0.787402
+ L 10824234 0.000000 9.606299 0.000000 9.606299 0.669291
+ L 10824234 0.000000 9.527559 0.000000 9.527559 0.551181
+ L 10824234 0.000000 9.448819 0.000000 9.448819 0.433071
+ L 10824234 0.000000 9.370079 0.000000 9.370079 0.354331
+ L 10824234 0.000000 9.291339 0.000000 9.291339 0.236220
+ L 10824234 0.000000 9.212598 0.000000 9.212598 0.157480
+ L 10824234 0.000000 9.133858 0.000000 9.133858 0.039370
+ END$SEGS
+STRUCTURE N "Kato Unitrack Island Platform END$SEGS, Type 1 23-102"
+ L 10824234 0.000000 0.000000 0.000000 0.000000 1.653543
+ L 10824234 0.000000 0.000000 0.000000 7.874016 0.000000
+ L 10824234 0.000000 7.874016 0.000000 7.874016 1.653543
+ L 10824234 0.000000 7.874016 1.653543 0.000000 1.653543
+ L 10824234 0.000000 0.787402 1.653543 0.787402 0.000000
+ L 10824234 0.000000 0.787402 0.629921 0.196850 0.629921
+ L 10824234 0.000000 0.196850 0.629921 0.196850 0.984252
+ L 10824234 0.000000 0.196850 0.984252 0.787402 0.984252
+ L 10824234 0.000000 0.787402 0.984252 0.787402 0.629921
+ L 10824234 0.000000 0.669291 0.629921 0.669291 0.984252
+ L 10824234 0.000000 0.551181 0.629921 0.551181 0.984252
+ L 10824234 0.000000 0.433071 0.629921 0.433071 0.984252
+ L 10824234 0.000000 0.314961 0.629921 0.314961 0.984252
+ L 0 0.026667 0.866142 1.614173 0.866142 0.039370
+ A 0 0.026667 0.141951 5.196850 0.826772 0.000000 360.000000
+ L 0 0.000000 3.031496 0.944882 4.606299 0.944882
+ L 0 0.000000 4.606299 0.944882 4.606299 0.708661
+ L 0 0.000000 4.606299 0.708661 3.031496 0.708661
+ L 0 0.000000 3.031496 0.708661 3.031496 0.944882
+ L 0 0.066667 3.543307 0.826772 4.094488 0.826772
+ END$SEGS
+STRUCTURE N "Kato Unitrack Island Platform END$SEGS, Type 2 23-103"
+ L 10824234 0.000000 7.874016 0.000000 7.874016 1.653543
+ L 10824234 0.000000 7.874016 1.653543 0.000000 1.653543
+ A 0 0.026667 0.141951 5.196850 0.826772 0.000000 360.000000
+ L 0 0.000000 3.031496 0.944882 4.606299 0.944882
+ L 0 0.000000 4.606299 0.944882 4.606299 0.708661
+ L 0 0.000000 4.606299 0.708661 3.031496 0.708661
+ L 0 0.000000 3.031496 0.708661 3.031496 0.944882
+ L 0 0.066667 3.543307 0.826772 4.094488 0.826772
+ A 10824234 0.000000 27.822226 7.874016 27.822226 180.000000 15.000000
+ L 0 0.026667 0.866142 1.614173 0.866142 1.023622
+ L 10824234 0.000000 0.196850 1.535433 0.196850 1.299213
+ L 10824234 0.000000 0.669291 1.535433 0.669291 1.299213
+ L 10824234 0.000000 0.551181 1.535433 0.551181 1.299213
+ L 10824234 0.000000 0.433071 1.535433 0.433071 1.299213
+ L 10824234 0.000000 0.314961 1.535433 0.314961 1.299213
+ L 10824234 0.000000 0.196667 1.295000 0.670000 1.298333
+ L 10824234 0.000000 0.193333 1.535000 0.670000 1.535000
+ L 10824234 0.000000 0.670000 1.535000 0.670000 1.651667
+ L 10824234 0.000000 0.670000 1.295833 0.670000 0.949167
+ L 10824234 0.000000 0.673333 0.946667 0.000000 1.126667
+ L 10824234 0.000000 0.006667 1.125000 0.000000 1.645000
+ END$SEGS
+STRUCTURE N "Kato Unitrack Island Platform END$SEGS, Type 3 23-104"
+ L 10824234 0.000000 0.000000 0.000000 0.000000 1.653543
+ L 10824234 0.000000 0.000000 1.653543 7.874016 1.653543
+ A 0 0.026667 0.141951 2.677166 0.826772 0.000000 360.000000
+ L 0 0.000000 4.842520 0.944882 3.267717 0.944882
+ L 0 0.000000 3.267717 0.944882 3.267717 0.708661
+ L 0 0.000000 3.267717 0.708661 4.842520 0.708661
+ L 0 0.000000 4.842520 0.708661 4.842520 0.944882
+ L 0 0.066667 4.330709 0.826772 3.779528 0.826772
+ A 10824234 0.000000 27.822226 0.000000 27.822226 165.000000 15.000000
+ L 0 0.026667 7.007874 1.614173 7.007874 1.023622
+ L 10824234 0.000000 7.677166 1.535433 7.677166 1.299213
+ L 10824234 0.000000 7.204725 1.535433 7.204725 1.299213
+ L 10824234 0.000000 7.322835 1.535433 7.322835 1.299213
+ L 10824234 0.000000 7.440945 1.535433 7.440945 1.299213
+ L 10824234 0.000000 7.559055 1.535433 7.559055 1.299213
+ L 10824234 0.000000 7.677349 1.295000 7.204016 1.298333
+ L 10824234 0.000000 7.680683 1.535000 7.204016 1.535000
+ L 10824234 0.000000 7.204016 1.535000 7.204016 1.651667
+ L 10824234 0.000000 7.204016 1.295833 7.204016 0.949167
+ L 10824234 0.000000 7.200683 0.946667 7.874016 1.126667
+ L 10824234 0.000000 7.867349 1.125000 7.874016 1.645000
+ END$SEGS
+STRUCTURE N "Kato Unitrack Island Platform Type D 23-106"
+ L 10824234 0 0.000000 0.000000 0.000000 1.653543
+ L 10824234 0 0.000000 1.653543 9.763780 1.653543
+ L 10824234 0 9.763780 1.653543 9.763780 0.000000
+ L 10824234 0 9.763780 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE N "Kato Unitrack One Sided Platform Type A 23-110"
+ L 10824234 0.000000 0.000000 0.000000 0.000000 1.653543
+ L 10824234 0.000000 0.000000 1.653543 9.763780 1.653543
+ L 10824234 0.000000 9.763780 1.653543 9.763780 0.000000
+ L 10824234 0.000000 9.763780 0.000000 0.000000 0.000000
+ L 10824234 0.000000 5.157480 1.141732 5.157480 0.511811
+ L 10824234 0.000000 0.078740 1.653543 0.078740 0.866142
+ L 10824234 0.000000 0.157480 1.653543 0.157480 0.984252
+ L 10824234 0.000000 0.236220 1.653543 0.236220 1.102362
+ L 10824234 0.000000 0.314961 1.653543 0.314961 1.220472
+ L 10824234 0.000000 0.393701 1.653543 0.393701 1.299213
+ L 10824234 0.000000 0.472441 1.653543 0.472441 1.377953
+ L 10824234 0.000000 0.551181 1.653543 0.551181 1.496063
+ L 10824234 0.000000 0.629921 1.653543 0.629921 1.614173
+ L 10824234 0.000000 9.685039 0.000000 9.685039 0.787402
+ L 10824234 0.000000 9.606299 0.000000 9.606299 0.669291
+ L 10824234 0.000000 9.527559 0.000000 9.527559 0.551181
+ L 10824234 0.000000 9.448819 0.000000 9.448819 0.433071
+ L 10824234 0.000000 9.370079 0.000000 9.370079 0.354331
+ L 10824234 0.000000 9.291339 0.000000 9.291339 0.236220
+ L 10824234 0.000000 9.212598 0.000000 9.212598 0.157480
+ L 10824234 0.000000 9.133858 0.000000 9.133858 0.039370
+ L 10824234 0.000000 1.181102 1.141732 8.582677 1.141732
+ L 10824234 0.000000 8.582677 1.141732 8.582677 0.511811
+ L 10824234 0.000000 8.582677 0.511811 1.181102 0.511811
+ L 10824234 0.000000 1.181102 0.511811 1.181102 1.141732
+ END$SEGS
+STRUCTURE N "Kato Unitrack One Sided Platform Type B 23-111"
+ L 10824234 0.000000 0.000000 0.000000 0.000000 1.653543
+ L 10824234 0.000000 0.000000 1.653543 9.763780 1.653543
+ L 10824234 0.000000 9.763780 1.653543 9.763780 0.000000
+ L 10824234 0.000000 9.763780 0.000000 0.000000 0.000000
+ L 10824234 0.000000 5.157480 1.141732 5.157480 0.511811
+ L 10824234 0.000000 0.078740 1.653543 0.078740 0.866142
+ L 10824234 0.000000 0.157480 1.653543 0.157480 0.984252
+ L 10824234 0.000000 0.236220 1.653543 0.236220 1.102362
+ L 10824234 0.000000 0.314961 1.653543 0.314961 1.220472
+ L 10824234 0.000000 0.393701 1.653543 0.393701 1.299213
+ L 10824234 0.000000 0.472441 1.653543 0.472441 1.377953
+ L 10824234 0.000000 0.551181 1.653543 0.551181 1.496063
+ L 10824234 0.000000 0.629921 1.653543 0.629921 1.614173
+ L 10824234 0.000000 9.685039 0.000000 9.685039 0.787402
+ L 10824234 0.000000 9.606299 0.000000 9.606299 0.669291
+ L 10824234 0.000000 9.527559 0.000000 9.527559 0.551181
+ L 10824234 0.000000 9.448819 0.000000 9.448819 0.433071
+ L 10824234 0.000000 9.370079 0.000000 9.370079 0.354331
+ L 10824234 0.000000 9.291339 0.000000 9.291339 0.236220
+ L 10824234 0.000000 9.212598 0.000000 9.212598 0.157480
+ L 10824234 0.000000 9.133858 0.000000 9.133858 0.039370
+ L 10824234 0.000000 1.181102 1.141732 8.582677 1.141732
+ L 10824234 0.000000 8.582677 1.141732 8.582677 0.511811
+ L 10824234 0.000000 8.582677 0.511811 1.181102 0.511811
+ L 10824234 0.000000 1.181102 0.511811 1.181102 1.141732
+ END$SEGS
+STRUCTURE N "Kato Unitrack One Sided Platform END$SEGS Type 1 23-112"
+ L 10824234 0.000000 0.000000 0.000000 0.000000 1.653543
+ L 10824234 0.000000 0.000000 0.000000 7.874016 0.000000
+ L 10824234 0.000000 7.874016 0.000000 7.874016 1.653543
+ L 10824234 0.000000 7.874016 1.653543 0.000000 1.653543
+ L 10824234 0.000000 0.787402 1.653543 0.787402 0.000000
+ L 10824234 0.000000 0.787402 0.629921 0.196850 0.629921
+ L 10824234 0.000000 0.196850 0.629921 0.196850 0.984252
+ L 10824234 0.000000 0.196850 0.984252 0.787402 0.984252
+ L 10824234 0.000000 0.787402 0.984252 0.787402 0.629921
+ L 10824234 0.000000 0.669291 0.629921 0.669291 0.984252
+ L 10824234 0.000000 0.551181 0.629921 0.551181 0.984252
+ L 10824234 0.000000 0.433071 0.629921 0.433071 0.984252
+ L 10824234 0.000000 0.314961 0.629921 0.314961 0.984252
+ L 0 0.026667 0.866142 1.614173 0.866142 0.039370
+ A 0 0.026667 0.141951 5.196850 0.826772 0.000000 360.000000
+ L 0 0.000000 3.031496 0.944882 4.606299 0.944882
+ L 0 0.000000 4.606299 0.944882 4.606299 0.708661
+ L 0 0.000000 4.606299 0.708661 3.031496 0.708661
+ L 0 0.000000 3.031496 0.708661 3.031496 0.944882
+ L 0 0.066667 3.543307 0.826772 4.094488 0.826772
+ L 0 0.026667 0.866142 1.614173 7.874016 1.614173
+ END$SEGS
+STRUCTURE N "Kato Unitrack One Sided Platform END$SEGS Type 2 23-113"
+ L 10824234 0.000000 7.874016 0.000000 7.874016 1.653543
+ L 10824234 0.000000 7.874016 0.000000 0.000000 0.000000
+ L 10824234 0.000000 0.000000 0.000000 0.000000 1.653543
+ L 10824234 0.000000 0.000000 1.653543 7.874016 1.653543
+ L 10824234 0.000000 7.086614 1.653543 7.086614 0.000000
+ L 10824234 0.000000 7.086614 0.629921 7.677166 0.629921
+ L 10824234 0.000000 7.677166 0.629921 7.677166 0.984252
+ L 10824234 0.000000 7.677166 0.984252 7.086614 0.984252
+ L 10824234 0.000000 7.086614 0.984252 7.086614 0.629921
+ L 10824234 0.000000 7.204725 0.629921 7.204725 0.984252
+ L 10824234 0.000000 7.322835 0.629921 7.322835 0.984252
+ L 10824234 0.000000 7.440945 0.629921 7.440945 0.984252
+ L 10824234 0.000000 7.559055 0.629921 7.559055 0.984252
+ L 0 0.026667 7.007874 1.614173 7.007874 0.039370
+ A 0 0.026667 0.141951 2.677166 0.826772 0.000000 360.000000
+ L 0 0.000000 4.842520 0.944882 3.267717 0.944882
+ L 0 0.000000 3.267717 0.944882 3.267717 0.708661
+ L 0 0.000000 3.267717 0.708661 4.842520 0.708661
+ L 0 0.000000 4.842520 0.708661 4.842520 0.944882
+ L 0 0.066667 4.330709 0.826772 3.779528 0.826772
+ L 0 0.026667 7.007874 1.614173 0.000000 1.614173
+ END$SEGS
+STRUCTURE N "Kato Unitrack Overhead Station 23-200"
+ L 10824234 0.000000 0.000000 5.393701 13.307087 5.393701
+ L 10824234 0.000000 12.952756 1.299213 3.188976 1.299213
+ L 10824234 0.000000 3.188976 1.299213 3.188976 2.952756
+ L 10824234 0.000000 3.188976 2.952756 12.952756 2.952756
+ L 10824234 0.000000 12.952756 2.952756 12.952756 1.299213
+ L 10824234 0.000000 12.165354 5.393701 12.165354 4.251969
+ L 10824234 0.000000 1.102362 5.393701 1.102362 4.251969
+ L 10824234 0.000000 7.874016 5.393701 7.874016 4.251969
+ L 10824234 0.000000 5.511811 5.393701 5.511811 4.251969
+ L 10824234 0.000000 7.913386 4.251969 7.913386 0.000000
+ L 10824234 0.000000 7.913386 0.000000 2.716535 0.000000
+ L 10824234 0.000000 2.716535 0.000000 2.716535 4.251969
+ L 10824234 0.000000 7.795276 4.251969 7.795276 0.157480
+ L 10824234 0.000000 7.795276 0.157480 4.330709 0.157480
+ L 10824234 0.000000 4.330709 0.157480 4.330709 4.251969
+ L 10824234 0.000000 4.330709 2.165354 7.795276 2.165354
+ L 10824234 0.000000 13.307087 5.393701 13.307087 4.251969
+ L 10824234 0.000000 0.000000 5.393701 0.000000 4.251969
+ L 10824234 0.000000 7.952756 2.637795 11.574803 2.637795
+ L 10824234 0.000000 11.574803 2.637795 11.574803 1.692913
+ L 10824234 0.000000 11.574803 1.692913 7.952756 1.692913
+ L 10824234 0.000000 10.866142 2.637795 10.866142 1.692913
+ L 10824234 0.000000 10.118110 2.637795 10.118110 1.692913
+ L 10824234 0.000000 0.000000 4.251969 4.330709 4.251969
+ L 10824234 0.000000 4.330709 4.251969 7.795276 4.251969
+ L 10824234 0.000000 7.874016 4.251969 13.267717 4.251969
+ END$SEGS
+STRUCTURE N "Kato Unitrack Station Entrance 23-210"
+ L 10824234 0.000000 0.000000 0.000000 0.000000 2.874016
+ L 10824234 0.000000 4.921260 0.000000 0.000000 0.000000
+ L 10824234 0.000000 0.000000 1.417323 4.055118 1.417323
+ L 10824234 0.000000 4.055118 2.874016 4.055118 0.000000
+ L 10824234 0.000000 4.055118 1.574803 4.921260 1.574803
+ L 10824234 0.000000 4.921260 1.574803 4.921260 0.000000
+ L 10824234 0.000000 0.000000 2.874016 4.055118 2.874016
+ L 10824234 0.000000 3.779528 0.000000 3.779528 1.299213
+ L 10824234 0.000000 3.503937 0.000000 3.503937 1.181102
+ L 10824234 0.000000 3.228346 0.000000 3.228346 1.062992
+ L 10824234 0.000000 2.952756 0.000000 2.952756 0.944882
+ L 10824234 0.000000 2.677165 0.000000 2.677165 0.826772
+ L 10824234 0.000000 0.275591 2.874016 0.275591 1.535433
+ L 10824234 0.000000 0.551181 2.874016 0.551181 1.692913
+ L 10824234 0.000000 0.826772 2.874016 0.826772 1.811024
+ L 10824234 0.000000 1.102362 2.874016 1.102362 1.929134
+ L 10824234 0.000000 1.377953 2.874016 1.377953 2.047244
+ L 10824234 0.000000 4.055118 0.039370 4.921260 0.039370
+ L 10824234 0.000000 4.055118 1.535433 4.921260 1.535433
+ L 10824234 0.000000 4.055118 0.275591 4.685039 0.275591
+ L 10824234 0.000000 4.055118 0.511811 4.448819 0.511811
+ L 10824234 0.000000 4.921260 1.299213 4.330709 1.299213
+ L 10824234 0.000000 4.921260 1.062992 4.527559 1.062992
+ END$SEGS
+STRUCTURE N "Kato Unitrack Long Engine House 23-300"
+ L 10824234 0.000000 0.000000 0.000000 0.000000 3.779528
+ L 10824234 0.000000 0.000000 3.779528 7.362205 3.779528
+ L 10824234 0.000000 7.362205 3.779528 7.362205 0.000000
+ L 10824234 0.000000 7.362205 0.000000 0.000000 0.000000
+ L 10824234 0.000000 0.275591 0.393701 0.787402 0.393701
+ L 10824234 0.000000 0.787402 0.393701 0.787402 3.385827
+ L 10824234 0.000000 0.787402 3.385827 0.275591 3.385827
+ L 10824234 0.000000 0.275591 3.385827 0.275591 0.393701
+ L 10824234 0.000000 1.062992 0.393701 1.574803 0.393701
+ L 10824234 0.000000 1.574803 0.393701 1.574803 3.385827
+ L 10824234 0.000000 1.574803 3.385827 1.062992 3.385827
+ L 10824234 0.000000 1.062992 3.385827 1.062992 0.393701
+ L 10824234 0.000000 1.850394 0.393701 2.362205 0.393701
+ L 10824234 0.000000 2.362205 0.393701 2.362205 3.385827
+ L 10824234 0.000000 2.362205 3.385827 1.850394 3.385827
+ L 10824234 0.000000 1.850394 3.385827 1.850394 0.393701
+ L 10824234 0.000000 2.637795 0.393701 3.149606 0.393701
+ L 10824234 0.000000 3.149606 0.393701 3.149606 3.385827
+ L 10824234 0.000000 3.149606 3.385827 2.637795 3.385827
+ L 10824234 0.000000 2.637795 3.385827 2.637795 0.393701
+ L 10824234 0.000000 3.425197 0.393701 3.937008 0.393701
+ L 10824234 0.000000 3.937008 0.393701 3.937008 3.385827
+ L 10824234 0.000000 3.937008 3.385827 3.425197 3.385827
+ L 10824234 0.000000 3.425197 3.385827 3.425197 0.393701
+ L 10824234 0.000000 4.212598 0.393701 4.724409 0.393701
+ L 10824234 0.000000 4.724409 0.393701 4.724409 3.385827
+ L 10824234 0.000000 4.724409 3.385827 4.212598 3.385827
+ L 10824234 0.000000 4.212598 3.385827 4.212598 0.393701
+ L 10824234 0.000000 5.000000 0.393701 5.511811 0.393701
+ L 10824234 0.000000 5.511811 0.393701 5.511811 3.385827
+ L 10824234 0.000000 5.511811 3.385827 5.000000 3.385827
+ L 10824234 0.000000 5.000000 3.385827 5.000000 0.393701
+ L 10824234 0.000000 5.787402 0.393701 6.299213 0.393701
+ L 10824234 0.000000 6.299213 0.393701 6.299213 3.385827
+ L 10824234 0.000000 6.299213 3.385827 5.787402 3.385827
+ L 10824234 0.000000 5.787402 3.385827 5.787402 0.393701
+ L 10824234 0.000000 6.574803 0.393701 7.086614 0.393701
+ L 10824234 0.000000 7.086614 0.393701 7.086614 3.385827
+ L 10824234 0.000000 7.086614 3.385827 6.574803 3.385827
+ L 10824234 0.000000 6.574803 3.385827 6.574803 0.393701
+ L 10824234 0.000000 0.275591 3.464567 0.472441 3.464567
+ L 10824234 0.000000 0.472441 3.464567 0.472441 3.661417
+ L 10824234 0.000000 0.472441 3.661417 0.275591 3.661417
+ L 10824234 0.000000 0.275591 3.661417 0.275591 3.464567
+ L 10824234 0.000000 0.275591 0.314961 0.472441 0.314961
+ L 10824234 0.000000 0.472441 0.314961 0.472441 0.118110
+ L 10824234 0.000000 0.472441 0.118110 0.275591 0.118110
+ L 10824234 0.000000 0.275591 0.118110 0.275591 0.314961
+ L 10824234 0.000000 7.086614 0.314961 6.889764 0.314961
+ L 10824234 0.000000 6.889764 0.314961 6.889764 0.118110
+ L 10824234 0.000000 6.889764 0.118110 7.086614 0.118110
+ L 10824234 0.000000 7.086614 0.118110 7.086614 0.314961
+ L 10824234 0.000000 7.086614 3.464567 6.889764 3.464567
+ L 10824234 0.000000 6.889764 3.464567 6.889764 3.661417
+ L 10824234 0.000000 6.889764 3.661417 7.086614 3.661417
+ L 10824234 0.000000 7.086614 3.661417 7.086614 3.464567
+ L 10824234 0.000000 3.582677 0.314961 3.779528 0.314961
+ L 10824234 0.000000 3.779528 0.314961 3.779528 0.118110
+ L 10824234 0.000000 3.779528 0.118110 3.582677 0.118110
+ L 10824234 0.000000 3.582677 0.118110 3.582677 0.314961
+ L 10824234 0.000000 3.582677 3.464567 3.779528 3.464567
+ L 10824234 0.000000 3.779528 3.464567 3.779528 3.661417
+ L 10824234 0.000000 3.779528 3.661417 3.582677 3.661417
+ L 10824234 0.000000 3.582677 3.661417 3.582677 3.464567
+ END$SEGS
+STRUCTURE N "Kato Unitrack Industrial Building 23-310"
+ L 10824234 0 0.000000 0.000000 0.000000 2.952756
+ L 10824234 0 0.000000 2.952756 5.905512 2.952756
+ L 10824234 0 5.905512 2.952756 5.905512 0.000000
+ L 10824234 0 5.905512 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE N "Kato Unitrack Station Office 23-315a"
+ L 10824234 0 0.000000 0.000000 0.000000 1.574803
+ L 10824234 0 0.000000 1.574803 2.421260 1.574803
+ L 10824234 0 2.421260 1.574803 2.421260 0.000000
+ L 10824234 0 2.421260 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE N "Kato Unitrack Signal Tower 23-315b"
+ L 10824234 0 0.000000 0.000000 0.000000 1.102362
+ L 10824234 0 0.000000 1.102362 2.283465 1.102362
+ L 10824234 0 2.283465 1.102362 2.283465 0.000000
+ L 10824234 0 2.283465 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE N "Kato Unitrack Building 2x4 23-2x4"
+ L 10824234 0 0.000000 0.000000 0.000000 2.000000
+ L 10824234 0 0.000000 2.000000 4.000000 2.000000
+ L 10824234 0 4.000000 2.000000 4.000000 0.000000
+ L 10824234 0 4.000000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE N "Kato Unitrack Building 4x5 23-4x5"
+ L 10824234 0 0.000000 0.000000 0.000000 4.000000
+ L 10824234 0 0.000000 4.000000 5.000000 4.000000
+ L 10824234 0 5.000000 4.000000 5.000000 0.000000
+ L 10824234 0 5.000000 0.000000 0.000000 0.000000
+ END$SEGS
+STRUCTURE N "Kato Unitrack Building 4x6 23-4x6"
+ L 10824234 0 0.000000 0.000000 0.000000 4.000000
+ L 10824234 0 0.000000 4.000000 6.000000 4.000000
+ L 10824234 0 6.000000 4.000000 6.000000 0.000000
+ L 10824234 0 6.000000 0.000000 0.000000 0.000000
+ END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Kato Unitrack N-Scale Turntable and Accessories
+TURNOUT N "Kato Unitrack 3 Stall Round House 20-240"
+ P "Normal" 1 0 2 0 3
+ E -0.148334 1.695463 260.000000
+ E 0.000000 0.000000 270.000000
+ E -0.148334 -1.695463 280.000000
+ S 0 0.000000 -0.148334 1.695463 7.063251 2.967059
+ S 0 0.000000 0.000000 0.000000 7.322835 0.000000
+ S 0 0.000000 -0.148334 -1.695463 7.063251 -2.967059
+ F 12632256 0.000000 8
+ -0.296668 2.536705 0
+ 7.338100 4.582435 0
+ 7.874016 1.543107 0
+ 7.874016 -1.543107 0
+ 7.338100 -4.582435 0
+ -0.296668 -2.536705 0
+ 0.000000 -0.854220 0
+ 0.000000 0.854220 0
+ G 0 0.000000 0.200000 0.750000 0.000000 0
+ G 0 0.000000 0.200000 7.125000 0.000000 0
+ G 0 0.000000 0.200000 0.590272 1.825699 0
+ G 0 0.000000 0.200000 6.868421 2.932706 0
+ G 0 0.000000 0.200000 0.590272 -1.825699 0
+ G 0 0.000000 0.200000 6.868421 -2.932706 0
+ L 0 0.031250 -0.296668 2.536705 7.338100 4.582435
+ L 0 0.031250 0.000000 0.854220 7.874016 1.543107
+ L 0 0.031250 0.000000 -0.854220 7.874016 -1.543107
+ L 0 0.031250 -0.296668 -2.536705 7.338100 -4.582435
+ L 0 0.031250 0.000000 0.854220 -0.296668 2.536705
+ L 0 0.031250 0.000000 0.854220 0.000000 -0.854220
+ L 0 0.031250 0.000000 -0.854220 -0.296668 -2.536705
+ L 0 0.031250 7.874016 1.543107 7.338100 4.582435
+ L 0 0.031250 7.874016 1.543107 7.874016 -1.543107
+ L 0 0.031250 7.874016 -1.543107 7.338100 -4.582435
+END$SEGS
+TURNOUT N "Kato Unitrack 139.5mm Straight Extension Line 20-285"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.492126 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 5.492126 0.000000
+ L 0 0.031250 0.000000 0.372299 5.492126 0.854220
+ L 0 0.031250 0.000000 -0.372299 5.492126 -0.854220
+ L 0 0.031250 5.492126 0.854220 5.492126 -0.854220
+END$SEGS
+TURNOUT N "Kato Unitrack Curve (L) Extension Line 20-286L"
+ P "Normal" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 5.569398 -0.415987 100.000000
+ S 0 0.000000 0.000000 0.000000 0.935511 0.000000
+ C 0 0 26.000000 0.935511 -26.000000 0.000000 10.000000
+ S 0 0.000000 5.450363 -0.394998 5.569398 -0.415987
+ L 0 0.031250 0.000000 0.372299 5.492126 0.854220
+ L 0 0.031250 0.000000 -0.372299 5.492126 -0.854220
+ L 0 0.031250 5.642748 0.000000 5.492126 -0.854220
+ L 0 0.031250 5.642748 0.000000 5.492126 0.854220
+END$SEGS
+TURNOUT N "Kato Unitrack Curve (R) Extension Line 20-286R"
+ P "Normal" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 5.569398 0.415987 80.000000
+ S 0 0.000000 0.000000 0.000000 0.935511 0.000000
+ C 0 0 -26.000000 0.935511 26.000000 170.000000 10.000000
+ S 0 0.000000 5.450363 0.394998 5.569398 0.415987
+ L 0 0.031250 0.000000 -0.372299 5.492126 -0.854220
+ L 0 0.031250 0.000000 0.372299 5.492126 0.854220
+ L 0 0.031250 5.642748 0.000000 5.492126 -0.854220
+ L 0 0.031250 5.642748 0.000000 5.492126 0.854220
+END$SEGS
+TURNOUT N "Kato Unitrack Curve 15R 381mm 10d 381-10"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.604723 -0.227884 100.000000
+ C 0 0 15.000000 0.000000 -15.000000 0.000000 10.000000
+ A 11579568 0.053333 14.554226 0.000000 -15.000000 0.000000 10.000000
+ A 11579568 0.053333 15.445774 0.000000 -15.000000 0.000000 10.000000
+END$SEGS
+TURNOUT N "Kato Unitrack Track Turntable Section 20-283A"
+ P "Normal" 1 0 2 0 3
+ E 3.101756 0.546923 260.000000
+ E 4.206758 0.741765 80.000000
+ E 3.149606 0.000000 270.000000
+ E 4.271654 0.000000 90.000000
+ E 3.101756 -0.546923 280.000000
+ E 4.206758 -0.741765 100.000000
+ S 0 0.000000 3.101756 0.546923 4.206758 0.741765
+ S 0 0.000000 3.149606 0.000000 4.271654 0.000000
+ S 0 0.000000 3.101756 -0.546923 4.206758 -0.741765
+ A 11579568 0.031250 3.149606 0.000000 0.000000 75.000000 30.00000
+ A 11579568 0.031250 4.271654 0.000000 0.000000 75.000000 30.000000
+ L 0 0.031250 3.042286 0.815178 4.126100 1.105585
+ L 0 0.031250 3.042286 -0.815178 4.126100 -1.105585
+END$SEGS
+TURNOUT N "Kato Unitrack 160mm Turn Table 20-283" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ P "13" 13
+ P "14" 14
+ P "15" 15
+ P "16" 16
+ P "17" 17
+ P "18" 18
+ E 0.000000 0.000000 0.000000
+ E 0.000000 3.149606 0.000000
+ E 0.546923 3.101757 10.000000
+ E 1.077229 2.959662 20.000000
+ E 1.574803 2.727639 30.000000
+ E 2.024528 2.412738 40.000000
+ E 2.412738 2.024528 50.000000
+ E 2.727639 1.574803 60.000000
+ E 2.959662 1.077229 70.000000
+ E 3.101757 0.546923 80.000000
+ E 3.149606 0.000000 90.000000
+ E 3.101757 -0.546923 100.000000
+ E 2.959662 -1.077229 110.000000
+ E 2.727639 -1.574803 120.000000
+ E 2.412738 -2.024528 130.000000
+ E 2.024528 -2.412738 140.000000
+ E 1.574803 -2.727639 150.000000
+ E 1.077229 -2.959662 160.000000
+ E 0.546923 -3.101757 170.000000
+ E 0.000000 -3.149606 180.000000
+ E -0.546923 -3.101757 190.000000
+ E -1.077229 -2.959662 200.000000
+ E -1.574803 -2.727639 210.000000
+ E -2.024528 -2.412738 220.000000
+ E -2.412738 -2.024528 230.000000
+ E -2.727639 -1.574803 240.000000
+ E -2.959662 -1.077229 250.000000
+ E -3.101757 -0.546923 260.000000
+ E -3.149606 0.000000 270.000000
+ E -3.101757 0.546923 280.000000
+ E -2.959662 1.077229 290.000000
+ E -2.727639 1.574803 300.000000
+ E -2.412738 2.024528 310.000000
+ E -2.024528 2.412738 320.000000
+ E -1.574803 2.727639 330.000000
+ E -1.077229 2.959662 340.000000
+ E -0.546923 3.101757 350.000000
+ S 16777215 0.000000 0.000000 3.149606 0.000000 -3.149606
+ S 16777215 0.000000 0.546923 3.101757 -0.546923 -3.101757
+ S 16777215 0.000000 1.077229 2.959662 -1.077229 -2.959662
+ S 16777215 0.000000 1.574803 2.727639 -1.574803 -2.727639
+ S 16777215 0.000000 2.024528 2.412738 -2.024528 -2.412738
+ S 16777215 0.000000 2.412738 2.024528 -2.412738 -2.024528
+ S 16777215 0.000000 2.727639 1.574803 -2.727639 -1.574803
+ S 16777215 0.000000 2.959662 1.077229 -2.959662 -1.077229
+ S 16777215 0.000000 3.101757 0.546923 -3.101757 -0.546923
+ S 16777215 0.000000 3.149606 0.000000 -3.149606 0.000000
+ S 16777215 0.000000 3.101757 -0.546923 -3.101757 0.546923
+ S 16777215 0.000000 2.959662 -1.077229 -2.959662 1.077229
+ S 16777215 0.000000 2.727639 -1.574803 -2.727639 1.574803
+ S 16777215 0.000000 2.412738 -2.024528 -2.412738 2.024528
+ S 16777215 0.000000 2.024528 -2.412738 -2.024528 2.412738
+ S 16777215 0.000000 1.574803 -2.727639 -1.574803 2.727639
+ S 16777215 0.000000 1.077229 -2.959662 -1.077229 2.959662
+ S 16777215 0.000000 0.546923 -3.101757 -0.546923 3.101757
+ A 11579568 0.031250 3.149606 0.000000 0.000000 0.000000 360.000000
+ A 11579568 0.031250 4.271654 0.000000 0.000000 0.000000 360.000000
+END$SEGS
diff --git a/app/lib/params/N-Kato-Unitram.xtp b/app/lib/params/N-Kato-Unitram.xtp
index 7a824cb..96d0eed 100644
--- a/app/lib/params/N-Kato-Unitram.xtp
+++ b/app/lib/params/N-Kato-Unitram.xtp
@@ -1,8 +1,8 @@
+CONTENTS Kato Unitrack N-Scale Unitram
CONTENTS Kato Unitrack N Scale Unitram
-
##########################################################################
##########################################################################
-SUBCONTENTS Kato Unitram N-Scale
+SUBCONTENTS Kato Unitram N-Scale - Straight Track
TURNOUT N "Kato Unitram Straight 186mm 40-010"
P "Normal" 1 0 2
E 0.000000 0.492126 270.000000
@@ -13,7 +13,7 @@ TURNOUT N "Kato Unitram Straight 186mm 40-010"
S 0 0 0.000000 -0.492126 7.322834 -0.492126
L 11579568 0.053333 0.000000 1.220472 7.322834 1.220472
L 11579568 0.053333 0.000000 -1.220472 7.322834 -1.220472
- END
+ END$SEGS
TURNOUT N "Kato Unitram Straight 124mm 40-020"
P "Normal" 1 0 2
E 0.000000 0.492126 270.000000
@@ -24,26 +24,26 @@ TURNOUT N "Kato Unitram Straight 124mm 40-020"
S 0 0 0.000000 -0.492126 4.881889 -0.492126
L 11579568 0.053333 0.000000 1.220472 4.881889 1.220472
L 11579568 0.053333 0.000000 -1.220472 4.881889 -1.220472
- END
+ END$SEGS
TURNOUT N "Kato Unitram Transition 124mm 40-021"
- P "Normal" 1 -2 3 4 5 0 6 7 8 -9 10
+ P "Normal" 1 2 3 4 5 0 6 7 8 9 10
E 0.000000 0.492126 270.000000
E 4.881889 0.649606 90.000000
E 0.000000 -0.492126 270.000000
E 4.881889 -0.649606 90.000000
S 0 0 0.000000 0.492126 0.511811 0.492126
- C 0 0 7.086613 0.511811 7.578738 177.455318 2.544682
+ C 0 0 -7.086613 0.511811 7.578738 177.455318 2.544682
S 0 0 0.826446 0.499114 4.055443 0.642618
C 0 0 7.086613 4.370078 -6.437006 357.455318 2.544682
S 0 0 4.370078 0.649606 4.881889 0.649606
S 0 0 0.000000 -0.492126 0.511811 -0.492126
C 0 0 7.086613 0.511811 -7.578738 0.000000 2.544682
S 0 0 0.826446 -0.499114 4.055443 -0.642618
- C 0 0 7.086613 4.370078 6.437006 180.000000 2.544682
+ C 0 0 -7.086613 4.370078 6.437006 180.000000 2.544682
S 0 0 4.370078 -0.649606 4.881889 -0.649606
L 11579568 0.053333 0.000000 1.220472 4.881889 1.220472
L 11579568 0.053333 0.000000 -1.220472 4.881889 -1.220472
- END
+ END$SEGS
TURNOUT N "Kato Unitram Straight 62mm 40-031"
P "Normal" 1 0 2
E 0.000000 0.492126 270.000000
@@ -54,7 +54,8 @@ TURNOUT N "Kato Unitram Straight 62mm 40-031"
S 0 0 0.000000 -0.492126 2.440944 -0.492126
L 11579568 0.053333 0.000000 1.220472 2.440944 1.220472
L 11579568 0.053333 0.000000 -1.220472 2.440944 -1.220472
- END
+ END$SEGS
+SUBCONTENTS Kato Unitram N-Scale - Crossings
TURNOUT N "Kato Unitram 90d Crossing 62mm 40-300"
P "Normal" 1 0 2 0 3 0 4
E 0.000000 0.492126 270.000000
@@ -69,7 +70,8 @@ TURNOUT N "Kato Unitram 90d Crossing 62mm 40-300"
S 0 0 0.000000 -0.492126 2.440944 -0.492126
S 0 0 0.728346 1.220472 0.728346 -1.220472
S 0 0 1.712598 1.220472 1.712598 -1.220472
- END
+ END$SEGS
+SUBCONTENTS Kato Unitram N-Scale - Curve Track
TURNOUT N "Kato Unitram Right Curve 180mm 40-101"
P "Normal" 1 2 0 3 4
E 0.000000 0.492126 270.000000
@@ -87,7 +89,7 @@ TURNOUT N "Kato Unitram Right Curve 180mm 40-101"
# L 11579568 0.053333 5.596826 -2.946481 7.322835 -1.220472
L 11579568 0.053333 5.596826 -2.946481 5.577439 -2.927094
A 11579568 0.053333 5.826772 1.457289 -7.047244 0.000000 45.000000
- END
+ END$SEGS
TURNOUT N "Kato Unitram Left Curve 180mm 40-102"
P "Normal" 1 2 0 3 4
E 0.000000 0.492126 270.000000
@@ -105,7 +107,8 @@ TURNOUT N "Kato Unitram Left Curve 180mm 40-102"
# L 11579568 0.053333 5.596826 -2.946481 7.322835 -1.220472
L 11579568 0.053333 5.596826 2.946481 5.577439 2.927094
A 11579568 0.053333 5.826772 1.457289 7.047244 135.000000 45.000000
- END
+ END$SEGS
+SUBCONTENTS Kato Unitram N-Scale - Turnouts
TURNOUT N "Kato Unitram Right turnout 180mm 40-211" 256
#UseOldPaths - turnouts work in tandem: either both Normal or both Reverse
P "Normal" 1 2 0 4 5
@@ -129,7 +132,7 @@ TURNOUT N "Kato Unitram Right turnout 180mm 40-211" 256
# L 11579568 0.053333 5.596826 -2.946481 7.322835 -1.220472
L 11579568 0.053333 5.596826 -2.946481 5.577439 -2.927094
A 11579568 0.053333 5.826772 1.457289 -7.047244 0.000000 45.000000
- END
+ END$SEGS
TURNOUT N "Kato Unitram Left Turnout 180mm 40-210" 256
#UseOldPaths - turnouts work in tandem: either both Normal or both Reverse
P "Normal" 1 2 0 4 5
@@ -153,4 +156,5 @@ TURNOUT N "Kato Unitram Left Turnout 180mm 40-210" 256
# L 11579568 0.053333 5.596826 -2.946481 7.322835 -1.220472
L 11579568 0.053333 5.596826 2.946481 5.577439 2.927094
A 11579568 0.053333 5.826772 1.457289 7.047244 135.000000 45.000000
- END
+ END$SEGS
+
diff --git a/app/lib/params/N-MiniTrix Code 60 Concrete Tie Track.xtp b/app/lib/params/N-MiniTrix Code 60 Concrete Tie Track.xtp
new file mode 100644
index 0000000..c14c19d
--- /dev/null
+++ b/app/lib/params/N-MiniTrix Code 60 Concrete Tie Track.xtp
@@ -0,0 +1,256 @@
+CONTENTS Minitrix N-Scale Code 60 Concrete Tie Track
+
+SUBCONTENTS Minitrix Code 60 - Straight Track
+TURNOUT N "Minitrix Code 60 Straight Track 17.5mm 14503"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.688973 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.688973 0.000000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Straight Track 27.9mm 14508"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.098425 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.098425 0.000000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Straight Track 33.6mm 14509"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.322835 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.322835 0.000000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Straight Track 50.0mm 14507"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.968504 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.968504 0.000000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Straight Track 54.2mm 14506"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.133858 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 2.133858 0.000000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Straight Track 76.3mm 14505"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.003937 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.003937 0.000000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Straight Track 104.2mm 14504"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.102362 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.102362 0.000000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Straight Track 108.4mm 14593"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.267717 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.267717 0.000000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Straight Track 112.6mm 14500"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.433071 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.433071 0.000000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Straight Track 126.3mm 14594"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.972441 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.972441 0.000000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Straight Track 312.6mm 14502"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.307087 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 12.307087 0.000000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Straight (Flex) Track 730mm 14501"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 28.740157 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 28.740157 0.000000
+ END$SEGS
+
+
+SUBCONTENTS Minitrix Code 60 Track - Curves
+TURNOUT N "Minitrix Code 60 Curves Track R2(228.2mm) 7.5d 14526"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.172680 -0.076862 97.500000
+ C 0 0.000000 8.984252 0.000000 -8.984252 0.000000 7.500000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Curves Track R2(228.2mm) 15d 14524"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.325296 -0.306131 105.000000
+ C 0 0.000000 8.984252 0.000000 -8.984252 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Curves Track R2(228.2mm) 30d 14522"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.492126 -1.203662 120.000000
+ C 0 0.000000 8.984252 0.000000 -8.984252 0.000000 30.000000
+ END$SEGS
+
+TURNOUT N "Minitrix Code 60 Curves Track R2A(261.8mm) 7.5d 14519"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.345345 -0.088179 97.500000
+ C 0 0.000000 10.307087 0.000000 -10.307087 0.000000 7.500000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Curves Track R2A(261.8mm) 15d 14511"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.667670 -0.351205 105.000000
+ C 0 0.000000 10.307087 0.000000 -10.307087 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Curves Track R2A(261.8mm) 30d 14510"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.153543 -1.380888 120.000000
+ C 0 0.000000 10.307087 0.000000 -10.307087 0.000000 30.000000
+ END$SEGS
+
+TURNOUT N "Minitrix Code 60 Curves Track R2B(295.4mm) 7.5d 14529"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.518009 -0.099496 97.500000
+ C 0 0.000000 11.629921 0.000000 -11.629921 0.000000 7.500000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Curves Track R2B(295.4mm) 15d 14521"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.010045 -0.396280 105.000000
+ C 0 0.000000 11.629921 0.000000 -11.629921 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Curves Track R2B(295.4mm) 30d 14520"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.814961 -1.558114 120.000000
+ C 0 0.000000 11.629921 0.000000 -11.629921 0.000000 30.000000
+ END$SEGS
+
+TURNOUT N "Minitrix Code 60 Curves Track R3(329.0mm) 7.5d 14513"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.690674 -0.110813 97.500000
+ C 0 0.000000 12.952756 0.000000 -12.952756 0.000000 7.500000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Curves Track R3(329.0mm) 15d 14517"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.352420 -0.441354 105.000000
+ C 0 0.000000 12.952756 0.000000 -12.952756 0.000000 15.000000
+ END$SEGS
+
+TURNOUT N "Minitrix Code 60 Curves Track R4(362.6mm) 7.5d 14514"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.863338 -0.122130 97.500000
+ C 0 0.000000 14.275591 0.000000 -14.275591 0.000000 7.500000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Curves Track R4(362.6mm) 15d 14527"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.694795 -0.486429 105.000000
+ C 0 0.000000 14.275591 0.000000 -14.275591 0.000000 15.000000
+ END$SEGS
+
+TURNOUT N "Minitrix Code 60 Curves Track R5(492.6mm) 7.5d 14515"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.531386 -0.165916 97.500000
+ C 0 0.000000 19.393701 0.000000 -19.393701 0.000000 7.500000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Curves Track R5(492.6mm) 15d 14518"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.019459 -0.660824 105.000000
+ C 0 0.000000 19.393701 0.000000 -19.393701 0.000000 15.000000
+ END$SEGS
+
+TURNOUT N "Minitrix Code 60 Curves Track R6(526.2mm) 7.5d 14516"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.704050 -0.177233 97.500000
+ C 0 0.000000 20.716535 0.000000 -20.716535 0.000000 7.500000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Curves Track R6(526.2mm) 15d 14528"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.361834 -0.705899 105.000000
+ C 0 0.000000 20.716535 0.000000 -20.716535 0.000000 15.000000
+ END$SEGS
+
+
+SUBCONTENTS Minitrix Code 60 Track - Switches
+TURNOUT N "Minitrix Code 60 Lefthand Switch R4 15d 14538"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 4.433071 0.000000 90.000000
+ E 4.433071 0.661417 75.000000
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 4.433071 0.000000
+ C 0 0.000000 -12.231664 0.354300 12.231664 165.000000 15.000000
+ S 0 0.000000 3.520088 0.416784 4.433071 0.661417
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Righthand Switch R4 15d 14539"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 4.433071 0.000000 90.000000
+ E 4.433071 -0.661417 105.000000
+ S 0 0.000000 0.000000 0.000000 0.354300 -0.000000
+ S 0 0.000000 0.354300 -0.000000 4.433071 0.000000
+ C 0 0.000000 12.231664 0.354300 -12.231664 0.000000 15.000000
+ S 0 0.000000 3.520088 -0.416784 4.433071 -0.661417
+ END$SEGS
+
+
+
+SUBCONTENTS Minitrix Code 60 Track - Crossings and Slips Switches
+
+
+SUBCONTENTS Minitrix Code 60 Track - Misc
+TURNOUT N "Minitrix Code 60 Buffer Stop 50.0mm 14591"
+ P "Normal" 1
+ E 1.968504 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.968504 0.000000
+ L3 0 0.060000 0.000000 0.150000 0 0.656168 0.150000 0
+ L3 0 0.060000 0.656168 0.300000 0 0.656168 -0.300000 0
+ L3 0 0.060000 0.000000 -0.150000 0 0.656168 -0.150000 0
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Adapter C80 to C60 Track 104.2mm 14590"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.102362 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.102362 0.000000
+ END$SEGS
+TURNOUT N "Minitrix Code 60 Rerailer Track 104.2mm 14574"
+ P "Normal" 2
+ E 0.000000 0.000000 270.000000
+ E 4.102362 0.000000 90.000000
+ L3 11579568 1.000000 0.000000 0.000000 0 4.102362 0.000000 0
+ S 0 0.000000 0.000000 0.000000 4.102362 0.000000
+ Y4 0 0.020000 4 0
+ 0.000000 0.500000 0
+ 4.102362 0.500000 0
+ 3.492126 0.196850 0
+ 0.610236 0.196850 0
+ Y4 0 0.020000 6 0
+ 0.000000 0.000000 0
+ 0.610236 0.157480 0
+ 3.492126 0.157480 0
+ 4.102362 0.000000 0
+ 3.492126 -0.157480 0
+ 0.610236 -0.157480 0
+ Y4 0 0.020000 4 0
+ 0.000000 -0.500000 0
+ 4.102362 -0.500000 0
+ 3.492126 -0.196850 0
+ 0.610236 -0.196850 0
+ END$SEGS
diff --git a/app/lib/params/N-MiniTrix Track (De).xtp b/app/lib/params/N-MiniTrix Track (De).xtp
index 782cb65..1c24b5f 100644
--- a/app/lib/params/N-MiniTrix Track (De).xtp
+++ b/app/lib/params/N-MiniTrix Track (De).xtp
@@ -1,322 +1,322 @@
-CONTENTS Minitrix N-Scale
-###########################################################################
-#
-# Design Armin Poschmann 08.01.1999 nach Vorgaben aus dem Minitrix Katalog
-# zur Benutzung mit xtrkcad
-# Genauigkeit der Berechnungen : Eingabe der Werte in cm mit 10 gültigen
-# Ziffern
-#
-############################################################################
-SUBCONTENTS Geraden
-###################
-TURNOUT N "Minitrix Gerade-17,2mm 14903"
- U "Straight Section" "" "Minitrix" "Gerade-17.2mm" "14903" 0.677165
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.677165 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 0.677165 0.000000
- END
-TURNOUT N "Minitrix Gerade-27,9mm 14908"
- U "Straight Section" "" "Minitrix" "Gerade-27,9mm" "14908" 1.098425
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.098425 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 1.098425 0.000000
- END
-TURNOUT N "Minitrix Gerade-33,6mm 14909"
- U "Straight Section" "" "Minitrix" "Gerade-33,6mm" "14909" 1.322835
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.322835 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 1.322835 0.000000
- END
-TURNOUT N "Minitrix Gerade-50,0mm 14907"
- U "Straight Section" "" "Minitrix" "Gerade-50,0mm" "14907" 1.968504
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.968504 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 1.968504 0.000000
- END
-TURNOUT N "Minitrix Gerade-54,2mm 14906"
- U "Straight Section" "" "Minitrix" "Gerade-54,2mm" "14906" 2.133858
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.133858 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 2.133858 0.000000
- END
-TURNOUT N "Minitrix Gerade-76,3mm 14905"
- U "Straight Section" "" "Minitrix" "Gerade-76,3mm" "14905" 3.003937
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.003937 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 3.003937 0.000000
- END
-TURNOUT N "Minitrix Gerade-10,42mm 14904"
- U "Straight Section" "" "Minitrix" "Gerade-10,42mm" "14904" 4.102362
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.102362 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 4.102362 0.000000
- END
-TURNOUT N "Minitrix Gerade-312,6mm 14902"
- U "Straight Section" "" "Minitrix" "Gerade-312,6mm" "14902" 12.307087
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 12.307087 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 12.307087 0.000000
- END
-############################################################################
-SUBCONTENTS Bögen
-#################
-TURNOUT N "Minitrix Bogen-R1-6 14916"
- U "Curved Section" "" "Minitrix" "Bogen-R1-6" "14916" 7.661417 6.000000
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.800836 0.041970 84.000000
- C 0 0.000000 -7.661417 0.000000 7.661417 174.000000 6.000000
- END
-TURNOUT N "Minitrix Bogen-R1-24 14914"
- U "Curved Section" "" "Minitrix" "Bogen-R1-24" "14914" 7.661417 24.000000
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.116179 0.662364 66.000000
- C 0 0.000000 -7.661417 0.000000 7.661417 156.000000 24.000000
- END
-TURNOUT N "Minitrix Bogen-R1-30 14912"
- U "Curved Section" "" "Minitrix" "Bogen-R1-30" "14912" 7.661417 30.000000
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.830709 1.026435 60.000000
- C 0 0.000000 -7.661417 -0.000000 7.661417 150.000000 30.000000
- END
-TURNOUT N "Minitrix Bogen-R2-6 14926"
- U "Curved Section" "" "Minitrix" "Bogen-R2-6" "14926" 8.984252 6.000000
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.939110 0.049217 84.000000
- C 0 0.000000 -8.984252 0.000000 8.984252 174.000000 6.000000
- END
-TURNOUT N "Minitrix Bogen-R2-24 14924"
- U "Curved Section" "" "Minitrix" "Bogen-R2-24" "14924" 8.984252 24.000000
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.654224 0.776729 66.000000
- C 0 0.000000 -8.984252 0.000000 8.984252 156.000000 24.000000
- END
-TURNOUT N "Minitrix Bogen-R2-30 14922"
- U "Curved Section" "" "Minitrix" "Bogen-R2-30" "14922" 8.984252 30.000000
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.492126 1.203662 60.000000
- C 0 0.000000 -8.984252 -0.000000 8.984252 150.000000 30.000000
- END
-TURNOUT N "Minitrix Bogen-R3-15 14917"
- U "Curved Section" "" "Minitrix" "Bogen-R3-15" "14917" 12.952756 15.000000
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.352420 0.441354 75.000000
- C 0 0.000000 -12.952756 0.000000 12.952756 165.000000 15.000000
- END
-TURNOUT N "Minitrix Bogen-R4-15 14927"
- U "Curved Section" "" "Minitrix" "Bogen-R4-15" "14927" 14.275591 15.000000
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.694795 0.486429 75.000000
- C 0 0.000000 -14.275591 0.000000 14.275591 165.000000 15.000000
- END
-TURNOUT N "Minitrix Bogen-R5-15 14918"
- U "Curved Section" "" "Minitrix" "Bogen-R5-15" "14918" 19.393701 15.000000
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.019459 0.660824 75.000000
- C 0 0.000000 -19.393701 0.000000 19.393701 165.000000 15.000000
- END
-TURNOUT N "Minitrix Bogen-R6-15 14928"
- U "Curved Section" "" "Minitrix" "Bogen-R6-15" "14928" 20.716535 15.000000
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.361834 0.705899 75.000000
- C 0 0.000000 -20.716535 0.000000 20.716535 165.000000 15.000000
- END
-###########################################################################
-SUBCONTENTS Weichen
-###################
-TURNOUT N "Minitrix Weiche-R1-24-L 14961"
- U "Regular Turnout" "" "Minitrix" "Weiche-R1-24-L" "14961" "Weiche-R1-24-R" "14963" 3.116179 24.000000 0.662364 4.102362
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 4.102362 0.000000 90.000000
- E 3.116179 0.662364 66.000000
- S 0 0.000000 0.000000 0.000000 0.353100 0.000000
- S 0 0.000000 0.353100 0.000000 4.102362 0.000000
- C 0 0.000000 -6.000212 0.353100 6.000212 156.000000 24.000000
- S 0 0.000000 2.793606 0.518746 3.116179 0.662364
- END
-TURNOUT N "Minitrix Weiche-R1-24-R 14963"
- U "Regular Turnout" "" "Minitrix" "Weiche-R1-24-L" "14961" "Weiche-R1-24-R" "14963" 3.116179 24.000000 0.662364 4.102362
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 4.102362 0.000000 90.000000
- E 3.116179 -0.662364 114.000000
- S 0 0.000000 0.000000 0.000000 0.353100 0.000000
- S 0 0.000000 0.353100 0.000000 4.102362 0.000000
- C 0 0.000000 6.000212 0.353100 -6.000212 0.000000 24.000000
- S 0 0.000000 2.793606 -0.518746 3.116179 -0.662364
- END
-TURNOUT N "Minitrix Weiche-R4-15-L 14936"
- U "Regular Turnout" "" "Minitrix" "Weiche-R4-15-L" "14936" "Weiche-R4-15-R" "14937" 4.348886 15.000000 0.661692 4.433071
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 4.433071 0.000000 90.000000
- E 4.348886 0.661692 75.000000
- S 0 0.000000 0.000000 0.000000 0.353100 0.000000
- S 0 0.000000 0.353100 0.000000 4.433071 0.000000
- C 0 0.000000 -11.593530 0.353100 11.593530 165.000000 15.000000
- S 0 0.000000 3.353726 0.395040 4.348886 0.661692
- END
-TURNOUT N "Minitrix Weiche-R4-15-R 14937"
- U "Regular Turnout" "" "Minitrix" "Weiche-R4-15-L" "14936" "Weiche-R4-15-R" "14937" 4.348886 15.000000 0.661692 4.433071
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 4.433071 0.000000 90.000000
- E 4.348886 -0.661692 105.000000
- S 0 0.000000 0.000000 0.000000 0.353100 0.000000
- S 0 0.000000 0.353100 0.000000 4.433071 0.000000
- C 0 0.000000 11.593530 0.353100 -11.593530 0.000000 15.000000
- S 0 0.000000 3.353726 -0.395040 4.348886 -0.661692
- END
-TURNOUT N "Minitrix Bogenweiche-R1/R2-42-L 14966"
- U "Curved Turnout" "" "Minitrix" "Bogenweiche-R1/R2-42-L" "14966" "Bogenweiche-R1/R2-42-R" "14967" 5.126489 42.000000 1.967875 42.000000 2.307652 6.011638
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 6.011638 2.307652 48.000000
- E 5.126489 1.967875 48.000000
- S 0 0.000000 0.000000 0.000000 0.353100 0.000000
- C 0 0.000000 -6.741560 0.353100 6.741560 138.000000 42.000000
- S 0 0.000000 4.864084 1.731605 5.126489 1.967875
- C 0 0.000000 -8.064395 0.353100 8.064395 138.000000 42.000000
- S 0 0.000000 5.749234 2.071382 6.011638 2.307652
- END
-TURNOUT N "Minitrix Bogenweiche-R1/R2-42-R 14967"
- U "Curved Turnout" "" "Minitrix" "Bogenweiche-R1/R2-42-L" "14966" "Bogenweiche-R1/R2-42-R" "14967" 5.126489 42.000000 1.967875 42.000000 2.307652 6.011638
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 6.011638 -2.307652 132.000000
- E 5.126489 -1.967875 132.000000
- S 0 0.000000 0.000000 0.000000 0.353100 0.000000
- C 0 0.000000 6.741560 0.353100 -6.741560 0.000000 42.000000
- S 0 0.000000 4.864084 -1.731605 5.126489 -1.967875
- C 0 0.000000 8.064395 0.353100 -8.064395 0.000000 42.000000
- S 0 0.000000 5.749234 -2.071382 6.011638 -2.307652
- END
-TURNOUT N "Minitrix Bogenweiche-R3/R4-30-L 14970"
- U "Curved Turnout" "" "Minitrix" "Bogenweiche-R3/R4-30-L" "14970" "Bogenweiche-R3/R4-30-R" "14971" 6.476378 30.000000 1.735340 30.000000 1.720571 7.137795
- P "Normal" 1 6 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 7.137795 1.720571 60.000000
- E 6.476378 1.735340 60.000000
- S 0 0.000000 0.000000 0.000000 0.353100 0.000000
- C 0 0.000000 -11.634969 0.353100 11.634969 150.000000 30.000000
- S 0 0.000000 6.170584 1.558790 6.476378 1.735340
- C 0 0.000000 -11.524733 1.069635 11.524733 150.000000 30.000000
- S 0 0.000000 6.832002 1.544021 7.137795 1.720571
- S 0 0.000000 0.353100 0.000000 1.069635 0.000000
- END
-TURNOUT N "Minitrix Bogenweiche-R3/R4-30-R 14971"
- U "Curved Turnout" "" "Minitrix" "Bogenweiche-R3/R4-30-L" "14970" "Bogenweiche-R3/R4-30-R" "14971" 6.476378 30.000000 1.735340 30.000000 1.720571 7.137795
- P "Normal" 1 6 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 7.137795 -1.720571 120.000000
- E 6.476378 -1.735340 120.000000
- S 0 0.000000 0.000000 0.000000 0.353100 0.000000
- C 0 0.000000 11.634969 0.353100 -11.634969 0.000000 30.000000
- S 0 0.000000 6.170584 -1.558790 6.476378 -1.735340
- C 0 0.000000 11.524733 1.069635 -11.524733 0.000000 30.000000
- S 0 0.000000 6.832002 -1.544021 7.137795 -1.720571
- S 0 0.000000 0.353100 0.000000 1.069635 0.000000
- END
-TURNOUT N "Minitrix Dreiwegweiche-R4-15 14940"
- U "3-way Turnout" "" "Minitrix" "Dreiwegweiche-R4-15" "14940" 4.348886 15.000000 0.661692 4.433071 0.661692 15.000000 4.348886
- P "Left" 1 2 3
- P "Normal" 1 6
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 4.348886 0.661692 75.000000
- E 4.348886 -0.661692 105.000000
- E 4.433071 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 0.353100 0.000000
- C 0 0.000000 -11.593530 0.353100 11.593530 165.000000 15.000000
- S 0 0.000000 3.353726 0.395040 4.348886 0.661692
- C 0 0.000000 11.593530 0.353100 -11.593530 0.000000 15.000000
- S 0 0.000000 3.353726 -0.395040 4.348886 -0.661692
- S 0 0.000000 0.353100 0.000000 4.433071 0.000000
- END
-###########################################################################
-SUBCONTENTS Kreuzungen und DKWs
-###############################
-TURNOUT N "Minitrix Kreuzung-30 14958"
- U "Crossing" "" "Minitrix" "Kreuzung-30" "14958" 4.102362 30.000000 4.102362
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.102362 0.000000 90.000000
- E 0.274806 1.025591 300.000000
- E 3.827556 -1.025591 120.000000
- S 0 0.000000 0.000000 0.000000 4.102362 0.000000
- S 0 0.000000 0.274806 1.025591 3.827556 -1.025591
- END
-TURNOUT N "Minitrix Kreuzung-15 14973"
- U "Crossing" "" "Minitrix" "Kreuzung-15" "14973" 5.110236 15.000000 5.110236
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 5.110236 0.000000 90.000000
- E 0.087064 0.661313 285.000000
- E 5.023173 -0.661313 105.000000
- S 0 0.000000 0.000000 0.000000 5.110236 0.000000
- S 0 0.000000 0.087064 0.661313 5.023173 -0.661313
- END
-TURNOUT N "Minitrix DKW-30 14968"
- U "Double Slipswitch" "" "Minitrix" "DKW-30" "14968" 4.102362 30.000000 4.102362
- P "P1" 1 2 3
- P "P2" 4 5 6
- P "P3" 1 7 6
- P "P4" 4 8 3
- E 0.000000 0.000000 270.000000
- E 4.102362 0.000000 90.000000
- E 0.274806 1.025591 300.000000
- E 3.827556 -1.025591 120.000000
- S 0 0.000000 0.000000 0.000000 0.706200 0.000000
- S 0 0.000000 0.706200 0.000000 3.396162 0.000000
- S 0 0.000000 3.396162 0.000000 4.102362 0.000000
- S 0 0.000000 0.274806 1.025591 0.886393 0.672491
- S 0 0.000000 0.886393 0.672491 3.215969 -0.672491
- S 0 0.000000 3.215969 -0.672491 3.827556 -1.025591
- C 0 0.000000 5.019538 0.706200 -5.019538 0.000000 30.000000
- C 0 0.000000 -5.019538 3.396162 5.019538 180.000000 30.000000
- END
-TURNOUT N "Minitrix DKW-15 14960"
- U "Double Slipswitch" "" "Minitrix" "DKW-15" "14960" 5.110236 15.000000 5.110236
- P "P1" 1 2 3
- P "P2" 4 5 6
- P "P3" 1 7 6
- P "P4" 4 8 3
- E 0.000000 0.000000 270.000000
- E 5.110236 0.000000 90.000000
- E 0.087064 0.661313 285.000000
- E 5.023173 -0.661313 105.000000
- S 0 0.000000 0.000000 0.000000 0.706200 0.000000
- S 0 0.000000 0.706200 0.000000 4.404036 0.000000
- S 0 0.000000 4.404036 0.000000 5.110236 0.000000
- S 0 0.000000 0.087064 0.661313 0.769200 0.478535
- S 0 0.000000 0.769200 0.478535 4.341036 -0.478535
- S 0 0.000000 4.341036 -0.478535 5.023173 -0.661313
- C 0 0.000000 14.043927 0.706200 -14.043927 0.000000 15.000000
- C 0 0.000000 -14.043927 4.404036 14.043927 180.000000 15.000000
- END
+CONTENTS Minitrix N-Scale
+###########################################################################
+#
+# Design Armin Poschmann 08.01.1999 nach Vorgaben aus dem Minitrix Katalog
+# zur Benutzung mit xtrkcad
+# Genauigkeit der Berechnungen : Eingabe der Werte in cm mit 10 gültigen
+# Ziffern
+#
+############################################################################
+SUBCONTENTS Geraden
+###################
+TURNOUT N "Minitrix Gerade-17,2mm 14903"
+ U "Straight Section" "" "Minitrix" "Gerade-17.2mm" "14903" 0.677165
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.677165 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.677165 0.000000
+ END
+TURNOUT N "Minitrix Gerade-27,9mm 14908"
+ U "Straight Section" "" "Minitrix" "Gerade-27,9mm" "14908" 1.098425
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.098425 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.098425 0.000000
+ END
+TURNOUT N "Minitrix Gerade-33,6mm 14909"
+ U "Straight Section" "" "Minitrix" "Gerade-33,6mm" "14909" 1.322835
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.322835 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.322835 0.000000
+ END
+TURNOUT N "Minitrix Gerade-50,0mm 14907"
+ U "Straight Section" "" "Minitrix" "Gerade-50,0mm" "14907" 1.968504
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.968504 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.968504 0.000000
+ END
+TURNOUT N "Minitrix Gerade-54,2mm 14906"
+ U "Straight Section" "" "Minitrix" "Gerade-54,2mm" "14906" 2.133858
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.133858 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 2.133858 0.000000
+ END
+TURNOUT N "Minitrix Gerade-76,3mm 14905"
+ U "Straight Section" "" "Minitrix" "Gerade-76,3mm" "14905" 3.003937
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.003937 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.003937 0.000000
+ END
+TURNOUT N "Minitrix Gerade-10,42mm 14904"
+ U "Straight Section" "" "Minitrix" "Gerade-10,42mm" "14904" 4.102362
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.102362 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.102362 0.000000
+ END
+TURNOUT N "Minitrix Gerade-312,6mm 14902"
+ U "Straight Section" "" "Minitrix" "Gerade-312,6mm" "14902" 12.307087
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.307087 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 12.307087 0.000000
+ END
+############################################################################
+SUBCONTENTS Bögen
+#################
+TURNOUT N "Minitrix Bogen-R1-6 14916"
+ U "Curved Section" "" "Minitrix" "Bogen-R1-6" "14916" 7.661417 6.000000
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.800836 0.041970 84.000000
+ C 0 0.000000 -7.661417 0.000000 7.661417 174.000000 6.000000
+ END
+TURNOUT N "Minitrix Bogen-R1-24 14914"
+ U "Curved Section" "" "Minitrix" "Bogen-R1-24" "14914" 7.661417 24.000000
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.116179 0.662364 66.000000
+ C 0 0.000000 -7.661417 0.000000 7.661417 156.000000 24.000000
+ END
+TURNOUT N "Minitrix Bogen-R1-30 14912"
+ U "Curved Section" "" "Minitrix" "Bogen-R1-30" "14912" 7.661417 30.000000
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.830709 1.026435 60.000000
+ C 0 0.000000 -7.661417 -0.000000 7.661417 150.000000 30.000000
+ END
+TURNOUT N "Minitrix Bogen-R2-6 14926"
+ U "Curved Section" "" "Minitrix" "Bogen-R2-6" "14926" 8.984252 6.000000
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.939110 0.049217 84.000000
+ C 0 0.000000 -8.984252 0.000000 8.984252 174.000000 6.000000
+ END
+TURNOUT N "Minitrix Bogen-R2-24 14924"
+ U "Curved Section" "" "Minitrix" "Bogen-R2-24" "14924" 8.984252 24.000000
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.654224 0.776729 66.000000
+ C 0 0.000000 -8.984252 0.000000 8.984252 156.000000 24.000000
+ END
+TURNOUT N "Minitrix Bogen-R2-30 14922"
+ U "Curved Section" "" "Minitrix" "Bogen-R2-30" "14922" 8.984252 30.000000
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.492126 1.203662 60.000000
+ C 0 0.000000 -8.984252 -0.000000 8.984252 150.000000 30.000000
+ END
+TURNOUT N "Minitrix Bogen-R3-15 14917"
+ U "Curved Section" "" "Minitrix" "Bogen-R3-15" "14917" 12.952756 15.000000
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.352420 0.441354 75.000000
+ C 0 0.000000 -12.952756 0.000000 12.952756 165.000000 15.000000
+ END
+TURNOUT N "Minitrix Bogen-R4-15 14927"
+ U "Curved Section" "" "Minitrix" "Bogen-R4-15" "14927" 14.275591 15.000000
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.694795 0.486429 75.000000
+ C 0 0.000000 -14.275591 0.000000 14.275591 165.000000 15.000000
+ END
+TURNOUT N "Minitrix Bogen-R5-15 14918"
+ U "Curved Section" "" "Minitrix" "Bogen-R5-15" "14918" 19.393701 15.000000
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.019459 0.660824 75.000000
+ C 0 0.000000 -19.393701 0.000000 19.393701 165.000000 15.000000
+ END
+TURNOUT N "Minitrix Bogen-R6-15 14928"
+ U "Curved Section" "" "Minitrix" "Bogen-R6-15" "14928" 20.716535 15.000000
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.361834 0.705899 75.000000
+ C 0 0.000000 -20.716535 0.000000 20.716535 165.000000 15.000000
+ END
+###########################################################################
+SUBCONTENTS Weichen
+###################
+TURNOUT N "Minitrix Weiche-R1-24-L 14961"
+ U "Regular Turnout" "" "Minitrix" "Weiche-R1-24-L" "14961" "Weiche-R1-24-R" "14963" 3.116179 24.000000 0.662364 4.102362
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 4.102362 0.000000 90.000000
+ E 3.116179 0.662364 66.000000
+ S 0 0.000000 0.000000 0.000000 0.353100 0.000000
+ S 0 0.000000 0.353100 0.000000 4.102362 0.000000
+ C 0 0.000000 -6.000212 0.353100 6.000212 156.000000 24.000000
+ S 0 0.000000 2.793606 0.518746 3.116179 0.662364
+ END
+TURNOUT N "Minitrix Weiche-R1-24-R 14963"
+ U "Regular Turnout" "" "Minitrix" "Weiche-R1-24-L" "14961" "Weiche-R1-24-R" "14963" 3.116179 24.000000 0.662364 4.102362
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 4.102362 0.000000 90.000000
+ E 3.116179 -0.662364 114.000000
+ S 0 0.000000 0.000000 0.000000 0.353100 0.000000
+ S 0 0.000000 0.353100 0.000000 4.102362 0.000000
+ C 0 0.000000 6.000212 0.353100 -6.000212 0.000000 24.000000
+ S 0 0.000000 2.793606 -0.518746 3.116179 -0.662364
+ END
+TURNOUT N "Minitrix Weiche-R4-15-L 14936"
+ U "Regular Turnout" "" "Minitrix" "Weiche-R4-15-L" "14936" "Weiche-R4-15-R" "14937" 4.348886 15.000000 0.661692 4.433071
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 4.433071 0.000000 90.000000
+ E 4.348886 0.661692 75.000000
+ S 0 0.000000 0.000000 0.000000 0.353100 0.000000
+ S 0 0.000000 0.353100 0.000000 4.433071 0.000000
+ C 0 0.000000 -11.593530 0.353100 11.593530 165.000000 15.000000
+ S 0 0.000000 3.353726 0.395040 4.348886 0.661692
+ END
+TURNOUT N "Minitrix Weiche-R4-15-R 14937"
+ U "Regular Turnout" "" "Minitrix" "Weiche-R4-15-L" "14936" "Weiche-R4-15-R" "14937" 4.348886 15.000000 0.661692 4.433071
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 4.433071 0.000000 90.000000
+ E 4.348886 -0.661692 105.000000
+ S 0 0.000000 0.000000 0.000000 0.353100 0.000000
+ S 0 0.000000 0.353100 0.000000 4.433071 0.000000
+ C 0 0.000000 11.593530 0.353100 -11.593530 0.000000 15.000000
+ S 0 0.000000 3.353726 -0.395040 4.348886 -0.661692
+ END
+TURNOUT N "Minitrix Bogenweiche-R1/R2-42-L 14966"
+ U "Curved Turnout" "" "Minitrix" "Bogenweiche-R1/R2-42-L" "14966" "Bogenweiche-R1/R2-42-R" "14967" 5.126489 42.000000 1.967875 42.000000 2.307652 6.011638
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 6.011638 2.307652 48.000000
+ E 5.126489 1.967875 48.000000
+ S 0 0.000000 0.000000 0.000000 0.353100 0.000000
+ C 0 0.000000 -6.741560 0.353100 6.741560 138.000000 42.000000
+ S 0 0.000000 4.864084 1.731605 5.126489 1.967875
+ C 0 0.000000 -8.064395 0.353100 8.064395 138.000000 42.000000
+ S 0 0.000000 5.749234 2.071382 6.011638 2.307652
+ END
+TURNOUT N "Minitrix Bogenweiche-R1/R2-42-R 14967"
+ U "Curved Turnout" "" "Minitrix" "Bogenweiche-R1/R2-42-L" "14966" "Bogenweiche-R1/R2-42-R" "14967" 5.126489 42.000000 1.967875 42.000000 2.307652 6.011638
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 6.011638 -2.307652 132.000000
+ E 5.126489 -1.967875 132.000000
+ S 0 0.000000 0.000000 0.000000 0.353100 0.000000
+ C 0 0.000000 6.741560 0.353100 -6.741560 0.000000 42.000000
+ S 0 0.000000 4.864084 -1.731605 5.126489 -1.967875
+ C 0 0.000000 8.064395 0.353100 -8.064395 0.000000 42.000000
+ S 0 0.000000 5.749234 -2.071382 6.011638 -2.307652
+ END
+TURNOUT N "Minitrix Bogenweiche-R3/R4-30-L 14970"
+ U "Curved Turnout" "" "Minitrix" "Bogenweiche-R3/R4-30-L" "14970" "Bogenweiche-R3/R4-30-R" "14971" 6.476378 30.000000 1.735340 30.000000 1.720571 7.137795
+ P "Normal" 1 6 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 7.137795 1.720571 60.000000
+ E 6.476378 1.735340 60.000000
+ S 0 0.000000 0.000000 0.000000 0.353100 0.000000
+ C 0 0.000000 -11.634969 0.353100 11.634969 150.000000 30.000000
+ S 0 0.000000 6.170584 1.558790 6.476378 1.735340
+ C 0 0.000000 -11.524733 1.069635 11.524733 150.000000 30.000000
+ S 0 0.000000 6.832002 1.544021 7.137795 1.720571
+ S 0 0.000000 0.353100 0.000000 1.069635 0.000000
+ END
+TURNOUT N "Minitrix Bogenweiche-R3/R4-30-R 14971"
+ U "Curved Turnout" "" "Minitrix" "Bogenweiche-R3/R4-30-L" "14970" "Bogenweiche-R3/R4-30-R" "14971" 6.476378 30.000000 1.735340 30.000000 1.720571 7.137795
+ P "Normal" 1 6 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 7.137795 -1.720571 120.000000
+ E 6.476378 -1.735340 120.000000
+ S 0 0.000000 0.000000 0.000000 0.353100 0.000000
+ C 0 0.000000 11.634969 0.353100 -11.634969 0.000000 30.000000
+ S 0 0.000000 6.170584 -1.558790 6.476378 -1.735340
+ C 0 0.000000 11.524733 1.069635 -11.524733 0.000000 30.000000
+ S 0 0.000000 6.832002 -1.544021 7.137795 -1.720571
+ S 0 0.000000 0.353100 0.000000 1.069635 0.000000
+ END
+TURNOUT N "Minitrix Dreiwegweiche-R4-15 14940"
+ U "3-way Turnout" "" "Minitrix" "Dreiwegweiche-R4-15" "14940" 4.348886 15.000000 0.661692 4.433071 0.661692 15.000000 4.348886
+ P "Left" 1 2 3
+ P "Normal" 1 6
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 4.348886 0.661692 75.000000
+ E 4.348886 -0.661692 105.000000
+ E 4.433071 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.353100 0.000000
+ C 0 0.000000 -11.593530 0.353100 11.593530 165.000000 15.000000
+ S 0 0.000000 3.353726 0.395040 4.348886 0.661692
+ C 0 0.000000 11.593530 0.353100 -11.593530 0.000000 15.000000
+ S 0 0.000000 3.353726 -0.395040 4.348886 -0.661692
+ S 0 0.000000 0.353100 0.000000 4.433071 0.000000
+ END
+###########################################################################
+SUBCONTENTS Kreuzungen und DKWs
+###############################
+TURNOUT N "Minitrix Kreuzung-30 14958"
+ U "Crossing" "" "Minitrix" "Kreuzung-30" "14958" 4.102362 30.000000 4.102362
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.102362 0.000000 90.000000
+ E 0.274806 1.025591 300.000000
+ E 3.827556 -1.025591 120.000000
+ S 0 0.000000 0.000000 0.000000 4.102362 0.000000
+ S 0 0.000000 0.274806 1.025591 3.827556 -1.025591
+ END
+TURNOUT N "Minitrix Kreuzung-15 14973"
+ U "Crossing" "" "Minitrix" "Kreuzung-15" "14973" 5.110236 15.000000 5.110236
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 5.110236 0.000000 90.000000
+ E 0.087064 0.661313 285.000000
+ E 5.023173 -0.661313 105.000000
+ S 0 0.000000 0.000000 0.000000 5.110236 0.000000
+ S 0 0.000000 0.087064 0.661313 5.023173 -0.661313
+ END
+TURNOUT N "Minitrix DKW-30 14968"
+ U "Double Slipswitch" "" "Minitrix" "DKW-30" "14968" 4.102362 30.000000 4.102362
+ P "P1" 1 2 3
+ P "P2" 4 5 6
+ P "P3" 1 7 6
+ P "P4" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 4.102362 0.000000 90.000000
+ E 0.274806 1.025591 300.000000
+ E 3.827556 -1.025591 120.000000
+ S 0 0.000000 0.000000 0.000000 0.706200 0.000000
+ S 0 0.000000 0.706200 0.000000 3.396162 0.000000
+ S 0 0.000000 3.396162 0.000000 4.102362 0.000000
+ S 0 0.000000 0.274806 1.025591 0.886393 0.672491
+ S 0 0.000000 0.886393 0.672491 3.215969 -0.672491
+ S 0 0.000000 3.215969 -0.672491 3.827556 -1.025591
+ C 0 0.000000 5.019538 0.706200 -5.019538 0.000000 30.000000
+ C 0 0.000000 -5.019538 3.396162 5.019538 180.000000 30.000000
+ END
+TURNOUT N "Minitrix DKW-15 14960"
+ U "Double Slipswitch" "" "Minitrix" "DKW-15" "14960" 5.110236 15.000000 5.110236
+ P "P1" 1 2 3
+ P "P2" 4 5 6
+ P "P3" 1 7 6
+ P "P4" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 5.110236 0.000000 90.000000
+ E 0.087064 0.661313 285.000000
+ E 5.023173 -0.661313 105.000000
+ S 0 0.000000 0.000000 0.000000 0.706200 0.000000
+ S 0 0.000000 0.706200 0.000000 4.404036 0.000000
+ S 0 0.000000 4.404036 0.000000 5.110236 0.000000
+ S 0 0.000000 0.087064 0.661313 0.769200 0.478535
+ S 0 0.000000 0.769200 0.478535 4.341036 -0.478535
+ S 0 0.000000 4.341036 -0.478535 5.023173 -0.661313
+ C 0 0.000000 14.043927 0.706200 -14.043927 0.000000 15.000000
+ C 0 0.000000 -14.043927 4.404036 14.043927 180.000000 15.000000
+ END
diff --git a/app/lib/params/N-ModellbahnUnion.xtp b/app/lib/params/N-ModellbahnUnion.xtp
new file mode 100644
index 0000000..19519f0
--- /dev/null
+++ b/app/lib/params/N-ModellbahnUnion.xtp
@@ -0,0 +1,117 @@
+CONTENTS Modellbahn Union N Scale Track
+TURNOUT N "Modellbahn Union Turn Table 100mm Bridge 15d MU-N-B00085"
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ E 0.000000 1.968504 0.000000
+ E 0.509486 1.901429 15.000000
+ E 0.984252 1.704774 30.000000
+ E 1.391942 1.391942 45.000000
+ E 1.704774 0.984252 60.000000
+ E 1.901429 0.509486 75.000000
+ E 1.968504 0.000000 90.000000
+ E 1.901429 -0.509486 105.000000
+ E 1.704774 -0.984252 120.000000
+ E 1.391942 -1.391942 135.000000
+ E 0.984252 -1.704774 150.000000
+ E 0.509486 -1.901429 165.000000
+ E 0.000000 -1.968504 180.000000
+ E -0.509486 -1.901429 195.000000
+ E -0.984252 -1.704774 210.000000
+ E -1.391942 -1.391942 225.000000
+ E -1.704774 -0.984252 240.000000
+ E -1.901429 -0.509486 255.000000
+ E -1.968504 0.000000 270.000000
+ E -1.901429 0.509486 285.000000
+ E -1.704774 0.984252 300.000000
+ E -1.391942 1.391942 315.000000
+ E -0.984252 1.704774 330.000000
+ E -0.509486 1.901429 345.000000
+ S 16777215 0 0.000000 1.968504 0.000000 -1.968504
+ S 16777215 0 0.509486 1.901429 -0.509486 -1.901429
+ S 16777215 0 0.984252 1.704774 -0.984252 -1.704774
+ S 16777215 0 1.391942 1.391942 -1.391942 -1.391942
+ S 16777215 0 1.704774 0.984252 -1.704774 -0.984252
+ S 16777215 0 1.901429 0.509486 -1.901429 -0.509486
+ S 16777215 0 1.968504 0.000000 -1.968504 0.000000
+ S 16777215 0 1.901429 -0.509486 -1.901429 0.509486
+ S 16777215 0 1.704774 -0.984252 -1.704774 0.984252
+ S 16777215 0 1.391942 -1.391942 -1.391942 1.391942
+ S 16777215 0 0.984252 -1.704774 -0.984252 1.704774
+ S 16777215 0 0.509486 -1.901429 -0.509486 1.901429
+ G3 0 0.000000 0.070625 0.000000 0.000000 0
+ A3 8424071 0.031250 1.968504 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 2.460630 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 0.492126 0.000000 0.000000 0 0.000000 360.000000
+ END$SEGS
+TURNOUT N "Modellbahn Union Sector Plate 113mm Bridge (18d 106.5mm Radius) MU-N-B00069"
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ E 0.000000 0.000000 270.000000
+ E 3.987698 1.295681 72.000000
+ E 4.192913 0.000000 90.000000
+ E 3.987698 -1.295681 108.000000
+ S 16777215 0 -0.243381 -0.079079 3.987698 1.295681
+ S 16777215 0 -0.255906 0.000000 4.192913 0.000000
+ S 16777215 0 -0.243381 0.079079 3.987698 -1.295681
+ A3 0 0.031250 3.740157 0.000000 0.000000 0 67.000000 46.000000
+#OutsidePitWall
+ L3 0 0.020000 -0.521654 -0.600394 0 -0.521654 0.600394 0
+ L3 0 0.020000 -0.521654 0.600394 0 0.174191 0.600394 0
+ L3 0 0.020000 0.174191 0.600394 0 3.877134 1.937892 0
+ L3 0 0.020000 -0.521654 -0.600394 0 0.158475 -0.600394 0
+ L3 0 0.020000 0.158475 -0.600394 0 3.058253 -1.667985 0
+ L3 0 0.020000 3.058253 -1.667985 0 2.921675 -2.026747 0
+ L3 0 0.020000 2.921675 -2.026747 0 3.666036 -2.305476 0
+ A3 0 0.020000 4.330709 0.000000 0.000000 0 63.437092 58.727650
+#InsidePitWall
+ L3 0 0 -0.403543 -0.482283 0 -0.403543 0.482283 0
+ L3 0 0 -0.403543 0.482283 0 0.194868 0.482283 0
+ L3 0 0 0.194868 0.482283 0 3.813669 1.789390 0
+ L3 0 0 -0.403543 -0.482283 0 0.179527 -0.482283 0
+ L3 0 0 0.179527 -0.482283 0 3.211122 -1.598405 0
+ L3 0 0 3.211122 -1.598405 0 3.074309 -1.957782 0
+ L3 0 0 3.074309 -1.957782 0 3.616254 -2.160716 0
+ A3 0 0 4.212598 0.000000 0.000000 0 64.863829 55.994541
+ END$SEGS
+TURNOUT N "Modellbahn Union Sector Plate 113mm Bridge (18d 106.5mm Radius) MU-N-B00113"
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ E 0.000000 0.000000 270.000000
+ E 3.987698 1.295681 72.000000
+ E 4.192913 0.000000 90.000000
+ E 3.987698 -1.295681 108.000000
+ S 16777215 0 -0.243381 -0.079079 3.987698 1.295681
+ S 16777215 0 -0.255906 0.000000 4.192913 0.000000
+ S 16777215 0 -0.243381 0.079079 3.987698 -1.295681
+ A3 0 0.031250 3.740157 0.000000 0.000000 0 67.000000 46.000000
+#OutsidePitWall
+ L3 0 0.020000 -1.692913 -0.600394 0 -1.692913 0.600394 0
+ L3 0 0.020000 -1.692913 0.600394 0 0.174191 0.600394 0
+ L3 0 0.020000 0.174191 0.600394 0 3.877134 1.937892 0
+ L3 0 0.020000 -1.692913 -0.600394 0 0.158475 -0.600394 0
+ L3 0 0.020000 0.158475 -0.600394 0 3.058253 -1.667985 0
+ L3 0 0.020000 3.058253 -1.667985 0 2.921675 -2.026747 0
+ L3 0 0.020000 2.921675 -2.026747 0 3.666036 -2.305476 0
+ A3 0 0.020000 4.330709 0.000000 0.000000 0 63.437092 58.727650
+#InsidePitWall
+ L3 0 0 -0.403543 -0.482283 0 -0.403543 0.482283 0
+ L3 0 0 -0.403543 0.482283 0 0.194868 0.482283 0
+ L3 0 0 0.194868 0.482283 0 3.813669 1.789390 0
+ L3 0 0 -0.403543 -0.482283 0 0.179527 -0.482283 0
+ L3 0 0 0.179527 -0.482283 0 3.211122 -1.598405 0
+ L3 0 0 3.211122 -1.598405 0 3.074309 -1.957782 0
+ L3 0 0 3.074309 -1.957782 0 3.616254 -2.160716 0
+ A3 0 0 4.212598 0.000000 0.000000 0 64.863829 55.994541
+ END$SEGS
diff --git a/app/lib/params/N-PecoCode55Finescale.xtp b/app/lib/params/N-PecoCode55Finescale.xtp
index c3344ef..b88fd10 100644
--- a/app/lib/params/N-PecoCode55Finescale.xtp
+++ b/app/lib/params/N-PecoCode55Finescale.xtp
@@ -1,151 +1,151 @@
+CONTENTS Peco N-Scale Code55 Turnouts
CONTENTS Peco N Scale Code 55 Finescale Track
SUBCONTENTS Peco Code 55 - Turnouts
TURNOUT N "Peco-55 Small Right SL-E391F"
P "Normal" 1 2
P "Reverse" 1 3 4
E 0.000000 0.000000 270.000000
- E 4.897638 0.000000 90.000000
- E 4.897638 -0.522000 100.000000
+ E 4.842520 0.000000 90.000000
+ E 4.842520 -0.521654 100.000000
S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 4.897638 0.000000
- C 0 0.000000 18.093375 0.354228 -18.093375 0.000076 10.000152
- S 0 0.000000 3.496226 -0.274887 4.897638 -0.522000
- END
+ S 0 0.000000 0.354300 0.000000 4.842520 0.000000
+ C 0 0.000000 18.093375 0.354228 -18.093375 0.000000 10.000000
+ S 0 0.000000 3.496226 -0.274887 4.842520 -0.521654
+ END$SEGS
TURNOUT N "Peco-55 Small Left SL-E392F"
P "Normal" 1 2
P "Reverse" 1 3 4
E 0.000000 0.000000 270.000000
- E 4.897638 0.000000 90.000000
- E 4.897638 0.522000 80.000000
+ E 4.842520 0.000000 90.000000
+ E 4.842520 0.521654 80.000000
S 0 0.000000 0.000000 0.000000 0.354300 0.000000
- S 0 0.000000 0.354300 0.000000 4.897638 0.000000
- C 0 0.000000 -18.093375 0.354324 18.093375 169.999924 10.000152
- S 0 0.000000 3.496226 0.274887 4.897638 0.522000
- END
+ S 0 0.000000 0.354300 0.000000 4.842520 0.000000
+ C 0 0.000000 -18.093375 0.354324 18.093375 170.000000 10.000000
+ S 0 0.000000 3.496226 0.274887 4.842520 0.521654
+ END$SEGS
TURNOUT N "Peco-55 Medium Right SL-E395F"
P "Normal" 1 2
P "Reverse" 1 3 4
E 0.000000 0.000000 270.000000
E 5.393701 0.000000 90.000000
- E 5.393701 -0.522000 100.000000
+ E 5.393701 -0.521654 100.000000
S 0 0.000000 0.000000 0.000000 0.354300 0.000000
S 0 0.000000 0.354300 0.000000 5.393701 0.000000
- C 0 0.000000 23.763449 0.354205 -23.763449 0.000076 10.000152
- S 0 0.000000 4.480838 -0.361031 5.393701 -0.522000
- END
+ C 0 0.000000 23.763449 0.354205 -23.763449 0.000000 10.000000
+ S 0 0.000000 4.480838 -0.361031 5.393701 -0.521654
+ END$SEGS
TURNOUT N "Peco-55 Medium Left SL-E396F"
P "Normal" 1 2
P "Reverse" 1 3 4
E 0.000000 0.000000 270.000000
E 5.393701 0.000000 90.000000
- E 5.393701 0.522000 80.000000
+ E 5.393701 0.521654 80.000000
S 0 0.000000 0.000000 0.000000 0.354300 0.000000
S 0 0.000000 0.354300 0.000000 5.393701 0.000000
- C 0 0.000000 -23.763449 0.354332 23.763449 169.999924 10.000152
- S 0 0.000000 4.480838 0.361031 5.393701 0.522000
- END
+ C 0 0.000000 -23.763449 0.354332 23.763449 170.000000 10.000000
+ S 0 0.000000 4.480838 0.361031 5.393701 0.521654
+ END$SEGS
TURNOUT N "Peco-55 Large Right SL-E388F"
P "Normal" 1 2
P "Reverse" 1 3 4
E 0.000000 0.000000 270.000000
E 6.456693 0.000000 90.000000
- E 6.456693 -0.522000 100.000000
+ E 6.412446 -0.521654 100.000000
S 0 0.000000 0.000000 0.000000 0.844599 0.000000
S 0 0.000000 0.844599 0.000000 6.456693 0.000000
- C 0 0.000000 30.309454 0.844479 -30.309454 0.000076 10.000152
- S 0 0.000000 6.107856 -0.460482 6.456693 -0.522000
- END
+ C 0 0.000000 30.309454 0.844479 -30.309454 0.000000 10.000000
+ S 0 0.000000 6.107856 -0.460482 6.412446 -0.521654
+ END$SEGS
TURNOUT N "Peco-55 Large Left SL-E389F"
P "Normal" 1 2
P "Reverse" 1 3 4
E 0.000000 0.000000 270.000000
E 6.456693 0.000000 90.000000
- E 6.456693 0.522000 80.000000
+ E 6.412446 0.521654 80.000000
S 0 0.000000 0.000000 0.000000 0.844599 0.000000
S 0 0.000000 0.844599 0.000000 6.456693 0.000000
- C 0 0.000000 -30.309454 0.844639 30.309454 169.999924 10.000152
- S 0 0.000000 6.107856 0.460482 6.456693 0.522000
- END
+ C 0 0.000000 -30.309454 0.844639 30.309454 170.000000 10.000000
+ S 0 0.000000 6.107856 0.460482 6.412446 0.521654
+ END$SEGS
TURNOUT N "Peco-55 Wye SL-E397F"
P "Left" 1 2 3
P "Right" 1 4 5
E 0.000000 0.000000 270.000000
- E 4.875000 0.261000 85.000000
- E 4.875000 -0.261000 95.000000
+ E 4.881890 0.260827 85.000000
+ E 4.881890 -0.260827 95.000000
S 0 0.000000 0.000000 0.000000 0.353100 0.000000
C 0 0.000000 -35.241024 0.353100 35.241024 175.000000 5.000000
- S 0 0.000000 3.424558 0.134103 4.875000 0.261000
+ S 0 0.000000 3.424558 0.134103 4.881890 0.260827
C 0 0.000000 35.241024 0.353100 -35.241024 0.000000 5.000000
- S 0 0.000000 3.424558 -0.134103 4.875000 -0.261000
- END
+ S 0 0.000000 3.424558 -0.134103 4.881890 -0.260827
+ END$SEGS
TURNOUT N "Peco-55 3-Way Asymmetric SL-E399F"
P "Left" 1 2 3
P "Normal" 1 6
P "Right" 1 4 5
E 0.000000 0.000000 270.000000
- E 6.033465 0.522000 80.000000
- E 4.875000 -0.522000 100.000000
+ E 6.033465 0.523389 80.000000
+ E 4.941506 -0.525253 100.000000
E 6.033465 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 0.421365 0.000000
- C 0 0.000000 -30.309491 0.421405 30.309491 169.999924 10.000152
- S 0 0.000000 5.684628 0.460482 6.033465 0.522000
- C 0 0.000000 17.834620 0.353498 -17.834491 0.217878 9.784734
- S 0 0.000000 3.451293 -0.270956 4.875000 -0.522000
- S 0 0.000000 0.421365 0.000000 6.033465 0.000000
- END
+ S 0 0.000000 0.000000 0.000000 0.405401 0.000000
+ C 0 0.000000 -30.401392 0.405401 30.401392 170.000000 10.000000
+ S 0 0.000000 5.684548 0.461865 6.033465 0.523389
+ C 0 0.000000 18.383504 0.353891 -18.383432 0.160543 9.840752
+ S 0 0.000000 3.546562 -0.279287 4.941506 -0.525253
+ S 0 0.000000 0.405401 0.000000 6.033465 0.000000
+ END$SEGS
TURNOUT N "Peco-55 Curved Right SL-E386F"
- U "Cornu Curved Turnout" "" "Peco-55" "Left" "L" "Right" "R" 6.048031 19.633000 1.046457 17.992126 9.815000 0.526772 35.984252 6.137008 35.984252 0.812000 0.000000 0.000000 0
P "Normal" 1 2 3 4
P "Reverse" 1 2 5 6 7
E 0.000000 0.000000 270.000000
E 6.137008 -0.526772 99.815000
E 6.048031 -1.046457 109.633000
C 0 0.000000 35.984252 0.000000 -35.984252 0.000000 0.318449
- S 0 0.000000 0.199999 -0.000556 0.811855 -0.007644
- C 0 0.000000 35.479016 0.040034 -35.478264 1.246526 8.325658
+ S 0 0.000000 0.199999 -0.000556 0.249998 -0.000732
+ C 0 0.000000 35.417758 0.050634 -35.417928 0.322516 9.248991
C 0 0.000000 35.984252 0.002864 -35.984333 9.496551 0.318449
- C 0 0.000000 13.822756 0.627929 -13.829176 0.762400 10.700481
- C 0 0.000000 20.780632 -0.994239 -20.598252 12.137227 7.119631
+ C 0 0.000000 16.099920 0.301422 -16.100570 359.816995 10.181213
+ C 0 0.000000 19.147709 -0.432227 -19.064875 10.620177 8.562309
C 0 0.000000 17.992126 0.002783 -17.992594 18.996102 0.636898
- END
+ END$SEGS
TURNOUT N "Peco-55 Curved Left SL-E387F"
- U "Cornu Curved Turnout" "" "Peco-55" "Left" "L" "Right" "R" 6.048031 19.633000 1.046457 17.992126 9.815000 0.526772 35.984252 6.137008 35.984252 0.812000 0.000000 0.000000 0
P "Normal" 1 2 3 4
P "Reverse" 1 2 5 6 7
E 0.000000 0.000000 270.000000
E 6.137008 0.526772 80.185000
E 6.048031 1.046457 70.367000
C 0 0.000000 -35.984252 0.000000 35.984252 179.681551 0.318449
- S 0 0.000000 0.199999 0.000556 0.811855 0.007644
- C 0 0.000000 -35.479016 0.040034 35.478264 170.427816 8.325658
+ S 0 0.000000 0.199999 0.000556 0.249998 0.000732
+ C 0 0.000000 -35.417758 0.050634 35.417928 170.428493 9.248991
C 0 0.000000 -35.984252 0.002864 35.984333 170.185000 0.318449
- C 0 0.000000 -13.822756 0.627929 13.829176 168.537119 10.700481
- C 0 0.000000 -20.780632 -0.994239 20.598252 160.743142 7.119631
+ C 0 0.000000 -16.099920 0.301422 16.100570 170.001792 10.181213
+ C 0 0.000000 -19.147709 -0.432227 19.064875 160.817514 8.562309
C 0 0.000000 -17.992126 0.002783 17.992594 160.367000 0.636898
- END
+ END$SEGS
TURNOUT N "Peco-55 Scissors Crossover SL-E383F"
P "Normal" 1 2 3 0 4 5 6
P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
E 0.000000 0.000000 270.000000
- E 10.660000 0.000000 90.000000
- E 0.000000 1.044000 270.000000
- E 10.660000 1.044000 90.000000
+ E 10.662992 0.000000 90.000000
+ E 0.000000 1.043307 270.000000
+ E 10.662992 1.043307 90.000000
S 0 0 0.000000 0.000000 0.652040 0.000000
S 0 0 0.652040 0.000000 10.007960 0.000000
- S 0 0 10.007960 0.000000 10.660000 0.000000
- S 0 0 0.000000 1.044000 0.652040 1.044000
- S 0 0 0.652040 1.044000 10.007960 1.044000
- S 0 0 10.007960 1.044000 10.660000 1.044000
+ S 0 0 10.007960 0.000000 10.662992 0.000000
+ S 0 0 0.000000 1.043307 0.652040 1.043307
+ S 0 0 0.652040 1.043307 10.007960 1.043307
+ S 0 0 10.007960 1.043307 10.662992 1.043307
C 0 0 -21.102603 0.652040 21.102603 168.152890 11.847110
S 0 0 4.984421 0.449508 5.675579 0.594492
C 0 0 21.102603 10.007960 -20.058603 348.152890 11.847110
C 0 0 21.102603 0.652040 -20.058603 0.000000 11.847110
S 0 0 4.984421 0.594492 5.675579 0.449508
C 0 0 -21.102603 10.007960 21.102603 180.000000 11.847110
- END
-TURNOUT N "Peco-55 Single Slip SL-380F"
- P "Normal" 1 2 0 3 4
- P "Reverse" 1 5 4
+ END$SEGS
+TURNOUT N "Peco-55 Single Slip SL-E380F"
+ P "1" 1 2
+ P "2" 3 4
+ P "3" 1 5 4
E 0.000000 0.000000 270.000000
E 6.062992 0.000000 90.000000
E 0.046054 0.526409 280.000000
@@ -154,13 +154,13 @@ TURNOUT N "Peco-55 Single Slip SL-380F"
S 0 0.000000 0.706327 0.000000 6.062992 0.000000
S 0 0.000000 0.046054 0.526409 5.321536 -0.403784
S 0 0.000000 5.321536 -0.403784 6.016938 -0.526409
- C 0 0.000000 26.577553 0.706221 -26.577553 0.000076 10.000152
- END
-TURNOUT N "Peco-55 Double Slip SL-390F" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 7 6
- P "Slip2" 4 8 3
+ C 0 0.000000 26.577553 0.706221 -26.577553 0.000000 10.000000
+ END$SEGS
+TURNOUT N "Peco-55 Double Slip SL-E390F" 512
+ P "P1" 1 2 3
+ P "P2" 4 5 6
+ P "P3" 1 7 6
+ P "P4" 4 8 3
E 0.000000 0.000000 270.000000
E 6.062992 0.000000 90.000000
E 0.046054 0.526409 280.000000
@@ -171,12 +171,12 @@ TURNOUT N "Peco-55 Double Slip SL-390F" 512
S 0 0.000000 0.046054 0.526409 0.741456 0.403784
S 0 0.000000 0.741456 0.403784 5.321536 -0.403784
S 0 0.000000 5.321536 -0.403784 6.016938 -0.526409
- C 0 0.000000 26.577552 0.706221 -26.577552 0.000076 10.000152
- C 0 0.000000 -26.577552 5.356700 26.577546 180.000076 10.000152
- END
+ C 0 0.000000 26.577552 0.706221 -26.577552 0.000000 10.000000
+ C 0 0.000000 -26.577552 5.356700 26.577546 180.000000 10.000000
+ END$SEGS
SUBCONTENTS Peco Code 55 - Crossings
-TURNOUT N "Peco-55 Long Crossing 10d SL-394F"
+TURNOUT N "Peco-55 Crossing 10d SL-E394F"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 6.062992 0.000000 90.000000
@@ -184,7 +184,7 @@ TURNOUT N "Peco-55 Long Crossing 10d SL-394F"
E 6.016938 -0.526409 100.000000
S 0 0.000000 0.000000 0.000000 6.062992 0.000000
S 0 0.000000 0.046054 0.526409 6.016938 -0.526409
- END
+ END$SEGS
TURNOUT N "Peco-55 Short Crossing 20d SL-E393F"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
@@ -193,7 +193,7 @@ TURNOUT N "Peco-55 Short Crossing 20d SL-E393F"
E 3.959569 -0.698179 110.000000
S 0 0.000000 0.000000 0.000000 4.082677 0.000000
S 0 0.000000 0.123108 0.698179 3.959569 -0.698179
- END
+ END$SEGS
SUBCONTENTS Peco Code 55 - Turn Tables
TURNOUT N "Peco Turn Table NB-55" 512
@@ -236,12 +236,12 @@ TURNOUT N "Peco Turn Table NB-55" 512
E 0.000000 -3.218750 180.000000
E -0.558930 -3.169850 190.000000
E -1.100877 -3.024636 200.000000
- E -1.609375 -2.787519 210.000000
+ E -1.609375 -2.787519 210.000000
E -2.068973 -2.465706 220.000000
- E -2.465706 -2.068973 230.000000
+ E -2.465706 -2.068973 230.000000
E -2.787519 -1.609375 240.000000
E -3.024636 -1.100877 250.000000
- E -3.169850 -0.558930 260.000000
+ E -3.169850 -0.558930 260.000000
E -3.218750 0.000000 270.000000
E -3.169850 0.558930 280.000000
E -3.024636 1.100877 290.000000
@@ -270,7 +270,7 @@ TURNOUT N "Peco Turn Table NB-55" 512
S 16777215 0.000000 2.298133 1.928363 -2.298133 -1.928363
S 0 0.000000 -2.298133 -1.928363 -2.465706 -2.068973
S 0 0.000000 2.787519 1.609375 2.598076 1.500000
- S 16777215 0.000000 2.598076 1.500000 -2.598076 -1.500000
+ S 16777215 0.000000 2.598076 1.500000 -2.598076 -1.500000
S 0 0.000000 -2.598076 -1.500000 -2.787519 -1.609375
S 0 0.000000 3.024636 1.100877 2.819078 1.026060
S 16777215 0.000000 2.819078 1.026060 -2.819078 -1.026060
@@ -293,7 +293,7 @@ TURNOUT N "Peco Turn Table NB-55" 512
S 0 0.000000 2.465706 -2.068973 2.298133 -1.928363
S 16777215 0.000000 2.298133 -1.928363 -2.298133 1.928363
S 0 0.000000 -2.298133 1.928363 -2.465706 2.068973
- S 0 0.000000 2.068973 -2.465706 1.928363 -2.298133
+ S 0 0.000000 2.068973 -2.465706 1.928363 -2.298133
S 16777215 0.000000 1.928363 -2.298133 -1.928363 2.298133
S 0 0.000000 -1.928363 2.298133 -2.068973 2.465706
S 0 0.000000 1.609375 -2.787519 1.500000 -2.598076
@@ -308,9 +308,9 @@ TURNOUT N "Peco Turn Table NB-55" 512
A3 0 0.031250 3.000000 0.000000 0.000000 0 0.000000 360.000000
G3 0 0.000000 0.01 0.000000 0.000000 0
A 0 0.000000 3.218750 0.000000 0.000000 0.000000 360.000000
- END
+ END$SEGS
-SUBCONTENTS Peco Code 55/80 - Misc Track
+SUBCONTENTS Peco Code 55/80 - Inspection Pit
TURNOUT N "Peco Code 55/80 Inspection Pit NB-56F"
P "Normal" 1
E 0.000000 0.000000 270.000000
@@ -353,7 +353,7 @@ TURNOUT N "Peco Code 55/80 Inspection Pit NB-56F"
L 0 0.020000 0.000000 0.160000 6.732283 0.160000
L 0 0.020000 0.000000 -0.160000 6.732283 -0.160000
L 0 0.020000 0.000000 -0.300000 6.732283 -0.300000
-END
+END$SEGS
TURNOUT N "Peco Code 55/80 Inspection Pit(Stair End) NB-56FA"
P "Normal" 1
E 0.000000 0.000000 270.000000
@@ -380,8 +380,7 @@ TURNOUT N "Peco Code 55/80 Inspection Pit(Stair End) NB-56FA"
L 0 0.020000 0.000000 0.160000 1.122047 0.160000
L 0 0.020000 0.000000 -0.160000 1.122047 -0.160000
L 0 0.020000 0.000000 -0.300000 1.122047 -0.300000
-
-END
+END$SEGS
TURNOUT N "Peco Code 55/80 Inspection Pit(Mid Section) NB-56FB"
P "Normal" 1
E 0.000000 0.000000 270.000000
@@ -397,4 +396,181 @@ TURNOUT N "Peco Code 55/80 Inspection Pit(Mid Section) NB-56FB"
L 0 0.020000 0.000000 0.160000 1.122047 0.160000
L 0 0.020000 0.000000 -0.160000 1.122047 -0.160000
L 0 0.020000 0.000000 -0.300000 1.122047 -0.300000
-END
+END$SEGS
+
+
+SUBCONTENTS Peco - Turnout Motors
+STRUCTURE * "Peco Turnout Motor PL-10"
+#Cutout Outline
+ Y4 6908265 0.000000 4 0
+ -0.472441 -1.102362 0
+ 0.472441 -1.102362 0
+ 0.472441 0.472441 0
+ -0.472441 0.472441 0
+#Vertical Right
+ Y4 6908265 0.000000 4 0
+ 0.305118 0.433071 0
+ 0.334646 0.433071 0
+ 0.334646 -1.062992 0
+ 0.305118 -1.062992 0
+#Vertical Left
+ Y4 6908265 0.000000 4 0
+ -0.334646 0.433071 0
+ -0.305118 0.433071 0
+ -0.305118 -1.062992 0
+ -0.334646 -1.062992 0
+#Horizonal Row1
+ Y4 6908265 0.000000 4 0
+ -0.433071 0.329724 0
+ 0.433071 0.329724 0
+ 0.433071 0.300197 0
+ -0.433071 0.300197 0
+#Horizonal Row2
+ Y4 6908265 0.000000 4 0
+ -0.433071 -0.177165 0
+ 0.433071 -0.177165 0
+ 0.433071 -0.147638 0
+ -0.433071 -0.147638 0
+#Horizonal Row3
+ Y4 6908265 0.000000 4 0
+ -0.433071 -0.482283 0
+ 0.433071 -0.482283 0
+ 0.433071 -0.452756 0
+ -0.433071 -0.452756 0
+#Horizonal Row4
+ Y4 6908265 0.000000 4 0
+ -0.433071 -0.959646 0
+ 0.433071 -0.959646 0
+ 0.433071 -0.930118 0
+ -0.433071 -0.930118 0
+#ThrowRod
+ Y4 6908265 0.000000 4 0
+ -0.059055 -0.177165 0
+ 0.059055 -0.177165 0
+ 0.059055 -0.452756 0
+ -0.059055 -0.452756 0
+ L3 6908265 0.000000 0.019685 -0.393701 0 0.019685 -0.236220 0
+ L3 6908265 0.000000 -0.019685 -0.236220 0 -0.019685 -0.393701 0
+ A3 6908265 0.000000 0.019685 0.000000 -0.393701 0 90.000000 180.000000
+ A3 6908265 0.000000 0.019685 0.000000 -0.236220 0 270.000000 180.000000
+ G3 6908265 0 0.019685 0.000000 -0.314961 0
+#UpperCoil
+ Y4 6908265 0.000000 4 0
+ -0.251969 0.300197 0
+ 0.251969 0.300197 0
+ 0.251969 -0.147638 0
+ -0.251969 -0.147638 0
+ L3 12500670 0.000000 -0.296875 -0.131397 0 0.296875 -0.006397 0
+ L3 12500670 0.000000 -0.296875 -0.092027 0 0.296875 0.032973 0
+ L3 12500670 0.000000 -0.296875 -0.052657 0 0.296875 0.072343 0
+ L3 12500670 0.000000 -0.296875 -0.013287 0 0.296875 0.111713 0
+ L3 12500670 0.000000 -0.296875 0.026083 0 0.296875 0.151083 0
+ L3 12500670 0.000000 -0.296875 0.065453 0 0.296875 0.190453 0
+ L3 12500670 0.000000 -0.296875 0.104823 0 0.296875 0.229823 0
+ L3 12500670 0.000000 -0.296875 0.144193 0 0.296875 0.283956 0
+ A3 16711680 0 0.039370 0.374016 -0.698819 0 0.000000 360.000000
+ A3 16711680 0 0.039370 0.374016 0.068898 0 0.000000 360.000000
+#LowerCoil
+ Y4 6908265 0.000000 4 0
+ -0.251969 -0.482283 0
+ 0.251969 -0.482283 0
+ 0.251969 -0.930118 0
+ -0.251969 -0.930118 0
+ L3 12500670 0.000000 -0.296875 -0.623524 0 0.296875 -0.498524 0
+ L3 12500670 0.000000 -0.296875 -0.662894 0 0.296875 -0.537894 0
+ L3 12500670 0.000000 -0.296875 -0.702264 0 0.296875 -0.577264 0
+ L3 12500670 0.000000 -0.296875 -0.741634 0 0.296875 -0.616634 0
+ L3 12500670 0.000000 -0.296875 -0.781004 0 0.296875 -0.656004 0
+ L3 12500670 0.000000 -0.296875 -0.820374 0 0.296875 -0.695374 0
+ L3 12500670 0.000000 -0.296875 -0.859744 0 0.296875 -0.734744 0
+ L3 12500670 0.000000 -0.296875 -0.899114 0 0.296875 -0.774114 0
+ A3 16711680 0 0.039370 -0.374016 -0.698819 0 0.000000 360.000000
+ A3 16711680 0 0.039370 -0.374016 0.068898 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE * "Peco Turnout Motor(Ext Op Pin) PL-10E"
+#Cutout Outline
+ Y4 6908265 0.000000 4 0
+ -0.472441 -1.102362 0
+ 0.472441 -1.102362 0
+ 0.472441 0.472441 0
+ -0.472441 0.472441 0
+#Vertical Right
+ Y4 6908265 0.000000 4 0
+ 0.305118 0.433071 0
+ 0.334646 0.433071 0
+ 0.334646 -1.062992 0
+ 0.305118 -1.062992 0
+#Vertical Left
+ Y4 6908265 0.000000 4 0
+ -0.334646 0.433071 0
+ -0.305118 0.433071 0
+ -0.305118 -1.062992 0
+ -0.334646 -1.062992 0
+#Horizonal Row1
+ Y4 6908265 0.000000 4 0
+ -0.433071 0.329724 0
+ 0.433071 0.329724 0
+ 0.433071 0.300197 0
+ -0.433071 0.300197 0
+#Horizonal Row2
+ Y4 6908265 0.000000 4 0
+ -0.433071 -0.177165 0
+ 0.433071 -0.177165 0
+ 0.433071 -0.147638 0
+ -0.433071 -0.147638 0
+#Horizonal Row3
+ Y4 6908265 0.000000 4 0
+ -0.433071 -0.482283 0
+ 0.433071 -0.482283 0
+ 0.433071 -0.452756 0
+ -0.433071 -0.452756 0
+#Horizonal Row4
+ Y4 6908265 0.000000 4 0
+ -0.433071 -0.959646 0
+ 0.433071 -0.959646 0
+ 0.433071 -0.930118 0
+ -0.433071 -0.930118 0
+#ThrowRod
+ Y4 6908265 0.000000 4 0
+ -0.059055 -0.177165 0
+ 0.059055 -0.177165 0
+ 0.059055 -0.452756 0
+ -0.059055 -0.452756 0
+ L3 6908265 0.000000 0.019685 -0.393701 0 0.019685 -0.236220 0
+ L3 6908265 0.000000 -0.019685 -0.236220 0 -0.019685 -0.393701 0
+ A3 6908265 0.000000 0.019685 0.000000 -0.393701 0 90.000000 180.000000
+ A3 6908265 0.000000 0.019685 0.000000 -0.236220 0 270.000000 180.000000
+ G3 6908265 0 0.019685 0.000000 -0.314961 0
+#UpperCoil
+ Y4 6908265 0.000000 4 0
+ -0.251969 0.300197 0
+ 0.251969 0.300197 0
+ 0.251969 -0.147638 0
+ -0.251969 -0.147638 0
+ L3 12500670 0.000000 -0.296875 -0.131397 0 0.296875 -0.006397 0
+ L3 12500670 0.000000 -0.296875 -0.092027 0 0.296875 0.032973 0
+ L3 12500670 0.000000 -0.296875 -0.052657 0 0.296875 0.072343 0
+ L3 12500670 0.000000 -0.296875 -0.013287 0 0.296875 0.111713 0
+ L3 12500670 0.000000 -0.296875 0.026083 0 0.296875 0.151083 0
+ L3 12500670 0.000000 -0.296875 0.065453 0 0.296875 0.190453 0
+ L3 12500670 0.000000 -0.296875 0.104823 0 0.296875 0.229823 0
+ L3 12500670 0.000000 -0.296875 0.144193 0 0.296875 0.283956 0
+ A3 16711680 0 0.039370 0.374016 -0.698819 0 0.000000 360.000000
+ A3 16711680 0 0.039370 0.374016 0.068898 0 0.000000 360.000000
+#LowerCoil
+ Y4 6908265 0.000000 4 0
+ -0.251969 -0.482283 0
+ 0.251969 -0.482283 0
+ 0.251969 -0.930118 0
+ -0.251969 -0.930118 0
+ L3 12500670 0.000000 -0.296875 -0.623524 0 0.296875 -0.498524 0
+ L3 12500670 0.000000 -0.296875 -0.662894 0 0.296875 -0.537894 0
+ L3 12500670 0.000000 -0.296875 -0.702264 0 0.296875 -0.577264 0
+ L3 12500670 0.000000 -0.296875 -0.741634 0 0.296875 -0.616634 0
+ L3 12500670 0.000000 -0.296875 -0.781004 0 0.296875 -0.656004 0
+ L3 12500670 0.000000 -0.296875 -0.820374 0 0.296875 -0.695374 0
+ L3 12500670 0.000000 -0.296875 -0.859744 0 0.296875 -0.734744 0
+ L3 12500670 0.000000 -0.296875 -0.899114 0 0.296875 -0.774114 0
+ A3 16711680 0 0.039370 -0.374016 -0.698819 0 0.000000 360.000000
+ A3 16711680 0 0.039370 -0.374016 0.068898 0 0.000000 360.000000
+ END$SEGS
diff --git a/app/lib/params/N-StreetTemplate2LaneCurves.xtp b/app/lib/params/N-StreetTemplate2LaneCurves.xtp
new file mode 100644
index 0000000..794e503
--- /dev/null
+++ b/app/lib/params/N-StreetTemplate2LaneCurves.xtp
@@ -0,0 +1,1256 @@
+CONTENTS N Scale Street Templates 2 Lane Curves
+#References TxDot Standards, Easy Street Templates, Bush Templates and Bachmann Templates
+#Road Overall Width 24' (1.8")
+#Lane Width 12' (0.9")
+#Stripe Width 4" (0.025")
+#Stripe CL Spacing 8" (0.05")
+#R1 Curve CL Radius 26.5'R (1.9875")
+#R2 Curve CL Radius 66.5'R (4.9875")
+#R3 Curve CL Radius 106.5'R (7.9875")
+#R4 Curve CL Radius 146.5'R (10.9875")
+# Not Designed to be used in Run Train Mode
+
+SUBCONTENTS N Scale Street Templates - Radius 1 Curves (No Striping)
+TURNOUT N "N Street Template 7.5d Radius 1 Curve(NoStriping) STC-001"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.259421 -0.017003 97.500000
+ C 16777215 0 1.987500 0.000000 -1.987500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 0.900000 0
+ 0.188852 0.893818 0
+ 0.376894 0.875297 0
+ 0.141947 -0.909304 0
+ 0.071126 -0.902328 0
+ 0.000000 -0.900000 0
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 1 Curve(NoStriping) STC-002"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.760583 -0.151289 112.500000
+ C 16777215 0 1.987500 0.000000 -1.987500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 10 1
+ 0.000000 0.900000 0
+ 0.283024 0.886096 0
+ 0.563323 0.844517 0
+ 0.838197 0.775665 0
+ 1.104998 0.680202 0
+ 0.416168 -0.982781 0
+ 0.315685 -0.946827 0
+ 0.212161 -0.920896 0
+ 0.106594 -0.905237 0
+ 0.000000 -0.900000 0
+END$SEGS
+TURNOUT N "N Street Template 45d Radius 1 Curve(NoStriping) STC-003"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.405375 -0.582125 135.000000
+ C 16777215 0 1.987500 0.000000 -1.987500 0.000000 45.000000
+#StreetBackground
+ F4 5263440 0.000000 18 1
+ 0.000000 0.900000 0
+ 0.283024 0.886096 0
+ 0.563323 0.844517 0
+ 0.838197 0.775665 0
+ 1.104998 0.680202 0
+ 1.361158 0.559048 0
+ 1.604209 0.413369 0
+ 1.831811 0.244568 0
+ 2.041771 0.054271 0
+ 0.768979 -1.218521 0
+ 0.689903 -1.146851 0
+ 0.604183 -1.083277 0
+ 0.512644 -1.028411 0
+ 0.416168 -0.982781 0
+ 0.315685 -0.946827 0
+ 0.212161 -0.920896 0
+ 0.106594 -0.905237 0
+ 0.000000 -0.900000 0
+END$SEGS
+TURNOUT N "N Street Template 90d Radius 1 Curve(NoStriping) STC-004"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.987500 -1.987500 180.000000
+ C 16777215 0 1.987500 0.000000 -1.987500 0.000000 90.000000
+#StreetBackground
+ F4 5263440 0.000000 34 1
+ 0.000000 0.900000 0
+ 0.283024 0.886096 0
+ 0.563323 0.844517 0
+ 0.838197 0.775665 0
+ 1.104998 0.680202 0
+ 1.361158 0.559048 0
+ 1.604209 0.413369 0
+ 1.831811 0.244568 0
+ 2.041771 0.054271 0
+ 2.232068 -0.155689 0
+ 2.400869 -0.383291 0
+ 2.546548 -0.626342 0
+ 2.667702 -0.882502 0
+ 2.763165 -1.149303 0
+ 2.832017 -1.424177 0
+ 2.873596 -1.704476 0
+ 2.887500 -1.987500 0
+ 1.087500 -1.987500 0
+ 1.082263 -1.880906 0
+ 1.066604 -1.775339 0
+ 1.040673 -1.671815 0
+ 1.004719 -1.571332 0
+ 0.959089 -1.474856 0
+ 0.904223 -1.383317 0
+ 0.840649 -1.297597 0
+ 0.768979 -1.218521 0
+ 0.689903 -1.146851 0
+ 0.604183 -1.083277 0
+ 0.512644 -1.028411 0
+ 0.416168 -0.982781 0
+ 0.315685 -0.946827 0
+ 0.212161 -0.920896 0
+ 0.106594 -0.905237 0
+ 0.000000 -0.900000 0
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 1 Curves Two-Way Traffic (Double Passing)
+TURNOUT N "N Street Template 7.5d Radius 1 Curve(DoublePassing) STC-101"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.259421 -0.017003 97.500000
+ C 16777215 0 1.987500 0.000000 -1.987500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 0.900000 0
+ 0.188852 0.893818 0
+ 0.376894 0.875297 0
+ 0.141947 -0.909304 0
+ 0.071126 -0.902328 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 2.837500 0.000000 -1.987500 0 0.000000 7.500000
+ A3 16777215 0.025000 1.137500 0.000000 -1.987500 0 0.000000 7.500000
+#StreetDoublePassingLines
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 1 Curve(DoublePassing) STC-102"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.760583 -0.151289 112.500000
+ C 16777215 0 1.987500 0.000000 -1.987500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 10 1
+ 0.000000 0.900000 0
+ 0.283024 0.886096 0
+ 0.563323 0.844517 0
+ 0.838197 0.775665 0
+ 1.104998 0.680202 0
+ 0.416168 -0.982781 0
+ 0.315685 -0.946827 0
+ 0.212161 -0.920896 0
+ 0.106594 -0.905237 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 2.837500 0.000000 -1.987500 0 0.000000 22.500000
+ A3 16777215 0.025000 1.137500 0.000000 -1.987500 0 0.000000 22.500000
+#StreetDoublePassingLines
+END$SEGS
+TURNOUT N "N Street Template 45d Radius 1 Curve(DoublePassing) STC-103"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.405375 -0.582125 135.000000
+ C 16777215 0 1.987500 0.000000 -1.987500 0.000000 45.000000
+#StreetBackground
+ F4 5263440 0.000000 18 1
+ 0.000000 0.900000 0
+ 0.283024 0.886096 0
+ 0.563323 0.844517 0
+ 0.838197 0.775665 0
+ 1.104998 0.680202 0
+ 1.361158 0.559048 0
+ 1.604209 0.413369 0
+ 1.831811 0.244568 0
+ 2.041771 0.054271 0
+ 0.768979 -1.218521 0
+ 0.689903 -1.146851 0
+ 0.604183 -1.083277 0
+ 0.512644 -1.028411 0
+ 0.416168 -0.982781 0
+ 0.315685 -0.946827 0
+ 0.212161 -0.920896 0
+ 0.106594 -0.905237 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 2.837500 0.000000 -1.987500 0 0.000000 45.000000
+ A3 16777215 0.025000 1.137500 0.000000 -1.987500 0 0.000000 45.000000
+#StreetDoublePassingLines
+ A3 16776960 0.025000 1.987500 0.000000 -1.987500 0 11.250000 22.500000
+END$SEGS
+TURNOUT N "N Street Template 90d Radius 1 Curve(DoublePassing) STC-104"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.987500 -1.987500 180.000000
+ C 16777215 0 1.987500 0.000000 -1.987500 0.000000 90.000000
+#StreetBackground
+ F4 5263440 0.000000 34 1
+ 0.000000 0.900000 0
+ 0.283024 0.886096 0
+ 0.563323 0.844517 0
+ 0.838197 0.775665 0
+ 1.104998 0.680202 0
+ 1.361158 0.559048 0
+ 1.604209 0.413369 0
+ 1.831811 0.244568 0
+ 2.041771 0.054271 0
+ 2.232068 -0.155689 0
+ 2.400869 -0.383291 0
+ 2.546548 -0.626342 0
+ 2.667702 -0.882502 0
+ 2.763165 -1.149303 0
+ 2.832017 -1.424177 0
+ 2.873596 -1.704476 0
+ 2.887500 -1.987500 0
+ 1.087500 -1.987500 0
+ 1.082263 -1.880906 0
+ 1.066604 -1.775339 0
+ 1.040673 -1.671815 0
+ 1.004719 -1.571332 0
+ 0.959089 -1.474856 0
+ 0.904223 -1.383317 0
+ 0.840649 -1.297597 0
+ 0.768979 -1.218521 0
+ 0.689903 -1.146851 0
+ 0.604183 -1.083277 0
+ 0.512644 -1.028411 0
+ 0.416168 -0.982781 0
+ 0.315685 -0.946827 0
+ 0.212161 -0.920896 0
+ 0.106594 -0.905237 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 2.837500 0.000000 -1.987500 0 0.000000 90.000000
+ A3 16777215 0.025000 1.137500 0.000000 -1.987500 0 0.000000 90.000000
+#StreetDoublePassingLines
+ A3 16776960 0.025000 1.987500 0.000000 -1.987500 0 11.250000 22.500000
+ A3 16776960 0.025000 1.987500 0.000000 -1.987500 0 56.250000 22.500000
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 1 Curves Two-Way Traffic (No Passing)
+TURNOUT N "N Street Template 7.5d Radius 1 Curve(NoPassing) STC-201"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.259421 -0.017003 97.500000
+ C 16777215 0 1.987500 0.000000 -1.987500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 0.900000 0
+ 0.188852 0.893818 0
+ 0.376894 0.875297 0
+ 0.141947 -0.909304 0
+ 0.071126 -0.902328 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 2.837500 0.000000 -1.987500 0 0.000000 7.500000
+ A3 16777215 0.025000 1.137500 0.000000 -1.987500 0 0.000000 7.500000
+#StreetNoPassingLines
+ A3 16776960 0.025000 2.037500 0.000000 -1.987500 0 0.000000 7.500000
+ A3 16776960 0.025000 1.937500 0.000000 -1.987500 0 0.000000 7.500000
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 1 Curve(NoPassing) STC-202"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.760583 -0.151289 112.500000
+ C 16777215 0 1.987500 0.000000 -1.987500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 10 1
+ 0.000000 0.900000 0
+ 0.283024 0.886096 0
+ 0.563323 0.844517 0
+ 0.838197 0.775665 0
+ 1.104998 0.680202 0
+ 0.416168 -0.982781 0
+ 0.315685 -0.946827 0
+ 0.212161 -0.920896 0
+ 0.106594 -0.905237 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 2.837500 0.000000 -1.987500 0 0.000000 22.500000
+ A3 16777215 0.025000 1.137500 0.000000 -1.987500 0 0.000000 22.500000
+#StreetNoPassingLines
+ A3 16776960 0.025000 2.037500 0.000000 -1.987500 0 0.000000 22.500000
+ A3 16776960 0.025000 1.937500 0.000000 -1.987500 0 0.000000 22.500000
+END$SEGS
+TURNOUT N "N Street Template 45d Radius 1 Curve(NoPassing) STC-203"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.405375 -0.582125 135.000000
+ C 16777215 0 1.987500 0.000000 -1.987500 0.000000 45.000000
+#StreetBackground
+ F4 5263440 0.000000 18 1
+ 0.000000 0.900000 0
+ 0.283024 0.886096 0
+ 0.563323 0.844517 0
+ 0.838197 0.775665 0
+ 1.104998 0.680202 0
+ 1.361158 0.559048 0
+ 1.604209 0.413369 0
+ 1.831811 0.244568 0
+ 2.041771 0.054271 0
+ 0.768979 -1.218521 0
+ 0.689903 -1.146851 0
+ 0.604183 -1.083277 0
+ 0.512644 -1.028411 0
+ 0.416168 -0.982781 0
+ 0.315685 -0.946827 0
+ 0.212161 -0.920896 0
+ 0.106594 -0.905237 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 2.837500 0.000000 -1.987500 0 0.000000 45.000000
+ A3 16777215 0.025000 1.137500 0.000000 -1.987500 0 0.000000 45.000000
+#StreetNoPassingLines
+ A3 16776960 0.025000 2.037500 0.000000 -1.987500 0 0.000000 45.000000
+ A3 16776960 0.025000 1.937500 0.000000 -1.987500 0 0.000000 45.000000
+END$SEGS
+TURNOUT N "N Street Template 90d Radius 1 Curve(NoPassing) STC-204"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.987500 -1.987500 180.000000
+ C 16777215 0 1.987500 0.000000 -1.987500 0.000000 90.000000
+#StreetBackground
+ F4 5263440 0.000000 34 1
+ 0.000000 0.900000 0
+ 0.283024 0.886096 0
+ 0.563323 0.844517 0
+ 0.838197 0.775665 0
+ 1.104998 0.680202 0
+ 1.361158 0.559048 0
+ 1.604209 0.413369 0
+ 1.831811 0.244568 0
+ 2.041771 0.054271 0
+ 2.232068 -0.155689 0
+ 2.400869 -0.383291 0
+ 2.546548 -0.626342 0
+ 2.667702 -0.882502 0
+ 2.763165 -1.149303 0
+ 2.832017 -1.424177 0
+ 2.873596 -1.704476 0
+ 2.887500 -1.987500 0
+ 1.087500 -1.987500 0
+ 1.082263 -1.880906 0
+ 1.066604 -1.775339 0
+ 1.040673 -1.671815 0
+ 1.004719 -1.571332 0
+ 0.959089 -1.474856 0
+ 0.904223 -1.383317 0
+ 0.840649 -1.297597 0
+ 0.768979 -1.218521 0
+ 0.689903 -1.146851 0
+ 0.604183 -1.083277 0
+ 0.512644 -1.028411 0
+ 0.416168 -0.982781 0
+ 0.315685 -0.946827 0
+ 0.212161 -0.920896 0
+ 0.106594 -0.905237 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 2.837500 0.000000 -1.987500 0 0.000000 90.000000
+ A3 16777215 0.025000 1.137500 0.000000 -1.987500 0 0.000000 90.000000
+#StreetNoPassingLines
+ A3 16776960 0.025000 2.037500 0.000000 -1.987500 0 0.000000 90.000000
+ A3 16776960 0.025000 1.937500 0.000000 -1.987500 0 0.000000 90.000000
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 1 Curves One-Way Traffic (2 Lanes)
+TURNOUT N "N Street Template 7.5d Radius 1 Curve(2LaneOneWay) STC-301"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.259421 -0.017003 97.500000
+ C 16777215 0 1.987500 0.000000 -1.987500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 0.900000 0
+ 0.188852 0.893818 0
+ 0.376894 0.875297 0
+ 0.141947 -0.909304 0
+ 0.071126 -0.902328 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 2.837500 0.000000 -1.987500 0 0.000000 7.500000
+ A3 16777215 0.025000 1.137500 0.000000 -1.987500 0 0.000000 7.500000
+#StreetDashLines
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 1 Curve(2LaneOneWay) STC-302"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.760583 -0.151289 112.500000
+ C 16777215 0 1.987500 0.000000 -1.987500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 10 1
+ 0.000000 0.900000 0
+ 0.283024 0.886096 0
+ 0.563323 0.844517 0
+ 0.838197 0.775665 0
+ 1.104998 0.680202 0
+ 0.416168 -0.982781 0
+ 0.315685 -0.946827 0
+ 0.212161 -0.920896 0
+ 0.106594 -0.905237 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 2.837500 0.000000 -1.987500 0 0.000000 22.500000
+ A3 16777215 0.025000 1.137500 0.000000 -1.987500 0 0.000000 22.500000
+#StreetDashLines
+END$SEGS
+TURNOUT N "N Street Template 45d Radius 1 Curve(2LaneOneWay) STC-303"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.405375 -0.582125 135.000000
+ C 16777215 0 1.987500 0.000000 -1.987500 0.000000 45.000000
+#StreetBackground
+ F4 5263440 0.000000 18 1
+ 0.000000 0.900000 0
+ 0.283024 0.886096 0
+ 0.563323 0.844517 0
+ 0.838197 0.775665 0
+ 1.104998 0.680202 0
+ 1.361158 0.559048 0
+ 1.604209 0.413369 0
+ 1.831811 0.244568 0
+ 2.041771 0.054271 0
+ 0.768979 -1.218521 0
+ 0.689903 -1.146851 0
+ 0.604183 -1.083277 0
+ 0.512644 -1.028411 0
+ 0.416168 -0.982781 0
+ 0.315685 -0.946827 0
+ 0.212161 -0.920896 0
+ 0.106594 -0.905237 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 2.837500 0.000000 -1.987500 0 0.000000 45.000000
+ A3 16777215 0.025000 1.137500 0.000000 -1.987500 0 0.000000 45.000000
+#StreetDashLines
+ A3 16777215 0.025000 1.987500 0.000000 -1.987500 0 11.250000 22.500000
+END$SEGS
+TURNOUT N "N Street Template 90d Radius 1 Curve(2LaneOneWay) STC-304"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.987500 -1.987500 180.000000
+ C 16777215 0 1.987500 0.000000 -1.987500 0.000000 90.000000
+#StreetBackground
+ F4 5263440 0.000000 34 1
+ 0.000000 0.900000 0
+ 0.283024 0.886096 0
+ 0.563323 0.844517 0
+ 0.838197 0.775665 0
+ 1.104998 0.680202 0
+ 1.361158 0.559048 0
+ 1.604209 0.413369 0
+ 1.831811 0.244568 0
+ 2.041771 0.054271 0
+ 2.232068 -0.155689 0
+ 2.400869 -0.383291 0
+ 2.546548 -0.626342 0
+ 2.667702 -0.882502 0
+ 2.763165 -1.149303 0
+ 2.832017 -1.424177 0
+ 2.873596 -1.704476 0
+ 2.887500 -1.987500 0
+ 1.087500 -1.987500 0
+ 1.082263 -1.880906 0
+ 1.066604 -1.775339 0
+ 1.040673 -1.671815 0
+ 1.004719 -1.571332 0
+ 0.959089 -1.474856 0
+ 0.904223 -1.383317 0
+ 0.840649 -1.297597 0
+ 0.768979 -1.218521 0
+ 0.689903 -1.146851 0
+ 0.604183 -1.083277 0
+ 0.512644 -1.028411 0
+ 0.416168 -0.982781 0
+ 0.315685 -0.946827 0
+ 0.212161 -0.920896 0
+ 0.106594 -0.905237 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 2.837500 0.000000 -1.987500 0 0.000000 90.000000
+ A3 16777215 0.025000 1.137500 0.000000 -1.987500 0 0.000000 90.000000
+#StreetDashLines
+ A3 16777215 0.025000 1.987500 0.000000 -1.987500 0 11.250000 22.500000
+ A3 16777215 0.025000 1.987500 0.000000 -1.987500 0 56.250000 22.500000
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 2 Curves 2 Lanes (No Striping)
+TURNOUT N "N Street Template 7.5d Radius 2 Curve(NoStriping) STC-401"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.650999 -0.042669 97.500000
+ C 16777215 0 4.987500 0.000000 -4.987500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 0.900000 0
+ 0.385061 0.887394 0
+ 0.768473 0.849632 0
+ 0.533526 -0.934969 0
+ 0.267335 -0.908752 0
+ 0.000000 -0.900000 0
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 2 Curve(NoStriping) STC-402"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.908634 -0.379651 112.500000
+ C 16777215 0 4.987500 0.000000 -4.987500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 14 1
+ 0.000000 0.900000 0
+ 0.385061 0.887394 0
+ 0.768473 0.849632 0
+ 1.148594 0.786873 0
+ 1.523797 0.699388 0
+ 1.892475 0.587551 0
+ 2.253049 0.451841 0
+ 1.564219 -1.211142 0
+ 1.313884 -1.116923 0
+ 1.057923 -1.039278 0
+ 0.797432 -0.978540 0
+ 0.533526 -0.934969 0
+ 0.267335 -0.908752 0
+ 0.000000 -0.900000 0
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 2 Curves Two-Way Traffic (Double Passing)
+TURNOUT N "N Street Template 7.5d Radius 2 Curve(DoublePassing) STC-501"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.650999 -0.042669 97.500000
+ C 16777215 0 4.987500 0.000000 -4.987500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 0.900000 0
+ 0.385061 0.887394 0
+ 0.768473 0.849632 0
+ 0.533526 -0.934969 0
+ 0.267335 -0.908752 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 5.837500 0.000000 -4.987500 0 0.000000 7.500000
+ A3 16777215 0.025000 4.137500 0.000000 -4.987500 0 0.000000 7.500000
+#StreetDoublePassingLines
+ A3 16776960 0.025000 4.987500 0.000000 -4.987500 0 1.875000 3.750000
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 2 Curve(DoublePassing) STC-502"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.908634 -0.379651 112.500000
+ C 16777215 0 4.987500 0.000000 -4.987500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 14 1
+ 0.000000 0.900000 0
+ 0.385061 0.887394 0
+ 0.768473 0.849632 0
+ 1.148594 0.786873 0
+ 1.523797 0.699388 0
+ 1.892475 0.587551 0
+ 2.253049 0.451841 0
+ 1.564219 -1.211142 0
+ 1.313884 -1.116923 0
+ 1.057923 -1.039278 0
+ 0.797432 -0.978540 0
+ 0.533526 -0.934969 0
+ 0.267335 -0.908752 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 5.837500 0.000000 -4.987500 0 0.000000 22.500000
+ A3 16777215 0.025000 4.137500 0.000000 -4.987500 0 0.000000 22.500000
+#StreetDoublePassingLines
+ A3 16776960 0.025000 4.987500 0.000000 -4.987500 0 1.875000 3.750000
+ A3 16776960 0.025000 4.987500 0.000000 -4.987500 0 9.375000 3.750000
+ A3 16776960 0.025000 4.987500 0.000000 -4.987500 0 16.875000 3.750000
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 2 Curves Two-Way Traffic (No Passing)
+TURNOUT N "N Street Template 7.5d Radius 2 Curve(NoPassing) STC-601"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.650999 -0.042669 97.500000
+ C 16777215 0 4.987500 0.000000 -4.987500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 0.900000 0
+ 0.385061 0.887394 0
+ 0.768473 0.849632 0
+ 0.533526 -0.934969 0
+ 0.267335 -0.908752 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 5.837500 0.000000 -4.987500 0 0.000000 7.500000
+ A3 16777215 0.025000 4.137500 0.000000 -4.987500 0 0.000000 7.500000
+#StreetNoPassingLines
+ A3 16776960 0.025000 5.037500 0.000000 -4.987500 0 0.000000 7.500000
+ A3 16776960 0.025000 4.937500 0.000000 -4.987500 0 0.000000 7.500000
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 2 Curve(NoPassing) STC-602"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.908634 -0.379651 112.500000
+ C 16777215 0 4.987500 0.000000 -4.987500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 14 1
+ 0.000000 0.900000 0
+ 0.385061 0.887394 0
+ 0.768473 0.849632 0
+ 1.148594 0.786873 0
+ 1.523797 0.699388 0
+ 1.892475 0.587551 0
+ 2.253049 0.451841 0
+ 1.564219 -1.211142 0
+ 1.313884 -1.116923 0
+ 1.057923 -1.039278 0
+ 0.797432 -0.978540 0
+ 0.533526 -0.934969 0
+ 0.267335 -0.908752 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 5.837500 0.000000 -4.987500 0 0.000000 22.500000
+ A3 16777215 0.025000 4.137500 0.000000 -4.987500 0 0.000000 22.500000
+#StreetNoPassingLines
+ A3 16776960 0.025000 5.037500 0.000000 -4.987500 0 0.000000 22.500000
+ A3 16776960 0.025000 4.937500 0.000000 -4.987500 0 0.000000 22.500000
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 2 Curves One-Way Traffic (2 Lane)
+TURNOUT N "N Street Template 7.5d Radius 2 Curve(2LaneOneWay) STC-701"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.650999 -0.042669 97.500000
+ C 16777215 0 4.987500 0.000000 -4.987500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 0.900000 0
+ 0.385061 0.887394 0
+ 0.768473 0.849632 0
+ 0.533526 -0.934969 0
+ 0.267335 -0.908752 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 5.837500 0.000000 -4.987500 0 0.000000 7.500000
+ A3 16777215 0.025000 4.137500 0.000000 -4.987500 0 0.000000 7.500000
+#StreetDashLines
+ A3 16777215 0.025000 4.987500 0.000000 -4.987500 0 1.875000 3.750000
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 2 Curve(2LaneOneWay) STC-702"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.908634 -0.379651 112.500000
+ C 16777215 0 4.987500 0.000000 -4.987500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 14 1
+ 0.000000 0.900000 0
+ 0.385061 0.887394 0
+ 0.768473 0.849632 0
+ 1.148594 0.786873 0
+ 1.523797 0.699388 0
+ 1.892475 0.587551 0
+ 2.253049 0.451841 0
+ 1.564219 -1.211142 0
+ 1.313884 -1.116923 0
+ 1.057923 -1.039278 0
+ 0.797432 -0.978540 0
+ 0.533526 -0.934969 0
+ 0.267335 -0.908752 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 5.837500 0.000000 -4.987500 0 0.000000 22.500000
+ A3 16777215 0.025000 4.137500 0.000000 -4.987500 0 0.000000 22.500000
+#StreetDashLines
+ A3 16777215 0.025000 4.987500 0.000000 -4.987500 0 1.875000 3.750000
+ A3 16777215 0.025000 4.987500 0.000000 -4.987500 0 9.375000 3.750000
+ A3 16777215 0.025000 4.987500 0.000000 -4.987500 0 16.875000 3.750000
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 2 Curves Two-Way Traffic (Center Turn Lane)
+TURNOUT N "N Street Template 7.5d Radius 2 Curve(CenterTurningLane) STC-801"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.650999 -0.042669 97.500000
+ C 16777215 0 4.987500 0.000000 -4.987500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 1.350000 0
+ 0.414492 1.336431 0
+ 0.827210 1.295782 0
+ 0.474789 -1.381119 0
+ 0.237904 -1.357788 0
+ 0.000000 -1.350000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 6.287500 0.000000 -4.987500 0 0.000000 7.500000
+ A3 16777215 0.025000 3.687500 0.000000 -4.987500 0 0.000000 7.500000
+#StreetNoPassingLines
+ A3 16776960 0.025000 5.487500 0.000000 -4.987500 0 0.000000 7.500000
+ A3 16776960 0.025000 5.437500 0.000000 -4.987500 0 1.875000 3.750000
+ A3 16776960 0.025000 4.537500 0.000000 -4.987500 0 1.875000 3.750000
+ A3 16776960 0.025000 4.487500 0.000000 -4.987500 0 0.000000 7.500000
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 2 Curve(CenterTurningLane) STC-802"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.908634 -0.379651 112.500000
+ C 16777215 0 4.987500 0.000000 -4.987500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 14 1
+ 0.000000 1.350000 0
+ 0.414492 1.336431 0
+ 0.827210 1.295782 0
+ 1.236385 1.228227 0
+ 1.640266 1.134055 0
+ 2.037123 1.013670 0
+ 2.425256 0.867587 0
+ 1.392011 -1.626888 0
+ 1.169236 -1.543042 0
+ 0.941454 -1.473945 0
+ 0.709641 -1.419894 0
+ 0.474789 -1.381119 0
+ 0.237904 -1.357788 0
+ 0.000000 -1.350000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 6.287500 0.000000 -4.987500 0 0.000000 22.500000
+ A3 16777215 0.025000 3.687500 0.000000 -4.987500 0 0.000000 22.500000
+#StreetNoPassingLines
+ A3 16776960 0.025000 5.487500 0.000000 -4.987500 0 0.000000 22.500000
+ A3 16776960 0.025000 5.437500 0.000000 -4.987500 0 1.875000 3.750000
+ A3 16776960 0.025000 5.437500 0.000000 -4.987500 0 9.375000 3.750000
+ A3 16776960 0.025000 5.437500 0.000000 -4.987500 0 16.875000 3.750000
+ A3 16776960 0.025000 4.537500 0.000000 -4.987500 0 1.875000 3.750000
+ A3 16776960 0.025000 4.537500 0.000000 -4.987500 0 9.375000 3.750000
+ A3 16776960 0.025000 4.537500 0.000000 -4.987500 0 16.875000 3.750000
+ A3 16776960 0.025000 4.487500 0.000000 -4.987500 0 0.000000 22.500000
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 3 Curves 2 Lanes (No Striping)
+TURNOUT N "N Street Template 7.5d Radius 3 Curve(NoStriping) STC-901"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.807631 -0.052935 97.500000
+ C 16777215 0 6.187500 0.000000 -6.187500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 0.900000 0
+ 0.463545 0.884825 0
+ 0.925104 0.839365 0
+ 0.690157 -0.945235 0
+ 0.345819 -0.911321 0
+ 0.000000 -0.900000 0
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 3 Curve(NoStriping) STC-902"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.367854 -0.470995 112.500000
+ C 16777215 0 6.187500 0.000000 -6.187500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 14 1
+ 0.000000 0.900000 0
+ 0.463545 0.884825 0
+ 0.925104 0.839365 0
+ 1.382703 0.763816 0
+ 1.834380 0.658499 0
+ 2.278202 0.523867 0
+ 2.712269 0.360496 0
+ 2.023439 -1.302487 0
+ 1.699611 -1.180607 0
+ 1.368506 -1.080167 0
+ 1.031540 -1.001598 0
+ 0.690157 -0.945235 0
+ 0.345819 -0.911321 0
+ 0.000000 -0.900000 0
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 3 Curves Two-Way Traffic (Double Passing)
+TURNOUT N "N Street Template 7.5d Radius 3 Curve(DoublePassing) STC-1001"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.807631 -0.052935 97.500000
+ C 16777215 0 6.187500 0.000000 -6.187500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 0.900000 0
+ 0.463545 0.884825 0
+ 0.925104 0.839365 0
+ 0.690157 -0.945235 0
+ 0.345819 -0.911321 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 7.037500 0.000000 -6.187500 0 0.000000 7.500000
+ A3 16777215 0.025000 5.337500 0.000000 -6.187500 0 0.000000 7.500000
+#StreetDoublePassingLines
+ A3 16776960 0.025000 6.187500 0.000000 -6.187500 0 1.875000 3.750000
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 3 Curve(DoublePassing) STC-1002"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.367854 -0.470995 112.500000
+ C 16777215 0 6.187500 0.000000 -6.187500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 14 1
+ 0.000000 0.900000 0
+ 0.463545 0.884825 0
+ 0.925104 0.839365 0
+ 1.382703 0.763816 0
+ 1.834380 0.658499 0
+ 2.278202 0.523867 0
+ 2.712269 0.360496 0
+ 2.023439 -1.302487 0
+ 1.699611 -1.180607 0
+ 1.368506 -1.080167 0
+ 1.031540 -1.001598 0
+ 0.690157 -0.945235 0
+ 0.345819 -0.911321 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 7.037500 0.000000 -6.187500 0 0.000000 22.500000
+ A3 16777215 0.025000 5.337500 0.000000 -6.187500 0 0.000000 22.500000
+#StreetDoublePassingLines
+ A3 16776960 0.025000 6.187500 0.000000 -6.187500 0 1.875000 3.750000
+ A3 16776960 0.025000 6.187500 0.000000 -6.187500 0 9.375000 3.750000
+ A3 16776960 0.025000 6.187500 0.000000 -6.187500 0 16.875000 3.750000
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 3 Curve Streets Two-Way Traffic (No Passing)
+TURNOUT N "N Street Template 7.5d Radius 3 Curve(NoPassing) STC-1101"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.807631 -0.052935 97.500000
+ C 16777215 0 6.187500 0.000000 -6.187500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 0.900000 0
+ 0.463545 0.884825 0
+ 0.925104 0.839365 0
+ 0.690157 -0.945235 0
+ 0.345819 -0.911321 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 7.037500 0.000000 -6.187500 0 0.000000 7.500000
+ A3 16777215 0.025000 5.337500 0.000000 -6.187500 0 0.000000 7.500000
+#StreetNoPassingLines
+ A3 16776960 0.025000 6.237500 0.000000 -6.187500 0 0.000000 7.500000
+ A3 16776960 0.025000 6.137500 0.000000 -6.187500 0 0.000000 7.500000
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 3 Curve(NoPassing) STC-1102"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.367854 -0.470995 112.500000
+ C 16777215 0 6.187500 0.000000 -6.187500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 14 1
+ 0.000000 0.900000 0
+ 0.463545 0.884825 0
+ 0.925104 0.839365 0
+ 1.382703 0.763816 0
+ 1.834380 0.658499 0
+ 2.278202 0.523867 0
+ 2.712269 0.360496 0
+ 2.023439 -1.302487 0
+ 1.699611 -1.180607 0
+ 1.368506 -1.080167 0
+ 1.031540 -1.001598 0
+ 0.690157 -0.945235 0
+ 0.345819 -0.911321 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 7.037500 0.000000 -6.187500 0 0.000000 22.500000
+ A3 16777215 0.025000 5.337500 0.000000 -6.187500 0 0.000000 22.500000
+#StreetNoPassingLines
+ A3 16776960 0.025000 6.237500 0.000000 -6.187500 0 0.000000 22.500000
+ A3 16776960 0.025000 6.137500 0.000000 -6.187500 0 0.000000 22.500000
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 3 Curves One-Way Traffic (2 Lanes)
+TURNOUT N "N Street Template 7.5d Radius 3 Curve(2LaneOneWay) STC-1201"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.807631 -0.052935 97.500000
+ C 16777215 0 6.187500 0.000000 -6.187500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 0.900000 0
+ 0.463545 0.884825 0
+ 0.925104 0.839365 0
+ 0.690157 -0.945235 0
+ 0.345819 -0.911321 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 7.037500 0.000000 -6.187500 0 0.000000 7.500000
+ A3 16777215 0.025000 5.337500 0.000000 -6.187500 0 0.000000 7.500000
+#StreetDashLines
+ A3 16777215 0.025000 6.187500 0.000000 -6.187500 0 1.875000 3.750000
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 3 Curve(2LaneOneWay) STC-1202"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.367854 -0.470995 112.500000
+ C 16777215 0 6.187500 0.000000 -6.187500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 14 1
+ 0.000000 0.900000 0
+ 0.463545 0.884825 0
+ 0.925104 0.839365 0
+ 1.382703 0.763816 0
+ 1.834380 0.658499 0
+ 2.278202 0.523867 0
+ 2.712269 0.360496 0
+ 2.023439 -1.302487 0
+ 1.699611 -1.180607 0
+ 1.368506 -1.080167 0
+ 1.031540 -1.001598 0
+ 0.690157 -0.945235 0
+ 0.345819 -0.911321 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 7.037500 0.000000 -6.187500 0 0.000000 22.500000
+ A3 16777215 0.025000 5.337500 0.000000 -6.187500 0 0.000000 22.500000
+#StreetDashLines
+ A3 16777215 0.025000 6.187500 0.000000 -6.187500 0 1.875000 3.750000
+ A3 16777215 0.025000 6.187500 0.000000 -6.187500 0 9.375000 3.750000
+ A3 16777215 0.025000 6.187500 0.000000 -6.187500 0 16.875000 3.750000
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 3 Curves Two-Way Traffic (Center Turn Lane)
+TURNOUT N "N Street Template 7.5d Radius 3 Curve(CenterTurningLane) STC-1301"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.807631 -0.052935 97.500000
+ C 16777215 0 6.187500 0.000000 -6.187500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 1.350000 0
+ 0.492976 1.333862 0
+ 0.983841 1.285516 0
+ 0.631420 -1.391385 0
+ 0.316388 -1.360357 0
+ 0.000000 -1.350000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 7.487500 0.000000 -6.187500 0 0.000000 7.500000
+ A3 16777215 0.025000 4.887500 0.000000 -6.187500 0 0.000000 7.500000
+#StreetNoPassingLines
+ A3 16776960 0.025000 6.687500 0.000000 -6.187500 0 0.000000 7.500000
+ A3 16776960 0.025000 6.637500 0.000000 -6.187500 0 1.875000 3.750000
+ A3 16776960 0.025000 5.737500 0.000000 -6.187500 0 1.875000 3.750000
+ A3 16776960 0.025000 5.687500 0.000000 -6.187500 0 0.000000 7.500000
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 3 Curve(CenterTurningLane) STC-1302"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.367854 -0.470995 112.500000
+ C 16777215 0 6.187500 0.000000 -6.187500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 14 1
+ 0.000000 1.350000 0
+ 0.492976 1.333862 0
+ 0.983841 1.285516 0
+ 1.470493 1.205169 0
+ 1.950849 1.093166 0
+ 2.422850 0.949986 0
+ 2.884476 0.776242 0
+ 1.851231 -1.718233 0
+ 1.554963 -1.606725 0
+ 1.252037 -1.514834 0
+ 0.943749 -1.442951 0
+ 0.631420 -1.391385 0
+ 0.316388 -1.360357 0
+ 0.000000 -1.350000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 7.487500 0.000000 -6.187500 0 0.000000 22.500000
+ A3 16777215 0.025000 4.887500 0.000000 -6.187500 0 0.000000 22.500000
+#StreetNoPassingLines
+ A3 16776960 0.025000 6.687500 0.000000 -6.187500 0 0.000000 22.500000
+ A3 16776960 0.025000 6.637500 0.000000 -6.187500 0 1.875000 3.750000
+ A3 16776960 0.025000 6.637500 0.000000 -6.187500 0 9.375000 3.750000
+ A3 16776960 0.025000 6.637500 0.000000 -6.187500 0 16.875000 3.750000
+ A3 16776960 0.025000 5.737500 0.000000 -6.187500 0 1.875000 3.750000
+ A3 16776960 0.025000 5.737500 0.000000 -6.187500 0 9.375000 3.750000
+ A3 16776960 0.025000 5.737500 0.000000 -6.187500 0 16.875000 3.750000
+ A3 16776960 0.025000 5.687500 0.000000 -6.187500 0 0.000000 22.500000
+END$SEGS
+
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 4 Curves 2 Lanes (No Striping)
+TURNOUT N "N Street Template 7.5d Radius 4 Curve(NoStriping) STC-1401"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.081736 -0.070901 97.500000
+ C 16777215 0 8.287500 0.000000 -8.287500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 0.900000 0
+ 0.600891 0.880329 0
+ 1.199209 0.821400 0
+ 0.964262 -0.963201 0
+ 0.483166 -0.915817 0
+ 0.000000 -0.900000 0
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 4 Curve(NoStriping) STC-1402"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.171489 -0.630848 112.500000
+ C 16777215 0 8.287500 0.000000 -8.287500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 14 1
+ 0.000000 0.900000 0
+ 0.600891 0.880329 0
+ 1.199209 0.821400 0
+ 1.792392 0.723465 0
+ 2.377900 0.586944 0
+ 2.953225 0.412421 0
+ 3.515904 0.200643 0
+ 2.827074 -1.462340 0
+ 2.374634 -1.292054 0
+ 1.912026 -1.151723 0
+ 1.441230 -1.041949 0
+ 0.964262 -0.963201 0
+ 0.483166 -0.915817 0
+ 0.000000 -0.900000 0
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 4 Curves Two-Way Traffic (Double Passing)
+TURNOUT N "N Street Template 7.5d Radius 4 Curve(DoublePassing) STC-1501"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.081736 -0.070901 97.500000
+ C 16777215 0 8.287500 0.000000 -8.287500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 0.900000 0
+ 0.600891 0.880329 0
+ 1.199209 0.821400 0
+ 0.964262 -0.963201 0
+ 0.483166 -0.915817 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 9.137500 0.000000 -8.287500 0 0.000000 7.500000
+ A3 16777215 0.025000 7.437500 0.000000 -8.287500 0 0.000000 7.500000
+#StreetDoublePassingLines
+ A3 16776960 0.025000 8.287500 0.000000 -8.287500 0 1.875000 3.750000
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 4 Curve(DoublePassing) STC-1502"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.171489 -0.630848 112.500000
+ C 16777215 0 8.287500 0.000000 -8.287500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 14 1
+ 0.000000 0.900000 0
+ 0.600891 0.880329 0
+ 1.199209 0.821400 0
+ 1.792392 0.723465 0
+ 2.377900 0.586944 0
+ 2.953225 0.412421 0
+ 3.515904 0.200643 0
+ 2.827074 -1.462340 0
+ 2.374634 -1.292054 0
+ 1.912026 -1.151723 0
+ 1.441230 -1.041949 0
+ 0.964262 -0.963201 0
+ 0.483166 -0.915817 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 9.137500 0.000000 -8.287500 0 0.000000 22.500000
+ A3 16777215 0.025000 7.437500 0.000000 -8.287500 0 0.000000 22.500000
+#StreetDoublePassingLines
+ A3 16776960 0.025000 8.287500 0.000000 -8.287500 0 1.875000 3.750000
+ A3 16776960 0.025000 8.287500 0.000000 -8.287500 0 9.375000 3.750000
+ A3 16776960 0.025000 8.287500 0.000000 -8.287500 0 16.875000 3.750000
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 4 Curve Two-Way Traffic (No Passing)
+TURNOUT N "N Street Template 7.5d Radius 4 Curve(NoPassing) STC-1601"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.081736 -0.070901 97.500000
+ C 16777215 0 8.287500 0.000000 -8.287500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 0.900000 0
+ 0.600891 0.880329 0
+ 1.199209 0.821400 0
+ 0.964262 -0.963201 0
+ 0.483166 -0.915817 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 9.137500 0.000000 -8.287500 0 0.000000 7.500000
+ A3 16777215 0.025000 7.437500 0.000000 -8.287500 0 0.000000 7.500000
+#StreetNoPassingLines
+ A3 16776960 0.025000 8.337500 0.000000 -8.287500 0 0.000000 7.500000
+ A3 16776960 0.025000 8.237500 0.000000 -8.287500 0 0.000000 7.500000
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 4 Curve(NoPassing) STC-1602"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.171489 -0.630848 112.500000
+ C 16777215 0 8.287500 0.000000 -8.287500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 14 1
+ 0.000000 0.900000 0
+ 0.600891 0.880329 0
+ 1.199209 0.821400 0
+ 1.792392 0.723465 0
+ 2.377900 0.586944 0
+ 2.953225 0.412421 0
+ 3.515904 0.200643 0
+ 2.827074 -1.462340 0
+ 2.374634 -1.292054 0
+ 1.912026 -1.151723 0
+ 1.441230 -1.041949 0
+ 0.964262 -0.963201 0
+ 0.483166 -0.915817 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 9.137500 0.000000 -8.287500 0 0.000000 22.500000
+ A3 16777215 0.025000 7.437500 0.000000 -8.287500 0 0.000000 22.500000
+#StreetNoPassingLines
+ A3 16776960 0.025000 8.337500 0.000000 -8.287500 0 0.000000 22.500000
+ A3 16776960 0.025000 8.237500 0.000000 -8.287500 0 0.000000 22.500000
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 4 Curves One-Way Traffic (2 Lanes)
+TURNOUT N "N Street Template 7.5d Radius 4 Curve(2LaneOneWay) STC-1701"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.081736 -0.070901 97.500000
+ C 16777215 0 8.287500 0.000000 -8.287500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 0.900000 0
+ 0.600891 0.880329 0
+ 1.199209 0.821400 0
+ 0.964262 -0.963201 0
+ 0.483166 -0.915817 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 9.137500 0.000000 -8.287500 0 0.000000 7.500000
+ A3 16777215 0.025000 7.437500 0.000000 -8.287500 0 0.000000 7.500000
+#StreetDashLines
+ A3 16777215 0.025000 8.287500 0.000000 -8.287500 0 1.875000 3.750000
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 4 Curve(2LaneOneWay) STC-1702"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.171489 -0.630848 112.500000
+ C 16777215 0 8.287500 0.000000 -8.287500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 14 1
+ 0.000000 0.900000 0
+ 0.600891 0.880329 0
+ 1.199209 0.821400 0
+ 1.792392 0.723465 0
+ 2.377900 0.586944 0
+ 2.953225 0.412421 0
+ 3.515904 0.200643 0
+ 2.827074 -1.462340 0
+ 2.374634 -1.292054 0
+ 1.912026 -1.151723 0
+ 1.441230 -1.041949 0
+ 0.964262 -0.963201 0
+ 0.483166 -0.915817 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 9.137500 0.000000 -8.287500 0 0.000000 22.500000
+ A3 16777215 0.025000 7.437500 0.000000 -8.287500 0 0.000000 22.500000
+#StreetDashLines
+ A3 16777215 0.025000 8.287500 0.000000 -8.287500 0 1.875000 3.750000
+ A3 16777215 0.025000 8.287500 0.000000 -8.287500 0 9.375000 3.750000
+ A3 16777215 0.025000 8.287500 0.000000 -8.287500 0 16.875000 3.750000
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Radius 4 Curves Two-Way Traffic (Center Turn Lane)
+TURNOUT N "N Street Template 7.5d Radius 4 Curve(CenterTurningLane) STC-1801"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.081736 -0.070901 97.500000
+ C 16777215 0 8.287500 0.000000 -8.287500 0.000000 7.500000
+#StreetBackground
+ F4 5263440 0.000000 6 1
+ 0.000000 1.350000 0
+ 0.630323 1.329365 0
+ 1.257946 1.267550 0
+ 0.905525 -1.409351 0
+ 0.453734 -1.364854 0
+ 0.000000 -1.350000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 9.587500 0.000000 -8.287500 0 0.000000 7.500000
+ A3 16777215 0.025000 6.987500 0.000000 -8.287500 0 0.000000 7.500000
+#StreetNoPassingLines
+ A3 16776960 0.025000 8.787500 0.000000 -8.287500 0 0.000000 7.500000
+ A3 16776960 0.025000 8.737500 0.000000 -8.287500 0 1.875000 3.750000
+ A3 16776960 0.025000 7.837500 0.000000 -8.287500 0 1.875000 3.750000
+ A3 16776960 0.025000 7.787500 0.000000 -8.287500 0 0.000000 7.500000
+END$SEGS
+TURNOUT N "N Street Template 22.5d Radius 4 Curve(CenterTurningLane) STC-1802"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.171489 -0.630848 112.500000
+ C 16777215 0 8.287500 0.000000 -8.287500 0.000000 22.500000
+#StreetBackground
+ F4 5263440 0.000000 14 1
+ 0.000000 1.350000 0
+ 0.630323 1.329365 0
+ 1.257946 1.267550 0
+ 1.880183 1.164818 0
+ 2.494369 1.021610 0
+ 3.097873 0.838539 0
+ 3.688112 0.616389 0
+ 2.654866 -1.878086 0
+ 2.229986 -1.718172 0
+ 1.795557 -1.586390 0
+ 1.353439 -1.483302 0
+ 0.905525 -1.409351 0
+ 0.453734 -1.364854 0
+ 0.000000 -1.350000 0
+#StreetEdgeLines
+ A3 16777215 0.025000 9.587500 0.000000 -8.287500 0 0.000000 22.500000
+ A3 16777215 0.025000 6.987500 0.000000 -8.287500 0 0.000000 22.500000
+#StreetNoPassingLines
+ A3 16776960 0.025000 8.787500 0.000000 -8.287500 0 0.000000 22.500000
+ A3 16776960 0.025000 8.737500 0.000000 -8.287500 0 1.875000 3.750000
+ A3 16776960 0.025000 8.737500 0.000000 -8.287500 0 9.375000 3.750000
+ A3 16776960 0.025000 8.737500 0.000000 -8.287500 0 16.875000 3.750000
+ A3 16776960 0.025000 7.837500 0.000000 -8.287500 0 1.875000 3.750000
+ A3 16776960 0.025000 7.837500 0.000000 -8.287500 0 9.375000 3.750000
+ A3 16776960 0.025000 7.837500 0.000000 -8.287500 0 16.875000 3.750000
+ A3 16776960 0.025000 7.787500 0.000000 -8.287500 0 0.000000 22.500000
+END$SEGS
diff --git a/app/lib/params/N-StreetTemplate2LaneIntersections.xtp b/app/lib/params/N-StreetTemplate2LaneIntersections.xtp
new file mode 100644
index 0000000..d8e80e4
--- /dev/null
+++ b/app/lib/params/N-StreetTemplate2LaneIntersections.xtp
@@ -0,0 +1,693 @@
+CONTENTS N Scale Street Templates 2 Lane Intersections
+#References TxDot Standards, Easy Street Templates, Bush Templates and Bachmann Templates
+#Road Overall Width 24' (1.8")
+#Lane Width 12' (0.9")
+#Stripe Width 4" (0.025")
+#Stripe CL Spacing 8" (0.05")
+#R1 Curve CL Radius 26.5'R (1.9875")
+#R2 Curve CL Radius 66.5'R (4.9875")
+#R3 Curve CL Radius 106.5'R (7.9875")
+#R4 Curve CL Radius 146.5'R (10.9875")
+# Not Designed to be used in Run Train Mode
+
+SUBCONTENTS N Scale Street Templates - Intersections 2-Lane (No Striping)
+TURNOUT N "N Street Template Intersection 3 Way(NoStriping) STI-001"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.212500 2.212500 0.000000
+ E 2.212500 -2.212500 180.000000
+ S 16777215 0 2.212500 2.212500 2.212500 -2.212500
+#StreetBackground
+ F4 5263440 0.000000 12 1
+ 0.000000 0.900000 0
+ 1.125000 0.900000 0
+ 1.257583 0.954917 0
+ 1.312500 1.087500 0
+ 1.312500 2.212500 0
+ 3.112500 2.212500 0
+ 3.112500 -2.212500 0
+ 1.312500 -2.212500 0
+ 1.312500 -1.087500 0
+ 1.257583 -0.954917 0
+ 1.125000 -0.900000 0
+ 0.000000 -0.900000 0
+END$SEGS
+TURNOUT N "N Street Template Intersection 4 Way(NoStriping) STI-002"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.350000 0.000000 90.000000
+ E 2.212500 2.212500 0.000000
+ E 2.212500 -2.212500 180.000000
+ S 16777215 0 2.212500 2.212500 2.212500 -2.212500
+#StreetBackground
+ F4 5263440 0.000000 20 1
+ 0.000000 0.900000 0
+ 1.125000 0.900000 0
+ 1.257583 0.954917 0
+ 1.312500 1.087500 0
+ 1.312500 2.212500 0
+ 3.112500 2.212500 0
+ 3.112500 1.087500 0
+ 3.167417 0.954917 0
+ 3.300000 0.900000 0
+ 4.425000 0.900000 0
+ 4.425000 -0.900000 0
+ 3.300000 -0.900000 0
+ 3.167417 -0.954917 0
+ 3.112500 -1.087500 0
+ 3.112500 -2.212500 0
+ 1.312500 -2.212500 0
+ 1.312500 -1.087500 0
+ 1.257583 -0.954917 0
+ 1.125000 -0.900000 0
+ 0.000000 -0.900000 0
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Intersections Two-Way Traffic (DoublePassing)
+TURNOUT N "N Street Template Intersection 3 Way 3 Stop(DoublePassing) STI-101"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.212500 2.212500 0.000000
+ E 2.212500 -2.212500 180.000000
+ S 16777215 0 2.212500 2.212500 2.212500 -2.212500
+#StreetBackground
+ F4 5263440 0.000000 12 1
+ 0.000000 0.900000 0
+ 1.125000 0.900000 0
+ 1.257583 0.954917 0
+ 1.312500 1.087500 0
+ 1.312500 2.212500 0
+ 3.112500 2.212500 0
+ 3.112500 -2.212500 0
+ 1.312500 -2.212500 0
+ 1.312500 -1.087500 0
+ 1.257583 -0.954917 0
+ 1.125000 -0.900000 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.125000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.125000 -0.850000 0
+ L3 16777215 0.025000 1.362500 1.087500 0 1.362500 2.212500 0
+ L3 16777215 0.025000 3.062500 2.212500 0 3.062500 -2.212500 0
+ L3 16777215 0.025000 1.362500 -1.087500 0 1.362500 -2.212500 0
+#StreetStopLines
+ L3 16777215 0.150000 1.050000 -0.050000 0 1.050000 -0.850000 0
+ L3 16777215 0.150000 1.362500 1.162500 0 2.162500 1.162500 0
+ L3 16777215 0.150000 2.262500 -1.162500 0 3.062500 -1.162500 0
+#StreetCenterLines
+ L3 16776960 0.025000 0.375000 0.000000 0 1.125000 0.000000 0
+ L3 16776960 0.025000 2.212500 1.087500 0 2.212500 1.800000 0
+ L3 16776960 0.025000 2.212500 -1.087500 0 2.212500 -1.800000 0
+END$SEGS
+TURNOUT N "N Street Template Intersection 3 Way 1 Stop(DoublePassing) STI-102"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.212500 2.212500 0.000000
+ E 2.212500 -2.212500 180.000000
+ S 16777215 0 2.212500 2.212500 2.212500 -2.212500
+#StreetBackground
+ F4 5263440 0.000000 12 1
+ 0.000000 0.900000 0
+ 1.125000 0.900000 0
+ 1.257583 0.954917 0
+ 1.312500 1.087500 0
+ 1.312500 2.212500 0
+ 3.112500 2.212500 0
+ 3.112500 -2.212500 0
+ 1.312500 -2.212500 0
+ 1.312500 -1.087500 0
+ 1.257583 -0.954917 0
+ 1.125000 -0.900000 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.125000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.125000 -0.850000 0
+ L3 16777215 0.025000 1.362500 1.087500 0 1.362500 2.212500 0
+ L3 16777215 0.025000 3.062500 2.212500 0 3.062500 -2.212500 0
+ L3 16777215 0.025000 1.362500 -1.087500 0 1.362500 -2.212500 0
+#StreetStopLines
+ L3 16777215 0.150000 1.050000 -0.050000 0 1.050000 -0.850000 0
+#StreetCenterLines
+ L3 16776960 0.025000 0.375000 0.000000 0 1.125000 0.000000 0
+ L3 16776960 0.025000 2.212500 1.087500 0 2.212500 1.800000 0
+ L3 16776960 0.025000 2.212500 -1.087500 0 2.212500 -1.800000 0
+END$SEGS
+TURNOUT N "N Street Template Intersection 4 Way 4 Stops(DoublePassing) STI-103"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.425000 0.000000 90.000000
+ E 2.212500 2.212500 0.000000
+ E 2.212500 -2.212500 180.000000
+ S 16777215 0 2.212500 2.212500 2.212500 -2.212500
+#StreetBackground
+ F4 5263440 0.000000 20 1
+ 0.000000 0.900000 0
+ 1.125000 0.900000 0
+ 1.257583 0.954917 0
+ 1.312500 1.087500 0
+ 1.312500 2.212500 0
+ 3.112500 2.212500 0
+ 3.112500 1.087500 0
+ 3.167417 0.954917 0
+ 3.300000 0.900000 0
+ 4.425000 0.900000 0
+ 4.425000 -0.900000 0
+ 3.300000 -0.900000 0
+ 3.167417 -0.954917 0
+ 3.112500 -1.087500 0
+ 3.112500 -2.212500 0
+ 1.312500 -2.212500 0
+ 1.312500 -1.087500 0
+ 1.257583 -0.954917 0
+ 1.125000 -0.900000 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.125000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.125000 -0.850000 0
+ L3 16777215 0.025000 1.362500 1.087500 0 1.362500 2.212500 0
+ L3 16777215 0.025000 3.062500 1.087500 0 3.062500 2.212500 0
+ L3 16777215 0.025000 3.300000 0.850000 0 4.425000 0.850000 0
+ L3 16777215 0.025000 3.300000 -0.850000 0 4.425000 -0.850000 0
+ L3 16777215 0.025000 1.362500 -1.087500 0 1.362500 -2.212500 0
+ L3 16777215 0.025000 3.062500 -1.087500 0 3.062500 -2.212500 0
+#StreetStopLines
+ L3 16777215 0.150000 1.050000 -0.050000 0 1.050000 -0.850000 0
+ L3 16777215 0.150000 3.375000 0.050000 0 3.375000 0.850000 0
+ L3 16777215 0.150000 1.362500 1.162500 0 2.162500 1.162500 0
+ L3 16777215 0.150000 2.262500 -1.162500 0 3.062500 -1.162500 0
+#StreetCenterLines
+ L3 16776960 0.025000 0.375000 0.000000 0 1.125000 0.000000 0
+ L3 16776960 0.025000 2.212500 1.087500 0 2.212500 1.800000 0
+ L3 16776960 0.025000 3.300000 0.000000 0 4.050000 0.000000 0
+ L3 16776960 0.025000 2.212500 -1.087500 0 2.212500 -1.800000 0
+END$SEGS
+TURNOUT N "N Street Template Intersection 4 Way 2 Stops(DoublePassing) STI-104"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.425000 0.000000 90.000000
+ E 2.212500 2.212500 0.000000
+ E 2.212500 -2.212500 180.000000
+ S 16777215 0 2.212500 2.212500 2.212500 -2.212500
+#StreetBackground
+ F4 5263440 0.000000 20 1
+ 0.000000 0.900000 0
+ 1.125000 0.900000 0
+ 1.257583 0.954917 0
+ 1.312500 1.087500 0
+ 1.312500 2.212500 0
+ 3.112500 2.212500 0
+ 3.112500 1.087500 0
+ 3.167417 0.954917 0
+ 3.300000 0.900000 0
+ 4.425000 0.900000 0
+ 4.425000 -0.900000 0
+ 3.300000 -0.900000 0
+ 3.167417 -0.954917 0
+ 3.112500 -1.087500 0
+ 3.112500 -2.212500 0
+ 1.312500 -2.212500 0
+ 1.312500 -1.087500 0
+ 1.257583 -0.954917 0
+ 1.125000 -0.900000 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.125000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.125000 -0.850000 0
+ L3 16777215 0.025000 1.362500 1.087500 0 1.362500 2.212500 0
+ L3 16777215 0.025000 3.062500 1.087500 0 3.062500 2.212500 0
+ L3 16777215 0.025000 3.300000 0.850000 0 4.425000 0.850000 0
+ L3 16777215 0.025000 3.300000 -0.850000 0 4.425000 -0.850000 0
+ L3 16777215 0.025000 1.362500 -1.087500 0 1.362500 -2.212500 0
+ L3 16777215 0.025000 3.062500 -1.087500 0 3.062500 -2.212500 0
+#StreetStopLines
+ L3 16777215 0.150000 1.050000 -0.050000 0 1.050000 -0.850000 0
+ L3 16777215 0.150000 3.375000 0.050000 0 3.375000 0.850000 0
+#StreetCenterLines
+ L3 16776960 0.025000 0.375000 0.000000 0 1.125000 0.000000 0
+ L3 16776960 0.025000 2.212500 1.087500 0 2.212500 1.800000 0
+ L3 16776960 0.025000 3.300000 0.000000 0 4.050000 0.000000 0
+ L3 16776960 0.025000 2.212500 -1.087500 0 2.212500 -1.800000 0
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Intersections Two-Way Traffic (No Passing)
+TURNOUT N "N Street Template Intersection 3 Way 3 Stops(NoPassing) STI-201"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.212500 2.212500 0.000000
+ E 2.212500 -2.212500 180.000000
+ S 16777215 0 2.212500 2.212500 2.212500 -2.212500
+#StreetBackground
+ F4 5263440 0.000000 12 1
+ 0.000000 0.900000 0
+ 1.125000 0.900000 0
+ 1.257583 0.954917 0
+ 1.312500 1.087500 0
+ 1.312500 2.212500 0
+ 3.112500 2.212500 0
+ 3.112500 -2.212500 0
+ 1.312500 -2.212500 0
+ 1.312500 -1.087500 0
+ 1.257583 -0.954917 0
+ 1.125000 -0.900000 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.125000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.125000 -0.850000 0
+ L3 16777215 0.025000 1.362500 1.087500 0 1.362500 2.212500 0
+ L3 16777215 0.025000 3.062500 2.212500 0 3.062500 -2.212500 0
+ L3 16777215 0.025000 1.362500 -1.087500 0 1.362500 -2.212500 0
+#StreetStopLines
+ L3 16777215 0.150000 1.050000 -0.050000 0 1.050000 -0.850000 0
+ L3 16777215 0.150000 1.362500 1.162500 0 2.162500 1.162500 0
+ L3 16777215 0.150000 2.262500 -1.162500 0 3.062500 -1.162500 0
+#StreetNoPassingLines
+ L3 16776960 0.025000 0.000000 0.050000 0 1.125000 0.050000 0
+ L3 16776960 0.025000 0.000000 -0.050000 0 1.125000 -0.050000 0
+ L3 16776960 0.025000 2.162500 1.087500 0 2.162500 2.212500 0
+ L3 16776960 0.025000 2.262500 1.087500 0 2.262500 2.212500 0
+ L3 16776960 0.025000 2.162500 -1.087500 0 2.162500 -2.212500 0
+ L3 16776960 0.025000 2.262500 -1.087500 0 2.262500 -2.212500 0
+END$SEGS
+TURNOUT N "N Street Template Intersection 3 Way 1 Stop(NoPassing) STI-202"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.212500 2.212500 0.000000
+ E 2.212500 -2.212500 180.000000
+ S 16777215 0 2.212500 2.212500 2.212500 -2.212500
+#StreetBackground
+ F4 5263440 0.000000 12 1
+ 0.000000 0.900000 0
+ 1.125000 0.900000 0
+ 1.257583 0.954917 0
+ 1.312500 1.087500 0
+ 1.312500 2.212500 0
+ 3.112500 2.212500 0
+ 3.112500 -2.212500 0
+ 1.312500 -2.212500 0
+ 1.312500 -1.087500 0
+ 1.257583 -0.954917 0
+ 1.125000 -0.900000 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.125000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.125000 -0.850000 0
+ L3 16777215 0.025000 1.362500 1.087500 0 1.362500 2.212500 0
+ L3 16777215 0.025000 3.062500 2.212500 0 3.062500 -2.212500 0
+ L3 16777215 0.025000 1.362500 -1.087500 0 1.362500 -2.212500 0
+#StreetStopLines
+ L3 16777215 0.150000 1.050000 -0.050000 0 1.050000 -0.850000 0
+#StreetNoPassingLines
+ L3 16776960 0.025000 0.000000 0.050000 0 1.125000 0.050000 0
+ L3 16776960 0.025000 0.000000 -0.050000 0 1.125000 -0.050000 0
+ L3 16776960 0.025000 2.162500 1.087500 0 2.162500 2.212500 0
+ L3 16776960 0.025000 2.262500 1.087500 0 2.262500 2.212500 0
+ L3 16776960 0.025000 2.162500 -1.087500 0 2.162500 -2.212500 0
+ L3 16776960 0.025000 2.262500 -1.087500 0 2.262500 -2.212500 0
+END$SEGS
+TURNOUT N "N Street Template Intersection 4 Way 4 Stops(NoPassing) STI-203"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.425000 0.000000 90.000000
+ E 2.212500 2.212500 0.000000
+ E 2.212500 -2.212500 180.000000
+ S 16777215 0 2.212500 2.212500 2.212500 -2.212500
+#StreetBackground
+ F4 5263440 0.000000 20 1
+ 0.000000 0.900000 0
+ 1.125000 0.900000 0
+ 1.257583 0.954917 0
+ 1.312500 1.087500 0
+ 1.312500 2.212500 0
+ 3.112500 2.212500 0
+ 3.112500 1.087500 0
+ 3.167417 0.954917 0
+ 3.300000 0.900000 0
+ 4.425000 0.900000 0
+ 4.425000 -0.900000 0
+ 3.300000 -0.900000 0
+ 3.167417 -0.954917 0
+ 3.112500 -1.087500 0
+ 3.112500 -2.212500 0
+ 1.312500 -2.212500 0
+ 1.312500 -1.087500 0
+ 1.257583 -0.954917 0
+ 1.125000 -0.900000 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.125000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.125000 -0.850000 0
+ L3 16777215 0.025000 1.362500 1.087500 0 1.362500 2.212500 0
+ L3 16777215 0.025000 3.062500 1.087500 0 3.062500 2.212500 0
+ L3 16777215 0.025000 3.300000 0.850000 0 4.425000 0.850000 0
+ L3 16777215 0.025000 3.300000 -0.850000 0 4.425000 -0.850000 0
+ L3 16777215 0.025000 1.362500 -1.087500 0 1.362500 -2.212500 0
+ L3 16777215 0.025000 3.062500 -1.087500 0 3.062500 -2.212500 0
+#StreetStopLines
+ L3 16777215 0.150000 1.050000 -0.050000 0 1.050000 -0.850000 0
+ L3 16777215 0.150000 3.375000 0.050000 0 3.375000 0.850000 0
+ L3 16777215 0.150000 1.362500 1.162500 0 2.162500 1.162500 0
+ L3 16777215 0.150000 2.262500 -1.162500 0 3.062500 -1.162500 0
+#StreetNoPassingLines
+ L3 16776960 0.025000 0.000000 0.050000 0 1.125000 0.050000 0
+ L3 16776960 0.025000 0.000000 -0.050000 0 1.125000 -0.050000 0
+ L3 16776960 0.025000 2.162500 1.087500 0 2.162500 2.212500 0
+ L3 16776960 0.025000 2.262500 2.212500 0 2.262500 1.087500 0
+ L3 16776960 0.025000 3.300000 0.050000 0 4.425000 0.050000 0
+ L3 16776960 0.025000 3.300000 -0.050000 0 4.425000 -0.050000 0
+ L3 16776960 0.025000 2.162500 -1.087500 0 2.162500 -2.212500 0
+ L3 16776960 0.025000 2.262500 -2.212500 0 2.262500 -1.087500 0
+END$SEGS
+TURNOUT N "N Street Template Intersection 4 Way 2 Stops(NoPassing) STI-204"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.425000 0.000000 90.000000
+ E 2.212500 2.212500 0.000000
+ E 2.212500 -2.212500 180.000000
+ S 16777215 0 2.212500 2.212500 2.212500 -2.212500
+#StreetBackground
+ F4 5263440 0.000000 20 1
+ 0.000000 0.900000 0
+ 1.125000 0.900000 0
+ 1.257583 0.954917 0
+ 1.312500 1.087500 0
+ 1.312500 2.212500 0
+ 3.112500 2.212500 0
+ 3.112500 1.087500 0
+ 3.167417 0.954917 0
+ 3.300000 0.900000 0
+ 4.425000 0.900000 0
+ 4.425000 -0.900000 0
+ 3.300000 -0.900000 0
+ 3.167417 -0.954917 0
+ 3.112500 -1.087500 0
+ 3.112500 -2.212500 0
+ 1.312500 -2.212500 0
+ 1.312500 -1.087500 0
+ 1.257583 -0.954917 0
+ 1.125000 -0.900000 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.125000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.125000 -0.850000 0
+ L3 16777215 0.025000 1.362500 1.087500 0 1.362500 2.212500 0
+ L3 16777215 0.025000 3.062500 1.087500 0 3.062500 2.212500 0
+ L3 16777215 0.025000 3.300000 0.850000 0 4.425000 0.850000 0
+ L3 16777215 0.025000 3.300000 -0.850000 0 4.425000 -0.850000 0
+ L3 16777215 0.025000 1.362500 -1.087500 0 1.362500 -2.212500 0
+ L3 16777215 0.025000 3.062500 -1.087500 0 3.062500 -2.212500 0
+#StreetStopLines
+ L3 16777215 0.150000 1.050000 -0.050000 0 1.050000 -0.850000 0
+ L3 16777215 0.150000 3.375000 0.050000 0 3.375000 0.850000 0
+#StreetNoPassingLines
+ L3 16776960 0.025000 0.000000 0.050000 0 1.125000 0.050000 0
+ L3 16776960 0.025000 0.000000 -0.050000 0 1.125000 -0.050000 0
+ L3 16776960 0.025000 2.162500 1.087500 0 2.162500 2.212500 0
+ L3 16776960 0.025000 2.262500 2.212500 0 2.262500 1.087500 0
+ L3 16776960 0.025000 3.300000 0.050000 0 4.425000 0.050000 0
+ L3 16776960 0.025000 3.300000 -0.050000 0 4.425000 -0.050000 0
+ L3 16776960 0.025000 2.162500 -1.087500 0 2.162500 -2.212500 0
+ L3 16776960 0.025000 2.262500 -2.212500 0 2.262500 -1.087500 0
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Intersections Two-Way Traffic (Center Turning Lane)
+TURNOUT N "N Street Template Intersection 3 Way 1 Stop(CenterTurningLaneDoublePass) STI-301"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.662500 2.212500 0.000000
+ E 2.662500 -2.212500 180.000000
+ S 16777215 0 2.662500 2.212500 2.662500 -2.212500
+#StreetBackground
+ F4 5263440 0.000000 12 1
+ 0.000000 0.900000 0
+ 1.125000 0.900000 0
+ 1.257583 0.954917 0
+ 1.312500 1.087500 0
+ 1.312500 2.212500 0
+ 4.012500 2.212500 0
+ 4.012500 -2.212500 0
+ 1.312500 -2.212500 0
+ 1.312500 -1.087500 0
+ 1.257583 -0.954917 0
+ 1.125000 -0.900000 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.125000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.125000 -0.850000 0
+ L3 16777215 0.025000 1.362500 1.087500 0 1.362500 2.212500 0
+ L3 16777215 0.025000 3.962500 2.212500 0 3.962500 -2.212500 0
+ L3 16777215 0.025000 1.362500 -1.087500 0 1.362500 -2.212500 0
+#StreetStopLines
+ L3 16777215 0.150000 1.050000 -0.050000 0 1.050000 -0.850000 0
+#StreetDoublePassingLines
+ L3 16776960 0.025000 0.375000 0.000000 0 1.125000 0.000000 0
+#
+ L3 16776960 0.025000 2.162500 1.087500 0 2.162500 2.212500 0
+ L3 16776960 0.025000 2.212500 1.087500 0 2.212500 1.837500 0
+ L3 16776960 0.025000 3.112500 1.087500 0 3.112500 1.837500 0
+ L3 16776960 0.025000 3.162500 1.087500 0 3.162500 2.212500 0
+ L3 16776960 0.025000 2.162500 -1.087500 0 2.162500 -2.212500 0
+ L3 16776960 0.025000 2.212500 -1.087500 0 2.212500 -1.837500 0
+ L3 16776960 0.025000 3.112500 -1.087500 0 3.112500 -1.837500 0
+ L3 16776960 0.025000 3.162500 -1.087500 0 3.162500 -2.212500 0
+END$SEGS
+TURNOUT N "N Street Template Intersection 3 Way 1 Stop(CenterTurningLaneNoPassing) STI-302"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.662500 2.212500 0.000000
+ E 2.662500 -2.212500 180.000000
+ S 16777215 0 2.662500 2.212500 2.662500 -2.212500
+#StreetBackground
+ F4 5263440 0.000000 12 1
+ 0.000000 0.900000 0
+ 1.125000 0.900000 0
+ 1.257583 0.954917 0
+ 1.312500 1.087500 0
+ 1.312500 2.212500 0
+ 4.012500 2.212500 0
+ 4.012500 -2.212500 0
+ 1.312500 -2.212500 0
+ 1.312500 -1.087500 0
+ 1.257583 -0.954917 0
+ 1.125000 -0.900000 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.125000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.125000 -0.850000 0
+ L3 16777215 0.025000 1.362500 1.087500 0 1.362500 2.212500 0
+ L3 16777215 0.025000 3.962500 2.212500 0 3.962500 -2.212500 0
+ L3 16777215 0.025000 1.362500 -1.087500 0 1.362500 -2.212500 0
+#StreetStopLines
+ L3 16777215 0.150000 1.050000 -0.050000 0 1.050000 -0.850000 0
+#StreetNoPassingLines
+ L3 16776960 0.025000 0.000000 0.050000 0 1.125000 0.050000 0
+ L3 16776960 0.025000 0.000000 -0.050000 0 1.125000 -0.050000 0
+#
+ L3 16776960 0.025000 2.162500 1.087500 0 2.162500 2.212500 0
+ L3 16776960 0.025000 2.212500 1.087500 0 2.212500 1.837500 0
+ L3 16776960 0.025000 3.112500 1.087500 0 3.112500 1.837500 0
+ L3 16776960 0.025000 3.162500 1.087500 0 3.162500 2.212500 0
+ L3 16776960 0.025000 2.162500 -1.087500 0 2.162500 -2.212500 0
+ L3 16776960 0.025000 2.212500 -1.087500 0 2.212500 -1.837500 0
+ L3 16776960 0.025000 3.112500 -1.087500 0 3.112500 -1.837500 0
+ L3 16776960 0.025000 3.162500 -1.087500 0 3.162500 -2.212500 0
+END$SEGS
+TURNOUT N "N Street Template Intersection 4 Way 2 Stops(CenterTurningLaneDoublePass) STI-303"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.325000 0.000000 90.000000
+ E 2.662500 2.212500 0.000000
+ E 2.662500 -2.212500 180.000000
+ S 16777215 0 2.662500 2.212500 2.662500 -2.212500
+#StreetBackground
+ F4 5263440 0.000000 20 1
+ 0.000000 0.900000 0
+ 1.125000 0.900000 0
+ 1.257583 0.954917 0
+ 1.312500 1.087500 0
+ 1.312500 2.212500 0
+ 4.012500 2.212500 0
+ 4.012500 1.087500 0
+ 4.067417 0.954917 0
+ 4.200000 0.900000 0
+ 5.325000 0.900000 0
+ 5.325000 -0.900000 0
+ 4.200000 -0.900000 0
+ 4.067417 -0.954917 0
+ 4.012500 -1.087500 0
+ 4.012500 -2.212500 0
+ 1.312500 -2.212500 0
+ 1.312500 -1.087500 0
+ 1.257583 -0.954917 0
+ 1.125000 -0.900000 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.125000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.125000 -0.850000 0
+ L3 16777215 0.025000 1.362500 1.087500 0 1.362500 2.212500 0
+ L3 16777215 0.025000 3.962500 1.087500 0 3.962500 2.212500 0
+ L3 16777215 0.025000 4.200000 0.850000 0 5.325000 0.850000 0
+ L3 16777215 0.025000 4.200000 -0.850000 0 5.325000 -0.850000 0
+ L3 16777215 0.025000 1.362500 -1.087500 0 1.362500 -2.212500 0
+ L3 16777215 0.025000 3.962500 -1.087500 0 3.962500 -2.212500 0
+#StreetStopLines
+ L3 16777215 0.150000 1.050000 -0.050000 0 1.050000 -0.850000 0
+ L3 16777215 0.150000 4.125000 0.050000 0 4.125000 0.850000 0
+#StreetDoublePassingLines
+ L3 16776960 0.025000 0.375000 0.000000 0 1.125000 0.000000 0
+ L3 16776960 0.025000 4.200000 0.000000 0 4.950000 0.000000 0
+#
+ L3 16776960 0.025000 2.162500 1.087500 0 2.162500 2.212500 0
+ L3 16776960 0.025000 2.212500 1.087500 0 2.212500 1.837500 0
+ L3 16776960 0.025000 3.112500 1.087500 0 3.112500 1.837500 0
+ L3 16776960 0.025000 3.162500 1.087500 0 3.162500 2.212500 0
+ L3 16776960 0.025000 2.162500 -1.087500 0 2.162500 -2.212500 0
+ L3 16776960 0.025000 2.212500 -1.087500 0 2.212500 -1.837500 0
+ L3 16776960 0.025000 3.112500 -1.087500 0 3.112500 -1.837500 0
+ L3 16776960 0.025000 3.162500 -1.087500 0 3.162500 -2.212500 0
+END$SEGS
+TURNOUT N "N Street Template Intersection 4 Way 2 Stops(CenterTurningLaneNoPassing) STI-304"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.325000 0.000000 90.000000
+ E 2.662500 2.212500 0.000000
+ E 2.662500 -2.212500 180.000000
+ S 16777215 0 2.662500 2.212500 2.662500 -2.212500
+#StreetBackground
+ F4 5263440 0.000000 20 1
+ 0.000000 0.900000 0
+ 1.125000 0.900000 0
+ 1.257583 0.954917 0
+ 1.312500 1.087500 0
+ 1.312500 2.212500 0
+ 4.012500 2.212500 0
+ 4.012500 1.087500 0
+ 4.067417 0.954917 0
+ 4.200000 0.900000 0
+ 5.325000 0.900000 0
+ 5.325000 -0.900000 0
+ 4.200000 -0.900000 0
+ 4.067417 -0.954917 0
+ 4.012500 -1.087500 0
+ 4.012500 -2.212500 0
+ 1.312500 -2.212500 0
+ 1.312500 -1.087500 0
+ 1.257583 -0.954917 0
+ 1.125000 -0.900000 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.125000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.125000 -0.850000 0
+ L3 16777215 0.025000 1.362500 1.087500 0 1.362500 2.212500 0
+ L3 16777215 0.025000 3.962500 1.087500 0 3.962500 2.212500 0
+ L3 16777215 0.025000 4.200000 0.850000 0 5.325000 0.850000 0
+ L3 16777215 0.025000 4.200000 -0.850000 0 5.325000 -0.850000 0
+ L3 16777215 0.025000 1.362500 -1.087500 0 1.362500 -2.212500 0
+ L3 16777215 0.025000 3.962500 -1.087500 0 3.962500 -2.212500 0
+#StreetStopLines
+ L3 16777215 0.150000 1.050000 -0.050000 0 1.050000 -0.850000 0
+ L3 16777215 0.150000 4.125000 0.050000 0 4.125000 0.850000 0
+#StreetNoPassingLines
+ L3 16776960 0.025000 0.000000 0.050000 0 1.125000 0.050000 0
+ L3 16776960 0.025000 0.000000 -0.050000 0 1.125000 -0.050000 0
+ L3 16776960 0.025000 4.200000 0.050000 0 5.325000 0.050000 0
+ L3 16776960 0.025000 4.200000 -0.050000 0 5.325000 -0.050000 0
+#
+ L3 16776960 0.025000 2.162500 1.087500 0 2.162500 2.212500 0
+ L3 16776960 0.025000 2.212500 1.087500 0 2.212500 1.837500 0
+ L3 16776960 0.025000 3.112500 1.087500 0 3.112500 1.837500 0
+ L3 16776960 0.025000 3.162500 1.087500 0 3.162500 2.212500 0
+ L3 16776960 0.025000 2.162500 -1.087500 0 2.162500 -2.212500 0
+ L3 16776960 0.025000 2.212500 -1.087500 0 2.212500 -1.837500 0
+ L3 16776960 0.025000 3.112500 -1.087500 0 3.112500 -1.837500 0
+ L3 16776960 0.025000 3.162500 -1.087500 0 3.162500 -2.212500 0
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Intersections One-Way Traffic (2 Lanes)
+TURNOUT N "N Street Template Intersection 3 Way 1 Stop(OneWay) STI-401"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.212500 2.212500 0.000000
+ E 2.212500 -2.212500 180.000000
+ S 16777215 0 2.212500 2.212500 2.212500 -2.212500
+#StreetBackground
+ F4 5263440 0.000000 12 1
+ 0.000000 0.900000 0
+ 1.125000 0.900000 0
+ 1.257583 0.954917 0
+ 1.312500 1.087500 0
+ 1.312500 2.212500 0
+ 3.112500 2.212500 0
+ 3.112500 -2.212500 0
+ 1.312500 -2.212500 0
+ 1.312500 -1.087500 0
+ 1.257583 -0.954917 0
+ 1.125000 -0.900000 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.125000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.125000 -0.850000 0
+ L3 16777215 0.025000 1.362500 1.087500 0 1.362500 2.212500 0
+ L3 16777215 0.025000 3.062500 2.212500 0 3.062500 -2.212500 0
+ L3 16777215 0.025000 1.362500 -1.087500 0 1.362500 -2.212500 0
+#StreetStopLines
+ L3 16777215 0.150000 1.050000 -0.050000 0 1.050000 -0.850000 0
+#StreetCenterLines
+ L3 16776960 0.025000 0.375000 0.000000 0 1.125000 0.000000 0
+ L3 16777215 0.025000 2.212500 1.087500 0 2.212500 1.800000 0
+ L3 16777215 0.025000 2.212500 -1.087500 0 2.212500 -1.800000 0
+END$SEGS
+TURNOUT N "N Street Template Intersection 4 Way 2 Stops(OneWay) STI-402"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.425000 0.000000 90.000000
+ E 2.212500 2.212500 0.000000
+ E 2.212500 -2.212500 180.000000
+ S 16777215 0 2.212500 2.212500 2.212500 -2.212500
+#StreetBackground
+ F4 5263440 0.000000 20 1
+ 0.000000 0.900000 0
+ 1.125000 0.900000 0
+ 1.257583 0.954917 0
+ 1.312500 1.087500 0
+ 1.312500 2.212500 0
+ 3.112500 2.212500 0
+ 3.112500 1.087500 0
+ 3.167417 0.954917 0
+ 3.300000 0.900000 0
+ 4.425000 0.900000 0
+ 4.425000 -0.900000 0
+ 3.300000 -0.900000 0
+ 3.167417 -0.954917 0
+ 3.112500 -1.087500 0
+ 3.112500 -2.212500 0
+ 1.312500 -2.212500 0
+ 1.312500 -1.087500 0
+ 1.257583 -0.954917 0
+ 1.125000 -0.900000 0
+ 0.000000 -0.900000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.125000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.125000 -0.850000 0
+ L3 16777215 0.025000 1.362500 1.087500 0 1.362500 2.212500 0
+ L3 16777215 0.025000 3.062500 1.087500 0 3.062500 2.212500 0
+ L3 16777215 0.025000 3.300000 0.850000 0 4.425000 0.850000 0
+ L3 16777215 0.025000 3.300000 -0.850000 0 4.425000 -0.850000 0
+ L3 16777215 0.025000 1.362500 -1.087500 0 1.362500 -2.212500 0
+ L3 16777215 0.025000 3.062500 -1.087500 0 3.062500 -2.212500 0
+#StreetStopLines
+ L3 16777215 0.150000 1.050000 -0.050000 0 1.050000 -0.850000 0
+ L3 16777215 0.150000 3.375000 0.050000 0 3.375000 0.850000 0
+#StreetCenterLines
+ L3 16776960 0.025000 0.375000 0.000000 0 1.125000 0.000000 0
+ L3 16777215 0.025000 2.212500 1.087500 0 2.212500 1.800000 0
+ L3 16776960 0.025000 3.300000 0.000000 0 4.050000 0.000000 0
+ L3 16777215 0.025000 2.212500 -1.087500 0 2.212500 -1.800000 0
+END$SEGS
diff --git a/app/lib/params/N-StreetTemplate2LaneStraight.xtp b/app/lib/params/N-StreetTemplate2LaneStraight.xtp
new file mode 100644
index 0000000..b4e0f4e
--- /dev/null
+++ b/app/lib/params/N-StreetTemplate2LaneStraight.xtp
@@ -0,0 +1,152 @@
+CONTENTS N Scale Street Templates 2 Lane Straights
+#References TxDot Standards, Easy Street Templates, Bush Templates and Bachmann Templates
+#Road Overall Width 24' (1.8")
+#Lane Width 12' (0.9")
+#Stripe Width 4" (0.025")
+#Stripe CL Spacing 8" (0.05")
+#R1 Curve CL Radius 26.5'R (1.9875")
+#R2 Curve CL Radius 66.5'R (4.9875")
+#R3 Curve CL Radius 106.5'R (7.9875")
+#R4 Curve CL Radius 146.5'R (10.9875")
+# Not Designed to be used in Run Train Mode
+
+SUBCONTENTS N Scale Street Templates - 2 Lane Streets (No Striping)
+TURNOUT N "N Street Template 0.75"" to 48"" 2-Lane Straight(NoStriping) STS-001"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.750000 0.000000 90.000000
+ S 16777215 0 0.000000 0.000000 0.750000 0.000000
+ X adjustable 0.750000 48.000000
+#StreetBackground
+ L3 5263440 1.800000 0.000000 0.000000 0 0.750000 0.000000 0
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Two-Way Traffic (2 Lanes)
+TURNOUT N "N Street Template 0.75"" to 48"" 2-Lane Straight(EdgeOnly) STS-101"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.750000 0.000000 90.000000
+ S 16777215 0 0.000000 0.000000 0.750000 0.000000
+ X adjustable 0.750000 48.000000
+#StreetBackground
+ L3 5263440 1.800000 0.000000 0.000000 0 0.750000 0.000000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 0.750000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 0.750000 -0.850000 0
+END$SEGS
+TURNOUT N "N Street Template 0.75"" to 48"" 2-Lane Straight(NoPassing) STS-102"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.750000 0.000000 90.000000
+ S 16777215 0 0.000000 0.000000 0.750000 0.000000
+ X adjustable 0.750000 48.000000
+#StreetBackground
+ L3 5263440 1.800000 0.000000 0.000000 0 0.750000 0.000000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 0.750000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 0.750000 -0.850000 0
+#StreetPassingLines
+ L3 16776960 0.025000 0.000000 0.050000 0 0.750000 0.050000 0
+ L3 16776960 0.025000 0.000000 -0.050000 0 0.750000 -0.050000 0
+END$SEGS
+TURNOUT N "N Street Template 2-Lane Straight(SinglePassing) STS-103"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.500000 0.000000 90.000000
+ S 16777215 0 0.000000 0.000000 1.500000 0.000000
+#StreetBackground
+ L3 5263440 1.800000 0.000000 0.000000 0 1.500000 0.000000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.500000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.500000 -0.850000 0
+#StreetPassingLines
+ L3 16776960 0.025000 0.000000 0.050000 0 1.500000 0.050000 0
+ L3 16776960 0.025000 0.375000 0.000000 0 1.125000 0.000000 0
+END$SEGS
+TURNOUT N "N Street Template 2-Lane Straight(NoPassingWithDash) STS-104"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.500000 0.000000 90.000000
+ S 16777215 0 0.000000 0.000000 1.500000 0.000000
+#StreetBackground
+ L3 5263440 1.800000 0.000000 0.000000 0 1.500000 0.000000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.500000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.500000 -0.850000 0
+#StreetPassingLines
+ L3 16776960 0.025000 0.000000 0.050000 0 1.500000 0.050000 0
+ L3 16776960 0.025000 0.375000 0.000000 0 1.125000 0.000000 0
+ L3 16776960 0.025000 0.000000 -0.050000 0 1.500000 -0.050000 0
+END$SEGS
+TURNOUT N "N Street Template 2-Lane Straight(DoublePassing) STS-105"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.500000 0.000000 90.000000
+ S 16777215 0 0.000000 0.000000 1.500000 0.000000
+#StreetBackground
+ L3 5263440 1.800000 0.000000 0.000000 0 1.500000 0.000000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.500000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.500000 -0.850000 0
+#StreetPassingLines
+ L3 16776960 0.025000 0.375000 0.000000 0 1.125000 0.000000 0
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - Two-Way Traffic (Center Turn Lane)
+TURNOUT N "N Street Template 2-Lane Straight(CenterTurnLane) STS-201"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.500000 0.000000 90.000000
+ S 16777215 0 0.000000 0.000000 1.500000 0.000000
+#StreetBackground
+ L3 5263440 2.700000 0.000000 0.000000 0 1.500000 0.000000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 1.300000 0 1.500000 1.300000 0
+ L3 16777215 0.025000 0.000000 -1.300000 0 1.500000 -1.300000 0
+#StreetCenterLines
+ L3 16776960 0.025000 0.000000 0.500000 0 1.500000 0.500000 0
+ L3 16776960 0.025000 0.375000 0.450000 0 1.125000 0.450000 0
+ L3 16776960 0.025000 0.375000 -0.450000 0 1.125000 -0.450000 0
+ L3 16776960 0.025000 0.000000 -0.500000 0 1.500000 -0.500000 0
+END$SEGS
+TURNOUT N "N Street Template 2-Lane to CenterTurnLane STS-202"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.000000 0.000000 90.000000
+ S 16777215 0 0.000000 0.000000 6.000000 0.000000
+#StreetBackground
+ F4 5263440 0.000000 4 1
+ 0.000000 1.350000 0
+ 6.000000 0.900000 0
+ 6.000000 -0.900000 0
+ 0.000000 -1.350000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 1.300000 0 6.000000 0.850000 0
+ L3 16777215 0.025000 0.000000 -1.300000 0 6.000000 -0.850000 0
+#StreetCenterLines
+ L3 16776960 0.025000 0.000000 0.500000 0 6.000000 0.050000 0
+ L3 16776960 0.025000 0.000000 -0.500000 0 6.000000 -0.050000 0
+END$SEGS
+
+
+
+SUBCONTENTS N Scale Street Templates - One-Way Traffic (2 Lanes)
+TURNOUT N "N Street Template 2-Lane Straight(OneWay) STS-301"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.500000 0.000000 90.000000
+ S 16777215 0 0.000000 0.000000 1.500000 0.000000
+#StreetBackground
+ L3 5263440 1.800000 0.000000 0.000000 0 1.500000 0.000000 0
+#StreetEdgeLines
+ L3 16777215 0.025000 0.000000 0.850000 0 1.500000 0.850000 0
+ L3 16777215 0.025000 0.000000 -0.850000 0 1.500000 -0.850000 0
+#StreetCenterLines
+ L3 16777215 0.025000 0.375000 0.000000 0 1.125000 0.000000 0
+END$SEGS
+#TURNOUT N "N Street Template 2-Lane W/Turn Lane(OneWay) STS-301"
+#END$SEGS
diff --git a/app/lib/params/N-Tomix Track.xtp b/app/lib/params/N-Tomix Track.xtp
index bcde80a..653f268 100644
--- a/app/lib/params/N-Tomix Track.xtp
+++ b/app/lib/params/N-Tomix Track.xtp
@@ -1,1709 +1,1830 @@
-CONTENTS Tomix N-Scale Fine Track
-SUBCONTENTS Tomix N-Scale Fine Track - Straight Track
-TURNOUT N "Tomix Fine Track Straight 5.51 140mm 1021"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- L 11579568 0.053333 0.000000 0.364173 5.511811 0.364173
- L 11579568 0.053333 0.000000 -0.364173 5.511811 -0.364173
- END
-TURNOUT N "Tomix Fine Track Straight 5.51 140mm (slab type) 1046/1047"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- L 11579568 0.053333 0.000000 0.364173 5.511811 0.364173
- L 11579568 0.053333 0.000000 -0.364173 5.511811 -0.364173
- END
-TURNOUT N "Tomix Fine Track Straight 11.02 280mm 1022"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 11.023622 0.000000 90.000000
- S 0 0 0.000000 0.000000 11.023622 0.000000
- L 11579568 0.053333 0.000000 0.364173 11.023622 0.364173
- L 11579568 0.053333 0.000000 -0.364173 11.023622 -0.364173
- END
-TURNOUT N "Tomix Fine Track Straight 2.85 72.5mm 1023"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.854331 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.854331 0.000000
- L 11579568 0.053333 0.000000 0.364173 2.854331 0.364173
- L 11579568 0.053333 0.000000 -0.364173 2.854331 -0.364173
- END
-TURNOUT N "Tomix Fine Track Straight 2.75 70mm 1024"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.755906 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.755906 0.000000
- L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
- L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
- END
-TURNOUT N "Tomix Fine Track Straight 3.89 99mm 1025"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.897638 0.000000 90.000000
- S 0 0 0.000000 0.000000 3.897638 0.000000
- L 11579568 0.053333 0.000000 0.364173 3.897638 0.364173
- L 11579568 0.053333 0.000000 -0.364173 3.897638 -0.364173
- END
-TURNOUT N "Tomix Fine Track Straight 6.24 158.5mm 1026"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.240157 0.000000 90.000000
- S 0 0 0.000000 0.000000 6.240157 0.000000
- L 11579568 0.053333 0.000000 0.364173 6.240157 0.364173
- L 11579568 0.053333 0.000000 -0.364173 6.240157 -0.364173
- END
-TURNOUT N "Tomix Fine Track Straight 0.72 18.5mm 1099A"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.725346 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.725346 0.000000
- L 11579568 0.053333 0.000000 0.364173 0.725346 0.364173
- L 11579568 0.053333 0.000000 -0.364173 0.725346 -0.364173
- END
-TURNOUT N "Tomix Fine Track Straight 1.29 33mm 1099B"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.299213 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.299213 0.000000
- L 11579568 0.053333 0.000000 0.364173 1.299213 0.364173
- L 11579568 0.053333 0.000000 -0.364173 1.299213 -0.364173
- END
-
-SUBCONTENTS Tomix N-Scale Fine Track - Straight PC Track
-TURNOUT N "Tomix Fine Track PC Straight 2.75 70mm 1014"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.755906 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.755906 0.000000
- L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
- L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
- END
-TURNOUT N "Tomix Fine Track PC Straight 2.85 72.5mm 1013"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.854331 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.854331 0.000000
- L 11579568 0.053333 0.000000 0.364173 2.854331 0.364173
- L 11579568 0.053333 0.000000 -0.364173 2.854331 -0.364173
- END
-TURNOUT N "Tomix Fine Track PC Straight 3.89 99mm 1015"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.897638 0.000000 90.000000
- S 0 0 0.000000 0.000000 3.897638 0.000000
- L 11579568 0.053333 0.000000 0.364173 3.897638 0.364173
- L 11579568 0.053333 0.000000 -0.364173 3.897638 -0.364173
- END
-TURNOUT N "Tomix Fine Track PC Straight 5.51 140mm 1011"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- L 11579568 0.053333 0.000000 0.364173 5.511811 0.364173
- L 11579568 0.053333 0.000000 -0.364173 5.511811 -0.364173
- END
-TURNOUT N "Tomix Fine Track PC Straight 6.24 158.5mm 1016"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.240157 0.000000 90.000000
- S 0 0 0.000000 0.000000 6.240157 0.000000
- L 11579568 0.053333 0.000000 0.364173 6.240157 0.364173
- L 11579568 0.053333 0.000000 -0.364173 6.240157 -0.364173
- END
-TURNOUT N "Tomix Fine Track PC Straight 11.02 280mm 1012/1093"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 11.023622 0.000000 90.000000
- S 0 0 0.000000 0.000000 11.023622 0.000000
- L 11579568 0.053333 0.000000 0.364173 11.023622 0.364173
- L 11579568 0.053333 0.000000 -0.364173 11.023622 -0.364173
- END
-
-SUBCONTENTS Tomix N-Scale Fine Track - Widetrack PC Straight Track
-TURNOUT N "Tomix Fine Track Widetrack PC Straight 5.51 140mm 1731/1761"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- L 11579568 0.053333 0.000000 0.728346 5.511811 0.728346
- L 11579568 0.053333 0.000000 -0.728346 5.511811 -0.728346
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Straight(branch) 5.51 140mm 1739/1769"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- L 11579568 0.053333 0.000000 0.728346 5.511811 0.728346
- L 11579568 0.053333 0.000000 -0.728346 5.511811 -0.728346
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Straight 11.02 280mm 1730/1732/1762"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 11.023622 0.000000 90.000000
- S 0 0 0.000000 0.000000 11.023622 0.000000
- L 11579568 0.053333 0.000000 0.728346 11.023622 0.728346
- L 11579568 0.053333 0.000000 -0.728346 11.023622 -0.728346
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Straight 2.85 72.5mm 1733/1763"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.854331 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.854331 0.000000
- L 11579568 0.053333 0.000000 0.728346 2.854331 0.728346
- L 11579568 0.053333 0.000000 -0.728346 2.854331 -0.728346
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Straight 2.75 70mm 1734/1764"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.755906 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.755906 0.000000
- L 11579568 0.053333 0.000000 0.728346 2.755906 0.728346
- L 11579568 0.053333 0.000000 -0.728346 2.755906 -0.728346
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Straight 3.89 99mm 1735"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.897638 0.000000 90.000000
- S 0 0 0.000000 0.000000 3.897638 0.000000
- L 11579568 0.053333 0.000000 0.728346 3.897638 0.728346
- L 11579568 0.053333 0.000000 -0.728346 3.897638 -0.728346
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Straight 6.24 158.5mm 1736"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.240157 0.000000 90.000000
- S 0 0 0.000000 0.000000 6.240157 0.000000
- L 11579568 0.053333 0.000000 0.728346 6.240157 0.728346
- L 11579568 0.053333 0.000000 -0.728346 6.240157 -0.728346
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Straight 0.72 18.5mm 1738A"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.725346 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.725346 0.000000
- L 11579568 0.053333 0.000000 0.728346 0.725346 0.728346
- L 11579568 0.053333 0.000000 -0.728346 0.725346 -0.728346
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Straight 1.29 33mm 1738B"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.299213 0.000000 90.000000
- S 0 0 0.000000 0.000000 1.299213 0.000000
- L 11579568 0.053333 0.000000 0.728346 1.299213 0.728346
- L 11579568 0.053333 0.000000 -0.728346 1.299213 -0.728346
- END
-
-SUBCONTENTS Tomix N-Scale Fine Track - Buffers
-TURNOUT N "Tomix Fine Track Buffer Trk 111mm 1421"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 2.854331 0.000000
- L 11579568 0.053333 0.000000 0.364173 4.370079 0.364173
- L 11579568 0.053333 0.000000 -0.364173 4.370079 -0.364173
- L 11579568 0.053333 4.370079 0.364173 4.370079 -0.364173
- L 0 0.106666 3.000000 0.000000 3.100000 0.000000
- L 0 0.053333 2.750000 0.190000 4.370079 0.190000
- L 0 0.053333 2.750000 -0.190000 4.370079 -0.190000
- L 0 0.053333 2.750000 0.190000 3.100000 0.000000
- L 0 0.053333 2.750000 -0.190000 3.100000 0.000000
- L 0 0.053333 3.100000 0.000000 4.370079 0.190000
- L 0 0.053333 3.100000 0.000000 4.370079 -0.190000
- END
-TURNOUT N "Tomix Fine Track Buffer Trk(LED) 80mm 1422"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 1.574803 0.000000
- L 11579568 0.053333 0.000000 0.364173 3.149606 0.364173
- L 11579568 0.053333 0.000000 -0.364173 3.149606 -0.364173
- L 11579568 0.053333 1.574803 0.364173 1.574803 -0.364173
- L 11579568 0.053333 3.149606 0.364173 3.149606 -0.364173
- F 11579568 0.000000 4
- 2.456693 -0.190000 0
- 3.055118 -0.190000 0
- 3.055118 0.190000 0
- 2.456693 0.190000 0
- END
-TURNOUT N "Tomix Fine Track Buffer Trk(LED2) 49mm 1423"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 1.299213 0.000000
- L 11579568 0.053333 0.000000 0.364173 1.929134 0.364173
- L 11579568 0.053333 0.000000 -0.364173 1.929134 -0.364173
- L 11579568 0.053333 1.299213 0.364173 1.299213 -0.364173
- L 11579568 0.053333 1.929134 0.364173 1.929134 -0.364173
- L 11579568 0.053333 0.852441 0.000000 1.629134 0.000000
- F 11579568 0.000000 4
- 0.472441 -0.190000 0
- 0.852441 -0.190000 0
- 0.852441 0.190000 0
- 0.472441 0.190000 0
- F 11579568 0.000000 4
- 1.529134 -0.100000 0
- 1.729134 -0.100000 0
- 1.729134 0.100000 0
- 1.529134 0.100000 0
- END
-TURNOUT N "Tomix Fine Track PC Buffer Trk(LED) 80mm 1427"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 1.574803 0.000000
- L 11579568 0.053333 0.000000 0.364173 3.149606 0.364173
- L 11579568 0.053333 0.000000 -0.364173 3.149606 -0.364173
- L 11579568 0.053333 1.574803 0.364173 1.574803 -0.364173
- L 11579568 0.053333 3.149606 0.364173 3.149606 -0.364173
- F 11579568 0.000000 4
- 2.456693 -0.190000 0
- 3.055118 -0.190000 0
- 3.055118 0.190000 0
- 2.456693 0.190000 0
- END
-
-
-SUBCONTENTS Tomix N-Scale Fine Track - Curved Track
-TURNOUT N "Tomix Fine Track Mini Curve 4.05R 103mm 30° 1111A"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.027559 -0.543345 120.000000
- C 0 0 4.055118 0.000000 -4.055118 0.000000 30.000000
- A 11579568 0.053333 3.690945 0.000000 -4.055118 0.000000 30.000000
- A 11579568 0.053333 4.419291 0.000000 -4.055118 0.000000 30.000000
- END
-TURNOUT N "Tomix Fine Track Mini Curve 4.05R 103mm 60° 1111B"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.511835 -2.027559 150.000000
- C 0 0 4.055118 0.000000 -4.055118 0.000000 60.000000
- A 11579568 0.053333 3.690945 0.000000 -4.055118 0.000000 60.000000
- A 11579568 0.053333 4.419291 0.000000 -4.055118 0.000000 60.000000
- END
-TURNOUT N "Tomix Fine Track Mini Curve 5.51R 140mm 30° 1112A"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.755906 -0.738443 120.000000
- C 0 0 5.511811 0.000000 -5.511811 0.000000 30.000000
- A 11579568 0.053333 5.147638 0.000000 -5.511811 0.000000 30.000000
- A 11579568 0.053333 5.875984 0.000000 -5.511811 0.000000 30.000000
- END
-TURNOUT N "Tomix Fine Track Mini Curve 5.51R 140mm 60° 1112B"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.773368 -2.755905 150.000000
- C 0 0 5.511811 0.000000 -5.511811 0.000000 60.000000
- A 11579568 0.053333 5.147638 0.000000 -5.511811 0.000000 60.000000
- A 11579568 0.053333 5.875984 0.000000 -5.511811 0.000000 60.000000
- END
-TURNOUT N "Tomix Fine Track Mini Curve 6.96R 177mm 30° 1113A"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.484252 -0.933603 120.000000
- C 0 0 6.968504 0.000000 -6.968504 0.000000 30.000000
- A 11579568 0.053333 6.604331 0.000000 -6.968504 0.000000 30.000000
- A 11579568 0.053333 7.332677 0.000000 -6.968504 0.000000 30.000000
- END
-TURNOUT N "Tomix Fine Track Mini Curve 6.96R 177mm 60° 1113B"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.034901 -3.484252 150.000000
- C 0 0 6.968504 0.000000 -6.968504 0.000000 60.000000
- A 11579568 0.053333 6.604331 0.000000 -6.968504 0.000000 60.000000
- A 11579568 0.053333 7.332677 0.000000 -6.968504 0.000000 60.000000
- END
-TURNOUT N "Tomix Fine Track Curve 9.56R 243mm 15° 1143"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.476103 -0.325985 105.000000
- C 0 0 9.566929 0.000000 -9.566929 0.000000 15.000000
- A 11579568 0.053333 9.202756 0.000000 -9.566929 0.000000 15.000000
- A 11579568 0.053333 9.931102 0.000000 -9.566929 0.000000 15.000000
- END
-TURNOUT N "Tomix Fine Track Curve 9.56R 243mm 45° 1125"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.764840 -2.802089 135.000000
- C 0 0 9.566929 0.000000 -9.566929 0.000000 45.000000
- A 11579568 0.053333 9.202756 0.000000 -9.566929 0.000000 45.000000
- A 11579568 0.053333 9.931102 0.000000 -9.566929 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Curve 11.02R 280mm 15° 1124"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.853123 -0.375621 105.000000
- C 0 0 11.023622 0.000000 -11.023622 0.000000 15.000000
- A 11579568 0.053333 10.659449 0.000000 -11.023622 0.000000 15.000000
- A 11579568 0.053333 11.387796 0.000000 -11.023622 0.000000 15.000000
- END
-TURNOUT N "Tomix Fine Track Curve 11.02R 280mm 45° 1121"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.794878 -3.228744 135.000000
- C 0 0 11.023622 0.000000 -11.023622 0.000000 45.000000
- A 11579568 0.053333 10.659449 0.000000 -11.023622 0.000000 45.000000
- A 11579568 0.053333 11.387796 0.000000 -11.023622 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Curve 12.48R 317mm 15° 1127"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.230143 -0.425256 105.000000
- C 0 0 12.480315 0.000000 -12.480315 0.000000 15.000000
- A 11579568 0.053333 12.116143 0.000000 -12.480315 0.000000 15.000000
- A 11579568 0.053333 12.844488 0.000000 -12.480315 0.000000 15.000000
- END
-TURNOUT N "Tomix Fine Track Curve 12.48R 317mm 45° 1122"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.824915 -3.655400 135.000000
- C 0 0 12.480315 0.000000 -12.480315 0.000000 45.000000
- A 11579568 0.053333 12.116143 0.000000 -12.480315 0.000000 45.000000
- A 11579568 0.053333 12.844488 0.000000 -12.480315 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Curve 13.93R 354mm 15° 1144"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.607163 -0.474892 105.000000
- C 0 0 13.937008 0.000000 -13.937008 0.000000 15.000000
- A 11579568 0.053333 13.572835 0.000000 -13.937008 0.000000 15.000000
- A 11579568 0.053333 14.301181 0.000000 -13.937008 0.000000 15.000000
- END
-TURNOUT N "Tomix Fine Track Curve 13.93R 354mm 45° 1126"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.854953 -4.082055 135.000000
- C 0 0 13.937008 0.000000 -13.937008 0.000000 45.000000
- A 11579568 0.053333 13.572835 0.000000 -13.937008 0.000000 45.000000
- A 11579568 0.053333 14.301181 0.000000 -13.937008 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Curve 15.39R 391mm 15° 1145"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.984183 -0.524528 105.000000
- C 0 0 15.393701 0.000000 -15.393701 0.000000 15.000000
- A 11579568 0.053333 15.029528 0.000000 -15.393701 0.000000 15.000000
- A 11579568 0.053333 15.757874 0.000000 -15.393701 0.000000 15.000000
- END
-TURNOUT N "Tomix Fine Track Curve 15.39R 391mm 45° 1128"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.884990 -4.508711 135.000000
- C 0 0 15.393701 0.000000 -15.393701 0.000000 45.000000
- A 11579568 0.053333 15.029528 0.000000 -15.393701 0.000000 45.000000
- A 11579568 0.053333 15.757874 0.000000 -15.393701 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Curve 21.29R 541mm 15° 1123"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.512642 -0.725753 105.000000
- C 0 0 21.299213 0.000000 -21.299213 0.000000 15.000000
- A 11579568 0.053333 20.935040 0.000000 -21.299213 0.000000 15.000000
- A 11579568 0.053333 21.663386 0.000000 -21.299213 0.000000 15.000000
- END
-TURNOUT N "Tomix Fine Track Curve 23.82R 605mm 10° 1150"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.136108 -0.361863 100.000000
- C 0 0 23.818898 0.000000 -23.818898 0.000000 10.000000
- A 11579568 0.053333 23.454725 0.000000 -23.818898 0.000000 10.000000
- A 11579568 0.053333 24.183071 0.000000 -23.818898 0.000000 10.000000
- END
-
-SUBCONTENTS Tomix N-Scale Fine Track - Curved PC Track
-TURNOUT N "Tomix Fine Track PC Curve 11.02R 280mm 15° 1194"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.853123 -0.375621 105.000000
- C 0 0 11.023622 0.000000 -11.023622 0.000000 15.000000
- A 11579568 0.053333 10.659449 0.000000 -11.023622 0.000000 15.000000
- A 11579568 0.053333 11.387796 0.000000 -11.023622 0.000000 15.000000
- END
-TURNOUT N "Tomix Fine Track PC Curve 11.02R 280mm 45° 1191"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.794878 -3.228744 135.000000
- C 0 0 11.023622 0.000000 -11.023622 0.000000 45.000000
- A 11579568 0.053333 10.659449 0.000000 -11.023622 0.000000 45.000000
- A 11579568 0.053333 11.387796 0.000000 -11.023622 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track PC Curve 9.56R 243mm 45° 1195"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.764840 -2.802089 135.000000
- C 0 0 9.566929 0.000000 -9.566929 0.000000 45.000000
- A 11579568 0.053333 9.202756 0.000000 -9.566929 0.000000 45.000000
- A 11579568 0.053333 9.931102 0.000000 -9.566929 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track PC Curve 12.48R 317mm 45° 1192"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.824915 -3.655400 135.000000
- C 0 0 12.480315 0.000000 -12.480315 0.000000 45.000000
- A 11579568 0.053333 12.116143 0.000000 -12.480315 0.000000 45.000000
- A 11579568 0.053333 12.844488 0.000000 -12.480315 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track PC Curve 13.93R 354mm 45° 1196"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.854953 -4.082055 135.000000
- C 0 0 13.937008 0.000000 -13.937008 0.000000 45.000000
- A 11579568 0.053333 13.572835 0.000000 -13.937008 0.000000 45.000000
- A 11579568 0.053333 14.301181 0.000000 -13.937008 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track PC Curve 15.39R 391mm 45° 1198"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.884990 -4.508711 135.000000
- C 0 0 15.393701 0.000000 -15.393701 0.000000 45.000000
- A 11579568 0.053333 15.029528 0.000000 -15.393701 0.000000 45.000000
- A 11579568 0.053333 15.757874 0.000000 -15.393701 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track PC Curve 21.29R 541mm 15° 1193"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.512642 -0.725753 105.000000
- C 0 0 21.299213 0.000000 -21.299213 0.000000 15.000000
- A 11579568 0.053333 20.935040 0.000000 -21.299213 0.000000 15.000000
- A 11579568 0.053333 21.663386 0.000000 -21.299213 0.000000 15.000000
- END
-TURNOUT N "Tomix Fine Track PC Curve 23.82R 605mm 10° 1190"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.136108 -0.361863 100.000000
- C 0 0 23.818898 0.000000 -23.818898 0.000000 10.000000
- A 11579568 0.053333 23.454725 0.000000 -23.818898 0.000000 10.000000
- A 11579568 0.053333 24.183071 0.000000 -23.818898 0.000000 10.000000
- END
-
-SUBCONTENTS Tomix N-Scale Fine Track - Widetrack PC Curved Track
-TURNOUT N "Tomix Fine Track Widetrack PC Curve 11.02R 280mm 22.5° 1751/1781"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.218558 -0.839123 112.500000
- C 0 0 11.023622 0.000000 -11.023622 0.000000 22.500000
- A 11579568 0.053333 10.295276 0.000000 -11.023622 0.000000 22.500000
- A 11579568 0.053333 11.751968 0.000000 -11.023622 0.000000 22.500000
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Curve 11.02R 280mm 45° 1741/1771"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.794878 -3.228744 135.000000
- C 0 0 11.023622 0.000000 -11.023622 0.000000 45.000000
- A 11579568 0.053333 10.295276 0.000000 -11.023622 0.000000 45.000000
- A 11579568 0.053333 11.751968 0.000000 -11.023622 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Curve 12.48R 317mm 22.5° 1752/1782"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.776010 -0.950007 112.500000
- C 0 0 12.480315 0.000000 -12.480315 0.000000 22.500000
- A 11579568 0.053333 11.751968 0.000000 -12.480315 0.000000 22.500000
- A 11579568 0.053333 13.208661 0.000000 -12.480315 0.000000 22.500000
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Curve 12.48R 317mm 45° 1742/1772"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.824915 -3.655400 135.000000
- C 0 0 12.480315 0.000000 -12.480315 0.000000 45.000000
- A 11579568 0.053333 11.751968 0.000000 -12.480315 0.000000 45.000000
- A 11579568 0.053333 13.208661 0.000000 -12.480315 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Curve 13.93R 354mm 22.5° 1753/1783"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.333462 -1.060892 112.500000
- C 0 0 13.937008 0.000000 -13.937008 0.000000 22.500000
- A 11579568 0.053333 13.208661 0.000000 -13.937008 0.000000 22.500000
- A 11579568 0.053333 14.665354 0.000000 -13.937008 0.000000 22.500000
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Curve 13.93R 354mm 45° 1743/1773"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.854953 -4.082055 135.000000
- C 0 0 13.937008 0.000000 -13.937008 0.000000 45.000000
- A 11579568 0.053333 13.208661 0.000000 -13.937008 0.000000 45.000000
- A 11579568 0.053333 14.665354 0.000000 -13.937008 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Curve 15.39R 391mm 22.5° 1754/1784"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.890914 -1.171776 112.500000
- C 0 0 15.393701 0.000000 -15.393701 0.000000 22.500000
- A 11579568 0.053333 14.665354 0.000000 -15.393701 0.000000 22.500000
- A 11579568 0.053333 16.122047 0.000000 -15.393701 0.000000 22.500000
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Curve 15.39R 391mm 45° 1744/1774"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.884990 -4.508711 135.000000
- C 0 0 15.393701 0.000000 -15.393701 0.000000 45.000000
- A 11579568 0.053333 14.665354 0.000000 -15.393701 0.000000 45.000000
- A 11579568 0.053333 16.122047 0.000000 -15.393701 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Curve 21.29R 541mm 15° 1740/1770"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.512642 -0.725753 105.000000
- C 0 0 21.299213 0.000000 -21.299213 0.000000 15.000000
- A 11579568 0.053333 20.570867 0.000000 -21.299213 0.000000 15.000000
- A 11579568 0.053333 22.027559 0.000000 -21.299213 0.000000 15.000000
- END
-TURNOUT N "Tomix Fine Track Widetrack PC Curve 23.82R 605mm 10° 1750"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.136108 -0.361863 100.000000
- C 0 0 23.818898 0.000000 -23.818898 0.000000 10.000000
- A 11579568 0.053333 23.090552 0.000000 -23.818898 0.000000 10.000000
- A 11579568 0.053333 24.547244 0.000000 -23.818898 0.000000 10.000000
- END
-
-SUBCONTENTS Tomix N-Scale Fine Track - Viaduct Track
-TURNOUT N "Tomix Fine Track Viaduct Straight 3.89 99mm 1075"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.897638 0.000000 90.000000
- S 0 0 0.000000 0.000000 3.897638 0.000000
- L 11579568 0.053333 0.000000 0.701680 3.897638 0.701680
- L 11579568 0.053333 0.000000 -0.701680 3.897638 -0.701680
- END
-TURNOUT N "Tomix Fine Track Viaduct Straight 5.51 140mm 1071"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- L 11579568 0.053333 0.000000 0.701680 5.511811 0.701680
- L 11579568 0.053333 0.000000 -0.701680 5.511811 -0.701680
- END
-TURNOUT N "Tomix Fine Track Viaduct Straight 6.24 158.5mm 1076"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.240157 0.000000 90.000000
- S 0 0 0.000000 0.000000 6.240157 0.000000
- L 11579568 0.053333 0.000000 0.701680 6.240157 0.701680
- L 11579568 0.053333 0.000000 -0.701680 6.240157 -0.701680
- END
-TURNOUT N "Tomix Fine Track Viaduct Straight 11.02 280mm 1072"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 11.023622 0.000000 90.000000
- S 0 0 0.000000 0.000000 11.023622 0.000000
- L 11579568 0.053333 0.000000 0.701680 11.023622 0.701680
- L 11579568 0.053333 0.000000 -0.701680 11.023622 -0.701680
- END
-TURNOUT N "Tomix Fine Track Viaduct Curve 9.56R 243mm 45° 1173"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.764840 -2.802089 135.000000
- C 0 0 9.566929 0.000000 -9.566929 0.000000 45.000000
- A 11579568 0.053333 8.865249 0.000000 -9.566929 0.000000 45.000000
- A 11579568 0.053333 10.268609 0.000000 -9.566929 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Viaduct Curve 11.02R 280mm 45° 1171"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.794878 -3.228744 135.000000
- C 0 0 11.023622 0.000000 -11.023622 0.000000 45.000000
- A 11579568 0.053333 10.321942 0.000000 -11.023622 0.000000 45.000000
- A 11579568 0.053333 11.725302 0.000000 -11.023622 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Viaduct Curve 12.48R 317mm 45° 1127"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.824915 -3.655400 135.000000
- C 0 0 12.480315 0.000000 -12.480315 0.000000 45.000000
- A 11579568 0.053333 11.778635 0.000000 -12.480315 0.000000 45.000000
- A 11579568 0.053333 13.181995 0.000000 -12.480315 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Viaduct Curve 13.93R 354mm 45° 1174"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.854953 -4.082055 135.000000
- C 0 0 13.937008 0.000000 -13.937008 0.000000 45.000000
- A 11579568 0.053333 13.235328 0.000000 -13.937008 0.000000 45.000000
- A 11579568 0.053333 14.638688 0.000000 -13.937008 0.000000 45.000000
- END
-
-SUBCONTENTS Tomix N-Scale Fine Track - Overhead PC Track
-TURNOUT N "Tomix Fine Track Overhead PC Straight 3.89 99mm 1825"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.897638 0.000000 90.000000
- S 0 0 0.000000 0.000000 3.897638 0.000000
- L 11579568 0.053333 0.000000 0.701680 3.897638 0.701680
- L 11579568 0.053333 0.000000 -0.701680 3.897638 -0.701680
- END
-TURNOUT N "Tomix Fine Track Overhead PC Straight 5.51 140mm 1821"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- L 11579568 0.053333 0.000000 0.701680 5.511811 0.701680
- L 11579568 0.053333 0.000000 -0.701680 5.511811 -0.701680
- END
-TURNOUT N "Tomix Fine Track Overhead PC Straight 6.24 158.5mm 1826"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.240157 0.000000 90.000000
- S 0 0 0.000000 0.000000 6.240157 0.000000
- L 11579568 0.053333 0.000000 0.701680 6.240157 0.701680
- L 11579568 0.053333 0.000000 -0.701680 6.240157 -0.701680
- END
-TURNOUT N "Tomix Fine Track Overhead PC Straight 11.02 280mm 1822"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 11.023622 0.000000 90.000000
- S 0 0 0.000000 0.000000 11.023622 0.000000
- L 11579568 0.053333 0.000000 0.701680 11.023622 0.701680
- L 11579568 0.053333 0.000000 -0.701680 11.023622 -0.701680
- END
-TURNOUT N "Tomix Fine Track Overhead PC Curve 9.56R 243mm 45° 1873"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.764840 -2.802089 135.000000
- C 0 0 9.566929 0.000000 -9.566929 0.000000 45.000000
- A 11579568 0.053333 8.865249 0.000000 -9.566929 0.000000 45.000000
- A 11579568 0.053333 10.268609 0.000000 -9.566929 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Overhead PC Curve 11.02R 280mm 45° 1871"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.794878 -3.228744 135.000000
- C 0 0 11.023622 0.000000 -11.023622 0.000000 45.000000
- A 11579568 0.053333 10.321942 0.000000 -11.023622 0.000000 45.000000
- A 11579568 0.053333 11.725302 0.000000 -11.023622 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Overhead PC Curve 12.48R 317mm 45° 1872"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.824915 -3.655400 135.000000
- C 0 0 12.480315 0.000000 -12.480315 0.000000 45.000000
- A 11579568 0.053333 11.778635 0.000000 -12.480315 0.000000 45.000000
- A 11579568 0.053333 13.181995 0.000000 -12.480315 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Overhead PC Curve 13.93R 354mm 45° 1874"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.854953 -4.082055 135.000000
- C 0 0 13.937008 0.000000 -13.937008 0.000000 45.000000
- A 11579568 0.053333 13.235328 0.000000 -13.937008 0.000000 45.000000
- A 11579568 0.053333 14.638688 0.000000 -13.937008 0.000000 45.000000
- END
-
-SUBCONTENTS Tomix N-Scale Fine Track - Overhead Double Track
-TURNOUT N "Tomix Fine Track Overhead Dbl Trk Straight 5.51 140mm 1061"
- P "Normal" 1 0 2
- E 0.000000 0.728346 270.000000
- E 5.511811 0.728346 90.000000
- E 0.000000 -0.728346 270.000000
- E 5.511811 -0.728346 90.000000
- S 0 0 0.000000 0.728346 5.511811 0.728346
- S 0 0 0.000000 -0.728346 5.511811 -0.728346
- L 11579568 0.053333 0.000000 1.456692 5.511811 1.456692
- L 11579568 0.053333 0.000000 -1.456692 5.511811 -1.456692
- END
-TURNOUT N "Tomix Fine Track Overhead Dbl Trk Straight 11.02 280mm 1062"
- P "Normal" 1 0 2
- E 0.000000 0.728346 270.000000
- E 11.023622 0.728346 90.000000
- E 0.000000 -0.728346 270.000000
- E 11.023622 -0.728346 90.000000
- S 0 0 0.000000 0.728346 11.023622 0.728346
- S 0 0 0.000000 -0.728346 11.023622 -0.728346
- L 11579568 0.053333 0.000000 1.456692 11.023622 1.456692
- L 11579568 0.053333 0.000000 -1.456692 11.023622 -1.456692
- END
-TURNOUT N "Tomix Fine Track Overhead Dbl Trk Straight 44.09 1120mm 1069"
- P "Normal" 1 0 2
- E 0.000000 0.728346 270.000000
- E 44.094488 0.728346 90.000000
- E 0.000000 -0.728346 270.000000
- E 44.094488 -0.728346 90.000000
- S 0 0 0.000000 0.728346 44.094488 0.728346
- S 0 0 0.000000 -0.728346 44.094488 -0.728346
- L 11579568 0.053333 0.000000 1.456692 44.094488 1.456692
- L 11579568 0.053333 0.000000 -1.456692 44.094488 -1.456692
- END
-TURNOUT N "Tomix Fine Track Overhead Dbl Trk Curve 11.02/12.48R 280/317mm 45° 1161"
- P "Normal" 1 0 2
- E 0.000000 0.728346 270.000000
- E 0.000000 -0.728346 270.000000
- E 8.824915 -2.927054 135.000000
- E 7.794878 -3.957090 135.000000
- C 0 0 12.480315 0.000000 -11.751968 0.000000 45.000000
- C 0 0 11.023622 0.000000 -11.751968 0.000000 45.000000
- A 11579568 0.053333 13.208661 0.000000 -11.751968 0.000000 45.000000
- A 11579568 0.053333 10.295276 0.000000 -11.751968 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Overhead Dbl Trk Curve 13.93/15.39R 354/391mm 45° 1162"
- P "Normal" 1 0 2
- E 0.000000 0.728346 270.000000
- E 0.000000 -0.728346 270.000000
- E 10.884990 -3.780365 135.000000
- E 9.854953 -4.810401 135.000000
- C 0 0 15.393701 0.000000 -14.663354 0.000000 45.000000
- C 0 0 13.937008 0.000000 -14.663354 0.000000 45.000000
- A 11579568 0.053333 16.122047 0.000000 -14.663354 0.000000 45.000000
- A 11579568 0.053333 13.208662 0.000000 -14.663354 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Overhead Dbl Trk Curve 16.85/18.30R 428/465mm 45° 1163"
- P "Normal" 1 0 2
- E 0.000000 0.728346 270.000000
- E 0.000000 -0.728346 270.000000
- E 12.945065 -4.633676 135.000000
- E 11.915028 -5.663712 135.000000
- C 0 0 18.307087 0.000000 -17.578740 0.000000 45.000000
- C 0 0 16.850394 0.000000 -17.578740 0.000000 45.000000
- A 11579568 0.053333 19.035433 0.000000 -17.578740 0.000000 45.000000
- A 11579568 0.053333 16.122048 0.000000 -17.578740 0.000000 45.000000
- END
-
-SUBCONTENTS Tomix N-Scale Fine Track - Viaduct Double Track Slab Type
-TURNOUT N "Tomix Fine Track Viaduct Dbl Trk Straight 5.51 140mm (slab type) 1066"
- P "Normal" 1 0 2
- E 0.000000 0.728346 270.000000
- E 5.511811 0.728346 90.000000
- E 0.000000 -0.728346 270.000000
- E 5.511811 -0.728346 90.000000
- S 0 0 0.000000 0.728346 5.511811 0.728346
- S 0 0 0.000000 -0.728346 5.511811 -0.728346
- L 11579568 0.053333 0.000000 1.456692 5.511811 1.456692
- L 11579568 0.053333 0.000000 -1.456692 5.511811 -1.456692
- END
-TURNOUT N "Tomix Fine Track Viaduct Dbl Trk Straight 11.02 280mm (slab type) 1067"
- P "Normal" 1 0 2
- E 0.000000 0.728346 270.000000
- E 11.023622 0.728346 90.000000
- E 0.000000 -0.728346 270.000000
- E 11.023622 -0.728346 90.000000
- S 0 0 0.000000 0.728346 11.023622 0.728346
- S 0 0 0.000000 -0.728346 11.023622 -0.728346
- L 11579568 0.053333 0.000000 1.456692 11.023622 1.456692
- L 11579568 0.053333 0.000000 -1.456692 11.023622 -1.456692
- END
-TURNOUT N "Tomix Fine Track Viaduct Dbl Trk Straight 44.09 1120mm (slab type) 1070"
- P "Normal" 1 0 2
- E 0.000000 0.728346 270.000000
- E 44.094488 0.728346 90.000000
- E 0.000000 -0.728346 270.000000
- E 44.094488 -0.728346 90.000000
- S 0 0 0.000000 0.728346 44.094488 0.728346
- S 0 0 0.000000 -0.728346 44.094488 -0.728346
- L 11579568 0.053333 0.000000 1.456692 44.094488 1.456692
- L 11579568 0.053333 0.000000 -1.456692 44.094488 -1.456692
- END
-TURNOUT N "Tomix Fine Track Viaduct Dbl Trk Curve 16.85/18.30R 428/465mm 45°(slab type) 1168"
- P "Normal" 1 0 2
- E 0.000000 0.728346 270.000000
- E 0.000000 -0.728346 270.000000
- E 12.945065 -4.633676 135.000000
- E 11.915028 -5.663712 135.000000
- C 0 0 18.307087 0.000000 -17.578740 0.000000 45.000000
- C 0 0 16.850394 0.000000 -17.578740 0.000000 45.000000
- A 11579568 0.053333 19.035433 0.000000 -17.578740 0.000000 45.000000
- A 11579568 0.053333 16.122048 0.000000 -17.578740 0.000000 45.000000
- END
-TURNOUT N "Tomix Fine Track Viaduct Dbl Trk Curve 19.76/21.22R 502/539mm 22.5°(slab type) 1169"
- P "Normal" 1 0 2
- E 0.000000 0.728346 270.000000
- E 0.000000 -0.728346 270.000000
- E 8.120723 -0.886966 112.500000
- E 7.563271 -2.232774 112.500000
- C 0 0 21.220472 0.000000 -20.492125 0.000000 22.500000
- C 0 0 19.763779 0.000000 -20.492125 0.000000 22.500000
- A 11579568 0.053333 21.948818 0.000000 -20.492125 0.000000 22.500000
- A 11579568 0.053333 19.035434 0.000000 -20.492125 0.000000 22.500000
- END
-
-
-SUBCONTENTS Tomix N-Scale Fine Track - Turnouts
-TURNOUT N "Tomix Fine Track Turnout 541mm-R15 (manual) 1209"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- E 5.512642 -0.725753 105.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- C 0 0 21.299213 0.000000 -21.299213 0.000000 15.000000
- L 11579568 0.053333 0.000000 0.364173 5.511811 0.364173
- A 11579568 0.053333 20.935040 0.000000 -21.299213 0.000000 15.000000
- G 11579568 0.000000 0.187500 0.437500 -0.633274 0
- G 11579568 0.000000 0.187500 0.562500 -0.633274 0
- F 11579568 0.000000 4
- 0.437500 -0.364173 0
- 0.437500 -0.820774 0
- 0.562500 -0.820774 0
- 0.562500 -0.364173 0
- END
-TURNOUT N "Tomix Fine Track Turnout 541mm-L15 (manual) 1210"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- E 5.512642 0.725753 75.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- C 0 0 21.299213 0.000000 21.299213 165.000000 15.000000
- L 11579568 0.053333 0.000000 -0.364173 5.511811 -0.364173
- A 11579568 0.053333 20.935040 0.000000 21.299213 165.000000 15.000000
- G 11579568 0.000000 0.187500 0.437500 0.633274 0
- G 11579568 0.000000 0.187500 0.562500 0.633274 0
- F 11579568 0.000000 4
- 0.437500 0.364173 0
- 0.437500 0.820774 0
- 0.562500 0.820774 0
- 0.562500 0.364173 0
- END
-TURNOUT N "Tomix Fine Track Turnout 541mm-R15 (elec) 1241/81"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- E 5.512642 -0.725753 105.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- C 0 0 21.299213 0.000000 -21.299213 0.000000 15.000000
- L 11579568 0.053333 0.000000 0.364173 5.511811 0.364173
- A 11579568 0.053333 20.935040 0.000000 -21.299213 0.000000 15.000000
- G 11579568 0.000000 0.187500 0.437500 -0.633274 0
- G 11579568 0.000000 0.187500 0.562500 -0.633274 0
- F 11579568 0.000000 4
- 0.437500 -0.364173 0
- 0.437500 -0.820774 0
- 0.562500 -0.820774 0
- 0.562500 -0.364173 0
- END
-TURNOUT N "Tomix Fine Track Turnout 541mm-L15 (elec) 1242/82"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- E 5.512642 0.725753 75.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- C 0 0 21.299213 0.000000 21.299213 165.000000 15.000000
- L 11579568 0.053333 0.000000 -0.364173 5.511811 -0.364173
- A 11579568 0.053333 20.935040 0.000000 21.299213 165.000000 15.000000
- G 11579568 0.000000 0.187500 0.437500 0.633274 0
- G 11579568 0.000000 0.187500 0.562500 0.633274 0
- F 11579568 0.000000 4
- 0.437500 0.364173 0
- 0.437500 0.820774 0
- 0.562500 0.820774 0
- 0.562500 0.364173 0
- END
-TURNOUT N "Tomix Fine Track 3-Way Turnout 541mm-L15 (elec) 1261"
- P "Left" 1
- P "Normal" 2
- P "Right" 3
- E 5.511811 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- E 0.000000 -0.725753 255.000000
- E 0.000000 0.725753 285.000000
- C 0 0 21.299213 5.511811 21.299213 180.000000 15.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- C 0 0 21.299213 5.511811 -21.299213 345.000000 15.000000
- A 11579568 0.053333 20.935040 5.511811 21.299213 180.000000 15.000000
- A 11579568 0.053333 20.935040 5.511811 -21.299213 345.000000 15.000000
- G 11579568 0.000000 0.187500 5.074311 0.633274 0
- G 11579568 0.000000 0.187500 4.949311 0.633274 0
- F 11579568 0.000000 4
- 5.074311 0.364173 0
- 5.074311 0.820774 0
- 4.949311 0.820774 0
- 4.949311 0.364173 0
- G 11579568 0.000000 0.187500 4.074311 0.633274 0
- G 11579568 0.000000 0.187500 3.949311 0.633274 0
- F 11579568 0.000000 4
- 4.074311 0.364173 0
- 4.074311 0.820774 0
- 3.949311 0.820774 0
- 3.949311 0.364173 0
- END
-TURNOUT N "Tomix Fine Track 3-Way Turnout 541mm-R15 (elec) 1262"
- P "Left" 1
- P "Normal" 2
- P "Right" 3
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- E 5.512642 -0.725753 105.000000
- E 5.512642 0.725753 75.000000
- C 0 0 21.299213 0.000000 21.299213 165.000000 15.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- C 0 0 21.299213 0.000000 -21.299213 0.000000 15.000000
- A 11579568 0.053333 20.935040 0.000000 21.299213 165.000000 15.000000
- A 11579568 0.053333 20.935040 0.000000 -21.299213 0.000000 15.000000
- G 11579568 0.000000 0.187500 0.437500 0.633274 0
- G 11579568 0.000000 0.187500 0.562500 0.633274 0
- F 11579568 0.000000 4
- 0.437500 0.364173 0
- 0.437500 0.820774 0
- 0.562500 0.820774 0
- 0.562500 0.364173 0
- G 11579568 0.000000 0.187500 1.437500 0.633274 0
- G 11579568 0.000000 0.187500 1.562500 0.633274 0
- F 11579568 0.000000 4
- 1.437500 0.364173 0
- 1.437500 0.820774 0
- 1.562500 0.820774 0
- 1.562500 0.364173 0
- END
-TURNOUT N "Tomix Fine Track Wye Turnout 280mm-15 (elec) 1240"
- P "Left" 1
- P "Right" 2
- E 0.000000 0.000000 270.000000
- E 2.853123 0.375621 75.000000
- E 2.853123 -0.375621 105.000000
- C 0 0 11.023622 0.000000 11.023622 165.000000 15.000000
- C 0 0 11.023622 0.000000 -11.023622 0.000000 15.000000
- A 11579568 0.053333 10.659449 0.000000 11.023622 165.000000 15.000000
- A 11579568 0.053333 10.659449 0.000000 -11.023622 0.000000 15.000000
- G 11579568 0.000000 0.187500 0.937500 0.633274 0
- G 11579568 0.000000 0.187500 1.062500 0.633274 0
- F 11579568 0.000000 4
- 0.937500 0.364173 0
- 0.937500 0.820774 0
- 1.062500 0.820774 0
- 1.062500 0.364173 0
- END
-TURNOUT N "Tomix Fine Track Turnout 280mm-R30 (elec) 1243"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- E 5.511811 -1.476885 120.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- C 0 0 11.023622 0.000000 -11.023622 0.000000 30.000000
- L 11579568 0.053333 0.000000 0.364173 5.511811 0.364173
- A 11579568 0.053333 10.659449 0.000000 -11.023622 0.000000 30.000000
- L 11579568 0.053333 4.511811 -0.364173 5.511811 -0.364173
- A 11579568 0.053333 11.469396 0.000000 -11.023622 23.000000 7.000000
- G 11579568 0.000000 0.187500 0.437500 -0.633274 0
- G 11579568 0.000000 0.187500 0.562500 -0.633274 0
- F 11579568 0.000000 4
- 0.437500 -0.364173 0
- 0.437500 -0.820774 0
- 0.562500 -0.820774 0
- 0.562500 -0.364173 0
- END
-TURNOUT N "Tomix Fine Track Turnout 280mm-L30 (elec) 1244"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- E 5.511811 1.476885 60.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- C 0 0 11.023622 0.000000 11.023622 150.000000 30.000000
- L 11579568 0.053333 0.000000 -0.364173 5.511811 -0.364173
- A 11579568 0.053333 10.659449 0.000000 11.023622 150.000000 30.000000
- L 11579568 0.053333 4.511811 0.364173 5.511811 0.364173
- A 11579568 0.053333 11.469396 0.000000 11.023622 150.000000 7.000000
- G 11579568 0.000000 0.187500 0.437500 0.633274 0
- G 11579568 0.000000 0.187500 0.562500 0.633274 0
- F 11579568 0.000000 4
- 0.437500 0.364173 0
- 0.437500 0.820774 0
- 0.562500 0.820774 0
- 0.562500 0.364173 0
- END
-TURNOUT N "Tomix Fine Track Mini-Turnout 140mm-R30 1231"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 2.755906 0.000000 90.000000
- E 2.755906 -0.738443 120.000000
- S 0 0 0.000000 0.000000 2.755906 0.000000
- C 0 0 5.511811 0.000000 -5.511811 0.000000 30.000000
- L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
- A 11579568 0.053333 5.147638 0.000000 -5.511811 0.000000 30.000000
- G 11579568 0.000000 0.187500 0.437500 -0.633274 0
- G 11579568 0.000000 0.187500 0.562500 -0.633274 0
- F 11579568 0.000000 4
- 0.437500 -0.364173 0
- 0.437500 -0.820774 0
- 0.562500 -0.820774 0
- 0.562500 -0.364173 0
- END
-TURNOUT N "Tomix Fine Track Mini-Turnout 140mm-L30 1232"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 2.755906 0.000000 90.000000
- E 2.755906 0.738443 60.000000
- S 0 0 0.000000 0.000000 2.755906 0.000000
- C 0 0 5.511811 0.000000 5.511811 150.000000 30.000000
- L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
- A 11579568 0.053333 5.147638 0.000000 5.511811 150.000000 30.000000
- G 11579568 0.000000 0.187500 0.437500 0.633274 0
- G 11579568 0.000000 0.187500 0.562500 0.633274 0
- F 11579568 0.000000 4
- 0.437500 0.364173 0
- 0.437500 0.820774 0
- 0.562500 0.820774 0
- 0.562500 0.364173 0
- END
-TURNOUT N "Tomix Fine Track Turnout 317/280mm Curve-R45 (elec) 1248"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 8.824915 -3.655400 135.000000
- E 7.794878 -3.228744 135.000000
- C 0 0 12.480315 0.000000 -12.480315 0.000000 45.000000
- C 0 0 11.023622 0.000000 -11.023622 0.000000 45.000000
- A 11579568 0.053333 12.844488 0.000000 -12.480315 0.000000 45.000000
- A 11579568 0.053333 10.659449 0.000000 -11.023622 0.000000 45.000000
- G 11579568 0.000000 0.187500 0.437500 -0.633274 0
- G 11579568 0.000000 0.187500 0.562500 -0.633274 0
- F 11579568 0.000000 4
- 0.437500 -0.364173 0
- 0.437500 -0.820774 0
- 0.562500 -0.820774 0
- 0.562500 -0.364173 0
- END
-TURNOUT N "Tomix Fine Track Turnout 317/280mm Curve-L45 (elec) 1249"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 8.824915 3.655400 45.000000
- E 7.794878 3.228744 45.000000
- C 0 0 12.480315 0.000000 12.480315 135.000000 45.000000
- C 0 0 11.023622 0.000000 11.023622 135.000000 45.000000
- A 11579568 0.053333 12.844488 0.000000 12.480315 135.000000 45.000000
- A 11579568 0.053333 10.659449 0.000000 11.023622 135.000000 45.000000
- G 11579568 0.000000 0.187500 0.437500 0.633274 0
- G 11579568 0.000000 0.187500 0.562500 0.633274 0
- F 11579568 0.000000 4
- 0.437500 0.364173 0
- 0.437500 0.820774 0
- 0.562500 0.820774 0
- 0.562500 0.364173 0
- END
-TURNOUT N "Tomix Fine Track Double Crossover 1247"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
- E 0.000000 0.000000 270.000000
- E 11.023622 0.000000 90.000000
- E 0.000000 1.456693 270.000000
- E 11.023622 1.456693 90.000000
- S 0 0.000000 0.000000 0.000000 0.605392 0.000000
- S 0 0.000000 0.605392 0.000000 10.418230 0.000000
- S 0 0.000000 10.418230 0.000000 11.023622 0.000000
- S 0 0.000000 0.000000 1.456693 0.605392 1.456693
- S 0 0.000000 0.605392 1.456693 10.418230 1.456693
- S 0 0.000000 10.418230 1.456693 11.023622 1.456693
- C 0 0.000000 -16.804501 0.605415 16.804501 164.231537 15.768539
- S 0 0.000000 5.172043 0.632397 5.851579 0.824296
- C 0 0.000000 16.804501 10.418251 -15.347802 344.231537 15.768539
- C 0 0.000000 16.804501 0.605325 -15.347808 0.000000 15.768539
- S 0 0.000000 5.172043 0.824296 5.851579 0.632397
- C 0 0.000000 -16.804501 10.418251 16.804495 180.000000 15.768539
- L 11579568 0.053333 0.000000 -0.364173 11.023622 -0.364173
- L 11579568 0.053333 0.000000 0.364173 1.5 0.364173
- L 11579568 0.053333 0.000000 1.092520 1.5 1.092520
- L 11579568 0.053333 1.5 0.364173 1.5 1.092520
- L 11579568 0.053333 11.023622 0.364173 9.523622 0.364173
- L 11579568 0.053333 11.023622 1.092520 9.523622 1.092520
- L 11579568 0.053333 9.523622 0.364173 9.523622 1.092520
- L 11579568 0.053333 0.000000 1.820866 11.023622 1.820866
- END
-TURNOUT N "Tomix Fine Track Double Slip 140mm-15R 1245" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 7 6
- P "Slip2" 4 8 3
- E 5.511811 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- E 0.000000 0.738443 285.000000
- E 5.511811 -0.738443 105.000000
- S 0 0.000000 0.000000 0.000000 0.706236 0.000000
- S 0 0.000000 0.706236 0.000000 4.805575 0.000000
- S 0 0.000000 4.805575 0.000000 5.511811 0.000000
- S 0 0.000000 0.000000 0.738443 0.776077 0.530493
- S 0 0.000000 0.776077 0.530493 4.735734 -0.530493
- S 0 0.000000 4.735734 -0.530493 5.511811 -0.738443
- C 0 0.000000 15.568784 0.706236 -15.568784 0.000000 15.000000
- C 0 0.000000 -15.568784 4.805575 15.568784 180.000000 15.000000
- L 11579568 0.053333 0.000000 -0.364173 0.706236 -0.364173
- L 11579568 0.053333 4.620359 -0.882258 5.411811 -1.102616
- A 11579568 0.053333 15.204611 0.706236 -15.568784 0.000000 15.000000
- L 11579568 0.053333 0.100000 1.102616 0.891452 0.882258
- L 11579568 0.053333 4.805575 0.364173 5.511811 0.364173
- A 11579568 0.053333 15.204611 4.805575 15.568784 180.000000 15.000000
- G 11579568 0.000000 0.187500 1.437500 -0.633274 0
- G 11579568 0.000000 0.187500 1.562500 -0.633274 0
- F 11579568 0.000000 4
- 1.437500 -0.364173 0
- 1.437500 -0.820774 0
- 1.562500 -0.820774 0
- 1.562500 -0.364173 0
- G 11579568 0.000000 0.187500 3.937500 -1.033274 0
- G 11579568 0.000000 0.187500 4.062500 -1.033274 0
- F 11579568 0.000000 4
- 3.937500 -0.764173 0
- 3.937500 -1.220774 0
- 4.062500 -1.220774 0
- 4.062500 -0.764173 0
- END
-TURNOUT N "Tomix Fine Track Double Slip 140mm-15L 1246" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 8 6
- P "Slip2" 4 7 3
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- E 0.000000 -0.738443 255.000000
- E 5.511811 0.738443 75.000000
- S 0 0.000000 0.000000 0.000000 0.706236 0.000000
- S 0 0.000000 0.706236 0.000000 4.805575 0.000000
- S 0 0.000000 4.805575 0.000000 5.511811 0.000000
- S 0 0.000000 0.000000 -0.738443 0.776077 -0.530493
- S 0 0.000000 0.776077 -0.530493 4.735734 0.530493
- S 0 0.000000 4.735734 0.530493 5.511811 0.738443
- C 0 0.000000 15.568784 4.805575 -15.568784 345.000000 15.000000
- C 0 0.000000 -15.568784 0.706236 15.568784 165.000000 15.000000
- L 11579568 0.053333 0.000000 0.364173 0.706236 0.364173
- L 11579568 0.053333 4.620359 0.882258 5.411811 1.102616
- A 11579568 0.053333 15.204611 0.706236 15.568784 165.000000 15.000000
- L 11579568 0.053333 0.100000 -1.102616 0.891452 -0.882258
- L 11579568 0.053333 4.805575 -0.364173 5.511811 -0.364173
- A 11579568 0.053333 15.204611 4.805575 -15.568784 345.000000 15.000000
- G 11579568 0.000000 0.187500 3.937500 -0.633274 0
- G 11579568 0.000000 0.187500 4.062500 -0.633274 0
- F 11579568 0.000000 4
- 3.937500 -0.364173 0
- 3.937500 -0.820774 0
- 4.062500 -0.820774 0
- 4.062500 -0.364173 0
- G 11579568 0.000000 0.187500 1.437500 -1.033274 0
- G 11579568 0.000000 0.187500 1.562500 -1.033274 0
- F 11579568 0.000000 4
- 1.437500 -0.7641730
- 1.437500 -1.220774 0
- 1.562500 -1.220774 0
- 1.562500 -0.764173 0
- END
-
-SUBCONTENTS Tomix N-Scale Fine Track - Crossings
-TURNOUT N "Tomix Fine Track Crossing 15° 140mm(R) 1322"
- P "Normal" 1 0 2
- E 5.511811 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- E 0.000000 0.738443 285.000000
- E 5.511811 -0.738443 105.000000
- S 0 0.000000 0.000000 0.000000 5.511811 0.000000
- S 0 0.000000 0.000000 0.738443 5.511811 -0.738443
- L 11579568 0.053333 0.100000 1.102616 2.755906 0.364173
- L 11579568 0.053333 2.755906 0.364173 5.511811 0.364173
- L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
- L 11579568 0.053333 2.755906 -0.364173 5.411811 -1.102616
- END
-TURNOUT N "Tomix Fine Track Crossing 15° 140mm(L) 1333"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- E 0.000000 -0.738443 255.000000
- E 5.511811 0.738443 75.000000
- S 0 0.000000 0.000000 0.000000 5.511811 0.000000
- S 0 0.000000 0.000000 -0.738443 5.511811 0.738443
- L 11579568 0.053333 0.100000 -1.102616 2.755906 -0.364173
- L 11579568 0.053333 2.755906 -0.364173 5.511811 -0.364173
- L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
- L 11579568 0.053333 2.755906 0.364173 5.411811 1.102616
- END
-TURNOUT N "Tomix Fine Track Crossing 30° 72.5mm 1321"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 2.854331 0.000000 90.000000
- E 0.191204 -0.713583 240.000000
- E 2.663127 0.713583 60.000000
- S 0 0.000000 0.000000 0.000000 2.854331 0.000000
- S 0 0.000000 0.191204 -0.713583 2.663127 0.713583
- L 11579568 0.053333 0.000000 0.364173 1.327166 0.364173
- L 11579568 0.053333 1.327166 0.364173 2.454331 1.027756
- L 11579568 0.053333 0.400000 -1.027756 1.527166 -0.364173
- L 11579568 0.053333 1.527166 -0.364173 2.854331 -0.364173
- END
-TURNOUT N "Tomix Fine Track Crossing 90° 1324"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 1.456693 0.000000 90.000000
- E 0.728346 0.728346 0.000000
- E 0.728346 -0.728346 180.000000
- S 0 0 0.000000 0.000000 1.456693 0.000000
- S 0 0 0.728346 0.728346 0.728346 -0.728346
- L 11579568 0.053333 0.000000 0.364173 0.364173 0.364173
- L 11579568 0.053333 0.000000 -0.364173 0.364173 -0.364173
- L 11579568 0.053333 1.092519 0.364173 1.456693 0.364173
- L 11579568 0.053333 1.092519 -0.364173 1.456693 -0.364173
- L 11579568 0.053333 0.364173 -0.728346 0.364173 -0.364173
- L 11579568 0.053333 1.092519 -0.728346 1.092519 -0.364173
- L 11579568 0.053333 0.364173 0.364173 0.364173 0.728346
- L 11579568 0.053333 1.092519 0.364173 1.092519 0.728346
- END
-
-SUBCONTENTS Tomix N-Scale Fine Track - Brigdes
-TURNOUT N "Tomix Fine Track Truss Bridge 11.02 280mm 3030/31/32/33"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 11.023622 0.000000 90.000000
- S 0 0 0.000000 0.000000 11.023622 0.000000
- L 0 0.053333 0.000000 0.701680 11.023622 0.701680
- L 0 0.053333 0.000000 -0.701680 11.023622 -0.701680
- L 0 0.053333 0.918635 -0.701680 0.918635 0.701680
- L 0 0.053333 0.918635 0.000000 1.837270 0.701680
- L 0 0.053333 0.918635 0.000000 1.837270 -0.701680
- L 0 0.053333 1.837270 0.701680 2.755905 0.000000
- L 0 0.053333 1.837270 -0.701680 2.755905 0.000000
- L 0 0.053333 2.755905 -0.701680 2.755905 0.701680
- L 0 0.053333 2.755905 0.000000 3.674540 0.701680
- L 0 0.053333 2.755905 0.000000 3.674540 -0.701680
- L 0 0.053333 3.674540 0.701680 4.593175 0.000000
- L 0 0.053333 3.674540 -0.701680 4.593175 0.000000
- L 0 0.053333 4.593175 -0.701680 4.593175 0.701680
- L 0 0.053333 4.593175 0.000000 5.511811 0.701680
- L 0 0.053333 4.593175 0.000000 5.511811 -0.701680
- L 0 0.053333 5.511811 0.701680 6.430445 0.000000
- L 0 0.053333 5.511811 -0.701680 6.430445 0.000000
- L 0 0.053333 6.430445 -0.701680 6.430445 0.701680
- L 0 0.053333 6.430445 0.000000 7.349080 0.701680
- L 0 0.053333 6.430445 0.000000 7.349080 -0.701680
- L 0 0.053333 7.349080 0.701680 8.267715 0.000000
- L 0 0.053333 7.349080 -0.701680 8.267715 0.000000
- L 0 0.053333 8.267715 -0.701680 8.267715 0.701680
- L 0 0.053333 8.267715 0.000000 9.186350 0.701680
- L 0 0.053333 8.267715 0.000000 9.186350 -0.701680
- L 0 0.053333 9.186350 0.701680 10.104985 0.000000
- L 0 0.053333 9.186350 -0.701680 10.104985 0.000000
- L 0 0.053333 10.104985 -0.701680 10.104985 0.701680
- END
-TURNOUT N "Tomix Fine Track Dbl Trk Truss Bridge 11.02 280mm 3051/52/53/3257"
- P "Normal" 1 0 2
- E 0.000000 0.728346 270.000000
- E 11.023622 0.728346 90.000000
- E 0.000000 -0.728346 270.000000
- E 11.023622 -0.728346 90.000000
- S 0 0 0.000000 0.728346 11.023622 0.728346
- S 0 0 0.000000 -0.728346 11.023622 -0.728346
- L 0 0.053333 0.000000 1.430026 11.023622 1.430026
- L 0 0.053333 0.000000 -1.430026 11.023622 -1.430026
- L 0 0.053333 0.918635 -1.430026 0.918635 1.430026
- L 0 0.053333 0.918635 1.430026 2.755905 -1.430026
- L 0 0.053333 0.918635 -1.430026 2.755905 1.430026
- L 0 0.053333 2.755905 -1.430026 2.755905 1.430026
- L 0 0.053333 2.755905 1.430026 4.593175 -1.430026
- L 0 0.053333 2.755905 -1.430026 4.593175 1.430026
- L 0 0.053333 4.593175 -1.430026 4.593175 1.430026
- L 0 0.053333 4.593175 1.430026 6.430445 -1.430026
- L 0 0.053333 4.593175 -1.430026 6.430445 1.430026
- L 0 0.053333 6.430445 -1.430026 6.430445 1.430026
- L 0 0.053333 6.430445 1.430026 8.267715 -1.430026
- L 0 0.053333 6.430445 -1.430026 8.267715 1.430026
- L 0 0.053333 8.267715 -1.430026 8.267715 1.430026
- L 0 0.053333 8.267715 1.430026 10.104985 -1.430026
- L 0 0.053333 8.267715 -1.430026 10.104985 1.430026
- L 0 0.053333 10.104985 -1.430026 10.104985 1.430026
- END
-TURNOUT N "Tomix Fine Track Plate Grider Bridge 5.51 140mm 3029"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- L 0 0.053333 0.000000 0.701680 5.511811 0.701680
- L 0 0.053333 0.000000 0.364173 0.000000 0.701680
- L 0 0.053333 1.102362 0.364173 1.102362 0.701680
- L 0 0.053333 2.204724 0.364173 2.204724 0.701680
- L 0 0.053333 3.307086 0.364173 3.307086 0.701680
- L 0 0.053333 4.409448 0.364173 4.409448 0.701680
- L 0 0.053333 5.511811 0.364173 5.511811 0.701680
- L 0 0.053333 0.000000 -0.701680 5.511811 -0.701680
- L 0 0.053333 0.000000 -0.364173 0.000000 -0.701680
- L 0 0.053333 1.102362 -0.364173 1.102362 -0.701680
- L 0 0.053333 2.204724 -0.364173 2.204724 -0.701680
- L 0 0.053333 3.307086 -0.364173 3.307086 -0.701680
- L 0 0.053333 4.409448 -0.364173 4.409448 -0.701680
- L 0 0.053333 5.511811 -0.364173 5.511811 -0.701680
- END
-TURNOUT N "Tomix Fine Track Deck Grider Bridge 5.51 140mm 3028"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- F 11579568 0.000000 4
- 0.000000 0.364173 0
- 0.300000 0.364173 0
- 0.300000 0.701680 0
- 0.000000 0.701680 0
- F 11579568 0.000000 4
- 5.211811 0.364173 0
- 5.511811 0.364173 0
- 5.511811 0.701680 0
- 5.211811 0.701680 0
- END
-TURNOUT N "Tomix Fine Track Deck Grider Bridge(DK Green) 5.51 140mm 3241"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- S 0 0 0.000000 0.000000 5.511811 0.000000
- F 11579568 0.000000 4
- 0.000000 0.364173 0
- 0.300000 0.364173 0
- 0.300000 0.701680 0
- 0.000000 0.701680 0
- F 11579568 0.000000 4
- 5.211811 0.364173 0
- 5.511811 0.364173 0
- 5.511811 0.701680 0
- 5.211811 0.701680 0
- END
-
-SUBCONTENTS Tomix N-Scale Fine Track - Turn Table
-TURNOUT N "Tomix Fine Track Turn Table 8.34 212mm 1631" 512
-# TT was designed with 212mm bridge, outside dia. is approx., 15 degree spacing
- P "1" 1 2 3
- P "2" 4 5 6
- P "3" 7 8 9
- P "4" 10 11 12
- P "5" 13 14 15
- P "6" 16 17 18
- P "7" 19 20 21
- P "8" 22 23 24
- P "9" 25 26 27
- P "10" 28 29 30
- P "11" 31 32 33
- P "12" 34 35 36
- E 0.000000 4.173228 0.000000
- E 1.080111 4.031029 15.000000
- E 2.086614 3.614121 30.000000
- E 2.950918 2.950918 45.000000
- E 3.614121 2.086614 60.000000
- E 4.031029 1.080111 75.000000
- E 4.173228 0.000000 90.000000
- E 4.031029 -1.080111 105.000000
- E 3.614121 -2.086614 120.000000
- E 2.950918 -2.950918 135.000000
- E 2.086614 -3.614121 150.000000
- E 1.080111 -4.031029 165.000000
- E 0.000000 -4.173228 180.000000
- E -1.080111 -4.031029 195.000000
- E -2.086614 -3.614121 210.000000
- E -2.950918 -2.950918 225.000000
- E -3.614121 -2.086614 240.000000
- E -4.031029 -1.080111 255.000000
- E -4.173228 0.000000 270.000000
- E -4.031029 1.080111 285.000000
- E -3.614121 2.086614 300.000000
- E -2.950918 2.950918 315.000000
- E -2.086614 3.614121 330.000000
- E -1.080111 4.031029 345.000000
-#0/360
- S 0 0 0.000000 4.173228 0.000000 3.676228
- S 16777215 0 0.000000 3.676228 0.000000 -3.676228
- S 0 0 0.000000 -3.676228 0.000000 -4.173228
-#15/195
- S 0 0 1.080111 4.031029 0.950701 3.548066
- S 16777215 0 0.950701 3.548066 -0.950701 -3.548066
- S 0 0 -0.950701 -3.548066 -1.080111 -4.031029
-#30/210
- S 0 0 2.086614 3.614121 1.836614 3.181109
- S 16777215 0 1.836614 3.181109 -1.836614 -3.181109
- S 0 0 -1.836614 -3.181109 -2.086614 -3.614121
-#45/225
- S 0 0 2.950918 2.950918 2.597364 2.597364
- S 16777215 0 2.597364 2.597364 -2.597364 -2.597364
- S 0 0 -2.597364 -2.597364 -2.950918 -2.950918
-#60/240
- S 0 0 3.614121 2.086614 3.181109 1.836614
- S 16777215 0 3.181109 1.836614 -3.181109 -1.836614
- S 0 0 -3.181109 -1.836614 -3.614121 -2.086614
-#75/255
- S 0 0 4.031029 1.080111 3.548066 0.950701
- S 16777215 0 3.548066 0.950701 -3.548066 -0.950701
- S 0 0 -3.548066 -0.950701 -4.031029 -1.080111
-#90/270
- S 0 0 4.173228 0.000000 3.676228 0.000000
- S 16777215 0 3.676228 0.000000 -3.676228 0.000000
- S 0 0 -3.676228 0.000000 -4.173228 0.000000
-#105/285
- S 0 0 4.031029 -1.080111 3.548066 -0.950701
- S 16777215 0 3.548066 -0.950701 -3.548066 0.950701
- S 0 0 -3.548066 0.950701 -4.031029 1.080111
-#120/300
- S 0 0 3.614121 -2.086614 3.181109 -1.836614
- S 16777215 0 3.181109 -1.836614 -3.181109 1.836614
- S 0 0 -3.181109 1.836614 -3.614121 2.086614
-#135/315
- S 0 0 2.950918 -2.950918 2.597364 -2.597364
- S 16777215 0 2.597364 -2.597364 -2.597364 2.597364
- S 0 0 -2.597364 2.597364 -2.950918 2.950918
-#150/330
- S 0 0 2.086614 -3.614121 1.836614 -3.181109
- S 16777215 0 1.836614 -3.181109 -1.836614 3.181109
- S 0 0 -1.836614 3.181109 -2.086614 3.614121
-#165/345
- S 0 0 1.080111 -4.031029 0.950701 -3.548066
- S 16777215 0 0.950701 -3.548066 -0.950701 3.548066
- S 0 0 -0.950701 3.548066 -1.080111 4.031029
-
- A 11579568 0.053333 4.173228 0.000000 0.000000 0.000000 360.000000
- A 11579568 0.053333 3.673228 0.000000 0.000000 0.000000 360.000000
- END
-
-SUBCONTENTS Tomix N-Scale Fine Track - Signal Track
-TURNOUT N "Tomix Fine Track 70mm 5 color 5560"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.755906 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.755906 0.000000
- L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
- L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
- F 11579568 0.000000 4
- 1.002953 0.364173 0
- 1.752953 0.364173 0
- 1.752953 0.864173 0
- 1.002953 0.864173 0
- END
-TURNOUT N "Tomix Fine Track 70mm 4 color(Yel/Grn) 5561"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.755906 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.755906 0.000000
- L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
- L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
- F 11579568 0.000000 4
- 1.002953 0.364173 0
- 1.752953 0.364173 0
- 1.752953 0.864173 0
- 1.002953 0.864173 0
- END
-TURNOUT N "Tomix Fine Track 70mm 4 color(Yel/Yel) 5562"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.755906 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.755906 0.000000
- L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
- L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
- F 11579568 0.000000 4
- 1.002953 0.364173 0
- 1.752953 0.364173 0
- 1.752953 0.864173 0
- 1.002953 0.864173 0
- END
-TURNOUT N "Tomix Fine Track 70mm 3 color 5564"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.755906 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.755906 0.000000
- L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
- L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
- F 11579568 0.000000 4
- 1.002953 0.364173 0
- 1.752953 0.364173 0
- 1.752953 0.864173 0
- 1.002953 0.864173 0
- END
-TURNOUT N "Tomix Fine Track 70mm 2 color 5565"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.755906 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.755906 0.000000
- L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
- L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
- F 11579568 0.000000 4
- 1.002953 0.364173 0
- 1.752953 0.364173 0
- 1.752953 0.864173 0
- 1.002953 0.864173 0
- END
-
-SUBCONTENTS Tomix N-Scale Fine Track - Misc Track
-TURNOUT N "Tomix Fine Track Re-Railer 140mm 1523"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 5.511811 0.000000
- L 11579568 0.053333 0.000000 0.364173 5.511811 0.364173
- L 11579568 0.053333 0.000000 -0.364173 5.511811 -0.364173
- L 0 0.053333 1.837270 0.364173 3.674541 0.364173
- L 0 0.053333 3.674541 0.364173 3.674541 -0.364173
- L 0 0.053333 3.674541 -0.364173 1.837270 -0.364173
- L 0 0.053333 1.837270 -0.364173 1.837270 0.364173
- END
-TURNOUT N "Tomix Fine Track PC Re-Railer 140mm 1524"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 5.511811 0.000000
- L 11579568 0.053333 0.000000 0.364173 5.511811 0.364173
- L 11579568 0.053333 0.000000 -0.364173 5.511811 -0.364173
- L 0 0.053333 1.837270 0.364173 3.674541 0.364173
- L 0 0.053333 3.674541 0.364173 3.674541 -0.364173
- L 0 0.053333 3.674541 -0.364173 1.837270 -0.364173
- L 0 0.053333 1.837270 -0.364173 1.837270 0.364173
- END
-TURNOUT N "Tomix Fine Track Mag Uncoupler 70mm 1521"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.755906 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 2.755906 0.000000
- L 11579568 0.053333 0.000000 0.3641730 2.755906 0.3641730
- L 11579568 0.053333 0.000000 -0.3641730 2.755906 -0.3641730
- L 0 0.053333 0.253333 0.133560 2.280000 0.133560
- L 0 0.053333 2.280000 0.133560 2.280000 -0.146440
- L 0 0.053333 2.280000 -0.146440 0.253333 -0.146440
- L 0 0.053333 0.253333 -0.146440 0.253333 0.133560
- END
-TURNOUT N "Tomix Fine Track W/Insul. Gap 70mm 1671"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.755906 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 2.755906 0.000000
- L 11579568 0.053333 0.000000 0.3641730 2.755906 0.3641730
- L 11579568 0.053333 0.000000 -0.3641730 2.755906 -0.3641730
- END
-TURNOUT N "Tomix Fine Track Adjustable 70-90mm 1522"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.755906 0.000000 90.000000
- X adjustable 2.755906 3.543307
- S 0 0 0.000000 0.000000 2.755906 0.000000
- L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
- L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
- END
-TURNOUT N "Tomix Fine Track PC Adjustable 70-90mm 1526"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.755906 0.000000 90.000000
- X adjustable 2.755906 3.543307
- S 0 0 0.000000 0.000000 2.755906 0.000000
- L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
- L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
- END
-TURNOUT N "Tomix Fine Track Wheel Cleaner Rail 140mm 6414"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 5.511811 0.000000
- L 11579568 0.053333 0.000000 0.364173 5.511811 0.364173
- L 11579568 0.053333 0.000000 -0.364173 5.511811 -0.364173
- F 11579568 0.000000 4
- 1.456693 0.364173 0
- 4.055118 0.364173 0
- 4.055118 1.092519 0
- 1.456693 1.092519 0
- END
-TURNOUT N "Tomix Fine Track PC Wheel Cleaner Rail 140mm 6415"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.511811 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 5.511811 0.000000
- L 11579568 0.053333 0.000000 0.364173 5.511811 0.364173
- L 11579568 0.053333 0.000000 -0.364173 5.511811 -0.364173
- F 11579568 0.000000 4
- 1.456693 0.364173 0
- 4.055118 0.364173 0
- 4.055118 1.092519 0
- 1.456693 1.092519 0
- END
-
-SUBCONTENTS Tomix N-Scale Fine Track - Wide Tram
-TURNOUT N "Tomix Fine Track Wide Tram Straight 18.5mm S18.5-WT/1798"
-P "Normal" 1
-E 0.000000 0.000000 270.000000
-E 0.728346 0.000000 90.000000
-S 0 0.000000 0.000000 0.000000 0.728346 0.000000
-L 0 0.039370 0.000000 -0.728346 0.728346 -0.728346
-L 0 0.039370 0.000000 0.728346 0.728346 0.728346
-END
-TURNOUT N "Tomix Fine Track Wide Tram Straight 37mm S37-WT/1798"
-P "Normal" 1
-E 0.000000 0.000000 270.000000
-E 1.456693 0.000000 90.000000
-S 0 0.000000 0.000000 0.000000 1.456693 0.000000
-L 0 0.039370 0.000000 -0.728346 1.456693 -0.728346
-L 0 0.039370 0.000000 0.728346 1.456693 0.728346
-END
-TURNOUT N "Tomix Fine Track Wide Tram Straight(Sensor) 37mm S37-WT-SE/5568"
-P "Normal" 1
-E 0.000000 0.000000 270.000000
-E 1.456693 0.000000 90.000000
-S 0 0.000000 0.000000 0.000000 1.456693 0.000000
-L 0 0.039370 0.000000 -0.728346 1.456693 -0.728346
-L 0 0.039370 0.000000 0.728346 1.456693 0.728346
-END
-TURNOUT N "Tomix Fine Track Wide Tram Straight 47.5mm S47.5-WT/1798"
-P "Normal" 1
-E 0.000000 0.000000 270.000000
-E 1.870079 0.000000 90.000000
-S 0 0.000000 0.000000 0.000000 1.870079 0.000000
-L 0 0.039370 0.000000 -0.728346 1.870077 -0.728346
-L 0 0.039370 0.000000 0.728346 1.870079 0.728346
-END
-TURNOUT N "Tomix Fine Track Wide Tram Straight 70mm S70-WT/1792/1790"
-P "Normal" 1
-E 0.000000 0.000000 270.000000
-E 2.755906 0.000000 90.000000
-S 0 0.000000 0.000000 0.000000 2.755906 0.000000
-L 0 0.039370 0.000000 -0.728346 2.755904 -0.728346
-L 0 0.039370 0.000000 0.728346 2.755906 0.728346
-END
-TURNOUT N "Tomix Fine Track Wide Tram Straight 140mm S140-WT/1793/1791"
-P "Normal" 1
-E 0.000000 0.000000 270.000000
-E 5.511811 0.000000 90.000000
-S 0 0.000000 0.000000 0.000000 5.511811 0.000000
-L 0 0.039370 0.000000 -0.728346 5.511809 -0.728346
-L 0 0.039370 0.000000 0.728346 5.511811 0.728346
-END
-TURNOUT N "Tomix Fine Track Wide Tram 30d Curve 103mm C103-30-WT/1795"
-P "Normal" 1
-E 0.000000 0.000000 270.000000
-E 2.027558 0.543282 60.000000
-C 0 0.000000 4.055118 0.000000 4.055118 150.000000 30.000000
-A3 0 0.039370 4.783465 0.000000 4.055118 0 150.000000 30.000000
-A3 0 0.039370 3.326772 0.000000 4.055118 0 150.000000 30.000000
-END
-TURNOUT N "Tomix Fine Track Wide Tram 60d Curve 103mm C103-60-WT/1795"
-P "Normal" 1
-E 0.000000 0.000000 270.000000
-E 3.511834 2.027556 30.000000
-C 0 0.000000 4.055118 0.000000 4.055118 120.000000 60.000000
-A3 0 0.039370 4.783465 0.000000 4.055118 0 120.000000 60.000000
-A3 0 0.039370 3.326772 0.000000 4.055118 0 120.000000 60.000000
-END
-TURNOUT N "Tomix Fine Track Wide Tram 30d Curve 140mm C140-30-WT/1796"
-P "Normal" 1
-E 0.000000 0.000000 270.000000
-E 2.755903 0.738441 60.000000
-C 0 0.000000 5.511811 0.000000 5.511811 150.000000 30.000000
-A3 0 0.039370 6.240157 0.000000 5.511811 0 150.000000 30.000000
-A3 0 0.039370 4.783465 0.000000 5.511811 0 150.000000 30.000000
-END
-TURNOUT N "Tomix Fine Track Wide Tram 60d Curve 140mm C140-60-WT/1796"
-P "Normal" 1
-E 0.000000 0.000000 270.000000
-E 4.773366 2.755901 30.000000
-C 0 0.000000 5.511811 0.000000 5.511811 120.000000 60.000000
-A3 0 0.039370 6.240157 0.000000 5.511811 0 120.000000 60.000000
-A3 0 0.039370 4.783465 0.000000 5.511811 0 120.000000 60.000000
-END
-TURNOUT N "Tomix Fine Track Wide Tram 30d Curve 177mm C177-30-WT/1799"
-P "Normal" 1
-E 0.000000 0.000000 270.000000
-E 3.484249 0.933601 60.000000
-C 0 0.000000 6.968504 0.000000 6.968504 150.000000 30.000000
-A3 0 0.039370 7.696850 0.000000 6.968504 0 150.000000 30.000000
-A3 0 0.039370 6.240157 0.000000 6.968504 0 150.000000 30.000000
-END
-TURNOUT N "Tomix Fine Track Wide Tram 60d Curve 177mm C177-60-WT/1799"
-P "Normal" 1
-E 0.000000 0.000000 270.000000
-E 6.034898 3.484247 30.000000
-C 0 0.000000 6.968504 0.000000 6.968504 120.000000 60.000000
-A3 0 0.039370 7.696850 0.000000 6.968504 0 120.000000 60.000000
-A3 0 0.039370 6.240157 0.000000 6.968504 0 120.000000 60.000000
-END
-TURNOUT N "Tomix Fine Track Wide Tram 90d Crossing 37mm X37-90-WT/1799"
-P "Normal" 1 0 2
-E 0.000000 0.000000 270.000000
-E 1.456693 0.000000 90.000000
-E 0.728346 0.728346 360.000000
-E 0.728346 -0.728346 180.000000
-S 0 0.000000 0.000000 0.000000 1.456693 0.000000
-S 0 0.000000 0.728346 0.728346 0.728346 -0.728346
-END
+CONTENTS Tomix N-Scale Fine Track
+SUBCONTENTS Tomix N-Scale Fine Track - Straight Track
+TURNOUT N "Tomix Fine Track Straight 5.51 140mm 1021"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ L 11579568 0.040000 0.000000 0.364173 5.511811 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 5.511811 -0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track Straight 5.51 140mm (slab type) 1046/1047"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ L 11579568 0.040000 0.000000 0.364173 5.511811 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 5.511811 -0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track Straight 11.02 280mm 1022"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.023622 0.000000 90.000000
+ S 0 0 0.000000 0.000000 11.023622 0.000000
+ L 11579568 0.040000 0.000000 0.364173 11.023622 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 11.023622 -0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track Straight 2.85 72.5mm 1023"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.854331 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.854331 0.000000
+ L 11579568 0.040000 0.000000 0.364173 2.854331 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 2.854331 -0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track Straight 2.75 70mm 1024"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.755906 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.755906 0.000000
+ L 11579568 0.040000 0.000000 0.364173 2.755906 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 2.755906 -0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track Straight 3.89 99mm 1025"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.897638 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.897638 0.000000
+ L 11579568 0.040000 0.000000 0.364173 3.897638 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 3.897638 -0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track Straight 6.24 158.5mm 1026"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.240157 0.000000 90.000000
+ S 0 0 0.000000 0.000000 6.240157 0.000000
+ L 11579568 0.040000 0.000000 0.364173 6.240157 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 6.240157 -0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track Straight 0.72 18.5mm 1099A"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.725346 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.725346 0.000000
+ L 11579568 0.040000 0.000000 0.364173 0.725346 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 0.725346 -0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track Straight 1.29 33mm 1099B"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.299213 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.299213 0.000000
+ L 11579568 0.040000 0.000000 0.364173 1.299213 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 1.299213 -0.364173
+ END$SEGS
+
+SUBCONTENTS Tomix N-Scale Fine Track - Straight PC Track
+TURNOUT N "Tomix Fine Track PC Straight 2.75 70mm 1014"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.755906 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.755906 0.000000
+ L 11579568 0.040000 0.000000 0.364173 2.755906 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 2.755906 -0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track PC Straight 2.85 72.5mm 1013"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.854331 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.854331 0.000000
+ L 11579568 0.040000 0.000000 0.364173 2.854331 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 2.854331 -0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track PC Straight 3.89 99mm 1015"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.897638 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.897638 0.000000
+ L 11579568 0.040000 0.000000 0.364173 3.897638 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 3.897638 -0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track PC Straight 5.51 140mm 1011"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ L 11579568 0.040000 0.000000 0.364173 5.511811 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 5.511811 -0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track PC Straight 6.24 158.5mm 1016"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.240157 0.000000 90.000000
+ S 0 0 0.000000 0.000000 6.240157 0.000000
+ L 11579568 0.040000 0.000000 0.364173 6.240157 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 6.240157 -0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track PC Straight 11.02 280mm 1012/1093"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.023622 0.000000 90.000000
+ S 0 0 0.000000 0.000000 11.023622 0.000000
+ L 11579568 0.040000 0.000000 0.364173 11.023622 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 11.023622 -0.364173
+ END$SEGS
+
+SUBCONTENTS Tomix N-Scale Fine Track - Widetrack PC Straight Track
+TURNOUT N "Tomix Fine Track Widetrack PC Straight 5.51 140mm 1731/1761"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ L 11579568 0.040000 0.000000 0.728346 5.511811 0.728346
+ L 11579568 0.040000 0.000000 -0.728346 5.511811 -0.728346
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Straight(branch) 5.51 140mm 1739/1769"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ L 11579568 0.040000 0.000000 0.728346 5.511811 0.728346
+ L 11579568 0.040000 0.000000 -0.728346 5.511811 -0.728346
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Straight 11.02 280mm 1730/1732/1762"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.023622 0.000000 90.000000
+ S 0 0 0.000000 0.000000 11.023622 0.000000
+ L 11579568 0.040000 0.000000 0.728346 11.023622 0.728346
+ L 11579568 0.040000 0.000000 -0.728346 11.023622 -0.728346
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Straight 2.85 72.5mm 1733/1763"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.854331 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.854331 0.000000
+ L 11579568 0.040000 0.000000 0.728346 2.854331 0.728346
+ L 11579568 0.040000 0.000000 -0.728346 2.854331 -0.728346
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Straight 2.75 70mm 1734/1764"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.755906 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.755906 0.000000
+ L 11579568 0.040000 0.000000 0.728346 2.755906 0.728346
+ L 11579568 0.040000 0.000000 -0.728346 2.755906 -0.728346
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Straight 3.89 99mm 1735"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.897638 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.897638 0.000000
+ L 11579568 0.040000 0.000000 0.728346 3.897638 0.728346
+ L 11579568 0.040000 0.000000 -0.728346 3.897638 -0.728346
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Straight 6.24 158.5mm 1736"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.240157 0.000000 90.000000
+ S 0 0 0.000000 0.000000 6.240157 0.000000
+ L 11579568 0.040000 0.000000 0.728346 6.240157 0.728346
+ L 11579568 0.040000 0.000000 -0.728346 6.240157 -0.728346
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Straight 0.72 18.5mm 1738A"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.725346 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.725346 0.000000
+ L 11579568 0.040000 0.000000 0.728346 0.725346 0.728346
+ L 11579568 0.040000 0.000000 -0.728346 0.725346 -0.728346
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Straight 1.29 33mm 1738B"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.299213 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.299213 0.000000
+ L 11579568 0.040000 0.000000 0.728346 1.299213 0.728346
+ L 11579568 0.040000 0.000000 -0.728346 1.299213 -0.728346
+ END$SEGS
+
+SUBCONTENTS Tomix N-Scale Fine Track - Buffers
+TURNOUT N "Tomix Fine Track Buffer Trk 111mm 1421"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 2.854331 0.000000
+ L 11579568 0.040000 0.000000 0.364173 4.370079 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 4.370079 -0.364173
+ L 11579568 0.040000 4.370079 0.364173 4.370079 -0.364173
+ L 0 0.106666 3.000000 0.000000 3.100000 0.000000
+ L 0 0.040000 2.750000 0.190000 4.370079 0.190000
+ L 0 0.040000 2.750000 -0.190000 4.370079 -0.190000
+ L 0 0.040000 2.750000 0.190000 3.100000 0.000000
+ L 0 0.040000 2.750000 -0.190000 3.100000 0.000000
+ L 0 0.040000 3.100000 0.000000 4.370079 0.190000
+ L 0 0.040000 3.100000 0.000000 4.370079 -0.190000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Buffer Trk(LED) 80mm 1422"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 1.574803 0.000000
+ L 11579568 0.040000 0.000000 0.364173 3.149606 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 3.149606 -0.364173
+ L 11579568 0.040000 1.574803 0.364173 1.574803 -0.364173
+ L 11579568 0.040000 3.149606 0.364173 3.149606 -0.364173
+ F 11579568 0.000000 4
+ 2.456693 -0.190000 0
+ 3.055118 -0.190000 0
+ 3.055118 0.190000 0
+ 2.456693 0.190000 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track Buffer Trk(LED2) 49mm 1423"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 1.299213 0.000000
+ L 11579568 0.040000 0.000000 0.364173 1.929134 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 1.929134 -0.364173
+ L 11579568 0.040000 1.299213 0.364173 1.299213 -0.364173
+ L 11579568 0.040000 1.929134 0.364173 1.929134 -0.364173
+ L 11579568 0.040000 0.852441 0.000000 1.629134 0.000000
+ F 11579568 0.000000 4
+ 0.472441 -0.190000 0
+ 0.852441 -0.190000 0
+ 0.852441 0.190000 0
+ 0.472441 0.190000 0
+ F 11579568 0.000000 4
+ 1.529134 -0.100000 0
+ 1.729134 -0.100000 0
+ 1.729134 0.100000 0
+ 1.529134 0.100000 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track PC Buffer Trk(LED) 80mm 1427"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 1.574803 0.000000
+ L 11579568 0.040000 0.000000 0.364173 3.149606 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 3.149606 -0.364173
+ L 11579568 0.040000 1.574803 0.364173 1.574803 -0.364173
+ L 11579568 0.040000 3.149606 0.364173 3.149606 -0.364173
+ F 11579568 0.000000 4
+ 2.456693 -0.190000 0
+ 3.055118 -0.190000 0
+ 3.055118 0.190000 0
+ 2.456693 0.190000 0
+ END$SEGS
+
+
+SUBCONTENTS Tomix N-Scale Fine Track - Curved Track
+TURNOUT N "Tomix Fine Track Mini Curve 4.05R 103mm 30d 1111A"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.027559 -0.543345 120.000000
+ C 0 0 4.055118 0.000000 -4.055118 0.000000 30.000000
+ A 11579568 0.040000 3.690945 0.000000 -4.055118 0.000000 30.000000
+ A 11579568 0.040000 4.419291 0.000000 -4.055118 0.000000 30.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Mini Curve 4.05R 103mm 60d 1111B"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.511835 -2.027559 150.000000
+ C 0 0 4.055118 0.000000 -4.055118 0.000000 60.000000
+ A 11579568 0.040000 3.690945 0.000000 -4.055118 0.000000 60.000000
+ A 11579568 0.040000 4.419291 0.000000 -4.055118 0.000000 60.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Mini Curve 5.51R 140mm 30d 1112A"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.755906 -0.738443 120.000000
+ C 0 0 5.511811 0.000000 -5.511811 0.000000 30.000000
+ A 11579568 0.040000 5.147638 0.000000 -5.511811 0.000000 30.000000
+ A 11579568 0.040000 5.875984 0.000000 -5.511811 0.000000 30.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Mini Curve 5.51R 140mm 60d 1112B"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.773368 -2.755905 150.000000
+ C 0 0 5.511811 0.000000 -5.511811 0.000000 60.000000
+ A 11579568 0.040000 5.147638 0.000000 -5.511811 0.000000 60.000000
+ A 11579568 0.040000 5.875984 0.000000 -5.511811 0.000000 60.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Mini Curve 6.96R 177mm 30d 1113A"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.484252 -0.933603 120.000000
+ C 0 0 6.968504 0.000000 -6.968504 0.000000 30.000000
+ A 11579568 0.040000 6.604331 0.000000 -6.968504 0.000000 30.000000
+ A 11579568 0.040000 7.332677 0.000000 -6.968504 0.000000 30.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Mini Curve 6.96R 177mm 60d 1113B"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.034901 -3.484252 150.000000
+ C 0 0 6.968504 0.000000 -6.968504 0.000000 60.000000
+ A 11579568 0.040000 6.604331 0.000000 -6.968504 0.000000 60.000000
+ A 11579568 0.040000 7.332677 0.000000 -6.968504 0.000000 60.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Curve 9.56R 243mm 15d 1143"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.476103 -0.325985 105.000000
+ C 0 0 9.566929 0.000000 -9.566929 0.000000 15.000000
+ A 11579568 0.040000 9.202756 0.000000 -9.566929 0.000000 15.000000
+ A 11579568 0.040000 9.931102 0.000000 -9.566929 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Curve 9.56R 243mm 45d 1125"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.764840 -2.802089 135.000000
+ C 0 0 9.566929 0.000000 -9.566929 0.000000 45.000000
+ A 11579568 0.040000 9.202756 0.000000 -9.566929 0.000000 45.000000
+ A 11579568 0.040000 9.931102 0.000000 -9.566929 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Curve 11.02R 280mm 15d 1124"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.853123 -0.375621 105.000000
+ C 0 0 11.023622 0.000000 -11.023622 0.000000 15.000000
+ A 11579568 0.040000 10.659449 0.000000 -11.023622 0.000000 15.000000
+ A 11579568 0.040000 11.387796 0.000000 -11.023622 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Curve 11.02R 280mm 45d 1121"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.794878 -3.228744 135.000000
+ C 0 0 11.023622 0.000000 -11.023622 0.000000 45.000000
+ A 11579568 0.040000 10.659449 0.000000 -11.023622 0.000000 45.000000
+ A 11579568 0.040000 11.387796 0.000000 -11.023622 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Curve 12.48R 317mm 15d 1127"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.230143 -0.425256 105.000000
+ C 0 0 12.480315 0.000000 -12.480315 0.000000 15.000000
+ A 11579568 0.040000 12.116143 0.000000 -12.480315 0.000000 15.000000
+ A 11579568 0.040000 12.844488 0.000000 -12.480315 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Curve 12.48R 317mm 45d 1122"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.824915 -3.655400 135.000000
+ C 0 0 12.480315 0.000000 -12.480315 0.000000 45.000000
+ A 11579568 0.040000 12.116143 0.000000 -12.480315 0.000000 45.000000
+ A 11579568 0.040000 12.844488 0.000000 -12.480315 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Curve 13.93R 354mm 15d 1144"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.607163 -0.474892 105.000000
+ C 0 0 13.937008 0.000000 -13.937008 0.000000 15.000000
+ A 11579568 0.040000 13.572835 0.000000 -13.937008 0.000000 15.000000
+ A 11579568 0.040000 14.301181 0.000000 -13.937008 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Curve 13.93R 354mm 45d 1126"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.854953 -4.082055 135.000000
+ C 0 0 13.937008 0.000000 -13.937008 0.000000 45.000000
+ A 11579568 0.040000 13.572835 0.000000 -13.937008 0.000000 45.000000
+ A 11579568 0.040000 14.301181 0.000000 -13.937008 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Curve 15.39R 391mm 15d 1145"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.984183 -0.524528 105.000000
+ C 0 0 15.393701 0.000000 -15.393701 0.000000 15.000000
+ A 11579568 0.040000 15.029528 0.000000 -15.393701 0.000000 15.000000
+ A 11579568 0.040000 15.757874 0.000000 -15.393701 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Curve 15.39R 391mm 45d 1128"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.884990 -4.508711 135.000000
+ C 0 0 15.393701 0.000000 -15.393701 0.000000 45.000000
+ A 11579568 0.040000 15.029528 0.000000 -15.393701 0.000000 45.000000
+ A 11579568 0.040000 15.757874 0.000000 -15.393701 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Curve 21.29R 541mm 15d 1123"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.512642 -0.725753 105.000000
+ C 0 0 21.299213 0.000000 -21.299213 0.000000 15.000000
+ A 11579568 0.040000 20.935040 0.000000 -21.299213 0.000000 15.000000
+ A 11579568 0.040000 21.663386 0.000000 -21.299213 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Curve 23.82R 605mm 10d 1150"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.136108 -0.361863 100.000000
+ C 0 0 23.818898 0.000000 -23.818898 0.000000 10.000000
+ A 11579568 0.040000 23.454725 0.000000 -23.818898 0.000000 10.000000
+ A 11579568 0.040000 24.183071 0.000000 -23.818898 0.000000 10.000000
+ END$SEGS
+
+SUBCONTENTS Tomix N-Scale Fine Track - Curved PC Track
+TURNOUT N "Tomix Fine Track PC Curve 11.02R 280mm 15d 1194"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.853123 -0.375621 105.000000
+ C 0 0 11.023622 0.000000 -11.023622 0.000000 15.000000
+ A 11579568 0.040000 10.659449 0.000000 -11.023622 0.000000 15.000000
+ A 11579568 0.040000 11.387796 0.000000 -11.023622 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track PC Curve 11.02R 280mm 45d 1191"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.794878 -3.228744 135.000000
+ C 0 0 11.023622 0.000000 -11.023622 0.000000 45.000000
+ A 11579568 0.040000 10.659449 0.000000 -11.023622 0.000000 45.000000
+ A 11579568 0.040000 11.387796 0.000000 -11.023622 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track PC Curve 9.56R 243mm 45d 1195"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.764840 -2.802089 135.000000
+ C 0 0 9.566929 0.000000 -9.566929 0.000000 45.000000
+ A 11579568 0.040000 9.202756 0.000000 -9.566929 0.000000 45.000000
+ A 11579568 0.040000 9.931102 0.000000 -9.566929 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track PC Curve 12.48R 317mm 45d 1192"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.824915 -3.655400 135.000000
+ C 0 0 12.480315 0.000000 -12.480315 0.000000 45.000000
+ A 11579568 0.040000 12.116143 0.000000 -12.480315 0.000000 45.000000
+ A 11579568 0.040000 12.844488 0.000000 -12.480315 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track PC Curve 13.93R 354mm 45d 1196"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.854953 -4.082055 135.000000
+ C 0 0 13.937008 0.000000 -13.937008 0.000000 45.000000
+ A 11579568 0.040000 13.572835 0.000000 -13.937008 0.000000 45.000000
+ A 11579568 0.040000 14.301181 0.000000 -13.937008 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track PC Curve 15.39R 391mm 45d 1198"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.884990 -4.508711 135.000000
+ C 0 0 15.393701 0.000000 -15.393701 0.000000 45.000000
+ A 11579568 0.040000 15.029528 0.000000 -15.393701 0.000000 45.000000
+ A 11579568 0.040000 15.757874 0.000000 -15.393701 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track PC Curve 21.29R 541mm 15d 1193"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.512642 -0.725753 105.000000
+ C 0 0 21.299213 0.000000 -21.299213 0.000000 15.000000
+ A 11579568 0.040000 20.935040 0.000000 -21.299213 0.000000 15.000000
+ A 11579568 0.040000 21.663386 0.000000 -21.299213 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track PC Curve 23.82R 605mm 10d 1190"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.136108 -0.361863 100.000000
+ C 0 0 23.818898 0.000000 -23.818898 0.000000 10.000000
+ A 11579568 0.040000 23.454725 0.000000 -23.818898 0.000000 10.000000
+ A 11579568 0.040000 24.183071 0.000000 -23.818898 0.000000 10.000000
+ END$SEGS
+
+SUBCONTENTS Tomix N-Scale Fine Track - Widetrack PC Curved Track
+TURNOUT N "Tomix Fine Track Widetrack PC Curve 11.02R 280mm 22.5d 1751/1781"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.218558 -0.839123 112.500000
+ C 0 0 11.023622 0.000000 -11.023622 0.000000 22.500000
+ A 11579568 0.040000 10.295276 0.000000 -11.023622 0.000000 22.500000
+ A 11579568 0.040000 11.751968 0.000000 -11.023622 0.000000 22.500000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Curve 11.02R 280mm 45d 1741/1771"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.794878 -3.228744 135.000000
+ C 0 0 11.023622 0.000000 -11.023622 0.000000 45.000000
+ A 11579568 0.040000 10.295276 0.000000 -11.023622 0.000000 45.000000
+ A 11579568 0.040000 11.751968 0.000000 -11.023622 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Curve 12.48R 317mm 22.5d 1752/1782"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.776010 -0.950007 112.500000
+ C 0 0 12.480315 0.000000 -12.480315 0.000000 22.500000
+ A 11579568 0.040000 11.751968 0.000000 -12.480315 0.000000 22.500000
+ A 11579568 0.040000 13.208661 0.000000 -12.480315 0.000000 22.500000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Curve 12.48R 317mm 45d 1742/1772"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.824915 -3.655400 135.000000
+ C 0 0 12.480315 0.000000 -12.480315 0.000000 45.000000
+ A 11579568 0.040000 11.751968 0.000000 -12.480315 0.000000 45.000000
+ A 11579568 0.040000 13.208661 0.000000 -12.480315 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Curve 13.93R 354mm 22.5d 1753/1783"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.333462 -1.060892 112.500000
+ C 0 0 13.937008 0.000000 -13.937008 0.000000 22.500000
+ A 11579568 0.040000 13.208661 0.000000 -13.937008 0.000000 22.500000
+ A 11579568 0.040000 14.665354 0.000000 -13.937008 0.000000 22.500000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Curve 13.93R 354mm 45d 1743/1773"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.854953 -4.082055 135.000000
+ C 0 0 13.937008 0.000000 -13.937008 0.000000 45.000000
+ A 11579568 0.040000 13.208661 0.000000 -13.937008 0.000000 45.000000
+ A 11579568 0.040000 14.665354 0.000000 -13.937008 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Curve 15.39R 391mm 22.5d 1754/1784"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.890914 -1.171776 112.500000
+ C 0 0 15.393701 0.000000 -15.393701 0.000000 22.500000
+ A 11579568 0.040000 14.665354 0.000000 -15.393701 0.000000 22.500000
+ A 11579568 0.040000 16.122047 0.000000 -15.393701 0.000000 22.500000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Curve 15.39R 391mm 45d 1744/1774"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.884990 -4.508711 135.000000
+ C 0 0 15.393701 0.000000 -15.393701 0.000000 45.000000
+ A 11579568 0.040000 14.665354 0.000000 -15.393701 0.000000 45.000000
+ A 11579568 0.040000 16.122047 0.000000 -15.393701 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Curve 21.29R 541mm 15d 1740/1770"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.512642 -0.725753 105.000000
+ C 0 0 21.299213 0.000000 -21.299213 0.000000 15.000000
+ A 11579568 0.040000 20.570867 0.000000 -21.299213 0.000000 15.000000
+ A 11579568 0.040000 22.027559 0.000000 -21.299213 0.000000 15.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Widetrack PC Curve 23.82R 605mm 10d 1750"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.136108 -0.361863 100.000000
+ C 0 0 23.818898 0.000000 -23.818898 0.000000 10.000000
+ A 11579568 0.040000 23.090552 0.000000 -23.818898 0.000000 10.000000
+ A 11579568 0.040000 24.547244 0.000000 -23.818898 0.000000 10.000000
+ END$SEGS
+
+SUBCONTENTS Tomix N-Scale Fine Track - Viaduct Track
+TURNOUT N "Tomix Fine Track Viaduct Straight 3.89 99mm 1075"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.897638 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.897638 0.000000
+ L 11579568 0.040000 0.000000 0.701680 3.897638 0.701680
+ L 11579568 0.040000 0.000000 -0.701680 3.897638 -0.701680
+ END$SEGS
+TURNOUT N "Tomix Fine Track Viaduct Straight 5.51 140mm 1071"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ L 11579568 0.040000 0.000000 0.701680 5.511811 0.701680
+ L 11579568 0.040000 0.000000 -0.701680 5.511811 -0.701680
+ END$SEGS
+TURNOUT N "Tomix Fine Track Viaduct Straight 6.24 158.5mm 1076"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.240157 0.000000 90.000000
+ S 0 0 0.000000 0.000000 6.240157 0.000000
+ L 11579568 0.040000 0.000000 0.701680 6.240157 0.701680
+ L 11579568 0.040000 0.000000 -0.701680 6.240157 -0.701680
+ END$SEGS
+TURNOUT N "Tomix Fine Track Viaduct Straight 11.02 280mm 1072"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.023622 0.000000 90.000000
+ S 0 0 0.000000 0.000000 11.023622 0.000000
+ L 11579568 0.040000 0.000000 0.701680 11.023622 0.701680
+ L 11579568 0.040000 0.000000 -0.701680 11.023622 -0.701680
+ END$SEGS
+TURNOUT N "Tomix Fine Track Viaduct Curve 9.56R 243mm 45d 1173"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.764840 -2.802089 135.000000
+ C 0 0 9.566929 0.000000 -9.566929 0.000000 45.000000
+ A 11579568 0.040000 8.865249 0.000000 -9.566929 0.000000 45.000000
+ A 11579568 0.040000 10.268609 0.000000 -9.566929 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Viaduct Curve 11.02R 280mm 45d 1171"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.794878 -3.228744 135.000000
+ C 0 0 11.023622 0.000000 -11.023622 0.000000 45.000000
+ A 11579568 0.040000 10.321942 0.000000 -11.023622 0.000000 45.000000
+ A 11579568 0.040000 11.725302 0.000000 -11.023622 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Viaduct Curve 12.48R 317mm 45d 1127"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.824915 -3.655400 135.000000
+ C 0 0 12.480315 0.000000 -12.480315 0.000000 45.000000
+ A 11579568 0.040000 11.778635 0.000000 -12.480315 0.000000 45.000000
+ A 11579568 0.040000 13.181995 0.000000 -12.480315 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Viaduct Curve 13.93R 354mm 45d 1174"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.854953 -4.082055 135.000000
+ C 0 0 13.937008 0.000000 -13.937008 0.000000 45.000000
+ A 11579568 0.040000 13.235328 0.000000 -13.937008 0.000000 45.000000
+ A 11579568 0.040000 14.638688 0.000000 -13.937008 0.000000 45.000000
+ END$SEGS
+
+SUBCONTENTS Tomix N-Scale Fine Track - Overhead PC Track
+TURNOUT N "Tomix Fine Track Overhead PC Straight 3.89 99mm 1825"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.897638 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.897638 0.000000
+ L 11579568 0.040000 0.000000 0.701680 3.897638 0.701680
+ L 11579568 0.040000 0.000000 -0.701680 3.897638 -0.701680
+ END$SEGS
+TURNOUT N "Tomix Fine Track Overhead PC Straight 5.51 140mm 1821"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ L 11579568 0.040000 0.000000 0.701680 5.511811 0.701680
+ L 11579568 0.040000 0.000000 -0.701680 5.511811 -0.701680
+ END$SEGS
+TURNOUT N "Tomix Fine Track Overhead PC Straight 6.24 158.5mm 1826"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.240157 0.000000 90.000000
+ S 0 0 0.000000 0.000000 6.240157 0.000000
+ L 11579568 0.040000 0.000000 0.701680 6.240157 0.701680
+ L 11579568 0.040000 0.000000 -0.701680 6.240157 -0.701680
+ END$SEGS
+TURNOUT N "Tomix Fine Track Overhead PC Straight 11.02 280mm 1822"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.023622 0.000000 90.000000
+ S 0 0 0.000000 0.000000 11.023622 0.000000
+ L 11579568 0.040000 0.000000 0.701680 11.023622 0.701680
+ L 11579568 0.040000 0.000000 -0.701680 11.023622 -0.701680
+ END$SEGS
+TURNOUT N "Tomix Fine Track Overhead PC Curve 9.56R 243mm 45d 1873"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.764840 -2.802089 135.000000
+ C 0 0 9.566929 0.000000 -9.566929 0.000000 45.000000
+ A 11579568 0.040000 8.865249 0.000000 -9.566929 0.000000 45.000000
+ A 11579568 0.040000 10.268609 0.000000 -9.566929 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Overhead PC Curve 11.02R 280mm 45d 1871"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.794878 -3.228744 135.000000
+ C 0 0 11.023622 0.000000 -11.023622 0.000000 45.000000
+ A 11579568 0.040000 10.321942 0.000000 -11.023622 0.000000 45.000000
+ A 11579568 0.040000 11.725302 0.000000 -11.023622 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Overhead PC Curve 12.48R 317mm 45d 1872"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.824915 -3.655400 135.000000
+ C 0 0 12.480315 0.000000 -12.480315 0.000000 45.000000
+ A 11579568 0.040000 11.778635 0.000000 -12.480315 0.000000 45.000000
+ A 11579568 0.040000 13.181995 0.000000 -12.480315 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Overhead PC Curve 13.93R 354mm 45d 1874"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.854953 -4.082055 135.000000
+ C 0 0 13.937008 0.000000 -13.937008 0.000000 45.000000
+ A 11579568 0.040000 13.235328 0.000000 -13.937008 0.000000 45.000000
+ A 11579568 0.040000 14.638688 0.000000 -13.937008 0.000000 45.000000
+ END$SEGS
+
+SUBCONTENTS Tomix N-Scale Fine Track - Overhead Double Track
+TURNOUT N "Tomix Fine Track Overhead Dbl Trk Straight 5.51 140mm 1061"
+ P "Normal" 1 0 2
+ E 0.000000 0.728346 270.000000
+ E 5.511811 0.728346 90.000000
+ E 0.000000 -0.728346 270.000000
+ E 5.511811 -0.728346 90.000000
+ S 0 0 0.000000 0.728346 5.511811 0.728346
+ S 0 0 0.000000 -0.728346 5.511811 -0.728346
+ L 11579568 0.040000 0.000000 1.456692 5.511811 1.456692
+ L 11579568 0.040000 0.000000 -1.456692 5.511811 -1.456692
+ END$SEGS
+TURNOUT N "Tomix Fine Track Overhead Dbl Trk Straight 11.02 280mm 1062"
+ P "Normal" 1 0 2
+ E 0.000000 0.728346 270.000000
+ E 11.023622 0.728346 90.000000
+ E 0.000000 -0.728346 270.000000
+ E 11.023622 -0.728346 90.000000
+ S 0 0 0.000000 0.728346 11.023622 0.728346
+ S 0 0 0.000000 -0.728346 11.023622 -0.728346
+ L 11579568 0.040000 0.000000 1.456692 11.023622 1.456692
+ L 11579568 0.040000 0.000000 -1.456692 11.023622 -1.456692
+ END$SEGS
+TURNOUT N "Tomix Fine Track Overhead Dbl Trk Straight 44.09 1120mm 1069"
+ P "Normal" 1 0 2
+ E 0.000000 0.728346 270.000000
+ E 44.094488 0.728346 90.000000
+ E 0.000000 -0.728346 270.000000
+ E 44.094488 -0.728346 90.000000
+ S 0 0 0.000000 0.728346 44.094488 0.728346
+ S 0 0 0.000000 -0.728346 44.094488 -0.728346
+ L 11579568 0.040000 0.000000 1.456692 44.094488 1.456692
+ L 11579568 0.040000 0.000000 -1.456692 44.094488 -1.456692
+ END$SEGS
+TURNOUT N "Tomix Fine Track Overhead Dbl Trk Curve 11.02/12.48R 280/317mm 45d 1161"
+ P "Normal" 1 0 2
+ E 0.000000 0.728346 270.000000
+ E 0.000000 -0.728346 270.000000
+ E 8.824915 -2.927054 135.000000
+ E 7.794878 -3.957090 135.000000
+ C 0 0 12.480315 0.000000 -11.751968 0.000000 45.000000
+ C 0 0 11.023622 0.000000 -11.751968 0.000000 45.000000
+ A 11579568 0.040000 13.208661 0.000000 -11.751968 0.000000 45.000000
+ A 11579568 0.040000 10.295276 0.000000 -11.751968 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Overhead Dbl Trk Curve 13.93/15.39R 354/391mm 45d 1162"
+ P "Normal" 1 0 2
+ E 0.000000 0.728346 270.000000
+ E 0.000000 -0.728346 270.000000
+ E 10.884990 -3.780365 135.000000
+ E 9.854953 -4.810401 135.000000
+ C 0 0 15.393701 0.000000 -14.663354 0.000000 45.000000
+ C 0 0 13.937008 0.000000 -14.663354 0.000000 45.000000
+ A 11579568 0.040000 16.122047 0.000000 -14.663354 0.000000 45.000000
+ A 11579568 0.040000 13.208662 0.000000 -14.663354 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Overhead Dbl Trk Curve 16.85/18.30R 428/465mm 45d 1163"
+ P "Normal" 1 0 2
+ E 0.000000 0.728346 270.000000
+ E 0.000000 -0.728346 270.000000
+ E 12.945065 -4.633676 135.000000
+ E 11.915028 -5.663712 135.000000
+ C 0 0 18.307087 0.000000 -17.578740 0.000000 45.000000
+ C 0 0 16.850394 0.000000 -17.578740 0.000000 45.000000
+ A 11579568 0.040000 19.035433 0.000000 -17.578740 0.000000 45.000000
+ A 11579568 0.040000 16.122048 0.000000 -17.578740 0.000000 45.000000
+ END$SEGS
+
+SUBCONTENTS Tomix N-Scale Fine Track - Viaduct Double Track Slab Type
+TURNOUT N "Tomix Fine Track Viaduct Dbl Trk Straight 5.51 140mm (slab type) 1066"
+ P "Normal" 1 0 2
+ E 0.000000 0.728346 270.000000
+ E 5.511811 0.728346 90.000000
+ E 0.000000 -0.728346 270.000000
+ E 5.511811 -0.728346 90.000000
+ S 0 0 0.000000 0.728346 5.511811 0.728346
+ S 0 0 0.000000 -0.728346 5.511811 -0.728346
+ L 11579568 0.040000 0.000000 1.456692 5.511811 1.456692
+ L 11579568 0.040000 0.000000 -1.456692 5.511811 -1.456692
+ END$SEGS
+TURNOUT N "Tomix Fine Track Viaduct Dbl Trk Straight 11.02 280mm (slab type) 1067"
+ P "Normal" 1 0 2
+ E 0.000000 0.728346 270.000000
+ E 11.023622 0.728346 90.000000
+ E 0.000000 -0.728346 270.000000
+ E 11.023622 -0.728346 90.000000
+ S 0 0 0.000000 0.728346 11.023622 0.728346
+ S 0 0 0.000000 -0.728346 11.023622 -0.728346
+ L 11579568 0.040000 0.000000 1.456692 11.023622 1.456692
+ L 11579568 0.040000 0.000000 -1.456692 11.023622 -1.456692
+ END$SEGS
+TURNOUT N "Tomix Fine Track Viaduct Dbl Trk Straight 44.09 1120mm (slab type) 1070"
+ P "Normal" 1 0 2
+ E 0.000000 0.728346 270.000000
+ E 44.094488 0.728346 90.000000
+ E 0.000000 -0.728346 270.000000
+ E 44.094488 -0.728346 90.000000
+ S 0 0 0.000000 0.728346 44.094488 0.728346
+ S 0 0 0.000000 -0.728346 44.094488 -0.728346
+ L 11579568 0.040000 0.000000 1.456692 44.094488 1.456692
+ L 11579568 0.040000 0.000000 -1.456692 44.094488 -1.456692
+ END$SEGS
+TURNOUT N "Tomix Fine Track Viaduct Dbl Trk Curve 16.85/18.30R 428/465mm 45d(slab type) 1168"
+ P "Normal" 1 0 2
+ E 0.000000 0.728346 270.000000
+ E 0.000000 -0.728346 270.000000
+ E 12.945065 -4.633676 135.000000
+ E 11.915028 -5.663712 135.000000
+ C 0 0 18.307087 0.000000 -17.578740 0.000000 45.000000
+ C 0 0 16.850394 0.000000 -17.578740 0.000000 45.000000
+ A 11579568 0.040000 19.035433 0.000000 -17.578740 0.000000 45.000000
+ A 11579568 0.040000 16.122048 0.000000 -17.578740 0.000000 45.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Viaduct Dbl Trk Curve 19.76/21.22R 502/539mm 22.5d(slab type) 1169"
+ P "Normal" 1 0 2
+ E 0.000000 0.728346 270.000000
+ E 0.000000 -0.728346 270.000000
+ E 8.120723 -0.886966 112.500000
+ E 7.563271 -2.232774 112.500000
+ C 0 0 21.220472 0.000000 -20.492125 0.000000 22.500000
+ C 0 0 19.763779 0.000000 -20.492125 0.000000 22.500000
+ A 11579568 0.040000 21.948818 0.000000 -20.492125 0.000000 22.500000
+ A 11579568 0.040000 19.035434 0.000000 -20.492125 0.000000 22.500000
+ END$SEGS
+
+
+SUBCONTENTS Tomix N-Scale Fine Track - Turnouts
+TURNOUT N "Tomix Fine Track Turnout 541mm-R15 (manual) 1209"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ E 5.512642 -0.725753 105.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ C 0 0 21.299213 0.000000 -21.299213 0.000000 15.000000
+ L 11579568 0.040000 0.000000 0.364173 5.511811 0.364173
+ A 11579568 0.040000 20.935040 0.000000 -21.299213 0.000000 15.000000
+ G 11579568 0.000000 0.187500 0.437500 -0.633274 0
+ G 11579568 0.000000 0.187500 0.562500 -0.633274 0
+ F 11579568 0.000000 4
+ 0.437500 -0.364173 0
+ 0.437500 -0.820774 0
+ 0.562500 -0.820774 0
+ 0.562500 -0.364173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track Turnout 541mm-L15 (manual) 1210"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ E 5.512642 0.725753 75.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ C 0 0 21.299213 0.000000 21.299213 165.000000 15.000000
+ L 11579568 0.040000 0.000000 -0.364173 5.511811 -0.364173
+ A 11579568 0.040000 20.935040 0.000000 21.299213 165.000000 15.000000
+ G 11579568 0.000000 0.187500 0.437500 0.633274 0
+ G 11579568 0.000000 0.187500 0.562500 0.633274 0
+ F 11579568 0.000000 4
+ 0.437500 0.364173 0
+ 0.437500 0.820774 0
+ 0.562500 0.820774 0
+ 0.562500 0.364173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track Turnout 541mm-R15 (elec) 1241/81"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ E 5.512642 -0.725753 105.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ C 0 0 21.299213 0.000000 -21.299213 0.000000 15.000000
+ L 11579568 0.040000 0.000000 0.364173 5.511811 0.364173
+ A 11579568 0.040000 20.935040 0.000000 -21.299213 0.000000 15.000000
+ G 11579568 0.000000 0.187500 0.437500 -0.633274 0
+ G 11579568 0.000000 0.187500 0.562500 -0.633274 0
+ F 11579568 0.000000 4
+ 0.437500 -0.364173 0
+ 0.437500 -0.820774 0
+ 0.562500 -0.820774 0
+ 0.562500 -0.364173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track Turnout 541mm-L15 (elec) 1242/82"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ E 5.512642 0.725753 75.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ C 0 0 21.299213 0.000000 21.299213 165.000000 15.000000
+ L 11579568 0.040000 0.000000 -0.364173 5.511811 -0.364173
+ A 11579568 0.040000 20.935040 0.000000 21.299213 165.000000 15.000000
+ G 11579568 0.000000 0.187500 0.437500 0.633274 0
+ G 11579568 0.000000 0.187500 0.562500 0.633274 0
+ F 11579568 0.000000 4
+ 0.437500 0.364173 0
+ 0.437500 0.820774 0
+ 0.562500 0.820774 0
+ 0.562500 0.364173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track Turnout 280mm-R30 (elec) 1243"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ E 5.511811 -1.476885 120.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ C 0 0 11.023622 0.000000 -11.023622 0.000000 30.000000
+ L 11579568 0.040000 0.000000 0.364173 5.511811 0.364173
+ A 11579568 0.040000 10.659449 0.000000 -11.023622 0.000000 30.000000
+ L 11579568 0.040000 4.511811 -0.364173 5.511811 -0.364173
+ A 11579568 0.040000 11.469396 0.000000 -11.023622 23.000000 7.000000
+ G 11579568 0.000000 0.187500 0.437500 -0.633274 0
+ G 11579568 0.000000 0.187500 0.562500 -0.633274 0
+ F 11579568 0.000000 4
+ 0.437500 -0.364173 0
+ 0.437500 -0.820774 0
+ 0.562500 -0.820774 0
+ 0.562500 -0.364173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track Turnout 280mm-L30 (elec) 1244"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ E 5.511811 1.476885 60.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ C 0 0 11.023622 0.000000 11.023622 150.000000 30.000000
+ L 11579568 0.040000 0.000000 -0.364173 5.511811 -0.364173
+ A 11579568 0.040000 10.659449 0.000000 11.023622 150.000000 30.000000
+ L 11579568 0.040000 4.511811 0.364173 5.511811 0.364173
+ A 11579568 0.040000 11.469396 0.000000 11.023622 150.000000 7.000000
+ G 11579568 0.000000 0.187500 0.437500 0.633274 0
+ G 11579568 0.000000 0.187500 0.562500 0.633274 0
+ F 11579568 0.000000 4
+ 0.437500 0.364173 0
+ 0.437500 0.820774 0
+ 0.562500 0.820774 0
+ 0.562500 0.364173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track Mini-Turnout 140mm-R30 1231"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 2.755906 0.000000 90.000000
+ E 2.755906 -0.738443 120.000000
+ S 0 0 0.000000 0.000000 2.755906 0.000000
+ C 0 0 5.511811 0.000000 -5.511811 0.000000 30.000000
+ L 11579568 0.040000 0.000000 0.364173 2.755906 0.364173
+ A 11579568 0.040000 5.147638 0.000000 -5.511811 0.000000 30.000000
+ G 11579568 0.000000 0.187500 0.437500 -0.633274 0
+ G 11579568 0.000000 0.187500 0.562500 -0.633274 0
+ F 11579568 0.000000 4
+ 0.437500 -0.364173 0
+ 0.437500 -0.820774 0
+ 0.562500 -0.820774 0
+ 0.562500 -0.364173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track Mini-Turnout 140mm-L30 1232"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 2.755906 0.000000 90.000000
+ E 2.755906 0.738443 60.000000
+ S 0 0 0.000000 0.000000 2.755906 0.000000
+ C 0 0 5.511811 0.000000 5.511811 150.000000 30.000000
+ L 11579568 0.040000 0.000000 -0.364173 2.755906 -0.364173
+ A 11579568 0.040000 5.147638 0.000000 5.511811 150.000000 30.000000
+ G 11579568 0.000000 0.187500 0.437500 0.633274 0
+ G 11579568 0.000000 0.187500 0.562500 0.633274 0
+ F 11579568 0.000000 4
+ 0.437500 0.364173 0
+ 0.437500 0.820774 0
+ 0.562500 0.820774 0
+ 0.562500 0.364173 0
+ END$SEGS
+
+
+SUBCONTENTS Tomix N-Scale Fine Track - Wye Turnouts
+TURNOUT N "Tomix Fine Track 3-Way Turnout 541mm-L15 (elec) 1261"
+ P "Left" 1
+ P "Normal" 2
+ P "Right" 3
+ E 5.511811 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ E 0.000000 -0.725753 255.000000
+ E 0.000000 0.725753 285.000000
+ C 0 0 21.299213 5.511811 21.299213 180.000000 15.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ C 0 0 21.299213 5.511811 -21.299213 345.000000 15.000000
+ A 11579568 0.040000 20.935040 5.511811 21.299213 180.000000 15.000000
+ A 11579568 0.040000 20.935040 5.511811 -21.299213 345.000000 15.000000
+ G 11579568 0.000000 0.187500 5.074311 0.633274 0
+ G 11579568 0.000000 0.187500 4.949311 0.633274 0
+ F 11579568 0.000000 4
+ 5.074311 0.364173 0
+ 5.074311 0.820774 0
+ 4.949311 0.820774 0
+ 4.949311 0.364173 0
+ G 11579568 0.000000 0.187500 4.074311 0.633274 0
+ G 11579568 0.000000 0.187500 3.949311 0.633274 0
+ F 11579568 0.000000 4
+ 4.074311 0.364173 0
+ 4.074311 0.820774 0
+ 3.949311 0.820774 0
+ 3.949311 0.364173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track 3-Way Turnout 541mm-R15 (elec) 1262"
+ P "Left" 1
+ P "Normal" 2
+ P "Right" 3
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ E 5.512642 -0.725753 105.000000
+ E 5.512642 0.725753 75.000000
+ C 0 0 21.299213 0.000000 21.299213 165.000000 15.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ C 0 0 21.299213 0.000000 -21.299213 0.000000 15.000000
+ A 11579568 0.040000 20.935040 0.000000 21.299213 165.000000 15.000000
+ A 11579568 0.040000 20.935040 0.000000 -21.299213 0.000000 15.000000
+ G 11579568 0.000000 0.187500 0.437500 0.633274 0
+ G 11579568 0.000000 0.187500 0.562500 0.633274 0
+ F 11579568 0.000000 4
+ 0.437500 0.364173 0
+ 0.437500 0.820774 0
+ 0.562500 0.820774 0
+ 0.562500 0.364173 0
+ G 11579568 0.000000 0.187500 1.437500 0.633274 0
+ G 11579568 0.000000 0.187500 1.562500 0.633274 0
+ F 11579568 0.000000 4
+ 1.437500 0.364173 0
+ 1.437500 0.820774 0
+ 1.562500 0.820774 0
+ 1.562500 0.364173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track Wye Turnout 280mm-15 (elec) 1240"
+ P "Left" 1
+ P "Right" 2
+ E 0.000000 0.000000 270.000000
+ E 2.853123 0.375621 75.000000
+ E 2.853123 -0.375621 105.000000
+ C 0 0 11.023622 0.000000 11.023622 165.000000 15.000000
+ C 0 0 11.023622 0.000000 -11.023622 0.000000 15.000000
+ A 11579568 0.040000 10.659449 0.000000 11.023622 165.000000 15.000000
+ A 11579568 0.040000 10.659449 0.000000 -11.023622 0.000000 15.000000
+ G 11579568 0.000000 0.187500 0.937500 0.633274 0
+ G 11579568 0.000000 0.187500 1.062500 0.633274 0
+ F 11579568 0.000000 4
+ 0.937500 0.364173 0
+ 0.937500 0.820774 0
+ 1.062500 0.820774 0
+ 1.062500 0.364173 0
+ END$SEGS
+
+
+SUBCONTENTS Tomix N-Scale Fine Track - Curve Turnouts
+#1248/1249 Obsolete
+TURNOUT N "Tomix Fine Track Turnout 317/280mm Curve-L45 (elec) 1249"
+ P "Normal" 1 6 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 8.887367 3.500827 45.999999
+ E 7.737341 3.364292 44.000001
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ C 0 0.000000 -9.739522 0.354300 9.739522 134.000000 46.000000
+ S 0 0.000000 7.360326 2.973882 7.737341 3.364292
+ C 0 0.000000 -11.596619 0.576816 11.596619 136.000000 44.000000
+ S 0 0.000000 8.632505 3.254710 8.887367 3.500827
+ S 0 0.000000 0.354300 0.000000 0.576816 0.000000
+ L3 11579568 0.040000 -0.000000 -0.364173 0 0.576816 -0.364173 0
+ L3 11579568 0.040000 0.000000 0.364173 0 0.354300 0.364173 0
+ A3 11579568 0.040000 9.375349 0.354300 9.739522 0 134.000000 46.000000
+ L3 11579568 0.040000 7.098362 3.226857 0 7.475377 3.617268 0
+ A3 11579568 0.040000 11.960792 0.576816 11.596619 0 136.000000 44.000000
+ A3 11579568 0.040000 11.232446 0.576816 11.596619 0 136.000000 2.750000
+ L3 11579568 0.040000 8.885481 2.992745 0 9.140343 3.238863 0
+ L3 11579568 0.040000 8.379529 3.516674 0 8.634391 3.762791 0
+ G 11579568 0.000000 0.187500 0.437500 0.633274 0
+ G 11579568 0.000000 0.187500 0.562500 0.633274 0
+ F 11579568 0.000000 4
+ 0.437500 0.364173 0
+ 0.437500 0.820774 0
+ 0.562500 0.820774 0
+ 0.562500 0.364173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track Turnout 317/280mm Curve-R45 (elec) 1248"
+ P "Normal" 1 6 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 8.887367 -3.500827 134.000001
+ E 7.737341 -3.364292 135.999999
+ S 0 0.000000 0.000000 0.000000 0.354300 -0.000000
+ C 0 0.000000 9.739522 0.354300 -9.739522 0.000000 46.000000
+ S 0 0.000000 7.360326 -2.973882 7.737341 -3.364292
+ C 0 0.000000 11.596619 0.576816 -11.596619 0.000000 44.000000
+ S 0 0.000000 8.632505 -3.254710 8.887367 -3.500827
+ S 0 0.000000 0.354300 -0.000000 0.576816 -0.000000
+ L3 11579568 0.040000 -0.000000 -0.364173 0 0.354300 -0.364173 0
+ L3 11579568 0.040000 0.000000 0.364173 0 0.576816 0.364173 0
+ A3 11579568 0.040000 9.375349 0.354300 -9.739522 0 0.000000 46.000000
+ L3 11579568 0.040000 7.098362 -3.226857 0 7.475377 -3.617268 0
+ A3 11579568 0.040000 11.960792 0.576816 -11.596619 0 0.000000 44.000000
+ A3 11579568 0.040000 11.232446 0.576816 -11.596619 0 41.250000 2.750000
+ L3 11579568 0.040000 8.379529 -3.516674 0 8.634391 -3.762791 0
+ L3 11579568 0.040000 8.885481 -2.992745 0 9.140343 -3.238863 0
+ G 11579568 0.000000 0.187500 0.437500 -0.633274 0
+ G 11579568 0.000000 0.187500 0.562500 -0.633274 0
+ F 11579568 0.000000 4
+ 0.437500 -0.364173 0
+ 0.437500 -0.820774 0
+ 0.562500 -0.820774 0
+ 0.562500 -0.364173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track Turnout 317/280mm Curve-L45 (elec) 1279"
+ P "Normal" 1 6 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 8.887367 3.500827 45.999999
+ E 7.737341 3.364292 44.000001
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ C 0 0.000000 -9.739522 0.354300 9.739522 134.000000 46.000000
+ S 0 0.000000 7.360326 2.973882 7.737341 3.364292
+ C 0 0.000000 -11.596619 0.576816 11.596619 136.000000 44.000000
+ S 0 0.000000 8.632505 3.254710 8.887367 3.500827
+ S 0 0.000000 0.354300 0.000000 0.576816 0.000000
+ L3 11579568 0.040000 -0.000000 -0.364173 0 0.576816 -0.364173 0
+ L3 11579568 0.040000 0.000000 0.364173 0 0.354300 0.364173 0
+ A3 11579568 0.040000 9.375349 0.354300 9.739522 0 134.000000 46.000000
+ L3 11579568 0.040000 7.098362 3.226857 0 7.475377 3.617268 0
+ A3 11579568 0.040000 11.960792 0.576816 11.596619 0 136.000000 44.000000
+ A3 11579568 0.040000 11.232446 0.576816 11.596619 0 136.000000 2.750000
+ L3 11579568 0.040000 8.885481 2.992745 0 9.140343 3.238863 0
+ L3 11579568 0.040000 8.379529 3.516674 0 8.634391 3.762791 0
+ G 11579568 0.000000 0.187500 0.437500 0.633274 0
+ G 11579568 0.000000 0.187500 0.562500 0.633274 0
+ F 11579568 0.000000 4
+ 0.437500 0.364173 0
+ 0.437500 0.820774 0
+ 0.562500 0.820774 0
+ 0.562500 0.364173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track Turnout 317/280mm Curve-R45 (elec) 1278"
+ P "Normal" 1 6 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 8.887367 -3.500827 134.000001
+ E 7.737341 -3.364292 135.999999
+ S 0 0.000000 0.000000 0.000000 0.354300 -0.000000
+ C 0 0.000000 9.739522 0.354300 -9.739522 0.000000 46.000000
+ S 0 0.000000 7.360326 -2.973882 7.737341 -3.364292
+ C 0 0.000000 11.596619 0.576816 -11.596619 0.000000 44.000000
+ S 0 0.000000 8.632505 -3.254710 8.887367 -3.500827
+ S 0 0.000000 0.354300 -0.000000 0.576816 -0.000000
+ L3 11579568 0.040000 -0.000000 -0.364173 0 0.354300 -0.364173 0
+ L3 11579568 0.040000 0.000000 0.364173 0 0.576816 0.364173 0
+ A3 11579568 0.040000 9.375349 0.354300 -9.739522 0 0.000000 46.000000
+ L3 11579568 0.040000 7.098362 -3.226857 0 7.475377 -3.617268 0
+ A3 11579568 0.040000 11.960792 0.576816 -11.596619 0 0.000000 44.000000
+ A3 11579568 0.040000 11.232446 0.576816 -11.596619 0 41.250000 2.750000
+ L3 11579568 0.040000 8.379529 -3.516674 0 8.634391 -3.762791 0
+ L3 11579568 0.040000 8.885481 -2.992745 0 9.140343 -3.238863 0
+ G 11579568 0.000000 0.187500 0.437500 -0.633274 0
+ G 11579568 0.000000 0.187500 0.562500 -0.633274 0
+ F 11579568 0.000000 4
+ 0.437500 -0.364173 0
+ 0.437500 -0.820774 0
+ 0.562500 -0.820774 0
+ 0.562500 -0.364173 0
+ END$SEGS
+
+
+
+SUBCONTENTS Tomix N-Scale Fine Track - Cossover and Slips Turnouts
+TURNOUT N "Tomix Fine Track Double Crossover 1247"
+ P "P1" 1 2 3
+ P "P2" 4 5 6
+ P "P3" 1 7 8 9 6
+ P "P4" 4 10 11 12 3
+ E 0.000000 0.000000 270.000000
+ E 11.023622 0.000000 90.000000
+ E 0.000000 1.456693 270.000000
+ E 11.023622 1.456693 90.000000
+ S 0 0.000000 0.000000 0.000000 0.605392 0.000000
+ S 0 0.000000 0.605392 0.000000 10.418230 0.000000
+ S 0 0.000000 10.418230 0.000000 11.023622 0.000000
+ S 0 0.000000 0.000000 1.456693 0.605392 1.456693
+ S 0 0.000000 0.605392 1.456693 10.418230 1.456693
+ S 0 0.000000 10.418230 1.456693 11.023622 1.456693
+ C 0 0.000000 -16.804501 0.605415 16.804501 164.231537 15.768539
+ S 0 0.000000 5.172043 0.632397 5.851579 0.824296
+ C 0 0.000000 16.804501 10.418251 -15.347802 344.231537 15.768539
+ C 0 0.000000 16.804501 0.605325 -15.347808 0.000000 15.768539
+ S 0 0.000000 5.172043 0.824296 5.851579 0.632397
+ C 0 0.000000 -16.804501 10.418251 16.804495 180.000000 15.768539
+ L 11579568 0.040000 0.000000 -0.364173 11.023622 -0.364173
+ L 11579568 0.040000 0.000000 0.364173 1.5 0.364173
+ L 11579568 0.040000 0.000000 1.092520 1.5 1.092520
+ L 11579568 0.040000 1.5 0.364173 1.5 1.092520
+ L 11579568 0.040000 11.023622 0.364173 9.523622 0.364173
+ L 11579568 0.040000 11.023622 1.092520 9.523622 1.092520
+ L 11579568 0.040000 9.523622 0.364173 9.523622 1.092520
+ L 11579568 0.040000 0.000000 1.820866 11.023622 1.820866
+ END$SEGS
+TURNOUT N "Tomix Fine Track Double Slip 140mm-15R 1245" 512
+ P "Cross1" 1 2 3
+ P "Cross2" 4 5 6
+ P "Slip1" 1 7 6
+ P "Slip2" 4 8 3
+ E 5.511811 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ E 0.000000 0.738443 285.000000
+ E 5.511811 -0.738443 105.000000
+ S 0 0.000000 0.000000 0.000000 0.706236 0.000000
+ S 0 0.000000 0.706236 0.000000 4.805575 0.000000
+ S 0 0.000000 4.805575 0.000000 5.511811 0.000000
+ S 0 0.000000 0.000000 0.738443 0.776077 0.530493
+ S 0 0.000000 0.776077 0.530493 4.735734 -0.530493
+ S 0 0.000000 4.735734 -0.530493 5.511811 -0.738443
+ C 0 0.000000 15.568784 0.706236 -15.568784 0.000000 15.000000
+ C 0 0.000000 -15.568784 4.805575 15.568784 180.000000 15.000000
+ L 11579568 0.040000 0.000000 -0.364173 0.706236 -0.364173
+ L 11579568 0.040000 4.620359 -0.882258 5.411811 -1.102616
+ A 11579568 0.040000 15.204611 0.706236 -15.568784 0.000000 15.000000
+ L 11579568 0.040000 0.100000 1.102616 0.891452 0.882258
+ L 11579568 0.040000 4.805575 0.364173 5.511811 0.364173
+ A 11579568 0.040000 15.204611 4.805575 15.568784 180.000000 15.000000
+ G 11579568 0.000000 0.187500 1.437500 -0.633274 0
+ G 11579568 0.000000 0.187500 1.562500 -0.633274 0
+ F 11579568 0.000000 4
+ 1.437500 -0.364173 0
+ 1.437500 -0.820774 0
+ 1.562500 -0.820774 0
+ 1.562500 -0.364173 0
+ G 11579568 0.000000 0.187500 3.937500 -1.033274 0
+ G 11579568 0.000000 0.187500 4.062500 -1.033274 0
+ F 11579568 0.000000 4
+ 3.937500 -0.764173 0
+ 3.937500 -1.220774 0
+ 4.062500 -1.220774 0
+ 4.062500 -0.764173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track Double Slip 140mm-15L 1246" 512
+ P "Cross1" 1 2 3
+ P "Cross2" 4 5 6
+ P "Slip1" 1 8 6
+ P "Slip2" 4 7 3
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ E 0.000000 -0.738443 255.000000
+ E 5.511811 0.738443 75.000000
+ S 0 0.000000 0.000000 0.000000 0.706236 0.000000
+ S 0 0.000000 0.706236 0.000000 4.805575 0.000000
+ S 0 0.000000 4.805575 0.000000 5.511811 0.000000
+ S 0 0.000000 0.000000 -0.738443 0.776077 -0.530493
+ S 0 0.000000 0.776077 -0.530493 4.735734 0.530493
+ S 0 0.000000 4.735734 0.530493 5.511811 0.738443
+ C 0 0.000000 15.568784 4.805575 -15.568784 345.000000 15.000000
+ C 0 0.000000 -15.568784 0.706236 15.568784 165.000000 15.000000
+ L 11579568 0.040000 0.000000 0.364173 0.706236 0.364173
+ L 11579568 0.040000 4.620359 0.882258 5.411811 1.102616
+ A 11579568 0.040000 15.204611 0.706236 15.568784 165.000000 15.000000
+ L 11579568 0.040000 0.100000 -1.102616 0.891452 -0.882258
+ L 11579568 0.040000 4.805575 -0.364173 5.511811 -0.364173
+ A 11579568 0.040000 15.204611 4.805575 -15.568784 345.000000 15.000000
+ G 11579568 0.000000 0.187500 3.937500 -0.633274 0
+ G 11579568 0.000000 0.187500 4.062500 -0.633274 0
+ F 11579568 0.000000 4
+ 3.937500 -0.364173 0
+ 3.937500 -0.820774 0
+ 4.062500 -0.820774 0
+ 4.062500 -0.364173 0
+ G 11579568 0.000000 0.187500 1.437500 -1.033274 0
+ G 11579568 0.000000 0.187500 1.562500 -1.033274 0
+ F 11579568 0.000000 4
+ 1.437500 -0.7641730
+ 1.437500 -1.220774 0
+ 1.562500 -1.220774 0
+ 1.562500 -0.764173 0
+ END$SEGS
+
+SUBCONTENTS Tomix N-Scale Fine Track - Crossings
+TURNOUT N "Tomix Fine Track Crossing 15d 140mm(R) 1322"
+ P "Normal" 1 0 2
+ E 5.511811 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ E 0.000000 0.738443 285.000000
+ E 5.511811 -0.738443 105.000000
+ S 0 0.000000 0.000000 0.000000 5.511811 0.000000
+ S 0 0.000000 0.000000 0.738443 5.511811 -0.738443
+ L 11579568 0.040000 0.100000 1.102616 2.755906 0.364173
+ L 11579568 0.040000 2.755906 0.364173 5.511811 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 2.755906 -0.364173
+ L 11579568 0.040000 2.755906 -0.364173 5.411811 -1.102616
+ END$SEGS
+TURNOUT N "Tomix Fine Track Crossing 15d 140mm(L) 1333"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ E 0.000000 -0.738443 255.000000
+ E 5.511811 0.738443 75.000000
+ S 0 0.000000 0.000000 0.000000 5.511811 0.000000
+ S 0 0.000000 0.000000 -0.738443 5.511811 0.738443
+ L 11579568 0.040000 0.100000 -1.102616 2.755906 -0.364173
+ L 11579568 0.040000 2.755906 -0.364173 5.511811 -0.364173
+ L 11579568 0.040000 0.000000 0.364173 2.755906 0.364173
+ L 11579568 0.040000 2.755906 0.364173 5.411811 1.102616
+ END$SEGS
+TURNOUT N "Tomix Fine Track Crossing 30d 72.5mm 1321"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 2.854331 0.000000 90.000000
+ E 0.191204 -0.713583 240.000000
+ E 2.663127 0.713583 60.000000
+ S 0 0.000000 0.000000 0.000000 2.854331 0.000000
+ S 0 0.000000 0.191204 -0.713583 2.663127 0.713583
+ L 11579568 0.040000 0.000000 0.364173 1.327166 0.364173
+ L 11579568 0.040000 1.327166 0.364173 2.454331 1.027756
+ L 11579568 0.040000 0.400000 -1.027756 1.527166 -0.364173
+ L 11579568 0.040000 1.527166 -0.364173 2.854331 -0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track Crossing 90d 1324"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 1.456693 0.000000 90.000000
+ E 0.728346 0.728346 0.000000
+ E 0.728346 -0.728346 180.000000
+ S 0 0 0.000000 0.000000 1.456693 0.000000
+ S 0 0 0.728346 0.728346 0.728346 -0.728346
+ L 11579568 0.040000 0.000000 0.364173 0.364173 0.364173
+ L 11579568 0.040000 0.000000 -0.364173 0.364173 -0.364173
+ L 11579568 0.040000 1.092519 0.364173 1.456693 0.364173
+ L 11579568 0.040000 1.092519 -0.364173 1.456693 -0.364173
+ L 11579568 0.040000 0.364173 -0.728346 0.364173 -0.364173
+ L 11579568 0.040000 1.092519 -0.728346 1.092519 -0.364173
+ L 11579568 0.040000 0.364173 0.364173 0.364173 0.728346
+ L 11579568 0.040000 1.092519 0.364173 1.092519 0.728346
+ END$SEGS
+
+SUBCONTENTS Tomix N-Scale Fine Track - Brigdes
+TURNOUT N "Tomix Fine Track Truss Bridge 11.02 280mm 3030/31/32/33"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.023622 0.000000 90.000000
+ S 0 0 0.000000 0.000000 11.023622 0.000000
+ L 0 0.053333 0.000000 0.701680 11.023622 0.701680
+ L 0 0.053333 0.000000 -0.701680 11.023622 -0.701680
+ L 0 0.053333 0.918635 -0.701680 0.918635 0.701680
+ L 0 0.053333 0.918635 0.000000 1.837270 0.701680
+ L 0 0.053333 0.918635 0.000000 1.837270 -0.701680
+ L 0 0.053333 1.837270 0.701680 2.755905 0.000000
+ L 0 0.053333 1.837270 -0.701680 2.755905 0.000000
+ L 0 0.053333 2.755905 -0.701680 2.755905 0.701680
+ L 0 0.053333 2.755905 0.000000 3.674540 0.701680
+ L 0 0.053333 2.755905 0.000000 3.674540 -0.701680
+ L 0 0.053333 3.674540 0.701680 4.593175 0.000000
+ L 0 0.053333 3.674540 -0.701680 4.593175 0.000000
+ L 0 0.053333 4.593175 -0.701680 4.593175 0.701680
+ L 0 0.053333 4.593175 0.000000 5.511811 0.701680
+ L 0 0.053333 4.593175 0.000000 5.511811 -0.701680
+ L 0 0.053333 5.511811 0.701680 6.430445 0.000000
+ L 0 0.053333 5.511811 -0.701680 6.430445 0.000000
+ L 0 0.053333 6.430445 -0.701680 6.430445 0.701680
+ L 0 0.053333 6.430445 0.000000 7.349080 0.701680
+ L 0 0.053333 6.430445 0.000000 7.349080 -0.701680
+ L 0 0.053333 7.349080 0.701680 8.267715 0.000000
+ L 0 0.053333 7.349080 -0.701680 8.267715 0.000000
+ L 0 0.053333 8.267715 -0.701680 8.267715 0.701680
+ L 0 0.053333 8.267715 0.000000 9.186350 0.701680
+ L 0 0.053333 8.267715 0.000000 9.186350 -0.701680
+ L 0 0.053333 9.186350 0.701680 10.104985 0.000000
+ L 0 0.053333 9.186350 -0.701680 10.104985 0.000000
+ L 0 0.053333 10.104985 -0.701680 10.104985 0.701680
+ END$SEGS
+TURNOUT N "Tomix Fine Track Dbl Trk Truss Bridge 11.02 280mm 3051/52/53/3257"
+ P "Normal" 1 0 2
+ E 0.000000 0.728346 270.000000
+ E 11.023622 0.728346 90.000000
+ E 0.000000 -0.728346 270.000000
+ E 11.023622 -0.728346 90.000000
+ S 0 0 0.000000 0.728346 11.023622 0.728346
+ S 0 0 0.000000 -0.728346 11.023622 -0.728346
+ L 0 0.053333 0.000000 1.430026 11.023622 1.430026
+ L 0 0.053333 0.000000 -1.430026 11.023622 -1.430026
+ L 0 0.053333 0.918635 -1.430026 0.918635 1.430026
+ L 0 0.053333 0.918635 1.430026 2.755905 -1.430026
+ L 0 0.053333 0.918635 -1.430026 2.755905 1.430026
+ L 0 0.053333 2.755905 -1.430026 2.755905 1.430026
+ L 0 0.053333 2.755905 1.430026 4.593175 -1.430026
+ L 0 0.053333 2.755905 -1.430026 4.593175 1.430026
+ L 0 0.053333 4.593175 -1.430026 4.593175 1.430026
+ L 0 0.053333 4.593175 1.430026 6.430445 -1.430026
+ L 0 0.053333 4.593175 -1.430026 6.430445 1.430026
+ L 0 0.053333 6.430445 -1.430026 6.430445 1.430026
+ L 0 0.053333 6.430445 1.430026 8.267715 -1.430026
+ L 0 0.053333 6.430445 -1.430026 8.267715 1.430026
+ L 0 0.053333 8.267715 -1.430026 8.267715 1.430026
+ L 0 0.053333 8.267715 1.430026 10.104985 -1.430026
+ L 0 0.053333 8.267715 -1.430026 10.104985 1.430026
+ L 0 0.053333 10.104985 -1.430026 10.104985 1.430026
+ END$SEGS
+TURNOUT N "Tomix Fine Track Plate Grider Bridge 5.51 140mm 3029"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ L 0 0.053333 0.000000 0.701680 5.511811 0.701680
+ L 0 0.053333 0.000000 0.364173 0.000000 0.701680
+ L 0 0.053333 1.102362 0.364173 1.102362 0.701680
+ L 0 0.053333 2.204724 0.364173 2.204724 0.701680
+ L 0 0.053333 3.307086 0.364173 3.307086 0.701680
+ L 0 0.053333 4.409448 0.364173 4.409448 0.701680
+ L 0 0.053333 5.511811 0.364173 5.511811 0.701680
+ L 0 0.053333 0.000000 -0.701680 5.511811 -0.701680
+ L 0 0.053333 0.000000 -0.364173 0.000000 -0.701680
+ L 0 0.053333 1.102362 -0.364173 1.102362 -0.701680
+ L 0 0.053333 2.204724 -0.364173 2.204724 -0.701680
+ L 0 0.053333 3.307086 -0.364173 3.307086 -0.701680
+ L 0 0.053333 4.409448 -0.364173 4.409448 -0.701680
+ L 0 0.053333 5.511811 -0.364173 5.511811 -0.701680
+ END$SEGS
+TURNOUT N "Tomix Fine Track Deck Grider Bridge 5.51 140mm 3028"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ F 11579568 0.000000 4
+ 0.000000 0.364173 0
+ 0.300000 0.364173 0
+ 0.300000 0.701680 0
+ 0.000000 0.701680 0
+ F 11579568 0.000000 4
+ 5.211811 0.364173 0
+ 5.511811 0.364173 0
+ 5.511811 0.701680 0
+ 5.211811 0.701680 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track Deck Grider Bridge(DK Green) 5.51 140mm 3241"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.511811 0.000000
+ F 11579568 0.000000 4
+ 0.000000 0.364173 0
+ 0.300000 0.364173 0
+ 0.300000 0.701680 0
+ 0.000000 0.701680 0
+ F 11579568 0.000000 4
+ 5.211811 0.364173 0
+ 5.511811 0.364173 0
+ 5.511811 0.701680 0
+ 5.211811 0.701680 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track Trough Girder Bridge(Red) 1.38 35mm 3264"
+ P "Normal" 3
+ E 0.000000 0.000000 270.000000
+ E 1.377953 0.000000 90.000000
+ F 11579568 0.000000 4
+ 0.000000 0.364173 0
+ 0.200000 0.364173 0
+ 0.200000 -0.364173 0
+ 0.000000 -0.364173 0
+ F 11579568 0.000000 4
+ 1.177953 0.364173 0
+ 1.377953 0.364173 0
+ 1.377953 -0.364173 0
+ 1.177953 -0.364173 0
+ S 0 0 0.000000 0.000000 1.377953 0.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Trough Girder Bridge(Green) 1.38 35mm 3265"
+ P "Normal" 3
+ E 0.000000 0.000000 270.000000
+ E 1.377953 0.000000 90.000000
+ F 11579568 0.000000 4
+ 0.000000 0.364173 0
+ 0.200000 0.364173 0
+ 0.200000 -0.364173 0
+ 0.000000 -0.364173 0
+ F 11579568 0.000000 4
+ 1.177953 0.364173 0
+ 1.377953 0.364173 0
+ 1.377953 -0.364173 0
+ 1.177953 -0.364173 0
+ S 0 0 0.000000 0.000000 1.377953 0.000000
+ END$SEGS
+
+SUBCONTENTS Tomix N-Scale Fine Track - Turn Table
+TURNOUT N "Tomix Fine Track Turn Table 8.34 212mm 1631" 512
+# TT was designed with 212mm bridge, outside dia. is approx., 15 degree spacing
+ P "1" 1 2 3
+ P "2" 4 5 6
+ P "3" 7 8 9
+ P "4" 10 11 12
+ P "5" 13 14 15
+ P "6" 16 17 18
+ P "7" 19 20 21
+ P "8" 22 23 24
+ P "9" 25 26 27
+ P "10" 28 29 30
+ P "11" 31 32 33
+ P "12" 34 35 36
+ E 0.000000 4.173228 0.000000
+ E 1.080111 4.031029 15.000000
+ E 2.086614 3.614121 30.000000
+ E 2.950918 2.950918 45.000000
+ E 3.614121 2.086614 60.000000
+ E 4.031029 1.080111 75.000000
+ E 4.173228 0.000000 90.000000
+ E 4.031029 -1.080111 105.000000
+ E 3.614121 -2.086614 120.000000
+ E 2.950918 -2.950918 135.000000
+ E 2.086614 -3.614121 150.000000
+ E 1.080111 -4.031029 165.000000
+ E 0.000000 -4.173228 180.000000
+ E -1.080111 -4.031029 195.000000
+ E -2.086614 -3.614121 210.000000
+ E -2.950918 -2.950918 225.000000
+ E -3.614121 -2.086614 240.000000
+ E -4.031029 -1.080111 255.000000
+ E -4.173228 0.000000 270.000000
+ E -4.031029 1.080111 285.000000
+ E -3.614121 2.086614 300.000000
+ E -2.950918 2.950918 315.000000
+ E -2.086614 3.614121 330.000000
+ E -1.080111 4.031029 345.000000
+#0/360
+ S 0 0 0.000000 4.173228 0.000000 3.676228
+ S 16777215 0 0.000000 3.676228 0.000000 -3.676228
+ S 0 0 0.000000 -3.676228 0.000000 -4.173228
+#15/195
+ S 0 0 1.080111 4.031029 0.950701 3.548066
+ S 16777215 0 0.950701 3.548066 -0.950701 -3.548066
+ S 0 0 -0.950701 -3.548066 -1.080111 -4.031029
+#30/210
+ S 0 0 2.086614 3.614121 1.836614 3.181109
+ S 16777215 0 1.836614 3.181109 -1.836614 -3.181109
+ S 0 0 -1.836614 -3.181109 -2.086614 -3.614121
+#45/225
+ S 0 0 2.950918 2.950918 2.597364 2.597364
+ S 16777215 0 2.597364 2.597364 -2.597364 -2.597364
+ S 0 0 -2.597364 -2.597364 -2.950918 -2.950918
+#60/240
+ S 0 0 3.614121 2.086614 3.181109 1.836614
+ S 16777215 0 3.181109 1.836614 -3.181109 -1.836614
+ S 0 0 -3.181109 -1.836614 -3.614121 -2.086614
+#75/255
+ S 0 0 4.031029 1.080111 3.548066 0.950701
+ S 16777215 0 3.548066 0.950701 -3.548066 -0.950701
+ S 0 0 -3.548066 -0.950701 -4.031029 -1.080111
+#90/270
+ S 0 0 4.173228 0.000000 3.676228 0.000000
+ S 16777215 0 3.676228 0.000000 -3.676228 0.000000
+ S 0 0 -3.676228 0.000000 -4.173228 0.000000
+#105/285
+ S 0 0 4.031029 -1.080111 3.548066 -0.950701
+ S 16777215 0 3.548066 -0.950701 -3.548066 0.950701
+ S 0 0 -3.548066 0.950701 -4.031029 1.080111
+#120/300
+ S 0 0 3.614121 -2.086614 3.181109 -1.836614
+ S 16777215 0 3.181109 -1.836614 -3.181109 1.836614
+ S 0 0 -3.181109 1.836614 -3.614121 2.086614
+#135/315
+ S 0 0 2.950918 -2.950918 2.597364 -2.597364
+ S 16777215 0 2.597364 -2.597364 -2.597364 2.597364
+ S 0 0 -2.597364 2.597364 -2.950918 2.950918
+#150/330
+ S 0 0 2.086614 -3.614121 1.836614 -3.181109
+ S 16777215 0 1.836614 -3.181109 -1.836614 3.181109
+ S 0 0 -1.836614 3.181109 -2.086614 3.614121
+#165/345
+ S 0 0 1.080111 -4.031029 0.950701 -3.548066
+ S 16777215 0 0.950701 -3.548066 -0.950701 3.548066
+ S 0 0 -0.950701 3.548066 -1.080111 4.031029
+
+ A 11579568 0.053333 4.173228 0.000000 0.000000 0.000000 360.000000
+ A 11579568 0.053333 3.673228 0.000000 0.000000 0.000000 360.000000
+ END$SEGS
+
+SUBCONTENTS Tomix N-Scale Fine Track - Signal Track
+TURNOUT N "Tomix Fine Track 70mm 5 color 5560"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.755906 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.755906 0.000000
+ L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
+ L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
+ F 11579568 0.000000 4
+ 1.002953 0.364173 0
+ 1.752953 0.364173 0
+ 1.752953 0.864173 0
+ 1.002953 0.864173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track 70mm 4 color(Yel/Grn) 5561"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.755906 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.755906 0.000000
+ L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
+ L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
+ F 11579568 0.000000 4
+ 1.002953 0.364173 0
+ 1.752953 0.364173 0
+ 1.752953 0.864173 0
+ 1.002953 0.864173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track 70mm 4 color(Yel/Yel) 5562"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.755906 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.755906 0.000000
+ L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
+ L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
+ F 11579568 0.000000 4
+ 1.002953 0.364173 0
+ 1.752953 0.364173 0
+ 1.752953 0.864173 0
+ 1.002953 0.864173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track 70mm 3 color 5564"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.755906 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.755906 0.000000
+ L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
+ L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
+ F 11579568 0.000000 4
+ 1.002953 0.364173 0
+ 1.752953 0.364173 0
+ 1.752953 0.864173 0
+ 1.002953 0.864173 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track 70mm 2 color 5565"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.755906 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.755906 0.000000
+ L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
+ L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
+ F 11579568 0.000000 4
+ 1.002953 0.364173 0
+ 1.752953 0.364173 0
+ 1.752953 0.864173 0
+ 1.002953 0.864173 0
+ END$SEGS
+
+SUBCONTENTS Tomix N-Scale Fine Track - Misc Track
+TURNOUT N "Tomix Fine Track Re-Railer 140mm 1523"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 5.511811 0.000000
+ L 11579568 0.053333 0.000000 0.364173 5.511811 0.364173
+ L 11579568 0.053333 0.000000 -0.364173 5.511811 -0.364173
+ L 0 0.053333 1.837270 0.364173 3.674541 0.364173
+ L 0 0.053333 3.674541 0.364173 3.674541 -0.364173
+ L 0 0.053333 3.674541 -0.364173 1.837270 -0.364173
+ L 0 0.053333 1.837270 -0.364173 1.837270 0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track PC Re-Railer 140mm 1524"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 5.511811 0.000000
+ L 11579568 0.053333 0.000000 0.364173 5.511811 0.364173
+ L 11579568 0.053333 0.000000 -0.364173 5.511811 -0.364173
+ L 0 0.053333 1.837270 0.364173 3.674541 0.364173
+ L 0 0.053333 3.674541 0.364173 3.674541 -0.364173
+ L 0 0.053333 3.674541 -0.364173 1.837270 -0.364173
+ L 0 0.053333 1.837270 -0.364173 1.837270 0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track Mag Uncoupler 70mm 1521"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.755906 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 2.755906 0.000000
+ L 11579568 0.053333 0.000000 0.3641730 2.755906 0.3641730
+ L 11579568 0.053333 0.000000 -0.3641730 2.755906 -0.3641730
+ L 0 0.053333 0.253333 0.133560 2.280000 0.133560
+ L 0 0.053333 2.280000 0.133560 2.280000 -0.146440
+ L 0 0.053333 2.280000 -0.146440 0.253333 -0.146440
+ L 0 0.053333 0.253333 -0.146440 0.253333 0.133560
+ END$SEGS
+TURNOUT N "Tomix Fine Track W/Insul. Gap 70mm 1671"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.755906 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 2.755906 0.000000
+ L 11579568 0.053333 0.000000 0.3641730 2.755906 0.3641730
+ L 11579568 0.053333 0.000000 -0.3641730 2.755906 -0.3641730
+ END$SEGS
+TURNOUT N "Tomix Fine Track Adjustable 70-90mm 1522"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.755906 0.000000 90.000000
+ X adjustable 2.755906 3.543307
+ S 0 0 0.000000 0.000000 2.755906 0.000000
+ L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
+ L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track PC Adjustable 70-90mm 1526"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.755906 0.000000 90.000000
+ X adjustable 2.755906 3.543307
+ S 0 0 0.000000 0.000000 2.755906 0.000000
+ L 11579568 0.053333 0.000000 0.364173 2.755906 0.364173
+ L 11579568 0.053333 0.000000 -0.364173 2.755906 -0.364173
+ END$SEGS
+TURNOUT N "Tomix Fine Track Wheel Cleaner Rail 140mm 6414"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 5.511811 0.000000
+ L 11579568 0.053333 0.000000 0.364173 5.511811 0.364173
+ L 11579568 0.053333 0.000000 -0.364173 5.511811 -0.364173
+ F 11579568 0.000000 4
+ 1.456693 0.364173 0
+ 4.055118 0.364173 0
+ 4.055118 1.092519 0
+ 1.456693 1.092519 0
+ END$SEGS
+TURNOUT N "Tomix Fine Track PC Wheel Cleaner Rail 140mm 6415"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 5.511811 0.000000
+ L 11579568 0.053333 0.000000 0.364173 5.511811 0.364173
+ L 11579568 0.053333 0.000000 -0.364173 5.511811 -0.364173
+ F 11579568 0.000000 4
+ 1.456693 0.364173 0
+ 4.055118 0.364173 0
+ 4.055118 1.092519 0
+ 1.456693 1.092519 0
+ END$SEGS
+
+SUBCONTENTS Tomix N-Scale Fine Track - Wide Tram
+TURNOUT N "Tomix Fine Track Wide Tram Straight 18.5mm S18.5-WT/1798"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.728346 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.728346 0.000000
+ L 0 0.039370 0.000000 -0.728346 0.728346 -0.728346
+ L 0 0.039370 0.000000 0.728346 0.728346 0.728346
+ END$SEGS
+TURNOUT N "Tomix Fine Track Wide Tram Straight 37mm S37-WT/1798"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.456693 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.456693 0.000000
+ L 0 0.039370 0.000000 -0.728346 1.456693 -0.728346
+ L 0 0.039370 0.000000 0.728346 1.456693 0.728346
+ END$SEGS
+TURNOUT N "Tomix Fine Track Wide Tram Straight(Sensor) 37mm S37-WT-SE/5568"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.456693 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.456693 0.000000
+ L 0 0.039370 0.000000 -0.728346 1.456693 -0.728346
+ L 0 0.039370 0.000000 0.728346 1.456693 0.728346
+ END$SEGS
+TURNOUT N "Tomix Fine Track Wide Tram Straight 47.5mm S47.5-WT/1798"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.870079 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.870079 0.000000
+ L 0 0.039370 0.000000 -0.728346 1.870077 -0.728346
+ L 0 0.039370 0.000000 0.728346 1.870079 0.728346
+ END$SEGS
+TURNOUT N "Tomix Fine Track Wide Tram Straight 70mm S70-WT/1792/1790"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.755906 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 2.755906 0.000000
+ L 0 0.039370 0.000000 -0.728346 2.755904 -0.728346
+ L 0 0.039370 0.000000 0.728346 2.755906 0.728346
+ END$SEGS
+TURNOUT N "Tomix Fine Track Wide Tram Straight 140mm S140-WT/1793/1791"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.511811 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 5.511811 0.000000
+ L 0 0.039370 0.000000 -0.728346 5.511809 -0.728346
+ L 0 0.039370 0.000000 0.728346 5.511811 0.728346
+ END$SEGS
+TURNOUT N "Tomix Fine Track Wide Tram 30d Curve 103mm C103-30-WT/1795"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.027558 0.543282 60.000000
+ C 0 0.000000 4.055118 0.000000 4.055118 150.000000 30.000000
+ A3 0 0.039370 4.783465 0.000000 4.055118 0 150.000000 30.000000
+ A3 0 0.039370 3.326772 0.000000 4.055118 0 150.000000 30.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Wide Tram 60d Curve 103mm C103-60-WT/1795"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.511834 2.027556 30.000000
+ C 0 0.000000 4.055118 0.000000 4.055118 120.000000 60.000000
+ A3 0 0.039370 4.783465 0.000000 4.055118 0 120.000000 60.000000
+ A3 0 0.039370 3.326772 0.000000 4.055118 0 120.000000 60.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Wide Tram 30d Curve 140mm C140-30-WT/1796"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.755903 0.738441 60.000000
+ C 0 0.000000 5.511811 0.000000 5.511811 150.000000 30.000000
+ A3 0 0.039370 6.240157 0.000000 5.511811 0 150.000000 30.000000
+ A3 0 0.039370 4.783465 0.000000 5.511811 0 150.000000 30.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Wide Tram 60d Curve 140mm C140-60-WT/1796"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.773366 2.755901 30.000000
+ C 0 0.000000 5.511811 0.000000 5.511811 120.000000 60.000000
+ A3 0 0.039370 6.240157 0.000000 5.511811 0 120.000000 60.000000
+ A3 0 0.039370 4.783465 0.000000 5.511811 0 120.000000 60.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Wide Tram 30d Curve 177mm C177-30-WT/1799"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.484249 0.933601 60.000000
+ C 0 0.000000 6.968504 0.000000 6.968504 150.000000 30.000000
+ A3 0 0.039370 7.696850 0.000000 6.968504 0 150.000000 30.000000
+ A3 0 0.039370 6.240157 0.000000 6.968504 0 150.000000 30.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Wide Tram 60d Curve 177mm C177-60-WT/1799"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.034898 3.484247 30.000000
+ C 0 0.000000 6.968504 0.000000 6.968504 120.000000 60.000000
+ A3 0 0.039370 7.696850 0.000000 6.968504 0 120.000000 60.000000
+ A3 0 0.039370 6.240157 0.000000 6.968504 0 120.000000 60.000000
+ END$SEGS
+TURNOUT N "Tomix Fine Track Wide Tram 90d Crossing 37mm X37-90-WT/1799"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 1.456693 0.000000 90.000000
+ E 0.728346 0.728346 360.000000
+ E 0.728346 -0.728346 180.000000
+ S 0 0.000000 0.000000 0.000000 1.456693 0.000000
+ S 0 0.000000 0.728346 0.728346 0.728346 -0.728346
+ END$SEGS
diff --git a/app/lib/params/N-walth-n.xtp b/app/lib/params/N-walthers-n.xtp
index a33ac93..2719287 100644
--- a/app/lib/params/N-walth-n.xtp
+++ b/app/lib/params/N-walthers-n.xtp
@@ -1,3049 +1,3977 @@
-CONTENTS Walthers Cornerstone N Structures
-SUBCONTENTS Walthers Cornerstone N Structures - Power Industries
-STRUCTURE N "Walthers Nothern Light Powerhouse 933-3214"
- L 0 0 0.000000 0.000000 4.125000 0.000000
- L 0 0 4.125000 0.000000 4.125000 2.625000
- L 0 0 4.125000 2.625000 0.000000 2.625000
- L 0 0 0.000000 2.625000 0.000000 0.000000
- A 0 0 0.125000 0.500000 0.500000 0.000000 360.000000
- A 0 0 0.125000 3.625000 0.500000 0.000000 360.000000
- A 0 0 0.125000 1.500000 0.500000 0.000000 360.000000
- A 0 0 0.139754 2.625000 0.500000 0.000000 360.000000
- A 0 0 0.534000 4.875000 2.187500 0.000000 360.000000
- A 0 0 0.000000 4.937500 2.062500 0.000000 360.000000
- A 0 0 0.364434 4.875000 2.187500 0.000000 360.000000
- END
-
-SUBCONTENTS Walthers Cornerstone N Structures - Coal Industries
-STRUCTURE N "Walthers Diamond Coal Corp. 933-3836"
- F3 14531987 0.000000 4
- 9.774702 0.390631 0
- 9.774704 1.640631 0
- 10.024704 1.640630 0
- 10.024702 0.390630 0
- F3 14531987 0.000000 4
- 13.087202 0.140626 0
- 13.087204 1.640626 0
- 13.337204 1.640626 0
- 13.337202 0.140626 0
- F3 14531987 0.000000 4
- 13.337204 1.640626 0
- 13.337204 1.890626 0
- 8.774704 1.890632 0
- 8.774704 1.640632 0
- A3 0 0.020833 0.750000 9.087212 7.703132 0 270.000000 360.000000
- L3 0 0.052083 13.399706 3.640626 0 13.399704 1.890626 0
- L3 0 0.052083 13.399706 3.640626 0 13.399710 6.640626 0
- L3 0 0.052083 8.399711 7.015633 0 8.399711 7.015633 0
- L3 0 0.052083 9.274711 6.890631 0 9.899711 6.890631 0
- L3 0 0.052083 8.899711 6.890632 0 8.274711 6.890633 0
- L3 0 0.052083 8.274711 6.890633 0 8.274713 8.515633 0
- L3 0 0.052083 8.274713 8.515633 0 9.899713 8.515631 0
- L3 0 0.052083 9.899713 8.515631 0 9.899711 6.890631 0
- L3 0 0.041667 0.274705 2.390643 0 0.274704 2.015643 0
- L3 0 0.041667 0.274704 2.015643 0 0.399704 2.015643 0
- L3 0 0.041667 0.399704 2.015643 0 0.399705 2.390643 0
- L3 0 0.041667 7.274709 5.640634 0 7.274709 5.640634 0
- L3 0 0.041667 5.649707 4.265636 0 5.649707 4.265636 0
- F3 14737632 0.000000 4
- 8.399711 7.140633 0
- 8.399713 8.265633 0
- 9.524713 8.265631 0
- 9.524711 7.140631 0
- L3 0 0.052083 9.524711 7.140631 0 9.524713 8.265631 0
- L3 0 0.052083 8.399713 8.265633 0 9.524713 8.265631 0
- L3 8421504 0.020833 8.962211 7.140632 0 8.962213 8.265632 0
- L3 8421504 0.020833 8.524711 7.265632 0 9.399711 7.265631 0
- L3 8421504 0.020833 9.399711 7.390631 0 8.524711 7.390632 0
- L3 8421504 0.020833 8.524712 7.515632 0 9.399712 7.515631 0
- L3 8421504 0.020833 8.524712 7.640632 0 9.399712 7.640631 0
- L3 8421504 0.020833 9.399712 7.765631 0 8.524712 7.765632 0
- L3 8421504 0.020833 9.399712 7.890631 0 8.524712 7.890632 0
- L3 8421504 0.020833 8.524712 8.015632 0 9.399712 8.015631 0
- L3 8421504 0.020833 9.399712 8.140631 0 8.524712 8.140632 0
- L3 0 0.052083 8.399713 8.265633 0 8.399711 7.140633 0
- L3 0 0.052083 8.399711 7.140633 0 8.899711 7.140632 0
- L3 0 0.052083 9.274711 7.140631 0 9.524711 7.140631 0
- F3 14737632 0.000000 4
- 8.899706 3.640632 0
- 8.899711 7.140632 0
- 9.274711 7.140631 0
- 9.274706 3.640631 0
- L3 0 0.052083 8.899711 7.140632 0 9.274711 7.140631 0
- L3 0 0.052083 8.899706 3.640632 0 8.899711 7.140632 0
- L3 0 0.052083 9.274711 7.140631 0 9.274706 3.640631 0
- L3 8421504 0.020833 9.087206 3.640632 0 9.087211 7.140632 0
- L3 8421504 0.020833 9.024707 3.765632 0 9.149707 3.765632 0
- L3 8421504 0.020833 9.024707 3.890632 0 9.149707 3.890632 0
- L3 8421504 0.020833 9.024707 4.015632 0 9.149707 4.015632 0
- L3 8421504 0.020833 9.024707 4.140632 0 9.149707 4.140632 0
- L3 8421504 0.020833 9.024707 4.390632 0 9.149707 4.390632 0
- L3 8421504 0.020833 9.024707 4.265632 0 9.149707 4.265632 0
- L3 8421504 0.020833 9.024708 4.515632 0 9.149708 4.515632 0
- L3 8421504 0.020833 9.024708 4.640632 0 9.149708 4.640632 0
- L3 8421504 0.020833 9.024708 4.765632 0 9.149708 4.765632 0
- L3 8421504 0.020833 9.024708 4.890632 0 9.149708 4.890632 0
- L3 8421504 0.020833 9.024708 5.015632 0 9.149708 5.015632 0
- L3 8421504 0.020833 9.024709 5.265632 0 9.149709 5.265632 0
- L3 8421504 0.020833 9.024708 5.140632 0 9.149708 5.140632 0
- L3 8421504 0.020833 9.024709 5.390632 0 9.149709 5.390632 0
- L3 8421504 0.020833 9.024709 5.515632 0 9.149709 5.515632 0
- L3 8421504 0.020833 9.024709 5.640632 0 9.149709 5.640632 0
- L3 8421504 0.020833 9.024709 5.765632 0 9.149709 5.765632 0
- L3 8421504 0.020833 9.024709 5.890632 0 9.149709 5.890632 0
- L3 8421504 0.020833 9.024710 6.015632 0 9.149710 6.015632 0
- L3 8421504 0.020833 9.024710 6.140632 0 9.149710 6.140632 0
- L3 8421504 0.020833 9.024710 6.265632 0 9.149710 6.265632 0
- L3 8421504 0.020833 9.024710 6.390632 0 9.149710 6.390632 0
- L3 8421504 0.020833 9.024710 6.515632 0 9.149710 6.515632 0
- L3 8421504 0.020833 9.024710 6.640632 0 9.149710 6.640632 0
- L3 8421504 0.020833 9.024711 6.765632 0 9.149711 6.765632 0
- L3 8421504 0.020833 9.024711 6.890632 0 9.149711 6.890632 0
- L3 8421504 0.020833 9.024711 7.015632 0 9.149711 7.015632 0
- F3 14737632 0.000000 4
- 9.899706 3.640631 0
- 9.899710 6.640631 0
- 13.399710 6.640626 0
- 13.399706 3.640626 0
- L3 0 0.052083 13.399710 6.640626 0 9.899710 6.640631 0
- L3 8421504 0.020833 13.274707 3.765626 0 10.024707 3.765630 0
- L3 8421504 0.020833 10.024707 3.890630 0 13.274707 3.890626 0
- L3 8421504 0.020833 13.274707 4.015626 0 10.024707 4.015630 0
- L3 8421504 0.020833 10.024707 4.140630 0 13.274707 4.140626 0
- L3 8421504 0.020833 13.274707 4.265626 0 10.024707 4.265630 0
- L3 8421504 0.020833 10.024707 4.390630 0 13.274707 4.390626 0
- L3 8421504 0.020833 13.274708 4.515626 0 10.024708 4.515630 0
- L3 8421504 0.020833 10.024708 4.640630 0 13.274708 4.640626 0
- L3 8421504 0.020833 13.274708 4.765626 0 10.024708 4.765630 0
- L3 8421504 0.020833 10.024708 4.890630 0 13.274708 4.890626 0
- L3 8421504 0.020833 13.274708 5.015626 0 10.024708 5.015630 0
- L3 8421504 0.020833 10.024708 5.140630 0 13.274708 5.140626 0
- L3 8421504 0.020833 13.274709 5.265626 0 10.024709 5.265630 0
- L3 8421504 0.020833 10.024709 5.390630 0 13.274709 5.390626 0
- L3 8421504 0.020833 13.274709 5.515626 0 10.024709 5.515630 0
- L3 8421504 0.020833 10.024709 5.640630 0 13.274709 5.640626 0
- L3 8421504 0.020833 13.274709 5.765626 0 10.024709 5.765630 0
- L3 8421504 0.020833 10.024709 5.890630 0 13.274709 5.890626 0
- L3 8421504 0.020833 13.274710 6.015626 0 10.024710 6.015630 0
- L3 8421504 0.020833 10.024710 6.140630 0 13.274710 6.140626 0
- L3 8421504 0.020833 13.274710 6.265626 0 10.024710 6.265630 0
- L3 8421504 0.020833 10.024710 6.390630 0 13.274710 6.390626 0
- L3 8421504 0.020833 13.274710 6.515626 0 10.024710 6.515630 0
- L3 0 0.052083 9.899710 6.640631 0 9.899706 3.640631 0
- L3 0 0.020833 11.649710 6.640628 0 11.649706 3.640628 0
- F3 14737632 0.000000 4
- 13.399704 1.890626 0
- 13.399706 3.640626 0
- 6.649706 3.640635 0
- 6.649704 1.890635 0
- F3 14737632 0.000000 4
- 8.774706 3.640632 0
- 8.774708 4.515632 0
- 6.649708 4.515635 0
- 6.649706 3.640635 0
- F3 14737632 0.000000 4
- 8.774703 1.015632 0
- 8.774704 1.890632 0
- 6.649704 1.890635 0
- 6.649703 1.015635 0
- L3 0 0.052083 6.649704 1.890635 0 6.649706 3.640635 0
- L3 0 0.052083 6.649706 3.640635 0 6.649708 4.515635 0
- L3 0 0.052083 6.649704 1.890635 0 6.649703 1.015635 0
- L3 8421504 0.020833 6.774704 1.765635 0 6.774703 1.140635 0
- L3 8421504 0.020833 6.899704 1.765635 0 6.899703 1.140635 0
- L3 8421504 0.020833 7.024704 1.765634 0 7.024703 1.140634 0
- L3 8421504 0.020833 7.149704 1.765634 0 7.149703 1.140634 0
- L3 8421504 0.020833 7.274704 1.765634 0 7.274703 1.140634 0
- L3 8421504 0.020833 7.399704 1.765634 0 7.399703 1.140634 0
- L3 8421504 0.020833 7.524704 1.765634 0 7.524703 1.140634 0
- L3 8421504 0.020833 7.649704 1.765634 0 7.649703 1.140634 0
- L3 8421504 0.020833 7.774704 1.765633 0 7.774703 1.140633 0
- L3 8421504 0.020833 7.899704 1.765633 0 7.899703 1.140633 0
- L3 8421504 0.020833 8.024704 1.765633 0 8.024703 1.140633 0
- L3 8421504 0.020833 8.149704 1.765633 0 8.149703 1.140633 0
- L3 8421504 0.020833 8.274704 1.765633 0 8.274703 1.140633 0
- L3 8421504 0.020833 8.399704 1.765633 0 8.399703 1.140633 0
- L3 8421504 0.020833 8.524704 1.765632 0 8.524703 1.140632 0
- L3 8421504 0.020833 8.649704 1.765632 0 8.649703 1.140632 0
- L3 8421504 0.020833 6.774707 3.765635 0 6.774707 4.390635 0
- L3 8421504 0.020833 6.899707 3.765635 0 6.899707 4.390635 0
- L3 8421504 0.020833 7.024707 4.390634 0 7.024707 3.765634 0
- L3 8421504 0.020833 7.024707 4.390635 0 7.024707 4.390634 0
- L3 8421504 0.020833 7.024707 4.390635 0 7.024707 4.390635 0
- L3 8421504 0.020833 7.149707 4.390634 0 7.149707 3.765634 0
- L3 8421504 0.020833 7.274707 3.765634 0 7.274707 4.390634 0
- L3 8421504 0.020833 7.399707 4.390634 0 7.399707 3.765634 0
- L3 8421504 0.020833 7.524707 4.390634 0 7.524707 3.765634 0
- L3 8421504 0.020833 7.649707 3.765634 0 7.649707 4.390634 0
- L3 8421504 0.020833 7.774707 4.390633 0 7.774707 3.765633 0
- L3 8421504 0.020833 7.899707 3.765633 0 7.899707 4.390633 0
- L3 8421504 0.020833 8.024707 4.390633 0 8.024707 3.765633 0
- L3 8421504 0.020833 8.149707 3.765633 0 8.149707 4.390633 0
- L3 8421504 0.020833 8.274707 4.390633 0 8.274707 3.765633 0
- L3 8421504 0.020833 8.399707 3.765633 0 8.399707 4.390633 0
- L3 8421504 0.020833 8.524707 3.765632 0 8.524707 4.390632 0
- L3 8421504 0.020833 8.649707 4.390632 0 8.649707 3.765632 0
- L3 8421504 0.020833 7.274706 3.515634 0 7.274704 2.015634 0
- L3 8421504 0.020833 7.399704 2.015634 0 7.399706 3.515634 0
- L3 8421504 0.020833 7.524706 3.515634 0 7.524704 2.015634 0
- L3 8421504 0.020833 7.649704 2.015634 0 7.649706 3.515634 0
- L3 8421504 0.020833 7.774706 3.515633 0 7.774704 2.015633 0
- L3 8421504 0.020833 7.899704 2.015633 0 7.899706 3.515633 0
- L3 8421504 0.020833 8.024706 3.515633 0 8.024704 2.015633 0
- L3 8421504 0.020833 8.149704 2.015633 0 8.149706 3.515633 0
- L3 8421504 0.020833 8.274706 3.515633 0 8.274704 2.015633 0
- L3 8421504 0.020833 8.399704 2.015633 0 8.399706 3.515633 0
- L3 8421504 0.020833 8.524706 3.515632 0 8.524704 2.015632 0
- L3 8421504 0.020833 7.149706 3.515634 0 7.149704 2.015634 0
- L3 8421504 0.020833 7.024704 2.015634 0 7.024706 3.515634 0
- L3 8421504 0.020833 6.899706 3.515635 0 6.899704 2.015635 0
- L3 8421504 0.020833 6.774704 2.015635 0 6.774706 3.515635 0
- L3 8421504 0.020833 8.774706 3.515632 0 8.774704 2.015632 0
- L3 8421504 0.020833 8.899704 2.015632 0 8.899706 3.515632 0
- L3 8421504 0.020833 9.024706 3.515632 0 9.024704 2.015632 0
- L3 8421504 0.020833 9.149704 2.015632 0 9.149706 3.515632 0
- L3 8421504 0.020833 9.274706 3.515631 0 9.274704 2.015631 0
- L3 8421504 0.020833 9.399704 2.015631 0 9.399706 3.515631 0
- L3 8421504 0.020833 9.524706 3.515631 0 9.524704 2.015631 0
- L3 8421504 0.020833 9.649704 2.015631 0 9.649706 3.515631 0
- L3 8421504 0.020833 9.774706 3.515631 0 9.774704 2.015631 0
- L3 8421504 0.020833 9.899704 2.015631 0 9.899706 3.515631 0
- L3 8421504 0.020833 10.024706 3.515630 0 10.024704 2.015630 0
- L3 8421504 0.020833 10.149704 2.015630 0 10.149706 3.515630 0
- L3 8421504 0.020833 10.274706 3.515630 0 10.274704 2.015630 0
- L3 8421504 0.020833 10.524704 2.015630 0 10.524706 3.515630 0
- L3 8421504 0.020833 10.399706 3.515630 0 10.399704 2.015630 0
- L3 8421504 0.020833 10.649704 2.015630 0 10.649706 3.515630 0
- L3 8421504 0.020833 10.774706 3.515629 0 10.774704 2.015629 0
- L3 8421504 0.020833 10.899704 2.015629 0 10.899706 3.515629 0
- L3 8421504 0.020833 11.024706 3.515629 0 11.024704 2.015629 0
- L3 8421504 0.020833 11.149704 2.015629 0 11.149706 3.515629 0
- L3 8421504 0.020833 11.274706 3.515629 0 11.274704 2.015629 0
- L3 8421504 0.020833 11.399704 2.015629 0 11.399706 3.515629 0
- L3 8421504 0.020833 11.524706 3.515628 0 11.524704 2.015628 0
- L3 8421504 0.020833 11.649704 2.015628 0 11.649706 3.515628 0
- L3 8421504 0.020833 11.774706 3.515628 0 11.774704 2.015628 0
- L3 8421504 0.020833 11.899704 2.015628 0 11.899706 3.515628 0
- L3 8421504 0.020833 12.024706 3.515628 0 12.024704 2.015628 0
- L3 8421504 0.020833 12.149704 2.015628 0 12.149706 3.515628 0
- L3 8421504 0.020833 12.274706 3.515627 0 12.274704 2.015627 0
- L3 8421504 0.020833 12.399704 2.015627 0 12.399706 3.515627 0
- L3 8421504 0.020833 12.524706 3.515627 0 12.524704 2.015627 0
- L3 8421504 0.020833 12.649704 2.015627 0 12.649706 3.515627 0
- L3 8421504 0.020833 12.774706 3.515627 0 12.774704 2.015627 0
- L3 8421504 0.020833 12.899704 2.015627 0 12.899706 3.515627 0
- L3 8421504 0.020833 13.024706 3.515626 0 13.024704 2.015626 0
- L3 8421504 0.020833 13.149704 2.015626 0 13.149706 3.515626 0
- L3 8421504 0.020833 13.274706 3.515626 0 13.274704 2.015626 0
- L3 8421504 0.020833 8.649704 2.015632 0 8.649706 3.515632 0
- L3 0 0.052083 13.399704 1.890626 0 6.649704 1.890635 0
- L3 0 0.052083 6.649708 4.515635 0 8.774708 4.515632 0
- L3 0 0.052083 8.774708 4.515632 0 8.774706 3.640632 0
- L3 0 0.052083 6.649703 1.015635 0 8.774703 1.015632 0
- L3 0 0.052083 8.774703 1.015632 0 8.774704 1.890632 0
- L3 0 0.052083 13.399706 3.640626 0 6.649706 3.640635 0
- L3 0 0.020833 13.399705 2.765626 0 6.649705 2.765635 0
- F3 14737632 0.000000 5
- 6.649706 3.140635 0
- 0.149706 3.140644 0
- 0.024705 2.765644 0
- 0.149705 2.390644 0
- 6.649705 2.390635 0
- L3 8421504 0.020833 0.524706 3.015643 0 0.524705 2.515643 0
- L3 8421504 0.020833 0.649705 2.515643 0 0.649706 3.015643 0
- L3 8421504 0.020833 0.774706 3.015643 0 0.774705 2.515643 0
- L3 8421504 0.020833 0.899705 2.515643 0 0.899706 3.015643 0
- L3 8421504 0.020833 1.024706 3.015642 0 1.024705 2.515642 0
- L3 8421504 0.020833 1.149705 2.515642 0 1.149706 3.015642 0
- L3 8421504 0.020833 1.274706 3.015642 0 1.274705 2.515642 0
- L3 8421504 0.020833 1.399705 2.515642 0 1.399706 3.015642 0
- L3 8421504 0.020833 1.524706 3.015642 0 1.524705 2.515642 0
- L3 8421504 0.020833 1.649705 2.515642 0 1.649706 3.015642 0
- L3 8421504 0.020833 1.774706 3.015641 0 1.774705 2.515641 0
- L3 8421504 0.020833 1.899705 2.515641 0 1.899706 3.015641 0
- L3 8421504 0.020833 2.024706 3.015641 0 2.024705 2.515641 0
- L3 8421504 0.020833 2.149705 2.515641 0 2.149706 3.015641 0
- L3 8421504 0.020833 2.274706 3.015641 0 2.274705 2.515641 0
- L3 8421504 0.020833 2.399705 2.515641 0 2.399706 3.015641 0
- L3 8421504 0.020833 2.524706 3.015640 0 2.524705 2.515640 0
- L3 8421504 0.020833 2.649705 2.515640 0 2.649706 3.015640 0
- L3 8421504 0.020833 2.774706 3.015640 0 2.774705 2.515640 0
- L3 8421504 0.020833 2.899705 2.515640 0 2.899706 3.015640 0
- L3 8421504 0.020833 3.024706 3.015640 0 3.024705 2.515640 0
- L3 8421504 0.020833 3.149705 2.515640 0 3.149706 3.015640 0
- L3 8421504 0.020833 3.274706 3.015639 0 3.274705 2.515639 0
- L3 8421504 0.020833 3.399705 2.515639 0 3.399706 3.015639 0
- L3 8421504 0.020833 3.524706 3.015639 0 3.524705 2.515639 0
- L3 8421504 0.020833 3.649705 2.515639 0 3.649706 3.015639 0
- L3 8421504 0.020833 3.774706 3.015639 0 3.774705 2.515639 0
- L3 8421504 0.020833 3.899705 2.515639 0 3.899706 3.015639 0
- L3 8421504 0.020833 4.024706 3.015638 0 4.024705 2.515638 0
- L3 8421504 0.020833 4.149705 2.515638 0 4.149706 3.015638 0
- L3 8421504 0.020833 4.274706 3.015638 0 4.274705 2.515638 0
- L3 8421504 0.020833 4.399705 2.515638 0 4.399706 3.015638 0
- L3 8421504 0.020833 4.524706 3.015638 0 4.524705 2.515638 0
- L3 8421504 0.020833 4.649705 2.515638 0 4.649706 3.015638 0
- L3 8421504 0.020833 4.774706 3.015637 0 4.774705 2.515637 0
- L3 8421504 0.020833 4.899705 2.515637 0 4.899706 3.015637 0
- L3 8421504 0.020833 5.024706 3.015637 0 5.024705 2.515637 0
- L3 8421504 0.020833 5.149705 2.515637 0 5.149706 3.015637 0
- L3 8421504 0.020833 5.274706 3.015637 0 5.274705 2.515637 0
- L3 8421504 0.020833 5.399706 3.015637 0 5.399705 2.515637 0
- L3 8421504 0.020833 5.524705 2.515636 0 5.524706 3.015636 0
- L3 8421504 0.020833 5.649706 3.015636 0 5.649705 2.515636 0
- L3 8421504 0.020833 5.774705 2.515636 0 5.774706 3.015636 0
- L3 8421504 0.020833 5.899706 3.015636 0 5.899705 2.515636 0
- L3 8421504 0.020833 6.024705 2.515636 0 6.024706 3.015636 0
- L3 8421504 0.020833 6.149706 3.015636 0 6.149705 2.515636 0
- L3 8421504 0.020833 6.274705 2.515635 0 6.274706 3.015635 0
- L3 0 0.041667 0.274706 3.140643 0 0.274706 3.515643 0
- L3 0 0.041667 0.274706 3.515643 0 0.399706 3.515643 0
- L3 0 0.041667 0.399706 3.515643 0 0.399706 3.140643 0
- L3 8421504 0.020833 6.399706 3.015635 0 6.399705 2.515635 0
- L3 8421504 0.020833 6.524705 2.515635 0 6.524706 3.015635 0
- L3 0 0.052083 0.149706 3.140644 0 0.024705 2.765644 0
- L3 0 0.052083 0.024705 2.765644 0 0.149705 2.390644 0
- L3 8421504 0.020833 0.149706 3.015644 0 0.149705 2.515644 0
- L3 8421504 0.020833 0.274705 2.515643 0 0.274706 3.015643 0
- L3 8421504 0.020833 0.399705 2.515643 0 0.399706 3.015643 0
- L3 8421504 0.020833 6.649705 2.765635 0 0.024705 2.765644 0
- L3 0 0.052083 6.649705 2.390635 0 0.149705 2.390644 0
- L3 0 0.052083 6.649706 3.140635 0 0.149706 3.140644 0
- L3 0 0.031250 13.337204 1.890626 0 13.337202 0.140626 0
- L3 0 0.031250 13.087202 0.140626 0 13.087204 1.640626 0
- L3 0 0.031250 13.337204 1.640626 0 10.399704 1.640630 0
- L3 0 0.031250 10.399704 1.640630 0 10.399704 1.890630 0
- L3 0 0.031250 10.399704 1.640630 0 10.024704 1.640630 0
- L3 0 0.031250 10.024704 1.890630 0 10.024702 0.390630 0
- L3 0 0.031250 10.024702 0.390630 0 9.774702 0.390631 0
- L3 0 0.031250 9.774702 0.390631 0 9.774704 1.640631 0
- L3 0 0.031250 10.024704 1.640630 0 8.774704 1.640632 0
- L3 0 0.031250 8.774703 1.015632 0 9.712203 1.015631 0
- L3 0 0.031250 9.712203 1.015631 0 9.712202 0.265631 0
- L3 0 0.031250 9.712202 0.265631 0 10.087202 0.265630 0
- L3 0 0.031250 10.087202 0.265630 0 10.087204 1.640630 0
- L3 0 0.031250 13.024702 0.015626 0 13.399702 0.015625 0
- L3 0 0.031250 13.399702 0.015626 0 13.399702 0.265626 0
- L3 0 0.031250 13.399702 0.265626 0 13.337202 0.265626 0
- L3 0 0.031250 13.024702 0.265626 0 13.024702 0.015626 0
- L3 8421504 0.010417 10.337204 1.640630 0 10.337204 1.890630 0
- L3 8421504 0.010417 10.274704 1.640630 0 10.274704 1.890630 0
- L3 8421504 0.010417 10.212204 1.640630 0 10.212204 1.890630 0
- L3 8421504 0.010417 10.149704 1.640630 0 10.149704 1.890630 0
- L3 8421504 0.010417 10.087204 1.640630 0 10.087204 1.890630 0
- L3 8421504 0.010417 10.024704 1.578130 0 9.774704 1.578131 0
- L3 8421504 0.010417 9.774704 1.515631 0 10.024704 1.515630 0
- L3 8421504 0.010417 10.024704 1.453130 0 9.774704 1.453131 0
- L3 8421504 0.010417 9.774703 1.390631 0 10.024703 1.390630 0
- L3 8421504 0.010417 10.024703 1.328130 0 9.774703 1.328131 0
- L3 8421504 0.010417 9.774703 1.265631 0 10.024703 1.265630 0
- L3 8421504 0.010417 10.024703 1.203130 0 9.774703 1.203131 0
- L3 8421504 0.010417 9.774703 1.140631 0 10.024703 1.140630 0
- L3 8421504 0.010417 10.024703 1.078130 0 9.774703 1.078131 0
- L3 8421504 0.010417 9.774703 1.015631 0 10.024703 1.015630 0
- L3 8421504 0.010417 10.024703 0.953130 0 9.774703 0.953131 0
- L3 8421504 0.010417 9.774703 0.890631 0 10.024703 0.890630 0
- L3 8421504 0.010417 10.024703 0.828130 0 9.774703 0.828131 0
- L3 8421504 0.010417 9.774703 0.765631 0 10.024703 0.765630 0
- L3 8421504 0.010417 9.774703 0.703131 0 10.024703 0.703130 0
- L3 8421504 0.010417 9.774702 0.640631 0 10.024702 0.640630 0
- L3 8421504 0.010417 9.774702 0.578131 0 10.024702 0.578130 0
- L3 8421504 0.010417 9.774702 0.515631 0 10.024702 0.515630 0
- L3 8421504 0.010417 9.774702 0.453131 0 10.024702 0.453130 0
- L3 8421504 0.010417 12.524711 6.765627 0 12.524711 7.015627 0
- L3 8421504 0.010417 10.774711 6.765629 0 10.774711 7.015629 0
- L3 8421504 0.010417 10.774704 1.515629 0 10.774703 1.265629 0
- L3 8421504 0.010417 12.524704 1.515627 0 12.524703 1.265627 0
- L3 0 0.031250 13.337202 0.140626 0 13.087202 0.140626 0
- L3 0 0.031250 13.087202 0.265626 0 13.024702 0.265626 0
- L3 8421504 0.010417 13.087204 1.578126 0 13.337204 1.578126 0
- L3 8421504 0.010417 13.087204 1.515626 0 13.337204 1.515626 0
- L3 8421504 0.010417 13.087204 1.453126 0 13.337204 1.453126 0
- L3 8421504 0.010417 13.087203 1.390626 0 13.337203 1.390626 0
- L3 8421504 0.010417 13.087203 1.328126 0 13.337203 1.328126 0
- L3 8421504 0.010417 13.087203 1.265626 0 13.337203 1.265626 0
- L3 8421504 0.010417 13.087203 1.203126 0 13.337203 1.203126 0
- L3 8421504 0.010417 13.087203 1.140626 0 13.337203 1.140626 0
- L3 8421504 0.010417 13.087203 1.078126 0 13.274703 1.078126 0
- L3 8421504 0.010417 13.274703 1.078126 0 13.337203 1.078126 0
- L3 8421504 0.010417 13.087203 1.015626 0 13.337203 1.015626 0
- L3 8421504 0.010417 13.087203 0.953126 0 13.337203 0.953126 0
- L3 8421504 0.010417 13.087203 0.890626 0 13.337203 0.890626 0
- L3 8421504 0.010417 13.087203 0.828126 0 13.337203 0.828126 0
- L3 8421504 0.010417 13.087203 0.765626 0 13.337203 0.765626 0
- L3 8421504 0.010417 13.087203 0.703126 0 13.337203 0.703126 0
- L3 8421504 0.010417 13.087202 0.640626 0 13.337202 0.640626 0
- L3 8421504 0.010417 13.087202 0.578126 0 13.337202 0.578126 0
- L3 8421504 0.010417 13.337202 0.515626 0 13.087202 0.515626 0
- L3 8421504 0.010417 13.087202 0.453126 0 13.337202 0.453126 0
- L3 8421504 0.010417 13.337202 0.390626 0 13.087202 0.390626 0
- L3 8421504 0.010417 13.087202 0.328126 0 13.337202 0.328126 0
- L3 8421504 0.010417 13.337202 0.265626 0 13.087202 0.265626 0
- L3 8421504 0.010417 13.087202 0.203126 0 13.337202 0.203126 0
- L3 8421504 0.010417 8.774704 1.703132 0 10.024704 1.703130 0
- L3 8421504 0.010417 8.774704 1.828132 0 10.024704 1.828130 0
- L3 8421504 0.010417 8.774704 1.765632 0 10.024704 1.765630 0
- L3 8421504 0.010417 13.337204 1.828126 0 10.399704 1.828130 0
- L3 8421504 0.010417 10.399704 1.765630 0 13.337204 1.765626 0
- L3 8421504 0.010417 10.399704 1.703130 0 13.337204 1.703126 0
- END
-STRUCTURE N "Walthers Cornerstone Structure Western (coal) Flood Loader 933-3247"
- G3 0 0.000000 0.000000 1.328484 1.328484 0
- G3 15132390 0.000000 1.359734 1.359734 1.359734 0
- F3 8421504 0.000000 4
- 2.375359 1.812859 0
- 1.562859 1.812859 0
- 1.562859 0.844109 0
- 2.375359 0.844109 0
- L3 0 0.000000 1.937859 1.812859 0 1.937859 0.844109 0
- F3 0 0.000000 4
- 18.984734 0.797234 0
- 18.953484 0.797234 0
- 18.953484 0.797234 0
- 18.984734 0.797234 0
- F3 12632256 0.000000 4
- 19.015984 0.797234 0
- 17.984734 0.797234 0
- 17.984734 1.797234 0
- 19.015984 1.797234 0
- L3 0 0.000000 2.672234 1.078484 0 17.953484 1.078484 0
- L3 0 0.000000 17.953484 1.078484 0 17.953484 1.547234 0
- L3 0 0.000000 17.953484 1.547234 0 2.672234 1.547234 0
- L3 0 0.000000 2.672234 1.547234 0 2.672234 1.078484 0
- A3 0 0.000000 1.244127 1.344109 1.359734 0 0.000000 360.000000
- G3 0 0.000000 0.064424 1.734734 1.156609 0
- G3 8421504 0.000000 0.104816 0.547234 1.406609 0
- F3 8421504 0.000000 4
- 2.703484 1.359734 0
- 17.953484 1.359734 0
- 17.953484 1.203484 0
- 2.703484 1.203484 0
- END
-STRUCTURE N "Walther's Cornerstone Structures New River Mine Tipple 933-3221"
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 5.000000 0.000000 0
- 5.000000 5.000000 0
- 0.000000 5.000000 0
- L3 0 0.000000 2.437500 5.000000 0 2.437500 0.000000 0
- L3 0 0.000000 1.125000 0.000000 0 1.125000 4.984375 0
- L3 0 0.000000 2.437500 2.500000 0 4.984375 2.500000 0
- END
-STRUCTURE N "Walther's Cornerstone Structures New River Mine Conveyor 933-3221"
- F3 12632256 0.000000 4
- 3.000000 0.000000 0
- 0.000000 0.000000 0
- 0.000000 2.562500 0
- 3.000000 2.562500 0
- F3 8421504 0.000000 4
- 1.250000 2.562500 0
- 1.750000 2.562500 0
- 1.750000 2.875000 0
- 1.250000 2.875000 0
- L3 0 0.000000 0.000000 0.000000 0 3.000000 0.000000 0
- L3 0 0.000000 3.000000 0.000000 0 3.000000 2.562500 0
- L3 0 0.000000 3.000000 2.562500 0 0.000000 2.562500 0
- L3 0 0.000000 0.000000 2.562500 0 0.000000 0.000000 0
- L3 0 0.000000 1.500000 2.562500 0 1.500000 0.015625 0
- L3 0 0.000000 0.000000 1.500000 0 2.984375 1.515625 0
- END
-STRUCTURE N "Walther's Cornerstone Structures New River Mine Track Coaling Bldg. 933-3221"
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 4.125000 0.000000 0
- 4.125000 1.625000 0
- 0.000000 1.625000 0
- L3 0 0.000000 0.000000 0.812500 0 4.093750 0.796875 0
- END
-STRUCTURE N "Walthers Cornerstone Structures Coal Bunkers 933-3246A"
- F3 8421504 0.000000 4
- 0.000000 0.000000 0
- 4.812500 0.000000 0
- 4.812500 1.875000 0
- 0.000000 1.875000 0
- G3 13289984 0.000000 0.500244 0.781250 0.875000 0
- G3 13289984 0.000000 0.500244 2.025219 0.868969 0
- G3 13289984 0.000000 0.500244 4.025219 0.853344 0
- F3 10309376 0.000000 4
- 2.625000 1.500000 0
- 3.375000 1.500000 0
- 3.375000 0.250000 0
- 2.625000 0.250000 0
- END
-STRUCTURE N "Walthers Cornerstone Structures Oil Tanks 933-3246B"
- G3 0 0.000000 0.375000 0.375000 0.375000 0
- G3 0 0.000000 0.375000 1.306225 0.384350 0
- END
-STRUCTURE N "Walthers Cornerstone Structures Office/Scalehouse 933-3246C"
- F3 32768 0.000000 4
- 0.000000 0.187500 0
- 2.562500 0.187500 0
- 2.562500 1.437500 0
- 0.000000 1.437500 0
- F3 32768 0.000000 4
- 0.000000 1.734375 0
- 0.859375 1.734375 0
- 0.859375 1.437500 0
- 0.000000 1.437500 0
- L3 0 0.000000 0.375000 0.875000 0 2.062500 0.875000 0
- L3 0 0.000000 2.062500 0.875000 0 2.546875 1.437500 0
- L3 0 0.000000 2.062500 0.875000 0 2.531250 0.187500 0
- L3 0 0.000000 0.000000 1.437500 0 0.843750 1.437500 0
- L3 0 0.000000 0.359375 0.875000 0 0.000000 1.437500 0
- L3 0 0.000000 0.359375 0.875000 0 0.000000 0.187500 0
- F3 12632256 0.000000 4
- 1.000000 0.187500 0
- 1.375000 0.187500 0
- 1.375000 0.000000 0
- 1.000000 0.000000 0
- L3 0 0.000000 0.437500 0.625000 0 0.625000 0.625000 0
- L3 0 0.000000 0.437500 0.625000 0 0.218750 0.203125 0
- L3 0 0.000000 0.593750 0.625000 0 0.718750 0.187500 0
- L3 0 0.000000 1.890625 0.625000 0 2.078125 0.625000 0
- L3 0 0.000000 1.875000 0.625000 0 1.734375 0.187500 0
- L3 0 0.000000 2.062500 0.640625 0 2.203125 0.203125 0
- END
-STRUCTURE N "Walthers Cornerstone Structures Pump House 933-3246D"
- F3 32768 0.000000 4
- 0.000000 0.125000 0
- 0.812500 0.125000 0
- 0.812500 0.687500 0
- 0.000000 0.687500 0
- F3 12632256 0.000000 4
- 0.265625 0.125000 0
- 0.531250 0.125000 0
- 0.531250 0.000000 0
- 0.265625 0.000000 0
- END
-
-SUBCONTENTS Walthers Cornerstone N Structures - Grain Industries
-STRUCTURE N "Walthers Red Wing Milling Co 933-3212"
- L 0 0 4.500000 0.000000 4.500000 0.375000
- L 0 0 6.625000 0.375000 4.500000 0.375000
- L 0 0 6.625000 4.875000 2.062500 4.875000
- L 0 0 2.062500 4.875000 2.062500 4.500000
- L 0 0 2.062500 4.437500 0.000000 4.437500
- L 0 0 0.375000 0.750000 3.250000 0.750000
- L 0 0 3.250000 0.750000 3.250000 1.625000
- L 0 0 3.250000 1.625000 0.375000 1.625000
- L 0 0 0.375000 1.625000 0.375000 0.750000
- L 0 0 3.062500 1.437500 2.625000 1.437500
- L 0 0 2.625000 1.437500 2.625000 1.062500
- L 0 0 2.625000 1.062500 3.062500 1.062500
- L 0 0 3.062500 1.062500 3.062500 1.437500
- L 0 0 4.500000 0.000000 4.500000 -0.687500
- L 0 0 4.500000 -0.687500 2.000000 -0.687500
- L 0 0 2.000000 -0.687500 2.000000 0.375000
- L 0 0 2.000000 0.375000 0.000000 0.375000
- L 0 0 4.500000 0.375000 2.000000 0.375000
- L 0 0 2.000000 0.000000 0.000000 0.000000
- L 0 0 2.250000 0.375000 2.250000 -0.062500
- L 0 0 2.250000 -0.062500 4.062500 -0.062500
- L 0 0 4.062500 -0.062500 4.062500 0.375000
- A 0 0 0.139754 3.187500 0.125000 0.000000 360.000000
- A 0 0 0.139754 3.812500 0.125000 0.000000 360.000000
- A 0 0 0.139754 2.625000 0.125000 0.000000 360.000000
- A 0 0 0.062500 3.812500 0.125000 0.000000 360.000000
- A 0 0 0.062500 3.187500 0.125000 0.000000 360.000000
- A 0 0 0.000000 2.625000 0.125000 0.000000 360.000000
- A 0 0 0.062500 2.625000 0.125000 0.000000 360.000000
- L 0 0 6.625000 4.875000 6.625000 0.375000
- L 0 0 2.062500 4.437500 6.625000 4.437500
- L 0 4 2.937500 -0.062500 2.937500 -0.562500
- L 0 4 1.312500 0.375000 1.312500 -0.062500
- L 0 0 0.000000 4.437500 0.000000 4.437500
- L 0 0 0.000000 4.437500 0.000000 0.000000
- END
-STRUCTURE N "Walthers ADM Grain Elevator 933-3225"
- L 0 0 8.125000 5.875000 3.625000 5.875000
- L 0 0 8.125000 0.000000 5.000000 0.000000
- L 0 0 5.000000 0.000000 5.000000 4.187500
- L 0 0 8.125000 4.187500 3.625000 4.187500
- L 0 0 3.625000 5.875000 3.625000 4.187500
- L 0 0 5.000000 1.562500 8.125000 1.562500
- L 0 0 7.312500 4.187500 7.312500 1.562500
- L 0 0 5.625000 4.187500 5.625000 1.562500
- L 0 0 8.125000 3.750000 7.625000 3.750000
- L 0 0 7.625000 3.750000 7.625000 3.250000
- L 0 0 7.625000 3.250000 8.125000 3.250000
- L 0 0 7.625000 2.375000 8.125000 2.375000
- L 0 0 8.125000 5.875000 8.125000 0.000000
- A 0 0 0.197642 7.875000 3.500000 0.000000 360.000000
- A 0 0 0.197642 7.875000 2.125000 0.000000 360.000000
- L 0 0 8.125000 1.875000 7.625000 1.875000
- L 0 0 7.625000 2.375000 7.625000 1.875000
- A 0 0 0.125000 7.875000 3.500000 0.000000 360.000000
- A 0 0 0.125000 7.875000 2.125000 0.000000 360.000000
- A 0 0 0.062500 6.437500 3.750000 0.000000 360.000000
- A 0 0 0.062500 6.437500 3.250000 0.000000 360.000000
- A 0 0 0.062500 6.437500 2.375000 0.000000 360.000000
- A 0 0 0.062500 6.437500 1.937500 0.000000 360.000000
- A 0 0 0.625000 4.375000 3.500000 270.000000 180.000000
- L 0 0 3.750000 3.500000 3.750000 3.500000
- A 0 0 0.625000 3.125000 3.500000 270.000000 180.000000
- A 0 0 0.625000 1.875000 3.500000 270.000000 180.000000
- A 0 0 0.620066 0.629934 3.500000 246.222684 203.777316
- A 0 0 0.625000 4.375000 2.250000 90.000000 180.000000
- A 0 0 0.625000 3.125000 2.250000 90.000000 180.000000
- A 0 0 0.625000 1.875000 2.250000 90.000000 180.000000
- A 0 0 0.620066 0.629934 2.250000 90.000000 203.777316
- L 0 0 5.000000 2.875000 0.062500 2.875000
- L 0 0 0.062500 2.875000 0.062500 3.375000
- L 0 0 0.062500 3.375000 4.937500 3.375000
- L 0 0 0.062500 2.875000 0.062500 2.375000
- L 0 0 0.062500 2.375000 5.000000 2.375000
- END
-
-
-SUBCONTENTS Walthers Cornerstone N Structures - Engine Servicing Structures
-STRUCTURE N "Walthers Modern Coaling Tower 933-3262"
- F3 8421504 0.000000 4
- 0.000000 4.171875 0
- 1.250000 4.171875 0
- 1.250000 1.046875 0
- 0.000000 1.046875 0
- F3 8421504 0.000000 4
- 2.000000 1.109375 0
- 5.000000 1.109375 0
- 5.000000 4.109375 0
- 2.000000 4.109375 0
- F3 8421504 0.000000 4
- 2.000000 2.125000 0
- 1.250000 2.125000 0
- 1.250000 3.125000 0
- 2.000000 3.125000 0
- L3 0 0.000000 0.625000 1.062500 0 0.625000 4.187500 0
- L3 0 0.000000 1.250000 3.125000 0 1.250000 2.125000 0
- L3 0 0.000000 2.000000 3.125000 0 5.000000 3.125000 0
- L3 0 0.000000 2.000000 2.125000 0 5.000000 2.125000 0
- L3 0 0.000000 3.500000 1.125000 0 3.500000 2.125000 0
- L3 0 0.000000 3.500000 3.125000 0 3.500000 4.125000 0
- L3 0 0.000000 2.000000 3.125000 0 2.000000 2.125000 0
- L3 0 0.000000 2.750000 3.125000 0 2.750000 2.125000 0
- L3 0 0.000000 2.375000 2.125000 0 2.375000 3.125000 0
- L3 0 0.000000 4.859375 4.125000 0 4.625000 4.125000 0
- L3 0 0.000000 4.625000 4.125000 0 4.625000 5.250000 0
- L3 0 0.000000 4.625000 5.250000 0 4.859375 5.250000 0
- L3 0 0.000000 4.859375 5.250000 0 4.859375 4.125000 0
- L3 0 0.000000 4.875000 0.000000 0 4.625000 0.000000 0
- L3 0 0.000000 4.625000 0.000000 0 4.625000 1.109375 0
- L3 0 0.000000 4.625000 1.109375 0 4.875000 1.109375 0
- L3 0 0.000000 4.875000 1.109375 0 4.875000 0.000000 0
- L3 0 0.000000 2.000000 0.000000 0 1.750000 0.000000 0
- L3 0 0.000000 1.750000 0.000000 0 1.750000 2.156250 0
- L3 0 0.000000 1.750000 2.156250 0 2.000000 2.156250 0
- L3 0 0.000000 2.000000 2.156250 0 2.000000 0.000000 0
- L3 0 0.000000 4.625000 4.250000 0 4.843750 4.250000 0
- L3 0 0.000000 4.625000 4.375000 0 4.859375 4.375000 0
- L3 0 0.000000 4.625000 4.500000 0 4.875000 4.500000 0
- L3 0 0.000000 4.625000 4.625000 0 4.859375 4.625000 0
- L3 0 0.000000 4.625000 4.750000 0 4.875000 4.750000 0
- L3 0 0.000000 4.625000 4.875000 0 4.859375 4.875000 0
- L3 0 0.000000 4.625000 5.000000 0 4.859375 5.000000 0
- L3 0 0.000000 4.625000 5.125000 0 4.843750 5.125000 0
- L3 0 0.000000 4.625000 5.250000 0 4.859375 5.250000 0
- L3 0 0.000000 4.625000 0.000000 0 4.875000 0.000000 0
- L3 0 0.000000 4.625000 0.125000 0 4.875000 0.125000 0
- L3 0 0.000000 4.625000 0.250000 0 4.875000 0.250000 0
- L3 0 0.000000 4.625000 0.375000 0 4.859375 0.375000 0
- L3 0 0.000000 4.640625 0.500000 0 4.859375 0.500000 0
- L3 0 0.000000 4.625000 0.625000 0 4.859375 0.625000 0
- L3 0 0.000000 4.640625 0.875000 0 4.859375 0.875000 0
- L3 0 0.000000 4.625000 0.750000 0 4.875000 0.750000 0
- L3 0 0.000000 4.625000 1.000000 0 4.875000 1.000000 0
- L3 0 0.000000 1.750000 0.000000 0 2.000000 0.000000 0
- L3 0 0.000000 1.750000 0.125000 0 2.000000 0.125000 0
- L3 0 0.000000 1.750000 0.250000 0 2.000000 0.250000 0
- L3 0 0.000000 1.750000 0.375000 0 2.015625 0.375000 0
- L3 0 0.000000 1.750000 0.500000 0 2.000000 0.500000 0
- L3 0 0.000000 1.750000 1.000000 0 2.000000 1.000000 0
- L3 0 0.000000 1.750000 0.875000 0 2.000000 0.875000 0
- L3 0 0.000000 1.750000 0.625000 0 2.000000 0.625000 0
- L3 0 0.000000 1.750000 0.750000 0 2.000000 0.750000 0
- L3 0 0.000000 1.750000 2.000000 0 2.000000 2.000000 0
- L3 0 0.000000 1.750000 1.875000 0 2.000000 1.875000 0
- L3 0 0.000000 1.750000 1.750000 0 1.984375 1.750000 0
- L3 0 0.000000 1.750000 1.625000 0 1.968750 1.625000 0
- L3 0 0.000000 1.750000 1.500000 0 1.968750 1.500000 0
- L3 0 0.000000 1.750000 1.375000 0 1.984375 1.375000 0
- L3 0 0.000000 1.750000 1.250000 0 1.984375 1.250000 0
- L3 0 0.000000 1.750000 1.125000 0 1.984375 1.125000 0
- END
-STRUCTURE N "Walthers Modern Coaling Tower Office 933-3262"
- F3 8421504 0.000000 4
- 0.000000 2.000000 0
- 0.750000 2.000000 0
- 0.750000 0.250000 0
- 0.000000 0.250000 0
- F3 12632256 0.000000 4
- 0.125000 0.250000 0
- 0.625000 0.250000 0
- 0.625000 0.000000 0
- 0.125000 0.000000 0
- END
-STRUCTURE N "Walthers Shady Jct Water Tower 933-3205a"
- L 0 0 0.000000 0.000000 1.562500 0.000000
- L 0 0 1.562500 0.000000 1.562500 1.562500
- L 0 0 1.562500 1.562500 0.000000 1.562500
- L 0 0 0.000000 1.562500 0.000000 0.000000
- L 0 0 0.000000 0.375000 1.250000 0.375000
- L 0 0 1.250000 0.375000 1.250000 1.562500
- L 0 0 0.625000 1.000000 0.625000 0.375000
- L 0 0 0.625000 1.000000 1.250000 1.000000
- L 0 0 0.625000 1.000000 0.000000 1.000000
- L 0 0 0.625000 1.000000 0.625000 1.562500
- L 0 0 0.625000 1.000000 1.062500 1.437500
- L 0 0 0.625000 1.000000 1.062500 0.562500
- L 0 0 0.625000 1.000000 0.187500 0.562500
- L 0 0 0.625000 1.000000 0.187500 1.437500
- L 0 0 0.625000 1.562500 1.062500 1.437500
- L 0 0 1.062500 1.437500 1.250000 1.000000
- L 0 0 1.250000 1.000000 1.062500 0.562500
- L 0 0 1.062500 0.562500 0.625000 0.375000
- L 0 0 0.625000 0.375000 0.187500 0.562500
- L 0 0 0.187500 0.562500 0.000000 1.000000
- L 0 0 0.000000 1.000000 0.187500 1.437500
- L 0 0 0.187500 1.437500 0.625000 1.562500
- L 0 0 1.250000 1.500000 1.750000 1.500000
- L 0 0 1.750000 1.500000 1.750000 1.062500
- L 0 0 1.750000 1.062500 1.250000 1.062500
- END
-STRUCTURE N "Walthers Shady Jct Interlocking Tower 933-3205b"
- L 0 0 0.000000 0.000000 1.500000 0.000000
- L 0 0 1.500000 0.000000 1.500000 1.000000
- L 0 0 1.500000 1.000000 0.000000 1.000000
- L 0 0 0.000000 1.000000 0.000000 0.000000
- L 0 0 0.125000 0.062500 1.125000 0.062500
- L 0 0 1.125000 0.062500 1.125000 0.625000
- L 0 0 1.125000 0.625000 0.125000 0.625000
- L 0 0 0.125000 0.625000 0.125000 0.062500
- L 0 0 0.250000 0.625000 0.250000 0.062500
- L 0 0 0.250000 0.312500 1.125000 0.312500
- END
-STRUCTURE N "Walthers Shady Jct Xing Shanty 933-3205c"
- L 0 0 0.000000 0.000000 1.000000 0.000000
- L 0 0 1.000000 0.000000 1.000000 0.750000
- L 0 0 1.000000 0.750000 0.000000 0.750000
- L 0 0 0.000000 0.750000 0.000000 0.000000
- L 0 0 0.000000 0.375000 1.000000 0.375000
- L 0 0 0.750000 0.750000 0.750000 0.937500
- L 0 0 0.750000 0.937500 0.250000 0.937500
- L 0 0 0.250000 0.937500 0.250000 0.750000
- L 0 0 0.125000 0.000000 0.125000 -0.062500
- L 0 0 0.125000 -0.062500 0.375000 -0.062500
- L 0 0 0.375000 -0.062500 0.375000 0.000000
- END
-STRUCTURE N "Walthers Shady Jct Water Crane 933-3205d"
- L 0 0 0.000000 0.000000 0.500000 0.000000
- L 0 0 0.500000 0.000000 0.500000 1.125000
- L 0 0 0.500000 1.125000 0.000000 1.125000
- L 0 0 0.000000 1.125000 0.000000 0.000000
- A 0 0 0.000000 0.250000 0.937500 0.000000 360.000000
- A 0 0 0.062500 0.250000 0.937500 0.000000 360.000000
- L 0 0 0.312500 0.875000 0.312500 0.187500
- L 0 0 0.187500 0.875000 0.187500 0.187500
- L 0 0 0.187500 0.187500 0.312500 0.187500
- END
-STRUCTURE N "Walthers 2-Stall Engine House 933-3204"
- L 0 0 0.000000 0.000000 7.625000 0.000000
- L 0 0 7.625000 0.000000 7.625000 3.250000
- L 0 0 7.625000 3.250000 0.000000 3.250000
- L 0 0 0.000000 3.250000 0.000000 0.000000
- L 0 0 0.000000 1.625000 7.625000 1.625000
- L 0 0 0.000000 2.000000 7.625000 2.000000
- L 0 0 0.000000 1.250000 7.625000 1.250000
- A 0 0 0.225347 6.625000 0.875000 0.000000 360.000000
- A 0 0 0.139754 6.625000 0.875000 0.000000 360.000000
- A 0 0 0.225347 1.000000 0.875000 0.000000 360.000000
- A 0 0 0.139754 1.000000 0.875000 0.000000 360.000000
- A 0 0 0.225347 1.000000 2.375000 0.000000 360.000000
- A 0 0 0.139754 1.000000 2.375000 0.000000 360.000000
- A 0 0 0.225347 6.625000 2.375000 0.000000 360.000000
- A 0 0 0.139754 6.625000 2.375000 0.000000 360.000000
- END
-STRUCTURE N "Walthers Union City Roundhouse 933-3202"
- L3 32768 0.041667 5.145877 13.802068 0 0.020877 8.489568 0
- L3 32768 0.020833 2.645877 4.583318 0 9.489627 7.427068 0
- L3 32768 0.020833 1.989627 6.020818 0 8.333377 9.708318 0
- L3 32768 0.020833 1.114627 7.302068 0 6.927127 11.770818 0
- L3 32768 0.020833 3.177127 3.052068 0 10.302127 5.020818 0
- L3 32768 0.020833 3.489627 1.583318 0 10.770877 2.520818 0
- A3 32768 0.041667 19.375000 -8.385373 0.020818 0 44.474403 45.525597
- A3 32768 0.041667 12.000000 -8.385373 0.020818 0 44.468552 45.531448
- L3 32768 0.020833 10.927127 0.020818 0 3.552127 0.020818 0
- A3 32768 0.041667 15.875123 -8.385373 0.020818 0 44.521254 45.478746
- A3 32768 0.020833 13.937535 -8.385373 0.020818 0 44.443785 45.556215
- A3 32768 0.020833 17.687500 -8.385373 0.020818 0 44.498085 45.501915
- A3 32768 0.020833 17.687500 -8.385373 0.020818 0 44.354681 45.645319
- L3 32768 0.020833 5.034001 9.576799 0 5.582656 8.740751 0
- L3 32768 0.020833 5.582656 8.740751 0 4.537595 8.054932 0
- L3 32768 0.020833 4.537595 8.054932 0 3.988940 8.890980 0
- L3 32768 0.020833 3.988940 8.890980 0 5.034001 9.576799 0
- L3 32768 0.020833 6.418694 3.458403 0 7.646536 3.692722 0
- L3 32768 0.020833 7.646536 3.692722 0 7.833991 2.710449 0
- L3 32768 0.020833 7.833991 2.710449 0 6.606150 2.476130 0
- L3 32768 0.020833 6.606150 2.476130 0 6.418694 3.458403 0
- L3 32768 0.020833 5.875673 5.347717 0 7.056088 5.758959 0
- L3 32768 0.020833 7.056088 5.758959 0 7.385081 4.814627 0
- L3 32768 0.020833 7.385081 4.814627 0 6.204666 4.403385 0
- L3 32768 0.020833 6.204666 4.403385 0 5.875673 5.347717 0
- L3 32768 0.020833 5.020321 7.205801 0 6.121503 7.797323 0
- L3 32768 0.020833 6.121503 7.797323 0 6.594721 6.916378 0
- L3 32768 0.020833 6.594721 6.916378 0 5.493539 6.324856 0
- L3 32768 0.020833 5.493539 6.324856 0 5.020321 7.205801 0
- L3 32768 0.020833 2.770605 10.537748 0 3.628429 11.265596 0
- L3 32768 0.020833 3.628429 11.265596 0 4.275405 10.503086 0
- L3 32768 0.020833 4.275405 10.503086 0 3.417581 9.775238 0
- L3 32768 0.020833 3.417581 9.775238 0 2.770605 10.537748 0
- L3 32768 0.020833 6.733693 1.499074 0 7.979845 1.597084 0
- L3 32768 0.020833 7.979845 1.597084 0 8.058253 0.600163 0
- L3 32768 0.020833 8.058253 0.600163 0 6.812101 0.502152 0
- L3 32768 0.020833 6.812101 0.502152 0 6.733693 1.499074 0
- A3 32768 0.020833 0.176777 10.114627 1.177068 0 0.000000 360.000000
- A3 32768 0.020833 0.176777 9.832015 3.613195 0 0.000000 360.000000
- A3 32768 0.020833 0.176777 4.175765 2.456945 0 0.000000 360.000000
- A3 32768 0.020833 0.176777 3.769515 4.081945 0 0.000000 360.000000
- A3 32768 0.020833 0.176777 3.113265 5.675695 0 0.000000 360.000000
- A3 32768 0.020833 0.176777 2.269515 7.144445 0 0.000000 360.000000
- A3 32768 0.020833 0.176777 1.238265 8.456945 0 0.000000 360.000000
- A3 32768 0.020833 0.176777 9.207015 5.956945 0 0.000000 360.000000
- A3 32768 0.020833 0.176777 8.269515 8.238195 0 0.000000 360.000000
- A3 32768 0.020833 0.176777 5.550765 12.300695 0 0.000000 360.000000
- A3 32768 0.020833 0.176777 4.394515 0.863195 0 0.000000 360.000000
- A3 32768 0.020833 0.176777 7.050765 10.331945 0 0.000000 360.000000
- END
-STRUCTURE N "Walther's Cornerstone Structure Backshop 933-3227"
- F3 12632256 0.000000 4
- 0.000000 7.000000 0
- 0.000009 0.000000 0
- 5.250009 0.000007 0
- 5.250000 7.000007 0
- F3 8388608 0.000000 4
- 5.250000 7.000007 0
- 5.250000 6.875007 0
- 0.000000 6.875000 0
- 0.000000 7.000000 0
- F3 8388608 0.000000 4
- 5.250000 7.000007 0
- 5.250009 0.000007 0
- 5.125009 0.000007 0
- 5.125000 7.000007 0
- F3 8388608 0.000000 4
- 0.000009 0.000000 0
- 0.000009 0.125000 0
- 5.250009 0.125007 0
- 5.250009 0.000007 0
- F3 8388608 0.000000 4
- 0.000000 7.000000 0
- 0.000009 0.000000 0
- 0.125009 0.000000 0
- 0.125000 7.000000 0
- F3 8388608 0.000000 4
- 5.156251 6.390632 0
- 5.156250 6.890632 0
- 4.859375 6.890631 0
- 4.859376 6.390631 0
- F3 8388608 0.000000 4
- 0.125001 6.406250 0
- 0.125000 6.906250 0
- 0.500000 6.906251 0
- 0.500001 6.406251 0
- F3 8388608 0.000000 4
- 0.125008 0.656250 0
- 0.125009 0.093750 0
- 0.500009 0.093751 0
- 0.500008 0.656251 0
- F3 8388608 0.000000 4
- 5.156258 0.656257 0
- 5.156259 0.109382 0
- 4.859384 0.109381 0
- 4.859383 0.656256 0
- F3 8388608 0.000000 4
- 0.140629 3.750000 0
- 0.140630 3.265625 0
- 0.515630 3.265626 0
- 0.515629 3.750001 0
- F3 8388608 0.000000 4
- 5.171879 3.750007 0
- 5.171880 3.265632 0
- 4.875005 3.265631 0
- 4.875004 3.750006 0
- END
-STRUCTURE N "Walther's Cornerstone Structure Yard Office 933-3822"
- F3 8421504 0.000000 4
- 0.000000 0.375000 0
- 2.875000 0.375000 0
- 2.875000 2.625000 0
- 0.000000 2.625000 0
- F3 12632256 0.000000 4
- 2.750000 0.406250 0
- 2.375000 0.406250 0
- 2.375000 0.000000 0
- 2.750000 0.000000 0
- F3 12632256 0.000000 4
- 1.000000 0.359375 0
- 1.390625 0.359375 0
- 1.390625 0.000000 0
- 1.000000 0.000000 0
- L3 0 0.000000 1.000000 0.125000 0 1.375000 0.125000 0
- L3 0 0.000000 1.000000 0.250000 0 1.375000 0.250000 0
- L3 0 0.000000 1.000000 0.375000 0 1.406250 0.375000 0
- L3 0 0.000000 2.375000 0.375000 0 2.750000 0.375000 0
- L3 0 0.000000 2.375000 0.250000 0 2.734375 0.250000 0
- L3 0 0.000000 2.375000 0.125000 0 2.750000 0.125000 0
- F3 12632256 0.000000 4
- 0.250000 2.625000 0
- 1.500000 2.625000 0
- 1.500000 3.250000 0
- 0.250000 3.250000 0
- F3 12632256 0.000000 4
- 0.375000 3.250000 0
- 1.000000 3.250000 0
- 1.000000 3.484375 0
- 0.375000 3.484375 0
- F3 12632256 0.000000 4
- 0.500000 3.500000 0
- 0.843750 3.500000 0
- 0.843750 4.000000 0
- 0.500000 4.000000 0
- L3 0 0.000000 0.375000 3.250000 0 1.015625 3.250000 0
- L3 0 0.000000 0.500000 3.500000 0 0.843750 3.500000 0
- F3 8388608 0.000000 4
- 0.000000 2.625000 0
- 0.062500 2.625000 0
- 0.062500 0.375000 0
- 0.000000 0.375000 0
- F3 8388608 0.000000 4
- 0.000000 0.375000 0
- 2.859375 0.375000 0
- 2.859375 0.453125 0
- 0.000000 0.453125 0
- F3 8388608 0.000000 4
- 2.859375 0.375000 0
- 2.781250 0.375000 0
- 2.781250 2.625000 0
- 2.859375 2.625000 0
- F3 12632256 0.000000 4
- 0.250000 0.750000 0
- 0.437500 0.750000 0
- 0.437500 0.906250 0
- 0.250000 0.906250 0
- F3 12632256 0.000000 4
- 0.250000 2.312500 0
- 0.437500 2.312500 0
- 0.437500 2.125000 0
- 0.250000 2.125000 0
- F3 16777215 0.000000 4
- 1.250000 1.750000 0
- 1.500000 1.750000 0
- 1.500000 1.500000 0
- 1.250000 1.500000 0
- F3 0 0.000000 4
- 1.281250 1.703125 0
- 1.453125 1.703125 0
- 1.453125 1.562500 0
- 1.281250 1.562500 0
- G3 0 0.000000 0.078125 2.250000 1.687500 0
- END
-STRUCTURE N "Walthers Steel Water Tower B/U 933-2601"
- F3 0 0.000000 4
- 0.250000 0.000000 0
- 0.250000 0.000000 0
- 0.250000 0.000000 0
- 0.250000 0.000000 0
- F3 15395562 0.000000 9
- 0.250000 0.000000 0
- 0.250000 0.000000 0
- 1.750000 0.000000 0
- 2.000000 0.250000 0
- 2.000000 1.750000 0
- 1.750000 2.000000 0
- 0.250000 2.000000 0
- 0.000000 1.750000 0
- 0.015625 0.250000 0
- G3 8421504 0.000000 1.000000 1.000000 1.000000 0
- L3 0 0.000000 0.000000 1.000000 0 2.000000 1.000000 0
- L3 0 0.000000 1.000000 0.000000 0 1.000000 2.000000 0
- L3 0 0.000000 0.281250 1.687500 0 1.718750 0.343750 0
- L3 0 0.000000 0.328125 0.281250 0 1.656250 1.718750 0
- L3 0 0.000000 0.329669 1.758125 0 1.018693 1.033385 0
- L3 0 0.000000 0.239077 1.671997 0 0.928100 0.947257 0
- L3 0 0.000000 0.501925 1.576940 0 0.411333 1.490812 0
- L3 0 0.000000 0.588053 1.486347 0 0.497461 1.400220 0
- L3 0 0.000000 0.674181 1.395755 0 0.560940 1.288095 0
- L3 0 0.000000 0.748985 1.294397 0 0.647068 1.197503 0
- L3 0 0.000000 0.932565 1.123978 0 0.830648 1.027084 0
- L3 0 0.000000 1.018693 1.033385 0 0.928100 0.947257 0
- L3 0 0.000000 0.846437 1.214570 0 0.755844 1.128442 0
- L3 0 0.000000 0.415797 1.667532 0 0.325205 1.581404 0
- L3 0 0.000000 0.329669 1.758125 0 0.239077 1.671997 0
- END
-STRUCTURE N "Walthers Oil Column B/U 933-2601"
- F3 14803425 0.000000 4
- 0.000000 0.000000 0
- 0.500000 0.000000 0
- 0.500000 0.500000 0
- 0.000000 0.500000 0
- F3 0 0.000000 4
- 0.250000 0.281250 0
- 0.625000 0.281250 0
- 0.625000 0.218750 0
- 0.250000 0.218750 0
- END
-STRUCTURE N "Walthers Water Column B/U 933-2601"
- F3 14342874 0.000000 4
- 0.000000 0.000000 0
- 0.875000 0.000000 0
- 0.875000 0.500000 0
- 0.000000 0.500000 0
- F3 0 0.000000 4
- 0.250000 0.281250 0
- 1.000000 0.281250 0
- 1.000000 0.218750 0
- 0.250000 0.218750 0
- END
-STRUCTURE N "Walther's Trackside Interlocking Tower 933-2600A"
- F3 8421504 0.000000 4
- 0.015625 0.000000 0
- 1.265625 0.000000 0
- 1.265625 1.250000 0
- 0.015625 1.250000 0
- L3 0 0.000000 0.000000 0.000000 0 1.250000 1.250000 0
- L3 0 0.000000 1.250000 0.000000 0 0.015625 1.250000 0
- F3 12976128 0.000000 4
- 1.265625 1.250000 0
- 1.015625 1.250000 0
- 1.015625 2.000000 0
- 1.265625 2.000000 0
- F3 13369344 0.000000 4
- 1.015625 1.250000 0
- 0.015625 1.250000 0
- 0.015625 1.421875 0
- 1.015625 1.421875 0
- F3 15790320 0.000000 4
- 0.015625 0.750000 0
- 0.203125 0.750000 0
- 0.203125 0.500000 0
- 0.015625 0.500000 0
- F3 0 0.000000 4
- 0.046875 0.687500 0
- 0.140625 0.687500 0
- 0.140625 0.562500 0
- 0.046875 0.562500 0
- L3 0 0.000000 0.390625 1.250000 0 0.390625 1.437500 0
- L3 0 0.000000 1.015625 1.437500 0 1.265625 1.437500 0
- L3 0 0.000000 1.265625 1.437500 0 1.265625 1.250000 0
- L3 0 0.000000 1.265625 1.250000 0 1.015625 1.250000 0
- L3 0 0.000000 1.015625 1.250000 0 1.015625 1.437500 0
- L3 0 0.000000 1.015625 1.875000 0 1.250000 1.875000 0
- L3 0 0.000000 1.015625 1.750000 0 1.265625 1.750000 0
- L3 0 0.000000 1.015625 1.625000 0 1.265625 1.625000 0
- L3 0 0.000000 1.015625 1.500000 0 1.234375 1.500000 0
- L3 0 0.000000 0.515625 1.250000 0 0.515625 1.453125 0
- L3 0 0.000000 0.640625 1.250000 0 0.640625 1.453125 0
- L3 0 0.000000 0.765625 1.250000 0 0.765625 1.437500 0
- L3 0 0.000000 0.890625 1.250000 0 0.890625 1.453125 0
- END
-STRUCTURE N "Walther's Speeder Shed 933-2600B"
- F3 10724259 0.000000 4
- 0.000000 1.000000 0
- 1.125000 1.000000 0
- 1.125000 2.625000 0
- 0.000000 2.625000 0
- L3 0 0.000000 0.546875 1.000000 0 0.561380 2.625010 0
- F3 12632256 0.000000 4
- 0.171875 0.000000 0
- 0.921875 0.000000 0
- 0.921875 1.000000 0
- 0.171875 1.000000 0
- L3 0 0.000000 0.343750 0.000000 0 0.343750 1.000000 0
- L3 0 0.000000 0.750000 0.000000 0 0.750000 1.000000 0
- L3 0 0.000000 0.343750 0.125000 0 0.750000 0.125000 0
- L3 0 0.000000 0.328125 0.250000 0 0.750000 0.250000 0
- L3 0 0.000000 0.343750 0.375000 0 0.734375 0.375000 0
- L3 0 0.000000 0.343750 0.500000 0 0.765625 0.500000 0
- L3 0 0.000000 0.343750 0.625000 0 0.750000 0.625000 0
- L3 0 0.000000 0.343750 0.750000 0 0.750000 0.750000 0
- L3 0 0.000000 0.328125 0.875000 0 0.750000 0.875000 0
- END
-STRUCTURE N "Walther's Crossing Shanty 933-2600C"
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 0.625000 0.000000 0
- 0.625000 0.250000 0
- 0.000000 0.250000 0
- F3 11053224 0.000000 4
- 0.000000 0.250000 0
- 0.609375 0.250000 0
- 0.609375 0.750000 0
- 0.000000 0.750000 0
- L3 0 0.000000 0.000000 0.500000 0 0.609375 0.500000 0
- G3 0 0.000000 0.031250 0.187500 0.625000 0
- F3 16776960 0.000000 4
- 0.609375 0.656250 0
- 0.875000 0.656250 0
- 0.875000 0.296875 0
- 0.609375 0.296875 0
- L3 0 0.000000 0.609375 0.671875 0 0.859375 0.671875 0
- L3 0 0.000000 0.859375 0.671875 0 0.859375 0.281250 0
- L3 0 0.000000 0.859375 0.281250 0 0.609375 0.281250 0
- L3 0 0.000000 0.609375 0.281250 0 0.609375 0.671875 0
- END
-STRUCTURE N "Walther's Speeder 933-2600D"
- F3 16776960 0.000000 4
- 0.000000 0.000000 0
- 0.500000 0.000000 0
- 0.500000 0.375000 0
- 0.000000 0.375000 0
- L3 0 0.000000 0.000000 0.000000 0 0.500000 0.000000 0
- L3 0 0.000000 0.500000 0.000000 0 0.500000 0.375000 0
- L3 0 0.000000 0.500000 0.375000 0 0.000000 0.375000 0
- L3 0 0.000000 0.000000 0.375000 0 0.000000 0.000000 0
- G3 0 0.000000 0.015625 0.031250 0.187500 0
- END
-STRUCTURE N "Walther's Cornerstone Structure Cinder Conveyor & Ash Pit 933-3816"
- F3 8421504 0.000000 4
- 0.125000 0.375000 0
- 1.000000 0.375000 0
- 1.000000 2.125000 0
- 0.125000 2.125000 0
- F3 8421504 0.000000 4
- 0.000000 1.750000 0
- 1.125000 1.750000 0
- 1.125000 1.375000 0
- 0.000000 1.375000 0
- F3 0 0.000000 4
- 0.046875 1.687500 0
- 1.062500 1.687500 0
- 1.062500 1.437500 0
- 0.046875 1.437500 0
- F3 14803425 0.000000 4
- 0.421875 0.640625 0
- 1.000000 0.640625 0
- 1.000000 1.203125 0
- 0.421875 1.203125 0
- L3 0 0.000000 0.468750 1.218750 0 0.468750 0.625000 0
- L3 0 0.000000 0.531250 1.218750 0 0.531250 0.640625 0
- L3 0 0.000000 0.593750 1.203125 0 0.593750 0.640625 0
- L3 0 0.000000 0.656250 1.218750 0 0.656250 0.609375 0
- L3 0 0.000000 0.718750 1.218750 0 0.718750 0.640625 0
- L3 0 0.000000 0.781250 1.203125 0 0.781250 0.640625 0
- L3 0 0.000000 0.843750 1.218750 0 0.843750 0.640625 0
- L3 0 0.000000 0.906250 1.218750 0 0.906250 0.640625 0
- F3 0 0.000000 4
- 0.125000 0.375000 0
- 1.000000 0.375000 0
- 1.000000 0.406250 0
- 0.125000 0.406250 0
- F3 14342874 0.000000 4
- 0.312500 0.375000 0
- 0.812500 0.375000 0
- 0.812500 0.000000 0
- 0.312500 0.000000 0
- F3 0 0.000000 4
- 0.406250 1.234375 0
- 0.125000 1.234375 0
- 0.125000 1.218750 0
- 0.406250 1.218750 0
- F3 0 0.000000 4
- 0.109375 0.406250 0
- 0.140625 0.406250 0
- 0.140625 1.234375 0
- 0.109375 1.234375 0
- F3 0 0.000000 4
- 0.984375 0.390625 0
- 0.953125 0.390625 0
- 0.953125 0.656250 0
- 0.984375 0.656250 0
- L3 0 0.000000 0.453125 0.000000 0 0.453125 0.390625 0
- L3 0 0.000000 0.640625 0.000000 0 0.640625 0.406250 0
- END
-STRUCTURE N "Walther's Cornerstone Structure Sand Drying Building 933-3813"
- F3 8421504 0.000000 4
- 0.000000 0.000000 0
- 1.812500 0.000000 0
- 1.812500 1.687500 0
- 0.000000 1.687500 0
- L3 0 0.000000 0.000000 0.843750 0 1.812500 0.843750 0
- L3 0 0.000000 0.765625 0.968750 0 1.125000 0.968750 0
- L3 0 0.000000 1.125000 0.968750 0 1.125000 0.703125 0
- L3 0 0.000000 1.125000 0.703125 0 0.765625 0.703125 0
- L3 0 0.000000 0.765625 0.703125 0 0.765625 0.968750 0
- F3 16777215 0.000000 4
- 1.250000 1.375000 0
- 1.406250 1.375000 0
- 1.406250 1.250000 0
- 1.250000 1.250000 0
- F3 0 0.000000 4
- 1.281250 1.343750 0
- 1.359375 1.343750 0
- 1.359375 1.281250 0
- 1.281250 1.281250 0
- END
-STRUCTURE N "Walther's Cornerstone Structure Sanding Storage Bin 933-3813"
- F3 8421504 0.000000 4
- 0.000000 0.000000 0
- 3.500000 0.000000 0
- 3.500000 1.687500 0
- 0.000000 1.687500 0
- F3 16777215 0.000000 4
- 0.125000 1.562500 0
- 3.406250 1.562500 0
- 3.406250 0.109375 0
- 0.125000 0.109375 0
- END
-STRUCTURE N "Walther's Cornerstone Structure Small Sanding Tower 933-3813"
- F3 15790080 0.000000 4
- 0.000000 0.375000 0
- 0.875000 0.375000 0
- 0.875000 0.687500 0
- 0.000000 0.687500 0
- G3 12632256 0.000000 0.187500 0.437500 0.562500 0
- L3 0 0.000000 0.437500 0.750000 0 0.437500 2.125000 0
- L3 0 0.000000 0.437500 0.375000 0 0.437500 0.000000 0
- END
-STRUCTURE N "Walther's Cornerstone Structure Large Sanding Tower 933-3813"
- F3 14803200 0.000000 4
- 0.000000 1.187500 0
- 0.750000 1.187500 0
- 0.750000 1.937500 0
- 0.000000 1.937500 0
- F3 12895232 0.000000 4
- 0.187500 1.375000 0
- 0.562500 1.375000 0
- 0.562500 1.750000 0
- 0.187500 1.750000 0
- G3 12632256 0.000000 0.171875 0.359375 1.578125 0
- F3 14803200 0.000000 4
- 0.296875 0.000000 0
- 0.484375 0.000000 0
- 0.484375 0.187500 0
- 0.296875 0.187500 0
- F3 14803200 0.000000 4
- 0.291800 3.073050 0
- 0.479300 3.073050 0
- 0.479300 3.260550 0
- 0.291800 3.260550 0
- F3 12632256 0.000000 4
- 0.328125 3.218750 0
- 0.437500 3.218750 0
- 0.437500 3.140625 0
- 0.328125 3.140625 0
- F3 12632256 0.000000 4
- 0.343750 0.156250 0
- 0.437500 0.156250 0
- 0.437500 0.062500 0
- 0.343750 0.062500 0
- L3 0 0.000000 0.375000 1.734375 0 0.375000 3.156250 0
- L3 0 0.000000 0.375000 1.406250 0 0.374997 0.171875 0
- END
-STRUCTURE N "Walthers Modern Roundhouse 933-3260"
- F3 12632256 0.000000 8
- 6.882222 1.844086 0
- 7.097887 0.620985 0
- 7.097887 -0.620985 0
- 6.882222 -1.844086 0
- 17.507406 -4.691095 0
- 18.056029 -1.579698 0
- 18.056029 1.579698 0
- 17.507406 4.691095 0
- L3 0 0.053333 7.097887 0.620985 0 7.097887 -0.620985 0
- L3 0 0.053333 7.097887 0.620985 0 6.882222 1.844086 0
- L3 0 0.053333 7.097887 -0.620985 0 6.882222 -1.844086 0
- L3 0 0.053333 10.750601 0.940556 0 10.750601 -0.940556 0
- L3 0 0.053333 10.750601 0.940556 0 10.423950 2.793089 0
- L3 0 0.053333 10.750601 -0.940556 0 10.423950 -2.793089 0
- L3 0 0.053333 14.403315 1.260127 0 14.403315 -1.260127 0
- L3 0 0.053333 14.403315 1.260127 0 13.965678 3.742092 0
- L3 0 0.053333 14.403315 -1.260127 0 13.965678 -3.742092 0
- L3 0 0.053333 18.056029 1.579698 0 18.056029 -1.579698 0
- L3 0 0.053333 18.056029 1.579698 0 17.507406 4.691095 0
- L3 0 0.053333 18.056029 -1.579698 0 17.507406 -4.691095 0
- L3 0 0.053333 6.882222 1.844086 0 17.507406 4.691095 0
- L3 0 0.053333 7.097887 0.620985 0 18.056029 1.579698 0
- L3 0 0.053333 7.097887 -0.620985 0 18.056029 -1.579698 0
- L3 0 0.053333 6.882222 -1.844086 0 17.507406 -4.691095 0
- A3 0 0.053333 0.203431 16.249328 2.865195 0 0.000000 360.000000
- A3 0 0.053333 0.339052 16.249328 2.865195 0 0.000000 360.000000
- A3 0 0.053333 0.203431 16.500000 0.000000 0 0.000000 360.000000
- A3 0 0.053333 0.339052 16.500000 0.000000 0 0.000000 360.000000
- A3 0 0.053333 0.203431 16.249328 -2.865195 0 0.000000 360.000000
- A3 0 0.053333 0.339052 16.249328 -2.865195 0 0.000000 360.000000
- END
-STRUCTURE N "Walthers Modern Roundhouse Add-On Stalls 933-3261"
- F3 12632256 0.000000 8
- 6.882222 1.844086 0
- 7.097887 0.620985 0
- 7.097887 -0.620985 0
- 6.882222 -1.844086 0
- 17.507406 -4.691095 0
- 18.056029 -1.579698 0
- 18.056029 1.579698 0
- 17.507406 4.691095 0
- L3 0 0.053333 7.097887 0.620985 0 7.097887 -0.620985 0
- L3 0 0.053333 7.097887 0.620985 0 6.882222 1.844086 0
- L3 0 0.053333 7.097887 -0.620985 0 6.882222 -1.844086 0
- L3 0 0.053333 10.750601 0.940556 0 10.750601 -0.940556 0
- L3 0 0.053333 10.750601 0.940556 0 10.423950 2.793089 0
- L3 0 0.053333 10.750601 -0.940556 0 10.423950 -2.793089 0
- L3 0 0.053333 14.403315 1.260127 0 14.403315 -1.260127 0
- L3 0 0.053333 14.403315 1.260127 0 13.965678 3.742092 0
- L3 0 0.053333 14.403315 -1.260127 0 13.965678 -3.742092 0
- L3 0 0.053333 18.056029 1.579698 0 18.056029 -1.579698 0
- L3 0 0.053333 18.056029 1.579698 0 17.507406 4.691095 0
- L3 0 0.053333 18.056029 -1.579698 0 17.507406 -4.691095 0
- L3 0 0.053333 6.882222 1.844086 0 17.507406 4.691095 0
- L3 0 0.053333 7.097887 0.620985 0 18.056029 1.579698 0
- L3 0 0.053333 7.097887 -0.620985 0 18.056029 -1.579698 0
- L3 0 0.053333 6.882222 -1.844086 0 17.507406 -4.691095 0
- A3 0 0.053333 0.203431 16.249328 2.865195 0 0.000000 360.000000
- A3 0 0.053333 0.339052 16.249328 2.865195 0 0.000000 360.000000
- A3 0 0.053333 0.203431 16.500000 0.000000 0 0.000000 360.000000
- A3 0 0.053333 0.339052 16.500000 0.000000 0 0.000000 360.000000
- A3 0 0.053333 0.203431 16.249328 -2.865195 0 0.000000 360.000000
- A3 0 0.053333 0.339052 16.249328 -2.865195 0 0.000000 360.000000
- END
-STRUCTURE N "Walthers Modern Roundhouse(Single Stall) 933-3260"
- F3 12632256 0.000000 4
- 7.097887 0.620985 0
- 7.097887 -0.620985 0
- 18.056029 -1.579698 0
- 18.056029 1.579698 0
- L3 0 0.053333 7.097887 0.620985 0 7.097887 -0.620985 0
- L3 0 0.053333 10.750601 0.940556 0 10.750601 -0.940556 0
- L3 0 0.053333 14.403315 1.260127 0 14.403315 -1.260127 0
- L3 0 0.053333 18.056029 1.579698 0 18.056029 -1.579698 0
- L3 0 0.053333 7.097887 0.620985 0 18.056029 1.579698 0
- L3 0 0.053333 7.097887 -0.620985 0 18.056029 -1.579698 0
- A3 0 0.053333 0.203431 16.500000 0.000000 0 0.000000 360.000000
- A3 0 0.053333 0.339052 16.500000 0.000000 0 0.000000 360.000000
- END
-TURNOUT N "Walthers Modern Roundhouse(Single Stall /w Track) 933-3260"
- P "Normal" 1
- E 5.187500 0.000000 270.000000
- S 0 0 5.187500 0.00000 18.000000 0.000000
- F3 12632256 0.000000 4
- 7.097887 0.620985 0
- 7.097887 -0.620985 0
- 18.056029 -1.579698 0
- 18.056029 1.579698 0
- L3 0 0.053333 7.097887 0.620985 0 7.097887 -0.620985 0
- L3 0 0.053333 10.750601 0.940556 0 10.750601 -0.940556 0
- L3 0 0.053333 14.403315 1.260127 0 14.403315 -1.260127 0
- L3 0 0.053333 18.056029 1.579698 0 18.056029 -1.579698 0
- L3 0 0.053333 7.097887 0.620985 0 18.056029 1.579698 0
- L3 0 0.053333 7.097887 -0.620985 0 18.056029 -1.579698 0
- A3 0 0.053333 0.203431 16.500000 0.000000 0 0.000000 360.000000
- A3 0 0.053333 0.339052 16.500000 0.000000 0 0.000000 360.000000
- END
-STRUCTURE N "Walther's Cornerstone Structures Machine Shop 933-3264"
- F3 12632256 0.000000 4
- 3.015625 0.000000 0
- 5.187500 0.000000 0
- 5.187500 2.125000 0
- 3.015625 2.125000 0
- F3 8388608 0.000000 4
- 3.015625 2.125000 0
- 5.187500 2.125000 0
- 5.187500 2.062500 0
- 3.015625 2.062500 0
- F3 8388608 0.000000 4
- 5.187500 0.000000 0
- 5.125000 0.000000 0
- 5.125000 2.093750 0
- 5.187500 2.093750 0
- F3 8388608 0.000000 4
- 3.015625 0.000000 0
- 5.171875 0.000000 0
- 5.171875 0.062500 0
- 3.015625 0.062500 0
- G3 8388608 0.000000 0.345168 4.125000 2.500000 0
- G3 0 0.000000 0.250000 4.125000 2.500000 0
- F3 8388608 0.000000 4
- 3.015625 1.000000 0
- 4.015625 1.000000 0
- 4.015625 0.937500 0
- 3.015625 0.937500 0
- F3 8388608 0.000000 4
- 4.015625 0.062500 0
- 3.953125 0.062500 0
- 3.953125 1.000000 0
- 4.015625 1.000000 0
- F3 12632256 0.000000 4
- 0.015625 0.015625 0
- 3.015625 0.015625 0
- 3.015625 8.140625 0
- 0.015625 8.140625 0
- F3 8388608 0.000000 4
- 3.031250 0.046875 0
- 2.953125 0.046875 0
- 2.953125 8.140625 0
- 3.031250 8.140625 0
- F3 8388608 0.000000 4
- 0.015625 8.140625 0
- 0.093750 8.140625 0
- 0.093750 0.015625 0
- 0.015625 0.015625 0
- G3 0 0.000000 0.187500 2.015625 6.015625 0
- F3 8388608 0.000000 4
- 0.000000 8.125000 0
- 3.000000 8.125000 0
- 3.000000 8.062500 0
- 0.000000 8.062500 0
- F3 8388608 0.000000 4
- 0.031250 0.000000 0
- 3.031250 0.000000 0
- 3.031250 0.062500 0
- 0.031250 0.062500 0
- G3 0 0.000000 0.187500 2.031250 3.000000 0
- G3 0 0.000000 0.187500 2.031250 4.500000 0
- G3 0 0.000000 0.187500 2.031250 1.500000 0
- END
-STRUCTURE N "Wahther's Cornerstone Structures Machine Shop Engine Room 933-3264A"
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 3.000000 0.000000 0
- 3.000000 6.000000 0
- 0.000000 6.000000 0
- F3 8388608 0.000000 4
- 0.000000 6.000000 0
- 2.953125 6.000000 0
- 2.953125 5.937500 0
- 0.000000 5.937500 0
- F3 8388608 0.000000 4
- 3.000000 6.000000 0
- 2.937500 6.000000 0
- 2.937500 0.000000 0
- 3.000000 0.000000 0
- F3 8388608 0.000000 4
- 0.000000 0.000000 0
- 2.968750 0.000000 0
- 2.968750 0.062500 0
- 0.000000 0.062500 0
- F3 8388608 0.000000 4
- 0.000000 0.000000 0
- 0.062500 0.000000 0
- 0.062500 6.000000 0
- 0.000000 6.000000 0
- G3 0 0.000000 0.187500 1.500000 3.000000 0
- G3 0 0.000000 0.187500 1.500000 5.000000 0
- G3 0 0.000000 0.187500 1.500000 1.000000 0
- END
-
-
-SUBCONTENTS Walthers Cornerstone N Structures - Turn Tables
-TURNOUT N "Walthers Modern 130' TurnTable 933-2613/2618" 512
- P "1" 1 2 3
- P "2" 4 5 6
- P "3" 7 8 9
- P "4" 10 11 12
- P "5" 13 14 15
- P "6" 16 17 18
- P "7" 19 20 21
- P "8" 22 23 24
- P "9" 25 26 27
- P "10" 28 29 30
- P "11" 31 32 33
- P "12" 34 35 36
- P "13" 37 38 39
- P "14" 40 41 42
- P "15" 43 44 45
- P "16" 46 47 48
- P "17" 49 50 51
- P "18" 52 53 54
- E 0.000000 5.187500 0.000000
- E 0.900800 5.108690 10.000000
- E 1.774229 4.874655 20.000000
- E 2.593750 4.492507 30.000000
- E 3.334461 3.973856 40.000000
- E 3.973856 3.334461 50.000000
- E 4.492507 2.593750 60.000000
- E 4.874655 1.774229 70.000000
- E 5.108690 0.900800 80.000000
- E 5.187500 0.000000 90.000000
- E 5.108690 -0.900800 100.000000
- E 4.874655 -1.774229 110.000000
- E 4.492507 -2.593750 120.000000
- E 3.973856 -3.334461 130.000000
- E 3.334461 -3.973856 140.000000
- E 2.593750 -4.492507 150.000000
- E 1.774229 -4.874655 160.000000
- E 0.900800 -5.108690 170.000000
- E 0.000000 -5.187500 180.000000
- E -0.900800 -5.108690 190.000000
- E -1.774229 -4.874655 200.000000
- E -2.593750 -4.492507 210.000000
- E -3.334461 -3.973856 220.000000
- E -3.973856 -3.334461 230.000000
- E -4.492507 -2.593750 240.000000
- E -4.874655 -1.774229 250.000000
- E -5.108690 -0.900800 260.000000
- E -5.187500 0.000000 270.000000
- E -5.108690 0.900800 280.000000
- E -4.874655 1.774229 290.000000
- E -4.492507 2.593750 300.000000
- E -3.973856 3.334461 310.000000
- E -3.334461 3.973856 320.000000
- E -2.593750 4.492507 330.000000
- E -1.774229 4.874655 340.000000
- E -0.900800 5.108690 350.000000
-#0/180
- S 16777215 0.000000 0.000000 5.187500 0.000000 4.968750
- S 16777215 0.000000 0.000000 4.968750 0.000000 -4.968750
- S 16777215 0.000000 0.000000 -4.968750 0.000000 -5.187500
-#10/190
- S 0 0.000000 0.900800 5.108690 0.862814 4.893264
- S 16777215 0.000000 0.862814 4.893264 -0.862814 -4.893264
- S 0 0.000000 -0.862814 -4.893264 -0.900800 -5.108690
-#20/200
- S 0 0.000000 1.774229 4.874655 1.699413 4.669098
- S 16777215 0.000000 1.699413 4.669098 -1.699413 -4.669098
- S 0 0.000000 -1.699413 -4.669098 -1.774229 -4.874655
-#30/210
- S 0 0.000000 2.593750 4.492507 2.484375 4.303064
- S 16777215 0.000000 2.484375 4.303064 -2.484375 -4.303064
- S 0 0.000000 -2.484375 -4.303064 -2.593750 -4.492507
-#40/220
- S 0 0.000000 3.334461 3.973856 3.193851 3.806283
- S 16777215 0.000000 3.193851 3.806283 -3.193851 -3.806283
- S 0 0.000000 -3.193851 -3.806283 -3.334461 -3.973856
-#50/230
- S 0 0.000000 3.973856 3.334461 3.806283 3.193851
- S 16777215 0.000000 3.806283 3.193851 -3.806283 -3.193851
- S 0 0.000000 -3.806283 -3.193851 -3.973856 -3.334461
-#60/240
- S 0 0.000000 4.492507 2.593750 4.303064 2.484375
- S 16777215 0.000000 4.303064 2.484375 -4.303064 -2.484375
- S 0 0.000000 -4.303064 -2.484375 -4.492507 -2.593750
-#70/250
- S 0 0.000000 4.874655 1.774229 4.669098 1.699413
- S 16777215 0.000000 4.669098 1.699413 -4.669098 -1.699413
- S 0 0.000000 -4.669098 -1.699413 -4.874655 -1.774229
-#80/260
- S 0 0.000000 5.108690 0.900800 4.893264 0.862814
- S 16777215 0.000000 4.893264 0.862814 -4.893264 -0.862814
- S 0 0.000000 -4.893264 -0.862814 -5.108690 -0.900800
-#90/270
- S 0 0.000000 5.187500 0.000000 4.968750 0.000000
- S 16777215 0.000000 4.968750 0.000000 -4.968750 0.000000
- S 0 0.000000 -4.968750 0.000000 -5.187500 0.000000
-#100/280
- S 0 0.000000 5.108690 -0.900800 4.893264 -0.862814
- S 16777215 0.000000 4.893264 -0.862814 -4.893264 0.862814
- S 0 0.000000 -4.893264 0.862814 -5.108690 0.900800
-#110/290
- S 0 0.000000 4.874655 -1.774229 4.669098 -1.699413
- S 16777215 0.000000 4.669098 -1.699413 -4.669098 1.699413
- S 0 0.000000 -4.669098 1.699413 -4.874655 1.774229
-#120/300
- S 0 0.000000 4.492507 -2.593750 4.303064 -2.484375
- S 16777215 0.000000 4.303064 -2.484375 -4.303064 2.484375
- S 0 0.000000 -4.303064 2.484375 -4.492507 2.593750
-#130/310
- S 0 0.000000 3.973856 -3.334461 3.806283 -3.193851
- S 16777215 0.000000 3.806283 -3.193851 -3.806283 3.193851
- S 0 0.000000 -3.806283 3.193851 -3.973856 3.334461
-#140/320
- S 0 0.000000 3.334461 -3.973856 3.193851 -3.806283
- S 16777215 0.000000 3.193851 -3.806283 -3.193851 3.806283
- S 0 0.000000 -3.193851 3.806283 -3.334461 3.973856
-#150/330
- S 0 0.000000 2.593750 -4.492507 2.484375 -4.303064
- S 16777215 0.000000 2.484375 -4.303064 -2.484375 4.303064
- S 0 0.000000 -2.484375 4.303064 -2.593750 4.492507
-#160/340
- S 0 0.000000 1.774229 -4.874655 1.699413 -4.669098
- S 16777215 0.000000 1.699413 -4.669098 -1.699413 4.669098
- S 0 0.000000 -1.699413 4.669098 -1.774229 4.874655
-#170/350
- S 0 0.000000 0.900800 -5.108690 0.862814 -4.893264
- S 16777215 0.000000 0.862814 -4.893264 -0.862814 4.893264
- S 0 0.000000 -0.862814 4.893264 -0.900800 5.108690
-
- A 0 0.031250 5.187500 0.000000 0.000000 0.000000 360.000000
- A 0 0.031250 4.968750 0.000000 0.000000 0.000000 360.000000
- G3 0 0.000000 0.5 0.000000 0.000000 0
- A 0 0.000000 4.218750 0.000000 0.000000 0.000000 360.000000
- A 0 0.020000 4.771875 0.000000 0.000000 0.000000 360.000000
- A 0 0.020000 4.321875 0.000000 0.000000 0.000000 360.000000
- END
-
-TURNOUT N "Walthers Manual 120' 10d index TurnTable 933-3203" 512
-# TT Designed w/ 9.00" bridge, 9.576" OD, 10 degree spacing
- P "1" 1 2 3
- P "2" 4 5 6
- P "3" 7 8 9
- P "4" 10 11 12
- P "5" 13 14 15
- P "6" 16 17 18
- P "7" 19 20 21
- P "8" 22 23 24
- P "9" 25 26 27
- P "10" 28 29 30
- P "11" 31 32 33
- P "12" 34 35 36
- P "13" 37 38 39
- P "14" 40 41 42
- P "15" 43 44 45
- P "16" 46 47 48
- P "17" 49 50 51
- P "18" 52 53 54
-
- E 0.000000 0.000000 180.000000
- E 0.000000 4.788462 0.000000
- E 0.831508 4.715714 10.000000
- E 1.637750 4.499682 20.000000
- E 2.394231 4.146930 30.000000
- E 3.077964 3.668175 40.000000
- E 3.668175 3.077964 50.000000
- E 4.146930 2.394231 60.000000
- E 4.499682 1.637750 70.000000
- E 4.715714 0.831508 80.000000
- E 4.788162 0.000000 90.000000
- E 4.715714 -0.831508 100.000000
- E 4.499682 -1.637750 110.000000
- E 4.146930 -2.394231 120.000000
- E 3.668175 -3.077964 130.000000
- E 3.077964 -3.668175 140.000000
- E 2.394231 -4.146930 150.000000
- E 1.637750 -4.499682 160.000000
- E 0.831508 -4.715714 170.000000
- E 0.000000 -4.788462 180.000000
- E -0.831508 -4.715714 190.000000
- E -1.637750 -4.499682 200.000000
- E -2.394231 -4.146930 210.000000
- E -3.077964 -3.668175 220.000000
- E -3.668175 -3.077964 230.000000
- E -4.146930 -2.394231 240.000000
- E -4.499682 -1.637750 250.000000
- E -4.715714 -0.831508 260.000000
- E -4.788162 0.000000 270.000000
- E -4.715714 0.831508 280.000000
- E -4.499682 1.637750 290.000000
- E -4.146930 2.394231 300.000000
- E -3.668175 3.077964 310.000000
- E -3.077964 3.668175 320.000000
- E -2.394231 4.146930 330.000000
- E -1.637750 4.499682 340.000000
- E -0.831508 4.715714 350.000000
-#Setup
-# S 16777215 0 0.000000 0.000000 0.000000 4.788462
-# S 16777215 0 0.000000 -4.788462 0.000000 4.788462
-#0/180
- S 0 0 0.000000 4.788462 0.000000 4.500000
- S 16777215 0 0.000000 4.500000 0.000000 -4.500000
- S 0 0 0.000000 -4.500000 0.000000 -4.788462
-#10/190
- S 0 0 0.831508 4.715714 0.781417 4.431635
- S 16777215 0 0.781417 4.431635 -0.781417 -4.431635
- S 0 0 -0.781417 -4.431635 -0.831508 -4.715714
-#20/200
- S 0 0 1.637750 4.499682 1.539090 4.228617
- S 16777215 0 1.539090 4.228617 -1.539090 -4.228617
- S 0 0 -1.539090 -4.228617 -1.637750 -4.499682
-#30/210
- S 0 0 2.394231 4.146930 2.250000 3.897114
- S 16777215 0 2.250000 3.897114 -2.250000 -3.897114
- S 0 0 -2.250000 -3.897114 -2.394231 -4.146930
-#40/220
- S 0 0 3.077964 3.668175 2.892545 3.447200
- S 16777215 0 2.892545 3.447200 -2.892545 -3.447200
- S 0 0 -2.892545 -3.447200 -3.077964 -3.668175
-#50/230
- S 0 0 3.668175 3.077964 3.447200 2.892545
- S 16777215 0 3.447200 2.892545 -3.447200 -2.892545
- S 0 0 -3.447200 -2.892545 -3.668175 -3.077964
-#60/240
- S 0 0 4.146930 2.394231 3.897114 2.250000
- S 16777215 0 3.897114 2.250000 -3.897114 -2.250000
- S 0 0 -3.897114 -2.250000 -4.146930 -2.394231
-#70/250
- S 0 0 4.499682 1.637750 4.228617 1.539090
- S 16777215 0 4.228617 1.539090 -4.228617 -1.539090
- S 0 0 -4.228617 -1.539090 -4.499682 -1.637750
-#80/260
- S 0 0 4.715714 0.831508 4.431635 0.781417
- S 16777215 0 4.431635 0.781417 -4.431635 -0.781417
- S 0 0 -4.431635 -0.781417 -4.715714 -0.831508
-#90/270
- S 0 0 4.788462 0.000000 4.500000 0.000000
- S 16777215 0 4.500000 0.000000 -4.500000 0.000000
- S 0 0 -4.500000 0.000000 -4.788462 0.000000
-#100/280
- S 0 0 4.715714 -0.831508 4.431635 -0.781417
- S 16777215 0 4.431635 -0.781417 -4.431635 0.781417
- S 0 0 -4.431635 0.781417 -4.715714 0.831508
-#110/290
- S 0 0 4.499682 -1.637750 4.228617 -1.539090
- S 16777215 0 4.228617 -1.539090 -4.228617 1.539090
- S 0 0 -4.228617 1.539090 -4.499682 1.637750
-#120/300
- S 0 0 4.146930 -2.394231 3.897114 -2.250000
- S 16777215 0 3.897114 -2.250000 -3.897114 2.250000
- S 0 0 -3.8971144 2.250000 -4.146930 2.394231
-#130/310
- S 0 0 3.668175 -3.077964 3.447200 -2.892545
- S 16777215 0 3.447200 -2.892545 -3.447200 2.892545
- S 0 0 -3.447200 2.892545 -3.668175 3.077964
-#140/320
- S 0 0 3.077964 -3.668175 2.892545 -3.447200
- S 16777215 0 2.892545 -3.447200 -2.892545 3.447200
- S 0 0 -2.892545 3.447200 -3.077964 3.668175
-#150/330
- S 0 0 2.394231 -4.146930 2.250000 -3.897114
- S 16777215 0 2.250000 -3.897114 -2.250000 3.897114
- S 0 0 -2.250000 3.897114 -2.394231 4.146930
-#160/340
- S 0 0 1.637750 -4.499682 1.539090 -4.228617
- S 16777215 0 1.539090 -4.228617 -1.539090 4.228617
- S 0 0 -1.539090 4.228617 -1.637750 4.499682
-#170/350
- S 0 0 0.831508 -4.715714 0.781417 -4.431635
- S 16777215 0 0.781417 -4.431635 -0.781417 4.431635
- S 0 0 -0.781417 4.431635 -0.831508 4.715714
-
- A 0 0.000000 4.788462 0.000000 0.000000 0.000000 360.000000
- A 0 0.000000 4.500000 0.000000 0.000000 0.000000 360.000000
- A 0 0.000000 3.894231 0.000000 0.000000 0.000000 360.000000
- G 0 0.000000 0.500000 0.000000 0.000000 0.000000 360.000000
- A 0 0.020000 4.404808 0.000000 0.000000 0.000000 360.000000
- A 0 0.020000 3.989423 0.000000 0.000000 0.000000 360.000000
- END
-
-
-
-SUBCONTENTS Walthers Cornerstone N Structures - Dairy Facilities
-STRUCTURE N "Walthers Cornerstone Structures Sterling Consolidated Dairy Bottling Plant 933-3298"
- D 0.000000 0.000000
- F3 0 0.000000 4
- 15.000000 2.625000 0
- 15.000000 2.625000 0
- 15.000000 2.625000 0
- 15.000000 2.625000 0
- F3 12632256 0.000000 4
- 15.000000 2.640625 0
- 16.359375 2.640625 0
- 16.359375 0.125000 0
- 15.000000 0.125000 0
- F3 0 0.000000 4
- 12.500000 2.750000 0
- 12.500000 2.750000 0
- 12.500000 2.750000 0
- 12.500000 2.750000 0
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 2.500000 0.000000 0
- 2.500000 5.750000 0
- 0.000000 5.750000 0
- F3 32768 0.000000 4
- 0.000000 5.750000 0
- 0.500000 5.750000 0
- 0.500000 0.031250 0
- 0.000000 0.031250 0
- F3 8388608 0.000000 4
- 0.500000 0.000000 0
- 0.625000 0.000000 0
- 0.625000 5.750000 0
- 0.500000 5.750000 0
- F3 8388608 0.000000 4
- 0.562500 5.750000 0
- 2.468750 5.750000 0
- 2.468750 5.625000 0
- 0.562500 5.625000 0
- F3 0 0.000000 4
- 12.437500 5.750000 0
- 12.437500 5.750000 0
- 12.437500 5.750000 0
- 12.437500 5.750000 0
- F3 8388608 0.000000 4
- 2.500000 5.750000 0
- 2.375000 5.750000 0
- 2.375000 2.750000 0
- 2.500000 2.750000 0
- F3 8388608 0.000000 4
- 12.500000 2.750000 0
- 2.375000 2.750000 0
- 2.375000 2.625000 0
- 12.500000 2.625000 0
- F3 8388608 0.000000 4
- 12.500000 5.750000 0
- 14.984375 5.750000 0
- 14.984375 5.625000 0
- 12.500000 5.625000 0
- F3 8388608 0.000000 4
- 16.500000 0.000000 0
- 4.000000 0.000000 0
- 4.000000 0.125000 0
- 16.500000 0.125000 0
- F3 8388608 0.000000 4
- 3.984375 0.000000 0
- 0.609375 0.000000 0
- 0.609375 0.125000 0
- 3.984375 0.125000 0
- F3 0 0.000000 4
- 15.000000 5.765625 0
- 15.000000 5.765625 0
- 15.000000 5.765625 0
- 15.000000 5.765625 0
- F3 8388608 0.000000 4
- 15.000000 5.750000 0
- 14.875000 5.750000 0
- 14.875000 2.765625 0
- 15.000000 2.765625 0
- F3 8388608 0.000000 4
- 16.500000 2.765625 0
- 14.875000 2.765625 0
- 14.875000 2.625000 0
- 16.500000 2.625000 0
- F3 8388608 0.000000 4
- 16.500000 2.765625 0
- 16.375000 2.765625 0
- 16.375000 0.140625 0
- 16.500000 0.140625 0
- F3 8388608 0.000000 4
- 12.500000 5.750000 0
- 12.625000 5.750000 0
- 12.625000 0.140625 0
- 12.500000 0.140625 0
- F3 11316396 0.000000 4
- 12.625000 5.625000 0
- 14.843750 5.625000 0
- 14.843750 0.156250 0
- 12.625000 0.156250 0
- G3 8421504 0.000000 0.718920 13.765625 4.546875 0
- G3 15790320 0.000000 0.594572 13.781250 4.546875 0
- L3 0 0.000000 13.750000 5.125000 0 13.750000 3.937500 0
- L3 0 0.000000 13.171875 4.531250 0 14.375000 4.531250 0
- L3 0 0.000000 13.359375 4.125000 0 14.187500 4.968750 0
- L3 0 0.000000 13.328125 4.937500 0 14.171875 4.109375 0
- F3 8388608 0.000000 4
- 13.000000 3.281250 0
- 13.250000 3.281250 0
- 13.250000 3.531250 0
- 13.000000 3.531250 0
- F3 0 0.000000 4
- 13.046875 3.484375 0
- 13.218750 3.484375 0
- 13.218750 3.312500 0
- 13.046875 3.312500 0
- L3 0 0.000000 13.750000 5.625000 0 13.750000 5.265625 0
- L3 0 0.000000 13.750000 3.812500 0 13.750000 0.125000 0
- F3 8388608 0.000000 4
- 14.875000 2.625000 0
- 15.000000 2.625000 0
- 15.000000 0.125000 0
- 14.875000 0.125000 0
- L3 0 0.000000 12.625000 0.375000 0 14.875000 0.375000 0
- L3 0 0.000000 12.609375 0.625000 0 14.875000 0.625000 0
- L3 0 0.000000 12.625000 0.875000 0 14.859375 0.875000 0
- L3 0 0.000000 12.625000 1.125000 0 14.875000 1.125000 0
- L3 0 0.000000 12.625000 1.375000 0 14.875000 1.375000 0
- L3 0 0.000000 12.625000 1.625000 0 12.625000 1.625000 0
- L3 0 0.000000 12.625000 1.625000 0 14.875000 1.625000 0
- F3 12632256 0.000000 4
- 2.484375 2.625000 0
- 12.500000 2.625000 0
- 12.500000 0.125000 0
- 2.484375 0.125000 0
- L3 0 0.000000 9.500000 5.656250 0 9.500000 5.656250 0
- F3 4210752 0.000000 4
- 11.750000 1.875000 0
- 11.312500 1.875000 0
- 11.312500 0.906250 0
- 11.750000 0.906250 0
- F3 4210752 0.000000 4
- 4.531250 1.875000 0
- 6.062500 1.875000 0
- 6.062500 1.031250 0
- 4.531250 1.031250 0
- G3 4210752 0.000000 0.159344 11.968750 2.250000 0
- G3 4210752 0.000000 0.251946 3.250000 1.281250 0
- F3 4210752 0.000000 4
- 7.750000 2.250000 0
- 8.250000 2.250000 0
- 8.250000 1.812500 0
- 7.750000 1.812500 0
- F3 4210752 0.000000 4
- 7.750000 0.750000 0
- 8.250000 0.750000 0
- 8.250000 0.343750 0
- 7.750000 0.343750 0
- F3 4210752 0.000000 4
- 1.187500 1.375000 0
- 1.562500 1.375000 0
- 1.562500 1.000000 0
- 1.187500 1.000000 0
- F3 4473924 0.000000 4
- 1.125000 4.750000 0
- 1.812500 4.750000 0
- 1.812500 4.156250 0
- 1.125000 4.156250 0
- L3 0 0.000000 17.937500 7.000000 0 17.937500 7.000000 0
- L3 0 0.000000 12.609375 1.875000 0 14.859375 1.875000 0
- L3 0 0.000000 12.609375 2.156250 0 14.843750 2.156250 0
- L3 0 0.000000 12.609375 2.406250 0 14.859375 2.406250 0
- L3 0 0.000000 12.593750 2.640625 0 14.843750 2.640625 0
- L3 0 0.000000 12.593750 2.875000 0 14.843750 2.875000 0
- L3 0 0.000000 12.609375 3.125000 0 14.859375 3.125000 0
- L3 0 0.000000 12.593750 3.375000 0 12.984375 3.375000 0
- L3 0 0.000000 13.250000 3.375000 0 14.859375 3.375000 0
- L3 0 0.000000 12.593750 3.625000 0 14.859375 3.625000 0
- L3 0 0.000000 12.593750 3.875000 0 13.531250 3.875000 0
- L3 0 0.000000 13.984375 3.875000 0 14.859375 3.875000 0
- L3 0 0.000000 12.609375 4.125000 0 13.171875 4.125000 0
- L3 0 0.000000 14.328125 4.125000 0 14.875000 4.125000 0
- L3 0 0.000000 12.593750 4.375000 0 13.062500 4.375000 0
- L3 0 0.000000 14.453125 4.375000 0 14.843750 4.375000 0
- L3 0 0.000000 12.593750 4.609375 0 12.593750 4.625000 0
- L3 0 0.000000 12.609375 4.625000 0 13.031250 4.625000 0
- L3 0 0.000000 14.468750 4.625000 0 14.843750 4.625000 0
- L3 0 0.000000 12.593750 4.875000 0 13.125000 4.875000 0
- L3 0 0.000000 14.390625 4.875000 0 14.859375 4.875000 0
- L3 0 0.000000 12.593750 5.125000 0 13.328125 5.125000 0
- L3 0 0.000000 14.171875 5.125000 0 14.828125 5.125000 0
- L3 0 0.000000 12.593750 5.375000 0 14.843750 5.375000 0
- END
-STRUCTURE N "Walthers Cornerstone Structures Sterling Consolidated Dairy Power House 933-3298"
- L3 0 0.000000 0.000000 0.000000 0 2.625000 0.000000 0
- L3 0 0.000000 2.625000 0.000000 0 2.625000 2.625000 0
- L3 8388608 0.000000 2.625000 2.625000 0 0.000000 2.625000 0
- L3 8388608 0.000000 0.000000 2.625000 0 0.000000 0.000000 0
- F3 8388608 0.000000 4
- 0.000000 0.000000 0
- 2.625000 0.000000 0
- 2.625000 0.125000 0
- 0.000000 0.125000 0
- F3 8388608 0.000000 4
- 0.000000 0.000000 0
- 0.125000 0.000000 0
- 0.125000 2.625000 0
- 0.000000 2.625000 0
- F3 8388608 0.000000 4
- 0.000000 2.625000 0
- 2.625000 2.625000 0
- 2.625000 2.500000 0
- 0.000000 2.500000 0
- F3 8388608 0.000000 4
- 2.625000 2.625000 0
- 2.500000 2.625000 0
- 2.500000 0.000000 0
- 2.625000 0.000000 0
- F3 12632256 0.000000 4
- 0.125000 2.500000 0
- 2.500000 2.500000 0
- 2.500000 0.125000 0
- 0.125000 0.125000 0
- L3 0 0.000000 1.265625 2.500000 0 1.265625 2.500000 0
- L3 0 0.000000 1.250000 2.500000 0 1.250000 0.125000 0
- L3 0 0.000000 0.109375 2.250000 0 2.500000 2.250000 0
- L3 0 0.000000 0.109375 2.000000 0 2.500000 2.000000 0
- L3 0 0.000000 0.109375 1.750000 0 2.500000 1.750000 0
- L3 0 0.000000 0.125000 1.500000 0 2.500000 1.500000 0
- L3 0 0.000000 0.125000 1.250000 0 2.500000 1.250000 0
- L3 0 0.000000 0.125000 1.000000 0 2.500000 1.000000 0
- L3 0 0.000000 0.125000 0.750000 0 2.500000 0.750000 0
- L3 0 0.000000 0.125000 0.500000 0 2.500000 0.484375 0
- L3 0 0.000000 0.125000 0.250000 0 2.500000 0.250000 0
- F3 0 0.000000 4
- 0.812500 1.437500 0
- 1.015625 1.437500 0
- 1.015625 1.296875 0
- 0.812500 1.296875 0
- F3 0 0.000000 4
- 1.500000 1.421875 0
- 1.718750 1.421875 0
- 1.718750 1.281250 0
- 1.500000 1.281250 0
- END
-STRUCTURE N "Walthers Cornerstone Structures Sterling Consolidated Dairy Smoke Stack 933-3298"
- G3 8388608 0.000000 0.375325 0.375325 0.375325 0
- G3 0 0.000000 0.281250 0.375325 0.375325 0
- END
-STRUCTURE N "Walthers Cornerstone Structures Sterling Consolidated Dairy Office/Freight House 933-3298"
- F3 8388608 0.000000 4
- 0.093750 0.125000 0
- 8.500000 0.125000 0
- 8.500000 0.000000 0
- 0.093750 0.000000 0
- F3 8388608 0.000000 4
- 0.000000 0.000000 0
- 0.109375 0.000000 0
- 0.109375 3.750000 0
- 0.000000 3.750000 0
- F3 8388608 0.000000 4
- 8.500000 0.000000 0
- 8.359375 0.000000 0
- 8.359375 3.750000 0
- 8.500000 3.750000 0
- F3 8388608 0.000000 4
- 0.000000 3.750000 0
- 8.484375 3.750000 0
- 8.484375 3.625000 0
- 0.000000 3.625000 0
- F3 12632256 0.000000 4
- 0.109375 3.625000 0
- 8.343750 3.625000 0
- 8.343750 0.140625 0
- 0.109375 0.140625 0
- F3 8388608 0.000000 4
- 2.500000 3.625000 0
- 2.625000 3.625000 0
- 2.625000 0.000000 0
- 2.500000 0.000000 0
- L3 0 0.000000 0.000000 1.875000 0 2.531250 1.875000 0
- F3 7039851 0.000000 4
- 0.687500 3.125000 0
- 0.906250 3.125000 0
- 0.906250 2.875000 0
- 0.687500 2.875000 0
- G3 7105644 0.000000 0.132583 0.625000 1.031250 0
- L3 0 0.000000 0.250000 3.625000 0 0.250000 0.125000 0
- L3 0 0.000000 0.500000 3.625000 0 0.484375 0.140625 0
- L3 0 0.000000 0.750000 3.625000 0 0.750000 3.125000 0
- L3 0 0.000000 0.750000 2.875000 0 0.750000 0.125000 0
- L3 0 0.000000 1.000000 3.625000 0 1.000000 0.125000 0
- L3 0 0.000000 1.250000 3.625000 0 1.250000 0.125000 0
- L3 0 0.000000 1.500000 3.625000 0 1.500000 0.156250 0
- L3 0 0.000000 1.750000 3.625000 0 1.750000 0.125000 0
- L3 0 0.000000 2.000000 3.625000 0 2.000000 0.125000 0
- L3 0 0.000000 2.250000 3.625000 0 2.250000 0.140625 0
- F3 7368816 0.000000 4
- 5.343750 2.125000 0
- 5.718750 2.125000 0
- 5.718750 1.750000 0
- 5.343750 1.750000 0
- G3 7631988 0.000000 0.172584 3.500000 3.000000 0
- G3 7039851 0.000000 0.187500 3.500000 0.750000 0
- G3 6776679 0.000000 0.188150 7.500000 0.750000 0
- G3 0 0.000000 0.187500 7.500000 3.000000 0
- END
-STRUCTURE N "Walthers Cornerstone Structures Sterling Consolidated Dairy Store 933-3298"
- F3 16776960 0.000000 4
- 0.000000 0.000000 0
- 0.125000 0.000000 0
- 0.125000 2.750000 0
- 0.000000 2.750000 0
- F3 16776960 0.000000 4
- 0.000000 0.000000 0
- 1.875000 0.000000 0
- 1.875000 0.125000 0
- 0.000000 0.125000 0
- F3 16776960 0.000000 4
- 0.000000 2.750000 0
- 1.875000 2.750000 0
- 1.875000 2.625000 0
- 0.000000 2.625000 0
- F3 16776960 0.000000 4
- 1.875000 0.000000 0
- 1.750000 0.000000 0
- 1.750000 2.750000 0
- 1.875000 2.750000 0
- F3 15000804 0.000000 4
- 0.125000 2.625000 0
- 1.734375 2.625000 0
- 1.734375 0.125000 0
- 0.125000 0.125000 0
- F3 0 0.000000 4
- 0.250000 2.250000 0
- 0.421875 2.250000 0
- 0.421875 2.078125 0
- 0.250000 2.078125 0
- END
-
-
-
-SUBCONTENTS Walthers Cornerstone N Structures - Passenger Facilities
-STRUCTURE N "Walthers Santa Fe Depot circa 1908 933-3803"
- F3 16379605 0.000000 4
- 0.000000 3.875000 0
- 6.750000 3.875000 0
- 6.750000 0.000000 0
- 0.000000 0.000000 0
- L3 0 0.000000 0.000000 0.000000 0 6.750000 0.000000 0
- L3 0 0.000000 6.750000 0.000000 0 6.750000 3.875000 0
- L3 0 0.000000 6.750000 3.875000 0 0.000000 3.875000 0
- L3 0 0.000000 0.375000 0.375000 0 6.375000 0.375000 0
- L3 0 0.000000 6.375000 0.375000 0 6.375000 3.500000 0
- L3 0 0.000000 6.375000 3.500000 0 0.375000 3.500000 0
- L3 0 0.000000 0.375000 3.500000 0 0.375000 0.375000 0
- L3 0 0.000000 0.359375 1.937500 0 6.359375 1.937500 0
- L3 0 0.000000 6.359375 2.625000 0 6.234375 2.625000 0
- L3 0 0.000000 6.234375 2.625000 0 6.234375 1.375000 0
- L3 0 0.000000 6.234375 1.375000 0 6.359375 1.375000 0
- L3 0 0.000000 6.359375 1.375000 0 6.359375 2.625000 0
- L3 0 0.000000 0.500000 2.625000 0 0.500000 1.250000 0
- L3 0 0.000000 0.500000 1.250000 0 0.375000 1.250000 0
- L3 0 0.000000 0.375000 1.250000 0 0.375000 2.750000 0
- L3 0 0.000000 0.375000 2.625000 0 0.484375 2.625000 0
- L3 0 0.000000 2.125000 0.375000 0 4.125000 0.375000 0
- L3 0 0.000000 4.125000 0.375000 0 4.125000 0.500000 0
- L3 0 0.000000 4.125000 0.500000 0 2.125000 0.500000 0
- L3 0 0.000000 2.125000 0.500000 0 2.125000 0.375000 0
- L3 0 0.000000 2.125000 3.500000 0 4.125000 3.500000 0
- L3 0 0.000000 4.125000 3.500000 0 4.125000 3.375000 0
- L3 0 0.000000 4.125000 3.375000 0 2.125000 3.375000 0
- L3 0 0.000000 2.125000 3.375000 0 2.125000 3.500000 0
- L3 0 0.000000 5.500000 2.390625 0 5.781250 2.390625 0
- L3 0 0.000000 5.781250 2.390625 0 5.781250 2.156250 0
- L3 0 0.000000 5.781250 2.156250 0 5.500000 2.156250 0
- L3 0 0.000000 5.500000 2.156250 0 5.500000 2.390625 0
- L3 0 0.000000 0.921875 2.390625 0 1.203125 2.390625 0
- L3 0 0.000000 1.203125 2.390625 0 1.203125 2.140625 0
- L3 0 0.000000 1.203125 2.140625 0 0.921875 2.140625 0
- L3 0 0.000000 0.921875 2.140625 0 0.921875 2.390625 0
- L3 0 0.000000 0.015625 3.859375 0 0.015625 0.015625 0
- END
-STRUCTURE N "Walther's Cornerstone Structures Butterfly-Style Station Platform Shelter 933-3258"
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 6.125000 0.000000 0
- 6.125000 1.250000 0
- 0.000000 1.250000 0
- END
-STRUCTURE N "Walthers Union Station (Cornerstone Series) 3257"
- F3 14211288 0.000000 4
- 0.000000 6.000000 0
- 16.000000 6.000000 0
- 16.000000 0.000000 0
- 0.000000 0.000000 0
- L3 0 0.000000 0.000000 0.003094 0 16.000000 0.003094 0
- L3 0 0.000000 16.000000 0.003094 0 16.000000 6.003094 0
- L3 0 0.000000 16.000000 6.003094 0 0.000000 6.003094 0
- L3 0 0.000000 0.000000 6.003094 0 0.000000 0.003094 0
- L3 0 0.000000 0.000000 0.503094 0 4.500000 0.503094 0
- L3 0 0.000000 4.500000 0.503094 0 4.500000 5.565594 0
- L3 0 0.000000 4.500000 5.565594 0 0.000000 5.565594 0
- L3 0 0.000000 0.000000 5.565594 0 0.000000 0.503094 0
- L3 0 0.000000 16.000000 0.003094 0 11.437500 0.003094 0
- L3 0 0.000000 16.000000 5.346844 0 16.000000 0.003094 0
- L3 0 0.000000 16.000000 0.503094 0 11.500000 0.503094 0
- L3 0 0.000000 11.500000 0.503094 0 11.500000 5.565594 0
- L3 0 0.000000 11.500000 5.565594 0 16.000000 5.565594 0
- L3 0 0.000000 16.000000 5.565594 0 16.000000 0.503094 0
- L3 0 0.000000 4.468750 5.565594 0 4.468750 6.003094 0
- L3 0 0.000000 11.500000 5.565594 0 11.500000 6.003094 0
- L3 0 0.000000 11.500000 0.503094 0 11.500000 0.003094 0
- L3 0 0.000000 4.500000 0.503094 0 4.500000 0.003094 0
- A3 0 0.000000 0.159344 8.000000 0.159344 0 0.000000 360.000000
- A3 0 0.000000 0.156250 10.500000 0.190594 0 0.000000 360.000000
- A3 0 0.000000 0.156250 9.250000 0.159344 0 0.000000 360.000000
- A3 0 0.000000 0.159344 5.500000 0.159344 0 0.000000 360.000000
- A3 0 0.000000 0.159344 6.750000 0.159344 0 0.000000 360.000000
- L3 0 0.000000 0.125000 5.378094 0 4.343750 5.378094 0
- L3 0 0.000000 4.343750 5.378094 0 4.343750 0.659344 0
- L3 0 0.000000 4.343750 0.659344 0 0.125000 0.659344 0
- L3 0 0.000000 0.125000 0.659344 0 0.125000 5.378094 0
- L3 0 0.000000 11.687500 5.378094 0 15.843750 5.378094 0
- L3 0 0.000000 15.843750 5.378094 0 15.843750 0.690594 0
- L3 0 0.000000 15.843750 0.690594 0 11.687500 0.690594 0
- L3 0 0.000000 11.687500 0.690594 0 11.687500 5.378094 0
- L3 0 0.000000 4.625000 5.815594 0 11.375000 5.815594 0
- L3 0 0.000000 11.375000 5.815594 0 11.375000 0.503094 0
- L3 0 0.000000 11.375000 0.503094 0 4.625000 0.503094 0
- L3 0 0.000000 4.625000 0.503094 0 4.625000 5.815594 0
- L3 0 0.000000 7.500000 0.503094 0 8.500000 0.503094 0
- L3 0 0.000000 8.500000 0.503094 0 8.500000 0.690594 0
- L3 0 0.000000 8.500000 0.690594 0 7.500000 0.690594 0
- L3 0 0.000000 7.500000 0.690594 0 7.500000 0.503094 0
- END
-
-
-
-SUBCONTENTS Walthers Cornerstone N Structures - Trackside Industries
-STRUCTURE N "Walther's Icing Platform 292-3061"
- F3 13816530 0.000000 4
- 0.000000 0.015625 0
- 10.000000 0.015625 0
- 10.000000 1.453125 0
- 0.000000 1.453125 0
- F3 8404992 0.000000 4
- 0.000000 1.453125 0
- 0.046875 1.453125 0
- 0.046875 0.031250 0
- 0.000000 0.031250 0
- F3 8404992 0.000000 4
- 0.000000 1.453125 0
- 10.000000 1.453125 0
- 10.000000 1.406250 0
- 0.000000 1.406250 0
- F3 8404992 0.000000 4
- 0.000000 0.015625 0
- 10.000000 0.015625 0
- 10.000000 0.062500 0
- 0.000000 0.062500 0
- F3 8404992 0.000000 4
- 10.000000 0.890625 0
- 11.859375 0.890625 0
- 11.859375 0.515625 0
- 10.000000 0.515625 0
- F3 8404992 0.000000 4
- 10.796875 0.500000 0
- 10.750000 0.500000 0
- 10.750000 0.000000 0
- 10.796875 0.000000 0
- F3 8404992 0.000000 4
- 10.796875 1.406250 0
- 10.750000 1.406250 0
- 10.750000 0.875000 0
- 10.796875 0.875000 0
- L3 0 0.000000 10.125000 0.906250 0 10.125000 0.500000 0
- L3 12632256 0.000000 10.250000 0.906250 0 10.250000 0.515625 0
- L3 0 0.000000 10.375000 0.890625 0 10.375000 0.515625 0
- L3 0 0.000000 10.500000 0.906250 0 10.500000 0.531250 0
- L3 0 0.000000 10.625000 0.906250 0 10.625000 0.531250 0
- L3 0 0.000000 10.750000 0.890625 0 10.750000 0.531250 0
- L3 0 0.000000 10.875000 0.890625 0 10.875000 0.515625 0
- L3 0 0.000000 11.000000 0.890625 0 11.000000 0.500000 0
- L3 0 0.000000 11.125000 0.906250 0 11.125000 0.531250 0
- L3 0 0.000000 11.250000 0.906250 0 11.250000 0.500000 0
- L3 0 0.000000 11.375000 0.906250 0 11.375000 0.531250 0
- L3 0 0.000000 11.500000 0.890625 0 11.500000 0.515625 0
- L3 0 0.000000 11.625000 0.890625 0 11.625000 0.531250 0
- L3 0 0.000000 11.750000 0.906250 0 11.750000 0.515625 0
- F3 13816530 0.000000 4
- 9.984375 0.078125 0
- 10.750000 0.078125 0
- 10.750000 1.406250 0
- 9.984375 1.406250 0
- F3 8404992 0.000000 4
- 9.968750 1.453125 0
- 10.781250 1.453125 0
- 10.781250 1.406250 0
- 9.968750 1.406250 0
- F3 8404992 0.000000 4
- 10.000000 0.015625 0
- 10.750000 0.015625 0
- 10.750000 0.062500 0
- 10.000000 0.062500 0
- END
-STRUCTURE N "Walther's Icing Platform Add-On 292-3062"
- F3 13816530 0.000000 4
- 0.000000 0.015625 0
- 10.000000 0.015625 0
- 10.000000 1.453125 0
- 0.000000 1.453125 0
- F3 8404992 0.000000 4
- 0.000000 1.453125 0
- 0.046875 1.453125 0
- 0.046875 0.031250 0
- 0.000000 0.031250 0
- F3 8404992 0.000000 4
- 0.000000 1.453125 0
- 10.000000 1.453125 0
- 10.000000 1.406250 0
- 0.000000 1.406250 0
- F3 8404992 0.000000 4
- 0.000000 0.015625 0
- 10.000000 0.015625 0
- 10.000000 0.062500 0
- 0.000000 0.062500 0
- F3 13684944 0.000000 4
- 10.796875 0.500000 0
- 10.750000 0.500000 0
- 10.750000 0.000000 0
- 10.796875 0.000000 0
- F3 13684944 0.000000 4
- 10.796875 1.406250 0
- 10.750000 1.406250 0
- 10.750000 0.875000 0
- 10.796875 0.875000 0
- F3 13816530 0.000000 4
- 9.984375 0.078125 0
- 10.750000 0.078125 0
- 10.750000 1.406250 0
- 9.984375 1.406250 0
- F3 8404992 0.000000 4
- 9.968750 1.453125 0
- 10.781250 1.453125 0
- 10.781250 1.406250 0
- 9.968750 1.406250 0
- F3 8404992 0.000000 4
- 10.000000 0.015625 0
- 10.750000 0.015625 0
- 10.750000 0.062500 0
- 10.000000 0.062500 0
- F3 13816530 0.000000 4
- 10.796875 0.890625 0
- 10.750000 0.890625 0
- 10.750000 0.500000 0
- 10.796875 0.500000 0
- END
-STRUCTURE N "Walther's Ice House 292-526"
- F3 8421504 0.000000 4
- 2.000000 0.984375 0
- 7.000000 0.984375 0
- 7.000000 3.984375 0
- 2.000000 3.984375 0
- F3 8421504 0.000000 4
- 0.000000 2.984375 0
- 2.000000 2.984375 0
- 2.000000 1.984375 0
- 0.000000 1.984375 0
- L3 0 0.000000 0.000000 2.484375 0 7.015625 2.484375 0
- L3 0 0.000000 2.000000 2.984375 0 2.000000 1.984375 0
- F3 8421504 0.000000 4
- 7.000000 3.734375 0
- 9.000000 3.734375 0
- 9.000000 1.234375 0
- 7.000000 1.234375 0
- L3 0 0.000000 7.000000 3.734375 0 7.000000 1.234375 0
- L3 0 0.000000 7.000000 2.484375 0 9.000000 2.484375 0
- F3 14737632 0.000000 4
- 7.000000 1.234375 0
- 9.000000 1.234375 0
- 9.000000 0.984375 0
- 7.000000 0.984375 0
- F3 15132390 0.000000 4
- 7.000000 3.734375 0
- 9.000000 3.734375 0
- 9.000000 3.984375 0
- 7.000000 3.984375 0
- F3 8421504 0.000000 4
- 9.000000 3.734375 0
- 10.000000 3.734375 0
- 10.000000 1.250000 0
- 9.000000 1.250000 0
- L3 0 0.000000 9.000000 1.234375 0 9.000000 3.734375 0
- F3 8421504 0.000000 4
- 9.000000 0.484375 0
- 8.250000 0.484375 0
- 8.250000 1.234375 0
- 9.000000 1.234375 0
- L3 0 0.000000 8.250000 1.234375 0 9.000000 1.234375 0
- F3 8421504 0.000000 4
- 9.000000 1.250000 0
- 10.000000 1.250000 0
- 10.000000 0.000000 0
- 9.000000 0.000000 0
- L3 0 0.000000 9.000000 1.234375 0 10.000000 1.234375 0
- L3 0 0.000000 9.000000 1.312500 0 9.000000 0.484375 0
- G3 15790320 0.000000 0.281250 9.500000 0.859375 0
- G3 0 0.000000 0.188150 9.500000 0.859375 0
- END
-STRUCTURE N "Walther's Icing Platform 933-3245B"
- F3 8421504 0.000000 4
- 0.000000 0.000000 0
- 9.250000 0.000000 0
- 9.250000 0.875000 0
- 0.000000 0.875000 0
- L3 0 0.000000 0.000000 0.437500 0 9.250000 0.437500 0
- F3 13882323 0.000000 4
- 9.250000 0.562500 0
- 9.875000 0.562500 0
- 9.875000 0.312500 0
- 9.250000 0.312500 0
- L3 0 0.000000 9.375000 0.562500 0 9.375000 0.312500 0
- L3 0 0.000000 9.500000 0.562500 0 9.500000 0.312500 0
- L3 0 0.000000 9.625000 0.562500 0 9.625000 0.328125 0
- L3 0 0.000000 9.750000 0.562500 0 9.750000 0.312500 0
- END
-STRUCTURE N "Walther's Ice House 933-3245A"
- F3 8421504 0.000000 4
- 0.000000 0.000000 0
- 6.500000 0.000000 0
- 6.500000 2.875000 0
- 0.000000 2.875000 0
- L3 0 0.000000 0.000000 1.437500 0 6.500000 1.437500 0
- L3 0 0.000000 1.500000 1.437500 0 1.500000 0.000000 0
- L3 0 0.000000 5.000000 1.437500 0 5.000000 0.000000 0
- L3 0 0.000000 1.250000 1.000000 0 1.250000 0.000000 0
- L3 0 0.000000 1.750000 1.000000 0 1.750000 0.000000 0
- L3 0 0.000000 4.750000 1.000000 0 4.750000 0.000000 0
- L3 0 0.000000 5.250000 1.000000 0 5.250000 0.000000 0
- L3 0 0.000000 1.500000 1.437500 0 1.250000 1.000000 0
- L3 0 0.000000 1.500000 1.437500 0 1.750000 1.000000 0
- L3 0 0.000000 5.000000 1.437500 0 4.750000 1.000000 0
- L3 0 0.000000 5.000000 1.437500 0 5.250000 1.000000 0
- L3 0 0.000000 0.500000 1.625000 0 0.843750 1.625000 0
- L3 0 0.000000 0.843750 1.625000 0 0.843750 1.250000 0
- L3 0 0.000000 0.843750 1.250000 0 0.500000 1.250000 0
- L3 0 0.000000 0.500000 1.250000 0 0.500000 1.625000 0
- L3 0 0.000000 3.062500 1.250000 0 3.437500 1.250000 0
- L3 0 0.000000 3.437500 1.250000 0 3.437500 1.625000 0
- L3 0 0.000000 3.437500 1.625000 0 3.062500 1.625000 0
- L3 0 0.000000 3.062500 1.625000 0 3.062500 1.250000 0
- L3 0 0.000000 6.000000 1.250000 0 5.625000 1.250000 0
- L3 0 0.000000 5.625000 1.250000 0 5.625000 1.625000 0
- L3 0 0.000000 5.625000 1.625000 0 6.000000 1.625000 0
- L3 0 0.000000 6.000000 1.625000 0 6.000000 1.250000 0
- END
-STRUCTURE N "Walthers Interstate Fuel - Loading Rack 933-32000a"
- L 0 0 0.750000 0.000000 3.750000 0.000000
- L 0 0 3.750000 0.000000 3.750000 3.125000
- L 0 0 3.750000 3.125000 0.750000 3.125000
- L 0 0 3.687500 0.062500 1.687500 0.062500
- L 0 0 1.687500 0.062500 1.687500 0.812500
- L 0 0 1.687500 0.812500 3.687500 0.812500
- L 0 0 3.687500 0.812500 3.687500 0.062500
- L 0 0 3.687500 3.062500 1.687500 3.062500
- L 0 0 1.687500 3.062500 1.687500 2.312500
- L 0 0 1.687500 2.312500 3.687500 2.312500
- L 0 0 3.687500 2.312500 3.687500 3.062500
- L 0 0 3.687500 1.187500 1.687500 1.187500
- L 0 0 1.687500 1.187500 1.687500 1.937500
- L 0 0 1.687500 1.937500 3.687500 1.937500
- L 0 0 3.687500 1.937500 3.687500 1.187500
- A 0 0 0.088388 3.000000 2.687500 0.000000 360.000000
- A 0 0 0.088388 3.000000 1.562500 0.000000 360.000000
- A 0 0 0.088388 3.000000 0.437500 0.000000 360.000000
- L 0 0 0.750000 2.875000 0.000000 2.875000
- L 0 0 0.000000 2.875000 0.000000 0.250000
- L 0 0 0.000000 0.250000 0.750000 0.250000
- L 0 0 1.500000 2.187500 0.437500 2.187500
- L 0 0 0.437500 2.187500 0.437500 0.937500
- L 0 0 0.437500 0.937500 1.500000 0.937500
- L 0 0 1.500000 0.937500 1.500000 2.187500
- L 0 0 0.750000 3.125000 0.750000 2.187500
- L 0 0 0.750000 0.000000 0.750000 0.937500
- END
-STRUCTURE N "Walthers Interstate Fuel - Office 933-3200b"
- L 0 0 0.000000 3.000000 2.000000 3.000000
- L 0 0 2.000000 3.000000 2.000000 0.500000
- L 0 0 2.000000 0.500000 0.000000 0.500000
- L 0 0 0.000000 0.500000 0.000000 3.000000
- L 0 0 2.000000 2.250000 2.500000 2.250000
- L 0 0 2.500000 2.250000 2.500000 0.000000
- L 0 0 2.500000 0.000000 0.375000 0.000000
- L 0 0 0.375000 0.000000 0.375000 0.500000
- A 0 0 0.088388 1.000000 2.375000 0.000000 360.000000
- A 0 0 0.088388 1.000000 1.125000 0.000000 360.000000
- END
-STRUCTURE N "Walthers Interstate Fuel - Shed 933-3200c"
- L 0 0 0.000000 0.000000 1.000000 0.000000
- L 0 0 1.000000 0.000000 1.000000 0.625000
- L 0 0 1.000000 0.625000 0.000000 0.625000
- L 0 0 0.000000 0.625000 0.000000 0.000000
- L 0 0 0.000000 0.312500 1.000000 0.312500
- END
-STRUCTURE N "Walthers Interstate Fuel - Tanks 933-3200d"
- L 0 0 1.000000 2.062500 1.000000 1.125000
- L 0 0 0.062500 0.000000 0.937500 0.000000
- L 0 0 0.000000 0.062500 0.062500 0.000000
- L 0 0 1.000000 0.062500 0.937500 0.000000
- L 0 0 1.000000 0.062500 1.000000 1.000000
- L 0 0 0.000000 1.000000 0.000000 0.062500
- L 0 0 0.000000 2.062500 0.000000 1.125000
- L 0 0 0.000000 1.125000 0.062500 1.062500
- L 0 0 0.062500 1.062500 0.000000 1.000000
- L 0 0 1.000000 1.000000 0.937500 1.062500
- L 0 0 0.937500 1.062500 1.000000 1.125000
- L 0 0 0.062500 2.125000 0.937500 2.125000
- L 0 0 0.937500 2.125000 1.000000 2.062500
- L 0 0 0.062500 2.125000 0.000000 2.062500
- A 0 0 0.455007 0.500000 0.500000 0.000000 360.000000
- A 0 0 0.437500 0.500000 1.625000 0.000000 360.000000
- END
-STRUCTURE N "Walthers Water St Freight Terminal 933-3201"
- L 0 0 0.500000 0.000000 11.000000 0.000000
- L 0 0 11.000000 0.000000 11.000000 0.500000
- L 0 0 11.000000 0.500000 10.000000 0.500000
- L 0 0 9.500000 0.000000 9.500000 3.500000
- L 0 0 9.500000 3.500000 4.000000 3.500000
- L 0 0 4.000000 3.500000 4.000000 0.000000
- L 0 0 4.000000 1.750000 9.500000 1.750000
- L 0 0 4.000000 3.250000 0.500000 3.250000
- L 0 0 4.000000 0.500000 0.500000 0.500000
- L 0 0 0.500000 2.125000 -0.062500 2.125000
- L 0 0 0.000000 2.125000 0.000000 1.625000
- L 0 0 0.000000 1.625000 0.500000 1.625000
- L 0 0 0.500000 1.625000 0.500000 0.000000
- L 0 0 0.500000 3.250000 0.500000 2.125000
- L 0 0 9.500000 2.125000 10.000000 2.125000
- L 0 0 10.000000 2.125000 10.000000 0.500000
- END
-STRUCTURE N "Walthers Mi-Jack Crane (Intermodal) 3222"
- F3 16776960 0.000000 4
- 0.000000 0.000000 0
- 4.000000 0.000000 0
- 4.000000 0.250000 0
- 0.000000 0.250000 0
- F3 0 0.000000 4
- 0.000000 3.000000 0
- 0.000000 3.000000 0
- 0.000000 3.000000 0
- 0.000000 3.000000 0
- F3 16776960 0.000000 4
- 0.000000 3.000000 0
- 4.000000 3.000000 0
- 4.000000 3.250000 0
- 0.000000 3.250000 0
- F3 16776960 0.000000 4
- 2.500000 3.000000 0
- 2.750000 3.000000 0
- 2.750000 0.281250 0
- 2.500000 0.281250 0
- L3 0 0.000000 0.250000 3.000000 0 0.375000 3.000000 0
- L3 0 0.000000 0.375000 0.281250 0 0.250000 0.281250 0
- L3 0 0.000000 0.000000 3.250000 0 4.000000 3.250000 0
- L3 0 0.000000 4.000000 3.250000 0 4.000000 3.000000 0
- L3 0 0.000000 4.000000 3.000000 0 0.000000 3.000000 0
- L3 0 0.000000 0.000000 3.000000 0 0.000000 3.250000 0
- L3 0 0.000000 0.000000 0.250000 0 3.968750 0.250000 0
- L3 0 0.000000 3.968750 0.250000 0 3.968750 0.000000 0
- L3 0 0.000000 3.968750 0.000000 0 0.000000 0.000000 0
- L3 0 0.000000 0.000000 0.000000 0 0.000000 0.250000 0
- L3 0 0.000000 2.500000 3.000000 0 2.750000 3.000000 0
- L3 0 0.000000 2.750000 3.000000 0 2.750000 0.250000 0
- L3 0 0.000000 2.750000 0.250000 0 2.500000 0.250000 0
- L3 0 0.000000 2.500000 0.250000 0 2.500000 3.000000 0
- Z 0 0.265623 3.000000 90.000000 0 18.000000 "xxxxxxxxxxxxxxxxxxxxxx"
- L3 0 0.000000 0.406250 3.000000 0 0.406250 0.265625 0
- L3 0 0.000000 0.250000 3.000000 0 0.250000 0.250000 0
- END
-STRUCTURE N "Walthers Santa Fe Freight House circa 1908 933-3804"
- F3 16379605 0.000000 4
- 0.000000 3.750000 0
- 6.750000 3.750000 0
- 6.750000 0.000000 0
- 0.000000 0.000000 0
- L3 0 0.000000 0.000000 0.000000 0 6.750000 0.000000 0
- L3 0 0.000000 6.750000 0.000000 0 6.750000 3.750000 0
- L3 0 0.000000 6.750000 3.750000 0 0.000000 3.750000 0
- L3 0 0.000000 0.000000 3.750000 0 0.000000 0.000000 0
- L3 0 0.000000 0.375000 0.375000 0 6.375000 0.375000 0
- L3 0 0.000000 6.375000 0.375000 0 6.375000 3.375000 0
- L3 0 0.000000 6.375000 3.375000 0 0.375000 3.375000 0
- L3 0 0.000000 0.375000 3.375000 0 0.375000 0.375000 0
- L3 0 0.000000 0.375000 0.750000 0 0.500000 0.750000 0
- L3 0 0.000000 0.484375 0.500000 0 0.625000 0.500000 0
- L3 0 0.000000 0.609375 0.500000 0 0.609375 0.375000 0
- L3 0 0.000000 0.625000 3.265625 0 0.484375 3.265625 0
- L3 0 0.000000 0.484375 3.265625 0 0.484375 3.156250 0
- L3 0 0.000000 0.484375 3.156250 0 0.390625 3.156250 0
- L3 0 0.000000 6.000000 3.359375 0 6.000000 3.250000 0
- L3 0 0.000000 6.000000 3.250000 0 6.250000 3.250000 0
- L3 0 0.000000 6.375000 3.125000 0 6.250000 3.125000 0
- L3 0 0.000000 6.250000 3.125000 0 6.250000 3.250000 0
- L3 0 0.000000 6.000000 0.375000 0 6.000000 0.500000 0
- L3 0 0.000000 6.000000 0.500000 0 6.250000 0.500000 0
- L3 0 0.000000 6.250000 0.500000 0 6.250000 0.750000 0
- L3 0 0.000000 6.375000 2.500000 0 6.234375 2.500000 0
- L3 0 0.000000 6.234375 2.500000 0 6.234375 1.500000 0
- L3 0 0.000000 6.234375 1.500000 0 6.375000 1.500000 0
- L3 0 0.000000 6.375000 1.500000 0 6.375000 2.500000 0
- L3 0 0.000000 2.250000 3.375000 0 4.250000 3.375000 0
- L3 0 0.000000 4.250000 3.375000 0 4.250000 3.250000 0
- L3 0 0.000000 4.250000 3.250000 0 2.250000 3.250000 0
- L3 0 0.000000 2.250000 3.250000 0 2.250000 3.375000 0
- L3 0 0.000000 2.250000 0.375000 0 4.250000 0.375000 0
- L3 0 0.000000 4.250000 0.375000 0 4.250000 0.500000 0
- L3 0 0.000000 4.250000 0.500000 0 2.250000 0.500000 0
- L3 0 0.000000 2.250000 0.500000 0 2.250000 0.375000 0
- END
-STRUCTURE N "Walthers Cornerstone Structures 2 Story factory/w Loading Addition 933-3297"
- F3 8388608 0.000000 4
- 0.000000 5.250000 0
- 7.750000 5.250000 0
- 7.750000 5.000000 0
- 0.000000 5.000000 0
- F3 8388608 0.000000 4
- 7.750000 5.000000 0
- 7.500000 5.000000 0
- 7.500000 3.250000 0
- 7.750000 3.250000 0
- F3 8388608 0.000000 4
- 0.000000 5.000000 0
- 0.250000 5.000000 0
- 0.250000 0.000000 0
- 0.000000 0.000000 0
- F3 8388608 0.000000 4
- 0.234375 0.000000 0
- 5.250000 0.000000 0
- 5.250000 0.250000 0
- 0.234375 0.250000 0
- F3 0 0.000000 4
- 5.000000 0.234375 0
- 4.984375 0.234375 0
- 4.984375 0.250000 0
- 5.000000 0.250000 0
- F3 8388608 0.000000 4
- 5.000000 0.250000 0
- 5.250000 0.250000 0
- 5.250000 3.296875 0
- 4.984375 3.296875 0
- F3 8388608 0.000000 4
- 7.484375 3.265625 0
- 5.000000 3.265625 0
- 5.000000 3.500000 0
- 7.484375 3.500000 0
- F3 12632256 0.000000 4
- 0.250000 5.015625 0
- 4.968750 5.015625 0
- 4.968750 0.281250 0
- 0.250000 0.281250 0
- F3 12632256 0.000000 4
- 4.968750 5.000000 0
- 7.468750 5.000000 0
- 7.468750 3.531250 0
- 4.968750 3.531250 0
- F3 0 0.000000 4
- 4.984375 3.515625 0
- 4.984375 3.515625 0
- 4.984375 3.515625 0
- 4.984375 3.515625 0
- F3 8388608 0.000000 4
- 5.000000 3.515625 0
- 0.234375 3.515625 0
- 0.234375 3.250000 0
- 5.000000 3.250000 0
- L3 0 0.000000 0.218750 1.750000 0 4.968750 1.750000 0
- A3 0 0.000000 0.125000 2.500000 1.000000 0 0.000000 360.000000
- A3 0 0.000000 0.109375 1.000000 2.500000 0 0.000000 360.000000
- A3 0 0.000000 0.109375 4.000000 2.500000 0 0.000000 360.000000
- A3 0 0.000000 0.125000 5.000000 4.000000 0 0.000000 360.000000
- A3 0 0.000000 0.125000 7.000000 4.000000 0 0.000000 360.000000
- F3 8388608 0.000000 4
- 1.531250 2.937500 0
- 1.718750 2.937500 0
- 1.718750 2.750000 0
- 1.531250 2.750000 0
- L3 0 0.000000 0.500000 3.250000 0 0.500000 0.281250 0
- L3 0 0.000000 0.750000 3.250000 0 0.750000 0.250000 0
- L3 0 0.000000 1.000000 2.390625 0 1.000000 0.281250 0
- L3 0 0.000000 1.000000 3.250000 0 1.000000 2.609375 0
- L3 0 0.000000 1.250000 3.250000 0 1.250000 0.250000 0
- L3 0 0.000000 1.500000 3.250000 0 1.500000 0.250000 0
- L3 0 0.000000 2.000000 3.250000 0 2.000000 0.234375 0
- L3 0 0.000000 2.250000 3.250000 0 2.250000 0.250000 0
- L3 0 0.000000 2.500000 3.250000 0 2.500000 1.125000 0
- L3 0 0.000000 2.500000 0.859375 0 2.500000 0.265625 0
- L3 0 0.000000 1.750000 3.250000 0 1.750000 0.234375 0
- F3 0 0.000000 4
- 1.562500 2.906250 0
- 1.687500 2.906250 0
- 1.687500 2.796875 0
- 1.562500 2.796875 0
- L3 0 0.000000 2.750000 3.250000 0 2.750000 0.250000 0
- L3 0 0.000000 3.000000 3.250000 0 3.000000 0.250000 0
- L3 0 0.000000 3.250000 3.250000 0 3.250000 0.250000 0
- L3 0 0.000000 4.750000 3.250000 0 4.750000 0.250000 0
- L3 0 0.000000 4.500000 3.250000 0 4.500000 0.250000 0
- L3 0 0.000000 4.250000 3.250000 0 4.250000 0.250000 0
- L3 0 0.000000 3.500000 3.250000 0 3.500000 0.250000 0
- L3 0 0.000000 3.750000 3.250000 0 3.750000 0.250000 0
- L3 0 0.000000 4.000000 3.250000 0 4.000000 2.609375 0
- L3 0 0.000000 4.000000 2.390625 0 4.000000 0.250000 0
- END
-STRUCTURE N "Walthers Cornerstone Structures Van Dyke Farm Windmill 933-3801"
- L3 0 0.000000 0.000000 1.250000 0 0.500000 0.750000 0
- L3 0 0.000000 1.250000 1.250000 0 0.734375 0.750000 0
- L3 0 0.000000 0.000000 0.000000 0 0.500000 0.500000 0
- L3 0 0.000000 1.250000 0.000000 0 0.750000 0.500000 0
- L3 0 0.000000 0.250000 1.000000 0 1.000000 1.000000 0
- L3 0 0.000000 1.000000 1.000000 0 1.000000 0.250000 0
- L3 0 0.000000 1.000000 0.250000 0 0.250000 0.250000 0
- L3 0 0.000000 0.250000 0.250000 0 0.250000 1.000000 0
- F3 12632256 0.000000 4
- 0.500000 0.750000 0
- 0.750000 0.750000 0
- 0.750000 0.500000 0
- 0.500000 0.500000 0
- L3 0 0.000000 0.125000 1.125000 0 1.125000 1.125000 0
- L3 0 0.000000 1.125000 1.125000 0 1.125000 0.125000 0
- L3 0 0.000000 1.125000 0.125000 0 0.125000 0.125000 0
- L3 0 0.000000 0.125000 0.125000 0 0.125000 1.125000 0
- L3 0 0.000000 0.375000 0.875000 0 0.875000 0.875000 0
- L3 0 0.000000 0.875000 0.875000 0 0.875000 0.375000 0
- L3 0 0.000000 0.875000 0.375000 0 0.375000 0.375000 0
- L3 0 0.000000 0.375000 0.375000 0 0.375000 0.875000 0
- L3 0 0.000000 0.625000 0.812500 0 0.625000 0.312500 0
- F3 12632256 0.000000 4
- 0.593750 0.812500 0
- 0.656250 0.812500 0
- 0.656250 0.968750 0
- 0.593750 0.968750 0
- F3 12632256 0.000000 4
- 0.812500 0.312500 0
- 0.437500 0.312500 0
- 0.437500 0.218750 0
- 0.812500 0.218750 0
- END
-STRUCTURE N "Walthers Cornerstone Structures Walking Beam/""Horse Head"" Oil Pump 933-3248"
- L3 0 0.000000 0.000000 0.000000 0 2.750000 0.000000 0
- L3 0 0.000000 2.750000 0.000000 0 2.750000 1.000000 0
- L3 0 0.000000 2.750000 1.000000 0 0.000000 1.000000 0
- L3 0 0.000000 0.000000 1.000000 0 0.000000 0.000000 0
- F3 0 0.000000 4
- 2.718750 0.750000 0
- 2.718750 0.750000 0
- 2.718750 0.750000 0
- 2.718750 0.750000 0
- F3 0 0.000000 4
- 2.000000 0.750000 0
- 2.500000 0.750000 0
- 2.500000 0.250000 0
- 2.000000 0.250000 0
- F3 0 0.000000 4
- 0.250000 0.562500 0
- 1.734375 0.562500 0
- 1.734375 0.437500 0
- 0.250000 0.437500 0
- F3 0 0.000000 4
- 1.750000 0.750000 0
- 1.875000 0.750000 0
- 1.875000 0.250000 0
- 1.750000 0.250000 0
- F3 0 0.000000 4
- 1.875000 0.671875 0
- 1.984375 0.671875 0
- 1.984375 0.640625 0
- 1.875000 0.640625 0
- F3 0 0.000000 4
- 1.859375 0.312500 0
- 1.984375 0.312500 0
- 1.984375 0.343750 0
- 1.859375 0.343750 0
- END
-STRUCTURE N "Walther's Cornerstone Structure The Bralick Building 933-3255"
- F3 12632256 0.000000 4
- 0.000000 0.375000 0
- 6.750000 0.375000 0
- 6.750000 5.406250 0
- 0.000000 5.406250 0
- F3 12632256 0.000000 4
- 2.625000 0.000000 0
- 3.687500 0.000000 0
- 3.687500 0.375000 0
- 2.625000 0.375000 0
- F3 12632256 0.000000 4
- 7.125000 1.000000 0
- 6.750000 1.000000 0
- 6.750000 1.625000 0
- 7.125000 1.625000 0
- F3 8421504 0.000000 4
- 0.125000 5.312500 0
- 6.656250 5.312500 0
- 6.656250 0.468750 0
- 0.125000 0.468750 0
- L3 0 0.000000 2.625000 0.375000 0 3.671875 0.375000 0
- L3 0 0.000000 6.750000 1.625000 0 6.750000 1.000000 0
- F3 12632256 0.000000 4
- 2.375000 2.000000 0
- 4.000000 2.000000 0
- 4.000000 4.000000 0
- 2.375000 4.000000 0
- F3 12632256 0.000000 4
- 5.156250 4.125000 0
- 5.484375 4.125000 0
- 5.484375 3.828125 0
- 5.156250 3.828125 0
- END
-STRUCTURE N "Walther's Cornerstone Structure Shed 933-3822"
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 4.125000 0.000000 0
- 4.125000 2.625000 0
- 0.000000 2.625000 0
- L3 0 0.000000 0.000000 1.312500 0 4.093750 1.312500 0
- F3 0 0.000000 4
- 1.937500 1.375000 0
- 2.062500 1.375000 0
- 2.062500 1.250000 0
- 1.937500 1.250000 0
- L3 0 0.000000 0.125000 2.625000 0 0.125000 0.000000 0
- L3 0 0.000000 0.250000 2.625000 0 0.234375 0.000000 0
- L3 0 0.000000 0.375000 2.625000 0 0.375000 0.000000 0
- L3 0 0.000000 0.500000 2.625000 0 0.500000 0.000000 0
- L3 0 0.000000 0.625000 2.625000 0 0.609375 0.000000 0
- L3 0 0.000000 0.750000 2.625000 0 0.734375 0.000000 0
- L3 0 0.000000 0.875000 0.000000 0 0.875000 2.625000 0
- L3 0 0.000000 1.000000 0.000000 0 1.000000 2.625000 0
- L3 0 0.000000 1.125000 0.000000 0 1.125000 2.625000 0
- L3 0 0.000000 1.250000 2.625000 0 1.250000 0.000000 0
- L3 0 0.000000 1.375000 2.625000 0 1.375000 0.000000 0
- L3 0 0.000000 1.500000 2.625000 0 1.484375 0.015625 0
- L3 0 0.000000 1.625000 2.625000 0 1.625000 0.000000 0
- L3 0 0.000000 1.750000 2.625000 0 1.750000 0.000000 0
- L3 0 0.000000 1.875000 2.625000 0 1.875000 0.000000 0
- L3 0 0.000000 2.000000 2.625000 0 2.000000 0.000000 0
- L3 0 0.000000 2.125000 2.625000 0 2.109375 0.015625 0
- L3 0 0.000000 2.250000 2.625000 0 2.234375 0.000000 0
- L3 0 0.000000 2.375000 0.000000 0 2.359375 2.625000 0
- L3 0 0.000000 2.500000 0.000000 0 2.500000 2.625000 0
- L3 0 0.000000 3.000000 0.000000 0 3.000000 2.625000 0
- L3 0 0.000000 2.750000 0.000000 0 2.750000 2.625000 0
- L3 0 0.000000 2.625000 2.625000 0 2.625000 0.000000 0
- L3 0 0.000000 2.875000 2.625000 0 2.875000 0.000000 0
- L3 0 0.000000 3.125000 2.625000 0 3.125000 0.000000 0
- L3 0 0.000000 3.250000 2.625000 0 3.250000 0.000000 0
- L3 0 0.000000 3.375000 2.625000 0 3.359375 0.000000 0
- L3 0 0.000000 3.500000 2.625000 0 3.500000 0.015625 0
- L3 0 0.000000 3.625000 2.625000 0 3.625000 0.000000 0
- L3 0 0.000000 3.750000 2.625000 0 3.734375 0.031250 0
- L3 0 0.000000 3.875000 2.625000 0 3.875000 0.000000 0
- L3 0 0.000000 4.000000 2.625000 0 4.000000 0.000000 0
- END
-STRUCTURE N "Walthers Cornerstone Structures Parkview Terrace Backgroung Bldg. (Tuscan) 933-3263"
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 4.625000 0.000000 0
- 4.625000 1.375000 0
- 0.000000 1.375000 0
- F3 8388608 0.000000 4
- 0.000000 0.000000 0
- 0.125000 0.000000 0
- 0.125000 1.375000 0
- 0.000000 1.375000 0
- F3 8388608 0.000000 4
- 4.609375 0.000000 0
- 4.500000 0.000000 0
- 4.500000 1.375000 0
- 4.609375 1.375000 0
- END
-STRUCTURE N "Walthers Cornerstone Structures Rolling Mill 933-3250"
- F3 12632256 0.000000 4
- 0.000000 0.000000 0
- 11.375000 0.000000 0
- 11.375000 7.000000 0
- 0.000000 7.000000 0
- L3 0 0.000000 0.000000 3.500000 0 11.375000 3.500000 0
- L3 0 0.000000 0.500000 4.000000 0 10.500000 4.000000 0
- L3 0 0.000000 10.500000 4.000000 0 10.500000 3.000000 0
- L3 0 0.000000 10.500000 3.000000 0 0.500000 3.000000 0
- L3 0 0.000000 0.500000 3.000000 0 0.500000 4.000000 0
- END
-STRUCTURE N "Walthers Cornerstone Co-Op Storage Shed 933-3230"
- L3 0 0.062500 0.031250 0.031250 0 4.281250 0.031250 0
- L3 0 0.062500 4.281250 0.031250 0 4.281250 2.781250 0
- L3 0 0.062500 4.281250 2.781250 0 0.031250 2.781250 0
- L3 0 0.062500 0.031250 2.781250 0 0.031250 0.031250 0
- L3 0 0.062500 0.031250 1.406250 0 4.281250 1.406250 0
- F3 0 0.000000 4
- 2.031250 1.531250 0
- 2.281250 1.531250 0
- 2.281250 1.281250 0
- 2.031250 1.281250 0
- L3 12632256 0.000000 0.281250 2.781250 0 0.281250 1.531250 0
- L3 12632256 0.000000 0.531250 2.531250 0 0.531250 1.531250 0
- L3 12632256 0.000000 0.781250 2.781250 0 0.781250 1.531250 0
- L3 12632256 0.000000 1.031250 2.531250 0 1.031250 1.531250 0
- L3 12632256 0.000000 1.281250 2.781250 0 1.281250 1.531250 0
- L3 12632256 0.000000 1.531250 2.531250 0 1.531250 1.531250 0
- L3 12632256 0.000000 1.781250 2.781250 0 1.781250 1.531250 0
- L3 12632256 0.000000 2.031250 2.531250 0 2.031250 1.531250 0
- L3 12632256 0.000000 2.281250 2.781250 0 2.281250 1.531250 0
- L3 12632256 0.000000 2.531250 2.531250 0 2.531250 1.531250 0
- L3 12632256 0.000000 2.781250 2.781250 0 2.781250 1.531250 0
- L3 12632256 0.000000 3.031250 2.531250 0 3.031250 1.531250 0
- L3 12632256 0.000000 3.281250 1.531250 0 3.281250 2.781250 0
- L3 12632256 0.000000 3.531250 2.531250 0 3.531250 1.531250 0
- L3 12632256 0.000000 3.781250 1.531250 0 3.781250 2.781250 0
- L3 12632256 0.000000 4.031250 2.531250 0 4.031250 1.531250 0
- L3 12632256 0.000000 4.031250 1.281250 0 4.031250 0.281250 0
- L3 12632256 0.000000 3.781250 0.031250 0 3.781250 1.281250 0
- L3 12632256 0.000000 3.281250 1.281250 0 3.281250 0.031250 0
- L3 12632256 0.000000 3.531250 0.281250 0 3.531250 1.281250 0
- L3 12632256 0.000000 3.031250 1.281250 0 3.031250 0.281250 0
- L3 12632256 0.000000 2.781250 0.031250 0 2.781250 1.281250 0
- L3 12632256 0.000000 2.531250 1.281250 0 2.531250 0.281250 0
- L3 12632256 0.000000 2.281250 0.031250 0 2.281250 1.281250 0
- L3 12632256 0.000000 2.031250 1.281250 0 2.031250 0.281250 0
- L3 12632256 0.000000 1.781250 0.031250 0 1.781250 1.281250 0
- L3 12632256 0.000000 1.531250 1.281250 0 1.531250 0.281250 0
- L3 12632256 0.000000 1.281250 0.031250 0 1.281250 1.281250 0
- L3 12632256 0.000000 1.031250 1.281250 0 1.031250 0.281250 0
- L3 12632256 0.000000 0.781250 0.031250 0 0.781250 1.281250 0
- L3 12632256 0.000000 0.531250 1.281250 0 0.531250 0.281250 0
- L3 12632256 0.000000 0.281250 0.031250 0 0.281250 1.281250 0
- END
-STRUCTURE N "Walthers Cornerstone Co-op Rural Grain Elevator 933-3238"
- L3 0 0.041667 0.020833 1.020833 0 4.395833 1.020833 0
- L3 0 0.041667 4.395833 1.020833 0 4.395833 5.395833 0
- L3 0 0.041667 4.395833 5.395833 0 0.020833 5.395833 0
- L3 0 0.041667 0.020833 5.395833 0 0.020833 1.020833 0
- L3 0 0.041667 0.020833 1.020833 0 0.020833 0.020833 0
- L3 0 0.041667 0.020833 0.020833 0 4.395833 0.020833 0
- L3 0 0.041667 4.395833 0.020833 0 4.395833 1.020833 0
- L3 0 0.041667 2.208333 5.395833 0 2.208333 1.020833 0
- L3 0 0.041667 1.145833 5.395833 0 1.145833 1.020833 0
- L3 0 0.041667 3.270833 5.395833 0 3.270833 1.020833 0
- L3 12632256 0.000000 1.020833 5.145833 0 0.020833 5.145833 0
- L3 12632256 0.000000 1.020833 4.895833 0 0.020833 4.895833 0
- L3 12632256 0.000000 1.020833 4.645833 0 0.020833 4.645833 0
- L3 12632256 0.000000 1.020833 4.395833 0 0.020833 4.395833 0
- L3 12632256 0.000000 1.020833 4.145833 0 0.020833 4.145833 0
- L3 12632256 0.000000 0.020833 3.895833 0 1.145833 3.895833 0
- L3 12632256 0.000000 1.020833 3.645833 0 0.020833 3.645833 0
- L3 12632256 0.000000 0.020833 3.395833 0 1.020833 3.395833 0
- L3 12632256 0.000000 1.020833 3.145833 0 0.020833 3.145833 0
- L3 12632256 0.000000 0.020833 2.895833 0 1.020833 2.895833 0
- L3 12632256 0.000000 1.020833 2.645833 0 0.020833 2.645833 0
- L3 12632256 0.000000 0.020833 2.395833 0 1.020833 2.395833 0
- L3 12632256 0.000000 1.020833 2.145833 0 0.020833 2.145833 0
- L3 12632256 0.000000 0.145833 1.895833 0 1.020833 1.895833 0
- L3 12632256 0.000000 0.270833 1.895833 0 0.020833 1.895833 0
- L3 12632256 0.000000 0.020833 1.645833 0 1.020833 1.645833 0
- L3 12632256 0.000000 1.020833 1.395833 0 0.020833 1.395833 0
- L3 12632256 0.000000 1.020833 1.145833 0 0.020833 1.145833 0
- L3 12632256 0.000000 1.270833 5.270833 0 2.145833 5.270833 0
- L3 12632256 0.000000 2.145833 5.020833 0 1.270833 5.020833 0
- L3 12632256 0.000000 1.270833 4.770833 0 2.145833 4.770833 0
- L3 12632256 0.000000 2.145833 4.520833 0 1.270833 4.520833 0
- L3 12632256 0.000000 1.270833 4.270833 0 2.145833 4.270833 0
- L3 12632256 0.000000 2.020833 4.020833 0 1.270833 4.020833 0
- L3 12632256 0.000000 2.145833 4.020833 0 1.270833 4.020833 0
- L3 12632256 0.000000 2.145833 3.770833 0 1.270833 3.770833 0
- L3 12632256 0.000000 2.145833 3.520833 0 1.270833 3.520833 0
- L3 12632256 0.000000 2.145833 3.270833 0 1.270833 3.270833 0
- L3 12632256 0.000000 2.020833 3.020833 0 1.270833 3.020833 0
- L3 12632256 0.000000 2.145833 2.770833 0 1.270833 2.770833 0
- L3 12632256 0.000000 2.145833 2.520833 0 1.270833 2.520833 0
- L3 12632256 0.000000 1.270833 2.270833 0 2.020833 2.270833 0
- L3 12632256 0.000000 2.020833 2.020833 0 1.270833 2.020833 0
- L3 12632256 0.000000 1.270833 1.770833 0 2.145833 1.770833 0
- L3 12632256 0.000000 2.145833 1.520833 0 1.395833 1.520833 0
- L3 12632256 0.000000 2.145833 1.270833 0 1.270833 1.270833 0
- L3 12632256 0.000000 0.145833 0.895833 0 0.145833 0.145833 0
- L3 12632256 0.000000 0.395833 1.020833 0 0.395833 0.145833 0
- L3 12632256 0.000000 0.645833 0.895833 0 0.645833 0.145833 0
- L3 12632256 0.000000 0.895833 1.020833 0 0.895833 0.145833 0
- L3 12632256 0.000000 1.145833 0.895833 0 1.145833 0.145833 0
- L3 12632256 0.000000 1.395833 1.020833 0 1.395833 0.145833 0
- L3 12632256 0.000000 1.645833 0.895833 0 1.645833 0.145833 0
- L3 12632256 0.000000 1.895833 1.020833 0 1.895833 0.145833 0
- L3 12632256 0.000000 2.145833 1.020833 0 2.145833 0.145833 0
- L3 12632256 0.000000 2.395833 1.020833 0 2.395833 0.145833 0
- L3 12632256 0.000000 2.645833 0.895833 0 2.645833 0.145833 0
- L3 12632256 0.000000 2.895833 1.020833 0 2.895833 0.145833 0
- L3 12632256 0.000000 3.145833 0.895833 0 3.145833 0.145833 0
- L3 12632256 0.000000 3.395833 1.020833 0 3.395833 0.145833 0
- L3 12632256 0.000000 3.645833 0.895833 0 3.645833 0.145833 0
- L3 12632256 0.000000 3.895833 1.020833 0 3.895833 0.145833 0
- L3 12632256 0.000000 4.145833 0.895833 0 4.145833 0.145833 0
- L3 12632256 0.000000 2.270833 5.145833 0 3.145833 5.145833 0
- L3 12632256 0.000000 3.145833 4.895833 0 2.270833 4.895833 0
- L3 12632256 0.000000 2.270833 4.645833 0 3.145833 4.645833 0
- L3 12632256 0.000000 3.145833 4.395833 0 2.270833 4.395833 0
- L3 12632256 0.000000 2.270833 4.145833 0 3.145833 4.145833 0
- L3 12632256 0.000000 3.145833 3.895833 0 2.270833 3.895833 0
- L3 12632256 0.000000 2.270833 3.645833 0 3.145833 3.645833 0
- L3 12632256 0.000000 2.270833 3.395833 0 3.145833 3.395833 0
- L3 12632256 0.000000 3.145833 3.145833 0 2.270833 3.145833 0
- L3 12632256 0.000000 2.270833 2.895833 0 3.145833 2.895833 0
- L3 12632256 0.000000 3.145833 2.645833 0 2.270833 2.645833 0
- L3 12632256 0.000000 2.270833 2.395833 0 3.145833 2.395833 0
- L3 12632256 0.000000 3.145833 2.145833 0 2.270833 2.145833 0
- L3 12632256 0.000000 2.270833 1.895833 0 3.145833 1.895833 0
- L3 12632256 0.000000 3.145833 1.645833 0 2.270833 1.645833 0
- L3 12632256 0.000000 2.270833 1.395833 0 3.145833 1.395833 0
- L3 12632256 0.000000 3.145833 1.145833 0 2.270833 1.145833 0
- L3 12632256 0.000000 3.395833 5.270833 0 4.270833 5.270833 0
- L3 12632256 0.000000 4.270833 5.020833 0 3.395833 5.020833 0
- L3 12632256 0.000000 3.395833 4.770833 0 4.395833 4.770833 0
- L3 12632256 0.000000 4.270833 4.520833 0 3.395833 4.520833 0
- L3 12632256 0.000000 3.395833 4.270833 0 4.270833 4.270833 0
- L3 12632256 0.000000 4.270833 4.020833 0 3.395833 4.020833 0
- L3 12632256 0.000000 3.395833 3.770833 0 4.270833 3.770833 0
- L3 12632256 0.000000 4.270833 3.520833 0 3.395833 3.520833 0
- L3 12632256 0.000000 3.395833 3.270833 0 4.395833 3.270833 0
- L3 12632256 0.000000 4.270833 3.020833 0 3.395833 3.020833 0
- L3 12632256 0.000000 4.270833 2.770833 0 3.395833 2.770833 0
- L3 12632256 0.000000 3.395833 2.520833 0 4.270833 2.520833 0
- L3 12632256 0.000000 4.270833 2.270833 0 3.395833 2.270833 0
- L3 12632256 0.000000 3.395833 2.020833 0 4.270833 2.020833 0
- L3 12632256 0.000000 4.270833 1.770833 0 3.395833 1.770833 0
- L3 12632256 0.000000 3.395833 1.520833 0 4.270833 1.520833 0
- L3 12632256 0.000000 3.395833 1.270833 0 4.270833 1.270833 0
- END
-
-STRUCTURE N "Walthers Cornerstone GoldenFlame Fuel Co. - Office/ScaleHouse 933-3246A"
- F3 16755285 0.000000 4
- 0.031250 1.781250 0
- 2.906250 1.781250 0
- 2.906250 0.031250 0
- 0.031250 0.031250 0
- L3 0 0.062500 0.031250 0.031250 0 2.906250 0.031250 0
- L3 0 0.062500 2.906250 0.031250 0 2.906250 1.781250 0
- L3 0 0.062500 2.906250 1.781250 0 0.031250 1.781250 0
- L3 0 0.062500 0.031250 1.781250 0 0.031250 0.031250 0
- L3 0 0.062500 0.656250 0.906250 0 2.281250 0.906250 0
- L3 0 0.062500 2.906250 1.781250 0 2.281250 0.906250 0
- L3 0 0.062500 0.031250 1.781250 0 0.656250 0.906250 0
- L3 0 0.062500 0.656250 0.906250 0 0.031250 0.031250 0
- L3 0 0.062500 2.281250 0.906250 0 2.906250 0.031250 0
- END
-STRUCTURE N "Walthers Cornerstone GoldenFlame Fuel Co. - Coal Bunker 933-3246B"
- F3 12632256 0.000000 4
- 0.031250 2.156250 0
- 5.406250 2.156250 0
- 5.406250 0.031250 0
- 0.031250 0.031250 0
- L3 0 0.062500 0.031250 0.031250 0 5.406250 0.031250 0
- L3 0 0.062500 5.406250 0.031250 0 5.406250 2.156250 0
- L3 0 0.062500 5.406250 2.156250 0 0.031250 2.156250 0
- L3 0 0.062500 0.031250 2.156250 0 0.031250 0.031250 0
- L3 0 0.062500 0.031250 1.093750 0 5.406250 1.093750 0
- L3 0 0.062500 0.031250 1.906250 0 5.406250 1.906250 0
- L3 0 0.062500 0.031250 0.281250 0 5.406250 0.281250 0
- F3 12632256 0.000000 4
- 4.281250 0.031250 0
- 4.281250 0.031250 0
- 4.281250 0.031250 0
- 4.281250 0.031250 0
- END
-STRUCTURE N "Walthers Cornerstone GoldenFlame Fuel Co. - Pump House 933-3246C"
- F3 8421504 0.000000 4
- 0.031250 0.781250 0
- 1.031250 0.781250 0
- 1.031250 0.031250 0
- 0.031250 0.031250 0
- L3 0 0.062500 0.031250 0.031250 0 1.031250 0.031250 0
- L3 0 0.062500 1.031250 0.031250 0 1.031250 0.781250 0
- L3 0 0.062500 1.031250 0.781250 0 0.031250 0.781250 0
- L3 0 0.062500 0.031250 0.781250 0 0.031250 0.031250 0
- F3 8421504 0.000000 4
- 0.406250 0.281250 0
- 0.406250 0.281250 0
- 0.406250 0.281250 0
- 0.406250 0.281250 0
- END
-STRUCTURE N "Walthers Cornerstone GoldenFlame Fuel Co. - Oil Tanks 933-3246D"
- G3 12632256 0.000000 0.375000 1.250000 0.375000 0
- A3 0 0.062500 0.375000 1.250000 0.375000 0 0.000000 360.000000
- G3 12632256 0.000000 0.375000 0.375000 0.375000 0
- A3 0 0.062500 0.375000 0.375000 0.375000 0 0.000000 360.000000
- END
-STRUCTURE N "Walther's Cornerstone Structures American Hardware Supply 933-3253"
- F3 14474460 0.000000 4
- 0.265625 5.765625 0
- 1.015625 5.765625 0
- 1.015625 5.015625 0
- 0.265625 5.015625 0
- F3 14474460 0.000000 4
- 8.500000 5.750000 0
- 7.750000 5.750000 0
- 7.750000 5.000000 0
- 8.500000 5.000000 0
- F3 12632256 0.000000 4
- 1.000000 0.000000 0
- 7.500000 0.000000 0
- 7.500000 0.500000 0
- 1.000000 0.500000 0
- F3 12632256 0.000000 4
- 0.000000 1.500000 0
- 0.500000 1.500000 0
- 0.500000 2.500000 0
- 0.000000 2.500000 0
- F3 14474460 0.000000 4
- 0.500000 0.500000 0
- 8.250000 0.500000 0
- 8.250000 5.500000 0
- 0.500000 5.500000 0
- F3 8421504 0.000000 4
- 0.750000 0.750000 0
- 8.000000 0.750000 0
- 8.000000 5.250000 0
- 0.750000 5.250000 0
- F3 14474460 0.000000 4
- 5.796875 5.078125 0
- 7.781250 5.078125 0
- 7.781250 3.109375 0
- 5.796875 3.109375 0
- G3 0 0.000000 0.843750 6.796875 4.109375 0
- F3 0 0.000000 4
- 1.500000 4.031250 0
- 1.812500 4.031250 0
- 1.812500 3.765625 0
- 1.500000 3.765625 0
- END
-
+CONTENTS Walthers Cornerstone N Structures
+SUBCONTENTS Walthers Cornerstone N Structures - Bridges
+TURNOUT N "Walthers Dbl. Track Truss Bridge 10.75 933-3242"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 10.750000 0.000000 90.000000
+ E 0.000000 -1.250000 270.000000
+ E 10.750000 -1.250000 90.000000
+ S 0 0 0.000000 0.000000 10.750000 0.000000
+ S 0 0 0.000000 -1.250000 10.750000 -1.250000
+ L3 0 0.050000 0.000000 0.750000 0 10.750000 0.750000 0
+ L3 0 0.050000 0.000000 -2.000000 0 10.750000 -2.000000 0
+#
+ L3 0 0.050000 1.343750 0.750000 0 1.343750 -2.000000 0
+ L3 0 0.050000 2.687500 0.750000 0 2.687500 -2.000000 0
+ L3 0 0.050000 4.031250 0.750000 0 4.031250 -2.000000 0
+ L3 0 0.050000 5.375000 0.750000 0 5.375000 -2.000000 0
+ L3 0 0.050000 6.718750 0.750000 0 6.718750 -2.000000 0
+ L3 0 0.050000 8.062500 0.750000 0 8.062500 -2.000000 0
+ L3 0 0.050000 9.406250 0.750000 0 9.406250 -2.000000 0
+#
+ L3 0 0.050000 1.343750 0.750000 0 2.687500 -2.000000 0
+ L3 0 0.050000 2.687500 0.750000 0 4.031250 -2.000000 0
+ L3 0 0.050000 4.031250 0.750000 0 5.375000 -2.000000 0
+ L3 0 0.050000 5.375000 0.750000 0 6.718750 -2.000000 0
+ L3 0 0.050000 6.718750 0.750000 0 8.062500 -2.000000 0
+ L3 0 0.050000 8.062500 0.750000 0 9.406250 -2.000000 0
+#
+ L3 0 0.050000 2.687500 0.750000 0 1.343750 -2.000000 0
+ L3 0 0.050000 4.031250 0.750000 0 2.687500 -2.000000 0
+ L3 0 0.050000 5.375000 0.750000 0 4.031250 -2.000000 0
+ L3 0 0.050000 6.718750 0.750000 0 5.375000 -2.000000 0
+ L3 0 0.050000 8.062500 0.750000 0 6.718750 -2.000000 0
+ L3 0 0.050000 9.406250 0.750000 0 8.062500 -2.000000 0
+ END$SEGS
+
+SUBCONTENTS Walthers Cornerstone N Structures - Lumber Industries
+STRUCTURE N "Walthers Mountain Lumber Co. - Sawmill 933-3236A"
+# Main Bldg
+ F4 14596231 0.000000 4 0
+ 8.000000 3.625000 0
+ 8.375000 3.625000 0
+ 8.375000 3.250000 0
+ 8.000000 3.250000 0
+ Y4 0 0.010000 4 0
+ 8.000000 3.625000 0
+ 8.375000 3.625000 0
+ 8.375000 3.250000 0
+ 8.000000 3.250000 0
+ F4 14596231 0.000000 4 0
+ 0.000000 2.000000 0
+ -0.375000 2.000000 0
+ -0.375000 1.625000 0
+ 0.000000 1.625000 0
+ Y4 0 0.010000 4 0
+ 0.000000 2.000000 0
+ -0.375000 2.000000 0
+ -0.375000 1.625000 0
+ 0.000000 1.625000 0
+ F4 8424071 0.000000 4 0
+ 0.000000 0.000000 0
+ 8.000000 0.000000 0
+ 8.000000 5.000000 0
+ 0.000000 5.000000 0
+ Y4 0 0.050000 4 0
+ 0.000000 0.000000 0
+ 8.000000 0.000000 0
+ 8.000000 5.000000 0
+ 0.000000 5.000000 0
+ L3 0 0.000000 0.000000 2.500000 0 0.900000 2.500000 0
+ L3 0 0.000000 7.100000 2.500000 0 8.000000 2.500000 0
+ L3 0 0.000000 0.800000 1.375000 0 0.800000 3.625000 0
+ L3 0 0.000000 0.700000 1.125000 0 0.700000 3.875000 0
+ L3 0 0.000000 0.600000 1.375000 0 0.600000 3.625000 0
+ L3 0 0.000000 0.500000 1.125000 0 0.500000 3.875000 0
+ L3 0 0.000000 0.400000 1.375000 0 0.400000 3.625000 0
+ L3 0 0.000000 0.300000 1.125000 0 0.300000 3.875000 0
+ L3 0 0.000000 0.200000 1.375000 0 0.200000 3.625000 0
+ L3 0 0.000000 0.100000 1.125000 0 0.100000 3.875000 0
+ L3 0 0.000000 7.200000 1.375000 0 7.200000 3.625000 0
+ L3 0 0.000000 7.300000 1.125000 0 7.300000 3.875000 0
+ L3 0 0.000000 7.400000 1.375000 0 7.400000 3.625000 0
+ L3 0 0.000000 7.500000 1.125000 0 7.500000 3.875000 0
+ L3 0 0.000000 7.600000 1.375000 0 7.600000 3.625000 0
+ L3 0 0.000000 7.700000 1.125000 0 7.700000 3.875000 0
+ L3 0 0.000000 7.800000 1.375000 0 7.800000 3.625000 0
+ L3 0 0.000000 7.900000 1.125000 0 7.900000 3.875000 0
+#Vent
+ Y4 0 0.050000 4 0
+ 1.000000 2.000000 0
+ 7.000000 2.000000 0
+ 7.000000 3.000000 0
+ 1.000000 3.000000 0
+ L3 0 0.000000 1.800000 2.250000 0 1.800000 2.750000 0
+ L3 0 0.000000 1.700000 2.125000 0 1.700000 2.875000 0
+ L3 0 0.000000 1.600000 2.250000 0 1.600000 2.750000 0
+ L3 0 0.000000 1.500000 2.125000 0 1.500000 2.875000 0
+ L3 0 0.000000 1.400000 2.250000 0 1.400000 2.750000 0
+ L3 0 0.000000 1.300000 2.125000 0 1.300000 2.875000 0
+ L3 0 0.000000 1.200000 2.250000 0 1.200000 2.750000 0
+ L3 0 0.000000 1.100000 2.132530 0 1.100000 2.875000 0
+ L3 0 0.000000 1.000000 2.500000 0 7.000000 2.500000 0
+ L3 0 0.000000 6.200000 2.250000 0 6.200000 2.750000 0
+ L3 0 0.000000 6.300000 2.125000 0 6.300000 2.875000 0
+ L3 0 0.000000 6.400000 2.250000 0 6.400000 2.750000 0
+ L3 0 0.000000 6.500000 2.125000 0 6.500000 2.875000 0
+ L3 0 0.000000 6.600000 2.250000 0 6.600000 2.750000 0
+ L3 0 0.000000 6.700000 2.125000 0 6.700000 2.875000 0
+ L3 0 0.000000 6.800000 2.250000 0 6.800000 2.750000 0
+ L3 0 0.000000 6.900000 2.132530 0 6.900000 2.875000 0
+# Wing
+ L3 0 0.000000 2.000000 3.500000 0 2.000000 8.625000 0
+ F4 8424071 0.000000 5 0
+ 2.000000 3.500000 0
+ 0.000000 5.000000 0
+ 0.000000 8.625000 0
+ 4.000000 8.625000 0
+ 4.000000 5.000000 0
+ Y4 0 0.050000 5 0
+ 2.000000 3.500000 0
+ 0.000000 5.000000 0
+ 0.000000 8.625000 0
+ 4.000000 8.625000 0
+ 4.000000 5.000000 0
+ L3 0 0.000000 2.000000 3.500000 0 2.000000 8.625000 0
+ L3 0 0.000000 2.625000 7.825000 0 1.375000 7.825000 0
+ L3 0 0.000000 2.875000 7.925000 0 1.125000 7.925000 0
+ L3 0 0.000000 2.625000 8.025000 0 1.375000 8.025000 0
+ L3 0 0.000000 2.875000 8.125000 0 1.125000 8.125000 0
+ L3 0 0.000000 2.625000 8.225000 0 1.375000 8.225000 0
+ L3 0 0.000000 2.875000 8.325000 0 1.125000 8.325000 0
+ L3 0 0.000000 2.625000 8.425000 0 1.375000 8.425000 0
+ L3 0 0.000000 2.875000 8.525000 0 1.125000 8.525000 0
+ L3 0 0.000000 2.625000 5.800000 0 1.375000 5.800000 0
+ L3 0 0.000000 2.875000 5.700000 0 1.125000 5.700000 0
+ L3 0 0.000000 2.625000 5.600000 0 1.375000 5.600000 0
+ L3 0 0.000000 2.875000 5.500000 0 1.125000 5.500000 0
+ L3 0 0.000000 2.625000 5.400000 0 1.375000 5.400000 0
+ L3 0 0.000000 2.875000 5.300000 0 1.125000 5.300000 0
+ L3 0 0.000000 2.625000 5.200000 0 1.375000 5.200000 0
+ L3 0 0.000000 2.875000 5.100000 0 1.125000 5.100000 0
+# Conveyer
+ L3 0 0.125000 8.062500 0.250000 0 8.062500 0.500000 0
+ L3 0 0.125000 9.046875 0.250000 0 9.046875 0.500000 0
+ L3 0 0.125000 10.031250 0.250000 0 10.031250 0.500000 0
+ L3 0 0.125000 11.015625 0.250000 0 11.015625 0.500000 0
+ L3 0 0.125000 12.000000 0.250000 0 12.000000 2.750000 0
+ L3 0 0.125000 12.984375 0.250000 0 12.984375 2.750000 0
+ L3 0 0.125000 13.968750 0.250000 0 13.968750 2.750000 0
+ L3 0 0.125000 14.953125 0.250000 0 14.953125 2.750000 0
+ L3 0 0.125000 15.937500 0.250000 0 15.937500 2.750000 0
+ F4 12500670 0.000000 4 0
+ 8.000000 0.500000 0
+ 16.000000 0.500000 0
+ 16.000000 1.000000 0
+ 8.000000 1.000000 0
+ Y4 0 0.050000 4 0
+ 8.000000 0.500000 0
+ 16.000000 0.500000 0
+ 16.000000 1.000000 0
+ 8.000000 1.000000 0
+ END$SEGS
+STRUCTURE * "N "Walthers Mountain Lumber Co. - PowerHouse 933-3236B"
+ F4 8424071 0.000000 4 0
+ 0.000000 0.000000 0
+ 2.625000 0.000000 0
+ 2.625000 2.500000 0
+ 0.000000 2.500000 0
+ Y4 0 0.050000 4 0
+ 0.000000 0.000000 0
+ 2.625000 0.000000 0
+ 2.625000 2.500000 0
+ 0.000000 2.500000 0
+ L3 0 0.010000 0.000000 1.250000 0 2.625000 1.250000 0
+ L3 0 0.010000 0.800000 0.625000 0 0.800000 1.875000 0
+ L3 0 0.010000 0.700000 0.375000 0 0.700000 2.125000 0
+ L3 0 0.010000 0.600000 0.625000 0 0.600000 1.875000 0
+ L3 0 0.010000 0.500000 0.375000 0 0.500000 2.125000 0
+ L3 0 0.010000 0.400000 0.625000 0 0.400000 1.875000 0
+ L3 0 0.010000 0.300000 0.375000 0 0.300000 2.125000 0
+ L3 0 0.010000 0.200000 0.625000 0 0.200000 1.875000 0
+ L3 0 0.010000 0.100000 0.382530 0 0.100000 2.125000 0
+ G3 0 0 0.187500 2.125000 0.750000 0
+ G3 0 0 0.187500 2.125000 1.750000 0
+ END$SEGS
+STRUCTURE * "N "Walthers Mountain Lumber Co. - Sawdust Burner 933-3236C"
+ G3 10249759 0.000000 1.937500 0.000000 0.000000 0
+ A3 0 0.050000 1.937500 0.000000 0.000000 0 0.000000 360.000000
+ A3 0 0.010000 1.000000 0.000000 0.000000 0 0.000000 360.000000
+ L3 0 0.010000 0.777817 0.777817 0 1.370019 1.370019 0
+ L3 0 0.010000 0.777817 -0.777817 0 1.370019 -1.370019 0
+ L3 0 0.010000 1.100000 0.000000 0 1.937500 0.000000 0
+ L3 0 0.010000 0.000000 -1.100000 0 0.000000 -1.937500 0
+ L3 0 0.010000 0.000000 1.937500 0 0.000000 1.100000 0
+ L3 0 0.010000 -1.937500 0.000000 0 -1.100000 0.000000 0
+ L3 0 0.010000 -1.370019 1.370019 0 -0.777817 0.777817 0
+ L3 0 0.010000 -1.370019 -1.370019 0 -0.777817 -0.777817 0
+ L3 13066516 0.100000 3.500000 0.375000 0 3.500000 -0.375000 0
+ L3 13066516 0.100000 6.500000 0.375000 0 6.500000 -0.375000 0
+# L3 12500670 0.250000 1.309375 0.000000 0 9.000000 0.000000 0
+ F4 12500670 0.000000 4 0
+ 1.309375 0.125000 0
+ 9.000000 0.125000 0
+ 9.000000 -0.125000 0
+ 1.309375 -0.125000 0
+ Y4 0 0.010000 4 0
+ 1.309375 0.125000 0
+ 9.000000 0.125000 0
+ 9.000000 -0.125000 0
+ 1.309375 -0.125000 0
+ END$SEGS
+
+SUBCONTENTS Walthers Cornerstone N Structures - Industries
+STRUCTURE N "Walthers R.J. Frost Ice & Storage 933-3220"
+ F4 14596231 0.000000 4 0
+ 0.000000 2.625000 0
+ -0.093750 2.625000 0
+ -0.093750 3.000000 0
+ 0.000000 3.000000 0
+ Y4 0 0.030000 4 0
+ 0.000000 2.625000 0
+ -0.093750 2.625000 0
+ -0.093750 3.000000 0
+ 0.000000 3.000000 0
+ F4 14596231 0.000000 4 0
+ 6.750000 3.281250 0
+ 7.125000 3.281250 0
+ 7.125000 0.937500 0
+ 6.750000 0.937500 0
+ Y4 0 0.030000 4 0
+ 6.750000 3.281250 0
+ 7.125000 3.281250 0
+ 7.125000 0.937500 0
+ 6.750000 0.937500 0
+#LoadingDock1
+ F4 12500670 0.000000 4 0
+ 0.000000 5.125000 0
+ 0.000000 6.375000 0
+ 6.750000 6.375000 0
+ 6.750000 5.125000 0
+ Y4 0 0.030000 4 0
+ 0.000000 5.125000 0
+ 0.000000 6.375000 0
+ 6.750000 6.375000 0
+ 6.750000 5.125000 0
+ L3 0 0.020000 1.687500 5.125000 0 1.687500 6.375000 0
+ L3 0 0.020000 3.375000 5.125000 0 3.375000 6.375000 0
+ L3 0 0.020000 5.062500 5.125000 0 5.062500 6.375000 0
+#DockLimit
+ L3 0 0.000000 0.000000 5.656250 0 0.750000 5.656250 0
+ L3 0 0.000000 1.000000 5.656250 0 1.750000 5.656250 0
+ L3 0 0.000000 2.000000 5.656250 0 2.750000 5.656250 0
+ L3 0 0.000000 3.000000 5.656250 0 3.750000 5.656250 0
+ L3 0 0.000000 4.000000 5.656250 0 4.750000 5.656250 0
+ L3 0 0.000000 5.000000 5.656250 0 5.750000 5.656250 0
+ L3 0 0.000000 6.000000 5.656250 0 6.750000 5.656250 0
+#LoadingDock2
+ F4 12500670 0.000000 4 0
+ 0.000000 -0.750000 0
+ 6.750000 -0.750000 0
+ 6.750000 0.500000 0
+ 0.000000 0.500000 0
+ Y4 0 0.030000 4 0
+ 0.000000 -0.750000 0
+ 6.750000 -0.750000 0
+ 6.750000 0.500000 0
+ 0.000000 0.500000 0
+ L3 0 0.020000 1.687500 0.500000 0 1.687500 -0.750000 0
+ L3 0 0.020000 3.375000 0.500000 0 3.375000 -0.750000 0
+ L3 0 0.020000 5.062500 0.500000 0 5.062500 -0.750000 0
+#DockLimit
+ L3 0 0.000000 0.000000 0.000000 0 0.750000 0.000000 0
+ L3 0 0.000000 1.000000 0.000000 0 1.750000 0.000000 0
+ L3 0 0.000000 2.000000 0.000000 0 2.750000 0.000000 0
+ L3 0 0.000000 3.000000 0.000000 0 3.750000 0.000000 0
+ L3 0 0.000000 4.000000 0.000000 0 4.750000 0.000000 0
+ L3 0 0.000000 5.000000 0.000000 0 5.750000 0.000000 0
+ L3 0 0.000000 6.000000 0.000000 0 6.750000 0.000000 0
+#MainBuilding
+ F4 8424071 0.000000 4 0
+ 0.000000 0.500000 0
+ 0.000000 5.125000 0
+ 6.750000 5.125000 0
+ 6.750000 0.500000 0
+ Y4 0 0.050000 4 0
+ 0.000000 0.500000 0
+ 0.000000 5.125000 0
+ 6.750000 5.125000 0
+ 6.750000 0.500000 0
+#Roof Structure
+ F4 12500670 0.000000 4 0
+ 1.812500 1.843750 0
+ 0.000000 1.843750 0
+ 0.000000 3.781250 0
+ 1.812500 3.781250 0
+ Y4 0 0.050000 4 0
+ 1.812500 1.843750 0
+ 0.000000 1.843750 0
+ 0.000000 3.781250 0
+ 1.812500 3.781250 0
+#Chiller
+ F4 10249759 0.000000 4 0
+ 6.375000 2.156250 0
+ 4.250000 2.156250 0
+ 4.250000 3.468750 0
+ 6.375000 3.468750 0
+ Y4 0 0.030000 4 0
+ 6.375000 2.156250 0
+ 4.250000 2.156250 0
+ 4.250000 3.468750 0
+ 6.375000 3.468750 0
+ L3 0 0.030000 4.562500 2.812500 0 5.187500 2.812500 0
+ L3 0 0.030000 4.875000 3.125000 0 4.875000 2.500000 0
+ A3 0 0.030000 0.312500 4.875000 2.812500 0 0.000000 360.000000
+ L3 0 0.030000 6.062500 2.812500 0 5.437500 2.812500 0
+ L3 0 0.030000 5.750000 3.125000 0 5.750000 2.500000 0
+ A3 0 0.030000 0.312500 5.750000 2.812500 0 0.000000 360.000000
+ END$SEGS
+STRUCTURE N "Walthers Medusa Cement Company 933-3218"
+#RailShed
+ F4 12632256 0.000000 4 0
+ 3.750000 -1.000000 0
+ 3.750000 1.625000 0
+ 0.000000 1.625000 0
+ 0.000000 -1.000000 0
+ Y4 0 0.030000 4 0
+ 3.750000 -1.000000 0
+ 0.000000 -1.000000 0
+ 0.000000 1.625000 0
+ 3.750000 1.625000 0
+ L3 0 0.000000 2.500000 1.625000 0 2.500000 0.250000 0
+ L3 0 0.000000 2.625000 1.625000 0 2.625000 -0.125000 0
+ L3 0 0.000000 2.750000 1.625000 0 2.750000 0.250000 0
+ L3 0 0.000000 2.875000 1.625000 0 2.875000 -0.125000 0
+ L3 0 0.000000 3.000000 1.625000 0 3.000000 0.250000 0
+ L3 0 0.000000 3.125000 1.625000 0 3.125000 -0.125000 0
+ L3 0 0.000000 3.250000 1.625000 0 3.250000 0.250000 0
+ L3 0 0.000000 3.375000 1.625000 0 3.375000 -0.125000 0
+ L3 0 0.000000 3.500000 1.625000 0 3.500000 0.250000 0
+ L3 0 0.000000 3.625000 1.625000 0 3.625000 -0.125000 0
+ L3 0 0.000000 1.250000 1.625000 0 1.250000 0.250000 0
+ L3 0 0.000000 1.125000 1.625000 0 1.125000 -0.125000 0
+ L3 0 0.000000 1.000000 1.625000 0 1.000000 0.250000 0
+ L3 0 0.000000 0.875000 1.625000 0 0.875000 -0.125000 0
+ L3 0 0.000000 0.750000 1.625000 0 0.750000 0.250000 0
+ L3 0 0.000000 0.625000 1.625000 0 0.625000 -0.125000 0
+ L3 0 0.000000 0.500000 1.625000 0 0.500000 0.250000 0
+ L3 0 0.000000 0.375000 1.625000 0 0.375000 -0.125000 0
+ L3 0 0.000000 0.250000 1.625000 0 0.250000 0.250000 0
+ L3 0 0.000000 0.125000 1.625000 0 0.125000 -0.125000 0
+#Silo
+ F4 12632256 0.000000 4 0
+ -0.500000 2.000000 0
+ -0.500000 1.250000 0
+ -0.812500 1.250000 0
+ -0.812500 2.000000 0
+ Y4 0 0.030000 4 0
+ -0.500000 2.000000 0
+ -0.500000 1.250000 0
+ -0.812500 1.250000 0
+ -0.812500 2.000000 0
+ F4 12632256 0.000000 4 0
+ -0.500000 3.250000 0
+ -0.500000 2.500000 0
+ -0.812500 2.500000 0
+ -0.812500 3.250000 0
+ Y4 0 0.030000 4 0
+ -0.500000 3.250000 0
+ -0.500000 2.500000 0
+ -0.812500 2.500000 0
+ -0.812500 3.250000 0
+ F4 12632256 0.000000 4 0
+ 4.250000 2.500000 0
+ 4.250000 3.250000 0
+ 4.562500 3.250000 0
+ 4.562500 2.500000 0
+ Y4 0 0.030000 4 0
+ 4.250000 2.500000 0
+ 4.250000 3.250000 0
+ 4.562500 3.250000 0
+ 4.562500 2.500000 0
+ F4 12632256 0.000000 4 0
+ 4.250000 1.250000 0
+ 4.250000 2.000000 0
+ 4.562500 2.000000 0
+ 4.562500 1.250000 0
+ Y4 0 0.030000 4 0
+ 4.250000 1.250000 0
+ 4.250000 2.000000 0
+ 4.562500 2.000000 0
+ 4.562500 1.250000 0
+ G3 15720651 0 0.625000 0.000000 2.875000 0
+ G3 15720651 0 0.625000 1.250000 2.875000 0
+ G3 15720651 0 0.625000 2.500000 2.875000 0
+ G3 15720651 0 0.625000 3.750000 2.875000 0
+ G3 15720651 0 0.625000 0.000000 1.625000 0
+ G3 15720651 0 0.625000 1.250000 1.625000 0
+ G3 15720651 0 0.625000 2.500000 1.625000 0
+ G3 15720651 0 0.625000 3.750000 1.625000 0
+ A3 0 0.030000 0.625000 0.000000 2.875000 0 0.000000 360.000000
+ A3 0 0.030000 0.625000 1.250000 2.875000 0 0.000000 360.000000
+ A3 0 0.030000 0.625000 2.500000 2.875000 0 0.000000 360.000000
+ A3 0 0.030000 0.625000 3.750000 2.875000 0 0.000000 360.000000
+ A3 0 0.030000 0.625000 0.000000 1.625000 0 0.000000 360.000000
+ A3 0 0.030000 0.625000 1.250000 1.625000 0 0.000000 360.000000
+ A3 0 0.030000 0.625000 2.500000 1.625000 0 0.000000 360.000000
+ A3 0 0.030000 0.625000 3.750000 1.625000 0 0.000000 360.000000
+#Elevator
+ F4 16755285 0.000000 4 0
+ 1.683058 0.808058 0
+ 2.058058 0.808058 0
+ 2.058058 1.183058 0
+ 1.683058 1.183058 0
+ Y4 0 0.030000 4 0
+ 1.683058 0.808058 0
+ 2.058058 0.808058 0
+ 2.058058 1.183058 0
+ 1.683058 1.183058 0
+#TopDeck
+ F4 12632256 0.000000 4 0
+ 0.000000 2.875000 0
+ 3.750000 2.875000 0
+ 3.750000 1.625000 0
+ 0.000000 1.625000 0
+ Y4 0 0.030000 4 0
+ 0.000000 2.875000 0
+ 3.750000 2.875000 0
+ 3.750000 1.625000 0
+ 0.000000 1.625000 0
+ END$SEGS
+STRUCTURE N "Glacier Gravel" "933-3241"
+#--MAIN BOTTOM LEFT
+ F3 14803425 0.00 4
+ 0.000 2.791 0
+ 1.800 2.791 0
+ 1.800 0.000 0
+ 0.000 0.000 0
+#-- BOTTOM MID
+ F3 14803500 0.00 4
+ 5.102 0.000 0
+ 5.102 2.250 0
+ 1.800 2.250 0
+ 1.800 0.000 0
+#-- MAIN BOTTOM RIGHT
+ F3 14803425 0.00 4
+ 5.102 0.900 0
+ 6.602 0.900 0
+ 6.602 0.00 0
+ 5.102 0.00 0
+#------MAIN TOP LEFT --
+ F3 14803425 0.00 4
+ 0.000 5.627 0
+ 3.001 5.627 0
+ 3.001 2.250 0
+ 0.00 2.250 0
+#-- LOWER CONVEYER
+ F3 14803425 0.00 4
+ 9.753 3.863 0
+ 9.753 3.563 0
+ 1.800 2.363 0
+ 1.800 2.663 0
+#-- ROOF CONVAYER TOP
+ F3 14803425 0.00 4
+ 7.803 6.024 0
+ 8.553 6.024 0
+ 8.553 4.051 0
+ 7.803 4.051 0
+#-- CONVAYER TOP
+ F3 14803425 0.00 4
+ 2.701 5.177 0
+ 7.803 5.177 0
+ 7.803 4.876 0
+ 2.701 4.876 0
+#-- BOTTOM LOADER- BASE
+ F3 14803425 0.00 7
+ 10.129 4.066 0
+ 10.129 4.066 0
+ 10.129 4.216 0
+ 10.991 4.216 0
+ 10.991 3.196 0
+ 9.753 3.196 0
+ 9.753 4.066 0
+#-- BOTTOM LOADER- ROOF
+ F3 14803425 0.00 4
+ 9.753 4.051 0
+ 10.804 4.051 0
+ 10.804 3.376 0
+ 9.753 3.376 0
+#-- ROOF CONVAYER TOP ---OK
+ L3 0 5 8.553 6.002 0 8.553 4.051 0
+ L3 0 5 8.553 4.051 0 7.803 4.051 0
+ L3 0 5 7.803 4.051 0 7.803 6.002 0
+ L3 0 5 7.803 6.002 0 8.553 6.002 0
+#-- BOTTOM MID TOP ROOF -- OK
+ L3 0 1 2.600 1.125 0 2.600 2.025 0
+ L3 0 1 2.800 1.125 0 2.800 2.025 0
+ L3 0 1 3.000 1.125 0 3.000 2.025 0
+ L3 0 1 3.200 1.125 0 3.200 2.025 0
+ L3 0 1 3.400 1.125 0 3.400 2.025 0
+ L3 0 1 3.600 1.125 0 3.600 2.025 0
+ L3 0 1 3.800 1.125 0 3.800 2.025 0
+ L3 0 1 4.000 1.125 0 4.000 2.025 0
+
+ L3 0 5 2.400 1.125 0 2.400 2.025 0
+ L3 0 5 2.400 2.025 0 4.201 2.025 0
+ L3 0 5 4.201 2.025 0 4.201 1.125 0
+ L3 0 5 2.400 1.575 0 4.201 1.575 0
+ L3 0 5 2.400 1.125 0 4.201 1.125 0
+#--- CONVAYER BOTTOM ROOF OK--
+ L3 0 5 9.753 3.563 0 1.800 2.363 0
+ L3 0 5 9.753 3.864 0 1.800 2.663 0
+#-- CONVAYER TOP --TOP ROOF ----OK
+ L3 0 5 1.800 5.402 0 2.701 5.402 0
+ L3 0 5 2.701 5.402 0 2.701 4.651 0
+ L3 0 5 2.701 4.651 0 1.800 4.651 0
+ L3 0 5 1.800 4.651 0 1.800 5.402 0
+#--CON BELT TOP ----OK
+ L3 0 5 2.701 5.177 0 7.803 5.177 0
+ L3 0 5 7.803 4.876 0 2.701 4.876 0
+#-- BOTTOM LOADER BASE
+#-----------TOP OK
+ L3 255 5 10.804 4.051 0 9.753 4.051 0
+ L3 255 5 9.753 3.376 0 10.804 3.376 0
+ L3 255 5 10.804 3.376 0 10.804 4.051 0
+ L3 255 5 9.753 4.051 0 9.753 3.376 0
+# --------- BASE OK--------
+ L3 0 5 9.753 3.226 0 10.991 3.226 0
+ L3 0 5 10.991 3.226 0 10.991 4.201 0
+ L3 0 5 10.991 4.201 0 10.129 4.201 0
+ L3 0 5 10.129 4.201 0 10.129 4.051 0
+ L3 0 5 9.753 3.376 0 9.753 3.226 0
+#-- BOTTOM MID
+
+ L3 0 5 5.102 0.000 0 5.102 2.250 0
+ L3 0 5 1.800 0.000 0 1.800 2.250 0
+ L3 0 5 5.102 2.250 0 1.800 2.250 0
+ L3 0 5 5.102 1.125 0 1.800 1.125 0
+ L3 0 5 5.102 0.000 0 1.800 0.000 0
+#-- MAIN BOTTOM RIGHT
+ L3 0 5 6.602 0.900 0 5.102 0.900 0
+ L3 0 5 6.602 0.000 0 5.102 0.000 0
+ L3 0 5 5.102 0.900 0 5.102 0.000 0
+ L3 0 5 6.602 0.900 0 6.602 0.000 0
+#------MAIN TOP LEFT --
+ L3 0 5 0.000 5.647 0 0.000 2.791 0
+ L3 0 5 3.001 5.647 0 3.001 5.192 0
+ L3 0 5 0.000 5.647 0 3.001 5.647 0
+ L3 0 5 1.500 2.813 0 1.500 5.647 0
+ L3 0 5 3.001 2.250 0 3.001 2.513 0
+ L3 0 5 3.001 4.876 0 3.001 2.845 0
+#--MAIN BOTTOM LEFT --- OK
+ L3 255 5 0.000 0.000 0 1.800 0.000 0
+ L3 255 5 0.000 0.000 0 0.000 2.821 0
+ L3 255 5 0.000 2.813 0 1.800 2.813 0
+ L3 255 5 1.800 2.813 0 1.800 0.000 0
+ L3 255 5 0.900 2.813 0 0.900 0.000 0
+END
+STRUCTURE N "Walthers North Island Oil Refinery 933-3219"
+ L3 0 0.000000 0.000000 0.000000 0 0.000000 3.177778 0
+ L3 0 0.000000 2.488889 0.000000 0 0.000000 0.000000 0
+ L3 0 0.000000 2.488889 0.000000 0 2.488889 2.666667 0
+ L3 0 0.000000 2.488889 2.666667 0 3.600000 2.666667 0
+ L3 0 0.000000 3.600000 2.666667 0 3.600000 0.000000 0
+ L3 55 0.000000 3.600000 0.000000 0 6.666667 0.000000 0
+ L3 55 0.000000 6.666667 1.333333 0 6.666667 0.000000 0
+ L3 55 0.000000 7.611111 1.333333 0 6.666667 1.333333 0
+ L3 55 0.000000 7.611111 1.333333 0 7.611111 2.777778 0
+ L3 55 0.000000 7.611111 2.777778 0 8.000000 2.777778 0
+ L3 55 0.000000 8.000000 2.777778 0 8.000000 5.022222 0
+ L3 55 0.000000 8.000000 5.022222 0 0.500000 5.022222 0
+ L3 55 0.000000 0.500000 5.022222 0 0.500000 3.166667 0
+ L3 55 0.000000 0.500000 3.166667 0 0.000000 3.166667 0
+ G3 0 0.000000 0.215278 4.000000 2.131944 0
+ G3 0 0.000000 0.215278 4.000000 1.465278 0
+ G3 0 0.000000 0.215278 4.000000 0.798611 0
+ G3 0 0.000000 0.215278 7.066667 1.954167 0
+ L3 8421504 0.062500 0.222222 0.222222 0 0.222222 2.777778 0
+ L3 8421504 0.062500 2.222222 0.222222 0 2.222222 2.777778 0
+ L3 8421504 0.062500 1.055556 0.222222 0 1.055556 2.777778 0
+ L3 8421504 0.062500 1.444444 0.222222 0 1.444444 2.777778 0
+ L3 8421504 0.062500 0.188889 0.222222 0 2.255556 0.222222 0
+ L3 8421504 0.062500 0.188889 2.777778 0 2.255556 2.777778 0
+ A3 0 0.062500 0.168172 1.255556 1.477778 0 0.000000 360.000000
+ L3 8421504 0.062500 1.055556 4.666667 0 7.222222 4.666667 0
+ L3 8421504 0.062500 1.055556 4.444444 0 7.222222 4.444444 0
+ L3 8421504 0.062500 1.055556 4.222222 0 7.222222 4.222222 0
+ L3 8421504 0.062500 1.055556 4.000000 0 7.222222 4.000000 0
+ L3 8421504 0.062500 1.055556 3.777778 0 7.222222 3.777778 0
+ L3 8421504 0.062500 1.055556 3.555556 0 7.222222 3.555556 0
+END
+STRUCTURE N "Walther's Cornerstone Structures American Hardware Supply 933-3253"
+ F3 14474460 0.000000 4
+ 0.265625 5.765625 0
+ 1.015625 5.765625 0
+ 1.015625 5.015625 0
+ 0.265625 5.015625 0
+ F3 14474460 0.000000 4
+ 8.500000 5.750000 0
+ 7.750000 5.750000 0
+ 7.750000 5.000000 0
+ 8.500000 5.000000 0
+ F3 12632256 0.000000 4
+ 1.000000 0.000000 0
+ 7.500000 0.000000 0
+ 7.500000 0.500000 0
+ 1.000000 0.500000 0
+ F3 12632256 0.000000 4
+ 0.000000 1.500000 0
+ 0.500000 1.500000 0
+ 0.500000 2.500000 0
+ 0.000000 2.500000 0
+ F3 14474460 0.000000 4
+ 0.500000 0.500000 0
+ 8.250000 0.500000 0
+ 8.250000 5.500000 0
+ 0.500000 5.500000 0
+ F3 8421504 0.000000 4
+ 0.750000 0.750000 0
+ 8.000000 0.750000 0
+ 8.000000 5.250000 0
+ 0.750000 5.250000 0
+ F3 14474460 0.000000 4
+ 5.796875 5.078125 0
+ 7.781250 5.078125 0
+ 7.781250 3.109375 0
+ 5.796875 3.109375 0
+ G3 0 0.000000 0.843750 6.796875 4.109375 0
+ F3 0 0.000000 4
+ 1.500000 4.031250 0
+ 1.812500 4.031250 0
+ 1.812500 3.765625 0
+ 1.500000 3.765625 0
+ END
+
+
+SUBCONTENTS Walthers Cornerstone N Structures - Steel Industries
+STRUCTURE N "Walthers Cornerstone Structures Rolling Mill 933-3250"
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 11.375000 0.000000 0
+ 11.375000 7.000000 0
+ 0.000000 7.000000 0
+ L3 0 0.000000 0.000000 3.500000 0 11.375000 3.500000 0
+ L3 0 0.000000 0.500000 4.000000 0 10.500000 4.000000 0
+ L3 0 0.000000 10.500000 4.000000 0 10.500000 3.000000 0
+ L3 0 0.000000 10.500000 3.000000 0 0.500000 3.000000 0
+ L3 0 0.000000 0.500000 3.000000 0 0.500000 4.000000 0
+ END
+STRUCTURE N "Walthers Blast Furnace 933-3249"
+ F4 10993094 0.000000 4 0
+ 0.000000 7.547716 0
+ 6.968750 7.547716 0
+ 6.968750 2.047716 0
+ 0.000000 2.047716 0
+ G3 8405056 0.000000 0.750000 5.052350 6.475066 0
+ G3 8405056 0.000000 0.750000 3.135550 6.433266 0
+ G3 8405056 0.000000 0.750000 1.260550 6.527016 0
+ L3 0 0.416667 0.468750 7.328966 0 5.750000 7.328966 0
+ F4 2097408 0.000000 4 0
+ 5.875000 6.735216 0
+ 6.968750 6.735216 0
+ 6.968750 5.578966 0
+ 5.875000 5.578966 0
+ G3 8405056 0.000000 0.750000 1.291800 3.245766 0
+ G3 2097408 0.000000 1.016466 4.968750 1.016466 0
+ G3 2097408 0.000000 0.534914 3.406250 3.172716 0
+ L3 0 0.416667 1.635550 4.579099 0 6.916800 4.579099 0
+ F4 10993094 0.000000 4 0
+ 7.000000 7.172716 0
+ 12.000000 7.172716 0
+ 12.000000 0.672716 0
+ 7.000000 0.672716 0
+ G3 15049635 0.000000 0.000000 5.062500 0.985216 0
+ G3 2097408 0.000000 1.100870 8.718750 4.547716 0
+ L3 0 0.083333 6.968750 7.172716 0 6.968750 2.016466 0
+ F4 10993094 0.000000 4 0
+ 12.000000 6.985216 0
+ 19.000000 6.985216 0
+ 19.000000 2.235216 0
+ 12.000000 2.235216 0
+ L3 0 0.041667 12.000000 7.016466 0 12.031250 2.266466 0
+ L3 15049635 0.041667 18.000000 2.172716 0 17.437500 1.266466 0
+ F4 10993094 0.000000 4 0
+ 12.000000 2.266466 0
+ 17.437500 2.266466 0
+ 17.437500 1.297716 0
+ 12.000000 1.297716 0
+ F4 10993094 0.000000 4 0
+ 17.366766 4.284468 0
+ 18.869687 2.738297 0
+ 17.435558 1.344284 0
+ 15.932637 2.890454 0
+ L3 0 0.041667 19.000000 4.547716 0 12.000000 4.516466 0
+ L3 2097408 0.041667 12.000000 5.110216 0 19.000000 5.110216 0
+ L3 15049635 0.041667 19.000000 5.110216 0 19.000000 3.860216 0
+ L3 0 0.041667 19.000000 3.860216 0 12.000000 3.860216 0
+ L3 15049635 0.041667 12.000000 3.860216 0 12.000000 5.110216 0
+ L3 2097408 0.041667 18.312500 2.235216 0 12.000000 2.235216 0
+ L3 15049635 0.041667 12.000000 2.266466 0 12.000000 1.360216 0
+ L3 15049635 0.041667 12.000000 2.297716 0 12.000000 1.297716 0
+ L3 2097408 0.041667 17.437500 2.235216 0 12.031250 2.235216 0
+ L3 15049635 0.041667 12.000000 2.203966 0 12.000000 1.391466 0
+ L3 2097408 0.020833 12.046875 2.188341 0 12.062500 1.328966 0
+ L3 0 0.416667 8.234375 3.547716 0 6.750000 1.828966 0
+ L3 2097408 0.416667 6.906250 1.938341 0 5.062500 1.188341 0
+ L3 2097408 0.312500 4.984375 1.360216 0 3.453125 3.188341 0
+ F4 8388608 0.000000 4 0
+ 4.000000 14.485216 0
+ 12.500000 14.485216 0
+ 12.500000 11.547716 0
+ 4.000000 11.547716 0
+ L3 2984000 0.208333 3.937500 14.422716 0 12.437500 14.422716 0
+ L3 2984000 0.208333 4.041800 11.631182 0 12.541800 11.631182 0
+ L3 2984000 0.208333 3.979300 13.131182 0 12.479300 13.131182 0
+ F4 15049635 0.000000 4 0
+ 8.062500 11.485216 0
+ 9.562500 11.485216 0
+ 9.562500 10.547716 0
+ 8.062500 10.547716 0
+ F4 8535808 0.000000 4 0
+ 8.187500 11.422716 0
+ 9.250000 11.422716 0
+ 9.250000 5.735216 0
+ 8.187500 5.735216 0
+ G3 2097408 0.000000 0.000000 2.000000 5.547716 0
+ L3 2097408 0.020833 12.000000 7.032091 0 19.015625 7.032091 0
+ L3 2097408 0.020833 19.015625 7.032091 0 19.015625 2.219591 0
+ L3 15049635 0.020833 19.015625 2.219591 0 12.000000 2.219591 0
+ L3 15049635 0.020833 12.000000 2.219591 0 12.000000 7.032091 0
+ L3 2097408 0.020833 19.000000 2.203966 0 18.312500 2.203966 0
+ L3 2097408 0.020833 18.312500 2.188341 0 17.390625 1.266466 0
+ L3 2097408 0.020833 17.390625 1.266466 0 12.000000 1.266466 0
+ END
+
+SUBCONTENTS Walthers Cornerstone N Structures - Power Industries
+STRUCTURE N "Walthers Nothern Light Powerhouse 933-3214"
+ L 0 0 0.000000 0.000000 4.125000 0.000000
+ L 0 0 4.125000 0.000000 4.125000 2.625000
+ L 0 0 4.125000 2.625000 0.000000 2.625000
+ L 0 0 0.000000 2.625000 0.000000 0.000000
+ A 0 0 0.125000 0.500000 0.500000 0.000000 360.000000
+ A 0 0 0.125000 3.625000 0.500000 0.000000 360.000000
+ A 0 0 0.125000 1.500000 0.500000 0.000000 360.000000
+ A 0 0 0.139754 2.625000 0.500000 0.000000 360.000000
+ A 0 0 0.534000 4.875000 2.187500 0.000000 360.000000
+ A 0 0 0.000000 4.937500 2.062500 0.000000 360.000000
+ A 0 0 0.364434 4.875000 2.187500 0.000000 360.000000
+ END
+
+SUBCONTENTS Walthers Cornerstone N Structures - Coal Industries
+STRUCTURE N "Walthers Diamond Coal Corp. 933-3836"
+ F3 14531987 0.000000 4
+ 9.774702 0.390631 0
+ 9.774704 1.640631 0
+ 10.024704 1.640630 0
+ 10.024702 0.390630 0
+ F3 14531987 0.000000 4
+ 13.087202 0.140626 0
+ 13.087204 1.640626 0
+ 13.337204 1.640626 0
+ 13.337202 0.140626 0
+ F3 14531987 0.000000 4
+ 13.337204 1.640626 0
+ 13.337204 1.890626 0
+ 8.774704 1.890632 0
+ 8.774704 1.640632 0
+ A3 0 0.020833 0.750000 9.087212 7.703132 0 270.000000 360.000000
+ L3 0 0.052083 13.399706 3.640626 0 13.399704 1.890626 0
+ L3 0 0.052083 13.399706 3.640626 0 13.399710 6.640626 0
+ L3 0 0.052083 8.399711 7.015633 0 8.399711 7.015633 0
+ L3 0 0.052083 9.274711 6.890631 0 9.899711 6.890631 0
+ L3 0 0.052083 8.899711 6.890632 0 8.274711 6.890633 0
+ L3 0 0.052083 8.274711 6.890633 0 8.274713 8.515633 0
+ L3 0 0.052083 8.274713 8.515633 0 9.899713 8.515631 0
+ L3 0 0.052083 9.899713 8.515631 0 9.899711 6.890631 0
+ L3 0 0.041667 0.274705 2.390643 0 0.274704 2.015643 0
+ L3 0 0.041667 0.274704 2.015643 0 0.399704 2.015643 0
+ L3 0 0.041667 0.399704 2.015643 0 0.399705 2.390643 0
+ L3 0 0.041667 7.274709 5.640634 0 7.274709 5.640634 0
+ L3 0 0.041667 5.649707 4.265636 0 5.649707 4.265636 0
+ F3 14737632 0.000000 4
+ 8.399711 7.140633 0
+ 8.399713 8.265633 0
+ 9.524713 8.265631 0
+ 9.524711 7.140631 0
+ L3 0 0.052083 9.524711 7.140631 0 9.524713 8.265631 0
+ L3 0 0.052083 8.399713 8.265633 0 9.524713 8.265631 0
+ L3 8421504 0.020833 8.962211 7.140632 0 8.962213 8.265632 0
+ L3 8421504 0.020833 8.524711 7.265632 0 9.399711 7.265631 0
+ L3 8421504 0.020833 9.399711 7.390631 0 8.524711 7.390632 0
+ L3 8421504 0.020833 8.524712 7.515632 0 9.399712 7.515631 0
+ L3 8421504 0.020833 8.524712 7.640632 0 9.399712 7.640631 0
+ L3 8421504 0.020833 9.399712 7.765631 0 8.524712 7.765632 0
+ L3 8421504 0.020833 9.399712 7.890631 0 8.524712 7.890632 0
+ L3 8421504 0.020833 8.524712 8.015632 0 9.399712 8.015631 0
+ L3 8421504 0.020833 9.399712 8.140631 0 8.524712 8.140632 0
+ L3 0 0.052083 8.399713 8.265633 0 8.399711 7.140633 0
+ L3 0 0.052083 8.399711 7.140633 0 8.899711 7.140632 0
+ L3 0 0.052083 9.274711 7.140631 0 9.524711 7.140631 0
+ F3 14737632 0.000000 4
+ 8.899706 3.640632 0
+ 8.899711 7.140632 0
+ 9.274711 7.140631 0
+ 9.274706 3.640631 0
+ L3 0 0.052083 8.899711 7.140632 0 9.274711 7.140631 0
+ L3 0 0.052083 8.899706 3.640632 0 8.899711 7.140632 0
+ L3 0 0.052083 9.274711 7.140631 0 9.274706 3.640631 0
+ L3 8421504 0.020833 9.087206 3.640632 0 9.087211 7.140632 0
+ L3 8421504 0.020833 9.024707 3.765632 0 9.149707 3.765632 0
+ L3 8421504 0.020833 9.024707 3.890632 0 9.149707 3.890632 0
+ L3 8421504 0.020833 9.024707 4.015632 0 9.149707 4.015632 0
+ L3 8421504 0.020833 9.024707 4.140632 0 9.149707 4.140632 0
+ L3 8421504 0.020833 9.024707 4.390632 0 9.149707 4.390632 0
+ L3 8421504 0.020833 9.024707 4.265632 0 9.149707 4.265632 0
+ L3 8421504 0.020833 9.024708 4.515632 0 9.149708 4.515632 0
+ L3 8421504 0.020833 9.024708 4.640632 0 9.149708 4.640632 0
+ L3 8421504 0.020833 9.024708 4.765632 0 9.149708 4.765632 0
+ L3 8421504 0.020833 9.024708 4.890632 0 9.149708 4.890632 0
+ L3 8421504 0.020833 9.024708 5.015632 0 9.149708 5.015632 0
+ L3 8421504 0.020833 9.024709 5.265632 0 9.149709 5.265632 0
+ L3 8421504 0.020833 9.024708 5.140632 0 9.149708 5.140632 0
+ L3 8421504 0.020833 9.024709 5.390632 0 9.149709 5.390632 0
+ L3 8421504 0.020833 9.024709 5.515632 0 9.149709 5.515632 0
+ L3 8421504 0.020833 9.024709 5.640632 0 9.149709 5.640632 0
+ L3 8421504 0.020833 9.024709 5.765632 0 9.149709 5.765632 0
+ L3 8421504 0.020833 9.024709 5.890632 0 9.149709 5.890632 0
+ L3 8421504 0.020833 9.024710 6.015632 0 9.149710 6.015632 0
+ L3 8421504 0.020833 9.024710 6.140632 0 9.149710 6.140632 0
+ L3 8421504 0.020833 9.024710 6.265632 0 9.149710 6.265632 0
+ L3 8421504 0.020833 9.024710 6.390632 0 9.149710 6.390632 0
+ L3 8421504 0.020833 9.024710 6.515632 0 9.149710 6.515632 0
+ L3 8421504 0.020833 9.024710 6.640632 0 9.149710 6.640632 0
+ L3 8421504 0.020833 9.024711 6.765632 0 9.149711 6.765632 0
+ L3 8421504 0.020833 9.024711 6.890632 0 9.149711 6.890632 0
+ L3 8421504 0.020833 9.024711 7.015632 0 9.149711 7.015632 0
+ F3 14737632 0.000000 4
+ 9.899706 3.640631 0
+ 9.899710 6.640631 0
+ 13.399710 6.640626 0
+ 13.399706 3.640626 0
+ L3 0 0.052083 13.399710 6.640626 0 9.899710 6.640631 0
+ L3 8421504 0.020833 13.274707 3.765626 0 10.024707 3.765630 0
+ L3 8421504 0.020833 10.024707 3.890630 0 13.274707 3.890626 0
+ L3 8421504 0.020833 13.274707 4.015626 0 10.024707 4.015630 0
+ L3 8421504 0.020833 10.024707 4.140630 0 13.274707 4.140626 0
+ L3 8421504 0.020833 13.274707 4.265626 0 10.024707 4.265630 0
+ L3 8421504 0.020833 10.024707 4.390630 0 13.274707 4.390626 0
+ L3 8421504 0.020833 13.274708 4.515626 0 10.024708 4.515630 0
+ L3 8421504 0.020833 10.024708 4.640630 0 13.274708 4.640626 0
+ L3 8421504 0.020833 13.274708 4.765626 0 10.024708 4.765630 0
+ L3 8421504 0.020833 10.024708 4.890630 0 13.274708 4.890626 0
+ L3 8421504 0.020833 13.274708 5.015626 0 10.024708 5.015630 0
+ L3 8421504 0.020833 10.024708 5.140630 0 13.274708 5.140626 0
+ L3 8421504 0.020833 13.274709 5.265626 0 10.024709 5.265630 0
+ L3 8421504 0.020833 10.024709 5.390630 0 13.274709 5.390626 0
+ L3 8421504 0.020833 13.274709 5.515626 0 10.024709 5.515630 0
+ L3 8421504 0.020833 10.024709 5.640630 0 13.274709 5.640626 0
+ L3 8421504 0.020833 13.274709 5.765626 0 10.024709 5.765630 0
+ L3 8421504 0.020833 10.024709 5.890630 0 13.274709 5.890626 0
+ L3 8421504 0.020833 13.274710 6.015626 0 10.024710 6.015630 0
+ L3 8421504 0.020833 10.024710 6.140630 0 13.274710 6.140626 0
+ L3 8421504 0.020833 13.274710 6.265626 0 10.024710 6.265630 0
+ L3 8421504 0.020833 10.024710 6.390630 0 13.274710 6.390626 0
+ L3 8421504 0.020833 13.274710 6.515626 0 10.024710 6.515630 0
+ L3 0 0.052083 9.899710 6.640631 0 9.899706 3.640631 0
+ L3 0 0.020833 11.649710 6.640628 0 11.649706 3.640628 0
+ F3 14737632 0.000000 4
+ 13.399704 1.890626 0
+ 13.399706 3.640626 0
+ 6.649706 3.640635 0
+ 6.649704 1.890635 0
+ F3 14737632 0.000000 4
+ 8.774706 3.640632 0
+ 8.774708 4.515632 0
+ 6.649708 4.515635 0
+ 6.649706 3.640635 0
+ F3 14737632 0.000000 4
+ 8.774703 1.015632 0
+ 8.774704 1.890632 0
+ 6.649704 1.890635 0
+ 6.649703 1.015635 0
+ L3 0 0.052083 6.649704 1.890635 0 6.649706 3.640635 0
+ L3 0 0.052083 6.649706 3.640635 0 6.649708 4.515635 0
+ L3 0 0.052083 6.649704 1.890635 0 6.649703 1.015635 0
+ L3 8421504 0.020833 6.774704 1.765635 0 6.774703 1.140635 0
+ L3 8421504 0.020833 6.899704 1.765635 0 6.899703 1.140635 0
+ L3 8421504 0.020833 7.024704 1.765634 0 7.024703 1.140634 0
+ L3 8421504 0.020833 7.149704 1.765634 0 7.149703 1.140634 0
+ L3 8421504 0.020833 7.274704 1.765634 0 7.274703 1.140634 0
+ L3 8421504 0.020833 7.399704 1.765634 0 7.399703 1.140634 0
+ L3 8421504 0.020833 7.524704 1.765634 0 7.524703 1.140634 0
+ L3 8421504 0.020833 7.649704 1.765634 0 7.649703 1.140634 0
+ L3 8421504 0.020833 7.774704 1.765633 0 7.774703 1.140633 0
+ L3 8421504 0.020833 7.899704 1.765633 0 7.899703 1.140633 0
+ L3 8421504 0.020833 8.024704 1.765633 0 8.024703 1.140633 0
+ L3 8421504 0.020833 8.149704 1.765633 0 8.149703 1.140633 0
+ L3 8421504 0.020833 8.274704 1.765633 0 8.274703 1.140633 0
+ L3 8421504 0.020833 8.399704 1.765633 0 8.399703 1.140633 0
+ L3 8421504 0.020833 8.524704 1.765632 0 8.524703 1.140632 0
+ L3 8421504 0.020833 8.649704 1.765632 0 8.649703 1.140632 0
+ L3 8421504 0.020833 6.774707 3.765635 0 6.774707 4.390635 0
+ L3 8421504 0.020833 6.899707 3.765635 0 6.899707 4.390635 0
+ L3 8421504 0.020833 7.024707 4.390634 0 7.024707 3.765634 0
+ L3 8421504 0.020833 7.024707 4.390635 0 7.024707 4.390634 0
+ L3 8421504 0.020833 7.024707 4.390635 0 7.024707 4.390635 0
+ L3 8421504 0.020833 7.149707 4.390634 0 7.149707 3.765634 0
+ L3 8421504 0.020833 7.274707 3.765634 0 7.274707 4.390634 0
+ L3 8421504 0.020833 7.399707 4.390634 0 7.399707 3.765634 0
+ L3 8421504 0.020833 7.524707 4.390634 0 7.524707 3.765634 0
+ L3 8421504 0.020833 7.649707 3.765634 0 7.649707 4.390634 0
+ L3 8421504 0.020833 7.774707 4.390633 0 7.774707 3.765633 0
+ L3 8421504 0.020833 7.899707 3.765633 0 7.899707 4.390633 0
+ L3 8421504 0.020833 8.024707 4.390633 0 8.024707 3.765633 0
+ L3 8421504 0.020833 8.149707 3.765633 0 8.149707 4.390633 0
+ L3 8421504 0.020833 8.274707 4.390633 0 8.274707 3.765633 0
+ L3 8421504 0.020833 8.399707 3.765633 0 8.399707 4.390633 0
+ L3 8421504 0.020833 8.524707 3.765632 0 8.524707 4.390632 0
+ L3 8421504 0.020833 8.649707 4.390632 0 8.649707 3.765632 0
+ L3 8421504 0.020833 7.274706 3.515634 0 7.274704 2.015634 0
+ L3 8421504 0.020833 7.399704 2.015634 0 7.399706 3.515634 0
+ L3 8421504 0.020833 7.524706 3.515634 0 7.524704 2.015634 0
+ L3 8421504 0.020833 7.649704 2.015634 0 7.649706 3.515634 0
+ L3 8421504 0.020833 7.774706 3.515633 0 7.774704 2.015633 0
+ L3 8421504 0.020833 7.899704 2.015633 0 7.899706 3.515633 0
+ L3 8421504 0.020833 8.024706 3.515633 0 8.024704 2.015633 0
+ L3 8421504 0.020833 8.149704 2.015633 0 8.149706 3.515633 0
+ L3 8421504 0.020833 8.274706 3.515633 0 8.274704 2.015633 0
+ L3 8421504 0.020833 8.399704 2.015633 0 8.399706 3.515633 0
+ L3 8421504 0.020833 8.524706 3.515632 0 8.524704 2.015632 0
+ L3 8421504 0.020833 7.149706 3.515634 0 7.149704 2.015634 0
+ L3 8421504 0.020833 7.024704 2.015634 0 7.024706 3.515634 0
+ L3 8421504 0.020833 6.899706 3.515635 0 6.899704 2.015635 0
+ L3 8421504 0.020833 6.774704 2.015635 0 6.774706 3.515635 0
+ L3 8421504 0.020833 8.774706 3.515632 0 8.774704 2.015632 0
+ L3 8421504 0.020833 8.899704 2.015632 0 8.899706 3.515632 0
+ L3 8421504 0.020833 9.024706 3.515632 0 9.024704 2.015632 0
+ L3 8421504 0.020833 9.149704 2.015632 0 9.149706 3.515632 0
+ L3 8421504 0.020833 9.274706 3.515631 0 9.274704 2.015631 0
+ L3 8421504 0.020833 9.399704 2.015631 0 9.399706 3.515631 0
+ L3 8421504 0.020833 9.524706 3.515631 0 9.524704 2.015631 0
+ L3 8421504 0.020833 9.649704 2.015631 0 9.649706 3.515631 0
+ L3 8421504 0.020833 9.774706 3.515631 0 9.774704 2.015631 0
+ L3 8421504 0.020833 9.899704 2.015631 0 9.899706 3.515631 0
+ L3 8421504 0.020833 10.024706 3.515630 0 10.024704 2.015630 0
+ L3 8421504 0.020833 10.149704 2.015630 0 10.149706 3.515630 0
+ L3 8421504 0.020833 10.274706 3.515630 0 10.274704 2.015630 0
+ L3 8421504 0.020833 10.524704 2.015630 0 10.524706 3.515630 0
+ L3 8421504 0.020833 10.399706 3.515630 0 10.399704 2.015630 0
+ L3 8421504 0.020833 10.649704 2.015630 0 10.649706 3.515630 0
+ L3 8421504 0.020833 10.774706 3.515629 0 10.774704 2.015629 0
+ L3 8421504 0.020833 10.899704 2.015629 0 10.899706 3.515629 0
+ L3 8421504 0.020833 11.024706 3.515629 0 11.024704 2.015629 0
+ L3 8421504 0.020833 11.149704 2.015629 0 11.149706 3.515629 0
+ L3 8421504 0.020833 11.274706 3.515629 0 11.274704 2.015629 0
+ L3 8421504 0.020833 11.399704 2.015629 0 11.399706 3.515629 0
+ L3 8421504 0.020833 11.524706 3.515628 0 11.524704 2.015628 0
+ L3 8421504 0.020833 11.649704 2.015628 0 11.649706 3.515628 0
+ L3 8421504 0.020833 11.774706 3.515628 0 11.774704 2.015628 0
+ L3 8421504 0.020833 11.899704 2.015628 0 11.899706 3.515628 0
+ L3 8421504 0.020833 12.024706 3.515628 0 12.024704 2.015628 0
+ L3 8421504 0.020833 12.149704 2.015628 0 12.149706 3.515628 0
+ L3 8421504 0.020833 12.274706 3.515627 0 12.274704 2.015627 0
+ L3 8421504 0.020833 12.399704 2.015627 0 12.399706 3.515627 0
+ L3 8421504 0.020833 12.524706 3.515627 0 12.524704 2.015627 0
+ L3 8421504 0.020833 12.649704 2.015627 0 12.649706 3.515627 0
+ L3 8421504 0.020833 12.774706 3.515627 0 12.774704 2.015627 0
+ L3 8421504 0.020833 12.899704 2.015627 0 12.899706 3.515627 0
+ L3 8421504 0.020833 13.024706 3.515626 0 13.024704 2.015626 0
+ L3 8421504 0.020833 13.149704 2.015626 0 13.149706 3.515626 0
+ L3 8421504 0.020833 13.274706 3.515626 0 13.274704 2.015626 0
+ L3 8421504 0.020833 8.649704 2.015632 0 8.649706 3.515632 0
+ L3 0 0.052083 13.399704 1.890626 0 6.649704 1.890635 0
+ L3 0 0.052083 6.649708 4.515635 0 8.774708 4.515632 0
+ L3 0 0.052083 8.774708 4.515632 0 8.774706 3.640632 0
+ L3 0 0.052083 6.649703 1.015635 0 8.774703 1.015632 0
+ L3 0 0.052083 8.774703 1.015632 0 8.774704 1.890632 0
+ L3 0 0.052083 13.399706 3.640626 0 6.649706 3.640635 0
+ L3 0 0.020833 13.399705 2.765626 0 6.649705 2.765635 0
+ F3 14737632 0.000000 5
+ 6.649706 3.140635 0
+ 0.149706 3.140644 0
+ 0.024705 2.765644 0
+ 0.149705 2.390644 0
+ 6.649705 2.390635 0
+ L3 8421504 0.020833 0.524706 3.015643 0 0.524705 2.515643 0
+ L3 8421504 0.020833 0.649705 2.515643 0 0.649706 3.015643 0
+ L3 8421504 0.020833 0.774706 3.015643 0 0.774705 2.515643 0
+ L3 8421504 0.020833 0.899705 2.515643 0 0.899706 3.015643 0
+ L3 8421504 0.020833 1.024706 3.015642 0 1.024705 2.515642 0
+ L3 8421504 0.020833 1.149705 2.515642 0 1.149706 3.015642 0
+ L3 8421504 0.020833 1.274706 3.015642 0 1.274705 2.515642 0
+ L3 8421504 0.020833 1.399705 2.515642 0 1.399706 3.015642 0
+ L3 8421504 0.020833 1.524706 3.015642 0 1.524705 2.515642 0
+ L3 8421504 0.020833 1.649705 2.515642 0 1.649706 3.015642 0
+ L3 8421504 0.020833 1.774706 3.015641 0 1.774705 2.515641 0
+ L3 8421504 0.020833 1.899705 2.515641 0 1.899706 3.015641 0
+ L3 8421504 0.020833 2.024706 3.015641 0 2.024705 2.515641 0
+ L3 8421504 0.020833 2.149705 2.515641 0 2.149706 3.015641 0
+ L3 8421504 0.020833 2.274706 3.015641 0 2.274705 2.515641 0
+ L3 8421504 0.020833 2.399705 2.515641 0 2.399706 3.015641 0
+ L3 8421504 0.020833 2.524706 3.015640 0 2.524705 2.515640 0
+ L3 8421504 0.020833 2.649705 2.515640 0 2.649706 3.015640 0
+ L3 8421504 0.020833 2.774706 3.015640 0 2.774705 2.515640 0
+ L3 8421504 0.020833 2.899705 2.515640 0 2.899706 3.015640 0
+ L3 8421504 0.020833 3.024706 3.015640 0 3.024705 2.515640 0
+ L3 8421504 0.020833 3.149705 2.515640 0 3.149706 3.015640 0
+ L3 8421504 0.020833 3.274706 3.015639 0 3.274705 2.515639 0
+ L3 8421504 0.020833 3.399705 2.515639 0 3.399706 3.015639 0
+ L3 8421504 0.020833 3.524706 3.015639 0 3.524705 2.515639 0
+ L3 8421504 0.020833 3.649705 2.515639 0 3.649706 3.015639 0
+ L3 8421504 0.020833 3.774706 3.015639 0 3.774705 2.515639 0
+ L3 8421504 0.020833 3.899705 2.515639 0 3.899706 3.015639 0
+ L3 8421504 0.020833 4.024706 3.015638 0 4.024705 2.515638 0
+ L3 8421504 0.020833 4.149705 2.515638 0 4.149706 3.015638 0
+ L3 8421504 0.020833 4.274706 3.015638 0 4.274705 2.515638 0
+ L3 8421504 0.020833 4.399705 2.515638 0 4.399706 3.015638 0
+ L3 8421504 0.020833 4.524706 3.015638 0 4.524705 2.515638 0
+ L3 8421504 0.020833 4.649705 2.515638 0 4.649706 3.015638 0
+ L3 8421504 0.020833 4.774706 3.015637 0 4.774705 2.515637 0
+ L3 8421504 0.020833 4.899705 2.515637 0 4.899706 3.015637 0
+ L3 8421504 0.020833 5.024706 3.015637 0 5.024705 2.515637 0
+ L3 8421504 0.020833 5.149705 2.515637 0 5.149706 3.015637 0
+ L3 8421504 0.020833 5.274706 3.015637 0 5.274705 2.515637 0
+ L3 8421504 0.020833 5.399706 3.015637 0 5.399705 2.515637 0
+ L3 8421504 0.020833 5.524705 2.515636 0 5.524706 3.015636 0
+ L3 8421504 0.020833 5.649706 3.015636 0 5.649705 2.515636 0
+ L3 8421504 0.020833 5.774705 2.515636 0 5.774706 3.015636 0
+ L3 8421504 0.020833 5.899706 3.015636 0 5.899705 2.515636 0
+ L3 8421504 0.020833 6.024705 2.515636 0 6.024706 3.015636 0
+ L3 8421504 0.020833 6.149706 3.015636 0 6.149705 2.515636 0
+ L3 8421504 0.020833 6.274705 2.515635 0 6.274706 3.015635 0
+ L3 0 0.041667 0.274706 3.140643 0 0.274706 3.515643 0
+ L3 0 0.041667 0.274706 3.515643 0 0.399706 3.515643 0
+ L3 0 0.041667 0.399706 3.515643 0 0.399706 3.140643 0
+ L3 8421504 0.020833 6.399706 3.015635 0 6.399705 2.515635 0
+ L3 8421504 0.020833 6.524705 2.515635 0 6.524706 3.015635 0
+ L3 0 0.052083 0.149706 3.140644 0 0.024705 2.765644 0
+ L3 0 0.052083 0.024705 2.765644 0 0.149705 2.390644 0
+ L3 8421504 0.020833 0.149706 3.015644 0 0.149705 2.515644 0
+ L3 8421504 0.020833 0.274705 2.515643 0 0.274706 3.015643 0
+ L3 8421504 0.020833 0.399705 2.515643 0 0.399706 3.015643 0
+ L3 8421504 0.020833 6.649705 2.765635 0 0.024705 2.765644 0
+ L3 0 0.052083 6.649705 2.390635 0 0.149705 2.390644 0
+ L3 0 0.052083 6.649706 3.140635 0 0.149706 3.140644 0
+ L3 0 0.031250 13.337204 1.890626 0 13.337202 0.140626 0
+ L3 0 0.031250 13.087202 0.140626 0 13.087204 1.640626 0
+ L3 0 0.031250 13.337204 1.640626 0 10.399704 1.640630 0
+ L3 0 0.031250 10.399704 1.640630 0 10.399704 1.890630 0
+ L3 0 0.031250 10.399704 1.640630 0 10.024704 1.640630 0
+ L3 0 0.031250 10.024704 1.890630 0 10.024702 0.390630 0
+ L3 0 0.031250 10.024702 0.390630 0 9.774702 0.390631 0
+ L3 0 0.031250 9.774702 0.390631 0 9.774704 1.640631 0
+ L3 0 0.031250 10.024704 1.640630 0 8.774704 1.640632 0
+ L3 0 0.031250 8.774703 1.015632 0 9.712203 1.015631 0
+ L3 0 0.031250 9.712203 1.015631 0 9.712202 0.265631 0
+ L3 0 0.031250 9.712202 0.265631 0 10.087202 0.265630 0
+ L3 0 0.031250 10.087202 0.265630 0 10.087204 1.640630 0
+ L3 0 0.031250 13.024702 0.015626 0 13.399702 0.015625 0
+ L3 0 0.031250 13.399702 0.015626 0 13.399702 0.265626 0
+ L3 0 0.031250 13.399702 0.265626 0 13.337202 0.265626 0
+ L3 0 0.031250 13.024702 0.265626 0 13.024702 0.015626 0
+ L3 8421504 0.010417 10.337204 1.640630 0 10.337204 1.890630 0
+ L3 8421504 0.010417 10.274704 1.640630 0 10.274704 1.890630 0
+ L3 8421504 0.010417 10.212204 1.640630 0 10.212204 1.890630 0
+ L3 8421504 0.010417 10.149704 1.640630 0 10.149704 1.890630 0
+ L3 8421504 0.010417 10.087204 1.640630 0 10.087204 1.890630 0
+ L3 8421504 0.010417 10.024704 1.578130 0 9.774704 1.578131 0
+ L3 8421504 0.010417 9.774704 1.515631 0 10.024704 1.515630 0
+ L3 8421504 0.010417 10.024704 1.453130 0 9.774704 1.453131 0
+ L3 8421504 0.010417 9.774703 1.390631 0 10.024703 1.390630 0
+ L3 8421504 0.010417 10.024703 1.328130 0 9.774703 1.328131 0
+ L3 8421504 0.010417 9.774703 1.265631 0 10.024703 1.265630 0
+ L3 8421504 0.010417 10.024703 1.203130 0 9.774703 1.203131 0
+ L3 8421504 0.010417 9.774703 1.140631 0 10.024703 1.140630 0
+ L3 8421504 0.010417 10.024703 1.078130 0 9.774703 1.078131 0
+ L3 8421504 0.010417 9.774703 1.015631 0 10.024703 1.015630 0
+ L3 8421504 0.010417 10.024703 0.953130 0 9.774703 0.953131 0
+ L3 8421504 0.010417 9.774703 0.890631 0 10.024703 0.890630 0
+ L3 8421504 0.010417 10.024703 0.828130 0 9.774703 0.828131 0
+ L3 8421504 0.010417 9.774703 0.765631 0 10.024703 0.765630 0
+ L3 8421504 0.010417 9.774703 0.703131 0 10.024703 0.703130 0
+ L3 8421504 0.010417 9.774702 0.640631 0 10.024702 0.640630 0
+ L3 8421504 0.010417 9.774702 0.578131 0 10.024702 0.578130 0
+ L3 8421504 0.010417 9.774702 0.515631 0 10.024702 0.515630 0
+ L3 8421504 0.010417 9.774702 0.453131 0 10.024702 0.453130 0
+ L3 8421504 0.010417 12.524711 6.765627 0 12.524711 7.015627 0
+ L3 8421504 0.010417 10.774711 6.765629 0 10.774711 7.015629 0
+ L3 8421504 0.010417 10.774704 1.515629 0 10.774703 1.265629 0
+ L3 8421504 0.010417 12.524704 1.515627 0 12.524703 1.265627 0
+ L3 0 0.031250 13.337202 0.140626 0 13.087202 0.140626 0
+ L3 0 0.031250 13.087202 0.265626 0 13.024702 0.265626 0
+ L3 8421504 0.010417 13.087204 1.578126 0 13.337204 1.578126 0
+ L3 8421504 0.010417 13.087204 1.515626 0 13.337204 1.515626 0
+ L3 8421504 0.010417 13.087204 1.453126 0 13.337204 1.453126 0
+ L3 8421504 0.010417 13.087203 1.390626 0 13.337203 1.390626 0
+ L3 8421504 0.010417 13.087203 1.328126 0 13.337203 1.328126 0
+ L3 8421504 0.010417 13.087203 1.265626 0 13.337203 1.265626 0
+ L3 8421504 0.010417 13.087203 1.203126 0 13.337203 1.203126 0
+ L3 8421504 0.010417 13.087203 1.140626 0 13.337203 1.140626 0
+ L3 8421504 0.010417 13.087203 1.078126 0 13.274703 1.078126 0
+ L3 8421504 0.010417 13.274703 1.078126 0 13.337203 1.078126 0
+ L3 8421504 0.010417 13.087203 1.015626 0 13.337203 1.015626 0
+ L3 8421504 0.010417 13.087203 0.953126 0 13.337203 0.953126 0
+ L3 8421504 0.010417 13.087203 0.890626 0 13.337203 0.890626 0
+ L3 8421504 0.010417 13.087203 0.828126 0 13.337203 0.828126 0
+ L3 8421504 0.010417 13.087203 0.765626 0 13.337203 0.765626 0
+ L3 8421504 0.010417 13.087203 0.703126 0 13.337203 0.703126 0
+ L3 8421504 0.010417 13.087202 0.640626 0 13.337202 0.640626 0
+ L3 8421504 0.010417 13.087202 0.578126 0 13.337202 0.578126 0
+ L3 8421504 0.010417 13.337202 0.515626 0 13.087202 0.515626 0
+ L3 8421504 0.010417 13.087202 0.453126 0 13.337202 0.453126 0
+ L3 8421504 0.010417 13.337202 0.390626 0 13.087202 0.390626 0
+ L3 8421504 0.010417 13.087202 0.328126 0 13.337202 0.328126 0
+ L3 8421504 0.010417 13.337202 0.265626 0 13.087202 0.265626 0
+ L3 8421504 0.010417 13.087202 0.203126 0 13.337202 0.203126 0
+ L3 8421504 0.010417 8.774704 1.703132 0 10.024704 1.703130 0
+ L3 8421504 0.010417 8.774704 1.828132 0 10.024704 1.828130 0
+ L3 8421504 0.010417 8.774704 1.765632 0 10.024704 1.765630 0
+ L3 8421504 0.010417 13.337204 1.828126 0 10.399704 1.828130 0
+ L3 8421504 0.010417 10.399704 1.765630 0 13.337204 1.765626 0
+ L3 8421504 0.010417 10.399704 1.703130 0 13.337204 1.703126 0
+ END
+STRUCTURE N "Walthers Cornerstone Structure Western (coal) Flood Loader 933-3247"
+ G3 0 0.000000 0.000000 1.328484 1.328484 0
+ G3 15132390 0.000000 1.359734 1.359734 1.359734 0
+ F3 8421504 0.000000 4
+ 2.375359 1.812859 0
+ 1.562859 1.812859 0
+ 1.562859 0.844109 0
+ 2.375359 0.844109 0
+ L3 0 0.000000 1.937859 1.812859 0 1.937859 0.844109 0
+ F3 0 0.000000 4
+ 18.984734 0.797234 0
+ 18.953484 0.797234 0
+ 18.953484 0.797234 0
+ 18.984734 0.797234 0
+ F3 12632256 0.000000 4
+ 19.015984 0.797234 0
+ 17.984734 0.797234 0
+ 17.984734 1.797234 0
+ 19.015984 1.797234 0
+ L3 0 0.000000 2.672234 1.078484 0 17.953484 1.078484 0
+ L3 0 0.000000 17.953484 1.078484 0 17.953484 1.547234 0
+ L3 0 0.000000 17.953484 1.547234 0 2.672234 1.547234 0
+ L3 0 0.000000 2.672234 1.547234 0 2.672234 1.078484 0
+ A3 0 0.000000 1.244127 1.344109 1.359734 0 0.000000 360.000000
+ G3 0 0.000000 0.064424 1.734734 1.156609 0
+ G3 8421504 0.000000 0.104816 0.547234 1.406609 0
+ F3 8421504 0.000000 4
+ 2.703484 1.359734 0
+ 17.953484 1.359734 0
+ 17.953484 1.203484 0
+ 2.703484 1.203484 0
+ END
+STRUCTURE N "Walther's Cornerstone Structures New River Mine Tipple 933-3221"
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 5.000000 0.000000 0
+ 5.000000 5.000000 0
+ 0.000000 5.000000 0
+ L3 0 0.000000 2.437500 5.000000 0 2.437500 0.000000 0
+ L3 0 0.000000 1.125000 0.000000 0 1.125000 4.984375 0
+ L3 0 0.000000 2.437500 2.500000 0 4.984375 2.500000 0
+ END
+STRUCTURE N "Walther's Cornerstone Structures New River Mine Conveyor 933-3221"
+ F3 12632256 0.000000 4
+ 3.000000 0.000000 0
+ 0.000000 0.000000 0
+ 0.000000 2.562500 0
+ 3.000000 2.562500 0
+ F3 8421504 0.000000 4
+ 1.250000 2.562500 0
+ 1.750000 2.562500 0
+ 1.750000 2.875000 0
+ 1.250000 2.875000 0
+ L3 0 0.000000 0.000000 0.000000 0 3.000000 0.000000 0
+ L3 0 0.000000 3.000000 0.000000 0 3.000000 2.562500 0
+ L3 0 0.000000 3.000000 2.562500 0 0.000000 2.562500 0
+ L3 0 0.000000 0.000000 2.562500 0 0.000000 0.000000 0
+ L3 0 0.000000 1.500000 2.562500 0 1.500000 0.015625 0
+ L3 0 0.000000 0.000000 1.500000 0 2.984375 1.515625 0
+ END
+STRUCTURE N "Walther's Cornerstone Structures New River Mine Track Coaling Bldg. 933-3221"
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 4.125000 0.000000 0
+ 4.125000 1.625000 0
+ 0.000000 1.625000 0
+ L3 0 0.000000 0.000000 0.812500 0 4.093750 0.796875 0
+ END
+STRUCTURE N "Walthers Cornerstone GoldenFlame Fuel Co. - Office/ScaleHouse 933-3246A"
+ F3 16755285 0.000000 4
+ 0.031250 1.781250 0
+ 2.906250 1.781250 0
+ 2.906250 0.031250 0
+ 0.031250 0.031250 0
+ L3 0 0.062500 0.031250 0.031250 0 2.906250 0.031250 0
+ L3 0 0.062500 2.906250 0.031250 0 2.906250 1.781250 0
+ L3 0 0.062500 2.906250 1.781250 0 0.031250 1.781250 0
+ L3 0 0.062500 0.031250 1.781250 0 0.031250 0.031250 0
+ L3 0 0.062500 0.656250 0.906250 0 2.281250 0.906250 0
+ L3 0 0.062500 2.906250 1.781250 0 2.281250 0.906250 0
+ L3 0 0.062500 0.031250 1.781250 0 0.656250 0.906250 0
+ L3 0 0.062500 0.656250 0.906250 0 0.031250 0.031250 0
+ L3 0 0.062500 2.281250 0.906250 0 2.906250 0.031250 0
+ END
+STRUCTURE N "Walthers Cornerstone GoldenFlame Fuel Co. - Coal Bunker 933-3246B"
+ F3 12632256 0.000000 4
+ 0.031250 2.156250 0
+ 5.406250 2.156250 0
+ 5.406250 0.031250 0
+ 0.031250 0.031250 0
+ L3 0 0.062500 0.031250 0.031250 0 5.406250 0.031250 0
+ L3 0 0.062500 5.406250 0.031250 0 5.406250 2.156250 0
+ L3 0 0.062500 5.406250 2.156250 0 0.031250 2.156250 0
+ L3 0 0.062500 0.031250 2.156250 0 0.031250 0.031250 0
+ L3 0 0.062500 0.031250 1.093750 0 5.406250 1.093750 0
+ L3 0 0.062500 0.031250 1.906250 0 5.406250 1.906250 0
+ L3 0 0.062500 0.031250 0.281250 0 5.406250 0.281250 0
+ F3 12632256 0.000000 4
+ 4.281250 0.031250 0
+ 4.281250 0.031250 0
+ 4.281250 0.031250 0
+ 4.281250 0.031250 0
+ END
+STRUCTURE N "Walthers Cornerstone GoldenFlame Fuel Co. - Pump House 933-3246C"
+ F3 8421504 0.000000 4
+ 0.031250 0.781250 0
+ 1.031250 0.781250 0
+ 1.031250 0.031250 0
+ 0.031250 0.031250 0
+ L3 0 0.062500 0.031250 0.031250 0 1.031250 0.031250 0
+ L3 0 0.062500 1.031250 0.031250 0 1.031250 0.781250 0
+ L3 0 0.062500 1.031250 0.781250 0 0.031250 0.781250 0
+ L3 0 0.062500 0.031250 0.781250 0 0.031250 0.031250 0
+ F3 8421504 0.000000 4
+ 0.406250 0.281250 0
+ 0.406250 0.281250 0
+ 0.406250 0.281250 0
+ 0.406250 0.281250 0
+ END
+STRUCTURE N "Walthers Cornerstone GoldenFlame Fuel Co. - Oil Tanks 933-3246D"
+ G3 12632256 0.000000 0.375000 1.250000 0.375000 0
+ A3 0 0.062500 0.375000 1.250000 0.375000 0 0.000000 360.000000
+ G3 12632256 0.000000 0.375000 0.375000 0.375000 0
+ A3 0 0.062500 0.375000 0.375000 0.375000 0 0.000000 360.000000
+ END
+
+SUBCONTENTS Walthers Cornerstone N Structures - Grain Industries
+STRUCTURE N "Walthers Red Wing Milling Co 933-3212"
+ F4 14596231 0.000000 4 0
+ 0.000000 2.812500 0
+ -0.281250 2.812500 0
+ -0.281250 3.437500 0
+ 0.000000 3.437500 0
+ Y4 0 0.030000 4 0
+ 0.000000 2.812500 0
+ -0.281250 2.812500 0
+ -0.281250 3.437500 0
+ 0.000000 3.437500 0
+ F4 14596231 0.000000 4 0
+ 6.218750 0.921875 0
+ 5.937500 0.921875 0
+ 5.937500 2.171875 0
+ 6.218750 2.171875 0
+ Y4 0 0.030000 4 0
+ 6.218750 0.921875 0
+ 5.937500 0.921875 0
+ 5.937500 2.171875 0
+ 6.218750 2.171875 0
+ F4 8424071 0.000000 4 0
+ 0.000000 0.000000 0
+ 5.937500 0.000000 0
+ 5.937500 3.093750 0
+ 0.000000 3.093750 0
+ Y4 0 0.050000 4 0
+ 0.000000 0.000000 0
+ 5.937500 0.000000 0
+ 5.937500 3.093750 0
+ 0.000000 3.093750 0
+#RailDock
+ F4 14596231 0.000000 4 0
+ 1.000000 -0.312500 0
+ 2.000000 -0.312500 0
+ 2.000000 0.000000 0
+ 1.000000 0.000000 0
+ Y4 0 0.030000 4 0
+ 1.000000 -0.312500 0
+ 2.000000 -0.312500 0
+ 2.000000 0.000000 0
+ 1.000000 0.000000 0
+ F4 8424071 0.000000 4 0
+ 2.000000 0.000000 0
+ 4.000000 0.000000 0
+ 4.000000 -1.250000 0
+ 2.000000 -1.250000 0
+ Y4 0 0.030000 4 0
+ 2.000000 0.000000 0
+ 4.000000 0.000000 0
+ 4.000000 -1.250000 0
+ 2.000000 -1.250000 0
+ L3 0 0.010000 2.600000 -0.625000 0 2.600000 0.000000 0
+ L3 0 0.010000 2.500000 -0.750000 0 2.500000 0.000000 0
+ L3 0 0.010000 2.400000 -0.625000 0 2.400000 0.000000 0
+ L3 0 0.010000 2.300000 -0.750000 0 2.300000 0.000000 0
+ L3 0 0.010000 2.200000 -0.625000 0 2.200000 0.000000 0
+ L3 0 0.010000 2.100000 -0.750000 0 2.100000 0.000000 0
+ F4 12500670 0.000000 4 0
+ 3.900000 0.000000 0
+ 2.900000 0.000000 0
+ 2.900000 -0.343750 0
+ 3.900000 -0.343750 0
+ Y4 0 0.020000 4 0
+ 3.900000 0.000000 0
+ 2.900000 0.000000 0
+ 2.900000 -0.343750 0
+ 3.900000 -0.343750 0
+ A3 0 0.010000 0.050000 3.100000 -0.171875 0 0.000000 360.000000
+ A3 0 0.010000 0.100000 3.100000 -0.171875 0 0.000000 360.000000
+ A3 0 0.010000 0.050000 3.400000 -0.171875 0 0.000000 360.000000
+ A3 0 0.010000 0.100000 3.400000 -0.171875 0 0.000000 360.000000
+ A3 0 0.010000 0.050000 3.700000 -0.171875 0 0.000000 360.000000
+ A3 0 0.010000 0.100000 3.700000 -0.171875 0 0.000000 360.000000
+#RoofBuilding
+ Y4 0 0.050000 4 0
+ 0.000000 0.942107 0
+ 3.093750 0.942107 0
+ 3.093750 2.129607 0
+ 0.000000 2.129607 0
+#PowerRoom
+ F4 8424071 0.000000 4 0
+ 0.000000 3.093750 0
+ 2.000000 3.093750 0
+ 2.000000 4.468750 0
+ 0.000000 4.468750 0
+ Y4 0 0.050000 4 0
+ 0.000000 3.093750 0
+ 2.000000 3.093750 0
+ 2.000000 4.468750 0
+ 0.000000 4.468750 0
+#Stack
+ F4 12500670 0.000000 4 0
+ 0.000000 4.468750 0
+ 0.625000 4.468750 0
+ 0.625000 3.843750 0
+ 0.000000 3.843750 0
+ Y4 0 0.030000 4 0
+ 0.000000 4.468750 0
+ 0.625000 4.468750 0
+ 0.625000 3.843750 0
+ 0.000000 3.843750 0
+ Y4 0 0.030000 4 0
+ 0.062500 4.406250 0
+ 0.562500 4.406250 0
+ 0.562500 3.906250 0
+ 0.062500 3.906250 0
+ F4 0 0.000000 4 0
+ 0.187500 4.281250 0
+ 0.437500 4.281250 0
+ 0.437500 4.031250 0
+ 0.187500 4.031250 0
+ L3 0 0.010000 0.062500 3.906250 0 0.000000 3.843750 0
+ L3 0 0.010000 0.562500 3.906250 0 0.625000 3.843750 0
+ L3 0 0.010000 0.562500 4.406250 0 0.625000 4.468750 0
+ L3 0 0.010000 0.000000 4.468750 0 0.062500 4.406250 0
+#TruckDock
+ F4 14596231 0.000000 4 0
+ 2.000000 3.093750 0
+ 5.875000 3.093750 0
+ 5.875000 3.406250 0
+ 2.000000 3.406250 0
+ Y4 0 0.030000 4 0
+ 2.000000 3.093750 0
+ 5.875000 3.093750 0
+ 5.875000 3.406250 0
+ 2.000000 3.406250 0
+ END$SEGS
+STRUCTURE N "Walthers ADM Grain Elevator (concrete) 933-3225"
+#Silos
+ G3 15720651 0.000000 0.625000 0.625000 2.963542 0
+ G3 15720651 0.000000 0.625000 1.875000 2.963542 0
+ G3 15720651 0.000000 0.625000 3.125000 2.963542 0
+ G3 15720651 0.000000 0.625000 4.375000 2.963542 0
+ G3 15720651 0.000000 0.625000 0.625000 4.213542 0
+ G3 15720651 0.000000 0.625000 1.875000 4.213542 0
+ G3 15720651 0.000000 0.625000 3.125000 4.213542 0
+ G3 15720651 0.000000 0.625000 4.375000 4.213542 0
+ A3 0 0.052083 0.625000 0.625000 2.963542 0 0.000000 360.000000
+ A3 0 0.052083 0.625000 0.625000 4.213542 0 0.000000 360.000000
+ A3 0 0.052083 0.625000 1.875000 2.963542 0 0.000000 360.000000
+ A3 0 0.052083 0.625000 3.125000 2.963542 0 0.000000 360.000000
+ A3 0 0.052083 0.625000 4.375000 2.963542 0 0.000000 360.000000
+ A3 0 0.052083 0.625000 1.875000 4.213542 0 0.000000 360.000000
+ A3 0 0.052083 0.625000 3.125000 4.213542 0 0.000000 360.000000
+ A3 0 0.052083 0.625000 4.375000 4.213542 0 0.000000 360.000000
+#SiloHeadHouse
+ F3 12632256 0.000000 4
+ 0.625000 4.213542 0
+ 5.000000 4.213542 0
+ 5.000000 2.963542 0
+ 0.625000 2.963542 0
+ L3 0 0.052083 0.625000 4.213542 0 0.625000 2.963542 0
+ L3 0 0.052083 0.625000 2.963542 0 5.000000 2.963542 0
+ L3 0 0.052083 0.625000 3.588542 0 5.000000 3.588542 0
+ L3 0 0.052083 5.000000 4.213542 0 0.625000 4.213542 0
+ L3 0 0.052083 5.000000 2.963542 0 5.000000 4.213542 0
+#TruckShed
+ F3 12632256 0.000000 4
+ 5.000000 6.401042 0
+ 7.875000 6.401042 0
+ 7.875000 5.026042 0
+ 5.000000 5.026042 0
+ L3 0 0.052083 5.000000 5.026042 0 5.000000 6.401042 0
+ L3 0 0.052083 5.000000 6.401042 0 7.875000 6.401042 0
+ L3 0 0.052083 7.875000 6.401042 0 7.875000 5.026042 0
+#RailShed
+ F3 12632256 0.000000 4
+ 3.187500 2.151042 0
+ 7.875000 2.151042 0
+ 7.875000 0.026042 0
+ 3.187500 0.026042 0
+ L3 0 0.052083 7.875000 2.151042 0 7.875000 0.026042 0
+ L3 0 0.052083 7.875000 0.026042 0 3.187500 0.026042 0
+ L3 0 0.052083 3.187500 0.026042 0 3.187500 2.151042 0
+ L3 0 0.052083 3.187500 2.151042 0 7.875000 2.151042 0
+ L3 0 0.104167 6.437500 2.151042 0 6.437500 0.963542 0
+#MainBldg
+ F3 12632256 0.000000 4
+ 5.000000 5.026042 0
+ 7.875000 5.026042 0
+ 7.875000 2.151042 0
+ 5.000000 2.151042 0
+ L3 0 0.052083 5.000000 5.026042 0 7.875000 5.026042 0
+ L3 0 0.052083 7.875000 2.151042 0 7.875000 5.026042 0
+ L3 0 0.052083 7.187500 2.151042 0 7.187500 5.026042 0
+ L3 0 0.052083 5.687500 2.151042 0 5.687500 5.026042 0
+ L3 0 0.052083 5.000000 2.151042 0 5.000000 5.026042 0
+ L3 0 0.052083 5.000000 2.151042 0 7.875000 2.151042 0
+ A3 0 0.052083 0.250000 7.527000 2.963542 0 0.000000 360.000000
+ A3 0 0.052083 0.125000 7.527000 2.963542 0 0.000000 360.000000
+ A3 0 0.052083 0.250000 7.527000 4.276042 0 0.000000 360.000000
+ A3 0 0.052083 0.125000 7.527000 4.276042 0 0.000000 360.000000
+ G3 0 0.000000 0.062500 6.437500 4.588542 0
+ G3 0 0.000000 0.062500 6.437500 3.963542 0
+ G3 0 0.000000 0.062500 6.437500 3.088542 0
+ G3 0 0.000000 0.062500 6.437500 2.588542 0
+END
+STRUCTURE N "Walthers ADM Grain ELevator (concrete) Silo Add-on 933-3226"
+#Silos
+ G3 15720651 0.000000 0.625000 0.625000 0.625000 0
+ G3 15720651 0.000000 0.625000 1.875000 0.625000 0
+ G3 15720651 0.000000 0.625000 3.125000 0.625000 0
+ G3 15720651 0.000000 0.625000 4.375000 0.625000 0
+ G3 15720651 0.000000 0.625000 0.625000 1.875000 0
+ G3 15720651 0.000000 0.625000 1.875000 1.875000 0
+ G3 15720651 0.000000 0.625000 3.125000 1.875000 0
+ G3 15720651 0.000000 0.625000 4.375000 1.875000 0
+ A3 0 0.052083 0.625000 0.625000 0.625000 0 0.000000 360.000000
+ A3 0 0.052083 0.625000 0.625000 1.875000 0 0.000000 360.000000
+ A3 0 0.052083 0.625000 1.875000 0.625000 0 0.000000 360.000000
+ A3 0 0.052083 0.625000 3.125000 0.625000 0 0.000000 360.000000
+ A3 0 0.052083 0.625000 4.375000 0.625000 0 0.000000 360.000000
+ A3 0 0.052083 0.625000 1.875000 1.875000 0 0.000000 360.000000
+ A3 0 0.052083 0.625000 3.125000 1.875000 0 0.000000 360.000000
+ A3 0 0.052083 0.625000 4.375000 1.875000 0 0.000000 360.000000
+#SiloHeadHouse
+ F3 12632256 0.000000 4
+ 0.625000 1.875000 0
+ 5.000000 1.875000 0
+ 5.000000 0.625000 0
+ 0.625000 0.625000 0
+ G3 0 0.000000 0.000000 0.625000 0.625000 0
+ G3 0 0.000000 0.000000 0.625000 1.875000 0
+ L3 0 0.052083 0.625000 1.875000 0 0.625000 0.625000 0
+ L3 0 0.052083 0.625000 0.625000 0 5.000000 0.625000 0
+ L3 0 0.052083 0.625000 1.250000 0 5.000000 1.250000 0
+ L3 0 0.052083 5.000000 1.875000 0 0.625000 1.875000 0
+ L3 0 0.052083 5.000000 0.625000 0 5.000000 1.875000 0
+ END
+
+
+
+SUBCONTENTS Walthers Cornerstone N Structures - Engine Servicing Structures
+STRUCTURE N "Walthers Modern Coaling Tower 933-3262"
+ F3 8421504 0.000000 4
+ 0.000000 4.171875 0
+ 1.250000 4.171875 0
+ 1.250000 1.046875 0
+ 0.000000 1.046875 0
+ F3 8421504 0.000000 4
+ 2.000000 1.109375 0
+ 5.000000 1.109375 0
+ 5.000000 4.109375 0
+ 2.000000 4.109375 0
+ F3 8421504 0.000000 4
+ 2.000000 2.125000 0
+ 1.250000 2.125000 0
+ 1.250000 3.125000 0
+ 2.000000 3.125000 0
+ L3 0 0.000000 0.625000 1.062500 0 0.625000 4.187500 0
+ L3 0 0.000000 1.250000 3.125000 0 1.250000 2.125000 0
+ L3 0 0.000000 2.000000 3.125000 0 5.000000 3.125000 0
+ L3 0 0.000000 2.000000 2.125000 0 5.000000 2.125000 0
+ L3 0 0.000000 3.500000 1.125000 0 3.500000 2.125000 0
+ L3 0 0.000000 3.500000 3.125000 0 3.500000 4.125000 0
+ L3 0 0.000000 2.000000 3.125000 0 2.000000 2.125000 0
+ L3 0 0.000000 2.750000 3.125000 0 2.750000 2.125000 0
+ L3 0 0.000000 2.375000 2.125000 0 2.375000 3.125000 0
+ L3 0 0.000000 4.859375 4.125000 0 4.625000 4.125000 0
+ L3 0 0.000000 4.625000 4.125000 0 4.625000 5.250000 0
+ L3 0 0.000000 4.625000 5.250000 0 4.859375 5.250000 0
+ L3 0 0.000000 4.859375 5.250000 0 4.859375 4.125000 0
+ L3 0 0.000000 4.875000 0.000000 0 4.625000 0.000000 0
+ L3 0 0.000000 4.625000 0.000000 0 4.625000 1.109375 0
+ L3 0 0.000000 4.625000 1.109375 0 4.875000 1.109375 0
+ L3 0 0.000000 4.875000 1.109375 0 4.875000 0.000000 0
+ L3 0 0.000000 2.000000 0.000000 0 1.750000 0.000000 0
+ L3 0 0.000000 1.750000 0.000000 0 1.750000 2.156250 0
+ L3 0 0.000000 1.750000 2.156250 0 2.000000 2.156250 0
+ L3 0 0.000000 2.000000 2.156250 0 2.000000 0.000000 0
+ L3 0 0.000000 4.625000 4.250000 0 4.843750 4.250000 0
+ L3 0 0.000000 4.625000 4.375000 0 4.859375 4.375000 0
+ L3 0 0.000000 4.625000 4.500000 0 4.875000 4.500000 0
+ L3 0 0.000000 4.625000 4.625000 0 4.859375 4.625000 0
+ L3 0 0.000000 4.625000 4.750000 0 4.875000 4.750000 0
+ L3 0 0.000000 4.625000 4.875000 0 4.859375 4.875000 0
+ L3 0 0.000000 4.625000 5.000000 0 4.859375 5.000000 0
+ L3 0 0.000000 4.625000 5.125000 0 4.843750 5.125000 0
+ L3 0 0.000000 4.625000 5.250000 0 4.859375 5.250000 0
+ L3 0 0.000000 4.625000 0.000000 0 4.875000 0.000000 0
+ L3 0 0.000000 4.625000 0.125000 0 4.875000 0.125000 0
+ L3 0 0.000000 4.625000 0.250000 0 4.875000 0.250000 0
+ L3 0 0.000000 4.625000 0.375000 0 4.859375 0.375000 0
+ L3 0 0.000000 4.640625 0.500000 0 4.859375 0.500000 0
+ L3 0 0.000000 4.625000 0.625000 0 4.859375 0.625000 0
+ L3 0 0.000000 4.640625 0.875000 0 4.859375 0.875000 0
+ L3 0 0.000000 4.625000 0.750000 0 4.875000 0.750000 0
+ L3 0 0.000000 4.625000 1.000000 0 4.875000 1.000000 0
+ L3 0 0.000000 1.750000 0.000000 0 2.000000 0.000000 0
+ L3 0 0.000000 1.750000 0.125000 0 2.000000 0.125000 0
+ L3 0 0.000000 1.750000 0.250000 0 2.000000 0.250000 0
+ L3 0 0.000000 1.750000 0.375000 0 2.015625 0.375000 0
+ L3 0 0.000000 1.750000 0.500000 0 2.000000 0.500000 0
+ L3 0 0.000000 1.750000 1.000000 0 2.000000 1.000000 0
+ L3 0 0.000000 1.750000 0.875000 0 2.000000 0.875000 0
+ L3 0 0.000000 1.750000 0.625000 0 2.000000 0.625000 0
+ L3 0 0.000000 1.750000 0.750000 0 2.000000 0.750000 0
+ L3 0 0.000000 1.750000 2.000000 0 2.000000 2.000000 0
+ L3 0 0.000000 1.750000 1.875000 0 2.000000 1.875000 0
+ L3 0 0.000000 1.750000 1.750000 0 1.984375 1.750000 0
+ L3 0 0.000000 1.750000 1.625000 0 1.968750 1.625000 0
+ L3 0 0.000000 1.750000 1.500000 0 1.968750 1.500000 0
+ L3 0 0.000000 1.750000 1.375000 0 1.984375 1.375000 0
+ L3 0 0.000000 1.750000 1.250000 0 1.984375 1.250000 0
+ L3 0 0.000000 1.750000 1.125000 0 1.984375 1.125000 0
+ END
+STRUCTURE N "Walthers Modern Coaling Tower Office 933-3262"
+ F3 8421504 0.000000 4
+ 0.000000 2.000000 0
+ 0.750000 2.000000 0
+ 0.750000 0.250000 0
+ 0.000000 0.250000 0
+ F3 12632256 0.000000 4
+ 0.125000 0.250000 0
+ 0.625000 0.250000 0
+ 0.625000 0.000000 0
+ 0.125000 0.000000 0
+ END
+STRUCTURE N "Walthers Shady Jct Water Tower 933-3205a"
+ L 0 0 0.000000 0.000000 1.562500 0.000000
+ L 0 0 1.562500 0.000000 1.562500 1.562500
+ L 0 0 1.562500 1.562500 0.000000 1.562500
+ L 0 0 0.000000 1.562500 0.000000 0.000000
+ L 0 0 0.000000 0.375000 1.250000 0.375000
+ L 0 0 1.250000 0.375000 1.250000 1.562500
+ L 0 0 0.625000 1.000000 0.625000 0.375000
+ L 0 0 0.625000 1.000000 1.250000 1.000000
+ L 0 0 0.625000 1.000000 0.000000 1.000000
+ L 0 0 0.625000 1.000000 0.625000 1.562500
+ L 0 0 0.625000 1.000000 1.062500 1.437500
+ L 0 0 0.625000 1.000000 1.062500 0.562500
+ L 0 0 0.625000 1.000000 0.187500 0.562500
+ L 0 0 0.625000 1.000000 0.187500 1.437500
+ L 0 0 0.625000 1.562500 1.062500 1.437500
+ L 0 0 1.062500 1.437500 1.250000 1.000000
+ L 0 0 1.250000 1.000000 1.062500 0.562500
+ L 0 0 1.062500 0.562500 0.625000 0.375000
+ L 0 0 0.625000 0.375000 0.187500 0.562500
+ L 0 0 0.187500 0.562500 0.000000 1.000000
+ L 0 0 0.000000 1.000000 0.187500 1.437500
+ L 0 0 0.187500 1.437500 0.625000 1.562500
+ L 0 0 1.250000 1.500000 1.750000 1.500000
+ L 0 0 1.750000 1.500000 1.750000 1.062500
+ L 0 0 1.750000 1.062500 1.250000 1.062500
+ END
+STRUCTURE N "Walthers Shady Jct Interlocking Tower 933-3205b"
+ L 0 0 0.000000 0.000000 1.500000 0.000000
+ L 0 0 1.500000 0.000000 1.500000 1.000000
+ L 0 0 1.500000 1.000000 0.000000 1.000000
+ L 0 0 0.000000 1.000000 0.000000 0.000000
+ L 0 0 0.125000 0.062500 1.125000 0.062500
+ L 0 0 1.125000 0.062500 1.125000 0.625000
+ L 0 0 1.125000 0.625000 0.125000 0.625000
+ L 0 0 0.125000 0.625000 0.125000 0.062500
+ L 0 0 0.250000 0.625000 0.250000 0.062500
+ L 0 0 0.250000 0.312500 1.125000 0.312500
+ END
+STRUCTURE N "Walthers Shady Jct Xing Shanty 933-3205c"
+ L 0 0 0.000000 0.000000 1.000000 0.000000
+ L 0 0 1.000000 0.000000 1.000000 0.750000
+ L 0 0 1.000000 0.750000 0.000000 0.750000
+ L 0 0 0.000000 0.750000 0.000000 0.000000
+ L 0 0 0.000000 0.375000 1.000000 0.375000
+ L 0 0 0.750000 0.750000 0.750000 0.937500
+ L 0 0 0.750000 0.937500 0.250000 0.937500
+ L 0 0 0.250000 0.937500 0.250000 0.750000
+ L 0 0 0.125000 0.000000 0.125000 -0.062500
+ L 0 0 0.125000 -0.062500 0.375000 -0.062500
+ L 0 0 0.375000 -0.062500 0.375000 0.000000
+ END
+STRUCTURE N "Walthers Shady Jct Water Crane 933-3205d"
+ L 0 0 0.000000 0.000000 0.500000 0.000000
+ L 0 0 0.500000 0.000000 0.500000 1.125000
+ L 0 0 0.500000 1.125000 0.000000 1.125000
+ L 0 0 0.000000 1.125000 0.000000 0.000000
+ A 0 0 0.000000 0.250000 0.937500 0.000000 360.000000
+ A 0 0 0.062500 0.250000 0.937500 0.000000 360.000000
+ L 0 0 0.312500 0.875000 0.312500 0.187500
+ L 0 0 0.187500 0.875000 0.187500 0.187500
+ L 0 0 0.187500 0.187500 0.312500 0.187500
+ END
+STRUCTURE N "Walthers 2-Stall Engine House 933-3204"
+ L 0 0 0.000000 0.000000 7.625000 0.000000
+ L 0 0 7.625000 0.000000 7.625000 3.250000
+ L 0 0 7.625000 3.250000 0.000000 3.250000
+ L 0 0 0.000000 3.250000 0.000000 0.000000
+ L 0 0 0.000000 1.625000 7.625000 1.625000
+ L 0 0 0.000000 2.000000 7.625000 2.000000
+ L 0 0 0.000000 1.250000 7.625000 1.250000
+ A 0 0 0.225347 6.625000 0.875000 0.000000 360.000000
+ A 0 0 0.139754 6.625000 0.875000 0.000000 360.000000
+ A 0 0 0.225347 1.000000 0.875000 0.000000 360.000000
+ A 0 0 0.139754 1.000000 0.875000 0.000000 360.000000
+ A 0 0 0.225347 1.000000 2.375000 0.000000 360.000000
+ A 0 0 0.139754 1.000000 2.375000 0.000000 360.000000
+ A 0 0 0.225347 6.625000 2.375000 0.000000 360.000000
+ A 0 0 0.139754 6.625000 2.375000 0.000000 360.000000
+ END
+STRUCTURE N "Walthers Union City Roundhouse 933-3202"
+ L3 32768 0.041667 5.145877 13.802068 0 0.020877 8.489568 0
+ L3 32768 0.020833 2.645877 4.583318 0 9.489627 7.427068 0
+ L3 32768 0.020833 1.989627 6.020818 0 8.333377 9.708318 0
+ L3 32768 0.020833 1.114627 7.302068 0 6.927127 11.770818 0
+ L3 32768 0.020833 3.177127 3.052068 0 10.302127 5.020818 0
+ L3 32768 0.020833 3.489627 1.583318 0 10.770877 2.520818 0
+ A3 32768 0.041667 19.375000 -8.385373 0.020818 0 44.474403 45.525597
+ A3 32768 0.041667 12.000000 -8.385373 0.020818 0 44.468552 45.531448
+ L3 32768 0.020833 10.927127 0.020818 0 3.552127 0.020818 0
+ A3 32768 0.041667 15.875123 -8.385373 0.020818 0 44.521254 45.478746
+ A3 32768 0.020833 13.937535 -8.385373 0.020818 0 44.443785 45.556215
+ A3 32768 0.020833 17.687500 -8.385373 0.020818 0 44.498085 45.501915
+ A3 32768 0.020833 17.687500 -8.385373 0.020818 0 44.354681 45.645319
+ L3 32768 0.020833 5.034001 9.576799 0 5.582656 8.740751 0
+ L3 32768 0.020833 5.582656 8.740751 0 4.537595 8.054932 0
+ L3 32768 0.020833 4.537595 8.054932 0 3.988940 8.890980 0
+ L3 32768 0.020833 3.988940 8.890980 0 5.034001 9.576799 0
+ L3 32768 0.020833 6.418694 3.458403 0 7.646536 3.692722 0
+ L3 32768 0.020833 7.646536 3.692722 0 7.833991 2.710449 0
+ L3 32768 0.020833 7.833991 2.710449 0 6.606150 2.476130 0
+ L3 32768 0.020833 6.606150 2.476130 0 6.418694 3.458403 0
+ L3 32768 0.020833 5.875673 5.347717 0 7.056088 5.758959 0
+ L3 32768 0.020833 7.056088 5.758959 0 7.385081 4.814627 0
+ L3 32768 0.020833 7.385081 4.814627 0 6.204666 4.403385 0
+ L3 32768 0.020833 6.204666 4.403385 0 5.875673 5.347717 0
+ L3 32768 0.020833 5.020321 7.205801 0 6.121503 7.797323 0
+ L3 32768 0.020833 6.121503 7.797323 0 6.594721 6.916378 0
+ L3 32768 0.020833 6.594721 6.916378 0 5.493539 6.324856 0
+ L3 32768 0.020833 5.493539 6.324856 0 5.020321 7.205801 0
+ L3 32768 0.020833 2.770605 10.537748 0 3.628429 11.265596 0
+ L3 32768 0.020833 3.628429 11.265596 0 4.275405 10.503086 0
+ L3 32768 0.020833 4.275405 10.503086 0 3.417581 9.775238 0
+ L3 32768 0.020833 3.417581 9.775238 0 2.770605 10.537748 0
+ L3 32768 0.020833 6.733693 1.499074 0 7.979845 1.597084 0
+ L3 32768 0.020833 7.979845 1.597084 0 8.058253 0.600163 0
+ L3 32768 0.020833 8.058253 0.600163 0 6.812101 0.502152 0
+ L3 32768 0.020833 6.812101 0.502152 0 6.733693 1.499074 0
+ A3 32768 0.020833 0.176777 10.114627 1.177068 0 0.000000 360.000000
+ A3 32768 0.020833 0.176777 9.832015 3.613195 0 0.000000 360.000000
+ A3 32768 0.020833 0.176777 4.175765 2.456945 0 0.000000 360.000000
+ A3 32768 0.020833 0.176777 3.769515 4.081945 0 0.000000 360.000000
+ A3 32768 0.020833 0.176777 3.113265 5.675695 0 0.000000 360.000000
+ A3 32768 0.020833 0.176777 2.269515 7.144445 0 0.000000 360.000000
+ A3 32768 0.020833 0.176777 1.238265 8.456945 0 0.000000 360.000000
+ A3 32768 0.020833 0.176777 9.207015 5.956945 0 0.000000 360.000000
+ A3 32768 0.020833 0.176777 8.269515 8.238195 0 0.000000 360.000000
+ A3 32768 0.020833 0.176777 5.550765 12.300695 0 0.000000 360.000000
+ A3 32768 0.020833 0.176777 4.394515 0.863195 0 0.000000 360.000000
+ A3 32768 0.020833 0.176777 7.050765 10.331945 0 0.000000 360.000000
+ END
+STRUCTURE N "Walther's Cornerstone Structure Backshop 933-3227"
+ F3 12632256 0.000000 4
+ 0.000000 7.000000 0
+ 0.000009 0.000000 0
+ 5.250009 0.000007 0
+ 5.250000 7.000007 0
+ F3 8388608 0.000000 4
+ 5.250000 7.000007 0
+ 5.250000 6.875007 0
+ 0.000000 6.875000 0
+ 0.000000 7.000000 0
+ F3 8388608 0.000000 4
+ 5.250000 7.000007 0
+ 5.250009 0.000007 0
+ 5.125009 0.000007 0
+ 5.125000 7.000007 0
+ F3 8388608 0.000000 4
+ 0.000009 0.000000 0
+ 0.000009 0.125000 0
+ 5.250009 0.125007 0
+ 5.250009 0.000007 0
+ F3 8388608 0.000000 4
+ 0.000000 7.000000 0
+ 0.000009 0.000000 0
+ 0.125009 0.000000 0
+ 0.125000 7.000000 0
+ F3 8388608 0.000000 4
+ 5.156251 6.390632 0
+ 5.156250 6.890632 0
+ 4.859375 6.890631 0
+ 4.859376 6.390631 0
+ F3 8388608 0.000000 4
+ 0.125001 6.406250 0
+ 0.125000 6.906250 0
+ 0.500000 6.906251 0
+ 0.500001 6.406251 0
+ F3 8388608 0.000000 4
+ 0.125008 0.656250 0
+ 0.125009 0.093750 0
+ 0.500009 0.093751 0
+ 0.500008 0.656251 0
+ F3 8388608 0.000000 4
+ 5.156258 0.656257 0
+ 5.156259 0.109382 0
+ 4.859384 0.109381 0
+ 4.859383 0.656256 0
+ F3 8388608 0.000000 4
+ 0.140629 3.750000 0
+ 0.140630 3.265625 0
+ 0.515630 3.265626 0
+ 0.515629 3.750001 0
+ F3 8388608 0.000000 4
+ 5.171879 3.750007 0
+ 5.171880 3.265632 0
+ 4.875005 3.265631 0
+ 4.875004 3.750006 0
+ END
+STRUCTURE N "Walther's Cornerstone Structure Yard Office 933-3822"
+ F3 8421504 0.000000 4
+ 0.000000 0.375000 0
+ 2.875000 0.375000 0
+ 2.875000 2.625000 0
+ 0.000000 2.625000 0
+ F3 12632256 0.000000 4
+ 2.750000 0.406250 0
+ 2.375000 0.406250 0
+ 2.375000 0.000000 0
+ 2.750000 0.000000 0
+ F3 12632256 0.000000 4
+ 1.000000 0.359375 0
+ 1.390625 0.359375 0
+ 1.390625 0.000000 0
+ 1.000000 0.000000 0
+ L3 0 0.000000 1.000000 0.125000 0 1.375000 0.125000 0
+ L3 0 0.000000 1.000000 0.250000 0 1.375000 0.250000 0
+ L3 0 0.000000 1.000000 0.375000 0 1.406250 0.375000 0
+ L3 0 0.000000 2.375000 0.375000 0 2.750000 0.375000 0
+ L3 0 0.000000 2.375000 0.250000 0 2.734375 0.250000 0
+ L3 0 0.000000 2.375000 0.125000 0 2.750000 0.125000 0
+ F3 12632256 0.000000 4
+ 0.250000 2.625000 0
+ 1.500000 2.625000 0
+ 1.500000 3.250000 0
+ 0.250000 3.250000 0
+ F3 12632256 0.000000 4
+ 0.375000 3.250000 0
+ 1.000000 3.250000 0
+ 1.000000 3.484375 0
+ 0.375000 3.484375 0
+ F3 12632256 0.000000 4
+ 0.500000 3.500000 0
+ 0.843750 3.500000 0
+ 0.843750 4.000000 0
+ 0.500000 4.000000 0
+ L3 0 0.000000 0.375000 3.250000 0 1.015625 3.250000 0
+ L3 0 0.000000 0.500000 3.500000 0 0.843750 3.500000 0
+ F3 8388608 0.000000 4
+ 0.000000 2.625000 0
+ 0.062500 2.625000 0
+ 0.062500 0.375000 0
+ 0.000000 0.375000 0
+ F3 8388608 0.000000 4
+ 0.000000 0.375000 0
+ 2.859375 0.375000 0
+ 2.859375 0.453125 0
+ 0.000000 0.453125 0
+ F3 8388608 0.000000 4
+ 2.859375 0.375000 0
+ 2.781250 0.375000 0
+ 2.781250 2.625000 0
+ 2.859375 2.625000 0
+ F3 12632256 0.000000 4
+ 0.250000 0.750000 0
+ 0.437500 0.750000 0
+ 0.437500 0.906250 0
+ 0.250000 0.906250 0
+ F3 12632256 0.000000 4
+ 0.250000 2.312500 0
+ 0.437500 2.312500 0
+ 0.437500 2.125000 0
+ 0.250000 2.125000 0
+ F3 16777215 0.000000 4
+ 1.250000 1.750000 0
+ 1.500000 1.750000 0
+ 1.500000 1.500000 0
+ 1.250000 1.500000 0
+ F3 0 0.000000 4
+ 1.281250 1.703125 0
+ 1.453125 1.703125 0
+ 1.453125 1.562500 0
+ 1.281250 1.562500 0
+ G3 0 0.000000 0.078125 2.250000 1.687500 0
+ END
+STRUCTURE N "Walthers Steel Water Tower B/U 933-2601"
+ F3 0 0.000000 4
+ 0.250000 0.000000 0
+ 0.250000 0.000000 0
+ 0.250000 0.000000 0
+ 0.250000 0.000000 0
+ F3 15395562 0.000000 9
+ 0.250000 0.000000 0
+ 0.250000 0.000000 0
+ 1.750000 0.000000 0
+ 2.000000 0.250000 0
+ 2.000000 1.750000 0
+ 1.750000 2.000000 0
+ 0.250000 2.000000 0
+ 0.000000 1.750000 0
+ 0.015625 0.250000 0
+ G3 8421504 0.000000 1.000000 1.000000 1.000000 0
+ L3 0 0.000000 0.000000 1.000000 0 2.000000 1.000000 0
+ L3 0 0.000000 1.000000 0.000000 0 1.000000 2.000000 0
+ L3 0 0.000000 0.281250 1.687500 0 1.718750 0.343750 0
+ L3 0 0.000000 0.328125 0.281250 0 1.656250 1.718750 0
+ L3 0 0.000000 0.329669 1.758125 0 1.018693 1.033385 0
+ L3 0 0.000000 0.239077 1.671997 0 0.928100 0.947257 0
+ L3 0 0.000000 0.501925 1.576940 0 0.411333 1.490812 0
+ L3 0 0.000000 0.588053 1.486347 0 0.497461 1.400220 0
+ L3 0 0.000000 0.674181 1.395755 0 0.560940 1.288095 0
+ L3 0 0.000000 0.748985 1.294397 0 0.647068 1.197503 0
+ L3 0 0.000000 0.932565 1.123978 0 0.830648 1.027084 0
+ L3 0 0.000000 1.018693 1.033385 0 0.928100 0.947257 0
+ L3 0 0.000000 0.846437 1.214570 0 0.755844 1.128442 0
+ L3 0 0.000000 0.415797 1.667532 0 0.325205 1.581404 0
+ L3 0 0.000000 0.329669 1.758125 0 0.239077 1.671997 0
+ END
+STRUCTURE N "Walthers Oil Column B/U 933-2601"
+ F3 14803425 0.000000 4
+ 0.000000 0.000000 0
+ 0.500000 0.000000 0
+ 0.500000 0.500000 0
+ 0.000000 0.500000 0
+ F3 0 0.000000 4
+ 0.250000 0.281250 0
+ 0.625000 0.281250 0
+ 0.625000 0.218750 0
+ 0.250000 0.218750 0
+ END
+STRUCTURE N "Walthers Water Column B/U 933-2601"
+ F3 14342874 0.000000 4
+ 0.000000 0.000000 0
+ 0.875000 0.000000 0
+ 0.875000 0.500000 0
+ 0.000000 0.500000 0
+ F3 0 0.000000 4
+ 0.250000 0.281250 0
+ 1.000000 0.281250 0
+ 1.000000 0.218750 0
+ 0.250000 0.218750 0
+ END
+STRUCTURE N "Walther's Trackside Interlocking Tower 933-2600A"
+ F3 8421504 0.000000 4
+ 0.015625 0.000000 0
+ 1.265625 0.000000 0
+ 1.265625 1.250000 0
+ 0.015625 1.250000 0
+ L3 0 0.000000 0.000000 0.000000 0 1.250000 1.250000 0
+ L3 0 0.000000 1.250000 0.000000 0 0.015625 1.250000 0
+ F3 12976128 0.000000 4
+ 1.265625 1.250000 0
+ 1.015625 1.250000 0
+ 1.015625 2.000000 0
+ 1.265625 2.000000 0
+ F3 13369344 0.000000 4
+ 1.015625 1.250000 0
+ 0.015625 1.250000 0
+ 0.015625 1.421875 0
+ 1.015625 1.421875 0
+ F3 15790320 0.000000 4
+ 0.015625 0.750000 0
+ 0.203125 0.750000 0
+ 0.203125 0.500000 0
+ 0.015625 0.500000 0
+ F3 0 0.000000 4
+ 0.046875 0.687500 0
+ 0.140625 0.687500 0
+ 0.140625 0.562500 0
+ 0.046875 0.562500 0
+ L3 0 0.000000 0.390625 1.250000 0 0.390625 1.437500 0
+ L3 0 0.000000 1.015625 1.437500 0 1.265625 1.437500 0
+ L3 0 0.000000 1.265625 1.437500 0 1.265625 1.250000 0
+ L3 0 0.000000 1.265625 1.250000 0 1.015625 1.250000 0
+ L3 0 0.000000 1.015625 1.250000 0 1.015625 1.437500 0
+ L3 0 0.000000 1.015625 1.875000 0 1.250000 1.875000 0
+ L3 0 0.000000 1.015625 1.750000 0 1.265625 1.750000 0
+ L3 0 0.000000 1.015625 1.625000 0 1.265625 1.625000 0
+ L3 0 0.000000 1.015625 1.500000 0 1.234375 1.500000 0
+ L3 0 0.000000 0.515625 1.250000 0 0.515625 1.453125 0
+ L3 0 0.000000 0.640625 1.250000 0 0.640625 1.453125 0
+ L3 0 0.000000 0.765625 1.250000 0 0.765625 1.437500 0
+ L3 0 0.000000 0.890625 1.250000 0 0.890625 1.453125 0
+ END
+STRUCTURE N "Walther's Speeder Shed 933-2600B"
+ F3 10724259 0.000000 4
+ 0.000000 1.000000 0
+ 1.125000 1.000000 0
+ 1.125000 2.625000 0
+ 0.000000 2.625000 0
+ L3 0 0.000000 0.546875 1.000000 0 0.561380 2.625010 0
+ F3 12632256 0.000000 4
+ 0.171875 0.000000 0
+ 0.921875 0.000000 0
+ 0.921875 1.000000 0
+ 0.171875 1.000000 0
+ L3 0 0.000000 0.343750 0.000000 0 0.343750 1.000000 0
+ L3 0 0.000000 0.750000 0.000000 0 0.750000 1.000000 0
+ L3 0 0.000000 0.343750 0.125000 0 0.750000 0.125000 0
+ L3 0 0.000000 0.328125 0.250000 0 0.750000 0.250000 0
+ L3 0 0.000000 0.343750 0.375000 0 0.734375 0.375000 0
+ L3 0 0.000000 0.343750 0.500000 0 0.765625 0.500000 0
+ L3 0 0.000000 0.343750 0.625000 0 0.750000 0.625000 0
+ L3 0 0.000000 0.343750 0.750000 0 0.750000 0.750000 0
+ L3 0 0.000000 0.328125 0.875000 0 0.750000 0.875000 0
+ END
+STRUCTURE N "Walther's Crossing Shanty 933-2600C"
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 0.625000 0.000000 0
+ 0.625000 0.250000 0
+ 0.000000 0.250000 0
+ F3 11053224 0.000000 4
+ 0.000000 0.250000 0
+ 0.609375 0.250000 0
+ 0.609375 0.750000 0
+ 0.000000 0.750000 0
+ L3 0 0.000000 0.000000 0.500000 0 0.609375 0.500000 0
+ G3 0 0.000000 0.031250 0.187500 0.625000 0
+ F3 16776960 0.000000 4
+ 0.609375 0.656250 0
+ 0.875000 0.656250 0
+ 0.875000 0.296875 0
+ 0.609375 0.296875 0
+ L3 0 0.000000 0.609375 0.671875 0 0.859375 0.671875 0
+ L3 0 0.000000 0.859375 0.671875 0 0.859375 0.281250 0
+ L3 0 0.000000 0.859375 0.281250 0 0.609375 0.281250 0
+ L3 0 0.000000 0.609375 0.281250 0 0.609375 0.671875 0
+ END
+STRUCTURE N "Walther's Speeder 933-2600D"
+ F3 16776960 0.000000 4
+ 0.000000 0.000000 0
+ 0.500000 0.000000 0
+ 0.500000 0.375000 0
+ 0.000000 0.375000 0
+ L3 0 0.000000 0.000000 0.000000 0 0.500000 0.000000 0
+ L3 0 0.000000 0.500000 0.000000 0 0.500000 0.375000 0
+ L3 0 0.000000 0.500000 0.375000 0 0.000000 0.375000 0
+ L3 0 0.000000 0.000000 0.375000 0 0.000000 0.000000 0
+ G3 0 0.000000 0.015625 0.031250 0.187500 0
+ END
+STRUCTURE N "Walther's Cornerstone Structure Cinder Conveyor & Ash Pit 933-3816"
+ F3 8421504 0.000000 4
+ 0.125000 0.375000 0
+ 1.000000 0.375000 0
+ 1.000000 2.125000 0
+ 0.125000 2.125000 0
+ F3 8421504 0.000000 4
+ 0.000000 1.750000 0
+ 1.125000 1.750000 0
+ 1.125000 1.375000 0
+ 0.000000 1.375000 0
+ F3 0 0.000000 4
+ 0.046875 1.687500 0
+ 1.062500 1.687500 0
+ 1.062500 1.437500 0
+ 0.046875 1.437500 0
+ F3 14803425 0.000000 4
+ 0.421875 0.640625 0
+ 1.000000 0.640625 0
+ 1.000000 1.203125 0
+ 0.421875 1.203125 0
+ L3 0 0.000000 0.468750 1.218750 0 0.468750 0.625000 0
+ L3 0 0.000000 0.531250 1.218750 0 0.531250 0.640625 0
+ L3 0 0.000000 0.593750 1.203125 0 0.593750 0.640625 0
+ L3 0 0.000000 0.656250 1.218750 0 0.656250 0.609375 0
+ L3 0 0.000000 0.718750 1.218750 0 0.718750 0.640625 0
+ L3 0 0.000000 0.781250 1.203125 0 0.781250 0.640625 0
+ L3 0 0.000000 0.843750 1.218750 0 0.843750 0.640625 0
+ L3 0 0.000000 0.906250 1.218750 0 0.906250 0.640625 0
+ F3 0 0.000000 4
+ 0.125000 0.375000 0
+ 1.000000 0.375000 0
+ 1.000000 0.406250 0
+ 0.125000 0.406250 0
+ F3 14342874 0.000000 4
+ 0.312500 0.375000 0
+ 0.812500 0.375000 0
+ 0.812500 0.000000 0
+ 0.312500 0.000000 0
+ F3 0 0.000000 4
+ 0.406250 1.234375 0
+ 0.125000 1.234375 0
+ 0.125000 1.218750 0
+ 0.406250 1.218750 0
+ F3 0 0.000000 4
+ 0.109375 0.406250 0
+ 0.140625 0.406250 0
+ 0.140625 1.234375 0
+ 0.109375 1.234375 0
+ F3 0 0.000000 4
+ 0.984375 0.390625 0
+ 0.953125 0.390625 0
+ 0.953125 0.656250 0
+ 0.984375 0.656250 0
+ L3 0 0.000000 0.453125 0.000000 0 0.453125 0.390625 0
+ L3 0 0.000000 0.640625 0.000000 0 0.640625 0.406250 0
+ END
+STRUCTURE N "Walther's Cornerstone Structure Sand Drying Building 933-3813"
+ F3 8421504 0.000000 4
+ 0.000000 0.000000 0
+ 1.812500 0.000000 0
+ 1.812500 1.687500 0
+ 0.000000 1.687500 0
+ L3 0 0.000000 0.000000 0.843750 0 1.812500 0.843750 0
+ L3 0 0.000000 0.765625 0.968750 0 1.125000 0.968750 0
+ L3 0 0.000000 1.125000 0.968750 0 1.125000 0.703125 0
+ L3 0 0.000000 1.125000 0.703125 0 0.765625 0.703125 0
+ L3 0 0.000000 0.765625 0.703125 0 0.765625 0.968750 0
+ F3 16777215 0.000000 4
+ 1.250000 1.375000 0
+ 1.406250 1.375000 0
+ 1.406250 1.250000 0
+ 1.250000 1.250000 0
+ F3 0 0.000000 4
+ 1.281250 1.343750 0
+ 1.359375 1.343750 0
+ 1.359375 1.281250 0
+ 1.281250 1.281250 0
+ END
+STRUCTURE N "Walther's Cornerstone Structure Sanding Storage Bin 933-3813"
+ F3 8421504 0.000000 4
+ 0.000000 0.000000 0
+ 3.500000 0.000000 0
+ 3.500000 1.687500 0
+ 0.000000 1.687500 0
+ F3 16777215 0.000000 4
+ 0.125000 1.562500 0
+ 3.406250 1.562500 0
+ 3.406250 0.109375 0
+ 0.125000 0.109375 0
+ END
+STRUCTURE N "Walther's Cornerstone Structure Small Sanding Tower 933-3813"
+ F3 15790080 0.000000 4
+ 0.000000 0.375000 0
+ 0.875000 0.375000 0
+ 0.875000 0.687500 0
+ 0.000000 0.687500 0
+ G3 12632256 0.000000 0.187500 0.437500 0.562500 0
+ L3 0 0.000000 0.437500 0.750000 0 0.437500 2.125000 0
+ L3 0 0.000000 0.437500 0.375000 0 0.437500 0.000000 0
+ END
+STRUCTURE N "Walther's Cornerstone Structure Large Sanding Tower 933-3813"
+ F3 14803200 0.000000 4
+ 0.000000 1.187500 0
+ 0.750000 1.187500 0
+ 0.750000 1.937500 0
+ 0.000000 1.937500 0
+ F3 12895232 0.000000 4
+ 0.187500 1.375000 0
+ 0.562500 1.375000 0
+ 0.562500 1.750000 0
+ 0.187500 1.750000 0
+ G3 12632256 0.000000 0.171875 0.359375 1.578125 0
+ F3 14803200 0.000000 4
+ 0.296875 0.000000 0
+ 0.484375 0.000000 0
+ 0.484375 0.187500 0
+ 0.296875 0.187500 0
+ F3 14803200 0.000000 4
+ 0.291800 3.073050 0
+ 0.479300 3.073050 0
+ 0.479300 3.260550 0
+ 0.291800 3.260550 0
+ F3 12632256 0.000000 4
+ 0.328125 3.218750 0
+ 0.437500 3.218750 0
+ 0.437500 3.140625 0
+ 0.328125 3.140625 0
+ F3 12632256 0.000000 4
+ 0.343750 0.156250 0
+ 0.437500 0.156250 0
+ 0.437500 0.062500 0
+ 0.343750 0.062500 0
+ L3 0 0.000000 0.375000 1.734375 0 0.375000 3.156250 0
+ L3 0 0.000000 0.375000 1.406250 0 0.374997 0.171875 0
+ END
+STRUCTURE N "Walthers Modern Roundhouse 933-3260"
+ F3 12632256 0.000000 8
+ 6.882222 1.844086 0
+ 7.097887 0.620985 0
+ 7.097887 -0.620985 0
+ 6.882222 -1.844086 0
+ 17.507406 -4.691095 0
+ 18.056029 -1.579698 0
+ 18.056029 1.579698 0
+ 17.507406 4.691095 0
+ L3 0 0.053333 7.097887 0.620985 0 7.097887 -0.620985 0
+ L3 0 0.053333 7.097887 0.620985 0 6.882222 1.844086 0
+ L3 0 0.053333 7.097887 -0.620985 0 6.882222 -1.844086 0
+ L3 0 0.053333 10.750601 0.940556 0 10.750601 -0.940556 0
+ L3 0 0.053333 10.750601 0.940556 0 10.423950 2.793089 0
+ L3 0 0.053333 10.750601 -0.940556 0 10.423950 -2.793089 0
+ L3 0 0.053333 14.403315 1.260127 0 14.403315 -1.260127 0
+ L3 0 0.053333 14.403315 1.260127 0 13.965678 3.742092 0
+ L3 0 0.053333 14.403315 -1.260127 0 13.965678 -3.742092 0
+ L3 0 0.053333 18.056029 1.579698 0 18.056029 -1.579698 0
+ L3 0 0.053333 18.056029 1.579698 0 17.507406 4.691095 0
+ L3 0 0.053333 18.056029 -1.579698 0 17.507406 -4.691095 0
+ L3 0 0.053333 6.882222 1.844086 0 17.507406 4.691095 0
+ L3 0 0.053333 7.097887 0.620985 0 18.056029 1.579698 0
+ L3 0 0.053333 7.097887 -0.620985 0 18.056029 -1.579698 0
+ L3 0 0.053333 6.882222 -1.844086 0 17.507406 -4.691095 0
+ A3 0 0.053333 0.203431 16.249328 2.865195 0 0.000000 360.000000
+ A3 0 0.053333 0.339052 16.249328 2.865195 0 0.000000 360.000000
+ A3 0 0.053333 0.203431 16.500000 0.000000 0 0.000000 360.000000
+ A3 0 0.053333 0.339052 16.500000 0.000000 0 0.000000 360.000000
+ A3 0 0.053333 0.203431 16.249328 -2.865195 0 0.000000 360.000000
+ A3 0 0.053333 0.339052 16.249328 -2.865195 0 0.000000 360.000000
+ END
+STRUCTURE N "Walthers Modern Roundhouse Add-On Stalls 933-3261"
+ F3 12632256 0.000000 8
+ 6.882222 1.844086 0
+ 7.097887 0.620985 0
+ 7.097887 -0.620985 0
+ 6.882222 -1.844086 0
+ 17.507406 -4.691095 0
+ 18.056029 -1.579698 0
+ 18.056029 1.579698 0
+ 17.507406 4.691095 0
+ L3 0 0.053333 7.097887 0.620985 0 7.097887 -0.620985 0
+ L3 0 0.053333 7.097887 0.620985 0 6.882222 1.844086 0
+ L3 0 0.053333 7.097887 -0.620985 0 6.882222 -1.844086 0
+ L3 0 0.053333 10.750601 0.940556 0 10.750601 -0.940556 0
+ L3 0 0.053333 10.750601 0.940556 0 10.423950 2.793089 0
+ L3 0 0.053333 10.750601 -0.940556 0 10.423950 -2.793089 0
+ L3 0 0.053333 14.403315 1.260127 0 14.403315 -1.260127 0
+ L3 0 0.053333 14.403315 1.260127 0 13.965678 3.742092 0
+ L3 0 0.053333 14.403315 -1.260127 0 13.965678 -3.742092 0
+ L3 0 0.053333 18.056029 1.579698 0 18.056029 -1.579698 0
+ L3 0 0.053333 18.056029 1.579698 0 17.507406 4.691095 0
+ L3 0 0.053333 18.056029 -1.579698 0 17.507406 -4.691095 0
+ L3 0 0.053333 6.882222 1.844086 0 17.507406 4.691095 0
+ L3 0 0.053333 7.097887 0.620985 0 18.056029 1.579698 0
+ L3 0 0.053333 7.097887 -0.620985 0 18.056029 -1.579698 0
+ L3 0 0.053333 6.882222 -1.844086 0 17.507406 -4.691095 0
+ A3 0 0.053333 0.203431 16.249328 2.865195 0 0.000000 360.000000
+ A3 0 0.053333 0.339052 16.249328 2.865195 0 0.000000 360.000000
+ A3 0 0.053333 0.203431 16.500000 0.000000 0 0.000000 360.000000
+ A3 0 0.053333 0.339052 16.500000 0.000000 0 0.000000 360.000000
+ A3 0 0.053333 0.203431 16.249328 -2.865195 0 0.000000 360.000000
+ A3 0 0.053333 0.339052 16.249328 -2.865195 0 0.000000 360.000000
+ END
+STRUCTURE N "Walthers Modern Roundhouse(Single Stall) 933-3260"
+ F3 12632256 0.000000 4
+ 7.097887 0.620985 0
+ 7.097887 -0.620985 0
+ 18.056029 -1.579698 0
+ 18.056029 1.579698 0
+ L3 0 0.053333 7.097887 0.620985 0 7.097887 -0.620985 0
+ L3 0 0.053333 10.750601 0.940556 0 10.750601 -0.940556 0
+ L3 0 0.053333 14.403315 1.260127 0 14.403315 -1.260127 0
+ L3 0 0.053333 18.056029 1.579698 0 18.056029 -1.579698 0
+ L3 0 0.053333 7.097887 0.620985 0 18.056029 1.579698 0
+ L3 0 0.053333 7.097887 -0.620985 0 18.056029 -1.579698 0
+ A3 0 0.053333 0.203431 16.500000 0.000000 0 0.000000 360.000000
+ A3 0 0.053333 0.339052 16.500000 0.000000 0 0.000000 360.000000
+ END
+TURNOUT N "Walthers Modern Roundhouse(Single Stall /w Track) 933-3260"
+ P "Normal" 1
+ E 5.187500 0.000000 270.000000
+ S 0 0 5.187500 0.00000 18.000000 0.000000
+ F3 12632256 0.000000 4
+ 7.097887 0.620985 0
+ 7.097887 -0.620985 0
+ 18.056029 -1.579698 0
+ 18.056029 1.579698 0
+ L3 0 0.053333 7.097887 0.620985 0 7.097887 -0.620985 0
+ L3 0 0.053333 10.750601 0.940556 0 10.750601 -0.940556 0
+ L3 0 0.053333 14.403315 1.260127 0 14.403315 -1.260127 0
+ L3 0 0.053333 18.056029 1.579698 0 18.056029 -1.579698 0
+ L3 0 0.053333 7.097887 0.620985 0 18.056029 1.579698 0
+ L3 0 0.053333 7.097887 -0.620985 0 18.056029 -1.579698 0
+ A3 0 0.053333 0.203431 16.500000 0.000000 0 0.000000 360.000000
+ A3 0 0.053333 0.339052 16.500000 0.000000 0 0.000000 360.000000
+ END
+STRUCTURE N "Walther's Cornerstone Structures Machine Shop 933-3264"
+ F3 12632256 0.000000 4
+ 3.015625 0.000000 0
+ 5.187500 0.000000 0
+ 5.187500 2.125000 0
+ 3.015625 2.125000 0
+ F3 8388608 0.000000 4
+ 3.015625 2.125000 0
+ 5.187500 2.125000 0
+ 5.187500 2.062500 0
+ 3.015625 2.062500 0
+ F3 8388608 0.000000 4
+ 5.187500 0.000000 0
+ 5.125000 0.000000 0
+ 5.125000 2.093750 0
+ 5.187500 2.093750 0
+ F3 8388608 0.000000 4
+ 3.015625 0.000000 0
+ 5.171875 0.000000 0
+ 5.171875 0.062500 0
+ 3.015625 0.062500 0
+ G3 8388608 0.000000 0.345168 4.125000 2.500000 0
+ G3 0 0.000000 0.250000 4.125000 2.500000 0
+ F3 8388608 0.000000 4
+ 3.015625 1.000000 0
+ 4.015625 1.000000 0
+ 4.015625 0.937500 0
+ 3.015625 0.937500 0
+ F3 8388608 0.000000 4
+ 4.015625 0.062500 0
+ 3.953125 0.062500 0
+ 3.953125 1.000000 0
+ 4.015625 1.000000 0
+ F3 12632256 0.000000 4
+ 0.015625 0.015625 0
+ 3.015625 0.015625 0
+ 3.015625 8.140625 0
+ 0.015625 8.140625 0
+ F3 8388608 0.000000 4
+ 3.031250 0.046875 0
+ 2.953125 0.046875 0
+ 2.953125 8.140625 0
+ 3.031250 8.140625 0
+ F3 8388608 0.000000 4
+ 0.015625 8.140625 0
+ 0.093750 8.140625 0
+ 0.093750 0.015625 0
+ 0.015625 0.015625 0
+ G3 0 0.000000 0.187500 2.015625 6.015625 0
+ F3 8388608 0.000000 4
+ 0.000000 8.125000 0
+ 3.000000 8.125000 0
+ 3.000000 8.062500 0
+ 0.000000 8.062500 0
+ F3 8388608 0.000000 4
+ 0.031250 0.000000 0
+ 3.031250 0.000000 0
+ 3.031250 0.062500 0
+ 0.031250 0.062500 0
+ G3 0 0.000000 0.187500 2.031250 3.000000 0
+ G3 0 0.000000 0.187500 2.031250 4.500000 0
+ G3 0 0.000000 0.187500 2.031250 1.500000 0
+ END
+STRUCTURE N "Wahther's Cornerstone Structures Machine Shop Engine Room 933-3264A"
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 3.000000 0.000000 0
+ 3.000000 6.000000 0
+ 0.000000 6.000000 0
+ F3 8388608 0.000000 4
+ 0.000000 6.000000 0
+ 2.953125 6.000000 0
+ 2.953125 5.937500 0
+ 0.000000 5.937500 0
+ F3 8388608 0.000000 4
+ 3.000000 6.000000 0
+ 2.937500 6.000000 0
+ 2.937500 0.000000 0
+ 3.000000 0.000000 0
+ F3 8388608 0.000000 4
+ 0.000000 0.000000 0
+ 2.968750 0.000000 0
+ 2.968750 0.062500 0
+ 0.000000 0.062500 0
+ F3 8388608 0.000000 4
+ 0.000000 0.000000 0
+ 0.062500 0.000000 0
+ 0.062500 6.000000 0
+ 0.000000 6.000000 0
+ G3 0 0.000000 0.187500 1.500000 3.000000 0
+ G3 0 0.000000 0.187500 1.500000 5.000000 0
+ G3 0 0.000000 0.187500 1.500000 1.000000 0
+ END
+
+
+SUBCONTENTS Walthers Cornerstone N Structures - Turn Tables
+TURNOUT N "Walthers Modern 130' TurnTable 933-2613/2618" 512
+ P "1" 1 2 3
+ P "2" 4 5 6
+ P "3" 7 8 9
+ P "4" 10 11 12
+ P "5" 13 14 15
+ P "6" 16 17 18
+ P "7" 19 20 21
+ P "8" 22 23 24
+ P "9" 25 26 27
+ P "10" 28 29 30
+ P "11" 31 32 33
+ P "12" 34 35 36
+ P "13" 37 38 39
+ P "14" 40 41 42
+ P "15" 43 44 45
+ P "16" 46 47 48
+ P "17" 49 50 51
+ P "18" 52 53 54
+ E 0.000000 0.000000 180.000000
+ #E 0.000000 5.187500 0.000000
+ E 0.900800 5.108690 10.000000
+ E 1.774229 4.874655 20.000000
+ E 2.593750 4.492507 30.000000
+ E 3.334461 3.973856 40.000000
+ E 3.973856 3.334461 50.000000
+ E 4.492507 2.593750 60.000000
+ E 4.874655 1.774229 70.000000
+ E 5.108690 0.900800 80.000000
+ E 5.187500 0.000000 90.000000
+ E 5.108690 -0.900800 100.000000
+ E 4.874655 -1.774229 110.000000
+ E 4.492507 -2.593750 120.000000
+ E 3.973856 -3.334461 130.000000
+ E 3.334461 -3.973856 140.000000
+ E 2.593750 -4.492507 150.000000
+ E 1.774229 -4.874655 160.000000
+ E 0.900800 -5.108690 170.000000
+ #E 0.000000 -5.187500 180.000000
+ E -0.900800 -5.108690 190.000000
+ E -1.774229 -4.874655 200.000000
+ E -2.593750 -4.492507 210.000000
+ E -3.334461 -3.973856 220.000000
+ E -3.973856 -3.334461 230.000000
+ E -4.492507 -2.593750 240.000000
+ E -4.874655 -1.774229 250.000000
+ E -5.108690 -0.900800 260.000000
+ E -5.187500 0.000000 270.000000
+ E -5.108690 0.900800 280.000000
+ E -4.874655 1.774229 290.000000
+ E -4.492507 2.593750 300.000000
+ E -3.973856 3.334461 310.000000
+ E -3.334461 3.973856 320.000000
+ E -2.593750 4.492507 330.000000
+ E -1.774229 4.874655 340.000000
+ E -0.900800 5.108690 350.000000
+#0/180
+ S 16777215 0.000000 0.000000 5.187500 0.000000 4.968750
+ S 16777215 0.000000 0.000000 4.968750 0.000000 -4.968750
+ S 16777215 0.000000 0.000000 -4.968750 0.000000 -5.187500
+#10/190
+ S 0 0.000000 0.900800 5.108690 0.862814 4.893264
+ S 16777215 0.000000 0.862814 4.893264 -0.862814 -4.893264
+ S 0 0.000000 -0.862814 -4.893264 -0.900800 -5.108690
+#20/200
+ S 0 0.000000 1.774229 4.874655 1.699413 4.669098
+ S 16777215 0.000000 1.699413 4.669098 -1.699413 -4.669098
+ S 0 0.000000 -1.699413 -4.669098 -1.774229 -4.874655
+#30/210
+ S 0 0.000000 2.593750 4.492507 2.484375 4.303064
+ S 16777215 0.000000 2.484375 4.303064 -2.484375 -4.303064
+ S 0 0.000000 -2.484375 -4.303064 -2.593750 -4.492507
+#40/220
+ S 0 0.000000 3.334461 3.973856 3.193851 3.806283
+ S 16777215 0.000000 3.193851 3.806283 -3.193851 -3.806283
+ S 0 0.000000 -3.193851 -3.806283 -3.334461 -3.973856
+#50/230
+ S 0 0.000000 3.973856 3.334461 3.806283 3.193851
+ S 16777215 0.000000 3.806283 3.193851 -3.806283 -3.193851
+ S 0 0.000000 -3.806283 -3.193851 -3.973856 -3.334461
+#60/240
+ S 0 0.000000 4.492507 2.593750 4.303064 2.484375
+ S 16777215 0.000000 4.303064 2.484375 -4.303064 -2.484375
+ S 0 0.000000 -4.303064 -2.484375 -4.492507 -2.593750
+#70/250
+ S 0 0.000000 4.874655 1.774229 4.669098 1.699413
+ S 16777215 0.000000 4.669098 1.699413 -4.669098 -1.699413
+ S 0 0.000000 -4.669098 -1.699413 -4.874655 -1.774229
+#80/260
+ S 0 0.000000 5.108690 0.900800 4.893264 0.862814
+ S 16777215 0.000000 4.893264 0.862814 -4.893264 -0.862814
+ S 0 0.000000 -4.893264 -0.862814 -5.108690 -0.900800
+#90/270
+ S 0 0.000000 5.187500 0.000000 4.968750 0.000000
+ S 16777215 0.000000 4.968750 0.000000 -4.968750 0.000000
+ S 0 0.000000 -4.968750 0.000000 -5.187500 0.000000
+#100/280
+ S 0 0.000000 5.108690 -0.900800 4.893264 -0.862814
+ S 16777215 0.000000 4.893264 -0.862814 -4.893264 0.862814
+ S 0 0.000000 -4.893264 0.862814 -5.108690 0.900800
+#110/290
+ S 0 0.000000 4.874655 -1.774229 4.669098 -1.699413
+ S 16777215 0.000000 4.669098 -1.699413 -4.669098 1.699413
+ S 0 0.000000 -4.669098 1.699413 -4.874655 1.774229
+#120/300
+ S 0 0.000000 4.492507 -2.593750 4.303064 -2.484375
+ S 16777215 0.000000 4.303064 -2.484375 -4.303064 2.484375
+ S 0 0.000000 -4.303064 2.484375 -4.492507 2.593750
+#130/310
+ S 0 0.000000 3.973856 -3.334461 3.806283 -3.193851
+ S 16777215 0.000000 3.806283 -3.193851 -3.806283 3.193851
+ S 0 0.000000 -3.806283 3.193851 -3.973856 3.334461
+#140/320
+ S 0 0.000000 3.334461 -3.973856 3.193851 -3.806283
+ S 16777215 0.000000 3.193851 -3.806283 -3.193851 3.806283
+ S 0 0.000000 -3.193851 3.806283 -3.334461 3.973856
+#150/330
+ S 0 0.000000 2.593750 -4.492507 2.484375 -4.303064
+ S 16777215 0.000000 2.484375 -4.303064 -2.484375 4.303064
+ S 0 0.000000 -2.484375 4.303064 -2.593750 4.492507
+#160/340
+ S 0 0.000000 1.774229 -4.874655 1.699413 -4.669098
+ S 16777215 0.000000 1.699413 -4.669098 -1.699413 4.669098
+ S 0 0.000000 -1.699413 4.669098 -1.774229 4.874655
+#170/350
+ S 0 0.000000 0.900800 -5.108690 0.862814 -4.893264
+ S 16777215 0.000000 0.862814 -4.893264 -0.862814 4.893264
+ S 0 0.000000 -0.862814 4.893264 -0.900800 5.108690
+
+ A 0 0.031250 5.187500 0.000000 0.000000 0.000000 360.000000
+ A 0 0.031250 4.968750 0.000000 0.000000 0.000000 360.000000
+ G3 0 0.000000 0.5 0.000000 0.000000 0
+ A 0 0.000000 4.218750 0.000000 0.000000 0.000000 360.000000
+ A 0 0.020000 4.771875 0.000000 0.000000 0.000000 360.000000
+ A 0 0.020000 4.321875 0.000000 0.000000 0.000000 360.000000
+ END
+
+TURNOUT N "Walthers Manual 120' 10d index TurnTable 933-3203" 512
+# TT Designed w/ 9.00" bridge, 9.576" OD, 10 degree spacing
+ P "1" 1 2 3
+ P "2" 4 5 6
+ P "3" 7 8 9
+ P "4" 10 11 12
+ P "5" 13 14 15
+ P "6" 16 17 18
+ P "7" 19 20 21
+ P "8" 22 23 24
+ P "9" 25 26 27
+ P "10" 28 29 30
+ P "11" 31 32 33
+ P "12" 34 35 36
+ P "13" 37 38 39
+ P "14" 40 41 42
+ P "15" 43 44 45
+ P "16" 46 47 48
+ P "17" 49 50 51
+ P "18" 52 53 54
+
+ E 0.000000 0.000000 180.000000
+ E 0.000000 4.788462 0.000000
+ E 0.831508 4.715714 10.000000
+ E 1.637750 4.499682 20.000000
+ E 2.394231 4.146930 30.000000
+ E 3.077964 3.668175 40.000000
+ E 3.668175 3.077964 50.000000
+ E 4.146930 2.394231 60.000000
+ E 4.499682 1.637750 70.000000
+ E 4.715714 0.831508 80.000000
+ E 4.788162 0.000000 90.000000
+ E 4.715714 -0.831508 100.000000
+ E 4.499682 -1.637750 110.000000
+ E 4.146930 -2.394231 120.000000
+ E 3.668175 -3.077964 130.000000
+ E 3.077964 -3.668175 140.000000
+ E 2.394231 -4.146930 150.000000
+ E 1.637750 -4.499682 160.000000
+ E 0.831508 -4.715714 170.000000
+ E 0.000000 -4.788462 180.000000
+ E -0.831508 -4.715714 190.000000
+ E -1.637750 -4.499682 200.000000
+ E -2.394231 -4.146930 210.000000
+ E -3.077964 -3.668175 220.000000
+ E -3.668175 -3.077964 230.000000
+ E -4.146930 -2.394231 240.000000
+ E -4.499682 -1.637750 250.000000
+ E -4.715714 -0.831508 260.000000
+ E -4.788162 0.000000 270.000000
+ E -4.715714 0.831508 280.000000
+ E -4.499682 1.637750 290.000000
+ E -4.146930 2.394231 300.000000
+ E -3.668175 3.077964 310.000000
+ E -3.077964 3.668175 320.000000
+ E -2.394231 4.146930 330.000000
+ E -1.637750 4.499682 340.000000
+ E -0.831508 4.715714 350.000000
+#Setup
+# S 16777215 0 0.000000 0.000000 0.000000 4.788462
+# S 16777215 0 0.000000 -4.788462 0.000000 4.788462
+#0/180
+ S 0 0 0.000000 4.788462 0.000000 4.500000
+ S 16777215 0 0.000000 4.500000 0.000000 -4.500000
+ S 0 0 0.000000 -4.500000 0.000000 -4.788462
+#10/190
+ S 0 0 0.831508 4.715714 0.781417 4.431635
+ S 16777215 0 0.781417 4.431635 -0.781417 -4.431635
+ S 0 0 -0.781417 -4.431635 -0.831508 -4.715714
+#20/200
+ S 0 0 1.637750 4.499682 1.539090 4.228617
+ S 16777215 0 1.539090 4.228617 -1.539090 -4.228617
+ S 0 0 -1.539090 -4.228617 -1.637750 -4.499682
+#30/210
+ S 0 0 2.394231 4.146930 2.250000 3.897114
+ S 16777215 0 2.250000 3.897114 -2.250000 -3.897114
+ S 0 0 -2.250000 -3.897114 -2.394231 -4.146930
+#40/220
+ S 0 0 3.077964 3.668175 2.892545 3.447200
+ S 16777215 0 2.892545 3.447200 -2.892545 -3.447200
+ S 0 0 -2.892545 -3.447200 -3.077964 -3.668175
+#50/230
+ S 0 0 3.668175 3.077964 3.447200 2.892545
+ S 16777215 0 3.447200 2.892545 -3.447200 -2.892545
+ S 0 0 -3.447200 -2.892545 -3.668175 -3.077964
+#60/240
+ S 0 0 4.146930 2.394231 3.897114 2.250000
+ S 16777215 0 3.897114 2.250000 -3.897114 -2.250000
+ S 0 0 -3.897114 -2.250000 -4.146930 -2.394231
+#70/250
+ S 0 0 4.499682 1.637750 4.228617 1.539090
+ S 16777215 0 4.228617 1.539090 -4.228617 -1.539090
+ S 0 0 -4.228617 -1.539090 -4.499682 -1.637750
+#80/260
+ S 0 0 4.715714 0.831508 4.431635 0.781417
+ S 16777215 0 4.431635 0.781417 -4.431635 -0.781417
+ S 0 0 -4.431635 -0.781417 -4.715714 -0.831508
+#90/270
+ S 0 0 4.788462 0.000000 4.500000 0.000000
+ S 16777215 0 4.500000 0.000000 -4.500000 0.000000
+ S 0 0 -4.500000 0.000000 -4.788462 0.000000
+#100/280
+ S 0 0 4.715714 -0.831508 4.431635 -0.781417
+ S 16777215 0 4.431635 -0.781417 -4.431635 0.781417
+ S 0 0 -4.431635 0.781417 -4.715714 0.831508
+#110/290
+ S 0 0 4.499682 -1.637750 4.228617 -1.539090
+ S 16777215 0 4.228617 -1.539090 -4.228617 1.539090
+ S 0 0 -4.228617 1.539090 -4.499682 1.637750
+#120/300
+ S 0 0 4.146930 -2.394231 3.897114 -2.250000
+ S 16777215 0 3.897114 -2.250000 -3.897114 2.250000
+ S 0 0 -3.8971144 2.250000 -4.146930 2.394231
+#130/310
+ S 0 0 3.668175 -3.077964 3.447200 -2.892545
+ S 16777215 0 3.447200 -2.892545 -3.447200 2.892545
+ S 0 0 -3.447200 2.892545 -3.668175 3.077964
+#140/320
+ S 0 0 3.077964 -3.668175 2.892545 -3.447200
+ S 16777215 0 2.892545 -3.447200 -2.892545 3.447200
+ S 0 0 -2.892545 3.447200 -3.077964 3.668175
+#150/330
+ S 0 0 2.394231 -4.146930 2.250000 -3.897114
+ S 16777215 0 2.250000 -3.897114 -2.250000 3.897114
+ S 0 0 -2.250000 3.897114 -2.394231 4.146930
+#160/340
+ S 0 0 1.637750 -4.499682 1.539090 -4.228617
+ S 16777215 0 1.539090 -4.228617 -1.539090 4.228617
+ S 0 0 -1.539090 4.228617 -1.637750 4.499682
+#170/350
+ S 0 0 0.831508 -4.715714 0.781417 -4.431635
+ S 16777215 0 0.781417 -4.431635 -0.781417 4.431635
+ S 0 0 -0.781417 4.431635 -0.831508 4.715714
+
+ A 0 0.000000 4.788462 0.000000 0.000000 0.000000 360.000000
+ A 0 0.000000 4.500000 0.000000 0.000000 0.000000 360.000000
+ A 0 0.000000 3.894231 0.000000 0.000000 0.000000 360.000000
+ G 0 0.000000 0.500000 0.000000 0.000000 0.000000 360.000000
+ A 0 0.020000 4.404808 0.000000 0.000000 0.000000 360.000000
+ A 0 0.020000 3.989423 0.000000 0.000000 0.000000 360.000000
+ END
+
+
+
+SUBCONTENTS Walthers Cornerstone N Structures - Dairy Facilities
+STRUCTURE N "Walthers Cornerstone Structures Sterling Consolidated Dairy Bottling Plant 933-3298"
+# D 0.000000 0.000000
+ F3 0 0.000000 4
+ 15.000000 2.625000 0
+ 15.000000 2.625000 0
+ 15.000000 2.625000 0
+ 15.000000 2.625000 0
+ F3 12632256 0.000000 4
+ 15.000000 2.640625 0
+ 16.359375 2.640625 0
+ 16.359375 0.125000 0
+ 15.000000 0.125000 0
+ F3 0 0.000000 4
+ 12.500000 2.750000 0
+ 12.500000 2.750000 0
+ 12.500000 2.750000 0
+ 12.500000 2.750000 0
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 2.500000 0.000000 0
+ 2.500000 5.750000 0
+ 0.000000 5.750000 0
+ F3 32768 0.000000 4
+ 0.000000 5.750000 0
+ 0.500000 5.750000 0
+ 0.500000 0.031250 0
+ 0.000000 0.031250 0
+ F3 8388608 0.000000 4
+ 0.500000 0.000000 0
+ 0.625000 0.000000 0
+ 0.625000 5.750000 0
+ 0.500000 5.750000 0
+ F3 8388608 0.000000 4
+ 0.562500 5.750000 0
+ 2.468750 5.750000 0
+ 2.468750 5.625000 0
+ 0.562500 5.625000 0
+ F3 0 0.000000 4
+ 12.437500 5.750000 0
+ 12.437500 5.750000 0
+ 12.437500 5.750000 0
+ 12.437500 5.750000 0
+ F3 8388608 0.000000 4
+ 2.500000 5.750000 0
+ 2.375000 5.750000 0
+ 2.375000 2.750000 0
+ 2.500000 2.750000 0
+ F3 8388608 0.000000 4
+ 12.500000 2.750000 0
+ 2.375000 2.750000 0
+ 2.375000 2.625000 0
+ 12.500000 2.625000 0
+ F3 8388608 0.000000 4
+ 12.500000 5.750000 0
+ 14.984375 5.750000 0
+ 14.984375 5.625000 0
+ 12.500000 5.625000 0
+ F3 8388608 0.000000 4
+ 16.500000 0.000000 0
+ 4.000000 0.000000 0
+ 4.000000 0.125000 0
+ 16.500000 0.125000 0
+ F3 8388608 0.000000 4
+ 3.984375 0.000000 0
+ 0.609375 0.000000 0
+ 0.609375 0.125000 0
+ 3.984375 0.125000 0
+ F3 0 0.000000 4
+ 15.000000 5.765625 0
+ 15.000000 5.765625 0
+ 15.000000 5.765625 0
+ 15.000000 5.765625 0
+ F3 8388608 0.000000 4
+ 15.000000 5.750000 0
+ 14.875000 5.750000 0
+ 14.875000 2.765625 0
+ 15.000000 2.765625 0
+ F3 8388608 0.000000 4
+ 16.500000 2.765625 0
+ 14.875000 2.765625 0
+ 14.875000 2.625000 0
+ 16.500000 2.625000 0
+ F3 8388608 0.000000 4
+ 16.500000 2.765625 0
+ 16.375000 2.765625 0
+ 16.375000 0.140625 0
+ 16.500000 0.140625 0
+ F3 8388608 0.000000 4
+ 12.500000 5.750000 0
+ 12.625000 5.750000 0
+ 12.625000 0.140625 0
+ 12.500000 0.140625 0
+ F3 11316396 0.000000 4
+ 12.625000 5.625000 0
+ 14.843750 5.625000 0
+ 14.843750 0.156250 0
+ 12.625000 0.156250 0
+ G3 8421504 0.000000 0.718920 13.765625 4.546875 0
+ G3 15790320 0.000000 0.594572 13.781250 4.546875 0
+ L3 0 0.000000 13.750000 5.125000 0 13.750000 3.937500 0
+ L3 0 0.000000 13.171875 4.531250 0 14.375000 4.531250 0
+ L3 0 0.000000 13.359375 4.125000 0 14.187500 4.968750 0
+ L3 0 0.000000 13.328125 4.937500 0 14.171875 4.109375 0
+ F3 8388608 0.000000 4
+ 13.000000 3.281250 0
+ 13.250000 3.281250 0
+ 13.250000 3.531250 0
+ 13.000000 3.531250 0
+ F3 0 0.000000 4
+ 13.046875 3.484375 0
+ 13.218750 3.484375 0
+ 13.218750 3.312500 0
+ 13.046875 3.312500 0
+ L3 0 0.000000 13.750000 5.625000 0 13.750000 5.265625 0
+ L3 0 0.000000 13.750000 3.812500 0 13.750000 0.125000 0
+ F3 8388608 0.000000 4
+ 14.875000 2.625000 0
+ 15.000000 2.625000 0
+ 15.000000 0.125000 0
+ 14.875000 0.125000 0
+ L3 0 0.000000 12.625000 0.375000 0 14.875000 0.375000 0
+ L3 0 0.000000 12.609375 0.625000 0 14.875000 0.625000 0
+ L3 0 0.000000 12.625000 0.875000 0 14.859375 0.875000 0
+ L3 0 0.000000 12.625000 1.125000 0 14.875000 1.125000 0
+ L3 0 0.000000 12.625000 1.375000 0 14.875000 1.375000 0
+ L3 0 0.000000 12.625000 1.625000 0 12.625000 1.625000 0
+ L3 0 0.000000 12.625000 1.625000 0 14.875000 1.625000 0
+ F3 12632256 0.000000 4
+ 2.484375 2.625000 0
+ 12.500000 2.625000 0
+ 12.500000 0.125000 0
+ 2.484375 0.125000 0
+ L3 0 0.000000 9.500000 5.656250 0 9.500000 5.656250 0
+ F3 4210752 0.000000 4
+ 11.750000 1.875000 0
+ 11.312500 1.875000 0
+ 11.312500 0.906250 0
+ 11.750000 0.906250 0
+ F3 4210752 0.000000 4
+ 4.531250 1.875000 0
+ 6.062500 1.875000 0
+ 6.062500 1.031250 0
+ 4.531250 1.031250 0
+ G3 4210752 0.000000 0.159344 11.968750 2.250000 0
+ G3 4210752 0.000000 0.251946 3.250000 1.281250 0
+ F3 4210752 0.000000 4
+ 7.750000 2.250000 0
+ 8.250000 2.250000 0
+ 8.250000 1.812500 0
+ 7.750000 1.812500 0
+ F3 4210752 0.000000 4
+ 7.750000 0.750000 0
+ 8.250000 0.750000 0
+ 8.250000 0.343750 0
+ 7.750000 0.343750 0
+ F3 4210752 0.000000 4
+ 1.187500 1.375000 0
+ 1.562500 1.375000 0
+ 1.562500 1.000000 0
+ 1.187500 1.000000 0
+ F3 4473924 0.000000 4
+ 1.125000 4.750000 0
+ 1.812500 4.750000 0
+ 1.812500 4.156250 0
+ 1.125000 4.156250 0
+ L3 0 0.000000 17.937500 7.000000 0 17.937500 7.000000 0
+ L3 0 0.000000 12.609375 1.875000 0 14.859375 1.875000 0
+ L3 0 0.000000 12.609375 2.156250 0 14.843750 2.156250 0
+ L3 0 0.000000 12.609375 2.406250 0 14.859375 2.406250 0
+ L3 0 0.000000 12.593750 2.640625 0 14.843750 2.640625 0
+ L3 0 0.000000 12.593750 2.875000 0 14.843750 2.875000 0
+ L3 0 0.000000 12.609375 3.125000 0 14.859375 3.125000 0
+ L3 0 0.000000 12.593750 3.375000 0 12.984375 3.375000 0
+ L3 0 0.000000 13.250000 3.375000 0 14.859375 3.375000 0
+ L3 0 0.000000 12.593750 3.625000 0 14.859375 3.625000 0
+ L3 0 0.000000 12.593750 3.875000 0 13.531250 3.875000 0
+ L3 0 0.000000 13.984375 3.875000 0 14.859375 3.875000 0
+ L3 0 0.000000 12.609375 4.125000 0 13.171875 4.125000 0
+ L3 0 0.000000 14.328125 4.125000 0 14.875000 4.125000 0
+ L3 0 0.000000 12.593750 4.375000 0 13.062500 4.375000 0
+ L3 0 0.000000 14.453125 4.375000 0 14.843750 4.375000 0
+ L3 0 0.000000 12.593750 4.609375 0 12.593750 4.625000 0
+ L3 0 0.000000 12.609375 4.625000 0 13.031250 4.625000 0
+ L3 0 0.000000 14.468750 4.625000 0 14.843750 4.625000 0
+ L3 0 0.000000 12.593750 4.875000 0 13.125000 4.875000 0
+ L3 0 0.000000 14.390625 4.875000 0 14.859375 4.875000 0
+ L3 0 0.000000 12.593750 5.125000 0 13.328125 5.125000 0
+ L3 0 0.000000 14.171875 5.125000 0 14.828125 5.125000 0
+ L3 0 0.000000 12.593750 5.375000 0 14.843750 5.375000 0
+ END
+STRUCTURE N "Walthers Cornerstone Structures Sterling Consolidated Dairy Power House 933-3298"
+ L3 0 0.000000 0.000000 0.000000 0 2.625000 0.000000 0
+ L3 0 0.000000 2.625000 0.000000 0 2.625000 2.625000 0
+ L3 8388608 0.000000 2.625000 2.625000 0 0.000000 2.625000 0
+ L3 8388608 0.000000 0.000000 2.625000 0 0.000000 0.000000 0
+ F3 8388608 0.000000 4
+ 0.000000 0.000000 0
+ 2.625000 0.000000 0
+ 2.625000 0.125000 0
+ 0.000000 0.125000 0
+ F3 8388608 0.000000 4
+ 0.000000 0.000000 0
+ 0.125000 0.000000 0
+ 0.125000 2.625000 0
+ 0.000000 2.625000 0
+ F3 8388608 0.000000 4
+ 0.000000 2.625000 0
+ 2.625000 2.625000 0
+ 2.625000 2.500000 0
+ 0.000000 2.500000 0
+ F3 8388608 0.000000 4
+ 2.625000 2.625000 0
+ 2.500000 2.625000 0
+ 2.500000 0.000000 0
+ 2.625000 0.000000 0
+ F3 12632256 0.000000 4
+ 0.125000 2.500000 0
+ 2.500000 2.500000 0
+ 2.500000 0.125000 0
+ 0.125000 0.125000 0
+ L3 0 0.000000 1.265625 2.500000 0 1.265625 2.500000 0
+ L3 0 0.000000 1.250000 2.500000 0 1.250000 0.125000 0
+ L3 0 0.000000 0.109375 2.250000 0 2.500000 2.250000 0
+ L3 0 0.000000 0.109375 2.000000 0 2.500000 2.000000 0
+ L3 0 0.000000 0.109375 1.750000 0 2.500000 1.750000 0
+ L3 0 0.000000 0.125000 1.500000 0 2.500000 1.500000 0
+ L3 0 0.000000 0.125000 1.250000 0 2.500000 1.250000 0
+ L3 0 0.000000 0.125000 1.000000 0 2.500000 1.000000 0
+ L3 0 0.000000 0.125000 0.750000 0 2.500000 0.750000 0
+ L3 0 0.000000 0.125000 0.500000 0 2.500000 0.484375 0
+ L3 0 0.000000 0.125000 0.250000 0 2.500000 0.250000 0
+ F3 0 0.000000 4
+ 0.812500 1.437500 0
+ 1.015625 1.437500 0
+ 1.015625 1.296875 0
+ 0.812500 1.296875 0
+ F3 0 0.000000 4
+ 1.500000 1.421875 0
+ 1.718750 1.421875 0
+ 1.718750 1.281250 0
+ 1.500000 1.281250 0
+ END
+STRUCTURE N "Walthers Cornerstone Structures Sterling Consolidated Dairy Smoke Stack 933-3298"
+ G3 8388608 0.000000 0.375325 0.375325 0.375325 0
+ G3 0 0.000000 0.281250 0.375325 0.375325 0
+ END
+STRUCTURE N "Walthers Cornerstone Structures Sterling Consolidated Dairy Office/Freight House 933-3298"
+ F3 8388608 0.000000 4
+ 0.093750 0.125000 0
+ 8.500000 0.125000 0
+ 8.500000 0.000000 0
+ 0.093750 0.000000 0
+ F3 8388608 0.000000 4
+ 0.000000 0.000000 0
+ 0.109375 0.000000 0
+ 0.109375 3.750000 0
+ 0.000000 3.750000 0
+ F3 8388608 0.000000 4
+ 8.500000 0.000000 0
+ 8.359375 0.000000 0
+ 8.359375 3.750000 0
+ 8.500000 3.750000 0
+ F3 8388608 0.000000 4
+ 0.000000 3.750000 0
+ 8.484375 3.750000 0
+ 8.484375 3.625000 0
+ 0.000000 3.625000 0
+ F3 12632256 0.000000 4
+ 0.109375 3.625000 0
+ 8.343750 3.625000 0
+ 8.343750 0.140625 0
+ 0.109375 0.140625 0
+ F3 8388608 0.000000 4
+ 2.500000 3.625000 0
+ 2.625000 3.625000 0
+ 2.625000 0.000000 0
+ 2.500000 0.000000 0
+ L3 0 0.000000 0.000000 1.875000 0 2.531250 1.875000 0
+ F3 7039851 0.000000 4
+ 0.687500 3.125000 0
+ 0.906250 3.125000 0
+ 0.906250 2.875000 0
+ 0.687500 2.875000 0
+ G3 7105644 0.000000 0.132583 0.625000 1.031250 0
+ L3 0 0.000000 0.250000 3.625000 0 0.250000 0.125000 0
+ L3 0 0.000000 0.500000 3.625000 0 0.484375 0.140625 0
+ L3 0 0.000000 0.750000 3.625000 0 0.750000 3.125000 0
+ L3 0 0.000000 0.750000 2.875000 0 0.750000 0.125000 0
+ L3 0 0.000000 1.000000 3.625000 0 1.000000 0.125000 0
+ L3 0 0.000000 1.250000 3.625000 0 1.250000 0.125000 0
+ L3 0 0.000000 1.500000 3.625000 0 1.500000 0.156250 0
+ L3 0 0.000000 1.750000 3.625000 0 1.750000 0.125000 0
+ L3 0 0.000000 2.000000 3.625000 0 2.000000 0.125000 0
+ L3 0 0.000000 2.250000 3.625000 0 2.250000 0.140625 0
+ F3 7368816 0.000000 4
+ 5.343750 2.125000 0
+ 5.718750 2.125000 0
+ 5.718750 1.750000 0
+ 5.343750 1.750000 0
+ G3 7631988 0.000000 0.172584 3.500000 3.000000 0
+ G3 7039851 0.000000 0.187500 3.500000 0.750000 0
+ G3 6776679 0.000000 0.188150 7.500000 0.750000 0
+ G3 0 0.000000 0.187500 7.500000 3.000000 0
+ END
+STRUCTURE N "Walthers Cornerstone Structures Sterling Consolidated Dairy Store 933-3298"
+ F3 16776960 0.000000 4
+ 0.000000 0.000000 0
+ 0.125000 0.000000 0
+ 0.125000 2.750000 0
+ 0.000000 2.750000 0
+ F3 16776960 0.000000 4
+ 0.000000 0.000000 0
+ 1.875000 0.000000 0
+ 1.875000 0.125000 0
+ 0.000000 0.125000 0
+ F3 16776960 0.000000 4
+ 0.000000 2.750000 0
+ 1.875000 2.750000 0
+ 1.875000 2.625000 0
+ 0.000000 2.625000 0
+ F3 16776960 0.000000 4
+ 1.875000 0.000000 0
+ 1.750000 0.000000 0
+ 1.750000 2.750000 0
+ 1.875000 2.750000 0
+ F3 15000804 0.000000 4
+ 0.125000 2.625000 0
+ 1.734375 2.625000 0
+ 1.734375 0.125000 0
+ 0.125000 0.125000 0
+ F3 0 0.000000 4
+ 0.250000 2.250000 0
+ 0.421875 2.250000 0
+ 0.421875 2.078125 0
+ 0.250000 2.078125 0
+ END
+
+
+
+SUBCONTENTS Walthers Cornerstone N Structures - Passenger Facilities
+STRUCTURE N "Walthers Santa Fe Depot circa 1908 933-3803"
+ F3 16379605 0.000000 4
+ 0.000000 3.875000 0
+ 6.750000 3.875000 0
+ 6.750000 0.000000 0
+ 0.000000 0.000000 0
+ L3 0 0.000000 0.000000 0.000000 0 6.750000 0.000000 0
+ L3 0 0.000000 6.750000 0.000000 0 6.750000 3.875000 0
+ L3 0 0.000000 6.750000 3.875000 0 0.000000 3.875000 0
+ L3 0 0.000000 0.375000 0.375000 0 6.375000 0.375000 0
+ L3 0 0.000000 6.375000 0.375000 0 6.375000 3.500000 0
+ L3 0 0.000000 6.375000 3.500000 0 0.375000 3.500000 0
+ L3 0 0.000000 0.375000 3.500000 0 0.375000 0.375000 0
+ L3 0 0.000000 0.359375 1.937500 0 6.359375 1.937500 0
+ L3 0 0.000000 6.359375 2.625000 0 6.234375 2.625000 0
+ L3 0 0.000000 6.234375 2.625000 0 6.234375 1.375000 0
+ L3 0 0.000000 6.234375 1.375000 0 6.359375 1.375000 0
+ L3 0 0.000000 6.359375 1.375000 0 6.359375 2.625000 0
+ L3 0 0.000000 0.500000 2.625000 0 0.500000 1.250000 0
+ L3 0 0.000000 0.500000 1.250000 0 0.375000 1.250000 0
+ L3 0 0.000000 0.375000 1.250000 0 0.375000 2.750000 0
+ L3 0 0.000000 0.375000 2.625000 0 0.484375 2.625000 0
+ L3 0 0.000000 2.125000 0.375000 0 4.125000 0.375000 0
+ L3 0 0.000000 4.125000 0.375000 0 4.125000 0.500000 0
+ L3 0 0.000000 4.125000 0.500000 0 2.125000 0.500000 0
+ L3 0 0.000000 2.125000 0.500000 0 2.125000 0.375000 0
+ L3 0 0.000000 2.125000 3.500000 0 4.125000 3.500000 0
+ L3 0 0.000000 4.125000 3.500000 0 4.125000 3.375000 0
+ L3 0 0.000000 4.125000 3.375000 0 2.125000 3.375000 0
+ L3 0 0.000000 2.125000 3.375000 0 2.125000 3.500000 0
+ L3 0 0.000000 5.500000 2.390625 0 5.781250 2.390625 0
+ L3 0 0.000000 5.781250 2.390625 0 5.781250 2.156250 0
+ L3 0 0.000000 5.781250 2.156250 0 5.500000 2.156250 0
+ L3 0 0.000000 5.500000 2.156250 0 5.500000 2.390625 0
+ L3 0 0.000000 0.921875 2.390625 0 1.203125 2.390625 0
+ L3 0 0.000000 1.203125 2.390625 0 1.203125 2.140625 0
+ L3 0 0.000000 1.203125 2.140625 0 0.921875 2.140625 0
+ L3 0 0.000000 0.921875 2.140625 0 0.921875 2.390625 0
+ L3 0 0.000000 0.015625 3.859375 0 0.015625 0.015625 0
+ END
+STRUCTURE N "Walther's Cornerstone Structures Butterfly-Style Station Platform Shelter 933-3258"
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 6.125000 0.000000 0
+ 6.125000 1.250000 0
+ 0.000000 1.250000 0
+ END
+STRUCTURE N "Walthers Union Station (Cornerstone Series) 3257"
+ F3 14211288 0.000000 4
+ 0.000000 6.000000 0
+ 16.000000 6.000000 0
+ 16.000000 0.000000 0
+ 0.000000 0.000000 0
+ L3 0 0.000000 0.000000 0.003094 0 16.000000 0.003094 0
+ L3 0 0.000000 16.000000 0.003094 0 16.000000 6.003094 0
+ L3 0 0.000000 16.000000 6.003094 0 0.000000 6.003094 0
+ L3 0 0.000000 0.000000 6.003094 0 0.000000 0.003094 0
+ L3 0 0.000000 0.000000 0.503094 0 4.500000 0.503094 0
+ L3 0 0.000000 4.500000 0.503094 0 4.500000 5.565594 0
+ L3 0 0.000000 4.500000 5.565594 0 0.000000 5.565594 0
+ L3 0 0.000000 0.000000 5.565594 0 0.000000 0.503094 0
+ L3 0 0.000000 16.000000 0.003094 0 11.437500 0.003094 0
+ L3 0 0.000000 16.000000 5.346844 0 16.000000 0.003094 0
+ L3 0 0.000000 16.000000 0.503094 0 11.500000 0.503094 0
+ L3 0 0.000000 11.500000 0.503094 0 11.500000 5.565594 0
+ L3 0 0.000000 11.500000 5.565594 0 16.000000 5.565594 0
+ L3 0 0.000000 16.000000 5.565594 0 16.000000 0.503094 0
+ L3 0 0.000000 4.468750 5.565594 0 4.468750 6.003094 0
+ L3 0 0.000000 11.500000 5.565594 0 11.500000 6.003094 0
+ L3 0 0.000000 11.500000 0.503094 0 11.500000 0.003094 0
+ L3 0 0.000000 4.500000 0.503094 0 4.500000 0.003094 0
+ A3 0 0.000000 0.159344 8.000000 0.159344 0 0.000000 360.000000
+ A3 0 0.000000 0.156250 10.500000 0.190594 0 0.000000 360.000000
+ A3 0 0.000000 0.156250 9.250000 0.159344 0 0.000000 360.000000
+ A3 0 0.000000 0.159344 5.500000 0.159344 0 0.000000 360.000000
+ A3 0 0.000000 0.159344 6.750000 0.159344 0 0.000000 360.000000
+ L3 0 0.000000 0.125000 5.378094 0 4.343750 5.378094 0
+ L3 0 0.000000 4.343750 5.378094 0 4.343750 0.659344 0
+ L3 0 0.000000 4.343750 0.659344 0 0.125000 0.659344 0
+ L3 0 0.000000 0.125000 0.659344 0 0.125000 5.378094 0
+ L3 0 0.000000 11.687500 5.378094 0 15.843750 5.378094 0
+ L3 0 0.000000 15.843750 5.378094 0 15.843750 0.690594 0
+ L3 0 0.000000 15.843750 0.690594 0 11.687500 0.690594 0
+ L3 0 0.000000 11.687500 0.690594 0 11.687500 5.378094 0
+ L3 0 0.000000 4.625000 5.815594 0 11.375000 5.815594 0
+ L3 0 0.000000 11.375000 5.815594 0 11.375000 0.503094 0
+ L3 0 0.000000 11.375000 0.503094 0 4.625000 0.503094 0
+ L3 0 0.000000 4.625000 0.503094 0 4.625000 5.815594 0
+ L3 0 0.000000 7.500000 0.503094 0 8.500000 0.503094 0
+ L3 0 0.000000 8.500000 0.503094 0 8.500000 0.690594 0
+ L3 0 0.000000 8.500000 0.690594 0 7.500000 0.690594 0
+ L3 0 0.000000 7.500000 0.690594 0 7.500000 0.503094 0
+ END
+
+
+
+SUBCONTENTS Walthers Cornerstone N Structures - Trackside Industries
+STRUCTURE N "Walther's Hardwood Furniture Company 933-3232"
+ F4 14596231 0.000000 4 0
+ 7.000000 1.875000 0
+ 7.187500 1.875000 0
+ 7.187500 1.500000 0
+ 7.000000 1.500000 0
+ Y4 0 0.010000 4 0
+ 7.000000 1.875000 0
+ 7.187500 1.875000 0
+ 7.187500 1.500000 0
+ 7.000000 1.500000 0
+ F4 14596231 0.000000 4 0
+ 3.312500 0.000000 0
+ 3.687500 0.000000 0
+ 3.687500 -0.375000 0
+ 3.312500 -0.375000 0
+ Y4 0 0.010000 4 0
+ 3.312500 0.000000 0
+ 3.687500 0.000000 0
+ 3.687500 -0.375000 0
+ 3.312500 -0.375000 0
+ F4 8424071 0.000000 4 0
+ 0.000000 0.000000 0
+ 7.000000 0.000000 0
+ 7.000000 6.000000 0
+ 0.000000 6.000000 0
+ Y4 0 0.050000 4 0
+ 0.000000 0.000000 0
+ 7.000000 0.000000 0
+ 7.000000 6.000000 0
+ 0.000000 6.000000 0
+ F4 12500670 0.000000 4 0
+ 5.381250 4.243750 0
+ 5.756250 4.243750 0
+ 5.756250 3.868750 0
+ 5.381250 3.868750 0
+ Y4 0 0.010000 4 0
+ 5.381250 4.243750 0
+ 5.756250 4.243750 0
+ 5.756250 3.868750 0
+ 5.381250 3.868750 0
+ F4 12500670 0.000000 4 0
+ 2.881250 2.368750 0
+ 4.006250 2.368750 0
+ 4.006250 4.243750 0
+ 2.881250 4.243750 0
+ Y4 0 0.010000 4 0
+ 2.881250 2.368750 0
+ 4.006250 2.368750 0
+ 4.006250 4.243750 0
+ 2.881250 4.243750 0
+ F4 10249759 0.000000 8 0
+ 1.238528 3.631250 0
+ 0.868750 3.261472 0
+ 0.868750 2.738528 0
+ 1.238528 2.368750 0
+ 1.761472 2.368750 0
+ 2.131250 2.738528 0
+ 2.131250 3.261472 0
+ 1.761472 3.631250 0
+ Y4 0 0.010000 8 0
+ 1.238528 3.631250 0
+ 0.868750 3.261472 0
+ 0.868750 2.738528 0
+ 1.238528 2.368750 0
+ 1.761472 2.368750 0
+ 2.131250 2.738528 0
+ 2.131250 3.261472 0
+ 1.761472 3.631250 0
+ G3 3355443 0 0.531250 1.500000 3.000000 0
+ END$SEGS
+STRUCTURE N "Walther's George Roberts Printinge 933-3231"
+ F4 14596231 0.000000 4 0
+ 0.000000 2.937500 0
+ -0.250000 2.937500 0
+ -0.250000 2.000000 0
+ 0.000000 2.000000 0
+ Y4 0 0.010000 4 0
+ 0.000000 2.937500 0
+ -0.250000 2.937500 0
+ -0.250000 2.000000 0
+ 0.000000 2.000000 0
+ F4 14596231 0.000000 4 0
+ 3.250000 0.000000 0
+ 4.125000 0.000000 0
+ 4.125000 -0.250000 0
+ 3.250000 -0.250000 0
+ Y4 0 0.010000 4 0
+ 3.250000 0.000000 0
+ 4.125000 0.000000 0
+ 4.125000 -0.250000 0
+ 3.250000 -0.250000 0
+ F4 8424071 0.000000 6 0
+ 0.000000 0.000000 0
+ 7.375000 0.000000 0
+ 7.375000 3.062500 0
+ 4.500000 3.062500 0
+ 4.500000 1.437500 0
+ 0.000000 1.437500 0
+ Y4 11540255 0.050000 6 0
+ 0.000000 0.000000 0
+ 7.375000 0.000000 0
+ 7.375000 3.062500 0
+ 4.500000 3.062500 0
+ 4.500000 1.437500 0
+ 0.000000 1.437500 0
+ F4 12500670 0.000000 4 0
+ 0.000000 1.437500 0
+ 4.500000 1.437500 0
+ 4.500000 4.500000 0
+ 0.000000 4.500000 0
+ Y4 11540255 0.050000 4 0
+ 0.000000 1.437500 0
+ 4.500000 1.437500 0
+ 4.500000 4.500000 0
+ 0.000000 4.500000 0
+ F4 14596231 0.000000 4 0
+ 0.125000 4.375000 0
+ 1.312500 4.375000 0
+ 1.312500 3.187500 0
+ 0.125000 3.187500 0
+ Y4 0 0.010000 4 0
+ 0.125000 4.375000 0
+ 1.312500 4.375000 0
+ 1.312500 3.187500 0
+ 0.125000 3.187500 0
+ G3 3355443 0 0.531250 0.718750 3.781250 0
+ L3 0 0.000000 0.000000 3.062500 0 0.300000 3.062500 0
+ L3 0 0.000000 0.450000 3.062500 0 0.750000 3.062500 0
+ L3 0 0.000000 0.900000 3.062500 0 1.200000 3.062500 0
+ L3 0 0.000000 1.350000 3.062500 0 1.650000 3.062500 0
+ L3 0 0.000000 1.800000 3.062500 0 2.100000 3.062500 0
+ L3 0 0.000000 2.250000 3.062500 0 2.550000 3.062500 0
+ L3 0 0.000000 2.700000 3.062500 0 3.000000 3.062500 0
+ L3 0 0.000000 3.150000 3.062500 0 3.450000 3.062500 0
+ L3 0 0.000000 3.600000 3.062500 0 3.900000 3.062500 0
+ L3 0 0.000000 4.050000 3.062500 0 4.200000 3.062500 0
+ F4 3355443 0.000000 4 0
+ 4.125000 2.812500 0
+ 4.375000 2.812500 0
+ 4.375000 3.062500 0
+ 4.125000 3.062500 0
+ Y4 0 0.010000 4 0
+ 4.125000 2.812500 0
+ 4.375000 2.812500 0
+ 4.375000 3.062500 0
+ 4.125000 3.062500 0
+ G3 3355443 0 0.125000 5.468750 0.718750 0
+ G3 3355443 0 0.125000 5.468750 2.250000 0
+ G3 3355443 0 0.125000 6.781250 0.718750 0
+ G3 3355443 0 0.125000 1.781250 0.718750 0
+ G3 3355443 0 0.125000 3.656250 0.718750 0
+ G3 3355443 0 0.125000 6.781250 2.250000 0
+ G3 3355443 0 0.125000 2.281250 2.250000 0
+ G3 3355443 0 0.125000 2.281250 3.781250 0
+ END$SEGS
+STRUCTURE N "Walther's Icing Platform 292-3061"
+ F3 13816530 0.000000 4
+ 0.000000 0.015625 0
+ 10.000000 0.015625 0
+ 10.000000 1.453125 0
+ 0.000000 1.453125 0
+ F3 8404992 0.000000 4
+ 0.000000 1.453125 0
+ 0.046875 1.453125 0
+ 0.046875 0.031250 0
+ 0.000000 0.031250 0
+ F3 8404992 0.000000 4
+ 0.000000 1.453125 0
+ 10.000000 1.453125 0
+ 10.000000 1.406250 0
+ 0.000000 1.406250 0
+ F3 8404992 0.000000 4
+ 0.000000 0.015625 0
+ 10.000000 0.015625 0
+ 10.000000 0.062500 0
+ 0.000000 0.062500 0
+ F3 8404992 0.000000 4
+ 10.000000 0.890625 0
+ 11.859375 0.890625 0
+ 11.859375 0.515625 0
+ 10.000000 0.515625 0
+ F3 8404992 0.000000 4
+ 10.796875 0.500000 0
+ 10.750000 0.500000 0
+ 10.750000 0.000000 0
+ 10.796875 0.000000 0
+ F3 8404992 0.000000 4
+ 10.796875 1.406250 0
+ 10.750000 1.406250 0
+ 10.750000 0.875000 0
+ 10.796875 0.875000 0
+ L3 0 0.000000 10.125000 0.906250 0 10.125000 0.500000 0
+ L3 12632256 0.000000 10.250000 0.906250 0 10.250000 0.515625 0
+ L3 0 0.000000 10.375000 0.890625 0 10.375000 0.515625 0
+ L3 0 0.000000 10.500000 0.906250 0 10.500000 0.531250 0
+ L3 0 0.000000 10.625000 0.906250 0 10.625000 0.531250 0
+ L3 0 0.000000 10.750000 0.890625 0 10.750000 0.531250 0
+ L3 0 0.000000 10.875000 0.890625 0 10.875000 0.515625 0
+ L3 0 0.000000 11.000000 0.890625 0 11.000000 0.500000 0
+ L3 0 0.000000 11.125000 0.906250 0 11.125000 0.531250 0
+ L3 0 0.000000 11.250000 0.906250 0 11.250000 0.500000 0
+ L3 0 0.000000 11.375000 0.906250 0 11.375000 0.531250 0
+ L3 0 0.000000 11.500000 0.890625 0 11.500000 0.515625 0
+ L3 0 0.000000 11.625000 0.890625 0 11.625000 0.531250 0
+ L3 0 0.000000 11.750000 0.906250 0 11.750000 0.515625 0
+ F3 13816530 0.000000 4
+ 9.984375 0.078125 0
+ 10.750000 0.078125 0
+ 10.750000 1.406250 0
+ 9.984375 1.406250 0
+ F3 8404992 0.000000 4
+ 9.968750 1.453125 0
+ 10.781250 1.453125 0
+ 10.781250 1.406250 0
+ 9.968750 1.406250 0
+ F3 8404992 0.000000 4
+ 10.000000 0.015625 0
+ 10.750000 0.015625 0
+ 10.750000 0.062500 0
+ 10.000000 0.062500 0
+ END
+STRUCTURE N "Walther's Icing Platform Add-On 292-3062"
+ F3 13816530 0.000000 4
+ 0.000000 0.015625 0
+ 10.000000 0.015625 0
+ 10.000000 1.453125 0
+ 0.000000 1.453125 0
+ F3 8404992 0.000000 4
+ 0.000000 1.453125 0
+ 0.046875 1.453125 0
+ 0.046875 0.031250 0
+ 0.000000 0.031250 0
+ F3 8404992 0.000000 4
+ 0.000000 1.453125 0
+ 10.000000 1.453125 0
+ 10.000000 1.406250 0
+ 0.000000 1.406250 0
+ F3 8404992 0.000000 4
+ 0.000000 0.015625 0
+ 10.000000 0.015625 0
+ 10.000000 0.062500 0
+ 0.000000 0.062500 0
+ F3 13684944 0.000000 4
+ 10.796875 0.500000 0
+ 10.750000 0.500000 0
+ 10.750000 0.000000 0
+ 10.796875 0.000000 0
+ F3 13684944 0.000000 4
+ 10.796875 1.406250 0
+ 10.750000 1.406250 0
+ 10.750000 0.875000 0
+ 10.796875 0.875000 0
+ F3 13816530 0.000000 4
+ 9.984375 0.078125 0
+ 10.750000 0.078125 0
+ 10.750000 1.406250 0
+ 9.984375 1.406250 0
+ F3 8404992 0.000000 4
+ 9.968750 1.453125 0
+ 10.781250 1.453125 0
+ 10.781250 1.406250 0
+ 9.968750 1.406250 0
+ F3 8404992 0.000000 4
+ 10.000000 0.015625 0
+ 10.750000 0.015625 0
+ 10.750000 0.062500 0
+ 10.000000 0.062500 0
+ F3 13816530 0.000000 4
+ 10.796875 0.890625 0
+ 10.750000 0.890625 0
+ 10.750000 0.500000 0
+ 10.796875 0.500000 0
+ END
+STRUCTURE N "Walther's Ice House 292-526"
+ F3 8421504 0.000000 4
+ 2.000000 0.984375 0
+ 7.000000 0.984375 0
+ 7.000000 3.984375 0
+ 2.000000 3.984375 0
+ F3 8421504 0.000000 4
+ 0.000000 2.984375 0
+ 2.000000 2.984375 0
+ 2.000000 1.984375 0
+ 0.000000 1.984375 0
+ L3 0 0.000000 0.000000 2.484375 0 7.015625 2.484375 0
+ L3 0 0.000000 2.000000 2.984375 0 2.000000 1.984375 0
+ F3 8421504 0.000000 4
+ 7.000000 3.734375 0
+ 9.000000 3.734375 0
+ 9.000000 1.234375 0
+ 7.000000 1.234375 0
+ L3 0 0.000000 7.000000 3.734375 0 7.000000 1.234375 0
+ L3 0 0.000000 7.000000 2.484375 0 9.000000 2.484375 0
+ F3 14737632 0.000000 4
+ 7.000000 1.234375 0
+ 9.000000 1.234375 0
+ 9.000000 0.984375 0
+ 7.000000 0.984375 0
+ F3 15132390 0.000000 4
+ 7.000000 3.734375 0
+ 9.000000 3.734375 0
+ 9.000000 3.984375 0
+ 7.000000 3.984375 0
+ F3 8421504 0.000000 4
+ 9.000000 3.734375 0
+ 10.000000 3.734375 0
+ 10.000000 1.250000 0
+ 9.000000 1.250000 0
+ L3 0 0.000000 9.000000 1.234375 0 9.000000 3.734375 0
+ F3 8421504 0.000000 4
+ 9.000000 0.484375 0
+ 8.250000 0.484375 0
+ 8.250000 1.234375 0
+ 9.000000 1.234375 0
+ L3 0 0.000000 8.250000 1.234375 0 9.000000 1.234375 0
+ F3 8421504 0.000000 4
+ 9.000000 1.250000 0
+ 10.000000 1.250000 0
+ 10.000000 0.000000 0
+ 9.000000 0.000000 0
+ L3 0 0.000000 9.000000 1.234375 0 10.000000 1.234375 0
+ L3 0 0.000000 9.000000 1.312500 0 9.000000 0.484375 0
+ G3 15790320 0.000000 0.281250 9.500000 0.859375 0
+ G3 0 0.000000 0.188150 9.500000 0.859375 0
+ END
+STRUCTURE N "Walther's Icing Platform 933-3245B"
+ F3 8421504 0.000000 4
+ 0.000000 0.000000 0
+ 9.250000 0.000000 0
+ 9.250000 0.875000 0
+ 0.000000 0.875000 0
+ L3 0 0.000000 0.000000 0.437500 0 9.250000 0.437500 0
+ F3 13882323 0.000000 4
+ 9.250000 0.562500 0
+ 9.875000 0.562500 0
+ 9.875000 0.312500 0
+ 9.250000 0.312500 0
+ L3 0 0.000000 9.375000 0.562500 0 9.375000 0.312500 0
+ L3 0 0.000000 9.500000 0.562500 0 9.500000 0.312500 0
+ L3 0 0.000000 9.625000 0.562500 0 9.625000 0.328125 0
+ L3 0 0.000000 9.750000 0.562500 0 9.750000 0.312500 0
+ END
+STRUCTURE N "Walther's Ice House 933-3245A"
+ F3 8421504 0.000000 4
+ 0.000000 0.000000 0
+ 6.500000 0.000000 0
+ 6.500000 2.875000 0
+ 0.000000 2.875000 0
+ L3 0 0.000000 0.000000 1.437500 0 6.500000 1.437500 0
+ L3 0 0.000000 1.500000 1.437500 0 1.500000 0.000000 0
+ L3 0 0.000000 5.000000 1.437500 0 5.000000 0.000000 0
+ L3 0 0.000000 1.250000 1.000000 0 1.250000 0.000000 0
+ L3 0 0.000000 1.750000 1.000000 0 1.750000 0.000000 0
+ L3 0 0.000000 4.750000 1.000000 0 4.750000 0.000000 0
+ L3 0 0.000000 5.250000 1.000000 0 5.250000 0.000000 0
+ L3 0 0.000000 1.500000 1.437500 0 1.250000 1.000000 0
+ L3 0 0.000000 1.500000 1.437500 0 1.750000 1.000000 0
+ L3 0 0.000000 5.000000 1.437500 0 4.750000 1.000000 0
+ L3 0 0.000000 5.000000 1.437500 0 5.250000 1.000000 0
+ L3 0 0.000000 0.500000 1.625000 0 0.843750 1.625000 0
+ L3 0 0.000000 0.843750 1.625000 0 0.843750 1.250000 0
+ L3 0 0.000000 0.843750 1.250000 0 0.500000 1.250000 0
+ L3 0 0.000000 0.500000 1.250000 0 0.500000 1.625000 0
+ L3 0 0.000000 3.062500 1.250000 0 3.437500 1.250000 0
+ L3 0 0.000000 3.437500 1.250000 0 3.437500 1.625000 0
+ L3 0 0.000000 3.437500 1.625000 0 3.062500 1.625000 0
+ L3 0 0.000000 3.062500 1.625000 0 3.062500 1.250000 0
+ L3 0 0.000000 6.000000 1.250000 0 5.625000 1.250000 0
+ L3 0 0.000000 5.625000 1.250000 0 5.625000 1.625000 0
+ L3 0 0.000000 5.625000 1.625000 0 6.000000 1.625000 0
+ L3 0 0.000000 6.000000 1.625000 0 6.000000 1.250000 0
+ END
+STRUCTURE N "Walthers Interstate Fuel - Loading Rack 933-32000a"
+ L 0 0 0.750000 0.000000 3.750000 0.000000
+ L 0 0 3.750000 0.000000 3.750000 3.125000
+ L 0 0 3.750000 3.125000 0.750000 3.125000
+ L 0 0 3.687500 0.062500 1.687500 0.062500
+ L 0 0 1.687500 0.062500 1.687500 0.812500
+ L 0 0 1.687500 0.812500 3.687500 0.812500
+ L 0 0 3.687500 0.812500 3.687500 0.062500
+ L 0 0 3.687500 3.062500 1.687500 3.062500
+ L 0 0 1.687500 3.062500 1.687500 2.312500
+ L 0 0 1.687500 2.312500 3.687500 2.312500
+ L 0 0 3.687500 2.312500 3.687500 3.062500
+ L 0 0 3.687500 1.187500 1.687500 1.187500
+ L 0 0 1.687500 1.187500 1.687500 1.937500
+ L 0 0 1.687500 1.937500 3.687500 1.937500
+ L 0 0 3.687500 1.937500 3.687500 1.187500
+ A 0 0 0.088388 3.000000 2.687500 0.000000 360.000000
+ A 0 0 0.088388 3.000000 1.562500 0.000000 360.000000
+ A 0 0 0.088388 3.000000 0.437500 0.000000 360.000000
+ L 0 0 0.750000 2.875000 0.000000 2.875000
+ L 0 0 0.000000 2.875000 0.000000 0.250000
+ L 0 0 0.000000 0.250000 0.750000 0.250000
+ L 0 0 1.500000 2.187500 0.437500 2.187500
+ L 0 0 0.437500 2.187500 0.437500 0.937500
+ L 0 0 0.437500 0.937500 1.500000 0.937500
+ L 0 0 1.500000 0.937500 1.500000 2.187500
+ L 0 0 0.750000 3.125000 0.750000 2.187500
+ L 0 0 0.750000 0.000000 0.750000 0.937500
+ END
+STRUCTURE N "Walthers Interstate Fuel - Office 933-3200b"
+ L 0 0 0.000000 3.000000 2.000000 3.000000
+ L 0 0 2.000000 3.000000 2.000000 0.500000
+ L 0 0 2.000000 0.500000 0.000000 0.500000
+ L 0 0 0.000000 0.500000 0.000000 3.000000
+ L 0 0 2.000000 2.250000 2.500000 2.250000
+ L 0 0 2.500000 2.250000 2.500000 0.000000
+ L 0 0 2.500000 0.000000 0.375000 0.000000
+ L 0 0 0.375000 0.000000 0.375000 0.500000
+ A 0 0 0.088388 1.000000 2.375000 0.000000 360.000000
+ A 0 0 0.088388 1.000000 1.125000 0.000000 360.000000
+ END
+STRUCTURE N "Walthers Interstate Fuel - Shed 933-3200c"
+ L 0 0 0.000000 0.000000 1.000000 0.000000
+ L 0 0 1.000000 0.000000 1.000000 0.625000
+ L 0 0 1.000000 0.625000 0.000000 0.625000
+ L 0 0 0.000000 0.625000 0.000000 0.000000
+ L 0 0 0.000000 0.312500 1.000000 0.312500
+ END
+STRUCTURE N "Walthers Interstate Fuel - Tanks 933-3200d"
+ L 0 0 1.000000 2.062500 1.000000 1.125000
+ L 0 0 0.062500 0.000000 0.937500 0.000000
+ L 0 0 0.000000 0.062500 0.062500 0.000000
+ L 0 0 1.000000 0.062500 0.937500 0.000000
+ L 0 0 1.000000 0.062500 1.000000 1.000000
+ L 0 0 0.000000 1.000000 0.000000 0.062500
+ L 0 0 0.000000 2.062500 0.000000 1.125000
+ L 0 0 0.000000 1.125000 0.062500 1.062500
+ L 0 0 0.062500 1.062500 0.000000 1.000000
+ L 0 0 1.000000 1.000000 0.937500 1.062500
+ L 0 0 0.937500 1.062500 1.000000 1.125000
+ L 0 0 0.062500 2.125000 0.937500 2.125000
+ L 0 0 0.937500 2.125000 1.000000 2.062500
+ L 0 0 0.062500 2.125000 0.000000 2.062500
+ A 0 0 0.455007 0.500000 0.500000 0.000000 360.000000
+ A 0 0 0.437500 0.500000 1.625000 0.000000 360.000000
+ END
+STRUCTURE N "Walthers Water St Freight Terminal 933-3201"
+ L 0 0 0.500000 0.000000 11.000000 0.000000
+ L 0 0 11.000000 0.000000 11.000000 0.500000
+ L 0 0 11.000000 0.500000 10.000000 0.500000
+ L 0 0 9.500000 0.000000 9.500000 3.500000
+ L 0 0 9.500000 3.500000 4.000000 3.500000
+ L 0 0 4.000000 3.500000 4.000000 0.000000
+ L 0 0 4.000000 1.750000 9.500000 1.750000
+ L 0 0 4.000000 3.250000 0.500000 3.250000
+ L 0 0 4.000000 0.500000 0.500000 0.500000
+ L 0 0 0.500000 2.125000 -0.062500 2.125000
+ L 0 0 0.000000 2.125000 0.000000 1.625000
+ L 0 0 0.000000 1.625000 0.500000 1.625000
+ L 0 0 0.500000 1.625000 0.500000 0.000000
+ L 0 0 0.500000 3.250000 0.500000 2.125000
+ L 0 0 9.500000 2.125000 10.000000 2.125000
+ L 0 0 10.000000 2.125000 10.000000 0.500000
+ END
+STRUCTURE N "Walthers Mi-Jack Crane (Intermodal) 3222"
+ F3 16776960 0.000000 4
+ 0.000000 0.000000 0
+ 4.000000 0.000000 0
+ 4.000000 0.250000 0
+ 0.000000 0.250000 0
+ F3 0 0.000000 4
+ 0.000000 3.000000 0
+ 0.000000 3.000000 0
+ 0.000000 3.000000 0
+ 0.000000 3.000000 0
+ F3 16776960 0.000000 4
+ 0.000000 3.000000 0
+ 4.000000 3.000000 0
+ 4.000000 3.250000 0
+ 0.000000 3.250000 0
+ F3 16776960 0.000000 4
+ 2.500000 3.000000 0
+ 2.750000 3.000000 0
+ 2.750000 0.281250 0
+ 2.500000 0.281250 0
+ L3 0 0.000000 0.250000 3.000000 0 0.375000 3.000000 0
+ L3 0 0.000000 0.375000 0.281250 0 0.250000 0.281250 0
+ L3 0 0.000000 0.000000 3.250000 0 4.000000 3.250000 0
+ L3 0 0.000000 4.000000 3.250000 0 4.000000 3.000000 0
+ L3 0 0.000000 4.000000 3.000000 0 0.000000 3.000000 0
+ L3 0 0.000000 0.000000 3.000000 0 0.000000 3.250000 0
+ L3 0 0.000000 0.000000 0.250000 0 3.968750 0.250000 0
+ L3 0 0.000000 3.968750 0.250000 0 3.968750 0.000000 0
+ L3 0 0.000000 3.968750 0.000000 0 0.000000 0.000000 0
+ L3 0 0.000000 0.000000 0.000000 0 0.000000 0.250000 0
+ L3 0 0.000000 2.500000 3.000000 0 2.750000 3.000000 0
+ L3 0 0.000000 2.750000 3.000000 0 2.750000 0.250000 0
+ L3 0 0.000000 2.750000 0.250000 0 2.500000 0.250000 0
+ L3 0 0.000000 2.500000 0.250000 0 2.500000 3.000000 0
+ Z 0 0.265623 3.000000 90.000000 0 18.000000 "xxxxxxxxxxxxxxxxxxxxxx"
+ L3 0 0.000000 0.406250 3.000000 0 0.406250 0.265625 0
+ L3 0 0.000000 0.250000 3.000000 0 0.250000 0.250000 0
+ END
+STRUCTURE N "Walthers Santa Fe Freight House circa 1908 933-3804"
+ F3 16379605 0.000000 4
+ 0.000000 3.750000 0
+ 6.750000 3.750000 0
+ 6.750000 0.000000 0
+ 0.000000 0.000000 0
+ L3 0 0.000000 0.000000 0.000000 0 6.750000 0.000000 0
+ L3 0 0.000000 6.750000 0.000000 0 6.750000 3.750000 0
+ L3 0 0.000000 6.750000 3.750000 0 0.000000 3.750000 0
+ L3 0 0.000000 0.000000 3.750000 0 0.000000 0.000000 0
+ L3 0 0.000000 0.375000 0.375000 0 6.375000 0.375000 0
+ L3 0 0.000000 6.375000 0.375000 0 6.375000 3.375000 0
+ L3 0 0.000000 6.375000 3.375000 0 0.375000 3.375000 0
+ L3 0 0.000000 0.375000 3.375000 0 0.375000 0.375000 0
+ L3 0 0.000000 0.375000 0.750000 0 0.500000 0.750000 0
+ L3 0 0.000000 0.484375 0.500000 0 0.625000 0.500000 0
+ L3 0 0.000000 0.609375 0.500000 0 0.609375 0.375000 0
+ L3 0 0.000000 0.625000 3.265625 0 0.484375 3.265625 0
+ L3 0 0.000000 0.484375 3.265625 0 0.484375 3.156250 0
+ L3 0 0.000000 0.484375 3.156250 0 0.390625 3.156250 0
+ L3 0 0.000000 6.000000 3.359375 0 6.000000 3.250000 0
+ L3 0 0.000000 6.000000 3.250000 0 6.250000 3.250000 0
+ L3 0 0.000000 6.375000 3.125000 0 6.250000 3.125000 0
+ L3 0 0.000000 6.250000 3.125000 0 6.250000 3.250000 0
+ L3 0 0.000000 6.000000 0.375000 0 6.000000 0.500000 0
+ L3 0 0.000000 6.000000 0.500000 0 6.250000 0.500000 0
+ L3 0 0.000000 6.250000 0.500000 0 6.250000 0.750000 0
+ L3 0 0.000000 6.375000 2.500000 0 6.234375 2.500000 0
+ L3 0 0.000000 6.234375 2.500000 0 6.234375 1.500000 0
+ L3 0 0.000000 6.234375 1.500000 0 6.375000 1.500000 0
+ L3 0 0.000000 6.375000 1.500000 0 6.375000 2.500000 0
+ L3 0 0.000000 2.250000 3.375000 0 4.250000 3.375000 0
+ L3 0 0.000000 4.250000 3.375000 0 4.250000 3.250000 0
+ L3 0 0.000000 4.250000 3.250000 0 2.250000 3.250000 0
+ L3 0 0.000000 2.250000 3.250000 0 2.250000 3.375000 0
+ L3 0 0.000000 2.250000 0.375000 0 4.250000 0.375000 0
+ L3 0 0.000000 4.250000 0.375000 0 4.250000 0.500000 0
+ L3 0 0.000000 4.250000 0.500000 0 2.250000 0.500000 0
+ L3 0 0.000000 2.250000 0.500000 0 2.250000 0.375000 0
+ END
+STRUCTURE N "Walthers Cornerstone Structures 2 Story factory/w Loading Addition(Obsolete) 933-3297"
+ F3 8388608 0.000000 4
+ 0.000000 5.250000 0
+ 7.750000 5.250000 0
+ 7.750000 5.000000 0
+ 0.000000 5.000000 0
+ F3 8388608 0.000000 4
+ 7.750000 5.000000 0
+ 7.500000 5.000000 0
+ 7.500000 3.250000 0
+ 7.750000 3.250000 0
+ F3 8388608 0.000000 4
+ 0.000000 5.000000 0
+ 0.250000 5.000000 0
+ 0.250000 0.000000 0
+ 0.000000 0.000000 0
+ F3 8388608 0.000000 4
+ 0.234375 0.000000 0
+ 5.250000 0.000000 0
+ 5.250000 0.250000 0
+ 0.234375 0.250000 0
+ F3 0 0.000000 4
+ 5.000000 0.234375 0
+ 4.984375 0.234375 0
+ 4.984375 0.250000 0
+ 5.000000 0.250000 0
+ F3 8388608 0.000000 4
+ 5.000000 0.250000 0
+ 5.250000 0.250000 0
+ 5.250000 3.296875 0
+ 4.984375 3.296875 0
+ F3 8388608 0.000000 4
+ 7.484375 3.265625 0
+ 5.000000 3.265625 0
+ 5.000000 3.500000 0
+ 7.484375 3.500000 0
+ F3 12632256 0.000000 4
+ 0.250000 5.015625 0
+ 4.968750 5.015625 0
+ 4.968750 0.281250 0
+ 0.250000 0.281250 0
+ F3 12632256 0.000000 4
+ 4.968750 5.000000 0
+ 7.468750 5.000000 0
+ 7.468750 3.531250 0
+ 4.968750 3.531250 0
+ F3 0 0.000000 4
+ 4.984375 3.515625 0
+ 4.984375 3.515625 0
+ 4.984375 3.515625 0
+ 4.984375 3.515625 0
+ F3 8388608 0.000000 4
+ 5.000000 3.515625 0
+ 0.234375 3.515625 0
+ 0.234375 3.250000 0
+ 5.000000 3.250000 0
+ L3 0 0.000000 0.218750 1.750000 0 4.968750 1.750000 0
+ A3 0 0.000000 0.125000 2.500000 1.000000 0 0.000000 360.000000
+ A3 0 0.000000 0.109375 1.000000 2.500000 0 0.000000 360.000000
+ A3 0 0.000000 0.109375 4.000000 2.500000 0 0.000000 360.000000
+ A3 0 0.000000 0.125000 5.000000 4.000000 0 0.000000 360.000000
+ A3 0 0.000000 0.125000 7.000000 4.000000 0 0.000000 360.000000
+ F3 8388608 0.000000 4
+ 1.531250 2.937500 0
+ 1.718750 2.937500 0
+ 1.718750 2.750000 0
+ 1.531250 2.750000 0
+ L3 0 0.000000 0.500000 3.250000 0 0.500000 0.281250 0
+ L3 0 0.000000 0.750000 3.250000 0 0.750000 0.250000 0
+ L3 0 0.000000 1.000000 2.390625 0 1.000000 0.281250 0
+ L3 0 0.000000 1.000000 3.250000 0 1.000000 2.609375 0
+ L3 0 0.000000 1.250000 3.250000 0 1.250000 0.250000 0
+ L3 0 0.000000 1.500000 3.250000 0 1.500000 0.250000 0
+ L3 0 0.000000 2.000000 3.250000 0 2.000000 0.234375 0
+ L3 0 0.000000 2.250000 3.250000 0 2.250000 0.250000 0
+ L3 0 0.000000 2.500000 3.250000 0 2.500000 1.125000 0
+ L3 0 0.000000 2.500000 0.859375 0 2.500000 0.265625 0
+ L3 0 0.000000 1.750000 3.250000 0 1.750000 0.234375 0
+ F3 0 0.000000 4
+ 1.562500 2.906250 0
+ 1.687500 2.906250 0
+ 1.687500 2.796875 0
+ 1.562500 2.796875 0
+ L3 0 0.000000 2.750000 3.250000 0 2.750000 0.250000 0
+ L3 0 0.000000 3.000000 3.250000 0 3.000000 0.250000 0
+ L3 0 0.000000 3.250000 3.250000 0 3.250000 0.250000 0
+ L3 0 0.000000 4.750000 3.250000 0 4.750000 0.250000 0
+ L3 0 0.000000 4.500000 3.250000 0 4.500000 0.250000 0
+ L3 0 0.000000 4.250000 3.250000 0 4.250000 0.250000 0
+ L3 0 0.000000 3.500000 3.250000 0 3.500000 0.250000 0
+ L3 0 0.000000 3.750000 3.250000 0 3.750000 0.250000 0
+ L3 0 0.000000 4.000000 3.250000 0 4.000000 2.609375 0
+ L3 0 0.000000 4.000000 2.390625 0 4.000000 0.250000 0
+ END
+STRUCTURE N "Walthers Cornerstone Structures Van Dyke Farm Windmill 933-3801"
+ L3 0 0.000000 0.000000 1.250000 0 0.500000 0.750000 0
+ L3 0 0.000000 1.250000 1.250000 0 0.734375 0.750000 0
+ L3 0 0.000000 0.000000 0.000000 0 0.500000 0.500000 0
+ L3 0 0.000000 1.250000 0.000000 0 0.750000 0.500000 0
+ L3 0 0.000000 0.250000 1.000000 0 1.000000 1.000000 0
+ L3 0 0.000000 1.000000 1.000000 0 1.000000 0.250000 0
+ L3 0 0.000000 1.000000 0.250000 0 0.250000 0.250000 0
+ L3 0 0.000000 0.250000 0.250000 0 0.250000 1.000000 0
+ F3 12632256 0.000000 4
+ 0.500000 0.750000 0
+ 0.750000 0.750000 0
+ 0.750000 0.500000 0
+ 0.500000 0.500000 0
+ L3 0 0.000000 0.125000 1.125000 0 1.125000 1.125000 0
+ L3 0 0.000000 1.125000 1.125000 0 1.125000 0.125000 0
+ L3 0 0.000000 1.125000 0.125000 0 0.125000 0.125000 0
+ L3 0 0.000000 0.125000 0.125000 0 0.125000 1.125000 0
+ L3 0 0.000000 0.375000 0.875000 0 0.875000 0.875000 0
+ L3 0 0.000000 0.875000 0.875000 0 0.875000 0.375000 0
+ L3 0 0.000000 0.875000 0.375000 0 0.375000 0.375000 0
+ L3 0 0.000000 0.375000 0.375000 0 0.375000 0.875000 0
+ L3 0 0.000000 0.625000 0.812500 0 0.625000 0.312500 0
+ F3 12632256 0.000000 4
+ 0.593750 0.812500 0
+ 0.656250 0.812500 0
+ 0.656250 0.968750 0
+ 0.593750 0.968750 0
+ F3 12632256 0.000000 4
+ 0.812500 0.312500 0
+ 0.437500 0.312500 0
+ 0.437500 0.218750 0
+ 0.812500 0.218750 0
+ END
+STRUCTURE N "Walthers Cornerstone Structures Walking Beam/""Horse Head"" Oil Pump 933-3248"
+ L3 0 0.000000 0.000000 0.000000 0 2.750000 0.000000 0
+ L3 0 0.000000 2.750000 0.000000 0 2.750000 1.000000 0
+ L3 0 0.000000 2.750000 1.000000 0 0.000000 1.000000 0
+ L3 0 0.000000 0.000000 1.000000 0 0.000000 0.000000 0
+ F3 0 0.000000 4
+ 2.718750 0.750000 0
+ 2.718750 0.750000 0
+ 2.718750 0.750000 0
+ 2.718750 0.750000 0
+ F3 0 0.000000 4
+ 2.000000 0.750000 0
+ 2.500000 0.750000 0
+ 2.500000 0.250000 0
+ 2.000000 0.250000 0
+ F3 0 0.000000 4
+ 0.250000 0.562500 0
+ 1.734375 0.562500 0
+ 1.734375 0.437500 0
+ 0.250000 0.437500 0
+ F3 0 0.000000 4
+ 1.750000 0.750000 0
+ 1.875000 0.750000 0
+ 1.875000 0.250000 0
+ 1.750000 0.250000 0
+ F3 0 0.000000 4
+ 1.875000 0.671875 0
+ 1.984375 0.671875 0
+ 1.984375 0.640625 0
+ 1.875000 0.640625 0
+ F3 0 0.000000 4
+ 1.859375 0.312500 0
+ 1.984375 0.312500 0
+ 1.984375 0.343750 0
+ 1.859375 0.343750 0
+ END
+STRUCTURE N "Walther's Cornerstone Structure The Bralick Building 933-3255"
+ F3 12632256 0.000000 4
+ 0.000000 0.375000 0
+ 6.750000 0.375000 0
+ 6.750000 5.406250 0
+ 0.000000 5.406250 0
+ F3 12632256 0.000000 4
+ 2.625000 0.000000 0
+ 3.687500 0.000000 0
+ 3.687500 0.375000 0
+ 2.625000 0.375000 0
+ F3 12632256 0.000000 4
+ 7.125000 1.000000 0
+ 6.750000 1.000000 0
+ 6.750000 1.625000 0
+ 7.125000 1.625000 0
+ F3 8421504 0.000000 4
+ 0.125000 5.312500 0
+ 6.656250 5.312500 0
+ 6.656250 0.468750 0
+ 0.125000 0.468750 0
+ L3 0 0.000000 2.625000 0.375000 0 3.671875 0.375000 0
+ L3 0 0.000000 6.750000 1.625000 0 6.750000 1.000000 0
+ F3 12632256 0.000000 4
+ 2.375000 2.000000 0
+ 4.000000 2.000000 0
+ 4.000000 4.000000 0
+ 2.375000 4.000000 0
+ F3 12632256 0.000000 4
+ 5.156250 4.125000 0
+ 5.484375 4.125000 0
+ 5.484375 3.828125 0
+ 5.156250 3.828125 0
+ END
+STRUCTURE N "Walther's Cornerstone Structure Shed 933-3822"
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 4.125000 0.000000 0
+ 4.125000 2.625000 0
+ 0.000000 2.625000 0
+ L3 0 0.000000 0.000000 1.312500 0 4.093750 1.312500 0
+ F3 0 0.000000 4
+ 1.937500 1.375000 0
+ 2.062500 1.375000 0
+ 2.062500 1.250000 0
+ 1.937500 1.250000 0
+ L3 0 0.000000 0.125000 2.625000 0 0.125000 0.000000 0
+ L3 0 0.000000 0.250000 2.625000 0 0.234375 0.000000 0
+ L3 0 0.000000 0.375000 2.625000 0 0.375000 0.000000 0
+ L3 0 0.000000 0.500000 2.625000 0 0.500000 0.000000 0
+ L3 0 0.000000 0.625000 2.625000 0 0.609375 0.000000 0
+ L3 0 0.000000 0.750000 2.625000 0 0.734375 0.000000 0
+ L3 0 0.000000 0.875000 0.000000 0 0.875000 2.625000 0
+ L3 0 0.000000 1.000000 0.000000 0 1.000000 2.625000 0
+ L3 0 0.000000 1.125000 0.000000 0 1.125000 2.625000 0
+ L3 0 0.000000 1.250000 2.625000 0 1.250000 0.000000 0
+ L3 0 0.000000 1.375000 2.625000 0 1.375000 0.000000 0
+ L3 0 0.000000 1.500000 2.625000 0 1.484375 0.015625 0
+ L3 0 0.000000 1.625000 2.625000 0 1.625000 0.000000 0
+ L3 0 0.000000 1.750000 2.625000 0 1.750000 0.000000 0
+ L3 0 0.000000 1.875000 2.625000 0 1.875000 0.000000 0
+ L3 0 0.000000 2.000000 2.625000 0 2.000000 0.000000 0
+ L3 0 0.000000 2.125000 2.625000 0 2.109375 0.015625 0
+ L3 0 0.000000 2.250000 2.625000 0 2.234375 0.000000 0
+ L3 0 0.000000 2.375000 0.000000 0 2.359375 2.625000 0
+ L3 0 0.000000 2.500000 0.000000 0 2.500000 2.625000 0
+ L3 0 0.000000 3.000000 0.000000 0 3.000000 2.625000 0
+ L3 0 0.000000 2.750000 0.000000 0 2.750000 2.625000 0
+ L3 0 0.000000 2.625000 2.625000 0 2.625000 0.000000 0
+ L3 0 0.000000 2.875000 2.625000 0 2.875000 0.000000 0
+ L3 0 0.000000 3.125000 2.625000 0 3.125000 0.000000 0
+ L3 0 0.000000 3.250000 2.625000 0 3.250000 0.000000 0
+ L3 0 0.000000 3.375000 2.625000 0 3.359375 0.000000 0
+ L3 0 0.000000 3.500000 2.625000 0 3.500000 0.015625 0
+ L3 0 0.000000 3.625000 2.625000 0 3.625000 0.000000 0
+ L3 0 0.000000 3.750000 2.625000 0 3.734375 0.031250 0
+ L3 0 0.000000 3.875000 2.625000 0 3.875000 0.000000 0
+ L3 0 0.000000 4.000000 2.625000 0 4.000000 0.000000 0
+ END
+STRUCTURE N "Walthers Cornerstone Structures Parkview Terrace Backgroung Bldg. (Tuscan) 933-3263"
+ F3 12632256 0.000000 4
+ 0.000000 0.000000 0
+ 4.625000 0.000000 0
+ 4.625000 1.375000 0
+ 0.000000 1.375000 0
+ F3 8388608 0.000000 4
+ 0.000000 0.000000 0
+ 0.125000 0.000000 0
+ 0.125000 1.375000 0
+ 0.000000 1.375000 0
+ F3 8388608 0.000000 4
+ 4.609375 0.000000 0
+ 4.500000 0.000000 0
+ 4.500000 1.375000 0
+ 4.609375 1.375000 0
+ END
+STRUCTURE N "Walthers Cornerstone Co-Op Storage Shed 933-3230"
+ L3 0 0.062500 0.031250 0.031250 0 4.281250 0.031250 0
+ L3 0 0.062500 4.281250 0.031250 0 4.281250 2.781250 0
+ L3 0 0.062500 4.281250 2.781250 0 0.031250 2.781250 0
+ L3 0 0.062500 0.031250 2.781250 0 0.031250 0.031250 0
+ L3 0 0.062500 0.031250 1.406250 0 4.281250 1.406250 0
+ F3 0 0.000000 4
+ 2.031250 1.531250 0
+ 2.281250 1.531250 0
+ 2.281250 1.281250 0
+ 2.031250 1.281250 0
+ L3 12632256 0.000000 0.281250 2.781250 0 0.281250 1.531250 0
+ L3 12632256 0.000000 0.531250 2.531250 0 0.531250 1.531250 0
+ L3 12632256 0.000000 0.781250 2.781250 0 0.781250 1.531250 0
+ L3 12632256 0.000000 1.031250 2.531250 0 1.031250 1.531250 0
+ L3 12632256 0.000000 1.281250 2.781250 0 1.281250 1.531250 0
+ L3 12632256 0.000000 1.531250 2.531250 0 1.531250 1.531250 0
+ L3 12632256 0.000000 1.781250 2.781250 0 1.781250 1.531250 0
+ L3 12632256 0.000000 2.031250 2.531250 0 2.031250 1.531250 0
+ L3 12632256 0.000000 2.281250 2.781250 0 2.281250 1.531250 0
+ L3 12632256 0.000000 2.531250 2.531250 0 2.531250 1.531250 0
+ L3 12632256 0.000000 2.781250 2.781250 0 2.781250 1.531250 0
+ L3 12632256 0.000000 3.031250 2.531250 0 3.031250 1.531250 0
+ L3 12632256 0.000000 3.281250 1.531250 0 3.281250 2.781250 0
+ L3 12632256 0.000000 3.531250 2.531250 0 3.531250 1.531250 0
+ L3 12632256 0.000000 3.781250 1.531250 0 3.781250 2.781250 0
+ L3 12632256 0.000000 4.031250 2.531250 0 4.031250 1.531250 0
+ L3 12632256 0.000000 4.031250 1.281250 0 4.031250 0.281250 0
+ L3 12632256 0.000000 3.781250 0.031250 0 3.781250 1.281250 0
+ L3 12632256 0.000000 3.281250 1.281250 0 3.281250 0.031250 0
+ L3 12632256 0.000000 3.531250 0.281250 0 3.531250 1.281250 0
+ L3 12632256 0.000000 3.031250 1.281250 0 3.031250 0.281250 0
+ L3 12632256 0.000000 2.781250 0.031250 0 2.781250 1.281250 0
+ L3 12632256 0.000000 2.531250 1.281250 0 2.531250 0.281250 0
+ L3 12632256 0.000000 2.281250 0.031250 0 2.281250 1.281250 0
+ L3 12632256 0.000000 2.031250 1.281250 0 2.031250 0.281250 0
+ L3 12632256 0.000000 1.781250 0.031250 0 1.781250 1.281250 0
+ L3 12632256 0.000000 1.531250 1.281250 0 1.531250 0.281250 0
+ L3 12632256 0.000000 1.281250 0.031250 0 1.281250 1.281250 0
+ L3 12632256 0.000000 1.031250 1.281250 0 1.031250 0.281250 0
+ L3 12632256 0.000000 0.781250 0.031250 0 0.781250 1.281250 0
+ L3 12632256 0.000000 0.531250 1.281250 0 0.531250 0.281250 0
+ L3 12632256 0.000000 0.281250 0.031250 0 0.281250 1.281250 0
+ END
+STRUCTURE N "Walthers Cornerstone Co-op Rural Grain Elevator 933-3238"
+ L3 0 0.041667 0.020833 1.020833 0 4.395833 1.020833 0
+ L3 0 0.041667 4.395833 1.020833 0 4.395833 5.395833 0
+ L3 0 0.041667 4.395833 5.395833 0 0.020833 5.395833 0
+ L3 0 0.041667 0.020833 5.395833 0 0.020833 1.020833 0
+ L3 0 0.041667 0.020833 1.020833 0 0.020833 0.020833 0
+ L3 0 0.041667 0.020833 0.020833 0 4.395833 0.020833 0
+ L3 0 0.041667 4.395833 0.020833 0 4.395833 1.020833 0
+ L3 0 0.041667 2.208333 5.395833 0 2.208333 1.020833 0
+ L3 0 0.041667 1.145833 5.395833 0 1.145833 1.020833 0
+ L3 0 0.041667 3.270833 5.395833 0 3.270833 1.020833 0
+ L3 12632256 0.000000 1.020833 5.145833 0 0.020833 5.145833 0
+ L3 12632256 0.000000 1.020833 4.895833 0 0.020833 4.895833 0
+ L3 12632256 0.000000 1.020833 4.645833 0 0.020833 4.645833 0
+ L3 12632256 0.000000 1.020833 4.395833 0 0.020833 4.395833 0
+ L3 12632256 0.000000 1.020833 4.145833 0 0.020833 4.145833 0
+ L3 12632256 0.000000 0.020833 3.895833 0 1.145833 3.895833 0
+ L3 12632256 0.000000 1.020833 3.645833 0 0.020833 3.645833 0
+ L3 12632256 0.000000 0.020833 3.395833 0 1.020833 3.395833 0
+ L3 12632256 0.000000 1.020833 3.145833 0 0.020833 3.145833 0
+ L3 12632256 0.000000 0.020833 2.895833 0 1.020833 2.895833 0
+ L3 12632256 0.000000 1.020833 2.645833 0 0.020833 2.645833 0
+ L3 12632256 0.000000 0.020833 2.395833 0 1.020833 2.395833 0
+ L3 12632256 0.000000 1.020833 2.145833 0 0.020833 2.145833 0
+ L3 12632256 0.000000 0.145833 1.895833 0 1.020833 1.895833 0
+ L3 12632256 0.000000 0.270833 1.895833 0 0.020833 1.895833 0
+ L3 12632256 0.000000 0.020833 1.645833 0 1.020833 1.645833 0
+ L3 12632256 0.000000 1.020833 1.395833 0 0.020833 1.395833 0
+ L3 12632256 0.000000 1.020833 1.145833 0 0.020833 1.145833 0
+ L3 12632256 0.000000 1.270833 5.270833 0 2.145833 5.270833 0
+ L3 12632256 0.000000 2.145833 5.020833 0 1.270833 5.020833 0
+ L3 12632256 0.000000 1.270833 4.770833 0 2.145833 4.770833 0
+ L3 12632256 0.000000 2.145833 4.520833 0 1.270833 4.520833 0
+ L3 12632256 0.000000 1.270833 4.270833 0 2.145833 4.270833 0
+ L3 12632256 0.000000 2.020833 4.020833 0 1.270833 4.020833 0
+ L3 12632256 0.000000 2.145833 4.020833 0 1.270833 4.020833 0
+ L3 12632256 0.000000 2.145833 3.770833 0 1.270833 3.770833 0
+ L3 12632256 0.000000 2.145833 3.520833 0 1.270833 3.520833 0
+ L3 12632256 0.000000 2.145833 3.270833 0 1.270833 3.270833 0
+ L3 12632256 0.000000 2.020833 3.020833 0 1.270833 3.020833 0
+ L3 12632256 0.000000 2.145833 2.770833 0 1.270833 2.770833 0
+ L3 12632256 0.000000 2.145833 2.520833 0 1.270833 2.520833 0
+ L3 12632256 0.000000 1.270833 2.270833 0 2.020833 2.270833 0
+ L3 12632256 0.000000 2.020833 2.020833 0 1.270833 2.020833 0
+ L3 12632256 0.000000 1.270833 1.770833 0 2.145833 1.770833 0
+ L3 12632256 0.000000 2.145833 1.520833 0 1.395833 1.520833 0
+ L3 12632256 0.000000 2.145833 1.270833 0 1.270833 1.270833 0
+ L3 12632256 0.000000 0.145833 0.895833 0 0.145833 0.145833 0
+ L3 12632256 0.000000 0.395833 1.020833 0 0.395833 0.145833 0
+ L3 12632256 0.000000 0.645833 0.895833 0 0.645833 0.145833 0
+ L3 12632256 0.000000 0.895833 1.020833 0 0.895833 0.145833 0
+ L3 12632256 0.000000 1.145833 0.895833 0 1.145833 0.145833 0
+ L3 12632256 0.000000 1.395833 1.020833 0 1.395833 0.145833 0
+ L3 12632256 0.000000 1.645833 0.895833 0 1.645833 0.145833 0
+ L3 12632256 0.000000 1.895833 1.020833 0 1.895833 0.145833 0
+ L3 12632256 0.000000 2.145833 1.020833 0 2.145833 0.145833 0
+ L3 12632256 0.000000 2.395833 1.020833 0 2.395833 0.145833 0
+ L3 12632256 0.000000 2.645833 0.895833 0 2.645833 0.145833 0
+ L3 12632256 0.000000 2.895833 1.020833 0 2.895833 0.145833 0
+ L3 12632256 0.000000 3.145833 0.895833 0 3.145833 0.145833 0
+ L3 12632256 0.000000 3.395833 1.020833 0 3.395833 0.145833 0
+ L3 12632256 0.000000 3.645833 0.895833 0 3.645833 0.145833 0
+ L3 12632256 0.000000 3.895833 1.020833 0 3.895833 0.145833 0
+ L3 12632256 0.000000 4.145833 0.895833 0 4.145833 0.145833 0
+ L3 12632256 0.000000 2.270833 5.145833 0 3.145833 5.145833 0
+ L3 12632256 0.000000 3.145833 4.895833 0 2.270833 4.895833 0
+ L3 12632256 0.000000 2.270833 4.645833 0 3.145833 4.645833 0
+ L3 12632256 0.000000 3.145833 4.395833 0 2.270833 4.395833 0
+ L3 12632256 0.000000 2.270833 4.145833 0 3.145833 4.145833 0
+ L3 12632256 0.000000 3.145833 3.895833 0 2.270833 3.895833 0
+ L3 12632256 0.000000 2.270833 3.645833 0 3.145833 3.645833 0
+ L3 12632256 0.000000 2.270833 3.395833 0 3.145833 3.395833 0
+ L3 12632256 0.000000 3.145833 3.145833 0 2.270833 3.145833 0
+ L3 12632256 0.000000 2.270833 2.895833 0 3.145833 2.895833 0
+ L3 12632256 0.000000 3.145833 2.645833 0 2.270833 2.645833 0
+ L3 12632256 0.000000 2.270833 2.395833 0 3.145833 2.395833 0
+ L3 12632256 0.000000 3.145833 2.145833 0 2.270833 2.145833 0
+ L3 12632256 0.000000 2.270833 1.895833 0 3.145833 1.895833 0
+ L3 12632256 0.000000 3.145833 1.645833 0 2.270833 1.645833 0
+ L3 12632256 0.000000 2.270833 1.395833 0 3.145833 1.395833 0
+ L3 12632256 0.000000 3.145833 1.145833 0 2.270833 1.145833 0
+ L3 12632256 0.000000 3.395833 5.270833 0 4.270833 5.270833 0
+ L3 12632256 0.000000 4.270833 5.020833 0 3.395833 5.020833 0
+ L3 12632256 0.000000 3.395833 4.770833 0 4.395833 4.770833 0
+ L3 12632256 0.000000 4.270833 4.520833 0 3.395833 4.520833 0
+ L3 12632256 0.000000 3.395833 4.270833 0 4.270833 4.270833 0
+ L3 12632256 0.000000 4.270833 4.020833 0 3.395833 4.020833 0
+ L3 12632256 0.000000 3.395833 3.770833 0 4.270833 3.770833 0
+ L3 12632256 0.000000 4.270833 3.520833 0 3.395833 3.520833 0
+ L3 12632256 0.000000 3.395833 3.270833 0 4.395833 3.270833 0
+ L3 12632256 0.000000 4.270833 3.020833 0 3.395833 3.020833 0
+ L3 12632256 0.000000 4.270833 2.770833 0 3.395833 2.770833 0
+ L3 12632256 0.000000 3.395833 2.520833 0 4.270833 2.520833 0
+ L3 12632256 0.000000 4.270833 2.270833 0 3.395833 2.270833 0
+ L3 12632256 0.000000 3.395833 2.020833 0 4.270833 2.020833 0
+ L3 12632256 0.000000 4.270833 1.770833 0 3.395833 1.770833 0
+ L3 12632256 0.000000 3.395833 1.520833 0 4.270833 1.520833 0
+ L3 12632256 0.000000 3.395833 1.270833 0 4.270833 1.270833 0
+ END \ No newline at end of file
diff --git a/app/lib/params/NTrak.xtp b/app/lib/params/NTrak.xtp
new file mode 100644
index 0000000..f8e90f1
--- /dev/null
+++ b/app/lib/params/NTrak.xtp
@@ -0,0 +1,1510 @@
+CONTENTS NTrak Modules
+SUBCONTENTS NTrak Modules - Straight Modules (Base Only)
+STRUCTURE N "24in Straight Module Base NTSB2424"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 24.000000 24.000000 0
+ L3 5019904 0.040000 24.000000 24.000000 0 24.000000 0.000000 0
+ L3 5019904 0.040000 24.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "48in Straight Module Base NTSB4824"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 48.000000 24.000000 0
+ L3 5019904 0.040000 48.000000 24.000000 0 48.000000 0.000000 0
+ L3 5019904 0.040000 48.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "72in Straight Module Base NTSB7224"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 72.000000 24.000000 0
+ L3 5019904 0.040000 72.000000 24.000000 0 72.000000 0.000000 0
+ L3 5019904 0.040000 72.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "96in Straight Module Base NTSB9624"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 96.000000 24.000000 0
+ L3 5019904 0.040000 96.000000 24.000000 0 96.000000 0.000000 0
+ L3 5019904 0.040000 96.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+
+
+SUBCONTENTS NTrak Modules - Outside Corner Modules (Base Only)
+STRUCTURE N "22.5d Outside Corner Module Base NTOCB22.5d"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 10.756986 26.139697 0
+ L3 5019904 0.040000 10.756986 26.139697 0 19.941388 3.966589 0
+ L3 5019904 0.040000 19.941388 3.966589 0 10.365196 0.000000 0
+ L3 5019904 0.040000 10.365196 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "30d Outside Corner Module Base NTOCB30d"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 11.464102 27.071797 0
+ L3 5019904 0.040000 11.464102 27.071797 0 23.464102 6.287187 0
+ L3 5019904 0.040000 23.464102 6.287187 0 12.574374 0.000000 0
+ L3 5019904 0.040000 12.574374 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "45d Outside Corner Module Base NTOCB45d"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 12.485281 29.171573 0
+ L3 5019904 0.040000 12.485281 29.171573 0 29.455844 12.201010 0
+ L3 5019904 0.040000 29.455844 12.201010 0 17.254834 0.000000 0
+ L3 5019904 0.040000 17.254834 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "36in Outside Corner Module Base NTOCB36"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 12.000000 36.000000 0
+ L3 5019904 0.040000 12.000000 36.000000 0 36.000000 36.000000 0
+ L3 5019904 0.040000 36.000000 36.000000 0 36.000000 19.000000 0
+ L3 5019904 0.040000 36.000000 19.000000 0 17.000000 0.000000 0
+ L3 5019904 0.040000 17.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "48in Outside Corner Module Base NTOCB48"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 24.000000 48.000000 0
+ L3 5019904 0.040000 24.000000 48.000000 0 48.000000 48.000000 0
+ L3 5019904 0.040000 48.000000 48.000000 0 48.000000 24.000000 0
+ L3 5019904 0.040000 48.000000 24.000000 0 24.000000 0.000000 0
+ L3 5019904 0.040000 24.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+
+
+SUBCONTENTS NTrak Modules - Inside Corner Modules (Base Only)
+STRUCTURE N "22.5d Inside Corner Module Base NTICB22.5d"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 15.349187 27.053143 0
+ L3 5019904 0.040000 15.349187 27.053143 0 24.533589 4.880034 0
+ L3 5019904 0.040000 24.533589 4.880034 0 12.752144 0.000000 0
+ L3 5019904 0.040000 12.752144 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "30d Inside Corner Module Base NTICB30d"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 17.464102 28.679492 0
+ L3 5019904 0.040000 17.464102 28.679492 0 29.464102 7.894882 0
+ L3 5019904 0.040000 29.464102 7.894882 0 15.789764 0.000000 0
+ L3 5019904 0.040000 15.789764 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "45d Inside Corner Module Base NTICB45d"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 6.000000 24.000000 0
+ L3 5019904 0.040000 6.000000 24.000000 0 16.727922 28.443651 0
+ L3 5019904 0.040000 16.727922 28.443651 0 20.970563 32.686292 0
+ L3 5019904 0.040000 20.970563 32.686292 0 37.941125 15.715729 0
+ L3 5019904 0.040000 37.941125 15.715729 0 22.225397 0.000000 0
+ L3 5019904 0.040000 22.225397 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "48in Inside Corner Module Base NTICB48"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 9.000000 24.000000 0
+ L3 5019904 0.040000 9.000000 24.000000 0 24.000000 39.000000 0
+ L3 5019904 0.040000 24.000000 39.000000 0 24.000000 48.000000 0
+ L3 5019904 0.040000 24.000000 48.000000 0 48.000000 48.000000 0
+ L3 5019904 0.040000 48.000000 48.000000 0 48.000000 24.000000 0
+ L3 5019904 0.040000 48.000000 24.000000 0 24.000000 0.000000 0
+ L3 5019904 0.040000 24.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "72in Inside Corner Module Base NTICB72"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 14.058875 24.000000 0
+ L3 5019904 0.040000 14.058875 24.000000 0 48.000000 57.941125 0
+ L3 5019904 0.040000 48.000000 57.941125 0 48.000000 72.000000 0
+ L3 5019904 0.040000 48.000000 72.000000 0 72.000000 72.000000 0
+ L3 5019904 0.040000 72.000000 72.000000 0 72.000000 48.000000 0
+ L3 5019904 0.040000 72.000000 48.000000 0 24.000000 0.000000 0
+ L3 5019904 0.040000 24.000000 0.000000 0 0.000000 0.000000 0
+ L3 5019904 0.040000 31.029437 40.970563 0 48.000000 24.000000 0
+ END$SEGS
+
+
+SUBCONTENTS NTrak Modules - Junction Modules (Base Only)
+STRUCTURE N "60x36in Junction Module(Righthand) Base NTRHJB6036"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 12.000000 24.000000 0
+ L3 5019904 0.040000 12.000000 24.000000 0 24.000000 36.000000 0
+ L3 5019904 0.040000 24.000000 36.000000 0 48.000000 36.000000 0
+ L3 5019904 0.040000 48.000000 36.000000 0 60.000000 24.000000 0
+ L3 5019904 0.040000 60.000000 24.000000 0 60.000000 0.000000 0
+ L3 5019904 0.040000 60.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "60x36in Junction Module(Lefthand) Base NTLHJB6036"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 -12.000000 24.000000 0
+ L3 5019904 0.040000 -12.000000 24.000000 0 -24.000000 36.000000 0
+ L3 5019904 0.040000 -24.000000 36.000000 0 -48.000000 36.000000 0
+ L3 5019904 0.040000 -48.000000 36.000000 0 -60.000000 24.000000 0
+ L3 5019904 0.040000 -60.000000 24.000000 0 -60.000000 0.000000 0
+ L3 5019904 0.040000 -60.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "72x48in Junction Module(Righthand) Base NTRHJB7248"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 12.000000 24.000000 0
+ L3 5019904 0.040000 12.000000 24.000000 0 24.000000 48.000000 0
+ L3 5019904 0.040000 24.000000 48.000000 0 48.000000 48.000000 0
+ L3 5019904 0.040000 48.000000 48.000000 0 72.000000 24.000000 0
+ L3 5019904 0.040000 72.000000 24.000000 0 72.000000 0.000000 0
+ L3 5019904 0.040000 72.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "72x48in Junction Module(Lefthand) Base NTLHJB7248"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 -12.000000 24.000000 0
+ L3 5019904 0.040000 -12.000000 24.000000 0 -24.000000 48.000000 0
+ L3 5019904 0.040000 -24.000000 48.000000 0 -48.000000 48.000000 0
+ L3 5019904 0.040000 -48.000000 48.000000 0 -72.000000 24.000000 0
+ L3 5019904 0.040000 -72.000000 24.000000 0 -72.000000 0.000000 0
+ L3 5019904 0.040000 -72.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+
+
+SUBCONTENTS NTrak Modules - Ballon Modules (Base Only)
+STRUCTURE N "48x36in Righthand Balloon Module Base NTRHBB4842"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 24.000000 36.000000 0
+ L3 5019904 0.040000 24.000000 36.000000 0 48.000000 36.000000 0
+ L3 5019904 0.040000 48.000000 36.000000 0 48.000000 0.000000 0
+ L3 5019904 0.040000 48.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "48x36in Lefthand Balloon Module Base NTLHBB4842"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 -24.000000 36.000000 0
+ L3 5019904 0.040000 -24.000000 36.000000 0 -48.000000 36.000000 0
+ L3 5019904 0.040000 -48.000000 36.000000 0 -48.000000 0.000000 0
+ L3 5019904 0.040000 -48.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "60x42in Righthand Balloon Module Base NTRHBB6042"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 30.000000 42.000000 0
+ L3 5019904 0.040000 30.000000 42.000000 0 60.000000 42.000000 0
+ L3 5019904 0.040000 60.000000 42.000000 0 60.000000 0.000000 0
+ L3 5019904 0.040000 60.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+STRUCTURE N "60x42in Lefthand Balloon Module Base NTLHBB6042"
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 -30.000000 42.000000 0
+ L3 5019904 0.040000 -30.000000 42.000000 0 -60.000000 42.000000 0
+ L3 5019904 0.040000 -60.000000 42.000000 0 -60.000000 0.000000 0
+ L3 5019904 0.040000 -60.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+
+
+
+SUBCONTENTS NTrak Modules - Straight
+TURNOUT N "24in Straight Module NTS24"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 20.000000 4.000000 270.000000
+ E 21.559055 4.000000 90.000000
+#InnerMain
+ E 2.440945 5.500000 270.000000
+ E 4.000000 5.500000 90.000000
+ E 20.000000 5.500000 270.000000
+ E 21.559055 5.500000 90.000000
+#Branch
+ E 2.440945 7.000000 270.000000
+ E 4.000000 7.000000 90.000000
+ E 20.000000 7.000000 270.000000
+ E 21.559055 7.000000 90.000000
+#Branch Option
+ E 2.440945 14.000000 270.000000
+ E 4.000000 14.000000 90.000000
+ E 20.000000 14.000000 270.000000
+ E 21.559055 14.000000 90.000000
+#MountianDivision
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+ E 20.000000 20.000000 270.000000
+ E 21.559055 20.000000 90.000000
+#FrontMain
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 20.000000 4.000000 21.559055 4.000000
+#InnerMain
+ S 0 0 2.440945 5.500000 4.000000 5.500000
+ S 0 0 20.000000 5.500000 21.559055 5.500000
+#Branch
+ S 0 0 2.440945 7.000000 4.000000 7.000000
+ S 0 0 20.000000 7.000000 21.559055 7.000000
+#Branch Option
+ S 0 0 2.440945 14.000000 4.000000 14.000000
+ S 0 0 20.000000 14.000000 21.559055 14.000000
+#MountianDivision
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 20.000000 20.000000 21.559055 20.000000
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 24.000000 24.000000 0
+ L3 5019904 0.040000 24.000000 24.000000 0 24.000000 0.000000 0
+ L3 5019904 0.040000 24.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "48in Straight Module NTS48"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 44.000000 4.000000 270.000000
+ E 45.559055 4.000000 90.000000
+#InnerMain
+ E 2.440945 5.500000 270.000000
+ E 4.000000 5.500000 90.000000
+ E 44.000000 5.500000 270.000000
+ E 45.559055 5.500000 90.000000
+#Branch
+ E 2.440945 7.000000 270.000000
+ E 4.000000 7.000000 90.000000
+ E 44.000000 7.000000 270.000000
+ E 45.559055 7.000000 90.000000
+#Branch Option
+ E 2.440945 14.000000 270.000000
+ E 4.000000 14.000000 90.000000
+ E 44.000000 14.000000 270.000000
+ E 45.559055 14.000000 90.000000
+#MountianDivision
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+ E 44.000000 20.000000 270.000000
+ E 45.559055 20.000000 90.000000
+#FrontMain
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 44.000000 4.000000 45.559055 4.000000
+#InnerMain
+ S 0 0 2.440945 5.500000 4.000000 5.500000
+ S 0 0 44.000000 5.500000 45.559055 5.500000
+#Branch
+ S 0 0 2.440945 7.000000 4.000000 7.000000
+ S 0 0 44.000000 7.000000 45.559055 7.000000
+#Branch Option
+ S 0 0 2.440945 14.000000 4.000000 14.000000
+ S 0 0 44.000000 14.000000 45.559055 14.000000
+#MountianDivision
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 44.000000 20.000000 45.559055 20.000000
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 48.000000 24.000000 0
+ L3 5019904 0.040000 48.000000 24.000000 0 48.000000 0.000000 0
+ L3 5019904 0.040000 48.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "72in Straight Module NTS72"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 68.000000 4.000000 270.000000
+ E 69.559055 4.000000 90.000000
+#InnerMain
+ E 2.440945 5.500000 270.000000
+ E 4.000000 5.500000 90.000000
+ E 68.000000 5.500000 270.000000
+ E 69.559055 5.500000 90.000000
+#Branch
+ E 2.440945 7.000000 270.000000
+ E 4.000000 7.000000 90.000000
+ E 68.000000 7.000000 270.000000
+ E 69.559055 7.000000 90.000000
+#Branch Option
+ E 2.440945 14.000000 270.000000
+ E 4.000000 14.000000 90.000000
+ E 68.000000 14.000000 270.000000
+ E 69.559055 14.000000 90.000000
+#MountianDivision
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+ E 68.000000 20.000000 270.000000
+ E 69.559055 20.000000 90.000000
+#FrontMain
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 68.000000 4.000000 69.559055 4.000000
+#InnerMain
+ S 0 0 2.440945 5.500000 4.000000 5.500000
+ S 0 0 68.000000 5.500000 69.559055 5.500000
+#Branch
+ S 0 0 2.440945 7.000000 4.000000 7.000000
+ S 0 0 68.000000 7.000000 69.559055 7.000000
+#Branch Option
+ S 0 0 2.440945 14.000000 4.000000 14.000000
+ S 0 0 68.000000 14.000000 69.559055 14.000000
+#MountianDivision
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 68.000000 20.000000 69.559055 20.000000
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 72.000000 24.000000 0
+ L3 5019904 0.040000 72.000000 24.000000 0 72.000000 0.000000 0
+ L3 5019904 0.040000 72.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "96in Straight Module NTS96"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 92.000000 4.000000 270.000000
+ E 93.559055 4.000000 90.000000
+#InnerMain
+ E 2.440945 5.500000 270.000000
+ E 4.000000 5.500000 90.000000
+ E 92.000000 5.500000 270.000000
+ E 93.559055 5.500000 90.000000
+#Branch
+ E 2.440945 7.000000 270.000000
+ E 4.000000 7.000000 90.000000
+ E 92.000000 7.000000 270.000000
+ E 93.559055 7.000000 90.000000
+#Branch Option
+ E 2.440945 14.000000 270.000000
+ E 4.000000 14.000000 90.000000
+ E 92.000000 14.000000 270.000000
+ E 93.559055 14.000000 90.000000
+#MountianDivision
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+ E 92.000000 20.000000 270.000000
+ E 93.559055 20.000000 90.000000
+#FrontMain
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 92.000000 4.000000 93.559055 4.000000
+#InnerMain
+ S 0 0 2.440945 5.500000 4.000000 5.500000
+ S 0 0 92.000000 5.500000 93.559055 5.500000
+#Branch
+ S 0 0 2.440945 7.000000 4.000000 7.000000
+ S 0 0 92.000000 7.000000 93.559055 7.000000
+#Branch Option
+ S 0 0 2.440945 14.000000 4.000000 14.000000
+ S 0 0 92.000000 14.000000 93.559055 14.000000
+#MountianDivision
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 92.000000 20.000000 93.559055 20.000000
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 96.000000 24.000000 0
+ L3 5019904 0.040000 96.000000 24.000000 0 96.000000 0.000000 0
+ L3 5019904 0.040000 96.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+
+
+SUBCONTENTS NTrak Modules - Outside Corner
+TURNOUT N "22.5d Outside Corner Module Base NTOC22.5d"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 16.155515 6.727998 67.500000
+ E 14.715136 6.131373 247.500000
+#InnerMain
+ E 2.440945 5.500000 270.000000
+ E 4.000000 5.500000 90.000000
+ E 15.581490 8.113817 67.500000
+ E 14.141111 7.517192 247.500000
+#Branch
+ E 2.440945 7.000000 270.000000
+ E 4.000000 7.000000 90.000000
+ E 15.007465 9.499636 67.500000
+ E 13.567086 8.903012 247.500000
+#Branch Option
+ E 2.440945 14.000000 270.000000
+ E 4.000000 14.000000 90.000000
+ E 12.328681 15.966793 67.500000
+ E 10.888302 15.370168 247.500000
+#MountianDivision
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+ E 10.032580 21.510070 67.500000
+ E 8.592201 20.913446 247.500000
+#FrontMain
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 14.715136 6.131373 16.155515 6.727998
+#InnerMain
+ S 0 0 2.440945 5.500000 4.000000 5.500000
+ S 0 0 14.141111 7.517192 15.581490 8.113817
+#Branch
+ S 0 0 2.440945 7.000000 4.000000 7.000000
+ S 0 0 13.567086 8.903012 15.007465 9.499636
+#Branch Option
+ S 0 0 2.440945 14.000000 4.000000 14.000000
+ S 0 0 10.888302 15.370168 12.328681 15.966793
+#MountianDivision
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 8.592201 20.913446 10.032580 21.510070
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 10.756986 26.139697 0
+ L3 5019904 0.040000 10.756986 26.139697 0 19.941388 3.966589 0
+ L3 5019904 0.040000 19.941388 3.966589 0 10.365196 0.000000 0
+ L3 5019904 0.040000 10.365196 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "30d Outside Corner Module Base NTOC30d"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 19.350181 8.530816 60.000000
+ E 18.000000 7.751289 240.000000
+#InnerMain
+ E 2.440945 5.500000 270.000000
+ E 4.000000 5.500000 90.000000
+ E 18.600181 9.829854 60.000000
+ E 17.250000 9.050327 240.000000
+#Branch
+ E 2.440945 7.000000 270.000000
+ E 4.000000 7.000000 90.000000
+ E 17.850181 11.128892 60.000000
+ E 16.500000 10.349365 240.000000
+#Branch Option
+ E 2.440945 14.000000 270.000000
+ E 4.000000 14.000000 90.000000
+ E 14.350181 17.191070 60.000000
+ E 13.000000 16.411543 240.000000
+#MountianDivision
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+ E 11.350181 22.387223 60.000000
+ E 10.000000 21.607695 240.000000
+#FrontMain
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 18.000000 7.751289 19.350181 8.530816
+#InnerMain
+ S 0 0 2.440945 5.500000 4.000000 5.500000
+ S 0 0 17.250000 9.050327 18.600181 9.829854
+#Branch
+ S 0 0 2.440945 7.000000 4.000000 7.000000
+ S 0 0 16.500000 10.349365 17.850181 11.128892
+#Branch Option
+ S 0 0 2.440945 14.000000 4.000000 14.000000
+ S 0 0 13.000000 16.411543 14.350181 17.191070
+#MountianDivision
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 10.000000 21.607695 11.350181 22.387223
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 11.464102 27.071797 0
+ L3 5019904 0.040000 11.464102 27.071797 0 23.464102 6.287187 0
+ L3 5019904 0.040000 23.464102 6.287187 0 12.574374 0.000000 0
+ L3 5019904 0.040000 12.574374 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "45d Outside Corner Module Base NTOC45d"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 24.901408 13.303428 45.000000
+ E 23.798990 12.201010 225.00000
+#InnerMain
+ E 2.440945 5.500000 270.000000
+ E 4.000000 5.500000 90.000000
+ E 23.840748 14.364089 45.000000
+ E 22.738330 13.261670 225.000000
+#Branch
+ E 2.440945 7.000000 270.000000
+ E 4.000000 7.000000 90.000000
+ E 22.780088 15.424749 45.000000
+ E 21.677670 14.322330 225.000000
+#Branch Option
+ E 2.440945 14.000000 270.000000
+ E 4.000000 14.000000 90.000000
+ E 17.830340 20.374496 45.000000
+ E 16.727922 19.272078 225.000000
+#MountianDivision
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+ E 13.587700 24.617137 45.000000
+ E 12.485281 23.514719 225.000000
+#FrontMain
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 23.798990 12.201010 24.901408 13.303428
+#InnerMain
+ S 0 0 2.440945 5.500000 4.000000 5.500000
+ S 0 0 22.738330 13.261670 23.840748 14.364089
+#Branch
+ S 0 0 2.440945 7.000000 4.000000 7.000000
+ S 0 0 21.677670 14.322330 22.780088 15.424749
+#Branch Option
+ S 0 0 2.440945 14.000000 4.000000 14.000000
+ S 0 0 16.727922 19.272078 17.830340 20.374496
+#MountianDivision
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 12.485281 23.514719 13.587700 24.617137
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 12.485281 29.171573 0
+ L3 5019904 0.040000 12.485281 29.171573 0 29.455844 12.201010 0
+ L3 5019904 0.040000 29.455844 12.201010 0 17.254834 0.000000 0
+ L3 5019904 0.040000 17.254834 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "36in Outside Corner Module NTOC36"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 32.000000 33.559055 0.000000
+ E 32.000000 32.000000 180.000000
+#InnerMain
+ E 2.440945 5.500000 270.000000
+ E 4.000000 5.500000 270.000000
+ E 30.500000 33.559055 0.000000
+ E 30.500000 32.000000 180.000000
+#Branch
+ E 2.440945 7.000000 270.000000
+ E 4.000000 7.000000 270.000000
+ E 29.000000 33.559055 0.000000
+ E 29.000000 32.000000 180.000000
+#Branch Option
+ E 2.440945 14.000000 270.000000
+ E 4.000000 14.000000 270.000000
+ E 22.000000 33.559055 0.000000
+ E 22.000000 32.000000 180.000000
+#MountianDivision
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 270.000000
+ E 16.000000 33.559055 0.000000
+ E 16.000000 32.000000 180.000000
+#FrontMain
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 32.000000 32.000000 32.000000 33.559055
+#InnerMain
+ S 0 0 2.440945 5.500000 4.000000 5.500000
+ S 0 0 30.500000 32.000000 30.500000 33.559055
+#Branch
+ S 0 0 2.440945 7.000000 4.000000 7.000000
+ S 0 0 29.000000 32.000000 29.000000 33.559055
+#Branch Option
+ S 0 0 2.440945 14.000000 4.000000 14.000000
+ S 0 0 22.000000 32.000000 22.000000 33.559055
+#MountianDivision
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 16.000000 32.000000 16.000000 33.559055
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 12.000000 36.000000 0
+ L3 5019904 0.040000 12.000000 36.000000 0 36.000000 36.000000 0
+ L3 5019904 0.040000 36.000000 36.000000 0 36.000000 19.000000 0
+ L3 5019904 0.040000 36.000000 19.000000 0 17.000000 0.000000 0
+ L3 5019904 0.040000 17.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "48in Outside Corner Module Base NTOC48"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 270.000000
+ E 44.000000 45.559055 0.000000
+ E 44.000000 44.000000 180.000000
+#InnerMain
+ E 2.440945 5.500000 270.000000
+ E 4.000000 5.500000 270.000000
+ E 42.500000 45.559055 0.000000
+ E 42.500000 44.000000 180.000000
+#Branch
+ E 2.440945 7.000000 270.000000
+ E 4.000000 7.000000 270.000000
+ E 41.000000 45.559055 0.000000
+ E 41.000000 44.000000 180.000000
+#Branch Option
+ E 2.440945 14.000000 270.000000
+ E 4.000000 14.000000 270.000000
+ E 34.000000 45.559055 0.000000
+ E 34.000000 44.000000 180.000000
+#MountianDivision
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 270.000000
+ E 28.000000 45.559055 0.000000
+ E 28.000000 44.000000 180.000000
+#FrontMain
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 44.000000 44.000000 44.000000 45.559055
+#InnerMain
+ S 0 0 2.440945 5.500000 4.000000 5.500000
+ S 0 0 42.500000 44.000000 42.500000 45.559055
+#Branch
+ S 0 0 2.440945 7.000000 4.000000 7.000000
+ S 0 0 41.000000 44.000000 41.000000 45.559055
+#Branch Option
+ S 0 0 2.440945 14.000000 4.000000 14.000000
+ S 0 0 34.000000 44.000000 34.000000 45.559055
+#MountianDivision
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 28.000000 44.000000 28.000000 45.559055
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 24.000000 48.000000 0
+ L3 5019904 0.040000 24.000000 48.000000 0 48.000000 48.000000 0
+ L3 5019904 0.040000 48.000000 48.000000 0 48.000000 24.000000 0
+ L3 5019904 0.040000 48.000000 24.000000 0 24.000000 0.000000 0
+ L3 5019904 0.040000 24.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+
+
+
+SUBCONTENTS NTrak Modules - Inside Corner
+TURNOUT N "22.5d Inside Corner Module Base NTIC22.5d"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+ E 14.624781 22.423516 67.500000
+ E 13.184402 21.826891 247.500000
+#InnerMain
+ E 2.440945 18.500000 270.000000
+ E 4.000000 18.500000 90.000000
+ E 15.198807 21.037696 67.500000
+ E 13.758428 20.441072 247.500000
+#Branch
+ E 2.440945 17.000000 270.000000
+ E 4.000000 17.000000 90.000000
+ E 15.772832 19.651877 67.500000
+ E 14.332453 19.055253 247.500000
+#Branch Option
+ E 2.440945 10.000000 270.000000
+ E 4.000000 10.000000 90.000000
+ E 18.451616 13.184720 67.500000
+ E 17.011237 12.588096 247.500000
+#MountianDivision
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 20.747716 7.641443 67.500000
+ E 19.307337 7.044819 247.500000
+#FrontMain
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 13.184402 21.826891 14.624781 22.423516
+#InnerMain
+ S 0 0 2.440945 18.500000 4.000000 18.500000
+ S 0 0 13.758428 20.441072 15.198807 21.037696
+#Branch
+ S 0 0 2.440945 17.000000 4.000000 17.000000
+ S 0 0 14.332453 19.055253 15.772832 19.651877
+#Branch Option
+ S 0 0 2.440945 10.000000 4.000000 10.000000
+ S 0 0 17.011237 12.588096 18.451616 13.184720
+#MountianDivision
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 19.307337 7.044819 20.747716 7.641443
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 15.349187 27.053143 0
+ L3 5019904 0.040000 15.349187 27.053143 0 24.533589 4.880034 0
+ L3 5019904 0.040000 24.533589 4.880034 0 12.752144 0.000000 0
+ L3 5019904 0.040000 12.752144 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "30d Inside Corner Module Base NTIC30d"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+ E 17.350181 23.994918 60.000000
+ E 16.000000 23.215390 240.000000
+#InnerMain
+ E 2.440945 18.500000 270.000000
+ E 4.000000 18.500000 90.000000
+ E 18.100181 22.695880 60.000000
+ E 16.750000 21.916352 240.000000
+#Branch
+ E 2.440945 17.000000 270.000000
+ E 4.000000 17.000000 90.000000
+ E 18.850181 21.396842 60.000000
+ E 17.500000 20.617314 240.000000
+#Branch Option
+ E 2.440945 10.000000 270.000000
+ E 4.000000 10.000000 90.000000
+ E 22.350181 15.334664 60.000000
+ E 21.000000 14.555136 240.000000
+#MountianDivision
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 25.350181 10.138511 60.000000
+ E 24.000000 9.358984 240.000000
+#FrontMain
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 16.000000 23.215390 17.350181 23.994918
+#InnerMain
+ S 0 0 2.440945 18.500000 4.000000 18.500000
+ S 0 0 16.750000 21.916352 18.100181 22.695880
+#Branch
+ S 0 0 2.440945 17.000000 4.000000 17.000000
+ S 0 0 17.500000 20.617314 18.850181 21.396842
+#Branch Option
+ S 0 0 2.440945 10.000000 4.000000 10.000000
+ S 0 0 21.000000 14.555136 22.350181 15.334664
+#MountianDivision
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 24.000000 9.358984 25.350181 10.138511
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 17.464102 28.679492 0
+ L3 5019904 0.040000 17.464102 28.679492 0 29.464102 7.894882 0
+ L3 5019904 0.040000 29.464102 7.894882 0 15.789764 0.000000 0
+ L3 5019904 0.040000 15.789764 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "45d Inside Corner Module Base NTIC45d"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+ E 22.072981 28.131856 45.00000
+ E 20.970563 27.029437 225.000000
+#InnerMain
+ E 2.440945 18.500000 270.000000
+ E 4.000000 18.500000 90.000000
+ E 23.133641 27.071195 45.000000
+ E 22.031223 25.968777 225.000000
+#Branch
+ E 2.440945 17.000000 270.000000
+ E 4.000000 17.000000 90.000000
+ E 24.194301 26.010535 45.000000
+ E 23.091883 24.908117 225.000000
+#Branch Option
+ E 2.440945 10.000000 270.000000
+ E 4.000000 10.000000 90.000000
+ E 29.144049 21.060788 45.000000
+ E 28.041631 19.958369 225.000000
+#MountianDivision
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 33.386690 16.818147 45.000000
+ E 32.284271 15.715729 225.000000
+#FrontMain
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 20.970563 27.029437 22.072981 28.131856
+#InnerMain
+ S 0 0 2.440945 18.500000 4.000000 18.500000
+ S 0 0 22.031223 25.968777 23.133641 27.071195
+#Branch
+ S 0 0 2.440945 17.000000 4.000000 17.000000
+ S 0 0 23.091883 24.908117 24.194301 26.010535
+#Branch Option
+ S 0 0 2.440945 10.000000 4.000000 10.000000
+ S 0 0 28.041631 19.958369 29.144049 21.060788
+#MountianDivision
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 32.284271 15.715729 33.386690 16.818147
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 6.000000 24.000000 0
+ L3 5019904 0.040000 6.000000 24.000000 0 16.727922 28.443651 0
+ L3 5019904 0.040000 16.727922 28.443651 0 20.970563 32.686292 0
+ L3 5019904 0.040000 20.970563 32.686292 0 37.941125 15.715729 0
+ L3 5019904 0.040000 37.941125 15.715729 0 22.225397 0.000000 0
+ L3 5019904 0.040000 22.225397 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "48in Inside Corner Module Base NTIC48"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+ E 28.000000 45.559055 0.00000
+ E 28.000000 44.000000 180.000000
+#InnerMain
+ E 2.440945 18.500000 270.000000
+ E 4.000000 18.500000 90.000000
+ E 29.500000 45.559055 0.000000
+ E 29.500000 44.000000 180.000000
+#Branch
+ E 2.440945 17.000000 270.000000
+ E 4.000000 17.000000 90.000000
+ E 31.000000 45.559055 0.000000
+ E 31.000000 44.000000 180.000000
+#Branch Option
+ E 2.440945 10.000000 270.000000
+ E 4.000000 10.000000 90.000000
+ E 38.000000 45.559055 0.000000
+ E 38.000000 44.000000 180.000000
+#MountianDivision
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 44.000000 45.559055 0.000000
+ E 44.000000 44.000000 180.000000
+#FrontMain
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 28.000000 44.000000 28.000000 45.559055
+#InnerMain
+ S 0 0 2.440945 18.500000 4.000000 18.500000
+ S 0 0 29.500000 44.000000 29.500000 45.559055
+#Branch
+ S 0 0 2.440945 17.000000 4.000000 17.000000
+ S 0 0 31.000000 44.000000 31.000000 45.559055
+#Branch Option
+ S 0 0 2.440945 10.000000 4.000000 10.000000
+ S 0 0 38.000000 44.000000 38.000000 45.559055
+#MountianDivision
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 44.000000 44.000000 44.000000 45.559055
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 9.000000 24.000000 0
+ L3 5019904 0.040000 9.000000 24.000000 0 24.000000 39.000000 0
+ L3 5019904 0.040000 24.000000 39.000000 0 24.000000 48.000000 0
+ L3 5019904 0.040000 24.000000 48.000000 0 48.000000 48.000000 0
+ L3 5019904 0.040000 48.000000 48.000000 0 48.000000 24.000000 0
+ L3 5019904 0.040000 48.000000 24.000000 0 24.000000 0.000000 0
+ L3 5019904 0.040000 24.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "72in Inside Corner Module Base NTIC72"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+ E 52.000000 69.559055 0.00000
+ E 52.000000 68.000000 180.000000
+#InnerMain
+ E 2.440945 18.500000 270.000000
+ E 4.000000 18.500000 90.000000
+ E 53.500000 69.559055 0.000000
+ E 53.500000 68.000000 180.000000
+#Branch
+ E 2.440945 17.000000 270.000000
+ E 4.000000 17.000000 90.000000
+ E 55.000000 69.559055 0.000000
+ E 55.000000 68.000000 180.000000
+#Branch Option
+ E 2.440945 10.000000 270.000000
+ E 4.000000 10.000000 90.000000
+ E 62.000000 69.559055 0.000000
+ E 62.000000 68.000000 180.000000
+#MountianDivision
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 68.000000 69.559055 0.000000
+ E 68.000000 68.000000 180.000000
+#FrontMain
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 52.000000 68.000000 52.000000 69.559055
+#InnerMain
+ S 0 0 2.440945 18.500000 4.000000 18.500000
+ S 0 0 53.500000 68.000000 53.500000 69.559055
+#Branch
+ S 0 0 2.440945 17.000000 4.000000 17.000000
+ S 0 0 55.000000 68.000000 55.000000 69.559055
+#Branch Option
+ S 0 0 2.440945 10.000000 4.000000 10.000000
+ S 0 0 62.000000 68.000000 62.000000 69.559055
+#MountianDivision
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 68.000000 68.000000 68.000000 69.559055
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 14.058875 24.000000 0
+ L3 5019904 0.040000 14.058875 24.000000 0 48.000000 57.941125 0
+ L3 5019904 0.040000 48.000000 57.941125 0 48.000000 72.000000 0
+ L3 5019904 0.040000 48.000000 72.000000 0 72.000000 72.000000 0
+ L3 5019904 0.040000 72.000000 72.000000 0 72.000000 48.000000 0
+ L3 5019904 0.040000 72.000000 48.000000 0 24.000000 0.000000 0
+ L3 5019904 0.040000 24.000000 0.000000 0 0.000000 0.000000 0
+ L3 5019904 0.040000 31.029437 40.970563 0 48.000000 24.000000 0
+ END$SEGS
+
+
+SUBCONTENTS NTrak Modules - Junction
+TURNOUT N "60x36in Junction Module(Righthand) NTJRH6036"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 12 0 13 0 14 0 15
+#FrontMain
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 28.000000 33.559055 0.000000
+ E 28.000000 32.000000 180.000000
+ E 57.559055 4.000000 90.000000
+ E 56.000000 4.000000 270.000000
+#InnerMain
+ E 2.440945 5.500000 270.000000
+ E 4.000000 5.500000 90.000000
+ E 29.500000 33.559055 0.000000
+ E 29.500000 32.000000 180.000000
+ E 57.559055 5.500000 90.000000
+ E 56.000000 5.500000 270.000000
+#Branch
+ E 2.440945 7.000000 270.000000
+ E 4.000000 7.000000 90.000000
+ E 31.000000 33.559055 0.000000
+ E 31.000000 32.000000 180.000000
+ E 57.559055 7.000000 90.000000
+ E 56.000000 7.000000 270.000000
+#Branch Option
+ E 2.440945 14.000000 270.000000
+ E 4.000000 14.000000 90.000000
+ E 38.000000 33.559055 0.000000
+ E 38.000000 32.000000 180.000000
+ E 57.559055 14.000000 90.000000
+ E 56.000000 14.000000 270.000000
+#MountianDivision
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+ E 44.000000 33.559055 0.000000
+ E 44.000000 32.000000 180.000000
+ E 57.559055 20.000000 90.000000
+ E 56.000000 20.000000 270.000000
+#FrontMain
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 28.000000 32.000000 28.000000 33.559055
+ S 0 0 57.559055 4.000000 56.000000 4.000000
+#InnerMain
+ S 0 0 2.440945 5.500000 4.000000 5.500000
+ S 0 0 29.500000 32.000000 29.500000 33.559055
+ S 0 0 57.559055 5.500000 56.000000 5.500000
+#Branch
+ S 0 0 2.440945 7.000000 4.000000 7.000000
+ S 0 0 31.000000 32.000000 31.000000 33.559055
+ S 0 0 57.559055 7.000000 56.000000 7.000000
+#Branch Option
+ S 0 0 2.440945 14.000000 4.000000 14.000000
+ S 0 0 38.000000 32.000000 38.000000 33.559055
+ S 0 0 57.559055 14.000000 56.000000 14.000000
+#MountianDivision
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 44.000000 32.000000 44.000000 33.559055
+ S 0 0 57.559055 20.000000 56.000000 20.000000
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 12.000000 24.000000 0
+ L3 5019904 0.040000 12.000000 24.000000 0 24.000000 36.000000 0
+ L3 5019904 0.040000 24.000000 36.000000 0 48.000000 36.000000 0
+ L3 5019904 0.040000 48.000000 36.000000 0 60.000000 24.000000 0
+ L3 5019904 0.040000 60.000000 24.000000 0 60.000000 0.000000 0
+ L3 5019904 0.040000 60.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "60x36in Junction Module(Lefthand) NTJLH6036"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 12 0 13 0 14 0 15
+#FrontMain
+ E -2.440945 4.000000 90.000000
+ E -4.000000 4.000000 270.000000
+ E -28.000000 33.559055 0.000000
+ E -28.000000 32.000000 180.000000
+ E -57.559055 4.000000 270.000000
+ E -56.000000 4.000000 90.000000
+#InnerMain
+ E -2.440945 5.500000 90.000000
+ E -4.000000 5.500000 270.000000
+ E -29.500000 33.559055 0.000000
+ E -29.500000 32.000000 180.000000
+ E -57.559055 5.500000 270.000000
+ E -56.000000 5.500000 90.000000
+#Branch
+ E -2.440945 7.000000 90.000000
+ E -4.000000 7.000000 270.000000
+ E -31.000000 33.559055 0.000000
+ E -31.000000 32.000000 180.000000
+ E -57.559055 7.000000 270.000000
+ E -56.000000 7.000000 90.000000
+#Branch Option
+ E -2.440945 14.000000 90.000000
+ E -4.000000 14.000000 270.000000
+ E -38.000000 33.559055 0.000000
+ E -38.000000 32.000000 180.000000
+ E -57.559055 14.000000 270.000000
+ E -56.000000 14.000000 90.000000
+#MountianDivision
+ E -2.440945 20.000000 90.000000
+ E -4.000000 20.000000 270.000000
+ E -44.000000 33.559055 0.000000
+ E -44.000000 32.000000 180.000000
+ E -57.559055 20.000000 270.000000
+ E -56.000000 20.000000 90.000000
+#FrontMain
+ S 0 0 -2.440945 4.000000 -4.000000 4.000000
+ S 0 0 -28.000000 32.000000 -28.000000 33.559055
+ S 0 0 -57.559055 4.000000 -56.000000 4.000000
+#InnerMain
+ S 0 0 -2.440945 5.500000 -4.000000 5.500000
+ S 0 0 -29.500000 32.000000 -29.500000 33.559055
+ S 0 0 -57.559055 5.500000 -56.000000 5.500000
+#Branch
+ S 0 0 -2.440945 7.000000 -4.000000 7.000000
+ S 0 0 -31.000000 32.000000 -31.000000 33.559055
+ S 0 0 -57.559055 7.000000 -56.000000 7.000000
+#Branch Option
+ S 0 0 -2.440945 14.000000 -4.000000 14.000000
+ S 0 0 -38.000000 32.000000 -38.000000 33.559055
+ S 0 0 -57.559055 14.000000 -56.000000 14.000000
+#MountianDivision
+ S 0 0 -2.440945 20.000000 -4.000000 20.000000
+ S 0 0 -44.000000 32.000000 -44.000000 33.559055
+ S 0 0 -57.559055 20.000000 -56.000000 20.000000
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 -12.000000 24.000000 0
+ L3 5019904 0.040000 -12.000000 24.000000 0 -24.000000 36.000000 0
+ L3 5019904 0.040000 -24.000000 36.000000 0 -48.000000 36.000000 0
+ L3 5019904 0.040000 -48.000000 36.000000 0 -60.000000 24.000000 0
+ L3 5019904 0.040000 -60.000000 24.000000 0 -60.000000 0.000000 0
+ L3 5019904 0.040000 -60.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "72x48in Junction Module(Righthand) NTJRH7248"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 12 0 13 0 14 0 15
+#FrontMain
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 28.000000 45.559055 0.000000
+ E 28.000000 44.000000 180.000000
+ E 69.559055 4.000000 90.000000
+ E 68.000000 4.000000 270.000000
+#InnerMain
+ E 2.440945 5.500000 270.000000
+ E 4.000000 5.500000 90.000000
+ E 29.500000 45.559055 0.000000
+ E 29.500000 44.000000 180.000000
+ E 69.559055 5.500000 90.000000
+ E 68.000000 5.500000 270.000000
+#Branch
+ E 2.440945 7.000000 270.000000
+ E 4.000000 7.000000 90.000000
+ E 31.000000 45.559055 0.000000
+ E 31.000000 44.000000 180.000000
+ E 69.559055 7.000000 90.000000
+ E 68.000000 7.000000 270.000000
+#Branch Option
+ E 2.440945 14.000000 270.000000
+ E 4.000000 14.000000 90.000000
+ E 38.000000 45.559055 0.000000
+ E 38.000000 44.000000 180.000000
+ E 69.559055 14.000000 90.000000
+ E 68.000000 14.000000 270.000000
+#MountianDivision
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+ E 44.000000 45.559055 0.000000
+ E 44.000000 44.000000 180.000000
+ E 69.559055 20.000000 90.000000
+ E 68.000000 20.000000 270.000000
+#FrontMain
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 28.000000 44.000000 28.000000 45.559055
+ S 0 0 69.559055 4.000000 68.000000 4.000000
+#InnerMain
+ S 0 0 2.440945 5.500000 4.000000 5.500000
+ S 0 0 29.500000 44.000000 29.500000 45.559055
+ S 0 0 69.559055 5.500000 68.000000 5.500000
+#Branch
+ S 0 0 2.440945 7.000000 4.000000 7.000000
+ S 0 0 31.000000 44.000000 31.000000 45.559055
+ S 0 0 69.559055 7.000000 68.000000 7.000000
+#Branch Option
+ S 0 0 2.440945 14.000000 4.000000 14.000000
+ S 0 0 38.000000 44.000000 38.000000 45.559055
+ S 0 0 69.559055 14.000000 68.000000 14.000000
+#MountianDivision
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 44.000000 44.000000 44.000000 45.559055
+ S 0 0 69.559055 20.000000 68.000000 20.000000
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 12.000000 24.000000 0
+ L3 5019904 0.040000 12.000000 24.000000 0 24.000000 48.000000 0
+ L3 5019904 0.040000 24.000000 48.000000 0 48.000000 48.000000 0
+ L3 5019904 0.040000 48.000000 48.000000 0 72.000000 24.000000 0
+ L3 5019904 0.040000 72.000000 24.000000 0 72.000000 0.000000 0
+ L3 5019904 0.040000 72.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "72x48in Junction Module(Lefthand) NTJLH7248"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 12 0 13 0 14 0 15
+#FrontMain
+ E -2.440945 4.000000 90.000000
+ E -4.000000 4.000000 270.000000
+ E -28.000000 45.559055 0.000000
+ E -28.000000 44.000000 180.000000
+ E -69.559055 4.000000 270.000000
+ E -68.000000 4.000000 90.000000
+#InnerMain
+ E -2.440945 5.500000 90.000000
+ E -4.000000 5.500000 270.000000
+ E -29.500000 45.559055 0.000000
+ E -29.500000 44.000000 180.000000
+ E -69.559055 5.500000 270.000000
+ E -68.000000 5.500000 90.000000
+#Branch
+ E -2.440945 7.000000 90.000000
+ E -4.000000 7.000000 270.000000
+ E -31.000000 45.559055 0.000000
+ E -31.000000 44.000000 180.000000
+ E -69.559055 7.000000 270.000000
+ E -68.000000 7.000000 90.000000
+#Branch Option
+ E -2.440945 14.000000 90.000000
+ E -4.000000 14.000000 270.000000
+ E -38.000000 45.559055 0.000000
+ E -38.000000 44.000000 180.000000
+ E -69.559055 14.000000 270.000000
+ E -68.000000 14.000000 90.000000
+#MountianDivision
+ E -2.440945 20.000000 90.000000
+ E -4.000000 20.000000 270.000000
+ E -44.000000 45.559055 0.000000
+ E -44.000000 44.000000 180.000000
+ E -69.559055 20.000000 270.000000
+ E -68.000000 20.000000 90.000000
+#FrontMain
+ S 0 0 -2.440945 4.000000 -4.000000 4.000000
+ S 0 0 -28.000000 44.000000 -28.000000 45.559055
+ S 0 0 -69.559055 4.000000 -68.000000 4.000000
+#InnerMain
+ S 0 0 -2.440945 5.500000 -4.000000 5.500000
+ S 0 0 -29.500000 44.000000 -29.500000 45.559055
+ S 0 0 -69.559055 5.500000 -68.000000 5.500000
+#Branch
+ S 0 0 -2.440945 7.000000 -4.000000 7.000000
+ S 0 0 -31.000000 44.000000 -31.000000 45.559055
+ S 0 0 -69.559055 7.000000 -68.000000 7.000000
+#Branch Option
+ S 0 0 -2.440945 14.000000 -4.000000 14.000000
+ S 0 0 -38.000000 44.000000 -38.000000 45.559055
+ S 0 0 -69.559055 14.000000 -68.000000 14.000000
+#MountianDivision
+ S 0 0 -2.440945 20.000000 -4.000000 20.000000
+ S 0 0 -44.000000 44.000000 -44.000000 45.559055
+ S 0 0 -69.559055 20.000000 -68.000000 20.000000
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 -12.000000 24.000000 0
+ L3 5019904 0.040000 -12.000000 24.000000 0 -24.000000 48.000000 0
+ L3 5019904 0.040000 -24.000000 48.000000 0 -48.000000 48.000000 0
+ L3 5019904 0.040000 -48.000000 48.000000 0 -72.000000 24.000000 0
+ L3 5019904 0.040000 -72.000000 24.000000 0 -72.000000 0.000000 0
+ L3 5019904 0.040000 -72.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+
+
+SUBCONTENTS NTrak Modules - Balloon
+TURNOUT N "48x36in Righthand Balloon Module NTRHB4842"
+ P "Normal" 1 0 2 0 3 0 4 0 5
+#FrontMain
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+#InnerMain
+ E 2.440945 5.500000 270.000000
+ E 4.000000 5.500000 90.000000
+#Branch
+ E 2.440945 7.000000 270.000000
+ E 4.000000 7.000000 90.000000
+#Branch Option
+ E 2.440945 14.000000 270.000000
+ E 4.000000 14.000000 90.000000
+#MountianDivision
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+#FrontMain
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+#InnerMain
+ S 0 0 2.440945 5.500000 4.000000 5.500000
+#Branch
+ S 0 0 2.440945 7.000000 4.000000 7.000000
+#Branch Option
+ S 0 0 2.440945 14.000000 4.000000 14.000000
+#MountianDivision
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 24.000000 36.000000 0
+ L3 5019904 0.040000 24.000000 36.000000 0 48.000000 36.000000 0
+ L3 5019904 0.040000 48.000000 36.000000 0 48.000000 0.000000 0
+ L3 5019904 0.040000 48.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "48x36in Lefthand Balloon Module NTLHB4842"
+ P "Normal" 1 0 2 0 3 0 4 0 5
+#FrontMain
+ E -2.440945 4.000000 90.000000
+ E -4.000000 4.000000 270.000000
+#InnerMain
+ E -2.440945 5.500000 90.000000
+ E -4.000000 5.500000 270.000000
+#Branch
+ E -2.440945 7.000000 90.000000
+ E -4.000000 7.000000 270.000000
+#Branch Option
+ E -2.440945 14.000000 90.000000
+ E -4.000000 14.000000 270.000000
+#MountianDivision
+ E -2.440945 20.000000 90.000000
+ E -4.000000 20.000000 270.000000
+#FrontMain
+ S 0 0 -2.440945 4.000000 -4.000000 4.000000
+#InnerMain
+ S 0 0 -2.440945 5.500000 -4.000000 5.500000
+#Branch
+ S 0 0 -2.440945 7.000000 -4.000000 7.000000
+#Branch Option
+ S 0 0 -2.440945 14.000000 -4.000000 14.000000
+#MountianDivision
+ S 0 0 -2.440945 20.000000 -4.000000 20.000000
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 -24.000000 36.000000 0
+ L3 5019904 0.040000 -24.000000 36.000000 0 -48.000000 36.000000 0
+ L3 5019904 0.040000 -48.000000 36.000000 0 -48.000000 0.000000 0
+ L3 5019904 0.040000 -48.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "60x42in Righthand Balloon Module NTRHB6042"
+ P "Normal" 1 0 2 0 3 0 4 0 5
+#FrontMain
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+#InnerMain
+ E 2.440945 5.500000 270.000000
+ E 4.000000 5.500000 90.000000
+#Branch
+ E 2.440945 7.000000 270.000000
+ E 4.000000 7.000000 90.000000
+#Branch Option
+ E 2.440945 14.000000 270.000000
+ E 4.000000 14.000000 90.000000
+#MountianDivision
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+#FrontMain
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+#InnerMain
+ S 0 0 2.440945 5.500000 4.000000 5.500000
+#Branch
+ S 0 0 2.440945 7.000000 4.000000 7.000000
+#Branch Option
+ S 0 0 2.440945 14.000000 4.000000 14.000000
+#MountianDivision
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 30.000000 42.000000 0
+ L3 5019904 0.040000 30.000000 42.000000 0 60.000000 42.000000 0
+ L3 5019904 0.040000 60.000000 42.000000 0 60.000000 0.000000 0
+ L3 5019904 0.040000 60.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "60x42in Lefthand Balloon Module NTLHB6042"
+ P "Normal" 1 0 2 0 3 0 4 0 5
+#FrontMain
+ E -2.440945 4.000000 90.000000
+ E -4.000000 4.000000 270.000000
+#InnerMain
+ E -2.440945 5.500000 90.000000
+ E -4.000000 5.500000 270.000000
+#Branch
+ E -2.440945 7.000000 90.000000
+ E -4.000000 7.000000 270.000000
+#Branch Option
+ E -2.440945 14.000000 90.000000
+ E -4.000000 14.000000 270.000000
+#MountianDivision
+ E -2.440945 20.000000 90.000000
+ E -4.000000 20.000000 270.000000
+#FrontMain
+ S 0 0 -2.440945 4.000000 -4.000000 4.000000
+#InnerMain
+ S 0 0 -2.440945 5.500000 -4.000000 5.500000
+#Branch
+ S 0 0 -2.440945 7.000000 -4.000000 7.000000
+#Branch Option
+ S 0 0 -2.440945 14.000000 -4.000000 14.000000
+#MountianDivision
+ S 0 0 -2.440945 20.000000 -4.000000 20.000000
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 -30.000000 42.000000 0
+ L3 5019904 0.040000 -30.000000 42.000000 0 -60.000000 42.000000 0
+ L3 5019904 0.040000 -60.000000 42.000000 0 -60.000000 0.000000 0
+ L3 5019904 0.040000 -60.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+
+
+SUBCONTENTS NTrak Modules - Transition
+TURNOUT N "Transition Module(Righthand) 48in NTTRH48"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 44.000000 20.000000 270.000000
+ E 45.559055 20.000000 90.000000
+#InnerMain
+ E 2.440945 5.500000 270.000000
+ E 4.000000 5.500000 90.000000
+ E 44.000000 18.500000 270.000000
+ E 45.559055 18.500000 90.000000
+#Branch
+ E 2.440945 7.000000 270.000000
+ E 4.000000 7.000000 90.000000
+ E 44.000000 17.000000 270.000000
+ E 45.559055 17.000000 90.000000
+#Branch Option
+ E 2.440945 14.000000 270.000000
+ E 4.000000 14.000000 90.000000
+ E 44.000000 10.000000 270.000000
+ E 45.559055 10.000000 90.000000
+#MountianDivision
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+ E 44.000000 4.000000 270.000000
+ E 45.559055 4.000000 90.000000
+#FrontMain
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 44.000000 20.000000 45.559055 20.000000
+#InnerMain
+ S 0 0 2.440945 5.500000 4.000000 5.500000
+ S 0 0 44.000000 18.500000 45.559055 18.500000
+#Branch
+ S 0 0 2.440945 7.000000 4.000000 7.000000
+ S 0 0 44.000000 17.000000 45.559055 17.000000
+#Branch Option
+ S 0 0 2.440945 14.000000 4.000000 14.000000
+ S 0 0 44.000000 10.000000 45.559055 10.000000
+#MountianDivision
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 44.000000 4.000000 45.559055 4.000000
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 48.000000 24.000000 0
+ L3 5019904 0.040000 48.000000 24.000000 0 48.000000 0.000000 0
+ L3 5019904 0.040000 48.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "Transition Module(Lefthand) 48in NTTLH48"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E -2.440945 4.000000 90.000000
+ E -4.000000 4.000000 270.000000
+ E -44.000000 20.000000 90.000000
+ E -45.559055 20.000000 270.000000
+#InnerMain
+ E -2.440945 5.500000 90.000000
+ E -4.000000 5.500000 270.000000
+ E -44.000000 18.500000 90.000000
+ E -45.559055 18.500000 270.000000
+#Branch
+ E -2.440945 7.000000 90.000000
+ E -4.000000 7.000000 270.000000
+ E -44.000000 17.000000 90.000000
+ E -45.559055 17.000000 270.000000
+#Branch Option
+ E -2.440945 14.000000 90.000000
+ E -4.000000 14.000000 270.000000
+ E -44.000000 10.000000 90.000000
+ E -45.559055 10.000000 270.000000
+#MountianDivision
+ E -2.440945 20.000000 90.000000
+ E -4.000000 20.000000 270.000000
+ E -44.000000 4.000000 90.000000
+ E -45.559055 4.000000 270.000000
+#FrontMain
+ S 0 0 -2.440945 4.000000 -4.000000 4.000000
+ S 0 0 -44.000000 20.000000 -45.559055 20.000000
+#InnerMain
+ S 0 0 -2.440945 5.500000 -4.000000 5.500000
+ S 0 0 -44.000000 18.500000 -45.559055 18.500000
+#Branch
+ S 0 0 -2.440945 7.000000 -4.000000 7.000000
+ S 0 0 -44.000000 17.000000 -45.559055 17.000000
+#Branch Option
+ S 0 0 -2.440945 14.000000 -4.000000 14.000000
+ S 0 0 -44.000000 10.000000 -45.559055 10.000000
+#MountianDivision
+ S 0 0 -2.440945 20.000000 -4.000000 20.000000
+ S 0 0 -44.000000 4.000000 -45.559055 4.000000
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 -48.000000 24.000000 0
+ L3 5019904 0.040000 -48.000000 24.000000 0 -48.000000 0.000000 0
+ L3 5019904 0.040000 -48.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "Transition Module(Righthand) 72in NTTRH72"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E 2.440945 4.000000 270.000000
+ E 4.000000 4.000000 90.000000
+ E 68.000000 20.000000 270.000000
+ E 69.559055 20.000000 90.000000
+#InnerMain
+ E 2.440945 5.500000 270.000000
+ E 4.000000 5.500000 90.000000
+ E 68.000000 18.500000 270.000000
+ E 69.559055 18.500000 90.000000
+#Branch
+ E 2.440945 7.000000 270.000000
+ E 4.000000 7.000000 90.000000
+ E 68.000000 17.000000 270.000000
+ E 69.559055 17.000000 90.000000
+#Branch Option
+ E 2.440945 14.000000 270.000000
+ E 4.000000 14.000000 90.000000
+ E 68.000000 10.000000 270.000000
+ E 69.559055 10.000000 90.000000
+#MountianDivision
+ E 2.440945 20.000000 270.000000
+ E 4.000000 20.000000 90.000000
+ E 68.000000 4.000000 270.000000
+ E 69.559055 4.000000 90.000000
+#FrontMain
+ S 0 0 2.440945 4.000000 4.000000 4.000000
+ S 0 0 68.000000 20.000000 69.559055 20.000000
+#InnerMain
+ S 0 0 2.440945 5.500000 4.000000 5.500000
+ S 0 0 68.000000 18.500000 69.559055 18.500000
+#Branch
+ S 0 0 2.440945 7.000000 4.000000 7.000000
+ S 0 0 68.000000 17.000000 69.559055 17.000000
+#Branch Option
+ S 0 0 2.440945 14.000000 4.000000 14.000000
+ S 0 0 68.000000 10.000000 69.559055 10.000000
+#MountianDivision
+ S 0 0 2.440945 20.000000 4.000000 20.000000
+ S 0 0 68.000000 4.000000 69.559055 4.000000
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 72.000000 24.000000 0
+ L3 5019904 0.040000 72.000000 24.000000 0 72.000000 0.000000 0
+ L3 5019904 0.040000 72.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
+TURNOUT N "Transition Module(Lefthand) 72in NTTLH72"
+ P "Normal" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
+#FrontMain
+ E -2.440945 4.000000 90.000000
+ E -4.000000 4.000000 270.000000
+ E -68.000000 20.000000 90.000000
+ E -69.559055 20.000000 270.000000
+#InnerMain
+ E -2.440945 5.500000 90.000000
+ E -4.000000 5.500000 270.000000
+ E -68.000000 18.500000 90.000000
+ E -69.559055 18.500000 270.000000
+#Branch
+ E -2.440945 7.000000 90.000000
+ E -4.000000 7.000000 270.000000
+ E -68.000000 17.000000 90.000000
+ E -69.559055 17.000000 270.000000
+#Branch Option
+ E -2.440945 14.000000 90.000000
+ E -4.000000 14.000000 270.000000
+ E -68.000000 10.000000 90.000000
+ E -69.559055 10.000000 270.000000
+#MountianDivision
+ E -2.440945 20.000000 90.000000
+ E -4.000000 20.000000 270.000000
+ E -68.000000 4.000000 90.000000
+ E -69.559055 4.000000 270.000000
+#FrontMain
+ S 0 0 -2.440945 4.000000 -4.000000 4.000000
+ S 0 0 -68.000000 20.000000 -69.559055 20.000000
+#InnerMain
+ S 0 0 -2.440945 5.500000 -4.000000 5.500000
+ S 0 0 -68.000000 18.500000 -69.559055 18.500000
+#Branch
+ S 0 0 -2.440945 7.000000 -4.000000 7.000000
+ S 0 0 -68.000000 17.000000 -69.559055 17.000000
+#Branch Option
+ S 0 0 -2.440945 14.000000 -4.000000 14.000000
+ S 0 0 -68.000000 10.000000 -69.559055 10.000000
+#MountianDivision
+ S 0 0 -2.440945 20.000000 -4.000000 20.000000
+ S 0 0 -68.000000 4.000000 -69.559055 4.000000
+#ModuleBase
+ L3 5019904 0.040000 0.000000 0.000000 0 0.000000 24.000000 0
+ L3 5019904 0.040000 0.000000 24.000000 0 -72.000000 24.000000 0
+ L3 5019904 0.040000 -72.000000 24.000000 0 -72.000000 0.000000 0
+ L3 5019904 0.040000 -72.000000 0.000000 0 0.000000 0.000000 0
+ END$SEGS
diff --git a/app/lib/params/Newqida.xtp b/app/lib/params/Newqida.xtp
index 8abac3d..92d1dd3 100644
--- a/app/lib/params/Newqida.xtp
+++ b/app/lib/params/Newqida.xtp
@@ -8,14 +8,14 @@ TURNOUT G "Newqida Straight 300mm 78010"
END
SUBCONTENTS Curve Track
-TURNOUT G "Newqida Curved 650mm 30� 78020"
+TURNOUT G "Newqida Curved 650mm 30° 78020"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 12.273613 3.288702 60.000000
C 0 0.000000 -24.547244 0.000033 24.547244 150.000076 30.000000
END
-TURNOUT G "Newqida Curved 650mm 15� Custom"
+TURNOUT G "Newqida Curved 650mm 15° Custom"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 6.353289 0.836426 75.000000
diff --git a/app/lib/params/O-LionelFasTrack.xtp b/app/lib/params/O-LionelFasTrack.xtp
new file mode 100644
index 0000000..15e27b0
--- /dev/null
+++ b/app/lib/params/O-LionelFasTrack.xtp
@@ -0,0 +1,573 @@
+CONTENTS Lionel FasTrack O Scale
+SUBCONTENTS Lionel FasTrack - Straight Track
+TURNOUT O "Lionel FasTrack Straight 30 6-12042"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 30.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 30.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 30.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 30.000000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack Straight 10 6-12014"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 10.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 10.000000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack Straight 5 6-12024"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 5.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 5.000000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack Straight 4.5 6-12025"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.500000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.500000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 4.500000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 4.500000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack Straight 1.75 6-12026"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.750000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.7500000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 1.7500000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 1.7500000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack Straight 1.375 6-12073"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.375000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.375000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 1.375000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 1.375000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack Straight 1.375 w/o Roadbed 6-12074"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.375000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.375000 0.000000
+ END$SEGS
+
+SUBCONTENTS Lionel FasTrack - Curve O96 Track
+TURNOUT O "Lionel FasTrack Curved O96 11.25d 6-81250"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.364335 -0.922307 101.250000
+ C 0 0 48.000000 0.000000 -48.000000 0.000000 11.250000
+ A 11579568 0.053333 46.312500 0.000000 -48.000000 0.000000 11.250000
+ A 11579568 0.053333 49.687500 0.000000 -48.000000 0.000000 11.250000
+ END$SEGS
+
+SUBCONTENTS Lionel FasTrack - Curve O84 Track
+TURNOUT O "Lionel FasTrack Curved O84 11.25d 6-12061"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.193794 -0.807018 101.250000
+ C 0 0 42.000000 0.000000 -42.000000 0.000000 11.250000
+ A 11579568 0.053333 40.312500 0.000000 -42.000000 0.000000 11.250000
+ A 11579568 0.053333 43.687500 0.000000 -42.000000 0.000000 11.250000
+ END$SEGS
+
+SUBCONTENTS Lionel FasTrack - Curve O72 Track
+TURNOUT O "Lionel FasTrack Curved O72 11.25d 6-12055"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.023252 -0.691730 101.250000
+ C 0 0 36.000000 0.000000 -36.000000 0.000000 11.250000
+ A 11579568 0.053333 34.312500 0.000000 -36.000000 0.000000 11.250000
+ A 11579568 0.053333 37.687500 0.000000 -36.000000 0.000000 11.250000
+ END$SEGS
+TURNOUT O "Lionel FasTrack Curved O72 22.5d 6-12041"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 13.776604 -2.740337 112.500000
+ C 0 0 36.000000 0.000000 -36.000000 0.000000 22.500000
+ A 11579568 0.053333 34.312500 0.000000 -36.000000 0.000000 22.500000
+ A 11579568 0.053333 37.687500 0.000000 -36.000000 0.000000 22.500000
+ END$SEGS
+
+SUBCONTENTS Lionel FasTrack - Curve O60 Track
+TURNOUT O "Lionel FasTrack Curved O60 22.5d 6-12056"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.480503 -2.283614 112.500000
+ C 0 0 30.000000 0.000000 -30.000000 0.000000 22.500000
+ A 11579568 0.053333 28.312500 0.000000 -30.000000 0.000000 22.500000
+ A 11579568 0.053333 31.687500 0.000000 -30.000000 0.000000 22.500000
+ END$SEGS
+
+SUBCONTENTS Lionel FasTrack - Curve O48 Track
+TURNOUT O "Lionel FasTrack Curved O48 30.0d 6-12043"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.000000 -3.215390 120.000000
+ C 0 0 24.000000 0.000000 -24.000000 0.000000 30.000000
+ A 11579568 0.053333 22.312500 0.000000 -24.000000 0.000000 30.000000
+ A 11579568 0.053333 25.687500 0.000000 -24.000000 0.000000 30.000000
+ END$SEGS
+TURNOUT O "Lionel FasTrack Curved O48 15.0d 6-16834"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.211657 -0.817780 105.000000
+ C 0 0 24.000000 0.000000 -24.000000 0.000000 15.000000
+ A 11579568 0.053333 22.312500 0.000000 -24.000000 0.000000 15.000000
+ A 11579568 0.053333 25.687500 0.000000 -24.000000 0.000000 15.000000
+ END$SEGS
+TURNOUT O "Lionel FasTrack Curved O48 7.5d 6-16835"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.132629 -0.205323 97.500000
+ C 0 0 24.000000 0.000000 -24.000000 0.000000 7.500000
+ A 11579568 0.053333 22.312500 0.000000 -24.000000 0.000000 7.500000
+ A 11579568 0.053333 25.687500 0.000000 -24.000000 0.000000 7.500000
+ END$SEGS
+
+SUBCONTENTS Lionel FasTrack - Curve O36 Track
+TURNOUT O "Lionel FasTrack Curved O36 11.25d 6-12023"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.511626 -0.345865 101.250000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 11.250000
+ A 11579568 0.053333 16.312500 0.000000 -18.000000 0.000000 11.250000
+ A 11579568 0.053333 19.687500 0.000000 -18.000000 0.000000 11.250000
+ END$SEGS
+TURNOUT O "Lionel FasTrack Curved O36 22.5d 6-12022"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.888302 -1.370168 112.500000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 22.500000
+ A 11579568 0.053333 16.312500 0.000000 -18.000000 0.000000 22.500000
+ A 11579568 0.053333 19.687500 0.000000 -18.000000 0.000000 22.500000
+ END$SEGS
+TURNOUT O "Lionel FasTrack Curved O36 45.0d 6-12015"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.727922 -5.272078 135.000000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 45.000000
+ A 11579568 0.053333 16.312500 0.000000 -18.000000 0.000000 45.000000
+ A 11579568 0.053333 19.687500 0.000000 -18.000000 0.000000 45.000000
+ END$SEGS
+
+SUBCONTENTS Lionel FasTrack - Curve O31 Track
+TURNOUT O "Lionel FasTrack Curved O31 45.0d 6-37103"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.960155 -4.539845 135.000000
+ C 0 0 15.500000 0.000000 -15.500000 0.000000 45.000000
+ A 11579568 0.053333 13.812500 0.000000 -15.500000 0.000000 45.000000
+ A 11579568 0.053333 17.187500 0.000000 -15.500000 0.000000 45.000000
+ END$SEGS
+TURNOUT O "Lionel FasTrack Curved O31 11.25d 6-81662"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.023900 -0.297828 101.250000
+ C 0 0 15.500000 0.000000 -15.500000 0.000000 11.250000
+ A 11579568 0.053333 13.812500 0.000000 -15.500000 0.000000 11.250000
+ A 11579568 0.053333 17.187500 0.000000 -15.500000 0.000000 11.250000
+ END$SEGS
+
+
+SUBCONTENTS Lionel FasTrack - O31 Turnout
+TURNOUT O "Lionel FasTrack O31 Left Switch 45.0d 6-81251/81252"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ E 10.960155 4.539845 45.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ C 0 0 15.500000 0.000000 15.500000 135.000000 45.000000
+ L 11579568 0.053333 0.000000 -1.687500 10.000000 -1.687500
+ A 11579568 0.053333 13.812500 0.000000 15.500000 135.000000 45.000000
+ A 11579568 0.053333 17.187500 0.000000 15.500000 135.000000 8.000000
+ END$SEGS
+TURNOUT O "Lionel FasTrack O31 Right Switch 45.0d 6-81253/81254"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ E 10.960155 -4.539845 135.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ C 0 0 15.500000 0.000000 -15.500000 0.000000 45.000000
+ L 11579568 0.053333 0.000000 1.687500 10.000000 1.687500
+ A 11579568 0.053333 13.812500 0.000000 -15.500000 0.000000 45.000000
+ A 11579568 0.053333 17.187500 0.000000 -15.500000 37.000000 8.000000
+ END$SEGS
+
+SUBCONTENTS Lionel FasTrack - O36 Turnout
+TURNOUT O "Lionel FasTrack O36 Left Switch 33.75d 6-12017/81947"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ E 10.000264 3.033547 56.250000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ C 0 0 18.000000 0.000000 18.000000 146.250000 33.750000
+ L 11579568 0.053333 0.000000 -1.687500 10.000000 -1.687500
+ A 11579568 0.053333 16.312500 0.000000 18.000000 146.250000 33.750000
+ END$SEGS
+TURNOUT O "Lionel FasTrack O36 Curve(L) 11.25d (incl w/ 6-12017/81947)"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.511626 0.345865 78.750000
+ C 0 0 18.000000 0.000000 18.000000 168.750000 11.250000
+ A 11579568 0.053333 16.312500 0.000000 18.000000 168.750000 11.250000
+ A 11579568 0.053333 19.687500 0.000000 18.000000 168.750000 11.250000
+ END$SEGS
+TURNOUT O "Lionel FasTrack O36 Curve(R) 11.25d (incl w/ 6-12018/84946)"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.511626 -0.345865 101.250000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 11.250000
+ A 11579568 0.053333 16.312500 0.000000 -18.000000 0.000000 11.250000
+ A 11579568 0.053333 19.687500 0.000000 -18.000000 0.000000 11.250000
+ END$SEGS
+TURNOUT O "Lionel FasTrack O36 Right Switch 33.75d 6-12018/84946"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ E 10.000264 -3.033547 123.750000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ C 0 0 18.000000 0.000000 -18.000000 0.000000 33.750000
+ L 11579568 0.053333 0.000000 1.687500 10.000000 1.687500
+ A 11579568 0.053333 16.312500 0.000000 -18.000000 0.000000 33.750000
+ END$SEGS
+
+SUBCONTENTS Lionel FasTrack - O48 Turnout
+TURNOUT O "Lionel FasTrack O48 Left Switch 30d 6-81949"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 15.000000 0.000000 90.000000
+ E 12.000000 3.215390 60.000000
+ S 0 0 0.000000 0.000000 15.000000 0.000000
+ C 0 0 -24.000000 0.000000 24.000000 150.000000 30.000000
+ L 11579568 0.053333 0.000000 -1.687500 15.000000 -1.687500
+ L 11579568 0.053333 12.812500 1.687500 15.000000 1.687500
+ A 11579568 0.053333 22.312500 0.000000 24.000000 150.000000 30.000000
+ END$SEGS
+TURNOUT O "Lionel FasTrack O48 Right Switch 30d 6-81948"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 15.000000 0.000000 90.000000
+ E 12.000000 -3.215390 120.000000
+ S 0 0 0.000000 0.000000 15.000000 0.000000
+ C 0 0 24.000000 0.000000 -24.000000 0.000000 30.000000
+ L 11579568 0.053333 0.000000 1.687500 15.000000 1.687500
+ L 11579568 0.053333 12.812500 -1.687500 15.000000 -1.687500
+ A 11579568 0.053333 22.312500 0.000000 -24.000000 0.000000 30.000000
+ END$SEGS
+
+SUBCONTENTS Lionel FasTrack - O60 Turnout
+TURNOUT O "Lionel FasTrack O60 Left Switch 22.5d 6-81951"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 13.125000 0.000000 90.000000
+ E 11.480503 2.283614 67.50000
+ S 0 0 0.000000 0.000000 13.125000 0.000000
+ C 0 0 -30.000000 0.000000 30.000000 157.500000 22.500000
+ L 11579568 0.053333 0.000000 -1.687500 13.125000 -1.687500
+ A 11579568 0.053333 28.312500 0.000000 30.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT O "Lionel FasTrack O60 Right Switch 22.5d 6-81950"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 13.125000 0.000000 90.000000
+ E 11.480503 -2.283614 112.50000
+ S 0 0 0.000000 0.000000 13.125000 0.000000
+ C 0 0 30.000000 0.000000 -30.000000 0.000000 22.500000
+ L 11579568 0.053333 0.000000 1.687500 13.125000 1.687500
+ A 11579568 0.053333 28.312500 0.000000 -30.000000 0.000000 22.500000
+ END$SEGS
+
+SUBCONTENTS Lionel FasTrack - O72 Turnout
+TURNOUT O "Lionel FasTrack O72 Left Switch 22.5d 6-81953"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 14.250000 0.000000 90.000000
+ E 13.776604 2.740337 67.50000
+ S 0 0 0.000000 0.000000 14.250000 0.000000
+ C 0 0 36.000000 0.000000 36.000000 157.500000 22.500000
+ L 11579568 0.053333 0.000000 -1.687500 14.250000 -1.687500
+ A 11579568 0.053333 34.312500 0.000000 36.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT O "Lionel FasTrack O72 Right Switch 22.5d 6-81952"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 14.250000 0.000000 90.000000
+ E 13.776604 -2.740337 112.50000
+ S 0 0 0.000000 0.000000 14.250000 0.000000
+ C 0 0 36.000000 0.000000 -36.000000 0.000000 22.500000
+ L 11579568 0.053333 0.000000 1.687500 14.250000 1.687500
+ A 11579568 0.053333 34.312500 0.000000 -36.000000 0.000000 22.500000
+ END$SEGS
+TURNOUT O "Lionel FasTrack O72 WYE Switch 22.5d 6-81954"
+ P "Normal" 1 3
+ P "Reverse" 2 4
+ E 0.000000 0.000000 270.000000
+ E 12.000000 1.681667 78.750000
+ E 12.000000 -1.681667 101.250000
+ C 0 0 -36.000000 0.000000 36.000000 168.750000 11.250000
+ C 0 0 36.000000 0.000000 -36.000000 0.000000 11.250000
+ S 0 0 7.023252 0.691730 12.000000 1.681667
+ S 0 0 7.023252 -0.691730 12.000000 -1.681667
+ A 11579568 0.053333 34.312500 0.000000 -36.000000 0.000000 11.250000
+ A 11579568 0.053333 34.312500 0.000000 36.000000 168.750000 11.250000
+ L 11579568 0.053333 6.694037 2.346805 11.75000 3.352499
+ L 11579568 0.053333 6.694037 -2.346805 11.75000 -3.352499
+ END$SEGS
+
+SUBCONTENTS Lionel FasTrack - Misc. Track
+TURNOUT O "Lionel FasTrack Terminal Section 6-37110"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 10.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 10.000000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack Transistion Piece 6-12040"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 5.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 5.000000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack Operating Track 6-12054"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 10.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 10.000000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack Isolate Section 5in 6-12060"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 5.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 5.000000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack Acc. Activation ExtEND$SEGSer 6-12027"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 10.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 10.000000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack Acc. Activation Pack 10in Insulated Section 6-12029A"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 10.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 10.000000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack Acc. Activation Pack 5in Isolate Section 6-12029B"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 5.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 5.000000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack IR Sensor Track 6-81294"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 5.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 5.000000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack Uncoupler Track 5in 6-12020"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 5.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 5.000000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack Uncoupler Track 10in 6-12054"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 10.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 10.000000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack Earthen Bumper 6-12059"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 3.625000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 3.375000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 3.375000 -1.687500
+ F 12566463 0.000000 4
+ 1.812500 1.687500 0
+ 1.812500 -1.687500 0
+ 3.500000 -1.687500 0
+ 3.500000 1.687500 0
+ END$SEGS
+TURNOUT O "Lionel FasTrack Lighted Bumper 6-12035"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 5.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 5.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 5.000000 -1.687500
+ L 00000000 0.100000 3.000000 0.000000 5.000000 0.625000
+ L 00000000 0.100000 3.000000 0.000000 5.000000 -0.625000
+ L 00000000 0.100000 2.500000 0.625000 3.000000 0.000000
+ L 00000000 0.100000 2.500000 -0.625000 3.000000 0.000000
+ F 00000000 0.000000 4
+ 2.750000 0.250000 0
+ 2.750000 -0.250000 0
+ 3.250000 -0.250000 0
+ 3.250000 0.250000 0
+ END$SEGS
+TURNOUT O "Lionel FasTrack Grade Crossing 6-12036"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 10.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 10.000000 -1.687500
+ F 12566463 0.000000 6
+ 1.875000 -1.687500 0
+ 1.875000 -3.375000 0
+ 8.125000 -3.375000 0
+ 8.125000 -1.687500 0
+ 7.312500 -0.812500 0
+ 2.687500 -0.812500 0
+ F 12566463 0.000000 4
+ 2.687500 0.550000 0
+ 2.687500 -0.550000 0
+ 7.312500 -0.550000 0
+ 7.312500 0.550000 0
+ F 12566463 0.000000 6
+ 1.875000 1.687500 0
+ 1.875000 3.375000 0
+ 8.125000 3.375000 0
+ 8.125000 1.687500 0
+ 7.312500 0.812500 0
+ 2.687500 0.812500 0
+ END$SEGS
+TURNOUT O "Lionel FasTrack Grade Crossing w/Gate & Flasher 6-12062"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 10.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 10.000000 -1.687500
+ F 12566463 0.000000 6
+ 1.875000 -1.687500 0
+ 1.875000 -3.375000 0
+ 8.125000 -3.375000 0
+ 8.125000 -1.687500 0
+ 7.312500 -0.812500 0
+ 2.687500 -0.812500 0
+ F 12566463 0.000000 4
+ 2.687500 0.550000 0
+ 2.687500 -0.550000 0
+ 7.312500 -0.550000 0
+ 7.312500 0.550000 0
+ F 12566463 0.000000 6
+ 1.875000 1.687500 0
+ 1.875000 3.375000 0
+ 8.125000 3.375000 0
+ 8.125000 1.687500 0
+ 7.312500 0.812500 0
+ 2.687500 0.812500 0
+ END$SEGS
+TURNOUT O "Lionel FasTrack Grade Crossing w/Flasher 6-12052"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ L 11579568 0.053333 0.000000 1.687500 10.000000 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 10.000000 -1.687500
+ F 12566463 0.000000 6
+ 1.875000 -1.687500 0
+ 1.875000 -3.375000 0
+ 8.125000 -3.375000 0
+ 8.125000 -1.687500 0
+ 7.312500 -0.812500 0
+ 2.687500 -0.812500 0
+ F 12566463 0.000000 4
+ 2.687500 0.550000 0
+ 2.687500 -0.550000 0
+ 7.312500 -0.550000 0
+ 7.312500 0.550000 0
+ F 12566463 0.000000 6
+ 1.875000 1.687500 0
+ 1.875000 3.375000 0
+ 8.125000 3.375000 0
+ 8.125000 1.687500 0
+ 7.312500 0.812500 0
+ 2.687500 0.812500 0
+ END$SEGS
+
+
+SUBCONTENTS Lionel FasTrack - Crossings
+TURNOUT O "Lionel FasTrack 90 Cross 6-12019"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 6.000000 0.000000 90.000000
+ E 3.000000 3.000000 0.000000
+ E 3.000000 -3.000000 180.000000
+ S 0 0 0.000000 0.000000 6.000000 0.000000
+ S 0 0 3.000000 -3.000000 3.000000 3.000000
+ L 11579568 0.053333 0.000000 1.687500 1.312500 1.687500
+ L 11579568 0.053333 0.000000 -1.687500 1.312500 -1.687500
+ L 11579568 0.053333 4.687500 1.687500 6.000000 1.687500
+ L 11579568 0.053333 4.687500 -1.687500 6.000000 -1.687500
+ L 11579568 0.053333 1.312500 3.000000 1.312500 1.687500
+ L 11579568 0.053333 4.687500 3.000000 4.687500 1.687500
+ L 11579568 0.053333 1.312500 -3.000000 1.312500 -1.687500
+ L 11579568 0.053333 4.687500 -3.000000 4.687500 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack 45 Cross 6-12051"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ E 8.535534 3.535534 45.000000
+ E 1.464466 -3.535534 225.000000
+ S 0 0 0.000000 0.000000 10.000000 0.000000
+ S 0 0 1.464466 -3.535534 8.535534 3.535534
+ L 11579568 0.053333 0.000000 1.687500 4.301000 1.687500
+ L 11579568 0.053333 4.301000 1.687500 7.342300 4.728800
+ L 11579568 0.053333 9.074000 1.687500 10.000000 1.687500
+ L 11579568 0.053333 9.074000 1.687500 9.728800 2.342300
+ L 11579568 0.053333 0.000000 -1.687500 0.926000 -1.687500
+ L 11579568 0.053333 0.926000 -1.687500 0.271200 -2.342300
+ L 11579568 0.053333 5.699000 -1.687500 10.000000 -1.687500
+ L 11579568 0.053333 2.657700 -4.728800 5.699000 -1.687500
+ END$SEGS
+TURNOUT O "Lionel FasTrack 22.5 Cross 6-12050"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 17.000000 0.000000 90.000000
+ E 16.352976 3.252809 67.500000
+ E 0.647024 -3.252809 247.500000
+ S 0 0 0.000000 0.000000 17.000000 0.000000
+ S 0 0 0.647024 -3.252809 16.352976 3.252809
+ L 11579568 0.053333 0.000000 1.687500 8.164300 1.687500
+ L 11579568 0.053333 8.164300 1.687500 15.707200 4.811900
+ L 11579568 0.053333 1.292800 -4.811900 8.835700 -1.687500
+ L 11579568 0.053333 8.835700 -1.687500 17.000000 -1.687500
+ END$SEGS
+
+
diff --git a/app/lib/params/O-Peco-Bullhead.xtp b/app/lib/params/O-Peco-Bullhead.xtp
new file mode 100644
index 0000000..a95ce0d
--- /dev/null
+++ b/app/lib/params/O-Peco-Bullhead.xtp
@@ -0,0 +1,117 @@
+CONTENTS Peco O Scale Bullhead Turnouts
+SUBCONTENTS Peco O Scale Bullhead Tracks - Tracks
+TURNOUT O "Peco O Setrack Wood-tie Flex 914mm SL-700BH"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 35.984252 0.000000 90.000000
+ S 0 0 0.000000 0.000000 35.984252 0.000000
+ END$SEGS
+
+SUBCONTENTS Peco O Scale Bullhead Tracks - Turnouts
+TURNOUT O "Peco Lefthand Medium Turnout SLE-792BH"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 16.377953 0.000000 90.000000
+ E 16.248701 1.564624 82.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ S 0 0.000000 1.250000 0.000000 16.377953 0.000000
+ C 0 0.000000 -55.283841 1.250000 55.283841 172.000000 8.000000
+ S 0 0.000000 8.944024 0.538019 16.248701 1.564624
+ END$SEGS
+TURNOUT O "Peco Righthand Medium Turnout SLE-791BH"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 16.377953 0.000000 90.000000
+ E 16.248701 -1.564624 98.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 -0.000000
+ S 0 0.000000 1.250000 -0.000000 16.377953 0.000000
+ C 0 0.000000 55.283841 1.250000 -55.283841 0.000000 8.000000
+ S 0 0.000000 8.944024 -0.538019 16.248701 -1.564624
+ END$SEGS
+TURNOUT O "Peco Lefthand Curve Turnout SLE-787BH"
+ P "Normal" 1 2
+ P "Reverse" 1 3
+ E 0.000000 0.000000 270.000000
+ E 20.200784 1.058963 83.600000
+ E 19.960539 2.362447 75.600000
+ S 0 0.000000 0.000000 0.000000 1.259843 0.000000
+ C 0 0.000000 -169.921260 1.259843 169.921260 173.600000 6.400000
+ C 0 0.000000 -75.196850 1.259843 75.196850 165.600000 14.400000
+ END$SEGS
+TURNOUT O "Peco Righthand Curve Turnout SLE-786BH"
+ P "Normal" 1 2
+ P "Reverse" 1 3
+ E 0.000000 0.000000 270.000000
+ E 20.200784 -1.058963 96.400000
+ E 19.960539 -2.362447 104.400000
+ S 0 0.000000 0.000000 0.000000 1.259843 0.000000
+ C 0 0.000000 169.921260 1.259843 -169.921260 0.000000 6.400000
+ C 0 0.000000 75.196850 1.259843 -75.196850 0.000000 14.400000
+ END$SEGS
+
+SUBCONTENTS Peco O Scale Bullhead Tracks - Wyes
+TURNOUT O "Peco Medium Radius Y Turnout SLE-797BH"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 15.039370 0.782312 86.000000
+ E 15.039370 -0.782312 94.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ C 0 0.000000 -74.505437 1.250000 74.505437 176.000000 4.000000
+ S 0 0.000000 6.447237 0.181491 15.039370 0.782312
+ C 0 0.000000 74.505437 1.250000 -74.505437 0.000000 4.000000
+ S 0 0.000000 6.447237 -0.181491 15.039370 -0.782312
+ END$SEGS
+
+SUBCONTENTS Peco O Scale Bullhead Tracks - Crossings
+TURNOUT O "Peco Long Crossing SLE-794BH"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 22.526045 0.000000 90.000000
+ E 0.109611 1.567510 278.000000
+ E 22.416434 -1.567510 98.000000
+ S 0 0.000000 0.000000 0.000000 22.526045 0.000000
+ S 0 0.000000 0.109611 1.567510 22.416434 -1.567510
+ END$SEGS
+
+SUBCONTENTS Peco O Scale Bullhead Tracks - Slips
+TURNOUT O "Peco Double Slip SL-790BH" 512
+ P "Cross1" 1 2 3
+ P "Cross2" 4 5 6
+ P "Slip1" 1 7 6
+ P "Slip2" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 22.526045 0.000000 90.000000
+ E 0.109611 1.567510 278.000000
+ E 22.416434 -1.567510 98.000000
+ S 0 0.000000 0.000000 0.000000 2.500000 0.000000
+ S 0 0.000000 2.500000 0.000000 20.026045 0.000000
+ S 0 0.000000 20.026045 0.000000 22.526045 0.000000
+ S 0 0.000000 0.109611 1.567510 2.585281 1.219577
+ S 0 0.000000 2.585281 1.219577 19.940764 -1.219577
+ S 0 0.000000 19.940764 -1.219577 22.416434 -1.567510
+ C 0 0.000000 125.317060 2.500000 -125.317060 0.000000 8.000000
+ C 0 0.000000 -125.317060 20.026045 125.317060 180.000000 8.000000
+ END$SEGS
+
+SUBCONTENTS Peco O Scale Bullhead Tracks - Catch Points
+TURNOUT O "Peco Lefthand Catch Point SLE-785BH"
+ P "Normal" 1 2
+ P "Reverse" 1 3
+ E 0.000000 0.000000 270.000000
+ E 8.267717 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ S 0 0.000000 1.250000 0.000000 8.267717 0.000000
+ S 0 0.000000 1.250000 0.000000 8.267717 0.375000
+ END$SEGS
+TURNOUT O "Peco Righthand Catch Point SLE-784BH"
+ P "Normal" 1 2
+ P "Reverse" 1 3
+ E 0.000000 0.000000 270.000000
+ E 8.267717 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ S 0 0.000000 1.250000 0.000000 8.267717 0.000000
+ S 0 0.000000 1.250000 0.000000 8.267717 -0.375000
+ END$SEGS
diff --git a/app/lib/params/O-Peco-Code 124 Setrack.xtp b/app/lib/params/O-Peco-Code 124 Setrack.xtp
new file mode 100644
index 0000000..e602f1f
--- /dev/null
+++ b/app/lib/params/O-Peco-Code 124 Setrack.xtp
@@ -0,0 +1,49 @@
+CONTENTS Peco O Scale Code 124 Setrack
+
+SUBCONTENTS Peco O Scale Code 124 Setrack - Straight Tracks
+TURNOUT O "Peco O Setrack Straight 394mm ST-700"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 15.511811 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 15.511811 0.000000
+ END$SEGS
+TURNOUT O "Peco O Setrack Wired Straight 394mm ST-702"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 15.511811 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 15.511811 0.000000
+ L3 16711680 0.026667 7.555906 -0.625000 0 7.555906 -0.825000 0
+ L3 16711680 0.026667 7.555906 -0.825000 0 7.655906 -0.925000 0
+ L3 16711680 0.026667 7.555906 -0.825000 0 7.455906 -0.925000 0
+ L3 0 0.026667 7.955906 -0.625000 0 7.955906 -0.825000 0
+ L3 0 0.026667 7.955906 -0.825000 0 8.055906 -0.925000 0
+ L3 0 0.026667 7.955906 -0.825000 0 7.855906 -0.925000 0
+ END$SEGS
+
+SUBCONTENTS Peco O Scale Code 124 Setrack - Curve Tracks
+TURNOUT O "Peco O Setrack Curved R1028mm 22.5d ST-725"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 15.488133 -3.080781 112.500000
+ C 0 0.000000 40.472441 0.000000 -40.472441 0.000000 22.500000
+ END$SEGS
+
+SUBCONTENTS Peco O Scale Code 124 Setrack - Turnouts
+TURNOUT O "Peco O Setrack Righthand Turnout ST-U750"
+ P "Normal" 1
+ P "Route" 2
+ E 0.000000 0.000000 270.000000
+ E 15.511811 0.000000 90.000000
+ E 15.488133 -3.080781 112.500000
+ S 0 0 0.000000 0.000000 15.511811 0.000000
+ C 0 0.000000 40.472441 0.000000 -40.472441 0.000000 22.500000
+ END$SEGS
+TURNOUT O "Peco O Setrack Lefthand Turnout ST-U751"
+ P "Normal" 1
+ P "Route" 2
+ E 0.000000 0.000000 270.000000
+ E 15.511811 0.000000 90.000000
+ E 15.488133 3.080781 67.500000
+ S 0 0 0.000000 0.000000 15.511811 0.000000
+ C 0 0.000000 40.472441 0.000000 40.472441 157.500000 22.500000
+ END$SEGS
diff --git a/app/lib/params/O-Peco-Code 143 FlatBottom.xtp b/app/lib/params/O-Peco-Code 143 FlatBottom.xtp
new file mode 100644
index 0000000..274fb12
--- /dev/null
+++ b/app/lib/params/O-Peco-Code 143 FlatBottom.xtp
@@ -0,0 +1,39 @@
+CONTENTS Peco O Scale Code 143 Flatbottom Track
+
+SUBCONTENTS Peco O Scale Code 143 Flatbottom - Straight Tracks
+TURNOUT O "Peco O Setrack Wood-tie Straight 914mm SL-700FB"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 35.984252 0.000000 90.000000
+ S 0 0 0.000000 0.000000 35.984252 0.000000
+ END$SEGS
+TURNOUT O "Peco O Setrack Concrete-tie Straight 914mm SL-702FB"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 35.984252 0.000000 90.000000
+ S 0 0 0.000000 0.000000 35.984252 0.000000
+ END$SEGS
+
+SUBCONTENTS Peco O Scale Code 143 Flatbottom - Turnouts
+TURNOUT O "Peco LH Medium Turnout SLE-792FB"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 16.377953 0.000000 90.000000
+ E 16.248701 1.564624 82.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ S 0 0.000000 1.250000 0.000000 16.377953 0.000000
+ C 0 0.000000 -55.283841 1.250000 55.283841 172.000000 8.000000
+ S 0 0.000000 8.944024 0.538019 16.248701 1.564624
+ END$SEGS
+TURNOUT O "Peco RH Medium Turnout SLE-791FB"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 16.377953 0.000000 90.000000
+ E 16.248701 -1.564624 98.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 -0.000000
+ S 0 0.000000 1.250000 -0.000000 16.377953 0.000000
+ C 0 0.000000 55.283841 1.250000 -55.283841 0.000000 8.000000
+ S 0 0.000000 8.944024 -0.538019 16.248701 -1.564624
+ END$SEGS
diff --git a/app/lib/params/O-Ross.xtp b/app/lib/params/O-Ross.xtp
index e36ce17..279dee7 100644
--- a/app/lib/params/O-Ross.xtp
+++ b/app/lib/params/O-Ross.xtp
@@ -1,1752 +1,1774 @@
-CONTENTS Ross O Scale
-
-SUBCONTENTS Ross - Premiere Line Switches
-TURNOUT O "Ross #4 Left-Hand 201"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.646000 0.000000 90.000000
- E 14.125000 2.000000 76.000000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- S 0 0.000000 1.250000 0.000000 14.646000 0.000000
- C 0 0.000000 -39.528692 1.250052 39.528692 165.999924 14.000152
- S 0 0.000000 10.812950 1.174194 14.125000 2.000000
- END
-TURNOUT O "Ross #4 Right-Hand 200"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.646000 0.000000 90.000000
- E 14.125000 -2.000000 104.000000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- S 0 0.000000 1.250000 0.000000 14.646000 0.000000
- C 0 0.000000 39.528692 1.249843 -39.528692 0.000076 14.000152
- S 0 0.000000 10.812950 -1.174194 14.125000 -2.000000
- END
-TURNOUT O "Ross #6 Left-Hand 211"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 19.100000 0.000000 90.000000
- E 19.625000 2.000000 80.500000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- S 0 0.000000 1.250000 0.000000 19.100000 0.000000
- C 0 0.000000 -77.305897 1.250103 77.305897 170.499924 9.500152
- S 0 0.000000 14.009345 1.060236 19.625000 2.000000
- END
-TURNOUT O "Ross #6 Right-Hand 210"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 19.100000 0.000000 90.000000
- E 19.625000 -2.000000 99.500000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- S 0 0.000000 1.250000 0.000000 19.100000 0.000000
- C 0 0.000000 77.305897 1.249692 -77.305897 0.000076 9.500152
- S 0 0.000000 14.009345 -1.060236 19.625000 -2.000000
- END
-TURNOUT O "Ross #8 Left-Hand 221"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 23.560000 0.000000 90.000000
- E 23.937500 2.000000 83.000000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- S 0 0.000000 1.250000 0.000000 23.560000 0.000000
- C 0 0.000000 -104.623706 1.250139 104.623706 172.999924 7.000152
- S 0 0.000000 14.000687 0.779882 23.937500 2.000000
- END
-TURNOUT O "Ross #8 Right-Hand 220"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 23.560000 0.000000 90.000000
- E 23.937500 -2.000000 97.000000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- S 0 0.000000 1.250000 0.000000 23.560000 0.000000
- C 0 0.000000 104.623706 1.249584 -104.623706 0.000076 7.000152
- S 0 0.000000 14.000687 -0.779882 23.937500 -2.000000
- END
-TURNOUT O "Ross #10 Left-Hand 251"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 27.312500 0.000000 90.000000
- E 27.750000 2.000000 84.300000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- S 0 0.000000 1.250000 0.000000 27.312500 0.000000
- C 0 0.000000 -129.822441 1.250172 129.822441 174.299924 5.700152
- S 0 0.000000 14.144264 0.641931 27.750000 2.000000
- END
-TURNOUT O "Ross #10 Right-Hand 250"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 27.312500 0.000000 90.000000
- E 27.750000 -2.000000 95.700000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- S 0 0.000000 1.250000 0.000000 27.312500 0.000000
- C 0 0.000000 129.822441 1.249483 -129.822441 0.000076 5.700152
- S 0 0.000000 14.144264 -0.641931 27.750000 -2.000000
- END
-
-SUBCONTENTS Ross - Super Line Switches
-TURNOUT O "Ross 11d Left-Hand 101"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.620000 0.000000 90.000000
- E 15.187500 2.000000 79.000000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- S 0 0.000000 1.250000 0.000000 14.620000 0.000000
- C 0 0.000000 -37.891043 1.250050 37.891043 168.999924 11.000152
- S 0 0.000000 8.480045 0.696183 15.187500 2.000000
- END
-TURNOUT O "Ross 11d Right-Hand 100"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.620000 0.000000 90.000000
- E 15.187500 -2.000000 101.000000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- S 0 0.000000 1.250000 0.000000 14.620000 0.000000
- C 0 0.000000 37.891043 1.249849 -37.891043 0.000076 11.000152
- S 0 0.000000 8.480045 -0.696183 15.187500 -2.000000
- END
-TURNOUT O "Ross O31 Left-Hand 106"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.650000 0.000000 90.000000
- E 10.960148 4.539838 45.000000
- S 0 0.000000 0.000000 0.000000 1.250040 0.000000
- S 0 0.000000 1.250040 0.000000 14.650000 0.000000
- C 0 0.000000 -12.482182 1.250057 12.482182 134.999924 45.000152
- S 0 0.000000 10.076293 3.655964 10.960148 4.539838
- END
-TURNOUT O "Ross O31 Right-Hand 105"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.650000 0.000000 90.000000
- E 10.960148 -4.539838 135.000000
- S 0 0.000000 0.000000 0.000000 1.250040 0.000000
- S 0 0.000000 1.250040 0.000000 14.650000 0.000000
- C 0 0.000000 12.482182 1.249991 -12.482182 0.000076 45.000152
- S 0 0.000000 10.076293 -3.655964 10.960148 -4.539838
- END
-TURNOUT O "Ross O42 Left-Hand 111"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.650000 0.000000 90.000000
- E 11.128305 3.190990 58.000000
- S 0 0.000000 0.000000 0.000000 1.250046 0.000000
- S 0 0.000000 1.250046 0.000000 14.650000 0.000000
- C 0 0.000000 -16.640666 1.250068 16.640666 147.999924 32.000152
- S 0 0.000000 10.068286 2.528600 11.128305 3.190990
- END
-TURNOUT O "Ross O42 Right-Hand 110"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.650000 0.000000 90.000000
- E 11.128305 -3.190990 122.000000
- S 0 0.000000 0.000000 0.000000 1.250046 0.000000
- S 0 0.000000 1.250046 0.000000 14.650000 0.000000
- C 0 0.000000 16.640666 1.249980 -16.640666 0.000076 32.000152
- S 0 0.000000 10.068286 -2.528600 11.128305 -3.190990
- END
-TURNOUT O "Ross O54 Left-Hand 116"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.650000 0.000000 90.000000
- E 13.499990 3.617308 60.000000
- S 0 0.000000 0.000000 0.000000 1.250072 0.000000
- S 0 0.000000 1.250072 0.000000 14.650000 0.000000
- C 0 0.000000 -22.334798 1.250102 22.334798 149.999924 30.000152
- S 0 0.000000 12.417514 2.992320 13.499990 3.617308
- END
-TURNOUT O "Ross O54 Right-Hand 115"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.650000 0.000000 90.000000
- E 13.499990 -3.617308 120.000000
- S 0 0.000000 0.000000 0.000000 1.250072 0.000000
- S 0 0.000000 1.250072 0.000000 14.650000 0.000000
- C 0 0.000000 22.334798 1.249984 -22.334798 0.000076 30.000152
- S 0 0.000000 12.417514 -2.992320 13.499990 -3.617308
- END
-TURNOUT O "Ross O64 Left-Hand 121"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.650000 0.000000 90.000000
- E 12.245860 2.435851 67.500000
- S 0 0.000000 0.000000 0.000000 1.250084 0.000000
- S 0 0.000000 1.250084 0.000000 14.650000 0.000000
- C 0 0.000000 -25.715608 1.250118 25.715608 157.499924 22.500152
- S 0 0.000000 11.091077 1.957507 12.245860 2.435851
- END
-TURNOUT O "Ross O64 Right-Hand 120"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.650000 0.000000 90.000000
- E 12.245860 -2.435851 112.500000
- S 0 0.000000 0.000000 0.000000 1.250084 0.000000
- S 0 0.000000 1.250084 0.000000 14.650000 0.000000
- C 0 0.000000 25.715608 1.249982 -25.715608 0.000076 22.500152
- S 0 0.000000 11.091077 -1.957507 12.245860 -2.435851
- END
-TURNOUT O "Ross O72 Left-Hand 126"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.650000 0.000000 90.000000
- E 13.776593 2.740332 67.500000
- S 0 0.000000 0.000000 0.000000 1.250097 0.000000
- S 0 0.000000 1.250097 0.000000 14.650000 0.000000
- C 0 0.000000 -29.715577 1.250137 29.715577 157.499924 22.500152
- S 0 0.000000 12.621820 2.261990 13.776593 2.740332
- END
-TURNOUT O "Ross O72 Right-Hand 125"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.650000 0.000000 90.000000
- E 13.776593 -2.740332 112.500000
- S 0 0.000000 0.000000 0.000000 1.250097 0.000000
- S 0 0.000000 1.250097 0.000000 14.650000 0.000000
- C 0 0.000000 29.715577 1.249979 -29.715577 0.000076 22.500152
- S 0 0.000000 12.621820 -2.261990 13.776593 -2.740332
- END
-TURNOUT O "Ross O80 Left-Hand 131"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.650000 0.000000 90.000000
- E 15.307325 3.044814 67.500000
- S 0 0.000000 0.000000 0.000000 1.250104 0.000000
- S 0 0.000000 1.250104 0.000000 14.650000 0.000000
- C 0 0.000000 -33.715558 1.250149 33.715558 157.499924 22.500152
- S 0 0.000000 14.152562 2.566474 15.307325 3.044814
- END
-TURNOUT O "Ross O80 Right-Hand 130"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 14.650000 0.000000 90.000000
- E 15.307325 -3.044814 112.500000
- S 0 0.000000 0.000000 0.000000 1.250104 0.000000
- S 0 0.000000 1.250104 0.000000 14.650000 0.000000
- C 0 0.000000 33.715558 1.249970 -33.715558 0.000076 22.500152
- S 0 0.000000 14.152562 -2.566474 15.307325 -3.044814
- END
-TURNOUT O "Ross O96 Left-Hand 141"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 19.120000 0.000000 90.000000
- E 18.368790 3.653776 67.500000
- S 0 0.000000 0.000000 0.000000 1.250129 0.000000
- S 0 0.000000 1.250129 0.000000 19.120000 0.000000
- C 0 0.000000 -41.715495 1.250184 41.715495 157.499924 22.500152
- S 0 0.000000 17.214048 3.175440 18.368790 3.653776
- END
-TURNOUT O "Ross O96 Right-Hand 140"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 19.120000 0.000000 90.000000
- E 18.368790 -3.653776 112.500000
- S 0 0.000000 0.000000 0.000000 1.250129 0.000000
- S 0 0.000000 1.250129 0.000000 19.120000 0.000000
- C 0 0.000000 41.715495 1.249963 -41.715495 0.000076 22.500152
- S 0 0.000000 17.214048 -3.175440 18.368790 -3.653776
- END
-
-SUBCONTENTS Ross - Dbl-XOver and Slip Switches
-TURNOUT O "Ross #8 Double Crossover 280" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 7 8 9 6
- P "Slip2" 4 10 11 12 3
- E 0.000000 0.000000 270.000000
- E 49.300000 0.000000 90.000000
- E 0.000000 4.000000 270.000000
- E 49.300000 4.000000 90.000000
- S 0 0.000000 0.000000 0.000000 2.330679 0.000000
- S 0 0.000000 2.330679 0.000000 46.969321 0.000000
- S 0 0.000000 46.969321 0.000000 49.300000 0.000000
- S 0 0.000000 0.000000 4.000000 2.330679 4.000000
- S 0 0.000000 2.330679 4.000000 46.969321 4.000000
- S 0 0.000000 46.969321 4.000000 49.300000 4.000000
- C 0 0.000000 -125.149444 2.330845 125.149444 170.299524 9.700552
- S 0 0.000000 23.418202 1.789403 25.881798 2.210597
- C 0 0.000000 125.149444 46.969485 -121.149416 350.299524 9.700552
- C 0 0.000000 125.149444 2.330181 -121.149444 0.000076 9.700552
- S 0 0.000000 23.418202 2.210597 25.881798 1.789403
- C 0 0.000000 -125.149444 46.969485 125.149416 180.000076 9.700552
- END
-TURNOUT O "Ross Double Crossover 175"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
- E 0.000000 0.000000 270.000000
- E 31.840000 0.000000 90.000000
- E 0.000000 4.570000 270.000000
- E 31.840000 4.570000 90.000000
- S 0 0.000000 0.000000 0.000000 2.152470 0.000000
- S 0 0.000000 2.152470 0.000000 29.687530 0.000000
- S 0 0.000000 29.687530 0.000000 31.840000 0.000000
- S 0 0.000000 0.000000 4.570000 2.152470 4.570000
- S 0 0.000000 2.152470 4.570000 29.687530 4.570000
- S 0 0.000000 29.687530 4.570000 31.840000 4.570000
- C 0 0.000000 -42.276890 2.152526 42.276890 162.697048 17.303028
- S 0 0.000000 14.726678 1.913234 17.113322 2.656766
- C 0 0.000000 42.276890 29.687584 -37.706873 342.697048 17.303028
- C 0 0.000000 42.276890 2.152302 -37.706890 0.000076 17.303028
- S 0 0.000000 14.726678 2.656766 17.113322 1.913234
- C 0 0.000000 -42.276890 29.687584 42.276873 180.000076 17.303028
- END
-TURNOUT O "Ross Double-Slip 270" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 7 6
- P "Slip2" 4 8 3
- E 0.000000 0.000000 270.000000
- E 17.062500 0.000000 90.000000
- E 0.253411 2.063883 284.000000
- E 16.809089 -2.063883 104.000000
- S 0 0.000000 0.000000 0.000000 2.500250 0.000000
- S 0 0.000000 2.500250 0.000000 14.562250 0.000000
- S 0 0.000000 14.562250 0.000000 17.062500 0.000000
- S 0 0.000000 0.253411 2.063883 2.679022 1.459092
- S 0 0.000000 2.679022 1.459092 14.383478 -1.459092
- S 0 0.000000 14.383478 -1.459092 16.809089 -2.063883
- C 0 0.000000 49.119619 2.500054 -49.119619 0.000076 14.000152
- C 0 0.000000 -49.119619 14.562314 49.119603 180.000076 14.000152
- END
-
-SUBCONTENTS Ross - WYE Switches
-TURNOUT O "Ross O31 WYE Switch 153"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 10.960148 4.539838 45.000000
- E 10.960148 -4.539838 135.000000
- S 0 0.000000 0.000000 0.000000 1.250040 0.000000
- C 0 0.000000 -12.482182 1.250057 12.482182 134.999924 45.000152
- S 0 0.000000 10.076293 3.655964 10.960148 4.539838
- C 0 0.000000 12.482182 1.249991 -12.482182 0.000076 45.000152
- S 0 0.000000 10.076293 -3.655964 10.960148 -4.539838
- END
-TURNOUT O "Ross O42 WYE Switch 154"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 11.128305 3.190990 58.000000
- E 11.128305 -3.190990 122.000000
- S 0 0.000000 0.000000 0.000000 1.250046 0.000000
- C 0 0.000000 -16.640666 1.250068 16.640666 147.999924 32.000152
- S 0 0.000000 10.068286 2.528600 11.128305 3.190990
- C 0 0.000000 16.640666 1.249980 -16.640666 0.000076 32.000152
- S 0 0.000000 10.068286 -2.528600 11.128305 -3.190990
- END
-TURNOUT O "Ross O54 WYE Switch 155"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 13.499990 3.617308 60.000000
- E 13.499990 -3.617308 120.000000
- S 0 0.000000 0.000000 0.000000 1.250072 0.000000
- C 0 0.000000 -22.334798 1.250102 22.334798 149.999924 30.000152
- S 0 0.000000 12.417514 2.992320 13.499990 3.617308
- C 0 0.000000 22.334798 1.249984 -22.334798 0.000076 30.000152
- S 0 0.000000 12.417514 -2.992320 13.499990 -3.617308
- END
-TURNOUT O "Ross O72 WYE Switch 156"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 13.776593 2.740332 67.500000
- E 13.776593 -2.740332 112.500000
- S 0 0.000000 0.000000 0.000000 1.250097 0.000000
- C 0 0.000000 -29.715577 1.250137 29.715577 157.499924 22.500152
- S 0 0.000000 12.621820 2.261990 13.776593 2.740332
- C 0 0.000000 29.715577 1.249979 -29.715577 0.000076 22.500152
- S 0 0.000000 12.621820 -2.261990 13.776593 -2.740332
- END
-TURNOUT O "Ross 11d WYE 157"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 14.375000 1.062500 84.500000
- E 14.375000 -1.062500 95.500000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- C 0 0.000000 -43.526079 1.250058 43.526079 174.499924 5.500152
- S 0 0.000000 5.421901 0.200396 14.375000 1.062500
- C 0 0.000000 43.526079 1.249827 -43.526079 0.000076 5.500152
- S 0 0.000000 5.421901 -0.200396 14.375000 -1.062500
- END
-TURNOUT O "Ross #4 3-WAY 204"
- P "Left" 1 2 3
- P "Normal" 1 6
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 14.125000 2.000000 76.000000
- E 14.125000 -2.000000 104.000000
- E 14.650000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- C 0 0.000000 -39.528692 1.250052 39.528692 165.999924 14.000152
- S 0 0.000000 10.812950 1.174194 14.125000 2.000000
- C 0 0.000000 39.528692 1.249843 -39.528692 0.000076 14.000152
- S 0 0.000000 10.812950 -1.174194 14.125000 -2.000000
- S 0 0.000000 1.250000 0.000000 14.650000 0.000000
- END
-TURNOUT O "Ross 4-Way 170"
- P "P0" 3 1 8 9
- P "P1" 3 1 8 10 11
- P "P2" 3 2 4 6 7
- P "P3" 3 2 4 5
- E 0.000000 0.000000 270.000000
- E 24.100000 3.875000 79.000000
- E 24.230000 1.813841 90.000000
- E 24.230000 -1.813887 90.000000
- E 24.100000 -3.875000 101.000000
- C 0 0.000000 -30.273516 1.250000 30.273516 169.000000 11.000000
- C 0 0.000000 30.273516 1.250000 -30.273516 0.000000 11.000000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- S 0 0.000000 7.026452 -0.556232 8.253485 -0.794748
- S 0 0.000000 8.253485 -0.794748 24.100000 -3.875000
- C 0 0.000000 -55.467785 18.837518 53.653883 180.000000 11.000000
- S 0 0.000000 18.837372 -1.813888 24.230000 -1.813887
- S 0 0.000000 7.026613 0.556232 8.253647 0.794744
- S 0 0.000000 8.253647 0.794744 24.100000 3.875000
- C 0 0.000000 55.467785 18.837246 -53.653971 349.000000 11.000000
- S 0 0.000000 18.837536 1.813856 24.230000 1.813841
- END
-
-
-SUBCONTENTS Ross - Curved Switches
-TURNOUT O "Ross O54-O31 Left-Hand Curve Switch 151"
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 13.499990 3.617308 60.000000
- E 10.960148 4.539838 45.000000
- S 0 0.000000 0.000000 0.000000 1.250040 0.000000
- C 0 0.000000 -12.482182 1.250057 12.482182 134.999924 45.000152
- S 0 0.000000 10.076293 3.655964 10.960148 4.539838
- C 0 0.000000 -22.334798 1.250102 22.334798 149.999924 30.000234
- S 0 0.000000 12.417514 2.992320 13.499990 3.617308
- END
-TURNOUT O "Ross O54-O31 Right-Hand Curve Switch 150"
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 13.499990 -3.617308 120.000000
- E 10.960148 -4.539838 135.000000
- S 0 0.000000 0.000000 0.000000 1.250040 0.000000
- C 0 0.000000 12.482182 1.249991 -12.482182 0.000076 45.000152
- S 0 0.000000 10.076293 -3.655964 10.960148 -4.539838
- C 0 0.000000 22.334798 1.250102 -22.334798 359.999994 30.000234
- S 0 0.000000 12.417514 -2.992320 13.499990 -3.617308
- END
-TURNOUT O "Ross Left-Hand Curve Switch 161"
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 16.125000 3.875000 63.400000
- E 15.125000 5.750000 52.000000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- C 0 0.000000 -18.921998 1.250025 18.921998 141.999924 38.000152
- S 0 0.000000 12.899576 4.011284 15.125000 5.750000
- C 0 0.000000 -30.191002 1.250040 30.191002 153.399924 26.600152
- S 0 0.000000 14.768356 3.195620 16.125000 3.875000
- END
-TURNOUT O "Ross Right-Hand Curve Switch 160"
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 16.125000 -3.875000 116.600000
- E 15.125000 -5.750000 128.000000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- C 0 0.000000 18.921998 1.249925 -18.921998 0.000076 38.000152
- S 0 0.000000 12.899576 -4.011284 15.125000 -5.750000
- C 0 0.000000 30.191002 1.249880 -30.191002 0.000076 26.600152
- S 0 0.000000 14.768356 -3.195620 16.125000 -3.875000
- END
-TURNOUT O "Ross O92-O72 Left-Hand #6 Curve Switch 231"
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 13.776593 2.740332 67.500000
- E 19.922096 6.014835 56.400000
- S 0 0.000000 0.000000 0.000000 1.250079 0.000000
- C 0 0.000000 -31.859695 1.250121 31.859695 146.399924 33.600152
- S 0 0.000000 18.881023 5.323116 19.922096 6.014835
- C 0 0.000000 -29.715577 1.250137 29.715577 157.499924 22.500187
- S 0 0.000000 12.621820 2.261990 13.776593 2.740332
- END
-TURNOUT O "Ross O92-O72 Right-Hand #6 Curve Switch 230"
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 13.776593 -2.740332 112.500000
- E 19.922096 -6.014835 123.600000
- S 0 0.000000 0.000000 0.000000 1.250079 0.000000
- C 0 0.000000 31.859695 1.249952 -31.859695 0.000076 33.600152
- S 0 0.000000 18.881023 -5.323116 19.922096 -6.014835
- C 0 0.000000 29.715577 1.249979 -29.715577 0.000041 22.500187
- S 0 0.000000 12.621820 -2.261990 13.776593 -2.740332
- END
-TURNOUT O "Ross O92-O72 Left-Hand #6 Curve Switch 231"
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 18.368790 3.653776 67.500000
- E 19.922096 6.014835 56.400000
- S 0 0.000000 0.000000 0.000000 1.250079 0.000000
- C 0 0.000000 -31.859695 1.250121 31.859695 146.399924 33.600152
- S 0 0.000000 18.881023 5.323116 19.922096 6.014835
- C 0 0.000000 -41.715495 1.250184 41.715495 157.499924 22.500221
- S 0 0.000000 17.214048 3.175440 18.368790 3.653776
- END
-TURNOUT O "Ross O120-O96 Left-Hand #8 Curve Switch 241"
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 22.960988 4.567220 67.500000
- E 21.937500 6.641800 59.500000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- C 0 0.000000 -34.522875 1.250046 34.522875 149.499924 30.500152
- S 0 0.000000 18.771749 4.776998 21.937500 6.641800
- C 0 0.000000 -53.715414 1.250233 53.715414 157.499924 22.500325
- S 0 0.000000 21.806276 4.088890 22.960988 4.567220
- END
-TURNOUT O "Ross O120-O96 Right-Hand #8 Curve Switch 240"
- P "Normal" 1 4 5
- P "Reverse" 1 2 3
- E 0.000000 0.000000 270.000000
- E 22.960988 -4.567220 112.500000
- E 21.937500 -6.641800 120.500000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- C 0 0.000000 34.522875 1.249863 -34.522875 0.000076 30.500152
- S 0 0.000000 18.771749 -4.776998 21.937500 -6.641800
- C 0 0.000000 53.715414 1.250233 -53.715414 359.999903 22.500325
- S 0 0.000000 21.806276 -4.088890 22.960988 -4.567220
- END
-
-
-SUBCONTENTS Ross - Crossings
-TURNOUT O "Ross 11d Crossing 299"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 21.850000 0.000000 90.000000
- E 0.200720 2.084572 281.000000
- E 21.649280 -2.084572 101.000000
- S 0 0.000000 0.000000 0.000000 21.850000 0.000000
- S 0 0.000000 0.200720 2.084572 21.649280 -2.084572
- END
-TURNOUT O "Ross 22.5d Crossing 305"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 10.750000 0.000000 90.000000
- E 0.409144 2.056915 292.500000
- E 10.340856 -2.056915 112.500000
- S 0 0.000000 0.000000 0.000000 10.750000 0.000000
- S 0 0.000000 0.409144 2.056915 10.340856 -2.056915
- END
-TURNOUT O "Ross 30d Crossing 300"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 12.400000 0.000000 90.000000
- E 0.830637 3.099991 300.000000
- E 11.569363 -3.099991 120.000000
- S 0 0.000000 0.000000 0.000000 12.400000 0.000000
- S 0 0.000000 0.830637 3.099991 11.569363 -3.099991
- END
-TURNOUT O "Ross 45d Crossing 310"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 11.000000 0.000000 90.000000
- E 1.610905 3.889080 315.000000
- E 9.389095 -3.889080 135.000000
- S 0 0.000000 0.000000 0.000000 11.000000 0.000000
- S 0 0.000000 1.610905 3.889080 9.389095 -3.889080
- END
-TURNOUT O "Ross 60d Crossing 320"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 9.700000 0.000000 90.000000
- E 2.424991 4.200218 330.000000
- E 7.275009 -4.200218 150.000000
- S 0 0.000000 0.000000 0.000000 9.700000 0.000000
- S 0 0.000000 2.424991 4.200218 7.275009 -4.200218
- END
-TURNOUT O "Ross 90d Crossing 340"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 9.622000 0.000000 90.000000
- E 4.811013 4.811000 360.000000
- E 4.810987 -4.811000 180.000000
- S 0 0.000000 0.000000 0.000000 9.622000 0.000000
- S 0 0.000000 4.811013 4.811000 4.810987 -4.811000
- END
-
-SUBCONTENTS Ross - Curve Track
-TURNOUT O "Ross O31 Curve Track O31"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.960148 4.539838 45.000000
- C 0 0.000000 -15.500000 0.000021 15.500000 135.000076 45.000000
- END
-TURNOUT O "Ross O42 Curve Track O42"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 14.849233 6.150748 45.000000
- C 0 0.000000 -21.000000 0.000028 21.000000 135.000076 45.000000
- END
-TURNOUT O "Ross O54 Curve Track O54"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 13.499990 3.617308 60.000000
- C 0 0.000000 -27.000000 0.000036 27.000000 150.000076 30.000000
- END
-TURNOUT O "Ross O64 Curve Track O64"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 12.245860 2.435851 67.500000
- C 0 0.000000 -32.000000 0.000042 32.000000 157.500076 22.500000
- END
-TURNOUT O "Ross O72 Curve Track O72"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 13.776593 2.740332 67.500000
- C 0 0.000000 -36.000000 0.000048 36.000000 157.500076 22.500000
- END
-TURNOUT O "Ross O80 Curve Track O80"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 15.307325 3.044814 67.500000
- C 0 0.000000 -40.000000 0.000053 40.000000 157.500076 22.500000
- END
-TURNOUT O "Ross O88 Curve Track O88"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 16.838058 3.349295 67.500000
- C 0 0.000000 -44.000000 0.000058 44.000000 157.500076 22.500000
- END
-TURNOUT O "Ross O96 Curve Track O96"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 18.368790 3.653776 67.500000
- C 0 0.000000 -48.000000 0.000064 48.000000 157.500076 22.500000
- END
-TURNOUT O "Ross O104 Curve Track O104"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 19.899523 3.958258 67.500000
- C 0 0.000000 -52.000000 0.000069 52.000000 157.500076 22.500000
- END
-TURNOUT O "Ross O112 Curve Track O112"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 21.430255 4.262739 67.500000
- C 0 0.000000 -56.000000 0.000074 56.000000 157.500076 22.500000
- END
-TURNOUT O "Ross O120 Curve Track O120"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 22.960988 4.567220 67.500000
- C 0 0.000000 -60.000000 0.000080 60.000000 157.500076 22.500000
- END
-TURNOUT O "Ross O128 Curve Track O128"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 24.491720 4.871702 67.500000
- C 0 0.000000 -64.000000 0.000085 64.000000 157.500076 22.500000
- END
-
-
-SUBCONTENTS Ross - Straight Track
-TURNOUT O "Ross O10 Straight Track O10"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 3.000000 0.000000
- END
-TURNOUT O "Ross O15 Straight Track O15"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 10.000000 0.000000
- END
-TURNOUT O "Ross O20 Straight Track O20"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 14.600000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 14.600000 0.000000
- END
-TURNOUT O "Ross O20L Straight Track O20L"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 29.300000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 29.300000 0.000000
- END
-
-SUBCONTENTS Ross - Transition Curve Track
-TURNOUT O "Ross Transition Curve 14d 3.5 TR435"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 12.217046 1.500063 76.000000
- C 0 0.000000 -50.500000 0.000067 50.500000 166.000076 14.000000
- END
-TURNOUT O "Ross Transition Curve 14d 4.0 TR440"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 16.291914 2.000394 76.000000
- C 0 0.000000 -67.343750 0.000089 67.343750 166.000076 14.000000
- END
-TURNOUT O "Ross Transition Curve 14d 4.5 TR445"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 20.359223 2.499796 76.000000
- C 0 0.000000 -84.156250 0.000112 84.156250 166.000076 14.000000
- END
-TURNOUT O "Ross Transition Curve 11d 4.0 TR40"
- U "Curved Section" "" "Ross" "TR40" "TR40" 108.875000 11.000000 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 20.774312 2.000337 79.000000
- C 0 0.000000 -108.875000 0.000144 108.875000 169.000076 11.000000
- END
-TURNOUT O "Ross Transition Curve 11d 3.5 TR35"
- U "Curved Section" "" "Ross" "TR35" "TR35" 81.625000 11.000000 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 15.574771 1.499679 79.000000
- C 0 0.000000 -81.625000 0.000108 81.625000 169.000076 11.000000
- END
-TURNOUT O "Ross Transition Curve 11d 4.5 TR45"
- U "Curved Section" "" "Ross" "Tr45" "TR45" 136.062500 11.000000 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 25.961927 2.499847 79.000000
- C 0 0.000000 -136.062500 0.000181 136.062500 169.000076 11.000000
- END
-
-SUBCONTENTS Ross - Turn Tables
-TURNOUT O "Ross 18"" 7.5d Turn Table TUTA18M/A" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- P "7" 7
- P "8" 8
- P "9" 9
- P "10" 10
- P "11" 11
- P "12" 12
- P "13" 13
- P "14" 14
- P "15" 15
- P "16" 16
- P "17" 17
- P "18" 18
- P "19" 19
- P "20" 20
- P "21" 21
- P "22" 22
- P "23" 23
- P "24" 24
- E 0.000000 9.000000 0.000000
- E 1.174736 8.923004 7.500000
- E 2.329371 8.693332 15.000000
- E 3.444151 8.314916 22.500000
- E 4.500000 7.794229 30.000000
- E 5.478853 7.140180 37.500000
- E 6.363961 6.363961 45.000000
- E 7.140180 5.478853 52.500000
- E 7.794229 4.500000 60.000000
- E 8.314916 3.444151 67.500000
- E 8.693332 2.329371 75.000000
- E 8.923004 1.174736 82.500000
- E 9.000000 0.000000 90.000000
- E 8.923004 -1.174736 97.500000
- E 8.693332 -2.329371 105.000000
- E 8.314916 -3.444151 112.500000
- E 7.794229 -4.500000 120.000000
- E 7.140180 -5.478853 127.500000
- E 6.363961 -6.363961 135.000000
- E 5.478853 -7.140180 142.500000
- E 4.500000 -7.794229 150.000000
- E 3.444151 -8.314916 157.500000
- E 2.329371 -8.693332 165.000000
- E 1.174736 -8.923004 172.500000
- E 0.000000 -9.000000 180.000000
- E -1.174736 -8.923004 187.500000
- E -2.329371 -8.693332 195.000000
- E -3.444151 -8.314916 202.500000
- E -4.500000 -7.794229 210.000000
- E -5.478853 -7.140180 217.500000
- E -6.363961 -6.363961 225.000000
- E -7.140180 -5.478853 232.500000
- E -7.794229 -4.500000 240.000000
- E -8.314916 -3.444151 247.500000
- E -8.693332 -2.329371 255.000000
- E -8.923004 -1.174736 262.500000
- E -9.000000 0.000000 270.000000
- E -8.923004 1.174736 277.500000
- E -8.693332 2.329371 285.000000
- E -8.314916 3.444151 292.500000
- E -7.794229 4.500000 300.000000
- E -7.140180 5.478853 307.500000
- E -6.363961 6.363961 315.000000
- E -5.478853 7.140180 322.500000
- E -4.500000 7.794229 330.000000
- E -3.444151 8.314916 337.500000
- E -2.329371 8.693332 345.000000
- E -1.174736 8.923004 352.500000
- S 16777215 0.000000 0.000000 9.000000 0.000000 -9.000000
- S 16777215 0.000000 1.174736 8.923004 -1.174736 -8.923004
- S 16777215 0.000000 2.329371 8.693332 -2.329371 -8.693332
- S 16777215 0.000000 3.444151 8.314916 -3.444151 -8.314916
- S 16777215 0.000000 4.500000 7.794229 -4.500000 -7.794229
- S 16777215 0.000000 5.478853 7.140180 -5.478853 -7.140180
- S 16777215 0.000000 6.363961 6.363961 -6.363961 -6.363961
- S 16777215 0.000000 7.140180 5.478853 -7.140180 -5.478853
- S 16777215 0.000000 7.794229 4.500000 -7.794229 -4.500000
- S 16777215 0.000000 8.314916 3.444151 -8.314916 -3.444151
- S 16777215 0.000000 8.693332 2.329371 -8.693332 -2.329371
- S 16777215 0.000000 8.923004 1.174736 -8.923004 -1.174736
- S 0 0.000000 9.000000 0.000000 -9.000000 0.000000
- S 16777215 0.000000 8.923004 -1.174736 -8.923004 1.174736
- S 16777215 0.000000 8.693332 -2.329371 -8.693332 2.329371
- S 16777215 0.000000 8.314916 -3.444151 -8.314916 3.444151
- S 16777215 0.000000 7.794229 -4.500000 -7.794229 4.500000
- S 16777215 0.000000 7.140180 -5.478853 -7.140180 5.478853
- S 16777215 0.000000 6.363961 -6.363961 -6.363961 6.363961
- S 16777215 0.000000 5.478853 -7.140180 -5.478853 7.140180
- S 16777215 0.000000 4.500000 -7.794229 -4.500000 7.794229
- S 16777215 0.000000 3.444151 -8.314916 -3.444151 8.314916
- S 16777215 0.000000 2.329371 -8.693332 -2.329371 8.693332
- S 16777215 0.000000 1.174736 -8.923004 -1.174736 8.923004
- A 11579568 0.046875 9.000000 0.000000 0.000000 0.000000 360.000000
- L 11579568 0.046875 -10.000000 10.000000 10.000000 10.000000
- L 11579568 0.046875 10.000000 10.000000 10.000000 -10.000000
- L 11579568 0.046875 10.000000 -10.000000 -10.000000 -10.000000
- L 11579568 0.046875 -10.000000 -10.000000 -10.000000 10.000000
- END
-TURNOUT O "Ross 24"" 7.5d Turn Table TUTA24M/A" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- P "7" 7
- P "8" 8
- P "9" 9
- P "10" 10
- P "11" 11
- P "12" 12
- P "13" 13
- P "14" 14
- P "15" 15
- P "16" 16
- P "17" 17
- P "18" 18
- P "19" 19
- P "20" 20
- P "21" 21
- P "22" 22
- P "23" 23
- P "24" 24
- E 0.000000 12.000000 0.000000
- E 1.566314 11.897338 7.500000
- E 3.105829 11.591110 15.000000
- E 4.592201 11.086554 22.500000
- E 6.000000 10.392305 30.000000
- E 7.305137 9.520240 37.500000
- E 8.485281 8.485281 45.000000
- E 9.520240 7.305137 52.500000
- E 10.392305 6.000000 60.000000
- E 11.086554 4.592201 67.500000
- E 11.591110 3.105829 75.000000
- E 11.897338 1.566314 82.500000
- E 12.000000 0.000000 90.000000
- E 11.897338 -1.566314 97.500000
- E 11.591110 -3.105829 105.000000
- E 11.086554 -4.592201 112.500000
- E 10.392305 -6.000000 120.000000
- E 9.520240 -7.305137 127.500000
- E 8.485281 -8.485281 135.000000
- E 7.305137 -9.520240 142.500000
- E 6.000000 -10.392305 150.000000
- E 4.592201 -11.086554 157.500000
- E 3.105829 -11.591110 165.000000
- E 1.566314 -11.897338 172.500000
- E 0.000000 -12.000000 180.000000
- E -1.566314 -11.897338 187.500000
- E -3.105829 -11.591110 195.000000
- E -4.592201 -11.086554 202.500000
- E -6.000000 -10.392305 210.000000
- E -7.305137 -9.520240 217.500000
- E -8.485281 -8.485281 225.000000
- E -9.520240 -7.305137 232.500000
- E -10.392305 -6.000000 240.000000
- E -11.086554 -4.592201 247.500000
- E -11.591110 -3.105829 255.000000
- E -11.897338 -1.566314 262.500000
- E -12.000000 0.000000 270.000000
- E -11.897338 1.566314 277.500000
- E -11.591110 3.105829 285.000000
- E -11.086554 4.592201 292.500000
- E -10.392305 6.000000 300.000000
- E -9.520240 7.305137 307.500000
- E -8.485281 8.485281 315.000000
- E -7.305137 9.520240 322.500000
- E -6.000000 10.392305 330.000000
- E -4.592201 11.086554 337.500000
- E -3.105829 11.591110 345.000000
- E -1.566314 11.897338 352.500000
- S 16777215 0.000000 0.000000 12.000000 0.000000 -12.000000
- S 16777215 0.000000 1.566314 11.897338 -1.566314 -11.897338
- S 16777215 0.000000 3.105829 11.591110 -3.105829 -11.591110
- S 16777215 0.000000 4.592201 11.086554 -4.592201 -11.086554
- S 16777215 0.000000 6.000000 10.392305 -6.000000 -10.392305
- S 16777215 0.000000 7.305137 9.520240 -7.305137 -9.520240
- S 16777215 0.000000 8.485281 8.485281 -8.485281 -8.485281
- S 16777215 0.000000 9.520240 7.305137 -9.520240 -7.305137
- S 16777215 0.000000 10.392305 6.000000 -10.392305 -6.000000
- S 16777215 0.000000 11.086554 4.592201 -11.086554 -4.592201
- S 16777215 0.000000 11.591110 3.105829 -11.591110 -3.105829
- S 16777215 0.000000 11.897338 1.566314 -11.897338 -1.566314
- S 0 0.000000 12.000000 0.000000 -12.000000 0.000000
- S 16777215 0.000000 11.897338 -1.566314 -11.897338 1.566314
- S 16777215 0.000000 11.591110 -3.105829 -11.591110 3.105829
- S 16777215 0.000000 11.086554 -4.592201 -11.086554 4.592201
- S 16777215 0.000000 10.392305 -6.000000 -10.392305 6.000000
- S 16777215 0.000000 9.520240 -7.305137 -9.520240 7.305137
- S 16777215 0.000000 8.485281 -8.485281 -8.485281 8.485281
- S 16777215 0.000000 7.305137 -9.520240 -7.305137 9.520240
- S 16777215 0.000000 6.000000 -10.392305 -6.000000 10.392305
- S 16777215 0.000000 4.592201 -11.086554 -4.592201 11.086554
- S 16777215 0.000000 3.105829 -11.591110 -3.105829 11.591110
- S 16777215 0.000000 1.566314 -11.897338 -1.566314 11.897338
- A 11579568 0.046875 12.000000 0.000000 0.000000 0.000000 360.000000
- L 11579568 0.046875 -13.000000 13.000000 13.000000 13.000000
- L 11579568 0.046875 13.000000 13.000000 13.000000 -13.000000
- L 11579568 0.046875 13.000000 -13.000000 -13.000000 -13.000000
- L 11579568 0.046875 -13.000000 -13.000000 -13.000000 13.000000
- END
-TURNOUT O "Ross 27"" 7.5d Turn Table TUTA27M/A" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- P "7" 7
- P "8" 8
- P "9" 9
- P "10" 10
- P "11" 11
- P "12" 12
- P "13" 13
- P "14" 14
- P "15" 15
- P "16" 16
- P "17" 17
- P "18" 18
- P "19" 19
- P "20" 20
- P "21" 21
- P "22" 22
- P "23" 23
- P "24" 24
- E 0.000000 13.500000 0.000000
- E 1.762104 13.384506 7.500000
- E 3.494057 13.039999 15.000000
- E 5.166226 12.472374 22.500000
- E 6.750000 11.691343 30.000000
- E 8.218279 10.710270 37.500000
- E 9.545942 9.545942 45.000000
- E 10.710270 8.218279 52.500000
- E 11.691343 6.750000 60.000000
- E 12.472374 5.166226 67.500000
- E 13.039999 3.494057 75.000000
- E 13.384506 1.762104 82.500000
- E 13.500000 0.000000 90.000000
- E 13.384506 -1.762104 97.500000
- E 13.039999 -3.494057 105.000000
- E 12.472374 -5.166226 112.500000
- E 11.691343 -6.750000 120.000000
- E 10.710270 -8.218279 127.500000
- E 9.545942 -9.545942 135.000000
- E 8.218279 -10.710270 142.500000
- E 6.750000 -11.691343 150.000000
- E 5.166226 -12.472374 157.500000
- E 3.494057 -13.039999 165.000000
- E 1.762104 -13.384506 172.500000
- E 0.000000 -13.500000 180.000000
- E -1.762104 -13.384506 187.500000
- E -3.494057 -13.039999 195.000000
- E -5.166226 -12.472374 202.500000
- E -6.750000 -11.691343 210.000000
- E -8.218279 -10.710270 217.500000
- E -9.545942 -9.545942 225.000000
- E -10.710270 -8.218279 232.500000
- E -11.691343 -6.750000 240.000000
- E -12.472374 -5.166226 247.500000
- E -13.039999 -3.494057 255.000000
- E -13.384506 -1.762104 262.500000
- E -13.500000 0.000000 270.000000
- E -13.384506 1.762104 277.500000
- E -13.039999 3.494057 285.000000
- E -12.472374 5.166226 292.500000
- E -11.691343 6.750000 300.000000
- E -10.710270 8.218279 307.500000
- E -9.545942 9.545942 315.000000
- E -8.218279 10.710270 322.500000
- E -6.750000 11.691343 330.000000
- E -5.166226 12.472374 337.500000
- E -3.494057 13.039999 345.000000
- E -1.762104 13.384506 352.500000
- S 16777215 0.000000 0.000000 13.500000 0.000000 -13.500000
- S 16777215 0.000000 1.762104 13.384506 -1.762104 -13.384506
- S 16777215 0.000000 3.494057 13.039999 -3.494057 -13.039999
- S 16777215 0.000000 5.166226 12.472374 -5.166226 -12.472374
- S 16777215 0.000000 6.750000 11.691343 -6.750000 -11.691343
- S 16777215 0.000000 8.218279 10.710270 -8.218279 -10.710270
- S 16777215 0.000000 9.545942 9.545942 -9.545942 -9.545942
- S 16777215 0.000000 10.710270 8.218279 -10.710270 -8.218279
- S 16777215 0.000000 11.691343 6.750000 -11.691343 -6.750000
- S 16777215 0.000000 12.472374 5.166226 -12.472374 -5.166226
- S 16777215 0.000000 13.039999 3.494057 -13.039999 -3.494057
- S 16777215 0.000000 13.384506 1.762104 -13.384506 -1.762104
- S 0 0.000000 13.500000 0.000000 -13.500000 0.000000
- S 16777215 0.000000 13.384506 -1.762104 -13.384506 1.762104
- S 16777215 0.000000 13.039999 -3.494057 -13.039999 3.494057
- S 16777215 0.000000 12.472374 -5.166226 -12.472374 5.166226
- S 16777215 0.000000 11.691343 -6.750000 -11.691343 6.750000
- S 16777215 0.000000 10.710270 -8.218279 -10.710270 8.218279
- S 16777215 0.000000 9.545942 -9.545942 -9.545942 9.545942
- S 16777215 0.000000 8.218279 -10.710270 -8.218279 10.710270
- S 16777215 0.000000 6.750000 -11.691343 -6.750000 11.691343
- S 16777215 0.000000 5.166226 -12.472374 -5.166226 12.472374
- S 16777215 0.000000 3.494057 -13.039999 -3.494057 13.039999
- S 16777215 0.000000 1.762104 -13.384506 -1.762104 13.384506
- A 11579568 0.046875 13.500000 0.000000 0.000000 0.000000 360.000000
- L 11579568 0.046875 -14.500000 14.500000 14.500000 14.500000
- L 11579568 0.046875 14.500000 14.500000 14.500000 -14.500000
- L 11579568 0.046875 14.500000 -14.500000 -14.500000 -14.500000
- L 11579568 0.046875 -14.500000 -14.500000 -14.500000 14.500000
- END
-TURNOUT O "Ross 33"" 7.5d Turn Table TUTA33M/A" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- P "7" 7
- P "8" 8
- P "9" 9
- P "10" 10
- P "11" 11
- P "12" 12
- P "13" 13
- P "14" 14
- P "15" 15
- P "16" 16
- P "17" 17
- P "18" 18
- P "19" 19
- P "20" 20
- P "21" 21
- P "22" 22
- P "23" 23
- P "24" 24
- E 0.000000 16.500000 0.000000
- E 2.153682 16.358840 7.500000
- E 4.270514 15.937776 15.000000
- E 6.314277 15.244012 22.500000
- E 8.250000 14.289419 30.000000
- E 10.044564 13.090330 37.500000
- E 11.667262 11.667262 45.000000
- E 13.090330 10.044564 52.500000
- E 14.289419 8.250000 60.000000
- E 15.244012 6.314277 67.500000
- E 15.937776 4.270514 75.000000
- E 16.358840 2.153682 82.500000
- E 16.500000 0.000000 90.000000
- E 16.358840 -2.153682 97.500000
- E 15.937776 -4.270514 105.000000
- E 15.244012 -6.314277 112.500000
- E 14.289419 -8.250000 120.000000
- E 13.090330 -10.044564 127.500000
- E 11.667262 -11.667262 135.000000
- E 10.044564 -13.090330 142.500000
- E 8.250000 -14.289419 150.000000
- E 6.314277 -15.244012 157.500000
- E 4.270514 -15.937776 165.000000
- E 2.153682 -16.358840 172.500000
- E 0.000000 -16.500000 180.000000
- E -2.153682 -16.358840 187.500000
- E -4.270514 -15.937776 195.000000
- E -6.314277 -15.244012 202.500000
- E -8.250000 -14.289419 210.000000
- E -10.044564 -13.090330 217.500000
- E -11.667262 -11.667262 225.000000
- E -13.090330 -10.044564 232.500000
- E -14.289419 -8.250000 240.000000
- E -15.244012 -6.314277 247.500000
- E -15.937776 -4.270514 255.000000
- E -16.358840 -2.153682 262.500000
- E -16.500000 0.000000 270.000000
- E -16.358840 2.153682 277.500000
- E -15.937776 4.270514 285.000000
- E -15.244012 6.314277 292.500000
- E -14.289419 8.250000 300.000000
- E -13.090330 10.044564 307.500000
- E -11.667262 11.667262 315.000000
- E -10.044564 13.090330 322.500000
- E -8.250000 14.289419 330.000000
- E -6.314277 15.244012 337.500000
- E -4.270514 15.937776 345.000000
- E -2.153682 16.358840 352.500000
- S 16777215 0.000000 0.000000 16.500000 0.000000 -16.500000
- S 16777215 0.000000 2.153682 16.358840 -2.153682 -16.358840
- S 16777215 0.000000 4.270514 15.937776 -4.270514 -15.937776
- S 16777215 0.000000 6.314277 15.244012 -6.314277 -15.244012
- S 16777215 0.000000 8.250000 14.289419 -8.250000 -14.289419
- S 16777215 0.000000 10.044564 13.090330 -10.044564 -13.090330
- S 16777215 0.000000 11.667262 11.667262 -11.667262 -11.667262
- S 16777215 0.000000 13.090330 10.044564 -13.090330 -10.044564
- S 16777215 0.000000 14.289419 8.250000 -14.289419 -8.250000
- S 16777215 0.000000 15.244012 6.314277 -15.244012 -6.314277
- S 16777215 0.000000 15.937776 4.270514 -15.937776 -4.270514
- S 16777215 0.000000 16.358840 2.153682 -16.358840 -2.153682
- S 0 0.000000 16.500000 0.000000 -16.500000 0.000000
- S 16777215 0.000000 16.358840 -2.153682 -16.358840 2.153682
- S 16777215 0.000000 15.937776 -4.270514 -15.937776 4.270514
- S 16777215 0.000000 15.244012 -6.314277 -15.244012 6.314277
- S 16777215 0.000000 14.289419 -8.250000 -14.289419 8.250000
- S 16777215 0.000000 13.090330 -10.044564 -13.090330 10.044564
- S 16777215 0.000000 11.667262 -11.667262 -11.667262 11.667262
- S 16777215 0.000000 10.044564 -13.090330 -10.044564 13.090330
- S 16777215 0.000000 8.250000 -14.289419 -8.250000 14.289419
- S 16777215 0.000000 6.314277 -15.244012 -6.314277 15.244012
- S 16777215 0.000000 4.270514 -15.937776 -4.270514 15.937776
- S 16777215 0.000000 2.153682 -16.358840 -2.153682 16.358840
- A 11579568 0.046875 16.500000 0.000000 0.000000 0.000000 360.000000
- L 11579568 0.046875 -17.500000 17.500000 17.500000 17.500000
- L 11579568 0.046875 17.500000 17.500000 17.500000 -17.500000
- L 11579568 0.046875 17.500000 -17.500000 -17.500000 -17.500000
- L 11579568 0.046875 -17.500000 -17.500000 -17.500000 17.500000
- END
-
-SUBCONTENTS Ross - Transfer Tables
-TURNOUT O "Ross 18"" 5 Stop Transfer Table (3.5"" Trk Center) TT185" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- E 0.000000 0.000000 270.000000
- E 18.000000 0.000000 90.000000
- E 0.000000 -3.500000 270.000000
- E 18.000000 -3.500000 90.000000
- E 0.000000 -7.000000 270.000000
- E 18.000000 -7.000000 90.000000
- E 0.000000 -10.500000 270.000000
- E 18.000000 -10.500000 90.000000
- E 0.000000 -14.000000 270.000000
- E 18.000000 -14.000000 90.000000
- S 0 0.000000 0.000000 0.000000 18.000000 0.000000
- S 16777215 0.000000 0.000000 -3.500000 18.000000 -3.500000
- S 16777215 0.000000 0.000000 -7.000000 18.000000 -7.000000
- S 16777215 0.000000 0.000000 -10.500000 18.000000 -10.500000
- S 16777215 0.000000 0.000000 -14.000000 18.000000 -14.000000
- L 11579568 0.750000 -0.375000 3.8750000 18.375000 3.875000
- L 11579568 0.750000 18.375000 4.250000 18.375000 -18.250000
- L 11579568 0.750000 18.375000 -17.875000 -0.375000 -17.875000
- L 11579568 0.750000 -0.375000 -18.250000 -0.375000 4.250000
- L 0 0.046875 0.000000 3.500000 18.000000 3.500000
- L 0 0.046875 18.000000 3.500000 18.000000 -17.500000
- L 0 0.046875 18.000000 -17.500000 0.000000 -17.500000
- L 0 0.046875 0.000000 -17.500000 0.000000 3.500000
- L 0 0.046875 -0.750000 4.250000 18.750000 4.250000
- L 0 0.046875 18.750000 4.250000 18.750000 -18.250000
- L 0 0.046875 18.750000 -18.250000 -0.750000 -18.250000
- L 0 0.046875 -0.750000 -18.250000 -0.750000 4.250000
- END
-TURNOUT O "Ross 18"" 10 Stop Transfer Table (3.5"" Trk Center) TT1810" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- P "7" 7
- P "8" 8
- P "9" 9
- P "10" 10
- E 0.000000 0.000000 270.000000
- E 18.000000 0.000000 90.000000
- E 0.000000 -3.500000 270.000000
- E 18.000000 -3.500000 90.000000
- E 0.000000 -7.000000 270.000000
- E 18.000000 -7.000000 90.000000
- E 0.000000 -10.500000 270.000000
- E 18.000000 -10.500000 90.000000
- E 0.000000 -14.000000 270.000000
- E 18.000000 -14.000000 90.000000
- E 0.000000 -17.500000 270.000000
- E 18.000000 -17.500000 90.000000
- E 0.000000 -21.000000 270.000000
- E 18.000000 -21.000000 90.000000
- E 0.000000 -24.500000 270.000000
- E 18.000000 -24.500000 90.000000
- E 0.000000 -28.000000 270.000000
- E 18.000000 -28.000000 90.000000
- E 0.000000 -31.500000 270.000000
- E 18.000000 -31.500000 90.000000
- S 0 0.000000 0.000000 0.000000 18.000000 0.000000
- S 16777215 0.000000 0.000000 -3.500000 18.000000 -3.500000
- S 16777215 0.000000 0.000000 -7.000000 18.000000 -7.000000
- S 16777215 0.000000 0.000000 -10.500000 18.000000 -10.500000
- S 16777215 0.000000 0.000000 -14.000000 18.000000 -14.000000
- S 16777215 0.000000 0.000000 -17.500000 18.000000 -17.500000
- S 16777215 0.000000 0.000000 -21.000000 18.000000 -21.000000
- S 16777215 0.000000 0.000000 -24.500000 18.000000 -24.500000
- S 16777215 0.000000 0.000000 -28.000000 18.000000 -28.000000
- S 16777215 0.000000 0.000000 -31.500000 18.000000 -31.500000
- L 11579568 0.750000 -0.375000 3.8750000 18.375000 3.875000
- L 11579568 0.750000 18.375000 4.250000 18.375000 -35.750000
- L 11579568 0.750000 18.375000 -35.375000 -0.375000 -35.375000
- L 11579568 0.750000 -0.375000 -35.750000 -0.375000 4.250000
- L 0 0.046875 0.000000 3.500000 18.000000 3.500000
- L 0 0.046875 18.000000 3.500000 18.000000 -35.000000
- L 0 0.046875 18.000000 -35.000000 0.000000 -35.000000
- L 0 0.046875 0.000000 -35.000000 0.000000 3.500000
- L 0 0.046875 -0.750000 4.250000 18.750000 4.250000
- L 0 0.046875 18.750000 4.250000 18.750000 -35.750000
- L 0 0.046875 18.750000 -35.750000 -0.750000 -35.750000
- L 0 0.046875 -0.750000 -35.750000 -0.750000 4.250000
- END
-TURNOUT O "Ross 27"" 5 Stop Transfer Table (3.5"" Trk Center) TT275" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- E 0.000000 0.000000 270.000000
- E 27.000000 0.000000 90.000000
- E 0.000000 -3.500000 270.000000
- E 27.000000 -3.500000 90.000000
- E 0.000000 -7.000000 270.000000
- E 27.000000 -7.000000 90.000000
- E 0.000000 -10.500000 270.000000
- E 27.000000 -10.500000 90.000000
- E 0.000000 -14.000000 270.000000
- E 27.000000 -14.000000 90.000000
- S 0 0.000000 0.000000 0.000000 27.000000 0.000000
- S 16777215 0.000000 0.000000 -3.500000 27.000000 -3.500000
- S 16777215 0.000000 0.000000 -7.000000 27.000000 -7.000000
- S 16777215 0.000000 0.000000 -10.500000 27.000000 -10.500000
- S 16777215 0.000000 0.000000 -14.000000 27.000000 -14.000000
- L 11579568 0.750000 -0.375000 3.8750000 27.375000 3.875000
- L 11579568 0.750000 27.375000 4.250000 27.375000 -18.250000
- L 11579568 0.750000 27.375000 -17.875000 -0.375000 -17.875000
- L 11579568 0.750000 -0.375000 -18.250000 -0.375000 4.250000
- L 0 0.046875 0.000000 3.500000 27.000000 3.500000
- L 0 0.046875 27.000000 3.500000 27.000000 -17.500000
- L 0 0.046875 27.000000 -17.500000 0.000000 -17.500000
- L 0 0.046875 0.000000 -17.500000 0.000000 3.500000
- L 0 0.046875 -0.750000 4.250000 27.750000 4.250000
- L 0 0.046875 27.750000 4.250000 27.750000 -18.250000
- L 0 0.046875 27.750000 -18.250000 -0.750000 -18.250000
- L 0 0.046875 -0.750000 -18.250000 -0.750000 4.250000
- END
-TURNOUT O "Ross 27"" 10 Stop Transfer Table (3.5"" Trk Center) TT2710" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- P "7" 7
- P "8" 8
- P "9" 9
- P "10" 10
- E 0.000000 0.000000 270.000000
- E 27.000000 0.000000 90.000000
- E 0.000000 -3.500000 270.000000
- E 27.000000 -3.500000 90.000000
- E 0.000000 -7.000000 270.000000
- E 27.000000 -7.000000 90.000000
- E 0.000000 -10.500000 270.000000
- E 27.000000 -10.500000 90.000000
- E 0.000000 -14.000000 270.000000
- E 27.000000 -14.000000 90.000000
- E 0.000000 -17.500000 270.000000
- E 27.000000 -17.500000 90.000000
- E 0.000000 -21.000000 270.000000
- E 27.000000 -21.000000 90.000000
- E 0.000000 -24.500000 270.000000
- E 27.000000 -24.500000 90.000000
- E 0.000000 -28.000000 270.000000
- E 27.000000 -28.000000 90.000000
- E 0.000000 -31.500000 270.000000
- E 27.000000 -31.500000 90.000000
- S 0 0.000000 0.000000 0.000000 27.000000 0.000000
- S 16777215 0.000000 0.000000 -3.500000 27.000000 -3.500000
- S 16777215 0.000000 0.000000 -7.000000 27.000000 -7.000000
- S 16777215 0.000000 0.000000 -10.500000 27.000000 -10.500000
- S 16777215 0.000000 0.000000 -14.000000 27.000000 -14.000000
- S 16777215 0.000000 0.000000 -17.500000 27.000000 -17.500000
- S 16777215 0.000000 0.000000 -21.000000 27.000000 -21.000000
- S 16777215 0.000000 0.000000 -24.500000 27.000000 -24.500000
- S 16777215 0.000000 0.000000 -28.000000 27.000000 -28.000000
- S 16777215 0.000000 0.000000 -31.500000 27.000000 -31.500000
- L 11579568 0.750000 -0.375000 3.8750000 27.375000 3.875000
- L 11579568 0.750000 27.375000 4.250000 27.375000 -35.750000
- L 11579568 0.750000 27.375000 -35.375000 -0.375000 -35.375000
- L 11579568 0.750000 -0.375000 -35.750000 -0.375000 4.250000
- L 0 0.046875 0.000000 3.500000 27.000000 3.500000
- L 0 0.046875 27.000000 3.500000 27.000000 -35.000000
- L 0 0.046875 27.000000 -35.000000 0.000000 -35.000000
- L 0 0.046875 0.000000 -35.000000 0.000000 3.500000
- L 0 0.046875 -0.750000 4.250000 27.750000 4.250000
- L 0 0.046875 27.750000 4.250000 27.750000 -35.750000
- L 0 0.046875 27.750000 -35.750000 -0.750000 -35.750000
- L 0 0.046875 -0.750000 -35.750000 -0.750000 4.250000
- END
-TURNOUT O "Ross 36"" 5 Stop Transfer Table (3.5"" Trk Center) TT365" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- E 0.000000 0.000000 270.000000
- E 36.000000 0.000000 90.000000
- E 0.000000 -3.500000 270.000000
- E 36.000000 -3.500000 90.000000
- E 0.000000 -7.000000 270.000000
- E 36.000000 -7.000000 90.000000
- E 0.000000 -10.500000 270.000000
- E 36.000000 -10.500000 90.000000
- E 0.000000 -14.000000 270.000000
- E 36.000000 -14.000000 90.000000
- S 0 0.000000 0.000000 0.000000 36.000000 0.000000
- S 16777215 0.000000 0.000000 -3.500000 36.000000 -3.500000
- S 16777215 0.000000 0.000000 -7.000000 36.000000 -7.000000
- S 16777215 0.000000 0.000000 -10.500000 36.000000 -10.500000
- S 16777215 0.000000 0.000000 -14.000000 36.000000 -14.000000
- L 11579568 0.750000 -0.375000 3.8750000 36.375000 3.875000
- L 11579568 0.750000 36.375000 4.250000 36.375000 -18.250000
- L 11579568 0.750000 36.375000 -17.875000 -0.375000 -17.875000
- L 11579568 0.750000 -0.375000 -18.250000 -0.375000 4.250000
- L 0 0.046875 0.000000 3.500000 36.000000 3.500000
- L 0 0.046875 36.000000 3.500000 36.000000 -17.500000
- L 0 0.046875 36.000000 -17.500000 0.000000 -17.500000
- L 0 0.046875 0.000000 -17.500000 0.000000 3.500000
- L 0 0.046875 -0.750000 4.250000 36.750000 4.250000
- L 0 0.046875 36.750000 4.250000 36.750000 -18.250000
- L 0 0.046875 36.750000 -18.250000 -0.750000 -18.250000
- L 0 0.046875 -0.750000 -18.250000 -0.750000 4.250000
- END
-TURNOUT O "Ross 36"" 10 Stop Transfer Table (3.5"" Trk Center) TT3610" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- P "7" 7
- P "8" 8
- P "9" 9
- P "10" 10
- E 0.000000 0.000000 270.000000
- E 36.000000 0.000000 90.000000
- E 0.000000 -3.500000 270.000000
- E 36.000000 -3.500000 90.000000
- E 0.000000 -7.000000 270.000000
- E 36.000000 -7.000000 90.000000
- E 0.000000 -10.500000 270.000000
- E 36.000000 -10.500000 90.000000
- E 0.000000 -14.000000 270.000000
- E 36.000000 -14.000000 90.000000
- E 0.000000 -17.500000 270.000000
- E 36.000000 -17.500000 90.000000
- E 0.000000 -21.000000 270.000000
- E 36.000000 -21.000000 90.000000
- E 0.000000 -24.500000 270.000000
- E 36.000000 -24.500000 90.000000
- E 0.000000 -28.000000 270.000000
- E 36.000000 -28.000000 90.000000
- E 0.000000 -31.500000 270.000000
- E 36.000000 -31.500000 90.000000
- S 0 0.000000 0.000000 0.000000 36.000000 0.000000
- S 16777215 0.000000 0.000000 -3.500000 36.000000 -3.500000
- S 16777215 0.000000 0.000000 -7.000000 36.000000 -7.000000
- S 16777215 0.000000 0.000000 -10.500000 36.000000 -10.500000
- S 16777215 0.000000 0.000000 -14.000000 36.000000 -14.000000
- S 16777215 0.000000 0.000000 -17.500000 36.000000 -17.500000
- S 16777215 0.000000 0.000000 -21.000000 36.000000 -21.000000
- S 16777215 0.000000 0.000000 -24.500000 36.000000 -24.500000
- S 16777215 0.000000 0.000000 -28.000000 36.000000 -28.000000
- S 16777215 0.000000 0.000000 -31.500000 36.000000 -31.500000
- L 11579568 0.750000 -0.375000 3.8750000 36.375000 3.875000
- L 11579568 0.750000 36.375000 4.250000 36.375000 -35.750000
- L 11579568 0.750000 36.375000 -35.375000 -0.375000 -35.375000
- L 11579568 0.750000 -0.375000 -35.750000 -0.375000 4.250000
- L 0 0.046875 0.000000 3.500000 36.000000 3.500000
- L 0 0.046875 36.000000 3.500000 36.000000 -35.000000
- L 0 0.046875 36.000000 -35.000000 0.000000 -35.000000
- L 0 0.046875 0.000000 -35.000000 0.000000 3.500000
- L 0 0.046875 -0.750000 4.250000 36.750000 4.250000
- L 0 0.046875 36.750000 4.250000 36.750000 -35.750000
- L 0 0.046875 36.750000 -35.750000 -0.750000 -35.750000
- L 0 0.046875 -0.750000 -35.750000 -0.750000 4.250000
- END
-
-SUBCONTENTS Ross - Roundhouses
-TURNOUT O "Ross 33"" 6 Stall Roundhouse RH336" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- E 16.500000 0.000000 270.000000
- E 16.358840 2.153682 262.500000
- E 15.937776 4.270514 255.000000
- E 15.244012 6.314277 247.500000
- E 14.289416 8.250000 240.000000
- E 13.090330 10.044564 232.500000
- S 0 0.000000 16.500000 0.000000 66.2500000 0.000000
- S 0 0.000000 16.358840 2.153682 65.683222 8.647360
- S 0 0.000000 15.937776 4.270514 63.992586 17.146762
- S 0 0.000000 15.244012 6.314277 61.207019 25.352777
- S 0 0.000000 14.289416 8.250000 57.374183 33.125000
- S 0 0.000000 13.090330 10.044564 52.559659 40.330445
- L 8404992 0.100000 31.000000 -2.031847 68.666610 -4.500647
- L 8404992 0.100000 31.000000 -0.739166 66.250000 -0.739166
- L 8404992 0.100000 31.000000 0.739166 66.250000 0.739166
- L 8404992 0.100000 31.000000 2.031847 68.666610 4.500647
- L 8404992 0.100000 31.000000 0.739166 31.000000 2.031847
- L 8404992 0.100000 31.000000 -0.739166 31.000000 -2.031847
- L 8404992 0.100000 66.250000 0.739166 66.250000 -0.739166
- L 8404992 0.100000 68.666610 4.500647 68.666610 -4.500647
- L 8404992 0.100000 30.831271 3.313470 65.779703 7.914518
- L 8404992 0.100000 30.638310 4.779154 65.586742 9.380202
- L 8404992 0.100000 30.469581 6.060777 67.491705 13.424935
- L 8404992 0.100000 31.000000 2.031847 30.831271 3.313470
- L 8404992 0.100000 30.638310 4.779154 30.469581 6.060777
- L 8404992 0.100000 65.586742 9.380202 65.779703 7.914518
- L 8404992 0.100000 67.491705 13.424935 68.666610 4.500647
- L 8404992 0.100000 30.135011 7.309411 64.183896 16.432783
- L 8404992 0.100000 29.752391 8.737369 63.801276 17.860741
- L 8404992 0.100000 29.417820 9.986004 65.161999 22.119518
- L 8404992 0.100000 30.469581 6.060777 30.135011 7.309411
- L 8404992 0.100000 29.752391 8.737369 29.417820 9.986004
- L 8404992 0.100000 63.801276 17.860741 64.183896 16.432783
- L 8404992 0.100000 65.16199 22.119518 67.491705 13.424935
- L 8404992 0.100000 28.923132 11.180287 61.489885 24.669878
- L 8404992 0.100000 28.357399 12.546086 60.924153 26.035677
- L 8404992 0.100000 27.862711 13.740369 61.717352 30.435630
- L 8404992 0.100000 29.417820 9.986004 28.923132 11.180287
- L 8404992 0.100000 28.357399 12.546086 27.862711 13.740369
- L 8404992 0.100000 60.924153 26.035677 61.489885 24.669878
- L 8404992 0.100000 61.717352 30.435630 65.161999 22.119518
- L 8404992 0.100000 27.216370 14.859864 57.743766 32.484864
- L 8404992 0.100000 26.477205 16.140136 57.004600 33.765136
- L 8404992 0.100000 25.830864 17.259631 57.216705 38.230980
- L 8404992 0.100000 27.862711 13.740369 27.216370 14.859864
- L 8404992 0.100000 26.477205 16.140136 25.830864 17.259631
- L 8404992 0.100000 57.004600 33.765136 57.743766 32.484864
- L 8404992 0.100000 57.216705 38.230980 61.717352 30.435630
- L 8404992 0.100000 25.043929 18.285185 53.009634 39.744025
- L 8404992 0.100000 24.143978 19.458024 52.109683 40.916864
- L 8404992 0.100000 23.357043 20.483577 51.737064 45.372187
- L 8404992 0.100000 25.830864 17.259631 25.043929 18.285185
- L 8404992 0.100000 24.143978 19.458024 23.357043 20.483577
- L 8404992 0.100000 52.109683 40.916864 53.009634 39.744025
- L 8404992 0.100000 51.737064 45.372187 57.216705 38.230980
- END
-TURNOUT O "Ross 33"" 6 Stall Add-On Roundhouse RH336A" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- E 16.500000 0.000000 270.000000
- E 16.358840 2.153682 262.500000
- E 15.937776 4.270514 255.000000
- E 15.244012 6.314277 247.500000
- E 14.289416 8.250000 240.000000
- E 13.090330 10.044564 232.500000
- S 0 0.000000 16.500000 0.000000 66.2500000 0.000000
- S 0 0.000000 16.358840 2.153682 65.683222 8.647360
- S 0 0.000000 15.937776 4.270514 63.992586 17.146762
- S 0 0.000000 15.244012 6.314277 61.207019 25.352777
- S 0 0.000000 14.289416 8.250000 57.374183 33.125000
- S 0 0.000000 13.090330 10.044564 52.559659 40.330445
-# L 8404992 0.100000 31.000000 -2.031847 68.666610 -4.500647
- L 8404992 0.100000 31.000000 -0.739166 66.250000 -0.739166
- L 8404992 0.100000 31.000000 0.739166 66.250000 0.739166
- L 8404992 0.100000 31.000000 2.031847 68.666610 4.500647
- L 8404992 0.100000 31.000000 0.739166 31.000000 2.031847
- L 8404992 0.100000 31.000000 -0.739166 31.000000 -2.031847
- L 8404992 0.100000 66.250000 0.739166 66.250000 -0.739166
- L 8404992 0.100000 68.666610 4.500647 68.666610 -4.500647
- L 8404992 0.100000 30.831271 3.313470 65.779703 7.914518
- L 8404992 0.100000 30.638310 4.779154 65.586742 9.380202
- L 8404992 0.100000 30.469581 6.060777 67.491705 13.424935
- L 8404992 0.100000 31.000000 2.031847 30.831271 3.313470
- L 8404992 0.100000 30.638310 4.779154 30.469581 6.060777
- L 8404992 0.100000 65.586742 9.380202 65.779703 7.914518
- L 8404992 0.100000 67.491705 13.424935 68.666610 4.500647
- L 8404992 0.100000 30.135011 7.309411 64.183896 16.432783
- L 8404992 0.100000 29.752391 8.737369 63.801276 17.860741
- L 8404992 0.100000 29.417820 9.986004 65.161999 22.119518
- L 8404992 0.100000 30.469581 6.060777 30.135011 7.309411
- L 8404992 0.100000 29.752391 8.737369 29.417820 9.986004
- L 8404992 0.100000 63.801276 17.860741 64.183896 16.432783
- L 8404992 0.100000 65.16199 22.119518 67.491705 13.424935
- L 8404992 0.100000 28.923132 11.180287 61.489885 24.669878
- L 8404992 0.100000 28.357399 12.546086 60.924153 26.035677
- L 8404992 0.100000 27.862711 13.740369 61.717352 30.435630
- L 8404992 0.100000 29.417820 9.986004 28.923132 11.180287
- L 8404992 0.100000 28.357399 12.546086 27.862711 13.740369
- L 8404992 0.100000 60.924153 26.035677 61.489885 24.669878
- L 8404992 0.100000 61.717352 30.435630 65.161999 22.119518
- L 8404992 0.100000 27.216370 14.859864 57.743766 32.484864
- L 8404992 0.100000 26.477205 16.140136 57.004600 33.765136
- L 8404992 0.100000 25.830864 17.259631 57.216705 38.230980
- L 8404992 0.100000 27.862711 13.740369 27.216370 14.859864
- L 8404992 0.100000 26.477205 16.140136 25.830864 17.259631
- L 8404992 0.100000 57.004600 33.765136 57.743766 32.484864
- L 8404992 0.100000 57.216705 38.230980 61.717352 30.435630
- L 8404992 0.100000 25.043929 18.285185 53.009634 39.744025
- L 8404992 0.100000 24.143978 19.458024 52.109683 40.916864
- L 8404992 0.100000 23.357043 20.483577 51.737064 45.372187
- L 8404992 0.100000 25.830864 17.259631 25.043929 18.285185
- L 8404992 0.100000 24.143978 19.458024 23.357043 20.483577
- L 8404992 0.100000 52.109683 40.916864 53.009634 39.744025
- L 8404992 0.100000 51.737064 45.372187 57.216705 38.230980
- END
-TURNOUT O "Ross 33"" 3 Stall Roundhouse RH333" 512
- P "1" 1
- P "2" 2
- P "3" 3
- E 16.500000 0.000000 270.000000
- E 16.358840 2.153682 262.500000
- E 15.937776 4.270514 255.000000
- S 0 0.000000 16.500000 0.000000 66.2500000 0.000000
- S 0 0.000000 16.358840 2.153682 65.683222 8.647360
- S 0 0.000000 15.937776 4.270514 63.992586 17.146762
- L 8404992 0.100000 31.000000 -2.031847 68.666610 -4.500647
- L 8404992 0.100000 31.000000 -0.739166 66.250000 -0.739166
- L 8404992 0.100000 31.000000 0.739166 66.250000 0.739166
- L 8404992 0.100000 31.000000 2.031847 68.666610 4.500647
- L 8404992 0.100000 31.000000 0.739166 31.000000 2.031847
- L 8404992 0.100000 31.000000 -0.739166 31.000000 -2.031847
- L 8404992 0.100000 66.250000 0.739166 66.250000 -0.739166
- L 8404992 0.100000 68.666610 4.500647 68.666610 -4.500647
- L 8404992 0.100000 30.831271 3.313470 65.779703 7.914518
- L 8404992 0.100000 30.638310 4.779154 65.586742 9.380202
- L 8404992 0.100000 30.469581 6.060777 67.491705 13.424935
- L 8404992 0.100000 31.000000 2.031847 30.831271 3.313470
- L 8404992 0.100000 30.638310 4.779154 30.469581 6.060777
- L 8404992 0.100000 65.586742 9.380202 65.779703 7.914518
- L 8404992 0.100000 67.491705 13.424935 68.666610 4.500647
- L 8404992 0.100000 30.135011 7.309411 64.183896 16.432783
- L 8404992 0.100000 29.752391 8.737369 63.801276 17.860741
- L 8404992 0.100000 29.417820 9.986004 65.161999 22.119518
- L 8404992 0.100000 30.469581 6.060777 30.135011 7.309411
- L 8404992 0.100000 29.752391 8.737369 29.417820 9.986004
- L 8404992 0.100000 63.801276 17.860741 64.183896 16.432783
- L 8404992 0.100000 65.16199 22.119518 67.491705 13.424935
- END
-TURNOUT O "Ross 33"" 3 Stall Add-On Roundhouse RH333A" 512
- P "1" 1
- P "2" 2
- P "3" 3
- E 16.500000 0.000000 270.000000
- E 16.358840 2.153682 262.500000
- E 15.937776 4.270514 255.000000
- S 0 0.000000 16.500000 0.000000 66.2500000 0.000000
- S 0 0.000000 16.358840 2.153682 65.683222 8.647360
- S 0 0.000000 15.937776 4.270514 63.992586 17.146762
-# L 8404992 0.100000 31.000000 -2.031847 68.666610 -4.500647
- L 8404992 0.100000 31.000000 -0.739166 66.250000 -0.739166
- L 8404992 0.100000 31.000000 0.739166 66.250000 0.739166
- L 8404992 0.100000 31.000000 2.031847 68.666610 4.500647
- L 8404992 0.100000 31.000000 0.739166 31.000000 2.031847
- L 8404992 0.100000 31.000000 -0.739166 31.000000 -2.031847
- L 8404992 0.100000 66.250000 0.739166 66.250000 -0.739166
- L 8404992 0.100000 68.666610 4.500647 68.666610 -4.500647
- L 8404992 0.100000 30.831271 3.313470 65.779703 7.914518
- L 8404992 0.100000 30.638310 4.779154 65.586742 9.380202
- L 8404992 0.100000 30.469581 6.060777 67.491705 13.424935
- L 8404992 0.100000 31.000000 2.031847 30.831271 3.313470
- L 8404992 0.100000 30.638310 4.779154 30.469581 6.060777
- L 8404992 0.100000 65.586742 9.380202 65.779703 7.914518
- L 8404992 0.100000 67.491705 13.424935 68.666610 4.500647
- L 8404992 0.100000 30.135011 7.309411 64.183896 16.432783
- L 8404992 0.100000 29.752391 8.737369 63.801276 17.860741
- L 8404992 0.100000 29.417820 9.986004 65.161999 22.119518
- L 8404992 0.100000 30.469581 6.060777 30.135011 7.309411
- L 8404992 0.100000 29.752391 8.737369 29.417820 9.986004
- L 8404992 0.100000 63.801276 17.860741 64.183896 16.432783
- L 8404992 0.100000 65.16199 22.119518 67.491705 13.424935
- END
-
-SUBCONTENTS Ross - Bridges (Single Track)
-TURNOUT O "Ross 9"" Deck Girder Bridge Single Track BRDGDW9"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 9.000000 0.000000
- L 8404992 1.000000 0.000000 1.250000 9.000000 1.250000
- L 8404992 1.000000 0.000000 -1.250000 9.000000 -1.250000
- END
-TURNOUT O "Ross 12"" Deck Girder Bridge Single Track BRDGDW12"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 12.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 12.000000 0.000000
- L 8404992 1.000000 0.000000 1.250000 12.000000 1.250000
- L 8404992 1.000000 0.000000 -1.250000 12.000000 -1.250000
- END
-TURNOUT O "Ross 15"" Deck Girder Bridge Single Track BRDGDW15"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 15.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 15.000000 0.000000
- L 8404992 1.000000 0.000000 1.250000 15.000000 1.250000
- L 8404992 1.000000 0.000000 -1.250000 15.000000 -1.250000
- END
-TURNOUT O "Ross 18"" Deck Girder Bridge Single Track BRDGDW18"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 18.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 18.000000 0.000000
- L 8404992 1.000000 0.000000 1.250000 18.000000 1.250000
- L 8404992 1.000000 0.000000 -1.250000 18.000000 -1.250000
- END
-TURNOUT O "Ross 24"" Deck Girder Bridge Single Track BRDGDW24"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 24.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 24.000000 0.000000
- L 8404992 1.000000 0.000000 1.250000 24.000000 1.250000
- L 8404992 1.000000 0.000000 -1.250000 24.000000 -1.250000
- END
-TURNOUT O "Ross 30"" Deck Girder Bridge Single Track BRDGDW30"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 30.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 30.000000 0.000000
- L 8404992 1.000000 0.000000 1.250000 30.000000 1.250000
- L 8404992 1.000000 0.000000 -1.250000 30.000000 -1.250000
- END
-TURNOUT O "Ross 36"" Deck Girder Bridge Single Track BRDGDW36"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 36.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 36.000000 0.000000
- L 8404992 1.000000 0.000000 1.250000 36.000000 1.250000
- L 8404992 1.000000 0.000000 -1.250000 36.000000 -1.250000
- END
-
-SUBCONTENTS Ross - Bridges (Double Track)
-TURNOUT O "Ross 9"" Deck Girder Bridge Double Track BRDTDGDW9"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 9.000000 0.000000 90.000000
- E 0.000000 -3.500000 270.000000
- E 9.000000 -3.500000 90.000000
- S 0 0.000000 0.000000 0.000000 9.000000 0.000000
- S 0 0.000000 0.000000 -3.500000 9.000000 -3.500000
- L 8404992 1.000000 0.000000 1.250000 9.000000 1.250000
- L 8404992 1.000000 0.000000 -4.750000 9.000000 -4.750000
- END
-TURNOUT O "Ross 12"" Deck Girder Bridge Double Track BRDTDGDW12"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 12.000000 0.000000 90.000000
- E 0.000000 -3.500000 270.000000
- E 12.000000 -3.500000 90.000000
- S 0 0.000000 0.000000 0.000000 12.000000 0.000000
- S 0 0.000000 0.000000 -3.500000 12.000000 -3.500000
- L 8404992 1.000000 0.000000 1.250000 12.000000 1.250000
- L 8404992 1.000000 0.000000 -4.750000 12.000000 -4.750000
- END
-TURNOUT O "Ross 15"" Deck Girder Bridge Double Track BRDTDGDW15"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 15.000000 0.000000 90.000000
- E 0.000000 -3.500000 270.000000
- E 15.000000 -3.500000 90.000000
- S 0 0.000000 0.000000 0.000000 15.000000 0.000000
- S 0 0.000000 0.000000 -3.500000 15.000000 -3.500000
- L 8404992 1.000000 0.000000 1.250000 15.000000 1.250000
- L 8404992 1.000000 0.000000 -4.750000 15.000000 -4.750000
- END
-TURNOUT O "Ross 18"" Deck Girder Bridge Double Track BRDTDGDW18"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 18.000000 0.000000 90.000000
- E 0.000000 -3.500000 270.000000
- E 18.000000 -3.500000 90.000000
- S 0 0.000000 0.000000 0.000000 18.000000 0.000000
- S 0 0.000000 0.000000 -3.500000 18.000000 -3.500000
- L 8404992 1.000000 0.000000 1.250000 18.000000 1.250000
- L 8404992 1.000000 0.000000 -4.750000 18.000000 -4.750000
- END
-TURNOUT O "Ross 24"" Deck Girder Bridge Double Track BRDTDGDW24"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 24.000000 0.000000 90.000000
- E 0.000000 -3.500000 270.000000
- E 24.000000 -3.500000 90.000000
- S 0 0.000000 0.000000 0.000000 24.000000 0.000000
- S 0 0.000000 0.000000 -3.500000 24.000000 -3.500000
- L 8404992 1.000000 0.000000 1.250000 24.000000 1.250000
- L 8404992 1.000000 0.000000 -4.750000 24.000000 -4.750000
- END
-TURNOUT O "Ross 30"" Deck Girder Bridge Double Track BRDTDGDW30"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 30.000000 0.000000 90.000000
- E 0.000000 -3.500000 270.000000
- E 30.000000 -3.500000 90.000000
- S 0 0.000000 0.000000 0.000000 30.000000 0.000000
- S 0 0.000000 0.000000 -3.500000 30.000000 -3.500000
- L 8404992 1.000000 0.000000 1.250000 30.000000 1.250000
- L 8404992 1.000000 0.000000 -4.750000 30.000000 -4.750000
- END
-TURNOUT O "Ross 36"" Deck Girder Bridge Double Track BRDTDGDW36"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 36.000000 0.000000 90.000000
- E 0.000000 -3.500000 270.000000
- E 36.000000 -3.500000 90.000000
- S 0 0.000000 0.000000 0.000000 36.000000 0.000000
- S 0 0.000000 0.000000 -3.500000 36.000000 -3.500000
- L 8404992 1.000000 0.000000 1.250000 36.000000 1.250000
- L 8404992 1.000000 0.000000 -4.750000 36.000000 -4.750000
- END
-
+CONTENTS Ross O Scale
+
+SUBCONTENTS Ross - Premiere Line Switches
+TURNOUT O "Ross #4 Left-Hand 201" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.645589 0.000000 90.000000
+ E 14.167540 2.000000 76.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ S 0 0.000000 1.250000 0.000000 14.645589 0.000000
+ C 0 0.000000 -39.874542 1.250000 39.874542 166.000000 14.000000
+ S 0 0.000000 10.896525 1.184444 14.167540 2.000000
+ END$SEGS
+TURNOUT O "Ross #4 Right-Hand 200" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.645589 0.000000 90.000000
+ E 14.167540 -2.000000 104.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 -0.000000
+ S 0 0.000000 1.250000 -0.000000 14.645589 0.000000
+ C 0 0.000000 39.874542 1.250000 -39.874542 0.000000 14.000000
+ S 0 0.000000 10.896525 -1.184444 14.167540 -2.000000
+ END$SEGS
+TURNOUT O "Ross #6 Left-Hand 211" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 19.102946 0.000000 90.000000
+ E 19.590663 2.000000 80.500000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ S 0 0.000000 1.250000 0.000000 19.102946 0.000000
+ C 0 0.000000 -76.890818 1.250000 76.890818 170.500000 9.500000
+ S 0 0.000000 13.940645 1.054511 19.590663 2.000000
+ END$SEGS
+TURNOUT O "Ross #6 Right-Hand 210" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 19.102946 0.000000 90.000000
+ E 19.590663 -2.000000 99.500000
+ S 0 0.000000 0.000000 0.000000 1.250000 -0.000000
+ S 0 0.000000 1.250000 -0.000000 19.102946 0.000000
+ C 0 0.000000 76.890818 1.250000 -76.890818 0.000000 9.500000
+ S 0 0.000000 13.940645 -1.054511 19.590663 -2.000000
+ END$SEGS
+TURNOUT O "Ross #8 Left-Hand 221" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 23.560303 0.000000 90.000000
+ E 24.001349 2.000000 83.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ S 0 0.000000 1.250000 0.000000 23.560303 0.000000
+ C 0 0.000000 -105.663494 1.250000 105.663494 173.000000 7.000000
+ S 0 0.000000 14.127141 0.787600 24.001349 2.000000
+ END$SEGS
+TURNOUT O "Ross #8 Right-Hand 220" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 23.560303 0.000000 90.000000
+ E 24.001349 -2.000000 97.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 -0.000000
+ S 0 0.000000 1.250000 -0.000000 23.560303 0.000000
+ C 0 0.000000 105.663494 1.250000 -105.663494 0.000000 7.000000
+ S 0 0.000000 14.127141 -0.787600 24.001349 -2.000000
+ END$SEGS
+TURNOUT O "Ross #10 Left-Hand 251" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 27.796657 0.000000 90.000000
+ E 27.380873 2.000000 84.300000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ S 0 0.000000 1.250000 0.000000 27.796657 0.000000
+ C 0 0.000000 -122.400483 1.250000 122.400483 174.300000 5.700000
+ S 0 0.000000 13.406785 0.605201 27.380873 2.000000
+ END$SEGS
+TURNOUT O "Ross #10 Right-Hand 250" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 27.796657 0.000000 90.000000
+ E 27.380873 -2.000000 95.700000
+ S 0 0.000000 0.000000 0.000000 1.250000 -0.000000
+ S 0 0.000000 1.250000 -0.000000 27.796657 0.000000
+ C 0 0.000000 122.400483 1.250000 -122.400483 0.000000 5.700000
+ S 0 0.000000 13.406785 -0.605201 27.380873 -2.000000
+ END$SEGS
+
+
+SUBCONTENTS Ross - Premiere Line Dbl-XOver and Slip Switches
+TURNOUT O "Ross Double-Slip 270" 512
+ P "Cross1" 1 2 3
+ P "Cross2" 4 5 6
+ P "Slip1" 1 7 6
+ P "Slip2" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 16.534268 0.000000 90.000000
+ E 0.245569 2.000001 284.000000
+ E 16.288699 -2.000001 104.000000
+ S 0 0.000000 0.000000 0.000000 2.500000 0.000000
+ S 0 0.000000 2.500000 0.000000 14.034268 0.000000
+ S 0 0.000000 14.034268 0.000000 16.534268 0.000000
+ S 0 0.000000 0.245569 2.000001 2.671309 1.395196
+ S 0 0.000000 2.671309 1.395196 13.862959 -1.395196
+ S 0 0.000000 13.862959 -1.395196 16.288699 -2.000001
+ C 0 0.000000 46.969537 2.500000 -46.969537 0.000000 14.000000
+ C 0 0.000000 -46.969537 14.034268 46.969537 180.000000 14.000000
+ END$SEGS
+TURNOUT O "Ross #8 Double Crossover 280" 0
+ P "Normal" 1 2 3 0 4 5 6
+ P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
+ E 0.000000 0.000000 270.000000
+ E 49.296522 0.000000 90.000000
+ E 0.000000 4.000000 270.000000
+ E 49.296522 4.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 2.330278 0.000000
+ S 0 0.000000 2.330278 0.000000 46.966244 0.000000
+ S 0 0.000000 46.966244 0.000000 49.296522 0.000000
+ S 0 0.000000 0.000000 4.000000 2.330278 4.000000
+ S 0 0.000000 2.330278 4.000000 46.966244 4.000000
+ S 0 0.000000 46.966244 4.000000 49.296522 4.000000
+ C 0 0.000000 -125.132464 2.330278 125.132464 170.298901 9.701099
+ S 0 0.000000 23.416136 1.789365 25.880386 2.210635
+ C 0 0.000000 125.132464 46.966244 -121.132464 350.298901 9.701099
+ C 0 0.000000 125.132464 2.330278 -121.132464 360.000000 9.701099
+ S 0 0.000000 23.416136 2.210635 25.880386 1.789365
+ C 0 0.000000 -125.132464 46.966244 125.132464 180.000000 9.701099
+ END$SEGS
+
+
+SUBCONTENTS Ross - Premiere Line WYE Switches
+TURNOUT O "Ross #4 3-WAY 204" 0
+ P "Left" 1 2 3
+ P "Normal" 1 6
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 14.167533 2.000000 76.000000
+ E 14.167533 -2.000000 104.000000
+ E 14.645589 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ C 0 0.000000 -39.874485 1.250000 39.874485 166.000000 14.000000
+ S 0 0.000000 10.896511 1.184443 14.167533 2.000000
+ C 0 0.000000 39.874485 1.250000 -39.874485 0.000000 14.000000
+ S 0 0.000000 10.896511 -1.184443 14.167533 -2.000000
+ S 0 0.000000 1.250000 0.000000 14.645589 0.000000
+ END$SEGS
+
+
+SUBCONTENTS Ross - Premiere Line Curved Switches
+TURNOUT O "Ross O92-O72 Left-Hand #6 Curve Switch 231" 0
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 18.368786 3.653864 67.500000
+ E 18.041898 5.895230 56.400000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ C 0 0.000000 -26.228541 1.250000 26.228541 146.400000 33.600000
+ S 0 0.000000 15.764653 4.382232 18.041898 5.895230
+ C 0 0.000000 -41.714741 1.250000 41.714741 157.500000 22.500000
+ S 0 0.000000 17.213540 3.175346 18.368786 3.653864
+ END$SEGS
+TURNOUT O "Ross O92-O72 Right-Hand #6 Curve Switch 230" 0
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 18.368786 -3.653864 112.500000
+ E 18.041898 -5.895230 123.600000
+ S 0 0.000000 0.000000 0.000000 1.250000 -0.000000
+ C 0 0.000000 26.228541 1.250000 -26.228541 0.000000 33.600000
+ S 0 0.000000 15.764653 -4.382232 18.041898 -5.895230
+ C 0 0.000000 41.714741 1.250000 -41.714741 0.000000 22.500000
+ S 0 0.000000 17.213540 -3.175346 18.368786 -3.653864
+ END$SEGS
+TURNOUT O "Ross O120-O96 Left-Hand #8 Curve Switch 241" 0
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 22.960991 4.567300 67.500000
+ E 21.999916 6.505176 59.500000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ C 0 0.000000 -35.602364 1.250000 35.602364 149.500000 30.500000
+ S 0 0.000000 19.319566 4.926329 21.999916 6.505176
+ C 0 0.000000 -53.714877 1.250000 53.714877 157.500000 22.500000
+ S 0 0.000000 21.805794 4.088802 22.960991 4.567300
+ END$SEGS
+TURNOUT O "Ross O120-O96 Right-Hand #8 Curve Switch 240" 0
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 22.960991 -4.567300 112.500000
+ E 21.999916 -6.505176 120.500000
+ S 0 0.000000 0.000000 0.000000 1.250000 -0.000000
+ C 0 0.000000 35.602364 1.250000 -35.602364 0.000000 30.500000
+ S 0 0.000000 19.319566 -4.926329 21.999916 -6.505176
+ C 0 0.000000 53.714877 1.250000 -53.714877 0.000000 22.500000
+ S 0 0.000000 21.805794 -4.088802 22.960991 -4.567300
+ END$SEGS
+
+
+#################################################################
+SUBCONTENTS Ross - Super Line Switches
+TURNOUT O "Ross 11d Left-Hand 101" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.645589 0.000000 90.000000
+ E 15.148626 2.127237 79.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ S 0 0.000000 1.250000 0.000000 14.645589 0.000000
+ C 0 0.000000 -30.688229 1.250000 30.688229 169.000000 11.000000
+ S 0 0.000000 7.105590 0.563829 15.148626 2.127237
+ END$SEGS
+TURNOUT O "Ross 11d Right-Hand 100" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.645589 0.000000 90.000000
+ E 15.148626 -2.127237 101.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 -0.000000
+ S 0 0.000000 1.250000 -0.000000 14.645589 0.000000
+ C 0 0.000000 30.688229 1.250000 -30.688229 0.000000 11.000000
+ S 0 0.000000 7.105590 -0.563829 15.148626 -2.127237
+ END$SEGS
+TURNOUT O "Ross O31 Left-Hand 106" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.645589 0.000000 90.000000
+ E 10.960115 4.536845 45.000000
+ S 0 0.000000 0.000000 0.000000 1.257202 0.000000
+ S 0 0.000000 1.257202 0.000000 14.645589 0.000000
+ C 0 0.000000 -12.471991 1.257202 12.471991 135.000000 45.000000
+ S 0 0.000000 10.076232 3.652962 10.960115 4.536845
+ END$SEGS
+TURNOUT O "Ross O31 Right-Hand 105" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.645589 0.000000 90.000000
+ E 10.960115 -4.536845 135.000000
+ S 0 0.000000 0.000000 0.000000 1.257202 -0.000000
+ S 0 0.000000 1.257202 -0.000000 14.645589 0.000000
+ C 0 0.000000 12.471991 1.257202 -12.471991 0.000000 45.000000
+ S 0 0.000000 10.076232 -3.652962 10.960115 -4.536845
+ END$SEGS
+TURNOUT O "Ross O42 Left-Hand 111" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.645589 0.000000 90.000000
+ E 11.128305 3.190990 58.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ S 0 0.000000 1.250000 0.000000 14.645589 0.000000
+ C 0 0.000000 -16.640732 1.250000 16.640732 148.000000 32.000000
+ S 0 0.000000 10.068245 2.528591 11.128305 3.190990
+ END$SEGS
+TURNOUT O "Ross O42 Right-Hand 110" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.645589 0.000000 90.000000
+ E 11.128305 -3.190990 122.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 -0.000000
+ S 0 0.000000 1.250000 -0.000000 14.645589 0.000000
+ C 0 0.000000 16.640732 1.250000 -16.640732 0.000000 32.000000
+ S 0 0.000000 10.068245 -2.528591 11.128305 -3.190990
+ END$SEGS
+TURNOUT O "Ross O54 Left-Hand 116" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.645589 0.000000 90.000000
+ E 13.500000 3.617314 60.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ S 0 0.000000 1.250000 0.000000 14.645589 0.000000
+ C 0 0.000000 -22.334936 1.250000 22.334936 150.000000 30.000000
+ S 0 0.000000 12.417468 2.992314 13.500000 3.617314
+ END$SEGS
+TURNOUT O "Ross O54 Right-Hand 115" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.645589 0.000000 90.000000
+ E 13.500000 -3.617314 120.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 -0.000000
+ S 0 0.000000 1.250000 -0.000000 14.645589 0.000000
+ C 0 0.000000 22.334936 1.250000 -22.334936 0.000000 30.000000
+ S 0 0.000000 12.417468 -2.992314 13.500000 -3.617314
+ END$SEGS
+TURNOUT O "Ross O64 Left-Hand 121" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.645589 0.000000 90.000000
+ E 12.245870 2.435855 67.500000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ S 0 0.000000 1.250000 0.000000 14.645589 0.000000
+ C 0 0.000000 -25.715826 1.250000 25.715826 157.500000 22.500000
+ S 0 0.000000 11.091021 1.957501 12.245870 2.435855
+ END$SEGS
+TURNOUT O "Ross O64 Right-Hand 120" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.645589 0.000000 90.000000
+ E 12.245870 -2.435855 112.500000
+ S 0 0.000000 0.000000 0.000000 1.250000 -0.000000
+ S 0 0.000000 1.250000 -0.000000 14.645589 0.000000
+ C 0 0.000000 25.715826 1.250000 -25.715826 0.000000 22.500000
+ S 0 0.000000 11.091021 -1.957501 12.245870 -2.435855
+ END$SEGS
+TURNOUT O "Ross O72 Left-Hand 126" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.645589 0.000000 90.000000
+ E 13.776604 2.740337 67.500000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ S 0 0.000000 1.250000 0.000000 14.645589 0.000000
+ C 0 0.000000 -29.715826 1.250000 29.715826 157.500000 22.500000
+ S 0 0.000000 12.621754 2.261983 13.776604 2.740337
+ END$SEGS
+TURNOUT O "Ross O72 Right-Hand 125" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.645589 0.000000 90.000000
+ E 13.776604 -2.740337 112.500000
+ S 0 0.000000 0.000000 0.000000 1.250000 -0.000000
+ S 0 0.000000 1.250000 -0.000000 14.645589 0.000000
+ C 0 0.000000 29.715826 1.250000 -29.715826 0.000000 22.500000
+ S 0 0.000000 12.621754 -2.261983 13.776604 -2.740337
+ END$SEGS
+TURNOUT O "Ross O80 Left-Hand 131" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.645589 0.000000 90.000000
+ E 15.307337 3.044819 67.500000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ S 0 0.000000 1.250000 0.000000 14.645589 0.000000
+ C 0 0.000000 -33.715821 1.250000 33.715821 157.500000 22.500000
+ S 0 0.000000 14.152486 2.566464 15.307337 3.044819
+ END$SEGS
+TURNOUT O "Ross O80 Right-Hand 130" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.645589 0.000000 90.000000
+ E 15.307337 -3.044819 112.500000
+ S 0 0.000000 0.000000 0.000000 1.250000 -0.000000
+ S 0 0.000000 1.250000 -0.000000 14.645589 0.000000
+ C 0 0.000000 33.715821 1.250000 -33.715821 0.000000 22.500000
+ S 0 0.000000 14.152486 -2.566464 15.307337 -3.044819
+ END$SEGS
+TURNOUT O "Ross O96 Left-Hand 141" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 19.119487 0.000000 90.000000
+ E 18.368805 3.653782 67.500000
+ S 0 0.000000 0.000000 0.000000 1.250002 0.000000
+ S 0 0.000000 1.250002 0.000000 19.119487 0.000000
+ C 0 0.000000 -41.715820 1.250002 41.715820 157.500000 22.500000
+ S 0 0.000000 17.213956 3.175428 18.368805 3.653782
+ END$SEGS
+TURNOUT O "Ross O96 Right-Hand 140" 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 19.119487 0.000000 90.000000
+ E 18.368805 -3.653782 112.500000
+ S 0 0.000000 0.000000 0.000000 1.250002 -0.000000
+ S 0 0.000000 1.250002 -0.000000 19.119487 0.000000
+ C 0 0.000000 41.715820 1.250002 -41.715820 0.000000 22.500000
+ S 0 0.000000 17.213956 -3.175428 18.368805 -3.653782
+ END$SEGS
+
+
+SUBCONTENTS Ross - Super Line Dbl-XOver and Slip Switches
+TURNOUT O "Ross Double Crossover 175" 0
+ P "Normal" 1 2 3 0 4 5 6
+ P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
+ E 0.000000 0.000000 270.000000
+ E 31.838243 0.000000 90.000000
+ E 0.000000 4.567949 270.000000
+ E 31.838243 4.567949 90.000000
+ S 0 0.000000 0.000000 0.000000 2.152613 0.000000
+ S 0 0.000000 2.152613 0.000000 29.685630 0.000000
+ S 0 0.000000 29.685630 0.000000 31.838243 0.000000
+ S 0 0.000000 0.000000 4.567949 2.152613 4.567949
+ S 0 0.000000 2.152613 4.567949 29.685630 4.567949
+ S 0 0.000000 29.685630 4.567949 31.838243 4.567949
+ C 0 0.000000 -42.288299 2.152613 42.288299 162.703466 17.296534
+ S 0 0.000000 14.725648 1.912328 17.112595 2.655621
+ C 0 0.000000 42.288299 29.685630 -37.720350 342.703466 17.296534
+ C 0 0.000000 42.288299 2.152613 -37.720350 0.000000 17.296534
+ S 0 0.000000 14.725648 2.655621 17.112595 1.912328
+ C 0 0.000000 -42.288299 29.685630 42.288299 180.000000 17.296534
+ END$SEGS
+
+
+SUBCONTENTS Ross - Super Line WYE Switches
+TURNOUT O "Ross O31 WYE Switch 153" 0
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 10.960115 4.536845 45.000000
+ E 10.960115 -4.536845 135.000000
+ S 0 0.000000 0.000000 0.000000 1.257202 0.000000
+ C 0 0.000000 -12.471991 1.257202 12.471991 135.000000 45.000000
+ S 0 0.000000 10.076232 3.652962 10.960115 4.536845
+ C 0 0.000000 12.471991 1.257202 -12.471991 0.000000 45.000000
+ S 0 0.000000 10.076232 -3.652962 10.960115 -4.536845
+ END$SEGS
+TURNOUT O "Ross O42 WYE Switch 154" 0
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 11.128305 3.190990 58.000000
+ E 11.128305 -3.190990 122.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ C 0 0.000000 -16.640732 1.250000 16.640732 148.000000 32.000000
+ S 0 0.000000 10.068245 2.528591 11.128305 3.190990
+ C 0 0.000000 16.640732 1.250000 -16.640732 0.000000 32.000000
+ S 0 0.000000 10.068245 -2.528591 11.128305 -3.190990
+ END$SEGS
+TURNOUT O "Ross O54 WYE Switch 155" 0
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 13.500000 3.617314 60.000000
+ E 13.500000 -3.617314 120.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ C 0 0.000000 -22.334936 1.250000 22.334936 150.000000 30.000000
+ S 0 0.000000 12.417468 2.992314 13.500000 3.617314
+ C 0 0.000000 22.334936 1.250000 -22.334936 0.000000 30.000000
+ S 0 0.000000 12.417468 -2.992314 13.500000 -3.617314
+ END$SEGS
+TURNOUT O "Ross O72 WYE Switch 156" 0
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 13.776604 2.740337 67.500000
+ E 13.776604 -2.740337 112.500000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ C 0 0.000000 -29.715826 1.250000 29.715826 157.500000 22.500000
+ S 0 0.000000 12.621754 2.261983 13.776604 2.740337
+ C 0 0.000000 29.715826 1.250000 -29.715826 0.000000 22.500000
+ S 0 0.000000 12.621754 -2.261983 13.776604 -2.740337
+ END$SEGS
+TURNOUT O "Ross 11d WYE 157" 0
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 14.415405 1.046902 84.500000
+ E 14.415405 -1.046902 95.500000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ C 0 0.000000 -47.735740 1.250000 47.735740 174.500000 5.500000
+ S 0 0.000000 5.825268 0.219766 14.415405 1.046902
+ C 0 0.000000 47.735740 1.250000 -47.735740 0.000000 5.500000
+ S 0 0.000000 5.825268 -0.219766 14.415405 -1.046902
+ END$SEGS
+TURNOUT O "Ross 4-Way 170" 0
+ P "P0" 1 2 3 4
+ P "P1" 1 2 3 5 6
+ P "P2" 1 7 8 10 11
+ P "P3" 1 7 8 9
+ E 0.000000 0.000000 270.000000
+ E 24.095933 3.890258 79.000000
+ E 24.233778 1.750000 90.000000
+ E 24.233778 -1.750000 90.000000
+ E 24.095933 -3.890258 101.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ C 0 0.000000 -30.000000 1.250000 30.000000 169.000000 11.000000
+ S 0 0.000000 6.974270 0.551184 10.276977 1.195280
+ S 0 0.000000 10.276977 1.195280 24.095933 3.890258
+ C 0 0.000000 30.000000 16.019407 -28.250000 349.000000 11.000000
+ S 0 0.000000 15.973972 1.750000 24.233778 1.750000
+ C 0 0.000000 30.000000 1.250000 -30.000000 0.000000 11.000000
+ S 0 0.000000 6.974270 -0.551184 10.276977 -1.195280
+ S 0 0.000000 10.276977 -1.195280 24.095933 -3.890258
+ C 0 0.000000 -30.000000 16.019407 28.250000 180.000000 11.000000
+ S 0 0.000000 15.973972 -1.750000 24.233778 -1.750000
+ END$SEGS
+
+
+SUBCONTENTS Ross - Super Line Curved Switches
+TURNOUT O "Ross O54-O31 Left-Hand Curve Switch 151" 0
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 13.499972 3.617414 60.000000
+ E 11.920456 5.592928 45.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ C 0 0.000000 -12.258237 1.250000 12.258237 135.000000 45.000000
+ S 0 0.000000 9.917882 3.590354 11.920456 5.592928
+ C 0 0.000000 -22.334186 1.250000 22.334186 150.000000 30.000000
+ S 0 0.000000 12.417093 2.992214 13.499972 3.617414
+ END$SEGS
+TURNOUT O "Ross O54-O31 Right-Hand Curve Switch 150" 0
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 13.499972 -3.617414 120.000000
+ E 11.920456 -5.592928 135.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ C 0 0.000000 12.258237 1.250000 -12.258237 0.000000 45.000000
+ S 0 0.000000 9.917882 -3.590354 11.920456 -5.592928
+ C 0 0.000000 22.334186 1.250000 -22.334186 0.000000 30.000000
+ S 0 0.000000 12.417093 -2.992214 13.499972 -3.617414
+ END$SEGS
+TURNOUT O "Ross O72-O54 Left-Hand Curve Switch 161" 0
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 16.114129 3.807923 63.400000
+ E 15.092387 5.694566 52.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ C 0 0.000000 -19.033254 1.250000 19.033254 142.000000 38.000000
+ S 0 0.000000 12.968041 4.034845 15.092387 5.694566
+ C 0 0.000000 -30.688277 1.255480 30.688277 153.400000 26.600000
+ S 0 0.000000 14.996436 3.248224 16.114129 3.807923
+ END$SEGS
+TURNOUT O "Ross O72-O54 Right-Hand Curve Switch 160" 0
+ P "Normal" 1 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 16.114129 -3.807923 116.600000
+ E 15.092387 -5.694566 128.000000
+ S 0 0.000000 0.000000 0.000000 1.250000 0.000000
+ C 0 0.000000 19.033254 1.250000 -19.033254 0.000000 38.000000
+ S 0 0.000000 12.968041 -4.034845 15.092387 -5.694566
+ C 0 0.000000 30.688277 1.255480 -30.688277 0.000000 26.600000
+ S 0 0.000000 14.996436 -3.248224 16.114129 -3.807923
+ END$SEGS
+
+
+SUBCONTENTS Ross - Crossings
+TURNOUT O "Ross 11d Crossing 299" 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 21.845568 0.000000 90.000000
+ E 0.200682 2.084165 281.000000
+ E 21.644886 -2.084165 101.000000
+ S 0 0.000000 0.000000 0.000000 21.845568 0.000000
+ S 0 0.000000 0.200682 2.084165 21.644886 -2.084165
+ END$SEGS
+TURNOUT O "Ross 22.5d Crossing 305" 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 10.750000 0.000000 90.000000
+ E 0.409148 2.056923 292.500000
+ E 10.340852 -2.056923 112.500000
+ S 0 0.000000 0.000000 0.000000 10.750000 0.000000
+ S 0 0.000000 0.409148 2.056923 10.340852 -2.056923
+ END$SEGS
+TURNOUT O "Ross 30d Crossing 300" 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 12.402000 0.000000 90.000000
+ E 0.830776 3.100500 300.000000
+ E 11.571224 -3.100500 120.000000
+ S 0 0.000000 0.000000 0.000000 12.402000 0.000000
+ S 0 0.000000 0.830776 3.100500 11.571224 -3.100500
+ END$SEGS
+TURNOUT O "Ross 45d Crossing 310" 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 11.022774 0.000000 90.000000
+ E 1.614248 3.897139 315.000000
+ E 9.408526 -3.897139 135.000000
+ S 0 0.000000 0.000000 0.000000 11.022774 0.000000
+ S 0 0.000000 1.614248 3.897139 9.408526 -3.897139
+ END$SEGS
+TURNOUT O "Ross 60d Crossing 320" 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 9.704413 0.000000 90.000000
+ E 2.426103 4.202134 330.000000
+ E 7.278310 -4.202134 150.000000
+ S 0 0.000000 0.000000 0.000000 9.704413 0.000000
+ S 0 0.000000 2.426103 4.202134 7.278310 -4.202134
+ END$SEGS
+TURNOUT O "Ross 90d Crossing 340" 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 9.622070 0.000000 90.000000
+ E 4.811035 4.811035 360.000000
+ E 4.811035 -4.811035 180.000000
+ S 0 0.000000 0.000000 0.000000 9.622070 0.000000
+ S 0 0.000000 4.811035 4.811035 4.811035 -4.811035
+ END$SEGS
+
+SUBCONTENTS Ross - Curve Track
+TURNOUT O "Ross O31 Curve Track O31" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.960155 4.539848 45.000000
+ C 0 0.000000 -15.500000 0.000000 15.500000 135.000000 45.000000
+ END$SEGS
+TURNOUT O "Ross O36 Curve Track O36" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.727922 5.272078 45.000000
+ C 0 0.000000 -18.000000 0.000000 18.000000 135.000000 45.000000
+ END$SEGS
+TURNOUT O "Ross O42 Curve Track O42" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 14.849242 6.150758 45.000000
+ C 0 0.000000 -21.000000 0.000000 21.000000 135.000000 45.000000
+ END$SEGS
+TURNOUT O "Ross O54 Curve Track O54" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 13.500000 3.617314 60.000000
+ C 0 0.000000 -27.000000 0.000000 27.000000 150.000000 30.000000
+ END$SEGS
+TURNOUT O "Ross O64 Curve Track O64" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.245870 2.435855 67.500000
+ C 0 0.000000 -32.000000 0.000000 32.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT O "Ross O72 Curve Track O72" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 13.776604 2.740337 67.500000
+ C 0 0.000000 -36.000000 0.000000 36.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT O "Ross O80 Curve Track O80" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 15.307337 3.044815 67.500000
+ C 0 0.000000 -40.000000 0.000000 40.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT O "Ross O84 Curve Track O84" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 16.072704 3.197060 67.500000
+ C 0 0.000000 -42.000000 0.000000 42.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT O "Ross O88 Curve Track O88" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 16.838071 3.349301 67.500000
+ C 0 0.000000 -44.000000 0.000000 44.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT O "Ross O92 Curve Track O92" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 117.603438 3.501542 67.500000
+ C 0 0.000000 -46.000000 0.000000 46.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT O "Ross O96 Curve Track O96" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 18.368805 3.653782 67.500000
+ C 0 0.000000 -48.000000 0.000000 48.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT O "Ross O100 Curve Track O100" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 19.134172 3.806023 67.500000
+ C 0 0.000000 -50.000000 0.000000 50.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT O "Ross O104 Curve Track O104" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 19.899538 3.958264 67.500000
+ C 0 0.000000 -52.000000 0.000000 52.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT O "Ross O112 Curve Track O112" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 21.430272 4.262746 67.500000
+ C 0 0.000000 -56.000000 0.000000 56.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT O "Ross O120 Curve Track O120" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 22.961006 4.567228 67.500000
+ C 0 0.000000 -60.000000 0.000000 60.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT O "Ross O128 Curve Track O128" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 24.491740 4.871710 67.500000
+ C 0 0.000000 -64.000000 0.000000 64.000000 157.500000 22.500000
+ END$SEGS
+
+
+SUBCONTENTS Ross - Straight Track
+TURNOUT O "Ross O10 Straight Track O10" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.000000 0.000000
+ END$SEGS
+TURNOUT O "Ross O15 Straight Track O15" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 10.000000 0.000000
+ END$SEGS
+TURNOUT O "Ross O20 Straight Track O20" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 14.645596 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 14.645596 0.000000
+ END$SEGS
+TURNOUT O "Ross O20L Straight Track O20L" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 29.291172 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 29.291172 0.000000
+ END$SEGS
+
+
+SUBCONTENTS Ross - Transition Curve Track
+TURNOUT O "Ross Transition Curve 11d 3.5 TR35" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 15.574784 1.499681 79.000000
+ C 0 0.000000 -81.625000 0.000000 81.625000 169.000000 11.000000
+ END$SEGS
+TURNOUT O "Ross Transition Curve 11d 4.0 TR40" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 20.774329 2.000340 79.000000
+ C 0 0.000000 -108.875000 0.000000 108.875000 169.000000 11.000000
+ END$SEGS
+TURNOUT O "Ross Transition Curve 11d 4.5 TR45" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 25.961927 2.499847 79.000000
+ C 0 0.000000 -136.062500 0.000000 136.062500 169.000000 11.000000
+ END$SEGS
+TURNOUT O "Ross Transition Curve 14d 3.5 TR435" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.217056 1.500066 76.000000
+ C 0 0.000000 -50.500000 0.000000 50.500000 166.000000 14.000000
+ END$SEGS
+TURNOUT O "Ross Transition Curve 14d 4.0 TR440" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 16.291928 2.000397 76.000000
+ C 0 0.000000 -67.343750 0.000000 67.343750 166.000000 14.000000
+ END$SEGS
+TURNOUT O "Ross Transition Curve 14d 4.5 TR445" 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 20.359240 2.499800 76.000000
+ C 0 0.000000 -84.156250 0.000000 84.156250 166.000000 14.000000
+ END$SEGS
+
+
+SUBCONTENTS Ross - Turn Tables
+TURNOUT O "Ross 18"" 7.5d Turn Table TUTA18M/A" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ P "13" 13
+ P "14" 14
+ P "15" 15
+ P "16" 16
+ P "17" 17
+ P "18" 18
+ P "19" 19
+ P "20" 20
+ P "21" 21
+ P "22" 22
+ P "23" 23
+ P "24" 24
+ E 0.000000 9.000000 0.000000
+ E 1.174736 8.923004 7.500000
+ E 2.329371 8.693332 15.000000
+ E 3.444151 8.314916 22.500000
+ E 4.500000 7.794229 30.000000
+ E 5.478853 7.140180 37.500000
+ E 6.363961 6.363961 45.000000
+ E 7.140180 5.478853 52.500000
+ E 7.794229 4.500000 60.000000
+ E 8.314916 3.444151 67.500000
+ E 8.693332 2.329371 75.000000
+ E 8.923004 1.174736 82.500000
+ E 9.000000 0.000000 90.000000
+ E 8.923004 -1.174736 97.500000
+ E 8.693332 -2.329371 105.000000
+ E 8.314916 -3.444151 112.500000
+ E 7.794229 -4.500000 120.000000
+ E 7.140180 -5.478853 127.500000
+ E 6.363961 -6.363961 135.000000
+ E 5.478853 -7.140180 142.500000
+ E 4.500000 -7.794229 150.000000
+ E 3.444151 -8.314916 157.500000
+ E 2.329371 -8.693332 165.000000
+ E 1.174736 -8.923004 172.500000
+ E 0.000000 -9.000000 180.000000
+ E -1.174736 -8.923004 187.500000
+ E -2.329371 -8.693332 195.000000
+ E -3.444151 -8.314916 202.500000
+ E -4.500000 -7.794229 210.000000
+ E -5.478853 -7.140180 217.500000
+ E -6.363961 -6.363961 225.000000
+ E -7.140180 -5.478853 232.500000
+ E -7.794229 -4.500000 240.000000
+ E -8.314916 -3.444151 247.500000
+ E -8.693332 -2.329371 255.000000
+ E -8.923004 -1.174736 262.500000
+ E -9.000000 0.000000 270.000000
+ E -8.923004 1.174736 277.500000
+ E -8.693332 2.329371 285.000000
+ E -8.314916 3.444151 292.500000
+ E -7.794229 4.500000 300.000000
+ E -7.140180 5.478853 307.500000
+ E -6.363961 6.363961 315.000000
+ E -5.478853 7.140180 322.500000
+ E -4.500000 7.794229 330.000000
+ E -3.444151 8.314916 337.500000
+ E -2.329371 8.693332 345.000000
+ E -1.174736 8.923004 352.500000
+ S 16777215 0.000000 0.000000 9.000000 0.000000 -9.000000
+ S 16777215 0.000000 1.174736 8.923004 -1.174736 -8.923004
+ S 16777215 0.000000 2.329371 8.693332 -2.329371 -8.693332
+ S 16777215 0.000000 3.444151 8.314916 -3.444151 -8.314916
+ S 16777215 0.000000 4.500000 7.794229 -4.500000 -7.794229
+ S 16777215 0.000000 5.478853 7.140180 -5.478853 -7.140180
+ S 16777215 0.000000 6.363961 6.363961 -6.363961 -6.363961
+ S 16777215 0.000000 7.140180 5.478853 -7.140180 -5.478853
+ S 16777215 0.000000 7.794229 4.500000 -7.794229 -4.500000
+ S 16777215 0.000000 8.314916 3.444151 -8.314916 -3.444151
+ S 16777215 0.000000 8.693332 2.329371 -8.693332 -2.329371
+ S 16777215 0.000000 8.923004 1.174736 -8.923004 -1.174736
+ S 0 0.000000 9.000000 0.000000 -9.000000 0.000000
+ S 16777215 0.000000 8.923004 -1.174736 -8.923004 1.174736
+ S 16777215 0.000000 8.693332 -2.329371 -8.693332 2.329371
+ S 16777215 0.000000 8.314916 -3.444151 -8.314916 3.444151
+ S 16777215 0.000000 7.794229 -4.500000 -7.794229 4.500000
+ S 16777215 0.000000 7.140180 -5.478853 -7.140180 5.478853
+ S 16777215 0.000000 6.363961 -6.363961 -6.363961 6.363961
+ S 16777215 0.000000 5.478853 -7.140180 -5.478853 7.140180
+ S 16777215 0.000000 4.500000 -7.794229 -4.500000 7.794229
+ S 16777215 0.000000 3.444151 -8.314916 -3.444151 8.314916
+ S 16777215 0.000000 2.329371 -8.693332 -2.329371 8.693332
+ S 16777215 0.000000 1.174736 -8.923004 -1.174736 8.923004
+ A 11579568 0.046875 9.000000 0.000000 0.000000 0.000000 360.000000
+ L 11579568 0.046875 -10.000000 10.000000 10.000000 10.000000
+ L 11579568 0.046875 10.000000 10.000000 10.000000 -10.000000
+ L 11579568 0.046875 10.000000 -10.000000 -10.000000 -10.000000
+ L 11579568 0.046875 -10.000000 -10.000000 -10.000000 10.000000
+ END$SEGS
+TURNOUT O "Ross 24"" 7.5d Turn Table TUTA24M/A" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ P "13" 13
+ P "14" 14
+ P "15" 15
+ P "16" 16
+ P "17" 17
+ P "18" 18
+ P "19" 19
+ P "20" 20
+ P "21" 21
+ P "22" 22
+ P "23" 23
+ P "24" 24
+ E 0.000000 12.000000 0.000000
+ E 1.566314 11.897338 7.500000
+ E 3.105829 11.591110 15.000000
+ E 4.592201 11.086554 22.500000
+ E 6.000000 10.392305 30.000000
+ E 7.305137 9.520240 37.500000
+ E 8.485281 8.485281 45.000000
+ E 9.520240 7.305137 52.500000
+ E 10.392305 6.000000 60.000000
+ E 11.086554 4.592201 67.500000
+ E 11.591110 3.105829 75.000000
+ E 11.897338 1.566314 82.500000
+ E 12.000000 0.000000 90.000000
+ E 11.897338 -1.566314 97.500000
+ E 11.591110 -3.105829 105.000000
+ E 11.086554 -4.592201 112.500000
+ E 10.392305 -6.000000 120.000000
+ E 9.520240 -7.305137 127.500000
+ E 8.485281 -8.485281 135.000000
+ E 7.305137 -9.520240 142.500000
+ E 6.000000 -10.392305 150.000000
+ E 4.592201 -11.086554 157.500000
+ E 3.105829 -11.591110 165.000000
+ E 1.566314 -11.897338 172.500000
+ E 0.000000 -12.000000 180.000000
+ E -1.566314 -11.897338 187.500000
+ E -3.105829 -11.591110 195.000000
+ E -4.592201 -11.086554 202.500000
+ E -6.000000 -10.392305 210.000000
+ E -7.305137 -9.520240 217.500000
+ E -8.485281 -8.485281 225.000000
+ E -9.520240 -7.305137 232.500000
+ E -10.392305 -6.000000 240.000000
+ E -11.086554 -4.592201 247.500000
+ E -11.591110 -3.105829 255.000000
+ E -11.897338 -1.566314 262.500000
+ E -12.000000 0.000000 270.000000
+ E -11.897338 1.566314 277.500000
+ E -11.591110 3.105829 285.000000
+ E -11.086554 4.592201 292.500000
+ E -10.392305 6.000000 300.000000
+ E -9.520240 7.305137 307.500000
+ E -8.485281 8.485281 315.000000
+ E -7.305137 9.520240 322.500000
+ E -6.000000 10.392305 330.000000
+ E -4.592201 11.086554 337.500000
+ E -3.105829 11.591110 345.000000
+ E -1.566314 11.897338 352.500000
+ S 16777215 0.000000 0.000000 12.000000 0.000000 -12.000000
+ S 16777215 0.000000 1.566314 11.897338 -1.566314 -11.897338
+ S 16777215 0.000000 3.105829 11.591110 -3.105829 -11.591110
+ S 16777215 0.000000 4.592201 11.086554 -4.592201 -11.086554
+ S 16777215 0.000000 6.000000 10.392305 -6.000000 -10.392305
+ S 16777215 0.000000 7.305137 9.520240 -7.305137 -9.520240
+ S 16777215 0.000000 8.485281 8.485281 -8.485281 -8.485281
+ S 16777215 0.000000 9.520240 7.305137 -9.520240 -7.305137
+ S 16777215 0.000000 10.392305 6.000000 -10.392305 -6.000000
+ S 16777215 0.000000 11.086554 4.592201 -11.086554 -4.592201
+ S 16777215 0.000000 11.591110 3.105829 -11.591110 -3.105829
+ S 16777215 0.000000 11.897338 1.566314 -11.897338 -1.566314
+ S 0 0.000000 12.000000 0.000000 -12.000000 0.000000
+ S 16777215 0.000000 11.897338 -1.566314 -11.897338 1.566314
+ S 16777215 0.000000 11.591110 -3.105829 -11.591110 3.105829
+ S 16777215 0.000000 11.086554 -4.592201 -11.086554 4.592201
+ S 16777215 0.000000 10.392305 -6.000000 -10.392305 6.000000
+ S 16777215 0.000000 9.520240 -7.305137 -9.520240 7.305137
+ S 16777215 0.000000 8.485281 -8.485281 -8.485281 8.485281
+ S 16777215 0.000000 7.305137 -9.520240 -7.305137 9.520240
+ S 16777215 0.000000 6.000000 -10.392305 -6.000000 10.392305
+ S 16777215 0.000000 4.592201 -11.086554 -4.592201 11.086554
+ S 16777215 0.000000 3.105829 -11.591110 -3.105829 11.591110
+ S 16777215 0.000000 1.566314 -11.897338 -1.566314 11.897338
+ A 11579568 0.046875 12.000000 0.000000 0.000000 0.000000 360.000000
+ L 11579568 0.046875 -13.000000 13.000000 13.000000 13.000000
+ L 11579568 0.046875 13.000000 13.000000 13.000000 -13.000000
+ L 11579568 0.046875 13.000000 -13.000000 -13.000000 -13.000000
+ L 11579568 0.046875 -13.000000 -13.000000 -13.000000 13.000000
+ END$SEGS
+TURNOUT O "Ross 27"" 7.5d Turn Table TUTA27M/A" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ P "13" 13
+ P "14" 14
+ P "15" 15
+ P "16" 16
+ P "17" 17
+ P "18" 18
+ P "19" 19
+ P "20" 20
+ P "21" 21
+ P "22" 22
+ P "23" 23
+ P "24" 24
+ E 0.000000 13.500000 0.000000
+ E 1.762104 13.384506 7.500000
+ E 3.494057 13.039999 15.000000
+ E 5.166226 12.472374 22.500000
+ E 6.750000 11.691343 30.000000
+ E 8.218279 10.710270 37.500000
+ E 9.545942 9.545942 45.000000
+ E 10.710270 8.218279 52.500000
+ E 11.691343 6.750000 60.000000
+ E 12.472374 5.166226 67.500000
+ E 13.039999 3.494057 75.000000
+ E 13.384506 1.762104 82.500000
+ E 13.500000 0.000000 90.000000
+ E 13.384506 -1.762104 97.500000
+ E 13.039999 -3.494057 105.000000
+ E 12.472374 -5.166226 112.500000
+ E 11.691343 -6.750000 120.000000
+ E 10.710270 -8.218279 127.500000
+ E 9.545942 -9.545942 135.000000
+ E 8.218279 -10.710270 142.500000
+ E 6.750000 -11.691343 150.000000
+ E 5.166226 -12.472374 157.500000
+ E 3.494057 -13.039999 165.000000
+ E 1.762104 -13.384506 172.500000
+ E 0.000000 -13.500000 180.000000
+ E -1.762104 -13.384506 187.500000
+ E -3.494057 -13.039999 195.000000
+ E -5.166226 -12.472374 202.500000
+ E -6.750000 -11.691343 210.000000
+ E -8.218279 -10.710270 217.500000
+ E -9.545942 -9.545942 225.000000
+ E -10.710270 -8.218279 232.500000
+ E -11.691343 -6.750000 240.000000
+ E -12.472374 -5.166226 247.500000
+ E -13.039999 -3.494057 255.000000
+ E -13.384506 -1.762104 262.500000
+ E -13.500000 0.000000 270.000000
+ E -13.384506 1.762104 277.500000
+ E -13.039999 3.494057 285.000000
+ E -12.472374 5.166226 292.500000
+ E -11.691343 6.750000 300.000000
+ E -10.710270 8.218279 307.500000
+ E -9.545942 9.545942 315.000000
+ E -8.218279 10.710270 322.500000
+ E -6.750000 11.691343 330.000000
+ E -5.166226 12.472374 337.500000
+ E -3.494057 13.039999 345.000000
+ E -1.762104 13.384506 352.500000
+ S 16777215 0.000000 0.000000 13.500000 0.000000 -13.500000
+ S 16777215 0.000000 1.762104 13.384506 -1.762104 -13.384506
+ S 16777215 0.000000 3.494057 13.039999 -3.494057 -13.039999
+ S 16777215 0.000000 5.166226 12.472374 -5.166226 -12.472374
+ S 16777215 0.000000 6.750000 11.691343 -6.750000 -11.691343
+ S 16777215 0.000000 8.218279 10.710270 -8.218279 -10.710270
+ S 16777215 0.000000 9.545942 9.545942 -9.545942 -9.545942
+ S 16777215 0.000000 10.710270 8.218279 -10.710270 -8.218279
+ S 16777215 0.000000 11.691343 6.750000 -11.691343 -6.750000
+ S 16777215 0.000000 12.472374 5.166226 -12.472374 -5.166226
+ S 16777215 0.000000 13.039999 3.494057 -13.039999 -3.494057
+ S 16777215 0.000000 13.384506 1.762104 -13.384506 -1.762104
+ S 0 0.000000 13.500000 0.000000 -13.500000 0.000000
+ S 16777215 0.000000 13.384506 -1.762104 -13.384506 1.762104
+ S 16777215 0.000000 13.039999 -3.494057 -13.039999 3.494057
+ S 16777215 0.000000 12.472374 -5.166226 -12.472374 5.166226
+ S 16777215 0.000000 11.691343 -6.750000 -11.691343 6.750000
+ S 16777215 0.000000 10.710270 -8.218279 -10.710270 8.218279
+ S 16777215 0.000000 9.545942 -9.545942 -9.545942 9.545942
+ S 16777215 0.000000 8.218279 -10.710270 -8.218279 10.710270
+ S 16777215 0.000000 6.750000 -11.691343 -6.750000 11.691343
+ S 16777215 0.000000 5.166226 -12.472374 -5.166226 12.472374
+ S 16777215 0.000000 3.494057 -13.039999 -3.494057 13.039999
+ S 16777215 0.000000 1.762104 -13.384506 -1.762104 13.384506
+ A 11579568 0.046875 13.500000 0.000000 0.000000 0.000000 360.000000
+ L 11579568 0.046875 -14.500000 14.500000 14.500000 14.500000
+ L 11579568 0.046875 14.500000 14.500000 14.500000 -14.500000
+ L 11579568 0.046875 14.500000 -14.500000 -14.500000 -14.500000
+ L 11579568 0.046875 -14.500000 -14.500000 -14.500000 14.500000
+ END$SEGS
+TURNOUT O "Ross 33"" 7.5d Turn Table TUTA33M/A" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ P "13" 13
+ P "14" 14
+ P "15" 15
+ P "16" 16
+ P "17" 17
+ P "18" 18
+ P "19" 19
+ P "20" 20
+ P "21" 21
+ P "22" 22
+ P "23" 23
+ P "24" 24
+ E 0.000000 16.500000 0.000000
+ E 2.153682 16.358840 7.500000
+ E 4.270514 15.937776 15.000000
+ E 6.314277 15.244012 22.500000
+ E 8.250000 14.289419 30.000000
+ E 10.044564 13.090330 37.500000
+ E 11.667262 11.667262 45.000000
+ E 13.090330 10.044564 52.500000
+ E 14.289419 8.250000 60.000000
+ E 15.244012 6.314277 67.500000
+ E 15.937776 4.270514 75.000000
+ E 16.358840 2.153682 82.500000
+ E 16.500000 0.000000 90.000000
+ E 16.358840 -2.153682 97.500000
+ E 15.937776 -4.270514 105.000000
+ E 15.244012 -6.314277 112.500000
+ E 14.289419 -8.250000 120.000000
+ E 13.090330 -10.044564 127.500000
+ E 11.667262 -11.667262 135.000000
+ E 10.044564 -13.090330 142.500000
+ E 8.250000 -14.289419 150.000000
+ E 6.314277 -15.244012 157.500000
+ E 4.270514 -15.937776 165.000000
+ E 2.153682 -16.358840 172.500000
+ E 0.000000 -16.500000 180.000000
+ E -2.153682 -16.358840 187.500000
+ E -4.270514 -15.937776 195.000000
+ E -6.314277 -15.244012 202.500000
+ E -8.250000 -14.289419 210.000000
+ E -10.044564 -13.090330 217.500000
+ E -11.667262 -11.667262 225.000000
+ E -13.090330 -10.044564 232.500000
+ E -14.289419 -8.250000 240.000000
+ E -15.244012 -6.314277 247.500000
+ E -15.937776 -4.270514 255.000000
+ E -16.358840 -2.153682 262.500000
+ E -16.500000 0.000000 270.000000
+ E -16.358840 2.153682 277.500000
+ E -15.937776 4.270514 285.000000
+ E -15.244012 6.314277 292.500000
+ E -14.289419 8.250000 300.000000
+ E -13.090330 10.044564 307.500000
+ E -11.667262 11.667262 315.000000
+ E -10.044564 13.090330 322.500000
+ E -8.250000 14.289419 330.000000
+ E -6.314277 15.244012 337.500000
+ E -4.270514 15.937776 345.000000
+ E -2.153682 16.358840 352.500000
+ S 16777215 0.000000 0.000000 16.500000 0.000000 -16.500000
+ S 16777215 0.000000 2.153682 16.358840 -2.153682 -16.358840
+ S 16777215 0.000000 4.270514 15.937776 -4.270514 -15.937776
+ S 16777215 0.000000 6.314277 15.244012 -6.314277 -15.244012
+ S 16777215 0.000000 8.250000 14.289419 -8.250000 -14.289419
+ S 16777215 0.000000 10.044564 13.090330 -10.044564 -13.090330
+ S 16777215 0.000000 11.667262 11.667262 -11.667262 -11.667262
+ S 16777215 0.000000 13.090330 10.044564 -13.090330 -10.044564
+ S 16777215 0.000000 14.289419 8.250000 -14.289419 -8.250000
+ S 16777215 0.000000 15.244012 6.314277 -15.244012 -6.314277
+ S 16777215 0.000000 15.937776 4.270514 -15.937776 -4.270514
+ S 16777215 0.000000 16.358840 2.153682 -16.358840 -2.153682
+ S 0 0.000000 16.500000 0.000000 -16.500000 0.000000
+ S 16777215 0.000000 16.358840 -2.153682 -16.358840 2.153682
+ S 16777215 0.000000 15.937776 -4.270514 -15.937776 4.270514
+ S 16777215 0.000000 15.244012 -6.314277 -15.244012 6.314277
+ S 16777215 0.000000 14.289419 -8.250000 -14.289419 8.250000
+ S 16777215 0.000000 13.090330 -10.044564 -13.090330 10.044564
+ S 16777215 0.000000 11.667262 -11.667262 -11.667262 11.667262
+ S 16777215 0.000000 10.044564 -13.090330 -10.044564 13.090330
+ S 16777215 0.000000 8.250000 -14.289419 -8.250000 14.289419
+ S 16777215 0.000000 6.314277 -15.244012 -6.314277 15.244012
+ S 16777215 0.000000 4.270514 -15.937776 -4.270514 15.937776
+ S 16777215 0.000000 2.153682 -16.358840 -2.153682 16.358840
+ A 11579568 0.046875 16.500000 0.000000 0.000000 0.000000 360.000000
+ L 11579568 0.046875 -17.500000 17.500000 17.500000 17.500000
+ L 11579568 0.046875 17.500000 17.500000 17.500000 -17.500000
+ L 11579568 0.046875 17.500000 -17.500000 -17.500000 -17.500000
+ L 11579568 0.046875 -17.500000 -17.500000 -17.500000 17.500000
+ END$SEGS
+
+SUBCONTENTS Ross - Transfer Tables
+TURNOUT O "Ross 18"" 5 Stop Transfer Table (3.5"" Trk Center) TT185" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ E 0.000000 0.000000 270.000000
+ E 18.000000 0.000000 90.000000
+ E 0.000000 -3.500000 270.000000
+ E 18.000000 -3.500000 90.000000
+ E 0.000000 -7.000000 270.000000
+ E 18.000000 -7.000000 90.000000
+ E 0.000000 -10.500000 270.000000
+ E 18.000000 -10.500000 90.000000
+ E 0.000000 -14.000000 270.000000
+ E 18.000000 -14.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 18.000000 0.000000
+ S 16777215 0.000000 0.000000 -3.500000 18.000000 -3.500000
+ S 16777215 0.000000 0.000000 -7.000000 18.000000 -7.000000
+ S 16777215 0.000000 0.000000 -10.500000 18.000000 -10.500000
+ S 16777215 0.000000 0.000000 -14.000000 18.000000 -14.000000
+ L 11579568 0.750000 -0.375000 3.8750000 18.375000 3.875000
+ L 11579568 0.750000 18.375000 4.250000 18.375000 -18.250000
+ L 11579568 0.750000 18.375000 -17.875000 -0.375000 -17.875000
+ L 11579568 0.750000 -0.375000 -18.250000 -0.375000 4.250000
+ L 0 0.046875 0.000000 3.500000 18.000000 3.500000
+ L 0 0.046875 18.000000 3.500000 18.000000 -17.500000
+ L 0 0.046875 18.000000 -17.500000 0.000000 -17.500000
+ L 0 0.046875 0.000000 -17.500000 0.000000 3.500000
+ L 0 0.046875 -0.750000 4.250000 18.750000 4.250000
+ L 0 0.046875 18.750000 4.250000 18.750000 -18.250000
+ L 0 0.046875 18.750000 -18.250000 -0.750000 -18.250000
+ L 0 0.046875 -0.750000 -18.250000 -0.750000 4.250000
+ END$SEGS
+TURNOUT O "Ross 18"" 10 Stop Transfer Table (3.5"" Trk Center) TT1810" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ E 0.000000 0.000000 270.000000
+ E 18.000000 0.000000 90.000000
+ E 0.000000 -3.500000 270.000000
+ E 18.000000 -3.500000 90.000000
+ E 0.000000 -7.000000 270.000000
+ E 18.000000 -7.000000 90.000000
+ E 0.000000 -10.500000 270.000000
+ E 18.000000 -10.500000 90.000000
+ E 0.000000 -14.000000 270.000000
+ E 18.000000 -14.000000 90.000000
+ E 0.000000 -17.500000 270.000000
+ E 18.000000 -17.500000 90.000000
+ E 0.000000 -21.000000 270.000000
+ E 18.000000 -21.000000 90.000000
+ E 0.000000 -24.500000 270.000000
+ E 18.000000 -24.500000 90.000000
+ E 0.000000 -28.000000 270.000000
+ E 18.000000 -28.000000 90.000000
+ E 0.000000 -31.500000 270.000000
+ E 18.000000 -31.500000 90.000000
+ S 0 0.000000 0.000000 0.000000 18.000000 0.000000
+ S 16777215 0.000000 0.000000 -3.500000 18.000000 -3.500000
+ S 16777215 0.000000 0.000000 -7.000000 18.000000 -7.000000
+ S 16777215 0.000000 0.000000 -10.500000 18.000000 -10.500000
+ S 16777215 0.000000 0.000000 -14.000000 18.000000 -14.000000
+ S 16777215 0.000000 0.000000 -17.500000 18.000000 -17.500000
+ S 16777215 0.000000 0.000000 -21.000000 18.000000 -21.000000
+ S 16777215 0.000000 0.000000 -24.500000 18.000000 -24.500000
+ S 16777215 0.000000 0.000000 -28.000000 18.000000 -28.000000
+ S 16777215 0.000000 0.000000 -31.500000 18.000000 -31.500000
+ L 11579568 0.750000 -0.375000 3.8750000 18.375000 3.875000
+ L 11579568 0.750000 18.375000 4.250000 18.375000 -35.750000
+ L 11579568 0.750000 18.375000 -35.375000 -0.375000 -35.375000
+ L 11579568 0.750000 -0.375000 -35.750000 -0.375000 4.250000
+ L 0 0.046875 0.000000 3.500000 18.000000 3.500000
+ L 0 0.046875 18.000000 3.500000 18.000000 -35.000000
+ L 0 0.046875 18.000000 -35.000000 0.000000 -35.000000
+ L 0 0.046875 0.000000 -35.000000 0.000000 3.500000
+ L 0 0.046875 -0.750000 4.250000 18.750000 4.250000
+ L 0 0.046875 18.750000 4.250000 18.750000 -35.750000
+ L 0 0.046875 18.750000 -35.750000 -0.750000 -35.750000
+ L 0 0.046875 -0.750000 -35.750000 -0.750000 4.250000
+ END$SEGS
+TURNOUT O "Ross 27"" 5 Stop Transfer Table (3.5"" Trk Center) TT275" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ E 0.000000 0.000000 270.000000
+ E 27.000000 0.000000 90.000000
+ E 0.000000 -3.500000 270.000000
+ E 27.000000 -3.500000 90.000000
+ E 0.000000 -7.000000 270.000000
+ E 27.000000 -7.000000 90.000000
+ E 0.000000 -10.500000 270.000000
+ E 27.000000 -10.500000 90.000000
+ E 0.000000 -14.000000 270.000000
+ E 27.000000 -14.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 27.000000 0.000000
+ S 16777215 0.000000 0.000000 -3.500000 27.000000 -3.500000
+ S 16777215 0.000000 0.000000 -7.000000 27.000000 -7.000000
+ S 16777215 0.000000 0.000000 -10.500000 27.000000 -10.500000
+ S 16777215 0.000000 0.000000 -14.000000 27.000000 -14.000000
+ L 11579568 0.750000 -0.375000 3.8750000 27.375000 3.875000
+ L 11579568 0.750000 27.375000 4.250000 27.375000 -18.250000
+ L 11579568 0.750000 27.375000 -17.875000 -0.375000 -17.875000
+ L 11579568 0.750000 -0.375000 -18.250000 -0.375000 4.250000
+ L 0 0.046875 0.000000 3.500000 27.000000 3.500000
+ L 0 0.046875 27.000000 3.500000 27.000000 -17.500000
+ L 0 0.046875 27.000000 -17.500000 0.000000 -17.500000
+ L 0 0.046875 0.000000 -17.500000 0.000000 3.500000
+ L 0 0.046875 -0.750000 4.250000 27.750000 4.250000
+ L 0 0.046875 27.750000 4.250000 27.750000 -18.250000
+ L 0 0.046875 27.750000 -18.250000 -0.750000 -18.250000
+ L 0 0.046875 -0.750000 -18.250000 -0.750000 4.250000
+ END$SEGS
+TURNOUT O "Ross 27"" 10 Stop Transfer Table (3.5"" Trk Center) TT2710" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ E 0.000000 0.000000 270.000000
+ E 27.000000 0.000000 90.000000
+ E 0.000000 -3.500000 270.000000
+ E 27.000000 -3.500000 90.000000
+ E 0.000000 -7.000000 270.000000
+ E 27.000000 -7.000000 90.000000
+ E 0.000000 -10.500000 270.000000
+ E 27.000000 -10.500000 90.000000
+ E 0.000000 -14.000000 270.000000
+ E 27.000000 -14.000000 90.000000
+ E 0.000000 -17.500000 270.000000
+ E 27.000000 -17.500000 90.000000
+ E 0.000000 -21.000000 270.000000
+ E 27.000000 -21.000000 90.000000
+ E 0.000000 -24.500000 270.000000
+ E 27.000000 -24.500000 90.000000
+ E 0.000000 -28.000000 270.000000
+ E 27.000000 -28.000000 90.000000
+ E 0.000000 -31.500000 270.000000
+ E 27.000000 -31.500000 90.000000
+ S 0 0.000000 0.000000 0.000000 27.000000 0.000000
+ S 16777215 0.000000 0.000000 -3.500000 27.000000 -3.500000
+ S 16777215 0.000000 0.000000 -7.000000 27.000000 -7.000000
+ S 16777215 0.000000 0.000000 -10.500000 27.000000 -10.500000
+ S 16777215 0.000000 0.000000 -14.000000 27.000000 -14.000000
+ S 16777215 0.000000 0.000000 -17.500000 27.000000 -17.500000
+ S 16777215 0.000000 0.000000 -21.000000 27.000000 -21.000000
+ S 16777215 0.000000 0.000000 -24.500000 27.000000 -24.500000
+ S 16777215 0.000000 0.000000 -28.000000 27.000000 -28.000000
+ S 16777215 0.000000 0.000000 -31.500000 27.000000 -31.500000
+ L 11579568 0.750000 -0.375000 3.8750000 27.375000 3.875000
+ L 11579568 0.750000 27.375000 4.250000 27.375000 -35.750000
+ L 11579568 0.750000 27.375000 -35.375000 -0.375000 -35.375000
+ L 11579568 0.750000 -0.375000 -35.750000 -0.375000 4.250000
+ L 0 0.046875 0.000000 3.500000 27.000000 3.500000
+ L 0 0.046875 27.000000 3.500000 27.000000 -35.000000
+ L 0 0.046875 27.000000 -35.000000 0.000000 -35.000000
+ L 0 0.046875 0.000000 -35.000000 0.000000 3.500000
+ L 0 0.046875 -0.750000 4.250000 27.750000 4.250000
+ L 0 0.046875 27.750000 4.250000 27.750000 -35.750000
+ L 0 0.046875 27.750000 -35.750000 -0.750000 -35.750000
+ L 0 0.046875 -0.750000 -35.750000 -0.750000 4.250000
+ END$SEGS
+TURNOUT O "Ross 36"" 5 Stop Transfer Table (3.5"" Trk Center) TT365" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ E 0.000000 0.000000 270.000000
+ E 36.000000 0.000000 90.000000
+ E 0.000000 -3.500000 270.000000
+ E 36.000000 -3.500000 90.000000
+ E 0.000000 -7.000000 270.000000
+ E 36.000000 -7.000000 90.000000
+ E 0.000000 -10.500000 270.000000
+ E 36.000000 -10.500000 90.000000
+ E 0.000000 -14.000000 270.000000
+ E 36.000000 -14.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 36.000000 0.000000
+ S 16777215 0.000000 0.000000 -3.500000 36.000000 -3.500000
+ S 16777215 0.000000 0.000000 -7.000000 36.000000 -7.000000
+ S 16777215 0.000000 0.000000 -10.500000 36.000000 -10.500000
+ S 16777215 0.000000 0.000000 -14.000000 36.000000 -14.000000
+ L 11579568 0.750000 -0.375000 3.8750000 36.375000 3.875000
+ L 11579568 0.750000 36.375000 4.250000 36.375000 -18.250000
+ L 11579568 0.750000 36.375000 -17.875000 -0.375000 -17.875000
+ L 11579568 0.750000 -0.375000 -18.250000 -0.375000 4.250000
+ L 0 0.046875 0.000000 3.500000 36.000000 3.500000
+ L 0 0.046875 36.000000 3.500000 36.000000 -17.500000
+ L 0 0.046875 36.000000 -17.500000 0.000000 -17.500000
+ L 0 0.046875 0.000000 -17.500000 0.000000 3.500000
+ L 0 0.046875 -0.750000 4.250000 36.750000 4.250000
+ L 0 0.046875 36.750000 4.250000 36.750000 -18.250000
+ L 0 0.046875 36.750000 -18.250000 -0.750000 -18.250000
+ L 0 0.046875 -0.750000 -18.250000 -0.750000 4.250000
+ END$SEGS
+TURNOUT O "Ross 36"" 10 Stop Transfer Table (3.5"" Trk Center) TT3610" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ E 0.000000 0.000000 270.000000
+ E 36.000000 0.000000 90.000000
+ E 0.000000 -3.500000 270.000000
+ E 36.000000 -3.500000 90.000000
+ E 0.000000 -7.000000 270.000000
+ E 36.000000 -7.000000 90.000000
+ E 0.000000 -10.500000 270.000000
+ E 36.000000 -10.500000 90.000000
+ E 0.000000 -14.000000 270.000000
+ E 36.000000 -14.000000 90.000000
+ E 0.000000 -17.500000 270.000000
+ E 36.000000 -17.500000 90.000000
+ E 0.000000 -21.000000 270.000000
+ E 36.000000 -21.000000 90.000000
+ E 0.000000 -24.500000 270.000000
+ E 36.000000 -24.500000 90.000000
+ E 0.000000 -28.000000 270.000000
+ E 36.000000 -28.000000 90.000000
+ E 0.000000 -31.500000 270.000000
+ E 36.000000 -31.500000 90.000000
+ S 0 0.000000 0.000000 0.000000 36.000000 0.000000
+ S 16777215 0.000000 0.000000 -3.500000 36.000000 -3.500000
+ S 16777215 0.000000 0.000000 -7.000000 36.000000 -7.000000
+ S 16777215 0.000000 0.000000 -10.500000 36.000000 -10.500000
+ S 16777215 0.000000 0.000000 -14.000000 36.000000 -14.000000
+ S 16777215 0.000000 0.000000 -17.500000 36.000000 -17.500000
+ S 16777215 0.000000 0.000000 -21.000000 36.000000 -21.000000
+ S 16777215 0.000000 0.000000 -24.500000 36.000000 -24.500000
+ S 16777215 0.000000 0.000000 -28.000000 36.000000 -28.000000
+ S 16777215 0.000000 0.000000 -31.500000 36.000000 -31.500000
+ L 11579568 0.750000 -0.375000 3.8750000 36.375000 3.875000
+ L 11579568 0.750000 36.375000 4.250000 36.375000 -35.750000
+ L 11579568 0.750000 36.375000 -35.375000 -0.375000 -35.375000
+ L 11579568 0.750000 -0.375000 -35.750000 -0.375000 4.250000
+ L 0 0.046875 0.000000 3.500000 36.000000 3.500000
+ L 0 0.046875 36.000000 3.500000 36.000000 -35.000000
+ L 0 0.046875 36.000000 -35.000000 0.000000 -35.000000
+ L 0 0.046875 0.000000 -35.000000 0.000000 3.500000
+ L 0 0.046875 -0.750000 4.250000 36.750000 4.250000
+ L 0 0.046875 36.750000 4.250000 36.750000 -35.750000
+ L 0 0.046875 36.750000 -35.750000 -0.750000 -35.750000
+ L 0 0.046875 -0.750000 -35.750000 -0.750000 4.250000
+ END$SEGS
+
+SUBCONTENTS Ross - Roundhouses
+TURNOUT O "Ross 33"" 6 Stall Roundhouse RH336" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ E 16.500000 0.000000 270.000000
+ E 16.358840 2.153682 262.500000
+ E 15.937776 4.270514 255.000000
+ E 15.244012 6.314277 247.500000
+ E 14.289416 8.250000 240.000000
+ E 13.090330 10.044564 232.500000
+ S 0 0.000000 16.500000 0.000000 66.2500000 0.000000
+ S 0 0.000000 16.358840 2.153682 65.683222 8.647360
+ S 0 0.000000 15.937776 4.270514 63.992586 17.146762
+ S 0 0.000000 15.244012 6.314277 61.207019 25.352777
+ S 0 0.000000 14.289416 8.250000 57.374183 33.125000
+ S 0 0.000000 13.090330 10.044564 52.559659 40.330445
+ L 8404992 0.100000 31.000000 -2.031847 68.666610 -4.500647
+ L 8404992 0.100000 31.000000 -0.739166 66.250000 -0.739166
+ L 8404992 0.100000 31.000000 0.739166 66.250000 0.739166
+ L 8404992 0.100000 31.000000 2.031847 68.666610 4.500647
+ L 8404992 0.100000 31.000000 0.739166 31.000000 2.031847
+ L 8404992 0.100000 31.000000 -0.739166 31.000000 -2.031847
+ L 8404992 0.100000 66.250000 0.739166 66.250000 -0.739166
+ L 8404992 0.100000 68.666610 4.500647 68.666610 -4.500647
+ L 8404992 0.100000 30.831271 3.313470 65.779703 7.914518
+ L 8404992 0.100000 30.638310 4.779154 65.586742 9.380202
+ L 8404992 0.100000 30.469581 6.060777 67.491705 13.424935
+ L 8404992 0.100000 31.000000 2.031847 30.831271 3.313470
+ L 8404992 0.100000 30.638310 4.779154 30.469581 6.060777
+ L 8404992 0.100000 65.586742 9.380202 65.779703 7.914518
+ L 8404992 0.100000 67.491705 13.424935 68.666610 4.500647
+ L 8404992 0.100000 30.135011 7.309411 64.183896 16.432783
+ L 8404992 0.100000 29.752391 8.737369 63.801276 17.860741
+ L 8404992 0.100000 29.417820 9.986004 65.161999 22.119518
+ L 8404992 0.100000 30.469581 6.060777 30.135011 7.309411
+ L 8404992 0.100000 29.752391 8.737369 29.417820 9.986004
+ L 8404992 0.100000 63.801276 17.860741 64.183896 16.432783
+ L 8404992 0.100000 65.16199 22.119518 67.491705 13.424935
+ L 8404992 0.100000 28.923132 11.180287 61.489885 24.669878
+ L 8404992 0.100000 28.357399 12.546086 60.924153 26.035677
+ L 8404992 0.100000 27.862711 13.740369 61.717352 30.435630
+ L 8404992 0.100000 29.417820 9.986004 28.923132 11.180287
+ L 8404992 0.100000 28.357399 12.546086 27.862711 13.740369
+ L 8404992 0.100000 60.924153 26.035677 61.489885 24.669878
+ L 8404992 0.100000 61.717352 30.435630 65.161999 22.119518
+ L 8404992 0.100000 27.216370 14.859864 57.743766 32.484864
+ L 8404992 0.100000 26.477205 16.140136 57.004600 33.765136
+ L 8404992 0.100000 25.830864 17.259631 57.216705 38.230980
+ L 8404992 0.100000 27.862711 13.740369 27.216370 14.859864
+ L 8404992 0.100000 26.477205 16.140136 25.830864 17.259631
+ L 8404992 0.100000 57.004600 33.765136 57.743766 32.484864
+ L 8404992 0.100000 57.216705 38.230980 61.717352 30.435630
+ L 8404992 0.100000 25.043929 18.285185 53.009634 39.744025
+ L 8404992 0.100000 24.143978 19.458024 52.109683 40.916864
+ L 8404992 0.100000 23.357043 20.483577 51.737064 45.372187
+ L 8404992 0.100000 25.830864 17.259631 25.043929 18.285185
+ L 8404992 0.100000 24.143978 19.458024 23.357043 20.483577
+ L 8404992 0.100000 52.109683 40.916864 53.009634 39.744025
+ L 8404992 0.100000 51.737064 45.372187 57.216705 38.230980
+ END$SEGS
+TURNOUT O "Ross 33"" 6 Stall Add-On Roundhouse RH336A" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ E 16.500000 0.000000 270.000000
+ E 16.358840 2.153682 262.500000
+ E 15.937776 4.270514 255.000000
+ E 15.244012 6.314277 247.500000
+ E 14.289416 8.250000 240.000000
+ E 13.090330 10.044564 232.500000
+ S 0 0.000000 16.500000 0.000000 66.2500000 0.000000
+ S 0 0.000000 16.358840 2.153682 65.683222 8.647360
+ S 0 0.000000 15.937776 4.270514 63.992586 17.146762
+ S 0 0.000000 15.244012 6.314277 61.207019 25.352777
+ S 0 0.000000 14.289416 8.250000 57.374183 33.125000
+ S 0 0.000000 13.090330 10.044564 52.559659 40.330445
+# L 8404992 0.100000 31.000000 -2.031847 68.666610 -4.500647
+ L 8404992 0.100000 31.000000 -0.739166 66.250000 -0.739166
+ L 8404992 0.100000 31.000000 0.739166 66.250000 0.739166
+ L 8404992 0.100000 31.000000 2.031847 68.666610 4.500647
+ L 8404992 0.100000 31.000000 0.739166 31.000000 2.031847
+ L 8404992 0.100000 31.000000 -0.739166 31.000000 -2.031847
+ L 8404992 0.100000 66.250000 0.739166 66.250000 -0.739166
+ L 8404992 0.100000 68.666610 4.500647 68.666610 -4.500647
+ L 8404992 0.100000 30.831271 3.313470 65.779703 7.914518
+ L 8404992 0.100000 30.638310 4.779154 65.586742 9.380202
+ L 8404992 0.100000 30.469581 6.060777 67.491705 13.424935
+ L 8404992 0.100000 31.000000 2.031847 30.831271 3.313470
+ L 8404992 0.100000 30.638310 4.779154 30.469581 6.060777
+ L 8404992 0.100000 65.586742 9.380202 65.779703 7.914518
+ L 8404992 0.100000 67.491705 13.424935 68.666610 4.500647
+ L 8404992 0.100000 30.135011 7.309411 64.183896 16.432783
+ L 8404992 0.100000 29.752391 8.737369 63.801276 17.860741
+ L 8404992 0.100000 29.417820 9.986004 65.161999 22.119518
+ L 8404992 0.100000 30.469581 6.060777 30.135011 7.309411
+ L 8404992 0.100000 29.752391 8.737369 29.417820 9.986004
+ L 8404992 0.100000 63.801276 17.860741 64.183896 16.432783
+ L 8404992 0.100000 65.16199 22.119518 67.491705 13.424935
+ L 8404992 0.100000 28.923132 11.180287 61.489885 24.669878
+ L 8404992 0.100000 28.357399 12.546086 60.924153 26.035677
+ L 8404992 0.100000 27.862711 13.740369 61.717352 30.435630
+ L 8404992 0.100000 29.417820 9.986004 28.923132 11.180287
+ L 8404992 0.100000 28.357399 12.546086 27.862711 13.740369
+ L 8404992 0.100000 60.924153 26.035677 61.489885 24.669878
+ L 8404992 0.100000 61.717352 30.435630 65.161999 22.119518
+ L 8404992 0.100000 27.216370 14.859864 57.743766 32.484864
+ L 8404992 0.100000 26.477205 16.140136 57.004600 33.765136
+ L 8404992 0.100000 25.830864 17.259631 57.216705 38.230980
+ L 8404992 0.100000 27.862711 13.740369 27.216370 14.859864
+ L 8404992 0.100000 26.477205 16.140136 25.830864 17.259631
+ L 8404992 0.100000 57.004600 33.765136 57.743766 32.484864
+ L 8404992 0.100000 57.216705 38.230980 61.717352 30.435630
+ L 8404992 0.100000 25.043929 18.285185 53.009634 39.744025
+ L 8404992 0.100000 24.143978 19.458024 52.109683 40.916864
+ L 8404992 0.100000 23.357043 20.483577 51.737064 45.372187
+ L 8404992 0.100000 25.830864 17.259631 25.043929 18.285185
+ L 8404992 0.100000 24.143978 19.458024 23.357043 20.483577
+ L 8404992 0.100000 52.109683 40.916864 53.009634 39.744025
+ L 8404992 0.100000 51.737064 45.372187 57.216705 38.230980
+ END$SEGS
+TURNOUT O "Ross 33"" 3 Stall Roundhouse RH333" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ E 16.500000 0.000000 270.000000
+ E 16.358840 2.153682 262.500000
+ E 15.937776 4.270514 255.000000
+ S 0 0.000000 16.500000 0.000000 66.2500000 0.000000
+ S 0 0.000000 16.358840 2.153682 65.683222 8.647360
+ S 0 0.000000 15.937776 4.270514 63.992586 17.146762
+ L 8404992 0.100000 31.000000 -2.031847 68.666610 -4.500647
+ L 8404992 0.100000 31.000000 -0.739166 66.250000 -0.739166
+ L 8404992 0.100000 31.000000 0.739166 66.250000 0.739166
+ L 8404992 0.100000 31.000000 2.031847 68.666610 4.500647
+ L 8404992 0.100000 31.000000 0.739166 31.000000 2.031847
+ L 8404992 0.100000 31.000000 -0.739166 31.000000 -2.031847
+ L 8404992 0.100000 66.250000 0.739166 66.250000 -0.739166
+ L 8404992 0.100000 68.666610 4.500647 68.666610 -4.500647
+ L 8404992 0.100000 30.831271 3.313470 65.779703 7.914518
+ L 8404992 0.100000 30.638310 4.779154 65.586742 9.380202
+ L 8404992 0.100000 30.469581 6.060777 67.491705 13.424935
+ L 8404992 0.100000 31.000000 2.031847 30.831271 3.313470
+ L 8404992 0.100000 30.638310 4.779154 30.469581 6.060777
+ L 8404992 0.100000 65.586742 9.380202 65.779703 7.914518
+ L 8404992 0.100000 67.491705 13.424935 68.666610 4.500647
+ L 8404992 0.100000 30.135011 7.309411 64.183896 16.432783
+ L 8404992 0.100000 29.752391 8.737369 63.801276 17.860741
+ L 8404992 0.100000 29.417820 9.986004 65.161999 22.119518
+ L 8404992 0.100000 30.469581 6.060777 30.135011 7.309411
+ L 8404992 0.100000 29.752391 8.737369 29.417820 9.986004
+ L 8404992 0.100000 63.801276 17.860741 64.183896 16.432783
+ L 8404992 0.100000 65.16199 22.119518 67.491705 13.424935
+ END$SEGS
+TURNOUT O "Ross 33"" 3 Stall Add-On Roundhouse RH333A" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ E 16.500000 0.000000 270.000000
+ E 16.358840 2.153682 262.500000
+ E 15.937776 4.270514 255.000000
+ S 0 0.000000 16.500000 0.000000 66.2500000 0.000000
+ S 0 0.000000 16.358840 2.153682 65.683222 8.647360
+ S 0 0.000000 15.937776 4.270514 63.992586 17.146762
+# L 8404992 0.100000 31.000000 -2.031847 68.666610 -4.500647
+ L 8404992 0.100000 31.000000 -0.739166 66.250000 -0.739166
+ L 8404992 0.100000 31.000000 0.739166 66.250000 0.739166
+ L 8404992 0.100000 31.000000 2.031847 68.666610 4.500647
+ L 8404992 0.100000 31.000000 0.739166 31.000000 2.031847
+ L 8404992 0.100000 31.000000 -0.739166 31.000000 -2.031847
+ L 8404992 0.100000 66.250000 0.739166 66.250000 -0.739166
+ L 8404992 0.100000 68.666610 4.500647 68.666610 -4.500647
+ L 8404992 0.100000 30.831271 3.313470 65.779703 7.914518
+ L 8404992 0.100000 30.638310 4.779154 65.586742 9.380202
+ L 8404992 0.100000 30.469581 6.060777 67.491705 13.424935
+ L 8404992 0.100000 31.000000 2.031847 30.831271 3.313470
+ L 8404992 0.100000 30.638310 4.779154 30.469581 6.060777
+ L 8404992 0.100000 65.586742 9.380202 65.779703 7.914518
+ L 8404992 0.100000 67.491705 13.424935 68.666610 4.500647
+ L 8404992 0.100000 30.135011 7.309411 64.183896 16.432783
+ L 8404992 0.100000 29.752391 8.737369 63.801276 17.860741
+ L 8404992 0.100000 29.417820 9.986004 65.161999 22.119518
+ L 8404992 0.100000 30.469581 6.060777 30.135011 7.309411
+ L 8404992 0.100000 29.752391 8.737369 29.417820 9.986004
+ L 8404992 0.100000 63.801276 17.860741 64.183896 16.432783
+ L 8404992 0.100000 65.16199 22.119518 67.491705 13.424935
+ END$SEGS
+
+SUBCONTENTS Ross - Bridges (Single Track)
+TURNOUT O "Ross 9"" Deck Girder Bridge Single Track BRDGDW9"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 9.000000 0.000000
+ L 8404992 1.000000 0.000000 1.250000 9.000000 1.250000
+ L 8404992 1.000000 0.000000 -1.250000 9.000000 -1.250000
+ END$SEGS
+TURNOUT O "Ross 12"" Deck Girder Bridge Single Track BRDGDW12"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 12.000000 0.000000
+ L 8404992 1.000000 0.000000 1.250000 12.000000 1.250000
+ L 8404992 1.000000 0.000000 -1.250000 12.000000 -1.250000
+ END$SEGS
+TURNOUT O "Ross 15"" Deck Girder Bridge Single Track BRDGDW15"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 15.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 15.000000 0.000000
+ L 8404992 1.000000 0.000000 1.250000 15.000000 1.250000
+ L 8404992 1.000000 0.000000 -1.250000 15.000000 -1.250000
+ END$SEGS
+TURNOUT O "Ross 18"" Deck Girder Bridge Single Track BRDGDW18"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 18.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 18.000000 0.000000
+ L 8404992 1.000000 0.000000 1.250000 18.000000 1.250000
+ L 8404992 1.000000 0.000000 -1.250000 18.000000 -1.250000
+ END$SEGS
+TURNOUT O "Ross 24"" Deck Girder Bridge Single Track BRDGDW24"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 24.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ L 8404992 1.000000 0.000000 1.250000 24.000000 1.250000
+ L 8404992 1.000000 0.000000 -1.250000 24.000000 -1.250000
+ END$SEGS
+TURNOUT O "Ross 30"" Deck Girder Bridge Single Track BRDGDW30"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 30.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 30.000000 0.000000
+ L 8404992 1.000000 0.000000 1.250000 30.000000 1.250000
+ L 8404992 1.000000 0.000000 -1.250000 30.000000 -1.250000
+ END$SEGS
+TURNOUT O "Ross 36"" Deck Girder Bridge Single Track BRDGDW36"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 36.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 36.000000 0.000000
+ L 8404992 1.000000 0.000000 1.250000 36.000000 1.250000
+ L 8404992 1.000000 0.000000 -1.250000 36.000000 -1.250000
+ END$SEGS
+
+SUBCONTENTS Ross - Bridges (Double Track)
+TURNOUT O "Ross 9"" Deck Girder Bridge Double Track BRDTDGDW9"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 9.000000 0.000000 90.000000
+ E 0.000000 -3.500000 270.000000
+ E 9.000000 -3.500000 90.000000
+ S 0 0.000000 0.000000 0.000000 9.000000 0.000000
+ S 0 0.000000 0.000000 -3.500000 9.000000 -3.500000
+ L 8404992 1.000000 0.000000 1.250000 9.000000 1.250000
+ L 8404992 1.000000 0.000000 -4.750000 9.000000 -4.750000
+ END$SEGS
+TURNOUT O "Ross 12"" Deck Girder Bridge Double Track BRDTDGDW12"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 12.000000 0.000000 90.000000
+ E 0.000000 -3.500000 270.000000
+ E 12.000000 -3.500000 90.000000
+ S 0 0.000000 0.000000 0.000000 12.000000 0.000000
+ S 0 0.000000 0.000000 -3.500000 12.000000 -3.500000
+ L 8404992 1.000000 0.000000 1.250000 12.000000 1.250000
+ L 8404992 1.000000 0.000000 -4.750000 12.000000 -4.750000
+ END$SEGS
+TURNOUT O "Ross 15"" Deck Girder Bridge Double Track BRDTDGDW15"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 15.000000 0.000000 90.000000
+ E 0.000000 -3.500000 270.000000
+ E 15.000000 -3.500000 90.000000
+ S 0 0.000000 0.000000 0.000000 15.000000 0.000000
+ S 0 0.000000 0.000000 -3.500000 15.000000 -3.500000
+ L 8404992 1.000000 0.000000 1.250000 15.000000 1.250000
+ L 8404992 1.000000 0.000000 -4.750000 15.000000 -4.750000
+ END$SEGS
+TURNOUT O "Ross 18"" Deck Girder Bridge Double Track BRDTDGDW18"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 18.000000 0.000000 90.000000
+ E 0.000000 -3.500000 270.000000
+ E 18.000000 -3.500000 90.000000
+ S 0 0.000000 0.000000 0.000000 18.000000 0.000000
+ S 0 0.000000 0.000000 -3.500000 18.000000 -3.500000
+ L 8404992 1.000000 0.000000 1.250000 18.000000 1.250000
+ L 8404992 1.000000 0.000000 -4.750000 18.000000 -4.750000
+ END$SEGS
+TURNOUT O "Ross 24"" Deck Girder Bridge Double Track BRDTDGDW24"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 24.000000 0.000000 90.000000
+ E 0.000000 -3.500000 270.000000
+ E 24.000000 -3.500000 90.000000
+ S 0 0.000000 0.000000 0.000000 24.000000 0.000000
+ S 0 0.000000 0.000000 -3.500000 24.000000 -3.500000
+ L 8404992 1.000000 0.000000 1.250000 24.000000 1.250000
+ L 8404992 1.000000 0.000000 -4.750000 24.000000 -4.750000
+ END$SEGS
+TURNOUT O "Ross 30"" Deck Girder Bridge Double Track BRDTDGDW30"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 30.000000 0.000000 90.000000
+ E 0.000000 -3.500000 270.000000
+ E 30.000000 -3.500000 90.000000
+ S 0 0.000000 0.000000 0.000000 30.000000 0.000000
+ S 0 0.000000 0.000000 -3.500000 30.000000 -3.500000
+ L 8404992 1.000000 0.000000 1.250000 30.000000 1.250000
+ L 8404992 1.000000 0.000000 -4.750000 30.000000 -4.750000
+ END$SEGS
+TURNOUT O "Ross 36"" Deck Girder Bridge Double Track BRDTDGDW36"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 36.000000 0.000000 90.000000
+ E 0.000000 -3.500000 270.000000
+ E 36.000000 -3.500000 90.000000
+ S 0 0.000000 0.000000 0.000000 36.000000 0.000000
+ S 0 0.000000 0.000000 -3.500000 36.000000 -3.500000
+ L 8404992 1.000000 0.000000 1.250000 36.000000 1.250000
+ L 8404992 1.000000 0.000000 -4.750000 36.000000 -4.750000
+ END$SEGS
+
diff --git a/app/lib/params/OO-DCC Concepts Legacy Realistic Track.xtp b/app/lib/params/OO-DCC Concepts Legacy Realistic Track.xtp
new file mode 100644
index 0000000..8006a66
--- /dev/null
+++ b/app/lib/params/OO-DCC Concepts Legacy Realistic Track.xtp
@@ -0,0 +1,236 @@
+CONTENTS DCC Concepts OO Scale Legacy Realistic Track
+SUBCONTENTS DCC Concepts OO Scale Legacy Realistic Track - Turnouts
+TURNOUT OO "DCC Concepts Turnout B9 302mm Left-hand ESP-Point-B9L"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.889764 0.000000 90.000000
+ E 11.889764 1.023622 83.640340
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 11.889764 0.000000
+ C 0 0.000000 -37.007994 0.649600 37.007994 173.640340 6.359660
+ S 0 0.000000 4.748947 0.227741 11.889764 1.023622
+ END$SEGS
+TURNOUT OO "DCC Concepts Turnout B9 302mm Right-hand ESP-Point-B9R"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.889764 0.000000 90.000000
+ E 11.889764 -1.023622 96.359660
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 11.889764 0.000000
+ C 0 0.000000 37.007994 0.649600 -37.007994 0.000000 6.359660
+ S 0 0.000000 4.748947 -0.227741 11.889764 -1.023622
+ END$SEGS
+TURNOUT OO "DCC Concepts Turnout B8 300mm Left-hand ESP-Point-B8L"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.811024 0.000000 90.000000
+ E 11.811024 1.023622 82.847331
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 11.811024 0.000000
+ C 0 0.000000 -48.070982 0.649600 48.070982 172.847331 7.152669
+ S 0 0.000000 6.635092 0.374093 11.811024 1.023622
+ END$SEGS
+TURNOUT OO "DCC Concepts Turnout B8 300mm Right-hand ESP-Point-B8R"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.811024 0.000000 90.000000
+ E 11.811024 -1.023622 97.152669
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 11.811024 0.000000
+ C 0 0.000000 48.070982 0.649600 -48.070982 0.000000 7.152669
+ S 0 0.000000 6.635092 -0.374093 11.811024 -1.023622
+ END$SEGS
+TURNOUT OO "DCC Concepts Turnout B7 275mm Left-hand ESP-Point-B7L"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 10.826772 0.000000 90.000000
+ E 10.826772 1.023622 81.828766
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 10.826772 0.000000
+ C 0 0.000000 -42.677266 0.649600 42.677266 171.828766 8.171234
+ S 0 0.000000 6.715405 0.433272 10.826772 1.023622
+ END$SEGS
+TURNOUT OO "DCC Concepts Turnout B7 275mm Right-hand ESP-Point-B7R"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 10.826772 0.000000 90.000000
+ E 10.826772 -1.023622 98.171234
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 10.826772 0.000000
+ C 0 0.000000 42.677266 0.649600 -42.677266 0.000000 8.171234
+ S 0 0.000000 6.715405 -0.433272 10.826772 -1.023622
+ END$SEGS
+TURNOUT OO "DCC Concepts Turnout B6 258.5mm Left-hand ESP-Point-B6L"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 10.177165 0.000000 90.000000
+ E 10.177165 1.023622 80.472717
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 10.177165 0.000000
+ C 0 0.000000 -41.141806 0.649600 41.141806 170.472717 9.527283
+ S 0 0.000000 7.459278 0.567473 10.177165 1.023622
+ END$SEGS
+TURNOUT OO "DCC Concepts Turnout B6 258.5mm Right-hand ESP-Point-B6R"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 10.177165 0.000000 90.000000
+ E 10.177165 -1.023622 99.527283
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 10.177165 0.000000
+ C 0 0.000000 41.141806 0.649600 -41.141806 0.000000 9.527283
+ S 0 0.000000 7.459278 -0.567473 10.177165 -1.023622
+ END$SEGS
+TURNOUT OO "DCC Concepts Turnout A5 227mm Left-hand ESP-Point-A5L"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.937008 0.000000 90.000000
+ E 8.937008 1.023622 78.578814
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 8.937008 0.000000
+ C 0 0.000000 -32.204791 0.649600 32.204791 168.578814 11.421186
+ S 0 0.000000 7.026786 0.637719 8.937008 1.023622
+ END$SEGS
+TURNOUT OO "DCC Concepts Turnout A5 227mm Right-hand ESP-Point-A5R"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.937008 0.000000 90.000000
+ E 8.937008 -1.023622 101.421186
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 8.937008 0.000000
+ C 0 0.000000 32.204791 0.649600 -32.204791 0.000000 11.421186
+ S 0 0.000000 7.026786 -0.637719 8.937008 -1.023622
+ END$SEGS
+
+
+SUBCONTENTS DCC Concepts OO Scale Legacy Realistic Track - Wyes
+TURNOUT OO "DCC Concepts 3-Way Asymmetric B8 Left B7 Right 346mm Turnout ESP-3Way-B8L"
+ P "Left" 1 2 3
+ P "Normal" 1 6
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 13.622047 1.023622 82.847331
+ E 13.622047 -1.023622 98.171234
+ E 13.622047 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ C 0 0.000000 -77.047349 0.649600 77.047349 172.847331 7.152669
+ S 0 0.000000 10.243045 0.599590 13.622047 1.023622
+ C 0 0.000000 81.811114 0.649600 -81.811114 0.000000 8.171234
+ S 0 0.000000 12.277576 -0.830570 13.622047 -1.023622
+ S 0 0.000000 0.649600 0.000000 13.622047 0.000000
+ END$SEGS
+TURNOUT OO "DCC Concepts 3-Way Asymmetric B8 Right B7 Left 346mm Turnout ESP-3Way-B8R"
+ P "Left" 1 2 3
+ P "Normal" 1 6
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 13.622047 1.023622 81.828766
+ E 13.622047 -1.023622 97.152669
+ E 13.622047 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ C 0 0.000000 -81.811114 0.649600 81.811114 171.828766 8.171234
+ S 0 0.000000 12.277576 0.830570 13.622047 1.023622
+ C 0 0.000000 77.047349 0.649600 -77.047349 0.000000 7.152669
+ S 0 0.000000 10.243045 -0.599590 13.622047 -1.023622
+ S 0 0.000000 0.649600 0.000000 13.622047 0.000000
+ END$SEGS
+
+
+SUBCONTENTS DCC Concepts OO Scale Legacy Realistic Track - Slip Turnouts
+TURNOUT OO "DCC Concepts Single Slip B8 353mm ESP-SSlip-B8"
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 1 5 4
+ E 0.000000 0.000000 270.000000
+ E 13.897638 0.000000 90.000000
+ E 0.054076 0.865223 277.152669
+ E 13.843562 -0.865223 97.152669
+ S 0 0.000000 0.000000 0.000000 1.299200 0.000000
+ S 0 0.000000 1.299200 0.000000 13.897638 0.000000
+ S 0 0.000000 0.054076 0.865223 12.554472 -0.703455
+ S 0 0.000000 12.554472 -0.703455 13.843562 -0.865223
+ C 0 0.000000 90.393901 1.299200 -90.393901 0.000000 7.152669
+ END$SEGS
+TURNOUT OO "DCC Concepts Double Slip B8 353mm ESP-DSlip-B8"
+ P "Cross1" 1 2 3
+ P "Cross2" 4 5 6
+ P "Slip1" 1 7 6
+ P "Slip2" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 13.897638 0.000000 90.000000
+ E 0.054076 0.865223 277.152669
+ E 13.843562 -0.865223 97.152669
+ S 0 0.000000 0.000000 0.000000 1.299200 0.000000
+ S 0 0.000000 1.299200 0.000000 12.598438 0.000000
+ S 0 0.000000 12.598438 0.000000 13.897638 0.000000
+ S 0 0.000000 0.054076 0.865223 1.343166 0.703455
+ S 0 0.000000 1.343166 0.703455 12.554472 -0.703455
+ S 0 0.000000 12.554472 -0.703455 13.843562 -0.865223
+ C 0 0.000000 90.393901 1.299200 -90.393901 0.000000 7.152669
+ C 0 0.000000 -90.393901 12.598438 90.393901 180.000000 7.152669
+ END$SEGS
+TURNOUT OO "DCC Concepts Double Slip B7 317mm ESP-DSlip-B7"
+ P "Cross1" 1 2 3
+ P "Cross2" 4 5 6
+ P "Slip1" 1 7 6
+ P "Slip2" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 12.480315 0.000000 90.000000
+ E 0.063352 0.886926 278.171234
+ E 12.416963 -0.886926 98.171234
+ S 0 0.000000 0.000000 0.000000 1.299200 0.000000
+ S 0 0.000000 1.299200 0.000000 11.181115 0.000000
+ S 0 0.000000 11.181115 0.000000 12.480315 0.000000
+ S 0 0.000000 0.063352 0.886926 1.349362 0.702268
+ S 0 0.000000 1.349362 0.702268 11.130953 -0.702268
+ S 0 0.000000 11.130953 -0.702268 12.416963 -0.886926
+ C 0 0.000000 69.173401 1.299200 -69.173401 0.000000 8.171234
+ C 0 0.000000 -69.173401 11.181115 69.173401 180.000000 8.171234
+ END$SEGS
+
+
+SUBCONTENTS DCC Concepts OO Scale Legacy Realistic Track - Crossings
+TURNOUT OO "DCC Concepts Diamond Crossing A5 250mm ESP-Diam-A5"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 9.842520 0.000000 90.000000
+ E 0.097451 0.974507 281.421186
+ E 9.745069 -0.974507 101.421186
+ S 0 0.000000 0.000000 0.000000 9.842520 0.000000
+ S 0 0.000000 0.097451 0.974507 9.745069 -0.974507
+ END$SEGS
+TURNOUT OO "DCC Concepts Diamond Crossing B6 283mm ESP-Diam-B6"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 11.141732 0.000000 90.000000
+ E 0.076840 0.922074 279.527283
+ E 11.064892 -0.922074 99.527283
+ S 0 0.000000 0.000000 0.000000 11.141732 0.000000
+ S 0 0.000000 0.076840 0.922074 11.064892 -0.922074
+ END$SEGS
+TURNOUT OO "DCC Concepts Diamond Crossing B7 317mm ESP-Diam-B7"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 12.480315 0.000000 90.000000
+ E 0.063352 0.886926 278.171234
+ E 12.416963 -0.886926 98.171234
+ S 0 0.000000 0.000000 0.000000 12.480315 0.000000
+ S 0 0.000000 0.063352 0.886926 12.416963 -0.886926
+ END$SEGS
+TURNOUT OO "DCC Concepts Diamond Crossing B8 353mm ESP-Diam-B8"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 13.897638 0.000000 90.000000
+ E 0.054076 0.865223 277.152669
+ E 13.843562 -0.865223 97.152669
+ S 0 0.000000 0.000000 0.000000 13.897638 0.000000
+ S 0 0.000000 0.054076 0.865223 13.843562 -0.865223
+ END$SEGS
diff --git a/app/lib/params/OO-HornbyOO.xtp b/app/lib/params/OO-HornbyOO.xtp
new file mode 100644
index 0000000..43771ed
--- /dev/null
+++ b/app/lib/params/OO-HornbyOO.xtp
@@ -0,0 +1,526 @@
+CONTENTS Hornby OO Scale Points & Track Sections
+
+SUBCONTENTS Hornby OO Scale - Crossings
+TURNOUT OO "Hornby Left Hand Diamond Crossing R.614"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 6.594488 0.000000 90.000000
+ E 0.506517 1.210973 292.500000
+ E 6.599029 -1.312629 112.500000
+ S 0 0.000000 0.000000 0.000000 6.594488 0.000000
+ S 0 0.000000 0.506517 1.210973 6.599029 -1.312629
+ END$SEGS
+TURNOUT OO "Hornby Right Hand Diamond Crossing R.615"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 6.594488 0.000000 90.000000
+ E 0.506517 -1.210973 247.500000
+ E 6.599029 1.312629 67.500000
+ S 0 0.000000 0.000000 0.000000 6.594488 0.000000
+ S 0 0.000000 0.506517 -1.210973 6.599029 1.312629
+ END$SEGS
+
+SUBCONTENTS Hornby OO Scale - Curve Track
+TURNOUT OO "Hornby Curve 1st Radius 371mm R.604"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.589589 1.111838 67.500000
+ C 0 0.000000 -14.606299 0.000000 14.606299 157.500076 22.500000
+ END$SEGS
+TURNOUT OO "Hornby Double Curve 1st Radius 371mm R.605"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.328213 4.278086 45.000000
+ C 0 0.000000 -14.606299 0.000000 14.606299 135.000000 45.000000
+ END$SEGS
+TURNOUT OO "Hornby Curve 2nd Radius 438mm R.606"
+ U "Curved Section" "Open Registration" "Hornby" "Curve 2nd Radius" "R.606" 17.244094 22.500000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.599029 1.312629 67.500000
+ C 0 0.000000 -17.244094 0.000000 17.244094 157.500000 22.500000
+ END$SEGS
+TURNOUT OO "Hornby Double Curve 2nd Radius 438mm R607"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.193416 5.050678 45.000000
+ C 0 0.000000 -17.244094 0.000000 17.244094 135.000000 45.000000
+ END$SEGS
+TURNOUT OO "Hornby Half Curve 2nd Radius 438mm R643"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.364156 0.331340 78.750000
+ C 0 0.000000 -17.244094 0.000000 17.244094 168.750000 11.250000
+ END$SEGS
+TURNOUT OO "Hornby Curve 3rd Radius 505mm R.608"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.608470 1.513419 67.500000
+ C 0 0.000000 -19.881890 0.000000 19.881890 157.500000 22.500000
+ END$SEGS
+TURNOUT OO "Hornby Double Curve 3rd Radius 505mm R.609"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 14.058619 5.823271 45.000000
+ C 0 0.000000 -19.881890 0.000000 19.881890 135.000000 45.000000
+ END$SEGS
+TURNOUT OO "Hornby Curve 4th Radius 572mm R8261"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.617910 1.714209 67.500000
+ C 0 0.000000 -22.519685 0.000000 22.519685 157.500000 22.500000
+ END$SEGS
+TURNOUT OO "Hornby Double Curve 4th Radius 572mm R8262"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 15.923822 6.595863 45.000000
+ C 0 0.000000 22.519685 0.000000 22.519685 135.000000 45.000000
+ END$SEGS
+TURNOUT OO "Hornby Y Curve 858.58mm R.628"
+ U "Curved Section" "Open Registration" "Hornby" "Curve" "R.628" 33.543307 11.250000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.594488 0.649500 78.750000
+ C 0 0.000000 33.802231 0.000000 33.802231 168.750000 11.250000
+ END$SEGS
+
+
+SUBCONTENTS Hornby OO Scale - Points
+TURNOUT OO "Hornby Y Point R632"
+ P "Left" 1
+ P "Right" 2
+ E 0.000000 0.000000 270.000000
+ E 6.594488 0.649500 78.750000
+ E 6.594488 -0.649500 101.250000
+ C 0 0.000000 33.802231 0.000000 33.802231 168.750000 11.250000
+ C 0 0.000000 33.802231 0.000000 -33.802231 0.000000 11.250000
+ END$SEGS
+TURNOUT OO "Hornby Left Hand Curved Point R.640"
+ P "Normal" 1 6 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 9.251969 1.318898 67.500000
+ E 9.645669 2.637795 56.250000
+ S 0 0.000000 0.000000 0.000000 1.598662 0.000000
+ C 0 0.000000 -13.513549 1.598679 13.513549 146.249924 33.750152
+ S 0 0.000000 9.106411 2.277460 9.645669 2.637795
+ C 0 0.000000 -14.065585 3.270099 14.065585 157.499924 22.500152
+ S 0 0.000000 8.652776 1.070691 9.251969 1.318898
+ S 0 0.000000 1.598662 0.000000 3.270080 0.000000
+ END$SEGS
+TURNOUT OO "Hornby Right Hand Curved Point R.641"
+ P "Normal" 1 6 4 5
+ P "Reverse" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 9.251969 -1.318898 112.500000
+ E 9.645669 -2.637795 123.750000
+ S 0 0.000000 0.000000 0.000000 1.598662 0.000000
+ C 0 0.000000 13.513549 1.598608 -13.513549 0.000076 33.750152
+ S 0 0.000000 9.106411 -2.277460 9.645669 -2.637795
+ C 0 0.000000 14.065585 3.270024 -14.065585 0.000076 22.500152
+ S 0 0.000000 8.652776 -1.070691 9.251969 -1.318898
+ S 0 0.000000 1.598662 0.000000 3.270080 0.000000
+ END$SEGS
+TURNOUT OO "Hornby Left Hand Point R.612/8072"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 6.594488 0.000000 90.000000
+ E 6.599024 1.312626 67.500000
+ S 0 0.000000 0.000000 0.000000 0.648600 0.000000
+ S 0 0.000000 0.648600 0.000000 6.594488 0.000000
+ C 0 0.000000 -13.983514 0.648619 13.983514 157.500000 22.500000
+ S 0 0.000000 5.999889 1.064444 6.599024 1.312626
+ END$SEGS
+TURNOUT OO "Hornby Right Hand Point R.613/8073"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 6.594488 0.000000 90.000000
+ E 6.599024 -1.312626 112.500000
+ S 0 0.000000 0.000000 0.000000 0.648600 0.000000
+ S 0 0.000000 0.648600 0.000000 6.594488 0.000000
+ C 0 0.000000 13.983514 0.648544 -13.983514 0.000000 22.500000
+ S 0 0.000000 5.999889 -1.064444 6.599024 -1.312626
+ END$SEGS
+TURNOUT OO "Hornby Left Hand Express Point R.622/8077"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 9.645669 0.000000 90.000000
+ E 9.645669 1.318898 78.750000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 9.645669 0.000000
+ C 0 0.000000 -24.018171 0.649632 24.018171 168.750000 11.250000
+ S 0 0.000000 5.335371 0.461514 9.645669 1.318898
+ END$SEGS
+TURNOUT OO "Hornby Right Hand Express Point R.623/8078"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 9.645669 0.000000 90.000000
+ E 9.645669 -1.318898 101.250000
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 9.645669 0.000000
+ C 0 0.000000 24.018171 0.649504 -24.018171 0.000000 11.250000
+ S 0 0.000000 5.335371 -0.461514 9.645669 -1.318898
+ END$SEGS
+
+
+SUBCONTENTS Hornby OO Scale - Straight Track
+TURNOUT OO "Hornby Straight 167.5mm R.600"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.594488 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 6.594488 0.000000
+ END$SEGS
+TURNOUT OO "Hornby Double Straight 335mm R.601"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 13.188976 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 13.188976 0.000000
+ END$SEGS
+TURNOUT OO "Hornby Long Straight 670mm R.603"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 26.377953 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 26.377953 0.000000
+ END$SEGS
+TURNOUT OO "Hornby Short Straight 38mm R.610"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.496063 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.496063 0.000000
+ END$SEGS
+TURNOUT OO "Hornby Semi-Flex Straight 915mm R.8090"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 26.377953 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 26.377953 0.000000
+ END$SEGS
+TURNOUT OO "Hornby Flex Straight 970mm R.621"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 26.377953 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 26.377953 0.000000
+ END$SEGS
+
+
+SUBCONTENTS Hornby OO Scale - Misc Track
+TURNOUT OO "Hornby Isolating Track R.618"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.594488 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 6.594488 0.000000
+ L3 16777215 0.062500 1.673228 0.375000 0 1.673228 -0.375000 0
+ L3 2696225 0.393701 0.393701 0.812500 0 2.952756 0.812500 0
+ L3 2696225 0.393701 0.393701 -0.812500 0 2.952756 -0.812500 0
+ END$SEGS
+TURNOUT OO "Hornby Railer/Uncopler Track R.620"
+ P "Normal" 2
+ E 0.000000 0.000000 270.000000
+ E 6.594488 0.000000 90.000000
+ F4 8424071 0.000000 4 0
+ 0.000000 0.687500 0
+ 6.594488 0.687500 0
+ 6.594488 -0.687500 0
+ 0.000000 -0.687500 0
+ S 0 0.000000 0.000000 0.000000 6.594488 0.000000
+ F4 2696225 0.000000 4 0
+ 0.000000 0.687500 0
+ 6.594488 0.687500 0
+ 4.773622 0.375000 0
+ 1.820866 0.375000 0
+ F4 2696225 0.000000 6 0
+ 0.910433 0.000000 0
+ 1.820866 0.250000 0
+ 4.773622 0.250000 0
+ 5.684047 0.000000 0
+ 4.773622 -0.250000 0
+ 1.820866 -0.250000 0
+ F4 2696225 0.000000 4 0
+ 0.000000 -0.687500 0
+ 6.594488 -0.687500 0
+ 4.773622 -0.375000 0
+ 1.820866 -0.375000 0
+ END$SEGS
+TURNOUT OO "Hornby Single Track Level Crossing R.645"
+ P "Normal" 2
+ E 0.000000 0.000000 270.000000
+ E 6.594488 0.000000 90.000000
+ F4 8424071 0.000000 4 0
+ 0.816929 1.574803 0
+ 5.777559 1.574803 0
+ 5.777559 -1.574803 0
+ 0.816929 -1.574803 0
+ S 0 0.000000 0.000000 0.000000 6.594488 0.000000
+ L3 0 0.031250 0.816929 1.574803 0 5.777559 1.574803 0
+ L3 0 0.031250 0.816929 -1.574803 0 5.777559 -1.574803 0
+ L3 0 0.031250 0.816929 1.574803 0 0.816929 -1.574803 0
+ L3 0 0.031250 5.777559 1.574803 0 5.777559 -1.574803 0
+ L3 0 0.031250 1.820866 1.574803 0 1.820866 -1.574803 0
+ L3 0 0.031250 4.773622 1.574803 0 4.773622 -1.574803 0
+ L3 16777215 0.200000 1.520866 -1.417323 0 1.720866 -1.417323 0
+ L3 16711680 0.100000 1.720866 -1.417323 0 2.193306 -1.417323 0
+ L3 16777215 0.100000 2.193306 -1.417323 0 2.665748 -1.417323 0
+ L3 16711680 0.100000 2.665748 -1.417323 0 3.138189 -1.417323 0
+ L3 16777215 0.100000 3.138189 -1.417323 0 3.610630 -1.417323 0
+ L3 16711680 0.100000 3.610630 -1.417323 0 4.083071 -1.417323 0
+ L3 16777215 0.200000 5.073622 1.417323 0 4.873622 1.417323 0
+ L3 16711680 0.100000 4.873622 1.417323 0 4.401181 1.417323 0
+ L3 16777215 0.100000 4.401181 1.417323 0 3.928740 1.417323 0
+ L3 16711680 0.100000 3.928740 1.417323 0 3.456299 1.417323 0
+ L3 16777215 0.100000 3.456299 1.417323 0 2.983858 1.417323 0
+ L3 16711680 0.100000 2.983858 1.417323 0 2.511417 1.417323 0
+ END$SEGS
+TURNOUT OO "Hornby Double Track Level Crossing R.636"
+ P "Normal" 2 0 3
+ E 0.000000 0.000000 270.000000
+ E 6.594488 0.000000 90.000000
+ E 0.000000 2.637795 270.000000
+ E 6.594488 2.637795 90.000000
+ F4 8424071 0.000000 4 0
+ 0.816929 4.212598 0
+ 5.777559 4.212598 0
+ 5.777559 -1.574803 0
+ 0.816929 -1.574803 0
+ S 0 0.000000 0.000000 0.000000 6.594488 0.000000
+ S 0 0.000000 0.000000 2.637795 6.594488 2.637795
+ L3 0 0.031250 0.816929 4.212598 0 5.777559 4.212598 0
+ L3 0 0.031250 0.816929 -1.574803 0 5.777559 -1.574803 0
+ L3 0 0.031250 0.816929 4.212598 0 0.816929 -1.574803 0
+ L3 0 0.031250 5.777559 4.212598 0 5.777559 -1.574803 0
+ L3 0 0.031250 1.820866 4.212598 0 1.820866 -1.574803 0
+ L3 0 0.031250 4.773622 4.212598 0 4.773622 -1.574803 0
+ L3 16777215 0.200000 1.520866 -1.417323 0 1.720866 -1.417323 0
+ L3 16711680 0.100000 1.720866 -1.417323 0 2.193306 -1.417323 0
+ L3 16777215 0.100000 2.193306 -1.417323 0 2.665748 -1.417323 0
+ L3 16711680 0.100000 2.665748 -1.417323 0 3.138189 -1.417323 0
+ L3 16777215 0.100000 3.138189 -1.417323 0 3.610630 -1.417323 0
+ L3 16711680 0.100000 3.610630 -1.417323 0 4.083071 -1.417323 0
+ L3 16777215 0.200000 5.073622 4.055118 0 4.873622 4.055118 0
+ L3 16711680 0.100000 4.873622 4.055118 0 4.401181 4.055118 0
+ L3 16777215 0.100000 4.401181 4.055118 0 3.928740 4.055118 0
+ L3 16711680 0.100000 3.928740 4.055118 0 3.456299 4.055118 0
+ L3 16777215 0.100000 3.456299 4.055118 0 2.983858 4.055118 0
+ L3 16711680 0.100000 2.983858 4.055118 0 2.511417 4.055118 0
+ END$SEGS
+TURNOUT OO "Hornby Power Track R.8206"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.594488 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 6.594488 0.000000
+ L3 0 0.500000 2.797244 0.000000 0 3.797244 0.000000 0
+ L3 0 0.625000 2.797244 -0.687500 0 3.797244 -0.687500 0
+ G3 16574153 0.000000 0.093750 3.047244 -0.687500 0
+ G3 16574153 0.000000 0.093750 3.547244 -0.687500 0
+ END$SEGS
+TURNOUT OO "Hornby Power Track (DCC) R.8241"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.594488 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 6.594488 0.000000
+ L3 0 0.500000 2.797244 0.000000 0 3.797244 0.000000 0
+ L3 0 0.625000 2.797244 -0.687500 0 3.797244 -0.687500 0
+ G3 51543 0.000000 0.093750 3.047244 -0.687500 0
+ G3 51543 0.000000 0.093750 3.547244 -0.687500 0
+ END$SEGS
+TURNOUT OO "Hornby Buffer Stop R.394"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 0.000000 0.000000
+ F4 10249759 0.000000 4 0
+ -0.500000 0.687500 0
+ 0.000000 0.687500 0
+ 0.000000 -0.687500 0
+ -0.500000 -0.687500 0
+ L3 0 0.031250 -0.500000 0.687500 0 0.000000 0.687500 0
+ L3 0 0.031250 0.000000 0.687500 0 0.000000 -0.687500 0
+ L3 0 0.031250 -0.500000 -0.687500 0 0.000000 -0.687500 0
+ L3 0 0.031250 -0.500000 0.687500 0 -0.500000 -0.687500 0
+ L3 0 0.125000 -0.750000 0.312500 0 0.000000 0.312500 0
+ L3 0 0.125000 -0.750000 -0.312500 0 0.000000 -0.312500 0
+ END$SEGS
+TURNOUT OO "Hornby Turntable Extensions Straight 82.5mm X918"
+ P "Normal" 2
+ E 0.000000 0.000000 270.000000
+ E 3.248031 0.000000 90.000000
+ L3 16777215 1.375000 0.500000 0.000000 0 2.748031 0.000000 0
+ S 0 0.000000 0.000000 0.000000 3.248031 0.000000
+ END$SEGS
+#Hornby Motorised Turntable 14Pos 22.5d 382mm OD 277mm rails 280mm pit 221mm to back of mtr housing
+TURNOUT HO "Hornby Motorised Turntable 14 Pos 22.5d R070" 512
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+# E 0.000000 5.452756 0.000000
+ E 2.086679 5.037690 22.500000
+ E 3.855681 3.855681 45.000000
+ E 5.037690 2.086679 67.500000
+ E 5.452756 0.000000 90.000000
+ E 5.037690 -2.086679 112.500000
+ E 3.855681 -3.855681 135.000000
+ E 2.086679 -5.037690 157.500000
+ E 0.000000 -5.452756 180.000000
+ E -2.086679 -5.037690 202.500000
+ E -3.855681 -3.855681 225.000000
+ E -5.037690 -2.086679 247.500000
+ E -5.452756 0.000000 270.000000
+ E -5.037690 2.086679 292.500000
+ E -3.855681 3.855681 315.000000
+# E -2.086679 5.037690 337.500000
+ S 16777215 0 0.000000 5.452756 0.000000 -5.452756
+ S 16777215 0 2.086679 5.037690 -2.086679 -5.037690
+ S 16777215 0 3.855681 3.855681 -3.855681 -3.855681
+ S 16777215 0 5.037690 2.086679 -5.037690 -2.086679
+ S 16777215 0 5.452756 0.000000 -5.452756 0.000000
+ S 16777215 0 5.037690 -2.086679 -5.037690 2.086679
+ S 16777215 0 3.855681 -3.855681 -3.855681 3.855681
+ S 16777215 0 2.086679 -5.037690 -2.086679 5.037690
+ A3 8424071 0.031250 7.519685 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 5.452756 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 3.952756 0.000000 0.000000 0 0.000000 360.000000
+ F4 10249759 0.000000 7 0
+ -1.272921 5.302096 0
+ -1.272921 8.700787 0
+ 1.272921 8.700787 0
+ 1.272921 5.302096 0
+ 0.636461 5.377426 0
+ 0.000000 5.452756 0
+ -0.636461 5.377426 0
+ A3 0 0.031250 5.452756 0.000000 0.000000 0 346.500000 27.000000
+ L3 0 0.031250 -1.272921 8.700787 0 1.272921 8.700787 0
+ L3 0 0.031250 -1.272921 8.700787 0 -1.272921 5.302096 0
+ L3 0 0.031250 1.272921 8.700787 0 1.272921 5.302096 0
+ L3 0 0.031250 -1.272921 7.001442 0 1.272921 7.001442 0
+END$SEGS
+
+
+SUBCONTENTS Hornby OO Scale - Platforms
+STRUCTURE OO "Hornby Platform Straight R.460"
+ X pier 0.000000 ""
+ F4 8424071 0.000000 4 0
+ 0.000000 -1.718898 0
+ -6.594488 -1.718898 0
+ -6.594488 -3.596063 0
+ 0.000000 -3.596063 0
+ L3 0 0.031250 0.000000 -1.318898 0 -6.594488 -1.318898 0
+ L3 0 0.031250 0.000000 -1.718898 0 -6.594488 -1.718898 0
+ L3 0 0.031250 0.000000 -1.318898 0 0.000000 -3.996063 0
+ L3 0 0.031250 -6.594488 -1.318898 0 -6.594488 -3.996063 0
+ L3 0 0.031250 0.000000 -3.596063 0 -6.594488 -3.596063 0
+ L3 0 0.031250 0.000000 -3.996063 0 -6.594488 -3.996063 0
+ END$SEGS
+STRUCTURE OO "Hornby Platform Straight Subway R.461"
+ X pier 0.000000 ""
+ F4 8424071 0.000000 4 0
+ 0.000000 -1.718898 0
+ -6.594488 -1.718898 0
+ -6.594488 -3.596063 0
+ 0.000000 -3.596063 0
+ L3 0 0.031250 0.000000 -1.318898 0 -6.594488 -1.318898 0
+ L3 0 0.031250 0.000000 -1.718898 0 -6.594488 -1.718898 0
+ L3 0 0.031250 0.000000 -1.318898 0 0.000000 -3.996063 0
+ L3 0 0.031250 -6.594488 -1.318898 0 -6.594488 -3.996063 0
+ L3 0 0.031250 0.000000 -3.596063 0 -6.594488 -3.596063 0
+ L3 0 0.031250 0.000000 -3.996063 0 -6.594488 -3.996063 0
+
+ L3 0 0.031250 -2.547244 -2.296588 0 -2.547244 -3.057742 0
+ L3 0 0.031250 -2.547244 -2.296588 0 -4.047244 -2.296588 0
+ L3 0 0.031250 -2.547244 -3.057742 0 -4.047244 -3.057742 0
+ L3 0 0.015625 -3.947244 -2.296588 0 -3.947244 -3.057742 0
+ L3 0 0.015625 -3.797244 -2.296588 0 -3.797244 -3.057742 0
+ L3 0 0.015625 -3.647244 -2.296588 0 -3.647244 -3.057742 0
+ L3 0 0.015625 -3.497244 -2.296588 0 -3.497244 -3.057742 0
+ L3 0 0.015625 -3.347244 -2.296588 0 -3.347244 -3.057742 0
+ L3 0 0.015625 -3.197244 -2.296588 0 -3.197244 -3.057742 0
+ L3 0 0.015625 -3.047244 -2.296588 0 -3.047244 -3.057742 0
+ END$SEGS
+STRUCTURE OO "Hornby Platform Curved 438(Large Radius) R.462"
+ X pier 0.000000 ""
+ F4 8424071 0.000000 18 0
+ 0.000000 3.596063 0
+ 1.022578 3.570960 0
+ 2.042693 3.495712 0
+ 3.057886 3.370500 0
+ 4.065713 3.195625 0
+ 5.063745 2.971510 0
+ 6.049578 2.698693 0
+ 7.020837 2.377832 0
+ 7.975183 2.009701 0
+ 7.256823 0.275426 0
+ 6.388440 0.610399 0
+ 5.504666 0.902358 0
+ 4.607631 1.150601 0
+ 3.699496 1.354529 0
+ 2.782449 1.513652 0
+ 1.858698 1.627586 0
+ 0.930470 1.696056 0
+ 0.000000 1.718898 0
+ L3 0 0.031250 0.000000 1.318898 0 0.000000 3.996063 0
+ L3 0 0.031250 7.103749 -0.094126 0 8.128256 2.379252 0
+ A3 0 0.031250 21.240157 0.000000 -17.244094 0 0.000000 22.500000
+ A3 0 0.031250 20.840157 0.000000 -17.244094 0 0.000000 22.500000
+ A3 0 0.031250 18.962992 0.000000 -17.244094 0 0.000000 22.500000
+ A3 0 0.031250 18.562992 0.000000 -17.244094 0 0.000000 22.500000
+ END$SEGS
+STRUCTURE OO "Hornby Platform Curved 371(Small Radius) R.463"
+ X pier 0.000000 ""
+ F4 8424071 0.000000 18 0
+ 0.000000 -1.718898 0
+ 0.632355 -1.734421 0
+ 1.263186 -1.780954 0
+ 1.890974 -1.858385 0
+ 2.514207 -1.966526 0
+ 3.131383 -2.105117 0
+ 3.741015 -2.273825 0
+ 4.341635 -2.472243 0
+ 4.931795 -2.699893 0
+ 4.213435 -4.434167 0
+ 3.709237 -4.239677 0
+ 3.196103 -4.070160 0
+ 2.675269 -3.926026 0
+ 2.147990 -3.807622 0
+ 1.615537 -3.715232 0
+ 1.079192 -3.649080 0
+ 0.540247 -3.609325 0
+ 0.000000 -3.596063 0
+ L3 0 0.031250 0.000000 -1.318898 0 0.000000 -3.996063 0
+ L3 0 0.031250 4.060362 -4.803719 0 5.084868 -2.330341 0
+ A3 0 0.031250 13.287401 0.000000 -14.606299 0 0.000000 22.500000
+ A3 0 0.031250 12.887401 0.000000 -14.606299 0 0.000000 22.500000
+ A3 0 0.031250 11.010236 0.000000 -14.606299 0 0.000000 22.500000
+ A3 0 0.031250 10.610236 0.000000 -14.606299 0 0.000000 22.500000
+ END$SEGS
+STRUCTURE OO "Hornby Platform Ramp R.464"
+ X pier 0.000000 ""
+ F4 8424071 0.000000 17 0
+ 0.000000 -1.718898 0
+ 0.561253 -1.733748 0
+ 1.120935 -1.778257 0
+ 1.677481 -1.852300 0
+ 2.229332 -1.955669 0
+ 2.774945 -2.088076 0
+ 3.312793 -2.249151 0
+ 3.841370 -2.438442 0
+ 4.359199 -2.655419 0
+ 3.841370 -2.876519 0
+ 3.312793 -3.065810 0
+ 2.774945 -3.226885 0
+ 2.229332 -3.359292 0
+ 1.677481 -3.462661 0
+ 1.120935 -3.536704 0
+ 0.561253 -3.581213 0
+ 0.000000 -3.596063 0
+ A3 0 0.031250 11.013583 0.000000 -12.332481 0 0.000000 27.000000
+ A3 0 0.031250 10.613583 0.000000 -12.332481 0 0.000000 24.250000
+ A3 0 0.031250 11.013583 0.000000 7.017519 0 153.000000 27.000000
+ A3 0 0.031250 10.613583 0.000000 7.017519 0 155.750000 24.250000
+ L3 0 0.031250 0.000000 -1.318898 0 0.000000 -3.996063 0
+ L3 0 0.031250 5.000000 -2.519307 0 5.000000 -2.795655 0
+ END$SEGS
diff --git a/app/lib/params/OO-HornbyPlayTrainsTrk.xtp b/app/lib/params/OO-HornbyPlayTrainsTrk.xtp
new file mode 100644
index 0000000..c169a71
--- /dev/null
+++ b/app/lib/params/OO-HornbyPlayTrainsTrk.xtp
@@ -0,0 +1,95 @@
+CONTENTS Hornby PlayTrains Track Components
+
+SUBCONTENTS Hornby PlayTrains Track - Straight Tracks
+TURNOUT OO "Hornby PlayTrains Track Straight 363mm PT001"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 14.291339 0.000000 90.000000
+ S 0 0 0.000000 0.000000 14.291339 0.000000
+ L3 11579568 0.020000 0.000000 0.944882 0 14.291339 0.944882 0
+ L3 11579568 0.010000 0.000000 0.629921 0 14.291339 0.629921 0
+ L3 11579568 0.010000 0.000000 -0.629921 0 14.291339 -0.629921 0
+ L3 11579568 0.020000 0.000000 -0.944882 0 14.291339 -0.944882 0
+ END$SEGS
+
+
+SUBCONTENTS Hornby PlayTrains Track - Curve Tracks
+TURNOUT OO "Hornby PlayTrains Track R1 Curved 402mm 45d PT002"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.191218 -4.635554 135.000000
+ C 0 0 15.826772 0.000000 -15.826772 0.000000 45.000000
+ A3 11579568 0.020000 16.771654 0.000000 -15.826772 0 0.000000 45.000000
+ A3 11579568 0.010000 16.456693 0.000000 -15.826772 0 0.000000 45.000000
+ A3 11579568 0.010000 15.196850 0.000000 -15.826772 0 0.000000 45.000000
+ A3 11579568 0.020000 14.881890 0.000000 -15.826772 0 0.000000 45.000000
+ END$SEGS
+TURNOUT OO "Hornby PlayTrains Track R2 Curved 474mm 45d PT003"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 13.195615 -5.465803 135.000000
+ C 0 0 18.661417 0.000000 -18.661417 0.000000 45.000000
+ A3 11579568 0.020000 19.606299 0.000000 -18.661417 0 0.000000 45.000000
+ A3 11579568 0.010000 19.291339 0.000000 -18.661417 0 0.000000 45.000000
+ A3 11579568 0.010000 18.031496 0.000000 -18.661417 0 0.000000 45.000000
+ A3 11579568 0.020000 17.716535 0.000000 -18.661417 0 0.000000 45.000000
+ END$SEGS
+TURNOUT OO "Hornby PlayTrains Track R2 Curved 474mm 22.5d PT004"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.141415 -1.420516 112.500000
+ C 0 0.000000 18.661417 0.000000 -18.661417 0.000000 22.500000
+ A3 11579568 0.020000 19.606299 0.000000 -18.661417 0 0.000000 22.500000
+ A3 11579568 0.010000 19.291339 0.000000 -18.661417 0 0.000000 22.500000
+ A3 11579568 0.010000 18.031496 0.000000 -18.661417 0 0.000000 22.500000
+ A3 11579568 0.020000 17.716535 0.000000 -18.661417 0 0.000000 22.500000
+ END$SEGS
+
+
+SUBCONTENTS Hornby PlayTrains Track - Track Turnouts
+TURNOUT OO "Hornby PlayTrains Track Left Hand Turnout PT005"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 14.291339 0.000000 90.000000
+ E 7.141415 1.420516 67.500000
+ S 0 0 0.000000 0.000000 14.291339 0.000000
+ C 0 0 18.661417 0.000000 18.661417 157.500000 22.500000
+ A3 11579568 0.010000 18.031496 0.000000 18.661417 0 157.500000 22.500000
+ A3 11579568 0.020000 17.716535 0.000000 18.661417 0 157.500000 22.500000
+ L3 11579568 0.020000 8.555577 0.944882 0 14.291339 0.944882 0
+ L3 11579568 0.010000 7.732974 0.629921 0 14.291339 0.629921 0
+ L3 11579568 0.010000 0.000000 -0.629921 0 14.291339 -0.629921 0
+ L3 11579568 0.020000 0.000000 -0.944882 0 14.291339 -0.944882 0
+ END$SEGS
+TURNOUT OO "Hornby PlayTrains Track Right Hand Turnout PT006"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 14.291339 0.000000 90.000000
+ E 7.141415 -1.420516 112.500000
+ S 0 0 0.000000 0.000000 14.291339 0.000000
+ C 0 0 18.661417 0.000000 -18.661417 0.000000 22.500000
+ A3 11579568 0.010000 18.031496 0.000000 -18.661417 0 0.000000 22.500000
+ A3 11579568 0.020000 17.716535 0.000000 -18.661417 0 0.000000 22.500000
+ L3 11579568 0.020000 0.000000 0.944882 0 14.291339 0.944882 0
+ L3 11579568 0.010000 0.000000 0.629921 0 14.291339 0.629921 0
+ L3 11579568 0.010000 7.732974 -0.629921 0 14.291339 -0.629921 0
+ L3 11579568 0.020000 8.555577 -0.944882 0 14.291339 -0.944882 0
+ END$SEGS
+
+
+SUBCONTENTS Hornby PlayTrains Track - Misc Track
+TURNOUT OO "Hornby PlayTrains Track Buffer Stop PT007"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 1.889764 0.000000
+ L3 11579568 0.020000 0.000000 0.944882 0 1.889764 0.944882 0
+ L3 11579568 0.020000 0.000000 0.629921 0 1.889764 0.629921 0
+ L3 11579568 0.020000 0.000000 -0.629921 0 1.889764 -0.629921 0
+ L3 11579568 0.020000 0.000000 -0.944882 0 1.889764 -0.944882 0
+ L3 11579568 0.020000 1.889764 0.944882 0 1.889764 -0.944882 0
+ L3 12566463 0.100000 0.944882 0.629921 0 0.944882 -0.629921 0
+ L3 12566463 0.100000 0.944882 0.550000 0 1.889764 0.550000 0
+ L3 12566463 0.100000 0.944882 -0.550000 0 1.889764 -0.550000 0
+ END$SEGS \ No newline at end of file
diff --git a/app/lib/params/OO-Peco-Code75Bullhead.xtp b/app/lib/params/OO-Peco-Code75Bullhead.xtp
new file mode 100644
index 0000000..9092395
--- /dev/null
+++ b/app/lib/params/OO-Peco-Code75Bullhead.xtp
@@ -0,0 +1,90 @@
+CONTENTS Peco OO Scale Code 75 Bulkhead Track
+SUBCONTENTS Peco OO Scale Code 75 Bullhead Turnouts
+TURNOUT OO "Peco Large Radius Turnout Righthand SL-U1188"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 10.196850 0.000000 90.000000
+ E 10.108962 -0.968554 102.000000
+ S 0 0.000000 0.000000 0.000000 1.543507 0.000000
+ S 0 0.000000 1.543507 0.000000 10.196850 0.000000
+ C 0 0.000000 38.141472 1.543355 -38.141472 0.000000 12.000000
+ S 0 0.000000 9.473658 -0.833502 10.108962 -0.968554
+END$SEGS
+TURNOUT OO "Peco Large Radius Turnout Lefthand SL-U1189"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 10.196850 0.000000 90.000000
+ E 10.108962 0.968554 78.000000
+ S 0 0.000000 0.000000 0.000000 1.543507 0.000000
+ S 0 0.000000 1.543507 0.000000 10.196850 0.000000
+ C 0 0.000000 -38.141472 1.543558 38.141472 168.000000 12.000000
+ S 0 0.000000 9.473658 0.833502 10.108962 0.968554
+END$SEGS
+TURNOUT OO "Peco Medium Radius Turnout Righthand SL-U1195"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.620000 0.000000 90.000000
+ E 8.510000 -1.023900 102.000000
+ S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
+ S 0 0.000000 0.649600 -0.000000 8.620000 0.000000
+ C 0 0.000000 28.955343 0.649600 -28.955343 0.000000 12.000000
+ S 0 0.000000 6.669754 -0.632744 8.510000 -1.023900
+END$SEGS
+TURNOUT OO "Peco Medium Radius Turnout Lefthand SL-U1196"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.620000 0.000000 90.000000
+ E 8.510000 1.023900 78.000000
+ S 0 0.000000 0.000000 0.000000 0.649600 0.000000
+ S 0 0.000000 0.649600 0.000000 8.620000 0.000000
+ C 0 0.000000 -28.955343 0.649600 28.955343 168.000000 12.000000
+ S 0 0.000000 6.669754 0.632744 8.510000 1.023900
+END$SEGS
+
+SUBCONTENTS Peco OO Scale Code 75 Bullhead Slip Turnouts
+TURNOUT OO "Peco Single Slip SL-U1180"
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 1 5 4
+ E 0.000000 0.000000 270.000000
+ E 9.803150 0.000000 90.000000
+ E 0.107110 1.019087 282.000000
+ E 9.696040 -1.019087 102.000000
+ S 0 0.000000 0.000000 0.000000 1.297369 0.000000
+ S 0 0.000000 1.297369 0.000000 9.803150 0.000000
+ S 0 0.000000 0.107110 1.019087 8.427277 -0.749392
+ S 0 0.000000 8.427277 -0.749392 9.696040 -1.019087
+ C 0 0.000000 34.292562 1.297233 -34.292562 0.000000 12.000000
+END$SEGS
+TURNOUT OO "Peco Double Slip SL-U1190" 512
+ P "P1" 1 2 3
+ P "P2" 4 5 6
+ P "P3" 1 7 6
+ P "P4" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 9.803150 0.000000 90.000000
+ E 0.107110 1.019087 282.000000
+ E 9.696040 -1.019087 102.000000
+ S 0 0.000000 0.000000 0.000000 1.297369 0.000000
+ S 0 0.000000 1.297369 0.000000 8.505780 0.000000
+ S 0 0.000000 8.505780 0.000000 9.803150 0.000000
+ S 0 0.000000 0.107110 1.019087 1.375873 0.749392
+ S 0 0.000000 1.375873 0.749392 8.427277 -0.749392
+ S 0 0.000000 8.427277 -0.749392 9.696040 -1.019087
+ C 0 0.000000 34.292562 1.297233 -34.292562 0.000000 12.000000
+ C 0 0.000000 -34.292562 8.505825 34.292552 180.000000 12.000000
+END$SEGS
+
+SUBCONTENTS Peco OO Scale Code 75 Bullhead Crossings
+TURNOUT OO "Peco Long Crossing SL-U1194"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 9.803150 0.000000 90.000000
+ E 0.107110 1.019087 282.000000
+ E 9.696040 -1.019087 102.000000
+ S 0 0.000000 0.000000 0.000000 9.803150 0.000000
+ S 0 0.000000 0.107110 1.019087 9.696040 -1.019087
+END$SEGS
diff --git a/app/lib/params/S_ACG_All Aboard Panels.xtp b/app/lib/params/S_ACG_All Aboard Panels.xtp
new file mode 100644
index 0000000..abd44a3
--- /dev/null
+++ b/app/lib/params/S_ACG_All Aboard Panels.xtp
@@ -0,0 +1,199 @@
+CONTENTS A.C. Gilbert / S-Scale All Aboard Panels
+TURNOUT S "A.C. Gilbert/All Aboard Curve Track Panel 26101"
+ P "Normal" 12
+ E 0.000000 0.000000 270.000000
+ E 15.000000 -15.000000 180.000000
+#BaseFill
+ F4 32768 0.000000 4 0
+ 0.000000 2.000000 0
+ 17.000000 2.000000 0
+ 17.000000 -15.000000 0
+ 0.000000 -15.000000 0
+#Road
+ F4 12500670 0.000000 8 0
+ 0.000000 -4.562500 0
+ 6.562500 -4.562500 0
+ 6.562500 2.000000 0
+ 10.437500 2.000000 0
+ 10.437500 -15.000000 0
+ 6.562500 -15.000000 0
+ 6.562500 -8.437500 0
+ 0.000000 -8.437500 0
+ L3 0 0.050000 10.437500 2.000000 0 10.437500 -15.000000 0
+ L3 0 0.050000 6.562500 2.000000 0 6.562500 -4.562500 0
+ L3 0 0.050000 6.562500 -8.437500 0 6.562500 -15.000000 0
+ L3 0 0.050000 0.000000 -4.562500 0 6.562500 -4.562500 0
+ L3 0 0.050000 0.000000 -8.437500 0 6.562500 -8.437500 0
+#BaseOutline
+ L3 0 0.050000 0.000000 2.000000 0 17.000000 2.000000 0
+ L3 0 0.050000 0.000000 2.000000 0 0.000000 -15.000000 0
+ L3 0 0.050000 17.000000 2.000000 0 17.000000 -15.000000 0
+ L3 0 0.050000 0.000000 -15.000000 0 17.000000 -15.000000 0
+ C 0 0.000000 15.000000 0.000000 -15.000000 0.000000 90.000000
+ END$SEGS
+
+TURNOUT S "A.C. Gilbert/All Aboard Straight Track Panel 26121"
+ P "Normal" 12
+ E 0.000000 0.000000 270.000000
+ E 17.000000 0.000000 90.000000
+#BaseFill
+ F4 32768 0.000000 4 0
+ 0.000000 2.000000 0
+ 17.000000 2.000000 0
+ 17.000000 -15.000000 0
+ 0.000000 -15.000000 0
+#Road
+ F4 12500670 0.000000 8 0
+ 0.000000 -4.562500 0
+ 6.562500 -4.562500 0
+ 6.562500 2.000000 0
+ 10.437500 2.000000 0
+ 10.437500 -15.000000 0
+ 6.562500 -15.000000 0
+ 6.562500 -8.437500 0
+ 0.000000 -8.437500 0
+ L3 0 0.050000 10.437500 2.000000 0 10.437500 -15.000000 0
+ L3 0 0.050000 6.562500 2.000000 0 6.562500 -4.562500 0
+ L3 0 0.050000 6.562500 -8.437500 0 6.562500 -15.000000 0
+ L3 0 0.050000 0.000000 -4.562500 0 6.562500 -4.562500 0
+ L3 0 0.050000 0.000000 -8.437500 0 6.562500 -8.437500 0
+#BaseOutline
+ L3 0 0.050000 0.000000 2.000000 0 17.000000 2.000000 0
+ L3 0 0.050000 0.000000 2.000000 0 0.000000 -15.000000 0
+ L3 0 0.050000 17.000000 2.000000 0 17.000000 -15.000000 0
+ L3 0 0.050000 0.000000 -15.000000 0 17.000000 -15.000000 0
+ S 0 0.000000 0.000000 0.000000 17.000000 0.000000
+ END$SEGS
+
+TURNOUT S "A.C. Gilbert/All Aboard Straight Whistle Panel 26122"
+ P "Normal" 12
+ E 0.000000 0.000000 270.000000
+ E 17.000000 0.000000 90.000000
+#BaseFill
+ F4 32768 0.000000 4 0
+ 0.000000 2.000000 0
+ 17.000000 2.000000 0
+ 17.000000 -15.000000 0
+ 0.000000 -15.000000 0
+#Road
+ F4 12500670 0.000000 8 0
+ 0.000000 -4.562500 0
+ 6.562500 -4.562500 0
+ 6.562500 2.000000 0
+ 10.437500 2.000000 0
+ 10.437500 -15.000000 0
+ 6.562500 -15.000000 0
+ 6.562500 -8.437500 0
+ 0.000000 -8.437500 0
+ L3 0 0.050000 10.437500 2.000000 0 10.437500 -15.000000 0
+ L3 0 0.050000 6.562500 2.000000 0 6.562500 -4.562500 0
+ L3 0 0.050000 6.562500 -8.437500 0 6.562500 -15.000000 0
+ L3 0 0.050000 0.000000 -4.562500 0 6.562500 -4.562500 0
+ L3 0 0.050000 0.000000 -8.437500 0 6.562500 -8.437500 0
+#BaseOutline
+ L3 0 0.050000 0.000000 2.000000 0 17.000000 2.000000 0
+ L3 0 0.050000 0.000000 2.000000 0 0.000000 -15.000000 0
+ L3 0 0.050000 17.000000 2.000000 0 17.000000 -15.000000 0
+ L3 0 0.050000 0.000000 -15.000000 0 17.000000 -15.000000 0
+ S 0 0.000000 0.000000 0.000000 17.000000 0.000000
+ END$SEGS
+
+TURNOUT S "A.C. Gilbert/All Aboard Right Switch Panel 26141"
+ P "Normal" 12
+ P "Route" 13
+ E 0.000000 0.000000 270.000000
+ E 17.000000 0.000000 90.000000
+ E 15.000000 -15.000000 180.000000
+#BaseFill
+ F4 32768 0.000000 4 0
+ 0.000000 2.000000 0
+ 17.000000 2.000000 0
+ 17.000000 -15.000000 0
+ 0.000000 -15.000000 0
+#Road
+ F4 12500670 0.000000 8 0
+ 0.000000 -4.562500 0
+ 17.000000 -4.562500 0
+ 17.000000 -8.437500 0
+ 10.437500 -8.437500 0
+ 10.437500 -15.000000 0
+ 6.562500 -15.000000 0
+ 6.562500 -8.437500 0
+ 0.000000 -8.437500 0
+ L3 0 0.050000 0.000000 -4.562500 0 17.000000 -4.562500 0
+ L3 0 0.050000 0.000000 -8.437500 0 6.562500 -8.437500 0
+ L3 0 0.050000 10.437500 -8.437500 0 17.000000 -8.437500 0
+ L3 0 0.050000 6.562500 -8.437500 0 6.562500 -15.000000 0
+ L3 0 0.050000 10.437500 -8.437500 0 10.437500 -15.000000 0
+#BaseOutline
+ L3 0 0.050000 0.000000 2.000000 0 17.000000 2.000000 0
+ L3 0 0.050000 0.000000 2.000000 0 0.000000 -15.000000 0
+ L3 0 0.050000 17.000000 2.000000 0 17.000000 -15.000000 0
+ L3 0 0.050000 0.000000 -15.000000 0 17.000000 -15.000000 0
+ S 0 0.000000 0.000000 0.000000 17.000000 0.000000
+ C 0 0.000000 15.000000 0.000000 -15.000000 0.000000 90.000000
+ END$SEGS
+
+TURNOUT S "A.C. Gilbert/All Aboard Left Switch Panel 26142"
+ P "Normal" 12
+ P "Route" 13
+ E 0.000000 0.000000 270.000000
+ E 17.000000 0.000000 90.000000
+ E 2.000000 -15.000000 180.000000
+#BaseFill
+ F4 32768 0.000000 4 0
+ 0.000000 2.000000 0
+ 17.000000 2.000000 0
+ 17.000000 -15.000000 0
+ 0.000000 -15.000000 0
+#Road
+ F4 12500670 0.000000 8 0
+ 0.000000 -4.562500 0
+ 17.000000 -4.562500 0
+ 17.000000 -8.437500 0
+ 10.437500 -8.437500 0
+ 10.437500 -15.000000 0
+ 6.562500 -15.000000 0
+ 6.562500 -8.437500 0
+ 0.000000 -8.437500 0
+ L3 0 0.050000 0.000000 -4.562500 0 17.000000 -4.562500 0
+ L3 0 0.050000 0.000000 -8.437500 0 6.562500 -8.437500 0
+ L3 0 0.050000 10.437500 -8.437500 0 17.000000 -8.437500 0
+ L3 0 0.050000 6.562500 -8.437500 0 6.562500 -15.000000 0
+ L3 0 0.050000 10.437500 -8.437500 0 10.437500 -15.000000 0
+#BaseOutline
+ L3 0 0.050000 0.000000 2.000000 0 17.000000 2.000000 0
+ L3 0 0.050000 0.000000 2.000000 0 0.000000 -15.000000 0
+ L3 0 0.050000 17.000000 2.000000 0 17.000000 -15.000000 0
+ L3 0 0.050000 0.000000 -15.000000 0 17.000000 -15.000000 0
+ S 0 0.000000 0.000000 0.000000 17.000000 0.000000
+ C 0 0.000000 15.000000 17.000000 -15.000000 270.000000 90.000000
+ END$SEGS
+
+TURNOUT S "A.C. Gilbert/All Aboard Cross-Over Panel 26151"
+ P "Normal" 12 0 13
+ E 0.000000 0.000000 270.000000
+ E 17.000000 0.000000 90.000000
+ E 2.000000 2.000000 0.000000
+ E 2.000000 -15.000000 180.000000
+#BaseFill
+ F4 32768 0.000000 4 0
+ 0.000000 2.000000 0
+ 17.000000 2.000000 0
+ 17.000000 -15.000000 0
+ 0.000000 -15.000000 0
+#Road
+ A3 12500670 3.875000 8.500000 0.000000 2.000000 0 90.000000 90.000000
+ A3 0 0.050000 6.562500 0.000000 2.000000 0 90.000000 90.000000
+ A3 0 0.050000 10.437500 0.000000 2.000000 0 90.000000 90.000000
+ A3 12500670 3.875000 8.500000 17.000000 -15.000000 0 270.000000 90.000000
+ A3 0 0.050000 6.562500 17.000000 -15.000000 0 270.000000 90.000000
+ A3 0 0.050000 10.437500 17.000000 -15.000000 0 270.000000 90.000000
+#BaseOutline
+ L3 0 0.050000 0.000000 2.000000 0 17.000000 2.000000 0
+ L3 0 0.050000 0.000000 2.000000 0 0.000000 -15.000000 0
+ L3 0 0.050000 17.000000 2.000000 0 17.000000 -15.000000 0
+ L3 0 0.050000 0.000000 -15.000000 0 17.000000 -15.000000 0
+ S 0 0.000000 0.000000 0.000000 17.000000 0.000000
+ S 0 0.000000 2.000000 2.000000 2.000000 -15.000000
+ END$SEGS
diff --git a/app/lib/params/S_ACG_American Flyer Track.xtp b/app/lib/params/S_ACG_American Flyer Track.xtp
new file mode 100644
index 0000000..215acde
--- /dev/null
+++ b/app/lib/params/S_ACG_American Flyer Track.xtp
@@ -0,0 +1,150 @@
+CONTENTS A.C. Gilbert / American Flyer S-Scale Std Gauge Track
+SUBCONTENTS A.C. Gilbert / American Flyer S-Scale - Straight Tracks
+TURNOUT S "A.C. Gilbert / American Flyer Full Straight 10"" 700"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 10.000000 0.000000
+ END$SEGS
+TURNOUT S "A.C. Gilbert / American Flyer Half Straight 5"" 701"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 5.000000 0.000000
+ END$SEGS
+
+SUBCONTENTS A.C. Gilbert / American Flyer S-Scale - Curve Tracks
+TURNOUT S "A.C. Gilbert / American Flyer Full Curve 30 Degree 20"" Radius 702"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.659258 -2.588191 120.000000
+ C 0 0.000000 19.318517 0.000000 -19.318517 0.000000 30.000000
+ END$SEGS
+TURNOUT S "A.C. Gilbert / American Flyer Half Curve 15 Deqree 20"" Radius 703"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.000000 -0.658263 105.000000
+ C 0 0.000000 19.318517 0.000000 -19.318517 0.000000 15.000000
+ END$SEGS
+
+SUBCONTENTS A.C. Gilbert / American Flyer S-Scale - Switches
+TURNOUT S "A.C. Gilbert / American Flyer Left Switch 20"" Radius 30 Degree 720A/722A/668/678"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ E 9.659258 2.588191 60.000000
+ S 0 0.000000 0.000000 0.000000 10.000000 0.000000
+ C 0 0.000000 19.318517 0.000000 19.318517 150.000000 30.000000
+ L3 0 0.030000 0.000000 -0.875000 0 10.000000 -0.875000 0
+ L3 0 0.030000 3.000000 3.125000 0 9.375000 3.125000 0
+ L3 0 0.030000 3.000000 3.125000 0 3.000000 3.625000 0
+ L3 0 0.030000 0.000000 3.625000 0 3.000000 3.625000 0
+ L3 0 0.030000 0.000000 0.875000 0 0.000000 3.625000 0
+ L3 0 0.030000 10.000000 0.875000 0 10.000000 1.875000 0
+ L3 0 0.030000 0.250000 3.375000 0 2.750000 3.375000 0
+ L3 0 0.030000 2.750000 1.125000 0 2.750000 3.375000 0
+ L3 0 0.030000 0.250000 1.125000 0 0.250000 3.375000 0
+ L3 0 0.030000 0.250000 1.125000 0 2.750000 1.125000 0
+ END$SEGS
+TURNOUT S "A.C. Gilbert / American Flyer Right Switch 20"" Radius 30 Degree 720A/722A/669/679"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ E 9.659258 -2.588191 120.000000
+ S 0 0.000000 0.000000 0.000000 10.000000 0.000000
+ C 0 0.000000 19.318517 0.000000 -19.318517 0.000000 30.000000
+ L3 0 0.030000 0.000000 0.875000 0 10.000000 0.875000 0
+ L3 0 0.030000 3.000000 -3.125000 0 9.375000 -3.125000 0
+ L3 0 0.030000 3.000000 -3.125000 0 3.000000 -3.625000 0
+ L3 0 0.030000 0.000000 -3.625000 0 3.000000 -3.625000 0
+ L3 0 0.030000 0.000000 -0.875000 0 0.000000 -3.625000 0
+ L3 0 0.030000 10.000000 -0.875000 0 10.000000 -1.875000 0
+ L3 0 0.030000 0.250000 -3.375000 0 2.750000 -3.375000 0
+ L3 0 0.030000 2.750000 -1.125000 0 2.750000 -3.375000 0
+ L3 0 0.030000 0.250000 -1.125000 0 0.250000 -3.375000 0
+ L3 0 0.030000 0.250000 -1.125000 0 2.750000 -1.125000 0
+ END$SEGS
+
+SUBCONTENTS A.C. Gilbert / American Flyer S-Scale - Crossing Tracks
+TURNOUT S "A.C. Gilbert / American Flyer 90 Degree Crossing 725"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ E 5.000000 5.000000 0.000000
+ E 5.000000 -5.000000 180.000000
+ S 0 0.000000 0.000000 0.000000 10.000000 0.000000
+ S 0 0.000000 5.000000 5.000000 5.000000 -5.000000
+ END$SEGS
+
+SUBCONTENTS A.C. Gilbert / American Flyer S-Scale - Misc Tracks
+TURNOUT S "A.C. Gilbert / American Flyer Electric Uncoupler 706"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 10.000000 0.000000
+ L3 0 0.030000 3.500000 0.875000 0 6.500000 0.875000 0
+ L3 0 0.030000 3.500000 0.875000 0 3.500000 -3.125000 0
+ L3 0 0.030000 6.500000 0.875000 0 6.500000 -3.125000 0
+ L3 0 0.030000 3.500000 -3.125000 0 6.500000 -3.125000 0
+ L3 0 0.030000 3.750000 -1.000000 0 6.250000 -1.000000 0
+ L3 0 0.030000 3.750000 -1.000000 0 3.750000 -2.750000 0
+ L3 0 0.030000 6.250000 -1.000000 0 6.250000 -2.750000 0
+ L3 0 0.030000 3.750000 -2.750000 0 6.250000 -2.750000 0
+ END$SEGS
+TURNOUT S "A.C. Gilbert / American Flyer Bumper 730"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 10.000000 0.000000
+ F4 0 0.000000 4 0
+ 8.000000 0.625000 0
+ 10.000000 0.625000 0
+ 10.000000 -0.625000 0
+ 8.000000 -0.625000 0
+ END$SEGS
+TURNOUT S "A.C. Gilbert / American Flyer Rerailer 728/748"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 10.000000 0.000000
+ Y4 0 0.030000 4 0
+ 0.000000 1.500000 0
+ 10.000000 1.500000 0
+ 10.000000 -1.500000 0
+ 0.000000 -1.500000 0
+ F4 8424071 0.000000 4 0
+ 0.000000 1.500000 0
+ 10.000000 1.500000 0
+ 9.000000 0.500000 0
+ 1.000000 0.500000 0
+ Y4 0 0.030000 4 0
+ 0.000000 1.500000 0
+ 10.000000 1.500000 0
+ 9.000000 0.500000 0
+ 1.000000 0.500000 0
+ F4 8424071 0.000000 4 0
+ 0.000000 -1.500000 0
+ 10.000000 -1.500000 0
+ 9.000000 -0.500000 0
+ 1.000000 -0.500000 0
+ Y4 0 0.030000 4 0
+ 0.000000 -1.500000 0
+ 10.000000 -1.500000 0
+ 9.000000 -0.500000 0
+ 1.000000 -0.500000 0
+ F4 8424071 0.000000 6 0
+ 0.000000 0.000000 0
+ 1.000000 0.380000 0
+ 9.000000 0.380000 0
+ 10.000000 0.000000 0
+ 9.000000 -0.380000 0
+ 1.000000 -0.380000 0
+ Y4 0 0.030000 6 0
+ 0.000000 0.000000 0
+ 1.000000 0.380000 0
+ 9.000000 0.380000 0
+ 10.000000 0.000000 0
+ 9.000000 -0.380000 0
+ 1.000000 -0.380000 0
+ END$SEGS
diff --git a/app/lib/params/S_ACG_Pike-Master Track.xtp b/app/lib/params/S_ACG_Pike-Master Track.xtp
new file mode 100644
index 0000000..71cfcb5
--- /dev/null
+++ b/app/lib/params/S_ACG_Pike-Master Track.xtp
@@ -0,0 +1,88 @@
+CONTENTS A.C. Gilbert / S-Scale Pike-Master Track
+SUBCONTENTS A.C. Gilbert / Pike-Master S-Scale - Straight Tracks
+TURNOUT S "A.C. Gilbert/Pike-Master Straight 10"" 26300"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.750000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 10.750000 0.000000
+ END$SEGS
+TURNOUT S "A.C. Gilbert/Pike-Master Straight 4.25"" 26301"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.250000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.250000 0.000000
+ END$SEGS
+#Part of All Aboard Panel Pike-Master Tracks
+TURNOUT S "A.C. Gilbert/Pike-Master Straight 6.25"" 263xx"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.250000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 6.250000 0.000000
+ END$SEGS
+
+SUBCONTENTS A.C. Gilbert / Pike-Master S-Scale - Curve Tracks
+TURNOUT S "A.C. Gilbert/Pike-Master 12"" Curve 26310"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.606602 -4.393398 135.000000
+ C 0 0.000000 15.000000 0.000000 -15.000000 0.000000 45.000000
+ END$SEGS
+
+SUBCONTENTS A.C. Gilbert / Pike-Master S-Scale - Switches
+TURNOUT S "A.C. Gilbert/Pike-Master Left Switch 26321"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 10.750000 0.000000 90.000000
+ E 10.606602 4.393398 45.000000
+ S 0 0.000000 0.000000 0.000000 10.750000 0.000000
+ C 0 0.000000 15.000000 0.000000 15.000000 135.000000 45.000000
+ L3 0 0.030000 1.500000 -0.750000 0 5.750000 -0.750000 0
+ L3 0 0.030000 1.500000 -0.750000 0 1.500000 -1.750000 0
+ L3 0 0.030000 5.750000 -0.750000 0 5.750000 -1.750000 0
+ L3 0 0.030000 1.500000 -1.750000 0 5.750000 -1.750000 0
+ L3 0 0.030000 1.750000 -1.000000 0 5.500000 -1.000000 0
+ L3 0 0.030000 1.750000 -1.000000 0 1.750000 -1.500000 0
+ L3 0 0.030000 5.500000 -1.000000 0 5.500000 -1.500000 0
+ L3 0 0.030000 1.750000 -1.500000 0 5.500000 -1.500000 0
+ END$SEGS
+TURNOUT S "A.C. Gilbert/Pike-Master Right Switch 26320"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 10.750000 0.000000 90.000000
+ E 10.606602 -4.393398 135.000000
+ S 0 0.000000 0.000000 0.000000 10.750000 0.000000
+ C 0 0.000000 15.000000 0.000000 -15.000000 0.000000 45.000000
+ L3 0 0.030000 1.500000 0.750000 0 5.750000 0.750000 0
+ L3 0 0.030000 1.500000 0.750000 0 1.500000 1.750000 0
+ L3 0 0.030000 5.750000 0.750000 0 5.750000 1.750000 0
+ L3 0 0.030000 1.500000 1.750000 0 5.750000 1.750000 0
+ L3 0 0.030000 1.750000 1.000000 0 5.500000 1.000000 0
+ L3 0 0.030000 1.750000 1.000000 0 1.750000 1.500000 0
+ L3 0 0.030000 5.500000 1.000000 0 5.500000 1.500000 0
+ L3 0 0.030000 1.750000 1.500000 0 5.500000 1.500000 0
+ END$SEGS
+
+SUBCONTENTS A.C. Gilbert / American Pike-Master - Crossing Tracks
+TURNOUT S "A.C. Gilbert/Pike-Master Crossing 26322"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 8.500000 0.000000 90.000000
+ E 4.250000 4.250000 0.000000
+ E 4.250000 -4.250000 180.000000
+ S 0 0.000000 0.000000 0.000000 8.500000 0.000000
+ S 0 0.000000 4.250000 4.250000 4.250000 -4.250000
+ END$SEGS
+
+SUBCONTENTS A.C. Gilbert / Pike-Master S-Scale - Misc Tracks
+TURNOUT S "A.C. Gilbert/Pike-Master Terminal/Uncoupler 26302"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.750000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 10.750000 0.000000
+ L3 0 0.030000 3.250000 0.750000 0 5.250000 0.750000 0
+ L3 0 0.030000 3.250000 0.750000 0 3.250000 -2.000000 0
+ L3 0 0.030000 5.250000 0.750000 0 5.250000 -2.000000 0
+ L3 0 0.030000 3.250000 -2.000000 0 5.250000 -2.000000 0
+ END$SEGS
diff --git a/app/lib/params/Sn3-Fast Tracks.xtp b/app/lib/params/Sn3-Fast Tracks.xtp
new file mode 100644
index 0000000..c1b652e
--- /dev/null
+++ b/app/lib/params/Sn3-Fast Tracks.xtp
@@ -0,0 +1,260 @@
+CONTENTS Fast Tracks Sn3
+SUBCONTENTS Fast Tracks Sn3 - Turnouts
+TURNOUT Sn3 "Fast Tracks #4 Left Hand Turnout SN3-T-4L"
+ U "Regular Turnout" "" "Fast Tracks" "#4 Left Hand Turnout" "SN3-T-4L" "#4 Right Hand Turnout" "SN3-T-4R" 8.545931 14.250000 1.147559 8.545931 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.545931 0.000000 90.000000
+ E 8.545931 1.147559 75.750000
+ S 0 0.000000 0.000000 0.000000 0.563000 0.000000
+ S 0 0.000000 0.563000 0.000000 8.545931 0.000000
+ C 0 0.000000 -27.715317 0.563000 27.715317 165.750000 14.250000
+ S 0 0.000000 7.385217 0.852775 8.545931 1.147559
+ END$SEGS
+TURNOUT Sn3 "Fast Tracks #4 Right Hand Turnout SN3-T-4R"
+ U "Regular Turnout" "" "Fast Tracks" "#4 Left Hand Turnout" "SN3-T-4L" "#4 Right Hand Turnout" "SN3-T-4R" 8.545931 14.250000 1.147559 8.545931 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 8.545931 0.000000 90.000000
+ E 8.545931 -1.147559 104.250000
+ S 0 0.000000 0.000000 0.000000 0.563000 -0.000000
+ S 0 0.000000 0.563000 -0.000000 8.545931 0.000000
+ C 0 0.000000 27.715317 0.563000 -27.715317 0.000000 14.250000
+ S 0 0.000000 7.385217 -0.852775 8.545931 -1.147559
+ END$SEGS
+TURNOUT Sn3 "Fast Tracks #5 Left Hand Turnout SN3-T-5L"
+ U "Regular Turnout" "" "Fast Tracks" "#5 Left Hand Turnout" "SN3-T-5L" "#5 Right Hand Turnout" "SN3-T-5R" 9.345352 11.421186 1.113194 9.345352 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 9.345352 0.000000 90.000000
+ E 9.345352 1.113194 78.578814
+ S 0 0.000000 0.000000 0.000000 0.563000 0.000000
+ S 0 0.000000 0.563000 0.000000 9.345352 0.000000
+ C 0 0.000000 -32.720416 0.563000 32.720416 168.578814 11.421186
+ S 0 0.000000 7.042290 0.647929 9.345352 1.113194
+ END$SEGS
+TURNOUT Sn3 "Fast Tracks #5 Right Hand Turnout SN3-T-5R"
+ U "Regular Turnout" "" "Fast Tracks" "#5 Left Hand Turnout" "SN3-T-5L" "#5 Right Hand Turnout" "SN3-T-5R" 9.345352 11.421186 1.113194 9.345352 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 9.345352 0.000000 90.000000
+ E 9.345352 -1.113194 101.421186
+ S 0 0.000000 0.000000 0.000000 0.563000 -0.000000
+ S 0 0.000000 0.563000 -0.000000 9.345352 0.000000
+ C 0 0.000000 32.720416 0.563000 -32.720416 0.000000 11.421186
+ S 0 0.000000 7.042290 -0.647929 9.345352 -1.113194
+ END$SEGS
+TURNOUT Sn3 "Fast Tracks #6 Left Hand Turnout SN3-T-6L"
+ U "Regular Turnout" "" "Fast Tracks" "#6 Left Hand Turnout" "SN3-T-6L" "#6 Right Hand Turnout" "SN3-T-6R" 9.642778 9.527283 0.938160 9.642778 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 9.642778 0.000000 90.000000
+ E 9.642778 0.938160 80.472717
+ S 0 0.000000 0.000000 0.000000 0.563000 0.000000
+ S 0 0.000000 0.563000 0.000000 9.642778 0.000000
+ C 0 0.000000 -41.878895 0.563000 41.878895 170.472717 9.527283
+ S 0 0.000000 7.494679 0.577640 9.642778 0.938160
+ END$SEGS
+TURNOUT Sn3 "Fast Tracks #6 Right Hand Turnout SN3-T-6R"
+ U "Regular Turnout" "" "Fast Tracks" "#6 Left Hand Turnout" "SN3-T-6L" "#6 Right Hand Turnout" "SN3-T-6R" 9.642778 9.527283 0.938160 9.642778 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 9.642778 0.000000 90.000000
+ E 9.642778 -0.938160 99.527283
+ S 0 0.000000 0.000000 0.000000 0.563000 -0.000000
+ S 0 0.000000 0.563000 -0.000000 9.642778 0.000000
+ C 0 0.000000 41.878895 0.563000 -41.878895 0.000000 9.527283
+ S 0 0.000000 7.494679 -0.577640 9.642778 -0.938160
+ END$SEGS
+TURNOUT Sn3 "Fast Tracks #7 Left Hand Turnout SN3-T-7L"
+ U "Regular Turnout" "" "Fast Tracks" "#7 Left Hand Turnout" "SN3-T-7L" "#7 Right Hand Turnout" "SN3-T-7R" 11.914847 8.171234 0.973889 11.914847 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.914847 0.000000 90.000000
+ E 11.914847 0.973889 81.828766
+ S 0 0.000000 0.000000 0.000000 0.563000 0.000000
+ S 0 0.000000 0.563000 0.000000 11.914847 0.000000
+ C 0 0.000000 -63.971682 0.563000 63.971682 171.828766 8.171234
+ S 0 0.000000 9.655422 0.649459 11.914847 0.973889
+ END$SEGS
+TURNOUT Sn3 "Fast Tracks #7 Right Hand Turnout SN3-T-7R"
+ U "Regular Turnout" "" "Fast Tracks" "#7 Left Hand Turnout" "SN3-T-7L" "#7 Right Hand Turnout" "SN3-T-7R" 11.914847 8.171234 0.973889 11.914847 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.914847 0.000000 90.000000
+ E 11.914847 -0.973889 98.171234
+ S 0 0.000000 0.000000 0.000000 0.563000 -0.000000
+ S 0 0.000000 0.563000 -0.000000 11.914847 0.000000
+ C 0 0.000000 63.971682 0.563000 -63.971682 0.000000 8.171234
+ S 0 0.000000 9.655422 -0.649459 11.914847 -0.973889
+ END$SEGS
+TURNOUT Sn3 "Fast Tracks #8 Left Hand Turnout SN3-T-8L"
+ U "Regular Turnout" "" "Fast Tracks" "#8 Left Hand Turnout" "SN3-T-8L" "#8 Right Hand Turnout" "SN3-T-8R" 12.407639 7.152669 0.959271 12.407639 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 12.407639 0.000000 90.000000
+ E 12.407639 0.959271 82.847331
+ S 0 0.000000 0.000000 0.000000 0.563000 0.000000
+ S 0 0.000000 0.563000 0.000000 12.407639 0.000000
+ C 0 0.000000 -67.207173 0.563000 67.207173 172.847331 7.152669
+ S 0 0.000000 8.931209 0.523013 12.407639 0.959271
+ END$SEGS
+TURNOUT Sn3 "Fast Tracks #8 Right Hand Turnout SN3-T-8R"
+ U "Regular Turnout" "" "Fast Tracks" "#8 Left Hand Turnout" "SN3-T-8L" "#8 Right Hand Turnout" "SN3-T-8R" 12.407639 7.152669 0.959271 12.407639 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 12.407639 0.000000 90.000000
+ E 12.407639 -0.959271 97.152669
+ S 0 0.000000 0.000000 0.000000 0.563000 -0.000000
+ S 0 0.000000 0.563000 -0.000000 12.407639 0.000000
+ C 0 0.000000 67.207173 0.563000 -67.207173 0.000000 7.152669
+ S 0 0.000000 8.931209 -0.523013 12.407639 -0.959271
+ END$SEGS
+TURNOUT Sn3 "Fast Tracks #9 Left Hand Turnout SN3-T-9L"
+ U "Regular Turnout" "" "Fast Tracks" "#9 Left Hand Turnout" "SN3-T-9L" "#9 Right Hand Turnout" "SN3-T-9R" 14.109555 6.359660 1.026562 14.109555 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.109555 0.000000 90.000000
+ E 14.109555 1.026562 83.640340
+ S 0 0.000000 0.000000 0.000000 0.563000 0.000000
+ S 0 0.000000 0.563000 0.000000 14.109555 0.000000
+ C 0 0.000000 -78.048224 0.563000 78.048224 173.640340 6.359660
+ S 0 0.000000 9.208341 0.480297 14.109555 1.026562
+ END$SEGS
+TURNOUT Sn3 "Fast Tracks #9 Right Hand Turnout SN3-T-9R"
+ U "Regular Turnout" "" "Fast Tracks" "#9 Left Hand Turnout" "SN3-T-9L" "#9 Right Hand Turnout" "SN3-T-9R" 14.109555 6.359660 1.026562 14.109555 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 14.109555 0.000000 90.000000
+ E 14.109555 -1.026562 96.359660
+ S 0 0.000000 0.000000 0.000000 0.563000 -0.000000
+ S 0 0.000000 0.563000 -0.000000 14.109555 0.000000
+ C 0 0.000000 78.048224 0.563000 -78.048224 0.000000 6.359660
+ S 0 0.000000 9.208341 -0.480297 14.109555 -1.026562
+ END$SEGS
+
+
+
+SUBCONTENTS Fast Tracks Sn3 - 3 Way Turnouts
+TURNOUT Sn3 "Fast Tracks #6 3-Way Turnout SN3-3W-6"
+ U "3-way Turnout" "" "Fast Tracks" "#6 3-Way Turnout" "SN3-3W-6" 11.800351 9.527283 1.302598 11.800351 0.934075 9.527283 11.800351 0.000000 0.000000 0
+ P "Left" 1 2 3
+ P "Normal" 1 4 7
+ P "Right" 1 4 5 6
+ E 0.000000 0.000000 270.000000
+ E 11.800351 1.302598 80.472717
+ E 11.800351 -0.934075 99.527283
+ E 11.800351 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.563000 0.000000
+ C 0 0.000000 -41.712453 0.563000 41.712453 170.472717 9.527283
+ S 0 0.000000 7.467130 0.575344 11.800351 1.302598
+ S 0 0.000000 0.563000 0.000000 1.154451 -0.000000
+ C 0 0.000000 60.964443 1.154451 -60.964443 0.000000 9.527283
+ S 0 0.000000 11.245117 -0.840889 11.800351 -0.934075
+ S 0 0.000000 1.154451 -0.000000 11.800351 0.000000
+ END$SEGS
+
+
+
+SUBCONTENTS Fast Tracks Sn3 - Wye Turnouts
+TURNOUT Sn3 "Fast Tracks #4 Wye Turnout SN3-Y-4"
+ U "Wye Turnout" "" "Fast Tracks" "#4 Wye Turnout" "SN3-Y-4" 8.748988 7.152669 0.655799 0.655799 7.152669 8.748988 0.000000 0.000000 0
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 8.748988 0.655799 82.847331
+ E 8.748988 -0.655799 97.152669
+ S 0 0.000000 0.000000 0.000000 0.563000 0.000000
+ C 0 0.000000 -47.361437 0.563000 47.361437 172.847331 7.152669
+ S 0 0.000000 6.460144 0.368572 8.748988 0.655799
+ C 0 0.000000 47.361437 0.563000 -47.361437 0.000000 7.152669
+ S 0 0.000000 6.460144 -0.368572 8.748988 -0.655799
+ END$SEGS
+TURNOUT Sn3 "Fast Tracks #5 Wye Turnout SN3-Y-5"
+ U "Wye Turnout" "" "Fast Tracks" "#5 Wye Turnout" "SN3-Y-5" 10.642253 5.724810 0.650346 0.650346 5.724810 10.642253 0.000000 0.000000 0
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 10.642253 0.650346 84.275190
+ E 10.642253 -0.650346 95.724810
+ S 0 0.000000 0.000000 0.000000 0.563000 0.000000
+ C 0 0.000000 -71.841128 0.563000 71.841128 174.275190 5.724810
+ S 0 0.000000 7.729197 0.358310 10.642253 0.650346
+ C 0 0.000000 71.841128 0.563000 -71.841128 360.000000 5.724810
+ S 0 0.000000 7.729197 -0.358310 10.642253 -0.650346
+ END$SEGS
+TURNOUT Sn3 "Fast Tracks #6 Wye Turnout SN3-Y-6"
+ U "Wye Turnout" "" "Fast Tracks" "#6 Wye Turnout" "SN3-Y-6" 9.543921 4.771888 0.513336 0.513336 4.771888 9.543921 0.000000 0.000000 0
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 9.543921 0.513336 85.228112
+ E 9.543921 -0.513336 94.771888
+ S 0 0.000000 0.000000 0.000000 0.563000 0.000000
+ C 0 0.000000 -67.958003 0.563000 67.958003 175.228112 4.771888
+ S 0 0.000000 6.216352 0.235556 9.543921 0.513336
+ C 0 0.000000 67.958003 0.563000 -67.958003 360.000000 4.771888
+ S 0 0.000000 6.216352 -0.235556 9.543921 -0.513336
+ END$SEGS
+TURNOUT Sn3 "Fast Tracks #7 Wye Turnout SN3-Y-7"
+ U "Wye Turnout" "" "Fast Tracks" "#7 Wye Turnout" "SN3-Y-7" 12.319433 4.090817 0.509590 0.509590 4.090817 12.319433 0.000000 0.000000 0
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 12.319433 0.509590 85.909183
+ E 12.319433 -0.509590 94.090817
+ S 0 0.000000 0.000000 0.000000 0.563000 0.000000
+ C 0 0.000000 -129.675639 0.563000 129.675639 175.909183 4.090817
+ S 0 0.000000 9.813746 0.330384 12.319433 0.509590
+ C 0 0.000000 129.675639 0.563000 -129.675639 0.000000 4.090817
+ S 0 0.000000 9.813746 -0.330384 12.319433 -0.509590
+ END$SEGS
+TURNOUT Sn3 "Fast Tracks #8 Wye Turnout SN3-Y-8"
+ U "Wye Turnout" "" "Fast Tracks" "#8 Wye Turnout" "SN3-Y-8" 12.283094 3.579821 0.471312 0.471312 3.579821 12.283094 0.000000 0.000000 0
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 12.283094 0.471312 86.420179
+ E 12.283094 -0.471312 93.579821
+ S 0 0.000000 0.000000 0.000000 0.563000 0.000000
+ C 0 0.000000 -133.966913 0.563000 133.966913 176.420179 3.579821
+ S 0 0.000000 8.927763 0.261399 12.283094 0.471312
+ C 0 0.000000 133.966913 0.563000 -133.966913 0.000000 3.579821
+ S 0 0.000000 8.927763 -0.261399 12.283094 -0.471312
+ END$SEGS
+
+
+
+SUBCONTENTS Fast Tracks Sn3 - Crossings
+TURNOUT Sn3 "Fast Tracks 14d Crossing SN3-X-14"
+ U "Crossing" "" "Fast Tracks" "14d Crossing" "SN3-X-14" 10.757861 14.000000 10.757861 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 10.757861 0.000000 90.000000
+ E 0.159777 1.301281 284.000000
+ E 10.598084 -1.301281 104.000000
+ S 0 0.000000 0.000000 0.000000 10.757861 0.000000
+ S 0 0.000000 0.159777 1.301281 10.598084 -1.301281
+ END$SEGS
+TURNOUT Sn3 "Fast Tracks 19d Crossing SN3-X-19"
+ U "Crossing" "" "Fast Tracks" "19d Crossing" "SN3-X-19" 9.237567 19.000000 9.237567 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 9.237567 0.000000 90.000000
+ E 0.251638 1.503729 289.000000
+ E 8.985929 -1.503729 109.000000
+ S 0 0.000000 0.000000 0.000000 9.237567 0.000000
+ S 0 0.000000 0.251638 1.503729 8.985929 -1.503729
+ END$SEGS
diff --git a/app/lib/params/TT-Berliner.xtp b/app/lib/params/TT-Berliner.xtp
index 94a3663..42298ff 100644
--- a/app/lib/params/TT-Berliner.xtp
+++ b/app/lib/params/TT-Berliner.xtp
@@ -1,228 +1,228 @@
-CONTENTS Berliner Track System
-SUBCONTENTS Berliner TT-Scale Track - Straight Track
-TURNOUT TT "Berliner Track Straight 228mm 6110"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.976378 0.000000 90.000000
- S 0 0 0.000000 0.000000 8.976378 0.000000
- END$SEGS
-TURNOUT TT "Berliner Track Straight 114mm 6120"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.488189 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.488189 0.000000
- END$SEGS
-TURNOUT TT "Berliner Track Straight 105mm 6130"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.133858 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.133858 0.000000
- END$SEGS
-TURNOUT TT "Berliner Track Straight 57mm 6140"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.244094 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.244094 0.000000
- END$SEGS
-TURNOUT TT "Berliner Track Straight 14.5mm 6150"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.570866 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.570866 0.000000
- END$SEGS
-TURNOUT TT "Berliner Track Straight 5.4mm D"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.212598 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.212598 0.000000
- END$SEGS
-
-
-SUBCONTENTS Berliner TT-Scale Track - Curve Track
-TURNOUT TT "Berliner Track Curve 286mm 7.5° 6210"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.469704 -0.096330 97.500000
- C 0 0 11.259843 0.000000 -11.259843 0.000000 7.500000
- END$SEGS
-TURNOUT TT "Berliner Track Curve 286mm 11.25° 6220"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.196686 -0.216355 101.250000
- C 0 0 11.259843 0.000000 -11.259843 0.000000 11.2500000
- END$SEGS
-TURNOUT TT "Berliner Track Curve 286mm 22.5° 6230"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.308955 -0.857104 112.500000
- C 0 0 11.259843 0.000000 -11.259843 0.000000 22.500000
- END$SEGS
-TURNOUT TT "Berliner Track Curve 286mm 45° 6240"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.961911 -3.297932 135.000000
- C 0 0 11.259843 0.000000 -11.259843 0.000000 45.000000
- END$SEGS
-TURNOUT TT "Berliner Track Curve 330mm 7.5° 6310"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.695813 -0.111149 97.500000
- C 0 0 12.992126 0.000000 -12.992126 0.000000 7.500000
- END$SEGS
-TURNOUT TT "Berliner Track Curve 330mm 11.25° 6320"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.534638 -0.249640 101.250000
- C 0 0 12.992126 0.000000 -12.992126 0.000000 11.2500000
- END$SEGS
-TURNOUT TT "Berliner Track Curve 330mm 22.5° 6330"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.971871 -0.988967 112.500000
- C 0 0 12.992126 0.000000 -12.992126 0.000000 22.500000
- END$SEGS
-TURNOUT TT "Berliner Track Curve 556mm 15° 6340"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.665488 -0.745876 105.000000
- C 0 0 21.889764 0.000000 -21.889764 0.000000 15.000000
- END$SEGS
-TURNOUT TT "Berliner Track Curve 600mm 15° 6350"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.113836 -0.804902 105.000000
- C 0 0 23.622047 0.000000 -23.622047 0.000000 15.000000
- END$SEGS
-
-
-SUBCONTENTS Berliner TT-Scale Track - Misc
-TURNOUT TT "Berliner Track Power Feed 57mm 6510"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.244094 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.244094 0.000000
- END$SEGS
-TURNOUT TT "Berliner Track Power Feed 286mm 45° 6520"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.961911 -3.297932 135.000000
- C 0 0 11.259843 0.000000 -11.259843 0.000000 45.000000
- END$SEGS
-TURNOUT TT "Berliner Track Unbreaker 57mm 6610"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.244094 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.244094 0.000000
- END$SEGS
-TURNOUT TT "Berliner Track Separation 57mm 6620"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.244094 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.244094 0.000000
- END$SEGS
-TURNOUT TT "Berliner Track Rectifier 57mm 6630"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.244094 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.244094 0.000000
- END$SEGS
-TURNOUT TT "Berliner Track Switching 57mm 6640"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.244094 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.244094 0.000000
- END$SEGS
-TURNOUT TT "Berliner Track uncoupling 114mm 6710"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.488189 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.488189 0.000000
- END$SEGS
-TURNOUT TT "Berliner Track Buffer 6730"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 2.244094 0.000000
- L3 9127187 1.000000 2.244094 0.000000 0 3.244094 0.000000 0
- END$SEGS
-TURNOUT TT "Berliner Track Buffer 7150"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 1.000000 0.000000
- L3 9127187 1.000000 0.000000 0.000000 0 1.000000 0.000000 0
- END$SEGS
-
-
-SUBCONTENTS Berliner TT-Scale Track - Turnouts
-TURNOUT TT "Berliner Track Left Turnout R286 22.5d 6813"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 4.488189 0.000000 90.000000
- E 4.308955 0.857104 67.500000
- S 0 0.000000 0.000000 0.000000 4.488189 0.000000
- C 0 0 11.259843 0.000000 11.259843 157.500000 22.500000
- END$SEGS
-TURNOUT TT "Berliner Track Right Turnout R286 22.5d 6814"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 4.488189 0.000000 90.000000
- E 4.308955 -0.857104 112.500000
- S 0 0.000000 0.000000 0.000000 4.488189 0.000000
- C 0 0 11.259843 0.000000 -11.259843 0.000000 22.500000
- END$SEGS
-TURNOUT TT "Berliner Track Left Curve Turnout R286/600 30/15d 6851"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 6.113836 0.804902 75.000000
- E 5.629921 1.508533 60.000000
- C 0 0 23.622047 0.000000 23.622047 165.000000 15.000000
- C 0 0 11.259843 0.000000 11.259843 150.000000 30.000000
- END$SEGS
-TURNOUT TT "Berliner Track Right Curve Turnout R286/600 30/15d 6852"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 6.113836 -0.804902 105.000000
- E 5.629921 -1.508533 120.000000
- C 0 0 23.622047 0.000000 -23.622047 0.000000 15.000000
- C 0 0 11.259843 0.000000 -11.259843 0.000000 30.000000
- END$SEGS
-TURNOUT TT "Berliner Track Double-Slip Turnout 142mm 22.5d 6860"
- P "N" 1 2 3 0 4 5 6
- P "R" 1 7 6 0 4 8 3
- E 0.000000 0.000000 270.000000
- E 5.590551 0.000000 90.000000
- E 0.212776 1.069701 292.500000
- E 5.377775 -1.069701 112.500000
- S 0 0.000000 0.000000 0.000000 0.944050 0.000000
- S 0 0.000000 0.944050 0.000000 4.646501 0.000000
- S 0 0.000000 4.646501 0.000000 5.590551 0.000000
- S 0 0.000000 0.212776 1.069701 1.084895 0.708452
- S 0 0.000000 1.084895 0.708452 4.505656 -0.708452
- S 0 0.000000 4.505656 -0.708452 5.377775 -1.069701
- C 0 0.000000 9.306875 0.944013 -9.306875 0.000076 22.500152
- C 0 0.000000 -9.306875 4.646513 9.306870 180.000076 22.500152
- END$SEGS
-
-
-SUBCONTENTS Berliner TT-Scale Track - Crossings
-TURNOUT TT "Berliner Track Crossing 114mm 22.5d 6910"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.488189 0.000000 90.000000
- E 0.170820 0.858774 292.500000
- E 4.317369 -0.858774 112.500000
- S 0 0.000000 0.000000 0.000000 4.488189 0.000000
- S 0 0.000000 0.170820 0.858774 4.317369 -0.858774
- END$SEGS
-TURNOUT TT "Berliner Track Crossing 57mm 45d 6920"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 2.244094 0.000000 90.000000
- E 0.328638 0.793405 315.000000
- E 1.915456 -0.793405 135.000000
- S 0 0.000000 0.000000 0.000000 2.244094 0.000000
- S 0 0.000000 0.328638 0.793405 1.915456 -0.793405
- END$SEGS
+CONTENTS Berliner Track System
+SUBCONTENTS Berliner TT-Scale Track - Straight Track
+TURNOUT TT "Berliner Track Straight 228mm 6110"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.976378 0.000000 90.000000
+ S 0 0 0.000000 0.000000 8.976378 0.000000
+ END$SEGS
+TURNOUT TT "Berliner Track Straight 114mm 6120"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.488189 0.000000
+ END$SEGS
+TURNOUT TT "Berliner Track Straight 105mm 6130"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.133858 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.133858 0.000000
+ END$SEGS
+TURNOUT TT "Berliner Track Straight 57mm 6140"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.244094 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.244094 0.000000
+ END$SEGS
+TURNOUT TT "Berliner Track Straight 14.5mm 6150"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.570866 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.570866 0.000000
+ END$SEGS
+TURNOUT TT "Berliner Track Straight 5.4mm D"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.212598 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.212598 0.000000
+ END$SEGS
+
+
+SUBCONTENTS Berliner TT-Scale Track - Curve Track
+TURNOUT TT "Berliner Track Curve 286mm 7.5° 6210"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.469704 -0.096330 97.500000
+ C 0 0 11.259843 0.000000 -11.259843 0.000000 7.500000
+ END$SEGS
+TURNOUT TT "Berliner Track Curve 286mm 11.25° 6220"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.196686 -0.216355 101.250000
+ C 0 0 11.259843 0.000000 -11.259843 0.000000 11.2500000
+ END$SEGS
+TURNOUT TT "Berliner Track Curve 286mm 22.5° 6230"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.308955 -0.857104 112.500000
+ C 0 0 11.259843 0.000000 -11.259843 0.000000 22.500000
+ END$SEGS
+TURNOUT TT "Berliner Track Curve 286mm 45° 6240"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.961911 -3.297932 135.000000
+ C 0 0 11.259843 0.000000 -11.259843 0.000000 45.000000
+ END$SEGS
+TURNOUT TT "Berliner Track Curve 330mm 7.5° 6310"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.695813 -0.111149 97.500000
+ C 0 0 12.992126 0.000000 -12.992126 0.000000 7.500000
+ END$SEGS
+TURNOUT TT "Berliner Track Curve 330mm 11.25° 6320"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.534638 -0.249640 101.250000
+ C 0 0 12.992126 0.000000 -12.992126 0.000000 11.2500000
+ END$SEGS
+TURNOUT TT "Berliner Track Curve 330mm 22.5° 6330"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.971871 -0.988967 112.500000
+ C 0 0 12.992126 0.000000 -12.992126 0.000000 22.500000
+ END$SEGS
+TURNOUT TT "Berliner Track Curve 556mm 15° 6340"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.665488 -0.745876 105.000000
+ C 0 0 21.889764 0.000000 -21.889764 0.000000 15.000000
+ END$SEGS
+TURNOUT TT "Berliner Track Curve 600mm 15° 6350"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.113836 -0.804902 105.000000
+ C 0 0 23.622047 0.000000 -23.622047 0.000000 15.000000
+ END$SEGS
+
+
+SUBCONTENTS Berliner TT-Scale Track - Misc
+TURNOUT TT "Berliner Track Power Feed 57mm 6510"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.244094 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.244094 0.000000
+ END$SEGS
+TURNOUT TT "Berliner Track Power Feed 286mm 45° 6520"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.961911 -3.297932 135.000000
+ C 0 0 11.259843 0.000000 -11.259843 0.000000 45.000000
+ END$SEGS
+TURNOUT TT "Berliner Track Unbreaker 57mm 6610"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.244094 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.244094 0.000000
+ END$SEGS
+TURNOUT TT "Berliner Track Separation 57mm 6620"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.244094 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.244094 0.000000
+ END$SEGS
+TURNOUT TT "Berliner Track Rectifier 57mm 6630"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.244094 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.244094 0.000000
+ END$SEGS
+TURNOUT TT "Berliner Track Switching 57mm 6640"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.244094 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.244094 0.000000
+ END$SEGS
+TURNOUT TT "Berliner Track uncoupling 114mm 6710"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.488189 0.000000
+ END$SEGS
+TURNOUT TT "Berliner Track Buffer 6730"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 2.244094 0.000000
+ L3 9127187 1.000000 2.244094 0.000000 0 3.244094 0.000000 0
+ END$SEGS
+TURNOUT TT "Berliner Track Buffer 7150"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 1.000000 0.000000
+ L3 9127187 1.000000 0.000000 0.000000 0 1.000000 0.000000 0
+ END$SEGS
+
+
+SUBCONTENTS Berliner TT-Scale Track - Turnouts
+TURNOUT TT "Berliner Track Left Turnout R286 22.5d 6813"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ E 4.308955 0.857104 67.500000
+ S 0 0.000000 0.000000 0.000000 4.488189 0.000000
+ C 0 0 11.259843 0.000000 11.259843 157.500000 22.500000
+ END$SEGS
+TURNOUT TT "Berliner Track Right Turnout R286 22.5d 6814"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ E 4.308955 -0.857104 112.500000
+ S 0 0.000000 0.000000 0.000000 4.488189 0.000000
+ C 0 0 11.259843 0.000000 -11.259843 0.000000 22.500000
+ END$SEGS
+TURNOUT TT "Berliner Track Left Curve Turnout R286/600 30/15d 6851"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 6.113836 0.804902 75.000000
+ E 5.629921 1.508533 60.000000
+ C 0 0 23.622047 0.000000 23.622047 165.000000 15.000000
+ C 0 0 11.259843 0.000000 11.259843 150.000000 30.000000
+ END$SEGS
+TURNOUT TT "Berliner Track Right Curve Turnout R286/600 30/15d 6852"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 6.113836 -0.804902 105.000000
+ E 5.629921 -1.508533 120.000000
+ C 0 0 23.622047 0.000000 -23.622047 0.000000 15.000000
+ C 0 0 11.259843 0.000000 -11.259843 0.000000 30.000000
+ END$SEGS
+TURNOUT TT "Berliner Track Double-Slip Turnout 142mm 22.5d 6860"
+ P "N" 1 2 3 0 4 5 6
+ P "R" 1 7 6 0 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 5.590551 0.000000 90.000000
+ E 0.212776 1.069701 292.500000
+ E 5.377775 -1.069701 112.500000
+ S 0 0.000000 0.000000 0.000000 0.944050 0.000000
+ S 0 0.000000 0.944050 0.000000 4.646501 0.000000
+ S 0 0.000000 4.646501 0.000000 5.590551 0.000000
+ S 0 0.000000 0.212776 1.069701 1.084895 0.708452
+ S 0 0.000000 1.084895 0.708452 4.505656 -0.708452
+ S 0 0.000000 4.505656 -0.708452 5.377775 -1.069701
+ C 0 0.000000 9.306875 0.944013 -9.306875 0.000076 22.500152
+ C 0 0.000000 -9.306875 4.646513 9.306870 180.000076 22.500152
+ END$SEGS
+
+
+SUBCONTENTS Berliner TT-Scale Track - Crossings
+TURNOUT TT "Berliner Track Crossing 114mm 22.5d 6910"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ E 0.170820 0.858774 292.500000
+ E 4.317369 -0.858774 112.500000
+ S 0 0.000000 0.000000 0.000000 4.488189 0.000000
+ S 0 0.000000 0.170820 0.858774 4.317369 -0.858774
+ END$SEGS
+TURNOUT TT "Berliner Track Crossing 57mm 45d 6920"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 2.244094 0.000000 90.000000
+ E 0.328638 0.793405 315.000000
+ E 1.915456 -0.793405 135.000000
+ S 0 0.000000 0.000000 0.000000 2.244094 0.000000
+ S 0 0.000000 0.328638 0.793405 1.915456 -0.793405
+ END$SEGS
diff --git a/app/lib/params/TT-Hornby.xtp b/app/lib/params/TT-Hornby.xtp
new file mode 100644
index 0000000..f58fbec
--- /dev/null
+++ b/app/lib/params/TT-Hornby.xtp
@@ -0,0 +1,256 @@
+CONTENTS Hornby TT120 Track System
+SUBCONTENTS Hornby TT120 Track - Turnouts
+TURNOUT TT "Hornby TT120 Track Lefthand R361mm 15d 166mm Turnout TT8008"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 6.535433 0.000000 90.000000
+ E 6.535433 0.846457 75.477524
+ S 0 0.000000 0.000000 0.000000 0.577954 0.000000
+ S 0 0.000000 0.577954 0.000000 6.535433 0.000000
+ C 0 0.000000 -21.256404 0.577954 21.256404 165.477524 14.522476
+ S 0 0.000000 5.908205 0.679156 6.535433 0.846457
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track Righthand R361mm 15d 166mm Turnout TT8009"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 6.535433 0.000000 90.000000
+ E 6.535433 -0.846457 104.522476
+ S 0 0.000000 0.000000 0.000000 0.577954 -0.000000
+ S 0 0.000000 0.577954 -0.000000 6.535433 0.000000
+ C 0 0.000000 21.256404 0.577954 -21.256404 0.000000 14.522476
+ S 0 0.000000 5.908205 -0.679156 6.535433 -0.846457
+ END$SEGS
+
+
+SUBCONTENTS Hornby TT120 Track - Diamond Crossings
+TURNOUT TT "Hornby TT120 Track 15d Diamond Crossing Lefthand TT8018"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 6.535433 0.000000 90.000000
+ E 0.000000 0.846457 284.522476
+ E 6.535433 -0.846457 104.522476
+ S 0 0 0.000000 0.846457 6.535433 -0.846457
+ S 0 0 0.000000 0.000000 6.535433 0.000000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track 15d Diamond Crossing Righthand TT8019"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 6.535433 0.000000 90.000000
+ E 0.000000 -0.846457 255.477524
+ E 6.535433 0.846457 75.000000
+ S 0 0 0.000000 -0.846457 6.535433 0.846457
+ S 0 0 0.000000 0.000000 6.535433 0.000000
+ END$SEGS
+
+
+SUBCONTENTS Hornby TT120 Track - Feature Tracks
+TURNOUT TT "Hornby TT120 Track 166mm Power Straight TT8001"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.535433 0.000000 90.000000
+ S 0 0 0.000000 0.000000 6.535433 0.000000
+ F4 5263440 0.000000 8 1
+ 2.960000 0.300000 0
+ 2.960000 0.560000 0
+ 2.580000 0.560000 0
+ 2.580000 1.140000 0
+ 3.960000 1.140000 0
+ 3.960000 0.560000 0
+ 3.580000 0.560000 0
+ 3.580000 0.300000 0
+ F4 5263440 0.000000 4 1
+ 2.960000 0.200000 0
+ 3.580000 0.200000 0
+ 3.580000 -0.200000 0
+ 2.960000 -0.200000 0
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track 166mm Digital Power Straight TT8029"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.535433 0.000000 90.000000
+ S 0 0 0.000000 0.000000 6.535433 0.000000
+ F4 5263440 0.000000 8 1
+ 2.960000 0.300000 0
+ 2.960000 0.560000 0
+ 2.580000 0.560000 0
+ 2.580000 1.140000 0
+ 3.960000 1.140000 0
+ 3.960000 0.560000 0
+ 3.580000 0.560000 0
+ 3.580000 0.300000 0
+ F4 5263440 0.000000 4 1
+ 2.960000 0.200000 0
+ 3.580000 0.200000 0
+ 3.580000 -0.200000 0
+ 2.960000 -0.200000 0
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track 166mm Uncoupler Ramp TT8013"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.535433 0.000000 90.000000
+ S 0 0 0.000000 0.000000 6.535433 0.000000
+ F4 15569185 0.000000 4 1
+ 2.180000 0.140000 0
+ 4.360000 0.140000 0
+ 4.360000 -0.140000 0
+ 2.180000 -0.140000 0
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track Buffer Stop TT8010"
+ P "Normal" 1
+ E 0.000000 0.000000 90.000000
+ L3 8424071 0.031250 0.000000 0.196850 0 0.472440 0.196850 0
+ L3 8424071 0.031250 0.000000 -0.196850 0 0.472440 -0.196850 0
+ L3 0 0.140000 0.236220 0.472440 0 0.236220 -0.472440 0
+ END$SEGS
+
+
+SUBCONTENTS Hornby TT120 Track - Curve Tracks
+TURNOUT TT "Hornby TT120 Track R1 Curve R267mm 30d TT8003"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.255906 -1.408316 120.000000
+ C 0 0 10.511811 0.000000 -10.511811 0.000000 30.000000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track R1 Half-Curve R267mm 15d TT8020"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.720657 -0.358181 105.000000
+ C 0 0 10.511811 0.000000 -10.511811 0.000000 15.000000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track R1 Qtr-Curve R267mm 7.5d TT8014"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.372067 -0.089930 97.500000
+ C 0 0 10.511811 0.000000 -10.511811 0.000000 7.500000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track R2 Curve R310mm 30d TT8004"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.102362 -1.635123 120.000000
+ C 0 0 12.204724 0.000000 -12.204724 0.000000 30.000000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track R2 Half-Curve R310mm 15d TT8015"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.158815 -0.415866 105.000000
+ C 0 0 12.204724 0.000000 -12.204724 0.000000 15.000000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track R2 Qtr-Curve R310mm 7.5d TT80xx"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.593036 -0.104413 97.500000
+ C 0 0 12.204724 0.000000 -12.204724 0.000000 7.500000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track R3 Curve R353mm 30d TT8005"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.948819 -1.861930 120.000000
+ C 0 0 13.897638 0.000000 -13.897638 0.000000 30.000000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track R3 Half-Curve R353mm 15d TT8016"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.596973 -0.473551 105.000000
+ C 0 0 13.897638 0.000000 -13.897638 0.000000 15.000000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track R3 Qtr-Curve R353mm 7.5d TT80xx"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.814006 -0.118896 97.500000
+ C 0 0 13.897638 0.000000 -13.897638 0.000000 7.500000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track R4 Curve R396mm 30d TT8006"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.795276 -2.088738 120.000000
+ C 0 0 15.590551 0.000000 -15.590551 0.000000 30.000000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track R4 Half-Curve R396mm 15d TT8017"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.035132 -0.531235 105.000000
+ C 0 0 15.590551 0.000000 -15.590551 0.000000 15.000000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track R4 Qtr-Curve R396mm 7.5d TT80xx"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.034975 -0.133379 97.500000
+ C 0 0 15.590551 0.000000 -15.590551 0.000000 7.500000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track R6 Curve R640mm 15d TT8007"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.521425 -0.858562 105.000000
+ C 0 0 25.196850 0.000000 -25.196850 0.000000 15.000000
+ END$SEGS
+
+
+SUBCONTENTS Hornby TT120 Track - Straight Tracks
+TURNOUT TT "Hornby TT120 Track 166mm Straight Track TT8002"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.535433 0.000000 90.000000
+ S 0 0 0.000000 0.000000 6.535433 0.000000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track 83mm Half Straight Track TT8012"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.267717 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.267717 0.000000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track 41.5mm Quarter Straight Track TT8011"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.633858 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.633858 0.000000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track 92mm Extended Half Straight Track TT8037"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.622047 0.000000 90.000000
+ S 0 0 0.000000 0.000000 3.622047 0.000000
+ END$SEGS
+TURNOUT TT "Hornby TT120 Track 332mm Dbl Straight Track TT8039"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 13.070866 0.000000 90.000000
+ S 0 0 0.000000 0.000000 13.070866 0.000000
+ END$SEGS
+
+
+SUBCONTENTS Hornby TT120 Track - Platforms
+STRUCTURE TT "Hornby TT120 Track Platform Straight TT9008"
+ F4 8424071 0.000000 4 0
+ 0.000000 0.846457 0
+ 4.251969 0.846457 0
+ 4.251969 -0.846457 0
+ 0.000000 -0.846457 0
+ L3 0 0.031250 0.000000 0.944882 0 0.000000 -0.944882 0
+ L3 0 0.031250 4.251969 0.944882 0 4.251969 -0.944882 0
+ L3 0 0.031250 0.000000 0.944882 0 4.251969 0.944882 0
+ L3 0 0.031250 0.000000 -0.944882 0 4.251969 -0.944882 0
+ L3 0 0.031250 0.000000 0.846457 0 4.251969 0.846457 0
+ L3 0 0.031250 0.000000 -0.846457 0 4.251969 -0.846457 0
+ END$SEGS
+STRUCTURE TT "Hornby TT120 Track Platform Ramp TT9009"
+ F4 8424071 0.000000 10 0
+ 0.000000 0.846457 0
+ 0.861220 0.804586 0
+ 1.722441 0.677766 0
+ 2.583661 0.462192 0
+ 3.444882 0.150853 0
+ 3.444882 -0.150853 0
+ 2.583661 -0.462192 0
+ 1.722441 -0.677766 0
+ 0.861220 -0.804586 0
+ 0.000000 -0.846457 0
+ L3 0 0.031250 0.000000 0.944882 0 0.000000 -0.944882 0
+ L3 0 0.031250 3.543307 0.215948 0 3.543307 -0.215948 0
+ L3 0 0.031250 3.444882 0.150853 0 3.444882 -0.150853 0
+ A3 0 0.031250 8.976378 0.000000 -8.031496 0 0.000000 23.249563
+ A3 0 0.031250 8.877953 0.000000 -8.031496 0 0.000000 22.831765
+ A3 0 0.031250 8.877953 0.000000 8.031496 0 157.168235 22.831765
+ A3 0 0.031250 8.976378 0.000000 8.031496 0 156.750437 23.249563
+ END$SEGS
diff --git a/app/lib/params/TT-ModellbahnUnion.xtp b/app/lib/params/TT-ModellbahnUnion.xtp
new file mode 100644
index 0000000..9cee020
--- /dev/null
+++ b/app/lib/params/TT-ModellbahnUnion.xtp
@@ -0,0 +1,55 @@
+CONTENTS Modellbahn Union TT Scale Track
+TURNOUT TT "Modellbahn Union Turn Table 135mm 15d Bridge MU-TT-B00085"
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ E 0.000000 2.657480 0.000000
+ E 0.687806 2.566929 15.000000
+ E 1.328740 2.301445 30.000000
+ E 1.879122 1.879122 45.000000
+ E 2.301445 1.328740 60.000000
+ E 2.566929 0.687806 75.000000
+ E 2.657480 0.000000 90.000000
+ E 2.566929 -0.687806 105.000000
+ E 2.301445 -1.328740 120.000000
+ E 1.879122 -1.879122 135.000000
+ E 1.328740 -2.301445 150.000000
+ E 0.687806 -2.566929 165.000000
+ E 0.000000 -2.657480 180.000000
+ E -0.687806 -2.566929 195.000000
+ E -1.328740 -2.301445 210.000000
+ E -1.879122 -1.879122 225.000000
+ E -2.301445 -1.328740 240.000000
+ E -2.566929 -0.687806 255.000000
+ E -2.657480 0.000000 270.000000
+ E -2.566929 0.687806 285.000000
+ E -2.301445 1.328740 300.000000
+ E -1.879122 1.879122 315.000000
+ E -1.328740 2.301445 330.000000
+ E -0.687806 2.566929 345.000000
+ S 16777215 0 0.000000 2.657480 0.000000 -2.657480
+ S 16777215 0 0.687806 2.566929 -0.687806 -2.566929
+ S 16777215 0 1.328740 2.301445 -1.328740 -2.301445
+ S 16777215 0 1.879122 1.879122 -1.879122 -1.879122
+ S 16777215 0 2.301445 1.328740 -2.301445 -1.328740
+ S 16777215 0 2.566929 0.687806 -2.566929 -0.687806
+ S 16777215 0 2.657480 0.000000 -2.657480 0.000000
+ S 16777215 0 2.566929 -0.687806 -2.566929 0.687806
+ S 16777215 0 2.301445 -1.328740 -2.301445 1.328740
+ S 16777215 0 1.879122 -1.879122 -1.879122 1.879122
+ S 16777215 0 1.328740 -2.301445 -1.328740 2.301445
+ S 16777215 0 0.687806 -2.566929 -0.687806 2.566929
+ G3 0 0.000000 0.094167 0.000000 0.000000 0
+ A3 8424071 0.031250 2.657480 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 3.385827 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 0.664370 0.000000 0.000000 0 0.000000 360.000000
+ END$SEGS \ No newline at end of file
diff --git a/app/lib/params/TT-Peco.xtp b/app/lib/params/TT-Peco.xtp
new file mode 100644
index 0000000..543783c
--- /dev/null
+++ b/app/lib/params/TT-Peco.xtp
@@ -0,0 +1,84 @@
+CONTENTS Peco Code 55 TT Scale Track System
+#Med Radius Turnout 180mm for both Lenghts, Angle - 11.25d, Offset - based on Substitue Radius 922.6mm @ 11.25d
+#Sleepers measure 21mm x 2mm x 1.5mm with a 3.5mm spacing between each of them
+#Small Radius Turnout 135mm for both Lenghts, Angle - 11.25d Substitue Radius 466mm radius U1291RH U1292 LH
+#11.25d Crossing 180mm
+
+
+SUBCONTENTS Peco TT-Scale Track - Straight Track
+TURNOUT TT "Peco Track Flex Straight 914mm SL-1200"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 35.984252 0.000000 90.000000
+ S 0 0 0.000000 0.000000 35.984252 0.000000
+ END$SEGS
+
+SUBCONTENTS Peco TT-Scale Track - Curve Tracks
+
+SUBCONTENTS Peco TT-Scale Track - Turnouts
+TURNOUT TT "Peco Track Medium Radius Right Turnout 180mm 11.25d SL-U1295"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 7.086614 0.000000 90.000000
+ E 7.086614 -0.697933 101.250000
+ S 0 0.000000 0.000000 0.000000 0.472381 -0.000000
+ S 0 0.000000 0.472381 -0.000000 7.086614 0.000000
+ C 0 0.000000 31.530534 0.472381 -31.530534 0.000000 11.250000
+ S 0 0.000000 6.623683 -0.605850 7.086614 -0.697933
+ END$SEGS
+TURNOUT TT "Peco Track Medium Radius Left Turnout 180mm 11.25d SL-U1296"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 7.086614 0.000000 90.000000
+ E 7.086614 0.697933 78.750000
+ S 0 0.000000 0.000000 0.000000 0.472381 0.000000
+ S 0 0.000000 0.472381 0.000000 7.086614 0.000000
+ C 0 0.000000 -31.530534 0.472381 31.530534 168.750000 11.250000
+ S 0 0.000000 6.623683 0.605850 7.086614 0.697933
+ END$SEGS
+TURNOUT TT "Peco Track Small Radius Right Turnout 135mm 11.25d SL-U1291"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 5.314961 0.000000 90.000000
+ E 5.314961 -0.697933 101.250000
+ S 0 0.000000 0.000000 0.000000 0.472000 -0.000000
+ S 0 0.000000 0.472000 -0.000000 5.314961 0.000000
+ C 0 0.000000 13.546511 0.472000 -13.546511 0.000000 11.250000
+ S 0 0.000000 3.114793 -0.260292 5.314961 -0.697933
+ END$SEGS
+TURNOUT TT "Peco Track Small Radius Left Turnout 135mm 11.25d SL-U1292"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 5.314961 0.000000 90.000000
+ E 5.314961 0.697933 78.750000
+ S 0 0.000000 0.000000 0.000000 0.472000 0.000000
+ S 0 0.000000 0.472000 0.000000 5.314961 0.000000
+ C 0 0.000000 -13.546511 0.472000 13.546511 168.750000 11.250000
+ S 0 0.000000 3.114793 0.260292 5.314961 0.697933
+ END$SEGS
+
+SUBCONTENTS Peco TT-Scale Track - Crossings
+TURNOUT TT "Peco Track 11.25d Crossing 180mm SL-U1294"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 7.086614 0.000000 90.000000
+ E 0.068084 0.691265 281.250000
+ E 7.018530 -0.691265 101.250000
+ S 0 0.000000 0.000000 0.000000 7.086614 0.000000
+ S 0 0.000000 0.068084 0.691265 7.018530 -0.691265
+ END$SEGS
+
+
+SUBCONTENTS Peco TT-Scale Track - Misc
+TURNOUT TT "Peco Track Buffer Stop 27.5mm SL-U1240"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 1.082677 0.000000
+ L3 0 0.060000 0.541339 0.413386 0 0.541339 -0.413386 0
+ L3 0 0.060000 0.147638 0.236220 0 0.935039 0.236220 0
+ L3 0 0.060000 0.147638 -0.236220 0 0.935039 -0.236220 0
+ END$SEGS
diff --git a/app/lib/params/TT-Roco.xtp b/app/lib/params/TT-Roco.xtp
new file mode 100644
index 0000000..b70c3e3
--- /dev/null
+++ b/app/lib/params/TT-Roco.xtp
@@ -0,0 +1,215 @@
+CONTENTS Roco TT Track System
+SUBCONTENTS Roco TT-Scale Track - Straight Track
+TURNOUT TT "Roco Track G44 Straight 1.73 44mm 4080100"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.732283 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.732283 0.000000
+ END$SEGS
+TURNOUT TT "Roco Track G60 Straight 2.38 60.5mm 4080101"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.381889 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.381889 0.000000
+ END$SEGS
+TURNOUT TT "Roco Track G64 Straight 2.53 64.3mm 4080102"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.531496 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.531496 0.000000
+ END$SEGS
+TURNOUT TT "Roco Track G121 Straight 4.76 120.96mm 4080103"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.762205 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.762205 0.000000
+ END$SEGS
+TURNOUT TT "Roco Track G128 Straight 5.07 128.7mm 4080104"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.066929 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.066929 0.000000
+ END$SEGS
+TURNOUT TT "Roco Track G640 Straight(flex) 25.19 640mm 4080105"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 25.334646 0.000000 90.000000
+ S 0 0 0.000000 0.000000 25.334646 0.000000
+ END$SEGS
+
+SUBCONTENTS Roco TT-Scale Track - Curve Track
+TURNOUT TT "Roco Track R1 Curve 12.64R 321mm 10d 4080110"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.194530 -0.191997 100.000000
+ C 0 0 12.637795 0.000000 -12.637795 0.000000 10.000000
+ END$SEGS
+TURNOUT TT "Roco Track R1 Curve 12.64R 321mm 30d 4080130"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.318898 -1.693144 120.000000
+ C 0 0 12.637795 0.000000 -12.637795 0.000000 30.000000
+ END$SEGS
+TURNOUT TT "Roco Track R2 Curve 14.37R 365mm 10d 4080210"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.495338 -0.218314 100.000000
+ C 0 0 14.370079 0.000000 -14.370079 0.000000 10.000000
+ END$SEGS
+TURNOUT TT "Roco Track R2 Curve 14.37R 365mm 20d 4080220"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.914856 -0.866622 110.000000
+ C 0 0 14.370079 0.000000 -14.370079 0.000000 20.000000
+ END$SEGS
+TURNOUT TT "Roco Track R2 Curve 14.37R 365mm 30d 4080230"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.185039 -1.925225 120.000000
+ C 0 0 14.370079 0.000000 -14.370079 0.000000 30.000000
+ END$SEGS
+
+SUBCONTENTS Roco TT-Scale Track - Turnouts
+TURNOUT TT "Roco Track WL20 Left Turnout 4080420"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 5.066929 0.000000 90.000000
+ E 4.914856 0.866622 70.000000
+ S 0 0.000000 0.000000 0.000000 5.066929 0.000000
+ C 0 0 14.370079 0.000000 14.370079 160.000000 20.000000
+ END$SEGS
+TURNOUT TT "Roco Track WR20 Right Turnout 4080421"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 5.066929 0.000000 90.000000
+ E 4.914856 -0.866622 110.000000
+ S 0 0.000000 0.000000 0.000000 5.066929 0.000000
+ C 0 0 14.370079 0.000000 -14.370079 0.000000 20.000000
+ END$SEGS
+TURNOUT TT "Roco Track WL10 Left Turnout 4080410"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 7.601575 0.000000 90.000000
+ E 7.525324 0.866535 80.000000
+ S 0 0.000000 0.000000 0.000000 0.472000 0.000000
+ S 0 0.000000 0.472000 0.000000 7.601575 0.000000
+ C 0 0.000000 -24.449055 0.472032 24.449055 170.000000 10.000000
+ S 0 0.000000 4.717594 0.371447 7.525324 0.866535
+ END$SEGS
+TURNOUT TT "Roco Track WR10 Right Turnout 4080411"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 7.601575 0.000000 90.000000
+ E 7.525324 -0.866535 100.000000
+ S 0 0.000000 0.000000 0.000000 0.472000 0.000000
+ S 0 0.000000 0.472000 0.000000 7.601575 0.000000
+ C 0 0.000000 24.449055 0.471903 -24.449055 0.000000 10.000000
+ S 0 0.000000 4.717594 -0.371447 7.525324 -0.866535
+ END$SEGS
+TURNOUT TT "Roco Track BWL Left Curve Turnout 4080460"
+ P "Normal" 1 2
+ P "Reverse" 3
+ E 0.000000 0.000000 270.000000
+ E 8.051181 1.693144 60.000000
+ E 6.318898 1.693144 60.000000
+ S 0 0.000000 0.000000 0.000000 1.732283 0.000000
+ C 0 0 -12.637795 1.732283 12.637795 150.000000 30.000000
+ C 0 0 12.637795 0.000000 12.637795 150.000000 30.000000
+ END$SEGS
+TURNOUT TT "Roco Track BWR Right Curve Turnout 4080461"
+ P "Normal" 1 2
+ P "Reverse" 3
+ E 0.000000 0.000000 270.000000
+ E 8.051181 -1.693144 120.000000
+ E 6.318898 -1.693144 120.000000
+ S 0 0.000000 0.000000 0.000000 1.732283 0.000000
+ C 0 0 12.637795 1.732283 -12.637795 0.000000 30.000000
+ C 0 0 12.637795 0.000000 -12.637795 0.000000 30.000000
+ END$SEGS
+TURNOUT TT "Roco Track DKW20 Double-Slip Turnout 4080800" 512
+ P "Cross1" 1 2 3
+ P "Cross2" 4 5 6
+ P "Slip1" 1 7 6
+ P "Slip2" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 5.066929 0.000000 90.000000
+ E 0.152787 0.866496 290.000000
+ E 4.914142 -0.866496 110.000000
+ S 0 0.000000 0.000000 0.000000 0.944000 0.000000
+ S 0 0.000000 0.944000 0.000000 4.122929 0.000000
+ S 0 0.000000 4.122929 0.000000 5.066929 0.000000
+ S 0 0.000000 0.152787 0.866496 1.039856 0.543629
+ S 0 0.000000 1.039856 0.543629 4.027073 -0.543629
+ S 0 0.000000 4.027073 -0.543629 4.914142 -0.866496
+ C 0 0.000000 9.014301 0.944000 -9.014301 0.000000 20.000000
+ C 0 0.000000 -9.014301 4.122929 9.014301 180.000000 20.000000
+ END$SEGS
+
+SUBCONTENTS Roco TT-Scale Track - Turntable
+TURNOUT TT "Roco Track Turn Table 35900"
+ P "1" 1
+ P "2" 2
+ P "3" 3
+ P "4" 4
+ P "5" 5
+ P "6" 6
+ P "7" 7
+ P "8" 8
+ P "9" 9
+ P "10" 10
+ P "11" 11
+ P "12" 12
+ E 0.000000 0.000000 0.000000
+ E 0.000000 3.602362 0.000000
+ E 0.932360 3.479615 15.000000
+ E 1.801181 3.119737 30.000000
+ E 2.547255 2.547255 45.000000
+ E 3.119737 1.801181 60.000000
+ E 3.479615 0.932360 75.000000
+ E 3.602362 0.000000 90.000000
+ E 3.479615 -0.932360 105.000000
+ E 3.119737 -1.801181 120.000000
+ E 2.547255 -2.547255 135.000000
+ E 1.801181 -3.119737 150.000000
+ E 0.932360 -3.479615 165.000000
+ E 0.000000 -3.602362 180.000000
+ E -0.932360 -3.479615 195.000000
+ E -1.801181 -3.119737 210.000000
+ E -2.547255 -2.547255 225.000000
+ E -3.119737 -1.801181 240.000000
+ E -3.479615 -0.932360 255.000000
+ E -3.602362 0.000000 270.000000
+ E -3.479615 0.932360 285.000000
+ E -3.119737 1.801181 300.000000
+ E -2.547255 2.547255 315.000000
+ E -1.801181 3.119737 330.000000
+ E -0.932360 3.479615 345.000000
+ S 16777215 0.000000 0.000000 3.602362 0.000000 -3.602362
+ S 16777215 0.000000 0.932360 3.479615 -0.932360 -3.479615
+ S 16777215 0.000000 1.801181 3.119737 -1.801181 -3.119737
+ S 16777215 0.000000 2.547255 2.547255 -2.547255 -2.547255
+ S 16777215 0.000000 3.119737 1.801181 -3.119737 -1.801181
+ S 16777215 0.000000 3.479615 0.932360 -3.479615 -0.932360
+ S 16777215 0.000000 3.602362 0.000000 -3.602362 0.000000
+ S 16777215 0.000000 3.479615 -0.932360 -3.479615 0.932360
+ S 16777215 0.000000 3.119737 -1.801181 -3.119737 1.801181
+ S 16777215 0.000000 2.547255 -2.547255 -2.547255 2.547255
+ S 16777215 0.000000 1.801181 -3.119737 -1.801181 3.119737
+ S 16777215 0.000000 0.932360 -3.479615 -0.932360 3.479615
+ A 11579568 0.000000 3.602362 0.000000 0.000000 0.000000 360.000000
+ A 11579568 0.000000 5.059000 0.000000 0.000000 0.000000 360.000000
+ END
+TURNOUT TT "Roco Track TurnTable Straight Transition 37mm 35901"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.456693 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.456693 0.000000
+ L 0 0.053333 -0.030819 0.470203 1.456693 0.666037
+ L 0 0.053333 1.456693 0.666037 1.456693 -0.666037
+ L 0 0.053333 -0.030819 -0.470203 1.456693 -0.666037
+ A 0 0.053333 3.602362 -3.602362 0.000000 82.500000 15.000000
+ END
diff --git a/app/lib/params/TT-Zeuke.xtp b/app/lib/params/TT-Zeuke.xtp
index 554047d..66917c5 100644
--- a/app/lib/params/TT-Zeuke.xtp
+++ b/app/lib/params/TT-Zeuke.xtp
@@ -1,144 +1,144 @@
-CONTENTS Zeuke Track System
-SUBCONTENTS Zeuke TT-Scale Track - Straight Track
-TURNOUT TT "Zeuke Track Straight 228mm 545/159-103"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.976378 0.000000 90.000000
- S 0 0 0.000000 0.000000 8.976378 0.000000
- END$SEGS
-TURNOUT TT "Zeuke Track Straight 114mm 545/159-101"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.488189 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.488189 0.000000
- END$SEGS
-TURNOUT TT "Zeuke Track Straight 105mm 545/159-106"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.133858 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.133858 0.000000
- END$SEGS
-TURNOUT TT "Zeuke Track Straight 57mm 545/159-105"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.244094 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.244094 0.000000
- END$SEGS
-
-
-SUBCONTENTS Zeuke TT-Scale Track - Curve Track
-TURNOUT TT "Zeuke Track Curve 572mm 11.25° 545/159-111"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.393373 -0.432709 101.250000
- C 0 0 22.519685 0.000000 -22.519685 0.000000 11.2500000
- END$SEGS
-TURNOUT TT "Zeuke Track Curve 572mm 22.5° 545/159-102"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.617910 -1.714209 112.500000
- C 0 0 22.519685 0.000000 -22.519685 0.000000 22.500000
- END$SEGS
-TURNOUT TT "Zeuke Track Curve 572mm 45° 545/159-104"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 15.923822 -6.595863 135.000000
- C 0 0 22.519685 0.000000 -22.519685 0.000000 45.000000
- END$SEGS
-TURNOUT TT "Zeuke Track Curve 660mm 11.25° 545/159-150"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.069276 -0.499280 101.250000
- C 0 0 25.984252 0.000000 -25.984252 0.000000 11.2500000
- END$SEGS
-TURNOUT TT "Zeuke Track Curve 660mm 22.5° 545/159-143"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.943743 -1.977933 112.500000
- C 0 0 25.984252 0.000000 -25.984252 0.000000 22.500000
- END$SEGS
-
-
-SUBCONTENTS Zeuke TT-Scale Track - Misc
-TURNOUT TT "Zeuke Track Power Feed 57mm 545/159-107"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.244094 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.244094 0.000000
- END$SEGS
-TURNOUT TT "Zeuke Track Unbreaker 57mm 545/159-144"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.244094 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.244094 0.000000
- END$SEGS
-TURNOUT TT "Zeuke Track Separation 57mm 545/159-145"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.244094 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.244094 0.000000
- END$SEGS
-TURNOUT TT "Zeuke Track Buffer 82mm 545/159-110"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 2.244094 0.000000
- L3 9127187 1.000000 2.244094 0.000000 0 3.244094 0.000000 0
- END$SEGS
-TURNOUT TT "Zeuke Track Uncopler 114mm 545/159-142"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.488189 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.488189 0.000000
- L3 9127187 0.400000 0.488189 0.000000 0 4.000000 0.000000 0
- END$SEGS
-
-
-SUBCONTENTS Zeuke TT-Scale Track - Turnouts
-TURNOUT TT "Zeuke Track Left Turnout R286 22.5d 545/159-109L"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 4.488189 0.000000 90.000000
- E 4.308955 0.857104 67.500000
- S 0 0.000000 0.000000 0.000000 4.488189 0.000000
- C 0 0 11.259843 0.000000 11.259843 157.500000 22.500000
- END$SEGS
-TURNOUT TT "Zeuke Track Right Turnout R286 22.5d 545/159-109R"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 4.488189 0.000000 90.000000
- E 4.308955 -0.857104 112.500000
- S 0 0.000000 0.000000 0.000000 4.488189 0.000000
- C 0 0 11.259843 0.000000 -11.259843 0.000000 22.500000
- END$SEGS
-TURNOUT TT "Zeuke Track Left Turnout R286 22.5d 545/159-108L"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 4.488189 0.000000 90.000000
- E 4.308955 0.857104 67.500000
- S 0 0.000000 0.000000 0.000000 4.488189 0.000000
- C 0 0 11.259843 0.000000 11.259843 157.500000 22.500000
- END$SEGS
-TURNOUT TT "Zeuke Track Right Turnout R286 22.5d 545/159-108R"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 4.488189 0.000000 90.000000
- E 4.308955 -0.857104 112.500000
- S 0 0.000000 0.000000 0.000000 4.488189 0.000000
- C 0 0 11.259843 0.000000 -11.259843 0.000000 22.500000
- END$SEGS
-
-
-SUBCONTENTS Zeuke TT-Scale Track - Crossings
-TURNOUT TT "Zeuke Track Crossing 114mm 22.5d 545/159-112"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.488189 0.000000 90.000000
- E 0.170820 0.858774 292.500000
- E 4.317369 -0.858774 112.500000
- S 0 0.000000 0.000000 0.000000 4.488189 0.000000
- S 0 0.000000 0.170820 0.858774 4.317369 -0.858774
- END$SEGS
+CONTENTS Zeuke Track System
+SUBCONTENTS Zeuke TT-Scale Track - Straight Track
+TURNOUT TT "Zeuke Track Straight 228mm 545/159-103"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.976378 0.000000 90.000000
+ S 0 0 0.000000 0.000000 8.976378 0.000000
+ END$SEGS
+TURNOUT TT "Zeuke Track Straight 114mm 545/159-101"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.488189 0.000000
+ END$SEGS
+TURNOUT TT "Zeuke Track Straight 105mm 545/159-106"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.133858 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.133858 0.000000
+ END$SEGS
+TURNOUT TT "Zeuke Track Straight 57mm 545/159-105"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.244094 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.244094 0.000000
+ END$SEGS
+
+
+SUBCONTENTS Zeuke TT-Scale Track - Curve Track
+TURNOUT TT "Zeuke Track Curve 572mm 11.25° 545/159-111"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.393373 -0.432709 101.250000
+ C 0 0 22.519685 0.000000 -22.519685 0.000000 11.2500000
+ END$SEGS
+TURNOUT TT "Zeuke Track Curve 572mm 22.5° 545/159-102"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.617910 -1.714209 112.500000
+ C 0 0 22.519685 0.000000 -22.519685 0.000000 22.500000
+ END$SEGS
+TURNOUT TT "Zeuke Track Curve 572mm 45° 545/159-104"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 15.923822 -6.595863 135.000000
+ C 0 0 22.519685 0.000000 -22.519685 0.000000 45.000000
+ END$SEGS
+TURNOUT TT "Zeuke Track Curve 660mm 11.25° 545/159-150"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.069276 -0.499280 101.250000
+ C 0 0 25.984252 0.000000 -25.984252 0.000000 11.2500000
+ END$SEGS
+TURNOUT TT "Zeuke Track Curve 660mm 22.5° 545/159-143"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.943743 -1.977933 112.500000
+ C 0 0 25.984252 0.000000 -25.984252 0.000000 22.500000
+ END$SEGS
+
+
+SUBCONTENTS Zeuke TT-Scale Track - Misc
+TURNOUT TT "Zeuke Track Power Feed 57mm 545/159-107"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.244094 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.244094 0.000000
+ END$SEGS
+TURNOUT TT "Zeuke Track Unbreaker 57mm 545/159-144"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.244094 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.244094 0.000000
+ END$SEGS
+TURNOUT TT "Zeuke Track Separation 57mm 545/159-145"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.244094 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.244094 0.000000
+ END$SEGS
+TURNOUT TT "Zeuke Track Buffer 82mm 545/159-110"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 2.244094 0.000000
+ L3 9127187 1.000000 2.244094 0.000000 0 3.244094 0.000000 0
+ END$SEGS
+TURNOUT TT "Zeuke Track Uncopler 114mm 545/159-142"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.488189 0.000000
+ L3 9127187 0.400000 0.488189 0.000000 0 4.000000 0.000000 0
+ END$SEGS
+
+
+SUBCONTENTS Zeuke TT-Scale Track - Turnouts
+TURNOUT TT "Zeuke Track Left Turnout R286 22.5d 545/159-109L"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ E 4.308955 0.857104 67.500000
+ S 0 0.000000 0.000000 0.000000 4.488189 0.000000
+ C 0 0 11.259843 0.000000 11.259843 157.500000 22.500000
+ END$SEGS
+TURNOUT TT "Zeuke Track Right Turnout R286 22.5d 545/159-109R"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ E 4.308955 -0.857104 112.500000
+ S 0 0.000000 0.000000 0.000000 4.488189 0.000000
+ C 0 0 11.259843 0.000000 -11.259843 0.000000 22.500000
+ END$SEGS
+TURNOUT TT "Zeuke Track Left Turnout R286 22.5d 545/159-108L"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ E 4.308955 0.857104 67.500000
+ S 0 0.000000 0.000000 0.000000 4.488189 0.000000
+ C 0 0 11.259843 0.000000 11.259843 157.500000 22.500000
+ END$SEGS
+TURNOUT TT "Zeuke Track Right Turnout R286 22.5d 545/159-108R"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ E 4.308955 -0.857104 112.500000
+ S 0 0.000000 0.000000 0.000000 4.488189 0.000000
+ C 0 0 11.259843 0.000000 -11.259843 0.000000 22.500000
+ END$SEGS
+
+
+SUBCONTENTS Zeuke TT-Scale Track - Crossings
+TURNOUT TT "Zeuke Track Crossing 114mm 22.5d 545/159-112"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.488189 0.000000 90.000000
+ E 0.170820 0.858774 292.500000
+ E 4.317369 -0.858774 112.500000
+ S 0 0.000000 0.000000 0.000000 4.488189 0.000000
+ S 0 0.000000 0.170820 0.858774 4.317369 -0.858774
+ END$SEGS
diff --git a/app/lib/params/mtl-z.xtp b/app/lib/params/Z-Micro-Trains.xtp
index d56dbdd..3875da6 100644
--- a/app/lib/params/mtl-z.xtp
+++ b/app/lib/params/Z-Micro-Trains.xtp
@@ -1,7 +1,7 @@
CONTENTS Micro Trains Z Scale Micro-Track Components
SUBCONTENTS Micro-Trains Z-Scale - Micro-Track Straight Track
-TURNOUT Z "Micro-Trains Straight 110mm 990-40-901"
+TURNOUT Z "Micro-Trains Flex Track 317.5mm 990-40-901"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 12.500000 0.000000 90.000000
@@ -23,6 +23,19 @@ TURNOUT Z "Micro-Trains Straight 220mm 990-40-917"
L 11579568 0.053333 0.000000 0.300000 8.661417 0.300000
L 11579568 0.053333 0.000000 -0.300000 8.661417 -0.300000
END
+
+SUBCONTENTS Micro-Trains Z-Scale - Micro-Track Misc. Straight Track
+TURNOUT Z "Micro-Trains Custom Straight 25-220mm 990-40-9XX"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.984252 0.000000 90.000000
+ X adjustable 0.984252 8.661417
+ S 0 0 0.000000 0.000000 0.984252 0.000000
+ L 11579568 0.053333 0.000000 0.300000 0.984252 0.300000
+ L 11579568 0.053333 0.000000 -0.300000 0.984252 -0.300000
+
+ END
+
TURNOUT Z "Micro-Trains Uncoupler Track 990-40-906"
P "Normal" 1
E 0.000000 0.000000 270.000000
@@ -52,7 +65,7 @@ TURNOUT Z "Micro-Trains Straight Feeder Track 990-40-905"
END
SUBCONTENTS Micro-Trains Z-Scale - Micro-Track Curve Track
-TURNOUT Z "Micro-Trains Curved 195mm 45° 990-40-904"
+TURNOUT Z "Micro-Trains Curved 195mm 45d 990-40-904"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 5.428575 -2.248590 135.000000
@@ -60,7 +73,7 @@ TURNOUT Z "Micro-Trains Curved 195mm 45° 990-40-904"
A 11579568 0.053333 7.977165 0.000000 -7.677165 0.000000 45.000000
A 11579568 0.053333 7.377165 0.000000 -7.677165 0.000000 45.000000
END
-TURNOUT Z "Micro-Trains Curved 195mm 30° 990-40-903"
+TURNOUT Z "Micro-Trains Curved 195mm 30d 990-40-903"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.838583 -1.028545 120.000000
@@ -68,7 +81,7 @@ TURNOUT Z "Micro-Trains Curved 195mm 30° 990-40-903"
A 11579568 0.053333 7.977165 0.000000 -7.677165 0.000000 30.000000
A 11579568 0.053333 7.377165 0.000000 -7.677165 0.000000 30.000000
END
-TURNOUT Z "Micro-Trains Curved 220mm 45° 990-40-913"
+TURNOUT Z "Micro-Trains Curved 220mm 45d 990-40-913"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 6.124547 -2.536870 135.000000
@@ -76,7 +89,7 @@ TURNOUT Z "Micro-Trains Curved 220mm 45° 990-40-913"
A 11579568 0.053333 8.961417 0.000000 -8.661417 0.000000 45.000000
A 11579568 0.053333 8.361417 0.000000 -8.661417 0.000000 45.000000
END
-TURNOUT Z "Micro-Trains Curved 490mm 13° 990-40-912"
+TURNOUT Z "Micro-Trains Curved 490mm 13d 990-40-912"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 4.339607 -0.494436 103.000000
diff --git a/app/lib/params/Z-Rokuhan.xtp b/app/lib/params/Z-Rokuhan.xtp
index 8a0f782..49ee073 100644
--- a/app/lib/params/Z-Rokuhan.xtp
+++ b/app/lib/params/Z-Rokuhan.xtp
@@ -1,1178 +1,1183 @@
-CONTENTS Rokuhan Z Scale Track Components
-#http://www.rokuhan.com
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Rokuhan Z-Scale - Straight Track W/O Bed
-TURNOUT Z "Rokuhan Straight Track W/O Bed 55mm R091"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.165354 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.165354 0.000000
-END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Rokuhan Z-Scale - Curve Track W/O Bed
-TURNOUT Z "Rokuhan Curved Track W/O Bed 45mm 180° R091"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.000000 0.000000 90.000000
- C 0 0 1.771654 0.000000 -1.771654 0.000000 180.000000
-END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Rokuhan Z-Scale - Straight Track
-TURNOUT Z "Rokuhan Straight Track 25mm R030"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.984252 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.984252 0.000000
- L 11579568 0.019685 0.000000 0.300000 0.984252 0.300000
- L 11579568 0.019685 0.000000 -0.300000 0.984252 -0.300000
-END
-TURNOUT Z "Rokuhan Straight Track 55mm R008"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.165354 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.165354 0.000000
- L 11579568 0.019685 0.000000 0.300000 2.165354 0.300000
- L 11579568 0.019685 0.000000 -0.300000 2.165354 -0.300000
-END
-TURNOUT Z "Rokuhan Straight Track 110mm R001"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.330709 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- L 11579568 0.019685 0.000000 0.300000 4.330709 0.300000
- L 11579568 0.019685 0.000000 -0.300000 4.330709 -0.300000
-END
-TURNOUT Z "Rokuhan Straight Track w/o Ballast 110mm R045"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.330709 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
-END
-TURNOUT Z "Rokuhan Straight Track 112.8mm R036"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.440945 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.440945 0.000000
- L 11579568 0.019685 0.000000 0.300000 4.440945 0.300000
- L 11579568 0.019685 0.000000 -0.300000 4.440945 -0.300000
-END
-TURNOUT Z "Rokuhan Straight Track 220mm R009"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.661417 0.000000 90.000000
- S 0 0 0.000000 0.000000 8.661417 0.000000
- L 11579568 0.019685 0.000000 0.300000 8.661417 0.300000
- L 11579568 0.019685 0.000000 -0.300000 8.661417 -0.300000
-END
-TURNOUT Z "Rokuhan Straight Track 440mm R083"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 17.322835 0.000000 90.000000
- S 0 0 0.000000 0.000000 17.322835 0.000000
- L 11579568 0.019685 0.000000 0.300000 17.322835 0.300000
- L 11579568 0.019685 0.000000 -0.300000 17.322835 -0.300000
-END
-TURNOUT Z "Rokuhan Straight Flex 135mm R017"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.314961 0.000000 90.000000
- S 0 0 0.000000 0.000000 5.314961 0.000000
- L 11579568 0.019685 0.000000 0.300000 5.314961 0.300000
- L 11579568 0.019685 0.000000 -0.300000 5.314961 -0.300000
-END
-TURNOUT Z "Rokuhan Straight Flex 330mm R016"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 12.992126 0.000000 90.000000
- S 0 0 0.000000 0.000000 12.992126 0.000000
- L 11579568 0.019685 0.000000 0.300000 12.992126 0.300000
- L 11579568 0.019685 0.000000 -0.300000 12.992126 -0.300000
-END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Rokuhan Z-Scale - Misc Track
-TURNOUT Z "Rokuhan Insulated Rail Joiner 1mm A013"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.039370 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.039370 0.000000
- L 11579568 0.019685 0.000000 0.300000 0.039370 0.300000
- L 11579568 0.019685 0.000000 -0.300000 0.039370 -0.300000
- L 33023 0.039370 0.019685 -0.300000 0.019685 0.300000
-END
-TURNOUT Z "Rokuhan Bumper Track R013"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 0.761535 0.000000
- L 11579568 0.019685 0.000000 0.300000 1.141732 0.300000
- L 11579568 0.019685 0.000000 -0.300000 1.141732 -0.300000
- L 11579568 0.019685 1.141732 0.300000 1.141732 -0.300000
-END
-TURNOUT Z "Rokuhan Straight 55mm Isolation Break R021"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.165354 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.165354 0.000000
- L 11579568 0.019685 0.000000 0.300000 2.165354 0.300000
- L 11579568 0.019685 0.000000 -0.300000 2.165354 -0.300000
- L 33023 0.039370 1.082627 0.150000 1.082627 -0.150000
-END
-TURNOUT Z "Rokuhan Straight 55mm Feeder R024"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.165354 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.165354 0.000000
- L 11579568 0.019685 0.000000 0.300000 2.165354 0.300000
- L 11579568 0.019685 0.000000 -0.300000 2.165354 -0.300000
- L 11579568 0.039370 1.000000 0.1500000 1.000000 -0.450000
- L 11579568 0.039370 1.165254 -0.1500000 1.165254 -0.450000
-END
-TURNOUT Z "Rokuhan Bumper Track(Euro) R029"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 0.761535 0.000000
- L 11579568 0.019685 0.000000 0.300000 1.141732 0.300000
- L 11579568 0.019685 0.000000 -0.300000 1.141732 -0.300000
- L 11579568 0.019685 1.141732 0.300000 1.141732 -0.300000
-END
-TURNOUT Z "Rokuhan Adjustable Track 100-120mm R031"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.937008 0.000000 90.000000
- X adjustable 3.937008 4.724409
- S 0 0 0.000000 0.000000 3.937008 0.000000
- L 11579568 0.019685 0.000000 0.300000 3.937008 0.300000
- L 11579568 0.019685 0.000000 -0.300000 3.937008 -0.300000
-END
-TURNOUT Z "Rokuhan Custom Track 25-220mm R0XX"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.984252 0.000000 90.000000
- X adjustable 0.984252 8.661417
- S 0 0 0.000000 0.000000 0.984252 0.000000
- L 11579568 0.019685 0.000000 0.300000 0.984252 0.300000
- L 11579568 0.019685 0.000000 -0.300000 0.984252 -0.300000
-END
-TURNOUT Z "Rokuhan Uncoupler Track(American) R037"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.165354 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.165354 0.000000
- L 11579568 0.019685 0.000000 0.300000 2.165354 0.300000
- L 11579568 0.019685 0.000000 -0.300000 2.165354 -0.300000
- L 8421504 0.200000 0.582677 0.000000 1.582677 0.000000
-END
-TURNOUT Z "Rokuhan Uncoupler Track(Euro/Arnold) R077"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.165354 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.165354 0.000000
- L 11579568 0.019685 0.000000 0.300000 2.165354 0.300000
- L 11579568 0.019685 0.000000 -0.300000 2.165354 -0.300000
- L 8421504 0.200000 0.582677 0.000000 1.582677 0.000000
-END
-TURNOUT Z "Rokuhan 110mm Point Rail(Left) R039"
- P "Normal" 1
- E 4.330709 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- L 11579568 0.019685 0.500000 0.300000 4.330709 0.300000
- L 11579568 0.019685 0.000000 -0.300000 4.330709 -0.300000
-END
-TURNOUT Z "Rokuhan 110mm Point Rail(Right) R040"
- P "Normal" 1
- E 4.330709 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- L 11579568 0.019685 0.000000 0.300000 4.330709 0.300000
- L 11579568 0.019685 0.500000 -0.300000 4.330709 -0.300000
-END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Rokuhan Z-Scale - Curve Track
-TURNOUT Z "Rokuhan Curved Track 45mm 45° R046"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.252748 -0.518905 135.000000
- C 0 0 1.771654 0.000000 -1.771654 0.000000 45.000000
- A 11579568 0.019685 2.217428 0.000000 -1.771654 0.000000 45.000000
- A 11579568 0.019685 1.325880 0.000000 -1.771654 0.000000 45.000000
-END
-TURNOUT Z "Rokuhan Curved Track 70mm 45° R018"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.948719 -0.807186 135.000000
- C 0 0 2.755906 0.000000 -2.755906 0.000000 45.000000
- A 11579568 0.019685 3.055906 0.000000 -2.755906 0.000000 45.000000
- A 11579568 0.019685 2.455906 0.000000 -2.755906 0.000000 45.000000
-END
-TURNOUT Z "Rokuhan Curved Track 95mm 45° R010"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.644691 -1.095467 135.000000
- C 0 0 3.740157 0.000000 -3.740157 0.000000 45.000000
- A 11579568 0.019685 4.040157 0.000000 -3.740157 0.000000 45.000000
- A 11579568 0.019685 3.440157 0.000000 -3.740157 0.000000 45.000000
-END
-TURNOUT Z "Rokuhan Curved Track 120mm 45° R011"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.340662 -1.383747 135.000000
- C 0 0 4.724409 0.000000 -4.724409 0.000000 45.000000
- A 11579568 0.019685 5.024409 0.000000 -4.724409 0.000000 45.000000
- A 11579568 0.019685 4.424409 0.000000 -4.724409 0.000000 45.000000
-END
-TURNOUT Z "Rokuhan Curved Track 127mm 26° R019"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.191856 -0.506030 116.000000
- C 0 0 5.000000 0.000000 -5.000000 0.000000 26.000000
- A 11579568 0.019685 5.300000 0.000000 -5.000000 0.000000 26.000000
- A 11579568 0.019685 4.700000 0.000000 -5.000000 0.000000 26.000000
-END
-TURNOUT Z "Rokuhan Curved Track 145mm 45° R005"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.036633 -1.672028 135.000000
- C 0 0 5.708661 0.000000 -5.708661 0.000000 45.000000
- A 11579568 0.019685 6.008661 0.000000 -5.708661 0.000000 45.000000
- A 11579568 0.019685 5.408661 0.000000 -5.708661 0.000000 45.000000
-END
-TURNOUT Z "Rokuhan Curved Track 170mm 45° R003"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.732604 -1.960309 135.000000
- C 0 0 6.692913 0.000000 -6.692913 0.000000 45.000000
- A 11579568 0.019685 6.992913 0.000000 -6.692913 0.000000 45.000000
- A 11579568 0.019685 6.392913 0.000000 -6.692913 0.000000 45.000000
-END
-TURNOUT Z "Rokuhan Curved Track 195mm 30° R032"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.838583 -1.028545 120.000000
- C 0 0 7.677165 0.000000 -7.677165 0.000000 30.000000
- A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 30.000000
- A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan SuperElevated Curved Track 195mm 30° R064"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.838583 -1.028545 120.000000
- C 0 0 7.677165 0.000000 -7.677165 0.000000 30.000000
- A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 30.000000
- A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan Curved Track 195mm 45° R002"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.428575 -2.248590 135.000000
- C 0 0 7.677165 0.000000 -7.677165 0.000000 45.000000
- A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 45.000000
- A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 45.000000
-END
-TURNOUT Z "Rokuhan Curved Track 220mm 30° R033"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.330709 -1.160410 120.000000
- C 0 0 8.661417 0.000000 -8.661417 0.000000 30.000000
- A 11579568 0.019685 8.961417 0.000000 -8.661417 0.000000 30.000000
- A 11579568 0.019685 8.361417 0.000000 -8.661417 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan SuperElevated Curved Track 220mm 30° R065"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.330709 -1.160410 120.000000
- C 0 0 8.661417 0.000000 -8.661417 0.000000 30.000000
- A 11579568 0.019685 8.961417 0.000000 -8.661417 0.000000 30.000000
- A 11579568 0.019685 8.361417 0.000000 -8.661417 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan Curved Track 220mm 45° R004"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.124547 -2.536870 135.000000
- C 0 0 8.661417 0.000000 -8.661417 0.000000 45.000000
- A 11579568 0.019685 8.961417 0.000000 -8.661417 0.000000 45.000000
- A 11579568 0.019685 8.361417 0.000000 -8.661417 0.000000 45.000000
-END
-TURNOUT Z "Rokuhan Curved Track 245mm 30° R014"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.822835 -1.292275 120.000000
- C 0 0 9.645669 0.000000 -9.645669 0.000000 30.000000
- A 11579568 0.019685 9.945669 0.000000 -9.645669 0.000000 30.000000
- A 11579568 0.019685 9.345669 0.000000 -9.645669 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan SuperElevated Curved Track 245mm 30° R073"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.822835 -1.292275 120.000000
- C 0 0 9.645669 0.000000 -9.645669 0.000000 30.000000
- A 11579568 0.019685 9.945669 0.000000 -9.645669 0.000000 30.000000
- A 11579568 0.019685 9.345669 0.000000 -9.645669 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan Curved Track 270mm 30° R015"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.314961 -1.4241396 120.000000
- C 0 0 10.629921 0.000000 -10.629921 0.000000 30.000000
- A 11579568 0.019685 10.929921 0.000000 -10.629921 0.000000 30.000000
- A 11579568 0.019685 10.329921 0.000000 -10.629921 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan SuperElevated Curved Track 270mm 30° R074"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.314961 -1.4241396 120.000000
- C 0 0 10.629921 0.000000 -10.629921 0.000000 30.000000
- A 11579568 0.019685 10.929921 0.000000 -10.629921 0.000000 30.000000
- A 11579568 0.019685 10.329921 0.000000 -10.629921 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan Curved Track 490mm 13° R012"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.339607 -0.494436 103.000000
- C 0 0 19.291339 0.000000 -19.291339 0.000000 13.000000
- A 11579568 0.019685 19.591339 0.000000 -19.291339 0.000000 13.000000
- A 11579568 0.019685 18.991339 0.000000 -19.291339 0.000000 13.000000
-END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Rokuhan Z-Scale - Turnouts
-TURNOUT Z "Rokuhan Double Crossover 220mm Turnout R078"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
- E 0.000000 0.000000 270.000000
- E 8.661417 0.000000 90.000000
- E 0.000000 0.984252 270.000000
- E 8.661417 0.984252 90.000000
- S 0 0.000000 0.000000 0.000000 0.453455 0.000000
- S 0 0.000000 0.453455 0.000000 8.207962 0.000000
- S 0 0.000000 8.207962 0.000000 8.661417 0.000000
- S 0 0.000000 0.000000 0.984252 0.453455 0.984252
- S 0 0.000000 0.453455 0.984252 8.207962 0.984252
- S 0 0.000000 8.207962 0.984252 8.661417 0.984252
- C 0 0.000000 -15.453285 0.453475 15.453285 166.420155 13.579921
- S 0 0.000000 4.081906 0.432021 4.579511 0.552231
- C 0 0.000000 15.453285 8.207982 -14.469028 346.420155 13.579921
- C 0 0.000000 15.453285 0.453393 -14.469033 0.000076 13.579921
- S 0 0.000000 4.081906 0.552231 4.579511 0.432021
- C 0 0.000000 -15.453285 8.207982 15.453280 180.000076 13.579921
- L3 11579568 0.019685 -0.000000 -0.300000 0 8.661417 -0.300000 0
- L3 11579568 0.019685 0.000000 0.300000 0 0.453455 0.300000 0
- L3 11579568 0.019685 8.207962 0.300000 0 8.661417 0.300000 0
- L3 11579568 0.019685 -0.000000 0.684252 0 0.453454 0.684252 0
- L3 11579568 0.019685 0.000000 1.284252 0 8.661417 1.284252 0
- L3 11579568 0.019685 8.207962 0.684252 0 8.661417 0.684252 0
- L3 11579568 0.019685 4.117129 0.286216 0 4.334831 0.338807 0
- L3 11579568 0.019685 4.326586 0.645445 0 4.544288 0.698036 0
- L3 11579568 0.019685 4.326585 0.338807 0 4.544288 0.286216 0
- L3 11579568 0.019685 4.117129 0.698036 0 4.334831 0.645445 0
- A3 11579568 0.019685 15.153285 0.453455 15.453285 0 171.000000 9.000000
- A3 11579568 0.019685 15.153285 0.453455 -14.449033 0 0.000000 9.000000
- A3 11579568 0.019685 15.153285 8.207962 -14.449033 0 351.000000 9.000000
- A3 11579568 0.019685 15.153285 8.207962 15.453285 0 180.000010 9.000000
-END
-TURNOUT Z "Rokuhan Left 110mm R490 13° Turnout R039"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 4.330709 0.000000 90.000000
- E 4.339607 0.494436 77.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- C 0 0 19.291339 0.000000 19.291339 167.000000 13.000000
- L 11579568 0.019685 0.000000 -0.300000 4.330709 -0.300000
- A 11579568 0.019685 18.991339 0.000000 19.291339 167.000000 13.000000
-END
-TURNOUT Z "Rokuhan Right 110mm R490 13° Turnout R040"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 4.330709 0.000000 90.000000
- E 4.339607 -0.494436 103.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- C 0 0 19.291339 0.000000 -19.291339 0.000000 13.000000
- L 11579568 0.019685 0.000000 0.300000 4.330709 0.300000
- A 11579568 0.019685 18.991339 0.000000 -19.291339 0.000000 13.000000
-END
-TURNOUT Z "Rokuhan Left 55mm R127 26° Turnout R022"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 2.165354 0.000000 90.000000
- E 2.191856 0.506030 64.000000
- S 0 0 0.000000 0.000000 2.165354 0.000000
- C 0 0 5.000000 0.000000 5.000000 154.000000 26.000000
- L 11579568 0.019685 0.000000 -0.300000 2.165354 -0.300000
- A 11579568 0.019685 4.700000 0.000000 5.000000 154.000000 26.000000
-END
-TURNOUT Z "Rokuhan Right 55mm R127 26° Turnout R023"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 2.165354 0.000000 90.000000
- E 2.191856 -0.506030 116.000000
- S 0 0 0.000000 0.000000 2.165354 0.000000
- C 0 0 5.000000 0.000000 -5.000000 0.000000 26.000000
- L 11579568 0.019685 0.000000 0.300000 2.165354 0.300000
- A 11579568 0.019685 4.700000 0.000000 -5.000000 0.000000 26.000000
-END
-TURNOUT Z "Rokuhan Double Slip 112.8mm Turnout R034/35" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 7 6
- P "Slip2" 4 8 3
- E 0.000000 0.000000 270.000000
- E 4.440945 0.000000 90.000000
- E 0.056910 0.499494 283.000000
- E 4.384035 -0.499494 103.000000
- S 0 0.000000 0.000000 0.000000 0.512072 0.000000
- S 0 0.000000 0.512072 0.000000 3.928873 0.000000
- S 0 0.000000 3.928873 0.000000 4.440945 0.000000
- S 0 0.000000 0.056910 0.499494 0.555748 0.384323
- S 0 0.000000 0.555748 0.384323 3.885197 -0.384323
- S 0 0.000000 3.885197 -0.384323 4.384035 -0.499494
- C 0 0.000000 14.994770 0.512012 -14.994770 0.000000 13.000000
- C 0 0.000000 -14.994770 3.928893 14.994766 180.000000 13.000000
- L 11579568 0.019685 -0.000001 -0.300000 0.512071 -0.299999 0
- L 11579568 0.019685 3.928873 0.300000 4.440945 0.300001 0
- L 11579568 0.019685 0.124398 0.791805 0.623237 0.676634 0
- L 11579568 0.019685 3.817708 -0.676633 4.316546 -0.791804 0
- A 11579568 0.019685 14.694770 0.512012 -14.994770 0.000000 13.000000
- A 11579568 0.019685 14.694770 3.928893 14.994766 180.000000 13.000000
-END
-TURNOUT Z "Rokuhan Left Curve R195/R220 30° Turnout R026"
- P "Normal" 2 3
- P "Reverse" 1
- E 0.000000 0.000000 270.000000
- E 4.822835 1.028545 60.000000
- E 3.838583 1.028545 60.000000
- C 0 0 -7.677165 0.000000 7.677165 150.000000 30.000000
- S 0 0.000000 0.000000 0.000000 0.984252 0.000000
- C 0 0 -7.677165 0.984252 7.677165 150.000000 30.000000
- A 11579568 0.019685 7.377165 0.000000 7.677165 150.000000 30.000000
- L 11579568 0.019685 0.000000 -0.300000 0.984252 -0.300000
- A 11579568 0.019685 7.977165 0.984252 7.677165 150.000000 30.000000
-END
-TURNOUT Z "Rokuhan Right Curve R220/R195 30° Turnout R027"
- P "Normal" 2 3
- P "Reverse" 1
- E 0.000000 0.000000 270.000000
- E 4.822835 -1.028545 120.000000
- E 3.838583 -1.028545 120.000000
- C 0 0 7.677165 0.000000 -7.677165 0.000000 30.000000
- S 0 0.000000 0.000000 0.000000 0.984252 0.000000
- C 0 0 7.677165 0.984252 -7.677165 0.000000 30.000000
- A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 30.000000
- L 11579568 0.019685 0.000000 0.300000 0.984252 0.300000
- A 11579568 0.019685 7.977165 0.984252 -7.677165 0.000000 30.000000
-END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Rokuhan Z-Scale - Crossings
-TURNOUT Z "Rokuhan Crossing 112.8mm 13° R020A"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.440945 0.000000 90.000000
- E 0.056910 0.499494 283.000000
- E 4.384035 -0.499494 103.000000
- S 0 0.000000 0.000000 0.000000 4.440945 0.000000
- S 0 0.000000 0.056910 0.499494 4.384035 -0.499494
- L 11579568 0.019685 -0.000001 -0.300000 2.220472 -0.299997
- L 11579568 0.019685 2.220472 0.300003 4.440945 0.300006
- L 11579568 0.019685 2.152986 -0.292311 4.316549 -0.791805
- L 11579568 0.019685 0.124395 0.791805 2.287958 0.292311
-END
-TURNOUT Z "Rokuhan Straight 53.6mm R020B"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.110236 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.110236 0.000000
- L 11579568 0.019685 0.000000 0.300000 2.110236 0.300000
- L 11579568 0.019685 0.000000 -0.300000 2.110236 -0.300000
-END
-TURNOUT Z "Rokuhan Crossing 25mm 90° R025A"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 0.984252 0.000000 90.000000
- E 0.492127 0.492126 360.000000
- E 0.492125 -0.492126 180.000000
- S 0 0.000000 0.000000 0.000000 0.984252 0.000000
- S 0 0.000000 0.492127 0.492126 0.492125 -0.492126
- L3 11579568 0.019685 -0.000001 -0.300000 0 0.184546 -0.300000 0
- L3 11579568 0.019685 0.799704 -0.299999 0 0.984251 -0.299999 0
- L3 11579568 0.019685 0.000000 0.300000 0 0.184547 0.300000 0
- L3 11579568 0.019685 0.799705 0.300001 0 0.984252 0.300001 0
- L3 11579568 0.019685 0.192127 0.492126 0 0.192127 0.307579 0
- L3 11579568 0.019685 0.192125 -0.307578 0 0.192125 -0.492126 0
- L3 11579568 0.019685 0.792127 0.492126 0 0.792127 0.307579 0
- L3 11579568 0.019685 0.792125 -0.307578 0 0.792125 -0.492126 0
-END
-TURNOUT Z "Rokuhan Straight 25mm R025B"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 0.984252 0.000000 90.000000
- S 0 0 0.000000 0.000000 0.984252 0.000000
- L 11579568 0.019685 0.000000 0.300000 0.984252 0.300000
- L 11579568 0.019685 0.000000 -0.300000 0.984252 -0.300000
-END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Rokuhan Z-Scale - Shinkansen Viaduct System Straight Track
-TURNOUT Z "Rokuhan Viaduct Straight 110mm S010"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.330709 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- L 11579568 0.019685 0.000000 0.300000 4.330709 0.300000
- L 11579568 0.019685 0.000000 -0.300000 4.330709 -0.300000
-END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Rokuhan Z-Scale - Shinkansen Viaduct System Double Straight Track
-TURNOUT Z "Rokuhan Viaduct Double Straight 110mm S019"
-# Move non-track segs to after track segs
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.330709 0.000000 90.000000
- E 0.000000 0.984252 270.000000
- E 4.330709 0.984252 90.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- S 0 0 0.000000 0.984252 4.330709 0.984252
- L 11579568 0.019685 0.000000 0.300000 4.330709 0.300000
- L 11579568 0.019685 0.000000 -0.300000 4.330709 -0.300000
- L 11579568 0.019685 0.000000 1.284252 4.330709 1.284252
- L 11579568 0.019685 0.000000 0.684252 4.330709 0.684252
-END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Rokuhan Z-Scale - Shinkansen Viaduct System Curve Track
-TURNOUT Z "Rokuhan Viaduct Curved 195mm 30° S011"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.838583 -1.028545 120.000000
- C 0 0 7.677165 0.000000 -7.677165 0.000000 30.000000
- A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 30.000000
- A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan Viaduct Curved 195mm 45° R0x"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.428575 -2.248590 135.000000
- C 0 0 7.677165 0.000000 -7.677165 0.000000 45.000000
- A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 45.000000
- A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 45.000000
-END
-TURNOUT Z "Rokuhan Viaduct Curved 220mm 30° S012"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.330709 -1.160410 120.000000
- C 0 0 8.661417 0.000000 -8.661417 0.000000 30.000000
- A 11579568 0.019685 8.961417 0.000000 -8.661417 0.000000 30.000000
- A 11579568 0.019685 8.361417 0.000000 -8.661417 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan Viaduct Curved 220mm 45° R0x"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.124547 -2.536870 135.000000
- C 0 0 8.661417 0.000000 -8.661417 0.000000 45.000000
- A 11579568 0.019685 8.961417 0.000000 -8.661417 0.000000 45.000000
- A 11579568 0.019685 8.361417 0.000000 -8.661417 0.000000 45.000000
-END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Rokuhan Z-Scale - Shinkansen Viaduct System Curve Double Track
-TURNOUT Z "Rokuhan Viaduct Curved 195/220mm 30° S013"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 3.838583 -1.028545 120.000000
- E 0.000000 0.984252 270.000000
- E 4.330709 -0.176158 120.000000
- C 0 0 7.677165 0.000000 -7.677165 0.000000 30.000000
- C 0 0 8.661417 0.000000 -7.677165 0.000000 30.000000
- A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 30.000000
- A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 30.000000
- A 11579568 0.019685 8.961417 0.000000 -7.677165 0.000000 30.000000
- A 11579568 0.019685 8.361417 0.000000 -7.677165 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan Viaduct Curved 195/220mm 45° R0x"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 5.428575 -2.248590 135.000000
- E 0.000000 0.984000 270.000000
- E 6.124547 -1.552618 135.000000
- C 0 0 7.677165 0.000000 -7.677165 0.000000 45.000000
- C 0 0 8.661417 0.000000 -7.677165 0.000000 45.000000
- A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 45.000000
- A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 45.000000
- A 11579568 0.019685 8.961417 0.000000 -7.677165 0.000000 45.000000
- A 11579568 0.019685 8.361417 0.000000 -7.677165 0.000000 45.000000
-END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Rokuhan Z-Scale - Straight PC Track
-TURNOUT Z "Rokuhan Straight PC Track 55mm R048"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.165354 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.165354 0.000000
- L 11579568 0.019685 0.000000 0.300000 2.165354 0.300000
- L 11579568 0.019685 0.000000 -0.300000 2.165354 -0.300000
-END
-TURNOUT Z "Rokuhan Straight PC Track 110mm R049"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.330709 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- L 11579568 0.019685 0.000000 0.300000 4.330709 0.300000
- L 11579568 0.019685 0.000000 -0.300000 4.330709 -0.300000
-END
-TURNOUT Z "Rokuhan Straight PC Track 112.8mm R038"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.440945 0.000000 90.000000
- S 0 0 0.000000 0.000000 4.440945 0.000000
- L 11579568 0.019685 0.000000 0.300000 4.440945 0.300000
- L 11579568 0.019685 0.000000 -0.300000 4.440945 -0.300000
-END
-TURNOUT Z "Rokuhan Straight PC Track 220mm R050"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.661417 0.000000 90.000000
- S 0 0 0.000000 0.000000 8.661417 0.000000
- L 11579568 0.019685 0.000000 0.300000 8.661417 0.300000
- L 11579568 0.019685 0.000000 -0.300000 8.661417 -0.300000
-END
-TURNOUT Z "Rokuhan Straight PC Track 440mm R084"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 17.322835 0.000000 90.000000
- S 0 0 0.000000 0.000000 17.322835 0.000000
- L 11579568 0.019685 0.000000 0.300000 17.322835 0.300000
- L 11579568 0.019685 0.000000 -0.300000 17.322835 -0.300000
-END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Rokuhan Z-Scale - Curve PC Track
-TURNOUT Z "Rokuhan Curved PC Track 195mm 30° R051"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.838583 -1.028545 120.000000
- C 0 0 7.677165 0.000000 -7.677165 0.000000 30.000000
- A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 30.000000
- A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan SuperElevated Curved PC Track 195mm 30° R066"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.838583 -1.028545 120.000000
- C 0 0 7.677165 0.000000 -7.677165 0.000000 30.000000
- A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 30.000000
- A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan Curved PC Track 220mm 30° R052"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.330709 -1.160410 120.000000
- C 0 0 8.661417 0.000000 -8.661417 0.000000 30.000000
- A 11579568 0.019685 8.961417 0.000000 -8.661417 0.000000 30.000000
- A 11579568 0.019685 8.361417 0.000000 -8.661417 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan SuperElevated Curved PC Track 220mm 30° R067"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.330709 -1.160410 120.000000
- C 0 0 8.661417 0.000000 -8.661417 0.000000 30.000000
- A 11579568 0.019685 8.961417 0.000000 -8.661417 0.000000 30.000000
- A 11579568 0.019685 8.361417 0.000000 -8.661417 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan Curved PC Track 245mm 30° R053"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.822835 -1.292275 120.000000
- C 0 0 9.645669 0.000000 -9.645669 0.000000 30.000000
- A 11579568 0.019685 9.945669 0.000000 -9.645669 0.000000 30.000000
- A 11579568 0.019685 9.345669 0.000000 -9.645669 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan SuperElevated Curved PC Track 245mm 30° R075"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.822835 -1.292275 120.000000
- C 0 0 9.645669 0.000000 -9.645669 0.000000 30.000000
- A 11579568 0.019685 9.945669 0.000000 -9.645669 0.000000 30.000000
- A 11579568 0.019685 9.345669 0.000000 -9.645669 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan SuperElevated Curved PC Track 270mm 30° R076"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.314961 -1.4241396 120.000000
- C 0 0 10.629921 0.000000 -10.629921 0.000000 30.000000
- A 11579568 0.019685 10.929921 0.000000 -10.629921 0.000000 30.000000
- A 11579568 0.019685 10.329921 0.000000 -10.629921 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan Curved PC Track 270mm 30° R054"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.314961 -1.4241396 120.000000
- C 0 0 10.629921 0.000000 -10.629921 0.000000 30.000000
- A 11579568 0.019685 10.929921 0.000000 -10.629921 0.000000 30.000000
- A 11579568 0.019685 10.329921 0.000000 -10.629921 0.000000 30.000000
-END
-TURNOUT Z "Rokuhan Curved PC Track 490mm 13° R059"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.339607 -0.494436 103.000000
- C 0 0 19.291339 0.000000 -19.291339 0.000000 13.000000
- A 11579568 0.019685 19.591339 0.000000 -19.291339 0.000000 13.000000
- A 11579568 0.019685 18.991339 0.000000 -19.291339 0.000000 13.000000
-END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Rokuhan Z-Scale - Turnout PC Track
-TURNOUT Z "Rokuhan Left 110mm R490 13° PC Turnout R055"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 4.330709 0.000000 90.000000
- E 4.339607 0.494436 77.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- C 0 0 19.291339 0.000000 19.291339 167.000000 13.000000
- L 11579568 0.019685 0.000000 -0.300000 4.330709 -0.300000
- A 11579568 0.019685 18.991339 0.000000 19.291339 167.000000 13.000000
-END
-TURNOUT Z "Rokuhan Straight Trim Left PC Track 110mm R055A"
- P "Normal" 1
- E 4.330709 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- L 11579568 0.019685 0.500000 0.300000 4.330709 0.300000
- L 11579568 0.019685 0.000000 -0.300000 4.330709 -0.300000
-END
-TURNOUT Z "Rokuhan Right 110mm R490 13° PC Turnout R056"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 4.330709 0.000000 90.000000
- E 4.339607 -0.494436 103.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- C 0 0 19.291339 0.000000 -19.291339 0.000000 13.000000
- L 11579568 0.019685 0.000000 0.300000 4.330709 0.300000
- A 11579568 0.019685 18.991339 0.000000 -19.291339 0.000000 13.000000
-END
-TURNOUT Z "Rokuhan Straight trim Right PC Track 110mm R056A"
- P "Normal" 1
- E 4.330709 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- L 11579568 0.019685 0.000000 0.300000 4.330709 0.300000
- L 11579568 0.019685 0.500000 -0.300000 4.330709 -0.300000
-END
-TURNOUT Z "Rokuhan Double Slip PC Track 112.8mm Turnout R068/69" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 7 6
- P "Slip2" 4 8 3
- E 0.000000 0.000000 270.000000
- E 4.440945 0.000000 90.000000
- E 0.056910 0.499494 283.000000
- E 4.384035 -0.499494 103.000000
- S 0 0.000000 0.000000 0.000000 0.512072 0.000000
- S 0 0.000000 0.512072 0.000000 3.928873 0.000000
- S 0 0.000000 3.928873 0.000000 4.440945 0.000000
- S 0 0.000000 0.056910 0.499494 0.555748 0.384323
- S 0 0.000000 0.555748 0.384323 3.885197 -0.384323
- S 0 0.000000 3.885197 -0.384323 4.384035 -0.499494
- C 0 0.000000 14.994770 0.512012 -14.994770 0.000000 13.000000
- C 0 0.000000 -14.994770 3.928893 14.994766 180.000000 13.000000
- L 11579568 0.019685 -0.000001 -0.300000 0.512071 -0.299999 0
- L 11579568 0.019685 3.928873 0.300000 4.440945 0.300001 0
- L 11579568 0.019685 0.124398 0.791805 0.623237 0.676634 0
- L 11579568 0.019685 3.817708 -0.676633 4.316546 -0.791804 0
- A 11579568 0.019685 14.694770 0.512012 -14.994770 0.000000 13.000000
- A 11579568 0.019685 14.694770 3.928893 14.994766 180.000000 13.000000
-END
-TURNOUT Z "Rokuhan Double Crossover PC 220mm Turnout R082"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
- E 0.000000 0.000000 270.000000
- E 8.661417 0.000000 90.000000
- E 0.000000 0.984252 270.000000
- E 8.661417 0.984252 90.000000
- S 0 0.000000 0.000000 0.000000 0.453455 0.000000
- S 0 0.000000 0.453455 0.000000 8.207962 0.000000
- S 0 0.000000 8.207962 0.000000 8.661417 0.000000
- S 0 0.000000 0.000000 0.984252 0.453455 0.984252
- S 0 0.000000 0.453455 0.984252 8.207962 0.984252
- S 0 0.000000 8.207962 0.984252 8.661417 0.984252
- C 0 0.000000 -15.453285 0.453475 15.453285 166.420155 13.579921
- S 0 0.000000 4.081906 0.432021 4.579511 0.552231
- C 0 0.000000 15.453285 8.207982 -14.469028 346.420155 13.579921
- C 0 0.000000 15.453285 0.453393 -14.469033 0.000076 13.579921
- S 0 0.000000 4.081906 0.552231 4.579511 0.432021
- C 0 0.000000 -15.453285 8.207982 15.453280 180.000076 13.579921
- L3 11579568 0.019685 -0.000000 -0.300000 0 8.661417 -0.300000 0
- L3 11579568 0.019685 0.000000 0.300000 0 0.453455 0.300000 0
- L3 11579568 0.019685 8.207962 0.300000 0 8.661417 0.300000 0
- L3 11579568 0.019685 -0.000000 0.684252 0 0.453454 0.684252 0
- L3 11579568 0.019685 0.000000 1.284252 0 8.661417 1.284252 0
- L3 11579568 0.019685 8.207962 0.684252 0 8.661417 0.684252 0
- L3 11579568 0.019685 4.117129 0.286216 0 4.334831 0.338807 0
- L3 11579568 0.019685 4.326586 0.645445 0 4.544288 0.698036 0
- L3 11579568 0.019685 4.326585 0.338807 0 4.544288 0.286216 0
- L3 11579568 0.019685 4.117129 0.698036 0 4.334831 0.645445 0
- A3 11579568 0.019685 15.153285 0.453455 15.453285 0 171.000000 9.000000
- A3 11579568 0.019685 15.153285 0.453455 -14.449033 0 0.000000 9.000000
- A3 11579568 0.019685 15.153285 8.207962 -14.449033 0 351.000000 9.000000
- A3 11579568 0.019685 15.153285 8.207962 15.453285 0 180.000010 9.000000
-END
-
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Rokuhan Z-Scale - Bridges
-TURNOUT Z "Rokuhan Single Trk Truss Bridge 220mm(Green) R041"
- P "Normal" 1
- E 8.661417 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 8.661417 0.000000
- L 32896 0.053333 0.000000 0.375000 8.661417 0.375000
- L 32896 0.053333 0.000000 -0.375000 8.661417 -0.375000
- L 32896 0.053333 0.861412 -0.375000 0.861412 0.375000
- L 32896 0.053333 0.861412 -0.375000 2.598425 0.375000
- L 32896 0.053333 2.598425 -0.375000 0.861412 0.375000
- L 32896 0.053333 2.598425 -0.375000 2.598425 0.375000
- L 32896 0.053333 2.598425 -0.375000 4.330708 0.375000
- L 32896 0.053333 4.330708 -0.375000 2.598425 0.375000
- L 32896 0.053333 4.330708 -0.375000 4.330708 0.375000
- L 32896 0.053333 4.330708 -0.375000 6.062922 0.375000
- L 32896 0.053333 6.062922 -0.375000 4.330708 0.375000
- L 32896 0.053333 6.062922 -0.375000 6.062992 0.375000
- L 32896 0.053333 6.062922 -0.375000 7.795275 0.375000
- L 32896 0.053333 7.795275 -0.375000 6.062922 0.375000
- L 32896 0.053333 7.795275 -0.375000 7.795275 0.375000
-END
-TURNOUT Z "Rokuhan Single Trk Truss Bridge 220mm(Red) R042"
- P "Normal" 1
- E 8.661417 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 8.661417 0.000000
- L 16711680 0.053333 0.000000 0.375000 8.661417 0.375000
- L 16711680 0.053333 0.000000 -0.375000 8.661417 -0.375000
- L 16711680 0.053333 0.861412 -0.375000 0.861412 0.375000
- L 16711680 0.053333 0.861412 -0.375000 2.598425 0.375000
- L 16711680 0.053333 2.598425 -0.375000 0.861412 0.375000
- L 16711680 0.053333 2.598425 -0.375000 2.598425 0.375000
- L 16711680 0.053333 2.598425 -0.375000 4.330708 0.375000
- L 16711680 0.053333 4.330708 -0.375000 2.598425 0.375000
- L 16711680 0.053333 4.330708 -0.375000 4.330708 0.375000
- L 16711680 0.053333 4.330708 -0.375000 6.062922 0.375000
- L 16711680 0.053333 6.062922 -0.375000 4.330708 0.375000
- L 16711680 0.053333 6.062922 -0.375000 6.062992 0.375000
- L 16711680 0.053333 6.062922 -0.375000 7.795275 0.375000
- L 16711680 0.053333 7.795275 -0.375000 6.062922 0.375000
- L 16711680 0.053333 7.795275 -0.375000 7.795275 0.375000
-END
-TURNOUT Z "Rokuhan Double Trk Truss Bridge 220mm(Green) R043"
- P "Normal" 1 0 2
- E 8.661417 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- E 8.661417 0.984252 90.000000
- E 0.000000 0.984252 270.000000
- S 0 0 0.000000 0.000000 8.661417 0.000000
- S 0 0 0.000000 0.984252 8.661417 0.984252
- L 32896 0.053333 0.000000 1.359252 8.661417 1.359252
- L 32896 0.053333 0.000000 -0.375000 8.661417 -0.375000
- L 32896 0.053333 0.618673 -0.375000 0.618673 1.359252
- L 32896 0.053333 0.618673 -0.375000 1.856018 1.359252
- L 32896 0.053333 1.856018 -0.375000 0.618673 1.359252
- L 32896 0.053333 1.856018 -0.375000 1.856018 1.359252
- L 32896 0.053333 1.856018 -0.375000 3.093363 1.359252
- L 32896 0.053333 3.093363 -0.375000 1.856018 1.359252
- L 32896 0.053333 3.093363 -0.375000 3.093363 1.359252
- L 32896 0.053333 3.093363 -0.375000 4.330708 1.359252
- L 32896 0.053333 4.330708 -0.375000 3.093363 1.359252
- L 32896 0.053333 4.330708 -0.375000 4.330708 1.359252
- L 32896 0.053333 4.330708 -0.375000 5.568053 1.359252
- L 32896 0.053333 5.568053 -0.375000 4.330708 1.359252
- L 32896 0.053333 5.568053 -0.375000 5.568053 1.359252
- L 32896 0.053333 5.568053 -0.375000 6.805398 1.359252
- L 32896 0.053333 6.805398 -0.375000 5.568053 1.359252
- L 32896 0.053333 6.805398 -0.375000 6.805398 1.359252
- L 32896 0.053333 6.805398 -0.375000 8.042743 1.359252
- L 32896 0.053333 8.042743 -0.375000 6.805398 1.359252
- L 32896 0.053333 8.042743 -0.375000 8.042743 1.359252
-END
-TURNOUT Z "Rokuhan Double Trk Truss Bridge 220mm(Beige) R044"
- P "Normal" 1 0 2
- E 8.661417 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- E 8.661417 0.984252 90.000000
- E 0.000000 0.984252 270.000000
- S 0 0 0.000000 0.000000 8.661417 0.000000
- S 0 0 0.000000 0.984252 8.661417 0.984252
- L 15720651 0.053333 0.000000 1.359252 8.661417 1.359252
- L 15720651 0.053333 0.000000 -0.375000 8.661417 -0.375000
- L 15720651 0.053333 0.618673 -0.375000 0.618673 1.359252
- L 15720651 0.053333 0.618673 -0.375000 1.856018 1.359252
- L 15720651 0.053333 1.856018 -0.375000 0.618673 1.359252
- L 15720651 0.053333 1.856018 -0.375000 1.856018 1.359252
- L 15720651 0.053333 1.856018 -0.375000 3.093363 1.359252
- L 15720651 0.053333 3.093363 -0.375000 1.856018 1.359252
- L 15720651 0.053333 3.093363 -0.375000 3.093363 1.359252
- L 15720651 0.053333 3.093363 -0.375000 4.330708 1.359252
- L 15720651 0.053333 4.330708 -0.375000 3.093363 1.359252
- L 15720651 0.053333 4.330708 -0.375000 4.330708 1.359252
- L 15720651 0.053333 4.330708 -0.375000 5.568053 1.359252
- L 15720651 0.053333 5.568053 -0.375000 4.330708 1.359252
- L 15720651 0.053333 5.568053 -0.375000 5.568053 1.359252
- L 15720651 0.053333 5.568053 -0.375000 6.805398 1.359252
- L 15720651 0.053333 6.805398 -0.375000 5.568053 1.359252
- L 15720651 0.053333 6.805398 -0.375000 6.805398 1.359252
- L 15720651 0.053333 6.805398 -0.375000 8.042743 1.359252
- L 15720651 0.053333 8.042743 -0.375000 6.805398 1.359252
- L 15720651 0.053333 8.042743 -0.375000 8.042743 1.359252
-END
-TURNOUT Z "Rokuhan Double Trk Truss Bridge 220mm(Brown) R060"
- P "Normal" 1 0 2
- E 8.661417 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- E 8.661417 0.984252 90.000000
- E 0.000000 0.984252 270.000000
- S 0 0 0.000000 0.000000 8.661417 0.000000
- S 0 0 0.000000 0.984252 8.661417 0.984252
- L 8388608 0.053333 0.000000 1.359252 8.661417 1.359252
- L 8388608 0.053333 0.000000 -0.375000 8.661417 -0.375000
- L 8388608 0.053333 0.618673 -0.375000 0.618673 1.359252
- L 8388608 0.053333 0.618673 -0.375000 1.856018 1.359252
- L 8388608 0.053333 1.856018 -0.375000 0.618673 1.359252
- L 8388608 0.053333 1.856018 -0.375000 1.856018 1.359252
- L 8388608 0.053333 1.856018 -0.375000 3.093363 1.359252
- L 8388608 0.053333 3.093363 -0.375000 1.856018 1.359252
- L 8388608 0.053333 3.093363 -0.375000 3.093363 1.359252
- L 8388608 0.053333 3.093363 -0.375000 4.330708 1.359252
- L 8388608 0.053333 4.330708 -0.375000 3.093363 1.359252
- L 8388608 0.053333 4.330708 -0.375000 4.330708 1.359252
- L 8388608 0.053333 4.330708 -0.375000 5.568053 1.359252
- L 8388608 0.053333 5.568053 -0.375000 4.330708 1.359252
- L 8388608 0.053333 5.568053 -0.375000 5.568053 1.359252
- L 8388608 0.053333 5.568053 -0.375000 6.805398 1.359252
- L 8388608 0.053333 6.805398 -0.375000 5.568053 1.359252
- L 8388608 0.053333 6.805398 -0.375000 6.805398 1.359252
- L 8388608 0.053333 6.805398 -0.375000 8.042743 1.359252
- L 8388608 0.053333 8.042743 -0.375000 6.805398 1.359252
- L 8388608 0.053333 8.042743 -0.375000 8.042743 1.359252
-END
-TURNOUT Z "Rokuhan Single Trk Truss Bridge 220mm(Brown) R061"
- P "Normal" 1
- E 8.661417 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 8.661417 0.000000
- L 8388608 0.053333 0.000000 0.375000 8.661417 0.375000
- L 8388608 0.053333 0.000000 -0.375000 8.661417 -0.375000
- L 8388608 0.053333 0.861412 -0.375000 0.861412 0.375000
- L 8388608 0.053333 0.861412 -0.375000 2.598425 0.375000
- L 8388608 0.053333 2.598425 -0.375000 0.861412 0.375000
- L 8388608 0.053333 2.598425 -0.375000 2.598425 0.375000
- L 8388608 0.053333 2.598425 -0.375000 4.330708 0.375000
- L 8388608 0.053333 4.330708 -0.375000 2.598425 0.375000
- L 8388608 0.053333 4.330708 -0.375000 4.330708 0.375000
- L 8388608 0.053333 4.330708 -0.375000 6.062922 0.375000
- L 8388608 0.053333 6.062922 -0.375000 4.330708 0.375000
- L 8388608 0.053333 6.062922 -0.375000 6.062992 0.375000
- L 8388608 0.053333 6.062922 -0.375000 7.795275 0.375000
- L 8388608 0.053333 7.795275 -0.375000 6.062922 0.375000
- L 8388608 0.053333 7.795275 -0.375000 7.795275 0.375000
-END
-TURNOUT Z "Rokuhan Single Trk Deck Girder Bridge 110mm(Red) R070"
- P "Normal" 1
- E 4.330709 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- L 16711680 0.053333 0.000000 0.375000 4.330709 0.375000
- L 16711680 0.053333 0.000000 -0.375000 4.330709 -0.375000
-END
-TURNOUT Z "Rokuhan Single Trk Deck Girder Bridge 110mm(Green) R071"
- P "Normal" 1
- E 4.330709 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- L 32896 0.053333 0.000000 0.375000 4.330709 0.375000
- L 32896 0.053333 0.000000 -0.375000 4.330709 -0.375000
-END
-TURNOUT Z "Rokuhan Single Trk Deck Girder Bridge 110mm(Black) R072"
- P "Normal" 1
- E 4.330709 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- L 0 0.053333 0.000000 0.375000 4.330709 0.375000
- L 0 0.053333 0.000000 -0.375000 4.330709 -0.375000
-END
-TURNOUT Z "Rokuhan Single Trk Deck Girder Bridge(Short) 55mm(DK Red) R085"
- P "Normal" 1
- E 2.165354 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 2.165354 0.000000
- L 10223889 0.053333 0.000000 0.375000 2.165354 0.375000
- L 10223889 0.053333 0.000000 -0.375000 2.165354 -0.375000
-END
-TURNOUT Z "Rokuhan Single Trk Deck Girder Bridge(Short) 55mm(Green) R086"
- P "Normal" 1
- E 2.165354 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 2.165354 0.000000
- L 32896 0.053333 0.000000 0.375000 2.165354 0.375000
- L 32896 0.053333 0.000000 -0.375000 2.165354 -0.375000
-END
-TURNOUT Z "Rokuhan Single Trk Deck Girder Bridge(Short) 55mm(DK Grey) R087"
- P "Normal" 1
- E 2.165354 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 2.165354 0.000000
- L 8421504 0.053333 0.000000 0.375000 2.165354 0.375000
- L 8421504 0.053333 0.000000 -0.375000 2.165354 -0.375000
-END
-TURNOUT Z "Rokuhan Single Trk Iron Bridge(Short) 110mm(Red) R088"
- P "Normal" 1
- E 4.330709 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- L 16711680 0.053333 0.000000 0.375000 4.330709 0.375000
- L 16711680 0.053333 0.000000 -0.375000 4.330709 -0.375000
- L 16711680 0.053333 0.748031 -0.375000 0.748031 0.375000
- L 16711680 0.053333 0.748031 -0.375000 2.165354 0.375000
- L 16711680 0.053333 2.165354 -0.375000 0.748031 0.375000
- L 16711680 0.053333 2.165354 -0.375000 2.165354 0.375000
- L 16711680 0.053333 2.165354 -0.375000 3.582677 0.375000
- L 16711680 0.053333 3.582677 -0.375000 2.165354 0.375000
- L 16711680 0.053333 3.582677 -0.375000 3.582677 0.375000
-END
-TURNOUT Z "Rokuhan Single Trk Iron Bridge(Short) 110mm(Green) R089"
- P "Normal" 1
- E 4.330709 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- L 32896 0.053333 0.000000 0.375000 4.330709 0.375000
- L 32896 0.053333 0.000000 -0.375000 4.330709 -0.375000
- L 32896 0.053333 0.748031 -0.375000 0.748031 0.375000
- L 32896 0.053333 0.748031 -0.375000 2.165354 0.375000
- L 32896 0.053333 2.165354 -0.375000 0.748031 0.375000
- L 32896 0.053333 2.165354 -0.375000 2.165354 0.375000
- L 32896 0.053333 2.165354 -0.375000 3.582677 0.375000
- L 32896 0.053333 3.582677 -0.375000 2.165354 0.375000
- L 32896 0.053333 3.582677 -0.375000 3.582677 0.375000
-END
-TURNOUT Z "Rokuhan Single Trk Iron Bridge(Short) 110mm(DK Grey) R090"
- P "Normal" 1
- E 4.330709 0.000000 90.000000
- E 0.000000 0.000000 270.000000
- S 0 0 0.000000 0.000000 4.330709 0.000000
- L 8421504 0.053333 0.000000 0.375000 4.330709 0.375000
- L 8421504 0.053333 0.000000 -0.375000 4.330709 -0.375000
- L 8421504 0.053333 0.748031 -0.375000 0.748031 0.375000
- L 8421504 0.053333 0.748031 -0.375000 2.165354 0.375000
- L 8421504 0.053333 2.165354 -0.375000 0.748031 0.375000
- L 8421504 0.053333 2.165354 -0.375000 2.165354 0.375000
- L 8421504 0.053333 2.165354 -0.375000 3.582677 0.375000
- L 8421504 0.053333 3.582677 -0.375000 2.165354 0.375000
- L 8421504 0.053333 3.582677 -0.375000 3.582677 0.375000
-END
-##########################################################################
-##########################################################################
-
-SUBCONTENTS Rokuhan Z-Scale - Turntable
-TURNOUT Z "Rokuhan Turntable 170mm S037" 512
- P "1" 1 2 3
- P "2" 4 5 6
- P "3" 7 8 9
- P "4" 10 11 12
- P "5" 13 14 15
- P "6" 16 17 18
- P "7" 19 20 21
- P "8" 22 23 24
- P "9" 25 26 27
- P "10" 28 29 30
- P "11" 31 32 33
- P "12" 34 35 36
- E 0.000000 3.346457 0.000000
- E 0.866127 3.232429 15.000000
- E 1.673228 2.898117 30.000000
- E 2.366302 2.366302 45.000000
- E 2.898117 1.673228 60.000000
- E 3.232429 0.866127 75.000000
- E 3.346457 0.000000 90.000000
- E 3.232429 -0.866127 105.000000
- E 2.898117 -1.673228 120.000000
- E 2.366302 -2.366302 135.000000
- E 1.673228 -2.898117 150.000000
- E 0.866127 -3.232429 165.000000
- E 0.000000 -3.346457 180.000000
- E -0.866127 -3.232429 195.000000
- E -1.673228 -2.898117 210.000000
- E -2.366302 -2.366302 225.000000
- E -2.898117 -1.673228 240.000000
- E -3.232429 -0.866127 255.000000
- E -3.346457 0.000000 270.000000
- E -3.232429 0.866127 285.000000
- E -2.898117 1.673228 300.000000
- E -2.366302 2.366302 315.000000
- E -1.673228 2.898117 330.000000
- E -0.866127 3.232429 345.000000
- S 0 0.031250 0.000000 3.346457 0.000000 2.559055
- S 16777215 0.031250 0.000000 2.559055 0.000000 -2.559055
- S 0 0.031250 0.000000 -2.559055 0.000000 -3.346457
- S 0 0.031250 0.866127 3.232429 0.662332 2.471857
- S 16777215 0.031250 0.662332 2.471857 -0.662332 -2.471857
- S 0 0.031250 -0.662332 -2.471857 -0.866127 -3.232429
- S 0 0.031250 1.673228 2.898117 1.279528 2.216207
- S 16777215 0.031250 1.279528 2.216207 -1.279528 -2.216207
- S 0 0.031250 -1.279528 -2.216207 -1.673228 -2.898117
- S 0 0.031250 2.366302 2.366302 1.809525 1.809525
- S 16777215 0.031250 1.809525 1.809525 -1.809525 -1.809525
- S 0 0.031250 -1.809525 -1.809525 -2.366302 -2.366302
- S 0 0.031250 2.898117 1.673228 2.216207 1.279528
- S 16777215 0.031250 2.216207 1.279528 -2.216207 -1.279528
- S 0 0.031250 -2.216207 -1.279528 -2.898117 -1.673228
- S 0 0.031250 3.232429 0.866127 2.471857 0.662332
- S 16777215 0.031250 2.471857 0.662332 -2.471857 -0.662332
- S 0 0.031250 -2.471857 -0.662332 -3.232429 -0.866127
- S 0 0.031250 3.346457 0.000000 2.559055 0.000000
- S 16777215 0.031250 2.559055 0.000000 -2.559055 0.000000
- S 0 0.031250 -2.559055 0.000000 -3.346457 0.000000
- S 0 0.031250 3.232429 -0.866127 2.471857 -0.662332
- S 16777215 0.031250 2.471857 -0.662332 -2.471857 0.662332
- S 0 0.031250 -2.471857 0.662332 -3.232429 0.866127
- S 0 0.031250 2.898117 -1.673228 2.216207 -1.279528
- S 16777215 0.031250 2.216207 -1.279528 -2.216207 1.279528
- S 0 0.031250 -2.216207 1.279528 -2.898117 1.673228
-# S 0 0.031250 2.366302 -2.366302 1.809525 -1.809525
-# S 16777215 0.031250 1.809525 -2.366302 -1.809525 2.366302
-# S 0 0.031250 -1.809525 1.809525 -2.366302 2.366302
- S 0 0.031250 2.366302 -2.366302 1.809525 -1.809525
- S 16777215 0.031250 1.809525 -1.809525 -1.809525 1.809525
- S 0 0.031250 -1.809525 1.809525 -2.366302 2.366302
- S 0 0.031250 1.673228 -2.898117 1.279528 -2.216207
- S 16777215 0.031250 1.279528 -2.216207 -1.279528 2.216207
- S 0 0.031250 -1.279528 2.216207 -1.673228 2.898117
- S 0 0.031250 0.866127 -3.232429 0.662332 -2.471857
- S 16777215 0.031250 0.662332 -2.471857 -0.662332 2.471857
- S 0 0.031250 -0.662332 2.471857 -0.866127 3.232429
- A 0 0.031250 3.346457 0.000000 0.000000 0.000000 360.000000
- A 0 0.031250 2.559055 0.000000 0.000000 0.000000 360.000000
-END
-
-
+CONTENTS Rokuhan Z Scale Track Components
+#http://www.rokuhan.com
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Rokuhan Z-Scale - Straight Track W/O Bed
+TURNOUT Z "Rokuhan Straight Track W/O Bed 55mm R092"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.165354 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.165354 0.000000
+END$SEGS
+TURNOUT Z "Rokuhan Straight Track w/o Ballast 110mm R045"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.330709 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Rokuhan Z-Scale - Curve Track W/O Bed
+TURNOUT Z "Rokuhan Curved Track W/O Bed 45mm 180d R091"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.000000 0.000000 90.000000
+ C 0 0 1.771654 0.000000 -1.771654 0.000000 180.000000
+END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Rokuhan Z-Scale - Straight Track
+TURNOUT Z "Rokuhan Straight Track 25mm R030"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.984252 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.984252 0.000000
+ L 11579568 0.019685 0.000000 0.322835 0.984252 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 0.984252 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Straight Track 55mm R024"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.165354 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.165354 0.000000
+ L 11579568 0.019685 0.000000 0.322835 2.165354 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 2.165354 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Straight Track 110mm R001"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.330709 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+ L 11579568 0.019685 0.000000 0.322835 4.330709 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 4.330709 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Straight Track 112.8mm R036"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.440945 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.440945 0.000000
+ L 11579568 0.019685 0.000000 0.322835 4.440945 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 4.440945 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Straight Track 220mm R009"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.661417 0.000000 90.000000
+ S 0 0 0.000000 0.000000 8.661417 0.000000
+ L 11579568 0.019685 0.000000 0.322835 8.661417 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 8.661417 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Straight Track 440mm R083"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 17.322835 0.000000 90.000000
+ S 0 0 0.000000 0.000000 17.322835 0.000000
+ L 11579568 0.019685 0.000000 0.322835 17.322835 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 17.322835 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Straight Flex 135mm R017"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.314961 0.000000 90.000000
+ S 0 0 0.000000 0.000000 5.314961 0.000000
+ L 11579568 0.019685 0.000000 0.322835 5.314961 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 5.314961 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Straight Flex 330mm R016"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.992126 0.000000 90.000000
+ S 0 0 0.000000 0.000000 12.992126 0.000000
+ L 11579568 0.019685 0.000000 0.322835 12.992126 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 12.992126 -0.322835
+END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Rokuhan Z-Scale - Misc Track
+TURNOUT Z "Rokuhan Insulated Rail Joiner 1mm A013"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.039370 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.039370 0.000000
+ L 11579568 0.019685 0.000000 0.322835 0.039370 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 0.039370 -0.322835
+ L 33023 0.039370 0.019685 -0.322835 0.019685 0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Bumper Track R013"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 0.761535 0.000000
+ L 11579568 0.019685 0.000000 0.322835 1.141732 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 1.141732 -0.322835
+ L 11579568 0.019685 1.141732 0.322835 1.141732 -0.322835
+END$SEGS
+#TURNOUT Z "Rokuhan Straight 55mm Isolation Break R021"
+# P "Normal" 1
+# E 0.000000 0.000000 270.000000
+# E 2.165354 0.000000 90.000000
+# S 0 0 0.000000 0.000000 2.165354 0.000000
+# L 11579568 0.019685 0.000000 0.322835 2.165354 0.322835
+# L 11579568 0.019685 0.000000 -0.322835 2.165354 -0.322835
+# L 33023 0.039370 1.082627 0.150000 1.082627 -0.150000
+#END$SEGS
+TURNOUT Z "Rokuhan Bumper Track(Euro) R029"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 0.761535 0.000000
+ L 11579568 0.019685 0.000000 0.322835 1.141732 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 1.141732 -0.322835
+ L 11579568 0.019685 1.141732 0.322835 1.141732 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Adjustable Track 100-120mm R031"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.937008 0.000000 90.000000
+ X adjustable 3.937008 4.724409
+ S 0 0 0.000000 0.000000 3.937008 0.000000
+ L 11579568 0.019685 0.000000 0.322835 3.937008 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 3.937008 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Custom Track 25-220mm R0XX"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.984252 0.000000 90.000000
+ X adjustable 0.984252 8.661417
+ S 0 0 0.000000 0.000000 0.984252 0.000000
+ L 11579568 0.019685 0.000000 0.322835 0.984252 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 0.984252 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Uncoupler Track(American) R037"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.165354 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.165354 0.000000
+ L 11579568 0.019685 0.000000 0.322835 2.165354 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 2.165354 -0.322835
+ L 8421504 0.200000 0.582677 0.000000 1.582677 0.000000
+END$SEGS
+TURNOUT Z "Rokuhan Uncoupler Track(Euro/Arnold) R077"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.165354 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.165354 0.000000
+ L 11579568 0.019685 0.000000 0.322835 2.165354 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 2.165354 -0.322835
+ L 8421504 0.200000 0.582677 0.000000 1.582677 0.000000
+END$SEGS
+#TURNOUT Z "Rokuhan 110mm Point Rail(Left) R039"
+# P "Normal" 1
+# E 4.330709 0.000000 90.000000
+# E 0.000000 0.000000 270.000000
+# S 0 0 0.000000 0.000000 4.330709 0.000000
+# L 11579568 0.019685 0.500000 0.322835 4.330709 0.322835
+# L 11579568 0.019685 0.000000 -0.322835 4.330709 -0.322835
+#END$SEGS
+#TURNOUT Z "Rokuhan 110mm Point Rail(Right) R040"
+# P "Normal" 1
+# E 4.330709 0.000000 90.000000
+# E 0.000000 0.000000 270.000000
+# S 0 0 0.000000 0.000000 4.330709 0.000000
+# L 11579568 0.019685 0.000000 0.322835 4.330709 0.322835
+# L 11579568 0.019685 0.500000 -0.322835 4.330709 -0.322835
+#END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Rokuhan Z-Scale - Curve Track
+TURNOUT Z "Rokuhan Curved Track 45mm 45d R046"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.252748 -0.518905 135.000000
+ C 0 0 1.771654 0.000000 -1.771654 0.000000 45.000000
+ A 11579568 0.019685 2.217428 0.000000 -1.771654 0.000000 45.000000
+ A 11579568 0.019685 1.325880 0.000000 -1.771654 0.000000 45.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved Track 70mm 45d R018"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.948719 -0.807186 135.000000
+ C 0 0 2.755906 0.000000 -2.755906 0.000000 45.000000
+ A 11579568 0.019685 3.055906 0.000000 -2.755906 0.000000 45.000000
+ A 11579568 0.019685 2.455906 0.000000 -2.755906 0.000000 45.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved Track 95mm 45d R010"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.644691 -1.095467 135.000000
+ C 0 0 3.740157 0.000000 -3.740157 0.000000 45.000000
+ A 11579568 0.019685 4.040157 0.000000 -3.740157 0.000000 45.000000
+ A 11579568 0.019685 3.440157 0.000000 -3.740157 0.000000 45.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved Track 120mm 45d R011"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.340662 -1.383747 135.000000
+ C 0 0 4.724409 0.000000 -4.724409 0.000000 45.000000
+ A 11579568 0.019685 5.024409 0.000000 -4.724409 0.000000 45.000000
+ A 11579568 0.019685 4.424409 0.000000 -4.724409 0.000000 45.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved Track 127mm 26d R019"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.191856 -0.506030 116.000000
+ C 0 0 5.000000 0.000000 -5.000000 0.000000 26.000000
+ A 11579568 0.019685 5.300000 0.000000 -5.000000 0.000000 26.000000
+ A 11579568 0.019685 4.700000 0.000000 -5.000000 0.000000 26.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved Track 145mm 45d R005"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.036633 -1.672028 135.000000
+ C 0 0 5.708661 0.000000 -5.708661 0.000000 45.000000
+ A 11579568 0.019685 6.008661 0.000000 -5.708661 0.000000 45.000000
+ A 11579568 0.019685 5.408661 0.000000 -5.708661 0.000000 45.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved Track 170mm 45d R003"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.732604 -1.960309 135.000000
+ C 0 0 6.692913 0.000000 -6.692913 0.000000 45.000000
+ A 11579568 0.019685 6.992913 0.000000 -6.692913 0.000000 45.000000
+ A 11579568 0.019685 6.392913 0.000000 -6.692913 0.000000 45.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved Track 195mm 30d R032"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.838583 -1.028545 120.000000
+ C 0 0 7.677165 0.000000 -7.677165 0.000000 30.000000
+ A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 30.000000
+ A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan SuperElevated Curved Track 195mm 30d R064"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.838583 -1.028545 120.000000
+ C 0 0 7.677165 0.000000 -7.677165 0.000000 30.000000
+ A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 30.000000
+ A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved Track 195mm 45d R002"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.428575 -2.248590 135.000000
+ C 0 0 7.677165 0.000000 -7.677165 0.000000 45.000000
+ A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 45.000000
+ A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 45.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved Track 220mm 30d R033"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.330709 -1.160410 120.000000
+ C 0 0 8.661417 0.000000 -8.661417 0.000000 30.000000
+ A 11579568 0.019685 8.961417 0.000000 -8.661417 0.000000 30.000000
+ A 11579568 0.019685 8.361417 0.000000 -8.661417 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan SuperElevated Curved Track 220mm 30d R065"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.330709 -1.160410 120.000000
+ C 0 0 8.661417 0.000000 -8.661417 0.000000 30.000000
+ A 11579568 0.019685 8.961417 0.000000 -8.661417 0.000000 30.000000
+ A 11579568 0.019685 8.361417 0.000000 -8.661417 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved Track 220mm 45d R004"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.124547 -2.536870 135.000000
+ C 0 0 8.661417 0.000000 -8.661417 0.000000 45.000000
+ A 11579568 0.019685 8.961417 0.000000 -8.661417 0.000000 45.000000
+ A 11579568 0.019685 8.361417 0.000000 -8.661417 0.000000 45.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved Track 245mm 30d R014"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.822835 -1.292275 120.000000
+ C 0 0 9.645669 0.000000 -9.645669 0.000000 30.000000
+ A 11579568 0.019685 9.945669 0.000000 -9.645669 0.000000 30.000000
+ A 11579568 0.019685 9.345669 0.000000 -9.645669 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan SuperElevated Curved Track 245mm 30d R073"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.822835 -1.292275 120.000000
+ C 0 0 9.645669 0.000000 -9.645669 0.000000 30.000000
+ A 11579568 0.019685 9.945669 0.000000 -9.645669 0.000000 30.000000
+ A 11579568 0.019685 9.345669 0.000000 -9.645669 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved Track 270mm 30d R015"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.314961 -1.4241396 120.000000
+ C 0 0 10.629921 0.000000 -10.629921 0.000000 30.000000
+ A 11579568 0.019685 10.929921 0.000000 -10.629921 0.000000 30.000000
+ A 11579568 0.019685 10.329921 0.000000 -10.629921 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan SuperElevated Curved Track 270mm 30d R074"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.314961 -1.4241396 120.000000
+ C 0 0 10.629921 0.000000 -10.629921 0.000000 30.000000
+ A 11579568 0.019685 10.929921 0.000000 -10.629921 0.000000 30.000000
+ A 11579568 0.019685 10.329921 0.000000 -10.629921 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved Track 490mm 13d R012"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.339607 -0.494436 103.000000
+ C 0 0 19.291339 0.000000 -19.291339 0.000000 13.000000
+ A 11579568 0.019685 19.591339 0.000000 -19.291339 0.000000 13.000000
+ A 11579568 0.019685 18.991339 0.000000 -19.291339 0.000000 13.000000
+END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Rokuhan Z-Scale - Turnouts
+TURNOUT Z "Rokuhan Double Crossover 220mm Turnout R078"
+ P "Normal" 1 2 3 0 4 5 6
+ P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
+ E 0.000000 0.000000 270.000000
+ E 8.661417 0.000000 90.000000
+ E 0.000000 0.984252 270.000000
+ E 8.661417 0.984252 90.000000
+ S 0 0.000000 0.000000 0.000000 0.453455 0.000000
+ S 0 0.000000 0.453455 0.000000 8.207962 0.000000
+ S 0 0.000000 8.207962 0.000000 8.661417 0.000000
+ S 0 0.000000 0.000000 0.984252 0.453455 0.984252
+ S 0 0.000000 0.453455 0.984252 8.207962 0.984252
+ S 0 0.000000 8.207962 0.984252 8.661417 0.984252
+ C 0 0.000000 -15.453285 0.453475 15.453285 166.420155 13.579921
+ S 0 0.000000 4.081906 0.432021 4.579511 0.552231
+ C 0 0.000000 15.453285 8.207982 -14.469028 346.420155 13.579921
+ C 0 0.000000 15.453285 0.453393 -14.469033 0.000076 13.579921
+ S 0 0.000000 4.081906 0.552231 4.579511 0.432021
+ C 0 0.000000 -15.453285 8.207982 15.453280 180.000076 13.579921
+ L3 11579568 0.019685 -0.000000 -0.322835 0 8.661417 -0.322835 0
+ L3 11579568 0.019685 0.000000 0.322835 0 0.453455 0.322835 0
+ L3 11579568 0.019685 8.207962 0.322835 0 8.661417 0.322835 0
+ L3 11579568 0.019685 -0.000000 0.684252 0 0.453454 0.684252 0
+ L3 11579568 0.019685 0.000000 1.284252 0 8.661417 1.284252 0
+ L3 11579568 0.019685 8.207962 0.684252 0 8.661417 0.684252 0
+ L3 11579568 0.019685 4.117129 0.286216 0 4.334831 0.338807 0
+ L3 11579568 0.019685 4.326586 0.645445 0 4.544288 0.698036 0
+ L3 11579568 0.019685 4.326585 0.338807 0 4.544288 0.286216 0
+ L3 11579568 0.019685 4.117129 0.698036 0 4.334831 0.645445 0
+ A3 11579568 0.019685 15.153285 0.453455 15.453285 0 171.000000 9.000000
+ A3 11579568 0.019685 15.153285 0.453455 -14.449033 0 0.000000 9.000000
+ A3 11579568 0.019685 15.153285 8.207962 -14.449033 0 351.000000 9.000000
+ A3 11579568 0.019685 15.153285 8.207962 15.453285 0 180.000010 9.000000
+END$SEGS
+TURNOUT Z "Rokuhan Left 110mm R490 13d Turnout R039"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.330709 0.000000 90.000000
+ E 4.339607 0.494436 77.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+ C 0 0 19.291339 0.000000 19.291339 167.000000 13.000000
+ L 11579568 0.019685 0.000000 -0.322835 4.330709 -0.322835
+ A 11579568 0.019685 18.991339 0.000000 19.291339 167.000000 13.000000
+END$SEGS
+TURNOUT Z "Rokuhan Right 110mm R490 13d Turnout R040"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.330709 0.000000 90.000000
+ E 4.339607 -0.494436 103.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+ C 0 0 19.291339 0.000000 -19.291339 0.000000 13.000000
+ L 11579568 0.019685 0.000000 0.322835 4.330709 0.322835
+ A 11579568 0.019685 18.991339 0.000000 -19.291339 0.000000 13.000000
+END$SEGS
+TURNOUT Z "Rokuhan Left 55mm R127 26d Turnout R022"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 2.165354 0.000000 90.000000
+ E 2.191856 0.506030 64.000000
+ S 0 0 0.000000 0.000000 2.165354 0.000000
+ C 0 0 5.000000 0.000000 5.000000 154.000000 26.000000
+ L 11579568 0.019685 0.000000 -0.322835 2.165354 -0.322835
+ A 11579568 0.019685 4.700000 0.000000 5.000000 154.000000 26.000000
+END$SEGS
+TURNOUT Z "Rokuhan Right 55mm R127 26d Turnout R023"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 2.165354 0.000000 90.000000
+ E 2.191856 -0.506030 116.000000
+ S 0 0 0.000000 0.000000 2.165354 0.000000
+ C 0 0 5.000000 0.000000 -5.000000 0.000000 26.000000
+ L 11579568 0.019685 0.000000 0.322835 2.165354 0.322835
+ A 11579568 0.019685 4.700000 0.000000 -5.000000 0.000000 26.000000
+END$SEGS
+TURNOUT Z "Rokuhan Double Slip 112.8mm Turnout R034/35" 512
+ P "Cross1" 1 2 3
+ P "Cross2" 4 5 6
+ P "Slip1" 1 7 6
+ P "Slip2" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 4.440945 0.000000 90.000000
+ E 0.056910 0.499494 283.000000
+ E 4.384035 -0.499494 103.000000
+ S 0 0.000000 0.000000 0.000000 0.512072 0.000000
+ S 0 0.000000 0.512072 0.000000 3.928873 0.000000
+ S 0 0.000000 3.928873 0.000000 4.440945 0.000000
+ S 0 0.000000 0.056910 0.499494 0.555748 0.384323
+ S 0 0.000000 0.555748 0.384323 3.885197 -0.384323
+ S 0 0.000000 3.885197 -0.384323 4.384035 -0.499494
+ C 0 0.000000 14.994770 0.512012 -14.994770 0.000000 13.000000
+ C 0 0.000000 -14.994770 3.928893 14.994766 180.000000 13.000000
+ L 11579568 0.019685 -0.000001 -0.322835 0.512071 -0.299999 0
+ L 11579568 0.019685 3.928873 0.322835 4.440945 0.300001 0
+ L 11579568 0.019685 0.124398 0.791805 0.623237 0.676634 0
+ L 11579568 0.019685 3.817708 -0.676633 4.316546 -0.791804 0
+ A 11579568 0.019685 14.694770 0.512012 -14.994770 0.000000 13.000000
+ A 11579568 0.019685 14.694770 3.928893 14.994766 180.000000 13.000000
+END$SEGS
+TURNOUT Z "Rokuhan Left Curve R195/R220 30d Turnout R026"
+ P "Normal" 2 3
+ P "Reverse" 1
+ E 0.000000 0.000000 270.000000
+ E 4.822835 1.028545 60.000000
+ E 3.838583 1.028545 60.000000
+ C 0 0 -7.677165 0.000000 7.677165 150.000000 30.000000
+ S 0 0.000000 0.000000 0.000000 0.984252 0.000000
+ C 0 0 -7.677165 0.984252 7.677165 150.000000 30.000000
+ A 11579568 0.019685 7.377165 0.000000 7.677165 150.000000 30.000000
+ L 11579568 0.019685 0.000000 -0.322835 0.984252 -0.322835
+ A 11579568 0.019685 7.977165 0.984252 7.677165 150.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan Right Curve R220/R195 30d Turnout R027"
+ P "Normal" 2 3
+ P "Reverse" 1
+ E 0.000000 0.000000 270.000000
+ E 4.822835 -1.028545 120.000000
+ E 3.838583 -1.028545 120.000000
+ C 0 0 7.677165 0.000000 -7.677165 0.000000 30.000000
+ S 0 0.000000 0.000000 0.000000 0.984252 0.000000
+ C 0 0 7.677165 0.984252 -7.677165 0.000000 30.000000
+ A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 30.000000
+ L 11579568 0.019685 0.000000 0.322835 0.984252 0.322835
+ A 11579568 0.019685 7.977165 0.984252 -7.677165 0.000000 30.000000
+END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Rokuhan Z-Scale - Crossings
+TURNOUT Z "Rokuhan Crossing 112.8mm 13d R020A"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.440945 0.000000 90.000000
+ E 0.056910 0.499494 283.000000
+ E 4.384035 -0.499494 103.000000
+ S 0 0.000000 0.000000 0.000000 4.440945 0.000000
+ S 0 0.000000 0.056910 0.499494 4.384035 -0.499494
+ L 11579568 0.019685 -0.000001 -0.322835 2.220472 -0.299997
+ L 11579568 0.019685 2.220472 0.300003 4.440945 0.300006
+ L 11579568 0.019685 2.152986 -0.292311 4.316549 -0.791805
+ L 11579568 0.019685 0.124395 0.791805 2.287958 0.292311
+END$SEGS
+TURNOUT Z "Rokuhan Straight 53.6mm R020B"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.110236 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.110236 0.000000
+ L 11579568 0.019685 0.000000 0.322835 2.110236 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 2.110236 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Crossing 25mm 90d R025"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 0.984252 0.000000 90.000000
+ E 0.492127 0.492126 360.000000
+ E 0.492125 -0.492126 180.000000
+ S 0 0.000000 0.000000 0.000000 0.984252 0.000000
+ S 0 0.000000 0.492127 0.492126 0.492125 -0.492126
+ L3 11579568 0.019685 -0.000001 -0.322835 0 0.184546 -0.322835 0
+ L3 11579568 0.019685 0.799704 -0.299999 0 0.984251 -0.299999 0
+ L3 11579568 0.019685 0.000000 0.322835 0 0.184547 0.322835 0
+ L3 11579568 0.019685 0.799705 0.300001 0 0.984252 0.300001 0
+ L3 11579568 0.019685 0.192127 0.492126 0 0.192127 0.307579 0
+ L3 11579568 0.019685 0.192125 -0.307578 0 0.192125 -0.492126 0
+ L3 11579568 0.019685 0.792127 0.492126 0 0.792127 0.307579 0
+ L3 11579568 0.019685 0.792125 -0.307578 0 0.792125 -0.492126 0
+END$SEGS
+
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Rokuhan Z-Scale - Shinkansen Viaduct System Straight Track
+TURNOUT Z "Rokuhan Viaduct Straight 110mm S010"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.330709 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+ L 11579568 0.019685 0.000000 0.322835 4.330709 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 4.330709 -0.322835
+END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Rokuhan Z-Scale - Shinkansen Viaduct System Double Straight Track
+TURNOUT Z "Rokuhan Viaduct Double Straight 110mm S019"
+ P "Normal" 1 0 4`
+ E 0.000000 0.000000 270.000000
+ E 4.330709 0.000000 90.000000
+ E 0.000000 0.984252 270.000000
+ E 4.330709 0.984252 90.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+ L 11579568 0.019685 0.000000 0.322835 4.330709 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 4.330709 -0.322835
+ S 0 0 0.000000 0.984252 4.330709 0.984252
+ L 11579568 0.019685 0.000000 1.284252 4.330709 1.284252
+ L 11579568 0.019685 0.000000 0.684252 4.330709 0.684252
+END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Rokuhan Z-Scale - Shinkansen Viaduct System Curve Track
+TURNOUT Z "Rokuhan Viaduct Curved 195mm 30d S011"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.838583 -1.028545 120.000000
+ C 0 0 7.677165 0.000000 -7.677165 0.000000 30.000000
+ A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 30.000000
+ A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan Viaduct Curved 195mm 45d R0x"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.428575 -2.248590 135.000000
+ C 0 0 7.677165 0.000000 -7.677165 0.000000 45.000000
+ A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 45.000000
+ A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 45.000000
+END$SEGS
+TURNOUT Z "Rokuhan Viaduct Curved 220mm 30d S012"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.330709 -1.160410 120.000000
+ C 0 0 8.661417 0.000000 -8.661417 0.000000 30.000000
+ A 11579568 0.019685 8.961417 0.000000 -8.661417 0.000000 30.000000
+ A 11579568 0.019685 8.361417 0.000000 -8.661417 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan Viaduct Curved 220mm 45d R0x"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.124547 -2.536870 135.000000
+ C 0 0 8.661417 0.000000 -8.661417 0.000000 45.000000
+ A 11579568 0.019685 8.961417 0.000000 -8.661417 0.000000 45.000000
+ A 11579568 0.019685 8.361417 0.000000 -8.661417 0.000000 45.000000
+END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Rokuhan Z-Scale - Shinkansen Viaduct System Curve Double Track
+TURNOUT Z "Rokuhan Viaduct Curved 195/220mm 30d S013"
+ P "Normal" 1 0 4
+ E 0.000000 0.000000 270.000000
+ E 3.838583 -1.028545 120.000000
+ E 0.000000 0.984252 270.000000
+ E 4.330709 -0.176158 120.000000
+ C 0 0 7.677165 0.000000 -7.677165 0.000000 30.000000
+ A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 30.000000
+ A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 30.000000
+ C 0 0 8.661417 0.000000 -7.677165 0.000000 30.000000
+ A 11579568 0.019685 8.961417 0.000000 -7.677165 0.000000 30.000000
+ A 11579568 0.019685 8.361417 0.000000 -7.677165 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan Viaduct Curved 195/220mm 45d R0x"
+ P "Normal" 1 0 4
+ E 0.000000 0.000000 270.000000
+ E 5.428575 -2.248590 135.000000
+ E 0.000000 0.984000 270.000000
+ E 6.124547 -1.552618 135.000000
+ C 0 0 7.677165 0.000000 -7.677165 0.000000 45.000000
+ A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 45.000000
+ A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 45.000000
+ C 0 0 8.661417 0.000000 -7.677165 0.000000 45.000000
+ A 11579568 0.019685 8.961417 0.000000 -7.677165 0.000000 45.000000
+ A 11579568 0.019685 8.361417 0.000000 -7.677165 0.000000 45.000000
+END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Rokuhan Z-Scale - Straight PC Track
+TURNOUT Z "Rokuhan Straight PC Track 55mm R048"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.165354 0.000000 90.000000
+ S 0 0 0.000000 0.000000 2.165354 0.000000
+ L 11579568 0.019685 0.000000 0.322835 2.165354 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 2.165354 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Straight PC Track 110mm R049"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.330709 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+ L 11579568 0.019685 0.000000 0.322835 4.330709 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 4.330709 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Straight PC Track 112.8mm R038"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.440945 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.440945 0.000000
+ L 11579568 0.019685 0.000000 0.322835 4.440945 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 4.440945 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Straight PC Track 220mm R050"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.661417 0.000000 90.000000
+ S 0 0 0.000000 0.000000 8.661417 0.000000
+ L 11579568 0.019685 0.000000 0.322835 8.661417 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 8.661417 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Straight PC Track 440mm R084"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 17.322835 0.000000 90.000000
+ S 0 0 0.000000 0.000000 17.322835 0.000000
+ L 11579568 0.019685 0.000000 0.322835 17.322835 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 17.322835 -0.322835
+END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Rokuhan Z-Scale - Curve PC Track
+TURNOUT Z "Rokuhan Curved PC Track 195mm 30d R051"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.838583 -1.028545 120.000000
+ C 0 0 7.677165 0.000000 -7.677165 0.000000 30.000000
+ A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 30.000000
+ A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan SuperElevated Curved PC Track 195mm 30d R066"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.838583 -1.028545 120.000000
+ C 0 0 7.677165 0.000000 -7.677165 0.000000 30.000000
+ A 11579568 0.019685 7.977165 0.000000 -7.677165 0.000000 30.000000
+ A 11579568 0.019685 7.377165 0.000000 -7.677165 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved PC Track 220mm 30d R052"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.330709 -1.160410 120.000000
+ C 0 0 8.661417 0.000000 -8.661417 0.000000 30.000000
+ A 11579568 0.019685 8.961417 0.000000 -8.661417 0.000000 30.000000
+ A 11579568 0.019685 8.361417 0.000000 -8.661417 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan SuperElevated Curved PC Track 220mm 30d R067"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.330709 -1.160410 120.000000
+ C 0 0 8.661417 0.000000 -8.661417 0.000000 30.000000
+ A 11579568 0.019685 8.961417 0.000000 -8.661417 0.000000 30.000000
+ A 11579568 0.019685 8.361417 0.000000 -8.661417 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved PC Track 245mm 30d R053"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.822835 -1.292275 120.000000
+ C 0 0 9.645669 0.000000 -9.645669 0.000000 30.000000
+ A 11579568 0.019685 9.945669 0.000000 -9.645669 0.000000 30.000000
+ A 11579568 0.019685 9.345669 0.000000 -9.645669 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan SuperElevated Curved PC Track 245mm 30d R075"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.822835 -1.292275 120.000000
+ C 0 0 9.645669 0.000000 -9.645669 0.000000 30.000000
+ A 11579568 0.019685 9.945669 0.000000 -9.645669 0.000000 30.000000
+ A 11579568 0.019685 9.345669 0.000000 -9.645669 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan SuperElevated Curved PC Track 270mm 30d R076"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.314961 -1.4241396 120.000000
+ C 0 0 10.629921 0.000000 -10.629921 0.000000 30.000000
+ A 11579568 0.019685 10.929921 0.000000 -10.629921 0.000000 30.000000
+ A 11579568 0.019685 10.329921 0.000000 -10.629921 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved PC Track 270mm 30d R054"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.314961 -1.4241396 120.000000
+ C 0 0 10.629921 0.000000 -10.629921 0.000000 30.000000
+ A 11579568 0.019685 10.929921 0.000000 -10.629921 0.000000 30.000000
+ A 11579568 0.019685 10.329921 0.000000 -10.629921 0.000000 30.000000
+END$SEGS
+TURNOUT Z "Rokuhan Curved PC Track 490mm 13d R059"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.339607 -0.494436 103.000000
+ C 0 0 19.291339 0.000000 -19.291339 0.000000 13.000000
+ A 11579568 0.019685 19.591339 0.000000 -19.291339 0.000000 13.000000
+ A 11579568 0.019685 18.991339 0.000000 -19.291339 0.000000 13.000000
+END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Rokuhan Z-Scale - Turnout PC Track
+TURNOUT Z "Rokuhan Left 110mm R490 13d PC Turnout R055"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.330709 0.000000 90.000000
+ E 4.339607 0.494436 77.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+ C 0 0 19.291339 0.000000 19.291339 167.000000 13.000000
+ L 11579568 0.019685 0.000000 -0.322835 4.330709 -0.322835
+ A 11579568 0.019685 18.991339 0.000000 19.291339 167.000000 13.000000
+END$SEGS
+TURNOUT Z "Rokuhan Straight Trim Left PC Track 110mm R055A"
+ P "Normal" 1
+ E 4.330709 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+ L 11579568 0.019685 0.500000 0.322835 4.330709 0.322835
+ L 11579568 0.019685 0.000000 -0.322835 4.330709 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Right 110mm R490 13d PC Turnout R056"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.330709 0.000000 90.000000
+ E 4.339607 -0.494436 103.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+ C 0 0 19.291339 0.000000 -19.291339 0.000000 13.000000
+ L 11579568 0.019685 0.000000 0.322835 4.330709 0.322835
+ A 11579568 0.019685 18.991339 0.000000 -19.291339 0.000000 13.000000
+END$SEGS
+TURNOUT Z "Rokuhan Straight trim Right PC Track 110mm R056A"
+ P "Normal" 1
+ E 4.330709 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+ L 11579568 0.019685 0.000000 0.322835 4.330709 0.322835
+ L 11579568 0.019685 0.500000 -0.322835 4.330709 -0.322835
+END$SEGS
+TURNOUT Z "Rokuhan Double Slip PC Track 112.8mm Turnout R068/69" 512
+ P "Cross1" 1 2 3
+ P "Cross2" 4 5 6
+ P "Slip1" 1 7 6
+ P "Slip2" 4 8 3
+ E 0.000000 0.000000 270.000000
+ E 4.440945 0.000000 90.000000
+ E 0.056910 0.499494 283.000000
+ E 4.384035 -0.499494 103.000000
+ S 0 0.000000 0.000000 0.000000 0.512072 0.000000
+ S 0 0.000000 0.512072 0.000000 3.928873 0.000000
+ S 0 0.000000 3.928873 0.000000 4.440945 0.000000
+ S 0 0.000000 0.056910 0.499494 0.555748 0.384323
+ S 0 0.000000 0.555748 0.384323 3.885197 -0.384323
+ S 0 0.000000 3.885197 -0.384323 4.384035 -0.499494
+ C 0 0.000000 14.994770 0.512012 -14.994770 0.000000 13.000000
+ C 0 0.000000 -14.994770 3.928893 14.994766 180.000000 13.000000
+ L 11579568 0.019685 -0.000001 -0.322835 0.512071 -0.299999 0
+ L 11579568 0.019685 3.928873 0.322835 4.440945 0.300001 0
+ L 11579568 0.019685 0.124398 0.791805 0.623237 0.676634 0
+ L 11579568 0.019685 3.817708 -0.676633 4.316546 -0.791804 0
+ A 11579568 0.019685 14.694770 0.512012 -14.994770 0.000000 13.000000
+ A 11579568 0.019685 14.694770 3.928893 14.994766 180.000000 13.000000
+END$SEGS
+TURNOUT Z "Rokuhan Double Crossover PC 220mm Turnout R082"
+ P "Normal" 1 2 3 0 4 5 6
+ P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
+ E 0.000000 0.000000 270.000000
+ E 8.661417 0.000000 90.000000
+ E 0.000000 0.984252 270.000000
+ E 8.661417 0.984252 90.000000
+ S 0 0.000000 0.000000 0.000000 0.453455 0.000000
+ S 0 0.000000 0.453455 0.000000 8.207962 0.000000
+ S 0 0.000000 8.207962 0.000000 8.661417 0.000000
+ S 0 0.000000 0.000000 0.984252 0.453455 0.984252
+ S 0 0.000000 0.453455 0.984252 8.207962 0.984252
+ S 0 0.000000 8.207962 0.984252 8.661417 0.984252
+ C 0 0.000000 -15.453285 0.453475 15.453285 166.420155 13.579921
+ S 0 0.000000 4.081906 0.432021 4.579511 0.552231
+ C 0 0.000000 15.453285 8.207982 -14.469028 346.420155 13.579921
+ C 0 0.000000 15.453285 0.453393 -14.469033 0.000076 13.579921
+ S 0 0.000000 4.081906 0.552231 4.579511 0.432021
+ C 0 0.000000 -15.453285 8.207982 15.453280 180.000076 13.579921
+ L3 11579568 0.019685 -0.000000 -0.322835 0 8.661417 -0.322835 0
+ L3 11579568 0.019685 0.000000 0.322835 0 0.453455 0.322835 0
+ L3 11579568 0.019685 8.207962 0.322835 0 8.661417 0.322835 0
+ L3 11579568 0.019685 -0.000000 0.684252 0 0.453454 0.684252 0
+ L3 11579568 0.019685 0.000000 1.284252 0 8.661417 1.284252 0
+ L3 11579568 0.019685 8.207962 0.684252 0 8.661417 0.684252 0
+ L3 11579568 0.019685 4.117129 0.286216 0 4.334831 0.338807 0
+ L3 11579568 0.019685 4.326586 0.645445 0 4.544288 0.698036 0
+ L3 11579568 0.019685 4.326585 0.338807 0 4.544288 0.286216 0
+ L3 11579568 0.019685 4.117129 0.698036 0 4.334831 0.645445 0
+ A3 11579568 0.019685 15.153285 0.453455 15.453285 0 171.000000 9.000000
+ A3 11579568 0.019685 15.153285 0.453455 -14.449033 0 0.000000 9.000000
+ A3 11579568 0.019685 15.153285 8.207962 -14.449033 0 351.000000 9.000000
+ A3 11579568 0.019685 15.153285 8.207962 15.453285 0 180.000010 9.000000
+END$SEGS
+
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Rokuhan Z-Scale - Bridges
+TURNOUT Z "Rokuhan Single Trk Truss Bridge 220mm(Green) R041"
+ P "Normal" 1
+ E 8.661417 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 8.661417 0.000000
+ L 32896 0.053333 0.000000 0.375000 8.661417 0.375000
+ L 32896 0.053333 0.000000 -0.375000 8.661417 -0.375000
+ L 32896 0.053333 0.861412 -0.375000 0.861412 0.375000
+ L 32896 0.053333 0.861412 -0.375000 2.598425 0.375000
+ L 32896 0.053333 2.598425 -0.375000 0.861412 0.375000
+ L 32896 0.053333 2.598425 -0.375000 2.598425 0.375000
+ L 32896 0.053333 2.598425 -0.375000 4.330708 0.375000
+ L 32896 0.053333 4.330708 -0.375000 2.598425 0.375000
+ L 32896 0.053333 4.330708 -0.375000 4.330708 0.375000
+ L 32896 0.053333 4.330708 -0.375000 6.062922 0.375000
+ L 32896 0.053333 6.062922 -0.375000 4.330708 0.375000
+ L 32896 0.053333 6.062922 -0.375000 6.062992 0.375000
+ L 32896 0.053333 6.062922 -0.375000 7.795275 0.375000
+ L 32896 0.053333 7.795275 -0.375000 6.062922 0.375000
+ L 32896 0.053333 7.795275 -0.375000 7.795275 0.375000
+END$SEGS
+TURNOUT Z "Rokuhan Single Trk Truss Bridge 220mm(Red) R042"
+ P "Normal" 1
+ E 8.661417 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 8.661417 0.000000
+ L 16711680 0.053333 0.000000 0.375000 8.661417 0.375000
+ L 16711680 0.053333 0.000000 -0.375000 8.661417 -0.375000
+ L 16711680 0.053333 0.861412 -0.375000 0.861412 0.375000
+ L 16711680 0.053333 0.861412 -0.375000 2.598425 0.375000
+ L 16711680 0.053333 2.598425 -0.375000 0.861412 0.375000
+ L 16711680 0.053333 2.598425 -0.375000 2.598425 0.375000
+ L 16711680 0.053333 2.598425 -0.375000 4.330708 0.375000
+ L 16711680 0.053333 4.330708 -0.375000 2.598425 0.375000
+ L 16711680 0.053333 4.330708 -0.375000 4.330708 0.375000
+ L 16711680 0.053333 4.330708 -0.375000 6.062922 0.375000
+ L 16711680 0.053333 6.062922 -0.375000 4.330708 0.375000
+ L 16711680 0.053333 6.062922 -0.375000 6.062992 0.375000
+ L 16711680 0.053333 6.062922 -0.375000 7.795275 0.375000
+ L 16711680 0.053333 7.795275 -0.375000 6.062922 0.375000
+ L 16711680 0.053333 7.795275 -0.375000 7.795275 0.375000
+END$SEGS
+TURNOUT Z "Rokuhan Double Trk Truss Bridge 220mm(Green) R043"
+ P "Normal" 1 0 2
+ E 8.661417 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ E 8.661417 0.984252 90.000000
+ E 0.000000 0.984252 270.000000
+ S 0 0 0.000000 0.000000 8.661417 0.000000
+ S 0 0 0.000000 0.984252 8.661417 0.984252
+ L 32896 0.053333 0.000000 1.359252 8.661417 1.359252
+ L 32896 0.053333 0.000000 -0.375000 8.661417 -0.375000
+ L 32896 0.053333 0.618673 -0.375000 0.618673 1.359252
+ L 32896 0.053333 0.618673 -0.375000 1.856018 1.359252
+ L 32896 0.053333 1.856018 -0.375000 0.618673 1.359252
+ L 32896 0.053333 1.856018 -0.375000 1.856018 1.359252
+ L 32896 0.053333 1.856018 -0.375000 3.093363 1.359252
+ L 32896 0.053333 3.093363 -0.375000 1.856018 1.359252
+ L 32896 0.053333 3.093363 -0.375000 3.093363 1.359252
+ L 32896 0.053333 3.093363 -0.375000 4.330708 1.359252
+ L 32896 0.053333 4.330708 -0.375000 3.093363 1.359252
+ L 32896 0.053333 4.330708 -0.375000 4.330708 1.359252
+ L 32896 0.053333 4.330708 -0.375000 5.568053 1.359252
+ L 32896 0.053333 5.568053 -0.375000 4.330708 1.359252
+ L 32896 0.053333 5.568053 -0.375000 5.568053 1.359252
+ L 32896 0.053333 5.568053 -0.375000 6.805398 1.359252
+ L 32896 0.053333 6.805398 -0.375000 5.568053 1.359252
+ L 32896 0.053333 6.805398 -0.375000 6.805398 1.359252
+ L 32896 0.053333 6.805398 -0.375000 8.042743 1.359252
+ L 32896 0.053333 8.042743 -0.375000 6.805398 1.359252
+ L 32896 0.053333 8.042743 -0.375000 8.042743 1.359252
+END$SEGS
+TURNOUT Z "Rokuhan Double Trk Truss Bridge 220mm(Beige) R044"
+ P "Normal" 1 0 2
+ E 8.661417 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ E 8.661417 0.984252 90.000000
+ E 0.000000 0.984252 270.000000
+ S 0 0 0.000000 0.000000 8.661417 0.000000
+ S 0 0 0.000000 0.984252 8.661417 0.984252
+ L 15720651 0.053333 0.000000 1.359252 8.661417 1.359252
+ L 15720651 0.053333 0.000000 -0.375000 8.661417 -0.375000
+ L 15720651 0.053333 0.618673 -0.375000 0.618673 1.359252
+ L 15720651 0.053333 0.618673 -0.375000 1.856018 1.359252
+ L 15720651 0.053333 1.856018 -0.375000 0.618673 1.359252
+ L 15720651 0.053333 1.856018 -0.375000 1.856018 1.359252
+ L 15720651 0.053333 1.856018 -0.375000 3.093363 1.359252
+ L 15720651 0.053333 3.093363 -0.375000 1.856018 1.359252
+ L 15720651 0.053333 3.093363 -0.375000 3.093363 1.359252
+ L 15720651 0.053333 3.093363 -0.375000 4.330708 1.359252
+ L 15720651 0.053333 4.330708 -0.375000 3.093363 1.359252
+ L 15720651 0.053333 4.330708 -0.375000 4.330708 1.359252
+ L 15720651 0.053333 4.330708 -0.375000 5.568053 1.359252
+ L 15720651 0.053333 5.568053 -0.375000 4.330708 1.359252
+ L 15720651 0.053333 5.568053 -0.375000 5.568053 1.359252
+ L 15720651 0.053333 5.568053 -0.375000 6.805398 1.359252
+ L 15720651 0.053333 6.805398 -0.375000 5.568053 1.359252
+ L 15720651 0.053333 6.805398 -0.375000 6.805398 1.359252
+ L 15720651 0.053333 6.805398 -0.375000 8.042743 1.359252
+ L 15720651 0.053333 8.042743 -0.375000 6.805398 1.359252
+ L 15720651 0.053333 8.042743 -0.375000 8.042743 1.359252
+END$SEGS
+TURNOUT Z "Rokuhan Double Trk Truss Bridge 220mm(Brown) R060"
+ P "Normal" 1 0 2
+ E 8.661417 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ E 8.661417 0.984252 90.000000
+ E 0.000000 0.984252 270.000000
+ S 0 0 0.000000 0.000000 8.661417 0.000000
+ S 0 0 0.000000 0.984252 8.661417 0.984252
+ L 8388608 0.053333 0.000000 1.359252 8.661417 1.359252
+ L 8388608 0.053333 0.000000 -0.375000 8.661417 -0.375000
+ L 8388608 0.053333 0.618673 -0.375000 0.618673 1.359252
+ L 8388608 0.053333 0.618673 -0.375000 1.856018 1.359252
+ L 8388608 0.053333 1.856018 -0.375000 0.618673 1.359252
+ L 8388608 0.053333 1.856018 -0.375000 1.856018 1.359252
+ L 8388608 0.053333 1.856018 -0.375000 3.093363 1.359252
+ L 8388608 0.053333 3.093363 -0.375000 1.856018 1.359252
+ L 8388608 0.053333 3.093363 -0.375000 3.093363 1.359252
+ L 8388608 0.053333 3.093363 -0.375000 4.330708 1.359252
+ L 8388608 0.053333 4.330708 -0.375000 3.093363 1.359252
+ L 8388608 0.053333 4.330708 -0.375000 4.330708 1.359252
+ L 8388608 0.053333 4.330708 -0.375000 5.568053 1.359252
+ L 8388608 0.053333 5.568053 -0.375000 4.330708 1.359252
+ L 8388608 0.053333 5.568053 -0.375000 5.568053 1.359252
+ L 8388608 0.053333 5.568053 -0.375000 6.805398 1.359252
+ L 8388608 0.053333 6.805398 -0.375000 5.568053 1.359252
+ L 8388608 0.053333 6.805398 -0.375000 6.805398 1.359252
+ L 8388608 0.053333 6.805398 -0.375000 8.042743 1.359252
+ L 8388608 0.053333 8.042743 -0.375000 6.805398 1.359252
+ L 8388608 0.053333 8.042743 -0.375000 8.042743 1.359252
+END$SEGS
+TURNOUT Z "Rokuhan Double Trk Truss Bridge 220mm(Black) R094"
+ P "Normal" 1 0 2
+ E 8.661417 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ E 8.661417 0.984252 90.000000
+ E 0.000000 0.984252 270.000000
+ S 0 0 0.000000 0.000000 8.661417 0.000000
+ S 0 0 0.000000 0.984252 8.661417 0.984252
+ L 0 0.053333 0.000000 1.359252 8.661417 1.359252
+ L 0 0.053333 0.000000 -0.375000 8.661417 -0.375000
+ L 0 0.053333 0.618673 -0.375000 0.618673 1.359252
+ L 0 0.053333 0.618673 -0.375000 1.856018 1.359252
+ L 0 0.053333 1.856018 -0.375000 0.618673 1.359252
+ L 0 0.053333 1.856018 -0.375000 1.856018 1.359252
+ L 0 0.053333 1.856018 -0.375000 3.093363 1.359252
+ L 0 0.053333 3.093363 -0.375000 1.856018 1.359252
+ L 0 0.053333 3.093363 -0.375000 3.093363 1.359252
+ L 0 0.053333 3.093363 -0.375000 4.330708 1.359252
+ L 0 0.053333 4.330708 -0.375000 3.093363 1.359252
+ L 0 0.053333 4.330708 -0.375000 4.330708 1.359252
+ L 0 0.053333 4.330708 -0.375000 5.568053 1.359252
+ L 0 0.053333 5.568053 -0.375000 4.330708 1.359252
+ L 0 0.053333 5.568053 -0.375000 5.568053 1.359252
+ L 0 0.053333 5.568053 -0.375000 6.805398 1.359252
+ L 0 0.053333 6.805398 -0.375000 5.568053 1.359252
+ L 0 0.053333 6.805398 -0.375000 6.805398 1.359252
+ L 0 0.053333 6.805398 -0.375000 8.042743 1.359252
+ L 0 0.053333 8.042743 -0.375000 6.805398 1.359252
+ L 0 0.053333 8.042743 -0.375000 8.042743 1.359252
+END$SEGS
+TURNOUT Z "Rokuhan Single Trk Truss Bridge 220mm(Brown) R061"
+ P "Normal" 1
+ E 8.661417 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 8.661417 0.000000
+ L 8388608 0.053333 0.000000 0.375000 8.661417 0.375000
+ L 8388608 0.053333 0.000000 -0.375000 8.661417 -0.375000
+ L 8388608 0.053333 0.861412 -0.375000 0.861412 0.375000
+ L 8388608 0.053333 0.861412 -0.375000 2.598425 0.375000
+ L 8388608 0.053333 2.598425 -0.375000 0.861412 0.375000
+ L 8388608 0.053333 2.598425 -0.375000 2.598425 0.375000
+ L 8388608 0.053333 2.598425 -0.375000 4.330708 0.375000
+ L 8388608 0.053333 4.330708 -0.375000 2.598425 0.375000
+ L 8388608 0.053333 4.330708 -0.375000 4.330708 0.375000
+ L 8388608 0.053333 4.330708 -0.375000 6.062922 0.375000
+ L 8388608 0.053333 6.062922 -0.375000 4.330708 0.375000
+ L 8388608 0.053333 6.062922 -0.375000 6.062992 0.375000
+ L 8388608 0.053333 6.062922 -0.375000 7.795275 0.375000
+ L 8388608 0.053333 7.795275 -0.375000 6.062922 0.375000
+ L 8388608 0.053333 7.795275 -0.375000 7.795275 0.375000
+END$SEGS
+TURNOUT Z "Rokuhan Single Trk Deck Girder Bridge 110mm(Red) R070"
+ P "Normal" 1
+ E 4.330709 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+ L 16711680 0.053333 0.000000 0.375000 4.330709 0.375000
+ L 16711680 0.053333 0.000000 -0.375000 4.330709 -0.375000
+END$SEGS
+TURNOUT Z "Rokuhan Single Trk Deck Girder Bridge 110mm(Green) R071"
+ P "Normal" 1
+ E 4.330709 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+ L 32896 0.053333 0.000000 0.375000 4.330709 0.375000
+ L 32896 0.053333 0.000000 -0.375000 4.330709 -0.375000
+END$SEGS
+TURNOUT Z "Rokuhan Single Trk Deck Girder Bridge 110mm(Black) R072"
+ P "Normal" 1
+ E 4.330709 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+ L 0 0.053333 0.000000 0.375000 4.330709 0.375000
+ L 0 0.053333 0.000000 -0.375000 4.330709 -0.375000
+END$SEGS
+TURNOUT Z "Rokuhan Single Trk Deck Girder Bridge(Short) 55mm(DK Red) R085"
+ P "Normal" 1
+ E 2.165354 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 2.165354 0.000000
+ L 10223889 0.053333 0.000000 0.375000 2.165354 0.375000
+ L 10223889 0.053333 0.000000 -0.375000 2.165354 -0.375000
+END$SEGS
+TURNOUT Z "Rokuhan Single Trk Deck Girder Bridge(Short) 55mm(Green) R086"
+ P "Normal" 1
+ E 2.165354 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 2.165354 0.000000
+ L 32896 0.053333 0.000000 0.375000 2.165354 0.375000
+ L 32896 0.053333 0.000000 -0.375000 2.165354 -0.375000
+END$SEGS
+TURNOUT Z "Rokuhan Single Trk Deck Girder Bridge(Short) 55mm(DK Grey) R087"
+ P "Normal" 1
+ E 2.165354 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 2.165354 0.000000
+ L 8421504 0.053333 0.000000 0.375000 2.165354 0.375000
+ L 8421504 0.053333 0.000000 -0.375000 2.165354 -0.375000
+END$SEGS
+TURNOUT Z "Rokuhan Single Trk Iron Bridge(Short) 110mm(Red) R088"
+ P "Normal" 1
+ E 4.330709 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+ L 16711680 0.053333 0.000000 0.375000 4.330709 0.375000
+ L 16711680 0.053333 0.000000 -0.375000 4.330709 -0.375000
+ L 16711680 0.053333 0.748031 -0.375000 0.748031 0.375000
+ L 16711680 0.053333 0.748031 -0.375000 2.165354 0.375000
+ L 16711680 0.053333 2.165354 -0.375000 0.748031 0.375000
+ L 16711680 0.053333 2.165354 -0.375000 2.165354 0.375000
+ L 16711680 0.053333 2.165354 -0.375000 3.582677 0.375000
+ L 16711680 0.053333 3.582677 -0.375000 2.165354 0.375000
+ L 16711680 0.053333 3.582677 -0.375000 3.582677 0.375000
+END$SEGS
+TURNOUT Z "Rokuhan Single Trk Iron Bridge(Short) 110mm(Green) R089"
+ P "Normal" 1
+ E 4.330709 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+ L 32896 0.053333 0.000000 0.375000 4.330709 0.375000
+ L 32896 0.053333 0.000000 -0.375000 4.330709 -0.375000
+ L 32896 0.053333 0.748031 -0.375000 0.748031 0.375000
+ L 32896 0.053333 0.748031 -0.375000 2.165354 0.375000
+ L 32896 0.053333 2.165354 -0.375000 0.748031 0.375000
+ L 32896 0.053333 2.165354 -0.375000 2.165354 0.375000
+ L 32896 0.053333 2.165354 -0.375000 3.582677 0.375000
+ L 32896 0.053333 3.582677 -0.375000 2.165354 0.375000
+ L 32896 0.053333 3.582677 -0.375000 3.582677 0.375000
+END$SEGS
+TURNOUT Z "Rokuhan Single Trk Iron Bridge(Short) 110mm(DK Grey) R090"
+ P "Normal" 1
+ E 4.330709 0.000000 90.000000
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 4.330709 0.000000
+ L 8421504 0.053333 0.000000 0.375000 4.330709 0.375000
+ L 8421504 0.053333 0.000000 -0.375000 4.330709 -0.375000
+ L 8421504 0.053333 0.748031 -0.375000 0.748031 0.375000
+ L 8421504 0.053333 0.748031 -0.375000 2.165354 0.375000
+ L 8421504 0.053333 2.165354 -0.375000 0.748031 0.375000
+ L 8421504 0.053333 2.165354 -0.375000 2.165354 0.375000
+ L 8421504 0.053333 2.165354 -0.375000 3.582677 0.375000
+ L 8421504 0.053333 3.582677 -0.375000 2.165354 0.375000
+ L 8421504 0.053333 3.582677 -0.375000 3.582677 0.375000
+END$SEGS
+##########################################################################
+##########################################################################
+
+SUBCONTENTS Rokuhan Z-Scale - Turntable
+TURNOUT Z "Rokuhan Turntable 170mm S037" 512
+ P "1" 1 2 3
+ P "2" 4 5 6
+ P "3" 7 8 9
+ P "4" 10 11 12
+ P "5" 13 14 15
+ P "6" 16 17 18
+ P "7" 19 20 21
+ P "8" 22 23 24
+ E 0.000000 3.346457 0.000000
+ E 0.866127 3.232429 15.000000
+ E 1.673228 2.898117 30.000000
+ E 2.366302 2.366302 45.000000
+ E 2.898117 1.673228 60.000000
+ E 3.232429 0.866127 75.000000
+ E 3.346457 0.000000 90.000000
+ E 3.232429 -0.866127 105.000000
+ E 2.898117 -1.673228 120.000000
+ E 2.366302 -2.366302 135.000000
+ E 1.673228 -2.898117 150.000000
+ E 0.866127 -3.232429 165.000000
+ E 0.000000 -3.346457 180.000000
+ E -0.866127 -3.232429 195.000000
+ E -1.673228 -2.898117 210.000000
+ E -2.366302 -2.366302 225.000000
+ E -2.898117 -1.673228 240.000000
+ E -3.232429 -0.866127 255.000000
+ E -3.346457 0.000000 270.000000
+ E -3.232429 0.866127 285.000000
+ E -2.898117 1.673228 300.000000
+ E -2.366302 2.366302 315.000000
+ E -1.673228 2.898117 330.000000
+ E -0.866127 3.232429 345.000000
+ S 0 0.031250 0.000000 3.346457 0.000000 2.559055
+ S 16777215 0.031250 0.000000 2.559055 0.000000 -2.559055
+ S 0 0.031250 0.000000 -2.559055 0.000000 -3.346457
+ S 0 0.031250 0.866127 3.232429 0.662332 2.471857
+ S 16777215 0.031250 0.662332 2.471857 -0.662332 -2.471857
+ S 0 0.031250 -0.662332 -2.471857 -0.866127 -3.232429
+ S 0 0.031250 1.673228 2.898117 1.279528 2.216207
+ S 16777215 0.031250 1.279528 2.216207 -1.279528 -2.216207
+ S 0 0.031250 -1.279528 -2.216207 -1.673228 -2.898117
+ S 0 0.031250 2.366302 2.366302 1.809525 1.809525
+ S 16777215 0.031250 1.809525 1.809525 -1.809525 -1.809525
+ S 0 0.031250 -1.809525 -1.809525 -2.366302 -2.366302
+ S 0 0.031250 2.898117 1.673228 2.216207 1.279528
+ S 16777215 0.031250 2.216207 1.279528 -2.216207 -1.279528
+ S 0 0.031250 -2.216207 -1.279528 -2.898117 -1.673228
+ S 0 0.031250 3.232429 0.866127 2.471857 0.662332
+ S 16777215 0.031250 2.471857 0.662332 -2.471857 -0.662332
+ S 0 0.031250 -2.471857 -0.662332 -3.232429 -0.866127
+ S 0 0.031250 3.346457 0.000000 2.559055 0.000000
+ S 16777215 0.031250 2.559055 0.000000 -2.559055 0.000000
+ S 0 0.031250 -2.559055 0.000000 -3.346457 0.000000
+ S 0 0.031250 3.232429 -0.866127 2.471857 -0.662332
+ S 16777215 0.031250 2.471857 -0.662332 -2.471857 0.662332
+ S 0 0.031250 -2.471857 0.662332 -3.232429 0.866127
+# S 0 0.031250 2.898117 -1.673228 2.216207 -1.279528
+# S 16777215 0.031250 2.216207 -1.279528 -2.216207 1.279528
+# S 0 0.031250 -2.216207 1.279528 -2.898117 1.673228
+# S 0 0.031250 2.366302 -2.366302 1.809525 -1.809525
+# S 16777215 0.031250 1.809525 -2.366302 -1.809525 2.366302
+# S 0 0.031250 -1.809525 1.809525 -2.366302 2.366302
+# S 0 0.031250 1.673228 -2.898117 1.279528 -2.216207
+# S 16777215 0.031250 1.279528 -2.216207 -1.279528 2.216207
+# S 0 0.031250 -1.279528 2.216207 -1.673228 2.898117
+# S 0 0.031250 0.866127 -3.232429 0.662332 -2.471857
+# S 16777215 0.031250 0.662332 -2.471857 -0.662332 2.471857
+# S 0 0.031250 -0.662332 2.471857 -0.866127 3.232429
+# A 0 0.031250 3.346457 0.000000 0.000000 0.000000 360.000000
+# A 0 0.031250 2.559055 0.000000 0.000000 0.000000 360.000000
+END$SEGS
+
+
diff --git a/app/lib/params/atlaso2rail.xtp b/app/lib/params/atlaso2rail.xtp
deleted file mode 100644
index 68d23c1..0000000
--- a/app/lib/params/atlaso2rail.xtp
+++ /dev/null
@@ -1,313 +0,0 @@
-CONTENTS Atlas O 2 Rail
-#Casey Sterbenz O Scale Kings #8
-#sterbejj@hotmail.com March 16, 2007
-SUBCONTENTS Atlas O 2 Rail - Curve Track
-TURNOUT O "Atlas O 2 Rail 36"" Radius Full Section At-7062"
- U "Curved Section" "" "Atlas O 2 Rail" "36"" Radius Full Section" "At-7062" 36.000000 22.500000 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 13.776593 2.740332 67.500000
- C 0 0.000000 -36.000000 0.000048 36.000000 157.500076 22.500000
- END
-TURNOUT O "Atlas O 2 Rail 36"" Radius Half Section At-7063"
- U "Curved Section" "" "Atlas O 2 Rail" "36"" Radius Half Section" "At-7063" 36.000000 11.250000 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.023246 0.691729 78.750000
- C 0 0.000000 -36.000000 0.000048 36.000000 168.750076 11.250000
- END
-TURNOUT O "Atlas O 2 Rail 40.5"" Radius Full Curve At-7011"
- U "Curved Section" "" "Atlas O 2 Rail" "40.5"" Radius Full Curve" "At-7011" 40.500000 22.500000 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 15.498667 3.082874 67.500000
- C 0 0.000000 -40.500000 0.000054 40.500000 157.500076 22.500000
- END
-TURNOUT O "Atlas O 2 Rail 40.5"" Radius 1/3rd Curve At-7012"
- U "Curved Section" "" "Atlas O 2 Rail" "40.5"" Radius 1/3rd Curve" "At-7012" 40.500000 7.500000 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.286306 0.346483 82.500000
- C 0 0.000000 -40.500000 0.000054 40.500000 172.500076 7.500000
- END
-TURNOUT O "Atlas O 2 Rail 45"" Radius Full Curve At-7013"
- U "Curved Section" "Open Registration" "Atlas O 2 Rail" "45"" Radius Full Curve" "At-7013" 45.000000 22.500000 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 17.220741 3.425415 67.500000
- C 0 0.000000 -45.000000 0.000060 45.000000 157.500076 22.500000
- END
-TURNOUT O "Atlas O 2 Rail 49.5"" Radius Full Curve At-7014"
- U "Curved Section" "Open Registration" "Atlas O 2 Rail" "49.5"" Radius Full Curve" "At-7014" 49.500000 22.500000 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 18.942815 3.767957 67.500000
- C 0 0.000000 -49.500000 0.000066 49.500000 157.500076 22.500000
- END
-TURNOUT O "Atlas O 2 Rail 54"" Radius Full Curve At-7016"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 20.664905 4.956805 67.500000
- C 0 0.000000 -54.000000 0.000000 54.000000 157.500000 22.500000
- END
-
-
-SUBCONTENTS Atlas O 2 Rail - Turnouts
-TURNOUT O "Atlas O 2 Rail # 5 Left At-7024"
- U "Regular Turnout" "Open Registration" "Atlas O 2 Rail" "# 5 Left" "At-7024" "# 5 Right" "At-7025" 20.000000 11.536969 2.250000 20.000000 0.000000 0.000000 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 20.000000 0.000000 90.000000
- E 20.000000 2.250000 78.463031
- S 0 0.000000 0.000000 0.000000 1.177000 0.000000
- S 0 0.000000 1.177000 0.000000 20.000000 0.000000
- C 0 0.000000 -77.216289 1.177102 77.216289 168.462955 11.537121
- S 0 0.000000 16.620459 1.560127 20.000000 2.250000
- END
-TURNOUT O "Atlas O 2 Rail # 5 Right At-7025"
- U "Regular Turnout" "Open Registration" "Atlas O 2 Rail" "# 5 Left" "At-7024" "# 5 Right" "At-7025" 20.000000 11.536969 2.250000 20.000000 0.000000 0.000000 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 20.000000 0.000000 90.000000
- E 20.000000 -2.250000 101.536969
- S 0 0.000000 0.000000 0.000000 1.177000 0.000000
- S 0 0.000000 1.177000 0.000000 20.000000 0.000000
- C 0 0.000000 77.216289 1.176693 -77.216289 0.000076 11.537121
- S 0 0.000000 16.620459 -1.560127 20.000000 -2.250000
- END
-TURNOUT O "Atlas O 2 Rail # 5 Wye At-7074"
- U "Wye Turnout" "Open Registration" "Atlas O 2 Rail" "# 5 Wye" "At-7074" 13.000000 11.536969 1.500000 1.500000 11.536969 13.000000 0.000000 0.000000 0
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 13.000000 1.500000 78.463031
- E 13.000000 -1.500000 101.536969
- S 0 0.000000 0.000000 0.000000 1.177000 0.000000
- C 0 0.000000 -44.294145 1.177059 44.294145 168.462955 11.537121
- S 0 0.000000 10.035944 0.894947 13.000000 1.500000
- C 0 0.000000 44.294145 1.176824 -44.294145 0.000076 11.537121
- S 0 0.000000 10.035944 -0.894947 13.000000 -1.500000
- END
-TURNOUT O "Atlas O 2 Rail # 7.5 Left At-7021"
- U "Regular Turnout" "" "Atlas O 2 Rail" "# 7.5 Left" "At-7021" "# 7.5 Right" "At-7022" 24.500000 7.662262 2.250000 24.500000 0.000000 0.000000 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 24.500000 0.000000 90.000000
- E 24.500000 2.250000 82.337738
- S 0 0.000000 0.000000 0.000000 1.177000 0.000000
- S 0 0.000000 1.177000 0.000000 24.500000 0.000000
- C 0 0.000000 -98.541858 1.177131 98.541858 172.337662 7.662414
- S 0 0.000000 14.316174 0.879891 24.500000 2.250000
- END
-TURNOUT O "Atlas O 2 Rail # 7.5 Right At-7022"
- U "Regular Turnout" "" "Atlas O 2 Rail" "# 7.5 Left" "At-7021" "# 7.5 Right" "At-7022" 24.500000 7.662262 2.250000 24.500000 0.000000 0.000000 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 24.500000 0.000000 90.000000
- E 24.500000 -2.250000 97.662262
- S 0 0.000000 0.000000 0.000000 1.177000 0.000000
- S 0 0.000000 1.177000 0.000000 24.500000 0.000000
- C 0 0.000000 98.541858 1.176608 -98.541858 0.000076 7.662414
- S 0 0.000000 14.316174 -0.879891 24.500000 -2.250000
- END
-
-
-SUBCONTENTS Atlas O 2 Rail - Straight Track
-TURNOUT O "Atlas O 2 Rail 40"" Straight At-7056"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 40.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 40.000000 0.000000
- END
-TURNOUT O "Atlas O 2 Rail 10"" Straight At-7050"
- U "Straight Section" "" "Atlas O 2 Rail" "10"" Straight" "At-7050" 10.000000 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 10.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 10.000000 0.000000
- END
-TURNOUT O "Atlas O 2 Rail 4.5"" Straight At-7051"
- U "Straight Section" "" "Atlas O 2 Rail" "4.5"" Straight" "At-7051" 4.500000 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.500000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 4.500000 0.000000
- END
-TURNOUT O "Atlas O 2 Rail 1.75"" Straight At-7052"
- U "Straight Section" "" "Atlas O 2 Rail" "1.75"" Straight" "At-7052" 1.750000 0.000000 0.000000 0
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.750000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 1.750000 0.000000
- END
-
-
-SUBCONTENTS Atlas O 2 Rail - Crossings
-TURNOUT O "Atlas O 2 Rail 90 Degree Crossing At-7080"
- U "Crossing" "" "Atlas O 2 Rail" "90 Degree Crossing" "At-7080" 5.000000 90.000000 5.000000 0.000000 0.000000 0
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 5.000000 0.000000 90.000000
- E 2.500007 2.500000 360.000000
- E 2.499993 -2.500000 180.000000
- S 0 0.000000 0.000000 0.000000 5.000000 0.000000
- S 0 0.000000 2.500007 2.500000 2.499993 -2.500000
- END
-TURNOUT O "Atlas O 2 Rail 45 Degree Crossing At-7081"
- U "Crossing" "" "Atlas O 2 Rail" "45 Degree Crossing" "At-7081" 8.250000 45.000000 8.250000 0.000000 0.000000 0
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 8.250000 0.000000 90.000000
- E 1.208179 2.916810 315.000000
- E 7.041821 -2.916810 135.000000
- S 0 0.000000 0.000000 0.000000 8.250000 0.000000
- S 0 0.000000 1.208179 2.916810 7.041821 -2.916810
- END
-
-SUBCONTENTS Atlas O 2 Rail - Misc Track
-TURNOUT O "Atlas O 2 Rail 40"" Single Track Pratt Truss Bridge AT-7920"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 40.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 40.000000 0.000000
- L 0 0.100000 0.000000 -1.500000 40.000000 -1.500000
- L 0 0.100000 0.000000 1.500000 40.000000 1.500000
- L 0 0.100000 6.000000 -1.500000 6.000000 1.500000
- L 0 0.100000 13.000000 -1.500000 13.000000 1.500000
- L 0 0.100000 20.000000 -1.500000 20.000000 1.500000
- L 0 0.100000 27.000000 -1.500000 27.000000 1.500000
- L 0 0.100000 34.000000 -1.500000 34.000000 1.500000
- L 0 0.100000 6.000000 -1.500000 13.000000 1.500000
- L 0 0.100000 13.000000 -1.500000 20.000000 1.500000
- L 0 0.100000 20.000000 -1.500000 27.000000 1.500000
- L 0 0.100000 27.000000 -1.500000 34.000000 1.500000
- END
-TURNOUT O "Atlas O 2 Rail 40"" Double Track Pratt Truss Bridge AT-7921"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 40.000000 0.000000 90.000000
- E 0.000000 3.250000 270.000000
- E 40.000000 3.250000 90.000000
- S 0 0.000000 0.000000 0.000000 40.000000 0.000000
- S 0 0.000000 0.000000 3.250000 40.000000 3.250000
- L 0 0.100000 0.000000 -1.500000 40.000000 -1.500000
- L 0 0.100000 0.000000 4.750000 40.000000 4.750000
- L 0 0.100000 6.000000 -1.500000 6.000000 4.750000
- L 0 0.100000 13.000000 -1.500000 13.000000 4.750000
- L 0 0.100000 20.000000 -1.500000 20.000000 4.750000
- L 0 0.100000 27.000000 -1.500000 27.000000 4.750000
- L 0 0.100000 34.000000 -1.500000 34.000000 4.750000
- L 0 0.100000 6.000000 -1.500000 13.000000 4.750000
- L 0 0.100000 13.000000 -1.500000 20.000000 4.750000
- L 0 0.100000 20.000000 -1.500000 27.000000 4.750000
- L 0 0.100000 27.000000 -1.500000 34.000000 4.750000
- END
-TURNOUT O "Atlas O 2 Rail 20"" Single Track Deck Girder Bridge AT-7923"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 20.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 20.000000 0.000000
- L 0 0.100000 0.000000 -0.750000 20.000000 -0.750000
- L 0 0.100000 0.000000 0.75000 20.000000 0.750000
- END
-TURNOUT O "Atlas O 2 Rail 18"" Single Track Plate Girder Bridge AT-7918"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 18.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 18.000000 0.000000
- L 0 0.050000 0.000000 0.000000 18.000000 0.000000
- L 0 0.100000 1.500000 -2.000000 16.500000 -2.000000
- L 0 0.100000 1.500000 2.000000 16.500000 2.000000
- L 0 0.100000 1.500000 -2.000000 1.500000 -1.250000
- L 0 0.100000 4.500000 -2.000000 4.500000 -1.250000
- L 0 0.100000 7.500000 -2.000000 7.500000 -1.250000
- L 0 0.100000 10.500000 -2.000000 10.500000 -1.250000
- L 0 0.100000 13.500000 -2.000000 13.500000 -1.250000
- L 0 0.100000 16.500000 -2.000000 16.500000 -1.250000
- L 0 0.100000 1.500000 1.250000 1.500000 2.000000
- L 0 0.100000 4.500000 1.250000 4.500000 2.000000
- L 0 0.100000 7.500000 1.250000 7.500000 2.000000
- L 0 0.100000 10.500000 1.250000 10.500000 2.000000
- L 0 0.100000 13.500000 1.250000 13.500000 2.000000
- L 0 0.100000 16.500000 1.250000 16.500000 2.000000
- END
-TURNOUT O "Atlas O 2 Rail 24"" Turntable AT-6910" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- P "7" 7
- P "8" 8
- P "9" 9
- P "10" 10
- P "11" 11
- P "12" 12
-# P "13" -1
-# P "14" -2
-# P "15" -3
-# P "16" -4
-# P "17" -5
-# P "18" -6
-# P "19" -7
-# P "20" -8
-# P "21" -9
-# P "22" -10
-# P "23" -11
-# P "24" -12
- E 0.000000 12.000000 0.000000
- E -0.000000 -12.000000 180.000000
- E 3.105829 11.591110 15.000000
- E -3.105829 -11.591110 195.000000
- E 6.000000 10.392305 30.000000
- E -6.000000 -10.392305 210.000000
- E 8.485281 8.485281 45.000000
- E -8.485281 -8.485281 225.000000
- E 10.392305 6.000000 60.000000
- E -10.392305 -6.000000 240.000000
- E 11.591110 3.105829 75.000000
- E -11.591110 -3.105829 255.000000
- E 12.000000 0.000000 90.000000
- E -12.000000 -0.000000 270.000000
- E 11.591110 -3.105829 105.000000
- E -11.591110 3.105829 285.000000
- E 10.392305 -6.000000 120.000000
- E -10.392305 6.000000 300.000000
- E 8.485281 -8.485281 135.000000
- E -8.485281 8.485281 315.000000
- E 6.000000 -10.392305 150.000000
- E -6.000000 10.392305 330.000000
- E 3.105829 -11.591110 165.000000
- E -3.105829 11.591110 345.000000
-#0/180
- S 16777215 0 0.000000 12.000000 0.000000 -12.000000
-#15/195
- S 16777215 0 3.105829 11.591110 -3.105829 -11.591110
-#30/210
- S 16777215 0 6.000000 10.392305 -6.000000 -10.392305
-#45/225
- S 16777215 0 8.485281 8.485281 -8.485281 -8.485281
-#60/240
- S 16777215 0 10.392305 6.000000 -10.392305 -6.000000
-#75/255
- S 16777215 0 11.591110 3.105829 -11.591110 -3.105829
-#90/270
- S 16777215 0 -12.000000 0.000000 12.000000 0.000000
-#105/285
- S 16777215 0 11.591110 -3.105829 -11.591110 3.105829
-#120/300
- S 16777215 0 10.392305 -6.000000 -10.392305 6.000000
-#135/315
- S 16777215 0 8.485281 -8.485281 -8.485281 8.485281
-#150/330
- S 16777215 0 6.000000 -10.392305 -6.000000 10.392305
-#165/345
- S 16777215 0 3.105829 -11.591110 -3.105829 11.591110
- A 11579568 0.053333 12.000000 0.000000 0.000000 0.000000 360.000000
- A 11579568 0.053333 13.000000 0.000000 0.000000 0.000000 360.000000
- END
diff --git a/app/lib/params/fl-model.xtp b/app/lib/params/fl-model.xtp
deleted file mode 100644
index e9bcea0..0000000
--- a/app/lib/params/fl-model.xtp
+++ /dev/null
@@ -1,500 +0,0 @@
-CONTENTS Fleischmann HO Modell-Gleis
-TURNOUT HO "Fleischmann-Modell Straight 204mm 6001"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.031496 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 8.031496 0.000000
- END
-TURNOUT HO "Fleischmann-Modell Straight 102mm 6002"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.015748 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 4.015748 0.000000
- END
-TURNOUT HO "Fleischmann-Modell Straight 55mm 6003"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.165354 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 2.165354 0.000000
- END
-TURNOUT HO "Fleischmann-Modell Straight 40mm 6004"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 1.574803 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 1.574803 0.000000
- END
-TURNOUT HO "Fleischmann-Modell Straight 165mm 6005"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 6.496063 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 6.496063 0.000000
- END
-TURNOUT HO "Fleischmann-Modell Terminal 102mm 6008"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.015748 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 4.015748 0.000000
- END
-TURNOUT HO "Fleischmann-Modell Adjustable 80-120mm 6010"
- P "Normal" 1
- X adjustable 3.149606 4.724409
- E 0.000000 0.000000 270.000000
- E 3.149606 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 3.149606 0.000000
- END
-TURNOUT HO "Fleischmann-Modell Uncoupler Elec 6012"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.015748 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 4.015748 0.000000
- END
-TURNOUT HO "Fleischmann-Modell Uncoupler Elec w/ signal 102mm 6013"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.015748 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 4.015748 0.000000
- END
-TURNOUT HO "Fleischmann-Modell Uncoupler Man 6014"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.015748 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 4.015748 0.000000
- END
-TURNOUT HO "Fleischmann-Modell Bumper 6014"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.165354 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 2.165354 0.000000
- END
-TURNOUT HO "Fleischmann-Modell Curve 250mm 60° 6020"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.523872 4.921260 30.000000
- C 0 0.000000 -9.842520 0.000000 9.842520 120.000000 60.000000
- END
-TURNOUT HO "Fleischmann-Modell Curve 357mm 45° 6024"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 9.938469 4.116649 45.000000
- C 0 0.000000 -14.055118 0.000000 14.055118 135.000000 45.000000
- END
-TURNOUT HO "Fleischmann-Modell Curve 357mm 30° 6025"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.027559 1.883029 60.000000
- C 0 0.000000 -14.055118 0.000000 14.055118 150.000000 30.000000
- END
-TURNOUT HO "Fleischmann-Modell Curve 357mm 15° 6026"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.637732 0.478917 75.000000
- C 0 0.000000 -14.055118 0.000000 14.055118 165.000000 15.000000
- END
-TURNOUT HO "Fleischmann-Modell Curve 415mm 30° 6030"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 8.169291 2.188955 60.000000
- C 0 0.000000 -16.338583 0.000000 16.338583 150.000000 30.000000
- END
-TURNOUT HO "Fleischmann-Modell Curve 415mm 15° 6032"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.228736 0.556724 75.000000
- C 0 0.000000 -16.338583 0.000000 16.338583 165.000000 15.000000
- END
-TURNOUT HO "Fleischmann-Modell Curve 415mm 7.5° 6033"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.132613 0.139779 82.500000
- C 0 0.000000 -16.338583 0.000000 16.338583 172.500000 7.500000
- END
-TURNOUT HO "Fleischmann-Modell Curve 738mm 15° 6036"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 7.520018 0.990029 75.000000
- C 0 0.000000 -29.055118 0.000000 29.055118 165.000000 15.000000
- END
-TURNOUT HO "Fleischmann-Modell Turntable manual 6050" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- P "7" 7
- P "8" 8
- P "9" 9
- P "10" 10
- P "11" 11
- P "12" 12
- P "13" 13
- P "14" 14
- P "15" 15
- P "16" 16
- P "17" 17
- P "18" 18
- P "19" 19
- P "20" 20
- P "21" 21
- P "22" 22
- P "23" 23
- P "24" 24
- E 0.000000 4.370079 0.000000
- E 1.131060 4.221172 15.000000
- E 2.185039 3.784599 30.000000
- E 3.090112 3.090112 45.000000
- E 3.784599 2.185039 60.000000
- E 4.221172 1.131060 75.000000
- E 4.370079 0.000000 90.000000
- E 4.221172 -1.131060 105.000000
- E 3.784599 -2.185039 120.000000
- E 3.090112 -3.090112 135.000000
- E 2.185039 -3.784599 150.000000
- E 1.131060 -4.221172 165.000000
- E -0.000000 -4.370079 180.000000
- E -1.131060 -4.221172 195.000000
- E -2.185039 -3.784599 210.000000
- E -3.090112 -3.090112 225.000000
- E -3.784599 -2.185039 240.000000
- E -4.221172 -1.131060 255.000000
- E -4.370079 0.000000 270.000000
- E -4.221172 1.131060 285.000000
- E -3.784599 2.185039 300.000000
- E -3.090112 3.090112 315.000000
- E -2.185039 3.784599 330.000000
- E -1.131060 4.221172 345.000000
- S 0 0 0.000000 4.370079 0.000000 3.248031
- S 0 0 1.131060 4.221172 0.840652 3.137358
- S 0 0 2.185039 3.784599 1.624016 2.812878
- S 0 0 3.090112 3.090112 2.296705 2.296705
- S 0 0 3.784599 2.185039 2.812878 1.624016
- S 0 0 4.221172 1.131060 3.137358 0.840652
- S 0 0 4.370079 0.000000 3.248031 0.000000
- S 0 0 4.221172 -1.131060 3.137358 -0.840652
- S 0 0 3.784599 -2.185039 2.812878 -1.624016
- S 0 0 3.090112 -3.090112 2.296705 -2.296705
- S 0 0 2.185039 -3.784599 1.624016 -2.812878
- S 0 0 1.131060 -4.221172 0.840652 -3.137358
- S 0 0 -0.000000 -4.370079 -0.000000 -3.248031
- S 0 0 -1.131060 -4.221172 -0.840652 -3.137358
- S 0 0 -2.185039 -3.784599 -1.624016 -2.812878
- S 0 0 -3.090112 -3.090112 -2.296705 -2.296705
- S 0 0 -3.784599 -2.185039 -2.812878 -1.624016
- S 0 0 -4.221172 -1.131060 -3.137358 -0.840652
- S 0 0 -4.370079 0.000000 -3.248031 0.000000
- S 0 0 -4.221172 1.131060 -3.137358 0.840652
- S 0 0 -3.784599 2.185039 -2.812878 1.624016
- S 0 0 -3.090112 3.090112 -2.296705 2.296705
- S 0 0 -2.185039 3.784599 -1.624016 2.812878
- S 0 0 -1.131060 4.221172 -0.840652 3.137358
- A 16711680 0 4.370079 0.000000 0.000000 0.000000 360.000000
- A 16711680 0 3.248031 0.000000 0.000000 0.000000 360.000000
- END
-TURNOUT HO "Fleischmann-Modell Turntable manual Elec 6052" 512
- P "1" 1
- P "2" 2
- P "3" 3
- P "4" 4
- P "5" 5
- P "6" 6
- P "7" 7
- P "8" 8
- P "9" 9
- P "10" 10
- P "11" 11
- P "12" 12
- P "13" 13
- P "14" 14
- P "15" 15
- P "16" 16
- P "17" 17
- P "18" 18
- P "19" 19
- P "20" 20
- P "21" 21
- P "22" 22
- P "23" 23
- P "24" 24
- E 0.000000 4.370079 0.000000
- E 1.131060 4.221172 15.000000
- E 2.185039 3.784599 30.000000
- E 3.090112 3.090112 45.000000
- E 3.784599 2.185039 60.000000
- E 4.221172 1.131060 75.000000
- E 4.370079 0.000000 90.000000
- E 4.221172 -1.131060 105.000000
- E 3.784599 -2.185039 120.000000
- E 3.090112 -3.090112 135.000000
- E 2.185039 -3.784599 150.000000
- E 1.131060 -4.221172 165.000000
- E -0.000000 -4.370079 180.000000
- E -1.131060 -4.221172 195.000000
- E -2.185039 -3.784599 210.000000
- E -3.090112 -3.090112 225.000000
- E -3.784599 -2.185039 240.000000
- E -4.221172 -1.131060 255.000000
- E -4.370079 0.000000 270.000000
- E -4.221172 1.131060 285.000000
- E -3.784599 2.185039 300.000000
- E -3.090112 3.090112 315.000000
- E -2.185039 3.784599 330.000000
- E -1.131060 4.221172 345.000000
- S 0 0 0.000000 4.370079 0.000000 3.248031
- S 0 0 1.131060 4.221172 0.840652 3.137358
- S 0 0 2.185039 3.784599 1.624016 2.812878
- S 0 0 3.090112 3.090112 2.296705 2.296705
- S 0 0 3.784599 2.185039 2.812878 1.624016
- S 0 0 4.221172 1.131060 3.137358 0.840652
- S 0 0 4.370079 0.000000 3.248031 0.000000
- S 0 0 4.221172 -1.131060 3.137358 -0.840652
- S 0 0 3.784599 -2.185039 2.812878 -1.624016
- S 0 0 3.090112 -3.090112 2.296705 -2.296705
- S 0 0 2.185039 -3.784599 1.624016 -2.812878
- S 0 0 1.131060 -4.221172 0.840652 -3.137358
- S 0 0 -0.000000 -4.370079 -0.000000 -3.248031
- S 0 0 -1.131060 -4.221172 -0.840652 -3.137358
- S 0 0 -2.185039 -3.784599 -1.624016 -2.812878
- S 0 0 -3.090112 -3.090112 -2.296705 -2.296705
- S 0 0 -3.784599 -2.185039 -2.812878 -1.624016
- S 0 0 -4.221172 -1.131060 -3.137358 -0.840652
- S 0 0 -4.370079 0.000000 -3.248031 0.000000
- S 0 0 -4.221172 1.131060 -3.137358 0.840652
- S 0 0 -3.784599 2.185039 -2.812878 1.624016
- S 0 0 -3.090112 3.090112 -2.296705 2.296705
- S 0 0 -2.185039 3.784599 -1.624016 2.812878
- S 0 0 -1.131060 4.221172 -0.840652 3.137358
- A 16711680 0 4.370079 0.000000 0.000000 0.000000 360.000000
- A 16711680 0 3.248031 0.000000 0.000000 0.000000 360.000000
- END
-TURNOUT HO "Fleischmann-Modell 3-Way Turnout 6057"
- P "Left" 1 2 3
- P "Normal" 1 4 7
- P "Right" 1 4 5 6
- E 0.000000 0.000000 270.000000
- E 6.496063 0.855208 75.000000
- E 8.070866 -0.855208 105.000000
- E 8.031496 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 0.648712 0.000000
- C 0 0.000000 -20.171819 0.648712 20.171819 165.000000 15.000000
- S 0 0.000000 5.869564 0.687338 6.496063 0.855208
- S 0 0.000000 0.648712 0.000000 2.223516 -0.000000
- C 0 0.000000 20.171819 2.223516 -20.171819 0.000000 15.000000
- S 0 0.000000 7.444367 -0.687338 8.070866 -0.855208
- S 0 0.000000 2.223516 -0.000000 8.031496 0.000000
- END
-TURNOUT HO "Fleischmann-Modell 3-Way Turnout Elec 6058"
- P "Left" 1 2 3
- P "Normal" 1 4 7
- P "Right" 1 4 5 6
- E 0.000000 0.000000 270.000000
- E 6.496063 0.855208 75.000000
- E 8.070866 -0.855208 105.000000
- E 8.031496 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 0.648712 0.000000
- C 0 0.000000 -20.171819 0.648712 20.171819 165.000000 15.000000
- S 0 0.000000 5.869564 0.687338 6.496063 0.855208
- S 0 0.000000 0.648712 0.000000 2.223516 -0.000000
- C 0 0.000000 20.171819 2.223516 -20.171819 0.000000 15.000000
- S 0 0.000000 7.444367 -0.687338 8.070866 -0.855208
- S 0 0.000000 2.223516 -0.000000 8.031496 0.000000
- END
-TURNOUT HO "Fleischmann-Modell Crossing 30° 6060"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 6.692913 0.000000 90.000000
- E 0.448340 1.673228 300.000000
- E 6.244573 -1.673228 120.000000
- S 0 0.000000 0.000000 0.000000 6.692913 0.000000
- S 0 0.000000 0.448340 1.673228 6.244573 -1.673228
- END
-TURNOUT HO "Fleischmann-Modell Crossing 15° 6062"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 8.641732 0.000000 90.000000
- E 0.147230 1.118322 285.000000
- E 8.494502 -1.118322 105.000000
- S 0 0.000000 0.000000 0.000000 8.641732 0.000000
- S 0 0.000000 0.147230 1.118322 8.494502 -1.118322
- END
-TURNOUT HO "Fleischmann-Modell DoubleSlip 15° 6065" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 7 6
- P "Slip2" 4 8 3
- E 0.000000 0.000000 270.000000
- E 8.641732 0.000000 90.000000
- E 0.147230 1.118322 285.000000
- E 8.494502 -1.118322 105.000000
- S 0 0.000000 0.000000 0.000000 1.297200 0.000000
- S 0 0.000000 1.297200 0.000000 7.344532 0.000000
- S 0 0.000000 7.344532 0.000000 8.641732 0.000000
- S 0 0.000000 0.147230 1.118322 1.400229 0.782582
- S 0 0.000000 1.400229 0.782582 7.241503 -0.782582
- S 0 0.000000 7.241503 -0.782582 8.494502 -1.118322
- C 0 0.000000 22.967025 1.297200 -22.967025 0.000000 15.000000
- C 0 0.000000 -22.967025 7.344532 22.967025 180.000000 15.000000
- END
-TURNOUT HO "Fleischmann-Modell DoubleSlip 15° Elec 6066" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 7 6
- P "Slip2" 4 8 3
- E 0.000000 0.000000 270.000000
- E 8.641732 0.000000 90.000000
- E 0.147230 1.118322 285.000000
- E 8.494502 -1.118322 105.000000
- S 0 0.000000 0.000000 0.000000 1.297200 0.000000
- S 0 0.000000 1.297200 0.000000 7.344532 0.000000
- S 0 0.000000 7.344532 0.000000 8.641732 0.000000
- S 0 0.000000 0.147230 1.118322 1.400229 0.782582
- S 0 0.000000 1.400229 0.782582 7.241503 -0.782582
- S 0 0.000000 7.241503 -0.782582 8.494502 -1.118322
- C 0 0.000000 22.967025 1.297200 -22.967025 0.000000 15.000000
- C 0 0.000000 -22.967025 7.344532 22.967025 180.000000 15.000000
- END
-TURNOUT HO "Fleischmann-Modell Turnout Small Left 6070"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 6.496063 0.000000 90.000000
- E 6.495950 0.855208 75.000000
- S 0 0.000000 0.000000 0.000000 0.648600 0.000000
- S 0 0.000000 0.648600 0.000000 6.496063 0.000000
- C 0 0.000000 -20.171819 0.648600 20.171819 165.000000 15.000000
- S 0 0.000000 5.869451 0.687338 6.495950 0.855208
- END
-TURNOUT HO "Fleischmann-Modell Turnout Small Right 6071"
- U "Regular Turnout" "Sillub Technology" "Fleischmann-Modell" "Turnout Small Left" "6070" "Turnout Small Right" "6071" 6.495950 15.000000 0.855208 6.496063
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 6.496063 0.000000 90.000000
- E 6.495950 -0.855208 105.000000
- S 0 0.000000 0.000000 0.000000 0.648600 0.000000
- S 0 0.000000 0.648600 0.000000 6.496063 0.000000
- C 0 0.000000 20.171819 0.648600 -20.171819 0.000000 15.000000
- S 0 0.000000 5.869451 -0.687338 6.495950 -0.855208
- END
-TURNOUT HO "Fleischmann-Modell Turnout Small Left Elec 6072"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 6.496063 0.000000 90.000000
- E 6.495950 0.855208 75.000000
- S 0 0.000000 0.000000 0.000000 0.648600 0.000000
- S 0 0.000000 0.648600 0.000000 6.496063 0.000000
- C 0 0.000000 -20.171819 0.648600 20.171819 165.000000 15.000000
- S 0 0.000000 5.869451 0.687338 6.495950 0.855208
- END
-TURNOUT HO "Fleischmann-Modell Turnout Small Right Elec 6073"
- U "Regular Turnout" "Sillub Technology" "Fleischmann-Modell" "Turnout Small Left Elec" "6072" "Turnout Small Right Elec" "6073" 6.495950 15.000000 0.855208 6.496063
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 6.496063 0.000000 90.000000
- E 6.495950 -0.855208 105.000000
- S 0 0.000000 0.000000 0.000000 0.648600 0.000000
- S 0 0.000000 0.648600 0.000000 6.496063 0.000000
- C 0 0.000000 20.171819 0.648600 -20.171819 0.000000 15.000000
- S 0 0.000000 5.869451 -0.687338 6.495950 -0.855208
- END
-TURNOUT HO "Fleischmann-Modell Curved Turnout Left 6074"
- P "Normal" 1 4 5
- P "Reverse" 1 6 2 3
- E 0.000000 0.000000 270.000000
- E 7.027559 1.883029 60.000000
- E 7.487507 0.849715 75.000000
- S 0 0.000000 0.000000 0.000000 0.648600 0.000000
- C 0 0.000000 -20.010608 1.681881 20.010608 165.000000 15.000000
- S 0 0.000000 6.861007 0.681845 7.487507 0.849715
- C 0 0.000000 -11.634510 0.648600 11.634510 150.000000 30.000000
- S 0 0.000000 6.465855 1.558729 7.027559 1.883029
- S 0 0.000000 0.648600 0.000000 1.681881 0.000000
- END
-TURNOUT HO "Fleischmann-Modell Curved Turnout Right 6075"
- U "Curved Turnout" "Sillub Technology" "Fleischmann-Modell" "Curved Turnout Left" "6074" "Curved Turnout Right" "6075" 7.487507 15.000000 0.849715 30.000000 1.883029 7.027559
- P "Normal" 1 4 5
- P "Reverse" 1 6 2 3
- E 0.000000 0.000000 270.000000
- E 7.027559 -1.883029 120.000000
- E 7.487507 -0.849715 105.000000
- S 0 0.000000 0.000000 0.000000 0.648600 0.000000
- C 0 0.000000 20.010608 1.681881 -20.010608 0.000000 15.000000
- S 0 0.000000 6.861007 -0.681845 7.487507 -0.849715
- C 0 0.000000 11.634510 0.648600 -11.634510 0.000000 30.000000
- S 0 0.000000 6.465855 -1.558729 7.027559 -1.883029
- S 0 0.000000 0.648600 0.000000 1.681881 0.000000
- END
-TURNOUT HO "Fleischmann-Modell Curved Turnout Left Elec 6076"
- P "Normal" 1 4 5
- P "Reverse" 1 6 2 3
- E 0.000000 0.000000 270.000000
- E 7.027559 1.883029 60.000000
- E 7.487507 0.849715 75.000000
- S 0 0.000000 0.000000 0.000000 0.648600 0.000000
- C 0 0.000000 -20.010608 1.681881 20.010608 165.000000 15.000000
- S 0 0.000000 6.861007 0.681845 7.487507 0.849715
- C 0 0.000000 -11.634510 0.648600 11.634510 150.000000 30.000000
- S 0 0.000000 6.465855 1.558729 7.027559 1.883029
- S 0 0.000000 0.648600 0.000000 1.681881 0.000000
- END
-TURNOUT HO "Fleischmann-Modell Curved Turnout Right Elec 6077"
- U "Curved Turnout" "Sillub Technology" "Fleischmann-Modell" "Curved Turnout Left Elec" "6076" "Curved Turnout Right Elec" "6077" 7.487507 15.000000 0.849715 30.000000 1.883029 7.027559
- P "Normal" 1 4 5
- P "Reverse" 1 6 2 3
- E 0.000000 0.000000 270.000000
- E 7.027559 -1.883029 120.000000
- E 7.487507 -0.849715 105.000000
- S 0 0.000000 0.000000 0.000000 0.648600 0.000000
- C 0 0.000000 20.010608 1.681881 -20.010608 0.000000 15.000000
- S 0 0.000000 6.861007 -0.681845 7.487507 -0.849715
- C 0 0.000000 11.634510 0.648600 -11.634510 0.000000 30.000000
- S 0 0.000000 6.465855 -1.558729 7.027559 -1.883029
- S 0 0.000000 0.648600 0.000000 1.681881 0.000000
- END
-TURNOUT HO "Fleischmann-Modell Turnout Medium Left 6078"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 8.031496 0.000000 90.000000
- E 8.031496 0.990029 75.000000
- S 0 0.000000 0.000000 0.000000 1.160081 0.000000
- S 0 0.000000 1.160081 0.000000 8.031496 0.000000
- C 0 0.000000 -24.128500 1.160081 24.128500 165.000000 15.000000
- S 0 0.000000 7.404997 0.822159 8.031496 0.990029
- END
-TURNOUT HO "Fleischmann-Modell Turnout Medium Right 6079"
- U "Regular Turnout" "Sillub Technology" "Fleischmann-Modell" "Turnout Medium Left" "6078" "Turnout Medium Right" "6079" 8.031496 15.000000 0.990029 8.031496
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 8.031496 0.000000 90.000000
- E 8.031496 -0.990029 105.000000
- S 0 0.000000 0.000000 0.000000 1.160081 0.000000
- S 0 0.000000 1.160081 0.000000 8.031496 0.000000
- C 0 0.000000 24.128500 1.160081 -24.128500 0.000000 15.000000
- S 0 0.000000 7.404997 -0.822159 8.031496 -0.990029
- END
-TURNOUT HO "Fleischmann-Modell Turnout Medium Left Elec 6080"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 8.031496 0.000000 90.000000
- E 8.031496 0.990029 75.000000
- S 0 0.000000 0.000000 0.000000 1.160081 0.000000
- S 0 0.000000 1.160081 0.000000 8.031496 0.000000
- C 0 0.000000 -24.128500 1.160081 24.128500 165.000000 15.000000
- S 0 0.000000 7.404997 0.822159 8.031496 0.990029
- END
-TURNOUT HO "Fleischmann-Modell Turnout Medium Right Elec 6081"
- U "Regular Turnout" "Sillub Technology" "Fleischmann-Modell" "Turnout Medium Left Elec" "6080" "Turnout Medium Right Elec" "6081" 8.031496 15.000000 0.990029 8.031496
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 8.031496 0.000000 90.000000
- E 8.031496 -0.990029 105.000000
- S 0 0.000000 0.000000 0.000000 1.160081 0.000000
- S 0 0.000000 1.160081 0.000000 8.031496 0.000000
- C 0 0.000000 24.128500 1.160081 -24.128500 0.000000 15.000000
- S 0 0.000000 7.404997 -0.822159 8.031496 -0.990029
- END
diff --git a/app/lib/params/mkcarpart.c b/app/lib/params/mkcarpart.c
index 1d2bf9f..21a46d1 100644
--- a/app/lib/params/mkcarpart.c
+++ b/app/lib/params/mkcarpart.c
@@ -13,7 +13,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 <stdio.h>
@@ -272,10 +272,10 @@ void processFile(
char desc[256];
long color;
char scale[256];
- double length;
- double width;
- double couplerLength;
- double truckCenter;
+ double length = 0.0;
+ double width = 0.0;
+ double couplerLength = 0.0;
+ double truckCenter = 0.0;
double ratio = 0.0;
int option = 0;
int type = 30100;
@@ -436,8 +436,6 @@ void processFile(
int main ( int argc, char * argv[] )
{
- char *exename = argv[ 0 ];
-
argv++;
argc--;
diff --git a/app/lib/params/mkstruct.c b/app/lib/params/mkstruct.c
index 8024ec8..9c8b1f2 100644
--- a/app/lib/params/mkstruct.c
+++ b/app/lib/params/mkstruct.c
@@ -19,7 +19,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 <stdio.h>
@@ -43,13 +43,11 @@ int main ( int argc, char * argv [] )
long color = 0xFF00FF;
double x;
double y;
- int cm = 0;
FILE *fIn, *fOut;
int count = 0;
char *buffer = malloc( BUFSIZE );
char *desc;
char *p1;
- char *p2 = malloc( BUFSIZE );
char *scale;
char *ptr;
int err;
diff --git a/app/lib/params/mrkln1.xtp b/app/lib/params/mrkln1.xtp
deleted file mode 100644
index de5aaf3..0000000
--- a/app/lib/params/mrkln1.xtp
+++ /dev/null
@@ -1,82 +0,0 @@
-CONTENTS Märklin 1 Scale Turnouts
-# From 'Märklin Complete Program 1994/95 E'
-# Straight Section Design by Dave Bullis - 11.811024
-TURNOUT 1 "Märklin Straight 300mm 5903"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 11.811024 0.000000 90.000000
- S 0 0 0.000000 0.000000 11.811000 0.000000
- END
-TURNOUT 1 "Märklin Straight 150mm 5917"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.905512 0.000000 90.000000
- S 0 0 0.000000 0.000000 5.906000 0.000000
- END
-TURNOUT 1 "Märklin Straight 80.4mm 5904"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 3.165354 0.000000 90.000000
- S 0 0 0.000000 0.000000 3.165000 0.000000
- END
-TURNOUT 1 "Märklin Straight 59.5mm 5916"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 2.342520 0.000000 90.000000
- S 0 0 0.000000 0.000000 2.343000 0.000000
- END
-# Curved Section Design by Dave Bullis - 23.622047 30.000000
-TURNOUT 1 "Märklin Curved R600mm 30° 5922"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 11.811023 -3.164754 120.000000
- C 0 0 23.622000 0.000000 -23.622000 0.000000 30.000000
- END
-TURNOUT 1 "Märklin Curved R1020mm 22.5° 5935"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 15.367602 -3.056806 112.500000
- C 0 0 40.157000 0.000000 -40.157000 0.000000 22.500000
- END
-TURNOUT 1 "Märklin Curved R1176mm 22.5° 5936"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 17.717942 -3.524318 112.500000
- C 0 0 46.299000 0.000000 -46.299000 0.000000 22.500000
- END
-TURNOUT 1 "Märklin Short Right Turnout 5966"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 11.811024 0.000000 90.000000
- E 11.811024 -3.164754 120.000000
- S 0 0 0.000000 0.000000 11.811000 0.000000
- C 0 0 23.622000 0.000000 -23.622000 0.000000 30.000000
- END
-TURNOUT 1 "Märklin Short Left Turnout 5965"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 11.811024 0.000000 90.000000
- E 11.811024 3.164754 60.000000
- S 0 0 0.000000 0.000000 11.811000 0.000000
- C 0 0 -23.622000 0.000000 23.622000 150.000000 30.000000
- END
-TURNOUT 1 "Märklin Medium Right Turnout 5977"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 15.374016 0.000000 90.000000
- E 15.367602 -3.056806 112.500000
- S 0 0 0.000000 0.000000 15.374000 0.000000
- C 0 0 40.157000 0.000000 -40.157000 0.000000 22.500000
- END
-TURNOUT 1 "Märklin Medium Left Turnout 5976"
- P "Normal" 1
- P "Reverse" 2
- E 0.000000 0.000000 270.000000
- E 15.374016 0.000000 90.000000
- E 15.367602 3.056806 67.500000
- S 0 0 0.000000 0.000000 15.374000 0.000000
- C 0 0 -40.157000 0.000000 40.157000 157.500000 22.500000
- END
diff --git a/app/lib/params/peco-O-Bullhead.xtp b/app/lib/params/peco-O-Bullhead.xtp
deleted file mode 100644
index df60085..0000000
--- a/app/lib/params/peco-O-Bullhead.xtp
+++ /dev/null
@@ -1,82 +0,0 @@
-CONTENTS Peco O Scale Bullhead Turnouts
-# Created By Dwyane Ward July 14 2007
-# Based on the following info I found on the internet
-# SLE791BH/SLE792BH - L/R Turnout
-# radius: 1282mm (72")
-# angle: 8 degrees
-# length: 416mm (16 3/8")
-# SLE797BH - Y Turnout
-# radius: 1282mm (72")
-# angle: 8 degrees
-# length: 381mm (15")
-# SL790BH - Dbl Slip
-# radius: 1282mm (72")
-# angle: 8 degrees
-# length: made the same as long cross
-# SLE794BH - Long Crossing
-# angle: 8 degrees
-# length: 584mm (23")
-
-# I used a estimate distance of 1.375" on the diverging end of the turnouts
-
-TURNOUT O "Peco LH turnout SLE-792BH"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 16.377953 0.000000 90.000000
- E 16.377953 1.375000 82.000000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- S 0 0.000000 1.250000 0.000000 16.377953 0.000000
- C 0 0.000000 -76.429514 1.250101 76.429514 171.999924 8.000152
- S 0 0.000000 11.887124 0.743834 16.377953 1.375000
- END
-TURNOUT O "Peco RH turnout SLE-791BH"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 16.377953 0.000000 90.000000
- E 16.377953 -1.375000 98.000000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- S 0 0.000000 1.250000 0.000000 16.377953 0.000000
- C 0 0.000000 76.429514 1.249696 -76.429514 0.000076 8.000152
- S 0 0.000000 11.887124 -0.743834 16.377953 -1.375000
- END
-TURNOUT O "Peco Y turnout SLE-797BH"
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 15.000000 0.687500 86.000000
- E 15.000000 -0.687500 94.000000
- S 0 0.000000 0.000000 0.000000 1.250000 0.000000
- C 0 0.000000 -112.213233 1.250149 112.213233 175.999924 4.000152
- S 0 0.000000 9.077890 0.273366 15.000000 0.687500
- C 0 0.000000 112.213233 1.249553 -112.213233 0.000076 4.000152
- S 0 0.000000 9.077890 -0.273366 15.000000 -0.687500
- END
-TURNOUT O "Peco Long Crossing SLE-794BH"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 22.992126 0.000000 90.000000
- E 0.111877 1.599926 278.000000
- E 22.880249 -1.599926 98.000000
- S 0 0.000000 0.000000 0.000000 22.992126 0.000000
- S 0 0.000000 0.111877 1.599926 22.880249 -1.599926
- END
-TURNOUT O "Peco Double Slip SL-790BH" 512
- P "Cross1" 1 2 3
- P "Cross2" 4 5 6
- P "Slip1" 1 7 6
- P "Slip2" 4 8 3
- E 0.000000 0.000000 270.000000
- E 22.992126 0.000000 90.000000
- E 0.111877 1.599926 278.000000
- E 22.880249 -1.599926 98.000000
- S 0 0.000000 0.000000 0.000000 2.500607 0.000000
- S 0 0.000000 2.500607 0.000000 20.491519 0.000000
- S 0 0.000000 20.491519 0.000000 22.992126 0.000000
- S 0 0.000000 0.111877 1.599926 2.587207 1.252014
- S 0 0.000000 2.587207 1.252014 20.404919 -1.252014
- S 0 0.000000 20.404919 -1.252014 22.880249 -1.599926
- C 0 0.000000 128.645470 2.500095 -128.645470 0.000076 8.000152
- C 0 0.000000 -128.645470 20.491688 128.645446 180.000076 8.000152
- END
diff --git a/app/lib/params/proto-ng-3-foot.xtp b/app/lib/params/proto-ng-3-foot.xtp
index aeb6c15..87f36eb 100644
--- a/app/lib/params/proto-ng-3-foot.xtp
+++ b/app/lib/params/proto-ng-3-foot.xtp
@@ -46,7 +46,7 @@ CARPROTO "2-8-0, Baldwin Consolidation C-19" 2 10201 370.000 100.000 0 0 140.000
A3 2631720 8.400000 16.000000 294.000000 50.000000 0 180.000000 360.000000
A3 10132122 3.400000 20.000000 194.000000 50.000000 0 180.000000 360.000000
A3 10132122 3.400000 22.000000 144.000000 50.000000 0 180.000000 360.000000
- G3 10132122 3.400000 10.000000 244.000000 50.000000.0
+ G3 10132122 3.400000 10.000000 244.000000 50.000000 0
END$SEGS
CARPROTO "Tender, Consolidation Short" 0 10201 240.000 100.000 0 0 160.000 250.000
F3 3881787 0.000000 4
diff --git a/app/lib/params/protoam.xtp b/app/lib/params/protoam.xtp
index 7547f62..90a9e17 100644
--- a/app/lib/params/protoam.xtp
+++ b/app/lib/params/protoam.xtp
@@ -70,6 +70,7 @@
#
#############################################################################################
CONTENTS North American Rolling-Stock Prototype Cars
+CONTENTS North American Prototypes
CARPROTO "Box, 40'" 0 30100 486.500 126.000 0 0 368.000 518.500
F3 255 0.000000 4
0.000000 0.000000 0
@@ -2985,4 +2986,4 @@ CARPROTO "44t" 2 10101 340.000 114.000 0 0 231.500 364.000
213.000000 114.000000 0
127.000000 114.000000 0
127.000000 0.000000 0
-END \ No newline at end of file
+END
diff --git a/app/lib/params/protosteam.xtp b/app/lib/params/protosteam.xtp
index 2b1a17b..913ddd9 100644
--- a/app/lib/params/protosteam.xtp
+++ b/app/lib/params/protosteam.xtp
@@ -43,7 +43,7 @@ CARPROTO "2-8-2, USRA Mikado" 2 10201 583.000 120.000 0 0 433.000 590.000
A3 2631720 8.400000 16.000000 520.000000 60.000000 0 180.000000 360.000000
A3 10132122 3.400000 30.000000 441.000000 60.000000 0 180.000000 360.000000
A3 10132122 3.400000 25.000000 255.000000 60.000000 0 180.000000 360.000000
- G3 10132122 3.400000 10.000000 140.000000 60.000000.0
+ G3 10132122 3.400000 10.000000 140.000000 60.000000 0
END
CARPROTO "2-8-2, USRA Mikado, Silver Nose" 2 10201 583.000 120.000 0 0 433.000 590.000
F3 3881787 0.000000 5
@@ -71,7 +71,7 @@ CARPROTO "2-8-2, USRA Mikado, Silver Nose" 2 10201 583.000 120.000 0 0 433.000 5
A3 10132122 3.400000 30.000000 441.000000 60.000000 0 180.000000 360.000000
A3 10132122 3.400000 25.000000 255.000000 60.000000 0 180.000000 360.000000
G3 3881787 3.4000000 15.000000 520.000000 60.000000 0
- G3 10132122 3.400000 10.000000 140.000000 60.000000.0
+ G3 10132122 3.400000 10.000000 140.000000 60.000000 0
END
CARPROTO "2-8-0, Consolidation" 2 10201 420.000 120.000 0 0 300.000 440.000
F3 3881787 0.000000 5
@@ -93,7 +93,7 @@ CARPROTO "2-8-0, Consolidation" 2 10201 420.000 120.000 0 0 300.000 440.000
A3 2631720 8.400000 16.000000 354.000000 60.000000 0 180.000000 360.000000
A3 10132122 3.400000 20.000000 234.000000 60.000000 0 180.000000 360.000000
A3 10132122 3.400000 22.000000 170.000000 60.000000 0 180.000000 360.000000
- G3 10132122 3.400000 10.000000 294.000000 60.000000.0
+ G3 10132122 3.400000 10.000000 294.000000 60.000000 0
END
CARPROTO "4-8-8-4, Big Boy" 2 10201 1024.000 132.000 0 0 870.000 1200.000
F3 3881787 0.000000 7
@@ -151,7 +151,7 @@ CARPROTO "4-8-8-4, Big Boy" 2 10201 1024.000 132.000 0 0 870.000 1200.000
A3 2631720 4.400000 18.000000 756.000000 66.000000 0 180.000000 360.000000
A3 2631720 4.400000 18.000000 808.000000 66.000000 0 180.000000 360.000000
A3 10132122 3.400000 25.000000 494.000000 66.000000 0 180.000000 360.000000
- G3 10132122 3.400000 15.000000 869.000000 66.000000.0
+ G3 10132122 3.400000 15.000000 869.000000 66.000000 0
END
CARPROTO "Tender, USRA Mikado " 0 10201 360.000 120.000 0 0 244.000 372.000
F3 3881787 0.000000 4
diff --git a/app/lib/xtrkcad-beta.desktop b/app/lib/xtrkcad-beta.desktop
new file mode 100644
index 0000000..56ddd82
--- /dev/null
+++ b/app/lib/xtrkcad-beta.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=XTrackCAD-Beta
+Comment=Design model railroad layouts
+Exec=xtrkcad-beta
+Icon=xtrkcad
+Terminal=false
+Type=Application
+Categories=Graphics
+
diff --git a/app/lib/xtrkcad-setup b/app/lib/xtrkcad-setup
index 6e12dc5..d4b8e78 100755
--- a/app/lib/xtrkcad-setup
+++ b/app/lib/xtrkcad-setup
@@ -2,6 +2,7 @@
usage() {
echo "$0 (install|remove|desktop) <install-dir>"
+ echo
echo "install: Sets up file associations and menus for XTrkCad"
echo "remove: Removes file associations and menus for XTrkCad"
echo "desktop: Installs short cut on the user's desktop"
@@ -18,8 +19,8 @@ if [ $# -ne 2 ] ; then
usage
fi
-COMMAND=$1
-export INSTALLDIR=$2
+COMMAND="$1"
+export INSTALLDIR="$2"
if [ ! -d ${INSTALLDIR} ] ; then
echo "$0: $INSTALLDIR: not found"
@@ -49,7 +50,8 @@ if [ "$COMMAND" = "install" ] ; then
# Set icon for file browser
xdg-icon-resource install --context mimetypes --novendor --size 64 ${INSTALLDIR}/pixmaps/xtrkcad.png xtrkcad
# set icon for file browser
- xdg-icon-resource install --novendor --size 64 ${INSTALLDIR}/pixmaps/xtrkcad.png application-x-xtrkcad
+ xdg-icon-resource install --context apps --novendor --size 64 ${INSTALLDIR}/pixmaps/xtrkcad.png xtrkcad
+ xdg-icon-resource install --context apps --novendor --size 64 ${INSTALLDIR}/pixmaps/xtrkcad.png application-x-xtrkcad
echo SETUP MIME
# mimetype for .xtc files is application/x-xtrkcad
xdg-mime install --novendor ${INSTALLDIR}/applications/xtrkcad.xml
@@ -63,11 +65,15 @@ if [ "$COMMAND" = "install" ] ; then
chmod 755 ${HOME}/Desktop/xtrkcad.desktop
elif [ "$COMMAND" = "remove" ] ; then
+ echo REMOVE DESKTOP
xdg-desktop-icon uninstall --novendor ${INSTALLDIR}/applications/xtrkcad.desktop
xdg-desktop-menu uninstall ${INSTALLDIR}/applications/xtrkcad.desktop
+ echo REMOVE MIME
xdg-mime uninstall --novendor ${INSTALLDIR}/applications/xtrkcad.xml
- xdg-icon-resource uninstall --novendor --size 64 xtrkcad
- xdg-icon-resource uninstall --novendor --context mimetypes --size 64 xtrkcad
+ echo REMOVE ICONS
+ xdg-icon-resource uninstall --context apps --novendor --size 64 application-x-xtrkcad
+ xdg-icon-resource uninstall --context apps --novendor --size 64 xtrkcad
+ xdg-icon-resource uninstall --context mimetypes --novendor --size 64 xtrkcad
elif [ "$COMMAND" = "desktop" ] ; then
echo SETUP DESKTOP
diff --git a/app/lib/xtrkcad.upd b/app/lib/xtrkcad.upd
index 0db5608..193b36c 100644
--- a/app/lib/xtrkcad.upd
+++ b/app/lib/xtrkcad.upd
@@ -1,4 +1,29 @@
-20211112
+# Update Param Files
+# First non-comment line must be numeric date: YYYYMMDD
+# If this is less or equal to 'file.updatetime' in xtrkcad.rc/ini then this file is ignored
+20240119
+# Files listed here are
+# - File Renames: Same CONTENTS, different files (old files should be deleted)
+# - Modified CONTENTS: multiple CONTENTS lines. 1st is active contents, subsequent lines are old
+#
+# Updated files from V5.3.0B2
+HO-Atlas Code 100 Track.xtp
+HO-fl-model.xtp
+HO-fl-profi.xtp
+HO-Peco-Code70USA.xtp
+HO-Walthers Cornerstone 1.xtp
+N-walthers-n.xtp
+# Updated files from V5.3.0B1
+1-mrkln.xtp
+HO-Jouef(Hornby)HO.xtp
+O-Peco-Bullhead.xtp
+Z-Micro-Trains.xtp
+Sn3-Fast Tracks.xtp
+G-Lionel Ready-To-Play Track.xtp
+G-Playmobil RC Track.xtp
+O-Atlas2Rail.xtp
+# Updated files from V5.2.2b2
+#20211112
N-Atlas Code 80 Track.xtp
G-Piko.xtp
HO-Piko-A.xtp
diff --git a/app/lib/xtrkcad.xtq b/app/lib/xtrkcad.xtq
index fbe7ac3..96cb13e 100644
--- a/app/lib/xtrkcad.xtq
+++ b/app/lib/xtrkcad.xtq
@@ -391,7 +391,7 @@ STRUCTURE DEMO "LED T1 Green LED "
L3 0 0.000000 0.059000 0.000000 0 -0.059000 0.000000 0
L3 0 0.000000 0.000000 0.059000 0 0.000000 -0.059000 0
END
-STRUCTURE DEMO "Switch ¼"" Push Button "
+STRUCTURE DEMO "Switch ¼"" Push Button "
G3 16448250 0.000000 0.125000 0.000000 0.000000 0
A3 0 0.013889 0.125000 0.000000 0.000000 0 0.000000 360.000000
A3 0 0.013889 0.050000 0.000000 0.000000 0 0.000000 360.000000
@@ -421,7 +421,7 @@ STRUCTURE DEMO "Signals Dbl Signal 2"
L3 0 0.027778 0.000000 -0.320000 0 0.000000 -0.600000 0
L3 0 0.027778 -0.100000 -0.600000 0 0.100000 -0.600000 0
END
-STRUCTURE DEMO "Symbols ¼"" DOT "
+STRUCTURE DEMO "Symbols ¼"" DOT "
G3 0 0.000000 0.125000 0.000000 0.000000 0
END
STRUCTURE DEMO "Symbols Arrow "
diff --git a/app/tools/CMakeLists.txt b/app/tools/CMakeLists.txt
index befe170..433d464 100644
--- a/app/tools/CMakeLists.txt
+++ b/app/tools/CMakeLists.txt
@@ -1,15 +1,10 @@
-set ( sources listxtp.c )
+add_executable(listxtp listxtp.c)
+set_target_properties(listxtp PROPERTIES FOLDER "Param Files")
if (WIN32)
- set ( sources
- ${sources}
- dirent.c)
-
- include_directories( before ${CMAKE_CURRENT_SOURCE_DIR})
+ target_sources(listxtp PRIVATE dirent.c )
endif ()
-
-add_executable( listxtp ${sources})
add_subdirectory(halibut)
-
+add_subdirectory(pngtoxpm)
diff --git a/app/tools/HACKING b/app/tools/HACKING
index fbed100..0b25ea1 100644
--- a/app/tools/HACKING
+++ b/app/tools/HACKING
@@ -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
*/
int global; /**< this is a global variable */
diff --git a/app/tools/TurnoutDesigner.xtr b/app/tools/TurnoutDesigner.xtr
new file mode 100644
index 0000000..11e8c73
--- /dev/null
+++ b/app/tools/TurnoutDesigner.xtr
@@ -0,0 +1,918 @@
+# XTrackCAD Version: 5.3.0Beta1, Date: Fri May 27 12:14:43 2022
+
+VERSION 12
+ROOMSIZE 96.0 x 48.0
+SCALE DEMO
+ORIG 4.000 0.000 0.000
+# LOG CLOCK Thu May 26 16:02:31 2022
+
+MESSAGE
+Test Turnout Designer
+
+This demo invokes each Turnout Designer and generates the turnout definition.
+Each definition is placed on the layout and Regression checks that each matches.
+
+Instructions:
+ Run xtrkcad with the regression option set to 2:
+ xtrkcad -d regression=2
+
+ Select the recording (Macro|Playback) from $(SRCDIR)/app/tools/TurnoutDesigner.xtr
+
+ Playback the demo. You probably want to choose a faster playback Speed.
+
+Check the log file (Linux: stdout, Windows: xtclog.txt)
+END$MESSAGE
+STEP
+PARAMETER grid horzspacing 12.000
+PARAMETER grid horzdivision 12
+PARAMETER grid horzenable 0
+PARAMETER grid vertspacing 12.000
+PARAMETER grid vertdivision 12
+PARAMETER grid vertenable 0
+PARAMETER grid origx 0.000
+PARAMETER grid origy 0.000
+PARAMETER grid origa 0.000
+PARAMETER grid show 0
+PARAMETER GROUP grid
+PARAMETER easement val 0.000
+PARAMETER easement r 0.000
+PARAMETER easement x 0.000
+PARAMETER easement l 0.000
+PARAMETER GROUP easement
+PARAMETER layout roomsizeX 96.000
+PARAMETER layout roomsizeY 48.000
+PARAMETER layout title1 Empty
+PARAMETER layout title2
+PARAMETER layout mintrackradius 11.000
+PARAMETER layout maxtrackgrade 5.000
+PARAMETER layout backgroundposX 0.000
+PARAMETER layout backgroundposY 0.000
+PARAMETER layout backgroundWidth 0.000
+PARAMETER layout backgroundScreen 0
+PARAMETER layout backgroundAngle 0.000
+PARAMETER GROUP layout
+PARAMETER display color-track 0
+PARAMETER display color-draw 0
+PARAMETER display tunnels 1
+PARAMETER display endpt 2
+PARAMETER display unconnected-endpt 0
+PARAMETER display tiedraw 0
+PARAMETER display centerdraw 0
+PARAMETER display tworailscale 16
+PARAMETER display mapscale 41
+PARAMETER display donthidecursor 0
+PARAMETER display constrainmain 0
+PARAMETER display livemap 0
+PARAMETER display autoPan 0
+PARAMETER display labelenable 0
+PARAMETER display labelscale 8
+PARAMETER display description-fontsize 72
+PARAMETER display hotbarlabels 1
+PARAMETER display layoutlabels 6
+PARAMETER display listlabels 7
+PARAMETER display carhotbarlabels 1 Proto/Manuf
+PARAMETER display trainpause 300
+PARAMETER display hideTrainsInTunnels 0
+PARAMETER GROUP display
+PARAMETER cmdopt preselect 1
+PARAMETER cmdopt rightclickmode 0
+PARAMETER cmdopt selectmode 0
+PARAMETER cmdopt selectzero 1
+PARAMETER GROUP cmdopt
+PARAMETER pref iconsize 1
+PARAMETER pref anglesystem 0
+PARAMETER pref units 0
+PARAMETER pref dstfmt 1
+PARAMETER pref minlength 0.100
+PARAMETER pref connectdistance 0.100
+PARAMETER pref connectangle 1.000
+PARAMETER pref turntable-angle 15.000
+PARAMETER pref coupling-speed-max 100
+PARAMETER pref balloonhelp 1
+PARAMETER pref showflextrack 0
+PARAMETER pref dragpixels 20
+PARAMETER pref dragtimeout 500
+PARAMETER pref mingridspacing 5
+PARAMETER pref checkpoint 0
+PARAMETER pref autosave 0
+PARAMETER pref onstartup 0
+PARAMETER GROUP pref
+PARAMETER rgbcolor snapgrid 65280
+PARAMETER rgbcolor marker 16711680
+PARAMETER rgbcolor border 0
+PARAMETER rgbcolor crossmajor 16711680
+PARAMETER rgbcolor crossminor 255
+PARAMETER rgbcolor normal 0
+PARAMETER rgbcolor selected 16711680
+PARAMETER rgbcolor profile 16711935
+PARAMETER rgbcolor exception 16711808
+PARAMETER rgbcolor tie 16744448
+#PARAMETER rgbcolor bridge 16777215
+#PARAMETER rgbcolor roadbed 12823467
+PARAMETER GROUP rgbcolor
+PARAMETER misc toolbarset 65535
+PARAMETER misc cur-turnout-ep 0
+PARAMETER GROUP misc
+PARAMETER sticky set 67108479
+PARAMETER GROUP sticky
+LAYERS 0 1 0 1 255 0 0 0 0 "Main" 1 0 9.750000 0.000000 0.616800 0.100000 0.200000
+LAYERS 1 1 0 1 128 0 0 0 0 "Staging" 1 0 9.750000 0.000000 0.616800 0.100000 0.200000
+LAYERS 2 0 0 1 32768 0 0 0 0 "Switch Machines" 1 0 9.750000 0.000000 0.616800 0.100000 0.200000
+LAYERS 3 0 0 0 16776960 0 0 0 0 "Lighting and Ductwork" 1 0 9.750000 0.000000 0.616800 0.100000 0.200000
+LAYERS 4 0 0 1 65280 0 0 0 0 "" 1 0 9.750000 0.000000 0.616800 0.100000 0.200000
+LAYERS 5 1 0 1 65535 0 0 0 0 "Table Edges" 1 0 9.750000 0.000000 0.616800 0.100000 0.200000
+LAYERS 6 1 0 1 179456 0 0 0 0 "" 1 0 9.750000 0.000000 0.616800 0.100000 0.200000
+LAYERS 7 0 0 1 8388736 0 0 0 0 "Scenery Details" 1 0 9.750000 0.000000 0.616800 0.100000 0.200000
+LAYERS 8 0 0 1 8421376 0 0 0 0 "BenchWork" 1 0 9.750000 0.000000 0.616800 0.100000 0.200000
+LAYERS 9 1 0 1 16711935 0 0 0 0 "Body Circles" 1 0 9.750000 0.000000 0.616800 0.100000 0.200000
+LAYERS 10 0 0 1 255 0 0 0 0 "Old tracks" 1 0 9.750000 0.000000 0.616800 0.100000 0.200000
+LAYERS CURRENT 0
+REDRAW
+RESET
+CTURNOUT DESIGNER SHOW Regular Turnout
+PARAMETER turnoutNew len0 0.000
+PARAMETER turnoutNew len1 0.000
+PARAMETER turnoutNew off0 0.000
+PARAMETER turnoutNew angle0 0.000
+PARAMETER turnoutNew manuf x
+PARAMETER turnoutNew desc1 x
+PARAMETER turnoutNew partno1 x
+PARAMETER turnoutNew desc2 x
+PARAMETER turnoutNew partno2 x
+PARAMETER turnoutNew roadbedWidth 0.000
+PARAMETER turnoutNew roadbedLineWidth 0
+PARAMETER turnoutNew color 0
+PARAMETER turnoutNew angleMode 1
+PARAMETER GROUP turnoutNew
+PARAMETER turnoutNew len0 5.000000
+PARAMETER turnoutNew angle0 6.000000
+PARAMETER turnoutNew angleMode 0
+PARAMETER turnoutNew off0 0.750000
+PARAMETER turnoutNew len1 6.000000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1 Regular Left
+PARAMETER turnoutNew partno1 L
+PARAMETER turnoutNew desc2 Regular Right
+PARAMETER turnoutNew partno2 R
+PARAMETER turnoutNew partno1 Reg L
+PARAMETER turnoutNew partno2 Reg R
+PARAMETER turnoutNew done
+PARAMETER turnoutNew partno2 Reg R
+
+CTURNOUT DESIGNER SHOW Curved Turnout
+PARAMETER turnoutNew len0 0.000
+PARAMETER turnoutNew len1 0.000
+PARAMETER turnoutNew off0 0.000
+PARAMETER turnoutNew off1 0.000
+PARAMETER turnoutNew angle0 0.000
+PARAMETER turnoutNew angle1 0.000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1
+PARAMETER turnoutNew partno1
+PARAMETER turnoutNew desc2
+PARAMETER turnoutNew partno2
+PARAMETER turnoutNew roadbedWidth 0.000
+PARAMETER turnoutNew roadbedLineWidth 0
+PARAMETER turnoutNew color 0
+PARAMETER turnoutNew angleMode 0
+PARAMETER GROUP turnoutNew
+PARAMETER turnoutNew angle0 4.000000
+PARAMETER turnoutNew angle1 6.000000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1 Curved Left
+PARAMETER turnoutNew partno1 Crv L
+PARAMETER turnoutNew desc2 Curved Right
+PARAMETER turnoutNew partno2 Crv R
+PARAMETER turnoutNew len0 6.000000
+PARAMETER turnoutNew len1 7.000000
+PARAMETER turnoutNew off1 0.500000
+PARAMETER turnoutNew off0 1.000000
+PARAMETER turnoutNew done
+PARAMETER turnoutNew off0 1.000000
+
+CTURNOUT DESIGNER SHOW Cornu Curved Turnout
+PARAMETER turnoutNew len0 0.000
+PARAMETER turnoutNew off0 0.000
+PARAMETER turnoutNew rad2 0.000
+PARAMETER turnoutNew angle0 0.000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1
+PARAMETER turnoutNew partno1
+PARAMETER turnoutNew desc2
+PARAMETER turnoutNew partno2
+PARAMETER turnoutNew roadbedWidth 0.000
+PARAMETER turnoutNew roadbedLineWidth 0
+PARAMETER turnoutNew color 0
+PARAMETER turnoutNew angleMode 1
+PARAMETER GROUP turnoutNew
+PARAMETER turnoutNew len0 6.000
+PARAMETER turnoutNew angle0 14.500
+PARAMETER turnoutNew off0 1.100
+PARAMETER turnoutNew rad0 18.000
+PARAMETER turnoutNew len1 7.000
+PARAMETER turnoutNew angle1 9.6
+PARAMETER turnoutNew off1 0.770
+PARAMETER turnoutNew rad1 17.000
+PARAMETER turnoutNew toeL 0.500
+PARAMETER turnoutNew rad2 0.000
+PARAMETER turnoutNew desc1 Cornu Curved Left
+PARAMETER turnoutNew partno1 Cor Crv L
+PARAMETER turnoutNew desc2 Cornu Curved Right
+PARAMETER turnoutNew partno2 Cor Crv R
+PARAMETER turnoutNew done
+
+CTURNOUT DESIGNER SHOW Wye Turnout
+PARAMETER turnoutNew len0 0.000
+PARAMETER turnoutNew len1 0.000
+PARAMETER turnoutNew off0 0.000
+PARAMETER turnoutNew off1 0.000
+PARAMETER turnoutNew angle0 0.000
+PARAMETER turnoutNew angle1 0.000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1
+PARAMETER turnoutNew partno1
+PARAMETER turnoutNew roadbedWidth 0.000
+PARAMETER turnoutNew roadbedLineWidth 0
+PARAMETER turnoutNew color 0
+PARAMETER turnoutNew angleMode 0
+PARAMETER GROUP turnoutNew
+PARAMETER turnoutNew len0 5.000000
+PARAMETER turnoutNew off0 1.000000
+PARAMETER turnoutNew off1 1.000000
+PARAMETER turnoutNew len1 5.000000
+PARAMETER turnoutNew desc1 Wye
+PARAMETER turnoutNew partno1 Wye
+PARAMETER turnoutNew partno1 Wye
+PARAMETER turnoutNew angle0 3.000000
+PARAMETER turnoutNew angle1 3.000000
+PARAMETER turnoutNew done
+PARAMETER turnoutNew angle1 3.000000
+
+CTURNOUT DESIGNER SHOW Cornu Wye Turnout
+PARAMETER turnoutNew len0 0.000
+PARAMETER turnoutNew len1 0.000
+PARAMETER turnoutNew off0 0.000
+PARAMETER turnoutNew off1 0.000
+PARAMETER turnoutNew rad0 0.000
+PARAMETER turnoutNew rad1 0.000
+PARAMETER turnoutNew rad2 0.000
+PARAMETER turnoutNew toeL 0.000
+PARAMETER turnoutNew angle0 0.000
+PARAMETER turnoutNew angle1 0.000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1
+PARAMETER turnoutNew partno1
+PARAMETER turnoutNew roadbedWidth 0.000
+PARAMETER turnoutNew roadbedLineWidth 0
+PARAMETER turnoutNew color 0
+PARAMETER turnoutNew angleMode 1
+PARAMETER GROUP turnoutNew
+PARAMETER turnoutNew len0 5.000
+PARAMETER turnoutNew angle0 19.500
+PARAMETER turnoutNew off0 1.000
+PARAMETER turnoutNew rad0 18.000
+PARAMETER turnoutNew len1 5.000
+PARAMETER turnoutNew angle1 19.500
+PARAMETER turnoutNew off1 1.000
+PARAMETER turnoutNew rad1 18.000
+PARAMETER turnoutNew toeL 0.354
+PARAMETER turnoutNew rad2 0.000
+PARAMETER turnoutNew desc1 Cornu Wye
+PARAMETER turnoutNew partno1 Cor Wye
+PARAMETER turnoutNew done
+PARAMETER turnoutNew partno1 Cor Wye
+
+CTURNOUT DESIGNER SHOW 3-way Turnout
+PARAMETER turnoutNew len0 0.000
+PARAMETER turnoutNew len1 0.000
+PARAMETER turnoutNew len2 0.000
+PARAMETER turnoutNew off0 0.000
+PARAMETER turnoutNew off1 0.000
+PARAMETER turnoutNew angle0 0.000
+PARAMETER turnoutNew angle1 0.000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1
+PARAMETER turnoutNew partno1
+PARAMETER turnoutNew roadbedWidth 0.000
+PARAMETER turnoutNew roadbedLineWidth 0
+PARAMETER turnoutNew color 0
+PARAMETER turnoutNew angleMode 0
+PARAMETER GROUP turnoutNew
+PARAMETER turnoutNew len2 7.000000
+PARAMETER turnoutNew len0 6.000000
+PARAMETER turnoutNew angle0 3.000000
+PARAMETER turnoutNew off0 1.000000
+PARAMETER turnoutNew off1 1.000000
+PARAMETER turnoutNew angle1 3.000000
+PARAMETER turnoutNew len1 5.000000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1 3-Way
+PARAMETER turnoutNew partno1 3 Way
+PARAMETER turnoutNew len1 6.000000
+PARAMETER turnoutNew done
+PARAMETER turnoutNew len1 6.000000
+
+CTURNOUT DESIGNER SHOW Cornu 3-way Turnout
+PARAMETER turnoutNew len0 0.000
+PARAMETER turnoutNew len1 0.000
+PARAMETER turnoutNew len3 0.000
+PARAMETER turnoutNew off0 0.000
+PARAMETER turnoutNew off1 0.000
+PARAMETER turnoutNew off3 0.000
+PARAMETER turnoutNew rad0 0.000
+PARAMETER turnoutNew rad1 0.000
+PARAMETER turnoutNew rad2 0.000
+PARAMETER turnoutNew rad3 0.000
+PARAMETER turnoutNew toeL 0.000
+PARAMETER turnoutNew toeR 0.000
+PARAMETER turnoutNew angle0 0.000
+PARAMETER turnoutNew angle1 0.000
+PARAMETER turnoutNew angle3 0.000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1
+PARAMETER turnoutNew partno1
+PARAMETER turnoutNew roadbedWidth 0.000
+PARAMETER turnoutNew roadbedLineWidth 0
+PARAMETER turnoutNew color 0
+PARAMETER turnoutNew angleMode 1
+PARAMETER GROUP turnoutNew
+PARAMETER turnoutNew len0 5.000
+PARAMETER turnoutNew angle0 19.2
+PARAMETER turnoutNew off0 1.000
+PARAMETER turnoutNew rad0 18.000
+PARAMETER turnoutNew len1 5.000
+PARAMETER turnoutNew angle1 19.2
+PARAMETER turnoutNew off1 1.000
+PARAMETER turnoutNew rad1 18.000
+PARAMETER turnoutNew len3 6.000
+PARAMETER turnoutNew angle3 0.000
+PARAMETER turnoutNew off3 0.000
+PARAMETER turnoutNew rad3 0.000
+PARAMETER turnoutNew toeL 0.354
+PARAMETER turnoutNew rad2 0.000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1 Cornu 3-Way
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew partno1 Cor 3 Way
+PARAMETER turnoutNew done
+PARAMETER turnoutNew partno1 Cor 3 Way
+
+CTURNOUT DESIGNER SHOW Crossing
+PARAMETER turnoutNew len0 0.000
+PARAMETER turnoutNew len1 0.000
+PARAMETER turnoutNew angle0 0.000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1
+PARAMETER turnoutNew partno1
+PARAMETER turnoutNew roadbedWidth 0.000
+PARAMETER turnoutNew roadbedLineWidth 0
+PARAMETER turnoutNew color 0
+PARAMETER turnoutNew angleMode 0
+PARAMETER GROUP turnoutNew
+PARAMETER turnoutNew len0 6.000000
+PARAMETER turnoutNew angle0 4.000000
+PARAMETER turnoutNew len1 5.000000
+PARAMETER turnoutNew desc1 Xing
+PARAMETER turnoutNew partno1 Xing
+PARAMETER turnoutNew desc1 Crossing
+PARAMETER turnoutNew done
+PARAMETER turnoutNew desc1 Crossing
+CTURNOUT DESIGNER SHOW Single Slipswitch
+PARAMETER turnoutNew len0 0.000
+PARAMETER turnoutNew len1 0.000
+PARAMETER turnoutNew angle0 0.000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1
+PARAMETER turnoutNew partno1
+PARAMETER turnoutNew roadbedWidth 0.000
+PARAMETER turnoutNew roadbedLineWidth 0
+PARAMETER turnoutNew color 0
+PARAMETER turnoutNew angleMode 0
+PARAMETER GROUP turnoutNew
+PARAMETER turnoutNew len0 5.000000
+PARAMETER turnoutNew angle0 4.000000
+PARAMETER turnoutNew len1 6.000000
+PARAMETER turnoutNew desc1 Single Slip
+PARAMETER turnoutNew partno1 S Slip
+PARAMETER turnoutNew done
+PARAMETER turnoutNew partno1 S Slip
+CTURNOUT DESIGNER SHOW Double Slipswitch
+PARAMETER turnoutNew len0 0.000
+PARAMETER turnoutNew len1 0.000
+PARAMETER turnoutNew angle0 0.000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1
+PARAMETER turnoutNew partno1
+PARAMETER turnoutNew roadbedWidth 0.000
+PARAMETER turnoutNew roadbedLineWidth 0
+PARAMETER turnoutNew color 0
+PARAMETER turnoutNew angleMode 0
+PARAMETER turnoutNew slipMode 1
+PARAMETER GROUP turnoutNew
+PARAMETER turnoutNew angle0 4.000000
+PARAMETER turnoutNew len1 5.000000
+PARAMETER turnoutNew len0 6.000000
+PARAMETER turnoutNew desc1 Double Slip
+PARAMETER turnoutNew partno1 D Slip
+PARAMETER turnoutNew done
+PARAMETER turnoutNew partno1 D Slip
+CTURNOUT DESIGNER SHOW Right Crossover
+PARAMETER turnoutNew len0 0.000
+PARAMETER turnoutNew off0 0.000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1
+PARAMETER turnoutNew partno1
+PARAMETER turnoutNew roadbedWidth 0.000
+PARAMETER turnoutNew roadbedLineWidth 0
+PARAMETER turnoutNew color 0
+PARAMETER GROUP turnoutNew
+PARAMETER turnoutNew len0 7.000000
+PARAMETER turnoutNew off0 1.500000
+PARAMETER turnoutNew desc1 Right Crossover
+PARAMETER turnoutNew partno1 Xovr R
+PARAMETER turnoutNew done
+PARAMETER turnoutNew partno1 Xovr R
+CTURNOUT DESIGNER SHOW Left Crossover
+PARAMETER turnoutNew len0 0.000
+PARAMETER turnoutNew off0 0.000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1
+PARAMETER turnoutNew partno1
+PARAMETER turnoutNew roadbedWidth 0.000
+PARAMETER turnoutNew roadbedLineWidth 0
+PARAMETER turnoutNew color 0
+PARAMETER GROUP turnoutNew
+PARAMETER turnoutNew len0 7.000000
+PARAMETER turnoutNew off0 1.500000
+PARAMETER turnoutNew desc1 Left Crossover
+PARAMETER turnoutNew partno1 Xovr L
+PARAMETER turnoutNew done
+PARAMETER turnoutNew partno1 Xovr L
+CTURNOUT DESIGNER SHOW Double Crossover
+PARAMETER turnoutNew len0 0.000
+PARAMETER turnoutNew off0 0.000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1
+PARAMETER turnoutNew partno1
+PARAMETER turnoutNew roadbedWidth 0.000
+PARAMETER turnoutNew roadbedLineWidth 0
+PARAMETER turnoutNew color 0
+PARAMETER GROUP turnoutNew
+PARAMETER turnoutNew len0 7.000000
+PARAMETER turnoutNew off0 1.500000
+PARAMETER turnoutNew desc1 Double Crossover
+PARAMETER turnoutNew partno1 Xovr D
+PARAMETER turnoutNew done
+PARAMETER turnoutNew partno1 Xovr D
+CTURNOUT DESIGNER SHOW Straight Section
+PARAMETER turnoutNew len0 0.000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1
+PARAMETER turnoutNew partno1
+PARAMETER turnoutNew roadbedWidth 0.000
+PARAMETER turnoutNew roadbedLineWidth 0
+PARAMETER turnoutNew color 0
+PARAMETER GROUP turnoutNew
+PARAMETER turnoutNew len0 6.000000
+PARAMETER turnoutNew desc1 Straight
+PARAMETER turnoutNew partno1 Str
+PARAMETER turnoutNew done
+PARAMETER turnoutNew partno1 Str
+CTURNOUT DESIGNER SHOW Curved Section
+PARAMETER turnoutNew len0 0.000
+PARAMETER turnoutNew angle0 0.000
+PARAMETER turnoutNew manuf Turnout Designer
+PARAMETER turnoutNew desc1
+PARAMETER turnoutNew partno1
+PARAMETER turnoutNew roadbedWidth 0.000
+PARAMETER turnoutNew roadbedLineWidth 0
+PARAMETER turnoutNew color 0
+PARAMETER GROUP turnoutNew
+PARAMETER turnoutNew len0 15.000000
+PARAMETER turnoutNew angle0 15.000000
+PARAMETER turnoutNew desc1 Curved
+PARAMETER turnoutNew partno1 Crv
+PARAMETER turnoutNew done
+PARAMETER turnoutNew partno1 Crv
+MESSAGE
+-----------------------------------------------------
+
+Create an instance of each turnout
+END$MESSAGE
+STEP
+
+HOTBARSELECT Turnout Designer Regular Left Reg L
+MOUSE 2 1.000 1.000
+MOUSE 4 1.000 1.000
+MOUSE 3336 1.000 1.000
+
+HOTBARSELECT Turnout Designer Regular Right Reg R
+MOUSE 2 1.000 3.000
+MOUSE 4 1.000 3.000
+MOUSE 3336 1.000 3.000
+
+HOTBARSELECT Turnout Designer Curved Left Crv L
+MOUSE 2 1.000 4.500
+MOUSE 4 1.000 4.500
+MOUSE 3336 1.000 4.500
+
+HOTBARSELECT Turnout Designer Curved Right Crv R
+MOUSE 2 1.000 7.500
+MOUSE 4 1.000 7.500
+MOUSE 3336 1.000 7.500
+
+HOTBARSELECT Turnout Designer Cornu Curved Left Cor Crv L
+MOUSE 2 1.000 9.500
+MOUSE 4 1.000 9.500
+MOUSE 3336 1.000 9.500
+
+HOTBARSELECT Turnout Designer Cornu Curved Right Cor Crv R
+MOUSE 2 1.000 12.000
+MOUSE 4 1.000 12.000
+MOUSE 3336 1.000 12.000
+
+HOTBARSELECT Turnout Designer Wye Wye
+MOUSE 2 9.500 1.000
+MOUSE 4 9.500 1.000
+MOUSE 3336 9.500 1.000
+
+HOTBARSELECT Turnout Designer Cornu Wye Cor Wye
+MOUSE 2 9.500 3.000
+MOUSE 4 9.500 3.000
+MOUSE 3336 9.500 3.000
+
+HOTBARSELECT Turnout Designer 3-Way 3 Way
+MOUSE 2 9.500 5.000
+MOUSE 4 9.500 5.000
+MOUSE 3336 9.500 3.000
+
+HOTBARSELECT Turnout Designer Cornu 3-Way Cor 3 Way
+MOUSE 2 9.500 7.000
+MOUSE 4 9.500 7.000
+MOUSE 3336 9.500 7.000
+
+HOTBARSELECT Turnout Designer Crossing Xing
+MOUSE 2 9.500 9.000
+MOUSE 4 9.500 9.000
+MOUSE 3336 9.500 9.000
+
+HOTBARSELECT Turnout Designer Single Slip S Slip
+MOUSE 2 9.500 11.000
+MOUSE 4 9.500 11.000
+MOUSE 3336 9.500 11.000
+
+HOTBARSELECT Turnout Designer Double Slip D Slip
+MOUSE 2 9.500 13.000
+MOUSE 4 9.500 13.000
+MOUSE 3336 9.500 13.000
+
+HOTBARSELECT Turnout Designer Right Crossover Xovr R
+MOUSE 2 18.000 1.000
+MOUSE 4 18.000 1.000
+MOUSE 3336 18.000 1.000
+
+HOTBARSELECT Turnout Designer Left Crossover Xovr L
+MOUSE 2 18.000 4.000
+MOUSE 4 18.000 4.000
+MOUSE 3336 18.000 4.000
+
+HOTBARSELECT Turnout Designer Double Crossover Xovr D
+MOUSE 2 18.000 7.000
+MOUSE 4 18.000 7.000
+MOUSE 3336 18.000 7.000
+
+HOTBARSELECT Turnout Designer Straight Str
+MOUSE 2 18.000 10.000
+MOUSE 4 18.000 10.000
+MOUSE 3336 18.000 10.000
+
+HOTBARSELECT Turnout Designer Curved Crv
+MOUSE 2 18.000 12.000
+MOUSE 4 18.000 12.000
+MOUSE 3336 18.000 12.000
+
+MESSAGE
+-----------------------------------------------------
+
+Run Regression Checks
+END$MESSAGE
+STEP
+REGRESSION START 12 Turnout Designer Test Case
+TURNOUT 1 0 0 0 0 DEMO 2 1.000000 1.000000 0 0.000000 "Turnout Designer Regular Left Reg L"
+ E4 1.000000 1.000000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 7.000000 1.000000 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 6.000000 1.750000 80.405932 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 6.000000 0.000000
+ C 0 0.000000 -2.486173 0.354300 2.486173 170.405932 9.594068
+ S 0 0.000000 0.768662 0.034773 5.000000 0.750000
+ END$SEGS
+TURNOUT 2 0 0 0 0 DEMO 2 1.000000 3.000000 0 0.000000 "Turnout Designer Regular Right Reg R"
+ E4 1.000000 3.000000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 7.000000 3.000000 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 6.000000 2.250000 99.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ S 0 0.000000 0.000000 0.000000 0.354300 -0.000000
+ S 0 0.000000 0.354300 -0.000000 6.000000 0.000000
+ C 0 0.000000 2.486173 0.354300 -2.486173 0.000000 9.594068
+ S 0 0.000000 0.768662 -0.034773 5.000000 -0.750000
+ END$SEGS
+TURNOUT 3 0 0 0 0 DEMO 2 1.000000 4.500000 0 0.000000 "Turnout Designer Curved Left Crv L"
+ E4 1.000000 4.500000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 8.000000 5.000000 80.405932 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 7.000000 5.500000 75.522488 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 6 4 5
+ P "Reverse" 1 2 3
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ C 0 0.000000 -13.956569 0.354300 13.956569 165.522488 14.477512
+ S 0 0.000000 3.843442 0.443179 6.000000 1.000000
+ C 0 0.000000 -31.526372 1.396260 31.526372 170.405932 9.594068
+ S 0 0.000000 6.650655 0.440950 7.000000 0.500000
+ S 0 0.000000 0.354300 0.000000 1.396260 0.000000
+ END$SEGS
+TURNOUT 4 0 0 0 0 DEMO 2 1.000000 7.500000 0 0.000000 "Turnout Designer Curved Right Crv R"
+ E4 1.000000 7.500000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 8.000000 7.000000 99.594068 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 7.000000 6.500000 104.477512 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 6 4 5
+ P "Reverse" 1 2 3
+ S 0 0.000000 0.000000 0.000000 0.354300 -0.000000
+ C 0 0.000000 13.956569 0.354300 -13.956569 0.000000 14.477512
+ S 0 0.000000 3.843442 -0.443179 6.000000 -1.000000
+ C 0 0.000000 31.526372 1.396260 -31.526372 0.000000 9.594068
+ S 0 0.000000 6.650655 -0.440950 7.000000 -0.500000
+ S 0 0.000000 0.354300 -0.000000 1.396260 -0.000000
+ END$SEGS
+TURNOUT 5 0 0 0 0 DEMO 2 1.000000 9.500000 0 0.000000 "Turnout Designer Cornu Curved Left Cor Crv L"
+ E4 1.000000 9.500000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 8.000000 10.270000 80.400000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 7.000000 10.600000 75.500000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 5 6 7 8
+ S 0 0.000000 0.000000 0.000000 0.499980 0.001608
+ C 0 0.000000 -23.557999 -0.084688 23.552351 170.856688 7.721184
+ S 0 0.000000 3.658782 0.293681 6.802609 0.737807
+ C 0 0.000000 -17.000000 4.164931 17.531933 170.400000 0.674068
+ C 0 0.000000 -10.187780 0.450483 10.189268 172.093896 7.627733
+ C 0 0.000000 -12.230134 -0.027711 12.183174 164.805564 6.354200
+ S 0 0.000000 3.177751 0.380581 5.806096 1.051001
+ C 0 0.000000 -18.000000 1.493160 18.526658 165.500000 0.636620
+ END$SEGS
+TURNOUT 6 0 0 0 0 DEMO 2 1.000000 12.000000 0 0.000000 "Turnout Designer Cornu Curved Right Cor Crv R"
+ E4 1.000000 12.000000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 8.000000 11.230000 99.600000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 7.000000 10.900000 104.500000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4
+ P "Reverse" 1 5 6 7 8
+ S 0 0.000000 0.000000 0.000000 0.499980 -0.001608
+ C 0 0.000000 23.557999 -0.084688 -23.552351 1.422128 7.721184
+ S 0 0.000000 3.658782 -0.293681 6.802609 -0.737807
+ C 0 0.000000 17.000000 4.164931 -17.531933 8.925932 0.674068
+ C 0 0.000000 10.187780 0.450483 -10.189268 0.278371 7.627733
+ C 0 0.000000 12.230134 -0.027711 -12.183174 8.840236 6.354200
+ S 0 0.000000 3.177751 -0.380581 5.806096 -1.051001
+ C 0 0.000000 18.000000 1.493160 -18.526658 13.863380 0.636620
+ END$SEGS
+TURNOUT 7 0 0 0 0 DEMO 2 9.500000 1.000000 0 0.000000 "Turnout Designer Wye Wye"
+ E4 9.500000 1.000000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 14.500000 2.000000 70.528779 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 14.500000 0.000000 109.471221 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ C 0 0.000000 -10.591843 0.354300 10.591843 160.528779 19.471221
+ S 0 0.000000 3.884914 0.605758 5.000000 1.000000
+ C 0 0.000000 10.591843 0.354300 -10.591843 0.000000 19.471221
+ S 0 0.000000 3.884914 -0.605758 5.000000 -1.000000
+ END$SEGS
+TURNOUT 8 0 0 0 0 DEMO 2 9.500000 3.000000 0 0.000000 "Turnout Designer Cornu Wye Cor Wye"
+ E4 9.500000 3.000000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 14.500000 4.000000 70.500000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 14.500000 2.000000 109.500000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Left" 1 2 3 4 5 6
+ P "Right" 1 2 7 8 9 10
+ S 0 0.000000 0.000000 0.000000 0.200000 0.000000
+ S 0 0.000000 0.200000 0.000000 0.354000 0.000000
+ C 0 0.000000 -11.721160 0.500050 11.720250 175.110495 5.603451
+ C 0 0.000000 -7.987944 0.693119 7.988923 165.986563 8.222483
+ C 0 0.000000 -20.842358 -2.596956 20.415677 159.180018 6.303393
+ C 0 0.000000 -18.000000 -1.008523 17.967547 160.500000 0.636620
+ C 0 0.000000 10.805495 0.496564 -10.804555 359.244037 6.074250
+ C 0 0.000000 7.902213 0.624248 -7.899322 6.348994 8.306227
+ C 0 0.000000 29.327974 -4.982624 -28.578689 15.031369 4.476610
+ C 0 0.000000 18.000000 -1.008523 -17.967547 18.863380 0.636620
+ END$SEGS
+TURNOUT 9 0 0 0 0 DEMO 2 9.500000 5.000000 0 0.000000 "Turnout Designer 3-Way 3 Way"
+ E4 9.500000 5.000000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 15.500000 6.000000 70.528779 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 15.500000 4.000000 109.471221 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 16.500000 5.000000 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Left" 1 2 3
+ P "Normal" 1 6
+ P "Right" 1 4 5
+ S 0 0.000000 0.000000 0.000000 0.525873 0.000000
+ C 0 0.000000 -15.420270 0.525873 15.420270 160.528779 19.471221
+ S 0 0.000000 5.665963 0.881900 6.000000 1.000000
+ C 0 0.000000 15.420270 0.525873 -15.420270 0.000000 19.471221
+ S 0 0.000000 5.665963 -0.881900 6.000000 -1.000000
+ S 0 0.000000 0.525873 0.000000 7.000000 0.000000
+ END$SEGS
+TURNOUT 10 0 0 0 0 DEMO 2 9.500000 7.000000 0 0.000000 "Turnout Designer Cornu 3-Way Cor 3 Way"
+ E4 9.500000 7.000000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 14.500000 8.000000 70.800000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 14.500000 6.000000 109.200000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 15.500000 7.000000 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 4 5
+ P "Left" 1 2 3 6 7 8 9
+ P "Right" 1 2 10 11 12 13
+ S 0 0.000000 0.000000 0.000000 0.200000 0.000000
+ S 0 0.000000 0.200000 0.000000 0.000000 0.000000
+ S 0 0.000000 0.000000 0.000000 0.354000 0.000000
+ S 0 0.000000 0.354000 0.000000 5.800000 0.000000
+ S 0 0.000000 5.800000 0.000000 6.000000 0.000000
+ C 0 0.000000 -11.463991 0.499120 11.463072 174.997261 5.728053
+ C 0 0.000000 -7.957029 0.675689 7.957092 165.809447 8.252862
+ C 0 0.000000 -22.458410 -3.058640 21.969836 159.488282 5.848707
+ C 0 0.000000 -18.000000 -0.919600 17.998775 160.800000 0.636620
+ C 0 0.000000 13.194589 0.155392 -13.193674 359.325214 5.350882
+ C 0 0.000000 9.251876 0.335646 -9.251448 5.553830 7.631375
+ C 0 0.000000 25.329956 -3.475308 -24.871603 13.518938 5.575451
+ C 0 0.000000 18.000000 -0.919600 -17.998775 18.563380 0.636620
+ END$SEGS
+TURNOUT 11 0 0 0 0 DEMO 2 9.500000 9.000000 0 0.000000 "Turnout Designer Crossing Xing"
+ E4 9.500000 9.000000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 15.500000 9.000000 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 10.079385 9.625000 284.477512 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 14.920615 8.375000 104.477512 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 0 2
+ S 0 0.000000 0.000000 0.000000 6.000000 0.000000
+ S 0 0.000000 0.579385 0.625000 5.420615 -0.625000
+ END$SEGS
+TURNOUT 12 0 0 0 0 DEMO 2 9.500000 11.000000 0 0.000000 "Turnout Designer Single Slip S Slip"
+ E4 9.500000 11.000000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 14.500000 11.000000 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 9.095262 11.750000 284.477512 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 14.904738 10.250000 104.477512 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 1 5 4
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 5.000000 0.000000
+ S 0 0.000000 -0.404738 0.750000 4.577565 -0.536425
+ S 0 0.000000 4.577565 -0.536425 5.404738 -0.750000
+ C 0 0.000000 16.893060 0.354300 -16.893060 0.000000 14.477512
+ END$SEGS
+TURNOUT 13 0 512 0 0 DEMO 2 9.500000 13.000000 0 0.000000 "Turnout Designer Double Slip D Slip"
+ E4 9.500000 13.000000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 15.500000 13.000000 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 10.079385 13.625000 284.477512 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 14.920615 12.375000 104.477512 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Cross1" 1 2 3
+ P "Cross2" 4 5 6
+ P "Slip1" 1 7 6
+ P "Slip2" 4 8 3
+ S 0 0.000000 0.000000 0.000000 1.208600 0.000000
+ S 0 0.000000 1.208600 0.000000 4.791400 0.000000
+ S 0 0.000000 4.791400 0.000000 6.000000 0.000000
+ S 0 0.000000 0.579385 0.625000 1.265484 0.447850
+ S 0 0.000000 1.265484 0.447850 4.734516 -0.447850
+ S 0 0.000000 4.734516 -0.447850 5.420615 -0.625000
+ C 0 0.000000 14.103662 1.208600 -14.103662 0.000000 14.477512
+ C 0 0.000000 -14.103662 4.791400 14.103662 180.000000 14.477512
+ END$SEGS
+TURNOUT 14 0 0 0 0 DEMO 2 18.000000 1.000000 0 0.000000 "Turnout Designer Right Crossover Xovr R"
+ E4 18.000000 1.000000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 25.000000 1.000000 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 18.000000 2.500000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 25.000000 2.500000 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 3 5 6 7 2
+ S 0 0.000000 0.000000 0.000000 6.461065 0.000000
+ S 0 0.000000 6.461065 0.000000 7.000000 0.000000
+ S 0 0.000000 0.000000 1.500000 0.538935 1.500000
+ S 0 0.000000 0.538935 1.500000 7.000000 1.500000
+ C 0 0.000000 6.136583 0.538935 -4.636583 0.000000 25.493739
+ S 0 0.000000 3.180197 0.902495 3.819803 0.597505
+ C 0 0.000000 -6.136583 6.461065 6.136583 180.000000 25.493739
+ END$SEGS
+TURNOUT 15 0 0 0 0 DEMO 2 18.000000 4.000000 0 0.000000 "Turnout Designer Left Crossover Xovr L"
+ E4 18.000000 4.000000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 25.000000 4.000000 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 18.000000 5.500000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 25.000000 5.500000 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 1 5 6 7 4
+ S 0 0.000000 0.000000 0.000000 0.538935 0.000000
+ S 0 0.000000 0.538935 0.000000 7.000000 0.000000
+ S 0 0.000000 0.000000 1.500000 6.461065 1.500000
+ S 0 0.000000 6.461065 1.500000 7.000000 1.500000
+ C 0 0.000000 -6.136583 0.538935 6.136583 154.506261 25.493739
+ S 0 0.000000 3.180197 0.597505 3.819803 0.902495
+ C 0 0.000000 6.136583 6.461065 -4.636583 334.506261 25.493739
+ END$SEGS
+TURNOUT 16 0 0 0 0 DEMO 2 18.000000 7.000000 0 0.000000 "Turnout Designer Double Crossover Xovr D"
+ E4 18.000000 7.000000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 25.000000 7.000000 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 18.000000 8.500000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 25.000000 8.500000 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1 2 3 0 4 5 6
+ P "Reverse" 1 7 8 9 6 0 4 10 11 12 3
+ S 0 0.000000 0.000000 0.000000 0.538935 0.000000
+ S 0 0.000000 0.538935 0.000000 6.461065 0.000000
+ S 0 0.000000 6.461065 0.000000 7.000000 0.000000
+ S 0 0.000000 0.000000 1.500000 0.538935 1.500000
+ S 0 0.000000 0.538935 1.500000 6.461065 1.500000
+ S 0 0.000000 6.461065 1.500000 7.000000 1.500000
+ C 0 0.000000 -6.136583 0.538935 6.136583 154.506261 25.493739
+ S 0 0.000000 3.180197 0.597505 3.819803 0.902495
+ C 0 0.000000 6.136583 6.461065 -4.636583 334.506261 25.493739
+ C 0 0.000000 6.136583 0.538935 -4.636583 0.000000 25.493739
+ S 0 0.000000 3.180197 0.902495 3.819803 0.597505
+ C 0 0.000000 -6.136583 6.461065 6.136583 180.000000 25.493739
+ END$SEGS
+TURNOUT 17 0 0 0 0 DEMO 2 18.000000 10.000000 0 0.000000 "Turnout Designer Straight Str"
+ E4 18.000000 10.000000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 24.000000 10.000000 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 6.000000 0.000000
+ END$SEGS
+TURNOUT 18 0 0 0 0 DEMO 2 18.000000 12.000000 0 0.000000 "Turnout Designer Curved Crv"
+ E4 18.000000 12.000000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 21.882286 12.511113 75.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -15.000000 0.000000 15.000000 165.000000 15.000000
+ END$SEGS
+REGRESSION END
+
+MESSAGE
+-----------------------------------------------------
+
+Remove the parameter definitions
+END$MESSAGE
+STEP
+
+PARAMETER misc cmdCustmgm
+PARAMETER custmgm inx 0 Turnout Designer DEMO Reg L Regular Left
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO Reg R Regular Right
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO Crv L Curved Left
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO Crv R Curved Right
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO Cor Crv L Cornu Curved Left
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO Cor Crv R Cornu Curved Right
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO Wye Wye
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO Cor Wye Cornu Wye
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO 3 Way 3-Way
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO Cor 3 Way Cornu 3-Way
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO Xing Crossing
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO S Slip Single Slip
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO D Slip Double Slip
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO Xovr R Right Crossover
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO Xovr L Left Crossover
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO Xovr D Double Crossover
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO Str Straight
+PARAMETER custmgm delete
+PARAMETER custmgm inx 0 Turnout Designer DEMO Crv Curved
+PARAMETER custmgm delete
+PARAMETER custmgm ok
+
+MESSAGE
+-----------------------------------------------------
+
+End of Playback. Hit Step to exit
+END$MESSAGE
+STEP
diff --git a/app/tools/halibut/CMakeLists.txt b/app/tools/halibut/CMakeLists.txt
index ec7d74b..a4ddc75 100644
--- a/app/tools/halibut/CMakeLists.txt
+++ b/app/tools/halibut/CMakeLists.txt
@@ -1,4 +1,5 @@
-SET(SOURCES
+
+add_executable(halibut
biblio.c
bk_html.c
contents.c
@@ -22,11 +23,13 @@ SET(SOURCES
ustring.c
version.c
wcwidth.c
- )
+)
-INCLUDE_DIRECTORIES(charset)
-ADD_EXECUTABLE(halibut ${SOURCES})
-TARGET_LINK_LIBRARIES(halibut xtrkcad-charset)
+set_target_properties(
+ halibut
+ PROPERTIES FOLDER HelpDocs
+)
+target_link_libraries(halibut xtrkcad-charset)
-ADD_SUBDIRECTORY(charset)
+add_subdirectory(charset)
diff --git a/app/tools/halibut/bk_paper.c b/app/tools/halibut/bk_paper.c
index 97f88b4..8c244b8 100644
--- a/app/tools/halibut/bk_paper.c
+++ b/app/tools/halibut/bk_paper.c
@@ -514,7 +514,7 @@ void *paper_pre_backend(paragraph *sourceform, keywordlist *keywords,
int has_index;
int pagenum;
paragraph index_placeholder_para;
- page_data *first_index_page;
+ page_data *first_index_page = NULL;
init_std_fonts();
fontlist = snew(font_list);
@@ -1707,7 +1707,7 @@ static void wrap_paragraph(para_data *pdata, word *words,
for (p = wrapping; p; p = p->next) {
line_data *ldata;
- word *wd;
+// word *wd;
int len, wid, spaces;
ldata = snew(line_data);
@@ -1732,7 +1732,7 @@ static void wrap_paragraph(para_data *pdata, word *words,
spaces = 0;
len = paper_width_list(&ctx, ldata->first, ldata->end, &spaces);
wid = (p == wrapping ? w - i1 : w - i2);
- wd = ldata->first;
+// wd = ldata->first;
ldata->hshortfall = wid - len;
ldata->nspaces = spaces;
@@ -2296,7 +2296,7 @@ static int render_line(line_data *ldata, int left_x, int top_y,
xr = NULL;
{
- int extra_indent, shortfall, spaces;
+ int extra_indent = 0, shortfall = 0, spaces = 0;
int just = ldata->pdata->justification;
/*
@@ -2344,7 +2344,7 @@ static void render_para(para_data *pdata, paper_conf *conf,
keywordlist *keywords, indexdata *idx,
paragraph *index_placeholder, page_data *index_page)
{
- int last_x;
+ int last_x = 0;
xref *cxref;
page_data *cxref_page;
xref_dest dest;
@@ -2741,7 +2741,7 @@ static word *fake_end_ref(void)
static word *prepare_contents_title(word *first, wchar_t *separator,
word *second)
{
- word *ret;
+ word *ret = NULL;
word **wptr, *w;
wptr = &ret;
diff --git a/app/tools/halibut/charset/CMakeLists.txt b/app/tools/halibut/charset/CMakeLists.txt
index 86521b8..684c70e 100644
--- a/app/tools/halibut/charset/CMakeLists.txt
+++ b/app/tools/halibut/charset/CMakeLists.txt
@@ -1,4 +1,7 @@
-SET(SOURCES
+#
+# Character set conversion library as required for halibut
+
+add_library(xtrkcad-charset
big5enc.c
big5set.c
charset.h
@@ -29,10 +32,11 @@ SET(SOURCES
utf16.c
utf7.c
utf8.c
- xenc.c
- )
-
-INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
+ xenc.c)
-ADD_LIBRARY(xtrkcad-charset ${SOURCES})
+set_target_properties(
+ xtrkcad-charset
+ PROPERTIES FOLDER HelpDocs
+ )
+ target_include_directories(xtrkcad-charset PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
diff --git a/app/tools/halibut/deflate.c b/app/tools/halibut/deflate.c
index 6e4cc67..6366708 100644
--- a/app/tools/halibut/deflate.c
+++ b/app/tools/halibut/deflate.c
@@ -266,6 +266,7 @@ static void lz77_compress(struct LZ77Context *ctx,
st->npending -= i;
defermatch.len = 0;
+ defermatch.distance = 0;
deferchr = '\0';
while (len > 0) {
@@ -1203,7 +1204,7 @@ static void outblock(deflate_compress_ctx *out,
*/
for (i = 0; i < 19; i++)
codelen[i] = len3[lenlenmap[i]];
- for (hclen = 19; hclen > 4 && codelen[hclen-1] == 0; hclen--);
+ for (hclen = 19; hclen > 4 && codelen[hclen-1] == 0; hclen--){};
/*
* Now work out the exact size of both the dynamic and the
@@ -2042,7 +2043,8 @@ int deflate_decompress_data(deflate_decompress_ctx *dctx,
{
const coderecord *rec;
const unsigned char *block = (const unsigned char *)vblock;
- int code, bfinal, btype, rep, dist, nlen, header, cksum;
+ int code, bfinal, btype, rep, dist, header, cksum;
+// int nlen;
int error = 0;
if (len == 0) {
@@ -2441,7 +2443,7 @@ int deflate_decompress_data(deflate_decompress_ctx *dctx,
*/
if (dctx->nbits < 16)
goto finished;
- nlen = dctx->bits & 0xFFFF;
+// nlen = dctx->bits & 0xFFFF;
EATBITS(16);
if (dctx->uncomplen == 0)
dctx->state = OUTSIDEBLK; /* block is empty */
diff --git a/app/tools/halibut/in_afm.c b/app/tools/halibut/in_afm.c
index 724bae7..cb2b39c 100644
--- a/app/tools/halibut/in_afm.c
+++ b/app/tools/halibut/in_afm.c
@@ -229,14 +229,14 @@ void read_afm_file(input *in) {
} else if (strcmp(key, "StartKernPairs") == 0 ||
strcmp(key, "StartKernPairs0") == 0) {
int nkerns, i;
- kern_pair *kerns;
+// kern_pair *kerns;
if (!(val = strtok(NULL, " \t"))) {
error(err_afmval, &in->pos, key, 1);
goto giveup;
}
nkerns = atoi(val);
sfree(line);
- kerns = snewn(nkerns, kern_pair);
+// kerns = snewn(nkerns, kern_pair);
for (i = 0; i < nkerns; i++) {
line = afm_read_line(in);
if (line == NULL)
diff --git a/app/tools/halibut/input.c b/app/tools/halibut/input.c
index 256d9c6..0f38569 100644
--- a/app/tools/halibut/input.c
+++ b/app/tools/halibut/input.c
@@ -831,7 +831,7 @@ static void read_file(paragraph ***ret, input *in, indexdata *idx,
*/
par.type = para_Normal;
if (t.type == tok_cmd) {
- int needkw;
+ int needkw = -1;
int is_macro = FALSE;
par.fpos = t.pos;
diff --git a/app/tools/halibut/tree234.c b/app/tools/halibut/tree234.c
index 26d188e..e971453 100644
--- a/app/tools/halibut/tree234.c
+++ b/app/tools/halibut/tree234.c
@@ -1162,7 +1162,7 @@ tree234 *join234r(tree234 *t1, tree234 *t2) {
static node234 *split234_internal(tree234 *t, int index) {
node234 *halves[2], *n, *sib, *sub;
node234 *lparent, *rparent;
- int ki, pki, i, half, lcount, rcount;
+ int ki, pki = 0, i, half, lcount, rcount;
n = t->root;
LOG(("splitting tree %p at point %d\n", t, index));
diff --git a/app/tools/halibut/ustring.c b/app/tools/halibut/ustring.c
index a5d1103..99303ef 100644
--- a/app/tools/halibut/ustring.c
+++ b/app/tools/halibut/ustring.c
@@ -323,12 +323,12 @@ wchar_t *ustrlow(wchar_t *s) {
}
int utoi(wchar_t const *s) {
- int sign = +1;
+// int sign = +1;
int n;
if (*s == L'-') {
s++;
- sign = -1;
+// sign = -1;
}
n = 0;
diff --git a/app/tools/halibut/wcwidth.c b/app/tools/halibut/wcwidth.c
index f4abe23..0ffe9dd 100644
--- a/app/tools/halibut/wcwidth.c
+++ b/app/tools/halibut/wcwidth.c
@@ -144,12 +144,13 @@ int ustrwid(wchar_t const *s, int charset)
wid = 0;
while (len > 0) {
- int err, ret;
+ int err;
+// int ret;
wchar_t const *s_orig;
err = 0;
s_orig = s;
- ret = charset_from_unicode(&s, &len, buf, lenof(buf),
+ /*ret =*/ charset_from_unicode(&s, &len, buf, lenof(buf),
charset, &state, &err);
wid += wcswidth(s_orig, s - s_orig);
if (err) {
diff --git a/app/tools/lib/linux/libzip.a b/app/tools/lib/linux/libzip.a
new file mode 100644
index 0000000..b5cea1c
--- /dev/null
+++ b/app/tools/lib/linux/libzip.a
Binary files differ
diff --git a/app/tools/listxtp.c b/app/tools/listxtp.c
index 35d0daa..93fd2e9 100644
--- a/app/tools/listxtp.c
+++ b/app/tools/listxtp.c
@@ -19,7 +19,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 <stdio.h>
@@ -148,8 +148,10 @@ main( int argc, char **argv )
/*
* if found, store the restof the line and the filename
*/
+ char *bp;
buffer[ strlen( buffer ) - 1 ] = '\0';
- sprintf( buffer, "%s (%s)", buffer + strlen( CONTENTSCOMMAND ) + 1, ent->d_name );
+ bp = buffer;
+ sprintf( buffer, "%s (%s)", bp + strlen( CONTENTSCOMMAND ) + 1, ent->d_name );
results[ cnt ] = malloc( strlen( buffer ) + 1 );
strcpy( results[ cnt ], buffer );
cnt++;
diff --git a/app/tools/pngtoxpm/CMakeLists.txt b/app/tools/pngtoxpm/CMakeLists.txt
new file mode 100644
index 0000000..54f697b
--- /dev/null
+++ b/app/tools/pngtoxpm/CMakeLists.txt
@@ -0,0 +1,16 @@
+# Build pngtoxpm
+
+add_executable(pngtoxpm pngtoxpm.c)
+target_link_libraries(pngtoxpm
+ PRIVATE
+ FreeImage::FreeImage
+)
+
+if(WIN32)
+# copy dlls into the build dir for easier debugging
+ add_custom_command(
+ TARGET pngtoxpm POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy ${FREEIMAGE_SHAREDLIB} ${CMAKE_CURRENT_BINARY_DIR}
+ )
+ set(ENV{path} "${CMAKE_CURRENT_BINARY_DIR};$ENV{PATH}")
+endif()
diff --git a/app/tools/pngtoxpm/pngtoxpm.c b/app/tools/pngtoxpm/pngtoxpm.c
new file mode 100644
index 0000000..cebc829
--- /dev/null
+++ b/app/tools/pngtoxpm/pngtoxpm.c
@@ -0,0 +1,721 @@
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+#include <fcntl.h>
+
+#include <assert.h>
+
+#include <FreeImage.h>
+
+//#define DEBUGPRINT
+
+#define CHATTY 0 /* 1 = Enable progress messages */
+#define ALPHATHRESH 96 /* If alpha >= this value the color is not transparent */
+#define BACKGROUND 208 /* The background color RGB = value */
+#define BGMASK 0xF8 /* Mask top 5 bits for partitioning */
+#define NUMPALETTE 40 /* Maximum number of palette entries */
+
+#if defined(WIN32) || defined(_WIN32)
+#include <io.h>
+#define ENDLN "\n"
+#else
+#include <unistd.h>
+// Generate DOS style line ends
+#define ENDLN "\r\n"
+#define E2BIG 1
+double min(double a, double b)
+{
+ if (a < b) { return a; }
+ return b;
+}
+#endif
+
+FIBITMAP* image;
+
+/* Note that percent does not print so omit that char from the list! */
+char palette[76] =
+ "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!@#$^&=+-<>/";
+
+char xpm3Buff[10000];
+
+/**********************************************************************
+C Implementation of Wu's Color Quantizer (v. 2)
+(see Graphics Gems vol. II, pp. 126-133)
+Author: Xiaolin Wu
+Dept. of Computer Science
+Univ. of Western Ontario
+London, Ontario N6A 5B7
+wu@csd.uwo.ca
+Algorithm: Greedy orthogonal bipartition of RGB space for variance
+minimization aided by inclusion-exclusion tricks.
+For speed no nearest neighbor search is done. Slightly
+better performance can be expected by more sophisticated
+but more expensive versions.
+The author thanks Tom Lane at Tom_Lane@G.GP.CS.CMU.EDU for much of
+additional documentation and a cure to a previous bug.
+
+Free to distribute, comments and suggestions are appreciated.
+
+Code from https://gist.github.com/bert/1192520
+**********************************************************************/
+
+#define MAXCOLOR 256
+#define RED 2
+#define GREEN 1
+#define BLUE 0
+
+static float m2[33][33][33];
+static long int wt[33][33][33], mr[33][33][33], mg[33][33][33], mb[33][33][33];
+unsigned char* Ir, * Ig, * Ib, * Ia;
+int size; /*image size*/
+int K; /*color look-up table size*/
+unsigned short int* Qadd;
+unsigned char lut_r[MAXCOLOR], lut_g[MAXCOLOR], lut_b[MAXCOLOR];
+
+struct box {
+ int r0; /* min value, exclusive */
+ int r1; /* max value, inclusive */
+ int g0;
+ int g1;
+ int b0;
+ int b1;
+ int vol;
+};
+
+/* Histogram is in elements 1..HISTSIZE along each axis,
+* element 0 is for base or marginal value
+* NB: these must start out 0!
+*/
+
+/* build 3-D color histogram of counts, r/g/b, c^2 */
+void Hist3d(long* vwt, long* vmr, long* vmg, long* vmb, float* m2)
+{
+ register int ind, r, g, b;
+ int inr, ing, inb, table[256];
+ register long int i;
+
+ for (i = 0; i < 256; ++i) { table[i] = i * i; }
+ Qadd = (unsigned short int*)malloc(sizeof(short int) * size);
+ if (Qadd == NULL) { fprintf(stderr, "Not enough space\n"); exit(1); }
+ for (i = 0; i < size; ++i) {
+ r = Ir[i]; g = Ig[i]; b = Ib[i];
+ inr = (r >> 3) + 1;
+ ing = (g >> 3) + 1;
+ inb = (b >> 3) + 1;
+ Qadd[i] = ind = (inr << 10) + (inr << 6) + inr + (ing << 5) + ing + inb;
+ /*[inr][ing][inb]*/
+ ++vwt[ind];
+ vmr[ind] += r;
+ vmg[ind] += g;
+ vmb[ind] += b;
+ m2[ind] += (float)(table[r] + table[g] + table[b]);
+ }
+}
+
+/* At conclusion of the histogram step, we can interpret
+* wt[r][g][b] = sum over voxel of P(c)
+* mr[r][g][b] = sum over voxel of r*P(c) , similarly for mg, mb
+* m2[r][g][b] = sum over voxel of c^2*P(c)
+* Actually each of these should be divided by 'size' to give the usual
+* interpretation of P() as ranging from 0 to 1, but we needn't do that here.
+*/
+
+/* We now convert histogram into moments so that we can rapidly calculate
+* the sums of the above quantities over any desired box.
+*/
+
+/* compute cumulative moments. */
+void M3d(long* vwt, long* vmr, long* vmg, long* vmb, float* m2)
+{
+ register unsigned short int ind1, ind2;
+ register unsigned char i, r, g, b;
+ long int line, line_r, line_g, line_b,
+ area[33], area_r[33], area_g[33], area_b[33];
+ float line2, area2[33];
+
+ for (r = 1; r <= 32; ++r) {
+ for (i = 0; i <= 32; ++i) {
+ area2[i] = area[i] = area_r[i] = area_g[i] = area_b[i] = 0.0f;
+ }
+ for (g = 1; g <= 32; ++g) {
+ line2 = line = line_r = line_g = line_b = 0;
+ for (b = 1; b <= 32; ++b) {
+ ind1 = (r << 10) + (r << 6) + r + (g << 5) + g + b; /* [r][g][b] */
+ line += vwt[ind1];
+ line_r += vmr[ind1];
+ line_g += vmg[ind1];
+ line_b += vmb[ind1];
+ line2 += m2[ind1];
+ area[b] += line;
+ area_r[b] += line_r;
+ area_g[b] += line_g;
+ area_b[b] += line_b;
+ area2[b] += line2;
+ ind2 = ind1 - 1089; /* [r-1][g][b] */
+ vwt[ind1] = vwt[ind2] + area[b];
+ vmr[ind1] = vmr[ind2] + area_r[b];
+ vmg[ind1] = vmg[ind2] + area_g[b];
+ vmb[ind1] = vmb[ind2] + area_b[b];
+ m2[ind1] = m2[ind2] + area2[b];
+ }
+ }
+ }
+}
+
+
+/* Compute sum over a box of any given statistic */
+long int Vol(struct box* cube, long int mmt[33][33][33])
+{
+ return(mmt[cube->r1][cube->g1][cube->b1]
+ - mmt[cube->r1][cube->g1][cube->b0]
+ - mmt[cube->r1][cube->g0][cube->b1]
+ + mmt[cube->r1][cube->g0][cube->b0]
+ - mmt[cube->r0][cube->g1][cube->b1]
+ + mmt[cube->r0][cube->g1][cube->b0]
+ + mmt[cube->r0][cube->g0][cube->b1]
+ - mmt[cube->r0][cube->g0][cube->b0]);
+}
+
+/* The next two routines allow a slightly more efficient calculation
+* of Vol() for a proposed subbox of a given box. The sum of Top()
+* and Bottom() is the Vol() of a subbox split in the given direction
+* and with the specified new upper bound.
+*/
+
+/* Compute part of Vol(cube, mmt) that doesn't depend on r1, g1, or b1 */
+/* (depending on dir) */
+long int Bottom(struct box* cube, int dir, long int mmt[33][33][33])
+{
+ switch (dir) {
+ case RED:
+ return(-mmt[cube->r0][cube->g1][cube->b1]
+ + mmt[cube->r0][cube->g1][cube->b0]
+ + mmt[cube->r0][cube->g0][cube->b1]
+ - mmt[cube->r0][cube->g0][cube->b0]);
+ break;
+ case GREEN:
+ return(-mmt[cube->r1][cube->g0][cube->b1]
+ + mmt[cube->r1][cube->g0][cube->b0]
+ + mmt[cube->r0][cube->g0][cube->b1]
+ - mmt[cube->r0][cube->g0][cube->b0]);
+ break;
+ case BLUE:
+ return(-mmt[cube->r1][cube->g1][cube->b0]
+ + mmt[cube->r1][cube->g0][cube->b0]
+ + mmt[cube->r0][cube->g1][cube->b0]
+ - mmt[cube->r0][cube->g0][cube->b0]);
+ break;
+ }
+ fprintf(stderr, "Bottom: Invalid dir.\n");
+ exit(1);
+}
+
+
+long int Top(struct box* cube, int dir, int pos, long int mmt[33][33][33])
+/* Compute remainder of Vol(cube, mmt), substituting pos for */
+/* r1, g1, or b1 (depending on dir) */
+{
+ switch (dir) {
+ case RED:
+ return(mmt[pos][cube->g1][cube->b1]
+ - mmt[pos][cube->g1][cube->b0]
+ - mmt[pos][cube->g0][cube->b1]
+ + mmt[pos][cube->g0][cube->b0]);
+ break;
+ case GREEN:
+ return(mmt[cube->r1][pos][cube->b1]
+ - mmt[cube->r1][pos][cube->b0]
+ - mmt[cube->r0][pos][cube->b1]
+ + mmt[cube->r0][pos][cube->b0]);
+ break;
+ case BLUE:
+ return(mmt[cube->r1][cube->g1][pos]
+ - mmt[cube->r1][cube->g0][pos]
+ - mmt[cube->r0][cube->g1][pos]
+ + mmt[cube->r0][cube->g0][pos]);
+ break;
+ }
+ fprintf(stderr, "Top: Invalid dir.\n");
+ exit(1);
+}
+
+
+/* Compute the weighted variance of a box */
+/* NB: as with the raw statistics, this is really the variance * size */
+float Var(struct box* cube)
+{
+ float dr, dg, db, xx;
+
+ dr = Vol(cube, mr);
+ dg = Vol(cube, mg);
+ db = Vol(cube, mb);
+ xx = m2[cube->r1][cube->g1][cube->b1]
+ - m2[cube->r1][cube->g1][cube->b0]
+ - m2[cube->r1][cube->g0][cube->b1]
+ + m2[cube->r1][cube->g0][cube->b0]
+ - m2[cube->r0][cube->g1][cube->b1]
+ + m2[cube->r0][cube->g1][cube->b0]
+ + m2[cube->r0][cube->g0][cube->b1]
+ - m2[cube->r0][cube->g0][cube->b0];
+
+ return(xx - (dr * dr + dg * dg + db * db) / (float)Vol(cube, wt));
+}
+
+/* We want to minimize the sum of the variances of two subboxes.
+* The sum(c^2) terms can be ignored since their sum over both subboxes
+* is the same (the sum for the whole box) no matter where we split.
+* The remaining terms have a minus sign in the variance formula,
+* so we drop the minus sign and MAXIMIZE the sum of the two terms.
+*/
+
+float Maximize(struct box* cube, int dir, int first, int last, int* cut,
+ long whole_r, long whole_g, long whole_b, long whole_w)
+{
+ register long int half_r, half_g, half_b, half_w;
+ long int base_r, base_g, base_b, base_w;
+ register int i;
+ register float temp, max;
+
+ base_r = Bottom(cube, dir, mr);
+ base_g = Bottom(cube, dir, mg);
+ base_b = Bottom(cube, dir, mb);
+ base_w = Bottom(cube, dir, wt);
+ max = 0.0;
+ *cut = -1;
+ for (i = first; i < last; ++i) {
+ half_r = base_r + Top(cube, dir, i, mr);
+ half_g = base_g + Top(cube, dir, i, mg);
+ half_b = base_b + Top(cube, dir, i, mb);
+ half_w = base_w + Top(cube, dir, i, wt);
+ /* now half_x is sum over lower half of box, if split at i */
+ if (half_w == 0) { /* subbox could be empty of pixels! */
+ continue; /* never split into an empty box */
+ } else
+ temp = ((float)half_r * half_r + (float)half_g * half_g +
+ (float)half_b * half_b) / half_w;
+
+ half_r = whole_r - half_r;
+ half_g = whole_g - half_g;
+ half_b = whole_b - half_b;
+ half_w = whole_w - half_w;
+ if (half_w == 0) { /* subbox could be empty of pixels! */
+ continue; /* never split into an empty box */
+ } else
+ temp += ((float)half_r * half_r + (float)half_g * half_g +
+ (float)half_b * half_b) / half_w;
+
+ if (temp > max) { max = temp; *cut = i; }
+ }
+ return(max);
+}
+
+int Cut(struct box* set1, struct box* set2)
+{
+ int dir;
+ int cutr, cutg, cutb;
+ float maxr, maxg, maxb;
+ long int whole_r, whole_g, whole_b, whole_w;
+
+ whole_r = Vol(set1, mr);
+ whole_g = Vol(set1, mg);
+ whole_b = Vol(set1, mb);
+ whole_w = Vol(set1, wt);
+
+ maxr = Maximize(set1, RED, set1->r0 + 1, set1->r1, &cutr,
+ whole_r, whole_g, whole_b, whole_w);
+ maxg = Maximize(set1, GREEN, set1->g0 + 1, set1->g1, &cutg,
+ whole_r, whole_g, whole_b, whole_w);
+ maxb = Maximize(set1, BLUE, set1->b0 + 1, set1->b1, &cutb,
+ whole_r, whole_g, whole_b, whole_w);
+
+ if ((maxr >= maxg) && (maxr >= maxb)) {
+ dir = RED;
+ if (cutr < 0) { return 0; } /* can't split the box */
+ } else if ((maxg >= maxr) && (maxg >= maxb)) {
+ dir = GREEN;
+ } else {
+ dir = BLUE;
+ }
+
+ set2->r1 = set1->r1;
+ set2->g1 = set1->g1;
+ set2->b1 = set1->b1;
+
+ switch (dir) {
+ case RED:
+ set2->r0 = set1->r1 = cutr;
+ set2->g0 = set1->g0;
+ set2->b0 = set1->b0;
+ break;
+ case GREEN:
+ set2->g0 = set1->g1 = cutg;
+ set2->r0 = set1->r0;
+ set2->b0 = set1->b0;
+ break;
+ case BLUE:
+ set2->b0 = set1->b1 = cutb;
+ set2->r0 = set1->r0;
+ set2->g0 = set1->g0;
+ break;
+ }
+ set1->vol = (set1->r1 - set1->r0) * (set1->g1 - set1->g0) *
+ (set1->b1 - set1->b0);
+ set2->vol = (set2->r1 - set2->r0) * (set2->g1 - set2->g0) *
+ (set2->b1 - set2->b0);
+ return 1;
+}
+
+
+void Mark(struct box* cube, int label, unsigned char* tag)
+{
+ register int r, g, b;
+
+ for (r = cube->r0 + 1; r <= cube->r1; ++r)
+ for (g = cube->g0 + 1; g <= cube->g1; ++g)
+ for (b = cube->b0 + 1; b <= cube->b1; ++b) {
+ tag[(r << 10) + (r << 6) + r + (g << 5) + g + b] = label;
+ }
+}
+
+
+void cq()
+{
+ struct box cube[MAXCOLOR];
+ unsigned char* tag;
+ int next;
+ register long int i, weight;
+ register int k;
+ float vv[MAXCOLOR], temp;
+
+ K = NUMPALETTE;
+
+ Hist3d((long*)wt, (long*)mr, (long*)mg, (long*)mb, (float*)m2);
+ if (CHATTY) { printf("Histogram done\n"); }
+
+ M3d((long*)wt, (long*)mr, (long*)mg, (long*)mb, (float*)m2);
+ if (CHATTY) { printf("Moments done\n"); }
+
+ cube[0].r0 = cube[0].g0 = cube[0].b0 = 0;
+ cube[0].r1 = cube[0].g1 = cube[0].b1 = 32;
+ next = 0;
+ for (i = 1; i < K; ++i) {
+ if (Cut(&cube[next], &cube[i])) {
+ /* volume test ensures we won't try to cut one-cell box */
+ vv[next] = (cube[next].vol > 1) ? Var(&cube[next]) : 0.0;
+ vv[i] = (cube[i].vol > 1) ? Var(&cube[i]) : 0.0;
+ } else {
+ vv[next] = 0.0; /* don't try to split this box again */
+ i--; /* didn't create box i */
+ }
+ next = 0; temp = vv[0];
+ for (k = 1; k <= i; ++k)
+ if (vv[k] > temp) {
+ temp = vv[k]; next = k;
+ }
+ if (temp <= 0.0) {
+ K = i + 1;
+ if (CHATTY) { printf("Only got %d boxes\n", K); }
+ break;
+ }
+ }
+ if (CHATTY) { printf("Partition done\n"); }
+
+ tag = (unsigned char*)malloc(33 * 33 * 33);
+ if (tag == NULL) { fprintf(stderr, "Not enough space\n"); exit(1); }
+ for (k = 0; k < K; ++k) {
+ Mark(&cube[k], k, tag);
+ weight = Vol(&cube[k], wt);
+ if (weight) {
+ lut_r[k] = Vol(&cube[k], mr) / weight;
+ lut_g[k] = Vol(&cube[k], mg) / weight;
+ lut_b[k] = Vol(&cube[k], mb) / weight;
+ } else {
+ fprintf(stderr, "bogus box %d\n", k);
+ lut_r[k] = lut_g[k] = lut_b[k] = 0;
+ }
+ }
+
+ for (i = 0; i < size; ++i) { Qadd[i] = tag[Qadd[i]]; }
+
+ free(tag);
+}
+
+char pChar(int j)
+{
+
+ char c = '.';
+ c = palette[j];
+ return c;
+}
+
+/* Safe version of strcat - will not overflow buffer */
+size_t
+strscat(char* dest, const char* src, size_t count)
+{
+ long sptr = 0;
+ long dptr = strlen(dest);
+ count -= dptr;
+
+ if (count <= 0) {
+ return -E2BIG;
+ }
+
+ while (count) {
+ char c;
+
+ c = src[sptr];
+ dest[dptr] = c;
+ if (!c) {
+ return dptr;
+ }
+ sptr++;
+ dptr++;
+ count--;
+ }
+
+ /* Hit buffer length without finding a NUL; force NUL-termination. */
+ if (dptr) {
+ dest[dptr - 1] = '\0';
+ }
+
+ return -E2BIG;
+}
+
+int genXpm(int icon, char* name, int width, int height)
+{
+ char xpmName[100]; // XPM object name
+ char tmpBuff[100]; // sprintf
+ char c[2];
+ int i, j;
+ int x, y;
+ RGBQUAD color;
+ c[1] = 0;
+
+ strcpy(xpmName, name);
+ for (i = 0; i < strlen(xpmName); i++) {
+ if (xpmName[i] == '-') {
+ xpmName[i] = '_';
+ }
+ }
+
+ strscat(xpm3Buff, "static char *", sizeof(xpm3Buff));
+ strscat(xpm3Buff, xpmName, sizeof(xpm3Buff));
+ strscat(xpm3Buff, "_x", sizeof(xpm3Buff));
+ sprintf(tmpBuff, "%d", height); strscat(xpm3Buff, tmpBuff, sizeof(xpm3Buff));
+ strscat(xpm3Buff, "[] = {"ENDLN, sizeof(xpm3Buff));
+ strscat(xpm3Buff, "\t\"", sizeof(xpm3Buff));
+ sprintf(tmpBuff, "%d %d %d %d", width, height, (K + 1), 1);
+ strscat(xpm3Buff, tmpBuff, sizeof(xpm3Buff));
+ strscat(xpm3Buff, "\","ENDLN"\t\" \tc\tNone\","ENDLN, sizeof(xpm3Buff));
+ for (i = 0; i < K; i++) {
+ strscat(xpm3Buff, "\t\"", sizeof(xpm3Buff));
+ sprintf(tmpBuff, "%c\tc\t#%02x%02x%02x", pChar(i), lut_r[i], lut_g[i],
+ lut_b[i]); strscat(xpm3Buff, tmpBuff, sizeof(xpm3Buff));
+ strscat(xpm3Buff, "\","ENDLN, sizeof(xpm3Buff));
+ }
+
+ // Write the pixels
+ i = 0;
+ for (y = height - 1; y >= 0; y--) {
+ strscat(xpm3Buff, "\t\"", sizeof(xpm3Buff));
+ for (x = 0; x < width; x++) {
+ FreeImage_GetPixelColor(image, x, y, &color);
+ if (color.rgbReserved >= ALPHATHRESH) {
+ j = Qadd[i];
+ c[0] = pChar(j);
+ strscat(xpm3Buff, c, sizeof(xpm3Buff));
+ i++;
+ } else {
+ strscat(xpm3Buff, " ", sizeof(xpm3Buff));
+ }
+ }
+
+ if (y > 0) {
+ strscat(xpm3Buff, "\","ENDLN, sizeof(xpm3Buff));
+ } else {
+ strscat(xpm3Buff, "\"};"ENDLN, sizeof(xpm3Buff));
+ }
+ }
+
+ if (icon == 32) {
+ strscat(xpm3Buff, ENDLN"static char **", sizeof(xpm3Buff));
+ strscat(xpm3Buff, xpmName, sizeof(xpm3Buff));
+ strscat(xpm3Buff, "_xpm3[3] = { ", sizeof(xpm3Buff));
+ strscat(xpm3Buff, xpmName, sizeof(xpm3Buff));
+ strscat(xpm3Buff, "_x16, ", sizeof(xpm3Buff));
+ strscat(xpm3Buff, xpmName, sizeof(xpm3Buff));
+ strscat(xpm3Buff, "_x24, ", sizeof(xpm3Buff));
+ strscat(xpm3Buff, xpmName, sizeof(xpm3Buff));
+ strscat(xpm3Buff, "_x32 };"ENDLN, sizeof(xpm3Buff));
+ }
+ return 0;
+}
+
+int process(char* path, char* name, int icon)
+{
+ int i;
+ int w, h;
+ int x, y;
+ short a;
+ float frac;
+ short bg;
+ char filename[1000];
+ RGBQUAD color;
+
+
+ memset(m2, 0, sizeof(m2));
+ memset(wt, 0, sizeof(wt));
+ memset(mr, 0, sizeof(mr));
+ memset(mg, 0, sizeof(mg));
+ memset(mb, 0, sizeof(mb));
+
+ /* printf( "FreeImage version %s\n\n",FreeImage_GetVersion( ) ); */
+
+ // Try override first
+ sprintf(filename, "%spng/%s%d.png", path, name, icon);
+ //#if defined(WIN32) || defined(_WIN32)
+ // if ( _access(filename, 04) != 0) {
+ //#else
+ // if ( access( filename, R_OK ) != 0 ) {
+ //#endif
+ // sprintf( filename,"%s/png/%s%d.png",path,name,icon );
+ // }
+#ifdef DEBUGPRINT
+ fprintf(stdout, "PNG: %s\n", filename);
+#endif
+
+ image = FreeImage_Load(FIF_PNG, filename, PNG_DEFAULT);
+ if (image == NULL) {
+ fprintf(stderr, "%s not found.\n", filename);
+ exit(1);
+ }
+
+ if (FreeImage_GetBPP(image) != 32) {
+ FIBITMAP* tempImage = image;
+ image = FreeImage_ConvertTo32Bits(tempImage);
+ }
+
+ w = FreeImage_GetWidth(image);
+ h = FreeImage_GetHeight(image);
+
+ // Count non-transparent pixels - this is the "size" of the image
+ size = 0;
+ for (y = 0; y < h; y++) {
+ for (x = 0; x < w; x++) {
+ FreeImage_GetPixelColor(image, x, y, &color);
+ a = color.rgbReserved;
+ if (a >= ALPHATHRESH) {
+ size++;
+ }
+ }
+ }
+
+ /* input R,G,B components into Ir, Ig, Ib */
+ Ir = (unsigned char*)malloc(size);
+ Ig = (unsigned char*)malloc(size);
+ Ib = (unsigned char*)malloc(size);
+ assert(Ir && Ig && Ib);
+ i = 0;
+ for (y = h - 1; y >= 0; y--) {
+ for (x = 0; x < w; x++) {
+ FreeImage_GetPixelColor(image, x, y, &color);
+ a = color.rgbReserved;
+ if (a >= ALPHATHRESH) {
+ frac = (float)a / 255;
+ bg = BACKGROUND * (1.0f - frac);
+ Ir[i] = (unsigned char)min(255, color.rgbRed * frac + bg) & BGMASK;
+ Ig[i] = (unsigned char)min(255, color.rgbGreen * frac + bg) & BGMASK;
+ Ib[i] = (unsigned char)min(255, color.rgbBlue * frac + bg) & BGMASK;
+ i++;
+ }
+ }
+ }
+
+ cq();
+
+ free(Ig); free(Ib); free(Ir); /* */
+
+ genXpm(icon, name, w, h);
+
+ // Delete
+ FreeImage_Unload(image);
+
+ return 0;
+}
+
+int main(int argc, char* argv[])
+{
+ char buffer[1000];
+ char path[1000];
+ char name[100];
+ char* temp;
+ char* ext;
+ int i = 0, j = 0;
+ int icon;
+
+#ifdef DEBUGPRINT
+ fprintf(stderr, "Begin pngtoxpm\n");
+#endif
+
+ if (argc < 2) {
+ printf("PngToXpm ver 0.2\nUsage: pngtoxpm filename\nfilename is the path to the resultant XPM3\n");
+ return 0;
+ }
+
+ // Get the file base name from path/name.ext
+ strncpy(buffer, argv[1], sizeof(buffer) - 1);
+
+ strncpy(path, argv[1], sizeof(path) - 1);
+#ifdef DEBUGPRINT
+ fprintf(stderr, "Filename: %s\n", path);
+#endif
+
+ temp = strrchr(path, '/');
+ if (temp != NULL) {
+ temp++;
+ *temp = '\0';
+ } else {
+ path[0] = '\0';
+ }
+
+#ifdef DEBUGPRINT
+ fprintf(stderr, "Path: %s\n", path);
+#endif
+
+ (temp = strrchr(buffer, '/')) ? ++temp : (temp = buffer);
+
+ ext = strrchr(temp, '.');
+ if (ext != NULL) {
+ *ext = '\0';
+ }
+ strncpy(name, temp, sizeof(name) - 1);
+
+#ifdef DEBUGPRINT
+ fprintf(stdout, "In: %s %s\n", path, name);
+#endif
+
+
+ for (icon = 16; icon <= 32; icon += 8) {
+ process(path, name, icon);
+ }
+
+ // Write the xpm file
+ strncpy(buffer, argv[1], sizeof(buffer) - 1);
+#ifdef DEBUGPRINT
+ fprintf(stdout, "XPM: %s\n", buffer);
+#endif
+
+ FILE* ptr;
+ ptr = fopen(buffer, "w");
+ if (ptr == NULL) {
+ fprintf(stderr, "XPM3 file could not be created.\n");
+ exit(1);
+ }
+ fprintf(ptr, "%s", xpm3Buff);
+ fclose(ptr);
+
+ return 0;
+}
+
diff --git a/app/wlib/CMakeLists.txt b/app/wlib/CMakeLists.txt
index 4fa7469..7f7ee82 100644
--- a/app/wlib/CMakeLists.txt
+++ b/app/wlib/CMakeLists.txt
@@ -1,10 +1,19 @@
-PROJECT(wlib)
+project(wlib)
-INCLUDE_DIRECTORIES("${wlib_SOURCE_DIR}/include")
+add_library( xtrkcad-wlib
+ "")
-IF(XTRKCAD_USE_GTK)
- ADD_SUBDIRECTORY(gtklib)
-ELSE(XTRKCAD_USE_GTK)
- ADD_SUBDIRECTORY(mswlib)
-ENDIF(XTRKCAD_USE_GTK)
+add_subdirectory(include)
+
+# add i18n.h to include path
+target_include_directories(xtrkcad-wlib
+ PRIVATE
+ ${xtrkcad-lib_SOURCE_DIR}
+)
+
+if(XTRKCAD_USE_GTK)
+ add_subdirectory(gtklib)
+else()
+ add_subdirectory(mswlib)
+endif()
diff --git a/app/wlib/gtklib/CMakeLists.txt b/app/wlib/gtklib/CMakeLists.txt
index 117772a..6c673d9 100644
--- a/app/wlib/gtklib/CMakeLists.txt
+++ b/app/wlib/gtklib/CMakeLists.txt
@@ -1,7 +1,12 @@
# Setup GTK UI library...
-file(GLOB headers *.h)
-set(sources
+target_include_directories(xtrkcad-wlib
+ PRIVATE
+ ${xtrkcad-lib_SOURCE_DIR}
+)
+
+target_sources(xtrkcad-wlib
+ PRIVATE
bitmap.c
boxes.c
button.c
@@ -24,6 +29,7 @@ set(sources
single.c
splash.c
statusbar.c
+ sysinfo.c
text.c
timer.c
tooltip.c
@@ -32,66 +38,79 @@ set(sources
window.c
wpref.c
writebitmap.c
-# end of refactored sources
gtkdraw-cairo.c
- )
+)
# help system is OS and build specific, add appropriate source files
if(APPLE)
if (XTRKCAD_USE_APPLEHELP)
- set(sources
- ${sources}
+ target_sources(xtrkcad-wlib
+ PRIVATE
osxhelp.c)
- else(XTRKCAD_USE_APPLEHELP)
+ else()
if(XTRKCAD_USE_BROWSER)
- set(sources
- ${sources}
- browserhelp.c)
- else(XTRKCAD_USE_BROWSER)
- PKG_CHECK_MODULES(GTK_WEBKIT "webkit-1.0" REQUIRED)
- set(sources
- ${sources}
- ixhelp.c)
- endif(XTRKCAD_USE_BROWSER)
- endif(XTRKCAD_USE_APPLEHELP)
-else(APPLE)
+ target_sources(xtrkcad-wlib
+ PRIVATE
+ browserhelp.c)
+ else()
+ PKG_CHECK_MODULES(GTK_WEBKIT "webkit-1.0" REQUIRED)
+ target_sources(xtrkcad-wlib
+ PRIVATE
+ ixhelp.c)
+ endif()
+ endif()
+else()
if(XTRKCAD_USE_BROWSER)
- set(sources
- ${sources}
- browserhelp.c)
- else(XTRKCAD_USE_BROWSER)
+ target_sources(xtrkcad-wlib
+ PRIVATE
+ browserhelp.c)
+ else()
PKG_CHECK_MODULES(GTK_WEBKIT "webkit-1.0" REQUIRED)
- set(sources
- ${sources}
- ixhelp.c)
- endif(XTRKCAD_USE_BROWSER)
-endif(APPLE)
-
-include_directories(${XTrkCAD_BINARY_DIR})
-
-add_library(xtrkcad-wlib ${headers} ${sources})
+ target_sources(xtrkcad-wlib
+ PRIVATE
+ ixhelp.c)
+ endif()
+endif()
# GTK
find_package (GTK2)
-include_directories(${GTK_INCLUDE_DIRS})
-target_link_libraries(xtrkcad-wlib ${GTK_LIBRARIES})
# configure for GTK's native Unix print
find_package (GTKUnixPrint)
-include_directories(${GTK_UNIX_PRINT_INCLUDE_DIRS})
-target_link_libraries(xtrkcad-wlib ${GTK_UNIX_PRINT_LIBRARIES})
+
+target_include_directories(xtrkcad-wlib
+ PRIVATE
+ ${GTK_INCLUDE_DIRS}
+ ${GTK_UNIX_PRINT_INCLUDE_DIRS}
+)
+target_link_libraries(xtrkcad-wlib
+ PRIVATE
+ dynstring
+ ${GTK_UNIX_PRINT_LIBRARIES}
+ ${GTK_LIBRARIES}
+)
# add dependency to webkit if configured
if (APPLE)
if(NOT XTRKCAD_USE_APPLEHELP)
if(NOT XTRKCAD_USE_BROWSER)
- include_directories(${GTK_WEBKIT_INCLUDE_DIRS})
- target_link_libraries(xtrkcad-wlib ${GTK_WEBKIT_LIBRARIES})
+ target_include_directories(xtrkcad-wlib
+ ${GTK_WEBKIT_INCLUDE_DIRS}
+ )
+ target_link_libraries(xtrkcad-wlib
+ PRIVATE
+ ${GTK_WEBKIT_LIBRARIES}
+ )
endif()
endif()
-else (APPLE)
+else ()
if(NOT XTRKCAD_USE_BROWSER)
- include_directories(${GTK_WEBKIT_INCLUDE_DIRS})
- target_link_libraries(xtrkcad-wlib ${GTK_WEBKIT_LIBRARIES})
+ target_include_directories(xtrkcad-wlib
+ ${GTK_WEBKIT_INCLUDE_DIRS}
+ )
+ target_link_libraries(xtrkcad-wlib
+ PRIVATE
+ ${GTK_WEBKIT_LIBRARIES}
+ )
endif()
-endif(APPLE)
+endif()
diff --git a/app/wlib/gtklib/bitmap.c b/app/wlib/gtklib/bitmap.c
index 7562e33..b1ff2ed 100644
--- a/app/wlib/gtklib/bitmap.c
+++ b/app/wlib/gtklib/bitmap.c
@@ -16,7 +16,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 <stdlib.h>
@@ -46,54 +46,57 @@ struct wBitmap_t {
*/
wControl_p
-wBitmapCreate( wWin_p parent, wWinPix_t x, wWinPix_t y, long options, const struct wIcon_t * iconP )
+wBitmapCreate( wWin_p parent, wWinPix_t x, wWinPix_t y, long options,
+ const struct wIcon_t * iconP )
{
wBitmap_p bt;
GdkPixbuf *pixbuf;
GtkWidget *image;
-
+
bt = wlibAlloc( parent, B_BITMAP, x, y, NULL, sizeof *bt, NULL );
bt->w = iconP->w;
bt->h = iconP->h;
bt->option = options;
-
+
/*
- * Depending on the platform, parent->widget->window might still be null
+ * Depending on the platform, parent->widget->window might still be null
* at this point. The window allocation should be forced before creating
* the pixmap.
*/
- if ( gtk_widget_get_window( parent->widget ) == NULL )
- gtk_widget_realize( parent->widget ); /* force allocation, if pending */
-
+ if ( gtk_widget_get_window( parent->widget ) == NULL ) {
+ gtk_widget_realize( parent->widget ); /* force allocation, if pending */
+ }
+
/* create the bitmap from supplied xpm data */
pixbuf = gdk_pixbuf_new_from_xpm_data( (const char **)iconP->bits );
g_object_ref_sink(pixbuf);
image = gtk_image_new_from_pixbuf( pixbuf );
gtk_widget_show( image );
g_object_unref( (gpointer)pixbuf );
-
+
bt->widget = gtk_fixed_new();
gtk_widget_show( bt->widget );
gtk_container_add( GTK_CONTAINER(bt->widget), image );
-
+
wlibComputePos( (wControl_p)bt );
wlibControlGetSize( (wControl_p)bt );
gtk_fixed_put( GTK_FIXED( parent->widget ), bt->widget, bt->realX, bt->realY );
-
+
return( (wControl_p)bt );
}
/**
* Create a two-tone icon
- *
+ *
* \param w IN width of icon
* \param h IN height of icon
* \param bits IN bitmap
- * \param color IN color
+ * \param color IN color
* \returns icon handle
*/
-wIcon_p wIconCreateBitMap( wWinPix_t w, wWinPix_t h, const char * bits, wDrawColor color )
+wIcon_p wIconCreateBitMap( wWinPix_t w, wWinPix_t h, const char * bits,
+ wDrawColor color )
{
wIcon_p ip;
ip = (wIcon_p)malloc( sizeof *ip );
@@ -101,7 +104,10 @@ wIcon_p wIconCreateBitMap( wWinPix_t w, wWinPix_t h, const char * bits, wDrawCol
ip->w = w;
ip->h = h;
ip->color = color;
- ip->bits = bits;
+ // Copy bits
+ int nBytes = ( ( w + 7 ) / 8 ) * h;
+ ip->bits = (char*)malloc( nBytes );
+ memcpy( (void*)ip->bits, bits, nBytes );
return ip;
}
@@ -125,7 +131,7 @@ wIcon_p wIconCreatePixMap( char *pm[] )
/**
* Set the color a two-tone icon
- *
+ *
* \param ip IN icon handle
* \param color IN color to use
*/
diff --git a/app/wlib/gtklib/boxes.c b/app/wlib/gtklib/boxes.c
index 74dbb7b..3c0173b 100644
--- a/app/wlib/gtklib/boxes.c
+++ b/app/wlib/gtklib/boxes.c
@@ -36,8 +36,8 @@
#include "gtkint.h"
struct wBox_t {
- WOBJ_COMMON
- wBoxType_e boxTyp;
+ WOBJ_COMMON
+ wBoxType_e boxTyp;
};
#define B (1)
@@ -60,12 +60,12 @@ struct wBox_t {
*/
void wBoxSetSize(
- wBox_p b,
- wWinPix_t w,
- wWinPix_t h)
+ wBox_p b,
+ wWinPix_t w,
+ wWinPix_t h)
{
- b->w = w;
- b->h = h;
+ b->w = w;
+ b->h = h;
}
/**
@@ -82,78 +82,78 @@ void wBoxSetSize(
*/
void wlibDrawBox(
- wWin_p win,
- wBoxType_e style,
- wWinPix_t x,
- wWinPix_t y,
- wWinPix_t w,
- wWinPix_t h)
+ wWin_p win,
+ wBoxType_e style,
+ wWinPix_t x,
+ wWinPix_t y,
+ wWinPix_t w,
+ wWinPix_t h)
{
- wWinPix_t x0, y0, x1, y1;
- GdkDrawable * window;
- cairo_t *cr;
- static char colors[8][4][2] = {
- { /* ThinB */ {B,0}, {B,0}, {B,0}, {B,0} },
- { /* ThinW */ {W,0}, {W,0}, {W,0}, {W,0} },
- { /* AboveW */ {W,0}, {W,0}, {B,0}, {B,0} },
- { /* BelowW */ {B,0}, {B,0}, {W,0}, {W,0} },
- { /* ThickB */ {B,B}, {B,B}, {B,B}, {B,B} },
- { /* ThickW */ {W,W}, {W,W}, {W,W}, {W,W} },
- { /* RidgeW */ {W,B}, {W,B}, {B,W}, {B,W} },
- { /* TroughW*/ {B,W}, {B,W}, {W,B}, {W,B} }
- };
- window = gtk_widget_get_window(win->widget);
- cr = gdk_cairo_create(window);
- cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
- cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER);
- cairo_set_line_width(cr, 1.0);
- x0 = x;
- x1 = x+w;
- y0 = y;
- y1 = y+h;
- SETCOLOR(style, 0, 0);
- cairo_move_to(cr, x0, y0);
- cairo_line_to(cr, x0, y1);
- cairo_stroke_preserve(cr);
- SETCOLOR(style, 1, 0);
- cairo_move_to(cr, x0, y0);
- cairo_line_to(cr, x1, y0);
- cairo_stroke_preserve(cr);
- SETCOLOR(style, 2, 0);
- cairo_move_to(cr, x1, y1);
- cairo_line_to(cr, x0+1, y1);
- cairo_stroke_preserve(cr);
- SETCOLOR(style, 3, 0);
- cairo_move_to(cr, x1, y1-1);
- cairo_line_to(cr, x1, y0+1);
- cairo_stroke_preserve(cr);
-
- if (style < wBoxThickB) {
- cairo_destroy(cr);
- return;
- }
-
- x0++;
- y0++;
- x1--;
- y1--;
- SETCOLOR(style, 0, 1);
- cairo_move_to(cr, x0, y0);
- cairo_line_to(cr, x0, y1);
- cairo_stroke_preserve(cr);
- SETCOLOR(style, 1, 1);
- cairo_move_to(cr, x0+1, y0);
- cairo_line_to(cr, x1, y0);
- cairo_stroke_preserve(cr);
- SETCOLOR(style, 2, 1);
- cairo_move_to(cr, x1, y1);
- cairo_line_to(cr, x0+1, y1);
- cairo_stroke_preserve(cr);
- SETCOLOR(style, 3, 1);
- cairo_move_to(cr, x1, y1-1);
- cairo_line_to(cr, x1, y0+1);
- cairo_stroke_preserve(cr);
- cairo_destroy(cr);
+ wWinPix_t x0, y0, x1, y1;
+ GdkDrawable * window;
+ cairo_t *cr;
+ static char colors[8][4][2] = {
+ { /* ThinB */ {B,0}, {B,0}, {B,0}, {B,0} },
+ { /* ThinW */ {W,0}, {W,0}, {W,0}, {W,0} },
+ { /* AboveW */ {W,0}, {W,0}, {B,0}, {B,0} },
+ { /* BelowW */ {B,0}, {B,0}, {W,0}, {W,0} },
+ { /* ThickB */ {B,B}, {B,B}, {B,B}, {B,B} },
+ { /* ThickW */ {W,W}, {W,W}, {W,W}, {W,W} },
+ { /* RidgeW */ {W,B}, {W,B}, {B,W}, {B,W} },
+ { /* TroughW*/ {B,W}, {B,W}, {W,B}, {W,B} }
+ };
+ window = gtk_widget_get_window(win->widget);
+ cr = gdk_cairo_create(window);
+ cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
+ cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER);
+ cairo_set_line_width(cr, 1.0);
+ x0 = x;
+ x1 = x+w;
+ y0 = y;
+ y1 = y+h;
+ SETCOLOR(style, 0, 0);
+ cairo_move_to(cr, x0, y0);
+ cairo_line_to(cr, x0, y1);
+ cairo_stroke_preserve(cr);
+ SETCOLOR(style, 1, 0);
+ cairo_move_to(cr, x0, y0);
+ cairo_line_to(cr, x1, y0);
+ cairo_stroke_preserve(cr);
+ SETCOLOR(style, 2, 0);
+ cairo_move_to(cr, x1, y1);
+ cairo_line_to(cr, x0+1, y1);
+ cairo_stroke_preserve(cr);
+ SETCOLOR(style, 3, 0);
+ cairo_move_to(cr, x1, y1-1);
+ cairo_line_to(cr, x1, y0+1);
+ cairo_stroke_preserve(cr);
+
+ if (style < wBoxThickB) {
+ cairo_destroy(cr);
+ return;
+ }
+
+ x0++;
+ y0++;
+ x1--;
+ y1--;
+ SETCOLOR(style, 0, 1);
+ cairo_move_to(cr, x0, y0);
+ cairo_line_to(cr, x0, y1);
+ cairo_stroke_preserve(cr);
+ SETCOLOR(style, 1, 1);
+ cairo_move_to(cr, x0+1, y0);
+ cairo_line_to(cr, x1, y0);
+ cairo_stroke_preserve(cr);
+ SETCOLOR(style, 2, 1);
+ cairo_move_to(cr, x1, y1);
+ cairo_line_to(cr, x0+1, y1);
+ cairo_stroke_preserve(cr);
+ SETCOLOR(style, 3, 1);
+ cairo_move_to(cr, x1, y1-1);
+ cairo_line_to(cr, x1, y0+1);
+ cairo_stroke_preserve(cr);
+ cairo_destroy(cr);
}
/**
@@ -165,9 +165,9 @@ void wlibDrawBox(
static void boxRepaint(wControl_p b)
{
- wBox_p bb = (wBox_p)(b);
- wWin_p win = bb->parent;
- wlibDrawBox(win, bb->boxTyp, bb->realX, bb->realY, bb->w, bb->h);
+ wBox_p bb = (wBox_p)(b);
+ wWin_p win = bb->parent;
+ wlibDrawBox(win, bb->boxTyp, bb->realX, bb->realY, bb->w, bb->h);
}
/**
@@ -184,21 +184,21 @@ static void boxRepaint(wControl_p b)
*/
wBox_p wBoxCreate(
- wWin_p parent,
- wWinPix_t bx,
- wWinPix_t by,
- const char * labelStr,
- wBoxType_e boxTyp,
- wWinPix_t bw,
- wWinPix_t bh)
+ wWin_p parent,
+ wWinPix_t bx,
+ wWinPix_t by,
+ const char * labelStr,
+ wBoxType_e boxTyp,
+ wWinPix_t bw,
+ wWinPix_t bh)
{
- wBox_p b;
- b = (wBox_p)wlibAlloc(parent, B_BOX, bx, by, labelStr, sizeof *b, NULL);
- wlibComputePos((wControl_p)b);
- b->boxTyp = boxTyp;
- b->w = bw;
- b->h = bh;
- b->repaintProc = boxRepaint;
- wlibAddButton((wControl_p)b);
- return b;
+ wBox_p b;
+ b = (wBox_p)wlibAlloc(parent, B_BOX, bx, by, labelStr, sizeof *b, NULL);
+ wlibComputePos((wControl_p)b);
+ b->boxTyp = boxTyp;
+ b->w = bw;
+ b->h = bh;
+ b->repaintProc = boxRepaint;
+ wlibAddButton((wControl_p)b);
+ return b;
}
diff --git a/app/wlib/gtklib/browserhelp.c b/app/wlib/gtklib/browserhelp.c
index 7d45ea5..6d2ac5d 100644
--- a/app/wlib/gtklib/browserhelp.c
+++ b/app/wlib/gtklib/browserhelp.c
@@ -17,12 +17,13 @@
*
* 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 <stdlib.h>
#include <assert.h>
#include <string.h>
+#include <limits.h>
//#include "misc.h"
@@ -45,7 +46,8 @@ extern wBool_t CheckHelpTopicExists(const char * topic);
"variable.\n Also make sure that the user has sufficient access rights to read these" \
"files."
/**
- * Create a fully qualified url from a topic
+ * Create a fully qualified url from a topic. The library path is converted to
+ * an absolute path first. The url is then created from that path.
*
* \param helpUrl OUT pointer to url, free by caller
* \param topic IN the help topic
@@ -54,20 +56,29 @@ extern wBool_t CheckHelpTopicExists(const char * topic);
static void
TopicToUrl(char **helpUrl, const char *topic)
{
- DynString url;
- DynStringMalloc(&url, 16);
-
- // build up the url line
- DynStringCatCStrs(&url,
- "file://",
- wGetAppLibDir(),
- "/html/",
- topic,
- ".html",
- NULL);
-
- *helpUrl = strdup(DynStringToCStr(&url));
- DynStringFree(&url);
+ DynString url;
+ DynStringMalloc(&url, 16);
+ char *realPath;
+
+ realPath = realpath(wGetAppLibDir(), NULL);
+
+ if(realPath) {
+ // build up the url line
+ DynStringCatCStrs(&url,
+ "file://",
+ realPath,
+ "/html/",
+ topic,
+ ".html",
+ NULL);
+
+ *helpUrl = strdup(DynStringToCStr(&url));
+ DynStringFree(&url);
+ free(realPath);
+ } else {
+ wNoticeEx( NT_ERROR, _("Not enough memory for realpath()"), _("Exit"), NULL);
+ wExit(0);
+ }
}
/**
* Invoke the system's default browser to display help for <topic>. First the
@@ -79,22 +90,22 @@ TopicToUrl(char **helpUrl, const char *topic)
void wHelp(const char * topic)
{
- int rc;
- char *url;
- char *currentPath;
+ int rc;
+ char *url;
+// char *currentPath;
- assert(topic != NULL);
- assert(strlen(topic));
+ assert(topic != NULL);
+ assert(strlen(topic));
- if (!CheckHelpTopicExists(topic)) return;
-
- TopicToUrl(&url, topic);
+ if (!CheckHelpTopicExists(topic)) { return; }
+ TopicToUrl(&url, topic);
+ printf(">%s<\n", url);
rc = wOpenFileExternal(url);
if (!rc) {
- wNotice(HELPERRORTEXT, _("Cancel"), NULL);
- }
+ wNotice(HELPERRORTEXT, _("Cancel"), NULL);
+ }
- free(url);
+ free(url);
}
diff --git a/app/wlib/gtklib/button.c b/app/wlib/gtklib/button.c
index 9a8ec77..7193b11 100644
--- a/app/wlib/gtklib/button.c
+++ b/app/wlib/gtklib/button.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 <stdio.h>
@@ -53,17 +53,17 @@
void wButtonSetBusy(wButton_p bb, int value)
{
- bb->recursion++;
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(bb->widget), value);
- bb->recursion--;
- bb->busy = value;
- if (!value) {
- if (bb->timer_id) {
- g_source_remove(bb->timer_id);
- bb->timer_id = 0;
- }
- bb->timer_state = -1;
- }
+ bb->recursion++;
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(bb->widget), value);
+ bb->recursion--;
+ bb->busy = value;
+ if (!value) {
+ if (bb->timer_id) {
+ g_source_remove(bb->timer_id);
+ bb->timer_id = 0;
+ }
+ bb->timer_state = -1;
+ }
}
/**
@@ -77,57 +77,58 @@ void wButtonSetBusy(wButton_p bb, int value)
*/
void wlibSetLabel(
- GtkWidget *widget,
- long option,
- const char * labelStr,
- GtkLabel * * labelG,
- GtkWidget * * imageG)
+ GtkWidget *widget,
+ long option,
+ const char * labelStr,
+ GtkLabel * * labelG,
+ GtkWidget * * imageG)
{
- wIcon_p bm;
- GdkBitmap * mask;
-
- if (widget == 0) {
- abort();
- }
-
- if (labelStr) {
- if (option&BO_ICON) {
- GdkPixbuf *pixbuf;
-
- bm = (wIcon_p)labelStr;
-
- if (bm->gtkIconType == gtkIcon_pixmap) {
- pixbuf = gdk_pixbuf_new_from_xpm_data((const char**)bm->bits);
- } else {
- pixbuf = wlibPixbufFromXBM( bm );
- }
- double scaleicon;
- wPrefGetFloat(PREFSECTION, LARGEICON, &scaleicon, 1.0);
- if (scaleicon<1.0) scaleicon=1.0;
- if (scaleicon>2.0) scaleicon=2.0;
- GdkPixbuf *pixbuf2 =
- gdk_pixbuf_scale_simple(pixbuf, gdk_pixbuf_get_width(pixbuf)*scaleicon, gdk_pixbuf_get_height(pixbuf)*scaleicon, GDK_INTERP_BILINEAR);
- g_object_ref_sink(pixbuf);
- g_object_unref((gpointer)pixbuf);
- if (*imageG==NULL) {
- *imageG = gtk_image_new_from_pixbuf(pixbuf2);
- gtk_container_add(GTK_CONTAINER(widget), *imageG);
- gtk_widget_show(*imageG);
- } else {
- gtk_image_set_from_pixbuf(GTK_IMAGE(*imageG), pixbuf2);
- }
- g_object_ref_sink(pixbuf2);
- g_object_unref((gpointer)pixbuf2);
- } else {
- if (*labelG==NULL) {
- *labelG = (GtkLabel*)gtk_label_new(wlibConvertInput(labelStr));
- gtk_container_add(GTK_CONTAINER(widget), (GtkWidget*)*labelG);
- gtk_widget_show((GtkWidget*)*labelG);
- } else {
- gtk_label_set_text(*labelG, wlibConvertInput(labelStr));
- }
- }
- }
+ wIcon_p bm;
+// GdkBitmap * mask;
+
+ if (widget == 0) {
+ abort();
+ }
+
+ if (labelStr) {
+ if (option&BO_ICON) {
+ GdkPixbuf *pixbuf;
+
+ bm = (wIcon_p)labelStr;
+
+ if (bm->gtkIconType == gtkIcon_pixmap) {
+ pixbuf = gdk_pixbuf_new_from_xpm_data((const char**)bm->bits);
+ } else {
+ pixbuf = wlibPixbufFromXBM( bm );
+ }
+ double scaleicon;
+ wPrefGetFloat(PREFSECTION, LARGEICON, &scaleicon, 1.0);
+ if (scaleicon<1.0) { scaleicon=1.0; }
+ if (scaleicon>2.0) { scaleicon=2.0; }
+ GdkPixbuf *pixbuf2 =
+ gdk_pixbuf_scale_simple(pixbuf, gdk_pixbuf_get_width(pixbuf)*scaleicon,
+ gdk_pixbuf_get_height(pixbuf)*scaleicon, GDK_INTERP_BILINEAR);
+ g_object_ref_sink(pixbuf);
+ g_object_unref((gpointer)pixbuf);
+ if (*imageG==NULL) {
+ *imageG = gtk_image_new_from_pixbuf(pixbuf2);
+ gtk_container_add(GTK_CONTAINER(widget), *imageG);
+ gtk_widget_show(*imageG);
+ } else {
+ gtk_image_set_from_pixbuf(GTK_IMAGE(*imageG), pixbuf2);
+ }
+ g_object_ref_sink(pixbuf2);
+ g_object_unref((gpointer)pixbuf2);
+ } else {
+ if (*labelG==NULL) {
+ *labelG = (GtkLabel*)gtk_label_new(wlibConvertInput(labelStr));
+ gtk_container_add(GTK_CONTAINER(widget), (GtkWidget*)*labelG);
+ gtk_widget_show((GtkWidget*)*labelG);
+ } else {
+ gtk_label_set_text(*labelG, wlibConvertInput(labelStr));
+ }
+ }
+ }
}
/**
@@ -138,7 +139,7 @@ void wlibSetLabel(
void wButtonSetLabel(wButton_p bb, const char * labelStr)
{
- wlibSetLabel(bb->widget, bb->option, labelStr, &bb->labelG, &bb->imageG);
+ wlibSetLabel(bb->widget, bb->option, labelStr, &bb->labelG, &bb->imageG);
}
/**
@@ -148,11 +149,11 @@ void wButtonSetLabel(wButton_p bb, const char * labelStr)
*/
void wlibButtonDoAction(
- wButton_p bb)
+ wButton_p bb)
{
- if (bb->action) {
- bb->action(bb->data);
- }
+ if (bb->action) {
+ bb->action(bb->data);
+ }
}
@@ -163,23 +164,23 @@ void wlibButtonDoAction(
*/
static void pushButt(
- GtkWidget *widget,
- gpointer value)
+ GtkWidget *widget,
+ gpointer value)
{
- wButton_p b = (wButton_p)value;
+ wButton_p b = (wButton_p)value;
- if (debugWindow >= 2) {
- printf("%s button pushed\n", b->labelStr?b->labelStr:"No label");
- }
+ if (debugWindow >= 2) {
+ printf("%s button pushed\n", b->labelStr?b->labelStr:"No label");
+ }
- if (b->recursion) {
- return;
- }
+ if (b->recursion) {
+ return;
+ }
- wlibStringUpdate();
- if (b->action) {
- b->action(b->data);
- }
+ wlibStringUpdate();
+ if (b->action) {
+ b->action(b->data);
+ }
}
@@ -192,52 +193,55 @@ static void pushButt(
static int timer_func ( void * data)
{
wButton_p bb = (wButton_p)data;
- if (bb->timer_id == 0) {
- bb->timer_state = -1;
- return FALSE;
- }
- /* Autorepeat state machine */
- switch (bb->timer_state) {
- case 0: /* Enable slow auto-repeat */
- g_source_remove(bb->timer_id);
- bb->timer_id = 0;
- bb->timer_state = 1;
- bb->timer_id = g_timeout_add( REPEAT_STAGE1_DELAY, timer_func, bb);
- bb->timer_count = 0;
- break;
- case 1: /* Check if it's time for fast repeat yet */
- if (bb->timer_count++ > 10)
- bb->timer_state = 2;
- break;
- case 2: /* Start fast auto-repeat */
- g_source_remove(bb->timer_id);
- bb->timer_id = 0;
- bb->timer_state = 3;
- bb->timer_id = g_timeout_add( REPEAT_STAGE2_DELAY, timer_func, bb);
- break;
- case 3:
- break;
- default:
- g_source_remove(bb->timer_id);
- bb->timer_id = 0;
- bb->timer_state = -1;
- return FALSE;
- break;
- }
-
- pushButt(NULL,bb);
-
- return TRUE;
+ if (bb->timer_id == 0) {
+ bb->timer_state = -1;
+ return FALSE;
+ }
+ /* Autorepeat state machine */
+ switch (bb->timer_state) {
+ case 0: /* Enable slow auto-repeat */
+ g_source_remove(bb->timer_id);
+ bb->timer_id = 0;
+ bb->timer_state = 1;
+ bb->timer_id = g_timeout_add( REPEAT_STAGE1_DELAY, timer_func, bb);
+ bb->timer_count = 0;
+ break;
+ case 1: /* Check if it's time for fast repeat yet */
+ if (bb->timer_count++ > 10) {
+ bb->timer_state = 2;
+ }
+ break;
+ case 2: /* Start fast auto-repeat */
+ g_source_remove(bb->timer_id);
+ bb->timer_id = 0;
+ bb->timer_state = 3;
+ bb->timer_id = g_timeout_add( REPEAT_STAGE2_DELAY, timer_func, bb);
+ break;
+ case 3:
+ break;
+ default:
+ g_source_remove(bb->timer_id);
+ bb->timer_id = 0;
+ bb->timer_state = -1;
+ return FALSE;
+ break;
+ }
+
+ pushButt(NULL,bb);
+
+ return TRUE;
}
static gint pressButt(
- GtkWidget *widget,
- GdkEventButton *event,
- wButton_p bb) {
+ GtkWidget *widget,
+ GdkEventButton *event,
+ wButton_p bb)
+{
- if ( debugWindow >= 1 )
+ if ( debugWindow >= 1 ) {
printf( "buttonPress: %s\n", bb->labelStr );
+ }
if (bb->recursion) {
return TRUE;
@@ -246,20 +250,22 @@ static gint pressButt(
if (bb->option & BO_REPEAT) {
/* Remove an existing timer */
- if (bb->timer_id)
- g_source_remove(bb->timer_id);
+ if (bb->timer_id) {
+ g_source_remove(bb->timer_id);
+ }
- /* Setup a timer */
- bb->timer_id = g_timeout_add( REPEAT_STAGE0_DELAY, timer_func, bb);
- bb->timer_state = 0;
+ /* Setup a timer */
+ bb->timer_id = g_timeout_add( REPEAT_STAGE0_DELAY, timer_func, bb);
+ bb->timer_state = 0;
}
if (!bb->busy) {
bb->recursion++;
int sensitive = gtk_widget_get_sensitive (GTK_WIDGET(bb->widget));
- if (sensitive)
+ if (sensitive) {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(bb->widget), TRUE);
+ }
bb->recursion--;
}
@@ -269,16 +275,18 @@ static gint pressButt(
}
static gint releaseButt(
- GtkWidget *widget,
- GdkEventButton *event,
- wButton_p bb) {
+ GtkWidget *widget,
+ GdkEventButton *event,
+ wButton_p bb)
+{
- if ( debugWindow >= 1 )
+ if ( debugWindow >= 1 ) {
printf( "buttonRelease: %s\n", bb->labelStr );
+ }
/* Remove any existing timer */
if (bb->timer_id) {
- g_source_remove(bb->timer_id);
- bb->timer_id = 0;
+ g_source_remove(bb->timer_id);
+ bb->timer_id = 0;
}
bb->timer_state = -1;
@@ -298,9 +306,9 @@ static gint releaseButt(
* Called after expose event default hander - allows the button to be outlined
*/
static wBool_t exposeButt(
- GtkWidget *widget,
- GdkEventExpose *event,
- gpointer g)
+ GtkWidget *widget,
+ GdkEventExpose *event,
+ gpointer g)
{
wControl_p b = (wControl_p)g;
return wControlExpose(widget,event,b);
@@ -322,61 +330,62 @@ static wBool_t exposeButt(
*/
wButton_p wButtonCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- wWinPix_t width,
- wButtonCallBack_p action,
- void * data)
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ wWinPix_t width,
+ wButtonCallBack_p action,
+ void * data)
{
- wButton_p b;
- if (option&BO_ICON) //The labelStr here is a wIcon_p
- b = wlibAlloc(parent, B_BUTTON, x, y, " ", sizeof *b, data);
- else
- b = wlibAlloc(parent, B_BUTTON, x, y, labelStr, sizeof *b, data);
- b->option = option;
- b->action = action;
- wlibComputePos((wControl_p)b);
-
- b->widget = gtk_toggle_button_new();
- g_signal_connect(GTK_OBJECT(b->widget), "button_press_event",
- G_CALLBACK(pressButt), b);
- g_signal_connect(GTK_OBJECT(b->widget), "button_release_event",
- G_CALLBACK(releaseButt), b);
- //g_signal_connect(GTK_OBJECT(b->widget), "clicked",
- // G_CALLBACK(pushButt), b);
- g_signal_connect_after(GTK_OBJECT(b->widget), "expose-event",
- G_CALLBACK(exposeButt), b);
- if (width > 0) {
- gtk_widget_set_size_request(b->widget, width, -1);
- }
-
- if( labelStr ){
- wButtonSetLabel(b, labelStr);
- }
-
- gtk_fixed_put(GTK_FIXED(parent->widget), b->widget, b->realX, b->realY);
-
- if (option & BB_DEFAULT) {
- gtk_widget_set_can_default(b->widget, GTK_CAN_DEFAULT);
- gtk_widget_grab_default(b->widget);
- gtk_window_set_default(GTK_WINDOW(parent->gtkwin), b->widget);
- }
-
- wlibControlGetSize((wControl_p)b);
-
- if (width == 0 && b->w < MIN_BUTTON_WIDTH && (b->option&BO_ICON)==0) {
- b->w = MIN_BUTTON_WIDTH;
- gtk_widget_set_size_request(b->widget, b->w, b->h);
- }
-
- gtk_widget_show(b->widget);
- wlibAddButton((wControl_p)b);
- wlibAddHelpString(b->widget, helpStr);
- return b;
+ wButton_p b;
+ if (option&BO_ICON) { //The labelStr here is a wIcon_p
+ b = wlibAlloc(parent, B_BUTTON, x, y, " ", sizeof *b, data);
+ } else {
+ b = wlibAlloc(parent, B_BUTTON, x, y, labelStr, sizeof *b, data);
+ }
+ b->option = option;
+ b->action = action;
+ wlibComputePos((wControl_p)b);
+
+ b->widget = gtk_toggle_button_new();
+ g_signal_connect(GTK_OBJECT(b->widget), "button_press_event",
+ G_CALLBACK(pressButt), b);
+ g_signal_connect(GTK_OBJECT(b->widget), "button_release_event",
+ G_CALLBACK(releaseButt), b);
+ //g_signal_connect(GTK_OBJECT(b->widget), "clicked",
+ // G_CALLBACK(pushButt), b);
+ g_signal_connect_after(GTK_OBJECT(b->widget), "expose-event",
+ G_CALLBACK(exposeButt), b);
+ if (width > 0) {
+ gtk_widget_set_size_request(b->widget, width, -1);
+ }
+
+ if( labelStr ) {
+ wButtonSetLabel(b, labelStr);
+ }
+
+ gtk_fixed_put(GTK_FIXED(parent->widget), b->widget, b->realX, b->realY);
+
+ if (option & BB_DEFAULT) {
+ gtk_widget_set_can_default(b->widget, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default(b->widget);
+ gtk_window_set_default(GTK_WINDOW(parent->gtkwin), b->widget);
+ }
+
+ wlibControlGetSize((wControl_p)b);
+
+ if (width == 0 && b->w < MIN_BUTTON_WIDTH && (b->option&BO_ICON)==0) {
+ b->w = MIN_BUTTON_WIDTH;
+ gtk_widget_set_size_request(b->widget, b->w, b->h);
+ }
+
+ gtk_widget_show(b->widget);
+ wlibAddButton((wControl_p)b);
+ wlibAddHelpString(b->widget, helpStr);
+ return b;
}
@@ -389,10 +398,10 @@ wButton_p wButtonCreate(
*/
struct wChoice_t {
- WOBJ_COMMON
- long *valueP;
- wChoiceCallBack_p action;
- int recursion;
+ WOBJ_COMMON
+ long *valueP;
+ wChoiceCallBack_p action;
+ int recursion;
};
@@ -407,33 +416,33 @@ struct wChoice_t {
*/
static long choiceGetValue(
- wChoice_p bc)
+ wChoice_p bc)
{
- GList * child, * children;
- long value, inx;
-
- if (bc->type == B_TOGGLE) {
- value = 0;
- } else {
- value = -1;
- }
-
- for (children=child=gtk_container_get_children(GTK_CONTAINER(bc->widget)),inx=0;
- child; child=child->next,inx++) {
- if (gtk_toggle_button_get_active(child->data)) {
- if (bc->type == B_TOGGLE) {
- value |= (1<<inx);
- } else {
- value = inx;
- }
- }
- }
-
- if (children) {
- g_list_free(children);
- }
-
- return value;
+ GList * child, * children;
+ long value, inx;
+
+ if (bc->type == B_TOGGLE) {
+ value = 0;
+ } else {
+ value = -1;
+ }
+
+ for (children=child=gtk_container_get_children(GTK_CONTAINER(bc->widget)),inx=0;
+ child; child=child->next,inx++) {
+ if (gtk_toggle_button_get_active(child->data)) {
+ if (bc->type == B_TOGGLE) {
+ value |= (1<<inx);
+ } else {
+ value = inx;
+ }
+ }
+ }
+
+ if (children) {
+ g_list_free(children);
+ }
+
+ return value;
}
/**
@@ -444,24 +453,24 @@ static long choiceGetValue(
*/
void wRadioSetValue(
- wChoice_p bc, /* Radio box */
- long value) /* Value */
+ wChoice_p bc, /* Radio box */
+ long value) /* Value */
{
- GList * child, * children;
- long inx;
-
- for (children=child=gtk_container_get_children(GTK_CONTAINER(bc->widget)),inx=0;
- child; child=child->next,inx++) {
- if (inx == value) {
- bc->recursion++;
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(child->data), TRUE);
- bc->recursion--;
- }
- }
-
- if (children) {
- g_list_free(children);
- }
+ GList * child, * children;
+ long inx;
+
+ for (children=child=gtk_container_get_children(GTK_CONTAINER(bc->widget)),inx=0;
+ child; child=child->next,inx++) {
+ if (inx == value) {
+ bc->recursion++;
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(child->data), TRUE);
+ bc->recursion--;
+ }
+ }
+
+ if (children) {
+ g_list_free(children);
+ }
}
/**
@@ -472,9 +481,9 @@ void wRadioSetValue(
*/
long wRadioGetValue(
- wChoice_p bc) /* Radio box */
+ wChoice_p bc) /* Radio box */
{
- return choiceGetValue(bc);
+ return choiceGetValue(bc);
}
/**
@@ -485,24 +494,24 @@ long wRadioGetValue(
*/
void wToggleSetValue(
- wChoice_p bc, /* Toggle box */
- long value) /* Values */
+ wChoice_p bc, /* Toggle box */
+ long value) /* Values */
{
- GList * child, * children;
- long inx;
- bc->recursion++;
-
- for (children=child=gtk_container_get_children(GTK_CONTAINER(bc->widget)),inx=0;
- child; child=child->next,inx++) {
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(child->data),
- (value&(1<<inx))!=0);
- }
+ GList * child, * children;
+ long inx;
+ bc->recursion++;
+
+ for (children=child=gtk_container_get_children(GTK_CONTAINER(bc->widget)),inx=0;
+ child; child=child->next,inx++) {
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(child->data),
+ (value&(1<<inx))!=0);
+ }
- if (children) {
- g_list_free(children);
- }
+ if (children) {
+ g_list_free(children);
+ }
- bc->recursion--;
+ bc->recursion--;
}
@@ -514,9 +523,9 @@ void wToggleSetValue(
*/
long wToggleGetValue(
- wChoice_p b) /* Toggle box */
+ wChoice_p b) /* Toggle box */
{
- return choiceGetValue(b);
+ return choiceGetValue(b);
}
/**
@@ -529,35 +538,35 @@ long wToggleGetValue(
*/
static int pushChoice(
- GtkWidget *widget,
- gpointer b)
+ GtkWidget *widget,
+ gpointer b)
{
- wChoice_p bc = (wChoice_p)b;
- long value = choiceGetValue(bc);
+ wChoice_p bc = (wChoice_p)b;
+ long value = choiceGetValue(bc);
- if (debugWindow >= 2) {
- printf("%s choice pushed = %ld\n", bc->labelStr?bc->labelStr:"No label",
- value);
- }
+ if (debugWindow >= 2) {
+ printf("%s choice pushed = %ld\n", bc->labelStr?bc->labelStr:"No label",
+ value);
+ }
- if (bc->type == B_RADIO &&
- !(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))) {
- return 1;
- }
+ if (bc->type == B_RADIO &&
+ !(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))) {
+ return 1;
+ }
- if (bc->recursion) {
- return 1;
- }
+ if (bc->recursion) {
+ return 1;
+ }
- if (bc->valueP) {
- *bc->valueP = value;
- }
+ if (bc->valueP) {
+ *bc->valueP = value;
+ }
- if (bc->action) {
- bc->action(value, bc->data);
- }
+ if (bc->action) {
+ bc->action(value, bc->data);
+ }
- return 1;
+ return 1;
}
/**
@@ -568,13 +577,13 @@ static int pushChoice(
*/
static void choiceRepaint(
- wControl_p b)
+ wControl_p b)
{
- wChoice_p bc = (wChoice_p)b;
+ wChoice_p bc = (wChoice_p)b;
- if (gtk_widget_get_visible(b->widget)) {
- wlibDrawBox(bc->parent, wBoxBelow, bc->realX-1, bc->realY-1, bc->w+1, bc->h+1);
- }
+ if (gtk_widget_get_visible(b->widget)) {
+ wlibDrawBox(bc->parent, wBoxBelow, bc->realX-1, bc->realY-1, bc->w+1, bc->h+1);
+ }
}
/**
@@ -594,95 +603,95 @@ static void choiceRepaint(
*/
wChoice_p wRadioCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- const char * const *labels,
- long *valueP,
- wChoiceCallBack_p action,
- void *data)
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ const char * const *labels,
+ long *valueP,
+ wChoiceCallBack_p action,
+ void *data)
{
- wChoice_p b;
- const char * const * label;
- GtkWidget *butt0=NULL, *butt;
-
- if ((option & BC_NOBORDER)==0) {
- if (x>=0) {
- x++;
- } else {
- x--;
- }
-
- if (y>=0) {
- y++;
- } else {
- y--;
- }
- }
-
- b = wlibAlloc(parent, B_RADIO, x, y, labelStr, sizeof *b, data);
- b->option = option;
- b->action = action;
- b->valueP = valueP;
- wlibComputePos((wControl_p)b);
-
- ((wControl_p)b)->outline = FALSE;
-
- if (option&BC_HORZ) {
- b->widget = gtk_hbox_new(FALSE, 0);
- } else {
- b->widget = gtk_vbox_new(FALSE, 0);
- }
-
- if (b->widget == 0) {
- abort();
- }
-
- for (label=labels; *label; label++) {
- butt = gtk_radio_button_new_with_label(
- butt0?gtk_radio_button_get_group(GTK_RADIO_BUTTON(butt0)):NULL, _(*label));
-
- if (butt0==NULL) {
- butt0 = butt;
- }
-
- gtk_box_pack_start(GTK_BOX(b->widget), butt, TRUE, TRUE, 0);
- gtk_widget_show(butt);
- g_signal_connect(GTK_OBJECT(butt), "toggled",
- G_CALLBACK(pushChoice), b);
- g_signal_connect_after(GTK_OBJECT(b->widget), "expose-event",
- G_CALLBACK(exposeButt), b);
- wlibAddHelpString(butt, helpStr);
- }
-
- if (option & BB_DEFAULT) {
- gtk_widget_set_can_default(b->widget, TRUE);
- gtk_widget_grab_default(b->widget);
- }
-
- if (valueP) {
- wRadioSetValue(b, *valueP);
- }
-
- if ((option & BC_NOBORDER)==0) {
- b->repaintProc = choiceRepaint;
- b->w += 2;
- b->h += 2;
- }
-
- gtk_fixed_put(GTK_FIXED(parent->widget), b->widget, b->realX, b->realY);
- wlibControlGetSize((wControl_p)b);
-
- if (labelStr) {
- b->labelW = wlibAddLabel((wControl_p)b, labelStr);
- }
-
- gtk_widget_show(b->widget);
- wlibAddButton((wControl_p)b);
- return b;
+ wChoice_p b;
+ const char * const * label;
+ GtkWidget *butt0=NULL, *butt;
+
+ if ((option & BC_NOBORDER)==0) {
+ if (x>=0) {
+ x++;
+ } else {
+ x--;
+ }
+
+ if (y>=0) {
+ y++;
+ } else {
+ y--;
+ }
+ }
+
+ b = wlibAlloc(parent, B_RADIO, x, y, labelStr, sizeof *b, data);
+ b->option = option;
+ b->action = action;
+ b->valueP = valueP;
+ wlibComputePos((wControl_p)b);
+
+ ((wControl_p)b)->outline = FALSE;
+
+ if (option&BC_HORZ) {
+ b->widget = gtk_hbox_new(FALSE, 0);
+ } else {
+ b->widget = gtk_vbox_new(FALSE, 0);
+ }
+
+ if (b->widget == 0) {
+ abort();
+ }
+
+ for (label=labels; *label; label++) {
+ butt = gtk_radio_button_new_with_label(
+ butt0?gtk_radio_button_get_group(GTK_RADIO_BUTTON(butt0)):NULL, _(*label));
+
+ if (butt0==NULL) {
+ butt0 = butt;
+ }
+
+ gtk_box_pack_start(GTK_BOX(b->widget), butt, TRUE, TRUE, 0);
+ gtk_widget_show(butt);
+ g_signal_connect(GTK_OBJECT(butt), "toggled",
+ G_CALLBACK(pushChoice), b);
+ g_signal_connect_after(GTK_OBJECT(b->widget), "expose-event",
+ G_CALLBACK(exposeButt), b);
+ wlibAddHelpString(butt, helpStr);
+ }
+
+ if (option & BB_DEFAULT) {
+ gtk_widget_set_can_default(b->widget, TRUE);
+ gtk_widget_grab_default(b->widget);
+ }
+
+ if (valueP) {
+ wRadioSetValue(b, *valueP);
+ }
+
+ if ((option & BC_NOBORDER)==0) {
+ b->repaintProc = choiceRepaint;
+ b->w += 2;
+ b->h += 2;
+ }
+
+ gtk_fixed_put(GTK_FIXED(parent->widget), b->widget, b->realX, b->realY);
+ wlibControlGetSize((wControl_p)b);
+
+ if (labelStr) {
+ b->labelW = wlibAddLabel((wControl_p)b, labelStr);
+ }
+
+ gtk_widget_show(b->widget);
+ wlibAddButton((wControl_p)b);
+ return b;
}
/**
@@ -702,82 +711,82 @@ wChoice_p wRadioCreate(
*/
wChoice_p wToggleCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- const char * const * labels,
- long *valueP,
- wChoiceCallBack_p action,
- void *data)
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ const char * const * labels,
+ long *valueP,
+ wChoiceCallBack_p action,
+ void *data)
{
- wChoice_p b;
- const char * const * label;
-
- if ((option & BC_NOBORDER)==0) {
- if (x>=0) {
- x++;
- } else {
- x--;
- }
-
- if (y>=0) {
- y++;
- } else {
- y--;
- }
- }
-
- b = wlibAlloc(parent, B_TOGGLE, x, y, labelStr, sizeof *b, data);
- b->option = option;
- b->action = action;
- wlibComputePos((wControl_p)b);
-
- ((wControl_p)b)->outline = FALSE;
-
- if (option&BC_HORZ) {
- b->widget = gtk_hbox_new(FALSE, 0);
- } else {
- b->widget = gtk_vbox_new(FALSE, 0);
- }
-
- if (b->widget == 0) {
- abort();
- }
-
- for (label=labels; *label; label++) {
- GtkWidget *butt;
-
- butt = gtk_check_button_new_with_label(_(*label));
- gtk_box_pack_start(GTK_BOX(b->widget), butt, TRUE, TRUE, 0);
- gtk_widget_show(butt);
- g_signal_connect(GTK_OBJECT(butt), "toggled",
- G_CALLBACK(pushChoice), b);
- g_signal_connect_after(GTK_OBJECT(b->widget), "expose-event",
- G_CALLBACK(exposeButt), b);
- wlibAddHelpString(butt, helpStr);
- }
-
- if (valueP) {
- wToggleSetValue(b, *valueP);
- }
-
- if ((option & BC_NOBORDER)==0) {
- b->repaintProc = choiceRepaint;
- b->w += 2;
- b->h += 2;
- }
-
- gtk_fixed_put(GTK_FIXED(parent->widget), b->widget, b->realX, b->realY);
- wlibControlGetSize((wControl_p)b);
-
- if (labelStr) {
- b->labelW = wlibAddLabel((wControl_p)b, labelStr);
- }
-
- gtk_widget_show(b->widget);
- wlibAddButton((wControl_p)b);
- return b;
+ wChoice_p b;
+ const char * const * label;
+
+ if ((option & BC_NOBORDER)==0) {
+ if (x>=0) {
+ x++;
+ } else {
+ x--;
+ }
+
+ if (y>=0) {
+ y++;
+ } else {
+ y--;
+ }
+ }
+
+ b = wlibAlloc(parent, B_TOGGLE, x, y, labelStr, sizeof *b, data);
+ b->option = option;
+ b->action = action;
+ wlibComputePos((wControl_p)b);
+
+ ((wControl_p)b)->outline = FALSE;
+
+ if (option&BC_HORZ) {
+ b->widget = gtk_hbox_new(FALSE, 0);
+ } else {
+ b->widget = gtk_vbox_new(FALSE, 0);
+ }
+
+ if (b->widget == 0) {
+ abort();
+ }
+
+ for (label=labels; *label; label++) {
+ GtkWidget *butt;
+
+ butt = gtk_check_button_new_with_label(_(*label));
+ gtk_box_pack_start(GTK_BOX(b->widget), butt, TRUE, TRUE, 0);
+ gtk_widget_show(butt);
+ g_signal_connect(GTK_OBJECT(butt), "toggled",
+ G_CALLBACK(pushChoice), b);
+ g_signal_connect_after(GTK_OBJECT(b->widget), "expose-event",
+ G_CALLBACK(exposeButt), b);
+ wlibAddHelpString(butt, helpStr);
+ }
+
+ if (valueP) {
+ wToggleSetValue(b, *valueP);
+ }
+
+ if ((option & BC_NOBORDER)==0) {
+ b->repaintProc = choiceRepaint;
+ b->w += 2;
+ b->h += 2;
+ }
+
+ gtk_fixed_put(GTK_FIXED(parent->widget), b->widget, b->realX, b->realY);
+ wlibControlGetSize((wControl_p)b);
+
+ if (labelStr) {
+ b->labelW = wlibAddLabel((wControl_p)b, labelStr);
+ }
+
+ gtk_widget_show(b->widget);
+ wlibAddButton((wControl_p)b);
+ return b;
}
diff --git a/app/wlib/gtklib/color.c b/app/wlib/gtklib/color.c
index fee4a80..d193872 100644
--- a/app/wlib/gtklib/color.c
+++ b/app/wlib/gtklib/color.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 <assert.h>
#include <stdlib.h>
@@ -45,62 +45,62 @@ wDrawColor wDrawColorBlack;
static GArray *colorMap_garray = NULL; // Change to use glib array
static colorMap_t colorMap[] = {
- { 255, 255, 255 }, /* White */
- { 0, 0, 0 }, /* Black */
- { 255, 0, 0 }, /* Red */
- { 0, 255, 0 }, /* Green */
- { 0, 0, 255 }, /* Blue */
- { 255, 255, 0 }, /* Yellow */
- { 255, 0, 255 }, /* Purple */
- { 0, 255, 255 }, /* Aqua */
- { 128, 0, 0 }, /* Dk. Red */
- { 0, 128, 0 }, /* Dk. Green */
- { 0, 0, 128 }, /* Dk. Blue */
- { 128, 128, 0 }, /* Dk. Yellow */
- { 128, 0, 128 }, /* Dk. Purple */
- { 0, 128, 128 }, /* Dk. Aqua */
- { 65, 105, 225 }, /* Royal Blue */
- { 0, 191, 255 }, /* DeepSkyBlue */
- { 125, 206, 250 }, /* LightSkyBlue */
- { 70, 130, 180 }, /* Steel Blue */
- { 176, 224, 230 }, /* Powder Blue */
- { 127, 255, 212 }, /* Aquamarine */
- { 46, 139, 87 }, /* SeaGreen */
- { 152, 251, 152 }, /* PaleGreen */
- { 124, 252, 0 }, /* LawnGreen */
- { 50, 205, 50 }, /* LimeGreen */
- { 34, 139, 34 }, /* ForestGreen */
- { 255, 215, 0 }, /* Gold */
- { 188, 143, 143 }, /* RosyBrown */
- { 139, 69, 19 }, /* SaddleBrown */
- { 245, 245, 220 }, /* Beige */
- { 210, 180, 140 }, /* Tan */
- { 210, 105, 30 }, /* Chocolate */
- { 165, 42, 42 }, /* Brown */
- { 255, 165, 0 }, /* Orange */
- { 255, 127, 80 }, /* Coral */
- { 255, 99, 71 }, /* Tomato */
- { 255, 105, 180 }, /* HotPink */
- { 255, 192, 203 }, /* Pink */
- { 176, 48, 96 }, /* Maroon */
- { 238, 130, 238 }, /* Violet */
- { 160, 32, 240 }, /* Purple */
- { 16, 16, 16 }, /* Gray */
- { 32, 32, 32 }, /* Gray */
- { 48, 48, 48 }, /* Gray */
- { 64, 64, 64 }, /* Gray */
- { 80, 80, 80 }, /* Gray */
- { 96, 96, 96 }, /* Gray */
- { 112, 112, 122 }, /* Gray */
- { 128, 128, 128 }, /* Gray */
- { 144, 144, 144 }, /* Gray */
- { 160, 160, 160 }, /* Gray */
- { 176, 176, 176 }, /* Gray */
- { 192, 192, 192 }, /* Gray */
- { 208, 208, 208 }, /* Gray */
- { 224, 224, 224 }, /* Gray */
- { 240, 240, 240 }, /* Gray */
- { 255, 255, 255 } /* WhitePixel */
+ { 255, 255, 255 }, /* White */
+ { 0, 0, 0 }, /* Black */
+ { 255, 0, 0 }, /* Red */
+ { 0, 255, 0 }, /* Green */
+ { 0, 0, 255 }, /* Blue */
+ { 255, 255, 0 }, /* Yellow */
+ { 255, 0, 255 }, /* Purple */
+ { 0, 255, 255 }, /* Aqua */
+ { 128, 0, 0 }, /* Dk. Red */
+ { 0, 128, 0 }, /* Dk. Green */
+ { 0, 0, 128 }, /* Dk. Blue */
+ { 128, 128, 0 }, /* Dk. Yellow */
+ { 128, 0, 128 }, /* Dk. Purple */
+ { 0, 128, 128 }, /* Dk. Aqua */
+ { 65, 105, 225 }, /* Royal Blue */
+ { 0, 191, 255 }, /* DeepSkyBlue */
+ { 125, 206, 250 }, /* LightSkyBlue */
+ { 70, 130, 180 }, /* Steel Blue */
+ { 176, 224, 230 }, /* Powder Blue */
+ { 127, 255, 212 }, /* Aquamarine */
+ { 46, 139, 87 }, /* SeaGreen */
+ { 152, 251, 152 }, /* PaleGreen */
+ { 124, 252, 0 }, /* LawnGreen */
+ { 50, 205, 50 }, /* LimeGreen */
+ { 34, 139, 34 }, /* ForestGreen */
+ { 255, 215, 0 }, /* Gold */
+ { 188, 143, 143 }, /* RosyBrown */
+ { 139, 69, 19 }, /* SaddleBrown */
+ { 245, 245, 220 }, /* Beige */
+ { 210, 180, 140 }, /* Tan */
+ { 210, 105, 30 }, /* Chocolate */
+ { 165, 42, 42 }, /* Brown */
+ { 255, 165, 0 }, /* Orange */
+ { 255, 127, 80 }, /* Coral */
+ { 255, 99, 71 }, /* Tomato */
+ { 255, 105, 180 }, /* HotPink */
+ { 255, 192, 203 }, /* Pink */
+ { 176, 48, 96 }, /* Maroon */
+ { 238, 130, 238 }, /* Violet */
+ { 160, 32, 240 }, /* Purple */
+ { 16, 16, 16 }, /* Gray */
+ { 32, 32, 32 }, /* Gray */
+ { 48, 48, 48 }, /* Gray */
+ { 64, 64, 64 }, /* Gray */
+ { 80, 80, 80 }, /* Gray */
+ { 96, 96, 96 }, /* Gray */
+ { 112, 112, 122 }, /* Gray */
+ { 128, 128, 128 }, /* Gray */
+ { 144, 144, 144 }, /* Gray */
+ { 160, 160, 160 }, /* Gray */
+ { 176, 176, 176 }, /* Gray */
+ { 192, 192, 192 }, /* Gray */
+ { 208, 208, 208 }, /* Gray */
+ { 224, 224, 224 }, /* Gray */
+ { 240, 240, 240 }, /* Gray */
+ { 255, 255, 255 } /* WhitePixel */
};
#define NUM_GRAYS (16)
@@ -117,21 +117,21 @@ static char lastColorChar = '!';
*/
wDrawColor wDrawColorGray(
- int percent)
+ int percent)
{
- int n;
- long rgb;
- n = (percent * (NUM_GRAYS+1)) / 100;
-
- if (n <= 0) {
- return wDrawColorBlack;
- } else if (n >= NUM_GRAYS) {
- return wDrawColorWhite;
- } else {
- n = (n*256)/NUM_GRAYS;
- rgb = RGB(n, n, n);
- return wDrawFindColor(rgb);
- }
+ int n;
+ long rgb;
+ n = (percent * (NUM_GRAYS+1)) / 100;
+
+ if (n <= 0) {
+ return wDrawColorBlack;
+ } else if (n >= NUM_GRAYS) {
+ return wDrawColorWhite;
+ } else {
+ n = (n*256)/NUM_GRAYS;
+ rgb = RGB(n, n, n);
+ return wDrawFindColor(rgb);
+ }
}
/**
@@ -142,12 +142,12 @@ wDrawColor wDrawColorGray(
void wlibGetColorMap(void)
{
- if (gtkColorMap) {
- return;
- }
+ if (gtkColorMap) {
+ return;
+ }
- gtkColorMap = gtk_widget_get_colormap(gtkMainW->widget);
- return;
+ gtkColorMap = gtk_widget_get_colormap(gtkMainW->widget);
+ return;
}
/**
@@ -160,21 +160,21 @@ void wlibGetColorMap(void)
static void init_colorMapValue(colorMap_t * t)
{
- t->rgb = RGB(t->red, t->green, t->blue);
- t->normalColor.red = t->red*65535/255;
- t->normalColor.green = t->green*65535/255;
- t->normalColor.blue = t->blue*65535/255;
- gdk_colormap_alloc_color(gtkColorMap, &t->normalColor, FALSE, TRUE);
- t->invertColor = t->normalColor;
- t->invertColor.pixel ^= g_array_index(colorMap_garray, colorMap_t,
- wDrawColorWhite).normalColor.pixel;
- t->colorChar = lastColorChar++;
-
- if (lastColorChar >= 0x7F) {
- lastColorChar = '!'+1;
- } else if (lastColorChar == '"') {
- lastColorChar++;
- }
+ t->rgb = RGB(t->red, t->green, t->blue);
+ t->normalColor.red = t->red*65535/255;
+ t->normalColor.green = t->green*65535/255;
+ t->normalColor.blue = t->blue*65535/255;
+ gdk_colormap_alloc_color(gtkColorMap, &t->normalColor, FALSE, TRUE);
+ t->invertColor = t->normalColor;
+ t->invertColor.pixel ^= g_array_index(colorMap_garray, colorMap_t,
+ wDrawColorWhite).normalColor.pixel;
+ t->colorChar = lastColorChar++;
+
+ if (lastColorChar >= 0x7F) {
+ lastColorChar = '!'+1;
+ } else if (lastColorChar == '"') {
+ lastColorChar++;
+ }
}
/**
@@ -185,15 +185,15 @@ static void init_colorMapValue(colorMap_t * t)
static void init_colorMap(void)
{
- int gint;
- colorMap_garray = g_array_sized_new(TRUE, TRUE, sizeof(colorMap_t),
- sizeof(colorMap)/sizeof(colorMap_t));
- g_array_append_vals(colorMap_garray, &colorMap,
- sizeof(colorMap)/sizeof(colorMap_t));
-
- for (gint=0; gint<colorMap_garray->len; gint++) {
- init_colorMapValue(&g_array_index(colorMap_garray, colorMap_t, gint));
- }
+ int gint;
+ colorMap_garray = g_array_sized_new(TRUE, TRUE, sizeof(colorMap_t),
+ sizeof(colorMap)/sizeof(colorMap_t));
+ g_array_append_vals(colorMap_garray, &colorMap,
+ sizeof(colorMap)/sizeof(colorMap_t));
+
+ for (gint=0; gint<colorMap_garray->len; gint++) {
+ init_colorMapValue(&g_array_index(colorMap_garray, colorMap_t, gint));
+ }
}
/**
@@ -206,57 +206,57 @@ static void init_colorMap(void)
*/
wDrawColor wDrawFindColor(
- long rgb0)
+ long rgb0)
{
- wDrawColor cc;
- int r0, g0, b0, r1, g1, b1;
- int d0;
- int i;
- colorMap_t tempMapValue;
- wlibGetColorMap();
- cc = wDrawColorBlack;
- r0 = (int)(rgb0>>16)&0xFF;
- g0 = (int)(rgb0>>8)&0xFF;
- b0 = (int)(rgb0)&0xFF;
- d0 = 256*3;
-
- // Initialize garray if needed
- if (colorMap_garray == NULL) {
- init_colorMap();
- }
-
- // Iterate over entire garray
- for (i=0; i<colorMap_garray->len; i++) {
- int d1;
- colorMap_t * cm_p;
-
- cm_p = &g_array_index(colorMap_garray, colorMap_t, i);
- r1 = (int)cm_p->red;
- g1 = (int)cm_p->green;
- b1 = (int)cm_p->blue;
- d1 = abs(r0-r1) + abs(g0-g1) + abs(b0-b1);
-
- if (d1 == 0) {
- return i;
- }
-
- if (d1 < d0) {
- d0 = d1;
- cc = i;
- }
- }
-
- if (d0 <= MAX_COLOR_DISTANCE) {
- return cc;
- }
-
- // No good value - so add one
- tempMapValue.red = r0;
- tempMapValue.green = g0;
- tempMapValue.blue = b0;
- init_colorMapValue(&tempMapValue);
- g_array_append_val(colorMap_garray,tempMapValue);
- return i;
+ wDrawColor cc;
+ int r0, g0, b0, r1, g1, b1;
+ int d0;
+ int i;
+ colorMap_t tempMapValue;
+ wlibGetColorMap();
+ cc = wDrawColorBlack;
+ r0 = (int)(rgb0>>16)&0xFF;
+ g0 = (int)(rgb0>>8)&0xFF;
+ b0 = (int)(rgb0)&0xFF;
+ d0 = 256*3;
+
+ // Initialize garray if needed
+ if (colorMap_garray == NULL) {
+ init_colorMap();
+ }
+
+ // Iterate over entire garray
+ for (i=0; i<colorMap_garray->len; i++) {
+ int d1;
+ colorMap_t * cm_p;
+
+ cm_p = &g_array_index(colorMap_garray, colorMap_t, i);
+ r1 = (int)cm_p->red;
+ g1 = (int)cm_p->green;
+ b1 = (int)cm_p->blue;
+ d1 = abs(r0-r1) + abs(g0-g1) + abs(b0-b1);
+
+ if (d1 == 0) {
+ return i;
+ }
+
+ if (d1 < d0) {
+ d0 = d1;
+ cc = i;
+ }
+ }
+
+ if (d0 <= MAX_COLOR_DISTANCE) {
+ return cc;
+ }
+
+ // No good value - so add one
+ tempMapValue.red = r0;
+ tempMapValue.green = g0;
+ tempMapValue.blue = b0;
+ init_colorMapValue(&tempMapValue);
+ g_array_append_val(colorMap_garray,tempMapValue);
+ return i;
}
/**
@@ -267,21 +267,21 @@ wDrawColor wDrawFindColor(
*/
long wDrawGetRGB(
- wDrawColor color)
+ wDrawColor color)
{
- colorMap_t * colorMap_e;
- wlibGetColorMap();
+ colorMap_t * colorMap_e;
+ wlibGetColorMap();
- if (colorMap_garray == NULL) {
- init_colorMap();
- }
+ if (colorMap_garray == NULL) {
+ init_colorMap();
+ }
- if (color < 0 || color > colorMap_garray->len) {
- abort();
- }
+ if (color < 0 || color > colorMap_garray->len) {
+ abort();
+ }
- colorMap_e = &g_array_index(colorMap_garray, colorMap_t, color);
- return colorMap_e->rgb;
+ colorMap_e = &g_array_index(colorMap_garray, colorMap_t, color);
+ return colorMap_e->rgb;
}
/**
@@ -293,27 +293,27 @@ long wDrawGetRGB(
*/
GdkColor* wlibGetColor(
- wDrawColor color,
- wBool_t normal)
+ wDrawColor color,
+ wBool_t normal)
{
- colorMap_t * colorMap_e;
- wlibGetColorMap();
+ colorMap_t * colorMap_e;
+ wlibGetColorMap();
- if (colorMap_garray == NULL) {
- init_colorMap();
- }
+ if (colorMap_garray == NULL) {
+ init_colorMap();
+ }
- if (color < 0 || color > colorMap_garray->len) {
- abort();
- }
+ if (color < 0 || color > colorMap_garray->len) {
+ abort();
+ }
- colorMap_e = &g_array_index(colorMap_garray, colorMap_t, color);
+ colorMap_e = &g_array_index(colorMap_garray, colorMap_t, color);
- if (normal) {
- return &colorMap_e->normalColor;
- } else {
- return &colorMap_e->invertColor;
- }
+ if (normal) {
+ return &colorMap_e->normalColor;
+ } else {
+ return &colorMap_e->invertColor;
+ }
}
@@ -326,12 +326,12 @@ GdkColor* wlibGetColor(
*/
typedef struct {
- wDrawColor * valueP;
- const char * labelStr;
- wColorSelectButtonCallBack_p action;
- void * data;
- wDrawColor color;
- wButton_p button;
+ wDrawColor * valueP;
+ const char * labelStr;
+ wColorSelectButtonCallBack_p action;
+ void * data;
+ wDrawColor color;
+ wButton_p button;
} colorData_t;
/**
@@ -344,23 +344,23 @@ typedef struct {
static void
colorChange(GtkColorButton *widget, gpointer user_data)
{
- colorData_t *cd = user_data;
- GdkColor newcolor;
- long rgb;
+ colorData_t *cd = user_data;
+ GdkColor newcolor;
+ long rgb;
- gtk_color_button_get_color(widget, &newcolor);
+ gtk_color_button_get_color(widget, &newcolor);
- rgb = RGB((int)(newcolor.red/256), (int)(newcolor.green/256),
- (int)(newcolor.blue/256));
- cd->color = wDrawFindColor(rgb);
+ rgb = RGB((int)(newcolor.red/256), (int)(newcolor.green/256),
+ (int)(newcolor.blue/256));
+ cd->color = wDrawFindColor(rgb);
- if (cd->valueP) {
- *(cd->valueP) = cd->color;
- }
+ if (cd->valueP) {
+ *(cd->valueP) = cd->color;
+ }
- if (cd->action) {
- cd->action(cd->data, cd->color);
- }
+ if (cd->action) {
+ cd->action(cd->data, cd->color);
+ }
}
/**
@@ -372,14 +372,14 @@ colorChange(GtkColorButton *widget, gpointer user_data)
*/
void wColorSelectButtonSetColor(
- wButton_p bb,
- wDrawColor color)
+ wButton_p bb,
+ wDrawColor color)
{
- GdkColor *colorOfButton = wlibGetColor(color, TRUE);
+ GdkColor *colorOfButton = wlibGetColor(color, TRUE);
- gtk_color_button_set_color(GTK_COLOR_BUTTON(bb->widget),
- colorOfButton);
- ((colorData_t*)((wControl_p)bb)->data)->color = color;
+ gtk_color_button_set_color(GTK_COLOR_BUTTON(bb->widget),
+ colorOfButton);
+ ((colorData_t*)((wControl_p)bb)->data)->color = color;
}
@@ -391,9 +391,9 @@ void wColorSelectButtonSetColor(
*/
wDrawColor wColorSelectButtonGetColor(
- wButton_p bb)
+ wButton_p bb)
{
- return ((colorData_t*)((wControl_p)bb)->data)->color;
+ return ((colorData_t*)((wControl_p)bb)->data)->color;
}
/**
@@ -413,57 +413,57 @@ wDrawColor wColorSelectButtonGetColor(
*/
wButton_p wColorSelectButtonCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- wWinPix_t width,
- wDrawColor *valueP,
- wColorSelectButtonCallBack_p action,
- void * data)
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ wWinPix_t width,
+ wDrawColor *valueP,
+ wColorSelectButtonCallBack_p action,
+ void * data)
{
- wButton_p b;
- colorData_t * cd;
- cd = malloc(sizeof(colorData_t));
- cd->valueP = valueP;
- cd->action = action;
- cd->data = data;
- cd->labelStr = labelStr;
- cd->color = (valueP?*valueP:0);
-
- b = wlibAlloc(parent, B_BUTTON, x, y, labelStr, sizeof *b, cd);
- b->option = option;
- wlibComputePos((wControl_p)b);
-
- b->widget = gtk_color_button_new();
- GtkStyle *style;
- style = gtk_widget_get_style(b->widget);
- style->xthickness = 1;
- style->ythickness = 1;
- gtk_widget_set_style(b->widget, style);
- gtk_widget_set_size_request(GTK_WIDGET(b->widget), 22, 22);
- g_signal_connect(GTK_OBJECT(b->widget), "color-set",
- G_CALLBACK(colorChange), cd);
-
- gtk_fixed_put(GTK_FIXED(parent->widget), b->widget, b->realX, b->realY);
-
- if (option & BB_DEFAULT) {
- gtk_widget_set_can_default(b->widget, GTK_CAN_DEFAULT);
- gtk_widget_grab_default(b->widget);
- gtk_window_set_default(GTK_WINDOW(parent->gtkwin), b->widget);
- }
-
- wlibControlGetSize((wControl_p)b);
-
- gtk_widget_show(b->widget);
- wlibAddButton((wControl_p)b);
- wlibAddHelpString(b->widget, helpStr);
- wColorSelectButtonSetColor(b, (valueP?*valueP:0));
-
- if (labelStr) {
- ((wControl_p)b)->labelW = wlibAddLabel((wControl_p)b, labelStr);
- }
- return b;
+ wButton_p b;
+ colorData_t * cd;
+ cd = malloc(sizeof(colorData_t));
+ cd->valueP = valueP;
+ cd->action = action;
+ cd->data = data;
+ cd->labelStr = labelStr;
+ cd->color = (valueP?*valueP:0);
+
+ b = wlibAlloc(parent, B_BUTTON, x, y, labelStr, sizeof *b, cd);
+ b->option = option;
+ wlibComputePos((wControl_p)b);
+
+ b->widget = gtk_color_button_new();
+ GtkStyle *style;
+ style = gtk_widget_get_style(b->widget);
+ style->xthickness = 1;
+ style->ythickness = 1;
+ gtk_widget_set_style(b->widget, style);
+ gtk_widget_set_size_request(GTK_WIDGET(b->widget), 22, 22);
+ g_signal_connect(GTK_OBJECT(b->widget), "color-set",
+ G_CALLBACK(colorChange), cd);
+
+ gtk_fixed_put(GTK_FIXED(parent->widget), b->widget, b->realX, b->realY);
+
+ if (option & BB_DEFAULT) {
+ gtk_widget_set_can_default(b->widget, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default(b->widget);
+ gtk_window_set_default(GTK_WINDOW(parent->gtkwin), b->widget);
+ }
+
+ wlibControlGetSize((wControl_p)b);
+
+ gtk_widget_show(b->widget);
+ wlibAddButton((wControl_p)b);
+ wlibAddHelpString(b->widget, helpStr);
+ wColorSelectButtonSetColor(b, (valueP?*valueP:0));
+
+ if (labelStr) {
+ ((wControl_p)b)->labelW = wlibAddLabel((wControl_p)b, labelStr);
+ }
+ return b;
}
diff --git a/app/wlib/gtklib/control.c b/app/wlib/gtklib/control.c
index 0332470..d43d2b6 100644
--- a/app/wlib/gtklib/control.c
+++ b/app/wlib/gtklib/control.c
@@ -1,7 +1,7 @@
/** \file control.c
* Control Utilities
*/
-/*
+/*
* Copyright 2016 Martin Fischer <m_fischer@sf.net>
*
* This program is free software; you can redistribute it and/or modify
@@ -46,31 +46,31 @@
*/
void wControlShow(
- wControl_p b,
- wBool_t show)
+ wControl_p b,
+ wBool_t show)
{
- if (b->type == B_LINES) {
- wlibLineShow((wLine_p)b, show);
- return;
- }
-
- if (b->widget == NULL) {
- abort();
- }
-
- if (show) {
- gtk_widget_show(b->widget);
-
- if (b->label) {
- gtk_widget_show(b->label);
- }
- } else {
- gtk_widget_hide(b->widget);
-
- if (b->label) {
- gtk_widget_hide(b->label);
- }
- }
+ if (b->type == B_LINES) {
+ wlibLineShow((wLine_p)b, show);
+ return;
+ }
+
+ if (b->widget == NULL) {
+ abort();
+ }
+
+ if (show) {
+ gtk_widget_show(b->widget);
+
+ if (b->label) {
+ gtk_widget_show(b->label);
+ }
+ } else {
+ gtk_widget_hide(b->widget);
+
+ if (b->label) {
+ gtk_widget_hide(b->label);
+ }
+ }
}
/**
@@ -82,24 +82,24 @@ void wControlShow(
*/
void wControlActive(
- wControl_p b,
- int active)
+ wControl_p b,
+ int active)
{
- if (b->widget == NULL) {
- abort();
- }
+ if (b->widget == NULL) {
+ abort();
+ }
- if (b->type == B_LIST || b->type == B_DROPLIST ) {
+ if (b->type == B_LIST || b->type == B_DROPLIST ) {
- gtk_widget_set_sensitive(gtk_bin_get_child(GTK_BIN(b->widget)), active);
- gtk_combo_box_set_button_sensitivity(GTK_COMBO_BOX(b->widget),
- active?GTK_SENSITIVITY_ON:GTK_SENSITIVITY_OFF);
+ gtk_widget_set_sensitive(gtk_bin_get_child(GTK_BIN(b->widget)), active);
+ gtk_combo_box_set_button_sensitivity(GTK_COMBO_BOX(b->widget),
+ active?GTK_SENSITIVITY_ON:GTK_SENSITIVITY_OFF);
- } else {
+ } else {
- gtk_widget_set_sensitive(GTK_WIDGET(b->widget), active);
+ gtk_widget_set_sensitive(GTK_WIDGET(b->widget), active);
- }
+ }
}
/**
@@ -113,16 +113,16 @@ void wControlActive(
*/
wWinPix_t wLabelWidth(
- const char * label)
+ const char * label)
{
- GtkWidget * widget;
- GtkRequisition requisition;
- widget = gtk_label_new(wlibConvertInput(label));
- gtk_widget_size_request(widget, &requisition);
- g_object_ref_sink (widget);
- gtk_widget_destroy(widget);
- g_object_unref(widget);
- return requisition.width+8;
+ GtkWidget * widget;
+ GtkRequisition requisition;
+ widget = gtk_label_new(wlibConvertInput(label));
+ gtk_widget_size_request(widget, &requisition);
+ g_object_ref_sink (widget);
+ gtk_widget_destroy(widget);
+ g_object_unref(widget);
+ return requisition.width+8;
}
/**
@@ -133,9 +133,9 @@ wWinPix_t wLabelWidth(
*/
wWinPix_t wControlGetWidth(
- wControl_p b)
+ wControl_p b)
{
- return b->w;
+ return b->w;
}
/**
@@ -146,9 +146,9 @@ wWinPix_t wControlGetWidth(
*/
wWinPix_t wControlGetHeight(
- wControl_p b)
+ wControl_p b)
{
- return b->h;
+ return b->h;
}
/**
@@ -159,9 +159,9 @@ wWinPix_t wControlGetHeight(
*/
wWinPix_t wControlGetPosX(
- wControl_p b) /* Control */
+ wControl_p b) /* Control */
{
- return b->realX;
+ return b->realX;
}
/**
@@ -172,9 +172,10 @@ wWinPix_t wControlGetPosX(
*/
wWinPix_t wControlGetPosY(
- wControl_p b) /* Control */
+ wControl_p b) /* Control */
{
- return b->realY - BORDERSIZE - ((b->parent->option&F_MENUBAR)?b->parent->menu_height:0);
+ return b->realY - BORDERSIZE - ((b->parent->option&F_MENUBAR)
+ ?b->parent->menu_height:0);
}
/**
@@ -186,27 +187,29 @@ wWinPix_t wControlGetPosY(
*/
void wControlSetPos(
- wControl_p b,
- wWinPix_t x,
- wWinPix_t y)
+ wControl_p b,
+ wWinPix_t x,
+ wWinPix_t y)
{
- b->realX = x;
- b->realY = y + BORDERSIZE + ((b->parent->option&F_MENUBAR)?b->parent->menu_height:0);
-
- if (b->widget) {
- gtk_fixed_move(GTK_FIXED(b->parent->widget), b->widget, b->realX, b->realY);
- }
-
- if (b->label) {
- GtkRequisition requisition, reqwidget;
- gtk_widget_size_request(b->label, &requisition);
- if (b->widget)
- gtk_widget_size_request(b->widget, &reqwidget);
- else
- reqwidget.height = requisition.height;
- gtk_fixed_move(GTK_FIXED(b->parent->widget), b->label, b->realX-b->labelW,
- b->realY+(reqwidget.height/2 - requisition.height/2));
- }
+ b->realX = x;
+ b->realY = y + BORDERSIZE + ((b->parent->option&F_MENUBAR)
+ ?b->parent->menu_height:0);
+
+ if (b->widget) {
+ gtk_fixed_move(GTK_FIXED(b->parent->widget), b->widget, b->realX, b->realY);
+ }
+
+ if (b->label) {
+ GtkRequisition requisition, reqwidget;
+ gtk_widget_size_request(b->label, &requisition);
+ if (b->widget) {
+ gtk_widget_size_request(b->widget, &reqwidget);
+ } else {
+ reqwidget.height = requisition.height;
+ }
+ gtk_fixed_move(GTK_FIXED(b->parent->widget), b->label, b->realX-b->labelW,
+ b->realY+(reqwidget.height/2 - requisition.height/2));
+ }
}
/**
@@ -217,24 +220,25 @@ void wControlSetPos(
*/
void wControlSetLabel(
- wControl_p b,
- const char * labelStr)
+ wControl_p b,
+ const char * labelStr)
{
- GtkRequisition requisition,reqwidget;
-
- if (b->label) {
- gtk_label_set_text(GTK_LABEL(b->label), wlibConvertInput(labelStr));
- gtk_widget_size_request(b->label, &requisition);
- if (b->widget)
- gtk_widget_size_request(b->widget, &reqwidget);
- else
- reqwidget.height = requisition.height;
- b->labelW = requisition.width+8;
- gtk_fixed_move(GTK_FIXED(b->parent->widget), b->label, b->realX-b->labelW,
- b->realY+(reqwidget.height/2 - requisition.height/2));
- } else {
- b->labelW = wlibAddLabel(b, labelStr);
- }
+ GtkRequisition requisition,reqwidget;
+
+ if (b->label) {
+ gtk_label_set_text(GTK_LABEL(b->label), wlibConvertInput(labelStr));
+ gtk_widget_size_request(b->label, &requisition);
+ if (b->widget) {
+ gtk_widget_size_request(b->widget, &reqwidget);
+ } else {
+ reqwidget.height = requisition.height;
+ }
+ b->labelW = requisition.width+8;
+ gtk_fixed_move(GTK_FIXED(b->parent->widget), b->label, b->realX-b->labelW,
+ b->realY+(reqwidget.height/2 - requisition.height/2));
+ } else {
+ b->labelW = wlibAddLabel(b, labelStr);
+ }
}
/**
@@ -245,10 +249,10 @@ void wControlSetLabel(
*/
void wControlSetContext(
- wControl_p b,
- void * context)
+ wControl_p b,
+ void * context)
{
- b->data = context;
+ b->data = context;
}
/**
@@ -258,31 +262,21 @@ void wControlSetContext(
*/
void wControlSetFocus(
- wControl_p b)
+ wControl_p b)
{
}
wBool_t wControlExpose (
- GtkWidget * widget,
- GdkEventExpose * event,
- wControl_p b
- )
+ GtkWidget * widget,
+ GdkEventExpose * event,
+ wControl_p b
+)
{
GdkWindow * win = gtk_widget_get_window(b->widget);
cairo_t * cr = NULL;
if (win) {
cr = gdk_cairo_create(win);
- } else return TRUE;
-
-#ifdef CURSOR_SURFACE
- if (b && b->cursor_surface.surface && b->cursor_surface.show) {
- cairo_set_source_surface(cr,b->cursor_surface.surface,event->area.x, event->area.y);
- cairo_set_operator(cr,CAIRO_OPERATOR_OVER);
- cairo_rectangle(cr,event->area.x, event->area.y,
- event->area.width, event->area.height);
- cairo_fill(cr);
- }
-#endif
+ } else { return TRUE; }
if (b->outline) {
cairo_set_source_rgb(cr, 0.23, 0.37, 0.80);
@@ -291,7 +285,7 @@ wBool_t wControlExpose (
cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER);
cairo_rectangle(cr,event->area.x+2, event->area.y+2,
- event->area.width-4, event->area.height-4);
+ event->area.width-4, event->area.height-4);
cairo_stroke(cr);
}
@@ -299,7 +293,7 @@ wBool_t wControlExpose (
cairo_destroy(cr);
- return FALSE;
+ return FALSE;
}
/**
@@ -311,19 +305,21 @@ wBool_t wControlExpose (
*
*/
void wControlHilite(
- wControl_p b,
- wBool_t hilite)
+ wControl_p b,
+ wBool_t hilite)
{
- cairo_t *cr;
- int off = GTKCONTROLHILITEWIDTH/2+1;
- if ( debugWindow >= 1 )
- printf( "wControlHIlite( %s, %d )\n", b->labelStr, hilite );
-
- if (b->widget == NULL) {
- return;
- }
- b->outline = hilite;
-
- if (b->widget)
- gtk_widget_queue_draw(b->widget);
+// cairo_t *cr;
+// int off = GTKCONTROLHILITEWIDTH/2+1;
+ if ( debugWindow >= 1 ) {
+ printf( "wControlHIlite( %s, %d )\n", b->labelStr, hilite );
+ }
+
+ if (b->widget == NULL) {
+ return;
+ }
+ b->outline = hilite;
+
+ if (b->widget) {
+ gtk_widget_queue_draw(b->widget);
+ }
}
diff --git a/app/wlib/gtklib/droplist.c b/app/wlib/gtklib/droplist.c
index 91406fc..a4abced 100644
--- a/app/wlib/gtklib/droplist.c
+++ b/app/wlib/gtklib/droplist.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 <stdio.h>
@@ -51,30 +51,30 @@
int
wlibDropListAddColumns(GtkWidget *dropList, int columns)
{
- int i;
- int start = 0;
- GtkCellRenderer *cell;
-
- if (gtk_combo_box_get_has_entry(GTK_COMBO_BOX(dropList))) {
- start = 1;
- }
-
- /* Create cell renderer. */
- cell = gtk_cell_renderer_text_new();
-
- for (i = start; i < columns; i++) {
- /* Pack it into the droplist */
- gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(dropList), cell, TRUE);
-
- /* Connect renderer to data source */
- gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(dropList),
- cell,
- "text",
- LISTCOL_TEXT + i,
- NULL);
- }
-
- return (i);
+ int i;
+ int start = 0;
+ GtkCellRenderer *cell;
+
+ if (gtk_combo_box_get_has_entry(GTK_COMBO_BOX(dropList))) {
+ start = 1;
+ }
+
+ /* Create cell renderer. */
+ cell = gtk_cell_renderer_text_new();
+
+ for (i = start; i < columns; i++) {
+ /* Pack it into the droplist */
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(dropList), cell, TRUE);
+
+ /* Connect renderer to data source */
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(dropList),
+ cell,
+ "text",
+ LISTCOL_TEXT + i,
+ NULL);
+ }
+
+ return (i);
}
/**
@@ -86,7 +86,7 @@ wlibDropListAddColumns(GtkWidget *dropList, int columns)
wIndex_t wDropListGetCount(wList_p b)
{
- return (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(b->listStore), NULL));
+ return (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(b->listStore), NULL));
}
/**
@@ -99,7 +99,7 @@ wIndex_t wDropListGetCount(wList_p b)
void
wDropListClear(wList_p b)
{
- wlibListStoreClear(b->listStore);
+ wlibListStoreClear(b->listStore);
}
/**
@@ -111,22 +111,22 @@ wDropListClear(wList_p b)
void *wDropListGetItemContext(wList_p b, wIndex_t inx)
{
- GtkTreeIter iter;
- wListItem_p data = NULL;
-
- if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(b->listStore), &iter, NULL,
- inx)) {
- gtk_tree_model_get(GTK_TREE_MODEL(b->listStore),
- &iter,
- LISTCOL_DATA, (void *)&data,
- -1);
- }
-
- if (data) {
- return (data->itemData);
- } else {
- return (NULL);
- }
+ GtkTreeIter iter;
+ wListItem_p data = NULL;
+
+ if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(b->listStore), &iter, NULL,
+ inx)) {
+ gtk_tree_model_get(GTK_TREE_MODEL(b->listStore),
+ &iter,
+ LISTCOL_DATA, (void *)&data,
+ -1);
+ }
+
+ if (data) {
+ return (data->itemData);
+ } else {
+ return (NULL);
+ }
}
/**
@@ -138,21 +138,21 @@ void *wDropListGetItemContext(wList_p b, wIndex_t inx)
*/
void wDropListAddValue(
- wList_p b,
- char *text,
- wListItem_p data)
+ wList_p b,
+ char *text,
+ wListItem_p data)
{
- GtkTreeIter iter;
+ GtkTreeIter iter;
- assert(b != NULL);
- assert(text != NULL);
+ assert(b != NULL);
+ assert(text != NULL);
- gtk_list_store_append(b->listStore, &iter); // append new row to tree store
+ gtk_list_store_append(b->listStore, &iter); // append new row to tree store
- gtk_list_store_set(b->listStore, &iter,
- LISTCOL_TEXT, text,
- LISTCOL_DATA, (void *)data,
- -1);
+ gtk_list_store_set(b->listStore, &iter,
+ LISTCOL_TEXT, text,
+ LISTCOL_DATA, (void *)data,
+ -1);
}
/**
@@ -162,25 +162,25 @@ void wDropListAddValue(
*/
void wListSetValue(
- wList_p bl,
- const char * val)
+ wList_p bl,
+ const char * val)
{
- assert(bl->listStore!=NULL);
+ assert(bl->listStore!=NULL);
- bl->recursion++;
+ bl->recursion++;
- if (bl->type == B_DROPLIST) {
- bl->editted = TRUE;
- gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(bl->widget))), val);
+ if (bl->type == B_DROPLIST) {
+ bl->editted = TRUE;
+ gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(bl->widget))), val);
- if (bl->action) {
- bl->action(-1, val, 0, bl->data, NULL);
- }
- } else {
- assert(FALSE);
- }
+ if (bl->action) {
+ bl->action(-1, val, 0, bl->data, NULL);
+ }
+ } else {
+ assert(FALSE);
+ }
- bl->recursion--;
+ bl->recursion--;
}
/**
@@ -195,11 +195,11 @@ void wListSetValue(
void wDropListSetIndex(wList_p b, int val)
{
- if ((b->option&BL_NONE)!=0 && val < 0) {
- gtk_combo_box_set_active(GTK_COMBO_BOX(b->widget), -1);
- } else {
- gtk_combo_box_set_active(GTK_COMBO_BOX(b->widget), val);
- }
+ if ((b->option&BL_NONE)!=0 && val < 0) {
+ gtk_combo_box_set_active(GTK_COMBO_BOX(b->widget), -1);
+ } else {
+ gtk_combo_box_set_active(GTK_COMBO_BOX(b->widget), val);
+ }
}
/**
@@ -214,24 +214,24 @@ void wDropListSetIndex(wList_p b, int val)
*/
wBool_t wDropListSetValues(
- wList_p b,
- wIndex_t row,
- const char * labelStr,
- wIcon_p bm,
- void *itemData)
+ wList_p b,
+ wIndex_t row,
+ const char * labelStr,
+ wIcon_p bm,
+ void *itemData)
{
- GtkTreeIter iter;
-
- if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(b->listStore), &iter, NULL,
- row)) {
- gtk_list_store_set(b->listStore,
- &iter,
- LISTCOL_TEXT, labelStr,
- -1);
- return (TRUE);
- } else {
- return (FALSE);
- }
+ GtkTreeIter iter;
+
+ if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(b->listStore), &iter, NULL,
+ row)) {
+ gtk_list_store_set(b->listStore,
+ &iter,
+ LISTCOL_TEXT, labelStr,
+ -1);
+ return (TRUE);
+ } else {
+ return (FALSE);
+ }
}
/**
@@ -245,72 +245,75 @@ wBool_t wDropListSetValues(
*/
static int DropListChanged(
- GtkComboBox * comboBox,
- gpointer data)
+ GtkComboBox * comboBox,
+ gpointer data)
{
- wList_p bl = (wList_p)data;
- GtkTreeIter iter;
-
- wIndex_t inx = 0;
- gchar *string = NULL;
- wListItem_p listItemP = NULL;
-
- if (bl->recursion) {
- return 0;
- }
-
- /* Obtain currently selected item from combo box. */
- if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(comboBox), &iter)) {
- GtkTreeModel *model;
-
- /* Obtain data model from combo box. */
- model = gtk_combo_box_get_model(comboBox);
-
- /* get the selected row */
- string = gtk_tree_model_get_string_from_iter(model,
- &iter);
- inx = atoi(string);
- g_free(string);
- string = NULL;
-
- /* Obtain string from model. */
- gtk_tree_model_get(model, &iter,
- LISTCOL_TEXT, &string,
- LISTCOL_DATA, (void *)&listItemP,
- -1);
- bl->editted = FALSE;
-
- } else {
- /* Nothing selected, user is entering text directly */
- inx = -1;
- GtkEntry * entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(bl->widget)));
- if ( entry == NULL )
- return 0;
- const char * string1 = gtk_entry_get_text(entry);
- if ( string1 == NULL )
- return 0;
- string = g_strdup(string1);
- bl->editted = TRUE;
- }
-
- /* selection changed, store new selections and call back */
- if (bl->last != inx || bl->editted == TRUE) {
-
- bl->last = inx;
-
- if (bl->valueP) {
- *bl->valueP = inx;
- }
-
- /* selection changed -> callback */
- if (string && bl->action) {
- bl->action(inx, string, 1, bl->data, listItemP?listItemP->itemData:NULL);
- }
- }
-
- if ( string )
- g_free(string);
- return 1;
+ wList_p bl = (wList_p)data;
+ GtkTreeIter iter;
+
+ wIndex_t inx = 0;
+ gchar *string = NULL;
+ wListItem_p listItemP = NULL;
+
+ if (bl->recursion) {
+ return 0;
+ }
+
+ /* Obtain currently selected item from combo box. */
+ if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(comboBox), &iter)) {
+ GtkTreeModel *model;
+
+ /* Obtain data model from combo box. */
+ model = gtk_combo_box_get_model(comboBox);
+
+ /* get the selected row */
+ string = gtk_tree_model_get_string_from_iter(model,
+ &iter);
+ inx = atoi(string);
+ g_free(string);
+ string = NULL;
+
+ /* Obtain string from model. */
+ gtk_tree_model_get(model, &iter,
+ LISTCOL_TEXT, &string,
+ LISTCOL_DATA, (void *)&listItemP,
+ -1);
+ bl->editted = FALSE;
+
+ } else {
+ /* Nothing selected, user is entering text directly */
+ inx = -1;
+ GtkEntry * entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(bl->widget)));
+ if ( entry == NULL ) {
+ return 0;
+ }
+ const char * string1 = gtk_entry_get_text(entry);
+ if ( string1 == NULL ) {
+ return 0;
+ }
+ string = g_strdup(string1);
+ bl->editted = TRUE;
+ }
+
+ /* selection changed, store new selections and call back */
+ if (bl->last != inx || bl->editted == TRUE) {
+
+ bl->last = inx;
+
+ if (bl->valueP) {
+ *bl->valueP = inx;
+ }
+
+ /* selection changed -> callback */
+ if (string && bl->action) {
+ bl->action(inx, string, 1, bl->data, listItemP?listItemP->itemData:NULL);
+ }
+ }
+
+ if ( string ) {
+ g_free(string);
+ }
+ return 1;
}
/**
@@ -324,15 +327,15 @@ static int DropListChanged(
GtkWidget *
wlibNewDropList(GtkListStore *ls, int editable)
{
- GtkWidget *widget;
+ GtkWidget *widget;
- if (editable) {
- widget = gtk_combo_box_new_with_model_and_entry(GTK_TREE_MODEL(ls));
- } else {
- widget = gtk_combo_box_new_with_model(GTK_TREE_MODEL(ls));
- }
+ if (editable) {
+ widget = gtk_combo_box_new_with_model_and_entry(GTK_TREE_MODEL(ls));
+ } else {
+ widget = gtk_combo_box_new_with_model(GTK_TREE_MODEL(ls));
+ }
- return (widget);
+ return (widget);
}
/**
@@ -352,80 +355,80 @@ wlibNewDropList(GtkListStore *ls, int editable)
*/
wList_p wDropListCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- long number,
- wWinPix_t width,
- long *valueP,
- wListCallBack_p action,
- void *data)
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ long number,
+ wWinPix_t width,
+ long *valueP,
+ wListCallBack_p action,
+ void *data)
{
- wList_p b;
+ wList_p b;
- b = (wList_p)wlibAlloc(parent, B_DROPLIST, x, y, labelStr, sizeof *b, data);
- b->option = option;
- b->number = number;
- b->count = 0;
- b->last = -1;
- b->valueP = valueP;
- b->action = action;
- b->listX = b->realX;
- b->colCnt = 0;
- b->colWidths = NULL;
- b->colRightJust = NULL;
- b->editable = ((option & BL_EDITABLE) != 0);
+ b = (wList_p)wlibAlloc(parent, B_DROPLIST, x, y, labelStr, sizeof *b, data);
+ b->option = option;
+ b->number = number;
+ b->count = 0;
+ b->last = -1;
+ b->valueP = valueP;
+ b->action = action;
+ b->listX = b->realX;
+ b->colCnt = 0;
+ b->colWidths = NULL;
+ b->colRightJust = NULL;
+ b->editable = ((option & BL_EDITABLE) != 0);
- assert(width != 0);
+ assert(width != 0);
- wlibComputePos((wControl_p)b);
+ wlibComputePos((wControl_p)b);
- // create tree store for storing the contents
- b->listStore = wlibNewListStore(DROPLIST_TEXTCOLUMNS);
+ // create tree store for storing the contents
+ b->listStore = wlibNewListStore(DROPLIST_TEXTCOLUMNS);
- if (!b->listStore) {
- abort();
- }
+ if (!b->listStore) {
+ abort();
+ }
- // create the droplist
- b->widget = wlibNewDropList(b->listStore,
- option & BL_EDITABLE);
+ // create the droplist
+ b->widget = wlibNewDropList(b->listStore,
+ option & BL_EDITABLE);
- if (b->widget == 0) {
- abort();
- }
- g_object_ref_sink(b->listStore);
- g_object_unref(G_OBJECT(b->listStore));
+ if (b->widget == 0) {
+ abort();
+ }
+ g_object_ref_sink(b->listStore);
+ g_object_unref(G_OBJECT(b->listStore));
- wlibDropListAddColumns(b->widget, DROPLIST_TEXTCOLUMNS);
+ wlibDropListAddColumns(b->widget, DROPLIST_TEXTCOLUMNS);
- gtk_combo_box_set_entry_text_column(GTK_COMBO_BOX(b->widget),
- LISTCOL_TEXT);
+ gtk_combo_box_set_entry_text_column(GTK_COMBO_BOX(b->widget),
+ LISTCOL_TEXT);
- // combo's style
- gtk_rc_parse_string("style \"my-style\" { GtkComboBox::appears-as-list = 1 } widget \"*.mycombo\" style \"my-style\" ");
- gtk_widget_set_name(b->widget,"mycombo");
+ // combo's style
+ gtk_rc_parse_string("style \"my-style\" { GtkComboBox::appears-as-list = 1 } widget \"*.mycombo\" style \"my-style\" ");
+ gtk_widget_set_name(b->widget,"mycombo");
- g_signal_connect(GTK_OBJECT(b->widget), "changed",
- G_CALLBACK(DropListChanged), b);
+ g_signal_connect(GTK_OBJECT(b->widget), "changed",
+ G_CALLBACK(DropListChanged), b);
- gtk_widget_set_size_request(b->widget, width, -1);
+ gtk_widget_set_size_request(b->widget, width, -1);
- gtk_fixed_put(GTK_FIXED(parent->widget), b->widget, b->realX, b->realY);
- wlibControlGetSize((wControl_p)b);
+ gtk_fixed_put(GTK_FIXED(parent->widget), b->widget, b->realX, b->realY);
+ wlibControlGetSize((wControl_p)b);
- if (labelStr) {
- b->labelW = wlibAddLabel((wControl_p)b, labelStr);
- }
+ if (labelStr) {
+ b->labelW = wlibAddLabel((wControl_p)b, labelStr);
+ }
- gtk_widget_show(b->widget);
- wlibAddButton((wControl_p)b);
- wlibAddHelpString(b->widget, helpStr);
+ gtk_widget_show(b->widget);
+ wlibAddButton((wControl_p)b);
+ wlibAddHelpString(b->widget, helpStr);
- return b;
+ return b;
}
diff --git a/app/wlib/gtklib/dynarr.h b/app/wlib/gtklib/dynarr.h
index 2adf115..1eefd62 100644
--- a/app/wlib/gtklib/dynarr.h
+++ b/app/wlib/gtklib/dynarr.h
@@ -14,7 +14,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
*/
@@ -22,10 +22,10 @@
#define DYNARR_H_SEEN
typedef struct {
- int cnt;
- int max;
- void * ptr;
- } dynArr_t;
+ int cnt;
+ int max;
+ void * ptr;
+} dynArr_t;
#define DYNARR_APPEND(T,DA,INCR) \
{ if ((DA).cnt >= (DA).max) { \
diff --git a/app/wlib/gtklib/filesel.c b/app/wlib/gtklib/filesel.c
index 7e27465..3d4fb85 100644
--- a/app/wlib/gtklib/filesel.c
+++ b/app/wlib/gtklib/filesel.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 <stdio.h>
@@ -41,114 +41,115 @@
#define MAX_ALLOWEDFILTERS 10
struct wFilSel_t {
- GtkWidget * window; /**< file selector handle*/
- wFilSelCallBack_p action; /**< */
- void * data; /**< */
- int pattCount; /**< number of file patterns*/
- wBool_t loadPatternsAdded; /** Already loaded */
- GtkFileFilter *filter[ MAX_ALLOWEDFILTERS ]; /**< array of file patterns */
- wFilSelMode_e mode; /**< used for load or save */
- int opt; /**< see FS_ options */
- const char * title; /**< dialog box title */
- wWin_p parent; /**< parent window */
- char *defaultExtension; /**< to use if no extension specified */
- };
+ GtkWidget * window; /**< file selector handle*/
+ wFilSelCallBack_p action; /**< */
+ void * data; /**< */
+ int pattCount; /**< number of file patterns*/
+ wBool_t loadPatternsAdded; /** Already loaded */
+ GtkFileFilter *filter[ MAX_ALLOWEDFILTERS ]; /**< array of file patterns */
+ wFilSelMode_e mode; /**< used for load or save */
+ int opt; /**< see FS_ options */
+ const char * title; /**< dialog box title */
+ wWin_p parent; /**< parent window */
+ char *defaultExtension; /**< to use if no extension specified */
+};
/**
* Signal handler for 'changed' signal of custom combo box. The filter
* is set accordinng to the file format active in the combo box
- *
- * \param comboBox the combo box
+ *
+ * \param comboBox the combo box
* \param fileSelector data of the file selector
- *
+ *
*/
-static void FileFormatChanged( GtkWidget *comboBox,
- struct wFilSel_t *fileSelector )
+static void FileFormatChanged( GtkWidget *comboBox,
+ struct wFilSel_t *fileSelector )
{
// get active entry
int entry = (int)gtk_combo_box_get_active (GTK_COMBO_BOX(comboBox));
-
+
if( entry>=0 ) {
- g_object_ref(G_OBJECT( (fileSelector->filter)[ entry ]));
- gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(fileSelector->window ),
- (fileSelector->filter)[ entry ]);
+ g_object_ref(G_OBJECT( (fileSelector->filter)[ entry ]));
+ gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(fileSelector->window ),
+ (fileSelector->filter)[ entry ]);
}
}
/**
- * Create a widget containing a combo box for selecting a file format.
+ * Create a widget containing a combo box for selecting a file format.
* From an array of filters, the names are retrieved and used to populate
- * the combo box.
+ * the combo box.
* \param IN dialogBox
* \param patterns IN number of entries for combo
* \param filters IN
* \returns the newly created widget
*/
-
-static GtkWidget *CreateFileformatSelector(struct wFilSel_t *dialogBox,
- int patterns,
- GtkFileFilter **filters)
+
+static GtkWidget *CreateFileformatSelector(struct wFilSel_t *dialogBox,
+ int patterns,
+ GtkFileFilter **filters)
{
GtkWidget *hbox = gtk_hbox_new(FALSE, 12);
GtkWidget *text = gtk_label_new(_("Save format:"));
GtkWidget *combo = gtk_combo_box_text_new ();
- g_signal_connect(G_OBJECT(combo),
- "changed",
- (GCallback)FileFormatChanged,
- dialogBox );
+ g_signal_connect(G_OBJECT(combo),
+ "changed",
+ (GCallback)FileFormatChanged,
+ dialogBox );
gtk_box_pack_start (GTK_BOX(hbox),
- text,
- FALSE,
- FALSE,
- 0);
+ text,
+ FALSE,
+ FALSE,
+ 0);
gtk_box_pack_end (GTK_BOX(hbox),
- combo,
- TRUE,
- TRUE,
- 0);
+ combo,
+ TRUE,
+ TRUE,
+ 0);
for(int i=0; i < patterns; i++ ) {
const char *nameOfFilter = gtk_file_filter_get_name( filters[ i ] );
gtk_combo_box_text_append_text( GTK_COMBO_BOX_TEXT(combo), nameOfFilter );
}
gtk_combo_box_set_active (GTK_COMBO_BOX(combo), 0);
-
+
gtk_widget_show_all(hbox);
-
- return(hbox);
+
+ return(hbox);
}
/**
* Create a new file selector. Only the internal data structures are
- * set up, no dialog is created.
+ * set up, no dialog is created.
*
* \param w IN parent window
* \param mode IN ?
* \param opt IN ?
* \param title IN dialog title
* \param pattList IN list of selection patterns
- * \param action IN callback
+ * \param action IN callback
* \param data IN ?
* \return the newly created file selector structure
*/
-
+
struct wFilSel_t * wFilSelCreate(
- wWin_p w,
- wFilSelMode_e mode,
- int opt,
- const char * title,
- const char * pattList,
- wFilSelCallBack_p action,
- void * data )
+ wWin_p w,
+ wFilSelMode_e mode,
+ int opt,
+ const char * title,
+ const char * pattList,
+ wFilSelCallBack_p action,
+ void * data )
{
struct wFilSel_t *fs;
fs = (struct wFilSel_t*)malloc(sizeof *fs);
- if (!fs)
+ if (!fs) {
return NULL;
+ }
fs->parent = w;
fs->window = 0;
@@ -208,22 +209,24 @@ struct wFilSel_t * wFilSelCreate(
gtk_file_filter_add_pattern (fs->filter[ count ], cp1 );
cp1 = strtok_r(NULL, ";", &filterState );
}
- if (cp1s)
+ if (cp1s) {
free(cp1s);
+ }
}
// the first pattern is considered to match the default extension
if( count == 0 && !(opt&FS_PICTURES)) {
fs->defaultExtension = strdup( cp2 );
int i = 0;
- for (i=0; i<strlen(cp2) && cp2[i] != ' ' && cp2[i] != ';';i++) ;
- if (i<strlen(cp2)) fs->defaultExtension[i] = '\0';
+ for (i=0; i<strlen(cp2) && cp2[i] != ' ' && cp2[i] != ';'; i++) ;
+ if (i<strlen(cp2)) { fs->defaultExtension[i] = '\0'; }
}
fs->pattCount = ++count;
}
cp = strtok_r( NULL, ":", &patternState );
}
- if (cps)
+ if (cps) {
free(cps);
+ }
} else {
@@ -234,13 +237,13 @@ struct wFilSel_t * wFilSelCreate(
}
/**
- * Show and handle the file selection dialog.
+ * Show and handle the file selection dialog.
*
- * \param fs IN file selection
+ * \param fs IN file selection
* \param dirName IN starting directory
* \return always TRUE
*/
-
+
int wFilSelect( struct wFilSel_t * fs, const char * dirName )
{
char name[1024];
@@ -250,67 +253,71 @@ int wFilSelect( struct wFilSel_t * fs, const char * dirName )
GError *err = NULL;
if (fs->window == NULL) {
- fs->window = gtk_file_chooser_dialog_new( fs->title,
- GTK_WINDOW( fs->parent->gtkwin ),
- (fs->mode == FS_LOAD ? GTK_FILE_CHOOSER_ACTION_OPEN : GTK_FILE_CHOOSER_ACTION_SAVE ),
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- (fs->mode == FS_LOAD ? GTK_STOCK_OPEN : GTK_STOCK_SAVE ), GTK_RESPONSE_ACCEPT,
- NULL );
- if (fs->window==0) abort();
+ fs->window = gtk_file_chooser_dialog_new( fs->title,
+ GTK_WINDOW( fs->parent->gtkwin ),
+ (fs->mode == FS_LOAD ? GTK_FILE_CHOOSER_ACTION_OPEN :
+ GTK_FILE_CHOOSER_ACTION_SAVE ),
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ (fs->mode == FS_LOAD ? GTK_STOCK_OPEN : GTK_STOCK_SAVE ), GTK_RESPONSE_ACCEPT,
+ NULL );
+ if (fs->window==0) { abort(); }
if ( fs->mode == FS_SAVE ) {
- // get confirmation before overwritting an existing file
- gtk_file_chooser_set_do_overwrite_confirmation( GTK_FILE_CHOOSER(fs->window), TRUE );
+ // get confirmation before overwritting an existing file
+ gtk_file_chooser_set_do_overwrite_confirmation( GTK_FILE_CHOOSER(fs->window),
+ TRUE );
}
-
+
/** \todo for loading a shortcut folder could be added linking to the example directory */
}
strcpy( name, dirName );
- gtk_file_chooser_set_current_folder( GTK_FILE_CHOOSER(fs->window), name );
+ gtk_file_chooser_set_current_folder( GTK_FILE_CHOOSER(fs->window), name );
if( fs->mode == FS_SAVE || fs->mode == FS_UPDATE ) {
- gtk_file_chooser_set_extra_widget( GTK_FILE_CHOOSER(fs->window),
- CreateFileformatSelector(fs, fs->pattCount, fs->filter ));
- }
- // Add a current folder and a shortcut to it for Load/import dialogs
- if( fs->mode == FS_LOAD ) {
- gtk_file_chooser_add_shortcut_folder( GTK_FILE_CHOOSER(fs->window), name, NULL );
+ gtk_file_chooser_set_extra_widget( GTK_FILE_CHOOSER(fs->window),
+ CreateFileformatSelector(fs, fs->pattCount, fs->filter ));
+ }
+ // Add a current folder and a shortcut to it for Load/import dialogs
+ if( fs->mode == FS_LOAD ) {
+ gtk_file_chooser_add_shortcut_folder( GTK_FILE_CHOOSER(fs->window), name,
+ NULL );
// allow selecting multiple files
if( fs->opt & FS_MULTIPLEFILES ) {
gtk_file_chooser_set_select_multiple ( GTK_FILE_CHOOSER(fs->window), TRUE);
- }
+ }
// add the file filters to the dialog box
if( fs->pattCount && !fs->loadPatternsAdded) {
for( i = 0; i < fs->pattCount; i++ ) {
- gtk_file_chooser_add_filter( GTK_FILE_CHOOSER( fs->window ), fs->filter[ i ] );
+ gtk_file_chooser_add_filter( GTK_FILE_CHOOSER( fs->window ), fs->filter[ i ] );
}
fs->loadPatternsAdded = TRUE;
- }
- }
-
- int resp = gtk_dialog_run( GTK_DIALOG( fs->window ));
+ }
+ }
+
+ int resp = gtk_dialog_run( GTK_DIALOG( fs->window ));
if( resp == GTK_RESPONSE_ACCEPT || resp == GTK_RESPONSE_APPLY) {
- char **fileNames;
+ char **fileNames;
GSList *fileNameList;
-
+
fileNameList = gtk_file_chooser_get_uris( GTK_FILE_CHOOSER(fs->window) );
- fileNames = calloc( sizeof(char *), g_slist_length (fileNameList) );
-
+ fileNames = calloc( sizeof(char *), g_slist_length (fileNameList) );
+
for (i=0; i < g_slist_length (fileNameList); i++ ) {
char *namePart;
file = g_filename_from_uri( g_slist_nth_data( fileNameList, i ), &host, &err );
-
+
// check for presence of file extension
// jump behind the last directory delimiter
namePart = strrchr( file, '/' ) + 1;
// is there a dot in the last part, yes->extension present
- if( !strchr( namePart, '.' ) ){
-
+ if( !strchr( namePart, '.' ) ) {
+
// else try to find the current filter and parse its name
- GtkFileFilter *currentFilter = gtk_file_chooser_get_filter (GTK_FILE_CHOOSER(fs->window) );
+ GtkFileFilter *currentFilter = gtk_file_chooser_get_filter (GTK_FILE_CHOOSER(
+ fs->window) );
if (currentFilter) {
const char *nameOfFilter = gtk_file_filter_get_name( currentFilter );
char *pattern = strdup( nameOfFilter );
@@ -328,24 +335,24 @@ int wFilSelect( struct wFilSel_t * fs, const char * dirName )
strcat( file, extension );
free( pattern );
}
- }
+ }
fileNames[ i ] = file;
g_free( g_slist_nth_data ( fileNameList, i));
}
-
+
gtk_widget_hide( GTK_WIDGET( fs->window ));
if (fs->action) {
fs->action( g_slist_length(fileNameList), fileNames, fs->data );
}
-
+
for(i=0; i < g_slist_length(fileNameList); i++) {
g_free( fileNames[ i ]);
}
free( fileNames );
- g_slist_free (fileNameList);
+ g_slist_free (fileNameList);
} else {
gtk_widget_hide( GTK_WIDGET( fs->window ));
}
-
+
return 1;
}
diff --git a/app/wlib/gtklib/font.c b/app/wlib/gtklib/font.c
index 29df04d..e89307c 100644
--- a/app/wlib/gtklib/font.c
+++ b/app/wlib/gtklib/font.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 <stdlib.h>
@@ -67,7 +67,7 @@ static GtkWidget *fontSelectionDialog;
int absoluteFontSize = 18;
struct wFont_t {
- PangoFontDescription *fontDescription;
+ PangoFontDescription *fontDescription;
};
static wFont_p standardFonts[F_HELV-F_TIMES+1][2][2];
@@ -85,76 +85,76 @@ static wFont_p curFont = NULL;
static void fontSelectionDialogCallback(GtkFontSelectionDialog
*fontSelectionDialog, gint response, gpointer data)
{
- if (response == GTK_RESPONSE_APPLY || response == GTK_RESPONSE_OK) {
- gchar *fontName;
-
- fontName = gtk_font_selection_dialog_get_font_name(fontSelectionDialog);
- wPrefSetString("font", "name", fontName);
- pango_font_description_free(curFont->fontDescription);
- curFont->fontDescription = pango_font_description_from_string(fontName);
- absoluteFontSize = (pango_font_description_get_size(
- curFont->fontDescription))/PANGO_SCALE;
+ if (response == GTK_RESPONSE_APPLY || response == GTK_RESPONSE_OK) {
+ gchar *fontName;
+
+ fontName = gtk_font_selection_dialog_get_font_name(fontSelectionDialog);
+ wPrefSetString("font", "name", fontName);
+ pango_font_description_free(curFont->fontDescription);
+ curFont->fontDescription = pango_font_description_from_string(fontName);
+ absoluteFontSize = (pango_font_description_get_size(
+ curFont->fontDescription))/PANGO_SCALE;
#if WLIB_FONT_DEBUG >= 2
- fprintf(stderr, "new font selection:\n");
- fprintf(stderr, " font name \"%s\"\n", fontName);
- fprintf(stderr, " font size is %d\n",
- pango_font_description_get_size(curFont->fontDescription)/PANGO_SCALE);
- fprintf(stderr, " font size is absolute %d\n",
- pango_font_description_get_size_is_absolute(curFont->fontDescription));
+ fprintf(stderr, "new font selection:\n");
+ fprintf(stderr, " font name \"%s\"\n", fontName);
+ fprintf(stderr, " font size is %d\n",
+ pango_font_description_get_size(curFont->fontDescription)/PANGO_SCALE);
+ fprintf(stderr, " font size is absolute %d\n",
+ pango_font_description_get_size_is_absolute(curFont->fontDescription));
#endif
- g_free(fontName);
- }
+ g_free(fontName);
+ }
- if (response == GTK_RESPONSE_OK || response == GTK_RESPONSE_CANCEL) {
- gtk_widget_hide(GTK_WIDGET(fontSelectionDialog));
- }
+ if (response == GTK_RESPONSE_OK || response == GTK_RESPONSE_CANCEL) {
+ gtk_widget_hide(GTK_WIDGET(fontSelectionDialog));
+ }
}
static wBool_t fontInitted = FALSE;
static wBool_t fontInit()
{
- const char *fontNames[] = {
- "times 18",
- "times italic 18",
- "times bold 18",
- "times bold italic 18",
- "helvetica 18",
- "helvetica oblique 18",
- "helvetica bold 18",
- "helvetica bold oblique 18",
- };
- int s = 0;
- int i, j, k;
-
- for (i = F_TIMES; i <= F_HELV; ++i) {
- for (j = FW_MEDIUM; j <= FW_BOLD; ++j) {
- for (k = FS_REGULAR; k <= FS_ITALIC; ++k) {
- PangoFontDescription *fontDescription = pango_font_description_from_string(
- fontNames[s++]);
- wFont_p standardFont = (wFont_p) malloc(sizeof(struct wFont_t));
- standardFont->fontDescription = fontDescription;
- standardFonts[i-F_TIMES][j][k] = standardFont;
- }
- }
- }
-
- if (curFont == NULL) {
- curFont = (wFont_p) malloc(sizeof(struct wFont_t));
-
- if (curFont == NULL) {
- return FALSE;
- }
-
- const char *fontName = wPrefGetString("font", "name");
- curFont->fontDescription = pango_font_description_from_string(
- fontName ? fontName : "helvetica 18");
- absoluteFontSize = (int) PANGO_PIXELS(pango_font_description_get_size(
- curFont->fontDescription));
- }
-
- fontInitted = TRUE;
- return TRUE;
+ const char *fontNames[] = {
+ "times 18",
+ "times italic 18",
+ "times bold 18",
+ "times bold italic 18",
+ "helvetica 18",
+ "helvetica oblique 18",
+ "helvetica bold 18",
+ "helvetica bold oblique 18",
+ };
+ int s = 0;
+ int i, j, k;
+
+ for (i = F_TIMES; i <= F_HELV; ++i) {
+ for (j = FW_MEDIUM; j <= FW_BOLD; ++j) {
+ for (k = FS_REGULAR; k <= FS_ITALIC; ++k) {
+ PangoFontDescription *fontDescription = pango_font_description_from_string(
+ fontNames[s++]);
+ wFont_p standardFont = (wFont_p) malloc(sizeof(struct wFont_t));
+ standardFont->fontDescription = fontDescription;
+ standardFonts[i-F_TIMES][j][k] = standardFont;
+ }
+ }
+ }
+
+ if (curFont == NULL) {
+ curFont = (wFont_p) malloc(sizeof(struct wFont_t));
+
+ if (curFont == NULL) {
+ return FALSE;
+ }
+
+ const char *fontName = wPrefGetString("font", "name");
+ curFont->fontDescription = pango_font_description_from_string(
+ fontName ? fontName : "helvetica 18");
+ absoluteFontSize = (int) PANGO_PIXELS(pango_font_description_get_size(
+ curFont->fontDescription));
+ }
+
+ fontInitted = TRUE;
+ return TRUE;
}
@@ -186,59 +186,59 @@ PangoLayout *wlibFontCreatePangoLayout(GtkWidget *widget,
wDrawPix_t *height_p,
wDrawPix_t *ascent_p,
wDrawPix_t *descent_p,
- wDrawPix_t *baseline_p)
+ wDrawPix_t *baseline_p)
{
- if (!fontInitted) {
- fontInit();
- }
-
- PangoLayout *layout = NULL;
- gchar *utf8 = wlibConvertInput(s);
- /* RPH -- pango_cairo_create_layout() is missing in CentOS 4.8.
- CentOS 4.8 only has GTK 2.4.13 and Pango 1.6.0 and does not have
- libpangocairo at all.
- pango_cairo_create_layout() was introduced with Pango 1.10. */
+ if (!fontInitted) {
+ fontInit();
+ }
+
+ PangoLayout *layout = NULL;
+ gchar *utf8 = wlibConvertInput(s);
+ /* RPH -- pango_cairo_create_layout() is missing in CentOS 4.8.
+ CentOS 4.8 only has GTK 2.4.13 and Pango 1.6.0 and does not have
+ libpangocairo at all.
+ pango_cairo_create_layout() was introduced with Pango 1.10. */
#if PANGO_VERSION_MAJOR >= 1 && PANGO_VERSION_MINOR >= 10
- if (cairo != NULL) {
- layout = pango_cairo_create_layout((cairo_t *) cairo);
- pango_layout_set_text(layout, utf8, -1);
- } else
+ if (cairo != NULL) {
+ layout = pango_cairo_create_layout((cairo_t *) cairo);
+ pango_layout_set_text(layout, utf8, -1);
+ } else
#endif
- layout = gtk_widget_create_pango_layout(widget, utf8);
-
- PangoFontDescription *fontDescription = (fp ? fp : curFont)->fontDescription;
- PangoContext *context;
- PangoFontMetrics *metrics;
- /* set attributes */
- pango_font_description_set_size(fontDescription,
- FONTSIZE_TO_PANGOSIZE(fs) * PANGO_SCALE);
- pango_layout_set_font_description(layout, fontDescription);
- /* get layout measures */
- gint width_i, height_i;
- pango_layout_get_size(layout, &width_i, &height_i);
- *width_p = width_i / PANGO_SCALE;
- *height_p = height_i / PANGO_SCALE;
- context = gtk_widget_create_pango_context(widget);
- metrics = pango_context_get_metrics(context, fontDescription,
- pango_context_get_language(context));
- *baseline_p = pango_layout_get_baseline(layout) / PANGO_SCALE;
- *ascent_p = pango_font_metrics_get_ascent(metrics) / PANGO_SCALE;
- *descent_p = pango_font_metrics_get_descent(metrics) / PANGO_SCALE;
- pango_font_metrics_unref(metrics);
- g_object_unref(context);
+ layout = gtk_widget_create_pango_layout(widget, utf8);
+
+ PangoFontDescription *fontDescription = (fp ? fp : curFont)->fontDescription;
+ PangoContext *context;
+ PangoFontMetrics *metrics;
+ /* set attributes */
+ pango_font_description_set_size(fontDescription,
+ FONTSIZE_TO_PANGOSIZE(fs) * PANGO_SCALE);
+ pango_layout_set_font_description(layout, fontDescription);
+ /* get layout measures */
+ gint width_i, height_i;
+ pango_layout_get_size(layout, &width_i, &height_i);
+ *width_p = width_i / PANGO_SCALE;
+ *height_p = height_i / PANGO_SCALE;
+ context = gtk_widget_create_pango_context(widget);
+ metrics = pango_context_get_metrics(context, fontDescription,
+ pango_context_get_language(context));
+ *baseline_p = pango_layout_get_baseline(layout) / PANGO_SCALE;
+ *ascent_p = pango_font_metrics_get_ascent(metrics) / PANGO_SCALE;
+ *descent_p = pango_font_metrics_get_descent(metrics) / PANGO_SCALE;
+ pango_font_metrics_unref(metrics);
+ g_object_unref(context);
#if WLIB_FONT_DEBUG >= 3
- fprintf(stderr, "font layout created:\n");
- fprintf(stderr, " widget: %p\n", widget);
- //fprintf(stderr, " font description:%p\n", fp);
- fprintf(stderr, " font size: %f\n", fs);
- fprintf(stderr, " layout text: \"%s\" (utf8)\n", utf8);
- fprintf(stderr, " layout width: %d\n", *width_p);
- fprintf(stderr, " layout height: %d\n", *height_p);
- fprintf(stderr, " layout ascent: %d (pixels)\n", *ascent_p);
- fprintf(stderr, " layout descent: %d (pixels)\n", *descent_p);
+ fprintf(stderr, "font layout created:\n");
+ fprintf(stderr, " widget: %p\n", widget);
+ //fprintf(stderr, " font description:%p\n", fp);
+ fprintf(stderr, " font size: %f\n", fs);
+ fprintf(stderr, " layout text: \"%s\" (utf8)\n", utf8);
+ fprintf(stderr, " layout width: %d\n", *width_p);
+ fprintf(stderr, " layout height: %d\n", *height_p);
+ fprintf(stderr, " layout ascent: %d (pixels)\n", *ascent_p);
+ fprintf(stderr, " layout descent: %d (pixels)\n", *descent_p);
#endif
- return layout;
+ return layout;
}
/**
@@ -248,7 +248,7 @@ PangoLayout *wlibFontCreatePangoLayout(GtkWidget *widget,
void wlibFontDestroyPangoLayout(PangoLayout *layout)
{
- g_object_ref_sink(layout);
+ g_object_ref_sink(layout);
g_object_unref(layout);
}
@@ -259,9 +259,9 @@ void wlibFontDestroyPangoLayout(PangoLayout *layout)
void wInitializeFonts()
{
- if (!fontInitted) {
- fontInit();
- }
+ if (!fontInitted) {
+ fontInit();
+ }
}
/**
@@ -272,41 +272,41 @@ void wInitializeFonts()
*/
void wSelectFont(
- const char * title)
+ const char * title)
{
- if (!fontInitted) {
- fontInit();
- }
-
- if (fontSelectionDialog == NULL) {
- fontSelectionDialog = gtk_font_selection_dialog_new(_("Font Select"));
- gtk_window_set_position(GTK_WINDOW(fontSelectionDialog), GTK_WIN_POS_MOUSE);
- gtk_window_set_modal(GTK_WINDOW(fontSelectionDialog), TRUE);
- gtk_font_selection_dialog_set_preview_text(GTK_FONT_SELECTION_DIALOG(
- fontSelectionDialog), sampleText);
- g_signal_connect(G_OBJECT(fontSelectionDialog), "response",
- G_CALLBACK(fontSelectionDialogCallback), NULL);
- g_signal_connect(G_OBJECT(fontSelectionDialog), "destroy",
- G_CALLBACK(gtk_widget_destroyed), &fontSelectionDialog);
- }
-
- gtk_window_set_title(GTK_WINDOW(fontSelectionDialog), title);
-
- if (curFont != NULL) {
- gchar *fontName;
-
- /* the curFont description contains the latest font info
- * which is depended on the current scale
- * overwrite it with the absoluteFontSize */
- pango_font_description_set_size(curFont->fontDescription,
- FONTSIZE_TO_PANGOSIZE(absoluteFontSize) * PANGO_SCALE);
- fontName = pango_font_description_to_string(curFont->fontDescription);
- gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(
- fontSelectionDialog), fontName);
- g_free(fontName);
- }
-
- gtk_widget_show(fontSelectionDialog);
+ if (!fontInitted) {
+ fontInit();
+ }
+
+ if (fontSelectionDialog == NULL) {
+ fontSelectionDialog = gtk_font_selection_dialog_new(_("Font Select"));
+ gtk_window_set_position(GTK_WINDOW(fontSelectionDialog), GTK_WIN_POS_MOUSE);
+ gtk_window_set_modal(GTK_WINDOW(fontSelectionDialog), TRUE);
+ gtk_font_selection_dialog_set_preview_text(GTK_FONT_SELECTION_DIALOG(
+ fontSelectionDialog), sampleText);
+ g_signal_connect(G_OBJECT(fontSelectionDialog), "response",
+ G_CALLBACK(fontSelectionDialogCallback), NULL);
+ g_signal_connect(G_OBJECT(fontSelectionDialog), "destroy",
+ G_CALLBACK(gtk_widget_destroyed), &fontSelectionDialog);
+ }
+
+ gtk_window_set_title(GTK_WINDOW(fontSelectionDialog), title);
+
+ if (curFont != NULL) {
+ gchar *fontName;
+
+ /* the curFont description contains the latest font info
+ * which is depended on the current scale
+ * overwrite it with the absoluteFontSize */
+ pango_font_description_set_size(curFont->fontDescription,
+ FONTSIZE_TO_PANGOSIZE(absoluteFontSize) * PANGO_SCALE);
+ fontName = pango_font_description_to_string(curFont->fontDescription);
+ gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(
+ fontSelectionDialog), fontName);
+ g_free(fontName);
+ }
+
+ gtk_widget_show(fontSelectionDialog);
}
/**
@@ -317,11 +317,11 @@ void wSelectFont(
static wFont_p wlibSelectedFont(void)
{
- if (!fontInitted) {
- fontInit();
- }
+ if (!fontInitted) {
+ fontInit();
+ }
- return curFont;
+ return curFont;
}
/**
@@ -332,16 +332,16 @@ static wFont_p wlibSelectedFont(void)
wFontSize_t wSelectedFontSize(void)
{
- if (!fontInitted) {
- fontInit();
- }
+ if (!fontInitted) {
+ fontInit();
+ }
#if WLIB_FONT_DEBUG >= 3
- fprintf(stderr, "the font size of current font description is: %d\n",
- pango_font_description_get_size(curFont->fontDescription)/PANGO_SCALE);
- fprintf(stderr, "the font size of absoluteFontSize is: %d\n",absoluteFontSize);
+ fprintf(stderr, "the font size of current font description is: %d\n",
+ pango_font_description_get_size(curFont->fontDescription)/PANGO_SCALE);
+ fprintf(stderr, "the font size of absoluteFontSize is: %d\n",absoluteFontSize);
#endif
- return absoluteFontSize;
+ return absoluteFontSize;
}
/**
@@ -353,7 +353,7 @@ wFontSize_t wSelectedFontSize(void)
void wSetSelectedFontSize(wFontSize_t size)
{
- absoluteFontSize = size;
+ absoluteFontSize = size;
}
/**
@@ -368,30 +368,30 @@ void wSetSelectedFontSize(wFontSize_t size)
const char *wlibFontTranslate(wFont_p fp)
{
- static gchar *fontName = NULL;
+ static gchar *fontName = NULL;
- if (fontName != NULL) {
- g_free(fontName);
- }
+ if (fontName != NULL) {
+ g_free(fontName);
+ }
- if (!fontInitted) {
- fontInit();
- }
+ if (!fontInitted) {
+ fontInit();
+ }
- if (fp == NULL) {
- fp = wlibSelectedFont();
- }
+ if (fp == NULL) {
+ fp = wlibSelectedFont();
+ }
- if (fp == NULL) {
- fp = standardFonts[0][FW_MEDIUM][FS_REGULAR];
- }
+ if (fp == NULL) {
+ fp = standardFonts[0][FW_MEDIUM][FS_REGULAR];
+ }
- fontName = pango_font_description_to_string(fp->fontDescription);
+ fontName = pango_font_description_to_string(fp->fontDescription);
#if WLIB_FONT_DEBUG >= 2
- fprintf(stderr, "font translation: ");
- fprintf(stderr, " \"%s\"\n", fontName);
+ fprintf(stderr, "font translation: ");
+ fprintf(stderr, " \"%s\"\n", fontName);
#endif
- return (const char *) fontName;
+ return (const char *) fontName;
}
/**
@@ -402,9 +402,9 @@ const char *wlibFontTranslate(wFont_p fp)
wFont_p wStandardFont(int face, wBool_t bold, wBool_t italic)
{
- if (!fontInitted) {
- fontInit();
- }
+ if (!fontInitted) {
+ fontInit();
+ }
- return standardFonts[face-F_TIMES][bold][italic];
+ return standardFonts[face-F_TIMES][bold][italic];
}
diff --git a/app/wlib/gtklib/gtkdraw-cairo.c b/app/wlib/gtklib/gtkdraw-cairo.c
index 033e0ec..f24bde6 100644
--- a/app/wlib/gtklib/gtkdraw-cairo.c
+++ b/app/wlib/gtklib/gtkdraw-cairo.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 <stdio.h>
@@ -49,40 +49,40 @@ static long drawVerbose = 0;
wBool_t wDrawDoTempDraw = TRUE;
struct wDrawBitMap_t {
- int w;
- int h;
- int x;
- int y;
- const unsigned char * bits;
- GdkPixmap * pixmap;
- GdkBitmap * mask;
- };
+ int w;
+ int h;
+ int x;
+ int y;
+ const unsigned char * bits;
+ GdkPixmap * pixmap;
+ GdkBitmap * mask;
+};
//struct wDraw_t {
- //WOBJ_COMMON
- //void * context;
- //wDrawActionCallBack_p action;
- //wDrawRedrawCallBack_p redraw;
+//WOBJ_COMMON
+//void * context;
+//wDrawActionCallBack_p action;
+//wDrawRedrawCallBack_p redraw;
- //GdkPixmap * pixmap;
- //GdkPixmap * pixmapBackup;
+//GdkPixmap * pixmap;
+//GdkPixmap * pixmapBackup;
- //double dpi;
+//double dpi;
- //GdkGC * gc;
- //wDrawWidth lineWidth;
- //wDrawOpts opts;
- //wWinPix_t maxW;
- //wWinPix_t maxH;
- //unsigned long lastColor;
- //wBool_t lastColorInverted;
- //const char * helpStr;
+//GdkGC * gc;
+//wDrawWidth lineWidth;
+//wDrawOpts opts;
+//wWinPix_t maxW;
+//wWinPix_t maxH;
+//unsigned long lastColor;
+//wBool_t lastColorInverted;
+//const char * helpStr;
- //wWinPix_t lastX;
- //wWinPix_t lastY;
+//wWinPix_t lastX;
+//wWinPix_t lastY;
- //wBool_t delayUpdate;
- //};
+//wBool_t delayUpdate;
+//};
struct wDraw_t psPrint_d;
@@ -109,95 +109,10 @@ struct wDraw_t psPrint_d;
*
*******************************************************************************/
-static cairo_t* gtkDrawCreateCairoCursorContext(
- wControl_p ct,
- cairo_surface_t * surf,
- wDrawWidth width,
- wDrawLineType_e lineType,
- wDrawColor color,
- wDrawOpts opts )
-{
- cairo_t* cairo;
-
- cairo = cairo_create(surf);
-
- width = width ? abs(width) : 1;
- cairo_set_line_width(cairo, width);
-
- cairo_set_line_cap(cairo, CAIRO_LINE_CAP_BUTT);
- cairo_set_line_join(cairo, CAIRO_LINE_JOIN_MITER);
-
- switch(lineType)
- {
- case wDrawLineSolid:
- {
- cairo_set_dash(cairo, 0, 0, 0);
- break;
- }
- case wDrawLineDash:
- {
- double dashes[] = { 5, 3 };
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cairo, dashes, len_dashes, 0);
- break;
- }
- case wDrawLineDot:
- {
- double dashes[] = { 1, 2 };
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cairo, dashes, len_dashes, 0);
- break;
- }
- case wDrawLineDashDot:
- {
- double dashes[] = { 5, 2, 1, 2 };
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cairo, dashes, len_dashes, 0);
- break;
- }
- case wDrawLineDashDotDot:
- {
- double dashes[] = { 5, 2, 1, 2, 1, 2 };
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cairo, dashes, len_dashes, 0);
- break;
- }
- case wDrawLineCenter:
- {
- double dashes[] = { 8, 3, 5, 3};
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cairo, dashes, len_dashes, 0.0);
- break;
- }
- case wDrawLinePhantom:
- {
- double dashes[] = { 8, 3, 5, 3, 5, 3};
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cairo, dashes, len_dashes, 0.0);
- break;
- }
-
- }
- GdkColor * gcolor;
-
-
- cairo_set_operator(cairo, CAIRO_OPERATOR_SOURCE);
- gcolor = wlibGetColor(color, TRUE);
-
- if (ct->type == B_DRAW) {
- wDraw_p bd = (wDraw_p)ct;
- bd->lastColor = color;
- }
-
- cairo_set_source_rgba(cairo, gcolor->red / 65535.0, gcolor->green / 65535.0, gcolor->blue / 65535.0, 1.0);
-
- return cairo;
-}
-
wBool_t wDrawSetTempMode(
- wDraw_p bd,
- wBool_t bTemp )
+ wDraw_p bd,
+ wBool_t bTemp )
{
wBool_t ret = bd->bTempMode;
bd->bTempMode = bTemp;
@@ -209,102 +124,99 @@ wBool_t wDrawSetTempMode(
}
static cairo_t* gtkDrawCreateCairoContext(
- wDraw_p bd,
- GdkDrawable * win,
- wDrawWidth width,
- wDrawLineType_e lineType,
- wDrawColor color,
- wDrawOpts opts )
+ wDraw_p bd,
+ GdkDrawable * win,
+ wDrawWidth width,
+ wDrawLineType_e lineType,
+ wDrawColor color,
+ wDrawOpts opts )
{
cairo_t* cairo;
- if (win)
+ if (win) {
cairo = gdk_cairo_create(win);
- else {
+ } else {
if (opts & wDrawOptTemp) {
- if ( ! bd->bTempMode )
- printf( "Temp draw in Main Mode. Contact Developers. See %s:%d\n", "gtkdraw-cario.c", __LINE__+1 );
-/* Temp Draw In Main Mode:
- You are seeing this message because there is a wDraw*() call on tempD but you are not in the context of TempRedraw()
- Typically this happens when Cmd<Object>() is processing a C_DOWN or C_MOVE action and it writes directly to tempD
- Instead it sould set some state which allows c_redraw to do the actual drawing
- If you set a break point on the printf you'll see the offending wDraw*() call in the traceback
- It should be sufficient to remove that draw code or move it to C_REDRAW
- This is not fatal but the draw will be ineffective because the next TempRedraw() will erase the temp surface
- before the expose event can copy (or bitblt) it
-*/
+ if ( ! bd->bTempMode ) {
+ printf( "Temp draw in Main Mode. Contact Developers. See %s:%d\n",
+ "gtkdraw-cario.c", __LINE__+1 );
+ }
+ /* Temp Draw In Main Mode:
+ You are seeing this message because there is a wDraw*() call on tempD but you are not in the context of TempRedraw()
+ Typically this happens when Cmd<Object>() is processing a C_DOWN or C_MOVE action and it writes directly to tempD
+ Instead it sould set some state which allows c_redraw to do the actual drawing
+ If you set a break point on the printf you'll see the offending wDraw*() call in the traceback
+ It should be sufficient to remove that draw code or move it to C_REDRAW
+ This is not fatal but the draw will be ineffective because the next TempRedraw() will erase the temp surface
+ before the expose event can copy (or bitblt) it
+ */
cairo = cairo_create(bd->temp_surface);
} else {
- if ( bd->bTempMode )
- printf( "Main draw in Temp Mode. Contact Developers. See %s:%d\n", "gtkdraw-cario.c", __LINE__+1 );
-/* Main Draw In Temp Mode:
- You are seeing this message because there is a wDraw*() call on mainD but you are in the context of TempRedraw()
- Typically this happens when C_REDRAW action calls wDraw*() on mainD, in which case it should be writing to tempD.
- Or the wDraw*() call should be removed if it is redundant.
- If you set a break point on the printf you'll see the offending wDraw*() call in the traceback
- This is not fatal but could result in garbage being left on the screen if the command is cancelled.
-*/
+ if ( bd->bTempMode ) {
+ printf( "Main draw in Temp Mode. Contact Developers. See %s:%d\n",
+ "gtkdraw-cario.c", __LINE__+1 );
+ }
+ /* Main Draw In Temp Mode:
+ You are seeing this message because there is a wDraw*() call on mainD but you are in the context of TempRedraw()
+ Typically this happens when C_REDRAW action calls wDraw*() on mainD, in which case it should be writing to tempD.
+ Or the wDraw*() call should be removed if it is redundant.
+ If you set a break point on the printf you'll see the offending wDraw*() call in the traceback
+ This is not fatal but could result in garbage being left on the screen if the command is cancelled.
+ */
cairo = gdk_cairo_create(bd->pixmap);
}
}
width = width ? abs(width) : 1;
- if ( color == wDrawColorWhite )
- width += 1; // Remove ghosts
+ if ( color == wDrawColorWhite ) {
+ width += 1; // Remove ghosts
+ }
cairo_set_line_width(cairo, width);
cairo_set_line_cap(cairo, CAIRO_LINE_CAP_BUTT);
cairo_set_line_join(cairo, CAIRO_LINE_JOIN_MITER);
- switch(lineType)
- {
- case wDrawLineSolid:
- {
- cairo_set_dash(cairo, 0, 0, 0);
- break;
- }
- case wDrawLineDash:
- {
- double dashes[] = { 5, 3 };
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cairo, dashes, len_dashes, 0);
- break;
- }
- case wDrawLineDot:
- {
- double dashes[] = { 1, 2 };
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cairo, dashes, len_dashes, 0);
- break;
- }
- case wDrawLineDashDot:
- {
- double dashes[] = { 5, 2, 1, 2 };
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cairo, dashes, len_dashes, 0);
- break;
- }
- case wDrawLineDashDotDot:
- {
- double dashes[] = { 5, 2, 1, 2, 1, 2 };
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cairo, dashes, len_dashes, 0);
- break;
- }
- case wDrawLineCenter:
- {
- double dashes[] = { 8, 3, 5, 3};
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cairo, dashes, len_dashes, 0.0);
- break;
- }
- case wDrawLinePhantom:
- {
- double dashes[] = { 8, 3, 5, 3, 5, 3};
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cairo, dashes, len_dashes, 0.0);
- break;
- }
+ switch(lineType) {
+ case wDrawLineSolid: {
+ cairo_set_dash(cairo, 0, 0, 0);
+ break;
+ }
+ case wDrawLineDash: {
+ double dashes[] = { 5, 3 };
+ static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
+ cairo_set_dash(cairo, dashes, len_dashes, 0);
+ break;
+ }
+ case wDrawLineDot: {
+ double dashes[] = { 1, 2 };
+ static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
+ cairo_set_dash(cairo, dashes, len_dashes, 0);
+ break;
+ }
+ case wDrawLineDashDot: {
+ double dashes[] = { 5, 2, 1, 2 };
+ static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
+ cairo_set_dash(cairo, dashes, len_dashes, 0);
+ break;
+ }
+ case wDrawLineDashDotDot: {
+ double dashes[] = { 5, 2, 1, 2, 1, 2 };
+ static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
+ cairo_set_dash(cairo, dashes, len_dashes, 0);
+ break;
+ }
+ case wDrawLineCenter: {
+ double dashes[] = { 8, 3, 5, 3};
+ static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
+ cairo_set_dash(cairo, dashes, len_dashes, 0.0);
+ break;
+ }
+ case wDrawLinePhantom: {
+ double dashes[] = { 8, 3, 5, 3, 5, 3};
+ static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
+ cairo_set_dash(cairo, dashes, len_dashes, 0.0);
+ break;
+ }
}
GdkColor * gcolor;
@@ -315,49 +227,22 @@ static cairo_t* gtkDrawCreateCairoContext(
bd->lastColor = color;
- cairo_set_source_rgb(cairo, gcolor->red / 65535.0, gcolor->green / 65535.0, gcolor->blue / 65535.0);
+ cairo_set_source_rgb(cairo, gcolor->red / 65535.0, gcolor->green / 65535.0,
+ gcolor->blue / 65535.0);
return cairo;
}
-static cairo_t* gtkDrawDestroyCairoContext(cairo_t *cairo) {
+static cairo_t* gtkDrawDestroyCairoContext(cairo_t *cairo)
+{
cairo_destroy(cairo);
return NULL;
}
-#ifdef CURSOR_SURFACE
-cairo_t* CreateCursorSurface(wControl_p ct, wSurface_p surface, wWinPix_t width, wWinPix_t height, wDrawColor color, wDrawOpts opts) {
- cairo_t * cairo = NULL;
-
- if ((opts&wDrawOptCursor) || (opts&wDrawOptCursorRmv)) {
-
- if (surface!=NULL || surface->width != width || surface->height != height) {
- if (surface->surface) cairo_surface_destroy(surface->surface);
- surface->surface = cairo_image_surface_create( CAIRO_FORMAT_ARGB32, width,height );
- surface->width = width;
- surface->height = height;
-
- }
-
- cairo = gtkDrawCreateCairoCursorContext(ct,surface->surface,0,wDrawLineSolid, color, opts);
- cairo_save(cairo);
- cairo_set_source_rgba(cairo, 0.0, 0.0, 0.0, 0.0);
- cairo_paint(cairo);
- cairo_restore(cairo);
- surface->show = TRUE;
- cairo_set_operator(cairo,CAIRO_OPERATOR_SOURCE);
-
- }
-
- return cairo;
-
-}
-#endif
-
- void wDrawDelayUpdate(
- wDraw_p bd,
- wBool_t delay )
+void wDrawDelayUpdate(
+ wDraw_p bd,
+ wBool_t delay )
{
GdkRectangle update_rect;
@@ -372,17 +257,17 @@ cairo_t* CreateCursorSurface(wControl_p ct, wSurface_p surface, wWinPix_t width,
}
- void wDrawLine(
- wDraw_p bd,
- wDrawPix_t x0, wDrawPix_t y0,
- wDrawPix_t x1, wDrawPix_t y1,
- wDrawWidth width,
- wDrawLineType_e lineType,
- wDrawColor color,
- wDrawOpts opts )
+void wDrawLine(
+ wDraw_p bd,
+ wDrawPix_t x0, wDrawPix_t y0,
+ wDrawPix_t x1, wDrawPix_t y1,
+ wDrawWidth width,
+ wDrawLineType_e lineType,
+ wDrawColor color,
+ wDrawOpts opts )
{
- GdkGC * gc;
- GdkRectangle update_rect;
+// GdkGC * gc;
+// GdkRectangle update_rect;
if ( bd == &psPrint_d ) {
psPrintLine( x0, y0, x1, y1, width, lineType, color, opts );
@@ -393,13 +278,15 @@ cairo_t* CreateCursorSurface(wControl_p ct, wSurface_p surface, wWinPix_t width,
x1 = INMAPX(bd,x1);
y1 = INMAPY(bd,y1);
- cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, width, lineType, color, opts);
+ cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, width, lineType, color,
+ opts);
cairo_move_to(cairo, x0 + 0.5, y0 + 0.5);
cairo_line_to(cairo, x1 + 0.5, y1 + 0.5);
cairo_stroke(cairo);
gtkDrawDestroyCairoContext(cairo);
- if (bd->widget)
- gtk_widget_queue_draw(GTK_WIDGET(bd->widget)); //,x0,y0+1,x1,y1+1);
+ if (bd->widget) {
+ gtk_widget_queue_draw(GTK_WIDGET(bd->widget)); //,x0,y0+1,x1,y1+1);
+ }
}
@@ -418,79 +305,86 @@ cairo_t* CreateCursorSurface(wControl_p ct, wSurface_p surface, wWinPix_t width,
*/
- void wDrawArc(
- wDraw_p bd,
- wDrawPix_t x0, wDrawPix_t y0,
- wDrawPix_t r,
- wAngle_t angle0,
- wAngle_t angle1,
- int drawCenter,
- wDrawWidth width,
- wDrawLineType_e lineType,
- wDrawColor color,
- wDrawOpts opts )
+void wDrawArc(
+ wDraw_p bd,
+ wDrawPix_t x0, wDrawPix_t y0,
+ wDrawPix_t r,
+ wAngle_t angle0,
+ wAngle_t angle1,
+ int drawCenter,
+ wDrawWidth width,
+ wDrawLineType_e lineType,
+ wDrawColor color,
+ wDrawOpts opts )
{
int x, y, w, h;
if ( bd == &psPrint_d ) {
- psPrintArc( x0, y0, r, angle0, angle1, drawCenter, width, lineType, color, opts );
+ psPrintArc( x0, y0, r, angle0, angle1, drawCenter, width, lineType, color,
+ opts );
return;
}
- if (r < 6.0/75.0) return;
+ if (r < 6.0/75.0) { return; }
x = INMAPX(bd,x0-r);
y = INMAPY(bd,y0+r);
w = 2*r;
h = 2*r;
// now create the new arc
- cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, width, lineType, color, opts);
+ cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, width, lineType, color,
+ opts);
cairo_new_path(cairo);
// its center point marker
- if(drawCenter)
- {
+ if(drawCenter) {
// draw a small crosshair to mark the center of the curve
- cairo_move_to(cairo, INMAPX(bd, x0 - (CENTERMARK_LENGTH / 2)), INMAPY(bd, y0 ));
+ cairo_move_to(cairo, INMAPX(bd, x0 - (CENTERMARK_LENGTH / 2)), INMAPY(bd,
+ y0 ));
cairo_line_to(cairo, INMAPX(bd, x0 + (CENTERMARK_LENGTH / 2)), INMAPY(bd, y0 ));
cairo_move_to(cairo, INMAPX(bd, x0), INMAPY(bd, y0 - (CENTERMARK_LENGTH / 2 )));
- cairo_line_to(cairo, INMAPX(bd, x0) , INMAPY(bd, y0 + (CENTERMARK_LENGTH / 2)));
+ cairo_line_to(cairo, INMAPX(bd, x0), INMAPY(bd, y0 + (CENTERMARK_LENGTH / 2)));
cairo_new_sub_path( cairo );
}
// draw the curve itself
- cairo_arc_negative(cairo, INMAPX(bd, x0), INMAPY(bd, y0), r, (angle0 - 90 + angle1) * (M_PI / 180.0), (angle0 - 90) * (M_PI / 180.0));
+ cairo_arc_negative(cairo, INMAPX(bd, x0), INMAPY(bd, y0), r,
+ (angle0 - 90 + angle1) * (M_PI / 180.0), (angle0 - 90) * (M_PI / 180.0));
cairo_stroke(cairo);
gtkDrawDestroyCairoContext(cairo);
- if (bd->widget && !bd->delayUpdate)
- gtk_widget_queue_draw_area(bd->widget,x,y,w,h);
+ if (bd->widget && !bd->delayUpdate) {
+ gtk_widget_queue_draw_area(bd->widget,x,y,w,h);
+ }
}
- void wDrawPoint(
- wDraw_p bd,
- wDrawPix_t x0, wDrawPix_t y0,
- wDrawColor color,
- wDrawOpts opts )
+void wDrawPoint(
+ wDraw_p bd,
+ wDrawPix_t x0, wDrawPix_t y0,
+ wDrawColor color,
+ wDrawOpts opts )
{
- GdkRectangle update_rect;
+// GdkRectangle update_rect;
if ( bd == &psPrint_d ) {
/*psPrintArc( x0, y0, r, angle0, angle1, drawCenter, width, lineType, color, opts );*/
return;
}
- cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, 0, wDrawLineSolid, color, opts);
+ cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, 0, wDrawLineSolid, color,
+ opts);
cairo_new_path(cairo);
cairo_arc(cairo, INMAPX(bd, x0), INMAPY(bd, y0), 0.75, 0, 2 * M_PI);
cairo_stroke(cairo);
gtkDrawDestroyCairoContext(cairo);
- if (bd->widget && !bd->delayUpdate)
- gtk_widget_queue_draw_area(bd->widget,INMAPX(bd,x0-0.75),INMAPY(bd,y0+0.75),2,2);
+ if (bd->widget && !bd->delayUpdate) {
+ gtk_widget_queue_draw_area(bd->widget,INMAPX(bd,x0-0.75),INMAPY(bd,y0+0.75),2,
+ 2);
+ }
}
@@ -500,15 +394,15 @@ cairo_t* CreateCursorSurface(wControl_p ct, wSurface_p surface, wWinPix_t width,
*
******************************************************************************/
- void wDrawString(
- wDraw_p bd,
- wDrawPix_t x, wDrawPix_t y,
- wAngle_t a,
- const char * s,
- wFont_p fp,
- wFontSize_t fs,
- wDrawColor color,
- wDrawOpts opts )
+void wDrawString(
+ wDraw_p bd,
+ wDrawPix_t x, wDrawPix_t y,
+ wAngle_t a,
+ const char * s,
+ wFont_p fp,
+ wFontSize_t fs,
+ wDrawColor color,
+ wDrawOpts opts )
{
PangoLayout *layout;
GdkRectangle update_rect;
@@ -528,19 +422,21 @@ cairo_t* CreateCursorSurface(wControl_p ct, wSurface_p surface, wWinPix_t width,
y = INMAPY(bd,y);
/* draw text */
- cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, 0, wDrawLineSolid, color, opts);
+ cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, 0, wDrawLineSolid, color,
+ opts);
cairo_save( cairo );
cairo_identity_matrix(cairo);
layout = wlibFontCreatePangoLayout(bd->widget, cairo, fp, fs, s,
- &w, &h,
- &ascent, &descent, &baseline);
+ &w, &h,
+ &ascent, &descent, &baseline);
/* cairo does not support the old method of text removal by overwrite;
* if color is White, then overwrite old text with a White rectangle */
GdkColor* const gcolor = wlibGetColor(color, TRUE);
- cairo_set_source_rgb(cairo, gcolor->red / 65535.0, gcolor->green / 65535.0, gcolor->blue / 65535.0);
+ cairo_set_source_rgb(cairo, gcolor->red / 65535.0, gcolor->green / 65535.0,
+ gcolor->blue / 65535.0);
cairo_translate( cairo, x, y );
cairo_rotate( cairo, angle );
@@ -554,7 +450,7 @@ cairo_t* CreateCursorSurface(wControl_p ct, wSurface_p surface, wWinPix_t width,
cairo_restore( cairo );
gtkDrawDestroyCairoContext(cairo);
- if (bd->delayUpdate || bd->widget == NULL) return;
+ if (bd->delayUpdate || bd->widget == NULL) { return; }
/* recalculate the area to be updated
* for simplicity sake I added plain text height ascent and descent,
@@ -565,20 +461,22 @@ cairo_t* CreateCursorSurface(wControl_p ct, wSurface_p surface, wWinPix_t width,
update_rect.width = (gint) (w * cos( angle ) + h * sin(angle))+2;
update_rect.height = (gint) (h * sin( angle ) + w * cos(angle))+2;
gtk_widget_draw(bd->widget, &update_rect);
- if (bd->widget && !bd->delayUpdate)
- gtk_widget_queue_draw_area(bd->widget, update_rect.x, update_rect.y, update_rect.width, update_rect.height);
-
+ if (bd->widget && !bd->delayUpdate) {
+ gtk_widget_queue_draw_area(bd->widget, update_rect.x, update_rect.y,
+ update_rect.width, update_rect.height);
+ }
+
}
- void wDrawGetTextSize(
- wDrawPix_t *w,
- wDrawPix_t *h,
- wDrawPix_t *d,
- wDrawPix_t *a,
- wDraw_p bd,
- const char * s,
- wFont_p fp,
- wFontSize_t fs )
+void wDrawGetTextSize(
+ wDrawPix_t *w,
+ wDrawPix_t *h,
+ wDrawPix_t *d,
+ wDrawPix_t *a,
+ wDraw_p bd,
+ const char * s,
+ wFont_p fp,
+ wFontSize_t fs )
{
wDrawPix_t textWidth;
wDrawPix_t textHeight;
@@ -590,14 +488,15 @@ cairo_t* CreateCursorSurface(wControl_p ct, wSurface_p surface, wWinPix_t width,
*h = 0;
/* draw text */
- cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, 0, wDrawLineSolid, wDrawColorBlack, bd->bTempMode?wDrawOptTemp:0 );
+ cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, 0, wDrawLineSolid,
+ wDrawColorBlack, bd->bTempMode?wDrawOptTemp:0 );
cairo_identity_matrix(cairo);
wlibFontDestroyPangoLayout(
- wlibFontCreatePangoLayout(bd->widget, cairo, fp, fs, s,
- &textWidth, &textHeight,
- &ascent, &descent, &baseline) );
+ wlibFontCreatePangoLayout(bd->widget, cairo, fp, fs, s,
+ &textWidth, &textHeight,
+ &ascent, &descent, &baseline) );
*w = textWidth;
*h = textHeight;
@@ -605,8 +504,9 @@ cairo_t* CreateCursorSurface(wControl_p ct, wSurface_p surface, wWinPix_t width,
//*d = textHeight-ascent;
*d = descent;
- if (debugWindow >= 3)
+ if (debugWindow >= 3) {
fprintf(stderr, "text metrics: w=%0.1f, h=%0.1f, d=%0.1f\n", *w, *h, *d);
+ }
gtkDrawDestroyCairoContext(cairo);
}
@@ -619,9 +519,9 @@ cairo_t* CreateCursorSurface(wControl_p ct, wSurface_p surface, wWinPix_t width,
*******************************************************************************/
static void wlibDrawFilled(
- cairo_t * cairo,
- wDrawColor color,
- wDrawOpts opt )
+ cairo_t * cairo,
+ wDrawColor color,
+ wDrawOpts opt )
{
if ( (opt & wDrawOptTransparent) != 0 ) {
if ( (opt & wDrawOptTemp) == 0 ) {
@@ -630,26 +530,28 @@ static void wlibDrawFilled(
cairo_fill_preserve(cairo);
}
GdkColor * gcolor = wlibGetColor(color, TRUE);
- cairo_set_source_rgba(cairo, gcolor->red / 65535.0, gcolor->green / 65535.0, gcolor->blue / 65535.0, 1.0);
+ cairo_set_source_rgba(cairo, gcolor->red / 65535.0, gcolor->green / 65535.0,
+ gcolor->blue / 65535.0, 1.0);
cairo_set_operator(cairo, CAIRO_OPERATOR_OVER);
cairo_stroke_preserve(cairo);
cairo_set_operator(cairo, CAIRO_OPERATOR_OVER);
- cairo_set_source_rgba(cairo, gcolor->red / 65535.0, gcolor->green / 65535.0, gcolor->blue / 65535.0, 0.3);
+ cairo_set_source_rgba(cairo, gcolor->red / 65535.0, gcolor->green / 65535.0,
+ gcolor->blue / 65535.0, 0.3);
}
cairo_fill(cairo);
}
- void wDrawFilledRectangle(
- wDraw_p bd,
- wDrawPix_t x,
- wDrawPix_t y,
- wDrawPix_t w,
- wDrawPix_t h,
- wDrawColor color,
- wDrawOpts opt )
+void wDrawFilledRectangle(
+ wDraw_p bd,
+ wDrawPix_t x,
+ wDrawPix_t y,
+ wDrawPix_t w,
+ wDrawPix_t h,
+ wDrawColor color,
+ wDrawOpts opt )
{
- GdkRectangle update_rect;
+// GdkRectangle update_rect;
if ( bd == &psPrint_d ) {
psPrintFillRectangle( x, y, w, h, color, opt );
@@ -659,7 +561,8 @@ static void wlibDrawFilled(
x = INMAPX(bd,x);
y = INMAPY(bd,y)-h;
- cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, 0, wDrawLineSolid, color, opt);
+ cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, 0, wDrawLineSolid, color,
+ opt);
cairo_move_to(cairo, x, y);
cairo_rel_line_to(cairo, w, 0);
@@ -669,22 +572,23 @@ static void wlibDrawFilled(
wlibDrawFilled( cairo, color, opt );
gtkDrawDestroyCairoContext(cairo);
- if (bd->widget && !bd->delayUpdate)
+ if (bd->widget && !bd->delayUpdate) {
gtk_widget_queue_draw_area(GTK_WIDGET(bd->widget),x,y,w,h);
+ }
}
- void wDrawPolygon(
- wDraw_p bd,
- wDrawPix_t p[][2],
- wPolyLine_e type[],
- int cnt,
- wDrawColor color,
- wDrawWidth dw,
- wDrawLineType_e lt,
- wDrawOpts opt,
- int fill,
- int open )
+void wDrawPolygon(
+ wDraw_p bd,
+ wDrawPix_t p[][2],
+ wPolyLine_e type[],
+ int cnt,
+ wDrawColor color,
+ wDrawWidth dw,
+ wDrawLineType_e lt,
+ wDrawOpts opt,
+ int fill,
+ int open )
{
static int maxCnt = 0;
static GdkPoint *points;
@@ -695,35 +599,37 @@ static void wlibDrawFilled(
return;
}
- if (cnt > maxCnt) {
- if (points == NULL)
+ if (cnt > maxCnt) {
+ if (points == NULL) {
points = (GdkPoint*)malloc( cnt*sizeof *points );
- else
+ } else {
points = (GdkPoint*)realloc( points, cnt*sizeof *points );
- if (points == NULL)
+ }
+ if (points == NULL) {
abort();
+ }
maxCnt = cnt;
}
wDrawPix_t min_x,max_x,min_y,max_y;
min_x = max_x = INMAPX(bd,p[0][0]);
min_y = max_y = INMAPY(bd,p[0][1]);
- for (i=0; i<cnt; i++) {
- points[i].x = INMAPX(bd,p[i][0]);
- if (points[i].x < min_x) min_x = points[i].x;
- if (points[i].y < min_y) min_y = points[i].y;
- if (points[i].x > max_x) max_x = points[i].x;
- if (points[i].y > max_y) max_y = points[i].y;
- points[i].y = INMAPY(bd,p[i][1]);
+ for (i=0; i<cnt; i++) {
+ points[i].x = INMAPX(bd,p[i][0]);
+ if (points[i].x < min_x) { min_x = points[i].x; }
+ if (points[i].y < min_y) { min_y = points[i].y; }
+ if (points[i].x > max_x) { max_x = points[i].x; }
+ if (points[i].y > max_y) { max_y = points[i].y; }
+ points[i].y = INMAPY(bd,p[i][1]);
}
- cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, fill?0:dw, fill?wDrawLineSolid:lt, color, opt);
+ cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, fill?0:dw,
+ fill?wDrawLineSolid:lt, color, opt);
- for(i = 0; i < cnt; ++i)
- {
+ for(i = 0; i < cnt; ++i) {
int j = i-1;
int k = i+1;
- if (j < 0) j = cnt-1;
- if (k > cnt-1) k = 0;
+ if (j < 0) { j = cnt-1; }
+ if (k > cnt-1) { k = 0; }
GdkPoint mid0, mid1, mid3, mid4;
// save is static because of an apparent compiler bug on Linux
// This happens with RelWithDebInfo target
@@ -771,20 +677,24 @@ static void wlibDrawFilled(
save = points[0];
} else {
cairo_move_to(cairo, mid0.x, mid0.y);
- if (type[i] == 1)
- cairo_curve_to(cairo, points[i].x, points[i].y, points[i].x, points[i].y, mid1.x, mid1.y);
- else
+ if (type[i] == 1) {
+ cairo_curve_to(cairo, points[i].x, points[i].y, points[i].x, points[i].y,
+ mid1.x, mid1.y);
+ } else {
cairo_curve_to(cairo, mid3.x, mid3.y, mid4.x, mid4.y, mid1.x, mid1.y);
+ }
save = mid0;
}
} else if (!type || type[i] == wPolyLineStraight || (open && (i==cnt-1))) {
cairo_line_to(cairo, points[i].x, points[i].y);
} else {
cairo_line_to(cairo, mid0.x, mid0.y);
- if (type[i] == wPolyLineSmooth)
- cairo_curve_to(cairo, points[i].x, points[i].y, points[i].x, points[i].y, mid1.x, mid1.y);
- else
+ if (type[i] == wPolyLineSmooth) {
+ cairo_curve_to(cairo, points[i].x, points[i].y, points[i].x, points[i].y,
+ mid1.x, mid1.y);
+ } else {
cairo_curve_to(cairo, mid3.x, mid3.y, mid4.x, mid4.y, mid1.x, mid1.y);
+ }
}
if ((i==cnt-1) && !open) {
cairo_line_to(cairo, save.x, save.y);
@@ -796,18 +706,20 @@ static void wlibDrawFilled(
cairo_stroke(cairo);
}
gtkDrawDestroyCairoContext(cairo);
- if (bd->widget && !bd->delayUpdate)
- gtk_widget_queue_draw_area(GTK_WIDGET(bd->widget),min_x,min_y,max_x-min_y,max_y-min_y);
+ if (bd->widget && !bd->delayUpdate) {
+ gtk_widget_queue_draw_area(GTK_WIDGET(bd->widget),min_x,min_y,max_x-min_y,
+ max_y-min_y);
+ }
}
- void wDrawFilledCircle(
- wDraw_p bd,
- wDrawPix_t x0,
- wDrawPix_t y0,
- wDrawPix_t r,
- wDrawColor color,
- wDrawOpts opt )
+void wDrawFilledCircle(
+ wDraw_p bd,
+ wDrawPix_t x0,
+ wDrawPix_t y0,
+ wDrawPix_t r,
+ wDrawColor color,
+ wDrawOpts opt )
{
int x, y, w, h;
@@ -821,22 +733,26 @@ static void wlibDrawFilled(
w = 2*r;
h = 2*r;
- cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, 0, wDrawLineSolid, color, opt);
+ cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, 0, wDrawLineSolid, color,
+ opt);
cairo_arc(cairo, INMAPX(bd, x0), INMAPY(bd, y0), r, 0, 2 * M_PI);
wlibDrawFilled( cairo, color, opt );
gtkDrawDestroyCairoContext(cairo);
- if (bd->widget)
- gtk_widget_queue_draw_area(GTK_WIDGET(bd->widget),x,y,w,h);
+ if (bd->widget && !bd->delayUpdate) {
+ gtk_widget_queue_draw_area(GTK_WIDGET(bd->widget),x,y,w,h);
+ }
}
- void wDrawClearTemp(wDraw_p bd) {
+void wDrawClearTemp(wDraw_p bd)
+{
//Wipe out temp space with 0 alpha (transparent)
static long cDCT = 0;
- if ( iDrawLog )
+ if ( iDrawLog ) {
printf( "wDrawClearTemp %ld\n", cDCT++ );
+ }
cairo_t* cairo = cairo_create(bd->temp_surface);
cairo_set_source_rgba(cairo, 0.0, 0.0, 0.0, 0.0);
@@ -848,29 +764,32 @@ static void wlibDrawFilled(
cairo_fill(cairo);
cairo_destroy(cairo);
- if (bd->widget && !bd->delayUpdate)
+ if (bd->widget && !bd->delayUpdate) {
gtk_widget_queue_draw(bd->widget);
- }
+ }
+}
- void wDrawClear(
- wDraw_p bd )
+void wDrawClear(
+ wDraw_p bd )
{
- cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, 0, wDrawLineSolid, wDrawColorWhite, 0);
+ cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, 0, wDrawLineSolid,
+ wDrawColorWhite, 0);
cairo_move_to(cairo, 0, 0);
cairo_rel_line_to(cairo, bd->w, 0);
cairo_rel_line_to(cairo, 0, bd->h);
cairo_rel_line_to(cairo, -bd->w, 0);
cairo_fill(cairo);
- if (bd->widget)
+ if (bd->widget) {
gtk_widget_queue_draw(bd->widget);
+ }
gtkDrawDestroyCairoContext(cairo);
wDrawClearTemp(bd);
}
- void * wDrawGetContext(
- wDraw_p bd )
+void * wDrawGetContext(
+ wDraw_p bd )
{
return bd->context;
}
@@ -882,13 +801,13 @@ static void wlibDrawFilled(
*******************************************************************************/
- wDrawBitMap_p wDrawBitMapCreate(
- wDraw_p bd,
- int w,
- int h,
- int x,
- int y,
- const unsigned char * fbits )
+wDrawBitMap_p wDrawBitMapCreate(
+ wDraw_p bd,
+ int w,
+ int h,
+ int x,
+ int y,
+ const unsigned char * fbits )
{
wDrawBitMap_p bm;
@@ -903,23 +822,21 @@ static void wlibDrawFilled(
}
- void wDrawBitMap(
- wDraw_p bd,
- wDrawBitMap_p bm,
- wDrawPix_t x, wDrawPix_t y,
- wDrawColor color,
- wDrawOpts opts )
+void wDrawBitMap(
+ wDraw_p bd,
+ wDrawBitMap_p bm,
+ wDrawPix_t x, wDrawPix_t y,
+ wDrawColor color,
+ wDrawOpts opts )
{
int i, j, wb;
wDrawPix_t xx, yy;
- wControl_p b;
- wWin_p win;
- GdkDrawable * gdk_drawable, * cairo_surface;
GtkWidget * widget = bd->widget;
-
+
static long cDBM = 0;
- if ( iDrawLog )
+ if ( iDrawLog ) {
printf( "wDrawBitMap %ld\n", cDBM++ );
+ }
x = INMAPX( bd, x-bm->x );
y = INMAPY( bd, y-bm->y )-bm->h;
@@ -927,32 +844,6 @@ static void wlibDrawFilled(
cairo_t* cairo;
-#ifdef CURSOR_SURFACE
- if (opts&wDrawOptCursorRmv) color = wDrawColorWhite; //Wipeout existing cursor draw (simplistic first)
-
-
- if ((opts&wDrawOptCursor) || (opts&wDrawOptCursorRmv) || (opts&wDrawOptCursorQuit)) {
-
- cairo = CreateCursorSurface((wControl_p)bd,&bd->cursor_surface, bd->w, bd->h, color, opts);
-
- if ((opts&wDrawOptCursorRmv) || (opts&wDrawOptCursorQuit)) {
- bd->cursor_surface.show = FALSE;
- } else bd->cursor_surface.show = TRUE;
-
- widget = bd->widget;
-
-
- } else {
- cairo = gtkDrawCreateCairoContext(bd, NULL, 0, wDrawLineSolid, color, opts);
- widget = bd->widget;
- }
-
- GtkWidget * new_widget = widget;
- GdkGC * gc = NULL;
- GdkWindow * gdk_window = NULL;
-
- win = bd->parent;
-#endif
cairo = gtkDrawCreateCairoContext(bd, NULL, 0, wDrawLineSolid, color, opts);
@@ -961,55 +852,15 @@ static void wlibDrawFilled(
if ( bm->bits[ j*wb+(i>>3) ] & (1<<(i&07)) ) {
xx = x+i;
yy = y+j;
-#ifdef CURSOR_SURFACE
- if ( 0 <= xx && xx < bd->w &&
- 0 <= yy && yy < bd->h ) {
- b = (wControl_p)bd;
- } else if ( (opts&wDrawOptNoClip) != 0 ) {
- xx += bd->realX;
- yy += bd->realY;
- b = wlibGetControlFromPos( bd->parent, xx, yy );
- if ( b) {
- xx -= b->realX;
- yy -= b->realY;
- new_widget = b->widget;
- } else {
- new_widget = bd->parent->widget;
- }
- } else {
- continue;
- }
-
- if (new_widget != widget) {
- if (cairo)
- cairo_destroy(cairo);
- cairo = NULL;
- if (widget && (widget != bd->parent->widget))
- gtk_widget_queue_draw(GTK_WIDGET(widget));
- if ( (opts&wDrawOptCursor) || (opts&wDrawOptCursorRmv) || (opts&wDrawOptCursorQuit)) {
- if (!b) b = (wControl_p)(bd->parent->widget);
- cairo = CreateCursorSurface(b,&b->cursor_surface, b->w, b->h, color, opts);
- widget = b->widget;
- gc = NULL;
- if ((opts&wDrawOptCursorRmv) || (opts&wDrawOptCursorQuit))
- b->cursor_surface.show = FALSE;
- else
- b->cursor_surface.show = TRUE;
- } else {
- continue;
- }
- widget = new_widget;
- }
- if ((opts&wDrawOptCursorQuit) || (opts&wDrawOptCursorQuit) ) continue;
-#endif
cairo_rectangle(cairo, xx, yy, 1, 1);
cairo_fill(cairo);
}
cairo_destroy(cairo);
- if (widget && !bd->delayUpdate)
+ if (widget && !bd->delayUpdate) {
gtk_widget_queue_draw_area(GTK_WIDGET(widget), x, y, bm->w, bm->h);
+ }
}
@@ -1022,8 +873,8 @@ static void wlibDrawFilled(
- void wDrawSaveImage(
- wDraw_p bd )
+void wDrawSaveImage(
+ wDraw_p bd )
{
cairo_t * cr;
if ( bd->pixmapBackup ) {
@@ -1033,7 +884,7 @@ static void wlibDrawFilled(
cr = gdk_cairo_create(bd->pixmapBackup);
gdk_cairo_set_source_pixmap(cr, bd->pixmap, 0, 0);
- cairo_paint(cr);
+ cairo_paint(cr);
cairo_destroy(cr);
cr = NULL;
@@ -1041,8 +892,8 @@ static void wlibDrawFilled(
}
- void wDrawRestoreImage(
- wDraw_p bd )
+void wDrawRestoreImage(
+ wDraw_p bd )
{
GdkRectangle update_rect;
if ( bd->pixmapBackup ) {
@@ -1055,7 +906,7 @@ static void wlibDrawFilled(
cr = NULL;
- if ( bd->delayUpdate || bd->widget == NULL ) return;
+ if ( bd->delayUpdate || bd->widget == NULL ) { return; }
update_rect.x = 0;
update_rect.y = 0;
update_rect.width = bd->w;
@@ -1065,10 +916,10 @@ static void wlibDrawFilled(
}
- void wDrawSetSize(
- wDraw_p bd,
- wWinPix_t w,
- wWinPix_t h , void * redraw)
+void wDrawSetSize(
+ wDraw_p bd,
+ wWinPix_t w,
+ wWinPix_t h, void * redraw)
{
wBool_t repaint;
if (bd == NULL) {
@@ -1077,37 +928,47 @@ static void wlibDrawFilled(
}
/* Negative values crashes the program */
- if (w < 0 || h < 0)
- return;
+ if ( w <= 0 || h <= 0 ) {
+ fprintf( stderr, "wDrawSetSize bad size %ldx%ld\n", w, h );
+ if ( w <= 0 ) {
+ w = 100;
+ }
+ if ( h <= 0 ) {
+ h = 100;
+ }
+ }
repaint = (w != bd->w || h != bd->h);
bd->w = w;
bd->h = h;
gtk_widget_set_size_request( bd->widget, w, h );
- if (repaint)
- {
- if (bd->pixmap)
+ if (repaint) {
+ if (bd->pixmap) {
gdk_pixmap_unref( bd->pixmap );
+ }
bd->pixmap = gdk_pixmap_new( bd->widget->window, w, h, -1 );
- if (bd->temp_surface)
+ if (bd->temp_surface) {
cairo_surface_destroy( bd->temp_surface);
+ }
bd->temp_surface = cairo_image_surface_create( CAIRO_FORMAT_ARGB32, w,h );
wDrawClear( bd );
- if (!redraw)
+ if (!redraw) {
bd->redraw( bd, bd->context, w, h );
+ }
}
/*wRedraw( bd )*/;
}
- void wDrawGetSize(
- wDraw_p bd,
- wWinPix_t *w,
- wWinPix_t *h )
+void wDrawGetSize(
+ wDraw_p bd,
+ wWinPix_t *w,
+ wWinPix_t *h )
{
- if (bd->widget)
+ if (bd->widget) {
wlibControlGetSize( (wControl_p)bd );
+ }
*w = bd->w-2;
*h = bd->h-2;
}
@@ -1119,32 +980,33 @@ static void wlibDrawFilled(
* \return the resolution in dpi
*/
- double wDrawGetDPI(
- wDraw_p d )
+double wDrawGetDPI(
+ wDraw_p d )
{
//if (d == &psPrint_d)
- //return 1440.0;
+ //return 1440.0;
//else
- return d->dpi;
+ return d->dpi;
}
- double wDrawGetMaxRadius(
- wDraw_p d )
+double wDrawGetMaxRadius(
+ wDraw_p d )
{
- if (d == &psPrint_d)
+ if (d == &psPrint_d) {
return 10e9;
- else
+ } else {
return 32767.0;
+ }
}
- void wDrawClip(
- wDraw_p d,
- wDrawPix_t x,
- wDrawPix_t y,
- wDrawPix_t w,
- wDrawPix_t h )
+void wDrawClip(
+ wDraw_p d,
+ wDrawPix_t x,
+ wDrawPix_t y,
+ wDrawPix_t w,
+ wDrawPix_t h )
{
GdkRectangle rect;
rect.width = (wWinPix_t)w;
@@ -1157,38 +1019,29 @@ static void wlibDrawFilled(
static gint draw_expose_event(
- GtkWidget *widget,
- GdkEventExpose *event,
- wDraw_p bd)
+ GtkWidget *widget,
+ GdkEventExpose *event,
+ wDraw_p bd)
{
static long cDEE = 0;
if ( iDrawLog )
printf( "draw_expose_event %ld %dx%d+%dx%d %ldx%ld+%ldx%ld\n", cDEE++,
- event->area.x, event->area.y, event->area.width, event->area.height,
- 0L, bd->w, 0L, bd->h );
+ event->area.x, event->area.y, event->area.width, event->area.height,
+ 0L, bd->w, 0L, bd->h );
cairo_t* cairo = gdk_cairo_create (widget->window);
gdk_cairo_set_source_pixmap(cairo,bd->pixmap,0,0);
cairo_rectangle(cairo,event->area.x, event->area.y,
- event->area.width, event->area.height);
+ event->area.width, event->area.height);
cairo_set_operator(cairo,CAIRO_OPERATOR_SOURCE);
cairo_fill(cairo);
cairo_set_source_surface(cairo,bd->temp_surface,0,0);
cairo_rectangle(cairo,event->area.x, event->area.y,
- event->area.width, event->area.height);
+ event->area.width, event->area.height);
cairo_set_operator(cairo,CAIRO_OPERATOR_OVER);
cairo_fill(cairo);
-#ifdef CURSOR_SURFACE
- if (bd->cursor_surface.surface && bd->cursor_surface.show) {
- cairo_set_source_surface(cairo,bd->cursor_surface.surface,0,0);
- cairo_set_operator(cairo,CAIRO_OPERATOR_OVER);
- cairo_rectangle(cairo,event->area.x, event->area.y,
- event->area.width, event->area.height);
- cairo_fill(cairo);
- }
-#endif
cairo_destroy(cairo);
return TRUE;
@@ -1196,14 +1049,14 @@ static gint draw_expose_event(
static gint draw_configure_event(
- GtkWidget *widget,
- GdkEventConfigure *event,
- wDraw_p bd)
+ GtkWidget *widget,
+ GdkEventConfigure *event,
+ wDraw_p bd)
{
return TRUE;
}
-static const char * actionNames[] = { "None", "Move", "LDown", "LDrag", "LUp", "RDown", "RDrag", "RUp", "Text", "ExtKey", "WUp", "WDown", "DblL", "ModK", "ScrU", "ScrD", "ScrL", "ScrR" };
+static const char * actionNames[] = { "None", "Move", "LDown", "LDrag", "LUp", "RDown", "RDrag", "RUp", "Text", "ExtKey", "WUp", "WDown", "DblL", "ModK", "ScrU", "ScrD", "ScrL", "ScrR", "MDown", "MDrag", "MUp" };
/**
* Handler for scroll events, ie mouse wheel activity
@@ -1212,30 +1065,35 @@ static const char * actionNames[] = { "None", "Move", "LDown", "LDrag", "LUp", "
static int scrollTimer;
static int timer_busy_count;
static wAction_t lastAction;
+static int timer_interval = 500; // Start at 0.5 secs
-static int ScrollTimerPop(wDraw_p bd) {
+static int ScrollTimerPop(wDraw_p bd)
+{
- if (timer_busy_count>1) {
- timer_busy_count = 0;
- scrollTimer = 0;
- } else {
- timer_busy_count++;
- return TRUE;
- }
- if (drawVerbose >= 2)
- printf( "%s-Pop\n", actionNames[lastAction] );
- bd->action( bd, bd->context, lastAction, (wDrawPix_t)0, (wDrawPix_t)0 );
+ if (timer_busy_count>4)
+ timer_interval = 250; //If lots of events 0.25 secs next time
+ if (timer_busy_count<1)
+ timer_interval = 500; //If few events 0.5 secs next time
- return FALSE;
+
+ if (drawVerbose >= 2) {
+ printf( "%s-Pop\n", actionNames[lastAction] );
+ }
+ scrollTimer = 0;
+ timer_busy_count = 0;
+ // Don't do the action as may no longer be scrolling
+ // bd->action( bd, bd->context, lastAction, (wDrawPix_t)0, (wDrawPix_t)0 );
+
+ return FALSE; //Stops timer re-popping
}
static gint draw_scroll_event(
- GtkWidget *widget,
- GdkEventScroll *event,
- wDraw_p bd)
+ GtkWidget *widget,
+ GdkEventScroll *event,
+ wDraw_p bd)
{
- wAction_t action;
+ wAction_t action = 0;
static int oldEventX = 0;
static int oldEventY = 0;
static int newEventX = 0;
@@ -1249,44 +1107,34 @@ static gint draw_scroll_event(
oldEventY = OUTMAPX(bd, event->y_root);
switch( event->direction ) {
- case GDK_SCROLL_UP:
- if (event->state & GDK_CONTROL_MASK)
- action = wActionScrollRight;
- else
- action = wActionScrollUp;
- break;
- case GDK_SCROLL_DOWN:
- if (event->state & GDK_CONTROL_MASK)
- action = wActionScrollLeft;
- else
- action = wActionScrollDown;
- break;
- case GDK_SCROLL_LEFT:
- action = wActionScrollLeft;
- break;
- case GDK_SCROLL_RIGHT:
+ case GDK_SCROLL_UP:
+ if (event->state & GDK_CONTROL_MASK) {
action = wActionScrollRight;
- break;
- default:
- return TRUE;
- break;
+ } else {
+ action = wActionScrollUp;
+ }
+ break;
+ case GDK_SCROLL_DOWN:
+ if (event->state & GDK_CONTROL_MASK) {
+ action = wActionScrollLeft;
+ } else {
+ action = wActionScrollDown;
+ }
+ break;
+ case GDK_SCROLL_LEFT:
+ action = wActionScrollLeft;
+ break;
+ case GDK_SCROLL_RIGHT:
+ action = wActionScrollRight;
+ break;
+ default:
+ return TRUE;
+ break;
}
if (drawVerbose >= 2)
printf( "%sNew[%dx%d]Delta[%dx%d]\n", actionNames[action],
- newEventX, newEventY, oldEventX, oldEventY );
-
-
-
- if (scrollTimer) { // Already have a timer
- lastAction = action;
- return TRUE;
- } else {
- lastAction = action;
- timer_busy_count = 0;
- scrollTimer = g_timeout_add(25,(GSourceFunc)ScrollTimerPop,bd); // 25ms delay
- return TRUE;
- }
+ newEventX, newEventY, oldEventX, oldEventY );
} else {
@@ -1307,12 +1155,27 @@ static gint draw_scroll_event(
default:
break;
}
+
}
+ if (event->time < GDK_CURRENT_TIME) return TRUE; //Ignore past events
+
+ if (scrollTimer) { // Already have a timer
+ timer_busy_count++;
+ lastAction = action;
+ return TRUE;
+ } else {
+ lastAction = action;
+ timer_busy_count = 0;
+ scrollTimer = g_timeout_add(timer_interval,(GSourceFunc)ScrollTimerPop,bd); // 250ms delay
+ }
+
if (action != 0) {
- if (drawVerbose >= 2)
+ if (drawVerbose >= 2) {
printf( "%s[%ldx%ld]\n", actionNames[action], bd->lastX, bd->lastY );
- bd->action( bd, bd->context, action, (wDrawPix_t)bd->lastX, (wDrawPix_t)bd->lastY);
+ }
+ bd->action( bd, bd->context, action, (wDrawPix_t)bd->lastX,
+ (wDrawPix_t)bd->lastY);
}
return TRUE;
@@ -1321,8 +1184,8 @@ static gint draw_scroll_event(
static gint draw_leave_event(
- GtkWidget *widget,
- GdkEvent * event )
+ GtkWidget *widget,
+ GdkEvent * event )
{
wlibHelpHideBalloon();
return TRUE;
@@ -1336,24 +1199,27 @@ static gint draw_leave_event(
static gint draw_button_event(
- GtkWidget *widget,
- GdkEventButton *event,
- wDraw_p bd )
+ GtkWidget *widget,
+ GdkEventButton *event,
+ wDraw_p bd )
{
wAction_t action = 0;
- if (bd->action == NULL)
+ if (bd->action == NULL) {
return TRUE;
+ }
bd->lastX = OUTMAPX(bd, event->x);
bd->lastY = OUTMAPY(bd, event->y);
switch ( event->button ) {
case 1: /* left mouse button */
- case 2: /* middle mouse button */
action = event->type==GDK_BUTTON_PRESS?wActionLDown:wActionLUp;
- if (event->type==GDK_2BUTTON_PRESS) action = wActionLDownDouble;
+ if (event->type==GDK_2BUTTON_PRESS) { action = wActionLDownDouble; }
+ break;
+ case 2: /* middle mouse button */
+ action = event->type==GDK_BUTTON_PRESS?wActionMDown:wActionMUp;
/*bd->action( bd, bd->context, event->type==GDK_BUTTON_PRESS?wActionLDown:wActionLUp, (wDrawPix_t)bd->lastX, (wDrawPix_t)bd->lastY );*/
break;
case 3: /* right mouse button */
@@ -1362,27 +1228,31 @@ static gint draw_button_event(
break;
}
if (action != 0) {
- if (drawVerbose >= 2)
+ if (drawVerbose >= 2) {
printf( "%s[%ldx%ld]\n", actionNames[action], bd->lastX, bd->lastY );
- bd->action( bd, bd->context, action, (wDrawPix_t)bd->lastX, (wDrawPix_t)bd->lastY );
+ }
+ bd->action( bd, bd->context, action, (wDrawPix_t)bd->lastX,
+ (wDrawPix_t)bd->lastY );
}
- if (!(bd->option & BD_NOFOCUS))
+ if (!(bd->option & BD_NOFOCUS)) {
gtk_widget_grab_focus( bd->widget );
+ }
return TRUE;
}
static gint draw_motion_event(
- GtkWidget *widget,
- GdkEventMotion *event,
- wDraw_p bd )
+ GtkWidget *widget,
+ GdkEventMotion *event,
+ wDraw_p bd )
{
int x, y;
GdkModifierType state;
wAction_t action;
- if (bd->action == NULL)
+ if (bd->action == NULL) {
return TRUE;
+ }
if (event->is_hint) {
gdk_window_get_pointer (event->window, &x, &y, &state);
@@ -1395,56 +1265,62 @@ static gint draw_motion_event(
if (state & GDK_BUTTON1_MASK) {
action = wActionLDrag;
} else if (state & GDK_BUTTON2_MASK) {
- action = wActionLDrag;
+ action = wActionMDrag;
} else if (state & GDK_BUTTON3_MASK) {
- action = wActionRDrag;
+ action = wActionRDrag;
} else {
action = wActionMove;
}
bd->lastX = OUTMAPX(bd, x);
bd->lastY = OUTMAPY(bd, y);
- if (drawVerbose >= 2)
- printf( "%lx: %s[%ldx%ld] %s\n", (long)bd, actionNames[action], bd->lastX, bd->lastY, event->is_hint?"<Hint>":"<>" );
- bd->action( bd, bd->context, action, (wDrawPix_t)bd->lastX, (wDrawPix_t)bd->lastY );
- if (!(bd->option & BD_NOFOCUS))
+ if (drawVerbose >= 2) {
+ printf( "%lx: %s[%ldx%ld] %s\n", (long)bd, actionNames[action], bd->lastX,
+ bd->lastY, event->is_hint?"<Hint>":"<>" );
+ }
+ bd->action( bd, bd->context, action, (wDrawPix_t)bd->lastX,
+ (wDrawPix_t)bd->lastY );
+ if (!(bd->option & BD_NOFOCUS)) {
gtk_widget_grab_focus( bd->widget );
+ }
return TRUE;
}
static gint draw_char_release_event(
- GtkWidget * widget,
- GdkEventKey *event,
- wDraw_p bd )
+ GtkWidget * widget,
+ GdkEventKey *event,
+ wDraw_p bd )
{
- GdkModifierType modifiers;
- guint key = event->keyval;
- wModKey_e modKey = wModKey_None;
- switch (key) {
- case GDK_KEY_Alt_L: modKey = wModKey_Alt; break;
- case GDK_KEY_Alt_R: modKey = wModKey_Alt; break;
- case GDK_KEY_Shift_L: modKey = wModKey_Shift; break;
- case GDK_KEY_Shift_R: modKey = wModKey_Shift; break;
- case GDK_KEY_Control_L: modKey = wModKey_Ctrl; break;
- case GDK_KEY_Control_R: modKey = wModKey_Ctrl; break;
- default: ;
- }
+// GdkModifierType modifiers;
+ guint key = event->keyval;
+ wModKey_e modKey = wModKey_None;
+ switch (key) {
+ case GDK_KEY_Alt_L: modKey = wModKey_Alt; break;
+ case GDK_KEY_Alt_R: modKey = wModKey_Alt; break;
+ case GDK_KEY_Shift_L: modKey = wModKey_Shift; break;
+ case GDK_KEY_Shift_R: modKey = wModKey_Shift; break;
+ case GDK_KEY_Control_L: modKey = wModKey_Ctrl; break;
+ case GDK_KEY_Control_R: modKey = wModKey_Ctrl; break;
+ default: ;
+ }
- if (modKey!= wModKey_None && (bd->option & BD_MODKEYS)) {
- bd->action(bd, bd->context, wActionModKey+((int)modKey<<8), (wDrawPix_t)bd->lastX, (wDrawPix_t)bd->lastY );
- if (!(bd->option & BD_NOFOCUS))
- gtk_widget_grab_focus( bd->widget );
- return TRUE;
- } else {
- return FALSE;
+ if (modKey!= wModKey_None && (bd->option & BD_MODKEYS)) {
+ bd->action(bd, bd->context, wActionModKey+((int)modKey<<8),
+ (wDrawPix_t)bd->lastX, (wDrawPix_t)bd->lastY );
+ if (!(bd->option & BD_NOFOCUS)) {
+ gtk_widget_grab_focus( bd->widget );
}
+ return TRUE;
+ } else {
return FALSE;
+ }
+ return FALSE;
}
static gint draw_char_event(
- GtkWidget * widget,
- GdkEventKey *event,
- wDraw_p bd )
+ GtkWidget * widget,
+ GdkEventKey *event,
+ wDraw_p bd )
{
GdkModifierType modifiers;
guint key = event->keyval;
@@ -1453,9 +1329,12 @@ static gint draw_char_event(
switch (key) {
case GDK_KEY_Escape: key = 0x1B; break;
case GDK_KEY_Return:
+ case GDK_KP_Enter:
modifiers = gtk_accelerator_get_default_mod_mask();
- if (((event->state & modifiers)==GDK_CONTROL_MASK) || ((event->state & modifiers)==GDK_MOD1_MASK))
- extKey = wAccelKey_LineFeed; //If Return plus Control or Alt send in LineFeed
+ if (((event->state & modifiers)==GDK_CONTROL_MASK)
+ || ((event->state & modifiers)==GDK_MOD1_MASK)) {
+ extKey = wAccelKey_LineFeed; //If Return plus Control or Alt send in LineFeed
+ }
key = 0x0D;
break;
case GDK_KEY_Linefeed: key = 0x0A; break;
@@ -1489,31 +1368,40 @@ static gint draw_char_event(
case GDK_KEY_Shift_R: modKey = wModKey_Shift; break;
case GDK_KEY_Control_L: modKey = wModKey_Ctrl; break;
case GDK_KEY_Control_R: modKey = wModKey_Ctrl; break;
- default: ;
+ default: ;
}
if (extKey != wAccelKey_None) {
if ( wlibFindAccelKey( event ) == NULL ) {
- bd->action( bd, bd->context, wActionExtKey + ((int)extKey<<8), (wDrawPix_t)bd->lastX, (wDrawPix_t)bd->lastY );
+ bd->action( bd, bd->context, wActionExtKey + ((int)extKey<<8),
+ (wDrawPix_t)bd->lastX, (wDrawPix_t)bd->lastY );
+ }
+ if (!(bd->option & BD_NOFOCUS)) {
+ gtk_widget_grab_focus( bd->widget );
}
- if (!(bd->option & BD_NOFOCUS))
- gtk_widget_grab_focus( bd->widget );
return TRUE;
} else if ((key >=wAccelKey_Up) && (key<=wAccelKey_Left) && bd->action) {
- bd->action( bd, bd->context, wActionText+(key<<8), (wDrawPix_t)bd->lastX, (wDrawPix_t)bd->lastY );
- if (!(bd->option & BD_NOFOCUS))
+ bd->action( bd, bd->context, wActionText+(key<<8), (wDrawPix_t)bd->lastX,
+ (wDrawPix_t)bd->lastY );
+ if (!(bd->option & BD_NOFOCUS)) {
gtk_widget_grab_focus( bd->widget );
+ }
return TRUE;
- } else if (key <= 0xFF && (event->state&(GDK_CONTROL_MASK|GDK_MOD1_MASK)) == 0 && bd->action) {
- bd->action( bd, bd->context, wActionText+(key<<8), (wDrawPix_t)bd->lastX, (wDrawPix_t)bd->lastY );
- if (!(bd->option & BD_NOFOCUS))
- gtk_widget_grab_focus( bd->widget );
+ } else if (key <= 0xFF && (event->state&(GDK_CONTROL_MASK|GDK_MOD1_MASK)) == 0
+ && bd->action) {
+ bd->action( bd, bd->context, wActionText+(key<<8), (wDrawPix_t)bd->lastX,
+ (wDrawPix_t)bd->lastY );
+ if (!(bd->option & BD_NOFOCUS)) {
+ gtk_widget_grab_focus( bd->widget );
+ }
return TRUE;
} else if (modKey!= wModKey_None && (bd->option & BD_MODKEYS)) {
- bd->action(bd, bd->context, wActionModKey+((int)modKey<<8), (wDrawPix_t)bd->lastX, (wDrawPix_t)bd->lastY );
- if (!(bd->option & BD_NOFOCUS))
- gtk_widget_grab_focus( bd->widget );
- return TRUE;
+ bd->action(bd, bd->context, wActionModKey+((int)modKey<<8),
+ (wDrawPix_t)bd->lastX, (wDrawPix_t)bd->lastY );
+ if (!(bd->option & BD_NOFOCUS)) {
+ gtk_widget_grab_focus( bd->widget );
+ }
+ return TRUE;
} else {
return FALSE;
}
@@ -1532,17 +1420,17 @@ int XW = 0;
int XH = 0;
int xw, xh, cw, ch;
- wDraw_p wDrawCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- long option,
- wWinPix_t width,
- wWinPix_t height,
- void * context,
- wDrawRedrawCallBack_p redraw,
- wDrawActionCallBack_p action )
+wDraw_p wDrawCreate(
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ long option,
+ wWinPix_t width,
+ wWinPix_t height,
+ void * context,
+ wDrawRedrawCallBack_p redraw,
+ wDrawActionCallBack_p action )
{
wDraw_p bd;
@@ -1558,41 +1446,50 @@ int xw, xh, cw, ch;
gtk_drawing_area_size( GTK_DRAWING_AREA(bd->widget), width, height );
gtk_widget_set_size_request( GTK_WIDGET(bd->widget), width, height );
gtk_signal_connect (GTK_OBJECT (bd->widget), "expose_event",
- (GtkSignalFunc) draw_expose_event, bd);
+ (GtkSignalFunc) draw_expose_event, bd);
gtk_signal_connect (GTK_OBJECT(bd->widget),"configure_event",
- (GtkSignalFunc) draw_configure_event, bd);
+ (GtkSignalFunc) draw_configure_event, bd);
gtk_signal_connect (GTK_OBJECT (bd->widget), "motion_notify_event",
- (GtkSignalFunc) draw_motion_event, bd);
+ (GtkSignalFunc) draw_motion_event, bd);
gtk_signal_connect (GTK_OBJECT (bd->widget), "button_press_event",
- (GtkSignalFunc) draw_button_event, bd);
+ (GtkSignalFunc) draw_button_event, bd);
gtk_signal_connect (GTK_OBJECT (bd->widget), "button_release_event",
- (GtkSignalFunc) draw_button_event, bd);
+ (GtkSignalFunc) draw_button_event, bd);
gtk_signal_connect (GTK_OBJECT (bd->widget), "scroll_event",
- (GtkSignalFunc) draw_scroll_event, bd);
+ (GtkSignalFunc) draw_scroll_event, bd);
gtk_signal_connect_after (GTK_OBJECT (bd->widget), "key_press_event",
- (GtkSignalFunc) draw_char_event, bd);
+ (GtkSignalFunc) draw_char_event, bd);
gtk_signal_connect_after (GTK_OBJECT (bd->widget), "key_release_event",
- (GtkSignalFunc) draw_char_release_event, bd);
+ (GtkSignalFunc) draw_char_release_event, bd);
gtk_signal_connect (GTK_OBJECT (bd->widget), "leave_notify_event",
- (GtkSignalFunc) draw_leave_event, bd);
+ (GtkSignalFunc) draw_leave_event, bd);
gtk_widget_set_can_focus(bd->widget,!(option & BD_NOFOCUS));
//if (!(option & BD_NOFOCUS))
// GTK_WIDGET_SET_FLAGS(GTK_WIDGET(bd->widget), GTK_CAN_FOCUS);
gtk_widget_set_events (bd->widget, GDK_EXPOSURE_MASK
- | GDK_LEAVE_NOTIFY_MASK
- | GDK_BUTTON_PRESS_MASK
- | GDK_BUTTON_RELEASE_MASK
- | GDK_SCROLL_MASK
- | GDK_POINTER_MOTION_MASK
- | GDK_POINTER_MOTION_HINT_MASK
- | GDK_KEY_PRESS_MASK
- | GDK_KEY_RELEASE_MASK );
+ | GDK_LEAVE_NOTIFY_MASK
+ | GDK_BUTTON_PRESS_MASK
+ | GDK_BUTTON_RELEASE_MASK
+ | GDK_SCROLL_MASK
+ | GDK_POINTER_MOTION_MASK
+ | GDK_POINTER_MOTION_HINT_MASK
+ | GDK_KEY_PRESS_MASK
+ | GDK_KEY_RELEASE_MASK );
bd->lastColor = -1;
double dpi;
wPrefGetFloat(PREFSECTION, DPISET, &dpi, 96.0);
+ if ( width <= 0 || height <= 0 ) {
+ fprintf( stderr, "wDrawCreate bad size %ldx%ld\n", width, height );
+ if ( width <= 0 ) {
+ width = 100;
+ }
+ if ( height <= 0 ) {
+ height = 100;
+ }
+ }
bd->dpi = dpi;
bd->maxW = bd->w = width;
bd->maxH = bd->h = height;
@@ -1601,19 +1498,21 @@ int xw, xh, cw, ch;
wlibControlGetSize( (wControl_p)bd );
gtk_widget_realize( bd->widget );
bd->pixmap = gdk_pixmap_new( bd->widget->window, width, height, -1 );
- bd->temp_surface = cairo_image_surface_create( CAIRO_FORMAT_ARGB32, width,height );
+ bd->temp_surface = cairo_image_surface_create( CAIRO_FORMAT_ARGB32, width,
+ height );
wDrawClear(bd);
bd->gc = gdk_gc_new( parent->gtkwin->window );
gdk_gc_copy( bd->gc, parent->gtkwin->style->base_gc[GTK_STATE_NORMAL] );
-{
- GdkCursor * cursor;
- cursor = gdk_cursor_new ( GDK_TCROSS );
- gdk_window_set_cursor ( bd->widget->window, cursor);
- gdk_cursor_destroy (cursor);
-}
+ {
+ GdkCursor * cursor;
+ cursor = gdk_cursor_new ( GDK_TCROSS );
+ gdk_window_set_cursor ( bd->widget->window, cursor);
+ gdk_cursor_destroy (cursor);
+ }
#ifdef LATER
- if (labelStr)
+ if (labelStr) {
bd->labelW = gtkAddLabel( (wControl_p)bd, labelStr );
+ }
#endif
gtk_widget_show( bd->widget );
wlibAddButton( (wControl_p)bd );
@@ -1638,7 +1537,7 @@ wDraw_p wBitMapCreate( wWinPix_t w, wWinPix_t h, int arg )
double dpi;
- wPrefGetFloat(PREFSECTION, DPISET, &dpi, 96.0);
+ wPrefGetFloat(PREFSECTION, DPISET, &dpi, 96.0);
bd->dpi = dpi;
bd->maxW = bd->w = w;
@@ -1674,7 +1573,8 @@ wBool_t wBitMapDelete( wDraw_p d )
* Background
*
******************************************************************************/
-int wDrawSetBackground( wDraw_p bd, char * path, char ** error) {
+int wDrawSetBackground( wDraw_p bd, char * path, char ** error)
+{
GError *err = NULL;
@@ -1698,36 +1598,39 @@ int wDrawSetBackground( wDraw_p bd, char * path, char ** error) {
/**
* Use a loaded background in another context.
- *
+ *
* \param from context with background
- * \param to context to get a reference to the existing background
+ * \param to context to get a reference to the existing background
*/
void
wDrawCloneBackground(wDraw_p from, wDraw_p to)
{
- if (from->background) {
- to->background = from->background;
- } else {
- to->background = NULL;
- }
+ if (from->background) {
+ to->background = from->background;
+ } else {
+ to->background = NULL;
+ }
}
/**
-* Draw background to screen. The background will be sized and rotated before being shown. The bitmap
-* is scaled so that the width is equal to size. The height is changed proportionally.
+* Draw background to screen. The background will be sized and rotated before being shown. The bitmap
+* is scaled so that the width is equal to size. The height is changed proportionally.
*
* \param bd drawing context
* \param pos_x, pos_y bitmap position
* \param size desired width after scaling
-* \param angle
+* \param angle
* \param screen visibility of bitmap in percent
*/
-void wDrawShowBackground( wDraw_p bd, wWinPix_t pos_x, wWinPix_t pos_y, wWinPix_t size, wAngle_t angle, int screen) {
+void wDrawShowBackground( wDraw_p bd, wWinPix_t pos_x, wWinPix_t pos_y,
+ wWinPix_t size, wAngle_t angle, int screen)
+{
if (bd->background) {
- cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, 0, wDrawLineSolid, wDrawColorWhite, bd->bTempMode?wDrawOptTemp:0 );
+ cairo_t* cairo = gtkDrawCreateCairoContext(bd, NULL, 0, wDrawLineSolid,
+ wDrawColorWhite, bd->bTempMode?wDrawOptTemp:0 );
cairo_save(cairo);
int pixels_width = gdk_pixbuf_get_width(bd->background);
int pixels_height = gdk_pixbuf_get_height(bd->background);
@@ -1744,19 +1647,24 @@ void wDrawShowBackground( wDraw_p bd, wWinPix_t pos_x, wWinPix_t pos_y, wWinPix_
}
cairo_set_operator(cairo, CAIRO_OPERATOR_OVER);
double rad = M_PI*(angle/180);
- posy = (double)bd->h-((pixels_height*fabs(cos(rad))+pixels_width*fabs(sin(rad)))*scale)-posy;
+ posy = (double)bd->h-((pixels_height*fabs(cos(rad))+pixels_width*fabs(sin(
+ rad)))*scale)-posy;
//width = (double)(pixels_width*scale);
//height = (double)(pixels_height*scale);
cairo_translate(cairo,posx,posy);
cairo_scale(cairo, scale, scale);
- cairo_translate(cairo, fabs(pixels_width/2.0*cos(rad))+fabs(pixels_height/2.0*sin(rad)),
- fabs(pixels_width/2.0*sin(rad))+fabs(pixels_height/2.0*cos(rad)));
+ cairo_translate(cairo, fabs(pixels_width/2.0*cos(rad))+fabs(
+ pixels_height/2.0*sin(rad)),
+ fabs(pixels_width/2.0*sin(rad))+fabs(pixels_height/2.0*cos(rad)));
cairo_rotate(cairo, M_PI*(angle/180.0));
// We need to clip around the image, or cairo will paint garbage data
- cairo_rectangle(cairo, -pixels_width/2.0, -pixels_height/2.0, pixels_width, pixels_height);
+ cairo_rectangle(cairo, -pixels_width/2.0, -pixels_height/2.0, pixels_width,
+ pixels_height);
cairo_clip(cairo);
- gdk_cairo_set_source_pixbuf(cairo, bd->background, -pixels_width/2.0, -pixels_height/2.0);
- cairo_pattern_t *mask = cairo_pattern_create_rgba (1.0,1.0,1.0,(100.0-screen)/100.0);
+ gdk_cairo_set_source_pixbuf(cairo, bd->background, -pixels_width/2.0,
+ -pixels_height/2.0);
+ cairo_pattern_t *mask = cairo_pattern_create_rgba (1.0,1.0,1.0,
+ (100.0-screen)/100.0);
cairo_mask(cairo,mask);
cairo_pattern_destroy(mask);
cairo_restore(cairo);
diff --git a/app/wlib/gtklib/gtkint.h b/app/wlib/gtklib/gtkint.h
index 6d8a641..e3757a4 100644
--- a/app/wlib/gtklib/gtkint.h
+++ b/app/wlib/gtklib/gtkint.h
@@ -1,4 +1,4 @@
-/** \file gtkint.h
+/** \file gtkint.h
* Internal definitions for the gtk-library
*/
@@ -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
*/
#ifndef GTKINT_H
@@ -42,24 +42,16 @@
extern wWin_p gtkMainW;
-#ifdef CURSOR_SURFACE
-typedef struct {
- cairo_surface_t* surface;
- wWinPix_t width;
- wWinPix_t height;
- wBool_t show;
-} wCursorSurface_t, * wSurface_p;
-#endif
-
typedef enum {
- W_MAIN, W_POPUP,
- B_BUTTON, B_CANCEL, B_POPUP, B_TEXT, B_INTEGER, B_FLOAT,
- B_LIST, B_DROPLIST, B_COMBOLIST,
- B_RADIO, B_TOGGLE,
- B_DRAW, B_MENU, B_MULTITEXT, B_MESSAGE, B_LINES,
- B_MENUITEM, B_BOX,
- B_BITMAP, B_STATUS } wType_e;
+ W_MAIN, W_POPUP,
+ B_BUTTON, B_CANCEL, B_POPUP, B_TEXT, B_INTEGER, B_FLOAT,
+ B_LIST, B_DROPLIST, B_COMBOLIST,
+ B_RADIO, B_TOGGLE,
+ B_DRAW, B_MENU, B_MULTITEXT, B_MESSAGE, B_LINES,
+ B_MENUITEM, B_BOX,
+ B_BITMAP, B_STATUS
+} wType_e;
typedef void (*repaintProcCallback_p)( wControl_p );
typedef void (*doneProcCallback_p)( wControl_p b );
@@ -71,7 +63,6 @@ typedef void (*setTriggerCallback_p)( wControl_p b );
wWin_p parent; \
wWinPix_t origX, origY; \
wWinPix_t realX, realY; \
- wWinPix_t default_size_x, default_size_y; \
wWinPix_t labelW; \
wWinPix_t w, h; \
int maximize_initially; \
@@ -81,74 +72,73 @@ typedef void (*setTriggerCallback_p)( wControl_p b );
GtkWidget * widget; \
GtkWidget * label; \
doneProcCallback_p doneProc; \
- /* CURSOR_SURFACE wCursorSurface_t cursor_surface;*/ \
wBool_t outline; \
void * data;
struct wWin_t {
- WOBJ_COMMON
- GtkWidget *gtkwin; /**< GTK window */
- wWinPix_t lastX, lastY;
- wControl_p first, last;
- wWinCallBack_p winProc; /**< window procedure */
- wBool_t shown; /**< visibility state */
- const char * nameStr; /**< window name (not title) */
- GtkWidget * menubar; /**< menubar handle (if exists) */
- int menu_height;
- GdkGC * gc; /**< graphics context */
- int gc_linewidth; /**< ??? */
- wBool_t busy;
- int resizeTimer; /** resizing **/
- int resizeW,resizeH;
- int timer_idle_count;
- int timer_busy_count;
- int modalLevel;
- };
+ WOBJ_COMMON
+ GtkWidget *gtkwin; /**< GTK window */
+ wWinPix_t lastX, lastY;
+ wControl_p first, last;
+ wWinCallBack_p winProc; /**< window procedure */
+ wBool_t shown; /**< visibility state */
+ const char * nameStr; /**< window name (not title) */
+ GtkWidget * menubar; /**< menubar handle (if exists) */
+ int menu_height;
+ GdkGC * gc; /**< graphics context */
+ int gc_linewidth; /**< ??? */
+ wBool_t busy;
+ int resizeTimer; /** resizing **/
+ int resizeW,resizeH;
+ int timer_idle_count;
+ int timer_busy_count;
+ int modalLevel;
+};
struct wControl_t {
- WOBJ_COMMON
- };
-
+ WOBJ_COMMON
+};
+
typedef struct wListItem_t * wListItem_p;
struct wList_t {
- WOBJ_COMMON
+ WOBJ_COMMON
// GtkWidget *list;
- int count;
- int number;
- int colCnt;
- wWinPix_t *colWidths;
- wBool_t *colRightJust;
- GtkListStore *listStore;
- GtkWidget *treeView;
- int last;
- wWinPix_t listX;
- long * valueP;
- wListCallBack_p action;
- int recursion;
- int editted;
- int editable;
- };
+ int count;
+ int number;
+ int colCnt;
+ wWinPix_t *colWidths;
+ wBool_t *colRightJust;
+ GtkListStore *listStore;
+ GtkWidget *treeView;
+ int last;
+ wWinPix_t listX;
+ long * valueP;
+ wListCallBack_p action;
+ int recursion;
+ int editted;
+ int editable;
+};
struct wListItem_t {
- wBool_t active;
- void * itemData;
- char * label;
- GtkLabel * labelG;
- wBool_t selected;
- wList_p listP;
- };
+ wBool_t active;
+ void * itemData;
+ char * label;
+ GtkLabel * labelG;
+ wBool_t selected;
+ wList_p listP;
+};
#define gtkIcon_bitmap (1)
#define gtkIcon_pixmap (2)
struct wIcon_t {
- int gtkIconType;
- wWinPix_t w;
- wWinPix_t h;
- wDrawColor color;
- const void * bits;
- };
+ int gtkIconType;
+ wWinPix_t w;
+ wWinPix_t h;
+ wDrawColor color;
+ const void * bits;
+};
extern char wConfigName[];
extern wDrawColor wDrawColorWhite;
@@ -157,39 +147,42 @@ extern wDrawColor wDrawColorBlack;
/* boxes.c */
-void wlibDrawBox(wWin_p win, wBoxType_e style, wWinPix_t x, wWinPix_t y, wWinPix_t w, wWinPix_t h);
+void wlibDrawBox(wWin_p win, wBoxType_e style, wWinPix_t x, wWinPix_t y,
+ wWinPix_t w, wWinPix_t h);
/* button.c */
-void wlibSetLabel(GtkWidget *widget, long option, const char *labelStr, GtkLabel **labelG, GtkWidget **imageG);
+void wlibSetLabel(GtkWidget *widget, long option, const char *labelStr,
+ GtkLabel **labelG, GtkWidget **imageG);
void wlibButtonDoAction(wButton_p bb);
struct wButton_t {
- WOBJ_COMMON
- GtkLabel * labelG;
- GtkWidget * imageG;
- wButtonCallBack_p action;
- int busy;
- int recursion;
- long timer_id;
- int timer_count;
- int timer_state;
+ WOBJ_COMMON
+ GtkLabel * labelG;
+ GtkWidget * imageG;
+ wButtonCallBack_p action;
+ int busy;
+ int recursion;
+ long timer_id;
+ int timer_count;
+ int timer_state;
};
/* color.c */
typedef struct {
- unsigned char red;
- unsigned char green;
- unsigned char blue;
- GdkColor normalColor;
- GdkColor invertColor;
- long rgb;
- int colorChar;
+ unsigned char red;
+ unsigned char green;
+ unsigned char blue;
+ GdkColor normalColor;
+ GdkColor invertColor;
+ long rgb;
+ int colorChar;
} colorMap_t;
GdkColor *wlibGetColor(wDrawColor color, wBool_t normal);
/* control.c */
-wBool_t wControlExpose (GtkWidget * widget, GdkEventExpose * event, wControl_p b);
+wBool_t wControlExpose (GtkWidget * widget, GdkEventExpose * event,
+ wControl_p b);
/* droplist.c */
enum columns {
@@ -204,13 +197,19 @@ void wDropListClear(wList_p b);
void *wDropListGetItemContext(wList_p b, wIndex_t inx);
void wDropListAddValue(wList_p b, char *text, wListItem_p data);
void wDropListSetIndex(wList_p b, int val);
-wBool_t wDropListSetValues(wList_p b, wIndex_t row, const char *labelStr, wIcon_p bm, void *itemData);
-wList_p wDropListCreate(wWin_p parent, wWinPix_t x, wWinPix_t y, const char *helpStr, const char *labelStr, long option, long number, wWinPix_t width, long *valueP, wListCallBack_p action, void *data);
+wBool_t wDropListSetValues(wList_p b, wIndex_t row, const char *labelStr,
+ wIcon_p bm, void *itemData);
+wList_p wDropListCreate(wWin_p parent, wWinPix_t x, wWinPix_t y,
+ const char *helpStr, const char *labelStr, long option, long number,
+ wWinPix_t width, long *valueP, wListCallBack_p action, void *data);
/* filesel.c */
/* font.c */
-PangoLayout *wlibFontCreatePangoLayout(GtkWidget *widget, void *cairo, wFont_p fp, wFontSize_t fs, const char *s, wDrawPix_t *width_p, wDrawPix_t *height_p, wDrawPix_t *ascent_p, wDrawPix_t *descent_p, wDrawPix_t *baseline_p);
+PangoLayout *wlibFontCreatePangoLayout(GtkWidget *widget, void *cairo,
+ wFont_p fp, wFontSize_t fs, const char *s, wDrawPix_t *width_p,
+ wDrawPix_t *height_p, wDrawPix_t *ascent_p, wDrawPix_t *descent_p,
+ wDrawPix_t *baseline_p);
void wlibFontDestroyPangoLayout(PangoLayout *layout);
const char *wlibFontTranslate(wFont_p fp);
@@ -220,16 +219,20 @@ const char *wlibFontTranslate(wFont_p fp);
void wlibLineShow(wLine_p bl, wBool_t visible);
/* list.c */
-int CompareListData(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data);
+int CompareListData(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter,
+ gpointer data);
/* liststore.c */
wListItem_p wlibListItemGet(GtkListStore *ls, wIndex_t inx, GList **childR);
void *wlibListStoreGetContext(GtkListStore *ls, int inx);
void wlibListStoreClear(GtkListStore *listStore);
GtkListStore *wlibNewListStore(int colCnt);
-void wlibListStoreSetPixbuf(GtkListStore *ls, GtkTreeIter *iter, GdkPixbuf *pixbuf);
-int wlibListStoreAddData(GtkListStore *ls, GdkPixbuf *pixbuf, int cols, wListItem_p id);
-int wlibListStoreUpdateValues(GtkListStore *ls, int row, int cols, char *labels, wIcon_p bm);
+void wlibListStoreSetPixbuf(GtkListStore *ls, GtkTreeIter *iter,
+ GdkPixbuf *pixbuf);
+int wlibListStoreAddData(GtkListStore *ls, GdkPixbuf *pixbuf, int cols,
+ wListItem_p id);
+int wlibListStoreUpdateValues(GtkListStore *ls, int row, int cols, char *labels,
+ wIcon_p bm);
/* main.c */
char *wlibGetAppName(void);
@@ -239,16 +242,17 @@ int getMlistOrigin(wMenuList_p ml, GList **pChildren);
/* misc.c */
typedef struct accelData_t {
- wAccelKey_e key;
- int modifier;
- wAccelKeyCallBack_p action;
- void * data;
+ wAccelKey_e key;
+ int modifier;
+ wAccelKeyCallBack_p action;
+ void * data;
} accelData_t;
GdkPixbuf* wlibPixbufFromXBM(wIcon_p ip);
int wlibAddLabel(wControl_p b, const char *labelStr);
-void *wlibAlloc(wWin_p parent, wType_e type, wWinPix_t origX, wWinPix_t origY, const char *labelStr, int size, void *data);
+void *wlibAlloc(wWin_p parent, wType_e type, wWinPix_t origX, wWinPix_t origY,
+ const char *labelStr, int size, void *data);
void wlibComputePos(wControl_p b);
void wlibControlGetSize(wControl_p b);
void wlibAddButton(wControl_p b);
@@ -267,46 +271,53 @@ GdkPixbuf *wlibMakePixbuf(wIcon_p ip);
/* print.c */
struct wDraw_t {
- WOBJ_COMMON
- void * context;
- wDrawActionCallBack_p action;
- wDrawRedrawCallBack_p redraw;
-
- GdkPixmap * pixmap;
- GdkPixmap * pixmapBackup;
- cairo_surface_t * temp_surface;
-
- double dpi;
-
- GdkGC * gc;
- wDrawWidth lineWidth;
- wDrawOpts opts;
- wWinPix_t maxW;
- wWinPix_t maxH;
- unsigned long lastColor;
- wBool_t lastColorInverted;
- const char * helpStr;
-
- wWinPix_t lastX;
- wWinPix_t lastY;
-
- wBool_t delayUpdate;
- cairo_t *printContext;
- cairo_surface_t *curPrintSurface;
- GdkPixbuf * background;
-
- wBool_t bTempMode;
- };
+ WOBJ_COMMON
+ void * context;
+ wDrawActionCallBack_p action;
+ wDrawRedrawCallBack_p redraw;
+
+ GdkPixmap * pixmap;
+ GdkPixmap * pixmapBackup;
+ cairo_surface_t * temp_surface;
+
+ double dpi;
+
+ GdkGC * gc;
+ wDrawWidth lineWidth;
+ wDrawOpts opts;
+ wWinPix_t maxW;
+ wWinPix_t maxH;
+ unsigned long lastColor;
+ wBool_t lastColorInverted;
+ const char * helpStr;
+
+ wWinPix_t lastX;
+ wWinPix_t lastY;
+
+ wBool_t delayUpdate;
+ cairo_t *printContext;
+ cairo_surface_t *curPrintSurface;
+ GdkPixbuf * background;
+
+ wBool_t bTempMode;
+};
void WlibApplySettings(GtkPrintOperation *op);
void WlibSaveSettings(GtkPrintOperation *op);
-void psPrintLine(wDrawPix_t x0, wDrawPix_t y0, wDrawPix_t x1, wDrawPix_t y1, wDrawWidth width, wDrawLineType_e lineType, wDrawColor color, wDrawOpts opts);
-void psPrintArc(wDrawPix_t x0, wDrawPix_t y0, wDrawPix_t r, double angle0, double angle1, wBool_t drawCenter, wDrawWidth width, wDrawLineType_e lineType, wDrawColor color, wDrawOpts opts);
-void psPrintFillRectangle(wDrawPix_t x0, wDrawPix_t y0, wDrawPix_t x1, wDrawPix_t y1, wDrawColor color, wDrawOpts opts);
-void psPrintFillPolygon(wDrawPix_t p[][2], wPolyLine_e type[], int cnt, wDrawColor color, wDrawOpts opts, int fill, int open);
-void psPrintFillCircle(wDrawPix_t x0, wDrawPix_t y0, wDrawPix_t r, wDrawColor color, wDrawOpts opts);
-void psPrintString(wDrawPix_t x, wDrawPix_t y, double a, char *s, wFont_p fp, double fs, wDrawColor color, wDrawOpts opts);
-static void WlibGetPaperSize(void);
+void psPrintLine(wDrawPix_t x0, wDrawPix_t y0, wDrawPix_t x1, wDrawPix_t y1,
+ wDrawWidth width, wDrawLineType_e lineType, wDrawColor color, wDrawOpts opts);
+void psPrintArc(wDrawPix_t x0, wDrawPix_t y0, wDrawPix_t r, double angle0,
+ double angle1, wBool_t drawCenter, wDrawWidth width, wDrawLineType_e lineType,
+ wDrawColor color, wDrawOpts opts);
+void psPrintFillRectangle(wDrawPix_t x0, wDrawPix_t y0, wDrawPix_t x1,
+ wDrawPix_t y1, wDrawColor color, wDrawOpts opts);
+void psPrintFillPolygon(wDrawPix_t p[][2], wPolyLine_e type[], int cnt,
+ wDrawColor color, wDrawOpts opts, int fill, int open);
+void psPrintFillCircle(wDrawPix_t x0, wDrawPix_t y0, wDrawPix_t r,
+ wDrawColor color, wDrawOpts opts);
+void psPrintString(wDrawPix_t x, wDrawPix_t y, double a, char *s, wFont_p fp,
+ double fs, wDrawColor color, wDrawOpts opts);
+//static void WlibGetPaperSize(void);
/* single.c */
void wlibStringUpdate();
@@ -325,12 +336,15 @@ void wlibHelpHideBalloon();
/* treeview.c */
void wlibTreeViewSetSelected(wList_p b, int index);
-GtkWidget *wlibNewTreeView(GtkListStore *ls, int showTitles, int multiSelection);
+GtkWidget *wlibNewTreeView(GtkListStore *ls, int showTitles,
+ int multiSelection);
int wlibTreeViewAddColumns(GtkWidget *tv, int count);
int wlibAddColumnTitles(GtkWidget *tv, const char **titles);
-int wlibTreeViewAddData(GtkWidget *tv, int cols, char *label, GdkPixbuf *pixbuf, wListItem_p userData);
+int wlibTreeViewAddData(GtkWidget *tv, int cols, char *label, GdkPixbuf *pixbuf,
+ wListItem_p userData);
void wlibTreeViewAddRow(wList_p b, char *label, wIcon_p bm, wListItem_p id_p);
-gboolean changeSelection(GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer data);
+gboolean changeSelection(GtkTreeSelection *selection, GtkTreeModel *model,
+ GtkTreePath *path, gboolean path_currently_selected, gpointer data);
int wTreeViewGetCount(wList_p b);
void wTreeViewClear(wList_p b);
@@ -338,7 +352,8 @@ void *wTreeViewGetItemContext(wList_p b, int row);
/* window.c */
void wlibDoModal(wWin_p win0, wBool_t modal);
-wBool_t catch_shift_ctrl_alt_keys(GtkWidget *widget, GdkEventKey *event, void *data);
+wBool_t catch_shift_ctrl_alt_keys(GtkWidget *widget, GdkEventKey *event,
+ void *data);
/* wpref.c */
diff --git a/app/wlib/gtklib/help.c b/app/wlib/gtklib/help.c
index 45d1813..f062b83 100644
--- a/app/wlib/gtklib/help.c
+++ b/app/wlib/gtklib/help.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
*/
#define GTK_DISABLE_SINGLE_INCLUDES
@@ -46,29 +46,31 @@ extern const char * GetCurCommandName();
static void
DoHelpMenu(void *data)
{
- int func = (intptr_t)data;
+ int func = (intptr_t)data;
- const char * topic;
+ const char * topic;
- switch (func) {
- case 1:
- wHelp("contents");
- break;
+ switch (func) {
+ case 1:
+ wHelp("contents");
+ break;
- case 3:
- topic = GetCurCommandName();
- if (topic && topic[0])
- wHelp(topic);
- break;
+ case 3:
+ topic = GetCurCommandName();
+ if (topic && topic[0]) {
+ wHelp(topic);
+ }
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
- return;
+ return;
}
-void wDoAccelHelp(wAccelKey_e key, void * context) {
+void wDoAccelHelp(wAccelKey_e key, void * context)
+{
DoHelpMenu(context);
}
@@ -81,6 +83,6 @@ void wDoAccelHelp(wAccelKey_e key, void * context) {
void wMenuAddHelp(wMenu_p m)
{
- wMenuPushCreate(m, NULL, _("&Contents"), 0, DoHelpMenu, (void*)1);
- wMenuPushCreate(m, NULL, _("Co&mmand Context help"), 0, DoHelpMenu, (void*)3);
+ wMenuPushCreate(m, NULL, _("&Contents"), 0, DoHelpMenu, (void*)1);
+ wMenuPushCreate(m, NULL, _("Co&mmand Context help"), 0, DoHelpMenu, (void*)3);
}
diff --git a/app/wlib/gtklib/ixhelp.c b/app/wlib/gtklib/ixhelp.c
index 5079f61..80b579c 100644
--- a/app/wlib/gtklib/ixhelp.c
+++ b/app/wlib/gtklib/ixhelp.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 <stdlib.h>
@@ -77,34 +77,34 @@ static GtkWidget *contents_view; /** handle for the help contents pane */
static GtkWidget*
lookup_widget(GtkWidget *widget, const gchar *widget_name)
{
- GtkWidget *parent, *found_widget;
+ GtkWidget *parent, *found_widget;
- for (;;) {
- if (GTK_IS_MENU(widget)) {
- parent = gtk_menu_get_attach_widget(GTK_MENU(widget));
- } else {
- parent = widget->parent;
- }
+ for (;;) {
+ if (GTK_IS_MENU(widget)) {
+ parent = gtk_menu_get_attach_widget(GTK_MENU(widget));
+ } else {
+ parent = widget->parent;
+ }
- if (!parent) {
- parent = (GtkWidget*) g_object_get_data(G_OBJECT(widget), "GladeParentKey");
- }
+ if (!parent) {
+ parent = (GtkWidget*) g_object_get_data(G_OBJECT(widget), "GladeParentKey");
+ }
- if (parent == NULL) {
- break;
- }
+ if (parent == NULL) {
+ break;
+ }
- widget = parent;
- }
+ widget = parent;
+ }
- found_widget = (GtkWidget*) g_object_get_data(G_OBJECT(widget),
- widget_name);
+ found_widget = (GtkWidget*) g_object_get_data(G_OBJECT(widget),
+ widget_name);
- if (!found_widget) {
- g_warning("Widget not found: %s", widget_name);
- }
+ if (!found_widget) {
+ g_warning("Widget not found: %s", widget_name);
+ }
- return found_widget;
+ return found_widget;
}
@@ -124,21 +124,21 @@ lookup_widget(GtkWidget *widget, const gchar *widget_name)
GtkWidget *
CreateHPaned(GtkBox *container, char *property)
{
- GtkWidget *hpaned;
- long posSlider;
+ GtkWidget *hpaned;
+ long posSlider;
- /* the horizontal slider */
- hpaned = gtk_hpaned_new();
- gtk_container_set_border_width(GTK_CONTAINER(hpaned), 6);
+ /* the horizontal slider */
+ hpaned = gtk_hpaned_new();
+ gtk_container_set_border_width(GTK_CONTAINER(hpaned), 6);
- wPrefGetInteger(HTMLHELPSECTION, SLIDERPREFNAME, &posSlider, SLIDERPOSDEFAULT);
- gtk_paned_set_position(GTK_PANED(hpaned), (int)posSlider);
+ wPrefGetInteger(HTMLHELPSECTION, SLIDERPREFNAME, &posSlider, SLIDERPOSDEFAULT);
+ gtk_paned_set_position(GTK_PANED(hpaned), (int)posSlider);
- /* pack the horizontal slider into the main window */
- gtk_box_pack_start(container, hpaned, TRUE, TRUE, 0);
- gtk_widget_show(hpaned);
+ /* pack the horizontal slider into the main window */
+ gtk_box_pack_start(container, hpaned, TRUE, TRUE, 0);
+ gtk_widget_show(hpaned);
- return (hpaned);
+ return (hpaned);
}
/**
@@ -155,69 +155,69 @@ CreateHPaned(GtkBox *container, char *property)
static gboolean
DestroyHelpWindow(GtkWidget *win, GdkEvent *event, void *ptr)
{
- int i;
- GtkWidget *widget;
- char tmp[ 20 ];
+ int i;
+ GtkWidget *widget;
+ char tmp[ 20 ];
- gint x, y;
+ gint x, y;
- /* get the slider position and save it */
- widget = lookup_widget(win, PANED);
- i = gtk_paned_get_position(GTK_PANED(widget));
- wPrefSetInteger(HTMLHELPSECTION, SLIDERPREFNAME, i);
+ /* get the slider position and save it */
+ widget = lookup_widget(win, PANED);
+ i = gtk_paned_get_position(GTK_PANED(widget));
+ wPrefSetInteger(HTMLHELPSECTION, SLIDERPREFNAME, i);
- /* get the window position */
- gtk_window_get_position((GtkWindow *)win, &x, &y);
- sprintf(tmp, "%d %d", x, y);
- wPrefSetString(HTMLHELPSECTION, WINDOWPOSPREFNAME, tmp);
+ /* get the window position */
+ gtk_window_get_position((GtkWindow *)win, &x, &y);
+ sprintf(tmp, "%d %d", x, y);
+ wPrefSetString(HTMLHELPSECTION, WINDOWPOSPREFNAME, tmp);
- /* get the window size */
- gtk_window_get_size((GtkWindow *)win , &x, &y);
- sprintf(tmp, "%d %d", x, y);
- wPrefSetString(HTMLHELPSECTION, WINDOWSIZEPREFNAME, tmp);
+ /* get the window size */
+ gtk_window_get_size((GtkWindow *)win, &x, &y);
+ sprintf(tmp, "%d %d", x, y);
+ wPrefSetString(HTMLHELPSECTION, WINDOWSIZEPREFNAME, tmp);
- gtk_widget_hide(win);
- return TRUE;
+ gtk_widget_hide(win);
+ return TRUE;
}
void back_button_clicked(GtkWidget *widget, gpointer data)
{
- webkit_web_view_go_back(WEBKIT_WEB_VIEW(data));
+ webkit_web_view_go_back(WEBKIT_WEB_VIEW(data));
}
void forward_button_clicked(GtkWidget *widget, gpointer data)
{
- webkit_web_view_go_forward(WEBKIT_WEB_VIEW(data));
+ webkit_web_view_go_forward(WEBKIT_WEB_VIEW(data));
}
void home_button_clicked(GtkWidget *widget, gpointer data)
{
- load_into_view("index.html", MAIN_VIEW);
+ load_into_view("index.html", MAIN_VIEW);
}
/* Toggles the contents pane */
void contents_button_clicked(GtkWidget *widget, gpointer data)
{
- if (gtk_paned_get_position(GTK_PANED(data)) < 50) {
- gtk_paned_set_position(GTK_PANED(data), 370);
- } else {
- gtk_paned_set_position(GTK_PANED(data), 0);
- }
+ if (gtk_paned_get_position(GTK_PANED(data)) < 50) {
+ gtk_paned_set_position(GTK_PANED(data), 370);
+ } else {
+ gtk_paned_set_position(GTK_PANED(data), 0);
+ }
}
gboolean contents_click_handler(
- WebKitWebView *web_view,
- WebKitWebFrame *frame,
- WebKitNetworkRequest *request,
- WebKitWebNavigationAction *navigation_action,
- WebKitWebPolicyDecision *policy_decision,
- gpointer data)
+ WebKitWebView *web_view,
+ WebKitWebFrame *frame,
+ WebKitNetworkRequest *request,
+ WebKitWebNavigationAction *navigation_action,
+ WebKitWebPolicyDecision *policy_decision,
+ gpointer data)
{
- webkit_web_view_load_uri(WEBKIT_WEB_VIEW(data),
- webkit_network_request_get_uri(request));
+ webkit_web_view_load_uri(WEBKIT_WEB_VIEW(data),
+ webkit_network_request_get_uri(request));
- return TRUE;
+ return TRUE;
}
/**
@@ -225,45 +225,45 @@ gboolean contents_click_handler(
*/
void initialize_buttons(GtkWidget *main_vbox, GtkWidget *content_hpane)
{
- GtkWidget *buttons_hbuttonbox;
- GtkWidget *back_button;
- GtkWidget *forward_button;
- GtkWidget *home_button;
- GtkWidget *contents_button;
-
- // define and attach signals to buttons
- back_button = gtk_button_new_with_label(_("Back"));
- g_signal_connect(back_button, "clicked", G_CALLBACK(back_button_clicked),
- G_OBJECT(main_view));
-
- forward_button = gtk_button_new_with_label(_("Forward"));
- g_signal_connect(forward_button, "clicked", G_CALLBACK(forward_button_clicked),
- G_OBJECT(main_view));
-
- home_button = gtk_button_new_with_label(_("Home"));
- g_signal_connect(home_button, "clicked", G_CALLBACK(home_button_clicked),
- G_OBJECT(main_view));
-
- contents_button = gtk_button_new_with_label(_("Contents"));
- g_signal_connect(contents_button, "clicked",
- G_CALLBACK(contents_button_clicked), G_OBJECT(content_hpane));
-
- // button layout
- buttons_hbuttonbox = gtk_hbutton_box_new();
- gtk_container_add(GTK_CONTAINER(buttons_hbuttonbox), back_button);
- gtk_container_add(GTK_CONTAINER(buttons_hbuttonbox), forward_button);
- gtk_container_add(GTK_CONTAINER(buttons_hbuttonbox), home_button);
- gtk_container_add(GTK_CONTAINER(buttons_hbuttonbox), contents_button);
- gtk_box_pack_start(GTK_BOX(main_vbox), buttons_hbuttonbox, FALSE, TRUE, 0);
- gtk_box_set_spacing(GTK_BOX(buttons_hbuttonbox), 6);
- gtk_button_box_set_layout(GTK_BUTTON_BOX(buttons_hbuttonbox),
- GTK_BUTTONBOX_START);
-
- /* Store pointers to all widgets, for use by lookup_widget(). */
- GLADE_HOOKUP_OBJECT(main_view, back_button, BACKBUTTON);
- GLADE_HOOKUP_OBJECT(main_view, forward_button, FORWARDBUTTON);
- GLADE_HOOKUP_OBJECT(main_view, home_button, HOMEBUTTON);
- GLADE_HOOKUP_OBJECT(main_view, contents_button, CONTENTBUTTON);
+ GtkWidget *buttons_hbuttonbox;
+ GtkWidget *back_button;
+ GtkWidget *forward_button;
+ GtkWidget *home_button;
+ GtkWidget *contents_button;
+
+ // define and attach signals to buttons
+ back_button = gtk_button_new_with_label(_("Back"));
+ g_signal_connect(back_button, "clicked", G_CALLBACK(back_button_clicked),
+ G_OBJECT(main_view));
+
+ forward_button = gtk_button_new_with_label(_("Forward"));
+ g_signal_connect(forward_button, "clicked", G_CALLBACK(forward_button_clicked),
+ G_OBJECT(main_view));
+
+ home_button = gtk_button_new_with_label(_("Home"));
+ g_signal_connect(home_button, "clicked", G_CALLBACK(home_button_clicked),
+ G_OBJECT(main_view));
+
+ contents_button = gtk_button_new_with_label(_("Contents"));
+ g_signal_connect(contents_button, "clicked",
+ G_CALLBACK(contents_button_clicked), G_OBJECT(content_hpane));
+
+ // button layout
+ buttons_hbuttonbox = gtk_hbutton_box_new();
+ gtk_container_add(GTK_CONTAINER(buttons_hbuttonbox), back_button);
+ gtk_container_add(GTK_CONTAINER(buttons_hbuttonbox), forward_button);
+ gtk_container_add(GTK_CONTAINER(buttons_hbuttonbox), home_button);
+ gtk_container_add(GTK_CONTAINER(buttons_hbuttonbox), contents_button);
+ gtk_box_pack_start(GTK_BOX(main_vbox), buttons_hbuttonbox, FALSE, TRUE, 0);
+ gtk_box_set_spacing(GTK_BOX(buttons_hbuttonbox), 6);
+ gtk_button_box_set_layout(GTK_BUTTON_BOX(buttons_hbuttonbox),
+ GTK_BUTTONBOX_START);
+
+ /* Store pointers to all widgets, for use by lookup_widget(). */
+ GLADE_HOOKUP_OBJECT(main_view, back_button, BACKBUTTON);
+ GLADE_HOOKUP_OBJECT(main_view, forward_button, FORWARDBUTTON);
+ GLADE_HOOKUP_OBJECT(main_view, home_button, HOMEBUTTON);
+ GLADE_HOOKUP_OBJECT(main_view, contents_button, CONTENTBUTTON);
}
/**
@@ -275,123 +275,123 @@ void initialize_buttons(GtkWidget *main_vbox, GtkWidget *content_hpane)
GtkWidget*
CreateHelpWindow(void)
{
- GtkWidget *main_vbox;
- GtkWidget *main_view_scroller;
- GtkWidget *contents_view_scroller;
- GtkWidget *content_hpane;
+ GtkWidget *main_vbox;
+ GtkWidget *main_view_scroller;
+ GtkWidget *contents_view_scroller;
+ GtkWidget *content_hpane;
- int width;
- int height;
- int x, y;
- int w = 0, h = 0;
- const char *pref;
+ int width;
+ int height;
+ int x, y;
+ int w = 0, h = 0;
+ const char *pref;
- wHelpWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ wHelpWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- width = gdk_screen_get_width(gtk_window_get_screen((GtkWindow *)wHelpWindow));
- height = gdk_screen_get_height(gtk_window_get_screen((GtkWindow *)wHelpWindow));
+ width = gdk_screen_get_width(gtk_window_get_screen((GtkWindow *)wHelpWindow));
+ height = gdk_screen_get_height(gtk_window_get_screen((GtkWindow *)wHelpWindow));
- pref = wPrefGetString(HTMLHELPSECTION, WINDOWSIZEPREFNAME);
+ pref = wPrefGetString(HTMLHELPSECTION, WINDOWSIZEPREFNAME);
- if (pref) {
- sscanf(pref, "%d %d", &w, &h);
+ if (pref) {
+ sscanf(pref, "%d %d", &w, &h);
- if (w > width) {
- w = width;
- }
+ if (w > width) {
+ w = width;
+ }
- if (h > height) {
- h = height;
- }
- } else {
- w = (width * 2)/ 5;
- h = height - 100;
- }
+ if (h > height) {
+ h = height;
+ }
+ } else {
+ w = (width * 2)/ 5;
+ h = height - 100;
+ }
- pref = wPrefGetString(HTMLHELPSECTION, WINDOWPOSPREFNAME);
+ pref = wPrefGetString(HTMLHELPSECTION, WINDOWPOSPREFNAME);
- if (pref) {
- sscanf(pref, "%d %d", &x, &y);
+ if (pref) {
+ sscanf(pref, "%d %d", &x, &y);
- if (y > height - h) {
- y = height - h;
- }
+ if (y > height - h) {
+ y = height - h;
+ }
- if (x > width - w) {
- x = width - w;
- }
- } else {
- x = (width * 3) / 5 - 10;
- y = 70;
- }
+ if (x > width - w) {
+ x = width - w;
+ }
+ } else {
+ x = (width * 3) / 5 - 10;
+ y = 70;
+ }
- gtk_window_resize((GtkWindow *)wHelpWindow, w, h);
- gtk_window_move((GtkWindow *)wHelpWindow, x, y);
+ gtk_window_resize((GtkWindow *)wHelpWindow, w, h);
+ gtk_window_move((GtkWindow *)wHelpWindow, x, y);
- gtk_window_set_title(GTK_WINDOW(wHelpWindow), "XTrkCad Help");
+ gtk_window_set_title(GTK_WINDOW(wHelpWindow), "XTrkCad Help");
- g_signal_connect(G_OBJECT(wHelpWindow), "delete-event",
- G_CALLBACK(DestroyHelpWindow), NULL);
+ g_signal_connect(G_OBJECT(wHelpWindow), "delete-event",
+ G_CALLBACK(DestroyHelpWindow), NULL);
- main_view_scroller = gtk_scrolled_window_new(NULL, NULL);
- contents_view_scroller = gtk_scrolled_window_new(NULL, NULL);
- main_view = webkit_web_view_new();
- contents_view = webkit_web_view_new();
- // must be done here as it gets locked down later
- load_into_view("contents.html", CONTENTS_VIEW);
- gtk_widget_set_size_request(GTK_WIDGET(wHelpWindow), x, y);
+ main_view_scroller = gtk_scrolled_window_new(NULL, NULL);
+ contents_view_scroller = gtk_scrolled_window_new(NULL, NULL);
+ main_view = webkit_web_view_new();
+ contents_view = webkit_web_view_new();
+ // must be done here as it gets locked down later
+ load_into_view("contents.html", CONTENTS_VIEW);
+ gtk_widget_set_size_request(GTK_WIDGET(wHelpWindow), x, y);
- main_vbox = gtk_vbox_new(FALSE, 5);
- gtk_container_add(GTK_CONTAINER(wHelpWindow), main_vbox);
+ main_vbox = gtk_vbox_new(FALSE, 5);
+ gtk_container_add(GTK_CONTAINER(wHelpWindow), main_vbox);
- gtk_container_add(GTK_CONTAINER(main_view_scroller), main_view);
+ gtk_container_add(GTK_CONTAINER(main_view_scroller), main_view);
- gtk_container_add(GTK_CONTAINER(contents_view_scroller), contents_view);
+ gtk_container_add(GTK_CONTAINER(contents_view_scroller), contents_view);
- content_hpane = gtk_hpaned_new();
- initialize_buttons(main_vbox, content_hpane);
- gtk_container_add(GTK_CONTAINER(content_hpane), contents_view_scroller);
- gtk_container_add(GTK_CONTAINER(content_hpane), main_view_scroller);
- gtk_box_pack_start(GTK_BOX(main_vbox), content_hpane, TRUE, TRUE, 0);
+ content_hpane = gtk_hpaned_new();
+ initialize_buttons(main_vbox, content_hpane);
+ gtk_container_add(GTK_CONTAINER(content_hpane), contents_view_scroller);
+ gtk_container_add(GTK_CONTAINER(content_hpane), main_view_scroller);
+ gtk_box_pack_start(GTK_BOX(main_vbox), content_hpane, TRUE, TRUE, 0);
- gtk_paned_set_position(GTK_PANED(content_hpane), 370);
+ gtk_paned_set_position(GTK_PANED(content_hpane), 370);
- g_signal_connect(contents_view, "navigation-policy-decision-requested",
- G_CALLBACK(contents_click_handler), G_OBJECT(main_view));
+ g_signal_connect(contents_view, "navigation-policy-decision-requested",
+ G_CALLBACK(contents_click_handler), G_OBJECT(main_view));
- /* Store pointers to all widgets, for use by lookup_widget(). */
- GLADE_HOOKUP_OBJECT_NO_REF(wHelpWindow, wHelpWindow, "wHelpWindow");
- GLADE_HOOKUP_OBJECT(wHelpWindow, content_hpane, PANED);
- GLADE_HOOKUP_OBJECT(wHelpWindow, contents_view, TOCVIEW);
- GLADE_HOOKUP_OBJECT(wHelpWindow, main_view, CONTENTSVIEW);
+ /* Store pointers to all widgets, for use by lookup_widget(). */
+ GLADE_HOOKUP_OBJECT_NO_REF(wHelpWindow, wHelpWindow, "wHelpWindow");
+ GLADE_HOOKUP_OBJECT(wHelpWindow, content_hpane, PANED);
+ GLADE_HOOKUP_OBJECT(wHelpWindow, contents_view, TOCVIEW);
+ GLADE_HOOKUP_OBJECT(wHelpWindow, main_view, CONTENTSVIEW);
- return wHelpWindow;
+ return wHelpWindow;
}
void load_into_view(char *file, int requested_view)
{
- GtkWidget *view;
+ GtkWidget *view;
- switch (requested_view) {
- case MAIN_VIEW:
- view = main_view;
- break;
+ switch (requested_view) {
+ case MAIN_VIEW:
+ view = main_view;
+ break;
- case CONTENTS_VIEW:
- view = contents_view;
- break;
+ case CONTENTS_VIEW:
+ view = contents_view;
+ break;
- default:
- printf("*** error, could not find view");
- break;
- }
+ default:
+ printf("*** error, could not find view");
+ break;
+ }
- char fileToLoad[250] = "file://";
- strcat(fileToLoad,directory);
- strcat(fileToLoad,file);
+ char fileToLoad[250] = "file://";
+ strcat(fileToLoad,directory);
+ strcat(fileToLoad,file);
- //debug printf("*** loading %s into pane %d.\n", fileToLoad, requested_view);
- webkit_web_view_load_uri(WEBKIT_WEB_VIEW(view), fileToLoad);
+ //debug printf("*** loading %s into pane %d.\n", fileToLoad, requested_view);
+ webkit_web_view_load_uri(WEBKIT_WEB_VIEW(view), fileToLoad);
}
/**
@@ -402,36 +402,36 @@ void load_into_view(char *file, int requested_view)
void wHelp(const char * topic)
{
- char *htmlFile;
+ char *htmlFile;
- //Take off any topic characters after a '-'
+ //Take off any topic characters after a '-'
- if (!topic || !topic[0]) return;
+ if (!topic || !topic[0]) { return; }
- if (!CheckHelpTopicExists(topic)) return;
+ if (!CheckHelpTopicExists(topic)) { return; }
- if (!wHelpWindow) {
- directory = malloc(BUFSIZ);
- assert(directory != NULL);
+ if (!wHelpWindow) {
+ directory = malloc(BUFSIZ);
+ assert(directory != NULL);
- sprintf(directory, "%s/html/", wGetAppLibDir());
+ sprintf(directory, "%s/html/", wGetAppLibDir());
- wHelpWindow = CreateHelpWindow();
- /* load the default content */
- load_into_view("index.html", MAIN_VIEW);
- }
+ wHelpWindow = CreateHelpWindow();
+ /* load the default content */
+ load_into_view("index.html", MAIN_VIEW);
+ }
- /* need space for the 'html' extension plus dot plus \0 */
- htmlFile = malloc(strlen(topic) + 6);
+ /* need space for the 'html' extension plus dot plus \0 */
+ htmlFile = malloc(strlen(topic) + 6);
- assert(htmlFile != NULL);
+ assert(htmlFile != NULL);
- sprintf(htmlFile, "%s.html", topic);
+ sprintf(htmlFile, "%s.html", topic);
- load_into_view(htmlFile, MAIN_VIEW);
- gtk_widget_show_all(wHelpWindow);
- gtk_window_present(GTK_WINDOW(wHelpWindow));
+ load_into_view(htmlFile, MAIN_VIEW);
+ gtk_widget_show_all(wHelpWindow);
+ gtk_window_present(GTK_WINDOW(wHelpWindow));
- free(htmlFile);
+ free(htmlFile);
}
diff --git a/app/wlib/gtklib/lines.c b/app/wlib/gtklib/lines.c
index bd787a6..6ce7ac1 100644
--- a/app/wlib/gtklib/lines.c
+++ b/app/wlib/gtklib/lines.c
@@ -44,10 +44,10 @@
*/
struct wLine_t {
- WOBJ_COMMON
- wBool_t visible;
- int count;
- wLines_t * lines;
+ WOBJ_COMMON
+ wBool_t visible;
+ int count;
+ wLines_t * lines;
};
/**
@@ -59,30 +59,30 @@ struct wLine_t {
static void linesRepaint(wControl_p b)
{
- wLine_p bl = (wLine_p)(b);
- int i;
- wWin_p win = (wWin_p)(bl->parent);
- GdkDrawable * window;
- cairo_t *cr;
-
- if (!bl->visible) {
- return;
- }
-
- window = gtk_widget_get_window(win->widget);
- cr = gdk_cairo_create(window);
- cairo_set_source_rgb(cr, 0, 0, 0);
- cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
- cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER);
-
- for (i=0; i<bl->count; i++) {
- cairo_set_line_width(cr, bl->lines[i].width);
- cairo_move_to(cr, bl->lines[i].x0, bl->lines[i].y0);
- cairo_line_to(cr, bl->lines[i].x1, bl->lines[i].y1);
- cairo_stroke(cr);
- }
-
- cairo_destroy(cr);
+ wLine_p bl = (wLine_p)(b);
+ int i;
+ wWin_p win = (wWin_p)(bl->parent);
+ GdkDrawable * window;
+ cairo_t *cr;
+
+ if (!bl->visible) {
+ return;
+ }
+
+ window = gtk_widget_get_window(win->widget);
+ cr = gdk_cairo_create(window);
+ cairo_set_source_rgb(cr, 0, 0, 0);
+ cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
+ cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER);
+
+ for (i=0; i<bl->count; i++) {
+ cairo_set_line_width(cr, bl->lines[i].width);
+ cairo_move_to(cr, bl->lines[i].x0, bl->lines[i].y0);
+ cairo_line_to(cr, bl->lines[i].x1, bl->lines[i].y1);
+ cairo_stroke(cr);
+ }
+
+ cairo_destroy(cr);
}
/**
@@ -94,10 +94,10 @@ static void linesRepaint(wControl_p b)
*/
void wlibLineShow(
- wLine_p bl,
- wBool_t visible)
+ wLine_p bl,
+ wBool_t visible)
{
- bl->visible = visible;
+ bl->visible = visible;
}
/**
@@ -111,40 +111,40 @@ void wlibLineShow(
*/
wLine_p wLineCreate(
- wWin_p parent,
- const char * labelStr,
- int count,
- wLines_t * lines)
+ wWin_p parent,
+ const char * labelStr,
+ int count,
+ wLines_t * lines)
{
- wLine_p linesWindow;
- int i;
- linesWindow = (wLine_p)wlibAlloc(parent, B_LINES, 0, 0, labelStr,
- sizeof *linesWindow, NULL);
- linesWindow->visible = TRUE;
- linesWindow->count = count;
- linesWindow->lines = lines;
- linesWindow->w = linesWindow->h = 0;
-
- for (i=0; i<count; i++) {
- if (lines[i].x0 > linesWindow->w) {
- linesWindow->w = lines[i].x0;
- }
-
- if (lines[i].y0 > linesWindow->h) {
- linesWindow->h = lines[i].y0;
- }
-
- if (lines[i].x1 > linesWindow->w) {
- linesWindow->w = lines[i].x1;
- }
-
- if (lines[i].y1 > linesWindow->h) {
- linesWindow->h = lines[i].y1;
- }
- }
-
- linesWindow->repaintProc = linesRepaint;
- wlibAddButton((wControl_p)linesWindow);
- linesWindow->widget = NULL;
- return linesWindow;
+ wLine_p linesWindow;
+ int i;
+ linesWindow = (wLine_p)wlibAlloc(parent, B_LINES, 0, 0, labelStr,
+ sizeof *linesWindow, NULL);
+ linesWindow->visible = TRUE;
+ linesWindow->count = count;
+ linesWindow->lines = lines;
+ linesWindow->w = linesWindow->h = 0;
+
+ for (i=0; i<count; i++) {
+ if (lines[i].x0 > linesWindow->w) {
+ linesWindow->w = lines[i].x0;
+ }
+
+ if (lines[i].y0 > linesWindow->h) {
+ linesWindow->h = lines[i].y0;
+ }
+
+ if (lines[i].x1 > linesWindow->w) {
+ linesWindow->w = lines[i].x1;
+ }
+
+ if (lines[i].y1 > linesWindow->h) {
+ linesWindow->h = lines[i].y1;
+ }
+ }
+
+ linesWindow->repaintProc = linesRepaint;
+ wlibAddButton((wControl_p)linesWindow);
+ linesWindow->widget = NULL;
+ return linesWindow;
}
diff --git a/app/wlib/gtklib/list.c b/app/wlib/gtklib/list.c
index 2080b9f..92977dc 100644
--- a/app/wlib/gtklib/list.c
+++ b/app/wlib/gtklib/list.c
@@ -16,7 +16,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 <stdio.h>
@@ -37,9 +37,9 @@
#include "i18n.h"
struct listSearch {
- const char *search;
- char *result;
- int row;
+ const char *search;
+ char *result;
+ int row;
};
@@ -59,21 +59,21 @@ struct listSearch {
*/
void wListClear(
- wList_p b)
+ wList_p b)
{
- assert(b!= NULL);
+ assert(b!= NULL);
- b->recursion++;
+ b->recursion++;
- if (b->type == B_DROPLIST) {
- wDropListClear(b);
- } else {
- wTreeViewClear(b);
- }
+ if (b->type == B_DROPLIST) {
+ wDropListClear(b);
+ } else {
+ wTreeViewClear(b);
+ }
- b->recursion--;
- b->last = -1;
- b->count = 0;
+ b->recursion--;
+ b->last = -1;
+ b->count = 0;
}
/**
@@ -84,23 +84,23 @@ void wListClear(
*/
void wListSetIndex(
- wList_p b,
- int element)
+ wList_p b,
+ int element)
{
- if (b->widget == 0) {
- abort();
- }
+ if (b->widget == 0) {
+ abort();
+ }
- b->recursion++;
+ b->recursion++;
- if (b->type == B_DROPLIST) {
- wDropListSetIndex(b, element);
- } else {
- wlibTreeViewSetSelected(b, element);
- }
+ if (b->type == B_DROPLIST) {
+ wDropListSetIndex(b, element);
+ } else {
+ wlibTreeViewSetSelected(b, element);
+ }
- b->last = element;
- b->recursion--;
+ b->last = element;
+ b->recursion--;
}
/**
@@ -121,23 +121,23 @@ int
CompareListData(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter,
gpointer data)
{
- wListItem_p id_p;
- struct listSearch *search = (struct listSearch *)data;
-
- gtk_tree_model_get(model,
- iter,
- LISTCOL_DATA,
- &id_p,
- -1);
-
- if (id_p && id_p->label && !strcmp(id_p->label, search->search)) {
- search->result = (char *)id_p->label;
- return TRUE;
- } else {
- search->result = NULL;
- search->row++;
- return FALSE;
- }
+ wListItem_p id_p;
+ struct listSearch *search = (struct listSearch *)data;
+
+ gtk_tree_model_get(model,
+ iter,
+ LISTCOL_DATA,
+ &id_p,
+ -1);
+
+ if (id_p && id_p->label && !strcmp(id_p->label, search->search)) {
+ search->result = (char *)id_p->label;
+ return TRUE;
+ } else {
+ search->result = NULL;
+ search->row++;
+ return FALSE;
+ }
}
/**
@@ -149,25 +149,25 @@ CompareListData(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter,
*/
wIndex_t wListFindValue(
- wList_p b,
- const char * val)
+ wList_p b,
+ const char * val)
{
- struct listSearch thisSearch;
+ struct listSearch thisSearch;
- assert(b!=NULL);
- assert(b->listStore!=NULL);
+ assert(b!=NULL);
+ assert(b->listStore!=NULL);
- thisSearch.search = val;
- thisSearch.row = 0;
+ thisSearch.search = val;
+ thisSearch.row = 0;
- gtk_tree_model_foreach(GTK_TREE_MODEL(b->listStore), CompareListData,
- (void *)&thisSearch);
+ gtk_tree_model_foreach(GTK_TREE_MODEL(b->listStore), CompareListData,
+ (void *)&thisSearch);
- if (!thisSearch.result) {
- return -1;
- } else {
- return thisSearch.row;
- }
+ if (!thisSearch.result) {
+ return -1;
+ } else {
+ return thisSearch.row;
+ }
}
/**
@@ -178,13 +178,13 @@ wIndex_t wListFindValue(
*/
wIndex_t wListGetCount(
- wList_p b)
+ wList_p b)
{
- if (b->type == B_DROPLIST) {
- return wDropListGetCount(b);
- } else {
- return wTreeViewGetCount(b);
- }
+ if (b->type == B_DROPLIST) {
+ return wDropListGetCount(b);
+ } else {
+ return wTreeViewGetCount(b);
+ }
}
/**
@@ -196,18 +196,18 @@ wIndex_t wListGetCount(
*/
void * wListGetItemContext(
- wList_p b,
- wIndex_t inx)
+ wList_p b,
+ wIndex_t inx)
{
- if (inx < 0) {
- return NULL;
- }
-
- if (b->type == B_DROPLIST) {
- return wDropListGetItemContext(b, inx);
- } else {
- return wTreeViewGetItemContext(b, inx);
- }
+ if (inx < 0) {
+ return NULL;
+ }
+
+ if (b->type == B_DROPLIST) {
+ return wDropListGetItemContext(b, inx);
+ } else {
+ return wTreeViewGetItemContext(b, inx);
+ }
}
/**
@@ -221,57 +221,57 @@ void * wListGetItemContext(
*/
wIndex_t wListGetValues(
- wList_p bl,
- char * labelStr,
- int labelSize,
- void * * listDataRet,
- void * * itemDataRet)
+ wList_p bl,
+ char * labelStr,
+ int labelSize,
+ void * * listDataRet,
+ void * * itemDataRet)
{
- wListItem_p id_p;
- wIndex_t inx = bl->last;
- const char * entry_value = "";
- void * item_data = NULL;
-
- assert(bl != NULL);
- assert(bl->listStore != NULL);
-
- if (bl->type == B_DROPLIST && bl->editted) {
- entry_value = gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(
- bl->widget))));
- item_data = NULL;
- inx = bl->last = -1;
- } else {
- //Make sure in range
- if (bl->last > bl->count-1) bl->last = bl->count-1;
- inx = bl->last;
-
-
- if (inx >= 0) {
- id_p = wlibListStoreGetContext(bl->listStore, inx);
-
- if (id_p==NULL) {
- fprintf(stderr, "wListGetValues - id_p == NULL\n");
- bl->last = -1;
- } else {
- entry_value = id_p->label;
- item_data = id_p->itemData;
- }
- }
- }
-
- if (labelStr) {
- strncpy(labelStr, entry_value, labelSize);
- }
-
- if (listDataRet) {
- *listDataRet = bl->data;
- }
-
- if (itemDataRet) {
- *itemDataRet = item_data;
- }
-
- return bl->last;
+ wListItem_p id_p;
+ wIndex_t inx = bl->last;
+ const char * entry_value = "";
+ void * item_data = NULL;
+
+ assert(bl != NULL);
+ assert(bl->listStore != NULL);
+
+ if (bl->type == B_DROPLIST && bl->editted) {
+ entry_value = gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(
+ bl->widget))));
+ item_data = NULL;
+ inx = bl->last = -1;
+ } else {
+ //Make sure in range
+ if (bl->last > bl->count-1) { bl->last = bl->count-1; }
+ inx = bl->last;
+
+
+ if (inx >= 0) {
+ id_p = wlibListStoreGetContext(bl->listStore, inx);
+
+ if (id_p==NULL) {
+ fprintf(stderr, "wListGetValues - id_p == NULL\n");
+ bl->last = -1;
+ } else {
+ entry_value = id_p->label;
+ item_data = id_p->itemData;
+ }
+ }
+ }
+
+ if (labelStr) {
+ strncpy(labelStr, entry_value, labelSize);
+ }
+
+ if (listDataRet) {
+ *listDataRet = bl->data;
+ }
+
+ if (itemDataRet) {
+ *itemDataRet = item_data;
+ }
+
+ return bl->last;
}
/**
@@ -282,22 +282,22 @@ wIndex_t wListGetValues(
*/
wBool_t wListGetItemSelected(
- wList_p b,
- wIndex_t inx)
+ wList_p b,
+ wIndex_t inx)
{
- wListItem_p id_p;
+ wListItem_p id_p;
- if (inx < 0) {
- return FALSE;
- }
+ if (inx < 0) {
+ return FALSE;
+ }
- id_p = wlibListStoreGetContext(b->listStore, inx);
+ id_p = wlibListStoreGetContext(b->listStore, inx);
- if (id_p) {
- return id_p->selected;
- } else {
- return FALSE;
- }
+ if (id_p) {
+ return id_p->selected;
+ } else {
+ return FALSE;
+ }
}
/**
@@ -308,16 +308,16 @@ wBool_t wListGetItemSelected(
*/
wIndex_t wListGetSelectedCount(
- wList_p b)
+ wList_p b)
{
- wIndex_t selcnt, inx;
+ wIndex_t selcnt, inx;
- for (selcnt=inx=0; inx<b->count; inx++)
- if (wListGetItemSelected(b, inx)) {
- selcnt++;
- }
+ for (selcnt=inx=0; inx<b->count; inx++)
+ if (wListGetItemSelected(b, inx)) {
+ selcnt++;
+ }
- return selcnt;
+ return selcnt;
}
/**
@@ -329,26 +329,26 @@ wIndex_t wListGetSelectedCount(
void wListSelectAll(wList_p bl)
{
- wIndex_t inx;
- GtkTreeSelection *selection;
+ wIndex_t inx;
+ GtkTreeSelection *selection;
- assert(bl != NULL);
- // mark all items selected
- selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(bl->treeView));
- gtk_tree_selection_select_all(selection);
+ assert(bl != NULL);
+ // mark all items selected
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(bl->treeView));
+ gtk_tree_selection_select_all(selection);
- // and synchronize the internal data structures
- wListGetCount(bl);
+ // and synchronize the internal data structures
+ wListGetCount(bl);
- for (inx=0; inx<bl->count; inx++) {
- wListItem_p ldp;
+ for (inx=0; inx<bl->count; inx++) {
+ wListItem_p ldp;
- ldp = wlibListStoreGetContext(bl->listStore, inx);
+ ldp = wlibListStoreGetContext(bl->listStore, inx);
- if (ldp) {
- ldp->selected = TRUE;
- }
- }
+ if (ldp) {
+ ldp->selected = TRUE;
+ }
+ }
}
/**
@@ -363,25 +363,25 @@ void wListSelectAll(wList_p bl)
*/
wBool_t wListSetValues(
- wList_p b,
- wIndex_t row,
- const char * labelStr,
- wIcon_p bm,
- void *itemData)
+ wList_p b,
+ wIndex_t row,
+ const char * labelStr,
+ wIcon_p bm,
+ void *itemData)
{
- assert(b->listStore != NULL);
+ assert(b->listStore != NULL);
- b->recursion++;
+ b->recursion++;
- if (b->type == B_DROPLIST) {
- wDropListSetValues(b, row, labelStr, bm, itemData);
- } else {
- wlibListStoreUpdateValues(b->listStore, row, b->colCnt, (char *)labelStr, bm);
- }
+ if (b->type == B_DROPLIST) {
+ wDropListSetValues(b, row, labelStr, bm, itemData);
+ } else {
+ wlibListStoreUpdateValues(b->listStore, row, b->colCnt, (char *)labelStr, bm);
+ }
- b->recursion--;
- return TRUE;
+ b->recursion--;
+ return TRUE;
}
/**
@@ -391,34 +391,34 @@ wBool_t wListSetValues(
*/
void wListDelete(
- wList_p b,
- wIndex_t inx)
+ wList_p b,
+ wIndex_t inx)
{
- GtkTreeIter iter;
+ GtkTreeIter iter;
- assert(b->listStore != 0);
- assert(b->type != B_DROPLIST);
- b->recursion++;
+ assert(b->listStore != 0);
+ assert(b->type != B_DROPLIST);
+ b->recursion++;
- if (b->type == B_DROPLIST) {
- wNotice("Deleting from dropboxes is not implemented!", "Continue", NULL);
- } else {
- gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(b->listStore),
- &iter,
- NULL,
- inx);
- gtk_list_store_remove(b->listStore, &iter);
+ if (b->type == B_DROPLIST) {
+ wNotice("Deleting from dropboxes is not implemented!", "Continue", NULL);
+ } else {
+ gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(b->listStore),
+ &iter,
+ NULL,
+ inx);
+ gtk_list_store_remove(b->listStore, &iter);
- b->count--;
- }
+ b->count--;
+ }
- if (b->last == inx-1) b->last = -1;
- else if (b->last >= inx) b->last = -1;
+ if (b->last == inx-1) { b->last = -1; }
+ else if (b->last >= inx) { b->last = -1; }
- b->recursion--;
- return;
+ b->recursion--;
+ return;
}
/**
@@ -431,29 +431,29 @@ void wListDelete(
*/
int wListGetColumnWidths(
- wList_p bl,
- int colCnt,
- wWinPix_t * colWidths)
+ wList_p bl,
+ int colCnt,
+ wWinPix_t * colWidths)
{
- int inx;
+ int inx;
- if (bl->type != B_LIST) {
- return 0;
- }
+ if (bl->type != B_LIST) {
+ return 0;
+ }
- if (bl->colWidths == NULL) {
- return 0;
- }
+ if (bl->colWidths == NULL) {
+ return 0;
+ }
- for (inx=0; inx<colCnt; inx++) {
- if (inx < bl->colCnt) {
- colWidths[inx] = bl->colWidths[inx];
- } else {
- colWidths[inx] = 0;
- }
- }
+ for (inx=0; inx<colCnt; inx++) {
+ if (inx < bl->colCnt) {
+ colWidths[inx] = bl->colWidths[inx];
+ } else {
+ colWidths[inx] = 0;
+ }
+ }
- return bl->colCnt;
+ return bl->colCnt;
}
/**
@@ -467,45 +467,45 @@ int wListGetColumnWidths(
*/
wIndex_t wListAddValue(
- wList_p b,
- const char * labelStr,
- wIcon_p bm,
- void * itemData)
+ wList_p b,
+ const char * labelStr,
+ wIcon_p bm,
+ void * itemData)
{
- wListItem_p id_p;
+ wListItem_p id_p;
- assert(b != NULL);
+ assert(b != NULL);
- b->recursion++;
+ b->recursion++;
- id_p = (wListItem_p)g_malloc(sizeof *id_p);
- memset(id_p, 0, sizeof *id_p);
- id_p->itemData = itemData;
- id_p->active = TRUE;
+ id_p = (wListItem_p)g_malloc(sizeof *id_p);
+ memset(id_p, 0, sizeof *id_p);
+ id_p->itemData = itemData;
+ id_p->active = TRUE;
- if (labelStr == NULL) {
- labelStr = "";
- }
+ if (labelStr == NULL) {
+ labelStr = "";
+ }
- id_p->label = strdup(labelStr);
- id_p->listP = b;
+ id_p->label = strdup(labelStr);
+ id_p->listP = b;
- if (b->type == B_DROPLIST) {
- wDropListAddValue(b, (char *)labelStr, id_p);
- } else {
- wlibTreeViewAddRow(b, (char *)labelStr, bm, id_p);
- }
+ if (b->type == B_DROPLIST) {
+ wDropListAddValue(b, (char *)labelStr, id_p);
+ } else {
+ wlibTreeViewAddRow(b, (char *)labelStr, bm, id_p);
+ }
- //free(id_p->label);
+ //free(id_p->label);
- b->count++;
- b->recursion--;
+ b->count++;
+ b->recursion--;
- if (b->count == 1) {
- b->last = 0;
- }
+ if (b->count == 1) {
+ b->last = 0;
+ }
- return b->count-1;
+ return b->count-1;
}
@@ -519,14 +519,14 @@ wIndex_t wListAddValue(
void wListSetSize(wList_p bl, wWinPix_t w, wWinPix_t h)
{
- if (bl->type == B_DROPLIST) {
- gtk_widget_set_size_request(bl->widget, w, -1);
- } else {
- gtk_widget_set_size_request(bl->widget, w, h);
- }
-
- bl->w = w;
- bl->h = h;
+ if (bl->type == B_DROPLIST) {
+ gtk_widget_set_size_request(bl->widget, w, -1);
+ } else {
+ gtk_widget_set_size_request(bl->widget, w, h);
+ }
+
+ bl->w = w;
+ bl->h = h;
}
/**
@@ -540,20 +540,20 @@ void wListSetSize(wList_p bl, wWinPix_t w, wWinPix_t h)
*/
wList_p wComboListCreate(
- wWin_p parent, /* Parent window */
- wWinPix_t x, /* X-position */
- wWinPix_t y, /* Y-position */
- const char * helpStr, /* Help string */
- const char * labelStr, /* Label */
- long option, /* Options */
- long number, /* Number of displayed list entries */
- wWinPix_t width, /* Width */
- long *valueP, /* Selected index */
- wListCallBack_p action, /* Callback */
- void *data) /* Context */
+ wWin_p parent, /* Parent window */
+ wWinPix_t x, /* X-position */
+ wWinPix_t y, /* Y-position */
+ const char * helpStr, /* Help string */
+ const char * labelStr, /* Label */
+ long option, /* Options */
+ long number, /* Number of displayed list entries */
+ wWinPix_t width, /* Width */
+ long *valueP, /* Selected index */
+ wListCallBack_p action, /* Callback */
+ void *data) /* Context */
{
- wNotice("ComboLists are not implemented!", "Abort", NULL);
- abort();
+ wNotice("ComboLists are not implemented!", "Abort", NULL);
+ abort();
}
diff --git a/app/wlib/gtklib/liststore.c b/app/wlib/gtklib/liststore.c
index 088bf33..b1b0f8a 100644
--- a/app/wlib/gtklib/liststore.c
+++ b/app/wlib/gtklib/liststore.c
@@ -47,25 +47,25 @@
*/
wListItem_p wlibListItemGet(
- GtkListStore *ls,
- wIndex_t inx,
- GList ** childR)
+ GtkListStore *ls,
+ wIndex_t inx,
+ GList ** childR)
{
- wListItem_p id_p;
+ wListItem_p id_p;
- assert(ls != NULL);
+ assert(ls != NULL);
- if (childR) {
- *childR = NULL;
- }
+ if (childR) {
+ *childR = NULL;
+ }
- if (inx < 0) {
- return NULL;
- }
+ if (inx < 0) {
+ return NULL;
+ }
- id_p = wlibListStoreGetContext(ls, inx);
+ id_p = wlibListStoreGetContext(ls, inx);
- return id_p;
+ return id_p;
}
/**
@@ -79,33 +79,33 @@ wListItem_p wlibListItemGet(
void *
wlibListStoreGetContext(GtkListStore *ls, int inx)
{
- GtkTreeIter iter;
- gchar *string = NULL;
- gboolean result;
- gint childs;
-
- childs = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(ls),
- NULL);
-
- if (inx < childs) {
- result = gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(ls),
- &iter,
- NULL,
- inx);
-
- if (result) {
- gtk_tree_model_get(GTK_TREE_MODEL(ls),
- &iter,
- LISTCOL_DATA,
- &string,
- -1);
- } else {
- printf("Invalid index %d for list!\n", inx);
-
- }
- }
-
- return (string);
+ GtkTreeIter iter;
+ gchar *string = NULL;
+ gboolean result;
+ gint childs;
+
+ childs = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(ls),
+ NULL);
+
+ if (inx < childs) {
+ result = gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(ls),
+ &iter,
+ NULL,
+ inx);
+
+ if (result) {
+ gtk_tree_model_get(GTK_TREE_MODEL(ls),
+ &iter,
+ LISTCOL_DATA,
+ &string,
+ -1);
+ } else {
+ printf("Invalid index %d for list!\n", inx);
+
+ }
+ }
+
+ return (string);
}
@@ -119,21 +119,22 @@ wlibListStoreGetContext(GtkListStore *ls, int inx)
void
wlibListStoreClear(GtkListStore *listStore)
{
- wListItem_p id_p;
- int i = 0;
+ wListItem_p id_p;
+ int i = 0;
- assert(listStore != NULL);
+ assert(listStore != NULL);
- id_p = wlibListStoreGetContext(listStore, i++);
+ id_p = wlibListStoreGetContext(listStore, i++);
- while (id_p) {
- if (id_p->label)
- g_free(id_p->label);
- g_free(id_p);
- id_p = wlibListStoreGetContext(listStore, i++);
- }
+ while (id_p) {
+ if (id_p->label) {
+ g_free(id_p->label);
+ }
+ g_free(id_p);
+ id_p = wlibListStoreGetContext(listStore, i++);
+ }
- gtk_list_store_clear(listStore);
+ gtk_list_store_clear(listStore);
}
/**
@@ -148,23 +149,23 @@ wlibListStoreClear(GtkListStore *listStore)
GtkListStore *
wlibNewListStore(int colCnt)
{
- GtkListStore *ls;
- GType *colTypes;
- int i;
+ GtkListStore *ls;
+ GType *colTypes;
+ int i;
- /* create the list store, using strings for all columns */
- colTypes = g_malloc(sizeof(GType) * (colCnt + LISTCOL_TEXT));
- colTypes[ LISTCOL_BITMAP ] = GDK_TYPE_PIXBUF;
- colTypes[ LISTCOL_DATA ] = G_TYPE_POINTER;
+ /* create the list store, using strings for all columns */
+ colTypes = g_malloc(sizeof(GType) * (colCnt + LISTCOL_TEXT));
+ colTypes[ LISTCOL_BITMAP ] = GDK_TYPE_PIXBUF;
+ colTypes[ LISTCOL_DATA ] = G_TYPE_POINTER;
- for (i = 0; i < colCnt; i++) {
- colTypes[ LISTCOL_TEXT + i ] = G_TYPE_STRING;
- }
+ for (i = 0; i < colCnt; i++) {
+ colTypes[ LISTCOL_TEXT + i ] = G_TYPE_STRING;
+ }
- ls = gtk_list_store_newv(colCnt + LISTCOL_TEXT, colTypes);
- g_free(colTypes);
+ ls = gtk_list_store_newv(colCnt + LISTCOL_TEXT, colTypes);
+ g_free(colTypes);
- return (ls);
+ return (ls);
}
/**
@@ -179,26 +180,26 @@ wlibNewListStore(int colCnt)
static int
wlibListStoreUpdateIter(GtkListStore *ls, GtkTreeIter *iter, char *labels)
{
- char *convertedLabels;
- char *text;
- char *start;
- int current = 0;
-
- convertedLabels = strdup(wlibConvertInput(labels));
- start = convertedLabels;
-
- while ((text = strchr(start, '\t')) != NULL) {
- *text = '\0';
- gtk_list_store_set(ls, iter, LISTCOL_TEXT + current, start, -1);
- start = text + 1;
- current++;
- }
-
- /* add the last piece of the string */
- gtk_list_store_set(ls, iter, LISTCOL_TEXT + current, start, -1);
-
- free(convertedLabels);
- return (current+1);
+ char *convertedLabels;
+ char *text;
+ char *start;
+ int current = 0;
+
+ convertedLabels = strdup(wlibConvertInput(labels));
+ start = convertedLabels;
+
+ while ((text = strchr(start, '\t')) != NULL) {
+ *text = '\0';
+ gtk_list_store_set(ls, iter, LISTCOL_TEXT + current, start, -1);
+ start = text + 1;
+ current++;
+ }
+
+ /* add the last piece of the string */
+ gtk_list_store_set(ls, iter, LISTCOL_TEXT + current, start, -1);
+
+ free(convertedLabels);
+ return (current+1);
}
/**
@@ -213,9 +214,9 @@ wlibListStoreUpdateIter(GtkListStore *ls, GtkTreeIter *iter, char *labels)
void
wlibListStoreSetPixbuf(GtkListStore *ls, GtkTreeIter *iter, GdkPixbuf *pixbuf)
{
- gtk_list_store_set(ls, iter, LISTCOL_BITMAP, pixbuf, -1);
- g_object_ref_sink(pixbuf);
- g_object_unref(pixbuf);
+ gtk_list_store_set(ls, iter, LISTCOL_BITMAP, pixbuf, -1);
+ g_object_ref_sink(pixbuf);
+ g_object_unref(pixbuf);
}
/**
* Add a row to the list store
@@ -230,19 +231,19 @@ int
wlibListStoreAddData(GtkListStore *ls, GdkPixbuf *pixbuf, int cols,
wListItem_p id)
{
- GtkTreeIter iter;
- int count;
+ GtkTreeIter iter;
+ int count;
- gtk_list_store_append(ls, &iter);
- gtk_list_store_set(ls, &iter, LISTCOL_DATA, id, -1);
+ gtk_list_store_append(ls, &iter);
+ gtk_list_store_set(ls, &iter, LISTCOL_DATA, id, -1);
- if (pixbuf) {
- wlibListStoreSetPixbuf(ls, &iter, pixbuf);
- }
+ if (pixbuf) {
+ wlibListStoreSetPixbuf(ls, &iter, pixbuf);
+ }
- count = wlibListStoreUpdateIter(ls, &iter, (char *)id->label);
+ count = wlibListStoreUpdateIter(ls, &iter, (char *)id->label);
- return (count);
+ return (count);
}
/**
@@ -261,23 +262,23 @@ int
wlibListStoreUpdateValues(GtkListStore *ls, int row, int cols, char *labels,
wIcon_p bm)
{
- GtkTreeIter iter;
- int count;
+ GtkTreeIter iter;
+ int count;
- gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(ls),
- &iter,
- NULL,
- row);
+ gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(ls),
+ &iter,
+ NULL,
+ row);
- count = wlibListStoreUpdateIter(ls, &iter, labels);
+ count = wlibListStoreUpdateIter(ls, &iter, labels);
- if (bm) {
- GdkPixbuf *pixbuf;
+ if (bm) {
+ GdkPixbuf *pixbuf;
- pixbuf = wlibMakePixbuf(bm);
- wlibListStoreSetPixbuf(ls, &iter, pixbuf);
- }
+ pixbuf = wlibMakePixbuf(bm);
+ wlibListStoreSetPixbuf(ls, &iter, pixbuf);
+ }
- return (count);
+ return (count);
}
diff --git a/app/wlib/gtklib/main.c b/app/wlib/gtklib/main.c
index 470f17b..7022a0a 100644
--- a/app/wlib/gtklib/main.c
+++ b/app/wlib/gtklib/main.c
@@ -18,7 +18,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 <stdio.h>
@@ -46,10 +46,10 @@ char *wExecutableName;
* Initialize the application name for later use
*
* \param _appName IN Name of application
- * \return
+ * \return
*/
-
-void
+
+void
wInitAppName(char *_appName)
{
appName = g_strdup( _appName );
@@ -59,7 +59,7 @@ char *
wlibGetAppName()
{
return( appName );
-}
+}
/*
*******************************************************************************
@@ -76,17 +76,19 @@ int main( int argc, char *argv[] )
wWin_p win;
const char *ld;
- if ( getenv( "GTKLIB_NOLOCALE" ) == 0 )
+ if ( getenv( "GTKLIB_NOLOCALE" ) == 0 ) {
setlocale( LC_ALL, "en_US" );
+ }
gtk_init( &argc, &argv );
- if ((win=wMain( argc, argv )) == NULL)
+ if ((win=wMain( argc, argv )) == NULL) {
exit(1);
- wExecutableName = argv[ 0 ];
+ }
+ wExecutableName = argv[ 0 ];
ld = wGetAppLibDir();
-
+
#ifdef WINDOWS
-
+
#else
// set up help search path on unix boxes
if (ld != NULL) {
@@ -94,14 +96,16 @@ int main( int argc, char *argv[] )
const char *hp;
sprintf( buff, "HELPPATH=/usr/lib/help:%s:", ld );
- if ( (hp = getenv("HELPPATH")) != NULL )
+ if ( (hp = getenv("HELPPATH")) != NULL ) {
strcat( buff, hp );
+ }
putenv( buff );
}
#endif
-
- if (!win->shown)
+
+ if (!win->shown) {
wWinShow( win, TRUE );
+ }
gtk_main();
exit(0);
diff --git a/app/wlib/gtklib/menu.c b/app/wlib/gtklib/menu.c
index 754f88f..8646f15 100644
--- a/app/wlib/gtklib/menu.c
+++ b/app/wlib/gtklib/menu.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 <stdio.h>
@@ -50,28 +50,29 @@
typedef enum { M_MENU, M_SEPARATOR, M_PUSH, M_LIST, M_LISTITEM, M_TOGGLE, M_RADIO } mtype_e;
typedef enum { MM_BUTT, MM_MENU, MM_BAR, MM_POPUP } mmtype_e;
-typedef struct{ mtype_e mtype; /**< menu entry type */
- GtkWidget *menu_item;
- wMenu_p parentMenu;
- int recursion; /**< recursion counter */
- } MOBJ_COMMON; /**< menu item specific data */
-
-
+typedef struct {
+ mtype_e mtype; /**< menu entry type */
+ GtkWidget *menu_item;
+ wMenu_p parentMenu;
+ int recursion; /**< recursion counter */
+} MOBJ_COMMON; /**< menu item specific data */
+
+
struct wMenuItem_t {
WOBJ_COMMON
MOBJ_COMMON m;
- };
+};
typedef struct wMenuItem_t * wMenuItem_p;
-// a few macros to make access to members easier
-//#define PTR2M( ptr ) ((ptr)->m)
-#define MMENUITEM( ptr ) (((ptr)->m).menu_item)
+// a few macros to make access to members easier
+//#define PTR2M( ptr ) ((ptr)->m)
+#define MMENUITEM( ptr ) (((ptr)->m).menu_item)
#define MPARENT( ptr ) (((ptr)->m).parentMenu)
#define MITEMTYPE( ptr ) (((ptr)->m).mtype)
-#define MRECURSION( ptr ) (((ptr)->m).recursion)
-
-
+#define MRECURSION( ptr ) (((ptr)->m).recursion)
+
+
struct wMenu_t {
WOBJ_COMMON
MOBJ_COMMON m;
@@ -83,21 +84,21 @@ struct wMenu_t {
void * traceData;
GtkLabel * labelG;
GtkWidget * imageG;
- };
+};
struct wMenuPush_t {
WOBJ_COMMON
MOBJ_COMMON m;
wMenuCallBack_p action;
wBool_t enabled;
- };
+};
struct wMenuRadio_t {
WOBJ_COMMON
MOBJ_COMMON m;
wMenuCallBack_p action;
wBool_t enabled;
- };
+};
struct wMenuList_t {
WOBJ_COMMON
@@ -105,44 +106,45 @@ struct wMenuList_t {
int max;
int count;
wMenuListCallBack_p action;
- };
+};
struct wMenuListItem_t {
WOBJ_COMMON
MOBJ_COMMON m;
wMenuList_p mlist;
- };
+};
typedef struct wMenuListItem_t * wMenuListItem_p;
-
+
struct wMenuToggle_t {
WOBJ_COMMON
MOBJ_COMMON m;
wMenuCallBack_p action;
wBool_t enabled;
wBool_t set;
- };
+};
/*-----------------------------------------------------------------*/
-
+
/**
* Handle activate event for menu items.
*
* \param widget IN widget that emitted the signal
* \param value IN application data
- * \return
+ * \return
*/
-
+
static void pushMenuItem(
- GtkWidget * widget,
- gpointer value )
+ GtkWidget * widget,
+ gpointer value )
{
wMenuItem_p m = (wMenuItem_p)value;
wMenuToggle_p mt;
- if (MRECURSION( m ))
+ if (MRECURSION( m )) {
return;
+ }
switch MITEMTYPE( m ) {
case M_PUSH:
@@ -155,9 +157,10 @@ static void pushMenuItem(
break;
case M_RADIO:
/* NOTE: action is only called when radio button is activated, not when deactivated */
- if( gtk_check_menu_item_get_active((GtkCheckMenuItem *)widget ) == TRUE )
+ if( gtk_check_menu_item_get_active((GtkCheckMenuItem *)widget ) == TRUE ) {
((wMenuRadio_p)m)->action( ((wMenuRadio_p)m)->data );
- break;
+ }
+ break;
case M_MENU:
return;
default:
@@ -167,57 +170,63 @@ static void pushMenuItem(
if( MPARENT(m)->traceFunc ) {
MPARENT(m)->traceFunc( MPARENT( m ), m->labelStr, MPARENT(m)->traceData );
}
-}
+}
/**
* Create a new menu element, add to the parent menu and to help
*
* \param m IN parent menu
* \param mtype IN type of new entry
- * \param helpStr IN help topic
+ * \param helpStr IN help topic
* \param labelStr IN display label
* \param size IN size of additional data?
* \return the newly created menu element
*/
static wMenuItem_p createMenuItem(
- wMenu_p m,
- mtype_e mtype,
- const char * helpStr,
- const char * labelStr,
- int size )
+ wMenu_p m,
+ mtype_e mtype,
+ const char * helpStr,
+ const char * labelStr,
+ int size )
{
wMenuItem_p mi;
mi = (wMenuItem_p)wlibAlloc( NULL, B_MENUITEM, 0, 0, labelStr, size, NULL );
MITEMTYPE( mi )= mtype;
-
+
switch ( mtype ) {
case M_LIST:
- MMENUITEM( mi ) = gtk_menu_item_new_with_mnemonic(wlibConvertInput(mi->labelStr)); // NULL; //PTR2M(m).menu_item
+ MMENUITEM( mi ) = gtk_menu_item_new_with_mnemonic(wlibConvertInput(
+ mi->labelStr)); // NULL; //PTR2M(m).menu_item
break;
case M_SEPARATOR:
MMENUITEM( mi ) = gtk_separator_menu_item_new();
break;
case M_TOGGLE:
- MMENUITEM( mi ) = gtk_check_menu_item_new_with_mnemonic(wlibConvertInput(mi->labelStr));
+ MMENUITEM( mi ) = gtk_check_menu_item_new_with_mnemonic(wlibConvertInput(
+ mi->labelStr));
break;
case M_RADIO:
- MMENUITEM( mi ) = gtk_radio_menu_item_new_with_mnemonic(m->radioGroup, wlibConvertInput(mi->labelStr));
- m->radioGroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (MMENUITEM( mi )));
- break;
+ MMENUITEM( mi ) = gtk_radio_menu_item_new_with_mnemonic(m->radioGroup,
+ wlibConvertInput(mi->labelStr));
+ m->radioGroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (MMENUITEM(
+ mi )));
+ break;
default:
- MMENUITEM( mi ) = gtk_menu_item_new_with_mnemonic(wlibConvertInput(mi->labelStr));
+ MMENUITEM( mi ) = gtk_menu_item_new_with_mnemonic(wlibConvertInput(
+ mi->labelStr));
break;
}
if (MMENUITEM( mi )) {
- if (m)
+ if (m) {
gtk_menu_shell_append( (GtkMenuShell *)(m->menu), MMENUITEM( mi ) );
+ }
g_signal_connect( GTK_OBJECT(MMENUITEM( mi )), "activate",
- G_CALLBACK(pushMenuItem), mi );
- gtk_widget_show(MMENUITEM( mi ));
+ G_CALLBACK(pushMenuItem), mi );
+ gtk_widget_show(MMENUITEM( mi ));
}
-
+
// this is a link list of all menu items belonging to a specific menu
// is used in automatic processing (macro)??
if (m) {
@@ -229,8 +238,8 @@ static wMenuItem_p createMenuItem(
m->last = mi;
}
mi->next = NULL;
-
-
+
+
if (helpStr != NULL) {
wlibAddHelpString( MMENUITEM( mi ), helpStr );
}
@@ -240,13 +249,14 @@ static wMenuItem_p createMenuItem(
/**
* Add a accelerator key to a widget
- *
+ *
* @param w IN unused(?)
* @param menu IN unused(?)
* @param menu_item IN owning widget
* @param acclKey IN the accelerator key
*/
-static void setAcclKey( wWin_p w, GtkWidget * menu, GtkWidget * menu_item, int acclKey )
+static void setAcclKey( wWin_p w, GtkWidget * menu, GtkWidget * menu_item,
+ int acclKey )
{
int mask;
static GtkAccelGroup * accel_alpha_group = NULL;
@@ -267,10 +277,10 @@ static void setAcclKey( wWin_p w, GtkWidget * menu, GtkWidget * menu_item, int a
gtk_window_add_accel_group(GTK_WINDOW(gtkMainW->gtkwin), accel_nonalpha_group );
gtk_accelerator_set_default_mod_mask( oldmods );
}
-
+
mask = 0;
if (acclKey) {
-
+
if (acclKey&WALT) {
mask |= GDK_MOD1_MASK;
}
@@ -305,38 +315,38 @@ static void setAcclKey( wWin_p w, GtkWidget * menu, GtkWidget * menu_item, int a
mask |= GDK_CONTROL_MASK;
}
gtk_widget_add_accelerator( menu_item, "activate",
- (isalpha(acclKey&0xFF)?accel_alpha_group:accel_nonalpha_group),
- toupper(acclKey&0xFF), mask, GTK_ACCEL_VISIBLE|GTK_ACCEL_LOCKED );
+ (isalpha(acclKey&0xFF)?accel_alpha_group:accel_nonalpha_group),
+ toupper(acclKey&0xFF), mask, GTK_ACCEL_VISIBLE|GTK_ACCEL_LOCKED );
}
}
/*-----------------------------------------------------------------*/
/**
- * Create a radio button as a menu entry
+ * Create a radio button as a menu entry
*
* \param m IN menu to be extended
* \param helpStr IN reference into help
* \param labelStr IN text for entry
* \param acclKey IN accelerator key to add
- * \param action IN callback function
+ * \param action IN callback function
* \param data IN application data
* \param helpStr IN
* \return menu entry
*/
wMenuRadio_p wMenuRadioCreate(
- wMenu_p m,
- const char * helpStr,
- const char * labelStr,
- long acclKey,
- wMenuCallBack_p action,
- void *data )
+ wMenu_p m,
+ const char * helpStr,
+ const char * labelStr,
+ long acclKey,
+ wMenuCallBack_p action,
+ void *data )
{
wMenuRadio_p mi;
mi = (wMenuRadio_p)createMenuItem( m, M_RADIO, helpStr, labelStr, sizeof *mi );
//~ if (m->mmtype == MM_POPUP && !testMenuPopup)
- //~ return mi;
+ //~ return mi;
setAcclKey( m->parent, m->menu, MMENUITEM( mi ), acclKey );
mi->action = action;
mi->data = data;
@@ -351,37 +361,38 @@ wMenuRadio_p wMenuRadioCreate(
* \return
*/
-void wMenuRadioSetActive(
- wMenuRadio_p mi )
+void wMenuRadioSetActive(
+ wMenuRadio_p mi )
{
- gtk_check_menu_item_set_active( (GtkCheckMenuItem *)MMENUITEM(mi), TRUE );
-}
+ gtk_check_menu_item_set_active( (GtkCheckMenuItem *)MMENUITEM(mi), TRUE );
+}
/*-----------------------------------------------------------------*/
/**
- * Create a menu entry
+ * Create a menu entry
*
* \param m IN menu to be extended
* \param helpStr IN reference into help
* \param labelStr IN text for entry
* \param acclKey IN acceleratoor key to add
- * \param action IN callback function
+ * \param action IN callback function
* \param data IN application data
* \return menu entry
*/
wMenuPush_p wMenuPushCreate(
- wMenu_p m,
- const char * helpStr,
- const char * labelStr,
- long acclKey,
- wMenuCallBack_p action,
- void *data )
+ wMenu_p m,
+ const char * helpStr,
+ const char * labelStr,
+ long acclKey,
+ wMenuCallBack_p action,
+ void *data )
{
wMenuPush_p mi;
- mi = (wMenuPush_p)createMenuItem( m, M_PUSH, helpStr, labelStr, sizeof( struct wMenuPush_t ));
+ mi = (wMenuPush_p)createMenuItem( m, M_PUSH, helpStr, labelStr,
+ sizeof( struct wMenuPush_t ));
setAcclKey( m->parent, m->menu, MMENUITEM( mi ), acclKey );
@@ -395,13 +406,13 @@ wMenuPush_p wMenuPushCreate(
* Enable menu entry
*
* \param mi IN menu entry
- * \param enable IN new state
+ * \param enable IN new state
* \return
*/
void wMenuPushEnable(
- wMenuPush_p mi,
- wBool_t enable )
+ wMenuPush_p mi,
+ wBool_t enable )
{
mi->enabled = enable;
gtk_widget_set_sensitive( GTK_WIDGET(MMENUITEM( mi )), enable );
@@ -419,12 +430,13 @@ void wMenuPushEnable(
*/
wMenu_p wMenuMenuCreate(
- wMenu_p m,
- const char * helpStr,
- const char * labelStr )
+ wMenu_p m,
+ const char * helpStr,
+ const char * labelStr )
{
wMenu_p mi;
- mi = (wMenu_p)createMenuItem( m, M_MENU, helpStr, labelStr, sizeof( struct wMenu_t ));
+ mi = (wMenu_p)createMenuItem( m, M_MENU, helpStr, labelStr,
+ sizeof( struct wMenu_t ));
mi->mmtype = MM_MENU;
mi->menu = gtk_menu_new();
@@ -442,7 +454,7 @@ wMenu_p wMenuMenuCreate(
*/
void wMenuSeparatorCreate(
- wMenu_p m )
+ wMenu_p m )
{
createMenuItem( m, M_SEPARATOR, NULL, "", sizeof( struct wMenuItem_t ));
}
@@ -464,46 +476,48 @@ int getMlistOrigin( wMenuList_p ml, GList **pChildren )
int count = 0;
int found = -1;
GtkWidget *mitem = MMENUITEM( ml );
-
+
*pChildren = gtk_container_get_children( GTK_CONTAINER( MPARENT( ml )->menu ));
- if( !*pChildren )
+ if( !*pChildren ) {
return( -1 );
-
+ }
+
while( (mi = g_list_nth_data( *pChildren, count ))) {
if( mi == mitem ) {
found = TRUE;
break;
- }
- else {
+ } else {
count++;
- }
+ }
}
-
- if( found )
+
+ if( found ) {
return( count );
- else
+ } else {
return( -1 );
+ }
}
/**
- * Signal handler for clicking onto a menu list item.
+ * Signal handler for clicking onto a menu list item.
* Parameters are the GtkWidget as expected and the pointer to the MenuListItem
*
* \param widget IN the GtkWidget
- * \param value IN the menu list item
+ * \param value IN the menu list item
* \return
*/
static void pushMenuList(
- GtkWidget * widget,
- gpointer value )
+ GtkWidget * widget,
+ gpointer value )
{
// pointer to the list item
wMenuListItem_p ml = (wMenuListItem_p)value;
- if (MRECURSION( ml ))
+ if (MRECURSION( ml )) {
return;
-
+ }
+
if (ml->mlist->count <= 0) {
// this should never happen
fprintf( stderr, "pushMenuItem: empty list\n" );
@@ -514,31 +528,32 @@ static void pushMenuList(
const char * itemLabel;
itemLabel = gtk_menu_item_get_label( GTK_MENU_ITEM( widget ));
-
- ml->mlist->action( 0, itemLabel, ml->data );
+
+ ml->mlist->action( 0, itemLabel, ml->data );
return;
}
fprintf( stderr, "pushMenuItem: item (%lx) not found\n", (long)widget );
}
/**
- * Create a list menu entry
+ * Create a list menu entry
*
* \param m IN menu to be extended
* \param helpStr IN reference into help
* \param max IN maximum number of elements
- * \param action IN callback function
+ * \param action IN callback function
* \return menu entry
*/
wMenuList_p wMenuListCreate(
- wMenu_p m,
- const char * helpStr,
- int max,
- wMenuListCallBack_p action )
+ wMenu_p m,
+ const char * helpStr,
+ int max,
+ wMenuListCallBack_p action )
{
wMenuList_p mi;
- mi = (wMenuList_p)createMenuItem( m, M_LIST, NULL, _("<Empty List>"), sizeof( struct wMenuList_t ));
+ mi = (wMenuList_p)createMenuItem( m, M_LIST, NULL, _("<Empty List>"),
+ sizeof( struct wMenuList_t ));
gtk_widget_set_sensitive( GTK_WIDGET(MMENUITEM( mi )), FALSE );
mi->next = NULL;
mi->count = 0;
@@ -551,90 +566,96 @@ wMenuList_p wMenuListCreate(
/**
* Add a new item to a list of menu entries
- * The placeholder for the list is looked up. Then the new item is added immediately
+ * The placeholder for the list is looked up. Then the new item is added immediately
* behind it. In case the maximum number of items is reached the last item is removed.
*
* \param ml IN handle for the menu list - the placeholder item
* \param index IN position of new menu item
- * \param labelStr IN the menu label for the new item
+ * \param labelStr IN the menu label for the new item
* \param data IN application data for the new item
- * \return
+ * \return
*/
void wMenuListAdd(
- wMenuList_p ml,
- int index,
- const char * labelStr,
- const void * data )
+ wMenuList_p ml,
+ int index,
+ const char * labelStr,
+ const void * data )
{
int i = 0;
GList * children;
i = getMlistOrigin( ml, &children );
-
+
if( i > -1 ) {
wMenuListItem_p mi;
// we're adding an item, so hide the default placeholder
gtk_widget_hide( MMENUITEM( ml ));
-
+
// delete an earlier entry with the same label
- wMenuListDelete( ml, labelStr );
+ wMenuListDelete( ml, labelStr );
// a new item
ml->count ++;
-
+
// is there a maximum number of items set and reached with the new item?
if(( ml->max != -1 ) && ( ml->count > ml-> max )) {
wMenuListItem_p mold;
GtkWidget * item;
-
+
// get the last item in the list
item = g_list_nth_data( children, i + ml->max );
// get the pointer to the data structure
mold = g_object_get_data( G_OBJECT( item ), WLISTITEM );
// kill the menu entry
gtk_widget_destroy( item );
- // free the data
+ // free the data
free( (void *)mold->labelStr );
free( (void *)mold );
ml->count--;
- }
-
+ }
+
// create the new menu item and initialize the data fields
- mi = (wMenuListItem_p)wlibAlloc( NULL, B_MENUITEM, 0, 0, labelStr, sizeof( struct wMenuListItem_t ), NULL );
+ mi = (wMenuListItem_p)wlibAlloc( NULL, B_MENUITEM, 0, 0, labelStr,
+ sizeof( struct wMenuListItem_t ), NULL );
MITEMTYPE( mi ) = M_LISTITEM;
MMENUITEM( mi ) = gtk_menu_item_new_with_label(wlibConvertInput(mi->labelStr));
mi->data = (void *)data;
mi->mlist = ml;
g_object_set_data( G_OBJECT(MMENUITEM( mi )), WLISTITEM, mi );
-
+
// add the item to the menu
- if ( index < 0 )
+ if ( index < 0 ) {
index = 0;
- if ( index >= ml->count )
+ }
+ if ( index >= ml->count ) {
index = ml->count - 1;
- gtk_menu_shell_insert((GtkMenuShell *)(MPARENT( ml )->menu), MMENUITEM( mi ), i + index + 1 );
- g_signal_connect( GTK_OBJECT(MMENUITEM( mi )), "activate", G_CALLBACK(pushMenuList), mi );
-
+ }
+ gtk_menu_shell_insert((GtkMenuShell *)(MPARENT( ml )->menu), MMENUITEM( mi ),
+ i + index + 1 );
+ g_signal_connect( GTK_OBJECT(MMENUITEM( mi )), "activate",
+ G_CALLBACK(pushMenuList), mi );
+
gtk_widget_show(MMENUITEM( mi ));
}
-
- if( children )
+
+ if( children ) {
g_list_free( children );
+ }
}
/**
* Remove the menu entry identified by a given label.
*
* \param ml IN menu list
- * \param labelStr IN label string of item
+ * \param labelStr IN label string of item
*/
void wMenuListDelete(
- wMenuList_p ml,
- const char * labelStr )
+ wMenuList_p ml,
+ const char * labelStr )
{
int i;
int found = FALSE;
@@ -642,30 +663,31 @@ void wMenuListDelete(
// find the placeholder for the list in the menu
i = getMlistOrigin( ml, &children );
-
+
if( i > -1 ) {
int origin;
- GtkWidget * item;
+ GtkWidget * item;
char * labelStrConverted;
-
+
// starting from the placeholder, find the menu item with the correct text
found = FALSE;
labelStrConverted = wlibConvertInput( labelStr );
origin = i;
-
+
// get menu item
// get label of item
// compare items
// if identical, leave loop
while( i <= origin + ml->count && !found ) {
const char * itemLabel;
-
+
item = g_list_nth_data( children, i );
itemLabel = gtk_menu_item_get_label( GTK_MENU_ITEM( item ));
- if( !g_utf8_collate (itemLabel, labelStrConverted ))
+ if( !g_utf8_collate (itemLabel, labelStrConverted )) {
found = TRUE;
- else
+ } else {
i++;
+ }
}
if( found ) {
wMenuListItem_p mold;
@@ -673,45 +695,47 @@ void wMenuListDelete(
mold = g_object_get_data( G_OBJECT( item ), WLISTITEM );
// kill the menu entry
gtk_widget_destroy( item );
- // free the data
+ // free the data
free( (void *)mold->labelStr );
free( (void *)mold );
- ml->count--;
+ ml->count--;
}
- }
-
- if( children )
+ }
+
+ if( children ) {
g_list_free( children );
+ }
}
/**
* Get the label and the application data of a specific menu list item
*
- * \param ml IN menu list
+ * \param ml IN menu list
* \param index IN item within list
* \param data OUT application data
* \return item label
*/
-const char *
+const char *
wMenuListGet( wMenuList_p ml, int index, void ** data )
{
int i;
GList * children;
const char * itemLabel = NULL;
-
+
// check whether index is in range, if not return immediately
if ( index >= ml->count || ml->count <= 0 ) {
- if (data)
+ if (data) {
*data = NULL;
+ }
return NULL;
}
-
+
// find the placeholder for the list in the menu
i = getMlistOrigin( ml, &children );
-
+
if( i > -1 ) {
GtkWidget * item;
wMenuListItem_p mold;
@@ -721,10 +745,11 @@ wMenuListGet( wMenuList_p ml, int index, void ** data )
mold = g_object_get_data( G_OBJECT( GTK_MENU_ITEM( item ) ), WLISTITEM );
*data = mold->data;
}
-
- if( children )
+
+ if( children ) {
g_list_free( children );
-
+ }
+
return itemLabel;
}
@@ -735,16 +760,17 @@ wMenuListGet( wMenuList_p ml, int index, void ** data )
*/
void wMenuListClear(
- wMenuList_p ml )
+ wMenuList_p ml )
{
int origin;
GList * children;
- if (ml->count == 0)
+ if (ml->count == 0) {
return;
+ }
origin = getMlistOrigin( ml, &children );
-
+
if( origin > -1 ) {
int i;
@@ -752,23 +778,24 @@ void wMenuListClear(
while( i < origin + ml->count ) {
wMenuListItem_p mold;
GtkWidget * item;
-
+
item = g_list_nth_data( children, i + 1 );
mold = g_object_get_data( G_OBJECT( item ), WLISTITEM );
// kill the menu entry
gtk_widget_destroy( item );
- // free the data
+ // free the data
free( (void *)mold->labelStr );
free( (void *)mold );
i++;
- }
- }
+ }
+ }
ml->count = 0;
gtk_widget_show( MMENUITEM( ml ));
-
- if( children )
+
+ if( children ) {
g_list_free( children );
+ }
}
/*-----------------------------------------------------------------*/
/**
@@ -779,30 +806,31 @@ void wMenuListClear(
* \param labelStr IN text for entry
* \param acclKey IN acceleratoor key to add
* \param set IN initial state
- * \param action IN callback function
+ * \param action IN callback function
* \param data IN application data
* \return menu entry
*/
wMenuToggle_p wMenuToggleCreate(
- wMenu_p m,
- const char * helpStr,
- const char * labelStr,
- long acclKey,
- wBool_t set,
- wMenuCallBack_p action,
- void * data )
+ wMenu_p m,
+ const char * helpStr,
+ const char * labelStr,
+ long acclKey,
+ wBool_t set,
+ wMenuCallBack_p action,
+ void * data )
{
wMenuToggle_p mt;
- mt = (wMenuToggle_p)createMenuItem( m, M_TOGGLE, helpStr, labelStr, sizeof( struct wMenuToggle_t ));
+ mt = (wMenuToggle_p)createMenuItem( m, M_TOGGLE, helpStr, labelStr,
+ sizeof( struct wMenuToggle_t ));
setAcclKey( m->parent, m->menu, MMENUITEM( mt ), acclKey );
mt->action = action;
mt->data = data;
mt->enabled = TRUE;
MPARENT( mt ) = m;
wMenuToggleSet( mt, set );
-
+
return mt;
}
@@ -814,7 +842,7 @@ wMenuToggle_p wMenuToggleCreate(
*/
wBool_t wMenuToggleGet(
- wMenuToggle_p mt )
+ wMenuToggle_p mt )
{
return mt->set;
}
@@ -828,11 +856,11 @@ wBool_t wMenuToggleGet(
*/
wBool_t wMenuToggleSet(
- wMenuToggle_p mt,
- wBool_t set )
+ wMenuToggle_p mt,
+ wBool_t set )
{
wBool_t rc;
- if (mt==NULL) return 0;
+ if (mt==NULL) { return 0; }
MRECURSION( mt )++;
gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM(MMENUITEM( mt )), set );
MRECURSION( mt )--;
@@ -845,13 +873,13 @@ wBool_t wMenuToggleSet(
* Enable menu entry containing a check box
*
* \param mi IN menu entry
- * \param enable IN new state
+ * \param enable IN new state
* \return
*/
void wMenuToggleEnable(
- wMenuToggle_p mt,
- wBool_t enable )
+ wMenuToggle_p mt,
+ wBool_t enable )
{
mt->enabled = enable;
}
@@ -860,29 +888,30 @@ void wMenuToggleEnable(
/*-----------------------------------------------------------------*/
/**
- * Set the text for a menu
+ * Set the text for a menu
*
* \param m IN menu entry
* \param labelStr IN new text
* \return
*/
-void wMenuSetLabel( wMenu_p m, const char * labelStr) {
+void wMenuSetLabel( wMenu_p m, const char * labelStr)
+{
wlibSetLabel( m->widget, m->option, labelStr, &m->labelG, &m->imageG );
}
/**
- * Signal handler for menu items. Parameters are the GtkWidget as
+ * Signal handler for menu items. Parameters are the GtkWidget as
* expected and the pointer to the MenuListItem
*
* \param widget IN the GtkWidget
- * \param value IN the menu list item
+ * \param value IN the menu list item
* \return
*/
static gint pushMenu(
- GtkWidget * widget,
- wMenu_p m )
+ GtkWidget * widget,
+ wMenu_p m )
{
gtk_menu_popup( GTK_MENU(m->menu), NULL, NULL, NULL, NULL, 0, 0 );
/* Tell calling code that we have handled this event; the buck
@@ -903,12 +932,12 @@ static gint pushMenu(
*/
wMenu_p wMenuCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option )
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option )
{
wMenu_p m;
m = wlibAlloc( parent, B_MENU, x, y, labelStr, sizeof( struct wMenu_t ), NULL );
@@ -920,12 +949,12 @@ wMenu_p wMenuCreate(
m->widget = gtk_button_new();
g_signal_connect (GTK_OBJECT(m->widget), "clicked",
- G_CALLBACK(pushMenu), m );
+ G_CALLBACK(pushMenu), m );
m->menu = gtk_menu_new();
wMenuSetLabel( m, labelStr );
-
+
gtk_fixed_put( GTK_FIXED(parent->widget), m->widget, m->realX, m->realY );
wlibControlGetSize( (wControl_p)m );
if ( m->w < 80 && (m->option&BO_ICON)==0) {
@@ -939,27 +968,27 @@ wMenu_p wMenuCreate(
}
/**
- * Add a drop-down menu to the menu bar.
+ * Add a drop-down menu to the menu bar.
*
- * \param w IN main window handle
+ * \param w IN main window handle
* \param helpStr IN unused (should be help topic )
- * \param labelStr IN label for the drop-down menu
+ * \param labelStr IN label for the drop-down menu
* \return pointer to the created drop-down menu
*/
wMenu_p wMenuBarAdd(
- wWin_p w,
- const char * helpStr,
- const char * labelStr )
+ wWin_p w,
+ const char * helpStr,
+ const char * labelStr )
{
wMenu_p m;
GtkWidget * menuItem;
-
+
m = wlibAlloc( w, B_MENU, 0, 0, labelStr, sizeof( struct wMenu_t ), NULL );
m->mmtype = MM_BAR;
m->realX = 0;
m->realY = 0;
-
+
menuItem = gtk_menu_item_new_with_mnemonic( wlibConvertInput(m->labelStr) );
m->menu = gtk_menu_new();
gtk_menu_item_set_submenu( GTK_MENU_ITEM(menuItem), m->menu );
@@ -968,10 +997,10 @@ wMenu_p wMenuBarAdd(
m->w = 0;
m->h = 0;
-
+
/* TODO: why is help not supported here? */
/*gtkAddHelpString( m->panel_item, helpStr );*/
-
+
return m;
}
@@ -982,13 +1011,13 @@ wMenu_p wMenuBarAdd(
* Create a popup menu (context menu)
*
* \param w IN parent window
- * \param labelStr IN label
+ * \param labelStr IN label
* \return the created menu
*/
wMenu_p wMenuPopupCreate(
- wWin_p w,
- const char * labelStr )
+ wWin_p w,
+ const char * labelStr )
{
wMenu_p b;
b = wlibAlloc( w, B_MENU, 0, 0, labelStr, sizeof *b, NULL );
@@ -999,10 +1028,11 @@ wMenu_p wMenuPopupCreate(
b->w = 0;
b->h = 0;
g_signal_connect( GTK_OBJECT (b->menu), "key_press_event",
- G_CALLBACK(catch_shift_ctrl_alt_keys), b);
+ G_CALLBACK(catch_shift_ctrl_alt_keys), b);
g_signal_connect( GTK_OBJECT (b->menu), "key_release_event",
- G_CALLBACK (catch_shift_ctrl_alt_keys), b);
- gtk_widget_set_events ( GTK_WIDGET(b->menu), GDK_EXPOSURE_MASK|GDK_KEY_PRESS_MASK|GDK_KEY_RELEASE_MASK );
+ G_CALLBACK (catch_shift_ctrl_alt_keys), b);
+ gtk_widget_set_events ( GTK_WIDGET(b->menu),
+ GDK_EXPOSURE_MASK|GDK_KEY_PRESS_MASK|GDK_KEY_RELEASE_MASK );
return b;
}
@@ -1023,30 +1053,30 @@ void wMenuPopupShow( wMenu_p mp )
/**
* ?? Seems to be related to macro / automatic playback functionality
*
- * \param m IN
- * \param func IN
- * \param data IN
+ * \param m IN
+ * \param func IN
+ * \param data IN
*/
void wMenuSetTraceCallBack(
- wMenu_p m,
- wMenuTraceCallBack_p func,
- void * data )
+ wMenu_p m,
+ wMenuTraceCallBack_p func,
+ void * data )
{
m->traceFunc = func;
m->traceData = data;
}
/**
- * ??? same as above
- * \param m IN
- * \param label IN
+ * ??? same as above
+ * \param m IN
+ * \param label IN
* \return describe the return value
*/
wBool_t wMenuAction(
- wMenu_p m,
- const char * label )
+ wMenu_p m,
+ const char * label )
{
wMenuItem_p mi;
wMenuToggle_p mt;
@@ -1056,10 +1086,11 @@ wBool_t wMenuAction(
case M_SEPARATOR:
break;
case M_PUSH:
- if ( ((wMenuPush_p)mi)->enabled == FALSE )
+ if ( ((wMenuPush_p)mi)->enabled == FALSE ) {
wBeep();
- else
+ } else {
((wMenuPush_p)mi)->action( ((wMenuPush_p)mi)->data );
+ }
break;
case M_TOGGLE:
mt = (wMenuToggle_p)mi;
@@ -1076,7 +1107,7 @@ wBool_t wMenuAction(
break;
default:
/*fprintf(stderr, "Oops: wMenuAction\n");*/
- break;
+ break;
}
return TRUE;
}
diff --git a/app/wlib/gtklib/message.c b/app/wlib/gtklib/message.c
index 4ecfe6f..6a63434 100644
--- a/app/wlib/gtklib/message.c
+++ b/app/wlib/gtklib/message.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 <stdlib.h>
@@ -42,10 +42,10 @@
*/
struct wMessage_t {
- WOBJ_COMMON
- GtkWidget * labelWidget;
- const char * message;
- wWinPix_t labelWidth;
+ WOBJ_COMMON
+ GtkWidget * labelWidget;
+ const char * message;
+ wWinPix_t labelWidth;
};
/**
@@ -57,14 +57,14 @@ struct wMessage_t {
*/
void wMessageSetValue(
- wMessage_p b,
- const char * arg)
+ wMessage_p b,
+ const char * arg)
{
- if (b->widget == 0) {
- abort();
- }
+ if (b->widget == 0) {
+ abort();
+ }
- gtk_label_set_text(GTK_LABEL(b->labelWidget), wlibConvertInput(arg));
+ gtk_label_set_text(GTK_LABEL(b->labelWidget), wlibConvertInput(arg));
}
/**
@@ -76,11 +76,11 @@ void wMessageSetValue(
*/
void wMessageSetWidth(
- wMessage_p b,
- wWinPix_t width)
+ wMessage_p b,
+ wWinPix_t width)
{
- b->labelWidth = width;
- gtk_widget_set_size_request(b->widget, width, -1);
+ b->labelWidth = width;
+ gtk_widget_set_size_request(b->widget, width, -1);
}
/**
@@ -91,47 +91,47 @@ void wMessageSetWidth(
*/
wWinPix_t wMessageGetHeight(
- long flags)
+ long flags)
{
- GtkWidget * temp;
+ GtkWidget * temp;
- if (!(flags&COMBOBOX)) {
+ if (!(flags&COMBOBOX)) {
temp = gtk_label_new("Test"); //To get size of text itself
- } else {
- temp = gtk_combo_box_text_new(); //to get max size of an object in infoBar
- }
-
- if (wMessageSetFont(flags)) {
- GtkStyle *style;
- PangoFontDescription *fontDesc;
- int fontSize;
- /* get the current font descriptor */
- style = gtk_widget_get_style(temp);
- fontDesc = style->font_desc;
- /* get the current font size */
- fontSize = PANGO_PIXELS(pango_font_description_get_size(fontDesc));
-
- /* calculate the new font size */
- if (flags & BM_LARGE) {
- pango_font_description_set_size(fontDesc, fontSize * 1.4 * PANGO_SCALE);
- } else {
- pango_font_description_set_size(fontDesc, fontSize * 0.7 * PANGO_SCALE);
- }
-
- /* set the new font size */
- gtk_widget_modify_font(temp, fontDesc);
- }
-
- if (flags&1L) {
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(temp),"Test");
- }
-
- GtkRequisition temp_requisition;
- gtk_widget_size_request(temp,&temp_requisition);
- g_object_ref_sink(temp);
- gtk_widget_destroy(temp);
- g_object_unref(temp);
- return temp_requisition.height;
+ } else {
+ temp = gtk_combo_box_text_new(); //to get max size of an object in infoBar
+ }
+
+ if (wMessageSetFont(flags)) {
+ GtkStyle *style;
+ PangoFontDescription *fontDesc;
+ int fontSize;
+ /* get the current font descriptor */
+ style = gtk_widget_get_style(temp);
+ fontDesc = style->font_desc;
+ /* get the current font size */
+ fontSize = PANGO_PIXELS(pango_font_description_get_size(fontDesc));
+
+ /* calculate the new font size */
+ if (flags & BM_LARGE) {
+ pango_font_description_set_size(fontDesc, fontSize * 1.4 * PANGO_SCALE);
+ } else {
+ pango_font_description_set_size(fontDesc, fontSize * 0.7 * PANGO_SCALE);
+ }
+
+ /* set the new font size */
+ gtk_widget_modify_font(temp, fontDesc);
+ }
+
+ if (flags&1L) {
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(temp),"Test");
+ }
+
+ GtkRequisition temp_requisition;
+ gtk_widget_size_request(temp,&temp_requisition);
+ g_object_ref_sink(temp);
+ gtk_widget_destroy(temp);
+ g_object_unref(temp);
+ return temp_requisition.height;
}
/**
@@ -148,61 +148,61 @@ wWinPix_t wMessageGetHeight(
*/
wMessage_p wMessageCreateEx(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * labelStr,
- wWinPix_t width,
- const char *message,
- long flags)
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * labelStr,
+ wWinPix_t width,
+ const char *message,
+ long flags)
{
- wMessage_p b;
- GtkRequisition requisition;
- GtkStyle *style;
- PangoFontDescription *fontDesc;
- int fontSize;
- b = (wMessage_p)wlibAlloc(parent, B_MESSAGE, x, y, NULL, sizeof *b, NULL);
- wlibComputePos((wControl_p)b);
- b->message = message;
- b->labelWidth = width;
- b->labelWidget = gtk_label_new(message?wlibConvertInput(message):"");
-
- /* do we need to set a special font? */
- if (wMessageSetFont(flags)) {
- /* get the current font descriptor */
- style = gtk_widget_get_style(GTK_WIDGET(b->labelWidget));
- fontDesc = style->font_desc;
- /* get the current font size */
- fontSize = PANGO_PIXELS(pango_font_description_get_size(fontDesc));
-
- /* calculate the new font size */
- if (flags & BM_LARGE) {
- pango_font_description_set_size(fontDesc, fontSize * 1.4 * PANGO_SCALE);
- } else {
- pango_font_description_set_size(fontDesc, fontSize * 0.7 * PANGO_SCALE);
- }
-
- /* set the new font size */
- gtk_widget_modify_font((GtkWidget *)b->labelWidget, fontDesc);
- }
-
- b->widget = gtk_fixed_new();
- gtk_widget_size_request(GTK_WIDGET(b->labelWidget), &requisition);
- gtk_container_add(GTK_CONTAINER(b->widget), b->labelWidget);
- gtk_widget_set_size_request(b->widget, width?width:requisition.width,
- requisition.height);
- wlibControlGetSize((wControl_p)b);
- gtk_fixed_put(GTK_FIXED(parent->widget), b->widget, b->realX, b->realY);
- gtk_widget_show(b->widget);
- gtk_widget_show(b->labelWidget);
- wlibAddButton((wControl_p)b);
-
- /* Reset font size to normal */
- if (wMessageSetFont(flags)) {
- pango_font_description_set_size(fontDesc, fontSize * PANGO_SCALE);
- }
-
- return b;
+ wMessage_p b;
+ GtkRequisition requisition;
+ GtkStyle *style;
+ PangoFontDescription *fontDesc;
+ int fontSize;
+ b = (wMessage_p)wlibAlloc(parent, B_MESSAGE, x, y, NULL, sizeof *b, NULL);
+ wlibComputePos((wControl_p)b);
+ b->message = message;
+ b->labelWidth = width;
+ b->labelWidget = gtk_label_new(message?wlibConvertInput(message):"");
+
+ /* do we need to set a special font? */
+ if (wMessageSetFont(flags)) {
+ /* get the current font descriptor */
+ style = gtk_widget_get_style(GTK_WIDGET(b->labelWidget));
+ fontDesc = style->font_desc;
+ /* get the current font size */
+ fontSize = PANGO_PIXELS(pango_font_description_get_size(fontDesc));
+
+ /* calculate the new font size */
+ if (flags & BM_LARGE) {
+ pango_font_description_set_size(fontDesc, fontSize * 1.4 * PANGO_SCALE);
+ } else {
+ pango_font_description_set_size(fontDesc, fontSize * 0.7 * PANGO_SCALE);
+ }
+
+ /* set the new font size */
+ gtk_widget_modify_font((GtkWidget *)b->labelWidget, fontDesc);
+ }
+
+ b->widget = gtk_fixed_new();
+ gtk_widget_size_request(GTK_WIDGET(b->labelWidget), &requisition);
+ gtk_container_add(GTK_CONTAINER(b->widget), b->labelWidget);
+ gtk_widget_set_size_request(b->widget, width?width:requisition.width,
+ requisition.height);
+ wlibControlGetSize((wControl_p)b);
+ gtk_fixed_put(GTK_FIXED(parent->widget), b->widget, b->realX, b->realY);
+ gtk_widget_show(b->widget);
+ gtk_widget_show(b->labelWidget);
+ wlibAddButton((wControl_p)b);
+
+ /* Reset font size to normal */
+ if (wMessageSetFont(flags)) {
+ pango_font_description_set_size(fontDesc, fontSize * PANGO_SCALE);
+ }
+
+ return b;
}
/**
@@ -215,10 +215,10 @@ wMessage_p wMessageCreateEx(
wWinPix_t
wMessageGetWidth(const char *testString)
{
- GtkWidget *entry;
- GtkRequisition requisition;
+// GtkWidget *entry;
+// GtkRequisition requisition;
- return( wLabelWidth(testString));
+ return( wLabelWidth(testString));
// entry = gtk_entry_new();
// g_object_ref_sink(entry);
//
diff --git a/app/wlib/gtklib/notice.c b/app/wlib/gtklib/notice.c
index 0134b4f..5ab352b 100644
--- a/app/wlib/gtklib/notice.c
+++ b/app/wlib/gtklib/notice.c
@@ -41,9 +41,9 @@
static char * wlibChgMnemonic(char *label);
typedef struct {
- GtkWidget * win;
- GtkWidget * label;
- GtkWidget * butt[3];
+ GtkWidget * win;
+ GtkWidget * label;
+ GtkWidget * butt[3];
} notice_win;
static notice_win noticeW;
static long noticeValue;
@@ -55,17 +55,17 @@ static long noticeValue;
*/
static void doNotice(
- GtkWidget * widget,
- long value)
+ GtkWidget * widget,
+ long value)
{
- if (value != 2) {
- // event not from from closing the window but from a button press
- // Close the Notice dialog
- gtk_widget_destroy(noticeW.win);
- // Remember the button
- noticeValue = value;
- }
- wlibDoModal(NULL, FALSE);
+ if (value != 2) {
+ // event not from from closing the window but from a button press
+ // Close the Notice dialog
+ gtk_widget_destroy(noticeW.win);
+ // Remember the button
+ noticeValue = value;
+ }
+ wlibDoModal(NULL, FALSE);
}
/**
@@ -84,48 +84,48 @@ int wNoticeEx(int type,
const char * no)
{
- int res;
- unsigned flag;
- char *headline;
- GtkWidget *dialog;
- GtkWindow *parent = NULL;
+ int res;
+ unsigned flag = GTK_MESSAGE_ERROR;
+ char *headline = _("Error");
+ GtkWidget *dialog;
+ GtkWindow *parent = NULL;
- switch (type) {
- case NT_INFORMATION:
- flag = GTK_MESSAGE_INFO;
- headline = _("Information");
- break;
+ switch (type) {
+ case NT_INFORMATION:
+ flag = GTK_MESSAGE_INFO;
+ headline = _("Information");
+ break;
- case NT_WARNING:
- flag = GTK_MESSAGE_WARNING;
- headline = _("Warning");
- break;
+ case NT_WARNING:
+ flag = GTK_MESSAGE_WARNING;
+ headline = _("Warning");
+ break;
- case NT_ERROR:
- flag = GTK_MESSAGE_ERROR;
- headline = _("Error");
- break;
- }
+ case NT_ERROR:
+ flag = GTK_MESSAGE_ERROR;
+ headline = _("Error");
+ break;
+ }
- if (gtkMainW) {
- parent = GTK_WINDOW(gtkMainW->gtkwin);
- }
+ if (gtkMainW) {
+ parent = GTK_WINDOW(gtkMainW->gtkwin);
+ }
- wDestroySplash();
+ wDestroySplash();
- dialog = gtk_message_dialog_new(parent,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- flag,
- ((no==NULL)?GTK_BUTTONS_OK:GTK_BUTTONS_YES_NO),
- "%s", msg);
- gtk_window_set_title(GTK_WINDOW(dialog), headline);
+ dialog = gtk_message_dialog_new(parent,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ flag,
+ ((no==NULL)?GTK_BUTTONS_OK:GTK_BUTTONS_YES_NO),
+ "%s", msg);
+ gtk_window_set_title(GTK_WINDOW(dialog), headline);
- gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
+ gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
- res = gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
+ res = gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
- return res == GTK_RESPONSE_OK || res == GTK_RESPONSE_YES;
+ return res == GTK_RESPONSE_OK || res == GTK_RESPONSE_YES;
}
@@ -141,11 +141,11 @@ int wNoticeEx(int type,
*/
int wNotice(
- const char * msg, /* Message */
- const char * yes, /* First button label */
- const char * no) /* Second label (or 'NULL') */
+ const char * msg, /* Message */
+ const char * yes, /* First button label */
+ const char * no) /* Second label (or 'NULL') */
{
- return wNotice3(msg, yes, no, NULL);
+ return wNotice3(msg, yes, no, NULL);
}
/** \brief Popup a notice box with three buttons.
@@ -167,121 +167,121 @@ int wNotice(
*/
int wNotice3(
- const char * msg, /* Message */
- const char * affirmative, /* First button label */
- const char * cancel, /* Second label (or 'NULL') */
- const char * alternate)
+ const char * msg, /* Message */
+ const char * affirmative, /* First button label */
+ const char * cancel, /* Second label (or 'NULL') */
+ const char * alternate)
{
- notice_win *nw;
- GtkWidget * vbox;
- GtkWidget * hbox;
- GtkWidget * hbox1;
- GtkWidget * image;
- nw = &noticeW;
-
- char *aff = NULL;
- char *can = NULL;
- char *alt = NULL;
-
- wDestroySplash();
-
- nw->win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-
- gtk_window_set_position(GTK_WINDOW(nw->win), GTK_WIN_POS_CENTER);
- gtk_container_set_border_width(GTK_CONTAINER(nw->win), 0);
- gtk_window_set_resizable(GTK_WINDOW(nw->win), FALSE);
- gtk_window_set_modal(GTK_WINDOW(nw->win), TRUE);
- gtk_window_set_type_hint(GTK_WINDOW(nw->win), GDK_WINDOW_TYPE_HINT_DIALOG);
-
- vbox = gtk_vbox_new(FALSE, 12);
- gtk_widget_show(vbox);
- gtk_container_add(GTK_CONTAINER(nw->win), vbox);
- gtk_container_set_border_width(GTK_CONTAINER(vbox), 12);
-
- hbox = gtk_hbox_new(FALSE, 12);
- gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
- gtk_widget_show(hbox);
-
- image = gtk_image_new_from_stock(GTK_STOCK_DIALOG_WARNING,
- GTK_ICON_SIZE_DIALOG);
- gtk_widget_show(image);
- gtk_box_pack_start(GTK_BOX(hbox), image, TRUE, TRUE, 0);
- gtk_misc_set_alignment(GTK_MISC(image), 0, 0);
-
- /* create the text label, allow GTK to wrap and allow for markup (for future enhancements) */
- nw->label = gtk_label_new(msg);
- gtk_widget_show(nw->label);
- gtk_box_pack_end(GTK_BOX(hbox), nw->label, TRUE, TRUE, 0);
- gtk_label_set_use_markup(GTK_LABEL(nw->label), FALSE);
- gtk_label_set_line_wrap(GTK_LABEL(nw->label), TRUE);
- gtk_misc_set_alignment(GTK_MISC(nw->label), 0, 0);
-
- /* this hbox will include the button bar */
- hbox1 = gtk_hbox_new(TRUE, 0);
- gtk_widget_show(hbox1);
- gtk_box_pack_start(GTK_BOX(vbox), hbox1, FALSE, TRUE, 0);
-
- /* add the respective buttons */
- aff = wlibChgMnemonic((char *) affirmative);
- nw->butt[ 0 ] = gtk_button_new_with_mnemonic(aff);
- gtk_widget_show(nw->butt[ 0 ]);
- gtk_box_pack_end(GTK_BOX(hbox1), nw->butt[ 0 ], TRUE, TRUE, 0);
- gtk_container_set_border_width(GTK_CONTAINER(nw->butt[ 0 ]), 3);
- g_signal_connect(GTK_OBJECT(nw->butt[0]), "clicked", G_CALLBACK(doNotice),
- (void*)1);
- gtk_widget_set_can_default(nw->butt[ 0 ], TRUE);
-
- if (cancel) {
- can = wlibChgMnemonic((char *) cancel);
- nw->butt[ 1 ] = gtk_button_new_with_mnemonic(can);
- gtk_widget_show(nw->butt[ 1 ]);
- gtk_box_pack_end(GTK_BOX(hbox1), nw->butt[ 1 ], TRUE, TRUE, 0);
- gtk_container_set_border_width(GTK_CONTAINER(nw->butt[ 1 ]), 3);
- g_signal_connect(GTK_OBJECT(nw->butt[1]), "clicked", G_CALLBACK(doNotice),
- (void*)0);
- gtk_widget_set_can_default(nw->butt[ 1 ], TRUE);
-
- if (alternate) {
- alt = wlibChgMnemonic((char *) alternate);
- nw->butt[ 2 ] = gtk_button_new_with_mnemonic(alt);
- gtk_widget_show(nw->butt[ 2 ]);
- gtk_box_pack_start(GTK_BOX(hbox1), nw->butt[ 2 ], TRUE, TRUE, 0);
- gtk_container_set_border_width(GTK_CONTAINER(nw->butt[ 2 ]), 3);
- g_signal_connect(GTK_OBJECT(nw->butt[2]), "clicked", G_CALLBACK(doNotice),
- (void*)-1);
- gtk_widget_set_can_default(nw->butt[ 2 ], TRUE);
- }
- }
-
- g_signal_connect(GTK_WINDOW(nw->win),
- "destroy", G_CALLBACK(doNotice), (void*)2);
-
- gtk_widget_grab_default(nw->butt[ 0 ]);
- gtk_widget_grab_focus(nw->butt[ 0 ]);
-
- gtk_widget_show(nw->win);
-
- if (gtkMainW) {
- gtk_window_set_transient_for(GTK_WINDOW(nw->win), GTK_WINDOW(gtkMainW->gtkwin));
- /* gdk_window_set_group( nw->win->window, gtkMainW->gtkwin->window ); */
- }
-
- noticeValue = 0; // Default: Cancel
- wlibDoModal(NULL, TRUE);
-
- if (aff) {
- free(aff);
- }
-
- if (can) {
- free(can);
- }
-
- if (alt) {
- free(alt);
- }
-
- return noticeValue;
+ notice_win *nw;
+ GtkWidget * vbox;
+ GtkWidget * hbox;
+ GtkWidget * hbox1;
+ GtkWidget * image;
+ nw = &noticeW;
+
+ char *aff = NULL;
+ char *can = NULL;
+ char *alt = NULL;
+
+ wDestroySplash();
+
+ nw->win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+
+ gtk_window_set_position(GTK_WINDOW(nw->win), GTK_WIN_POS_CENTER);
+ gtk_container_set_border_width(GTK_CONTAINER(nw->win), 0);
+ gtk_window_set_resizable(GTK_WINDOW(nw->win), FALSE);
+ gtk_window_set_modal(GTK_WINDOW(nw->win), TRUE);
+ gtk_window_set_type_hint(GTK_WINDOW(nw->win), GDK_WINDOW_TYPE_HINT_DIALOG);
+
+ vbox = gtk_vbox_new(FALSE, 12);
+ gtk_widget_show(vbox);
+ gtk_container_add(GTK_CONTAINER(nw->win), vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 12);
+
+ hbox = gtk_hbox_new(FALSE, 12);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
+ gtk_widget_show(hbox);
+
+ image = gtk_image_new_from_stock(GTK_STOCK_DIALOG_WARNING,
+ GTK_ICON_SIZE_DIALOG);
+ gtk_widget_show(image);
+ gtk_box_pack_start(GTK_BOX(hbox), image, TRUE, TRUE, 0);
+ gtk_misc_set_alignment(GTK_MISC(image), 0, 0);
+
+ /* create the text label, allow GTK to wrap and allow for markup (for future enhancements) */
+ nw->label = gtk_label_new(msg);
+ gtk_widget_show(nw->label);
+ gtk_box_pack_end(GTK_BOX(hbox), nw->label, TRUE, TRUE, 0);
+ gtk_label_set_use_markup(GTK_LABEL(nw->label), FALSE);
+ gtk_label_set_line_wrap(GTK_LABEL(nw->label), TRUE);
+ gtk_misc_set_alignment(GTK_MISC(nw->label), 0, 0);
+
+ /* this hbox will include the button bar */
+ hbox1 = gtk_hbox_new(TRUE, 0);
+ gtk_widget_show(hbox1);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox1, FALSE, TRUE, 0);
+
+ /* add the respective buttons */
+ aff = wlibChgMnemonic((char *) affirmative);
+ nw->butt[ 0 ] = gtk_button_new_with_mnemonic(aff);
+ gtk_widget_show(nw->butt[ 0 ]);
+ gtk_box_pack_end(GTK_BOX(hbox1), nw->butt[ 0 ], TRUE, TRUE, 0);
+ gtk_container_set_border_width(GTK_CONTAINER(nw->butt[ 0 ]), 3);
+ g_signal_connect(GTK_OBJECT(nw->butt[0]), "clicked", G_CALLBACK(doNotice),
+ (void*)1);
+ gtk_widget_set_can_default(nw->butt[ 0 ], TRUE);
+
+ if (cancel) {
+ can = wlibChgMnemonic((char *) cancel);
+ nw->butt[ 1 ] = gtk_button_new_with_mnemonic(can);
+ gtk_widget_show(nw->butt[ 1 ]);
+ gtk_box_pack_end(GTK_BOX(hbox1), nw->butt[ 1 ], TRUE, TRUE, 0);
+ gtk_container_set_border_width(GTK_CONTAINER(nw->butt[ 1 ]), 3);
+ g_signal_connect(GTK_OBJECT(nw->butt[1]), "clicked", G_CALLBACK(doNotice),
+ (void*)0);
+ gtk_widget_set_can_default(nw->butt[ 1 ], TRUE);
+
+ if (alternate) {
+ alt = wlibChgMnemonic((char *) alternate);
+ nw->butt[ 2 ] = gtk_button_new_with_mnemonic(alt);
+ gtk_widget_show(nw->butt[ 2 ]);
+ gtk_box_pack_start(GTK_BOX(hbox1), nw->butt[ 2 ], TRUE, TRUE, 0);
+ gtk_container_set_border_width(GTK_CONTAINER(nw->butt[ 2 ]), 3);
+ g_signal_connect(GTK_OBJECT(nw->butt[2]), "clicked", G_CALLBACK(doNotice),
+ (void*)-1);
+ gtk_widget_set_can_default(nw->butt[ 2 ], TRUE);
+ }
+ }
+
+ g_signal_connect(GTK_WINDOW(nw->win),
+ "destroy", G_CALLBACK(doNotice), (void*)2);
+
+ gtk_widget_grab_default(nw->butt[ 0 ]);
+ gtk_widget_grab_focus(nw->butt[ 0 ]);
+
+ gtk_widget_show(nw->win);
+
+ if (gtkMainW) {
+ gtk_window_set_transient_for(GTK_WINDOW(nw->win), GTK_WINDOW(gtkMainW->gtkwin));
+ /* gdk_window_set_group( nw->win->window, gtkMainW->gtkwin->window ); */
+ }
+
+ noticeValue = 0; // Default: Cancel
+ wlibDoModal(NULL, TRUE);
+
+ if (aff) {
+ free(aff);
+ }
+
+ if (can) {
+ free(can);
+ }
+
+ if (alt) {
+ free(alt);
+ }
+
+ return noticeValue;
}
/* \brief Convert label string from Windows mnemonic to GTK
@@ -295,18 +295,18 @@ int wNotice3(
static
char * wlibChgMnemonic(char *label)
{
- char *ptr;
- char *cp;
+ char *ptr;
+ char *cp;
- cp = strdup(label);
+ cp = strdup(label);
- ptr = strchr(cp, '&');
+ ptr = strchr(cp, '&');
- if (ptr) {
- *ptr = '_';
- }
+ if (ptr) {
+ *ptr = '_';
+ }
- return (cp);
+ return (cp);
}
diff --git a/app/wlib/gtklib/opendocument.c b/app/wlib/gtklib/opendocument.c
index c03f9cb..5c057ec 100644
--- a/app/wlib/gtklib/opendocument.c
+++ b/app/wlib/gtklib/opendocument.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 <stdlib.h>
@@ -55,24 +55,24 @@
static char *
ExtendPath(void)
{
- char *path = strdup(getenv("PATH"));
- DynString newPath;
- DynStringMalloc(&newPath, 16);
+ char *path = strdup(getenv("PATH"));
+ DynString newPath;
+ DynStringMalloc(&newPath, 16);
- // append XTrackCAD's directory to the path as a fallback
- DynStringCatCStrs(&newPath,
- path,
- ":",
- wGetAppLibDir(),
- NULL);
+ // append XTrackCAD's directory to the path as a fallback
+ DynStringCatCStrs(&newPath,
+ path,
+ ":",
+ wGetAppLibDir(),
+ NULL);
- setenv("PATH",
- DynStringToCStr(&newPath),
- TRUE);
+ setenv("PATH",
+ DynStringToCStr(&newPath),
+ TRUE);
- DynStringFree(&newPath);
+ DynStringFree(&newPath);
- return (path);
+ return (path);
}
/**
@@ -85,33 +85,33 @@ ExtendPath(void)
unsigned wOpenFileExternal(char * filename)
{
- int rc;
- DynString commandLine;
- char *currentPath;
-
- assert(filename != NULL);
- assert(strlen(filename));
-
- currentPath = ExtendPath();
-
- DynStringMalloc(&commandLine, 16);
- DynStringCatCStrs(&commandLine,
- DEFAULTOPENCOMMAND,
- " \"",
- filename,
- "\"",
- NULL);
-
- // the command should be found via the PATH
- rc = system(DynStringToCStr(&commandLine));
-
- // restore the PATH
- setenv("PATH",
- currentPath,
- TRUE);
-
- free(currentPath);
- DynStringFree(&commandLine);
-
- return(rc==0);
+ int rc;
+ DynString commandLine;
+ char *currentPath;
+
+ assert(filename != NULL);
+ assert(strlen(filename));
+
+ currentPath = ExtendPath();
+
+ DynStringMalloc(&commandLine, 16);
+ DynStringCatCStrs(&commandLine,
+ DEFAULTOPENCOMMAND,
+ " \"",
+ filename,
+ "\"",
+ NULL);
+
+ // the command should be found via the PATH
+ rc = system(DynStringToCStr(&commandLine));
+
+ // restore the PATH
+ setenv("PATH",
+ currentPath,
+ TRUE);
+
+ free(currentPath);
+ DynStringFree(&commandLine);
+
+ return(rc==0);
}
diff --git a/app/wlib/gtklib/osxhelp.c b/app/wlib/gtklib/osxhelp.c
index 2fed375..b508961 100644
--- a/app/wlib/gtklib/osxhelp.c
+++ b/app/wlib/gtklib/osxhelp.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 <stdio.h>
@@ -51,15 +51,15 @@ extern wBool_t CheckHelpTopicExists(const char *);
static
char *ChildProgramFile(char *parentProgram)
{
- char *startOfFilename;
- char *childProgram;
+ char *startOfFilename;
+ char *childProgram;
- childProgram = malloc(strlen(parentProgram)+ sizeof(HELPERPROGRAM) + 1);
- strcpy(childProgram, parentProgram);
- startOfFilename = strrchr(childProgram, '/');
- strcpy(startOfFilename + 1, HELPERPROGRAM);
+ childProgram = malloc(strlen(parentProgram)+ sizeof(HELPERPROGRAM) + 1);
+ strcpy(childProgram, parentProgram);
+ startOfFilename = strrchr(childProgram, '/');
+ strcpy(startOfFilename + 1, HELPERPROGRAM);
- return (childProgram);
+ return (childProgram);
}
@@ -71,92 +71,93 @@ char *ChildProgramFile(char *parentProgram)
void wHelp(const char * topic)
{
- pid_t newPid;
- int status;
- const char html[] = ".html";
- static char *directory; /**< base directory for HTML files */
- char * htmlFile;
-
- struct {
- int length;
- char *page;
- } buffer;
-
- if (!CheckHelpTopicExists(topic)) return;
-
- // check whether child already exists
- if (pidOfChild != 0) {
- if (waitpid(pidOfChild, &status, WNOHANG) < 0) {
- // child exited -> clean up
- close(handleOfPipe);
- unlink(HELPCOMMANDPIPE);
- handleOfPipe = 0;
- pidOfChild = 0; // child exited
- }
- }
-
- // (re)start child
- if (pidOfChild == 0) {
- unlink(HELPCOMMANDPIPE);
- int rc = mkfifo(HELPCOMMANDPIPE, 0666);
- newPid = fork(); /* New process starts here */
-
- if (newPid > 0) {
- pidOfChild = newPid;
- } else if (newPid == 0) {
+ pid_t newPid;
+ int status;
+ const char html[] = ".html";
+ static char *directory; /**< base directory for HTML files */
+ char * htmlFile;
+
+ struct {
+ int length;
+ char *page;
+ } buffer;
+
+ if (!CheckHelpTopicExists(topic)) { return; }
+
+ // check whether child already exists
+ if (pidOfChild != 0) {
+ if (waitpid(pidOfChild, &status, WNOHANG) < 0) {
+ // child exited -> clean up
+ close(handleOfPipe);
+ unlink(HELPCOMMANDPIPE);
+ handleOfPipe = 0;
+ pidOfChild = 0; // child exited
+ }
+ }
+
+ // (re)start child
+ if (pidOfChild == 0) {
+ unlink(HELPCOMMANDPIPE);
+ int rc = mkfifo(HELPCOMMANDPIPE, 0666);
+ newPid = fork(); /* New process starts here */
+
+ if (newPid > 0) {
+ pidOfChild = newPid;
+ } else if (newPid == 0) {
char *child = ChildProgramFile(wExecutableName);
-
- if (execlp(child, child, NULL) < 0) { /* never normally returns */
- exit(8);
- }
-
- free(child);
- } else { /* -1 signifies fork failure */
- pidOfChild = 0;
- return;
- }
- }
-
- buffer.page = malloc(sizeof(int)+strlen(topic) + strlen(html) + 1);
-
- if (!buffer.page) {
- return;
- }
-
- strcpy(buffer.page, topic);
- strcat(buffer.page, html);
- buffer.length = strlen(buffer.page);
-
- if (buffer.length>255) {
- printf("Help Topic too long %s", buffer.page);
- return;
- }
-
- if (!handleOfPipe) {
+
+ if (execlp(child, child, NULL) < 0) { /* never normally returns */
+ exit(8);
+ }
+
+ free(child);
+ } else { /* -1 signifies fork failure */
+ pidOfChild = 0;
+ return;
+ }
+ }
+
+ buffer.page = malloc(sizeof(int)+strlen(topic) + strlen(html) + 1);
+
+ if (!buffer.page) {
+ return;
+ }
+
+ strcpy(buffer.page, topic);
+ strcat(buffer.page, html);
+ buffer.length = strlen(buffer.page);
+
+ if (buffer.length>255) {
+ printf("Help Topic too long %s", buffer.page);
+ return;
+ }
+
+ if (!handleOfPipe) {
handleOfPipe = open(HELPCOMMANDPIPE, O_WRONLY);
if (handleOfPipe < 0) {
- if (pidOfChild)
- kill(pidOfChild, SIGKILL); /* tidy up on next call */
+ if (pidOfChild) {
+ kill(pidOfChild, SIGKILL); /* tidy up on next call */
+ }
handleOfPipe = 0;
return;
}
}
- int written = 0;
- int towrite = sizeof(int);
+ int written = 0;
+ int towrite = sizeof(int);
- while (written < towrite){
- written += write(handleOfPipe, &buffer.length, sizeof(int));
- }
- written =0;
- towrite = strlen(buffer.page);
- while (written < towrite){
- written += write(handleOfPipe, buffer.page+written, towrite-written);
- }
+ while (written < towrite) {
+ written += write(handleOfPipe, &buffer.length, sizeof(int));
+ }
+ written =0;
+ towrite = strlen(buffer.page);
+ while (written < towrite) {
+ written += write(handleOfPipe, buffer.page+written, towrite-written);
+ }
- fsync(handleOfPipe);
+ fsync(handleOfPipe);
- free(buffer.page);
+ free(buffer.page);
}
diff --git a/app/wlib/gtklib/pixbuf.c b/app/wlib/gtklib/pixbuf.c
index a76e7f1..0d6e8b7 100644
--- a/app/wlib/gtklib/pixbuf.c
+++ b/app/wlib/gtklib/pixbuf.c
@@ -45,55 +45,55 @@
*/
GdkPixbuf* wlibMakePixbuf(
- wIcon_p ip)
+ wIcon_p ip)
{
- GdkPixbuf * pixbuf;
- char line0[40];
- char line2[40];
-
- assert(ip != NULL);
-
- if (ip->gtkIconType == gtkIcon_pixmap) {
- pixbuf = gdk_pixbuf_new_from_xpm_data((const char**)ip->bits);
- } else {
- const char * bits;
- long rgb;
- int row,col,wb;
- char ** pixmapData;
-
- wb = (ip->w+7)/8;
- pixmapData = (char**)g_malloc((3+ip->h) * sizeof *pixmapData);
- pixmapData[0] = line0;
- rgb = wDrawGetRGB(ip->color);
- sprintf(line0, " %ld %ld 2 1", ip->w, ip->h);
- sprintf(line2, "# c #%2.2lx%2.2lx%2.2lx", (rgb>>16)&0xFF, (rgb>>8)&0xFF,
- rgb&0xFF);
- pixmapData[1] = ". c None s None";
- pixmapData[2] = line2;
- bits = ip->bits;
-
- for (row = 0; row<ip->h; row++) {
- pixmapData[row+3] = (char*)g_malloc((ip->w+1) * sizeof **pixmapData);
-
- for (col = 0; col<ip->w; col++) {
- if (bits[ row*wb+(col>>3) ] & (1<<(col&07))) {
- pixmapData[row+3][col] = '#';
- } else {
- pixmapData[row+3][col] = '.';
- }
- }
-
- pixmapData[row+3][ip->w] = 0;
- }
-
- pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)pixmapData);
-
- for (row = 0; row<ip->h; row++) {
- g_free(pixmapData[row+3]);
- }
- }
-
- return pixbuf;
+ GdkPixbuf * pixbuf;
+ char line0[40];
+ char line2[40];
+
+ assert(ip != NULL);
+
+ if (ip->gtkIconType == gtkIcon_pixmap) {
+ pixbuf = gdk_pixbuf_new_from_xpm_data((const char**)ip->bits);
+ } else {
+ const char * bits;
+ long rgb;
+ int row,col,wb;
+ char ** pixmapData;
+
+ wb = (ip->w+7)/8;
+ pixmapData = (char**)g_malloc((3+ip->h) * sizeof *pixmapData);
+ pixmapData[0] = line0;
+ rgb = wDrawGetRGB(ip->color);
+ sprintf(line0, " %ld %ld 2 1", ip->w, ip->h);
+ sprintf(line2, "# c #%2.2lx%2.2lx%2.2lx", (rgb>>16)&0xFF, (rgb>>8)&0xFF,
+ rgb&0xFF);
+ pixmapData[1] = ". c None s None";
+ pixmapData[2] = line2;
+ bits = ip->bits;
+
+ for (row = 0; row<ip->h; row++) {
+ pixmapData[row+3] = (char*)g_malloc((ip->w+1) * sizeof **pixmapData);
+
+ for (col = 0; col<ip->w; col++) {
+ if (bits[ row*wb+(col>>3) ] & (1<<(col&07))) {
+ pixmapData[row+3][col] = '#';
+ } else {
+ pixmapData[row+3][col] = '.';
+ }
+ }
+
+ pixmapData[row+3][ip->w] = 0;
+ }
+
+ pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)pixmapData);
+
+ for (row = 0; row<ip->h; row++) {
+ g_free(pixmapData[row+3]);
+ }
+ }
+
+ return pixbuf;
}
diff --git a/app/wlib/gtklib/print.c b/app/wlib/gtklib/print.c
index 7f8f49e..609efa9 100644
--- a/app/wlib/gtklib/print.c
+++ b/app/wlib/gtklib/print.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 <stdlib.h>
@@ -79,8 +79,7 @@ extern struct wDraw_t psPrint_d;
static wBool_t printContinue; /**< control print job, FALSE for cancelling */
static wIndex_t pageCount; /**< unused, could be used for progress indicator */
-static wIndex_t
-totalPageCount; /**< unused, could be used for progress indicator */
+//static wIndex_t totalPageCount; /**< unused, could be used for progress indicator */
static double paperWidth; /**< physical paper width */
static double paperHeight; /**< physical paper height */
@@ -92,7 +91,7 @@ static double bBorder; /**< bottom margin */
static double scale_adjust = 1.0;
static double scale_text = 1.0;
-static long printFormat = PRINT_LANDSCAPE;
+//static long printFormat = PRINT_LANDSCAPE;
/*****************************************************************************
*
@@ -112,61 +111,61 @@ static void WlibGetPaperSize(void);
void
WlibApplySettings(GtkPrintOperation *op)
{
- gchar *filename;
- GError *err = NULL;
- GtkWidget *dialog;
-
- filename = g_build_filename(wGetAppWorkDir(), PRINTSETTINGS, NULL);
-
- if (!(settings = gtk_print_settings_new_from_file(filename, &err))) {
- if (err->code != G_FILE_ERROR_NOENT) {
- // ignore file not found error as defaults will be used
- dialog = gtk_message_dialog_new(GTK_WINDOW(gtkMainW->gtkwin),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
- "%s",err->message);
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
- } else {
- // create default print settings
- settings = gtk_print_settings_new();
- }
- g_error_free(err);
- }
-
- g_free(filename);
-
- if (settings && op) {
- gtk_print_operation_set_print_settings(op, settings);
- }
-
- err = NULL;
- filename = g_build_filename(wGetAppWorkDir(), PAGESETTINGS, NULL);
-
- if (!(page_setup = gtk_page_setup_new_from_file(filename, &err))) {
- // ignore file not found error as defaults will be used
- if (err->code != G_FILE_ERROR_NOENT) {
- dialog = gtk_message_dialog_new(GTK_WINDOW(gtkMainW->gtkwin),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
- "%s",err->message);
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
- } else {
- page_setup = gtk_page_setup_new();
- }
-
- g_error_free(err);
- } else {
- // on success get the paper dimensions
- WlibGetPaperSize();
- }
-
- g_free(filename);
-
- if (page_setup && op) {
- gtk_print_operation_set_default_page_setup(op, page_setup);
- }
+ gchar *filename;
+ GError *err = NULL;
+ GtkWidget *dialog;
+
+ filename = g_build_filename(wGetAppWorkDir(), PRINTSETTINGS, NULL);
+
+ if (!(settings = gtk_print_settings_new_from_file(filename, &err))) {
+ if (err->code != G_FILE_ERROR_NOENT) {
+ // ignore file not found error as defaults will be used
+ dialog = gtk_message_dialog_new(GTK_WINDOW(gtkMainW->gtkwin),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
+ "%s",err->message);
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+ } else {
+ // create default print settings
+ settings = gtk_print_settings_new();
+ }
+ g_error_free(err);
+ }
+
+ g_free(filename);
+
+ if (settings && op) {
+ gtk_print_operation_set_print_settings(op, settings);
+ }
+
+ err = NULL;
+ filename = g_build_filename(wGetAppWorkDir(), PAGESETTINGS, NULL);
+
+ if (!(page_setup = gtk_page_setup_new_from_file(filename, &err))) {
+ // ignore file not found error as defaults will be used
+ if (err->code != G_FILE_ERROR_NOENT) {
+ dialog = gtk_message_dialog_new(GTK_WINDOW(gtkMainW->gtkwin),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
+ "%s",err->message);
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+ } else {
+ page_setup = gtk_page_setup_new();
+ }
+
+ g_error_free(err);
+ } else {
+ // on success get the paper dimensions
+ WlibGetPaperSize();
+ }
+
+ g_free(filename);
+
+ if (page_setup && op) {
+ gtk_print_operation_set_default_page_setup(op, page_setup);
+ }
}
@@ -180,55 +179,55 @@ WlibApplySettings(GtkPrintOperation *op)
void
WlibSaveSettings(GtkPrintOperation *op)
{
- GError *err = NULL;
- gchar *filename;
- GtkWidget *dialog;
+ GError *err = NULL;
+ gchar *filename;
+ GtkWidget *dialog;
- if (op) {
- if (settings != NULL) {
- g_object_unref(settings);
- }
+ if (op) {
+ if (settings != NULL) {
+ g_object_unref(settings);
+ }
- settings = g_object_ref(gtk_print_operation_get_print_settings(op));
- }
+ settings = g_object_ref(gtk_print_operation_get_print_settings(op));
+ }
- filename = g_build_filename(wGetAppWorkDir(), PRINTSETTINGS, NULL);
+ filename = g_build_filename(wGetAppWorkDir(), PRINTSETTINGS, NULL);
- if (!gtk_print_settings_to_file(settings, filename, &err)) {
- dialog = gtk_message_dialog_new(GTK_WINDOW(gtkMainW->gtkwin),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
- "%s",err->message);
+ if (!gtk_print_settings_to_file(settings, filename, &err)) {
+ dialog = gtk_message_dialog_new(GTK_WINDOW(gtkMainW->gtkwin),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
+ "%s",err->message);
- g_error_free(err);
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
- }
+ g_error_free(err);
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+ }
- g_free(filename);
+ g_free(filename);
- if (op) {
- if (page_setup != NULL) {
- g_object_unref(page_setup);
- }
+ if (op) {
+ if (page_setup != NULL) {
+ g_object_unref(page_setup);
+ }
- page_setup = g_object_ref(gtk_print_operation_get_default_page_setup(op));
- }
+ page_setup = g_object_ref(gtk_print_operation_get_default_page_setup(op));
+ }
- filename = g_build_filename(wGetAppWorkDir(), PAGESETTINGS, NULL);
+ filename = g_build_filename(wGetAppWorkDir(), PAGESETTINGS, NULL);
- if (!gtk_page_setup_to_file(page_setup, filename, &err)) {
- dialog = gtk_message_dialog_new(GTK_WINDOW(gtkMainW->gtkwin),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
- "%s",err->message);
+ if (!gtk_page_setup_to_file(page_setup, filename, &err)) {
+ dialog = gtk_message_dialog_new(GTK_WINDOW(gtkMainW->gtkwin),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
+ "%s",err->message);
- g_error_free(err);
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
- }
+ g_error_free(err);
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+ }
- g_free(filename);
+ g_free(filename);
}
@@ -241,30 +240,32 @@ WlibSaveSettings(GtkPrintOperation *op)
void wPrintSetup(wPrintSetupCallBack_p callback)
{
- GtkPageSetup *new_page_setup;
- gchar *filename;
- GError *err;
- GtkWidget *dialog;
+ GtkPageSetup *new_page_setup;
+// gchar *filename;
+// GError *err;
+// GtkWidget *dialog;
- if ( !settings )
- WlibApplySettings(NULL);
+ if ( !settings ) {
+ WlibApplySettings(NULL);
+ }
- new_page_setup = gtk_print_run_page_setup_dialog(GTK_WINDOW(gtkMainW->gtkwin),
- page_setup, settings);
+ new_page_setup = gtk_print_run_page_setup_dialog(GTK_WINDOW(gtkMainW->gtkwin),
+ page_setup, settings);
- if (page_setup && (page_setup != new_page_setup)) { //Can be the same if no mods...
- g_object_unref(page_setup);
- }
+ if (page_setup
+ && (page_setup != new_page_setup)) { //Can be the same if no mods...
+ g_object_unref(page_setup);
+ }
- page_setup = new_page_setup;
+ page_setup = new_page_setup;
- WlibGetPaperSize();
- WlibSaveSettings(NULL);
+ WlibGetPaperSize();
+ WlibSaveSettings(NULL);
}
/*****************************************************************************
*
- *
+ *
*
*/
@@ -272,7 +273,7 @@ void wPrintSetup(wPrintSetupCallBack_p callback)
static GtkPrinter * pDefaultPrinter = NULL;
gboolean isDefaultPrinter( GtkPrinter * printer, gpointer data )
{
-const char * pPrinterName = gtk_printer_get_name( printer );
+//const char * pPrinterName = gtk_printer_get_name( printer );
if ( gtk_printer_is_default( printer ) ) {
pDefaultPrinter = printer;
return TRUE;
@@ -284,18 +285,19 @@ static void getDefaultPrinter()
{
pDefaultPrinter = NULL;
gtk_enumerate_printers( isDefaultPrinter, NULL, NULL, TRUE );
-}
+}
const char * wPrintGetName()
{
static char sPrinterName[100];
WlibApplySettings( NULL );
- const char * pPrinterName =
- gtk_print_settings_get( settings, "format-for-printer" );
+ const char * pPrinterName =
+ gtk_print_settings_get( settings, "format-for-printer" );
if ( pPrinterName == NULL ) {
getDefaultPrinter();
- if ( pDefaultPrinter )
+ if ( pDefaultPrinter ) {
pPrinterName = gtk_printer_get_name( pDefaultPrinter );
+ }
}
if ( pPrinterName == NULL ) {
pPrinterName = "";
@@ -303,8 +305,9 @@ const char * wPrintGetName()
strncpy (sPrinterName, pPrinterName, sizeof sPrinterName - 1 );
sPrinterName[ sizeof sPrinterName - 1 ] = '\0';
for ( char * cp = sPrinterName; *cp; cp++ )
- if ( *cp == ':' )
+ if ( *cp == ':' ) {
*cp = '-';
+ }
return sPrinterName;
}
/*****************************************************************************
@@ -325,71 +328,65 @@ const char * wPrintGetName()
static void setLineType(
- double lineWidth,
- wDrawLineType_e lineType,
- wDrawOpts opts)
+ double lineWidth,
+ wDrawLineType_e lineType,
+ wDrawOpts opts)
{
- cairo_t *cr = psPrint_d.printContext;
-
- double dashes[] = { DASH_LENGTH, 3 }; //Reduce gap in between dashes
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
-
- if (lineWidth < 0.0) {
- lineWidth = P2I(-lineWidth)*2.0/scale_adjust;
- }
-
- // make sure that there is a minimum line width used
- if (lineWidth <= 0.09) {
- lineWidth = 0.1/scale_adjust;
- }
-
- cairo_set_line_width(cr, lineWidth);
- switch(lineType) {
- case wDrawLineDot:
- {
- double dashes[] = { 1, 2 , 1, 2};
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cr, dashes, len_dashes, 0.0);
- break;
- }
- case wDrawLineDash:
- {
- double dashes[] = { DASH_LENGTH, 3 }; //Reduce gap in between dashes
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cr, dashes, len_dashes, 0.0);
- break;
- }
- case wDrawLineDashDot:
- {
- double dashes[] = { 3, 2, 1, 2};
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cr, dashes, len_dashes, 0.0);
- break;
- }
- case wDrawLineDashDotDot:
- {
- double dashes[] = { 3, 2, 1, 2, 1, 2};
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cr, dashes, len_dashes, 0.0);
- break;
- }
- case wDrawLineCenter:
- {
- double dashes[] = { 1.5*DASH_LENGTH, 3, DASH_LENGTH, 3};
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cr, dashes, len_dashes, 0.0);
- break;
- }
- case wDrawLinePhantom:
- {
- double dashes[] = { 1.5*DASH_LENGTH, 3, DASH_LENGTH, 3, DASH_LENGTH, 3};
- static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
- cairo_set_dash(cr, dashes, len_dashes, 0.0);
- break;
- }
- default:
- cairo_set_dash(cr, NULL, 0, 0.0);
- }
+ cairo_t *cr = psPrint_d.printContext;
+
+// double dashes[] = { DASH_LENGTH, 3 }; //Reduce gap in between dashes
+// static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
+
+ if (lineWidth < 0.0) {
+ lineWidth = P2I(-lineWidth)*2.0/scale_adjust;
+ }
+
+ // make sure that there is a minimum line width used
+ if (lineWidth <= 0.09) {
+ lineWidth = 0.1/scale_adjust;
+ }
+
+ cairo_set_line_width(cr, lineWidth);
+ switch(lineType) {
+ case wDrawLineDot: {
+ double dashes[] = { 1, 2, 1, 2};
+ static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
+ cairo_set_dash(cr, dashes, len_dashes, 0.0);
+ break;
+ }
+ case wDrawLineDash: {
+ double dashes[] = { DASH_LENGTH, 3 }; //Reduce gap in between dashes
+ static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
+ cairo_set_dash(cr, dashes, len_dashes, 0.0);
+ break;
+ }
+ case wDrawLineDashDot: {
+ double dashes[] = { 3, 2, 1, 2};
+ static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
+ cairo_set_dash(cr, dashes, len_dashes, 0.0);
+ break;
+ }
+ case wDrawLineDashDotDot: {
+ double dashes[] = { 3, 2, 1, 2, 1, 2};
+ static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
+ cairo_set_dash(cr, dashes, len_dashes, 0.0);
+ break;
+ }
+ case wDrawLineCenter: {
+ double dashes[] = { 1.5*DASH_LENGTH, 3, DASH_LENGTH, 3};
+ static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
+ cairo_set_dash(cr, dashes, len_dashes, 0.0);
+ break;
+ }
+ case wDrawLinePhantom: {
+ double dashes[] = { 1.5*DASH_LENGTH, 3, DASH_LENGTH, 3, DASH_LENGTH, 3};
+ static int len_dashes = sizeof(dashes) / sizeof(dashes[0]);
+ cairo_set_dash(cr, dashes, len_dashes, 0.0);
+ break;
+ }
+ default:
+ cairo_set_dash(cr, NULL, 0, 0.0);
+ }
}
@@ -401,14 +398,14 @@ static void setLineType(
*/
static void psSetColor(
- wDrawColor color)
+ wDrawColor color)
{
- cairo_t *cr = psPrint_d.printContext;
- GdkColor* const gcolor = wlibGetColor(color, TRUE);
+ cairo_t *cr = psPrint_d.printContext;
+ GdkColor* const gcolor = wlibGetColor(color, TRUE);
- cairo_set_source_rgb(cr, gcolor->red / 65535.0,
- gcolor->green / 65535.0,
- gcolor->blue / 65535.0);
+ cairo_set_source_rgb(cr, gcolor->red / 65535.0,
+ gcolor->green / 65535.0,
+ gcolor->blue / 65535.0);
}
/**
@@ -423,29 +420,29 @@ static void psSetColor(
*/
void psPrintLine(
- wDrawPix_t x0, wDrawPix_t y0,
- wDrawPix_t x1, wDrawPix_t y1,
- wDrawWidth width,
- wDrawLineType_e lineType,
- wDrawColor color,
- wDrawOpts opts)
+ wDrawPix_t x0, wDrawPix_t y0,
+ wDrawPix_t x1, wDrawPix_t y1,
+ wDrawWidth width,
+ wDrawLineType_e lineType,
+ wDrawColor color,
+ wDrawOpts opts)
{
- if (color == wDrawColorWhite) {
- return;
- }
-
- if (opts&wDrawOptTemp) {
- return;
- }
-
- psSetColor(color);
- setLineType(width, lineType, opts);
-
- cairo_move_to(psPrint_d.printContext,
- x0, y0);
- cairo_line_to(psPrint_d.printContext,
- x1, y1);
- cairo_stroke(psPrint_d.printContext);
+ if (color == wDrawColorWhite) {
+ return;
+ }
+
+ if (opts&wDrawOptTemp) {
+ return;
+ }
+
+ psSetColor(color);
+ setLineType(width, lineType, opts);
+
+ cairo_move_to(psPrint_d.printContext,
+ x0, y0);
+ cairo_line_to(psPrint_d.printContext,
+ x1, y1);
+ cairo_stroke(psPrint_d.printContext);
}
/**
@@ -462,65 +459,65 @@ void psPrintLine(
*/
void psPrintArc(
- wDrawPix_t x0, wDrawPix_t y0,
- wDrawPix_t r,
- double angle0,
- double angle1,
- wBool_t drawCenter,
- wDrawWidth width,
- wDrawLineType_e lineType,
- wDrawColor color,
- wDrawOpts opts)
+ wDrawPix_t x0, wDrawPix_t y0,
+ wDrawPix_t r,
+ double angle0,
+ double angle1,
+ wBool_t drawCenter,
+ wDrawWidth width,
+ wDrawLineType_e lineType,
+ wDrawColor color,
+ wDrawOpts opts)
{
- cairo_t *cr = psPrint_d.printContext;
+ cairo_t *cr = psPrint_d.printContext;
- if (color == wDrawColorWhite) {
- return;
- }
+ if (color == wDrawColorWhite) {
+ return;
+ }
- if (opts&wDrawOptTemp) {
- return;
- }
+ if (opts&wDrawOptTemp) {
+ return;
+ }
- psSetColor(color);
- setLineType(width, lineType, opts);
+ psSetColor(color);
+ setLineType(width, lineType, opts);
- if (angle1 >= 360.0) {
- angle1 = 359.999;
- }
+ if (angle1 >= 360.0) {
+ angle1 = 359.999;
+ }
- angle1 = 90.0-(angle0+angle1);
+ angle1 = 90.0-(angle0+angle1);
- while (angle1 < 0.0) {
- angle1 += 360.0;
- }
+ while (angle1 < 0.0) {
+ angle1 += 360.0;
+ }
- while (angle1 >= 360.0) {
- angle1 -= 360.0;
- }
+ while (angle1 >= 360.0) {
+ angle1 -= 360.0;
+ }
- angle0 = 90.0-angle0;
+ angle0 = 90.0-angle0;
- while (angle0 < 0.0) {
- angle0 += 360.0;
- }
+ while (angle0 < 0.0) {
+ angle0 += 360.0;
+ }
- while (angle0 >= 360.0) {
- angle0 -= 360.0;
- }
+ while (angle0 >= 360.0) {
+ angle0 -= 360.0;
+ }
- // draw the curve
- cairo_arc(cr, x0, y0, r, angle1 * M_PI / 180.0, angle0 * M_PI / 180.0);
+ // draw the curve
+ cairo_arc(cr, x0, y0, r, angle1 * M_PI / 180.0, angle0 * M_PI / 180.0);
- if (drawCenter) {
- // draw crosshair for center of curve
- cairo_move_to(cr, x0 - CENTERMARK_LENGTH / 2, y0);
- cairo_line_to(cr, x0 + CENTERMARK_LENGTH / 2, y0);
- cairo_move_to(cr, x0, y0 - CENTERMARK_LENGTH / 2);
- cairo_line_to(cr, x0, y0 + CENTERMARK_LENGTH / 2);
- }
+ if (drawCenter) {
+ // draw crosshair for center of curve
+ cairo_move_to(cr, x0 - CENTERMARK_LENGTH / 2, y0);
+ cairo_line_to(cr, x0 + CENTERMARK_LENGTH / 2, y0);
+ cairo_move_to(cr, x0, y0 - CENTERMARK_LENGTH / 2);
+ cairo_line_to(cr, x0, y0 + CENTERMARK_LENGTH / 2);
+ }
- cairo_stroke(psPrint_d.printContext);
+ cairo_stroke(psPrint_d.printContext);
}
/**
@@ -534,28 +531,28 @@ void psPrintArc(
*/
void psPrintFillRectangle(
- wDrawPix_t x0, wDrawPix_t y0,
- wDrawPix_t x1, wDrawPix_t y1,
- wDrawColor color,
- wDrawOpts opts)
+ wDrawPix_t x0, wDrawPix_t y0,
+ wDrawPix_t x1, wDrawPix_t y1,
+ wDrawColor color,
+ wDrawOpts opts)
{
- cairo_t *cr = psPrint_d.printContext;
- double width = x0 - x1;
- double height = y0 - y1;
+ cairo_t *cr = psPrint_d.printContext;
+ double width = x0 - x1;
+ double height = y0 - y1;
- if (color == wDrawColorWhite) {
- return;
- }
+ if (color == wDrawColorWhite) {
+ return;
+ }
- if (opts&wDrawOptTemp) {
- return;
- }
+ if (opts&wDrawOptTemp) {
+ return;
+ }
- psSetColor(color);
+ psSetColor(color);
- cairo_rectangle(cr, x0, y0, width, height);
+ cairo_rectangle(cr, x0, y0, width, height);
- cairo_fill(cr);
+ cairo_fill(cr);
}
/**
@@ -570,34 +567,34 @@ void psPrintFillRectangle(
*/
void psPrintFillPolygon(
- wDrawPix_t p[][2],
- wPolyLine_e type[],
- int cnt,
- wDrawColor color,
- wDrawOpts opts,
- int fill,
- int open )
+ wDrawPix_t p[][2],
+ wPolyLine_e type[],
+ int cnt,
+ wDrawColor color,
+ wDrawOpts opts,
+ int fill,
+ int open )
{
- int inx;
- cairo_t *cr = psPrint_d.printContext;
+ int inx;
+ cairo_t *cr = psPrint_d.printContext;
- if (color == wDrawColorWhite) {
- return;
- }
+ if (color == wDrawColorWhite) {
+ return;
+ }
- if (opts&wDrawOptTemp) {
- return;
- }
+ if (opts&wDrawOptTemp) {
+ return;
+ }
- psSetColor(color);
+ psSetColor(color);
- wDrawPix_t mid0[2], mid1[2], mid2[2], mid3[2], mid4[2];
+ wDrawPix_t mid0[2], mid1[2], /*mid2[2],*/ mid3[2], mid4[2];
- for (inx=0; inx<cnt; inx++) {
- int j = inx-1;
- int k = inx+1;
- if (j < 0) j = cnt-1;
- if (k > cnt-1) k = 0;
+ for (inx=0; inx<cnt; inx++) {
+ int j = inx-1;
+ int k = inx+1;
+ if (j < 0) { j = cnt-1; }
+ if (k > cnt-1) { k = 0; }
double len0, len1;
double d0x = (p[inx][0]-p[j][0]);
double d0y = (p[inx][1]-p[j][1]);
@@ -625,33 +622,37 @@ void psPrintFillPolygon(
mid4[1] = (mid1[1]-p[inx][1])/2+p[inx][1];
wDrawPix_t save[2];
if (inx==0) {
- if (!type || (type && type[0] == wPolyLineStraight) || open) {
- cairo_move_to(cr, p[ 0 ][ 0 ], p[ 0 ][ 1 ]);
- save[0] = p[0][0]; save[1] = p[0][1];
- } else {
- cairo_move_to(cr, mid0[0], mid0[1]);
- if (type[inx] == wPolyLineSmooth)
- cairo_curve_to(cr, p[inx][0], p[inx][1], p[inx][0], p[inx][1], mid1[0], mid1[1]);
- else
- cairo_curve_to(cr, mid3[0], mid3[1], mid4[0], mid4[1], mid1[0], mid1[1]);
- save[0] = mid0[0]; save[1] = mid0[1];
- }
- } else if (!type || (type && type[inx] == wPolyLineStraight) || (open && (inx==cnt-1)) ) {
+ if (!type || (type && type[0] == wPolyLineStraight) || open) {
+ cairo_move_to(cr, p[ 0 ][ 0 ], p[ 0 ][ 1 ]);
+ save[0] = p[0][0]; save[1] = p[0][1];
+ } else {
+ cairo_move_to(cr, mid0[0], mid0[1]);
+ if (type[inx] == wPolyLineSmooth) {
+ cairo_curve_to(cr, p[inx][0], p[inx][1], p[inx][0], p[inx][1], mid1[0],
+ mid1[1]);
+ } else {
+ cairo_curve_to(cr, mid3[0], mid3[1], mid4[0], mid4[1], mid1[0], mid1[1]);
+ }
+ save[0] = mid0[0]; save[1] = mid0[1];
+ }
+ } else if (!type || (type && type[inx] == wPolyLineStraight) || (open
+ && (inx==cnt-1)) ) {
cairo_line_to(cr, p[ inx ][ 0 ], p[ inx ][ 1 ]);
} else {
cairo_line_to(cr, mid0[ 0 ], mid0[ 1 ]);
- if (type && type[inx] == wPolyLineSmooth)
+ if (type && type[inx] == wPolyLineSmooth) {
cairo_curve_to(cr, p[inx][0],p[inx][1],p[inx][0],p[inx][1],mid1[0],mid1[1]);
- else
+ } else {
cairo_curve_to(cr, mid3[0],mid3[1],mid4[0],mid4[1],mid1[0],mid1[1]);
+ }
}
if ((inx==cnt-1) && !open) {
cairo_line_to(cr, save[0], save[1]);
}
- }
+ }
- if (fill && !open) cairo_fill(cr);
- else cairo_stroke(cr);
+ if (fill && !open) { cairo_fill(cr); }
+ else { cairo_stroke(cr); }
}
/**
@@ -665,25 +666,25 @@ void psPrintFillPolygon(
*/
void psPrintFillCircle(
- wDrawPix_t x0, wDrawPix_t y0,
- wDrawPix_t r,
- wDrawColor color,
- wDrawOpts opts)
+ wDrawPix_t x0, wDrawPix_t y0,
+ wDrawPix_t r,
+ wDrawColor color,
+ wDrawOpts opts)
{
- if (color == wDrawColorWhite) {
- return;
- }
+ if (color == wDrawColorWhite) {
+ return;
+ }
- if (opts&wDrawOptTemp) {
- return;
- }
+ if (opts&wDrawOptTemp) {
+ return;
+ }
- psSetColor(color);
+ psSetColor(color);
- cairo_arc(psPrint_d.printContext,
- x0, y0, r, 0.0, 2 * M_PI);
+ cairo_arc(psPrint_d.printContext,
+ x0, y0, r, 0.0, 2 * M_PI);
- cairo_fill(psPrint_d.printContext);
+ cairo_fill(psPrint_d.printContext);
}
@@ -710,102 +711,102 @@ void psPrintFillCircle(
*/
void psPrintString(
- wDrawPix_t x, wDrawPix_t y,
- double a,
- char * s,
- wFont_p fp,
- double fs,
- wDrawColor color,
- wDrawOpts opts)
+ wDrawPix_t x, wDrawPix_t y,
+ double a,
+ char * s,
+ wFont_p fp,
+ double fs,
+ wDrawColor color,
+ wDrawOpts opts)
{
- char * cp;
- double x0 = (double)x, y0 = (double)y;
- int text_height, text_width;
- double ascent;
+// char * cp;
+ double x0 = (double)x, y0 = (double)y;
+ int text_height, text_width;
+// double ascent;
- cairo_t *cr;
- cairo_matrix_t matrix;
+ cairo_t *cr;
+ cairo_matrix_t matrix;
- PangoLayout *layout;
- PangoFontDescription *desc;
- PangoFontMetrics *metrics;
- PangoContext *pcontext;
+ PangoLayout *layout;
+ PangoFontDescription *desc;
+// PangoFontMetrics *metrics;
+ PangoContext *pcontext;
- if (color == wDrawColorWhite) {
- return;
- }
+ if (color == wDrawColorWhite) {
+ return;
+ }
- cr = psPrint_d.printContext;
+ cr = psPrint_d.printContext;
- // get the current transformation matrix and transform the starting
- // point of the string
+ // get the current transformation matrix and transform the starting
+ // point of the string
- cairo_save(cr);
+ cairo_save(cr);
- cairo_get_matrix(cr, &matrix);
+ cairo_get_matrix(cr, &matrix);
- cairo_matrix_transform_point(&matrix, &x0, &y0);
+ cairo_matrix_transform_point(&matrix, &x0, &y0);
- cairo_identity_matrix(cr);
+ cairo_identity_matrix(cr);
- layout = pango_cairo_create_layout(cr);
+ layout = pango_cairo_create_layout(cr);
- // set the correct font and size
- /** \todo use a getter function instead of double conversion */
- desc = pango_font_description_from_string(wlibFontTranslate(fp));
+ // set the correct font and size
+ /** \todo use a getter function instead of double conversion */
+ desc = pango_font_description_from_string(wlibFontTranslate(fp));
- pango_font_description_set_size(desc, fs * PANGO_SCALE * scale_text);
+ pango_font_description_set_size(desc, fs * PANGO_SCALE * scale_text);
- // render the string to a Pango layout
- pango_layout_set_font_description(layout, desc);
+ // render the string to a Pango layout
+ pango_layout_set_font_description(layout, desc);
- gchar *utf8 = wlibConvertInput(s);
+ gchar *utf8 = wlibConvertInput(s);
- pango_layout_set_text(layout, utf8, -1);
- pango_layout_set_width(layout, -1);
- pango_layout_set_alignment(layout, PANGO_ALIGN_LEFT);
- pango_layout_get_size(layout, &text_width, &text_height);
+ pango_layout_set_text(layout, utf8, -1);
+ pango_layout_set_width(layout, -1);
+ pango_layout_set_alignment(layout, PANGO_ALIGN_LEFT);
+ pango_layout_get_size(layout, &text_width, &text_height);
- text_width = text_width / PANGO_SCALE;
- text_height = text_height / PANGO_SCALE;
+ text_width = text_width / PANGO_SCALE;
+ text_height = text_height / PANGO_SCALE;
- // get the height of the string
- pcontext = pango_cairo_create_context(cr);
- metrics = pango_context_get_metrics(pcontext, desc,
- pango_context_get_language(pcontext));
+ // get the height of the string
+ pcontext = pango_cairo_create_context(cr);
+// metrics = pango_context_get_metrics(pcontext, desc,
+// pango_context_get_language(pcontext));
- ascent = pango_font_metrics_get_ascent(metrics) / PANGO_SCALE;
+// ascent = pango_font_metrics_get_ascent(metrics) / PANGO_SCALE;
- int baseline = pango_layout_get_baseline(layout) / PANGO_SCALE;
+ int baseline = pango_layout_get_baseline(layout) / PANGO_SCALE;
- cairo_translate(cr, x0, y0 );
- cairo_rotate(cr, -a * M_PI / 180.0);
- cairo_translate( cr, 0, -baseline );
+ cairo_translate(cr, x0, y0 );
+ cairo_rotate(cr, -a * M_PI / 180.0);
+ cairo_translate( cr, 0, -baseline );
- cairo_move_to(cr,0,0);
+ cairo_move_to(cr,0,0);
- pango_cairo_update_layout(cr, layout);
+ pango_cairo_update_layout(cr, layout);
- // set the color
- psSetColor(color);
+ // set the color
+ psSetColor(color);
- // and show the string
- if(!(opts & wDrawOutlineFont)) {
+ // and show the string
+ if(!(opts & wDrawOutlineFont)) {
pango_cairo_show_layout(cr, layout);
cairo_stroke( cr );
} else {
PangoLayoutLine *line;
line = pango_layout_get_line_readonly (layout, 0);
- setLineType( wDrawLineSolid, 0, 0 );
+ setLineType( wDrawLineSolid, 0, 0 );
pango_cairo_layout_line_path (cr, line);
- cairo_stroke( cr );
+ cairo_stroke( cr );
}
- // free unused objects
- g_object_unref(layout);
- g_object_unref(pcontext);
+ // free unused objects
+ g_object_unref(layout);
+ g_object_unref(pcontext);
- cairo_restore(cr);
+ cairo_restore(cr);
}
/**
@@ -818,12 +819,12 @@ void psPrintString(
void wPrintClip(wDrawPix_t x, wDrawPix_t y, wDrawPix_t w, wDrawPix_t h)
{
- cairo_move_to(psPrint_d.printContext, x, y);
- cairo_rel_line_to(psPrint_d.printContext, w, 0);
- cairo_rel_line_to(psPrint_d.printContext, 0, h);
- cairo_rel_line_to(psPrint_d.printContext, -w, 0);
- cairo_close_path(psPrint_d.printContext);
- cairo_clip(psPrint_d.printContext);
+ cairo_move_to(psPrint_d.printContext, x, y);
+ cairo_rel_line_to(psPrint_d.printContext, w, 0);
+ cairo_rel_line_to(psPrint_d.printContext, 0, h);
+ cairo_rel_line_to(psPrint_d.printContext, -w, 0);
+ cairo_close_path(psPrint_d.printContext);
+ cairo_clip(psPrint_d.printContext);
}
/*****************************************************************************
@@ -840,22 +841,22 @@ void wPrintClip(wDrawPix_t x, wDrawPix_t y, wDrawPix_t w, wDrawPix_t h)
static void
WlibGetPaperSize(void)
{
- double temp;
-
- bBorder = gtk_page_setup_get_bottom_margin(page_setup, GTK_UNIT_INCH);
- tBorder = gtk_page_setup_get_top_margin(page_setup, GTK_UNIT_INCH);
- lBorder = gtk_page_setup_get_left_margin(page_setup, GTK_UNIT_INCH);
- rBorder = gtk_page_setup_get_right_margin(page_setup, GTK_UNIT_INCH);
- paperHeight = gtk_page_setup_get_paper_height(page_setup, GTK_UNIT_INCH);
- paperWidth = gtk_page_setup_get_paper_width(page_setup, GTK_UNIT_INCH);
-
- // XTrackCAD does page orientation itself. Basic assumption is that the
- // paper is always oriented in portrait mode. Ignore settings by user
- if (paperHeight < paperWidth) {
- temp = paperHeight;
- paperHeight = paperWidth;
- paperWidth = temp;
- }
+ double temp;
+
+ bBorder = gtk_page_setup_get_bottom_margin(page_setup, GTK_UNIT_INCH);
+ tBorder = gtk_page_setup_get_top_margin(page_setup, GTK_UNIT_INCH);
+ lBorder = gtk_page_setup_get_left_margin(page_setup, GTK_UNIT_INCH);
+ rBorder = gtk_page_setup_get_right_margin(page_setup, GTK_UNIT_INCH);
+ paperHeight = gtk_page_setup_get_paper_height(page_setup, GTK_UNIT_INCH);
+ paperWidth = gtk_page_setup_get_paper_width(page_setup, GTK_UNIT_INCH);
+
+ // XTrackCAD does page orientation itself. Basic assumption is that the
+ // paper is always oriented in portrait mode. Ignore settings by user
+ if (paperHeight < paperWidth) {
+ temp = paperHeight;
+ paperHeight = paperWidth;
+ paperWidth = temp;
+ }
}
/**
@@ -868,15 +869,15 @@ WlibGetPaperSize(void)
void wPrintGetMargins(
- double * tMargin,
- double * rMargin,
- double * bMargin,
- double * lMargin )
+ double * tMargin,
+ double * rMargin,
+ double * bMargin,
+ double * lMargin )
{
- if ( tMargin ) *tMargin = tBorder;
- if ( rMargin ) *rMargin = rBorder;
- if ( bMargin ) *bMargin = bBorder;
- if ( lMargin ) *lMargin = lBorder;
+ if ( tMargin ) { *tMargin = tBorder; }
+ if ( rMargin ) { *rMargin = rBorder; }
+ if ( bMargin ) { *bMargin = bBorder; }
+ if ( lMargin ) { *lMargin = lBorder; }
}
@@ -889,18 +890,18 @@ void wPrintGetMargins(
*/
void wPrintGetPageSize(
- double * w,
- double * h)
+ double * w,
+ double * h)
{
- // if necessary load the settings
- if (!settings) {
- WlibApplySettings(NULL);
- }
+ // if necessary load the settings
+ if (!settings) {
+ WlibApplySettings(NULL);
+ }
- WlibGetPaperSize();
+ WlibGetPaperSize();
- *w = paperWidth;
- *h = paperHeight;
+ *w = paperWidth;
+ *h = paperHeight;
}
/**
@@ -909,11 +910,11 @@ void wPrintGetPageSize(
* \param context IN unused
* \return
*/
-static void printAbort(void * context)
-{
- printContinue = FALSE;
+//static void printAbort(void * context)
+//{
+// printContinue = FALSE;
// wWinShow( printAbortW, FALSE );
-}
+//}
/**
* Initialize new page.
@@ -925,11 +926,11 @@ static void printAbort(void * context)
*/
wDraw_p wPrintPageStart(void)
{
- pageCount++;
+ pageCount++;
- cairo_save(psPrint_d.printContext);
+ cairo_save(psPrint_d.printContext);
- return &psPrint_d;
+ return &psPrint_d;
}
/**
@@ -945,11 +946,11 @@ wDraw_p wPrintPageStart(void)
wBool_t wPrintPageEnd(wDraw_p p)
{
- cairo_show_page(psPrint_d.printContext);
+ cairo_show_page(psPrint_d.printContext);
- cairo_restore(psPrint_d.printContext);
+ cairo_restore(psPrint_d.printContext);
- return printContinue;
+ return printContinue;
}
/*****************************************************************************
@@ -970,93 +971,93 @@ wBool_t wPrintPageEnd(wDraw_p p)
wBool_t wPrintDocStart(const char * title, int fTotalPageCount, int * copiesP)
{
- GtkWidget *printDialog;
- gint res;
- cairo_surface_type_t surface_type;
- cairo_matrix_t matrix;
+ GtkWidget *printDialog;
+ gint res;
+// cairo_surface_type_t surface_type;
+// cairo_matrix_t matrix;
- printDialog = gtk_print_unix_dialog_new(title, GTK_WINDOW(gtkMainW->gtkwin));
+ printDialog = gtk_print_unix_dialog_new(title, GTK_WINDOW(gtkMainW->gtkwin));
- // load the settings
- WlibApplySettings(NULL);
+ // load the settings
+ WlibApplySettings(NULL);
- // and apply them to the printer dialog
- gtk_print_unix_dialog_set_settings((GtkPrintUnixDialog *)printDialog, settings);
- gtk_print_unix_dialog_set_page_setup((GtkPrintUnixDialog *)printDialog,
- page_setup);
+ // and apply them to the printer dialog
+ gtk_print_unix_dialog_set_settings((GtkPrintUnixDialog *)printDialog, settings);
+ gtk_print_unix_dialog_set_page_setup((GtkPrintUnixDialog *)printDialog,
+ page_setup);
- res = gtk_dialog_run((GtkDialog *)printDialog);
+ res = gtk_dialog_run((GtkDialog *)printDialog);
- if (res == GTK_RESPONSE_OK) {
- selPrinter = gtk_print_unix_dialog_get_selected_printer((
- GtkPrintUnixDialog *)printDialog);
+ if (res == GTK_RESPONSE_OK) {
+ selPrinter = gtk_print_unix_dialog_get_selected_printer((
+ GtkPrintUnixDialog *)printDialog);
- if (settings) {
- g_object_unref(settings);
- }
+ if (settings) {
+ g_object_unref(settings);
+ }
- settings = gtk_print_unix_dialog_get_settings((GtkPrintUnixDialog *)
- printDialog);
+ settings = gtk_print_unix_dialog_get_settings((GtkPrintUnixDialog *)
+ printDialog);
- if (page_setup) {
- g_object_unref(page_setup);
- }
+ if (page_setup) {
+ g_object_unref(page_setup);
+ }
- page_setup = gtk_print_unix_dialog_get_page_setup((GtkPrintUnixDialog *)
- printDialog);
+ page_setup = gtk_print_unix_dialog_get_page_setup((GtkPrintUnixDialog *)
+ printDialog);
- curPrintJob = gtk_print_job_new(title,
- selPrinter,
- settings,
- page_setup);
+ curPrintJob = gtk_print_job_new(title,
+ selPrinter,
+ settings,
+ page_setup);
- psPrint_d.curPrintSurface = gtk_print_job_get_surface(curPrintJob,
- NULL);
- psPrint_d.printContext = cairo_create(psPrint_d.curPrintSurface);
+ psPrint_d.curPrintSurface = gtk_print_job_get_surface(curPrintJob,
+ NULL);
+ psPrint_d.printContext = cairo_create(psPrint_d.curPrintSurface);
- WlibApplySettings( NULL );
- //update the paper dimensions
- WlibGetPaperSize();
+ WlibApplySettings( NULL );
+ //update the paper dimensions
+ WlibGetPaperSize();
- /* for all surfaces including files the resolution is always 72 ppi (as all GTK uses PDF) */
- surface_type = cairo_surface_get_type(psPrint_d.curPrintSurface);
+ /* for all surfaces including files the resolution is always 72 ppi (as all GTK uses PDF) */
+ /*surface_type = */cairo_surface_get_type(psPrint_d.curPrintSurface);
- /*
- * Override up-scaling for some printer drivers/Linux systems that don't support the latest CUPS
- * - the user either sets preferences or the environment variable XTRKCADPRINTSCALE to a value
- * and we just let the dpi default to 72ppi and set scaling to that value.
- * And for PangoText we allow an override via preferences or variable XTRKCADPRINTTEXTSCALE
- * Note - doing this will introduce differing artifacts.
- *
- */
- char * sEnvScale = PRODUCT "PRINTSCALE";
- char * sEnvTextScale = PRODUCT "PRINTTEXTSCALE";
+ /*
+ * Override up-scaling for some printer drivers/Linux systems that don't support the latest CUPS
+ * - the user either sets preferences or the environment variable XTRKCADPRINTSCALE to a value
+ * and we just let the dpi default to 72ppi and set scaling to that value.
+ * And for PangoText we allow an override via preferences or variable XTRKCADPRINTTEXTSCALE
+ * Note - doing this will introduce differing artifacts.
+ *
+ */
+ char * sEnvScale = PRODUCT "PRINTSCALE";
+ char * sEnvTextScale = PRODUCT "PRINTTEXTSCALE";
- scale_text = 1.0;
- scale_adjust = 1.0;
+ scale_text = 1.0;
+ scale_adjust = 1.0;
- double printScale,printTextScale;
+ double printScale,printTextScale;
- wPrefGetFloat(PREFSECTION, PRINTSCALE, &printScale, -1.0);
- wPrefGetFloat(PREFSECTION, PRINTTEXTSCALE, &printTextScale, -1.0);
+ wPrefGetFloat(PREFSECTION, PRINTSCALE, &printScale, -1.0);
+ wPrefGetFloat(PREFSECTION, PRINTTEXTSCALE, &printTextScale, -1.0);
- //If the preferences are not set, look at environmental variables
+ //If the preferences are not set, look at environmental variables
- if (printScale < 0.0 ) {
- if (getenv(sEnvScale) && (atof(getenv(sEnvScale)) > 0.0)) {
- printScale = atof(getenv(sEnvScale));
- }
- }
- if (printTextScale < 0.0 ) {
- if (getenv(sEnvTextScale) && (atof(getenv(sEnvTextScale)) > 0.0)) {
- printTextScale = atof(getenv(sEnvTextScale));
- }
- }
+ if (printScale < 0.0 ) {
+ if (getenv(sEnvScale) && (atof(getenv(sEnvScale)) > 0.0)) {
+ printScale = atof(getenv(sEnvScale));
+ }
+ }
+ if (printTextScale < 0.0 ) {
+ if (getenv(sEnvTextScale) && (atof(getenv(sEnvTextScale)) > 0.0)) {
+ printTextScale = atof(getenv(sEnvTextScale));
+ }
+ }
- const char * sPrinterName = gtk_printer_get_name( selPrinter );
- if ((strcmp(sPrinterName,"Print to File") == 0) || printScale < 0.0) {
+ const char * sPrinterName = gtk_printer_get_name( selPrinter );
+ if ((strcmp(sPrinterName,"Print to File") == 0) || printScale < 0.0) {
double p_def = 600;
cairo_surface_set_fallback_resolution(psPrint_d.curPrintSurface, p_def, p_def);
psPrint_d.dpi = p_def;
@@ -1071,33 +1072,33 @@ wBool_t wPrintDocStart(const char * title, int fTotalPageCount, int * copiesP)
psPrint_d.dpi = 72;
}
- // in XTrackCAD 0,0 is top left, in cairo bottom left. This is
- // corrected via the following transformations.
- // also the translate makes sure that the drawing is rendered
- // within the paper margin
+ // in XTrackCAD 0,0 is top left, in cairo bottom left. This is
+ // corrected via the following transformations.
+ // also the translate makes sure that the drawing is rendered
+ // within the paper margin
- cairo_translate(psPrint_d.printContext, lBorder*72, (paperHeight-bBorder)*72 );
+ cairo_translate(psPrint_d.printContext, lBorder*72, (paperHeight-bBorder)*72 );
- cairo_scale(psPrint_d.printContext, 1.0 * scale_adjust, -1.0 * scale_adjust);
+ cairo_scale(psPrint_d.printContext, 1.0 * scale_adjust, -1.0 * scale_adjust);
- //cairo_translate(psPrint_d.printContext, 0, -paperHeight* psPrint_d.dpi);
+ //cairo_translate(psPrint_d.printContext, 0, -paperHeight* psPrint_d.dpi);
- WlibSaveSettings(NULL);
- }
+ WlibSaveSettings(NULL);
+ }
- gtk_widget_destroy(printDialog);
+ gtk_widget_destroy(printDialog);
- if (copiesP) {
- *copiesP = 1;
- }
+ if (copiesP) {
+ *copiesP = 1;
+ }
- printContinue = TRUE;
+ printContinue = TRUE;
- if (res != GTK_RESPONSE_OK) {
- return FALSE;
- } else {
- return TRUE;
- }
+ if (res != GTK_RESPONSE_OK) {
+ return FALSE;
+ } else {
+ return TRUE;
+ }
}
/**
@@ -1112,16 +1113,16 @@ wBool_t wPrintDocStart(const char * title, int fTotalPageCount, int * copiesP)
void
doPrintJobFinished(GtkPrintJob *job, void *data, GError *err)
{
- GtkWidget *dialog;
+// GtkWidget *dialog;
- cairo_destroy(psPrint_d.printContext);
+ cairo_destroy(psPrint_d.printContext);
- if (err) {
- dialog = gtk_message_dialog_new(GTK_WINDOW(gtkMainW->gtkwin),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
- "%s",err->message);
- }
+ if (err) {
+ /*dialog = */gtk_message_dialog_new(GTK_WINDOW(gtkMainW->gtkwin),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
+ "%s",err->message);
+ }
}
/**
@@ -1131,12 +1132,12 @@ doPrintJobFinished(GtkPrintJob *job, void *data, GError *err)
void wPrintDocEnd(void)
{
- cairo_surface_finish(psPrint_d.curPrintSurface);
+ cairo_surface_finish(psPrint_d.curPrintSurface);
- gtk_print_job_send(curPrintJob,
- doPrintJobFinished,
- NULL,
- NULL);
+ gtk_print_job_send(curPrintJob,
+ doPrintJobFinished,
+ NULL,
+ NULL);
// wWinShow( printAbortW, FALSE );
}
@@ -1144,11 +1145,11 @@ void wPrintDocEnd(void)
wBool_t wPrintQuit(void)
{
- return FALSE;
+ return FALSE;
}
wBool_t wPrintInit(void)
{
- return TRUE;
+ return TRUE;
}
diff --git a/app/wlib/gtklib/single.c b/app/wlib/gtklib/single.c
index 3856a64..6204ed5 100644
--- a/app/wlib/gtklib/single.c
+++ b/app/wlib/gtklib/single.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
*/
#define GTK_DISABLE_SINGLE_INCLUDES
@@ -60,24 +60,27 @@ struct wString_t {
*
* \param b IN widget to be updated
* \param arg IN new string value
- * \return
+ * \return
*/
void wStringSetValue(
- wString_p b,
- const char *arg)
+ wString_p b,
+ const char *arg)
{
- if (b->widget == NULL)
+ if (b->widget == NULL) {
abort();
-
+ }
+
// the contents should not be changed programatically while
// the user is editing it
- if( !(gtk_widget_has_focus(b->widget))) {
- if (b->hasSignal)
- gtk_signal_handler_block_by_data(GTK_OBJECT(b->widget), b);
+ if( (b->option&BO_IGNFOCUS) || !(gtk_widget_has_focus(b->widget))) {
+ if (b->hasSignal) {
+ gtk_signal_handler_block_by_data(GTK_OBJECT(b->widget), b);
+ }
gtk_entry_set_text(GTK_ENTRY(b->widget), arg);
- if (b->hasSignal)
+ if (b->hasSignal) {
gtk_signal_handler_unblock_by_data(GTK_OBJECT(b->widget), b);
+ }
}
}
@@ -86,12 +89,12 @@ void wStringSetValue(
*
* \param b IN widget to be updated
* \param w IN new width
- * \return
+ * \return
*/
void wStringSetWidth(
- wString_p b,
- wWinPix_t w)
+ wString_p b,
+ wWinPix_t w)
{
gtk_widget_set_size_request(b->widget, w, -1);
b->w = w;
@@ -105,11 +108,12 @@ void wStringSetWidth(
*/
const char *wStringGetValue(
- wString_p b)
+ wString_p b)
{
- if ( !b->widget )
+ if ( !b->widget ) {
abort();
-
+ }
+
return gtk_entry_get_text(GTK_ENTRY(b->widget));
}
@@ -134,37 +138,41 @@ void wlibStringUpdate()
*
* \param widget IN the edit field
* \param b IN the widget data structure
- * \return
+ * \return
*/
static gboolean stringActivated(
- GtkEntry *widget,
- wString_p b)
+ GtkEntry *widget,
+ wString_p b)
{
- if ( debugWindow >= 1 )
+ if ( debugWindow >= 1 ) {
printf( "stringActivated: %s\n", b->labelStr );
+ }
const char *s;
const char * output = "\n";
- if ( !b )
+ if ( !b ) {
return( FALSE );
-
+ }
+
s = wStringGetValue(b);
- if (b->valueP)
+ if (b->valueP) {
strcpy(b->valueP, s);
+ }
if (b->action) {
b->enter_pressed = TRUE;
b->action( output, b->data);
}
-
+
// select the complete default value to make editing it easier
gtk_editable_select_region( GTK_EDITABLE( widget ), 0, -1 );
return( TRUE );
}
-static gboolean stringExposed(GtkWidget* widget, GdkEventExpose * event, gpointer g )
+static gboolean stringExposed(GtkWidget* widget, GdkEventExpose * event,
+ gpointer g )
{
wControl_p b = (wControl_p)g;
return wControlExpose(widget,event,b);
@@ -176,34 +184,37 @@ static gboolean stringExposed(GtkWidget* widget, GdkEventExpose * event, gpointe
*
* \param widget IN
* \param entry field IN
- * \return
+ * \return
*/
static int stringChanged(
- GtkEntry *widget,
- wString_p b)
+ GtkEntry *widget,
+ wString_p b)
{
- if ( debugWindow >= 1 )
+ if ( debugWindow >= 1 ) {
printf( "stringChanged: %s\n", b->labelStr);
+ }
stringControl = b;
return FALSE;
}
static int stringPreeditChanged(
- GtkEntry *widget,
- wString_p b)
+ GtkEntry *widget,
+ wString_p b)
{
- if ( debugWindow >= 1 )
+ if ( debugWindow >= 1 ) {
printf( "stringPreeditChanged: %s\n", b->labelStr );
+ }
return FALSE;
}
static int stringFocusOutEvent(
- GtkEntry *widget,
- GdkEvent * event,
- wString_p b)
+ GtkEntry *widget,
+ GdkEvent * event,
+ wString_p b)
{
- if ( debugWindow >= 1 )
+ if ( debugWindow >= 1 ) {
printf( "stringFocusOut: %s\n", b->labelStr );
+ }
if (b->action) {
const char *s;
s = gtk_entry_get_text(GTK_ENTRY(b->widget));
@@ -213,64 +224,71 @@ static int stringFocusOutEvent(
return FALSE;
}
static int stringFocusInEvent(
- GtkEntry *widget,
- GdkEvent * event,
- wString_p b)
+ GtkEntry *widget,
+ GdkEvent * event,
+ wString_p b)
{
- if ( debugWindow >= 1 )
+ if ( debugWindow >= 1 ) {
printf( "stringFocusIn: %s\n", b->labelStr );
+ }
stringControl = b;
return FALSE;
}
static int stringLeaveNotifyEvent(
- GtkEntry *widget,
- GdkEvent * event,
- wString_p b)
+ GtkEntry *widget,
+ GdkEvent * event,
+ wString_p b)
{
- if ( debugWindow >= 3 )
+ if ( debugWindow >= 3 ) {
printf( "stringLeaveNotfyEvent: %s\n", b->labelStr );
+ }
return FALSE;
}
static int stringEventAfter(
- GtkEntry *widget,
- wString_p b)
+ GtkEntry *widget,
+ wString_p b)
{
- if ( debugWindow >= 3 )
+ if ( debugWindow >= 3 ) {
printf( "stringEventAfter: %s\n", b->labelStr );
+ }
return FALSE;
}
static int stringEvent(
- GtkEntry *widget,
- wString_p b)
+ GtkEntry *widget,
+ wString_p b)
{
- if ( debugWindow >= 3 )
+ if ( debugWindow >= 3 ) {
printf( "stringEvent: %s\n", b->labelStr );
+ }
return FALSE;
}
static int stringKeyPressEvent(
- GtkEntry *widget,
- GdkEvent * event,
- wString_p b)
+ GtkEntry *widget,
+ GdkEvent * event,
+ wString_p b)
{
- if ( debugWindow >= 1 )
+ if ( debugWindow >= 1 ) {
printf( "stringKeyPressEvent: %s\n", b->labelStr );
+ }
return FALSE;
}
static int stringStateChanged(
- GtkEntry *widget,
- int state,
- wString_p b)
+ GtkEntry *widget,
+ int state,
+ wString_p b)
{
- if ( debugWindow >= 1 )
+ if ( debugWindow >= 1 ) {
printf( "stringStateChanged: %s\n", b->labelStr );
+ }
return FALSE;
}
static int stringActivate(
- GtkEntry *widget,
- wString_p b)
+ GtkEntry *widget,
+ wString_p b)
{
- if ( debugWindow >= 1 )
+ if ( debugWindow >= 1 ) {
printf( "stringActivate: %s\n", b->labelStr );
+ }
return stringChanged( widget, b );
}
/**
@@ -282,30 +300,30 @@ static int stringActivate(
* \param helpStr IN help anchor
* \param labelStr IN label
* \param option IN option (supported BO_READONLY )
- * \param width IN width of entry field
+ * \param width IN width of entry field
* \param valueP IN default value
- * \param valueL IN maximum length of entry
+ * \param valueL IN maximum length of entry
* \param action IN application callback function
* \param data IN application data
* \return the created widget
*/
wString_p wStringCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char *helpStr,
- const char *labelStr,
- long option,
- wWinPix_t width,
- char *valueP,
- wIndex_t valueL,
- wStringCallBack_p action,
- void *data)
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char *helpStr,
+ const char *labelStr,
+ long option,
+ wWinPix_t width,
+ char *valueP,
+ wIndex_t valueL,
+ wStringCallBack_p action,
+ void *data)
{
wString_p b;
- // create and initialize the widget
+ // create and initialize the widget
b = (wString_p)wlibAlloc(parent, B_TEXT, x, y, labelStr, sizeof *b, data);
b->valueP = valueP;
b->action = action;
@@ -314,63 +332,77 @@ wString_p wStringCreate(
b->hasSignal = 0;
wlibComputePos((wControl_p)b);
- // create the gtk entry field and set maximum length if desired
+ // create the gtk entry field and set maximum length if desired
b->widget = (GtkWidget *)gtk_entry_new();
- if (b->widget == NULL) abort();
+ if (b->widget == NULL) { abort(); }
- if( valueL )
+ if( valueL ) {
gtk_entry_set_max_length( GTK_ENTRY( b->widget ), valueL );
-
+ }
+
// it is assumed that the parent is a fixed layout widget and the entry can
// be placed at a specific position
gtk_fixed_put(GTK_FIXED(parent->widget), b->widget, b->realX, b->realY);
-
- // set minimum size for widget
- if (width)
+
+ // set minimum size for widget
+ if (width) {
gtk_widget_set_size_request(b->widget, width, -1);
-
+ }
+
// get the resulting size
wlibControlGetSize((wControl_p)b);
// if desired, place a label in front of the created widget
- if (labelStr)
+ if (labelStr) {
b->labelW = wlibAddLabel((wControl_p)b, labelStr);
-
- if (option & BO_READONLY)
+ }
+
+ if (option & BO_READONLY) {
gtk_editable_set_editable(GTK_EDITABLE(b->widget), FALSE);
-
+ }
+
// set the default text and select it to make replacing it easier
if (b->valueP) {
wStringSetValue(b, b->valueP);
// select the text only if text is editable
}
-
+
// show
gtk_widget_show(b->widget);
-
+
// add the new widget to the list of created widgets
wlibAddButton((wControl_p)b);
-
- // link into help
+
+ // link into help
wlibAddHelpString(b->widget, helpStr);
-
- g_signal_connect(GTK_OBJECT(b->widget), "changed", G_CALLBACK(stringChanged), b);
- g_signal_connect(GTK_OBJECT(b->widget), "preedit-changed", G_CALLBACK(stringPreeditChanged), b);
- g_signal_connect(GTK_OBJECT(b->widget), "focus-out-event", G_CALLBACK(stringFocusOutEvent), b);
- g_signal_connect(GTK_OBJECT(b->widget), "focus-in-event", G_CALLBACK(stringFocusInEvent), b);
- g_signal_connect(GTK_OBJECT(b->widget), "leave-notify-event", G_CALLBACK(stringLeaveNotifyEvent), b);
+
+ g_signal_connect(GTK_OBJECT(b->widget), "changed", G_CALLBACK(stringChanged),
+ b);
+ g_signal_connect(GTK_OBJECT(b->widget), "preedit-changed",
+ G_CALLBACK(stringPreeditChanged), b);
+ g_signal_connect(GTK_OBJECT(b->widget), "focus-out-event",
+ G_CALLBACK(stringFocusOutEvent), b);
+ g_signal_connect(GTK_OBJECT(b->widget), "focus-in-event",
+ G_CALLBACK(stringFocusInEvent), b);
+ g_signal_connect(GTK_OBJECT(b->widget), "leave-notify-event",
+ G_CALLBACK(stringLeaveNotifyEvent), b);
g_signal_connect(GTK_OBJECT(b->widget), "event", G_CALLBACK(stringEvent), b);
- g_signal_connect(GTK_OBJECT(b->widget), "event-after", G_CALLBACK(stringEventAfter), b);
- g_signal_connect(GTK_OBJECT(b->widget), "key-press-event", G_CALLBACK(stringKeyPressEvent), b);
- g_signal_connect(GTK_OBJECT(b->widget), "state-changed", G_CALLBACK(stringStateChanged), b);
- g_signal_connect(GTK_OBJECT(b->widget), "activate", G_CALLBACK(stringActivate), b);
+ g_signal_connect(GTK_OBJECT(b->widget), "event-after",
+ G_CALLBACK(stringEventAfter), b);
+ g_signal_connect(GTK_OBJECT(b->widget), "key-press-event",
+ G_CALLBACK(stringKeyPressEvent), b);
+ g_signal_connect(GTK_OBJECT(b->widget), "state-changed",
+ G_CALLBACK(stringStateChanged), b);
+ g_signal_connect(GTK_OBJECT(b->widget), "activate", G_CALLBACK(stringActivate),
+ b);
//if (option&BO_ENTER)
- g_signal_connect(GTK_OBJECT(b->widget), "activate", G_CALLBACK(stringActivated), b);
+ g_signal_connect(GTK_OBJECT(b->widget), "activate", G_CALLBACK(stringActivated),
+ b);
b->hasSignal = 1;
- g_signal_connect_after(GTK_OBJECT(b->widget), "expose-event",
- G_CALLBACK(stringExposed), b);
-
+ g_signal_connect_after(GTK_OBJECT(b->widget), "expose-event",
+ G_CALLBACK(stringExposed), b);
+
// set the default text and select it to make replacing it easier
if (b->valueP) {
wStringSetValue(b, b->valueP);
@@ -378,6 +410,6 @@ wString_p wStringCreate(
}
gtk_widget_add_events( b->widget, GDK_FOCUS_CHANGE_MASK );
-
+
return b;
}
diff --git a/app/wlib/gtklib/splash.c b/app/wlib/gtklib/splash.c
index 7b7613c..d42b7c0 100644
--- a/app/wlib/gtklib/splash.c
+++ b/app/wlib/gtklib/splash.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 <string.h>
@@ -50,65 +50,65 @@ static GtkWidget *message; /**< window handle for progress message */
int
wCreateSplash(char *appName, char *appVer)
{
- GtkWidget *vbox;
- GtkWidget *image;
- GtkWidget *label;
- char *temp;
- char logoPath[BUFSIZ];
-
- /* create the basic window */
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_decorated(GTK_WINDOW(window), FALSE);
- gtk_window_set_title(GTK_WINDOW(window), appName);
- gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
- gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
- gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_SPLASHSCREEN);
+ GtkWidget *vbox;
+ GtkWidget *image;
+ GtkWidget *label;
+ char *temp;
+ char logoPath[BUFSIZ];
+
+ /* create the basic window */
+ window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_decorated(GTK_WINDOW(window), FALSE);
+ gtk_window_set_title(GTK_WINDOW(window), appName);
+ gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
+ gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
+ gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_SPLASHSCREEN);
#if GTK_MAJOR_VERSION > 1 || GTK_MINOR_VERSION > 5
- gtk_window_set_focus_on_map(GTK_WINDOW(window), FALSE);
+ gtk_window_set_focus_on_map(GTK_WINDOW(window), FALSE);
#endif
- vbox = gtk_vbox_new(FALSE, 0);
- gtk_widget_show(vbox);
- gtk_container_add(GTK_CONTAINER(window), vbox);
+ vbox = gtk_vbox_new(FALSE, 0);
+ gtk_widget_show(vbox);
+ gtk_container_add(GTK_CONTAINER(window), vbox);
- /* add the logo image to the top of the splash window */
- sprintf(logoPath, "%s/" LOGOFILENAME, wGetAppLibDir());
- image = gtk_image_new_from_file(logoPath);
- gtk_widget_show(image);
- gtk_box_pack_start(GTK_BOX(vbox), image, TRUE, TRUE, 0);
- gtk_misc_set_alignment(GTK_MISC(image), 0, 0);
+ /* add the logo image to the top of the splash window */
+ sprintf(logoPath, "%s/" LOGOFILENAME, wGetAppLibDir());
+ image = gtk_image_new_from_file(logoPath);
+ gtk_widget_show(image);
+ gtk_box_pack_start(GTK_BOX(vbox), image, TRUE, TRUE, 0);
+ gtk_misc_set_alignment(GTK_MISC(image), 0, 0);
- /* put the product name into the window */
+ /* put the product name into the window */
- temp = malloc(strlen(appName) + strlen(appVer) + 2);
+ temp = malloc(strlen(appName) + strlen(appVer) + 2);
- if (!temp) {
- return (FALSE);
- }
+ if (!temp) {
+ return (FALSE);
+ }
- sprintf(temp, "%s %s", appName, appVer);
+ sprintf(temp, "%s %s", appName, appVer);
- label = gtk_label_new(temp);
- gtk_widget_show(label);
- gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
- gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_FILL);
- gtk_label_set_selectable(GTK_LABEL(label), FALSE);
- gtk_misc_set_padding(GTK_MISC(label), 6, 2);
+ label = gtk_label_new(temp);
+ gtk_widget_show(label);
+ gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+ gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_FILL);
+ gtk_label_set_selectable(GTK_LABEL(label), FALSE);
+ gtk_misc_set_padding(GTK_MISC(label), 6, 2);
- free(temp);
+ free(temp);
- label = gtk_label_new("Application is starting...");
- gtk_widget_show(label);
- gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
- gtk_label_set_line_wrap(GTK_LABEL(label), FALSE);
- gtk_misc_set_padding(GTK_MISC(label), 6, 2);
+ label = gtk_label_new("Application is starting...");
+ gtk_widget_show(label);
+ gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+ gtk_label_set_line_wrap(GTK_LABEL(label), FALSE);
+ gtk_misc_set_padding(GTK_MISC(label), 6, 2);
#if GTK_MINOR_VERSION > 5
- gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_START);
+ gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_START);
#endif
- message = label;
+ message = label;
- gtk_widget_show(window);
- return (TRUE);
+ gtk_widget_show(window);
+ return (TRUE);
}
/**
@@ -120,13 +120,13 @@ wCreateSplash(char *appName, char *appVer)
int
wSetSplashInfo(char *msg)
{
- if (!window) return FALSE;
- if (msg && message) {
- gtk_label_set_text(GTK_LABEL(message), msg);
- return TRUE;
- }
+ if (!window) { return FALSE; }
+ if (msg && message) {
+ gtk_label_set_text(GTK_LABEL(message), msg);
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
/**
@@ -137,9 +137,9 @@ wSetSplashInfo(char *msg)
void
wDestroySplash(void)
{
- /* kill window */
- if (window) gtk_widget_destroy(window);
- window = NULL;
+ /* kill window */
+ if (window) { gtk_widget_destroy(window); }
+ window = NULL;
- return;
+ return;
}
diff --git a/app/wlib/gtklib/statusbar.c b/app/wlib/gtklib/statusbar.c
index a71d021..78d54ac 100644
--- a/app/wlib/gtklib/statusbar.c
+++ b/app/wlib/gtklib/statusbar.c
@@ -39,10 +39,10 @@
#include "gtkint.h"
struct wStatus_t {
- WOBJ_COMMON
- GtkWidget * labelWidget;
- const char * message;
- wWinPix_t labelWidth;
+ WOBJ_COMMON
+ GtkWidget * labelWidget;
+ const char * message;
+ wWinPix_t labelWidth;
};
/**
@@ -54,20 +54,20 @@ struct wStatus_t {
*/
void wStatusSetValue(
- wStatus_p b,
- const char * arg)
+ wStatus_p b,
+ const char * arg)
{
- if (b->widget == 0) {
- abort();
- }
+ if (b->widget == 0) {
+ abort();
+ }
- if (gtk_entry_get_max_length(GTK_ENTRY(b->labelWidget))<strlen(arg)) {
- gtk_entry_set_max_length(GTK_ENTRY(b->labelWidget), strlen(arg));
- gtk_entry_set_width_chars(GTK_ENTRY(b->labelWidget), strlen(arg));
- }
+ if (gtk_entry_get_max_length(GTK_ENTRY(b->labelWidget))<strlen(arg)) {
+ gtk_entry_set_max_length(GTK_ENTRY(b->labelWidget), strlen(arg));
+ gtk_entry_set_width_chars(GTK_ENTRY(b->labelWidget), strlen(arg));
+ }
- gtk_entry_set_text(GTK_ENTRY(b->labelWidget), wlibConvertInput(arg));
- gtk_widget_queue_draw (GTK_WIDGET(b->labelWidget));
+ gtk_entry_set_text(GTK_ENTRY(b->labelWidget), wlibConvertInput(arg));
+ gtk_widget_queue_draw (GTK_WIDGET(b->labelWidget));
}
/**
* Create a window for a simple text.
@@ -83,38 +83,37 @@ void wStatusSetValue(
*/
wStatus_p wStatusCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * labelStr,
- wWinPix_t width,
- const char *message)
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * labelStr,
+ wWinPix_t width,
+ const char *message)
{
- wStatus_p b;
- GtkRequisition requisition;
- b = (wStatus_p)wlibAlloc(parent, B_STATUS, x, y, NULL, sizeof *b, NULL);
- wlibComputePos((wControl_p)b);
- b->message = message;
- b->labelWidth = width;
- b->labelWidget = gtk_entry_new();
- gtk_editable_set_editable(GTK_EDITABLE(b->labelWidget), FALSE);
- gtk_entry_set_has_frame(GTK_ENTRY(b->labelWidget), FALSE);
- gtk_widget_set_can_focus(b->labelWidget, FALSE);
- gtk_widget_set_sensitive(b->labelWidget, FALSE);
- GdkColor black = {0, 0x0000, 0x0000, 0x0000};
- gtk_widget_modify_text(b->labelWidget,GTK_STATE_INSENSITIVE,&black);
- gtk_entry_set_text(GTK_ENTRY(b->labelWidget),
- message?wlibConvertInput(message):"");
-
- b->widget = gtk_fixed_new();
- gtk_container_add(GTK_CONTAINER(b->widget), b->labelWidget);
- wlibControlGetSize((wControl_p)b);
- gtk_fixed_put(GTK_FIXED(parent->widget), b->widget, b->realX, b->realY);
- gtk_widget_show(b->widget);
- gtk_widget_show(b->labelWidget);
- wlibAddButton((wControl_p)b);
-
- return b;
+ wStatus_p b;
+ b = (wStatus_p)wlibAlloc(parent, B_STATUS, x, y, NULL, sizeof *b, NULL);
+ wlibComputePos((wControl_p)b);
+ b->message = message;
+ b->labelWidth = width;
+ b->labelWidget = gtk_entry_new();
+ gtk_editable_set_editable(GTK_EDITABLE(b->labelWidget), FALSE);
+ gtk_entry_set_has_frame(GTK_ENTRY(b->labelWidget), FALSE);
+ gtk_widget_set_can_focus(b->labelWidget, FALSE);
+ gtk_widget_set_sensitive(b->labelWidget, FALSE);
+ GdkColor black = {0, 0x0000, 0x0000, 0x0000};
+ gtk_widget_modify_text(b->labelWidget,GTK_STATE_INSENSITIVE,&black);
+ gtk_entry_set_text(GTK_ENTRY(b->labelWidget),
+ message?wlibConvertInput(message):"");
+
+ b->widget = gtk_fixed_new();
+ gtk_container_add(GTK_CONTAINER(b->widget), b->labelWidget);
+ wlibControlGetSize((wControl_p)b);
+ gtk_fixed_put(GTK_FIXED(parent->widget), b->widget, b->realX, b->realY);
+ gtk_widget_show(b->widget);
+ gtk_widget_show(b->labelWidget);
+ wlibAddButton((wControl_p)b);
+
+ return b;
}
/**
@@ -127,22 +126,22 @@ wStatus_p wStatusCreate(
wWinPix_t
wStatusGetWidth(const char *testString)
{
- GtkWidget *entry;
- GtkRequisition requisition;
+ GtkWidget *entry;
+ GtkRequisition requisition;
- entry = gtk_entry_new();
- g_object_ref_sink(entry);
+ entry = gtk_entry_new();
+ g_object_ref_sink(entry);
- gtk_entry_set_has_frame(GTK_ENTRY(entry), FALSE);
- gtk_entry_set_width_chars(GTK_ENTRY(entry), strlen(testString));
- gtk_entry_set_max_length(GTK_ENTRY(entry), strlen(testString));
+ gtk_entry_set_has_frame(GTK_ENTRY(entry), FALSE);
+ gtk_entry_set_width_chars(GTK_ENTRY(entry), strlen(testString));
+ gtk_entry_set_max_length(GTK_ENTRY(entry), strlen(testString));
- gtk_widget_size_request(entry, &requisition);
+ gtk_widget_size_request(entry, &requisition);
- gtk_widget_destroy(entry);
- g_object_unref(entry);
+ gtk_widget_destroy(entry);
+ g_object_unref(entry);
- return (requisition.width);
+ return (requisition.width);
}
/**
@@ -153,49 +152,49 @@ wStatusGetWidth(const char *testString)
*/
wWinPix_t wStatusGetHeight(
- long flags)
+ long flags)
{
- GtkWidget * temp;
+ GtkWidget * temp;
- if (!(flags&COMBOBOX)) {
+ if (!(flags&COMBOBOX)) {
temp = gtk_entry_new(); //To get size of text itself
- gtk_entry_set_has_frame(GTK_ENTRY(temp), FALSE);
- } else {
- temp = gtk_combo_box_text_new(); //to get max size of an object in infoBar
- }
- g_object_ref_sink(temp);
-
- if (wMessageSetFont(flags)) {
- GtkStyle *style;
- PangoFontDescription *fontDesc;
- int fontSize;
- /* get the current font descriptor */
- style = gtk_widget_get_style(temp);
- fontDesc = style->font_desc;
- /* get the current font size */
- fontSize = PANGO_PIXELS(pango_font_description_get_size(fontDesc));
-
- /* calculate the new font size */
- if (flags & BM_LARGE) {
- pango_font_description_set_size(fontDesc, fontSize * 1.4 * PANGO_SCALE);
- } else {
- pango_font_description_set_size(fontDesc, fontSize * 0.7 * PANGO_SCALE);
- }
-
- /* set the new font size */
- gtk_widget_modify_font(temp, fontDesc);
- }
-
- if (flags&1L) {
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(temp),"Test");
- }
-
- GtkRequisition temp_requisition;
- gtk_widget_size_request(temp,&temp_requisition);
- //g_object_ref_sink(temp);
- //g_object_unref(temp);
- gtk_widget_destroy(temp);
- return temp_requisition.height;
+ gtk_entry_set_has_frame(GTK_ENTRY(temp), FALSE);
+ } else {
+ temp = gtk_combo_box_text_new(); //to get max size of an object in infoBar
+ }
+ g_object_ref_sink(temp);
+
+ if (wMessageSetFont(flags)) {
+ GtkStyle *style;
+ PangoFontDescription *fontDesc;
+ int fontSize;
+ /* get the current font descriptor */
+ style = gtk_widget_get_style(temp);
+ fontDesc = style->font_desc;
+ /* get the current font size */
+ fontSize = PANGO_PIXELS(pango_font_description_get_size(fontDesc));
+
+ /* calculate the new font size */
+ if (flags & BM_LARGE) {
+ pango_font_description_set_size(fontDesc, fontSize * 1.4 * PANGO_SCALE);
+ } else {
+ pango_font_description_set_size(fontDesc, fontSize * 0.7 * PANGO_SCALE);
+ }
+
+ /* set the new font size */
+ gtk_widget_modify_font(temp, fontDesc);
+ }
+
+ if (flags&1L) {
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(temp),"Test");
+ }
+
+ GtkRequisition temp_requisition;
+ gtk_widget_size_request(temp,&temp_requisition);
+ //g_object_ref_sink(temp);
+ //g_object_unref(temp);
+ gtk_widget_destroy(temp);
+ return temp_requisition.height;
}
/**
@@ -207,9 +206,9 @@ wWinPix_t wStatusGetHeight(
*/
void wStatusSetWidth(
- wStatus_p b,
- wWinPix_t width)
+ wStatus_p b,
+ wWinPix_t width)
{
- b->labelWidth = width;
- gtk_widget_set_size_request(b->widget, width, -1);
+ b->labelWidth = width;
+ gtk_widget_set_size_request(b->widget, width, -1);
}
diff --git a/app/wlib/gtklib/sysinfo.c b/app/wlib/gtklib/sysinfo.c
new file mode 100644
index 0000000..eccd67f
--- /dev/null
+++ b/app/wlib/gtklib/sysinfo.c
@@ -0,0 +1,137 @@
+/** \file sysinfo.c
+ * Collect info about runtime environment
+*/
+
+/* XTrkCad - Model Railroad CAD
+ * Copyright (C) 2024 Martin Fischer
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <wlib.h>
+#include "gtkint.h"
+
+
+static char *buffer;
+
+/**
+ * Return the path to a temporary directory. The directory is not created.
+ * The result is put into a buffer and is only valid immediately after the call.
+ *
+ * \return pointer to fully qualified directory path
+ */
+
+char *
+wGetTempPath()
+{
+ gchar const *tempDir = g_get_tmp_dir();
+ gchar *path;
+ gchar pidString[20];
+
+ g_snprintf(pidString, 20, "xtc%d", getpid());
+ path = g_build_path("/", tempDir, pidString, (char *)0);
+
+ if(buffer) {
+ g_free(buffer);
+ }
+
+ buffer = g_strdup(path);
+ g_free(path);
+
+ return(buffer);
+}
+
+/**
+ * Get the Windows version. This function uses the Windows ver command to
+ * retrieve the OS version. The result is put into a buffer and is only
+ * valid immediately after the call.
+ *
+ * \return buffer containing the zero terminated string
+ *
+ */
+
+char *
+wGetOSVersion()
+{
+ FILE* pPipe;
+ size_t bufferSize = 80;
+
+ if(buffer) {
+ free(buffer);
+ buffer = NULL;
+ }
+
+ buffer = malloc(bufferSize);
+// pPipe = _popen("cat /etc/*-release | grep "PRETTY_NAME" | sed 's/PRETTY_NAME=//g'", "r");
+ pPipe = popen("uname -sr", "r");
+
+ while (fgets(buffer, bufferSize, pPipe))
+ ;
+
+ if (buffer[strlen(buffer) -1] == '\n')
+ buffer[strlen(buffer) -1 ] = '\0';
+ pclose(pPipe);
+
+ return(buffer);
+}
+
+
+
+/**
+ * Get the name of the current user. The result is put into a buffer and is only
+ * valid immediately after the call.
+ *
+ * \return buffer containing the zero terminated string
+ *
+ */
+
+char *
+wGetUserID()
+{
+ const gchar *name;
+
+ name = g_get_user_name();
+
+ if(buffer) {
+ g_free(buffer);
+ }
+ buffer = g_strdup( name );
+ return(buffer);
+}
+
+/** Get the user's profile directory. Other than on UNIX Windows differentiates
+ * between the home directory and and the profile directory.
+ *
+ * \return pointer to the user's profile directory
+ */
+
+const char* wGetUserHomeRootDir(void)
+{
+ return(wGetUserHomeDir());
+}
+
+const char* wGetPlatformVersion()
+{
+ if(buffer) {
+ g_free(buffer);
+ }
+
+ buffer = g_strdup_printf("%d.%d.%d", gtk_major_version, gtk_minor_version, gtk_micro_version );
+ return(buffer);
+}
+
diff --git a/app/wlib/gtklib/text.c b/app/wlib/gtklib/text.c
index cb811b6..69a7ecc 100644
--- a/app/wlib/gtklib/text.c
+++ b/app/wlib/gtklib/text.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 <stdio.h>
@@ -37,12 +37,12 @@
#include "gtkint.h"
struct PrintData {
- wText_p tb;
- gint lines_per_page;
- gdouble font_size;
- gchar **lines;
- gint total_lines;
- gint total_pages;
+ wText_p tb;
+ gint lines_per_page;
+ gdouble font_size;
+ gchar **lines;
+ gint total_lines;
+ gint total_pages;
};
#define HEADER_HEIGHT 20.0
@@ -58,10 +58,10 @@ struct PrintData {
*/
struct wText_t {
- WOBJ_COMMON
- wWinPix_t width, height;
- int changed;
- GtkWidget *text;
+ WOBJ_COMMON
+ wWinPix_t width, height;
+ int changed;
+ GtkWidget *text;
};
/**
@@ -74,15 +74,15 @@ struct wText_t {
void wTextClear(wText_p bt)
{
- GtkTextBuffer *tb;
- tb = gtk_text_view_get_buffer(GTK_TEXT_VIEW(bt->text));
- gtk_text_buffer_set_text(tb, "", -1);
+ GtkTextBuffer *tb;
+ tb = gtk_text_view_get_buffer(GTK_TEXT_VIEW(bt->text));
+ gtk_text_buffer_set_text(tb, "", -1);
- if (bt->option & BO_READONLY) {
- gtk_text_view_set_editable(GTK_TEXT_VIEW(bt->text), FALSE);
- }
+ if (bt->option & BO_READONLY) {
+ gtk_text_view_set_editable(GTK_TEXT_VIEW(bt->text), FALSE);
+ }
- bt->changed = FALSE;
+ bt->changed = FALSE;
}
/**
@@ -96,34 +96,34 @@ void wTextClear(wText_p bt)
void wTextAppend(wText_p bt,
const char *text)
{
- GtkTextBuffer *tb;
- GtkTextIter ti1;
- GtkTextMark *tm;
-
-
- if (bt->text == 0) {
- abort();
- }
-
- tb = gtk_text_view_get_buffer(GTK_TEXT_VIEW(bt->text));
- // convert to utf-8
- text = wlibConvertInput(text);
- // append to end of buffer
- gtk_text_buffer_get_end_iter(tb, &ti1);
- gtk_text_buffer_insert(tb, &ti1, text, -1);
-
- if ( bt->option & BT_TOP ) {
- // and scroll to start of text
- gtk_text_buffer_get_start_iter(tb, &ti1);
- } else {
- // and scroll to end of text
- gtk_text_buffer_get_end_iter(tb, &ti1);
- }
- tm = gtk_text_buffer_create_mark(tb, NULL, &ti1, TRUE );
- gtk_text_view_scroll_mark_onscreen (GTK_TEXT_VIEW(bt->text), tm );
- gtk_text_buffer_delete_mark( tb, tm );
-
- bt->changed = FALSE;
+ GtkTextBuffer *tb;
+ GtkTextIter ti1;
+ GtkTextMark *tm;
+
+
+ if (bt->text == 0) {
+ abort();
+ }
+
+ tb = gtk_text_view_get_buffer(GTK_TEXT_VIEW(bt->text));
+ // convert to utf-8
+ text = wlibConvertInput(text);
+ // append to end of buffer
+ gtk_text_buffer_get_end_iter(tb, &ti1);
+ gtk_text_buffer_insert(tb, &ti1, text, -1);
+
+ if ( bt->option & BT_TOP ) {
+ // and scroll to start of text
+ gtk_text_buffer_get_start_iter(tb, &ti1);
+ } else {
+ // and scroll to end of text
+ gtk_text_buffer_get_end_iter(tb, &ti1);
+ }
+ tm = gtk_text_buffer_create_mark(tb, NULL, &ti1, TRUE );
+ gtk_text_view_scroll_mark_onscreen (GTK_TEXT_VIEW(bt->text), tm );
+ gtk_text_buffer_delete_mark( tb, tm );
+
+ bt->changed = FALSE;
}
/**
@@ -138,21 +138,22 @@ void wTextAppend(wText_p bt,
static char *wlibGetText(wText_p bt)
{
- GtkTextBuffer *tb;
- GtkTextIter ti1, ti2;
- char *cp, *cp1, *res;
-
- if (bt->text == 0) {
- abort();
- }
-
- tb = gtk_text_view_get_buffer(GTK_TEXT_VIEW(bt->text));
- gtk_text_buffer_get_bounds(tb, &ti1, &ti2);
- cp = gtk_text_buffer_get_text(tb, &ti1, &ti2, FALSE);
- //cp1 = wlibConvertOutput(cp);
- res = strdup(cp);
- g_free(cp);
- return res;
+ GtkTextBuffer *tb;
+ GtkTextIter ti1, ti2;
+ char *cp, *res;
+ //char *cp1;
+
+ if (bt->text == 0) {
+ abort();
+ }
+
+ tb = gtk_text_view_get_buffer(GTK_TEXT_VIEW(bt->text));
+ gtk_text_buffer_get_bounds(tb, &ti1, &ti2);
+ cp = gtk_text_buffer_get_text(tb, &ti1, &ti2, FALSE);
+ //cp1 = wlibConvertOutput(cp);
+ res = strdup(cp);
+ g_free(cp);
+ return res;
}
/**
@@ -165,20 +166,20 @@ static char *wlibGetText(wText_p bt)
wBool_t wTextSave(wText_p bt, const char *fileName)
{
- FILE *f;
- char *cp;
- f = fopen(fileName, "w");
-
- if (f==NULL) {
- wNoticeEx(NT_ERROR, fileName, "Ok", NULL);
- return FALSE;
- }
-
- cp = wlibGetText(bt);
- fwrite(cp, 1, strlen(cp), f);
- free(cp);
- fclose(f);
- return TRUE;
+ FILE *f;
+ char *cp;
+ f = fopen(fileName, "w");
+
+ if (f==NULL) {
+ wNoticeEx(NT_ERROR, fileName, "Ok", NULL);
+ return FALSE;
+ }
+
+ cp = wlibGetText(bt);
+ fwrite(cp, 1, strlen(cp), f);
+ free(cp);
+ fclose(f);
+ return TRUE;
}
/**
@@ -196,28 +197,28 @@ begin_print(GtkPrintOperation *operation,
GtkPrintContext *context,
struct PrintData *pd)
{
- gchar *contents;
- gdouble height;
- contents = wlibGetText(pd->tb);
- pd->lines = g_strsplit(contents, "\n", 0);
- /* Count the total number of lines in the file. */
- /* ignore the header lines */
- pd->total_lines = 6;
-
- while (pd->lines[pd->total_lines] != NULL) {
- pd->total_lines++;
- }
-
- /* Based on the height of the page and font size, calculate how many lines can be
- * rendered on a single page. A padding of 3 is placed between lines as well.
- * Space for page header, table header and footer lines is subtracted from the total size
- */
- height = gtk_print_context_get_height(context) - (pd->font_size + 3) - 2 *
- (HEADER_HEIGHT + HEADER_GAP);
- pd->lines_per_page = floor(height / (pd->font_size + 3));
- pd->total_pages = (pd->total_lines - 1) / pd->lines_per_page + 1;
- gtk_print_operation_set_n_pages(operation, pd->total_pages);
- free(contents);
+ gchar *contents;
+ gdouble height;
+ contents = wlibGetText(pd->tb);
+ pd->lines = g_strsplit(contents, "\n", 0);
+ /* Count the total number of lines in the file. */
+ /* ignore the header lines */
+ pd->total_lines = 6;
+
+ while (pd->lines[pd->total_lines] != NULL) {
+ pd->total_lines++;
+ }
+
+ /* Based on the height of the page and font size, calculate how many lines can be
+ * rendered on a single page. A padding of 3 is placed between lines as well.
+ * Space for page header, table header and footer lines is subtracted from the total size
+ */
+ height = gtk_print_context_get_height(context) - (pd->font_size + 3) - 2 *
+ (HEADER_HEIGHT + HEADER_GAP);
+ pd->lines_per_page = floor(height / (pd->font_size + 3));
+ pd->total_pages = (pd->total_lines - 1) / pd->lines_per_page + 1;
+ gtk_print_operation_set_n_pages(operation, pd->total_pages);
+ free(contents);
}
/**
@@ -238,76 +239,76 @@ draw_page(GtkPrintOperation *operation,
gint page_nr,
struct PrintData *pd)
{
- cairo_t *cr;
- PangoLayout *layout;
- gdouble width, text_height, height;
- gint line, i, text_width, layout_height;
- PangoFontDescription *desc;
- gchar *page_str;
- cr = gtk_print_context_get_cairo_context(context);
- width = gtk_print_context_get_width(context);
- layout = gtk_print_context_create_pango_layout(context);
- desc = pango_font_description_from_string("Monospace");
- pango_font_description_set_size(desc, pd->font_size * PANGO_SCALE);
- /*
- * render the header line with document type parts list on left and
- * first line of layout title on right
- */
- pango_layout_set_font_description(layout, desc);
- pango_layout_set_text(layout, pd->lines[ 0 ], -1); // document type
- pango_layout_set_width(layout, -1);
- pango_layout_set_alignment(layout, PANGO_ALIGN_LEFT);
- pango_layout_get_size(layout, NULL, &layout_height);
- text_height = (gdouble) layout_height / PANGO_SCALE;
- cairo_move_to(cr, 0, (HEADER_HEIGHT - text_height) / 2);
- pango_cairo_show_layout(cr, layout);
- pango_layout_set_text(layout, pd->lines[ 2 ], -1); // layout title
- pango_layout_get_size(layout, &text_width, NULL);
- pango_layout_set_alignment(layout, PANGO_ALIGN_RIGHT);
- cairo_move_to(cr, width - (text_width / PANGO_SCALE),
- (HEADER_HEIGHT - text_height) / 2);
- pango_cairo_show_layout(cr, layout);
- /* Render the column header */
- cairo_move_to(cr, 0, HEADER_HEIGHT + HEADER_GAP + pd->font_size + 3);
- pango_layout_set_text(layout, pd->lines[ 6 ], -1);
- pango_cairo_show_layout(cr, layout);
- cairo_rel_move_to(cr, 0, pd->font_size + 3);
- pango_layout_set_text(layout, pd->lines[ 7 ], -1);
- pango_cairo_show_layout(cr, layout);
- /* Render the page text with the specified font and size. */
- cairo_rel_move_to(cr, 0, pd->font_size + 3);
- line = page_nr * pd->lines_per_page + 8;
-
- for (i = 0; i < pd->lines_per_page && line < pd->total_lines; i++) {
- pango_layout_set_text(layout, pd->lines[line], -1);
- pango_cairo_show_layout(cr, layout);
- cairo_rel_move_to(cr, 0, pd->font_size + 3);
- line++;
- }
-
- /*
- * Render the footer line with date on the left and page number
- * on the right
- */
- pango_layout_set_text(layout, pd->lines[ 5 ], -1); // date
- pango_layout_set_width(layout, -1);
- pango_layout_set_alignment(layout, PANGO_ALIGN_LEFT);
- pango_layout_get_size(layout, NULL, &layout_height);
- text_height = (gdouble) layout_height / PANGO_SCALE;
- height = gtk_print_context_get_height(context);
- cairo_move_to(cr, 0, height - ((HEADER_HEIGHT - text_height) / 2));
- pango_cairo_show_layout(cr, layout);
- page_str = g_strdup_printf(_("%d of %d"), page_nr + 1,
- pd->total_pages); // page number
- pango_layout_set_text(layout, page_str, -1);
- pango_layout_get_size(layout, &text_width, NULL);
- pango_layout_set_alignment(layout, PANGO_ALIGN_RIGHT);
- cairo_move_to(cr, width - (text_width / PANGO_SCALE),
- height - ((HEADER_HEIGHT - text_height) / 2));
- pango_cairo_show_layout(cr, layout);
- g_free(page_str);
- g_object_unref(layout);
- pango_font_description_free(desc);
+ cairo_t *cr;
+ PangoLayout *layout;
+ gdouble width, text_height, height;
+ gint line, i, text_width, layout_height;
+ PangoFontDescription *desc;
+ gchar *page_str;
+ cr = gtk_print_context_get_cairo_context(context);
+ width = gtk_print_context_get_width(context);
+ layout = gtk_print_context_create_pango_layout(context);
+ desc = pango_font_description_from_string("Monospace");
+ pango_font_description_set_size(desc, pd->font_size * PANGO_SCALE);
+ /*
+ * render the header line with document type parts list on left and
+ * first line of layout title on right
+ */
+ pango_layout_set_font_description(layout, desc);
+ pango_layout_set_text(layout, pd->lines[ 0 ], -1); // document type
+ pango_layout_set_width(layout, -1);
+ pango_layout_set_alignment(layout, PANGO_ALIGN_LEFT);
+ pango_layout_get_size(layout, NULL, &layout_height);
+ text_height = (gdouble) layout_height / PANGO_SCALE;
+ cairo_move_to(cr, 0, (HEADER_HEIGHT - text_height) / 2);
+ pango_cairo_show_layout(cr, layout);
+ pango_layout_set_text(layout, pd->lines[ 2 ], -1); // layout title
+ pango_layout_get_size(layout, &text_width, NULL);
+ pango_layout_set_alignment(layout, PANGO_ALIGN_RIGHT);
+ cairo_move_to(cr, width - (text_width / PANGO_SCALE),
+ (HEADER_HEIGHT - text_height) / 2);
+ pango_cairo_show_layout(cr, layout);
+ /* Render the column header */
+ cairo_move_to(cr, 0, HEADER_HEIGHT + HEADER_GAP + pd->font_size + 3);
+ pango_layout_set_text(layout, pd->lines[ 6 ], -1);
+ pango_cairo_show_layout(cr, layout);
+ cairo_rel_move_to(cr, 0, pd->font_size + 3);
+ pango_layout_set_text(layout, pd->lines[ 7 ], -1);
+ pango_cairo_show_layout(cr, layout);
+ /* Render the page text with the specified font and size. */
+ cairo_rel_move_to(cr, 0, pd->font_size + 3);
+ line = page_nr * pd->lines_per_page + 8;
+
+ for (i = 0; i < pd->lines_per_page && line < pd->total_lines; i++) {
+ pango_layout_set_text(layout, pd->lines[line], -1);
+ pango_cairo_show_layout(cr, layout);
+ cairo_rel_move_to(cr, 0, pd->font_size + 3);
+ line++;
+ }
+
+ /*
+ * Render the footer line with date on the left and page number
+ * on the right
+ */
+ pango_layout_set_text(layout, pd->lines[ 5 ], -1); // date
+ pango_layout_set_width(layout, -1);
+ pango_layout_set_alignment(layout, PANGO_ALIGN_LEFT);
+ pango_layout_get_size(layout, NULL, &layout_height);
+ text_height = (gdouble) layout_height / PANGO_SCALE;
+ height = gtk_print_context_get_height(context);
+ cairo_move_to(cr, 0, height - ((HEADER_HEIGHT - text_height) / 2));
+ pango_cairo_show_layout(cr, layout);
+ page_str = g_strdup_printf(_("%d of %d"), page_nr + 1,
+ pd->total_pages); // page number
+ pango_layout_set_text(layout, page_str, -1);
+ pango_layout_get_size(layout, &text_width, NULL);
+ pango_layout_set_alignment(layout, PANGO_ALIGN_RIGHT);
+ cairo_move_to(cr, width - (text_width / PANGO_SCALE),
+ height - ((HEADER_HEIGHT - text_height) / 2));
+ pango_cairo_show_layout(cr, layout);
+ g_free(page_str);
+ g_object_unref(layout);
+ pango_font_description_free(desc);
}
/**
@@ -324,8 +325,8 @@ end_print(GtkPrintOperation *operation,
GtkPrintContext *context,
struct PrintData *pd)
{
- g_strfreev(pd->lines);
- free(pd);
+ g_strfreev(pd->lines);
+ free(pd);
}
/**
@@ -341,47 +342,47 @@ end_print(GtkPrintOperation *operation,
*/
wBool_t wTextPrint(
- wText_p bt)
+ wText_p bt)
{
- GtkPrintOperation *operation;
- GtkWidget *dialog;
- GError *error = NULL;
- gint res;
- struct PrintData *data;
- /* Create a new print operation, applying saved print settings if they exist. */
- operation = gtk_print_operation_new();
- WlibApplySettings(operation);
- data = malloc(sizeof(struct PrintData));
- data->font_size = 10.0;
- data->tb = bt;
- g_signal_connect(G_OBJECT(operation), "begin_print",
- G_CALLBACK(begin_print), (gpointer) data);
- g_signal_connect(G_OBJECT(operation), "draw_page",
- G_CALLBACK(draw_page), (gpointer) data);
- g_signal_connect(G_OBJECT(operation), "end_print",
- G_CALLBACK(end_print), (gpointer) data);
- /* Run the default print operation that will print the selected file. */
- res = gtk_print_operation_run(operation,
- GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
- GTK_WINDOW(gtkMainW->gtkwin), &error);
-
- /* If the print operation was accepted, save the new print settings. */
- if (res == GTK_PRINT_OPERATION_RESULT_APPLY) {
- WlibSaveSettings(operation);
- }
- /* Otherwise, report that the print operation has failed. */
- else if (error) {
- dialog = gtk_message_dialog_new(GTK_WINDOW(gtkMainW->gtkwin),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
- "%s",error->message);
- g_error_free(error);
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
- }
- g_object_ref_sink(operation);
- g_object_unref(operation);
- return TRUE;
+ GtkPrintOperation *operation;
+ GtkWidget *dialog;
+ GError *error = NULL;
+ gint res;
+ struct PrintData *data;
+ /* Create a new print operation, applying saved print settings if they exist. */
+ operation = gtk_print_operation_new();
+ WlibApplySettings(operation);
+ data = malloc(sizeof(struct PrintData));
+ data->font_size = 10.0;
+ data->tb = bt;
+ g_signal_connect(G_OBJECT(operation), "begin_print",
+ G_CALLBACK(begin_print), (gpointer) data);
+ g_signal_connect(G_OBJECT(operation), "draw_page",
+ G_CALLBACK(draw_page), (gpointer) data);
+ g_signal_connect(G_OBJECT(operation), "end_print",
+ G_CALLBACK(end_print), (gpointer) data);
+ /* Run the default print operation that will print the selected file. */
+ res = gtk_print_operation_run(operation,
+ GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
+ GTK_WINDOW(gtkMainW->gtkwin), &error);
+
+ /* If the print operation was accepted, save the new print settings. */
+ if (res == GTK_PRINT_OPERATION_RESULT_APPLY) {
+ WlibSaveSettings(operation);
+ }
+ /* Otherwise, report that the print operation has failed. */
+ else if (error) {
+ dialog = gtk_message_dialog_new(GTK_WINDOW(gtkMainW->gtkwin),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
+ "%s",error->message);
+ g_error_free(error);
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+ }
+ g_object_ref_sink(operation);
+ g_object_unref(operation);
+ return TRUE;
}
@@ -394,10 +395,10 @@ wBool_t wTextPrint(
int wTextGetSize(wText_p bt)
{
- char *cp = wlibGetText(bt);
- int len = strlen(cp);
- free(cp);
- return len + 1;
+ char *cp = wlibGetText(bt);
+ int len = strlen(cp);
+ free(cp);
+ return len + 1;
}
/**
@@ -411,15 +412,15 @@ int wTextGetSize(wText_p bt)
void wTextGetText(wText_p bt, char *text, int len)
{
- char *cp;
- cp = wlibGetText(bt);
- strncpy(text, cp, len);
+ char *cp;
+ cp = wlibGetText(bt);
+ strncpy(text, cp, len);
- if (len > 0) {
- text[len - 1] = '\0';
- }
+ if (len > 0) {
+ text[len - 1] = '\0';
+ }
- free(cp);
+ free(cp);
}
/**
@@ -432,13 +433,13 @@ void wTextGetText(wText_p bt, char *text, int len)
void wTextSetReadonly(wText_p bt, wBool_t ro)
{
- gtk_text_view_set_editable(GTK_TEXT_VIEW(bt->text), !ro);
+ gtk_text_view_set_editable(GTK_TEXT_VIEW(bt->text), !ro);
- if (ro) {
- bt->option |= BO_READONLY;
- } else {
- bt->option &= ~BO_READONLY;
- }
+ if (ro) {
+ bt->option |= BO_READONLY;
+ } else {
+ bt->option &= ~BO_READONLY;
+ }
}
/**
@@ -450,7 +451,7 @@ void wTextSetReadonly(wText_p bt, wBool_t ro)
wBool_t wTextGetModified(wText_p bt)
{
- return bt->changed;
+ return bt->changed;
}
/**
@@ -464,9 +465,9 @@ wBool_t wTextGetModified(wText_p bt)
void wTextSetSize(wText_p bt, wWinPix_t w, wWinPix_t h)
{
- gtk_widget_set_size_request(bt->widget, w, h);
- bt->w = w;
- bt->h = h;
+ gtk_widget_set_size_request(bt->widget, w, h);
+ bt->w = w;
+ bt->h = h;
}
/**
@@ -481,11 +482,12 @@ void wTextSetSize(wText_p bt, wWinPix_t w, wWinPix_t h)
* \return
*/
-void wTextComputeSize(wText_p bt, wWinPix_t rows, wWinPix_t cols, wWinPix_t *width,
+void wTextComputeSize(wText_p bt, wWinPix_t rows, wWinPix_t cols,
+ wWinPix_t *width,
wWinPix_t *height)
{
- *width = rows * 7;
- *height = cols * 14;
+ *width = rows * 7;
+ *height = cols * 14;
}
/**
@@ -498,7 +500,7 @@ void wTextComputeSize(wText_p bt, wWinPix_t rows, wWinPix_t cols, wWinPix_t *wid
void wTextSetPosition(wText_p bt, int pos)
{
- /* TODO TextSetPosition */
+ /* TODO TextSetPosition */
}
/**
@@ -511,11 +513,11 @@ void wTextSetPosition(wText_p bt, int pos)
static void textChanged(GtkWidget *widget, wText_p bt)
{
- if (bt == 0) {
- return;
- }
+ if (bt == 0) {
+ return;
+ }
- bt->changed = TRUE;
+ bt->changed = TRUE;
}
/**
@@ -544,61 +546,61 @@ wTextCreate(wWin_p parent,
wWinPix_t width,
wWinPix_t height)
{
- wText_p bt;
- GtkTextBuffer *tb;
- // create the widget
- bt = wlibAlloc(parent, B_MULTITEXT, x, y, labelStr, sizeof *bt, NULL);
- bt->width = width;
- bt->height = height;
- bt->option = option;
- wlibComputePos((wControl_p)bt);
- // create a scroll window with scroll bars that are automatically created
- bt->widget = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(bt->widget),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- // create a text view and place it inside the scroll widget
- bt->text = gtk_text_view_new();
-
- if (bt->text == 0) {
- abort();
- }
-
- gtk_container_add(GTK_CONTAINER(bt->widget), bt->text);
- // get the text buffer and add a bold tag to it
- tb = gtk_text_view_get_buffer(GTK_TEXT_VIEW(bt->text));
- gtk_text_buffer_create_tag(tb, "bold", "weight", PANGO_WEIGHT_BOLD, NULL);
-
- // this seems to assume some fixed size fonts, not really helpful
- if (option&BT_CHARUNITS) {
- width *= 7;
- height *= 14;
- }
-
- // show the widgets
- gtk_widget_show(bt->text);
- gtk_widget_show(bt->widget);
- // set the size???
- gtk_widget_set_size_request(GTK_WIDGET(bt->widget),
- width+15/*requisition.width*/, height);
-
- // configure read-only mode
- if (bt->option&BO_READONLY) {
- gtk_text_view_set_editable(GTK_TEXT_VIEW(bt->text), FALSE);
- gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(bt->text), FALSE);
- }
-
- if (labelStr) {
- bt->labelW = wlibAddLabel((wControl_p)bt, labelStr);
- }
-
- wlibAddHelpString(bt->widget, helpStr);
- gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(bt->text), GTK_WRAP_WORD);
- g_signal_connect(G_OBJECT(tb), "changed", G_CALLBACK(textChanged), bt);
- // place the widget in a fixed position of the parent
- gtk_fixed_put(GTK_FIXED(parent->widget), bt->widget, bt->realX, bt->realY);
- wlibControlGetSize((wControl_p)bt);
- wlibAddButton((wControl_p)bt);
- // done, return the finished widget
- return bt;
+ wText_p bt;
+ GtkTextBuffer *tb;
+ // create the widget
+ bt = wlibAlloc(parent, B_MULTITEXT, x, y, labelStr, sizeof *bt, NULL);
+ bt->width = width;
+ bt->height = height;
+ bt->option = option;
+ wlibComputePos((wControl_p)bt);
+ // create a scroll window with scroll bars that are automatically created
+ bt->widget = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(bt->widget),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+ // create a text view and place it inside the scroll widget
+ bt->text = gtk_text_view_new();
+
+ if (bt->text == 0) {
+ abort();
+ }
+
+ gtk_container_add(GTK_CONTAINER(bt->widget), bt->text);
+ // get the text buffer and add a bold tag to it
+ tb = gtk_text_view_get_buffer(GTK_TEXT_VIEW(bt->text));
+ gtk_text_buffer_create_tag(tb, "bold", "weight", PANGO_WEIGHT_BOLD, NULL);
+
+ // this seems to assume some fixed size fonts, not really helpful
+ if (option&BT_CHARUNITS) {
+ width *= 7;
+ height *= 14;
+ }
+
+ // show the widgets
+ gtk_widget_show(bt->text);
+ gtk_widget_show(bt->widget);
+ // set the size???
+ gtk_widget_set_size_request(GTK_WIDGET(bt->widget),
+ width+15/*requisition.width*/, height);
+
+ // configure read-only mode
+ if (bt->option&BO_READONLY) {
+ gtk_text_view_set_editable(GTK_TEXT_VIEW(bt->text), FALSE);
+ gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(bt->text), FALSE);
+ }
+
+ if (labelStr) {
+ bt->labelW = wlibAddLabel((wControl_p)bt, labelStr);
+ }
+
+ wlibAddHelpString(bt->widget, helpStr);
+ gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(bt->text), GTK_WRAP_WORD);
+ g_signal_connect(G_OBJECT(tb), "changed", G_CALLBACK(textChanged), bt);
+ // place the widget in a fixed position of the parent
+ gtk_fixed_put(GTK_FIXED(parent->widget), bt->widget, bt->realX, bt->realY);
+ wlibControlGetSize((wControl_p)bt);
+ wlibAddButton((wControl_p)bt);
+ // done, return the finished widget
+ return bt;
}
diff --git a/app/wlib/gtklib/timer.c b/app/wlib/gtklib/timer.c
index 80c71fb..9e70458 100644
--- a/app/wlib/gtklib/timer.c
+++ b/app/wlib/gtklib/timer.c
@@ -52,14 +52,14 @@ static setTriggerCallback_p triggerFunc = NULL;
*/
static gint doAlarm(
- gpointer data)
+ gpointer data)
{
- wAlarmCallBack_p func = (wAlarmCallBack_p)data;
+ wAlarmCallBack_p func = (wAlarmCallBack_p)data;
- func();
+ func();
- alarmTimer = 0;
- return FALSE;
+ alarmTimer = 0;
+ return FALSE;
}
/**
@@ -70,34 +70,34 @@ static gint doAlarm(
*/
void wAlarm(
- long count,
- wAlarmCallBack_p func) /* milliseconds */
+ long count,
+ wAlarmCallBack_p func) /* milliseconds */
{
- gtkPaused = TRUE;
+ gtkPaused = TRUE;
- if (alarmTimer) {
- g_source_remove(alarmTimer);
- }
+ if (alarmTimer) {
+ g_source_remove(alarmTimer);
+ }
- alarmTimer = g_timeout_add(count, doAlarm, (void *)(GSourceFunc)func);
+ alarmTimer = g_timeout_add(count, doAlarm, (void *)(GSourceFunc)func);
}
static void doTrigger(void)
{
- if (triggerControl && triggerFunc) {
- triggerFunc(triggerControl);
- triggerFunc = NULL;
- triggerControl = NULL;
- }
+ if (triggerControl && triggerFunc) {
+ triggerFunc(triggerControl);
+ triggerFunc = NULL;
+ triggerControl = NULL;
+ }
}
void wlibSetTrigger(
- wControl_p b,
- setTriggerCallback_p trigger)
+ wControl_p b,
+ setTriggerCallback_p trigger)
{
- triggerControl = b;
- triggerFunc = trigger;
- wAlarm(500, doTrigger);
+ triggerControl = b;
+ triggerFunc = trigger;
+ wAlarm(500, doTrigger);
}
/**
@@ -107,27 +107,28 @@ void wlibSetTrigger(
*/
void wPause(
- long count) /* milliseconds */
+ long count) /* milliseconds */
{
- while (gtk_events_pending())
- gtk_main_iteration(); //Allow GTK to finish before pausing
-
- struct timeval timeout;
- sigset_t signal_mask;
- sigset_t oldsignal_mask;
- gdk_display_sync(gdk_display_get_default());
- timeout.tv_sec = count/1000;
- timeout.tv_usec = (count%1000)*1000;
- sigemptyset(&signal_mask);
- sigaddset(&signal_mask, SIGIO);
- sigaddset(&signal_mask, SIGALRM);
- sigprocmask(SIG_BLOCK, &signal_mask, &oldsignal_mask);
-
- if (select(0, NULL, NULL, NULL, &timeout) == -1) {
- perror("wPause:select");
- }
-
- sigprocmask(SIG_BLOCK, &oldsignal_mask, NULL);
+ while (gtk_events_pending()) {
+ gtk_main_iteration(); //Allow GTK to finish before pausing
+ }
+
+ struct timeval timeout;
+ sigset_t signal_mask;
+ sigset_t oldsignal_mask;
+ gdk_display_sync(gdk_display_get_default());
+ timeout.tv_sec = count/1000;
+ timeout.tv_usec = (count%1000)*1000;
+ sigemptyset(&signal_mask);
+ sigaddset(&signal_mask, SIGIO);
+ sigaddset(&signal_mask, SIGALRM);
+ sigprocmask(SIG_BLOCK, &signal_mask, &oldsignal_mask);
+
+ if (select(0, NULL, NULL, NULL, &timeout) == -1) {
+ perror("wPause:select");
+ }
+
+ sigprocmask(SIG_BLOCK, &oldsignal_mask, NULL);
}
/**
@@ -139,9 +140,9 @@ void wPause(
unsigned long wGetTimer(void)
{
- struct timeval tv;
- struct timezone tz;
-
- gettimeofday(&tv, &tz);
- return (tv.tv_sec-startTime.tv_sec+1) * 1000 + tv.tv_usec /1000;
+ struct timeval tv;
+ struct timezone tz;
+
+ gettimeofday(&tv, &tz);
+ return (tv.tv_sec-startTime.tv_sec+1) * 1000 + tv.tv_usec /1000;
}
diff --git a/app/wlib/gtklib/tooltip.c b/app/wlib/gtklib/tooltip.c
index cd12d0a..75c8870 100644
--- a/app/wlib/gtklib/tooltip.c
+++ b/app/wlib/gtklib/tooltip.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 <stdio.h>
@@ -54,11 +54,11 @@ static wBool_t balloonVisible = FALSE;
/**
* Hide the currently displayed Balloon Help.
*/
-
+
void
wlibHelpHideBalloon()
{
- wControlSetBalloon( balloonB, 0, 0, NULL );
+ wControlSetBalloon( balloonB, 0, 0, NULL );
}
/**
@@ -70,7 +70,7 @@ wlibHelpHideBalloon()
void wSetBalloonHelp( wBalloonHelp_t * bh )
{
- balloonHelpStrings = bh;
+ balloonHelpStrings = bh;
}
/**
@@ -82,7 +82,7 @@ void wSetBalloonHelp( wBalloonHelp_t * bh )
void wEnableBalloonHelp( int enable )
{
- enableBalloonHelp = enable;
+ enableBalloonHelp = enable;
}
/**
@@ -93,10 +93,10 @@ void wEnableBalloonHelp( int enable )
*/
void wControlSetHelp(
- wControl_p b,
- const char * help )
+ wControl_p b,
+ const char * help )
{
- wControlSetBalloonText( b, help );
+ wControlSetBalloonText( b, help );
}
/**
@@ -107,13 +107,13 @@ void wControlSetHelp(
*/
void wControlSetBalloonText(
- wControl_p b,
- const char * label )
+ wControl_p b,
+ const char * label )
{
- assert(b->widget != NULL);
+ assert(b->widget != NULL);
- gtk_widget_set_tooltip_text( b->widget, label );
+ gtk_widget_set_tooltip_text( b->widget, label );
}
/**
@@ -128,93 +128,93 @@ void wControlSetBalloonText(
* \return
*/
-void wControlSetBalloon( wControl_p b, wWinPix_t dx, wWinPix_t dy, const char * msg )
+void wControlSetBalloon( wControl_p b, wWinPix_t dx, wWinPix_t dy,
+ const char * msg )
{
- PangoLayout * layout;
-
- gint x, y;
- gint w, h;
- wWinPix_t xx, yy;
- const char * msgConverted;
- GtkRequisition size;
-
- /* return if there is nothing to do */
- if (balloonVisible && balloonB == b &&
- balloonDx == dx && balloonDy == dy && msg != NULL && !balloonMsg[0])
- if (strcmp(msg,balloonMsg)==0)
- return;
-
- /* hide the tooltip */
- if ( msg == NULL ) {
- if ( balloonF != NULL && balloonVisible) {
- gtk_widget_hide( balloonF );
- balloonVisible = FALSE;
- }
- balloonMsg[0] = '\0';
- return;
- }
- msgConverted = wlibConvertInput(msg);
-
- if ( balloonF == NULL ) {
+ gint x, y;
+ gint w, h;
+ wWinPix_t xx, yy;
+ const char * msgConverted;
+ GtkRequisition size;
+
+ /* return if there is nothing to do */
+ if (balloonVisible && balloonB == b &&
+ balloonDx == dx && balloonDy == dy && msg != NULL && !balloonMsg[0])
+ if (strcmp(msg,balloonMsg)==0) {
+ return;
+ }
+
+ /* hide the tooltip */
+ if ( msg == NULL ) {
+ if ( balloonF != NULL && balloonVisible) {
+ gtk_widget_hide( balloonF );
+ balloonVisible = FALSE;
+ }
+ balloonMsg[0] = '\0';
+ return;
+ }
+ msgConverted = wlibConvertInput(msg);
+
+ if ( balloonF == NULL ) {
//GtkWidget *alignment;
- GdkColor color;
- color.red = 0x00C5 * 65536/255;
- color.green = 0x006F * 65536/255;
- color.blue = 0x0078 * 65536/255;
-
- balloonF = gtk_window_new( GTK_WINDOW_POPUP );
- gtk_window_set_type_hint( GTK_WINDOW( balloonF), GDK_WINDOW_TYPE_HINT_TOOLTIP );
- gtk_window_set_decorated (GTK_WINDOW (balloonF), FALSE );
- gtk_window_set_resizable( GTK_WINDOW (balloonF), FALSE );
- gtk_window_set_accept_focus(GTK_WINDOW( balloonF), FALSE);
- gtk_widget_modify_bg(GTK_WIDGET(balloonF), GTK_STATE_NORMAL, &color);
-
+ GdkColor color;
+ color.red = 0x00C5 * 65536/255;
+ color.green = 0x006F * 65536/255;
+ color.blue = 0x0078 * 65536/255;
+
+ balloonF = gtk_window_new( GTK_WINDOW_POPUP );
+ gtk_window_set_type_hint( GTK_WINDOW( balloonF), GDK_WINDOW_TYPE_HINT_TOOLTIP );
+ gtk_window_set_decorated (GTK_WINDOW (balloonF), FALSE );
+ gtk_window_set_resizable( GTK_WINDOW (balloonF), FALSE );
+ gtk_window_set_accept_focus(GTK_WINDOW( balloonF), FALSE);
+ gtk_widget_modify_bg(GTK_WIDGET(balloonF), GTK_STATE_NORMAL, &color);
+
GtkWidget * alignment = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
gtk_alignment_set_padding( GTK_ALIGNMENT(alignment), 6, 6, 6, 6 );
gtk_container_add (GTK_CONTAINER (balloonF), alignment);
-
+
gtk_widget_show (alignment);
-
- balloonPI = gtk_label_new(msgConverted);
- gtk_container_add( GTK_CONTAINER(alignment), balloonPI );
- gtk_widget_show_all( balloonPI );
- }
- gtk_label_set_text( GTK_LABEL(balloonPI), msgConverted );
-
- balloonDx = dx;
- balloonDy = dy;
- balloonB = b;
- snprintf(balloonMsg, sizeof(balloonMsg), "%s", msg);
- gtk_widget_get_requisition(balloonPI, &size );
- w = size.width;
- h = size.height;
-
- gtk_window_get_position( GTK_WINDOW(b->parent->gtkwin), &x, &y);
-
- x += b->realX + dx;
- y += b->realY + b->h - dy;
+
+ balloonPI = gtk_label_new(msgConverted);
+ gtk_container_add( GTK_CONTAINER(alignment), balloonPI );
+ gtk_widget_show_all( balloonPI );
+ }
+ gtk_label_set_text( GTK_LABEL(balloonPI), msgConverted );
+
+ balloonDx = dx;
+ balloonDy = dy;
+ balloonB = b;
+ snprintf(balloonMsg, sizeof(balloonMsg), "%s", msg);
+ gtk_widget_get_requisition(balloonPI, &size );
+ w = size.width;
+ h = size.height;
+
+ gtk_window_get_position( GTK_WINDOW(b->parent->gtkwin), &x, &y);
+
+ x += b->realX + dx;
+ y += b->realY + b->h - dy;
#ifdef __linux__
- y += 7; // balloon popup overlaps the control
+ y += 7; // balloon popup overlaps the control
#endif
- xx = gdk_screen_width();
- yy = gdk_screen_height();
- if ( x < 0 ) {
- x = 0;
- } else if ( x+w > xx ) {
- x = xx - w;
- }
- if ( y < 0 ) {
- y = 0;
- } else if ( y+h > yy ) {
- y = yy - h ;
- }
- gtk_window_move( GTK_WINDOW( balloonF ), x, y );
- gtk_widget_show_all( balloonF );
- gtk_widget_show( balloonPI );
-
- balloonVisible = TRUE;
+ xx = gdk_screen_width();
+ yy = gdk_screen_height();
+ if ( x < 0 ) {
+ x = 0;
+ } else if ( x+w > xx ) {
+ x = xx - w;
+ }
+ if ( y < 0 ) {
+ y = 0;
+ } else if ( y+h > yy ) {
+ y = yy - h ;
+ }
+ gtk_window_move( GTK_WINDOW( balloonF ), x, y );
+ gtk_widget_show_all( balloonF );
+ gtk_widget_show( balloonPI );
+
+ balloonVisible = TRUE;
}
/**
@@ -232,36 +232,41 @@ void wBalloonHelpUpdate( void )
*/
void wlibAddHelpString(
- GtkWidget * widget,
- const char * helpStr )
+ GtkWidget * widget,
+ const char * helpStr )
{
- char *string;
- char *wAppName = wlibGetAppName();
- wBalloonHelp_t * bhp;
-
- if (helpStr==NULL || *helpStr==0)
- return;
- if ( balloonHelpStrings == NULL )
- return;
-
- // search for the helpStr, bhp points to the entry when found
- for ( bhp = balloonHelpStrings; bhp->name && strcmp(bhp->name,helpStr) != 0; bhp++ )
- ;
-
- if (listMissingHelpStrings && !bhp->name) {
- printf( "Missing Help String: %s\n", helpStr );
- return;
- }
-
- string = malloc( strlen(wAppName) + 5 + strlen(helpStr) + 1 );
- sprintf( string, "%sHelp/%s", wAppName, helpStr );
-
- if(bhp->value)
+ char *string;
+ char *wAppName = wlibGetAppName();
+ wBalloonHelp_t * bhp;
+
+ if (helpStr==NULL || *helpStr==0) {
+ return;
+ }
+ if ( balloonHelpStrings == NULL ) {
+ return;
+ }
+
+ // search for the helpStr, bhp points to the entry when found
+ for ( bhp = balloonHelpStrings; bhp->name
+ && strcmp(bhp->name,helpStr) != 0; bhp++ )
+ ;
+
+ if (listMissingHelpStrings && !bhp->name) {
+ printf( "Missing Help String: %s\n", helpStr );
+ return;
+ }
+
+ string = malloc( strlen(wAppName) + 5 + strlen(helpStr) + 1 );
+ sprintf( string, "%sHelp/%s", wAppName, helpStr );
+
+ if(bhp->value) {
gtk_widget_set_tooltip_text( widget, wlibConvertInput(_(bhp->value)) );
+ }
- g_object_set_data( G_OBJECT( widget ), HELPDATAKEY, string );
+ g_object_set_data( G_OBJECT( widget ), HELPDATAKEY, string );
- if (listHelpStrings)
- printf( "HELPSTR - %s\n", string );
+ if (listHelpStrings) {
+ printf( "HELPSTR - %s\n", string );
+ }
}
diff --git a/app/wlib/gtklib/treeview.c b/app/wlib/gtklib/treeview.c
index e8e0625..b3f2d77 100644
--- a/app/wlib/gtklib/treeview.c
+++ b/app/wlib/gtklib/treeview.c
@@ -53,7 +53,7 @@
int
wTreeViewGetCount(wList_p b)
{
- return b->count;
+ return b->count;
}
/**
@@ -65,9 +65,9 @@ wTreeViewGetCount(wList_p b)
void
wTreeViewClear(wList_p b)
{
- assert(b != NULL);
+ assert(b != NULL);
- wlibListStoreClear(b->listStore);
+ wlibListStoreClear(b->listStore);
}
/**
@@ -81,15 +81,15 @@ wTreeViewClear(wList_p b)
void *
wTreeViewGetItemContext(wList_p b, int row)
{
- wListItem_p id_p;
+ wListItem_p id_p;
- id_p = wlibListItemGet(b->listStore, row, NULL);
+ id_p = wlibListItemGet(b->listStore, row, NULL);
- if (id_p) {
- return id_p->itemData;
- } else {
- return NULL;
- }
+ if (id_p) {
+ return id_p->itemData;
+ } else {
+ return NULL;
+ }
}
/**
@@ -101,11 +101,11 @@ wTreeViewGetItemContext(wList_p b, int row)
*/
wIndex_t wListGetIndex(
- wList_p b)
+ wList_p b)
{
- assert(b!=NULL);
+ assert(b!=NULL);
- return b->last;
+ return b->last;
}
/**
@@ -119,48 +119,48 @@ wIndex_t wListGetIndex(
void
wlibTreeViewSetSelected(wList_p b, int index)
{
- GtkTreeSelection *sel;
- GtkTreeIter iter;
+ GtkTreeSelection *sel;
+ GtkTreeIter iter;
- wListItem_p id_p;
+ wListItem_p id_p;
- sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(b->treeView));
+ sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(b->treeView));
- if (gtk_tree_selection_count_selected_rows(sel)) {
+ if (gtk_tree_selection_count_selected_rows(sel)) {
int inx;
-
- gtk_tree_selection_unselect_all(sel);
- // and synchronize the internal data structures
- wTreeViewGetCount(b);
+ gtk_tree_selection_unselect_all(sel);
- for (inx=0; inx<b->count; inx++) {
- id_p = wlibListItemGet(b->listStore, inx, NULL);
- id_p->selected = FALSE;
- }
- }
+ // and synchronize the internal data structures
+ wTreeViewGetCount(b);
- if (index != -1) {
+ for (inx=0; inx<b->count; inx++) {
+ id_p = wlibListItemGet(b->listStore, inx, NULL);
+ id_p->selected = FALSE;
+ }
+ }
+
+ if (index != -1) {
gint childs;
-
+
childs = gtk_tree_model_iter_n_children (GTK_TREE_MODEL(b->listStore),
- NULL );
+ NULL );
if(index < childs) {
gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(b->listStore),
- &iter,
- NULL,
- index);
+ &iter,
+ NULL,
+ index);
gtk_tree_selection_select_iter(sel,
- &iter);
+ &iter);
id_p = wlibListItemGet(b->listStore, index, NULL);
-
+
if (id_p) {
id_p->selected = TRUE;
}
- }
- }
+ }
+ }
}
/**
@@ -175,35 +175,37 @@ wlibTreeViewSetSelected(wList_p b, int index)
GtkWidget *
wlibNewTreeView(GtkListStore *ls, int showTitles, int multiSelection)
{
- GtkWidget *treeView;
- GtkTreeSelection *sel;
- assert(ls != NULL);
+ GtkWidget *treeView;
+ GtkTreeSelection *sel;
+ assert(ls != NULL);
- /* create and configure the tree view */
- treeView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls));
- gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeView), showTitles);
+ /* create and configure the tree view */
+ treeView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls));
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeView), showTitles);
- /* set up selection handling */
- sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeView));
- gtk_tree_selection_set_mode(sel,
- (multiSelection)?GTK_SELECTION_MULTIPLE:GTK_SELECTION_BROWSE);
+ /* set up selection handling */
+ sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeView));
+ gtk_tree_selection_set_mode(sel,
+ (multiSelection)?GTK_SELECTION_MULTIPLE:GTK_SELECTION_BROWSE);
- return (treeView);
+ return (treeView);
}
+#if 0
static int changeListColumnWidth(
- GtkTreeViewColumn * column,
- void * width)
+ GtkTreeViewColumn * column,
+ void * width)
{
- //wList_p bl = (wList_p)data;
+ //wList_p bl = (wList_p)data;
- //if (bl->recursion)
- //return 0;
- //if ( col >= 0 && col < bl->colCnt )
- //bl->colWidths[col] = width;
- return 0;
+ //if (bl->recursion)
+ //return 0;
+ //if ( col >= 0 && col < bl->colCnt )
+ //bl->colWidths[col] = width;
+ return 0;
}
+#endif
/**
* Create and initialize a column in treeview. Initially all columns are
@@ -220,17 +222,17 @@ static void
wlibAddColumn(GtkWidget *tv, int visibility, GtkCellRenderer *renderer,
char *attribute, int value)
{
- GtkTreeViewColumn *column;
+ GtkTreeViewColumn *column;
- column = gtk_tree_view_column_new();
- gtk_tree_view_column_pack_start(column,
- renderer,
- TRUE);
- gtk_tree_view_column_add_attribute(column, renderer, attribute, value);
- gtk_tree_view_column_set_visible(column, visibility);
- gtk_tree_view_column_set_resizable(column, TRUE);
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_column_pack_start(column,
+ renderer,
+ TRUE);
+ gtk_tree_view_column_add_attribute(column, renderer, attribute, value);
+ gtk_tree_view_column_set_visible(column, visibility);
+ gtk_tree_view_column_set_resizable(column, TRUE);
- gtk_tree_view_append_column(GTK_TREE_VIEW(tv), column);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(tv), column);
// g_signal_connect( column, "notify::width", G_CALLBACK(changeListColumnWidth), tv );
}
@@ -247,22 +249,22 @@ wlibAddColumn(GtkWidget *tv, int visibility, GtkCellRenderer *renderer,
int
wlibTreeViewAddColumns(GtkWidget *tv, int count)
{
- GtkCellRenderer *renderer;
- int i;
+ GtkCellRenderer *renderer;
+ int i;
- assert(tv != NULL);
- renderer = gtk_cell_renderer_pixbuf_new();
- /* first visible column is used for bitmaps */
- wlibAddColumn(tv, FALSE, renderer, "pixbuf", LISTCOL_BITMAP);
+ assert(tv != NULL);
+ renderer = gtk_cell_renderer_pixbuf_new();
+ /* first visible column is used for bitmaps */
+ wlibAddColumn(tv, FALSE, renderer, "pixbuf", LISTCOL_BITMAP);
- renderer = gtk_cell_renderer_text_new();
+ renderer = gtk_cell_renderer_text_new();
- /* add renderers to all columns */
- for (i = 0; i < count; i++) {
- wlibAddColumn(tv, TRUE, renderer, "text", i + LISTCOL_TEXT);
- }
+ /* add renderers to all columns */
+ for (i = 0; i < count; i++) {
+ wlibAddColumn(tv, TRUE, renderer, "text", i + LISTCOL_TEXT);
+ }
- return i;
+ return i;
}
/**
@@ -276,26 +278,26 @@ wlibTreeViewAddColumns(GtkWidget *tv, int count)
int
wlibAddColumnTitles(GtkWidget *tv, const char **titles)
{
- int i = 0;
-
- assert(tv != NULL);
-
- if (titles) {
- while (*titles) {
- GtkTreeViewColumn *column;
-
- column = gtk_tree_view_get_column(GTK_TREE_VIEW(tv), i + 1);
-
- if (column) {
- gtk_tree_view_column_set_title(column, titles[ i ]);
- i++;
- } else {
- break;
- }
- }
- }
-
- return i;
+ int i = 0;
+
+ assert(tv != NULL);
+
+ if (titles) {
+ while (*titles) {
+ GtkTreeViewColumn *column;
+
+ column = gtk_tree_view_get_column(GTK_TREE_VIEW(tv), i + 1);
+
+ if (column) {
+ gtk_tree_view_column_set_title(column, titles[ i ]);
+ i++;
+ } else {
+ break;
+ }
+ }
+ }
+
+ return i;
}
/**
@@ -313,20 +315,20 @@ int
wlibTreeViewAddData(GtkWidget *tv, int cols, char *label, GdkPixbuf *pixbuf,
wListItem_p userData)
{
- GtkListStore *listStore = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(
- tv)));
+ GtkListStore *listStore = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(
+ tv)));
+
+ wlibListStoreAddData(listStore, pixbuf, cols, userData);
- wlibListStoreAddData(listStore, pixbuf, cols, userData);
+ if (pixbuf) {
+ GtkTreeViewColumn *column;
- if (pixbuf) {
- GtkTreeViewColumn *column;
-
- // first column in list store has pixbuf
- column = gtk_tree_view_get_column(GTK_TREE_VIEW(tv), 0);
- gtk_tree_view_column_set_visible(column,
- TRUE);
- }
- return 0;
+ // first column in list store has pixbuf
+ column = gtk_tree_view_get_column(GTK_TREE_VIEW(tv), 0);
+ gtk_tree_view_column_set_visible(column,
+ TRUE);
+ }
+ return 0;
}
@@ -344,28 +346,28 @@ wlibTreeViewAddData(GtkWidget *tv, int cols, char *label, GdkPixbuf *pixbuf,
void
wlibTreeViewAddRow(wList_p b, char *label, wIcon_p bm, wListItem_p id_p)
{
- GtkAdjustment *adj;
- GdkPixbuf *pixbuf = NULL;
+ GtkAdjustment *adj;
+ GdkPixbuf *pixbuf = NULL;
- if (bm) {
- pixbuf = wlibMakePixbuf(bm);
- }
+ if (bm) {
+ pixbuf = wlibMakePixbuf(bm);
+ }
- wlibTreeViewAddData(b->treeView, b->colCnt, (char *)label, pixbuf, id_p);
+ wlibTreeViewAddData(b->treeView, b->colCnt, (char *)label, pixbuf, id_p);
- adj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(b->widget));
+ adj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(b->widget));
- if (gtk_adjustment_get_upper(adj) < gtk_adjustment_get_step_increment(adj) *
- (b->count+1)) {
- gtk_adjustment_set_upper(adj,
- gtk_adjustment_get_upper(adj) +
- gtk_adjustment_get_step_increment(adj));
- gtk_adjustment_changed(adj);
- }
+ if (gtk_adjustment_get_upper(adj) < gtk_adjustment_get_step_increment(adj) *
+ (b->count+1)) {
+ gtk_adjustment_set_upper(adj,
+ gtk_adjustment_get_upper(adj) +
+ gtk_adjustment_get_step_increment(adj));
+ gtk_adjustment_changed(adj);
+ }
- b->last = gtk_tree_model_iter_n_children(gtk_tree_view_get_model(GTK_TREE_VIEW(
- b->treeView)),
- NULL);
+ b->last = gtk_tree_model_iter_n_children(gtk_tree_view_get_model(GTK_TREE_VIEW(
+ b->treeView)),
+ NULL);
}
@@ -390,36 +392,34 @@ changeSelection(GtkTreeSelection *selection,
gboolean path_currently_selected,
gpointer data)
{
- GtkTreeIter iter;
- GValue value = { 0 };
- wListItem_p id_p = NULL;
- wList_p bl = (wList_p)data;
- int row;
- char *text;
+ GtkTreeIter iter;
+ GValue value = { 0 };
+ wListItem_p id_p = NULL;
+ wList_p bl = (wList_p)data;
+ int row;
+ char *text;
- text = gtk_tree_path_to_string(path);
- row = atoi(text);
- g_free(text);
+ text = gtk_tree_path_to_string(path);
+ row = atoi(text);
+ g_free(text);
- gtk_tree_model_get_iter(model, &iter, path);
- gtk_tree_model_get_value(model, &iter, LISTCOL_DATA, &value);
+ gtk_tree_model_get_iter(model, &iter, path);
+ gtk_tree_model_get_value(model, &iter, LISTCOL_DATA, &value);
- id_p = g_value_get_pointer(&value);
- id_p->selected = !path_currently_selected;
+ id_p = g_value_get_pointer(&value);
+ id_p->selected = !path_currently_selected;
- if (id_p->selected) {
- bl->last = row;
+ bl->last = row;
- if (bl->valueP) {
- *bl->valueP = row;
- }
+ if (bl->valueP) {
+ *bl->valueP = row;
+ }
- if (bl->action) {
- bl->action(row, id_p->label, 1, bl->data, id_p->itemData);
- }
- }
+ if (bl->action) {
+ bl->action(row, id_p->label, id_p->selected, bl->data, id_p->itemData);
+ }
- return TRUE;
+ return TRUE;
}
/**
@@ -444,88 +444,88 @@ changeSelection(GtkTreeSelection *selection,
*/
wList_p wListCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- long number,
- wWinPix_t width,
- int colCnt,
- wWinPix_t * colWidths,
- wBool_t * colRightJust,
- const char ** colTitles,
- long *valueP,
- wListCallBack_p action,
- void *data)
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ long number,
+ wWinPix_t width,
+ int colCnt,
+ wWinPix_t * colWidths,
+ wBool_t * colRightJust,
+ const char ** colTitles,
+ long *valueP,
+ wListCallBack_p action,
+ void *data)
{
- GtkTreeSelection *sel;
- wList_p bl;
- static wWinPix_t zeroPos = 0;
+ GtkTreeSelection *sel;
+ wList_p bl;
+ static wWinPix_t zeroPos = 0;
- assert(width != 0);
+ assert(width != 0);
- bl = (wList_p)wlibAlloc(parent, B_LIST, x, y, labelStr, sizeof *bl, data);
- bl->option = option;
- bl->number = number;
- bl->count = 0;
- bl->last = -1;
- bl->valueP = valueP;
- bl->action = action;
- bl->listX = bl->realX;
+ bl = (wList_p)wlibAlloc(parent, B_LIST, x, y, labelStr, sizeof *bl, data);
+ bl->option = option;
+ bl->number = number;
+ bl->count = 0;
+ bl->last = -1;
+ bl->valueP = valueP;
+ bl->action = action;
+ bl->listX = bl->realX;
- if (colCnt <= 0) {
- colCnt = 1;
- colWidths = &zeroPos;
- }
+ if (colCnt <= 0) {
+ colCnt = 1;
+ colWidths = &zeroPos;
+ }
- bl->colCnt = colCnt;
- bl->colWidths = (wWinPix_t*)malloc(colCnt * sizeof *(wWinPix_t*)0);
- memcpy(bl->colWidths, colWidths, colCnt * sizeof *(wWinPix_t*)0);
+ bl->colCnt = colCnt;
+ bl->colWidths = (wWinPix_t*)malloc(colCnt * sizeof *(wWinPix_t*)0);
+ memcpy(bl->colWidths, colWidths, colCnt * sizeof *(wWinPix_t*)0);
- /* create the data structure for data */
- bl->listStore = wlibNewListStore(colCnt);
- /* create the widget for the list store */
- bl->treeView = wlibNewTreeView(bl->listStore,
- colTitles != NULL,
- option & BL_MANY);
+ /* create the data structure for data */
+ bl->listStore = wlibNewListStore(colCnt);
+ /* create the widget for the list store */
+ bl->treeView = wlibNewTreeView(bl->listStore,
+ colTitles != NULL,
+ option & BL_MANY);
- sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(bl->treeView));
+ sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(bl->treeView));
- gtk_tree_selection_set_select_function(sel,
- changeSelection,
- bl,
- NULL);
+ gtk_tree_selection_set_select_function(sel,
+ changeSelection,
+ bl,
+ NULL);
- wlibTreeViewAddColumns(bl->treeView, colCnt);
+ wlibTreeViewAddColumns(bl->treeView, colCnt);
- wlibAddColumnTitles(bl->treeView, colTitles);
+ wlibAddColumnTitles(bl->treeView, colTitles);
- wlibComputePos((wControl_p)bl);
+ wlibComputePos((wControl_p)bl);
- bl->widget = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(bl->widget),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(bl->widget),
- bl->treeView);
+ bl->widget = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(bl->widget),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(bl->widget),
+ bl->treeView);
- gtk_widget_set_size_request(bl->widget, width, (number+1)*ROW_HEIGHT);
+ gtk_widget_set_size_request(bl->widget, width, (number+1)*ROW_HEIGHT);
/// g_signal_connect( GTK_OBJECT(bl->list), "resize_column", G_CALLBACK(changeListColumnWidth), bl );
- gtk_widget_show_all(bl->widget);
+ gtk_widget_show_all(bl->widget);
- gtk_fixed_put(GTK_FIXED(parent->widget), bl->widget, bl->realX, bl->realY);
- wlibControlGetSize((wControl_p)bl);
+ gtk_fixed_put(GTK_FIXED(parent->widget), bl->widget, bl->realX, bl->realY);
+ wlibControlGetSize((wControl_p)bl);
- if (labelStr) {
- bl->labelW = wlibAddLabel((wControl_p)bl, labelStr);
- }
+ if (labelStr) {
+ bl->labelW = wlibAddLabel((wControl_p)bl, labelStr);
+ }
- wlibAddButton((wControl_p)bl);
- wlibAddHelpString(bl->widget, helpStr);
+ wlibAddButton((wControl_p)bl);
+ wlibAddHelpString(bl->widget, helpStr);
- return bl;
+ return bl;
}
diff --git a/app/wlib/gtklib/uthash.h b/app/wlib/gtklib/uthash.h
index 39fd891..bf74f7b 100644
--- a/app/wlib/gtklib/uthash.h
+++ b/app/wlib/gtklib/uthash.h
@@ -890,22 +890,22 @@ for((el)=(head),(tmp)=DECLTYPE(el)((head)?(head)->hh.next:NULL);
#define HASH_CNT(hh,head) ((head)?((head)->hh.tbl->num_items):0)
typedef struct UT_hash_bucket {
- struct UT_hash_handle *hh_head;
- unsigned count;
-
- /* expand_mult is normally set to 0. In this situation, the max chain length
- * threshold is enforced at its default value, HASH_BKT_CAPACITY_THRESH. (If
- * the bucket's chain exceeds this length, bucket expansion is triggered).
- * However, setting expand_mult to a non-zero value delays bucket expansion
- * (that would be triggered by additions to this particular bucket)
- * until its chain length reaches a *multiple* of HASH_BKT_CAPACITY_THRESH.
- * (The multiplier is simply expand_mult+1). The whole idea of this
- * multiplier is to reduce bucket expansions, since they are expensive, in
- * situations where we know that a particular bucket tends to be overused.
- * It is better to let its chain length grow to a longer yet-still-bounded
- * value, than to do an O(n) bucket expansion too often.
- */
- unsigned expand_mult;
+ struct UT_hash_handle *hh_head;
+ unsigned count;
+
+ /* expand_mult is normally set to 0. In this situation, the max chain length
+ * threshold is enforced at its default value, HASH_BKT_CAPACITY_THRESH. (If
+ * the bucket's chain exceeds this length, bucket expansion is triggered).
+ * However, setting expand_mult to a non-zero value delays bucket expansion
+ * (that would be triggered by additions to this particular bucket)
+ * until its chain length reaches a *multiple* of HASH_BKT_CAPACITY_THRESH.
+ * (The multiplier is simply expand_mult+1). The whole idea of this
+ * multiplier is to reduce bucket expansions, since they are expensive, in
+ * situations where we know that a particular bucket tends to be overused.
+ * It is better to let its chain length grow to a longer yet-still-bounded
+ * value, than to do an O(n) bucket expansion too often.
+ */
+ unsigned expand_mult;
} UT_hash_bucket;
@@ -914,47 +914,47 @@ typedef struct UT_hash_bucket {
#define HASH_BLOOM_SIGNATURE 0xb12220f2
typedef struct UT_hash_table {
- UT_hash_bucket *buckets;
- unsigned num_buckets, log2_num_buckets;
- unsigned num_items;
- struct UT_hash_handle *tail; /* tail hh in app order, for fast append */
- ptrdiff_t hho; /* hash handle offset (byte pos of hash handle in element */
-
- /* in an ideal situation (all buckets used equally), no bucket would have
- * more than ceil(#items/#buckets) items. that's the ideal chain length. */
- unsigned ideal_chain_maxlen;
-
- /* nonideal_items is the number of items in the hash whose chain position
- * exceeds the ideal chain maxlen. these items pay the penalty for an uneven
- * hash distribution; reaching them in a chain traversal takes >ideal steps */
- unsigned nonideal_items;
-
- /* ineffective expands occur when a bucket doubling was performed, but
- * afterward, more than half the items in the hash had nonideal chain
- * positions. If this happens on two consecutive expansions we inhibit any
- * further expansion, as it's not helping; this happens when the hash
- * function isn't a good fit for the key domain. When expansion is inhibited
- * the hash will still work, albeit no longer in constant time. */
- unsigned ineff_expands, noexpand;
-
- uint32_t signature; /* used only to find hash tables in external analysis */
+ UT_hash_bucket *buckets;
+ unsigned num_buckets, log2_num_buckets;
+ unsigned num_items;
+ struct UT_hash_handle *tail; /* tail hh in app order, for fast append */
+ ptrdiff_t hho; /* hash handle offset (byte pos of hash handle in element */
+
+ /* in an ideal situation (all buckets used equally), no bucket would have
+ * more than ceil(#items/#buckets) items. that's the ideal chain length. */
+ unsigned ideal_chain_maxlen;
+
+ /* nonideal_items is the number of items in the hash whose chain position
+ * exceeds the ideal chain maxlen. these items pay the penalty for an uneven
+ * hash distribution; reaching them in a chain traversal takes >ideal steps */
+ unsigned nonideal_items;
+
+ /* ineffective expands occur when a bucket doubling was performed, but
+ * afterward, more than half the items in the hash had nonideal chain
+ * positions. If this happens on two consecutive expansions we inhibit any
+ * further expansion, as it's not helping; this happens when the hash
+ * function isn't a good fit for the key domain. When expansion is inhibited
+ * the hash will still work, albeit no longer in constant time. */
+ unsigned ineff_expands, noexpand;
+
+ uint32_t signature; /* used only to find hash tables in external analysis */
#ifdef HASH_BLOOM
- uint32_t bloom_sig; /* used only to test bloom exists in external analysis */
- uint8_t *bloom_bv;
- char bloom_nbits;
+ uint32_t bloom_sig; /* used only to test bloom exists in external analysis */
+ uint8_t *bloom_bv;
+ char bloom_nbits;
#endif
} UT_hash_table;
typedef struct UT_hash_handle {
- struct UT_hash_table *tbl;
- void *prev; /* prev element in app order */
- void *next; /* next element in app order */
- struct UT_hash_handle *hh_prev; /* previous hh in bucket order */
- struct UT_hash_handle *hh_next; /* next hh in bucket order */
- void *key; /* ptr to enclosing struct's key */
- unsigned keylen; /* enclosing struct's key len */
- unsigned hashv; /* result of hash-fcn(key) */
+ struct UT_hash_table *tbl;
+ void *prev; /* prev element in app order */
+ void *next; /* next element in app order */
+ struct UT_hash_handle *hh_prev; /* previous hh in bucket order */
+ struct UT_hash_handle *hh_next; /* next hh in bucket order */
+ void *key; /* ptr to enclosing struct's key */
+ unsigned keylen; /* enclosing struct's key len */
+ unsigned hashv; /* result of hash-fcn(key) */
} UT_hash_handle;
#endif /* UTHASH_H */
diff --git a/app/wlib/gtklib/util.c b/app/wlib/gtklib/util.c
index 14ca689..3f746e6 100644
--- a/app/wlib/gtklib/util.c
+++ b/app/wlib/gtklib/util.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 <stdio.h>
@@ -44,34 +44,36 @@ long debugWindow = 0;
char wConfigName[ 256 ];
const char * wNames[] = {
- "MAIN",
- "POPUP",
- "BUTT",
- "CANCEL",
- "POPUP",
- "TEXT",
- "INTEGER",
- "FLOAT",
- "LIST",
- "DROPLIST",
- "COMBOLIST",
- "RADIO",
- "TOGGLE",
- "DRAW",
- "MENU"
- "MULTITEXT",
- "MESSAGE",
- "LINES",
- "MENUITEM",
- "BOX"
+ "MAIN",
+ "POPUP",
+ "BUTT",
+ "CANCEL",
+ "POPUP",
+ "TEXT",
+ "INTEGER",
+ "FLOAT",
+ "LIST",
+ "DROPLIST",
+ "COMBOLIST",
+ "RADIO",
+ "TOGGLE",
+ "DRAW",
+ "MENU"
+ "MULTITEXT",
+ "MESSAGE",
+ "LINES",
+ "MENUITEM",
+ "BOX"
};
+#if 0
static wBool_t reverseIcon =
#if defined(linux)
- FALSE;
+ FALSE;
#else
- TRUE;
+ TRUE;
+#endif
#endif
@@ -92,50 +94,49 @@ static wBool_t reverseIcon =
*/
GdkPixbuf* wlibPixbufFromXBM(
- wIcon_p ip)
+ wIcon_p ip)
{
- GdkPixbuf * pixbuf;
-
- char line0[40];
- char line2[40];
-
- char ** pixmapData;
- int row, col, wb;
- long rgb;
- const char * bits;
-
- wb = (ip->w + 7) / 8;
- pixmapData = (char**) malloc((3 + ip->h) * sizeof *pixmapData);
- pixmapData[0] = line0;
- rgb = wDrawGetRGB(ip->color);
- sprintf(line0, " %ld %ld 2 1", ip->w, ip->h);
- sprintf(line2, "# c #%2.2lx%2.2lx%2.2lx", (rgb >> 16)&0xFF, (rgb >> 8)&0xFF,
- rgb & 0xFF);
- pixmapData[1] = ". c None s None";
- pixmapData[2] = line2;
- bits = ip->bits;
-
- for (row = 0; row < ip->h; row++) {
- pixmapData[row + 3] = (char*) malloc((ip->w + 1) * sizeof **pixmapData);
-
- for (col = 0; col < ip->w; col++) {
- if (bits[ row * wb + (col >> 3) ] & (1 << (col & 07))) {
- pixmapData[row + 3][col] = '#';
- }
- else {
- pixmapData[row + 3][col] = '.';
- }
- }
- pixmapData[row + 3][ip->w] = 0;
- }
-
- pixbuf = gdk_pixbuf_new_from_xpm_data((const char **) pixmapData);
-
- for (row = 0; row < ip->h; row++) {
- free(pixmapData[row + 3]);
- }
- free(pixmapData);
- return pixbuf;
+ GdkPixbuf * pixbuf;
+
+ char line0[40];
+ char line2[40];
+
+ char ** pixmapData;
+ int row, col, wb;
+ long rgb;
+ const char * bits;
+
+ wb = (ip->w + 7) / 8;
+ pixmapData = (char**) malloc((3 + ip->h) * sizeof *pixmapData);
+ pixmapData[0] = line0;
+ rgb = wDrawGetRGB(ip->color);
+ sprintf(line0, " %ld %ld 2 1", ip->w, ip->h);
+ sprintf(line2, "# c #%2.2lx%2.2lx%2.2lx", (rgb >> 16)&0xFF, (rgb >> 8)&0xFF,
+ rgb & 0xFF);
+ pixmapData[1] = ". c None s None";
+ pixmapData[2] = line2;
+ bits = ip->bits;
+
+ for (row = 0; row < ip->h; row++) {
+ pixmapData[row + 3] = (char*) malloc((ip->w + 1) * sizeof **pixmapData);
+
+ for (col = 0; col < ip->w; col++) {
+ if (bits[ row * wb + (col >> 3) ] & (1 << (col & 07))) {
+ pixmapData[row + 3][col] = '#';
+ } else {
+ pixmapData[row + 3][col] = '.';
+ }
+ }
+ pixmapData[row + 3][ip->w] = 0;
+ }
+
+ pixbuf = gdk_pixbuf_new_from_xpm_data((const char **) pixmapData);
+
+ for (row = 0; row < ip->h; row++) {
+ free(pixmapData[row + 3]);
+ }
+ free(pixmapData);
+ return pixbuf;
}
/**
@@ -148,23 +149,25 @@ GdkPixbuf* wlibPixbufFromXBM(
int wlibAddLabel(wControl_p b, const char * labelStr)
{
- GtkRequisition requisition, reqwidget;
-
- if (labelStr == NULL) {
- return 0;
- }
-
- b->label = gtk_label_new(wlibConvertInput(labelStr));
- gtk_widget_size_request(b->label, &requisition);
- if (b->widget)
- gtk_widget_size_request(b->widget, &reqwidget);
- else
- reqwidget.height = requisition.height;
- gtk_container_add(GTK_CONTAINER(b->parent->widget), b->label);
- gtk_fixed_move(GTK_FIXED(b->parent->widget), b->label,
- b->realX - requisition.width - 8, b->realY + (reqwidget.height/2 - requisition.height/2));
- gtk_widget_show(b->label);
- return requisition.width + 8;
+ GtkRequisition requisition, reqwidget;
+
+ if (labelStr == NULL) {
+ return 0;
+ }
+
+ b->label = gtk_label_new(wlibConvertInput(labelStr));
+ gtk_widget_size_request(b->label, &requisition);
+ if (b->widget) {
+ gtk_widget_size_request(b->widget, &reqwidget);
+ } else {
+ reqwidget.height = requisition.height;
+ }
+ gtk_container_add(GTK_CONTAINER(b->parent->widget), b->label);
+ gtk_fixed_move(GTK_FIXED(b->parent->widget), b->label,
+ b->realX - requisition.width - 8,
+ b->realY + (reqwidget.height/2 - requisition.height/2));
+ gtk_widget_show(b->label);
+ return requisition.width + 8;
}
/**
@@ -181,44 +184,44 @@ int wlibAddLabel(wControl_p b, const char * labelStr)
*/
void * wlibAlloc(
- wWin_p parent,
- wType_e type,
- wWinPix_t origX,
- wWinPix_t origY,
- const char * labelStr,
- int size,
- void * data)
+ wWin_p parent,
+ wType_e type,
+ wWinPix_t origX,
+ wWinPix_t origY,
+ const char * labelStr,
+ int size,
+ void * data)
{
- wControl_p w = (wControl_p) malloc(size);
- char * cp;
- memset(w, 0, size);
+ wControl_p w = (wControl_p) malloc(size);
+ char * cp;
+ memset(w, 0, size);
- if (w == NULL) {
- abort();
- }
+ if (w == NULL) {
+ abort();
+ }
- w->outline = FALSE;
+ w->outline = FALSE;
- w->type = type;
- w->parent = parent;
- w->origX = origX;
- w->origY = origY;
+ w->type = type;
+ w->parent = parent;
+ w->origX = origX;
+ w->origY = origY;
- if (labelStr) {
- cp = (char*) malloc(strlen(labelStr) + 1);
- w->labelStr = cp;
+ if (labelStr) {
+ cp = (char*) malloc(strlen(labelStr) + 1);
+ w->labelStr = cp;
- for (; *labelStr; labelStr++)
- if (*labelStr != '&') {
- *cp++ = *labelStr;
- }
+ for (; *labelStr; labelStr++)
+ if (*labelStr != '&') {
+ *cp++ = *labelStr;
+ }
- *cp = 0;
- }
+ *cp = 0;
+ }
- w->doneProc = NULL;
- w->data = data;
- return w;
+ w->doneProc = NULL;
+ w->data = data;
+ return w;
}
/**
@@ -228,23 +231,22 @@ void * wlibAlloc(
*/
void wlibComputePos(
- wControl_p b)
+ wControl_p b)
{
- wWin_p w = b->parent;
-
- if (b->origX >= 0) {
- b->realX = b->origX;
- }
- else {
- b->realX = w->lastX + (-b->origX) - 1;
- }
-
- if (b->origY >= 0) {
- b->realY = b->origY + BORDERSIZE + ((w->option & F_MENUBAR) ? w->menu_height : 0);
- }
- else {
- b->realY = w->lastY + (-b->origY) - 1;
- }
+ wWin_p w = b->parent;
+
+ if (b->origX >= 0) {
+ b->realX = b->origX;
+ } else {
+ b->realX = w->lastX + (-b->origX) - 1;
+ }
+
+ if (b->origY >= 0) {
+ b->realY = b->origY + BORDERSIZE + ((w->option & F_MENUBAR) ? w->menu_height :
+ 0);
+ } else {
+ b->realY = w->lastY + (-b->origY) - 1;
+ }
}
/**
@@ -254,12 +256,12 @@ void wlibComputePos(
*/
void wlibControlGetSize(
- wControl_p b)
+ wControl_p b)
{
- GtkRequisition requisition;
- gtk_widget_size_request(b->widget, &requisition);
- b->w = requisition.width;
- b->h = requisition.height;
+ GtkRequisition requisition;
+ gtk_widget_size_request(b->widget, &requisition);
+ b->w = requisition.width;
+ b->h = requisition.height;
}
/**
@@ -268,50 +270,49 @@ void wlibControlGetSize(
*/
void wlibAddButton(
- wControl_p b)
+ wControl_p b)
{
- wWin_p win = b->parent;
- wBool_t resize = FALSE;
-
- if (win->first == NULL) {
- win->first = b;
- }
- else {
- win->last->next = b;
- }
-
- win->last = b;
- b->next = NULL;
- b->parent = win;
- win->lastX = b->realX + b->w;
- win->lastY = b->realY + b->h;
-
- if (win->option & F_AUTOSIZE) {
- if (win->lastX > win->realX) {
- win->realX = win->lastX;
-
- if (win->w != (win->realX + win->origX)) {
- resize = TRUE;
- win->w = (win->realX + win->origX);
- }
- }
-
- if (win->lastY > win->realY) {
- win->realY = win->lastY;
-
- if (win->h != (win->realY + win->origY)) {
- resize = TRUE;
- win->h = (win->realY + win->origY);
- }
- }
-
- if (win->shown) {
- if (resize) {
- gtk_widget_set_size_request(win->gtkwin, win->w, win->h);
- gtk_widget_set_size_request(win->widget, win->w, win->h);
- }
- }
- }
+ wWin_p win = b->parent;
+ wBool_t resize = FALSE;
+
+ if (win->first == NULL) {
+ win->first = b;
+ } else {
+ win->last->next = b;
+ }
+
+ win->last = b;
+ b->next = NULL;
+ b->parent = win;
+ win->lastX = b->realX + b->w;
+ win->lastY = b->realY + b->h;
+
+ if (win->option & F_AUTOSIZE) {
+ if (win->lastX > win->realX) {
+ win->realX = win->lastX;
+
+ if (win->w != (win->realX + win->origX)) {
+ resize = TRUE;
+ win->w = (win->realX + win->origX);
+ }
+ }
+
+ if (win->lastY > win->realY) {
+ win->realY = win->lastY;
+
+ if (win->h != (win->realY + win->origY)) {
+ resize = TRUE;
+ win->h = (win->realY + win->origY);
+ }
+ }
+
+ if (win->shown) {
+ if (resize) {
+ gtk_widget_set_size_request(win->gtkwin, win->w, win->h);
+ gtk_widget_set_size_request(win->widget, win->w, win->h);
+ }
+ }
+ }
}
/**
@@ -323,26 +324,26 @@ void wlibAddButton(
*/
wControl_p wlibGetControlFromPos(
- wWin_p win,
- wWinPix_t x,
- wWinPix_t y)
+ wWin_p win,
+ wWinPix_t x,
+ wWinPix_t y)
{
- wControl_p b;
- wWinPix_t xx, yy;
-
- for (b = win->first; b != NULL; b = b->next) {
- if (b->widget && gtk_widget_get_visible(b->widget)) {
- xx = b->realX;
- yy = b->realY;
-
- if (xx <= x && x < xx + b->w &&
- yy <= y && y < yy + b->h) {
- return b;
- }
- }
- }
-
- return NULL;
+ wControl_p b;
+ wWinPix_t xx, yy;
+
+ for (b = win->first; b != NULL; b = b->next) {
+ if (b->widget && gtk_widget_get_visible(b->widget)) {
+ xx = b->realX;
+ yy = b->realY;
+
+ if (xx <= x && x < xx + b->w &&
+ yy <= y && y < yy + b->h) {
+ return b;
+ }
+ }
+ }
+
+ return NULL;
}
@@ -360,7 +361,7 @@ wControl_p wlibGetControlFromPos(
*/
void wBeep(void)
{
- gdk_display_beep(gdk_display_get_default());
+ gdk_display_beep(gdk_display_get_default());
}
/**
@@ -368,13 +369,13 @@ void wBeep(void)
*/
void wFlush(
- void)
+ void)
{
- while (gtk_events_pending()) {
- gtk_main_iteration_do(FALSE);
- }
+ while (gtk_events_pending()) {
+ gtk_main_iteration_do(FALSE);
+ }
- gdk_display_sync(gdk_display_get_default());
+ gdk_display_sync(gdk_display_get_default());
}
/**
@@ -399,71 +400,71 @@ void wSetCursor(wDraw_p bd, wCursor_t cursor)
static GdkCursor * gdkcursors[wCursorQuestion+1];
GdkCursor * gdkcursor;
//GdkWindow * gdkwindow = gtk_widget_get_window(GTK_WIDGET(win->gtkwin));;
- GdkWindow * gdkwindow = gdk_get_default_root_window();
- GdkDisplay * display = gdk_window_get_display(gdkwindow);
- if ((cursor == wCursorNone) && dontHideCursor) return; //Ignore if we dont want to suppress
+// GdkWindow * gdkwindow = gdk_get_default_root_window();
+// GdkDisplay * display = gdk_window_get_display(gdkwindow);
+ if ((cursor == wCursorNone) && dontHideCursor) { return; } //Ignore if we dont want to suppress
if (!gdkcursors[cursor]) {
switch(cursor) {
- case wCursorAppStart:
- //gdkcursor = gdk_cursor_new_from_name (display,"progress");
- gdkcursor = gdk_cursor_new(GDK_WATCH);
- break;
- case wCursorHand:
- //gdkcursor = gdk_cursor_new_from_name (display,"pointer");
- gdkcursor = gdk_cursor_new(GDK_HAND2);
- break;
- case wCursorNo:
- //gdkcursor = gdk_cursor_new_from_name (display,"not-allowed");
- gdkcursor = gdk_cursor_new(GDK_X_CURSOR);
- break;
- case wCursorSizeAll:
- //gdkcursor = gdk_cursor_new_from_name (display,"move");
- gdkcursor = gdk_cursor_new(GDK_FLEUR);
- break;
- case wCursorSizeNESW:
- //gdkcursor = gdk_cursor_new_from_name (display,"nesw-resize");
- gdkcursor = gdk_cursor_new(GDK_BOTTOM_LEFT_CORNER);
- break;
- case wCursorSizeNS:
- //gdkcursor = gdk_cursor_new_from_name (display,"ns-resize");
- gdkcursor = gdk_cursor_new(GDK_DOUBLE_ARROW);
- break;
- case wCursorSizeNWSE:
- //gdkcursor = gdk_cursor_new_from_name (display,"nwse-resize");
- gdkcursor = gdk_cursor_new(GDK_BOTTOM_RIGHT_CORNER);
- break;
- case wCursorSizeWE:
- //gdkcursor = gdk_cursor_new_from_name (display,"ew-resize");
- gdkcursor = gdk_cursor_new(GDK_SB_H_DOUBLE_ARROW);
- break;
- case wCursorWait:
- //gdkcursor = gdk_cursor_new_from_name (display,"wait");
- gdkcursor = gdk_cursor_new(GDK_WATCH);
- break;
- case wCursorIBeam:
- //gdkcursor = gdk_cursor_new_from_name (display,"text");
- gdkcursor = gdk_cursor_new(GDK_XTERM);
- break;
- case wCursorCross:
- //gdkcursor = gdk_cursor_new_from_name (display,"crosshair");
- gdkcursor = gdk_cursor_new(GDK_TCROSS);
- break;
- case wCursorQuestion:
- //gdkcursor = gdk_cursor_new_from_name (display,"help");
- gdkcursor = gdk_cursor_new(GDK_QUESTION_ARROW);
- break;
- case wCursorNone:
- gdkcursor = gdk_cursor_new(GDK_BLANK_CURSOR);
- break;
- case wCursorNormal:
- default:
- //gdkcursor = gdk_cursor_new_from_name (display,"default");
- gdkcursor = gdk_cursor_new(GDK_LEFT_PTR);
- break;
+ case wCursorAppStart:
+ //gdkcursor = gdk_cursor_new_from_name (display,"progress");
+ gdkcursor = gdk_cursor_new(GDK_WATCH);
+ break;
+ case wCursorHand:
+ //gdkcursor = gdk_cursor_new_from_name (display,"pointer");
+ gdkcursor = gdk_cursor_new(GDK_HAND2);
+ break;
+ case wCursorNo:
+ //gdkcursor = gdk_cursor_new_from_name (display,"not-allowed");
+ gdkcursor = gdk_cursor_new(GDK_X_CURSOR);
+ break;
+ case wCursorSizeAll:
+ //gdkcursor = gdk_cursor_new_from_name (display,"move");
+ gdkcursor = gdk_cursor_new(GDK_FLEUR);
+ break;
+ case wCursorSizeNESW:
+ //gdkcursor = gdk_cursor_new_from_name (display,"nesw-resize");
+ gdkcursor = gdk_cursor_new(GDK_BOTTOM_LEFT_CORNER);
+ break;
+ case wCursorSizeNS:
+ //gdkcursor = gdk_cursor_new_from_name (display,"ns-resize");
+ gdkcursor = gdk_cursor_new(GDK_DOUBLE_ARROW);
+ break;
+ case wCursorSizeNWSE:
+ //gdkcursor = gdk_cursor_new_from_name (display,"nwse-resize");
+ gdkcursor = gdk_cursor_new(GDK_BOTTOM_RIGHT_CORNER);
+ break;
+ case wCursorSizeWE:
+ //gdkcursor = gdk_cursor_new_from_name (display,"ew-resize");
+ gdkcursor = gdk_cursor_new(GDK_SB_H_DOUBLE_ARROW);
+ break;
+ case wCursorWait:
+ //gdkcursor = gdk_cursor_new_from_name (display,"wait");
+ gdkcursor = gdk_cursor_new(GDK_WATCH);
+ break;
+ case wCursorIBeam:
+ //gdkcursor = gdk_cursor_new_from_name (display,"text");
+ gdkcursor = gdk_cursor_new(GDK_XTERM);
+ break;
+ case wCursorCross:
+ //gdkcursor = gdk_cursor_new_from_name (display,"crosshair");
+ gdkcursor = gdk_cursor_new(GDK_TCROSS);
+ break;
+ case wCursorQuestion:
+ //gdkcursor = gdk_cursor_new_from_name (display,"help");
+ gdkcursor = gdk_cursor_new(GDK_QUESTION_ARROW);
+ break;
+ case wCursorNone:
+ gdkcursor = gdk_cursor_new(GDK_BLANK_CURSOR);
+ break;
+ case wCursorNormal:
+ default:
+ //gdkcursor = gdk_cursor_new_from_name (display,"default");
+ gdkcursor = gdk_cursor_new(GDK_LEFT_PTR);
+ break;
}
gdkcursors[cursor] = gdkcursor;
- } else gdkcursor = gdkcursors[cursor];
+ } else { gdkcursor = gdkcursors[cursor]; }
gdk_window_set_cursor ( gtk_widget_get_window(bd->widget), gdkcursor);
}
@@ -475,7 +476,7 @@ void wSetCursor(wDraw_p bd, wCursor_t cursor)
const char * wMemStats(void)
{
- return "No stats available";
+ return "No stats available";
}
/**
@@ -490,9 +491,9 @@ void wGetDisplaySize(wWinPix_t * w, wWinPix_t * h)
GdkScreen *screen = gdk_screen_get_default();
guint monitor = gdk_screen_get_primary_monitor(screen);
GdkRectangle screen_geometry = { 0, 0, 0, 0 };
-
+
gdk_screen_get_monitor_geometry( screen, monitor, &screen_geometry );
-
+
*w = screen_geometry.width;
*h = screen_geometry.height;
}
@@ -509,42 +510,41 @@ static dynArr_t conversionBuffer_da;
char * wlibConvertInput(const char * inString)
{
- const char * cp;
- char * cq;
- int extCharCnt, inCharCnt;
-
- /* Already UTF-8 encoded? */
- if (g_utf8_validate(inString, -1, NULL))
- /* Yes, do not double-convert */ {
- return (char*) inString;
- }
-
- for (cp = inString, extCharCnt = 0; *cp; cp++) {
- if (((*cp)&0x80) != '\0') {
- extCharCnt++;
- }
- }
-
- inCharCnt = cp - inString;
-
- if (extCharCnt == '\0') {
- return (char*) inString;
- }
-
- DYNARR_SET(char, conversionBuffer_da, inCharCnt + extCharCnt + 1);
-
- for (cp = inString, cq = (char*) conversionBuffer_da.ptr; *cp; cp++) {
- if (((*cp)&0x80) != 0) {
- *cq++ = 0xC0 + (((*cp)&0xC0) >> 6);
- *cq++ = 0x80 + ((*cp)&0x3F);
- }
- else {
- *cq++ = *cp;
- }
- }
-
- *cq = 0;
- return (char*) conversionBuffer_da.ptr;
+ const char * cp;
+ char * cq;
+ int extCharCnt, inCharCnt;
+
+ /* Already UTF-8 encoded? */
+ if (g_utf8_validate(inString, -1, NULL))
+ /* Yes, do not double-convert */ {
+ return (char*) inString;
+ }
+
+ for (cp = inString, extCharCnt = 0; *cp; cp++) {
+ if (((*cp)&0x80) != '\0') {
+ extCharCnt++;
+ }
+ }
+
+ inCharCnt = cp - inString;
+
+ if (extCharCnt == '\0') {
+ return (char*) inString;
+ }
+
+ DYNARR_SET(char, conversionBuffer_da, inCharCnt + extCharCnt + 1);
+
+ for (cp = inString, cq = (char*) conversionBuffer_da.ptr; *cp; cp++) {
+ if (((*cp)&0x80) != 0) {
+ *cq++ = 0xC0 + (((*cp)&0xC0) >> 6);
+ *cq++ = 0x80 + ((*cp)&0x3F);
+ } else {
+ *cq++ = *cp;
+ }
+ }
+
+ *cq = 0;
+ return (char*) conversionBuffer_da.ptr;
}
/**
@@ -556,36 +556,35 @@ char * wlibConvertInput(const char * inString)
char * wlibConvertOutput(const char * inString)
{
- const char * cp;
- char * cq;
- int extCharCnt, inCharCnt;
-
- for (cp = inString, extCharCnt = 0; *cp; cp++) {
- if (((*cp)&0xC0) == 0x80) {
- extCharCnt++;
- }
- }
-
- inCharCnt = cp - inString;
-
- if (extCharCnt == '\0') {
- return (char*) inString;
- }
-
- DYNARR_SET(char, conversionBuffer_da, inCharCnt + 1);
-
- for (cp = inString, cq = (char*) conversionBuffer_da.ptr; *cp; cp++) {
- if (((*cp)&0x80) != 0) {
- *cq++ = 0xC0 + (((*cp)&0xC0) >> 6);
- *cq++ = 0x80 + ((*cp)&0x3F);
- }
- else {
- *cq++ = *cp;
- }
- }
-
- *cq = '\0';
- return (char*) conversionBuffer_da.ptr;
+ const char * cp;
+ char * cq;
+ int extCharCnt, inCharCnt;
+
+ for (cp = inString, extCharCnt = 0; *cp; cp++) {
+ if (((*cp)&0xC0) == 0x80) {
+ extCharCnt++;
+ }
+ }
+
+ inCharCnt = cp - inString;
+
+ if (extCharCnt == '\0') {
+ return (char*) inString;
+ }
+
+ DYNARR_SET(char, conversionBuffer_da, inCharCnt + 1);
+
+ for (cp = inString, cq = (char*) conversionBuffer_da.ptr; *cp; cp++) {
+ if (((*cp)&0x80) != 0) {
+ *cq++ = 0xC0 + (((*cp)&0xC0) >> 6);
+ *cq++ = 0x80 + ((*cp)&0x3F);
+ } else {
+ *cq++ = *cp;
+ }
+ }
+
+ *cq = '\0';
+ return (char*) conversionBuffer_da.ptr;
}
/*-----------------------------------------------------------------*/
@@ -595,32 +594,32 @@ static dynArr_t accelData_da;
#define accelData(N) DYNARR_N( accelData_t, accelData_da, N )
static guint accelKeyMap[] = {
- 0, /* wAccelKey_None, */
- GDK_KEY_Delete, /* wAccelKey_Del, */
- GDK_KEY_Insert, /* wAccelKey_Ins, */
- GDK_KEY_Home, /* wAccelKey_Home, */
- GDK_KEY_End, /* wAccelKey_End, */
- GDK_KEY_Page_Up, /* wAccelKey_Pgup, */
- GDK_KEY_Page_Down, /* wAccelKey_Pgdn, */
- GDK_KEY_Up, /* wAccelKey_Up, */
- GDK_KEY_Down, /* wAccelKey_Down, */
- GDK_KEY_Right, /* wAccelKey_Right, */
- GDK_KEY_Left, /* wAccelKey_Left, */
- GDK_KEY_BackSpace, /* wAccelKey_Back, */
- GDK_KEY_F1, /* wAccelKey_F1, */
- GDK_KEY_F2, /* wAccelKey_F2, */
- GDK_KEY_F3, /* wAccelKey_F3, */
- GDK_KEY_F4, /* wAccelKey_F4, */
- GDK_KEY_F5, /* wAccelKey_F5, */
- GDK_KEY_F6, /* wAccelKey_F6, */
- GDK_KEY_F7, /* wAccelKey_F7, */
- GDK_KEY_F8, /* wAccelKey_F8, */
- GDK_KEY_F9, /* wAccelKey_F9, */
- GDK_KEY_F10, /* wAccelKey_F10, */
- GDK_KEY_F11, /* wAccelKey_F11, */
- GDK_KEY_F12, /* wAccelKey_F12, */
- GDK_KEY_KP_Add, /* wAccelKey_Numpad_Add */
- GDK_KEY_KP_Subtract /* wAccelKey_Numpad_Subtract */
+ 0, /* wAccelKey_None, */
+ GDK_KEY_Delete, /* wAccelKey_Del, */
+ GDK_KEY_Insert, /* wAccelKey_Ins, */
+ GDK_KEY_Home, /* wAccelKey_Home, */
+ GDK_KEY_End, /* wAccelKey_End, */
+ GDK_KEY_Page_Up, /* wAccelKey_Pgup, */
+ GDK_KEY_Page_Down, /* wAccelKey_Pgdn, */
+ GDK_KEY_Up, /* wAccelKey_Up, */
+ GDK_KEY_Down, /* wAccelKey_Down, */
+ GDK_KEY_Right, /* wAccelKey_Right, */
+ GDK_KEY_Left, /* wAccelKey_Left, */
+ GDK_KEY_BackSpace, /* wAccelKey_Back, */
+ GDK_KEY_F1, /* wAccelKey_F1, */
+ GDK_KEY_F2, /* wAccelKey_F2, */
+ GDK_KEY_F3, /* wAccelKey_F3, */
+ GDK_KEY_F4, /* wAccelKey_F4, */
+ GDK_KEY_F5, /* wAccelKey_F5, */
+ GDK_KEY_F6, /* wAccelKey_F6, */
+ GDK_KEY_F7, /* wAccelKey_F7, */
+ GDK_KEY_F8, /* wAccelKey_F8, */
+ GDK_KEY_F9, /* wAccelKey_F9, */
+ GDK_KEY_F10, /* wAccelKey_F10, */
+ GDK_KEY_F11, /* wAccelKey_F11, */
+ GDK_KEY_F12, /* wAccelKey_F12, */
+ GDK_KEY_KP_Add, /* wAccelKey_Numpad_Add */
+ GDK_KEY_KP_Subtract /* wAccelKey_Numpad_Subtract */
};
/**
@@ -633,24 +632,24 @@ static guint accelKeyMap[] = {
*/
void wAttachAccelKey(
- wAccelKey_e key,
- int modifier,
- wAccelKeyCallBack_p action,
- void * data)
+ wAccelKey_e key,
+ int modifier,
+ wAccelKeyCallBack_p action,
+ void * data)
{
- accelData_t * ad;
+ accelData_t * ad;
// if (key < 1 || key > wAccelKey_F12) {
// fprintf(stderr, "wAttachAccelKey(%d) out of range\n", (int) key);
// return;
// }
- DYNARR_APPEND(accelData_t, accelData_da, 10);
- ad = &accelData(accelData_da.cnt - 1);
- ad->key = key;
- ad->modifier = modifier;
- ad->action = action;
- ad->data = data;
+ DYNARR_APPEND(accelData_t, accelData_da, 10);
+ ad = &accelData(accelData_da.cnt - 1);
+ ad->key = key;
+ ad->modifier = modifier;
+ ad->action = action;
+ ad->data = data;
}
/**
@@ -661,30 +660,30 @@ void wAttachAccelKey(
*/
struct accelData_t * wlibFindAccelKey(
- GdkEventKey * event)
+ GdkEventKey * event)
{
- accelData_t * ad;
- int modifier = 0;
+ accelData_t * ad;
+ int modifier = 0;
- if ((event->state & GDK_SHIFT_MASK)) {
- modifier |= WKEY_SHIFT;
- }
+ if ((event->state & GDK_SHIFT_MASK)) {
+ modifier |= WKEY_SHIFT;
+ }
- if ((event->state & GDK_CONTROL_MASK)) {
- modifier |= WKEY_CTRL;
- }
+ if ((event->state & GDK_CONTROL_MASK)) {
+ modifier |= WKEY_CTRL;
+ }
- if ((event->state & GDK_MOD1_MASK)) {
- modifier |= WKEY_ALT;
- }
+ if ((event->state & GDK_MOD1_MASK)) {
+ modifier |= WKEY_ALT;
+ }
- for (ad = &accelData(0); ad<&accelData(accelData_da.cnt); ad++)
- if (event->keyval == accelKeyMap[ad->key] &&
- modifier == ad->modifier) {
- return ad;
- }
+ for (ad = &accelData(0); ad<&accelData(accelData_da.cnt); ad++)
+ if (event->keyval == accelKeyMap[ad->key] &&
+ modifier == ad->modifier) {
+ return ad;
+ }
- return NULL;
+ return NULL;
}
/**
@@ -695,16 +694,16 @@ struct accelData_t * wlibFindAccelKey(
*/
wBool_t wlibHandleAccelKey(
- GdkEventKey *event)
+ GdkEventKey *event)
{
- accelData_t * ad = wlibFindAccelKey(event);
+ accelData_t * ad = wlibFindAccelKey(event);
- if (ad) {
- ad->action(ad->key, ad->data);
- return TRUE;
- }
+ if (ad) {
+ ad->action(ad->key, ad->data);
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
/**
@@ -721,13 +720,13 @@ wBool_t wlibHandleAccelKey(
void wControlLinkedSet(wControl_p b1, wControl_p b2)
{
- b2->synonym = b1->synonym;
+ b2->synonym = b1->synonym;
- if (b2->synonym == NULL) {
- b2->synonym = b1;
- }
+ if (b2->synonym == NULL) {
+ b2->synonym = b1;
+ }
- b1->synonym = b2;
+ b1->synonym = b2;
}
/**
@@ -740,26 +739,24 @@ void wControlLinkedSet(wControl_p b1, wControl_p b2)
void wControlLinkedActive(wControl_p b, int active)
{
- wControl_p savePtr = b;
+ wControl_p savePtr = b;
- if (savePtr->type == B_MENUITEM) {
- wMenuPushEnable((wMenuPush_p) savePtr, active);
- }
- else {
- wControlActive(savePtr, active);
- }
+ if (savePtr->type == B_MENUITEM) {
+ wMenuPushEnable((wMenuPush_p) savePtr, active);
+ } else {
+ wControlActive(savePtr, active);
+ }
- savePtr = savePtr->synonym;
+ savePtr = savePtr->synonym;
- while (savePtr && savePtr != b) {
+ while (savePtr && savePtr != b) {
- if (savePtr->type == B_MENUITEM) {
- wMenuPushEnable((wMenuPush_p) savePtr, active);
- }
- else {
- wControlActive(savePtr, active);
- }
+ if (savePtr->type == B_MENUITEM) {
+ wMenuPushEnable((wMenuPush_p) savePtr, active);
+ } else {
+ wControlActive(savePtr, active);
+ }
- savePtr = savePtr->synonym;
- }
+ savePtr = savePtr->synonym;
+ }
}
diff --git a/app/wlib/gtklib/window.c b/app/wlib/gtklib/window.c
index 16a21a5..b8a3cdf 100644
--- a/app/wlib/gtklib/window.c
+++ b/app/wlib/gtklib/window.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 <stdio.h>
@@ -40,11 +40,8 @@
wWin_p gtkMainW;
-#define MIN_WIN_WIDTH 150
-#define MIN_WIN_HEIGHT 150
-
-#define MIN_WIN_WIDTH_MAIN 400
-#define MIN_WIN_HEIGHT_MAIN 400
+#define MIN_WIN_WIDTH 50
+#define MIN_WIN_HEIGHT 50
#define SECTIONWINDOWSIZE "gtklib window size"
#define SECTIONWINDOWPOS "gtklib window pos"
@@ -55,6 +52,9 @@ static wControl_p firstWin = NULL, lastWin;
static int keyState;
static wBool_t gtkBlockEnabled = TRUE;
static wBool_t maximize_at_next_show = FALSE;
+
+#include "../../bin/bitmaps/xtc.xpm"
+static GdkPixbuf *windowIconPixbuf = NULL;
/*
*****************************************************************************
@@ -70,7 +70,8 @@ static wBool_t maximize_at_next_show = FALSE;
*
*/
-static GdkRectangle getMonitorDimensions(GtkWidget * widget) {
+static GdkRectangle getMonitorDimensions(GtkWidget * widget)
+{
GdkRectangle monitor_dimensions;
@@ -81,9 +82,10 @@ static GdkRectangle getMonitorDimensions(GtkWidget * widget) {
GtkWidget * toplevel = gtk_widget_get_toplevel(widget);
if (gtk_widget_is_toplevel(GTK_WIDGET(toplevel)) &&
- gtk_widget_get_parent_window(GTK_WIDGET(toplevel))) {
+ gtk_widget_get_parent_window(GTK_WIDGET(toplevel))) {
- GdkWindow * window = GDK_WINDOW(gtk_widget_get_parent_window(GTK_WIDGET(toplevel)));
+ GdkWindow * window = GDK_WINDOW(gtk_widget_get_parent_window(GTK_WIDGET(
+ toplevel)));
screen = gdk_window_get_screen(GDK_WINDOW(window));
@@ -113,46 +115,39 @@ static GdkRectangle getMonitorDimensions(GtkWidget * widget) {
static void getWinSize(wWin_p win, const char * nameStr)
{
- int w=50, h=50;
- const char *cp;
- char *cp1, *cp2;
-
-
- /*
- * Clamp window to be no bigger than one monitor size (to start - the user can always maximize)
- */
-
- GdkRectangle monitor_dimensions = getMonitorDimensions(GTK_WIDGET(win->gtkwin));
-
- wWinPix_t maxDisplayWidth = monitor_dimensions.width-10;
- wWinPix_t maxDisplayHeight = monitor_dimensions.height-50;
-
-
-
- if ((win->option&F_RECALLSIZE) &&
- (win->option&F_RECALLPOS) &&
- (cp = wPrefGetString(SECTIONWINDOWSIZE, nameStr)) &&
- (w = strtod(cp, &cp1), cp != cp1) &&
- (h = strtod(cp1, &cp2), cp1 != cp2)) {
- win->option &= ~F_AUTOSIZE;
-
- if (w < 50) {
- w = 50;
- }
-
- if (h < 50) {
- h = 50;
- }
- }
-
- if (w > maxDisplayWidth) w = maxDisplayWidth;
- if (h > maxDisplayHeight) h = maxDisplayHeight;
-
- if (w<MIN_WIDTH) w = MIN_WIDTH;
- if (h<MIN_HEIGHT) h = MIN_HEIGHT;
-
- win->w = win->origX = w;
- win->h = win->origY = h;
+ /*
+ * original w/h values in .origX/Y
+ */
+ int w = win->w = win->origX;
+ int h = win->h = win->origY;
+
+ /*
+ * Take values from Prefs if possible
+ */
+ const char *cp;
+ char *cp1, *cp2;
+ if ((win->option&F_RESIZE) &&
+ (win->option&F_RECALLSIZE) &&
+ (cp = wPrefGetString(SECTIONWINDOWSIZE, nameStr)) &&
+ (w = strtod(cp, &cp1), cp != cp1) &&
+ (h = strtod(cp1, &cp2), cp1 != cp2)) {
+ win->option &= ~F_AUTOSIZE;
+
+ /*
+ * Clamp window to be no bigger than one monitor size (to start - the user can always maximize)
+ */
+ GdkRectangle monitor_dimensions = getMonitorDimensions(GTK_WIDGET(win->gtkwin));
+ wWinPix_t maxDisplayWidth = monitor_dimensions.width-10;
+ wWinPix_t maxDisplayHeight = monitor_dimensions.height-50;
+ if (w > maxDisplayWidth) { w = maxDisplayWidth; }
+ if (h > maxDisplayHeight) { h = maxDisplayHeight; }
+
+ if (w<MIN_WIDTH) { w = MIN_WIDTH; }
+ if (h<MIN_HEIGHT) { h = MIN_HEIGHT; }
+
+ win->w = win->origX = w;
+ win->h = win->origY = h;
+ }
}
@@ -166,14 +161,14 @@ static void getWinSize(wWin_p win, const char * nameStr)
static void saveSize(wWin_p win)
{
- if ((win->option&F_RECALLSIZE) &&
- gtk_widget_get_visible(GTK_WIDGET(win->gtkwin))) {
- char pos_s[20];
+ if ((win->option&F_RECALLSIZE) &&
+ gtk_widget_get_visible(GTK_WIDGET(win->gtkwin))) {
+ char pos_s[32];
- sprintf(pos_s, "%ld %ld", win->w,
- (win->h-(BORDERSIZE + ((win->option&F_MENUBAR)?MENUH:0))));
- wPrefSetString(SECTIONWINDOWSIZE, win->nameStr, pos_s);
- }
+ sprintf(pos_s, "%ld %ld", win->w,
+ (win->h-(BORDERSIZE + ((win->option&F_MENUBAR)?MENUH:0))));
+ wPrefSetString(SECTIONWINDOWSIZE, win->nameStr, pos_s);
+ }
}
/**
@@ -185,47 +180,46 @@ static void saveSize(wWin_p win)
static void getPos(wWin_p win)
{
- char *cp1, *cp2;
- GdkRectangle monitor_dimensions = getMonitorDimensions(GTK_WIDGET(win->gtkwin));
+ char *cp1, *cp2;
+ GdkRectangle monitor_dimensions = getMonitorDimensions(GTK_WIDGET(win->gtkwin));
- if ((win->option&F_RECALLPOS) && (!win->shown)) {
- const char *cp;
+ if ((win->option&F_RECALLPOS) && (!win->shown)) {
+ const char *cp;
- if ((cp = wPrefGetString(SECTIONWINDOWPOS, win->nameStr))) {
- int x, y;
+ if ((cp = wPrefGetString(SECTIONWINDOWPOS, win->nameStr))) {
+ int x, y;
- x = strtod(cp, &cp1);
+ x = strtod(cp, &cp1);
- if (cp == cp1) {
- return;
- }
+ if (cp == cp1) {
+ return;
+ }
- y = strtod(cp1, &cp2);
+ y = strtod(cp1, &cp2);
- if (cp2 == cp1) {
- return;
- }
+ if (cp2 == cp1) {
+ return;
+ }
- if (y > monitor_dimensions.height+monitor_dimensions.y-win->h) {
- y = monitor_dimensions.height+monitor_dimensions.y-win->h;
- }
+ if (y > monitor_dimensions.height+monitor_dimensions.y-win->h) {
+ y = monitor_dimensions.height+monitor_dimensions.y-win->h;
+ }
- if (x > monitor_dimensions.width+monitor_dimensions.x-win->w) {
- x = monitor_dimensions.width+monitor_dimensions.x-win->w;
- }
+ if (x > monitor_dimensions.width+monitor_dimensions.x-win->w) {
+ x = monitor_dimensions.width+monitor_dimensions.x-win->w;
+ }
- if (x <= 0) {
- x = 1;
- }
+ if (x <= 0) {
+ x = 1;
+ }
- if (y <= 0) {
- y = 1;
- }
+ if (y <= 0) {
+ y = 1;
+ }
- gtk_window_move(GTK_WINDOW(win->gtkwin), x, y);
- //gtk_window_resize(GTK_WINDOW(win->gtkwin), win->w, win->h);
- }
- }
+ gtk_window_move(GTK_WINDOW(win->gtkwin), x, y);
+ }
+ }
}
/**
@@ -237,17 +231,17 @@ static void getPos(wWin_p win)
static void savePos(wWin_p win)
{
- int x, y;
+ int x, y;
- if ((win->option&F_RECALLPOS)) {
- char pos_s[20];
+ if ((win->option&F_RECALLPOS)) {
+ char pos_s[32];
- gdk_window_get_position(gtk_widget_get_window(GTK_WIDGET(win->gtkwin)), &x, &y);
- x -= 5;
- y -= 25;
- sprintf(pos_s, "%d %d", x, y);
- wPrefSetString(SECTIONWINDOWPOS, win->nameStr, pos_s);
- }
+ gdk_window_get_position(gtk_widget_get_window(GTK_WIDGET(win->gtkwin)), &x, &y);
+ x -= 5;
+ y -= 25;
+ sprintf(pos_s, "%d %d", x, y);
+ wPrefSetString(SECTIONWINDOWPOS, win->nameStr, pos_s);
+ }
}
/**
@@ -259,28 +253,17 @@ static void savePos(wWin_p win)
*/
void wWinGetSize(
- wWin_p win, /* Window */
- wWinPix_t * width, /* Returned window width */
- wWinPix_t * height) /* Returned window height */
+ wWin_p win, /* Window */
+ wWinPix_t * width, /* Returned window width */
+ wWinPix_t * height) /* Returned window height */
{
- GtkRequisition requisition;
- wWinPix_t w, h;
- gtk_widget_size_request(win->gtkwin, &requisition);
- w = win->w;
- h = win->h;
-
- if (win->option&F_AUTOSIZE) {
- if (win->realX > w) {
- w = win->realX;
- }
-
- if (win->realY > h) {
- h = win->realY;
- }
- }
-
- *width = w;
- *height = h - BORDERSIZE - ((win->option&F_MENUBAR)?win->menu_height:0);
+ GtkRequisition requisition;
+ wWinPix_t w, h;
+ gtk_widget_size_request(win->gtkwin, &requisition);
+ w = win->w;
+ h = win->h;
+ *width = w;
+ *height = h - BORDERSIZE - ((win->option&F_MENUBAR)?win->menu_height:0);
}
/**
@@ -292,24 +275,23 @@ void wWinGetSize(
*/
void wWinSetSize(
- wWin_p win, /* Window */
- wWinPix_t width, /* Window width */
- wWinPix_t height) /* Window height */
+ wWin_p win, /* Window */
+ wWinPix_t width, /* Window width */
+ wWinPix_t height) /* Window height */
{
- win->busy = TRUE;
- win->w = width;
- win->h = height + BORDERSIZE + ((win->option&F_MENUBAR)?MENUH:0);
- if (win->option&F_RESIZE) {
- gtk_window_resize(GTK_WINDOW(win->gtkwin), win->w, win->h);
- gtk_widget_set_size_request(win->widget, win->w-10, win->h-10);
- }
- else {
- gtk_widget_set_size_request(win->gtkwin, win->w, win->h);
- gtk_widget_set_size_request(win->widget, win->w, win->h);
- }
-
-
- win->busy = FALSE;
+ win->busy = TRUE;
+ win->w = width;
+ win->h = height + BORDERSIZE + ((win->option&F_MENUBAR)?MENUH:0);
+ if (win->option&F_RESIZE) {
+ gtk_window_resize(GTK_WINDOW(win->gtkwin), win->w, win->h);
+ gtk_widget_set_size_request(win->widget, win->w-10, win->h-10);
+ } else {
+ gtk_widget_set_size_request(win->gtkwin, win->w, win->h);
+ gtk_widget_set_size_request(win->widget, win->w, win->h);
+ }
+
+
+ win->busy = FALSE;
}
/**
@@ -322,93 +304,93 @@ void wWinSetSize(
*/
void wWinShow(
- wWin_p win, /* Window */
- wBool_t show) /* Command */
+ wWin_p win, /* Window */
+ wBool_t show) /* Command */
{
- //GtkRequisition min_req, pref_req;
+ //GtkRequisition min_req, pref_req;
- if (debugWindow >= 2) {
- printf("Set Show %s\n", win->labelStr?win->labelStr:"No label");
- }
+ if (debugWindow >= 2) {
+ printf("Set Show %s\n", win->labelStr?win->labelStr:"No label");
+ }
- if (win->widget == 0) {
- abort();
- }
+ if (win->widget == 0) {
+ abort();
+ }
- int width, height;
+ int width, height;
- if (show) {
- keyState = 0;
- getPos(win);
+ if (show) {
+ keyState = 0;
+ getPos(win);
- if (!win->shown) {
+ if (!win->shown) {
gtk_widget_show(win->gtkwin);
gtk_widget_show(win->widget);
}
- if (win->option & F_AUTOSIZE) {
- GtkAllocation allocation;
- GtkRequisition requistion;
- gtk_widget_size_request(win->widget,&requistion);
+ if (win->option & F_AUTOSIZE) {
+ GtkAllocation allocation;
+ GtkRequisition requistion;
+ gtk_widget_size_request(win->widget,&requistion);
- width = win->w;
- height = win->h;
+ width = win->w;
+ height = win->h;
- if (requistion.width != width || requistion.height != height ) {
+ if (requistion.width != width || requistion.height != height ) {
width = requistion.width;
height = requistion.height;
- win->w = width;
- win->h = height;
+ win->w = width;
+ win->h = height;
- gtk_window_set_resizable(GTK_WINDOW(win->gtkwin),TRUE);
+ gtk_window_set_resizable(GTK_WINDOW(win->gtkwin),TRUE);
- if (win->option&F_MENUBAR) {
- gtk_widget_set_size_request(win->menubar, win->w-20, MENUH);
+ if (win->option&F_MENUBAR) {
+ gtk_widget_set_size_request(win->menubar, win->w-20, MENUH);
- gtk_widget_get_allocation(win->menubar, &allocation);
- win->menu_height = allocation.height;
- }
- }
- gtk_window_resize(GTK_WINDOW(win->gtkwin), width+10, height+10);
- }
+ gtk_widget_get_allocation(win->menubar, &allocation);
+ win->menu_height = allocation.height;
+ }
+ }
+ gtk_window_resize(GTK_WINDOW(win->gtkwin), width+10, height+10);
+ }
- gtk_window_present(GTK_WINDOW(win->gtkwin));
+ gtk_window_present(GTK_WINDOW(win->gtkwin));
- gdk_window_raise(gtk_widget_get_window(win->gtkwin));
+ gdk_window_raise(gtk_widget_get_window(win->gtkwin));
- if (win->shown && win->modalLevel > 0) {
- gtk_widget_set_sensitive(GTK_WIDGET(win->gtkwin), TRUE);
- }
+ if (win->shown && win->modalLevel > 0) {
+ gtk_widget_set_sensitive(GTK_WIDGET(win->gtkwin), TRUE);
+ }
- win->shown = show;
- win->modalLevel = 0;
+ win->shown = show;
+ win->modalLevel = 0;
- if ((!gtkBlockEnabled) || (win->option & F_BLOCK) == 0) {
- wFlush();
- } else {
- wlibDoModal(win, TRUE);
- }
- if (maximize_at_next_show) {
- gtk_window_maximize(GTK_WINDOW(win->gtkwin));
- maximize_at_next_show = FALSE;
- }
- } else {
- wFlush();
- saveSize(win);
- savePos(win);
- win->shown = show;
+ if ((!gtkBlockEnabled) || (win->option & F_BLOCK) == 0) {
+ wFlush();
+ } else {
+ wlibDoModal(win, TRUE);
+ }
+ if (maximize_at_next_show) {
+ gtk_window_maximize(GTK_WINDOW(win->gtkwin));
+ maximize_at_next_show = FALSE;
+ }
+ } else {
+ wFlush();
+ saveSize(win);
+ savePos(win);
+ win->shown = show;
- if (gtkBlockEnabled && (win->option & F_BLOCK) != 0) {
- wlibDoModal(win, FALSE);
- }
+ if (gtkBlockEnabled && (win->option & F_BLOCK) != 0) {
+ wlibDoModal(win, FALSE);
+ }
- gtk_widget_hide(win->gtkwin);
- gtk_widget_hide(win->widget);
- }
+ gtk_widget_hide(win->gtkwin);
+ gtk_widget_hide(win->widget);
+ }
}
/**
@@ -418,9 +400,9 @@ void wWinShow(
*/
void wWinBlockEnable(
- wBool_t enabled)
+ wBool_t enabled)
{
- gtkBlockEnabled = enabled;
+ gtkBlockEnabled = enabled;
}
/**
@@ -431,9 +413,9 @@ void wWinBlockEnable(
*/
wBool_t wWinIsVisible(
- wWin_p win)
+ wWin_p win)
{
- return win->shown;
+ return win->shown;
}
/**
@@ -445,7 +427,7 @@ wBool_t wWinIsVisible(
wBool_t wWinIsMaximized(wWin_p win)
{
- return win->maximize_initially;
+ return win->maximize_initially;
}
/**
@@ -456,10 +438,10 @@ wBool_t wWinIsMaximized(wWin_p win)
*/
void wWinSetTitle(
- wWin_p win, /* Window */
- const char * title) /* New title */
+ wWin_p win, /* Window */
+ const char * title) /* New title */
{
- gtk_window_set_title(GTK_WINDOW(win->gtkwin), title);
+ gtk_window_set_title(GTK_WINDOW(win->gtkwin), title);
}
/**
@@ -470,28 +452,28 @@ void wWinSetTitle(
*/
void wWinSetBusy(
- wWin_p win, /* Window */
- wBool_t busy) /* Command */
+ wWin_p win, /* Window */
+ wBool_t busy) /* Command */
{
- GdkCursor * cursor;
+ GdkCursor * cursor;
- if (win->gtkwin == 0) {
- abort();
- }
+ if (win->gtkwin == 0) {
+ abort();
+ }
- if (busy) {
- cursor = gdk_cursor_new(GDK_WATCH);
- } else {
- cursor = NULL;
- }
+ if (busy) {
+ cursor = gdk_cursor_new(GDK_WATCH);
+ } else {
+ cursor = NULL;
+ }
- gdk_window_set_cursor(gtk_widget_get_window(win->gtkwin), cursor);
+ gdk_window_set_cursor(gtk_widget_get_window(win->gtkwin), cursor);
- if (cursor) {
- gdk_cursor_unref(cursor);
- }
+ if (cursor) {
+ gdk_cursor_unref(cursor);
+ }
- gtk_widget_set_sensitive(GTK_WIDGET(win->gtkwin), busy==0);
+ gtk_widget_set_sensitive(GTK_WIDGET(win->gtkwin), busy==0);
}
/**
@@ -507,42 +489,42 @@ void wWinSetBusy(
*/
void wlibDoModal(
- wWin_p win0,
- wBool_t modal)
+ wWin_p win0,
+ wBool_t modal)
{
- wWin_p win;
-
- for (win=(wWin_p)firstWin; win; win=(wWin_p)win->next) {
- if (win->shown && win != win0) {
- if (modal) {
- if (win->modalLevel == 0) {
- gtk_widget_set_sensitive(GTK_WIDGET(win->gtkwin), FALSE);
- }
-
- win->modalLevel++;
- } else {
- if (win->modalLevel > 0) {
- win->modalLevel--;
-
- if (win->modalLevel == 0) {
- gtk_widget_set_sensitive(GTK_WIDGET(win->gtkwin), TRUE);
- }
- }
- }
-
- if (win->modalLevel < 0) {
- fprintf(stderr, "DoModal: %s modalLevel < 0",
- win->nameStr?win->nameStr:"<NULL>");
- abort();
- }
- }
- }
-
- if (modal) {
- gtk_main();
- } else {
- gtk_main_quit();
- }
+ wWin_p win;
+
+ for (win=(wWin_p)firstWin; win; win=(wWin_p)win->next) {
+ if (win->shown && win != win0) {
+ if (modal) {
+ if (win->modalLevel == 0) {
+ gtk_widget_set_sensitive(GTK_WIDGET(win->gtkwin), FALSE);
+ }
+
+ win->modalLevel++;
+ } else {
+ if (win->modalLevel > 0) {
+ win->modalLevel--;
+
+ if (win->modalLevel == 0) {
+ gtk_widget_set_sensitive(GTK_WIDGET(win->gtkwin), TRUE);
+ }
+ }
+ }
+
+ if (win->modalLevel < 0) {
+ fprintf(stderr, "DoModal: %s modalLevel < 0",
+ win->nameStr?win->nameStr:"<NULL>");
+ abort();
+ }
+ }
+ }
+
+ if (modal) {
+ gtk_main();
+ } else {
+ gtk_main_quit();
+ }
}
/**
@@ -553,32 +535,32 @@ void wlibDoModal(
*/
const char * wWinGetTitle(
- wWin_p win) /* Window */
+ wWin_p win) /* Window */
{
- return win->labelStr;
+ return win->labelStr;
}
void wWinClear(
- wWin_p win,
- wWinPix_t x,
- wWinPix_t y,
- wWinPix_t width,
- wWinPix_t height)
+ wWin_p win,
+ wWinPix_t x,
+ wWinPix_t y,
+ wWinPix_t width,
+ wWinPix_t height)
{
}
void wWinDoCancel(
- wWin_p win)
+ wWin_p win)
{
- wControl_p b;
+ wControl_p b;
- for (b=win->first; b; b=b->next) {
- if ((b->type == B_BUTTON) && (b->option & BB_CANCEL)) {
- wlibButtonDoAction((wButton_p)b);
- }
- }
+ for (b=win->first; b; b=b->next) {
+ if ((b->type == B_BUTTON) && (b->option & BB_CANCEL)) {
+ wlibButtonDoAction((wButton_p)b);
+ }
+ }
}
/*
@@ -590,155 +572,161 @@ void wWinDoCancel(
*/
static int window_redraw(
- wWin_p win,
- wBool_t doWinProc)
+ wWin_p win,
+ wBool_t doWinProc)
{
- wControl_p b;
+ wControl_p b;
- if (win==NULL) {
- return FALSE;
- }
+ if (win==NULL) {
+ return FALSE;
+ }
- for (b=win->first; b != NULL; b = b->next) {
- if (b->repaintProc) {
- b->repaintProc(b);
- }
- }
+ for (b=win->first; b != NULL; b = b->next) {
+ if (b->repaintProc) {
+ b->repaintProc(b);
+ }
+ }
- return FALSE;
+ return FALSE;
}
static gint window_delete_event(
- GtkWidget *widget,
- GdkEvent *event,
- wWin_p win)
+ GtkWidget *widget,
+ GdkEvent *event,
+ wWin_p win)
{
- wControl_p b;
- /* if you return FALSE in the "delete_event" signal handler,
- * GTK will emit the "destroy" signal. Returning TRUE means
- * you don't want the window to be destroyed.
- * This is useful for popping up 'are you sure you want to quit ?'
- * type dialogs. */
-
- /* Change TRUE to FALSE and the main window will be destroyed with
- * a "delete_event". */
-
- for (b = win->first; b; b=b->next)
- if (b->doneProc) {
- b->doneProc(b);
- }
-
- if (win->winProc) {
- win->winProc(win, wClose_e, NULL, win->data);
-
- if (win != gtkMainW) {
- wWinShow(win, FALSE);
- }
- }
-
- return (TRUE);
+ wControl_p b;
+ /* if you return FALSE in the "delete_event" signal handler,
+ * GTK will emit the "destroy" signal. Returning TRUE means
+ * you don't want the window to be destroyed.
+ * This is useful for popping up 'are you sure you want to quit ?'
+ * type dialogs. */
+
+ /* Change TRUE to FALSE and the main window will be destroyed with
+ * a "delete_event". */
+
+ for (b = win->first; b; b=b->next)
+ if (b->doneProc) {
+ b->doneProc(b);
+ }
+
+ if (win->winProc) {
+ win->winProc(win, wClose_e, NULL, win->data);
+
+ if (win != gtkMainW) {
+ wWinShow(win, FALSE);
+ }
+ }
+
+ return (TRUE);
}
static int fixed_expose_event(
- GtkWidget * widget,
- GdkEventExpose * event,
- wWin_p win)
+ GtkWidget * widget,
+ GdkEventExpose * event,
+ wWin_p win)
{
int rc;
- if (event->count==0) {
- rc = window_redraw(win, TRUE);
- } else {
- rc = FALSE;
- }
- cairo_t* cr = gdk_cairo_create (gtk_widget_get_window(widget));
-#ifdef CURSOR_SURFACE
- if (win && win->cursor_surface.surface && win->cursor_surface.show) {
- cairo_set_source_surface(cr,win->cursor_surface.surface,event->area.x, event->area.y);
- cairo_set_operator(cr,CAIRO_OPERATOR_OVER);
- cairo_rectangle(cr,event->area.x, event->area.y,
- event->area.width, event->area.height);
- cairo_fill(cr);
+ if (event->count==0) {
+ rc = window_redraw(win, TRUE);
+ } else {
+ rc = FALSE;
}
-#endif
- return rc;
+ return rc;
}
-static int resizeTime(wWin_p win) {
+static int resizeTime(wWin_p win)
+{
- if (win->resizeW == win->w && win->resizeH == win->h) { // If hasn't changed since last
+ if (debugWindow >= 2) {
+ printf( "resizeTime idleCnt %d, busyCnt %d [%d %d] [%ld %ld]\n",
+ win->timer_idle_count, win->timer_busy_count,
+ win->resizeW, win->resizeH, win->w, win->h );
+ }
+ if (win->resizeW == win->w
+ && win->resizeH == win->h) { // If hasn't changed since last
if (win->timer_idle_count>3) {
- win->winProc(win, wResize_e, NULL, win->data); //Trigger Redraw on last occasion if one-third of a second has elapsed
+ win->winProc(win, wResize_e, NULL,
+ win->data); //Trigger Redraw on last occasion if one-third of a second has elapsed
win->timer_idle_count = 0;
win->resizeTimer = 0;
win->timer_busy_count = 0;
return FALSE; //Stop Timer and don't resize
- } else win->timer_idle_count++;
+ } else { win->timer_idle_count++; }
}
if (win->busy==FALSE && win->winProc) { //Always drive once
if (win->timer_busy_count>10) {
- win->winProc(win, wResize_e, NULL, win->data); //Redraw if ten times we saw a change (1 sec)
- win->timer_busy_count = 0;
+ win->winProc(win, wResize_e, NULL,
+ win->data); //Redraw if ten times we saw a change (1 sec)
+ win->timer_busy_count = 0;
} else {
win->winProc(win, wResize_e, (void*) 1, win->data); //No Redraw
win->timer_busy_count++;
}
- win->resizeW = win->w; //Remember this one
- win->resizeH = win->h;
+ win->resizeW = win->w; //Remember this one
+ win->resizeH = win->h;
}
return TRUE; //Will redrive after another timer interval
}
static int window_configure_event(
- GtkWidget * widget,
- GdkEventConfigure * event,
- wWin_p win)
+ GtkWidget * widget,
+ GdkEventConfigure * event,
+ wWin_p win)
{
- if (win==NULL) {
- return FALSE;
- }
-
- if (win->option&F_RESIZE) {
- if (event->width < 10 || event->height < 10) {
- return TRUE;
- }
- int w = win->w;
- int h = win->h;
-
-
- if (win->w != event->width || win->h != event->height) {
- win->w = event->width;
- win->h = event->height;
-
- if (win->w < MIN_WIN_WIDTH) {
- win->w = MIN_WIN_WIDTH;
- }
-
- if (win->h < MIN_WIN_HEIGHT) {
- win->h = MIN_WIN_HEIGHT;
- }
-
- if (win->option&F_MENUBAR) {
- GtkAllocation allocation;
- gtk_widget_get_allocation(win->menubar, &allocation);
- win->menu_height= allocation.height;
- gtk_widget_set_size_request(win->menubar, win->w-20, win->menu_height);
- }
- if (win->resizeTimer) { // Already have a timer
- return FALSE;
- } else {
- win->resizeW = w; //Remember where this started
- win->resizeH = h;
- win->timer_idle_count = 0; //Start background timer on redraw
- win->timer_busy_count = 0;
- win->resizeTimer = g_timeout_add(100,(GSourceFunc)resizeTime,win); // 100ms delay
- return FALSE;
- }
- }
- }
-
- return FALSE;
+ if (win==NULL) {
+ return FALSE;
+ }
+
+ if (debugWindow >= 2) {
+ printf( "config/resize: [%d %d]\n", event->width, event->height );
+ }
+ if (win->option&F_RESIZE) {
+ if (event->width < 10 || event->height < 10) {
+ return TRUE;
+ }
+ int w = win->w;
+ int h = win->h;
+
+
+ if (win->w != event->width || win->h != event->height) {
+ if (debugWindow >= 2) {
+ printf( " Update [%ld %ld]\n", event->width-win->w, event->height-win->h );
+ }
+ win->w = event->width;
+ win->h = event->height;
+
+ if (win->w < MIN_WIN_WIDTH) {
+ win->w = MIN_WIN_WIDTH;
+ }
+
+ if (win->h < MIN_WIN_HEIGHT) {
+ win->h = MIN_WIN_HEIGHT;
+ }
+
+ if (win->option&F_MENUBAR) {
+ GtkAllocation allocation;
+ gtk_widget_get_allocation(win->menubar, &allocation);
+ win->menu_height= allocation.height;
+ gtk_widget_set_size_request(win->menubar, win->w-20, win->menu_height);
+ }
+ if (win->resizeTimer) { // Already have a timer
+ return FALSE;
+ } else {
+ win->resizeW = w; //Remember where this started
+ win->resizeH = h;
+ win->timer_idle_count = 0; //Start background timer on redraw
+ win->timer_busy_count = 0;
+ win->resizeTimer = g_timeout_add(100,(GSourceFunc)resizeTime,
+ win); // 100ms delay
+ return FALSE;
+ }
+ }
+ }
+
+ return FALSE;
}
/**
@@ -753,25 +741,25 @@ static int window_configure_event(
*/
gboolean window_state_event(
- GtkWidget *widget,
- GdkEventWindowState *event,
- wWin_p win)
+ GtkWidget *widget,
+ GdkEventWindowState *event,
+ wWin_p win)
{
- if (!win) {
- return (FALSE);
- }
+ if (!win) {
+ return (FALSE);
+ }
- win->maximize_initially = FALSE;
+ win->maximize_initially = FALSE;
- if (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) {
- win->maximize_initially = TRUE;
- }
+ if (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) {
+ win->maximize_initially = TRUE;
+ }
- if (win->busy==FALSE && win->winProc) {
- win->winProc(win, wState_e, NULL, win->data);
- }
+ if (win->busy==FALSE && win->winProc) {
+ win->winProc(win, wState_e, NULL, win->data);
+ }
- return TRUE;
+ return TRUE;
}
/**
* Get current state of shift, ctrl or alt keys.
@@ -781,87 +769,90 @@ gboolean window_state_event(
int wGetKeyState(void)
{
- return keyState;
+ return keyState;
}
wBool_t catch_shift_ctrl_alt_keys(
- GtkWidget * widget,
- GdkEventKey *event,
- void * data)
+ GtkWidget * widget,
+ GdkEventKey *event,
+ void * data)
{
- int state = 0;
- switch (event->keyval ) {
- case GDK_KEY_Shift_L:
- case GDK_KEY_Shift_R:
- state |= WKEY_SHIFT;
- break;
-
- case GDK_KEY_Control_L:
- case GDK_KEY_Control_R:
- state |= WKEY_CTRL;
- break;
-
- case GDK_KEY_Alt_L:
- case GDK_KEY_Alt_R:
- state |= WKEY_ALT;
- break;
-
- case GDK_KEY_Meta_L:
- case GDK_KEY_Meta_R:
- // Pressing SHIFT and then ALT generates a Meta key
- //printf( "Meta\n" );
- state |= WKEY_ALT;
- break;
- }
-
- if (state != 0) {
- if (event->type == GDK_KEY_PRESS) {
- keyState |= state;
- } else {
- keyState &= ~state;
- }
- return TRUE;
- }
- return FALSE;
+ int state = 0;
+ switch (event->keyval ) {
+ case GDK_KEY_Shift_L:
+ case GDK_KEY_Shift_R:
+ state |= WKEY_SHIFT;
+ break;
+
+ case GDK_KEY_Control_L:
+ case GDK_KEY_Control_R:
+ state |= WKEY_CTRL;
+ break;
+
+ case GDK_KEY_Alt_L:
+ case GDK_KEY_Alt_R:
+ state |= WKEY_ALT;
+ break;
+
+ case GDK_KEY_Meta_L:
+ case GDK_KEY_Meta_R:
+ // Pressing SHIFT and then ALT generates a Meta key
+ //printf( "Meta\n" );
+ state |= WKEY_ALT;
+ break;
+ }
+
+ if (state != 0) {
+ if (event->type == GDK_KEY_PRESS) {
+ keyState |= state;
+ } else {
+ keyState &= ~state;
+ }
+ return TRUE;
+ }
+ return FALSE;
}
static gint window_char_event(
- GtkWidget * widget,
- GdkEventKey *event,
- wWin_p win)
+ GtkWidget * widget,
+ GdkEventKey *event,
+ wWin_p win)
{
- wControl_p bb;
-
- if (catch_shift_ctrl_alt_keys(widget, event, win)) {
- return FALSE;
- }
-
- if (event->type == GDK_KEY_RELEASE) {
- return FALSE;
- }
-
- if ( ( event->state & GDK_MODIFIER_MASK ) == 0 ) {
- if (event->keyval == GDK_KEY_Escape) {
- for (bb=win->first; bb; bb=bb->next) {
- if (bb->type == B_BUTTON && (bb->option&BB_CANCEL)) {
- wlibButtonDoAction((wButton_p)bb);
- return TRUE;
- }
- }
- }
- }
-
- if (wlibHandleAccelKey(event)) {
- return TRUE;
- } else {
- return FALSE;
- }
+ wControl_p bb;
+
+ if (catch_shift_ctrl_alt_keys(widget, event, win)) {
+ return FALSE;
+ }
+
+ if (event->type == GDK_KEY_RELEASE) {
+ return FALSE;
+ }
+
+ if ( ( event->state & GDK_MODIFIER_MASK ) == 0 ) {
+ if (event->keyval == GDK_KEY_Escape) {
+ for (bb=win->first; bb; bb=bb->next) {
+ if (bb->type == B_BUTTON && (bb->option&BB_CANCEL)) {
+ wlibButtonDoAction((wButton_p)bb);
+ return TRUE;
+ }
+ }
+ }
+ }
+
+ if (wlibHandleAccelKey(event)) {
+ return TRUE;
+ } else {
+ return FALSE;
+ }
}
-void wSetGeometry(wWin_p win, wWinPix_t min_width, wWinPix_t max_width, wWinPix_t min_height, wWinPix_t max_height, wWinPix_t base_width, wWinPix_t base_height, double aspect_ratio ) {
+void wSetGeometry(wWin_p win, wWinPix_t min_width, wWinPix_t max_width,
+ wWinPix_t min_height, wWinPix_t max_height, wWinPix_t base_width,
+ wWinPix_t base_height, double aspect_ratio )
+{
GdkGeometry hints;
GdkWindowHints hintMask = GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE;
- hints.min_width = min_width;
+ hints.min_width = min_width;
hints.max_width = max_width;
hints.min_height = min_height;
hints.max_height = max_height;
@@ -871,16 +862,16 @@ void wSetGeometry(wWin_p win, wWinPix_t min_width, wWinPix_t max_width, wWinPix_
if( base_width != -1 && base_height != -1 ) {
hintMask |= GDK_HINT_BASE_SIZE;
}
-
+
if(aspect_ratio > -1.0 ) {
hintMask |= GDK_HINT_ASPECT;
- }
+ }
gtk_window_set_geometry_hints(
- GTK_WINDOW(win->gtkwin),
- win->gtkwin,
- &hints,
- hintMask);
+ GTK_WINDOW(win->gtkwin),
+ win->gtkwin,
+ &hints,
+ hintMask);
}
@@ -911,166 +902,158 @@ void wSetGeometry(wWin_p win, wWinPix_t min_width, wWinPix_t max_width, wWinPix_
*/
static wWin_p wWinCommonCreate(
- wWin_p parent,
- int winType,
- wWinPix_t x,
- wWinPix_t y,
- const char * labelStr,
- const char * nameStr,
- long option,
- wWinCallBack_p winProc,
- void * data)
+ wWin_p parent,
+ int winType,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * labelStr,
+ const char * nameStr,
+ long option,
+ wWinCallBack_p winProc,
+ void * data)
{
- wWin_p w;
- int h;
- w = wlibAlloc(NULL, winType, x, y, labelStr, sizeof *w, data);
- w->busy = TRUE;
- w->option = option;
+ wWin_p w;
+ int h;
+ w = wlibAlloc(NULL, winType, x, y, labelStr, sizeof *w, data);
+ w->busy = TRUE;
+ w->option = option;
w->resizeTimer = 0;
- h = BORDERSIZE;
-
- if (w->option&F_MENUBAR) {
- h += MENUH;
- }
-
- if (winType == W_MAIN) {
- w->gtkwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- } else {
- w->gtkwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-
- if (gtkMainW) {
- if (!(w->option&F_NOTTRANSIENT))
- gtk_window_set_transient_for(GTK_WINDOW(w->gtkwin),
- GTK_WINDOW(gtkMainW->gtkwin));
- }
- }
- getWinSize(w, nameStr);
- if (winType != W_MAIN) {
- gtk_widget_set_app_paintable (w->gtkwin,TRUE);
- }
-
- if (option & F_HIDE) {
- gtk_widget_hide(w->gtkwin);
- }
-
- /* center window on top of parent window */
- if (option & F_CENTER) {
- gtk_window_set_position(GTK_WINDOW(w->gtkwin), GTK_WIN_POS_CENTER_ON_PARENT);
- }
-
-
- w->widget = gtk_fixed_new();
-
- if (w->widget == 0) {
- abort();
- }
-
- if (w->option&F_MENUBAR) {
- w->menubar = gtk_menu_bar_new();
- gtk_container_add(GTK_CONTAINER(w->widget), w->menubar);
- gtk_widget_show(w->menubar);
- GtkAllocation allocation;
- gtk_widget_get_allocation(w->menubar, &allocation);
- w->menu_height = allocation.height;
- gtk_widget_set_size_request(w->menubar, -1, w->menu_height);
- }
-
- gtk_container_add(GTK_CONTAINER(w->gtkwin), w->widget);
-
-
-
-
- if (w->option&F_AUTOSIZE) {
- w->realX = 0;
- w->w = MIN_WIN_WIDTH+20;
- w->realY = h;
- w->h = MIN_WIN_HEIGHT;
- } else if (w->origX != 0){
- w->realX = w->origX;
- w->realY = w->origY+h;
-
- w->default_size_x = w->w;
- w->default_size_y = w->h;
- //gtk_widget_set_size_request(w->widget, w->w-20, w->h);
-
- if (w->option&F_MENUBAR) {
- gtk_widget_set_size_request(w->menubar, w->w-20, MENUH);
- }
- }
- wWinPix_t scr_w, scr_h;
- wGetDisplaySize(&scr_w, &scr_h);
- if (scr_w < MIN_WIN_WIDTH) scr_w = MIN_WIN_WIDTH+10;
- if (scr_h < MIN_WIN_HEIGHT) scr_h = MIN_WIN_HEIGHT;
+ h = BORDERSIZE;
+
+ if (w->option&F_MENUBAR) {
+ h += MENUH;
+ }
+
+ if (winType == W_MAIN) {
+ w->gtkwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ } else {
+ w->gtkwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+
+ if (gtkMainW) {
+ if (!(w->option&F_NOTTRANSIENT))
+ gtk_window_set_transient_for(GTK_WINDOW(w->gtkwin),
+ GTK_WINDOW(gtkMainW->gtkwin));
+ }
+ }
+ getWinSize(w, nameStr);
if (winType != W_MAIN) {
- wSetGeometry(w, MIN_WIN_WIDTH, scr_w-10, MIN_WIN_HEIGHT, scr_h, -1, -1, -1);
+ gtk_widget_set_app_paintable (w->gtkwin,TRUE);
+ }
+
+ if (option & F_HIDE) {
+ gtk_widget_hide(w->gtkwin);
+ }
+
+ /* center window on top of parent window */
+ if (option & F_CENTER) {
+ gtk_window_set_position(GTK_WINDOW(w->gtkwin), GTK_WIN_POS_CENTER_ON_PARENT);
+ }
+
+
+ w->widget = gtk_fixed_new();
+
+ if (w->widget == 0) {
+ abort();
+ }
+
+ if (w->option&F_MENUBAR) {
+ w->menubar = gtk_menu_bar_new();
+ gtk_container_add(GTK_CONTAINER(w->widget), w->menubar);
+ gtk_widget_show(w->menubar);
+ GtkAllocation allocation;
+ gtk_widget_get_allocation(w->menubar, &allocation);
+ w->menu_height = allocation.height;
+ gtk_widget_set_size_request(w->menubar, -1, w->menu_height);
+ }
+
+ gtk_container_add(GTK_CONTAINER(w->gtkwin), w->widget);
+
+
+
+
+ if (w->option&F_AUTOSIZE) {
+ w->realX = 0;
+ w->w = 0;
+ w->realY = h;
+ w->h = 0;
+ } else if (w->origX != 0) {
+ w->realX = w->origX;
+ w->realY = w->origY+h;
+
+ //gtk_widget_set_size_request(w->widget, w->w-20, w->h);
+
+ if (w->option&F_MENUBAR) {
+ gtk_widget_set_size_request(w->menubar, w->w-20, MENUH);
+ }
+ }
+
+ w->first = w->last = NULL;
+ w->winProc = winProc;
+ g_signal_connect(GTK_OBJECT(w->gtkwin), "delete_event",
+ G_CALLBACK(window_delete_event), w);
+ g_signal_connect(GTK_OBJECT(w->widget), "expose_event",
+ G_CALLBACK(fixed_expose_event), w);
+ g_signal_connect(GTK_OBJECT(w->gtkwin), "configure_event",
+ G_CALLBACK(window_configure_event), w);
+ g_signal_connect(GTK_OBJECT(w->gtkwin), "window-state-event",
+ G_CALLBACK(window_state_event), w);
+ g_signal_connect(GTK_OBJECT(w->gtkwin), "key_press_event",
+ G_CALLBACK(window_char_event), w);
+ g_signal_connect(GTK_OBJECT(w->gtkwin), "key_release_event",
+ G_CALLBACK(window_char_event), w);
+ gtk_widget_set_events(w->widget, GDK_EXPOSURE_MASK);
+ gtk_widget_set_events(GTK_WIDGET(w->gtkwin),
+ GDK_EXPOSURE_MASK|GDK_KEY_PRESS_MASK|GDK_KEY_RELEASE_MASK);
+
+ if (w->option & F_RESIZE) {
+ gtk_window_set_resizable(GTK_WINDOW(w->gtkwin), TRUE);
+ if ( ( w->option & F_AUTOSIZE ) == 0 ) {
+ gtk_window_resize(GTK_WINDOW(w->gtkwin), w->w, w->h);
+ }
} else {
- if (scr_w < MIN_WIN_WIDTH_MAIN+10) scr_w = MIN_WIN_WIDTH_MAIN+200;
- if (scr_h < MIN_WIN_HEIGHT_MAIN+10) scr_h = MIN_WIN_HEIGHT_MAIN+200;
- wSetGeometry(w, MIN_WIN_WIDTH_MAIN, scr_w-10, MIN_WIN_HEIGHT_MAIN, scr_h-10, -1, -1, -1);
- }
-
-
-
- w->first = w->last = NULL;
- w->winProc = winProc;
- g_signal_connect(GTK_OBJECT(w->gtkwin), "delete_event",
- G_CALLBACK(window_delete_event), w);
- g_signal_connect(GTK_OBJECT(w->widget), "expose_event",
- G_CALLBACK(fixed_expose_event), w);
- g_signal_connect(GTK_OBJECT(w->gtkwin), "configure_event",
- G_CALLBACK(window_configure_event), w);
- g_signal_connect(GTK_OBJECT(w->gtkwin), "window-state-event",
- G_CALLBACK(window_state_event), w);
- g_signal_connect(GTK_OBJECT(w->gtkwin), "key_press_event",
- G_CALLBACK(window_char_event), w);
- g_signal_connect(GTK_OBJECT(w->gtkwin), "key_release_event",
- G_CALLBACK(window_char_event), w);
- gtk_widget_set_events(w->widget, GDK_EXPOSURE_MASK);
- gtk_widget_set_events(GTK_WIDGET(w->gtkwin),
- GDK_EXPOSURE_MASK|GDK_KEY_PRESS_MASK|GDK_KEY_RELEASE_MASK);
-
- if (w->option & F_RESIZE) {
- gtk_window_set_resizable(GTK_WINDOW(w->gtkwin), TRUE);
- gtk_window_resize(GTK_WINDOW(w->gtkwin), w->w, w->h);
- } else {
- gtk_window_set_resizable(GTK_WINDOW(w->gtkwin), FALSE);
- }
-
- w->lastX = 0;
- w->lastY = h;
- w->shown = FALSE;
- w->nameStr = nameStr?strdup(nameStr):NULL;
-
- if (labelStr) {
- gtk_window_set_title(GTK_WINDOW(w->gtkwin), labelStr);
- }
-
- if (listHelpStrings) {
- printf("WINDOW - %s\n", nameStr?nameStr:"<NULL>");
- }
-
- if (firstWin) {
- lastWin->next = (wControl_p)w;
- } else {
- firstWin = (wControl_p)w;
- }
-
- lastWin = (wControl_p)w;
- gtk_widget_show(w->widget);
- gtk_widget_realize(w->gtkwin);
- GtkAllocation allocation;
- gtk_widget_get_allocation(w->gtkwin, &allocation);
- w->menu_height = allocation.height;
-
- w->busy = FALSE;
-
- if (option&F_MAXIMIZE) {
- maximize_at_next_show = TRUE;
- }
-
- return w;
+ gtk_window_set_resizable(GTK_WINDOW(w->gtkwin), FALSE);
+ }
+
+ w->lastX = 0;
+ w->lastY = h;
+ w->shown = FALSE;
+ w->nameStr = nameStr?strdup(nameStr):NULL;
+
+ if (labelStr) {
+ gtk_window_set_title(GTK_WINDOW(w->gtkwin), labelStr);
+ }
+
+ if (listHelpStrings) {
+ printf("WINDOW - %s\n", nameStr?nameStr:"<NULL>");
+ }
+
+ if (firstWin) {
+ lastWin->next = (wControl_p)w;
+ } else {
+ firstWin = (wControl_p)w;
+ }
+
+ lastWin = (wControl_p)w;
+ gtk_widget_show(w->widget);
+ gtk_widget_realize(w->gtkwin);
+ GtkAllocation allocation;
+ gtk_widget_get_allocation(w->gtkwin, &allocation);
+ w->menu_height = allocation.height;
+
+ w->busy = FALSE;
+
+ if (option&F_MAXIMIZE) {
+ maximize_at_next_show = TRUE;
+ }
+
+ if ( windowIconPixbuf == NULL ) {
+ windowIconPixbuf = gdk_pixbuf_new_from_xpm_data((const char**)&xtc_xpm);
+ }
+ gtk_window_set_icon( GTK_WINDOW(w->gtkwin), windowIconPixbuf );
+
+ return w;
}
@@ -1091,38 +1074,38 @@ static wWin_p wWinCommonCreate(
*/
wWin_p wWinMainCreate(
- const char * name, /* Application name */
- wWinPix_t x, /* Initial window width */
- wWinPix_t y, /* Initial window height */
- const char * helpStr, /* Help topic string */
- const char * labelStr, /* Window title */
- const char * nameStr, /* Window name */
- long option, /* Options */
- wWinCallBack_p winProc, /* Call back function */
- void * data) /* User context */
+ const char * name, /* Application name */
+ wWinPix_t x, /* Initial window width */
+ wWinPix_t y, /* Initial window height */
+ const char * helpStr, /* Help topic string */
+ const char * labelStr, /* Window title */
+ const char * nameStr, /* Window name */
+ long option, /* Options */
+ wWinCallBack_p winProc, /* Call back function */
+ void * data) /* User context */
{
- char *pos;
- long isMaximized;
+ char *pos;
+ long isMaximized;
- pos = strchr(name, ';');
+ pos = strchr(name, ';');
- if (pos) {
- /* if found, split application name and configuration name */
- strcpy(wConfigName, pos + 1);
- } else {
- /* if not found, application name and configuration name are same */
- strcpy(wConfigName, name);
- }
+ if (pos) {
+ /* if found, split application name and configuration name */
+ strcpy(wConfigName, pos + 1);
+ } else {
+ /* if not found, application name and configuration name are same */
+ strcpy(wConfigName, name);
+ }
- wPrefGetInteger("draw", "maximized", &isMaximized, 0);
- option = option | (isMaximized?F_MAXIMIZE:0);
+ wPrefGetInteger("draw", "maximized", &isMaximized, 0);
+ option = option | (isMaximized?F_MAXIMIZE:0);
- gtkMainW = wWinCommonCreate(NULL, W_MAIN, x, y, labelStr, nameStr, option,
- winProc, data);
+ gtkMainW = wWinCommonCreate(NULL, W_MAIN, x, y, labelStr, nameStr, option,
+ winProc, data);
- wDrawColorWhite = wDrawFindColor(0xFFFFFF);
- wDrawColorBlack = wDrawFindColor(0x000000);
- return gtkMainW;
+ wDrawColorWhite = wDrawFindColor(0xFFFFFF);
+ wDrawColorBlack = wDrawFindColor(0x000000);
+ return gtkMainW;
}
/**
@@ -1141,29 +1124,29 @@ wWin_p wWinMainCreate(
*/
wWin_p wWinPopupCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- const char * nameStr,
- long option,
- wWinCallBack_p winProc,
- void * data)
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ const char * nameStr,
+ long option,
+ wWinCallBack_p winProc,
+ void * data)
{
- wWin_p win;
+ wWin_p win;
- if (parent == NULL) {
- if (gtkMainW == NULL) {
- abort();
- }
+ if (parent == NULL) {
+ if (gtkMainW == NULL) {
+ abort();
+ }
- parent = gtkMainW;
- }
+ parent = gtkMainW;
+ }
- win = wWinCommonCreate(parent, W_POPUP, x, y, labelStr, nameStr, option,
- winProc, data);
- return win;
+ win = wWinCommonCreate(parent, W_POPUP, x, y, labelStr, nameStr, option,
+ winProc, data);
+ return win;
}
@@ -1178,22 +1161,22 @@ wWin_p wWinPopupCreate(
void wExit(
- int rc) /* Application return code */
+ int rc) /* Application return code */
{
- wWin_p win;
+ wWin_p win;
- for (win = (wWin_p)firstWin; win; win = (wWin_p)win->next) {
- if (gtk_widget_get_visible(GTK_WIDGET(win->gtkwin))) {
- saveSize(win);
- savePos(win);
- }
- }
+ for (win = (wWin_p)firstWin; win; win = (wWin_p)win->next) {
+ if (gtk_widget_get_visible(GTK_WIDGET(win->gtkwin))) {
+ saveSize(win);
+ savePos(win);
+ }
+ }
- wPrefFlush("");
+ wPrefFlush("");
- if (gtkMainW && gtkMainW->winProc != NULL) {
- gtkMainW->winProc(gtkMainW, wQuit_e, NULL, gtkMainW->data);
- }
+ if (gtkMainW && gtkMainW->winProc != NULL) {
+ gtkMainW->winProc(gtkMainW, wQuit_e, NULL, gtkMainW->data);
+ }
- exit(rc);
+ exit(rc);
}
diff --git a/app/wlib/gtklib/wpref.c b/app/wlib/gtklib/wpref.c
index 3494ba2..356dd95 100644
--- a/app/wlib/gtklib/wpref.c
+++ b/app/wlib/gtklib/wpref.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 <stdio.h>
@@ -26,6 +26,7 @@
#include <ctype.h>
#include <dirent.h>
#include <sys/stat.h>
+#include <errno.h>
#define GTK_DISABLE_SINGLE_INCLUDES
#define GDK_DISABLE_DEPRECATED
@@ -47,6 +48,8 @@ extern char wConfigName[];
static char appLibDir[BUFSIZ];
static char appWorkDir[BUFSIZ];
static char userHomeDir[BUFSIZ];
+
+static char *profileFile;
/*
@@ -58,13 +61,13 @@ static char userHomeDir[BUFSIZ];
*/
-/** Find the directory where configuration files, help, demos etc are installed.
+/** Find the directory where configuration files, help, demos etc are installed.
* The search order is:
* 1. Directory specified by the XTRKCADLIB environment variable
* 2. Directory specified by XTRKCAD_INSTALL_PREFIX/share/xtrkcad
* 3. /usr/share/xtrkcad
* 4. /usr/local/share/xtrkcad
- *
+ *
* \return pointer to directory name
*/
@@ -79,13 +82,19 @@ const char * wGetAppLibDir( void )
return appLibDir;
}
- for (cp=wlibGetAppName(),ep=envvar; *cp; cp++,ep++)
+ for (cp=wlibGetAppName(),ep=envvar; *cp; cp++,ep++) {
*ep = toupper(*cp);
- strcpy( ep, "LIB" );
+ }
+#ifndef __APPLE__
+ if ( strstr( XTRKCAD_VERSION, "Beta" ) != NULL ) {
+ strcat( ep, "BETA" );
+ }
+#endif
+ strcat( ep, "LIB" );
ep = getenv( envvar );
if (ep != NULL) {
if ((stat( ep, &buf) == 0 ) && S_ISDIR( buf.st_mode)) {
- strncpy( appLibDir, ep, sizeof appLibDir );
+ strncpy( appLibDir, ep, sizeof(appLibDir) -1 );
//printf( "wAppLbDir=%s\n", appLibDir );
return appLibDir;
}
@@ -100,13 +109,18 @@ const char * wGetAppLibDir( void )
char * dir1 = "/usr/share/";
char * dir2 = "/usr/local/share/";
+ char * beta = "";
if ( strstr( XTRKCAD_VERSION, "Beta" ) != NULL ) {
dir1 = "/usr/local/share/";
dir2 = "/usr/share/";
+#ifndef __APPLE__
+ beta = "-beta";
+#endif
}
strcpy( appLibDir, dir1 );
strcat( appLibDir, wlibGetAppName() );
+ strcat( appLibDir, beta );
if ((stat( appLibDir, &buf) == 0 ) && S_ISDIR( buf.st_mode)) {
//printf( "wAppLbDir=%s\n", appLibDir );
return appLibDir;
@@ -120,14 +134,14 @@ const char * wGetAppLibDir( void )
}
sprintf( msg,
- _("The required configuration files could not be located in the expected location.\n\n"
- "Usually this is an installation problem. Make sure that these files are installed in either \n"
- " ../share/xtrkcad or\n"
- " /usr/share/%s or\n"
- " /usr/local/share/%s\n"
- "If this is not possible, the environment variable %s must contain "
- "the name of the correct directory."),
- wlibGetAppName(), wlibGetAppName(), envvar );
+ _("The required configuration files could not be located in the expected location.\n\n"
+ "Usually this is an installation problem. Make sure that these files are installed in either \n"
+ " ../share/xtrkcad or\n"
+ " /usr/share/%s or\n"
+ " /usr/local/share/%s\n"
+ "If this is not possible, the environment variable %s must contain "
+ "the name of the correct directory."),
+ wlibGetAppName(), wlibGetAppName(), envvar );
wNoticeEx( NT_ERROR, msg, _("Ok"), NULL );
appLibDir[0] = '\0';
wExit(0);
@@ -144,20 +158,26 @@ const char * wGetAppLibDir( void )
const char * wGetAppWorkDir(
- void )
+ void )
{
char tmp[BUFSIZ+20];
char * homeDir;
DIR *dirp;
-
- if (appWorkDir[0] != '\0')
+
+ if (appWorkDir[0] != '\0') {
return appWorkDir;
+ }
if ((homeDir = getenv( "HOME" )) == NULL) {
wNoticeEx( NT_ERROR, _("HOME is not set"), _("Exit"), NULL);
wExit(0);
}
sprintf( appWorkDir, "%s/.%s", homeDir, wlibGetAppName() );
+#ifndef __APPLE__
+ if ( strstr( XTRKCAD_VERSION, "Beta" ) != NULL ) {
+ strcat( appWorkDir, "-beta" );
+ }
+#endif
if ( (dirp = opendir(appWorkDir)) != NULL ) {
closedir(dirp);
} else {
@@ -166,18 +186,18 @@ const char * wGetAppWorkDir(
wNoticeEx( NT_ERROR, tmp, _("Exit"), NULL );
wExit(0);
} else {
- /*
- * check for default configuration file and copy to
+ /*
+ * check for default configuration file and copy to
* the workdir if it exists
*/
struct stat stFileInfo;
char appEtcConfig[BUFSIZ];
sprintf( appEtcConfig, "/etc/%s.rc", wlibGetAppName());
-
+
if ( stat( appEtcConfig, &stFileInfo ) == 0 ) {
char copyConfigCmd[(BUFSIZ * 2) + 3];
sprintf( copyConfigCmd, "cp %s %s", appEtcConfig, appWorkDir );
- int rc = system( copyConfigCmd );
+ system( copyConfigCmd );
}
}
}
@@ -194,16 +214,17 @@ const char * wGetAppWorkDir(
const char *wGetUserHomeDir( void )
{
char *homeDir;
-
- if( userHomeDir[ 0 ] != '\0' )
+
+ if( userHomeDir[ 0 ] != '\0' ) {
return userHomeDir;
-
+ }
+
if ((homeDir = getenv( "HOME" )) == NULL) {
wNoticeEx( NT_ERROR, _("HOME is not set"), _("Exit"), NULL);
wExit(0);
} else {
strcpy( userHomeDir, homeDir );
- }
+ }
return userHomeDir;
}
@@ -218,62 +239,101 @@ const char *wGetUserHomeDir( void )
*/
typedef struct {
- char * section;
- char * name;
- wBool_t present;
- wBool_t dirty;
- char * val;
- } prefs_t;
+ char * section;
+ char * name;
+ wBool_t present;
+ wBool_t dirty;
+ char * val;
+} prefs_t;
dynArr_t prefs_da;
#define prefs(N) DYNARR_N(prefs_t,prefs_da,N)
wBool_t prefInitted = FALSE;
/**
+ * Define the name of the configuration file. Needed size is calculated, allocated and
+ * initialized with the filename
+ *
+ * \param name overwrite default configuration
+ */
+
+void static
+wlibSetProfileFilename(char *name)
+{
+ const char *workDir;
+
+ workDir = wGetAppWorkDir();
+ if (name && name[0]) {
+ size_t length;
+ length = snprintf(profileFile, 0, "%s", name);
+ profileFile = malloc(length + sizeof(NULL));
+ snprintf( profileFile, length, "%s", name );
+ } else {
+ size_t length;
+ length = snprintf(profileFile, 0, "%s/%s.rc", workDir, wConfigName );
+ profileFile = malloc(length + sizeof(NULL));
+ length = snprintf(profileFile, length+sizeof(NULL), "%s/%s.rc", workDir, wConfigName );
+ }
+}
+
+
+/**
+ * Get the name of the configuration file.
+ *
+ * \return pointer to the filename.
+ *
+ */
+
+char *
+wGetProfileFilename()
+{
+ return(profileFile);
+}
+
+/**
* Read the configuration file into memory
*/
static void readPrefs( char * name, wBool_t update )
{
- char tmp[BUFSIZ], *np, *vp, *cp;
- const char * workDir;
+ char tmp[BUFSIZ+32], *np, *vp, *cp;
FILE * prefFile;
prefs_t * p;
prefInitted = TRUE;
- workDir = wGetAppWorkDir();
- if (name && name[0])
- sprintf( tmp, "%s", name );
- else
- sprintf( tmp, "%s/%s.rc", workDir, wConfigName );
- prefFile = fopen( tmp, "r" );
- if (prefFile == NULL)
+ wlibSetProfileFilename(name);
+
+ prefFile = fopen( profileFile, "r" );
+ if (prefFile == NULL) {
+ // First run, no .rc file yet
return;
+ }
while ( ( fgets(tmp, sizeof tmp, prefFile) ) != NULL ) {
char *sp;
-
+
sp = tmp;
- while ( *sp==' ' || *sp=='\t' ) sp++;
- if ( *sp == '\n' || *sp == '#' )
+ while ( *sp==' ' || *sp=='\t' ) { sp++; }
+ if ( *sp == '\n' || *sp == '#' ) {
continue;
+ }
np = strchr( sp, '.' );
if (np == NULL) {
wNoticeEx( NT_INFORMATION, tmp, _("Continue"), NULL );
continue;
}
*np++ = '\0';
- while ( *np==' ' || *np=='\t' ) np++;
+ while ( *np==' ' || *np=='\t' ) { np++; }
vp = strchr( np, ':' );
if (vp == NULL) {
wNoticeEx( NT_INFORMATION, tmp, _("Continue"), NULL );
continue;
}
*vp++ = '\0';
- while ( *vp==' ' || *vp=='\t' ) vp++;
+ while ( *vp==' ' || *vp=='\t' ) { vp++; }
cp = vp + strlen(vp) -1;
- while ( cp >= vp && (*cp=='\n' || *cp==' ' || *cp=='\t') ) cp--;
+ while ( cp >= vp && (*cp=='\n' || *cp==' ' || *cp=='\t') ) { cp--; }
cp[1] = '\0';
if (update) {
- for (int i=0;i<prefs_da.cnt;i++) {
+ for (int i=0; i<prefs_da.cnt; i++) {
p = &DYNARR_N(prefs_t,prefs_da,i);
if (strcmp(p->name,np)==0 && strcmp(p->section,sp)==0) {
p->val = strdup(vp);
@@ -302,19 +362,21 @@ static void readPrefs( char * name, wBool_t update )
*/
void wPrefSetString(
- const char * section, /* Section */
- const char * name, /* Name */
- const char * sval ) /* Value */
+ const char * section, /* Section */
+ const char * name, /* Name */
+ const char * sval ) /* Value */
{
prefs_t * p;
- if (!prefInitted)
+ if (!prefInitted) {
readPrefs("", FALSE);
-
+ }
+
for (p=&prefs(0); p<&prefs(prefs_da.cnt); p++) {
if ( strcmp( p->section, section ) == 0 && strcmp( p->name, name ) == 0 ) {
- if (p->val)
+ if (p->val) {
free(p->val);
+ }
p->dirty = TRUE;
p->val = (sval?strdup( sval ):NULL);
return;
@@ -336,14 +398,15 @@ void wPrefSetString(
*/
char * wPrefGetStringBasic(
- const char * section, /* Section */
- const char * name ) /* Name */
+ const char * section, /* Section */
+ const char * name ) /* Name */
{
prefs_t * p;
- if (!prefInitted)
+ if (!prefInitted) {
readPrefs("", FALSE);
-
+ }
+
for (p=&prefs(0); p<&prefs(prefs_da.cnt); p++) {
if ( strcmp( p->section, section ) == 0 && strcmp( p->name, name ) == 0 ) {
return p->val;
@@ -360,10 +423,10 @@ char * wPrefGetStringBasic(
* \param lval IN value to save
*/
- void wPrefSetInteger(
- const char * section, /* Section */
- const char * name, /* Name */
- long lval ) /* Value */
+void wPrefSetInteger(
+ const char * section, /* Section */
+ const char * name, /* Name */
+ long lval ) /* Value */
{
char tmp[20];
@@ -382,13 +445,13 @@ char * wPrefGetStringBasic(
*/
wBool_t wPrefGetIntegerBasic(
- const char * section, /* Section */
- const char * name, /* Name */
- long * res, /* Address of result */
- long def ) /* Default value */
+ const char * section, /* Section */
+ const char * name, /* Name */
+ long * res, /* Address of result */
+ long def ) /* Default value */
{
const char * cp;
- char *cp1;
+ char *cp1;
cp = wPrefGetStringBasic( section, name );
if (cp == NULL) {
@@ -404,17 +467,17 @@ wBool_t wPrefGetIntegerBasic(
}
/**
- * Save a float value in the preferences file.
+ * Save a float value in the preferences file.
*
* \param section IN the file section into which the value should be saved
* \param name IN the name of the preference
* \param lval IN the value
*/
- void wPrefSetFloat(
- const char * section, /* Section */
- const char * name, /* Name */
- double lval ) /* Value */
+void wPrefSetFloat(
+ const char * section, /* Section */
+ const char * name, /* Name */
+ double lval ) /* Value */
{
char tmp[20];
@@ -434,13 +497,13 @@ wBool_t wPrefGetIntegerBasic(
wBool_t wPrefGetFloatBasic(
- const char * section, /* Section */
- const char * name, /* Name */
- double * res, /* Address of result */
- double def ) /* Default value */
+ const char * section, /* Section */
+ const char * name, /* Name */
+ double * res, /* Address of result */
+ double def ) /* Default value */
{
const char * cp;
- char *cp1;
+ char *cp1;
cp = wPrefGetStringBasic( section, name );
if (cp == NULL) {
@@ -455,62 +518,117 @@ wBool_t wPrefGetFloatBasic(
return TRUE;
}
-void wPrefsLoad(char * name) {
+void wPrefsLoad(char * name)
+{
readPrefs(name,TRUE);
}
/**
* Save the configuration to a file. The config parameters are held and updated in an array.
- * To make the settings persistant, this function has to be called.
+ * To make the settings persistant, this function has to be called.
*
*/
void wPrefFlush(
- char * name )
+ char * name )
{
prefs_t * p;
- char tmp[BUFSIZ];
- const char *workDir;
+ char tmp[BUFSIZ+32];
FILE * prefFile;
- if (!prefInitted)
+ if (!prefInitted) {
return;
-
- workDir = wGetAppWorkDir();
- if (name && name[0])
- snprintf( tmp, sizeof(tmp), "%s", name );
- else
- snprintf( tmp, sizeof(tmp), "%s/%s.rc", workDir, wConfigName );
- prefFile = fopen( tmp, "w" );
- if (prefFile == NULL)
+ }
+
+ wlibSetProfileFilename(name);
+
+ prefFile = fopen( profileFile, "w" );
+ if (prefFile == NULL) {
+ // Can not write pref file
+ size_t n = BUFSIZ+32-1-strlen(tmp);
+ strncat( tmp, ": ", n );
+ strncat( tmp, strerror(errno), n-2 );
+ wNoticeEx( NT_ERROR, tmp, "Ok", NULL );
return;
+ }
for (p=&prefs(0); p<&prefs(prefs_da.cnt); p++) {
if(p->val) {
fprintf( prefFile, "%s.%s: %s\n", p->section, p->name, p->val );
- }
+ }
}
fclose( prefFile );
}
/**
* Clear the preferences from memory
- * \return
+ * \return
*/
void wPrefReset(
- void )
+ void )
{
prefs_t * p;
prefInitted = FALSE;
for (p=&prefs(0); p<&prefs(prefs_da.cnt); p++) {
- if (p->section)
+ if (p->section) {
free( p->section );
- if (p->name)
+ }
+ if (p->name) {
free( p->name );
- if (p->val)
+ }
+ if (p->val) {
free( p->val );
+ }
}
prefs_da.cnt = 0;
}
+
+/**
+ * Split a line from the config file ie. rc ini-file into separate tokens. The
+ * line is split into sections, name of value and value following. Pointers
+ * to the respective token are returned. These are zero-terminated.
+ * If a token is not present, NULL is returned instead.
+ * The input line is modified.
+ *
+ * \param line input line, modified during excution of function
+ * \param section section if present
+ * \param name name of config value if present
+ * \param value name of value if present
+ */
+void
+wPrefTokenize(char* line, char** section, char** name, char** value)
+{
+ *section = NULL;
+ *name = NULL;
+ *value = NULL;
+
+ *section = strtok(line, ".");
+ *name = strtok(NULL, ":");
+ *value = strtok(NULL, "\n");
+ if(*value)
+ g_strstrip(*value);
+
+}
+
+/**
+ * A valid line for a config file is created from the individual elements.
+ * Values not need for specific statement are ignored. Eg. when section is
+ * present, name and value are not used.
+ * The caller has to make sure, that the return buffer is large enough.
+ *
+ * \param section section, first token, dellimited with '.'
+ * \param name name, left side of ':'
+ * \param value value, right side of ':'
+ * \param result pointer to buffer for formated line.
+ */
+
+void
+wPrefFormatLine(const char* section, const char* name, const char* value, char* result)
+{
+ if (!value || *value == '\0') {
+ value = "";
+ }
+ sprintf(result, "%s.%s: %s", section, name, value);
+} \ No newline at end of file
diff --git a/app/wlib/gtklib/writebitmap.c b/app/wlib/gtklib/writebitmap.c
index be9aa62..0f5041a 100644
--- a/app/wlib/gtklib/writebitmap.c
+++ b/app/wlib/gtklib/writebitmap.c
@@ -1,5 +1,5 @@
/** \file writebitmap.c
- * Bitmap file creation
+ * Bitmap file creation
*/
/* XTrackCad - Model Railroad CAD
@@ -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
*/
#define GTK_DISABLE_SINGLE_INCLUDES
@@ -34,21 +34,21 @@
/**
* Get the Extension part of a filename
- *
+ *
* /param fname the filename
- *
+ *
* /return char* point to the extension
*/
static const char *
GetExtension(const char *fname)
{
- const char *end = fname + strlen(fname);
+ const char *end = fname + strlen(fname);
- while (end > fname && *end != '.') {
- --end;
- }
- return( end + 1 );
+ while (end > fname && *end != '.') {
+ --end;
+ }
+ return( end + 1 );
}
/**
@@ -61,42 +61,42 @@ GetExtension(const char *fname)
wBool_t wBitMapWriteFile(wDraw_p d, const char * fileName)
{
- GdkPixbuf *pixbuf;
- GError *error;
- gboolean res;
- const char *fileFormat = GetExtension(fileName);
- char *writeFormat = NULL;
-
- if(!strcasecmp(fileFormat, PNGFORMAT )){
- writeFormat = PNGFORMAT;
- }
- if( !strcasecmp(fileFormat, "jpg") ||
- !strcasecmp(fileFormat, "jpeg")){
- writeFormat = JPEGFORMAT;
- }
-
- if(!writeFormat) {
- wNoticeEx(NT_ERROR, "WriteBitMap: invalid file format!", "Ok", NULL);
- return FALSE;
- }
-
- pixbuf = gdk_pixbuf_get_from_drawable(NULL, (GdkWindow*)d->pixmap, NULL, 0, 0,
- 0, 0, d->w, d->h);
-
- if (!pixbuf) {
- wNoticeEx(NT_ERROR, "WriteBitMap: pixbuf_get failed", "Ok", NULL);
- return FALSE;
- }
-
- error = NULL;
- res = gdk_pixbuf_save(pixbuf, fileName, writeFormat, &error, NULL);
-
- if (res == FALSE) {
- wNoticeEx(NT_ERROR, "WriteBitMap: pixbuf_save failed", "Ok", NULL);
- return FALSE;
- }
-
- g_object_ref_sink(pixbuf);
- g_object_unref(pixbuf);
- return TRUE;
+ GdkPixbuf *pixbuf;
+ GError *error;
+ gboolean res;
+ const char *fileFormat = GetExtension(fileName);
+ char *writeFormat = NULL;
+
+ if(!strcasecmp(fileFormat, PNGFORMAT )) {
+ writeFormat = PNGFORMAT;
+ }
+ if( !strcasecmp(fileFormat, "jpg") ||
+ !strcasecmp(fileFormat, "jpeg")) {
+ writeFormat = JPEGFORMAT;
+ }
+
+ if(!writeFormat) {
+ wNoticeEx(NT_ERROR, "WriteBitMap: invalid file format!", "Ok", NULL);
+ return FALSE;
+ }
+
+ pixbuf = gdk_pixbuf_get_from_drawable(NULL, (GdkWindow*)d->pixmap, NULL, 0, 0,
+ 0, 0, d->w, d->h);
+
+ if (!pixbuf) {
+ wNoticeEx(NT_ERROR, "WriteBitMap: pixbuf_get failed", "Ok", NULL);
+ return FALSE;
+ }
+
+ error = NULL;
+ res = gdk_pixbuf_save(pixbuf, fileName, writeFormat, &error, NULL);
+
+ if (res == FALSE) {
+ wNoticeEx(NT_ERROR, "WriteBitMap: pixbuf_save failed", "Ok", NULL);
+ return FALSE;
+ }
+
+ g_object_ref_sink(pixbuf);
+ g_object_unref(pixbuf);
+ return TRUE;
}
diff --git a/app/wlib/include/CMakeLists.txt b/app/wlib/include/CMakeLists.txt
new file mode 100644
index 0000000..5891b02
--- /dev/null
+++ b/app/wlib/include/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+target_include_directories(xtrkcad-wlib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+
+target_sources(xtrkcad-wlib
+ PUBLIC
+ wlib.h)
+
+if(WIN32)
+ target_sources(xtrkcad-wlib
+ PRIVATE
+ getopt.h)
+endif() \ No newline at end of file
diff --git a/app/wlib/include/getline.h b/app/wlib/include/getline.h
new file mode 100644
index 0000000..ffbb699
--- /dev/null
+++ b/app/wlib/include/getline.h
@@ -0,0 +1,132 @@
+#ifndef GETLINE_H
+#define GETLINE_H
+
+#include <stdio.h>
+
+#define restrict __restrict
+typedef long long ssize_t;
+
+ssize_t getline(char **restrict lineptr, size_t *restrict n, FILE *restrict stream);
+ssize_t getdelim(char **restrict lineptr, size_t *restrict n, int delim, FILE *restrict stream);
+
+/*
+~$ export MANWIDTH=80
+~$ man getline | col -b
+GETLINE(3) Linux Programmer's Manual GETLINE(3)
+
+NAME
+ getline, getdelim - delimited string input
+
+SYNOPSIS
+ #include <stdio.h>
+
+ ssize_t getline(char **lineptr, size_t *n, FILE *stream);
+
+ ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);
+
+ Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
+
+ getline(), getdelim():
+ Since glibc 2.10:
+ _POSIX_C_SOURCE >= 200809L
+ Before glibc 2.10:
+ _GNU_SOURCE
+
+DESCRIPTION
+ getline() reads an entire line from stream, storing the address of the
+ buffer containing the text into *lineptr. The buffer is null-termi-
+ nated and includes the newline character, if one was found.
+
+ If *lineptr is set to NULL and *n is set 0 before the call, then get-
+ line() will allocate a buffer for storing the line. This buffer should
+ be freed by the user program even if getline() failed.
+
+ Alternatively, before calling getline(), *lineptr can contain a pointer
+ to a malloc(3)-allocated buffer *n bytes in size. If the buffer is not
+ large enough to hold the line, getline() resizes it with realloc(3),
+ updating *lineptr and *n as necessary.
+
+ In either case, on a successful call, *lineptr and *n will be updated
+ to reflect the buffer address and allocated size respectively.
+
+ getdelim() works like getline(), except that a line delimiter other
+ than newline can be specified as the delimiter argument. As with get-
+ line(), a delimiter character is not added if one was not present in
+ the input before end of file was reached.
+
+RETURN VALUE
+ On success, getline() and getdelim() return the number of characters
+ read, including the delimiter character, but not including the termi-
+ nating null byte ('\0'). This value can be used to handle embedded
+ null bytes in the line read.
+
+ Both functions return -1 on failure to read a line (including end-of-
+ file condition). In the event of an error, errno is set to indicate
+ the cause.
+
+ERRORS
+ EINVAL Bad arguments (n or lineptr is NULL, or stream is not valid).
+
+ ENOMEM Allocation or reallocation of the line buffer failed.
+
+ATTRIBUTES
+ For an explanation of the terms used in this section, see at-
+ tributes(7).
+
+ +------------------------------------------------+
+ ¦Interface ¦ Attribute ¦ Value ¦
+ +----------------------+---------------+---------¦
+ ¦getline(), getdelim() ¦ Thread safety ¦ MT-Safe ¦
+ +------------------------------------------------+
+
+CONFORMING TO
+ Both getline() and getdelim() were originally GNU extensions. They
+ were standardized in POSIX.1-2008.
+
+EXAMPLE
+ #define _GNU_SOURCE
+ #include <stdio.h>
+ #include <stdlib.h>
+
+ int
+ main(int argc, char *argv[])
+ {
+ FILE *stream;
+ char *line = NULL;
+ size_t len = 0;
+ ssize_t nread;
+
+ if (argc != 2) {
+ fprintf(stderr, "Usage: %s <file>\n", argv[0]);
+ exit(EXIT_FAILURE);
+ }
+
+ stream = fopen(argv[1], "r");
+ if (stream == NULL) {
+ perror("fopen");
+ exit(EXIT_FAILURE);
+ }
+
+ while ((nread = getline(&line, &len, stream)) != -1) {
+ printf("Retrieved line of length %zu:\n", nread);
+ fwrite(line, nread, 1, stdout);
+ }
+
+ free(line);
+ fclose(stream);
+ exit(EXIT_SUCCESS);
+ }
+
+SEE ALSO
+ read(2), fgets(3), fopen(3), fread(3), scanf(3)
+
+COLOPHON
+ This page is part of release 5.05 of the Linux man-pages project. A
+ description of the project, information about reporting bugs, and the
+ latest version of this page, can be found at
+ https://www.kernel.org/doc/man-pages/.
+
+GNU 2019-03-06 GETLINE(3)
+*/
+
+#endif /* GETLINE_H */
diff --git a/app/wlib/include/getopt.h b/app/wlib/include/getopt.h
index e9a8354..4a3ced4 100644
--- a/app/wlib/include/getopt.h
+++ b/app/wlib/include/getopt.h
@@ -17,7 +17,7 @@
You should have received a copy of the GNU General Public License
along with ASPEX; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
extern char *optarg;
diff --git a/app/wlib/include/wlib.h b/app/wlib/include/wlib.h
index 7b89bdc..88b2806 100644
--- a/app/wlib/include/wlib.h
+++ b/app/wlib/include/wlib.h
@@ -7,6 +7,7 @@
#ifdef WINDOWS
#include <stdio.h>
#define FILE_SEP_CHAR "\\"
+#include "getline.h"
#else
#define FILE_SEP_CHAR "/"
#endif
@@ -23,8 +24,10 @@ char *g_win32_getlocale (void);
#endif
// conversion routines to and from UTF-8
-bool wSystemToUTF8(const char *inString, char *outString, unsigned outStringLength);
-bool wUTF8ToSystem(const char *inString, char *outString, unsigned outStringLength);
+bool wSystemToUTF8(const char *inString, char *outString,
+ unsigned outStringLength);
+bool wUTF8ToSystem(const char *inString, char *outString,
+ unsigned outStringLength);
bool wIsUTF8(const char * string);
/*
@@ -74,7 +77,7 @@ typedef int wDrawColor;
typedef struct {
const char * name;
const char * value;
- } wBalloonHelp_t;
+} wBalloonHelp_t;
extern long debugWindow;
extern long wDebugFont;
@@ -84,8 +87,10 @@ extern long wDebugFont;
* Bitmap Controls bitmap.c
*/
-wControl_p wBitmapCreate(wWin_p parent, wWinPix_t x, wWinPix_t y, long options, const struct wIcon_t * iconP);
-wIcon_p wIconCreateBitMap(wWinPix_t w, wWinPix_t h, const char *bits, wDrawColor color);
+wControl_p wBitmapCreate(wWin_p parent, wWinPix_t x, wWinPix_t y, long options,
+ const struct wIcon_t * iconP);
+wIcon_p wIconCreateBitMap(wWinPix_t w, wWinPix_t h, const char *bits,
+ wDrawColor color);
wIcon_p wIconCreatePixMap(char *pm[]);
void wIconSetColor(wIcon_p ip, wDrawColor color);
@@ -103,12 +108,15 @@ typedef enum {
wBoxThickB,
wBoxThickW,
wBoxRidge,
- wBoxTrough }
- wBoxType_e;
+ wBoxTrough
+}
+wBoxType_e;
void wBoxSetSize(wBox_p b, wWinPix_t w, wWinPix_t h);
-void wlibDrawBox(wWin_p win, wBoxType_e style, wWinPix_t x, wWinPix_t y, wWinPix_t w, wWinPix_t h);
-wBox_p wBoxCreate(wWin_p parent, wWinPix_t bx, wWinPix_t by, const char *labelStr, wBoxType_e boxTyp, wWinPix_t bw, wWinPix_t bh);
+void wlibDrawBox(wWin_p win, wBoxType_e style, wWinPix_t x, wWinPix_t y,
+ wWinPix_t w, wWinPix_t h);
+wBox_p wBoxCreate(wWin_p parent, wWinPix_t bx, wWinPix_t by,
+ const char *labelStr, wBoxType_e boxTyp, wWinPix_t bw, wWinPix_t bh);
/*------------------------------------------------------------------------------
*
@@ -135,13 +143,19 @@ typedef void (*wChoiceCallBack_p)( long, void * );
void wButtonSetLabel(wButton_p bb, const char *labelStr);
void wButtonSetBusy(wButton_p bb, int value);
-wButton_p wButtonCreate(wWin_p parent, wWinPix_t x, wWinPix_t y, const char *helpStr, const char *labelStr, long option, wWinPix_t width, wButtonCallBack_p action, void *data);
+wButton_p wButtonCreate(wWin_p parent, wWinPix_t x, wWinPix_t y,
+ const char *helpStr, const char *labelStr, long option, wWinPix_t width,
+ wButtonCallBack_p action, void *data);
void wRadioSetValue(wChoice_p bc, long value);
long wRadioGetValue(wChoice_p bc);
void wToggleSetValue(wChoice_p bc, long value);
long wToggleGetValue(wChoice_p b);
-wChoice_p wRadioCreate(wWin_p parent, wWinPix_t x, wWinPix_t y, const char *helpStr, const char *labelStr, long option, const char * const *labels, long *valueP, wChoiceCallBack_p action, void *data);
-wChoice_p wToggleCreate(wWin_p parent, wWinPix_t x, wWinPix_t y, const char *helpStr, const char *labelStr, long option, const char * const *labels, long *valueP, wChoiceCallBack_p action, void *data);
+wChoice_p wRadioCreate(wWin_p parent, wWinPix_t x, wWinPix_t y,
+ const char *helpStr, const char *labelStr, long option,
+ const char * const *labels, long *valueP, wChoiceCallBack_p action, void *data);
+wChoice_p wToggleCreate(wWin_p parent, wWinPix_t x, wWinPix_t y,
+ const char *helpStr, const char *labelStr, long option,
+ const char * const *labels, long *valueP, wChoiceCallBack_p action, void *data);
/*------------------------------------------------------------------------------
@@ -166,7 +180,8 @@ void wHelp( const char * );
#define NT_WARNING 2
#define NT_ERROR 4
-wBool_t wNoticeEx( int type, const char * msg, const char * yes, const char * no );
+wBool_t wNoticeEx( int type, const char * msg, const char * yes,
+ const char * no );
unsigned wOpenFileExternal(char *filename);
@@ -185,19 +200,20 @@ unsigned long wGetTimer( void );
void wExit( int );
typedef enum { wCursorNormal,
- wCursorNone,
- wCursorAppStart,
- wCursorHand,
- wCursorNo,
- wCursorSizeAll,
- wCursorSizeNESW,
- wCursorSizeNS,
- wCursorSizeNWSE,
- wCursorSizeWE,
- wCursorWait,
- wCursorIBeam,
- wCursorCross,
- wCursorQuestion } wCursor_t;
+ wCursorNone,
+ wCursorAppStart,
+ wCursorHand,
+ wCursorNo,
+ wCursorSizeAll,
+ wCursorSizeNESW,
+ wCursorSizeNS,
+ wCursorSizeNWSE,
+ wCursorSizeWE,
+ wCursorWait,
+ wCursorIBeam,
+ wCursorCross,
+ wCursorQuestion
+ } wCursor_t;
void wSetCursor( wDraw_p, wCursor_t );
#define defaultCursor wCursorCross
@@ -210,7 +226,8 @@ int wGetKeyState( void );
void wGetDisplaySize( wWinPix_t*, wWinPix_t* );
-wIcon_p wIconCreateBitMap( wWinPix_t, wWinPix_t, const char * bits, wDrawColor );
+wIcon_p wIconCreateBitMap( wWinPix_t, wWinPix_t, const char * bits,
+ wDrawColor );
wIcon_p wIconCreatePixMap( char *[] );
void wIconSetColor( wIcon_p, wDrawColor );
void wIconDraw( wDraw_p d, wIcon_p bm, wWinPix_t x, wWinPix_t y );
@@ -232,8 +249,9 @@ typedef enum {
wResize_e,
wState_e,
wQuit_e,
- wRedraw_e }
- winProcEvent;
+ wRedraw_e
+}
+winProcEvent;
typedef void (*wWinCallBack_p)( wWin_p, winProcEvent, void *, void * );
/* Creation Options */
@@ -252,10 +270,12 @@ typedef void (*wWinCallBack_p)( wWin_p, winProcEvent, void *, void * );
#define F_RESTRICT (1L<<15)
#define F_NOTTRANSIENT (1L<<16)
-wWin_p wWinMainCreate( const char *, wWinPix_t, wWinPix_t, const char *, const char *, const char *,
- long, wWinCallBack_p, void * );
-wWin_p wWinPopupCreate( wWin_p, wWinPix_t, wWinPix_t, const char *, const char *, const char *,
- long, wWinCallBack_p, void * );
+wWin_p wWinMainCreate( const char *, wWinPix_t, wWinPix_t, const char *,
+ const char *, const char *,
+ long, wWinCallBack_p, void * );
+wWin_p wWinPopupCreate( wWin_p, wWinPix_t, wWinPix_t, const char *,
+ const char *, const char *,
+ long, wWinCallBack_p, void * );
wWin_p wMain( int, char *[] );
void wWinSetBigIcon( wWin_p, wIcon_p );
@@ -273,7 +293,9 @@ void wMessage( wWin_p, const char *, wBool_t );
void wWinTop( wWin_p );
void wWinDoCancel( wWin_p );
void wWinBlockEnable( wBool_t );
-void wSetGeometry(wWin_p, wWinPix_t min_width, wWinPix_t max_width, wWinPix_t min_height, wWinPix_t max_height, wWinPix_t base_width, wWinPix_t base_height, double aspect_ratio);
+void wSetGeometry(wWin_p, wWinPix_t min_width, wWinPix_t max_width,
+ wWinPix_t min_height, wWinPix_t max_height, wWinPix_t base_width,
+ wWinPix_t base_height, double aspect_ratio);
int wCreateSplash( char *appName, char *appVer );
int wSetSplashInfo( char *msg );
@@ -293,6 +315,7 @@ void wDestroySplash( void );
//#define BO_ENTER (1L<<10)
#define BO_ENTER 0
#define BO_REPEAT (1L<<11)
+#define BO_IGNFOCUS (1L<<12)
wWinPix_t wLabelWidth( const char * );
const char * wControlGetHelp( wControl_p );
@@ -322,9 +345,10 @@ void wControlLinkedActive( wControl_p b, int active );
#define BS_TRIM (1<<12)
/* Creation CallBacks */
typedef void (*wStringCallBack_p)( const char *, void *);
-wString_p wStringCreate( wWin_p, wWinPix_t, wWinPix_t, const char *, const char *, long,
- wWinPix_t, char *, wIndex_t, wStringCallBack_p,
- void * );
+wString_p wStringCreate( wWin_p, wWinPix_t, wWinPix_t, const char *,
+ const char *, long,
+ wWinPix_t, char *, wIndex_t, wStringCallBack_p,
+ void * );
void wStringSetValue( wString_p, const char * );
void wStringSetWidth( wString_p, wWinPix_t );
const char * wStringGetValue( wString_p );
@@ -336,14 +360,16 @@ const char * wStringGetValue( wString_p );
*/
/* Creation CallBacks */
-typedef void (*wIntegerCallBack_p)( long, void * , int);
-typedef void (*wFloatCallBack_p)( double, void * , int);
-wInteger_p wIntegerCreate( wWin_p, wWinPix_t, wWinPix_t, const char *, const char *, long,
- wWinPix_t, wInteger_t, wInteger_t, wInteger_t *,
- wIntegerCallBack_p, void * );
-wFloat_p wFloatCreate( wWin_p, wWinPix_t, wWinPix_t, const char *, const char *, long,
- wWinPix_t, double, double, double *,
- wFloatCallBack_p, void * );
+typedef void (*wIntegerCallBack_p)( long, void *, int);
+typedef void (*wFloatCallBack_p)( double, void *, int);
+wInteger_p wIntegerCreate( wWin_p, wWinPix_t, wWinPix_t, const char *,
+ const char *, long,
+ wWinPix_t, wInteger_t, wInteger_t, wInteger_t *,
+ wIntegerCallBack_p, void * );
+wFloat_p wFloatCreate( wWin_p, wWinPix_t, wWinPix_t, const char *,
+ const char *, long,
+ wWinPix_t, double, double, double *,
+ wFloatCallBack_p, void * );
void wIntegerSetValue( wInteger_p, wInteger_t );
void wFloatSetValue( wFloat_p, double );
wInteger_t wIntegerGetValue( wInteger_p );
@@ -356,7 +382,8 @@ double wFloatGetValue( wFloat_p );
*/
/* Creation CallBacks */
-typedef void (*wListCallBack_p)( wIndex_t, const char *, wIndex_t, void *, void * );
+typedef void (*wListCallBack_p)( wIndex_t, const char *, wIndex_t, void *,
+ void * );
/* Creation Options */
#define BL_DUP (1L<<16)
@@ -372,12 +399,17 @@ typedef void (*wListCallBack_p)( wIndex_t, const char *, wIndex_t, void *, void
/* lists, droplists and combo boxes */
-wList_p wListCreate( wWin_p, wWinPix_t, wWinPix_t, const char *, const char *, long,
- long, wWinPix_t, int, wWinPix_t *, wBool_t *, const char **, long *, wListCallBack_p, void * );
-wList_p wDropListCreate( wWin_p, wWinPix_t, wWinPix_t, const char *, const char *, long,
- long, wWinPix_t, long *, wListCallBack_p, void * );
-
-wList_p wComboListCreate(wWin_p parent, wWinPix_t x, wWinPix_t y, const char *helpStr, const char *labelStr, long option, long number, wWinPix_t width, long *valueP, wListCallBack_p action, void *data);
+wList_p wListCreate( wWin_p, wWinPix_t, wWinPix_t, const char *, const char *,
+ long,
+ long, wWinPix_t, int, wWinPix_t *, wBool_t *, const char **, long *,
+ wListCallBack_p, void * );
+wList_p wDropListCreate( wWin_p, wWinPix_t, wWinPix_t, const char *,
+ const char *, long,
+ long, wWinPix_t, long *, wListCallBack_p, void * );
+
+wList_p wComboListCreate(wWin_p parent, wWinPix_t x, wWinPix_t y,
+ const char *helpStr, const char *labelStr, long option, long number,
+ wWinPix_t width, long *valueP, wListCallBack_p action, void *data);
void wListClear(wList_p b);
void wListSetIndex(wList_p b, int element);
wIndex_t wListFindValue(wList_p b, const char *val);
@@ -387,10 +419,12 @@ void *wListGetItemContext(wList_p b, wIndex_t inx);
wBool_t wListGetItemSelected(wList_p b, wIndex_t inx);
wIndex_t wListGetSelectedCount(wList_p b);
void wListSelectAll(wList_p bl);
-wBool_t wListSetValues(wList_p b, wIndex_t row, const char *labelStr, wIcon_p bm, void *itemData);
+wBool_t wListSetValues(wList_p b, wIndex_t row, const char *labelStr,
+ wIcon_p bm, void *itemData);
void wListDelete(wList_p b, wIndex_t inx);
int wListGetColumnWidths(wList_p bl, int colCnt, wWinPix_t *colWidths);
-wIndex_t wListAddValue(wList_p b, const char *labelStr, wIcon_p bm, void *itemData);
+wIndex_t wListAddValue(wList_p b, const char *labelStr, wIcon_p bm,
+ void *itemData);
void wListSetSize(wList_p bl, wWinPix_t w, wWinPix_t h);
wIndex_t wListGetValues( wList_p, char *, int, void * *, void * * );
@@ -413,7 +447,7 @@ void wListSetEditable( wList_p, wBool_t );
#define wMessageCreate( w, p1, p2, l, p3, m ) wMessageCreateEx( w, p1, p2, l, p3, m, 0 )
wMessage_p wMessageCreateEx( wWin_p, wWinPix_t, wWinPix_t, const char *,
- wWinPix_t, const char *, long );
+ wWinPix_t, const char *, long );
void wMessageSetValue( wMessage_p, const char * );
void wMessageSetWidth( wMessage_p, wWinPix_t );
@@ -430,7 +464,7 @@ typedef struct {
int width;
int x0, y0;
int x1, y1;
- } wLines_t, * wLines_p;
+} wLines_t, * wLines_p;
wLine_p wLineCreate( wWin_p, const char *, int, wLines_t *);
@@ -447,8 +481,9 @@ wLine_p wLineCreate( wWin_p, const char *, int, wLines_t *);
#define BT_DOBOLD (1L<<21)
#define BT_TOP (1L<<20) /* Show the top of the text */
-wText_p wTextCreate( wWin_p, wWinPix_t, wWinPix_t, const char *, const char *, long,
- wWinPix_t, wWinPix_t );
+wText_p wTextCreate( wWin_p, wWinPix_t, wWinPix_t, const char *, const char *,
+ long,
+ wWinPix_t, wWinPix_t );
void wTextClear( wText_p );
void wTextAppend( wText_p, const char * );
void wTextSetReadonly( wText_p, wBool_t );
@@ -459,7 +494,8 @@ void wTextReadFile( wText_p, const char * );
wBool_t wTextSave( wText_p, const char * );
wBool_t wTextPrint( wText_p );
void wTextSetSize( wText_p, wWinPix_t, wWinPix_t );
-void wTextComputeSize( wText_p, wWinPix_t, wWinPix_t, wWinPix_t *, wWinPix_t * );
+void wTextComputeSize( wText_p, wWinPix_t, wWinPix_t, wWinPix_t *,
+ wWinPix_t * );
void wTextSetPosition( wText_p bt, int pos );
@@ -491,14 +527,16 @@ typedef enum {
wDrawLineDashDot,
wDrawLineDashDotDot,
wDrawLineCenter,
- wDrawLinePhantom}
- wDrawLineType_e;
+ wDrawLinePhantom
+}
+wDrawLineType_e;
typedef enum {
wPolyLineStraight,
wPolyLineSmooth,
- wPolyLineRound}
- wPolyLine_e;
+ wPolyLineRound
+}
+wPolyLine_e;
typedef int wAction_t;
#define wActionMove (1)
@@ -518,7 +556,10 @@ typedef int wAction_t;
#define wActionScrollDown (15)
#define wActionScrollLeft (16)
#define wActionScrollRight (17)
-#define wActionLast wActionScrollRight
+#define wActionMDown (18)
+#define wActionMDrag (19)
+#define wActionMUp (20)
+#define wActionLast wActionMUp
#define wRGB(R,G,B)\
@@ -527,7 +568,8 @@ typedef int wAction_t;
/* Creation CallBacks */
typedef void (*wDrawRedrawCallBack_p)( wDraw_p, void *, wWinPix_t, wWinPix_t );
-typedef void (*wDrawActionCallBack_p)( wDraw_p, void*, wAction_t, wDrawPix_t, wDrawPix_t );
+typedef void (*wDrawActionCallBack_p)( wDraw_p, void*, wAction_t, wDrawPix_t,
+ wDrawPix_t );
/* Creation Options */
#define BD_TICKS (1L<<25)
@@ -538,31 +580,37 @@ typedef void (*wDrawActionCallBack_p)( wDraw_p, void*, wAction_t, wDrawPix_t, wD
/* Create: */
wDraw_p wDrawCreate( wWin_p, wWinPix_t, wWinPix_t, const char *, long,
- wWinPix_t, wWinPix_t, void *,
- wDrawRedrawCallBack_p, wDrawActionCallBack_p );
+ wWinPix_t, wWinPix_t, void *,
+ wDrawRedrawCallBack_p, wDrawActionCallBack_p );
/* Draw: */
void wDrawLine( wDraw_p, wDrawPix_t, wDrawPix_t, wDrawPix_t, wDrawPix_t,
- wDrawWidth, wDrawLineType_e, wDrawColor,
- wDrawOpts );
+ wDrawWidth, wDrawLineType_e, wDrawColor,
+ wDrawOpts );
#define double2wAngle_t( A ) (A)
typedef double wAngle_t;
-void wDrawArc( wDraw_p, wDrawPix_t, wDrawPix_t, wDrawPix_t, wAngle_t, wAngle_t,
- int, wDrawWidth, wDrawLineType_e, wDrawColor,
- wDrawOpts );
+void wDrawArc( wDraw_p, wDrawPix_t, wDrawPix_t, wDrawPix_t, wAngle_t,
+ wAngle_t,
+ int, wDrawWidth, wDrawLineType_e, wDrawColor,
+ wDrawOpts );
void wDrawPoint( wDraw_p, wDrawPix_t, wDrawPix_t, wDrawColor, wDrawOpts );
#define double2wFontSize_t( FS ) (FS)
typedef double wFontSize_t;
-void wDrawString( wDraw_p, wDrawPix_t, wDrawPix_t, wAngle_t, const char *, wFont_p,
- wFontSize_t, wDrawColor, wDrawOpts );
-void wDrawFilledRectangle( wDraw_p, wDrawPix_t, wDrawPix_t, wDrawPix_t, wDrawPix_t,
- wDrawColor, wDrawOpts );
-void wDrawPolygon( wDraw_p, wDrawPix_t [][2], wPolyLine_e [], wIndex_t, wDrawColor, wDrawWidth, wDrawLineType_e,
- wDrawOpts, int, int );
-void wDrawFilledCircle( wDraw_p, wDrawPix_t, wDrawPix_t, wDrawPix_t, wDrawColor, wDrawOpts );
-
-void wDrawGetTextSize( wDrawPix_t *, wDrawPix_t *, wDrawPix_t *, wDrawPix_t *, wDraw_p, const char *, wFont_p,
- wFontSize_t );
+void wDrawString( wDraw_p, wDrawPix_t, wDrawPix_t, wAngle_t, const char *,
+ wFont_p,
+ wFontSize_t, wDrawColor, wDrawOpts );
+void wDrawFilledRectangle( wDraw_p, wDrawPix_t, wDrawPix_t, wDrawPix_t,
+ wDrawPix_t,
+ wDrawColor, wDrawOpts );
+void wDrawPolygon( wDraw_p, wDrawPix_t [][2], wPolyLine_e [], wIndex_t,
+ wDrawColor, wDrawWidth, wDrawLineType_e,
+ wDrawOpts, int, int );
+void wDrawFilledCircle( wDraw_p, wDrawPix_t, wDrawPix_t, wDrawPix_t,
+ wDrawColor, wDrawOpts );
+
+void wDrawGetTextSize( wDrawPix_t *, wDrawPix_t *, wDrawPix_t *, wDrawPix_t *,
+ wDraw_p, const char *, wFont_p,
+ wFontSize_t );
void wDrawClear( wDraw_p );
void wDrawClearTemp( wDraw_p );
wBool_t wDrawSetTempMode( wDraw_p, wBool_t );
@@ -580,9 +628,10 @@ void wDrawSetSize( wDraw_p, wWinPix_t, wWinPix_t, void * );
void wDrawGetSize( wDraw_p, wWinPix_t *, wWinPix_t * );
/* Bitmaps */
-wDrawBitMap_p wDrawBitMapCreate( wDraw_p, int, int, int, int, const unsigned char * );
+wDrawBitMap_p wDrawBitMapCreate( wDraw_p, int, int, int, int,
+ const unsigned char * );
void wDrawBitMap( wDraw_p, wDrawBitMap_p, wDrawPix_t, wDrawPix_t,
- wDrawColor, wDrawOpts );
+ wDrawColor, wDrawOpts );
wDraw_p wBitMapCreate( wWinPix_t, wWinPix_t, int );
wBool_t wBitMapDelete( wDraw_p );
@@ -594,7 +643,8 @@ void wDrawSaveImage( wDraw_p );
void wDrawRestoreImage( wDraw_p );
int wDrawSetBackground( wDraw_p, char * path, char ** error);
void wDrawCloneBackground(wDraw_p from, wDraw_p to);
-void wDrawShowBackground( wDraw_p, wWinPix_t pos_x, wWinPix_t pos_y, wWinPix_t width, wAngle_t angle, int screen);
+void wDrawShowBackground( wDraw_p, wWinPix_t pos_x, wWinPix_t pos_y,
+ wWinPix_t width, wAngle_t angle, int screen);
/*------------------------------------------------------------------------------
*
@@ -665,17 +715,19 @@ typedef enum {
wAccelKey_F10,
wAccelKey_F11,
wAccelKey_F12,
- wAccelKey_Numpad_Add,
- wAccelKey_Numpad_Subtract,
- wAccelKey_LineFeed }
- wAccelKey_e;
+ wAccelKey_Numpad_Add,
+ wAccelKey_Numpad_Subtract,
+ wAccelKey_LineFeed
+}
+wAccelKey_e;
typedef enum {
wModKey_None,
wModKey_Alt,
wModKey_Shift,
- wModKey_Ctrl }
- wModKey_e;
+ wModKey_Ctrl
+}
+wModKey_e;
void wDoAccelHelp( wAccelKey_e key, void * );
@@ -689,13 +741,14 @@ typedef void (*wMenuTraceCallBack_p)( wMenu_p, const char *, void * );
/* Creation Options */
#define BM_ICON (1L<<0)
-wMenu_p wMenuCreate( wWin_p, wWinPix_t, wWinPix_t, const char *, const char *, long );
+wMenu_p wMenuCreate( wWin_p, wWinPix_t, wWinPix_t, const char *, const char *,
+ long );
wMenu_p wMenuBarAdd( wWin_p, const char *, const char * );
wMenuPush_p wMenuPushCreate( wMenu_p, const char *, const char *, long,
- wMenuCallBack_p, void * );
+ wMenuCallBack_p, void * );
wMenuRadio_p wMenuRadioCreate( wMenu_p, const char *, const char *, long,
- wMenuCallBack_p, void * );
+ wMenuCallBack_p, void * );
wMenu_p wMenuMenuCreate( wMenu_p, const char *, const char * );
wMenu_p wMenuPopupCreate( wWin_p, const char * );
@@ -708,7 +761,8 @@ void wMenuListDelete( wMenuList_p, const char * );
const char * wMenuListGet( wMenuList_p, int, void ** );
void wMenuListClear( wMenuList_p );
-wMenuToggle_p wMenuToggleCreate( wMenu_p, const char *, const char *, long, wBool_t, wMenuCallBack_p, void * );
+wMenuToggle_p wMenuToggleCreate( wMenu_p, const char *, const char *, long,
+ wBool_t, wMenuCallBack_p, void * );
wBool_t wMenuToggleSet( wMenuToggle_p, wBool_t );
wBool_t wMenuToggleGet( wMenuToggle_p );
void wMenuToggleEnable( wMenuToggle_p, wBool_t );
@@ -734,11 +788,13 @@ struct wFilSel_t;
typedef enum {
FS_SAVE,
FS_LOAD,
- FS_UPDATE }
- wFilSelMode_e;
+ FS_UPDATE
+}
+wFilSelMode_e;
typedef int (*wFilSelCallBack_p)( int files, char ** fileName, void * );
-struct wFilSel_t * wFilSelCreate(wWin_p, wFilSelMode_e, int, const char *, const char *,
- wFilSelCallBack_p, void * );
+struct wFilSel_t * wFilSelCreate(wWin_p, wFilSelMode_e, int, const char *,
+ const char *,
+ wFilSelCallBack_p, void * );
int wFilSelect( struct wFilSel_t *, const char * );
@@ -750,8 +806,9 @@ int wFilSelect( struct wFilSel_t *, const char * );
typedef void (*wColorSelectButtonCallBack_p)( void *, wDrawColor );
wBool_t wColorSelect( const char *, wDrawColor * );
-wButton_p wColorSelectButtonCreate( wWin_p, wWinPix_t, wWinPix_t, const char *, const char *,
- long, wWinPix_t, wDrawColor *, wColorSelectButtonCallBack_p, void * );
+wButton_p wColorSelectButtonCreate( wWin_p, wWinPix_t, wWinPix_t, const char *,
+ const char *,
+ long, wWinPix_t, wDrawColor *, wColorSelectButtonCallBack_p, void * );
void wColorSelectButtonSetColor( wButton_p, wDrawColor );
wDrawColor wColorSelectButtonGetColor( wButton_p );
@@ -768,20 +825,30 @@ char * wPrefGetStringExt(const char *section, const char *name);
void wPrefsLoad(char * name);
void wPrefSetInteger(const char *, const char *, long );
-wBool_t wPrefGetInteger(const char *section, const char *name, long *result, long defaultValue);
-wBool_t wPrefGetIntegerBasic(const char *section, const char *name, long *result, long defaultValue);
-wBool_t wPrefGetIntegerExt(const char *section, const char *name, long *result, long defaultValue);
+wBool_t wPrefGetInteger(const char *section, const char *name, long *result,
+ long defaultValue);
+wBool_t wPrefGetIntegerBasic(const char *section, const char *name,
+ long *result, long defaultValue);
+wBool_t wPrefGetIntegerExt(const char *section, const char *name, long *result,
+ long defaultValue);
void wPrefSetFloat( const char *, const char *, double );
-wBool_t wPrefGetFloat(const char *section, const char *name, double *result, double defaultValue);
-wBool_t wPrefGetFloatBasic(const char *section, const char *name, double *result, double defaultValue);
-wBool_t wPrefGetFloatExt(const char *section, const char *name, double *result, double defaultValue);
-
-const char * wPrefGetSectionItem( const char * sectionName, wIndex_t * index, const char ** name );
+wBool_t wPrefGetFloat(const char *section, const char *name, double *result,
+ double defaultValue);
+wBool_t wPrefGetFloatBasic(const char *section, const char *name,
+ double *result, double defaultValue);
+wBool_t wPrefGetFloatExt(const char *section, const char *name, double *result,
+ double defaultValue);
+
+//const char * wPrefGetSectionItem( const char * sectionName, wIndex_t * index,
+// const char ** name );
void wPrefFlush( char * name);
-void wPrefReset( void );
+void wPrefReset( void );
+void wPrefTokenize(char* line, char** section, char** name, char** value);
+void wPrefFormatLine(const char* section, const char* name,
+ const char* value, char* result);
-void CleanupCustom( void );
+//void CleanupCustom( void );
/*------------------------------------------------------------------------------
*
@@ -789,12 +856,12 @@ void CleanupCustom( void );
*/
wStatus_p wStatusCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * labelStr,
- wWinPix_t width,
- const char *message );
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * labelStr,
+ wWinPix_t width,
+ const char *message );
wWinPix_t wStatusGetWidth(const char *testString);
wWinPix_t wStatusGetHeight(long flags);
@@ -802,6 +869,18 @@ wWinPix_t wStatusGetHeight(long flags);
void wStatusSetValue(wStatus_p b, const char * arg);
void wStatusSetWidth(wStatus_p b, wWinPix_t width);
+/*------------------------------------------------------------------------------
+ *
+ * System-Information
+ */
+
+char* wGetTempPath(void);
+char* wGetOSVersion(void);
+char* wGetProfileFilename(void);
+char* wGetUserID(void);
+const char* wGetUserHomeRootDir(void);
+const char *wGetPlatformVersion(void);
+
/*-------------------------------------------------------------------------------
* User Preferences
*/
diff --git a/app/wlib/mswlib/CMakeLists.txt b/app/wlib/mswlib/CMakeLists.txt
index 99ac1d4..1d8464a 100644
--- a/app/wlib/mswlib/CMakeLists.txt
+++ b/app/wlib/mswlib/CMakeLists.txt
@@ -1,51 +1,57 @@
-find_package(FreeImage REQUIRED)
-
-FILE(GLOB HEADERS *.h)
-
-SET(SOURCES
- backgnd.c
- getopt.c
- mswbox.c
- mswbutt.c
- mswbitmap.c
- mswchoic.c
- mswcolor.c
- mswdraw.c
- mswedit.c
- mswlines.c
- mswlist.c
- mswmenu.c
- mswmisc.c
- mswmsg.c
- mswpref.c
- mswprint.c
- mswsplash.c
- mswstatus.c
- mswtext.c
- gwin32.c
- simple-gettext.c
- utf8conv.c
+#
+# build the Win32 variant of the wlib
+#
+
+
+
+if(XTRKCAD_USE_GETTEXT)
+ if(WIN32)
+ add_definitions(-DUSE_SIMPLE_GETTEXT )
+ endif(WIN32)
+endif(XTRKCAD_USE_GETTEXT)
+
+target_sources(xtrkcad-wlib
+ PRIVATE
+ backgnd.c
+ getopt.c
+ mswbox.c
+ mswbutt.c
+ mswbitmap.c
+ mswchoic.c
+ mswcolor.c
+ mswdraw.c
+ mswedit.c
+ mswlines.c
+ mswlist.c
+ mswmenu.c
+ mswmisc.c
+ mswmsg.c
+ mswpref.c
+ mswprint.c
+ mswsplash.c
+ mswstatus.c
+ mswtext.c
+ gwin32.c
+ simple-gettext.c
+ sysinfo.c
+ utf8conv.c
+ mswint.h
+ dynarr.h
+ getline/getline.c
)
-include_directories(${FREEIMAGE_INCLUDE_PATH})
-INCLUDE_DIRECTORIES(${XTrkCAD_BINARY_DIR})
-# INCLUDE_DIRECTORIES(${help_BINARY_DIR})
-
-IF(XTRKCAD_USE_GETTEXT)
- IF(WIN32)
- ADD_DEFINITIONS(-DUSE_SIMPLE_GETTEXT )
- ENDIF(WIN32)
-ENDIF(XTRKCAD_USE_GETTEXT)
-
-ADD_LIBRARY(xtrkcad-wlib ${HEADERS} ${SOURCES})
-
-TARGET_LINK_LIBRARIES(xtrkcad-wlib Htmlhelp msimg32 shlwapi)
-target_link_libraries(xtrkcad-wlib ${FREEIMAGE_LIBRARY})
+target_link_libraries(xtrkcad-wlib
+ PRIVATE
+ Htmlhelp
+ msimg32
+ shlwapi
+ FreeImage::FreeImage
+)
install(FILES
${FREEIMAGE_SHAREDLIB}
DESTINATION ${XTRKCAD_BIN_INSTALL_DIR}
- )
+)
if(XTRKCAD_TESTING AND CMOCKA_FOUND)
add_subdirectory( unittest )
diff --git a/app/wlib/mswlib/backgnd.c b/app/wlib/mswlib/backgnd.c
index 9599beb..f10e0f0 100644
--- a/app/wlib/mswlib/backgnd.c
+++ b/app/wlib/mswlib/backgnd.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 <windows.h>
diff --git a/app/wlib/mswlib/checksum.c b/app/wlib/mswlib/checksum.c
index f19d15b..52d8453 100644
--- a/app/wlib/mswlib/checksum.c
+++ b/app/wlib/mswlib/checksum.c
@@ -20,15 +20,19 @@ int main( int argc, char *argv[] )
set = 0;
fp = openfile( argv[1], "rb", &FileSize );
}
- if (fp == NULL)
+ if (fp == NULL) {
exit(1);
-
+ }
+
fprintf( stderr, "File Size = %ld (%lx)\n", FileSize, FileSize );
sum16computed = mswCheck16( fp, FileSize, &sum16stored );
- if (!mswCheck32( fp, FileSize, &sum32off, &sum32computed, &sum32stored ))
+ if (!mswCheck32( fp, FileSize, &sum32off, &sum32computed, &sum32stored )) {
fprintf( stderr, "mswCheck32 error\n" );
- fprintf( stderr, "sum16: stored = %x, computed = %x, sum = %x, expected FFFF\n", sum16stored, sum16computed, sum16stored+sum16computed );
- fprintf( stderr, "sum32: stored = %lx, computed = %lx, expected %lx\n", sum32stored, sum32computed, sum32stored );
+ }
+ fprintf( stderr, "sum16: stored = %x, computed = %x, sum = %x, expected FFFF\n",
+ sum16stored, sum16computed, sum16stored+sum16computed );
+ fprintf( stderr, "sum32: stored = %lx, computed = %lx, expected %lx\n",
+ sum32stored, sum32computed, sum32stored );
if (set) {
fseek( fp, 0x12, SEEK_SET );
sum16computed = 0xFFFF - sum16computed;
diff --git a/app/wlib/mswlib/dynarr.h b/app/wlib/mswlib/dynarr.h
index e8a178e..8c79933 100644
--- a/app/wlib/mswlib/dynarr.h
+++ b/app/wlib/mswlib/dynarr.h
@@ -1,8 +1,8 @@
typedef struct {
- int cnt;
- int max;
- void * ptr;
- } dynArr_t;
+ int cnt;
+ int max;
+ void * ptr;
+} dynArr_t;
#define DYNARR_APPEND(T,DA,INCR) \
{ if ((DA).cnt >= (DA).max) { \
diff --git a/app/wlib/mswlib/getline/LICENSE b/app/wlib/mswlib/getline/LICENSE
new file mode 100644
index 0000000..22df455
--- /dev/null
+++ b/app/wlib/mswlib/getline/LICENSE
@@ -0,0 +1,25 @@
+BSD 2-Clause License
+
+Copyright (c) 2022, Costantino Grana
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/app/wlib/mswlib/getline/README.md b/app/wlib/mswlib/getline/README.md
new file mode 100644
index 0000000..60f0dae
--- /dev/null
+++ b/app/wlib/mswlib/getline/README.md
@@ -0,0 +1,5 @@
+A POSIX getdelim() and getline() implementation for MSVC
+
+Tired of always having problems in reading arbitrary length lines from file under Windows, I tried to write a POSIX getdelim() and getline() implementation for MSVC. Let me know if you have any suggestion for improving this.
+
+This probably needs a test suite.
diff --git a/app/wlib/mswlib/getline/getline.c b/app/wlib/mswlib/getline/getline.c
new file mode 100644
index 0000000..202c7e2
--- /dev/null
+++ b/app/wlib/mswlib/getline/getline.c
@@ -0,0 +1,73 @@
+#include "getline.h"
+
+#include <stdlib.h>
+#include <errno.h>
+
+// MSVC specific implementation
+static void fseterr(FILE *fp)
+{
+ struct file { // Undocumented implementation detail
+ unsigned char *_ptr;
+ unsigned char *_base;
+ int _cnt;
+ int _flag;
+ int _file;
+ int _charbuf;
+ int _bufsiz;
+ };
+ #define _IOERR 0x10
+
+ ((struct file *)fp)->_flag |= _IOERR;
+}
+
+ssize_t getdelim(char **restrict lineptr, size_t *restrict n, int delim, FILE *restrict stream)
+{
+ if (lineptr == NULL || n == NULL || stream == NULL || (*lineptr == NULL && *n != 0)) {
+ errno = EINVAL;
+ return -1;
+ }
+ if (feof(stream) || ferror(stream)) {
+ return -1;
+ }
+
+ if (*lineptr == NULL) {
+ *n = 256;
+ *lineptr = malloc(*n);
+ if (*lineptr == NULL) {
+ fseterr(stream);
+ errno = ENOMEM;
+ return -1;
+ }
+ }
+ ssize_t nread = 0;
+ int c = EOF;
+ while (c != delim) {
+ c = fgetc(stream);
+ if (c == EOF) {
+ break;
+ }
+ if (nread >= (ssize_t)(*n - 1)) {
+ size_t newn = *n * 2;
+ char *newptr = realloc(*lineptr, newn);
+ if (newptr == NULL) {
+ fseterr(stream);
+ errno = ENOMEM;
+ return -1;
+ }
+ *lineptr = newptr;
+ *n = newn;
+ }
+ (*lineptr)[nread++] = c;
+ }
+ if (c == EOF && nread == 0) {
+ return -1;
+ }
+ (*lineptr)[nread] = 0;
+ return nread;
+}
+
+ssize_t getline(char **restrict lineptr, size_t *restrict n, FILE *restrict stream)
+{
+ return getdelim(lineptr, n, '\n', stream);
+}
+
diff --git a/app/wlib/mswlib/getopt.c b/app/wlib/mswlib/getopt.c
index 888f5f8..48ffca9 100644
--- a/app/wlib/mswlib/getopt.c
+++ b/app/wlib/mswlib/getopt.c
@@ -20,7 +20,7 @@
You should have received a copy of the GNU General Public License
along with ASPEX; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
----------------------------------------------------------------------*/
@@ -39,49 +39,50 @@ int optind = 1, opterr, optopt;
int getopt(int argc, char *argv[], const char *optstring)
{
- static int pos = 0;
- char *str;
-
- if (pos == 0) {
- if ((optind >= argc) || (*argv[optind] != OPTCHAR))
- return EOF;
- pos = 1;
- if (argv[optind][pos] == '\0')
- return EOF;
- }
-
- str = strchr(optstring, argv[optind][pos]);
- if (str == NULL) {
- optopt = argv[optind][pos];
- if (opterr)
- fprintf(stderr, "%s: illegal option -- %c\n", argv[0],
- optopt);
- return '?';
- }
-
- if (str[1] == ':') {
- if (argv[optind][pos+1] != '\0') {
- optarg = &argv[optind][pos+1];
- return *str;
+ static int pos = 0;
+ char *str;
+
+ if (pos == 0) {
+ if ((optind >= argc) || (*argv[optind] != OPTCHAR)) {
+ return EOF;
+ }
+ pos = 1;
+ if (argv[optind][pos] == '\0') {
+ return EOF;
+ }
}
- optind++;
- if (optind >= argc) {
- optopt = *str;
- if (opterr)
- fprintf(stderr, "%s: option requires an argument -- %c\n",
- argv[0], optopt);
- return '?';
+
+ str = strchr(optstring, argv[optind][pos]);
+ if (str == NULL) {
+ optopt = argv[optind][pos];
+ if (opterr)
+ fprintf(stderr, "%s: illegal option -- %c\n", argv[0],
+ optopt);
+ return '?';
}
- optarg = argv[optind];
- optind++; pos = 0;
- return *str;
- }
- else {
- pos++;
- if (argv[optind][pos] == '\0') {
- optind++;
- pos = 0;
+
+ if (str[1] == ':') {
+ if (argv[optind][pos+1] != '\0') {
+ optarg = &argv[optind][pos+1];
+ return *str;
+ }
+ optind++;
+ if (optind >= argc) {
+ optopt = *str;
+ if (opterr)
+ fprintf(stderr, "%s: option requires an argument -- %c\n",
+ argv[0], optopt);
+ return '?';
+ }
+ optarg = argv[optind];
+ optind++; pos = 0;
+ return *str;
+ } else {
+ pos++;
+ if (argv[optind][pos] == '\0') {
+ optind++;
+ pos = 0;
+ }
+ return *str;
}
- return *str;
- }
}
diff --git a/app/wlib/mswlib/gwin32.c b/app/wlib/mswlib/gwin32.c
index 877c329..c537439 100644
--- a/app/wlib/mswlib/gwin32.c
+++ b/app/wlib/mswlib/gwin32.c
@@ -13,16 +13,15 @@
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/*
* Modified by the GLib Team and others 1997-2000. See the AUTHORS
* file for a list of people on the GLib Team. See the ChangeLog
* files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
*
* Ported to standard C by Martin Fischer 2009
*
@@ -48,17 +47,17 @@
#endif
#if _MSC_VER > 1300
- #define stricmp _stricmp
- #define strnicmp _strnicmp
- #define strdup _strdup
+#define stricmp _stricmp
+#define strnicmp _strnicmp
+#define strdup _strdup
#endif
/**
- * This function gets the current thread locale from Windows - without any
+ * This function gets the current thread locale from Windows - without any
* encoding info - and returns it as a string of the above form for use in forming
* file names etc. The setlocale() function in the Microsoft C library uses locale
* names of the form "English_United States.1252" etc. We want the
- * UNIXish standard form "en_US", "zh_TW" etc. The returned string should be
+ * UNIXish standard form "en_US", "zh_TW" etc. The returned string should be
* deallocated with free().
*
* \return newly-allocated locale name.
@@ -67,80 +66,80 @@
char *
g_win32_getlocale (void)
{
- LCID lcid;
- LANGID langid;
- char *ev;
- char *loc;
- int primary, sub;
- char iso639[10];
- char iso3166[10];
- const char *script = NULL;
+ LCID lcid;
+ LANGID langid;
+ char *ev;
+ char *loc;
+ int primary, sub;
+ char iso639[10];
+ char iso3166[10];
+ const char *script = NULL;
- /* Let the user override the system settings through environment
- * variables, as on POSIX systems. Note that in GTK+ applications
- * since GTK+ 2.10.7 setting either LC_ALL or LANG also sets the
- * Win32 locale and C library locale through code in gtkmain.c.
- */
- if (((ev = getenv ("LC_ALL")) != NULL && ev[0] != '\0')
- || ((ev = getenv ("LC_MESSAGES")) != NULL && ev[0] != '\0')
- || ((ev = getenv ("LANG")) != NULL && ev[0] != '\0'))
- return strdup (ev);
+ /* Let the user override the system settings through environment
+ * variables, as on POSIX systems. Note that in GTK+ applications
+ * since GTK+ 2.10.7 setting either LC_ALL or LANG also sets the
+ * Win32 locale and C library locale through code in gtkmain.c.
+ */
+ if (((ev = getenv ("LC_ALL")) != NULL && ev[0] != '\0')
+ || ((ev = getenv ("LC_MESSAGES")) != NULL && ev[0] != '\0')
+ || ((ev = getenv ("LANG")) != NULL && ev[0] != '\0')) {
+ return strdup (ev);
+ }
- lcid = GetThreadLocale ();
+ lcid = GetThreadLocale ();
- if (!GetLocaleInfo (lcid, LOCALE_SISO639LANGNAME, iso639, sizeof (iso639)) ||
- !GetLocaleInfo (lcid, LOCALE_SISO3166CTRYNAME, iso3166, sizeof (iso3166)))
- return strdup ("C");
-
- /* Strip off the sorting rules, keep only the language part. */
- langid = LANGIDFROMLCID (lcid);
+ if (!GetLocaleInfo (lcid, LOCALE_SISO639LANGNAME, iso639, sizeof (iso639)) ||
+ !GetLocaleInfo (lcid, LOCALE_SISO3166CTRYNAME, iso3166, sizeof (iso3166))) {
+ return strdup ("C");
+ }
- /* Split into language and territory part. */
- primary = PRIMARYLANGID (langid);
- sub = SUBLANGID (langid);
+ /* Strip off the sorting rules, keep only the language part. */
+ langid = LANGIDFROMLCID (lcid);
- /* Handle special cases */
- switch (primary)
- {
- case LANG_AZERI:
- switch (sub)
- {
- case SUBLANG_AZERI_LATIN:
- script = "@Latn";
- break;
- case SUBLANG_AZERI_CYRILLIC:
- script = "@Cyrl";
- break;
- }
- break;
- case LANG_SERBIAN: /* LANG_CROATIAN == LANG_SERBIAN */
- switch (sub)
- {
- case SUBLANG_SERBIAN_LATIN:
- case 0x06: /* Serbian (Latin) - Bosnia and Herzegovina */
- script = "@Latn";
- break;
+ /* Split into language and territory part. */
+ primary = PRIMARYLANGID (langid);
+ sub = SUBLANGID (langid);
+
+ /* Handle special cases */
+ switch (primary) {
+ case LANG_AZERI:
+ switch (sub) {
+ case SUBLANG_AZERI_LATIN:
+ script = "@Latn";
+ break;
+ case SUBLANG_AZERI_CYRILLIC:
+ script = "@Cyrl";
+ break;
+ }
+ break;
+ case LANG_SERBIAN: /* LANG_CROATIAN == LANG_SERBIAN */
+ switch (sub) {
+ case SUBLANG_SERBIAN_LATIN:
+ case 0x06: /* Serbian (Latin) - Bosnia and Herzegovina */
+ script = "@Latn";
+ break;
+ }
+ break;
+ case LANG_UZBEK:
+ switch (sub) {
+ case SUBLANG_UZBEK_LATIN:
+ script = "@Latn";
+ break;
+ case SUBLANG_UZBEK_CYRILLIC:
+ script = "@Cyrl";
+ break;
+ }
+ break;
}
- break;
- case LANG_UZBEK:
- switch (sub)
- {
- case SUBLANG_UZBEK_LATIN:
- script = "@Latn";
- break;
- case SUBLANG_UZBEK_CYRILLIC:
- script = "@Cyrl";
- break;
+
+ loc = malloc( strlen( iso639 ) + strlen( iso3166 ) + (script ? strlen(
+ script ) : 0) + 2 );
+ strcpy( loc, iso639 );
+ strcat( loc, "_" );
+ strcat( loc, iso3166 );
+ if( script ) {
+ strcat( loc, script );
}
- break;
- }
-
- loc = malloc( strlen( iso639 ) + strlen( iso3166 ) + (script ? strlen( script ) : 0) + 2 );
- strcpy( loc, iso639 );
- strcat( loc, "_" );
- strcat( loc, iso3166 );
- if( script )
- strcat( loc, script );
- return loc;
+ return loc;
}
diff --git a/app/wlib/mswlib/mswbitmap.c b/app/wlib/mswlib/mswbitmap.c
index d4ee83c..9069c35 100644
--- a/app/wlib/mswlib/mswbitmap.c
+++ b/app/wlib/mswlib/mswbitmap.c
@@ -18,12 +18,11 @@
*
* 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 <windows.h>
#include <string.h>
-#include <malloc.h>
#include <math.h>
#include <stdlib.h>
#include <commdlg.h>
@@ -33,24 +32,24 @@
#include "i18n.h"
#if _MSC_VER > 1300
- #define stricmp _stricmp
- #define strnicmp _strnicmp
- #define strdup _strdup
+#define stricmp _stricmp
+#define strnicmp _strnicmp
+#define strdup _strdup
#endif
struct wBitmap_t {
- WOBJ_COMMON
- };
+ WOBJ_COMMON
+};
HPALETTE hOldPal;
HBITMAP mswCreateBitMap(
- COLORREF fgCol1,
- COLORREF fgCol2,
- COLORREF bgCol,
- int w,
- int h,
- const char * bits )
+ COLORREF fgCol1,
+ COLORREF fgCol2,
+ COLORREF bgCol,
+ int w,
+ int h,
+ const char * bits )
{
HDC hDc;
HDC hButtDc;
@@ -69,7 +68,7 @@ HBITMAP mswCreateBitMap(
if (mswPalette) {
hOldPal = SelectPalette( hButtDc, mswPalette, 0 );
}
-
+
/*PatBlt( hButtDc, 0, 0, w, h, WHITENESS );*/
newBrush = CreateSolidBrush( bgCol );
oldBrush = SelectObject( hButtDc, newBrush );
@@ -84,8 +83,9 @@ HBITMAP mswCreateBitMap(
for ( j = 0; j < h; j++ ) {
byt = (0xFF & *byts_p++) | 0x100;
for ( i = 0; i < w; i++ ) {
- if (byt == 1)
+ if (byt == 1) {
byt = (0xFF & *byts_p++) | 0x100;
+ }
if ( byt & 0x1 ) {
SetPixel( hButtDc, i, j, fgCol1 );
SetPixel( hButtDc, i+1, j+1, fgCol2 );
@@ -104,7 +104,7 @@ static dynArr_t bitmap_da;
#define bitmap(N) DYNARR_N(HBITMAP,bitmap_da,N)
void mswRegisterBitMap(
- HBITMAP hBm )
+ HBITMAP hBm )
{
DYNARR_APPEND( HBITMAP, bitmap_da, 10 );
bitmap(bitmap_da.cnt-1) = hBm;
@@ -113,14 +113,15 @@ void mswRegisterBitMap(
void deleteBitmaps( void )
{
int inx;
- for ( inx=0; inx<bitmap_da.cnt; inx++ )
+ for ( inx=0; inx<bitmap_da.cnt; inx++ ) {
DeleteObject( bitmap(inx) );
+ }
}
/**
* Draw a bitmap to the screen.
*
- * \param hDc IN device context
+ * \param hDc IN device context
* \param offw IN horizontal offset
* \param offh IN vertical offset
* \param bm IN icon to draw
@@ -131,46 +132,48 @@ void deleteBitmaps( void )
*/
void mswDrawIcon(
- HDC hDc,
- int offw,
- int offh,
- wIcon_p bm,
- int disabled,
- COLORREF color1,
- COLORREF color2 )
+ HDC hDc,
+ int offw,
+ int offh,
+ wIcon_p bm,
+ int disabled,
+ COLORREF color1,
+ COLORREF color2 )
{
int i;
int byt;
BITMAPINFO *bmiInfo;
COLORREF col;
- /* draw the bitmap by dynamically creating a Windows DIB in memory */
+ /* draw the bitmap by dynamically creating a Windows DIB in memory */
/* BITMAPINFO already has one RGBQUAD color struct, so only allocate the rest */
- bmiInfo = malloc( sizeof( BITMAPINFO ) + (bm->colorcnt - 1) * sizeof( RGBQUAD ));
- if( !bmiInfo ) {
- fprintf( stderr, "could not allocate memory for bmiInfo\n" );
- abort();
- }
-
- /* initialize bitmap header from XPM information */
- bmiInfo->bmiHeader.biSize = sizeof( bmiInfo->bmiHeader );
- bmiInfo->bmiHeader.biWidth = bm->w;
- bmiInfo->bmiHeader.biHeight = bm->h;
- bmiInfo->bmiHeader.biPlanes = 1;
- if( bm->type == mswIcon_bitmap )
- bmiInfo->bmiHeader.biBitCount = 1;
- else
- bmiInfo->bmiHeader.biBitCount = 8; /* up to 256 colors */
- bmiInfo->bmiHeader.biCompression = BI_RGB; /* no compression */
- bmiInfo->bmiHeader.biSizeImage = 0;
- bmiInfo->bmiHeader.biXPelsPerMeter = 0;
- bmiInfo->bmiHeader.biYPelsPerMeter = 0;
- bmiInfo->bmiHeader.biClrUsed = bm->colorcnt; /* number of colors used */
- bmiInfo->bmiHeader.biClrImportant = bm->colorcnt;
+ bmiInfo = malloc( sizeof( BITMAPINFO ) + (bm->colorcnt - 1) * sizeof(
+ RGBQUAD ));
+ if( !bmiInfo ) {
+ fprintf( stderr, "could not allocate memory for bmiInfo\n" );
+ abort();
+ }
+
+ /* initialize bitmap header from XPM information */
+ bmiInfo->bmiHeader.biSize = sizeof( bmiInfo->bmiHeader );
+ bmiInfo->bmiHeader.biWidth = bm->w;
+ bmiInfo->bmiHeader.biHeight = bm->h;
+ bmiInfo->bmiHeader.biPlanes = 1;
+ if( bm->type == mswIcon_bitmap ) {
+ bmiInfo->bmiHeader.biBitCount = 1;
+ } else {
+ bmiInfo->bmiHeader.biBitCount = 8; /* up to 256 colors */
+ }
+ bmiInfo->bmiHeader.biCompression = BI_RGB; /* no compression */
+ bmiInfo->bmiHeader.biSizeImage = 0;
+ bmiInfo->bmiHeader.biXPelsPerMeter = 0;
+ bmiInfo->bmiHeader.biYPelsPerMeter = 0;
+ bmiInfo->bmiHeader.biClrUsed = bm->colorcnt; /* number of colors used */
+ bmiInfo->bmiHeader.biClrImportant = bm->colorcnt;
/*
* create a transparency mask and paint to screen
- */
+ */
if( bm->type == mswIcon_bitmap ) {
memset( &bmiInfo->bmiColors[ 0 ], 0xFF, sizeof( RGBQUAD ));
memset( &bmiInfo->bmiColors[ 1 ], 0, sizeof( RGBQUAD ));
@@ -180,69 +183,71 @@ void mswDrawIcon(
}
StretchDIBits(hDc, offw, offh,
- (int)ceil(bmiInfo->bmiHeader.biWidth*scaleIcon),
- (int)ceil(bmiInfo->bmiHeader.biHeight*scaleIcon),
+ bmiInfo->bmiHeader.biWidth,
+ bmiInfo->bmiHeader.biHeight,
0, 0,
bmiInfo->bmiHeader.biWidth,
bmiInfo->bmiHeader.biHeight,
bm->pixels, bmiInfo,
DIB_RGB_COLORS, SRCAND);
-
+
/* now paint the bitmap with transparent set to black */
if( bm->type == mswIcon_bitmap ) {
- if( disabled ) {
+ if( disabled ) {
col = color2;
} else {
col = color1;
}
memset( &bmiInfo->bmiColors[ 0 ], 0, sizeof( RGBQUAD ));
- bmiInfo->bmiColors[ 1 ].rgbRed = GetRValue( col );
- bmiInfo->bmiColors[ 1 ].rgbGreen = GetGValue( col );
- bmiInfo->bmiColors[ 1 ].rgbBlue = GetBValue( col );
- } else {
+ bmiInfo->bmiColors[ 1 ].rgbRed = GetRValue( col );
+ bmiInfo->bmiColors[ 1 ].rgbGreen = GetGValue( col );
+ bmiInfo->bmiColors[ 1 ].rgbBlue = GetBValue( col );
+ } else {
if( disabled ) {
/* create a gray scale palette */
for( i = 0; i < bm->colorcnt; i ++ ) {
if (i != bm->transparent) {
byt = (30 * bm->colormap[i].rgbRed +
- 59 * bm->colormap[i].rgbGreen +
- 11 * bm->colormap[i].rgbBlue) / 100;
+ 59 * bm->colormap[i].rgbGreen +
+ 11 * bm->colormap[i].rgbBlue) / 100;
/* if totally black, use a dark gray */
- if (byt == 0)
+ if (byt == 0) {
byt = 0x66;
+ }
bmiInfo->bmiColors[i].rgbRed = byt;
bmiInfo->bmiColors[i].rgbGreen = byt;
bmiInfo->bmiColors[i].rgbBlue = byt;
}
}
- } else {
- /* copy the palette */
- memcpy( (void *)bmiInfo->bmiColors, (void *)bm->colormap, bm->colorcnt * sizeof( RGBQUAD ));
- }
+ } else {
+ /* copy the palette */
+ memcpy( (void *)bmiInfo->bmiColors, (void *)bm->colormap,
+ bm->colorcnt * sizeof( RGBQUAD ));
+ }
memset( &bmiInfo->bmiColors[ bm->transparent ], 0, sizeof( RGBQUAD ));
- }
-
- /* show the bitmap */
- StretchDIBits(hDc, offw, offh,
- (int)ceil(bmiInfo->bmiHeader.biWidth*scaleIcon),
- (int)ceil(bmiInfo->bmiHeader.biHeight*scaleIcon),
- 0, 0,
- bmiInfo->bmiHeader.biWidth,
- bmiInfo->bmiHeader.biHeight,
- bm->pixels, bmiInfo,
- DIB_RGB_COLORS, SRCPAINT);
-
- /* forget the data */
- free( bmiInfo );
+ }
+
+ /* show the bitmap */
+ StretchDIBits(hDc, offw, offh,
+ bmiInfo->bmiHeader.biWidth,
+ bmiInfo->bmiHeader.biHeight,
+ 0, 0,
+ bmiInfo->bmiHeader.biWidth,
+ bmiInfo->bmiHeader.biHeight,
+ bm->pixels, bmiInfo,
+ DIB_RGB_COLORS, SRCPAINT);
+
+ /* forget the data */
+ free( bmiInfo );
}
/**
- * Create a two color bitmap. This creates a two color icon. Pixels set to 1 are painted
+ * Create a two color bitmap. This creates a two color icon. Pixels set to 1 are painted
* in the specified color, pixels set to 0 are transparent
- * in order to convert the format, a lot of bit fiddling is necessary. The order of
- * scanlines needs to be reversed and the bit order (high order - low order) is reversed
+ * in order to convert the format, a lot of bit fiddling is necessary. The order of
+ * scanlines needs to be reversed and the bit order (high order - low order) is reversed
* as well.
* \param w IN width in pixels
* \param h IN height in pixels
@@ -251,12 +256,13 @@ void mswDrawIcon(
* \return pointer to icon
*/
-wIcon_p wIconCreateBitMap( wWinPix_t w, wWinPix_t h, const char * bits, wDrawColor color )
+wIcon_p wIconCreateBitMap( wWinPix_t w, wWinPix_t h, const char * bits,
+ wDrawColor color )
{
int lineLength;
int i, j;
unsigned char *dest;
- static unsigned char revbits[] = { 0, 0x08, 0x04, 0x0C, 0x02, 0x0A, 0x06, 0x0E, 0x01, 0x09, 0x05, 0x0D, 0x03, 0x0B, 0x07, 0x0F };
+ static unsigned char revbits[] = { 0, 0x08, 0x04, 0x0C, 0x02, 0x0A, 0x06, 0x0E, 0x01, 0x09, 0x05, 0x0D, 0x03, 0x0B, 0x07, 0x0F };
unsigned long col = wDrawGetRGB( color );
wIcon_p ip;
@@ -278,13 +284,13 @@ wIcon_p wIconCreateBitMap( wWinPix_t w, wWinPix_t h, const char * bits, wDrawCol
ip->colormap[ 1 ].rgbBlue = col & 0xFF;
ip->colormap[ 1 ].rgbRed = (col>>16) & 0xFF;
ip->colormap[ 1 ].rgbGreen = (col>>8) & 0xFF;
- ip->colormap[ 1 ].rgbReserved = 0;
+ ip->colormap[ 1 ].rgbReserved = 0;
color = GetSysColor( COLOR_BTNFACE );
ip->colormap[ 0 ].rgbBlue = GetBValue( color );
ip->colormap[ 0 ].rgbRed = GetRValue( color );
ip->colormap[ 0 ].rgbGreen = GetGValue( color );
- ip->colormap[ 0 ].rgbReserved = 0;
+ ip->colormap[ 0 ].rgbReserved = 0;
lineLength = (((( ip->w + 7 ) / 8 ) + 3 ) >> 2 ) << 2;
ip->pixels = malloc( lineLength * ip->h );
@@ -293,19 +299,19 @@ wIcon_p wIconCreateBitMap( wWinPix_t w, wWinPix_t h, const char * bits, wDrawCol
abort();
}
- /*
+ /*
* copy the bits from source to the buffer, at this time the order of
* scanlines is reversed by starting with the last source line.
*/
for( i = 0; i < ip->h; i++ ) {
dest = ip->pixels + i * lineLength;
- memcpy( dest, bits + ( ip->h - i - 1 ) * (( ip->w + 7) / 8), ( ip->w + 7 ) / 8 );
+ memcpy( dest, bits + ( ip->h - i - 1 ) * (( ip->w + 7) / 8),
+ ( ip->w + 7 ) / 8 );
/*
* and now, the bit order is changed, this is done via a lookup table
*/
- for( j = 0; j < lineLength; j++ )
- {
+ for( j = 0; j < lineLength; j++ ) {
unsigned byte = dest[ j ];
unsigned low = byte & 0x0F;
unsigned high = (byte & 0xF0) >> 4;
@@ -323,7 +329,7 @@ wIcon_p wIconCreateBitMap( wWinPix_t w, wWinPix_t h, const char * bits, wDrawCol
* transparency, other symbolic names are not supported.
*
* \param pm IN XPM variable
- * \return pointer to icon, call free() if not needed anymore.
+ * \return pointer to icon, call free() if not needed anymore.
*/
wIcon_p wIconCreatePixMap( char *pm[])
@@ -355,9 +361,9 @@ wIcon_p wIconCreatePixMap( char *pm[])
height = (int)strtol(cq, &cq, 10 ); /* height of image */
col = (int)strtol(cq, &cq, 10 ); /* number of colors used */
numchars = (int)strtol(cq, &cq, 10 ); /* get number of chars per pixel */
-
+
ip->colormap = malloc( col * sizeof( RGBQUAD ));
- ip->w = width;
+ ip->w = width;
ip->h = height;
ip->colorcnt = col; /* number of colors used */
@@ -368,19 +374,19 @@ wIcon_p wIconCreatePixMap( char *pm[])
if( numchars == 1 ) {
keys[ col ] = (unsigned)ptr[0];
+ } else if( numchars == 2 ) {
+ keys[ col ] = (unsigned) ( ptr[ 0 ] + ptr[ 1 ] * 256 );
}
- else if( numchars == 2 ) {
- keys[ col ] = (unsigned) ( ptr[ 0 ] + ptr[ 1 ] * 256 );
- }
-
+
cp = strtok( ptr + numchars, "\t " ); /* cp points to color type */
assert( *cp == 'c' ); /* should always be color */
-
- cp = strtok( NULL, "\t " ); /* go to next token, the color definition itself */
+
+ cp = strtok( NULL,
+ "\t " ); /* go to next token, the color definition itself */
if( *cp == '#' ) { /* is this a hex RGB specification? */
len = strlen( cp+1 ) / 3;
- assert( len == 4 || len == 2 ); /* expecting three 2 char or 4 char values */
+ assert( len == 4 || len == 2 ); /* expecting three 2 char or 4 char values */
buff[2] = 0; /* if yes, extract the values */
memcpy( buff, cp + 1, 2 );
r = (int)strtol(buff, &cq, 16);
@@ -397,9 +403,9 @@ wIcon_p wIconCreatePixMap( char *pm[])
} else {
if( !stricmp( cp, "none" )) { /* special case transparency*/
ip->transparent = col;
+ } else {
+ assert( *cp == '#' ); /* if no, abort for the moment */
}
- else
- assert( *cp == '#' ); /* if no, abort for the moment */
}
free( ptr );
}
@@ -413,32 +419,34 @@ wIcon_p wIconCreatePixMap( char *pm[])
abort();
}
- /*
+ /*
convert the XPM pixel data to indexes into color table
- at the same time the order of rows is reversed
+ at the same time the order of rows is reversed
Win32 should be able to do that but I couldn't find out
- how, so this is coded by hand.
+ how, so this is coded by hand.
*/
/* for all rows */
for( i = 0; i < ip->h; i++ ) {
-
+
cq = ip->pixels + lineLength * i;
/* get the next row */
cp = pm[ ip->h - i + ip->colorcnt ];
/* for all pixels in row */
for( j = 0; j < ip->w; j++ ) {
/* get the pixel info */
- if( numchars == 1 )
+ if( numchars == 1 ) {
pixel = ( unsigned )*cp;
- else
+ } else {
pixel = (unsigned) (*cp + *(cp+1)*256);
+ }
cp += numchars;
/* look up pixel info in color table */
k = 0;
- while(k < col && pixel != keys[ k ] )
+ while(k < col && pixel != keys[ k ] ) {
k++;
+ }
if (pixel == keys[k]) {
/* save the index into color table */
*(cq + j) = k;
@@ -446,9 +454,9 @@ wIcon_p wIconCreatePixMap( char *pm[])
*(cq + j) = 0;
}
}
- }
+ }
free( keys );
-
+
return ip;
}
@@ -468,7 +476,7 @@ void wIconSetColor( wIcon_p ip, wDrawColor color )
*
* \param d IN drawing area
* \param bm IN bitmap to draw
- * \param x IN x position
+ * \param x IN x position
* \param y IN y position
*/
@@ -489,20 +497,22 @@ wIconDraw( wDraw_p d, wIcon_p bm, wWinPix_t x, wWinPix_t y )
*/
wControl_p
-wBitmapCreate( wWin_p parent, wWinPix_t x, wWinPix_t y, long option, const struct wIcon_t * iconP )
+wBitmapCreate( wWin_p parent, wWinPix_t x, wWinPix_t y, long option,
+ const struct wIcon_t * iconP )
{
wBitmap_p control;
int index;
DWORD style = SS_OWNERDRAW | WS_VISIBLE | WS_CHILD;
- control = mswAlloc( parent, B_BITMAP, NULL, sizeof( struct wBitmap_t ), NULL, &index );
+ control = mswAlloc( parent, B_BITMAP, NULL, sizeof( struct wBitmap_t ), NULL,
+ &index );
mswComputePos( (wControl_p)control, x, y );
control->option = option;
control->hWnd = CreateWindow( "STATIC", NULL,
- style, control->x, control->y,
- iconP->w, iconP->h,
- ((wControl_p)parent)->hWnd, (HMENU)(UINT_PTR)index, mswHInst, NULL );
+ style, control->x, control->y,
+ iconP->w, iconP->h,
+ ((wControl_p)parent)->hWnd, (HMENU)(UINT_PTR)index, mswHInst, NULL );
if (control->hWnd == NULL) {
mswFail("CreateWindow(BITMAP)");
diff --git a/app/wlib/mswlib/mswbox.c b/app/wlib/mswlib/mswbox.c
index 4f90cf4..5698ae4 100644
--- a/app/wlib/mswlib/mswbox.c
+++ b/app/wlib/mswlib/mswbox.c
@@ -1,6 +1,5 @@
#include <windows.h>
#include <string.h>
-#include <malloc.h>
#include <stdlib.h>
#include <commdlg.h>
#include <math.h>
@@ -15,9 +14,9 @@
*/
struct wBox_t {
- WOBJ_COMMON
- wBoxType_e boxTyp;
- };
+ WOBJ_COMMON
+ wBoxType_e boxTyp;
+};
#define B (1)
#define W (2)
@@ -29,9 +28,9 @@ struct wBox_t {
void wBoxSetSize(
- wBox_p bb,
- wWinPix_t w,
- wWinPix_t h )
+ wBox_p bb,
+ wWinPix_t w,
+ wWinPix_t h )
{
bb->w = w;
bb->h = h;
@@ -39,7 +38,7 @@ void wBoxSetSize(
static void repaintBox( HWND hWnd, wControl_p b )
-{
+{
HDC hDc;
wBox_p bb = (wBox_p)(b);
wWinPix_t x0, y0, x1, y1;
@@ -53,7 +52,8 @@ static void repaintBox( HWND hWnd, wControl_p b )
{ /* ThickB */ {B,B}, {B,B}, {B,B}, {B,B} },
{ /* ThickW */ {W,W}, {W,W}, {W,W}, {W,W} },
{ /* RidgeW */ {W,B}, {W,B}, {B,W}, {B,W} },
- { /* TroughW*/ {B,W}, {B,W}, {W,B}, {W,B} } };
+ { /* TroughW*/ {B,W}, {B,W}, {W,B}, {W,B} }
+ };
x0 = bb->x;
x1 = bb->x+bb->w;
@@ -89,18 +89,19 @@ static void repaintBox( HWND hWnd, wControl_p b )
static callBacks_t boxCallBacks = {
- repaintBox,
- NULL,
- NULL };
+ repaintBox,
+ NULL,
+ NULL
+};
wBox_p wBoxCreate(
- wWin_p parent,
- wWinPix_t origX,
- wWinPix_t origY,
- const char * labelStr,
- wBoxType_e typ,
- wWinPix_t width,
- wWinPix_t height )
+ wWin_p parent,
+ wWinPix_t origX,
+ wWinPix_t origY,
+ const char * labelStr,
+ wBoxType_e typ,
+ wWinPix_t width,
+ wWinPix_t height )
{
wBox_p b;
int index;
@@ -113,7 +114,7 @@ wBox_p wBoxCreate(
b->w = width;
b->h = height;
mswAddButton( (wControl_p)b, FALSE, NULL );
- mswCallBacks[B_BOX] = &boxCallBacks;
+ mswCallBacks[B_BOX] = &boxCallBacks;
repaintBox( ((wControl_p)parent)->hWnd, (wControl_p)b );
return b;
-}
+}
diff --git a/app/wlib/mswlib/mswbutt.c b/app/wlib/mswlib/mswbutt.c
index ac5bc87..be72257 100644
--- a/app/wlib/mswlib/mswbutt.c
+++ b/app/wlib/mswlib/mswbutt.c
@@ -17,12 +17,11 @@
*
* 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 <windows.h>
#include <string.h>
-#include <malloc.h>
#include <stdlib.h>
#include <commdlg.h>
#include <math.h>
@@ -48,28 +47,29 @@
static XWNDPROC oldButtProc = NULL;
struct wButton_t {
- WOBJ_COMMON
- wButtonCallBack_p action;
- wBool_t busy;
- wBool_t selected;
- wIcon_p icon;
- UINT_PTR timer_id;
- int timer_count;
- int timer_state;
- };
+ WOBJ_COMMON
+ wButtonCallBack_p action;
+ wBool_t busy;
+ wBool_t selected;
+ wIcon_p icon;
+ UINT_PTR timer_id;
+ int timer_count;
+ int timer_state;
+};
void mswButtPush(
- wControl_p b )
+ wControl_p b )
{
- if ( ((wButton_p)b)->action )
+ if ( ((wButton_p)b)->action ) {
((wButton_p)b)->action( ((wButton_p)b)->data );
+ }
}
/**
* Paint function for toolbar buttons
- *
+ *
* \param hButtDc IN valid device context
* \param bm IN bitmap to add to button
* \param selected IN selected state of button
@@ -77,27 +77,25 @@ void mswButtPush(
*/
static void drawButton(
- HDC hButtDc,
- wIcon_p bm,
- BOOL_T selected,
- BOOL_T disabled )
+ HDC hButtDc,
+ wIcon_p bm,
+ BOOL_T selected,
+ BOOL_T disabled )
{
HGDIOBJ oldBrush, newBrush;
HPEN oldPen, newPen;
RECT rect;
COLORREF color1, color2;
wWinPix_t offw=5, offh=5;
- TRIVERTEX vert[2] ;
- GRADIENT_RECT gRect;
COLORREF colL;
COLORREF colD;
COLORREF colF;
#define LEFT (0)
-#define RIGHT (LONG)ceil(bm->w*scaleIcon+10)
+#define RIGHT (bm->w+9)
#define TOP (0)
-#define BOTTOM (LONG)ceil(bm->h*scaleIcon+10)
+#define BOTTOM (bm->h+9)
/* get the lightest and the darkest color to use */
colL = GetSysColor( COLOR_BTNHIGHLIGHT );
@@ -117,8 +115,7 @@ static void drawButton(
DeleteObject( SelectObject( hButtDc, oldBrush ) );
/* disabled button remain flat */
- if( !disabled )
- {
+ if( !disabled ) {
/* select colors for the gradient */
if( selected ) {
color1 = colD;
@@ -128,67 +125,27 @@ static void drawButton(
color2 = colD;
}
-#define GRADIENT_WIDTH 6
-
- /*
- first draw the top gradient
- this always ends in the button face color
- starting color depends on button state (selected or not)
- */
- vert [0] .x = LEFT;
- vert [0] .y = TOP;
- vert [0] .Red = GetRValue( color1 )* 256;
- vert [0] .Green = GetGValue( color1 )* 256;
- vert [0] .Blue = GetBValue( color1 )* 256;
- vert [0] .Alpha = 0x0000;
- vert [1] .x = RIGHT;
- vert [1] .y = TOP + GRADIENT_WIDTH;
- vert [1] .Red = GetRValue( colF )* 256;
- vert [1] .Green = GetGValue( colF )* 256;
- vert [1] .Blue = GetBValue( colF )* 256;
- vert [1] .Alpha = 0x0000;
-
- gRect.UpperLeft = 0;
- gRect.LowerRight = 1;
-
- GradientFill(hButtDc, vert, 2, &gRect, 1, GRADIENT_FILL_RECT_V);
-
- /*
- now draw the bottom gradient
- this always starts with the button face color
- ending color depends on button state (selected or not)
- */
- vert [0] .x = LEFT;
- vert [0] .y = BOTTOM - GRADIENT_WIDTH;
- vert [0] .Red = GetRValue( colF )* 256;
- vert [0] .Green = GetGValue( colF )* 256;
- vert [0] .Blue = GetBValue( colF )* 256;
- vert [0] .Alpha = 0x0000;
- vert [1] .x = RIGHT;
- vert [1] .y = BOTTOM;
- vert [1] .Red = GetRValue( color2 )* 256;
- vert [1] .Green = GetGValue( color2 )* 256;
- vert [1] .Blue = GetBValue( color2 )* 256;
- vert [1] .Alpha = 0x0000;
- gRect.UpperLeft = 0;
- gRect.LowerRight = 1;
- GradientFill(hButtDc, vert, 2, &gRect, 1, GRADIENT_FILL_RECT_V);
+ /* draw delimiting lines in shadow color */
+ newPen = CreatePen( PS_SOLID, 0, color1 );
+ oldPen = SelectObject( hButtDc, newPen );
+
+ MoveTo( hButtDc, RIGHT-1, TOP );
+ LineTo( hButtDc, LEFT, TOP );
+ LineTo( hButtDc, LEFT, BOTTOM );
+ DeleteObject( SelectObject( hButtDc, oldPen ) );
+
+ newPen = CreatePen( PS_SOLID, 0, color2 );
+ oldPen = SelectObject( hButtDc, newPen );
+ MoveTo( hButtDc, RIGHT, TOP+1 );
+ LineTo( hButtDc, RIGHT, BOTTOM );
+ LineTo( hButtDc, LEFT, BOTTOM );
+ DeleteObject( SelectObject( hButtDc, oldPen ) );
}
- /* draw delimiting lines in shadow color */
- newPen = CreatePen( PS_SOLID, 0, colD );
- oldPen = SelectObject( hButtDc, newPen );
-
- MoveTo( hButtDc, LEFT, TOP );
- LineTo( hButtDc, LEFT, BOTTOM );
- MoveTo( hButtDc, RIGHT, TOP );
- LineTo( hButtDc, RIGHT, BOTTOM );
-
- DeleteObject( SelectObject( hButtDc, oldPen ) );
-
color2 = GetSysColor( COLOR_BTNSHADOW );
- color1 = RGB( bm->colormap[ 1 ].rgbRed, bm->colormap[ 1 ].rgbGreen, bm->colormap[ 1 ].rgbBlue );
+ color1 = RGB( bm->colormap[ 1 ].rgbRed, bm->colormap[ 1 ].rgbGreen,
+ bm->colormap[ 1 ].rgbBlue );
if (selected) {
offw++; offh++;
@@ -198,45 +155,46 @@ static void drawButton(
static void buttDrawIcon(
- wButton_p b,
- HDC butt_hDc )
+ wButton_p b,
+ HDC butt_hDc )
{
- wIcon_p bm = b->icon;
- wWinPix_t offw=5, offh=5;
+ wIcon_p bm = b->icon;
+ wWinPix_t offw=5, offh=5;
- if (b->selected || b->busy) {
- offw++; offh++;
- } else if ( (b->option & BO_DISABLED) != 0 ) {
- ;
- } else {
- ;
- }
- drawButton( butt_hDc, bm, b->selected || b->busy, (b->option & BO_DISABLED) != 0 );
+ if (b->selected || b->busy) {
+ offw++; offh++;
+ } else if ( (b->option & BO_DISABLED) != 0 ) {
+ ;
+ } else {
+ ;
+ }
+ drawButton( butt_hDc, bm, b->selected
+ || b->busy, (b->option & BO_DISABLED) != 0 );
}
void wButtonSetBusy(
- wButton_p b,
- int value)
+ wButton_p b,
+ int value)
{
- b->busy = value;
- if (!value) {
- b->selected = FALSE;
- }
-
- // in case a timer is associated with the button, kill it
- if (b->timer_id) {
- KillTimer(b->hWnd, b->timer_id);
- b->timer_id = 0;
- b->timer_state = STOP_TIMER;
- }
-
- InvalidateRgn(b->hWnd, NULL, FALSE);
+ b->busy = value;
+ if (!value) {
+ b->selected = FALSE;
+ }
+
+ // in case a timer is associated with the button, kill it
+ if (b->timer_id) {
+ KillTimer(b->hWnd, b->timer_id);
+ b->timer_id = 0;
+ b->timer_state = STOP_TIMER;
+ }
+
+ InvalidateRgn(b->hWnd, NULL, FALSE);
}
void wButtonSetLabel(
- wButton_p b,
- const char * label )
+ wButton_p b,
+ const char * label )
{
if ((b->option&BO_ICON) == 0) {
/*b->labelStr = label;*/
@@ -248,11 +206,11 @@ void wButtonSetLabel(
}
/**
- * Button timer: handle timer events for buttons. These are used for
+ * Button timer: handle timer events for buttons. These are used for
* auto-repeating presses. Three phases used are
- * - initial delay before repetitions begin
- * - slow repeats for a few cycles
- * - fast repeats therafter
+ * - initial delay before repetitions begin
+ * - slow repeats for a few cycles
+ * - fast repeats therafter
* - stop timer
*
* \param hWnd Handle of the window, unused
@@ -264,45 +222,46 @@ void wButtonSetLabel(
void CALLBACK buttTimer(HWND hWnd, UINT message, UINT_PTR timer,
DWORD timepast)
{
- wButton_p b = (wButton_p)timer;
- if (b->timer_id == 0) {
- b->timer_state = STOP_TIMER;
- return ;
- }
-
- /* Autorepeat state machine */
- switch (b->timer_state) {
- case INITIAL_WAIT:
- b->timer_state = SLOW_REPEATS;
- b->timer_count = 0;
- KillTimer(hWnd, (UINT_PTR)b);
- SetTimer(hWnd, (UINT_PTR)b, REPEAT_STAGE1_DELAY, buttTimer);
- break;
- case SLOW_REPEATS: /* Enable slow auto-repeat */
- if (b->timer_count++ > 10) {
- /* Start fast auto-repeat */
- b->timer_state = FAST_REPEATS;
- KillTimer(hWnd, (UINT_PTR)b);
- SetTimer(hWnd, (UINT_PTR)b, REPEAT_STAGE2_DELAY, buttTimer);
- }
- break;
- case FAST_REPEATS:
- break;
- case STOP_TIMER:
- default:
- KillTimer(hWnd, (UINT_PTR)b);
- b->timer_id = 0;
- return;
- break;
- }
- if (b->action) {
- b->action(b->data);
- }
- return;
+ wButton_p b = (wButton_p)timer;
+ if (b->timer_id == 0) {
+ b->timer_state = STOP_TIMER;
+ return ;
+ }
+
+ /* Autorepeat state machine */
+ switch (b->timer_state) {
+ case INITIAL_WAIT:
+ b->timer_state = SLOW_REPEATS;
+ b->timer_count = 0;
+ KillTimer(hWnd, (UINT_PTR)b);
+ SetTimer(hWnd, (UINT_PTR)b, REPEAT_STAGE1_DELAY, buttTimer);
+ break;
+ case SLOW_REPEATS: /* Enable slow auto-repeat */
+ if (b->timer_count++ > 10) {
+ /* Start fast auto-repeat */
+ b->timer_state = FAST_REPEATS;
+ KillTimer(hWnd, (UINT_PTR)b);
+ SetTimer(hWnd, (UINT_PTR)b, REPEAT_STAGE2_DELAY, buttTimer);
+ }
+ break;
+ case FAST_REPEATS:
+ break;
+ case STOP_TIMER:
+ default:
+ KillTimer(hWnd, (UINT_PTR)b);
+ b->timer_id = 0;
+ return;
+ break;
+ }
+ if (b->action) {
+ b->action(b->data);
+ }
+ return;
}
-
-static LRESULT buttPush( wControl_p b, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
+
+static LRESULT buttPush( wControl_p b, HWND hWnd, UINT message, WPARAM wParam,
+ LPARAM lParam )
{
wButton_p bb = (wButton_p)b;
DRAWITEMSTRUCT * di = (DRAWITEMSTRUCT *)lParam;
@@ -319,13 +278,14 @@ static LRESULT buttPush( wControl_p b, HWND hWnd, UINT message, WPARAM wParam, L
case WM_MEASUREITEM: {
MEASUREITEMSTRUCT * mi = (MEASUREITEMSTRUCT *)lParam;
- if (bb->type != B_BUTTON || (bb->option & BO_ICON) == 0)
+ if (bb->type != B_BUTTON || (bb->option & BO_ICON) == 0) {
break;
+ }
mi->CtlType = ODT_BUTTON;
mi->CtlID = (UINT)wParam;
- mi->itemWidth = (UINT)ceil(bb->w*scaleIcon);
- mi->itemHeight = (UINT)ceil(bb->h*scaleIcon);
- } return (LRESULT)0;
+ mi->itemWidth = (UINT)bb->w;
+ mi->itemHeight = (UINT)bb->h;
+ } return (LRESULT)0;
case WM_DRAWITEM:
if (bb->type == B_BUTTON && (bb->option & BO_ICON) != 0) {
@@ -343,16 +303,16 @@ static LRESULT buttPush( wControl_p b, HWND hWnd, UINT message, WPARAM wParam, L
static void buttDone(
- wControl_p b )
+ wControl_p b )
{
free(b);
}
LRESULT CALLBACK pushButt(
- HWND hWnd,
- UINT message,
- WPARAM wParam,
- LPARAM lParam )
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
{
/* Catch <Return> and cause focus to leave control */
@@ -377,7 +337,7 @@ LRESULT CALLBACK pushButt(
case 0x09:
/*SetFocus( ((wControl_p)(b->parent))->hWnd );*/
SendMessage( ((wControl_p)(b->parent))->hWnd, WM_CHAR,
- wParam, lParam );
+ wParam, lParam );
/*SendMessage( ((wControl_p)(b->parent))->hWnd, WM_COMMAND,
inx, MAKELONG( hWnd, EN_KILLFOCUS ) );*/
return (LONG_PTR)0;
@@ -385,8 +345,9 @@ LRESULT CALLBACK pushButt(
}
break;
case WM_KILLFOCUS:
- if ( b )
+ if ( b ) {
InvalidateRect( b->hWnd, NULL, TRUE );
+ }
return (LRESULT)0;
break;
case WM_LBUTTONDOWN:
@@ -396,11 +357,12 @@ LRESULT CALLBACK pushButt(
b->timer_id = (UINT_PTR)b;
}
break;
- case WM_LBUTTONUP:
- /* don't know why but this solves a problem with color selection */
- Sleep( 0 );
- if (b->timer_id)
+ case WM_LBUTTONUP:
+ /* don't know why but this solves a problem with color selection */
+ Sleep( 0 );
+ if (b->timer_id) {
KillTimer(hWnd, (UINT_PTR)b);
+ }
b->timer_id = 0;
b->timer_state = STOP_TIMER;
break;
@@ -409,20 +371,21 @@ LRESULT CALLBACK pushButt(
}
static callBacks_t buttonCallBacks = {
- mswRepaintLabel,
- buttDone,
- buttPush };
+ mswRepaintLabel,
+ buttDone,
+ buttPush
+};
wButton_p wButtonCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- wWinPix_t width,
- wButtonCallBack_p action,
- void * data )
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ wWinPix_t width,
+ wButtonCallBack_p action,
+ void * data )
{
wButton_p b;
RECT rect;
@@ -432,8 +395,9 @@ wButton_p wButtonCreate(
HDC hDc;
wIcon_p bm;
- if (width <= 0)
+ if (width <= 0) {
width = 80;
+ }
if ((option&BO_ICON) == 0) {
labelStr = mswStrdup( labelStr );
} else {
@@ -446,20 +410,21 @@ wButton_p wButtonCreate(
b->selected = 0;
mswComputePos( (wControl_p)b, x, y );
if (b->option&BO_ICON) {
- width = (wWinPix_t)ceil(bm->w*scaleIcon)+10;
- h = (int)ceil(bm->h*scaleIcon)+10;
+ width = (wWinPix_t)(bm->w+10);
+ h = bm->h+10;
b->icon = bm;
} else {
width = (wWinPix_t)(width*mswScale);
}
style = ((b->option&BO_ICON)? BS_OWNERDRAW : BS_PUSHBUTTON) |
- WS_CHILD | WS_VISIBLE |
- mswGetBaseStyle(parent);
- if ((b->option&BB_DEFAULT) != 0)
+ WS_CHILD | WS_VISIBLE |
+ mswGetBaseStyle(parent);
+ if ((b->option&BB_DEFAULT) != 0) {
style |= BS_DEFPUSHBUTTON;
+ }
b->hWnd = CreateWindow( "BUTTON", labelStr, style, b->x, b->y,
- /*CW_USEDEFAULT, CW_USEDEFAULT,*/ width, h,
- ((wControl_p)parent)->hWnd, (HMENU)(UINT_PTR)index, mswHInst, NULL );
+ /*CW_USEDEFAULT, CW_USEDEFAULT,*/ width, h,
+ ((wControl_p)parent)->hWnd, (HMENU)(UINT_PTR)index, mswHInst, NULL );
if (b->hWnd == NULL) {
mswFail("CreateWindow(BUTTON)");
return b;
@@ -473,19 +438,16 @@ wButton_p wButtonCreate(
mswCallBacks[B_BUTTON] = &buttonCallBacks;
mswChainFocus( (wControl_p)b );
- oldButtProc = (WNDPROC)SetWindowLongPtr(b->hWnd, GWLP_WNDPROC, (LONG_PTR)&pushButt);
-#ifdef _OLDCODE
- oldButtProc = (WNDPROC)SetWindowLongPtr(b->hWnd, GWL_WNDPROC, (LONG_PTR)&pushButt);
-#endif
+ oldButtProc = (WNDPROC)SetWindowLongPtr(b->hWnd, GWLP_WNDPROC,
+ (LONG_PTR)&pushButt);
if (mswPalette) {
hDc = GetDC( b->hWnd );
SelectPalette( hDc, mswPalette, 0 );
RealizePalette( hDc );
ReleaseDC( b->hWnd, hDc );
}
- if ( !mswThickFont )
- SendMessage( b->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, (LPARAM)0 );
+ SendMessage( b->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, (LPARAM)0 );
InvalidateRect(b->hWnd, &rect, TRUE);
diff --git a/app/wlib/mswlib/mswchoic.c b/app/wlib/mswlib/mswchoic.c
index 55ed177..ac58023 100644
--- a/app/wlib/mswlib/mswchoic.c
+++ b/app/wlib/mswlib/mswchoic.c
@@ -1,6 +1,5 @@
#include <windows.h>
#include <string.h>
-#include <malloc.h>
#include <stdlib.h>
#include <commdlg.h>
#include <math.h>
@@ -22,25 +21,25 @@ static XWNDPROC oldChoiceItemProc = NULL;
static XWNDPROC newChoiceItemProc;
typedef struct {
- WOBJ_COMMON
- wChoice_p owner;
- } wChoiceItem_t, * wChoiceItem_p;
+ WOBJ_COMMON
+ wChoice_p owner;
+} wChoiceItem_t, * wChoiceItem_p;
struct wChoice_t {
- WOBJ_COMMON
- const char * const * labels;
- wChoiceItem_p *buttList;
- long *valueP;
- long oldVal;
- wChoiceCallBack_p action;
- HWND hBorder;
- };
+ WOBJ_COMMON
+ const char * const * labels;
+ wChoiceItem_p *buttList;
+ long *valueP;
+ long oldVal;
+ wChoiceCallBack_p action;
+ HWND hBorder;
+};
static FARPROC oldChoiceProc;
void wRadioSetValue(
- wChoice_p bc,
- long val )
+ wChoice_p bc,
+ long val )
{
const char * const * labels;
long cnt;
@@ -49,14 +48,15 @@ void wRadioSetValue(
butts = (wChoiceItem_p*)bc->buttList;
for (labels = bc->labels, cnt=0; *labels; labels++, cnt++, butts++ )
SendMessage( (*butts)->hWnd, BM_SETCHECK,
- (WPARAM)((val==cnt)?1:0), (LPARAM)0 );
+ (WPARAM)((val==cnt)?1:0), (LPARAM)0 );
bc->oldVal = val;
- if (bc->valueP)
+ if (bc->valueP) {
*bc->valueP = val;
+ }
}
long wRadioGetValue(
- wChoice_p bc )
+ wChoice_p bc )
{
return bc->oldVal;
}
@@ -64,8 +64,8 @@ long wRadioGetValue(
void wToggleSetValue(
- wChoice_p bc,
- long val )
+ wChoice_p bc,
+ long val )
{
const char * const * labels;
long cnt;
@@ -74,49 +74,53 @@ void wToggleSetValue(
butts = (wChoiceItem_p*)bc->buttList;
for (labels = bc->labels, cnt=0; *labels; labels++, cnt++, butts++ )
SendMessage( (*butts)->hWnd, BM_SETCHECK,
- (WPARAM)((val & (1L<<cnt)) != 0), (LPARAM)0 );
+ (WPARAM)((val & (1L<<cnt)) != 0), (LPARAM)0 );
bc->oldVal = val;
- if (bc->valueP)
+ if (bc->valueP) {
*bc->valueP = val;
+ }
}
long wToggleGetValue(
- wChoice_p bc )
+ wChoice_p bc )
{
return bc->oldVal;
}
static void choiceSetBusy(
- wControl_p b,
- BOOL_T busy)
+ wControl_p b,
+ BOOL_T busy)
{
wChoiceItem_p * butts;
wChoice_p bc = (wChoice_p)b;
- for (butts = (wChoiceItem_p*)bc->buttList; *butts; butts++ )
+ for (butts = (wChoiceItem_p*)bc->buttList; *butts; butts++ ) {
EnableWindow( (*butts)->hWnd, !(BOOL)busy );
+ }
}
static void choiceShow(
- wControl_p b,
- BOOL_T show)
+ wControl_p b,
+ BOOL_T show)
{
wChoice_p bc = (wChoice_p)b;
wChoiceItem_p * butts;
- if ((bc->option & BC_NOBORDER)==0)
+ if ((bc->option & BC_NOBORDER)==0) {
ShowWindow( bc->hBorder, show?SW_SHOW:SW_HIDE );
+ }
- for (butts = (wChoiceItem_p*)bc->buttList; *butts; butts++ )
+ for (butts = (wChoiceItem_p*)bc->buttList; *butts; butts++ ) {
ShowWindow( (*butts)->hWnd, show?SW_SHOW:SW_HIDE );
+ }
}
static void choiceSetPos(
- wControl_p b,
- wWinPix_t x,
- wWinPix_t y )
+ wControl_p b,
+ wWinPix_t x,
+ wWinPix_t y )
{
wChoice_p bc = (wChoice_p)b;
wChoiceItem_p * butts;
@@ -126,25 +130,25 @@ static void choiceSetPos(
dy = y - bc->y;
if ((bc->option & BC_NOBORDER)==0)
SetWindowPos( bc->hBorder, HWND_TOP, x, y, CW_USEDEFAULT, CW_USEDEFAULT,
- SWP_NOSIZE|SWP_NOZORDER );
+ SWP_NOSIZE|SWP_NOZORDER );
for (butts = (wChoiceItem_p*)bc->buttList; *butts; butts++ ) {
(*butts)->x += dx;
(*butts)->y += dy;
SetWindowPos( (*butts)->hWnd, HWND_TOP,
- (*butts)->x, (*butts)->y,
- CW_USEDEFAULT, CW_USEDEFAULT,
- SWP_NOSIZE|SWP_NOZORDER );
+ (*butts)->x, (*butts)->y,
+ CW_USEDEFAULT, CW_USEDEFAULT,
+ SWP_NOSIZE|SWP_NOZORDER );
}
bc->x = x;
bc->y = y;
}
LRESULT FAR PASCAL _export pushChoiceItem(
- HWND hWnd,
- UINT message,
- WPARAM wParam,
- LPARAM lParam )
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
{
/* Catch <Return> and cause focus to leave control */
wIndex_t inx = (wIndex_t)GetWindowLongPtr( hWnd, GWL_ID );
@@ -157,9 +161,9 @@ LRESULT FAR PASCAL _export pushChoiceItem(
case 0x0D:
case 0x1B:
case 0x09:
- SetFocus( ((wControl_p)(b->parent))->hWnd );
+ SetFocus( ((wControl_p)(b->parent))->hWnd );
SendMessage( ((wControl_p)(b->parent))->hWnd, WM_CHAR,
- wParam, lParam );
+ wParam, lParam );
/*SendMessage( ((wControl_p)(b->parent))->hWnd, WM_COMMAND,
inx, MAKELONG( hWnd, EN_KILLFOCUS ) );*/
return (LRESULT)0;
@@ -171,18 +175,18 @@ LRESULT FAR PASCAL _export pushChoiceItem(
}
LRESULT choiceItemProc(
- wControl_p b,
- HWND hWnd,
- UINT message,
- WPARAM wParam,
- LPARAM lParam )
-{
+ wControl_p b,
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
+{
wChoiceItem_p me = (wChoiceItem_p)b, *rest;
wChoice_p bc;
int num;
switch( message ) {
-
+
case WM_COMMAND:
switch (WCMD_PARAM_NOTF) {
case BN_CLICKED:
@@ -196,9 +200,9 @@ LRESULT choiceItemProc(
bc->oldVal ^= (1L<<num);
}
SendMessage( (*rest)->hWnd, BM_SETCHECK,
- (WPARAM)((bc->oldVal & (1L<<num)) != 0), (LPARAM)0 );
+ (WPARAM)((bc->oldVal & (1L<<num)) != 0), (LPARAM)0 );
break;
-
+
case B_RADIO:
if (*rest != me) {
SendMessage( (*rest)->hWnd, BM_SETCHECK, (WPARAM)0, (LPARAM)0 );
@@ -209,35 +213,39 @@ LRESULT choiceItemProc(
break;
}
}
- if (bc->valueP)
+ if (bc->valueP) {
*bc->valueP = bc->oldVal;
- if (bc->action)
+ }
+ if (bc->action) {
bc->action( bc->oldVal, bc->data );
+ }
break;
}
break;
- }
-
+ }
+
return DefWindowProc( hWnd, message, wParam, lParam );
-}
+}
static callBacks_t choiceCallBacks = {
- mswRepaintLabel,
- NULL,
- NULL,
- choiceSetBusy,
- choiceShow,
- choiceSetPos };
+ mswRepaintLabel,
+ NULL,
+ NULL,
+ choiceSetBusy,
+ choiceShow,
+ choiceSetPos
+};
static callBacks_t choiceItemCallBacks = {
- NULL,
- NULL,
- choiceItemProc };
+ NULL,
+ NULL,
+ choiceItemProc
+};
/**
- * Creates choice buttons. This function is used to create a group of
+ * Creates choice buttons. This function is used to create a group of
* radio buttons and checkboxes.
*
* \param type IN type of button
@@ -254,17 +262,17 @@ static callBacks_t choiceItemCallBacks = {
*/
static wChoice_p choiceCreate(
- wType_e type,
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- const char * const * labels,
- long *valueP,
- wChoiceCallBack_p action,
- void *data )
+ wType_e type,
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ const char * const * labels,
+ long *valueP,
+ wChoiceCallBack_p action,
+ void *data )
{
wChoice_p b;
const char * const * lp;
@@ -289,17 +297,17 @@ static wChoice_p choiceCreate(
b->action = action;
b->labels = labels;
b->labelY += 6;
-
+
ppx = b->x;
ppy = b->y;
switch (b->type) {
case B_TOGGLE:
- bs = BS_CHECKBOX;
- break;
+ bs = BS_CHECKBOX;
+ break;
case B_RADIO:
- bs = BS_RADIOBUTTON;
- break;
+ bs = BS_RADIOBUTTON;
+ break;
}
for (lp = b->labels,cnt=0; *lp; lp++,cnt++ );
butts = (wChoiceItem_p*)malloc( (cnt+1) * sizeof *butts );
@@ -307,58 +315,60 @@ static wChoice_p choiceCreate(
b->oldVal = (b->valueP?*b->valueP:0);
ph = pw = 2;
maxW = 0;
- if (helpStr)
+ if (helpStr) {
helpStrCopy = mswStrdup( helpStr );
- for (lp = b->labels, cnt=0; *lp; lp++, cnt++, butts++ ) {
- *butts = (wChoiceItem_p)mswAlloc( parent, B_CHOICEITEM,
- mswStrdup(_((char *)*lp)), sizeof( wChoiceItem_t ), data, &index );
- (*butts)->owner = b;
- (*butts)->hWnd = hButt = CreateWindow( "BUTTON", (*butts)->labelStr,
- bs | WS_CHILD | WS_VISIBLE | mswGetBaseStyle(parent), b->x+pw, b->y+ph,
- 80, CHOICE_HEIGHT,
- ((wControl_p)parent)->hWnd, (HMENU)(UINT_PTR)index, mswHInst, NULL );
- if ( hButt == (HWND)0 ) {
- mswFail( "choiceCreate button" );
- return b;
- }
- (*butts)->x = b->x+pw;
- (*butts)->y = b->y+ph;
- if (b->hWnd == 0)
- b->hWnd = (*butts)->hWnd;
- (*butts)->helpStr = helpStrCopy;
-
- hDc = GetDC( hButt );
- lab_l = strlen((*butts)->labelStr);
-
- if (!mswThickFont) {hFont = SelectObject( hDc, mswLabelFont );}
- dw = GetTextExtent( hDc, (char *)((*butts)->labelStr), (UINT)lab_l );
- if (!mswThickFont) {SelectObject( hDc, hFont );}
-
- w = LOWORD(dw) + CHOICE_MIN_WIDTH;
-
- if (w > maxW)
- maxW = w;
- SetBkMode( hDc, TRANSPARENT );
- ReleaseDC( hButt, hDc );
- if (b->option & BC_HORZ) {
- pw += w;
- } else {
- ph += CHOICE_HEIGHT;
- }
- if (!SetWindowPos( hButt, HWND_TOP, 0, 0,
- w, CHOICE_HEIGHT, SWP_NOMOVE|SWP_NOZORDER)) {
- mswFail("Create CHOICE: SetWindowPos");
- }
- mswChainFocus( (wControl_p)*butts );
- newChoiceItemProc = MakeProcInstance( (XWNDPROC)pushChoiceItem, mswHInst );
- oldChoiceItemProc = (XWNDPROC)GetWindowLongPtr((*butts)->hWnd, GWLP_WNDPROC);
- SetWindowLongPtr((*butts)->hWnd, GWLP_WNDPROC, (LPARAM)newChoiceItemProc);
+ }
+ for (lp = b->labels, cnt=0; *lp; lp++, cnt++, butts++ ) {
+ *butts = (wChoiceItem_p)mswAlloc( parent, B_CHOICEITEM,
+ mswStrdup(_((char *)*lp)), sizeof( wChoiceItem_t ), data, &index );
+ (*butts)->owner = b;
+ (*butts)->hWnd = hButt = CreateWindow( "BUTTON", (*butts)->labelStr,
+ bs | WS_CHILD | WS_VISIBLE | mswGetBaseStyle(parent), b->x+pw, b->y+ph,
+ 80, CHOICE_HEIGHT,
+ ((wControl_p)parent)->hWnd, (HMENU)(UINT_PTR)index, mswHInst, NULL );
+ if ( hButt == (HWND)0 ) {
+ mswFail( "choiceCreate button" );
+ return b;
+ }
+ (*butts)->x = b->x+pw;
+ (*butts)->y = b->y+ph;
+ if (b->hWnd == 0) {
+ b->hWnd = (*butts)->hWnd;
+ }
+ (*butts)->helpStr = helpStrCopy;
+
+ hDc = GetDC( hButt );
+ lab_l = strlen((*butts)->labelStr);
+
+ hFont = SelectObject( hDc, mswLabelFont );
+ dw = GetTextExtent( hDc, (char *)((*butts)->labelStr), (UINT)lab_l );
+ SelectObject( hDc, hFont );
+
+ w = LOWORD(dw) + CHOICE_MIN_WIDTH;
+
+ if (w > maxW) {
+ maxW = w;
+ }
+ SetBkMode( hDc, TRANSPARENT );
+ ReleaseDC( hButt, hDc );
+ if (b->option & BC_HORZ) {
+ pw += w;
+ } else {
+ ph += CHOICE_HEIGHT;
+ }
+ if (!SetWindowPos( hButt, HWND_TOP, 0, 0,
+ w, CHOICE_HEIGHT, SWP_NOMOVE|SWP_NOZORDER)) {
+ mswFail("Create CHOICE: SetWindowPos");
+ }
+ mswChainFocus( (wControl_p)*butts );
+ newChoiceItemProc = MakeProcInstance( (XWNDPROC)pushChoiceItem, mswHInst );
+ oldChoiceItemProc = (XWNDPROC)GetWindowLongPtr((*butts)->hWnd, GWLP_WNDPROC);
+ SetWindowLongPtr((*butts)->hWnd, GWLP_WNDPROC, (LPARAM)newChoiceItemProc);
#ifdef _OLDCODE
- oldChoiceItemProc = (XWNDPROC)GetWindowLong((*butts)->hWnd, GWL_WNDPROC);
- SetWindowLong((*butts)->hWnd, GWL_WNDPROC, (LONG)newChoiceItemProc);
+ oldChoiceItemProc = (XWNDPROC)GetWindowLong((*butts)->hWnd, GWL_WNDPROC);
+ SetWindowLong((*butts)->hWnd, GWL_WNDPROC, (LONG)newChoiceItemProc);
#endif
- if ( !mswThickFont )
- SendMessage( (*butts)->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, (LPARAM)0 );
+ SendMessage( (*butts)->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, (LPARAM)0 );
}
*butts = NULL;
switch (b->type) {
@@ -376,13 +386,13 @@ static wChoice_p choiceCreate(
}
pw += 4; ph += 4;
b->w = pw;
- b->h = ph;
+ b->h = ph;
#define FRAME_STYLE SS_ETCHEDFRAME
if ((b->option & BC_NOBORDER)==0) {
b->hBorder = CreateWindow( "STATIC", NULL, WS_CHILD | WS_VISIBLE | FRAME_STYLE,
- b->x, b->y, pw, ph, ((wControl_p)parent)->hWnd, 0, mswHInst, NULL );
+ b->x, b->y, pw, ph, ((wControl_p)parent)->hWnd, 0, mswHInst, NULL );
}
mswAddButton( (wControl_p)b, TRUE, helpStr );
mswCallBacks[ B_CHOICEITEM ] = &choiceItemCallBacks;
@@ -392,33 +402,33 @@ static wChoice_p choiceCreate(
wChoice_p wRadioCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- const char * const *labels,
- long *valueP,
- wChoiceCallBack_p action,
- void *data )
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ const char * const *labels,
+ long *valueP,
+ wChoiceCallBack_p action,
+ void *data )
{
return choiceCreate( B_RADIO, parent, x, y, helpStr, labelStr,
- option, labels, valueP, action, data );
+ option, labels, valueP, action, data );
}
wChoice_p wToggleCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- const char * const *labels,
- long *valueP,
- wChoiceCallBack_p action,
- void *data )
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ const char * const *labels,
+ long *valueP,
+ wChoiceCallBack_p action,
+ void *data )
{
return choiceCreate( B_TOGGLE, parent, x, y, helpStr, labelStr,
- option, labels, valueP, action, data );
+ option, labels, valueP, action, data );
}
diff --git a/app/wlib/mswlib/mswcolor.c b/app/wlib/mswlib/mswcolor.c
index fb9b0ba..f28e298 100644
--- a/app/wlib/mswlib/mswcolor.c
+++ b/app/wlib/mswlib/mswcolor.c
@@ -4,7 +4,6 @@
#include <windows.h>
#include <string.h>
-#include <malloc.h>
#include <stdlib.h>
#include <commdlg.h>
#include <math.h>
@@ -34,16 +33,17 @@ static void mswGetCustomColors( void );
static struct {
- WORD palVersion;
- WORD palNumEntries;
- PALETTEENTRY palPalEntry[NUM_COLORS];
- } colorPalette = {
- 0x300,
- 2,
- {
+ WORD palVersion;
+ WORD palNumEntries;
+ PALETTEENTRY palPalEntry[NUM_COLORS];
+} colorPalette = {
+ 0x300,
+ 2,
+ {
{ 255, 255, 255 }, /* White */
{ 0, 0, 0 } /* Black */
- } };
+ }
+};
static long flipRGB( long rgb )
@@ -68,8 +68,10 @@ static void getpalette( void )
cnt = GetDeviceCaps(hdc, SIZEPALETTE);
GetSystemPaletteEntries( hdc, 0, cnt, pe );
f = fopen( "palette.txt", "w" );
- for (inx=0;inx<cnt;inx++)
- fprintf(f, "%d [ %d %d %d %d ]\n", inx, pe[inx].peRed, pe[inx].peGreen, pe[inx].peBlue, pe[inx].peFlags );
+ for (inx=0; inx<cnt; inx++) {
+ fprintf(f, "%d [ %d %d %d %d ]\n", inx, pe[inx].peRed, pe[inx].peGreen,
+ pe[inx].peBlue, pe[inx].peFlags );
+ }
fclose(f);
ReleaseDC( mswHWnd, hdc );
}
@@ -91,8 +93,9 @@ static int findColor( int r0, int g0, int b0 )
b1 = pal[c].peBlue;
g1 = pal[c].peGreen;
d1 = abs(r0-r1) + abs(g0-g1) + abs(b0-b1);
- if (d1 == 0)
+ if (d1 == 0) {
return c;
+ }
if (d1 < d0) {
d0 = d1;
cc = c;
@@ -104,7 +107,8 @@ static int findColor( int r0, int g0, int b0 )
pal[colorPalette.palNumEntries].peBlue = b0;
if ( mswPalette ) {
ResizePalette( mswPalette, colorPalette.palNumEntries+1 );
- SetPaletteEntries( mswPalette, colorPalette.palNumEntries, 1, &pal[colorPalette.palNumEntries] );
+ SetPaletteEntries( mswPalette, colorPalette.palNumEntries, 1,
+ &pal[colorPalette.palNumEntries] );
}
return colorPalette.palNumEntries++;
}
@@ -130,8 +134,9 @@ void mswInitColorPalette( void )
PALETTEENTRY palPalEntry[256];
} pe;
- if (initted)
+ if (initted) {
return;
+ }
initted = TRUE;
mswGetCustomColors();
@@ -158,7 +163,7 @@ HPALETTE mswCreatePalette( void )
int mswGetColorList( RGBQUAD * colors )
{
int i;
- for (i=0;i<(int)colorPalette.palNumEntries;i++) {
+ for (i=0; i<(int)colorPalette.palNumEntries; i++) {
colors[i].rgbBlue = colorPalette.palPalEntry[i].peBlue;
colors[i].rgbGreen = colorPalette.palPalEntry[i].peGreen;
colors[i].rgbRed = colorPalette.palPalEntry[i].peRed;
@@ -170,37 +175,41 @@ int mswGetColorList( RGBQUAD * colors )
COLORREF mswGetColor( wBool_t hasPalette, wDrawColor color )
{
- if ( hasPalette )
+ if ( hasPalette ) {
return PALETTEINDEX(color);
- else
- return RGB( colorPalette.palPalEntry[color].peRed, colorPalette.palPalEntry[color].peGreen, colorPalette.palPalEntry[color].peBlue );
+ } else {
+ return RGB( colorPalette.palPalEntry[color].peRed,
+ colorPalette.palPalEntry[color].peGreen,
+ colorPalette.palPalEntry[color].peBlue );
+ }
}
wDrawColor wDrawColorGray(
- int percent )
+ int percent )
{
int n;
n = (percent * NUM_GRAYS) / 100;
- if ( n <= 0 )
+ if ( n <= 0 ) {
return wDrawColorBlack;
- else if ( n > NUM_GRAYS )
+ } else if ( n > NUM_GRAYS ) {
return wDrawColorWhite;
- else {
+ } else {
n = (n*256)/NUM_GRAYS;
return wDrawFindColor( wRGB(n,n,n) );
}
}
wDrawColor wDrawFindColor(
- long rgb0 )
+ long rgb0 )
{
static long saved_rgb = wRGB(255,255,255);
static wDrawColor saved_color = 0;
int r0, g0, b0;
- if (rgb0 == saved_rgb)
+ if (rgb0 == saved_rgb) {
return saved_color;
+ }
r0 = (int)(rgb0>>16)&0xFF;
g0 = (int)(rgb0>>8)&0xFF;
b0 = (int)(rgb0)&0xFF;
@@ -210,7 +219,7 @@ wDrawColor wDrawFindColor(
long wDrawGetRGB(
- wDrawColor color )
+ wDrawColor color )
{
long rgb;
int r, g, b;
@@ -259,8 +268,8 @@ void mswPutCustomColors( void )
wBool_t wColorSelect(
- const char * title,
- wDrawColor * color )
+ const char * title,
+ wDrawColor * color )
{
long rgb;
@@ -285,18 +294,18 @@ wBool_t wColorSelect(
typedef struct {
- wDrawColor * valueP;
- wColorSelectButtonCallBack_p action;
- const char * labelStr;
- void * data;
- wDrawColor color;
- wButton_p button;
- wIcon_p bm;
- } colorData_t;
+ wDrawColor * valueP;
+ wColorSelectButtonCallBack_p action;
+ const char * labelStr;
+ void * data;
+ wDrawColor color;
+ wButton_p button;
+ wIcon_p bm;
+} colorData_t;
static void doColorButton(
- void * data )
+ void * data )
{
colorData_t * cd = (colorData_t*)data;
wDrawColor newColor;
@@ -305,30 +314,33 @@ static void doColorButton(
if (wColorSelect( cd->labelStr, &newColor )) {
cd->color = newColor;
wColorSelectButtonSetColor( cd->button, newColor );
- if (cd->valueP)
+ if (cd->valueP) {
*cd->valueP = newColor;
- if (cd->action)
+ }
+ if (cd->action) {
cd->action( cd->data, newColor );
+ }
}
}
wButton_p wColorSelectButtonCreate(
- wWin_p win,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- wWinPix_t width,
- wDrawColor * color,
- wColorSelectButtonCallBack_p action,
- void * data )
+ wWin_p win,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ wWinPix_t width,
+ wDrawColor * color,
+ wColorSelectButtonCallBack_p action,
+ void * data )
{
wButton_p bb;
wIcon_p bm;
colorData_t * cd;
- bm = wIconCreateBitMap( square10_width, square10_height, square10_bits, (color?*color:0) );
+ bm = wIconCreateBitMap( square10_width, square10_height, square10_bits,
+ (color?*color:0) );
cd = malloc( sizeof *cd );
cd->valueP = color;
cd->action = action;
@@ -336,17 +348,19 @@ wButton_p wColorSelectButtonCreate(
cd->labelStr = labelStr;
cd->color = (color?*color:0);
cd->bm = bm;
- bb = wButtonCreate( win, x, y, helpStr, (char*)bm, option|BO_ICON, width, doColorButton, cd );
+ bb = wButtonCreate( win, x, y, helpStr, (char*)bm, option|BO_ICON, width,
+ doColorButton, cd );
cd->button = bb;
- if ( labelStr )
- wControlSetLabel( (wControl_p)bb, labelStr );
+ if ( labelStr ) {
+ wControlSetLabel( (wControl_p)bb, labelStr );
+ }
return bb;
}
void wColorSelectButtonSetColor(
- wButton_p bb,
- wDrawColor color )
+ wButton_p bb,
+ wDrawColor color )
{
((colorData_t*)((wControl_p)bb)->data)->color = color;
wIconSetColor( ((colorData_t*)((wControl_p)bb)->data)->bm, color );
@@ -355,7 +369,7 @@ void wColorSelectButtonSetColor(
wDrawColor wColorSelectButtonGetColor(
- wButton_p bb )
+ wButton_p bb )
{
return ((colorData_t*)((wControl_p)bb)->data)->color;
}
diff --git a/app/wlib/mswlib/mswdraw.c b/app/wlib/mswlib/mswdraw.c
index be5bcd6..7ab38ac 100644
--- a/app/wlib/mswlib/mswdraw.c
+++ b/app/wlib/mswlib/mswdraw.c
@@ -17,13 +17,12 @@
*
* 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
+ */
#define _WIN32_WINNT 0x0600 /* for wheel mouse supposrt */
#include <windows.h>
#include <string.h>
-#include <malloc.h>
#include <stdlib.h>
#include <commdlg.h>
#include <math.h>
@@ -113,20 +112,15 @@ static wWinPix_t YDRAWPIX2WINPIX( wDraw_p d, wDrawPix_t y )
-/** @prefs [msw tweak] NoNegDrawArgs=1 Suppress drawing if x < 0 or y < 0 (-1 value causes preference read) */
-static long noNegDrawArgs = -1;
-/** @prefs [msw tweak] NoFlatEndCaps=1 Suppress EndCap Flat pen style */
-static long noFlatEndCaps = 0;
-
void wDrawDelayUpdate(
- wDraw_p d,
- wBool_t delay )
+ wDraw_p d,
+ wBool_t delay )
{
}
wBool_t wDrawSetTempMode(
- wDraw_p bd,
- wBool_t bTemp )
+ wDraw_p bd,
+ wBool_t bTemp )
{
wBool_t rc = bd->bTempMode;
bd->bTempMode = bTemp;
@@ -134,14 +128,14 @@ wBool_t wDrawSetTempMode(
// Main to Temp drawing
// Copy mainBM to tempBM
wDrawClearTemp( bd );
- if (bDrawMainBM) return rc;
+ if (bDrawMainBM) { return rc; }
HDC hDcOld = CreateCompatibleDC(bd->hDc);
HBITMAP hBmOld = SelectObject(hDcOld, bd->hBmMain);
SelectObject(bd->hDc, bd->hBmTemp);
BitBlt(bd->hDc, 0, 0,
- bd->w, bd->h,
- hDcOld, 0, 0,
- SRCCOPY);
+ bd->w, bd->h,
+ hDcOld, 0, 0,
+ SRCCOPY);
SelectObject(hDcOld, hBmOld);
DeleteDC(hDcOld);
bd->bCopiedMain = TRUE;
@@ -151,21 +145,20 @@ wBool_t wDrawSetTempMode(
/**
* Sets the proper pen and composition for the next drawing operation
- *
*
- * \param hDc IN device context
- * \param d IN ???
+ *
+ * \param d IN drawing context
* \param dw IN line width
* \param lt IN line type (dashed, solid, ...)
* \param dc IN color
- * \param dopt IN ????
+ * \param dopt IN drawing options
*/
static void setDrawMode(
- wDraw_p d,
- wDrawWidth dw,
- wDrawLineType_e lt,
- wDrawColor dc,
- wDrawOpts dopt )
+ wDraw_p d,
+ wDrawWidth dw,
+ wDrawLineType_e lt,
+ wDrawColor dc,
+ wDrawOpts dopt )
{
long centerPen[] = {40,10,20,10};
long phantomPen[] = {40,10,20,10,20,10};
@@ -178,10 +171,11 @@ static void setDrawMode(
static LOGBRUSH logBrush = { 0, 0, 0 };
DWORD penStyle;
- if ( wDrawDoTempDraw && (dopt & wDrawOptTemp) )
+ if ( wDrawDoTempDraw && (dopt & wDrawOptTemp) ) {
SelectObject(d->hDc, d->hBmTemp);
- else
+ } else {
SelectObject(d->hDc, d->hBmMain);
+ }
if ( d->hasPalette ) {
int winPaletteClock = mswGetPaletteClock();
@@ -192,12 +186,14 @@ static void setDrawMode(
}
SetROP2( d->hDc, R2_COPYPEN );
- if ( d == d0 && dw0 == dw && lt == lt0 && dc == dc0 )
+ if ( d == d0 && dw0 == dw && lt == lt0 && dc == dc0 ) {
return;
+ }
// make sure that the line width is at least 1!
- if( !dw )
+ if( !dw ) {
dw++;
+ }
d0 = d; dw0 = dw; lt0 = lt; dc0 = dc;
@@ -206,16 +202,14 @@ static void setDrawMode(
logBrush.lbColor = mswGetColor(d->hasPalette,dc);
if ( lt==wDrawLineSolid ) {
- penStyle = PS_GEOMETRIC | PS_SOLID;
- if ( noFlatEndCaps == FALSE )
- penStyle |= PS_ENDCAP_FLAT;
+ penStyle = PS_GEOMETRIC | PS_SOLID | PS_ENDCAP_FLAT;
} else if (lt == wDrawLineDot) {
penStyle = PS_GEOMETRIC | PS_DOT;
} else if (lt == wDrawLineDash) {
penStyle = PS_GEOMETRIC | PS_DASH;
} else if (lt == wDrawLineDashDot) {
penStyle = PS_GEOMETRIC | PS_DASHDOT;
- } else if ( lt == wDrawLineDashDotDot){
+ } else if ( lt == wDrawLineDashDotDot) {
penStyle = PS_GEOMETRIC | PS_DASHDOTDOT;
} else if ( lt == wDrawLineCenter) {
penStyle = PS_GEOMETRIC | PS_USERSTYLE;
@@ -225,47 +219,49 @@ static void setDrawMode(
penStyle = PS_GEOMETRIC | PS_USERSTYLE;
penarray = &phantomPen;
penarray_size = sizeof(phantomPen) / sizeof(long);
- } else
+ } else {
penStyle = PS_GEOMETRIC | PS_SOLID;
+ }
d->hPen = ExtCreatePen( penStyle,
- dw,
- &logBrush,
- penarray_size,
- penarray );
+ dw,
+ &logBrush,
+ penarray_size,
+ penarray );
hOldPen = SelectObject( d->hDc, d->hPen );
DeleteObject( hOldPen );
}
static void setDrawBrush(
- wDraw_p d,
- wDrawColor dc,
- wDrawOpts dopt )
+ wDraw_p d,
+ wDrawColor dc,
+ wDrawOpts dopt )
{
HBRUSH hOldBrush;
static wDraw_p d0;
static wDrawColor dc0 = -1;
setDrawMode( d, 0, wDrawLineSolid, dc, dopt );
- if ( d == d0 && dc == dc0 )
+ if ( d == d0 && dc == dc0 ) {
return;
+ }
d0 = d; dc0 = dc;
- d->hBrush = CreateSolidBrush(
- mswGetColor(d->hasPalette,dc) );
+ d->hBrush = CreateSolidBrush(
+ mswGetColor(d->hasPalette,dc) );
hOldBrush = SelectObject( d->hDc, d->hBrush );
DeleteObject( hOldBrush );
}
static void myInvalidateRect(
- wDraw_p d,
- RECT * prect )
+ wDraw_p d,
+ RECT * prect )
{
- if ( prect->top < 0 ) prect->top = 0;
- if ( prect->left < 0 ) prect->left = 0;
- if ( prect->bottom > d->h ) prect->bottom = d->h;
- if ( prect->right > d->w ) prect->right = d->w;
+ if ( prect->top < 0 ) { prect->top = 0; }
+ if ( prect->left < 0 ) { prect->left = 0; }
+ if ( prect->bottom > d->h ) { prect->bottom = d->h; }
+ if ( prect->right > d->w ) { prect->right = d->w; }
InvalidateRect( d->hWnd, prect, FALSE );
}
@@ -274,8 +270,8 @@ static int clip0( POINT * p0, POINT * p1, wDraw_p d )
{
long int x0=p0->x, y0=p0->y, x1=p1->x, y1=p1->y;
long int dx, dy;
- if ( x0<0 && x1<0 ) return 0;
- if ( y0<0 && y1<0 ) return 0;
+ if ( x0<0 && x1<0 ) { return 0; }
+ if ( y0<0 && y1<0 ) { return 0; }
dx=x1-x0;
dy=y1-y0;
if ( x0 < 0 ) {
@@ -283,7 +279,7 @@ static int clip0( POINT * p0, POINT * p1, wDraw_p d )
x0 = 0;
}
if ( y0 < 0 ) {
- if ( (x0 -= y0*dx/dy) < 0 ) return 0;
+ if ( (x0 -= y0*dx/dy) < 0 ) { return 0; }
y0 = 0;
}
if ( x1 < 0 ) {
@@ -291,7 +287,7 @@ static int clip0( POINT * p0, POINT * p1, wDraw_p d )
x1 = 0;
}
if ( y1 < 0 ) {
- if ( (x1 -= y1*dx/dy) < 0 ) return 0;
+ if ( (x1 -= y1*dx/dy) < 0 ) { return 0; }
y1 = 0;
}
p0->x = (int)x0;
@@ -303,15 +299,15 @@ static int clip0( POINT * p0, POINT * p1, wDraw_p d )
void wDrawLine(
- wDraw_p d,
- wDrawPix_t p0x,
- wDrawPix_t p0y,
- wDrawPix_t p1x,
- wDrawPix_t p1y,
- wDrawWidth dw,
- wDrawLineType_e lt,
- wDrawColor dc,
- wDrawOpts dopt )
+ wDraw_p d,
+ wDrawPix_t p0x,
+ wDrawPix_t p0y,
+ wDrawPix_t p1x,
+ wDrawPix_t p1y,
+ wDrawWidth dw,
+ wDrawLineType_e lt,
+ wDrawColor dc,
+ wDrawOpts dopt )
{
POINT p0, p1;
RECT rect;
@@ -320,29 +316,29 @@ void wDrawLine(
p0.y = YDRAWPIX2WINPIX(d,p0y);
p1.x = XDRAWPIX2WINPIX(d,p1x);
p1.y = YDRAWPIX2WINPIX(d,p1y);
- if ( noNegDrawArgs>0 && !clip0( &p0, &p1, d ) )
- return;
+
MoveTo( d->hDc, p0.x, p0.y );
LineTo( d->hDc, p1.x, p1.y );
if (d->hWnd) {
- if (dw==0)
+ if (dw==0) {
dw = 1;
+ }
dw++;
- if (p0.y<p1.y) {
- rect.top = p0.y-dw;
- rect.bottom = p1.y+dw;
- } else {
- rect.top = p1.y-dw;
- rect.bottom = p0.y+dw;
- }
- if (p0.x<p1.x) {
- rect.left = p0.x-dw;
- rect.right = p1.x+dw;
- } else {
- rect.left = p1.x-dw;
- rect.right = p0.x+dw;
- }
- myInvalidateRect( d, &rect );
+ if (p0.y<p1.y) {
+ rect.top = p0.y-dw;
+ rect.bottom = p1.y+dw;
+ } else {
+ rect.top = p1.y-dw;
+ rect.bottom = p0.y+dw;
+ }
+ if (p0.x<p1.x) {
+ rect.left = p0.x-dw;
+ rect.right = p1.x+dw;
+ } else {
+ rect.left = p1.x-dw;
+ rect.right = p0.x+dw;
+ }
+ myInvalidateRect( d, &rect );
}
}
@@ -354,16 +350,16 @@ static double d2r(double angle)
static double mswsin( double angle )
{
- while (angle < 0.0) angle += 360.0;
- while (angle >= 360.0) angle -= 360.0;
+ while (angle < 0.0) { angle += 360.0; }
+ while (angle >= 360.0) { angle -= 360.0; }
angle *= (M_PI*2.0)/360.0;
return sin( angle );
}
static double mswcos( double angle )
{
- while (angle < 0.0) angle += 360.0;
- while (angle >= 360.0) angle -= 360.0;
+ while (angle < 0.0) { angle += 360.0; }
+ while (angle >= 360.0) { angle -= 360.0; }
angle *= (M_PI*2.0)/360.0;
return cos( angle );
}
@@ -376,6 +372,13 @@ static double mswasin( double x, double h )
return angle;
}
+static double mswNormalizeAngle( double a )
+{
+ while (a<0.0) { a += 360.0; }
+ while (a>=360.0) { a -= 360.0; }
+ return a;
+}
+
/**
* Draw an arc around a specified center
*
@@ -392,26 +395,30 @@ static double mswasin( double x, double h )
void wDrawArc(
- wDraw_p d,
- wDrawPix_t px,
- wDrawPix_t py,
- wDrawPix_t r,
- double a0,
- double a1,
- int sizeCenter,
- wDrawWidth dw,
- wDrawLineType_e lt,
- wDrawColor dc,
- wDrawOpts dopt )
+ wDraw_p d,
+ wDrawPix_t px,
+ wDrawPix_t py,
+ wDrawPix_t r,
+ double a0,
+ double a1,
+ int sizeCenter,
+ wDrawWidth dw,
+ wDrawLineType_e lt,
+ wDrawColor dc,
+ wDrawOpts dopt )
{
int i, cnt;
POINT p0, p1, ps, pe, pp0, pp1, pp2, pc;
wDrawPix_t psx, psy, pex, pey;
- double len, aa, ai;
+ double aa, ai;
RECT rect;
int needMoveTo;
wBool_t fakeArc = FALSE;
+ // calculate the center coordinates
+ pc.x = XDRAWPIX2WINPIX( d, px );
+ pc.y = YDRAWPIX2WINPIX( d, py );
+
p0.x = XDRAWPIX2WINPIX(d,px-r);
p0.y = YDRAWPIX2WINPIX(d,py+r);
p1.x = XDRAWPIX2WINPIX(d,px+r);
@@ -431,30 +438,30 @@ void wDrawArc(
setDrawMode( d, dw, lt, dc, dopt );
- if (dw == 0)
+ if (dw == 0) {
dw = 1;
+ }
- /* Windows drawing will overshoot the end of the arc for large radius */
- if (r > 500) {
+ if ( r > 30000 || a1 < 1.0 ) {
/* The book says 32K but experience says otherwise */
fakeArc = TRUE;
}
- if ( noNegDrawArgs > 0 ) {
- if ( p0.x < 0 || p0.y < 0 || p1.x < 0 || p1.y < 0 )
- fakeArc = TRUE;
- }
+
+ // Starting point
+ psx = px + r * mswsin(a0);
+ psy = py + r * mswcos(a0);
+ pp0.x = XDRAWPIX2WINPIX( d, psx );
+ pp0.y = YDRAWPIX2WINPIX( d, psy );
+
if ( fakeArc ) {
cnt = (int)(a1 / 2);
- if ( cnt <= 0 ) cnt = 1;
- if ( cnt > 180 ) cnt = 180;
- // Convert a0 and a1 to radians here
+ if ( cnt <= 0 ) { cnt = 1; }
+ if ( cnt > 180 ) { cnt = 180; }
+
ai = d2r(a1) / cnt;
aa = d2r(a0);
- psx = px + r * sin(aa);
- psy = py + r * cos(aa);
- pp0.x = XDRAWPIX2WINPIX( d, psx );
- pp0.y = YDRAWPIX2WINPIX( d, psy );
needMoveTo = TRUE;
+
for ( i=0; i<cnt; i++ ) {
aa += ai;
psx = px + r * sin(aa);
@@ -473,53 +480,68 @@ void wDrawArc(
pp0.x = pp2.x; pp0.y = pp2.y;
}
} else {
- if ( a0 == 0.0 && a1 == 360.0 ) {
- Arc( d->hDc, p0.x, p1.y, p1.x, p0.y, ps.x, p0.y, pe.x, p1.y );
- Arc( d->hDc, p0.x, p1.y, p1.x, p0.y, ps.x, p1.y, pe.x, p0.y );
+ DWORD rr = XDRAWPIX2WINPIX( d, r );
+ SetArcDirection( d->hDc,AD_CLOCKWISE );
+
+ // Draw two arcs from the center to eliminate the odd pie-shaped end artifact
+ if ( dw > 2.0 ) {
+ double a2 = a1 / 2.0;
+ pp2.x = XDRAWPIX2WINPIX( d, px + r * mswsin(a0+a2) );
+ pp2.y = YDRAWPIX2WINPIX( d, py + r * mswcos(a0+a2) );
+
+ MoveTo( d->hDc, pp2.x, pp2.y );
+ AngleArc( d->hDc, pc.x, pc.y, rr, (float)mswNormalizeAngle(90 - (a0+a2)),
+ (float)(-a2) );
+ MoveTo( d->hDc, pp2.x, pp2.y );
+ AngleArc( d->hDc, pc.x, pc.y, rr, (float)mswNormalizeAngle(90 - (a0+a2)),
+ (float)(a2) );
} else {
- Arc( d->hDc, p0.x, p1.y, p1.x, p0.y, ps.x, ps.y, pe.x, pe.y );
+ MoveTo( d->hDc, pp0.x, pp0.y );
+ AngleArc( d->hDc, pc.x, pc.y, rr, (float)mswNormalizeAngle(90 - a0),
+ (float)(-a1) );
}
}
// should the center of the arc be drawn?
if( sizeCenter ) {
-
- // calculate the center coordinates
- pc.x = XDRAWPIX2WINPIX( d, px );
- pc.y = YDRAWPIX2WINPIX( d, py );
- // now draw the crosshair
- MoveTo( d->hDc, pc.x - CENTERMARK_LENGTH*sizeCenter, pc.y );
- LineTo( d->hDc, pc.x + CENTERMARK_LENGTH*sizeCenter, pc.y );
- MoveTo( d->hDc, pc.x, pc.y - CENTERMARK_LENGTH*sizeCenter );
- LineTo( d->hDc, pc.x, pc.y + CENTERMARK_LENGTH*sizeCenter );
-
- // invalidate the area of the crosshair
- rect.top = pc.y - CENTERMARK_LENGTH*sizeCenter - 1;
- rect.bottom = pc.y + CENTERMARK_LENGTH*sizeCenter + 1;
- rect.left = pc.x - CENTERMARK_LENGTH*sizeCenter - 1;
- rect.right = pc.x + CENTERMARK_LENGTH*sizeCenter + 1;
- myInvalidateRect( d, &rect );
+
+ // now draw the crosshair
+ MoveTo( d->hDc, pc.x - CENTERMARK_LENGTH*sizeCenter, pc.y );
+ LineTo( d->hDc, pc.x + CENTERMARK_LENGTH*sizeCenter, pc.y );
+ MoveTo( d->hDc, pc.x, pc.y - CENTERMARK_LENGTH*sizeCenter );
+ LineTo( d->hDc, pc.x, pc.y + CENTERMARK_LENGTH*sizeCenter );
+
+ // invalidate the area of the crosshair
+ rect.top = pc.y - CENTERMARK_LENGTH*sizeCenter - 1;
+ rect.bottom = pc.y + CENTERMARK_LENGTH*sizeCenter + 1;
+ rect.left = pc.x - CENTERMARK_LENGTH*sizeCenter - 1;
+ rect.right = pc.x + CENTERMARK_LENGTH*sizeCenter + 1;
+ myInvalidateRect( d, &rect );
}
if (d->hWnd) {
dw++;
a1 += a0;
- if (a1>360.0)
+ if (a1>360.0) {
rect.top = p0.y;
- else
+ } else {
rect.top = min(pe.y,ps.y);
- if (a1>(a0>180?360.0:0.0)+180)
+ }
+ if (a1>(a0>180?360.0:0.0)+180) {
rect.bottom = p1.y;
- else
+ } else {
rect.bottom = max(pe.y,ps.y);
- if (a1>(a0>270?360.0:0.0)+270)
+ }
+ if (a1>(a0>270?360.0:0.0)+270) {
rect.left = p0.x;
- else
+ } else {
rect.left = min(pe.x,ps.x);
- if (a1>(a0>90?360.0:0.0)+90)
+ }
+ if (a1>(a0>90?360.0:0.0)+90) {
rect.right = p1.x;
- else
+ } else {
rect.right = max(pe.x,ps.x);
+ }
rect.top -= dw;
rect.bottom += dw;
rect.left -= dw;
@@ -530,11 +552,11 @@ void wDrawArc(
}
void wDrawPoint(
- wDraw_p d,
- wDrawPix_t px,
- wDrawPix_t py,
- wDrawColor dc,
- wDrawOpts dopt )
+ wDraw_p d,
+ wDrawPix_t px,
+ wDrawPix_t py,
+ wDrawColor dc,
+ wDrawOpts dopt )
{
POINT p0;
RECT rect;
@@ -542,13 +564,16 @@ void wDrawPoint(
p0.x = XDRAWPIX2WINPIX(d,px);
p0.y = YDRAWPIX2WINPIX(d,py);
- if ( p0.x < 0 || p0.y < 0 )
+ if ( p0.x < 0 || p0.y < 0 ) {
return;
- if ( p0.x >= d->w || p0.y >= d->h )
+ }
+ if ( p0.x >= d->w || p0.y >= d->h ) {
return;
+ }
setDrawMode( d, 0, wDrawLineSolid, dc, dopt );
- SetPixel( d->hDc, p0.x, p0.y, mswGetColor(d->hasPalette,dc) /*colorPalette.palPalEntry[dc]*/ );
+ SetPixel( d->hDc, p0.x, p0.y, mswGetColor(d->hasPalette,
+ dc) /*colorPalette.palPalEntry[dc]*/ );
if (d->hWnd) {
rect.top = p0.y-1;
rect.bottom = p0.y+1;
@@ -568,126 +593,141 @@ void wDrawPoint(
static LOGFONT logFont = {
- /* Initial default values */
- -24, 0, /* H, W */
- 0, /* A */
- 0,
- FW_REGULAR,
- 0, 0, 0,/* I, U, SO */
- ANSI_CHARSET,
- 0, /* OP */
- 0, /* CP */
- 0, /* Q */
- 0, /* P&F */
- "Arial" };
+ /* Initial default values */
+ -24, 0, /* H, W */
+ 0, /* A */
+ 0,
+ FW_REGULAR,
+ 0, 0, 0,/* I, U, SO */
+ ANSI_CHARSET,
+ 0, /* OP */
+ 0, /* CP */
+ 0, /* Q */
+ 0, /* P&F */
+ "Arial"
+ };
static LOGFONT timesFont[2][2] = {
- { {
- /* Initial default values */
- 0, 0, /* H, W */
- 0, /* A */
- 0,
- FW_REGULAR,
- 0, 0, 0,/* I, U, SO */
- ANSI_CHARSET,
- 0, /* OP */
- 0, /* CP */
- 0, /* Q */
- 0, /* P&F */
- "Times" },
+ { {
+ /* Initial default values */
+ 0, 0, /* H, W */
+ 0, /* A */
+ 0,
+ FW_REGULAR,
+ 0, 0, 0,/* I, U, SO */
+ ANSI_CHARSET,
+ 0, /* OP */
+ 0, /* CP */
+ 0, /* Q */
+ 0, /* P&F */
+ "Times"
+ },
{
- /* Initial default values */
- 0, 0, /* H, W */
- 0, /* A */
- 0,
- FW_REGULAR,
- 1, 0, 0,/* I, U, SO */
- ANSI_CHARSET,
- 0, /* OP */
- 0, /* CP */
- 0, /* Q */
- 0, /* P&F */
- "Times" } },
- { {
- /* Initial default values */
- 0, 0, /* H, W */
- 0, /* A */
- 0,
- FW_BOLD,
- 0, 0, 0,/* I, U, SO */
- ANSI_CHARSET,
- 0, /* OP */
- 0, /* CP */
- 0, /* Q */
- 0, /* P&F */
- "Times" },
+ /* Initial default values */
+ 0, 0, /* H, W */
+ 0, /* A */
+ 0,
+ FW_REGULAR,
+ 1, 0, 0,/* I, U, SO */
+ ANSI_CHARSET,
+ 0, /* OP */
+ 0, /* CP */
+ 0, /* Q */
+ 0, /* P&F */
+ "Times"
+ }
+ },
+ { {
+ /* Initial default values */
+ 0, 0, /* H, W */
+ 0, /* A */
+ 0,
+ FW_BOLD,
+ 0, 0, 0,/* I, U, SO */
+ ANSI_CHARSET,
+ 0, /* OP */
+ 0, /* CP */
+ 0, /* Q */
+ 0, /* P&F */
+ "Times"
+ },
{
- /* Initial default values */
- 0, 0, /* H, W */
- 0, /* A */
- 0,
- FW_BOLD,
- 1, 0, 0,/* I, U, SO */
- ANSI_CHARSET,
- 0, /* OP */
- 0, /* CP */
- 0, /* Q */
- 0, /* P&F */
- "Times" } } };
+ /* Initial default values */
+ 0, 0, /* H, W */
+ 0, /* A */
+ 0,
+ FW_BOLD,
+ 1, 0, 0,/* I, U, SO */
+ ANSI_CHARSET,
+ 0, /* OP */
+ 0, /* CP */
+ 0, /* Q */
+ 0, /* P&F */
+ "Times"
+ }
+ }
+};
static LOGFONT helvFont[2][2] = {
- { {
- /* Initial default values */
- 0, 0, /* H, W */
- 0, /* A */
- 0,
- FW_REGULAR,
- 0, 0, 0,/* I, U, SO */
- ANSI_CHARSET,
- 0, /* OP */
- 0, /* CP */
- 0, /* Q */
- 0, /* P&F */
- "Arial" },
+ { {
+ /* Initial default values */
+ 0, 0, /* H, W */
+ 0, /* A */
+ 0,
+ FW_REGULAR,
+ 0, 0, 0,/* I, U, SO */
+ ANSI_CHARSET,
+ 0, /* OP */
+ 0, /* CP */
+ 0, /* Q */
+ 0, /* P&F */
+ "Arial"
+ },
{
- /* Initial default values */
- 0, 0, /* H, W */
- 0, /* A */
- 0,
- FW_REGULAR,
- 1, 0, 0,/* I, U, SO */
- ANSI_CHARSET,
- 0, /* OP */
- 0, /* CP */
- 0, /* Q */
- 0, /* P&F */
- "Arial" } },
- { {
- /* Initial default values */
- 0, 0, /* H, W */
- 0, /* A */
- 0,
- FW_BOLD,
- 0, 0, 0,/* I, U, SO */
- ANSI_CHARSET,
- 0, /* OP */
- 0, /* CP */
- 0, /* Q */
- 0, /* P&F */
- "Arial" },
+ /* Initial default values */
+ 0, 0, /* H, W */
+ 0, /* A */
+ 0,
+ FW_REGULAR,
+ 1, 0, 0,/* I, U, SO */
+ ANSI_CHARSET,
+ 0, /* OP */
+ 0, /* CP */
+ 0, /* Q */
+ 0, /* P&F */
+ "Arial"
+ }
+ },
+ { {
+ /* Initial default values */
+ 0, 0, /* H, W */
+ 0, /* A */
+ 0,
+ FW_BOLD,
+ 0, 0, 0,/* I, U, SO */
+ ANSI_CHARSET,
+ 0, /* OP */
+ 0, /* CP */
+ 0, /* Q */
+ 0, /* P&F */
+ "Arial"
+ },
{
- /* Initial default values */
- 0, 0, /* H, W */
- 0, /* A */
- 0,
- FW_BOLD,
- 1, 0, 0,/* I, U, SO */
- ANSI_CHARSET,
- 0, /* OP */
- 0, /* CP */
- 0, /* Q */
- 0, /* P&F */
- "Hevletica" } } };
+ /* Initial default values */
+ 0, 0, /* H, W */
+ 0, /* A */
+ 0,
+ FW_BOLD,
+ 1, 0, 0,/* I, U, SO */
+ ANSI_CHARSET,
+ 0, /* OP */
+ 0, /* CP */
+ 0, /* Q */
+ 0, /* P&F */
+ "Hevletica"
+ }
+ }
+};
void mswFontInit( void )
@@ -721,8 +761,9 @@ static void doChooseFont( void )
rc = ChooseFont( &chooseFont );
if (rc) {
fontSize = (wFontSize_t)(-logFont.lfHeight * 72) / 96.0 / fontFactor;
- if (fontSize < 1)
+ if (fontSize < 1) {
fontSize = 1;
+ }
wPrefSetString( "msw window font", "face", logFont.lfFaceName );
wPrefSetInteger( "msw window font", "size", logFont.lfHeight );
}
@@ -733,20 +774,21 @@ static int computeFontSize( wDraw_p d, double siz )
int ret;
siz = (siz * d->DPI) / 72.0;
ret = (int)(siz * fontFactor);
- if (ret < 1)
+ if (ret < 1) {
ret = 1;
+ }
return -ret;
}
void wDrawGetTextSize(
- wDrawPix_t *w,
- wDrawPix_t *h,
- wDrawPix_t *d,
- wDrawPix_t *a,
- wDraw_p bd,
- const char * text,
- wFont_p fp,
- double siz )
+ wDrawPix_t *w,
+ wDrawPix_t *h,
+ wDrawPix_t *d,
+ wDrawPix_t *a,
+ wDraw_p bd,
+ const char * text,
+ wFont_p fp,
+ double siz )
{
wWinPix_t x, y;
HFONT newFont, prevFont;
@@ -754,8 +796,9 @@ void wDrawGetTextSize(
int oldLfHeight;
TEXTMETRIC textMetric;
- if (fp == NULL)
+ if (fp == NULL) {
fp = &logFont;
+ }
fp->lfEscapement = 0;
oldLfHeight = fp->lfHeight;
fp->lfHeight = computeFontSize( bd, siz );
@@ -779,7 +822,7 @@ void wDrawGetTextSize(
}
/**
* Draw text
- *
+ *
* \param d device context
* \param px position x
* \param py position y
@@ -791,80 +834,74 @@ void wDrawGetTextSize(
* \param dopts drawing options
*/
void wDrawString(
- wDraw_p d,
- wDrawPix_t px,
- wDrawPix_t py,
- double angle,
- const char * text,
- wFont_p fp,
- double siz,
- wDrawColor dc,
- wDrawOpts dopts)
+ wDraw_p d,
+ wDrawPix_t px,
+ wDrawPix_t py,
+ double angle,
+ const char * text,
+ wFont_p fp,
+ double siz,
+ wDrawColor dc,
+ wDrawOpts dopts)
{
- int x, y;
- HFONT newFont, prevFont;
- DWORD extent;
- int w, h;
- RECT rect;
- int oldLfHeight;
-
- if (fp == NULL) {
- fp = &logFont;
- }
-
- oldLfHeight = fp->lfHeight;
- fp->lfEscapement = (int)(angle*10.0);
- fp->lfHeight = computeFontSize(d, siz);
- fp->lfWidth = 0;
- newFont = CreateFontIndirect(fp);
- x = XDRAWPIX2WINPIX(d,px) + (int)(mswsin(angle)*fp->lfHeight-0.5);
- y = YDRAWPIX2WINPIX(d,py) + (int)(mswcos(angle)*fp->lfHeight-0.5);
-
- if (noNegDrawArgs > 0 && (x < 0 || y < 0)) {
- DeleteObject(newFont);
- return;
- }
-
- setDrawMode( d, 0, wDrawLineSolid, dc, dopts );
- prevFont = SelectObject(d->hDc, newFont);
- SetBkMode(d->hDc, TRANSPARENT);
-
- if (dopts & wDrawOutlineFont) {
- HPEN oldPen;
- BeginPath(d->hDc);
- TextOut(d->hDc, x, y, text, (int)strlen(text));
- EndPath(d->hDc);
-
- // Now draw outline text
- oldPen = SelectObject(d->hDc,
- CreatePen(PS_SOLID, 1,
- mswGetColor(d->hasPalette, dc)));
- StrokePath(d->hDc);
- SelectObject(d->hDc, oldPen);
- } else {
- COLORREF old;
-
- old = SetTextColor(d->hDc, mswGetColor(d->hasPalette,
- dc));
- TextOut(d->hDc, x, y, text, (int)(strlen(text)));
- SetTextColor(d->hDc, old);
- }
-
- extent = GetTextExtent(d->hDc, CAST_AWAY_CONST text, (int)(strlen(text)));
- SelectObject(d->hDc, prevFont);
- w = LOWORD(extent);
- h = HIWORD(extent);
-
- if (d->hWnd) {
- rect.top = y - (w + h + 1);
- rect.bottom = y + (w + h + 1);
- rect.left = x - (w + h + 1);
- rect.right = x + (w + h + 1);
- myInvalidateRect(d, &rect);
- }
-
- DeleteObject(newFont);
- fp->lfHeight = oldLfHeight;
+ int x, y;
+ HFONT newFont, prevFont;
+ DWORD extent;
+ int w, h;
+ RECT rect;
+ int oldLfHeight;
+
+ if (fp == NULL) {
+ fp = &logFont;
+ }
+
+ oldLfHeight = fp->lfHeight;
+ fp->lfEscapement = (int)(angle*10.0);
+ fp->lfHeight = computeFontSize(d, siz);
+ fp->lfWidth = 0;
+ newFont = CreateFontIndirect(fp);
+ x = XDRAWPIX2WINPIX(d,px) + (int)(mswsin(angle)*fp->lfHeight-0.5);
+ y = YDRAWPIX2WINPIX(d,py) + (int)(mswcos(angle)*fp->lfHeight-0.5);
+
+ setDrawMode( d, 0, wDrawLineSolid, dc, dopts );
+ prevFont = SelectObject(d->hDc, newFont);
+ SetBkMode(d->hDc, TRANSPARENT);
+
+ if (dopts & wDrawOutlineFont) {
+ HPEN oldPen;
+ BeginPath(d->hDc);
+ TextOut(d->hDc, x, y, text, (int)strlen(text));
+ EndPath(d->hDc);
+
+ // Now draw outline text
+ oldPen = SelectObject(d->hDc,
+ CreatePen(PS_SOLID, 1,
+ mswGetColor(d->hasPalette, dc)));
+ StrokePath(d->hDc);
+ SelectObject(d->hDc, oldPen);
+ } else {
+ COLORREF old;
+
+ old = SetTextColor(d->hDc, mswGetColor(d->hasPalette, dc));
+ TextOut(d->hDc, x, y, text, (int)(strlen(text)));
+ SetTextColor(d->hDc, old);
+ }
+
+ extent = GetTextExtent(d->hDc, CAST_AWAY_CONST text, (int)(strlen(text)));
+ SelectObject(d->hDc, prevFont);
+ w = LOWORD(extent);
+ h = HIWORD(extent);
+
+ if (d->hWnd) {
+ rect.top = y - (w + h + 1);
+ rect.bottom = y + (w + h + 1);
+ rect.left = x - (w + h + 1);
+ rect.right = x + (w + h + 1);
+ myInvalidateRect(d, &rect);
+ }
+
+ DeleteObject(newFont);
+ fp->lfHeight = oldLfHeight;
}
static const char * wCurFont( void )
@@ -878,12 +915,13 @@ void wInitializeFonts()
wFont_p wStandardFont( int family, wBool_t bold, wBool_t italic )
{
- if (family == F_TIMES)
+ if (family == F_TIMES) {
return &timesFont[bold][italic];
- else if (family == F_HELV)
+ } else if (family == F_HELV) {
return &helvFont[bold][italic];
- else
+ } else {
return NULL;
+ }
}
void wSelectFont( const char * title )
@@ -913,23 +951,23 @@ void wSetSelectedFontSize(wFontSize_t size)
void wDrawFilledRectangle(
- wDraw_p d,
- wDrawPix_t px,
- wDrawPix_t py,
- wDrawPix_t sx,
- wDrawPix_t sy,
- wDrawColor color,
- wDrawOpts opts )
+ wDraw_p d,
+ wDrawPix_t px,
+ wDrawPix_t py,
+ wDrawPix_t sx,
+ wDrawPix_t sy,
+ wDrawColor color,
+ wDrawOpts opts )
{
int mode;
RECT rect;
- if (d == NULL)
+ if (d == NULL) {
return;
+ }
setDrawBrush( d, color, opts );
if (opts & wDrawOptTransparent) {
mode = R2_NOTXORPEN;
- }
- else {
+ } else {
mode = R2_COPYPEN;
}
SetROP2(d->hDc, mode);
@@ -938,19 +976,25 @@ void wDrawFilledRectangle(
rect.top = YDRAWPIX2WINPIX(d,py+sy);
rect.bottom = YDRAWPIX2WINPIX(d,py);
if ( rect.right < 0 ||
- rect.bottom < 0 )
+ rect.bottom < 0 ) {
return;
- if ( rect.left < 0 )
+ }
+ if ( rect.left < 0 ) {
rect.left = 0;
- if ( rect.top < 0 )
+ }
+ if ( rect.top < 0 ) {
rect.top = 0;
+ }
if ( rect.left > d->w ||
- rect.top > d->h )
+ rect.top > d->h ) {
return;
- if ( rect.right > d->w )
+ }
+ if ( rect.right > d->w ) {
rect.right = d->w;
- if ( rect.bottom > d->h )
+ }
+ if ( rect.bottom > d->h ) {
rect.bottom = d->h;
+ }
Rectangle( d->hDc, rect.left, rect.top, rect.right, rect.bottom );
if (d->hWnd) {
rect.top--;
@@ -962,7 +1006,7 @@ void wDrawFilledRectangle(
}
#ifdef DRAWFILLPOLYLOG
- static FILE * logF;
+static FILE * logF;
#endif
static dynArr_t wFillPoints_da;
@@ -983,34 +1027,34 @@ static dynArr_t wFillType_da;
*/
static void addPoint(
- wDraw_p d,
- int pk,
- coOrd * pp,
- BYTE type, RECT * pr)
+ wDraw_p d,
+ int pk,
+ coOrd * pp,
+ BYTE type, RECT * pr)
{
- POINT p;
- p.x = XDRAWPIX2WINPIX(d, pp->x);
- p.y = YDRAWPIX2WINPIX(d, pp->y);
+ POINT p;
+ p.x = XDRAWPIX2WINPIX(d, pp->x);
+ p.y = YDRAWPIX2WINPIX(d, pp->y);
#ifdef DRAWFILLPOLYLOG
- fprintf(logF, " q[%d] = {%d,%d}\n", pk, p.x, p.y);
+ fprintf(logF, " q[%d] = {%d,%d}\n", pk, p.x, p.y);
#endif
- DYNARR_N(POINT, wFillPoints_da, pk) = p;
- DYNARR_N(BYTE, wFillType_da, pk) = type;
-
- if (p.x < pr->left) {
- pr->left = p.x;
- }
- if (p.x > pr->right) {
- pr->right = p.x;
- }
- if (p.y < pr->top) {
- pr->top = p.y;
- }
- if (p.y > pr->bottom) {
- pr->bottom = p.y;
- }
+ DYNARR_N(POINT, wFillPoints_da, pk) = p;
+ DYNARR_N(BYTE, wFillType_da, pk) = type;
+
+ if (p.x < pr->left) {
+ pr->left = p.x;
+ }
+ if (p.x > pr->right) {
+ pr->right = p.x;
+ }
+ if (p.y < pr->top) {
+ pr->top = p.y;
+ }
+ if (p.y > pr->bottom) {
+ pr->bottom = p.y;
+ }
}
/**
@@ -1030,208 +1074,190 @@ static void addPoint(
*/
void wDrawPolygon(
- wDraw_p d,
- wDrawPix_t node[][2],
- wPolyLine_e type[],
- wIndex_t cnt,
- wDrawColor color,
- wDrawWidth dw,
- wDrawLineType_e lt,
- wDrawOpts opts,
- int fill,
- int open)
+ wDraw_p d,
+ wDrawPix_t node[][2],
+ wPolyLine_e type[],
+ wIndex_t cnt,
+ wDrawColor color,
+ wDrawWidth dw,
+ wDrawLineType_e lt,
+ wDrawOpts opts,
+ int fill,
+ int open)
{
- RECT rect;
- int i, prevNode, nextNode;
- int pointCount = 0;
- coOrd endPoint0, endPoint1, controlPoint0, controlPoint1;
- coOrd point, startingPoint;
- BOOL rc;
- int closed = 0;
-
- if (d == NULL) {
- return;
- }
-
- // make sure the array for the points is large enough
- // worst case are rounded corners that require 4 points
- DYNARR_RESET(POINT,wFillPoints_da);
- DYNARR_SET(POINT,wFillPoints_da,(cnt + 1) * 4);
- DYNARR_RESET(BYTE,wFillType_da);
- DYNARR_SET(POINT,wFillType_da, (cnt + 1) * 4);
-
- BeginPath(d->hDc);
-
- if (fill) {
+ RECT rect;
+ int i, prevNode, nextNode;
+ int pointCount = 0;
+ coOrd endPoint0, endPoint1, controlPoint0, controlPoint1;
+ coOrd point, startingPoint;
+ BOOL rc;
+ int closed = 0;
+
+ if (d == NULL) {
+ return;
+ }
+
+ // make sure the array for the points is large enough
+ // worst case are rounded corners that require 4 points
+ DYNARR_RESET(POINT,wFillPoints_da);
+ DYNARR_SET(POINT,wFillPoints_da,(cnt + 1) * 4);
+ DYNARR_RESET(BYTE,wFillType_da);
+ DYNARR_SET(POINT,wFillType_da, (cnt + 1) * 4);
+
+ BeginPath(d->hDc);
+
+ if (fill) {
int mode;
- setDrawBrush(d, color, opts);
+ setDrawBrush(d, color, opts);
if (opts & wDrawOptTransparent) {
mode = R2_NOTXORPEN;
- }
- else {
+ } else {
mode = R2_COPYPEN;
}
SetROP2(d->hDc, mode);
- } else {
- setDrawMode(d, dw, lt, color, opts);
- }
+ } else {
+ setDrawMode(d, dw, lt, color, opts);
+ }
- rect.left = rect.right = XDRAWPIX2WINPIX(d,node[cnt-1][0]-1);
- rect.top = rect.bottom = YDRAWPIX2WINPIX(d,node[cnt-1][1]+1);
+ rect.left = rect.right = XDRAWPIX2WINPIX(d,node[cnt-1][0]-1);
+ rect.top = rect.bottom = YDRAWPIX2WINPIX(d,node[cnt-1][1]+1);
#ifdef DRAWFILLPOLYLOG
- logF = fopen("log.txt", "a");
- fprintf(logF, "\np[%d] = {%d,%d}\n", cnt-1, node[0][0], node[0][1]);
+ logF = fopen("log.txt", "a");
+ fprintf(logF, "\np[%d] = {%d,%d}\n", cnt-1, node[0][0], node[0][1]);
#endif
- for (i=0; i<cnt; i++) {
- wPolyLine_e type1;
- point.x = node[i][0];
- point.y = node[i][1];
- if (type != NULL)
+ for (i=0; i<cnt; i++) {
+ wPolyLine_e type1;
+ point.x = node[i][0];
+ point.y = node[i][1];
+ if (type != NULL) {
type1 = type[i];
- else
+ } else {
type1 = wPolyLineStraight;
+ }
- if (type1 == wPolyLineRound || type1 == wPolyLineSmooth) {
- prevNode = (i == 0) ? cnt - 1 : i - 1;
- nextNode = (i == cnt - 1) ? 0 : i + 1;
-
- // calculate distance to neighboring nodes
- int prevXDistance = (wWinPix_t)(node[i][0] - node[prevNode][0]);
- int prevYDistance = (wWinPix_t)(node[i][1] - node[prevNode][1]);
- int nextXDistance = (wWinPix_t)(node[nextNode][0]-node[i][0]);
- int nextYDistance = (wWinPix_t)(node[nextNode][1]-node[i][1]);
-
- // distance from node to endpoints of curve is half the line length
- endPoint0.x = (prevXDistance/2)+node[prevNode][0];
- endPoint0.y = (prevYDistance/2)+node[prevNode][1];
- endPoint1.x = (nextXDistance/2)+node[i][0];
- endPoint1.y = (nextYDistance/2)+node[i][1];
-
- if (type1 == wPolyLineRound) {
- double distNext = (nextXDistance*nextXDistance + nextYDistance * nextYDistance);
- double distPrev = (prevXDistance*prevXDistance + prevYDistance * prevYDistance);
- // but should be half of the shortest line length (equidistant from node) for round
- if ((distPrev > 0) && (distNext > 0)) {
- double ratio = sqrt(distPrev / distNext);
- if (distPrev < distNext) {
- endPoint1.x = ((nextXDistance*ratio) / 2) + node[i][0];
- endPoint1.y = ((nextYDistance*ratio) / 2) + node[i][1];
- } else {
- endPoint0.x = node[i][0] - (prevXDistance / (2 * ratio));
- endPoint0.y = node[i][1] - (prevYDistance / (2 * ratio));
- }
- }
- // experience says that the best look is achieved if the
- // control points are in the middle between end point and node
- controlPoint0.x = (node[i][0] - endPoint0.x) / 2 + endPoint0.x;
- controlPoint0.y = (node[i][1] - endPoint0.y) / 2 + endPoint0.y;
-
- controlPoint1.x = (endPoint1.x - node[i][0]) / 2 + node[i][0];
- controlPoint1.y = (endPoint1.y - node[i][1]) / 2 + node[i][1];
- } else {
- controlPoint0 = point;
- controlPoint1 = point;
- }
- }
-
- if (i==0) {
- if (type1 == wPolyLineStraight || open) {
- // for straight lines or open shapes use the starting point as passed
- addPoint(d, pointCount++, &point, PT_MOVETO, &rect);
- startingPoint = point;
- } else {
- // for Bezier begin with the calculated starting point
- addPoint(d, pointCount++, &endPoint0, PT_MOVETO, &rect);
- addPoint(d, pointCount++, &controlPoint0, PT_BEZIERTO, &rect);
- addPoint(d, pointCount++, &controlPoint1, PT_BEZIERTO, &rect);
- addPoint(d, pointCount++, &endPoint1, PT_BEZIERTO, &rect);
- startingPoint = endPoint0;
- }
- } else {
- if (type1 == wPolyLineStraight || (open && (i==cnt-1))) {
- addPoint(d, pointCount++, &point, PT_LINETO, &rect);
- } else {
- if (i==cnt-1 && !open) {
- closed = TRUE;
- }
- addPoint(d, pointCount++, &endPoint0, PT_LINETO, &rect);
- addPoint(d, pointCount++, &controlPoint0, PT_BEZIERTO, &rect);
- addPoint(d, pointCount++, &controlPoint1, PT_BEZIERTO, &rect);
- addPoint(d, pointCount++, &endPoint1,
- PT_BEZIERTO | (closed ? PT_CLOSEFIGURE : 0), &rect);
- }
- }
- }
-
- if (!open && !closed) {
- addPoint(d, pointCount++, &startingPoint, PT_LINETO, &rect);
- }
- rc = PolyDraw(d->hDc, wFillPoints_da.ptr, wFillType_da.ptr, pointCount);
-
- EndPath(d->hDc);
-
- if (fill && !open) {
- FillPath(d->hDc);
- } else {
- StrokePath(d->hDc);
- }
-
- if (d->hWnd) {
- rect.top--;
- rect.left--;
- rect.bottom++;
- rect.right++;
- myInvalidateRect(d, &rect);
- }
+ if (type1 == wPolyLineRound || type1 == wPolyLineSmooth) {
+ prevNode = (i == 0) ? cnt - 1 : i - 1;
+ nextNode = (i == cnt - 1) ? 0 : i + 1;
+
+ // calculate distance to neighboring nodes
+ int prevXDistance = (wWinPix_t)(node[i][0] - node[prevNode][0]);
+ int prevYDistance = (wWinPix_t)(node[i][1] - node[prevNode][1]);
+ int nextXDistance = (wWinPix_t)(node[nextNode][0]-node[i][0]);
+ int nextYDistance = (wWinPix_t)(node[nextNode][1]-node[i][1]);
+
+ // distance from node to endpoints of curve is half the line length
+ endPoint0.x = (prevXDistance/2)+node[prevNode][0];
+ endPoint0.y = (prevYDistance/2)+node[prevNode][1];
+ endPoint1.x = (nextXDistance/2)+node[i][0];
+ endPoint1.y = (nextYDistance/2)+node[i][1];
+
+ if (type1 == wPolyLineRound) {
+ double distNext = (nextXDistance*nextXDistance + nextYDistance * nextYDistance);
+ double distPrev = (prevXDistance*prevXDistance + prevYDistance * prevYDistance);
+ // but should be half of the shortest line length (equidistant from node) for round
+ if ((distPrev > 0) && (distNext > 0)) {
+ double ratio = sqrt(distPrev / distNext);
+ if (distPrev < distNext) {
+ endPoint1.x = ((nextXDistance*ratio) / 2) + node[i][0];
+ endPoint1.y = ((nextYDistance*ratio) / 2) + node[i][1];
+ } else {
+ endPoint0.x = node[i][0] - (prevXDistance / (2 * ratio));
+ endPoint0.y = node[i][1] - (prevYDistance / (2 * ratio));
+ }
+ }
+ // experience says that the best look is achieved if the
+ // control points are in the middle between end point and node
+ controlPoint0.x = (node[i][0] - endPoint0.x) / 2 + endPoint0.x;
+ controlPoint0.y = (node[i][1] - endPoint0.y) / 2 + endPoint0.y;
+
+ controlPoint1.x = (endPoint1.x - node[i][0]) / 2 + node[i][0];
+ controlPoint1.y = (endPoint1.y - node[i][1]) / 2 + node[i][1];
+ } else {
+ controlPoint0 = point;
+ controlPoint1 = point;
+ }
+ }
+
+ if (i==0) {
+ if (type1 == wPolyLineStraight || open) {
+ // for straight lines or open shapes use the starting point as passed
+ addPoint(d, pointCount++, &point, PT_MOVETO, &rect);
+ startingPoint = point;
+ } else {
+ // for Bezier begin with the calculated starting point
+ addPoint(d, pointCount++, &endPoint0, PT_MOVETO, &rect);
+ addPoint(d, pointCount++, &controlPoint0, PT_BEZIERTO, &rect);
+ addPoint(d, pointCount++, &controlPoint1, PT_BEZIERTO, &rect);
+ addPoint(d, pointCount++, &endPoint1, PT_BEZIERTO, &rect);
+ startingPoint = endPoint0;
+ }
+ } else {
+ if (type1 == wPolyLineStraight || (open && (i==cnt-1))) {
+ addPoint(d, pointCount++, &point, PT_LINETO, &rect);
+ } else {
+ if (i==cnt-1 && !open) {
+ closed = TRUE;
+ }
+ addPoint(d, pointCount++, &endPoint0, PT_LINETO, &rect);
+ addPoint(d, pointCount++, &controlPoint0, PT_BEZIERTO, &rect);
+ addPoint(d, pointCount++, &controlPoint1, PT_BEZIERTO, &rect);
+ addPoint(d, pointCount++, &endPoint1,
+ PT_BEZIERTO | (closed ? PT_CLOSEFIGURE : 0), &rect);
+ }
+ }
+ }
+
+ if (!open && !closed) {
+ addPoint(d, pointCount++, &startingPoint, PT_LINETO, &rect);
+ }
+ rc = PolyDraw(d->hDc, wFillPoints_da.ptr, wFillType_da.ptr, pointCount);
+
+ EndPath(d->hDc);
+
+ if (fill && !open) {
+ FillPath(d->hDc);
+ } else {
+ StrokePath(d->hDc);
+ }
+
+ if (d->hWnd) {
+ rect.top--;
+ rect.left--;
+ rect.bottom++;
+ rect.right++;
+ myInvalidateRect(d, &rect);
+ }
}
#define MAX_FILLCIRCLE_POINTS (30)
void wDrawFilledCircle(
- wDraw_p d,
- wDrawPix_t x,
- wDrawPix_t y,
- wDrawPix_t r,
- wDrawColor color,
- wDrawOpts opts )
+ wDraw_p d,
+ wDrawPix_t x,
+ wDrawPix_t y,
+ wDrawPix_t r,
+ wDrawColor color,
+ wDrawOpts opts )
{
POINT p0, p1;
RECT rect;
static wDrawPix_t circlePts[MAX_FILLCIRCLE_POINTS][2];
- int inx, cnt;
- double dang;
p0.x = XDRAWPIX2WINPIX(d,x-r);
p0.y = YDRAWPIX2WINPIX(d,y+r);
p1.x = XDRAWPIX2WINPIX(d,x+r);
p1.y = YDRAWPIX2WINPIX(d,y-r);
-
- setDrawBrush( d, color, opts );
- if ( noNegDrawArgs > 0 && ( p0.x < 0 || p0.y < 0 ) ) {
- if ( r > MAX_FILLCIRCLE_POINTS )
- cnt = MAX_FILLCIRCLE_POINTS;
- else if ( r > 8 )
- cnt = XDRAWPIX2WINPIX(d,r);
- else
- cnt = 8;
- dang = 360.0/cnt;
- for ( inx=0; inx<cnt; inx++ ) {
- circlePts[inx][0] = x + (int)(r * mswcos( inx*dang ) + 0.5 );
- circlePts[inx][1] = y + (int)(r * mswsin( inx*dang ) + 0.5 );
- }
- //wDrawFilledPolygon( d, circlePts, NULL, cnt, color, opts );
- wDrawPolygon(d, circlePts, NULL, cnt, color, 1, wDrawLineSolid,opts, TRUE, FALSE );
- } else {
- Ellipse( d->hDc, p0.x, p0.y, p1.x, p1.y );
- if (d->hWnd) {
- rect.top = p0.y;
- rect.bottom = p1.y;
- rect.left = p0.x;
- rect.right = p1.x;
- myInvalidateRect( d, &rect );
- }
+
+ setDrawBrush( d, color, opts );
+ Ellipse( d->hDc, p0.x, p0.y, p1.x, p1.y );
+ if (d->hWnd) {
+ rect.top = p0.y;
+ rect.bottom = p1.y;
+ rect.left = p0.x;
+ rect.right = p1.x;
+ myInvalidateRect( d, &rect );
}
}
@@ -1245,22 +1271,23 @@ void wDrawFilledCircle(
void wDrawSaveImage(
- wDraw_p bd )
+ wDraw_p bd )
{
- if ( bd->hBmBackup ) {
+ if ( bd->hBmBackup ) {
SelectObject( bd->hDcBackup, bd->hBmBackupOld );
DeleteObject( bd->hBmBackup );
bd->hBmBackup = (HBITMAP)0;
}
- if ( bd->hDcBackup == (HDC)0 )
- bd->hDcBackup = CreateCompatibleDC( bd->hDc );
+ if ( bd->hDcBackup == (HDC)0 ) {
+ bd->hDcBackup = CreateCompatibleDC( bd->hDc );
+ }
bd->hBmBackup = CreateCompatibleBitmap( bd->hDc, bd->w, bd->h );
bd->hBmBackupOld = SelectObject( bd->hDcBackup, bd->hBmBackup );
BitBlt( bd->hDcBackup, 0, 0, bd->w, bd->h, bd->hDc, 0, 0, SRCCOPY );
}
void wDrawRestoreImage(
- wDraw_p bd )
+ wDraw_p bd )
{
if ( bd->hBmBackup == (HBITMAP)0 ) {
mswFail( "wDrawRestoreImage: hBmBackup == 0" );
@@ -1296,14 +1323,14 @@ void wDrawClear( wDraw_p d )
void wDrawSetSize(
- wDraw_p d,
- wWinPix_t width,
- wWinPix_t height, void * redraw)
+ wDraw_p d,
+ wWinPix_t width,
+ wWinPix_t height, void * redraw)
{
d->w = width;
d->h = height;
if (!SetWindowPos( d->hWnd, HWND_TOP, 0, 0,
- d->w, d->h, SWP_NOMOVE|SWP_NOZORDER)) {
+ d->w, d->h, SWP_NOMOVE|SWP_NOZORDER)) {
mswFail("wDrawSetSize: SetWindowPos");
}
/*wRedraw( d );*/
@@ -1311,9 +1338,9 @@ void wDrawSetSize(
void wDrawGetSize(
- wDraw_p d,
- wWinPix_t * width,
- wWinPix_t * height )
+ wDraw_p d,
+ wWinPix_t * width,
+ wWinPix_t * height )
{
*width = d->w-2;
*height = d->h-2;
@@ -1337,11 +1364,11 @@ double wDrawGetMaxRadius( wDraw_p d )
}
void wDrawClip(
- wDraw_p d,
- wDrawPix_t x,
- wDrawPix_t y,
- wDrawPix_t w,
- wDrawPix_t h )
+ wDraw_p d,
+ wDrawPix_t x,
+ wDrawPix_t y,
+ wDrawPix_t w,
+ wDrawPix_t h )
{
wWinPix_t ix0, iy0, ix1, iy1;
HRGN hRgnClip;
@@ -1359,9 +1386,96 @@ void wDrawClip(
void wRedraw( wDraw_p d )
{
wDrawClear( d );
- if (d->drawRepaint)
+ if (d->drawRepaint) {
d->drawRepaint( d, d->data, 0, 0 );
+ }
}
+
+/*
+ *****************************************************************************
+ *
+ * Cursor handling
+ *
+ *****************************************************************************
+ */
+
+
+extern long dontHideCursor;
+static wCursor_t curCursor = wCursorNormal;
+
+void DoSetCursor()
+{
+ switch (curCursor) {
+ case wCursorNormal:
+ default:
+ SetCursor(LoadCursor(NULL, IDC_ARROW));
+ break;
+
+ case wCursorWait:
+ SetCursor(LoadCursor(NULL, IDC_WAIT));
+ break;
+
+ case wCursorCross:
+ SetCursor(LoadCursor(NULL, IDC_CROSS));
+ break;
+
+ case wCursorIBeam:
+ SetCursor(LoadCursor(NULL, IDC_IBEAM));
+ break;
+
+ case wCursorQuestion:
+ SetCursor(LoadCursor(NULL, IDC_HELP));
+ break;
+
+ case wCursorHand:
+ SetCursor(LoadCursor(NULL, IDC_HAND));
+ break;
+
+ case wCursorNo:
+ SetCursor(LoadCursor(NULL, IDC_NO));
+ break;
+
+ case wCursorSizeAll:
+ SetCursor(LoadCursor(NULL, IDC_SIZEALL));
+ break;
+
+ case wCursorSizeNESW:
+ SetCursor(LoadCursor(NULL, IDC_SIZENESW));
+ break;
+
+ case wCursorSizeNWSE:
+ SetCursor(LoadCursor(NULL, IDC_SIZENWSE));
+ break;
+
+ case wCursorSizeNS:
+ SetCursor(LoadCursor(NULL, IDC_SIZENS));
+ break;
+
+ case wCursorSizeWE:
+ SetCursor(LoadCursor(NULL, IDC_SIZEWE));
+ break;
+
+ case wCursorAppStart:
+ SetCursor(LoadCursor(NULL, IDC_APPSTARTING));
+ break;
+
+ case wCursorNone:
+ if (!dontHideCursor) {
+ SetCursor(NULL);
+ }
+ break;
+ }
+
+}
+
+void wSetCursor(wDraw_p win,
+ wCursor_t cursor)
+{
+ curCursor = cursor;
+ DoSetCursor();
+}
+
+
/*
*****************************************************************************
@@ -1372,27 +1486,27 @@ void wRedraw( wDraw_p d )
*/
struct wDrawBitMap_t {
- wDrawBitMap_p next;
- wDrawPix_t x;
- wDrawPix_t y;
- wDrawPix_t w;
- wDrawPix_t h;
- char * bmx;
- wDrawColor color;
- HBITMAP bm;
- };
+ wDrawBitMap_p next;
+ wDrawPix_t x;
+ wDrawPix_t y;
+ wDrawPix_t w;
+ wDrawPix_t h;
+ char * bmx;
+ wDrawColor color;
+ HBITMAP bm;
+};
static wDrawBitMap_p bmRoot = NULL;
extern wDrawColor drawColorWhite;
extern wDrawColor drawColorBlack;
void wDrawBitMap(
- wDraw_p d,
- wDrawBitMap_p bm,
- wDrawPix_t px,
- wDrawPix_t py,
- wDrawColor dc,
- wDrawOpts dopt )
+ wDraw_p d,
+ wDrawBitMap_p bm,
+ wDrawPix_t px,
+ wDrawPix_t py,
+ wDrawColor dc,
+ wDrawOpts dopt )
{
HDC bmDc;
HBITMAP oldBm;
@@ -1403,8 +1517,9 @@ void wDrawBitMap(
x0 = XDRAWPIX2WINPIX(d,px-bm->x);
y0 = YDRAWPIX2WINPIX(d,py-bm->y+bm->h);
#ifdef LATER
- if ( noNegDrawArgs > 0 && ( x0 < 0 || y0 < 0 ) )
+ if ( noNegDrawArgs > 0 && ( x0 < 0 || y0 < 0 ) ) {
return;
+ }
#endif
if (dc == drawColorWhite) {
mode = clrOp;
@@ -1414,10 +1529,12 @@ void wDrawBitMap(
}
if ( bm->color != dc ) {
- if ( bm->bm )
+ if ( bm->bm ) {
DeleteObject( bm->bm );
- bm->bm = mswCreateBitMap( mswGetColor(d->hasPalette,dc) /*colorPalette.palPalEntry[dc]*/, RGB( 255, 255, 255 ),
- RGB( 255, 255, 255 ), (wWinPix_t)bm->w, (wWinPix_t)bm->h, bm->bmx );
+ }
+ bm->bm = mswCreateBitMap( mswGetColor(d->hasPalette,
+ dc) /*colorPalette.palPalEntry[dc]*/, RGB( 255, 255, 255 ),
+ RGB( 255, 255, 255 ), (wWinPix_t)bm->w, (wWinPix_t)bm->h, bm->bmx );
bm->color = dc;
}
@@ -1428,22 +1545,22 @@ void wDrawBitMap(
SelectObject( bmDc, oldBm );
DeleteDC( bmDc );
if (d->hWnd) {
- rect.top = y0-1;
- rect.bottom = rect.top+ (wWinPix_t)bm->h+1;
- rect.left = x0-1;
- rect.right = rect.left+ (wWinPix_t)bm->w+1;
- myInvalidateRect( d, &rect );
+ rect.top = y0-1;
+ rect.bottom = rect.top+ (wWinPix_t)bm->h+1;
+ rect.left = x0-1;
+ rect.right = rect.left+ (wWinPix_t)bm->w+1;
+ myInvalidateRect( d, &rect );
}
}
wDrawBitMap_p wDrawBitMapCreate(
- wDraw_p d,
- int w,
- int h,
- int x,
- int y,
- const unsigned char * bits )
+ wDraw_p d,
+ int w,
+ int h,
+ int x,
+ int y,
+ const unsigned char * bits )
{
wDrawBitMap_p bm;
int bmSize = ((w+7)/8) * h;
@@ -1478,10 +1595,10 @@ wDrawBitMap_p wDrawBitMapCreate(
static int doSetFocus = 1;
LRESULT FAR PASCAL XEXPORT mswDrawPush(
- HWND hWnd,
- UINT message,
- WPARAM wParam,
- LPARAM lParam )
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
{
wIndex_t inx = (wIndex_t)GetWindowLongPtr( hWnd, GWL_ID );
wDraw_p b;
@@ -1505,7 +1622,7 @@ LRESULT FAR PASCAL XEXPORT mswDrawPush(
b->hBmTemp = 0;
b->hBmOld = 0;
} else {
- b->hDc = CreateCompatibleDC( hDc );
+ b->hDc = CreateCompatibleDC( hDc );
b->hBmMain = CreateCompatibleBitmap( hDc, b->w, b->h );
b->hBmTemp = CreateCompatibleBitmap( hDc, b->w, b->h );
b->hBmOld = SelectObject( b->hDc, b->hBmMain );
@@ -1538,68 +1655,84 @@ LRESULT FAR PASCAL XEXPORT mswDrawPush(
if (b->hWnd) {
if ( b->option & BD_DIRECT ) {
} else {
- hDc = GetDC( b->hWnd );
+ hDc = GetDC( b->hWnd );
//- DeleteObject( b->hBmOld );
- DeleteObject( b->hBmMain );
- DeleteObject( b->hBmTemp );
- b->hBmMain = CreateCompatibleBitmap( hDc, b->w, b->h );
- b->hBmTemp = CreateCompatibleBitmap( hDc, b->w, b->h );
+ DeleteObject( b->hBmMain );
+ DeleteObject( b->hBmTemp );
+ b->hBmMain = CreateCompatibleBitmap( hDc, b->w, b->h );
+ b->hBmTemp = CreateCompatibleBitmap( hDc, b->w, b->h );
//- b->hBmOld = SelectObject( b->hDc, b->hBmMain );
- ReleaseDC( b->hWnd, hDc );
- SetROP2( b->hDc, R2_WHITE );
- Rectangle( b->hDc, 0, 0, b->w, b->h );
+ ReleaseDC( b->hWnd, hDc );
+ SetROP2( b->hDc, R2_WHITE );
+ Rectangle( b->hDc, 0, 0, b->w, b->h );
}
}
/*if (b->drawResize)
b->drawResize( b, b->size );*/
- if (b->drawRepaint)
+ if (b->drawRepaint) {
b->drawRepaint( b, b->data, 0, 0 );
+ }
return (LRESULT)0;
case WM_MOUSEMOVE:
activeWnd = GetActiveWindow();
focusWnd = GetFocus();
if (focusWnd != hWnd) {
b = (wDraw_p)mswMapIndex( inx );
- if (!b)
+ if (!b) {
break;
- if ( !((wControl_p)b->parent) )
+ }
+ if ( !((wControl_p)b->parent) ) {
break;
- if ( ((wControl_p)b->parent)->hWnd != activeWnd )
+ }
+ if ( ((wControl_p)b->parent)->hWnd != activeWnd ) {
break;
+ }
}
case WM_LBUTTONDOWN:
case WM_LBUTTONUP:
case WM_RBUTTONDOWN:
case WM_RBUTTONUP:
case WM_LBUTTONDBLCLK:
- if (message == WM_LBUTTONDOWN)
+ case WM_MBUTTONUP:
+ case WM_MBUTTONDOWN:
+ if (message == WM_LBUTTONDOWN) {
action = wActionLDown;
- else if (message == WM_RBUTTONDOWN)
+ } else if (message == WM_RBUTTONDOWN) {
action = wActionRDown;
- else if (message == WM_LBUTTONUP)
+ } else if (message == WM_LBUTTONUP) {
action = wActionLUp;
- else if (message == WM_RBUTTONUP)
+ } else if (message == WM_RBUTTONUP) {
action = wActionRUp;
- else if (message == WM_LBUTTONDBLCLK)
+ } else if (message == WM_MBUTTONUP) {
+ action = wActionMUp;
+ } else if (message == WM_MBUTTONDOWN) {
+ action = wActionMDown;
+ } else if (message == WM_LBUTTONDBLCLK) {
action = wActionLDownDouble;
- else {
- if ( (wParam & MK_LBUTTON) != 0)
+ } else {
+ if ( (wParam & MK_LBUTTON) != 0) {
action = wActionLDrag;
- else if ( (wParam & MK_RBUTTON) != 0)
+ } else if ( (wParam & MK_RBUTTON) != 0) {
action = wActionRDrag;
- else
+ } else if ( (wParam & MK_MBUTTON) != 0) {
+ action = wActionMDrag;
+ } else {
action = wActionMove;
+ }
}
b = (wDraw_p)mswMapIndex( inx );
- if (!b)
+ if (!b) {
break;
- if (doSetFocus && message != WM_MOUSEMOVE)
+ }
+ if (doSetFocus && message != WM_MOUSEMOVE) {
SetFocus( ((wControl_p)b->parent)->hWnd );
+ }
if ( (b->option&BD_NOCAPTURE) == 0 ) {
- if (message == WM_LBUTTONDOWN || message == WM_RBUTTONDOWN)
+ if (message == WM_LBUTTONDOWN || message == WM_RBUTTONDOWN) {
SetCapture( b->hWnd );
- else if (message == WM_LBUTTONUP || message == WM_RBUTTONUP)
+ } else if (message == WM_LBUTTONUP || message == WM_RBUTTONUP) {
ReleaseCapture();
+ }
}
ix = LOWORD( lParam );
iy = HIWORD( lParam );
@@ -1607,45 +1740,50 @@ LRESULT FAR PASCAL XEXPORT mswDrawPush(
y = YWINPIX2DRAWPIX( b, iy );
b->lastX = x;
b->lastY = y;
- if (b->action)
+ if (b->action) {
b->action( b, b->data, action, x, y );
- if (b->hWnd)
+ }
+ if (b->hWnd) {
UpdateWindow(b->hWnd);
+ }
return (LRESULT)0;
case WM_CHAR:
b = (wDraw_p)mswMapIndex( inx );
extChar = wAccelKey_None;
if (lParam & 0x01000000L)
- switch( wParam ) {
- case VK_DELETE: extChar = wAccelKey_Del; break;
- case VK_INSERT: extChar = wAccelKey_Ins; break;
- case VK_HOME: extChar = wAccelKey_Home; break;
- case VK_END: extChar = wAccelKey_End; break;
- case VK_PRIOR: extChar = wAccelKey_Pgup; break;
- case VK_NEXT: extChar = wAccelKey_Pgdn; break;
- case VK_UP: extChar = wAccelKey_Up; break;
- case VK_DOWN: extChar = wAccelKey_Down; break;
- case VK_RIGHT: extChar = wAccelKey_Right; break;
- case VK_LEFT: extChar = wAccelKey_Left; break;
- case VK_BACK: extChar = wAccelKey_Back; break;
- case VK_F1: extChar = wAccelKey_F1; break;
- case VK_F2: extChar = wAccelKey_F2; break;
- case VK_F3: extChar = wAccelKey_F3; break;
- case VK_F4: extChar = wAccelKey_F4; break;
- case VK_F5: extChar = wAccelKey_F5; break;
- case VK_F6: extChar = wAccelKey_F6; break;
- case VK_F7: extChar = wAccelKey_F7; break;
- case VK_F8: extChar = wAccelKey_F8; break;
- case VK_F9: extChar = wAccelKey_F9; break;
- case VK_F10: extChar = wAccelKey_F10; break;
- case VK_F11: extChar = wAccelKey_F11; break;
- case VK_F12: extChar = wAccelKey_F12; break;
- }
+ switch( wParam ) {
+ case VK_DELETE: extChar = wAccelKey_Del; break;
+ case VK_INSERT: extChar = wAccelKey_Ins; break;
+ case VK_HOME: extChar = wAccelKey_Home; break;
+ case VK_END: extChar = wAccelKey_End; break;
+ case VK_PRIOR: extChar = wAccelKey_Pgup; break;
+ case VK_NEXT: extChar = wAccelKey_Pgdn; break;
+ case VK_UP: extChar = wAccelKey_Up; break;
+ case VK_DOWN: extChar = wAccelKey_Down; break;
+ case VK_RIGHT: extChar = wAccelKey_Right; break;
+ case VK_LEFT: extChar = wAccelKey_Left; break;
+ case VK_BACK: extChar = wAccelKey_Back; break;
+ case VK_F1: extChar = wAccelKey_F1; break;
+ case VK_F2: extChar = wAccelKey_F2; break;
+ case VK_F3: extChar = wAccelKey_F3; break;
+ case VK_F4: extChar = wAccelKey_F4; break;
+ case VK_F5: extChar = wAccelKey_F5; break;
+ case VK_F6: extChar = wAccelKey_F6; break;
+ case VK_F7: extChar = wAccelKey_F7; break;
+ case VK_F8: extChar = wAccelKey_F8; break;
+ case VK_F9: extChar = wAccelKey_F9; break;
+ case VK_F10: extChar = wAccelKey_F10; break;
+ case VK_F11: extChar = wAccelKey_F11; break;
+ case VK_F12: extChar = wAccelKey_F12; break;
+ }
if (b && b->action) {
- if (extChar != wAccelKey_None)
- b->action( b, b->data, wActionExtKey + ( (int)extChar << 8 ), b->lastX, b->lastY );
- else
- b->action( b, b->data, wActionText + ( (int)wParam << 8 ), b->lastX, b->lastY );
+ if (extChar != wAccelKey_None) {
+ b->action( b, b->data, wActionExtKey + ( (int)extChar << 8 ), b->lastX,
+ b->lastY );
+ } else {
+ b->action( b, b->data, wActionText + ( (int)wParam << 8 ), b->lastX,
+ b->lastY );
+ }
}
return (LRESULT)0;
@@ -1663,17 +1801,17 @@ LRESULT FAR PASCAL XEXPORT mswDrawPush(
}
HBITMAP hBmOld = SelectObject( b->hDc, b->hBmMain );
- if (bDrawMainBM) {
- BitBlt(hDc, rect.left, rect.top,
- rect.right - rect.left, rect.bottom - rect.top,
- b->hDc, rect.left, rect.top,
- SRCCOPY);
- }
+ if (bDrawMainBM) {
+ BitBlt(hDc, rect.left, rect.top,
+ rect.right - rect.left, rect.bottom - rect.top,
+ b->hDc, rect.left, rect.top,
+ SRCCOPY);
+ }
SelectObject( b->hDc, b->bCopiedMain?b->hBmTemp:b->hBmMain );
BitBlt( hDc, rect.left, rect.top,
- rect.right-rect.left, rect.bottom-rect.top,
- b->hDc, rect.left, rect.top,
- bDrawMainBM?SRCAND:SRCCOPY);
+ rect.right-rect.left, rect.bottom-rect.top,
+ b->hDc, rect.left, rect.top,
+ bDrawMainBM?SRCAND:SRCCOPY);
SelectObject( b->hDc, hBmOld );
EndPaint( hWnd, &ps );
b->bCopiedMain = FALSE;
@@ -1693,6 +1831,13 @@ LRESULT FAR PASCAL XEXPORT mswDrawPush(
}
}
break;
+
+ case WM_SETCURSOR:
+ // Set cursor based on wSetCursor
+ DoSetCursor();
+ // return TRUE to suppress my parent from overriding me
+ return TRUE;
+
default:
break;
}
@@ -1700,10 +1845,11 @@ LRESULT FAR PASCAL XEXPORT mswDrawPush(
}
-static LRESULT drawMsgProc( wDraw_p b, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
+static LRESULT drawMsgProc( wDraw_p b, HWND hWnd, UINT message, WPARAM wParam,
+ LPARAM lParam )
{
wAction_t action;
-
+
switch( message ) {
case WM_MOUSEWHEEL:
/* handle mouse wheel events */
@@ -1728,8 +1874,9 @@ static LRESULT drawMsgProc( wDraw_p b, HWND hWnd, UINT message, WPARAM wParam, L
action = wActionWheelDown;
}
}
- if (b->action)
+ if (b->action) {
b->action( b, b->data, action, b->lastX, b->lastY );
+ }
return (LRESULT)0;
case WM_MOUSEHWHEEL:
if ( GET_KEYSTATE_WPARAM(wParam) & (MK_SHIFT|MK_MBUTTON)) {
@@ -1739,8 +1886,9 @@ static LRESULT drawMsgProc( wDraw_p b, HWND hWnd, UINT message, WPARAM wParam, L
action = wActionScrollLeft;
}
}
- if (b->action)
+ if (b->action) {
b->action( b, b->data, action, b->lastX, b->lastY );
+ }
return (LRESULT)0;
}
@@ -1777,17 +1925,19 @@ static void drawDoneProc( wControl_p b )
d->hDcBackup = (HDC)0;
}
while (bmRoot) {
- if (bmRoot->bm)
+ if (bmRoot->bm) {
DeleteObject( bmRoot->bm );
+ }
bmRoot = bmRoot->next;
}
}
static callBacks_t drawCallBacks = {
- NULL,
- drawDoneProc,
- (messageCallback_p)drawMsgProc };
+ NULL,
+ drawDoneProc,
+ (messageCallback_p)drawMsgProc
+};
static wDraw_p drawList = NULL;
@@ -1796,8 +1946,9 @@ void mswRedrawAll( void )
{
wDraw_p p;
for ( p=drawList; p; p=p->drawNext ) {
- if (p->drawRepaint)
+ if (p->drawRepaint) {
p->drawRepaint( p, p->data, 0, 0 );
+ }
}
}
@@ -1814,14 +1965,14 @@ void mswRepaintAll( void )
hDc = BeginPaint( b->hWnd, &ps );
HBITMAP hBmOld = SelectObject( b->hDc, b->hBmMain );
BitBlt( hDc, rect.left, rect.top,
- rect.right-rect.left, rect.bottom-rect.top,
- b->hDc, rect.left, rect.top,
- SRCCOPY );
+ rect.right-rect.left, rect.bottom-rect.top,
+ b->hDc, rect.left, rect.top,
+ SRCCOPY );
SelectObject( b->hDc, b->hBmTemp );
BitBlt( hDc, rect.left, rect.top,
- rect.right-rect.left, rect.bottom-rect.top,
- b->hDc, rect.left, rect.top,
- SRCAND );
+ rect.right-rect.left, rect.bottom-rect.top,
+ b->hDc, rect.left, rect.top,
+ SRCAND );
SelectObject( b->hDc, hBmOld );
EndPaint( b->hWnd, &ps );
}
@@ -1830,27 +1981,22 @@ void mswRepaintAll( void )
wDraw_p wDrawCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- long option,
- wWinPix_t w,
- wWinPix_t h,
- void * data,
- wDrawRedrawCallBack_p redrawProc,
- wDrawActionCallBack_p action )
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ long option,
+ wWinPix_t w,
+ wWinPix_t h,
+ void * data,
+ wDrawRedrawCallBack_p redrawProc,
+ wDrawActionCallBack_p action )
{
wDraw_p d;
RECT rect;
int index;
HDC hDc;
- if ( noNegDrawArgs < 0 ) {
- wPrefGetInteger( "msw tweak", "NoNegDrawArgs", &noNegDrawArgs, 0 );
- wPrefGetInteger( "msw tweak", "NoFlatEndCaps", &noFlatEndCaps, 0 );
- }
-
d = mswAlloc( parent, B_DRAW, NULL, sizeof *d, data, &index );
mswComputePos( (wControl_p)d, x, y );
d->w = w;
@@ -1860,9 +2006,9 @@ wDraw_p wDrawCreate(
d->option = option;
d->hWnd = CreateWindow( mswDrawWindowClassName, NULL,
- WS_CHILDWINDOW|WS_VISIBLE|WS_BORDER,
- d->x, d->y, w, h,
- ((wControl_p)parent)->hWnd, (HMENU)(UINT_PTR)index, mswHInst, NULL );
+ WS_CHILDWINDOW|WS_VISIBLE|WS_BORDER,
+ d->x, d->y, w, h,
+ ((wControl_p)parent)->hWnd, (HMENU)(UINT_PTR)index, mswHInst, NULL );
if (d->hWnd == (HWND)0) {
mswFail( "CreateWindow(DRAW)" );
@@ -1916,7 +2062,7 @@ wDraw_p wBitMapCreate( wWinPix_t w, wWinPix_t h, int planes )
d->option = 0;
hDc = GetDC(mswHWnd);
- d->hDc = CreateCompatibleDC( hDc );
+ d->hDc = CreateCompatibleDC( hDc );
if ( d->hDc == (HDC)0 ) {
wNoticeEx( NT_ERROR, "CreateBitMap: CreateDC fails", "Ok", NULL );
return FALSE;
@@ -1984,57 +2130,57 @@ wBool_t wBitMapDelete( wDraw_p d )
wBool_t
wBitMapWriteFile(wDraw_p d, const char * fileName)
{
- FIBITMAP *dib = NULL;
- FIBITMAP *dib2 = NULL;
- FREE_IMAGE_FORMAT fif = FIF_UNKNOWN;
- BOOL bSuccess = FALSE;
-
- if (d->hBmMain) {
-
- BITMAP bm;
- GetObject(d->hBmMain, sizeof(BITMAP), (LPSTR)&bm);
- dib = FreeImage_Allocate(bm.bmWidth, bm.bmHeight, bm.bmBitsPixel, 0, 0, 0);
- // The GetDIBits function clears the biClrUsed and biClrImportant BITMAPINFO members (dont't know why)
- // So we save these infos below. This is needed for palettized images only.
- int nColors = FreeImage_GetColorsUsed(dib);
- HDC dc = GetDC(NULL);
- GetDIBits(dc,
- d->hBmMain,
- 0,
- FreeImage_GetHeight(dib),
- FreeImage_GetBits(dib),
- FreeImage_GetInfo(dib),
- DIB_RGB_COLORS);
- ReleaseDC(NULL, dc);
-
- // restore BITMAPINFO members
- FreeImage_GetInfoHeader(dib)->biClrUsed = nColors;
- FreeImage_GetInfoHeader(dib)->biClrImportant = nColors;
- // we will get a 32 bit bitmap on Windows systems with invalid alpha
- // so it needs to be converted to 24 bits.
- // (see: https://sourceforge.net/p/freeimage/discussion/36110/thread/0699ce8e/ )
- dib2 = FreeImage_ConvertTo24Bits(dib);
- FreeImage_Unload(dib);
- }
-
- // Try to guess the file format from the file extension
- fif = FreeImage_GetFIFFromFilename(fileName);
- if (fif != FIF_UNKNOWN) {
- // Check that the dib can be saved in this format
- BOOL bCanSave;
-
- FREE_IMAGE_TYPE image_type = FreeImage_GetImageType(dib2);
- if (image_type == FIT_BITMAP) {
- // standard bitmap type
- WORD bpp = FreeImage_GetBPP(dib2);
- bCanSave = (FreeImage_FIFSupportsWriting(fif) &&
- FreeImage_FIFSupportsExportBPP(fif, bpp));
- } else {
- // special bitmap type
- bCanSave = FreeImage_FIFSupportsExportType(fif, image_type);
- }
-
- if (bCanSave) {
+ FIBITMAP *dib = NULL;
+ FIBITMAP *dib2 = NULL;
+ FREE_IMAGE_FORMAT fif = FIF_UNKNOWN;
+ BOOL bSuccess = FALSE;
+
+ if (d->hBmMain) {
+
+ BITMAP bm;
+ GetObject(d->hBmMain, sizeof(BITMAP), (LPSTR)&bm);
+ dib = FreeImage_Allocate(bm.bmWidth, bm.bmHeight, bm.bmBitsPixel, 0, 0, 0);
+ // The GetDIBits function clears the biClrUsed and biClrImportant BITMAPINFO members (dont't know why)
+ // So we save these infos below. This is needed for palettized images only.
+ int nColors = FreeImage_GetColorsUsed(dib);
+ HDC dc = GetDC(NULL);
+ GetDIBits(dc,
+ d->hBmMain,
+ 0,
+ FreeImage_GetHeight(dib),
+ FreeImage_GetBits(dib),
+ FreeImage_GetInfo(dib),
+ DIB_RGB_COLORS);
+ ReleaseDC(NULL, dc);
+
+ // restore BITMAPINFO members
+ FreeImage_GetInfoHeader(dib)->biClrUsed = nColors;
+ FreeImage_GetInfoHeader(dib)->biClrImportant = nColors;
+ // we will get a 32 bit bitmap on Windows systems with invalid alpha
+ // so it needs to be converted to 24 bits.
+ // (see: https://sourceforge.net/p/freeimage/discussion/36110/thread/0699ce8e/ )
+ dib2 = FreeImage_ConvertTo24Bits(dib);
+ FreeImage_Unload(dib);
+ }
+
+ // Try to guess the file format from the file extension
+ fif = FreeImage_GetFIFFromFilename(fileName);
+ if (fif != FIF_UNKNOWN) {
+ // Check that the dib can be saved in this format
+ BOOL bCanSave;
+
+ FREE_IMAGE_TYPE image_type = FreeImage_GetImageType(dib2);
+ if (image_type == FIT_BITMAP) {
+ // standard bitmap type
+ WORD bpp = FreeImage_GetBPP(dib2);
+ bCanSave = (FreeImage_FIFSupportsWriting(fif) &&
+ FreeImage_FIFSupportsExportBPP(fif, bpp));
+ } else {
+ // special bitmap type
+ bCanSave = FreeImage_FIFSupportsExportType(fif, image_type);
+ }
+
+ if (bCanSave) {
int flags;
switch (fif) {
@@ -2047,11 +2193,11 @@ wBitMapWriteFile(wDraw_p d, const char * fileName)
default:
flags = 0; // whatver the default is for the file format
}
- bSuccess = FreeImage_Save(fif, dib2, fileName, flags);
- }
- }
- FreeImage_Unload(dib2);
+ bSuccess = FreeImage_Save(fif, dib2, fileName, flags);
+ }
+ }
+ FreeImage_Unload(dib2);
- return bSuccess;
+ return bSuccess;
}
diff --git a/app/wlib/mswlib/mswedit.c b/app/wlib/mswlib/mswedit.c
index b6da004..db7409e 100644
--- a/app/wlib/mswlib/mswedit.c
+++ b/app/wlib/mswlib/mswedit.c
@@ -1,7 +1,7 @@
/** \file mswedit.c
* Text entry widgets
*/
-
+
/* XTrackCAD - Model Railroad CAD
* Copyright (C) 2005 Dave Bullis
*
@@ -17,12 +17,11 @@
*
* 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 <windows.h>
#include <string.h>
-#include <malloc.h>
#include <stdlib.h>
#include <stdio.h>
#include <commdlg.h>
@@ -31,29 +30,29 @@
struct wString_t {
- WOBJ_COMMON
- char * valueP;
- wIndex_t valueL;
- wStringCallBack_p action;
- wBool_t enter_pressed; /**< flag if enter was pressed */
- };
+ WOBJ_COMMON
+ char * valueP;
+ wIndex_t valueL;
+ wStringCallBack_p action;
+ wBool_t enter_pressed; /**< flag if enter was pressed */
+};
#ifdef LATER
struct wInteger_t {
- WOBJ_COMMON
- long low, high;
- long * valueP;
- long oldValue;
- wIntegerCallBack_p action;
- };
+ WOBJ_COMMON
+ long low, high;
+ long * valueP;
+ long oldValue;
+ wIntegerCallBack_p action;
+};
struct wFloat_t {
- WOBJ_COMMON
- double low, high;
- double * valueP;
- double oldValue;
- wFloatCallBack_p action;
- };
+ WOBJ_COMMON
+ double low, high;
+ double * valueP;
+ double oldValue;
+ wFloatCallBack_p action;
+};
#endif // LATER
@@ -67,33 +66,32 @@ static void triggerFloat( wControl_p b );
LRESULT FAR PASCAL _export pushEdit(
- HWND hWnd,
- UINT message,
- WPARAM wParam,
- LPARAM lParam )
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
{
wIndex_t inx = (wIndex_t)GetWindowLongPtr( hWnd, GWL_ID );
wString_p b = (wString_p)mswMapIndex(inx);
- switch (message)
- {
+ switch (message) {
case WM_CHAR:
- if (b != NULL) {
- switch (wParam) {
- case VK_RETURN:
- triggerString(b);
- return (LRESULT)0;
- break;
- case 0x1B:
- case 0x09:
- SetFocus(((wControl_p)(b->parent))->hWnd);
- SendMessage(((wControl_p)(b->parent))->hWnd, WM_CHAR,
- wParam, lParam);
- return (LRESULT)0;
- }
- }
- break;
+ if (b != NULL) {
+ switch (wParam) {
+ case VK_RETURN:
+ triggerString(b);
+ return (LRESULT)0;
+ break;
+ case 0x1B:
+ case 0x09:
+ SetFocus(((wControl_p)(b->parent))->hWnd);
+ SendMessage(((wControl_p)(b->parent))->hWnd, WM_CHAR,
+ wParam, lParam);
+ return (LRESULT)0;
+ }
+ }
+ break;
}
return CallWindowProc(oldEditProc, hWnd, message, wParam, lParam);
@@ -109,8 +107,8 @@ LRESULT FAR PASCAL _export pushEdit(
void wStringSetValue(
- wString_p b,
- const char * arg )
+ wString_p b,
+ const char * arg )
{
WORD len = (WORD)strlen( arg );
SendMessage( b->hWnd, WM_SETTEXT, (WPARAM)0, (LPARAM)arg );
@@ -121,18 +119,18 @@ void wStringSetValue(
void wStringSetWidth(
- wString_p b,
- wWinPix_t w )
+ wString_p b,
+ wWinPix_t w )
{
int rc;
b->w = w;
rc = SetWindowPos( b->hWnd, HWND_TOP, 0, 0,
- b->w, b->h, SWP_NOMOVE|SWP_NOZORDER );
+ b->w, b->h, SWP_NOMOVE|SWP_NOZORDER );
}
const char * wStringGetValue(
- wString_p b )
+ wString_p b )
{
static char buff[1024];
SendMessage( b->hWnd, WM_GETTEXT, (WPARAM)sizeof buff, (LPARAM)buff );
@@ -141,29 +139,29 @@ const char * wStringGetValue(
/**
* Get the string from a entry field. The returned pointer has to be free() after processing is complete.
- *
+ *
* \param bs IN string entry field
- *
+ *
* \return pointer to entered string or NULL if entry field is empty.
*/
static char *getString(wString_p bs)
{
- char *tmpBuffer = NULL;
- UINT chars = (UINT)SendMessage(bs->hWnd, EM_LINELENGTH, (WPARAM)0, (LPARAM)0);
-
- if (chars) {
- tmpBuffer = malloc(chars > sizeof(WORD)? chars + 1 : sizeof(WORD) + 1);
- *(WORD *)tmpBuffer = chars;
- SendMessage(bs->hWnd, (UINT)EM_GETLINE, (WPARAM)0, (LPARAM)tmpBuffer);
- tmpBuffer[chars] = '\0';
- } else {
- tmpBuffer = malloc(2);
- tmpBuffer[0] = '\n';
- tmpBuffer[1] = '\0';
- }
-
- return (tmpBuffer);
+ char *tmpBuffer = NULL;
+ UINT chars = (UINT)SendMessage(bs->hWnd, EM_LINELENGTH, (WPARAM)0, (LPARAM)0);
+
+ if (chars) {
+ tmpBuffer = malloc(chars > sizeof(WORD)? chars + 1 : sizeof(WORD) + 1);
+ *(WORD *)tmpBuffer = chars;
+ SendMessage(bs->hWnd, (UINT)EM_GETLINE, (WPARAM)0, (LPARAM)tmpBuffer);
+ tmpBuffer[chars] = '\0';
+ } else {
+ tmpBuffer = malloc(2);
+ tmpBuffer[0] = '\n';
+ tmpBuffer[1] = '\0';
+ }
+
+ return (tmpBuffer);
}
/**
@@ -174,20 +172,19 @@ static char *getString(wString_p bs)
*/
static void triggerString(
- wString_p b)
+ wString_p b)
{
const char *output = "\n";
- char *enteredString = getString(b);
- if (enteredString)
- {
- if (b->valueP) {
- strcpy(b->valueP, enteredString);
- }
+ char *enteredString = getString(b);
+ if (enteredString) {
+ if (b->valueP) {
+ strcpy(b->valueP, enteredString);
+ }
if (b->action) {
b->enter_pressed = TRUE;
b->action(output, b->data);
- }
+ }
free(enteredString);
}
@@ -195,84 +192,87 @@ static void triggerString(
LRESULT stringProc(
- wControl_p b,
- HWND hWnd,
- UINT message,
- WPARAM wParam,
- LPARAM lParam)
+ wControl_p b,
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam)
{
- wString_p bs = (wString_p)b;
- int modified;
-
- switch (message) {
-
- case WM_COMMAND:
- switch (WCMD_PARAM_NOTF) {
- case EN_KILLFOCUS:
- modified = (int)SendMessage(bs->hWnd, (UINT)EM_GETMODIFY, (WPARAM)0, (LPARAM)0);
- if (!modified) {
- break;
- }
-
- char *enteredString = getString(bs);
- if (enteredString) {
- if (bs->valueP) {
- strcpy(bs->valueP, enteredString);
- }
- if (bs->action) {
- bs->action(enteredString, bs->data);
- mswSetTrigger(NULL, NULL);
- }
- free(enteredString);
- }
- SendMessage(bs->hWnd, (UINT)EM_SETMODIFY, (WPARAM)FALSE, (LPARAM)0);
- }
- break;
- }
-
- return DefWindowProc(hWnd, message, wParam, lParam);
+ wString_p bs = (wString_p)b;
+ int modified;
+
+ switch (message) {
+
+ case WM_COMMAND:
+ switch (WCMD_PARAM_NOTF) {
+ case EN_KILLFOCUS:
+ modified = (int)SendMessage(bs->hWnd, (UINT)EM_GETMODIFY, (WPARAM)0, (LPARAM)0);
+ if (!modified) {
+ break;
+ }
+
+ char *enteredString = getString(bs);
+ if (enteredString) {
+ if (bs->valueP) {
+ strcpy(bs->valueP, enteredString);
+ }
+ if (bs->action) {
+ bs->action(enteredString, bs->data);
+ mswSetTrigger(NULL, NULL);
+ }
+ free(enteredString);
+ }
+ SendMessage(bs->hWnd, (UINT)EM_SETMODIFY, (WPARAM)FALSE, (LPARAM)0);
+ }
+ break;
+ }
+
+ return DefWindowProc(hWnd, message, wParam, lParam);
}
static callBacks_t stringCallBacks = {
- mswRepaintLabel,
- NULL,
- stringProc };
+ mswRepaintLabel,
+ NULL,
+ stringProc
+};
wString_p wStringCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- wWinPix_t width,
- char *valueP,
- wIndex_t valueL,
- wStringCallBack_p action,
- void *data )
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ wWinPix_t width,
+ char *valueP,
+ wIndex_t valueL,
+ wStringCallBack_p action,
+ void *data )
{
wString_p b;
RECT rect;
int index;
DWORD style = 0;
- b = (wString_p)mswAlloc( parent, B_STRING, mswStrdup(labelStr), sizeof *b, data, &index );
+ b = (wString_p)mswAlloc( parent, B_STRING, mswStrdup(labelStr), sizeof *b, data,
+ &index );
mswComputePos( (wControl_p)b, x, y );
b->option = option;
b->valueP = valueP;
b->valueL = valueL;
b->labelY += 2;
b->action = action;
- if (option & BO_READONLY)
+ if (option & BO_READONLY) {
style |= ES_READONLY;
+ }
b->hWnd = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL,
- ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | style,
- b->x, b->y,
- width, mswEditHeight,
- ((wControl_p)parent)->hWnd, (HMENU)(UINT_PTR)index, mswHInst, NULL );
+ ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | style,
+ b->x, b->y,
+ width, mswEditHeight,
+ ((wControl_p)parent)->hWnd, (HMENU)(UINT_PTR)index, mswHInst, NULL );
if (b->hWnd == NULL) {
mswFail("CreateWindow(STRING)");
return b;
@@ -290,8 +290,8 @@ wString_p wStringCreate(
SendMessage( b->hWnd, WM_SETTEXT, (WPARAM)0, (LPARAM)b->valueP );
}
SendMessage( b->hWnd, EM_SETMODIFY, (WPARAM)FALSE, (LPARAM)0 );
- if ( !mswThickFont )
- SendMessage( b->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, (LPARAM)0 );
+ SendMessage( b->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, (LPARAM)0 );
+
GetWindowRect( b->hWnd, &rect );
b->w = rect.right - rect.left;
b->h = rect.bottom - rect.top;
@@ -317,8 +317,8 @@ wString_p wStringCreate(
void wIntegerSetValue(
- wInteger_p b,
- long arg )
+ wInteger_p b,
+ long arg )
{
b->oldValue = arg;
wsprintf( mswTmpBuff, "%ld", arg );
@@ -328,14 +328,14 @@ void wIntegerSetValue(
long wIntegerGetValue(
- wInteger_p b )
+ wInteger_p b )
{
return b->oldValue;
}
static void triggerInteger(
- wControl_p b )
+ wControl_p b )
{
wInteger_p bi = (wInteger_p)b;
int cnt;
@@ -344,17 +344,22 @@ static void triggerInteger(
if (bi->action) {
*(WPARAM*)&mswTmpBuff[0] = 78;
- cnt = (int)SendMessage( bi->hWnd, (UINT)EM_GETLINE, 0, (DWORD)(LPSTR)mswTmpBuff );
+ cnt = (int)SendMessage( bi->hWnd, (UINT)EM_GETLINE, 0,
+ (DWORD)(LPSTR)mswTmpBuff );
mswTmpBuff[cnt] = '\0';
- if (strcmp( mswTmpBuff, "-" )==0 )
+ if (strcmp( mswTmpBuff, "-" )==0 ) {
return;
+ }
value = strtol( mswTmpBuff, &cp, 10 );
- if (*cp != '\0' || value < bi->low || value > bi->high )
+ if (*cp != '\0' || value < bi->low || value > bi->high ) {
return;
- if (bi->oldValue == value)
+ }
+ if (bi->oldValue == value) {
return;
- if (bi->valueP)
+ }
+ if (bi->valueP) {
*bi->valueP = value;
+ }
bi->oldValue = value;
bi->action( value, bi->data );
}
@@ -362,31 +367,33 @@ static void triggerInteger(
LRESULT integerProc(
- wControl_p b,
- HWND hWnd,
- UINT message,
- WPARAM wParam,
- LPARAM lParam )
-{
+ wControl_p b,
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
+{
wInteger_p bi = (wInteger_p)b;
int inx;
int cnt;
long value;
- char * cp;
+ char * cp;
wBool_t ok;
int modified;
-
+
switch( message ) {
-
+
case WM_COMMAND:
switch (WCMD_PARAM_NOTF) {
case EN_KILLFOCUS:
ok = TRUE;
modified = (int)SendMessage( bi->hWnd, (UINT)EM_GETMODIFY, 0, 0L );
- if (!modified)
+ if (!modified) {
break;
+ }
*(WPARAM*)&mswTmpBuff[0] = 78;
- cnt = (int)SendMessage( bi->hWnd, (UINT)EM_GETLINE, 0, (DWORD)(LPSTR)mswTmpBuff );
+ cnt = (int)SendMessage( bi->hWnd, (UINT)EM_GETLINE, 0,
+ (DWORD)(LPSTR)mswTmpBuff );
mswTmpBuff[cnt] = '\0';
if (strcmp( mswTmpBuff, "-" )==0 && 0 >= bi->low && 0 <= bi->high ) {
value = 0;
@@ -395,23 +402,25 @@ LRESULT integerProc(
if (*cp != '\0' || value < bi->low || value > bi->high ) {
inx = GetWindowWord( bi->hWnd, GWW_ID );
if (wWinIsVisible(bi->parent)) {
- PostMessage( ((wControl_p)(bi->parent))->hWnd,
- WM_NOTVALID, inx, 0L );
+ PostMessage( ((wControl_p)(bi->parent))->hWnd,
+ WM_NOTVALID, inx, 0L );
return TRUE;
} else {
- if (value < bi->low)
+ if (value < bi->low) {
value = bi->low;
- else
+ } else {
value = bi->high;
+ }
sprintf( mswTmpBuff, "%ld", value );
SendMessage( bi->hWnd, (UINT)WM_SETTEXT, 0,
- (DWORD)(LPSTR)mswTmpBuff );
+ (DWORD)(LPSTR)mswTmpBuff );
}
}
}
bi->oldValue = value;
- if (bi->valueP)
+ if (bi->valueP) {
*bi->valueP = value;
+ }
if (bi->action) {
bi->action( value, bi->data );
mswSetTrigger( NULL, NULL );
@@ -422,21 +431,22 @@ LRESULT integerProc(
case WM_NOTVALID:
wsprintf( mswTmpBuff, "Please enter a value between %ld and %ld",
- bi->low, bi->high );
+ bi->low, bi->high );
if (bi->low > MININT && bi->high < MAXINT)
sprintf( mswTmpBuff,
- "Please enter an integer value between %ld and %ld",
- bi->low, bi->high );
+ "Please enter an integer value between %ld and %ld",
+ bi->low, bi->high );
else if (bi->low > MININT)
sprintf( mswTmpBuff,
- "Please enter an integer value greater or equal to %ld",
- bi->low );
+ "Please enter an integer value greater or equal to %ld",
+ bi->low );
else if (bi->high < MAXINT)
sprintf( mswTmpBuff,
- "Please enter an integer value less or equal to %ld",
- bi->high );
- else
+ "Please enter an integer value less or equal to %ld",
+ bi->high );
+ else {
strcpy( mswTmpBuff, "Please enter an integer value" );
+ }
MessageBox( bi->hWnd, mswTmpBuff, "Invalid entry", MB_OK );
SetFocus( bi->hWnd );
#ifdef WIN32
@@ -447,31 +457,32 @@ LRESULT integerProc(
#endif
return TRUE;
- }
-
+ }
+
return DefWindowProc( hWnd, message, wParam, lParam );
-}
+}
static callBacks_t integerCallBacks = {
- mswRepaintLabel,
- NULL,
- integerProc };
+ mswRepaintLabel,
+ NULL,
+ integerProc
+};
wInteger_p wIntegerCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- wWinPix_t width,
- long low,
- long high,
- long *valueP,
- wIntegerCallBack_p action,
- void *data )
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ wWinPix_t width,
+ long low,
+ long high,
+ long *valueP,
+ wIntegerCallBack_p action,
+ void *data )
{
wInteger_p b;
RECT rect;
@@ -486,32 +497,35 @@ wInteger_p wIntegerCreate(
b->valueP = valueP;
b->labelY += 2;
b->action = action;
- if (option & BO_READONLY)
+ if (option & BO_READONLY) {
style |= ES_READONLY;
+ }
b->hWnd = CreateWindow( "EDIT", NULL,
- ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | style,
- b->x, b->y,
- width, mswEditHeight,
- ((wControl_p)parent)->hWnd, (HMENU)index, mswHInst, NULL );
+ ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | style,
+ b->x, b->y,
+ width, mswEditHeight,
+ ((wControl_p)parent)->hWnd, (HMENU)index, mswHInst, NULL );
if (b->hWnd == NULL) {
mswFail("CreateWindow(INTEGER)");
return b;
}
-
+
newEditProc = MakeProcInstance( (XWNDPROC)pushEdit, mswHInst );
oldEditProc = (XWNDPROC)GetWindowLong(b->hWnd, GWL_WNDPROC );
SetWindowLong( b->hWnd, GWL_WNDPROC, (LONG)newEditProc );
- if ( !mswThickFont )
+ if ( !mswThickFont ) {
SendMessage( b->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, 0L );
+ }
if (b->valueP) {
wsprintf( mswTmpBuff, "%ld", *b->valueP );
SendMessage( b->hWnd, WM_SETTEXT, 0, (DWORD)(LPSTR)mswTmpBuff );
b->oldValue = *b->valueP;
- } else
+ } else {
b->oldValue = 0;
+ }
SendMessage( b->hWnd, EM_SETMODIFY, FALSE, 0L );
GetWindowRect( b->hWnd, &rect );
@@ -539,8 +553,8 @@ wInteger_p wIntegerCreate(
void wFloatSetValue(
- wFloat_p b,
- double arg )
+ wFloat_p b,
+ double arg )
{
b->oldValue = arg;
sprintf( mswTmpBuff, "%0.3f", arg );
@@ -550,67 +564,72 @@ void wFloatSetValue(
double wFloatGetValue(
- wFloat_p b )
+ wFloat_p b )
{
return b->oldValue;
}
static void triggerFloat(
- wControl_p b )
+ wControl_p b )
{
wFloat_p bf = (wFloat_p)b;
int cnt;
double value;
- char * cp;
+ char * cp;
if (bf->action) {
*(WPARAM*)&mswTmpBuff[0] = 78;
cnt = (int)SendMessage( bf->hWnd, (UINT)EM_GETLINE, 0,
- (DWORD)(LPSTR)mswTmpBuff );
+ (DWORD)(LPSTR)mswTmpBuff );
mswTmpBuff[cnt] = '\0';
- if (strcmp( mswTmpBuff, "-" )==0)
+ if (strcmp( mswTmpBuff, "-" )==0) {
return;
+ }
value = strtod( mswTmpBuff, &cp );
- if (*cp != '\0' || value < bf->low || value > bf->high )
+ if (*cp != '\0' || value < bf->low || value > bf->high ) {
return;
- if (bf->oldValue == value)
+ }
+ if (bf->oldValue == value) {
return;
+ }
bf->oldValue = value;
- if (bf->valueP)
- *bf->valueP = value;
+ if (bf->valueP) {
+ *bf->valueP = value;
+ }
bf->action( wFloatGetValue(bf), bf->data );
}
}
LRESULT floatProc(
- wControl_p b,
- HWND hWnd,
- UINT message,
- WPARAM wParam,
- LPARAM lParam )
-{
+ wControl_p b,
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
+{
wFloat_p bf = (wFloat_p)b;
int inx;
int cnt;
double value;
- char * cp;
+ char * cp;
wBool_t ok;
int modified;
switch( message ) {
-
+
case WM_COMMAND:
switch (HIWORD(lParam)) {
case EN_KILLFOCUS:
ok = TRUE;
modified = (int)SendMessage( bf->hWnd, (UINT)EM_GETMODIFY, 0, 0L );
- if (!modified)
+ if (!modified) {
break;
+ }
*(WPARAM*)&mswTmpBuff[0] = 78;
cnt = (int)SendMessage( bf->hWnd, (UINT)EM_GETLINE, 0,
- (DWORD)(LPSTR)mswTmpBuff );
+ (DWORD)(LPSTR)mswTmpBuff );
mswTmpBuff[cnt] = '\0';
if (strcmp( mswTmpBuff, "-" )==0 && 0 >= bf->low && 0 <= bf->high ) {
value = 0;
@@ -619,23 +638,25 @@ LRESULT floatProc(
if (*cp != '\0' || value < bf->low || value > bf->high ) {
inx = GetWindowWord( bf->hWnd, GWW_ID );
if (wWinIsVisible(bf->parent)) {
- PostMessage( ((wControl_p)(bf->parent))->hWnd,
- WM_NOTVALID, inx, 0L );
+ PostMessage( ((wControl_p)(bf->parent))->hWnd,
+ WM_NOTVALID, inx, 0L );
return TRUE;
} else {
- if (value < bf->low)
+ if (value < bf->low) {
value = bf->low;
- else
+ } else {
value = bf->high;
+ }
sprintf( mswTmpBuff, "%0.3f", value );
SendMessage( bf->hWnd, (UINT)WM_SETTEXT, 0,
- (DWORD)(LPSTR)mswTmpBuff );
+ (DWORD)(LPSTR)mswTmpBuff );
}
}
}
bf->oldValue = value;
- if (bf->valueP)
+ if (bf->valueP) {
*bf->valueP = value;
+ }
if (bf->action) {
bf->action( value, bf->data );
mswSetTrigger( NULL, NULL );
@@ -647,18 +668,19 @@ LRESULT floatProc(
case WM_NOTVALID:
if (bf->low > MINFLT && bf->high < MAXFLT)
sprintf( mswTmpBuff,
- "Please enter an float value between %0.3f and %0.3f",
- bf->low, bf->high );
+ "Please enter an float value between %0.3f and %0.3f",
+ bf->low, bf->high );
else if (bf->low > MINFLT)
sprintf( mswTmpBuff,
- "Please enter an float value greater or equal to %0.3f",
- bf->low );
+ "Please enter an float value greater or equal to %0.3f",
+ bf->low );
else if (bf->high < MAXFLT)
sprintf( mswTmpBuff,
- "Please enter an float value less or equal to %0.3f",
- bf->high );
- else
+ "Please enter an float value less or equal to %0.3f",
+ bf->high );
+ else {
strcpy( mswTmpBuff, "Please enter an float value" );
+ }
MessageBox( bf->hWnd, mswTmpBuff, "Invalid entry", MB_OK );
SetFocus( bf->hWnd );
#ifdef WIN32
@@ -669,30 +691,31 @@ LRESULT floatProc(
#endif
return TRUE;
- }
+ }
return DefWindowProc( hWnd, message, wParam, lParam );
-}
+}
static callBacks_t floatCallBacks = {
- mswRepaintLabel,
- NULL,
- floatProc };
+ mswRepaintLabel,
+ NULL,
+ floatProc
+};
wFloat_p wFloatCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- wWinPix_t width,
- double low,
- double high,
- double *valueP,
- wFloatCallBack_p action,
- void *data )
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ wWinPix_t width,
+ double low,
+ double high,
+ double *valueP,
+ wFloatCallBack_p action,
+ void *data )
{
wFloat_p b;
RECT rect;
@@ -707,34 +730,38 @@ wFloat_p wFloatCreate(
b->valueP = valueP;
b->labelY += 2;
b->action = action;
- if (option & BO_READONLY)
+ if (option & BO_READONLY) {
style |= ES_READONLY;
+ }
b->hWnd = CreateWindow( "EDIT", NULL,
- ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | style,
- b->x, b->y,
- width, mswEditHeight,
- ((wControl_p)parent)->hWnd, (HMENU)index, mswHInst, NULL );
+ ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | style,
+ b->x, b->y,
+ width, mswEditHeight,
+ ((wControl_p)parent)->hWnd, (HMENU)index, mswHInst, NULL );
if (b->hWnd == NULL) {
mswFail("CreateWindow(FLOAT)");
return b;
}
-
+
newEditProc = MakeProcInstance( (XWNDPROC)pushEdit, mswHInst );
oldEditProc = (XWNDPROC)GetWindowLong(b->hWnd, GWL_WNDPROC );
SetWindowLong( b->hWnd, GWL_WNDPROC, (LONG)newEditProc );
if (b->valueP) {
- b->oldValue = *b->valueP;
- } else
- b->oldValue = 0.0;
- if (b->valueP)
- sprintf( mswTmpBuff, "%0.3f", *b->valueP );
- else
- strcpy( mswTmpBuff, "0.000" );
- if ( !mswThickFont )
+ b->oldValue = *b->valueP;
+ } else {
+ b->oldValue = 0.0;
+ }
+ if (b->valueP) {
+ sprintf( mswTmpBuff, "%0.3f", *b->valueP );
+ } else {
+ strcpy( mswTmpBuff, "0.000" );
+ }
+ if ( !mswThickFont ) {
SendMessage( b->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, 0L );
+ }
SendMessage( b->hWnd, WM_SETTEXT, 0, (DWORD)(LPSTR)mswTmpBuff );
SendMessage( b->hWnd, EM_SETMODIFY, FALSE, 0L );
diff --git a/app/wlib/mswlib/mswint.h b/app/wlib/mswlib/mswint.h
index 5fd5da9..525a37c 100644
--- a/app/wlib/mswlib/mswint.h
+++ b/app/wlib/mswlib/mswint.h
@@ -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 "wlib.h"
@@ -173,9 +173,7 @@ extern HFONT mswOldTextFont;
extern HFONT mswLabelFont;
extern wDrawColor wDrawColorWhite;
extern wDrawColor wDrawColorBlack;
-extern long mswThickFont;
extern double mswScale;
-extern double scaleIcon;
DWORD mswGetBaseStyle( wWin_p );
char * mswStrdup( const char * );
diff --git a/app/wlib/mswlib/mswlines.c b/app/wlib/mswlib/mswlines.c
index f6bb574..a55618e 100644
--- a/app/wlib/mswlib/mswlines.c
+++ b/app/wlib/mswlib/mswlines.c
@@ -1,6 +1,5 @@
#include <windows.h>
#include <string.h>
-#include <malloc.h>
#include <stdlib.h>
#include <commdlg.h>
#include <math.h>
@@ -15,10 +14,10 @@
*/
struct wLine_t {
- WOBJ_COMMON
- int count;
- wLines_t * lines;
- };
+ WOBJ_COMMON
+ int count;
+ wLines_t * lines;
+};
static void repaintLines( HWND hWnd, wControl_p b )
{
@@ -45,24 +44,26 @@ static void repaintLines( HWND hWnd, wControl_p b )
static callBacks_t linesCallBacks = {
- repaintLines,
- NULL,
- NULL };
+ repaintLines,
+ NULL,
+ NULL
+};
wLine_p wLineCreate(
- wWin_p parent,
- const char * labelStr,
- int count,
- wLines_t * lines )
+ wWin_p parent,
+ const char * labelStr,
+ int count,
+ wLines_t * lines )
{
wLine_p b;
wLines_p lp;
wWinPix_t minX, maxX, minY, maxY;
int index;
- if (count <= 0)
+ if (count <= 0) {
return NULL;
+ }
b = (wLine_p)mswAlloc( parent, B_LINES, labelStr, sizeof *b, NULL, &index );
b->count = count;
b->lines = lines;
@@ -71,22 +72,30 @@ wLine_p wLineCreate(
minX = maxX = lp->x0;
minY = maxY = lp->y0;
for (lp=lines; lp<&b->lines[count]; lp++) {
- if (minX > lp->x0)
+ if (minX > lp->x0) {
minX = lp->x0;
- if (maxX < lp->x0)
+ }
+ if (maxX < lp->x0) {
maxX = lp->x0;
- if (minY > lp->y0)
+ }
+ if (minY > lp->y0) {
minY = lp->y0;
- if (maxY < lp->y0)
+ }
+ if (maxY < lp->y0) {
maxY = lp->y0;
- if (minX > lp->x1)
+ }
+ if (minX > lp->x1) {
minX = lp->x1;
- if (maxX < lp->x1)
+ }
+ if (maxX < lp->x1) {
maxX = lp->x1;
- if (minY > lp->y1)
+ }
+ if (minY > lp->y1) {
minY = lp->y1;
- if (maxY < lp->y1)
+ }
+ if (maxY < lp->y1) {
maxY = lp->y1;
+ }
}
b->x = minX;
b->y = minY;
diff --git a/app/wlib/mswlib/mswlist.c b/app/wlib/mswlib/mswlist.c
index 836f4f0..c955c25 100644
--- a/app/wlib/mswlib/mswlist.c
+++ b/app/wlib/mswlib/mswlist.c
@@ -1,6 +1,5 @@
#include <windows.h>
#include <string.h>
-#include <malloc.h>
#include <stdlib.h>
#include <commdlg.h>
#include <math.h>
@@ -20,44 +19,45 @@ static XWNDPROC oldComboProc = NULL;
static XWNDPROC newComboProc;
struct wList_t {
- WOBJ_COMMON
- int count;
- int last;
- long * valueP;
- wListCallBack_p action;
- wBool_t editable;
- int colCnt;
- wWinPix_t * colWidths;
- wBool_t * colRightJust;
- const char * * colTitles;
- wWinPix_t maxWidth;
- wWinPix_t scrollPos;
- HWND hScrollWnd;
- wWinPix_t scrollH;
- wWinPix_t dragPos;
- int dragCol;
- wWinPix_t dragColWidth;
- };
+ WOBJ_COMMON
+ int count;
+ int last;
+ long * valueP;
+ wListCallBack_p action;
+ wBool_t editable;
+ int colCnt;
+ wWinPix_t * colWidths;
+ wBool_t * colRightJust;
+ const char * * colTitles;
+ wWinPix_t maxWidth;
+ wWinPix_t scrollPos;
+ HWND hScrollWnd;
+ wWinPix_t scrollH;
+ wWinPix_t dragPos;
+ int dragCol;
+ wWinPix_t dragColWidth;
+};
typedef struct {
- void * itemContext;
- wIcon_p bm;
- wBool_t selected;
- } listData;
+ void * itemContext;
+ wIcon_p bm;
+ wBool_t selected;
+} listData;
static int LIST_HEIGHT = 19;
static int listTitleHeight = 16;
void wListClear(
- wList_p b )
+ wList_p b )
{
UINT msg;
- if (b->type==B_LIST)
+ if (b->type==B_LIST) {
msg = LB_RESETCONTENT;
- else
+ } else {
msg = CB_RESETCONTENT;
+ }
SendMessage( b->hWnd, msg, (WPARAM)0, (LPARAM)0 );
b->last = -1;
b->count = 0;
@@ -73,20 +73,21 @@ void wListSetSize( wList_p bl, wWinPix_t w, wWinPix_t h )
bl->w = w;
bl->h = h;
- y = bl->y;
- if ( bl->hScrollWnd && bl->maxWidth > bl->w )
+ y = bl->y;
+ if ( bl->hScrollWnd && bl->maxWidth > bl->w ) {
h -= bl->scrollH;
+ }
if ( bl->colTitles ) {
h -= listTitleHeight;
y += listTitleHeight;
}
rc = SetWindowPos( bl->hWnd, HWND_TOP, 0, 0,
- w, h, SWP_NOMOVE|SWP_NOZORDER);
+ w, h, SWP_NOMOVE|SWP_NOZORDER);
if ( bl->hScrollWnd ) {
if ( bl->maxWidth > bl->w ) {
GetClientRect( bl->hWnd, &rect );
rc = SetWindowPos( bl->hScrollWnd, HWND_TOP, bl->x, y+rect.bottom+2,
- bl->w, bl->scrollH, SWP_NOZORDER);
+ bl->w, bl->scrollH, SWP_NOZORDER);
ShowWindow( bl->hScrollWnd, SW_SHOW );
} else {
ShowWindow( bl->hScrollWnd, SW_HIDE );
@@ -97,71 +98,77 @@ void wListSetSize( wList_p bl, wWinPix_t w, wWinPix_t h )
void wListSetIndex(
- wList_p bl,
- int index )
+ wList_p bl,
+ int index )
{
listData * ldp;
wListGetCount(bl);
- if ( index >= bl->count )
+ if ( index >= bl->count ) {
index = bl->count-1;
- if ( bl->last == index && index == -1 )
+ }
+ if ( bl->last == index && index == -1 ) {
return;
+ }
if ( bl->type==B_LIST && (bl->option&BL_MANY) != 0 ) {
- if ( bl->last != -1 )
+ if ( bl->last != -1 ) {
SendMessage( bl->hWnd, LB_SETSEL, (WPARAM)0, (LPARAM)bl->last );
- if ( index >= 0 )
+ }
+ if ( index >= 0 ) {
SendMessage( bl->hWnd, LB_SETSEL, (WPARAM)1, (LPARAM)index );
+ }
} else {
SendMessage( bl->hWnd,
- bl->type==B_LIST?LB_SETCURSEL:CB_SETCURSEL, (WPARAM)index, (LPARAM)0 );
+ bl->type==B_LIST?LB_SETCURSEL:CB_SETCURSEL, (WPARAM)index, (LPARAM)0 );
}
if ( bl->last >= 0 ) {
ldp = (listData*)SendMessage( bl->hWnd,
- (bl->type==B_LIST?LB_GETITEMDATA:CB_GETITEMDATA),
- (WPARAM)bl->last, (LPARAM)0 );
- if ( ldp && ldp!=(void*)LB_ERR )
+ (bl->type==B_LIST?LB_GETITEMDATA:CB_GETITEMDATA),
+ (WPARAM)bl->last, (LPARAM)0 );
+ if ( ldp && ldp!=(void*)LB_ERR ) {
ldp->selected = FALSE;
+ }
}
if ( index >= 0 ) {
ldp = (listData*)SendMessage( bl->hWnd,
- (bl->type==B_LIST?LB_GETITEMDATA:CB_GETITEMDATA),
- (WPARAM)index, (LPARAM)0 );
- if ( ldp && ldp!=(void*)LB_ERR )
+ (bl->type==B_LIST?LB_GETITEMDATA:CB_GETITEMDATA),
+ (WPARAM)index, (LPARAM)0 );
+ if ( ldp && ldp!=(void*)LB_ERR ) {
ldp->selected = TRUE;
+ }
}
/*if (b->option&BL_ICON)*/
- InvalidateRect( bl->hWnd, NULL, FALSE );
+ InvalidateRect( bl->hWnd, NULL, FALSE );
bl->last = index;
}
wIndex_t wListGetIndex(
- wList_p b )
+ wList_p b )
{
return b->last;
}
void wListSetActive(
- wList_p b,
- int inx,
- wBool_t active )
+ wList_p b,
+ int inx,
+ wBool_t active )
{
}
void wListSetEditable(
- wList_p b,
- wBool_t editable )
+ wList_p b,
+ wBool_t editable )
{
b->editable = editable;
}
void wListSetValue(
- wList_p bl,
- const char * val )
+ wList_p bl,
+ const char * val )
{
if ( bl->type == B_DROPLIST ) {
SendMessage( bl->hWnd, WM_SETTEXT, (WPARAM)0, (LPARAM)val );
@@ -171,30 +178,31 @@ void wListSetValue(
wIndex_t wListFindValue(
- wList_p bl,
- const char * val )
+ wList_p bl,
+ const char * val )
{
wIndex_t inx;
WORD cnt;
wListGetCount(bl);
for ( inx = 0; inx < bl->count ; inx++ ) {
cnt = (int)SendMessage( bl->hWnd,
- (bl->type==B_LIST?LB_GETTEXT:CB_GETLBTEXT), (WPARAM)inx,
- (LPARAM)mswTmpBuff );
+ (bl->type==B_LIST?LB_GETTEXT:CB_GETLBTEXT), (WPARAM)inx,
+ (LPARAM)mswTmpBuff );
mswTmpBuff[cnt] = '\0';
- if ( strcmp( val, mswTmpBuff ) == 0 )
+ if ( strcmp( val, mswTmpBuff ) == 0 ) {
return inx;
+ }
}
return -1;
}
wIndex_t wListGetValues(
- wList_p bl,
- char * s,
- int siz,
- void * * listContextRef,
- void * * itemContextRef )
+ wList_p bl,
+ char * s,
+ int siz,
+ void * * listContextRef,
+ void * * itemContextRef )
{
WORD cnt;
WORD msg;
@@ -204,8 +212,9 @@ wIndex_t wListGetValues(
msg = WM_GETTEXT;
inx = sizeof mswTmpBuff;
} else {
- if ( bl->last < 0 )
+ if ( bl->last < 0 ) {
goto EMPTY;
+ }
if ( bl->type==B_LIST ) {
msg = LB_GETTEXT;
} else {
@@ -220,29 +229,32 @@ wIndex_t wListGetValues(
}
if (bl->last >= 0) {
ldp = (listData*)SendMessage( bl->hWnd,
- (bl->type==B_LIST?LB_GETITEMDATA:CB_GETITEMDATA),
- (WPARAM)bl->last, (LPARAM)0 );
- if ( ldp==(listData*)LB_ERR )
+ (bl->type==B_LIST?LB_GETITEMDATA:CB_GETITEMDATA),
+ (WPARAM)bl->last, (LPARAM)0 );
+ if ( ldp==(listData*)LB_ERR ) {
ldp = NULL;
+ }
} else {
ldp = NULL;
}
EMPTY:
- if (itemContextRef)
+ if (itemContextRef) {
*itemContextRef = (ldp?ldp->itemContext:NULL);
- if (listContextRef)
+ }
+ if (listContextRef) {
*listContextRef = bl->data;
+ }
return bl->last;
}
wBool_t wListSetValues(
- wList_p b,
- wIndex_t inx,
- const char * labelStr,
- wIcon_p bm,
- void * itemData )
+ wList_p b,
+ wIndex_t inx,
+ const char * labelStr,
+ wIcon_p bm,
+ void * itemData )
{
- listData * ldp;
+ listData * ldp;
WORD curSel = -1;
ldp = (listData*)malloc( sizeof *ldp );
ldp->itemContext = itemData;
@@ -250,40 +262,40 @@ wBool_t wListSetValues(
ldp->selected = FALSE;
if ( (b->option&BL_MANY) == 0 )
curSel = (WORD)SendMessage( b->hWnd,
- (UINT)b->type==B_LIST?LB_GETCURSEL:CB_GETCURSEL,
- (WPARAM)0,
- (LPARAM)0 );
+ (UINT)b->type==B_LIST?LB_GETCURSEL:CB_GETCURSEL,
+ (WPARAM)0,
+ (LPARAM)0 );
SendMessage( b->hWnd,
- (UINT)b->type==B_LIST?LB_DELETESTRING:CB_DELETESTRING,
- (WPARAM)inx,
- (LPARAM)0 );
+ (UINT)b->type==B_LIST?LB_DELETESTRING:CB_DELETESTRING,
+ (WPARAM)inx,
+ (LPARAM)0 );
inx = (wIndex_t)SendMessage( b->hWnd,
- (UINT)b->type==B_LIST?LB_INSERTSTRING:CB_INSERTSTRING,
- (WPARAM)inx,
- (LPARAM)labelStr );
+ (UINT)b->type==B_LIST?LB_INSERTSTRING:CB_INSERTSTRING,
+ (WPARAM)inx,
+ (LPARAM)labelStr );
SendMessage( b->hWnd,
- (UINT)b->type==B_LIST?LB_SETITEMDATA:CB_SETITEMDATA,
- (WPARAM)inx,
- (LPARAM)ldp );
+ (UINT)b->type==B_LIST?LB_SETITEMDATA:CB_SETITEMDATA,
+ (WPARAM)inx,
+ (LPARAM)ldp );
if ( (b->option&BL_MANY) == 0 && curSel == (WORD)inx)
- SendMessage( b->hWnd,
- (UINT)b->type==B_LIST?LB_SETCURSEL:CB_SETCURSEL,
- (WPARAM)inx,
- (LPARAM)0 );
+ SendMessage( b->hWnd,
+ (UINT)b->type==B_LIST?LB_SETCURSEL:CB_SETCURSEL,
+ (WPARAM)inx,
+ (LPARAM)0 );
/*if (b->option&BL_ICON)*/
- InvalidateRect( b->hWnd, NULL, FALSE );
+ InvalidateRect( b->hWnd, NULL, FALSE );
return TRUE;
}
void wListDelete(
- wList_p b,
- wIndex_t inx )
+ wList_p b,
+ wIndex_t inx )
{
SendMessage( b->hWnd,
- (UINT)b->type==B_LIST?LB_DELETESTRING:CB_DELETESTRING,
- (WPARAM)inx,
- (LPARAM)0 );
+ (UINT)b->type==B_LIST?LB_DELETESTRING:CB_DELETESTRING,
+ (WPARAM)inx,
+ (LPARAM)0 );
}
@@ -301,69 +313,71 @@ void wListSelectAll( wList_p bl )
// mark all items selected
SendMessage( bl->hWnd,
- LB_SETSEL,
- (WPARAM)TRUE,
- (LPARAM)-1 );
+ LB_SETSEL,
+ (WPARAM)TRUE,
+ (LPARAM)-1 );
- // and synchronize the internal data structures
+ // and synchronize the internal data structures
wListGetCount(bl);
for ( inx=0; inx<bl->count; inx++ ) {
ldp = (listData*)SendMessage( bl->hWnd,
- (bl->type==B_LIST?LB_GETITEMDATA:CB_GETITEMDATA),
- (WPARAM)inx, (LPARAM)0 );
+ (bl->type==B_LIST?LB_GETITEMDATA:CB_GETITEMDATA),
+ (WPARAM)inx, (LPARAM)0 );
ldp->selected = TRUE;
SendMessage( bl->hWnd,
- (UINT)bl->type==B_LIST?LB_SETITEMDATA:CB_SETITEMDATA,
- (WPARAM)inx,
- (LPARAM)ldp );
+ (UINT)bl->type==B_LIST?LB_SETITEMDATA:CB_SETITEMDATA,
+ (WPARAM)inx,
+ (LPARAM)ldp );
}
}
wIndex_t wListGetCount(
- wList_p bl )
-{
- bl->count = (int)SendMessage( bl->hWnd, (UINT)bl->type==B_LIST?LB_GETCOUNT:CB_GETCOUNT, (WPARAM)0, (LPARAM)0 );
+ wList_p bl )
+{
+ bl->count = (int)SendMessage( bl->hWnd,
+ (UINT)bl->type==B_LIST?LB_GETCOUNT:CB_GETCOUNT, (WPARAM)0, (LPARAM)0 );
return bl->count;
}
void * wListGetItemContext(
- wList_p bl,
- wIndex_t inx )
+ wList_p bl,
+ wIndex_t inx )
{
listData * ldp;
wListGetCount(bl);
- if ( inx < 0 || inx >= bl->count ) return NULL;
+ if ( inx < 0 || inx >= bl->count ) { return NULL; }
ldp = (listData*)SendMessage( bl->hWnd,
- (bl->type==B_LIST?LB_GETITEMDATA:CB_GETITEMDATA),
- (WPARAM)inx, (LPARAM)0 );
+ (bl->type==B_LIST?LB_GETITEMDATA:CB_GETITEMDATA),
+ (WPARAM)inx, (LPARAM)0 );
return ((ldp&&ldp!=(void*)LB_ERR)?ldp->itemContext:NULL);
}
wBool_t wListGetItemSelected(
- wList_p bl,
- wIndex_t inx )
+ wList_p bl,
+ wIndex_t inx )
{
listData * ldp;
wListGetCount(bl);
- if ( inx < 0 || inx >= bl->count ) return FALSE;
+ if ( inx < 0 || inx >= bl->count ) { return FALSE; }
ldp = (listData*)SendMessage( bl->hWnd,
- (bl->type==B_LIST?LB_GETITEMDATA:CB_GETITEMDATA),
- (WPARAM)inx, (LPARAM)0 );
+ (bl->type==B_LIST?LB_GETITEMDATA:CB_GETITEMDATA),
+ (WPARAM)inx, (LPARAM)0 );
return ((ldp&&ldp!=(void*)LB_ERR)?ldp->selected:FALSE);
}
wIndex_t wListGetSelectedCount(
- wList_p bl )
+ wList_p bl )
{
wIndex_t selcnt, inx;
wListGetCount(bl);
for ( selcnt=inx=0; inx<bl->count; inx++ )
- if ( wListGetItemSelected( bl, inx ) )
+ if ( wListGetItemSelected( bl, inx ) ) {
selcnt++;
+ }
return selcnt;
}
@@ -371,10 +385,10 @@ wIndex_t wListGetSelectedCount(
wIndex_t wListAddValue(
- wList_p b,
- const char * value,
- wIcon_p bm,
- void * itemContext )
+ wList_p b,
+ const char * value,
+ wIcon_p bm,
+ void * itemContext )
{
int nindex;
listData * ldp;
@@ -382,106 +396,116 @@ wIndex_t wListAddValue(
ldp->itemContext = itemContext;
ldp->bm = bm;
ldp->selected = FALSE;
- if ( value == NULL )
+ if ( value == NULL ) {
value = "";
+ }
b->count++;
nindex = (int)SendMessage(
- b->hWnd,
- (UINT)b->type==B_LIST?LB_ADDSTRING:CB_ADDSTRING,
- (WPARAM)0,
- (LPARAM)value );
+ b->hWnd,
+ (UINT)b->type==B_LIST?LB_ADDSTRING:CB_ADDSTRING,
+ (WPARAM)0,
+ (LPARAM)value );
if (nindex == 0) {
SendMessage( b->hWnd,
- (UINT)b->type==B_LIST?LB_SETCURSEL:CB_SETCURSEL,
- (WPARAM)nindex,
- (LPARAM)0 );
+ (UINT)b->type==B_LIST?LB_SETCURSEL:CB_SETCURSEL,
+ (WPARAM)nindex,
+ (LPARAM)0 );
b->last = 0;
}
SendMessage( b->hWnd,
- (UINT)b->type==B_LIST?LB_SETITEMDATA:CB_SETITEMDATA,
- (WPARAM)nindex,
- (LPARAM)ldp );
+ (UINT)b->type==B_LIST?LB_SETITEMDATA:CB_SETITEMDATA,
+ (WPARAM)nindex,
+ (LPARAM)ldp );
return nindex;
}
int wListGetColumnWidths(
- wList_p bl,
- int colCnt,
- wWinPix_t * colWidths )
+ wList_p bl,
+ int colCnt,
+ wWinPix_t * colWidths )
{
wIndex_t inx;
- if ( bl->type != B_LIST )
+ if ( bl->type != B_LIST ) {
return 0;
- if ( bl->colWidths == NULL )
+ }
+ if ( bl->colWidths == NULL ) {
return 0;
+ }
for ( inx=0; inx<colCnt; inx++ ) {
- if ( inx < bl->colCnt )
+ if ( inx < bl->colCnt ) {
colWidths[inx] = bl->colWidths[inx];
- else
+ } else {
colWidths[inx] = 0;
+ }
}
return bl->colCnt;
}
static void listSetBusy(
- wControl_p b,
- BOOL_T busy)
+ wControl_p b,
+ BOOL_T busy)
{
wList_p bl = (wList_p)b;
EnableWindow( bl->hWnd, !(BOOL)busy );
- if ( bl->hScrollWnd )
+ if ( bl->hScrollWnd ) {
EnableWindow( bl->hScrollWnd, !(BOOL)busy );
+ }
}
static void listShow(
- wControl_p b,
- BOOL_T show)
+ wControl_p b,
+ BOOL_T show)
{
wList_p bl = (wList_p)b;
ShowWindow( bl->hWnd, show?SW_SHOW:SW_HIDE );
- if ( bl->hScrollWnd && bl->maxWidth > bl->w )
+ if ( bl->hScrollWnd && bl->maxWidth > bl->w ) {
ShowWindow( bl->hScrollWnd, show?SW_SHOW:SW_HIDE );
+ }
#ifdef SHOW_DOES_SETFOCUS
- if ( show && (bl->option&BO_READONLY)==0 )
+ if ( show && (bl->option&BO_READONLY)==0 ) {
hWnd = SetFocus( bl->hWnd );
+ }
#endif
}
static void listSetPos(
- wControl_p b,
- wWinPix_t x,
- wWinPix_t y )
+ wControl_p b,
+ wWinPix_t x,
+ wWinPix_t y )
{
wList_p bl = (wList_p)b;
wWinPix_t x1, y1;
RECT rect;
-
+
bl->x = x1 = x;
bl->y = y1 = y;
- if ( bl->colTitles )
+ if ( bl->colTitles ) {
y1 += listTitleHeight;
+ }
if (!SetWindowPos( b->hWnd, HWND_TOP, x1, y1,
- CW_USEDEFAULT, CW_USEDEFAULT,
- SWP_NOSIZE|SWP_NOZORDER))
- mswFail("listSetPos");
+ CW_USEDEFAULT, CW_USEDEFAULT,
+ SWP_NOSIZE|SWP_NOZORDER)) {
+ mswFail("listSetPos");
+ }
if ( bl->hScrollWnd && bl->maxWidth > bl->w ) {
GetClientRect( bl->hWnd, &rect );
if (!SetWindowPos( bl->hScrollWnd, HWND_TOP, x1, y1+rect.bottom+2,
- CW_USEDEFAULT, CW_USEDEFAULT,
- SWP_NOSIZE|SWP_NOZORDER))
- mswFail("listSetPos2");
+ CW_USEDEFAULT, CW_USEDEFAULT,
+ SWP_NOSIZE|SWP_NOZORDER)) {
+ mswFail("listSetPos2");
+ }
}
}
static void listRepaintLabel(
- HWND hWnd,
- wControl_p b )
+ HWND hWnd,
+ wControl_p b )
{
wList_p bl = (wList_p)b;
HDC hDc;
@@ -495,8 +519,9 @@ static void listRepaintLabel(
wWinPix_t colWidth;
mswRepaintLabel( hWnd, b );
- if ( bl->colTitles == NULL )
+ if ( bl->colTitles == NULL ) {
return;
+ }
hDc = GetDC( hWnd );
start = bl->x-bl->scrollPos+2;
rc.top = bl->y;
@@ -506,7 +531,7 @@ static void listRepaintLabel(
hBrush = CreateSolidBrush( GetSysColor( COLOR_BTNFACE ) );
FillRect( hDc, &rc, hBrush );
SetBkColor( hDc, GetSysColor( COLOR_BTNFACE ) );
-
+
hFont = SelectObject( hDc, mswLabelFont );
hPen1 = CreatePen( PS_SOLID, 0, GetSysColor( COLOR_BTNTEXT ) );
hPen2 = CreatePen( PS_SOLID, 0, GetSysColor( COLOR_BTNHIGHLIGHT ) );
@@ -527,28 +552,31 @@ static void listRepaintLabel(
LineTo( hDc, rc.right-1, rc.top+1 );
rc.top += 2;
rc.bottom -= 1;
- for ( inx=0,title=bl->colTitles; inx<bl->colCnt&&*title&&start<bl->x+bl->w; inx++ ) {
+ for ( inx=0,title=bl->colTitles; inx<bl->colCnt&&*title
+ &&start<bl->x+bl->w; inx++ ) {
colWidth = bl->colWidths[inx];
if ( start+colWidth >= 3 ) {
rc.left = start;
- if ( rc.left < bl->x+2 )
+ if ( rc.left < bl->x+2 ) {
rc.left = bl->x+2;
+ }
rc.right = start+colWidth;
- if ( rc.right > bl->x+bl->w-1 )
+ if ( rc.right > bl->x+bl->w-1 ) {
rc.right = bl->x+bl->w-1;
+ }
ExtTextOut( hDc, start+1, rc.top+0,
- ETO_CLIPPED|ETO_OPAQUE, &rc,
- *title, (int)(strlen(*title)), NULL );
+ ETO_CLIPPED|ETO_OPAQUE, &rc,
+ *title, (int)(strlen(*title)), NULL );
if ( start-bl->x >= 3 ) {
- SelectObject( hDc, hPen1 );
- MoveTo( hDc, start-1, rc.top-1 );
- LineTo( hDc, start-1, rc.bottom+3 );
- SelectObject( hDc, hPen2 );
- MoveTo( hDc, start, rc.top );
- LineTo( hDc, start, rc.bottom+1 );
- SelectObject( hDc, hPen3 );
- MoveTo( hDc, start-2, rc.top );
- LineTo( hDc, start-2, rc.bottom+1 );
+ SelectObject( hDc, hPen1 );
+ MoveTo( hDc, start-1, rc.top-1 );
+ LineTo( hDc, start-1, rc.bottom+3 );
+ SelectObject( hDc, hPen2 );
+ MoveTo( hDc, start, rc.top );
+ LineTo( hDc, start, rc.bottom+1 );
+ SelectObject( hDc, hPen3 );
+ MoveTo( hDc, start-2, rc.top );
+ LineTo( hDc, start-2, rc.bottom+1 );
}
}
title++;
@@ -581,12 +609,12 @@ static void listHandleFocusState( LPDRAWITEMSTRUCT lpdis, LPRECT rc )
LRESULT listProc(
- wControl_p b,
- HWND hWnd,
- UINT message,
- WPARAM wParam,
- LPARAM lParam )
-{
+ wControl_p b,
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
+{
wList_p bl = (wList_p)b;
int cnt, inx, selected;
size_t len;
@@ -607,345 +635,380 @@ LRESULT listProc(
COLORREF col;
if (bl) switch( message ) {
-
- case WM_COMMAND:
- notification = WCMD_PARAM_NOTF;
- switch (bl->type) {
- case B_LIST:
- switch (notification) {
- case LBN_SELCHANGE:
- case LBN_DBLCLK:
- if ( (bl->option&BL_DBLCLICK)!=0 ?
- notification!=LBN_DBLCLK :
- notification==LBN_DBLCLK )
- break;
- if ( (bl->option&BL_MANY) ) {
- wListGetCount(bl);
- for ( inx=0; inx<bl->count; inx++ ) {
- ldp = (listData*)SendMessage( bl->hWnd, LB_GETITEMDATA, (WPARAM)inx, (LPARAM)0 );
- if ( ldp != NULL && ldp != (void*)LB_ERR ) {
- selected = ((long)SendMessage( bl->hWnd, LB_GETSEL, (WPARAM)inx, (LPARAM)0 ) != 0L );
- if ( selected != ldp->selected ) {
- ldp->selected = selected;
- if ( selected ) {
- bl->last = inx;
- cnt = (int)SendMessage( bl->hWnd, LB_GETTEXT, (WPARAM)bl->last, (LPARAM)mswTmpBuff );
- mswTmpBuff[cnt] = '\0';
- } else {
- mswTmpBuff[0] = '\0';
+
+ case WM_COMMAND:
+ notification = WCMD_PARAM_NOTF;
+ switch (bl->type) {
+ case B_LIST:
+ switch (notification) {
+ case LBN_SELCHANGE:
+ case LBN_DBLCLK:
+ if ( (bl->option&BL_DBLCLICK)!=0 ?
+ notification!=LBN_DBLCLK :
+ notification==LBN_DBLCLK ) {
+ break;
+ }
+ if ( (bl->option&BL_MANY) ) {
+ wListGetCount(bl);
+ for ( inx=0; inx<bl->count; inx++ ) {
+ ldp = (listData*)SendMessage( bl->hWnd, LB_GETITEMDATA, (WPARAM)inx,
+ (LPARAM)0 );
+ if ( ldp != NULL && ldp != (void*)LB_ERR ) {
+ selected = ((long)SendMessage( bl->hWnd, LB_GETSEL, (WPARAM)inx,
+ (LPARAM)0 ) != 0L );
+ if ( selected != ldp->selected ) {
+ ldp->selected = selected;
+ if ( selected ) {
+ bl->last = inx;
+ cnt = (int)SendMessage( bl->hWnd, LB_GETTEXT, (WPARAM)bl->last,
+ (LPARAM)mswTmpBuff );
+ mswTmpBuff[cnt] = '\0';
+ } else {
+ mswTmpBuff[0] = '\0';
+ }
+ if ( bl->action ) {
+ bl->action( inx, mswTmpBuff, selected?1:2, bl->data, ldp->itemContext );
+ }
+ if ( selected && bl->valueP ) {
+ *bl->valueP = bl->last;
+ }
+ }
}
- if ( bl->action )
- bl->action( inx, mswTmpBuff, selected?1:2, bl->data, ldp->itemContext );
- if ( selected && bl->valueP )
- *bl->valueP = bl->last;
}
+ } else {
+ bl->last = (int)SendMessage( bl->hWnd, LB_GETCURSEL, (WPARAM)0, (LPARAM)0 );
+ cnt = (int)SendMessage( bl->hWnd, LB_GETTEXT, (WPARAM)bl->last,
+ (LPARAM)mswTmpBuff );
+ mswTmpBuff[cnt] = '\0';
+ if (bl->action) {
+ ldp = (listData*)SendMessage( bl->hWnd, LB_GETITEMDATA,
+ (WPARAM)bl->last, (LPARAM)0 );
+ bl->action( bl->last, mswTmpBuff, 1, bl->data,
+ ((bl->last>=0&&ldp&&ldp!=(void*)LB_ERR)?ldp->itemContext:NULL) );
+ }
+ if (bl->valueP) {
+ *bl->valueP = bl->last;
+ }
+ }
+ break;
+
+ case LBN_KILLFOCUS:
+ if ( ( bl->option&BL_MANY ) == 0 &&
+ bl->last != (int)SendMessage( bl->hWnd, LB_GETCURSEL, (WPARAM)0, (LPARAM)0 ) ) {
+ (void)SendMessage( bl->hWnd, LB_SETCURSEL, (WPARAM)bl->last, (LPARAM)0 );
+ }
+ break;
+ }
+ break;
+
+ case B_DROPLIST:
+ case B_COMBOLIST:
+ switch (notification) {
+ case CBN_SELCHANGE:
+ case CBN_DBLCLK:
+ if ( (bl->type == B_DROPLIST) ||
+ ( (bl->option&BL_DBLCLICK)!=0 ?
+ notification!=CBN_DBLCLK :
+ notification==CBN_DBLCLK) ) {
+ break;
}
+
+ case CBN_CLOSEUP:
+ bl->last = (int)SendMessage( bl->hWnd, CB_GETCURSEL, (WPARAM)0, (LPARAM)0 );
+ if (bl->last < 0) {
+ break;
}
- } else {
- bl->last = (int)SendMessage( bl->hWnd, LB_GETCURSEL, (WPARAM)0, (LPARAM)0 );
- cnt = (int)SendMessage( bl->hWnd, LB_GETTEXT, (WPARAM)bl->last,
- (LPARAM)mswTmpBuff );
- mswTmpBuff[cnt] = '\0';
if (bl->action) {
- ldp = (listData*)SendMessage( bl->hWnd, LB_GETITEMDATA,
- (WPARAM)bl->last, (LPARAM)0 );
+ cnt = (int)SendMessage( bl->hWnd, CB_GETLBTEXT,
+ (WPARAM)bl->last, (LPARAM)mswTmpBuff );
+ ldp = (listData*)SendMessage( bl->hWnd, CB_GETITEMDATA,
+ (WPARAM)bl->last, (LPARAM)0 );
+ mswTmpBuff[cnt] = '\0';
bl->action( bl->last, mswTmpBuff, 1, bl->data,
- ((bl->last>=0&&ldp&&ldp!=(void*)LB_ERR)?ldp->itemContext:NULL) );
+ ((bl->last>=0&&ldp&&ldp!=(void*)LB_ERR)?ldp->itemContext:NULL) );
}
if (bl->valueP) {
*bl->valueP = bl->last;
}
- }
- break;
-
- case LBN_KILLFOCUS:
- if ( ( bl->option&BL_MANY ) == 0 &&
- bl->last != (int)SendMessage( bl->hWnd, LB_GETCURSEL, (WPARAM)0, (LPARAM)0 ) )
- (void)SendMessage( bl->hWnd, LB_SETCURSEL, (WPARAM)bl->last, (LPARAM)0 );
- break;
- }
- break;
-
- case B_DROPLIST:
- case B_COMBOLIST:
- switch (notification) {
- case CBN_SELCHANGE:
- case CBN_DBLCLK:
- if ( (bl->type == B_DROPLIST) ||
- ( (bl->option&BL_DBLCLICK)!=0 ?
- notification!=CBN_DBLCLK :
- notification==CBN_DBLCLK) )
+ mswAllowBalloonHelp = TRUE;
+ /*SendMessage( bl->bWnd, CB_SETCURSEL, bl->last, 0L );*/
break;
- case CBN_CLOSEUP:
- bl->last = (int)SendMessage( bl->hWnd, CB_GETCURSEL, (WPARAM)0, (LPARAM)0 );
- if (bl->last < 0)
+ case CBN_KILLFOCUS:
+ inx = (int)SendMessage( bl->hWnd, CB_GETCURSEL, (WPARAM)0, (LPARAM)0 );
+ if ( bl->last != inx ) {
+ (void)SendMessage( bl->hWnd, CB_SETCURSEL, (WPARAM)bl->last, (LPARAM)0 );
+ }
break;
- if (bl->action) {
- cnt = (int)SendMessage( bl->hWnd, CB_GETLBTEXT,
- (WPARAM)bl->last, (LPARAM)mswTmpBuff );
- ldp = (listData*)SendMessage( bl->hWnd, CB_GETITEMDATA,
- (WPARAM)bl->last, (LPARAM)0 );
- mswTmpBuff[cnt] = '\0';
- bl->action( bl->last, mswTmpBuff, 1, bl->data,
- ((bl->last>=0&&ldp&&ldp!=(void*)LB_ERR)?ldp->itemContext:NULL) );
- }
- if (bl->valueP) {
- *bl->valueP = bl->last;
- }
- mswAllowBalloonHelp = TRUE;
- /*SendMessage( bl->bWnd, CB_SETCURSEL, bl->last, 0L );*/
- break;
- case CBN_KILLFOCUS:
- inx = (int)SendMessage( bl->hWnd, CB_GETCURSEL, (WPARAM)0, (LPARAM)0 );
- if ( bl->last != inx )
- (void)SendMessage( bl->hWnd, CB_SETCURSEL, (WPARAM)bl->last, (LPARAM)0 );
- break;
-
- case CBN_DROPDOWN:
- mswAllowBalloonHelp = FALSE;
- break;
+ case CBN_DROPDOWN:
+ mswAllowBalloonHelp = FALSE;
+ break;
- case CBN_EDITCHANGE:
- bl->last = -1;
- if (bl->action) {
- cnt = (int)SendMessage( bl->hWnd, WM_GETTEXT, (WPARAM)sizeof mswTmpBuff,
- (LPARAM)mswTmpBuff );
- mswTmpBuff[cnt] = '\0';
- bl->action( -1, mswTmpBuff, 1, bl->data, NULL );
+ case CBN_EDITCHANGE:
+ bl->last = -1;
+ if (bl->action) {
+ cnt = (int)SendMessage( bl->hWnd, WM_GETTEXT, (WPARAM)sizeof mswTmpBuff,
+ (LPARAM)mswTmpBuff );
+ mswTmpBuff[cnt] = '\0';
+ bl->action( -1, mswTmpBuff, 1, bl->data, NULL );
+ }
+ break;
}
break;
}
break;
- }
- break;
- case WM_MEASUREITEM:
- lpmis = (LPMEASUREITEMSTRUCT)lParam;
- hDc = GetDC( hWnd );
- if ( bl->type == B_LIST )
- hFont = SelectObject( hDc, mswLabelFont );
- GetTextMetrics( hDc, &tm );
- lpmis->itemHeight = tm.tmHeight;
- if ( bl->type == B_LIST )
- SelectObject( hDc, hFont );
- ReleaseDC( hWnd, hDc );
- break;
+ case WM_MEASUREITEM:
+ lpmis = (LPMEASUREITEMSTRUCT)lParam;
+ hDc = GetDC( hWnd );
+ if ( bl->type == B_LIST ) {
+ hFont = SelectObject( hDc, mswLabelFont );
+ }
+ GetTextMetrics( hDc, &tm );
+ lpmis->itemHeight = tm.tmHeight;
+ if ( bl->type == B_LIST ) {
+ SelectObject( hDc, hFont );
+ }
+ ReleaseDC( hWnd, hDc );
+ break;
- case WM_DRAWITEM:
- lpdis = (LPDRAWITEMSTRUCT)lParam;
- if (lpdis->itemID == -1) {
- listHandleFocusState(lpdis, &lpdis->rcItem);
- return TRUE;
- }
- ldp = (listData*)SendMessage( bl->hWnd,
- (bl->type==B_LIST?LB_GETITEMDATA:CB_GETITEMDATA),
- (WPARAM)lpdis->itemID, (LPARAM)0);
- rc = lpdis->rcItem;
- if (lpdis->itemAction & (ODA_DRAWENTIRE|ODA_SELECT|ODA_FOCUS)) {
- if( bl->type == B_LIST )
- hFont = SelectObject( lpdis->hDC, mswLabelFont );
- cnt = (int)SendMessage( lpdis->hwndItem,
- (bl->type==B_LIST?LB_GETTEXT:CB_GETLBTEXT),
- (WPARAM)lpdis->itemID, (LPARAM)mswTmpBuff );
- mswTmpBuff[cnt] = '\0';
- if ( lpdis->itemState & ODS_SELECTED ) {
- SetTextColor( lpdis->hDC, GetSysColor( COLOR_HIGHLIGHTTEXT ) );
- SetBkColor( lpdis->hDC, GetSysColor( COLOR_HIGHLIGHT ) );
- } else {
- SetTextColor( lpdis->hDC, GetSysColor( COLOR_WINDOWTEXT ) );
- SetBkColor( lpdis->hDC, GetSysColor( COLOR_WINDOW ) );
+ case WM_DRAWITEM:
+ lpdis = (LPDRAWITEMSTRUCT)lParam;
+ if (lpdis->itemID == -1) {
+ listHandleFocusState(lpdis, &lpdis->rcItem);
+ return TRUE;
}
- rc1 = rc;
- rc1.left -= bl->scrollPos;
- for ( inx=0,cp0=mswTmpBuff; inx<bl->colCnt&&cp0&&rc1.left<rc.right; inx++ ) {
- if ( inx>=bl->colCnt-1 || (cp1=strchr(cp0,'\t')) == NULL ) {
- len = strlen( cp0 );
- cp1=cp0 + len; // JBB, to avoid an MSC error below where cp1 has not been defined.
- } else {
- len = cp1-cp0;
- cp1 ++;
+ ldp = (listData*)SendMessage( bl->hWnd,
+ (bl->type==B_LIST?LB_GETITEMDATA:CB_GETITEMDATA),
+ (WPARAM)lpdis->itemID, (LPARAM)0);
+ rc = lpdis->rcItem;
+ if (lpdis->itemAction & (ODA_DRAWENTIRE|ODA_SELECT|ODA_FOCUS)) {
+ if( bl->type == B_LIST ) {
+ hFont = SelectObject( lpdis->hDC, mswLabelFont );
}
- if ( bl->colWidths ) {
- colWidth = bl->colWidths[inx];
+ cnt = (int)SendMessage( lpdis->hwndItem,
+ (bl->type==B_LIST?LB_GETTEXT:CB_GETLBTEXT),
+ (WPARAM)lpdis->itemID, (LPARAM)mswTmpBuff );
+ mswTmpBuff[cnt] = '\0';
+ if ( lpdis->itemState & ODS_SELECTED ) {
+ SetTextColor( lpdis->hDC, GetSysColor( COLOR_HIGHLIGHTTEXT ) );
+ SetBkColor( lpdis->hDC, GetSysColor( COLOR_HIGHLIGHT ) );
} else {
- colWidth = rc.right;
+ SetTextColor( lpdis->hDC, GetSysColor( COLOR_WINDOWTEXT ) );
+ SetBkColor( lpdis->hDC, GetSysColor( COLOR_WINDOW ) );
}
- if ( inx == 0 && ldp && ldp!=(void*)LB_ERR && ldp->bm ) {
- if (mswPalette) {
- SelectPalette( lpdis->hDC, mswPalette, 0 );
- cnt = RealizePalette( lpdis->hDC );
+ rc1 = rc;
+ rc1.left -= bl->scrollPos;
+ for ( inx=0,cp0=mswTmpBuff; inx<bl->colCnt&&cp0&&rc1.left<rc.right; inx++ ) {
+ if ( inx>=bl->colCnt-1 || (cp1=strchr(cp0,'\t')) == NULL ) {
+ len = strlen( cp0 );
+ cp1=cp0 + len; // JBB, to avoid an MSC error below where cp1 has not been defined.
+ } else {
+ len = cp1-cp0;
+ cp1 ++;
+ }
+ if ( bl->colWidths ) {
+ colWidth = bl->colWidths[inx];
+ } else {
+ colWidth = rc.right;
+ }
+ if ( inx == 0 && ldp && ldp!=(void*)LB_ERR && ldp->bm ) {
+ if (mswPalette) {
+ SelectPalette( lpdis->hDC, mswPalette, 0 );
+ cnt = RealizePalette( lpdis->hDC );
+ }
+ hPen = SelectObject( lpdis->hDC, CreatePen( PS_SOLID, 0,
+ GetSysColor( COLOR_WINDOW ) ) );
+ hBrush = SelectObject( lpdis->hDC,
+ CreateSolidBrush( GetSysColor( COLOR_WINDOW ) ) );
+ Rectangle( lpdis->hDC, rc1.left, rc1.top, rc1.right, rc1.bottom );
+ DeleteObject( SelectObject( lpdis->hDC, hPen ) );
+ DeleteObject( SelectObject( lpdis->hDC, hBrush ) );
+
+ col = RGB( (ldp->bm->colormap[ 1 ]).rgbRed,
+ (ldp->bm->colormap[ 1 ]).rgbGreen,
+ (ldp->bm->colormap[ 1 ]).rgbBlue );
+ mswDrawIcon( lpdis->hDC, rc1.left+2, rc.top+0, ldp->bm, 0, col, col);
+
+ rc1.left += ldp->bm->w+6;
+ colWidth -= ldp->bm->w+6;
}
- hPen = SelectObject( lpdis->hDC, CreatePen( PS_SOLID, 0, GetSysColor( COLOR_WINDOW ) ) );
- hBrush = SelectObject( lpdis->hDC, CreateSolidBrush( GetSysColor( COLOR_WINDOW ) ) );
- Rectangle( lpdis->hDC, rc1.left, rc1.top, rc1.right, rc1.bottom );
- DeleteObject( SelectObject( lpdis->hDC, hPen ) );
- DeleteObject( SelectObject( lpdis->hDC, hBrush ) );
-
- col = RGB( (ldp->bm->colormap[ 1 ]).rgbRed,
- (ldp->bm->colormap[ 1 ]).rgbGreen,
- (ldp->bm->colormap[ 1 ]).rgbBlue );
- mswDrawIcon( lpdis->hDC, rc1.left+2, rc.top+0, ldp->bm, 0, col, col);
-
- rc1.left += ldp->bm->w+6;
- colWidth -= ldp->bm->w+6;
+ if ( inx>=bl->colCnt-1 || (rc1.right = rc1.left + colWidth) > rc.right ) {
+ rc1.right = rc.right;
+ }
+ if ( rc1.right > 0 && rc1.left+3 < rc.right ) {
+ ExtTextOut( lpdis->hDC, rc1.left+3, rc1.top+1,
+ ETO_CLIPPED | ETO_OPAQUE, &rc1,
+ (LPSTR)cp0, (int)len, NULL );
+ }
+ rc1.left = rc1.right;
+ cp0 = cp1;
}
- if ( inx>=bl->colCnt-1 || (rc1.right = rc1.left + colWidth) > rc.right )
- rc1.right = rc.right;
- if ( rc1.right > 0 && rc1.left+3 < rc.right ) {
- ExtTextOut( lpdis->hDC, rc1.left+3, rc1.top+1,
- ETO_CLIPPED | ETO_OPAQUE, &rc1,
- (LPSTR)cp0, (int)len, NULL );
+ if ( lpdis->itemState & ODS_SELECTED ) {
+ SetTextColor( lpdis->hDC, GetSysColor( COLOR_WINDOWTEXT ) );
+ SetBkColor( lpdis->hDC, GetSysColor( COLOR_WINDOW ) );
}
- rc1.left = rc1.right;
- cp0 = cp1;
- }
- if ( lpdis->itemState & ODS_SELECTED ) {
- SetTextColor( lpdis->hDC, GetSysColor( COLOR_WINDOWTEXT ) );
- SetBkColor( lpdis->hDC, GetSysColor( COLOR_WINDOW ) );
- }
- if (lpdis->itemState & ODS_FOCUS) {
- DrawFocusRect( lpdis->hDC, &rc );
+ if (lpdis->itemState & ODS_FOCUS) {
+ DrawFocusRect( lpdis->hDC, &rc );
+ }
+ if ( bl->type == B_LIST) {
+ SelectObject( lpdis->hDC, hFont );
+ }
+ return (LRESULT)TRUE;
}
- if ( bl->type == B_LIST)
- SelectObject( lpdis->hDC, hFont );
- return (LRESULT)TRUE;
- }
-
- break;
- case WM_HSCROLL:
- len = ((long)bl->maxWidth)-((long)bl->w);
- if ( len <= 0 )
- return (LRESULT)0;
- switch ( WSCROLL_PARAM_CODE ) {
- case SB_LEFT:
- if ( bl->scrollPos == 0 )
- return (LRESULT)0;
- bl->scrollPos = 0;
break;
- case SB_LINELEFT:
- case SB_PAGELEFT:
- if ( bl->scrollPos == 0 )
+
+ case WM_HSCROLL:
+ len = ((long)bl->maxWidth)-((long)bl->w);
+ if ( len <= 0 ) {
return (LRESULT)0;
- for ( inx=colWidth=0; inx<bl->colCnt; inx++ ) {
- if ( colWidth+bl->colWidths[inx] >= bl->scrollPos ) {
- bl->scrollPos = colWidth;
- break;
- }
- colWidth += bl->colWidths[inx];
}
- break;
- case SB_LINERIGHT:
- case SB_PAGERIGHT:
- if ( bl->scrollPos >= len )
- return (LRESULT)0;
- for ( inx=colWidth=0; inx<bl->colCnt; inx++ ) {
- if ( colWidth >= bl->scrollPos ) {
- bl->scrollPos = colWidth+bl->colWidths[inx];
- break;
+ switch ( WSCROLL_PARAM_CODE ) {
+ case SB_LEFT:
+ if ( bl->scrollPos == 0 ) {
+ return (LRESULT)0;
}
- colWidth += bl->colWidths[inx];
- }
- break;
- case SB_RIGHT:
- if ( bl->scrollPos >= len )
+ bl->scrollPos = 0;
+ break;
+ case SB_LINELEFT:
+ case SB_PAGELEFT:
+ if ( bl->scrollPos == 0 ) {
+ return (LRESULT)0;
+ }
+ for ( inx=colWidth=0; inx<bl->colCnt; inx++ ) {
+ if ( colWidth+bl->colWidths[inx] >= bl->scrollPos ) {
+ bl->scrollPos = colWidth;
+ break;
+ }
+ colWidth += bl->colWidths[inx];
+ }
+ break;
+ case SB_LINERIGHT:
+ case SB_PAGERIGHT:
+ if ( bl->scrollPos >= len ) {
+ return (LRESULT)0;
+ }
+ for ( inx=colWidth=0; inx<bl->colCnt; inx++ ) {
+ if ( colWidth >= bl->scrollPos ) {
+ bl->scrollPos = colWidth+bl->colWidths[inx];
+ break;
+ }
+ colWidth += bl->colWidths[inx];
+ }
+ break;
+ case SB_RIGHT:
+ if ( bl->scrollPos >= len ) {
+ return (LRESULT)0;
+ }
+ bl->scrollPos = (int)len;
+ break;
+ case SB_THUMBTRACK:
return (LRESULT)0;
- bl->scrollPos = (int)len;
- break;
- case SB_THUMBTRACK:
+ case SB_THUMBPOSITION:
+ nPos = (int)WSCROLL_PARAM_NPOS;
+ bl->scrollPos = (int)(len*nPos/100);
+ break;
+ case SB_ENDSCROLL:
+ return (LRESULT)0;
+ }
+ if ( bl->scrollPos > len ) { bl->scrollPos = (int)len; }
+ if ( bl->scrollPos < 0 ) { bl->scrollPos = 0; }
+ nPos = (int)(((long)bl->scrollPos)*100L/len+0.5);
+ SetScrollPos( bl->hScrollWnd, SB_CTL, nPos, TRUE );
+ InvalidateRect( bl->hWnd, NULL, FALSE );
+ listRepaintLabel( ((wControl_p)(bl->parent))->hWnd, (wControl_p)bl );
return (LRESULT)0;
- case SB_THUMBPOSITION:
- nPos = (int)WSCROLL_PARAM_NPOS;
- bl->scrollPos = (int)(len*nPos/100);
- break;
- case SB_ENDSCROLL:
+
+ case WM_LBUTTONDOWN:
+ if ( bl->type != B_LIST ) {
+ break;
+ }
+ if ( bl->colCnt <= 1 ) {
+ break;
+ }
+ x = bl->dragPos = LOWORD(lParam)+bl->scrollPos-4;
+ bl->dragCol = -1;
+ for ( inx=0; inx<bl->colCnt; inx++ ) {
+ x -= bl->colWidths[inx];
+ if ( x < -5 ) { break; }
+ if ( x <= 0 ) { bl->dragCol = inx; break; }
+ if ( x > bl->colWidths[inx+1] ) { continue; }
+ if ( x <= 10 ) { bl->dragCol = inx; break; }
+ }
+ if ( bl->dragCol >= 0 ) {
+ bl->dragColWidth = bl->colWidths[inx];
+ }
return (LRESULT)0;
- }
- if ( bl->scrollPos > len ) bl->scrollPos = (int)len;
- if ( bl->scrollPos < 0 ) bl->scrollPos = 0;
- nPos = (int)(((long)bl->scrollPos)*100L/len+0.5);
- SetScrollPos( bl->hScrollWnd, SB_CTL, nPos, TRUE );
- InvalidateRect( bl->hWnd, NULL, FALSE );
- listRepaintLabel( ((wControl_p)(bl->parent))->hWnd, (wControl_p)bl );
- return (LRESULT)0;
-
- case WM_LBUTTONDOWN:
- if ( bl->type != B_LIST )
- break;
- if ( bl->colCnt <= 1 )
- break;
- x = bl->dragPos = LOWORD(lParam)+bl->scrollPos-4;
- bl->dragCol = -1;
- for ( inx=0; inx<bl->colCnt; inx++ ) {
- x -= bl->colWidths[inx];
- if ( x < -5 ) break;
- if ( x <= 0 ) { bl->dragCol = inx; break; }
- if ( x > bl->colWidths[inx+1] ) continue;
- if ( x <= 10 ) { bl->dragCol = inx; break; }
- }
- if ( bl->dragCol >= 0 )
- bl->dragColWidth = bl->colWidths[inx];
- return (LRESULT)0;
#ifdef LATER
- case WM_MOUSEMOVE:
- if ( (wParam&MK_LBUTTON) == 0 )
- break;
- if ( bl->type != B_LIST )
- break;
- if ( bl->colCnt <= 1 )
- break;
- x = LOWORD(lParam)+bl->scrolPos;
- for ( inx=0; inx<bl->colCnt; inx++ ) {
- x -= bl->colWidths[inx];
- if ( x <= 0 )
+ case WM_MOUSEMOVE:
+ if ( (wParam&MK_LBUTTON) == 0 ) {
break;
- }
- return (LRESULT)0;
+ }
+ if ( bl->type != B_LIST ) {
+ break;
+ }
+ if ( bl->colCnt <= 1 ) {
+ break;
+ }
+ x = LOWORD(lParam)+bl->scrolPos;
+ for ( inx=0; inx<bl->colCnt; inx++ ) {
+ x -= bl->colWidths[inx];
+ if ( x <= 0 ) {
+ break;
+ }
+ }
+ return (LRESULT)0;
#endif
- case WM_MOUSEMOVE:
- if ( (wParam&MK_LBUTTON) == 0 )
- break;
- case WM_LBUTTONUP:
- if ( bl->type != B_LIST )
- break;
- if ( bl->colCnt <= 1 )
- break;
- if ( bl->dragCol < 0 )
- break;
- x = LOWORD(lParam)+bl->scrollPos-4-bl->dragPos; /* WIN32??? */
- bl->colWidths[bl->dragCol] = bl->dragColWidth+x;
- if ( bl->colWidths[bl->dragCol] < 0 )
- bl->colWidths[bl->dragCol] = 0;
- for ( bl->maxWidth=inx=0; inx<bl->colCnt; inx++ )
- bl->maxWidth += bl->colWidths[inx];
- if ( bl->maxWidth <= bl->w ) {
- x = bl->w - bl->maxWidth;
- bl->colWidths[bl->colCnt-1] += x;
- bl->maxWidth = bl->w;
- bl->scrollPos = 0;
- } else {
- if ( bl->scrollPos+bl->w > bl->maxWidth ) {
- bl->scrollPos = bl->maxWidth - bl->w;
+ case WM_MOUSEMOVE:
+ if ( (wParam&MK_LBUTTON) == 0 ) {
+ break;
+ }
+ case WM_LBUTTONUP:
+ if ( bl->type != B_LIST ) {
+ break;
+ }
+ if ( bl->colCnt <= 1 ) {
+ break;
}
+ if ( bl->dragCol < 0 ) {
+ break;
+ }
+ x = LOWORD(lParam)+bl->scrollPos-4-bl->dragPos; /* WIN32??? */
+ bl->colWidths[bl->dragCol] = bl->dragColWidth+x;
+ if ( bl->colWidths[bl->dragCol] < 0 ) {
+ bl->colWidths[bl->dragCol] = 0;
+ }
+ for ( bl->maxWidth=inx=0; inx<bl->colCnt; inx++ ) {
+ bl->maxWidth += bl->colWidths[inx];
+ }
+ if ( bl->maxWidth <= bl->w ) {
+ x = bl->w - bl->maxWidth;
+ bl->colWidths[bl->colCnt-1] += x;
+ bl->maxWidth = bl->w;
+ bl->scrollPos = 0;
+ } else {
+ if ( bl->scrollPos+bl->w > bl->maxWidth ) {
+ bl->scrollPos = bl->maxWidth - bl->w;
+ }
+ }
+ InvalidateRect( bl->hWnd, NULL, FALSE );
+ listRepaintLabel( ((wControl_p)(bl->parent))->hWnd, (wControl_p)bl );
+ return (LRESULT)0;
+
}
- InvalidateRect( bl->hWnd, NULL, FALSE );
- listRepaintLabel( ((wControl_p)(bl->parent))->hWnd, (wControl_p)bl );
- return (LRESULT)0;
- }
-
return DefWindowProc( hWnd, message, wParam, lParam );
-}
+}
LRESULT FAR PASCAL _export pushList(
- HWND hWnd,
- UINT message,
- WPARAM wParam,
- LPARAM lParam )
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
{
/* Catch <Return> and cause focus to leave control */
wIndex_t inx = (wIndex_t)GetWindowLongPtr(hWnd, GWL_ID);
@@ -962,9 +1025,9 @@ LRESULT FAR PASCAL _export pushList(
case 0x0D:
case 0x1B:
case 0x09:
- SetFocus( ((wControl_p)(b->parent))->hWnd );
+ SetFocus( ((wControl_p)(b->parent))->hWnd );
SendMessage( ((wControl_p)(b->parent))->hWnd, WM_CHAR,
- wParam, lParam );
+ wParam, lParam );
/*SendMessage( ((wControl_p)(b->parent))->hWnd, WM_COMMAND,
inx, MAKELONG( hWnd, EN_KILLFOCUS ) );*/
return (LRESULT)0;
@@ -976,10 +1039,10 @@ LRESULT FAR PASCAL _export pushList(
}
LRESULT FAR PASCAL _export pushCombo(
- HWND hWnd,
- UINT message,
- WPARAM wParam,
- LPARAM lParam )
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
{
/* Catch <Return> and cause focus to leave control */
wIndex_t inx = (wIndex_t)GetWindowLongPtr( hWnd, GWL_ID );
@@ -992,9 +1055,9 @@ LRESULT FAR PASCAL _export pushCombo(
case 0x0D:
case 0x1B:
case 0x09:
- SetFocus( ((wControl_p)(b->parent))->hWnd );
+ SetFocus( ((wControl_p)(b->parent))->hWnd );
SendMessage( ((wControl_p)(b->parent))->hWnd, WM_CHAR,
- wParam, lParam );
+ wParam, lParam );
/*SendMessage( ((wControl_p)(b->parent))->hWnd, WM_COMMAND,
inx, MAKELONG( hWnd, EN_KILLFOCUS ) );*/
return (LRESULT)0;
@@ -1006,37 +1069,39 @@ LRESULT FAR PASCAL _export pushCombo(
}
static callBacks_t listCallBacks = {
- listRepaintLabel,
- NULL,
- listProc,
- listSetBusy,
- listShow,
- listSetPos };
+ listRepaintLabel,
+ NULL,
+ listProc,
+ listSetBusy,
+ listShow,
+ listSetPos
+};
static wList_p listCreate(
- int typ,
- const char *className,
- long style,
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- long number,
- wWinPix_t width,
- long *valueP,
- wListCallBack_p action,
- void *data,
- wBool_t addFocus,
- int *indexR )
-{
+ int typ,
+ const char *className,
+ long style,
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ long number,
+ wWinPix_t width,
+ long *valueP,
+ wListCallBack_p action,
+ void *data,
+ wBool_t addFocus,
+ int *indexR )
+{
wList_p b;
- RECT rect;
+ RECT rect;
int index;
- b = (wList_p)mswAlloc( parent, typ, mswStrdup(labelStr), sizeof *b, data, &index );
+ b = (wList_p)mswAlloc( parent, typ, mswStrdup(labelStr), sizeof *b, data,
+ &index );
mswComputePos( (wControl_p)b, x, y );
b->option = option;
b->count = 0;
@@ -1051,9 +1116,9 @@ static wList_p listCreate(
b->dragCol = -1;
b->hWnd = CreateWindow( className, NULL,
- style | WS_CHILD | WS_VISIBLE | mswGetBaseStyle(parent), b->x, b->y,
- width, LIST_HEIGHT*(int)number,
- ((wControl_p)parent)->hWnd, (HMENU)(UINT_PTR)index, mswHInst, NULL );
+ style | WS_CHILD | WS_VISIBLE | mswGetBaseStyle(parent), b->x, b->y,
+ width, LIST_HEIGHT*(int)number,
+ ((wControl_p)parent)->hWnd, (HMENU)(UINT_PTR)index, mswHInst, NULL );
if (b->hWnd == NULL) {
mswFail("CreateWindow(LIST)");
return b;
@@ -1078,8 +1143,7 @@ static wList_p listCreate(
oldListProc = (XWNDPROC)GetWindowLong(b->hWnd, GWL_WNDPROC);
SetWindowLong(b->hWnd, GWL_WNDPROC, (LONG)newListProc);
#endif
- }
- else {
+ } else {
newComboProc = MakeProcInstance((XWNDPROC)pushCombo, mswHInst);
oldComboProc = (XWNDPROC)GetWindowLongPtr(b->hWnd, GWLP_WNDPROC);
SetWindowLongPtr(b->hWnd, GWLP_WNDPROC, (LONG_PTR)newComboProc);
@@ -1089,31 +1153,32 @@ static wList_p listCreate(
#endif
}
}
- if ( indexR )
+ if ( indexR ) {
*indexR = index;
- if ( !mswThickFont )
- SendMessage( b->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, (LPARAM)0 );
+ }
+
+ SendMessage( b->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, (LPARAM)0 );
return b;
}
wList_p wListCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- long number,
- wWinPix_t width,
- int colCnt,
- wWinPix_t * colWidths,
- wBool_t * colRightJust,
- const char * * colTitles,
- long *valueP,
- wListCallBack_p action,
- void *data )
-{
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ long number,
+ wWinPix_t width,
+ int colCnt,
+ wWinPix_t * colWidths,
+ wBool_t * colRightJust,
+ const char * * colTitles,
+ long *valueP,
+ wListCallBack_p action,
+ void *data )
+{
long bs;
wList_p bl;
static int dbu = 0;
@@ -1122,22 +1187,25 @@ wList_p wListCreate(
int i;
bs = LBS_NOTIFY | WS_VSCROLL | WS_BORDER | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS;
- if (option & BL_MANY)
+ if (option & BL_MANY) {
bs |= LBS_MULTIPLESEL|LBS_EXTENDEDSEL;
- if (option & BL_SORT)
+ }
+ if (option & BL_SORT) {
bs |= LBS_SORT;
- if ( colCnt > 1 )
+ }
+ if ( colCnt > 1 ) {
bs |= WS_HSCROLL;
+ }
if ( colTitles ) {
y += listTitleHeight;
number -= 1;
}
bl = listCreate( B_LIST, "LISTBOX", bs, parent, x, y, helpStr,
- labelStr, option, number, width, valueP, action, data, TRUE, &index );
+ labelStr, option, number, width, valueP, action, data, TRUE, &index );
if ( colTitles ) {
bl->y -= listTitleHeight;
bl->h += listTitleHeight;
- }
+ }
if ( colCnt > 1 ) {
bl->colCnt = colCnt;
bl->colWidths = (wWinPix_t*)malloc( colCnt * sizeof *bl->colWidths );
@@ -1150,11 +1218,13 @@ wList_p wListCreate(
bl->maxWidth += bl->colWidths[i];
}
bl->hScrollWnd = CreateWindow( "ScrollBar", NULL,
- SBS_HORZ | SBS_BOTTOMALIGN | WS_CHILD | WS_VISIBLE | mswGetBaseStyle(parent), bl->x, bl->y,
- width, CW_USEDEFAULT,
- ((wControl_p)parent)->hWnd, (HMENU)(UINT_PTR)index, mswHInst, NULL );
- if (bl->hScrollWnd == NULL)
+ SBS_HORZ | SBS_BOTTOMALIGN | WS_CHILD | WS_VISIBLE | mswGetBaseStyle(parent),
+ bl->x, bl->y,
+ width, CW_USEDEFAULT,
+ ((wControl_p)parent)->hWnd, (HMENU)(UINT_PTR)index, mswHInst, NULL );
+ if (bl->hScrollWnd == NULL) {
mswFail("CreateWindow(LISTSCROLL)");
+ }
SetScrollRange( bl->hScrollWnd, SB_CTL, 0, 100, TRUE );
GetWindowRect( bl->hScrollWnd, &rect );
bl->scrollH = rect.bottom - rect.top+2;
@@ -1164,49 +1234,52 @@ wList_p wListCreate(
wList_p wDropListCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- long number,
- wWinPix_t width,
- long *valueP,
- wListCallBack_p action,
- void *data )
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ long number,
+ wWinPix_t width,
+ long *valueP,
+ wListCallBack_p action,
+ void *data )
{
long bs;
- if ( (option&BL_EDITABLE) != 0 )
+ if ( (option&BL_EDITABLE) != 0 ) {
bs = CBS_DROPDOWN;
- else
+ } else {
bs = CBS_DROPDOWNLIST;
+ }
bs |= WS_VSCROLL | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS;
- if (option & BL_SORT)
+ if (option & BL_SORT) {
bs |= CBS_SORT;
+ }
return listCreate( B_DROPLIST, "COMBOBOX", bs, parent, x, y, helpStr,
- labelStr, option, number, width, valueP, action, data, TRUE, NULL );
+ labelStr, option, number, width, valueP, action, data, TRUE, NULL );
}
wList_p wComboListCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- long number,
- wWinPix_t width,
- long *valueP,
- wListCallBack_p action,
- void *data )
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ long number,
+ wWinPix_t width,
+ long *valueP,
+ wListCallBack_p action,
+ void *data )
{
long bs;
bs = CBS_SIMPLE | WS_VSCROLL | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS;
- if (option & BL_SORT)
+ if (option & BL_SORT) {
bs |= CBS_SORT;
+ }
return listCreate( B_COMBOLIST, "COMBOBOX", bs, parent, x, y, helpStr,
- labelStr, option, number, width, valueP, action, data, FALSE, NULL );
+ labelStr, option, number, width, valueP, action, data, FALSE, NULL );
}
diff --git a/app/wlib/mswlib/mswmenu.c b/app/wlib/mswlib/mswmenu.c
index 9e36c8b..0a2851d 100644
--- a/app/wlib/mswlib/mswmenu.c
+++ b/app/wlib/mswlib/mswmenu.c
@@ -18,14 +18,13 @@
*
* 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
*/
#define OEMRESOURCE
#include <windows.h>
#include <string.h>
-#include <malloc.h>
#include <stdlib.h>
#include <commdlg.h>
#include <math.h>
@@ -48,8 +47,8 @@ typedef enum { MM_BUTT, MM_MENU, MM_BAR, MM_POPUP } mmtype_e;
typedef struct wMenuItem_t * wMenuItem_p;
struct radioButtonGroup {
- int firstButton; /* id of first button in group */
- int lastButton; /* id of last button in group */
+ int firstButton; /* id of first button in group */
+ int lastButton; /* id of last button in group */
};
/* NOTE: first field must be the same as WOBJ_COMMON */
@@ -61,58 +60,58 @@ struct radioButtonGroup {
wMenuItem_p mnext;
struct wMenuItem_t {
- MOBJ_COMMON
- };
+ MOBJ_COMMON
+};
struct wMenu_t {
- MOBJ_COMMON
- mmtype_e mmtype;
- wMenuItem_p first, last;
- struct radioButtonGroup *radioGroup;
- HMENU menu;
- wButton_p button;
- wMenuTraceCallBack_p traceFunc;
- void * traceData;
- };
+ MOBJ_COMMON
+ mmtype_e mmtype;
+ wMenuItem_p first, last;
+ struct radioButtonGroup *radioGroup;
+ HMENU menu;
+ wButton_p button;
+ wMenuTraceCallBack_p traceFunc;
+ void * traceData;
+};
struct wMenuPush_t {
- MOBJ_COMMON
- wMenu_p mparent;
- wMenuCallBack_p action;
- long acclKey;
- wBool_t enabled;
- };
+ MOBJ_COMMON
+ wMenu_p mparent;
+ wMenuCallBack_p action;
+ long acclKey;
+ wBool_t enabled;
+};
struct wMenuRadio_t {
- MOBJ_COMMON
- wMenu_p mparent;
- wMenuCallBack_p action;
- long acclKey;
- wBool_t enabled;
- };
+ MOBJ_COMMON
+ wMenu_p mparent;
+ wMenuCallBack_p action;
+ long acclKey;
+ wBool_t enabled;
+};
struct wMenuToggle_t {
- MOBJ_COMMON
- wMenu_p mparent;
- wMenuCallBack_p action;
- long acclKey;
- wBool_t enabled;
- };
+ MOBJ_COMMON
+ wMenu_p mparent;
+ wMenuCallBack_p action;
+ long acclKey;
+ wBool_t enabled;
+};
typedef struct wMenuListItem_t * wMenuListItem_p;
struct wMenuList_t {
- MOBJ_COMMON
- wMenuListItem_p left, right;
- wMenu_p mlparent;
- int max;
- int count;
- wMenuListCallBack_p action;
- };
+ MOBJ_COMMON
+ wMenuListItem_p left, right;
+ wMenu_p mlparent;
+ int max;
+ int count;
+ wMenuListCallBack_p action;
+};
struct wMenuListItem_t {
- MOBJ_COMMON
- wMenuListItem_p left, right;
- wMenuListCallBack_p action;
- };
+ MOBJ_COMMON
+ wMenuListItem_p left, right;
+ wMenuListCallBack_p action;
+};
#define UNCHECK (0)
#define CHECK (1)
@@ -139,17 +138,18 @@ char * mswStrdup( const char * str )
if (str) {
ret = (char*)malloc( strlen(str)+1 );
strcpy( ret, str );
- } else
+ } else {
ret = NULL;
+ }
return ret;
}
static LRESULT menuPush(
- wControl_p b,
- HWND hWnd,
- UINT message,
- WPARAM wParam,
- LPARAM lParam )
+ wControl_p b,
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
{
wMenuItem_p m = (wMenuItem_p)b;
wBool_t set;
@@ -165,29 +165,34 @@ static LRESULT menuPush(
mswFail( "pushMenu" );
break;
case M_PUSH:
- if (((wMenuPush_p)m)->action)
+ if (((wMenuPush_p)m)->action) {
((wMenuPush_p)m)->action(((wMenuPush_p)m)->data);
+ }
break;
case M_TOGGLE:
set = wMenuToggleGet((wMenuToggle_p)m);
set = !set;
wMenuToggleSet((wMenuToggle_p)m,set);
- if (((wMenuToggle_p)m)->action)
+ if (((wMenuToggle_p)m)->action) {
((wMenuToggle_p)m)->action(((wMenuPush_p)m)->data);
+ }
break;
case M_LISTITEM:
- if (((wMenuListItem_p)m)->action)
+ if (((wMenuListItem_p)m)->action) {
((wMenuListItem_p)m)->action(0, "", ((wMenuListItem_p)m)->data);
+ }
break;
case M_RADIO:
- if (((wMenuRadio_p)m)->action)
+ if (((wMenuRadio_p)m)->action) {
((wMenuRadio_p)m)->action(((wMenuRadio_p)m)->data);
+ }
break;
}
return (LRESULT)0;
}
if ( (m->parentMenu)->traceFunc ) {
- (m->parentMenu)->traceFunc( m->parentMenu, m->labelStr, ((wMenu_p)m->parentMenu)->traceData );
+ (m->parentMenu)->traceFunc( m->parentMenu, m->labelStr,
+ ((wMenu_p)m->parentMenu)->traceData );
}
return DefWindowProc( hWnd, message, wParam, lParam );
}
@@ -198,24 +203,26 @@ static void menuDone( wControl_p b )
switch ( m->mtype ) {
case M_MENU:
if ( ((wMenu_p)m)->mmtype == MM_BUTT ||
- ((wMenu_p)m)->mmtype == MM_POPUP )
+ ((wMenu_p)m)->mmtype == MM_POPUP ) {
DestroyMenu( ((wMenu_p)m)->menu );
+ }
break;
}
}
static callBacks_t menuItemCallBacks = {
- NULL,
- menuDone,
- menuPush };
+ NULL,
+ menuDone,
+ menuPush
+};
static wMenuItem_p createMenuItem(
- wMenu_p m,
- mtype_e mtype,
- const char * helpStr,
- const char * labelStr,
- int size )
+ wMenu_p m,
+ mtype_e mtype,
+ const char * helpStr,
+ const char * labelStr,
+ int size )
{
wMenuItem_p mi;
@@ -254,29 +261,31 @@ static wMenuItem_p createMenuItem(
typedef struct {
- long acclKey;
- wMenuPush_p mp;
- wAccelKeyCallBack_p action;
- wAccelKey_e key;
- void * data;
- } acclTable_t, *acclTable_p;
+ long acclKey;
+ wMenuPush_p mp;
+ wAccelKeyCallBack_p action;
+ wAccelKey_e key;
+ void * data;
+} acclTable_t, *acclTable_p;
static dynArr_t acclTable_da;
#define acclTable(N) DYNARR_N( acclTable_t, acclTable_da, N )
int mswMenuAccelerator(
- wWin_p win,
- long acclKey )
+ wWin_p win,
+ long acclKey )
{
acclTable_p at;
if ( ((wControl_p)win)->type != W_MAIN &&
- ((wControl_p)win)->type != W_POPUP )
+ ((wControl_p)win)->type != W_POPUP ) {
return 0;
+ }
for ( at = &acclTable(0); at<&acclTable(acclTable_da.cnt); at++ ) {
if (at->acclKey == acclKey) {
if (at->mp) {
- if (at->mp->enabled && at->mp->action)
+ if (at->mp->enabled && at->mp->action) {
at->mp->action(at->mp->data);
+ }
return 1;
} else if (at->action) {
at->action( at->key, at->data );
@@ -292,40 +301,40 @@ int mswMenuAccelerator(
static long acclKeyMap[] = {
- 0, /* wAccelKey_None, */
- VK_DELETE, /* wAccelKey_Del, */
- VK_INSERT, /* wAccelKey_Ins, */
- VK_HOME, /* wAccelKey_Home, */
- VK_END, /* wAccelKey_End, */
- VK_PRIOR, /* wAccelKey_Pgup, */
- VK_NEXT, /* wAccelKey_Pgdn, */
- VK_UP, /* wAccelKey_Up, */
- VK_DOWN, /* wAccelKey_Down, */
- VK_RIGHT, /* wAccelKey_Right, */
- VK_LEFT, /* wAccelKey_Left, */
- VK_BACK, /* wAccelKey_Back, */
- VK_F1, /* wAccelKey_F1, */
- VK_F2, /* wAccelKey_F2, */
- VK_F3, /* wAccelKey_F3, */
- VK_F4, /* wAccelKey_F4, */
- VK_F5, /* wAccelKey_F5, */
- VK_F6, /* wAccelKey_F6, */
- VK_F7, /* wAccelKey_F7, */
- VK_F8, /* wAccelKey_F8, */
- VK_F9, /* wAccelKey_F9, */
- VK_F10, /* wAccelKey_F10, */
- VK_F11, /* wAccelKey_F11, */
- VK_F12, /* wAccelKey_F12, */
- VK_ADD, /* wAccelKey_Numpad_Add, */
- VK_SUBTRACT /* wAccelKey_Numpad_Subtract, */
- };
+ 0, /* wAccelKey_None, */
+ VK_DELETE, /* wAccelKey_Del, */
+ VK_INSERT, /* wAccelKey_Ins, */
+ VK_HOME, /* wAccelKey_Home, */
+ VK_END, /* wAccelKey_End, */
+ VK_PRIOR, /* wAccelKey_Pgup, */
+ VK_NEXT, /* wAccelKey_Pgdn, */
+ VK_UP, /* wAccelKey_Up, */
+ VK_DOWN, /* wAccelKey_Down, */
+ VK_RIGHT, /* wAccelKey_Right, */
+ VK_LEFT, /* wAccelKey_Left, */
+ VK_BACK, /* wAccelKey_Back, */
+ VK_F1, /* wAccelKey_F1, */
+ VK_F2, /* wAccelKey_F2, */
+ VK_F3, /* wAccelKey_F3, */
+ VK_F4, /* wAccelKey_F4, */
+ VK_F5, /* wAccelKey_F5, */
+ VK_F6, /* wAccelKey_F6, */
+ VK_F7, /* wAccelKey_F7, */
+ VK_F8, /* wAccelKey_F8, */
+ VK_F9, /* wAccelKey_F9, */
+ VK_F10, /* wAccelKey_F10, */
+ VK_F11, /* wAccelKey_F11, */
+ VK_F12, /* wAccelKey_F12, */
+ VK_ADD, /* wAccelKey_Numpad_Add, */
+ VK_SUBTRACT /* wAccelKey_Numpad_Subtract, */
+};
void wAttachAccelKey(
- wAccelKey_e key,
- int modifier,
- wAccelKeyCallBack_p action,
- void * data )
+ wAccelKey_e key,
+ int modifier,
+ wAccelKeyCallBack_p action,
+ void * data )
{
acclTable_t * ad;
if ( key < 1 || key > wAccelKey_Numpad_Subtract ) {
@@ -349,135 +358,133 @@ void wAttachAccelKey(
*****************************************************************************
*/
-HBITMAP GetMyCheckBitmaps(UINT fuCheck)
-{
- COLORREF crBackground; /* background color */
- HBRUSH hbrBackground; /* background brush */
- HBRUSH hbrTargetOld; /* original background brush */
- HDC hdcSource; /* source device context */
- HDC hdcTarget; /* target device context */
- HBITMAP hbmpCheckboxes; /* handle to check-box bitmap */
- BITMAP bmCheckbox; /* structure for bitmap data */
- HBITMAP hbmpSourceOld; /* handle to original source bitmap */
- HBITMAP hbmpTargetOld; /* handle to original target bitmap */
- HBITMAP hbmpCheck; /* handle to check-mark bitmap */
- RECT rc; /* rectangle for check-box bitmap */
- WORD wBitmapX; /* width of check-mark bitmap */
- WORD wBitmapY; /* height of check-mark bitmap */
+HBITMAP GetMyCheckBitmaps(UINT fuCheck)
+{
+ COLORREF crBackground; /* background color */
+ HBRUSH hbrBackground; /* background brush */
+ HBRUSH hbrTargetOld; /* original background brush */
+ HDC hdcSource; /* source device context */
+ HDC hdcTarget; /* target device context */
+ HBITMAP hbmpCheckboxes; /* handle to check-box bitmap */
+ BITMAP bmCheckbox; /* structure for bitmap data */
+ HBITMAP hbmpSourceOld; /* handle to original source bitmap */
+ HBITMAP hbmpTargetOld; /* handle to original target bitmap */
+ HBITMAP hbmpCheck; /* handle to check-mark bitmap */
+ RECT rc; /* rectangle for check-box bitmap */
+ WORD wBitmapX; /* width of check-mark bitmap */
+ WORD wBitmapY; /* height of check-mark bitmap */
WORD wMenuH; /* height of menu line */
-
- /* Get the menu background color and create a solid brush
- with that color. */
-
- crBackground = GetSysColor(COLOR_MENU);
- hbrBackground = CreateSolidBrush(crBackground);
-
- /* Create memory device contexts for the source and
- destination bitmaps. */
-
- hdcSource = CreateCompatibleDC((HDC) NULL);
- hdcTarget = CreateCompatibleDC(hdcSource);
-
- /* Get the size of the system default check-mark bitmap and
- create a compatible bitmap of the same size. */
-
- wBitmapX = GetSystemMetrics(SM_CXMENUCHECK);
- wBitmapY = GetSystemMetrics(SM_CYMENUCHECK);
+
+ /* Get the menu background color and create a solid brush
+ with that color. */
+
+ crBackground = GetSysColor(COLOR_MENU);
+ hbrBackground = CreateSolidBrush(crBackground);
+
+ /* Create memory device contexts for the source and
+ destination bitmaps. */
+
+ hdcSource = CreateCompatibleDC((HDC) NULL);
+ hdcTarget = CreateCompatibleDC(hdcSource);
+
+ /* Get the size of the system default check-mark bitmap and
+ create a compatible bitmap of the same size. */
+
+ wBitmapX = GetSystemMetrics(SM_CXMENUCHECK);
+ wBitmapY = GetSystemMetrics(SM_CYMENUCHECK);
wMenuH = GetSystemMetrics(SM_CYMENU);
-
- hbmpCheck = CreateCompatibleBitmap(hdcSource, wBitmapX,
- wBitmapY);
-
- /* Select the background brush and bitmap into the target DC. */
-
- hbrTargetOld = SelectObject(hdcTarget, hbrBackground);
- hbmpTargetOld = SelectObject(hdcTarget, hbmpCheck);
-
- /* Use the selected brush to initialize the background color
- of the bitmap in the target device context. */
-
- PatBlt(hdcTarget, 0, 0, wBitmapX, wBitmapY, PATCOPY);
-
- /* Load the predefined check box bitmaps and select it
- into the source DC. */
-
- hbmpCheckboxes = LoadBitmap((HINSTANCE) NULL,
- (LPTSTR) OBM_CHECKBOXES);
-
- hbmpSourceOld = SelectObject(hdcSource, hbmpCheckboxes);
-
- /* Fill a BITMAP structure with information about the
- check box bitmaps, and then find the upper-left corner of
- the unchecked check box or the checked check box. */
-
- GetObject(hbmpCheckboxes, sizeof(BITMAP), &bmCheckbox);
-
+
+ hbmpCheck = CreateCompatibleBitmap(hdcSource, wBitmapX,
+ wBitmapY);
+
+ /* Select the background brush and bitmap into the target DC. */
+
+ hbrTargetOld = SelectObject(hdcTarget, hbrBackground);
+ hbmpTargetOld = SelectObject(hdcTarget, hbmpCheck);
+
+ /* Use the selected brush to initialize the background color
+ of the bitmap in the target device context. */
+
+ PatBlt(hdcTarget, 0, 0, wBitmapX, wBitmapY, PATCOPY);
+
+ /* Load the predefined check box bitmaps and select it
+ into the source DC. */
+
+ hbmpCheckboxes = LoadBitmap((HINSTANCE) NULL,
+ (LPTSTR) OBM_CHECKBOXES);
+
+ hbmpSourceOld = SelectObject(hdcSource, hbmpCheckboxes);
+
+ /* Fill a BITMAP structure with information about the
+ check box bitmaps, and then find the upper-left corner of
+ the unchecked check box or the checked check box. */
+
+ GetObject(hbmpCheckboxes, sizeof(BITMAP), &bmCheckbox);
+
switch( fuCheck ) {
-
+
case UNCHECK:
- rc.left = 0;
- rc.right = (bmCheckbox.bmWidth / 4);
- rc.top = 0;
- rc.bottom = (bmCheckbox.bmHeight / 3);
- break;
- case CHECK:
- rc.left = (bmCheckbox.bmWidth / 4);
- rc.right = (bmCheckbox.bmWidth / 4) * 2;
- rc.top = 0;
- rc.bottom = (bmCheckbox.bmHeight / 3);
+ rc.left = 0;
+ rc.right = (bmCheckbox.bmWidth / 4);
+ rc.top = 0;
+ rc.bottom = (bmCheckbox.bmHeight / 3);
+ break;
+ case CHECK:
+ rc.left = (bmCheckbox.bmWidth / 4);
+ rc.right = (bmCheckbox.bmWidth / 4) * 2;
+ rc.top = 0;
+ rc.bottom = (bmCheckbox.bmHeight / 3);
break;
case RADIOCHECK:
- rc.left = (bmCheckbox.bmWidth / 4);
- rc.right = (bmCheckbox.bmWidth / 4) * 2;
+ rc.left = (bmCheckbox.bmWidth / 4);
+ rc.right = (bmCheckbox.bmWidth / 4) * 2;
rc.top = (bmCheckbox.bmHeight / 3);
- rc.bottom = (bmCheckbox.bmHeight / 3) * 2;
+ rc.bottom = (bmCheckbox.bmHeight / 3) * 2;
break;
case RADIOUNCHECK:
rc.top = (bmCheckbox.bmHeight / 3);
- rc.bottom = (bmCheckbox.bmHeight / 3) * 2;
- rc.left = 0;
- rc.right = (bmCheckbox.bmWidth / 4);
+ rc.bottom = (bmCheckbox.bmHeight / 3) * 2;
+ rc.left = 0;
+ rc.right = (bmCheckbox.bmWidth / 4);
break;
}
-
- /* Copy the appropriate bitmap into the target DC. If the
- check-box bitmap is larger than the default check-mark
- bitmap, use StretchBlt to make it fit; otherwise, just
- copy it. */
- if (((rc.right - rc.left) > (int) wBitmapX) ||
- ((rc.bottom - rc.top) > (int) wBitmapY))
- {
- StretchBlt(hdcTarget, 0, 0, wBitmapX, wBitmapY,
- hdcSource, rc.left, rc.top, rc.right - rc.left,
- rc.bottom - rc.top, SRCCOPY);
- }
-
- else
- {
+
+ /* Copy the appropriate bitmap into the target DC. If the
+ check-box bitmap is larger than the default check-mark
+ bitmap, use StretchBlt to make it fit; otherwise, just
+ copy it. */
+ if (((rc.right - rc.left) > (int) wBitmapX) ||
+ ((rc.bottom - rc.top) > (int) wBitmapY)) {
+ StretchBlt(hdcTarget, 0, 0, wBitmapX, wBitmapY,
+ hdcSource, rc.left, rc.top, rc.right - rc.left,
+ rc.bottom - rc.top, SRCCOPY);
+ }
+
+ else {
// Center it vertically
WORD dy = (wMenuH > wBitmapY) ? (wMenuH - wBitmapY) / 2 : 0;
BitBlt(hdcTarget, 0, dy, rc.right - rc.left,
- rc.bottom - rc.top,
- hdcSource, rc.left, rc.top, SRCCOPY);
- }
-
- /* Select the old source and destination bitmaps into the
- source and destination DCs, and then delete the DCs and
- the background brush. */
-
- SelectObject(hdcSource, hbmpSourceOld);
- SelectObject(hdcTarget, hbrTargetOld);
- hbmpCheck = SelectObject(hdcTarget, hbmpTargetOld);
-
- DeleteObject(hbrBackground);
- DeleteObject(hdcSource);
- DeleteObject(hdcTarget);
-
- /* Return a handle to the new check-mark bitmap. */
-
- return hbmpCheck;
-}
+ rc.bottom - rc.top,
+ hdcSource, rc.left, rc.top, SRCCOPY);
+ }
+
+ /* Select the old source and destination bitmaps into the
+ source and destination DCs, and then delete the DCs and
+ the background brush. */
+
+ SelectObject(hdcSource, hbmpSourceOld);
+ SelectObject(hdcTarget, hbrTargetOld);
+ hbmpCheck = SelectObject(hdcTarget, hbmpTargetOld);
+
+ DeleteObject(hbrBackground);
+ DeleteObject(hdcSource);
+ DeleteObject(hdcTarget);
+
+ /* Return a handle to the new check-mark bitmap. */
+
+ return hbmpCheck;
+}
void mswCreateCheckBitmaps()
{
@@ -489,12 +496,12 @@ void mswCreateCheckBitmaps()
}
wMenuRadio_p wMenuRadioCreate(
- wMenu_p m,
- const char * helpStr,
- const char * labelStr,
- long acclKey,
- wMenuCallBack_p action,
- void *data )
+ wMenu_p m,
+ const char * helpStr,
+ const char * labelStr,
+ long acclKey,
+ wMenuCallBack_p action,
+ void *data )
{
wMenuRadio_p mi;
int rc;
@@ -538,8 +545,9 @@ wMenuRadio_p wMenuRadioCreate(
ac = tolower( ac );
}
vk = VkKeyScan( ac );
- if ( vk & 0xFF00 )
+ if ( vk & 0xFF00 ) {
modifier |= WKEY_SHIFT;
+ }
acclTable(acclTable_da.cnt-1).acclKey = (modifier<<8) | (vk&0x00FF);
acclTable(acclTable_da.cnt-1).mp = (wMenuPush_p)mi;
}
@@ -547,7 +555,8 @@ wMenuRadio_p wMenuRadioCreate(
/* add the correct bitmaps for radio buttons */
- rc = SetMenuItemBitmaps(m->menu, mi->index, FALSE, uncheckedRadio, checkedRadio );
+ rc = SetMenuItemBitmaps(m->menu, mi->index, FALSE, uncheckedRadio,
+ checkedRadio );
if( m->radioGroup == NULL ) {
m->radioGroup = malloc( sizeof( struct radioButtonGroup ));
@@ -564,25 +573,26 @@ void wMenuRadioSetActive(wMenuRadio_p mi )
{
BOOL rc;
- rc = CheckMenuRadioItem( mi->mparent->menu,
- mi->mparent->radioGroup->firstButton,
- mi->mparent->radioGroup->lastButton,
- mi->index,
- MF_BYCOMMAND );
-}
+ rc = CheckMenuRadioItem( mi->mparent->menu,
+ mi->mparent->radioGroup->firstButton,
+ mi->mparent->radioGroup->lastButton,
+ mi->index,
+ MF_BYCOMMAND );
+}
wMenuPush_p wMenuPushCreate(
- wMenu_p m,
- const char * helpStr,
- const char * labelStr,
- long acclKey,
- wMenuCallBack_p action,
- void *data )
+ wMenu_p m,
+ const char * helpStr,
+ const char * labelStr,
+ long acclKey,
+ wMenuCallBack_p action,
+ void *data )
{
wMenuPush_p mi;
int rc;
- char *label = malloc(strlen(labelStr) + 30 ); /**< The label and sufficient space for the keyboard shortcut */
+ char *label = malloc(strlen(labelStr) +
+ 30 ); /**< The label and sufficient space for the keyboard shortcut */
char *cp;
char ac;
UINT vk;
@@ -622,8 +632,9 @@ wMenuPush_p wMenuPushCreate(
ac = tolower( ac );
}
vk = VkKeyScan( ac );
- if ( vk & 0xFF00 )
+ if ( vk & 0xFF00 ) {
modifier |= WKEY_SHIFT;
+ }
acclTable(acclTable_da.cnt-1).acclKey = (modifier<<8) | (vk&0x00FF);
acclTable(acclTable_da.cnt-1).mp = mi;
}
@@ -634,19 +645,19 @@ wMenuPush_p wMenuPushCreate(
void wMenuPushEnable(
- wMenuPush_p mi,
- BOOL_T enable )
+ wMenuPush_p mi,
+ BOOL_T enable )
{
EnableMenuItem( mi->mparent->menu, mi->index,
- MF_BYCOMMAND|(enable?MF_ENABLED:(MF_DISABLED|MF_GRAYED)) );
+ MF_BYCOMMAND|(enable?MF_ENABLED:(MF_DISABLED|MF_GRAYED)) );
mi->enabled = enable;
}
wMenu_p wMenuMenuCreate(
- wMenu_p m,
- const char * helpStr,
- const char * labelStr )
+ wMenu_p m,
+ const char * helpStr,
+ const char * labelStr )
{
wMenu_p mm;
int rc;
@@ -657,13 +668,14 @@ wMenu_p wMenuMenuCreate(
/*mm->parent = (wControl_p)m;*/
mm->first = mm->last = NULL;
- rc = AppendMenu( m->menu, MF_STRING|MF_ENABLED|MF_POPUP, (UINT_PTR)(mm->menu), mm->labelStr );
+ rc = AppendMenu( m->menu, MF_STRING|MF_ENABLED|MF_POPUP, (UINT_PTR)(mm->menu),
+ mm->labelStr );
return mm;
}
void wMenuSeparatorCreate(
- wMenu_p m )
+ wMenu_p m )
{
int rc;
createMenuItem( m, M_SEPARATOR, NULL, NULL, sizeof *(wMenuItem_p)NULL );
@@ -680,8 +692,8 @@ void wMenuSeparatorCreate(
static void appendItem(
- wMenuListItem_p ml,
- wMenuListItem_p mi )
+ wMenuListItem_p ml,
+ wMenuListItem_p mi )
{
mi->right = ml->right;
ml->right->left = mi;
@@ -691,7 +703,7 @@ static void appendItem(
static void removeItem(
- wMenuListItem_p mi )
+ wMenuListItem_p mi )
{
mi->left->right = mi->right;
mi->right->left = mi->left;
@@ -700,10 +712,10 @@ static void removeItem(
wMenuList_p wMenuListCreate(
- wMenu_p m,
- const char * helpStr,
- int max,
- wMenuListCallBack_p action )
+ wMenu_p m,
+ const char * helpStr,
+ int max,
+ wMenuListCallBack_p action )
{
wMenuList_p mi;
mi = (wMenuList_p)createMenuItem( m, M_LIST, helpStr, NULL, sizeof *mi );
@@ -729,8 +741,9 @@ int getMlistOrigin( wMenu_p m, wMenuList_p ml )
count++;
break;
case M_LIST:
- if (mi == (wMenuItem_p)ml)
+ if (mi == (wMenuItem_p)ml) {
return count;
+ }
count += ((wMenuList_p)mi)->count;
break;
default:
@@ -742,10 +755,10 @@ int getMlistOrigin( wMenu_p m, wMenuList_p ml )
void wMenuListAdd(
- wMenuList_p ml,
- int index,
- const char * labelStr,
- void * data )
+ wMenuList_p ml,
+ int index,
+ const char * labelStr,
+ void * data )
{
int origin;
wMenuListItem_p wl_p;
@@ -754,7 +767,8 @@ void wMenuListAdd(
int rc;
origin = getMlistOrigin(ml->mlparent, ml);
- for ( count=0,wl_p=ml->right; wl_p!=(wMenuListItem_p)ml; count++,wl_p=wl_p->right ) {
+ for ( count=0,wl_p=ml->right; wl_p!=(wMenuListItem_p)ml;
+ count++,wl_p=wl_p->right ) {
if (wl_p->labelStr != NULL && strcmp( labelStr, wl_p->labelStr ) == 0) {
/* move item */
if (count != index) {
@@ -772,34 +786,37 @@ void wMenuListAdd(
removeItem( ml->left );
add:
ml->count--;
- if (wl_p->labelStr )
+ if (wl_p->labelStr ) {
free( CAST_AWAY_CONST wl_p->labelStr );
+ }
wl_p->labelStr = mswStrdup( labelStr );
} else {
wl_p = (wMenuListItem_p)createMenuItem( NULL, M_LISTITEM, NULL,
- labelStr, sizeof *wl_p );
+ labelStr, sizeof *wl_p );
}
((wMenuListItem_p)wl_p)->data = data;
((wMenuListItem_p)wl_p)->action = ml->action;
- if (index < 0 || index > ml->count)
+ if (index < 0 || index > ml->count) {
index = ml->count;
+ }
for ( mi=(wMenuListItem_p)ml,count=0; count<index; mi=mi->right,count++);
rc = InsertMenu( ml->mlparent->menu, origin+index,
- MF_BYPOSITION|MF_STRING, wl_p->index, wl_p->labelStr );
+ MF_BYPOSITION|MF_STRING, wl_p->index, wl_p->labelStr );
appendItem( mi, wl_p );
ml->count++;
}
void wMenuListDelete(
- wMenuList_p ml,
- const char * labelStr )
+ wMenuList_p ml,
+ const char * labelStr )
{
int origin, count;
wMenuListItem_p wl_p;
origin = getMlistOrigin(ml->mlparent, ml);
- for ( count=0,wl_p=ml->right; wl_p!=(wMenuListItem_p)ml; count++,wl_p=wl_p->right ) {
+ for ( count=0,wl_p=ml->right; wl_p!=(wMenuListItem_p)ml;
+ count++,wl_p=wl_p->right ) {
if (wl_p->labelStr != NULL && strcmp( labelStr, wl_p->labelStr ) == 0) {
/* delete item */
mswUnregister( wl_p->index );
@@ -814,27 +831,30 @@ void wMenuListDelete(
const char * wMenuListGet(
- wMenuList_p ml,
- int index,
- void ** data )
+ wMenuList_p ml,
+ int index,
+ void ** data )
{
int origin, count;
wMenuListItem_p wl_p;
- if (index >= ml->count)
+ if (index >= ml->count) {
return NULL;
+ }
origin = getMlistOrigin(ml->mlparent, ml);
for ( count=0,wl_p=ml->right; wl_p&&count<index; count++,wl_p=wl_p->right );
- if (wl_p==NULL)
+ if (wl_p==NULL) {
return NULL;
- if ( data )
+ }
+ if ( data ) {
*data = wl_p->data;
+ }
return wl_p->labelStr;
}
void wMenuListClear(
- wMenuList_p ml )
+ wMenuList_p ml )
{
int origin, count;
wMenuListItem_p wl_p, wl_q;
@@ -854,13 +874,13 @@ void wMenuListClear(
wMenuToggle_p wMenuToggleCreate(
- wMenu_p m,
- const char * helpStr,
- const char * labelStr,
- long acclKey,
- wBool_t set,
- wMenuCallBack_p action,
- void * data )
+ wMenu_p m,
+ const char * helpStr,
+ const char * labelStr,
+ long acclKey,
+ wBool_t set,
+ wMenuCallBack_p action,
+ void * data )
{
wMenuToggle_p mt;
int rc;
@@ -870,7 +890,8 @@ wMenuToggle_p wMenuToggleCreate(
UINT vk;
long modifier;
- mt = (wMenuToggle_p)createMenuItem( m, M_TOGGLE, helpStr, labelStr, sizeof *mt );
+ mt = (wMenuToggle_p)createMenuItem( m, M_TOGGLE, helpStr, labelStr,
+ sizeof *mt );
/*setAcclKey( m->parent, m->menu, mt->menu_item, acclKey );*/
mt->action = action;
mt->data = data;
@@ -911,8 +932,9 @@ wMenuToggle_p wMenuToggleCreate(
ac = tolower( ac );
}
vk = VkKeyScan( ac );
- if ( vk & 0xFF00 )
+ if ( vk & 0xFF00 ) {
modifier |= WKEY_SHIFT;
+ }
acclTable(acclTable_da.cnt-1).acclKey = (modifier<<8) | (vk&0x00FF);
acclTable(acclTable_da.cnt-1).mp = (wMenuPush_p)mt;
}
@@ -924,30 +946,33 @@ wMenuToggle_p wMenuToggleCreate(
wBool_t wMenuToggleGet(
- wMenuToggle_p mt )
+ wMenuToggle_p mt )
{
- return (GetMenuState( mt->mparent->menu, mt->index, MF_BYCOMMAND ) & MF_CHECKED) != 0;
+ return (GetMenuState( mt->mparent->menu, mt->index,
+ MF_BYCOMMAND ) & MF_CHECKED) != 0;
}
wBool_t wMenuToggleSet(
- wMenuToggle_p mt,
- wBool_t set )
+ wMenuToggle_p mt,
+ wBool_t set )
{
wBool_t rc;
- CheckMenuItem( mt->mparent->menu, mt->index, MF_BYCOMMAND|(set?MF_CHECKED:MF_UNCHECKED) );
- rc = (GetMenuState( mt->mparent->menu, mt->index, MF_BYCOMMAND ) & MF_CHECKED) != 0;
+ CheckMenuItem( mt->mparent->menu, mt->index,
+ MF_BYCOMMAND|(set?MF_CHECKED:MF_UNCHECKED) );
+ rc = (GetMenuState( mt->mparent->menu, mt->index,
+ MF_BYCOMMAND ) & MF_CHECKED) != 0;
return rc;
}
void wMenuToggleEnable(
- wMenuToggle_p mt,
- wBool_t enable )
+ wMenuToggle_p mt,
+ wBool_t enable )
{
EnableMenuItem( mt->mparent->menu, mt->index,
- MF_BYCOMMAND|(enable?MF_ENABLED:(MF_DISABLED|MF_GRAYED)) );
+ MF_BYCOMMAND|(enable?MF_ENABLED:(MF_DISABLED|MF_GRAYED)) );
mt->enabled = enable;
-}
+}
/*
*****************************************************************************
@@ -959,39 +984,40 @@ void wMenuToggleEnable(
void mswMenuMove(
- wMenu_p m,
- wWinPix_t x,
- wWinPix_t y )
+ wMenu_p m,
+ wWinPix_t x,
+ wWinPix_t y )
{
wControl_p b;
b = (wControl_p)m->parent;
if (b && b->hWnd)
if (!SetWindowPos( b->hWnd, HWND_TOP, x, y,
- CW_USEDEFAULT, CW_USEDEFAULT,
- SWP_NOSIZE|SWP_NOZORDER))
- mswFail("mswMenuMove");
+ CW_USEDEFAULT, CW_USEDEFAULT,
+ SWP_NOSIZE|SWP_NOZORDER)) {
+ mswFail("mswMenuMove");
+ }
}
static void pushMenuButt(
- void * data )
+ void * data )
{
wMenu_p m = (wMenu_p)data;
RECT rect;
mswAllowBalloonHelp = FALSE;
GetWindowRect( m->hWnd, &rect );
TrackPopupMenu( m->menu, TPM_LEFTALIGN, rect.left, rect.bottom,
- 0, ((wControl_p)(m->parent))->hWnd, NULL );
+ 0, ((wControl_p)(m->parent))->hWnd, NULL );
}
wMenu_p wMenuCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option )
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option )
{
wMenu_p m;
wControl_p b;
@@ -1004,7 +1030,7 @@ wMenu_p wMenuCreate(
}
m = (wMenu_p)createMenuItem( NULL, M_MENU, helpStr, label, sizeof *m );
m->button = wButtonCreate( parent, x, y, helpStr, labelStr,
- buttOption, 0, pushMenuButt, (void*)m );
+ buttOption, 0, pushMenuButt, (void*)m );
b = (wControl_p)m->button;
m->parent = b->parent;
m->x = b->x;
@@ -1023,9 +1049,9 @@ wMenu_p wMenuCreate(
wMenu_p wMenuBarAdd(
- wWin_p w,
- const char * helpStr,
- const char * labelStr )
+ wWin_p w,
+ const char * helpStr,
+ const char * labelStr )
{
HMENU menu;
wMenu_p m;
@@ -1043,7 +1069,8 @@ wMenu_p wMenuBarAdd(
m->mmtype = MM_BAR;
m->first = m->last = NULL;
- rc = AppendMenu( menu, MF_STRING|MF_POPUP|MF_ENABLED, (UINT_PTR)(m->menu), labelStr );
+ rc = AppendMenu( menu, MF_STRING|MF_POPUP|MF_ENABLED, (UINT_PTR)(m->menu),
+ labelStr );
DrawMenuBar( ((wControl_p)w)->hWnd );
return m;
@@ -1052,8 +1079,8 @@ wMenu_p wMenuBarAdd(
wMenu_p wMenuPopupCreate(
- wWin_p w,
- const char * labelStr )
+ wWin_p w,
+ const char * labelStr )
{
wMenu_p m;
long buttOption = 0;
@@ -1083,21 +1110,21 @@ void wMenuPopupShow( wMenu_p mp )
GetCursorPos( &pt );
TrackPopupMenu( mp->menu, TPM_LEFTALIGN, pt.x, pt.y, 0, mp->hWnd, NULL );
}
-
+
/*-----------------------------------------------------------------*/
void wMenuSetTraceCallBack(
- wMenu_p m,
- wMenuTraceCallBack_p func,
- void * data )
+ wMenu_p m,
+ wMenuTraceCallBack_p func,
+ void * data )
{
m->traceFunc = func;
m->traceData = data;
}
wBool_t wMenuAction(
- wMenu_p m,
- const char * label )
+ wMenu_p m,
+ const char * label )
{
wMenuItem_p mi;
wMenuToggle_p mt;
@@ -1108,10 +1135,11 @@ wBool_t wMenuAction(
case M_SEPARATOR:
break;
case M_PUSH:
- if ( ((wMenuPush_p)mi)->enabled == FALSE )
+ if ( ((wMenuPush_p)mi)->enabled == FALSE ) {
wBeep();
- else
+ } else {
((wMenuPush_p)mi)->action( ((wMenuPush_p)mi)->data );
+ }
break;
case M_TOGGLE:
mt = (wMenuToggle_p)mi;
diff --git a/app/wlib/mswlib/mswmisc.c b/app/wlib/mswlib/mswmisc.c
index 5b45e2b..4bf9481 100644
--- a/app/wlib/mswlib/mswmisc.c
+++ b/app/wlib/mswlib/mswmisc.c
@@ -17,14 +17,14 @@
*
* 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
*/
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <shellapi.h>
#include <string.h>
-#include <malloc.h>
+#include <malloc.h> // required for heapinfo in function wMemStats
#include <stdlib.h>
#include <commdlg.h>
#include <math.h>
@@ -61,8 +61,8 @@ const char * GetCurCommandName(void);
#define LABELFONTRESET
#else
#define LABELFONTDECL HFONT hFont;
-#define LABELFONTRESET if (!mswThickFont) {SelectObject( hDc, hFont );}
-#define LABELFONTSELECT if (!mswThickFont) {hFont = SelectObject( hDc, mswLabelFont );}
+#define LABELFONTRESET SelectObject( hDc, hFont );
+#define LABELFONTSELECT hFont = SelectObject( hDc, mswLabelFont );
#endif
/*
@@ -78,13 +78,8 @@ int mswEditHeight;
int mswAllowBalloonHelp = TRUE;
HFONT mswOldTextFont;
HFONT mswLabelFont;
-/** @prefs [msw tweak] ThickFont=1 */
-long mswThickFont = 1;
double mswScale = 1.0;
-/** @prefs [Preference] LargeIcons=1.5 Set toolbar icon scaling. Limited 1.0 to 2.0 */
-double scaleIcon = 1.0; /** Scaling factor for toolbar icons */
-
callBacks_t *mswCallBacks[CALLBACK_CNT];
void closeBalloonHelp(int inx);
@@ -101,12 +96,12 @@ extern FILE * logFile;
*/
struct wWin_t {
- WOBJ_COMMON
- int validGeometry;
- int min_width;
- int max_width;
- int min_height;
- int max_height;
+ WOBJ_COMMON
+ int validGeometry;
+ int min_width;
+ int max_width;
+ int min_height;
+ int max_height;
wWinPix_t lastX, lastY;
wWinPix_t padX, padY;
wControl_p first, last;
@@ -177,8 +172,6 @@ char *mswProfileFile;
static wBalloonHelp_t * balloonHelpStrings;
-static wCursor_t curCursor = wCursorNormal;
-
#ifdef HELPSTR
static FILE * helpStrF;
#endif
@@ -193,18 +186,20 @@ extern char *userLocale;
// list of supported fileformats for image files
static char * filterImageFiles[] = { N_("All image files"),
- "*.gif;*.jpg;*.jpeg;*.png;*.tif;*.tiff",
- N_("GIF files (*.gif)"),
- "*.gif",
- N_("JPEG files (*.jpeg,*.jpg)"),
- "*.jpg;*.jpeg",
- N_("PNG files (*.png)"),
- "*.png",
- N_("TIFF files (*.tiff, *.tif)"),
- "*.tif;*.tiff",
- N_("All files (*)"),
- "*",
- };
+ "*.gif;*.jpg;*.jpeg;*.png;*.tif;*.tiff",
+ N_("GIF files (*.gif)"),
+ "*.gif",
+ N_("JPEG files (*.jpeg,*.jpg)"),
+ "*.jpg;*.jpeg",
+ N_("PNG files (*.png)"),
+ "*.png",
+ N_("TIFF files (*.tiff, *.tif)"),
+ "*.tif;*.tiff",
+ N_("All files (*)"),
+ "*",
+ };
+
+static HICON hWindowIcon;
/*
*****************************************************************************
@@ -308,7 +303,8 @@ void mswRepaintLabel(HWND hWnd, wControl_p b)
LABELFONTSELECT
newBrush = CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
oldBrush = SelectObject(hDc, newBrush);
- dw = GetTextExtent(hDc, CAST_AWAY_CONST b->labelStr, (int)(strlen(b->labelStr)));
+ dw = GetTextExtent(hDc, CAST_AWAY_CONST b->labelStr,
+ (int)(strlen(b->labelStr)));
rect.left = b->labelX;
rect.top = b->labelY;
rect.right = b->labelX + LOWORD(dw);
@@ -318,7 +314,8 @@ void mswRepaintLabel(HWND hWnd, wControl_p b)
/*SetBkMode( hDc, OPAQUE );*/
SetBkColor(hDc, GetSysColor(COLOR_BTNFACE));
- if (!TextOut(hDc, b->labelX, b->labelY, b->labelStr, (int)(strlen(b->labelStr)))) {
+ if (!TextOut(hDc, b->labelX, b->labelY, b->labelStr,
+ (int)(strlen(b->labelStr)))) {
mswFail("Repainting text label");
}
@@ -381,8 +378,8 @@ void * mswAlloc(
w->data = data;
w->focusChainNext = NULL;
w->shown = TRUE;
- w->hilite = FALSE;
- w->errStr = NULL;
+ w->hilite = FALSE;
+ w->errStr = NULL;
return w;
}
@@ -587,29 +584,27 @@ static void getSavedSizeAndPos(
if ((option&F_RECALLPOS) && nameStr) {
int x, y, w, h;
- int xadj, yadj;
+ int xadj, yadj;
const char *cp;
int state;
- w = h = 0;
- xadj = 1;
- yadj = mTitleH + 1;
- if (option & F_RESIZE) {
- xadj += mResizeBorderW * 2;
- yadj += mResizeBorderH * 2;
- }
- else
- {
- xadj += mFixBorderW * 2;
- yadj += mFixBorderH * 2;
- }
- //if (option & F_MENUBAR) {
- // yadj += mMenuH;
- //}
+ w = h = 0;
+ xadj = 1;
+ yadj = mTitleH + 1;
+ if (option & F_RESIZE) {
+ xadj += mResizeBorderW * 2;
+ yadj += mResizeBorderH * 2;
+ } else {
+ xadj += mFixBorderW * 2;
+ yadj += mFixBorderH * 2;
+ }
+ //if (option & F_MENUBAR) {
+ // yadj += mMenuH;
+ //}
if ((option & F_RESIZE) &&
(cp = wPrefGetStringBasic("msw window size", nameStr)) &&
- (state = (int)strtol(cp, &cq, 10), cp != cq) && // state is not used
+ (state = (int)strtol(cp, &cq, 10), cp != cq) && // state is not used
(cp = cq, w = (wWinPix_t)(strtod(cp, &cq)), cp != cq) &&
(cp = cq, h = (wWinPix_t)(strtod(cp, &cq)), cp != cq)
) {
@@ -645,6 +640,11 @@ static void getSavedSizeAndPos(
x = 0;
}
+ // Make sure we can see the dialog
+ xadj += 100;
+ yadj += 100;
+
+
if (y + h > screenHeight - yadj) {
y = screenHeight - yadj - h;
}
@@ -660,7 +660,7 @@ static void getSavedSizeAndPos(
}
/**
- * Set min and max dimensions for a window.
+ * Set min and max dimensions for a window.
*
* \param min_width IN minimum width of window
* \param max_width IN maximum width of window
@@ -671,21 +671,21 @@ static void getSavedSizeAndPos(
* \param aspect_ration IN unused on Windows
*/
void wSetGeometry(wWin_p win,
- wWinPix_t min_width,
- wWinPix_t max_width,
- wWinPix_t min_height,
- wWinPix_t max_height,
- wWinPix_t base_width,
- wWinPix_t base_height,
- double aspect_ratio)
+ wWinPix_t min_width,
+ wWinPix_t max_width,
+ wWinPix_t min_height,
+ wWinPix_t max_height,
+ wWinPix_t base_width,
+ wWinPix_t base_height,
+ double aspect_ratio)
{
- win->validGeometry = TRUE; //remember that geometry was set
- win->min_width = min_width;
- win->max_width = max_width;
- win->min_height = min_height;
- win->max_height = max_height;
+ win->validGeometry = TRUE; //remember that geometry was set
+ win->min_width = min_width;
+ win->max_width = max_width;
+ win->min_height = min_height;
+ win->max_height = max_height;
- return;
+ return;
}
/**
@@ -695,13 +695,13 @@ void wSetGeometry(wWin_p win,
* \param typ IN type of window (W_MAIN or W_POPUP)
* \param option IN options for window creation
* \param classname IN pre-registered window class
- * \param style IN
+ * \param style IN
* \param labelStr IN window title
* \param winProc IN callback procedure
* \param w IN default window width
* \param h IN default window height
* \param data IN ??
- * \param nameStr IN name of window
+ * \param nameStr IN name of window
* \param pShowCmd IN/OUT window show option (maximize or show normal)
* \return window data structure
*/
@@ -740,7 +740,7 @@ static wWin_p winCommonCreate(
if (typ == W_MAIN) {
*pShowCmd = ((option & F_MAXIMIZE) ? SW_SHOWMAXIMIZED : SW_SHOWNORMAL);
} else {
- *pShowCmd = SW_HIDE; //Make sure to hide first
+ *pShowCmd = SW_HIDE; //Make sure to hide first
}
if (xx != CW_USEDEFAULT) {
@@ -800,6 +800,10 @@ static wWin_p winCommonCreate(
win->nameStr = mswStrdup(nameStr);
+ //HICON hIcon1 = LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(101), IMAGE_ICON, 32, 32, LR_DEFAULTSIZE);
+ SendMessage(win->hWnd, WM_SETICON, ICON_SMALL, (LPARAM)hWindowIcon);
+ SendMessage(win->hWnd, WM_SETICON, ICON_BIG, (LPARAM)hWindowIcon);
+
if (typ == W_MAIN) {
mswInitColorPalette();
}
@@ -850,7 +854,7 @@ wWin_p wWinMainCreate(
TEXTMETRIC tm;
char *pos;
char * configName;
- long maximize;
+ long maximize;
/* check for configuration name */
if (pos = strchr(name, ';')) {
@@ -887,14 +891,9 @@ wWin_p wWinMainCreate(
/* length of path + \ + length of filename + . + length of extension + \0 */
helpFile = (char*)malloc(strlen(libDir) + 1 + strlen(appName) + 1 + 3 + 1);
wsprintf(helpFile, "%s\\%s.chm", libDir, appName);
- wPrefGetInteger("msw tweak", "ThickFont", &mswThickFont, 0);
-
- wPrefGetInteger("draw", "maximized", &maximize, 0L);
- option |= (maximize ? F_MAXIMIZE : 0);
- wPrefGetFloat(PREFSECTION, LARGEICON, &scaleIcon, 1.0);
- if (scaleIcon < 1.0) scaleIcon = 1.0;
- if (scaleIcon > 2.0) scaleIcon = 2.0;
+ wPrefGetInteger("draw", "maximized", &maximize, 0L);
+ option |= (maximize ? F_MAXIMIZE : 0);
showCmd = SW_SHOW;
w = winCommonCreate(NULL, W_MAIN, option|F_RESIZE, "MswMainWindow",
@@ -902,18 +901,11 @@ wWin_p wWinMainCreate(
nameStr, &showCmd);
mswHWnd = w->hWnd;
- //HICON hIcon = LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(0), IMAGE_ICON, 32, 32, LR_DEFAULTSIZE);
- //HICON hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(0));
- //SendMessage(mswHWnd, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
- //SendMessage(mswHWnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
-
- if (!mswThickFont) {
- SendMessage(mswHWnd, WM_SETFONT, (WPARAM)mswLabelFont, (LPARAM)0);
- hDc = GetDC(mswHWnd);
- GetTextMetrics(hDc, &tm);
- mswEditHeight = tm.tmHeight+2;
- ReleaseDC(mswHWnd, hDc);
- }
+ SendMessage(mswHWnd, WM_SETFONT, (WPARAM)mswLabelFont, (LPARAM)0);
+ hDc = GetDC(mswHWnd);
+ GetTextMetrics(hDc, &tm);
+ mswEditHeight = tm.tmHeight+2;
+ ReleaseDC(mswHWnd, hDc);
ShowWindow(mswHWnd, showCmd);
UpdateWindow(mswHWnd);
@@ -1257,19 +1249,19 @@ static void savePos(wWin_p win)
if (win->nameStr &&
IsWindowVisible(win->hWnd) /*&& !IsIconic( win->hWnd )*/) {
- GetWindowRect(win->hWnd, &rect);
+ GetWindowRect(win->hWnd, &rect);
- if (win->option&F_RECALLPOS) {
+ if (win->option&F_RECALLPOS) {
char posStr[20];
- wsprintf(posStr, "%d %d",
- rect.left,
- rect.top);
- wPrefSetString("msw window pos", win->nameStr, posStr);
+ wsprintf(posStr, "%d %d",
+ rect.left,
+ rect.top);
+ wPrefSetString("msw window pos", win->nameStr, posStr);
if (win->option&F_RESIZE) {
- GetClientRect(win->hWnd, &rect);
- w = rect.right - rect.left;
- h = rect.bottom - rect.top;
+ GetClientRect(win->hWnd, &rect);
+ w = rect.right - rect.left;
+ h = rect.bottom - rect.top;
wsprintf(posStr, "%d %d %d",
0, // unused
w, h);
@@ -1311,9 +1303,10 @@ void wWinShow(
win->centerWin = FALSE;
win->shown = TRUE;
- // Clear hilites
- for (wControl_p controlP = win->first; controlP; controlP = controlP->next)
- controlP->hilite = FALSE;
+ // Clear hilites
+ for (wControl_p controlP = win->first; controlP; controlP = controlP->next) {
+ controlP->hilite = FALSE;
+ }
if (mswHWnd == (HWND)0 || !IsIconic(mswHWnd)) {
ShowWindow(win->hWnd, SW_SHOW);
@@ -1459,73 +1452,6 @@ void wWinClear(
{
}
-extern long dontHideCursor;
-
-void wSetCursor(wDraw_p win,
- wCursor_t cursor)
-{
- switch (cursor) {
- case wCursorNormal:
- default:
- SetCursor(LoadCursor(NULL, IDC_ARROW));
- break;
-
- case wCursorWait:
- SetCursor(LoadCursor(NULL, IDC_WAIT));
- break;
-
- case wCursorCross:
- SetCursor(LoadCursor(NULL, IDC_CROSS));
- break;
-
- case wCursorIBeam:
- SetCursor(LoadCursor(NULL, IDC_IBEAM));
- break;
-
- case wCursorQuestion:
- SetCursor(LoadCursor(NULL, IDC_HELP));
- break;
-
- case wCursorHand:
- SetCursor(LoadCursor(NULL, IDC_HAND));
- break;
-
- case wCursorNo:
- SetCursor(LoadCursor(NULL, IDC_NO));
- break;
-
- case wCursorSizeAll:
- SetCursor(LoadCursor(NULL, IDC_SIZEALL));
- break;
-
- case wCursorSizeNESW:
- SetCursor(LoadCursor(NULL, IDC_SIZENESW));
- break;
-
- case wCursorSizeNWSE:
- SetCursor(LoadCursor(NULL, IDC_SIZENWSE));
- break;
-
- case wCursorSizeNS:
- SetCursor(LoadCursor(NULL, IDC_SIZENS));
- break;
-
- case wCursorSizeWE:
- SetCursor(LoadCursor(NULL, IDC_SIZEWE));
- break;
-
- case wCursorAppStart:
- SetCursor(LoadCursor(NULL, IDC_APPSTARTING));
- break;
-
- case wCursorNone:
- if (!dontHideCursor)
- SetCursor(NULL);
- break;
- }
-
- curCursor = cursor;
-}
void wWinDoCancel(wWin_p win)
{
@@ -1821,34 +1747,36 @@ void wControlHilite(
HDC hDc;
HPEN oldPen, newPen;
int oldMode;
- LOGBRUSH logBrush = { BS_SOLID, CONTROLHILITECOLOR, (ULONG_PTR)NULL };
+ LOGBRUSH logBrush = { BS_SOLID, CONTROLHILITECOLOR, (ULONG_PTR)NULL };
if (b == NULL) {
return;
}
- if ((b->parent==NULL) || (!IsWindowVisible(b->parent->hWnd)) || (!IsWindowVisible(b->hWnd))) {
- b->hilite = FALSE;
+ if ((b->parent==NULL) || (!IsWindowVisible(b->parent->hWnd))
+ || (!IsWindowVisible(b->hWnd))) {
+ b->hilite = FALSE;
return;
}
- if (b->hilite == hilite)
- return;
- b->hilite = hilite;
+ if (b->hilite == hilite) {
+ return;
+ }
+ b->hilite = hilite;
hDc = GetDC(b->parent->hWnd);
- newPen = ExtCreatePen(PS_GEOMETRIC | PS_SOLID | PS_ENDCAP_ROUND | PS_JOIN_BEVEL,
- CONTROLHILITEWIDTH,
- &logBrush,
- 0,
- NULL);
+ newPen = ExtCreatePen(PS_GEOMETRIC | PS_SOLID | PS_ENDCAP_ROUND | PS_JOIN_BEVEL,
+ CONTROLHILITEWIDTH,
+ &logBrush,
+ 0,
+ NULL);
oldPen = SelectObject(hDc, newPen);
oldMode = SetROP2(hDc, R2_NOTXORPEN);
- Rectangle(hDc,
- b->x - CONTROLHILITEWIDTH - 1,
- b->y - CONTROLHILITEWIDTH - 1,
- b->x + b->w + CONTROLHILITEWIDTH + 1,
- b->y + b->h + CONTROLHILITEWIDTH + 1);
+ Rectangle(hDc,
+ b->x - CONTROLHILITEWIDTH - 1,
+ b->y - CONTROLHILITEWIDTH - 1,
+ b->x + b->w + CONTROLHILITEWIDTH + 1,
+ b->y + b->h + CONTROLHILITEWIDTH + 1);
SetROP2(hDc, oldMode);
SelectObject(hDc, oldPen);
DeleteObject(newPen);
@@ -1893,23 +1821,23 @@ void wMessage(
/**
* Open a document using an external application
- *
+ *
* \param file
* \return TRUE on success, FALSE on error
- *
+ *
*/
unsigned wOpenFileExternal(char *file)
{
- HINSTANCE res;
+ HINSTANCE res;
- res = ShellExecute(mswHWnd, "open", file, NULL, NULL, SW_SHOW);
+ res = ShellExecute(mswHWnd, "open", file, NULL, NULL, SW_SHOW);
- if ((UINT_PTR)res <= 32) {
- wNoticeEx(NT_ERROR, "Error when opening file!", "Cancel", NULL);
- return(FALSE);
- }
+ if ((UINT_PTR)res <= 32) {
+ wNoticeEx(NT_ERROR, "Error when opening file!", "Cancel", NULL);
+ return(FALSE);
+ }
- return(TRUE);
+ return(TRUE);
}
void wExit(int rc)
@@ -1933,9 +1861,9 @@ void wExit(int rc)
}
}
- wPrefFlush("");
+ wPrefFlush("");
- for (inx=controlMap_da.cnt-1; inx>=0; inx--) {
+ for (inx=controlMap_da.cnt-1; inx>=0; inx--) {
b = controlMap(inx).b;
if (b != NULL) {
@@ -1948,7 +1876,7 @@ void wExit(int rc)
controlMap(inx).b = NULL;
}
- deleteBitmaps();
+ deleteBitmaps();
if (mswOldTextFont != (HFONT)0) {
DeleteObject(mswOldTextFont);
@@ -2187,7 +2115,7 @@ int wNotice3(
}
/**
- * Show help text for the given topic.
+ * Show help text for the given topic.
*
* \param topic The topic. if NULL the index page is shown.
*/
@@ -2197,11 +2125,11 @@ void wHelp(
{
char *pszHelpTopic;
HWND hwndHelp;
- const char *theTopic = "index";
+ const char *theTopic = "index";
- if (topic) {
- theTopic = topic;
- }
+ if (topic) {
+ theTopic = topic;
+ }
if (!helpInitted) {
HtmlHelp(NULL, NULL, HH_INITIALIZE, (DWORD_PTR)&dwCookie) ;
@@ -2235,7 +2163,7 @@ void doHelpMenu(void * context)
helpInitted = TRUE;
}
- const char * topic;
+ const char * topic;
switch ((int)(INT_PTR)context) {
case 1: /* Contents */
HtmlHelp(mswHWnd, helpFile, HH_DISPLAY_TOC, (DWORD_PTR)NULL);
@@ -2253,9 +2181,9 @@ void doHelpMenu(void * context)
case 3: /*Context*/
- topic = GetCurCommandName();
- wHelp(topic);
- break;
+ topic = GetCurCommandName();
+ wHelp(topic);
+ break;
default:
return;
@@ -2264,8 +2192,9 @@ void doHelpMenu(void * context)
helpInitted = TRUE;
}
-void wDoAccelHelp(wAccelKey_e key, void * context) {
- doHelpMenu(context);
+void wDoAccelHelp(wAccelKey_e key, void * context)
+{
+ doHelpMenu(context);
}
void wMenuAddHelp(
@@ -2301,126 +2230,133 @@ void wControlSetBalloonText(wControl_p b, const char * text)
void openBalloonHelp(wControl_p b, int dx, int dy)
{
- HDC hDc;
- DWORD extent;
- RECT rect;
- POINT pt;
- HFONT hFont;
- const char * msg;
- if (b->errStr) {
- msg = b->errStr;
- }
- else {
- msg = b->tipStr;
- if (!balloonHelpEnable) {
+ HDC hDc;
+ DWORD extent;
+ RECT rect;
+ POINT pt;
+ HFONT hFont;
+ const char * msg;
+ if (b->errStr) {
+ msg = b->errStr;
+ } else {
+ msg = b->tipStr;
+ if (!balloonHelpEnable) {
#ifdef BALLOON_TRACE
- fprintf(logFile, "openBalloon !Enable state %d\n", balloonHelpState); fflush(logFile);
+ fprintf(logFile, "openBalloon !Enable state %d\n", balloonHelpState);
+ fflush(logFile);
#endif
- return;
- }
- }
+ return;
+ }
+ }
#ifdef BALLOON_TRACE
- fprintf(logFile, "openBalloon %s state %d\n", msg, balloonHelpState); fflush(logFile);
+ fprintf(logFile, "openBalloon %s state %d\n", msg, balloonHelpState);
+ fflush(logFile);
#endif
- if (!balloonHelpHWnd)
- return;
- int w, h;
- hDc = GetDC(balloonHelpHWnd);
- hFont = SelectObject(hDc, mswLabelFont);
- extent = GetTextExtent(hDc, CAST_AWAY_CONST msg, (int)(strlen(msg)));
- w = LOWORD(extent);
- h = HIWORD(extent);
-
- if (b->type == B_RADIO ||
- b->type == B_TOGGLE) {
- pt.y = b->h;
- }
- else {
- GetClientRect(b->hWnd, &rect);
- pt.y = rect.bottom;
- }
-
- pt.x = dx;
- pt.y -= dy;
- ClientToScreen(b->hWnd, &pt);
-
- if (pt.x + w + 2 > screenWidth) {
- pt.x = screenWidth - (w + 2);
- }
-
- if (pt.x < 0) {
- pt.x = 0;
- }
-
- SetWindowPos(balloonHelpHWnd, HWND_TOPMOST, pt.x, pt.y, w + 6, h + 4,
- SWP_SHOWWINDOW | SWP_NOACTIVATE);
- if (!b->errStr) {
- SetBkColor(hDc, GetSysColor(COLOR_INFOBK));
- SetTextColor(hDc, GetSysColor(COLOR_INFOTEXT));
- } else {
- SetBkColor(hDc, GetSysColor(COLOR_HIGHLIGHT));
- SetTextColor(hDc, GetSysColor(COLOR_HIGHLIGHTTEXT));
- }
- TextOut(hDc, 2, 1, msg, (int)(strlen(msg)));
- SelectObject(hDc, hFont);
- ReleaseDC(balloonHelpHWnd, hDc);
- balloonHelpState = balloonHelpShow;
- balloonControlButton = b;
+ if (!balloonHelpHWnd) {
+ return;
+ }
+ int w, h;
+ hDc = GetDC(balloonHelpHWnd);
+ hFont = SelectObject(hDc, mswLabelFont);
+ extent = GetTextExtent(hDc, CAST_AWAY_CONST msg, (int)(strlen(msg)));
+ w = LOWORD(extent);
+ h = HIWORD(extent);
+
+ if (b->type == B_RADIO ||
+ b->type == B_TOGGLE) {
+ pt.y = b->h;
+ } else {
+ GetClientRect(b->hWnd, &rect);
+ pt.y = rect.bottom;
+ }
+
+ pt.x = dx;
+ pt.y -= dy;
+ ClientToScreen(b->hWnd, &pt);
+
+ if (pt.x + w + 2 > screenWidth) {
+ pt.x = screenWidth - (w + 2);
+ }
+
+ if (pt.x < 0) {
+ pt.x = 0;
+ }
+
+ SetWindowPos(balloonHelpHWnd, HWND_TOPMOST, pt.x, pt.y, w + 6, h + 4,
+ SWP_SHOWWINDOW | SWP_NOACTIVATE);
+ if (!b->errStr) {
+ SetBkColor(hDc, GetSysColor(COLOR_INFOBK));
+ SetTextColor(hDc, GetSysColor(COLOR_INFOTEXT));
+ } else {
+ SetBkColor(hDc, GetSysColor(COLOR_HIGHLIGHT));
+ SetTextColor(hDc, GetSysColor(COLOR_HIGHLIGHTTEXT));
+ }
+ TextOut(hDc, 2, 1, msg, (int)(strlen(msg)));
+ SelectObject(hDc, hFont);
+ ReleaseDC(balloonHelpHWnd, hDc);
+ balloonHelpState = balloonHelpShow;
+ balloonControlButton = b;
}
void startBalloonHelp(void)
{
- wBalloonHelp_t * bh;
-
- if (!balloonHelpButton->tipStr) {
- if (!balloonHelpStrings)
- return;
- for (bh = balloonHelpStrings; bh->name && strcmp(bh->name, balloonHelpButton->helpStr) != 0; bh++);
- if (!bh->name || !bh->value)
- balloonHelpButton->tipStr = _(balloonHelpButton->helpStr);
- else
- balloonHelpButton->tipStr = _(bh->value);
- }
+ wBalloonHelp_t * bh;
- openBalloonHelp(balloonHelpButton, 0, 0);
+ if (!balloonHelpButton->tipStr) {
+ if (!balloonHelpStrings) {
+ return;
+ }
+ for (bh = balloonHelpStrings; bh->name
+ && strcmp(bh->name, balloonHelpButton->helpStr) != 0; bh++);
+ if (!bh->name || !bh->value) {
+ balloonHelpButton->tipStr = _(balloonHelpButton->helpStr);
+ } else {
+ balloonHelpButton->tipStr = _(bh->value);
+ }
+ }
+
+ openBalloonHelp(balloonHelpButton, 0, 0);
}
void closeBalloonHelp(int inx)
{
#ifdef BALLOON_TRACE
- fprintf(logFile, "closeBallonHelp %d state=%d\n", inx, balloonHelpState); fflush(logFile);
+ fprintf(logFile, "closeBallonHelp %d state=%d\n", inx, balloonHelpState);
+ fflush(logFile);
#endif
- if (balloonHelpTimer) {
- KillTimer(mswHWnd, balloonHelpTimer);
- balloonHelpTimer = (UINT_PTR)0;
- }
+ if (balloonHelpTimer) {
+ KillTimer(mswHWnd, balloonHelpTimer);
+ balloonHelpTimer = (UINT_PTR)0;
+ }
- if (balloonHelpState == balloonHelpShow)
- if (balloonHelpHWnd) {
- ShowWindow(balloonHelpHWnd, SW_HIDE);
- }
+ if (balloonHelpState == balloonHelpShow)
+ if (balloonHelpHWnd) {
+ ShowWindow(balloonHelpHWnd, SW_HIDE);
+ }
- balloonHelpState = balloonHelpIdle;
+ balloonHelpState = balloonHelpIdle;
}
-void wControlSetBalloon(wControl_p b, wWinPix_t dx, wWinPix_t dy, const char * msg)
+void wControlSetBalloon(wControl_p b, wWinPix_t dx, wWinPix_t dy,
+ const char * msg)
{
- if (msg) {
- if (b->errStr)
- free(b->errStr);
- b->errStr = mswStrdup(msg);
- openBalloonHelp(b, dx, dy);
- }
- else {
- if (b->errStr)
- free(b->errStr);
- b->errStr = NULL;
- closeBalloonHelp(2);
- }
+ if (msg) {
+ if (b->errStr) {
+ free(b->errStr);
+ }
+ b->errStr = mswStrdup(msg);
+ openBalloonHelp(b, dx, dy);
+ } else {
+ if (b->errStr) {
+ free(b->errStr);
+ }
+ b->errStr = NULL;
+ closeBalloonHelp(2);
+ }
}
@@ -2482,19 +2418,20 @@ struct wFilSel_t {
char *
GetImageFileFormats(void)
{
- char *filter = malloc(2048);
- char *current = filter;
- char *message;
+ char *filter = malloc(2048);
+ char *current = filter;
+ char *message;
- for (int i = 0; i < sizeof(filterImageFiles) / sizeof(filterImageFiles[0]); i += 2) {
- message = gettext(filterImageFiles[i]);
- strcpy(current, message);
- current += strlen(message) + 1;
- strcpy(current, filterImageFiles[i + 1]);
- current += strlen(current) + 1;
- }
- *current = '\0';
- return(filter);
+ for (int i = 0; i < sizeof(filterImageFiles) / sizeof(filterImageFiles[0]);
+ i += 2) {
+ message = gettext(filterImageFiles[i]);
+ strcpy(current, message);
+ current += strlen(message) + 1;
+ strcpy(current, filterImageFiles[i + 1]);
+ current += strlen(current) + 1;
+ }
+ *current = '\0';
+ return(filter);
}
/**
@@ -2530,12 +2467,11 @@ int wFilSelect(
memset(&ofn, 0, sizeof ofn);
ofn.lStructSize = sizeof ofn;
ofn.hwndOwner = mswHWnd;
- if (fs->option == FS_PICTURES) {
- ofn.lpstrFilter = GetImageFileFormats();
- }
- else {
- ofn.lpstrFilter = fs->extList;
- }
+ if (fs->option == FS_PICTURES) {
+ ofn.lpstrFilter = GetImageFileFormats();
+ } else {
+ ofn.lpstrFilter = fs->extList;
+ }
ofn.nFilterIndex = 0;
selFileName = malloc(SELECTEDFILENAME_BUFFERSIZE);
@@ -2773,24 +2709,24 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
HDC hDc;
wAccelKey_e extChar;
- LPMINMAXINFO pMMI;
+ LPMINMAXINFO pMMI;
switch (message) {
- case WM_GETMINMAXINFO:
- pMMI = (LPMINMAXINFO)lParam;
- inx = GetWindowWord(hWnd, 0);
-
- if (inx >= CONTROL_BASE && inx <= controlMap_da.cnt) {
- w = (wWin_p)controlMap(inx - CONTROL_BASE).b;
- if (w != NULL) {
- if (w->validGeometry) {
- pMMI->ptMaxTrackSize.x = w->max_width;
- pMMI->ptMaxTrackSize.y = w->max_height;
- pMMI->ptMinTrackSize.x = w->min_width;
- pMMI->ptMinTrackSize.y = w->min_height;
- }
- }
- }
- return (LRESULT)0;
+ case WM_GETMINMAXINFO:
+ pMMI = (LPMINMAXINFO)lParam;
+ inx = GetWindowWord(hWnd, 0);
+
+ if (inx >= CONTROL_BASE && inx <= controlMap_da.cnt) {
+ w = (wWin_p)controlMap(inx - CONTROL_BASE).b;
+ if (w != NULL) {
+ if (w->validGeometry) {
+ pMMI->ptMaxTrackSize.x = w->max_width;
+ pMMI->ptMaxTrackSize.y = w->max_height;
+ pMMI->ptMinTrackSize.x = w->min_width;
+ pMMI->ptMinTrackSize.y = w->min_height;
+ }
+ }
+ }
+ return (LRESULT)0;
case WM_MOUSEWHEEL:
inx = GetWindowWord(hWnd, 0);
@@ -2800,13 +2736,13 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
if (mswCallBacks[b->type] != NULL &&
mswCallBacks[b->type]->messageProc)
return mswCallBacks[b->type]->messageProc((wControl_p)b, hWnd,
- message, wParam, lParam);
+ message, wParam, lParam);
return (LRESULT)0;
- case WM_COMMAND:
+ case WM_COMMAND:
closeBalloonHelp(3);
- case WM_DRAWITEM:
+ case WM_DRAWITEM:
case WM_MEASUREITEM:
if (WCMD_PARAM_ID < CONTROL_BASE || WCMD_PARAM_ID > (WPARAM)controlMap_da.cnt) {
@@ -2891,8 +2827,8 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
case SIZE_MAXIMIZED:
case SIZE_MINIMIZED:
case SIZE_RESTORED:
- newW = LOWORD(lParam);
- newH = HIWORD(lParam);
+ newW = LOWORD(lParam);
+ newH = HIWORD(lParam);
if (newW <= 0 || newH <= 0) {
break;
@@ -2910,8 +2846,8 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
if (w->winProc) {
w->winProc(w, wResize_e, NULL, w->data);
- w->winProc(w, wState_e, NULL, w->data);
- }
+ w->winProc(w, wState_e, NULL, w->data);
+ }
break;
@@ -2939,7 +2875,7 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
if (mswCallBacks[w->type] != NULL &&
mswCallBacks[w->type]->messageProc)
return mswCallBacks[w->type]->messageProc((wControl_p)w, hWnd,
- message, wParam, lParam);
+ message, wParam, lParam);
break;
}
@@ -2961,14 +2897,15 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
if (b && b->type == B_DRAW) {
// Change Num keypad to a special code to emulate cursor keys
- if (wParam == VK_UP ||
- wParam == VK_DOWN ||
- wParam == VK_RIGHT ||
- wParam == VK_LEFT ||
- wParam == VK_INSERT ||
- wParam == VK_DELETE)
- {
- if ((lParam & 0x1000000) == 0) lParam |= 0x1000000;
+ if (wParam == VK_UP ||
+ wParam == VK_DOWN ||
+ wParam == VK_RIGHT ||
+ wParam == VK_LEFT ||
+ wParam == VK_INSERT ||
+ wParam == VK_DELETE) {
+ if ((lParam & 0x1000000) == 0) {
+ lParam |= 0x1000000;
+ }
}
return SendMessage(b->hWnd, WM_CHAR, wParam, lParam);
}
@@ -2984,7 +2921,7 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
if (mswCallBacks[B_BUTTON] != NULL &&
mswCallBacks[B_BUTTON]->messageProc) {
ret = mswCallBacks[B_BUTTON]->messageProc(b, b->hWnd,
- WM_COMMAND, wParam, lParam);
+ WM_COMMAND, wParam, lParam);
}
inMainWndProc = FALSE;
@@ -3004,7 +2941,7 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
if (mswCallBacks[B_BUTTON] != NULL &&
mswCallBacks[B_BUTTON]->messageProc) {
ret = mswCallBacks[B_BUTTON]->messageProc(b, b->hWnd,
- WM_COMMAND, wParam, lParam);
+ WM_COMMAND, wParam, lParam);
}
inMainWndProc = FALSE;
@@ -3027,7 +2964,7 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
if (mswCallBacks[b->type] != NULL &&
mswCallBacks[b->type]->messageProc) {
ret = mswCallBacks[b->type]->messageProc(b, b->hWnd,
- WM_COMMAND, MAKELPARAM(LOWORD(wParam), BN_CLICKED), (LPARAM)(b->hWnd));
+ WM_COMMAND, MAKELPARAM(LOWORD(wParam), BN_CLICKED), (LPARAM)(b->hWnd));
}
inMainWndProc = FALSE;
@@ -3098,64 +3035,66 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
return (LRESULT)0;
case WM_SETCURSOR:
- if (hWnd == mswHWnd)
- wSetCursor(NULL, curCursor);
+ // Set normal Arrow cursor, DefWindowProc can override it
+ SetCursor(LoadCursor(NULL, IDC_ARROW));
+
+ if (!mswAllowBalloonHelp) {
+ break;
+ }
- if (!mswAllowBalloonHelp) {
- break;
- }
+ if (IsIconic(mswHWnd)) {
+ break;
+ }
- if (IsIconic(mswHWnd)) {
- break;
- }
+ b = getControlFromCursor(hWnd, NULL);
- b = getControlFromCursor(hWnd, NULL);
-
#ifdef BALLOON_TRACE
- fprintf(logFile, "SETCURSOR %s\n", b ? b->helpStr : "NULL"); fflush(logFile);
+ fprintf(logFile, "SETCURSOR %s\n", b ? b->helpStr : "NULL");
+ fflush(logFile);
#endif
- if (b == balloonControlButton) {
- //closeBalloonHelp(61);
- break;
- }
-
- if (GetActiveWindow() != hWnd) {
- closeBalloonHelp(62);
- break;
- }
- if (!b) {
- closeBalloonHelp(63);
- break;
- }
- if (b->type == B_DRAW) {
- closeBalloonHelp(64);
- break;
- }
- if (b->helpStr == NULL) {
- closeBalloonHelp(65);
- break;
- }
-
- if (b != balloonHelpButton) {
- closeBalloonHelp(7);
- }
+ if (b == balloonControlButton) {
+ //closeBalloonHelp(61);
+ break;
+ }
+
+ if (GetActiveWindow() != hWnd) {
+ closeBalloonHelp(62);
+ break;
+ }
+ if (!b) {
+ closeBalloonHelp(63);
+ break;
+ }
+ if (b->type == B_DRAW) {
+ closeBalloonHelp(64);
+ break;
+ }
+ if (b->helpStr == NULL) {
+ closeBalloonHelp(65);
+ break;
+ }
+
+ if (b != balloonHelpButton) {
+ closeBalloonHelp(7);
+ }
#ifdef BALLOON_TRACE
- fprintf(logFile, "SETCURSOR state %d\n", balloonHelpState); fflush(logFile);
+ fprintf(logFile, "SETCURSOR state %d\n", balloonHelpState);
+ fflush(logFile);
#endif
- if (balloonHelpState != balloonHelpIdle) {
- break;
- }
+ if (balloonHelpState != balloonHelpIdle) {
+ break;
+ }
- balloonHelpTimer = SetTimer(mswHWnd, BALLOONHELP_TIMER,
- balloonHelpTimeOut, NULL);
+ balloonHelpTimer = SetTimer(mswHWnd, BALLOONHELP_TIMER,
+ balloonHelpTimeOut, NULL);
- if (balloonHelpTimer == (UINT_PTR)0) {
- break;
- }
+ if (balloonHelpTimer == (UINT_PTR)0) {
+ break;
+ }
- balloonHelpState = balloonHelpWait;
- balloonHelpButton = b;
- break;
+ balloonHelpState = balloonHelpWait;
+ balloonHelpButton = b;
+ break;
case WM_SYSCOMMAND:
@@ -3263,7 +3202,7 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
case 51:
count51++;
- /*return NULL;*/
+ /*return NULL;*/
case WM_PALETTECHANGED:
@@ -3421,7 +3360,7 @@ static BOOL InitApplication(HINSTANCE hinstCurrent)
wc.cbWndExtra = 4;
if (!RegisterClass(&wc)) {
- mswFail("RegisterClass(drawClass)");
+ mswFail("RegisterClass(drawClass)");
return FALSE;
}
@@ -3443,11 +3382,11 @@ int PASCAL WinMain(HINSTANCE hinstCurrent, HINSTANCE hinstPrevious,
char **argv;
int argc;
- if (!hinstPrevious) {
- if (!InitApplication(hinstCurrent)) {
- return FALSE;
- }
- }
+ if (!hinstPrevious) {
+ if (!InitApplication(hinstCurrent)) {
+ return FALSE;
+ }
+ }
mswHInst = hinstCurrent;
mTitleH = GetSystemMetrics(SM_CYCAPTION) - 1;
@@ -3456,11 +3395,12 @@ int PASCAL WinMain(HINSTANCE hinstCurrent, HINSTANCE hinstPrevious,
mResizeBorderW = GetSystemMetrics(SM_CXFRAME);
mResizeBorderH = GetSystemMetrics(SM_CYFRAME);
mMenuH = GetSystemMetrics(SM_CYMENU) + 1;
- screenWidth = GetSystemMetrics(SM_CXFULLSCREEN);
- screenHeight = GetSystemMetrics(SM_CYFULLSCREEN);
- mswLabelFont = GetStockObject(DEFAULT_GUI_FONT);
+ screenWidth = GetSystemMetrics(SM_CXSCREEN);
+ screenHeight = GetSystemMetrics(SM_CYSCREEN);
+ mswLabelFont = GetStockObject(DEFAULT_GUI_FONT);
hDc = GetDC(0);
mswScale = GetDeviceCaps(hDc, LOGPIXELSX) / 96.0;
+ hWindowIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(101));
if (mswScale < 1.0) {
mswScale = 1.0;
diff --git a/app/wlib/mswlib/mswmsg.c b/app/wlib/mswlib/mswmsg.c
index 8487e31..154d89d 100644
--- a/app/wlib/mswlib/mswmsg.c
+++ b/app/wlib/mswlib/mswmsg.c
@@ -1,6 +1,5 @@
#include <windows.h>
#include <string.h>
-#include <malloc.h>
#include <stdlib.h>
#include <commdlg.h>
#include <math.h>
@@ -22,14 +21,14 @@
#define SCALE_SMALL 0.8
struct wMessage_t {
- WOBJ_COMMON
- long flags;
- const char * message;
- };
+ WOBJ_COMMON
+ long flags;
+ const char * message;
+};
static void repaintMessage(
- HWND hWnd,
- wControl_p b )
+ HWND hWnd,
+ wControl_p b )
{
wMessage_p bm = (wMessage_p)b;
HDC hDc;
@@ -41,33 +40,29 @@ static void repaintMessage(
hDc = GetDC( hWnd );
- if ( !mswThickFont )
- hFont = SelectObject( hDc, mswLabelFont );
+ hFont = SelectObject( hDc, mswLabelFont );
- switch( wMessageSetFont( ((wMessage_p)b)->flags ))
- {
- case BM_LARGE:
- scale = SCALE_LARGE;
- break;
- case BM_SMALL:
- scale = SCALE_SMALL;
- break;
+ switch( wMessageSetFont( ((wMessage_p)b)->flags )) {
+ case BM_LARGE:
+ scale = SCALE_LARGE;
+ break;
+ case BM_SMALL:
+ scale = SCALE_SMALL;
+ break;
}
- /* is a non-standard text height required? */
- if( scale != 1.0 )
- {
+ /* is a non-standard text height required? */
+ if( scale != 1.0 ) {
/* if yes, get information about the standard font used */
GetObject( GetStockObject( DEFAULT_GUI_FONT ), sizeof( LOGFONT ), &msgFont );
/* change the height */
- msgFont.lfHeight = (long)((double)msgFont.lfHeight * scale);
+ msgFont.lfHeight = (long)((double)msgFont.lfHeight * scale);
/* create and activate the new font */
hFont = SelectObject( hDc, CreateFontIndirect( &msgFont ) );
} else {
- if ( !mswThickFont )
- hFont = SelectObject( hDc, mswLabelFont );
+ hFont = SelectObject( hDc, mswLabelFont );
}
GetTextMetrics(hDc, &textMetrics);
@@ -78,36 +73,41 @@ static void repaintMessage(
rect.left = bm->x;
SetBkColor( hDc, GetSysColor( COLOR_BTNFACE ) );
- ExtTextOut( hDc, bm->x, bm->y + ((bm->h + 2 - textMetrics.tmHeight) / 2), ETO_CLIPPED|ETO_OPAQUE, &rect, bm->message, (int)(strlen( bm->message )), NULL );
+ ExtTextOut( hDc, bm->x, bm->y + ((bm->h + 2 - textMetrics.tmHeight) / 2),
+ ETO_CLIPPED|ETO_OPAQUE, &rect, bm->message, (int)(strlen( bm->message )),
+ NULL );
if( scale != 1.0 )
/* in case we did create a new font earlier, delete it now */
+ {
DeleteObject( SelectObject( hDc, GetStockObject( DEFAULT_GUI_FONT )));
- else
- if ( !mswThickFont )
- SelectObject( hDc, hFont );
+ } else {
+ SelectObject( hDc, hFont );
+ }
ReleaseDC( hWnd, hDc );
}
void wMessageSetValue(
- wMessage_p b,
- const char * arg )
+ wMessage_p b,
+ const char * arg )
{
- if (b->message)
+ if (b->message) {
free( CAST_AWAY_CONST b->message );
- if (arg)
+ }
+ if (arg) {
b->message = mswStrdup( arg );
- else
+ } else {
b->message = NULL;
+ }
repaintMessage( ((wControl_p)(b->parent))->hWnd, (wControl_p)b );
}
void wMessageSetWidth(
- wMessage_p b,
- wWinPix_t width )
+ wMessage_p b,
+ wWinPix_t width )
{
b->w = width;
@@ -122,41 +122,44 @@ wWinPix_t wMessageGetHeight( long flags )
{
double scale = 1.0;
- if( flags & BM_LARGE )
+ if( flags & BM_LARGE ) {
scale = SCALE_LARGE;
- if( flags & BM_SMALL )
+ }
+ if( flags & BM_SMALL ) {
scale = SCALE_SMALL;
+ }
return((wWinPix_t)((mswEditHeight) * scale ));
}
static void mswMessageSetBusy(
- wControl_p b,
- BOOL_T busy )
+ wControl_p b,
+ BOOL_T busy )
{
}
static callBacks_t messageCallBacks = {
- repaintMessage,
- NULL,
- NULL,
- mswMessageSetBusy };
+ repaintMessage,
+ NULL,
+ NULL,
+ mswMessageSetBusy
+};
wMessage_p wMessageCreateEx(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- wWinPix_t width,
- const char *message,
- long flags )
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ wWinPix_t width,
+ const char *message,
+ long flags )
{
wMessage_p b;
int index;
-
+
b = (wMessage_p)mswAlloc( parent, B_MESSAGE, NULL, sizeof *b, NULL, &index );
mswComputePos( (wControl_p)b, x, y );
diff --git a/app/wlib/mswlib/mswpref.c b/app/wlib/mswlib/mswpref.c
index 55fedb4..e65b0dd 100644
--- a/app/wlib/mswlib/mswpref.c
+++ b/app/wlib/mswlib/mswpref.c
@@ -1,6 +1,5 @@
#include <windows.h>
#include <string.h>
-#include <malloc.h>
#include <stdlib.h>
#include <commdlg.h>
#include <math.h>
@@ -10,7 +9,7 @@
#include <Shlwapi.h>
#if _MSC_VER >=1400
- #define stricmp _stricmp
+#define stricmp _stricmp
#endif
char * mswStrdup( const char * );
@@ -26,40 +25,41 @@ static char appWorkDirName[MAX_PATH];
const char * wGetAppLibDir( void )
{
- char *cp;
- char module_name[MAX_PATH];
+ char *cp;
+ char module_name[MAX_PATH];
- if (appLibDirName[0] != '\0') {
- return appLibDirName;
- }
+ if (appLibDirName[0] != '\0') {
+ return appLibDirName;
+ }
- GetModuleFileName( mswHInst, module_name, sizeof module_name );
- cp = strrchr( module_name, '\\' );
- if (cp)
- *cp = '\0';
+ GetModuleFileName( mswHInst, module_name, sizeof module_name );
+ cp = strrchr( module_name, '\\' );
+ if (cp) {
+ *cp = '\0';
+ }
#ifdef XTRKCAD_CMAKE_BUILD
- strncpy(appLibDirName, module_name, sizeof(appLibDirName));
- size_t len = sizeof(appLibDirName)-strlen(appLibDirName)-1;
- strncat(appLibDirName, "\\..\\share\\xtrkcad", len);
- _fullpath( appLibDirName, appLibDirName, MAX_PATH );
- return appLibDirName;
-#endif
-
- strncpy(appLibDirName, module_name, sizeof(appLibDirName));
- appLibDirName[sizeof(appLibDirName)-1] = '\0';
- return appLibDirName;
+ strncpy(appLibDirName, module_name, sizeof(appLibDirName));
+ size_t len = sizeof(appLibDirName)-strlen(appLibDirName)-1;
+ strncat(appLibDirName, "\\..\\share\\xtrkcad", len);
+ _fullpath( appLibDirName, appLibDirName, MAX_PATH );
+ return appLibDirName;
+#endif
+
+ strncpy(appLibDirName, module_name, sizeof(appLibDirName));
+ appLibDirName[sizeof(appLibDirName)-1] = '\0';
+ return appLibDirName;
}
/**
- * Gets the working directory for the application. At least the INI file is stored here.
+ * Gets the working directory for the application. At least the INI file is stored here.
* The working directory can be specified manually by creating a file called xtrkcad0.ini
- * in the application lib dir (the directory where the .EXE is located).
+ * in the application lib dir (the directory where the .EXE is located).
*
* [workdir]
* path=somepath
- *
+ *
* when somepath is set to the keyword "installdir", the install directory for the EXE is
* used.
*
@@ -68,229 +68,302 @@ const char * wGetAppLibDir( void )
*/
const char * wGetAppWorkDir( void )
{
- char *cp;
- int rc;
- if ( appWorkDirName[0] != 0 ) {
- return appWorkDirName;
- }
- wGetAppLibDir();
- snprintf( mswTmpBuff, sizeof(mswTmpBuff), "%s\\xtrkcad0.ini", appLibDirName );
- rc = GetPrivateProfileString( "workdir", "path", "", appWorkDirName, sizeof appWorkDirName, mswTmpBuff );
- if ( rc!=0 ) {
- if ( stricmp( appWorkDirName, "installdir" ) == 0 ) {
- strncpy( appWorkDirName, appLibDirName, sizeof(appWorkDirName) );
- appWorkDirName[sizeof(appWorkDirName)-1] = '\0';
- } else {
- cp = &appWorkDirName[strlen(appWorkDirName)-1];
- while (cp>appWorkDirName && *cp == '\\') *cp-- = 0;
- }
- return appWorkDirName;
- }
-
- if (SHGetSpecialFolderPath( NULL, mswTmpBuff, CSIDL_APPDATA, 0 ) == 0 ) {
- wNoticeEx( NT_ERROR, "Cannot get user's profile directory", "Exit", NULL );
- wExit(0);
- } else {
- snprintf( appWorkDirName, sizeof(appWorkDirName), "%s\\%s", mswTmpBuff, "XTrackCad" );
- if( !PathIsDirectory( appWorkDirName )) {
- if( !CreateDirectory( appWorkDirName, NULL )) {
- wNoticeEx( NT_ERROR, "Cannot create user's profile directory", "Exit", NULL );
- wExit(0);
- }
- }
- }
-
- return appWorkDirName;
+ char *cp;
+ int rc;
+ if ( appWorkDirName[0] != 0 ) {
+ return appWorkDirName;
+ }
+ wGetAppLibDir();
+ snprintf( mswTmpBuff, sizeof(mswTmpBuff), "%s\\xtrkcad0.ini", appLibDirName );
+ rc = GetPrivateProfileString( "workdir", "path", "", appWorkDirName,
+ sizeof appWorkDirName, mswTmpBuff );
+ if ( rc!=0 ) {
+ if ( stricmp( appWorkDirName, "installdir" ) == 0 ) {
+ strncpy( appWorkDirName, appLibDirName, sizeof(appWorkDirName) );
+ appWorkDirName[sizeof(appWorkDirName)-1] = '\0';
+ } else {
+ cp = &appWorkDirName[strlen(appWorkDirName)-1];
+ while (cp>appWorkDirName && *cp == '\\') {
+ *cp-- = 0;
+ }
+ }
+ return appWorkDirName;
+ }
+
+ if (SHGetSpecialFolderPath( NULL, mswTmpBuff, CSIDL_APPDATA, 0 ) == 0 ) {
+ wNoticeEx( NT_ERROR, "Cannot get user's profile directory", "Exit", NULL );
+ wExit(0);
+ } else {
+ snprintf( appWorkDirName, sizeof(appWorkDirName), "%s\\%s", mswTmpBuff,
+ "XTrackCad" );
+ if( !PathIsDirectory( appWorkDirName )) {
+ if( !CreateDirectory( appWorkDirName, NULL )) {
+ wNoticeEx( NT_ERROR, "Cannot create user's profile directory", "Exit", NULL );
+ wExit(0);
+ }
+ }
+ }
+
+ return appWorkDirName;
}
-/** Get the user's home directory. The environment variable HOME is
- * assumed to contain the proper directory.
+/** Get the user's Documents directory.
*
- * \return pointer to the user's home directory
+ * \return pointer to the user's Documents directory
*/
const char *wGetUserHomeDir( void )
{
- if (SHGetSpecialFolderPath( NULL, mswTmpBuff, CSIDL_PERSONAL, 0 ) == 0 ) {
- wNoticeEx( NT_ERROR, "Cannot get user's home directory", "Exit", NULL );
- wExit(0);
- return( NULL );
- } else {
- return( mswTmpBuff );
- }
+ if (SHGetSpecialFolderPath( NULL, mswTmpBuff, CSIDL_PERSONAL, 0 ) == 0 ) {
+ wNoticeEx( NT_ERROR, "Cannot get user's documents directory", "Exit", NULL );
+ wExit(0);
+ return( NULL );
+ } else {
+ return( mswTmpBuff );
+ }
}
typedef struct {
- char * section;
- char * name;
- BOOL_T present;
- BOOL_T dirty;
- char * val;
- } prefs_t;
+ char * section;
+ char * name;
+ BOOL_T present;
+ BOOL_T dirty;
+ char * val;
+} prefs_t;
static dynArr_t prefs_da;
#define prefs(N) DYNARR_N(prefs_t,prefs_da,N)
-void wPrefSetString( const char * section, const char * name, const char * sval )
+void wPrefSetString( const char * section, const char * name,
+ const char * sval )
{
- prefs_t * p;
-
- for (p=&prefs(0); p<&prefs(prefs_da.cnt); p++) {
- if ( strcmp( p->section, section ) == 0 && strcmp( p->name, name ) == 0 ) {
- if (p->val)
- free(p->val);
- p->dirty = TRUE;
- p->val = mswStrdup( sval );
- return;
- }
- }
- DYNARR_APPEND( prefs_t, prefs_da, 10 );
- p = &prefs(prefs_da.cnt-1);
- p->name = mswStrdup(name);
- p->section = mswStrdup(section);
- p->dirty = TRUE;
- p->val = mswStrdup(sval);
+ prefs_t * p;
+
+ for (p=&prefs(0); p<&prefs(prefs_da.cnt); p++) {
+ if ( strcmp( p->section, section ) == 0 && strcmp( p->name, name ) == 0 ) {
+ if (p->val) {
+ free(p->val);
+ }
+ p->dirty = TRUE;
+ p->val = mswStrdup( sval );
+ return;
+ }
+ }
+ DYNARR_APPEND( prefs_t, prefs_da, 10 );
+ p = &prefs(prefs_da.cnt-1);
+ p->name = mswStrdup(name);
+ p->section = mswStrdup(section);
+ p->dirty = TRUE;
+ p->val = mswStrdup(sval);
}
-void wPrefsLoad(char * name) {
- prefs_t *p;
- for (int i= 0; i<prefs_da.cnt; i++) {
- p = &prefs(i);
- if (!name || !name[0]) name = mswProfileFile;
- int rc = GetPrivateProfileString( p->section, p->name, "", mswTmpBuff, sizeof mswTmpBuff, name );
- if (rc==0)
- continue;
- p->val = mswStrdup(mswTmpBuff);
- }
+void wPrefsLoad(char * name)
+{
+ prefs_t *p;
+ for (int i= 0; i<prefs_da.cnt; i++) {
+ p = &prefs(i);
+ if (!name || !name[0]) {
+ name = mswProfileFile;
+ }
+ int rc = GetPrivateProfileString( p->section, p->name, "", mswTmpBuff,
+ sizeof mswTmpBuff, name );
+ if (rc==0) {
+ continue;
+ }
+ p->val = mswStrdup(mswTmpBuff);
+ }
}
char * wPrefGetStringBasic( const char * section, const char * name )
{
- prefs_t * p;
- int rc;
-
- for (p=&prefs(0); p<&prefs(prefs_da.cnt); p++) {
- if ( strcmp( p->section, section ) == 0 && strcmp( p->name, name ) == 0 ) {
- return p->val;
- }
- }
-
- rc = GetPrivateProfileString( section, name, "", mswTmpBuff, sizeof mswTmpBuff, mswProfileFile );
- if (rc==0)
- return NULL;
- DYNARR_APPEND( prefs_t, prefs_da, 10 );
- p = &prefs(prefs_da.cnt-1);
- p->name = mswStrdup(name);
- p->section = mswStrdup(section);
- p->dirty = FALSE;
- p->val = mswStrdup(mswTmpBuff);
- return p->val;
+ prefs_t * p;
+ int rc;
+
+ for (p=&prefs(0); p<&prefs(prefs_da.cnt); p++) {
+ if ( strcmp( p->section, section ) == 0 && strcmp( p->name, name ) == 0 ) {
+ return p->val;
+ }
+ }
+
+ rc = GetPrivateProfileString( section, name, "", mswTmpBuff, sizeof mswTmpBuff,
+ mswProfileFile );
+ if (rc==0) {
+ return NULL;
+ }
+ DYNARR_APPEND( prefs_t, prefs_da, 10 );
+ p = &prefs(prefs_da.cnt-1);
+ p->name = mswStrdup(name);
+ p->section = mswStrdup(section);
+ p->dirty = FALSE;
+ p->val = mswStrdup(mswTmpBuff);
+ return p->val;
}
void wPrefSetInteger( const char * section, const char * name, long lval )
{
- char tmp[20];
-
- snprintf( tmp, sizeof(tmp), "%ld", lval );
- wPrefSetString( section, name, tmp );
+ char tmp[20];
+
+ snprintf( tmp, sizeof(tmp), "%ld", lval );
+ wPrefSetString( section, name, tmp );
}
wBool_t wPrefGetIntegerBasic(
- const char * section,
- const char * name,
- long *res,
- long def )
+ const char * section,
+ const char * name,
+ long *res,
+ long def )
{
- const char * cp;
- char * cp1;
-
- cp = wPrefGetStringBasic( section, name );
- if (cp == NULL) {
- *res = def;
- return FALSE;
- }
- *res = strtol(cp,&cp1,0);
- if (cp==cp1) {
- *res = def;
- return FALSE;
- }
- return TRUE;
+ const char * cp;
+ char * cp1;
+
+ cp = wPrefGetStringBasic( section, name );
+ if (cp == NULL) {
+ *res = def;
+ return FALSE;
+ }
+ *res = strtol(cp,&cp1,0);
+ if (cp==cp1) {
+ *res = def;
+ return FALSE;
+ }
+ return TRUE;
}
void wPrefSetFloat(
- const char * section, /* Section */
- const char * name, /* Name */
- double lval ) /* Value */
+ const char * section, /* Section */
+ const char * name, /* Name */
+ double lval ) /* Value */
/*
*/
{
- char tmp[20];
+ char tmp[20];
- snprintf(tmp, sizeof(tmp), "%0.6f", lval );
- wPrefSetString( section, name, tmp );
+ snprintf(tmp, sizeof(tmp), "%0.6f", lval );
+ wPrefSetString( section, name, tmp );
}
wBool_t wPrefGetFloatBasic(
- const char * section, /* Section */
- const char * name, /* Name */
- double * res, /* Address of result */
- double def ) /* Default value */
+ const char * section, /* Section */
+ const char * name, /* Name */
+ double * res, /* Address of result */
+ double def ) /* Default value */
/*
*/
{
- const char * cp;
- char * cp1;
-
- cp = wPrefGetStringBasic( section, name );
- if (cp == NULL) {
- *res = def;
- return FALSE;
- }
- *res = strtod(cp, &cp1);
- if (cp == cp1) {
- *res = def;
- return FALSE;
- }
- return TRUE;
+ const char * cp;
+ char * cp1;
+
+ cp = wPrefGetStringBasic( section, name );
+ if (cp == NULL) {
+ *res = def;
+ return FALSE;
+ }
+ *res = strtod(cp, &cp1);
+ if (cp == cp1) {
+ *res = def;
+ return FALSE;
+ }
+ return TRUE;
}
void wPrefFlush( char * name )
{
- prefs_t * p;
-
- for (p=&prefs(0); p<&prefs(prefs_da.cnt); p++) {
- if (name && name[0])
- WritePrivateProfileString( p->section, p->name, p->val, name );
- else if (p->dirty)
- WritePrivateProfileString( p->section, p->name, p->val, mswProfileFile );
- }
- if (name && name[0])
- WritePrivateProfileString( NULL, NULL, NULL, name );
- else
- WritePrivateProfileString( NULL, NULL, NULL, mswProfileFile );
+ prefs_t * p;
+
+ for (p=&prefs(0); p<&prefs(prefs_da.cnt); p++) {
+ if (name && name[0]) {
+ WritePrivateProfileString( p->section, p->name, p->val, name );
+ } else if (p->dirty) {
+ WritePrivateProfileString( p->section, p->name, p->val, mswProfileFile );
+ }
+ }
+ if (name && name[0]) {
+ WritePrivateProfileString( NULL, NULL, NULL, name );
+ } else {
+ WritePrivateProfileString( NULL, NULL, NULL, mswProfileFile );
+ }
}
void wPrefReset(
- void )
+ void )
/*
*/
{
- prefs_t * p;
-
- for (p=&prefs(0); p<&prefs(prefs_da.cnt); p++) {
- if (p->section)
- free( p->section );
- if (p->name)
- free( p->name );
- if (p->val)
- free( p->val );
- }
- prefs_da.cnt = 0;
+ prefs_t * p;
+
+ for (p=&prefs(0); p<&prefs(prefs_da.cnt); p++) {
+ if (p->section) {
+ free( p->section );
+ }
+ if (p->name) {
+ free( p->name );
+ }
+ if (p->val) {
+ free( p->val );
+ }
+ }
+ prefs_da.cnt = 0;
+}
+
+/**
+ * Split a line from the config file ie. an ini-file into separate tokens. The
+ * line is split into sections, name of value and value following. Pointers
+ * to the respective token are returned. These are zero-terminated.
+ * If a token is not present, NULL is returned instead.
+ * The input line is modified.
+ *
+ * \param line input line, modified during excution of function
+ * \param section section if present
+ * \param name name of config value if present
+ * \param value name of value if present
+ */
+
+void
+wPrefTokenize(char* line, char** section, char** name, char** value)
+{
+ *section = NULL;
+ *name = NULL;
+ *value = NULL;
+
+ if (*line == '[') {
+ *section = strtok(line, "[]");
+ } else {
+ *name = strtok(line, "=");
+ *value = strtok(NULL, "\n");
+ }
+}
+
+/**
+ * A valid line for a config file is created from the individual elements.
+ * Values not need for specific statement are ignored. Eg. when section is
+ * present, name and value are not used.
+ * The caller has to make sure, that the return buffer is large enough.
+ *
+ * \param section section, returned inside squared brackets
+ * \param name name, left side of '='
+ * \param value value, right side of '='
+ * \param result pointer to buffer for formated line.
+ */
+
+void
+wPrefFormatLine(const char* section, const char* name,
+ const char* value, char* result)
+{
+ if (!value || *value == '\0') {
+ value = "";
+ }
+
+ if (section) {
+ sprintf(result, "[%s]", section);
+ }
+ else {
+ sprintf(result, "%s=%s", name, value);
+ }
}
diff --git a/app/wlib/mswlib/mswprint.c b/app/wlib/mswlib/mswprint.c
index e38ca05..9a7f65b 100644
--- a/app/wlib/mswlib/mswprint.c
+++ b/app/wlib/mswlib/mswprint.c
@@ -1,6 +1,5 @@
#include <windows.h>
#include <string.h>
-#include <malloc.h>
#include <stdlib.h>
#include <commdlg.h>
#include <math.h>
@@ -42,11 +41,11 @@ void getPageDim( HDC hDc )
int res_w, res_h, size_w, size_h;
rc = Escape( hDc, GETPHYSPAGESIZE, 0, NULL, (LPPOINT)&dims );
if (rc <0) {
- mswFail( "GETPHYPAGESIZE" );
+ mswFail( "GETPHYPAGESIZE" );
}
rc = Escape( hDc, GETPRINTINGOFFSET, 0, NULL, (LPPOINT)&offs );
if (rc <0) {
- mswFail( "GETPRINTINGOFFSET" );
+ mswFail( "GETPRINTINGOFFSET" );
}
print_d.wFactor = (double)GetDeviceCaps( hDc, LOGPIXELSX );
print_d.hFactor = (double)GetDeviceCaps( hDc, LOGPIXELSY );
@@ -115,17 +114,18 @@ static wBool_t printInit( void )
while (*temp) {
if (*temp == ',') {
*temp++ = 0;
- while( *temp == ' ' )
+ while( *temp == ' ' ) {
temp++;
- if (!ptrDrvr)
+ }
+ if (!ptrDrvr) {
ptrDrvr = temp;
- else {
+ } else {
ptrPort = temp;
break;
}
- }
- else
+ } else {
temp = AnsiNext(temp);
+ }
}
strcpy( ptrDrvrDvr, ptrDrvr );
strcat( ptrDrvrDvr, ".drv" );
@@ -134,9 +134,11 @@ static wBool_t printInit( void )
return FALSE;
}
if (( extDeviceMode = GetProcAddress( hDriver, "ExtDeviceMode" )) != NULL) {
- size = extDeviceMode( mswHWnd, (HANDLE)hDriver, (LPDEVMODE)NULL, (LPSTR)ptrDevice, (LPSTR)ptrPort, (LPDEVMODE)NULL, (LPSTR)NULL, 0 );
+ size = extDeviceMode( mswHWnd, (HANDLE)hDriver, (LPDEVMODE)NULL,
+ (LPSTR)ptrDevice, (LPSTR)ptrPort, (LPDEVMODE)NULL, (LPSTR)NULL, 0 );
printMode = (DEVMODE*)malloc( size );
- rc = extDeviceMode( mswHWnd, (HANDLE)hDriver, (LPDEVMODE)printMode, (LPSTR)ptrDevice, (LPSTR)ptrPort, (LPDEVMODE)NULL, (LPSTR)NULL, DM_OUT_BUFFER );
+ rc = extDeviceMode( mswHWnd, (HANDLE)hDriver, (LPDEVMODE)printMode,
+ (LPSTR)ptrDevice, (LPSTR)ptrPort, (LPDEVMODE)NULL, (LPSTR)NULL, DM_OUT_BUFFER );
#ifdef LATER
if (rc != IDOK && rc != IDCANCEL) {
mswFail( "printInit: extDeviceMode" );
@@ -160,7 +162,7 @@ static wBool_t printInit( void )
}
getPageDim( hDc );
DeleteDC( hDc );
-
+
FreeLibrary( hDriver );
#endif
printerOk = TRUE;
@@ -201,9 +203,9 @@ const char* wPrintGetName()
DEVNAMES* pDevNames = GlobalLock(hDevNames);
if (pDevNames == NULL) {
strcpy(sPrinterName, "Printer");
- }
- else {
- strncpy(sPrinterName, (char*)pDevNames + pDevNames->wDeviceOffset, sizeof sPrinterName - 1);
+ } else {
+ strncpy(sPrinterName, (char*)pDevNames + pDevNames->wDeviceOffset,
+ sizeof sPrinterName - 1);
sPrinterName[sizeof sPrinterName - 1] = '\0';
}
GlobalUnlock( hDevNames );
@@ -211,15 +213,15 @@ const char* wPrintGetName()
}
void wPrintGetMargins(
- double * tMargin,
- double * rMargin,
- double * bMargin,
- double * lMargin )
+ double * tMargin,
+ double * rMargin,
+ double * bMargin,
+ double * lMargin )
{
- if ( tMargin ) *tMargin = tBorder;
- if ( rMargin ) *rMargin = rBorder;
- if ( bMargin ) *bMargin = bBorder;
- if ( lMargin ) *lMargin = lBorder;
+ if ( tMargin ) { *tMargin = tBorder; }
+ if ( rMargin ) { *rMargin = rBorder; }
+ if ( bMargin ) { *bMargin = bBorder; }
+ if ( lMargin ) { *lMargin = lBorder; }
}
@@ -240,10 +242,11 @@ HDC mswGetPrinterDC( void )
printDlg.lStructSize = sizeof printDlg;
printDlg.hwndOwner = NULL;
printDlg.Flags = PD_RETURNDC|PD_NOPAGENUMS|PD_NOSELECTION;
- if (PrintDlg(&printDlg) != 0)
+ if (PrintDlg(&printDlg) != 0) {
return printDlg.hDC;
- else
+ } else {
return (HDC)0;
+ }
}
@@ -290,51 +293,55 @@ wBool_t wPrintDocStart( const char * title, int fpageCount, int * copiesP )
if (print_d.hDc == (HDC)0) {
return FALSE;
}
- printStatus = TRUE;
- docInfo.cbSize = sizeof docInfo;
- docInfo.lpszDocName = title;
- docInfo.lpszOutput = NULL;
- lpAbortDlg = MakeProcInstance( (FARPROC)mswAbortDlg, mswHInst );
- lpAbortProc = MakeProcInstance( (FARPROC)mswAbortProc, mswHInst );
- SetAbortProc( print_d.hDc, (ABORTPROC)lpAbortProc );
- if (StartDoc( print_d.hDc, &docInfo ) < 0) {
- MessageBox( mswHWnd, "Unable to start print job",
- NULL, MB_OK|MB_ICONHAND );
- FreeProcInstance( lpAbortDlg );
- FreeProcInstance( lpAbortProc );
- DeleteDC( print_d.hDc );
- return FALSE;
- }
- printAbort = FALSE;
- hAbortDlgWnd = CreateDialog( mswHInst, "MswAbortDlg", mswHWnd,
- (DLGPROC)lpAbortDlg );
- /*SetDlgItemText( hAbortDlgWnd, IDM_PRINTAPP, title );*/
- SetWindowText( hAbortDlgWnd, title );
- ShowWindow( hAbortDlgWnd, SW_NORMAL );
- UpdateWindow( hAbortDlgWnd );
- EnableWindow( mswHWnd, FALSE );
- if (copiesP)
- *copiesP = printDlg.nCopies;
- if (printDlg.nCopies>1)
- pageCount *= printDlg.nCopies;
- if ( (GetDeviceCaps( printDlg.hDC, RASTERCAPS ) & RC_PALETTE) ) {
- newPrintPalette = mswCreatePalette();
- oldPrintPalette = SelectPalette( printDlg.hDC, newPrintPalette, 0 );
- RealizePalette( printDlg.hDC );
- }
- return TRUE;
+ printStatus = TRUE;
+ docInfo.cbSize = sizeof docInfo;
+ docInfo.lpszDocName = title;
+ docInfo.lpszOutput = NULL;
+ lpAbortDlg = MakeProcInstance( (FARPROC)mswAbortDlg, mswHInst );
+ lpAbortProc = MakeProcInstance( (FARPROC)mswAbortProc, mswHInst );
+ SetAbortProc( print_d.hDc, (ABORTPROC)lpAbortProc );
+ if (StartDoc( print_d.hDc, &docInfo ) < 0) {
+ MessageBox( mswHWnd, "Unable to start print job",
+ NULL, MB_OK|MB_ICONHAND );
+ FreeProcInstance( lpAbortDlg );
+ FreeProcInstance( lpAbortProc );
+ DeleteDC( print_d.hDc );
+ return FALSE;
+ }
+ printAbort = FALSE;
+ hAbortDlgWnd = CreateDialog( mswHInst, "MswAbortDlg", mswHWnd,
+ (DLGPROC)lpAbortDlg );
+ /*SetDlgItemText( hAbortDlgWnd, IDM_PRINTAPP, title );*/
+ SetWindowText( hAbortDlgWnd, title );
+ ShowWindow( hAbortDlgWnd, SW_NORMAL );
+ UpdateWindow( hAbortDlgWnd );
+ EnableWindow( mswHWnd, FALSE );
+ if (copiesP) {
+ *copiesP = printDlg.nCopies;
+ }
+ if (printDlg.nCopies>1) {
+ pageCount *= printDlg.nCopies;
+ }
+ if ( (GetDeviceCaps( printDlg.hDC, RASTERCAPS ) & RC_PALETTE) ) {
+ newPrintPalette = mswCreatePalette();
+ oldPrintPalette = SelectPalette( printDlg.hDC, newPrintPalette, 0 );
+ RealizePalette( printDlg.hDC );
+ }
+ return TRUE;
}
wDraw_p wPrintPageStart( void )
{
char pageL[80];
- if (!printStatus)
+ if (!printStatus) {
return NULL;
+ }
pageNumber++;
- if (pageCount > 0)
+ if (pageCount > 0) {
wsprintf( pageL, "Page %d of %d", pageNumber, pageCount );
- else
+ } else {
wsprintf( pageL, "Page %d", pageNumber );
+ }
SetDlgItemText( hAbortDlgWnd, IDM_PRINTPAGE, pageL );
StartPage( printDlg.hDC );
#ifdef LATER
@@ -367,15 +374,16 @@ wBool_t wPrintQuit( void )
void wPrintDocEnd( void )
{
- if (!printStatus)
+ if (!printStatus) {
return;
+ }
EndDoc( printDlg.hDC );
if ( newPrintPalette ) {
SelectPalette( printDlg.hDC, oldPrintPalette, 0 );
DeleteObject( newPrintPalette );
newPrintPalette = (HPALETTE)0;
}
-
+
EnableWindow( mswHWnd, TRUE );
DestroyWindow( hAbortDlgWnd );
FreeProcInstance( lpAbortDlg );
@@ -394,7 +402,8 @@ wBool_t wPrintNewPrinter( const char * printer )
return TRUE;
}
-wBool_t wPrintNewMargin( const char * name, double t, double b, double l, double r )
+wBool_t wPrintNewMargin( const char * name, double t, double b, double l,
+ double r )
{
return TRUE;
}
diff --git a/app/wlib/mswlib/mswsplash.c b/app/wlib/mswlib/mswsplash.c
index bd7644f..848bd00 100644
--- a/app/wlib/mswlib/mswsplash.c
+++ b/app/wlib/mswlib/mswsplash.c
@@ -2,27 +2,26 @@
* Splash window for Windows
*/
- /* XTrkCad - Model Railroad CAD
- * Copyright (C) 2007 Martin Fischer
- *
- * 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.
- */
+/* XTrkCad - Model Railroad CAD
+* Copyright (C) 2007 Martin Fischer
+*
+* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*/
#include <windows.h>
#include <string.h>
-#include <malloc.h>
#include <stdlib.h>
#include <commdlg.h>
#include <math.h>
@@ -41,13 +40,13 @@ static HWND hSplash;
static LPWORD lpwAlign( LPWORD lpIn )
{
- ULONGLONG ul;
+ ULONGLONG ul;
- ul = (ULONGLONG) lpIn;
- ul +=3;
- ul >>=2;
- ul <<=2;
- return (LPWORD) ul;
+ ul = (ULONGLONG) lpIn;
+ ul +=3;
+ ul >>=2;
+ ul <<=2;
+ return (LPWORD) ul;
}
/**
@@ -57,7 +56,7 @@ static LPWORD lpwAlign( LPWORD lpIn )
BOOL
PaintBitmap( HWND hWnd, HBITMAP hBmp )
{
- HDC hdc, hdcMem;
+ HDC hdc, hdcMem;
RECT rect;
HGDIOBJ oldObject;
@@ -66,19 +65,19 @@ PaintBitmap( HWND hWnd, HBITMAP hBmp )
/* get device context for destination window ( the dialog control ) */
hdc = GetDC( hWnd );
GetClientRect( hWnd, &rect );
-
+
/* create a memory dc holding the bitmap */
hdcMem = CreateCompatibleDC( hdc );
oldObject = SelectObject( hdcMem, hBmp );
- /*
- show it in the upper left corner
- the window is created with the size of the bitmap, so there is no need
- for any special transformation
+ /*
+ show it in the upper left corner
+ the window is created with the size of the bitmap, so there is no need
+ for any special transformation
*/
BitBlt( hdc, rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top,
- hdcMem, 0, 0, SRCCOPY );
+ hdcMem, 0, 0, SRCCOPY );
/* release the DCs that are not needed any more */
SelectObject(hdcMem, oldObject);
@@ -89,31 +88,31 @@ PaintBitmap( HWND hWnd, HBITMAP hBmp )
}
/**
- * This is the dialog procedure for the splash window. Main activity is to
+ * This is the dialog procedure for the splash window. Main activity is to
* catch the WM_PAINT message and draw the logo bitmap into that area.
*/
-BOOL CALLBACK
+BOOL CALLBACK
SplashDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam )
{
static HWND hWndBmp;
static HBITMAP hBmp;
switch( msg ) {
- case WM_INITDIALOG:
- /* bitmap handle is passed at dialog creation */
- hBmp = (HBITMAP)lParam;
-
- hWndBmp = GetDlgItem( hDlg, IDBITMAP );
- return TRUE;
- case WM_PAINT:
- /* paint the logo bitmap */
- PaintBitmap( hWndBmp, hBmp );
- break;
- case WM_DESTROY:
- /* destroy the bitmap */
- DeleteObject( hBmp );
- break;
+ case WM_INITDIALOG:
+ /* bitmap handle is passed at dialog creation */
+ hBmp = (HBITMAP)lParam;
+
+ hWndBmp = GetDlgItem( hDlg, IDBITMAP );
+ return TRUE;
+ case WM_PAINT:
+ /* paint the logo bitmap */
+ PaintBitmap( hWndBmp, hBmp );
+ break;
+ case WM_DESTROY:
+ /* destroy the bitmap */
+ DeleteObject( hBmp );
+ break;
}
return FALSE;
}
@@ -133,7 +132,7 @@ int
wCreateSplash( char *appname, char *appver )
{
HGLOBAL hgbl;
- LPDLGTEMPLATE lpdt;
+ LPDLGTEMPLATE lpdt;
LPWORD lpw;
LPDLGITEMTEMPLATE lpdit;
int cxDlgUnit, cyDlgUnit;
@@ -149,60 +148,65 @@ wCreateSplash( char *appname, char *appver )
/* load the logo bitmap */
snprintf( logoPath, sizeof(logoPath), "%s\\logo.bmp", wGetAppLibDir());
- hBmp = LoadImage( mswHInst, logoPath, IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_LOADFROMFILE );
- if( !hBmp )
+ hBmp = LoadImage( mswHInst, logoPath, IMAGE_BITMAP, 0, 0,
+ LR_DEFAULTCOLOR | LR_LOADFROMFILE );
+ if( !hBmp ) {
return( 0 );
+ }
- /* get info about the loaded logo file */
+ /* get info about the loaded logo file */
GetObject( hBmp, sizeof(BITMAP), (LPVOID)&bmp );
/* calculate the size of dialog box */
cx = (bmp.bmWidth * 4) / cxDlgUnit; /* start with the size of the bitmap */
- cy = (bmp.bmHeight * 8) / cyDlgUnit + 20; /* 20 is enough for two lines of text and some room */
+ cy = (bmp.bmHeight * 8) / cyDlgUnit +
+ 20; /* 20 is enough for two lines of text and some room */
/* allocate memory block for dialog template */
hgbl = GlobalAlloc(GMEM_ZEROINIT, 1024);
- if (!hgbl)
+ if (!hgbl) {
return -1;
- lpdt = (LPDLGTEMPLATE)GlobalLock(hgbl);
+ }
+ lpdt = (LPDLGTEMPLATE)GlobalLock(hgbl);
- /* Define a dialog box. */
- lpdt->style = WS_POPUP | WS_BORDER | WS_VISIBLE | DS_MODALFRAME | DS_CENTER;
- lpdt->cdit = 3; // number of controls
- lpdt->x = 0; lpdt->y = 0;
- lpdt->cx = cx; lpdt->cy = cy;
+ /* Define a dialog box. */
+ lpdt->style = WS_POPUP | WS_BORDER | WS_VISIBLE | DS_MODALFRAME | DS_CENTER;
+ lpdt->cdit = 3; // number of controls
+ lpdt->x = 0; lpdt->y = 0;
+ lpdt->cx = cx; lpdt->cy = cy;
- lpw = (LPWORD) (lpdt + 1);
- *lpw++ = 0; /* no menu */
- *lpw++ = 0; /* predefined dialog box class (by default) */
- *lpw++ = 0;
+ lpw = (LPWORD) (lpdt + 1);
+ *lpw++ = 0; /* no menu */
+ *lpw++ = 0; /* predefined dialog box class (by default) */
+ *lpw++ = 0;
/* add the static control for the logo bitmap */
lpdit = (LPDLGITEMTEMPLATE)lpwAlign(lpw);
lpdit->x = 0; lpdit->y = 0;
- lpdit->cx = (SHORT)((bmp.bmWidth * 4) / cxDlgUnit);
+ lpdit->cx = (SHORT)((bmp.bmWidth * 4) / cxDlgUnit);
lpdit->cy = (SHORT)((bmp.bmHeight * 8) / cyDlgUnit);
- lpdit->id = IDBITMAP;
- lpdit->style = WS_CHILD | WS_VISIBLE | SS_LEFT;
- lpw = (LPWORD) (lpdit + 1);
- *lpw++ = 0xFFFF;
- *lpw++ = 0x0082; /* static class */
+ lpdit->id = IDBITMAP;
+ lpdit->style = WS_CHILD | WS_VISIBLE | SS_LEFT;
+ lpw = (LPWORD) (lpdit + 1);
+ *lpw++ = 0xFFFF;
+ *lpw++ = 0x0082; /* static class */
- lpw += 1+MultiByteToWideChar (CP_ACP, 0, "Logo should be here...", -1, (LPWSTR)lpw, 50);
+ lpw += 1+MultiByteToWideChar (CP_ACP, 0, "Logo should be here...", -1,
+ (LPWSTR)lpw, 50);
/* add the static control for the program title */
lpdit = (LPDLGITEMTEMPLATE)lpwAlign(lpw);
lpdit->x = 2; lpdit->y = (short)( 1 + (bmp.bmHeight * 8) / cyDlgUnit );
- lpdit->cx = cx - 2; lpdit->cy = cyDlgUnit;
- lpdit->id = IDAPPNAME;
- lpdit->style = WS_CHILD | WS_VISIBLE | SS_CENTER;
- lpw = (LPWORD) (lpdit + 1);
- *lpw++ = 0xFFFF;
- *lpw++ = 0x0082; /* static class */
-
- /* create the title string */
+ lpdit->cx = cx - 2; lpdit->cy = cyDlgUnit;
+ lpdit->id = IDAPPNAME;
+ lpdit->style = WS_CHILD | WS_VISIBLE | SS_CENTER;
+ lpw = (LPWORD) (lpdit + 1);
+ *lpw++ = 0xFFFF;
+ *lpw++ = 0x0082; /* static class */
+
+ /* create the title string */
pszBuf = malloc( strlen( appname ) + strlen( appver ) + 2 );
if (!pszBuf) {
GlobalUnlock(hgbl);
@@ -216,26 +220,27 @@ wCreateSplash( char *appname, char *appver )
/* add the static control for the loading message */
lpdit = (LPDLGITEMTEMPLATE)lpwAlign(lpw);
lpdit->x = 2; lpdit->y = (short)(bmp.bmHeight * 8) / cyDlgUnit + 10;
- lpdit->cx = cx - 2; lpdit->cy = cyDlgUnit;
- lpdit->id = IDMESSAGE;
- lpdit->style = WS_CHILD | WS_VISIBLE | SS_LEFT;
- lpw = (LPWORD) (lpdit + 1);
- *lpw++ = 0xFFFF;
- *lpw++ = 0x0082; /* static class */
+ lpdit->cx = cx - 2; lpdit->cy = cyDlgUnit;
+ lpdit->id = IDMESSAGE;
+ lpdit->style = WS_CHILD | WS_VISIBLE | SS_LEFT;
+ lpw = (LPWORD) (lpdit + 1);
+ *lpw++ = 0xFFFF;
+ *lpw++ = 0x0082; /* static class */
- lpw += 1+MultiByteToWideChar (CP_ACP, 0, "Starting Application...", -1, (LPWSTR)lpw, 50);
+ lpw += 1+MultiByteToWideChar (CP_ACP, 0, "Starting Application...", -1,
+ (LPWSTR)lpw, 50);
/* create the dialog */
- GlobalUnlock(hgbl);
- hSplash = CreateDialogIndirectParam( mswHInst, (LPDLGTEMPLATE) hgbl,
- mswHWnd, (DLGPROC)SplashDlgProc, (LPARAM)hBmp );
-
+ GlobalUnlock(hgbl);
+ hSplash = CreateDialogIndirectParam( mswHInst, (LPDLGTEMPLATE) hgbl,
+ mswHWnd, (DLGPROC)SplashDlgProc, (LPARAM)hBmp );
+
/* free allocated memory */
- GlobalFree(hgbl);
+ GlobalFree(hgbl);
free( pszBuf );
/* that's it */
- return 1;
+ return 1;
}
@@ -243,9 +248,9 @@ wCreateSplash( char *appname, char *appver )
* Update the progress message inside the splash window
* msg text message to display
* return nonzero if ok
- */
+ */
-int
+int
wSetSplashInfo( char *msg )
{
if( msg ) {
diff --git a/app/wlib/mswlib/mswstatus.c b/app/wlib/mswlib/mswstatus.c
index 1502a4e..7473ec8 100644
--- a/app/wlib/mswlib/mswstatus.c
+++ b/app/wlib/mswlib/mswstatus.c
@@ -39,10 +39,10 @@
*/
void wStatusSetValue(
- wStatus_p b,
- const char * arg)
+ wStatus_p b,
+ const char * arg)
{
- wMessageSetValue((wMessage_p)b, arg);
+ wMessageSetValue((wMessage_p)b, arg);
}
/**
* Create a window for a simple text.
@@ -58,14 +58,14 @@ void wStatusSetValue(
*/
wStatus_p wStatusCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * labelStr,
- wWinPix_t width,
- const char *message)
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * labelStr,
+ wWinPix_t width,
+ const char *message)
{
- return (wStatus_p)wMessageCreateEx(parent, x, y, labelStr, width, message, 0);
+ return (wStatus_p)wMessageCreateEx(parent, x, y, labelStr, width, message, 0);
}
/**
@@ -78,7 +78,7 @@ wStatus_p wStatusCreate(
wWinPix_t
wStatusGetWidth(const char *testString)
{
- return (wMessageGetWidth(testString));
+ return (wMessageGetWidth(testString));
}
/**
@@ -89,9 +89,9 @@ wStatusGetWidth(const char *testString)
*/
wWinPix_t wStatusGetHeight(
- long flags)
+ long flags)
{
- return (wMessageGetHeight(flags));
+ return (wMessageGetHeight(flags));
}
/**
@@ -103,8 +103,8 @@ wWinPix_t wStatusGetHeight(
*/
void wStatusSetWidth(
- wStatus_p b,
- wWinPix_t width)
+ wStatus_p b,
+ wWinPix_t width)
{
- wMessageSetWidth((wMessage_p)b, width);
+ wMessageSetWidth((wMessage_p)b, width);
}
diff --git a/app/wlib/mswlib/mswtext.c b/app/wlib/mswlib/mswtext.c
index b43a5d4..93c97b8 100644
--- a/app/wlib/mswlib/mswtext.c
+++ b/app/wlib/mswlib/mswtext.c
@@ -17,12 +17,11 @@
*
* 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 <windows.h>
#include <string.h>
-#include <malloc.h>
#include <stdlib.h>
#include <commdlg.h>
#include <math.h>
@@ -38,38 +37,38 @@
*/
static LOGFONT fixedFont = {
- /* Initial default values */
- -18, 0, /* H, W */
- 0, /* A */
- 0,
- FW_REGULAR,
- 0, 0, 0,/* I, U, SO */
- ANSI_CHARSET,
- 0, /* OP */
- 0, /* CP */
- 0, /* Q */
- FIXED_PITCH|FF_MODERN, /* P&F */
- "Courier"
-};
+ /* Initial default values */
+ -18, 0, /* H, W */
+ 0, /* A */
+ 0,
+ FW_REGULAR,
+ 0, 0, 0,/* I, U, SO */
+ ANSI_CHARSET,
+ 0, /* OP */
+ 0, /* CP */
+ 0, /* Q */
+ FIXED_PITCH|FF_MODERN, /* P&F */
+ "Courier"
+ };
static HFONT fixedTextFont, prevTextFont;
struct wText_t {
- WOBJ_COMMON
- HANDLE hText;
+ WOBJ_COMMON
+ HANDLE hText;
};
void wTextClear(
- wText_p b)
+ wText_p b)
{
- LRESULT rc;
- rc = SendMessage(b->hWnd, EM_SETREADONLY, (WPARAM)0, (LPARAM)0);
- rc = SendMessage(b->hWnd, EM_SETSEL, (WPARAM)0, (LPARAM)-1);
- rc = SendMessage(b->hWnd, WM_CLEAR, (WPARAM)0, (LPARAM)0);
-
- if (b->option&BO_READONLY) {
- rc = SendMessage(b->hWnd, EM_SETREADONLY, (WPARAM)1, (LPARAM)0);
- }
+ LRESULT rc;
+ rc = SendMessage(b->hWnd, EM_SETREADONLY, (WPARAM)0, (LPARAM)0);
+ rc = SendMessage(b->hWnd, EM_SETSEL, (WPARAM)0, (LPARAM)-1);
+ rc = SendMessage(b->hWnd, WM_CLEAR, (WPARAM)0, (LPARAM)0);
+
+ if (b->option&BO_READONLY) {
+ rc = SendMessage(b->hWnd, EM_SETREADONLY, (WPARAM)1, (LPARAM)0);
+ }
}
/**
@@ -84,53 +83,53 @@ void wTextClear(
*/
void wTextAppend(
- wText_p b,
- const char * text)
+ wText_p b,
+ const char * text)
{
- char *cp;
- char *buffer;
- char *extText;
- int textSize;
- size_t len = strlen(text);
-
- if (!len) {
- return;
- }
-
- for (cp = (char *)text; *cp; cp++) {
- if (*cp == '\n') {
- len++;
- }
- }
-
- extText = malloc(len + 1 + 10);
-
- for (cp=extText; *text; cp++,text++) {
- if (*text == '\n') {
- *cp++ = '\r';
- *cp = '\n';
- } else {
- *cp = *text;
- }
- }
-
- *cp = '\0';
- textSize = GetWindowTextLength(b->hWnd);
- buffer = malloc((textSize + len + 1) * sizeof(char));
-
- if (buffer) {
- GetWindowText(b->hWnd, buffer, textSize + 1);
- strcat(buffer, extText);
- SetWindowText(b->hWnd, buffer);
- free(extText);
- free(buffer);
- } else {
- abort();
- }
-
- if (b->option&BO_READONLY) {
- SendMessage(b->hWnd, EM_SETREADONLY, (WPARAM)1, (LPARAM)0);
- }
+ char *cp;
+ char *buffer;
+ char *extText;
+ int textSize;
+ size_t len = strlen(text);
+
+ if (!len) {
+ return;
+ }
+
+ for (cp = (char *)text; *cp; cp++) {
+ if (*cp == '\n') {
+ len++;
+ }
+ }
+
+ extText = malloc(len + 1 + 10);
+
+ for (cp=extText; *text; cp++,text++) {
+ if (*text == '\n') {
+ *cp++ = '\r';
+ *cp = '\n';
+ } else {
+ *cp = *text;
+ }
+ }
+
+ *cp = '\0';
+ textSize = GetWindowTextLength(b->hWnd);
+ buffer = malloc((textSize + len + 1) * sizeof(char));
+
+ if (buffer) {
+ GetWindowText(b->hWnd, buffer, textSize + 1);
+ strcat(buffer, extText);
+ SetWindowText(b->hWnd, buffer);
+ free(extText);
+ free(buffer);
+ } else {
+ abort();
+ }
+
+ if (b->option&BO_READONLY) {
+ SendMessage(b->hWnd, EM_SETREADONLY, (WPARAM)1, (LPARAM)0);
+ }
// scroll to bottom of text box
SendMessage(b->hWnd, EM_LINESCROLL, (WPARAM)0, (LPARAM)10000);
@@ -138,146 +137,146 @@ void wTextAppend(
BOOL_T wTextSave(
- wText_p b,
- const char * fileName)
+ wText_p b,
+ const char * fileName)
{
- FILE * f;
- int lc, l, len;
- char line[255];
- f = wFileOpen(fileName, "w");
-
- if (f == NULL) {
- MessageBox(((wControl_p)(b->parent))->hWnd, "TextSave", "", MB_OK|MB_ICONHAND);
- return FALSE;
- }
-
- lc = (int)SendMessage(b->hWnd, EM_GETLINECOUNT, (WPARAM)0, (LPARAM)0);
-
- for (l=0; l<lc; l++) {
- *(WORD*)line = sizeof(line)-1;
- len = (int)SendMessage(b->hWnd, EM_GETLINE, (WPARAM)l, (LPARAM)line);
- line[len] = '\0';
- fprintf(f, "%s\n", line);
- }
-
- fclose(f);
- return TRUE;
+ FILE * f;
+ int lc, l, len;
+ char line[255];
+ f = wFileOpen(fileName, "w");
+
+ if (f == NULL) {
+ MessageBox(((wControl_p)(b->parent))->hWnd, "TextSave", "", MB_OK|MB_ICONHAND);
+ return FALSE;
+ }
+
+ lc = (int)SendMessage(b->hWnd, EM_GETLINECOUNT, (WPARAM)0, (LPARAM)0);
+
+ for (l=0; l<lc; l++) {
+ *(WORD*)line = sizeof(line)-1;
+ len = (int)SendMessage(b->hWnd, EM_GETLINE, (WPARAM)l, (LPARAM)line);
+ line[len] = '\0';
+ fprintf(f, "%s\n", line);
+ }
+
+ fclose(f);
+ return TRUE;
}
BOOL_T wTextPrint(
- wText_p b)
+ wText_p b)
{
- int lc, l, len;
- char line[255];
- HDC hDc;
- int lineSpace;
- int linesPerPage;
- int currentLine;
- int IOStatus;
- TEXTMETRIC textMetric;
- DOCINFO docInfo;
- hDc = mswGetPrinterDC();
+ int lc, l, len;
+ char line[255];
+ HDC hDc;
+ int lineSpace;
+ int linesPerPage;
+ int currentLine;
+ int IOStatus;
+ TEXTMETRIC textMetric;
+ DOCINFO docInfo;
+ hDc = mswGetPrinterDC();
HFONT hFont, hOldFont;
- if (hDc == (HDC)0) {
- MessageBox(((wControl_p)(b->parent))->hWnd, "Print", "Cannot print",
- MB_OK|MB_ICONHAND);
- return FALSE;
- }
+ if (hDc == (HDC)0) {
+ MessageBox(((wControl_p)(b->parent))->hWnd, "Print", "Cannot print",
+ MB_OK|MB_ICONHAND);
+ return FALSE;
+ }
- docInfo.cbSize = sizeof(DOCINFO);
- docInfo.lpszDocName = "XTrkcad Log";
- docInfo.lpszOutput = (LPSTR)NULL;
+ docInfo.cbSize = sizeof(DOCINFO);
+ docInfo.lpszDocName = "XTrkcad Log";
+ docInfo.lpszOutput = (LPSTR)NULL;
- // Retrieve a handle to the monospaced stock font.
+ // Retrieve a handle to the monospaced stock font.
hFont = (HFONT)GetStockObject(ANSI_FIXED_FONT);
hOldFont = (HFONT)SelectObject(hDc, hFont);
- if (StartDoc(hDc, &docInfo) < 0) {
- MessageBox(((wControl_p)(b->parent))->hWnd, "Unable to start print job", NULL,
- MB_OK|MB_ICONHAND);
- DeleteDC(hDc);
- return FALSE;
- }
-
- StartPage(hDc);
-
- GetTextMetrics(hDc, &textMetric);
- lineSpace = textMetric.tmHeight + textMetric.tmExternalLeading;
- linesPerPage = GetDeviceCaps(hDc, VERTRES) / lineSpace;
- currentLine = 1;
- lc = (int)SendMessage(b->hWnd, EM_GETLINECOUNT, (WPARAM)0, (LPARAM)0);
- IOStatus = 0;
-
- for (l=0; l<lc; l++) {
- *(WORD*)line = sizeof(line)-1;
- len = (int)SendMessage(b->hWnd, EM_GETLINE, (WPARAM)l, (LPARAM)line);
- TextOut(hDc, 0, currentLine*lineSpace, line, len);
-
- if (++currentLine > linesPerPage) {
- IOStatus = EndPage(hDc);
- if (IOStatus < 0 ) {
- break;
- }
- StartPage(hDc);
+ if (StartDoc(hDc, &docInfo) < 0) {
+ MessageBox(((wControl_p)(b->parent))->hWnd, "Unable to start print job", NULL,
+ MB_OK|MB_ICONHAND);
+ DeleteDC(hDc);
+ return FALSE;
+ }
+
+ StartPage(hDc);
+
+ GetTextMetrics(hDc, &textMetric);
+ lineSpace = textMetric.tmHeight + textMetric.tmExternalLeading;
+ linesPerPage = GetDeviceCaps(hDc, VERTRES) / lineSpace;
+ currentLine = 1;
+ lc = (int)SendMessage(b->hWnd, EM_GETLINECOUNT, (WPARAM)0, (LPARAM)0);
+ IOStatus = 0;
+
+ for (l=0; l<lc; l++) {
+ *(WORD*)line = sizeof(line)-1;
+ len = (int)SendMessage(b->hWnd, EM_GETLINE, (WPARAM)l, (LPARAM)line);
+ TextOut(hDc, 0, currentLine*lineSpace, line, len);
+
+ if (++currentLine > linesPerPage) {
+ IOStatus = EndPage(hDc);
+ if (IOStatus < 0 ) {
+ break;
+ }
+ StartPage(hDc);
currentLine = 1;
}
- }
+ }
- if (IOStatus >= 0 ) {
- EndPage(hDc);
- EndDoc(hDc);
- }
+ if (IOStatus >= 0 ) {
+ EndPage(hDc);
+ EndDoc(hDc);
+ }
SelectObject(hDc, hOldFont);
- DeleteDC(hDc);
- return TRUE;
+ DeleteDC(hDc);
+ return TRUE;
}
wBool_t wTextGetModified(
- wText_p b)
+ wText_p b)
{
- int rc;
- rc = (int)SendMessage(b->hWnd, EM_GETMODIFY, (WPARAM)0, (LPARAM)0);
- return (wBool_t)rc;
+ int rc;
+ rc = (int)SendMessage(b->hWnd, EM_GETMODIFY, (WPARAM)0, (LPARAM)0);
+ return (wBool_t)rc;
}
/**
* Get the size of the text in the text control including terminating '\0'. Note that
* the text actually might be shorter if the text includes CRs.
- *
+ *
* \param b IN text control
* \return required buffer size
*/
int wTextGetSize(
- wText_p b)
+ wText_p b)
{
int len;
len = GetWindowTextLength(b->hWnd);
- return len + 1;
+ return len + 1;
}
-/**
+/**
* Get the text from a textentry. The buffer must be large enough for the text and
* the terminating \0.
* In case the string contains carriage returns these are removed. The returned string
- * will be shortened accordingly.
+ * will be shortened accordingly.
* To get the complete contents the buffer size must be equal or greater then the return
* value of wTextGetSize()
- *
+ *
* \param b IN text entry
* \param t IN/OUT buffer for text
- * \param s IN size of buffer
+ * \param s IN size of buffer
*/
-
+
void wTextGetText(
- wText_p b,
- char * t,
- int s)
+ wText_p b,
+ char * t,
+ int s)
{
char *buffer = malloc(s);
char *ptr = buffer;
@@ -296,153 +295,154 @@ void wTextGetText(
void wTextSetReadonly(
- wText_p b,
- wBool_t ro)
+ wText_p b,
+ wBool_t ro)
{
- if (ro) {
- b->option |= BO_READONLY;
- } else {
- b->option &= ~BO_READONLY;
- }
+ if (ro) {
+ b->option |= BO_READONLY;
+ } else {
+ b->option &= ~BO_READONLY;
+ }
- SendMessage(b->hWnd, EM_SETREADONLY, (WPARAM)ro, (LPARAM)0);
+ SendMessage(b->hWnd, EM_SETREADONLY, (WPARAM)ro, (LPARAM)0);
}
void wTextSetSize(
- wText_p bt,
- wWinPix_t width,
- wWinPix_t height)
+ wText_p bt,
+ wWinPix_t width,
+ wWinPix_t height)
{
- bt->w = width;
- bt->h = height;
+ bt->w = width;
+ bt->h = height;
- if (!SetWindowPos(bt->hWnd, HWND_TOP, 0, 0,
- bt->w, bt->h, SWP_NOMOVE|SWP_NOZORDER)) {
- mswFail("wTextSetSize: SetWindowPos");
- }
+ if (!SetWindowPos(bt->hWnd, HWND_TOP, 0, 0,
+ bt->w, bt->h, SWP_NOMOVE|SWP_NOZORDER)) {
+ mswFail("wTextSetSize: SetWindowPos");
+ }
}
void wTextComputeSize(
- wText_p bt,
- wWinPix_t rows,
- wWinPix_t lines,
- wWinPix_t * w,
- wWinPix_t * h)
+ wText_p bt,
+ wWinPix_t rows,
+ wWinPix_t lines,
+ wWinPix_t * w,
+ wWinPix_t * h)
{
- static wWinPix_t scrollV_w = -1;
- static wWinPix_t scrollH_h = -1;
- HDC hDc;
- TEXTMETRIC metrics;
-
- if (scrollV_w < 0) {
- scrollV_w = GetSystemMetrics(SM_CXVSCROLL);
- }
-
- if (scrollH_h < 0) {
- scrollH_h = GetSystemMetrics(SM_CYHSCROLL);
- }
-
- hDc = GetDC(bt->hWnd);
- GetTextMetrics(hDc, &metrics);
- *w = rows * metrics.tmAveCharWidth + scrollV_w;
- *h = lines * (metrics.tmHeight + metrics.tmExternalLeading);
- ReleaseDC(bt->hWnd, hDc);
-
- if (bt->option&BT_HSCROLL) {
- *h += scrollH_h;
- }
+ static wWinPix_t scrollV_w = -1;
+ static wWinPix_t scrollH_h = -1;
+ HDC hDc;
+ TEXTMETRIC metrics;
+
+ if (scrollV_w < 0) {
+ scrollV_w = GetSystemMetrics(SM_CXVSCROLL);
+ }
+
+ if (scrollH_h < 0) {
+ scrollH_h = GetSystemMetrics(SM_CYHSCROLL);
+ }
+
+ hDc = GetDC(bt->hWnd);
+ GetTextMetrics(hDc, &metrics);
+ *w = rows * metrics.tmAveCharWidth + scrollV_w;
+ *h = lines * (metrics.tmHeight + metrics.tmExternalLeading);
+ ReleaseDC(bt->hWnd, hDc);
+
+ if (bt->option&BT_HSCROLL) {
+ *h += scrollH_h;
+ }
}
void wTextSetPosition(
- wText_p bt,
- int pos)
+ wText_p bt,
+ int pos)
{
- LRESULT rc;
- rc = SendMessage(bt->hWnd, EM_LINESCROLL, (WPARAM)0, (LPARAM)MAKELONG(-65535, 0));
+ LRESULT rc;
+ rc = SendMessage(bt->hWnd, EM_LINESCROLL, (WPARAM)0, (LPARAM)MAKELONG(-65535,
+ 0));
}
static void textDoneProc(wControl_p b)
{
- wText_p t = (wText_p)b;
- HDC hDc;
- hDc = GetDC(t->hWnd);
- SelectObject(hDc, mswOldTextFont);
- ReleaseDC(t->hWnd, hDc);
+ wText_p t = (wText_p)b;
+ HDC hDc;
+ hDc = GetDC(t->hWnd);
+ SelectObject(hDc, mswOldTextFont);
+ ReleaseDC(t->hWnd, hDc);
}
static callBacks_t textCallBacks = {
- mswRepaintLabel,
- textDoneProc,
- NULL
+ mswRepaintLabel,
+ textDoneProc,
+ NULL
};
wText_p wTextCreate(
- wWin_p parent,
- wWinPix_t x,
- wWinPix_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- wWinPix_t width,
- wWinPix_t height)
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * helpStr,
+ const char * labelStr,
+ long option,
+ wWinPix_t width,
+ wWinPix_t height)
{
- wText_p b;
- DWORD style;
- RECT rect;
- int index;
- b = mswAlloc(parent, B_TEXT, labelStr, sizeof *b, NULL, &index);
- mswComputePos((wControl_p)b, x, y);
- b->option = option;
- style = ES_MULTILINE | ES_LEFT | ES_AUTOVSCROLL | ES_WANTRETURN |
- WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL;
+ wText_p b;
+ DWORD style;
+ RECT rect;
+ int index;
+ b = mswAlloc(parent, B_TEXT, labelStr, sizeof *b, NULL, &index);
+ mswComputePos((wControl_p)b, x, y);
+ b->option = option;
+ style = ES_MULTILINE | ES_LEFT | ES_AUTOVSCROLL | ES_WANTRETURN |
+ WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL;
#ifdef BT_HSCROLL
- if (option & BT_HSCROLL) {
- style |= WS_HSCROLL | ES_AUTOHSCROLL;
- }
+ if (option & BT_HSCROLL) {
+ style |= WS_HSCROLL | ES_AUTOHSCROLL;
+ }
#endif
- /* if (option & BO_READONLY)
- style |= ES_READONLY;*/
- b->hWnd = CreateWindow("EDIT", NULL,
- style, b->x, b->y,
- width, height,
- ((wControl_p)parent)->hWnd, (HMENU)(UINT_PTR)index, mswHInst, NULL);
-
- if (b->hWnd == NULL) {
- mswFail("CreateWindow(TEXT)");
- return b;
- }
-
- if (option & BT_FIXEDFONT) {
- if (fixedTextFont == (HFONT)0) {
- fixedTextFont = CreateFontIndirect(&fixedFont);
- }
-
- SendMessage(b->hWnd, WM_SETFONT, (WPARAM)fixedTextFont, (LPARAM)MAKELONG(1, 0));
- } else if (!mswThickFont) {
- SendMessage(b->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, (LPARAM)0);
- }
-
- b->hText = (HANDLE)SendMessage(b->hWnd, EM_GETHANDLE, (WPARAM)0, (LPARAM)0);
-
- if (option & BT_CHARUNITS) {
- wWinPix_t w, h;
- wTextComputeSize(b, width, height, &w, &h);
-
- if (!SetWindowPos(b->hWnd, HWND_TOP, 0, 0,
- w, h, SWP_NOMOVE|SWP_NOZORDER)) {
- mswFail("wTextCreate: SetWindowPos");
- }
- }
-
- GetWindowRect(b->hWnd, &rect);
- b->w = rect.right - rect.left;
- b->h = rect.bottom - rect.top;
- mswAddButton((wControl_p)b, FALSE, helpStr);
- mswCallBacks[B_TEXT] = &textCallBacks;
- return b;
+ /* if (option & BO_READONLY)
+ style |= ES_READONLY;*/
+ b->hWnd = CreateWindow("EDIT", NULL,
+ style, b->x, b->y,
+ width, height,
+ ((wControl_p)parent)->hWnd, (HMENU)(UINT_PTR)index, mswHInst, NULL);
+
+ if (b->hWnd == NULL) {
+ mswFail("CreateWindow(TEXT)");
+ return b;
+ }
+
+ if (option & BT_FIXEDFONT) {
+ if (fixedTextFont == (HFONT)0) {
+ fixedTextFont = CreateFontIndirect(&fixedFont);
+ }
+
+ SendMessage(b->hWnd, WM_SETFONT, (WPARAM)fixedTextFont, (LPARAM)MAKELONG(1, 0));
+ } else {
+ SendMessage(b->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, (LPARAM)0);
+ }
+
+ b->hText = (HANDLE)SendMessage(b->hWnd, EM_GETHANDLE, (WPARAM)0, (LPARAM)0);
+
+ if (option & BT_CHARUNITS) {
+ wWinPix_t w, h;
+ wTextComputeSize(b, width, height, &w, &h);
+
+ if (!SetWindowPos(b->hWnd, HWND_TOP, 0, 0,
+ w, h, SWP_NOMOVE|SWP_NOZORDER)) {
+ mswFail("wTextCreate: SetWindowPos");
+ }
+ }
+
+ GetWindowRect(b->hWnd, &rect);
+ b->w = rect.right - rect.left;
+ b->h = rect.bottom - rect.top;
+ mswAddButton((wControl_p)b, FALSE, helpStr);
+ mswCallBacks[B_TEXT] = &textCallBacks;
+ return b;
}
diff --git a/app/wlib/mswlib/simple-gettext.c b/app/wlib/mswlib/simple-gettext.c
index 951ce4c..592e3a3 100644
--- a/app/wlib/mswlib/simple-gettext.c
+++ b/app/wlib/mswlib/simple-gettext.c
@@ -1,4 +1,4 @@
-/* \file simple-gettext.c
+/* \file simple-gettext.c
* a simplified version of gettext.
* Copyright (C) 1995, 1996, 1997, 1999,
* 2005 Free Software Foundation, Inc.
@@ -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
*/
/* This is a simplified version of gettext written by Ulrich Drepper.
@@ -28,8 +28,8 @@
*/
/*
- * Based on the simple-gettext from GnuPG a version appropriate for the
- * needs of XTrackCAD was derived. This is a workaround for any compiler
+ * Based on the simple-gettext from GnuPG a version appropriate for the
+ * needs of XTrackCAD was derived. This is a workaround for any compiler
* specifics or runtime library dependencies. mf 26.07.09
*/
@@ -50,10 +50,10 @@
#include "mswint.h"
#if _MSC_VER > 1300
- #define stricmp _stricmp
- #define strnicmp _strnicmp
- #define strdup _strdup
- #define fileno _fileno
+#define stricmp _stricmp
+#define strnicmp _strnicmp
+#define strdup _strdup
+#define fileno _fileno
#endif
typedef unsigned long u32;
@@ -67,60 +67,56 @@ typedef unsigned long u32;
/* Header for binary .mo file format. */
-struct mo_file_header
-{
- /* The magic number. */
- u32 magic;
- /* The revision number of the file format. */
- u32 revision;
- /* The number of strings pairs. */
- u32 nstrings;
- /* Offset of table with start offsets of original strings. */
- u32 orig_tab_offset;
- /* Offset of table with start offsets of translation strings. */
- u32 trans_tab_offset;
- /* Size of hashing table. */
- u32 hash_tab_size;
- /* Offset of first hashing entry. */
- u32 hash_tab_offset;
+struct mo_file_header {
+ /* The magic number. */
+ u32 magic;
+ /* The revision number of the file format. */
+ u32 revision;
+ /* The number of strings pairs. */
+ u32 nstrings;
+ /* Offset of table with start offsets of original strings. */
+ u32 orig_tab_offset;
+ /* Offset of table with start offsets of translation strings. */
+ u32 trans_tab_offset;
+ /* Size of hashing table. */
+ u32 hash_tab_size;
+ /* Offset of first hashing entry. */
+ u32 hash_tab_offset;
};
-struct string_desc
-{
- /* Length of addressed string. */
- u32 length;
- /* Offset of string in file. */
- u32 offset;
+struct string_desc {
+ /* Length of addressed string. */
+ u32 length;
+ /* Offset of string in file. */
+ u32 offset;
};
-struct overflow_space_s
-{
- struct overflow_space_s *next;
- u32 idx;
- char d[1];
+struct overflow_space_s {
+ struct overflow_space_s *next;
+ u32 idx;
+ char d[1];
};
-struct loaded_domain
-{
- char *data;
- int must_swap;
- u32 nstrings;
- char *mapped; /* 0 = not yet mapped, 1 = mapped,
+struct loaded_domain {
+ char *data;
+ int must_swap;
+ u32 nstrings;
+ char *mapped; /* 0 = not yet mapped, 1 = mapped,
2 = mapped to
overflow space */
- struct overflow_space_s *overflow_space;
- struct string_desc *orig_tab;
- struct string_desc *trans_tab;
- u32 hash_size;
- u32 *hash_tab;
+ struct overflow_space_s *overflow_space;
+ struct string_desc *orig_tab;
+ struct string_desc *trans_tab;
+ u32 hash_size;
+ u32 *hash_tab;
};
static struct loaded_domain *the_domain;
/**
* Translate the input string from UTF8 to Windows codepage.
- *
+ *
* \param str IN string in UTF-8 format to translate.
* \param len IN number of chars to translate
* \param dummy IN ?
@@ -129,7 +125,7 @@ static struct loaded_domain *the_domain;
char *
utf8_to_native( char *str, unsigned int len, int dummy )
{
- /* maximum output length is size of string * 2 */
+ /* maximum output length is size of string * 2 */
int buflen = (len + 1) * 2;
char *buf = malloc( buflen );
int wcharLen;
@@ -143,22 +139,24 @@ utf8_to_native( char *str, unsigned int len, int dummy )
/* the system codepage, we need to take two steps */
/* 1. convert from UTF-8 to UTF-16 */
- wcharLen = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)str, -1, (LPWSTR)buf, buflen / 2 );
-
+ wcharLen = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)str, -1, (LPWSTR)buf,
+ buflen / 2 );
+
/* 2. convert from UTF-8 to system codepage */
- WideCharToMultiByte(CP_ACP, 0, (LPWSTR)buf, wcharLen, resBuffer, len + 1, NULL, NULL );
+ WideCharToMultiByte(CP_ACP, 0, (LPWSTR)buf, wcharLen, resBuffer, len + 1, NULL,
+ NULL );
}
free(buf);
- return( resBuffer );
+ return( resBuffer );
}
static u32
do_swap_u32( u32 i )
{
- return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
+ return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
}
#define SWAPIT(flag, data) ((flag) ? do_swap_u32(data) : (data) )
@@ -174,205 +172,203 @@ do_swap_u32( u32 i )
static unsigned long
hash_string( const char *str_param )
{
- unsigned long int hval, g;
- const char *str = str_param;
-
- hval = 0;
- while (*str != '\0')
- {
- hval <<= 4;
- hval += (unsigned long int) *str++;
- g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
- if (g != 0)
- {
- hval ^= g >> (HASHWORDBITS - 8);
- hval ^= g;
+ unsigned long int hval, g;
+ const char *str = str_param;
+
+ hval = 0;
+ while (*str != '\0') {
+ hval <<= 4;
+ hval += (unsigned long int) *str++;
+ g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
+ if (g != 0) {
+ hval ^= g >> (HASHWORDBITS - 8);
+ hval ^= g;
+ }
}
- }
- return hval;
+ return hval;
}
static struct loaded_domain *
load_domain( const char *filename )
{
- FILE *fp;
- size_t size;
- struct stat st;
- struct mo_file_header *data = NULL;
- struct loaded_domain *domain = NULL;
- size_t to_read;
- char *read_ptr;
-
- fp = fopen( filename, "rb" );
- if( !fp )
- return NULL; /* can't open the file */
- /* we must know about the size of the file */
- if( fstat( fileno(fp ), &st )
- || (size = (size_t)st.st_size) != st.st_size
- || size < sizeof (struct mo_file_header) ) {
- fclose( fp );
- return NULL;
- }
-
- data = malloc( size );
- if( !data ) {
- fclose( fp );
- return NULL; /* out of memory */
- }
-
- to_read = size;
- read_ptr = (char *) data;
- do {
- unsigned long int nb = (unsigned int)fread( read_ptr, 1, to_read, fp );
- if( nb < to_read ) {
- fclose (fp);
- free(data);
- return NULL; /* read error */
+ FILE *fp;
+ size_t size;
+ struct stat st;
+ struct mo_file_header *data = NULL;
+ struct loaded_domain *domain = NULL;
+ size_t to_read;
+ char *read_ptr;
+
+ fp = fopen( filename, "rb" );
+ if( !fp ) {
+ return NULL; /* can't open the file */
}
- read_ptr += nb;
- to_read -= nb;
- } while( to_read > 0 );
- fclose (fp);
-
- /* Using the magic number we can test whether it really is a message
- * catalog file. */
- if( data->magic != MAGIC && data->magic != MAGIC_SWAPPED ) {
- /* The magic number is wrong: not a message catalog file. */
- free( data );
- return NULL;
- }
-
- domain = calloc( 1, sizeof *domain );
- if( !domain ) {
- free( data );
- return NULL;
- }
- domain->data = (char *) data;
- domain->must_swap = data->magic != MAGIC;
-
- /* Fill in the information about the available tables. */
- switch( SWAPIT(domain->must_swap, data->revision) ) {
- case 0:
- domain->nstrings = SWAPIT(domain->must_swap, data->nstrings);
- domain->orig_tab = (struct string_desc *)
- ((char *) data + SWAPIT(domain->must_swap, data->orig_tab_offset));
- domain->trans_tab = (struct string_desc *)
- ((char *) data + SWAPIT(domain->must_swap, data->trans_tab_offset));
- domain->hash_size = SWAPIT(domain->must_swap, data->hash_tab_size);
- domain->hash_tab = (u32 *)
- ((char *) data + SWAPIT(domain->must_swap, data->hash_tab_offset));
- break;
-
- default: /* This is an invalid revision. */
- free( data );
- free( domain );
- return NULL;
- }
-
- /* Allocate an array to keep track of code page mappings. */
- domain->mapped = calloc( 1, domain->nstrings );
- if( !domain->mapped ) {
- free( data );
- free( domain );
- return NULL;
- }
-
- return domain;
+ /* we must know about the size of the file */
+ if( fstat( fileno(fp ), &st )
+ || (size = (size_t)st.st_size) != st.st_size
+ || size < sizeof (struct mo_file_header) ) {
+ fclose( fp );
+ return NULL;
+ }
+
+ data = malloc( size );
+ if( !data ) {
+ fclose( fp );
+ return NULL; /* out of memory */
+ }
+
+ to_read = size;
+ read_ptr = (char *) data;
+ do {
+ unsigned long int nb = (unsigned int)fread( read_ptr, 1, to_read, fp );
+ if( nb < to_read ) {
+ fclose (fp);
+ free(data);
+ return NULL; /* read error */
+ }
+ read_ptr += nb;
+ to_read -= nb;
+ } while( to_read > 0 );
+ fclose (fp);
+
+ /* Using the magic number we can test whether it really is a message
+ * catalog file. */
+ if( data->magic != MAGIC && data->magic != MAGIC_SWAPPED ) {
+ /* The magic number is wrong: not a message catalog file. */
+ free( data );
+ return NULL;
+ }
+
+ domain = calloc( 1, sizeof *domain );
+ if( !domain ) {
+ free( data );
+ return NULL;
+ }
+ domain->data = (char *) data;
+ domain->must_swap = data->magic != MAGIC;
+
+ /* Fill in the information about the available tables. */
+ switch( SWAPIT(domain->must_swap, data->revision) ) {
+ case 0:
+ domain->nstrings = SWAPIT(domain->must_swap, data->nstrings);
+ domain->orig_tab = (struct string_desc *)
+ ((char *) data + SWAPIT(domain->must_swap, data->orig_tab_offset));
+ domain->trans_tab = (struct string_desc *)
+ ((char *) data + SWAPIT(domain->must_swap, data->trans_tab_offset));
+ domain->hash_size = SWAPIT(domain->must_swap, data->hash_tab_size);
+ domain->hash_tab = (u32 *)
+ ((char *) data + SWAPIT(domain->must_swap, data->hash_tab_offset));
+ break;
+
+ default: /* This is an invalid revision. */
+ free( data );
+ free( domain );
+ return NULL;
+ }
+
+ /* Allocate an array to keep track of code page mappings. */
+ domain->mapped = calloc( 1, domain->nstrings );
+ if( !domain->mapped ) {
+ free( data );
+ free( domain );
+ return NULL;
+ }
+
+ return domain;
}
/**
* Set the file used for translations. Pass a NULL to disable
- * translation. A new filename may be set at anytime. WARNING:
- * After changing the filename you should not access any data
+ * translation. A new filename may be set at anytime. WARNING:
+ * After changing the filename you should not access any data
* retrieved by gettext().
*/
int
set_gettext_file ( const char *filename, const char *regkey )
{
- struct loaded_domain *domain = NULL;
-
- if( filename && *filename ) {
- if( filename[0] == '/'
- || ( isalpha(filename[0])
- && filename[1] == ':'
- && (filename[2] == '/' || filename[2] == '\\') )
- ) {
- /* absolute path - use it as is */
- domain = load_domain( filename );
+ struct loaded_domain *domain = NULL;
+
+ if( filename && *filename ) {
+ if( filename[0] == '/'
+ || ( isalpha(filename[0])
+ && filename[1] == ':'
+ && (filename[2] == '/' || filename[2] == '\\') )
+ ) {
+ /* absolute path - use it as is */
+ domain = load_domain( filename );
+ }
+ if (!domain) {
+ return -1;
+ }
+ }
+
+ if( the_domain ) {
+ struct overflow_space_s *os, *os2;
+ free( the_domain->data );
+ free( the_domain->mapped );
+ for (os=the_domain->overflow_space; os; os = os2) {
+ os2 = os->next;
+ free (os);
+ }
+ free( the_domain );
+ the_domain = NULL;
}
- if (!domain)
- return -1;
- }
-
- if( the_domain ) {
- struct overflow_space_s *os, *os2;
- free( the_domain->data );
- free( the_domain->mapped );
- for (os=the_domain->overflow_space; os; os = os2) {
- os2 = os->next;
- free (os);
- }
- free( the_domain );
- the_domain = NULL;
- }
- the_domain = domain;
- return 0;
+ the_domain = domain;
+ return 0;
}
/**
- * Return the required string from the message table. Before returning the result,
+ * Return the required string from the message table. Before returning the result,
* codepage translation from UTF8 to current codepage is performed.
*/
static const char*
get_string( struct loaded_domain *domain, u32 idx )
{
- struct overflow_space_s *os;
- char *p;
-
- p = domain->data + SWAPIT(domain->must_swap, domain->trans_tab[idx].offset);
- if (!domain->mapped[idx])
- {
- size_t plen, buflen;
- char *buf;
-
- domain->mapped[idx] = 1;
-
- plen = strlen (p);
- buf = utf8_to_native (p, (unsigned int)plen, -1);
- buflen = strlen (buf);
- if (buflen <= plen){
- strcpy (p, buf);
- free( buf );
- } else {
- /* There is not enough space for the translation - store it
- in the overflow_space else and mark that in the mapped
- array. Because we expect that this won't happen too
- often, we use a simple linked list. */
- os = malloc (sizeof *os + buflen);
- if (os)
- {
- os->idx = idx;
- strcpy (os->d, buf);
- os->next = domain->overflow_space;
- domain->overflow_space = os;
- p = os->d;
- }
- else
- p = "ERROR in GETTEXT MALLOC";
- free (buf);
- }
- }
- else if (domain->mapped[idx] == 2)
- { /* We need to get the string from the overflow_space. */
- for (os=domain->overflow_space; os; os = os->next)
- if (os->idx == idx)
- return (const char*)os->d;
- p = "ERROR in GETTEXT\n";
- }
- return (const char*)p;
+ struct overflow_space_s *os;
+ char *p;
+
+ p = domain->data + SWAPIT(domain->must_swap, domain->trans_tab[idx].offset);
+ if (!domain->mapped[idx]) {
+ size_t plen, buflen;
+ char *buf;
+
+ domain->mapped[idx] = 1;
+
+ plen = strlen (p);
+ buf = utf8_to_native (p, (unsigned int)plen, -1);
+ buflen = strlen (buf);
+ if (buflen <= plen) {
+ strcpy (p, buf);
+ free( buf );
+ } else {
+ /* There is not enough space for the translation - store it
+ in the overflow_space else and mark that in the mapped
+ array. Because we expect that this won't happen too
+ often, we use a simple linked list. */
+ os = malloc (sizeof *os + buflen);
+ if (os) {
+ os->idx = idx;
+ strcpy (os->d, buf);
+ os->next = domain->overflow_space;
+ domain->overflow_space = os;
+ p = os->d;
+ } else {
+ p = "ERROR in GETTEXT MALLOC";
+ }
+ free (buf);
+ }
+ } else if (domain->mapped[idx] == 2) {
+ /* We need to get the string from the overflow_space. */
+ for (os=domain->overflow_space; os; os = os->next)
+ if (os->idx == idx) {
+ return (const char*)os->d;
+ }
+ p = "ERROR in GETTEXT\n";
+ }
+ return (const char*)p;
}
/**
@@ -382,78 +378,85 @@ get_string( struct loaded_domain *domain, u32 idx )
char *
gettext( const char *msgid )
{
- struct loaded_domain *domain;
- size_t act = 0;
- size_t top, bottom;
-
- if( !(domain = the_domain) )
- goto not_found;
-
- /* Locate the MSGID and its translation. */
- if( domain->hash_size > 2 && domain->hash_tab ) {
- /* Use the hashing table. */
- u32 len = (u32)strlen (msgid);
- u32 hash_val = hash_string (msgid);
- u32 idx = hash_val % domain->hash_size;
- u32 incr = 1 + (hash_val % (domain->hash_size - 2));
- u32 nstr = SWAPIT (domain->must_swap, domain->hash_tab[idx]);
-
- if ( !nstr ) /* Hash table entry is empty. */
- goto not_found;
-
- if( SWAPIT(domain->must_swap,
- domain->orig_tab[nstr - 1].length) == len
- && !strcmp( msgid,
- domain->data + SWAPIT(domain->must_swap,
- domain->orig_tab[nstr - 1].offset)) )
- return (char *)get_string( domain, nstr - 1 );
-
- for(;;) {
- if (idx >= domain->hash_size - incr)
- idx -= domain->hash_size - incr;
- else
- idx += incr;
-
- nstr = SWAPIT(domain->must_swap, domain->hash_tab[idx]);
- if( !nstr )
- goto not_found; /* Hash table entry is empty. */
-
- if ( SWAPIT(domain->must_swap,
- domain->orig_tab[nstr - 1].length) == len
- && !strcmp (msgid,
- domain->data + SWAPIT(domain->must_swap,
- domain->orig_tab[nstr - 1].offset)))
- return (char *)get_string( domain, nstr-1 );
+ struct loaded_domain *domain;
+ size_t act = 0;
+ size_t top, bottom;
+
+ if( !(domain = the_domain) ) {
+ goto not_found;
+ }
+
+ /* Locate the MSGID and its translation. */
+ if( domain->hash_size > 2 && domain->hash_tab ) {
+ /* Use the hashing table. */
+ u32 len = (u32)strlen (msgid);
+ u32 hash_val = hash_string (msgid);
+ u32 idx = hash_val % domain->hash_size;
+ u32 incr = 1 + (hash_val % (domain->hash_size - 2));
+ u32 nstr = SWAPIT (domain->must_swap, domain->hash_tab[idx]);
+
+ if ( !nstr ) { /* Hash table entry is empty. */
+ goto not_found;
+ }
+
+ if( SWAPIT(domain->must_swap,
+ domain->orig_tab[nstr - 1].length) == len
+ && !strcmp( msgid,
+ domain->data + SWAPIT(domain->must_swap,
+ domain->orig_tab[nstr - 1].offset)) ) {
+ return (char *)get_string( domain, nstr - 1 );
+ }
+
+ for(;;) {
+ if (idx >= domain->hash_size - incr) {
+ idx -= domain->hash_size - incr;
+ } else {
+ idx += incr;
+ }
+
+ nstr = SWAPIT(domain->must_swap, domain->hash_tab[idx]);
+ if( !nstr ) {
+ goto not_found; /* Hash table entry is empty. */
+ }
+
+ if ( SWAPIT(domain->must_swap,
+ domain->orig_tab[nstr - 1].length) == len
+ && !strcmp (msgid,
+ domain->data + SWAPIT(domain->must_swap,
+ domain->orig_tab[nstr - 1].offset))) {
+ return (char *)get_string( domain, nstr-1 );
+ }
+ }
+ /* NOTREACHED */
+ }
+
+ /* Now we try the default method: binary search in the sorted
+ array of messages. */
+ bottom = 0;
+ top = domain->nstrings;
+ while( bottom < top ) {
+ int cmp_val;
+
+ act = (bottom + top) / 2;
+ cmp_val = strcmp(msgid, domain->data
+ + SWAPIT(domain->must_swap,
+ domain->orig_tab[act].offset));
+ if (cmp_val < 0) {
+ top = act;
+ } else if (cmp_val > 0) {
+ bottom = act + 1;
+ } else {
+ return (char *)get_string( domain, (int)(act) );
+ }
}
- /* NOTREACHED */
- }
-
- /* Now we try the default method: binary search in the sorted
- array of messages. */
- bottom = 0;
- top = domain->nstrings;
- while( bottom < top ) {
- int cmp_val;
-
- act = (bottom + top) / 2;
- cmp_val = strcmp(msgid, domain->data
- + SWAPIT(domain->must_swap,
- domain->orig_tab[act].offset));
- if (cmp_val < 0)
- top = act;
- else if (cmp_val > 0)
- bottom = act + 1;
- else
- return (char *)get_string( domain, (int)(act) );
- }
-
- not_found:
- return (char *)msgid;
+
+not_found:
+ return (char *)msgid;
}
/**
- * This is the main initialization function for simple gettext. The message file is
- * opened and read into memory. The function must be called once before translating
+ * This is the main initialization function for simple gettext. The message file is
+ * opened and read into memory. The function must be called once before translating
* a string.
*
* The message files are expected to be in a directory named in the UNIXish form en_US
@@ -474,12 +477,13 @@ bindtextdomain( char *domainname, char *dirname )
loc = g_win32_getlocale();
/* make sure that path does not end with trailing slash */
- if( dirname[ strlen(dirname) ] == '/' )
+ if( dirname[ strlen(dirname) ] == '/' ) {
dirname[ strlen(dirname) ] = '\0';
+ }
/* allocate buffer for filename, 20 bytes should be enough for extension etc. */
dir = malloc( strlen( domainname ) + strlen( dirname ) + strlen( loc ) + 20 );
-
+
if( dir ) {
/* create the full filename */
sprintf( dir, "%s/%s/LC_MESSAGES/%s.mo", dirname, loc, domainname );
@@ -487,18 +491,18 @@ bindtextdomain( char *domainname, char *dirname )
set_gettext_file( dir, NULL );
free( dir );
}
-
+
free( loc );
return( NULL );
}
/**
- * This is a dummy function to maintain source code compatibility
+ * This is a dummy function to maintain source code compatibility
* with other implementations of gettext.
* For this implementation, UTF-8 input encoding is assumed
*
* \param domainname IN domain
- * \param codeset In codeset
+ * \param codeset In codeset
* \return always NULL
*/
@@ -509,7 +513,7 @@ bind_textdomain_codeset(char *domainname, char *codeset )
}
/**
- * This is a dummy function to maintain source code compatibility
+ * This is a dummy function to maintain source code compatibility
* with other implementations of gettext.
*
* \param domainname IN domain
diff --git a/app/wlib/mswlib/sysinfo.c b/app/wlib/mswlib/sysinfo.c
new file mode 100644
index 0000000..b4745f5
--- /dev/null
+++ b/app/wlib/mswlib/sysinfo.c
@@ -0,0 +1,138 @@
+/** \file sysinfo.c
+ * Collect info about runtime environment
+*/
+
+/* XTrkCad - Model Railroad CAD
+ * Copyright (C) 2024 Martin Fischer
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <process.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <Windows.h>
+#include <fileapi.h>
+#include <shlobj.h>
+#include <Shlwapi.h>
+
+#include <wlib.h>
+#include "mswint.h"
+
+#ifdef WINDOWS
+#define itoa(a,b,c) _itoa(a,b,c)
+#define getpid() _getpid()
+#endif
+
+static char buffer[MAX_PATH + 1];
+
+/**
+ * Return the path to a temporary directory. The directory is not created.
+ * The result is put into a buffer and is only valid immediately after the call.
+ *
+ * \return pointer to fully qualified directory path
+ */
+
+char *
+wGetTempPath()
+{
+ unsigned retChars;
+
+ retChars = GetTempPath(MAX_PATH + 1, buffer);
+
+ if (retChars <= MAX_PATH + 1) {
+ char str[20];
+ strcat(buffer, "xtc");
+ itoa(getpid(), str, 10);
+ strcat(buffer, str);
+ }
+
+ return(buffer);
+}
+
+/**
+ * Get the Windows version. This function uses the Windows ver command to
+ * retrieve the OS version. The result is put into a buffer and is only
+ * valid immediately after the call.
+ *
+ * \return buffer containing the zero terminated string
+ *
+ */
+
+char *
+wGetOSVersion()
+{
+ FILE* pPipe;
+ pPipe = _popen("ver", "r");
+
+ while (fgets(buffer, sizeof(buffer), pPipe))
+ ;
+
+ if (buffer[strlen(buffer) -1] == '\n')
+ buffer[strlen(buffer) -1 ] = '\0';
+ _pclose(pPipe);
+
+ return(buffer);
+}
+
+/**
+ * Get the name of the configuration file.
+ *
+ * \return pointer to the filename.
+ *
+ */
+
+char *
+wGetProfileFilename()
+{
+ return(mswProfileFile);
+}
+
+/**
+ * Get the name of the current user. The result is put into a buffer and is only
+ * valid immediately after the call.
+ *
+ * \return buffer containing the zero terminated string
+ *
+ */
+
+char *
+wGetUserID()
+{
+ DWORD bufferSize = sizeof(buffer);
+
+ GetUserName(buffer, &bufferSize);
+
+ return(buffer);
+}
+
+/** Get the user's profile directory. Other than on UNIX Windows differentiates
+ * between the home directory and and the profile directory.
+ *
+ * \return pointer to the user's profile directory
+ */
+
+const char* wGetUserHomeRootDir(void)
+{
+ if (SHGetSpecialFolderPath(NULL, mswTmpBuff, CSIDL_PROFILE, 0) == 0) {
+ wNoticeEx(NT_ERROR, "Cannot get user's profile directory", "Exit", NULL);
+ wExit(0);
+ return(NULL);
+ }
+ else {
+ return(mswTmpBuff);
+ }
+}
diff --git a/app/wlib/mswlib/unittest/CMakeLists.txt b/app/wlib/mswlib/unittest/CMakeLists.txt
index b91c1ff..9bebe2b 100644
--- a/app/wlib/mswlib/unittest/CMakeLists.txt
+++ b/app/wlib/mswlib/unittest/CMakeLists.txt
@@ -1,11 +1,23 @@
# build unit tests for the xtrkcad Windows library
add_executable(utf8test
+ "")
+
+target_sources(utf8test
+ PRIVATE
utf8test.c
../utf8conv.c
- )
+)
target_link_libraries(utf8test
- ${LIBS})
+ PRIVATE
+ xtrkcad-wlib
+ ${CMOCKA_LIBRARIES}
+)
add_test(UTF8ConversionTest utf8test)
+
+set_target_properties(
+ utf8test
+ PROPERTIES FOLDER UnitTests
+ )
diff --git a/app/wlib/mswlib/utf8conv.c b/app/wlib/mswlib/utf8conv.c
index 5a39b34..2363df9 100644
--- a/app/wlib/mswlib/utf8conv.c
+++ b/app/wlib/mswlib/utf8conv.c
@@ -19,10 +19,9 @@
*
* 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 <malloc.h>
#include <stdbool.h>
#include <string.h>
@@ -43,29 +42,29 @@
bool
wSystemToUTF8(const char *inString, char *outString, unsigned outStringLength)
{
- unsigned int cnt = 2 * (unsigned int)(strlen(inString) + 1);
- char *tempBuffer = malloc(cnt);
-
- // convert to wide character (UTF16)
- MultiByteToWideChar(CP_ACP,
- 0,
- inString,
- -1,
- (LPWSTR)tempBuffer,
- cnt);
-
- // convert from wide char to UTF-8
- WideCharToMultiByte(CP_UTF8,
- 0,
- (LPCWCH)tempBuffer,
- -1,
- (LPSTR)outString,
- outStringLength,
- NULL,
- NULL);
-
- free(tempBuffer);
- return true;
+ unsigned int cnt = 2 * (unsigned int)(strlen(inString) + 1);
+ char *tempBuffer = malloc(cnt);
+
+ // convert to wide character (UTF16)
+ MultiByteToWideChar(CP_ACP,
+ 0,
+ inString,
+ -1,
+ (LPWSTR)tempBuffer,
+ cnt);
+
+ // convert from wide char to UTF-8
+ WideCharToMultiByte(CP_UTF8,
+ 0,
+ (LPCWCH)tempBuffer,
+ -1,
+ (LPSTR)outString,
+ outStringLength,
+ NULL,
+ NULL);
+
+ free(tempBuffer);
+ return true;
}
/**
@@ -81,43 +80,43 @@ wSystemToUTF8(const char *inString, char *outString, unsigned outStringLength)
bool
wUTF8ToSystem(const char *inString, char *outString, unsigned outStringLength)
{
- unsigned int cnt = 2 * (int)(strlen(inString) + 1);
- char *tempBuffer = malloc(cnt);
-
- // convert to wide character (UTF16)
- MultiByteToWideChar(CP_UTF8,
- 0,
- inString,
- -1,
- (LPWSTR)tempBuffer,
- cnt);
-
-
- cnt = WideCharToMultiByte(CP_ACP,
- 0,
- (LPCWCH)tempBuffer,
- -1,
- (LPSTR)outString,
- 0L,
- NULL,
- NULL);
-
- if (outStringLength <= cnt) {
- return (false);
- }
-
- // convert from wide char to system codepage
- WideCharToMultiByte(CP_ACP,
- 0,
- (LPCWCH)tempBuffer,
- -1,
- (LPSTR)outString,
- outStringLength,
- NULL,
- NULL);
-
- free(tempBuffer);
- return true;
+ unsigned int cnt = 2 * (int)(strlen(inString) + 1);
+ char *tempBuffer = malloc(cnt);
+
+ // convert to wide character (UTF16)
+ MultiByteToWideChar(CP_UTF8,
+ 0,
+ inString,
+ -1,
+ (LPWSTR)tempBuffer,
+ cnt);
+
+
+ cnt = WideCharToMultiByte(CP_ACP,
+ 0,
+ (LPCWCH)tempBuffer,
+ -1,
+ (LPSTR)outString,
+ 0L,
+ NULL,
+ NULL);
+
+ if (outStringLength <= cnt) {
+ return (false);
+ }
+
+ // convert from wide char to system codepage
+ WideCharToMultiByte(CP_ACP,
+ 0,
+ (LPCWCH)tempBuffer,
+ -1,
+ (LPSTR)outString,
+ outStringLength,
+ NULL,
+ NULL);
+
+ free(tempBuffer);
+ return true;
}
/**
@@ -131,80 +130,80 @@ wUTF8ToSystem(const char *inString, char *outString, unsigned outStringLength)
bool wIsUTF8(const char * string)
{
- if (!string) {
- return 0;
- }
-
- const unsigned char * bytes = (const unsigned char *)string;
- while (*bytes) {
- if ((// ASCII
- // use bytes[0] <= 0x7F to allow ASCII control characters
- bytes[0] == 0x09 ||
- bytes[0] == 0x0A ||
- bytes[0] == 0x0D ||
- (0x20 <= bytes[0] && bytes[0] <= 0x7E)
- )
- ) {
- bytes += 1;
- continue;
- }
-
- if ((// non-overlong 2-byte
- (0xC2 <= bytes[0] && bytes[0] <= 0xDF) &&
- (0x80 <= bytes[1] && bytes[1] <= 0xBF)
- )
- ) {
- bytes += 2;
- continue;
- }
-
- if ((// excluding overlongs
- bytes[0] == 0xE0 &&
- (0xA0 <= bytes[1] && bytes[1] <= 0xBF) &&
- (0x80 <= bytes[2] && bytes[2] <= 0xBF)
- ) ||
- (// straight 3-byte
- ((0xE1 <= bytes[0] && bytes[0] <= 0xEC) ||
- bytes[0] == 0xEE ||
- bytes[0] == 0xEF) &&
- (0x80 <= bytes[1] && bytes[1] <= 0xBF) &&
- (0x80 <= bytes[2] && bytes[2] <= 0xBF)
- ) ||
- (// excluding surrogates
- bytes[0] == 0xED &&
- (0x80 <= bytes[1] && bytes[1] <= 0x9F) &&
- (0x80 <= bytes[2] && bytes[2] <= 0xBF)
- )
- ) {
- bytes += 3;
- continue;
- }
-
- if ((// planes 1-3
- bytes[0] == 0xF0 &&
- (0x90 <= bytes[1] && bytes[1] <= 0xBF) &&
- (0x80 <= bytes[2] && bytes[2] <= 0xBF) &&
- (0x80 <= bytes[3] && bytes[3] <= 0xBF)
- ) ||
- (// planes 4-15
- (0xF1 <= bytes[0] && bytes[0] <= 0xF3) &&
- (0x80 <= bytes[1] && bytes[1] <= 0xBF) &&
- (0x80 <= bytes[2] && bytes[2] <= 0xBF) &&
- (0x80 <= bytes[3] && bytes[3] <= 0xBF)
- ) ||
- (// plane 16
- bytes[0] == 0xF4 &&
- (0x80 <= bytes[1] && bytes[1] <= 0x8F) &&
- (0x80 <= bytes[2] && bytes[2] <= 0xBF) &&
- (0x80 <= bytes[3] && bytes[3] <= 0xBF)
- )
- ) {
- bytes += 4;
- continue;
- }
-
- return false;
- }
-
- return true;
-} \ No newline at end of file
+ if (!string) {
+ return 0;
+ }
+
+ const unsigned char * bytes = (const unsigned char *)string;
+ while (*bytes) {
+ if ((// ASCII
+ // use bytes[0] <= 0x7F to allow ASCII control characters
+ bytes[0] == 0x09 ||
+ bytes[0] == 0x0A ||
+ bytes[0] == 0x0D ||
+ (0x20 <= bytes[0] && bytes[0] <= 0x7E)
+ )
+ ) {
+ bytes += 1;
+ continue;
+ }
+
+ if ((// non-overlong 2-byte
+ (0xC2 <= bytes[0] && bytes[0] <= 0xDF) &&
+ (0x80 <= bytes[1] && bytes[1] <= 0xBF)
+ )
+ ) {
+ bytes += 2;
+ continue;
+ }
+
+ if ((// excluding overlongs
+ bytes[0] == 0xE0 &&
+ (0xA0 <= bytes[1] && bytes[1] <= 0xBF) &&
+ (0x80 <= bytes[2] && bytes[2] <= 0xBF)
+ ) ||
+ (// straight 3-byte
+ ((0xE1 <= bytes[0] && bytes[0] <= 0xEC) ||
+ bytes[0] == 0xEE ||
+ bytes[0] == 0xEF) &&
+ (0x80 <= bytes[1] && bytes[1] <= 0xBF) &&
+ (0x80 <= bytes[2] && bytes[2] <= 0xBF)
+ ) ||
+ (// excluding surrogates
+ bytes[0] == 0xED &&
+ (0x80 <= bytes[1] && bytes[1] <= 0x9F) &&
+ (0x80 <= bytes[2] && bytes[2] <= 0xBF)
+ )
+ ) {
+ bytes += 3;
+ continue;
+ }
+
+ if ((// planes 1-3
+ bytes[0] == 0xF0 &&
+ (0x90 <= bytes[1] && bytes[1] <= 0xBF) &&
+ (0x80 <= bytes[2] && bytes[2] <= 0xBF) &&
+ (0x80 <= bytes[3] && bytes[3] <= 0xBF)
+ ) ||
+ (// planes 4-15
+ (0xF1 <= bytes[0] && bytes[0] <= 0xF3) &&
+ (0x80 <= bytes[1] && bytes[1] <= 0xBF) &&
+ (0x80 <= bytes[2] && bytes[2] <= 0xBF) &&
+ (0x80 <= bytes[3] && bytes[3] <= 0xBF)
+ ) ||
+ (// plane 16
+ bytes[0] == 0xF4 &&
+ (0x80 <= bytes[1] && bytes[1] <= 0x8F) &&
+ (0x80 <= bytes[2] && bytes[2] <= 0xBF) &&
+ (0x80 <= bytes[3] && bytes[3] <= 0xBF)
+ )
+ ) {
+ bytes += 4;
+ continue;
+ }
+
+ return false;
+ }
+
+ return true;
+}
diff --git a/app/wlib/test/testapp.c b/app/wlib/test/testapp.c
index 6342801..3754a85 100644
--- a/app/wlib/test/testapp.c
+++ b/app/wlib/test/testapp.c
@@ -19,7 +19,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
*/